// ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ****************************************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 . 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 – $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 – 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 – $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 – 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! 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! 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! 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! 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 //2player heli goto_thereX = -252.9156 goto_thereY = 2583.7788 goto_thereZ = 63.0703 debug_heading = 0.0 ENDIF debug_number ++ IF button_pressed_main = debug_number PRINT_BIG ( TPLAY5 ) 1000 4 //2player peds goto_thereX = 2510.6331 goto_thereY = 1207.9175 goto_thereZ = 10.3281 debug_heading = 0.0 ENDIF debug_number ++ IF button_pressed_main = debug_number PRINT_BIG ( TPLAY6 ) 1000 4 //Run-around LS goto_thereX = 2069.3376 goto_thereY = -1556.9296 goto_thereZ = 12.9243 debug_heading = 0.0 ENDIF debug_number ++ IF button_pressed_main = debug_number PRINT_BIG ( TPLAY7 ) 1000 4 //Run-around LV goto_thereX = 2138.1689 goto_thereY = 1483.5952 goto_thereZ = 10.3203 debug_heading = 0.0 ENDIF debug_number ++ IF button_pressed_main = debug_number PRINT_BIG ( TPLAY8 ) 1000 4 //Run-around SF goto_thereX = -2197.6665 goto_thereY = 292.0621 goto_thereZ = 34.6230 debug_heading = 0.0 ENDIF debug_number ++ IF button_pressed_main = debug_number PRINT_BIG ( TPLAY9 ) 1000 4 //Run-around DE goto_thereX = -1520.8643 goto_thereY = 2608.2073 goto_thereZ = 55.3437 debug_heading = 0.0 ENDIF debug_number ++ IF button_pressed_main = debug_number PRINT_BIG ( TPLAY10 ) 1000 4 //Run-around CO goto_thereX = 711.0688 goto_thereY = -569.3774 goto_thereZ = 15.8359 debug_heading = 0.0 ENDIF */ debug_number ++ IF button_pressed_main = debug_number PRINT_BIG ( BOTTY ) 1000 4 //Triathalon SET_INT_STAT CYCLE_SKILL 500 SET_INT_STAT STAMINA 500 SET_INT_STAT CITIES_PASSED 3 goto_thereX = 184.9203 goto_thereY = -1873.1268 goto_thereZ = 1.6817 debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP3 ) 1000 4 //Property goto_thereX = propertyX[3] goto_thereY = propertyY[3] goto_thereZ = propertyZ[3] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP4 ) 1000 4 //Property goto_thereX = propertyX[4] goto_thereY = propertyY[4] goto_thereZ = propertyZ[4] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP5 ) 1000 4 //Property goto_thereX = propertyX[5] goto_thereY = propertyY[5] goto_thereZ = propertyZ[5] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP6 ) 1000 4 //Property goto_thereX = propertyX[6] goto_thereY = propertyY[6] goto_thereZ = propertyZ[6] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP7 ) 1000 4 //Property goto_thereX = propertyX[7] goto_thereY = propertyY[7] goto_thereZ = propertyZ[7] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP8 ) 1000 4 //Property goto_thereX = propertyX[8] goto_thereY = propertyY[8] goto_thereZ = propertyZ[8] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP9 ) 1000 4 //Property goto_thereX = propertyX[9] goto_thereY = propertyY[9] goto_thereZ = propertyZ[9] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP10 ) 1000 4 //Property goto_thereX = propertyX[10] goto_thereY = propertyY[10] goto_thereZ = propertyZ[10] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP11 ) 1000 4 //Property goto_thereX = propertyX[11] goto_thereY = propertyY[11] goto_thereZ = propertyZ[11] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP12 ) 1000 4 //Property goto_thereX = propertyX[12] goto_thereY = propertyY[12] goto_thereZ = propertyZ[12] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP13 ) 1000 4 //Property goto_thereX = propertyX[13] goto_thereY = propertyY[13] goto_thereZ = propertyZ[13] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP14 ) 1000 4 //Property goto_thereX = propertyX[14] goto_thereY = propertyY[14] goto_thereZ = propertyZ[14] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number PRINT_BIG ( PROP15 ) 1000 4 //Property goto_thereX = propertyX[15] goto_thereY = propertyY[15] goto_thereZ = propertyZ[15] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number PRINT_BIG ( PROP16 ) 1000 4 //Property goto_thereX = propertyX[16] goto_thereY = propertyY[16] goto_thereZ = propertyZ[16] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP17 ) 1000 4 //Property goto_thereX = propertyX[17] goto_thereY = propertyY[17] goto_thereZ = propertyZ[17] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP18 ) 1000 4 //Property goto_thereX = propertyX[18] goto_thereY = propertyY[18] goto_thereZ = propertyZ[18] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP19 ) 1000 4 //Property goto_thereX = propertyX[19] goto_thereY = propertyY[19] goto_thereZ = propertyZ[19] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP20 ) 1000 4 //Property goto_thereX = propertyX[20] goto_thereY = propertyY[20] goto_thereZ = propertyZ[20] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number PRINT_BIG ( PROP21 ) 1000 4 //Property goto_thereX = propertyX[21] goto_thereY = propertyY[21] goto_thereZ = propertyZ[21] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP22 ) 1000 4 //Property goto_thereX = propertyX[22] goto_thereY = propertyY[22] goto_thereZ = propertyZ[22] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP23 ) 1000 4 //Property goto_thereX = propertyX[23] goto_thereY = propertyY[23] goto_thereZ = propertyZ[23] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP24 ) 1000 4 //Property goto_thereX = propertyX[24] goto_thereY = propertyY[24] goto_thereZ = propertyZ[24] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP25 ) 1000 4 //Property goto_thereX = propertyX[25] goto_thereY = propertyY[25] goto_thereZ = propertyZ[25] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP25 ) 1000 4 //Property goto_thereX = propertyX[26] goto_thereY = propertyY[26] goto_thereZ = propertyZ[26] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP25 ) 1000 4 //Property goto_thereX = propertyX[27] goto_thereY = propertyY[27] goto_thereZ = propertyZ[27] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP25 ) 1000 4 //Property goto_thereX = propertyX[28] goto_thereY = propertyY[28] goto_thereZ = propertyZ[28] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP25 ) 1000 4 //Property goto_thereX = propertyX[29] goto_thereY = propertyY[29] goto_thereZ = propertyZ[29] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP25 ) 1000 4 //Property goto_thereX = propertyX[30] goto_thereY = propertyY[30] goto_thereZ = propertyZ[30] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP25 ) 1000 4 //Property goto_thereX = propertyX[31] goto_thereY = propertyY[31] goto_thereZ = propertyZ[31] //debug_heading = 130.0 ENDIF debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP25 ) 1000 4 //RACE driving_test_passed = 1 flag_mob_sanfran[3] = 1 START_NEW_SCRIPT trace_mission_loop goto_thereX = traceX[0] goto_thereY = traceY[0] goto_thereZ = traceZ[0] //debug_heading = 130.0 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 debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP25 ) 1000 4 //RACE driving_test_passed = 1 flag_mob_sanfran[3] = 1 START_NEW_SCRIPT trace_mission_loop goto_thereX = traceX[1] goto_thereY = traceY[1] goto_thereZ = traceZ[1] //debug_heading = 130.0 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 debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP25 ) 1000 4 //RACE driving_test_passed = 1 flag_mob_sanfran[3] = 1 START_NEW_SCRIPT trace_mission_loop goto_thereX = traceX[2] goto_thereY = traceY[2] goto_thereZ = traceZ[2] //debug_heading = 130.0 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 debug_number ++ IF button_pressed_main = debug_number //PRINT_BIG ( PROP25 ) 1000 4 //RACE driving_test_passed = 1 flag_mob_sanfran[3] = 1 START_NEW_SCRIPT trace_mission_loop goto_thereX = traceX[3] goto_thereY = traceY[3] goto_thereZ = traceZ[3] //debug_heading = 130.0 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 debug_number ++ RETURN /* final2b wip / finish today intro2a layout done/ifas and camera exported strap4b layout done/needs export sweet5a layout done/ifa’s exported/needs camera export sweet6b layout done/ifas exported/needs camera export crash1a (A/B/C) wip / finish today */ //strap3a layout done/camera exported/needs ifa export terminate_all_scripts: TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME INT TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME SWEET TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME CRASH TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME RYDER TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME SMOKE TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME STRAP TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME CESAR TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME LA1FIN TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME BCRASH //GOSUB remove_catalina REMOVE_BLIP cat_contact_blip //catalina_contact_blip_state = 0 TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME CAT TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME TRU TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME BCESAR TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME SYND TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME WUZI TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME STEAL TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME DSCHOO TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME TRACE TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME ZERO TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME SCRASH TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME GARAGE TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME DESERT TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME CASINO TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME VCRASH TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME DOC TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME HEIST TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME MANSION TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME GROVE TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME RIOT TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME CONSOLE //TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME BANDI_M //TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME POOLH //TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME LOWRI TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME BSCHOO TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME BIKES //TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME BLOODR TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME TRUCKS TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME QUARRYS TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME BIKES TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME BSCHOO TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME VALET TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME IMPEXPM //TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME DANCE //TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME TRI REMOVE_BLIP intro_contact_blip REMOVE_BLIP sweet_contact_blip REMOVE_BLIP crash_contact_blip REMOVE_BLIP ryder_contact_blip REMOVE_BLIP smoke_contact_blip REMOVE_BLIP strap_contact_blip REMOVE_BLIP cesar_contact_blip REMOVE_BLIP truth_contact_blip REMOVE_BLIP cat_contact_blip REMOVE_BLIP bcrash_contact_blip REMOVE_BLIP bcesar_contact_blip REMOVE_BLIP synd_contact_blip REMOVE_BLIP wuzi_contact_blip REMOVE_BLIP steal_contact_blip REMOVE_BLIP trace_contact_blip[0] REMOVE_BLIP trace_contact_blip[1] REMOVE_BLIP trace_contact_blip[2] REMOVE_BLIP trace_contact_blip[3] REMOVE_BLIP zero_contact_blip REMOVE_BLIP desert_contact_blip REMOVE_BLIP garage_contact_blip REMOVE_BLIP scrash_contact_blip REMOVE_BLIP dschool_contact_blip REMOVE_BLIP casino_contact_blip REMOVE_BLIP heist_contact_blip REMOVE_BLIP vcrash_contact_blip REMOVE_BLIP doc_contact_blip REMOVE_BLIP mansion_contact_blip REMOVE_BLIP pilot_contact_blip REMOVE_BLIP Theheist_contact_blip REMOVE_BLIP save_house_blip[7] REMOVE_BLIP boat_school_blip REMOVE_BLIP bike_school_blip flag_player_on_mission = 0 WAIT 0 RETURN /// WRITE PLAYER COORDS RELATIVE TO THE CLOSET CAR TO TEMP_DEBUG.TXT // // IF IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1 // AND IS_BUTTON_PRESSED PAD2 LEFTSHOULDER2 // IF relative_button_press = 0 // PRINT_NOW TEXTXYZ 800 1 // Writing coordinates to file... // GET_CHAR_COORDINATES scplayer player_x player_y player_z // text_x = player_x - 5.0 // text_y = player_y - 5.0 // x = player_x + 5.0 // y = player_y + 5.0 // GET_RANDOM_CAR_OF_TYPE_IN_AREA text_x text_y x y -1 car // IF NOT car = -1 // GET_CAR_COORDINATES car text_x text_y text_z // x = player_x - text_x // y = player_y - text_y // z = player_z - text_z // SAVE_FLOAT_TO_DEBUG_FILE x // SAVE_FLOAT_TO_DEBUG_FILE y // SAVE_FLOAT_TO_DEBUG_FILE z // SAVE_FLOAT_TO_DEBUG_FILE 9.9999 // SAVE_FLOAT_TO_DEBUG_FILE 9.9999 // SAVE_NEWLINE_TO_DEBUG_FILE // GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car x y z corona_x corona_y corona_z // MARK_CAR_AS_NO_LONGER_NEEDED car // car = -1 // ELSE // SAVE_FLOAT_TO_DEBUG_FILE 9.9999 // SAVE_NEWLINE_TO_DEBUG_FILE // ENDIF // relative_button_press = 1 // ENDIF // DRAW_CORONA corona_x corona_y corona_z 0.2 CORONATYPE_CIRCLE FLARETYPE_NONE 250 0 0 // ENDIF // // IF NOT IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1 // IF NOT IS_BUTTON_PRESSED PAD2 LEFTSHOULDER2 // IF relative_button_press = 1 // relative_button_press = 0 // ENDIF // ENDIF // ENDIF /////////////////////////////////////////////////////////////////////// /// PLAYER INVULNERABILITY (SOMETIMES) //////////////////////////////// // IF invulnerability_on = 0 // IF IS_BUTTON_PRESSED PAD2 START // DO_FADE 100 FADE_IN // invulnerability_on = 1 // ENDIF // ENDIF // // IF invulnerability_on = 2 // IF IS_BUTTON_PRESSED PAD2 START // DO_FADE 100 FADE_IN // invulnerability_on = 3 // ENDIF // ENDIF // // IF NOT IS_BUTTON_PRESSED PAD2 START // IF invulnerability_on = 1 // invulnerability_on = 2 // ENDIF // IF invulnerability_on = 3 // invulnerability_on = 0 // ENDIF // ENDIF /////////////////////////////////////////////////////////////////////// /// EXPLODE PLAYERS HEAD ////////////////////////////////////////////// // IF IS_BUTTON_PRESSED PAD2 CROSS // AND IS_BUTTON_PRESSED PAD2 SQUARE // IF NOT IS_CHAR_IN_ANY_CAR scplayer // EXPLODE_PLAYER_HEAD player1 // ELSE // STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car_colour2 // IF NOT IS_CAR_DEAD car_colour2 // EXPLODE_CAR car_colour2 // ENDIF // ENDIF // GOTO mission_start_debug // ENDIF /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// // GET RACE COORDS //////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// //VAR_INT write_coord //VAR_FLOAT x2 y2 z2 distance //IF IS_PLAYER_PLAYING player1 // IF IS_CHAR_IN_ANY_CAR scplayer // IF IS_BUTTON_PRESSED PAD1 CIRCLE // VAR_INT button_pressed // IF button_pressed = 1 // PRINT_NOW TEXXYZ1 800 1 // Writing coordinates to file... // ++ write_coord // button_pressed = 0 // ENDIF // ELSE // IF button_pressed = 0 // button_pressed = 1 // ENDIF // ENDIF // ENDIF // // IF write_coord > 0 // IF IS_CHAR_IN_ANY_CAR scplayer // GET_CHAR_COORDINATES scplayer X Y Z // GET_DISTANCE_BETWEEN_COORDS_3D X Y Z x2 y2 z2 distance // IF distance > 100.0 // OR write_coord = 2 // PRINT_NOW TEXTXYZ 800 1 // Writing coordinates to file... // SAVE_NEWLINE_TO_DEBUG_FILE // SAVE_STRING_TO_DEBUG_FILE "coord_x[" // SAVE_INT_TO_DEBUG_FILE coord_index // SAVE_STRING_TO_DEBUG_FILE "] = " // SAVE_FLOAT_TO_DEBUG_FILE x // SAVE_NEWLINE_TO_DEBUG_FILE // SAVE_STRING_TO_DEBUG_FILE "coord_y[" // SAVE_INT_TO_DEBUG_FILE coord_index // SAVE_STRING_TO_DEBUG_FILE "] = " // SAVE_FLOAT_TO_DEBUG_FILE y // SAVE_NEWLINE_TO_DEBUG_FILE // SAVE_STRING_TO_DEBUG_FILE "coord_z[" // SAVE_INT_TO_DEBUG_FILE coord_index // SAVE_STRING_TO_DEBUG_FILE "] = " // SAVE_FLOAT_TO_DEBUG_FILE z // SAVE_NEWLINE_TO_DEBUG_FILE // ++ coord_index // x2 = x // y2 = y // z2 = z // IF write_coord = 2 // write_coord = 1 // ENDIF // ENDIF // ENDIF // ENDIF //ENDIF /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// // CREATE A CAR - right shoulder1////////////////////////////////////////// /* IF IS_BUTTON_PRESSED PAD2 RIGHTSHOULDER1 WHILE IS_BUTTON_PRESSED PAD2 RIGHTSHOULDER1 WAIT 0 ENDWHILE 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 next_carzzz: WAIT 0 IF NOT IS_BUTTON_PRESSED PAD2 CROSS IF initial_create_car = 1 ++ counter_create_car ENDIF IF initial_create_car = 0 counter_create_car = landstal initial_create_car = 1 ENDIF IF counter_create_car > 236 counter_create_car = landstal ENDIF IF counter_create_car = chopper //POLICE CHOPPER counter_create_car = angel ENDIF IF counter_create_car = airtrain OR counter_create_car = deaddodo counter_create_car = speeder ENDIF IF counter_create_car = infernus counter_create_car = voodoo ENDIF ELSE IF initial_create_car = 1 -- counter_create_car ENDIF IF initial_create_car = 0 counter_create_car = 236 initial_create_car = 1 ENDIF //initial_create_car = 1 IF counter_create_car < landstal counter_create_car = 236 ENDIF IF counter_create_car = chopper //POLICE CHOPPER counter_create_car = cuban ENDIF IF counter_create_car = infernus counter_create_car = manana ENDIF IF counter_create_car = airtrain OR counter_create_car = deaddodo counter_create_car = gangbur ENDIF ENDIF IF NOT IS_BUTTON_PRESSED PAD2 SQUARE DELETE_CAR magic_car MARK_CAR_AS_NO_LONGER_NEEDED magic_car MARK_MODEL_AS_NO_LONGER_NEEDED counter_create_car IF NOT IS_MODEL_AVAILABLE counter_create_car GOTO next_carzzz ENDIF 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 LOCK_CAR_DOORS magic_car CARLOCK_UNLOCKED MARK_MODEL_AS_NO_LONGER_NEEDED counter_create_car MARK_CAR_AS_NO_LONGER_NEEDED magic_car ELSE counter_create_car = counter_create_car + 10 PRINT_WITH_NUMBER_BIG NUMBER counter_create_car 500 4 ENDIF ENDIF */ /********************************************************************************************************************************************* ************************************************ ********************************************************************** ************************************************ AUDIO DEBUG ********************************************************************** ************************************************ ********************************************************************** **********************************************************************************************************************************************/ { Audio_debug: SCRIPT_NAME ADBUG //--- INTERNALS LVAR_INT iPed1 iPed2 LVAR_INT iState iSubState LVAR_FLOAT fX fY fZ LVAR_INT iTemp iTemp2 iButtonDown iCurrentButton iPedCounter //--- Parameter passing Fudge IF iTemp > 0 CREATE_CHAR PEDTYPE_CIVMALE 0 0.0 0.0 0.0 iPed1 CREATE_CHAR PEDTYPE_CIVMALE 0 0.0 0.0 0.0 iPed2 ENDIF iAudioDebug = 1 //---MAIN LOOP--- Audio_debug_Main_Loop: WAIT 50 GOSUB Audio_Debug_GetPadStatus IF IS_PLAYER_PLAYING PLAYER1 GOSUB Audio_debug_State_Machine ELSE GOSUB Audio_debug_CleanUp ENDIF GOTO Audio_debug_Main_Loop //---END OF MAIN LOOP--- /******************************************** STATE MACHINE ********************************************/ Audio_debug_State_Machine: SWITCH iState CASE 0 //---STATE 0 GOSUB Audio_debug_State0 BREAK ENDSWITCH RETURN /******************************************** STATE 0 ********************************************/ Audio_debug_State0: SWITCH iSubState CASE TEXT1 WRITE_DEBUG PLEASE_ENTER_FIRST_PED iSubState = GET_PED_1 BREAK CASE GET_PED_1 IF iCurrentButton = AD_BUTTON_DPADRIGHT ++iPedCounter ENDIF IF iCurrentButton = AD_BUTTON_DPADLEFT --iPedCounter ENDIF IF iCurrentButton = AD_BUTTON_DPADUP iPedCounter += 10 ENDIF IF iCurrentButton = AD_BUTTON_DPADDOWN iPedCounter -= 10 ENDIF IF iPedCounter < 0 iPedCounter = 0 ENDIF CLEAR_THIS_BIG_PRINT NUMBER PRINT_WITH_NUMBER_BIG NUMBER iPedCounter 500 4 IF iCurrentButton = AD_BUTTON_CROSS iSubState = GENERATE_PED_1 ENDIF BREAK CASE GENERATE_PED_1 IF IS_MODEL_AVAILABLE iPedCounter GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 1.0 2.0 0.0 fX fY fZ GET_GROUND_Z_FOR_3D_COORD fX fY fZ fZ CLEAR_AREA fX fY fZ 5.0 TRUE REQUEST_MODEL iPedCounter LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED iPedCounter REQUEST_MODEL iPedCounter WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE iPedCounter fX fY fZ iPed1 iSubState = TEXT2 ELSE WRITE_DEBUG_WITH_INT PED_NOT_FOUND iPedCounter iSubState = TEXT1 ENDIF BREAK CASE TEXT2 WRITE_DEBUG PLEASE_ENTER_SECOND_PED iSubState = GET_PED_2 BREAK CASE GET_PED_2 IF iCurrentButton = AD_BUTTON_DPADRIGHT ++iPedCounter ENDIF IF iCurrentButton = AD_BUTTON_DPADLEFT --iPedCounter ENDIF IF iCurrentButton = AD_BUTTON_DPADUP iPedCounter += 10 ENDIF IF iCurrentButton = AD_BUTTON_DPADDOWN iPedCounter -= 10 ENDIF IF iPedCounter < 0 iPedCounter = 0 ENDIF CLEAR_THIS_BIG_PRINT NUMBER PRINT_WITH_NUMBER_BIG NUMBER iPedCounter 500 4 IF iCurrentButton = AD_BUTTON_CROSS iSubState = GENERATE_PED_2 ENDIF BREAK CASE GENERATE_PED_2 IF IS_MODEL_AVAILABLE iPedCounter GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -1.0 2.0 0.0 fX fY fZ GET_GROUND_Z_FOR_3D_COORD fX fY fZ fZ CLEAR_AREA fX fY fZ 5.0 TRUE REQUEST_MODEL iPedCounter LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED iPedCounter REQUEST_MODEL iPedCounter WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE iPedCounter fX fY fZ iPed2 iSubState = FACING ELSE WRITE_DEBUG_WITH_INT PED_NOT_FOUND iPedCounter iSubState = TEXT2 ENDIF BREAK CASE FACING IF NOT IS_CHAR_DEAD iPed1 AND NOT IS_CHAR_DEAD iPed2 AND NOT IS_CHAR_DEAD scplayer TASK_TURN_CHAR_TO_FACE_CHAR iPed1 iPed2 TASK_TURN_CHAR_TO_FACE_CHAR iPed2 iPed1 iSubState = CHAT ENDIF BREAK CASE CHAT IF NOT IS_CHAR_DEAD iPed1 AND NOT IS_CHAR_DEAD iPed2 AND NOT IS_CHAR_DEAD scplayer GET_SCRIPT_TASK_STATUS iPed1 TASK_TURN_CHAR_TO_FACE_CHAR iTemp GET_SCRIPT_TASK_STATUS iPed2 TASK_TURN_CHAR_TO_FACE_CHAR iTemp2 IF iTemp = FINISHED_TASK AND iTemp2 = FINISHED_TASK GET_SCRIPT_TASK_STATUS iPed1 TASK_CHAT_WITH_CHAR iTemp IF iTemp = FINISHED_TASK TASK_CHAT_WITH_CHAR iPed1 iPed2 TRUE TRUE ENDIF GET_SCRIPT_TASK_STATUS iPed2 TASK_CHAT_WITH_CHAR iTemp IF iTemp = FINISHED_TASK TASK_CHAT_WITH_CHAR iPed2 iPed1 FALSE TRUE ENDIF iSubState = END ENDIF ENDIF BREAK CASE END IF NOT IS_CHAR_DEAD iPed1 AND NOT IS_CHAR_DEAD iPed2 AND NOT IS_CHAR_DEAD scplayer GET_CHAR_MODEL iPed1 iTemp MARK_MODEL_AS_NO_LONGER_NEEDED iTemp GET_CHAR_MODEL iPed2 iTemp MARK_MODEL_AS_NO_LONGER_NEEDED iTemp MARK_CHAR_AS_NO_LONGER_NEEDED iPed1 MARK_CHAR_AS_NO_LONGER_NEEDED iPed2 WRITE_DEBUG AUDIO_PED_COMPLETED GOSUB Audio_debug_CleanUp ENDIF BREAK ENDSWITCH RETURN /******************************************** GET PAD STATUS ********************************************/ Audio_Debug_GetPadStatus: SWITCH iButtonDown CASE AD_BUTTON_NONE IF IS_BUTTON_PRESSED PAD1 DPADUP iCurrentButton = AD_BUTTON_DPADUP iButtonDown = AD_BUTTON_DPADUP BREAK ENDIF IF IS_BUTTON_PRESSED PAD1 DPADDOWN iCurrentButton = AD_BUTTON_DPADDOWN iButtonDown = AD_BUTTON_DPADDOWN BREAK ENDIF IF IS_BUTTON_PRESSED PAD1 DPADLEFT iCurrentButton = AD_BUTTON_DPADLEFT iButtonDown = AD_BUTTON_DPADLEFT BREAK ENDIF IF IS_BUTTON_PRESSED PAD1 DPADRIGHT iCurrentButton = AD_BUTTON_DPADRIGHT iButtonDown = AD_BUTTON_DPADRIGHT BREAK ENDIF IF IS_BUTTON_PRESSED PAD1 CROSS iCurrentButton = AD_BUTTON_CROSS iButtonDown = AD_BUTTON_CROSS BREAK ENDIF BREAK CASE AD_BUTTON_DPADUP iCurrentButton = AD_BUTTON_NONE IF NOT IS_BUTTON_PRESSED PAD1 DPADUP iButtonDown = AD_BUTTON_NONE BREAK ENDIF BREAK CASE AD_BUTTON_DPADDOWN iCurrentButton = AD_BUTTON_NONE IF NOT IS_BUTTON_PRESSED PAD1 DPADDOWN iButtonDown = AD_BUTTON_NONE BREAK ENDIF BREAK CASE AD_BUTTON_DPADLEFT iCurrentButton = AD_BUTTON_NONE IF NOT IS_BUTTON_PRESSED PAD1 DPADLEFT iButtonDown = AD_BUTTON_NONE BREAK ENDIF BREAK CASE AD_BUTTON_DPADRIGHT iCurrentButton = AD_BUTTON_NONE IF NOT IS_BUTTON_PRESSED PAD1 DPADRIGHT iButtonDown = AD_BUTTON_NONE BREAK ENDIF BREAK CASE AD_BUTTON_CROSS iCurrentButton = AD_BUTTON_NONE IF NOT IS_BUTTON_PRESSED PAD1 CROSS iButtonDown = AD_BUTTON_NONE BREAK ENDIF BREAK ENDSWITCH RETURN /******************************************* CLEAN UP ********************************************/ Audio_debug_CleanUp: IF NOT IS_CHAR_DEAD iPed1 GET_CHAR_MODEL iPed1 iTemp MARK_MODEL_AS_NO_LONGER_NEEDED iTemp MARK_CHAR_AS_NO_LONGER_NEEDED iPed1 ENDIF IF NOT IS_CHAR_DEAD iPed2 GET_CHAR_MODEL iPed2 iTemp MARK_MODEL_AS_NO_LONGER_NEEDED iTemp MARK_CHAR_AS_NO_LONGER_NEEDED iPed2 ENDIF iAudioDebug = 0 TERMINATE_THIS_SCRIPT RETURN /******************************************* RUN DEBUG ********************************************/ Audio_debug_Debug: WRITE_DEBUG_WITH_INT STATE iState WRITE_DEBUG_WITH_INT SUBSTATE iSubState WRITE_DEBUG_WITH_INT TIMERB TIMERB WRITE_DEBUG_WITH_INT TIMERA TIMERA RETURN } MISSION_START SCRIPT_NAME initial SHOW_UPDATE_STATS FALSE // Don't want to see updates at the beginning of a new game. SET_LA_RIOTS OFF VAR_INT flag_had_taxi_jump_help VAR_INT done_ambulance_progress VAR_INT done_copcar_progress VAR_INT done_firetruck_progress VAR_INT done_burglary_progress VAR_INT done_taxiodd_progress VAR_INT done_truck_progress VAR_INT done_quarry_progress VAR_INT nascar_best_lap_time nascar_best_time best_nascar_result VAR_INT player_has_parachute player_landed japcar_mod_garage_open VAR_FLOAT para_float_Vy para_float_Vz para_flare_Vy para_flare_Vz para_freefall_Vz para_freefall_Vy para_default_Vy VAR_FLOAT para_Vx para_Vy para_Vz VAR_INT para_pickup_flag para_control_off para_force_chute_open player_fall_state can_skip_smoking_cutscene VAR_INT bcesar3_passed_mission bcesar3_passed_mission = 0 japcar_mod_garage_open = 0 para_float_Vy = 5.0 para_float_Vz = -5.0 para_flare_Vy = 8.5 para_flare_Vz = -1.5 para_freefall_Vz = -30.0 para_freefall_Vy = 32.0 para_default_Vy = 0.0 para_force_chute_open = 0 player_fall_state = 0 player_has_parachute = 0 para_pickup_flag = 1 trigger_final_synd_mission = 0 trigger_scrash2_mission = 0 trigger_ice_cold_mission = 0 trigger_final_LA2_missions = 0 trigger_final_LA1_missions = 0 funeral_mission_finished = 0 trucking_help_flag = 0 oddjob_help_flag = 0 girlfried_help_flag = 0 trigger_phonecall_failed = 0 flag_bcesar_mission_counter = 0 played_scipted_airscript_cut = 0 VAR_INT returned_oysters_flag flag_returned_shoehorses flag_returned_snapshots flag_returned_tags returned_oysters_flag = 0 flag_returned_shoehorses = 0 flag_returned_snapshots = 0 flag_returned_tags = 0 game_starts_from_scratch = 0 print_first_help = 0 voice_over_at_hub = 0 bike_help = 0 car_help_played = 0 drive_by_help = 0 can_skip_smoking_cutscene = 0 launch_shit_for_debug_build = 0 VAR_INT cat_getaway_dialogue cat_getaway_dialogue = 0 var_int gate_stay_open gate_stay_open = 0 VAR_INT tlf_underway // Kev B uses to switch off SF police compound script during Toreno's Last Flight ( syn6 ) tlf_underway = 0 var_int total_roulette_tables total_roulette_tables = 0 // *****************************************CARMODS****************************************************************** //VAR_INT stored_spray_car initial_spray_setup //VAR_INT first_spoiler_mod original_mod1 carmod_index char_not_in_carmod_car added_one_to_counter //VAR_INT dpad_state2Y car_mod_counter old_mod_index got_mod1 paint_mod num_of_car_wheels //VAR_INT new_mod_index[12] what_upgrade[12] check_prints_once car_wheel_class wheel_index car_mod_location misc_mod //VAR_INT spoiler_mod wings_mod vent_mod exhaust_mod nitro_mod fbump_mod rbump_mod lights_mod roof_mod chass_mod fbull_mod rbull_mod //VAR_INT spoiler[5] //VAR_INT car_wings[5] //VAR_INT vent[5] //VAR_INT exhaust[5] //VAR_INT nitro[5] //VAR_INT fbump[5] //VAR_INT rbump[5] //VAR_INT new_lights[5] //VAR_INT roof[5] //VAR_INT chass[5] //VAR_INT fbull[5] //VAR_INT rbull[5] //VAR_INT wheels[10] //VAR_INT misc[10] // *****************************************PROPERTY****************************************************************** CONST_INT PROP_BUY0 0 CONST_INT PROP_BUY1 1 CONST_INT PROP_BUY2 2 CONST_INT PROP_BUY3 3 CONST_INT PROP_BUY4 4 CONST_INT PROP_BUY5 5 CONST_INT PROP_BUY6 6 CONST_INT PROP_BUY7 7 CONST_INT PROP_BUY8 8 CONST_INT PROP_BUY9 9 CONST_INT PROP_BUY10 10 CONST_INT PROP_BUY11 11 CONST_INT PROP_BUY12 12 CONST_INT PROP_BUY13 13 CONST_INT PROP_BUY14 14 CONST_INT PROP_BUY15 15 CONST_INT PROP_BUY16 16 CONST_INT PROP_BUY17 17 CONST_INT PROP_BUY18 18 CONST_INT PROP_BUY19 19 CONST_INT PROP_BUY20 20 CONST_INT PROP_BUY21 21 CONST_INT PROP_BUY22 22 CONST_INT PROP_BUY23 23 CONST_INT PROP_BUY24 24 CONST_INT PROP_BUY25 25 CONST_INT PROP_BUY26 26 CONST_INT PROP_BUY27 27 CONST_INT PROP_BUY28 28 CONST_INT PROP_BUY29 29 CONST_INT PROP_BUY30 30 CONST_INT PROP_BUY31 31 VAR_FLOAT propertyX[32] propertyY[32] propertyZ[32] VAR_INT zeros_property_bought prop_save_house_blip[32] VAR_INT save_houseprice[32] save_housepickup[32] save_house_blip[18] VAR_INT buying_property_switch already_bought_house[0] = 0 already_bought_house[1] = 0 already_bought_house[2] = 0 already_bought_house[3] = 0 already_bought_house[4] = 0 already_bought_house[5] = 0 already_bought_house[6] = 0 already_bought_house[7] = 0 already_bought_house[8] = 0 already_bought_house[9] = 0 already_bought_house[10] = 0 already_bought_house[11] = 0 already_bought_house[12] = 0 already_bought_house[13] = 0 already_bought_house[14] = 0 already_bought_house[15] = 0 already_bought_house[16] = 0 already_bought_house[17] = 0 already_bought_house[18] = 0 already_bought_house[19] = 0 already_bought_house[20] = 0 already_bought_house[21] = 0 already_bought_house[22] = 0 already_bought_house[23] = 0 already_bought_house[24] = 0 already_bought_house[25] = 0 already_bought_house[26] = 0 already_bought_house[27] = 0 already_bought_house[28] = 0 already_bought_house[29] = 0 already_bought_house[30] = 0 already_bought_house[31] = 0 prorerty_switch[0] = PROP_BUY0 prorerty_switch[1] = PROP_BUY1 prorerty_switch[2] = PROP_BUY2 prorerty_switch[3] = PROP_BUY3 prorerty_switch[4] = PROP_BUY4 prorerty_switch[5] = PROP_BUY5 prorerty_switch[6] = PROP_BUY6 prorerty_switch[7] = PROP_BUY7 prorerty_switch[8] = PROP_BUY8 prorerty_switch[9] = PROP_BUY9 prorerty_switch[10] = PROP_BUY10 prorerty_switch[11] = PROP_BUY11 prorerty_switch[12] = PROP_BUY12 prorerty_switch[13] = PROP_BUY13 prorerty_switch[14] = PROP_BUY14 prorerty_switch[15] = PROP_BUY15 prorerty_switch[16] = PROP_BUY16 prorerty_switch[17] = PROP_BUY17 prorerty_switch[18] = PROP_BUY18 prorerty_switch[19] = PROP_BUY19 prorerty_switch[20] = PROP_BUY20 prorerty_switch[21] = PROP_BUY21 prorerty_switch[22] = PROP_BUY22 prorerty_switch[23] = PROP_BUY23 prorerty_switch[24] = PROP_BUY24 prorerty_switch[25] = PROP_BUY25 prorerty_switch[26] = PROP_BUY26 prorerty_switch[27] = PROP_BUY27 prorerty_switch[28] = PROP_BUY28 prorerty_switch[29] = PROP_BUY29 prorerty_switch[30] = PROP_BUY30 prorerty_switch[31] = PROP_BUY31 zeros_property_bought = 0 propertyX[0] = -1969.27 //SHOWROM propertyY[0] = 282.47 propertyZ[0] = 34.6 propertyX[1] = -2243.62 //ZEROS propertyY[1] = 133.20 propertyZ[1] = 34.8 propertyX[2] = 426.4972 //AIRSTRIP propertyY[2] = 2530.6890 propertyZ[2] = 16.1 CREATE_LOCKED_PROPERTY_PICKUP propertyX[0] propertyY[0] propertyZ[0] PROP_4 save_housepickup[0] //SHOWROM ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[0] propertyY[0] propertyZ[0] RADAR_SPRITE_PROPERTY_RED showroom_contact_blip CHANGE_BLIP_DISPLAY showroom_contact_blip BLIP_ONLY CREATE_LOCKED_PROPERTY_PICKUP propertyX[1] propertyY[1] propertyZ[1] PROP_4 save_housepickup[1] //ZEROS ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[1] propertyY[1] propertyZ[1] RADAR_SPRITE_PROPERTY_RED zero_contact_blip CHANGE_BLIP_DISPLAY zero_contact_blip BLIP_ONLY CREATE_LOCKED_PROPERTY_PICKUP propertyX[2] propertyY[2] propertyZ[2] PROP_4 save_housepickup[2] //AIRSTRIP ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[2] propertyY[2] propertyZ[2] RADAR_SPRITE_PROPERTY_RED airstrip_contact_blip CHANGE_BLIP_DISPLAY airstrip_contact_blip BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[2] propertyY[2] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE //BUYABLE PROPERIES************************************************************ //BEACH FRONT MALIBU HOUSE LA ****************************************************** propertyX[3] = 316.0696 //beach front malibu house LA propertyY[3] = -1772.5688 propertyZ[3] = 4.1893 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[3] propertyY[3] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE save_houseprice[3] = 30000 CREATE_FORSALE_PROPERTY_PICKUP propertyX[3] propertyY[3] propertyZ[3] save_houseprice[3] PROP_3 save_housepickup[3] //beach front malibu house LA ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[3] propertyY[3] propertyZ[3] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[3] CHANGE_BLIP_DISPLAY prop_save_house_blip[3] BLIP_ONLY //SWITCH_ENTRY_EXIT beacsv FALSE DEACTIVATE_GARAGE beacsv //HIDEOUT_TWO //GARAGE FUCKED //SHABBYHOUSE IN VEGAS EAST ********************************************************** propertyX[4] = 2441.0022 //Shabbyhouse in Vegas East propertyY[4] = 695.1089 propertyZ[4] = 10.6646 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[4] propertyY[4] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE save_houseprice[4] = 20000 CREATE_LOCKED_PROPERTY_PICKUP propertyX[4] propertyY[4] propertyZ[4] PROP_4 save_housepickup[4] //Shabbyhouse in Vegas East *********************** //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_RED prop_save_house_blip[4] CHANGE_BLIP_DISPLAY prop_save_house_blip[4] BLIP_ONLY //SWITCH_ENTRY_EXIT svvgmd FALSE DEACTIVATE_GARAGE vEsvgrg //HIDEOUT_THREE //GARAGE FUCKED //FORT CARSON OLD HOUSE SAVEHOUSE NEAR RIVER BADLANDS ********************************* propertyX[5] = -366.1849 //Fort Carson old house savehouse near river BADLANDS propertyY[5] = 1166.0305 propertyZ[5] = 19.2422 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[5] propertyY[5] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE save_houseprice[5] = 30000 CREATE_LOCKED_PROPERTY_PICKUP propertyX[5] propertyY[5] propertyZ[5] PROP_4 save_housepickup[5] //Fort Carson old house savehous ***************** //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_RED prop_save_house_blip[5] CHANGE_BLIP_DISPLAY prop_save_house_blip[5] BLIP_ONLY //SWITCH_ENTRY_EXIT svcunt FALSE DEACTIVATE_GARAGE cn2gar1 //HIDEOUT_FOUR //GARAGE WORKING //MEDIUM HOUSE IN NICE SUBURB OF VENTURAS ********************************************** propertyX[6] = 1283.8439 //Medium house in nice suburb of Venturas propertyY[6] = 2528.7029 propertyZ[6] = 10.3203 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[6] propertyY[6] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE save_houseprice[6] = 50000 CREATE_LOCKED_PROPERTY_PICKUP propertyX[6] propertyY[6] propertyZ[6] PROP_4 save_housepickup[6] //Medium house in nice suburb of Venturas ***************** //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_RED prop_save_house_blip[6] CHANGE_BLIP_DISPLAY prop_save_house_blip[6] BLIP_ONLY //SWITCH_ENTRY_EXIT svvgmd FALSE DEACTIVATE_GARAGE blob69 //HIDEOUT_SEVEN //GARAGE FUCKED //SHABBY HOUSE IN RUNDOWN RESIDENTIAL AREA ******************************** propertyX[7] = 922.3647 //shabby house in rundown residential area propertyY[7] = 2011.8984 propertyZ[7] = 10.7660 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[7] propertyY[7] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE save_houseprice[7] = 30000 CREATE_LOCKED_PROPERTY_PICKUP propertyX[7] propertyY[7] propertyZ[7] PROP_4 save_housepickup[7] //shabby house in rundown residential area ***************** //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_RED prop_save_house_blip[7] CHANGE_BLIP_DISPLAY prop_save_house_blip[7] BLIP_ONLY //SWITCH_ENTRY_EXIT svvgmd FALSE DEACTIVATE_GARAGE blob7 //HIDEOUT_EIGHT //GARAGE FUCKED //SMALL TOWN SUBURBAN HOUSE WITH LAWN AND PORCH ******************************** propertyX[8] = 2236.9280 //Small town suburban house with lawn and porch propertyY[8] = 162.8057 propertyZ[8] = 26.8462 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[8] propertyY[8] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE save_houseprice[8] = 35000 CREATE_LOCKED_PROPERTY_PICKUP propertyX[8] propertyY[8] propertyZ[8] PROP_4 save_housepickup[8] //Small town suburban house with lawn and porch ***************** //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_RED prop_save_house_blip[8] CHANGE_BLIP_DISPLAY prop_save_house_blip[8] BLIP_ONLY //SWITCH_ENTRY_EXIT svcunt FALSE DEACTIVATE_GARAGE burbdoo //HIDEOUT_NINE //GARAGE WORKING //SHABBY HOUSE IN RUNDOWN RESIDENTIAL AREA ******************************** propertyX[9] = 1402.3174 //shabby house in rundown residential area propertyY[9] = 1901.9783 propertyZ[9] = 10.8449 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[9] propertyY[9] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE save_houseprice[9] = 30000 CREATE_LOCKED_PROPERTY_PICKUP propertyX[9] propertyY[9] propertyZ[9] PROP_4 save_housepickup[9] //shabby house in rundown residential area ***************** //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_RED prop_save_house_blip[9] CHANGE_BLIP_DISPLAY prop_save_house_blip[9] BLIP_ONLY //SWITCH_ENTRY_EXIT svvgmd FALSE DEACTIVATE_GARAGE blob6 //HIDEOUT_TEN //GARAGE FUCKED //HOUSE IN RUFF HOOD NEXT TO AIRPORT ******************************** propertyX[10] = 1687.9805 //house in ruff hood next to airport propertyY[10] = -2100.6431 propertyZ[10] = 13.3343 save_houseprice[10] = 10000 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[10] propertyY[10] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE CREATE_FORSALE_PROPERTY_PICKUP propertyX[10] propertyY[10] propertyZ[10] save_houseprice[10] PROP_3 save_housepickup[10] //house in ruff hood next to airport ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[10] propertyY[10] propertyZ[10] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[10] CHANGE_BLIP_DISPLAY prop_save_house_blip[10] BLIP_ONLY DEACTIVATE_GARAGE carlas1 //HIDEOUT_ELEVEN //GARAGE WORKING //BIG SWANKY SF SAVEHOUSE AT THE TOP OF LOMBARD STREET ******************************** propertyX[11] = -2106.6392 //big swanky SF savehouse at the top of lombard street propertyY[11] = 900.5537 propertyZ[11] = 76.2032 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[11] propertyY[11] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE save_houseprice[11] = 100000 CREATE_LOCKED_PROPERTY_PICKUP propertyX[11] propertyY[11] propertyZ[11] PROP_4 save_housepickup[11] //big swanky SF savehouse at the top of lombard street ***************** //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_RED prop_save_house_blip[11] CHANGE_BLIP_DISPLAY prop_save_house_blip[11] BLIP_ONLY DEACTIVATE_GARAGE CEsafe1 //HIDEOUT_TWELVE //GARAGE WORKING //SWANKY PAD IN LA HILLS WITH POOL AND LOTS OF BIG WINDOWS ******************************** propertyX[12] = 1331.1855 //ENTRY EXIT DOESN'T WORK propertyY[12] = -630.4962 propertyZ[12] = 108.6349 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[12] propertyY[12] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE save_houseprice[12] = 120000 CREATE_FORSALE_PROPERTY_PICKUP propertyX[12] propertyY[12] propertyZ[12] save_houseprice[12] PROP_3 save_housepickup[12] //Swanky pad in LA hills with pool and lots of big windows ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[12] propertyY[12] propertyZ[12] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[12] CHANGE_BLIP_DISPLAY prop_save_house_blip[12] BLIP_ONLY DEACTIVATE_GARAGE sav1sfe //HIDEOUT_THIRTEEN //GARAGE WORKING //SMALL FLAT NEAR HOSPITAL ******************************** propertyX[13] = -2695.7451 //Needs WARDROBE propertyY[13] = 818.4718 propertyZ[13] = 49.4844 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[13] propertyY[13] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE save_houseprice[13] = 20000 CREATE_LOCKED_PROPERTY_PICKUP propertyX[13] propertyY[13] propertyZ[13] PROP_4 save_housepickup[13] //small flat near hospital ***************** //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_RED prop_save_house_blip[13] CHANGE_BLIP_DISPLAY prop_save_house_blip[13] BLIP_ONLY DEACTIVATE_GARAGE sav1sfw //HIDEOUT_FOURTEEN //GARAGE WORKING //LARGE GARAGE IN ALLEY BEHIND APARTMENTS IN HASHBURY ******************************** propertyX[14] = -2456.9255 //large garage in alley behind apartments in Hashbury propertyY[14] = -131.3292 propertyZ[14] = 25.5376 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[14] propertyY[14] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE save_houseprice[14] = 40000 CREATE_LOCKED_PROPERTY_PICKUP propertyX[14] propertyY[14] propertyZ[14] PROP_4 save_housepickup[14] //large garage in alley behind apartments in Hashbury ***************** //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_RED prop_save_house_blip[14] CHANGE_BLIP_DISPLAY prop_save_house_blip[14] BLIP_ONLY DEACTIVATE_GARAGE svgsfs1 //HIDEOUT_SIXTEEN //GARAGE WORKING // SAVEHOUSES WITHOUT GARAGE********************************************************************************************************** //MEDIUM APARTMENT NEAR VENICE CANALS ******************************** propertyX[15] = 892.6662 //Medium apartment near Venice canals propertyY[15] = -1639.7139 propertyZ[15] = 14.4567 save_houseprice[15] = 10000 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[15] propertyY[15] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE CREATE_FORSALE_PROPERTY_PICKUP propertyX[15] propertyY[15] propertyZ[15] save_houseprice[15] PROP_3 save_housepickup[15] //Medium apartment near Venice canals ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[15] propertyY[15] propertyZ[15] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[15] CHANGE_BLIP_DISPLAY prop_save_house_blip[15] BLIP_ONLY //PIRATES IN MEN’S PANTS CASINO ******************************** propertyX[16] = 1969.9325 //Pirates In Men’s Pants Casino propertyY[16] = 1623.2429 propertyZ[16] = 12.3619 save_houseprice[16] = 6000 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[16] propertyY[16] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE CREATE_LOCKED_PROPERTY_PICKUP propertyX[16] propertyY[16] propertyZ[16] PROP_4 save_housepickup[16] //large garage in alley behind apartments in Hashbury ***************** //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_RED prop_save_house_blip[16] CHANGE_BLIP_DISPLAY prop_save_house_blip[16] BLIP_ONLY //THE CAMELS TOE CASINO ******************************** propertyX[17] = 2234.9087 //The Camels Toe Casino propertyY[17] = 1285.6981 propertyZ[17] = 10.3203 save_houseprice[17] = 6000 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[17] propertyY[17] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE CREATE_LOCKED_PROPERTY_PICKUP propertyX[17] propertyY[17] propertyZ[17] PROP_4 save_housepickup[17] //large garage in alley behind apartments in Hashbury ***************** //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_RED prop_save_house_blip[17] CHANGE_BLIP_DISPLAY prop_save_house_blip[17] BLIP_ONLY //SMALL CHINATOWN PAD ******************************** propertyX[18] = -2213.8643 //small chinatown pad propertyY[18] = 723.5587 propertyZ[18] = 48.9140 save_houseprice[18] = 20000 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[18] propertyY[18] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE CREATE_LOCKED_PROPERTY_PICKUP propertyX[18] propertyY[18] propertyZ[18] PROP_4 save_housepickup[18] //small chinatown pad ***************** //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_RED prop_save_house_blip[18] CHANGE_BLIP_DISPLAY prop_save_house_blip[18] BLIP_ONLY //FARM NEAR THE TRUTHS ******************************** propertyX[19] = -1439.0140 propertyY[19] = -1540.5901 propertyZ[19] = 101.2579 save_houseprice[19] = 100000 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[19] propertyY[19] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE CREATE_LOCKED_PROPERTY_PICKUP propertyX[19] propertyY[19] propertyZ[19] PROP_4 save_housepickup[19] //Farm ***************** //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_RED prop_save_house_blip[19] CHANGE_BLIP_DISPLAY prop_save_house_blip[19] BLIP_ONLY //LARGE PAD NEXT TO DRIVING SCHOOL ******************************** propertyX[20] = -2027.8300 //large pad next to driving school propertyY[20] = -44.0454 propertyZ[20] = 38.7692 save_houseprice[20] = 20000 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[20] propertyY[20] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE CREATE_LOCKED_PROPERTY_PICKUP propertyX[20] propertyY[20] propertyZ[20] PROP_4 save_housepickup[20] //large pad next to driving school ***************** //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_RED prop_save_house_blip[20] CHANGE_BLIP_DISPLAY prop_save_house_blip[20] BLIP_ONLY //VANK HOFF IN THE PARK HOTEL ROOM ******************************** propertyX[21] = -2419.6768 //Vank Hoff In The Park Hotel Room propertyY[21] = 334.1621 propertyZ[21] = 34.6796 save_houseprice[21] = 50000 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[21] propertyY[21] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE CREATE_LOCKED_PROPERTY_PICKUP propertyX[21] propertyY[21] propertyZ[21] PROP_4 save_housepickup[21] //Vank Hoff In The Park Hotel Room ***************** //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_RED prop_save_house_blip[21] CHANGE_BLIP_DISPLAY prop_save_house_blip[21] BLIP_ONLY //JUST OFF MAIN ANGEL PINE TOWN, BEHIND SAWMILL ******************************** propertyX[22] = -2079.0969 //just off main Angel Pine town, behind Sawmill propertyY[22] = -2309.8987 propertyZ[22] = 30.1172 save_houseprice[22] = 20000 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[22] propertyY[22] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE CREATE_LOCKED_PROPERTY_PICKUP propertyX[22] propertyY[22] propertyZ[22] PROP_4 save_housepickup[22] //just off main Angel Pine town, behind Sawmil ***************** //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_RED prop_save_house_blip[22] CHANGE_BLIP_DISPLAY prop_save_house_blip[22] BLIP_ONLY //IN EL QUEBRADOS (MOST NORTHERLY TOWN) ******************************** propertyX[23] = -1534.1703 //In El Quebrados (most northerly town) propertyY[23] = 2650.3000 propertyZ[23] = 55.3437 save_houseprice[23] = 20000 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[23] propertyY[23] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE CREATE_LOCKED_PROPERTY_PICKUP propertyX[23] propertyY[23] propertyZ[23] PROP_4 save_housepickup[23] //In El Quebrados (most northerly town) ***************** //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_RED prop_save_house_blip[23] CHANGE_BLIP_DISPLAY prop_save_house_blip[23] BLIP_ONLY //LAS BARRANCAS (SOUTHERN TOWN) ******************************** propertyX[24] = -1045.7751 //Las Barrancas (southern town) propertyY[24] = 1552.9763 propertyZ[24] = 32.7980 save_houseprice[24] = 20000 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[24] propertyY[24] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE CREATE_LOCKED_PROPERTY_PICKUP propertyX[24] propertyY[24] propertyZ[24] PROP_4 save_housepickup[24] //Las Barrancas (southern town) ***************** //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_RED prop_save_house_blip[24] CHANGE_BLIP_DISPLAY prop_save_house_blip[24] BLIP_ONLY //SMALL TOWN SUBURBAN HOUSE WITH LAWN AND PORCH ******************************** propertyX[25] = 793.5623 //Small town suburban house with lawn and porch propertyY[25] = -514.4116 propertyZ[25] = 16.3973 save_houseprice[25] = 40000 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[25] propertyY[25] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE CREATE_LOCKED_PROPERTY_PICKUP propertyX[25] propertyY[25] propertyZ[25] PROP_4 save_housepickup[25] //Las Barrancas (southern town) ***************** //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_RED prop_save_house_blip[25] CHANGE_BLIP_DISPLAY prop_save_house_blip[25] BLIP_ONLY DEACTIVATE_GARAGE burbdo2 //HIDEOUT_SIX //GARAGE WORKING //COMPTON HOUSE ******************************** propertyX[26] = 2103.3459 propertyY[26] = -1288.3389 propertyZ[26] = 23.8168 save_houseprice[26] = 10000 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[26] propertyY[26] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE CREATE_FORSALE_PROPERTY_PICKUP propertyX[26] propertyY[26] propertyZ[26] save_houseprice[26] PROP_3 save_housepickup[26] //Compton house ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[26] propertyY[26] propertyZ[26] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[26] CHANGE_BLIP_DISPLAY prop_save_house_blip[26] BLIP_ONLY //CASINO propertyX[27] = 2370.4773 propertyY[27] = 2165.4744 propertyZ[27] = 10.3269 save_houseprice[27] = 6000 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[27] propertyY[27] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE CREATE_LOCKED_PROPERTY_PICKUP propertyX[27] propertyY[27] propertyZ[27] PROP_4 save_housepickup[27] //CASINO ***************** //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_RED prop_save_house_blip[27] CHANGE_BLIP_DISPLAY prop_save_house_blip[27] BLIP_ONLY //CASINO CLOWNS POCKET propertyX[28] = 2220.6257 propertyY[28] = 1837.3475 propertyZ[28] = 10.3203 save_houseprice[28] = 6000 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[28] propertyY[28] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE CREATE_LOCKED_PROPERTY_PICKUP propertyX[28] propertyY[28] propertyZ[28] PROP_4 save_housepickup[28] //CASINO ***************** //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_RED prop_save_house_blip[28] CHANGE_BLIP_DISPLAY prop_save_house_blip[28] BLIP_ONLY //VEGAS FLAT propertyX[29] = 2819.1255 propertyY[29] = 2149.3718 propertyZ[29] = 10.3203 save_houseprice[29] = 10000 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[29] propertyY[29] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE CREATE_LOCKED_PROPERTY_PICKUP propertyX[29] propertyY[29] propertyZ[29] PROP_4 save_housepickup[29] //CASINO ***************** //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_RED prop_save_house_blip[29] CHANGE_BLIP_DISPLAY prop_save_house_blip[29] BLIP_ONLY // Scummy compton house propertyX[30] = 2483.0237 propertyY[30] = -2001.0741 propertyZ[30] = 13.0540 save_houseprice[30] = 10000 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[30] propertyY[30] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE CREATE_FORSALE_PROPERTY_PICKUP propertyX[30] propertyY[30] propertyZ[30] save_houseprice[30] PROP_3 save_housepickup[30] //Compton house ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[30] propertyY[30] propertyZ[30] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[30] CHANGE_BLIP_DISPLAY prop_save_house_blip[30] BLIP_ONLY // North Country propertyX[31] = 206.8 propertyY[31] = -112.1 propertyZ[31] = 4.3965 save_houseprice[31] = 10000 SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[31] propertyY[31] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE CREATE_LOCKED_PROPERTY_PICKUP propertyX[31] propertyY[31] propertyZ[31] PROP_4 save_housepickup[31] //CASINO ***************** //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_RED prop_save_house_blip[31] CHANGE_BLIP_DISPLAY prop_save_house_blip[31] BLIP_ONLY // ***************************************BLIPS****************************************************** // FIRST HALF BLIPS VAR_INT barber_shop1 VAR_INT food_shop1 VAR_INT clothes_shop1 //ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD taxibuyX taxibuyY taxibuyZ RADAR_SPRITE_HOUSEG taxibuy_blip //REMOVE_BLIP taxibuy_blip //CJ'S MOTHERS HOUSE******************************** save_pickupX[0] = 2495.53 save_pickupY[0] = -1711.88 save_pickupZ[0] = 1014.24 save_playerX[0] = 2495.90 save_playerY[0] = -1707.45 save_playerZ[0] = 1013.26 save_playerH[0] = 0.0 remove_grove_pickup[0] = 0 //MANSION ON THE HILLS******************************** save_pickupX[1] = 1263.05 save_pickupY[1] = -773.67 save_pickupZ[1] = 1091.39 save_playerX[1] = 1263.76 save_playerY[1] = -776.59 save_playerZ[1] = 1090.89 save_playerH[1] = 183.23 remove_grove_pickup[1] = 0 //AIRPORT GRAVEYARD ******************************** save_pickupX[2] = 416.9548 save_pickupY[2] = 2538.8127 save_pickupZ[2] = 9.5077 save_playerX[2] = 418.0759 save_playerY[2] = 2536.7712 save_playerZ[2] = 9.0077 save_playerH[2] = 269.2893 remove_grove_pickup[2] = 0 //SAVE PICKUPS save_pickupX[3] = 2367.1924 //CHANGED save_pickupY[3] = -1121.5184 save_pickupZ[3] = 1050.3824 save_playerX[3] = 2367.0718 save_playerY[3] = -1123.7151 save_playerZ[3] = 1049.8750 save_playerH[3] = 183.2590 remove_grove_pickup[3] = 0 save_pickupX[4] = 2320.1033 //CHANGED save_pickupY[4] = -1009.1160 save_pickupZ[4] = 1049.7178 save_playerX[4] = 2320.1033 save_playerY[4] = -1013.3750 save_playerZ[4] = 1049.2109 save_playerH[4] = 181.7957 remove_grove_pickup[4] = 0 save_pickupX[5] = 2342.8728 //CHANGED save_pickupY[5] = -1063.9392 save_pickupZ[5] = 1048.5234 save_playerX[5] = 2339.2539 save_playerY[5] = -1063.8602 save_playerZ[5] = 1048.0234 save_playerH[5] = 90.7733 remove_grove_pickup[5] = 0 save_pickupX[6] = 2186.0137 //CHANGED save_pickupY[6] = -1203.8339 save_pickupZ[6] = 1048.5234 save_playerX[6] = 2189.8184 save_playerY[6] = -1203.8297 save_playerZ[6] = 1048.0308 save_playerH[6] = 268.6874 remove_grove_pickup[6] = 0 save_pickupX[7] = 2313.3687 //CHANGED save_pickupY[7] = -1208.7438 save_pickupZ[7] = 1048.5234 save_playerX[7] = 2310.8530 save_playerY[7] = -1210.9749 save_playerZ[7] = 1048.0234 save_playerH[7] = 130.1776 remove_grove_pickup[7] = 0 save_pickupX[8] = 2249.3970 //CHANGED save_pickupY[8] = -1209.4495 save_pickupZ[8] = 1048.5234 save_playerX[8] = 2252.6997 save_playerY[8] = -1209.3879 save_playerZ[8] = 1048.0234 save_playerH[8] = 270.3929 remove_grove_pickup[8] = 0 save_pickupX[9] = 2244.5334 //CHANGED save_pickupY[9] = -1077.6633 save_pickupZ[9] = 1048.5234 save_playerX[9] = 2241.0688 save_playerY[9] = -1077.7365 save_playerZ[9] = 1048.0309 save_playerH[9] = 88.0268 remove_grove_pickup[9] = 0 save_pickupX[10] = 2205.3823 //CHANGED save_pickupY[10] = -1074.5905 save_pickupZ[10] = 1049.9766 save_playerX[10] = 2207.8516 save_playerY[10] = -1075.3242 save_playerZ[10] = 1049.4766 save_playerH[10] = 261.7253 remove_grove_pickup[10] = 0 save_pickupX[11] = 2233.0237 //CHANGED save_pickupY[11] = -1105.7168 save_pickupZ[11] = 1050.3901 save_playerX[11] = 2233.2307 save_playerY[11] = -1107.8516 save_playerZ[11] = 1049.8901 save_playerH[11] = 182.2496 remove_grove_pickup[11] = 0 save_pickupX[12] = 2278.1389 //CHANGED save_pickupY[12] = -1139.5831 save_pickupZ[12] = 1050.3984 save_playerX[12] = 2281.5242 save_playerY[12] = -1139.3701 save_playerZ[12] = 1049.8984 save_playerH[12] = 273.5033 remove_grove_pickup[12] = 0 //BADLANDS TRAILOR******************************** save_pickupX[13] = -2037.89 save_pickupY[13] = -2526.96 save_pickupZ[13] = 30.13 save_playerX[13] = -2039.78 save_playerY[13] = -2529.10 save_playerZ[13] = 29.63 save_playerH[13] = 21.23 remove_grove_pickup[13] = 0 //CATS LODGE******************************** save_pickupX[14] = 877.81 save_pickupY[14] = -26.91 save_pickupZ[14] = 62.69 save_playerX[14] = 877.04 save_playerY[14] = -30.16 save_playerZ[14] = 62.19 save_playerH[14] = 66.85 remove_grove_pickup[14] = 0 //SAN FRAN GARAGE******************************** save_pickupX[15] = -2026.4814 save_pickupY[15] = 156.8028 save_pickupZ[15] = 28.5391 save_playerX[15] = -2021.0358 save_playerY[15] = 156.0674 save_playerZ[15] = 27.6521 save_playerH[15] = 272.5815 remove_grove_pickup[15] = 0 //TORENOS RANCH ******************************** save_pickupX[16] = -693.3776 save_pickupY[16] = 957.8240 save_pickupZ[16] = 11.7829 save_playerX[16] = -700.3663 save_playerY[16] = 966.0852 save_playerZ[16] = 11.3575 save_playerH[16] = 90.0 remove_grove_pickup[16] = 0 //TRIAD CASINO ******************************** save_pickupX[17] = 2024.5645 save_pickupY[17] = 996.4728 save_pickupZ[17] = 10.3203 save_playerX[17] = 2027.0435 save_playerY[17] = 996.0585 save_playerZ[17] = 9.9203 save_playerH[17] = 275.5160 remove_grove_pickup[17] = 0 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] //BUYABLE PROPERIES************************************************************ 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] //ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT save_pickupX[8] save_pickupY[8] save_pickupZ[8] RADAR_SPRITE_SAVEHOUSE save_house_blip[8] //CHANGE_BLIP_DISPLAY save_house_blip[8] BLIP_ONLY //ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT save_pickupX[9] save_pickupY[9] save_pickupZ[9] RADAR_SPRITE_SAVEHOUSE save_house_blip[9] //CHANGE_BLIP_DISPLAY save_house_blip[9] BLIP_ONLY save_index = 0 VAR_INT stadium_blip1 stadium_blip2 stadium_blip3 // FOR FILSHIE // kickstart VAR_FLOAT kickX kickY kickZ kickX = 1099.5513 kickY = 1601.4974 kickZ = 11.5546 // blood bowl VAR_FLOAT bloodX bloodY bloodZ bloodx = -2120.0417 bloody = -444.2838 bloodz = 34.5312 //HOTRING VAR_FLOAT hotringX hotringY hotringZ hotringX = 2695.6243 hotringY = -1704.6885 hotringZ = 10.8437 ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT kickX kickY kickZ RADAR_SPRITE_RACE stadium_blip1 //CHANGE_BLIP_DISPLAY stadium_blip1 BLIP_ONLY ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT bloodX bloodY bloodZ RADAR_SPRITE_RACE stadium_blip2 //CHANGE_BLIP_DISPLAY stadium_blip2 BLIP_ONLY ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT hotringX hotringY hotringZ RADAR_SPRITE_RACE stadium_blip3 //CHANGE_BLIP_DISPLAY stadium_blip3 BLIP_ONLY VAR_FLOAT lowrideX lowrideY lowrideZ lowrideX = 2644.4414 lowrideY = -2012.5581 lowrideZ = 12.5469 VAR_INT tag_target[10] //////////// Dave B Globals VAR_INT fire_la_levels_completed[6] VAR_INT fire_sf_levels_completed[6] VAR_INT fire_vg_levels_completed[6] VAR_INT fire_total_la_completed VAR_INT fire_total_sf_completed VAR_INT fire_total_vg_completed VAR_INT fire_total_levels_completed VAR_INT fire_temp_counter VAR_INT fire_people_created VAR_INT pros_active VAR_INT player_in_otb_flag VAR_INT burglary_total_made burglary_total_items VAR_FLOAT burglary_noise VAR_INT burglary_player_spotted IF fire_temp_counter < 6 fire_la_levels_completed[fire_temp_counter] = 0 fire_sf_levels_completed[fire_temp_counter] = 0 fire_vg_levels_completed[fire_temp_counter] = 0 ENDIF fire_total_la_completed = 0 fire_total_sf_completed = 0 fire_total_vg_completed = 0 fire_total_levels_completed = 0 fire_people_created = 0 burglary_total_made = 0 burglary_total_items= 0 player_in_otb_flag = 0 pros_active = 0 VAR_INT flag_end_guy_audio_crash4 flag_end_guy_audio_crash4 = 0 // KEVIN WONGS GLOBALS ////// //VAR_INT mtbikeracer[6] // for mtbike race VAR_INT counter_robbery_cat4 // cat4 VAR_INT timer_countdown_farlie3 //cat4 VAR_INT int_distance_player_girl // farlie3 VAR_INT flag_otb_robbing_peds_panic VAR_INT mtbikerace_selection VAR_INT flag_is_farlie3_running VAR_INT flag_mtbike_passed_1stime VAR_INT flag_dozer_passed_1stime VAR_INT flag_dumper_passed_1stime VAR_INT current_highest_score_kickstart //kickstart highest score VAR_INT flag_cycling_skill_help VAR_INT flag_triathalon_passed_1stime VAR_INT mtbikerace_best_times[5] VAR_INT triathalon_selection triathalon_selection =1 flag_triathalon_passed_1stime = 0 flag_cycling_skill_help = 0 flag_mtbike_passed_1stime = 0 flag_dozer_passed_1stime = 0 flag_dumper_passed_1stime = 0 current_highest_score_kickstart = 25 flag_is_farlie3_running = 0 mtbikerace_selection = 1 //shared flags VAR_INT animstate_flag VAR_INT playernextset_flag //shared flags //do not reset flags VAR_INT tread_helpflag //shared between bench and dumbell VAR_FLOAT animframe VAR_FLOAT upperbodymusclestat_gym VAR_INT powerbar nBenchWeight VAR_FLOAT animvalue VAR_FLOAT bar_animvalue VAR_FLOAT diffgym VAR_FLOAT tempfloat_gym VAR_FLOAT animationtobeplayed //shared between bench and dumbell //objects //blips //new pickup object stuff VAR_FLOAT animframe_bppickup animframe_bpgetoff VAR_FLOAT animframe_freepickup animframe_freegetoff VAR_FLOAT lowerbodymusclestat_gym VAR_INT are_anims_loaded ////flags VAR_INT playerexercising_flag //////treadmill specific flags VAR_INT starttreadmill_flag VAR_INT incline_tread_flag VAR_INT inclinebutton_flag VAR_INT reptread_flag VAR_INT buttonpressgymtread_flag VAR_INT playerstarttread_flag VAR_INT playwalkanim_flag VAR_INT playjoganim_flag VAR_INT playsprintanim_flag VAR_INT finishedtread_flag // Two Player Variables VAR_INT ram_2p_level VAR_INT bike_2p_level VAR_INT heli_2p_level VAR_INT cars_2p_level VAR_INT peds_2p_level VAR_INT failed_cesar_race failed_cesar_race = 0 var_int flag_stage_of_bcesar_race flag_stage_of_bcesar_race = 0 //// BOLT's GLOBAL DOMINATION /////// VAR_INT total_cars_parked // SHOOTING RANGE LOCATIONS // coords to check player location in each ammunation VAR_FLOAT Srange_X[4] Srange_Y[4] Srange_Z[4] //skill given to make sure player doesn't get awraded skills more than once. VAR_INT SR_skill_award_given VAR_INT sr_i flag_shooting_range_mission SR_range_id flag_shooting_range_mission = 0 // coords for each of the shooting ranges Srange_X[0] = 292.33 Srange_Y[0] = -35.39 Srange_Z[0] = 1000.50 Srange_X[1] = 289.4804 Srange_Y[1] = -79.6619 Srange_Z[1] = 1001.7275 Srange_X[2] = 309.9744 Srange_Y[2] = -135.3927 Srange_Z[2] = 1002.8265 Srange_X[3] = 306.8972 Srange_Y[3] = -164.9947 Srange_Z[3] = 1000.2593 val_Area = 0 force_valet_cleanup = 0 //impund VAR_INT impound_area im_players_city VAR_INT sc3_missioncar //for valet script VAR_INT valet_mission_terminate //flags VAR_INT valet_oddjob_opened player_on_valet_mission playing_scrash1 valet_unlocked force_valet_cleanup //chars (global) VAR_INT valet[3] //cars VAR_INT valet_pickup_car valet_car[3] drop_off_car a_pickup_car // global flags VAR_INT can_script_be_cleaned val_Area create_drop_off_car_now VAR_INT force_valet_on_mission valet_can_be_created[3] freeze_creating_drop_off_cars VAR_INT debug_this valet_task[3] valet_event valet_scene_running valet_mission_dead[3] VAR_INT valet_mission_completed valet_mission_completed = 0 //scrash1 VAR_INT sc3_missioncar_alive //parachute VAR_INT player_fall_safe VAR_INT bball_unlocked bball_unlocked = 0 ////////////////////////////////// // ************ NEIL'S GLOBALS *************************************************** VAR_INT disable_debug // used to disable entire debug script VAR_INT syn2_mission_attempts syn2_mission_cleanup VAR_INT lowrider_meeting_is_loaded VAR_INT zero_revenue zero_cash_pickup // put this in initial zero_revenue = 5000 // put this in initial // ------- IMPORT / EXPORT GLOBALS ------- VAR_INT import_export_is_active import_export_is_active = 0 // gets unlocked after the steal4 mission. // ----- CRANE GLOBALS ------------------- VAR_INT player_is_in_crane player_is_in_crane = 0 VAR_INT reset_crane_camera reset_crane_camera = 0 VAR_INT disable_crane disable_crane = 1 // gets enabled after the steal4 mission VAR_INT disable_crane_exit disable_crane_exit = 0 VAR_INT finish_crane_loading_script finish_crane_loading_script = 0 VAR_INT remove_player_from_crane remove_player_from_crane = 0 VAR_INT disable_crane_slide disable_crane_slide = 0 VAR_INT disable_crane_rotate disable_crane_rotate = 0 VAR_INT disable_manual_control disable_manual_control = 0 VAR_INT magno_camera_type magno_camera_type = 0 // ----- LOWRIDER GLOBALS --------------- VAR_INT sw6_mission_attempts // global for lowrider mission sw6_mission_attempts = 0 // ----- CONVERSATION CONSTANTS --------- CONST_INT CONVERSATION_INITIALISE 0 CONST_INT CONVERSATION_PLAYING 1 CONST_INT CONVERSATION_PAUSED 2 CONST_INT CONVERSATION_FINISHED 3 CONST_INT CONVERSATION_FINISH_GRACEFULLY 4 // ----- BASKETBALL GLOBALS ------------- VAR_INT bball_challenge_active VAR_INT bball_challenge_high_score VAR_INT bball_challenge_timer VAR_INT bball_challenge_score VAR_INT bball_help VAR_INT bball_shot_dist bball_shot_dist_decimal VAR_INT bball_active VAR_INT points_scored VAR_INT bball_throw_active // KEITH ODDJOB CASH PICKUP GLOBALS // ...quarry completion VAR_INT g_Quarry_CashPickupKM VAR_INT g_Quarry_CashPickupValueKM g_Quarry_CashPickupValueKM = 2000 // ...trucking completion VAR_INT g_Truck_CashPickupKM VAR_INT g_Truck_CashPickupValueKM g_Truck_CashPickupValueKM = 2000 // ***************************************************************************** // onscreen counter and timer vars VAR_INT d2_num_packages_collected d6_door_health //STEAL 5 - opening car showroom stuff VAR_INT showroom_revenue showroom_cash_pickup showroom_revenue = 8000 //VAR_INT TO PASS STRAP4 - see andyd VAR_INT strap4_mission_passed_once_flag strap4_mission_passed_once_flag = 0 flag_had_taxi_jump_help = 0 flag_catcutscene_counter = 0 flag_otb_robbing_peds_panic = 0 nascar_best_lap_time = 999999 nascar_best_time = 999999 best_nascar_result = 999999 mission_trigger_wait_time = 250 one_sixteenth = 0.0625 one_thirtysecond = one_sixteenth / 2.0 one_sixtyfourth = one_thirtysecond / 2.0 recording = 0 stop_gargae_for_neil = 1 bmx_1_x = -425.0 bmx_1_y = 1410.0 bmx_1_z = 10.0 //heli1_checkpoint_best_time = 99999999 // airrace stuff race1_best_position_airrace = 99999999 race1_best_time_airrace = 99999999 race2_best_position_airrace = 99999999 race2_best_time_airrace = 99999999 race3_best_position_airrace = 99999999 race3_best_time_airrace = 99999999 race4_best_position_airrace = 99999999 race4_best_time_airrace = 99999999 race5_best_position_airrace = 99999999 race5_best_time_airrace = 99999999 race6_best_position_airrace = 99999999 race6_best_time_airrace = 99999999 done_race1_progress_airrace = 0 done_race2_progress_airrace = 0 done_race3_progress_airrace = 0 done_race4_progress_airrace = 0 done_race5_progress_airrace = 0 done_race6_progress_airrace = 0 //first_cat_fade[0] = 0 //first_cat_fade[1] = 0 //first_cat_fade[2] = 0 //first_cat_fade[3] = 0 //cat_mission_ended[0] = 0 //cat_mission_ended[1] = 0 //cat_mission_ended[2] = 0 //cat_mission_ended[3] = 0 //added_final_twar_blip = 0 pilot_test_passed = 0 driving_test_passed = 0 //andy d's driving school stuff f1_the360_best_score = 0 f1_the180_best_score = 0 f1_the90_best_score = 0 f1_spinrightgo_best_score = 0 f1_spinleftgo_best_score = 0 f1_burnlapright_best_score = 0 f1_burnlapleft_best_score = 0 f1_popcontrol_best_score = 0 f1_cityslicking_best_score = 0 f1_whiprightterminate_best_score = 0 f1_whipleftterminate_best_score = 0 f1_alleyoop_best_score = 0 f1_wheelieweave_best_score = 0 f1_pittechnique_best_score = 0 f1_conecoilright_best_score = 0 f1_conecoilleft_best_score = 0 f1_which_missions_are_open_flag = 0 //andy's bloodbowl stuff VAR_INT blood_attempt blood_passed_once blood_attempt = 1 blood_passed_once = 0 // jude's pilot school stuff VAR_INT d5_best_scores[10] VAR_INT d5_total_missions_open d5_last_played d5_best_scores[0] = 0 d5_best_scores[1] = 0 d5_best_scores[2] = 0 d5_best_scores[3] = 0 d5_best_scores[4] = 0 d5_best_scores[5] = 0 d5_best_scores[6] = 0 d5_best_scores[7] = 0 d5_best_scores[8] = 0 d5_best_scores[9] = 0 d5_total_missions_open = 1 d5_last_played = 1 VAR_INT d5_watched_first_cutscene d5_watched_first_cutscene = 0 CONST_INT FLYING_SKILL_REQUIRED_FOR_PILOT_LICENCE 180 VAR_INT d5_pilot_licence_obtained d5_pilot_licence_obtained = 0 VAR_INT d5_bronze_generator d5_silver_generator d5_gold_generator VAR_INT d5_bronze_generator_unlocked d5_silver_generator_unlocked d5_gold_generator_unlocked d5_bronze_generator_unlocked = 0 d5_silver_generator_unlocked = 0 d5_gold_generator_unlocked = 0 CREATE_CAR_GENERATOR 325.12 2537.1 17.52 180.0 RUSTLER -1 -1 TRUE 0 0 0 10000 d5_bronze_generator CREATE_CAR_GENERATOR 348.0 2537.1 17.42 180.0 STUNT -1 -1 TRUE 0 0 0 10000 d5_silver_generator CREATE_CAR_GENERATOR 365.51 2537.1 17.42 180.0 HUNTER -1 -1 TRUE 0 0 0 10000 d5_gold_generator SWITCH_CAR_GENERATOR d5_bronze_generator 0 SWITCH_CAR_GENERATOR d5_silver_generator 0 SWITCH_CAR_GENERATOR d5_gold_generator 0 //Steve T's Boat School stuff. VAR_INT boat_which_missions_are_open_flag boat_which_missions_are_open_flag = 1 VAR_INT boat_accelerate_best_score VAR_INT boat_simplecircuit_best_score VAR_INT boat_slalom_best_score VAR_INT boat_skijump_best_score VAR_INT boat_hover_best_score boat_accelerate_best_score = 60000 boat_simplecircuit_best_score = 80000 boat_slalom_best_score = 180000 boat_skijump_best_score = 10 boat_hover_best_score = 200000 VAR_INT boat_cut_watched boat_cut_watched = 0 VAR_INT boat_passed_once boat_passed_once = 0 //Boat School- all gold, all silver, all bronze reward vars VAR_INT boat_accelerate_bronzeachieved boat_accelerate_silverachieved boat_accelerate_goldachieved boat_accelerate_bronzeachieved = 0 boat_accelerate_silverachieved = 0 boat_accelerate_goldachieved = 0 VAR_INT boat_simplecircuit_bronzeachieved boat_simplecircuit_silverachieved boat_simplecircuit_goldachieved boat_simplecircuit_bronzeachieved = 0 boat_simplecircuit_silverachieved = 0 boat_simplecircuit_goldachieved = 0 VAR_INT boat_slalom_bronzeachieved boat_slalom_silverachieved boat_slalom_goldachieved boat_slalom_bronzeachieved = 0 boat_slalom_silverachieved = 0 boat_slalom_goldachieved = 0 VAR_INT boat_skijump_bronzeachieved boat_skijump_silverachieved boat_skijump_goldachieved boat_skijump_bronzeachieved = 0 boat_skijump_silverachieved = 0 boat_skijump_goldachieved = 0 VAR_INT boat_hover_bronzeachieved boat_hover_silverachieved boat_hover_goldachieved boat_hover_bronzeachieved = 0 boat_hover_silverachieved = 0 boat_hover_goldachieved = 0 //only give the reward vehicle once. VAR_INT boat_bronze_rewardgiven boat_silver_rewardgiven boat_gold_rewardgiven boat_bronze_rewardgiven = 0 boat_silver_rewardgiven = 0 boat_gold_rewardgiven = 0 VAR_INT boat_bronze_generator boat_silver_generator boat_gold_generator CREATE_CAR_GENERATOR -2227.1045 2445.7756 0.0 229.3771 MARQUIS -1 -1 TRUE 0 0 0 10000 boat_bronze_generator CREATE_CAR_GENERATOR -2223.8726 2409.8657 0.0 49.0555 SQUALO -1 -1 TRUE 0 0 0 10000 boat_silver_generator CREATE_CAR_GENERATOR -2247.8357 2425.6753 0.0 220.2123 JETMAX -1 -1 TRUE 0 0 0 10000 boat_gold_generator SWITCH_CAR_GENERATOR boat_bronze_generator 0 SWITCH_CAR_GENERATOR boat_silver_generator 0 SWITCH_CAR_GENERATOR boat_gold_generator 0 //Steve T's Pimp, LA, SF and LV courier oddjobs VAR_INT pimp_passed_once pimp_passed_once = 0 VAR_INT courierLA_passed_once courierLA_passed_once = 0 VAR_INT courierLV_passed_once courierLV_passed_once = 0 VAR_INT courierSF_passed_once courierSF_passed_once = 0 VAR_INT courierLA_revenue courierLA_cash_pickup courierLA_revenue = 2000 VAR_INT courierSF_revenue courierSF_cash_pickup courierSF_revenue = 2000 VAR_INT courierLV_revenue courierLV_cash_pickup courierLV_revenue = 2000 // Steve T's casino3 skip VAR_INT ca3_driven_to_factory ca3_driven_to_factory = 0 // Chris M's Shooter vars VAR_TEXT_LABEL $shtr_hi_1[10] $shtr_hi_2[10] $shtr_hi_3[10] VAR_INT shtr_hi_s[10] shtr_hi_l[10] // Chris M's Gravity vars VAR_TEXT_LABEL $grav_hi_1[10] $grav_hi_2[10] $grav_hi_3[10] VAR_INT grav_hi_s[10] grav_hi_l[10] // Chris M's Bike School Vars VAR_INT bs_open_tests flag_trailor_cutscene VAR_INT bs_wheelie_best_score VAR_INT bs_stoppie_best_score VAR_INT bs_the360_best_score VAR_INT bs_the180_best_score VAR_INT bs_jumpstop_best_score VAR_INT bs_jumpstoppie_best_score VAR_INT bs_passed bs_passed = 0 flag_trailor_cutscene = 0 bs_open_tests = 0 bs_wheelie_best_score = 0 bs_stoppie_best_score = 0 bs_the360_best_score = 0 bs_the180_best_score = 0 bs_jumpstop_best_score = 0 bs_jumpstoppie_best_score = 0 VAR_INT bs_the360_bronzeachieved bs_the360_silverachieved bs_the360_goldachieved bs_the360_bronzeachieved = 0 bs_the360_silverachieved = 0 bs_the360_goldachieved = 0 VAR_INT bs_the180_bronzeachieved bs_the180_silverachieved bs_the180_goldachieved bs_the180_bronzeachieved = 0 bs_the180_silverachieved = 0 bs_the180_goldachieved = 0 VAR_INT bs_wheelie_bronzeachieved bs_wheelie_silverachieved bs_wheelie_goldachieved bs_wheelie_bronzeachieved = 0 bs_wheelie_silverachieved = 0 bs_wheelie_goldachieved = 0 VAR_INT bs_jumpstop_bronzeachieved bs_jumpstop_silverachieved bs_jumpstop_goldachieved bs_jumpstop_bronzeachieved = 0 bs_jumpstop_silverachieved = 0 bs_jumpstop_goldachieved = 0 VAR_INT bs_stoppie_bronzeachieved bs_stoppie_silverachieved bs_stoppie_goldachieved bs_stoppie_bronzeachieved = 0 bs_stoppie_silverachieved = 0 bs_stoppie_goldachieved = 0 VAR_INT bs_jumpstoppie_bronzeachieved bs_jumpstoppie_silverachieved bs_jumpstoppie_goldachieved bs_jumpstoppie_bronzeachieved = 0 bs_jumpstoppie_silverachieved = 0 bs_jumpstoppie_goldachieved = 0 VAR_INT bs_bronze_rewardgiven bs_silver_rewardgiven bs_gold_rewardgiven bs_bronze_rewardgiven = 0 bs_silver_rewardgiven = 0 bs_gold_rewardgiven = 0 VAR_INT bs_bronze_generator bs_silver_generator bs_gold_generator CREATE_CAR_GENERATOR 1174.7596 1364.8319 10.1203 280.0355 FREEWAY -1 -1 TRUE 0 0 0 10000 bs_bronze_generator CREATE_CAR_GENERATOR 1174.9988 1368.4785 10.1203 282.2258 FCR900 -1 -1 TRUE 0 0 0 10000 bs_silver_generator CREATE_CAR_GENERATOR 1174.4670 1372.3585 10.1203 283.0546 NRG500 -1 -1 TRUE 0 0 0 10000 bs_gold_generator SWITCH_CAR_GENERATOR bs_bronze_generator 0 SWITCH_CAR_GENERATOR bs_silver_generator 0 SWITCH_CAR_GENERATOR bs_gold_generator 0 // Chris M's Cash Courier Var VAR_INT bce2_played bce2_played = 0 recreate_tplay_pickup = 0 VAR_INT start_the_bcesar_race start_the_bcesar_race = 0 // Chris M's car for Cesar's race VAR_INT cs1_player_car // Chris M's First Time Flags VAR_INT flag_bce2_passed_1stime VAR_INT flag_syn1_passed_1stime VAR_INT flag_cas1_passed_1stime VAR_INT flag_bikeschool_passed_1stime VAR_INT flag_shtr_passed_1stime VAR_INT flag_grav_passed_1stime VAR_INT flag_on_courier_mission respect_help_played respect_help_played = 0 flag_bce2_passed_1stime = 0 flag_syn1_passed_1stime = 0 flag_cas1_passed_1stime = 0 flag_bikeschool_passed_1stime = 0 flag_shtr_passed_1stime = 0 flag_grav_passed_1stime = 0 flag_on_courier_mission = 0 // Chris M's Trip Skip flags VAR_INT flag_syn1_skip1 flag_syn1_skip2 VAR_INT flag_bcr1_skip flag_syn1_skip1 = 0 flag_syn1_skip2 = 0 flag_bcr1_skip = 0 //stat calculation statbikestamina_ctr = 0.0 statbikelowmuscle_ctr = 0.0 statbike_temp = 0.0 //stat calculation stattreadstamina_ctr = 0.0 stattreadlowmuscle_ctr = 0.0 stattread_temp = 0.0 trigger_final_LA1_missions = 0 on_footX = 1.5 on_footY = 1.5 on_footZ = 3.0 in_carX = 4.0 in_carY = 4.0 in_carZ = 4.0 traceX[0] = 1766.1335 traceY[0] = -1704.2281 traceZ[0] = 12.4731 //LA traceX[1] = -1922.9225 traceY[1] = 282.7151 traceZ[1] = 40.0391 //San Fran traceX[2] = 1636.9160 traceY[2] = 912.9478 traceZ[2] = 9.6890 //Vegas traceX[3] = 1701.6902 traceY[3] = 1649.1930 traceZ[3] = 9.6296 // Vegas aircraft race const_int CESAR_RACE 0 const_int BADLAND_RACE1 7 const_int BADLAND_RACE2 8 const_int NASCAR_RACE 25 const_int DIRTBIKE_STADIUM 26 const_int LA_RACES 0 const_int SF_RACES 1 const_int LV_RACES 2 const_int AIR_RACES 3 var_int menu_mode menu_mode = 0 VAR_INT cprace_best_position[30] cprace_best_position[0] = 999999999 cprace_best_position[1] = 999999999 cprace_best_position[2] = 999999999 cprace_best_position[3] = 999999999 cprace_best_position[4] = 999999999 cprace_best_position[5] = 999999999 cprace_best_position[6] = 999999999 cprace_best_position[7] = 999999999 cprace_best_position[8] = 999999999 cprace_best_position[9] = 999999999 cprace_best_position[10] = 999999999 cprace_best_position[11] = 999999999 cprace_best_position[12] = 999999999 cprace_best_position[13] = 999999999 cprace_best_position[14] = 999999999 cprace_best_position[15] = 999999999 cprace_best_position[16] = 999999999 cprace_best_position[17] = 999999999 cprace_best_position[18] = 999999999 cprace_best_position[19] = 999999999 cprace_best_position[20] = 999999999 cprace_best_position[21] = 999999999 cprace_best_position[22] = 999999999 cprace_best_position[23] = 999999999 cprace_best_position[24] = 999999999 cprace_best_position[25] = 999999999 cprace_best_position[26] = 999999999 cprace_best_position[27] = 999999999 cprace_best_position[28] = 999999999 cprace_best_position[29] = 999999999 VAR_INT cprace_best_times[30] cprace_best_times[0] = 999999999 cprace_best_times[1] = 999999999 cprace_best_times[2] = 999999999 cprace_best_times[3] = 999999999 cprace_best_times[4] = 999999999 cprace_best_times[5] = 999999999 cprace_best_times[6] = 999999999 cprace_best_times[7] = 999999999 cprace_best_times[8] = 999999999 cprace_best_times[9] = 999999999 cprace_best_times[10] = 999999999 cprace_best_times[11] = 999999999 cprace_best_times[12] = 999999999 cprace_best_times[13] = 999999999 cprace_best_times[14] = 999999999 cprace_best_times[15] = 999999999 cprace_best_times[16] = 999999999 cprace_best_times[17] = 999999999 cprace_best_times[18] = 999999999 cprace_best_times[19] = 999999999 cprace_best_times[20] = 999999999 cprace_best_times[21] = 999999999 cprace_best_times[22] = 999999999 cprace_best_times[23] = 999999999 cprace_best_times[24] = 999999999 cprace_best_times[25] = 999999999 cprace_best_times[26] = 999999999 cprace_best_times[27] = 999999999 cprace_best_times[28] = 999999999 cprace_best_times[29] = 999999999 VAR_INT cprace_best_lap_times[30] cprace_best_lap_times[0] = 999999999 cprace_best_lap_times[1] = 999999999 cprace_best_lap_times[2] = 999999999 cprace_best_lap_times[3] = 999999999 cprace_best_lap_times[4] = 999999999 cprace_best_lap_times[5] = 999999999 cprace_best_lap_times[6] = 999999999 cprace_best_lap_times[7] = 999999999 cprace_best_lap_times[8] = 999999999 cprace_best_lap_times[9] = 999999999 cprace_best_lap_times[10] = 999999999 cprace_best_lap_times[11] = 999999999 cprace_best_lap_times[12] = 999999999 cprace_best_lap_times[13] = 999999999 cprace_best_lap_times[14] = 999999999 cprace_best_lap_times[15] = 999999999 cprace_best_lap_times[16] = 999999999 cprace_best_lap_times[17] = 999999999 cprace_best_lap_times[18] = 999999999 cprace_best_lap_times[19] = 999999999 cprace_best_lap_times[20] = 999999999 cprace_best_lap_times[21] = 999999999 cprace_best_lap_times[22] = 999999999 cprace_best_lap_times[23] = 999999999 cprace_best_lap_times[24] = 999999999 cprace_best_lap_times[25] = 999999999 cprace_best_lap_times[26] = 999999999 cprace_best_lap_times[27] = 999999999 cprace_best_lap_times[28] = 999999999 cprace_best_lap_times[29] = 999999999 VAR_INT got_race_made_progress[30] got_race_made_progress[0] = 0 got_race_made_progress[1] = 0 got_race_made_progress[2] = 0 got_race_made_progress[3] = 0 got_race_made_progress[4] = 0 got_race_made_progress[5] = 0 got_race_made_progress[6] = 0 got_race_made_progress[7] = 0 got_race_made_progress[8] = 0 got_race_made_progress[9] = 0 got_race_made_progress[10] = 0 got_race_made_progress[11] = 0 got_race_made_progress[12] = 0 got_race_made_progress[13] = 0 got_race_made_progress[14] = 0 got_race_made_progress[15] = 0 got_race_made_progress[16] = 0 got_race_made_progress[17] = 0 got_race_made_progress[18] = 0 got_race_made_progress[19] = 0 got_race_made_progress[20] = 0 got_race_made_progress[21] = 0 got_race_made_progress[22] = 0 got_race_made_progress[23] = 0 got_race_made_progress[24] = 0 got_race_made_progress[25] = 0 got_race_made_progress[26] = 0 got_race_made_progress[27] = 0 got_race_made_progress[28] = 0 got_race_made_progress[29] = 0 var_int total_races_completed total_races_completed = 0 var_int got_race_mission_complete got_race_mission_complete = 0 var_int disable_mod_garage disable_mod_garage = 0 flag_airrace_mission_passed = 0 been_in_a_coastguard_before = 0 flag_player_on_coastguard_mission = 0 //CATALINA PED GENERATION COORDINATES catX[0] = 868.3358 //CATALINA CONTACT POINT AT LODGE catY[0] = -29.5529 catZ[0] = 62.3276 //ACTUAL MISSION TRIGGER COORDINATES catX[1] = 257.5389 //CAT1.SC - LIQUOR - Neil catY[1] = -77.2300 catZ[1] = 1.3678 catX[2] = 2297.78//CAT2.SC - BANK - ChrisR catY[2] = -16.83 catZ[2] = 26.29 catX[3] = 652.17 //CAT3.SC - GAS STATION - ChrisM catY[3] = -559.75 catZ[3] = 15.15 catX[4] = 1294.09 //CAT4.SC - OTB - Kev catY[4] = 267.78 catZ[4] = 18.54 catX[5] = 681.5950 //CONTACT POINT AT BAR catY[5] = -478.7909 catZ[5] = 15.3281 var_int cat_liquor_banter cat_otb_banter cat_liquor_banter = 0 cat_otb_banter = 0 cat_counter = 0 flag_cat_mission1_passed = 0 flag_cat_mission2_passed = 0 flag_cat_mission3_passed = 0 flag_cat_mission4_passed = 0 pilotX = 415.55 //Pilot School pilotY = 2533.57 pilotZ = 19.18 // ****************** HEIST5 CAR GEN FOR MISSION COMPLETE ********************** VAR_INT hm5_car_gen CREATE_CAR_GENERATOR 383.178 2538.891 16.53 180.0 LEVIATHN -1 -1 TRUE 0 0 0 10000 hm5_car_gen SWITCH_CAR_GENERATOR hm5_car_gen 0 // LA1************************************************* introX = 2495.2144 introY = -1687.0298 introZ = 12.5144 sweetX = 2515.07 sweetY = -1673.98 sweetZ = 12.71 ryderX = 2459.55 ryderY = -1687.75 ryderZ = 12.56 smokeX = 2070.87 smokeY = -1703.01 smokeZ = 12.55 strapX = 790.54 //burger joint strapY = -1627.91 strapZ = 12.39 strap2X = 2486.61 //house party strap2Y = -1649.42 strap2Z = 12.48 cesarX = 1801.08 cesarY = -2117.92 cesarZ = 12.56 crashX = 1042.85 crashY = -1338.62 crashZ = 12.55 //la1fin1X = 2522.23 //la1fin1Y = -1679.20 //la1fin1Z = 14.0 // Cesar Race Flag VAR_INT cs1_race_is_go //BADLANDS********************************************* bcrashX = -2043.34 bcrashY = -2525.99 bcrashZ = 29.62 truthX = -922.5121 truthY = -1719.3951 truthZ = 76.5703 truth2X = -2198.8696 truth2Y = -2261.2024 truth2Z = 29.6419 bcesarX = 1552.7803 bcesarY = 39.3031 bcesarZ = 23.1445 //SAN FRAN********************************************* wuziX = -2154.2080 //ChinaTown wuziY = 645.3251 wuziZ = 51.3516 syndX = -2623.4971 //Pimp house syndY = 1405.6602 syndZ = 6.1016 stealX = -2031.2612 //GARAGE stealY = 179.2488 stealZ = 27.8359 zeroX = -2245.6631 //Toy shop zeroY = 128.8889 zeroZ = 34.3203 scrashX = -2030.4019 //Hub scrashY = 148.8279 scrashZ = 27.8359 garageX = -2030.4019 //Hub garageY = 148.8279 garageZ = 27.8359 testsX = -2026.8105 //Driving tests testsY = -114.9093 testsZ = 1034.1792 //VEGAS************************************************ desertX = -685.2156 //Ranch desertY = 923.2191 desertZ = 11.1531 desert2X = 327.4480 //AirStrip desert2Y = 2530.0950 desert2Z = 15.8066 casinoX = 1962.4316 //Players casino casinoY = 974.6750 casinoZ = 993.4688 TheheistX = 1962.3984 //Players casino Heist TheheistY = 1060.9623 TheheistZ = 993.4688 heistX = 2270.6335 //Mafia casino heistY = 1635.5992 heistZ = 1007.3672 vcrashX = 1598.5573 //Suburbs vcrashY = 2667.8296 vcrashZ = 9.8203 docX = 2090.0 docY = 1451.0 docZ = 9.8 //LA2************************************************** mansionX = 1253.7880 mansionY = -785.2594 mansionZ = 91.0313 groveX = 2496.06 groveY = -1687.96 groveZ = 12.53 //Miss chickX = -299.6 chickY = 1530.4 chickZ = 74.7 shooter1X = 1498.7 shooter1Y = -1631.9 shooter1Z = 14.0 gravX = 1505.7 gravY = -1631.9 gravZ = 14.0 spaceX = 1512.7 spaceY = -1631.9 spaceZ = 14.0 //ODDJOBS RouletteX = 1960.8979 RouletteY = 1008.4060 RouletteZ = 991.4745 // PIMP VAR_FLOAT pimpX pimpY pimpZ pimpX = 1918.9883 pimpY = -1789.3239 pimpZ = 12.5 // hitchhikers VAR_FLOAT hitchX hitchY hitchZ hitchX = -1563.7684 hitchY = 2690.8730 hitchZ = 54.6985 //otb otbX = 828.77 otbY = 4.71 otbZ = 1003.17 wheeloX = 1494.3 wheeloY = -1644.6 wheeloZ = 14.0 blackjackX = 1489.5 blackjackY = -1674.2 blackjackZ = 12.5 driving_schoolx = -2132.45 driving_schooly = -47.0 driving_schoolz = 35.3 basketballx = 2323.97 basketbally = -1517.04 basketballz = 24.32 limox = 1979.1 limoy = -1996.1 limoz = 12.4 directorx = 862.9 directory = -1154.8 directorz = 23.0 valetx = -1758.8767 valety = 952.7440 valetz = 23.7487 banditx = 2258.5234 bandity = 1613.2504 banditz = 1005.1875 //heli1X = -569.1451 //heli1Y = 851.0923 //heli1Z = 22.8402 //ass_2_x = 482.5293 //ass_2_Y = 244.276 //ass_2_Z = 10.09 // //ass_3_x = 38.244 //ass_3_Y = -1024.251 //ass_3_Z = 9.451 // //ass_4_x = -1481.8719 //ass_4_Y = -825.3049 //ass_4_Z = 13.8777 // //ass_5_x = -978.0145 //ass_5_Y = -530.7043 //ass_5_Z = 9.9513 flag_courier_mission_passed = 0 flag_courier_trigger = 0 VAR_FLOAT cour1X cour1Y cour1Z VAR_FLOAT cour2X cour2Y cour2Z VAR_FLOAT cour3X cour3Y cour3Z cour1X = 1359.45 cour1Y = -1755.00 cour1Z = 12.85 cour2X = -2590.44 cour2Y = 73.21 cour2Z = 3.91 cour3X = 1887.79 cour3Y = 2087.39 cour3Z = 10.05 /* //Bulldozer VAR_FLOAT bulldozerX bulldozerY bulldozerZ VAR_INT flag_dozer_trigger bulldozerx = 623.8815 bulldozery = 870.9470 bulldozerz = -43.9531 //Dumper Truck Mission VAR_FLOAT dumperX dumperY dumperZ VAR_INT flag_dumper_trigger dumperx = 684.1580 dumpery = 899.4011 dumperz = -41.382 */ // Quarry VAR_FLOAT quarryX quarryY quarryZ quarryX = 823.6816 quarryY = 854.1741 quarryZ = 10.7949 //mountainbike VAR_FLOAT mountbX mountbY mountbZ mountbX = -2309.23 mountbY = -1651.22 mountbZ = 483.09 VAR_FLOAT carcraneX carcraneY carcraneZ carcraneX = -1517.9033 carcraneY = 153.7578 carcraneZ = 2.7813 //demolition derby VAR_FLOAT demoX demoY demoZ demox = 2705.1716 demoy = -1698.1272 demoz = 10.8515 // pool VAR_FLOAT poolX poolY poolZ poolx = 1134.0 pooly = -7.0 poolz = 1001.0 // boat school VAR_FLOAT boatsX boatsY boatsZ boatsX = -2187.3782 boatsY = 2416.5518 boatsZ = 4.1660 VAR_FLOAT bikesX bikesY bikesZ bikesX = 1173.8767 bikesY = 1351.0371 bikesZ = 9.9219 //Trucking VAR_FLOAT truckX truckY truckZ truckX = -77.6456 truckY = -1136.4010 truckZ = 0.0781 // dancing VAR_FLOAT danceX danceY danceZ dancex = -2645.23 dancey = 1413.30 dancez = -92.69 // 2player kill VAR_FLOAT kill2pX kill2pY kill2pZ kill2pX = -2325.37 kill2pY = -131.655 kill2pZ = 34.3 VAR_FLOAT bike_2pX bike_2pY bike_2pZ bike_2pX = 563.78 bike_2pY = 2725.14 bike_2pZ = 60.49 VAR_FLOAT cars_2pX cars_2pY cars_2pZ cars_2pX = 424.6570 cars_2pY = -1439.6741 cars_2pZ = 30.3410 VAR_FLOAT heli_2pX heli_2pY heli_2pZ heli_2pX = 1681.19 heli_2pY = -1433.31 heli_2pZ = 12.53 VAR_FLOAT peds_2pX peds_2pY peds_2pZ peds_2pX = 1576.7339 peds_2pY = -1609.7407 peds_2pZ = 12.3828 VAR_FLOAT run_2pX run_2pY run_2pZ run_2pX = 2831.2429 run_2pY = -1674.6372 run_2pZ = 8.9732 VAR_FLOAT demo_2pX demo_2pY demo_2pZ demo_2pX = 2668.7688 demo_2pY = -1753.9734 demo_2pZ = 10.8515 // 2 player tag VAR_FLOAT tagX tagY tagZ tagx = -2338.50 tagy = -109.01 tagz = 34.36 //2 player boxing VAR_FLOAT boxingX boxingY boxingZ boxingX = 764.4572 boxingY = 2.7450 boxingZ = 999.7153 //p2_survival VAR_FLOAT surviveX surviveY surviveZ surviveX = 2747.0552 surviveY = -1691.2076 surviveZ = 10.8515 //p2_sumo VAR_FLOAT sumoX sumoY sumoZ sumox = 2694.2456 sumoy = -1706.0067 sumoz = 10.8556 // **************************************** CRASH4 GANG WAR TRAINING ******************************* VAR_INT gym_is_running // **************************************** CRASH4 GANG WAR TRAINING ******************************* VAR_INT played_cut1_before_crash4 played_cut2_before_crash4 // used to let player skip the cutscenes if they have watched them before. played_cut1_before_crash4 = 0 played_cut2_before_crash4 = 0 created_save_blips = 0 // **************************************** SHOP MENU VARAIBLES *********************************** VAR_INT shopkeeper_model_shops VAR_INT switch_the_gym_interiors_off switch_the_gym_interiors_off = 0 VAR_INT cost_menu_shops cost_menu_drawn_shops main_menu_shops main_menu_drawn_shops VAR_INT bought_menu_shops bought_menu_drawn_shops sub_menu_shops sub_menu_drawn_shops VAR_INT price_counter CONST_INT MAX_NUMBER_ALLOWED_IN_MENU_SHOPS 12 VAR_INT item_price[MAX_NUMBER_ALLOWED_IN_MENU_SHOPS] VAR_INT item_model_index[MAX_NUMBER_ALLOWED_IN_MENU_SHOPS] VAR_TEXT_LABEL $item_text_label[MAX_NUMBER_ALLOWED_IN_MENU_SHOPS] VAR_INT item_modelid[MAX_NUMBER_ALLOWED_IN_MENU_SHOPS] VAR_INT item_component[MAX_NUMBER_ALLOWED_IN_MENU_SHOPS] VAR_INT item_hilight_shops[MAX_NUMBER_ALLOWED_IN_MENU_SHOPS] VAR_INT modelid_shops component_shops special_camera // used to display clothes on the player VAR_INT area_looked_for_shops item_no_shops temp_var_shops VAR_INT shop_main_item_picked_shops shop_sub_item_picked_shops VAR_TEXT_LABEL $ITEM1 $ITEM2 $ITEM3 $ITEM4 $ITEM5 $ITEM6 $ITEM7 $ITEM8 $ITEM9 $ITEM10 $ITEM11 $ITEM12 // used for 1st menu VAR_INT player_item_texture_shops player_item_model_shops // used to check what stuff player has VAR_INT flag_no_money_shops // used to print message to tell player they have no cash VAR_INT flag_bought_item_already_shops VAR_INT flag_player_owned_item_shops VAR_INT area_to_look_at_shops area_to_look_at_shops = 0 flag_bought_item_already_shops = 0 flag_no_money_shops = 0 flag_player_owned_item_shops = 0 price_counter = 0 cost_menu_drawn_shops = 0 main_menu_drawn_shops = 0 bought_menu_drawn_shops = 0 sub_menu_drawn_shops = 0 shop_main_item_picked_shops = 0 shop_sub_item_picked_shops = 0 area_looked_for_shops = 0 item_no_shops = 0 temp_var_shops = 0 // for lowrider mission to give free stuff in Cesars VAR_INT flag_on_neil_lowrider_mission flag_on_neil_lowrider_mission = 0 // used to tell me player has bought from shops for the Wardrobe VAR_INT flag_bought_from_binco VAR_INT flag_bought_from_prolapse VAR_INT flag_bought_from_suburban VAR_INT flag_bought_from_zip VAR_INT flag_bought_from_victim VAR_INT flag_bought_from_didiessachs flag_bought_from_binco = 0 flag_bought_from_prolapse = 0 flag_bought_from_suburban = 0 flag_bought_from_zip = 0 flag_bought_from_victim = 0 flag_bought_from_didiessachs = 0 VAR_INT flag_player_got_gimp_suit VAR_INT flag_player_got_valet_uniform VAR_INT flag_player_got_casino_uniform VAR_INT flag_player_got_police_uniform VAR_INT flag_player_got_country_clothes VAR_INT flag_got_mechanic_clothes VAR_INT flag_got_medic_clothes VAR_INT flag_got_pimp_clothes flag_player_got_gimp_suit = 0 flag_player_got_valet_uniform = 0 flag_player_got_casino_uniform = 0 flag_player_got_police_uniform = 0 flag_player_got_country_clothes = 0 flag_got_mechanic_clothes = 0 flag_got_medic_clothes = 0 flag_got_pimp_clothes = 0 // used for shopkeeper speech VAR_INT sample_name_shop // ammunation weapon opens stuff VAR_INT flag_6weapons_open flag_7weapons_open flag_8weapons_open flag_9weapons_open flag_10weapons_open VAR_INT flag_11weapons_open flag_12weapons_open flag_13weapons_open flag_14weapons_open flag_15weapons_open VAR_INT flag_16weapons_open flag_6weapons_open = 0 flag_7weapons_open = 0 flag_8weapons_open = 0 flag_9weapons_open = 0 flag_10weapons_open = 0 flag_11weapons_open = 0 flag_12weapons_open = 0 flag_13weapons_open = 0 flag_14weapons_open = 0 flag_15weapons_open = 0 flag_16weapons_open = 0 // ********************************************* FOR CRASH4 IN AMMUNATION ************************* VAR_INT flag_bought_gun_for_doberman flag_bought_gun_for_doberman = 0 VAR_INT flag_on_doberman_mission flag_on_doberman_mission = 0 VAR_INT flag_gang_war_active flag_gang_war_active = 0 VAR_INT ammu_shop_blip[10] mod_garage_blips[3] barbers_blips[5] pizza_blips[8] burger_blips[10] chicken_blips[12] tattoo_blips[4] gym_blips[2] clothes_blips[17] spray_shop[6] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2067.4 -1831.2 13.5 RADAR_SPRITE_SPRAY spray_shop1 ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 488.0 -1734.0 34.4 RADAR_SPRITE_SPRAY spray_shop2 ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 720.016 -454.625 15.328 RADAR_SPRITE_SPRAY spray_shop4 //Badlands Countryeast ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -1420.547 2583.945 58.031 RADAR_SPRITE_SPRAY spray_shop[0] //Desert CountryN ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 1966.532 2162.65 10.995 RADAR_SPRITE_SPRAY spray_shop[1] //North West Vegas ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2425.46 1020.83 49.39 RADAR_SPRITE_SPRAY spray_shop[2] //San Fran North ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 1021.8, -1018.7, 30.9 RADAR_SPRITE_SPRAY spray_shop[3] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -1908.9, 292.3, 40.0 RADAR_SPRITE_SPRAY spray_shop[4] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -103.6, 1112.4, 18.7 RADAR_SPRITE_SPRAY spray_shop[5] //ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2393.779 1481.181 12.551 RADAR_SPRITE_SPRAY spray_shop[5] //East Vegas //ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2644.2524 -2028.2457 12.5547 RADAR_SPRITE_MOD_GARAGE mod_garage_blip //ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 1043.4 -1025.3 34.4 RADAR_SPRITE_MOD_GARAGE mod_garage1 VAR_INT added_all_food_blips_before added_all_food_blips_before = 0 VAR_INT added_all_clothes_blips_before added_all_clothes_blips_before = 0 //2502.309814, -1699.359985, 12.432300 : HIDEOUT_ONE cjsafe //CJ'S GARAGE //DEACTIVATE_GARAGE LCKSfse //HIDEOUT_FIFTEEN //SAN FRAN HUB GARAGES DEACTIVATE_GARAGE cn2gar2 //HIDEOUT_FIVE //PILOT SCHOOL //ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 1043.4 -1025.3 34.4 RADAR_SPRITE_MOD_GARAGE mod_garage1 //ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 488.0 -1734.0 34.4 RADAR_SPRITE_TSHIRT spray_shop2 //Clothes shop /* ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 364.8 1051.5 21.0 RADAR_SPRITE_GUN weapon_shop2_blip ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD ammu3X ammu3Y ammu3Z RADAR_SPRITE_GUN weapon_shop3_blip ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD hard1X hard1Y hard1Z RADAR_SPRITE_HARDWARE hardware_shop1 ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 364.8 1086.5 21.0 RADAR_SPRITE_HARDWARE hardware_shop2 ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD hard3X hard3Y hard3Z RADAR_SPRITE_HARDWARE hardware_shop3 ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -3.8 -1265.8 12.0 RADAR_SPRITE_SPRAY spray_shop1 //South beach ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 319.0 441.3 12.0 RADAR_SPRITE_SPRAY spray_shop2 //Vice Point ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -903.0 -1261.1 12.0 RADAR_SPRITE_SPRAY spray_shop3 //Docks ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -876.2 -105.5 12.0 RADAR_SPRITE_SPRAY spray_shop5 //Main road haiti */ //CHANGE_BLIP_DISPLAY hotel_contact_blip BLIP_ONLY // ***************************************POLICE AND HOSPITAL RESTARTS**************************************** //RESTARTS //0: retart always works (LA) //1: Only works when San Fran has been opened up //2: Only works when the entire map is opened up. // LA ADD_HOSPITAL_RESTART 2027.77 -1420.52 15.99 137.0 0 // (LA EAST) ADD_HOSPITAL_RESTART 1180.85 -1325.57 12.58 271.40 0 // (LA WEST) ADD_POLICE_RESTART 1550.68 -1675.49 14.51 90.0 0 // (LA CENTRAL) // BADLANDS ADD_HOSPITAL_RESTART 1244.4370 331.2261 18.5547 7.5465 1 // (Badlands north east) ADD_POLICE_RESTART 632.2344 -571.7104 15.3515 267.2000 1 // (Badlands north east) ADD_HOSPITAL_RESTART -2199.7195 -2308.0750 29.6181 322.8928 1 // (Badlands south west) ADD_POLICE_RESTART -2163.8286 -2387.8169 29.6250 134.2066 1 // (Badlands south west) //SAN FRAN ADD_HOSPITAL_RESTART -2670.2854 616.4364 13.4531 183.1042 1 // (San Fran north) ADD_POLICE_RESTART -1605.7917 716.8598 11.0241 355.2978 1 // (San Fran) // DESERT ADD_HOSPITAL_RESTART -316.3832 1056.0450 18.7344 1.6017 2 // (Desert South east) ADD_POLICE_RESTART -212.1889 979.4168 18.3219 278.0478 2 // (Desert South east) ADD_HOSPITAL_RESTART -1514.8230 2527.1189 54.7443 2.3546 2 // (Desert North west) ADD_POLICE_RESTART -1393.0723 2633.1162 54.9491 86.0424 2 // (Desert North west) // VEGAS ADD_HOSPITAL_RESTART 1578.4460 1770.6816 9.8358 99.7567 2 // (VEGAS) ADD_POLICE_RESTART 2337.0833 2453.8018 13.9765 90.7643 2 // (VEGAS) /* SET_SHORTCUT_PICKUP_POINT 407.6 725.3 10.5 177.0 //Vice point hospital SET_SHORTCUT_PICKUP_POINT -102.6 -947.7 9.6 192.7 //South Beach hospital SET_SHORTCUT_PICKUP_POINT -784.4 1189.3 10.2 90.0 //Downtown hospital SET_SHORTCUT_PICKUP_POINT -850.8 -483.9 10.2 189.8 //Havana hospital SET_SHORTCUT_PICKUP_POINT 492.5 475.1 10.6 274.2 //Vice point Cop Shop SET_SHORTCUT_PICKUP_POINT 418.5 -422.6 9.3 58.7 //South Beach Cop Shop SET_SHORTCUT_PICKUP_POINT -665.3 793.7 10.5 180.0 //Downtown Cop Shop SET_SHORTCUT_PICKUP_POINT -873.0 -641.8 10.5 97.1 //Havana Cop Shop */ // ***************************************UNIQUE STUNT JUMPS**************************************** //Los Santos - Jump going east onto railway platform roof (possible in PCJ upwards.) ADD_STUNT_JUMP (1939.1357 -1968.0520 17.6649) (2.5 2.7280 3.1700) (1989.9585 -1971.9513 28.7249) (11.1340 5.3980 7.2300) (1960.5447 -1963.5712 25.3229) 500 //Los Santos - Bridge structure going south, user will have to lift front wheel slightly on motorbike. ADD_STUNT_JUMP (2209.2747 -1843.6862 19.0964) (2.5 4.2800 3.8300) (2215.1238 -1889.3594 17.7864) (15.3600 7.0100 11.0500) (2203.3396 -1861.5244 21.8367) 500 //Los Santos - Heading north using steps as jump, user can land on adjacsent building. ADD_STUNT_JUMP (1177.2153 -1696.7614 21.3680) (2.2200 2.5 5.1000) (1177.9723 -1626.7192 32.8079) (18.2000 7.2300 12.3600) (1182.9198 -1659.4308 29.1115) 500 //Los Santos - North up multi-coloured ped walkway steps, possible on bike or car ADD_STUNT_JUMP (2278.2896 -1357.8571 31.3255) (2.5 2.5 3.9600) (2275.2991 -1310.7556 30.9555) (10.6900 2.5000 9.3600) (2271.6812 -1331.2822 32.6621) 500 //Los Santos - Driving approximately SSE over the mound of dirt at these co-ords, the user should just clear the top of the palm tree in his/her path. ADD_STUNT_JUMP (2335.3513 -2163.9470 18.5147) (3.5200 2.5 3.4400) (2344.4189 -2178.7029 24.2546) (15.6400 3.0500 11.9600) (2336.8899 -2190.3213 22.4292) 500 //Los Santos - Driving west up the steps here, just possible on a PCJ, easy on an NRG. User should clear wall behind steps. ADD_STUNT_JUMP (2825.9329 -1582.6599 18.1260) (2.5 4.2200 4.9200) (2787.5039 -1569.3179 27.7760) (2.7040 19.1600 14.1500) (2805.1213 -1579.8921 20.7985) 500 //Los Santos - Driving South onto corrugated roof, possible in a variety of vehicles. ADD_STUNT_JUMP (2460.1765 -2567.9106 18.8162) (2.5 2.5 3.6500) (2464.2058 -2597.4551 25.8862) (8.8900 0.8200 6.2600) (2454.8777 -2593.7869 23.9707) 500 //Los Santos - Use the boarding ramp at these co-ords to get over airport fence. ADD_STUNT_JUMP (1832.4530 -2386.8049 17.9247) (2.5 2.5 3.0100) (1833.6118 -2372.3845 17.9247) (6.5700 0.5000 6.6500) (1840.2876 -2367.0955 19.4731) 500 //Los Santos - using the sign at these co-ords, going east, the user has to clear the concrete and the red sign. ADD_STUNT_JUMP (1839.7450 -2514.4766 16.1769) (2.5 2.3400 2.7700) (1921.6793 -2517.8958 20.6069) (2.5120 6.4200 8.6999) (1879.7524 -2529.8940 22.7841) 500 //Los Santos - Using this ramp the user would have to make it onto the adacent building (heading west.) ADD_STUNT_JUMP (2634.3975 -2107.9841 17.0887) (4.1720 2.5 5.0600) (2595.6458 -2109.0552 25.7387) (9.5920 4.1780 6.1000) (2608.7000 -2117.1738 21.6272) 500 //Los Santos - heading west up and over these steps, user should have to clear the railway tracks. ADD_STUNT_JUMP (2352.3000 -1259.0685 28.9962) (2.5 2.5 2.7600) (2298.2036 -1257.6772 28.7062) (2.6200 20.0400 9.9600) (2312.8376 -1265.6143 37.7793) 500 //Los Santos - east over the steps and onto the road (over the roof.) ADD_STUNT_JUMP (1013.1629 -1270.3624 24.4456) (2.0000 2.0000 4.0500) (1045.3594 -1273.4749 32.9636) (2.0000 14.3040 13.1400) (1037.3560 -1264.5017 25.3721) 500 //San Fierro - If the user hits this banked bit of road/dirt, just slightly WNW, it's possible to land on the San Fierro airport runway area, Reminiscant of one of the GTA3 Shoreside jumps. ADD_STUNT_JUMP (-973.3570 -223.2307 53.3717) (5.3500 29.1299 15.9800) (-1116.0278 -211.0103 30.6016) (49.9398 32.2599 27.0399) (-1038.6666 -187.1254 54.0) 500 //San Fierro - User would have to clear the buildings to the south and land correctly. ADD_STUNT_JUMP (-2637.0688 780.3949 50.0166) (6.7600 2.5200 9.2900) (-2639.5774 733.2753 44.1565) (9.9100 2.5200 9.2900) (-2633.3594 757.9172 52.0809) 500 //San Fierro - User goes north over this grass verge landing safely. ADD_STUNT_JUMP (-2520.1995 1169.2032 59.5525) (6.5400 3.0900 5.9700) (-2520.1995 1202.1201 53.4025) (33.5399 6.2100 17.6600) (-2513.7776 1193.9250 57.4115) 500 //San Fierro - Hit this set of steps going North, land on the building opposite the multi storey car park. ADD_STUNT_JUMP (-1794.9822 1211.6116 35.6794) (3.0200 2.5800 4.7500) (-1795.8021 1258.1971 32.5394) (19.5100 5.1300 19.6900) (-1797.4895 1238.3950 37.9679) 500 //San Fierro - Run off this scaffolding north into the water (usually this would be a bad idea, but there's a beach nearby so the user won't have to swim too far to get out of the water.) ADD_STUNT_JUMP (-2659.5508 1533.6698 53.2004) (2.5 2.6200 4.7300) (-2659.5508 1551.6447 45.5003) (7.2600 11.7900 18.5400) (-2658.4263 1531.6315 60.6476) 500 //San Fierro - East over these steps and at least onto the roof beyond. ADD_STUNT_JUMP (-1690.6622 1110.3917 57.2776) (2.3000 2.9800 5.0800) (-1662.5118 1110.3917 57.2776) (2.3000 18.1200 12.2600) (-1649.6760 1114.1404 50.8559) 500 //San Fierro - Out of the Los Cabras compound. ADD_STUNT_JUMP (-2145.4607 -112.0259 44.3452) (7.2400 3.3000 5.4900) (-2146.8203 -89.4659 54.3752) (4.3600 3.3000 14.2800) (-2141.0510 -89.1471 45.6462) 500 //Las Payasadas - Jump east over the massive chicken. Ace ADD_STUNT_JUMP (-267.7739 2662.0359 68.7405) (3.5300 4.0200 6.0000) (-237.1135 2661.9358 79.7505) (7.2800 12.0600 8.1400) (-253.1990 2654.0164 72.7989) 500 //Las Payasadas - hit these steps going southwards, land OK for success. ADD_STUNT_JUMP (-249.6904 2590.8052 66.1194) (3.6800 2.9600 3.9600) (-249.6904 2575.3252 66.1194) (12.6600 5.2100 9.6800) (-256.2141 2555.2065 64.5246) 500 //Arca Del Peste - Head west along the wooden path and over jump at end. ADD_STUNT_JUMP (-871.5031 2308.7898 164.5739) (3.3900 2.8700 4.8600) (-981.0790 2300.9133 111.7538) (18.7700 40.0200 69.5898) (-905.3314 2315.0637 163.7206) 500 //Las Venturas - Jumping south out of the emerald isle multi storey and at least onto the roof of the souvenire shop (or beyond.) ADD_STUNT_JUMP (2073.7126 2366.6531 50.8534) (5.5400 3.4500 2.1800) (2050.7300 2313.7092 31.8133) (29.6900 11.1900 26.0900) (2077.4861 2318.8723 26.9287) 500 //Las Venturas - Jumping from the roof of the building eastward from this ramp and laning safely. ADD_STUNT_JUMP (2170.9465 2402.6086 62.2905) (2.7800 3.5900 3.6200) (2183.6704 2402.6086 62.2905) (4.9200 9.2000 9.8000) (2232.1096 2387.5867 50.9115) 500 //Las Venturas - Jumping east from here, user should land on the roof of the pawn shop to be succesful. ADD_STUNT_JUMP (2418.0557 1353.2336 12.3641) (2.2000 5.0140 3.9800) (2481.9229 1346.3536 25.6640) (5.0100 19.9840 11.6300) (2462.3130 1362.7017 19.7672) 500 //Las Venturas - Jumping North from here, user should land on top of building directly north to be succesful. ADD_STUNT_JUMP (2407.3083 1364.3785 14.5734) (5.1600 2.7200 6.0000) (2399.1201 1386.5244 25.4934) (18.5700 4.6100 11.6200) (2412.7717 1392.4314 22.3043) 500 //Las Venturas - Jump west here, user should land on at least northbound section of freeway. ADD_STUNT_JUMP (2784.7629 2208.7197 15.1934) (3.0500 1.7600 4.3300) (2738.9844 2208.7197 21.8434) (3.2400 24.2300 16.1500) (2758.6555 2201.6653 18.3639) 500 //Las Venturas - Jumping north here the user should land on a ledge on the building to the north. ADD_STUNT_JUMP (1482.3834 2037.0040 17.0576) (2.0900 2.6900 5.5800) (1482.8750 2077.9778 23.8776) (3.2840 4.0900 7.0700) (1489.1245 2065.0237 20.6514) 500 //Las Venturas - Heading east, user should make it over the freeway bridge from this ramp (only just possible in PCJ, faster bikes no problem.) ADD_STUNT_JUMP (1976.3966 2593.6860 17.2126) (3.6700 2.0000 5.4400) (2041.1909 2593.6860 30.4425) (5.0500 32.8000 20.5000) (2007.6760 2596.3137 28.1338) 500 //Las Venturas - North over this ramp, user should make it onto the west bound section of freeway. ADD_STUNT_JUMP (1636.2639 2399.7122 15.8903) (2.5000 2.5000 5.0800) (1636.2639 2449.0708 15.8903) (21.3300 2.0 13.9500) (1642.1699 2440.2903 18.5118) 500 //Las Venturas - east out of multistorey(10) carpark used in missapropiation (uber chase) ADD_STUNT_JUMP (2119.2305 2385.2126 33.7094) (2.1000 3.3600 2.6000) (2151.8909 2385.6013 30.8958) (3.5100 13.4200 9.0400) (2128.1023 2392.0476 32.2357) 500 //Angel Pine - Jump NW on this ramp and land on the roof over the road for success. ADD_STUNT_JUMP (-2082.5291 -2498.9316 33.9682) (2.3400 2.4000 3.5500) (-2110.0312 -2479.7092 40.8882) (4.4200 4.0800 5.9400) (-2101.4182 -2496.4680 37.1704) 500 //Red County - Jumping over this bridge east into town, suitable for any vehicle. ADD_STUNT_JUMP (2112.4077 97.9000 39.9930) (5.6400 10.2800 8.0500) (2152.1167 91.3300 39.9930) (14.9500 26.9500 16.2200) (2149.9333 76.6566 44.9509) 500 //Chiliad - Jumping off this wooden ramp at a decent speed. ADD_STUNT_JUMP (-2100.4128 -1743.5951 199.7312) (2.9400 4.2700 4.9600) (-2082.4910 -1718.9235 199.7312) (10.8000 9.3900 17.6200) (-2096.1672 -1714.5718 201.0246) 500 //Whetstone - jump east off this sand dune. ADD_STUNT_JUMP (-2287.6707 -2800.7786 22.0541) (5.8100 13.6600 5.5700) (-2255.1331 -2800.7786 22.0541) (12.5600 28.6800 14.6900) (-2253.3186 -2814.6453 22.8247) 500 //Verdant Meadows - Hit the plane's wing here going about Northeast, user should clear the plane to the northeast. ADD_STUNT_JUMP (110.8902 2428.0488 23.7936) (3.5800 3.1500 4.2000) (132.6400 2445.7815 32.7336) (4.3800 16.6200 15.3500) (119.7758 2449.6401 27.7167) 500 //Valle Ocultado - Hit the ramp against the wall of this shack, landing in the water should suffice, there is a beach nearby so CJ won't be swimming for long. ADD_STUNT_JUMP (-894.4963 2693.1987 44.7303) (3.5800 2.6300 2.4400) (-941.4026 2662.9392 55.7302) (29.1400 16.0200 19.7400) (-931.5991 2647.9949 51.4501) 500 //Blueberry - Hit the smashed pallet ramp landing safely on the other side. ADD_STUNT_JUMP (89.9936 -243.2046 7.5581) (3.9600 4.4600 4.4800) (101.5435 -255.4345 7.5581) (7.3900 11.3100 14.9900) (87.0604 -266.0403 9.8153) 500 //Blueberry - Hitting this set of stairs going east, the player sould clear the building he/she is propelled over. ADD_STUNT_JUMP (160.7991 -160.2479 6.1453) (2.1200 1.4520 2.2300) (171.8147 -162.4050 12.3210) (2.0000 7.2000 7.1800) (183.2545 -151.3140 13.5961) 500 //Blueberry - The user could jump NNE over the barn here, there may be a problem once the (somewhat illogically placed IMHO,) boulders in the farmyard get collision. ADD_STUNT_JUMP (-72.3000 17.7 8.4132) (2.8100 2.4 4.4800) (-65.1154 35.7188 16.6432) (7.7100 2.0000 7.2700) (-70.4781 55.8289 15.0868) 500 //Blueberry - User could jump NNE here also, probably best in a car because the landing usually involves a crash through a wooden fence. ADD_STUNT_JUMP (-39.7989 53.3007 6.9223) (3.1500 2.7600 2.3500) (-36.4289 76.6106 6.9223) (12.5100 4.4800 9.6700) (-42.5507 77.3671 7.8899) 500 //Dillimore - South over this ramp, landing at least in front of the gas station. ADD_STUNT_JUMP (638.7504 -520.0714 18.8519) (2.0000 2.1500 2.3400) (639.8602 -545.0903 22.7619) (10.9700 3.0100 8.2600) (629.1661 -542.9603 24.9594) 500 //Las Venturas - very south vegas out of warehouse compound ADD_STUNT_JUMP (1749.7230 779.6028 13.4757) (1.6800 2.6160 2.1640) (1749.7230 825.0914 14.2657) (10.7180 2.6160 5.8240) (1744.0463 799.4149 12.6554) 500 //over trailers from pallett ramp ADD_STUNT_JUMP (110.2446 -257.9929 6.2739) (3.3600 3.3200 2.9300) (92.4846 -245.6928 11.0439) (8.4300 6.9200 3.9900) (92.9552 -254.6195 10.1539) 500 //Red County - over broken bridge for catalina chase in bank job ADD_STUNT_JUMP (2125.6423 95.2542 37.3959) (3.8300 4.0900 2.5700) (2098.5098 99.5841 35.8559) (3.8300 8.4600 5.7200) (2116.3931 88.0306 40.2113) 500 //The Panicoption - short jump over ravine ADD_STUNT_JUMP (-344.6466 -9.8812 44.9609) (14.2600 3.4500 3.8000) (-336.1166 28.7688 37.7609) (16.0900 4.5500 6.2900) (-358.2565 15.6353 41.7241) 500 //San Fierro - big jump near golden gate bridge ADD_STUNT_JUMP (-2589.1804 1164.3700 59.8256) (2.8400 2.7700 2.2300) (-2567.1250 1231.1827 47.0362) (18.9000 9.0400 6.0500) (-2576.0596 1209.2253 53.5490) 500 //San Fierro - above tunnel near bridge ADD_STUNT_JUMP (-2292.0442 1097.7101 84.7347) (2.0820 2.0740 2.0200) (-2350.5911 1101.9282 64.1846) (4.5220 14.2040 9.0300) (-2323.7307 1106.6652 77.1770) 500 //San Fierro - supermarket carpark ADD_STUNT_JUMP (-2408.2852 723.2977 38.6835) (2.6200 2.5000 1.6900) (-2408.2852 723.2977 38.6835) (22.4100 2.5800 4.0600) (-2407.9814 716.5809 38.4334) 500 //San Fierro - stairs at top of windy road ADD_STUNT_JUMP (-2116.3557 925.6832 87.8190) (2.6800 1.9900 2.4800) (-2069.5649 925.4330 76.6890) (2.6800 15.2600 14.4600) (-2085.6289 935.5674 85.4677) 500 //San Fierro - onto highway near building site ADD_STUNT_JUMP (-1903.1918 223.3468 37.7965) (1.7500 1.8400 1.7000) (-1874.3824 223.3467 42.4064) (1.7500 8.1300 4.6700) (-1897.0392 219.1329 39.9110) 500 //San Fierro - out of airport onto docks ADD_STUNT_JUMP (-1687.3230 -162.2010 17.8603) (2.6800 3.1900 2.2000) (-1722.5374 -126.3910 14.9903) (9.0900 7.1300 13.0700) (-1716.8781 -142.6182 14.6114) 500 //San Fierro - out of airport west ADD_STUNT_JUMP (-1729.9243 -364.5276 18.2246) (2.2680 2.5100 2.1480) (-1777.4872 -364.2776 17.9446) (2.2680 15.3300 7.0680) (-1745.8403 -355.4089 14.2197) 500 //San Fierro - from stadium carpark onto freeway ADD_STUNT_JUMP (-1972.0991 -543.0899 38.9862) (1.9600 2.0100 1.7700) (-1912.3181 -543.0899 45.3462) (7.5800 14.7800 8.6900) (-1942.9154 -539.1157 40.2453) 500 //Los santos - near from cliff above burglary house ADD_STUNT_JUMP (2770.2141 -1177.4768 70.7527) (2.3440 1.9900 2.1720) (2814.4675 -1182.9965 55.7938) (5.9400 17.3800 31.5200) (2766.0310 -1184.6915 74.9193) 500 //Los santos - docks up stairs ADD_STUNT_JUMP (2248.8379 -2463.2581 15.1049) (5.1800 2.2600 2.5900) (2247.4675 -2432.4275 21.8068) (12.4400 2.2600 9.3200) (2240.7571 -2446.2014 16.8109) 500 //Los santos - docks up stairs ADD_STUNT_JUMP (2248.8320 -2627.6233 15.1806) (4.8620 2.1440 2.5560) (2248.8320 -2655.4978 21.2585) (8.6800 2.1440 8.4980) (2237.6948 -2650.7676 16.3791) 500 //Los santos - Steps at basketball courts ADD_STUNT_JUMP (2326.1216 -1508.7510 27.0066) (2.2420 1.7280 2.0800) (2286.8135 -1508.7317 30.3748) (3.8600 9.3800 8.9900) (2299.4038 -1514.5957 29.8683) 500 //Los santos - centre north los santos along high freeway heading north ADD_STUNT_JUMP (1623.5740 -1110.9561 61.8178) (1.6560 2.0140 1.8360) (1623.5740 -1079.2654 61.8178) (17.2460 2.0140 22.1459) (1615.6329 -1093.7998 64.8724) 500 //Los santos - centre north los santos along high freeway heading south ADD_STUNT_JUMP (1679.6456 -962.2209 65.6737) (1.6940 2.4900 1.9400) (1679.6456 -988.7401 65.6737) (13.1240 2.4900 16.7400) (1683.8813 -977.1464 65.7485) 500 //Los santos - centre north los santos underneath freeway into carpark ADD_STUNT_JUMP (1667.1671 -992.8579 32.7591) (6.3200 3.7680 2.4800) (1675.8049 -1008.2971 32.7591) (18.7479 2.4380 9.7900) (1689.1560 -1013.6305 35.6715) 500 //Los santos - south west los santos off grassy ramp onto pier bridge. ADD_STUNT_JUMP (347.0000 -1662.2990 35.8218) (3.1200 2.6500 2.6100) (351.6596 -1700.2644 35.8218) (19.9100 4.1300 29.7600) (337.9746 -1676.9927 36.7335) 500 //Los santos - off building onto sunset road ADD_STUNT_JUMP (743.1525 -1132.8186 25.7991) (1.8340 3.6060 2.3500) (710.0014 -1132.9885 25.7991) (1.8340 11.0960 10.0000) (717.1129 -1136.5488 25.5161) 500 //Los santos - out of storm drains ADD_STUNT_JUMP (1395.5621 -1460.5657 12.3906) (1.6720 1.9700 1.7500) (1402.9596 -1447.4658 17.7266) (10.0620 1.9700 5.1500) (1395.0233 -1450.8358 17.1621) 500 //Los santos - end of freeway heading west at the montgomery intersection ADD_STUNT_JUMP (1586.4889 312.8876 23.9965) (2.1500 6.3800 1.9900) (1540.2079 325.3573 28.9665) (2.1500 32.8899 11.3700) (1562.9119 331.3251 23.6496) 500 //Los santos - south between airport & sea on freeway near underpass ADD_STUNT_JUMP (2058.1001 -2677.5168 15.4946) (3.1000 2.4800 2.6000) (2009.2607 -2677.5168 20.8946) (1.9300 16.5499 11.2600) (2036.5663 -2685.2805 13.2053) 500 //Los santos - South LA at the beach up steps under promenade ADD_STUNT_JUMP (586.0102 -1773.7693 15.2312) (2.0000 2.2700 1.7800) (627.7189 -1781.1187 22.6912) (2.0000 7.0600 9.9400) (598.5319 -1778.4811 17.0529) 500 //Las Venturas - off missapropriation roof ADD_STUNT_JUMP (2172.0779 2430.5071 61.7470) (2.1200 3.3000 2.3500) (2191.5918 2436.3044 53.0570) (2.5000 12.5700 25.2200) (2227.2341 2436.8850 37.7880) 500 //Las Venturas - Under power lines over the strip ADD_STUNT_JUMP (2176.1326 2268.1958 13.4683) (2.2860 1.9340 1.9380) (2137.2717 2268.2456 16.7183) (2.2860 10.5540 6.4580) (2148.6008 2264.8921 13.6634) 500 //San Fierro - Jump the freeway. One ramp of the overpass to the other on a bike. ADD_STUNT_JUMP (-2213.7732 -311.0786 38.5339) (1.1500 3.0400 2.5900) (-2213.7732 -327.8282 44.6738) (10.3740 3.0400 5.9300) (-2215.9768 -325.7729 42.5119) 500 //Las Venturas - onto airport hangar roof //A/DD_STUNT_JUMP (1584.1844 1118.5709 13.6009) (2.1000 2.2900 2.2400) (1585.0873 1149.7214 19.6745) (17.5800 2.2000 10.2380) (1581.0806 1136.2915 19.4338) 500 //Los santos - East footbridge over train tracks, steps on the right //A/DD_STUNT_JUMP (2295.6306 -1356.5637 30.9933) (1.9100 4.1300 2.6500) (2295.6306 -1312.9896 34.1733) (17.0000 2.6300 11.0800) (2288.0129 -1329.0284 27.4067) 500 //East up the down escalator, possible to clear the roof //A/DD_STUNT_JUMP (1112.0548 -1618.9945 23.2458) (2.4000 2.5 5.2400) (1132.5320 -1620.1743 25.5957) (4.6900 16.9200 9.0700) (1125.0527 -1625.7938 24.4827) 500 //Directly south over the mound leading to the basket ball court, user would have to land safeley on freeway. Should be possible in either car or bike. //A/DD_STUNT_JUMP (2281.8477 -1509.7455 28.7425) (6.0700 3.2500 3.9900) (2281.7976 -1577.8739 28.7425) (36.0299 27.2400 11.9100) (2270.1919 -1550.0366 30.9957) 500 //If the user hits this ramp correctly they will clear the bridge and the airport fence. //A/DD_STUNT_JUMP (-1516.8522 -566.0588 13.9385) (4.4440 5.4900 5.4800) (-1600.6017 -550.1583 13.9385) (21.3940 16.0200 20.0300) (-1560.1888 -562.7290 25.3578) 500 //Get a run up towards this set of stairs and clear the building, landing near the multi storey car park. //A/DD_STUNT_JUMP (-1794.4597 1208.8374 34.4865) (3.2900 2.7600 5.7400) (-1791.6495 1233.4645 43.4064) (10.2200 9.1000 16.9600) (-1783.6460 1230.5397 34.4055) 500 //Get a good run up along the road, head for the broken piece of road and jump off the right hand side to land on the freeway (to the right, not on the broken road.) //shit one (on an angle - triggered from both directions) //A/DD_STUNT_JUMP (-1771.8066 503.6432 46.1222) (7.6100 12.1300 7.5800) (-1722.9945 518.6924 53.5521) (13.2400 22.0500 21.0500) (-1729.4946 502.8332 40.6866) 500 //X:-1794 Y:1199 Z:25 - North over the steps. //A/DD_STUNT_JUMP (-1794.6830 1210.1572 34.4895) (2.6600 2.0000 3.3700) (-1789.4122 1231.6329 38.7795) (9.9700 2.0000 7.0000) (-1797.4153 1238.2430 34.3920) 500 //jump North here, user should make it to the second warehouse roof to be succesful. //A/DD_STUNT_JUMP (1423.1846 1678.1962 20.2303) (7.4300 3.6300 8.2300) (1418.4126 1747.8409 41.0103) (14.0900 4.5300 25.3900) (1411.9707 1727.8572 20.8908) 500 //(JW) Jumping north from here the user can clear the canyon (run up through the archway to the south.) //A/DD_STUNT_JUMP (-1992.0266 -1447.9917 96.6975) (22.9599 15.4500 13.0200) (-1973.9852 -1338.4615 51.0276) (34.7998 14.0399 17.7900) (-1940.2611 -1379.0653 86.3168) 500 //vegas airport over fence //A/DD_STUNT_JUMP (1568.8297 1648.5426 15.1416) (2.2700 2.3840 2.1200) (1577.1488 1705.5762 22.0215) (19.4600 2.3840 7.2400) (1586.8275 1688.4302 19.4262) 500 //sanfran jump into airport from docks //A/DD_STUNT_JUMP (-1739.8580 -168.6013 7.2647) (2.1800 2.2000 1.8100) (-1715.9192 -225.4707 19.3046) (10.4700 8.5900 6.3600) (-1721.0516 -189.0959 15.5977) 500 //short jump over ravine (the panicoption) //A/DD_STUNT_JUMP (-619.5474 203.3859 28.5974) (4.0200 6.6600 2.3500) (-639.3463 179.9758 29.1074) (8.9400 9.3300 7.5500) (-628.8107 206.7740 28.3064) 500 //san fran over bridge on road into airport //A/DD_STUNT_JUMP (-1577.0126 -478.5486 10.7547) (2.6400 2.5200 2.4400) (-1560.0413 -459.0581 17.2947) (9.9500 11.2300 4.2000) (-1572.9957 -468.5905 14.9977) 500 //sanfran jump over pier 69 //A/DD_STUNT_JUMP (-1671.3883 1317.8365 11.1095) (2.4100 2.5560 1.9140) (-1688.0160 1335.4849 21.2695) (4.2900 4.0160 4.9440) (-1679.6945 1348.7806 21.5220) 500 ////Los Santos Heading West away from grove street - house driveway //A/DD_STUNT_JUMP (1982.8108 -1622.8293 17.1587) (2.4400 2.8600 2.1500) (1946.5498 -1622.8293 19.6087) (2.4400 9.8400 7.2500) (1957.8710 -1625.4438 18.5694) 500 ////Los Santos Heading East towards grove street - house driveway //A/DD_STUNT_JUMP (1960.6704 -1622.8293 17.1587) (2.4400 2.8600 2.1500) (1996.8063 -1622.8293 19.6087) (2.4400 9.8400 7.2500) (1984.0558 -1625.8560 18.6816) 500 // **************************************GLOBAL ZONES******************************************************** // these are using old Washington values VAR_INT init_ped_density init_ped_density = 50 // ****************************VICECITY SWITCHED OFF ROAD AND PED NODES********************* // ped nodes /* SWITCH_PED_ROADS_OFF -956.0 -355.0 5.0 -898.0 -328.0 25.0 // El Banco Corrupto Grande SWITCH_PED_ROADS_OFF 411.0 -600.0 -10.0 451.0 -553.0 30.0 //Ocean drive back alleyway (Middle) SWITCH_PED_ROADS_OFF 450.0 -509.0 -10.0 472.0 -489.0 30.0 //Ocean drive back alleyway (North) // car nodes SWITCH_ROADS_OFF -583.92 1371.84 8.0 -383.40 1531.17 25.0 // Dirtbike track SWITCH_ROADS_OFF 86.0 250.0 15.0 -100.0 281.0 30.0 // entrance to golf club SWITCH_ROADS_OFF 411.0 -600.0 -10.0 451.0 -553.0 30.0 //Ocean drive back alleyway (Middle) */ // ***************************************** GANGS******************************************* /* SET_GANG_CAR_MODEL GANG_CUBAN cuban SET_GANG_CAR_MODEL GANG_HAITIAN voodoo SET_GANG_CAR_MODEL GANG_STREET gangbur SET_GANG_CAR_MODEL GANG_BIKER angel SET_GANG_ATTACK_PLAYER_WITH_COPS GANG_SECURITY TRUE SET_GANG_WEAPONS GANG_CUBAN WEAPONTYPE_PISTOL WEAPONTYPE_UNARMED SET_GANG_WEAPONS GANG_HAITIAN WEAPONTYPE_PISTOL WEAPONTYPE_UNARMED SET_GANG_WEAPONS GANG_STREET WEAPONTYPE_PISTOL WEAPONTYPE_UNARMED SET_GANG_WEAPONS GANG_DIAZ WEAPONTYPE_PISTOL WEAPONTYPE_PISTOL SET_GANG_WEAPONS GANG_SECURITY WEAPONTYPE_PISTOL WEAPONTYPE_PISTOL SET_GANG_WEAPONS GANG_BIKER WEAPONTYPE_PISTOL WEAPONTYPE_UNARMED SET_GANG_WEAPONS GANG_PLAYER WEAPONTYPE_PISTOL WEAPONTYPE_PISTOL SET_THREAT_FOR_PED_TYPE PEDTYPE_GANG_CUBAN THREAT_GANG_HAITIAN SET_THREAT_FOR_PED_TYPE PEDTYPE_GANG_HAITIAN THREAT_GANG_CUBAN */ // ****************************************OBJECTS*********************************************** // ****** San Fran Hub Hole ********** //VAR_INT san_fran_hub_hole //CREATE_OBJECT_NO_OFFSET Hubhole1_SFSe -2049.1714 250.3193 34.4770 san_fran_hub_hole //DONT_REMOVE_OBJECT san_fran_hub_hole /* VAR_INT mexican_gate_left mexican_gate_right CREATE_OBJECT_NO_OFFSET comp_wood_gate 907.464 -1686.79 12.523 mexican_gate_left SET_OBJECT_HEADING mexican_gate_left 0.0 SET_OBJECT_COLLISION_DAMAGE_EFFECT mexican_gate_left FALSE // gate cannot be broken DONT_REMOVE_OBJECT mexican_gate_left CREATE_OBJECT_NO_OFFSET comp_wood_gate 907.464 -1695.647 12.523 mexican_gate_right SET_OBJECT_HEADING mexican_gate_right 180.0 SET_OBJECT_COLLISION_DAMAGE_EFFECT mexican_gate_right FALSE // gate cannot be broken DONT_REMOVE_OBJECT mexican_gate_right created_gates_1stime_riot3 = 1 */ //Door used for fake garage at Four Dragons Casino in vegas. VAR_INT fourdragons_door CREATE_OBJECT_NO_OFFSET trdcsgrgdoor_lvs 1903.383 967.62 11.438 fourdragons_door // 11.438Safe room door SET_OBJECT_HEADING fourdragons_door 0.0 DONT_REMOVE_OBJECT fourdragons_door VAR_INT advert_f1 CREATE_OBJECT_NO_OFFSET md_poster 2167.82 -1518.193 20.237 advert_f1 SET_OBJECT_HEADING advert_f1 0.0 DONT_REMOVE_OBJECT advert_f1 // small town bank doors - palomino creek VAR_INT pc_door[4] CREATE_OBJECT_NO_OFFSET CR_DOOR_01 2322.845 8.304 25.483 pc_door[0] set_object_collision_damage_effect pc_door[0] FALSE FREEZE_OBJECT_POSITION pc_door[0] TRUE CREATE_OBJECT_NO_OFFSET CR_DOOR_01 2316.233 0.712 25.742 pc_door[1] SET_OBJECT_HEADING pc_door[1] 270.0 FREEZE_OBJECT_POSITION pc_door[1] TRUE set_object_collision_damage_effect pc_door[1] FALSE CREATE_OBJECT_NO_OFFSET CR_DOOR_03 2304.257 -17.744 25.742 pc_door[2] FREEZE_OBJECT_POSITION pc_door[2] TRUE set_object_collision_damage_effect pc_door[2] FALSE CREATE_OBJECT_NO_OFFSET CR_DOOR_03 2304.257 -14.583 25.742 pc_door[3] FREEZE_OBJECT_POSITION pc_door[3] TRUE SET_OBJECT_HEADING pc_door[3] 180.0 set_object_collision_damage_effect pc_door[3] FALSE //Door for casino3.sc VAR_INT ca3_loadingbay CREATE_OBJECT_NO_OFFSET shutter_vegas 1055.629 2087.67 12.469 ca3_loadingbay DONT_REMOVE_OBJECT ca3_loadingbay // Door for Burning Desire house VAR_INT g_BD_DOOR CREATE_OBJECT CR1_DOOR 2352.8512 -1171.0266 26.9669 g_BD_DOOR SET_OBJECT_HEADING g_BD_DOOR 90.0000 SET_OBJECT_DYNAMIC g_BD_DOOR FALSE SET_OBJECT_COLLISION_DAMAGE_EFFECT g_BD_DOOR FALSE SET_OBJECT_PROOFS g_BD_DOOR TRUE TRUE TRUE TRUE TRUE DONT_REMOVE_OBJECT g_BD_DOOR // china town gate VAR_INT china_town_gate CREATE_OBJECT_NO_OFFSET ct_gatexr -2179.353 661.232 50.214 china_town_gate SET_OBJECT_COLLISION_DAMAGE_EFFECT china_town_gate FALSE DONT_REMOVE_OBJECT china_town_gate //area51 blast doors VAR_INT frontdoorr_a51 VAR_INT frontdoorl_a51 VAR_INT trapdoor_a51 VAR_INT launchdoor_a51 CREATE_OBJECT_NO_OFFSET a51_blastdoorR 215.941 1874.571 13.903 frontdoorr_a51 SET_OBJECT_HEADING frontdoorr_a51 0.0 CREATE_OBJECT_NO_OFFSET a51_blastdoorL 211.842 1874.571 13.903 frontdoorl_a51 SET_OBJECT_HEADING frontdoorl_a51 0.0 DONT_REMOVE_OBJECT frontdoorr_a51 DONT_REMOVE_OBJECT frontdoorl_a51 CREATE_OBJECT_NO_OFFSET a51_labdoor 297.766 1842.618 6.764 trapdoor_a51 DONT_REMOVE_OBJECT trapdoor_a51 CREATE_OBJECT a51_jetdoor 268.664 1884.06 15.925 launchdoor_a51 ROTATE_OBJECT launchdoor_a51 90.0 90.0 FALSE DONT_REMOVE_OBJECT launchdoor_a51 //san fran hub garage CHANGE_GARAGE_TYPE hbgdSFS GARAGE_FOR_SCRIPT_TO_OPEN_AND_CLOSE CHANGE_GARAGE_TYPE Ghostdr GARAGE_FOR_SCRIPT_TO_OPEN_AND_CLOSE // portacabins //ALLOCATE_SCRIPT_TO_OBJECT porta_cabin PORTAKABIN 100 // portakabins for construction site - removed after GARAGE2.sc (Demolition Mission) VAR_INT init_portakabin[6] VAR_FLOAT init_portakabin_x[6] init_portakabin_y[6] init_portakabin_z[6] init_portakabin_h[6] VAR_INT portakabin_num init_portakabin_x[0] = -2108.0000 init_portakabin_y[0] = 155.0000 init_portakabin_z[0] = 34.0488 init_portakabin_h[0] = 178.0000 init_portakabin_x[1] = -2089.0000 init_portakabin_y[1] = 172.0000 init_portakabin_z[1] = 34.0488 init_portakabin_h[1] = 267.0000 init_portakabin_x[2] = -2069.0000 init_portakabin_y[2] = 229.0000 init_portakabin_z[2] = 35.0215 init_portakabin_h[2] = 270.0000 init_portakabin_x[3] = -2077.0000 init_portakabin_y[3] = 271.0000 init_portakabin_z[3] = 33.7475 init_portakabin_h[3] = 0.0000 init_portakabin_x[4] = -2096.0000 init_portakabin_y[4] = 261.0000 init_portakabin_z[4] = 34.5808 init_portakabin_h[4] = 264.0000 init_portakabin_x[5] = -2129.0000 init_portakabin_y[5] = 306.0000 init_portakabin_z[5] = 33.7245 init_portakabin_h[5] = 0.0000 portakabin_num = 0 WHILE portakabin_num < 6 CREATE_OBJECT portakabin init_portakabin_x[portakabin_num] init_portakabin_y[portakabin_num] init_portakabin_z[portakabin_num] init_portakabin[portakabin_num] SET_OBJECT_HEADING init_portakabin[portakabin_num] init_portakabin_h[portakabin_num] SET_OBJECT_DYNAMIC init_portakabin[portakabin_num] FALSE DONT_REMOVE_OBJECT init_portakabin[portakabin_num] portakabin_num++ ENDWHILE //////DOOR FOR STORM FREIGHTER MISSION VAR_INT w5_storm_freighter_door CREATE_OBJECT freight_SFW_door -2468.141 1547.938 22.7 w5_storm_freighter_door DONT_REMOVE_OBJECT w5_storm_freighter_door //////Keycode door inside Mafia Casino VAR_INT h9_door_c CREATE_OBJECT_NO_OFFSET ab_casdorLok 2168.6438 1619.4300 1000.3000 h9_door_c SET_OBJECT_AREA_VISIBLE h9_door_c 1 SET_OBJECT_HEADING h9_door_c 270.0000 DONT_REMOVE_OBJECT h9_door_c //TRIP SKIP VARIABLE FOR SMOKE1 VAR_INT tw7_trip_skip_flag[2] tw7_trip_skip_flag[0] = 0 tw7_trip_skip_flag[1] = 0 ///////doors for riot2 mission VAR_INT riot2_door[15] //lookouts house 0 - no rotation CREATE_OBJECT ad_flatdoor 1833.36 -1995.45 12.5 riot2_door[0] SET_OBJECT_HEADING riot2_door[0] 90.0 DONT_REMOVE_OBJECT riot2_door[0] //lookouts house 1 - no rotation CREATE_OBJECT ad_flatdoor 1819.81 -1994.66 12.5 riot2_door[1] DONT_REMOVE_OBJECT riot2_door[1] //lookouts house 2 CREATE_OBJECT ad_flatdoor 1827.68 -1980.0 12.5 riot2_door[2] SET_OBJECT_HEADING riot2_door[2] 270.0 DONT_REMOVE_OBJECT riot2_door[2] //NW house 0 - no rotation CREATE_OBJECT ad_flatdoor 1851.84 -1990.67 12.5 riot2_door[3] DONT_REMOVE_OBJECT riot2_door[3] //NW house 1 CREATE_OBJECT ad_flatdoor 1867.29 -1984.96 12.5 riot2_door[4] SET_OBJECT_HEADING riot2_door[4] 270.0 DONT_REMOVE_OBJECT riot2_door[4] //NW house 2 - no rotation CREATE_OBJECT ad_flatdoor 1866.52 -1998.53 12.5 riot2_door[5] SET_OBJECT_HEADING riot2_door[5] 90.0 DONT_REMOVE_OBJECT riot2_door[5] //NE house 0 CREATE_OBJECT ad_flatdoor 1899.75 -1984.95 12.5 riot2_door[6] SET_OBJECT_HEADING riot2_door[6] 270.0 DONT_REMOVE_OBJECT riot2_door[6] //NE house 1 - no rotation CREATE_OBJECT ad_flatdoor 1914.39 -1992.82 12.5 riot2_door[7] SET_OBJECT_HEADING riot2_door[7] 180.0 DONT_REMOVE_OBJECT riot2_door[7] //NE house 2 - no rotation CREATE_OBJECT ad_flatdoor 1899.01 -1998.5 12.5 riot2_door[8] SET_OBJECT_HEADING riot2_door[8] 90.0 DONT_REMOVE_OBJECT riot2_door[8] //SE house 0 - no rotation CREATE_OBJECT ad_flatdoor 1900.89 -2020.11 12.5 riot2_door[9] DONT_REMOVE_OBJECT riot2_door[9] //SE house 1 - no rotation CREATE_OBJECT ad_flatdoor 1914.4 -2020.91 12.5 riot2_door[10] SET_OBJECT_HEADING riot2_door[10] 180.0 DONT_REMOVE_OBJECT riot2_door[10] //SE house 2 - no rotation CREATE_OBJECT ad_flatdoor 1906.54 -2035.52 12.5 riot2_door[11] SET_OBJECT_HEADING riot2_door[11] 90.0 DONT_REMOVE_OBJECT riot2_door[11] //SW house 0 - no rotation CREATE_OBJECT ad_flatdoor 1851.86 -2020.14 12.5 riot2_door[12] DONT_REMOVE_OBJECT riot2_door[12] //SW house 1 - no rotation CREATE_OBJECT ad_flatdoor 1865.42 -2020.89 12.5 riot2_door[13] SET_OBJECT_HEADING riot2_door[13] 180.0 DONT_REMOVE_OBJECT riot2_door[13] //SW house 2 - no rotation CREATE_OBJECT ad_flatdoor 1857.55 -2035.52 12.5 riot2_door[14] SET_OBJECT_HEADING riot2_door[14] 90.0 DONT_REMOVE_OBJECT riot2_door[14] // BRICK WALL FOR FINALE VAR_INT carterwall CREATE_OBJECT_NO_OFFSET imy_shash_wall 2522.008 -1272.93 35.609 carterwall SET_OBJECT_COLLISION_DAMAGE_EFFECT carterwall FALSE FREEZE_OBJECT_POSITION carterwall TRUE DONT_REMOVE_OBJECT carterwall //VAR_INT cement_hole // used in the building site in san fran // *********************************************************************************** // // CRANE STUFF - Neil // _____ // / \ // o=================== =======[][]= // | \_____/ [][] // | IxI // | IxI // | IxI // [ ] IxI // IxI // IxI // IxI // IxI // [ ] // // *********************************************************************************** // SF BUILDING SITE CRANE --------------------------- VAR_INT sf_crane1_base sf_crane1_arm sf_crane1_trolley VAR_INT sf_crane1_base_LOD sf_crane1_arm_LOD // main bits CREATE_OBJECT_NO_OFFSET TWRCRANE_M_04 -2080.441 256.015 66.869 sf_crane1_base DONT_REMOVE_OBJECT sf_crane1_base CREATE_OBJECT_NO_OFFSET TWRCRANE_M_01 -2080.441 256.007 99.408 sf_crane1_arm DONT_REMOVE_OBJECT sf_crane1_arm CREATE_OBJECT_NO_OFFSET TWRCRANE_M_02 -2080.441 296.46 102.861 sf_crane1_trolley DONT_REMOVE_OBJECT sf_crane1_trolley // lods GET_OBJECT_COORDINATES sf_crane1_base x y z GET_OBJECT_HEADING sf_crane1_base heading CREATE_OBJECT_NO_OFFSET LODCrane_M_04 x y z sf_crane1_base_LOD SET_OBJECT_HEADING sf_crane1_base_LOD heading DONT_REMOVE_OBJECT sf_crane1_base_LOD GET_OBJECT_COORDINATES sf_crane1_arm x y z GET_OBJECT_HEADING sf_crane1_arm heading CREATE_OBJECT_NO_OFFSET LODCrane_M_01 x y z sf_crane1_arm_LOD SET_OBJECT_HEADING sf_crane1_arm_LOD heading DONT_REMOVE_OBJECT sf_crane1_arm_LOD CONNECT_LODS sf_crane1_base sf_crane1_base_LOD CONNECT_LODS sf_crane1_arm sf_crane1_arm_LOD // MAGNO CRANE ----------------------------------------- VAR_INT magno_base magno_cabin magno_arm VAR_INT magno_base_LOD magno_cabin_LOD magno_arm_LOD VAR_FLOAT magno_base_x magno_base_y magno_base_z VAR_FLOAT magno_cabin_h magno_arm_h magno_arm_rotate_y // main bits CREATE_OBJECT_NO_OFFSET MAGNOCRANE_01 -1547.9777 123.9883 26.9332 magno_base SET_OBJECT_HEADING magno_base 45.0 DONT_REMOVE_OBJECT magno_base SET_OBJECT_VELOCITY magno_base 0.0 0.0 0.0 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS magno_base 0.0 0.0 0.0 x y z CREATE_OBJECT_NO_OFFSET MAGNOCRANE_02 x y z magno_cabin DONT_REMOVE_OBJECT magno_cabin SET_OBJECT_HEADING magno_cabin 140.0 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS magno_cabin 0.0 -2.185 8.51 x y z GET_OBJECT_HEADING magno_cabin heading CREATE_OBJECT_NO_OFFSET MAGNOCRANE_03 x y z magno_arm SET_OBJECT_ROTATION magno_arm 15.0 0.0 heading DONT_REMOVE_OBJECT magno_arm // lods GET_OBJECT_COORDINATES magno_base x y z GET_OBJECT_HEADING magno_base heading CREATE_OBJECT_NO_OFFSET LODnoCrane_01 x y z magno_base_LOD SET_OBJECT_HEADING magno_base_LOD heading DONT_REMOVE_OBJECT magno_base_LOD GET_OBJECT_COORDINATES magno_cabin x y z GET_OBJECT_HEADING magno_cabin heading CREATE_OBJECT_NO_OFFSET LODnoCrane_02 x y z magno_cabin_LOD SET_OBJECT_HEADING magno_cabin_LOD heading DONT_REMOVE_OBJECT magno_cabin_LOD GET_OBJECT_COORDINATES magno_arm x y z GET_OBJECT_HEADING magno_arm heading CREATE_OBJECT_NO_OFFSET LODnoCrane_03 x y z magno_arm_LOD SET_OBJECT_HEADING magno_arm_LOD heading SET_OBJECT_ROTATION magno_arm_LOD 15.0 0.0 heading DONT_REMOVE_OBJECT magno_arm_LOD CONNECT_LODS magno_base magno_base_LOD CONNECT_LODS magno_cabin magno_cabin_LOD CONNECT_LODS magno_arm magno_arm_LOD // quarry crane VAR_FLOAT arm_rotate_y VAR_INT quarry_base quarry_stand quarry_arm CREATE_OBJECT_NO_OFFSET QUARRY_CRANEBASE 709.45 915.93 -19.66 quarry_base SET_OBJECT_HEADING quarry_base 135.0 DONT_REMOVE_OBJECT quarry_base GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS quarry_base 0.0 0.0 4.0689 x y z GET_OBJECT_HEADING quarry_base heading CREATE_OBJECT_NO_OFFSET QUARRY_CRANE x y z quarry_stand SET_OBJECT_HEADING quarry_stand heading DONT_REMOVE_OBJECT quarry_stand GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS quarry_stand 0.0 0.0 1.0206 x y z GET_OBJECT_HEADING quarry_stand heading CREATE_OBJECT_NO_OFFSET QUARRY_CRANEARM x y z quarry_arm SET_OBJECT_HEADING quarry_arm heading DONT_REMOVE_OBJECT quarry_arm arm_rotate_y = 45.0 SET_OBJECT_ROTATION quarry_arm 0.0 arm_rotate_y heading // START_NEW_SCRIPT crane3_script quarry_base quarry_stand quarry_arm // BUILDING SITE CRANE IN LAS VEGAS - same as construction site crane in san fran VAR_INT lv_base lv_arm lv_trolley VAR_INT lv_base_LOD lv_arm_LOD // main bits CREATE_OBJECT_NO_OFFSET TWRCRANE_M_04 2399.202 1879.139 37.55 lv_base SET_OBJECT_HEADING lv_base 0.0 DONT_REMOVE_OBJECT lv_base GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS lv_base 0.0 0.0 32.5210 x y z GET_OBJECT_HEADING lv_base heading CREATE_OBJECT_NO_OFFSET TWRCRANE_M_01 x y z lv_arm SET_OBJECT_HEADING lv_arm heading DONT_REMOVE_OBJECT lv_arm GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS lv_arm 0.0 20.0 3.789 x y z GET_OBJECT_HEADING lv_arm heading CREATE_OBJECT_NO_OFFSET TWRCRANE_M_02 x y z lv_trolley SET_OBJECT_HEADING lv_trolley heading DONT_REMOVE_OBJECT lv_trolley // lods GET_OBJECT_COORDINATES lv_base x y z GET_OBJECT_HEADING lv_base heading CREATE_OBJECT_NO_OFFSET LODCrane_M_04 x y z lv_base_LOD SET_OBJECT_HEADING lv_base_LOD heading DONT_REMOVE_OBJECT lv_base_LOD GET_OBJECT_COORDINATES lv_arm x y z GET_OBJECT_HEADING lv_arm heading CREATE_OBJECT_NO_OFFSET LODCrane_M_01 x y z lv_arm_LOD SET_OBJECT_HEADING lv_arm_LOD heading DONT_REMOVE_OBJECT lv_arm_LOD CONNECT_LODS lv_base lv_base_LOD CONNECT_LODS lv_arm lv_arm_LOD // *********************************************************************************************** // // ------------- // | [****] :: | KEYPADS - Neil // | | // | A B C | Used for opening doors. // | D E F | They operate exactly the same way as 'Mastermind' // ------------- // // *********************************************************************************************** // //VAR_INT kpad_heist //CREATE_OBJECT_NO_OFFSET KMB_KEYPAD 2148.9954 1604.7000 1006.5000 kpad_heist //DONT_REMOVE_OBJECT kpad_heist //SET_OBJECT_HEADING kpad_heist 0.0 //START_NEW_SCRIPT kpad_script kpad_heist 0 1 2 3 // last four numbers are the combination // VAR_INT kpad_ngw // CREATE_OBJECT_NO_OFFSET KMB_KEYPAD 2774.1479 -2423.2297 14.2684 kpad_ngw // SET_OBJECT_HEADING kpad_ngw 90.0 // START_NEW_SCRIPT kpad_script kpad_ngw 0 1 2 3 // // national guard - warehouse 1 keypad // IF NOT DOES_OBJECT_EXIST keypad[1] // // create numbers for keypad first - so they get drawn last // CREATE_OBJECT_NO_OFFSET KEYPAD_LETTERS 2174.896 -2258.914 15.0 keypad_numbers[1] // SET_OBJECT_HEADING keypad_numbers[1] 215.23 // DONT_REMOVE_OBJECT keypad_numbers[1] // SET_OBJECT_COLLISION keypad_numbers[1] FALSE // SET_OBJECT_DYNAMIC keypad_numbers[1] FALSE // // CREATE_OBJECT_NO_OFFSET KMB_KEYPAD 2174.896 -2258.914 15.0 keypad[1] // SET_OBJECT_HEADING keypad[1] 215.23 // DONT_REMOVE_OBJECT keypad[1] // SET_OBJECT_COLLISION keypad[1] FALSE // SET_OBJECT_DYNAMIC keypad[1] FALSE // // key_comb_A[1] = 0 // key_comb_B[1] = 0 // key_comb_C[1] = 0 // key_comb_D[1] = 0 // ENDIF // // // LA police impound // IF NOT DOES_OBJECT_EXIST keypad[2] // // create numbers for keypad first - so they get drawn last // CREATE_OBJECT_NO_OFFSET KEYPAD_LETTERS 1543.218 -1660.918 6.98 keypad_numbers[2] // SET_OBJECT_HEADING keypad_numbers[2] 180.0 // DONT_REMOVE_OBJECT keypad_numbers[2] // SET_OBJECT_COLLISION keypad_numbers[2] FALSE // SET_OBJECT_DYNAMIC keypad_numbers[2] FALSE // // CREATE_OBJECT_NO_OFFSET KMB_KEYPAD 1543.218 -1660.918 6.98 keypad[2] // SET_OBJECT_HEADING keypad[2] 180.0 // DONT_REMOVE_OBJECT keypad[2] // SET_OBJECT_COLLISION keypad[2] FALSE // SET_OBJECT_DYNAMIC keypad[2] FALSE // // key_comb_A[2] = 5 // key_comb_B[2] = 7 // key_comb_C[2] = 8 // key_comb_D[2] = 9 // ENDIF // // // casino heist - heist8 combination (1234) // IF NOT DOES_OBJECT_EXIST keypad[3] // // create numbers for keypad first - so they get drawn last // CREATE_OBJECT_NO_OFFSET KEYPAD_LETTERS 2274.333 1718.620 8.407 keypad_numbers[3] // SET_OBJECT_HEADING keypad_numbers[3] 180.0 // DONT_REMOVE_OBJECT keypad_numbers[3] // SET_OBJECT_COLLISION keypad_numbers[3] FALSE // SET_OBJECT_DYNAMIC keypad_numbers[3] FALSE // // CREATE_OBJECT_NO_OFFSET KMB_KEYPAD 2274.333 1718.620 8.407 keypad[3] // SET_OBJECT_HEADING keypad[3] 180.0 // DONT_REMOVE_OBJECT keypad[3] // SET_OBJECT_COLLISION keypad[3] FALSE // SET_OBJECT_DYNAMIC keypad[3] FALSE // // key_comb_A[3] = 0 // * combination * // key_comb_B[3] = 1 // key_comb_C[3] = 2 // key_comb_D[3] = 3 // ENDIF // // // plastic mouldings factory ( casino3 ) combination CFAC // IF NOT DOES_OBJECT_EXIST keypad[4] // // create numbers for keypad first - so they get drawn last // CREATE_OBJECT_NO_OFFSET KEYPAD_LETTERS 1093.8585 2076.7827 15.58 keypad_numbers[4] // SET_OBJECT_HEADING keypad_numbers[4] 0.0 // DONT_REMOVE_OBJECT keypad_numbers[4] // SET_OBJECT_COLLISION keypad_numbers[4] FALSE // SET_OBJECT_DYNAMIC keypad_numbers[4] FALSE // // CREATE_OBJECT_NO_OFFSET KMB_KEYPAD 1093.8585 2076.7827 15.58 keypad[4] // SET_OBJECT_HEADING keypad[4] 0.0 // DONT_REMOVE_OBJECT keypad[4] // SET_OBJECT_COLLISION keypad[4] FALSE // SET_OBJECT_DYNAMIC keypad[4] FALSE // // key_comb_A[4] = 2 // * combination * // key_comb_B[4] = 5 // key_comb_C[4] = 0 // key_comb_D[4] = 2 // ENDIF //VAR_INT wheeloffortune //CREATE_OBJECT_NO_OFFSET WHEEL_O_FORTUNE 2473.7759 -1676.4655 13.3498 wheeloffortune //WAIT 1000 //SET_OBJECT_HEADING wheeloffortune 335.4150 //DONT_REMOVE_OBJECT wheeloffortune //START_NEW_SCRIPT wof_script wheeloffortune //VAR_INT dock_gate1 //CREATE_OBJECT_NO_OFFSET electricgate 2234.123 -2215.985 12.67 dock_gate1 //SET_OBJECT_HEADING dock_gate1 134.0 //DONT_REMOVE_OBJECT dock_gate1 // //VAR_INT dock_gate2 //CREATE_OBJECT_NO_OFFSET electricgate 2233.937 -2215.798 12.637 dock_gate2 //SET_OBJECT_HEADING dock_gate2 312.0 //DONT_REMOVE_OBJECT dock_gate2 // *********************************************************************************************** // // KEVINS SAFE TUMBLER // // // // // // // *********************************************************************************************** /* REQUEST_MODEL safe_mock REQUEST_MODEL safe_tumbler WHILE NOT HAS_MODEL_LOADED safe_mock OR NOT HAS_MODEL_LOADED safe_tumbler WAIT 0 ENDWHILE */ //g1_flag_finished_with_safe_safetum_safetum = 0 /* big_safe_x_safetum = 1286.0831 big_safe_y_safetum = 274.8189 big_safe_z_safetum = -23.7070 big_safe_heading_safetum = 350.0 big_tumbler_x_safetum = 1286.1917 big_tumbler_y_safetum = 274.1938 big_tumbler_z_safetum = -21.7 big_tumbler_heading_safetum = 0.0 IF NOT DOES_OBJECT_EXIST otb_big_safe_safetum CREATE_OBJECT safe_mock big_safe_x_safetum big_safe_y_safetum big_safe_z_safetum otb_big_safe_safetum SET_OBJECT_HEADING otb_big_safe_safetum big_safe_heading_safetum DONT_REMOVE_OBJECT otb_big_safe_safetum ENDIF IF NOT DOES_OBJECT_EXIST big_tumbler_safetum CREATE_OBJECT safe_tumbler big_tumbler_x_safetum big_tumbler_y_safetum big_tumbler_z_safetum big_tumbler_safetum DONT_REMOVE_OBJECT big_tumbler_safetum SET_OBJECT_COORDINATES big_tumbler_safetum big_tumbler_x_safetum big_tumbler_y_safetum big_tumbler_z_safetum SET_OBJECT_ROTATION big_tumbler_safetum 0.0 0.0 0.0 SET_OBJECT_VELOCITY big_tumbler_safetum 0.0 0.0 0.0 GET_OBJECT_HEADING big_tumbler_safetum big_tumbler_heading_safetum SET_OBJECT_COLLISION big_tumbler_safetum FALSE SET_OBJECT_DYNAMIC big_tumbler_safetum FALSE ENDIF WAIT 0 */ // ************************************* SHOP DATA ***************************************** // ***************************************************************************************** VAR_INT flag_attacked_keeper_food // flag to say guy has been attacked VAR_INT flag_attacked_barber VAR_INT flag_food_message VAR_INT players_money VAR_FLOAT temp_shopX temp_shopY temp_shopZ temp_shopX = 0.0 temp_shopY = 0.0 temp_shopZ = 0.0 players_money = 0 flag_food_message = 0 // **************************************** CAR MODING GARAGES ************************************ // ************************************************************************************************ // LA Normal Cars CHANGE_GARAGE_TYPE bodLAwN GARAGE_OPEN_FOR_NORMAL_CARS // LA LowRiders (Neils Lowrider garage) CHANGE_GARAGE_TYPE modlast GARAGE_OPEN_FOR_LOW_RIDERS // San Fran Normal Cars CHANGE_GARAGE_TYPE mdsSFSe GARAGE_OPEN_FOR_NORMAL_CARS // San Fran Street Racer Garage CHANGE_GARAGE_TYPE mds1SFS GARAGE_OPEN_FOR_STREET_RACERS // Vegas Normal Cars CHANGE_GARAGE_TYPE vEcmod GARAGE_OPEN_FOR_NORMAL_CARS // GARAGE LOCATES FOR PLAYER TO STOP IN // LA normal garage CONST_FLOAT LS_NR_GARAGEX 1042.013 // 1042.263 CONST_FLOAT LS_NR_GARAGEY -1019.927 // -1013.566 CONST_FLOAT LS_NR_GARAGEZ 31.127 // LA lowrider garage Old one under bridge (Neils Mission one) CONST_FLOAT LS_LR_GARAGEX 2645.112 CONST_FLOAT LS_LR_GARAGEY -2045.745 CONST_FLOAT LS_LR_GARAGEZ 12.607 // San Fran normal garage CONST_FLOAT SF_NR_GARAGEX -1935.528 CONST_FLOAT SF_NR_GARAGEY 247.029 CONST_FLOAT SF_NR_GARAGEZ 33.561 // San Fran Street Racer Garage CONST_FLOAT SF_SR_GARAGEX -2723.845 CONST_FLOAT SF_SR_GARAGEY 217.804 CONST_FLOAT SF_SR_GARAGEZ 3.585 // Vegas normal garage CONST_FLOAT LV_NR_GARAGEX 2387.075 CONST_FLOAT LV_NR_GARAGEY 1050.511 CONST_FLOAT LV_NR_GARAGEZ 9.812 // used for help messages for nitros VAR_INT flag_1st_time_nitro_shop flag_1st_time_nitro_shop = 0 // ***************************BRIDGE BLOCKS*********************************** //STARFISH GATES /* VAR_INT strike_gate star_gate_1 star_gate_2 CREATE_OBJECT_NO_OFFSET comgate1closed -715.082 -489.689 12.549 star_gate_1 DONT_REMOVE_OBJECT star_gate_1 CREATE_OBJECT_NO_OFFSET comgate2closed -181.451 -472.61 11.353 star_gate_2 SET_OBJECT_HEADING star_gate_2 102.0 DONT_REMOVE_OBJECT star_gate_2 */ //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// // *************************************SA CAR GENERATORS*************************** VAR_INT gen_car1 gen_car2 gen_car3 gen_car4 gen_car5 gen_car6 gen_car7 gen_car8 gen_car9 gen_car10 VAR_INT gen_car12 gen_car13 gen_car14 gen_car15 gen_car17 gen_car18 gen_car19 gen_car20 tank_gen1 VAR_INT gen_car21 gen_car22 VAR_INT gen_car51 VAR_INT badlands_car_gen highstakes_car_gen farm_gen1 farm_gen2 farm_gen3 //CREATE_CAR_GENERATOR Remap1 Remap2 ParkedFlag ChanceOfCarAlarm ChanceOfLocked MinDelay MaxDelay CarGenID //LA sweet_carX = 2508.16 sweet_carY = -1666.47 sweet_carZ = 13.0 sweet_carH = 16.0 ryder_carX = 2473.53 ryder_carY = -1690.21 ryder_carZ = 13.0 ryder_carH = 0.0 var_int nascar_reward_cargen1 CREATE_CAR_GENERATOR 2692.0286 -1674.0243 9.4656 178.8279 MONSTERA -1 -1 TRUE 0 0 0 10000 nascar_reward_cargen1 // Outside LA stadium SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR nascar_reward_cargen1 TRUE SWITCH_CAR_GENERATOR nascar_reward_cargen1 0 var_int nascar_reward_cargen2 CREATE_CAR_GENERATOR 2676.6953 -1673.7561 9.4038 178.8279 HOTRING -1 -1 TRUE 0 0 0 10000 nascar_reward_cargen2 // Outside LA stadium SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR nascar_reward_cargen2 TRUE SWITCH_CAR_GENERATOR nascar_reward_cargen2 0 var_int dirtrack_reward_cargen CREATE_CAR_GENERATOR 1104.9323 1614.8076 12.5546 85.6435 BFINJECT -1 -1 TRUE 0 0 0 10000 dirtrack_reward_cargen // Outside LA stadium SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR dirtrack_reward_cargen TRUE SWITCH_CAR_GENERATOR dirtrack_reward_cargen 0 CREATE_CAR_GENERATOR -1460.8699 -1566.7368 101.0579 2.0 SANCHEZ -1 -1 FALSE 0 0 0 10000 farm_gen1 // Farm car //HUB SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR farm_gen1 TRUE SWITCH_CAR_GENERATOR farm_gen1 101 CREATE_CAR_GENERATOR -1446.2390 -1494.7314 101.0514 6.0 WALTON -1 -1 FALSE 0 0 0 10000 farm_gen2 // Farm car //HUB SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR farm_gen2 TRUE SWITCH_CAR_GENERATOR farm_gen2 101 CREATE_CAR_GENERATOR -1439.6428 -1576.8230 101.0578 264.1183 TRACTOR -1 -1 FALSE 0 0 0 10000 farm_gen3 // Farm car //HUB SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR farm_gen3 TRUE SWITCH_CAR_GENERATOR farm_gen3 101 CREATE_CAR_GENERATOR_WITH_PLATE ryder_carX ryder_carY ryder_carZ ryder_carH PICADOR 84 84 FALSE 0 0 0 10000 &_SHERM__ gen_car6 // Ryders car //HUB SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR gen_car6 TRUE SWITCH_CAR_GENERATOR gen_car6 101 CREATE_CAR_GENERATOR_WITH_PLATE sweet_carX sweet_carY sweet_carZ sweet_carH GREENWOO 59 34 FALSE 0 0 0 10000 &GROVE4L_ gen_car7 // Sweets car //HUB SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR gen_car7 TRUE SWITCH_CAR_GENERATOR gen_car7 101 CREATE_CAR_GENERATOR 2412.52 -1326.49 23.74 177.92 BMX -1 -1 FALSE 0 0 0 10000 gen_car9 // BMX for intro SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR gen_car9 TRUE SWITCH_CAR_GENERATOR gen_car9 101 CREATE_CAR_GENERATOR 2445.5 -1340.8 23.5 180.0 CLOVER -1 -1 FALSE 0 0 0 10000 gen_car8 //Mexican area SWITCH_CAR_GENERATOR gen_car8 101 CREATE_CAR_GENERATOR 2499.18 -1648.26 13.0 158.61 BMX -1 -1 FALSE 0 0 0 10000 gen_car10 // BMX //HUB SWITCH_CAR_GENERATOR gen_car10 101 // lowrider car gen - beside the lowrider garage VAR_INT sw6_car_gen1 CREATE_CAR_GENERATOR 2685.9807 -2016.2097 12.5501 0.3370 SAVANNA -1 -1 TRUE 0 0 0 10000 sw6_car_gen1 // lowrider SWITCH_CAR_GENERATOR sw6_car_gen1 0 // High Stakes car gen - next to Cesar's place CREATE_CAR_GENERATOR 1772.0959 -2125.1028 13.0469 0.3441 BLADE -1 -1 FALSE 0 0 0 10000 highstakes_car_gen SWITCH_CAR_GENERATOR highstakes_car_gen 101 //COUNTRYSIDE // Badlands car gen - Sanchez next to Cesar's trailer in Angel Pine CREATE_CAR_GENERATOR -2048.8560 -2521.2756 31.1250 171.0232 SANCHEZ -1 -1 FALSE 0 0 0 10000 badlands_car_gen SWITCH_CAR_GENERATOR badlands_car_gen 101 //SAN FRAN //steal mission car generators VAR_INT steal_car_cargen1 steal_car_cargen2 steal_car_cargen3 steal_car_cargen4 steal_car_cargen5 CREATE_CAR_GENERATOR -1956.3 297.7 34.3 64.8 URANUS -1 -1 TRUE 0 0 0 10000 steal_car_cargen1 CREATE_CAR_GENERATOR -1952.6 265.7 39.9 292.8 ELEGY -1 -1 TRUE 0 0 0 10000 steal_car_cargen2 CREATE_CAR_GENERATOR -1957.7 277.0 34.3 133.4 SULTAN -1 -1 TRUE 0 0 0 10000 steal_car_cargen3 CREATE_CAR_GENERATOR -1952.8 258.8 39.9 259.1 SAVANNA -1 -1 TRUE 0 0 0 10000 steal_car_cargen4 CREATE_CAR_GENERATOR -1950.5 259.7 34.3 53.8 STRATUM -1 -1 TRUE 0 0 0 10000 steal_car_cargen5 SWITCH_CAR_GENERATOR steal_car_cargen1 0 SWITCH_CAR_GENERATOR steal_car_cargen2 0 SWITCH_CAR_GENERATOR steal_car_cargen3 0 SWITCH_CAR_GENERATOR steal_car_cargen4 0 SWITCH_CAR_GENERATOR steal_car_cargen5 0 SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR steal_car_cargen1 TRUE SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR steal_car_cargen2 TRUE SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR steal_car_cargen3 TRUE SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR steal_car_cargen4 TRUE SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR steal_car_cargen5 TRUE //VEGAS //CREATE_CAR_GENERATOR 2499.18 -1648.26 13.0 158.61 BMX -1 -1 FALSE 0 0 0 10000 gen_car10 // BMX //HUB //SWITCH_CAR_GENERATOR gen_car10 101 //  stunt.sc stuff  VAR_INT done_bmx_stunt_progress done_bmx_stunt_progress = 0 VAR_INT done_nrg500_stunt_progress done_nrg500_stunt_progress = 0 VAR_INT stunt_best_time[2] stunt_best_time[0] = 999999999 stunt_best_time[1] = 999999999 //skate park LA VAR_INT stunt_bmx1_cargen VAR_FLOAT stunt_bmx1_x stunt_bmx1_y stunt_bmx1_z stunt_bmx1_x = 1946.0896 stunt_bmx1_y = -1380.7202 stunt_bmx1_z = 18.0 CREATE_CAR_GENERATOR stunt_bmx1_x stunt_bmx1_y stunt_bmx1_z 88.1761 BMX -1 -1 TRUE FALSE FALSE 0 10000 stunt_bmx1_cargen SWITCH_CAR_GENERATOR stunt_bmx1_cargen 101 //ship building yard bowl SF VAR_INT stunt_nrg500_cargen VAR_FLOAT stunt_nrg500_x stunt_nrg500_y stunt_nrg500_z stunt_nrg500_x = -1696.5312 stunt_nrg500_y = 77.7192 stunt_nrg500_z = 3.5547 CREATE_CAR_GENERATOR stunt_nrg500_x stunt_nrg500_y stunt_nrg500_z 312.9365 nrg500 -1 -1 TRUE FALSE FALSE 0 10000 stunt_nrg500_cargen SWITCH_CAR_GENERATOR stunt_nrg500_cargen 101 //  stunt.sc stuff  // ******************************* CAR GENERATORS ******************************************** // FIRE TRUCKS VAR_INT fire_truck1 fire_truck1b fire_truck2 fire_truck3 CREATE_CAR_GENERATOR -2057.0 58.0 28.0 90.0 firela -1 -1 FALSE 0 0 0 10000 fire_truck1 // san fran SWITCH_CAR_GENERATOR fire_truck1 101 CREATE_CAR_GENERATOR -2057.0 64.0 28.0 90.0 FIRETRUK -1 -1 FALSE 0 0 0 10000 fire_truck1b // san fran SWITCH_CAR_GENERATOR fire_truck1b 101 CREATE_CAR_GENERATOR 1763.8245 2075.7566 9.9093 179.4753 FIRETRUK -1 -1 FALSE 0 0 0 10000 fire_truck2 // vegas SWITCH_CAR_GENERATOR fire_truck2 101 CREATE_CAR_GENERATOR 1751.5117 -1455.1016 12.5547 263.5589 FIRETRUK -1 -1 FALSE 0 0 0 10000 fire_truck3 // LA SWITCH_CAR_GENERATOR fire_truck3 101 // AMBULANCE VAR_INT ambulance_1 ambulance_2 ambulance_3 ambulance_4 ambulance_5 ambulance_6 CREATE_CAR_GENERATOR 2033.8879 -1432.6698 16.6453 177.8290 AMBULAN -1 -1 FALSE FALSE 0 0 10000 ambulance_1 SWITCH_CAR_GENERATOR ambulance_1 101 CREATE_CAR_GENERATOR 1178.0477 -1338.1754 13.4050 269.4923 AMBULAN -1 -1 FALSE FALSE 0 0 10000 ambulance_2 SWITCH_CAR_GENERATOR ambulance_2 101 CREATE_CAR_GENERATOR -303.7814 1032.3256 19.0860 268.5016 AMBULAN -1 -1 FALSE FALSE 0 0 10000 ambulance_3 SWITCH_CAR_GENERATOR ambulance_3 101 CREATE_CAR_GENERATOR -1507.1642 2525.4553 55.1875 358.5728 AMBULAN -1 -1 FALSE FALSE 0 0 10000 ambulance_4 SWITCH_CAR_GENERATOR ambulance_4 101 CREATE_CAR_GENERATOR 1229.6648 297.6883 19.0547 154.9553 AMBULAN -1 -1 FALSE FALSE 0 0 10000 ambulance_5 SWITCH_CAR_GENERATOR ambulance_5 101 CREATE_CAR_GENERATOR -2202.5195 -2315.9856 30.1172 319.6815 AMBULAN -1 -1 FALSE FALSE 0 0 10000 ambulance_6 SWITCH_CAR_GENERATOR ambulance_6 101 var_int catalinas_cargen CREATE_CAR_GENERATOR 886.3782 -25.6671 63.2440 157.6212 BUFFALO -1 -1 TRUE FALSE FALSE 0 10000 catalinas_cargen //catalinas hideout shack SWITCH_CAR_GENERATOR catalinas_cargen 101 CREATE_CAR_GENERATOR mountbX mountbY mountbZ 206.39 mtbike -1 -1 TRUE 0 0 0 10000 gen_car12 // Mountain Bike SWITCH_CAR_GENERATOR gen_car12 101 CREATE_CAR_GENERATOR 687.3733 890.6700 -40.4285 35.1400 DUMPER -1 -1 TRUE 0 0 0 10000 gen_car1 // Dumper truck SWITCH_CAR_GENERATOR gen_car1 0 CREATE_CAR_GENERATOR 620.8820 861.2452 -43.9534 298.7428 DOZER -1 -1 TRUE 0 0 0 10000 gen_car2 // Bulldozer SWITCH_CAR_GENERATOR gen_car2 0 CREATE_CAR_GENERATOR 623.3402 887.0944 -43.5625 347.2967 SANCHEZ -1 -1 TRUE 0 0 0 10000 gen_car51 // Quarry dirtbike SWITCH_CAR_GENERATOR gen_car51 101 //CREATE_CAR_GENERATOR 2490.84 1723.72 10.38 158.61 PIZZABOY -1 -1 TRUE 0 0 0 10000 gen_car40 // pizzaboy vegas //SWITCH_CAR_GENERATOR gen_car40 101 CREATE_CAR_GENERATOR -2486.0457 59.1840 24.8284 180.0 SANCHEZ -1 -1 TRUE 0 0 0 10000 gen_car3 // Courier //back alleyway San fran SWITCH_CAR_GENERATOR gen_car3 101 CREATE_CAR_GENERATOR pimpX pimpY pimpZ 270.0 BROADWAY 1 5 TRUE 0 0 0 10000 gen_car5 // PIMP SWITCH_CAR_GENERATOR gen_car5 101 CREATE_CAR_GENERATOR hitchX hitchY hitchZ 180.0 SADLER 51 4 FALSE 0 0 0 10000 gen_car4 // hitchhiker SWITCH_CAR_GENERATOR gen_car4 101 //Robsons Food Mart ( Commerce LA ), bmx can be replaced if it’s unpopular. CREATE_CAR_GENERATOR cour1X cour1Y cour1Z 53.1 BMX -1 -1 TRUE 0 0 0 10000 gen_car20 // Courier SWITCH_CAR_GENERATOR gen_car20 101 //By Hippy Shopper in SF, model needs to be a Freeway as it’s powerful enough to get up hills easily. CREATE_CAR_GENERATOR cour2X cour2Y cour2Z 42.0 FREEWAY -1 -1 TRUE 0 0 0 10000 gen_car21 // Courier SWITCH_CAR_GENERATOR gen_car21 101 //By Burger Shop in LV, Vegas is flat so the Faggio handles it quite easily CREATE_CAR_GENERATOR cour3X cour3Y cour3Z 183.4 FAGGIO -1 -1 TRUE 0 0 0 10000 gen_car22 // Courier SWITCH_CAR_GENERATOR gen_car22 101 CREATE_CAR_GENERATOR 2216.9023 -1160.4034 24.7265 270.8013 GREENWOO -1 -1 FALSE 0 0 0 10000 gen_car13 //at motel for motel deal CREATE_CAR_GENERATOR 2216.9023 -1160.4034 24.7265 270.8013 GREENWOO -1 -1 FALSE 0 0 0 10000 gen_car14 //at motel for motel deal CREATE_CAR_GENERATOR 2229.0015 -1173.7983 24.7331 90.5569 BMX -1 -1 FALSE 0 0 0 10000 gen_car15 //at the end of the alley for motel deal CREATE_CAR_GENERATOR 2251.0281 -1788.6610 12.7625 358.9591 BOXBURG -1 -1 TRUE 0 0 0 10000 gen_car19 //Van for Burglay LA SWITCH_CAR_GENERATOR gen_car19 101 CREATE_CAR_GENERATOR -2118.1707 -4.0948 35.0203 270.1420 BOXBURG -1 -1 TRUE 0 0 0 10000 gen_car18 //Van for Burglay SAN FRAN SWITCH_CAR_GENERATOR gen_car18 101 CREATE_CAR_GENERATOR 2596.7471 1444.2452 10.3203 178.2712 BOXBURG -1 -1 TRUE 0 0 0 10000 gen_car17 //Van for Burglay VEGAS SWITCH_CAR_GENERATOR gen_car17 101 // GIRLFRIEND CAR GENERATORS VAR_INT iGFLockedCarGenerator[6] iGFUnlockedCarGenerator[6] //--- Locked version of the cars CREATE_CAR_GENERATOR 2408.1562 -1719.4630 13.6665 0.5881 HUSTLER 83 1 TRUE 0 100 0 10000 iGFLockedCarGenerator[COOCHIE] CREATE_CAR_GENERATOR -1778.1777 1207.0745 25.1194 91.9357 MONSTERB -1 -1 TRUE 0 100 0 10000 iGFLockedCarGenerator[MICHELLE] CREATE_CAR_GENERATOR -1399.7174 2628.5898 55.7823 271.7941 COPCARRU -1 -1 TRUE 0 100 0 10000 iGFLockedCarGenerator[BARBARA] CREATE_CAR_GENERATOR -379.5 -1443.1154 25.7266 88.9244 BANDITO -1 -1 TRUE 0 100 0 10000 iGFLockedCarGenerator[KYLIE] CREATE_CAR_GENERATOR -2572.0398 1148.5645 55.7333 337.8434 ROMERO 1 1 TRUE 0 100 0 10000 iGFLockedCarGenerator[SUZIE] CREATE_CAR_GENERATOR 2028.4459 2731.1021 10.53 268.9940 CLUB 126 1 TRUE 0 100 0 10000 iGFLockedCarGenerator[MILLIE] //---Unlocked version of the cars CREATE_CAR_GENERATOR_WITH_PLATE 2408.1562 -1719.4630 13.6665 0.5881 HUSTLER 83 1 TRUE 0 0 0 10000 HOMEGIRL iGFUnlockedCarGenerator[COOCHIE] CREATE_CAR_GENERATOR_WITH_PLATE -1778.1777 1207.0745 25.1194 91.9357 MONSTERB -1 -1 TRUE 0 0 0 10000 &__NOS___ iGFUnlockedCarGenerator[MICHELLE] CREATE_CAR_GENERATOR_WITH_PLATE -1399.7174 2628.5898 55.7823 271.7941 COPCARRU -1 -1 TRUE 0 0 0 10000 &_CUFFS__ iGFUnlockedCarGenerator[BARBARA] CREATE_CAR_GENERATOR_WITH_PLATE -379.5 -1443.1154 25.7266 88.9244 BANDITO -1 -1 TRUE 0 0 0 10000 FULLAUTO iGFUnlockedCarGenerator[KYLIE] CREATE_CAR_GENERATOR_WITH_PLATE -2572.0398 1148.5645 55.7333 337.8434 ROMERO 1 1 TRUE 0 0 0 10000 &_TRAUMA_ iGFUnlockedCarGenerator[SUZIE] CREATE_CAR_GENERATOR_WITH_PLATE 2028.4459 2731.1021 10.53 268.9940 CLUB 126 1 TRUE 0 0 0 10000 &_SPANK__ iGFUnlockedCarGenerator[MILLIE] //--- Set this to avoid a wanted level if player 'borrows' the unlocked version of the car SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR iGFUnlockedCarGenerator[COOCHIE] TRUE SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR iGFUnlockedCarGenerator[MICHELLE] TRUE SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR iGFUnlockedCarGenerator[BARBARA] TRUE SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR iGFUnlockedCarGenerator[KYLIE] TRUE SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR iGFUnlockedCarGenerator[SUZIE] TRUE SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR iGFUnlockedCarGenerator[MILLIE] TRUE //--- At start-up all generators are off SWITCH_CAR_GENERATOR iGFLockedCarGenerator[COOCHIE] 0 SWITCH_CAR_GENERATOR iGFLockedCarGenerator[MICHELLE] 0 SWITCH_CAR_GENERATOR iGFLockedCarGenerator[BARBARA] 0 SWITCH_CAR_GENERATOR iGFLockedCarGenerator[KYLIE] 0 SWITCH_CAR_GENERATOR iGFLockedCarGenerator[SUZIE] 0 SWITCH_CAR_GENERATOR iGFLockedCarGenerator[MILLIE] 0 SWITCH_CAR_GENERATOR iGFUnlockedCarGenerator[COOCHIE] 0 SWITCH_CAR_GENERATOR iGFUnlockedCarGenerator[MICHELLE] 0 SWITCH_CAR_GENERATOR iGFUnlockedCarGenerator[BARBARA] 0 SWITCH_CAR_GENERATOR iGFUnlockedCarGenerator[KYLIE] 0 SWITCH_CAR_GENERATOR iGFUnlockedCarGenerator[SUZIE] 0 SWITCH_CAR_GENERATOR iGFUnlockedCarGenerator[MILLIE] 0 // --------------------- CAR IMPORT / EXPORT CAR GENERATORS ----------------------------- VAR_INT impexp_car_gen[30] CREATE_CAR_GENERATOR -1673.94 439.02 7.01 136.0 BUFFALO -1 -1 FALSE 70 40 0 10000 impexp_car_gen[0] CREATE_CAR_GENERATOR 926.45 -1292.29 13.60 270.0 SENTINEL -1 -1 FALSE 60 30 0 10000 impexp_car_gen[1] CREATE_CAR_GENERATOR -2665.44 990.77 64.45 51.0 INFERNUS -1 -1 FALSE 80 50 0 10000 impexp_car_gen[2] CREATE_CAR_GENERATOR -2516.5979 1228.9192 36.4283 211.5 CAMPER -1 -1 TRUE 30 10 0 10000 impexp_car_gen[3] CREATE_CAR_GENERATOR 1122.29 -1699.76 13.43 270.0 ADMIRAL -1 -1 FALSE 50 10 0 10000 impexp_car_gen[4] CREATE_CAR_GENERATOR -1006.41 -628.27 32.00 270.0 PATRIOT -1 -1 TRUE 50 10 0 10000 impexp_car_gen[5] CREATE_CAR_GENERATOR -2085.23 -2437.52 30.31 142.0 SANCHEZ -1 -1 FALSE 50 10 0 10000 impexp_car_gen[6] CREATE_CAR_GENERATOR -1922.19 288.34 40.84 180.0 STRETCH -1 -1 FALSE 50 10 0 10000 impexp_car_gen[7] CREATE_CAR_GENERATOR -16.66 -2521.17 36.37 210.0 FELTZER -1 -1 FALSE 50 10 0 10000 impexp_car_gen[8] CREATE_CAR_GENERATOR 1803.38 -1931.05 13.66 0.0 REMINGTN -1 -1 FALSE 50 10 0 10000 impexp_car_gen[9] CREATE_CAR_GENERATOR 1272.24 2603.03 10.49 117.0 CHEETAH -1 -1 TRUE 90 30 0 10000 impexp_car_gen[10] CREATE_CAR_GENERATOR -112.40 -41.82 3.26 160.0 RANCHER -1 -1 FALSE 50 10 0 10000 impexp_car_gen[11] CREATE_CAR_GENERATOR -2456.10 741.65 34.92 180.0 STALLION -1 -1 FALSE 50 10 0 10000 impexp_car_gen[12] CREATE_CAR_GENERATOR -1951.81 2393.83 50.08 292.0 PETRO -1 -1 TRUE 50 10 0 10000 impexp_car_gen[13] CREATE_CAR_GENERATOR -2751.79 -281.50 6.81 0.0 COMET -1 -1 FALSE 90 40 0 10000 impexp_car_gen[14] CREATE_CAR_GENERATOR 1923.93 -2118.89 13.35 0.0 SLAMVAN -1 -1 FALSE 50 10 0 10000 impexp_car_gen[15] CREATE_CAR_GENERATOR -1675.94 -618.74 13.86 256.0 BLISTAC -1 -1 FALSE 50 10 0 10000 impexp_car_gen[16] CREATE_CAR_GENERATOR -2430.22 320.84 34.97 245.0 STAFFORD -1 -1 FALSE 50 10 0 10000 impexp_car_gen[17] CREATE_CAR_GENERATOR -2265.33 200.65 34.97 270.0 SABRE -1 -1 FALSE 50 10 0 10000 impexp_car_gen[18] CREATE_CAR_GENERATOR 2282.70 2535.88 10.39 180.0 FCR900 -1 -1 FALSE 50 10 0 10000 impexp_car_gen[19] CREATE_CAR_GENERATOR 2133.04 1009.75 10.49 270.0 BANSHEE -1 -1 FALSE 90 50 0 10000 impexp_car_gen[20] CREATE_CAR_GENERATOR 2229.30 1402.99 10.82 180.0 SUPERGT -1 -1 TRUE 90 50 0 10000 impexp_car_gen[21] CREATE_CAR_GENERATOR -1550.40 2687.54 56.22 90.0 JOURNEY -1 -1 FALSE 50 10 0 10000 impexp_car_gen[22] CREATE_CAR_GENERATOR -2068.69 -83.75 35.10 0.0 HUNTLEY -1 -1 FALSE 50 10 0 10000 impexp_car_gen[23] CREATE_CAR_GENERATOR 682.17 -1867.46 4.82 180.0 BFINJECT -1 -1 FALSE 70 10 0 10000 impexp_car_gen[24] CREATE_CAR_GENERATOR 1747.87 -2098.03 13.28 180.0 BLADE -1 -1 FALSE 80 10 0 10000 impexp_car_gen[25] CREATE_CAR_GENERATOR 1144.46 -1101.26 25.35 300.0 FREEWAY -1 -1 FALSE 50 10 0 10000 impexp_car_gen[26] CREATE_CAR_GENERATOR -2406.25 -2180.84 33.39 180.0 MESA -1 -1 FALSE 70 10 0 10000 impexp_car_gen[27] CREATE_CAR_GENERATOR 2163.79 1810.23 10.58 180.0 ZR350 -1 -1 FALSE 80 10 0 10000 impexp_car_gen[28] CREATE_CAR_GENERATOR 2207.43 1286.13 10.57 180.0 EUROS -1 -1 FALSE 50 10 0 10000 impexp_car_gen[29] // all import export car gens are switched off at first, then switched on when the relevant board is unlocked SWITCH_CAR_GENERATOR impexp_car_gen[0] 0 SWITCH_CAR_GENERATOR impexp_car_gen[1] 0 SWITCH_CAR_GENERATOR impexp_car_gen[2] 0 SWITCH_CAR_GENERATOR impexp_car_gen[3] 0 SWITCH_CAR_GENERATOR impexp_car_gen[4] 0 SWITCH_CAR_GENERATOR impexp_car_gen[5] 0 SWITCH_CAR_GENERATOR impexp_car_gen[6] 0 SWITCH_CAR_GENERATOR impexp_car_gen[7] 0 SWITCH_CAR_GENERATOR impexp_car_gen[8] 0 SWITCH_CAR_GENERATOR impexp_car_gen[9] 0 SWITCH_CAR_GENERATOR impexp_car_gen[10] 0 SWITCH_CAR_GENERATOR impexp_car_gen[11] 0 SWITCH_CAR_GENERATOR impexp_car_gen[12] 0 SWITCH_CAR_GENERATOR impexp_car_gen[13] 0 SWITCH_CAR_GENERATOR impexp_car_gen[14] 0 SWITCH_CAR_GENERATOR impexp_car_gen[15] 0 SWITCH_CAR_GENERATOR impexp_car_gen[16] 0 SWITCH_CAR_GENERATOR impexp_car_gen[17] 0 SWITCH_CAR_GENERATOR impexp_car_gen[18] 0 SWITCH_CAR_GENERATOR impexp_car_gen[19] 0 SWITCH_CAR_GENERATOR impexp_car_gen[20] 0 SWITCH_CAR_GENERATOR impexp_car_gen[21] 0 SWITCH_CAR_GENERATOR impexp_car_gen[22] 0 SWITCH_CAR_GENERATOR impexp_car_gen[23] 0 SWITCH_CAR_GENERATOR impexp_car_gen[24] 0 SWITCH_CAR_GENERATOR impexp_car_gen[25] 0 SWITCH_CAR_GENERATOR impexp_car_gen[26] 0 SWITCH_CAR_GENERATOR impexp_car_gen[27] 0 SWITCH_CAR_GENERATOR impexp_car_gen[28] 0 SWITCH_CAR_GENERATOR impexp_car_gen[29] 0 //--- COUNTRYSIDE CAR GENRATORS FOR TRACTORS AND COMBINE HARVESTERS VAR_INT iFieldTractor[5] iFieldHarvester[8] // Flint CREATE_CAR_GENERATOR -540.0441 -1396.1467 15.0 0.0 COMBINE -1 -1 FALSE 0 100 0 10000 iFieldHarvester[0] CREATE_CAR_GENERATOR -289.5517 -1389.6273 10.0 0.0 COMBINE -1 -1 FALSE 0 100 0 10000 iFieldHarvester[1] CREATE_CAR_GENERATOR -192.9000 -1331.3068 21.5 0.0 COMBINE -1 -1 FALSE 0 100 0 10000 iFieldHarvester[2] CREATE_CAR_GENERATOR -273.9629 -1507.5961 5.0 0.0 TRACTOR -1 -1 FALSE 0 100 0 10000 iFieldTractor[0] CREATE_CAR_GENERATOR -395.1952 -1293.1897 30.8 0.0 TRACTOR -1 -1 FALSE 0 100 0 10000 iFieldTractor[1] CREATE_CAR_GENERATOR -186.6494 -1339.2146 6.0 0.0 TRACTOR -1 -1 FALSE 0 100 0 10000 iFieldTractor[2] // The Farm CREATE_CAR_GENERATOR -1030.2489 -1050.1881 129.0 0.0 COMBINE -1 -1 FALSE 0 100 0 10000 iFieldHarvester[3] CREATE_CAR_GENERATOR -1169.4252 -989.6309 129.0 0.0 COMBINE -1 -1 FALSE 0 100 0 10000 iFieldHarvester[4] CREATE_CAR_GENERATOR -1110.7898 -947.7925 129.0 0.0 TRACTOR -1 -1 FALSE 0 100 0 10000 iFieldTractor[3] // Blueberry CREATE_CAR_GENERATOR 16.8768 49.9910 3.0 0.0 COMBINE -1 -1 FALSE 0 100 0 10000 iFieldHarvester[5] CREATE_CAR_GENERATOR 81.0510 3.3203 1.5 0.0 COMBINE -1 -1 FALSE 0 100 0 10000 iFieldHarvester[6] CREATE_CAR_GENERATOR -15.2986 -84.6533 3.0 0.0 COMBINE -1 -1 FALSE 0 100 0 10000 iFieldHarvester[7] CREATE_CAR_GENERATOR 81.0533 3.3234 1.5 0.0 TRACTOR -1 -1 FALSE 0 100 0 10000 iFieldTractor[4] // The COMBINE HARVESTERS are initialised as OFF - will be switched on after the Truth mission SWITCH_CAR_GENERATOR iFieldHarvester[0] 0 SWITCH_CAR_GENERATOR iFieldHarvester[1] 0 SWITCH_CAR_GENERATOR iFieldHarvester[2] 0 SWITCH_CAR_GENERATOR iFieldHarvester[3] 0 SWITCH_CAR_GENERATOR iFieldHarvester[4] 0 SWITCH_CAR_GENERATOR iFieldHarvester[5] 0 SWITCH_CAR_GENERATOR iFieldHarvester[6] 0 SWITCH_CAR_GENERATOR iFieldHarvester[7] 0 // The TRACTORS are initialised as ON SWITCH_CAR_GENERATOR iFieldTractor[0] 101 SWITCH_CAR_GENERATOR iFieldTractor[1] 101 SWITCH_CAR_GENERATOR iFieldTractor[2] 101 SWITCH_CAR_GENERATOR iFieldTractor[3] 101 SWITCH_CAR_GENERATOR iFieldTractor[4] 101 // ***************************************************PICKUPS******************************************************** /* X runs from -2400 to 1600 Y from -2000 to 2000 Z from -100 to 100 */ //WEAPONS******************************************************************************** VAR_INT gun_toreno1 gun_toreno2 gun_toreno3 gun_toreno4 // LA Packages /* CREATE_COLLECTABLE1 1803.46 -1579.89 13.58 CREATE_COLLECTABLE1 1838.63 -1485.81 13.69 CREATE_COLLECTABLE1 2410.2507 -1558.6847 30.4922 CREATE_COLLECTABLE1 2629.9314 -1485.3994 15.3902 CREATE_COLLECTABLE1 2633.1877 -1479.8478 15.3543 CREATE_COLLECTABLE1 2516.1604 -1945.1355 15.7336 CREATE_COLLECTABLE1 2517.0613 -2049.5420 5.5971 CREATE_COLLECTABLE1 2649.8315 -2116.7195 15.9609 CREATE_COLLECTABLE1 2689.0583 -2516.2615 16.3672 CREATE_COLLECTABLE1 1168.6608 -891.5475 42.0859 */ VAR_INT hunter_created //CREATE_CLOTHES_PICKUP -1200.3 -322.9 10.9 11 starting_tracksuit hunter_created = 0 // ****************************************ENTRY-EXITS RESERVED FOR DATES*********************************************** //--- The restaurants reserved for cut scenes are switched on and off by the date script SWITCH_ENTRY_EXIT FDrest1 FALSE SWITCH_ENTRY_EXIT rest2 FALSE SWITCH_ENTRY_EXIT diner1 FALSE SWITCH_ENTRY_EXIT diner2 FALSE SWITCH_ENTRY_EXIT TSdiner FALSE //--- The GF flats must always be off SWITCH_ENTRY_EXIT GF1 FALSE SWITCH_ENTRY_EXIT GF2 FALSE SWITCH_ENTRY_EXIT GF3 FALSE SWITCH_ENTRY_EXIT GF4 FALSE SWITCH_ENTRY_EXIT GF5 FALSE SWITCH_ENTRY_EXIT GF6 FALSE // ********************************************************************************************************************** // --- flags for car skips --- /// VAR_INT played_casino4_before played_casino4_before = 0 VAR_INT played_vcrash1_before played_vcrash1_before = 0 VAR_INT played_ryder1_before played_ryder1_before = 0 //--- CHRISTIAN C. PED GLOBAL FLAGS --- VAR_INT iSetOTBPanic iSetOTBPanic = 0 //---------------------------------------------- |ActMINx| ActMINy| ActMAXx| ActMAXy| Gen1x | Gen1y |Help1x| Help1y |Gen2x | Gen2y | Help2x | Help2y // Area //--- Set_pieces ------LA----- ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 2435.2 -1741.0 2454.9 -1723.4 2481.0 -1707.0 2480.0 -1732.0 2481.0 -1707.0 2480.0 -1732.0 // GANTON SOUTH OF HUB ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 2680.6 -1665.8 2702.2 -1647.8 2724.7 -1610.1 2727.2 -1656.9 2724.0 -1610.0 2727.0 -1656.0 // East BEACH next to Stadium ADD_SET_PIECE SETPIECE_CREATECOPPERONFOOT 2878.4 -1972.5 2869.7 -1954.9 2890.0 -1912.0 2877.0 -1962.0 2893.0 -2007.0 2881.0 -1970.0 // East BEACH on the steps to the beach ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE 2807.0 -1152.0 2822.0 -1135.0 2872.0 -1105.0 2874.0 -1133.0 2866.0 -1111.0 2864.0 -1138.0 // EAST BEACH North on the hill down towards the sea ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 2261.0 -1263.0 2249.0 -1258.0 2173.0 -1232.0 2170.0 -1257.0 2184.0 -1258.0 2202.0 -1260.0 // Alleyway in JEFFERSON ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 2157.0 -1500.0 2173.0 -1495.0 2131.0 -1461.0 2131.0 -1495.0 2130.0 -1460.0 2131.0 -1494.0 // ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT 2295.0 -1772.0 2302.0 -1761.0 2263.0 -1780.0 2263.0 -1809.0 2327.0 -1821.0 2303.0 -1817.0 // Apartments in GANTON ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1518.0 -1700.0 1538.0 -1683.0 1564.0 -1730.0 1527.0 -1730.0 1565.0 -1731.0 1527.1 -1732.0 // OUTSIDE POLICE STAION AT PERSHING ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 2531.0 -1861.0 2547.0 -1839.0 2581.0 -1911.0 2578.0 -1865.0 2560.0 -1896.0 2561.0 -1848.0 // WILLOWFIELD STORM DRAINS ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE 1833.0 -1617.0 1854.0 -1608.0 1820.0 -1590.0 1818.0 -1605.0 1824.0 -1641.0 1824.0 -1619.0 // IDLEWOOD ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT 1694.0 -1518.0 1706.0 -1505.0 1720.0 -1476.0 1709.0 -1487.0 1718.0 -1473.0 1709.0 -1474.0 // COMMERCE ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 1707.0 -1467.0 1711.0 -1457.0 1689.0 -1443.0 1709.0 -1444.0 1688.0 -1443.0 -1709.0 -1444.0 // COMMERCE ADD_SET_PIECE SETPIECE_CREATECOPPERONFOOT 1815.0 -1406.0 1829.0 -1388.0 1840.0 -1410.0 1835.0 -1402.0 1841.0 -1411.0 1836.0 -1403.0 // GLEN PARK ADD_SET_PIECE SETPIECE_CREATECOPPERONFOOT 1804.0 -1353.0 1807.0 -1342.0 1781.0 -1366.0 1784.0 -1352.0 1781.0 -1366.0 1784.0 -1352.0 // GLEN PARK ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1710.0 -1339.0 1724.0 -1319.0 1684.0 -1305.0 1712.0 -1305.0 1684.0 -1305.0 1712.0 -1305.0 // DOWNTOWN LOS SANTOS ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1711.0 -1204.0 1720.0 -1194.0 1747.0 -1160.0 1712.0 -1159.0 1747.0 -1160.0 1712.0 -1159.0 // DOWNTOWN LOS SANTOS ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 2389.0 -1479.0 2404.0 -1469.0 2429.0 -1457.0 2429.0 -1479.0 2428.0 -1456.0 2430.0 -1480.0 // DOWNTOWN LOS SANTOS CAR PARK ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 2443.0 -1221.0 2457.0 -1209.0 2474.0 -1253.0 2447.0 -1255.0 2475.0 -1254.0 2448.0 -1256.0 // EAST LOS SANTOS ADD_SET_PIECE SETPIECE_CREATECOPPERONFOOT 2627.0 -1134.0 2632.0 -1132.0 2649.0 -1150.0 2642.0 -1139.0 2650.0 -1151.0 2643.0 -1140.0 // STEPS IN LOS FLORES ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 2677.0 -1095.0 2697.0 -1060.0 2645.0 -1106.0 2646.0 -1077.0 2646.0 -1107.0 2647.0 -1078.0 // LOS COLINAS ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1947.0 -1055.0 1955.0 -1038.0 1989.0 -1025.0 1978.0 -1057.0 1990.0 -1026.0 1979.0 -1058.0 // GLEN PARK ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1858.0 -1123.0 1876.0 -1113.0 1895.0 -1133.0 1865.0 -1133.0 1896.0 -1134.0 1866.0 -1134.0 // GLEN PARK ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1977.0 -1416.0 1996.0 -1411.0 1966.0 -1467.0 1988.0 -1465.0 1967.0 -1468.0 1989.0 -1466.0 // IDLEWOOD ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 2191.0 -1345.0 2202.0 -1338.0 2216.0 -1355.0 2216.0 -1343.0 2217.0 -1356.0 2217.0 -1344.0 // JEFFERSON ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 2339.0 -1161.0 2345.0 -1148.0 2372.0 -1182.0 2373.0 -1157.0 2373.0 -1183.0 2374.0 -1158.0 // EAST LS SANTOS ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 2034.0 -1271.0 2049.0 -1251.0 2072.0 -1281.0 2070.0 -1261.0 2073.0 -1282.0 2070.0 -2074.0 // GLEN PARK AREA ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE 1410.0 -1250.0 1427.0 -1233.0 1457.0 -1263.0 1456.0 -1243.0 1452.0 -1211.0 1453.0 -1238.0 // DOWNTOWN LOS SANTOS ADD_SET_PIECE SETPIECE_TWOCOPCARSINALLEY 1427.0 -1334.0 1433.0 -1323.0 1419.0 -1270.0 1419.0 -1286.0 1420.0 -1253.0 1419.0 -1257.0 // DOWNTOWN LOS SANTOS ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1520.0 -1655.0 1538.0 -1642.0 1561.0 -1626.0 1530.0 -1627.0 1562.0 -1620.0 1531.0 -1622.0 // PERSHING SQUARE PD ADD_SET_PIECE SETPIECE_TWOCOPCARSINALLEY 1129.0 -1669.0 1140.0 -1663.0 1095.0 -1665.0 1130.0 -1665.0 1117.0 -1714.0 1138.0 -1715.0 // ALLEYWAY AND RPOAD ADJACENT VERONA BEACH ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 1167.0 -1782.0 1190.0 -1769.0 1148.0 -1744.0 1176.0 -1743.0 1141.0 -1739.0 1175.0 -1737.0 // CONFERENCE CENTRE ADD_SET_PIECE SETPIECE_TWOCOPCARSINALLEY 1207.0 -1214.0 1216.0 -1193.0 1175.0 -1210.0 1194.0 -1209.0 1179.0 -1204.0 1197.0 -1204.0 // ALLEYWAY MARKET ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE 1261.0 -1721.0 1271.0 -1707.0 1295.0 -1680.0 1295.0 -1717.0 1300.0 -1670.0 1300.0 -1704.0 // VERONA BEACH ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 1237.0 -1290.0 1257.0 -1271.0 1214.0 -1253.0 1215.0 -1281.0 1215.0 -1215.0 -1215.0 -1281.0 // MARKET ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 1013.0 -1158.0 1030.0 -1132.0 1060.0 -1174.0 1060.0 -1148.0 1060.0 -1174.0 1060.0 -1148.0 // MARKET ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1089.0 -1212.0 1076.0 -1204.0 1061.0 -1223.0 1064.0 -1205.0 1061.0 -1223.0 1064.0 -1205.0 // MARKET ADD_SET_PIECE SETPIECE_CREATECOPPERONFOOT 953.0 -1108.0 945.0 -1097.0 928.0 -1084.0 937.0 -1099.0 928.0 -1084.0 937.0 -1099.0 // CEMETERY ENTRANCE ADD_SET_PIECE SETPIECE_CREATECOPPERONFOOT 829.0 -1066.0 830.0 -1057.0 837.0 -1049.0 828.0 -1055.0 837.0 -1049.0 828.0 -1055.0 // VINEWOOD NR CEMETERY ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 816.0 -1048.0 840.0 -1030.0 793.0 -1015.0 791.0 -1055.0 793.0 -1015.0 791.0 -1055.0 // VINEWOOD ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 642.0 -1197.0 676.0 -1187.0 597.0 -1183.0 616.0 -1211.0 597.0 -1193.0 616.0 -1211.0 // RICHMAN TUNNEL ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 618.0 -1287.0 647.0 -1272.0 665.0 -1317.0 632.0 -1317.0 662.0 -1317.0 632.0 -1317.0 // RODEO ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE 457.0 -1364.0 487.0 -1357.0 493.0 -1323.0 501.0 -1340.0 498.0 -1317.0 513.0 -1350.0 // RODEO ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE 523.0 -1456.0 555.0 -1442.0 569.0 -1404.0 532.0 -1413.0 567.0 -1399.0 525.0 -1407.0 // RODEO ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT 478.0 -1488.0 496.0 -1472.0 491.0 -1518.0 490.0 -1501.0 490.0 -1521.0 487.0 -1497.0 // RODEO ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 470.0 -1604.0 490.0 -1573.0 540.0 -1626.0 540.0 -1583.0 540.0 -1626.0 540.0 -1583.0 // RODEO ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 519.0 -1687.0 544.0 -1676.0 486.0 -1727.0 534.0 -1734.0 486.0 -1727.0 534.0 -1734.0 // SANTA MARIA BEACH WHEN YOU CRASH THROUGH THE FENCE ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT 380.0 -1803.0 394.0 -1798.0 363.0 -1833.0 373.0 -1819.0 385.0 -1831.0 373.0 -1819.0 // PIER IN SANTA MARIA ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE 2134.0 -1904.0 2156.0 -1885.0 2105.0 -1919.0 2105.0 -1899.0 2079.0 -1871.0 2080.0 -1898.0 // WILLOWFIELD ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1953.0 -1988.0 1971.0 -1966.0 1985.0 -1930.0 1967.0 -1929.0 1927.0 -1935.0 1953.0 -1935.0 // EL CORONA ADD_SET_PIECE SETPIECE_TWOCOPCARSINALLEY 2015.0 -2064.0 2026.0 -2052.0 2009.0 -2010.0 2007.0 -2033.0 1970.0 -2059.0 1988.0 -2058.0 // ALLEYWAY WILLOWFIELD ADD_SET_PIECE SETPIECE_TWOCOPCARSINALLEY 1997.0 -2077.0 2009.0 -2065.0 2041.0 -2056.0 2016.0 -2058.0 2027.0 -2084.0 2005.0 -2084.0 // ALLEYWAY WILLOWFIELD ADD_SET_PIECE SETPIECE_TWOCOPCARSINALLEY 1924.0 -2108.0 1935.0 -2096.0 1917.0 -2074.0 1917.0 -2094.0 1917.0 -2138.0 1917.0 -2116.0 // ALLEYWAY ELCORONA ADD_SET_PIECE SETPIECE_TWOCOPCARSINALLEY 1847.0 -2108.0 1860.0 -2097.0 1821.0 -2089.0 1820.0 -2101.0 1903.0 -2101.0 1883.0 -2101.0 // ELCORONA ADD_SET_PIECE SETPIECE_TWOCOPCARSINALLEY 1861.0 -2010.0 1870.0 -2005.0 1885.0 -2041.0 1886.0 -2021.0 1880.0 -2044.0 1878.0 -2016.0 // ELCORONA ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1751.0 -2388.0 1781.0 -2369.0 1799.0 -2345.0 1798.0 -2377.0 1799.0 -2345.0 1798.0 -2377.0 // AIRPORT LA ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1314.0 -2423.0 1325.0 -2410.0 1339.0 -2446.0 1317.0 -2446.0 1339.0 -2446.0 1317.0 -2446.0 // AIRPORT LOS SANTOS ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 1551.0 -1636.0 1562.0 -1618.0 1531.0 -1660.0 1532.0 -1632.0 1531.0 -1660.0 1532.0 -1632.0 // OUTSIDE COPS ADD_SET_PIECE SETPIECE_TWOFASTCOPCARSINALLEY 1225.0 -1880.0 1237.0 -1866.0 1180.0 -1884.0 1213.0 -1885.0 1169.0 -1887.0 1194.0 -1888.0 // Verdant bluffs alley ADD_SET_PIECE SETPIECE_TWOFASTCOPCARSINALLEY 1076.0 -1890.0 1097.0 -1881.0 1161.0 -1880.0 1108.0 -1883.0 1050.0 -1894.0 1084.0 -1887.0 // verdant bluffs ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1059.0 -1721.0 1090.0 -1703.0 1034.0 -1674.0 1039.0 -1713.0 1034.0 -1674.0 1039.0 -1713.0 // verona beach ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1028.0 -1690.0 1048.0 -1657.0 1079.0 -1710.0 1037.0 -1709.0 1079.0 -1710.0 1037.0 -1709.0 // verona beach ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT 982.0 -1913.0 953.0 -1858.0 980.0 -1852.0 966.0 -1860.0 946.0 -1846.0 956.0 -1857.0 // verona beach ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT 849.0 -1899.0 823.0 -1937.0 836.0 -2017.0 839.0 -1993.0 848.0 -2020.0 842.0 -1990.0 // verona beach pier ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE 820.0 -1844.0 848.0 -1819.0 789.0 -1786.0 827.0 -1786.0 881.0 -1772.0 827.0 -1772.0 // Marina ADD_SET_PIECE SETPIECE_CREATECOPPERONFOOT 788.0 -1816.0 780.0 -1800.0 786.0 -1835.0 781.0 -1820.0 786.0 -1835.0 781.0 -1820.0 // verona beach ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT 740.0 -1815.0 759.0 -1808.0 738.0 -1790.0 737.0 -1806.0 744.0 -1836.0 746.0 -1819.0 // verona beacj ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT 717.0 -1819.0 727.0 -1805.0 745.0 -1827.0 746.0 -1815.0 735.0 -1792.0 728.0 -1813.0 // verona b ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT 624.0 -1786.0 641.0 -1778.0 644.0 -1799.0 647.0 -1789.0 651.0 -1767.0 649.0 -1783.0 // verona beach ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 606.0 -1786.0 622.0 -1770.0 656.0 -1759.0 649.0 -1787.0 656.0 -1759.0 649.0 -1787.0 // verona beach ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 586.0 -1868.0 612.0 -1835.0 648.0 -1818.0 643.0 -1856.0 648.0 -1818.0 643.0 -1856.0 // verona beach ADD_SET_PIECE SETPIECE_CREATECOPPERONFOOT 541.0 -1778.0 562.0 -1762.0 593.0 -1775.0 573.0 -1772.0 593.0 -1772.0 573.0 -1772.0 // veroan stairs beach ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 511.0 -1777.0 478.0 -1762.0 455.0 -1737.0 458.0 -1769.0 455.0 -1737.0 458.0 -1769.0 // verona beach ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT 381.0 -1806.0 398.0 -1790.0 385.0 -1825.0 383.0 -1806.0 364.0 -1831.0 377.0 -1810.0 // verona beach pier ADD_SET_PIECE SETPIECE_TWOCARSRAMMINGPLAYERFROMSIDE 361.0 -1689.0 379.0 -1667.0 401.0 -1650.0 372.0 -1646.0 334.0 -1646.0 365.0 -1649.0 // pier top verona b ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 289.0 -1647.0 314.0 -1631.0 321.0 -1597.0 321.0 -1642.0 321.0 -1597.0 321.0 -1642.0 // rodeo ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 225.0 -1610.0 252.0 -1590.0 274.0 -1576.0 242.0 -1566.0 274.0 -1576.0 242.0 -1566.0 // rodeo ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 301.0 -1472.0 336.0 -1467.0 269.0 -1476.0 291.0 -1497.0 269.0 -1476.0 291.0 -1497.0 // rodeo ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE 196.0 -1528.0 223.0 -1508.0 193.0 -1489.0 179.0 -1512.0 174.0 -1579.0 147.0 -1554.0 // rodeo ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 221.0 -1367.0 226.0 -1337.0 228.0 -1310.0 246.0 -1336.0 228.0 -1310.0 246.0 -1336.0 // richman ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 427.0 -1238.0 450.0 -1229.0 391.0 -1225.0 402.0 -1252.0 391.0 -1225.0 402.0 -1252.0 // richman ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 478.0 -1257.0 478.0 -1227.0 489.0 -1281.0 508.0 -1265.0 489.0 -1281.0 508.0 -1265.0 // rodeo ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE 337.0 -1176.0 371.0 -1170.0 395.0 -1169.0 362.0 -1141.0 344.0 -1131.0 381.0 -1167.0 // richman //--------------------------------------------- |ActMINx| ActMINy| ActMAXx| ActMAXy |Gen1x | Gen1y |Help1x| Help1y | Gen2x | Gen2y | Help2x | Help2y // Area //SETPIECE_TWOFASTCOPSCARSINALLEY //--------------------LV------------------------ |ActMINx| ActMINy| ActMAXx| ActMAXy| Gen1x | Gen1y |Help1x| Help1y | Gen2x | Gen2y | Help2x | Help2y // Area ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 1798.0 796.0 1816.0 823.0 1760.0 832.0 1809.0 834.0 1760.0 832.0 1809.0 834.0 //CROSSROADS SOUTH LA ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 2032.0 892.0 2056.0 919.0 2086.0 856.0 2047.0 856.0 2086.0 856.0 2047.0 856.0 //JTSOUTH OF STRIP ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 2034.0 985.0 2053.0 1024.0 2074.0 975.0 2044.0 974.0 2074.0 975.0 2044.0 974.0 //STRIP ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 2035.0 1228.0 2056.0 1254.0 2021.0 1275.0 2051.0 1277.0 2021.0 1275.0 2051.0 1277.0 //STRIP ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 2114.0 2071.0 2136.0 2096.0 2098.0 2020.0 2131.0 2020.0 2098.0 2020.0 2131.0 2020.0 //STRIP ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1937.0 2104.0 1954.0 2122.0 1925.0 2139.0 1926.0 2110.0 1925.0 2139.0 1926.0 2110.0 // REDSANDS EAST ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 1836.0 2044.0 1858.0 2059.0 1815.0 2080.0 1821.0 2051.0 1815.0 2080.0 1821.0 2051.0 // REDSANDS EAST ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 1721.0 2044.0 1739.0 2063.0 1710.0 2023.0 1709.0 2051.0 1710.0 2023.0 1709.0 2051.0 // REDSANDS WEST ADD_SET_PIECE SETPIECE_TWOCARSRAMMINGPLAYERFROMSIDE 1699.0 2134.0 1717.0 2152.0 1734.0 2172.0 1709.0 2171.0 1729.0 2175.0 1694.0 2175.0 // REDSANDS WEST next to steakhouse ADD_SET_PIECE SETPIECE_TWOCARSRAMMINGPLAYERFROMSIDE 1581.0 2164.0 1600.0 2182.0 1616.0 2143.0 1615.0 2170.0 1621.0 2146.0 1622.0 2182.0 // redsands west ADD_SET_PIECE SETPIECE_TWOCARSRAMMINGPLAYERFROMSIDE 1522.0 2044.0 1538.0 2060.0 1529.0 2083.0 1532.0 2055.0 1525.0 2087.0 1525.0 2056.0 // redsnads west ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT 1466.0 1989.0 1490.0 2003.0 1457.0 2024.0 1476.0 2009.0 1499.0 2027.0 1483.0 2006.0 // redsands west apartments ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT 1429.0 2617.0 1439.0 2624.0 1422.0 2615.0 1433.0 2619.0 1446.0 2615.0 1434.0 2622.0 // yellow bell station ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1469.0 2545.0 1487.0 2568.0 1500.0 2592.0 1474.0 2591.0 1500.0 2592.0 1474.0 2591.0 // prickle pine ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1300.0 2580.0 1325.0 2599.0 1291.0 2568.0 1291.0 2597.0 1291.0 2568.0 1291.0 2597.0 // prickle pine ADD_SET_PIECE SETPIECE_TWOCARSRAMMINGPLAYERFROMSIDE 2240.0 2460.0 2246.0 2449.0 2230.0 2433.0 2231.0 2451.0 2229.0 2476.0 2231.0 2456.0 // cop station ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1238.0 2671.0 1257.0 2690.0 1276.0 2716.0 1244.0 2713.0 1276.0 2716.0 1244.0 2713.0 //PRICKLE PINE ADD_SET_PIECE SETPIECE_TWOCARSRAMMINGPLAYERFROMSIDE 1493.0 2580.0 1512.0 2599.0 1479.0 2562.0 1480.0 2588.0 1476.0 2555.0 1475.0 2585.0 // PRICKLEPINE ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1469.0 2433.0 1486.0 2447.0 1449.0 2390.0 1478.0 2391.0 1449.0 2390.0 1478.0 2391.0 // REDSNADS WEST ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 1558.0 2283.0 1577.0 2305.0 1529.0 2311.0 1565.0 2310.0 1529.0 2311.0 1565.0 2310.0 //REDSANDS WEST ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 1397.0 2303.0 1419.0 2323.0 1385.0 2331.0 1389.0 2313.0 1385.0 2331.0 1389.0 2313.0 // REDSANDS WEST ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT 1568.0 2114.0 1578.0 2140.0 1573.0 2078.0 1573.0 2118.0 1571.0 2088.0 1571.0 2106.0 // alleyway REDSANDS WEST ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1660.0 2002.0 1685.0 2021.0 1710.0 1985.0 1709.0 2015.0 1710.0 1985.0 1709.0 2015.0 // redsands ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 1765.0 2044.0 1788.0 2063.0 1810.0 2083.0 1827.0 2056.0 1810.0 2083.0 1827.0 2056.0 // Harry Goldway area ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1948.0 2274.0 1971.0 2293.0 1930.0 2259.0 1930.0 2283.0 1930.0 2259.0 1930.0 2283.0 // Redsands East ADD_SET_PIECE SETPIECE_TWOCARSRAMMINGPLAYERFROMSIDE 1918.0 2309.0 1938.0 2328.0 1951.0 2338.0 1929.0 2338.0 1895.0 2333.0 1926.0 2337.0 // REDSANDS EAST ADD_SET_PIECE SETPIECE_TWOCARSRAMMINGPLAYERFROMSIDE 1986.0 2384.0 2006.0 2403.0 2031.0 2367.0 2024.0 2392.0 2026.0 2433.0 2025.0 2395.0 // tHE eMERALD iSLE ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 2011.0 2334.0 2017.0 2352.0 1995.0 2286.0 2014.0 2288.0 1995.0 2286.0 2014.0 2288.0 // ALLEYWAY THE EMERALD ISLE ADD_SET_PIECE SETPIECE_TWOCARSRAMMINGPLAYERFROMSIDE 2063.0 2274.0 2090.0 2293.0 2068.0 2313.0 2096.0 2292.0 2119.0 2260.0 2104.0 2282.0 // THE EMERALD iSLE ADD_SET_PIECE SETPIECE_TWOCARSRAMMINGPLAYERFROMSIDE 2171.0 2356.0 2185.0 2356.0 2214.0 2328.0 2196.0 2336.0 2217.0 2370.0 2204.0 2348.0 // the emerald isle ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 2177.0 2302.0 2185.0 2325.0 2198.0 2286.0 2161.0 2288.0 2198.0 2286.0 2161.0 2288.0 // the emerald isle ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 2256.0 2274.0 2294.0 2293.0 2288.0 2260.0 2287.0 2283.0 2288.0 2260.0 2287.0 2283.0 // roca Escalnte ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 2379.0 2404.0 2395.0 2423.0 2342.0 2436.0 2353.0 2415.0 2342.0 2436.0 2353.0 2415.0 // Roca Escalnate cop shop ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 2218.0 2422.0 2239.0 2438.0 2257.0 2455.0 2227.0 2452.0 2257.0 2455.0 2227.0 2452.0 // LVPD car park ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 2337.0 2504.0 2354.0 2522.0 2370.0 2482.0 2370.0 2513.0 2370.0 2482.0 2370.0 2513.0 // roca escalnate ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 2490.0 2403.0 2511.0 2423.0 2524.0 2438.0 2525.0 2411.0 2524.0 2438.0 2525.0 2411.0 // roca escalante ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 2518.0 2255.0 2537.0 2274.0 2555.0 2236.0 2528.0 2237.0 2555.0 2236.0 2528.0 2237.0 // roca escalnate ADD_SET_PIECE SETPIECE_TWOCARSRAMMINGPLAYERFROMSIDE 2518.0 2189.0 2539.0 2210.0 2558.0 2235.0 2518.0 2236.0 2498.0 2231.0 2537.0 2231.0 // roca ADD_SET_PIECE SETPIECE_TWOCARSRAMMINGPLAYERFROMSIDE 2544.0 2222.0 2566.0 2243.0 2524.0 2265.0 2525.0 2234.0 2530.0 2271.0 2531.0 2226.0 // rocaq ADD_SET_PIECE SETPIECE_TWOCARSRAMMINGPLAYERFROMSIDE 2363.0 2224.0 2395.0 2248.0 2352.0 2205.0 2353.0 2236.0 2346.0 2197.0 2344.0 2231.0 // old venturas strip ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 2333.0 2173.0 2369.0 2190.0 2313.0 2138.0 2349.0 2140.0 2313.0 2138.0 2349.0 2140.0 // old v strip ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 2380.0 2124.0 2404.0 2163.0 2346.0 2178.0 2350.0 2149.0 2346.0 2178.0 2350.0 2149.0 // old v strip ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE 2484.0 2124.0 2513.0 2163.0 2525.0 2179.0 2525.0 2151.0 2530.0 2184.0 2530.0 2136.0 // o v strip ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE 2713.0 2104.0 2737.0 2122.0 2793.0 2086.0 2796.0 2110.0 2796.0 2079.0 2801.0 2110.0 // creek ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE 2838.0 2127.0 2857.0 2159.0 2824.0 2111.0 2846.0 2111.0 2803.0 2111.0 2845.0 2112.0 // creek ADD_SET_PIECE SETPIECE_TWOCARSRAMMINGPLAYERFROMSIDE 2789.0 1945.0 2803.0 1985.0 2745.0 1956.0 2779.0 1956.0 2739.0 1952.0 2786.0 1951.0 // creek bridge mad max ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 2640.0 1944.0 2660.0 1965.0 2605.0 1982.0 2605.0 1953.0 2605.0 1982.0 2605.0 1953.0 // Starfish Casion ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 2498.0 1921.0 2517.0 1938.0 2537.0 1955.0 2507.0 1956.0 2537.0 1955.0 2507.0 1956.0 // Strafish Casion ADD_SET_PIECE SETPIECE_CREATECOPPERONFOOT 2408.0 2021.0 2429.0 2042.0 2398.0 2045.0 2412.0 2044.0 2398.0 2045.0 2412.0 2044.0 // o v strip ADD_SET_PIECE SETPIECE_CREATECOPPERONFOOT 2188.0 1826.0 2205.0 1851.0 2234.0 1867.0 2212.0 1851.0 2234.0 1867.0 2212.0 1851.0 // the ring master ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 2067.0 1863.0 2082.0 1894.0 2083.0 1843.0 2095.0 1865.0 2083.0 1843.0 2095.0 1865.0 // the visage ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT 2033.0 1894.0 2048.0 1936.0 2060.0 1951.0 2041.0 1943.0 2069.0 1865.0 2063.0 1878.0 // the visage ADD_SET_PIECE SETPIECE_TWOCARSRAMMINGPLAYERFROMSIDE 2069.0 1785.0 2139.0 1806.0 2147.0 1776.0 2095.0 1776.0 1975.0 1711.0 2060.0 1710.0 // the strip ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT 2094.0 1649.0 2165.0 1737.0 2177.0 1666.0 2129.0 1655.0 2151.0 1723.0 2134.0 1717.0 // caligula's palace ADD_SET_PIECE SETPIECE_CREATECOPPERONFOOT 2006.0 1541.0 2021.0 1550.0 2001.0 1564.0 2004.0 1553.0 2001.0 1564.0 2004.0 1553.0 // pirate ship ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1931.0 1444.0 1964.0 1466.0 1989.0 1415.0 1991.0 1454.0 1989.0 1415.0 1991.0 1454.0 // the high roller ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1935.0 1299.0 1958.0 1322.0 1974.0 1276.0 1949.0 1277.0 1974.0 1276.0 1949.0 1277.0 // the pink swan ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE 1756.0 1264.0 1786.0 1282.0 1730.0 1302.0 1722.0 1273.0 1730.0 1302.0 1722.0 1273.0 // las V Airport ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT 1723.0 1182.0 1736.0 1205.0 1714.0 1234.0 1714.0 1217.0 1703.0 1229.0 1709.0 1219.0 // las v airport carpark top ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 1583.0 1124.0 1606.0 1142.0 1570.0 1098.0 1569.0 1138.0 1570.0 1098.0 1569.0 1138.0 // freight depot ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE 1716.0 1585.0 1744.0 1605.0 1726.0 1663.0 1745.0 1637.0 1726.0 1663.0 1745.0 1637.0 // lv airport //-------------------------------------------- |ActMINx| ActMINy| ActMAXx| ActMAXy |Gen1x | Gen1y |Help1x| Help1y | Gen2x | Gen2y | Help2x | Help2y // Area //----------------------SF--------------- |ActMINx| ActMINy| ActMAXx| ActMAXy |Gen1x | Gen1y |Help1x| Help1y | Gen2x | Gen2y | Help2x | Help2y // Area ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2349.0 2381.0 -2327.0 2377.0 -2349.0 2402.0 -2328.0 2388.0 -2349.0 2402.0 -2328.0 2388.0 // BAYSIDE MARINA ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2475.0 2299.0 -2456.0 2315.0 -2435.0 2337.0 -2466.0 2334.0 -2435.0 2337.0 -2466.0 2334.0 // BAYSIDE MARINA ADD_SET_PIECE SETPIECE_TWOCARSRAMMINGPLAYERFROMSIDE -1591.0 656.0 -1574.0 667.0 -1561.0 690.0 -1562.0 663.0 -1557.0 692.0 -1556.0 665.0 // cop station ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -1752.0 1317.0 -1726.0 1323.0 -1749.0 1269.0 -1714.0 1299.0 -1749.0 1269.0 -1714.0 1299.0 // Esplanade north ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -1715.0 1309.0 -1711.0 1343.0 -1710.0 1377.0 -1736.0 1350.0 -1710.0 1377.0 -1736.0 1350.0 // esplanade north ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT -1673.0 1386.0 -1637.0 1391.0 -1624.0 1380.0 -1626.0 1393.0 -1662.0 1430.0 -1642.0 1427.0 // esplanade north pier 69 ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2002.0 1273.0 -1967.0 1299.0 -1943.0 1258.0 -1944.0 1293.0 -1943.0 1258.0 -1944.0 1293.0 // esplanade north alley way ADD_SET_PIECE SETPIECE_TWOCOPCARSINALLEY -1946.0 1233.0 -1939.0 1245.0 -1943.0 1195.0 -1943.0 1221.0 -2021.0 1227.0 -1983.0 1227.0 // calton height alley ADD_SET_PIECE SETPIECE_CREATECOPPERONFOOT -1917.0 1253.0 -1904.0 1259.0 -1900.0 1242.0 -1900.0 1256.0 -1900.0 1242.0 -1900.0 1256.0 // downtown alley ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE -2041.0 1223.0 -2022.0 1232.0 -2010.0 1208.0 -2010.0 1228.0 -2010.0 1208.0 -2010.0 1228.0 // Calton heights ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE -1862.0 1166.0 -1836.0 1191.0 -1789.0 1147.0 -1790.0 1187.0 -1794.0 1148.0 -1794.0 1186.0 // Downtown ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -1728.0 1134.0 -1702.0 1154.0 -1747.0 1182.0 -1710.0 1184.0 -1747.0 1182.0 -1710.0 1184.0 // Downtown ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -1685.0 1173.0 -1663.0 1201.0 -1708.0 1151.0 -1712.0 1186.0 -1708.0 1151.0 -1712.0 1186.0 // Downton ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE -1678.0 1174.0 -1647.0 1206.0 -1644.0 1222.0 -1618.0 1192.0 -1606.0 1151.0 -1618.0 1192.0 // Downtown ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE -1760.0 1083.0 -1736.0 1115.0 -1718.0 1068.0 -1718.0 1105.0 -1718.0 1068.0 -1718.0 1105.0 // Financial ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE -1726.0 1005.0 -1701.0 986.0 -1673.0 932.0 -1716.0 933.0 -1673.0 932.0 -1716.0 933.0 // Fianacial ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -1769.0 963.0 -1749.0 901.0 -1710.0 886.0 -1711.0 923.0 -1710.0 886.0 -1711.0 923.0 // Financial ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE -1684.0 903.0 -1658.0 944.0 -1711.0 833.0 -1710.0 912.0 -1718.0 975.0 -1719.0 926.0 // financila# ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE -1806.0 954.0 -1782.0 981.0 -1753.0 935.0 -1795.0 934.0 -1842.0 916.0 -1793.0 916.0 // finacila ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE -1806.0 891.0 -1781.0 867.0 -1838.0 914.0 -1794.0 915.0 -1838.0 914.0 -1794.0 915.0 // finacial ADD_SET_PIECE SETPIECE_TWOCARSRAMMINGPLAYERFROMSIDE -1614.0 943.0 -1589.0 904.0 -1563.0 880.0 -1561.0 922.0 -1563.0 966.0 -1556.0 929.0 // downtown ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -1871.0 827.0 -1843.0 864.0 -1902.0 885.0 -1903.0 837.0 -1902.0 885.0 -1903.0 837.0 // downtown ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE -1912.0 954.0 -1880.0 977.0 -1936.0 934.0 -1896.0 935.0 -1936.0 934.0 -1896.0 935.0 // downmtown ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE -1882.0 906.0 -1855.0 943.0 -1896.0 889.0 -1896.0 924.0 -1896.0 889.0 -1896.0 924.0 // downtown ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE -1983.0 906.0 -1954.0 943.0 -1998.0 883.0 -1999.0 924.0 -1998.0 883.0 -1999.0 924.0 // calton heights ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT -2044.0 901.0 -2030.0 907.0 -2045.0 922.0 -2049.0 907.0 -2058.0 935.0 -2050.0 912.0 // Calton heights ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT -2113.0 952.0 -2098.0 961.0 -2078.0 953.0 -2094.0 954.0 -2086.0 931.0 -2097.0 948.0 // calton heights ADD_SET_PIECE SETPIECE_TWOFASTCOPCARSINALLEY -2034.0 957.0 -2019.0 951.0 -2010.0 981.0 -2010.0 952.0 -1965.0 933.0 -2000.0 935.0 // calton heights ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2018.0 1017.0 -1992.0 1038.0 -1959.0 1053.0 -2002.0 1052.0 -1959.0 1053.0 -2002.0 1052.0 // calton heights ADD_SET_PIECE SETPIECE_CREATECOPPERONFOOT -2077.0 1038.0 -2072.0 1045.0 -2080.0 1078.0 -2079.0 1053.0 -2080.0 1078.0 -2079.0 1053.0 // calton heights ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2301.0 1043.0 -2253.0 1089.0 -2350.0 1117.0 -2360.0 1088.0 -2350.0 1117.0 -2360.0 1088.0 // juniper hollow ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2381.0 1030.0 -2375.0 1061.0 -2320.0 1074.0 -2356.0 1085.0 -2320.0 1074.0 -2356.0 1085.0 // jumiper hollow ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2399.0 965.0 -2374.0 992.0 -2344.0 961.0 -2385.0 961.0 -2344.0 961.0 -2385.0 961.0 // juniper hill ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE -2294.0 949.0 -2281.0 969.0 -2254.0 956.0 -2265.0 960.0 -2254.0 956.0 -2265.0 960.0 // calton heights ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE -2282.0 992.0 -2239.0 1017.0 -2298.0 957.0 -2258.0 955.0 -2298.0 957.0 -2258.0 955.0 // calton heights ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2206.0 903.0 -2171.0 934.0 -2254.0 943.0 -2253.0 917.0 -2254.0 943.0 -2253.0 917.0 // clacton heighhts ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2160.0 927.0 -2129.0 954.0 -2177.0 916.0 -2128.0 916.0 -2177.0 916.0 -2128.0 916.0 // calton hiks ADD_SET_PIECE SETPIECE_TWOCOPCARSINALLEY -2104.0 853.0 -2088.0 859.0 -2082.0 816.0 -2082.0 838.0 -2101.0 806.0 -2079.0 806.0 // calton heights ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2099.0 696.0 -2079.0 710.0 -2114.0 729.0 -2089.0 729.0 -2114.0 729.0 -2089.0 729.0 // Chinatown ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE -2045.0 720.0 -2028.0 746.0 -2008.0 758.0 -2009.0 730.0 -2001.0 773.0 -2001.0 732.0 // downtown ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE -1989.0 719.0 -1965.0 744.0 -2000.0 691.0 -2001.0 731.0 -2007.0 765.0 -2008.0 732.0 // downtown ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2017.0 632.0 -1992.0 657.0 -1982.0 611.0 -2014.0 611.0 -1982.0 611.0 -2014.0 611.0 // downtown ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -1979.0 596.0 -1955.0 620.0 -2015.0 643.0 -2013.0 615.0 -2015.0 643.0 -2013.0 615.0 // donwtown ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2056.0 455.0 -2027.0 477.0 -2008.0 438.0 -2008.0 457.0 -2008.0 438.0 -2008.0 457.0 // King's ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2136.0 347.0 -2130.0 368.0 -2117.0 386.0 -2135.0 386.0 -2117.0 386.0 -2135.0 386.0 // Kings ADD_SET_PIECE SETPIECE_TWOCOPCARSINALLEY -2196.0 363.0 -2174.0 369.0 -2148.0 356.0 -2149.0 374.0 -2145.0 388.0 -2145.0 367.0 // King's ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE -2176.0 451.0 -2164.0 456.0 -2148.0 469.0 -2149.0 452.0 -2148.0 469.0 -2149.0 452.0 // King's ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2203.0 451.0 -2190.0 456.0 -2233.0 463.0 -2224.0 462.0 -2233.0 463.0 -2224.0 462.0 // King's ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2280.0 590.0 -2243.0 621.0 -2221.0 568.0 -2260.0 568.0 -2221.0 568.0 -2260.0 568.0 // Kings ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2235.0 537.0 -2217.0 552.0 -2196.0 569.0 -2233.0 569.0 -2196.0 569.0 -2233.0 569.0 // King's ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE -2327.0 391.0 -2326.0 417.0 -2332.0 439.0 -2310.0 416.0 -2332.0 439.0 -2310.0 416.0 // Queens ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2442.0 421.0 -2419.0 424.0 -2468.0 420.0 -2450.0 403.0 -2468.0 420.0 -2450.0 403.0 // Queens ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2488.0 427.0 -2458.0 429.0 -2517.0 434.0 -2496.0 450.0 -2517.0 434.0 -2496.0 450.0 // Queens ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2549.0 307.0 -2528.0 329.0 -2558.0 339.0 -2540.0 339.0 -2558.0 339.0 -2540.0 339.0 // Queens ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE -2592.0 379.0 -2577.0 390.0 -2610.0 407.0 -2608.0 381.0 -2610.0 407.0 -2608.0 381.0 // Queens ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE -2636.0 279.0 -2618.0 307.0 -2639.0 331.0 -2608.0 324.0 -2566.0 345.0 -2605.0 351.0 // City Hall ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE -2651.0 326.0 -2630.0 341.0 -2661.0 359.0 -2660.0 336.0 -2665.0 362.0 -2665.0 330.0 // City Hall ADD_SET_PIECE SETPIECE_CREATETWOCOPPERSONFOOT -2741.0 361.0 -2697.0 390.0 -2714.0 342.0 -2708.0 344.0 -2711.0 347.0 -2706.0 360.0 // City Hall ADD_SET_PIECE SETPIECE_TWOCARSBLOCKINGPLAYERFROMSIDE -2616.0 392.0 -2597.0 416.0 -2578.0 388.0 -2606.0 386.0 -2570.0 346.0 -2606.0 350.0 // City Hall ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE -2653.0 326.0 -2634.0 346.0 -2609.0 359.0 -2609.0 327.0 -2609.0 359.0 -2609.0 327.0 // City Hall ADD_SET_PIECE SETPIECE_CARRAMMINGPLAYERFROMSIDE -2779.0 279.0 -2777.0 303.0 -2806.0 256.0 -2807.0 289.0 -2806.0 256.0 -2807.0 289.0 // Ocenan Flats ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2829.0 -375.0 -2806.0 -347.0 -2789.0 -328.0 -2816.0 -327.0 -2789.0 -328.0 -2816.0 -327.0 // Country Club ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -2823.0 -305.0 -2802.0 -283.0 -2782.0 -328.0 -2814.0 -327.0 -2782.0 -328.0 -2814.0 -327.0 // Cuntclub //--------------------COUNTRYSIDE---------- |ActMINx| ActMINy| ActMAXx| ActMAXy |Gen1x | Gen1y |Help1x| Help1y | Gen2x | Gen2y | Help2x | Help2y // Area ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -1555.0 2574.0 -1536.0 2588.0 -1524.0 2604.0 -1549.0 2604.0 -1524.0 2604.0 -1549.0 2604.0 // el RUEBRADOS ADD_SET_PIECE SETPIECE_CARBLOCKINGPLAYERFROMSIDE -1506.0 2616.0 -1486.0 2625.0 -1470.0 2604.0 -1496.0 2604.0 -1470.0 2604.0 -1496.0 2604.0 // EL RUEBRADOS ADD_SET_PIECE SETPIECE_TWOCARSRAMMINGPLAYERFROMSIDE 2573.0 35.0 2603.0 49.0 2534.0 90.0 2534.0 46.0 2533.0 1.0 2534.0 40.0 // PALOMINO CREEK //---------------------------------------------- |ActMINx| ActMINy| ActMAXx| ActMAXy| Gen1x | Gen1y |Help1x| Help1y | Gen2x | Gen2y | Help2x | Help2y // Area //--- Run the initialisation code that will reset all values for NEW GAME INIT_ZONE_POPULATION_SETTINGS // ****************************************LOS SANTOS PEDS**************************************************** // Trainstations SET_ZONE_POPULATION_TYPE MARKST POPCYCLE_ZONE_SHOPPING_POSH // IN MARKET SET_ZONE_POPULATION_TYPE UNITY POPCYCLE_ZONE_RESIDENTIAL_AVERAGE // IN LITTLE MEXICO // Airport* // NEED ANOTHER ZONE FOR THE SMALL STRIP WIYH BAGGAGE HANDLERS SET_ZONE_POPULATION_TYPE LAIR1 POPCYCLE_ZONE_AIRPORT SET_ZONE_POPULATION_TYPE LAIR2a POPCYCLE_ZONE_AIRPORT SET_ZONE_POPULATION_TYPE LAIR2b POPCYCLE_ZONE_AIRPORT // zone for baggage handlers SET_ZONE_POPULATION_TYPE LBAG1 POPCYCLE_ZONE_AIRPORT_RUNWAY SET_ZONE_POPULATION_TYPE LBAG2 POPCYCLE_ZONE_AIRPORT_RUNWAY SET_ZONE_POPULATION_TYPE LBAG3 POPCYCLE_ZONE_AIRPORT_RUNWAY // Bluffs* // Verdant Bluffs Tourists, few and far between, and walkers/backpackers. SET_ZONE_POPULATION_TYPE BLUF1a POPCYCLE_ZONE_PARK SET_ZONE_POPULATION_TYPE BLUF2 POPCYCLE_ZONE_PARK // Temple - Sunrise* //Tourists, actors, wannabees. SET_ZONE_POPULATION_TYPE SUN1 POPCYCLE_ZONE_ENTERTAINMENT SET_ZONE_POPULATION_TYPE SUN1 POPCYCLE_ZONE_ENTERTAINMENT SET_ZONE_POPULATION_TYPE SUN3a POPCYCLE_ZONE_ENTERTAINMENT SET_ZONE_POPULATION_TYPE SUN3b POPCYCLE_ZONE_ENTERTAINMENT SET_ZONE_POPULATION_TYPE SUN3c POPCYCLE_ZONE_ENTERTAINMENT SET_ZONE_POPULATION_TYPE SUN4 POPCYCLE_ZONE_ENTERTAINMENT SET_ZONE_GANG_STRENGTH SUN1 GANG_GROVE 30 SET_ZONE_GANG_STRENGTH SUN1 GANG_GROVE 30 SET_ZONE_GANG_STRENGTH SUN3a GANG_GROVE 30 SET_ZONE_GANG_STRENGTH SUN3b GANG_GROVE 30 SET_ZONE_GANG_STRENGTH SUN3c GANG_GROVE 30 SET_ZONE_GANG_STRENGTH SUN4 GANG_GROVE 30 // Commerce* // The old heart of the city, with city hall, police station, a hotel and some department stores // Businessmen, tourists, middle class. SET_ZONE_POPULATION_TYPE COM1a POPCYCLE_ZONE_SHOPPING SET_ZONE_POPULATION_TYPE COM1b POPCYCLE_ZONE_SHOPPING SET_ZONE_POPULATION_TYPE COM2 POPCYCLE_ZONE_SHOPPING SET_ZONE_POPULATION_TYPE COM3 POPCYCLE_ZONE_SHOPPING SET_ZONE_POPULATION_TYPE COM4 POPCYCLE_ZONE_SHOPPING //Pershing Square* SET_ZONE_POPULATION_TYPE PER1 POPCYCLE_ZONE_SHOPPING // Las Collinas - Chicano Heights* // goes from a relatively ok, latino, working class area in the west to assortment of shacks // lower class latino to totally scummy latino SET_ZONE_POPULATION_TYPE CHC1a POPCYCLE_ZONE_RESIDENTIAL_POOR SET_ZONE_POPULATION_TYPE CHC1b POPCYCLE_ZONE_RESIDENTIAL_POOR SET_ZONE_POPULATION_TYPE CHC2a POPCYCLE_ZONE_RESIDENTIAL_POOR SET_ZONE_POPULATION_TYPE CHC2b POPCYCLE_ZONE_RESIDENTIAL_POOR SET_ZONE_POPULATION_TYPE CHC3 POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_TYPE CHC4a POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_TYPE CHC4b POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_RACE CHC1a POPRACE_HB SET_ZONE_POPULATION_RACE CHC1b POPRACE_HB SET_ZONE_POPULATION_RACE CHC2a POPRACE_HB SET_ZONE_POPULATION_RACE CHC2b POPRACE_HB SET_ZONE_POPULATION_RACE CHC3 POPRACE_HB SET_ZONE_POPULATION_RACE CHC4a POPRACE_HB SET_ZONE_POPULATION_RACE CHC4b POPRACE_HB SET_ZONE_GANG_STRENGTH CHC1a GANG_NMEX 40 SET_ZONE_GANG_STRENGTH CHC1b GANG_NMEX 40 SET_ZONE_GANG_STRENGTH CHC2a GANG_NMEX 40 SET_ZONE_GANG_STRENGTH CHC2b GANG_NMEX 40 SET_ZONE_GANG_STRENGTH CHC3 GANG_NMEX 40 SET_ZONE_GANG_STRENGTH CHC4a GANG_NMEX 40 SET_ZONE_GANG_STRENGTH CHC4b GANG_NMEX 40 SET_ZONE_DEALER_STRENGTH CHC1a 4 SET_ZONE_DEALER_STRENGTH CHC1b 4 SET_ZONE_DEALER_STRENGTH CHC2a 4 SET_ZONE_DEALER_STRENGTH CHC2b 4 SET_ZONE_DEALER_STRENGTH CHC3 4 SET_ZONE_DEALER_STRENGTH CHC4a 4 SET_ZONE_DEALER_STRENGTH CHC4b 4 // Conference Centre* // Businessmen and tourists SET_ZONE_POPULATION_TYPE CONF1a POPCYCLE_ZONE_BUSINESS SET_ZONE_POPULATION_TYPE CONF1b POPCYCLE_ZONE_BUSINESS // Town Hall* SET_ZONE_POPULATION_TYPE THALL1 POPCYCLE_ZONE_BUSINESS // Docks* // Dock workers SET_ZONE_POPULATION_TYPE LDOC1a POPCYCLE_ZONE_INDUSTRY SET_ZONE_POPULATION_TYPE LDOC1b POPCYCLE_ZONE_INDUSTRY SET_ZONE_POPULATION_TYPE LDOC2 POPCYCLE_ZONE_INDUSTRY SET_ZONE_POPULATION_TYPE LDOC3a POPCYCLE_ZONE_INDUSTRY SET_ZONE_POPULATION_TYPE LDOC3b POPCYCLE_ZONE_INDUSTRY SET_ZONE_POPULATION_TYPE LDOC3c POPCYCLE_ZONE_INDUSTRY SET_ZONE_POPULATION_TYPE LDOC4 POPCYCLE_ZONE_INDUSTRY // Downtown* // Businessmen SET_ZONE_POPULATION_TYPE LDT1a POPCYCLE_ZONE_BUSINESS SET_ZONE_POPULATION_TYPE LDT1b POPCYCLE_ZONE_BUSINESS SET_ZONE_POPULATION_TYPE LDT1c POPCYCLE_ZONE_BUSINESS SET_ZONE_POPULATION_TYPE LDT3 POPCYCLE_ZONE_BUSINESS SET_ZONE_POPULATION_TYPE LDT4 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE LDT5 POPCYCLE_ZONE_BUSINESS SET_ZONE_POPULATION_TYPE LDT6 POPCYCLE_ZONE_BUSINESS SET_ZONE_POPULATION_TYPE LDT7 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE // East Beach* // Mixture of black and latino gangs populate this area, // along the main avenue it can seem quite nice during the day: Lower and middle class, all races. // Gang here: GANG_NMEX SET_ZONE_POPULATION_TYPE EBE1 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE EBE2a POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE EBE2b POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE EBE3c POPCYCLE_ZONE_BEACH SET_ZONE_GANG_STRENGTH EBE1 GANG_NMEX 30 SET_ZONE_GANG_STRENGTH EBE2a GANG_NMEX 30 SET_ZONE_GANG_STRENGTH EBE2b GANG_NMEX 30 SET_ZONE_GANG_STRENGTH EBE3c GANG_NMEX 30 SET_ZONE_DEALER_STRENGTH EBE1 2 SET_ZONE_DEALER_STRENGTH EBE2a 2 SET_ZONE_DEALER_STRENGTH EBE2b 2 SET_ZONE_DEALER_STRENGTH EBE3c 2 // El Corona* // The traditional home of the fishermen, dockworkers and navy staff // A bit of a rough area, with a gang presence. Lower class black and Mexican. // Gang here: GANG_SMEX SET_ZONE_POPULATION_TYPE ELCO1 POPCYCLE_ZONE_RESIDENTIAL_POOR SET_ZONE_POPULATION_TYPE ELCO2 POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_RACE ELCO1 POPRACE_HB SET_ZONE_POPULATION_RACE ELCO2 POPRACE_HB SET_ZONE_GANG_STRENGTH ELCO1 GANG_SMEX 40 SET_ZONE_GANG_STRENGTH ELCO2 GANG_SMEX 40 // Ganton* // This is where the player hub is. Gang area, scary looking houses - Black gang area // Gang here: GANG_GROVE SET_ZONE_POPULATION_TYPE GAN1 POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_TYPE GAN2 POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_RACE GAN1 POPRACE_B SET_ZONE_POPULATION_RACE GAN2 POPRACE_B SET_ZONE_GANG_STRENGTH GAN1 GANG_GROVE 25 // reduced from 40 - should be increased after first 4\5 missions SET_ZONE_GANG_STRENGTH GAN2 GANG_GROVE 25 // was 40 SET_ZONE_NO_COPS GAN1 TRUE // Glen Park* // Aspiring blue collar workers mingle with young urban professionals starting out. // Gang here: GANG_FLAT (Glan 1 and 4 only) SET_ZONE_POPULATION_TYPE GLN1 POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_TYPE GLN2a POPCYCLE_ZONE_GANGLAND SET_ZONE_GANG_STRENGTH GLN1 GANG_FLAT 40 SET_ZONE_GANG_STRENGTH GLN2a GANG_FLAT 40 SET_ZONE_DEALER_STRENGTH GLN1 6 SET_ZONE_DEALER_STRENGTH GLN2a 2 // Willowfield - Industrial* // Rundown collection of industrial units, run down shops and houses - Lower class, all races SET_ZONE_POPULATION_TYPE LIND1a POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_TYPE LIND1b POPCYCLE_ZONE_INDUSTRY SET_ZONE_POPULATION_TYPE LIND2a POPCYCLE_ZONE_INDUSTRY SET_ZONE_POPULATION_TYPE LIND2b POPCYCLE_ZONE_INDUSTRY SET_ZONE_POPULATION_TYPE LIND3 POPCYCLE_ZONE_INDUSTRY SET_ZONE_GANG_STRENGTH LIND1a GANG_FLAT 20 SET_ZONE_GANG_STRENGTH LIND1b GANG_FLAT 20 SET_ZONE_GANG_STRENGTH LIND2a GANG_FLAT 20 SET_ZONE_GANG_STRENGTH LIND2b GANG_FLAT 20 SET_ZONE_GANG_STRENGTH LIND3 GANG_FLAT 20 // Idlewood* // Gangster houses and a few nicer well kept bungalows side by side. // Lower class black and black gangs. // Gang here: GANG_FLAT SET_ZONE_POPULATION_TYPE IWD1 POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_TYPE IWD2 POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_TYPE IWD3a POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_TYPE IWD3b POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_TYPE IWD4 POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_TYPE IWD5 POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_RACE IWD1 POPRACE_B SET_ZONE_POPULATION_RACE IWD2 POPRACE_B SET_ZONE_POPULATION_RACE IWD3a POPRACE_B SET_ZONE_POPULATION_RACE IWD3b POPRACE_B SET_ZONE_POPULATION_RACE IWD4 POPRACE_B SET_ZONE_POPULATION_RACE IWD5 POPRACE_B SET_ZONE_GANG_STRENGTH IWD1 GANG_FLAT 20 SET_ZONE_GANG_STRENGTH IWD2 GANG_FLAT 20 SET_ZONE_GANG_STRENGTH IWD3a GANG_FLAT 20 SET_ZONE_GANG_STRENGTH IWD3b GANG_FLAT 20 SET_ZONE_GANG_STRENGTH IWD4 GANG_FLAT 10 //SET_ZONE_GANG_STRENGTH IWD4 GANG_FLAT 20 SET_ZONE_GANG_STRENGTH IWD5 GANG_FLAT 20 SET_ZONE_DEALER_STRENGTH IWD1 2 SET_ZONE_DEALER_STRENGTH IWD2 2 SET_ZONE_DEALER_STRENGTH IWD3a 2 SET_ZONE_DEALER_STRENGTH IWD3b 2 SET_ZONE_DEALER_STRENGTH IWD4 2 SET_ZONE_DEALER_STRENGTH IWD5 2 // Jefferson* // More affluent black area, still has gangs though. // Lower middle class black and gangs // Gang here: GANG_FLAT SET_ZONE_POPULATION_TYPE JEF1a POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE JEF1b POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE JEF2 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE JEF3a POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE JEF3b POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE JEF3c POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_GANG_STRENGTH JEF1a GANG_FLAT 40 SET_ZONE_GANG_STRENGTH JEF1b GANG_FLAT 40 SET_ZONE_GANG_STRENGTH JEF2 GANG_FLAT 40 //SET_ZONE_GANG_STRENGTH JEF3a GANG_FLAT 40 commented because the hospital is here SET_ZONE_GANG_STRENGTH JEF3b GANG_FLAT 40 SET_ZONE_GANG_STRENGTH JEF3c GANG_FLAT 40 SET_ZONE_DEALER_STRENGTH JEF1a 6 SET_ZONE_DEALER_STRENGTH JEF1b 6 SET_ZONE_DEALER_STRENGTH JEF2 6 // SET_ZONE_DEALER_STRENGTH JEF3a commented because the hospital is here SET_ZONE_DEALER_STRENGTH JEF3b 6 SET_ZONE_DEALER_STRENGTH JEF3c 6 // Los Flores* // Lower class latino and black. // Gang here: GANG_NMEX SET_ZONE_POPULATION_TYPE LFL1a POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_TYPE LFL1b POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_RACE LFL1a POPRACE_HB SET_ZONE_POPULATION_RACE LFL1b POPRACE_HB SET_ZONE_GANG_STRENGTH LFL1a GANG_NMEX 40 SET_ZONE_GANG_STRENGTH LFL1b GANG_NMEX 40 SET_ZONE_DEALER_STRENGTH LFL1a 4 SET_ZONE_DEALER_STRENGTH LFL1b 4 // Little Mexico* // Tourists and Mexicans SET_ZONE_POPULATION_TYPE LMEX1a POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE LMEX1b POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_GANG_STRENGTH LMEX1a GANG_SMEX 30 SET_ZONE_GANG_STRENGTH LMEX1b GANG_SMEX 30 // East Los Santos* // The main Latino area of the city, pretty run down and gang populated. // lower class Mexican and Mexican gangs. // Gang here: GANG_FLAT(lower area) SET_ZONE_POPULATION_TYPE ELS1a POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_TYPE ELS1b POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_TYPE ELS2 POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_TYPE ELS3a POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_TYPE ELS3b POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_TYPE ELS4 POPCYCLE_ZONE_GANGLAND SET_ZONE_POPULATION_RACE ELS1a POPRACE_HW SET_ZONE_POPULATION_RACE ELS1b POPRACE_HW SET_ZONE_POPULATION_RACE ELS2 POPRACE_HW SET_ZONE_POPULATION_RACE ELS3a POPRACE_HW SET_ZONE_POPULATION_RACE ELS3b POPRACE_HW SET_ZONE_POPULATION_RACE ELS4 POPRACE_HW SET_ZONE_GANG_STRENGTH ELS1a GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS1b GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS2 GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS3a GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS3b GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS4 GANG_FLAT 30 SET_ZONE_DEALER_STRENGTH ELS1a 2 SET_ZONE_DEALER_STRENGTH ELS1b 2 SET_ZONE_DEALER_STRENGTH ELS2 2 SET_ZONE_DEALER_STRENGTH ELS3a 2 SET_ZONE_DEALER_STRENGTH ELS3b 2 SET_ZONE_DEALER_STRENGTH ELS4 2 // Marina* // Nice residential area and resort, Middle class white SET_ZONE_POPULATION_TYPE MAR1 POPCYCLE_ZONE_RESIDENTIAL_RICH SET_ZONE_POPULATION_TYPE MAR2 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE MAR3 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE // Market* // General nice residential and shopping area // Businessmen, tourists, middle class,rich ladies out shopping. SET_ZONE_POPULATION_TYPE MKT1 POPCYCLE_ZONE_SHOPPING_POSH SET_ZONE_POPULATION_TYPE MKT2 POPCYCLE_ZONE_SHOPPING_POSH SET_ZONE_POPULATION_TYPE MKT3 POPCYCLE_ZONE_SHOPPING_POSH SET_ZONE_POPULATION_TYPE MKT4 POPCYCLE_ZONE_SHOPPING_POSH // Mulholland* // Really nice houses of all descriptions. Rich, affluent white. SET_ZONE_POPULATION_TYPE MUL1a POPCYCLE_ZONE_RESIDENTIAL_RICH_SECLUDED SET_ZONE_POPULATION_TYPE MUL1b POPCYCLE_ZONE_RESIDENTIAL_RICH_SECLUDED SET_ZONE_POPULATION_TYPE MUL1c POPCYCLE_ZONE_RESIDENTIAL_RICH_SECLUDED SET_ZONE_POPULATION_TYPE MUL2a POPCYCLE_ZONE_PARK SET_ZONE_POPULATION_TYPE MUL2b POPCYCLE_ZONE_PARK SET_ZONE_POPULATION_TYPE MUL3 POPCYCLE_ZONE_PARK SET_ZONE_POPULATION_TYPE MUL4 POPCYCLE_ZONE_RESIDENTIAL_RICH_SECLUDED SET_ZONE_POPULATION_TYPE MUL5a POPCYCLE_ZONE_RESIDENTIAL_RICH_SECLUDED SET_ZONE_POPULATION_TYPE MUL5b POPCYCLE_ZONE_RESIDENTIAL_RICH_SECLUDED SET_ZONE_POPULATION_TYPE MUL5c POPCYCLE_ZONE_RESIDENTIAL_RICH_SECLUDED SET_ZONE_POPULATION_TYPE MUL6 POPCYCLE_ZONE_RESIDENTIAL_RICH_SECLUDED SET_ZONE_POPULATION_TYPE MUL7a POPCYCLE_ZONE_RESIDENTIAL_RICH_SECLUDED SET_ZONE_POPULATION_TYPE MUL7b POPCYCLE_ZONE_RESIDENTIAL_RICH_SECLUDED // Playa del Seville* SET_ZONE_POPULATION_TYPE PLS POPCYCLE_ZONE_BEACH SET_ZONE_GANG_STRENGTH PLS GANG_GROVE 10 // Richman* // Super rich and affluent white, movie stars and moguls SET_ZONE_POPULATION_TYPE RIH1a POPCYCLE_ZONE_RESIDENTIAL_RICH_SECLUDED SET_ZONE_POPULATION_TYPE RIH1b POPCYCLE_ZONE_RESIDENTIAL_RICH_SECLUDED SET_ZONE_POPULATION_TYPE RIH2 POPCYCLE_ZONE_RESIDENTIAL_RICH_SECLUDED SET_ZONE_POPULATION_TYPE RIH3a POPCYCLE_ZONE_RESIDENTIAL_RICH_SECLUDED SET_ZONE_POPULATION_TYPE RIH3b POPCYCLE_ZONE_RESIDENTIAL_RICH_SECLUDED SET_ZONE_POPULATION_TYPE RIH4 POPCYCLE_ZONE_RESIDENTIAL_RICH SET_ZONE_POPULATION_TYPE RIH5a POPCYCLE_ZONE_RESIDENTIAL_RICH SET_ZONE_POPULATION_TYPE RIH6b POPCYCLE_ZONE_RESIDENTIAL_RICH SET_ZONE_POPULATION_TYPE RIH5a POPCYCLE_ZONE_RESIDENTIAL_RICH SET_ZONE_POPULATION_TYPE RIH6b POPCYCLE_ZONE_RESIDENTIAL_RICH // Rodeo* // ultra expensive shopping paradise. Super rich and affluent white SET_ZONE_POPULATION_TYPE ROD1a POPCYCLE_ZONE_SHOPPING_POSH SET_ZONE_POPULATION_TYPE ROD1b POPCYCLE_ZONE_SHOPPING_POSH SET_ZONE_POPULATION_TYPE ROD1c POPCYCLE_ZONE_SHOPPING_POSH SET_ZONE_POPULATION_TYPE ROD2a POPCYCLE_ZONE_SHOPPING_POSH SET_ZONE_POPULATION_TYPE ROD2b POPCYCLE_ZONE_SHOPPING_POSH SET_ZONE_POPULATION_TYPE ROD3a POPCYCLE_ZONE_SHOPPING_POSH SET_ZONE_POPULATION_TYPE ROD3b POPCYCLE_ZONE_SHOPPING_POSH SET_ZONE_POPULATION_TYPE ROD4a POPCYCLE_ZONE_SHOPPING_POSH SET_ZONE_POPULATION_TYPE ROD4b POPCYCLE_ZONE_SHOPPING_POSH SET_ZONE_POPULATION_TYPE ROD4c POPCYCLE_ZONE_SHOPPING_POSH SET_ZONE_POPULATION_TYPE ROD5a POPCYCLE_ZONE_RESIDENTIAL_RICH SET_ZONE_POPULATION_TYPE ROD5b POPCYCLE_ZONE_RESIDENTIAL_RICH // Santa Maria Beach* // Touristy beach area, Middle class white. SET_ZONE_POPULATION_TYPE SMB1 POPCYCLE_ZONE_BEACH SET_ZONE_POPULATION_TYPE SMB2 POPCYCLE_ZONE_BEACH SET_ZONE_GANG_STRENGTH SMB1 GANG_GROVE 10 SET_ZONE_GANG_STRENGTH SMB2 GANG_GROVE 10 // Studio - Vinewood* // Tourists, middle class white, actors SET_ZONE_POPULATION_TYPE VIN2 POPCYCLE_ZONE_ENTERTAINMENT SET_ZONE_POPULATION_TYPE VIN3 POPCYCLE_ZONE_ENTERTAINMENT SET_ZONE_POPULATION_TYPE VIN1a POPCYCLE_ZONE_ENTERTAINMENT SET_ZONE_POPULATION_TYPE VIN1b POPCYCLE_ZONE_ENTERTAINMENT SET_ZONE_GANG_STRENGTH VIN2 GANG_GROVE 10 // Verona Beach* // The arty beach, with California wackos mingling with foreign bohemians // black and latino gang members A bit dodgy after dark. Artists, musclemen, tourists, lower class white. SET_ZONE_POPULATION_TYPE VERO1 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE VERO2 POPCYCLE_ZONE_SHOPPING SET_ZONE_POPULATION_TYPE VERO3 POPCYCLE_ZONE_SHOPPING SET_ZONE_POPULATION_TYPE VERO4a POPCYCLE_ZONE_BEACH SET_ZONE_POPULATION_TYPE VERO4b POPCYCLE_ZONE_BEACH SET_ZONE_GANG_STRENGTH VERO1 GANG_FLAT 10 SET_ZONE_GANG_STRENGTH VERO2 GANG_FLAT 10 SET_ZONE_GANG_STRENGTH VERO3 GANG_FLAT 10 SET_ZONE_GANG_STRENGTH VERO4a GANG_FLAT 10 SET_ZONE_GANG_STRENGTH VERO4b GANG_FLAT 10 SET_ZONE_DEALER_STRENGTH VERO1 2 SET_ZONE_DEALER_STRENGTH VERO2 2 SET_ZONE_DEALER_STRENGTH VERO3 2 SET_ZONE_DEALER_STRENGTH VERO4a 2 SET_ZONE_DEALER_STRENGTH VERO4b 2 // ******************************************SAN FRAN PEDS **************************************************** // Trainstations SET_ZONE_POPULATION_TYPE CRANB POPCYCLE_ZONE_RESIDENTIAL_AVERAGE // Calton Heights SET_ZONE_POPULATION_TYPE CALT POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_GANG_STRENGTH CALT GANG_TRIAD 10 // Bayside Marina SET_ZONE_POPULATION_TYPE SUNMA POPCYCLE_ZONE_RESIDENTIAL_RICH // Bayside SET_ZONE_POPULATION_TYPE SUNNN POPCYCLE_ZONE_RESIDENTIAL_AVERAGE // Battery Point SET_ZONE_POPULATION_TYPE BATTP POPCYCLE_ZONE_ENTERTAINMENT SET_ZONE_GANG_STRENGTH BATTP GANG_SFMEX 25 // Esplanade North SET_ZONE_POPULATION_TYPE ESPN1 POPCYCLE_ZONE_SHOPPING SET_ZONE_POPULATION_TYPE ESPN2 POPCYCLE_ZONE_SHOPPING SET_ZONE_POPULATION_TYPE ESPN3 POPCYCLE_ZONE_SHOPPING SET_ZONE_GANG_STRENGTH ESPN1 GANG_VIET 10 SET_ZONE_GANG_STRENGTH ESPN2 GANG_VIET 10 SET_ZONE_GANG_STRENGTH ESPN3 GANG_VIET 10 // Pallisades SET_ZONE_POPULATION_TYPE BAYV POPCYCLE_ZONE_RESIDENTIAL_AVERAGE //Needs also a park zone //Paradiso SET_ZONE_POPULATION_TYPE PARA POPCYCLE_ZONE_RESIDENTIAL_RICH // Juniper Hollow SET_ZONE_POPULATION_TYPE JUNIHO POPCYCLE_ZONE_RESIDENTIAL_AVERAGE // Juniper Hill SET_ZONE_POPULATION_TYPE JUNIHI POPCYCLE_ZONE_RESIDENTIAL_AVERAGE // Santa Flora SET_ZONE_POPULATION_TYPE CIVI POPCYCLE_ZONE_RESIDENTIAL_AVERAGE // Chinatown SET_ZONE_POPULATION_TYPE CHINA POPCYCLE_ZONE_SHOPPING SET_ZONE_POPULATION_RACE CHINA POPRACE_OW SET_ZONE_GANG_STRENGTH CHINA GANG_TRIAD 40 // Downtown SET_ZONE_POPULATION_TYPE SFDWT1 POPCYCLE_ZONE_BUSINESS SET_ZONE_POPULATION_TYPE SFDWT2 POPCYCLE_ZONE_BUSINESS SET_ZONE_POPULATION_TYPE SFDWT3 POPCYCLE_ZONE_BUSINESS SET_ZONE_POPULATION_TYPE SFDWT4 POPCYCLE_ZONE_SHOPPING SET_ZONE_POPULATION_TYPE SFDWT5 POPCYCLE_ZONE_SHOPPING SET_ZONE_POPULATION_TYPE SFDWT6 POPCYCLE_ZONE_SHOPPING // Financial SET_ZONE_POPULATION_TYPE FINA POPCYCLE_ZONE_BUSINESS // City Hall SET_ZONE_POPULATION_TYPE CITYS POPCYCLE_ZONE_BUSINESS // Westpark SET_ZONE_POPULATION_TYPE WESTP1 POPCYCLE_ZONE_RESIDENTIAL_RICH SET_ZONE_POPULATION_TYPE WESTP2 POPCYCLE_ZONE_RESIDENTIAL_RICH SET_ZONE_POPULATION_TYPE WESTP3 POPCYCLE_ZONE_RESIDENTIAL_RICH // King's Theatre SET_ZONE_POPULATION_TYPE THEA1 POPCYCLE_ZONE_ENTERTAINMENT SET_ZONE_POPULATION_TYPE THEA2 POPCYCLE_ZONE_ENTERTAINMENT SET_ZONE_POPULATION_TYPE THEA3 POPCYCLE_ZONE_ENTERTAINMENT SET_ZONE_GANG_STRENGTH THEA1 GANG_TRIAD 10 SET_ZONE_GANG_STRENGTH THEA3 GANG_SFMEX 10 // Garcia SET_ZONE_POPULATION_TYPE GARC POPCYCLE_ZONE_GANGLAND SET_ZONE_GANG_STRENGTH GARC GANG_SFMEX 40 // Hashbury SET_ZONE_POPULATION_TYPE HASH POPCYCLE_ZONE_RESIDENTIAL_POOR // Ocean Flats SET_ZONE_POPULATION_TYPE OCEAF1 POPCYCLE_ZONE_BEACH SET_ZONE_POPULATION_TYPE OCEAF2 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE OCEAF3 POPCYCLE_ZONE_BEACH // Doherty SF HUB SET_ZONE_POPULATION_TYPE DOH1 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE DOH2 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_GANG_STRENGTH DOH2 GANG_SFMEX 10 // Avispa Country Club SET_ZONE_POPULATION_TYPE CUNTC1 POPCYCLE_ZONE_RESIDENTIAL_RICH SET_ZONE_POPULATION_TYPE CUNTC2 POPCYCLE_ZONE_RESIDENTIAL_RICH SET_ZONE_POPULATION_TYPE CUNTC3 POPCYCLE_ZONE_RESIDENTIAL_RICH //need small zone with golfers in the club SET_ZONE_POPULATION_TYPE SFGLF1 POPCYCLE_ZONE_GOLF_CLUB SET_ZONE_POPULATION_TYPE SFGLF2 POPCYCLE_ZONE_GOLF_CLUB SET_ZONE_POPULATION_TYPE SFGLF3 POPCYCLE_ZONE_GOLF_CLUB SET_ZONE_POPULATION_TYPE SFGLF4 POPCYCLE_ZONE_GOLF_CLUB // Missionary Hill SET_ZONE_POPULATION_TYPE HILLP POPCYCLE_ZONE_PARK // Foster Valley SET_ZONE_POPULATION_TYPE SILLY1 POPCYCLE_ZONE_BUSINESS SET_ZONE_POPULATION_TYPE SILLY2 POPCYCLE_ZONE_BUSINESS SET_ZONE_POPULATION_TYPE SILLY3 POPCYCLE_ZONE_BUSINESS SET_ZONE_POPULATION_TYPE SILLY4 POPCYCLE_ZONE_BUSINESS // Easter Bay Airport SET_ZONE_POPULATION_TYPE SFAIR1 POPCYCLE_ZONE_AIRPORT SET_ZONE_POPULATION_TYPE SFAIR2 POPCYCLE_ZONE_AIRPORT SET_ZONE_POPULATION_TYPE SFAIR3 POPCYCLE_ZONE_AIRPORT SET_ZONE_POPULATION_TYPE SFAIR4 POPCYCLE_ZONE_AIRPORT SET_ZONE_POPULATION_TYPE SFAIR5 POPCYCLE_ZONE_AIRPORT // Small zones for baggage cars SET_ZONE_POPULATION_TYPE SFBAG1 POPCYCLE_ZONE_AIRPORT_RUNWAY SET_ZONE_POPULATION_TYPE SFBAG2 POPCYCLE_ZONE_AIRPORT_RUNWAY SET_ZONE_POPULATION_TYPE SFBAG3 POPCYCLE_ZONE_AIRPORT_RUNWAY // Easter Basin SET_ZONE_POPULATION_TYPE EASB1 POPCYCLE_ZONE_INDUSTRY SET_ZONE_POPULATION_TYPE EASB2 POPCYCLE_ZONE_INDUSTRY SET_ZONE_GANG_STRENGTH EASB1 GANG_VIET 40 SET_ZONE_GANG_STRENGTH EASB2 GANG_VIET 40 // Esplanade East SET_ZONE_POPULATION_TYPE ESPE1 POPCYCLE_ZONE_SHOPPING SET_ZONE_POPULATION_TYPE ESPE2 POPCYCLE_ZONE_SHOPPING SET_ZONE_POPULATION_TYPE ESPE3 POPCYCLE_ZONE_SHOPPING SET_ZONE_GANG_STRENGTH EASB1 GANG_VIET 10 SET_ZONE_GANG_STRENGTH EASB2 GANG_VIET 10 // ******************************************VEGAS PEDS **************************************************** // Trainstations SET_ZONE_POPULATION_TYPE LINDEN POPCYCLE_ZONE_RESIDENTIAL_AVERAGE // Linden Station SET_ZONE_POPULATION_TYPE YELLOW POPCYCLE_ZONE_RESIDENTIAL_RICH // Yellow Bell Station // Blackfield Chapel SET_ZONE_POPULATION_TYPE BFC1 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE BFC2 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE // Randolph Industrial Estate SET_ZONE_POPULATION_TYPE RIE POPCYCLE_ZONE_BUSINESS // Last Dime Motel SET_ZONE_POPULATION_TYPE LDM POPCYCLE_ZONE_RESIDENTIAL_POOR // Rockshore West SET_ZONE_POPULATION_TYPE RSW1 POPCYCLE_ZONE_RESIDENTIAL_POOR SET_ZONE_POPULATION_TYPE RSW2 POPCYCLE_ZONE_RESIDENTIAL_POOR // Rockshore East SET_ZONE_POPULATION_TYPE RSE POPCYCLE_ZONE_RESIDENTIAL_POOR // Linden Side SET_ZONE_POPULATION_TYPE LDS POPCYCLE_ZONE_INDUSTRY // Sobell Rail Yards SET_ZONE_POPULATION_TYPE SRY POPCYCLE_ZONE_RESIDENTIAL_AVERAGE // Julius Thruway South SET_ZONE_POPULATION_TYPE JTS1 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE JTS2 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE // LVA Freight Depot SET_ZONE_POPULATION_TYPE LVA1 POPCYCLE_ZONE_INDUSTRY SET_ZONE_POPULATION_TYPE LVA2 POPCYCLE_ZONE_OUT_OF_TOWN_FACTORY SET_ZONE_POPULATION_TYPE LVA3 POPCYCLE_ZONE_INDUSTRY SET_ZONE_POPULATION_TYPE LVA4 POPCYCLE_ZONE_INDUSTRY // Las Ventura Airport SET_ZONE_POPULATION_TYPE VAIR1 POPCYCLE_ZONE_AIRPORT SET_ZONE_POPULATION_TYPE VAIR2 POPCYCLE_ZONE_AIRPORT SET_ZONE_POPULATION_TYPE VAIR3 POPCYCLE_ZONE_AIRPORT // zone for baggage cars SET_ZONE_POPULATION_TYPE LVBAG POPCYCLE_ZONE_AIRPORT_RUNWAY // Greengrass College SET_ZONE_POPULATION_TYPE GGC1 POPCYCLE_ZONE_PARK SET_ZONE_POPULATION_TYPE GGC2 POPCYCLE_ZONE_ENTERTAINMENT // Blackfield SET_ZONE_POPULATION_TYPE BFLD1 POPCYCLE_ZONE_PARK SET_ZONE_POPULATION_TYPE BFLD2 POPCYCLE_ZONE_ENTERTAINMENT // Whitewood Estates SET_ZONE_POPULATION_TYPE WWE POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE WWE1 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE // Pilson Intersection SET_ZONE_POPULATION_TYPE PINT POPCYCLE_ZONE_RESIDENTIAL_AVERAGE // Yellow Bell Golf Course SET_ZONE_POPULATION_TYPE YBELL2 POPCYCLE_ZONE_RESIDENTIAL_RICH // Golf course for buggies and golfers SET_ZONE_POPULATION_TYPE YBELL1 POPCYCLE_ZONE_GOLF_CLUB // Julius Thruway West SET_ZONE_POPULATION_TYPE JTW1 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE JTW2 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE // Julius Thruway North SET_ZONE_POPULATION_TYPE JTN1 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE JTN2 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE JTN3 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE JTN4 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE JTN5 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE JTN6 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE JTN7 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE JTN8 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE // Julius Thruway East SET_ZONE_POPULATION_TYPE JTE1 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE JTE2 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE JTE3 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE JTE4 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE // Harry Gold Parkway SET_ZONE_POPULATION_TYPE HGP POPCYCLE_ZONE_RESIDENTIAL_RICH // Spinybed SET_ZONE_POPULATION_TYPE SPIN POPCYCLE_ZONE_INDUSTRY // Blackfield Inter. SET_ZONE_POPULATION_TYPE BINT1 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE BINT2 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE BINT3 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE BINT4 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE // Prickle Pine SET_ZONE_POPULATION_TYPE PRP1 POPCYCLE_ZONE_RESIDENTIAL_RICH SET_ZONE_POPULATION_TYPE PRP2 POPCYCLE_ZONE_RESIDENTIAL_RICH SET_ZONE_POPULATION_TYPE PRP3 POPCYCLE_ZONE_RESIDENTIAL_RICH SET_ZONE_POPULATION_TYPE PRP4 POPCYCLE_ZONE_RESIDENTIAL_RICH // Redsands East SET_ZONE_POPULATION_TYPE REDE1 POPCYCLE_ZONE_BUSINESS SET_ZONE_POPULATION_TYPE REDE2 POPCYCLE_ZONE_BUSINESS SET_ZONE_POPULATION_TYPE REDE3 POPCYCLE_ZONE_ENTERTAINMENT // Redsands West SET_ZONE_POPULATION_TYPE REDW1 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE REDW2 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE SET_ZONE_POPULATION_TYPE REDW3 POPCYCLE_ZONE_INDUSTRY SET_ZONE_POPULATION_TYPE REDW4 POPCYCLE_ZONE_RESIDENTIAL_AVERAGE // Roca Escalante SET_ZONE_POPULATION_TYPE ROCE1 POPCYCLE_ZONE_BUSINESS SET_ZONE_POPULATION_TYPE ROCE2 POPCYCLE_ZONE_BUSINESS // Old Venturas Strip SET_ZONE_POPULATION_TYPE OVS POPCYCLE_ZONE_ENTERTAINMENT_BUSY // Creek SET_ZONE_POPULATION_TYPE CREE POPCYCLE_ZONE_SHOPPING // The Strip SET_ZONE_POPULATION_TYPE STRIP1 POPCYCLE_ZONE_ENTERTAINMENT_BUSY SET_ZONE_POPULATION_TYPE STRIP2 POPCYCLE_ZONE_ENTERTAINMENT_BUSY SET_ZONE_POPULATION_TYPE STRIP3 POPCYCLE_ZONE_ENTERTAINMENT_BUSY SET_ZONE_POPULATION_TYPE STRIP4 POPCYCLE_ZONE_ENTERTAINMENT_BUSY // Pilgrim SET_ZONE_POPULATION_TYPE PILL1 POPCYCLE_ZONE_SHOPPING SET_ZONE_POPULATION_TYPE PILL2 POPCYCLE_ZONE_SHOPPING // The Ring Master SET_ZONE_POPULATION_TYPE RING POPCYCLE_ZONE_ENTERTAINMENT_BUSY // The Emeral Isle SET_ZONE_POPULATION_TYPE ISLE POPCYCLE_ZONE_ENTERTAINMENT_BUSY // Starfish Casino SET_ZONE_POPULATION_TYPE STAR1 POPCYCLE_ZONE_ENTERTAINMENT_BUSY SET_ZONE_POPULATION_TYPE STAR2 POPCYCLE_ZONE_ENTERTAINMENT_BUSY // Royale Casino SET_ZONE_POPULATION_TYPE ROY POPCYCLE_ZONE_ENTERTAINMENT_BUSY // The Camel's Toe SET_ZONE_POPULATION_TYPE CAM POPCYCLE_ZONE_ENTERTAINMENT_BUSY // Come-A-Lot SET_ZONE_POPULATION_TYPE LOT POPCYCLE_ZONE_ENTERTAINMENT_BUSY // Pirates In Men's Pants SET_ZONE_POPULATION_TYPE PIRA POPCYCLE_ZONE_ENTERTAINMENT_BUSY // Visage SET_ZONE_POPULATION_TYPE VISA1 POPCYCLE_ZONE_ENTERTAINMENT_BUSY SET_ZONE_POPULATION_TYPE VISA2 POPCYCLE_ZONE_ENTERTAINMENT_BUSY // Caligula's Palace SET_ZONE_POPULATION_TYPE CALI1 POPCYCLE_ZONE_ENTERTAINMENT_BUSY SET_ZONE_POPULATION_TYPE CALI2 POPCYCLE_ZONE_ENTERTAINMENT_BUSY // Four Dragons Casino SET_ZONE_POPULATION_TYPE DRAG POPCYCLE_ZONE_ENTERTAINMENT_BUSY // The Pink Swan SET_ZONE_POPULATION_TYPE PINK POPCYCLE_ZONE_ENTERTAINMENT_BUSY // The High Roller SET_ZONE_POPULATION_TYPE HIGH POPCYCLE_ZONE_ENTERTAINMENT_BUSY // Construction zone near starfish casino SET_ZONE_POPULATION_TYPE CONST1 POPCYCLE_ZONE_OUT_OF_TOWN_FACTORY // ******************************************COUNTRYSIDE & DESERT PEDS **************************************************** SET_ZONE_POPULATION_TYPE ANGPI POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE SHACA POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE BACKO POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE BEACO POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE FARM POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE PALO POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE MONT POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE MONT1 POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE MTCHI1 POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE MTCHI2 POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE MTCHI3 POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE MTCHI4 POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE HBARNS POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE DILLI POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE TOPFA POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE BLUEB POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE BLUEB1 POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE PANOP POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE BLUAC POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE CREEK POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE CREEK1 POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE MAKO POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE TOPFA POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE FERN POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE NROCK POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE HANKY POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE LEAFY POPCYCLE_ZONE_COUNTRYSIDE SET_ZONE_POPULATION_TYPE RED POPCYCLE_ZONE_COUNTRYSIDE //Red Country SET_ZONE_POPULATION_TYPE FLINTC POPCYCLE_ZONE_COUNTRYSIDE // Flint County SET_ZONE_POPULATION_TYPE WHET POPCYCLE_ZONE_COUNTRYSIDE // Whetstone SET_ZONE_POPULATION_TYPE BIGE POPCYCLE_ZONE_DESERT SET_ZONE_POPULATION_TYPE ELQUE POPCYCLE_ZONE_DESERT SET_ZONE_POPULATION_TYPE BARRA POPCYCLE_ZONE_DESERT SET_ZONE_POPULATION_TYPE CARSO POPCYCLE_ZONE_DESERT SET_ZONE_POPULATION_TYPE PAYAS POPCYCLE_ZONE_DESERT SET_ZONE_POPULATION_TYPE PROBE POPCYCLE_ZONE_DESERT SET_ZONE_POPULATION_TYPE ELCA POPCYCLE_ZONE_DESERT SET_ZONE_POPULATION_TYPE FLINTR POPCYCLE_ZONE_DESERT SET_ZONE_POPULATION_TYPE ARCO POPCYCLE_ZONE_DESERT SET_ZONE_POPULATION_TYPE VALLE POPCYCLE_ZONE_DESERT SET_ZONE_POPULATION_TYPE FLINTI POPCYCLE_ZONE_DESERT SET_ZONE_POPULATION_TYPE MONINT POPCYCLE_ZONE_DESERT SET_ZONE_POPULATION_TYPE ROBINT POPCYCLE_ZONE_DESERT SET_ZONE_POPULATION_TYPE TOM POPCYCLE_ZONE_DESERT SET_ZONE_POPULATION_TYPE ALDEA POPCYCLE_ZONE_DESERT SET_ZONE_POPULATION_TYPE BRUJA POPCYCLE_ZONE_DESERT SET_ZONE_POPULATION_TYPE ROBAD POPCYCLE_ZONE_DESERT // Tierra Robada SET_ZONE_POPULATION_TYPE BONE POPCYCLE_ZONE_DESERT // Bone County SET_ZONE_POPULATION_TYPE HAUL POPCYCLE_ZONE_OUT_OF_TOWN_FACTORY SET_ZONE_POPULATION_TYPE QUARY POPCYCLE_ZONE_OUT_OF_TOWN_FACTORY SET_ZONE_POPULATION_TYPE OCTAN POPCYCLE_ZONE_OUT_OF_TOWN_FACTORY SET_ZONE_POPULATION_TYPE PALMS POPCYCLE_ZONE_OUT_OF_TOWN_FACTORY SET_ZONE_POPULATION_TYPE EBAY POPCYCLE_ZONE_OUT_OF_TOWN_FACTORY SET_ZONE_POPULATION_TYPE EBAY2 POPCYCLE_ZONE_OUT_OF_TOWN_FACTORY SET_ZONE_POPULATION_TYPE DAM POPCYCLE_ZONE_OUT_OF_TOWN_FACTORY ////////////////////////////////////////////////////////////////////////////////////// ////////////////// PICKUPS ///////////////////////// ////////////////////////////////////////////////////////////////////////////////////// // Horseshoes in vegas VAR_INT pickup_horseshoe[50] CREATE_HORSESHOE_PICKUP 1224.0 2617.0 11.0 pickup_horseshoe[0] // Prickle Pine, In the porch of this house in LV suburbs. CREATE_HORSESHOE_PICKUP 2323.0 1284.0 97.0 pickup_horseshoe[1] // Camel's Toe, Right at the top of the big pyramid CREATE_HORSESHOE_PICKUP 2035.0 2305.0 18.0 pickup_horseshoe[2] // Emerald Isle - Frog's Pawn Shop, Go up the stairs at the gym, jump on to the next roof, get on to the thin piece of wall, take a run, jump and cling on to the next roof above the Frog's Pawn store. CREATE_HORSESHOE_PICKUP 2491.0 2263.0 15.0 pickup_horseshoe[3] // Roca Escalante : Erotic Wedding Chapel - Climb the box at the front of the chapel and jump on to the roof. CREATE_HORSESHOE_PICKUP 1433.0 2796.0 20.0 pickup_horseshoe[4] // Yellow Bell Golf House, On the roof of the golf house. The roof is fairly low to the ground and easy to get on to from the roof of a vehicle or wall. CREATE_HORSESHOE_PICKUP 2071.0 0712.0 11.0 pickup_horseshoe[5] // Rockshore West, In the back garden of this house in the suburbs. CREATE_HORSESHOE_PICKUP 2239.0 1839.0 18.0 pickup_horseshoe[6] // The Ring Master, On top of the ring master building. Player must climb a wall to gain access to the roof. Would be better on the coloured roof, but that can't be walked up. CREATE_HORSESHOE_PICKUP 2583.0 2387.0 16.0 pickup_horseshoe[7] // Roca Escalante: Rock Hotel, In the middle of the guitar shaped swimming pool in the Rock Hotel. CREATE_HORSESHOE_PICKUP 2864.0 0857.0 13.0 pickup_horseshoe[8] // Rockshore East, Inside a skip behind a warehouse in this compound. CREATE_HORSESHOE_PICKUP 2612.0 2200.0 -1.0 pickup_horseshoe[9] // Old Venturas Railway Tunnel, Follow the tunnel along from the entrance in Roca Escalante, until the entrance can't be seen any more, so the package is hidden from view. CREATE_HORSESHOE_PICKUP 2274.0 1507.0 24.0 pickup_horseshoe[10] // Royale Casino Car Park, On trhe third floor of this multi storey car park, hidden out of sight. CREATE_HORSESHOE_PICKUP 2184.0 2529.0 11.0 pickup_horseshoe[11] // Julius Thruway North, Hidden in this small garage enclosure. CREATE_HORSESHOE_PICKUP 1863.0 2314.0 15.0 pickup_horseshoe[12] // Redsands East, On top of this roof. Vehicle / heli required. CREATE_HORSESHOE_PICKUP 2054.0 2434.0 166.0 pickup_horseshoe[13] // Las Venturas, Land a heli on the small area at the very top of this building. CREATE_HORSESHOE_PICKUP 1603.0 1435.0 11.0 pickup_horseshoe[14] // Las Venturas Airport, Beneath a staircase round the back of the airport. CREATE_HORSESHOE_PICKUP 1362.92 1015.24 11.0 pickup_horseshoe[15] // LVA Freight Depot, Hidden in the small gap between the warehouse and the wall. CREATE_HORSESHOE_PICKUP 2058.7 2159.10 16.0 pickup_horseshoe[16] // Redsands East, Get up on the roof of the motel and run round to the back to find the horseshoe on the sheltered balcony CREATE_HORSESHOE_PICKUP 2003.0 1672.0 12.0 pickup_horseshoe[17] // The Pirates in Men's Pants, Package in a cool place, slightly obscured by bushes. CREATE_HORSESHOE_PICKUP 2238.0 1135.0 49.0 pickup_horseshoe[18] // Come-A-Lot, Land a heli on this parapet to get the goods. CREATE_HORSESHOE_PICKUP 1934.06 0988.79 22.0 pickup_horseshoe[19] // The Four Dragons Casino, In the dark garage beneath the Four Dragons Casino. CREATE_HORSESHOE_PICKUP 1768.0 2847.0 09.0 pickup_horseshoe[20] // Prickle Pine, In this shallow pool within some housing. CREATE_HORSESHOE_PICKUP 1084.0 1076.0 11.0 pickup_horseshoe[21] // Greenglass College, In the front garden of the college. Easy to get. CREATE_HORSESHOE_PICKUP 2879.0 2522.0 11.0 pickup_horseshoe[22] // Creek, Hidden behind this mall on the outskirts of town. CREATE_HORSESHOE_PICKUP 2371.0 2009.0 15.0 pickup_horseshoe[23] // Starfish Casino, Use a vehicle to access this thin piece of roofing. CREATE_HORSESHOE_PICKUP 1521.0 1690.0 10.6 pickup_horseshoe[24] // Las Venturas Airport, Heli required to access this roof. CREATE_HORSESHOE_PICKUP 2417.0 1281.0 21.0 pickup_horseshoe[25] // The Camel's Toe, Get up on the sphinx, turn on to the walkway and follow it round to the other side of the pyramid. CREATE_HORSESHOE_PICKUP 1376.0 2304.0 15.0 pickup_horseshoe[26] // Pilson Intersection, Use a vehicle to get on to the wall. CREATE_HORSESHOE_PICKUP 1393.0 1832.0 12.34 pickup_horseshoe[27] // Las Venturas Airport, Hidden from view by some bushes and such. CREATE_HORSESHOE_PICKUP 0984.0 2563.0 12.0 pickup_horseshoe[28] // Las Venturas, Under the Welcome sign. CREATE_HORSESHOE_PICKUP 1767.0 0601.0 13.0 pickup_horseshoe[29] // Randolph Industrial Estate, Hidden below this bridge on the way out of town. CREATE_HORSESHOE_PICKUP 2108.0 1003.0 46.0 pickup_horseshoe[30] // Come-A-Lot, Jetpack required. At the top of the Come-a-Lot sign. CREATE_HORSESHOE_PICKUP 2705.98 1862.52 24.41 pickup_horseshoe[31] // Juluis Thruway East, Jetpack only. The collision for the middle of this sign needs to be altered, so maybe the Z value of this needs to be increased by a metre or so. CREATE_HORSESHOE_PICKUP 2493.0 0922.0 16.0 pickup_horseshoe[32] // Las Venturas, On the roof of this wedding chapel, behind the parapet, This can be accessed from ground level. CREATE_HORSESHOE_PICKUP 1881.0 2846.0 11.0 pickup_horseshoe[33] // Prickle Pine, Stashed behind the gate to one of the tennis courts in this motel complex. CREATE_HORSESHOE_PICKUP 2020.0 2352.0 11.0 pickup_horseshoe[34] // Emerald Isle, In this small enclosure near the Emerald Isle. CREATE_HORSESHOE_PICKUP 1680.30 2226.86 16.11 pickup_horseshoe[35] // Redsands West, On the roof of the Steakhouse restaurant, away from the road to conceal it more. CREATE_HORSESHOE_PICKUP 1462.0 0936.0 10.0 pickup_horseshoe[36] // LvA Freight Depot, In this slightly sloped factory entrance. CREATE_HORSESHOE_PICKUP 2125.50 0789.23 11.45 pickup_horseshoe[37] // Rockshore West, Beside the bin in this garden [74] // Rockshore West, Beside the bin in this garden CREATE_HORSESHOE_PICKUP 2586.0 1902.0 15.0 pickup_horseshoe[38] // Starfish Casino, Ledge currently has no colision, but would need a vehicle / jetpack to access. CREATE_HORSESHOE_PICKUP 0919.0 2070.0 11.0 pickup_horseshoe[39] // Whitewood Estates, At the back entrance of this warehouse. CREATE_HORSESHOE_PICKUP 2173.0 2465.0 11.0 pickup_horseshoe[40] // Emerald Isle, Hidden in a small garage complex. CREATE_HORSESHOE_PICKUP 2031.25 2207.33 11.0 pickup_horseshoe[41] // The Emerald Isle, CREATE_HORSESHOE_PICKUP 2509.0 1144.0 19.0 pickup_horseshoe[42] // Come-A-Lot, Slightly hidden in the little alcove (player has to drop down onto balcony from roof above) CREATE_HORSESHOE_PICKUP 2215.0 1968.0 11.0 pickup_horseshoe[43] // Starfish Casino, in the corner of this dark alleyway CREATE_HORSESHOE_PICKUP 2626.0 2841.0 11.0 pickup_horseshoe[44] // K.A.C.C Military Fuels, in the little slightly secluded alleyway. Easily spottable when playing Heist5 CREATE_HORSESHOE_PICKUP 2440.08 2161.07 20.0 pickup_horseshoe[45] // Old Venturas Strip, 'hidden' in the O of HOTEL. Probably only accessible via flight CREATE_HORSESHOE_PICKUP 1582.0 2401.0 19.0 pickup_horseshoe[46] // Redsands West, on top of packing crates, accessible by jumping onto wall and across to crates CREATE_HORSESHOE_PICKUP 2077.0 1912.0 14.0 pickup_horseshoe[47] // The Visage, underneath the water fall CREATE_HORSESHOE_PICKUP 0970.0 1787.0 11.0 pickup_horseshoe[48] // Whitewood Estates, in the back garden of this house on the edge of town CREATE_HORSESHOE_PICKUP 1526.22 0751.0 29.04 pickup_horseshoe[49] // Blackfiel Chapel, On the roof of the sloped chapel // Photos in San Fran VAR_INT location_photo[50] CREATE_SNAPSHOT_PICKUP -2511.28 -672.99 195.75 location_photo[0] // the structure at the top of missionary hill CREATE_SNAPSHOT_PICKUP -2723.63 -314.72 55.79 location_photo[1] // The arched tower on the top of the club CREATE_SNAPSHOT_PICKUP -1737.71 -579.55 26.19 location_photo[2] // Aeroplane sign at the entrance to the airport CREATE_SNAPSHOT_PICKUP -1486.08 920.04 41.37 location_photo[3] // Clock Face on the clock tower CREATE_SNAPSHOT_PICKUP -1269.82 963.63 130.37 location_photo[4] // Carver Bridge middle support CREATE_SNAPSHOT_PICKUP -1650.01 422.00 21.17 location_photo[5] // Xoomer gas station sign CREATE_SNAPSHOT_PICKUP -1851.72 -96.73 24.37 location_photo[6] // Gas tanks/towers Solarin industries CREATE_SNAPSHOT_PICKUP -2732.0 -244.0 19.0 location_photo[7] // Tennis court nets CREATE_SNAPSHOT_PICKUP -2802.75 375.47 36.59 location_photo[8] // Dome on top of building CREATE_SNAPSHOT_PICKUP -2773.04 783.45 67.66 location_photo[9] // tough nuts donuts sign CREATE_SNAPSHOT_PICKUP -2680.07 1590.80 143.53 location_photo[10] // Gant Bridge SF side support (top) CREATE_SNAPSHOT_PICKUP -2476.75 1543.44 49.26 location_photo[11] // Da nang thang boat comms mast CREATE_SNAPSHOT_PICKUP -1879.04 1456.52 9.34 location_photo[12] // Submarine's conning tower CREATE_SNAPSHOT_PICKUP -1561.55 655.19 56.52 location_photo[13] // One of the Kincaid bridge girders SF side CREATE_SNAPSHOT_PICKUP -1325.15 494.19 26.83 location_photo[14] // Aircraft carrier bridge CREATE_SNAPSHOT_PICKUP -1941.41 137.72 37.83 location_photo[15] // Cranberry station middle roof support CREATE_SNAPSHOT_PICKUP -2153.23 462.25 103.27 location_photo[16] // Top of this chinatown building, east side of tower CREATE_SNAPSHOT_PICKUP -2243.96 577.76 49.0 location_photo[17] // WANGS KUNGFU SCHOOL CREATE_SNAPSHOT_PICKUP -2051.0 456.0 167.0 location_photo[18] // Top of King's building, middle two "flag poles." CREATE_SNAPSHOT_PICKUP -1951.0 659.0 81.0 location_photo[19] // Sculpture in front of building CREATE_SNAPSHOT_PICKUP -2064.0 926.0 63.0 location_photo[20] // the middle of the curviest road CREATE_SNAPSHOT_PICKUP -2357.33 1017.01 59.76 location_photo[21] // burger sign CREATE_SNAPSHOT_PICKUP -2072.0 1066.0 74.0 location_photo[22] // lampost in the middle of the road at tunnel entrance CREATE_SNAPSHOT_PICKUP -1744.0 972.46 156.89 location_photo[23] // Aerials on top of this financial building CREATE_SNAPSHOT_PICKUP -1941.0 883.0 68.0 location_photo[24] // Baseball player statue CREATE_SNAPSHOT_PICKUP -1839.51 1086.88 101.29 location_photo[25] // Middle of building, nice lights CREATE_SNAPSHOT_PICKUP -1704.8 1338.0 14.0 location_photo[26] // Pier 69 sign CREATE_SNAPSHOT_PICKUP -2346.62 536.85 86.02 location_photo[27] // Chimney on top of building CREATE_SNAPSHOT_PICKUP -2443.0 755.0 49.0 location_photo[28] // Supasave entrance CREATE_SNAPSHOT_PICKUP -2765.0 375.0 15.0 location_photo[29] // Middle two columns, front of city hall CREATE_SNAPSHOT_PICKUP -2880.31 -935.83 40.82 location_photo[30] // The first beam passed under on this bridge on the way out of SF CREATE_SNAPSHOT_PICKUP -2083.0 -808.0 69.00 location_photo[31] // The middle round tower in Foster Valley CREATE_SNAPSHOT_PICKUP -1954.0 -760.0 53.00 location_photo[32] // Plants in the middle of the roof garden CREATE_SNAPSHOT_PICKUP -964.53 -331.59 47.16 location_photo[33] // The bridge visible from the SF airport runway area (the middle support) CREATE_SNAPSHOT_PICKUP -1689.0 51.0 38.0 location_photo[34] // The lip of the dry dock in easter basin CREATE_SNAPSHOT_PICKUP -2080.0 256.05 107.0 location_photo[35] //The red tip of the large yellow crane in Kings CREATE_SNAPSHOT_PICKUP -2413.0 331.0 37.0 location_photo[36] // Entrance to the Vank Hoff Park hotel CREATE_SNAPSHOT_PICKUP -2244.42 731.32 61.88 location_photo[37] // Middle roof Chinatown Gateway CREATE_SNAPSHOT_PICKUP -2462.0 369.0 59.0 location_photo[38] // The back of the Vank Hoff Hotel CREATE_SNAPSHOT_PICKUP -1124.44 -153.15 18.50 location_photo[39] // Airport storage tanks CREATE_SNAPSHOT_PICKUP -1275.78 53.68 89.07 location_photo[40] // ATC tower bridge CREATE_SNAPSHOT_PICKUP -2430.0 38.0 51.0 location_photo[41] // Save The Whale land sign CREATE_SNAPSHOT_PICKUP -2591.0 162.0 15.0 location_photo[42] // gay movie theatre CREATE_SNAPSHOT_PICKUP -2591.0 -16.0 17.0 location_photo[43] // One of the middle gravestones CREATE_SNAPSHOT_PICKUP -2648.0 -5.0 31.0 location_photo[44] // Ocean Flats Church spire CREATE_SNAPSHOT_PICKUP -2593.0 56.0 16.0 location_photo[45] // A photo of hippy shopper CREATE_SNAPSHOT_PICKUP -1619.31 1341.39 11.30 location_photo[46] //A photo of the rock formation in the bay CREATE_SNAPSHOT_PICKUP -2307.0 207.0 42.0 location_photo[47] // Baseball diamond, home base/hitters plate CREATE_SNAPSHOT_PICKUP -2343.0 -79.0 38.0 location_photo[48] // A picture of the construction sign CREATE_SNAPSHOT_PICKUP -1906.66 518.58 61.71 location_photo[49] //between 2 skyscrapers VAR_INT pickup_oyster[50] ////Los Santos CREATE_OYSTER_PICKUP 979.0 -2210.0 -3.0 pickup_oyster[0] //Beside the entrance to the Verdant Bluffs tunnel CREATE_OYSTER_PICKUP 2750.0 -2584.0 -5.0 pickup_oyster[1] //Beside an Ocean Docks pier CREATE_OYSTER_PICKUP 1279.0 -806.0 85.0 pickup_oyster[2] //Inside Doc G's pool CREATE_OYSTER_PICKUP 2945.13 -2051.93 -3.0 pickup_oyster[3] // End of this playa del seville beach pier CREATE_OYSTER_PICKUP 67.0 -1018.0 -5.0 pickup_oyster[4] //Under this rail bridge just outside of the city CREATE_OYSTER_PICKUP 2327.0 -2662.0 -5.0 pickup_oyster[5] //under flat docks bridge CREATE_OYSTER_PICKUP 2621.0 -2506.0 -5.0 pickup_oyster[6] //under another docks bridge CREATE_OYSTER_PICKUP 1249.0 -2687.0 -1.0 pickup_oyster[7] //Beach beside the airport CREATE_OYSTER_PICKUP 725.0 -1849.0 -5.0 pickup_oyster[8] //under Verona Beach pedestrian bridge CREATE_OYSTER_PICKUP 723.0 -1586.0 -3.0 pickup_oyster[9] // Under this flood control bridge in the Marina area CREATE_OYSTER_PICKUP 155.0 -1975.0 -8.0 pickup_oyster[10] //south of the lighthouse at Santa Maria beach CREATE_OYSTER_PICKUP 1968.0 -1203.0 17.0 pickup_oyster[11] //under park bridge in pond CREATE_OYSTER_PICKUP -2657.0 1564.0 -6.0 pickup_oyster[12] //Landing point for a USJ under the Gant bridge <=====================// *************** San Fier CREATE_OYSTER_PICKUP -1252.0 501.0 -8.0 pickup_oyster[13] // At the bow of the aircraft carrier in Easter Bay CREATE_OYSTER_PICKUP -1625.0 4.0 -10.0 pickup_oyster[14] //under the stern of the large freighter in dock CREATE_OYSTER_PICKUP -1484.0 1489.0 -10.0 pickup_oyster[15] //At the bow of the freighter in the middle of the bay CREATE_OYSTER_PICKUP -2505.4058 1543.7236 -22.5553 pickup_oyster[16] // under the BOW of the Da Nang Thang ship in SF bay CREATE_OYSTER_PICKUP -2727.0 -469.0 -5.0 pickup_oyster[17] //in a pool on missionary hill behind avispa country club CREATE_OYSTER_PICKUP -1266.0 966.0 -10.0 pickup_oyster[18] //under the water bound support of the Garver Bridge CREATE_OYSTER_PICKUP -1013.0 478.0 -7.0 pickup_oyster[19] //End of the Easter Bay Airport runway CREATE_OYSTER_PICKUP -1364.0 390.0 -5.0 pickup_oyster[20] //In an Easter bay dock CREATE_OYSTER_PICKUP 2578.0 2382.0 16.0 pickup_oyster[21] //Under the diving board at the VRock hotel pool // ******************Las Venturas CREATE_OYSTER_PICKUP 2090.0 1898.0 8.0 pickup_oyster[22] // Under a Visage waterfall CREATE_OYSTER_PICKUP 2130.0 1152.0 7.0 pickup_oyster[23] // in the Come a Lot moat CREATE_OYSTER_PICKUP 2013.0 1670.0 7.0 pickup_oyster[24] // Pirates in mens pants, in front of the skull sculpture CREATE_OYSTER_PICKUP 2531.0 1569.0 9.0 pickup_oyster[25] //in the pool in front of the pilgrim CREATE_OYSTER_PICKUP 2998.0 2998.0 -10.0 pickup_oyster[26] //Northeast Corner of the map // *&******************8//Countryside/Desert CREATE_OYSTER_PICKUP -832.0 925.0 -2.0 pickup_oyster[27] //Tierra Robada tributary overlooking SF bay CREATE_OYSTER_PICKUP 486.0 -253.0 -4.0 pickup_oyster[28] //Under these two red county bridges near Blueberry CREATE_OYSTER_PICKUP -90.0 -910.0 -5.0 pickup_oyster[29] // Under this bridge which connects Flint County to Red County CREATE_OYSTER_PICKUP 26.43 -1320.94 -10.04 pickup_oyster[30] //Between the motorway bridges which lead out of LS towards SF CREATE_OYSTER_PICKUP -207.0 -1682.0 -8.0 pickup_oyster[31] //Flint County where the beach meets the cliffs CREATE_OYSTER_PICKUP -1672.0 -1641.0 -2.0 pickup_oyster[32] //Under this large Whetstone bridge CREATE_OYSTER_PICKUP -1175.0 -2639.0 -2.50 pickup_oyster[33] // Under this Flint County rickety wooden bridge CREATE_OYSTER_PICKUP -1097.0 -2858.0 -8.0 pickup_oyster[34] // Under a lofty flint county bridge beside the open sea CREATE_OYSTER_PICKUP -2889.0 -1042.0 -9.0 pickup_oyster[35] //Under the bridge leading from Chiliad to SF CREATE_OYSTER_PICKUP -659.0 874.0 -2.0 pickup_oyster[36] //under the water in this boat shed at Toreno's Tierra Robada mission point CREATE_OYSTER_PICKUP -955.0 2628.0 35.0 pickup_oyster[37] //Tierra Robada where the user lands from the Valle Occultado USJ CREATE_OYSTER_PICKUP -1066.0 2197.0 32.0 pickup_oyster[38] //Tierra Robada under the wooden bridge near the dam CREATE_OYSTER_PICKUP 40.0 -531.0 -8.0 pickup_oyster[39] //under a red county bridge near Blueberry CREATE_OYSTER_PICKUP -765.0 247.0 -8.0 pickup_oyster[40] //The Panoptican Just off a beach, should be visible from the road CREATE_OYSTER_PICKUP 2098.0 -108.0 -2.0 pickup_oyster[41] //Fishermans Creek at the end of the pier CREATE_OYSTER_PICKUP 2767.0 470.0 -8.0 pickup_oyster[42] //Underneath the middle of the Frederick Bridge CREATE_OYSTER_PICKUP -783.0 2116.0 35.0 pickup_oyster[43] //Sherman Dam underneath the western control towers CREATE_OYSTER_PICKUP -821.0 1374.0 -8.0 pickup_oyster[44] //Tierra Robada under the metal bridge beside the los Barrancas wigwam motel CREATE_OYSTER_PICKUP -2110.50 2329.72 -7.50 pickup_oyster[45] //Tierra Robada in the water beside the lighthouse CREATE_OYSTER_PICKUP -1538.0 1708.0 -3.27 pickup_oyster[46] // Tierra Robada hidden from the motorist's view by a small roadside wall CREATE_OYSTER_PICKUP -2685.0 2153.0 -5.0 pickup_oyster[47] //between the Gant Bridges Northernmost support and the cliff CREATE_OYSTER_PICKUP 796.0 2939.0 -5.0 pickup_oyster[48] //Bone county beach near Las Venturas CREATE_OYSTER_PICKUP 2179.0 235.0 -5.0 pickup_oyster[49] //Under this Red County Bridge near Palomino Creek ////////////////////////////////////////////////////////////// // WEAPON PICKUPS ////////////////////////////////////////////////////////////// /////////////////////////////// // CREATING LV WEAPON PICKUPS ////////////////////////////// VAR_INT pickup_weapon[217] VAR_INT goggle_pickups[8] CREATE_PICKUP_WITH_AMMO MOLOTOV PICKUP_ON_STREET_SLOW 10 2832.0 2405.0 18.0 pickup_weapon[0] // Creek, on mall roof CREATE_PICKUP_WITH_AMMO SPRAYCAN PICKUP_ON_STREET_SLOW 500 2819.0 1663.0 11.0 pickup_weapon[1] // Sobell Rail Yards, inbetween two of the train yard huts CREATE_PICKUP_WITH_AMMO TEARGAS PICKUP_ON_STREET_SLOW 10 2725.0 2727.0 11.0 pickup_weapon[2] // K.A.C.C Military Fuels, resting on grating in top of smoke stack CREATE_PICKUP_WITH_AMMO FLAME PICKUP_ON_STREET_SLOW 2000 2649.0 2733.0 11.0 pickup_weapon[3] // K.A.C.C Military Fuels, dark little corner behind main KACC building CREATE_PICKUP_WITH_AMMO fire_ex PICKUP_ON_STREET_SLOW 3000 2148.0 2721.0 11.0 pickup_weapon[4] CREATE_PICKUP_WITH_AMMO chromegun PICKUP_ON_STREET_SLOW 30 1345.0 2367.0 11.0 pickup_weapon[5] //Pilson Intersection, underneath the overpass CREATE_PICKUP_WITH_AMMO AK47 PICKUP_ON_STREET_SLOW 60 1625.0 1944.0 11.0 pickup_weapon[6] // Redsands West, hidden in the bushes in the middle of this apartment complex CREATE_PICKUP_WITH_AMMO SAWNOFF PICKUP_ON_STREET_SLOW 25 1569.0 2150.0 11.0 pickup_weapon[7] // Redsands West, slightly hidden behind skip CREATE_PICKUP_WITH_AMMO rocketla PICKUP_ON_STREET_SLOW 10 2072.0 2370.0 61.0 pickup_weapon[8] // The Emerald Isle, in corner on top of building, near helipad CREATE_PICKUP_WITH_AMMO sniper PICKUP_ON_STREET_SLOW 20 2225.0 2530.0 17.0 pickup_weapon[9] // Julius Thruway North, Hidden from road behind steeple CREATE_PICKUP_WITH_AMMO sniper PICKUP_ON_STREET_SLOW 20 2337.0 1806.0 72.0 pickup_weapon[10] // The Ring Master, On corner of building opposite Adrenaline CREATE_PICKUP_WITH_AMMO M4 PICKUP_ON_STREET_SLOW 70 2575.0 1562.0 16.0 pickup_weapon[11] // Pilgrim, Behind flat bit of sloped roof on top of smaller motel building CREATE_PICKUP_WITH_AMMO mp5lng PICKUP_ON_STREET_SLOW 70 2243.0 1132.0 11.0 pickup_weapon[12] // Come-A-Lot, in the little hidey hole round the side of the big castle CREATE_PICKUP_WITH_AMMO minigun PICKUP_ON_STREET_SLOW 200 2676.0 0836.0 22.0 pickup_weapon[13] // Rockshore East, in the scaffolding (highest bit accesible by climbing) CREATE_PICKUP_WITH_AMMO tec9 PICKUP_ON_STREET_SLOW 50 1761.0 0591.0 10.0 pickup_weapon[14] // Red County, underneath bridge CREATE_PICKUP_WITH_AMMO GRENADE PICKUP_ON_STREET_SLOW 20 2809.0 0864.0 21.0 pickup_weapon[15] // Rockshore East, behind the air duct poking out the roof CREATE_PICKUP_WITH_AMMO AK47 PICKUP_ON_STREET_SLOW 60 1923.0 1011.0 22.0 pickup_weapon[16] // The Four Dragons Casino, in a little secluded corner of the roof of the casino (probably only accesible by flight) CREATE_PICKUP_WITH_AMMO shotgspa PICKUP_ON_STREET_SLOW 50 1407.0 1098.0 11.0 pickup_weapon[17] // LVA Freight Depot, in the bushes in the small flowerbed CREATE_PICKUP_WITH_AMMO TEARGAS PICKUP_ON_STREET_SLOW 10 1319.0 1636.0 10.6 pickup_weapon[18] // Las Venturas Airport, Inbetween big oil tank things CREATE_PICKUP_WITH_AMMO MICRO_UZI PICKUP_ON_STREET_SLOW 60 1446.35 1900.03 11.0 pickup_weapon[19] // Inbetween wall and skip CREATE_PICKUP_WITH_AMMO silenced PICKUP_ON_STREET_SLOW 30 1098.0 1681.0 07.0 pickup_weapon[20] // Blackfield, in the flowerbed underneath the walkway CREATE_PICKUP_WITH_AMMO SAWNOFF PICKUP_ON_STREET_SLOW 25 0924.0 2138.0 11.0 pickup_weapon[21] // Whitewood Estates, around back of a warehouse CREATE_PICKUP_WITH_AMMO heatseek PICKUP_ON_STREET_SLOW 10 1155.0 2341.0 17.0 pickup_weapon[22] // Pilson Intersection, corner of the top level of the car park CREATE_PICKUP_WITH_AMMO rocketla PICKUP_ON_STREET_SLOW 10 1646.0 1349.0 11.0 pickup_weapon[23] // Las Venturas Airport, hidden behind the packing crates CREATE_PICKUP_WITH_AMMO MOLOTOV PICKUP_ON_STREET_SLOW 10 1781.0 2072.0 11.0 pickup_weapon[24] // Harry Gold Parkway, hidden in bushes beside police station CREATE_PICKUP_WITH_AMMO MOLOTOV PICKUP_ON_STREET_SLOW 10 2478.0 1182.0 22.0 pickup_weapon[25] // Come-A-Lot, In the corner of the building (accessible by jumping from one roof to another) CREATE_PICKUP POOLCUE PICKUP_ON_STREET_SLOW 2854.0 0944.0 11.0 pickup_weapon[26] // Linden Side, behind the skip CREATE_PICKUP nitestick PICKUP_ON_STREET_SLOW 2241.0 2425.0 11.0 pickup_weapon[27] // Roca Escalante, Hidden behind police station sign CREATE_PICKUP GOLFCLUB PICKUP_ON_STREET_SLOW 1418.0 2774.0 15.0 pickup_weapon[28] // Yellow Bell Golf Course, on the balcony overlooking the golf course CREATE_PICKUP SHOVEL PICKUP_ON_STREET_SLOW 1393.0 2174.0 10.0 pickup_weapon[29] // Redsands West, in the dugout of the baseball stadium CREATE_PICKUP chnsaw PICKUP_ON_STREET_SLOW 1061.0 2074.0 11.0 pickup_weapon[30] // Whitewood Estates, in the industrial warehousey area (will be nice to use on the chip machines in casino3) CREATE_PICKUP gun_para PICKUP_ON_STREET_SLOW 2057.0 2434.0 166.0 pickup_weapon[31] // The Emerald Isle, on top of the tallest scraper in venturas CREATE_PICKUP KATANA PICKUP_ON_STREET_SLOW 2000.0 1526.0 15.0 pickup_weapon[32] // The Pirates in Men's Pants, just near the back of the boat CREATE_PICKUP SHOVEL PICKUP_ON_STREET_SLOW 1997.0 1658.0 12.0 pickup_weapon[33] // The Pirates in Men's Pants, hidden in the rocks and bushes, for digging for treasure ////////////////////////////////////////////////////////////// // END OF LV WEAPON PICKUPS ////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////// // LA WEAPON PICKUPS ////////////////////////////////////////////////////////////// CREATE_PICKUP_WITH_AMMO SPRAYCAN PICKUP_ON_STREET_SLOW 500 2510.0 -1723.0 19.0 pickup_weapon[34] // - Spray Can //roof beside Ryder's place CREATE_PICKUP_WITH_AMMO COLT45 PICKUP_ON_STREET_SLOW 35 2538.0 -1630.0 14.0 pickup_weapon[35] // - Semi Automatic Pistol //Behind Sweet's place CREATE_PICKUP_WITH_AMMO MICRO_UZI PICKUP_ON_STREET_SLOW 60 2551.33 -1740.0 6.49 pickup_weapon[36] // - Mac10 //under bridge in flood control CREATE_PICKUP_WITH_AMMO SAWNOFF PICKUP_ON_STREET_SLOW 25 2428.0 -1214.0 36.0 pickup_weapon[37] // - Sawn Off Shotgun //on roof of the Pig Pen CREATE_PICKUP_WITH_AMMO DESERT_EAGLE PICKUP_ON_STREET_SLOW 30 2766.0 -2182.0 11.0 pickup_weapon[38] // - Desert Eagle //Playa del Seville beside life's A beach location CREATE_PICKUP_WITH_AMMO GRENADE PICKUP_ON_STREET_SLOW 20 2142.0 -1804.0 16.0 pickup_weapon[39] // - GRENADE 20s //2nd floor raised walkway 24 hour motel CREATE_PICKUP_WITH_AMMO mp5lng PICKUP_ON_STREET_SLOW 70 1764.0 -1930.0 14.0 pickup_weapon[40] // - MP5 //Unity Station beside a hedge CREATE_PICKUP_WITH_AMMO silenced PICKUP_ON_STREET_SLOW 30 1214.0 -1816.0 17.0 pickup_weapon[41] // - silenced 30 Pistol //Top of conference centre steps CREATE_PICKUP_WITH_AMMO rocketla PICKUP_ON_STREET_SLOW 10 1740.0 -1231.0 92.0 pickup_weapon[42] // - Rocket Luncher //top of Downtown building accessible with copters CREATE_PICKUP_WITH_AMMO mp5lng PICKUP_ON_STREET_SLOW 70 2266.0 -1028.0 59.0 pickup_weapon[43] // - MP5 //top of a set of steps in las colina CREATE_PICKUP_WITH_AMMO SPRAYCAN PICKUP_ON_STREET_SLOW 500 2463.0 -1061.0 60.0 pickup_weapon[44] // - Spray can //In yard of Las Colinas shack CREATE_PICKUP_WITH_AMMO sniper PICKUP_ON_STREET_SLOW 20 2047.0 -1406.0 68.0 pickup_weapon[45] // - sniper 20 rifle //roof of Jefferson county general CREATE_PICKUP_WITH_AMMO TEARGAS PICKUP_ON_STREET_SLOW 10 2213.0 -2283.0 15.0 pickup_weapon[46] // - Screwdriver //Ocean Docks freight train terminal CREATE_PICKUP_WITH_AMMO TEARGAS PICKUP_ON_STREET_SLOW 10 1463.0 -1013.0 27.0 pickup_weapon[47] // - smoke GRENADE 20s //in front of downtown LS oper house CREATE_PICKUP_WITH_AMMO AK47 PICKUP_ON_STREET_SLOW 60 1308.97 -874.40 40.0 pickup_weapon[48] // - AK47 60 //behind robois food market in Mulholland CREATE_PICKUP_WITH_AMMO cuntgun PICKUP_ON_STREET_SLOW 30 1102.0 -661.0 114.0 pickup_weapon[49] // - countryside rifle //behind a redcounty or mulholland posh house CREATE_PICKUP_WITH_AMMO tec9 PICKUP_ON_STREET_SLOW 50 899.8012 -792.0780 102.0 pickup_weapon[50] // - tec9 50 //behind another posh Mulholland house CREATE_PICKUP_WITH_AMMO COLT45 PICKUP_ON_STREET_SLOW 35 338.0 -1875.0 4.0 pickup_weapon[51] // - semi automatic pistol //on a santa maria beach lifeguard post CREATE_PICKUP_WITH_AMMO GRENADE PICKUP_ON_STREET_SLOW 20 397.0 -1924.0 8.0 pickup_weapon[52] // - Hand GRENADE 20s //behind a wooden building on the Santa Maria pier CREATE_PICKUP_WITH_AMMO MOLOTOV PICKUP_ON_STREET_SLOW 10 886.0 -966.0 37.0 pickup_weapon[53] // - molotovs //vinewood beside the giant bottle CREATE_PICKUP_WITH_AMMO tec9 PICKUP_ON_STREET_SLOW 50 1408.0 -2380.0 14.0 pickup_weapon[54] // - tec9 50 //under LS international bridge CREATE_PICKUP_WITH_AMMO M4 PICKUP_ON_STREET_SLOW 70 1379.0 -2547.0 14.0 pickup_weapon[55] // - M4 70 //between airport ramps CREATE_PICKUP_WITH_AMMO MOLOTOV PICKUP_ON_STREET_SLOW 10 2426.0 -1416.0 24.0 pickup_weapon[68] // - Molotovs //behind recylcling centre in East Los Santos CREATE_PICKUP nitestick PICKUP_ON_STREET_SLOW 259.0 80.0 1004.0 pickup_weapon[56] // - nightstick //LS police locker room CREATE_PICKUP Gun_dildo1 PICKUP_ON_STREET_SLOW 261.0 71.0 1003.0 pickup_weapon[57] // - Big purple dildo//LS police shower room CREATE_PICKUP GOLFCLUB PICKUP_ON_STREET_SLOW 1457.0 -792.0 90.0 pickup_weapon[58] // - golfclub //behind the arial behind the Vinewood sign CREATE_PICKUP chnsaw PICKUP_ON_STREET_SLOW 2371.0 -2543.0 3.0 pickup_weapon[59] // - chainsaw //Ocean docks ot the bottom of a stone pier CREATE_PICKUP knifecur PICKUP_ON_STREET_SLOW 1124.0 -1335.0 13.0 pickup_weapon[60] // - knife //Market behind some stores CREATE_PICKUP_WITH_AMMO MOLOTOV PICKUP_ON_STREET_SLOW 10 2197.0 -2475.0 14.0 pickup_weapon[61] // - Hammer //Ocean docks, under industrial looking building CREATE_PICKUP gun_para PICKUP_ON_STREET_SLOW 1528.2217 -1357.9854 330.0371 pickup_weapon[62] // - gun_para //top of tallest building in Los Santos CREATE_PICKUP katana PICKUP_ON_STREET_SLOW 1862.0 -1862.0 14.0 pickup_weapon[63] // - Katana //Waste ground in El Corona CREATE_PICKUP brassknuckle PICKUP_ON_STREET_SLOW 1339.0 -1765.0 14.0 pickup_weapon[64] // - Brass Knuckles //Commerce, end of alleyway CREATE_PICKUP chnsaw PICKUP_ON_STREET_SLOW 2192.2429 -1988.7507 13.4185 pickup_weapon[65] // junkyard la // - Dildo //on pole dancing stage inside the Pig Pen CREATE_PICKUP SHOVEL PICKUP_ON_STREET_SLOW 2459.0 -1708.0 13.6 pickup_weapon[66] // - Shovel //Ryder's backyard CREATE_PICKUP_WITH_AMMO GRENADE PICKUP_ON_STREET_SLOW 20 2441.0 -1013.0 54.0 pickup_weapon[67] // - Hammer//in yard of Las Colinas shack ////////////////////////// //SF //////////////////////// CREATE_PICKUP_WITH_AMMO mp5lng PICKUP_ON_STREET_SLOW 70 -2678.0 -128.0 4.0 pickup_weapon[69] // - MP5 //back yard of an Ocean flats house CREATE_PICKUP_WITH_AMMO DESERT_EAGLE PICKUP_ON_STREET_SLOW 30 -2212.0 109.0 35.0 pickup_weapon[70] // - Desert Eagle //Garcia back lot CREATE_PICKUP_WITH_AMMO M4 PICKUP_ON_STREET_SLOW 70 -2903.0 784.0 35.0 pickup_weapon[71] // - M4 70 //Back yard of a Pallisades home CREATE_PICKUP_WITH_AMMO tec9 PICKUP_ON_STREET_SLOW 50 -2665.0 1452.0 7.0 pickup_weapon[72] ///- tec9 50 //Battery point beside Jizzy's CREATE_PICKUP_WITH_AMMO Satchel PICKUP_ON_STREET_SLOW 15 -2754.0 -400.0 7.0 pickup_weapon[73] // - Satchel 15 bombs //behind Avispa country club CREATE_PICKUP_WITH_AMMO COLT45 PICKUP_ON_STREET_SLOW 35 -2206.0 -23.0 35.0 pickup_weapon[74] // - semi auto handgun //Garcia alleyway CREATE_PICKUP_WITH_AMMO chromegun PICKUP_ON_STREET_SLOW 30 -1841.1058 -74.2171 14.7606 pickup_weapon[75] // - pump shotgun //Doherty behind Solarin industries building CREATE_PICKUP_WITH_AMMO FLAME PICKUP_ON_STREET_SLOW 2000 -1579.0 29.45 17.0 pickup_weapon[76] // - FLAME 50thrower //Easter basin on the freight liner CREATE_PICKUP_WITH_AMMO cuntgun PICKUP_ON_STREET_SLOW 30 -2094.0 -488.0 36.0 pickup_weapon[77] // - countryside rifle //outside Foster Valler arena CREATE_PICKUP_WITH_AMMO AK47 PICKUP_ON_STREET_SLOW 60 -1968.0 -923.0 32.0 pickup_weapon[78] // - AK47 60 //behind rocks at Foster Valley complex CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 -1945.0 -1088.0 31.0 pickup_weapon[79] // - camera 50 //outside the loading bays in the foster valley complex CREATE_PICKUP_WITH_AMMO fire_ex PICKUP_ON_STREET_SLOW 3000 -1700.0 415.0 7.0 pickup_weapon[80] // - Fire Extinguisher //outside the Easter Basin Xoomer gas station CREATE_PICKUP_WITH_AMMO TEARGAS PICKUP_ON_STREET_SLOW 10 -1386.0 509.0 4.0 pickup_weapon[81] // - smoke GRENADE 20s //cargo hold of aircraft carrier CREATE_PICKUP_WITH_AMMO MICRO_UZI PICKUP_ON_STREET_SLOW 60 -1679.0 1410.0 7.0 pickup_weapon[82] // - Mac 10 //Esplanade beside where follow the ped used to be CREATE_PICKUP_WITH_AMMO FLAME PICKUP_ON_STREET_SLOW 2000 -2132.5195 189.2507 35.5379 pickup_weapon[83] // - FLAME //Doherty construction yard in a concrete pipe CREATE_PICKUP_WITH_AMMO heatseek PICKUP_ON_STREET_SLOW 10 -1126.69 -150.82 14.61 pickup_weapon[84] // - RPG //SF airport behind gas cannisters on runway area CREATE_PICKUP_WITH_AMMO minigun PICKUP_ON_STREET_SLOW 200 -1496.0 591.0 42.0 pickup_weapon[85] // - minigun 200 //on top of a SF side Kincaid Bridge support CREATE_PICKUP_WITH_AMMO Satchel PICKUP_ON_STREET_SLOW 15 -2542.2620 922.2401 67.1221 pickup_weapon[86] // - Package bombs //Someones doorstep in Paradiso CREATE_PICKUP_WITH_AMMO tec9 PICKUP_ON_STREET_SLOW 50 -2092.0 1121.0 54.0 pickup_weapon[87] // - tec9 50 //Calton Heights grassy area CREATE_PICKUP_WITH_AMMO sniper PICKUP_ON_STREET_SLOW 20 -1629.0 1167.0 24.0 pickup_weapon[88] //- sniper 20 rifle //downtown on roof behind drink beer sign CREATE_PICKUP chnsaw PICKUP_ON_STREET_SLOW -2083.0 298.0 42.0 pickup_weapon[89] // - Hammer //Unfinished roadway in King's CREATE_PICKUP bat PICKUP_ON_STREET_SLOW -2306.0 93.0 35.0 pickup_weapon[90] // - Baseball Bat //Garcia baseball diamond CREATE_PICKUP shovel PICKUP_ON_STREET_SLOW -2796.4155 123.686 6.844 pickup_weapon[91] // - Shovel //pallisades back yard CREATE_PICKUP POOLCUE PICKUP_ON_STREET_SLOW -2135.0 197.0 35.0 pickup_weapon[92] // - Poolcue // hidden behind a fallen piece of concrete in the Doherty construction yard CREATE_PICKUP KATANA PICKUP_ON_STREET_SLOW -2208.0 696.0 50.0 pickup_weapon[93] // - Katana //chinatown backalley CREATE_PICKUP brassknuckle PICKUP_ON_STREET_SLOW -2206.0 961.0 80.0 pickup_weapon[94] // - Brass Knuckles //beside a Calton Heights car park CREATE_PICKUP nitestick PICKUP_ON_STREET_SLOW -2222.0 -302.0 43.0 pickup_weapon[95] //- cane //Doherty overpass CREATE_PICKUP knifecur PICKUP_ON_STREET_SLOW -1871.0 351.0 26.0 pickup_weapon[96] // - knife //Downtown underpass CREATE_PICKUP golfclub PICKUP_ON_STREET_SLOW -2715.0 -314.0 7.0 pickup_weapon[97] //- golf club //front entrance Avispa country club CREATE_PICKUP chnsaw PICKUP_ON_STREET_SLOW -2359.0 -82.0 35.0 pickup_weapon[98] // - Chainsaw //corner of Garcia consrucion plot /////////////////////////////////////////////////// // END OF SF WEAPON PICKUPS /////////////////////////////////////////////////// /////////////////////////////////////////////////// // COUNTRY WEAPON PICKUPS /////////////////////////////////////////////////// CREATE_PICKUP_WITH_AMMO DESERT_EAGLE PICKUP_ON_STREET_SLOW 30 -1870.0 -1625.0 22.0 pickup_weapon[99] // - desert eagle //Whetstone scrap yard warehouse CREATE_PICKUP_WITH_AMMO fire_ex PICKUP_ON_STREET_SLOW 3000 -1627.0 -2692.0 49.0 pickup_weapon[100] // - fire extinguisher //outside whetstone xoomer station CREATE_PICKUP_WITH_AMMO MICRO_UZI PICKUP_ON_STREET_SLOW 60 -2038.0 -2562.0 31.0 pickup_weapon[101] //- mac10 //trailer park behind trailer CREATE_PICKUP_WITH_AMMO cuntgun PICKUP_ON_STREET_SLOW 30 -1035.0 -2258.0 70.0 pickup_weapon[102] //- countryside rifle //on top of mound in the middle of nowhere CREATE_PICKUP_WITH_AMMO SAWNOFF PICKUP_ON_STREET_SLOW 25 2366.0 23.0 28.0 pickup_weapon[103] //- Sawn Off shotgun //behind a house, on the back porch CREATE_PICKUP_WITH_AMMO MOLOTOV PICKUP_ON_STREET_SLOW 10 2255.0 -74.0 32.0 pickup_weapon[104] //- MOLOTOV 10s //on the roof of the palomino creek library CREATE_PICKUP_WITH_AMMO mp5lng PICKUP_ON_STREET_SLOW 70 1296.0 392.0 20.0 pickup_weapon[105] // - MP5 //inside the yard of the partially burned building CREATE_PICKUP_WITH_AMMO tec9 PICKUP_ON_STREET_SLOW 50 262.0 38.0 2.0 pickup_weapon[106] // - tec9 50 //beside warehouse opposite the spandex depot CREATE_PICKUP_WITH_AMMO AK47 PICKUP_ON_STREET_SLOW 60 -121.0 -232.0 1.0 pickup_weapon[107] // - AK47 60 //outside the fleisch beer factory CREATE_PICKUP SHOVEL PICKUP_ON_STREET_SLOW -532.0 -106.0 63.0 pickup_weapon[108] // - sawn off shotgun //in the midst of the logging site CREATE_PICKUP_WITH_AMMO M4 PICKUP_ON_STREET_SLOW 70 113.0 1811.0 18.0 pickup_weapon[109] // - M4 70 //at the bottom of a guard tower CREATE_PICKUP_WITH_AMMO DESERT_EAGLE PICKUP_ON_STREET_SLOW 30 36.0 1372.0 9.0 pickup_weapon[110] // - Desert Eagle //behind the middle solar panel in the trailer park CREATE_PICKUP_WITH_AMMO chromegun PICKUP_ON_STREET_SLOW 30 24.0 969.0 20.0 pickup_weapon[111] // - Pump Shotgun //beside a low budget house in the outskirts CREATE_PICKUP_WITH_AMMO MOLOTOV PICKUP_ON_STREET_SLOW 10 -170.0 1025.0 20.0 pickup_weapon[112] // - MOLOTOV 10s //behind the liquor store CREATE_PICKUP_WITH_AMMO COLT45 PICKUP_ON_STREET_SLOW 35 -639.0 1181.0 13.0 pickup_weapon[113] // - semi automatic pistol //under bridge close to save point CREATE_PICKUP_WITH_AMMO AK47 PICKUP_ON_STREET_SLOW 60 -585.0 2714.0 72.0 pickup_weapon[114] // - AK47 60 //beside Caravan in small traile CREATE_PICKUP_WITH_AMMO fire_ex PICKUP_ON_STREET_SLOW 3000 -742.0 2752.0 47.0 pickup_weapon[115] // - Fire Extinguisher //beside the pumpless gas station CREATE_PICKUP_WITH_AMMO chromegun PICKUP_ON_STREET_SLOW 30 -932.02 2649.92 42.0 pickup_weapon[116] // - Shotgun //beside the water at the USJ CREATE_PICKUP_WITH_AMMO heatseek PICKUP_ON_STREET_SLOW 10 -1317.0 2509.0 87.0 pickup_weapon[117] // - RPG //behind one of the ruins CREATE_PICKUP_WITH_AMMO mp5lng PICKUP_ON_STREET_SLOW 70 -1474.0 2577.0 56.0 pickup_weapon[118] // - MP5 //behind a building NE of the medical centre CREATE_PICKUP_WITH_AMMO DESERT_EAGLE PICKUP_ON_STREET_SLOW 30 -2352.0 2456.0 6.0 pickup_weapon[119] // - Desert Eagle //in walled garden at the beginning of the marina, northernmost point of town CREATE_PICKUP_WITH_AMMO GRENADE PICKUP_ON_STREET_SLOW 20 -2520.0 2293.0 5.0 pickup_weapon[120] // - GRENADE 20s //alleyway behind shops CREATE_PICKUP_WITH_AMMO FLAME PICKUP_ON_STREET_SLOW 2000 -1358.0 -2115.0 30.0 pickup_weapon[121] //- FLAME 50thrower //in a copse of trees CREATE_PICKUP_WITH_AMMO MICRO_UZI PICKUP_ON_STREET_SLOW 60 119.0 2409.0 17.0 pickup_weapon[122] // - mac10 //inside aeroplane fuselage distant from main airfield buildings CREATE_PICKUP SHOVEL PICKUP_ON_STREET_SLOW -1809.0 -1662.0 24.0 pickup_weapon[123] // - Shovel //Whetstone scrap yard beside a mound of scrap CREATE_PICKUP gun_para PICKUP_ON_STREET_SLOW -2350.0 -1586.0 485.0 pickup_weapon[124] // - gun_para //top of chiliad CREATE_PICKUP GOLFCLUB PICKUP_ON_STREET_SLOW -2227.0 -2401.0 31.40 pickup_weapon[125] // - golf club //angel pine residential garage CREATE_PICKUP SHOVEL PICKUP_ON_STREET_SLOW 2240.0 -83.0 27.0 pickup_weapon[126] //- shovel //in the palomino creek cemetary CREATE_PICKUP POOLCUE PICKUP_ON_STREET_SLOW 294.0 -188.0 2.0 pickup_weapon[127] // - pool cue //outside the bar CREATE_PICKUP chnsaw PICKUP_ON_STREET_SLOW -761.0 -126.0 66.0 pickup_weapon[128] // - Chainsaw //beside a logging hut CREATE_PICKUP katana PICKUP_ON_STREET_SLOW -1568.0 2718.0 56.0 pickup_weapon[129] // - Katana //Behind a building beside the northern road CREATE_PICKUP Gun_dildo2 PICKUP_ON_STREET_SLOW -2401.0 2360.0 5.0 pickup_weapon[130] // - screwdriver //behind the skip CREATE_PICKUP gun_para PICKUP_ON_STREET_SLOW -2679.0 1933.0 217.0 pickup_weapon[131] // - gun_para //on top of the highest support CREATE_PICKUP SHOVEL PICKUP_ON_STREET_SLOW 637.0 832.0 -43.0 pickup_weapon[132] // - Spade // in front of the packing crate/mud CREATE_PICKUP chnsaw PICKUP_ON_STREET_SLOW 680.0 826.0 -39.0 pickup_weapon[133] // - Chainsaw // behind the rock crusher machine (walk up stairway to get behind big clylinder) CREATE_PICKUP chnsaw PICKUP_ON_STREET_SLOW 752.0 260.0 27.0 pickup_weapon[134] //- Chainsaw //in front of a hut CREATE_PICKUP brassknuckle PICKUP_ON_STREET_SLOW -246.0 2725.0 63.0 pickup_weapon[135] // - Brass Knuckles //behind small building close to two USJs CREATE_PICKUP knifecur PICKUP_ON_STREET_SLOW -23.0 2322.0 24.0 pickup_weapon[136] //- knife //between snake pens at the snake farm CREATE_PICKUP_WITH_AMMO Satchel PICKUP_ON_STREET_SLOW 15 1284.8936 278.5705 19.5547 pickup_weapon[137] // behind otb CREATE_PICKUP_WITH_AMMO AK47 PICKUP_ON_STREET_SLOW 60 2129.4 -2280.71 14.42 pickup_weapon[139] //Warehouse for crash3 grey imports CREATE_PICKUP gun_para PICKUP_ON_STREET_SLOW -1542.8567 698.4825 139.2658 pickup_weapon[140] // on top of bridge in san fierro CREATE_PICKUP_WITH_AMMO mp5lng PICKUP_ON_STREET_SLOW 130 2198.11 -1170.22 33.5 pickup_weapon[141] // on top of motel deal motel CREATE_PICKUP gun_para PICKUP_ON_STREET_SLOW -225.6758 1394.2562 172.0143 pickup_weapon[142] //On the aerial CREATE_PICKUP gun_para PICKUP_ON_STREET_SLOW -773.0379 2423.4993 157.0856 pickup_weapon[143] // In the desert… CREATE_PICKUP_WITH_AMMO sniper PICKUP_ON_STREET_SLOW 20 935.7440 -926.0453 57.7642 pickup_weapon[144] // chateux marmount in LA ////////////////////////////// // Weapons in police stations ///////////////////////////// CREATE_PICKUP SHOVEL PICKUP_ON_STREET_SLOW 842.9783 -17.3791 64.2 pickup_weapon[145] // shovel at Catalina`s graveyard. // police 1 CREATE_PICKUP_WITH_AMMO COLT45 PICKUP_ON_STREET_SLOW 35 255.0493 84.0615 1002.4531 pickup_weapon[146] // - semi automatic pistol //police station 1 CREATE_PICKUP_WITH_AMMO chromegun PICKUP_ON_STREET_SLOW 30 217.8 76.4 1005.0466 pickup_weapon[147] // shotgun Police 1 //police 2 CREATE_PICKUP nitestick PICKUP_ON_STREET_SLOW 223.8347 120.4458 1010.2118 pickup_weapon[148] CREATE_PICKUP_WITH_AMMO COLT45 PICKUP_ON_STREET_SLOW 35 263.2531 109.7859 1004.6245 pickup_weapon[149] // - semi automatic pistol //police station 1 CREATE_PICKUP_WITH_AMMO chromegun PICKUP_ON_STREET_SLOW 30 228.3176 114.4330 999.0215 pickup_weapon[150] // shotgun Police 1 // police 3 CREATE_PICKUP nitestick PICKUP_ON_STREET_SLOW 247.4536 192.3085 1008.1719 pickup_weapon[151] CREATE_PICKUP_WITH_AMMO COLT45 PICKUP_ON_STREET_SLOW 35 242.6130 196.3202 1008.1719 pickup_weapon[152] // - semi automatic pistol //police station 1 CREATE_PICKUP_WITH_AMMO chromegun PICKUP_ON_STREET_SLOW 30 240.7765 196.1124 1008.1719 pickup_weapon[153] // shotgun Police 1 CREATE_PICKUP nitestick PICKUP_ON_STREET_SLOW 188.9769 158.2180 1003.0312 pickup_weapon[154] CREATE_PICKUP gun_para PICKUP_ON_STREET_SLOW -1753.4181 885.3446 295.5166 pickup_weapon[155] // The Pointy Building in SF // CAMERAS AROUND SF CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 -2539.9180 -598.6152 132.7640 pickup_weapon[156] // on top of triathlon hill CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 -2329.9844 -165.3635 35.2389 pickup_weapon[157] // outside burger shot CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 -2721.2410 -318.8085 7.5246 pickup_weapon[158] // entrance of swank SHINING-like hotel CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 -2677.1023 234.9912 4.1048 pickup_weapon[159] // behind clucken bell CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 -2706.6921 375.8728 5.0525 pickup_weapon[160] // in the middle of square (where city hall and the art gallery are) CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 -2550.1064 657.2860 14.7319 pickup_weapon[161] // hospital car park CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 -2791.2478 771.5468 51.0904 pickup_weapon[162] // behind TUFF NUTS CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 -1770.8149 903.2556 25.3894 pickup_weapon[163] // next to the POINTY BUILDING (behind BIG PRICKS SIGN) CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 -1713.0062 1368.2390 7.2664 pickup_weapon[164] // behind pizza stack at pier 69 CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 -1851.3165 1302.2909 60.7553 pickup_weapon[165] // on top of multi story car park CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 -1635.0255 604.4713 40.6377 pickup_weapon[166] // on the road bridge CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 -1976.4830 670.5043 46.6039 pickup_weapon[167] // inside zombie tech building CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 -2038.4086 1111.4065 53.7928 pickup_weapon[168] //the side of church CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 -2048.8032 899.5274 53.8866 pickup_weapon[169] // up windy street CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 -2292.4702 722.5441 49.4265 pickup_weapon[170] //across teh road from gates of china town CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 -1977.9155 113.8457 27.1096 pickup_weapon[171] // train station CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 -1528.1443 160.0232 3.5142 pickup_weapon[172] // down by the docks CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 -1771.2611 -597.5884 16.6287 pickup_weapon[173] // entrance of the airports CREATE_PICKUP_WITH_AMMO camera PICKUP_ON_STREET_SLOW 50 2495.8069 -1700.6371 1017.8368 special_camera //CJ's house // Extra weapons added on sept 6th CREATE_PICKUP gun_cane PICKUP_ON_STREET_SLOW -2677.7261 -192.3469 6.8518 pickup_weapon[174] // outside some guys doorstep SF CREATE_PICKUP chnsaw PICKUP_ON_STREET_SLOW -2752.2429 -272.2891 6.5956 pickup_weapon[175] // TEnnis courts in SF CREATE_PICKUP gun_cane PICKUP_ON_STREET_SLOW -2617.4731 -97.0801 4.0030 pickup_weapon[176] // outside some guys doorstep SF CREATE_PICKUP gun_cane PICKUP_ON_STREET_SLOW -2777.1921 -25.2984 6.8721 pickup_weapon[177] // a guys doorstep SF CREATE_PICKUP gun_cane PICKUP_ON_STREET_SLOW -2774.1130 87.8845 6.7987 pickup_weapon[178] // a guys doorstep SF CREATE_PICKUP gun_cane PICKUP_ON_STREET_SLOW -2770.6235 389.0772 4.2818 pickup_weapon[179] // OUTSIDE CITY HALLsf CREATE_PICKUP katana PICKUP_ON_STREET_SLOW -2535.6311 51.7034 8.6512 pickup_weapon[180] // UNDERGROUND WALK NEAR STALLS sf CREATE_PICKUP gun_cane PICKUP_ON_STREET_SLOW -2530.9580 -34.1009 25.2855 pickup_weapon[181] // STALLS NEAR HIPPY AREA SF CREATE_PICKUP gun_cane PICKUP_ON_STREET_SLOW -1691.6486 946.7679 24.8084 pickup_weapon[182] // OUTSIDE VICTIM SF CREATE_PICKUP gun_cane PICKUP_ON_STREET_SLOW -2664.5183 636.5673 14.2474 pickup_weapon[183] //OUTSIDE HOSPITAL SF CREATE_PICKUP_WITH_AMMO FLAME PICKUP_ON_STREET_SLOW 2000 -601.4012 -1068.6002 23.6667 pickup_weapon[184] // OUTSIDE CABIN MOTEL COUNTRY WEST CREATE_PICKUP gun_cane PICKUP_ON_STREET_SLOW -377.2184 -1048.0535 58.9125 pickup_weapon[185] // OUTSIDE FARM IN COUNTRY WESSR CREATE_PICKUP gun_cane PICKUP_ON_STREET_SLOW -45.5928 -1148.5286 1.3953 pickup_weapon[186] // OUTSIDE BARN/WAREHOUSE COUNTRYWEST CREATE_PICKUP brassknuckle PICKUP_ON_STREET_SLOW 2428.4990 -1679.2703 13.1633 pickup_weapon[187] // under freeway la CREATE_PICKUP_WITH_AMMO GRENADE PICKUP_ON_STREET_SLOW 20 2820.0129 -1426.5194 23.805 pickup_weapon[188] // multi story car park la CREATE_PICKUP_WITH_AMMO MICRO_UZI PICKUP_ON_STREET_SLOW 60 2790.3428 -1427.4893 39.6258 pickup_weapon[189] // top of multi story carpark la CREATE_PICKUP_WITH_AMMO tec9 PICKUP_ON_STREET_SLOW 50 2574.0649 -1134.2010 64.6535 pickup_weapon[190] // hispanic area CREATE_PICKUP_WITH_AMMO COLT45 PICKUP_ON_STREET_SLOW 35 2423.8916 -1117.4524 41.2464 pickup_weapon[191] // hispanic area CREATE_PICKUP gun_cane PICKUP_ON_STREET_SLOW 1296.1552 -1081.8922 26.1502 pickup_weapon[192] // hospital in la CREATE_PICKUP gun_cane PICKUP_ON_STREET_SLOW 1390.6113 -800.4332 81.7795 pickup_weapon[193] // vinewood sign LA CREATE_PICKUP bat PICKUP_ON_STREET_SLOW 1308.4662 2111.2886 10.7221 pickup_weapon[194] // baseball stadium VEGAS CREATE_PICKUP gun_cane PICKUP_ON_STREET_SLOW 2183.1160 2396.8269 10.7722 pickup_weapon[195] //somewhere in vagas CREATE_PICKUP bat PICKUP_ON_STREET_SLOW 1081.1333 1603.6969 5.6000 pickup_weapon[196] // under stadium in VEGAS CREATE_PICKUP knifecur PICKUP_ON_STREET_SLOW 777.8668 1948.1228 5.3634 pickup_weapon[197] // trailor park outside vegas CREATE_PICKUP_WITH_AMMO SAWNOFF PICKUP_ON_STREET_SLOW 25 1706.3517 1242.0194 34.2952 pickup_weapon[199] // multi story car park in vegas CREATE_PICKUP_WITH_AMMO minigun PICKUP_ON_STREET_SLOW 200 2492.0513 2398.3774 4.5293 pickup_weapon[200] // underground car park in vegas (where one of rothwells missions are set) CREATE_PICKUP_WITH_AMMO rocketla PICKUP_ON_STREET_SLOW 10 2055.3555 2435.3564 40.3684 pickup_weapon[201] // another multi story car park in vegas CREATE_PICKUP SHOVEL PICKUP_ON_STREET_SLOW 1888.2698 2877.2617 10.1621 pickup_weapon[202] // tennis courts in vegas CREATE_PICKUP gun_cane PICKUP_ON_STREET_SLOW 1420.9449 2519.8816 10.6199 pickup_weapon[203] // behind somebodys house at the edge of VEGAS CREATE_PICKUP gun_cane PICKUP_ON_STREET_SLOW 1372.9963 2605.7576 10.8776 pickup_weapon[204] // railway platform in vegas CREATE_PICKUP_WITH_AMMO mp5lng PICKUP_ON_STREET_SLOW 70 2293.6855 1982.2860 31.4335 pickup_weapon[205] // on top of another multi storie carpark CREATE_PICKUP KATANA PICKUP_ON_STREET_SLOW 2631.2629 1722.3947 11.0312 pickup_weapon[206] // chinese mall in vegas CREATE_PICKUP gun_cane PICKUP_ON_STREET_SLOW 2490.4966 1522.4697 10.5760 pickup_weapon[207] // next to the entrance of the TIKI casino CREATE_PICKUP gun_cane PICKUP_ON_STREET_SLOW 455.4583 -1485.8964 30.9717 pickup_weapon[208] // outside victim and dider sachs in LA CREATE_PICKUP_WITH_AMMO minigun PICKUP_ON_STREET_SLOW 200 244.98 1859.185 14.08 pickup_weapon[209] // minigun in area 51 // send these to immy //CREATE_PICKUP_WITH_AMMO shotgspa PICKUP_ON_STREET_SLOW 30 297.8289 1846.6226 6.7266 pickup_weapon[210] // spaz in area 51 //CREATE_PICKUP_WITH_AMMO JETPACK PICKUP_ONCE 0 268.7 1884.1 -30.085 pickup_weapon[211] CREATE_PICKUP_WITH_AMMO tec9 PICKUP_ON_STREET_SLOW 50 2529.7241 -1678.5634 19.4225 pickup_weapon[212] CREATE_PICKUP_WITH_AMMO SAWNOFF PICKUP_ON_STREET_SLOW 15 2254.3777 -2261.6895 14.3751 pickup_weapon[213] CREATE_PICKUP_WITH_AMMO sniper PICKUP_ON_STREET_SLOW 20 2015.7440 1004.0453 39.1 pickup_weapon[214] // on top of 4 dragons casino in VEGAS CREATE_PICKUP KATANA PICKUP_ON_STREET_SLOW 2002.2629 981.3947 10.5 pickup_weapon[215] // behind 4 dragons casino in VEGAS /////////////////////////////////////////////////// // END OF COUNTRY WEAPON PICKUPS /////////////////////////////////////////////////// //FLOWER PICK UPS: //LOS SANTOS: VAR_INT pickup_flowers[40] CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 1928.68 -1774.21 13.54 pickup_flowers[0] //1. Gas Station - next to Sprunk machine. flower1 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 1875.91 -1917.18 15.03 pickup_flowers[1] //2. El Corona - in between plants in house garden. flower2 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 2019.60 -1214.15 21.47 pickup_flowers[2] //3. Glen Park - in between flowerbed. flower3 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 2209.77 -1001.69 63.71 pickup_flowers[3] //4. Las Colinas - Front Garden behind flowers. flower4 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 1000.34 -1858.58 12.3 pickup_flowers[4] //5. Verona Beach - next to palm tree. flower5 //CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 289.53 -1391.96 13.96 pickup_flowers[5] //6. Rodeo - outside Florist's flower6 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 911.11 -1120.31 24.03 pickup_flowers[6] //7. Vinewood - in front of headstone in Graveyard flower7 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 929.00 -750.00 105.82 pickup_flowers[7] //8. Mulholland - on tight bend (car crash hotspot) flower8 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 1129.09 -2052.82 69.00 pickup_flowers[8] //9. Verdant Bluffs - behind flowerbed. flower9 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -92.74 -1425.46 12.75 pickup_flowers[9] //10. Flint Intersection - beside concrete wall flower10 //COUNTRY: CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -77.65 -1167.18 2.16 pickup_flowers[10]//11. Flint County - In front of Gas Station door.flower 11 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 34.00 -2649.00 40.73 pickup_flowers[11]//12. Flint County - Back of "69" flower12 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -739.00 -1262.00 68.12 pickup_flowers[12]//13. Flint County - on hairpin bend flower13 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -2177.00 -2423.00 30.63 pickup_flowers[13]//14. Angel Pine - behind trash dumpster flower14 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -615.00 -861.00 105.72 pickup_flowers[14]//15. Flint County - in between large trees flower15 //SAN FIERO: CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -2051.00 948.00 55.40 pickup_flowers[15]//16. Calton Heights - in low hedges on slope flower16 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -2658.00 -187.00 4.18 pickup_flowers[16]//17. Ocean Flats - next to dumpster flower17 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -2649.00 734.97 27.96 pickup_flowers[17]//18. Santa Flora - in back garden flower18 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -1791.00 481.00 25.68 pickup_flowers[18]//19. Easter Basin - next to collapsed road (quake memorial?) flower19 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -2797.00 1182.00 20.28 pickup_flowers[19]//20. Pallisades - next to pond in grasses flower20 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -2589.6233 -16.1650 3.9662 pickup_flowers[20] // GRAVEYARD SF CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -2865.00 690.00 23.43 pickup_flowers[21]//22. Pallisades - in front garden flower22 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -2339.00 -453.00 80.24 pickup_flowers[22]//23. Missionary Hill - on hairpin bend flower23 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -1955.00 -748.00 36.22 pickup_flowers[23]//24. Foster Valley - in plant bed flower24 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -2420.03 987.59 45.30 pickup_flowers[24]//25. Juniper Hollow - next to coke machine in Xoomer flower25 //DESERT: CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -326.56 2215.37 43.57 pickup_flowers[25]//26. Las Brujas - in front of headstone flower26 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -1319.00 2705.00 50.27 pickup_flowers[26]//27. Tierra Robada - next to Gas Station toilets flower27 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -2474.94 2443.52 16.03 pickup_flowers[27]//28. Bayside - in front garden flower28 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -1670.64 2590.49 81.37 pickup_flowers[28]//29. Tierra Robada - back of bungalow flower29 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW -892.98 1971.66 60.61 pickup_flowers[29]//30. The Sherman Dam - in front of monument flower30 //LAS VENTURAS: CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 1576.86 2837.14 10.83 pickup_flowers[30]//31. Prickle Pine - next to flowerbed flower31 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 1492.72 2773.76 10.81 pickup_flowers[31]//32. Yellow Bell Golf Course - in front of main sign in flowerbed flower 32 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 2642.03 1125.74 11.03 pickup_flowers[32]//33. Las Venturas - next to Gas Station doors flower33 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 2025.24 661.60 10.93 pickup_flowers[33]//34. Rockshore West - in front garden flower34 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 2181.82 1484.97 11.36 pickup_flowers[34]//35. Royale Casino - in flowerbed flower35 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 2197.02 2476.33 11.00 pickup_flowers[35]//36. The Emerald Isle - in between petrol pumps at Xoomer flower36 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 2212.00 2526.00 10.81 pickup_flowers[36]////37. Julius Thruway North - Wedding Tackle front doorflower37 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 2715.79 1109.47 6.70 pickup_flowers[37]//38. Julie Thruway North - Crash barrier flower38 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 2489.25 918.28 11.02 pickup_flowers[38]//39. Las Venturas - outside wedding chapel lower39 CREATE_PICKUP flowera PICKUP_ON_STREET_SLOW 1472.08 1890.09 10.81 pickup_flowers[39]//40. Redsands West - in front garden between trees and shrubs flower40 /////////////////////////////////////////////////// // END OF CREATING WEAPON PICKUPS /////////////////////////////////////////////////// /* // HEALTH VAR_INT pickup_health[51] CREATE_PICKUP health PICKUP_ON_STREET_SLOW 1433.0 2634.0 11.0 pickup_health[0] // Yellow Bell Station, inbetween train tracks CREATE_PICKUP health PICKUP_ON_STREET_SLOW 2257.0 2530.0 11.0 pickup_health[1] // Roca Escalante, tucked between two dumpsters CREATE_PICKUP health PICKUP_ON_STREET_SLOW 2418.0 2119.0 24.0 pickup_health[2] // Old Venturas Strip, behind 7th heaven rainbow sign (player has to jump on top opf car roof, jump across to roof in front of Zip Pizza, then run along behind sign) CREATE_PICKUP health PICKUP_ON_STREET_SLOW 2458.0 1293.0 11.0 pickup_health[3] // The Camel's Toe, Behind the church, little alleyway CREATE_PICKUP health PICKUP_ON_STREET_SLOW 2098.0 1161.0 12.0 pickup_health[4] // Come-A-Lot, in the middle of the little castle CREATE_PICKUP health PICKUP_ON_STREET_SLOW 1913.0 0702.0 11.0 pickup_health[5] // Last Dime Motel, underneath car park covering CREATE_PICKUP health PICKUP_ON_STREET_SLOW 2624.0 -1600.0 10.0 pickup_health[6] //under bridge beside flood control CREATE_PICKUP health PICKUP_ON_STREET_SLOW 2891.0 2102.0 11.65 pickup_health[7] //Playa del Seville near Life's a Beach CREATE_PICKUP health PICKUP_ON_STREET_SLOW 2791.0 -1096.0 31.0 pickup_health[8] //behind a las colinas appartment CREATE_PICKUP health PICKUP_ON_STREET_SLOW 2062.0 -1966.0 13.0 pickup_health[9] //Willowfield beside train tracks between platform and crates. CREATE_PICKUP health PICKUP_ON_STREET_SLOW 1574.0 -1888.0 14.0 pickup_health[10] //Verdant Bluffs outside restaurant seating CREATE_PICKUP health PICKUP_ON_STREET_SLOW 1339.0 -1841.0 14.0 pickup_health[11] //Commerce end of alleyway CREATE_PICKUP health PICKUP_ON_STREET_SLOW 2250.0 -1060.0 56.0 pickup_health[12] //Las Colinas top of entranceway steps CREATE_PICKUP health PICKUP_ON_STREET_SLOW 1099.0 -1335.0 13.0 pickup_health[13] //Market behind a super $5 store CREATE_PICKUP health PICKUP_ON_STREET_SLOW 1014.0 -1006.0 32.0 pickup_health[14] //beside LS mod garage CREATE_PICKUP health PICKUP_ON_STREET_SLOW 153.0 -1965.0 4.0 pickup_health[15] //beside the santa maria beach lighthouse CREATE_PICKUP health PICKUP_ON_STREET_SLOW 1750.0 -2273.0 26.7 pickup_health[16] //on top of LS airport heli pad CREATE_PICKUP health PICKUP_ON_STREET_SLOW -2661.0 -198.0 4.0 pickup_health[17] //back yard of an Ocean flats house CREATE_PICKUP health PICKUP_ON_STREET_SLOW -2871.0 835.0 40.0 pickup_health[18] //between back yards of some pallisades homes CREATE_PICKUP health PICKUP_ON_STREET_SLOW -2314.0 -128.0 35.0 pickup_health[19] //Garcia construction plot CREATE_PICKUP health PICKUP_ON_STREET_SLOW -2155.0 -83.0 35.0 pickup_health[20] //Doherty Los cabras crack lab lot CREATE_PICKUP health PICKUP_ON_STREET_SLOW -1699.0 76.0 4.0 pickup_health[21] //beside the most excellent dry dock CREATE_PICKUP health PICKUP_ON_STREET_SLOW -1398.3 502.5 10.8 pickup_health[22] //inside an open crate in the aircraft carrier CREATE_PICKUP health PICKUP_ON_STREET_SLOW -2098.0 901.0 77.0 pickup_health[23] //Calton heights at the top of the curvy road CREATE_PICKUP health PICKUP_ON_STREET_SLOW -1451.0 -116.0 6.0 pickup_health[24] //inside SF airport underground car park CREATE_PICKUP health PICKUP_ON_STREET_SLOW -1968.0 410.0 24.0 pickup_health[25] //beside guard booth in downtown hotel's underground carpark CREATE_PICKUP health PICKUP_ON_STREET_SLOW -2307.0 -1602.0 484.0 pickup_health[26] //top of Chiliad CREATE_PICKUP health PICKUP_ON_STREET_SLOW -1831.0 -1623.0 23.0 pickup_health[27] //Whetstone scrap yard warehouse CREATE_PICKUP health PICKUP_ON_STREET_SLOW -1550.0 -2739.0 49.0 pickup_health[28] //Whetstone xoomer station rest area CREATE_PICKUP health PICKUP_ON_STREET_SLOW -2153.0 -2549.0 31.0 pickup_health[29] //residential garage CREATE_PICKUP health PICKUP_ON_STREET_SLOW 112.0 -224.0 2.0 pickup_health[30] //Yard of warehouse beside the fleisch beer building and pallet ramp USJ CREATE_PICKUP health PICKUP_ON_STREET_SLOW -590.0 -202.0 81.0 pickup_health[31] //on top of a tree stump just outside the logging site CREATE_PICKUP health PICKUP_ON_STREET_SLOW 144.0 1875.0 18.0 pickup_health[32] //doorway to a bunker CREATE_PICKUP health PICKUP_ON_STREET_SLOW -87.0 1366.0 10.0 pickup_health[33] //South side of the Inn CREATE_PICKUP health PICKUP_ON_STREET_SLOW -2019.0 2357.0 7.0 pickup_health[34] //Beach beside the lighthouse CREATE_PICKUP health PICKUP_ON_STREET_SLOW -837.0 2761.53 46.0 pickup_health[35] //entrance to a tee pee at the Wigwam Motel CREATE_PICKUP health PICKUP_ON_STREET_SLOW -1466.0 2639.0 56.0 pickup_health[36] //under the water tower CREATE_PICKUP health PICKUP_ON_STREET_SLOW -2386.0 2216.0 5.0 pickup_health[37] //doorway of Bayside lighthouse CREATE_PICKUP health PICKUP_ON_STREET_SLOW 492.0 781.0 -22.0 pickup_health[38] // In the semi-cave CREATE_PICKUP health PICKUP_ON_STREET_SLOW -322.0 2673.0 63.0 pickup_health[39] //behind building on the way to the chicken stunt jump CREATE_PICKUP health PICKUP_ON_STREET_SLOW 1245.9048 -775.9602 1084.0078 pickup_health[40] //health pick up, dark sauna style room model name CREATE_PICKUP health PICKUP_ON_STREET_SLOW 934.2552 -935.1726 57.7345 pickup_health[41] //chatuex marmount balcony in la CREATE_PICKUP health PICKUP_ON_STREET_SLOW 1722.38 -1640.57 20.22 pickup_health[42] //atrium where just business is CREATE_PICKUP health PICKUP_ON_STREET_SLOW 1173.22 -1324.43 15.43 pickup_health[43] // all saints general hospital CREATE_PICKUP health PICKUP_ON_STREET_SLOW 1877.54 -1982.63 13.48 pickup_health[44] // for andy d mission"Los Desperados" CREATE_PICKUP health PICKUP_ON_STREET_SLOW 2033.5 -1404.72 17.81 pickup_health[45] // county general hospital CREATE_PICKUP health PICKUP_ON_STREET_SLOW 1254.62 327.76 20.25 pickup_health[46] // crippin memorial (country side) CREATE_PICKUP health PICKUP_ON_STREET_SLOW -2653.41 610.22 14.75 pickup_health[47] // san fierro hospital CREATE_PICKUP health PICKUP_ON_STREET_SLOW 1581.24 1776.44 10.92 pickup_health[48] // las vegas hospital CREATE_PICKUP health PICKUP_ON_STREET_SLOW 263.457 1816.14 1.01 pickup_health[49] //health at inside area51 CREATE_PICKUP health PICKUP_ON_STREET_SLOW 1278.67 -773.87 1083.116 pickup_health[50] //health at inside mansion */ ////END OF HEALTH ///Body Armour VAR_INT pickup_armour[48] CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 2097.0 2154.0 14.0 pickup_armour[0] // Redsands East, in corner of balcony-like area (have to run round entire inner section of building to get to it) CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 2435.0 1663.0 16.0 pickup_armour[1] // Caligula's Palace, on top of oddly shaped central motel building CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 2500.0 0925.0 11.0 pickup_armour[2] // Las Venturas, in the corner of the church CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 2106.0 1004.0 11.0 pickup_armour[3] // Come-A-Lot, in archway underneath sign CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 1531.0 0925.0 11.0 pickup_armour[4] // LVA Freight Depot, In corner next to wooden fence inside courtyard of building CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 1433.0 1852.0 10.8 pickup_armour[5] // Las Venturas Airport, in the corner, slightly hidden from the road CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 1000.0 1068.0 11.0 pickup_armour[6] // Greenglass College, behind (east of) the dumpsters CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 1269.0 1352.0 11.0 pickup_armour[7] // Las Venturas Airport, in the corner of this hanger (opposite hanger used in 'Freefall') CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 2294.0 0547.0 01.0 pickup_armour[8] // Red County, between the stairways CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 2543.0 -1625.0 12.0 pickup_armour[9] //under flood control overpass CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 2339.0 -1944.0 13.0 pickup_armour[10] //behind willowfield building CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 2767.0 -1192.0 69.0 pickup_armour[11] //behind house in East Beach CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 2112.0 -1990.0 14.0 pickup_armour[12] //Willowfield beside train tracks between mound of scrap and crates. CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 2544.0 -1120.0 62.0 pickup_armour[13] //Las Colinas yard CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 1562.0 -1888.0 14.0 pickup_armour[14] //Verdant Bluffs outside restaurant seating CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 1086.0 -1806.0 17.0 pickup_armour[15] //Conference centre orbital walkway CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 253.0 80.0 1004.0 pickup_armour[16] //LS police locker room <----------------INSIDE PICKUP CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 1759.0 -2242.0 1.0 pickup_armour[17] //front of LS airport CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW -2650.0 -198.0 4.0 pickup_armour[18] //back yard of an Ocean flats house CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW -2285.0 -24.0 35.0 pickup_armour[19] //Garcia alleyway CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW -1863.0 112.0 15.0 pickup_armour[20] //Hidden behind Solarin Industries building CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW -1574.0 1268.0 1.27 pickup_armour[21] //on a concrete pier in Esplanade East CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW -2916.0 992.0 8.0 pickup_armour[22] //Palisades bottom of a cliff CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW -2513.0 770.0 35.0 pickup_armour[23] // Juniper Hill supa save carpark CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW -1394.0 -373.0 6.0 pickup_armour[24] //SF airport outside terminal CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW -2303.0 -1606.0 484.0 pickup_armour[25] //top of Chiliad CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW -2092.0 -2330.0 31.0 pickup_armour[26] //behind restaurant wall CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW -2260.0 2568.0 6.0 pickup_armour[27] //Bayside beach CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW -902.0 2689.0 42.0 pickup_armour[28] //between huts at the USJ CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW -317.0 2651.0 67.0 pickup_armour[29] //on roof behind the Pecker's feed and seed sign CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 1325.0 190.0 19.0 pickup_armour[30]//inside trailer park CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 2487.0 139.0 27.0 pickup_armour[31]//between a house and it's garage CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 761.0 380.0 23.0 pickup_armour[32]// In trailer park behind shack CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW -51.0 -232.0 7.0 pickup_armour[33]//round the back of the fleisch beer factory, beside the back door CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 252.0 2616.0 17.0 pickup_armour[34]//In an aeroplane fuselage CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 212.0 1807.0 22.0 pickup_armour[35]//top of a guard tower CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 1291.7604 -803.4566 1089.9297 pickup_armour[36]//armour, bedroom CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 1715.12 -1673.51 20.22 pickup_armour[37]//armour, bedroom CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 943.0120 -939.8284 57.7345 pickup_armour[38] //chatuex marmount balcony in la CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 275.169 1859.699 9.81 pickup_armour[39] //body armour at inside area51 CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 1268.34 -804.33 1084.01 pickup_armour[40] //body armour at inside mansion mad dog CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 263.52 83.14 1001.0391 pickup_armour[41] //police station 1 CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 264.2632 117.0737 1008.8125 pickup_armour[42] //police station 1 CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 245.0618 195.9429 1008.1719 pickup_armour[43] //police station 1 CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 215.8489 126.0831 1003.2257 pickup_armour[44] //police station 1 CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 2125.4934 -2275.0366 20.5202 pickup_armour[45] //for imrans warehouse mission //CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 266.2813 1816.3976 1.594 pickup_armour[46] // body armor for area 51 mission CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 2230.4504 -2286.0044 14.3751 pickup_armour[47] //for imrans warehouse mission //END OF BODY ARMOR // POLICE BRIBES VAR_INT pickup_bribe[50] //LAS VENTURAS: CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 2743.0 1316.0 08.0 pickup_bribe[0] // Julius Thruway Est, underneath the overpass (near to one of the police bike pickups CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 2168.66 2267.96 15.34 pickup_bribe[1] // The Emerald Isleween this set of trees, at about the right height to grab from doing the jump CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 2408.0 1389.0 22.0 pickup_bribe[2] // Royale Casino, near powerlines, accessible from USJ to south CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 2034.0 0842.0 10.0 pickup_bribe[3] // Julius Thruway S should be able to pick it up by jumping off the central divider CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 2096.0 1287.0 10.8 pickup_bribe[4] // The Camel's Toe, beneath the big needle style monument CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 1987.0 1543.0 16.0 pickup_bribe[5] // The Strip, in a good position to grab by jumping off the pirate ships ramp in a bike CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 1854.0 0912.0 10.80 pickup_bribe[6] // The Four Dragons Casino, in the little fenced off bit (should be nice for coming off the freeway, smashing through the fences and grabbing it) CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 2540.38 2527.85 10.39 pickup_bribe[7] // Julius Thruway East, in between tracks and building, along gravel path to Highway. CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 1548.02 1024.47 10.39 pickup_bribe[8] // LVA Freight Depot, inside cordoned off fence - great to smash through. CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 1592.91 2053.83 10.26 pickup_bribe[9] // Redsands West, in small alley with shootable wooden fences - poifect! CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 1971.29 2330.26 10.41 pickup_bribe[10] // Redsands East, in box filled alleyway, Starsky and Hutch style CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 1700.74 1792.70 10.41 pickup_bribe[11] // Las Venturas Airport, by building, right before jumping highway via ramp. //LOS SANTOS: CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 2581.0 -1491.0 24.0 pickup_bribe[12]// East Los Santos going through gap in fence to flood control CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 2296.0 -1696.0 14.0 pickup_bribe[13]// Ganton, through aleyway close to hub CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 2273.0 -1099.0 38.0 pickup_bribe[14] //Las Colinas sloping alleyway CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 2716.0 -1048.0 66.0 pickup_bribe[15] // collected by jumping east down this las colinas road CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 2614.0 -2496.0 33.0 pickup_bribe[16] //top of bridge arch Ocean docks CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 1183.85 -1250.68 14.7 pickup_bribe[17] // alleyway slash courtyard which forms a kind of crossroads CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 1970.0 -1158.0 21.0 pickup_bribe[18] //archway under bridge in Glen Park CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 734.0 -1137.0 18.0 pickup_bribe[19] // Vinewood underpass CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 2553.76 -2464.31 13.62 pickup_bribe[20] // Ocean Docks, in between building and cargo CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 1204.06 -1613.89 13.28 pickup_bribe[21] // Verona Beach, in alleyway CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 611.21 -1459.63 14.01 pickup_bribe[22] // Rodeo, in building foyer thing. CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 1116.67 -719.91 100.17 pickup_bribe[23] // Mullholland, next to house, just before massive leap down to road below //SAN FIERRO: CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW -1903.10 -466.44 25.18 pickup_bribe[24] // Foster Valley, under Highway CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW -2657.0 -144.0 4.0 pickup_bribe[25] // alleyway behind houses Ocean Flats CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW -2454.0 -166.0 35.0 pickup_bribe[26] // Hashbury alleyway CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW -2009.0 1227.0 32.0 pickup_bribe[27] // Calton heights steep alleyway CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW -2120.0 96.39 39.0 pickup_bribe[28] //Doherty Alley CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW -2411.0 -334.0 37.0 pickup_bribe[29] //Avispa country club underpass CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW -1690.0 450.0 13.0 pickup_bribe[30] // traintracks beside the Xoomer station] CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW -1991.26 -1144.13 29.69 pickup_bribe[31] // Foster Valley, on road turnoff, quite secluded. CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW -2636.13 -492.83 70.09 pickup_bribe[32] // Missionary Hill, on edge of hill leading down to road below CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW -2022.68 345.98 35.17 pickup_bribe[33] // King's, inside scaffolding barrier CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW -2683.20 784.13 49.98 pickup_bribe[34] //Santa Flora, back of houses, in front of residential garages CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW -1820.67 -154.12 9.40 pickup_bribe[35] // Doherty, in industrial warehouse thingy //DESERT/COUNTRY: CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW -736.0 66.0 24.0 pickup_bribe[36] // small dirt track linking curvy road CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 262.33 -149.12 1.58 pickup_bribe[37] // beside where the gun nut g/f is encountered CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 1643.0 264.0 20.0 pickup_bribe[38] // under freeway overpass at the intersection CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 601.98 2150.38 39.41 pickup_bribe[39] // Bone County, on road edge in bushes CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW -1407.0 -2039.0 1.0 pickup_bribe[40] // over the forded river CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW -2156.0 -2371.0 31.0 pickup_bribe[41] // angel pine alleyway CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW -419.25 1362.36 12.21 pickup_bribe[42] // in secret tunnel underground //CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW -111.0 1132.0 20.0 pickup_bribe[43] // drive through barn CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 629.04 2842.83 25.21 pickup_bribe[44] // at bottom of slope at side of desert CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 690.49 -209.59 25.60 pickup_bribe[45] // Red County, on rocky slope CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 88.82 -125.10 0.85 pickup_bribe[46] // Blueberry Acres, on field road CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 215.69 1089.10 16.40 pickup_bribe[47] // Bone County, in between trees CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW -2305.24 2310.11 4.98 pickup_bribe[48] // Bayside Marina, on pier CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW -213.61 2717.44 62.68 pickup_bribe[49] // Las Payasadas, in between houses in alley // END BRIBES MISSION_END MISSION_START SCRIPT_NAME initil2 VAR_INT sequence_task_obj VAR_INT temp_integer_1 temp_integer_2 temp_integer_3 temp_integer_4 an VAR_FLOAT temp_float_1 temp_float_2 temp_float_3 x_temp y_temp z_temp //SLOT MACHINE VAR_INT cherry VAR_INT grape VAR_INT r_69 VAR_INT bell VAR_INT bar1_o VAR_INT bar2_o cherry = 25 grape = 100 r_69 = 250 bell = 500 bar1_o = 1000 bar2_o = 5000 VAR_INT reel1_winnings[18] reel2_winnings[18] reel3_winnings[18] reel1_winnings[0] = bar2_o reel1_winnings[1] = r_69 reel1_winnings[2] = bar1_o reel1_winnings[3] = bell reel1_winnings[4] = cherry reel1_winnings[5] = grape reel1_winnings[6] = cherry reel1_winnings[7] = grape reel1_winnings[8] = bell reel1_winnings[9] = r_69 reel1_winnings[10] = bell reel1_winnings[11] = bar1_o reel1_winnings[12] = cherry reel1_winnings[13] = grape reel1_winnings[14] = r_69 reel1_winnings[15] = grape reel1_winnings[16] = bell reel1_winnings[17] = cherry reel2_winnings[0] = r_69 reel2_winnings[1] = bell reel2_winnings[2] = cherry reel2_winnings[3] = grape reel2_winnings[4] = bar2_o reel2_winnings[5] = bell reel2_winnings[6] = grape reel2_winnings[7] = cherry reel2_winnings[8] = bell reel2_winnings[9] = bar1_o reel2_winnings[10] = grape reel2_winnings[11] = r_69 reel2_winnings[12] = cherry reel2_winnings[13] = bar1_o reel2_winnings[14] = cherry reel2_winnings[15] = r_69 reel2_winnings[16] = bell reel2_winnings[17] = grape reel3_winnings[0] = grape reel3_winnings[1] = cherry reel3_winnings[2] = r_69 reel3_winnings[3] = bell reel3_winnings[4] = grape reel3_winnings[5] = bell reel3_winnings[6] = r_69 reel3_winnings[7] = grape reel3_winnings[8] = cherry reel3_winnings[9] = bar1_o reel3_winnings[10] = bar2_o reel3_winnings[11] = cherry reel3_winnings[12] = bell reel3_winnings[13] = r_69 reel3_winnings[14] = grape reel3_winnings[15] = bar1_o reel3_winnings[16] = bell reel3_winnings[17] = cherry var_float reel_sprite_x[5] reel_sprite_y[5] reel_sprite_x[0] = 261.3555 reel_sprite_y[0] = 399.3732 reel_sprite_x[1] = 219.0498 reel_sprite_y[1] = 356.6364 reel_sprite_x[2] = 431.2757 reel_sprite_y[2] = 424.3356 //ROULETTE var_float rou_text_x[4] rou_text_y[4] var_float rou_x_scale[2] rou_y_scale[2] rou_text_x[0] = 36.3650 rou_text_y[0] = 240.1570 rou_x_scale[0] = 0.4714 rou_y_scale[0] = 2.5077 rou_text_x[1] = 29.3763 rou_text_y[1] = 20.0589 rou_x_scale[1] = 0.6253 rou_y_scale[1] = 2.7876 rou_text_x[2] = 28.5106 rou_text_y[2] = 220.0782 rou_text_x[3] = 157.2242 rou_text_y[3] = 409.3602 var_int roulette_triggered roulette_triggered = 0 VAR_FLOAT spot1_topleft_x spot1_topleft_y spot36_bottomright_x spot36_bottomright_y spot1_topleft_x = -0.316 spot1_topleft_y = 0.497 spot36_bottomright_x = 0.408 spot36_bottomright_y = -1.342 x = spot1_topleft_x - spot36_bottomright_x y = spot1_topleft_y - spot36_bottomright_y VAR_FLOAT spot_size_x spot_size_y spot_size_x = x / 6.0 spot_size_y = y / 24.0 VAR_FLOAT spot1_x spot1_y spot1_z spot1_x = spot1_topleft_x - spot_size_x spot1_y = spot1_topleft_y - spot_size_y spot1_z = -0.176 VAR_FLOAT spot_selection_x spot_selection_y spot_selection_x = 0.0 spot_selection_y = 0.0 VAR_FLOAT chip_position_x chip_position_y chip_position_x = 0.0 chip_position_y = 0.0 VAR_FLOAT spot_increment_x spot_increment_y spot_increment_x = 0.0 spot_increment_y = 0.0 VAR_INT roulette_flag wheel_rotation_timer roulette_flag = 0 wheel_rotation_timer = 0 VAR_FLOAT selected_spot_x[151] selected_spot_y[151] selected_spot_x[0] = -2.0 //0 // 35/1 BETS selected_spot_y[0] = 2.0 selected_spot_x[1] = 0.0 //1 selected_spot_y[1] = 0.0 selected_spot_x[2] = -2.0 //2 selected_spot_y[2] = 0.0 selected_spot_x[3] = -4.0 //3 selected_spot_y[3] = 0.0 selected_spot_x[4] = 0.0 //4 selected_spot_y[4] = -2.0 selected_spot_x[5] = -2.0 //5 selected_spot_y[5] = -2.0 selected_spot_x[6] = -4.0 //6 selected_spot_y[6] = -2.0 selected_spot_x[7] = 0.0 //7 selected_spot_y[7] = -4.0 selected_spot_x[8] = -2.0 //8 selected_spot_y[8] = -4.0 selected_spot_x[9] = -4.0 //9 selected_spot_y[9] = -4.0 selected_spot_x[10] = 0.0 //10 selected_spot_y[10] = -6.0 selected_spot_x[11] = -2.0 //11 selected_spot_y[11] = -6.0 selected_spot_x[12] = -4.0 //12 selected_spot_y[12] = -6.0 selected_spot_x[13] = 0.0 //13 selected_spot_y[13] = -8.0 selected_spot_x[14] = -2.0 //14 selected_spot_y[14] = -8.0 selected_spot_x[15] = -4.0 //15 selected_spot_y[15] = -8.0 selected_spot_x[16] = 0.0 //16 selected_spot_y[16] = -10.0 selected_spot_x[17] = -2.0 //17 selected_spot_y[17] = -10.0 selected_spot_x[18] = -4.0 //18 selected_spot_y[18] = -10.0 selected_spot_x[19] = 0.0 //19 selected_spot_y[19] = -12.0 selected_spot_x[20] = -2.0 //20 selected_spot_y[20] = -12.0 selected_spot_x[21] = -4.0 //21 selected_spot_y[21] = -12.0 selected_spot_x[22] = 0.0 //22 selected_spot_y[22] = -14.0 selected_spot_x[23] = -2.0 //23 selected_spot_y[23] = -14.0 selected_spot_x[24] = -4.0 //24 selected_spot_y[24] = -14.0 selected_spot_x[25] = 0.0 //25 selected_spot_y[25] = -16.0 selected_spot_x[26] = -2.0 //26 selected_spot_y[26] = -16.0 selected_spot_x[27] = -4.0 //27 selected_spot_y[27] = -16.0 selected_spot_x[28] = 0.0 //28 selected_spot_y[28] = -18.0 selected_spot_x[29] = -2.0 //29 selected_spot_y[29] = -18.0 selected_spot_x[30] = -4.0 //30 selected_spot_y[30] = -18.0 selected_spot_x[31] = 0.0 //31 selected_spot_y[31] = -20.0 selected_spot_x[32] = -2.0 //32 selected_spot_y[32] = -20.0 selected_spot_x[33] = -4.0 //33 selected_spot_y[33] = -20.0 selected_spot_x[34] = 0.0 //34 selected_spot_y[34] = -22.0 selected_spot_x[35] = -2.0 //35 selected_spot_y[35] = -22.0 selected_spot_x[36] = -4.0 //36 selected_spot_y[36] = -22.0 selected_spot_x[37] = -1.0 //1_2 // 17/1 BETS - LEFT TO RIGHT selected_spot_y[37] = 0.0 selected_spot_x[38] = -3.0 //2_3 selected_spot_y[38] = 0.0 selected_spot_x[39] = -1.0 //4_5 selected_spot_y[39] = -2.0 selected_spot_x[40] = -3.0 //5_6 selected_spot_y[40] = -2.0 selected_spot_x[41] = -1.0 //7_8 selected_spot_y[41] = -4.0 selected_spot_x[42] = -3.0 //8_9 selected_spot_y[42] = -4.0 selected_spot_x[43] = -1.0 //10_11 selected_spot_y[43] = -6.0 selected_spot_x[44] = -3.0 //11_12 selected_spot_y[44] = -6.0 selected_spot_x[45] = -1.0 //13_14 selected_spot_y[45] = -8.0 selected_spot_x[46] = -3.0 //14_15 selected_spot_y[46] = -8.0 selected_spot_x[47] = -1.0 //16_17 selected_spot_y[47] = -10.0 selected_spot_x[48] = -3.0 //17_18 selected_spot_y[48] = -10.0 selected_spot_x[49] = -1.0 //19_20 selected_spot_y[49] = -12.0 selected_spot_x[50] = -3.0 //20_21 selected_spot_y[50] = -12.0 selected_spot_x[51] = -1.0 //22_23 selected_spot_y[51] = -14.0 selected_spot_x[52] = -3.0 //23_24 selected_spot_y[52] = -14.0 selected_spot_x[53] = -1.0 //25_26 selected_spot_y[53] = -16.0 selected_spot_x[54] = -3.0 //26_27 selected_spot_y[54] = -16.0 selected_spot_x[55] = -1.0 //28_29 selected_spot_y[55] = -18.0 selected_spot_x[56] = -3.0 //29_30 selected_spot_y[56] = -18.0 selected_spot_x[57] = -1.0 //31_32 selected_spot_y[57] = -20.0 selected_spot_x[58] = -3.0 //32_33 selected_spot_y[58] = -20.0 selected_spot_x[59] = -1.0 //34_35 selected_spot_y[59] = -22.0 selected_spot_x[60] = -3.0 //35_36 selected_spot_y[60] = -22.0 selected_spot_x[61] = 0.0 //1_4 // 17/1 BETS - UP TO DOWN selected_spot_y[61] = -1.0 selected_spot_x[62] = -2.0 //2_5 selected_spot_y[62] = -1.0 selected_spot_x[63] = -4.0 //3_6 selected_spot_y[63] = -1.0 selected_spot_x[64] = 0.0 //4_7 selected_spot_y[64] = -3.0 selected_spot_x[65] = -2.0 //5_8 selected_spot_y[65] = -3.0 selected_spot_x[66] = -4.0 //6_9 selected_spot_y[66] = -3.0 selected_spot_x[67] = 0.0 //7_10 selected_spot_y[67] = -5.0 selected_spot_x[68] = -2.0 //8_11 selected_spot_y[68] = -5.0 selected_spot_x[69] = -4.0 //9_12 selected_spot_y[69] = -5.0 selected_spot_x[70] = 0.0 //10_13 selected_spot_y[70] = -7.0 selected_spot_x[71] = -2.0 //11_14 selected_spot_y[71] = -7.0 selected_spot_x[72] = -4.0 //12_15 selected_spot_y[72] = -7.0 selected_spot_x[73] = 0.0 //13_16 selected_spot_y[73] = -9.0 selected_spot_x[74] = -2.0 //14_17 selected_spot_y[74] = -9.0 selected_spot_x[75] = -4.0 //15_18 selected_spot_y[75] = -9.0 selected_spot_x[76] = 0.0 //16_19 selected_spot_y[76] = -11.0 selected_spot_x[77] = -2.0 //17_20 selected_spot_y[77] = -11.0 selected_spot_x[78] = -4.0 //18_21 selected_spot_y[78] = -11.0 selected_spot_x[79] = 0.0 //19_22 selected_spot_y[79] = -13.0 selected_spot_x[80] = -2.0 //20_23 selected_spot_y[80] = -13.0 selected_spot_x[81] = -4.0 //21_24 selected_spot_y[81] = -13.0 selected_spot_x[82] = 0.0 //22_25 selected_spot_y[82] = -15.0 selected_spot_x[83] = -2.0 //23_26 selected_spot_y[83] = -15.0 selected_spot_x[84] = -4.0 //24_27 selected_spot_y[84] = -15.0 selected_spot_x[85] = 0.0 //25_28 selected_spot_y[85] = -17.0 selected_spot_x[86] = -2.0 //26_29 selected_spot_y[86] = -17.0 selected_spot_x[87] = -4.0 //27_30 selected_spot_y[87] = -17.0 selected_spot_x[88] = 0.0 //28_31 selected_spot_y[88] = -19.0 selected_spot_x[89] = -2.0 //29_32 selected_spot_y[89] = -19.0 selected_spot_x[90] = -4.0 //30_33 selected_spot_y[90] = -19.0 selected_spot_x[91] = 0.0 //31_34 selected_spot_y[91] = -21.0 selected_spot_x[92] = -2.0 //32_35 selected_spot_y[92] = -21.0 selected_spot_x[93] = -4.0 //33_36 selected_spot_y[93] = -21.0 selected_spot_x[94] = -5.0 //1_2_3 // 11/1 BETS selected_spot_y[94] = 0.0 selected_spot_x[95] = -5.0 //4_5_6 selected_spot_y[95] = -2.0 selected_spot_x[96] = -5.0 //7_8_9 selected_spot_y[96] = -4.0 selected_spot_x[97] = -5.0 //10_11_12 selected_spot_y[97] = -6.0 selected_spot_x[98] = -5.0 //13_14_15 selected_spot_y[98] = -8.0 selected_spot_x[99] = -5.0 //16_17_18 selected_spot_y[99] = -10.0 selected_spot_x[100] = -5.0 //19_20_21 selected_spot_y[100] = -12.0 selected_spot_x[101] = -5.0 //22_23_24 selected_spot_y[101] = -14.0 selected_spot_x[102] = -5.0 //25_26_27 selected_spot_y[102] = -16.0 selected_spot_x[103] = -5.0 //28_29_30 selected_spot_y[103] = -18.0 selected_spot_x[104] = -5.0 //31_32_33 selected_spot_y[104] = -20.0 selected_spot_x[105] = -5.0 //34_35_36 selected_spot_y[105] = -22.0 selected_spot_x[106] = -1.0 //1_2_4_5 // 8/1 BETS LEFT - RIGHT selected_spot_y[106] = -1.0 selected_spot_x[107] = -3.0 //2_3_5_6 selected_spot_y[107] = -1.0 selected_spot_x[108] = -1.0 //4_5_7_8 selected_spot_y[108] = -3.0 selected_spot_x[109] = -3.0 //5_6_8_9 selected_spot_y[109] = -3.0 selected_spot_x[110] = -1.0 //7_8_10_11 selected_spot_y[110] = -5.0 selected_spot_x[111] = -3.0 //8_9_11_12 selected_spot_y[111] = -5.0 selected_spot_x[112] = -1.0 //10_11_13_14 selected_spot_y[112] = -7.0 selected_spot_x[113] = -3.0 //11_12_14_15 selected_spot_y[113] = -7.0 selected_spot_x[114] = -1.0 //13_14_16_17 selected_spot_y[114] = -9.0 selected_spot_x[115] = -3.0 //14_15_17_18 selected_spot_y[115] = -9.0 selected_spot_x[116] = -1.0 //16_17_19_20 selected_spot_y[116] = -11.0 selected_spot_x[117] = -3.0 //17_18_20_21 selected_spot_y[117] = -11.0 selected_spot_x[118] = -1.0 //19_20_22_23 selected_spot_y[118] = -13.0 selected_spot_x[119] = -3.0 //20_21_23_24 selected_spot_y[119] = -13.0 selected_spot_x[120] = -1.0 //22_23_25_26 selected_spot_y[120] = -15.0 selected_spot_x[121] = -3.0 //23_24_26_27 selected_spot_y[121] = -15.0 selected_spot_x[122] = -1.0 //25_26_28_29 selected_spot_y[122] = -17.0 selected_spot_x[123] = -3.0 //26_27_29_30 selected_spot_y[123] = -17.0 selected_spot_x[124] = -1.0 //28_29_31_32 selected_spot_y[124] = -19.0 selected_spot_x[125] = -3.0 //29_30_32_33 selected_spot_y[125] = -19.0 selected_spot_x[126] = -1.0 //31_32_34_35 selected_spot_y[126] = -21.0 selected_spot_x[127] = -3.0 //32_33_35_36 selected_spot_y[127] = -21.0 selected_spot_x[128] = 0.0 //2to1_left // 2/1 BETS BOTTOM ROW - LEFT TO RIGHT selected_spot_y[128] = -24.0 selected_spot_x[129] = -2.0 //2to1_middle selected_spot_y[129] = -24.0 selected_spot_x[130] = -4.0 //2to1_right selected_spot_y[130] = -24.0 selected_spot_x[131] = 2.0 //1st_12 // 1ST 2ND 3RD 12 BETS - TOP TO BOTTOM selected_spot_y[131] = -3.0 selected_spot_x[132] = 2.0 //2nd_12 selected_spot_y[132] = -11.0 selected_spot_x[133] = 2.0 //3rd_12 selected_spot_y[133] = -19.0 selected_spot_x[134] = 4.0 //1_to_18 //EVEN MONEY BETS selected_spot_y[134] = -1.0 selected_spot_x[135] = 4.0 //19_to_36 selected_spot_y[135] = -21.0 selected_spot_x[136] = 4.0 //even selected_spot_y[136] = -5.0 selected_spot_x[137] = 4.0 //odd selected_spot_y[137] = -17.0 selected_spot_x[138] = 4.0 //red selected_spot_y[138] = -9.0 selected_spot_x[139] = 4.0 //black selected_spot_y[139] = -13.0 selected_spot_x[140] = -5.0 //1_2_3_4_5_6 // 5/1 BETS selected_spot_y[140] = -1.0 selected_spot_x[141] = -5.0 //4_5_6_7_8_9 selected_spot_y[141] = -3.0 selected_spot_x[142] = -5.0 //7_8_9_10_11_12 selected_spot_y[142] = -5.0 selected_spot_x[143] = -5.0 //10_11_12_13_14_15 selected_spot_y[143] = -7.0 selected_spot_x[144] = -5.0 //13_14_15_16_17_18 selected_spot_y[144] = -9.0 selected_spot_x[145] = -5.0 //16_17_18_19_20_21 selected_spot_y[145] = -11.0 selected_spot_x[146] = -5.0 //19_20_21_22_23_24 selected_spot_y[146] = -13.0 selected_spot_x[147] = -5.0 //22_23_24_25_26_27 selected_spot_y[147] = -15.0 selected_spot_x[148] = -5.0 //25_26_27_28_29_30 selected_spot_y[148] = -17.0 selected_spot_x[149] = -5.0 //28_29_30_31_32_33 selected_spot_y[149] = -19.0 selected_spot_x[150] = -5.0 //31_32_33_34_35_36 selected_spot_y[150] = -21.0 VAR_FLOAT sprite_x sprite_y sprite_x = 345.3592 sprite_y = 55.3183 var_int no_more_bets_b[3] no_more_bets_b[0] = SOUND_B_NMB_1 //No more bets, please. no_more_bets_b[1] = SOUND_B_NMB_2 //No more bets, ladies and gentlemen, please. no_more_bets_b[2] = SOUND_B_NMB_3 //No more bets, people. var_int no_money_b[3] no_money_b[0] = SOUND_B_NEM_1 //Sir doesn't have sufficient money to back another bet. no_money_b[1] = SOUND_B_NEM_2 //Sorry, sir, you do not have enough funds. no_money_b[2] = SOUND_B_NEM_3 //You appear to have insufficient funds to continue betting. var_int gambling_stat_too_low_b[3] gambling_stat_too_low_b[0] = SOUND_B_REG_1 //I'm sorry, sir, regulars only. gambling_stat_too_low_b[1] = SOUND_B_REG_2 //The house does not recognise your limit at this table, sir. var_int player_wins_b[6] player_wins_b[0] = SOUND_B_PWIN1 //You win. player_wins_b[1] = SOUND_B_PWIN2 //You win, sir, well done. player_wins_b[2] = SOUND_B_PWIN3 //Congratulations sir! player_wins_b[3] = SOUND_B_WINS1 //Another win for sir! player_wins_b[4] = SOUND_B_WINS2 //Congratulations, sir, you're having quite a run! player_wins_b[5] = SOUND_B_WINS3 //I hope sir's luck holds! var_int player_leaves_b[2] player_leaves_b[0] = SOUND_B_THX_1 //Thankyou, sir, have a nice day! player_leaves_b[1] = SOUND_B_THX_2 //Thankyou for playing, sir. var_int place_bets_b[2] place_bets_b[0] = SOUND_B_BET_1 //Place your bets! place_bets_b[1] = SOUND_B_BET_2 //Place your bets, ladies and gentlemen. var_int roulette_result_b[37] roulette_result_b[0] = SOUND_B_NUM_0 //Zero! roulette_result_b[1] = SOUND_B_NUM_1 //Red - 1 roulette_result_b[2] = SOUND_B_NUM_2 //Black - 2 roulette_result_b[3] = SOUND_B_NUM_3 //Red - 3 roulette_result_b[4] = SOUND_B_NUM_4 //Black - 4 roulette_result_b[5] = SOUND_B_NUM_5 //Red - 5 roulette_result_b[6] = SOUND_B_NUM_6 //Black - 6 roulette_result_b[7] = SOUND_B_NUM_7 //Red - 7 roulette_result_b[8] = SOUND_B_NUM_8 //Black - 8 roulette_result_b[9] = SOUND_B_NUM_9 //Red - 9 roulette_result_b[10] = SOUND_B_NUM10 //Black - 10 roulette_result_b[11] = SOUND_B_NUM11 //Black - 11 roulette_result_b[12] = SOUND_B_NUM12 //Red - 12 roulette_result_b[13] = SOUND_B_NUM13 //Black - 13 roulette_result_b[14] = SOUND_B_NUM14 //Red - 14 roulette_result_b[15] = SOUND_B_NUM15 //Black - 15 roulette_result_b[16] = SOUND_B_NUM16 //Red - 16 roulette_result_b[17] = SOUND_B_NUM17 //Black - 17 roulette_result_b[18] = SOUND_B_NUM18 //Red - 18 roulette_result_b[19] = SOUND_B_NUM19 //Red - 19 roulette_result_b[20] = SOUND_B_NUM20 //Black - 20 roulette_result_b[21] = SOUND_B_NUM21 //Red - 21 roulette_result_b[22] = SOUND_B_NUM22 //Black - 22 roulette_result_b[23] = SOUND_B_NUM23 //Red - 23 roulette_result_b[24] = SOUND_B_NUM24 //Black - 24 roulette_result_b[25] = SOUND_B_NUM25 //Red - 25 roulette_result_b[26] = SOUND_B_NUM26 //Black - 26 roulette_result_b[27] = SOUND_B_NUM27 //Red - 27 roulette_result_b[28] = SOUND_B_NUM28 //Black - 28 roulette_result_b[29] = SOUND_B_NUM29 //Black - 29 roulette_result_b[30] = SOUND_B_NUM30 //Red - 30 roulette_result_b[31] = SOUND_B_NUM31 //Black - 31 roulette_result_b[32] = SOUND_B_NUM32 //Red - 32 roulette_result_b[33] = SOUND_B_NUM33 //Black - 33 roulette_result_b[34] = SOUND_B_NUM34 //Red - 34 roulette_result_b[35] = SOUND_B_NUM35 //Black - 35 roulette_result_b[36] = SOUND_B_NUM36 //Red - 36 var_int player_gets_credit_b[3] player_gets_credit_b[0] = SOUND_B_LEND1 //An offer of credit has been made, sir. player_gets_credit_b[1] = SOUND_B_LEND2 //The house is prepared to offer you credit, sir. player_gets_credit_b[2] = SOUND_B_LEND3 //The house recognises sir's credit rating. var_int no_more_bets_w[3] no_more_bets_w[0] = SOUND_W_NMB_1 //No more bets, please. no_more_bets_w[1] = SOUND_W_NMB_2 //No more bets, ladies and gentlemen, please. no_more_bets_w[2] = SOUND_W_NMB_3 //No more bets, people. var_int no_money_w[3] no_money_w[0] = SOUND_W_NEM_1 //Sir doesn't have sufficient money to back another bet. no_money_w[1] = SOUND_W_NEM_2 //Sorry, sir, you do not have enough funds. no_money_w[2] = SOUND_W_NEM_3 //You appear to have insufficient funds to continue betting. var_int gambling_stat_too_low_w[3] gambling_stat_too_low_w[0] = SOUND_W_REG_1 //I'm sorry, sir, regulars only. gambling_stat_too_low_w[1] = SOUND_W_REG_2 //The house does not recognise your limit at this table, sir. var_int player_wins_w[6] player_wins_w[0] = SOUND_W_PWIN1 //You win. player_wins_w[1] = SOUND_W_PWIN2 //You win, sir, well done. player_wins_w[2] = SOUND_W_PWIN3 //Congratulations sir! player_wins_w[3] = SOUND_W_WINS1 //Another win for sir! player_wins_w[4] = SOUND_W_WINS2 //Congratulations, sir, you're having quite a run! player_wins_w[5] = SOUND_W_WINS3 //I hope sir's luck holds! var_int player_leaves_w[2] player_leaves_w[0] = SOUND_W_THX_1 //Thankyou, sir, have a nice day! player_leaves_w[1] = SOUND_W_THX_2 //Thankyou for playing, sir. var_int place_bets_w[2] place_bets_w[0] = SOUND_W_BET_1 //Place your bets! place_bets_w[1] = SOUND_W_BET_2 //Place your bets, ladies and gentlemen. var_int roulette_result_w[37] roulette_result_w[0] = SOUND_W_NUM_0 //Zero! roulette_result_w[1] = SOUND_W_NUM_1 //Red - 1 roulette_result_w[2] = SOUND_W_NUM_2 //Black - 2 roulette_result_w[3] = SOUND_W_NUM_3 //Red - 3 roulette_result_w[4] = SOUND_W_NUM_4 //Black - 4 roulette_result_w[5] = SOUND_W_NUM_5 //Red - 5 roulette_result_w[6] = SOUND_W_NUM_6 //Black - 6 roulette_result_w[7] = SOUND_W_NUM_7 //Red - 7 roulette_result_w[8] = SOUND_W_NUM_8 //Black - 8 roulette_result_w[9] = SOUND_W_NUM_9 //Red - 9 roulette_result_w[10] = SOUND_W_NUM10 //Black - 10 roulette_result_w[11] = SOUND_W_NUM11 //Black - 11 roulette_result_w[12] = SOUND_W_NUM12 //Red - 12 roulette_result_w[13] = SOUND_W_NUM13 //Black - 13 roulette_result_w[14] = SOUND_W_NUM14 //Red - 14 roulette_result_w[15] = SOUND_W_NUM15 //Black - 15 roulette_result_w[16] = SOUND_W_NUM16 //Red - 16 roulette_result_w[17] = SOUND_W_NUM17 //Black - 17 roulette_result_w[18] = SOUND_W_NUM18 //Red - 18 roulette_result_w[19] = SOUND_W_NUM19 //Red - 19 roulette_result_w[20] = SOUND_W_NUM20 //Black - 20 roulette_result_w[21] = SOUND_W_NUM21 //Red - 21 roulette_result_w[22] = SOUND_W_NUM22 //Black - 22 roulette_result_w[23] = SOUND_W_NUM23 //Red - 23 roulette_result_w[24] = SOUND_W_NUM24 //Black - 24 roulette_result_w[25] = SOUND_W_NUM25 //Red - 25 roulette_result_w[26] = SOUND_W_NUM26 //Black - 26 roulette_result_w[27] = SOUND_W_NUM27 //Red - 27 roulette_result_w[28] = SOUND_W_NUM28 //Black - 28 roulette_result_w[29] = SOUND_W_NUM29 //Black - 29 roulette_result_w[30] = SOUND_W_NUM30 //Red - 30 roulette_result_w[31] = SOUND_W_NUM31 //Black - 31 roulette_result_w[32] = SOUND_W_NUM32 //Red - 32 roulette_result_w[33] = SOUND_W_NUM33 //Black - 33 roulette_result_w[34] = SOUND_W_NUM34 //Red - 34 roulette_result_w[35] = SOUND_W_NUM35 //Black - 35 roulette_result_w[36] = SOUND_W_NUM36 //Red - 36 var_int player_gets_credit_w[3] player_gets_credit_w[0] = SOUND_W_LEND1 //An offer of credit has been made, sir. player_gets_credit_w[1] = SOUND_W_LEND2 //The house is prepared to offer you credit, sir. player_gets_credit_w[2] = SOUND_W_LEND3 //The house recognises sir's credit rating. // ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» // º CASINO GAME GLOBALS  CR º // ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ // COORDS - for Bcesar2.sc - the coke courier route VAR_FLOAT bce2_CHECKPOINTS_x[85] bce2_CHECKPOINTS_y[85] bce2_CHECKPOINTS_z[85] BCE2_CHECKPOINTS_X[0] = -2307.7231 BCE2_CHECKPOINTS_Y[0] = -2235.9656 BCE2_CHECKPOINTS_Z[0] = 23.0204 BCE2_CHECKPOINTS_X[1] = -2276.6350 BCE2_CHECKPOINTS_Y[1] = -2220.0469 BCE2_CHECKPOINTS_Z[1] = 28.7160 BCE2_CHECKPOINTS_X[2] = -2199.3909 BCE2_CHECKPOINTS_Y[2] = -2283.9519 BCE2_CHECKPOINTS_Z[2] = 30.1494 BCE2_CHECKPOINTS_X[3] = -2105.4365 BCE2_CHECKPOINTS_Y[3] = -2354.4412 BCE2_CHECKPOINTS_Z[3] = 30.1419 BCE2_CHECKPOINTS_X[4] = -2142.2405 BCE2_CHECKPOINTS_Y[4] = -2410.3201 BCE2_CHECKPOINTS_Z[4] = 30.4970 BCE2_CHECKPOINTS_X[5] = -2026.4043 BCE2_CHECKPOINTS_Y[5] = -2507.7610 BCE2_CHECKPOINTS_Z[5] = 32.0519 BCE2_CHECKPOINTS_X[6] = -1938.5264 BCE2_CHECKPOINTS_Y[6] = -2456.1458 BCE2_CHECKPOINTS_Z[6] = 30.3298 BCE2_CHECKPOINTS_X[7] = -1900.3940 BCE2_CHECKPOINTS_Y[7] = -2424.6177 BCE2_CHECKPOINTS_Z[7] = 31.9732 BCE2_CHECKPOINTS_X[8] = -1862.8062 BCE2_CHECKPOINTS_Y[8] = -2381.5376 BCE2_CHECKPOINTS_Z[8] = 31.2712 BCE2_CHECKPOINTS_X[9] = -1800.6287 BCE2_CHECKPOINTS_Y[9] = -2319.6387 BCE2_CHECKPOINTS_Z[9] = 40.2496 BCE2_CHECKPOINTS_X[10] = -1707.1582 BCE2_CHECKPOINTS_Y[10] = -2302.5793 BCE2_CHECKPOINTS_Z[10] = 44.1806 BCE2_CHECKPOINTS_X[11] = -1662.6387 BCE2_CHECKPOINTS_Y[11] = -2186.9578 BCE2_CHECKPOINTS_Z[11] = 33.5305 BCE2_CHECKPOINTS_X[12] = -1688.2559 BCE2_CHECKPOINTS_Y[12] = -2115.5901 BCE2_CHECKPOINTS_Z[12] = 37.4741 BCE2_CHECKPOINTS_X[13] = -1778.9581 BCE2_CHECKPOINTS_Y[13] = -2090.0979 BCE2_CHECKPOINTS_Z[13] = 49.6459 BCE2_CHECKPOINTS_X[14] = -1868.4254 BCE2_CHECKPOINTS_Y[14] = -2088.3604 BCE2_CHECKPOINTS_Z[14] = 58.5847 BCE2_CHECKPOINTS_X[15] = -1959.4097 BCE2_CHECKPOINTS_Y[15] = -2047.8496 BCE2_CHECKPOINTS_Z[15] = 71.8449 BCE2_CHECKPOINTS_X[16] = -1947.7887 BCE2_CHECKPOINTS_Y[16] = -1948.4871 BCE2_CHECKPOINTS_Z[16] = 77.4592 BCE2_CHECKPOINTS_X[17] = -1852.1096 BCE2_CHECKPOINTS_Y[17] = -1920.4701 BCE2_CHECKPOINTS_Z[17] = 87.5994 BCE2_CHECKPOINTS_X[18] = -1754.6162 BCE2_CHECKPOINTS_Y[18] = -1898.5020 BCE2_CHECKPOINTS_Z[18] = 96.5566 BCE2_CHECKPOINTS_X[19] = -1654.1207 BCE2_CHECKPOINTS_Y[19] = -1900.0454 BCE2_CHECKPOINTS_Z[19] = 90.8553 BCE2_CHECKPOINTS_X[20] = -1554.6508 BCE2_CHECKPOINTS_Y[20] = -1901.9591 BCE2_CHECKPOINTS_Z[20] = 81.5693 BCE2_CHECKPOINTS_X[21] = -1512.3779 BCE2_CHECKPOINTS_Y[21] = -1807.0281 BCE2_CHECKPOINTS_Z[21] = 57.9597 BCE2_CHECKPOINTS_X[22] = -1433.2327 BCE2_CHECKPOINTS_Y[22] = -1860.0319 BCE2_CHECKPOINTS_Z[22] = 37.3383 BCE2_CHECKPOINTS_X[23] = -1425.8123 BCE2_CHECKPOINTS_Y[23] = -1962.0231 BCE2_CHECKPOINTS_Z[23] = 15.8029 BCE2_CHECKPOINTS_X[24] = -1298.4508 BCE2_CHECKPOINTS_Y[24] = -2114.3845 BCE2_CHECKPOINTS_Z[24] = 24.1506 BCE2_CHECKPOINTS_X[25] = -1269.6609 BCE2_CHECKPOINTS_Y[25] = -2251.1453 BCE2_CHECKPOINTS_Z[25] = 21.2137 BCE2_CHECKPOINTS_X[26] = -1260.5251 BCE2_CHECKPOINTS_Y[26] = -2283.1221 BCE2_CHECKPOINTS_Z[26] = 21.5858 BCE2_CHECKPOINTS_X[27] = -1255.2582 BCE2_CHECKPOINTS_Y[27] = -2307.5361 BCE2_CHECKPOINTS_Z[27] = 22.0660 BCE2_CHECKPOINTS_X[28] = -1253.1583 BCE2_CHECKPOINTS_Y[28] = -2315.3430 BCE2_CHECKPOINTS_Z[28] = 22.5913 BCE2_CHECKPOINTS_X[29] = -1216.7279 BCE2_CHECKPOINTS_Y[29] = -2343.4971 BCE2_CHECKPOINTS_Z[29] = 16.9383 BCE2_CHECKPOINTS_X[30] = -1193.9438 BCE2_CHECKPOINTS_Y[30] = -2355.9954 BCE2_CHECKPOINTS_Z[30] = 18.7764 BCE2_CHECKPOINTS_X[31] = -1104.6796 BCE2_CHECKPOINTS_Y[31] = -2377.1797 BCE2_CHECKPOINTS_Z[31] = 36.3239 BCE2_CHECKPOINTS_X[32] = -1000.2390 BCE2_CHECKPOINTS_Y[32] = -2371.5085 BCE2_CHECKPOINTS_Z[32] = 64.5107 BCE2_CHECKPOINTS_X[33] = -958.5369 BCE2_CHECKPOINTS_Y[33] = -2281.0547 BCE2_CHECKPOINTS_Z[33] = 52.9462 BCE2_CHECKPOINTS_X[34] = -939.7041 BCE2_CHECKPOINTS_Y[34] = -2187.0952 BCE2_CHECKPOINTS_Z[34] = 35.4659 BCE2_CHECKPOINTS_X[35] = -841.8345 BCE2_CHECKPOINTS_Y[35] = -2181.3782 BCE2_CHECKPOINTS_Z[35] = 23.7405 BCE2_CHECKPOINTS_X[36] = -790.3633 BCE2_CHECKPOINTS_Y[36] = -2095.3428 BCE2_CHECKPOINTS_Z[36] = 25.4038 BCE2_CHECKPOINTS_X[37] = -844.4321 BCE2_CHECKPOINTS_Y[37] = -2010.3385 BCE2_CHECKPOINTS_Z[37] = 20.3482 BCE2_CHECKPOINTS_X[38] = -809.2380 BCE2_CHECKPOINTS_Y[38] = -1902.5402 BCE2_CHECKPOINTS_Z[38] = 9.4239 BCE2_CHECKPOINTS_X[39] = -735.2100 BCE2_CHECKPOINTS_Y[39] = -1855.3033 BCE2_CHECKPOINTS_Z[39] = 13.5207 BCE2_CHECKPOINTS_X[40] = -641.8992 BCE2_CHECKPOINTS_Y[40] = -1846.8608 BCE2_CHECKPOINTS_Z[40] = 21.7356 BCE2_CHECKPOINTS_X[41] = -546.9716 BCE2_CHECKPOINTS_Y[41] = -1832.0959 BCE2_CHECKPOINTS_Z[41] = 25.5599 BCE2_CHECKPOINTS_X[42] = -460.5018 BCE2_CHECKPOINTS_Y[42] = -1800.0122 BCE2_CHECKPOINTS_Z[42] = 8.5607 BCE2_CHECKPOINTS_X[43] = -424.1711 BCE2_CHECKPOINTS_Y[43] = -1704.1381 BCE2_CHECKPOINTS_Z[43] = 10.8356 BCE2_CHECKPOINTS_X[44] = -410.4569 BCE2_CHECKPOINTS_Y[44] = -1611.7396 BCE2_CHECKPOINTS_Z[44] = 20.2907 BCE2_CHECKPOINTS_X[45] = -358.7348 BCE2_CHECKPOINTS_Y[45] = -1531.8839 BCE2_CHECKPOINTS_Z[45] = 19.0268 BCE2_CHECKPOINTS_X[46] = -342.9092 BCE2_CHECKPOINTS_Y[46] = -1455.6631 BCE2_CHECKPOINTS_Z[46] = 17.8712 BCE2_CHECKPOINTS_X[47] = -243.4206 BCE2_CHECKPOINTS_Y[47] = -1451.2201 BCE2_CHECKPOINTS_Z[47] = 4.3198 BCE2_CHECKPOINTS_X[48] = -193.0986 BCE2_CHECKPOINTS_Y[48] = -1477.0382 BCE2_CHECKPOINTS_Z[48] = 7.9595 BCE2_CHECKPOINTS_X[49] = -68.0509 BCE2_CHECKPOINTS_Y[49] = -1510.5131 BCE2_CHECKPOINTS_Z[49] = 1.9303 BCE2_CHECKPOINTS_X[50] = 31.2142 BCE2_CHECKPOINTS_Y[50] = -1526.8812 BCE2_CHECKPOINTS_Z[50] = 4.3931 BCE2_CHECKPOINTS_X[51] = 129.3360 BCE2_CHECKPOINTS_Y[51] = -1459.6118 BCE2_CHECKPOINTS_Z[51] = 23.8768 BCE2_CHECKPOINTS_X[52] = 139.1300 BCE2_CHECKPOINTS_Y[52] = -1255.6493 BCE2_CHECKPOINTS_Z[52] = 44.9903 BCE2_CHECKPOINTS_X[53] = 266.6300 BCE2_CHECKPOINTS_Y[53] = -995.6493 BCE2_CHECKPOINTS_Z[53] = 50.9903 BCE2_CHECKPOINTS_X[54] = 366.6300 BCE2_CHECKPOINTS_Y[54] = -757.6493 BCE2_CHECKPOINTS_Z[54] = 16.4903 BCE2_CHECKPOINTS_X[55] = 424.1300 BCE2_CHECKPOINTS_Y[55] = -567.6493 BCE2_CHECKPOINTS_Z[55] = 38.9903 BCE2_CHECKPOINTS_X[56] = 458.1300 BCE2_CHECKPOINTS_Y[56] = -448.1493 BCE2_CHECKPOINTS_Z[56] = 30.9903 BCE2_CHECKPOINTS_X[57] = 338.1300 BCE2_CHECKPOINTS_Y[57] = -390.6493 BCE2_CHECKPOINTS_Z[57] = 12.9903 BCE2_CHECKPOINTS_X[58] = 338.1300 BCE2_CHECKPOINTS_Y[58] = -342.1493 BCE2_CHECKPOINTS_Z[58] = 8.9903 BCE2_CHECKPOINTS_X[59] = 475.1300 BCE2_CHECKPOINTS_Y[59] = -264.6493 BCE2_CHECKPOINTS_Z[59] = 9.9903 BCE2_CHECKPOINTS_X[60] = 615.6300 BCE2_CHECKPOINTS_Y[60] = -197.1493 BCE2_CHECKPOINTS_Z[60] = 9.9903 BCE2_CHECKPOINTS_X[61] = 757.1300 BCE2_CHECKPOINTS_Y[61] = -152.1493 BCE2_CHECKPOINTS_Z[61] = 18.4903 BCE2_CHECKPOINTS_X[62] = 907.1300 BCE2_CHECKPOINTS_Y[62] = -92.1493 BCE2_CHECKPOINTS_Z[62] = 19.9903 BCE2_CHECKPOINTS_X[63] = 1135.6300 BCE2_CHECKPOINTS_Y[63] = -63.6493 BCE2_CHECKPOINTS_Z[63] = 22.9903 BCE2_CHECKPOINTS_X[64] = 1280.6300 BCE2_CHECKPOINTS_Y[64] = -170.6493 BCE2_CHECKPOINTS_Z[64] = 32.4903 BCE2_CHECKPOINTS_X[65] = 1440.6300 BCE2_CHECKPOINTS_Y[65] = -214.6493 BCE2_CHECKPOINTS_Z[65] = 7.9903 BCE2_CHECKPOINTS_X[66] = 1554.6300 BCE2_CHECKPOINTS_Y[66] = -124.6493 BCE2_CHECKPOINTS_Z[66] = 17.9903 BCE2_CHECKPOINTS_X[67] = 1551.6300 BCE2_CHECKPOINTS_Y[67] = 46.8507 BCE2_CHECKPOINTS_Z[67] = 23.9903 BCE2_CHECKPOINTS_X[68] = 1567.1300 BCE2_CHECKPOINTS_Y[68] = 122.3507 BCE2_CHECKPOINTS_Z[68] = 28.9903 BCE2_CHECKPOINTS_X[69] = 1807.1300 BCE2_CHECKPOINTS_Y[69] = 75.3507 BCE2_CHECKPOINTS_Z[69] = 34.4903 BCE2_CHECKPOINTS_X[70] = 2057.1299 BCE2_CHECKPOINTS_Y[70] = 40.3507 BCE2_CHECKPOINTS_Z[70] = 26.9903 BCE2_CHECKPOINTS_X[71] = 2275.6299 BCE2_CHECKPOINTS_Y[71] = 41.8507 BCE2_CHECKPOINTS_Z[71] = 25.4903 BCE2_CHECKPOINTS_X[72] = 2365.6299 BCE2_CHECKPOINTS_Y[72] = 91.8507 BCE2_CHECKPOINTS_Z[72] = 25.4903 BCE2_CHECKPOINTS_X[73] = 2435.6299 BCE2_CHECKPOINTS_Y[73] = 41.8507 BCE2_CHECKPOINTS_Z[73] = 25.4903 BCE2_CHECKPOINTS_X[74] = 2692.1299 BCE2_CHECKPOINTS_Y[74] = 33.8507 BCE2_CHECKPOINTS_Z[74] = 25.4903 BCE2_CHECKPOINTS_X[75] = 2737.6299 BCE2_CHECKPOINTS_Y[75] = -156.1493 BCE2_CHECKPOINTS_Z[75] = 31.4903 BCE2_CHECKPOINTS_X[76] = 2700.1299 BCE2_CHECKPOINTS_Y[76] = -384.1493 BCE2_CHECKPOINTS_Z[76] = 24.4903 BCE2_CHECKPOINTS_X[77] = 2820.1299 BCE2_CHECKPOINTS_Y[77] = -554.1493 BCE2_CHECKPOINTS_Z[77] = 9.9903 BCE2_CHECKPOINTS_X[78] = 2846.1299 BCE2_CHECKPOINTS_Y[78] = -711.6493 BCE2_CHECKPOINTS_Z[78] = 9.9903 BCE2_CHECKPOINTS_X[79] = 2841.6299 BCE2_CHECKPOINTS_Y[79] = -929.1493 BCE2_CHECKPOINTS_Z[79] = 13.9903 BCE2_CHECKPOINTS_X[80] = 2841.1299 BCE2_CHECKPOINTS_Y[80] = -1182.6493 BCE2_CHECKPOINTS_Z[80] = 23.9903 BCE2_CHECKPOINTS_X[81] = 2873.1299 BCE2_CHECKPOINTS_Y[81] = -1383.6493 BCE2_CHECKPOINTS_Z[81] = 10.4903 BCE2_CHECKPOINTS_X[82] = 2797.6299 BCE2_CHECKPOINTS_Y[82] = -1380.6493 BCE2_CHECKPOINTS_Z[82] = 20.9903 BCE2_CHECKPOINTS_X[83] = 2795.1299 BCE2_CHECKPOINTS_Y[83] = -1262.1493 BCE2_CHECKPOINTS_Z[83] = 45.9903 BCE2_CHECKPOINTS_X[84] = 2732.1299 BCE2_CHECKPOINTS_Y[84] = -1257.6493 BCE2_CHECKPOINTS_Z[84] = 58.9903 // route for coke courier in bcesar2.sc - 3 alternative routes VAR_FLOAT bce2_route1_x[116] bce2_route1_y[116] bce2_route1_z[116] bce2_route1_x[0] = 2487.8459 bce2_route1_y[0] = -1661.0308 bce2_route1_z[0] = 13.0886 bce2_route1_x[1] = 2387.6394 bce2_route1_y[1] = -1657.8467 bce2_route1_z[1] = 13.1425 bce2_route1_x[2] = 2287.4861 bce2_route1_y[2] = -1659.3157 bce2_route1_z[2] = 14.6440 bce2_route1_x[3] = 2188.2212 bce2_route1_y[3] = -1639.7067 bce2_route1_z[3] = 15.0652 bce2_route1_x[4] = 2091.6714 bce2_route1_y[4] = -1612.5411 bce2_route1_z[4] = 13.1285 bce2_route1_x[5] = 1990.5048 bce2_route1_y[5] = -1612.7281 bce2_route1_z[5] = 13.1392 bce2_route1_x[6] = 1889.5447 bce2_route1_y[6] = -1612.9204 bce2_route1_z[6] = 13.1432 bce2_route1_x[7] = 1788.5085 bce2_route1_y[7] = -1609.7860 bce2_route1_z[7] = 13.1208 bce2_route1_x[8] = 1688.8561 bce2_route1_y[8] = -1592.9879 bce2_route1_z[8] = 13.1397 bce2_route1_x[9] = 1587.9127 bce2_route1_y[9] = -1589.5697 bce2_route1_z[9] = 13.1277 bce2_route1_x[10] = 1487.4830 bce2_route1_y[10] = -1592.5898 bce2_route1_z[10] = 13.1511 bce2_route1_x[11] = 1386.5505 bce2_route1_y[11] = -1586.9473 bce2_route1_z[11] = 13.1234 bce2_route1_x[12] = 1286.6620 bce2_route1_y[12] = -1571.9493 bce2_route1_z[12] = 13.1273 bce2_route1_x[13] = 1185.7509 bce2_route1_y[13] = -1570.8098 bce2_route1_z[13] = 13.1410 bce2_route1_x[14] = 1084.5911 bce2_route1_y[14] = -1571.3870 bce2_route1_z[14] = 13.1352 bce2_route1_x[15] = 1057.1094 bce2_route1_y[15] = -1474.3876 bce2_route1_z[15] = 13.1259 bce2_route1_x[16] = 1061.0756 bce2_route1_y[16] = -1373.3380 bce2_route1_z[16] = 13.1525 bce2_route1_x[17] = 1057.5416 bce2_route1_y[17] = -1273.0496 bce2_route1_z[17] = 13.1425 bce2_route1_x[18] = 1058.5311 bce2_route1_y[18] = -1173.3695 bce2_route1_z[18] = 23.0197 bce2_route1_x[19] = 963.0153 bce2_route1_y[19] = -1141.8625 bce2_route1_z[19] = 23.4253 bce2_route1_x[20] = 862.2285 bce2_route1_y[20] = -1144.6819 bce2_route1_z[20] = 23.4156 bce2_route1_x[21] = 796.4694 bce2_route1_y[21] = -1069.2076 bce2_route1_z[21] = 24.2389 bce2_route1_x[22] = 707.7682 bce2_route1_y[22] = -1116.4126 bce2_route1_z[22] = 17.7387 bce2_route1_x[23] = 648.3205 bce2_route1_y[23] = -1197.1847 bce2_route1_z[23] = 17.2365 bce2_route1_x[24] = 641.5527 bce2_route1_y[24] = -1199.7443 bce2_route1_z[24] = 17.7693 bce2_route1_x[25] = 568.4156 bce2_route1_y[25] = -1131.5087 bce2_route1_z[25] = 26.2220 bce2_route1_x[26] = 469.6543 bce2_route1_y[26] = -1113.5897 bce2_route1_z[26] = 27.6279 bce2_route1_x[27] = 370.4434 bce2_route1_y[27] = -1129.3823 bce2_route1_z[27] = 25.3758 bce2_route1_x[28] = 274.1698 bce2_route1_y[28] = -1156.7511 bce2_route1_z[28] = 21.1352 bce2_route1_x[29] = 181.3566 bce2_route1_y[29] = -1195.7822 bce2_route1_z[29] = 17.3878 bce2_route1_x[30] = 94.4232 bce2_route1_y[30] = -1245.7322 bce2_route1_z[30] = 14.5145 bce2_route1_x[31] = 15.8414 bce2_route1_y[31] = -1308.8579 bce2_route1_z[31] = 12.0496 bce2_route1_x[32] = -62.2601 bce2_route1_y[32] = -1372.5801 bce2_route1_z[32] = 11.3571 bce2_route1_x[33] = -133.5467 bce2_route1_y[33] = -1443.4331 bce2_route1_z[33] = 12.5484 bce2_route1_x[34] = -201.4483 bce2_route1_y[34] = -1518.1517 bce2_route1_z[34] = 14.3358 bce2_route1_x[35] = -261.8274 bce2_route1_y[35] = -1597.9913 bce2_route1_z[35] = 15.6199 bce2_route1_x[36] = -295.7058 bce2_route1_y[36] = -1693.1434 bce2_route1_z[36] = 14.4603 bce2_route1_x[37] = -331.9772 bce2_route1_y[37] = -1786.4961 bce2_route1_z[37] = 17.6881 bce2_route1_x[38] = -367.9241 bce2_route1_y[38] = -1879.7872 bce2_route1_z[38] = 25.9672 bce2_route1_x[39] = -367.5844 bce2_route1_y[39] = -1980.1935 bce2_route1_z[39] = 27.9446 bce2_route1_x[40] = -350.2859 bce2_route1_y[40] = -2079.7227 bce2_route1_z[40] = 28.0525 bce2_route1_x[41] = -333.1001 bce2_route1_y[41] = -2179.3442 bce2_route1_z[41] = 28.1703 bce2_route1_x[42] = -297.5232 bce2_route1_y[42] = -2273.4280 bce2_route1_z[42] = 29.7426 bce2_route1_x[43] = -233.4477 bce2_route1_y[43] = -2351.6929 bce2_route1_z[43] = 31.5324 bce2_route1_x[44] = -159.7139 bce2_route1_y[44] = -2420.7952 bce2_route1_z[44] = 35.9570 bce2_route1_x[45] = -92.2604 bce2_route1_y[45] = -2496.0085 bce2_route1_z[45] = 38.2066 bce2_route1_x[46] = -49.5180 bce2_route1_y[46] = -2586.4094 bce2_route1_z[46] = 43.3945 bce2_route1_x[47] = -39.0012 bce2_route1_y[47] = -2686.4084 bce2_route1_z[47] = 42.5762 bce2_route1_x[48] = -71.9678 bce2_route1_y[48] = -2781.2827 bce2_route1_z[48] = 39.1346 bce2_route1_x[49] = -162.2194 bce2_route1_y[49] = -2824.7280 bce2_route1_z[49] = 40.6313 bce2_route1_x[50] = -261.9651 bce2_route1_y[50] = -2815.2700 bce2_route1_z[50] = 50.8160 bce2_route1_x[51] = -357.7323 bce2_route1_y[51] = -2787.4031 bce2_route1_z[51] = 61.6162 bce2_route1_x[52] = -456.2191 bce2_route1_y[52] = -2766.1841 bce2_route1_z[52] = 66.2852 bce2_route1_x[53] = -555.2378 bce2_route1_y[53] = -2751.5491 bce2_route1_z[53] = 65.7085 bce2_route1_x[54] = -655.1880 bce2_route1_y[54] = -2748.9766 bce2_route1_z[54] = 69.8092 bce2_route1_x[55] = -753.9544 bce2_route1_y[55] = -2764.8953 bce2_route1_z[55] = 74.4690 bce2_route1_x[56] = -847.7780 bce2_route1_y[56] = -2801.9629 bce2_route1_z[56] = 70.6215 bce2_route1_x[57] = -938.0959 bce2_route1_y[57] = -2845.4795 bce2_route1_z[57] = 68.4226 bce2_route1_x[58] = -1038.6550 bce2_route1_y[58] = -2853.1582 bce2_route1_z[58] = 67.4485 bce2_route1_x[59] = -1139.4188 bce2_route1_y[59] = -2855.4377 bce2_route1_z[59] = 67.4660 bce2_route1_x[60] = -1239.4492 bce2_route1_y[60] = -2860.8049 bce2_route1_z[60] = 65.7173 bce2_route1_x[61] = -1338.0901 bce2_route1_y[61] = -2878.6682 bce2_route1_z[61] = 55.5616 bce2_route1_x[62] = -1435.3354 bce2_route1_y[62] = -2853.4097 bce2_route1_z[62] = 48.3088 bce2_route1_x[63] = -1520.4025 bce2_route1_y[63] = -2799.3149 bce2_route1_z[63] = 46.6003 bce2_route1_x[64] = -1600.9691 bce2_route1_y[64] = -2739.9763 bce2_route1_z[64] = 48.7977 bce2_route1_x[65] = -1681.4296 bce2_route1_y[65] = -2679.7649 bce2_route1_z[65] = 48.2789 bce2_route1_x[66] = -1745.1682 bce2_route1_y[66] = -2601.5535 bce2_route1_z[66] = 49.4470 bce2_route1_x[67] = -1823.6808 bce2_route1_y[67] = -2538.1213 bce2_route1_z[67] = 52.7491 bce2_route1_x[68] = -1923.9066 bce2_route1_y[68] = -2539.9272 bce2_route1_z[68] = 38.6757 bce2_route1_x[69] = -2019.3063 bce2_route1_y[69] = -2507.6572 bce2_route1_z[69] = 32.3084 bce2_route1_x[70] = -2100.1370 bce2_route1_y[70] = -2446.7559 bce2_route1_z[70] = 30.2321 bce2_route1_x[71] = -2179.1575 bce2_route1_y[71] = -2383.9011 bce2_route1_z[71] = 30.2293 bce2_route1_x[72] = -2190.1733 bce2_route1_y[72] = -2284.4062 bce2_route1_z[72] = 30.2286 bce2_route1_x[73] = -2264.3403 bce2_route1_y[73] = -2216.7771 bce2_route1_z[73] = 30.8563 bce2_route1_x[74] = -2182.7815 bce2_route1_y[74] = -2160.8923 bce2_route1_z[74] = 47.4936 bce2_route1_x[75] = -2110.8284 bce2_route1_y[75] = -2092.4265 bce2_route1_z[75] = 61.5663 bce2_route1_x[76] = -2078.4963 bce2_route1_y[76] = -1997.3062 bce2_route1_z[76] = 60.0120 bce2_route1_x[77] = -2028.4880 bce2_route1_y[77] = -1910.7743 bce2_route1_z[77] = 48.5942 bce2_route1_x[78] = -1971.9017 bce2_route1_y[78] = -1828.0873 bce2_route1_z[78] = 36.8357 bce2_route1_x[79] = -1898.3462 bce2_route1_y[79] = -1760.4561 bce2_route1_z[79] = 29.4533 bce2_route1_x[80] = -1808.7107 bce2_route1_y[80] = -1715.5684 bce2_route1_z[80] = 28.8706 bce2_route1_x[81] = -1724.8386 bce2_route1_y[81] = -1660.9567 bce2_route1_z[81] = 36.2003 bce2_route1_x[82] = -1631.2233 bce2_route1_y[82] = -1624.2671 bce2_route1_z[82] = 36.0242 bce2_route1_x[83] = -1546.3738 bce2_route1_y[83] = -1570.5679 bce2_route1_z[83] = 37.4867 bce2_route1_x[84] = -1626.0752 bce2_route1_y[84] = -1510.0033 bce2_route1_z[84] = 37.0858 bce2_route1_x[85] = -1722.5310 bce2_route1_y[85] = -1483.5496 bce2_route1_z[85] = 34.2269 bce2_route1_x[86] = -1807.4095 bce2_route1_y[86] = -1430.1053 bce2_route1_z[86] = 35.7400 bce2_route1_x[87] = -1894.5845 bce2_route1_y[87] = -1380.6718 bce2_route1_z[87] = 39.6104 bce2_route1_x[88] = -1899.0354 bce2_route1_y[88] = -1280.7308 bce2_route1_z[88] = 39.2288 bce2_route1_x[89] = -1896.8789 bce2_route1_y[89] = -1179.8798 bce2_route1_z[89] = 38.8035 bce2_route1_x[90] = -1900.2380 bce2_route1_y[90] = -1078.9877 bce2_route1_z[90] = 37.9866 bce2_route1_x[91] = -1896.7563 bce2_route1_y[91] = -978.9510 bce2_route1_z[91] = 41.2545 bce2_route1_x[92] = -1896.0155 bce2_route1_y[92] = -878.1399 bce2_route1_z[92] = 44.7055 bce2_route1_x[93] = -1897.2408 bce2_route1_y[93] = -777.6757 bce2_route1_z[93] = 44.6920 bce2_route1_x[94] = -1895.9591 bce2_route1_y[94] = -677.4996 bce2_route1_z[94] = 41.0312 bce2_route1_x[95] = -1894.7368 bce2_route1_y[95] = -576.5858 bce2_route1_z[95] = 38.0016 bce2_route1_x[96] = -1897.7098 bce2_route1_y[96] = -476.4786 bce2_route1_z[96] = 37.9914 bce2_route1_x[97] = -1896.1544 bce2_route1_y[97] = -376.3374 bce2_route1_z[97] = 37.9879 bce2_route1_x[98] = -1896.8944 bce2_route1_y[98] = -275.5032 bce2_route1_z[98] = 37.9875 bce2_route1_x[99] = -1895.7302 bce2_route1_y[99] = -174.2612 bce2_route1_z[99] = 37.9884 bce2_route1_x[100] = -1890.8373 bce2_route1_y[100] = -73.2693 bce2_route1_z[100] = 38.0012 bce2_route1_x[101] = -1890.6152 bce2_route1_y[101] = 27.5906 bce2_route1_z[101] = 38.0035 bce2_route1_x[102] = -1874.6201 bce2_route1_y[102] = 127.2809 bce2_route1_z[102] = 37.9871 bce2_route1_x[103] = -1842.7549 bce2_route1_y[103] = 222.3595 bce2_route1_z[103] = 37.9736 bce2_route1_x[104] = -1776.7367 bce2_route1_y[104] = 296.3020 bce2_route1_z[104] = 23.6187 bce2_route1_x[105] = -1687.5623 bce2_route1_y[105] = 341.3000 bce2_route1_z[105] = 13.5061 bce2_route1_x[106] = -1620.4059 bce2_route1_y[106] = 416.1430 bce2_route1_z[106] = 7.1363 bce2_route1_x[107] = -1574.6442 bce2_route1_y[107] = 506.4197 bce2_route1_z[107] = 6.9799 bce2_route1_x[108] = -1557.7152 bce2_route1_y[108] = 605.5936 bce2_route1_z[108] = 6.9312 bce2_route1_x[109] = -1550.6027 bce2_route1_y[109] = 705.7773 bce2_route1_z[109] = 6.8277 bce2_route1_x[110] = -1532.9750 bce2_route1_y[110] = 806.2415 bce2_route1_z[110] = 6.8058 bce2_route1_x[111] = -1525.1520 bce2_route1_y[111] = 906.8005 bce2_route1_z[111] = 6.8066 bce2_route1_x[112] = -1560.4280 bce2_route1_y[112] = 1000.3951 bce2_route1_z[112] = 6.8073 bce2_route1_x[113] = -1580.5276 bce2_route1_y[113] = 1099.0255 bce2_route1_z[113] = 6.8050 bce2_route1_x[114] = -1593.1057 bce2_route1_y[114] = 1198.8236 bce2_route1_z[114] = 6.7993 bce2_route1_x[115] = -1612.7999 bce2_route1_y[115] = 1284.9078 bce2_route1_z[115] = 6.9396 VAR_FLOAT bce2_route2_x[98] bce2_route2_y[98] bce2_route2_z[98] bce2_route2_x[0] = 2480.5967 bce2_route2_y[0] = -1659.1562 bce2_route2_z[0] = 13.0965 bce2_route2_x[1] = 2379.8811 bce2_route2_y[1] = -1658.1934 bce2_route2_z[1] = 13.1467 bce2_route2_x[2] = 2344.3992 bce2_route2_y[2] = -1564.4354 bce2_route2_z[2] = 23.9333 bce2_route2_x[3] = 2343.6719 bce2_route2_y[3] = -1463.3198 bce2_route2_z[3] = 23.6044 bce2_route2_x[4] = 2305.2749 bce2_route2_y[4] = -1370.7926 bce2_route2_z[4] = 23.6319 bce2_route2_x[5] = 2303.4407 bce2_route2_y[5] = -1269.6060 bce2_route2_z[5] = 23.5946 bce2_route2_x[6] = 2306.2170 bce2_route2_y[6] = -1169.4031 bce2_route2_z[6] = 26.0798 bce2_route2_x[7] = 2213.0703 bce2_route2_y[7] = -1132.1012 bce2_route2_z[7] = 25.3774 bce2_route2_x[8] = 2116.1975 bce2_route2_y[8] = -1104.9049 bce2_route2_z[8] = 24.8605 bce2_route2_x[9] = 2022.4779 bce2_route2_y[9] = -1067.8966 bce2_route2_z[9] = 24.2557 bce2_route2_x[10] = 1925.3049 bce2_route2_y[10] = -1039.7681 bce2_route2_z[10] = 23.6120 bce2_route2_x[11] = 1867.6505 bce2_route2_y[11] = -1121.5543 bce2_route2_z[11] = 23.4686 bce2_route2_x[12] = 1777.4077 bce2_route2_y[12] = -1164.6450 bce2_route2_z[12] = 23.5025 bce2_route2_x[13] = 1677.1761 bce2_route2_y[13] = -1162.4050 bce2_route2_z[13] = 23.4443 bce2_route2_x[14] = 1576.5533 bce2_route2_y[14] = -1163.3073 bce2_route2_z[14] = 23.7111 bce2_route2_x[15] = 1476.0017 bce2_route2_y[15] = -1159.8448 bce2_route2_z[15] = 23.6522 bce2_route2_x[16] = 1376.9645 bce2_route2_y[16] = -1140.1335 bce2_route2_z[16] = 23.4968 bce2_route2_x[17] = 1366.8094 bce2_route2_y[17] = -1040.2178 bce2_route2_z[17] = 26.2347 bce2_route2_x[18] = 1371.4180 bce2_route2_y[18] = -940.2704 bce2_route2_z[18] = 33.9599 bce2_route2_x[19] = 1273.0294 bce2_route2_y[19] = -922.0916 bce2_route2_z[19] = 41.8145 bce2_route2_x[20] = 1174.4037 bce2_route2_y[20] = -940.6694 bce2_route2_z[20] = 42.5196 bce2_route2_x[21] = 1156.8193 bce2_route2_y[21] = -842.2726 bce2_route2_z[21] = 49.7390 bce2_route2_x[22] = 1164.0050 bce2_route2_y[22] = -742.3879 bce2_route2_z[22] = 60.3190 bce2_route2_x[23] = 1202.7288 bce2_route2_y[23] = -649.9714 bce2_route2_z[23] = 59.6176 bce2_route2_x[24] = 1231.2836 bce2_route2_y[24] = -554.9558 bce2_route2_z[24] = 40.3091 bce2_route2_x[25] = 1257.2252 bce2_route2_y[25] = -462.3789 bce2_route2_z[25] = 12.7939 bce2_route2_x[26] = 1255.6779 bce2_route2_y[26] = -362.5274 bce2_route2_z[26] = 2.9890 bce2_route2_x[27] = 1230.6844 bce2_route2_y[27] = -267.0266 bce2_route2_z[27] = 18.9881 bce2_route2_x[28] = 1188.9194 bce2_route2_y[28] = -178.3956 bce2_route2_z[28] = 40.7223 bce2_route2_x[29] = 1088.5599 bce2_route2_y[29] = -182.8582 bce2_route2_z[29] = 39.8590 bce2_route2_x[30] = 989.9222 bce2_route2_y[30] = -180.4384 bce2_route2_z[30] = 17.6728 bce2_route2_x[31] = 889.5374 bce2_route2_y[31] = -173.0015 bce2_route2_z[31] = 10.7641 bce2_route2_x[32] = 788.8903 bce2_route2_y[32] = -164.4205 bce2_route2_z[32] = 16.4595 bce2_route2_x[33] = 689.4522 bce2_route2_y[33] = -155.3612 bce2_route2_z[33] = 22.8900 bce2_route2_x[34] = 589.6461 bce2_route2_y[34] = -146.5947 bce2_route2_z[34] = 29.7470 bce2_route2_x[35] = 510.9780 bce2_route2_y[35] = -208.5235 bce2_route2_z[35] = 37.1529 bce2_route2_x[36] = 491.5316 bce2_route2_y[36] = -306.6292 bce2_route2_z[36] = 42.7684 bce2_route2_x[37] = 464.9347 bce2_route2_y[37] = -402.1279 bce2_route2_z[37] = 32.6014 bce2_route2_x[38] = 370.5219 bce2_route2_y[38] = -393.0328 bce2_route2_z[38] = 23.9504 bce2_route2_x[39] = 272.6069 bce2_route2_y[39] = -378.1253 bce2_route2_z[39] = 2.4636 bce2_route2_x[40] = 206.3447 bce2_route2_y[40] = -301.5085 bce2_route2_z[40] = 1.1901 bce2_route2_x[41] = 157.5706 bce2_route2_y[41] = -213.2552 bce2_route2_z[41] = 1.1960 bce2_route2_x[42] = 57.3466 bce2_route2_y[42] = -208.4595 bce2_route2_z[42] = 1.2183 bce2_route2_x[43] = -43.1581 bce2_route2_y[43] = -203.3529 bce2_route2_z[43] = 1.3731 bce2_route2_x[44] = -142.4222 bce2_route2_y[44] = -187.6390 bce2_route2_z[44] = 1.6178 bce2_route2_x[45] = -241.4735 bce2_route2_y[45] = -167.4589 bce2_route2_z[45] = 2.0199 bce2_route2_x[46] = -298.0107 bce2_route2_y[46] = -84.8255 bce2_route2_z[46] = 1.2111 bce2_route2_x[47] = -284.5947 bce2_route2_y[47] = 14.7808 bce2_route2_z[47] = 0.8422 bce2_route2_x[48] = -255.5891 bce2_route2_y[48] = 111.3571 bce2_route2_z[48] = 0.8426 bce2_route2_x[49] = -213.1467 bce2_route2_y[49] = 202.6102 bce2_route2_z[49] = 1.8256 bce2_route2_x[50] = -292.4320 bce2_route2_y[50] = 264.4556 bce2_route2_z[50] = 1.8382 bce2_route2_x[51] = -391.0918 bce2_route2_y[51] = 282.8860 bce2_route2_z[51] = 1.8926 bce2_route2_x[52] = -491.8620 bce2_route2_y[52] = 287.5233 bce2_route2_z[52] = 1.8369 bce2_route2_x[53] = -592.0175 bce2_route2_y[53] = 284.7173 bce2_route2_z[53] = 1.8298 bce2_route2_x[54] = -686.3195 bce2_route2_y[54] = 250.5801 bce2_route2_z[54] = 1.8305 bce2_route2_x[55] = -770.4146 bce2_route2_y[55] = 194.5963 bce2_route2_z[55] = 1.6198 bce2_route2_x[56] = -713.9178 bce2_route2_y[56] = 113.2328 bce2_route2_z[56] = 15.6558 bce2_route2_x[57] = -759.8053 bce2_route2_y[57] = 26.0654 bce2_route2_z[57] = 33.0027 bce2_route2_x[58] = -856.7950 bce2_route2_y[58] = -0.6516 bce2_route2_z[58] = 32.9974 bce2_route2_x[59] = -759.7305 bce2_route2_y[59] = -20.4226 bce2_route2_z[59] = 47.2165 bce2_route2_x[60] = -801.2752 bce2_route2_y[60] = -110.4809 bce2_route2_z[60] = 63.4186 bce2_route2_x[61] = -898.1945 bce2_route2_y[61] = -137.0961 bce2_route2_z[61] = 56.3295 bce2_route2_x[62] = -946.6151 bce2_route2_y[62] = -223.7240 bce2_route2_z[62] = 38.9582 bce2_route2_x[63] = -968.4164 bce2_route2_y[63] = -321.7283 bce2_route2_z[63] = 36.1420 bce2_route2_x[64] = -991.3627 bce2_route2_y[64] = -419.3090 bce2_route2_z[64] = 36.0027 bce2_route2_x[65] = -1077.7527 bce2_route2_y[65] = -470.2693 bce2_route2_z[65] = 33.7616 bce2_route2_x[66] = -1136.2520 bce2_route2_y[66] = -551.6271 bce2_route2_z[66] = 29.8955 bce2_route2_x[67] = -1170.4977 bce2_route2_y[67] = -645.1342 bce2_route2_z[67] = 42.4828 bce2_route2_x[68] = -1205.1332 bce2_route2_y[68] = -737.6744 bce2_route2_z[68] = 59.3098 bce2_route2_x[69] = -1284.4039 bce2_route2_y[69] = -798.1140 bce2_route2_z[69] = 69.5010 bce2_route2_x[70] = -1381.9583 bce2_route2_y[70] = -817.3228 bce2_route2_z[70] = 81.1519 bce2_route2_x[71] = -1481.5657 bce2_route2_y[71] = -815.1219 bce2_route2_z[71] = 66.9058 bce2_route2_x[72] = -1579.5100 bce2_route2_y[72] = -800.5511 bce2_route2_z[72] = 49.9587 bce2_route2_x[73] = -1673.1958 bce2_route2_y[73] = -765.3336 bce2_route2_z[73] = 41.5955 bce2_route2_x[74] = -1754.9943 bce2_route2_y[74] = -708.9478 bce2_route2_z[74] = 28.2593 bce2_route2_x[75] = -1761.4960 bce2_route2_y[75] = -609.3593 bce2_route2_z[75] = 15.9606 bce2_route2_x[76] = -1820.3696 bce2_route2_y[76] = -528.3566 bce2_route2_z[76] = 14.6995 bce2_route2_x[77] = -1814.5952 bce2_route2_y[77] = -427.9472 bce2_route2_z[77] = 14.7211 bce2_route2_x[78] = -1803.9630 bce2_route2_y[78] = -328.1352 bce2_route2_z[78] = 14.7287 bce2_route2_x[79] = -1801.3763 bce2_route2_y[79] = -227.7857 bce2_route2_z[79] = 14.7103 bce2_route2_x[80] = -1801.0194 bce2_route2_y[80] = -126.9901 bce2_route2_z[80] = 12.5775 bce2_route2_x[81] = -1797.8406 bce2_route2_y[81] = -25.8091 bce2_route2_z[81] = 14.8934 bce2_route2_x[82] = -1805.5312 bce2_route2_y[82] = 73.9609 bce2_route2_z[82] = 14.7143 bce2_route2_x[83] = -1807.1492 bce2_route2_y[83] = 174.5928 bce2_route2_z[83] = 14.7138 bce2_route2_x[84] = -1800.1945 bce2_route2_y[84] = 275.5728 bce2_route2_z[84] = 10.6028 bce2_route2_x[85] = -1810.2872 bce2_route2_y[85] = 375.1400 bce2_route2_z[85] = 9.7906 bce2_route2_x[86] = -1814.4094 bce2_route2_y[86] = 474.6516 bce2_route2_z[86] = 23.4117 bce2_route2_x[87] = -1877.9443 bce2_route2_y[87] = 551.0918 bce2_route2_z[87] = 34.4247 bce2_route2_x[88] = -1896.8612 bce2_route2_y[88] = 649.7911 bce2_route2_z[88] = 37.0183 bce2_route2_x[89] = -1895.0509 bce2_route2_y[89] = 750.2951 bce2_route2_z[89] = 45.0510 bce2_route2_x[90] = -1893.9368 bce2_route2_y[90] = 850.3843 bce2_route2_z[90] = 34.7833 bce2_route2_x[91] = -1820.1434 bce2_route2_y[91] = 917.2139 bce2_route2_z[91] = 24.9892 bce2_route2_x[92] = -1719.0219 bce2_route2_y[92] = 917.0076 bce2_route2_z[92] = 24.4954 bce2_route2_x[93] = -1619.3035 bce2_route2_y[93] = 916.6608 bce2_route2_z[93] = 7.6340 bce2_route2_x[94] = -1555.8248 bce2_route2_y[94] = 994.0962 bce2_route2_z[94] = 6.8065 bce2_route2_x[95] = -1579.9631 bce2_route2_y[95] = 1091.5480 bce2_route2_z[95] = 6.8070 bce2_route2_x[96] = -1588.5881 bce2_route2_y[96] = 1191.3062 bce2_route2_z[96] = 6.7980 bce2_route2_x[97] = -1612.3529 bce2_route2_y[97] = 1281.6711 bce2_route2_z[97] = 6.9398 VAR_FLOAT bce2_route3_x[117] bce2_route3_y[117] bce2_route3_z[117] bce2_route3_x[0] = 2488.2734 bce2_route3_y[0] = -1659.9685 bce2_route3_z[0] = 13.0884 bce2_route3_x[1] = 2387.7185 bce2_route3_y[1] = -1658.0190 bce2_route3_z[1] = 13.1467 bce2_route3_x[2] = 2286.9495 bce2_route3_y[2] = -1658.5829 bce2_route3_z[2] = 14.6557 bce2_route3_x[3] = 2187.4509 bce2_route3_y[3] = -1638.5334 bce2_route3_z[3] = 15.0393 bce2_route3_x[4] = 2090.3352 bce2_route3_y[4] = -1611.9055 bce2_route3_z[4] = 13.1306 bce2_route3_x[5] = 1990.3311 bce2_route3_y[5] = -1612.0214 bce2_route3_z[5] = 13.1388 bce2_route3_x[6] = 1888.9597 bce2_route3_y[6] = -1614.3855 bce2_route3_z[6] = 13.1433 bce2_route3_x[7] = 1787.2432 bce2_route3_y[7] = -1607.7681 bce2_route3_z[7] = 13.1244 bce2_route3_x[8] = 1687.1349 bce2_route3_y[8] = -1592.2725 bce2_route3_z[8] = 13.1375 bce2_route3_x[9] = 1586.9517 bce2_route3_y[9] = -1591.0009 bce2_route3_z[9] = 13.1297 bce2_route3_x[10] = 1486.7264 bce2_route3_y[10] = -1590.7788 bce2_route3_z[10] = 13.1520 bce2_route3_x[11] = 1386.1813 bce2_route3_y[11] = -1585.6071 bce2_route3_z[11] = 13.1003 bce2_route3_x[12] = 1286.6620 bce2_route3_y[12] = -1572.9780 bce2_route3_z[12] = 13.1664 bce2_route3_x[13] = 1186.3978 bce2_route3_y[13] = -1571.8763 bce2_route3_z[13] = 13.1464 bce2_route3_x[14] = 1085.4904 bce2_route3_y[14] = -1570.8574 bce2_route3_z[14] = 13.1351 bce2_route3_x[15] = 985.0605 bce2_route3_y[15] = -1571.4310 bce2_route3_z[15] = 13.1410 bce2_route3_x[16] = 884.2000 bce2_route3_y[16] = -1577.3645 bce2_route3_z[16] = 13.1300 bce2_route3_x[17] = 815.0362 bce2_route3_y[17] = -1650.2667 bce2_route3_z[17] = 13.1344 bce2_route3_x[18] = 810.6691 bce2_route3_y[18] = -1750.1876 bce2_route3_z[18] = 13.1276 bce2_route3_x[19] = 710.2051 bce2_route3_y[19] = -1749.9042 bce2_route3_z[19] = 14.0481 bce2_route3_x[20] = 612.0961 bce2_route3_y[20] = -1727.2224 bce2_route3_z[20] = 13.6595 bce2_route3_x[21] = 512.0588 bce2_route3_y[21] = -1711.1066 bce2_route3_z[21] = 11.9235 bce2_route3_x[22] = 411.9842 bce2_route3_y[22] = -1701.3540 bce2_route3_z[22] = 8.9795 bce2_route3_x[23] = 310.8292 bce2_route3_y[23] = -1701.1274 bce2_route3_z[23] = 6.3614 bce2_route3_x[24] = 210.8359 bce2_route3_y[24] = -1692.6205 bce2_route3_z[24] = 7.4032 bce2_route3_x[25] = 162.6634 bce2_route3_y[25] = -1604.7183 bce2_route3_z[25] = 15.5120 bce2_route3_x[26] = 96.6228 bce2_route3_y[26] = -1530.2887 bce2_route3_z[26] = 5.2206 bce2_route3_x[27] = -4.3045 bce2_route3_y[27] = -1520.7649 bce2_route3_z[27] = 1.3181 bce2_route3_x[28] = -100.2442 bce2_route3_y[28] = -1492.0179 bce2_route3_z[28] = 2.4440 bce2_route3_x[29] = -150.6629 bce2_route3_y[29] = -1404.9119 bce2_route3_z[29] = 2.4387 bce2_route3_x[30] = -125.7253 bce2_route3_y[30] = -1307.6393 bce2_route3_z[30] = 2.6123 bce2_route3_x[31] = -85.3976 bce2_route3_y[31] = -1398.9006 bce2_route3_z[31] = 11.9881 bce2_route3_x[32] = -156.1722 bce2_route3_y[32] = -1470.0463 bce2_route3_z[32] = 12.5570 bce2_route3_x[33] = -224.7423 bce2_route3_y[33] = -1543.4398 bce2_route3_z[33] = 15.2432 bce2_route3_x[34] = -278.3897 bce2_route3_y[34] = -1627.8358 bce2_route3_z[34] = 15.4404 bce2_route3_x[35] = -309.6147 bce2_route3_y[35] = -1722.8911 bce2_route3_z[35] = 14.4331 bce2_route3_x[36] = -347.4445 bce2_route3_y[36] = -1815.8053 bce2_route3_z[36] = 20.3824 bce2_route3_x[37] = -375.8723 bce2_route3_y[37] = -1911.9751 bce2_route3_z[37] = 27.4563 bce2_route3_x[38] = -367.3835 bce2_route3_y[38] = -2012.2582 bce2_route3_z[38] = 27.9796 bce2_route3_x[39] = -352.2570 bce2_route3_y[39] = -2111.5547 bce2_route3_z[39] = 28.1054 bce2_route3_x[40] = -325.2379 bce2_route3_y[40] = -2208.2542 bce2_route3_z[40] = 28.2795 bce2_route3_x[41] = -411.8825 bce2_route3_y[41] = -2256.1262 bce2_route3_z[41] = 43.9768 bce2_route3_x[42] = -507.0649 bce2_route3_y[42] = -2286.2520 bce2_route3_z[42] = 32.8761 bce2_route3_x[43] = -579.3828 bce2_route3_y[43] = -2355.2971 bce2_route3_z[43] = 26.9589 bce2_route3_x[44] = -678.7022 bce2_route3_y[44] = -2358.3069 bce2_route3_z[44] = 38.2611 bce2_route3_x[45] = -752.1234 bce2_route3_y[45] = -2421.5166 bce2_route3_z[45] = 63.3924 bce2_route3_x[46] = -819.2419 bce2_route3_y[46] = -2493.3655 bce2_route3_z[46] = 82.6824 bce2_route3_x[47] = -890.7695 bce2_route3_y[47] = -2563.2791 bce2_route3_z[47] = 90.2311 bce2_route3_x[48] = -981.5709 bce2_route3_y[48] = -2605.9622 bce2_route3_z[48] = 86.4663 bce2_route3_x[49] = -1080.2250 bce2_route3_y[49] = -2592.2146 bce2_route3_z[49] = 76.2713 bce2_route3_x[50] = -1161.9288 bce2_route3_y[50] = -2534.0103 bce2_route3_z[50] = 67.2918 bce2_route3_x[51] = -1179.8179 bce2_route3_y[51] = -2436.0122 bce2_route3_z[51] = 53.4017 bce2_route3_x[52] = -1164.9827 bce2_route3_y[52] = -2337.2434 bce2_route3_z[52] = 41.3150 bce2_route3_x[53] = -1134.1306 bce2_route3_y[53] = -2242.2495 bce2_route3_z[53] = 33.4991 bce2_route3_x[54] = -1097.9718 bce2_route3_y[54] = -2148.7363 bce2_route3_z[54] = 35.7186 bce2_route3_x[55] = -1047.9979 bce2_route3_y[55] = -2064.0186 bce2_route3_z[55] = 54.2015 bce2_route3_x[56] = -998.8296 bce2_route3_y[56] = -1979.0826 bce2_route3_z[56] = 73.7414 bce2_route3_x[57] = -1062.2003 bce2_route3_y[57] = -1901.6058 bce2_route3_z[57] = 76.9899 bce2_route3_x[58] = -1161.3781 bce2_route3_y[58] = -1886.0137 bce2_route3_z[58] = 77.9100 bce2_route3_x[59] = -1206.3379 bce2_route3_y[59] = -1800.1638 bce2_route3_z[59] = 51.1433 bce2_route3_x[60] = -1271.5658 bce2_route3_y[60] = -1723.9021 bce2_route3_z[60] = 45.7799 bce2_route3_x[61] = -1353.9108 bce2_route3_y[61] = -1666.7391 bce2_route3_z[61] = 45.1373 bce2_route3_x[62] = -1446.1687 bce2_route3_y[62] = -1627.6653 bce2_route3_z[62] = 44.3930 bce2_route3_x[63] = -1543.7992 bce2_route3_y[63] = -1605.5111 bce2_route3_z[63] = 37.4879 bce2_route3_x[64] = -1583.0184 bce2_route3_y[64] = -1513.1573 bce2_route3_z[64] = 37.4862 bce2_route3_x[65] = -1681.6188 bce2_route3_y[65] = -1493.6740 bce2_route3_z[65] = 34.7810 bce2_route3_x[66] = -1771.4012 bce2_route3_y[66] = -1448.0941 bce2_route3_z[66] = 34.5515 bce2_route3_x[67] = -1859.2131 bce2_route3_y[67] = -1399.6277 bce2_route3_z[67] = 38.1758 bce2_route3_x[68] = -1944.4756 bce2_route3_y[68] = -1347.2108 bce2_route3_z[68] = 40.5590 bce2_route3_x[69] = -2006.2007 bce2_route3_y[69] = -1268.1807 bce2_route3_z[69] = 36.2375 bce2_route3_x[70] = -2057.9255 bce2_route3_y[70] = -1182.2268 bce2_route3_z[70] = 31.9717 bce2_route3_x[71] = -2105.2441 bce2_route3_y[71] = -1093.7583 bce2_route3_z[71] = 29.8948 bce2_route3_x[72] = -2169.4324 bce2_route3_y[72] = -1016.5877 bce2_route3_z[72] = 33.6278 bce2_route3_x[73] = -2214.3291 bce2_route3_y[73] = -927.0612 bce2_route3_z[73] = 42.1936 bce2_route3_x[74] = -2196.7119 bce2_route3_y[74] = -829.6929 bce2_route3_z[74] = 58.5525 bce2_route3_x[75] = -2261.1775 bce2_route3_y[75] = -755.0598 bce2_route3_z[75] = 75.9781 bce2_route3_x[76] = -2341.9609 bce2_route3_y[76] = -707.3872 bce2_route3_z[76] = 110.6889 bce2_route3_x[77] = -2400.1821 bce2_route3_y[77] = -628.3421 bce2_route3_z[77] = 131.5750 bce2_route3_x[78] = -2453.6477 bce2_route3_y[78] = -544.3860 bce2_route3_z[78] = 121.1835 bce2_route3_x[79] = -2526.8940 bce2_route3_y[79] = -485.9847 bce2_route3_z[79] = 85.0712 bce2_route3_x[80] = -2446.8440 bce2_route3_y[80] = -425.2606 bce2_route3_z[80] = 84.4373 bce2_route3_x[81] = -2354.2512 bce2_route3_y[81] = -463.4032 bce2_route3_z[81] = 79.9480 bce2_route3_x[82] = -2389.5664 bce2_route3_y[82] = -369.9571 bce2_route3_z[82] = 75.0462 bce2_route3_x[83] = -2489.3540 bce2_route3_y[83] = -363.9357 bce2_route3_z[83] = 63.4133 bce2_route3_x[84] = -2588.5708 bce2_route3_y[84] = -366.5697 bce2_route3_z[84] = 46.1223 bce2_route3_x[85] = -2672.8975 bce2_route3_y[85] = -418.9947 bce2_route3_z[85] = 31.9261 bce2_route3_x[86] = -2681.2349 bce2_route3_y[86] = -517.9654 bce2_route3_z[86] = 17.1435 bce2_route3_x[87] = -2777.1021 bce2_route3_y[87] = -490.7432 bce2_route3_z[87] = 6.9382 bce2_route3_x[88] = -2818.1912 bce2_route3_y[88] = -399.3717 bce2_route3_z[88] = 6.8041 bce2_route3_x[89] = -2811.5259 bce2_route3_y[89] = -299.0307 bce2_route3_z[89] = 6.8035 bce2_route3_x[90] = -2805.6685 bce2_route3_y[90] = -198.8723 bce2_route3_z[90] = 6.7879 bce2_route3_x[91] = -2808.8538 bce2_route3_y[91] = -97.9767 bce2_route3_z[91] = 6.7909 bce2_route3_x[92] = -2809.0925 bce2_route3_y[92] = 2.2906 bce2_route3_z[92] = 6.8002 bce2_route3_x[93] = -2804.6851 bce2_route3_y[93] = 102.3091 bce2_route3_z[93] = 6.8277 bce2_route3_x[94] = -2806.4744 bce2_route3_y[94] = 202.4786 bce2_route3_z[94] = 6.8070 bce2_route3_x[95] = -2807.9341 bce2_route3_y[95] = 302.7264 bce2_route3_z[95] = 6.3467 bce2_route3_x[96] = -2849.5256 bce2_route3_y[96] = 394.1544 bce2_route3_z[96] = 4.1824 bce2_route3_x[97] = -2843.3735 bce2_route3_y[97] = 494.5805 bce2_route3_z[97] = 4.1463 bce2_route3_x[98] = -2825.5916 bce2_route3_y[98] = 593.7442 bce2_route3_z[98] = 5.2247 bce2_route3_x[99] = -2830.8030 bce2_route3_y[99] = 692.4010 bce2_route3_z[99] = 22.7063 bce2_route3_x[100] = -2856.0066 bce2_route3_y[100] = 788.6620 bce2_route3_z[100] = 35.7990 bce2_route3_x[101] = -2817.7917 bce2_route3_y[101] = 880.8148 bce2_route3_z[101] = 43.7304 bce2_route3_x[102] = -2840.3862 bce2_route3_y[102] = 978.9179 bce2_route3_z[102] = 43.2024 bce2_route3_x[103] = -2876.4573 bce2_route3_y[103] = 1071.9049 bce2_route3_z[103] = 30.8111 bce2_route3_x[104] = -2875.8850 bce2_route3_y[104] = 1169.9523 bce2_route3_z[104] = 11.0039 bce2_route3_x[105] = -2826.6016 bce2_route3_y[105] = 1257.5009 bce2_route3_z[105] = 5.3188 bce2_route3_x[106] = -2728.8149 bce2_route3_y[106] = 1280.3545 bce2_route3_z[106] = 6.8280 bce2_route3_x[107] = -2629.3137 bce2_route3_y[107] = 1297.9771 bce2_route3_z[107] = 6.7957 bce2_route3_x[108] = -2548.2625 bce2_route3_y[108] = 1358.4670 bce2_route3_z[108] = 7.3351 bce2_route3_x[109] = -2448.6208 bce2_route3_y[109] = 1370.2677 bce2_route3_z[109] = 6.7969 bce2_route3_x[110] = -2347.6985 bce2_route3_y[110] = 1366.4080 bce2_route3_z[110] = 6.9813 bce2_route3_x[111] = -2253.1951 bce2_route3_y[111] = 1333.5933 bce2_route3_z[111] = 6.8010 bce2_route3_x[112] = -2152.6421 bce2_route3_y[112] = 1334.9623 bce2_route3_z[112] = 6.8483 bce2_route3_x[113] = -2055.3845 bce2_route3_y[113] = 1309.6310 bce2_route3_z[113] = 6.9547 bce2_route3_x[114] = -1957.9801 bce2_route3_y[114] = 1286.6377 bce2_route3_z[114] = 6.9474 bce2_route3_x[115] = -1868.5018 bce2_route3_y[115] = 1332.5726 bce2_route3_z[115] = 6.9476 bce2_route3_x[116] = -1837.6033 bce2_route3_y[116] = 1425.7190 bce2_route3_z[116] = 6.9399 // ********************************************* GATES *********************************************** //grate to stop you getting area51 VAR_INT a51ventcover CREATE_OBJECT a51_ventcoverb 245.968 1862.843 19.49 a51ventcover SET_OBJECT_ROTATION a51ventcover 0.0 0.0 -140.998 DONT_REMOVE_OBJECT a51ventcover // *************************************************************************************************** // ************************************* CAR GENERATORS FOR DRIVING SCHOOL *************************** VAR_INT f1_bronze_car_gen area51_gen[4] VAR_INT f1_silver_car_gen VAR_INT f1_gold_car_gen VAR_INT f1_chunky VAR_INT f1_dbp VAR_INT f1_scripted_cut VAR_INT f1_blood_car_gen CREATE_CAR_GENERATOR -2093.9 -83.7 33.9 359.1 SUPERGT 31 0 TRUE 0 0 0 10000 f1_bronze_car_gen SWITCH_CAR_GENERATOR f1_bronze_car_gen 0 CREATE_CAR_GENERATOR -2076.8 -84.0 33.7 1.1 BULLET 15 15 TRUE 0 0 0 10000 f1_silver_car_gen SWITCH_CAR_GENERATOR f1_silver_car_gen 0 CREATE_CAR_GENERATOR_WITH_PLATE -2064.4 -83.7 34.1 0.0 HOTKNIFE 15 15 TRUE 0 0 0 10000 &__GOLD__ f1_gold_car_gen SWITCH_CAR_GENERATOR f1_gold_car_gen 0 CREATE_CAR_GENERATOR_WITH_PLATE -2273.2 -130.8 33.9 270.4 BANSHEE 79 0 TRUE 0 0 0 10000 &__DBP___ f1_dbp //banshee car SWITCH_CAR_GENERATOR f1_dbp 0 CREATE_CAR_GENERATOR_WITH_PLATE -2354.6 983.0 49.3 189.4 BULLET 24 40 TRUE 0 0 0 10000 &_CHUNKY_ f1_chunky //bullet car SWITCH_CAR_GENERATOR f1_chunky 0 CREATE_CAR_GENERATOR -2151.0 -409.1 34.1 307.2 BLOODRA -1 -1 TRUE 0 0 0 10000 f1_blood_car_gen SWITCH_CAR_GENERATOR f1_blood_car_gen 0 // *************************************CAR GENERATORS FOR FLYING VEHICLES*************************** VAR_INT gen_car_flying[28] // Los Santos Flying vehicles CREATE_CAR_GENERATOR 1544.0 -1352.0 329.0 95.0 MAVERICK -1 -1 FALSE 0 0 0 10000 gen_car_flying[0] // On top of star-topped skyscraper, probably not until after player receives pilot's license. Roof is accessible via entry/exit point. // San Fierro flying vehicles CREATE_CAR_GENERATOR -1963.0 628.0 151.0 182.0 SPARROW -1 -1 FALSE 0 0 0 10000 gen_car_flying[1] //On top of zombotech building. Should be safe at any time, building only accessible by flight CREATE_CAR_GENERATOR -1681.0 705.0 31.0 90.0 MAVERICK -1 -1 FALSE 0 0 0 10000 gen_car_flying[2] //Helipad near garage, used in Toreno's Last Flight. Accessible at any time, so probably shouldn't get a vehicle until after Pilot's License is obtained. CREATE_CAR_GENERATOR -2630.0 684.0 72.0 180.0 MAVERICK -1 -1 FALSE 0 0 0 10000 gen_car_flying[3] //First of two helipads on hospital roof. Got a + symbol on it. Probably safe to always have a heli, as I don't think you could access this part of the hospital roof without flying anyway. CREATE_CAR_GENERATOR -2726.0 682.0 72.0 90.0 RAINDANC -1 -1 FALSE 0 0 0 10000 gen_car_flying[4] //Second helipad on hospital roof. Same as above, but with an H symbol. CREATE_CAR_GENERATOR -2227.0 2329.0 8.0 180.0 SEASPAR -1 -1 FALSE 0 0 0 10000 gen_car_flying[5] //Helipad near boat school. Accessible once the SF bridges are open, so probably shouldn't get a vehicle until the Pilot's License has been obtained. //LAs Venuras Flying vehicles CREATE_CAR_GENERATOR 2619.0 2721.0 37.0 90.0 CARGOBOB -1 -1 FALSE 0 0 0 10000 gen_car_flying[6] //Roof of the military fuel dump. Accessible at any time (though not easily), so probably not until after Pilot's License obtained. CREATE_CAR_GENERATOR 2092.0 2415.0 75.0 260.0 MAVERICK -1 -1 FALSE 0 0 0 10000 gen_car_flying[7] //Used in the mission 'Misappropriation', but accessible from ground level at any time, so probably shouldn't have anything until after the pilots license is obtained. //CREATE_CAR_GENERATOR 282.0 1992.0 18.0 //Hangars in Area 51. Probably accessible at any time, so once the user has the pilot's license. // Harriers (after Vertical Bird complete) CREATE_CAR_GENERATOR 292.0 2542.0 16.0 180.0 HYDRA -1 -1 FALSE 0 0 0 10000 gen_car_flying[8] // Desert Airfield Hanger CREATE_CAR_GENERATOR -1286.0 501.5 18.0 270.0 HYDRA -1 -1 FALSE 0 0 0 10000 gen_car_flying[9] // Aircraft Carrier Top Deck CREATE_CAR_GENERATOR -959.0813 2629.2058 43.229 110.0 SKIMMER -1 -1 FALSE 0 0 0 10000 gen_car_flying[10] // by boardwalk in desert CREATE_CAR_GENERATOR 273.0045 -1876.0377 5.2935 271.510 RAINDANC -1 -1 FALSE 0 0 0 10000 gen_car_flying[11] // LOS SANTOS BEACH CREATE_CAR_GENERATOR 1561.8645 -1701.9529 27.948 0.0015 POLMAV -1 -1 FALSE 0 0 0 10000 gen_car_flying[12] // LOS SANTOS BEACH CREATE_CAR_GENERATOR -637.1 1811.9529 1.7 180.0015 SKIMMER -1 -1 FALSE 0 0 0 10000 gen_car_flying[13] // by the Hoover dam // Car gens for SF airport // The ones With unlocked doors CREATE_CAR_GENERATOR -1443.0813 -523.2058 13.9929 267.0 DODO -1 -1 FALSE 0 0 0 10000 gen_car_flying[14] CREATE_CAR_GENERATOR -1363.0045 -484.0377 13.9 200.510 DODO -1 -1 FALSE 0 0 0 10000 gen_car_flying[15] CREATE_CAR_GENERATOR -1180.8645 -351.9529 13.948 0.0015 NEVADA -1 -1 FALSE 0 0 0 10000 gen_car_flying[16] CREATE_CAR_GENERATOR -1289.1 -353.9529 13.9 219.0015 SHAMAL -1 -1 FALSE 0 0 0 10000 gen_car_flying[17] CREATE_CAR_GENERATOR -1253.1 -347.9529 13.9 219.0015 SHAMAL -1 -1 FALSE 0 0 0 10000 gen_car_flying[18] CREATE_CAR_GENERATOR -1387.1 -227.9529 13.9 312.0015 NEVADA -1 -1 FALSE 0 0 0 10000 gen_car_flying[19] CREATE_CAR_GENERATOR -1220.1 -150.9529 13.9 519.0015 SHAMAL -1 -1 FALSE 0 0 0 10000 gen_car_flying[20] CREATE_CAR_GENERATOR -1244.6740 -599.1741 13.9 48.6377 MAVERICK -1 -1 FALSE 0 0 0 10000 gen_car_flying[21] CREATE_CAR_GENERATOR -1215.1 -6.14 13.9 95.0015 LEVIATHN -1 -1 FALSE 0 0 0 10000 gen_car_flying[22] CREATE_CAR_GENERATOR -1190.1 22.14 13.9 45.0015 RAINDANC -1 -1 FALSE 0 0 0 10000 gen_car_flying[23] CREATE_CAR_GENERATOR -1374.1 -503.14 13.9 249.0015 RUSTLER -1 -1 FALSE 0 0 0 10000 gen_car_flying[24] CREATE_CAR_GENERATOR -1608.724 286.14 6.22 55.0015 HUNTER -1 -1 FALSE 0 0 0 10000 gen_car_flying[25] CREATE_CAR_GENERATOR 1586.941 1190.642 10.863 180.0 AT400 -1 -1 FALSE 0 0 0 10000 gen_car_flying[26] CREATE_CAR_GENERATOR -1629.28 -236.14 13.9 129.0015 BEAGLE -1 -1 FALSE 0 0 0 10000 gen_car_flying[27] // beagle in SF airport CREATE_CAR_GENERATOR 277.55, 1989.35, 17.21 270.00 rhino -1 -1 FALSE 0 0 0 10000 area51_gen[0] // AREA51 CREATE_CAR_GENERATOR 281.23, 2022.33, 17.21 270.00 rhino -1 -1 FALSE 0 0 0 10000 area51_gen[1] // AREA51 CREATE_CAR_GENERATOR 307.35, 1990.25, 17.21 320.00 hydra -1 -1 FALSE 0 0 0 10000 area51_gen[2] // AREA51 CREATE_CAR_GENERATOR 307.35, 2031.36, 17.21 320.00 hydra -1 -1 FALSE 0 0 0 10000 area51_gen[3] // AREA51 SWITCH_CAR_GENERATOR area51_gen[0] 0 SWITCH_CAR_GENERATOR area51_gen[1] 0 SWITCH_CAR_GENERATOR area51_gen[2] 0 SWITCH_CAR_GENERATOR area51_gen[3] 0 SWITCH_CAR_GENERATOR gen_car_flying[0] 0 SWITCH_CAR_GENERATOR gen_car_flying[1] 0 SWITCH_CAR_GENERATOR gen_car_flying[2] 0 SWITCH_CAR_GENERATOR gen_car_flying[3] 0 SWITCH_CAR_GENERATOR gen_car_flying[4] 0 SWITCH_CAR_GENERATOR gen_car_flying[5] 0 SWITCH_CAR_GENERATOR gen_car_flying[6] 0 SWITCH_CAR_GENERATOR gen_car_flying[7] 0 SWITCH_CAR_GENERATOR gen_car_flying[8] 0 SWITCH_CAR_GENERATOR gen_car_flying[9] 0 SWITCH_CAR_GENERATOR gen_car_flying[10] 0 SWITCH_CAR_GENERATOR gen_car_flying[11] 0 SWITCH_CAR_GENERATOR gen_car_flying[12] 0 SWITCH_CAR_GENERATOR gen_car_flying[13] 0 // need jude to add this one // Car gens for SF AIRPORT SWITCH_CAR_GENERATOR gen_car_flying[14] 0 SWITCH_CAR_GENERATOR gen_car_flying[15] 0 SWITCH_CAR_GENERATOR gen_car_flying[16] 0 SWITCH_CAR_GENERATOR gen_car_flying[17] 0 SWITCH_CAR_GENERATOR gen_car_flying[18] 0 SWITCH_CAR_GENERATOR gen_car_flying[19] 0 SWITCH_CAR_GENERATOR gen_car_flying[20] 0 SWITCH_CAR_GENERATOR gen_car_flying[21] 0 SWITCH_CAR_GENERATOR gen_car_flying[22] 0 SWITCH_CAR_GENERATOR gen_car_flying[23] 0 SWITCH_CAR_GENERATOR gen_car_flying[24] 0 // end car gens for san fran // HUNTER on plane carrier on SF SWITCH_CAR_GENERATOR gen_car_flying[25] 0 SWITCH_CAR_GENERATOR gen_car_flying[26] 101 SWITCH_CAR_GENERATOR gen_car_flying[27] 0 // Car gens for SF airport // The ones With unlocked doors VAR_INT car_gen_locked_sf_planes[12] CREATE_CAR_GENERATOR -1443.0813 -523.2058 13.9929 267.0 DODO -1 -1 FALSE 0 100 0 10000 car_gen_locked_sf_planes[0] CREATE_CAR_GENERATOR -1363.0045 -484.0377 13.9 200.510 DODO -1 -1 FALSE 0 100 0 10000 car_gen_locked_sf_planes[1] CREATE_CAR_GENERATOR -1180.8645 -351.9529 13.948 0.0015 NEVADA -1 -1 FALSE 0 100 0 10000 car_gen_locked_sf_planes[2] CREATE_CAR_GENERATOR -1289.1 -353.9529 13.9 219.0015 SHAMAL -1 -1 FALSE 0 100 0 10000 car_gen_locked_sf_planes[3] CREATE_CAR_GENERATOR -1253.1 -347.9529 13.9 219.0015 SHAMAL -1 -1 FALSE 0 100 0 10000 car_gen_locked_sf_planes[4] CREATE_CAR_GENERATOR -1387.1 -227.9529 13.9 312.0015 NEVADA -1 -1 FALSE 0 100 0 10000 car_gen_locked_sf_planes[5] CREATE_CAR_GENERATOR -1220.1 -150.9529 13.9 519.0015 SHAMAL -1 -1 FALSE 0 100 0 10000 car_gen_locked_sf_planes[6] CREATE_CAR_GENERATOR -1244.6740 -599.1741 13.9 48.6377 MAVERICK -1 -1 TRUE 0 0 100 10000 car_gen_locked_sf_planes[7] CREATE_CAR_GENERATOR -1215.1 -6.14 13.9 95.0015 LEVIATHN -1 -1 FALSE 0 100 0 10000 car_gen_locked_sf_planes[8] CREATE_CAR_GENERATOR -1190.1 22.14 13.9 45.0015 RAINDANC -1 -1 FALSE 0 100 0 10000 car_gen_locked_sf_planes[9] CREATE_CAR_GENERATOR -1374.1 -503.14 13.9 249.0015 RUSTLER -1 -1 FALSE 0 100 0 10000 car_gen_locked_sf_planes[10] CREATE_CAR_GENERATOR -1629.28 -236.14 13.9 129.0015 BEAGLE -1 -1 FALSE 0 100 0 10000 car_gen_locked_sf_planes[11] // beagle in SF car_gen_locked_sf_planes SWITCH_CAR_GENERATOR car_gen_locked_sf_planes[0] 101 SWITCH_CAR_GENERATOR car_gen_locked_sf_planes[1] 101 SWITCH_CAR_GENERATOR car_gen_locked_sf_planes[2] 101 SWITCH_CAR_GENERATOR car_gen_locked_sf_planes[3] 101 SWITCH_CAR_GENERATOR car_gen_locked_sf_planes[4] 101 SWITCH_CAR_GENERATOR car_gen_locked_sf_planes[5] 101 SWITCH_CAR_GENERATOR car_gen_locked_sf_planes[6] 101 SWITCH_CAR_GENERATOR car_gen_locked_sf_planes[7] 101 SWITCH_CAR_GENERATOR car_gen_locked_sf_planes[8] 101 SWITCH_CAR_GENERATOR car_gen_locked_sf_planes[9] 101 SWITCH_CAR_GENERATOR car_gen_locked_sf_planes[10] 101 SWITCH_CAR_GENERATOR car_gen_locked_sf_planes[11] 101 //SWITCH_CAR_GENERATOR gen_car_flying[0] 101 // *************************************CAR GENERATORS AND PICKUPS FOR INTERGLOBAL FILM STUDIOS*************************** VAR_INT gen_car_film_studio_LA[8] // golf carts vehicles CREATE_CAR_GENERATOR 927.7213 -1185.0419 16.5 123.3055 caddy -1 -1 FALSE 0 0 0 10000 gen_car_film_studio_LA[0] // near entrance, a line on parked caddys CREATE_CAR_GENERATOR 927.5233 -1182.3651 16.5 123.3055 caddy -1 -1 FALSE 0 0 0 10000 gen_car_film_studio_LA[1] // near entrance, a line on parked caddys CREATE_CAR_GENERATOR 926.9179 -1178.9500 16.5 123.3055 caddy -1 -1 FALSE 0 0 0 10000 gen_car_film_studio_LA[2] // near entrance, a line on parked caddys CREATE_CAR_GENERATOR 861.3535 -1240.7589 14.5 180.1308 caddy -1 -1 FALSE 0 0 0 10000 gen_car_film_studio_LA[3] // mt bike parked outside sound studio CREATE_CAR_GENERATOR 837.7494 -1206.5736 16.5 153.2632 JOURNEY -1 -1 FALSE 0 0 0 10000 gen_car_film_studio_LA[4] // forklift parked outside sound studio CREATE_CAR_GENERATOR 897.5168 -1207.9912 16.5 86.5989 JOURNEY -1 -1 FALSE 0 0 0 10000 gen_car_film_studio_LA[5] // JOURNEY outside sound studio CREATE_CAR_GENERATOR 736.2398 -1334.1952 13.5411 267.8109 JOURNEY -1 -1 FALSE 0 0 0 10000 gen_car_film_studio_LA[6] //JOURNEY parked outside TV studio CREATE_CAR_GENERATOR 736.9623 -1343.9069 13.5197 273.7721 JOURNEY -1 -1 FALSE 0 0 0 10000 gen_car_film_studio_LA[7] // JOURNEY parked outside TV studio SWITCH_CAR_GENERATOR gen_car_film_studio_LA[0] 101 SWITCH_CAR_GENERATOR gen_car_film_studio_LA[1] 101 SWITCH_CAR_GENERATOR gen_car_film_studio_LA[2] 101 SWITCH_CAR_GENERATOR gen_car_film_studio_LA[3] 101 SWITCH_CAR_GENERATOR gen_car_film_studio_LA[4] 101 SWITCH_CAR_GENERATOR gen_car_film_studio_LA[5] 101 SWITCH_CAR_GENERATOR gen_car_film_studio_LA[6] 101 SWITCH_CAR_GENERATOR gen_car_film_studio_LA[7] 101 VAR_INT pickups_film_studio[7] CREATE_PICKUP_WITH_AMMO AK47 PICKUP_ON_STREET_SLOW 60 825.9210 -1165.8129 17.8936 pickups_film_studio[0] CREATE_PICKUP_WITH_AMMO sawnoff PICKUP_ON_STREET_SLOW 40 832.6030 -1273.8612 14.4833 pickups_film_studio[1] CREATE_PICKUP nitestick PICKUP_ON_STREET_SLOW 911.6486 -1235.3898 17.6802 pickups_film_studio[2] CREATE_PICKUP sniper PICKUP_ON_STREET_SLOW 733.4333 -1356.4700 23.5229 pickups_film_studio[3] // Car gens at mount chiliad VAR_INT car_gen_mtchiliad[4] CREATE_CAR_GENERATOR -2408.5110 -2186.0239 32.890 321.6920 SANCHEZ -1 -1 FALSE 0 0 0 10000 car_gen_mtchiliad[0] CREATE_CAR_GENERATOR -2407.6057 -2177.0920 32.890 321.6920 MTBIKE -1 -1 FALSE 0 0 0 10000 car_gen_mtchiliad[1] CREATE_CAR_GENERATOR -2338.5654 -1593.8329 482.9451 20.7510 JOURNEY -1 -1 FALSE 0 0 0 10000 car_gen_mtchiliad[2] CREATE_CAR_GENERATOR -2343.3704 -1613.9430 482.9757 105.5300 CAMPER -1 -1 FALSE 0 0 0 10000 car_gen_mtchiliad[3] SWITCH_CAR_GENERATOR car_gen_mtchiliad[0] 101 SWITCH_CAR_GENERATOR car_gen_mtchiliad[1] 101 SWITCH_CAR_GENERATOR car_gen_mtchiliad[2] 101 SWITCH_CAR_GENERATOR car_gen_mtchiliad[3] 101 // GO KART CAR GENS (THEY OPEN AFTER SIMONS GO KART MISSION) VAR_INT car_gen_go_kart[15] CREATE_CAR_GENERATOR -2213.5559 112.7671 34.9203 88.4720 KART -1 -1 FALSE 0 0 0 10000 car_gen_go_kart[0] // behind zeros toy shop in SF CREATE_CAR_GENERATOR -2693.3860 -139.4564 3.93359 90.0856 KART -1 -1 FALSE 0 0 0 10000 car_gen_go_kart[1] // some dudes front garden in SF CREATE_CAR_GENERATOR -2796.4675 -94.1788 6.9875 42.6945 KART -1 -1 FALSE 0 0 0 10000 car_gen_go_kart[2] // some dudes front garden in SF CREATE_CAR_GENERATOR -2206.0508 701.2161 48.9453 183.4174 KART -1 -1 FALSE 0 0 0 10000 car_gen_go_kart[3] // ally way in china town CREATE_CAR_GENERATOR -810.5599 2430.3628 156.9649 336.533 KART -1 -1 FALSE 0 0 0 10000 car_gen_go_kart[4] // barn inside shed near big jump CREATE_CAR_GENERATOR -1693.4413 432.2852 6.9914 300.903 KART -1 -1 FALSE 0 0 0 10000 car_gen_go_kart[5] // jethros garage CREATE_CAR_GENERATOR -2116.1384 924.8068 85.9791 94.9293 KART -1 -1 FALSE 0 0 0 10000 car_gen_go_kart[6] // near windy road CREATE_CAR_GENERATOR -1483.6899 2614.8354 58.2812 337.9383 KART -1 -1 FALSE 0 0 0 10000 car_gen_go_kart[7] // inside wee warehouse CREATE_CAR_GENERATOR 1419.6984 1947.9960 10.9531 6.9689 KART -1 -1 FALSE 0 0 0 10000 car_gen_go_kart[8] // driveway in vegas CREATE_CAR_GENERATOR 1567.3890 2691.1184 10.265 279.9875 KART -1 -1 FALSE 0 0 0 10000 car_gen_go_kart[9] // in a back garden CREATE_CAR_GENERATOR -2087.3667 -2519.0159 29.9250 90.9178 KART -1 -1 FALSE 0 0 0 10000 car_gen_go_kart[10] // trailer park in flint CREATE_CAR_GENERATOR 2615.3171 1939.7007 10.129 148.1757 KART -1 -1 FALSE 0 0 0 10000 car_gen_go_kart[11] // behind the chinese mall in VEGAS CREATE_CAR_GENERATOR 1074.9640 1395.4177 5.303 36.7673 KART -1 -1 FALSE 0 0 0 10000 car_gen_go_kart[12] //behind dirt ring stadium in vegas CREATE_CAR_GENERATOR 2615.2388 -1731.2253 5.9486 140.8213 KART -1 -1 FALSE 0 0 0 10000 car_gen_go_kart[13] // storm drain in LA CREATE_CAR_GENERATOR 1305.1758 -796.6955 83.9477 185.99114 KART -1 -1 FALSE 0 0 0 10000 car_gen_go_kart[14] /// behind mad dogs mansion SWITCH_CAR_GENERATOR car_gen_go_kart[0] 0 SWITCH_CAR_GENERATOR car_gen_go_kart[1] 0 SWITCH_CAR_GENERATOR car_gen_go_kart[2] 0 SWITCH_CAR_GENERATOR car_gen_go_kart[3] 0 SWITCH_CAR_GENERATOR car_gen_go_kart[4] 0 SWITCH_CAR_GENERATOR car_gen_go_kart[5] 0 SWITCH_CAR_GENERATOR car_gen_go_kart[6] 0 SWITCH_CAR_GENERATOR car_gen_go_kart[7] 0 SWITCH_CAR_GENERATOR car_gen_go_kart[8] 0 SWITCH_CAR_GENERATOR car_gen_go_kart[9] 0 SWITCH_CAR_GENERATOR car_gen_go_kart[10] 0 SWITCH_CAR_GENERATOR car_gen_go_kart[11] 0 SWITCH_CAR_GENERATOR car_gen_go_kart[12] 0 SWITCH_CAR_GENERATOR car_gen_go_kart[13] 0 SWITCH_CAR_GENERATOR car_gen_go_kart[14] 0 // CAR GEN FOR HOVER CRAFTS (OPEN AFTER SIMONS MISSIONS) VAR_INT car_gen_hover[6] CREATE_CAR_GENERATOR -2294.9260 2546.9783 5.9175 290.9339 VORTEX -1 -1 FALSE 0 0 0 10000 car_gen_hover[0] // wee beach across the bridge from SF CREATE_CAR_GENERATOR 714.3436 -1488.2727 0.9343 270.0 VORTEX -1 -1 FALSE 0 0 0 10000 car_gen_hover[1] // (LA canal) CREATE_CAR_GENERATOR -1426.4120 506.8391 2.9463 144.6100 VORTEX -1 -1 FALSE 0 0 0 10000 car_gen_hover[2] //(SF inside aircraft carrier) CREATE_CAR_GENERATOR 1971.9197 1560.6653 10.9635 262.6150 VORTEX -1 -1 FALSE 0 0 0 10000 car_gen_hover[3] // vegas Pirates in mens pants CREATE_CAR_GENERATOR -535.4126 -60.8884 63.5922 276.9756 VORTEX -1 -1 FALSE 0 0 0 10000 car_gen_hover[4] // tucked away in a secet barn near river CREATE_CAR_GENERATOR -910.27 2699.06 42.8 110.8738 VORTEX -1 -1 FALSE 0 0 0 10000 car_gen_hover[5] // by boardwalk in desert SWITCH_CAR_GENERATOR car_gen_hover[0] 0 SWITCH_CAR_GENERATOR car_gen_hover[1] 0 SWITCH_CAR_GENERATOR car_gen_hover[2] 0 SWITCH_CAR_GENERATOR car_gen_hover[3] 0 SWITCH_CAR_GENERATOR car_gen_hover[4] 0 SWITCH_CAR_GENERATOR car_gen_hover[5] 0 // CAR GEN FOR SPARROW ON ROOF OF MADD DOGGS MANSION AFTER HOME IN THE HILLS VAR_INT car_gen_sparrow CREATE_CAR_GENERATOR 1291.5 -787.5 95.4555 180.0 SPARROW -1 -1 FALSE 0 0 0 10000 car_gen_sparrow SWITCH_CAR_GENERATOR car_gen_sparrow 0 // CAR GEN FOR BOLTS MISSION DESERT 1 VAR_INT car_gen_desert1_pcj CREATE_CAR_GENERATOR 435.2751 2527.5227 16.3710 90.0 pcj600 -1 -1 FALSE 0 0 0 10000 car_gen_desert1_pcj SWITCH_CAR_GENERATOR car_gen_desert1_pcj 101 //Bolt's valet asset pickup VAR_INT valet_cash_pickup //ammunation challenged passed flag VAR_INT player_has_fast_reload player_has_fast_reload = 0 VAR_INT range_weapons_open trigger_new_range_level //REWARD AFTER FINISHING KICKSTART VAR_INT car_gen_duneride_kickstart CREATE_CAR_GENERATOR 1091.89 1612.63 13.0 206.7583 duneride -1 -1 TRUE 0 0 0 10000 car_gen_duneride_kickstart // reward after kickstart SWITCH_CAR_GENERATOR car_gen_duneride_kickstart 0 // CAR GEN NEAR CESARS HOUSE FOR THE LOWRIDER MISSION HIGH STAKES VAR_INT car_gen_low_rider_near_cesars CREATE_CAR_GENERATOR 1772.66 -2096.59 13.99 182.7583 VOODOO -1 -1 TRUE 0 0 0 10000 car_gen_low_rider_near_cesars // reward after kickstart SWITCH_CAR_GENERATOR car_gen_low_rider_near_cesars 101 // --------------------------Angel Pine car gens VAR_INT car_gen_pine[6] CREATE_CAR_GENERATOR -2151.303 -2440.136 29.822 324.7583 -1 -1 -1 FALSE 0 0 0 10000 car_gen_pine[0] CREATE_CAR_GENERATOR -2147.038 -2443.752 29.822 324.7583 -1 -1 -1 FALSE 0 0 0 10000 car_gen_pine[1] CREATE_CAR_GENERATOR -2140.979 -2448.733 29.822 144.7583 -1 -1 -1 FALSE 0 0 0 10000 car_gen_pine[2] SWITCH_CAR_GENERATOR car_gen_pine[0] 101 SWITCH_CAR_GENERATOR car_gen_pine[1] 101 SWITCH_CAR_GENERATOR car_gen_pine[2] 101 // need to switch these off for farlie5 CREATE_CAR_GENERATOR -2000.242 -2415.509 29.767 -132.0 RDTRAIN -1 -1 FALSE 0 0 0 10000 car_gen_pine[3] CREATE_CAR_GENERATOR -1969.806 -2437.939 29.767 -82.5 DFT30 -1 -1 FALSE 0 0 0 10000 car_gen_pine[4] CREATE_CAR_GENERATOR -1969.806 -2443.908 29.767 -19.0 FORKLIFT -1 -1 FALSE 0 0 0 10000 car_gen_pine[5] SWITCH_CAR_GENERATOR car_gen_pine[3] 101 SWITCH_CAR_GENERATOR car_gen_pine[4] 101 SWITCH_CAR_GENERATOR car_gen_pine[5] 101 // ***************************************** SHOPS STUFF ****************************************** // *********** used to reset the amount of food player has eaten in one 6hr period **************** // ************************************************************************************************ VAR_INT timer_wil game_timer_wil stored_shop_time timer_wil = 0 game_timer_wil = 0 stored_shop_time = 0 // Locate size stuff for shops CONST_FLOAT shop_locate_sizeX 1.0 CONST_FLOAT shop_locate_sizeY 1.0 CONST_FLOAT shop_locate_sizeZ 4.0 // KEVIN BOLT'S NEW VALET GLOBALS VAR_INT tell_player_to_kill_valet // BOLT - shooting range cut skip flag VAR_INT range_cuts_watched lf2_skip_allowed range_cuts_watched = 0 // SNIPER HELP TEXT GLOBAL VAR_INT displayed_sniper_help_text displayed_sniper_help_text = FALSE // Rear Door for Aircraft Carrier (Vertical Bird) VAR_INT g_VB_REAR_DOOR CREATE_OBJECT_NO_OFFSET CARRIER_DOOR_SFSE -1465.797 501.289 1.145 g_VB_REAR_DOOR SET_OBJECT_DYNAMIC g_VB_REAR_DOOR FALSE SET_OBJECT_COLLISION_DAMAGE_EFFECT g_VB_REAR_DOOR FALSE SET_OBJECT_PROOFS g_VB_REAR_DOOR TRUE TRUE TRUE TRUE TRUE DONT_REMOVE_OBJECT g_VB_REAR_DOOR // Small Lift for Aircraft Carrier (Vertical Bird) VAR_INT g_VB_SMALL_LIFT CREATE_OBJECT_NO_OFFSET CARRIER_LIFT2_SFSE -1414.453 516.453 16.688 g_VB_SMALL_LIFT SET_OBJECT_DYNAMIC g_VB_SMALL_LIFT FALSE SET_OBJECT_COLLISION_DAMAGE_EFFECT g_VB_SMALL_LIFT FALSE SET_OBJECT_PROOFS g_VB_SMALL_LIFT TRUE TRUE TRUE TRUE TRUE DONT_REMOVE_OBJECT g_VB_SMALL_LIFT // Big Lift for Aircraft Carrier (Vertical Bird) VAR_INT g_VB_BIG_LIFT CREATE_OBJECT_NO_OFFSET CARRIER_LIFT1_SFSE -1456.719 501.297 16.953 g_VB_BIG_LIFT SET_OBJECT_DYNAMIC g_VB_BIG_LIFT FALSE SET_OBJECT_COLLISION_DAMAGE_EFFECT g_VB_BIG_LIFT FALSE SET_OBJECT_PROOFS g_VB_BIG_LIFT TRUE TRUE TRUE TRUE TRUE DONT_REMOVE_OBJECT g_VB_BIG_LIFT // Burglary variables VAR_INT burglary_player_stealth burglary_player_stealth = 0 // farlie5 trip skip VAR_INT d6_trip_skips_available d6_trip_skips_available = 0 //--- Dance Mini-Game Globals and Constants //--- DANCE GLOBALS VAR_INT iDanceReport // contains the score in the first 10 BITS and various flags from bit 11 onwards VAR_INT iDanceScore // the on-screen counter for the score VAR_INT iSwitchOffDanceMiniGame // a flag to prevent the locate from appearing in missions and special cases VAR_INT iTerminateDanceMiniGame // a flag to terminate the dancing and do all the necessary clean-up VAR_TEXT_LABEL16 txtCURR_DANCE_MOVE txtCURR_DANCE_MOVE_P txtCURR_DANCE_BLOCK txtString VAR_FLOAT fDanceCameraX[5] // all the camera vectors and their targets for external settings VAR_FLOAT fDanceCameraY[5] VAR_FLOAT fDanceCameraZ[5] VAR_FLOAT fDanceTargetX[5] VAR_FLOAT fDanceTargetY[5] VAR_FLOAT fDanceTargetZ[5] //--- DANCE PARAMETERS - CONSTANTS CONST_INT DANCE_MINIGAME_RUNNING 31 CONST_INT DANCE_TRACK_HIPHOP 1 CONST_INT DANCE_TRACK_ROCK 1 CONST_INT DANCE_TRACK_GFUNK 1 // beach - RESERVED CONST_INT DANCE_TRACK_GFUNK_ALT 2 CONST_INT DANCE_TRACK_RUNNINGMAN 3 CONST_INT DANCE_TRACK_WOP 4 CONST_INT DANCE_TRACK_LIST_START 1 CONST_INT DANCE_TRACK_LIST_END 5 CONST_INT DANCE_MISSION_NO_PARTNER -1 CONST_INT DANCE_RANDOM_PARTNER 0 //--- DANCE CONSTANTS //--- PLAYER's TIMING CONST_INT DANCE_BEAT_PAST 0 CONST_INT DANCE_BEAT_PERFECT 1 CONST_INT DANCE_BEAT_GOOD 2 CONST_INT DANCE_BEAT_ALRIGHT 3 CONST_INT DANCE_BEAT_FUTURE 4 CONST_INT DANCE_BEAT_NONE 5 CONST_INT DANCE_BEAT_GOOD_SCORED 8 CONST_INT DANCE_BEAT_BAD_SCORED 9 CONST_INT DANCE_BEAT_WRONG_BUTTON 10 CONST_INT DANCE_BEAT_MISTIMED_BUTTON 11 //--- SCORE INCREMENTS CONST_INT DANCE_SCORE_PERFECT 50 CONST_INT DANCE_SCORE_GOOD 20 CONST_INT DANCE_SCORE_ALRIGHT 10 CONST_INT DANCE_SCORE_BAD 0 //this is subtracted to score CONST_INT DANCE_SCORE_VERY_BAD 0 //this is subtracted to score CONST_INT DANCE_SCORE_PERFECT_MULTIPLYER 2 CONST_INT DANCE_SCORE_TOTAL_BEATS_TO_REPORT 4 CONST_INT DANCE_SCORE_TOP_LIMIT 99999999 //--- PAD BUTTONS CONST_INT DANCE_BUTTON_CROSS 1 CONST_INT DANCE_BUTTON_SQUARE 2 CONST_INT DANCE_BUTTON_TRIANGLE 3 CONST_INT DANCE_BUTTON_CIRCLE 4 CONST_INT DANCE_BUTTON_NONE 5 //--- PAD BUTTON HOLD TIMERS CONST_INT DANCE_TIME_TO_HOLD_QUIT 800 //--- BEAT TIMING BOUNDS CONST_INT DANCE_BOUNDS_PERFECT_MAX 126 CONST_INT DANCE_BOUNDS_PERFECT_MIN -126 CONST_INT DANCE_BOUNDS_GOOD_MAX 244 CONST_INT DANCE_BOUNDS_GOOD_MIN -244 CONST_INT DANCE_BOUNDS_ALRIGHT_MAX 344 CONST_INT DANCE_BOUNDS_ALRIGHT_MIN -344 CONST_INT DANCE_BOUNDS_NO_BEAT 3000 //--- DANCE STATE MACHINE CONST_INT STATE_DANCE_INIT 0 CONST_INT STATE_DANCE_TRACK_AND_GET_BEATS 1 //--- DANCE OVERALL REPORT CONST_INT DANCE_OVERALL_BAD 0 CONST_INT DANCE_OVERALL_GOOD 1 CONST_INT DANCE_OVERALL_PERFECT 2 //--- ANIMATION SEQUENCING CONST_INT ANIM_NOT_PLAYING 0 CONST_INT ANIM_CONCANTENATE_NOW 1 CONST_INT ANIM_IS_PLAYING -1 //--- DANCE SPEECH FEEDBACK CONST_INT DANCE_SPEECH_IDLE 0 CONST_INT DANCE_SPEECH_PLAYBACK 1 CONST_INT DANCE_SPEECH_HIGH 2 CONST_INT DANCE_SPEECH_LOW 3 CONST_INT DANCE_SPEECH_MED 4 CONST_INT DANCE_SPEECH_NOT 5 CONST_INT DANCE_SPEECH_REQUEST_HIGH 6 CONST_INT DANCE_SPEECH_REQUEST_LOW 8 CONST_INT DANCE_SPEECH_REQUEST_MED 9 CONST_INT DANCE_SPEECH_REQUEST_NOT 10 //---MISC. CONST_INT DANCE_END_BEAT 33 CONST_INT DANCE_HARDCODED_END_BEAT 100000 //---DANCE MISSION: Time before BeatDisplay is started CONST_INT DANCE_WAIT_TO_START_BEATDISPLAY 10000 // - Pauld gym stuff --------------------------------------------------------------------------- VAR_INT gym_day gym_month gym_final_day gym_final_month VAR_FLOAT gym_day_fitness gym_day = -1 gym_month = -1 gym_final_day = -1 gym_final_month = -1 gym_day_fitness = 0.0 // - end gym stuff --------------------------------------------------------------------------- // - burglary decision makers VAR_INT burglary_male_decision burglary_female_decision burglary_gang_decision MISSION_END MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // *************************************** INTRO ******************************************* // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME INTRO // Mission start stuff GOSUB mission_start_intro IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_intro_failed ENDIF GOSUB mission_cleanup_intro MISSION_END { // Variables for mission LVAR_INT play_bmx_geton_help mission_start_intro: // **************************************** Mission Start ********************************** flag_player_on_mission = 1 DISPLAY_ZONE_NAMES FALSE // fool compiler IF flag_player_on_mission = 0 CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 random_char_CUT CREATE_CAR COPCARLA 0.0 0.0 0.0 random_car_CUT WRITE_DEBUG aa ENDIF // audio controller START_NEW_SCRIPT start_audio_controller LOAD_MISSION_TEXT INTRO1 // text display stuff USE_TEXT_COMMANDS TRUE WAIT 0 // must wait0 before using text or sprite commands SET_TEXT_DRAW_BEFORE_FADE FALSE SET_TEXT_FONT FONT_STANDARD text_alpha_SS = 0 text_status_SS = 0 $text_label_SS = LOAD_01 // fade in WHILE text_alpha_SS < 200 WAIT 0 GOSUB mission_intro1_SUB_text_handler ENDWHILE text_status_SS = 2 TIMERA = 0 WHILE TIMERA < 1000 WAIT 0 GOSUB mission_intro1_SUB_text_handler ENDWHILE // ****************************************START OF CUTSCENE******************************** // fades the screen in SET_AREA_VISIBLE 14 LOAD_CUTSCENE PROLOG1 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 GOSUB mission_intro1_SUB_text_handler ENDWHILE text_status_SS = 1 // fade out WHILE text_alpha_SS > 0 WAIT 0 GOSUB mission_intro1_SUB_text_handler ENDWHILE // new text text_status_SS = 0 text_display = 1 $text_label_SS = LOAD_02 text_flag_SS = 0 WAIT 100 // WDTOM Hack for intro text to work right with scene fade system in UE4. START_CUTSCENE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DO_FADE 1000 FADE_IN TIMERA = 0 WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 IF TIMERA > 6800 SWITCH text_flag_SS CASE 0 IF text_alpha_SS < 200 GOSUB mission_intro1_SUB_text_handler BREAK ELSE text_status_SS = 2 text_flag_SS ++ ENDIF CASE 1 IF TIMERA < 10000 GOSUB mission_intro1_SUB_text_handler BREAK ELSE text_status_SS = 1 text_flag_SS ++ ENDIF CASE 2 IF text_alpha_SS > 0 GOSUB mission_intro1_SUB_text_handler BREAK ELSE text_flag_SS ++ ENDIF ENDSWITCH ENDIF ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE IF WAS_CUTSCENE_SKIPPED SET_AREA_VISIBLE 0 cutscene_skip_CUT = 1 GOTO mission_intro_end_of_cutscene ENDIF // ****************************************START OF CUTSCENE******************************** SET_TIME_OF_DAY 06 30 FORCE_WEATHER_NOW WEATHER_SUNNY_COUNTRYSIDE SET_AREA_VISIBLE 0 LOAD_CUTSCENE PROLOG3 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE REQUEST_MODEL gwforum1_LAe WHILE NOT HAS_MODEL_LOADED gwforum1_LAe WAIT 0 ENDWHILE LOAD_SCENE_IN_DIRECTION 2493.3623 -1734.2950 12.3828 258.7583 CLEAR_AREA 2482.5815 -1729.6418 12.3906 500.0 TRUE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 SET_TIME_OF_DAY 06 30 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE MARK_MODEL_AS_NO_LONGER_NEEDED gwforum1_LAe IF WAS_CUTSCENE_SKIPPED cutscene_skip_CUT = 1 GOTO mission_intro_end_of_cutscene ENDIF // ****************************************START OF (SCRIPTED) CUTSCENE******************************** mission_intro_CUT: LVAR_INT copcar_CUT train_CUT cut_status_CUT beat_status_CUT camera_status_CUT LVAR_INT tenpenny_CUT pulaski_CUT hernandez_CUT // models REQUEST_MODEL COPCARLA REQUEST_MODEL freight REQUEST_MODEL freiflat REQUEST_MODEL BMX // building REQUEST_MODEL gangshops4_LAe2 REQUEST_MODEL CE_HillsEast06 REQUEST_MODEL cuntEground23 REQUEST_MODEL HillsEast05_LAe LOAD_SPECIAL_CHARACTER 1 TENPEN LOAD_SPECIAL_CHARACTER 2 PULASKI LOAD_SPECIAL_CHARACTER 3 HERN //REQUEST_MODEL LAPD1 REQUEST_CAR_RECORDING 706 REQUEST_CAR_RECORDING 707 WHILE NOT HAS_MODEL_LOADED COPCARLA OR NOT HAS_MODEL_LOADED freight OR NOT HAS_MODEL_LOADED freiflat OR NOT HAS_MODEL_LOADED BMX OR NOT HAS_CAR_RECORDING_BEEN_LOADED 706 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 707 WAIT 0 ENDWHILE WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_SPECIAL_CHARACTER_LOADED 2 OR NOT HAS_SPECIAL_CHARACTER_LOADED 3 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED gangshops4_LAe2 OR NOT HAS_MODEL_LOADED CE_HillsEast06 OR NOT HAS_MODEL_LOADED cuntEground23 OR NOT HAS_MODEL_LOADED HillsEast05_LAe WAIT 0 ENDWHILE REQUEST_COLLISION 2431.6086 -1254.0608 LOAD_SCENE 2358.6562 -1246.3481 28.7884 // audio stuff PRELOAD_BEAT_TRACK 10 beat_status_CUT = 0 WHILE NOT beat_status_CUT = 2 WAIT 0 GET_BEAT_TRACK_STATUS beat_status_CUT ENDWHILE /* SUBTITLE STUFF */ LVAR_INT subtitle_lenght_CUT[25] subtitle_start_CUT[25] subtitle_pointer_CUT subtitle_status_CUT LVAR_TEXT_LABEL subtitle_label_CUT[25] IF ARE_SUBTITLES_SWITCHED_ON subtitle_pointer_CUT = 0 $subtitle_label_CUT[0] = &PRO@24 // How you been, Carl? How's you wonderful family subtitle_lenght_CUT[0] = 3050 subtitle_start_CUT[0] = 0 $subtitle_label_CUT[1] = &PRO@25 // I'm here to bury my moms. You know that. subtitle_lenght_CUT[1] = 2530 subtitle_start_CUT[1] = 3150 $subtitle_label_CUT[2] = &PRO@26 // Yeah, I guess I do. subtitle_lenght_CUT[2] = 1600 subtitle_start_CUT[2] = 6000 $subtitle_label_CUT[3] = &PRO@49 // So what else you got shakin Carl. subtitle_lenght_CUT[3] = 1530 subtitle_start_CUT[3] = 9190 $subtitle_label_CUT[4] = &PRO@27 // Nothing, I live in Liberty City now. I'm clean. Legit. subtitle_lenght_CUT[4] = 5510 subtitle_start_CUT[4] = 10810 $subtitle_label_CUT[5] = &PRO@28 // No, you aint never been clean Carl. subtitle_lenght_CUT[5] = 2560 subtitle_start_CUT[5] = 16600 $subtitle_label_CUT[6] = &PRO@29 // Well, what've we got here subtitle_lenght_CUT[6] = 1350 subtitle_start_CUT[6] = 21000 $subtitle_label_CUT[7] = &PRO@30 // This is a weapon, officer pulaski that was used to gun down subtitle_lenght_CUT[7] = 3760 subtitle_start_CUT[7] = 23500 $subtitle_label_CUT[8] = &PRO@30b // a police officer not ten minutes ago subtitle_lenght_CUT[8] = 2450 subtitle_start_CUT[8] = subtitle_start_CUT[7] + subtitle_lenght_CUT[7] $subtitle_label_CUT[9] = &PRO@31 // Officer Pendelberry, a fine man, I might add. subtitle_lenght_CUT[9] = 3620 subtitle_start_CUT[9] = 30700 $subtitle_label_CUT[10] = &PRO@33 // You work fast nigger. subtitle_lenght_CUT[10] = 1440 subtitle_start_CUT[10] = 35000 $subtitle_label_CUT[11] = &PRO@32 // You know I just got off the plane! subtitle_lenght_CUT[11] = 1739 subtitle_start_CUT[11] = 36750 $subtitle_label_CUT[12] = &PRO@34 // It's a good thing we found you and retrieved the murder weapon subtitle_lenght_CUT[12] = 2450 subtitle_start_CUT[12] = subtitle_start_CUT[11] + subtitle_lenght_CUT[11] $subtitle_label_CUT[13] = &PRO@35 // That aint my gun subtitle_lenght_CUT[13] = 971 subtitle_start_CUT[13] = subtitle_start_CUT[12] + subtitle_lenght_CUT[12] $subtitle_label_CUT[14] = &PRO@36 // Dont bullshit me carl subtitle_lenght_CUT[14] = 1320 subtitle_start_CUT[14] = subtitle_start_CUT[13] + subtitle_lenght_CUT[13] $subtitle_label_CUT[15] = &PRO@37 // Yeah, dont bullshit him carl subtitle_lenght_CUT[15] = 1342 subtitle_start_CUT[15] = subtitle_start_CUT[14] + subtitle_lenght_CUT[14] $subtitle_label_CUT[16] = &PRO@38 // What the fuck you want from me this time subtitle_lenght_CUT[16] = 1747 subtitle_start_CUT[16] = subtitle_start_CUT[15] + subtitle_lenght_CUT[15] $subtitle_label_CUT[17] = &PRO@40 // When we want you, we'll find you. subtitle_lenght_CUT[17] = 2355 subtitle_start_CUT[17] = 46700 $subtitle_label_CUT[18] = &PRO@41 // In the mean time, try not to gun down any officers of the law subtitle_lenght_CUT[18] = 4400 subtitle_start_CUT[18] = 49500 $subtitle_label_CUT[19] = &PRO@43 // Y'all cant leave me here, this is ballas country subtitle_lenght_CUT[19] = 3111 subtitle_start_CUT[19] = 55900 $subtitle_label_CUT[20] = &PRO@44 // I though you said you was innocent carl? That you dont bang. subtitle_lenght_CUT[20] = 3400 subtitle_start_CUT[20] = 59500 $subtitle_label_CUT[21] = &PRO@45 // This is car 58... WHAT?! subtitle_lenght_CUT[21] = 1180 subtitle_start_CUT[21] = subtitle_start_CUT[20] + subtitle_lenght_CUT[20] $subtitle_label_CUT[22] = &PRO@47 // See you around like a donut carl subtitle_lenght_CUT[22] = 1700 subtitle_start_CUT[22] = subtitle_start_CUT[21] + subtitle_lenght_CUT[21] $subtitle_label_CUT[23] = &PRO@46 // Officer Pendelberry's down? We'll be right over subtitle_lenght_CUT[23] = 2500 subtitle_start_CUT[23] = subtitle_start_CUT[22] + subtitle_lenght_CUT[22] // $subtitle_label_CUT[24] = &PRO@48 // See, Hernandez, that is how an experienced officer deals with a known threat // subtitle_lenght_CUT[24] = 5994 // subtitle_start_CUT[24] = subtitle_start_CUT[23] + subtitle_lenght_CUT[23] ELSE subtitle_pointer_CUT = 25 ENDIF /* END OF SUBTITLE STUFF */ SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 1.0 SWITCH_RANDOM_TRAINS OFF cut_status_CUT = 0 // copcar CREATE_CAR COPCARLA 2431.6086 -1254.0608 22.8303 copcar_CUT SET_CAR_HEADING copcar_CUT 89.5453 FORCE_CAR_LIGHTS copcar_CUT FORCE_CAR_LIGHTS_ON WARP_CHAR_INTO_CAR_AS_PASSENGER scplayer copcar_CUT 2 CREATE_CHAR_INSIDE_CAR copcar_CUT PEDTYPE_SPECIAL SPECIAL02 pulaski_CUT CREATE_CHAR_AS_PASSENGER copcar_CUT PEDTYPE_SPECIAL SPECIAL01 0 tenpenny_CUT CREATE_CHAR_AS_PASSENGER copcar_CUT PEDTYPE_SPECIAL SPECIAL03 1 hernandez_CUT SET_FIXED_CAMERA_POSITION 2358.6562 -1246.3481 28.7884 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2359.5212 -1246.8428 28.7047 JUMP_CUT SET_TIME_OF_DAY 06 30 FORCE_WEATHER_NOW WEATHER_SUNNY_COUNTRYSIDE // stop peds crossing roads as intro plays SWITCH_PED_ROADS_OFF 2380.6816 -1274.5280 22.0 2375.9453 -1239.3557 26.0 SWITCH_PED_ROADS_OFF 2358.3831 -1372.6659 22.0 2382.9690 -1379.4574 25.0 SWITCH_PED_ROADS_OFF 2151.6025 -1380.3746 22.0 2184.7036 -1374.7100 26.0 SWITCH_PED_ROADS_OFF 2180.7307 -1286.3281 22.0 2153.5266 -1315.7975 26.0 TIMERA = 0 WHILE TIMERA < 500 WAIT 0 ENDWHILE DO_FADE 500 FADE_IN SWITCH_WIDESCREEN ON IF NOT IS_CAR_DEAD copcar_CUT IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR copcar_CUT START_PLAYBACK_RECORDED_CAR copcar_CUT 706 PLAY_BEAT_TRACK ENDIF ENDIF IF IS_PLAYER_PLAYING player1 SET_PLAYER_CONTROL player1 OFF ENDIF CREATE_MISSION_TRAIN 13 2285.1523 -1257.4998 23.0000 TRUE train_CUT SET_TRAIN_SPEED train_CUT 0.0 SET_TRAIN_CRUISE_SPEED train_CUT 0.0 x = 2373.1050 y = -1281.9690 z = 22.8330 heading = 0.0 gotoX_CUT = 2478.5591 gotoY_CUT = -1258.5406 gotoZ_CUT = 27.5958 GOSUB mission_intro_SUB_create_intro_car TIMERA = 0 TIMERB = 0 cutscene_skip_CUT = 2 LVAR_INT bike_exists_CUT mission_intro_scripted_cut: WAIT 0 SET_TIME_OF_DAY 06 30 // player and car movement IF NOT IS_CAR_DEAD copcar_CUT SWITCH cut_status_CUT CASE 0 IF GET_FADING_STATUS BREAK ENDIF SKIP_CUTSCENE_START cut_status_CUT ++ CASE 1 IF TIMERA < 10000 BREAK ENDIF IF NOT IS_CAR_DEAD train_CUT SET_TRAIN_SPEED train_CUT 9.0 SET_TRAIN_CRUISE_SPEED train_CUT 9.0 ENDIF cut_status_CUT ++ CASE 2 IF IS_PLAYBACK_GOING_ON_FOR_CAR copcar_CUT BREAK ENDIF TIMERA = 0 cut_status_CUT ++ CASE 3 IF TIMERA < 13000 BREAK ENDIF TIMERA = 0 START_PLAYBACK_RECORDED_CAR copcar_CUT 707 SET_CAR_COLLISION copcar_CUT FALSE CLEAR_AREA 2246.5076 -1263.0870 22.9531 500.0 TRUE CREATE_CAR BMX 2246.5076 -1263.0870 22.9531 intro_bmx SET_CAR_HEADING intro_bmx 285.0 bike_exists_CUT = 1 cut_status_CUT ++ CASE 4 IF TIMERA < 26800 OR NOT LOCATE_CHAR_ANY_MEANS_2D scplayer 2220.52 -1258.90 8.0 8.0 FALSE BREAK ENDIF TASK_LEAVE_CAR_IMMEDIATELY scplayer copcar_CUT cut_status_CUT ++ BREAK CASE 5 IF IS_PLAYBACK_GOING_ON_FOR_CAR copcar_CUT BREAK ENDIF TASK_GO_STRAIGHT_TO_COORD scplayer 2239.3303 -1261.9406 22.9375 PEDMOVE_WALK -2 cutscene_skip_CUT = 0 SKIP_CUTSCENE_END IF cutscene_skip_CUT = 2 GOTO mission_intro_end_of_cutscene ENDIF STOP_BEAT_TRACK DELETE_MISSION_TRAINS SWITCH_RANDOM_TRAINS ON MARK_MODEL_AS_NO_LONGER_NEEDED COPCARLA MARK_MODEL_AS_NO_LONGER_NEEDED freight MARK_MODEL_AS_NO_LONGER_NEEDED freiflat UNLOAD_SPECIAL_CHARACTER 1 // tenpenny UNLOAD_SPECIAL_CHARACTER 2 // pulaski UNLOAD_SPECIAL_CHARACTER 3 // hernandez DELETE_CHAR tenpenny_CUT DELETE_CHAR pulaski_CUT DELETE_CHAR hernandez_CUT DELETE_CAR copcar_CUT cutscene_skip_CUT = 3 GOTO mission_intro_carl_voice_over_setup ENDSWITCH // CAMERA MOVEMENT SWITCH camera_status_CUT // start pan delay before moving CASE 0 IF TIMERB < 1500 BREAK ENDIF CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2358.6562 -1246.3481 28.7884 2358.6562 -1246.3481 28.7884 7000 TRUE CAMERA_SET_VECTOR_TRACK 2359.5212 -1246.8428 28.7047 2359.2756 -1247.1285 28.7047 7000 TRUE camera_status_CUT ++ // new street shot CASE 1 IF TIMERB < 5500 BREAK ENDIF CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2362.0295 -1288.5000 23.8624 2362.0295 -1288.5000 23.8624 5500 TRUE CAMERA_SET_VECTOR_TRACK 2362.5920 -1287.6763 23.9326 2362.0474 -1289.4973 23.932 5500 TRUE camera_status_CUT ++ // street shot - chasing car CASE 2 IF TIMERB < 9500 BREAK ENDIF CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2377.1628 -1308.2468 23.6193 2380.6733 -1390.4246 24.0771 6800 FALSE CAMERA_SET_VECTOR_TRACK 2376.4695 -1307.5341 23.7249 2379.8110 -1389.9220 24.1388 6800 FALSE camera_status_CUT ++ // new low shot approaching train CASE 3 IF TIMERB < 16200 BREAK ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED gangshops4_LAe2 MARK_MODEL_AS_NO_LONGER_NEEDED CE_HillsEast06 MARK_MODEL_AS_NO_LONGER_NEEDED cuntEground23 MARK_MODEL_AS_NO_LONGER_NEEDED HillsEast05_LAe SET_FIXED_CAMERA_POSITION 2316.9878 -1378.1227 23.3054 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2317.9082 -1378.4891 23.4404 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES camera_status_CUT ++ // high shot of train CASE 4 IF TIMERB < 20500 BREAK ENDIF SET_FIXED_CAMERA_POSITION 2271.7495 -1396.4435 36.7292 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2272.4749 -1395.8940 36.3149 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES camera_status_CUT ++ // side of the car CASE 5 IF TIMERB < 32300 BREAK ENDIF CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2305.5364 -1384.7535 23.2002 2303.5210 -1384.3871 23.0641 5700 FALSE CAMERA_SET_VECTOR_TRACK 2304.7085 -1384.1930 23.1803 2302.7280 -1383.8613 23.3722 5700 FALSE camera_status_CUT ++ // camera pan CASE 6 IF TIMERB < 37589 BREAK ENDIF SET_FIXED_CAMERA_POSITION 2265.2544 -1388.5906 23.4001 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2266.1641 -1388.2019 23.4001 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES camera_status_CUT ++ CASE 7 IF TIMERB < 38500 BREAK ENDIF CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2265.2544 -1388.5906 23.4001 2246.9104 -1388.5906 23.4001 7500 TRUE CAMERA_SET_VECTOR_TRACK 2266.1641 -1388.2019 23.4001 2245.9353 -1388.4237 23.4001 7500 TRUE camera_status_CUT ++ CASE 8 IF TIMERB < 46000 BREAK ENDIF SET_FIXED_CAMERA_POSITION 2163.0845 -1387.7574 23.8438 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2163.9458 -1387.2679 23.9785 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES camera_status_CUT ++ CASE 9 IF TIMERB < 48000 BREAK ENDIF CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2163.0845 -1387.7574 23.8438 2163.0845 -1387.7574 23.8438 5000 TRUE CAMERA_SET_VECTOR_TRACK 2163.9458 -1387.2679 23.9785 2163.4229 -1386.8262 23.9785 5000 TRUE camera_status_CUT ++ CASE 10 IF TIMERB < 53000 BREAK ENDIF CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2156.5513 -1292.0818 39.2814 2156.9744 -1288.5637 36.9331 4000 TRUE CAMERA_SET_VECTOR_TRACK 2157.0251 -1292.6703 38.6264 2157.6265 -1289.0844 36.3820 4000 TRUE camera_status_CUT ++ CASE 11 IF TIMERB < 57000 BREAK ENDIF SET_FIXED_CAMERA_POSITION 2176.3728 -1252.7585 23.4951 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2176.1179 -1253.7253 23.5115 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES camera_status_CUT ++ CASE 12 IF TIMERB < 59200 BREAK ENDIF CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2176.3728 -1252.7585 23.4951 2176.3728 -1252.7585 23.4951 2500 TRUE CAMERA_SET_VECTOR_TRACK 2176.1179 -1253.7253 23.5115 2177.0786 -1253.4666 23.5115 2500 TRUE camera_status_CUT ++ CASE 13 IF TIMERB < 61400 BREAK ENDIF SET_FIXED_CAMERA_POSITION 2212.5820 -1262.7559 25.8688 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2211.6807 -1262.3927 25.6330 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES camera_status_CUT ++ // end shot CJ walking away and car driving off CASE 14 IF TIMERB < 63000 BREAK ENDIF SET_FIXED_CAMERA_POSITION 2210.4185 -1263.1212 23.1607 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2211.3989 -1262.9810 23.2985 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES camera_status_CUT ++ CASE 15 IF TIMERB < 64000 // 67500 OR cut_status_CUT < 5 BREAK ENDIF CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE //7500 CAMERA_SET_VECTOR_MOVE 2210.4185 -1263.1212 23.1607 2217.6152 -1262.7610 24.4500 6500 TRUE CAMERA_SET_VECTOR_TRACK 2211.3989 -1262.9810 23.2985 2218.6064 -1262.8859 24.4112 6500 TRUE camera_status_CUT ++ ENDSWITCH // subtitle text (using TIMERB as this is not reset by the camera switch) LVAR_INT temp_int_CUT IF subtitle_pointer_CUT < 24 SWITCH subtitle_status_CUT CASE 1 IF TIMERB < temp_int_CUT BREAK ENDIF CLEAR_PRINTS subtitle_status_CUT -- CASE 0 IF TIMERB < subtitle_start_CUT[subtitle_pointer_CUT] BREAK ENDIF PRINT_NOW $subtitle_label_CUT[subtitle_pointer_CUT] 12000 1 temp_int_CUT = TIMERB + subtitle_lenght_CUT[subtitle_pointer_CUT] subtitle_pointer_CUT ++ subtitle_status_CUT ++ ENDSWITCH ENDIF // cars for intro - not using density to avoid cars clipping camera and hitting police car LVAR_INT car_timer_CUT SWITCH car_timer_CUT CASE 0 IF TIMERB < 8500 BREAK ENDIF x = 2345.4519 y = -1303.9263 z = 22.9955 heading = 270.0 gotoX_CUT = 2368.4365 gotoY_CUT = -1202.7523 gotoZ_CUT = 26.4297 GOSUB mission_intro_SUB_create_intro_car car_timer_CUT ++ CASE 1 IF TIMERB < 15000 BREAK ENDIF x = 2346.3833 y = -1420.5553 z = 22.8281 heading = 0.0 gotoX_CUT = 2387.4878 gotoY_CUT = -1409.5367 gotoZ_CUT = 22.8359 GOSUB mission_intro_SUB_create_intro_car car_timer_CUT ++ CASE 2 IF TIMERB < 40000 BREAK ENDIF x = 2215.0879 y = -1417.0861 z = 22.8281 heading = 0.0 gotoX_CUT = 2255.4443 gotoY_CUT = -1302.7999 gotoZ_CUT = 22.8402 GOSUB mission_intro_SUB_create_intro_car car_timer_CUT ++ CASE 3 IF TIMERB < 48000 BREAK ENDIF x = 2165.0415 y = -1353.0554 z = 22.8281 heading = 180.0 gotoX_CUT = 2130.5789 gotoY_CUT = -1381.4778 gotoZ_CUT = 22.8281 GOSUB mission_intro_SUB_create_intro_car car_timer_CUT ++ CASE 4 IF TIMERB < 52000 BREAK ENDIF x = 2201.3516 y = -1298.1646 z = 22.8303 heading = 90.0 gotoX_CUT = 2121.0894 gotoY_CUT = -1298.5696 gotoZ_CUT = 22.8170 GOSUB mission_intro_SUB_create_intro_car car_timer_CUT ++ ENDSWITCH ENDIF GOTO mission_intro_scripted_cut LVAR_INT random_car_CUT random_char_CUT random_model_CUT random_class_CUT LVAR_FLOAT gotoX_CUT gotoY_CUT gotoZ_CUT mission_intro_SUB_create_intro_car: GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE random_model_CUT random_class_CUT IF NOT random_model_CUT = -1 MARK_CHAR_AS_NO_LONGER_NEEDED random_char_CUT MARK_CAR_AS_NO_LONGER_NEEDED random_car_CUT CREATE_CAR random_model_CUT x y z random_car_CUT SET_CAR_HEADING random_car_CUT heading CREATE_RANDOM_CHAR_AS_DRIVER random_car_CUT random_char_CUT //TASK_CAR_DRIVE random_char_CUT random_car_CUT //TASK_CAR_DRIVE_WANDER random_char_CUT random_car_CUT 15.0 DRIVINGMODE_STOPFORCARS //SET_CAR_FORWARD_SPEED random_car_CUT 15.0 TASK_CAR_DRIVE_TO_COORD random_char_CUT random_car_CUT gotoX_CUT gotoY_CUT gotoZ_CUT 15.0 MODE_NORMAL FALSE DRIVINGMODE_STOPFORCARS ENDIF RETURN // ****************************************END OF CUTSCENE********************************** LVAR_INT audio_status_CUT audio_pointer_CUT audio_sound_label_CUT[7] LVAR_TEXT_LABEL audio_text_label_CUT[7] mission_intro_carl_voice_over_setup: audio_status_CUT = 0 audio_pointer_CUT = 0 $audio_text_label_CUT[0] = &VO_AA audio_sound_label_CUT[0] = SOUND_VO_AA $audio_text_label_CUT[1] = &VO_AB audio_sound_label_CUT[1] = SOUND_VO_AB $audio_text_label_CUT[2] = &VO_AC audio_sound_label_CUT[2] = SOUND_VO_AC $audio_text_label_CUT[3] = &VO_AD audio_sound_label_CUT[3] = SOUND_VO_AD $audio_text_label_CUT[4] = &VO_AE audio_sound_label_CUT[4] = SOUND_VO_AE $audio_text_label_CUT[5] = &VO_AF audio_sound_label_CUT[5] = SOUND_VO_AF $audio_text_label_CUT[6] = &VO_AG audio_sound_label_CUT[6] = SOUND_VO_AG RESTORE_CAMERA_JUMPCUT CAMERA_RESET_NEW_SCRIPTABLES CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2217.6152 -1262.7610 24.4500 2238.6409 -1261.3286 24.6289 13500 FALSE CAMERA_SET_VECTOR_TRACK 2218.6064 -1262.8859 24.4112 2239.6021 -1261.5890 24.5400 13500 FALSE CAMERA_SET_SHAKE_SIMULATION_SIMPLE 1 20000.0 3.0 camera_status_CUT = 0 TIMERA = 0 SKIP_CUTSCENE_START VAR_INT cutscene_skip_CUT mission_intro_carl_voice_over: WAIT 0 // audio //IF NOT GET_FADING_STATUS SWITCH audio_status_CUT CASE 0 IF audio_pointer_CUT < 5 load_sample = audio_sound_label_CUT[audio_pointer_CUT] $load_text = $audio_text_label_CUT[audio_pointer_CUT] START_NEW_SCRIPT audio_load_and_play 1 100 // speaker 0.0 0.0 0.0 audio_pointer_CUT ++ audio_status_CUT ++ ELSE audio_status_CUT = -1 BREAK ENDIF CASE 1 IF SLOT_status[preload_slot] = -3 audio_status_CUT -- SLOT_status[preload_slot] = -4 ENDIF ENDSWITCH SWITCH camera_status_CUT CASE 0 IF TIMERA > 13500 SET_FIXED_CAMERA_POSITION 2238.6409 -1261.3286 24.6289 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2239.6021 -1261.5890 24.5400 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES CAMERA_SET_SHAKE_SIMULATION_SIMPLE 1 100.0 3.0 camera_status_CUT ++ ENDIF BREAK CASE 1 IF TIMERA > 13600 cutscene_skip_CUT = 0 SKIP_CUTSCENE_END IF cutscene_skip_CUT = 0 CAMERA_RESET_NEW_SCRIPTABLES RESTORE_CAMERA SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON ENDIF GOTO mission_intro_end_of_cutscene ENDIF // IF cutscene_skip_CUT = 0 // DO_FADE 0 FADE_OUT // SET_CHAR_COORDINATES scplayer 2212.4353 -1260.8224 22.8792 // SET_CHAR_HEADING scplayer 40.0 // TIMERA = 0 // WHILE TIMERA < 1000 // WAIT 0 // ENDWHILE // DO_FADE 500 FADE_IN // ENDIF // //WAIT 9999999999999 ENDSWITCH //ENDIF GOTO mission_intro_carl_voice_over mission_intro_end_of_cutscene: SWITCH cutscene_skip_CUT CASE 0 // no skip CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 BREAK CASE 1 CASE 2 CASE 3 DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 SET_TIME_OF_DAY 06 30 FORCE_WEATHER_NOW WEATHER_SUNNY_COUNTRYSIDE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer LOAD_SCENE_IN_DIRECTION 2239.3674 -1261.9388 22.9375 272.5814 IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2239.3674 -1261.9388 22.9375 ELSE SET_CHAR_COORDINATES scplayer 2239.3674 -1261.9388 22.9375 ENDIF SET_CHAR_HEADING scplayer 272.5814 IF cutscene_skip_CUT = 2 STOP_BEAT_TRACK DELETE_MISSION_TRAINS SWITCH_RANDOM_TRAINS ON MARK_MODEL_AS_NO_LONGER_NEEDED COPCARLA MARK_MODEL_AS_NO_LONGER_NEEDED freight MARK_MODEL_AS_NO_LONGER_NEEDED freiflat UNLOAD_SPECIAL_CHARACTER 1 // tenpenny UNLOAD_SPECIAL_CHARACTER 2 // pulaski UNLOAD_SPECIAL_CHARACTER 3 // hernandez DELETE_CHAR tenpenny_CUT DELETE_CHAR pulaski_CUT DELETE_CHAR hernandez_CUT DELETE_CAR copcar_CUT MARK_MODEL_AS_NO_LONGER_NEEDED gangshops4_LAe2 MARK_MODEL_AS_NO_LONGER_NEEDED CE_HillsEast06 MARK_MODEL_AS_NO_LONGER_NEEDED cuntEground23 MARK_MODEL_AS_NO_LONGER_NEEDED HillsEast05_LAe CLEAR_CHAR_TASKS scplayer ENDIF IF bike_exists_CUT = 0 REQUEST_MODEL BMX WHILE NOT HAS_MODEL_LOADED BMX WAIT 0 ENDWHILE CLEAR_AREA 2246.5076 -1263.0870 22.9531 500.0 TRUE CREATE_CAR BMX 2246.5076 -1263.0870 22.9531 intro_bmx SET_CAR_HEADING intro_bmx 285.0 bike_exists_CUT = 1 ENDIF RESTORE_CAMERA_JUMPCUT CAMERA_RESET_NEW_SCRIPTABLES SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF TIMERA = 0 WHILE TIMERA < 500 WAIT 0 ENDWHILE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 TIMERA = 0 DO_FADE 1500 FADE_IN SET_PLAYER_CONTROL player1 OFF WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //PRINT_HELP HELP_41 BREAK ENDSWITCH WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON START_NEW_SCRIPT terminate_audio_controller DISPLAY_ZONE_NAMES TRUE // stop peds crossing roads as intro plays SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2380.6816 -1274.5280 22.0 2375.9453 -1239.3557 26.0 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2358.3831 -1372.6659 22.0 2382.9690 -1379.4574 25.0 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2151.6025 -1380.3746 22.0 2184.7036 -1374.7100 26.0 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2180.7307 -1286.3281 22.0 2153.5266 -1315.7975 26.0 RELEASE_WEATHER USE_TEXT_COMMANDS FALSE SET_INT_STAT CITIES_PASSED 0 SET_PLAYER_CONTROL player1 ON SET_NEAR_CLIP 0.1 SET_AREA_VISIBLE 0 SET_ZONE_GANG_STRENGTH GAN1 GANG_GROVE 10 SET_ZONE_GANG_STRENGTH GAN2 GANG_GROVE 10 REQUEST_IPL Barriers1 //BROKEN BRIDGES REQUEST_IPL Barriers2 //BROKEN BRIDGES //Gant Bridge ( Golden Gate ) SWITCH_ROADS_OFF -2696.4641 1239.8665 40.7599 -2665.3591 2190.9604 70.8125 // Main Section. SWITCH_ROADS_OFF -2740.6941 2233.6179 40.8431 -2720.9102 2338.2244 80.4822 // Country Section. SWITCH_ROADS_OFF -2695.5842 1237.9807 40.7328 -2664.4170 1454.7675 60.8126 SWITCH_ROADS_OFF -2670.1731 1203.3314 50.4297 -2662.6604 1237.7072 60.5781 //Last minute fix for Golden gate traffic madness, may cause more chaos. Switches four nodes off. // The Panopticon ( Red metal bridge in D6 ) SWITCH_ROADS_OFF -995.0013 -416.2032 30.4207 -940.5399 -251.8564 40.6762 //Red County ( E5 Red curved bridge ) SWITCH_ROADS_OFF -205.8387 250.7443 7.2472 -131.0039 481.8496 15.9152 //Flint County ( E7 small road bridge ) SWITCH_ROADS_OFF -100.7515 -927.8298 18.0 -68.3752 -891.9871 14.0 //Hampton Barns ( F5 Hexagonal Style framing ) SWITCH_ROADS_OFF 609.7595 327.3437 15.8783 429.8884 616.0168 20.2890 SWITCH_ROADS_OFF 317.1688 707.7672 7.0 437.5726 709.0657 20.5578 SWITCH_ROADS_OFF 391.1194 640.0150 7.0 402.2627 664.7980 18.5098 SWITCH_ROADS_OFF 289.2904 636.3991 7.8675 409.4943 702.3849 20.0345 SWITCH_ROADS_OFF 300.3153 718.7909 7.7846 316.7906 781.0926 14.0795 SWITCH_ROADS_OFF 254.9982 837.0290 10.1731 270.7453 929.2404 30.2553 SWITCH_ROADS_OFF 210.7811 939.2068 10.9062 249.4799 959.1111 30.2141 SWITCH_ROADS_OFF 230.4545 946.0961 20.6674 255.9772 969.2755 30.4776 SWITCH_ROADS_OFF 249.4279 899.7975 10.5871 268.6826 933.5995 30.3975 SWITCH_ROADS_OFF 312.1081 694.1089 6.0 324.0811 733.0005 10.0 SWITCH_ROADS_OFF 324.4526 804.9198 9.6186 332.8747 814.3560 14.3925 //Montgomery Intersection ( I5 potential hotspot! ) SWITCH_ROADS_OFF 1690.8192 376.5103 28.1103 1730.2230 445.2955 30.8414 SWITCH_ROADS_OFF 1643.5355 227.3723 27.4457 1673.0623 295.5788 30.0815 SWITCH_ROADS_OFF 1673.7654 388.1013 40.2331 1815.8619 804.9291 10.0 // Bridge section. SWITCH_ROADS_OFF 1705.1558 308.3448 20.0 1710.9475 316.4094 23.5612 // Slip Road. //Wee metal side bridge in E8 near Flint Intersection SWITCH_ROADS_OFF -12.7067 -1522.4554 1.0 80.8463 -1517.1113 5.0 SWITCH_ROADS_OFF -16.3392 -1532.8817 0.0394 69.3401 -1523.7710 5.9220 //Complicated tunnel bit from F8 to G8 SWITCH_ROADS_OFF 618.7253 -1189.6063 18.0 623.5441 -1161.9812 22.0 // Main Section blocker SWITCH_ROADS_OFF -33.4208 -1341.8403 9.0 35.3764 -1303.9479 13.0 // Close Southbound traffic SWITCH_ROADS_OFF -41.2393 -1385.8701 8.0 -3.5883 -1368.8558 10.5 // Fiddly section to stop northbound traffic but keep ring round open //Garver Bridge ( Forth Road ) SWITCH_ROADS_OFF -1690.7048 539.6102 30.3278 -1100.5674 1140.5695 50.7350 SWITCH_ROADS_OFF -1799.5405 379.7155 16.0 -1780.1991 392.2779 18.0 SWITCH_ROADS_OFF -1092.4293 1286.5054 30.0 -1077.0385 1319.4948 35.0 SWITCH_ROADS_OFF -1860.1334 314.7891 38.0 -1638.5630 557.4354 40.0 SWITCH_ROADS_OFF -1737.3331 455.9431 30.3573 -1710.3633 500.6261 40.4891 SWITCH_ROADS_OFF -1689.2291 513.0995 30.2597 -1679.1241 524.8383 40.2500 SWITCH_ROADS_OFF -1742.9060 500.7302 30.4679 -1650.3119 551.8201 40.7455 CLEAR_PRINTS //REMOVE_BLIP intro_contact_blip ADD_SPRITE_BLIP_FOR_COORD introX introY introZ intro_blip_icon intro_contact_blip // 3MASTER - we need a coords blip to display radar navigation ADD_SPRITE_BLIP_FOR_COORD introX introY introZ intro_blip_icon intro_coords_blip //energy //SET_FLOAT_STAT ENERGY 800.0 //fatness //SET_FLOAT_STAT FAT 200.0 //BUILD_PLAYER_MODEL player1 SWITCH_ENTRY_EXIT CARLS FALSE 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 SWITCH_ENTRY_EXIT GANG FALSE // Burning Desire house SWITCH_ENTRY_EXIT RCPLAY FALSE //ZEROS SWITCH_ENTRY_EXIT paper FALSE // Switch off Vegas planning department SWITCH_ENTRY_EXIT abatoir FALSE // Switch off Vegas abattoir SWITCH_ENTRY_EXIT lacrak FALSE DEACTIVATE_GARAGE bodLAwN DEACTIVATE_GARAGE modlast DEACTIVATE_GARAGE mdsSFSe DEACTIVATE_GARAGE mds1SFS //PP CAR GARAGE DEACTIVATE_GARAGE vEcmod SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[2] propertyY[2] 10.0 ENTRYEXITS_FLAG_ENABLED FALSE //DEACTIVATE_GARAGE vgshngr //Hanger DEACTIVATE_GARAGE dhangar //Hanger CLEAR_PRINTS LVAR_INT nHealth nHealth = 100 GET_INT_STAT MAX_HEALTH nHealth SET_CHAR_HEALTH scplayer nHealth //SET_CHAR_HEALTH scplayer 100 ADD_SCORE Player1 350 SET_PLAYER_NEVER_GETS_TIRED Player1 FALSE REMOVE_ALL_CHAR_WEAPONS scplayer flag_intro_mission_counter = 0 flag_sweet_mission_counter = 0 flag_crash_mission_counter = 0 flag_smoke_mission_counter = 0 flag_strap_mission_counter = 0 flag_ryder_mission_counter = 0 flag_cesar_mission_counter = 0 flag_la1fin1_mission_counter = 0 drive_by_help = 0 bike_help = 0 wanted_star_help = 0 car_help_played = 0 print_first_help = 0 //RESTORE_CAMERA_JUMPCUT //SET_CAMERA_BEHIND_PLAYER // SWITCH_WIDESCREEN OFF // SET_PLAYER_CONTROL player1 ON // old bmx coords /* CLEAR_AREA 2137.04 -1262.09 23.00 500.0 TRUE CREATE_CAR BMX 2137.04 -1262.09 23.00 intro_bmx SET_CAR_HEADING intro_bmx 273.69 //FREEZE_CAR_POSITION intro_bmx TRUE */ TIMERA = 0 WHILE NOT TIMERA > 1000 WAIT 0 GOSUB bmx_help_sub IF NOT IS_CAR_DEAD intro_bmx IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2246.5076 -1263.0870 22.9531 30.0 30.0 3.0 FALSE GOTO mission_passed_intro ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer CLEAR_THIS_PRINT INTRO2E CLEAR_THIS_PRINT HELP21 // Tap ~m~~widget_explicit_bicycle~ to get on the bike. GOTO mission_passed_intro ENDIF ENDWHILE DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 CLEAR_PRINTS CLEAR_HELP GOSUB bmx_help_sub IF NOT IS_CAR_DEAD intro_bmx IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2246.5076 -1263.0870 22.9531 30.0 30.0 3.0 FALSE GOTO mission_passed_intro ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer CLEAR_THIS_PRINT INTRO2E CLEAR_THIS_PRINT HELP21 // Tap ~m~~widget_explicit_bicycle~ to get on the bike. GOTO mission_passed_intro ENDIF ENDWHILE PRINT_HELP_FOREVER_CONDITIONAL HLP_JOY 4 // Use ~m~~widget_ped_move~ to move Carl. IF NOT IS_CAR_DEAD intro_bmx ADD_BLIP_FOR_CAR intro_bmx intro_bmx_blip SET_BLIP_AS_FRIENDLY intro_bmx_blip TRUE CHANGE_BLIP_DISPLAY intro_bmx_blip MARKER_ONLY ENDIF TIMERA = 0 WHILE NOT TIMERA > 5000 WAIT 0 GOSUB bmx_help_sub IF NOT IS_CAR_DEAD intro_bmx IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2246.5076 -1263.0870 22.9531 30.0 30.0 3.0 FALSE GOTO mission_passed_intro ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer REMOVE_BLIP intro_bmx_blip CLEAR_THIS_PRINT INTRO2E CLEAR_THIS_PRINT HELP21 // Tap ~m~~widget_explicit_bicycle~ to get on the bike. GOTO mission_passed_intro ENDIF ENDWHILE PRINT_NOW ( INTROB ) 4000 1 //Get on the Bike! TIMERA = 0 WHILE NOT TIMERA > 5000 WAIT 0 GOSUB bmx_help_sub ENDWHILE WHILE NOT IS_CHAR_IN_CAR scplayer intro_bmx WAIT 0 GOSUB bmx_help_sub IF NOT IS_CAR_DEAD intro_bmx IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2246.5076 -1263.0870 22.9531 30.0 30.0 3.0 FALSE GOTO mission_passed_intro ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer REMOVE_BLIP intro_bmx_blip CLEAR_THIS_PRINT INTRO2E CLEAR_THIS_PRINT HELP21 // Tap ~m~~widget_explicit_bicycle~ to get on the bike. GOTO mission_passed_intro ENDIF ENDWHILE mission_passed_intro: RETURN mission_intro_failed: RETURN mission_cleanup_intro: START_NEW_SCRIPT terminate_audio_controller MARK_MODEL_AS_NO_LONGER_NEEDED COPCARLA MARK_MODEL_AS_NO_LONGER_NEEDED freight MARK_MODEL_AS_NO_LONGER_NEEDED freiflat START_NEW_SCRIPT intro_mission_loop START_NEW_SCRIPT cell_phone_LA1 TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME MOB_RAN START_NEW_SCRIPT cell_phone_random TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME INTROST START_NEW_SCRIPT intro_stuff_loop REMOVE_BLIP intro_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT introX introY introZ intro_blip_icon intro_contact_blip MARK_MODEL_AS_NO_LONGER_NEEDED BMX IF NOT IS_CAR_DEAD intro_bmx MARK_CAR_AS_NO_LONGER_NEEDED intro_bmx REMOVE_BLIP intro_bmx_blip ENDIF flag_player_on_mission = 0 game_starts_from_scratch = 1 MISSION_HAS_FINISHED RETURN bmx_help_sub: IF NOT IS_CAR_DEAD intro_bmx IF play_bmx_geton_help = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2246.5076 -1263.0870 22.9531 2.0 2.0 2.0 FALSE PRINT_HELP_FOREVER_CONDITIONAL HELP21 1 // Tap ~m~~widget_explicit_bicycle~ to get on the bike. (flag 1 is CONDITION_FLAG_ENTER_CAR). play_bmx_geton_help = 1 ENDIF ENDIF ENDIF RETURN /* TEXT GOSUBS FOR FAKE SPLASH SCREENS */ LVAR_INT text_status_SS text_alpha_SS text_flag_SS text_display LVAR_TEXT_LABEL text_label_SS LVAR_INT currentTime LVAR_INT lastTime LVAR_INT elapsedTime LVAR_INT ticks LVAR_FLOAT ratio mission_intro1_SUB_text_handler: GET_GAME_TIMER currentTime elapsedTime = currentTime - lastTime IF elapsedTime > 100 elapsedTime = 100 ENDIF lastTime = currentTime ratio =# elapsedTime ratio /= 33.0 // The Legacy game assumed 30 FPS. ratio *= 10.0 // At 30 FPS, they incremented/decremented by 10. ticks =# ratio IF ticks < 1 ticks = 1 ENDIF SWITCH text_status_SS CASE 0 // fade in text_alpha_SS += ticks IF text_alpha_SS > 200 text_alpha_SS = 200 ENDIF // ARGH SWITCH STATEMENT DROPS THROUGH HERE! CASE 1 // fade out if text_status_SS = 1 text_alpha_SS -= ticks IF text_alpha_SS < 0 text_alpha_SS = 0 ENDIF ENDIF // ARGH SWITCH STATEMENT DROPS THROUGH HERE! CASE 2 // display text IF text_display = 0 SET_TEXT_SCALE 0.8 1.8 SET_TEXT_COLOUR 255 255 255 text_alpha_SS SET_TEXT_CENTRE ON SET_TEXT_WRAPX 600.0 SET_TEXT_DROPSHADOW 0 0 0 0 255 DISPLAY_TEXT 320.0 180.0 LOAD_01 SET_TEXT_SCALE 0.8 1.8 SET_TEXT_COLOUR 255 255 255 text_alpha_SS SET_TEXT_CENTRE ON SET_TEXT_WRAPX 600.0 SET_TEXT_DROPSHADOW 0 0 0 0 255 DISPLAY_TEXT 320.0 200.0 LOAD_03 SET_TEXT_SCALE 0.8 1.8 SET_TEXT_COLOUR 255 255 255 text_alpha_SS SET_TEXT_CENTRE ON SET_TEXT_WRAPX 600.0 SET_TEXT_DROPSHADOW 0 0 0 0 255 DISPLAY_TEXT 320.0 220.0 LOAD_04 ELSE SET_TEXT_SCALE 0.6 1.6 SET_TEXT_COLOUR 255 255 255 text_alpha_SS SET_TEXT_CENTRE ON SET_TEXT_WRAPX 600.0 SET_TEXT_DROPSHADOW 1 0 0 0 text_alpha_SS DISPLAY_TEXT 320.0 200.0 $text_label_SS ENDIF ENDSWITCH RETURN } MISSION_START // ***************************************************************************************** // *** *** // *** Date: 18/06/2004 Time: 14:35:45 Name: Chris Rothwell *** // *** *** // *** This is the "They Came From Uranus" arcade game. *** // *** *** // ***************************************************************************************** GOSUB mission_none_start GOSUB mission_none_cleanup MISSION_END // ************************************ MISSION START ************************************** { mission_none_start: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN SCRIPT_NAME none WAIT 0 LOAD_MISSION_TEXT dual SHUT_ALL_CHARS_UP TRUE get_char_coordinates scplayer x y z clear_area x y z 50.0 0 CLEAR_HELP SET_WIDGET_VALUE WIDGET_ARCADE_JOYSTICK 2.0 // Set the right colored images, each arcade game has unique colors. SET_WIDGET_VALUE WIDGET_ARCADE_BUTTON 2.0 USE_TEXT_COMMANDS TRUE REMOVE_TEXTURE_DICTIONARY LOAD_TEXTURE_DICTIONARY ld_none LOAD_SPRITE 1 ship LOAD_SPRITE 2 cabcorn LOAD_SPRITE 3 shoot LOAD_SPRITE 4 light LOAD_SPRITE 5 explm01 LOAD_SPRITE 6 explm02 LOAD_SPRITE 7 explm03 LOAD_SPRITE 8 explm04 LOAD_SPRITE 9 explm05 LOAD_SPRITE 10 explm06 LOAD_SPRITE 11 explm07 LOAD_SPRITE 12 explm08 LOAD_SPRITE 13 explm09 LOAD_SPRITE 14 explm10 LOAD_SPRITE 15 explm11 LOAD_SPRITE 16 explm12 LOAD_SPRITE 17 force LOAD_SPRITE 18 warp LOAD_SPRITE 19 thrust LOAD_SPRITE 20 shpnorm LOAD_SPRITE 21 shpwarp LOAD_SPRITE 22 ship2 LOAD_SPRITE 23 ship3 LOAD_SPRITE 24 title load_mission_audio 4 SOUND_BANK_TEMPEST while not has_mission_audio_loaded 4 wait 0 endwhile REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_TEMPEST_TRACK_START lvar_float pattern_move_1[10] pattern_move_1[0] = 3.0 pattern_move_1[1] = 2.0 pattern_move_1[2] = 1.0 pattern_move_1[3] = 0.0 pattern_move_1[4] = -1.0 pattern_move_1[5] = -2.0 pattern_move_1[6] = -3.0 pattern_move_1[7] = -2.0 pattern_move_1[8] = -1.0 pattern_move_1[9] = -4.0 lvar_float pattern_rotation_1[10] pattern_rotation_1[0] = 4.0 pattern_rotation_1[1] = 3.0 pattern_rotation_1[2] = 2.0 pattern_rotation_1[3] = -2.0 pattern_rotation_1[4] = -4.0 pattern_rotation_1[5] = -6.0 pattern_rotation_1[6] = -3.0 pattern_rotation_1[7] = -2.0 pattern_rotation_1[8] = -7.0 pattern_rotation_1[9] = -6.0 lvar_int pattern_timer_1[10] pattern_timer_1[0] = 300 pattern_timer_1[1] = 200 pattern_timer_1[2] = 400 pattern_timer_1[3] = 600 pattern_timer_1[4] = 400 pattern_timer_1[5] = 500 pattern_timer_1[6] = 200 pattern_timer_1[7] = 300 pattern_timer_1[8] = 400 pattern_timer_1[9] = 6000 lvar_float pattern_move_2[10] pattern_move_2[0] = 2.0 pattern_move_2[1] = 3.0 pattern_move_2[2] = 1.0 pattern_move_2[3] = 0.0 pattern_move_2[4] = 1.0 pattern_move_2[5] = 3.0 pattern_move_2[6] = -3.0 pattern_move_2[7] = -3.0 pattern_move_2[8] = 2.0 pattern_move_2[9] = -5.0 lvar_float pattern_rotation_2[10] pattern_rotation_2[0] = 0.0 pattern_rotation_2[1] = 3.0 pattern_rotation_2[2] = 4.0 pattern_rotation_2[3] = 5.0 pattern_rotation_2[4] = 12.0 pattern_rotation_2[5] = 6.0 pattern_rotation_2[6] = 3.0 pattern_rotation_2[7] = 0.0 pattern_rotation_2[8] = -4.0 pattern_rotation_2[9] = -6.0 lvar_int pattern_timer_2[10] pattern_timer_2[0] = 100 pattern_timer_2[1] = 400 pattern_timer_2[2] = 300 pattern_timer_2[3] = 500 pattern_timer_2[4] = 400 pattern_timer_2[5] = 200 pattern_timer_2[6] = 400 pattern_timer_2[7] = 400 pattern_timer_2[8] = 400 pattern_timer_2[9] = 6000 lvar_float pattern_move_3[10] pattern_move_3[0] = 5.0 pattern_move_3[1] = -3.0 pattern_move_3[2] = 6.0 pattern_move_3[3] = -6.0 pattern_move_3[4] = 3.0 pattern_move_3[5] = -3.0 pattern_move_3[6] = 3.0 pattern_move_3[7] = -3.0 pattern_move_3[8] = 3.0 pattern_move_3[9] = -6.0 lvar_float pattern_rotation_3[10] pattern_rotation_3[0] = 4.0 pattern_rotation_3[1] = 4.0 pattern_rotation_3[2] = 4.0 pattern_rotation_3[3] = 4.0 pattern_rotation_3[4] = 4.0 pattern_rotation_3[5] = 4.0 pattern_rotation_3[6] = 4.0 pattern_rotation_3[7] = 4.0 pattern_rotation_3[8] = 4.0 pattern_rotation_3[9] = 4.0 lvar_int pattern_timer_3[10] pattern_timer_3[0] = 300 pattern_timer_3[1] = 300 pattern_timer_3[2] = 300 pattern_timer_3[3] = 300 pattern_timer_3[4] = 300 pattern_timer_3[5] = 300 pattern_timer_3[6] = 300 pattern_timer_3[7] = 300 pattern_timer_3[8] = 300 pattern_timer_3[9] = 300 lvar_float player_explosions_move_x[8] player_explosions_move_y[8] player_explosions_move_x[0] = 0.0 player_explosions_move_y[0] = 5.0 player_explosions_move_x[1] = 5.0 player_explosions_move_y[1] = 5.0 player_explosions_move_x[2] = 5.0 player_explosions_move_y[2] = 0.0 player_explosions_move_x[3] = -5.0 player_explosions_move_y[3] = 0.0 player_explosions_move_x[4] = -5.0 player_explosions_move_y[4] = -5.0 player_explosions_move_x[5] = 0.0 player_explosions_move_y[5] = -5.0 player_explosions_move_x[6] = 5.0 player_explosions_move_y[6] = -5.0 player_explosions_move_x[7] = -5.0 player_explosions_move_y[7] = 5.0 lvar_text_label $none_char[37] $none_char[0] = DUAL_0 // 0 $none_char[1] = DUAL_1 // 1 $none_char[2] = DUAL_2 // 2 $none_char[3] = DUAL_3 // 3 $none_char[4] = DUAL_4 // 4 $none_char[5] = DUAL_5 // 5 $none_char[6] = DUAL_6 // 6 $none_char[7] = DUAL_7 // 7 $none_char[8] = DUAL_8 // 8 $none_char[9] = DUAL_9 // 9 $none_char[10] = DUAL_AA// A $none_char[11] = DUAL_B // B $none_char[12] = DUAL_C // C $none_char[13] = DUAL_D // D $none_char[14] = DUAL_E // E $none_char[15] = DUAL_F // F $none_char[16] = DUAL_G // G $none_char[17] = DUAL_H // H $none_char[18] = DUAL_I // I $none_char[19] = DUAL_J // J $none_char[20] = DUAL_K // K $none_char[21] = DUAL_L // L $none_char[22] = DUAL_M // M $none_char[23] = DUAL_N // N $none_char[24] = DUAL_O // O $none_char[25] = DUAL_P // P $none_char[26] = DUAL_Q // Q $none_char[27] = DUAL_R // R $none_char[28] = DUAL_S // S $none_char[29] = DUAL_T // T $none_char[30] = DUAL_U // U $none_char[31] = DUAL_V // V $none_char[32] = DUAL_W // W $none_char[33] = DUAL_X // X $none_char[34] = DUAL_Y // Y $none_char[35] = DUAL_Z // Z $none_char[36] = DUAL_FS// . lvar_int left_stick_x left_stick_y temp_int lvar_float temp_float var_int played_none_before if played_none_before = 0 var_int none_hiscore[10] none_hiscore[0] = 250000 none_hiscore[1] = 100000 none_hiscore[2] = 75000 none_hiscore[3] = 50000 none_hiscore[4] = 25000 none_hiscore[5] = 10000 none_hiscore[6] = 7500 none_hiscore[7] = 5000 none_hiscore[8] = 2500 none_hiscore[9] = 1000 var_text_label $none_letter1[10] $none_letter2[10] $none_letter3[10] $none_letter1[0] = $none_char[10] $none_letter2[0] = $none_char[13] $none_letter3[0] = $none_char[35] $none_letter1[1] = $none_char[12] $none_letter2[1] = $none_char[10] $none_letter3[1] = $none_char[23] $none_letter1[2] = $none_char[18] $none_letter2[2] = $none_char[22] $none_letter3[2] = $none_char[34] $none_letter1[3] = $none_char[32] $none_letter2[3] = $none_char[18] $none_letter3[3] = $none_char[21] $none_letter1[4] = $none_char[13] $none_letter2[4] = $none_char[11] $none_letter3[4] = $none_char[25] $none_letter1[5] = $none_char[13] $none_letter2[5] = $none_char[10] $none_letter3[5] = $none_char[31] $none_letter1[6] = $none_char[13] $none_letter2[6] = $none_char[24] $none_letter3[6] = $none_char[13] $none_letter1[7] = $none_char[23] $none_letter2[7] = $none_char[15] $none_letter3[7] = $none_char[36] $none_letter1[8] = $none_char[20] $none_letter2[8] = $none_char[22] $none_letter3[8] = $none_char[11] $none_letter1[9] = $none_char[28] $none_letter2[9] = $none_char[19] $none_letter3[9] = $none_char[21] played_none_before = 1 endif lvar_float title_x title_y title_x = 336.4137 title_y = 58.2432 lvar_float top_row_x top_row_y top_row_x = 201.2250 top_row_y = 88.9168 lvar_float next_letter_x score_dist_x next_row_y next_letter_x = 29.7800 score_dist_x = 260.0 next_row_y = 28.5713 lvar_int pad1_dpadup_pressed pad1_dpaddown_pressed pad1_cross_pressed pad1_circle_pressed pad1_dpadup_pressed = 0 pad1_dpaddown_pressed = 0 pad1_cross_pressed = 0 pad1_circle_pressed = 0 do_fade 0 fade_in draw_rect 320.0 224.0 640.0 448.0 0 0 0 255 lvar_int menu_selection menu_selection = 0 lvar_int new_high_score new_high_score = -1 lvar_int a b c repeat 60 a lvar_float dust_heading[60] dust_distance[60] generate_random_float_in_range 0.0 300.0 dust_distance[a] generate_random_float_in_range 0.0 360.0 dust_heading[a] endrepeat lvar_float dust_speed dust_speed = 8.0 // -- Variables for to make enemy shot amount frame independent VAR_FLOAT none_elapsed_time VAR_INT none_last_time VAR_INT none_current_time none_frontend_loop:////////////////////////////////////////////////////////////////////////// wait 0 GOSUB CollectAllInput // Determines abstracted directional movement. draw_rect 320.0 224.0 640.0 448.0 0 0 0 255 get_game_timer game_timer none_score = 0 IF INPUT = INPUT_UP if pad1_dpadup_pressed = 0 menu_selection-- IF menu_selection = -1 menu_selection = 2 ENDIF REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_TEMPEST_HIGHLIGHT endif pad1_dpadup_pressed = 1 else IF INPUT = INPUT_DOWN if pad1_dpaddown_pressed = 0 menu_selection++ IF menu_selection = 3 menu_selection = 0 ENDIF REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_TEMPEST_HIGHLIGHT endif pad1_dpaddown_pressed = 1 else pad1_dpaddown_pressed = 0 endif pad1_dpadup_pressed = 0 endif gosub setup_text_none if menu_selection = 0 set_text_colour 255 0 0 255 else set_text_colour 255 255 255 255 endif set_text_scale 1.0 3.0 display_text 320.0 250.0 SPAC_04 //PLAY gosub setup_text_none if menu_selection = 1 set_text_colour 255 0 0 255 else set_text_colour 255 255 255 255 endif set_text_scale 1.0 3.0 display_text 320.0 300.0 SPAC_06 //HISCORE gosub setup_text_none if menu_selection = 2 set_text_colour 255 0 0 255 else set_text_colour 255 255 255 255 endif set_text_scale 1.0 3.0 display_text 320.0 350.0 SPAC_05 //QUIT repeat 60 a temp_float = dust_speed / 2.0//PC dust_distance[a] +=@ temp_float//PC //dust_distance[a] +=@ dust_speed//PS2 COS dust_heading[a] x SIN dust_heading[a] y x *= dust_distance[a] y *= dust_distance[a] x += 320.0 y += 224.0 draw_rect x y 1.0 1.0 255 255 255 255 if x > 640.0 or x < 0.0 or y < 0.0 or y > 448.0 dust_distance[a] = 10.0 generate_random_float_in_range 0.0 360.0 dust_heading[a] endif endrepeat DRAW_SPRITE 24 320.0 140.0 256.0 128.0 255 255 255 255 GOSUB RenderUranusBorder IF IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON IF pad1_cross_pressed = 0 ++ pad1_cross_pressed REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_TEMPEST_SELECT if menu_selection = 0//PLAY goto none_initialise_vars endif if menu_selection = 1//hiscore GOTO none_hiscore_loop endif if menu_selection = 2//quit REMOVE_TEXTURE_DICTIONARY set_player_control player1 on do_fade 0 fade_out wait 0 do_fade 500 fade_in return endif ENDIF ELSE pad1_cross_pressed = 0 ENDIF GOSUB EnableArcadeWidgets // Keep the widgets enabled all the time. IF IS_WIDGET_RELEASED WIDGET_ARCADE_POWER_OFF GOTO mission_none_cleanup ENDIF IF IS_WIDGET_RELEASED WIDGET_ARCADE_RESET GOTO none_frontend_loop ENDIF goto none_frontend_loop////////////////////////////////////////////////////////////////////////// none_initialise_vars: lvar_float ship_heading ship_heading = 90.0 repeat 10 a lvar_int projectile_alive[10] projectile_alive[a] = 0 lvar_int explosions_flag[10] explosions_flag[a] = 0 lvar_int enemy_alive[10] enemy_alive[a] = 0 lvar_int enemy_projectile_alive[10] enemy_projectile_alive[a] = 0 endrepeat lvar_int none_score none_score = 0 lvar_int generate_enemy_timer generate_enemy_timer = 0 lvar_int player_dead_flag player_dead_flag = 0 repeat 8 a lvar_int player_explosions_flag[8] player_explosions_flag[a] = 0 endrepeat lvar_int invulnerability_timer invulnerability_timer = 0 lvar_int player_ship_alpha alpha_change player_ship_alpha = 255 alpha_change = -50 lvar_int quit_game quit_game = 0 lvar_int ship_health last_ship_health ship_health = 100 last_ship_health = ship_health lvar_int draw_sheilds sheild_alpha sheild_alpha_change draw_sheilds = 0 sheild_alpha = 0 sheild_alpha_change = 100 lvar_int ship_lives ship_lives = 3 lvar_int enemy_wave_killed display_bonus_score display_bonus_score_timer enemy_wave_killed = 0 display_bonus_score = 0 display_bonus_score_timer = 0 lvar_int warp_pickup_collected do_warp_pickup do_warp none_level warp_pickup_collected = 0 do_warp_pickup = 0 do_warp = 0 none_level = 1 lvar_int any_enemy_alive any_enemy_alive = 0 lvar_float ship_distance ship_distance = 190.0 dust_speed = 8.0 none_game_loop:////////////////////////////////////////////////////////////////////////// WAIT 0 GOSUB CollectAllInput // Determines abstracted directional movement. draw_rect 320.0 224.0 640.0 448.0 0 0 0 255 GET_GAME_TIMER game_timer repeat 60 a temp_float = dust_speed / 2.0//PC dust_distance[a] +=@ temp_float//PC //dust_distance[a] +=@ dust_speed//PS2 COS dust_heading[a] x SIN dust_heading[a] y x *= dust_distance[a] y *= dust_distance[a] x += 320.0 y += 224.0 //lvar_float bubble_scale //bubble_scale = dust_distance[a] / 8.0 draw_rect x y 1.0 1.0 255 255 255 255 if x > 640.0 or x < 0.0 or y < 0.0 or y > 448.0 dust_distance[a] = 10.0 generate_random_float_in_range 0.0 360.0 dust_heading[a] endif endrepeat if player_dead_flag = 0 if do_warp < 2 LVAR_FLOAT fTempFloat fTempFloat =# INPUT_ANALOG_LEFT_RIGHT // Convert int -127-127 range to -1.35f-1.35f range. fTempFloat *= 0.0104 ship_heading -=@ fTempFloat LIMIT_ANGLE ship_heading ship_heading endif COS ship_heading x SIN ship_heading y x *= 0.9 y *= 0.9 lvar_float ship_collision_x ship_collision_x = y * 22.0 if ship_collision_x < 0.0 ship_collision_x *= -1.0 endif ship_collision_x += 26.0 lvar_float ship_collision_y ship_collision_y = x * 22.0 if ship_collision_y < 0.0 ship_collision_y *= -1.0 endif ship_collision_y += 26.0 if do_warp = 2 ship_distance -=@ 1.0//PS2 = 2.0 dust_speed = 16.0 if ship_distance < 20.0 do_warp = 3 endif else if do_warp = 3 ship_distance +=@ 1.0//PS2 = 2.0 if ship_distance > 190.0 ship_distance = 190.0 warp_pickup_collected = 0 ++ none_level do_warp = 0 endif else dust_speed = 8.0 ship_distance = 190.0 endif endif x *= ship_distance y *= ship_distance lvar_float ship_position_x ship_position_y ship_position_x = x + 320.0 ship_position_y = y + 224.0 if invulnerability_timer > game_timer player_ship_alpha += alpha_change if player_ship_alpha > 255 player_ship_alpha = 255 alpha_change = -50 endif if player_ship_alpha < 0 player_ship_alpha = 0 alpha_change = 50 endif else player_ship_alpha = 255 endif lvar_float ship_scale_x ship_scale_y ship_scale_y = ship_distance / 5.9375 ship_scale_x = ship_scale_y * 2.0 heading = ship_heading + 90.0 if do_warp < 2 DRAW_SPRITE_WITH_ROTATION 20 ship_position_x ship_position_y ship_scale_x ship_scale_y heading 255 255 255 player_ship_alpha else DRAW_SPRITE_WITH_ROTATION 21 ship_position_x ship_position_y ship_scale_x ship_scale_y heading 255 255 255 player_ship_alpha endif if do_warp < 2 IF IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON if pad1_circle_pressed = 0 repeat 10 a if projectile_alive[a] = 0 lvar_float projectile_heading[10] projectile_heading[a] = ship_heading lvar_float projectile_distance[10] projectile_distance[a] = 190.0 projectile_alive[a] = 1 lvar_float projectile_speed[10] projectile_speed[a] = -12.0 lvar_float projectile_direction[10] projectile_direction[a] = heading a = 9 endif endrepeat REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_TEMPEST_PLAYER_SHOOT pad1_circle_pressed = 1 endif else pad1_circle_pressed = 0 ENDIF endif else if player_dead_flag = 1 repeat 8 a player_explosions_flag[a] = 1 player_explosions_x[a] = ship_position_x player_explosions_y[a] = ship_position_y endrepeat REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_TEMPEST_EXPLOSION ++ player_dead_flag endif if player_dead_flag = 2 repeat 8 a IF player_explosions_flag[a] > 0 IF player_explosions_flag[a] = 1 player_explosions_flag[a] = 5 ENDIF lvar_float player_explosions_x[8] player_explosions_y[8] player_explosions_x[a] += player_explosions_move_x[a] player_explosions_y[a] += player_explosions_move_y[a] ++ player_explosions_flag[a] IF player_explosions_flag[a] > 16 player_explosions_flag[a] = 0 ELSE DRAW_SPRITE player_explosions_flag[a] player_explosions_x[a] player_explosions_y[a] 32.0 32.0 255 255 255 255 ENDIF ENDIF endrepeat temp_int = 0 repeat 8 a temp_int += player_explosions_flag[a] endrepeat if temp_int = 0 ship_heading = 90.0 invulnerability_timer = game_timer + 2500 draw_sheilds = 0 sheild_alpha = 0 sheild_alpha_change = 100 last_ship_health = 100 -- ship_lives if ship_lives > 0 player_dead_flag = 0 ship_health = 100 else lvar_int gameover_timer gameover_timer = game_timer + 3000 player_dead_flag = 3 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_TEMPEST_GAME_OVER endif endif endif if player_dead_flag = 3 if gameover_timer > game_timer gosub setup_text_none display_text 320.0 100.0 SPAC_01// GAME OVER! else quit_game = 1 endif endif endif //DRAW PROJECTILES/// repeat 10 a if projectile_alive[a] = 1 temp_float = projectile_speed[a] / 2.0//PC projectile_distance[a] +=@ temp_float //PC //projectile_distance[a] +=@ projectile_speed[a] //PS2 COS projectile_heading[a] x SIN projectile_heading[a] y x *= projectile_distance[a] y *= projectile_distance[a] lvar_float projectile_position_x[10] projectile_position_y[10] projectile_position_x[a] = x + 320.0 projectile_position_y[a] = y + 224.0 DRAW_SPRITE_WITH_ROTATION 3 projectile_position_x[a] projectile_position_y[a] 8.0 8.0 projectile_direction[a] 52 183 195 255 if projectile_distance[a] < 10.0 projectile_alive[a] = 0 endif endif endrepeat if do_warp = 0 lvar_int new_enemy_wave_timer if new_enemy_wave_timer < game_timer lvar_float generate_enemies_heading generate_random_float_in_range 0.0 360.0 generate_enemies_heading lvar_int wave_pattern generate_random_int_in_range 0 3 wave_pattern lvar_int enemies_to_generate enemy_wave_killed = 0 enemies_to_generate = 10 new_enemy_wave_timer = game_timer + 8000 endif else new_enemy_wave_timer = game_timer + 1000 endif if enemies_to_generate > 0 if generate_enemy_timer < game_timer repeat 10 a if enemy_alive[a] = 0 lvar_float enemy_heading[10] //generate_random_float_in_range 0.0 360.0 enemy_heading[a] enemy_heading[a] = generate_enemies_heading//0.0 lvar_float enemy_rotation[10] //generate_random_float_in_range -5.0 5.0 enemy_rotation[a] enemy_rotation[a] = 5.0 lvar_float enemy_move[10] //generate_random_float_in_range 2.0 3.0 enemy_move[a] enemy_move[a] = 3.0 lvar_float enemy_distance[10] enemy_distance[a] = 10.0 lvar_int enemy_step[10] enemy_step[a] = 0 lvar_int enemy_timer[10] enemy_timer[a] = game_timer + 500 enemy_alive[a] = 1 last_enemy_position_x[a] = 320.0 last_enemy_position_y[a] = 224.0 generate_enemy_timer = game_timer + 200 -- enemies_to_generate a = 9 endif endrepeat endif endif //Make shot spawn frame independent GET_GAME_TIMER none_current_time LVAR_FLOAT ftemp_none_current_time ftemp_none_last_time ftemp_none_time_difference ftemp_none_current_time =# none_current_time ftemp_none_last_time =# none_last_time ftemp_none_time_difference = ftemp_none_current_time - ftemp_none_last_time none_elapsed_time += ftemp_none_time_difference none_last_time = none_current_time if none_elapsed_time > 40.0 none_elapsed_time = 40.0 endif any_enemy_alive = 0 repeat 10 a if enemy_alive[a] = 1 if enemy_step[a] < 10 if enemy_timer[a] < game_timer temp_int = enemy_step[a] if wave_pattern = 0 enemy_move[a] = pattern_move_1[temp_int] enemy_rotation[a] = pattern_rotation_1[temp_int] enemy_timer[a] = game_timer + pattern_timer_1[temp_int] endif if wave_pattern = 1 enemy_move[a] = pattern_move_2[temp_int] enemy_rotation[a] = pattern_rotation_2[temp_int] enemy_timer[a] = game_timer + pattern_timer_2[temp_int] endif if wave_pattern = 2 enemy_move[a] = pattern_move_3[temp_int] enemy_rotation[a] = pattern_rotation_3[temp_int] enemy_timer[a] = game_timer + pattern_timer_3[temp_int] endif ++ enemy_step[a] endif endif any_enemy_alive = 1 temp_float = enemy_move[a] / 2.0 //PC enemy_distance[a] +=@ temp_float //PC temp_float = enemy_rotation[a] / 2.0 //PC enemy_heading[a] +=@ temp_float //PC LIMIT_ANGLE enemy_heading[a] enemy_heading[a] COS enemy_heading[a] x SIN enemy_heading[a] y x *= enemy_distance[a] y *= enemy_distance[a] lvar_float enemy_position_x[10] enemy_position_y[10] lvar_float last_enemy_position_x[10] last_enemy_position_y[10] last_enemy_position_x[a] = enemy_position_x[a] last_enemy_position_y[a] = enemy_position_y[a] enemy_position_x[a] = x + 320.0 enemy_position_y[a] = y + 224.0 lvar_float enemy_scale enemy_scale = enemy_distance[a] / 5.0 x = enemy_position_x[a] - last_enemy_position_x[a] y = enemy_position_y[a] - last_enemy_position_y[a] GET_HEADING_FROM_VECTOR_2D x y heading if wave_pattern = 0 DRAW_SPRITE_WITH_ROTATION 1 enemy_position_x[a] enemy_position_y[a] enemy_scale enemy_scale heading 255 255 255 255 else if wave_pattern = 1 DRAW_SPRITE_WITH_ROTATION 22 enemy_position_x[a] enemy_position_y[a] enemy_scale enemy_scale heading 255 255 255 255 else DRAW_SPRITE_WITH_ROTATION 23 enemy_position_x[a] enemy_position_y[a] enemy_scale enemy_scale heading 255 255 255 255 endif endif x = ship_heading + 10.0 y = ship_heading - 10.0 if enemy_heading[a] < x and enemy_heading[a] > y temp_int = 18 - none_level if temp_int < 4 temp_int = 4 endif if(none_elapsed_time > 30.0) generate_random_int_in_range 0 temp_int temp_int //Enemy Projectile spawn rng if temp_int = 0 repeat 10 b if enemy_projectile_alive[b] = 0 lvar_float enemy_projectile_heading[10] enemy_projectile_heading[b] = enemy_heading[a] lvar_float enemy_projectile_distance[10] enemy_projectile_distance[b] = enemy_distance[a] enemy_projectile_alive[b] = 1 lvar_float enemy_projectile_speed[10] enemy_projectile_speed[b] = 6.0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_TEMPEST_ENEMY_SHOOT b = 9 endif endrepeat endif none_elapsed_time = 0.0 endif endif if enemy_distance[a] > 320.0 or enemy_distance[a] < 10.0 enemy_alive[a] = 0 endif repeat 10 b if projectile_alive[b] = 1 if DO_2D_RECTANGLES_COLLIDE projectile_position_x[b] projectile_position_y[b] 12.0 12.0 enemy_position_x[a] enemy_position_y[a] enemy_scale enemy_scale enemy_alive[a] = 0 projectile_alive[b] = 0 ++ enemy_wave_killed if enemy_wave_killed = 10 lvar_float bonus_score_x bonus_score_y bonus_score_x = enemy_position_x[a] bonus_score_y = enemy_position_y[a] display_bonus_score_timer = game_timer + 1500 lvar_float warp_pickup_heading warp_pickup_distance warp_pickup_heading = enemy_heading[a] warp_pickup_distance = enemy_distance[a] ++ do_warp_pickup display_bonus_score = 100 * none_level none_score += display_bonus_score else temp_int = 10 * none_level none_score += temp_int endif repeat 10 c IF explosions_flag[c] = 0 LVAR_FLOAT explosions_x[10] explosions_y[10] explosions_x[c] = enemy_position_x[a] explosions_y[c] = enemy_position_y[a] ++ explosions_flag[c] REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_TEMPEST_EXPLOSION c = 9 ENDIF endrepeat b = 9 endif endif endrepeat endif endrepeat if do_warp = 1 if any_enemy_alive = 0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_TEMPEST_WARP do_warp = 2 endif endif //DRAW ENEMY PROJECTILES/// repeat 10 a if enemy_projectile_alive[a] = 1 temp_float = enemy_projectile_speed[a] / 2.0//PC enemy_projectile_distance[a] +=@ temp_float //PC //enemy_projectile_distance[a] +=@ enemy_projectile_speed[a]//PS2 COS enemy_projectile_heading[a] x SIN enemy_projectile_heading[a] y x *= enemy_projectile_distance[a] y *= enemy_projectile_distance[a] lvar_float enemy_projectile_position_x[10] enemy_projectile_position_y[10] enemy_projectile_position_x[a] = x + 320.0 enemy_projectile_position_y[a] = y + 224.0 DRAW_SPRITE 4 enemy_projectile_position_x[a] enemy_projectile_position_y[a] 8.0 8.0 244 0 0 255 if not DO_2D_RECTANGLES_COLLIDE enemy_projectile_position_x[a] enemy_projectile_position_y[a] 8.0 8.0 320.0 224.0 640.0 448.0 enemy_projectile_alive[a] = 0 endif if player_dead_flag = 0 if DO_2D_RECTANGLES_COLLIDE enemy_projectile_position_x[a] enemy_projectile_position_y[a] 8.0 8.0 ship_position_x ship_position_y ship_collision_x ship_collision_y//56.0 28.0 //player dead if invulnerability_timer < game_timer ship_health -= 20 //if player_dead_flag = 0 // player_dead_flag = 1 //endif endif enemy_projectile_alive[a] = 0 repeat 10 c IF explosions_flag[c] = 0 explosions_x[c] = enemy_projectile_position_x[a] explosions_y[c] = enemy_projectile_position_y[a] ++ explosions_flag[c] REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_TEMPEST_EXPLOSION c = 9 ENDIF endrepeat endif endif endif endrepeat if player_dead_flag = 0 if draw_sheilds > 0 LVAR_INT none_elapsed_time_shield none_elapsed_time_shield =# ftemp_none_time_difference if draw_sheilds > 1 sheild_alpha_change = 3 sheild_alpha_change *= none_elapsed_time_shield -- draw_sheilds endif sheild_alpha += sheild_alpha_change if sheild_alpha > 255 sheild_alpha = 255 sheild_alpha_change = -1 sheild_alpha_change *= none_elapsed_time_shield endif if sheild_alpha < 0 sheild_alpha = 0 sheild_alpha_change = 100 draw_sheilds = 0 endif heading = ship_heading + 90.0 heading = ship_heading + 90.0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_TEMPEST_SHIELD_GLOW DRAW_SPRITE_WITH_ROTATION 17 ship_position_x ship_position_y 64.0 32.0 heading 220 220 220 sheild_alpha endif endif //DRAW EXPLOSIONS/// repeat 10 a IF explosions_flag[a] > 0 IF explosions_flag[a] = 1 explosions_flag[a] = 5 ENDIF ++ explosions_flag[a] IF explosions_flag[a] > 16 explosions_flag[a] = 0 ELSE DRAW_SPRITE explosions_flag[a] explosions_x[a] explosions_y[a] 32.0 32.0 255 255 255 255 ENDIF ENDIF endrepeat if do_warp_pickup = 1 warp_pickup_distance +=@ 1.0//PS2 = 2.0 LIMIT_ANGLE warp_pickup_heading warp_pickup_heading COS warp_pickup_heading x SIN warp_pickup_heading y x *= warp_pickup_distance y *= warp_pickup_distance lvar_float warp_pickup_x warp_pickup_y warp_pickup_x = x + 320.0 warp_pickup_y = y + 224.0 DRAW_SPRITE 18 warp_pickup_x warp_pickup_y 16.0 16.0 255 255 255 255 if player_dead_flag = 0 if DO_2D_RECTANGLES_COLLIDE warp_pickup_x warp_pickup_y 16.0 16.0 ship_position_x ship_position_y ship_collision_x ship_collision_y//64.0 32.0 ++ warp_pickup_collected if warp_pickup_collected = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_TEMPEST_PICKUP1 endif if warp_pickup_collected = 2 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_TEMPEST_PICKUP2 endif if warp_pickup_collected = 3 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_TEMPEST_PICKUP3 do_warp = 1 endif do_warp_pickup = 0 endif endif if not DO_2D_RECTANGLES_COLLIDE warp_pickup_x warp_pickup_y 16.0 16.0 320.0 224.0 640.0 448.0 do_warp_pickup = 0 endif endif if ship_health < 0 or ship_health = 0 ship_health = 0 if player_dead_flag = 0 player_dead_flag = 1 endif endif if ship_health < last_ship_health last_ship_health = ship_health ++ draw_sheilds endif gosub setup_text_none set_text_scale 0.6 2.6 display_text 150.0 35.0 NONE_01 //SCORE gosub setup_text_none set_text_scale 0.6 2.6 display_text_with_number 150.0 60.0 number none_score//320.0 50.0 gosub setup_text_none set_text_scale 0.6 2.6 display_text 500.0 35.0 NONE_02 //LIVES DRAW_SPRITE 20 470.2529 75.2723 48.0 24.0 255 255 255 255 gosub setup_text_none set_text_centre off set_text_scale 0.6 2.6 display_text_with_number 500.7283 60.0 NONE_03 ship_lives gosub setup_text_none set_text_scale 0.6 2.6 display_text 125.0 320.0 NONE_07 //LEVEL gosub setup_text_none set_text_scale 0.6 2.6 display_text_with_number 125.0 345.0 number none_level gosub setup_text_none set_text_scale 0.6 2.6 display_text 500.0 320.0 NONE_04 //HEALTH gosub setup_text_none set_text_scale 0.6 2.6 display_text_with_number 510.0 345.0 NONE_05 ship_health if display_bonus_score_timer > game_timer gosub setup_text_none set_text_colour 0 180 180 255 set_text_scale 0.5 1.5 display_text_with_number bonus_score_x bonus_score_y number display_bonus_score endif if player_dead_flag = 0 if do_warp > 0 gosub setup_text_none display_text 320.0 100.0 NONE_06//WARPING endif endif GOSUB RenderUranusBorder IF IS_BUTTON_PRESSED PAD1 TRIANGLE quit_game = 1 ENDIF if quit_game = 1 if none_score > none_hiscore[9] lvar_int letter input_letter letter = 10 input_letter = 0 GOTO none_hiscore_loop else GOTO none_frontend_loop endif endif GOSUB EnableArcadeWidgets // Keep the widgets enabled all the time. IF IS_WIDGET_RELEASED WIDGET_ARCADE_POWER_OFF GOTO mission_none_cleanup ENDIF IF IS_WIDGET_RELEASED WIDGET_ARCADE_RESET GOTO none_frontend_loop ENDIF GOTO none_game_loop///////////////////////////////////////////////////////////////////// none_hiscore_loop:////////////////////////////////////////////////////////////////////////// wait 0 draw_rect 320.0 224.0 640.0 448.0 0 0 0 255 GOSUB CollectAllInput // Determines abstracted directional movement. get_game_timer game_timer a = 9 while a > -1 if none_score > none_hiscore[a] if not a = 9 b = a + 1 none_hiscore[b] = none_hiscore[a] $none_letter1[b] = $none_letter1[a] $none_letter2[b] = $none_letter2[a] $none_letter3[b] = $none_letter3[a] endif none_hiscore[a] = none_score $none_letter1[a] = $none_char[36] $none_letter2[a] = $none_char[36] $none_letter3[a] = $none_char[36] new_high_score = a if a = 0 none_score = 0 endif else none_score = 0 endif -- a endwhile if new_high_score > -1 if input_letter = 0 $none_letter1[new_high_score] = $none_char[letter] $none_letter2[new_high_score] = $none_char[36] $none_letter3[new_high_score] = $none_char[36] endif if input_letter = 1 $none_letter2[new_high_score] = $none_char[letter] $none_letter3[new_high_score] = $none_char[36] endif if input_letter = 2 $none_letter3[new_high_score] = $none_char[letter] endif IF INPUT = INPUT_UP OR INPUT = INPUT_RIGHT if pad1_dpadup_pressed < game_timer IF letter < 36 ++ letter ELSE letter = 0 ENDIF pad1_dpadup_pressed = game_timer + 250 endif else pad1_dpadup_pressed = game_timer - 250 ENDIF IF INPUT = INPUT_DOWN OR INPUT = INPUT_LEFT if pad1_dpaddown_pressed < game_timer IF letter > 0 -- letter ELSE letter = 36 ENDIF pad1_dpaddown_pressed = game_timer + 250 endif else pad1_dpaddown_pressed = game_timer - 250 ENDIF IF IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON IF pad1_cross_pressed = 0 ++ input_letter ++ pad1_cross_pressed if input_letter = 3 new_high_score = -1 endif endif ELSE pad1_cross_pressed = 0 ENDIF ENDIF repeat 60 a dust_distance[a] += 8.0 COS dust_heading[a] x SIN dust_heading[a] y x *= dust_distance[a] y *= dust_distance[a] x += 320.0 y += 224.0 draw_rect x y 1.0 1.0 255 255 255 255 if x > 640.0 or x < 0.0 or y < 0.0 or y > 448.0 dust_distance[a] = 10.0 generate_random_float_in_range 0.0 360.0 dust_heading[a] endif endrepeat gosub setup_text_none set_text_font FONT_STANDARD display_text title_x title_y SPAC_06 //HISCORE lvar_float highscore_x highscore_y highscore_x = top_row_x highscore_y = top_row_y a = 0 while a < 10 highscore_x = top_row_x //first letter gosub setup_text_none set_text_centre off set_text_justify on set_text_font FONT_STANDARD if new_high_score = a set_text_colour 0 155 0 255 endif if $none_letter1[a] = $none_char[1] or $none_letter1[a] = $none_char[18] highscore_x += 8.0 endif display_text highscore_x highscore_y $none_letter1[a] if $none_letter1[a] = $none_char[1] or $none_letter1[a] = $none_char[18] highscore_x -= 8.0 endif highscore_x += next_letter_x //second letter gosub setup_text_none set_text_centre off set_text_justify on set_text_font FONT_STANDARD if new_high_score = a set_text_colour 0 155 0 255 endif if $none_letter2[a] = $none_char[1] or $none_letter2[a] = $none_char[18] highscore_x += 8.0 endif display_text highscore_x highscore_y $none_letter2[a] if $none_letter2[a] = $none_char[1] or $none_letter2[a] = $none_char[18] highscore_x -= 8.0 endif highscore_x += next_letter_x //third letter gosub setup_text_none set_text_centre off set_text_justify on set_text_font FONT_STANDARD if new_high_score = a set_text_colour 0 155 0 255 endif if $none_letter3[a] = $none_char[1] or $none_letter3[a] = $none_char[18] highscore_x += 8.0 endif display_text highscore_x highscore_y $none_letter3[a] if $none_letter3[a] = $none_char[1] or $none_letter3[a] = $none_char[18] highscore_x -= 8.0 endif highscore_x = top_row_x + score_dist_x //score gosub setup_text_none set_text_centre off set_text_right_justify on set_text_font FONT_STANDARD if new_high_score = a set_text_colour 0 155 0 255 endif display_text_with_number highscore_x highscore_y NUMBER none_hiscore[a]//HISCORE highscore_y += next_row_y ++ a endwhile GOSUB RenderUranusBorder if new_high_score = -1 IF IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON GOTO none_frontend_loop endif IF IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON IF pad1_cross_pressed = 0 ++ pad1_cross_pressed GOTO none_frontend_loop endif ELSE pad1_cross_pressed = 0 ENDIF endif GOSUB EnableArcadeWidgets // Keep the widgets enabled all the time. IF IS_WIDGET_RELEASED WIDGET_ARCADE_POWER_OFF GOTO mission_none_cleanup ENDIF IF IS_WIDGET_RELEASED WIDGET_ARCADE_RESET GOTO none_frontend_loop ENDIF GOTO none_hiscore_loop////////////////////////////////////////////////////////////////////////// setup_text_none://///////////////////////////////////////////////////////////////////////// //FONT_BANK = SA stialized font //FONT_STANDARD = italic normal font //FONT_SPACEAGE = large print spacege style //FONT_HEADING = GTA mission passed font set_text_colour 180 180 180 255 set_text_scale 1.0 3.0 set_text_right_justify off set_text_justify off set_text_centre on set_text_wrapx 640.0 set_text_proportional on set_text_background off set_text_dropshadow 0 0 0 0 180 set_text_font FONT_SPACEAGE return////////////////////////////////////////////////////////////////////////////////////// RenderUranusBorder: GOSUB DrawAspectCorrectingQuads // For aspect correction. DRAW_SPRITE 2 320.0 224.0 640.0 448.0 255 255 255 255 RETURN // *********************************** MISSION CLEANUP ************************************* mission_none_cleanup: WAIT 200 // Workaround for controller mappings issue jumping you right back into the game. REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_TEMPEST_TRACK_STOP CLEAR_THIS_PRINT BUSY SHUT_ALL_CHARS_UP FALSE flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // *** *** // *** Date: 18/06/2004 Time: 14:35:45 Name: Chris Rothwell *** // *** *** // *** Mission: DUALITY CONSOLE GAME *** // *** *** // ***************************************************************************************** GOSUB mission_dual_start GOSUB mission_dual_cleanup MISSION_END // ************************************ MISSION START ************************************** { mission_dual_start: flag_player_on_mission = 1 //REGISTER_MISSION_GIVEN SCRIPT_NAME dual WAIT 0 LOAD_MISSION_TEXT dual LVAR_INT mission_blip mission_flag mission_timer sequence_task players_car temp_int a b LVAR_FLOAT h x2 y2 z2 x3 y3 z3 speed temp_float USE_TEXT_COMMANDS TRUE SET_WIDGET_VALUE WIDGET_ARCADE_JOYSTICK 3.0 // Set the right colored images, each arcade game has unique colors. SET_WIDGET_VALUE WIDGET_ARCADE_BUTTON 3.0 REMOVE_TEXTURE_DICTIONARY LOAD_TEXTURE_DICTIONARY ld_spac SHUT_ALL_CHARS_UP TRUE get_char_coordinates scplayer x y z clear_area x y z 50.0 0 //SET_MUSIC_DOES_FADE FALSE CONST_INT BACKGROUND 1 CONST_INT STARLAYER 2 CONST_INT TV_BORDER 3 CONST_INT PLAYER_SHIP 4 CONST_INT THRUSTERS 5 CONST_INT DARK_STAR 6 CONST_INT LIGHT_STAR 7 CONST_INT EXPLOSION1 8 CONST_INT EXPLOSION2 9 CONST_INT EXPLOSION3 10 CONST_INT EXPLOSION4 11 CONST_INT WHITE_S 12 CONST_INT SHOT_BALL 13 CONST_INT HEALTH_BAR 14 CONST_INT POWER_BAR 15 CONST_INT DUALITY_LOGO 16 CONST_INT BLACKSPRITE 17 LOAD_SPRITE BACKGROUND backgnd LOAD_SPRITE STARLAYER layer LOAD_SPRITE TV_BORDER cabcorn LOAD_SPRITE PLAYER_SHIP rockshp LOAD_SPRITE THRUSTERS thrust LOAD_SPRITE DARK_STAR dark LOAD_SPRITE LIGHT_STAR light LOAD_SPRITE EXPLOSION1 ex1 LOAD_SPRITE EXPLOSION2 ex2 LOAD_SPRITE EXPLOSION3 ex3 LOAD_SPRITE EXPLOSION4 ex4 LOAD_SPRITE WHITE_S white LOAD_SPRITE SHOT_BALL shoot LOAD_SPRITE HEALTH_BAR healthlc LOAD_SPRITE POWER_BAR power LOAD_SPRITE DUALITY_LOGO dualitylc LOAD_SPRITE BLACKSPRITE black load_mission_audio 4 SOUND_BANK_DUAL while not has_mission_audio_loaded 4 wait 0 endwhile REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DUAL_TRACK_START lvar_int random_menu generate_random_int_in_range 0 3 random_menu switch random_menu case 0 //top lvar_float x_pos[12] y_pos[12] x_scale[12] y_scale[12] x_pos[0] = 160.0 //BLACKSPRITE y_pos[0] = 224.0 x_scale[0] = 320.0 y_scale[0] = 500.0 x_pos[1] = 480.0 //WHITE_S y_pos[1] = 224.0 x_scale[1] = 320.0 y_scale[1] = 500.0 x_pos[2] = 320.0 //DUALITY_LOGO y_pos[2] = 156.0 x_scale[2] = 256.0 y_scale[2] = 128.0 x_pos[3] = 452.2068 //DARK_STAR y_pos[3] = 90.0 x_scale[3] = 32.0 y_scale[3] = 32.0 x_pos[4] = 166.5889 //LIGHT_STAR y_pos[4] = 216.6436 x_scale[4] = 32.0 y_scale[4] = 32.0 x_pos[5] = 262.0 //PLAY y_pos[5] = 280.0 x_scale[5] = 1.0 y_scale[5] = 3.0 x_pos[6] = 370.0 //QUIT x_scale[6] = 0.9 y_scale[6] = 3.0 y_pos[7] = 322.0 x_scale[7] = 320.0 y_scale[7] = 229.7492 x_pos[8] = 284.4967 //SELECTION - STAR - WHITE TOP LEFT y_pos[8] = 294.9901 x_scale[8] = 320.0 y_scale[8] = 320.0 x_pos[9] = 351.9814 //SELECTION - STAR - DARK BOTTOM RIGHT y_pos[9] = 336.8015 break case 1 //centred x_pos[0] = 160.0 y_pos[0] = 224.0 x_scale[0] = 320.0 y_scale[0] = 500.0 x_pos[1] = 480.0 y_pos[1] = 224.0 x_scale[1] = 320.0 y_scale[1] = 500.0 x_pos[2] = 320.0 y_pos[2] = 219.5610 x_scale[2] = 256.0 y_scale[2] = 128.0 x_pos[3] = 452.2068 y_pos[3] = 215.0997 x_scale[3] = 32.0 y_scale[3] = 32.0 x_pos[4] = 166.5889 y_pos[4] = 216.0905 x_scale[4] = 32.0 y_scale[4] = 32.0 x_pos[5] = 265.0504 y_pos[5] = 70.0389 x_scale[5] = 1.0 y_scale[5] = 3.0 x_pos[6] = 370.0 x_scale[6] = 0.9 y_scale[6] = 3.0 y_pos[7] = 322.0 x_scale[7] = 320.0 y_scale[7] = 91.2330 x_pos[8] = 284.4967 y_pos[8] = 84.2511 x_scale[8] = 320.0 y_scale[8] = 296.2502 x_pos[9] = 351.9814 y_pos[9] = 336.8015 break case 2 //bottom x_pos[0] = 160.0 y_pos[0] = 224.0 x_scale[0] = 320.0 y_scale[0] = 500.0 x_pos[1] = 480.0 y_pos[1] = 224.0 x_scale[1] = 320.0 y_scale[1] = 500.0 x_pos[2] = 320.0 y_pos[2] = 296.0475 x_scale[2] = 256.0 y_scale[2] = 128.0 x_pos[3] = 464.3830 y_pos[3] = 354.7318 x_scale[3] = 32.0 y_scale[3] = 32.0 x_pos[4] = 166.5889 y_pos[4] = 216.0905 x_scale[4] = 32.0 y_scale[4] = 32.0 x_pos[5] = 265.0504 y_pos[5] = 70.0389 x_scale[5] = 1.0 y_scale[5] = 3.0 x_pos[6] = 370.0 x_scale[6] = 0.9 y_scale[6] = 3.0 y_pos[7] = 119.7153 x_scale[7] = 320.0 y_scale[7] = 135.5804 x_pos[8] = 284.4967 y_pos[8] = 84.2511 x_scale[8] = 320.0 y_scale[8] = 320.0 x_pos[9] = 351.9814 y_pos[9] = 134.4938 break endswitch x_pos[10] = 33.8609 y_pos[10] = 18.1114 x_scale[10] = 230.0 y_scale[10] = 60.3475 x_pos[11] = 38.1753 y_pos[11] = 20.4681 x_scale[11] = 0.5014 y_scale[11] = 1.8889 lvar_int menu_selection menu_selection = 0 lvar_int pad1_cross_pressed pad1_dpadleft_pressed pad1_dpadright_pressed pad1_dpadup_pressed pad1_dpaddown_pressed pad1_cross_pressed = 1 pad1_dpadleft_pressed = 1 pad1_dpadright_pressed = 1 pad1_dpadup_pressed = 1 pad1_dpaddown_pressed = 1 lvar_text_label $dual_char[37] $dual_char[0] = DUAL_0 // 0 $dual_char[1] = DUAL_1 // 1 $dual_char[2] = DUAL_2 // 2 $dual_char[3] = DUAL_3 // 3 $dual_char[4] = DUAL_4 // 4 $dual_char[5] = DUAL_5 // 5 $dual_char[6] = DUAL_6 // 6 $dual_char[7] = DUAL_7 // 7 $dual_char[8] = DUAL_8 // 8 $dual_char[9] = DUAL_9 // 9 $dual_char[10] = DUAL_AA// A $dual_char[11] = DUAL_B // B $dual_char[12] = DUAL_C // C $dual_char[13] = DUAL_D // D $dual_char[14] = DUAL_E // E $dual_char[15] = DUAL_F // F $dual_char[16] = DUAL_G // G $dual_char[17] = DUAL_H // H $dual_char[18] = DUAL_I // I $dual_char[19] = DUAL_J // J $dual_char[20] = DUAL_K // K $dual_char[21] = DUAL_L // L $dual_char[22] = DUAL_M // M $dual_char[23] = DUAL_N // N $dual_char[24] = DUAL_O // O $dual_char[25] = DUAL_P // P $dual_char[26] = DUAL_Q // Q $dual_char[27] = DUAL_R // R $dual_char[28] = DUAL_S // S $dual_char[29] = DUAL_T // T $dual_char[30] = DUAL_U // U $dual_char[31] = DUAL_V // V $dual_char[32] = DUAL_W // W $dual_char[33] = DUAL_X // X $dual_char[34] = DUAL_Y // Y $dual_char[35] = DUAL_Z // Z $dual_char[36] = DUAL_FS// . var_int played_dual_before if played_dual_before = 0 var_int dark_hiscore[10] dark_hiscore[0] = -10000 dark_hiscore[1] = -7500 dark_hiscore[2] = -5000 dark_hiscore[3] = -2500 dark_hiscore[4] = -1000 dark_hiscore[5] = -750 dark_hiscore[6] = -500 dark_hiscore[7] = -250 dark_hiscore[8] = -175 dark_hiscore[9] = -100 var_int light_hiscore[10] light_hiscore[0] = 10000 light_hiscore[1] = 7500 light_hiscore[2] = 5000 light_hiscore[3] = 2500 light_hiscore[4] = 1000 light_hiscore[5] = 750 light_hiscore[6] = 500 light_hiscore[7] = 250 light_hiscore[8] = 175 light_hiscore[9] = 100 var_text_label $dark_letter1[10] $dark_letter2[10] $dark_letter3[10] $dark_letter1[0] = $dual_char[13] $dark_letter2[0] = $dual_char[19] $dark_letter3[0] = $dual_char[36] $dark_letter1[1] = $dual_char[20] $dark_letter2[1] = $dual_char[27] $dark_letter3[1] = $dual_char[34] $dark_letter1[2] = $dual_char[28] $dark_letter2[2] = $dual_char[18] $dark_letter3[2] = $dual_char[28] $dark_letter1[3] = $dual_char[32] $dark_letter2[3] = $dual_char[13] $dark_letter3[3] = $dual_char[34] $dark_letter1[4] = $dual_char[13] $dark_letter2[4] = $dual_char[10] $dark_letter3[4] = $dual_char[23] $dark_letter1[5] = $dual_char[21] $dark_letter2[5] = $dual_char[27] $dark_letter3[5] = $dual_char[16] $dark_letter1[6] = $dual_char[23] $dark_letter2[6] = $dual_char[24] $dark_letter3[6] = $dual_char[23] $dark_letter1[7] = $dual_char[16] $dark_letter2[7] = $dual_char[10] $dark_letter3[7] = $dual_char[35] $dark_letter1[8] = $dual_char[1] $dark_letter2[8] = $dual_char[0] $dark_letter3[8] = $dual_char[1] $dark_letter1[9] = $dual_char[19] $dark_letter2[9] = $dual_char[30] $dark_letter3[9] = $dual_char[13] var_text_label $light_letter1[10] $light_letter2[10] $light_letter3[10] $light_letter1[0] = $dual_char[10] $light_letter2[0] = $dual_char[13] $light_letter3[0] = $dual_char[35] $light_letter1[1] = $dual_char[12] $light_letter2[1] = $dual_char[10] $light_letter3[1] = $dual_char[23] $light_letter1[2] = $dual_char[18] $light_letter2[2] = $dual_char[22] $light_letter3[2] = $dual_char[34] $light_letter1[3] = $dual_char[32] $light_letter2[3] = $dual_char[18] $light_letter3[3] = $dual_char[21] $light_letter1[4] = $dual_char[13] $light_letter2[4] = $dual_char[11] $light_letter3[4] = $dual_char[25] $light_letter1[5] = $dual_char[13] $light_letter2[5] = $dual_char[10] $light_letter3[5] = $dual_char[31] $light_letter1[6] = $dual_char[13] $light_letter2[6] = $dual_char[24] $light_letter3[6] = $dual_char[13] $light_letter1[7] = $dual_char[23] $light_letter2[7] = $dual_char[15] $light_letter3[7] = $dual_char[36] $light_letter1[8] = $dual_char[20] $light_letter2[8] = $dual_char[22] $light_letter3[8] = $dual_char[11] $light_letter1[9] = $dual_char[28] $light_letter2[9] = $dual_char[19] $light_letter3[9] = $dual_char[21] played_dual_before = 1 endif lvar_int new_high_score new_high_score = -1 lvar_int highscore_table highscore_table = 0 lvar_float title_x title_y title_x = 321.4137 title_y = 58.2432 lvar_float top_row_x top_row_y top_row_x = 201.2250 top_row_y = 88.9168 lvar_float next_letter_x score_dist_x next_row_y next_letter_x = 29.7800 score_dist_x = 230.5296 next_row_y = 28.5713 //lvar_int duality_ending duality_ending_timer //duality_ending = 0 //duality_ending_timer = 0 dual_frontend_loop:////////////////////////////////////////////////////////////////////////// wait 0 do_fade 0 fade_in get_game_timer game_timer dual_score = 0 GOSUB CollectAllInput // Determines abstracted directional movement. IF INPUT = INPUT_RIGHT WRITE_LOG_FLOAT 1.0 1.0 1.0 "Right direction pressed" if pad1_dpadright_pressed = 0 if menu_selection = 0//PLAY menu_selection = 1//QUIT REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DUAL_MENU_DESELECT else if menu_selection = 2//HISCORE - WHITE menu_selection = 3//HISCORE - BLACKSPRITE REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DUAL_MENU_DESELECT endif endif endif pad1_dpadright_pressed = 1 else IF INPUT = INPUT_LEFT if pad1_dpadright_pressed = 0 if menu_selection = 1//QUIT menu_selection = 0//PLAY REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DUAL_MENU_DESELECT else if menu_selection = 3//HISCORE - BLACKSPRITE menu_selection = 2//HISCORE - WHITE REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DUAL_MENU_DESELECT endif endif endif pad1_dpadleft_pressed = 1 else IF INPUT = INPUT_UP if pad1_dpadup_pressed = 0 if menu_selection = 2//HISCORE - WHITE menu_selection = 0//PLAY REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DUAL_MENU_DESELECT else if menu_selection = 3//HISCORE - BLACKSPRITE menu_selection = 1//QUIT REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DUAL_MENU_DESELECT endif endif endif pad1_dpadup_pressed = 1 else IF INPUT = INPUT_DOWN if pad1_dpaddown_pressed = 0 if menu_selection = 0//PLAY menu_selection = 2//HISCORE - WHITE REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DUAL_MENU_DESELECT else if menu_selection = 1//QUIT menu_selection = 3//HISCORE - BLACKSPRITE REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DUAL_MENU_DESELECT endif endif endif pad1_dpaddown_pressed = 1 else pad1_dpaddown_pressed = 0 endif pad1_dpadup_pressed = 0 endif pad1_dpadleft_pressed = 0 endif pad1_dpadright_pressed = 0 endif DRAW_SPRITE BLACKSPRITE x_pos[0] y_pos[0] x_scale[0] y_scale[0] 255 255 255 255 DRAW_SPRITE WHITE_S x_pos[1] y_pos[1] x_scale[1] y_scale[1] 255 255 255 255 DRAW_SPRITE DUALITY_LOGO x_pos[2] y_pos[2] 256.0 128.0 255 255 255 255 DRAW_SPRITE DARK_STAR x_pos[3] y_pos[3] 32.0 32.0 150 150 150 255 DRAW_SPRITE LIGHT_STAR x_pos[4] y_pos[4] 32.0 32.0 255 255 255 255 // if duality_ending = 0 gosub setup_text_dual set_text_centre OFF set_text_right_justify on set_text_colour 255 255 255 255 if current_language = LANGUAGE_SPANISH set_text_scale x_scale[6] y_scale[6] else set_text_scale x_scale[5] y_scale[5] endif display_text x_pos[5] y_pos[5] SPAC_04 //PLAY gosub setup_text_dual set_text_centre OFF set_text_justify on set_text_colour 0 0 0 255 if current_language = LANGUAGE_SPANISH set_text_scale x_scale[6] y_scale[6] else set_text_scale x_scale[5] y_scale[5] endif display_text x_pos[6] y_pos[5] SPAC_05 //QUIT gosub setup_text_dual set_text_centre OFF set_text_right_justify on set_text_colour 255 255 255 255 if current_language = LANGUAGE_SPANISH set_text_scale x_scale[6] y_scale[6] else set_text_scale x_scale[5] y_scale[5] endif display_text x_pos[5] y_pos[7] SPAC_06 //HISCORE gosub setup_text_dual set_text_centre OFF set_text_justify on set_text_colour 0 0 0 255 if current_language = LANGUAGE_SPANISH set_text_scale x_scale[6] y_scale[6] else set_text_scale x_scale[5] y_scale[5] endif display_text x_pos[6] y_pos[7] SPAC_06 //HISCORE if menu_selection = 0//PLAY DRAW_SPRITE LIGHT_STAR x_pos[8] y_pos[8] 16.0 16.0 255 255 255 255 endif if menu_selection = 1//QUIT DRAW_SPRITE DARK_STAR x_pos[9] y_pos[8] 16.0 16.0 255 255 255 255 endif if menu_selection = 2//HISCORE - WHITE DRAW_SPRITE LIGHT_STAR x_pos[8] y_pos[9] 16.0 16.0 255 255 255 255 endif if menu_selection = 3//HISCORE - BLACKSPRITE DRAW_SPRITE DARK_STAR x_pos[9] y_pos[9] 16.0 16.0 255 255 255 255 endif GOSUB RenderDualityBorder IF IS_BUTTON_PRESSED PAD1 CROSS OR IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON IF pad1_cross_pressed = 0 ++ pad1_cross_pressed REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DUAL_MENU_SELECT if menu_selection = 0//PLAY GOTO initialise_game_variables endif if menu_selection = 1//QUIT REMOVE_TEXTURE_DICTIONARY set_player_control player1 on do_fade 0 fade_out wait 0 do_fade 500 fade_in return endif if menu_selection = 2//HISCORE - WHITE generate_random_float_in_range -15.0 15.0 temp_float last_ship_position_x = temp_float generate_random_float_in_range -15.0 15.0 temp_float last_ship_position_y = temp_float ship_position_x = 0.0 ship_position_y = 0.0 highscore_table = 1 GOTO dual_hiscore_loop endif if menu_selection = 3//HISCORE - BLACKSPRITE generate_random_float_in_range -15.0 15.0 temp_float last_ship_position_x = temp_float generate_random_float_in_range -15.0 15.0 temp_float last_ship_position_y = temp_float ship_position_x = 0.0 ship_position_y = 0.0 highscore_table = 0 GOTO dual_hiscore_loop endif ENDIF ELSE pad1_cross_pressed = 0 ENDIF gosub setup_text_dual set_text_centre OFF set_text_wrapx x_scale[10] set_text_font FONT_STANDARD set_text_scale x_scale[11] y_scale[11] // At any time, the player can press the power or reset buttons to exit or restart the game. GOSUB EnableArcadeWidgets // Keep the widgets enabled all the time. IF IS_WIDGET_RELEASED WIDGET_ARCADE_POWER_OFF GOTO mission_dual_cleanup ENDIF IF IS_WIDGET_RELEASED WIDGET_ARCADE_RESET GOTO dual_frontend_loop ENDIF GOTO dual_frontend_loop////////////////////////////////////////////////////////////////////////// initialise_game_variables:////////////////////////////////////////////////////////////////////////// LVAR_FLOAT background_x[4] background_y[4] layer_x layer_y background_x[0] = 0.0 background_y[0] = 0.0 background_x[1] = 0.0 background_y[1] = 0.0 LVAR_FLOAT ship_position_x ship_position_y ship_position_x = 0.0 ship_position_y = 0.0 VAR_FLOAT ship_velocity_x ship_velocity_y ship_velocity_x = 0.0 ship_velocity_y = 0.0 LVAR_FLOAT ship_forces_x ship_forces_y ship_forces_x = 0.0 ship_forces_y = 0.0 LVAR_FLOAT ship_heading ship_heading = 0.1 LVAR_FLOAT ship_mass_kg ship_mass_kg = 100.0 LVAR_FLOAT last_ship_position_x last_ship_position_y last_ship_position_x = 0.0 last_ship_position_y = 0.0 LVAR_INT draw_thruster draw_thruster = 0 LVAR_FLOAT step_x[5] step_y[4] step_x[0] = -512.0 step_x[1] = -256.0 step_x[2] = 0.0 step_x[3] = 256.0 step_x[4] = 512.0 step_y[0] = -384.0 step_y[1] = -128.0 step_y[2] = 128.0 step_y[3] = 384.0 LVAR_FLOAT gravity_position_x[10] gravity_position_y[10] gravity_mass[10] gravity_position_x[0] = 200.0 gravity_position_y[0] = 200.0 gravity_mass[0] = -200000000000.0 gravity_position_x[1] = -300.0 gravity_position_y[1] = -300.0 gravity_mass[1] = -200000000000.0 gravity_position_x[2] = -300.0 gravity_position_y[2] = 300.0 gravity_mass[2] = -200000000000.0 gravity_position_x[3] = 300.0 gravity_position_y[3] = -300.0 gravity_mass[3] = -200000000000.0 gravity_position_x[4] = 0.1 gravity_position_y[4] = 300.0 gravity_mass[4] = -200000000000.0 gravity_position_x[5] = 0.1 gravity_position_y[5] = -300.0 gravity_mass[5] = 200000000000.0 gravity_position_x[6] = 300.0 gravity_position_y[6] = 0.1 gravity_mass[6] = 200000000000.0 gravity_position_x[7] = -300.0 gravity_position_y[7] = 0.1 gravity_mass[7] = 200000000000.0 gravity_position_x[8] = 0.1 gravity_position_y[8] = 500.0 gravity_mass[8] = 200000000000.0 gravity_position_x[9] = 0.1 gravity_position_y[9] = -500.0 gravity_mass[9] = 200000000000.0 LVAR_INT total_gravity_wells total_gravity_wells = 10 LVAR_FLOAT ship_scale ship_scale = 32.0 lvar_float universal_gravity universal_gravity = 6.67259 * 0.1//UNIVERSAL GRAVITY CONSTANT universal_gravity *= 0.1 universal_gravity *= 0.1 universal_gravity *= 0.1 universal_gravity *= 0.1 universal_gravity *= 0.1 LVAR_FLOAT power_pill_x[20] power_pill_y[20] a = 0 WHILE a < 20 power_pill_x[a] = 1000.0 power_pill_y[a] = 1000.0 ++ a ENDWHILE LVAR_INT explosions_flag[10] a = 0 WHILE a < 10 explosions_flag[a] = 0 ++ a ENDWHILE LVAR_INT dual_score dual_score = 0 set_player_control player1 off lvar_float ship_power ship_health ship_power = 100.0 ship_health = 100.0 lvar_float tile_size tile_size = 256.0 lvar_int quit_game quit_game = 0 GET_GAME_TIMER game_timer lvar_int help_prompt_timer help_prompt_timer = game_timer + 4000 lvar_int ship_dead_timer ship_dead_timer = game_timer lvar_int pad1_triangle_pressed pad1_triangle_pressed = 0 dual_game_loop:////////////////////////////////////////////////////////////////////////// GOSUB CollectAllInput // Determines abstracted directional movement. LVAR_INT game_timer_last game_timer_last = game_timer WAIT 0 //THIS GAME NEEDS ITS OWN TIME SYSTEM//// GET_GAME_TIMER game_timer LVAR_INT frame_time frame_time = game_timer - game_timer_last LVAR_FLOAT time_step_fl time_step_fl =# frame_time time_step_fl /= 1.5 time_step_fl /= 1000.0 //RESET FORCES ACTING ON SHIP FOR THIS FRAME//// ship_forces_x = 0.0 ship_forces_y = 0.0 //BUILD UP SHIP POWER SLOWLY//// ship_power +=@ 0.06 if ship_power > 100.0 ship_power = 100.0 endif //CONTROL CHECKS//// IF IS_BUTTON_PRESSED PAD1 TRIANGLE if pad1_triangle_pressed = 1 pad1_triangle_pressed = 0 quit_game = 1 endif else pad1_triangle_pressed = 1 ENDIF LVAR_FLOAT fTempFloat fTempFloat =# INPUT_ANALOG_LEFT_RIGHT // Convert int -127-127 range to -5.0f-5.0f range. fTempFloat *= 0.03937 ship_heading +=@ fTempFloat //CALCULATE GRAVITY WELLS//// a = 0 WHILE a < total_gravity_wells //FORCE_TO_APPLY = (6.67259 10-11 * (SHIP_MASS * GRAVITY_MASS)) / (DISTANCE\2) GET_DISTANCE_BETWEEN_COORDS_2D ship_position_x ship_position_y gravity_position_x[a] gravity_position_y[a] distance lvar_int kill_gravity_well kill_gravity_well = 0 if distance > 700.0 kill_gravity_well = 1 endif if distance < 100.0 if DO_2D_RECTANGLES_COLLIDE ship_position_x ship_position_y 32.0 32.0 gravity_position_x[a] gravity_position_y[a] 32.0 32.0 if gravity_mass[a] > 0.0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DUAL_TOUCH_DARK ship_health -=@ 1.0 if ship_health < 0.0 ship_health = 0.0 b = 0 WHILE b < 10 IF explosions_flag[b] = 0 explosions_x[b] = ship_position_x explosions_y[b] = ship_position_y ++ explosions_flag[b] b = 9 ENDIF ++ b ENDWHILE ship_dead_timer = game_timer + 3000 endif else REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DUAL_TOUCH_LIGHT ship_health +=@ 1.0 if ship_health > 100.0 ship_health = 100.0 endif endif endif endif b = 0 WHILE b < 10 lvar_int projectile_life[10] if projectile_life[b] > game_timer if DO_2D_RECTANGLES_COLLIDE projectile_position_x[b] projectile_position_y[b] 12.0 12.0 gravity_position_x[a] gravity_position_y[a] 32.0 32.0 kill_gravity_well = 2 if ship_dead_timer < game_timer IF gravity_mass[a] > 0.0 dual_score += 10 ELSE dual_score -= 10 ENDIF endif b = 9 endif endif ++ b ENDWHILE if kill_gravity_well > 0 IF kill_gravity_well = 2 b = 0 WHILE b < 10 IF explosions_flag[b] = 0 LVAR_FLOAT explosions_x[10] explosions_y[10] explosions_x[b] = gravity_position_x[a] explosions_y[b] = gravity_position_y[a] ++ explosions_flag[b] b = 9 ENDIF ++ b ENDWHILE ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int IF temp_int = 0 GENERATE_RANDOM_FLOAT_IN_RANGE 340.0 700.0 x GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int IF temp_int = 0 x *= -1.0 ENDIF GENERATE_RANDOM_FLOAT_IN_RANGE -700.0 700.0 y else GENERATE_RANDOM_FLOAT_IN_RANGE -700.0 700.0 x GENERATE_RANDOM_FLOAT_IN_RANGE 340.0 700.0 y GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int IF temp_int = 0 y *= -1.0 ENDIF endif gravity_position_x[a] = ship_position_x + x gravity_position_y[a] = ship_position_y + y GET_DISTANCE_BETWEEN_COORDS_2D ship_position_x ship_position_y gravity_position_x[a] gravity_position_y[a] distance else temp_float = gravity_mass[a] * ship_mass_kg temp_float *= universal_gravity z = distance * distance temp_float /= z LVAR_FLOAT vector_x vector_y vector_x = gravity_position_x[a] - ship_position_x vector_y = gravity_position_y[a] - ship_position_y vector_x /= distance vector_y /= distance x2 = vector_x * temp_float y2 = vector_y * temp_float ship_scale = 32.0 IF x2 > 50000.0 x2 = 50000.0 //ship_scale = 64.0 ENDIF IF x2 < -50000.0 x2 = -50000.0 //ship_scale = 64.0 ENDIF IF y2 > 50000.0 y2 = 50000.0 //ship_scale = 64.0 ENDIF IF y2 < -50000.0 y2 = -50000.0 //ship_scale = 64.0 ENDIF ship_forces_x += x2 ship_forces_y += y2 endif ++ a ENDWHILE if ship_dead_timer < game_timer IF IS_BUTTON_PRESSED PAD1 CROSS // Thrusters. OR INPUT = INPUT_UP IF ship_power >= 0.2 //THIS TURNS A HEADING IN DEGREES INTO A VECTOR SIN ship_heading x COS ship_heading y //ADD THE FORCE OF THE THRUSTERS TO THE TOTAL FORCES ACTING ON THE SHIP x *= -20000.0 y *= 20000.0 ship_forces_x += x ship_forces_y += y draw_thruster += 50 IF draw_thruster > 200 draw_thruster = 200 ENDIF REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DUAL_THRUST ship_power -=@ 0.2 ENDIF ELSE draw_thruster -= 20 IF draw_thruster < 0 draw_thruster = 0 ENDIF ENDIF IF ship_power > 0.1 OR ship_power = 0.1 IF IS_BUTTON_PRESSED PAD1 RIGHTSHOULDER1 //THIS TURNS A HEADING IN DEGREES INTO A VECTOR temp_float = ship_heading temp_float += 90.0 LIMIT_ANGLE temp_float temp_float SIN temp_float x COS temp_float y //ADD THE FORCE OF THE THRUSTERS TO THE TOTAL FORCES ACTING ON THE SHIP x *= -6000.0 y *= 6000.0 ship_forces_x += x ship_forces_y += y ship_power -=@ 0.1 ENDIF ENDIF IF ship_power > 0.1 OR ship_power = 0.1 IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1 //THIS TURNS A HEADING IN DEGREES INTO A VECTOR temp_float = ship_heading temp_float -= 90.0 LIMIT_ANGLE temp_float temp_float SIN temp_float x COS temp_float y //ADD THE FORCE OF THE THRUSTERS TO THE TOTAL FORCES ACTING ON THE SHIP x *= -6000.0 y *= 6000.0 ship_forces_x += x ship_forces_y += y ship_power -=@ 0.1 ENDIF ENDIF //A VISCOUS DRAG FORCE IS APPLIED BY MULTIPLYING A DAMPING CONSTANT, 40.0, WITH //THE VELOCITY OF THE SHIP AND SUBTRACTING THAT FORCE FROM THE ACCUMULATOR. LVAR_FLOAT drag_x drag_y drag_x = ship_velocity_x * 40.0 drag_y = ship_velocity_y * 40.0 ship_forces_x -= drag_x ship_forces_y -= drag_y // DETERMINE THE NEW VELOCITY FOR THE SHIP //ship_velocity_x += ((frame_time/1000) * (ship_forces_x * ship_mass_kg)) //ship_velocity_y += ((frame_time/1000) * (ship_forces_y * ship_mass_kg)) ship_forces_x /= ship_mass_kg ship_forces_y /= ship_mass_kg ship_forces_x *= time_step_fl ship_forces_y *= time_step_fl ship_velocity_x += ship_forces_x ship_velocity_y += ship_forces_y IF ship_power > 1.0 OR ship_power = 1.0 IF IS_BUTTON_PRESSED PAD1 CIRCLE OR IS_WIDGET_PRESSED WIDGET_ARCADE_BUTTON // Fire shots. lvar_int shoot_timer if shoot_timer < game_timer gosub create_projectile REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DUAL_SHOOT shoot_timer = game_timer + 250 ship_power -=@ 1.0 if dual_score > 0 -- dual_score endif endif ENDIF ENDIF endif // STORE THE OLD POSITION last_ship_position_x = ship_position_x last_ship_position_y = ship_position_y // SET THE NEW POSITION OF THE SHIP //ship_position_x += (frame_time/1000) * ship_velocity_x //ship_position_y += (frame_time/1000) * ship_velocity_y IF ship_velocity_x > 300.0 ship_velocity_x = 300.0 ENDIF IF ship_velocity_x < -300.0 ship_velocity_x = -300.0 ENDIF IF ship_velocity_y > 300.0 ship_velocity_y = 300.0 ENDIF IF ship_velocity_y < -300.0 ship_velocity_y = -300.0 ENDIF x = time_step_fl * ship_velocity_x y = time_step_fl * ship_velocity_y ship_position_x += x ship_position_y += y //DRAW PARALAX SCROLLING LAYERS/// a = 0 while a < 3 x = last_ship_position_x - ship_position_x y = last_ship_position_y - ship_position_y x *= 0.6 y *= 0.6 temp_float =# a temp_float += 1.0 temp_float *= 0.3 x *= temp_float y *= temp_float tile_size = 512.0 * temp_float if a = 0 x /= 2.0 y /= 2.0 background_x[a] += x background_y[a] += y else background_x[a] += x background_y[a] += y endif temp_float = tile_size / 2.0 IF background_x[a] > temp_float background_x[a] -= tile_size ENDIF temp_float = tile_size * -1.0 IF background_x[a] < temp_float background_x[a] += tile_size ENDIF temp_float = tile_size * -1.0 IF background_y[a] > temp_float background_y[a] -= tile_size ENDIF temp_float = tile_size * -1.0 IF background_y[a] < temp_float background_y[a] += tile_size ENDIF temp_float = 640.0 + tile_size lvar_float x_tiles_fl x_tiles_fl = temp_float / tile_size lvar_int x_tiles x_tiles =# x_tiles_fl temp_float =# x_tiles x_tiles_fl -= temp_float if x_tiles_fl > 0.0 ++ x_tiles endif temp_float = 448.0 + tile_size lvar_float y_tiles_fl y_tiles_fl = temp_float / tile_size lvar_int y_tiles y_tiles =# y_tiles_fl temp_float =# y_tiles y_tiles_fl -= temp_float if y_tiles_fl > 0.0 ++ y_tiles endif ++ x_tiles ++ y_tiles layer_x = background_x[a] layer_y = background_y[a] LVAR_INT x_index y_index y_index = 0 WHILE y_index < y_tiles x_index = 0 WHILE x_index < x_tiles if a = 0 DRAW_SPRITE BACKGROUND layer_x layer_y tile_size tile_size 150 150 150 255//256.0 256.0 255 255 255 255 else DRAW_SPRITE STARLAYER layer_x layer_y tile_size tile_size 150 150 150 255//256.0 256.0 255 255 255 255 endif layer_x += tile_size ++ x_index ENDWHILE layer_x = background_x[a] layer_y += tile_size ++ y_index ENDWHILE ++ a endwhile //DRAW GRAVITY WELLS/// a = 0 WHILE a < total_gravity_wells x = gravity_position_x[a] - ship_position_x y = gravity_position_y[a] - ship_position_y x += 320.0 y += 224.0 IF gravity_mass[a] > 0.0 DRAW_SPRITE DARK_STAR x y 32.0 32.0 255 255 255 255 ELSE DRAW_SPRITE LIGHT_STAR x y 32.0 32.0 255 255 255 255 ENDIF ++ a ENDWHILE //GENERATE AND DRAW POWER PILLS a = 0 WHILE a < 20 GET_DISTANCE_BETWEEN_COORDS_2D ship_position_x ship_position_y power_pill_x[a] power_pill_y[a] distance IF distance > 600.0 OR DO_2D_RECTANGLES_COLLIDE ship_position_x ship_position_y 32.0 32.0 power_pill_x[a] power_pill_y[a] 18.0 18.0 IF DO_2D_RECTANGLES_COLLIDE ship_position_x ship_position_y 32.0 32.0 power_pill_x[a] power_pill_y[a] 18.0 18.0 if ship_dead_timer < game_timer //PLAY PICKUP SOUND if a < 10 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DUAL_PICKUP_LIGHT dual_score += 5 else REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DUAL_PICKUP_DARK dual_score -= 5 endif ship_power += 25.0 if ship_power > 100.0 ship_power = 100.0 endif endif ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int IF temp_int = 0 GENERATE_RANDOM_FLOAT_IN_RANGE 340.0 700.0 x GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int IF temp_int = 0 x *= -1.0 ENDIF GENERATE_RANDOM_FLOAT_IN_RANGE -700.0 700.0 y GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int else GENERATE_RANDOM_FLOAT_IN_RANGE -700.0 700.0 x GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int GENERATE_RANDOM_FLOAT_IN_RANGE 340.0 700.0 y GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int IF temp_int = 0 y *= -1.0 ENDIF endif power_pill_x[a] = ship_position_x + x power_pill_y[a] = ship_position_y + y endif x = power_pill_x[a] - ship_position_x y = power_pill_y[a] - ship_position_y x += 320.0 y += 224.0 if a < 10 DRAW_SPRITE LIGHT_STAR x y 16.0 16.0 255 255 255 255 else DRAW_SPRITE DARK_STAR x y 16.0 16.0 255 255 255 255 endif ++ a ENDWHILE //DRAW EXPLOSIONS/// a = 0 WHILE a < 10 IF explosions_flag[a] > 0 x = explosions_x[a] - ship_position_x y = explosions_y[a] - ship_position_y x += 320.0 y += 224.0 IF explosions_flag[a] = 1 LVAR_INT explosions_timer[10] explosions_timer[a] = game_timer + 500 explosions_flag[a] = EXPLOSION1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DUAL_EXPLOSION_SHORT ENDIF //IF explosions_timer[a] < game_timer explosions_timer[a] = game_timer + 500 ++ explosions_flag[a] //ENDIF IF explosions_flag[a] > EXPLOSION4 explosions_flag[a] = 0 ELSE DRAW_SPRITE explosions_flag[a] x y 32.0 32.0 255 255 255 255 ENDIF ENDIF ++ a ENDWHILE //DRAW PROJECTILES/// a = 0 WHILE a < 10 if projectile_life[a] > game_timer x = time_step_fl * projectile_velocity_x[a] y = time_step_fl * projectile_velocity_y[a] projectile_position_x[a] += x projectile_position_y[a] += y x = projectile_position_x[a] - ship_position_x y = projectile_position_y[a] - ship_position_y x += 320.0 y += 224.0 heading = ship_heading DRAW_SPRITE SHOT_BALL x y 8.0 8.0 255 255 255 255 endif ++ a ENDWHILE if ship_dead_timer < game_timer //DRAW THE SHIP SPRITE IN THE CENTRE OF THE SCREEN DRAW_SPRITE_WITH_ROTATION PLAYER_SHIP 320.0 224.0 ship_scale ship_scale ship_heading 255 255 255 255 //SHIP HEALTH HUD BAR temp_float = ship_health / 2.0 y = 320.0 - temp_float DRAW_SPRITE WHITE_S 65.0 270.0 14.0 104.0 0 0 0 255 DRAW_SPRITE HEALTH_BAR 65.0 y 10.0 ship_health 255 255 255 255 //SHIP POWER HUD BAR temp_float = ship_power / 2.0 y = 320.0 - temp_float DRAW_SPRITE WHITE_S 80.0 270.0 14.0 104.0 0 0 0 255 DRAW_SPRITE POWER_BAR 80.0 y 10.0 ship_power 255 255 255 255 //THIS TURNS A HEADING IN DEGREES INTO A VECTOR temp_float = ship_heading temp_float += 180.0 IF temp_float > 360.0 temp_float -= 360.0 ENDIF SIN temp_float x COS temp_float y x *= -1.0 x *= 24.0 y *= 24.0 x += 320.0 y += 224.0 IF draw_thruster > 0 DRAW_SPRITE_WITH_ROTATION THRUSTERS X Y 16.0 16.0 ship_heading draw_thruster draw_thruster draw_thruster 255 ENDIF else b = 0 WHILE b < 10 IF explosions_flag[b] = 0 explosions_x[b] = ship_position_x explosions_y[b] = ship_position_y ++ explosions_flag[b] b = 9 ENDIF ++ b ENDWHILE gosub setup_text_dual REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DUAL_GAME_OVER display_text 320.0 100.0 SPAC_01 temp_int = game_timer + 1000 if ship_dead_timer < temp_int quit_game = 1 endif endif gosub setup_text_dual if dual_score > -1 display_text_with_number 320.0 50.0 SPAC_02 dual_score else temp_int = dual_score * -1 SET_TEXT_COLOUR 0 0 0 255 SET_TEXT_EDGE 1 150 150 150 255 display_text_with_number 320.0 50.0 SPAC_02 temp_int endif GOSUB RenderDualityBorder if help_prompt_timer > game_timer gosub setup_text_dual if current_language = LANGUAGE_GERMAN or current_language = LANGUAGE_FRENCH set_text_wrapx 175.1144 else set_text_wrapx 160.1144 endif set_text_centre OFF //set_text_justify on set_text_font FONT_STANDARD //set_text_colour 200 200 200 255 if current_language = LANGUAGE_GERMAN or current_language = LANGUAGE_FRENCH set_text_scale 0.4 1.8889 else set_text_scale 0.5014 1.8889 endif endif if quit_game = 1 if dual_score > light_hiscore[9] lvar_int letter input_letter letter = 10 input_letter = 0 highscore_table = 1 GOTO dual_hiscore_loop else if dual_score < dark_hiscore[9] letter = 10 input_letter = 0 highscore_table = 0 GOTO dual_hiscore_loop else GOTO dual_frontend_loop endif endif endif // At any time, the player can press the power or reset buttons to exit or restart the game. GOSUB EnableArcadeWidgets // Keep the widgets enabled all the time. IF IS_WIDGET_RELEASED WIDGET_ARCADE_POWER_OFF GOTO mission_dual_cleanup ENDIF IF IS_WIDGET_RELEASED WIDGET_ARCADE_RESET GOTO dual_frontend_loop ENDIF GOTO dual_game_loop dual_hiscore_loop: wait 0 GOSUB CollectAllInput // Determines abstracted directional movement. get_game_timer game_timer if highscore_table = 0 a = 9 while a > -1 if dual_score < dark_hiscore[a] if not a = 9 b = a + 1 dark_hiscore[b] = dark_hiscore[a] $dark_letter1[b] = $dark_letter1[a] $dark_letter2[b] = $dark_letter2[a] $dark_letter3[b] = $dark_letter3[a] endif dark_hiscore[a] = dual_score $dark_letter1[a] = $dual_char[36] $dark_letter2[a] = $dual_char[36] $dark_letter3[a] = $dual_char[36] new_high_score = a if a = 0 dual_score = 0 endif else dual_score = 0 endif -- a endwhile else a = 9 while a > -1 if dual_score > light_hiscore[a] if not a = 9 b = a + 1 light_hiscore[b] = light_hiscore[a] $light_letter1[b] = $light_letter1[a] $light_letter2[b] = $light_letter2[a] $light_letter3[b] = $light_letter3[a] endif light_hiscore[a] = dual_score $light_letter1[a] = $dual_char[36] $light_letter2[a] = $dual_char[36] $light_letter3[a] = $dual_char[36] new_high_score = a if a = 0 dual_score = 0 endif else dual_score = 0 endif -- a endwhile endif if new_high_score > -1 if highscore_table = 0 if input_letter = 0 $dark_letter1[new_high_score] = $dual_char[letter] $dark_letter2[new_high_score] = $dual_char[36] $dark_letter3[new_high_score] = $dual_char[36] endif if input_letter = 1 $dark_letter2[new_high_score] = $dual_char[letter] $dark_letter3[new_high_score] = $dual_char[36] endif if input_letter = 2 $dark_letter3[new_high_score] = $dual_char[letter] endif else if input_letter = 0 $light_letter1[new_high_score] = $dual_char[letter] $light_letter2[new_high_score] = $dual_char[36] $light_letter3[new_high_score] = $dual_char[36] endif if input_letter = 1 $light_letter2[new_high_score] = $dual_char[letter] $light_letter3[new_high_score] = $dual_char[36] endif if input_letter = 2 $light_letter3[new_high_score] = $dual_char[letter] endif endif IF INPUT = INPUT_UP OR INPUT = INPUT_RIGHT if pad1_dpadup_pressed < game_timer IF letter < 36 ++ letter ELSE letter = 0 ENDIF pad1_dpadup_pressed = game_timer + 250 endif else pad1_dpadup_pressed = game_timer - 250 ENDIF IF INPUT = INPUT_DOWN OR INPUT = INPUT_LEFT if pad1_dpaddown_pressed < game_timer IF letter > 0 -- letter ELSE letter = 36 ENDIF pad1_dpaddown_pressed = game_timer + 250 endif else pad1_dpaddown_pressed = game_timer - 250 ENDIF IF IS_BUTTON_PRESSED PAD1 CROSS OR IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON IF pad1_cross_pressed = 0 ++input_letter ++pad1_cross_pressed if input_letter = 3 new_high_score = -1 endif endif ELSE pad1_cross_pressed = 0 ENDIF ENDIF if highscore_table = 0 a = 0 while a < 10 lvar_int table_hiscore[10] table_hiscore[a] = dark_hiscore[a] * -1 lvar_text_label $table_letter1[10] $table_letter2[10] $table_letter3[10] $table_letter1[a] = $dark_letter1[a] $table_letter2[a] = $dark_letter2[a] $table_letter3[a] = $dark_letter3[a] ++ a endwhile else a = 0 while a < 10 table_hiscore[a] = light_hiscore[a] $table_letter1[a] = $light_letter1[a] $table_letter2[a] = $light_letter2[a] $table_letter3[a] = $light_letter3[a] ++ a endwhile endif //DRAW PARALAX SCROLLING LAYERS/// a = 0 while a < 3 x = last_ship_position_x - ship_position_x y = last_ship_position_y - ship_position_y x *= 0.6 y *= 0.6 temp_float =# a temp_float += 1.0 temp_float *= 0.3 x *= temp_float y *= temp_float tile_size = 512.0 * temp_float if a = 0 x /= 2.0 y /= 2.0 background_x[a] += x background_y[a] += y else background_x[a] += x background_y[a] += y endif temp_float = tile_size / 2.0 IF background_x[a] > temp_float background_x[a] -= tile_size ENDIF temp_float = tile_size * -1.0 IF background_x[a] < temp_float background_x[a] += tile_size ENDIF temp_float = tile_size * -1.0 IF background_y[a] > temp_float background_y[a] -= tile_size ENDIF temp_float = tile_size * -1.0 IF background_y[a] < temp_float background_y[a] += tile_size ENDIF temp_float = 640.0 + tile_size x_tiles_fl = temp_float / tile_size x_tiles =# x_tiles_fl temp_float =# x_tiles x_tiles_fl -= temp_float if x_tiles_fl > 0.0 ++ x_tiles endif temp_float = 448.0 + tile_size y_tiles_fl = temp_float / tile_size y_tiles =# y_tiles_fl temp_float =# y_tiles y_tiles_fl -= temp_float if y_tiles_fl > 0.0 ++ y_tiles endif ++ x_tiles ++ y_tiles layer_x = background_x[a] layer_y = background_y[a] y_index = 0 WHILE y_index < y_tiles x_index = 0 WHILE x_index < x_tiles if a = 0 DRAW_SPRITE BACKGROUND layer_x layer_y tile_size tile_size 150 150 150 255//256.0 256.0 255 255 255 255 else DRAW_SPRITE STARLAYER layer_x layer_y tile_size tile_size 150 150 150 255//256.0 256.0 255 255 255 255 endif layer_x += tile_size ++ x_index ENDWHILE layer_x = background_x[a] layer_y += tile_size ++ y_index ENDWHILE ++ a endwhile gosub setup_text_dual if highscore_table = 0 set_text_colour 0 0 0 255 set_text_edge 1 150 150 150 255 endif set_text_font FONT_STANDARD display_text title_x title_y SPAC_06 //HISCORE lvar_float highscore_x highscore_y highscore_x = top_row_x highscore_y = top_row_y a = 0 while a < 10 highscore_x = top_row_x //first letter gosub setup_text_dual set_text_centre off set_text_justify on set_text_font FONT_STANDARD if highscore_table = 0 set_text_colour 0 0 0 255 set_text_edge 1 150 150 150 255 endif if new_high_score = a set_text_colour 0 155 0 255 endif if $table_letter1[a] = $dual_char[1] or $table_letter1[a] = $dual_char[18] highscore_x += 8.0 endif display_text highscore_x highscore_y $table_letter1[a] if $table_letter1[a] = $dual_char[1] or $table_letter1[a] = $dual_char[18] highscore_x -= 8.0 endif highscore_x += next_letter_x //second letter gosub setup_text_dual set_text_centre off set_text_justify on set_text_font FONT_STANDARD if highscore_table = 0 set_text_colour 0 0 0 255 set_text_edge 1 150 150 150 255 endif if new_high_score = a set_text_colour 0 155 0 255 endif if $table_letter2[a] = $dual_char[1] or $table_letter2[a] = $dual_char[18] highscore_x += 8.0 endif display_text highscore_x highscore_y $table_letter2[a] if $table_letter2[a] = $dual_char[1] or $table_letter2[a] = $dual_char[18] highscore_x -= 8.0 endif highscore_x += next_letter_x //third letter gosub setup_text_dual set_text_centre off set_text_justify on set_text_font FONT_STANDARD if highscore_table = 0 set_text_colour 0 0 0 255 set_text_edge 1 150 150 150 255 endif if new_high_score = a set_text_colour 0 155 0 255 endif if $table_letter3[a] = $dual_char[1] or $table_letter3[a] = $dual_char[18] highscore_x += 8.0 endif display_text highscore_x highscore_y $table_letter3[a] if $table_letter3[a] = $dual_char[1] or $table_letter3[a] = $dual_char[18] highscore_x -= 8.0 endif highscore_x = top_row_x + score_dist_x //score gosub setup_text_dual set_text_centre off set_text_right_justify on set_text_font FONT_STANDARD if highscore_table = 0 set_text_colour 0 0 0 255 set_text_edge 1 150 150 150 255 endif if new_high_score = a set_text_colour 0 155 0 255 endif display_text_with_number highscore_x highscore_y NUMBER table_hiscore[a]//HISCORE highscore_y += next_row_y ++ a endwhile GOSUB RenderDualityBorder if new_high_score = -1 IF IS_BUTTON_PRESSED PAD1 TRIANGLE or IS_BUTTON_PRESSED PAD1 CIRCLE or IS_BUTTON_PRESSED PAD1 SQUARE GOTO dual_frontend_loop endif IF IS_BUTTON_PRESSED PAD1 CROSS OR IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON IF pad1_cross_pressed = 0 ++pad1_cross_pressed GOTO dual_frontend_loop endif ELSE pad1_cross_pressed = 0 ENDIF else gosub setup_text_dual set_text_centre OFF set_text_wrapx x_scale[10] set_text_font FONT_STANDARD set_text_scale x_scale[11] y_scale[11] endif GOSUB EnableArcadeWidgets // Keep the widgets enabled all the time. IF IS_WIDGET_RELEASED WIDGET_ARCADE_POWER_OFF GOTO mission_dual_cleanup ENDIF IF IS_WIDGET_RELEASED WIDGET_ARCADE_RESET GOTO dual_frontend_loop ENDIF GOTO dual_hiscore_loop create_projectile: a = 0 WHILE a < 10 if projectile_life[a] < game_timer temp_float = ship_heading SIN temp_float x COS temp_float y LVAR_FLOAT projectile_position_x[10] projectile_position_y[10] projectile_position_x[a] = ship_position_x projectile_position_y[a] = ship_position_y LVAR_FLOAT projectile_velocity_x[10] projectile_velocity_y[10] x *= -300.0 y *= 300.0 projectile_velocity_x[a] = x + ship_velocity_x projectile_velocity_y[a] = y + ship_velocity_y projectile_life[a] = game_timer + 1600 return endif ++ a ENDWHILE return setup_text_dual://///////////////////////////////////////////////////////////////////////// set_text_colour 180 180 180 255 set_text_scale 1.0 3.0 set_text_right_justify off set_text_justify off set_text_centre on set_text_wrapx 640.0 set_text_proportional on set_text_background off set_text_dropshadow 0 0 0 0 180 set_text_font FONT_SPACEAGE return////////////////////////////////////////////////////////////////////////////////////// RenderDualityBorder: GOSUB DrawAspectCorrectingQuads // For aspect correction. DRAW_SPRITE TV_BORDER 320.0 224.0 640.0 448.0 255 255 255 255 RETURN // *********************************** MISSION CLEANUP ************************************* mission_dual_cleanup: WAIT 200 // Workaround for controller mappings issue jumping you right back into the game. REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DUAL_TRACK_STOP if is_player_playing player1 if locate_char_on_foot_3d scplayer spaceX spaceY spaceZ 2.0 2.0 2.0 0 y = spaceY + 2.0 set_char_coordinates scplayer spaceX y spaceZ endif endif SHUT_ALL_CHARS_UP FALSE flag_player_on_mission = 0 CLEAR_THIS_PRINT BUSY MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // This is the Space Monkey arcade game, not that you would know that from this file. // ***************************************************************************************** GOSUB mission_start_shtr IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_shtr_failed ENDIF exit: DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB mission_cleanup_shtr MISSION_END // variables ******************************************************************************* // sprites // coordinates VAR_FLOAT shtr_plyr_x shtr_plyr_y shtr_plyr_col_x shtr_plyr_col_y // projectile stuff VAR_INT shtr_button1 shtr_player_alive shtr_heat_bar VAR_INT shtr_reload_start shtr_reload_end shtr_reload_diff // enemy stuff VAR_FLOAT shtr_enemy_col_x shtr_enemy_col_y // parallax background VAR_FLOAT shtr_layer_x shtr_origin shtr_layer_scroll_speed_top shtr_layer_scroll_speed_bottom shtr_fire_speed shtr_background_pos VAR_INT shtr_sprite // explosion timers VAR_INT shtr_start_time shtr_end_time shtr_time_diff VAR_INT shtr_exp_start[16] shtr_exp_end[16] shtr_exp_diff[16] VAR_INT shtr_start_time_hit shtr_end_time_hit shtr_time_diff_hit // front end VAR_INT shtr_front_end shtr_lives shtr_score shtr_hi_score shtr_button_pressed // enemy spawn crap VAR_FLOAT shtr_range_start shtr_range_end VAR_INT shtr_respawn shtr_respawn_time // arrayzzzz VAR_INT shtr_current_projectile shtr_current_projectile_fired shtr_projectile_alive[16] VAR_FLOAT shtr_projectile_x[16] shtr_projectile_y[16] shtr_projectile_origin[16] shtr_projectile_col_x shtr_projectile_col_y VAR_INT shtr_up_projectile_alive[16] VAR_FLOAT shtr_up_projectile_x[16] shtr_up_projectile_y[16] shtr_up_projectile_origin[16] VAR_INT shtr_down_projectile_alive[16] VAR_FLOAT shtr_down_projectile_x[16] shtr_down_projectile_y[16] shtr_down_projectile_origin[16] shtr_projectile_size VAR_FLOAT shtr_shot_angle shtr_sin_shot_angle shtr_cos_shot_angle shtr_x_add shtr_y_add VAR_INT shtr_current_enemy shtr_enemy_alive[16] shtr_random VAR_FLOAT shtr_enemy_x[16] shtr_enemy_y[16] shtr_enemy_origin[16] shtr_enemy_speed[16] // sine wave stuff VAR_FLOAT shtr_sin_multiplier shtr_sin_cycle_range shtr_sin_degree_input shtr_sin_degree_output shtr_initial_y shtr_gen_y VAR_FLOAT shtr_gen_lo_y shtr_gen_hi_y shtr_amplitude // Pickups VAR_INT shtr_pickup_counter shtr_pickup_collected shtr_pickup_current shtr_pickup_move_switch VAR_FLOAT shtr_pickup_x shtr_pickup_y VAR_INT shtr_speed_pickup shtr_auto_pickup shtr_multi_pickup // Enemy firing stuff VAR_INT shtr_fire_alive VAR_FLOAT shtr_enemy_shot_speed shtr_enemy_shot_x[8] shtr_enemy_shot_y[8] VAR_INT shtr_enemy_shot_alive[8] shtr_shot VAR_INT shtr_help_diff shtr_help_end shtr_help_start // ---- Hi Score Stuff VAR_TEXT_LABEL $shtr_char[37] VAR_INT shtr_chars shtr_press VAR_INT shtr_draw_highlight VAR_INT shtr_hi_loop VAR_FLOAT shtr_hi_1_x[10] shtr_hi_2_x[10] shtr_hi_3_x[10] shtr_hi_4_x[10] VAR_FLOAT shtr_hi_1_y[10] shtr_hi_2_y[10] shtr_hi_3_y[10] shtr_hi_4_y[10] VAR_INT shtr_ranking shtr_score_update shtr_score_check shtr_destination_slot shtr_source_slot VAR_INT shtr_on_table shtr_level shtr_write VAR_INT shtr_played_before shtr_current shtr_num_gen shtr_used[40] // -- Timer Stuff For Player Movement VAR_FLOAT shtr_elapsed_time VAR_INT shtr_last_time VAR_INT shtr_current_time // mission start *************************************************************************** mission_start_shtr: flag_player_on_mission = 1 IF flag_shtr_passed_1stime = 0 REGISTER_MISSION_GIVEN ENDIF SCRIPT_NAME shtr WAIT 0 SHUT_ALL_CHARS_UP TRUE GET_CHAR_COORDINATES scplayer x y z CLEAR_AREA x y z 50.0 0 SET_MUSIC_DOES_FADE FALSE LOAD_MISSION_TEXT SHTR LOAD_MISSION_AUDIO 4 SOUND_BANK_GOGO WHILE NOT HAS_MISSION_AUDIO_LOADED 4 WAIT 0 ENDWHILE FREEZE_CHAR_POSITION scplayer TRUE SET_PLAYER_CONTROL player1 OFF GET_CHAR_COORDINATES scplayer x y z CLEAR_AREA x y z 25.0 TRUE USE_TEXT_COMMANDS TRUE SET_WIDGET_VALUE WIDGET_ARCADE_JOYSTICK 1.0 // Set the right colored images, each arcade game has unique colors. SET_WIDGET_VALUE WIDGET_ARCADE_BUTTON 1.0 LOAD_TEXTURE_DICTIONARY ld_shtr LOAD_SPRITE 1 splsh//monktitle LOAD_SPRITE 2 bstars//backstars LOAD_SPRITE 3 fstar//frontstar LOAD_SPRITE 4 hi_a//highlighteda LOAD_SPRITE 5 hi_b//highlightedb LOAD_SPRITE 6 hi_c//highlightedc LOAD_SPRITE 7 un_a//unhighlighteda LOAD_SPRITE 8 un_b//unhighlightedb LOAD_SPRITE 9 un_c//unhighlightedc LOAD_SPRITE 10 ship//monkeyship LOAD_SPRITE 11 fire//playerfire LOAD_SPRITE 12 ufo//ufo LOAD_SPRITE 13 kami//suicideufo LOAD_SPRITE 14 nmef//enemyfire LOAD_SPRITE 15 ex1//explm11 LOAD_SPRITE 16 ex2//explm2 LOAD_SPRITE 17 ex3//explm5 LOAD_SPRITE 18 ex4//explm8 LOAD_SPRITE 19 cbarl//coldgunleft LOAD_SPRITE 20 cbarm//coldgunmid LOAD_SPRITE 21 cbarr//coldgunright LOAD_SPRITE 22 hbarl//hotgunleft LOAD_SPRITE 23 hbarm//hotgunmid LOAD_SPRITE 24 hbarr//hotgunright LOAD_SPRITE 25 cabcorn//hotgunleft LOAD_SPRITE 26 tvl//hotgunmid LOAD_SPRITE 27 tvr//hotgunright LOAD_SPRITE 28 pa//Pickup Autofire LOAD_SPRITE 29 pm2//Pickup Multi 2 LOAD_SPRITE 30 pm3//Pickup Multi 3 LOAD_SPRITE 31 ps1//Pickup Fire Speed 1 LOAD_SPRITE 32 ps2//Pickup Fire Speed 2 LOAD_SPRITE 33 ps3//Pickup Fire Speed 3 shtr_restart: GOSUB shtr_init GOSUB shtr_hiscore_init SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 GOSUB RenderSpaceMonkeyBorder // main loop ******************************************************************************* { timerb = 0 mission_shtr_loop: WAIT 0 // draw parallax layers shtr_origin = shtr_background_pos shtr_sprite = 2 shtr_layer_scroll_speed_top = 1.0 // speed up?? GOSUB draw_bckgrnd_layer_top shtr_layer_scroll_speed_bottom = 1.0 GOSUB draw_bckgrnd_layer_bottom shtr_background_pos = shtr_origin DO_FADE 0 FADE_IN // front end fe: GOSUB CollectAllInput // Determines abstracted directional movement. IF shtr_button_pressed = 1 AND INPUT = INPUT_NEUTRAL shtr_button_pressed = 0 ENDIF IF shtr_front_end = 1 // play DRAW_SPRITE 1 320.0 164.0 386.0 192.0 255 255 255 255 DRAW_SPRITE 4 320.0 312.0 64.0 32.0 255 255 255 255 DRAW_SPRITE 8 320.0 344.0 128.0 32.0 255 255 255 255 DRAW_SPRITE 9 320.0 376.0 64.0 32.0 255 255 255 255 IF IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_ACCEPT REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_TRACK_START GET_GAME_TIMER shtr_reload_start GET_GAME_TIMER shtr_help_start shtr_front_end = 0 ENDIF ENDIF IF shtr_front_end = 2 // Hi Score DRAW_SPRITE 1 320.0 164.0 386.0 192.0 255 255 255 255 DRAW_SPRITE 7 320.0 312.0 64.0 32.0 255 255 255 255 DRAW_SPRITE 5 320.0 344.0 128.0 32.0 255 255 255 255 DRAW_SPRITE 9 320.0 376.0 64.0 32.0 255 255 255 255 IF IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_ACCEPT GET_GAME_TIMER shtr_help_start shtr_on_table = 4 shtr_front_end = 4 ENDIF ENDIF IF shtr_front_end = 3 // Exit DRAW_SPRITE 1 320.0 164.0 386.0 192.0 255 255 255 255 DRAW_SPRITE 7 320.0 312.0 64.0 32.0 255 255 255 255 DRAW_SPRITE 8 320.0 344.0 128.0 32.0 255 255 255 255 DRAW_SPRITE 6 320.0 376.0 64.0 32.0 255 255 255 255 IF IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_DECLINE DO_FADE 0 FADE_OUT GOTO exit ENDIF ENDIF IF shtr_button_pressed = 0 IF shtr_front_end = 1 IF INPUT = INPUT_UP shtr_front_end = 3 shtr_button_pressed = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_SELECT GOTO fe // delay / flicker without this ENDIF IF INPUT = INPUT_DOWN shtr_front_end = 2 shtr_button_pressed = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_SELECT GOTO fe // delay / flicker without this ENDIF ENDIF IF shtr_front_end = 2 IF INPUT = INPUT_UP shtr_front_end = 1 shtr_button_pressed = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_SELECT GOTO fe // delay / flicker without this ENDIF IF INPUT = INPUT_DOWN shtr_front_end = 3 shtr_button_pressed = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_SELECT GOTO fe // delay / flicker without this ENDIF ENDIF IF shtr_front_end = 3 IF INPUT = INPUT_UP shtr_front_end = 2 shtr_button_pressed = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_SELECT GOTO fe // delay / flicker without this ENDIF IF INPUT = INPUT_DOWN shtr_front_end = 1 shtr_button_pressed = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_SELECT GOTO fe // delay / flicker without this ENDIF ENDIF ENDIF // begin game IF shtr_front_end = 0 // Player movement ------------------------------------------------------------ // If player dies IF shtr_player_alive = 0 GET_GAME_TIMER shtr_start_time IF shtr_lives > 0 shtr_lives -- shtr_range_start = 1.0 shtr_range_end = 3.0 shtr_heat_bar = 5 shtr_player_alive = 2 shtr_fire_alive = 0 ENDIF ENDIF // draw player's ship every frame IF shtr_player_alive = 1 DRAW_SPRITE 10 shtr_plyr_x shtr_plyr_y 32.0 32.0 255 255 255 255 ENDIF //Make player movement frame independent GET_GAME_TIMER shtr_current_time LVAR_FLOAT ftemp_shtr_current_time ftemp_shtr_last_time ftemp_shtr_current_time =# shtr_current_time ftemp_shtr_last_time =# shtr_last_time shtr_elapsed_time = ftemp_shtr_current_time - ftemp_shtr_last_time shtr_last_time = shtr_current_time // Move the player's ship. IF shtr_player_alive = 1 OR shtr_player_alive = 3 LVAR_FLOAT fTempFloatX fTempFloatY fTempFloatX =# INPUT_ANALOG_LEFT_RIGHT // Convert int -127-127 range to -6.0f to 6.0f. fTempFloatX *= 0.002 fTempFloatX *= shtr_elapsed_time fTempFloatY =# INPUT_ANALOG_UP_DOWN fTempFloatY *= 0.002 fTempFloatY *= shtr_elapsed_time shtr_plyr_x += fTempFloatX shtr_plyr_y += fTempFloatY ENDIF // set play area bounding IF shtr_plyr_x < 80.0 shtr_plyr_x = 80.0 // shift this along????? ENDIF IF shtr_plyr_x > 560.0 shtr_plyr_x = 560.0 ENDIF IF shtr_plyr_y < 80.0 shtr_plyr_y = 80.0 ENDIF IF shtr_plyr_y > 368.0 shtr_plyr_y = 368.0 ENDIF // ---------------------------------------------------------------------------- // Firing at the enemy -------------------------------------------------------- IF shtr_button1 = 1 GET_GAME_TIMER shtr_reload_end shtr_reload_diff = shtr_reload_end - shtr_reload_start IF shtr_auto_pickup = 0 IF NOT IS_WIDGET_PRESSED WIDGET_ARCADE_BUTTON IF shtr_reload_diff > shtr_speed_pickup shtr_button1 = 0 ENDIF ENDIF ELSE IF NOT IS_WIDGET_PRESSED WIDGET_ARCADE_BUTTON shtr_button1 = 0 ENDIF if shtr_reload_diff > shtr_speed_pickup shtr_button1 = 0 ENDIF ENDIF ENDIF IF shtr_heat_bar < 7 shtr_heat_bar = 7 ENDIF shtr_heat_bar -= 7 IF shtr_player_alive = 1 OR shtr_player_alive = 3 IF shtr_heat_bar < 1000 IF shtr_button1 = 0 IF IS_WIDGET_PRESSED WIDGET_ARCADE_BUTTON REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_PLAYER_FIRE COS shtr_shot_angle shtr_cos_shot_angle shtr_x_add = shtr_fire_speed * shtr_cos_shot_angle SIN shtr_shot_angle shtr_sin_shot_angle shtr_y_add = shtr_fire_speed * shtr_sin_shot_angle IF shtr_projectile_alive[shtr_current_projectile_fired] = 0 shtr_projectile_origin[shtr_current_projectile_fired] = shtr_plyr_x shtr_projectile_y[shtr_current_projectile_fired] = shtr_plyr_y shtr_projectile_x[shtr_current_projectile_fired] = shtr_projectile_origin[shtr_current_projectile_fired] + 16.0 shtr_projectile_alive[shtr_current_projectile_fired] = 1 ENDIF IF shtr_multi_pickup = 1 OR shtr_multi_pickup = 2 IF shtr_up_projectile_alive[shtr_current_projectile_fired] = 0 shtr_up_projectile_origin[shtr_current_projectile_fired] = shtr_plyr_x shtr_up_projectile_y[shtr_current_projectile_fired] = shtr_plyr_y shtr_up_projectile_x[shtr_current_projectile_fired] = shtr_up_projectile_origin[shtr_current_projectile_fired] + 16.0 shtr_up_projectile_alive[shtr_current_projectile_fired] = 1 ENDIF ENDIF IF shtr_multi_pickup = 2 IF shtr_down_projectile_alive[shtr_current_projectile_fired] = 0 shtr_down_projectile_origin[shtr_current_projectile_fired] = shtr_plyr_x shtr_down_projectile_y[shtr_current_projectile_fired] = shtr_plyr_y shtr_down_projectile_x[shtr_current_projectile_fired] = shtr_down_projectile_origin[shtr_current_projectile_fired] + 16.0 shtr_down_projectile_alive[shtr_current_projectile_fired] = 1 ENDIF ENDIF GET_GAME_TIMER shtr_reload_start shtr_current_projectile_fired++ shtr_button1 = 1 IF shtr_current_projectile_fired = 16 shtr_current_projectile_fired = 0 ENDIF ENDIF ENDIF ENDIF ENDIF GOSUB shtr_projectile_movement GOSUB shtr_collision // ---------------------------------------------------------------------------- LVAR_FLOAT ftemp_shtr_pickup_direction_pos ftemp_shtr_pickup_direction_neg ftemp_shtr_pickup_direction_pos = shtr_elapsed_time ftemp_shtr_pickup_direction_pos *= 0.0236 ftemp_shtr_pickup_direction_neg = ftemp_shtr_pickup_direction_pos * -1.0 IF shtr_pickup_collected = 0 DRAW_SPRITE shtr_pickup_current shtr_pickup_x shtr_pickup_y 32.0 32.0 255 255 255 255 IF shtr_pickup_move_switch = 0 IF shtr_pickup_y < 368.0 AND shtr_pickup_x > 80.0 shtr_pickup_x += ftemp_shtr_pickup_direction_neg shtr_pickup_y += ftemp_shtr_pickup_direction_pos ELSE GENERATE_RANDOM_INT_IN_RANGE 0 4 shtr_pickup_move_switch ENDIF ENDIF IF shtr_pickup_move_switch = 1 IF shtr_pickup_x > 80.0 AND shtr_pickup_y > 80.0 shtr_pickup_x += ftemp_shtr_pickup_direction_neg shtr_pickup_y += ftemp_shtr_pickup_direction_neg ELSE GENERATE_RANDOM_INT_IN_RANGE 0 4 shtr_pickup_move_switch ENDIF ENDIF IF shtr_pickup_move_switch = 2 IF shtr_pickup_y > 80.0 AND shtr_pickup_x < 560.0 shtr_pickup_x += ftemp_shtr_pickup_direction_pos shtr_pickup_y += ftemp_shtr_pickup_direction_neg ELSE GENERATE_RANDOM_INT_IN_RANGE 0 4 shtr_pickup_move_switch ENDIF ENDIF IF shtr_pickup_move_switch = 3 IF shtr_pickup_x < 560.0 AND shtr_pickup_y < 368.0 shtr_pickup_x += ftemp_shtr_pickup_direction_pos shtr_pickup_y += ftemp_shtr_pickup_direction_pos ELSE GENERATE_RANDOM_INT_IN_RANGE 0 4 shtr_pickup_move_switch ENDIF ENDIF IF DO_2D_RECTANGLES_COLLIDE shtr_plyr_x shtr_plyr_y 32.0 32.0 shtr_pickup_x shtr_pickup_y 32.0 32.0 IF shtr_range_end < 6.5 shtr_range_start += 0.5 shtr_range_end += 0.5 ENDIF shtr_pickup_x = 0.0 shtr_pickup_y = 0.0 shtr_pickup_move_switch = 0 IF shtr_pickup_current = 28 // Auto Fire shtr_auto_pickup = 1 shtr_pickup_collected = 2 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_ACCEPT ENDIF IF shtr_pickup_current = 33 // Fire Speed #3 shtr_speed_pickup = 50 shtr_pickup_current = 28 shtr_pickup_collected = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_ACCEPT ENDIF IF shtr_pickup_current = 30 // Multi Fire #2 -- Three Way shtr_multi_pickup = 2 shtr_pickup_current = 33 shtr_pickup_collected = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_ACCEPT ENDIF IF shtr_pickup_current = 32 // Fire Speed #2 shtr_speed_pickup = 100 shtr_pickup_current = 30 shtr_pickup_collected = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_ACCEPT ENDIF IF shtr_pickup_current = 29 // Multi Fire #1 -- Two Way shtr_multi_pickup = 1 shtr_pickup_current = 32 shtr_pickup_collected = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_ACCEPT ENDIF IF shtr_pickup_current = 31 // Fire Speed #1 shtr_speed_pickup = 150 shtr_pickup_current = 29 shtr_pickup_collected = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_ACCEPT ENDIF ENDIF ENDIF // Enemies and related crap --------------------------------------------------- // Enemies spawn -------------------------------------------------------------- IF shtr_respawn = 0 IF timerb > 500 IF shtr_enemy_alive[0] = 0 shtr_current_enemy = 0 IF shtr_amplitude < 60.0 shtr_amplitude += 5.0 ENDIF GOSUB shtr_enemy_gen timerb = 0 shtr_respawn++ ENDIF ENDIF ENDIF IF shtr_respawn > 0 AND shtr_respawn < 8 shtr_current_enemy = shtr_respawn GOSUB shtr_enemy_respawn ENDIF IF shtr_respawn = 8 IF shtr_enemy_alive[0] = 0 AND shtr_enemy_alive[1] = 0 AND shtr_enemy_alive[2] = 0 AND shtr_enemy_alive[3] = 0 IF shtr_enemy_alive[4] = 0 AND shtr_enemy_alive[5] = 0 AND shtr_enemy_alive[6] = 0 AND shtr_enemy_alive[7] = 0 shtr_pickup_counter = 0 shtr_random = 0 shtr_respawn = 0 ENDIF ENDIF ENDIF // ---------------------------------------------------------------------------- // Enemies move --------------------------------------------------------------- GOSUB shtr_enemy_movement // Enemies explode ------------------------------------------------------------ GOSUB shtr_enemy_exp // Enemies fire ------------------------------------------------------------ GOSUB shtr_enemy_fire // Player explodes ------------------------------------------------------------ IF shtr_player_alive = 2 IF shtr_fire_alive = 2 GET_GAME_TIMER shtr_end_time shtr_time_diff = shtr_end_time - shtr_start_time IF shtr_time_diff >= 0 AND shtr_time_diff < 100 DRAW_SPRITE 15 shtr_plyr_x shtr_plyr_y 32.0 32.0 255 255 255 255 ENDIF IF shtr_time_diff >= 100 AND shtr_time_diff < 200 DRAW_SPRITE 16 shtr_plyr_x shtr_plyr_y 32.0 32.0 255 255 255 255 ENDIF IF shtr_time_diff >= 200 AND shtr_time_diff < 300 DRAW_SPRITE 17 shtr_plyr_x shtr_plyr_y 32.0 32.0 255 255 255 255 ENDIF IF shtr_time_diff >= 300 AND shtr_time_diff < 400 DRAW_SPRITE 18 shtr_plyr_x shtr_plyr_y 32.0 32.0 255 255 255 255 ENDIF IF shtr_time_diff > 499 shtr_plyr_x = 80.0 shtr_plyr_y = 224.0 shtr_player_alive = 3 shtr_fire_alive = 0 shtr_pickup_counter = 0 shtr_pickup_collected = 1 shtr_pickup_current = 31 shtr_speed_pickup = 250 shtr_auto_pickup = 0 shtr_multi_pickup = 0 shtr_pickup_move_switch = 0 GET_GAME_TIMER shtr_start_time ENDIF ELSE GET_GAME_TIMER shtr_end_time shtr_time_diff = shtr_end_time - shtr_start_time IF shtr_time_diff >= 0 AND shtr_time_diff < 100 DRAW_SPRITE 15 shtr_plyr_x shtr_plyr_y 32.0 32.0 255 255 255 255 ENDIF IF shtr_time_diff >= 100 AND shtr_time_diff < 200 DRAW_SPRITE 16 shtr_plyr_x shtr_plyr_y 32.0 32.0 255 255 255 255 ENDIF IF shtr_time_diff >= 200 AND shtr_time_diff < 300 DRAW_SPRITE 17 shtr_plyr_x shtr_plyr_y 32.0 32.0 255 255 255 255 ENDIF IF shtr_time_diff >= 300 AND shtr_time_diff < 400 DRAW_SPRITE 18 shtr_plyr_x shtr_plyr_y 32.0 32.0 255 255 255 255 ENDIF IF shtr_time_diff > 499 GET_GAME_TIMER shtr_start_time shtr_plyr_x = 80.0 shtr_plyr_y = 224.0 shtr_pickup_counter = 0 shtr_pickup_collected = 1 shtr_pickup_current = 31 shtr_speed_pickup = 250 shtr_auto_pickup = 0 shtr_multi_pickup = 0 shtr_pickup_move_switch = 0 shtr_player_alive = 3 ENDIF ENDIF ENDIF // ---------------------------------------------------------------------------- // Player respawns and flashes ------------------------------------------------ IF shtr_player_alive = 3 GET_GAME_TIMER shtr_end_time shtr_time_diff = shtr_end_time - shtr_start_time IF shtr_time_diff >= 0 AND shtr_time_diff < 100 DRAW_SPRITE 10 shtr_plyr_x shtr_plyr_y 32.0 32.0 255 255 255 255 ENDIF IF shtr_time_diff >= 200 AND shtr_time_diff < 300 DRAW_SPRITE 10 shtr_plyr_x shtr_plyr_y 32.0 32.0 255 255 255 255 ENDIF IF shtr_time_diff >= 400 AND shtr_time_diff < 500 DRAW_SPRITE 10 shtr_plyr_x shtr_plyr_y 32.0 32.0 255 255 255 255 ENDIF IF shtr_time_diff >= 600 AND shtr_time_diff < 700 DRAW_SPRITE 10 shtr_plyr_x shtr_plyr_y 32.0 32.0 255 255 255 255 ENDIF IF shtr_time_diff >= 800 AND shtr_time_diff < 900 DRAW_SPRITE 10 shtr_plyr_x shtr_plyr_y 32.0 32.0 255 255 255 255 ENDIF IF shtr_time_diff >= 1000 AND shtr_time_diff < 1100 DRAW_SPRITE 10 shtr_plyr_x shtr_plyr_y 32.0 32.0 255 255 255 255 ENDIF IF shtr_time_diff >= 1200 AND shtr_time_diff < 1300 DRAW_SPRITE 10 shtr_plyr_x shtr_plyr_y 32.0 32.0 255 255 255 255 ENDIF IF shtr_time_diff >= 1400 AND shtr_time_diff < 1500 DRAW_SPRITE 10 shtr_plyr_x shtr_plyr_y 32.0 32.0 255 255 255 255 ENDIF IF shtr_time_diff >= 1600 AND shtr_time_diff < 1700 DRAW_SPRITE 10 shtr_plyr_x shtr_plyr_y 32.0 32.0 255 255 255 255 ENDIF IF shtr_time_diff >= 1800 AND shtr_time_diff < 1900 DRAW_SPRITE 10 shtr_plyr_x shtr_plyr_y 32.0 32.0 255 255 255 255 ENDIF IF shtr_time_diff >= 2000 shtr_player_alive = 1 ENDIF ENDIF // ---------------------------------------------------------------------------- // GUI IF shtr_score > shtr_hi_score shtr_hi_score = shtr_score ENDIF GOSUB shtr_text_gosub SET_TEXT_SCALE 0.6 1.2 SET_TEXT_RIGHT_JUSTIFY ON DISPLAY_TEXT_WITH_NUMBER 510.0 48.0 SHTR_2b shtr_lives // lives left GOSUB shtr_text_gosub SET_TEXT_CENTRE OFF SET_TEXT_JUSTIFY ON SET_TEXT_SCALE 0.6 1.2 DISPLAY_TEXT_WITH_NUMBER 130.0 48.0 SHTR_2d shtr_score // 1up score GOSUB shtr_text_gosub SET_TEXT_SCALE 0.6 1.2 DISPLAY_TEXT_WITH_NUMBER 320.0 48.0 SHTR_2c shtr_hi_score // hi score ENDIF // Game Over ------------------------------------------------------------------ IF shtr_front_end = 0 IF shtr_player_alive = 0 IF shtr_lives = 0 shtr_front_end = 4 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_TRACK_STOP REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_GAME_OVER shtr_on_table = 0 ENDIF ENDIF ENDIF IF shtr_front_end = 4 IF shtr_on_table = 0 GOSUB shtr_text_gosub SET_TEXT_SCALE 2.0 4.0 DISPLAY_TEXT 320.0 196.0 SHTR_3b // game over GET_GAME_TIMER shtr_start_time shtr_on_table = 1 ENDIF IF shtr_on_table = 1 GOSUB shtr_text_gosub SET_TEXT_SCALE 2.0 4.0 DISPLAY_TEXT 320.0 196.0 SHTR_3b GET_GAME_TIMER shtr_end_time shtr_time_diff = shtr_end_time - shtr_start_time IF shtr_time_diff > 5000 shtr_on_table = 2 ENDIF ENDIF IF shtr_on_table = 2 IF shtr_score < shtr_hi_s[9] shtr_on_table = 4 ELSE GOSUB shtr_check_scores ENDIF ENDIF IF shtr_on_table = 3 GOSUB shtr_write_name GOSUB shtr_draw_scores ENDIF IF shtr_on_table = 4 GOSUB shtr_draw_scores ENDIF ENDIF // Quit to front end ---------------------------------------------------------- IF shtr_front_end = 4 IF IS_BUTTON_PRESSED PAD1 TRIANGLE AND NOT shtr_on_table = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_DECLINE GOTO shtr_restart ENDIF ENDIF GOSUB RenderSpaceMonkeyBorder IF shtr_front_end = 4 IF shtr_on_table = 4 GET_GAME_TIMER shtr_help_end shtr_help_diff = shtr_help_end - shtr_help_start IF shtr_help_diff > 1000 AND IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON // Display for a second then let them quit back to the main menu. GOTO shtr_restart ENDIF IF shtr_help_diff < 5000 DRAW_WINDOW 35.0 15.0 200.0 45.0 dummy SWIRLS_NONE SET_TEXT_CENTRE OFF SET_TEXT_WRAPX 230.0 SET_TEXT_FONT FONT_STANDARD SET_TEXT_SCALE 0.5 1.8 DISPLAY_TEXT 40.0 20.0 SH_BCK ENDIF ENDIF ENDIF // At any time, the player can press the power or reset buttons to exit or restart the game. GOSUB EnableArcadeWidgets // Keep the widgets enabled all the time. IF IS_WIDGET_RELEASED WIDGET_ARCADE_POWER_OFF GOTO mission_cleanup_shtr ENDIF IF IS_WIDGET_RELEASED WIDGET_ARCADE_RESET GOTO shtr_restart ENDIF GOTO mission_shtr_loop mission_shtr_failed: PRINT_BIG M_FAIL 5000 1 RETURN mission_shtr_passed: RETURN mission_cleanup_shtr: WAIT 200 // Workaround for controller mappings issue jumping you right back into the game. CLEAR_THIS_PRINT BUSY REMOVE_TEXTURE_DICTIONARY CLEAR_MISSION_AUDIO 4 SHUT_ALL_CHARS_UP FALSE SET_MUSIC_DOES_FADE TRUE REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_TRACK_STOP IF IS_PLAYER_PLAYING player1 IF LOCATE_CHAR_ON_FOOT_3D scplayer shooter1X shooter1Y shooter1Z 2.0 2.0 2.0 0 y = shooter1Y + 2.0 SET_CHAR_COORDINATES scplayer shooter1X y shooter1Z ENDIF FREEZE_CHAR_POSITION scplayer FALSE SET_PLAYER_CONTROL player1 ON ENDIF flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN // Gosubs ********************************************************************************** // Onscreen text -------------------------------------------------------------- shtr_text_gosub: SET_TEXT_COLOUR 255 255 255 255 SET_TEXT_SCALE 1.0 2.0 SET_TEXT_CENTRE ON SET_TEXT_WRAPX 640.0 RETURN // Draw background ------------------------------------------------------------ draw_bckgrnd_layer_top: shtr_layer_x = shtr_origin - 256.0 DRAW_SPRITE shtr_sprite shtr_layer_x 336.0 256.0 256.0 255 255 255 255 shtr_layer_x = shtr_origin DRAW_SPRITE shtr_sprite shtr_layer_x 336.0 256.0 256.0 255 255 255 255 shtr_layer_x = shtr_origin + 256.0 DRAW_SPRITE shtr_sprite shtr_layer_x 336.0 256.0 256.0 255 255 255 255 shtr_layer_x = shtr_origin + 512.0 DRAW_SPRITE shtr_sprite shtr_layer_x 336.0 256.0 256.0 255 255 255 255 shtr_origin -=@ shtr_layer_scroll_speed_top IF shtr_origin < 0.0 shtr_origin += 256.0 ENDIF RETURN draw_bckgrnd_layer_bottom: shtr_layer_x = shtr_origin - 256.0 DRAW_SPRITE shtr_sprite shtr_layer_x 112.0 256.0 256.0 255 255 255 255 shtr_layer_x = shtr_origin DRAW_SPRITE shtr_sprite shtr_layer_x 112.0 256.0 256.0 255 255 255 255 shtr_layer_x = shtr_origin + 256.0 DRAW_SPRITE shtr_sprite shtr_layer_x 112.0 256.0 256.0 255 255 255 255 shtr_layer_x = shtr_origin + 512.0 DRAW_SPRITE shtr_sprite shtr_layer_x 112.0 256.0 256.0 255 255 255 255 shtr_origin -=@ shtr_layer_scroll_speed_bottom IF shtr_origin < 0.0 shtr_origin += 256.0 ENDIF RETURN // Enemies -------------------------------------------------------------------- shtr_enemy_respawn: IF timerb > shtr_respawn_time IF shtr_enemy_alive[shtr_current_enemy] = 0 shtr_enemy_x[shtr_current_enemy] = shtr_enemy_origin[0] shtr_enemy_speed[shtr_current_enemy] = shtr_enemy_speed[0] shtr_enemy_alive[shtr_current_enemy] = 1 timerb = 0 shtr_respawn++ ENDIF ENDIF RETURN shtr_enemy_exp: shtr_current_enemy = 0 WHILE shtr_current_enemy < 8 IF shtr_enemy_alive[shtr_current_enemy] = 2 GET_GAME_TIMER shtr_exp_end[shtr_current_enemy] shtr_exp_diff[shtr_current_enemy] = shtr_exp_end[shtr_current_enemy] - shtr_exp_start[shtr_current_enemy] IF shtr_exp_diff[shtr_current_enemy] >= 0 AND shtr_exp_diff[shtr_current_enemy] < 100 DRAW_SPRITE 15 shtr_enemy_x[shtr_current_enemy] shtr_enemy_y[shtr_current_enemy] 32.0 32.0 255 255 255 255 ENDIF IF shtr_exp_diff[shtr_current_enemy] >= 100 AND shtr_exp_diff[shtr_current_enemy] < 200 DRAW_SPRITE 16 shtr_enemy_x[shtr_current_enemy] shtr_enemy_y[shtr_current_enemy] 32.0 32.0 255 255 255 255 ENDIF IF shtr_exp_diff[shtr_current_enemy] >= 200 AND shtr_exp_diff[shtr_current_enemy] < 300 DRAW_SPRITE 17 shtr_enemy_x[shtr_current_enemy] shtr_enemy_y[shtr_current_enemy] 32.0 32.0 255 255 255 255 ENDIF IF shtr_exp_diff[shtr_current_enemy] >= 300 AND shtr_exp_diff[shtr_current_enemy] < 400 DRAW_SPRITE 18 shtr_enemy_x[shtr_current_enemy] shtr_enemy_y[shtr_current_enemy] 32.0 32.0 255 255 255 255 ENDIF IF shtr_exp_diff[shtr_current_enemy] > 499 shtr_enemy_x[shtr_current_enemy] = 0.0 shtr_enemy_y[shtr_current_enemy] = 0.0 shtr_enemy_alive[shtr_current_enemy] = 0 ENDIF ENDIF shtr_current_enemy++ ENDWHILE RETURN shtr_enemy_gen: IF shtr_enemy_alive[0] = 0 IF shtr_random = 0 GENERATE_RANDOM_FLOAT_IN_RANGE 640.0 720.0 shtr_enemy_origin[0] shtr_enemy_x[0] = shtr_enemy_origin[0] GENERATE_RANDOM_FLOAT_IN_RANGE 240.0 640.0 shtr_sin_cycle_range GENERATE_RANDOM_FLOAT_IN_RANGE 80.0 368.0 shtr_gen_y shtr_gen_lo_y = shtr_gen_y - shtr_amplitude IF shtr_gen_lo_y < 80.0 shtr_gen_y += shtr_amplitude ENDIF shtr_gen_hi_y = shtr_gen_y + shtr_amplitude IF shtr_gen_hi_y < 80.0 shtr_gen_y -= shtr_amplitude ENDIF GENERATE_RANDOM_FLOAT_IN_RANGE shtr_range_start shtr_range_end shtr_enemy_speed[0] IF shtr_enemy_speed[0] >= 1.0 AND shtr_enemy_speed[0] < 1.5 shtr_respawn_time = 500 ENDIF IF shtr_enemy_speed[0] >= 1.5 AND shtr_enemy_speed[0] < 2.0 shtr_respawn_time = 475 ENDIF IF shtr_enemy_speed[0] >= 2.0 AND shtr_enemy_speed[0] < 2.5 shtr_respawn_time = 450 ENDIF IF shtr_enemy_speed[0] >= 2.5 AND shtr_enemy_speed[0] < 3.0 shtr_respawn_time = 425 ENDIF IF shtr_enemy_speed[0] >= 3.0 AND shtr_enemy_speed[0] < 3.5 shtr_respawn_time = 400 ENDIF IF shtr_enemy_speed[0] >= 3.5 AND shtr_enemy_speed[0] < 4.0 shtr_respawn_time = 375 ENDIF IF shtr_enemy_speed[0] >= 4.0 AND shtr_enemy_speed[0] < 4.5 shtr_respawn_time = 350 ENDIF IF shtr_enemy_speed[0] >= 4.5 AND shtr_enemy_speed[0] < 5.0 shtr_respawn_time = 325 ENDIF IF shtr_enemy_speed[0] >= 5.0 AND shtr_enemy_speed[0] < 5.5 shtr_respawn_time = 300 ENDIF IF shtr_enemy_speed[0] >= 5.5 AND shtr_enemy_speed[0] < 6.0 shtr_respawn_time = 275 ENDIF IF shtr_enemy_speed[0] >= 6.0 AND shtr_enemy_speed[0] < 6.5 shtr_respawn_time = 250 ENDIF IF shtr_enemy_speed[0] >= 6.5 AND shtr_enemy_speed[0] < 7.0 shtr_respawn_time = 225 ENDIF IF shtr_enemy_speed[0] >= 7.0 AND shtr_enemy_speed[0] < 7.5 shtr_respawn_time = 200 ENDIF IF shtr_enemy_speed[0] >= 7.5 AND shtr_enemy_speed[0] <= 8.0 shtr_respawn_time = 175 ENDIF shtr_enemy_alive[0] = 1 shtr_random = 1 ENDIF ENDIF RETURN shtr_enemy_movement: shtr_current_enemy = 0 WHILE shtr_current_enemy < 8 IF shtr_enemy_alive[shtr_current_enemy] = 1 DRAW_SPRITE 12 shtr_enemy_x[shtr_current_enemy] shtr_enemy_y[shtr_current_enemy] 32.0 32.0 255 255 255 255 shtr_enemy_x[shtr_current_enemy] -=@ shtr_enemy_speed[shtr_current_enemy] shtr_sin_multiplier = shtr_enemy_x[shtr_current_enemy] / shtr_sin_cycle_range shtr_sin_degree_input = shtr_sin_multiplier * 360.0 SIN shtr_sin_degree_input shtr_sin_degree_output shtr_initial_y = shtr_sin_degree_output * shtr_amplitude shtr_enemy_y[shtr_current_enemy] = shtr_initial_y + shtr_gen_y IF shtr_enemy_x[shtr_current_enemy] < 0.0 shtr_enemy_x[shtr_current_enemy] = 0.0 shtr_enemy_y[shtr_current_enemy] = 0.0 IF shtr_score > 24 IF shtr_score = shtr_hi_score IF shtr_score > shtr_hi_s[0] AND shtr_score > shtr_hi_s[1] AND shtr_score > shtr_hi_s[2] AND shtr_score > shtr_hi_s[3] AND shtr_score > shtr_hi_s[4] IF shtr_score > shtr_hi_s[5] AND shtr_score > shtr_hi_s[6] AND shtr_score > shtr_hi_s[7] AND shtr_score > shtr_hi_s[8] AND shtr_score > shtr_hi_s[9] shtr_hi_score -= 25 ENDIF ENDIF ENDIF shtr_score -= 25 ENDIF shtr_enemy_alive[shtr_current_enemy] = 0 ENDIF ENDIF shtr_current_enemy++ ENDWHILE RETURN // Projectiles ---------------------------------------------------------------- shtr_projectile_movement: shtr_current_projectile = 1 WHILE shtr_current_projectile < 16 IF shtr_projectile_alive[shtr_current_projectile] = 1 DRAW_SPRITE 11 shtr_projectile_x[shtr_current_projectile] shtr_projectile_y[shtr_current_projectile] shtr_projectile_size shtr_projectile_size 255 255 255 255 shtr_projectile_x[shtr_current_projectile] +=@ shtr_fire_speed IF shtr_projectile_x[shtr_current_projectile] > 639.0 shtr_projectile_y[shtr_current_projectile] = 0.0 shtr_projectile_alive[shtr_current_projectile] = 0 ENDIF ENDIF IF shtr_up_projectile_alive[shtr_current_projectile] = 1 DRAW_SPRITE 11 shtr_up_projectile_x[shtr_current_projectile] shtr_up_projectile_y[shtr_current_projectile] shtr_projectile_size shtr_projectile_size 255 255 255 255 shtr_up_projectile_x[shtr_current_projectile] +=@ shtr_x_add shtr_up_projectile_y[shtr_current_projectile] -=@ shtr_y_add IF shtr_up_projectile_x[shtr_current_projectile] > 639.0 shtr_up_projectile_y[shtr_current_projectile] = 0.0 shtr_up_projectile_alive[shtr_current_projectile] = 0 ENDIF ENDIF IF shtr_down_projectile_alive[shtr_current_projectile] = 1 DRAW_SPRITE 11 shtr_down_projectile_x[shtr_current_projectile] shtr_down_projectile_y[shtr_current_projectile] shtr_projectile_size shtr_projectile_size 255 255 255 255 shtr_down_projectile_x[shtr_current_projectile] +=@ shtr_x_add shtr_down_projectile_y[shtr_current_projectile] +=@ shtr_y_add IF shtr_down_projectile_x[shtr_current_projectile] > 639.0 shtr_down_projectile_y[shtr_current_projectile] = 0.0 shtr_down_projectile_alive[shtr_current_projectile] = 0 ENDIF ENDIF shtr_current_projectile++ ENDWHILE RETURN shtr_enemy_fire: shtr_current_enemy = 0 WHILE shtr_current_enemy < 8 IF shtr_enemy_x[shtr_current_enemy] > 320.0 IF shtr_shot = 0 IF shtr_enemy_alive[shtr_current_enemy] = 1 IF shtr_enemy_shot_alive[shtr_current_enemy] = 0 shtr_enemy_shot_x[shtr_current_enemy] = shtr_enemy_x[shtr_current_enemy] shtr_enemy_shot_y[shtr_current_enemy] = shtr_enemy_y[shtr_current_enemy] shtr_enemy_shot_alive[shtr_current_enemy] = 1 shtr_shot++ shtr_enemy_shot_speed = shtr_enemy_speed[shtr_current_enemy] * 1.5 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_ENEMY_FIRE ENDIF ENDIF ENDIF ENDIF IF shtr_shot = 1 IF shtr_enemy_shot_alive[shtr_current_enemy] = 1 IF shtr_player_alive = 1 IF DO_2D_RECTANGLES_COLLIDE shtr_plyr_x shtr_plyr_y 32.0 32.0 shtr_enemy_shot_x[shtr_current_enemy] shtr_enemy_shot_y[shtr_current_enemy] 8.0 8.0 shtr_enemy_shot_alive[shtr_current_enemy] = 0 shtr_enemy_shot_x[shtr_current_enemy] = 0.0 shtr_enemy_shot_y[shtr_current_enemy] = 0.0 shtr_shot = 0 shtr_player_alive = 0 ENDIF ENDIF DRAW_SPRITE 14 shtr_enemy_shot_x[shtr_current_enemy] shtr_enemy_shot_y[shtr_current_enemy] shtr_projectile_size shtr_projectile_size 255 255 255 255 shtr_enemy_shot_x[shtr_current_enemy] -=@ shtr_enemy_shot_speed IF shtr_enemy_shot_x[shtr_current_enemy] < 0.0 shtr_enemy_shot_alive[shtr_current_enemy] = 0 shtr_enemy_shot_x[shtr_current_enemy] = 0.0 shtr_enemy_shot_y[shtr_current_enemy] = 0.0 shtr_shot = 0 ENDIF ENDIF ENDIF shtr_current_enemy++ ENDWHILE RETURN // Collision ------------------------------------------------------------------ shtr_collision: shtr_current_enemy = 0 WHILE shtr_current_enemy < 8 IF shtr_enemy_alive[shtr_current_enemy] = 1 shtr_current_projectile = 1 WHILE shtr_current_projectile < 16 IF DO_2D_RECTANGLES_COLLIDE shtr_projectile_x[shtr_current_projectile] shtr_projectile_y[shtr_current_projectile] shtr_projectile_col_x shtr_projectile_col_y shtr_enemy_x[shtr_current_enemy] shtr_enemy_y[shtr_current_enemy] shtr_enemy_col_x shtr_enemy_col_y shtr_score += 100 shtr_enemy_alive[shtr_current_enemy] = 2 shtr_projectile_alive[shtr_current_projectile] = 0 shtr_projectile_x[shtr_current_projectile] = 0.0 shtr_projectile_y[shtr_current_projectile] = 0.0 GET_GAME_TIMER shtr_exp_start[shtr_current_enemy] REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_EXPLOSION shtr_pickup_counter++ IF shtr_pickup_collected = 1 IF shtr_pickup_counter = 8 shtr_pickup_x = shtr_enemy_x[shtr_current_enemy] shtr_pickup_y = shtr_enemy_y[shtr_current_enemy] shtr_pickup_collected = 0 ELSE shtr_pickup_x = 0.0 shtr_pickup_y = 0.0 ENDIF ENDIF ENDIF IF DO_2D_RECTANGLES_COLLIDE shtr_up_projectile_x[shtr_current_projectile] shtr_up_projectile_y[shtr_current_projectile] shtr_projectile_col_x shtr_projectile_col_y shtr_enemy_x[shtr_current_enemy] shtr_enemy_y[shtr_current_enemy] shtr_enemy_col_x shtr_enemy_col_y shtr_score += 100 shtr_enemy_alive[shtr_current_enemy] = 2 shtr_up_projectile_alive[shtr_current_projectile] = 0 shtr_up_projectile_x[shtr_current_projectile] = 0.0 shtr_up_projectile_y[shtr_current_projectile] = 0.0 GET_GAME_TIMER shtr_exp_start[shtr_current_enemy] REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_EXPLOSION shtr_pickup_counter++ IF shtr_pickup_collected = 1 IF shtr_pickup_counter = 8 shtr_pickup_x = shtr_enemy_x[shtr_current_enemy] shtr_pickup_y = shtr_enemy_y[shtr_current_enemy] shtr_pickup_collected = 0 ELSE shtr_pickup_x = 0.0 shtr_pickup_y = 0.0 ENDIF ENDIF ENDIF IF DO_2D_RECTANGLES_COLLIDE shtr_down_projectile_x[shtr_current_projectile] shtr_down_projectile_y[shtr_current_projectile] shtr_projectile_col_x shtr_projectile_col_y shtr_enemy_x[shtr_current_enemy] shtr_enemy_y[shtr_current_enemy] shtr_enemy_col_x shtr_enemy_col_y shtr_score += 100 shtr_enemy_alive[shtr_current_enemy] = 2 shtr_down_projectile_alive[shtr_current_projectile] = 0 shtr_down_projectile_x[shtr_current_projectile] = 0.0 shtr_down_projectile_y[shtr_current_projectile] = 0.0 GET_GAME_TIMER shtr_exp_start[shtr_current_enemy] REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_EXPLOSION shtr_pickup_counter++ IF shtr_pickup_collected = 1 IF shtr_pickup_counter = 8 shtr_pickup_x = shtr_enemy_x[shtr_current_enemy] shtr_pickup_y = shtr_enemy_y[shtr_current_enemy] shtr_pickup_collected = 0 ELSE shtr_pickup_x = 0.0 shtr_pickup_y = 0.0 ENDIF ENDIF ENDIF shtr_current_projectile++ ENDWHILE ENDIF IF shtr_enemy_alive[shtr_current_enemy] = 1 IF shtr_player_alive = 1 IF DO_2D_RECTANGLES_COLLIDE shtr_plyr_x shtr_plyr_y 32.0 32.0 shtr_enemy_x[shtr_current_enemy] shtr_enemy_y[shtr_current_enemy] shtr_enemy_col_x shtr_enemy_col_y shtr_enemy_alive[shtr_current_enemy] = 2 GET_GAME_TIMER shtr_exp_start[shtr_current_enemy] REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_EXPLOSION shtr_player_alive = 0 ENDIF ENDIF ENDIF shtr_current_enemy++ ENDWHILE RETURN // Hi Score-A-Rama ------------------------------------------------------------ shtr_check_scores: // (c) Graeme 2003 shtr_ranking = 9 shtr_score_update = FALSE shtr_score_check = TRUE // find which slot the new score has to be inserted into WHILE shtr_ranking >= 0 AND shtr_score_check = TRUE IF shtr_score > shtr_hi_s[shtr_ranking] shtr_ranking-- shtr_score_update = TRUE shtr_on_table = 3 shtr_draw_highlight = 1 ELSE shtr_score_check = FALSE ENDIF ENDWHILE IF shtr_score_update = TRUE shtr_ranking++ // shift the other scores down shtr_destination_slot = 9 shtr_source_slot = 8 WHILE shtr_source_slot >= shtr_ranking $shtr_hi_1[shtr_destination_slot] = $shtr_hi_1[shtr_source_slot] // First letter of player name $shtr_hi_2[shtr_destination_slot] = $shtr_hi_2[shtr_source_slot] // Second letter of player name $shtr_hi_3[shtr_destination_slot] = $shtr_hi_3[shtr_source_slot] // Third letter of player name shtr_hi_l[shtr_destination_slot] = shtr_hi_l[shtr_source_slot] // Level Number shtr_hi_s[shtr_destination_slot] = shtr_hi_s[shtr_source_slot] // Score shtr_destination_slot-- shtr_source_slot-- ENDWHILE // write the new score into the correct slot shtr_hi_s[shtr_ranking] = shtr_score shtr_hi_l[shtr_ranking] = shtr_level shtr_write = 0 shtr_chars = 10 // A ENDIF RETURN shtr_write_name: IF INPUT = INPUT_NEUTRAL AND NOT IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON shtr_press = 0 ENDIF // Write first letter IF shtr_write = 0 $shtr_hi_1[shtr_ranking] = $shtr_char[shtr_chars] $shtr_hi_2[shtr_ranking] = $shtr_char[10] $shtr_hi_3[shtr_ranking] = $shtr_char[10] IF shtr_press = 0 IF INPUT = INPUT_UP OR INPUT = INPUT_RIGHT IF shtr_chars < 36 shtr_chars++ ELSE shtr_chars = 0 ENDIF REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_SELECT shtr_press = 1 ENDIF IF INPUT = INPUT_DOWN OR INPUT = INPUT_LEFT IF shtr_chars > 0 shtr_chars-- ELSE shtr_chars = 36 ENDIF REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_SELECT shtr_press = 1 ENDIF IF IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON shtr_chars = 10 shtr_write = 1 shtr_press = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_ACCEPT ENDIF ENDIF ENDIF // Write second letter IF shtr_write = 1 $shtr_hi_2[shtr_ranking] = $shtr_char[shtr_chars] IF shtr_press = 0 IF INPUT = INPUT_UP OR INPUT = INPUT_RIGHT IF shtr_chars < 36 shtr_chars++ ELSE shtr_chars = 0 ENDIF REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_SELECT shtr_press = 1 ENDIF IF INPUT = INPUT_DOWN OR INPUT = INPUT_LEFT IF shtr_chars > 0 shtr_chars-- ELSE shtr_chars = 36 ENDIF REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_SELECT shtr_press = 1 ENDIF IF IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON shtr_chars = 10 shtr_write = 2 shtr_press = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_ACCEPT ENDIF ENDIF ENDIF // Write third letter IF shtr_write = 2 $shtr_hi_3[shtr_ranking] = $shtr_char[shtr_chars] IF shtr_press = 0 IF INPUT = INPUT_UP OR INPUT = INPUT_RIGHT IF shtr_chars < 36 shtr_chars++ ELSE shtr_chars = 0 ENDIF REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_SELECT shtr_press = 1 ENDIF IF INPUT = INPUT_DOWN OR INPUT = INPUT_LEFT IF shtr_chars > 0 shtr_chars-- ELSE shtr_chars = 36 ENDIF REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_SELECT shtr_press = 1 ENDIF IF IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON shtr_write = 3 shtr_press = 1 shtr_on_table = 4 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_GOGO_ACCEPT ENDIF ENDIF ENDIF RETURN shtr_draw_scores: shtr_hi_loop = 0 WHILE shtr_hi_loop < 10 //WAIT 0 GOSUB shtr_text_gosub DISPLAY_TEXT shtr_hi_1_x[shtr_hi_loop] shtr_hi_1_y[shtr_hi_loop] $shtr_hi_1[shtr_hi_loop] // First letter of player name GOSUB shtr_text_gosub DISPLAY_TEXT shtr_hi_2_x[shtr_hi_loop] shtr_hi_2_y[shtr_hi_loop] $shtr_hi_2[shtr_hi_loop] // Second letter of player name GOSUB shtr_text_gosub DISPLAY_TEXT shtr_hi_3_x[shtr_hi_loop] shtr_hi_3_y[shtr_hi_loop] $shtr_hi_3[shtr_hi_loop] GOSUB shtr_text_gosub SET_TEXT_RIGHT_JUSTIFY ON DISPLAY_TEXT_WITH_NUMBER shtr_hi_4_x[shtr_hi_loop] shtr_hi_4_y[shtr_hi_loop] SHTR_LV shtr_hi_s[shtr_hi_loop] shtr_hi_loop ++ ENDWHILE GOSUB shtr_text_gosub DISPLAY_TEXT 320.0 64.0 SHTR_2f IF shtr_lives = 0 AND shtr_draw_highlight = 1 IF shtr_write = 0 GOSUB shtr_text_gosub SET_TEXT_COLOUR 0 255 0 255 DISPLAY_TEXT shtr_hi_1_x[shtr_ranking] shtr_hi_1_y[shtr_ranking] $shtr_hi_1[shtr_ranking] ELSE GOSUB shtr_text_gosub SET_TEXT_COLOUR 255 0 0 255 DISPLAY_TEXT shtr_hi_1_x[shtr_ranking] shtr_hi_1_y[shtr_ranking] $shtr_hi_1[shtr_ranking] ENDIF // First letter of player name IF shtr_write = 1 GOSUB shtr_text_gosub SET_TEXT_COLOUR 0 255 0 255 DISPLAY_TEXT shtr_hi_2_x[shtr_ranking] shtr_hi_2_y[shtr_ranking] $shtr_hi_2[shtr_ranking] ELSE GOSUB shtr_text_gosub SET_TEXT_COLOUR 255 0 0 255 DISPLAY_TEXT shtr_hi_2_x[shtr_ranking] shtr_hi_2_y[shtr_ranking] $shtr_hi_2[shtr_ranking] ENDIF // Second letter of player name IF shtr_write = 2 GOSUB shtr_text_gosub SET_TEXT_COLOUR 0 255 0 255 DISPLAY_TEXT shtr_hi_3_x[shtr_ranking] shtr_hi_3_y[shtr_ranking] $shtr_hi_3[shtr_ranking] ELSE GOSUB shtr_text_gosub SET_TEXT_COLOUR 255 0 0 255 DISPLAY_TEXT shtr_hi_3_x[shtr_ranking] shtr_hi_3_y[shtr_ranking] $shtr_hi_3[shtr_ranking] ENDIF GOSUB shtr_text_gosub SET_TEXT_COLOUR 255 0 0 255 SET_TEXT_RIGHT_JUSTIFY ON DISPLAY_TEXT_WITH_NUMBER shtr_hi_4_x[shtr_ranking] shtr_hi_4_y[shtr_ranking] SHTR_LV shtr_hi_s[shtr_ranking] ENDIF RETURN shtr_generate_default_scores: GENERATE_RANDOM_INT_IN_RANGE 1 30 shtr_num_gen // Neil (NF.) IF shtr_num_gen = 1 IF shtr_used[1] = 0 $shtr_hi_1[shtr_current] = $shtr_char[23] $shtr_hi_2[shtr_current] = $shtr_char[15] $shtr_hi_3[shtr_current] = $shtr_char[36] shtr_used[1] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // Imran (IMY) IF shtr_num_gen = 2 IF shtr_used[2] = 0 $shtr_hi_1[shtr_current] = $shtr_char[18] $shtr_hi_2[shtr_current] = $shtr_char[22] $shtr_hi_3[shtr_current] = $shtr_char[34] shtr_used[2] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // Willie (WIL) IF shtr_num_gen = 3 IF shtr_used[3] = 0 $shtr_hi_1[shtr_current] = $shtr_char[32] $shtr_hi_2[shtr_current] = $shtr_char[18] $shtr_hi_3[shtr_current] = $shtr_char[21] shtr_used[3] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // Chris (CKR) IF shtr_num_gen = 4 IF shtr_used[4] = 0 $shtr_hi_1[shtr_current] = $shtr_char[12] $shtr_hi_2[shtr_current] = $shtr_char[20] $shtr_hi_3[shtr_current] = $shtr_char[27] shtr_used[4] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // Andy (DBP) IF shtr_num_gen = 5 IF shtr_used[5] = 0 $shtr_hi_1[shtr_current] = $shtr_char[13] $shtr_hi_2[shtr_current] = $shtr_char[11] $shtr_hi_3[shtr_current] = $shtr_char[25] shtr_used[5] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // David (DAV) IF shtr_num_gen = 6 IF shtr_used[6] = 0 $shtr_hi_1[shtr_current] = $shtr_char[13] $shtr_hi_2[shtr_current] = $shtr_char[10] $shtr_hi_3[shtr_current] = $shtr_char[31] shtr_used[6] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // James (DOD) IF shtr_num_gen = 7 IF shtr_used[7] = 0 $shtr_hi_1[shtr_current] = $shtr_char[13] $shtr_hi_2[shtr_current] = $shtr_char[24] $shtr_hi_3[shtr_current] = $shtr_char[13] shtr_used[7] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // Simon (SJL) IF shtr_num_gen = 8 IF shtr_used[8] = 0 $shtr_hi_1[shtr_current] = $shtr_char[28] $shtr_hi_2[shtr_current] = $shtr_char[19] $shtr_hi_3[shtr_current] = $shtr_char[21] shtr_used[8] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // Steve (STE) IF shtr_num_gen = 9 IF shtr_used[9] = 0 $shtr_hi_1[shtr_current] = $shtr_char[28] $shtr_hi_2[shtr_current] = $shtr_char[29] $shtr_hi_3[shtr_current] = $shtr_char[14] shtr_used[9] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // Judith (JUD) IF shtr_num_gen = 10 IF shtr_used[10] = 0 $shtr_hi_1[shtr_current] = $shtr_char[19] $shtr_hi_2[shtr_current] = $shtr_char[30] $shtr_hi_3[shtr_current] = $shtr_char[13] shtr_used[10] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // Kev Bolt (KMB) IF shtr_num_gen = 11 IF shtr_used[11] = 0 $shtr_hi_1[shtr_current] = $shtr_char[20] $shtr_hi_2[shtr_current] = $shtr_char[22] $shtr_hi_3[shtr_current] = $shtr_char[11] shtr_used[11] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // Graeme (GSW) IF shtr_num_gen = 12 IF shtr_used[12] = 0 $shtr_hi_1[shtr_current] = $shtr_char[16] $shtr_hi_2[shtr_current] = $shtr_char[28] $shtr_hi_3[shtr_current] = $shtr_char[32] shtr_used[12] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // Dave W (DSW) IF shtr_num_gen = 13 IF shtr_used[13] = 0 $shtr_hi_1[shtr_current] = $shtr_char[13] $shtr_hi_2[shtr_current] = $shtr_char[28] $shtr_hi_3[shtr_current] = $shtr_char[32] shtr_used[13] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // Woody (WDY) IF shtr_num_gen = 14 IF shtr_used[14] = 0 $shtr_hi_1[shtr_current] = $shtr_char[32] $shtr_hi_2[shtr_current] = $shtr_char[13] $shtr_hi_3[shtr_current] = $shtr_char[34] shtr_used[14] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // Gary (GAZ) IF shtr_num_gen = 15 IF shtr_used[15] = 0 $shtr_hi_1[shtr_current] = $shtr_char[16] $shtr_hi_2[shtr_current] = $shtr_char[10] $shtr_hi_3[shtr_current] = $shtr_char[35] shtr_used[15] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // Wayland (WAZ) IF shtr_num_gen = 16 IF shtr_used[16] = 0 $shtr_hi_1[shtr_current] = $shtr_char[32] $shtr_hi_2[shtr_current] = $shtr_char[10] $shtr_hi_3[shtr_current] = $shtr_char[35] shtr_used[16] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // Kinch (KIN) IF shtr_num_gen = 17 IF shtr_used[17] = 0 $shtr_hi_1[shtr_current] = $shtr_char[20] $shtr_hi_2[shtr_current] = $shtr_char[18] $shtr_hi_3[shtr_current] = $shtr_char[23] shtr_used[17] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // Bean (BEA) IF shtr_num_gen = 18 IF shtr_used[18] = 0 $shtr_hi_1[shtr_current] = $shtr_char[11] $shtr_hi_2[shtr_current] = $shtr_char[14] $shtr_hi_3[shtr_current] = $shtr_char[10] shtr_used[18] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // Baxy (BAX) IF shtr_num_gen = 19 IF shtr_used[19] = 0 $shtr_hi_1[shtr_current] = $shtr_char[11] $shtr_hi_2[shtr_current] = $shtr_char[10] $shtr_hi_3[shtr_current] = $shtr_char[33] shtr_used[19] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // (LOU) IF shtr_num_gen = 20 IF shtr_used[20] = 0 $shtr_hi_1[shtr_current] = $shtr_char[21] $shtr_hi_2[shtr_current] = $shtr_char[24] $shtr_hi_3[shtr_current] = $shtr_char[30] shtr_used[20] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // (JNO) IF shtr_num_gen = 21 IF shtr_used[21] = 0 $shtr_hi_1[shtr_current] = $shtr_char[19] $shtr_hi_2[shtr_current] = $shtr_char[23] $shtr_hi_3[shtr_current] = $shtr_char[24] shtr_used[21] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // (MYT) IF shtr_num_gen = 22 IF shtr_used[22] = 0 $shtr_hi_1[shtr_current] = $shtr_char[22] $shtr_hi_2[shtr_current] = $shtr_char[34] $shtr_hi_3[shtr_current] = $shtr_char[29] shtr_used[22] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // (DEF) IF shtr_num_gen = 23 IF shtr_used[23] = 0 $shtr_hi_1[shtr_current] = $shtr_char[13] $shtr_hi_2[shtr_current] = $shtr_char[14] $shtr_hi_3[shtr_current] = $shtr_char[15] shtr_used[23] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // (KHZ) IF shtr_num_gen = 24 IF shtr_used[24] = 0 $shtr_hi_1[shtr_current] = $shtr_char[20] $shtr_hi_2[shtr_current] = $shtr_char[17] $shtr_hi_3[shtr_current] = $shtr_char[35] shtr_used[24] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // (MEO) IF shtr_num_gen = 25 IF shtr_used[25] = 0 $shtr_hi_1[shtr_current] = $shtr_char[22] $shtr_hi_2[shtr_current] = $shtr_char[14] $shtr_hi_3[shtr_current] = $shtr_char[24] shtr_used[25] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // George (GFW) IF shtr_num_gen = 26 IF shtr_used[26] = 0 $shtr_hi_1[shtr_current] = $shtr_char[16] $shtr_hi_2[shtr_current] = $shtr_char[15] $shtr_hi_3[shtr_current] = $shtr_char[32] shtr_used[26] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // Will (WRM) IF shtr_num_gen = 27 IF shtr_used[27] = 0 $shtr_hi_1[shtr_current] = $shtr_char[32] $shtr_hi_2[shtr_current] = $shtr_char[27] $shtr_hi_3[shtr_current] = $shtr_char[22] shtr_used[27] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // Allan (A.W) IF shtr_num_gen = 28 IF shtr_used[28] = 0 $shtr_hi_1[shtr_current] = $shtr_char[10] $shtr_hi_2[shtr_current] = $shtr_char[36] $shtr_hi_3[shtr_current] = $shtr_char[32] shtr_used[28] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF // Richy (RIC) IF shtr_num_gen = 29 IF shtr_used[29] = 0 $shtr_hi_1[shtr_current] = $shtr_char[27] $shtr_hi_2[shtr_current] = $shtr_char[18] $shtr_hi_3[shtr_current] = $shtr_char[12] shtr_used[29] = 1 ELSE GOTO shtr_generate_default_scores ENDIF ENDIF RETURN // Initialisation ------------------------------------------------------------- shtr_hiscore_init: // ---- Hi Score Chars $shtr_char[0] = SHTR_0 // 0 $shtr_char[1] = SHTR_1 // 1 $shtr_char[2] = SHTR_2 // 2 $shtr_char[3] = SHTR_3 // 3 $shtr_char[4] = SHTR_4 // 4 $shtr_char[5] = SHTR_5 // 5 $shtr_char[6] = SHTR_6 // 6 $shtr_char[7] = SHTR_7 // 7 $shtr_char[8] = SHTR_8 // 8 $shtr_char[9] = SHTR_9 // 9 $shtr_char[10] = SHTR_A // A $shtr_char[11] = SHTR_B // B $shtr_char[12] = SHTR_C // C $shtr_char[13] = SHTR_D // D $shtr_char[14] = SHTR_E // E $shtr_char[15] = SHTR_F // F $shtr_char[16] = SHTR_G // G $shtr_char[17] = SHTR_H // H $shtr_char[18] = SHTR_I // I $shtr_char[19] = SHTR_J // J $shtr_char[20] = SHTR_K // K $shtr_char[21] = SHTR_L // L $shtr_char[22] = SHTR_M // M $shtr_char[23] = SHTR_N // N $shtr_char[24] = SHTR_O // O $shtr_char[25] = SHTR_P // P $shtr_char[26] = SHTR_Q // Q $shtr_char[27] = SHTR_R // R $shtr_char[28] = SHTR_S // S $shtr_char[29] = SHTR_T // T $shtr_char[30] = SHTR_U // U $shtr_char[31] = SHTR_V // V $shtr_char[32] = SHTR_W // W $shtr_char[33] = SHTR_X // X $shtr_char[34] = SHTR_Y // Y $shtr_char[35] = SHTR_Z // Z $shtr_char[36] = SHTR_PE // . // ---- Hi Score Coords shtr_hi_1_x[0] = 176.0 // First letter of player name shtr_hi_1_y[0] = 96.0 shtr_hi_2_x[0] = 224.0 // Second letter of player name shtr_hi_2_y[0] = 96.0 shtr_hi_3_x[0] = 272.0 // Third letter of player name shtr_hi_3_y[0] = 96.0 shtr_hi_4_x[0] = 464.0 // Level with Number & score shtr_hi_4_y[0] = 96.0 shtr_hi_1_x[1] = 176.0 shtr_hi_1_y[1] = 126.0 shtr_hi_2_x[1] = 224.0 shtr_hi_2_y[1] = 126.0 shtr_hi_3_x[1] = 272.0 shtr_hi_3_y[1] = 126.0 shtr_hi_4_x[1] = 464.0 shtr_hi_4_y[1] = 126.0 shtr_hi_1_x[2] = 176.0 shtr_hi_1_y[2] = 156.0 shtr_hi_2_x[2] = 224.0 shtr_hi_2_y[2] = 156.0 shtr_hi_3_x[2] = 272.0 shtr_hi_3_y[2] = 156.0 shtr_hi_4_x[2] = 464.0 shtr_hi_4_y[2] = 156.0 shtr_hi_1_x[3] = 176.0 shtr_hi_1_y[3] = 186.0 shtr_hi_2_x[3] = 224.0 shtr_hi_2_y[3] = 186.0 shtr_hi_3_x[3] = 272.0 shtr_hi_3_y[3] = 186.0 shtr_hi_4_x[3] = 464.0 shtr_hi_4_y[3] = 186.0 shtr_hi_1_x[4] = 176.0 shtr_hi_1_y[4] = 216.0 shtr_hi_2_x[4] = 224.0 shtr_hi_2_y[4] = 216.0 shtr_hi_3_x[4] = 272.0 shtr_hi_3_y[4] = 216.0 shtr_hi_4_x[4] = 464.0 shtr_hi_4_y[4] = 216.0 shtr_hi_1_x[5] = 176.0 shtr_hi_1_y[5] = 246.0 shtr_hi_2_x[5] = 224.0 shtr_hi_2_y[5] = 246.0 shtr_hi_3_x[5] = 272.0 shtr_hi_3_y[5] = 246.0 shtr_hi_4_x[5] = 464.0 shtr_hi_4_y[5] = 246.0 shtr_hi_1_x[6] = 176.0 shtr_hi_1_y[6] = 276.0 shtr_hi_2_x[6] = 224.0 shtr_hi_2_y[6] = 276.0 shtr_hi_3_x[6] = 272.0 shtr_hi_3_y[6] = 276.0 shtr_hi_4_x[6] = 464.0 shtr_hi_4_y[6] = 276.0 shtr_hi_1_x[7] = 176.0 shtr_hi_1_y[7] = 306.0 shtr_hi_2_x[7] = 224.0 shtr_hi_2_y[7] = 306.0 shtr_hi_3_x[7] = 272.0 shtr_hi_3_y[7] = 306.0 shtr_hi_4_x[7] = 464.0 shtr_hi_4_y[7] = 306.0 shtr_hi_1_x[8] = 176.0 shtr_hi_1_y[8] = 336.0 shtr_hi_2_x[8] = 224.0 shtr_hi_2_y[8] = 336.0 shtr_hi_3_x[8] = 272.0 shtr_hi_3_y[8] = 336.0 shtr_hi_4_x[8] = 464.0 shtr_hi_4_y[8] = 336.0 shtr_hi_1_x[9] = 176.0 shtr_hi_1_y[9] = 366.0 shtr_hi_2_x[9] = 224.0 shtr_hi_2_y[9] = 366.0 shtr_hi_3_x[9] = 272.0 shtr_hi_3_y[9] = 366.0 shtr_hi_4_x[9] = 464.0 shtr_hi_4_y[9] = 366.0 IF shtr_played_before = 0 $shtr_hi_1[0] = $shtr_char[12] $shtr_hi_2[0] = $shtr_char[36] $shtr_hi_3[0] = $shtr_char[36] shtr_hi_l[0] = 10 shtr_hi_s[0] = 1000 shtr_current = 1 GOSUB shtr_generate_default_scores shtr_hi_l[1] = 9 shtr_hi_s[1] = 900 shtr_current = 2 GOSUB shtr_generate_default_scores shtr_hi_l[2] = 8 shtr_hi_s[2] = 800 shtr_current = 3 GOSUB shtr_generate_default_scores shtr_hi_l[3] = 7 shtr_hi_s[3] = 700 shtr_current = 4 GOSUB shtr_generate_default_scores shtr_hi_l[4] = 6 shtr_hi_s[4] = 600 shtr_current = 5 GOSUB shtr_generate_default_scores shtr_hi_l[5] = 5 shtr_hi_s[5] = 500 shtr_current = 6 GOSUB shtr_generate_default_scores shtr_hi_l[6] = 4 shtr_hi_s[6] = 400 shtr_current = 7 GOSUB shtr_generate_default_scores shtr_hi_l[7] = 3 shtr_hi_s[7] = 300 shtr_current = 8 GOSUB shtr_generate_default_scores shtr_hi_l[8] = 2 shtr_hi_s[8] = 200 shtr_current = 9 GOSUB shtr_generate_default_scores shtr_hi_l[9] = 1 shtr_hi_s[9] = 100 shtr_played_before = 1 ENDIF shtr_hi_score = shtr_hi_s[0] RETURN RenderSpaceMonkeyBorder: GOSUB DrawAspectCorrectingQuads // For aspect correction. DRAW_SPRITE 25 320.0 224.0 640.0 448.0 255 255 255 255 RETURN shtr_init: // player weapon // flags shtr_button1 = 1 shtr_player_alive = 1 shtr_front_end = 1 shtr_score = 0 shtr_lives = 2 shtr_button_pressed = 0 // projectile speed shtr_fire_speed = 15.0 shtr_plyr_x = 80.0 shtr_plyr_y = 224.0 shtr_projectile_size = 8.0 shtr_shot_angle = 10.0 // enemy speed shtr_range_start = 1.0 shtr_range_end = 3.0 // enemy projectile shtr_fire_alive = 0 shtr_shot = 0 // Pickups shtr_pickup_counter = 0 shtr_pickup_collected = 1 shtr_pickup_current = 31 shtr_speed_pickup = 250 shtr_auto_pickup = 0 shtr_multi_pickup = 0 shtr_pickup_move_switch = 0 // ---- HiScore Vars shtr_write = 0 shtr_draw_highlight = 0 shtr_enemy_x[0] = 660.0 shtr_enemy_x[1] = 660.0 shtr_enemy_x[2] = 660.0 shtr_enemy_x[3] = 660.0 shtr_heat_bar = 0 shtr_start_time = 0 shtr_end_time = 0 shtr_time_diff = 0 shtr_start_time_hit = 0 shtr_end_time_hit = 0 shtr_time_diff_hit = 0 shtr_current_projectile = 1 shtr_projectile_alive[1] = 0 shtr_projectile_alive[2] = 0 shtr_projectile_alive[3] = 0 shtr_projectile_alive[4] = 0 shtr_projectile_alive[5] = 0 shtr_projectile_alive[6] = 0 shtr_projectile_alive[7] = 0 shtr_projectile_alive[8] = 0 shtr_up_projectile_alive[1] = 0 shtr_up_projectile_alive[2] = 0 shtr_up_projectile_alive[3] = 0 shtr_up_projectile_alive[4] = 0 shtr_up_projectile_alive[5] = 0 shtr_up_projectile_alive[6] = 0 shtr_up_projectile_alive[7] = 0 shtr_up_projectile_alive[8] = 0 shtr_down_projectile_alive[1] = 0 shtr_down_projectile_alive[2] = 0 shtr_down_projectile_alive[3] = 0 shtr_down_projectile_alive[4] = 0 shtr_down_projectile_alive[5] = 0 shtr_down_projectile_alive[6] = 0 shtr_down_projectile_alive[7] = 0 shtr_down_projectile_alive[8] = 0 shtr_enemy_alive[0] = 0 shtr_enemy_alive[1] = 0 shtr_enemy_alive[2] = 0 shtr_enemy_alive[3] = 0 shtr_enemy_alive[4] = 0 shtr_enemy_alive[5] = 0 shtr_enemy_alive[6] = 0 shtr_enemy_alive[7] = 0 shtr_enemy_shot_alive[0] = 0 shtr_enemy_shot_alive[1] = 0 shtr_enemy_shot_alive[2] = 0 shtr_enemy_shot_alive[3] = 0 shtr_enemy_shot_alive[4] = 0 shtr_enemy_shot_alive[5] = 0 shtr_enemy_shot_alive[6] = 0 shtr_enemy_shot_alive[7] = 0 shtr_respawn = 0 shtr_random = 0 shtr_enemy_col_x = 32.0 shtr_enemy_col_y = 32.0 shtr_projectile_col_x = 8.0 shtr_projectile_col_y = 8.0 shtr_plyr_col_x = 32.0 shtr_plyr_col_y = 32.0 shtr_amplitude = 0.0 RETURN // the end ********************************************************************************* } /* {--------------SHOOTER---------------------------} [SHTR_1a:SHTR] START [SHTR_1b:SHTR] HI-SCORES [SHTR_1c:SHTR] EXIT [SHTR_2a:SHTR] BEGIN! [SHTR_2b:SHTR] LIVES ~1~ [SHTR_2c:SHTR] HI-SCORE ~1~ [SHTR_2d:SHTR] 1UP ~1~ [SHTR_2e:SHTR] BONUS [SHTR_3a:SHTR] CONTINUE? [SHTR_3b:SHTR] GAME OVER! [SHTR_3c:SHTR] ENTER NAME : [SHTR_0:SHTR] 0 [SHTR_1:SHTR] 1 [SHTR_2:SHTR] 2 [SHTR_3:SHTR] 3 [SHTR_4:SHTR] 4 [SHTR_5:SHTR] 5 [SHTR_6:SHTR] 6 [SHTR_7:SHTR] 7 [SHTR_8:SHTR] 8 [SHTR_9:SHTR] 9 [SHTR_A:SHTR] A [SHTR_B:SHTR] B [SHTR_C:SHTR] C [SHTR_D:SHTR] D [SHTR_E:SHTR] E [SHTR_F:SHTR] F [SHTR_G:SHTR] G [SHTR_H:SHTR] H [SHTR_I:SHTR] I [SHTR_J:SHTR] J [SHTR_K:SHTR] K [SHTR_L:SHTR] L [SHTR_M:SHTR] M [SHTR_N:SHTR] N [SHTR_O:SHTR] O [SHTR_P:SHTR] P [SHTR_Q:SHTR] Q [SHTR_R:SHTR] R [SHTR_S:SHTR] S [SHTR_T:SHTR] T [SHTR_U:SHTR] U [SHTR_V:SHTR] V [SHTR_W:SHTR] W [SHTR_X:SHTR] X [SHTR_Y:SHTR] Y [SHTR_Z:SHTR] Z [SHTR_PE:SHTR] . */ MISSION_START // **************************************************************************************************** // This is the fucking bee game "Bee Be Gone". Not that you would know that from the text in this file. // **************************************************************************************************** GOSUB mission_start_grav IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_grav ENDIF GOSUB mission_cleanup_grav MISSION_END { // variables ******************************************************************************* // sprites // control LVAR_INT grav_add grav_add_smooth // convert integer to floating point LVAR_FLOAT grav_fl_add grav_fl_add_l grav_fl_add_r grav_rotation grav_rotation_step // player co-ordinates VAR_FLOAT grav_plyr_x grav_plyr_y VAR_FLOAT grav_speed_x grav_speed_y grav_dead_x grav_dead_y LVAR_FLOAT grav_jump_x grav_jump_y // player stuff LVAR_INT grav_player_alive grav_plyr grav_jump_f grav_position grav_lives LVAR_INT grav_success grav_pickup grav_score grav_temp_score grav_temp_score2 grav_hi_score LVAR_INT grav_button_pressed grav_level_display grav_level_up // front end stuff VAR_INT nGameState grav_ground grav_next_level // sprite collision sizes LVAR_FLOAT grav_spr_x grav_spr_y // movement LVAR_FLOAT grav_speed grav_gravity grav_collision_w grav_collision_h // platforms LVAR_FLOAT grav_plat_x[101] grav_plat_y[101] LVAR_FLOAT grav_pick_x[101] grav_pick_y[101] LVAR_FLOAT grav_ground_x[101] grav_ground_y[101] VAR_INT grav_pickups grav_total_pickups grav_level grav_temp1 grav_temp2 VAR_INT grav_pickups_display grav_buzz // States of the fucking game. VAR_INT PLAYING_GAME PLAY_SELECTED HI_SCORE_SELECTED EXIT_SELECTED INACTIVE VAR_INT GAME_OVER_INIT GAME_OVER_WAITING DECIDE_HI_SCORES_SCREEN ENTERING_NAME SHOWING_HIGH_SCORES LVAR_FLOAT grav_dist_temp grav_dist_temp_max grav_bias_line grav_layer_y grav_origin LVAR_INT grav_current_plat VAR_FLOAT grav_velocity_x grav_velocity_y grav_temp_1 grav_temp_2 grav_velocity_mag_sqr grav_velocity_mag VAR_FLOAT grav_plyr_dead_speed grav_fire_heading VAR_INT grav_countdown grav_countdown_temp grav_countdown_secs VAR_INT grav_countdown_end grav_countdown_diff grav_countdown_start grav_countdown_max VAR_INT grav_help_end grav_help_diff grav_help_start // ---- Hi Score Stuff VAR_TEXT_LABEL $grav_char[37] VAR_INT grav_chars grav_press grav_temp VAR_INT grav_draw_highlight VAR_INT grav_time_diff grav_end_time grav_start_time VAR_INT grav_hi_loop VAR_FLOAT grav_hi_1_x[10] grav_hi_2_x[10] grav_hi_3_x[10] grav_hi_4_x[10] VAR_FLOAT grav_hi_1_y[10] grav_hi_2_y[10] grav_hi_3_y[10] grav_hi_4_y[10] VAR_INT grav_ranking grav_score_update grav_score_check grav_destination_slot grav_source_slot VAR_INT grav_on_table grav_write VAR_INT grav_played_before grav_current grav_num_gen grav_used[30] VAR_FLOAT grav_screen_x grav_screen_y grav_temp_x grav_temp_y grav_screen_temp_y // -- Timer stuff for bee rotation VAR_FLOAT grav_elapsed_time VAR_INT grav_current_time LVAR_FLOAT ftemp_grav_current_time ftemp_grav_last_time // -- Paralax variables LVAR_FLOAT last_bee_position_y LVAR_FLOAT background_y layer_y layer_y_2 last_layer_y last_layer_y_2 temp_bee_y tile_size // mission start *************************************************************************** mission_start_grav: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN SCRIPT_NAME grav WAIT 0 LOAD_MISSION_TEXT grav LOAD_MISSION_AUDIO 4 SOUND_BANK_BEE WHILE NOT HAS_MISSION_AUDIO_LOADED 4 WAIT 0 ENDWHILE FREEZE_CHAR_POSITION scplayer TRUE SET_PLAYER_CONTROL player1 OFF GET_CHAR_COORDINATES scplayer x y z CLEAR_AREA x y z 50.0 0 SHUT_ALL_CHARS_UP TRUE USE_TEXT_COMMANDS TRUE SET_TEXT_CENTRE ON SET_TEXT_SCALE 3.0 3.0 SET_WIDGET_VALUE WIDGET_ARCADE_JOYSTICK 0.0 // Set the right colored images, each arcade game has unique colors. SET_WIDGET_VALUE WIDGET_ARCADE_BUTTON 0.0 LOAD_TEXTURE_DICTIONARY ld_grav LOAD_SPRITE 1 sky LOAD_SPRITE 2 beea LOAD_SPRITE 3 flwra LOAD_SPRITE 4 ghost LOAD_SPRITE 5 leaf LOAD_SPRITE 6 flwr LOAD_SPRITE 7 cabcorn LOAD_SPRITE 8 tvl LOAD_SPRITE 9 tvr LOAD_SPRITE 10 thorn LOAD_SPRITE 11 bee2 LOAD_SPRITE 12 bee1 LOAD_SPRITE 13 hive LOAD_SPRITE 14 timer LOAD_SPRITE 15 bumble LOAD_SPRITE 16 playw LOAD_SPRITE 17 playy LOAD_SPRITE 18 hiscorew LOAD_SPRITE 19 hiscorey LOAD_SPRITE 20 exitw LOAD_SPRITE 21 exity // ---- Hi Score Chars $grav_char[0] = GRAV_0 // 0 $grav_char[1] = GRAV_1 // 1 $grav_char[2] = GRAV_2 // 2 $grav_char[3] = GRAV_3 // 3 $grav_char[4] = GRAV_4 // 4 $grav_char[5] = GRAV_5 // 5 $grav_char[6] = GRAV_6 // 6 $grav_char[7] = GRAV_7 // 7 $grav_char[8] = GRAV_8 // 8 $grav_char[9] = GRAV_9 // 9 $grav_char[10] = GRAV_A // A $grav_char[11] = GRAV_B // B $grav_char[12] = GRAV_C // C $grav_char[13] = GRAV_D // D $grav_char[14] = GRAV_E // E $grav_char[15] = GRAV_F // F $grav_char[16] = GRAV_G // G $grav_char[17] = GRAV_H // H $grav_char[18] = GRAV_I // I $grav_char[19] = GRAV_J // J $grav_char[20] = GRAV_K // K $grav_char[21] = GRAV_L // L $grav_char[22] = GRAV_M // M $grav_char[23] = GRAV_N // N $grav_char[24] = GRAV_O // O $grav_char[25] = GRAV_P // P $grav_char[26] = GRAV_Q // Q $grav_char[27] = GRAV_R // R $grav_char[28] = GRAV_S // S $grav_char[29] = GRAV_T // T $grav_char[30] = GRAV_U // U $grav_char[31] = GRAV_V // V $grav_char[32] = GRAV_W // W $grav_char[33] = GRAV_X // X $grav_char[34] = GRAV_Y // Y $grav_char[35] = GRAV_Z // Z $grav_char[36] = GRAV_PE // . // ---- Hi Score Coords grav_hi_1_x[0] = 176.0 // First letter of player name grav_hi_1_y[0] = 90.0 grav_hi_2_x[0] = 224.0 // Second letter of player name grav_hi_2_y[0] = 90.0 grav_hi_3_x[0] = 272.0 // Third letter of player name grav_hi_3_y[0] = 90.0 grav_hi_4_x[0] = 464.0 // Level with Number & score grav_hi_4_y[0] = 90.0 grav_hi_1_x[1] = 176.0 grav_hi_1_y[1] = 116.0 grav_hi_2_x[1] = 224.0 grav_hi_2_y[1] = 116.0 grav_hi_3_x[1] = 272.0 grav_hi_3_y[1] = 116.0 grav_hi_4_x[1] = 464.0 grav_hi_4_y[1] = 116.0 grav_hi_1_x[2] = 176.0 grav_hi_1_y[2] = 142.0 grav_hi_2_x[2] = 224.0 grav_hi_2_y[2] = 142.0 grav_hi_3_x[2] = 272.0 grav_hi_3_y[2] = 142.0 grav_hi_4_x[2] = 464.0 grav_hi_4_y[2] = 142.0 grav_hi_1_x[3] = 176.0 grav_hi_1_y[3] = 168.0 grav_hi_2_x[3] = 224.0 grav_hi_2_y[3] = 168.0 grav_hi_3_x[3] = 272.0 grav_hi_3_y[3] = 168.0 grav_hi_4_x[3] = 464.0 grav_hi_4_y[3] = 168.0 grav_hi_1_x[4] = 176.0 grav_hi_1_y[4] = 194.0 grav_hi_2_x[4] = 224.0 grav_hi_2_y[4] = 194.0 grav_hi_3_x[4] = 272.0 grav_hi_3_y[4] = 194.0 grav_hi_4_x[4] = 464.0 grav_hi_4_y[4] = 194.0 grav_hi_1_x[5] = 176.0 grav_hi_1_y[5] = 220.0 grav_hi_2_x[5] = 224.0 grav_hi_2_y[5] = 220.0 grav_hi_3_x[5] = 272.0 grav_hi_3_y[5] = 220.0 grav_hi_4_x[5] = 464.0 grav_hi_4_y[5] = 220.0 grav_hi_1_x[6] = 176.0 grav_hi_1_y[6] = 246.0 grav_hi_2_x[6] = 224.0 grav_hi_2_y[6] = 246.0 grav_hi_3_x[6] = 272.0 grav_hi_3_y[6] = 246.0 grav_hi_4_x[6] = 464.0 grav_hi_4_y[6] = 246.0 grav_hi_1_x[7] = 176.0 grav_hi_1_y[7] = 272.0 grav_hi_2_x[7] = 224.0 grav_hi_2_y[7] = 272.0 grav_hi_3_x[7] = 272.0 grav_hi_3_y[7] = 272.0 grav_hi_4_x[7] = 464.0 grav_hi_4_y[7] = 272.0 grav_hi_1_x[8] = 176.0 grav_hi_1_y[8] = 298.0 grav_hi_2_x[8] = 224.0 grav_hi_2_y[8] = 298.0 grav_hi_3_x[8] = 272.0 grav_hi_3_y[8] = 298.0 grav_hi_4_x[8] = 464.0 grav_hi_4_y[8] = 298.0 grav_hi_1_x[9] = 176.0 grav_hi_1_y[9] = 324.0 grav_hi_2_x[9] = 224.0 grav_hi_2_y[9] = 324.0 grav_hi_3_x[9] = 272.0 grav_hi_3_y[9] = 324.0 grav_hi_4_x[9] = 464.0 grav_hi_4_y[9] = 324.0 IF grav_played_before = 0 $grav_hi_1[0] = $grav_char[12] $grav_hi_2[0] = $grav_char[36] $grav_hi_3[0] = $grav_char[36] grav_hi_l[0] = 10 grav_hi_s[0] = 1000 grav_current = 1 GOSUB grav_generate_default_scores grav_hi_l[1] = 9 grav_hi_s[1] = 900 grav_current = 2 GOSUB grav_generate_default_scores grav_hi_l[2] = 8 grav_hi_s[2] = 800 grav_current = 3 GOSUB grav_generate_default_scores grav_hi_l[3] = 7 grav_hi_s[3] = 700 grav_current = 4 GOSUB grav_generate_default_scores grav_hi_l[4] = 6 grav_hi_s[4] = 600 grav_current = 5 GOSUB grav_generate_default_scores grav_hi_l[5] = 5 grav_hi_s[5] = 500 grav_current = 6 GOSUB grav_generate_default_scores grav_hi_l[6] = 4 grav_hi_s[6] = 400 grav_current = 7 GOSUB grav_generate_default_scores grav_hi_l[7] = 3 grav_hi_s[7] = 300 grav_current = 8 GOSUB grav_generate_default_scores grav_hi_l[8] = 2 grav_hi_s[8] = 200 grav_current = 9 GOSUB grav_generate_default_scores grav_hi_l[9] = 1 grav_hi_s[9] = 100 grav_played_before = 1 ENDIF grav_hi_score = grav_hi_s[0] grav_restart: PLAYING_GAME = 0 // Constants I'm initializing here. PLAY_SELECTED = 1 HI_SCORE_SELECTED = 2 EXIT_SELECTED = 3 INACTIVE = 4 GAME_OVER_INIT = 0 GAME_OVER_WAITING = 1 DECIDE_HI_SCORES_SCREEN = 2 ENTERING_NAME = 3 SHOWING_HIGH_SCORES = 4 grav_next_level = 1 grav_score = 0 grav_level = 0 nGameState = PLAY_SELECTED grav_lives = 2 grav_player_alive = 1 grav_rotation = 180.0 grav_rotation_step = 2.0 grav_screen_y = 3648.0 grav_plyr_dead_speed = 2.5 grav_countdown_max = 120000 grav_pickups=0 grav_speed_x=0.0 grav_speed_y=0.0 grav_temp_score2= 0 GET_GAME_TIMER grav_countdown_start grav_ground = 0 // main loop ******************************************************************************* mission_grav_loop: WAIT 0 GOSUB RenderSkyAndClouds DO_FADE 0 FADE_IN // front end grav_fe: GOSUB CollectAllInput // Determines abstracted directional movement. IF grav_button_pressed = 1 // Detect the release of the input for the main menu. AND INPUT = INPUT_NEUTRAL grav_button_pressed = 0 ENDIF // Render the main menu. IF nGameState = PLAY_SELECTED DRAW_SPRITE 15 320.0 196.0 256.0 128.0 255 255 255 255 // Ready to bumble logo. DRAW_SPRITE 17 320.0 312.0 64.0 32.0 255 255 255 255 // Play is selected, others unselected. DRAW_SPRITE 18 320.0 344.0 128.0 32.0 255 255 255 255 DRAW_SPRITE 20 320.0 376.0 64.0 32.0 255 255 255 255 IF IS_BUTTON_PRESSED PAD1 CROSS OR IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_ACCEPT REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_TRACK_START GET_GAME_TIMER grav_help_start nGameState = PLAYING_GAME timera = 0 ENDIF ENDIF IF nGameState = HI_SCORE_SELECTED DRAW_SPRITE 15 320.0 196.0 256.0 128.0 255 255 255 255 // Ready to bumble logo. DRAW_SPRITE 16 320.0 312.0 64.0 32.0 255 255 255 255 DRAW_SPRITE 19 320.0 344.0 128.0 32.0 255 255 255 255 // Hi Scores is selected, others unselected. DRAW_SPRITE 20 320.0 376.0 64.0 32.0 255 255 255 255 IF IS_BUTTON_PRESSED PAD1 CROSS OR IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_ACCEPT GET_GAME_TIMER grav_help_start grav_on_table = SHOWING_HIGH_SCORES nGameState = INACTIVE ENDIF ENDIF IF nGameState = EXIT_SELECTED DRAW_SPRITE 15 320.0 196.0 256.0 128.0 255 255 255 255 // Ready to bumble logo. DRAW_SPRITE 16 320.0 312.0 64.0 32.0 255 255 255 255 DRAW_SPRITE 18 320.0 344.0 128.0 32.0 255 255 255 255 DRAW_SPRITE 21 320.0 376.0 64.0 32.0 255 255 255 255 // Exit is selected, others unselected. IF IS_BUTTON_PRESSED PAD1 CROSS OR IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_DECLINE DO_FADE 0 FADE_OUT GOTO mission_cleanup_grav ENDIF ENDIF IF grav_button_pressed = 0 IF nGameState = PLAY_SELECTED IF INPUT = INPUT_UP nGameState = EXIT_SELECTED grav_button_pressed = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_SELECT GOTO grav_fe // delay / flicker without this ENDIF IF INPUT = INPUT_DOWN nGameState = HI_SCORE_SELECTED grav_button_pressed = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_SELECT GOTO grav_fe // delay / flicker without this ENDIF ENDIF IF nGameState = HI_SCORE_SELECTED IF INPUT = INPUT_UP nGameState = PLAY_SELECTED grav_button_pressed = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_SELECT GOTO grav_fe // delay / flicker without this ENDIF IF INPUT = INPUT_DOWN nGameState = EXIT_SELECTED grav_button_pressed = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_SELECT GOTO grav_fe // delay / flicker without this ENDIF ENDIF IF nGameState = EXIT_SELECTED IF INPUT = INPUT_UP nGameState = HI_SCORE_SELECTED grav_button_pressed = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_SELECT GOTO grav_fe // delay / flicker without this ENDIF IF INPUT = INPUT_DOWN nGameState = PLAY_SELECTED grav_button_pressed = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_SELECT GOTO grav_fe // delay / flicker without this ENDIF ENDIF ENDIF IF nGameState = PLAYING_GAME IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_1 grav_lives ++ ENDIF //Make bee movement frame independent GET_GAME_TIMER grav_current_time ftemp_grav_current_time =# grav_current_time grav_elapsed_time = ftemp_grav_current_time - ftemp_grav_last_time ftemp_grav_last_time =# grav_current_time // draw player every frame in air - change sprite with heading IF grav_player_alive = 1 IF grav_buzz = 12 IF timerb > 10 grav_buzz = 11 timerb = 0 ENDIF ELSE IF timerb > 10 grav_buzz = 12 timerb = 0 ENDIF ENDIF // Manage visual tilting of the bee. If they are not holding a direction, ease the bee back to no tilt. LVAR_FLOAT ftemp_rotation_step ftemp_rotation_step = grav_rotation_step ftemp_rotation_step *= grav_elapsed_time ftemp_rotation_step *= 0.05 LVAR_FLOAT fTempFloat fTempFloat =# INPUT_ANALOG_LEFT_RIGHT IF NOT fTempFloat > 1.0 OR NOT fTempFloat < -1.0 IF grav_rotation > 180.0 grav_rotation -= ftemp_rotation_step ENDIF IF grav_rotation < 180.0 grav_rotation += ftemp_rotation_step ENDIF ENDIF fTempFloat =# INPUT_ANALOG_LEFT_RIGHT // Convert int -127-127 range to -3.175f-3.175f range. fTempFloat *= 0.002 fTempFloat *= grav_elapsed_time grav_rotation += fTempFloat IF grav_rotation > 210.0 grav_rotation = 210.0 ENDIF IF grav_rotation < 150.0 grav_rotation = 150.0 ENDIF ENDIF IF grav_next_level = 1 grav_plyr_x = 300.0 grav_plyr_y = 4096.0 GOSUB grav_make_level GOSUB grav_player_start grav_plyr_x = grav_dead_x grav_plyr_y = grav_dead_y grav_speed_y = 0.0 grav_speed_x = 0.0 grav_next_level = 0 grav_rotation = 180.0 grav_level_up = 1 DO_FADE 0 FADE_IN WHILE GET_FADING_STATUS GOSUB RenderSkyAndClouds GOSUB RenderBorder WAIT 0 ENDWHILE GET_GAME_TIMER grav_countdown_start ENDIF IF grav_next_level = 0 GOSUB grav_update_screen IF grav_player_alive = 1 GOSUB grav_checkcollision GOSUB grav_update_player ENDIF GOSUB grav_draw_screen ENDIF // player dead IF grav_player_alive = 0 IF grav_lives > 0 timera = 0 grav_lives -- grav_player_alive = 2 GOSUB grav_player_dead ENDIF ENDIF IF grav_player_alive = 2 IF DO_2D_RECTANGLES_COLLIDE grav_plyr_x grav_plyr_y 4.0 4.0 grav_dead_x grav_dead_y 4.0 4.0 grav_player_alive = 1 grav_rotation = 180.0 grav_plyr_x = grav_dead_x grav_plyr_y = grav_dead_y - 4.0 grav_speed_y = 0.0 grav_speed_x = 0.0 ENDIF ENDIF // Game Over ------------------------------------------------------------------ IF nGameState = PLAYING_GAME AND grav_player_alive = 0 AND grav_lives = 0 nGameState = INACTIVE grav_on_table = GAME_OVER_INIT REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_TRACK_STOP REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_GAME_OVER ENDIF ENDIF // quit mid-game IF nGameState = INACTIVE IF IS_BUTTON_PRESSED PAD1 TRIANGLE IF NOT grav_on_table = GAME_OVER_WAITING REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_TRACK_STOP GOTO grav_restart ENDIF ENDIF IF grav_on_table = GAME_OVER_INIT GOSUB grav_text_gosub SET_TEXT_SCALE 2.0 4.0 SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT 320.0 196.0 GR_A_5 // game over GET_GAME_TIMER grav_start_time grav_on_table = GAME_OVER_WAITING ENDIF IF grav_on_table = GAME_OVER_WAITING GOSUB grav_text_gosub SET_TEXT_SCALE 2.0 4.0 SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT 320.0 196.0 GR_A_5 // game over GET_GAME_TIMER grav_end_time grav_time_diff = grav_end_time - grav_start_time IF grav_time_diff > 5000 grav_on_table = DECIDE_HI_SCORES_SCREEN ENDIF ENDIF // Go to displaying high scores or entering your name. IF grav_on_table = DECIDE_HI_SCORES_SCREEN IF grav_score < grav_hi_s[9] grav_on_table = SHOWING_HIGH_SCORES ELSE GOSUB grav_check_scores ENDIF ENDIF IF grav_on_table = ENTERING_NAME GOSUB grav_write_name GOSUB grav_draw_scores ENDIF IF grav_on_table = SHOWING_HIGH_SCORES GOSUB grav_draw_scores ENDIF ENDIF // hud - need to do this properly - namco style -> 1up xxxxxxx hi xxxxxxx life xx ????? IF nGameState = PLAYING_GAME GOSUB grav_text_gosub SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT_WITH_NUMBER 530.0 52.0 VP15 grav_lives // lives left DRAW_SPRITE_WITH_ROTATION 2 530.0 52.0 44.0 44.0 180.0 255 255 255 150 DRAW_SPRITE_WITH_ROTATION 12 530.0 52.0 36.0 36.0 180.0 255 255 255 150 GOSUB grav_text_gosub SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT_WITH_NUMBER 100.0 52.0 VP15 grav_pickups_display // 1up score DRAW_SPRITE_WITH_ROTATION 3 100.0 52.0 40.0 40.0 180.0 255 255 255 150 DRAW_SPRITE_WITH_ROTATION 6 100.0 52.0 36.0 36.0 180.0 255 255 255 150 grav_countdown_secs = grav_countdown / 1000 minutes = grav_countdown_secs / 60 grav_countdown_temp = minutes * 60 grav_countdown_secs -= grav_countdown_temp GOSUB grav_text_gosub IF grav_countdown_secs > 9 SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT_WITH_2_NUMBERS 300.0 52.0 TIME minutes grav_countdown_secs// ~1~:~1~ ELSE SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT_WITH_2_NUMBERS 300.0 52.0 TIME_0 minutes grav_countdown_secs// ~1~:0~1~ ENDIF DRAW_SPRITE_WITH_ROTATION 14 300.0 52.0 40.0 40.0 180.0 255 255 255 150 GOSUB grav_text_gosub SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT_WITH_NUMBER 350.0 52.0 VP15 grav_score // 1up score DRAW_SPRITE_WITH_ROTATION 13 350.0 52.0 40.0 40.0 180.0 255 255 255 150 GET_GAME_TIMER grav_countdown_end grav_countdown_diff = grav_countdown_end - grav_countdown_start IF grav_countdown_diff < grav_countdown_max grav_countdown = grav_countdown_max - grav_countdown_diff ELSE IF grav_player_alive = 1 IF grav_lives > 0 grav_lives-- grav_next_level = 1 GET_GAME_TIMER grav_countdown_start ELSE grav_player_alive = 0 nGameState = INACTIVE grav_on_table = GAME_OVER_INIT REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_TRACK_STOP REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_GAME_OVER ENDIF ENDIF ENDIF ENDIF GOSUB RenderBorder IF nGameState = INACTIVE AND grav_on_table = SHOWING_HIGH_SCORES GET_GAME_TIMER grav_help_end grav_help_diff = grav_help_end - grav_help_start IF grav_help_diff > 1000 AND IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON // Display for a second then let them quit back to the main menu. GOTO grav_restart ENDIF IF grav_help_diff < 5000 DRAW_WINDOW 35.0 15.0 200.0 45.0 dummy SWIRLS_NONE SET_TEXT_CENTRE OFF SET_TEXT_WRAPX 230.0 SET_TEXT_FONT FONT_STANDARD SET_TEXT_SCALE 0.5 1.8 ENDIF ENDIF // At any time, the player can press the power or reset buttons to exit or restart the game. GOSUB EnableArcadeWidgets // Keep the widgets enabled all the time. IF IS_WIDGET_RELEASED WIDGET_ARCADE_POWER_OFF GOTO mission_cleanup_grav ENDIF IF IS_WIDGET_RELEASED WIDGET_ARCADE_RESET GOTO grav_restart ENDIF GOTO mission_grav_loop // mission plat failed ********************************************************************* mission_failed_grav: PRINT_BIG M_FAIL 5000 1 RETURN // mission plat passed ********************************************************************* mission_passed_grav: RETURN // mission cleanup ************************************************************************* mission_cleanup_grav: WAIT 200 // Workaround for controller mappings issue jumping you right back into the game. CLEAR_THIS_PRINT BUSY REMOVE_TEXTURE_DICTIONARY CLEAR_MISSION_AUDIO 4 SHUT_ALL_CHARS_UP FALSE SET_MUSIC_DOES_FADE TRUE REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_TRACK_STOP CLEAR_ONSCREEN_COUNTER grav_countdown IF IS_PLAYER_PLAYING player1 IF LOCATE_CHAR_ON_FOOT_3D scplayer gravX gravY gravZ 2.0 2.0 2.0 0 y = gravY + 2.0 SET_CHAR_COORDINATES scplayer gravX y gravZ ENDIF FREEZE_CHAR_POSITION scplayer FALSE SET_PLAYER_CONTROL player1 ON DO_FADE 1500 FADE_IN ENDIF flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN // gosubs ********************************************************************************** grav_text_gosub: SET_TEXT_COLOUR 168 142 51 255 SET_TEXT_SCALE 1.0 2.0 SET_TEXT_CENTRE ON SET_TEXT_WRAPX 640.0 RETURN grav_player_start: grav_dist_temp_max = 99999.9 grav_current_plat = 0 WHILE grav_current_plat < 51 AND NOT grav_ground_x[grav_current_plat] = 999.0 AND NOT grav_ground_x[grav_current_plat] < 0.1 grav_temp_y = grav_plyr_y IF grav_temp_y > 3000.0 IF grav_temp_y < 4100.0 GET_DISTANCE_BETWEEN_COORDS_2D grav_plyr_x grav_plyr_y grav_ground_x[grav_current_plat] grav_ground_y[grav_current_plat] grav_dist_temp IF grav_dist_temp < grav_dist_temp_max grav_dist_temp_max = grav_dist_temp grav_dead_x = grav_ground_x[grav_current_plat] grav_dead_y = grav_ground_y[grav_current_plat] - 32.0 ENDIF ENDIF ENDIF grav_current_plat++ SET_TEXT_COLOUR 168 142 51 255 SET_TEXT_SCALE 1.0 2.0 SET_TEXT_CENTRE ON SET_TEXT_WRAPX 640.0 grav_level_display = grav_level + 1 SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT_WITH_NUMBER 320.0 224.0 GR_LVL grav_level_display GOSUB RenderBorder WAIT 0 ENDWHILE RETURN grav_player_dead: grav_dist_temp_max = 99999.9 grav_dist_temp = 0.0 grav_current_plat = 0 WHILE grav_current_plat < 51//Finds the nearest platform to go to AND NOT grav_ground_x[grav_current_plat] = 999.0 AND NOT grav_ground_x[grav_current_plat] < 0.1 grav_temp_y = grav_ground_y[grav_current_plat] - grav_screen_y IF grav_temp_y > -200.00 AND grav_temp_y <600.00 GET_DISTANCE_BETWEEN_COORDS_2D grav_plyr_x grav_plyr_y grav_ground_x[grav_current_plat] grav_ground_y[grav_current_plat] grav_dist_temp IF grav_dist_temp < grav_dist_temp_max grav_dist_temp_max = grav_dist_temp grav_dead_x = grav_ground_x[grav_current_plat] grav_dead_y = grav_ground_y[grav_current_plat] - 32.0 ENDIF ENDIF grav_current_plat++ ENDWHILE grav_velocity_x = grav_dead_x - grav_plyr_x grav_velocity_y = grav_dead_y - grav_plyr_y grav_temp_1 = grav_velocity_x * grav_velocity_x grav_temp_2 = grav_velocity_y * grav_velocity_y grav_velocity_mag_sqr = grav_temp_1 + grav_temp_2 SQRT grav_velocity_mag_sqr grav_velocity_mag // get "speed" grav_temp_1 = grav_velocity_x / grav_velocity_mag grav_temp_2 = grav_velocity_y / grav_velocity_mag grav_speed_x = grav_plyr_dead_speed * grav_temp_1 grav_speed_y = grav_plyr_dead_speed * grav_temp_2 RETURN grav_checkcollision: // Check collisions with pickups grav_current_plat = 0 WHILE grav_current_plat < 51 AND NOT grav_pick_x[grav_current_plat] = 999.0 grav_temp_y = grav_ground_y[grav_current_plat] - grav_screen_y IF grav_temp_y > -64.00 AND grav_temp_y <480.00 IF DO_2D_RECTANGLES_COLLIDE grav_plyr_x grav_plyr_y 32.0 44.0 grav_pick_x[grav_current_plat] grav_pick_y[grav_current_plat] 32.0 32.0 WRITE_LOG_FLOAT grav_ground_x[grav_current_plat] grav_ground_y[grav_current_plat] 2.0 "PickUp Found Here" grav_pick_x[grav_current_plat] = 999.0 IF NOT grav_pickups_display = 1 grav_score += 10 grav_pickups ++ grav_pickups_display -- WRITE_LOG_INT grav_pickups grav_pickups_display 1 "Pick up data" REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_PICKUP ELSE grav_score += grav_pickups grav_countdown /= 100 grav_score += grav_countdown grav_pickups = 0 grav_level++ grav_temp_score = grav_score - grav_temp_score2 grav_temp_score2 = grav_temp_score IF grav_temp_score > 665 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_ACCEPT grav_lives ++ ENDIF //grav_countdown_max += 20000 grav_next_level = 1 timera = 0 ENDIF grav_pick_x[grav_current_plat]=-999.00 RETURN ENDIF ENDIF grav_current_plat++ ENDWHILE // Check collisions with ground grav_current_plat = 0 WHILE grav_current_plat < 51 AND NOT grav_ground_x[grav_current_plat] = 999.0 grav_temp_y = grav_ground_y[grav_current_plat] - grav_screen_y IF grav_temp_y > -64.00 AND grav_temp_y <480.00 IF DO_2D_RECTANGLES_COLLIDE grav_plyr_x grav_plyr_y 32.0 44.0 grav_ground_x[grav_current_plat] grav_ground_y[grav_current_plat] 96.0 32.0 grav_temp_y = grav_plyr_y + 12.0 IF grav_temp_y < grav_ground_y[grav_current_plat] IF grav_ground = 0 IF NOT IS_BUTTON_PRESSED PAD1 CROSS OR grav_speed_y < 0.0 grav_temp_x = grav_ground_x[grav_current_plat] - 52.0 IF NOT grav_plyr_x < grav_temp_x grav_temp_x = grav_ground_x[grav_current_plat] + 52.0 IF NOT grav_plyr_x > grav_temp_x //grav_speed_x *= -0.1 grav_speed_y *= -0.1 grav_plyr_y = grav_ground_y[grav_current_plat] grav_plyr_y -= 38.0 grav_ground = 1 ENDIF ENDIF ENDIF ENDIF ELSE grav_speed_x*=-0.5 grav_speed_y*=-0.5 grav_plyr_y += 4.0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_DROP ENDIF ELSE grav_ground = 0 ENDIF ENDIF grav_current_plat++ ENDWHILE // Check collisions with platforms grav_current_plat = 0 WHILE grav_current_plat < 100 AND NOT grav_plat_x[grav_current_plat] = 999.0 grav_temp_y = grav_plat_y[grav_current_plat] - grav_screen_y IF grav_temp_y > -64.00 AND grav_temp_y <480.00 IF DO_2D_RECTANGLES_COLLIDE grav_plyr_x grav_plyr_y 32.0 44.0 grav_plat_x[grav_current_plat] grav_plat_y[grav_current_plat] 128.0 40.0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_ZAP grav_level_up = 0 grav_player_alive = 0 timera = 0 ENDIF ENDIF grav_current_plat++ ENDWHILE RETURN grav_make_level: DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS GOSUB RenderSkyAndClouds GOSUB RenderBorder WAIT 0 ENDWHILE // generate platforms grav_current_plat = 0 grav_temp1 = grav_level grav_temp1++ grav_temp1 *= 10 //grav_temp1 += 10 IF grav_temp1 > 50 grav_temp1 = 50 ENDIF WHILE grav_current_plat < grav_temp1 //grav_temp1 GENERATE_RANDOM_INT_IN_RANGE 2 7 grav_temp grav_temp *= 80 grav_temp_x =# grav_temp GENERATE_RANDOM_INT_IN_RANGE 0 30 grav_temp2 grav_temp2 *= 128 grav_plat_x[grav_current_plat] = grav_temp_x grav_plat_y[grav_current_plat] =# grav_temp2 grav_current_plat++ SET_TEXT_COLOUR 168 142 51 255 SET_TEXT_SCALE 1.0 2.0 SET_TEXT_CENTRE ON SET_TEXT_WRAPX 640.0 grav_level_display = grav_level + 1 SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT_WITH_NUMBER 320.0 224.0 GR_LVL grav_level_display GOSUB RenderBorder WAIT 0 ENDWHILE grav_plat_x[grav_current_plat] = 999.0 grav_plat_y[grav_current_plat] = 999.0 // generate pickups grav_current_plat = 0 WHILE grav_current_plat < grav_temp1 //grav_temp1 GENERATE_RANDOM_INT_IN_RANGE 2 7 grav_temp grav_temp *= 80 grav_temp_x =# grav_temp GENERATE_RANDOM_INT_IN_RANGE 0 32 grav_temp2 grav_temp2 *= 128 grav_temp2+=64 LVAR_INT grav_ground_iterator grav_ground_exists grav_ground_exists = 0 grav_ground_iterator = 0 WHILE grav_ground_iterator < grav_current_plat //Checks to see if the platform/pickup combo already exists IF grav_pick_x[grav_ground_iterator] = grav_temp_x AND grav_pick_y[grav_ground_iterator] = ftempFloat grav_ground_exists = 1 ENDIF grav_ground_iterator++ ENDWHILE IF grav_ground_exists = 0 //If the location in not already in use, go ahead and use it grav_pick_x[grav_current_plat] = grav_temp_x grav_pick_y[grav_current_plat] =# grav_temp2 grav_temp_x -= 48.0 grav_temp2 += 32 grav_ground_x[grav_current_plat] = grav_temp_x grav_ground_y[grav_current_plat] =# grav_temp2 WRITE_LOG_FLOAT grav_ground_x[grav_current_plat] grav_ground_y[grav_current_plat] 1.0 "Ground Generation Coordinates" grav_current_plat++ ENDIF SET_TEXT_COLOUR 168 142 51 255 SET_TEXT_SCALE 1.0 2.0 SET_TEXT_CENTRE ON SET_TEXT_WRAPX 640.0 grav_level_display = grav_level + 1 SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT_WITH_NUMBER 320.0 224.0 GR_LVL grav_level_display GOSUB RenderBorder WAIT 0 ENDWHILE grav_pick_x[grav_current_plat] = 999.0 grav_pick_y[grav_current_plat] = 999.0 grav_ground_x[grav_current_plat]=999.0 grav_ground_y[grav_current_plat]=999.0 grav_total_pickups=grav_temp1 grav_pickups_display = grav_total_pickups grav_current_plat = grav_temp1 grav_plat_x[grav_current_plat]=52.0 grav_plat_y[grav_current_plat]=4096.0 grav_current_plat++ grav_plat_x[grav_current_plat]=164.0 grav_plat_y[grav_current_plat]=4096.0 grav_current_plat++ grav_plat_x[grav_current_plat]=268.0 grav_plat_y[grav_current_plat]=4096.0 grav_current_plat++ grav_plat_x[grav_current_plat]=372.0 grav_plat_y[grav_current_plat]=4096.0 grav_current_plat++ grav_plat_x[grav_current_plat]=476.0 grav_plat_y[grav_current_plat]=4096.0 grav_current_plat++ grav_plat_x[grav_current_plat]=580.0 grav_plat_y[grav_current_plat]=4096.0 grav_current_plat++ //grav_current_plat = grav_temp1 grav_plat_x[grav_current_plat]=52.0 grav_plat_y[grav_current_plat]=0.0 grav_current_plat++ grav_plat_x[grav_current_plat]=164.0 grav_plat_y[grav_current_plat]=0.0 grav_current_plat++ grav_plat_x[grav_current_plat]=268.0 grav_plat_y[grav_current_plat]=0.0 grav_current_plat++ grav_plat_x[grav_current_plat]=372.0 grav_plat_y[grav_current_plat]=0.0 grav_current_plat++ grav_plat_x[grav_current_plat]=476.0 grav_plat_y[grav_current_plat]=0.0 grav_current_plat++ grav_plat_x[grav_current_plat]=580.0 grav_plat_y[grav_current_plat]=0.0 grav_current_plat++ grav_plat_x[grav_current_plat]=999.0 grav_plat_y[grav_current_plat]=999.0 RETURN grav_update_player: IF grav_player_alive = 1 IF grav_plyr_x < 50.0 // Clamp to sides of screen. grav_plyr_x = 50.0 ENDIF IF grav_plyr_x > 590.0 grav_plyr_x = 590.0 ENDIF fTempFloat =# INPUT_ANALOG_UP_DOWN IF IS_WIDGET_PRESSED WIDGET_ARCADE_BUTTON OR ftempFloat<0.0 // Accelerate up. IF grav_ground = 1 grav_ground = 0 grav_speed_y +=@ 1.0 ENDIF IF grav_speed_y < 20.0 grav_speed_y +=@ 0.1 ENDIF ENDIF IF ftempFloat>0.0 // Slow down. IF grav_ground = 0 IF grav_speed_y > 0.0 grav_speed_y -=@ 0.05 ENDIF ENDIF ENDIF // Add friction. grav_temp_x = grav_speed_x grav_temp_x /= 16.0 grav_speed_x -=@ grav_temp_x // Directional movement. fTempFloat =# INPUT_ANALOG_LEFT_RIGHT grav_temp_x = fTempFloat grav_temp_x /= 512.0 // 128.0 grav_speed_x +=@ grav_temp_x grav_plyr_x +=@ grav_speed_x // Gravity IF grav_ground = 0 IF grav_speed_y > -20.0 grav_speed_y -=@ 0.05 ENDIF ENDIF last_bee_position_y = grav_plyr_y grav_plyr_y -=@ grav_speed_y ENDIF RETURN grav_draw_screen: GOSUB RenderSkyAndClouds // Draw platforms grav_current_plat = 0 WHILE grav_current_plat < 100 AND NOT grav_plat_x[grav_current_plat] = 999.0 grav_temp_y = grav_plat_y[grav_current_plat] - grav_screen_y IF grav_temp_y > -64.00 AND grav_temp_y <480.00 DRAW_SPRITE 10 grav_plat_x[grav_current_plat] grav_temp_y 128.0 64.0 255 255 255 255 ENDIF grav_current_plat++ ENDWHILE // Draw pickups grav_current_plat = 0 WHILE grav_current_plat < 100 AND NOT grav_pick_x[grav_current_plat] = 999.0 grav_temp_y = grav_pick_y[grav_current_plat] - grav_screen_y IF grav_temp_y > -64.00 AND grav_temp_y <480.00 DRAW_SPRITE 6 grav_pick_x[grav_current_plat] grav_temp_y 32.0 32.0 255 255 255 255 ENDIF grav_current_plat++ ENDWHILE // Draw ground grav_current_plat = 0 WHILE grav_current_plat < 100 AND NOT grav_ground_x[grav_current_plat] = 999.0 grav_temp_y = grav_ground_y[grav_current_plat] - grav_screen_y IF grav_temp_y > -64.00 AND grav_temp_y <480.00 DRAW_SPRITE 5 grav_ground_x[grav_current_plat] grav_temp_y 128.0 32.0 255 255 255 255 ENDIF grav_current_plat++ ENDWHILE // Draw ship grav_temp_x = grav_plyr_x - grav_screen_x grav_temp_y = grav_plyr_y - grav_screen_y IF grav_player_alive = 1 fTempFloat =# INPUT_ANALOG_UP_DOWN IF NOT IS_BUTTON_PRESSED PAD1 CROSS AND NOT IS_WIDGET_PRESSED WIDGET_ARCADE_BUTTON AND NOT fTempFloat <= -1.0 DRAW_SPRITE_WITH_ROTATION 12 grav_temp_x grav_temp_y 48.0 48.0 grav_rotation 255 255 255 255 ELSE DRAW_SPRITE_WITH_ROTATION grav_buzz grav_temp_x grav_temp_y 48.0 48.0 grav_rotation 255 255 255 255 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BEE_BUZZ ENDIF ELSE IF grav_player_alive = 2 DRAW_SPRITE_WITH_ROTATION 4 grav_temp_x grav_temp_y 48.0 48.0 180.0 255 255 255 255 last_bee_position_y = grav_plyr_y grav_plyr_x +=@ grav_speed_x grav_plyr_y +=@ grav_speed_y ENDIF ENDIF RETURN grav_update_screen: // grav_temp_x = grav_plyr_x - grav_screen_x grav_temp_y = grav_plyr_y - grav_screen_y IF grav_temp_y < 200.0 // grav_screen_y -= 1.0 grav_screen_temp_y = 200.0 - grav_temp_y grav_screen_y -= grav_screen_temp_y ENDIF IF grav_temp_y > 300.0 // grav_screen_y += 1.0 grav_screen_temp_y = grav_temp_y - 300.0 grav_screen_y += grav_screen_temp_y ENDIF RETURN // Hi Score-A-Rama grav_check_scores: // (c) Graeme 2003 grav_ranking = 9 grav_score_update = FALSE grav_score_check = TRUE // find which slot the new score has to be inserted into WHILE grav_ranking >= 0 AND grav_score_check = TRUE IF grav_score > grav_hi_s[grav_ranking] grav_ranking-- grav_score_update = TRUE grav_on_table = ENTERING_NAME grav_draw_highlight = 1 ELSE grav_score_check = FALSE ENDIF ENDWHILE IF grav_score_update = TRUE grav_ranking++ // shift the other scores down grav_destination_slot = 9 grav_source_slot = 8 WHILE grav_source_slot >= grav_ranking $grav_hi_1[grav_destination_slot] = $grav_hi_1[grav_source_slot] // First letter of player name $grav_hi_2[grav_destination_slot] = $grav_hi_2[grav_source_slot] // Second letter of player name $grav_hi_3[grav_destination_slot] = $grav_hi_3[grav_source_slot] // Third letter of player name grav_hi_l[grav_destination_slot] = grav_hi_l[grav_source_slot] // Level Number grav_hi_s[grav_destination_slot] = grav_hi_s[grav_source_slot] // Score grav_destination_slot-- grav_source_slot-- ENDWHILE // write the new score into the correct slot grav_hi_s[grav_ranking] = grav_score grav_hi_l[grav_ranking] = grav_level grav_write = 0 grav_chars = 10 // A ENDIF RETURN grav_write_name: GET_POSITION_OF_ANALOGUE_STICKS PAD1 LStickX LStickY RStickX RStickY IF INPUT = INPUT_NEUTRAL AND NOT IS_BUTTON_PRESSED PAD1 CROSS AND NOT IS_WIDGET_PRESSED WIDGET_ARCADE_BUTTON grav_press = 0 ENDIF // Write first letter IF grav_write = 0 $grav_hi_1[grav_ranking] = $grav_char[grav_chars] $grav_hi_2[grav_ranking] = $grav_char[10] $grav_hi_3[grav_ranking] = $grav_char[10] IF grav_press = 0 IF INPUT = INPUT_UP OR INPUT = INPUT_RIGHT IF grav_chars < 36 grav_chars++ ELSE grav_chars = 0 ENDIF grav_press = 1 ENDIF IF INPUT = INPUT_DOWN OR INPUT = INPUT_LEFT IF grav_chars > 0 grav_chars-- ELSE grav_chars = 36 ENDIF grav_press = 1 ENDIF IF IS_BUTTON_PRESSED PAD1 CROSS OR IS_WIDGET_PRESSED WIDGET_ARCADE_BUTTON grav_chars = 10 grav_write = 1 grav_press = 1 ENDIF ENDIF ENDIF // Write second letter IF grav_write = 1 $grav_hi_2[grav_ranking] = $grav_char[grav_chars] IF grav_press = 0 IF INPUT = INPUT_UP OR INPUT = INPUT_RIGHT IF grav_chars < 36 grav_chars++ ELSE grav_chars = 0 ENDIF grav_press = 1 ENDIF IF INPUT = INPUT_DOWN OR INPUT = INPUT_LEFT IF grav_chars > 0 grav_chars-- ELSE grav_chars = 36 ENDIF grav_press = 1 ENDIF IF IS_BUTTON_PRESSED PAD1 CROSS OR IS_WIDGET_PRESSED WIDGET_ARCADE_BUTTON grav_chars = 10 grav_write = 2 grav_press = 1 ENDIF ENDIF ENDIF // Write third letter IF grav_write = 2 $grav_hi_3[grav_ranking] = $grav_char[grav_chars] IF grav_press = 0 IF INPUT = INPUT_UP OR INPUT = INPUT_RIGHT IF grav_chars < 36 grav_chars++ ELSE grav_chars = 0 ENDIF grav_press = 1 ENDIF IF INPUT = INPUT_DOWN OR INPUT = INPUT_LEFT IF grav_chars > 0 grav_chars-- ELSE grav_chars = 36 ENDIF grav_press = 1 ENDIF IF IS_BUTTON_PRESSED PAD1 CROSS OR IS_WIDGET_PRESSED WIDGET_ARCADE_BUTTON // After final character is input, advance the state. grav_write = 3 grav_press = 1 grav_on_table = SHOWING_HIGH_SCORES ENDIF ENDIF ENDIF RETURN RenderSkyAndClouds: IF NOT nGameState = PLAYING_GAME DRAW_SPRITE 1 128.0 128.0 256.0 256.0 255 255 255 255 DRAW_SPRITE 1 128.0 384.0 256.0 256.0 255 255 255 255 DRAW_SPRITE 1 384.0 128.0 256.0 256.0 255 255 255 255 DRAW_SPRITE 1 384.0 384.0 256.0 256.0 255 255 255 255 DRAW_SPRITE 1 640.0 128.0 256.0 256.0 255 255 255 255 DRAW_SPRITE 1 640.0 384.0 256.0 256.0 255 255 255 255 RETURN ENDIF ftempFloat = 0.0 grav_temp_y = grav_plyr_y - grav_screen_y temp_bee_y = 0.0 IF NOT grav_speed_y = 0.0 IF grav_temp_y < 200.0 OR grav_temp_y > 300.0 temp_bee_y = last_bee_position_y - grav_plyr_y temp_bee_y *= 0.6 ftempFloat += 1.0 ftempFloat *= 0.3 IF grav_player_alive = 2 ftempFloat *= 2.0 ENDIF temp_bee_y *= ftempFloat ENDIF ENDIF tile_size = 256.0 background_y += temp_bee_y ftempFloat = 128.0 IF background_y > ftempFloat background_y -= tile_size ENDIF ftempFloat = tile_size * -1.0 IF background_y < ftempFloat background_y += tile_size ENDIF ftempFloat = 448.0 + tile_size LVAR_INT y_tiles LVAR_FLOAT y_tiles_fl y_tiles_fl = 2.75 //ftempFloat/tile_size y_tiles =# y_tiles_fl ftempFloat =# y_tiles y_tiles_fl -= ftempFloat IF y_tiles_fl > 0.0 y_tiles++ ENDIF y_tiles++ layer_y = background_y LVAR_INT y_index y_index = 0 WHILE y_index < y_tiles layer_y_2 = layer_y + tile_size DRAW_SPRITE 1 128.0 layer_y 256.0 256.0 255 255 255 255 DRAW_SPRITE 1 128.0 layer_y_2 256.0 256.0 255 255 255 255 DRAW_SPRITE 1 384.0 layer_y 256.0 256.0 255 255 255 255 DRAW_SPRITE 1 384.0 layer_y_2 256.0 256.0 255 255 255 255 DRAW_SPRITE 1 640.0 layer_y 256.0 256.0 255 255 255 255 DRAW_SPRITE 1 640.0 layer_y_2 256.0 256.0 255 255 255 255 last_layer_y = layer_y last_layer_y_2 = last_layer_y_2 layer_y += tile_size y_index++ ENDWHILE RETURN RenderBorder: GOSUB DrawAspectCorrectingQuads // For aspect correction. DRAW_SPRITE 7 320.0 224.0 640.0 448.0 255 255 255 255 RETURN grav_draw_scores: grav_hi_loop = 0 WHILE grav_hi_loop < 10 GOSUB grav_text_gosub SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT grav_hi_1_x[grav_hi_loop] grav_hi_1_y[grav_hi_loop] $grav_hi_1[grav_hi_loop] // First letter of player name GOSUB grav_text_gosub SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT grav_hi_2_x[grav_hi_loop] grav_hi_2_y[grav_hi_loop] $grav_hi_2[grav_hi_loop] // Second letter of player name GOSUB grav_text_gosub SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT grav_hi_3_x[grav_hi_loop] grav_hi_3_y[grav_hi_loop] $grav_hi_3[grav_hi_loop] // Third letter of player name GOSUB grav_text_gosub SET_TEXT_DROPSHADOW 1 0 0 0 255 SET_TEXT_RIGHT_JUSTIFY ON SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT_WITH_NUMBER grav_hi_4_x[grav_hi_loop] grav_hi_4_y[grav_hi_loop] grav_LV grav_hi_s[grav_hi_loop] grav_hi_loop++ ENDWHILE GOSUB grav_text_gosub SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT 320.0 64.0 GRAV_2F // HI-SCORE IF grav_lives = 0 AND grav_draw_highlight = 1 IF grav_write = 0 GOSUB grav_text_gosub SET_TEXT_COLOUR 255 64 0 255 SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT grav_hi_1_x[grav_ranking] grav_hi_1_y[grav_ranking] $grav_hi_1[grav_ranking] ELSE GOSUB grav_text_gosub SET_TEXT_COLOUR 255 128 0 255 SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT grav_hi_1_x[grav_ranking] grav_hi_1_y[grav_ranking] $grav_hi_1[grav_ranking] ENDIF // First letter of player name IF grav_write = 1 GOSUB grav_text_gosub SET_TEXT_COLOUR 255 64 0 255 SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT grav_hi_2_x[grav_ranking] grav_hi_2_y[grav_ranking] $grav_hi_2[grav_ranking] ELSE GOSUB grav_text_gosub SET_TEXT_COLOUR 255 128 0 255 SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT grav_hi_2_x[grav_ranking] grav_hi_2_y[grav_ranking] $grav_hi_2[grav_ranking] ENDIF // Second letter of player name IF grav_write = 2 GOSUB grav_text_gosub SET_TEXT_COLOUR 255 64 0 255 SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT grav_hi_3_x[grav_ranking] grav_hi_3_y[grav_ranking] $grav_hi_3[grav_ranking] ELSE GOSUB grav_text_gosub SET_TEXT_COLOUR 255 128 0 255 SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT grav_hi_3_x[grav_ranking] grav_hi_3_y[grav_ranking] $grav_hi_3[grav_ranking] ENDIF GOSUB grav_text_gosub SET_TEXT_RIGHT_JUSTIFY ON SET_TEXT_COLOUR 255 128 0 255 SET_TEXT_DROPSHADOW 1 0 0 0 255 DISPLAY_TEXT_WITH_NUMBER grav_hi_4_x[grav_ranking] grav_hi_4_y[grav_ranking] grav_LV grav_hi_s[grav_ranking] ENDIF RETURN grav_generate_default_scores: GENERATE_RANDOM_INT_IN_RANGE 1 30 grav_num_gen // Neil (NF.) IF grav_num_gen = 1 IF grav_used[1] = 0 $grav_hi_1[grav_current] = $grav_char[23] $grav_hi_2[grav_current] = $grav_char[15] $grav_hi_3[grav_current] = $grav_char[36] grav_used[1] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // Imran (IMY) IF grav_num_gen = 2 IF grav_used[2] = 0 $grav_hi_1[grav_current] = $grav_char[18] $grav_hi_2[grav_current] = $grav_char[22] $grav_hi_3[grav_current] = $grav_char[34] grav_used[2] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // Willie (WIL) IF grav_num_gen = 3 IF grav_used[3] = 0 $grav_hi_1[grav_current] = $grav_char[32] $grav_hi_2[grav_current] = $grav_char[18] $grav_hi_3[grav_current] = $grav_char[21] grav_used[3] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // Chris (CKR) IF grav_num_gen = 4 IF grav_used[4] = 0 $grav_hi_1[grav_current] = $grav_char[12] $grav_hi_2[grav_current] = $grav_char[20] $grav_hi_3[grav_current] = $grav_char[27] grav_used[4] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // Andy (DBP) IF grav_num_gen = 5 IF grav_used[5] = 0 $grav_hi_1[grav_current] = $grav_char[13] $grav_hi_2[grav_current] = $grav_char[11] $grav_hi_3[grav_current] = $grav_char[25] grav_used[5] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // David (DAV) IF grav_num_gen = 6 IF grav_used[6] = 0 $grav_hi_1[grav_current] = $grav_char[13] $grav_hi_2[grav_current] = $grav_char[10] $grav_hi_3[grav_current] = $grav_char[31] grav_used[6] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // James (DOD) IF grav_num_gen = 7 IF grav_used[7] = 0 $grav_hi_1[grav_current] = $grav_char[13] $grav_hi_2[grav_current] = $grav_char[24] $grav_hi_3[grav_current] = $grav_char[13] grav_used[7] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // Simon (SJL) IF grav_num_gen = 8 IF grav_used[8] = 0 $grav_hi_1[grav_current] = $grav_char[28] $grav_hi_2[grav_current] = $grav_char[19] $grav_hi_3[grav_current] = $grav_char[21] grav_used[8] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // Steve (STE) IF grav_num_gen = 9 IF grav_used[9] = 0 $grav_hi_1[grav_current] = $grav_char[28] $grav_hi_2[grav_current] = $grav_char[29] $grav_hi_3[grav_current] = $grav_char[14] grav_used[9] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // Judith (JUD) IF grav_num_gen = 10 IF grav_used[10] = 0 $grav_hi_1[grav_current] = $grav_char[19] $grav_hi_2[grav_current] = $grav_char[30] $grav_hi_3[grav_current] = $grav_char[13] grav_used[10] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // Kev Bolt (KMB) IF grav_num_gen = 11 IF grav_used[11] = 0 $grav_hi_1[grav_current] = $grav_char[20] $grav_hi_2[grav_current] = $grav_char[22] $grav_hi_3[grav_current] = $grav_char[11] grav_used[11] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // Graeme (GSW) IF grav_num_gen = 12 IF grav_used[12] = 0 $grav_hi_1[grav_current] = $grav_char[16] $grav_hi_2[grav_current] = $grav_char[28] $grav_hi_3[grav_current] = $grav_char[32] grav_used[12] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // Dave W (DSW) IF grav_num_gen = 13 IF grav_used[13] = 0 $grav_hi_1[grav_current] = $grav_char[13] $grav_hi_2[grav_current] = $grav_char[28] $grav_hi_3[grav_current] = $grav_char[32] grav_used[13] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // Woody (WDY) IF grav_num_gen = 14 IF grav_used[14] = 0 $grav_hi_1[grav_current] = $grav_char[32] $grav_hi_2[grav_current] = $grav_char[13] $grav_hi_3[grav_current] = $grav_char[34] grav_used[14] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // Gary (GAZ) IF grav_num_gen = 15 IF grav_used[15] = 0 $grav_hi_1[grav_current] = $grav_char[16] $grav_hi_2[grav_current] = $grav_char[10] $grav_hi_3[grav_current] = $grav_char[35] grav_used[15] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // Wayland (WAZ) IF grav_num_gen = 16 IF grav_used[16] = 0 $grav_hi_1[grav_current] = $grav_char[32] $grav_hi_2[grav_current] = $grav_char[10] $grav_hi_3[grav_current] = $grav_char[35] grav_used[16] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // Kinch (KIN) IF grav_num_gen = 17 IF grav_used[17] = 0 $grav_hi_1[grav_current] = $grav_char[20] $grav_hi_2[grav_current] = $grav_char[18] $grav_hi_3[grav_current] = $grav_char[23] grav_used[17] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // Bean (BEA) IF grav_num_gen = 18 IF grav_used[18] = 0 $grav_hi_1[grav_current] = $grav_char[11] $grav_hi_2[grav_current] = $grav_char[14] $grav_hi_3[grav_current] = $grav_char[10] grav_used[18] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // Baxy (BAX) IF grav_num_gen = 19 IF grav_used[19] = 0 $grav_hi_1[grav_current] = $grav_char[11] $grav_hi_2[grav_current] = $grav_char[10] $grav_hi_3[grav_current] = $grav_char[33] grav_used[19] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // (LOU) IF grav_num_gen = 20 IF grav_used[20] = 0 $grav_hi_1[grav_current] = $grav_char[21] $grav_hi_2[grav_current] = $grav_char[24] $grav_hi_3[grav_current] = $grav_char[30] grav_used[20] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // (JNO) IF grav_num_gen = 21 IF grav_used[21] = 0 $grav_hi_1[grav_current] = $grav_char[19] $grav_hi_2[grav_current] = $grav_char[23] $grav_hi_3[grav_current] = $grav_char[24] grav_used[21] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // (MYT) IF grav_num_gen = 22 IF grav_used[22] = 0 $grav_hi_1[grav_current] = $grav_char[22] $grav_hi_2[grav_current] = $grav_char[34] $grav_hi_3[grav_current] = $grav_char[29] grav_used[22] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // (DEF) IF grav_num_gen = 23 IF grav_used[23] = 0 $grav_hi_1[grav_current] = $grav_char[13] $grav_hi_2[grav_current] = $grav_char[14] $grav_hi_3[grav_current] = $grav_char[15] grav_used[23] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // (KHZ) IF grav_num_gen = 24 IF grav_used[24] = 0 $grav_hi_1[grav_current] = $grav_char[20] $grav_hi_2[grav_current] = $grav_char[17] $grav_hi_3[grav_current] = $grav_char[35] grav_used[24] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // (MEO) IF grav_num_gen = 25 IF grav_used[25] = 0 $grav_hi_1[grav_current] = $grav_char[22] $grav_hi_2[grav_current] = $grav_char[14] $grav_hi_3[grav_current] = $grav_char[24] grav_used[25] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // George (GFW) IF grav_num_gen = 26 IF grav_used[26] = 0 $grav_hi_1[grav_current] = $grav_char[16] $grav_hi_2[grav_current] = $grav_char[15] $grav_hi_3[grav_current] = $grav_char[32] grav_used[26] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // Will (WRM) IF grav_num_gen = 27 IF grav_used[27] = 0 $grav_hi_1[grav_current] = $grav_char[32] $grav_hi_2[grav_current] = $grav_char[27] $grav_hi_3[grav_current] = $grav_char[22] grav_used[27] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // Allan (A.W) IF grav_num_gen = 28 IF grav_used[28] = 0 $grav_hi_1[grav_current] = $grav_char[10] $grav_hi_2[grav_current] = $grav_char[36] $grav_hi_3[grav_current] = $grav_char[32] grav_used[28] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF // Richy (RIC) IF grav_num_gen = 29 IF grav_used[29] = 0 $grav_hi_1[grav_current] = $grav_char[27] $grav_hi_2[grav_current] = $grav_char[18] $grav_hi_3[grav_current] = $grav_char[12] grav_used[29] = 1 ELSE GOTO grav_generate_default_scores ENDIF ENDIF RETURN // the end ********************************************************************************* } /* [GR_A_1:GRAV] 1UP ~1~ [GR_A_2:GRAV] HI-SCORE ~1~ [GR_A_3:GRAV] LIVES ~1~ [GR_A_4:GRAV] BEGIN! [GR_A_5:GRAV] GAME OVER! [GR_A_6:GRAV] [GR_A_7:GRAV] [GR_A_8:GRAV] [GRAV_0:GRAV] 0 [GRAV_1:GRAV] 1 [GRAV_2:GRAV] 2 [GRAV_3:GRAV] 3 [GRAV_4:GRAV] 4 [GRAV_5:GRAV] 5 [GRAV_6:GRAV] 6 [GRAV_7:GRAV] 7 [GRAV_8:GRAV] 8 [GRAV_9:GRAV] 9 [GRAV_A:GRAV] A [GRAV_B:GRAV] B [GRAV_C:GRAV] C [GRAV_D:GRAV] D [GRAV_E:GRAV] E [GRAV_F:GRAV] F [GRAV_G:GRAV] G [GRAV_H:GRAV] H [GRAV_I:GRAV] I [GRAV_J:GRAV] J [GRAV_K:GRAV] K [GRAV_L:GRAV] L [GRAV_M:GRAV] M [GRAV_N:GRAV] N [GRAV_O:GRAV] O [GRAV_P:GRAV] P [GRAV_Q:GRAV] Q [GRAV_R:GRAV] R [GRAV_S:GRAV] S [GRAV_T:GRAV] T [GRAV_U:GRAV] U [GRAV_V:GRAV] V [GRAV_W:GRAV] W [GRAV_X:GRAV] X [GRAV_Y:GRAV] Y [GRAV_Z:GRAV] Z [GRAV_PE:GRAV] . */ MISSION_START // ***************************************************************************************** // ******************************************* OTB ***************************************** // ***************************************************************************************** // Mission start stuff GOSUB mission_start_otb GOSUB mission_cleanup_otb MISSION_END // ****************************************Mission Start************************************ { mission_start_otb: flag_player_on_mission = 1 //REGISTER_MISSION_GIVEN SCRIPT_NAME OTB WAIT 0 lvar_int r g b a temp_int LVAR_FLOAT temp_float LVAR_INT achievement_unlocked achievement_unlocked = 0 LOAD_MISSION_TEXT OTB USE_TEXT_COMMANDS TRUE LOAD_TEXTURE_DICTIONARY ld_otb2 load_mission_audio 4 SOUND_BANK_OTB LOAD_SPRITE 1 butna LOAD_SPRITE 2 butnb LOAD_SPRITE 3 butnc LOAD_SPRITE 4 riderdot LOAD_SPRITE 5 goldrim LOAD_SPRITE 6 greenbg LOAD_SPRITE 9 backbet LOAD_SPRITE 10 butnao LOAD_SPRITE 11 butnbo LOAD_SPRITE 12 racingscreenbg LOAD_SPRITE 13 racingheader LVAR_INT horse_colour_R[5] horse_colour_G[5] horse_colour_B[5] horse_colour_R[0] = 42 //blue horse_colour_G[0] = 96 horse_colour_B[0] = 228 horse_colour_R[1] = 209 //pink horse_colour_G[1] = 116 horse_colour_B[1] = 116 horse_colour_R[2] = 222 //yellow horse_colour_G[2] = 185 horse_colour_B[2] = 103 horse_colour_R[3] = 133 //purple horse_colour_G[3] = 65 horse_colour_B[3] = 190 horse_colour_R[4] = 65 //green horse_colour_G[4] = 190 horse_colour_B[4] = 151 LVAR_FLOAT button_gap button_gap = 50.0 LVAR_FLOAT button_x button_y[5] rider_colour_x rider_colour_Y horse_name_x horse_name_y button_x = 225.0 button_y[0] = 165.0 button_y[1] = button_y[0] + button_gap button_y[2] = button_y[1] + button_gap button_y[3] = button_y[2] + button_gap button_y[4] = button_y[3] + button_gap LVAR_FLOAT dollar_gap_x dollar_gap_y dollar_gap_x = 82.0 dollar_gap_y = 40.0 LVAR_FLOAT dollar_x[8] dollar_y[8] dollar_x[0] = 448.0 dollar_y[0] = 200.0 dollar_x[1] = dollar_x[0] + dollar_gap_x dollar_y[1] = dollar_y[0] dollar_x[2] = dollar_x[0] dollar_y[2] = dollar_y[0] + dollar_gap_y dollar_x[3] = dollar_x[0] + dollar_gap_x dollar_y[3] = dollar_y[0] + dollar_gap_y dollar_x[4] = dollar_x[2] dollar_y[4] = dollar_y[2] + dollar_gap_y dollar_x[5] = dollar_x[4] + dollar_gap_x dollar_y[5] = dollar_y[4] dollar_x[6] = dollar_x[4] dollar_y[6] = dollar_y[4] + dollar_gap_y dollar_x[7] = dollar_x[4] + dollar_gap_x dollar_y[7] = dollar_y[4] + dollar_gap_y LVAR_FLOAT stake_x stake_y stake_x = 510.0702 stake_y = 385.0263 CONST_INT UNSELECTED 0 CONST_INT SELECTED 1 CONST_INT PRESSED_DOWN 2 LVAR_INT button_state[14] nSelectedButton nSelectedHorse nSelectedButton = 0 nSelectedHorse = 0 k = 0 WHILE k < 14 button_state[k] = UNSELECTED k++ ENDWHILE button_state[0] = SELECTED LVAR_INT pad1_up_pressed pad1_down_pressed pad1_left_pressed pad1_right_pressed pad1_cross_pressed pad1_triangle_pressed pad1_up_pressed = 1 pad1_down_pressed = 1 pad1_left_pressed = 1 pad1_right_pressed = 1 pad1_cross_pressed = 1 pad1_triangle_pressed = 1 LVAR_INT depressed_button_timer depressed_button_timer = 0 LVAR_INT place_bet_state place_bet_state = 0 LVAR_INT cash_stake cash_stake = 0 LVAR_INT dollar_cash_stake[8] dollar_cash_stake[0] = 0 dollar_cash_stake[1] = 5 dollar_cash_stake[2] = 25 dollar_cash_stake[3] = 100 dollar_cash_stake[4] = 250 dollar_cash_stake[5] = 1000 dollar_cash_stake[6] = 5000 dollar_cash_stake[7] = 10000 LVAR_INT players_cash lVAR_TEXT_LABEL $horse_names[167] $horse_names[0] = HORS__1 $horse_names[1] = HORS__2 $horse_names[2] = HORS__3 $horse_names[3] = HORS__4 $horse_names[4] = HORS__5 $horse_names[5] = HORS__6 $horse_names[6] = HORS__7 $horse_names[7] = HORS__8 $horse_names[8] = HORS__9 $horse_names[9] = HORS_10 $horse_names[10] = HORS_11 $horse_names[11] = HORS_12 $horse_names[12] = HORS_13 $horse_names[13] = HORS_14 $horse_names[14] = HORS_15 $horse_names[15] = HORS_16 $horse_names[16] = HORS_17 $horse_names[17] = HORS_18 $horse_names[18] = HORS_19 $horse_names[19] = HORS_20 $horse_names[20] = HORS_21 $horse_names[21] = HORS_22 $horse_names[22] = HORS_23 $horse_names[23] = HORS_24 $horse_names[24] = HORS_25 $horse_names[25] = HORS_26 $horse_names[26] = HORS_27 $horse_names[27] = HORS_28 $horse_names[28] = HORS_29 $horse_names[29] = HORS_30 $horse_names[30] = HORS_31 $horse_names[31] = HORS_32 $horse_names[32] = HORS_33 $horse_names[33] = HORS_34 $horse_names[34] = HORS_35 $horse_names[35] = HORS_36 $horse_names[36] = HORS_37 $horse_names[37] = HORS_38 $horse_names[38] = HORS_39 $horse_names[39] = HORS_40 $horse_names[40] = HORS_41 $horse_names[41] = HORS_42 $horse_names[42] = HORS_43 $horse_names[43] = HORS_44 $horse_names[44] = HORS_45 $horse_names[45] = HORS_46 $horse_names[46] = HORS_47 $horse_names[47] = HORS_48 $horse_names[48] = HORS_49 $horse_names[49] = HORS_50 $horse_names[50] = HORS_51 $horse_names[51] = HORS_52 $horse_names[52] = HORS_53 $horse_names[53] = HORS_54 $horse_names[54] = HORS_55 $horse_names[55] = HORS_56 $horse_names[56] = HORS_57 $horse_names[57] = HORS_58 $horse_names[58] = HORS_59 $horse_names[59] = HORS_60 $horse_names[60] = HORS_61 $horse_names[61] = HORS_62 $horse_names[62] = HORS_63 $horse_names[63] = HORS_64 $horse_names[64] = HORS_65 $horse_names[65] = HORS_66 $horse_names[66] = HORS_67 $horse_names[67] = HORS_68 $horse_names[68] = HORS_69 $horse_names[69] = HORS_70 $horse_names[70] = HORS_71 $horse_names[71] = HORS_72 $horse_names[72] = HORS_73 $horse_names[73] = HORS_74 $horse_names[74] = HORS_75 $horse_names[75] = HORS_76 $horse_names[76] = HORS_77 $horse_names[77] = HORS_78 $horse_names[78] = HORS_79 $horse_names[79] = HORS_80 $horse_names[80] = HORS_81 $horse_names[81] = HORS_82 $horse_names[82] = HORS_83 $horse_names[83] = HORS_84 $horse_names[84] = HORS_85 $horse_names[85] = HORS_86 $horse_names[86] = HORS_87 $horse_names[87] = HORS_88 $horse_names[88] = HORS_89 $horse_names[89] = HORS_90 $horse_names[90] = HORS_91 $horse_names[91] = HORS_92 $horse_names[92] = HORS_93 $horse_names[93] = HORS_94 $horse_names[94] = HORS_95 $horse_names[95] = HORS_96 $horse_names[96] = HORS_97 $horse_names[97] = HORS_98 $horse_names[98] = HORS_99 $horse_names[99] = HORS100 $horse_names[100] = HORS101 $horse_names[101] = HORS102 $horse_names[102] = HORS103 $horse_names[103] = HORS104 $horse_names[104] = HORS105 $horse_names[105] = HORS106 $horse_names[106] = HORS107 $horse_names[107] = HORS108 $horse_names[108] = HORS109 $horse_names[109] = HORS110 $horse_names[110] = HORS111 $horse_names[111] = HORS112 $horse_names[112] = HORS113 $horse_names[113] = HORS114 $horse_names[114] = HORS115 $horse_names[115] = HORS116 $horse_names[116] = HORS117 $horse_names[117] = HORS118 $horse_names[118] = HORS119 $horse_names[119] = HORS120 $horse_names[120] = HORS121 $horse_names[121] = HORS122 $horse_names[122] = HORS123 $horse_names[123] = HORS124 $horse_names[124] = HORS125 $horse_names[125] = HORS126 $horse_names[126] = HORS127 $horse_names[127] = HORS128 $horse_names[128] = HORS129 $horse_names[129] = HORS130 $horse_names[130] = HORS131 $horse_names[131] = HORS132 $horse_names[132] = HORS133 $horse_names[133] = HORS134 $horse_names[134] = HORS135 $horse_names[135] = HORS136 $horse_names[136] = HORS137 $horse_names[137] = HORS138 $horse_names[138] = HORS139 $horse_names[139] = HORS140 $horse_names[140] = HORS141 $horse_names[141] = HORS142 $horse_names[142] = HORS143 $horse_names[143] = HORS144 $horse_names[144] = HORS145 $horse_names[145] = HORS146 $horse_names[146] = HORS147 $horse_names[147] = HORS148 $horse_names[148] = HORS149 $horse_names[149] = HORS150 $horse_names[150] = HORS151 $horse_names[151] = HORS152 $horse_names[152] = HORS153 $horse_names[153] = HORS154 $horse_names[154] = HORS155 $horse_names[155] = HORS156 $horse_names[156] = HORS157 $horse_names[157] = HORS158 $horse_names[158] = HORS159 $horse_names[159] = HORS160 $horse_names[160] = HORS161 $horse_names[161] = HORS162 $horse_names[162] = HORS163 $horse_names[163] = HORS164 $horse_names[164] = HORS165 $horse_names[165] = HORS166 $horse_names[166] = HORS167 LVAR_INT horses[5] horses[0] = -1 horses[1] = -1 horses[2] = -1 horses[3] = -1 horses[4] = -1 GENERATE_RANDOM_INT_IN_RANGE 0 167 horses[0] WHILE horses[0] = horses[1] OR horses[1] = -1 GENERATE_RANDOM_INT_IN_RANGE 0 167 horses[1] ENDWHILE WHILE horses[0] = horses[2] OR horses[1] = horses[2] OR horses[2] = -1 GENERATE_RANDOM_INT_IN_RANGE 0 167 horses[2] ENDWHILE WHILE horses[0] = horses[3] OR horses[1] = horses[3] OR horses[2] = horses[3] OR horses[3] = -1 GENERATE_RANDOM_INT_IN_RANGE 0 167 horses[3] ENDWHILE WHILE horses[0] = horses[4] OR horses[1] = horses[4] OR horses[2] = horses[4] OR horses[3] = horses[4] OR horses[4] = -1 GENERATE_RANDOM_INT_IN_RANGE 0 167 horses[4] ENDWHILE LVAR_INT horse_counter1 horse_counter2 horses_ability[5] horses_ability[0] = 1 horses_ability[1] = 1 horses_ability[2] = 1 horses_ability[3] = 1 horses_ability[4] = 1 horse_counter1 = 0 WHILE horse_counter1 < 5 horse_counter2 = 0 WHILE horse_counter2 < 5 IF horses[horse_counter1] < horses[horse_counter2] ++ horses_ability[horse_counter1] ENDIF ++ horse_counter2 ENDWHILE ++ horse_counter1 ENDWHILE horse_counter1 = 0 LVAR_INT horse[5] WHILE horse_counter1 < 5 IF horses_ability[horse_counter1] = 1 horse[0] = horses[horse_counter1] ENDIF IF horses_ability[horse_counter1] = 2 horse[1] = horses[horse_counter1] ENDIF IF horses_ability[horse_counter1] = 3 horse[2] = horses[horse_counter1] ENDIF IF horses_ability[horse_counter1] = 4 horse[3] = horses[horse_counter1] ENDIF IF horses_ability[horse_counter1] = 5 horse[4] = horses[horse_counter1] ENDIF ++ horse_counter1 ENDWHILE LVAR_INT horse_odds[5] GENERATE_RANDOM_INT_IN_RANGE 2 4 horse_odds[0] GENERATE_RANDOM_INT_IN_RANGE 4 6 horse_odds[1] GENERATE_RANDOM_INT_IN_RANGE 6 9 horse_odds[2] GENERATE_RANDOM_INT_IN_RANGE 9 11 horse_odds[3] GENERATE_RANDOM_INT_IN_RANGE 11 13 horse_odds[4] lvar_int goto_horse_race goto_horse_race = 0 while not has_mission_audio_loaded 4 wait 0 endwhile DO_FADE 0 FADE_in CLEAR_HELP PRINT_HELP_FOREVER XSELEC2 // Use the movement controls to select a horse on the left. Set your bet by pressing the buttons on the right. Press the exit button to quit. GOSUB DrawAspectCorrectingQuads // For aspect correction. DRAW_RECT 320.0 224.0 640.0 448.0 0 0 0 255 betting_otb_loop: WAIT 0 GET_GAME_TIMER game_timer LVAR_INT pad1_leftstick_x pad1_leftstick_y pad1_rightstick_x pad1_rightstick_y GET_POSITION_OF_ANALOGUE_STICKS PAD1 pad1_leftstick_x pad1_leftstick_y pad1_rightstick_x pad1_rightstick_y GOSUB FindSelectedButton GOSUB DrawAspectCorrectingQuads // For aspect correction. // Render the blue backdrop. DRAW_SPRITE 12 320.0 224.0 576.0 403.2 150 150 150 255 // Render the tv screen backdrop. DRAW_SPRITE 9 320.0 224.0 640.0 448.0 150 150 150 255 // Render the "your cash" text at top right. STORE_SCORE player1 players_cash GOSUB setup_text_otb SET_TEXT_SCALE 0.4753 2.2289 SET_TEXT_RIGHT_JUSTIFY ON DISPLAY_TEXT_WITH_NUMBER 580.0 50.0 YOURCSH players_cash // YOUR CASH: $~1~ // Draw the red background for the track name and horse selected. DRAW_SPRITE 13 320.0 118.0 530.0 40.0 150 150 150 255 // Draw the green background for the wagers. DRAW_SPRITE 6 490.0 265.0 190.0 252.0 150 150 150 255 // Draw the name of the track. GOSUB setup_text_otb SET_TEXT_SCALE 2.8 2.8 SET_TEXT_JUSTIFY ON DISPLAY_TEXT 68.0 100.0 HRACE01 // LARGE ACRES // Draw the rider selection buttons. LVAR_INT k k = 0 WHILE k < 5 rider_colour_x = button_x - 130.0 rider_colour_y = button_y[k] - 8.0 horse_name_x = button_x - 130.0 horse_name_y = button_y[k] - 14.0 IF button_state[k] = UNSELECTED DRAW_SPRITE 1 button_x button_y[k] 340.0 50.0 150 150 150 255 ENDIF IF button_state[k] = SELECTED OR k = nSelectedHorse DRAW_SPRITE 1 button_x button_y[k] 340.0 50.0 100 100 100 255 ENDIF IF button_state[k] = PRESSED_DOWN DRAW_SPRITE 1 button_x button_y[k] 340.0 50.0 150 150 150 255 rider_colour_x += 2.0 rider_colour_y += 2.0 // Show it being depressed. horse_name_x += 2.0 horse_name_y += 2.0 ENDIF rider_colour_x -=20.0 rider_colour_y += 10.0 DRAW_SPRITE 4 rider_colour_x rider_colour_y 20.0 20.0 horse_colour_R[k] horse_colour_G[k] horse_colour_B[k] 255 // Colored dot. GOSUB setup_text_otb SET_TEXT_JUSTIFY ON SET_TEXT_SCALE 3.0 3.0 SET_TEXT_DROPSHADOW 0 0 0 0 0 IF button_state[k] = SELECTED OR k = nSelectedHorse SET_TEXT_COLOUR 180 180 180 255 ELSE SET_TEXT_COLOUR 0 0 0 255 ENDIF LVAR_INT ndxHorse ndxHorse = horses[k] DISPLAY_TEXT_CLAMPED horse_name_x horse_name_y $horse_names[ndxHorse] 170.0 // Name of the horse. SET_TEXT_CENTRE ON SET_TEXT_SCALE 2.5 2.5 SET_TEXT_DROPSHADOW 0 0 0 0 0 IF button_state[k] = SELECTED OR k = nSelectedHorse SET_TEXT_COLOUR 180 180 180 255 ELSE SET_TEXT_COLOUR 0 0 0 255 ENDIF horse_name_y += 3.0 DISPLAY_TEXT_WITH_NUMBER_CLAMPED 335.0 horse_name_y ODDS horse_odds[k] 80.0 // Odds. ++k ENDWHILE // Draw the narrow gold rims. DRAW_SPRITE 5 320.0 138.0 530.0 5.0 150 150 150 255 DRAW_SPRITE 5 320.0 392.0 530.0 4.0 150 150 150 255 // Render the current bet amount above the wager buttons. GOSUB setup_text_otb SET_TEXT_SCALE 2.25 2.25 SET_TEXT_CENTRE ON DISPLAY_TEXT_WITH_NUMBER 483.0 148.0 DOLLAR cash_stake // Draw the wager buttons. k = 0 WHILE k < 8 LVAR_INT nButtonIndex nButtonIndex = k + 5 // Touch controls don't need to show a 'current selection'. IF IS_TOUCH_ENABLED IF button_state[nButtonIndex] = UNSELECTED DRAW_SPRITE 2 dollar_x[k] dollar_y[k] 80.0 40.0 150 150 150 255 ENDIF IF button_state[nButtonIndex] = SELECTED OR button_state[nButtonIndex] = PRESSED_DOWN DRAW_SPRITE 2 dollar_x[k] dollar_y[k] 80.0 40.0 50 50 50 255 ENDIF // Joystick/key controls do show a 'current selection'. ELSE IF button_state[nButtonIndex] = UNSELECTED OR button_state[nButtonIndex] = PRESSED_DOWN DRAW_SPRITE 2 dollar_x[k] dollar_y[k] 80.0 35.0 150 150 150 255 ENDIF IF button_state[nButtonIndex] = SELECTED DRAW_SPRITE 2 dollar_x[k] dollar_y[k] 90.0 45.0 150 150 150 255 ENDIF ENDIF // Render the wager text on top of the buttons. GOSUB setup_text_otb SET_TEXT_CENTRE ON SET_TEXT_SCALE 2.0 2.0 IF button_state[nButtonIndex] > 0 AND NOT IS_TOUCH_ENABLED get_hud_colour HUD_COLOUR_RED r g b a SET_TEXT_COLOUR r g b a ENDIF temp_float = dollar_y[k] - 10.0 LVAR_FLOAT temp_floatx temp_floatx = dollar_x[k] IF button_state[nButtonIndex] = PRESSED_DOWN // Show the button is being pressed. temp_floatx += 2.0 temp_float += 2.0 ENDIF DISPLAY_TEXT_WITH_NUMBER_CLAMPED temp_floatx temp_float DOLLAR dollar_cash_stake[k] 70.0 ++k ENDWHILE // Draw the "place bet" button. IF button_state[13] = PRESSED_DOWN OR button_state[13] = SELECTED DRAW_SPRITE 10 488.0 364.0 165.0 45.0 150 150 150 255 ELSE DRAW_SPRITE 10 488.0 364.0 157.0 38.0 150 150 150 255 ENDIF GOSUB setup_text_otb SET_TEXT_SCALE 2.25 2.25 SET_TEXT_CENTRE ON IF IS_WIDGET_PRESSED WIDGET_ITB_PLACE_BET DISPLAY_TEXT_CLAMPED 490.0 356.0 PLACBET 140.0 // Place bet ELSE DISPLAY_TEXT_CLAMPED 488.0 354.0 PLACBET 140.0 // Place bet ENDIF // Move up and down on the horse selection panel. IF pad1_leftstick_y < -100 OR IS_BUTTON_PRESSED PAD1 DPADUP IF pad1_up_pressed = 0 GOSUB UpPressed pad1_up_pressed = 1 ENDIF ELSE pad1_up_pressed = 0 ENDIF IF pad1_leftstick_y > 100 OR IS_BUTTON_PRESSED PAD1 DPADDOWN IF pad1_down_pressed = 0 GOSUB DownPressed pad1_down_pressed = 1 ENDIF ELSE pad1_down_pressed = 0 ENDIF IF pad1_leftstick_x < -100 OR IS_BUTTON_PRESSED PAD1 DPADLEFT IF pad1_left_pressed = 0 GOSUB LeftPressed pad1_left_pressed = 1 ENDIF ELSE pad1_left_pressed = 0 ENDIF IF pad1_leftstick_x > 100 OR IS_BUTTON_PRESSED PAD1 DPADRIGHT IF pad1_right_pressed = 0 GOSUB RightPressed pad1_right_pressed = 1 ENDIF ELSE pad1_right_pressed = 0 ENDIF // Grab the selected horse. LVAR_INT nLoop nIndex nLoop = 0 WHILE nLoop < 5 IF button_state[nLoop] = SELECTED nSelectedHorse = nLoop ENDIF nLoop++ ENDWHILE // Handle touch input on the horse names. nLoop = 0 nIndex = 0 WHILE nLoop < 5 nIndex = WIDGET_ITB_FIRST_HORSE + nLoop IF IS_WIDGET_PRESSED nIndex AND button_state[nLoop] = UNSELECTED button_state[nLoop] = PRESSED_DOWN ENDIF IF NOT IS_WIDGET_PRESSED nIndex AND button_state[nLoop] = PRESSED_DOWN button_state[nLoop] = UNSELECTED ENDIF IF IS_WIDGET_RELEASED nIndex GOSUB ClearButtonStates button_state[nLoop] = SELECTED ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_AMMUNATION_BUY_WEAPON ENDIF nLoop++ ENDWHILE // Check for a press on the exit button. Give the player their money back and quit back to the game. IF IS_WIDGET_RELEASED WIDGET_ITB_EXIT IF pad1_triangle_pressed = 0 pad1_triangle_pressed = 1 ADD_SCORE player1 cash_stake cash_stake = 0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_OTB_INCREASE_BET do_fade 0 fade_out wait 0 RETURN ENDIF ELSE pad1_triangle_pressed = 0 ENDIF // Check for touches on the wager/place bet buttons. LVAR_INT nWidgetPressed nWidgetPressed = 0 nLoop = 0 nIndex = 0 WHILE nLoop < 9 nButtonIndex = nLoop + 5 nIndex = WIDGET_ITB_FIRST_BET + nLoop IF IS_WIDGET_PRESSED nIndex AND button_state[nButtonIndex] = UNSELECTED button_state[nButtonIndex] = PRESSED_DOWN ENDIF IF NOT IS_WIDGET_PRESSED nIndex AND button_state[nButtonIndex] = PRESSED_DOWN button_state[nButtonIndex] = UNSELECTED ENDIF IF IS_WIDGET_RELEASED nIndex nWidgetPressed = 1 button_state[nButtonIndex] = SELECTED ENDIF IF IS_HID_RELEASED HID_MAPPING_ACCEPT AND nButtonIndex = nSelectedButton nWidgetPressed = 1 button_state[nButtonIndex] = SELECTED ENDIF nLoop++ ENDWHILE LVAR_INT poop poop = 0 IF IS_WIDGET_RELEASED WIDGET_ITB_PLACE_BET poop = 1 ENDIF IF IS_HID_RELEASED HID_MAPPING_ACCEPT AND nSelectedButton = 13 poop = 1 ENDIF IF poop = 1 IF cash_stake > 0 GOSUB ClearButtonStates nWidgetPressed = 1 place_bet_state = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_OTB_PLACE_BET ELSE REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_OTB_BET_ZERO ENDIF ENDIF IF nWidgetPressed = 1 IF pad1_cross_pressed = 0 IF NOT IS_CHAR_DEAD scplayer GET_CHAR_COORDINATES scplayer player_x player_y player_z ENDIF IF place_bet_state > 0 AND cash_stake > 0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_OTB_PLACE_BET goto_horse_race = 1 ENDIF // CLEAR THE CASH WITH THE $0 BUTTON IF button_state[5] = 1 button_state[5] = 2 ADD_SCORE player1 cash_stake cash_stake = dollar_cash_stake[0] REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_OTB_BET_ZERO ENDIF // ADD MONEY TO PLAYERS BET k = 0 WHILE k < 8 nButtonIndex = k + 5 IF button_state[nButtonIndex] = 1 button_state[nButtonIndex] = 2 temp_int = dollar_cash_stake[k] - 1 lvar_int temp_int2 temp_int2 = cash_stake + dollar_cash_stake[k] IF IS_SCORE_GREATER player1 temp_int and temp_int2 < 9999999 cash_stake += dollar_cash_stake[k] temp_int = dollar_cash_stake[k] * -1 ADD_SCORE player1 temp_int REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_OTB_INCREASE_BET ELSE REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_OTB_NO_CASH ENDIF ENDIF ++k ENDWHILE pad1_cross_pressed = 1 ENDIF ELSE IF pad1_cross_pressed = 1 //RESET THE BUTTONS GRAPHIC WHEN BUTTON RELEASED k = 5 WHILE k < 14 IF button_state[k] = 2 button_state[k] = 1 ENDIF ++ k ENDWHILE pad1_cross_pressed = 0 ENDIF ENDIF if goto_horse_race = 1 goto the_horse_race endif GOTO betting_otb_loop the_horse_race: GOSUB DrawAspectCorrectingQuads // For aspect correction. DRAW_RECT 320.0 224.0 640.0 448.0 0 0 0 255 REMOVE_TEXTURE_DICTIONARY LOAD_TEXTURE_DICTIONARY ld_otb LOAD_SPRITE 1 bckgrnd LOAD_SPRITE 2 bushes LOAD_SPRITE 3 bride1 LOAD_SPRITE 4 bride2 LOAD_SPRITE 5 bride3 LOAD_SPRITE 6 bride4 LOAD_SPRITE 7 bride5 LOAD_SPRITE 8 bride6 LOAD_SPRITE 9 bride7 LOAD_SPRITE 10 bride8 LOAD_SPRITE 11 trees LOAD_SPRITE 12 fen LOAD_SPRITE 13 pole2 LOAD_SPRITE 14 rride1 LOAD_SPRITE 15 rride2 LOAD_SPRITE 16 rride3 LOAD_SPRITE 17 rride4 LOAD_SPRITE 18 rride5 LOAD_SPRITE 19 rride6 LOAD_SPRITE 20 rride7 LOAD_SPRITE 21 rride8 LOAD_SPRITE 22 yride1 LOAD_SPRITE 23 yride2 LOAD_SPRITE 24 yride3 LOAD_SPRITE 25 yride4 LOAD_SPRITE 26 yride5 LOAD_SPRITE 27 yride6 LOAD_SPRITE 28 yride7 LOAD_SPRITE 29 yride8 LOAD_SPRITE 30 pride1 LOAD_SPRITE 31 pride2 LOAD_SPRITE 32 pride3 LOAD_SPRITE 33 pride4 LOAD_SPRITE 34 pride5 LOAD_SPRITE 35 pride6 LOAD_SPRITE 36 pride7 LOAD_SPRITE 37 pride8 LOAD_SPRITE 38 gride1 LOAD_SPRITE 39 gride2 LOAD_SPRITE 40 gride3 LOAD_SPRITE 41 gride4 LOAD_SPRITE 42 gride5 LOAD_SPRITE 43 gride6 LOAD_SPRITE 44 gride7 LOAD_SPRITE 45 gride8 LOAD_SPRITE 46 backbet LOAD_SPRITE 47 racetop LOAD_SPRITE 48 racebottom LOAD_SPRITE 49 blue LOAD_SPRITE 50 hrs1 LOAD_SPRITE 51 hrs2 LOAD_SPRITE 52 hrs3 LOAD_SPRITE 53 hrs4 LOAD_SPRITE 54 hrs5 LOAD_SPRITE 55 hrs6 LOAD_SPRITE 56 hrs7 LOAD_SPRITE 57 hrs8 LVAR_INT horse_speed_change_timer[5] horse_speed_change_timer[0] = 0 horse_speed_change_timer[1] = 0 horse_speed_change_timer[2] = 0 horse_speed_change_timer[3] = 0 horse_speed_change_timer[4] = 0 LVAR_INT is_horse_moving[5] is_horse_moving[0] = 0 is_horse_moving[1] = 0 is_horse_moving[2] = 0 is_horse_moving[3] = 0 is_horse_moving[4] = 0 //SCALES OFF EACH HORSE BY 10% AS THEY MOVE FURTHER AWAY LVAR_FLOAT horse_scale[5] ten_percent horse_scale[4] = 128.0 ten_percent = horse_scale[4] / 10.0 horse_scale[3] = horse_scale[4] - ten_percent ten_percent = horse_scale[3] / 10.0 horse_scale[2] = horse_scale[3] - ten_percent ten_percent = horse_scale[2] / 10.0 horse_scale[1] = horse_scale[2] - ten_percent ten_percent = horse_scale[1] / 10.0 horse_scale[0] = horse_scale[1] - ten_percent LVAR_FLOAT rider_scale[5] rider_scale[4] = 64.0 ten_percent = rider_scale[4] / 10.0 rider_scale[3] = rider_scale[4] - ten_percent ten_percent = rider_scale[3] / 10.0 rider_scale[2] = rider_scale[3] - ten_percent ten_percent = rider_scale[2] / 10.0 rider_scale[1] = rider_scale[2] - ten_percent ten_percent = rider_scale[1] / 10.0 rider_scale[0] = rider_scale[1] - ten_percent //PUTS EACH HORSE 10% BEHIND THE ONE IN FRONT LVAR_FLOAT horse_x[5] horse_y[5] horse_x[0] = 150.0 horse_x[1] = 150.0 horse_x[2] = 150.0 horse_x[3] = 150.0 horse_x[4] = 150.0 horse_y[4] = 300.0 ten_percent = horse_y[4] / 10.0 horse_y[3] = horse_y[4] - ten_percent ten_percent = horse_y[3] / 10.0 horse_y[2] = horse_y[3] - ten_percent ten_percent = horse_y[2] / 10.0 horse_y[1] = horse_y[2] - ten_percent ten_percent = horse_y[1] / 10.0 horse_y[0] = horse_y[1] - ten_percent LVAR_FLOAT rider_x[5] rider_y[5] rider_x[0] = 159.0 rider_x[1] = 159.0 rider_x[2] = 159.0 rider_x[3] = 159.0 rider_x[4] = 159.0 rider_y[4] = 261.0 ten_percent = rider_y[4] / 10.0 rider_y[3] = rider_y[4] - ten_percent ten_percent = rider_y[3] / 10.0 rider_y[2] = rider_y[3] - ten_percent ten_percent = rider_y[2] / 10.0 rider_y[1] = rider_y[2] - ten_percent ten_percent = rider_y[1] / 10.0 rider_y[0] = rider_y[1] - ten_percent LVAR_FLOAT horse_target_speed[5] LVAR_FLOAT horse_speed[5] horse_speed[0] = 0.0 horse_speed[1] = 0.0 horse_speed[2] = 0.0 horse_speed[3] = 0.0 horse_speed[4] = 0.0 //SETS A STARTING FRAME OF ANIMATION FOR EACH HORSE AND THEIR STARTING POSITION LVAR_INT horse_anim_frame[5] LVAR_INT sprite_address sprite horse_anim_frame[0] = 2 horse_anim_frame[1] = 5 horse_anim_frame[2] = 6 horse_anim_frame[3] = 1 horse_anim_frame[4] = 4 LVAR_INT anim_starting_addr[5] anim_starting_addr[0] = 3 anim_starting_addr[1] = 14 anim_starting_addr[2] = 22 anim_starting_addr[3] = 30 anim_starting_addr[4] = 38 //RANDOM DURATION OF RACE LVAR_INT race_duration //GENERATE_RANDOM_INT_IN_RANGE 20000 30000 race_duration GET_GAME_TIMER game_timer race_duration = game_timer + 25000 LVAR_FLOAT finish_line_x actual_finish_line_x finish_line_x = 512.0 actual_finish_line_x = finish_line_x + 124.0 LVAR_INT horse_finish_position[5] horse_finish_position[0] = 0 horse_finish_position[1] = 0 horse_finish_position[2] = 0 horse_finish_position[3] = 0 horse_finish_position[4] = 0 LVAR_FLOAT horse_text_position_y[5] LVAR_INT first_place_flag second_place_flag third_place_flag forth_place_flag fifth_place_flag first_place_flag = 0 second_place_flag = 0 third_place_flag = 0 forth_place_flag = 0 fifth_place_flag = 0 LVAR_FLOAT origin layer_x layer_scroll_speed LVAR_FLOAT background_pos trees_pos bushes_pos fence_pos background_pos = 0.0 trees_pos = 0.0 bushes_pos = 0.0 fence_pos = 0.0 LVAR_INT stop_everything_moving stop_everything_moving = 0 LVAR_FLOAT text_origin_x text_origin_y text_position_x text_position_y rect_x rect_y text_origin_x = 454.3640 text_origin_y = 152.8744 LVAR_INT race_winnings race_winnings = 0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_OTB_TRACK_START lvar_int play_win_lose_sound play_win_lose_sound = 0 lvar_int horse_anim_timer[5] horse_anim_timer[0] = 12 horse_anim_timer[1] = 34 horse_anim_timer[2] = 0 horse_anim_timer[3] = 55 horse_anim_timer[4] = 20 race_otb_loop: WAIT 0 GET_GAME_TIMER game_timer IF stop_everything_moving = 0 k = 0 WHILE k < 5 //GENERATES A RANDOM TARGET SPEED FOR THE HORSE EVERY SECOND OR TWO IF horse_speed_change_timer[k] < game_timer GENERATE_RANDOM_FLOAT_IN_RANGE -0.8 1.0 horse_target_speed[k]//need to change these figures to use the odds LVAR_INT random_int GENERATE_RANDOM_INT_IN_RANGE 1500 2500 random_int horse_speed_change_timer[k] = game_timer + random_int is_horse_moving[k] = 1 ENDIF //INTERPOLATES HORSES SPEED TO THE NEW TARGET SPEED IF is_horse_moving[k] = 1 IF horse_target_speed[k] < horse_speed[k] horse_speed[k] -=@ 0.01 IF horse_target_speed[k] > horse_speed[k] horse_speed[k] = horse_target_speed[k] ++ is_horse_moving[k] ENDIF ENDIF IF horse_target_speed[k] > horse_speed[k] horse_speed[k] +=@ 0.01 IF horse_target_speed[k] < horse_speed[k] horse_speed[k] = horse_target_speed[k] ++ is_horse_moving[k] ENDIF ENDIF ENDIF //ACTUALLY MOVES THE HORSE ON THE X PLANE IF is_horse_moving[k] > 0 horse_x[k] +=@ horse_speed[k] ENDIF //MAKE SURE THE HORSE DOESN'T GO OFF THE EDGES OF THE SCREEN IF horse_x[k] < 80.0 horse_x[k] = 80.0 ENDIF IF horse_x[k] > 520.0 horse_x[k] = 520.0 ENDIF ++ k ENDWHILE ENDIF //DRAW THE SCENE origin = background_pos y_offset = -76.0 y_scale = 72.0 sprite = 1 layer_scroll_speed = 4.0 GOSUB draw_paralax_layer background_pos = origin origin = bushes_pos y_offset = -64.0 y_scale = 128.0 sprite = 2 layer_scroll_speed = 5.0 GOSUB draw_paralax_layer bushes_pos = origin origin = trees_pos y_offset = 0.0 y_scale = 256.0 sprite = 11 layer_scroll_speed = 6.0 GOSUB draw_paralax_layer trees_pos = origin IF race_duration < game_timer //DRAW FINISH LINE SPRITE IF finish_line_x > -200.0 IF stop_everything_moving = 0 finish_line_x -=@ 6.0 ENDIF DRAW_SPRITE 13 finish_line_x 224.0 256.0 256.0 150 150 150 255 actual_finish_line_x = finish_line_x + 124.0 ENDIF //CHECK WHO WON THE RACE k = 0 WHILE k < 5 IF horse_finish_position[k] = 0 IF horse_x[k] > actual_finish_line_x IF first_place_flag = 0 horse_finish_position[k] = 1 ++ first_place_flag ELSE IF second_place_flag = 0 horse_finish_position[k] = 2 ++ second_place_flag ELSE IF third_place_flag = 0 horse_finish_position[k] = 3 ++ third_place_flag ELSE IF forth_place_flag = 0 horse_finish_position[k] = 4 ++ forth_place_flag ELSE IF fifth_place_flag = 0 horse_finish_position[k] = 5 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_OTB_TRACK_STOP ++ stop_everything_moving ++ fifth_place_flag ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ++ k ENDWHILE ENDIF //DRAW HORSE SPRITES k = 0 WHILE k < 5 sprite_address = 50 + horse_anim_frame[k] DRAW_SPRITE sprite_address horse_x[k] horse_y[k] horse_scale[k] horse_scale[k] 150 150 150 255 sprite_address = anim_starting_addr[k] + horse_anim_frame[k] rider_x[k] = horse_x[k] + 9.0 temp_float = rider_scale[k] / 2.0 DRAW_SPRITE sprite_address rider_x[k] rider_y[k] rider_scale[k] temp_float 150 150 150 255 IF stop_everything_moving = 0 if horse_anim_timer[k] < game_timer ++ horse_anim_frame[k] IF horse_anim_frame[k] > 7 horse_anim_frame[k] = 0 ENDIF horse_anim_timer[k] = game_timer + 67//HORSE ANIMATION IS 15 FPS endif ENDIF ++ k ENDWHILE //DRAW FOREGROUND PARALAX origin = fence_pos y_offset = 96.0 y_scale = 64.0 sprite = 12 layer_scroll_speed = 8.0 GOSUB draw_paralax_layer fence_pos = origin GOSUB DrawAspectCorrectingQuads // For aspect correction. // Render the top and bottom billboards. DRAW_SPRITE 47 320.0 58.0 640.0 112.0 150 150 150 255 DRAW_SPRITE 48 320.0 388.0 640.0 128.0 150 150 150 255 // Render the tv screen backdrop. DRAW_SPRITE 46 320.0 224.0 640.0 448.0 150 150 150 255 IF horse_finish_position[0] > 0 OR horse_finish_position[1] > 0 OR horse_finish_position[2] > 0 OR horse_finish_position[3] > 0 OR horse_finish_position[4] > 0 ELSE // Display "large acres" at the top of the screen. SET_TEXT_CENTRE ON SET_TEXT_SCALE 2.8 2.8 DISPLAY_TEXT 320.0 50.0 HRACE01 // LARGE ACRES // Display 'YOUR HORSE:' text_position_x = text_origin_x - 145.0 text_position_y = text_origin_y - 70.0 GOSUB setup_text_otb set_text_justify off set_text_right_justify on SET_TEXT_FONT FONT_SPACEAGE SET_TEXT_SCALE 1.8 1.8 SET_TEXT_COLOUR 180 180 180 255 DISPLAY_TEXT text_position_x text_position_y YOURHSE // Draw a rectangle indicating color, and the name of the horse you bet on. text_position_x = text_origin_x - 138.0 text_position_y += 10.0 DRAW_RECT text_position_x text_position_y 12.0 12.0 0 0 0 255 DRAW_RECT text_position_x text_position_y 10.0 10.0 horse_colour_R[nSelectedHorse] horse_colour_G[nSelectedHorse] horse_colour_B[nSelectedHorse] 255 text_position_x += 10.8216 text_position_y -= 10.0 GOSUB setup_text_otb SET_TEXT_FONT FONT_SPACEAGE SET_TEXT_SCALE 1.8 1.8 SET_TEXT_COLOUR 180 180 180 255 ndxHorse = horses[nSelectedHorse] DISPLAY_TEXT text_position_x text_position_y $horse_names[ndxHorse] ENDIF // Render race results. LVAR_FLOAT winning_info_x winning_info_x = text_origin_x + -23.3585 k = 0 WHILE k < 5 IF horse_finish_position[k] > 0 // Args are: cell int0 int1 color label text //================================================================================================================ LVAR_INT ndxFinish ndxFinish = horse_finish_position[k] - 1 ndxHorse = horses[k] temp_int = ndxFinish + 1 SET_WIDGET_INFO2 WIDGET_HORSE_RESULTS temp_int k 0 WAGER_WHITE $horse_names[ndxHorse] DUMMY // Name of horse ENDIF ++ k ENDWHILE // DISPLAY TEXT TELLING PLAYER WHAT HE BET AND WON ON COMPLETION OF RACE IF horse_finish_position[0] > 0 AND horse_finish_position[1] > 0 AND horse_finish_position[2] > 0 AND horse_finish_position[3] > 0 AND horse_finish_position[4] > 0 // Args are: cell int0 int1 color label text //================================================================================================= SET_WIDGET_INFO2 WIDGET_HORSE_RESULTS 0 cash_stake 0 WAGER_GREEN YOURSTK DUMMY // Stake: // Work out player winnings. k = 0 WHILE k < 5 IF horse_finish_position[k] = 1 AND nSelectedHorse = k race_winnings = cash_stake * horse_odds[k] ENDIF ++ k ENDWHILE // Args are: cell int0 int1 color label text //================================================================================================= SET_WIDGET_INFO2 WIDGET_HORSE_RESULTS 6 race_winnings 0 WAGER_GREEN YOUWIN DUMMY // Won: IF play_win_lose_sound = 0 IF race_winnings > 0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_OTB_WIN else REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_OTB_LOSE endif play_win_lose_sound = 1 ENDIF IF achievement_unlocked = 0 AND race_winnings > 0 WRITE_LOG "UNLOCK_ACHIEVEMENT WHAT_ARE_THE_ODDS" achievement_unlocked = 1 ENDIF IF IS_WIDGET_RELEASED WIDGET_ITB_EXIT IF pad1_cross_pressed = 0 pad1_cross_pressed = 1 increment_int_stat MONEY_SPENT_GAMBLING cash_stake IF race_winnings > 0 REGISTER_INT_STAT BIGGEST_GAMBLING_WIN race_winnings increment_int_stat MONEY_WON_GAMBLING race_winnings race_winnings += cash_stake ADD_SCORE player1 race_winnings else REGISTER_INT_STAT BIGGEST_GAMBLING_LOSS cash_stake ENDIF do_fade 0 fade_out wait 0 RETURN ENDIF ELSE pad1_cross_pressed = 0 ENDIF // Look for quitting out during the race. ELSE IF IS_WIDGET_RELEASED WIDGET_ITB_EXIT GOTO mission_cleanup_otb ENDIF ENDIF GOTO race_otb_loop // mission cleanup mission_cleanup_otb: REMOVE_TEXTURE_DICTIONARY DO_FADE 500 FADE_IN flag_player_on_mission = 0 SET_WIDGET_INFO2 WIDGET_HORSE_RESULTS 0 0 0 0 DUMMY DUMMY // Empty cell. SET_WIDGET_INFO2 WIDGET_HORSE_RESULTS 1 0 0 0 DUMMY DUMMY // Empty cell. SET_WIDGET_INFO2 WIDGET_HORSE_RESULTS 2 0 0 0 DUMMY DUMMY // Empty cell. SET_WIDGET_INFO2 WIDGET_HORSE_RESULTS 3 0 0 0 DUMMY DUMMY // Empty cell. SET_WIDGET_INFO2 WIDGET_HORSE_RESULTS 4 0 0 0 DUMMY DUMMY // Empty cell. SET_WIDGET_INFO2 WIDGET_HORSE_RESULTS 5 0 0 0 DUMMY DUMMY // Empty cell. SET_WIDGET_INFO2 WIDGET_HORSE_RESULTS 6 0 0 0 DUMMY DUMMY // Empty cell. MISSION_HAS_FINISHED RETURN draw_paralax_layer: LVAR_FLOAT y_scale LVAR_FLOAT y_offset y_offset += 224.0 layer_x = origin - 256.0 DRAW_SPRITE sprite layer_x y_offset 256.0 y_scale 150 150 150 255 layer_x = origin DRAW_SPRITE sprite layer_x y_offset 256.0 y_scale 150 150 150 255 layer_x = origin + 256.0 DRAW_SPRITE sprite layer_x y_offset 256.0 y_scale 150 150 150 255 layer_x = origin + 512.0 DRAW_SPRITE sprite layer_x y_offset 256.0 y_scale 150 150 150 255 IF stop_everything_moving = 0 origin -=@ layer_scroll_speed ENDIF IF origin < 0.0 origin += 256.0 ENDIF RETURN setup_text_otb: SET_TEXT_FONT FONT_STANDARD SET_TEXT_COLOUR 180 180 180 255 SET_TEXT_SCALE 0.6146 2.4961 SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_JUSTIFY OFF SET_TEXT_CENTRE OFF SET_TEXT_WRAPX 640.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_BACKGROUND OFF SET_TEXT_DROPSHADOW 2 0 0 0 180 RETURN FindSelectedButton: k = 0 WHILE k < 14 IF button_state[k] = SELECTED nSelectedButton = k ENDIF k++ ENDWHILE RETURN UpPressed: GOSUB ClearButtonStates // Horse names. IF nSelectedButton = 0 button_state[0] = SELECTED ENDIF IF nSelectedButton = 1 button_state[0] = SELECTED ENDIF IF nSelectedButton = 2 button_state[1] = SELECTED ENDIF IF nSelectedButton = 3 button_state[2] = SELECTED ENDIF IF nSelectedButton = 4 button_state[3] = SELECTED ENDIF // Wagers IF nSelectedButton = 5 button_state[5] = SELECTED ENDIF IF nSelectedButton = 6 button_state[6] = SELECTED ENDIF IF nSelectedButton = 7 button_state[5] = SELECTED ENDIF IF nSelectedButton = 8 button_state[6] = SELECTED ENDIF IF nSelectedButton = 9 button_state[7] = SELECTED ENDIF IF nSelectedButton = 10 button_state[8] = SELECTED ENDIF IF nSelectedButton = 11 button_state[9] = SELECTED ENDIF IF nSelectedButton = 12 button_state[10] = SELECTED ENDIF IF nSelectedButton = 13 button_state[11] = SELECTED ENDIF RETURN DownPressed: GOSUB ClearButtonStates // Horse names. IF nSelectedButton = 0 button_state[1] = SELECTED ENDIF IF nSelectedButton = 1 button_state[2] = SELECTED ENDIF IF nSelectedButton = 2 button_state[3] = SELECTED ENDIF IF nSelectedButton = 3 button_state[4] = SELECTED ENDIF IF nSelectedButton = 4 button_state[4] = SELECTED ENDIF // Wagers IF nSelectedButton = 5 button_state[7] = SELECTED ENDIF IF nSelectedButton = 6 button_state[8] = SELECTED ENDIF IF nSelectedButton = 7 button_state[9] = SELECTED ENDIF IF nSelectedButton = 8 button_state[10] = SELECTED ENDIF IF nSelectedButton = 9 button_state[11] = SELECTED ENDIF IF nSelectedButton = 10 button_state[12] = SELECTED ENDIF IF nSelectedButton = 11 button_state[13] = SELECTED ENDIF IF nSelectedButton = 12 button_state[13] = SELECTED ENDIF IF nSelectedButton = 13 button_state[13] = SELECTED ENDIF RETURN LeftPressed: GOSUB ClearButtonStates // Horse names. IF nSelectedButton = 0 button_state[0] = SELECTED ENDIF IF nSelectedButton = 1 button_state[1] = SELECTED ENDIF IF nSelectedButton = 2 button_state[2] = SELECTED ENDIF IF nSelectedButton = 3 button_state[3] = SELECTED ENDIF IF nSelectedButton = 4 button_state[4] = SELECTED ENDIF // Wagers IF nSelectedButton = 5 button_state[0] = SELECTED ENDIF IF nSelectedButton = 6 button_state[5] = SELECTED ENDIF IF nSelectedButton = 7 button_state[1] = SELECTED ENDIF IF nSelectedButton = 8 button_state[7] = SELECTED ENDIF IF nSelectedButton = 9 button_state[2] = SELECTED ENDIF IF nSelectedButton = 10 button_state[9] = SELECTED ENDIF IF nSelectedButton = 11 button_state[3] = SELECTED ENDIF IF nSelectedButton = 12 button_state[11] = SELECTED ENDIF IF nSelectedButton = 13 button_state[4] = SELECTED ENDIF RETURN RightPressed: GOSUB ClearButtonStates // Horse names. IF nSelectedButton = 0 button_state[5] = SELECTED ENDIF IF nSelectedButton = 1 button_state[5] = SELECTED ENDIF IF nSelectedButton = 2 button_state[9] = SELECTED ENDIF IF nSelectedButton = 3 button_state[11] = SELECTED ENDIF IF nSelectedButton = 4 button_state[13] = SELECTED ENDIF // Wagers IF nSelectedButton = 5 button_state[6] = SELECTED ENDIF IF nSelectedButton = 6 button_state[6] = SELECTED ENDIF IF nSelectedButton = 7 button_state[8] = SELECTED ENDIF IF nSelectedButton = 8 button_state[8] = SELECTED ENDIF IF nSelectedButton = 9 button_state[10] = SELECTED ENDIF IF nSelectedButton = 10 button_state[10] = SELECTED ENDIF IF nSelectedButton = 11 button_state[12] = SELECTED ENDIF IF nSelectedButton = 12 button_state[12] = SELECTED ENDIF IF nSelectedButton = 13 button_state[13] = SELECTED ENDIF RETURN ClearButtonStates: k = 0 WHILE k < 14 button_state[k] = UNSELECTED k++ ENDWHILE RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION MISSNAM : POOL2 // AUTHOR : Neil // DESICRIPTION : minigame (triggered by pool.sc the object script) // // ***************************************************************************************** // ***************************************************************************************** { // ************************************************************************************************************* // GENERAL INITIALISATION - Every level requires this // ************************************************************************************************************* SCRIPT_NAME POOL2 GOSUB mission_start_POOL2 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_POOL2 ENDIF GOSUB mission_cleanup_POOL2 MISSION_END mission_start_POOL2: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 CONST_FLOAT TEXT_CLAMP_WIDTH_5 115.0 CONST_FLOAT TEXT_CLAMP_WIDTH_1 130.0 CONST_FLOAT TEXT_CLAMP_WIDTH_2 115.0 CONST_FLOAT TEXT_CLAMP_WIDTH_3 115.0 CONST_FLOAT TEXT_CLAMP_WIDTH_1_TWO_LINES 180.0 pool_min_bet = 50 pool_max_bet = 1000 LVAR_FLOAT fJoyPadPowerDirection fJoyPadPowerDirection = 1.0 // general variables that are in every mission - DON'T DECLARE MISSION SPECIFIC VARIABLES HERE LVAR_INT m_stage LVAR_INT m_goals LVAR_INT flag3 LVAR_INT m_passed LVAR_INT m_failed // commonly used temporary variables LVAR_INT temp_int temp_int2 temp_int3 LVAR_FLOAT temp_float temp_float2 temp_float3 temp_float4 temp_float5 LVAR_INT temp_seq // used for debug LVAR_FLOAT cue_ball_speed LVAR_FLOAT cue_ball_rot_x cue_ball_rot_y cue_ball_rot_z // mission variables LVAR_FLOAT pool_ball_radius LVAR_FLOAT pool_ball_diameter LVAR_FLOAT pocket_x[6] pocket_y[6] LVAR_INT ball_potted[16] LVAR_INT p_ball[16] LVAR_FLOAT pool_table_min_x pool_table_max_x pool_table_min_y pool_table_max_y LVAR_FLOAT table_x table_y table_z table_h LVAR_INT cue1 cue2 LVAR_INT quit LVAR_INT ball_is_stationary[16] // flags LVAR_INT pl_circle_pressed LVAR_INT cross_is_pressed LVAR_INT triangle_is_pressed LVAR_INT square_is_pressed LVAR_INT output_text // WAGER WINDOW STUFF - can be removed once finalised LVAR_FLOAT pl_rect_x LVAR_FLOAT pl_rect_y LVAR_FLOAT pl_rect_w LVAR_FLOAT pl_rect_h LVAR_INT pl_gray LVAR_INT pl_alpha LVAR_FLOAT pl_wager_text_x[9] LVAR_FLOAT pl_wager_text_y[9] LVAR_INT pl_current_text LVAR_INT pl_current_wager LVAR_INT pl_players_cash LVAR_INT pl_wager_too_high LVAR_INT pl_wager_too_low LVAR_INT pl_players_total_cash LVAR_INT pl_bet_step LVAR_INT pl_refund LVAR_INT pl_initial_stake LVAR_INT table LVAR_INT opp LVAR_FLOAT x2 y2 z2 LVAR_INT camera_object LVAR_FLOAT vec_x vec_y vec_z vec2_x vec2_y vec2_z LVAR_FLOAT light_x light_y light_z LVAR_INT two_players LVAR_INT last_m_stage LVAR_INT current_pad LVAR_INT last_frame_time time_diff LVAR_INT triangle_timer LVAR_INT this_is_break LVAR_INT proj_hit_ball_objects[10] LVAR_INT proj_used_hit_balls LVAR_FLOAT last_drawn_aim_ball_x last_drawn_aim_ball_y LVAR_INT aim_help_flag LVAR_FLOAT mouse_x mouse_y LVAR_FLOAT mouse_move_x mouse_move_y CONST_INT POOL_COLOUR_NONE -1 CONST_INT POOL_COLOUR_SPOTS 0 CONST_INT POOL_COLOUR_STRIPES 1 CONST_INT POOL_COLOUR_BLACK 2 GET_GAME_TIMER last_frame_time m_stage = 0 m_goals = 0 m_passed = 0 m_failed = 0 two_players = 0 edit_x1 = -0.9570 edit_y1 = -0.4900 edit_x2 = 0.9570 edit_y2 = 0.4900 LVAR_FLOAT pool_stop_velocity LVAR_FLOAT pool_stop_rotation_velocity pool_stop_velocity = 0.05 pool_stop_rotation_velocity = 2.0 triangle_is_pressed = 1 // fix for bug 1014 mission_loop_POOL2: WAIT 0 ADD_WIDGET_FLAG WIDGET_LOOK 4 // WIDGET_FLAG_ENABLED_IN_CUTSCENE ADD_WIDGET_FLAG WIDGET_CAM_TOGGLE 4 // WIDGET_FLAG_ENABLED_IN_CUTSCENE ADD_WIDGET_FLAG WIDGET_PLAYER_INFO 4 // WIDGET_FLAG_ENABLED_IN_CUTSCENE LVAR_INT help_timer LVAR_INT shot_timer GET_GAME_TIMER temp_int time_diff = temp_int - last_frame_time last_frame_time = temp_int triangle_timer += time_diff help_timer += time_diff shot_timer += time_diff pool_switch_start: SWITCH m_stage CASE 0 GOSUB pl_stage_0 BREAK CASE 1 GOSUB pl_stage_1 BREAK CASE 2 GOSUB pl_stage_2 BREAK CASE 3 GOSUB pl_stage_3 BREAK CASE 4 GOSUB pl_stage_4 BREAK CASE 5 GOSUB pl_stage_5 BREAK CASE 6 GOSUB pl_stage_6 BREAK CASE 7 GOSUB pl_stage_7 BREAK CASE 8 GOSUB pl_stage_8 BREAK CASE 9 GOSUB pl_stage_9 BREAK CASE 10 GOSUB pl_stage_10 BREAK CASE 11 GOSUB pl_stage_11 BREAK CASE 12 GOSUB pl_stage_12 BREAK ENDSWITCH IF NOT last_m_stage = m_stage last_m_stage = m_stage GOTO pool_switch_start ENDIF GOSUB pl_global_functions // end of main loop IF quit = 0 IF m_failed = 0 IF m_passed = 0 GOTO mission_loop_POOL2 ELSE GOSUB mission_passed_POOL2 RETURN ENDIF ELSE GOSUB mission_failed_POOL2 RETURN ENDIF ELSE RETURN ENDIF // ************************************************************************************************************* // INITIALISATION - SPECIFIC TO THIS LEVEL // ************************************************************************************************************* pl_stage_0: // fake create IF m_goals = -1 CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 table CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 active_pool_table CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 opp CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 active_pool_opponent CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 camera_object CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 object_anim_char CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 object_anim_object CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 p_ball[0] CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 active_initial_cue CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 proj_cue_ball_objects[0] CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 player1_char CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 player2_char ENDIF IF m_goals = 0 IF DOES_OBJECT_EXIST active_pool_table table = active_pool_table opp = active_pool_opponent IF NOT IS_CHAR_DEAD opp SET_CHAR_ONLY_DAMAGED_BY_PLAYER opp TRUE SET_CHAR_PROOFS opp TRUE TRUE TRUE TRUE TRUE SET_CHAR_COLLISION opp FALSE LVAR_INT dm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY dm SET_CHAR_DECISION_MAKER opp dm ENDIF GET_OBJECT_COORDINATES table x y z CLEAR_AREA x y z 100.0 TRUE SET_PED_DENSITY_MULTIPLIER 0.0 SET_NEAR_CLIP 0.01 MAKE_PLAYER_GANG_DISAPPEAR output_text = 0 quit = 0 GOSUB init_pool_screen_coords m_goals++ ENDIF ENDIF IF m_goals = 1 IF DOES_OBJECT_EXIST table GET_OBJECT_COORDINATES table table_x table_y table_z GET_OBJECT_HEADING table table_h table_z += -0.1 // load stuff LOAD_MISSION_TEXT POOL LOAD_MISSION_AUDIO 4 SOUND_BANK_POOL REQUEST_MODEL K_POOLQ REQUEST_ANIMATION POOL WHILE NOT HAS_ANIMATION_LOADED POOL OR NOT HAS_MODEL_LOADED K_POOLQ OR NOT HAS_MISSION_AUDIO_LOADED 4 WAIT 0 ENDWHILE LOAD_TEXTURE_DICTIONARY ld_pool LOAD_SPRITE 1 ball LOAD_SPRITE 2 nib // set flags pl_circle_pressed = 0 m_goals++ ENDIF ENDIF IF m_goals = 2 m_stage++ m_goals = 0 ENDIF RETURN pool_edit_table_cushions: LINE pool_table_min_x pool_table_min_y z pool_table_max_x pool_table_min_y z LINE pool_table_min_x pool_table_min_y z pool_table_min_x pool_table_max_y z LINE pool_table_max_x pool_table_max_y z pool_table_max_x pool_table_min_y z LINE pool_table_max_x pool_table_max_y z pool_table_min_x pool_table_max_y z LVAR_FLOAT edit_x1 edit_x2 edit_y1 edit_y2 IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_LEFT edit_x1 += -0.0001 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_RIGHT edit_x1 += 0.0001 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_UP edit_y1 += -0.0001 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_DOWN edit_y1 += 0.0001 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_4 edit_x2 += -0.0001 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_6 edit_x2 += 0.0001 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_2 edit_y2 += -0.0001 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_8 edit_y2 += 0.0001 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ENTER SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "edit_x1 = " SAVE_FLOAT_TO_DEBUG_FILE edit_x1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "edit_y1 = " SAVE_FLOAT_TO_DEBUG_FILE edit_y1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "edit_x2 = " SAVE_FLOAT_TO_DEBUG_FILE edit_x2 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "edit_y2 = " SAVE_FLOAT_TO_DEBUG_FILE edit_y2 ENDIF IF DOES_OBJECT_EXIST table GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table edit_x1 edit_y1 0.70 pool_table_min_x pool_table_min_y z GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table edit_x2 edit_y2 0.70 pool_table_max_x pool_table_max_y z ENDIF RETURN // ************************************************************************************************************* // WAGER SCREEN // ************************************************************************************************************* pl_stage_1: // fake IF m_goals = -1 CREATE_OBJECT K_POOLQ 0.0 0.0 0.0 cue2 ENDIF // initialisation wager window IF m_goals = 0 DISPLAY_HUD TRUE DISPLAY_RADAR FALSE // check the player has enough cash STORE_SCORE player1 pl_players_cash IF pl_players_cash < pool_min_bet quit = 1 CLEAR_PRINTS SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT GOTO pl_stage_1_end ENDIF CLEAR_AREA table_x table_y table_z 15.0 TRUE SET_OBJECT_COORDINATES table table_x table_y table_z // set table max mins // 0.8557 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table -0.9098 -0.4589 0.70 pool_table_min_x pool_table_min_y z GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table 0.9242 0.4809 0.70 pool_table_max_x pool_table_max_y z IF pool_table_min_x > pool_table_max_x x = pool_table_min_x pool_table_min_x = pool_table_max_x pool_table_max_x = x ENDIF IF pool_table_min_y > pool_table_max_y y = pool_table_min_y pool_table_min_y = pool_table_max_y pool_table_max_y = y ENDIF SET_POOL_TABLE_COORDS pool_table_min_x pool_table_min_y z pool_table_max_x pool_table_max_y z // get light position GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table 0.0 0.0 1.5 light_x light_y light_z // get pocket positions work out middle pockets GET_DISTANCE_BETWEEN_COORDS_2D pool_table_min_x pool_table_min_y pool_table_max_x pool_table_min_y temp_float GET_DISTANCE_BETWEEN_COORDS_2D pool_table_min_x pool_table_min_y pool_table_min_x pool_table_max_y temp_float2 IF temp_float > temp_float2 temp_float = pool_table_min_x + pool_table_max_x temp_float /= 2.0 pocket_x[1] = temp_float pocket_y[1] = pool_table_min_y pocket_x[4] = temp_float pocket_y[4] = pool_table_max_y ELSE temp_float = pool_table_min_y + pool_table_max_y temp_float /= 2.0 pocket_x[1] = pool_table_min_x pocket_y[1] = temp_float pocket_x[4] = pool_table_max_x pocket_y[4] = temp_float ENDIF // remaining pockets pocket_x[0] = pool_table_min_x pocket_y[0] = pool_table_min_y pocket_x[2] = pool_table_min_x pocket_y[2] = pool_table_max_y pocket_x[3] = pool_table_max_x pocket_y[3] = pool_table_max_y pocket_x[5] = pool_table_max_x pocket_y[5] = pool_table_min_y // set ball radius pool_ball_radius = 0.037 pool_ball_diameter = pool_ball_radius * 2.0 // delete all balls temp_int = 0 WHILE temp_int < 16 IF DOES_OBJECT_EXIST p_ball[temp_int] DELETE_OBJECT p_ball[temp_int] ENDIF temp_int++ ENDWHILE // cue ball GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table -0.2734375 -0.0546875 0.9296875 x y z //0.9296875 CREATE_OBJECT_NO_OFFSET K_POOLBALLCUE x y z p_ball[0] GET_OBJECT_HEADING table heading heading += 270.0 SET_OBJECT_HEADING p_ball[0] heading // other balls GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table 0.3408 -0.0284 0.9297 ball_tri_x ball_tri_y ball_tri_z //0.9297 GET_OBJECT_HEADING table ball_tri_h ball_tri_h += 90.0 CREATE_OBJECT_NO_OFFSET K_POOLBALLSPT01 ball_tri_x ball_tri_y ball_tri_z p_ball[1] CREATE_OBJECT_NO_OFFSET K_POOLBALLSPT02 0.0 0.0 0.0 p_ball[2] CREATE_OBJECT_NO_OFFSET K_POOLBALLSPT03 0.0 0.0 0.0 p_ball[3] CREATE_OBJECT_NO_OFFSET K_POOLBALLSPT04 0.0 0.0 0.0 p_ball[4] CREATE_OBJECT_NO_OFFSET K_POOLBALLSPT05 0.0 0.0 0.0 p_ball[5] CREATE_OBJECT_NO_OFFSET K_POOLBALLSPT06 0.0 0.0 0.0 p_ball[6] CREATE_OBJECT_NO_OFFSET K_POOLBALLSPT07 0.0 0.0 0.0 p_ball[7] CREATE_OBJECT_NO_OFFSET K_POOLBALL8 0.0 0.0 0.0 p_ball[8] CREATE_OBJECT_NO_OFFSET K_POOLBALLSTP01 0.0 0.0 0.0 p_ball[9] CREATE_OBJECT_NO_OFFSET K_POOLBALLSTP02 0.0 0.0 0.0 p_ball[10] CREATE_OBJECT_NO_OFFSET K_POOLBALLSTP03 0.0 0.0 0.0 p_ball[11] CREATE_OBJECT_NO_OFFSET K_POOLBALLSTP04 0.0 0.0 0.0 p_ball[12] CREATE_OBJECT_NO_OFFSET K_POOLBALLSTP05 0.0 0.0 0.0 p_ball[13] CREATE_OBJECT_NO_OFFSET K_POOLBALLSTP06 0.0 0.0 0.0 p_ball[14] CREATE_OBJECT_NO_OFFSET K_POOLBALLSTP07 0.0 0.0 0.0 p_ball[15] GOSUB update_ball_triangle_position DISPLAY_RADAR FALSE SET_PLAYER_CONTROL player1 OFF CLEAR_HELP GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table -0.5261 -1.9684 1.6370 x y z SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table -0.0746 -1.0853 1.5092 x y z POINT_CAMERA_AT_POINT x y z JUMP_CUT IF NOT IS_CHAR_DEAD opp CLEAR_CHAR_TASKS_IMMEDIATELY opp DROP_OBJECT opp FALSE IF DOES_OBJECT_EXIST active_initial_cue DELETE_OBJECT active_initial_cue ENDIF GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table 0.0219 -1.1236 0.0363 x y z SET_CHAR_COORDINATES opp x y z temp_float = table_h + 130.0 SET_CHAR_HEADING opp temp_float OPEN_SEQUENCE_TASK temp_seq GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table -0.5261 -1.9684 1.6370 x y z TASK_LOOK_AT_COORD -1 x y z 999999 IF quit = 0 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 POOL_Idle_Stance POOL 1000.0 TRUE FALSE FALSE TRUE -1 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK opp temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT DOES_OBJECT_EXIST cue2 CREATE_OBJECT K_POOLQ 0.0 0.0 0.0 cue2 SET_OBJECT_COLLISION cue2 FALSE ENDIF IF IS_PLAYER_PLAYING player1 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table -1.9295 -2.2083 0.0363 x y z SET_CHAR_COORDINATES scplayer x y z player1_home_x = x player1_home_y = y player1_home_z = z temp_float = table_h + 390.0 SET_CHAR_HEADING scplayer temp_float ENDIF object_anim_char = opp object_anim_object = cue2 GOSUB pool_update_object_anims SET_SCRIPT_COOP_GAME FALSE pl_stage_1_end: START_NEW_SCRIPT cleanup_audio_lines DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE m_goals++ ENDIF // choose your wager IF m_goals = 1 IF NOT IS_CHAR_DEAD opp IF IS_CHAR_MODEL opp BMYPOL1 GENERATE_RANDOM_INT_IN_RANGE 0 3 temp_int SWITCH temp_int CASE 0 $audio_string = &POOL_B1 audio_sound_file = SOUND_POOL_B1 // Let’s make a little wager. BREAK CASE 1 $audio_string = &POOL_B2 audio_sound_file = SOUND_POOL_B2 // Game of pool ain’t the same without a little money involved. BREAK CASE 2 $audio_string = &POOL_B3 audio_sound_file = SOUND_POOL_B3 // Show me your the color of your money BREAK ENDSWITCH START_NEW_SCRIPT audio_line opp 0 1 1 0 ELSE GENERATE_RANDOM_INT_IN_RANGE 0 3 temp_int SWITCH temp_int CASE 0 $audio_string = &POOL_B4 audio_sound_file = SOUND_POOL_B4 // I’ll only play if you want to make it interesting. BREAK CASE 1 $audio_string = &POOL_B5 audio_sound_file = SOUND_POOL_B5 // You want to place a small wager? BREAK CASE 2 $audio_string = &POOL_B6 audio_sound_file = SOUND_POOL_B6 // C’mon, put your money where your mouth is. BREAK ENDSWITCH START_NEW_SCRIPT audio_line opp 0 1 1 0 ENDIF ENDIF USE_TEXT_COMMANDS TRUE TIMERA = 0 m_goals++ ENDIF // set initial wager drawing variables IF m_goals = 2 IF NOT IS_MESSAGE_BEING_DISPLAYED OR IS_BUTTON_PRESSED PAD1 CROSS CLEAR_PRINTS IF IS_PLAYER_PLAYING player1 STORE_SCORE player1 pl_players_total_cash ENDIF PRINT_HELP_FOREVER PL_H1 // Press ~m~~widget_place_bet~ to increase wager. Press ~m~~widget_remove_bet~ to decrease wager. Press ~m~~widget_minigame_cancel~ to quit. pl_refund = pool_min_bet pl_initial_stake = pool_min_bet // WDFIXME would be nice to remember the bet next game. pl_current_wager = pool_min_bet temp_float =# pl_initial_stake temp_int = pool_min_bet * -1 ADD_SCORE player1 temp_int SWITCH_WIDESCREEN OFF START_NEW_SCRIPT cleanup_audio_lines m_goals++ ENDIF ENDIF // draw wager window IF m_goals = 3 GOSUB pool_draw_window_1 STORE_SCORE player1 pl_players_cash IS_WIDGET_PRESSED WIDGET_REMOVE_BET // Keep the widgets enabled. IS_WIDGET_PRESSED WIDGET_PLACE_BET // ' X ' to increase bet IF IS_WIDGET_PRESSED WIDGET_PLACE_BET IF NOT cross_is_pressed = 1 AND NOT cross_is_pressed = -1 // sort out betting step IF pl_current_wager >= 10000 pl_bet_step = 1000 ELSE IF pl_current_wager >= 1000 pl_bet_step = 100 ELSE IF pl_current_wager >= 100 pl_bet_step = 10 ELSE IF pl_current_wager = 0 pl_bet_step = 2 ELSE pl_bet_step = 1 ENDIF ENDIF ENDIF ENDIF // check betting step doesn't go over players cash IF pl_bet_step > pl_players_cash pl_bet_step = pl_players_cash ENDIF // check betting step won't push us over the maximum bet temp_int = pl_current_wager + pl_bet_step IF temp_int > pool_max_bet pl_bet_step = pool_max_bet - pl_current_wager ENDIF // take cash off player IF pl_bet_step < 0 pl_bet_step *= -1 ENDIF pl_current_wager += pl_bet_step pl_refund += pl_bet_step pl_initial_stake += pl_bet_step pl_bet_step *= -1 ADD_SCORE player1 pl_bet_step cross_is_pressed++ IF cross_is_pressed > 1 cross_is_pressed = 2 ELSE TIMERA = 0 ENDIF ELSE IF cross_is_pressed = 1 IF TIMERA > 500 cross_is_pressed = 2 ENDIF ENDIF ENDIF ELSE // reset cross button m_stage IF NOT cross_is_pressed = 0 cross_is_pressed = 0 ENDIF // remove wager IF IS_WIDGET_PRESSED WIDGET_REMOVE_BET IF NOT square_is_pressed = 1 // sort out betting step IF pl_current_wager > 10000 pl_bet_step = -1000 ELSE IF pl_current_wager > 1000 pl_bet_step = -100 ELSE IF pl_current_wager > 100 pl_bet_step = -10 ELSE pl_bet_step = -1 ENDIF ENDIF ENDIF // check bet step wont go below minimum bet temp_int = pl_current_wager + pl_bet_step IF temp_int < pool_min_bet pl_bet_step = pl_current_wager - pool_min_bet pl_bet_step *= -1 ENDIF // update cash pl_current_wager += pl_bet_step pl_refund += pl_bet_step pl_initial_stake += pl_bet_step pl_bet_step *= -1 ADD_SCORE player1 pl_bet_step square_is_pressed++ IF square_is_pressed > 1 square_is_pressed = 2 ELSE TIMERA = 0 ENDIF ELSE IF TIMERA > 500 square_is_pressed = 2 ENDIF ENDIF ELSE IF NOT square_is_pressed = 0 square_is_pressed = 0 ENDIF ENDIF ENDIF // ' O ' to ok the bet IF IS_WIDGET_RELEASED WIDGET_GAMBLING_CONTINUE IF NOT IS_CHAR_DEAD opp SET_CHAR_MONEY opp pl_initial_stake ENDIF pl_refund = 0 two_players = 0 m_goals = 99 REMOVE_WIDGET_FLAG WIDGET_PLAYER_INFO 4 // WIDGET_FLAG_ENABLED_IN_CUTSCENE ELSE // check if 2 player mode was activated IF IS_BUTTON_PRESSED PAD2 START DISABLE_2ND_PAD_FOR_DEBUG TRUE SET_SCRIPT_COOP_GAME TRUE disable_debug = 1 ADD_SCORE player1 pl_refund pl_refund = 0 two_players = 1 m_goals = 99 ENDIF ENDIF IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL // Quit out of betting screen and go back to the game. IF triangle_is_pressed = 0 // set chars to their home position IF NOT IS_CHAR_DEAD player1_char player1_home_z += 1.1 CLEAR_CHAR_TASKS_IMMEDIATELY player1_char GET_GROUND_Z_FOR_3D_COORD player1_home_x player1_home_y player1_home_z player1_home_z SET_CHAR_COORDINATES player1_char player1_home_x player1_home_y player1_home_z SET_CHAR_HEADING player1_char player1_home_h ENDIF IF NOT IS_CHAR_DEAD player2_char player2_home_z += 1.1 CLEAR_CHAR_TASKS_IMMEDIATELY player2_char GET_GROUND_Z_FOR_3D_COORD player2_home_x player2_home_y player2_home_z player2_home_z SET_CHAR_COORDINATES player2_char player2_home_x player2_home_y player2_home_z SET_CHAR_HEADING player2_char player2_home_h ENDIF CLEAR_HELP quit = 1 triangle_is_pressed = 1 ENDIF ELSE IF triangle_is_pressed = 1 triangle_is_pressed = 0 ENDIF ENDIF ENDIF // exit IF m_goals = 99 IF NOT IS_CHAR_DEAD opp CLEAR_LOOK_AT opp ENDIF DISPLAY_HUD FALSE CLEAR_HELP m_goals = 0 m_stage++ ENDIF RETURN // ************************************************************************************************************* // MINIGAME - start // ************************************************************************************************************* LVAR_INT player1_char player2_char current_char current_cue LVAR_INT player1_colour player2_colour LVAR_INT player1_is_human player2_is_human LVAR_FLOAT player1_home_x player1_home_y player1_home_z player1_home_h LVAR_FLOAT player2_home_x player2_home_y player2_home_z player2_home_h LVAR_INT turn_player current_char_is_human turn_colour turn_is_scratch pl_stage_2: // fake creates IF m_goals = -1 CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 player1_char CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 player2_char CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 current_char CREATE_OBJECT K_POOLQ 0.0 0.0 0.0 cue1 CREATE_OBJECT K_POOLQ 0.0 0.0 0.0 cue2 CREATE_OBJECT K_POOLQ 0.0 0.0 0.0 current_cue ENDIF // initialise game start IF m_goals = 0 IF two_players = 0 player1_colour = POOL_COLOUR_NONE player2_colour = POOL_COLOUR_NONE player1_is_human = 1 player2_is_human = 0 ELSE player1_colour = POOL_COLOUR_NONE player2_colour = POOL_COLOUR_NONE player1_is_human = 1 player2_is_human = 1 ENDIF GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table 0.0 1.8 0.0 player1_home_x player1_home_y player1_home_z player1_home_h = table_h + 180.0 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table 0.0 -1.8 0.0 player2_home_x player2_home_y player2_home_z player2_home_h = table_h player1_char = scplayer player2_char = opp // create cues IF NOT DOES_OBJECT_EXIST cue1 CREATE_OBJECT K_POOLQ 0.0 0.0 0.0 cue1 SET_OBJECT_COLLISION cue1 FALSE ENDIF IF NOT DOES_OBJECT_EXIST cue2 CREATE_OBJECT K_POOLQ 0.0 0.0 0.0 cue2 SET_OBJECT_COLLISION cue2 FALSE ENDIF // set chars to their home position IF NOT IS_CHAR_DEAD player1_char SET_CHAR_COORDINATES player1_char player1_home_x player1_home_y player1_home_z SET_CHAR_HEADING player1_char player1_home_h HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE player1_char TRUE ENDIF IF NOT IS_CHAR_DEAD player2_char SET_CHAR_COORDINATES player2_char player2_home_x player2_home_y player2_home_z SET_CHAR_HEADING player2_char player2_home_h HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE player2_char TRUE ENDIF // set current char turn_player = 1 current_char = player1_char current_cue = cue1 current_char_is_human = player1_is_human turn_colour = player1_colour turn_is_scratch = 1 current_pad = PAD1 first_moving_ball = -1 cue_ball_hit_cushion_first = 0 camera_mode = 1 IF camera_mode = 0 BUTT_ANGLE = 10.0 RAISE_CUE = 0.02 CUE_X_CORRECTION = 0.0 ELSE BUTT_ANGLE = 22.5000 RAISE_CUE = 0.02 CUE_X_CORRECTION = 0.0 ENDIF this_is_break = 1 // go to next stage m_goals = 0 m_stage++ ENDIF RETURN // *************************************************************************************************** // CHALKING CUE // *************************************************************************************************** pl_stage_3: LVAR_INT skip_chalk_cue IF skip_chalk_cue = 0 IF m_goals = 0 // set chars to their home position IF NOT IS_CHAR_DEAD player1_char player1_home_z += 1.0 GET_GROUND_Z_FOR_3D_COORD player1_home_x player1_home_y player1_home_z player1_home_z SET_CHAR_COORDINATES player1_char player1_home_x player1_home_y player1_home_z SET_CHAR_HEADING player1_char player1_home_h ENDIF IF NOT IS_CHAR_DEAD player2_char player2_home_z += 1.1 GET_GROUND_Z_FOR_3D_COORD player2_home_x player2_home_y player2_home_z player2_home_z SET_CHAR_COORDINATES player2_char player2_home_x player2_home_y player2_home_z SET_CHAR_HEADING player2_char player2_home_h ENDIF IF NOT IS_CHAR_DEAD current_char DROP_OBJECT current_char FALSE GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS current_char 1.0 3.0 1.0 x y z SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 POINT_CAMERA_AT_CHAR current_char FIXED JUMP_CUT OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 POOL_ChalkCue POOL 1000.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 POOL_Idle_Stance POOL 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq IF quit = 0 PERFORM_SEQUENCE_TASK current_char temp_seq ENDIF CLEAR_SEQUENCE_TASK temp_seq TIMERA = 0 m_goals++ ENDIF ENDIF IF m_goals = 1 IF NOT IS_CHAR_DEAD current_char GET_SCRIPT_TASK_STATUS current_char PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OR TIMERA > 3000 m_goals = 99 ENDIF ENDIF ENDIF IF TIMERA > 500 IF IS_WIDGET_RELEASED WIDGET_GAMBLING_CONTINUE IF NOT IS_CHAR_DEAD current_char cross_is_pressed = 1 m_goals = 99 ENDIF ENDIF ENDIF ELSE IF NOT IS_CHAR_DEAD current_char m_goals = 99 ENDIF ENDIF IF m_goals = 99 CLEAR_MISSION_AUDIO 4 CLEAR_HELP TIMERA = 0 m_stage++ m_goals = 0 ENDIF IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL // Bail on the chalking; quits the game. IF triangle_is_pressed = 0 AND triangle_timer > 1000 // set chars to their home position IF NOT IS_CHAR_DEAD player1_char player1_home_z += 1.1 GET_GROUND_Z_FOR_3D_COORD player1_home_x player1_home_y player1_home_z player1_home_z SET_CHAR_COORDINATES player1_char player1_home_x player1_home_y player1_home_z SET_CHAR_HEADING player1_char player1_home_h ENDIF IF NOT IS_CHAR_DEAD player2_char player2_home_z += 1.1 GET_GROUND_Z_FOR_3D_COORD player2_home_x player2_home_y player2_home_z player2_home_z SET_CHAR_COORDINATES player2_char player2_home_x player2_home_y player2_home_z SET_CHAR_HEADING player2_char player2_home_h ENDIF CLEAR_HELP quit = 1 triangle_is_pressed = 1 triangle_timer = 0 ENDIF ELSE IF triangle_is_pressed = 1 triangle_is_pressed = 0 ENDIF ENDIF RETURN // *************************************************************************************************** // SCRATCH // *************************************************************************************************** pl_stage_4: IF NOT turn_is_scratch = 0 AND current_char_is_human = 1 GOSUB pool_draw_window_4 ENDIF // 2. IF scratch - place white IF NOT turn_is_scratch = 0 IF ball_potted[0] = 1 IF NOT DOES_OBJECT_EXIST p_ball[0] GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table -0.35 0.0 0.9296875 x y z safe_x = x safe_y = y GOSUB check_position_is_safe x = safe_x y = safe_y CREATE_OBJECT_NO_OFFSET K_POOLBALLCUE x y z p_ball[0] GET_OBJECT_HEADING table heading heading += 270.0 SET_OBJECT_HEADING p_ball[0] heading ENDIF ball_potted[0] = 0 ENDIF IF IS_BUTTON_PRESSED current_pad SQUARE IF square_is_pressed = 0 IF aim_help_flag = 2 aim_help_flag = 0 ELSE help_timer = 3001 ENDIF square_is_pressed = 1 ENDIF ELSE IF square_is_pressed = 1 square_is_pressed = 0 ENDIF ENDIF ENDIF // if scratch type 1 IF turn_is_scratch = 1 IF m_goals = 0 // if human IF current_char_is_human = 1 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table -0.35 0.0 0.0 x y z GET_OBJECT_HEADING table heading heading += 270.0 SET_OBJECT_COORDINATES p_ball[0] x y ball_tri_z SET_OBJECT_HEADING p_ball[0] heading // show help TIMERA = 0 m_goals = 99 GOTO pl_stage_4_end ELSE // if cpu GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table -0.35 0.0 0.0 x y z GET_OBJECT_HEADING table heading heading += 270.0 SET_OBJECT_COORDINATES p_ball[0] x y ball_tri_z SET_OBJECT_HEADING p_ball[0] heading m_goals = 99 GOTO pl_stage_4_end ENDIF ENDIF ENDIF // if scratch type 2 IF turn_is_scratch = 2 IF m_goals = 0 // if human IF current_char_is_human = 1 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table -0.35 0.0 0.0 x y z GET_OBJECT_HEADING table heading heading += 270.0 safe_x = x safe_y = y GOSUB check_position_is_safe x = safe_x y = safe_y SET_OBJECT_COORDINATES p_ball[0] x y ball_tri_z SET_OBJECT_HEADING p_ball[0] heading // show help TIMERA = 0 m_goals++ aim_help_flag = 0 help_timer = 0 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table 0.00 -0.001 2.5 x y z SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table 0.00 0.001 0.0 x y z POINT_CAMERA_AT_POINT x y z JUMP_CUT ELSE // if cpu GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table -0.35 0.0 0.0 x y z GET_OBJECT_HEADING table heading heading += 270.0 safe_x = x safe_y = y GOSUB check_position_is_safe x = safe_x y = safe_y SET_OBJECT_COORDINATES p_ball[0] x y ball_tri_z SET_OBJECT_HEADING p_ball[0] heading m_goals = 99 GOTO pl_stage_4_end ENDIF ENDIF // Move the cue ball placement for ball in hand. IF m_goals = 1 // print help GET_OBJECT_COORDINATES p_ball[0] x y z // Tell the "ball in hand" widget where to be in 3D (it will project it to 2D). SET_WIDGET_VALUE3 WIDGET_POOL_BALL_IN_HAND x y z IF IS_BUTTON_PRESSED current_pad LEFTSTICKX OR IS_BUTTON_PRESSED current_pad LEFTSTICKY OR IS_WIDGET_PRESSED WIDGET_POOL_BALL_IN_HAND LVAR_FLOAT rstk_y_f rstk_x_f GET_POSITION_OF_ANALOGUE_STICKS current_pad LStickX LStickY RStickX RStickY rstk_x_f =# LStickX rstk_y_f =# LStickY rstk_x_f /= 128.0 rstk_y_f /= -128.0 // If we get touch input, place the ball in the direction they are dragging. //IF IS_WIDGET_PRESSED WIDGET_POOL_BALL_IN_HAND GET_WIDGET_VALUE2 WIDGET_POOL_BALL_IN_HAND rstk_x_f, rstk_y_f //ENDIF rstk_x_f *= 0.01 rstk_y_f *= 0.01 GOSUB pl_update_camera_vector cam_nvec_x *= rstk_y_f cam_nvec_y *= rstk_y_f x += cam_nvec_x y += cam_nvec_y cam_rvec_x *= rstk_x_f cam_rvec_y *= rstk_x_f x += cam_rvec_x y += cam_rvec_y // check new position is safe safe_x = x safe_y = y GOSUB check_position_is_safe x = safe_x y = safe_y // set ball to new position SET_OBJECT_COORDINATES p_ball[0] x y ball_tri_z ENDIF IF IS_WIDGET_RELEASED WIDGET_GAMBLING_CONTINUE IF cross_is_pressed = 0 m_goals = 99 cross_is_pressed = 1 GOTO pl_stage_4_end ENDIF ELSE IF cross_is_pressed = 1 cross_is_pressed = 0 ENDIF ENDIF ENDIF ENDIF IF turn_is_scratch = 0 m_goals = 99 GOTO pl_stage_4_end ENDIF IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL IF triangle_is_pressed = 0 AND triangle_timer > 1000 // set chars to their home position IF NOT IS_CHAR_DEAD player1_char player1_home_z += 1.1 GET_GROUND_Z_FOR_3D_COORD player1_home_x player1_home_y player1_home_z player1_home_z SET_CHAR_COORDINATES player1_char player1_home_x player1_home_y player1_home_z SET_CHAR_HEADING player1_char player1_home_h ENDIF IF NOT IS_CHAR_DEAD player2_char player2_home_z += 1.1 GET_GROUND_Z_FOR_3D_COORD player2_home_x player2_home_y player2_home_z player2_home_z SET_CHAR_COORDINATES player2_char player2_home_x player2_home_y player2_home_z SET_CHAR_HEADING player2_char player2_home_h ENDIF CLEAR_HELP quit = 1 triangle_is_pressed = 1 triangle_timer = 0 ENDIF ELSE IF triangle_is_pressed = 1 triangle_is_pressed = 0 ENDIF ENDIF pl_stage_4_end: IF m_goals = 99 m_stage++ m_goals = 0 CLEAR_HELP ENDIF RETURN // ****************************************************************************************************** // AIMING // ****************************************************************************************************** pl_stage_5: LVAR_INT camera_mode LVAR_INT select_is_pressed // 3. Aiming - show overhead / or behind ball cam - using select LVAR_INT aim_cue IF current_char_is_human = 1 GOSUB pool_draw_window_3 // fake create IF m_goals = -1 CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 aim_cue ENDIF IF m_goals = 0 // set chars to their home position IF NOT IS_CHAR_DEAD player1_char player1_home_z += 1.1 GET_GROUND_Z_FOR_3D_COORD player1_home_x player1_home_y player1_home_z player1_home_z SET_CHAR_COORDINATES player1_char player1_home_x player1_home_y player1_home_z SET_CHAR_HEADING player1_char player1_home_h ENDIF IF NOT IS_CHAR_DEAD player2_char player2_home_z += 1.1 GET_GROUND_Z_FOR_3D_COORD player2_home_x player2_home_y player2_home_z player2_home_z SET_CHAR_COORDINATES player2_char player2_home_x player2_home_y player2_home_z SET_CHAR_HEADING player2_char player2_home_h ENDIF // hide current aiming dude IF NOT IS_CHAR_DEAD current_char GET_CHAR_COORDINATES current_char x y z z += -10.0 SET_CHAR_COORDINATES current_char x y z FREEZE_CHAR_POSITION current_char TRUE ENDIF GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table 0.00 -0.001 2.5 x y z GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table 0.00 0.001 0.0 x y z IF DOES_OBJECT_EXIST p_ball[0] GET_OBJECT_HEADING p_ball[0] heading SET_OBJECT_ROTATION p_ball[0] 0.0 0.0 heading ENDIF IF NOT DOES_OBJECT_EXIST aim_cue GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table 0.0 0.0 -10.0 x y z CREATE_OBJECT_NO_OFFSET K_POOLQ2 x y z aim_cue SET_OBJECT_DYNAMIC aim_cue FALSE SET_OBJECT_COLLISION aim_cue FALSE SET_OBJECT_DRAW_LAST aim_cue TRUE ELSE SET_OBJECT_DYNAMIC aim_cue FALSE SET_OBJECT_COLLISION aim_cue FALSE SET_OBJECT_DRAW_LAST aim_cue TRUE ENDIF help_timer = 0 aim_help_flag = 0 // find ball to aim at IF back_from_shooting = 0 LVAR_INT ball_to_aim_at ball_to_aim_at = -1 temp_float = 99999.9 IF DOES_OBJECT_EXIST p_ball[0] GET_OBJECT_COORDINATES p_ball[0] x y z IF turn_colour = POOL_COLOUR_NONE // get nearest ball temp_int = 1 WHILE temp_int < 16 IF DOES_OBJECT_EXIST p_ball[temp_int] GET_OBJECT_COORDINATES p_ball[temp_int] x2 y2 z2 GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 temp_float2 IF temp_float2 < temp_float //WRITE_DEBUG_WITH_INT nearest_ball_neg_1 temp_int ball_to_aim_at = temp_int temp_float = temp_float2 ENDIF ENDIF temp_int++ ENDWHILE ELSE IF turn_colour = POOL_COLOUR_SPOTS // get nearest spot temp_int = 1 WHILE temp_int < 8 IF DOES_OBJECT_EXIST p_ball[temp_int] GET_OBJECT_COORDINATES p_ball[temp_int] x2 y2 z2 GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 temp_float2 IF temp_float2 < temp_float //WRITE_DEBUG_WITH_INT nearest_ball_1 temp_int ball_to_aim_at = temp_int temp_float = temp_float2 ENDIF ENDIF temp_int++ ENDWHILE ELSE IF turn_colour = POOL_COLOUR_STRIPES // get nearest stripe temp_int = 9 WHILE temp_int < 16 IF DOES_OBJECT_EXIST p_ball[temp_int] GET_OBJECT_COORDINATES p_ball[temp_int] x2 y2 z2 GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 temp_float2 IF temp_float2 < temp_float //WRITE_DEBUG_WITH_INT nearest_ball_0 temp_int ball_to_aim_at = temp_int temp_float = temp_float2 ENDIF ENDIF temp_int++ ENDWHILE ELSE IF turn_colour = POOL_COLOUR_BLACK // aim at black IF DOES_OBJECT_EXIST p_ball[8] //WRITE_DEBUG_WITH_INT nearest_ball_black 8 ball_to_aim_at = 8 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // point cue ball towards aiming ball IF NOT ball_to_aim_at = -1 AND ball_to_aim_at < 16 IF DOES_OBJECT_EXIST p_ball[0] GET_OBJECT_COORDINATES p_ball[0] x y z IF DOES_OBJECT_EXIST p_ball[ball_to_aim_at] GET_OBJECT_COORDINATES p_ball[ball_to_aim_at] x2 y2 z2 ENDIF vec_x = x2 - x vec_y = y2 - y GET_HEADING_FROM_VECTOR_2D vec_x vec_y temp_float SET_OBJECT_HEADING p_ball[0] temp_float ENDIF ENDIF ELSE back_from_shooting = 0 ENDIF projection_calculated = 0 GOSUB pool_draw_projection mouse_x = 0.0 mouse_y = 0.0 m_goals++ ENDIF IF m_goals = 1 IF IS_WIDGET_RELEASED WIDGET_CAM_TOGGLE IF select_is_pressed = 0 IF camera_mode = 0 camera_mode = 1 select_is_pressed = 1 ELSE camera_mode = 0 select_is_pressed = 1 ENDIF help_timer = 0 ENDIF IF camera_mode = 0 BUTT_ANGLE = 10.0 RAISE_CUE = 0.02 CUE_X_CORRECTION = 0.0 ELSE BUTT_ANGLE = 22.5000 RAISE_CUE = 0.02 CUE_X_CORRECTION = 0.0 ENDIF ELSE IF select_is_pressed = 1 select_is_pressed = 0 ENDIF ENDIF ENDIF // set aim -------- //IF IS_WIDGET_PRESSED WIDGET_LOOK GET_WIDGET_VALUE2 WIDGET_LOOK mouse_move_x, mouse_move_y mouse_move_x *= 0.33f mouse_move_y *= 0.33f //ENDIF IF IS_BUTTON_PRESSED current_pad LEFTSTICKX OR mouse_move_x > 0.01 OR mouse_move_x < -0.01 GET_OBJECT_HEADING p_ball[0] heading GET_POSITION_OF_ANALOGUE_STICKS current_pad LStickX LStickY RStickX RStickY // adjust cue balls heading temp_float =# LStickX temp_float /= 128.0 temp_float *= 1.0 heading += temp_float mouse_move_x *= -0.4 heading += mouse_move_x SET_OBJECT_ROTATION p_ball[0] 0.0 0.0 0.0 SET_OBJECT_HEADING p_ball[0] heading ENDIF IF camera_mode = 0 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table 0.00 -0.001 2.5 x y z SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table 0.00 0.001 0.0 x y z POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF IF camera_mode = 1 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[0] 0.00 -0.5 0.3 x y z SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[0] 0.00 0.5 0.0 x y z POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF IF camera_mode = 0 IF IS_BUTTON_PRESSED current_pad SQUARE IF square_is_pressed = 0 IF aim_help_flag = 2 aim_help_flag = 0 ELSE help_timer = 3001 ENDIF square_is_pressed = 1 ENDIF ELSE IF square_is_pressed = 1 square_is_pressed = 0 ENDIF ENDIF ENDIF // draw aim ------- IF DOES_OBJECT_EXIST aim_cue IF camera_mode = 0 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[0] cue_x_correction -0.05 raise_cue x2 y2 z2 ELSE GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[0] cue_x_correction -0.05 raise_cue x2 y2 z2 ENDIF GET_OBJECT_HEADING p_ball[0] heading heading += 180.0 SET_OBJECT_COORDINATES aim_cue x2 y2 z2 SET_OBJECT_ROTATION aim_cue butt_angle 0.0 heading ENDIF // draw ball projection LVAR_INT projection_calculated LVAR_INT got_first_hit_ball IF NOT IS_BUTTON_PRESSED current_pad LEFTSTICKX projection_calculated = 0 GOSUB pool_draw_projection ELSE IF NOT projection_calculated = 0 temp_int = 0 WHILE temp_int < 10 IF DOES_OBJECT_EXIST proj_cue_ball_objects[temp_int] DELETE_OBJECT proj_cue_ball_objects[temp_int] ENDIF temp_int++ ENDWHILE ENDIF projection_calculated = 0 TIMERA = 0 ENDIF // raise butt and cue LVAR_FLOAT butt_angle LVAR_FLOAT raise_cue LVAR_FLOAT cue_x_correction IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_UP butt_angle += 0.5 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_DOWN butt_angle += -0.5 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_W raise_cue += 0.001 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S raise_cue += -0.001 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_RIGHT cue_x_correction += 0.0001 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_LEFT cue_x_correction += -0.0001 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ENTER SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "butt_angle = " SAVE_FLOAT_TO_DEBUG_FILE butt_angle SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "raise_cue = " SAVE_FLOAT_TO_DEBUG_FILE raise_cue SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "cue_x_correction = " SAVE_FLOAT_TO_DEBUG_FILE cue_x_correction ENDIF // goto shooting ---- IF IS_WIDGET_RELEASED WIDGET_GAMBLING_CONTINUE IF cross_is_pressed = 0 IF DOES_OBJECT_EXIST aim_cue DELETE_OBJECT aim_cue ENDIF m_goals = 99 cross_is_pressed = 1 ENDIF ELSE IF cross_is_pressed = 1 cross_is_pressed = 0 ENDIF ENDIF // show help // AI --- IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_H GOSUB find_best_shot SET_OBJECT_HEADING p_ball[0] ai_shot_heading ENDIF ELSE // if cpu // get best shot GOSUB find_best_shot SET_OBJECT_HEADING p_ball[0] ai_shot_heading m_goals = 99 ENDIF IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL IF triangle_is_pressed = 0 AND triangle_timer > 1000 // set chars to their home position IF NOT IS_CHAR_DEAD player1_char player1_home_z += 1.1 GET_GROUND_Z_FOR_3D_COORD player1_home_x player1_home_y player1_home_z player1_home_z SET_CHAR_COORDINATES player1_char player1_home_x player1_home_y player1_home_z SET_CHAR_HEADING player1_char player1_home_h ENDIF IF NOT IS_CHAR_DEAD player2_char player2_home_z += 1.1 GET_GROUND_Z_FOR_3D_COORD player2_home_x player2_home_y player2_home_z player2_home_z SET_CHAR_COORDINATES player2_char player2_home_x player2_home_y player2_home_z SET_CHAR_HEADING player2_char player2_home_h ENDIF CLEAR_HELP quit = 1 triangle_is_pressed = 1 triangle_timer = 0 ENDIF ELSE IF triangle_is_pressed = 1 triangle_is_pressed = 0 ENDIF ENDIF IF m_goals = 99 temp_int = 0 WHILE temp_int < 10 IF DOES_OBJECT_EXIST proj_cue_ball_objects[temp_int] DELETE_OBJECT proj_cue_ball_objects[temp_int] ENDIF temp_int++ ENDWHILE mouse_x = 0.0 mouse_y = 0.0 m_stage += 2 m_goals = 0 CLEAR_HELP ENDIF RETURN // *************************************************************************************************** // WALK TO TABLE // *************************************************************************************************** pl_stage_6: RETURN // ****************************************************************************************************** // SHOOTING // ****************************************************************************************************** pl_stage_7: GOSUB pool_draw_window_3 // 5. set shot position and anim IF current_char_is_human = 1 LVAR_INT back_from_shooting IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL // Go back to the aiming screen. IF triangle_is_pressed = 0 m_stage = 5 m_goals = 0 triangle_is_pressed = 1 back_from_shooting = 1 ENDIF ELSE IF triangle_is_pressed = 1 triangle_is_pressed = 0 ENDIF //GOSUB display_help_shooting LVAR_FLOAT requested_anim_time current_anim_time stance_anim_speed LVAR_FLOAT shot_power LVAR_INT shot_played IF m_goals = 0 GOSUB pool_init_shooting m_goals++ ENDIF IF shot_played = 0 GOSUB draw_ball_and_nib ENDIF IF shot_played = 0 GOSUB pool_check_is_in_shooting_position IF is_in_shooting_position = 1 // Handle controller input. IF HID_IMPLEMENTS HID_MAPPING_PED_MOVE_X // This is oscillating automatic power. LVAR_FLOAT fTimeDiff fTimeDiff =# time_diff fTimeDiff /= 1000.0 fTimeDiff *= 0.125 fTimeDiff *= fJoyPadPowerDirection requested_anim_time += fTimeDiff // Reverse directions when we reach the ends of the animation. IF requested_anim_time > 0.2 requested_anim_time = 0.2 fJoyPadPowerDirection *= -1.0 ENDIF IF requested_anim_time < 0.0 requested_anim_time = 0.0 fJoyPadPowerDirection *= -1.0 ENDIF /* This is analog stick based power. IF IS_BUTTON_PRESSED current_pad RIGHTSTICKY GET_POSITION_OF_ANALOGUE_STICKS current_pad LStickX LStickY RStickX RStickY temp_float =# RStickY temp_float /= 128.0 temp_float *= 0.2 requested_anim_time = 0.2 requested_anim_time += temp_float IF requested_anim_time > 0.2 requested_anim_time = 0.2 ENDIF ELSE requested_anim_time = 0.2 ENDIF */ // Handle touch and mouse input. ELSE mouse_move_x = 0.0 mouse_move_y = 0.0 //IF IS_WIDGET_PRESSED WIDGET_LOOK GET_WIDGET_VALUE2 WIDGET_LOOK mouse_move_x, mouse_move_y //ENDIF mouse_y += mouse_move_y IF mouse_y > 128.0 mouse_y = 128.0 ENDIF IF mouse_y < -128.0 mouse_y = -128.0 ENDIF temp_float = mouse_y / 128.0 temp_float *= -0.2 requested_anim_time = 0.2 requested_anim_time += temp_float // Clamp the values for the pinball style shooting. IF requested_anim_time > 0.2 requested_anim_time = 0.2 ENDIF ENDIF ELSE requested_anim_time = 0.0 ENDIF ENDIF // Play the shot when they release the button. IF shot_played = 0 // Handle the new method we use for touch (pinball style). IF NOT HID_IMPLEMENTS HID_MAPPING_PED_MOVE_X IF IS_WIDGET_RELEASED WIDGET_LOOK IF requested_anim_time < 0.2 // 0.2 is minimum power; let them cancel the stroke here instead of a miscue. GOSUB pool_apply_shot ELSE mouse_x = 0.0 // Reset drag variables when they cancel the stroke. mouse_y = 0.0 ENDIF ELSE GOSUB pool_update_animation_buffer ENDIF // Handle controller input. ELSE IF IS_HID_RELEASED HID_MAPPING_ATTACK AND requested_anim_time > 0.0 GOSUB pool_apply_shot ELSE GOSUB pool_update_animation_buffer ENDIF ENDIF ENDIF LVAR_INT this_char_got_task IF m_goals = 1 IF NOT IS_CHAR_DEAD current_char GOSUB pool_set_camera1 m_goals++ ENDIF ENDIF IF m_goals = 2 GOSUB pool_update_shoot_animations ENDIF IF m_goals = 3 IF NOT IS_CHAR_DEAD current_char close_aim_stance_z += 1.1 //00.0 GET_GROUND_Z_FOR_3D_COORD close_aim_stance_x close_aim_stance_y close_aim_stance_z close_aim_stance_z SET_CHAR_COORDINATES current_char close_aim_stance_x close_aim_stance_y close_aim_stance_z SET_CHAR_HEADING current_char close_aim_stance_h SET_CHAR_COLLISION current_char TRUE TIMERA = 0 m_goals = 99 ENDIF ENDIF IF m_goals = 99 CLEAR_HELP TIMERA = 0 m_stage++ m_goals = 0 ENDIF ENDIF // pressed triangle ELSE // IS PLAYER CPU IF m_goals = 0 GOSUB pool_init_shooting m_goals++ ENDIF IF shot_played = 0 GOSUB pool_check_is_in_shooting_position IF is_in_shooting_position = 1 IF TIMERA < 2000 requested_anim_time = 0.2 ELSE IF TIMERA < 3000 requested_anim_time = 0.0 ELSE requested_anim_time = 1.0 ENDIF ENDIF ELSE TIMERA = 0 requested_anim_time = 0.0 ENDIF ENDIF // play shot if current anim time goes above 0.25 IF shot_played = 0 IF requested_anim_time > 0.25 GOSUB pool_apply_shot ELSE GOSUB pool_update_animation_buffer ENDIF ENDIF IF m_goals = 1 // set chars position IF NOT IS_CHAR_DEAD current_char GOSUB pool_set_camera1 m_goals++ ENDIF ENDIF IF m_goals = 2 // hold stance position GOSUB pool_update_shoot_animations ENDIF IF m_goals = 3 IF NOT IS_CHAR_DEAD current_char close_aim_stance_z += 1.1 //00.0 GET_GROUND_Z_FOR_3D_COORD close_aim_stance_x close_aim_stance_y close_aim_stance_z close_aim_stance_z SET_CHAR_COORDINATES current_char close_aim_stance_x close_aim_stance_y close_aim_stance_z SET_CHAR_HEADING current_char close_aim_stance_h SET_CHAR_COLLISION current_char TRUE TIMERA = 0 m_goals = 99 ENDIF ENDIF IF m_goals = 99 CLEAR_HELP TIMERA = 0 m_stage++ m_goals = 0 ENDIF ENDIF RETURN LVAR_INT is_in_shooting_position pool_check_is_in_shooting_position: is_in_shooting_position = 0 IF NOT IS_CHAR_DEAD current_char IF current_stance = 1 IF IS_CHAR_PLAYING_ANIM current_char POOL_Short_Shot is_in_shooting_position = 1 ENDIF ENDIF IF current_stance = 2 IF IS_CHAR_PLAYING_ANIM current_char POOL_Med_shot is_in_shooting_position = 1 ENDIF ENDIF IF current_stance = 3 IF IS_CHAR_PLAYING_ANIM current_char POOL_Long_Shot is_in_shooting_position = 1 ENDIF ENDIF IF current_stance = 4 IF IS_CHAR_PLAYING_ANIM current_char POOL_XLong_Shot is_in_shooting_position = 1 ENDIF ENDIF ENDIF RETURN pool_update_shoot_animations: IF NOT IS_CHAR_DEAD current_char // hold stance position IF this_char_got_task = 0 // close IF current_stance = 1 OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 POOL_Short_Start POOL 8.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 POOL_Short_Shot POOL 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq IF quit = 0 PERFORM_SEQUENCE_TASK current_char temp_seq ENDIF CLEAR_SEQUENCE_TASK temp_seq ENDIF // medium IF current_stance = 2 OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 POOL_Med_Start POOL 8.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 POOL_Med_shot POOL 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq IF quit = 0 PERFORM_SEQUENCE_TASK current_char temp_seq ENDIF CLEAR_SEQUENCE_TASK temp_seq ENDIF // far IF current_stance = 3 OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 POOL_Long_Start POOL 8.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 POOL_Long_Shot POOL 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq IF quit = 0 PERFORM_SEQUENCE_TASK current_char temp_seq ENDIF CLEAR_SEQUENCE_TASK temp_seq ENDIF // v.far IF current_stance = 4 OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 POOL_XLong_Start POOL 8.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 POOL_XLong_Shot POOL 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq IF quit = 0 PERFORM_SEQUENCE_TASK current_char temp_seq ENDIF CLEAR_SEQUENCE_TASK temp_seq ENDIF this_char_got_task++ ENDIF ENDIF // set anim position IF this_char_got_task = 1 IF shot_played = 0 IF NOT IS_CHAR_DEAD current_char GET_SCRIPT_TASK_STATUS current_char PERFORM_SEQUENCE_TASK temp_int IF NOT temp_int = FINISHED_TASK IF current_stance = 1 IF IS_CHAR_PLAYING_ANIM current_char POOL_Short_Shot SET_CHAR_ANIM_CURRENT_TIME current_char POOL_Short_Shot current_anim_time SET_CHAR_ANIM_SPEED current_char POOL_Short_Shot stance_anim_speed ENDIF ENDIF IF current_stance = 2 IF IS_CHAR_PLAYING_ANIM current_char POOL_Med_Shot SET_CHAR_ANIM_CURRENT_TIME current_char POOL_Med_Shot current_anim_time SET_CHAR_ANIM_SPEED current_char POOL_Med_Shot stance_anim_speed ENDIF ENDIF IF current_stance = 3 IF IS_CHAR_PLAYING_ANIM current_char POOL_Long_Shot SET_CHAR_ANIM_CURRENT_TIME current_char POOL_Long_Shot current_anim_time SET_CHAR_ANIM_SPEED current_char POOL_Long_Shot stance_anim_speed ENDIF ENDIF IF current_stance = 4 IF IS_CHAR_PLAYING_ANIM current_char POOL_XLong_Shot SET_CHAR_ANIM_CURRENT_TIME current_char POOL_XLong_Shot current_anim_time SET_CHAR_ANIM_SPEED current_char POOL_XLong_Shot stance_anim_speed ENDIF ENDIF ELSE TIMERA = 0 this_char_got_task++ ENDIF ENDIF ELSE TIMERA = 0 this_char_got_task++ ENDIF ENDIF // wait for anim to finish IF this_char_got_task = 2 IF NOT IS_CHAR_DEAD current_char GET_SCRIPT_TASK_STATUS current_char PERFORM_SEQUENCE_TASK temp_int IF NOT temp_int = FINISHED_TASK AND TIMERA < 5000 // interpolate speed back to 1.0 temp_float = 1.0 - stance_anim_speed temp_float /= 20.0 stance_anim_speed += temp_float IF stance_anim_speed < 0.8 stance_anim_speed += 0.01 ENDIF IF stance_anim_speed < 1.2 AND stance_anim_speed > 0.8 stance_anim_speed = 1.0 ENDIF IF IS_CHAR_PLAYING_ANIM current_char POOL_Short_Shot SET_CHAR_ANIM_SPEED current_char POOL_Short_Shot stance_anim_speed ENDIF IF IS_CHAR_PLAYING_ANIM current_char POOL_Med_Shot SET_CHAR_ANIM_SPEED current_char POOL_Med_Shot stance_anim_speed ENDIF IF IS_CHAR_PLAYING_ANIM current_char POOL_Long_Shot SET_CHAR_ANIM_SPEED current_char POOL_Long_Shot stance_anim_speed ENDIF IF IS_CHAR_PLAYING_ANIM current_char POOL_XLong_Shot SET_CHAR_ANIM_SPEED current_char POOL_XLong_Shot stance_anim_speed ENDIF ELSE this_char_got_task++ ENDIF ENDIF ENDIF IF this_char_got_task = 3 IF NOT IS_CHAR_DEAD current_char IF quit = 0 TASK_PLAY_ANIM_NON_INTERRUPTABLE current_char pool_idle_stance pool 4.0 TRUE FALSE FALSE FALSE -1 ENDIF ENDIF m_goals++ ENDIF RETURN pool_update_animation_buffer: // animation buffer - workout what current_anim_time should be at temp_float = requested_anim_time - current_anim_time IF temp_float >= 0.05 OR temp_float <= -0.05 temp_float /= 3.0 IF temp_float < 0.01 AND temp_float > -0.01 IF temp_float > 0.0 temp_float = 0.01 ELSE temp_float = -0.01 ENDIF ENDIF current_anim_time += temp_float ELSE current_anim_time = requested_anim_time ENDIF RETURN pool_init_shooting: shot_played = 0 this_char_got_task = 0 ball_sprite_x = 75.0 ball_sprite_y = 386.0 nib_sprite_x = ball_sprite_x nib_sprite_y = ball_sprite_y BALL_SPRITE_HEIGHT = 67.0000 BALL_SPRITE_WIDTH = 78.0000 NIB_SPRITE_HEIGHT = 19.0000 NIB_SPRITE_WIDTH = 16.0000 stance_anim_speed = 0.0 current_anim_time = 0.0 stance_anim_speed = 0.0 requested_anim_time = 0.0 TIMERA = 0 TIMERB = 0 IF NOT current_char_is_human = 0 PRINT_HELP_FOREVER PLH4HID // Tap ~m~~widget_attack~ to shoot. Tap ~m~~widget_minigame_cancel~ to go back to aiming. ENDIF GOSUB update_stance_coords RETURN pool_set_camera1: SET_CHAR_COLLISION current_char FALSE temp_float = table_z + 1.0 GET_GROUND_Z_FOR_3D_COORD table_x table_y temp_float shoot_stance_z SET_CHAR_COORDINATES current_char shoot_stance_x shoot_stance_y shoot_stance_z SET_CHAR_HEADING current_char shoot_stance_h // check if other dude is standing behind IF player1_char = current_char IF NOT IS_CHAR_DEAD player1_char GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS player1_char 0.0 -1.5 0.0 x y z IF NOT IS_CHAR_DEAD player2_char SET_CHAR_COORDINATES player2_char player2_home_x player2_home_y player2_home_z IF LOCATE_CHAR_ANY_MEANS_2D player2_char x y 2.0 2.0 FALSE GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS player2_char -2.0 0.0 -1.0 x y z SET_CHAR_COORDINATES player2_char x y z ENDIF IF DOES_OBJECT_EXIST p_ball[0] TASK_LOOK_AT_OBJECT player2_char p_ball[0] 10000 ENDIF ENDIF ENDIF ELSE IF NOT IS_CHAR_DEAD player2_char GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS player2_char 0.0 -1.5 0.0 x y z IF NOT IS_CHAR_DEAD player1_char SET_CHAR_COORDINATES player1_char player1_home_x player1_home_y player1_home_z IF LOCATE_CHAR_ANY_MEANS_2D player1_char x y 2.0 2.0 FALSE GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS player1_char -2.0 0.0 -1.0 x y z SET_CHAR_COORDINATES player1_char x y z IF DOES_OBJECT_EXIST p_ball[0] TASK_LOOK_AT_OBJECT player1_char p_ball[0] 10000 ENDIF ENDIF ENDIF ENDIF ENDIF // setup camera IF current_stance = 1 //x = 0.4 //y = -1.0 //z = 1.0 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS current_char 0.1532 -0.9733 1.1819 x y z SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS current_char -0.0267 -0.3468 0.4236 x y z POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF IF current_stance = 2 x = 0.4 y = -1.0 z = 1.0 ENDIF IF current_stance = 3 x = 0.3 y = -0.5 z = 1.0 ENDIF IF current_stance = 4 x = 0.3 y = -0.5 z = 1.0 ENDIF IF NOT current_stance = 1 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS current_char x y z x y z SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[0] 0.0 0.3 0.0 x y z POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF RETURN pool_apply_shot: // work out shot power IF current_char_is_human = 1 // This is how it used to be computed, where the player pushed the mouse forward quickly. shot_power = requested_anim_time - current_anim_time shot_power /= 0.1 // New way of doing it for touch; pinball style. // Full power is requested_anim_time = 0.0. No power is requested_anim_time = 0.2 shot_power = 5.0 LVAR_FLOAT fDiff fDiff = requested_anim_time * 25.0 shot_power -= fDiff IF shot_power < 0.1 shot_power = 0.1 ENDIF stance_anim_speed = shot_power * 2.0 IF stance_anim_speed < 0.6 stance_anim_speed = 0.6 ENDIF // Computer player; work out shot power. ELSE stance_anim_speed = ai_shot_power * 2.0 IF stance_anim_speed < 0.6 stance_anim_speed = 0.6 ENDIF shot_power = ai_shot_power ENDIF // apply speed to ball IF DOES_OBJECT_EXIST p_ball[0] GET_OBJECT_HEADING p_ball[0] heading // convert heading to vector SIN heading temp_float vec_x = temp_float vec_x *= -1.0 COS heading temp_float vec_y = temp_float vec_z = 0.0 // normalise vector GET_OBJECT_COORDINATES p_ball[0] x y z x2 = x + vec_x y2 = y + vec_y GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 temp_float vec_x /= temp_float vec_y /= temp_float // multiply by power vec_x *= shot_power vec_y *= shot_power FREEZE_OBJECT_POSITION p_ball[0] FALSE SET_OBJECT_COLLISION p_ball[0] FALSE SET_OBJECT_DYNAMIC p_ball[0] FALSE SET_OBJECT_VELOCITY p_ball[0] vec_x vec_y vec_z first_moving_ball = -1 cue_ball_hit_cushion_first = 0 ball_strikes_cushion = 0 shot_timer = 0 temp_int = 0 WHILE temp_int < 16 ball_is_stationary[temp_int] = 0 temp_int++ ENDWHILE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT p_ball[0] SOUND_POOL_HIT_WHITE // apply spin to ball according to nib LVAR_FLOAT cue_ball_spin_x LVAR_FLOAT cue_ball_spin_y cue_ball_spin_x = 0.0 cue_ball_spin_y = 0.0 x = nib_sprite_x - ball_sprite_x y = nib_sprite_y - ball_sprite_y x /= ball_sprite_width y /= ball_sprite_height IF current_char_is_human = 0 GENERATE_RANDOM_FLOAT_IN_RANGE -0.2 0.2 x GENERATE_RANDOM_FLOAT_IN_RANGE -0.2 0.2 y ENDIF IF x > 0.2 OR x < -0.2 OR y > 0.2 OR y < -0.2 OR current_char_is_human = 0 x *= shot_power y *= shot_power cue_ball_spin_x = x * 0.5 cue_ball_spin_y = y * -0.5 x *= 10.0 y *= 10.0 IF current_char_is_human = 1 SET_OBJECT_ROTATION_VELOCITY p_ball[0] y 0.0 x ENDIF ELSE cue_ball_spin_x = 0.0 cue_ball_spin_y = 0.0 ENDIF nib_sprite_x = 559.0 nib_sprite_y = 381.0 IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "cue ball data = " SAVE_FLOAT_TO_DEBUG_FILE shot_power SAVE_FLOAT_TO_DEBUG_FILE x SAVE_FLOAT_TO_DEBUG_FILE y SAVE_FLOAT_TO_DEBUG_FILE z ENDIF SET_OBJECT_COLLISION p_ball[0] TRUE SET_OBJECT_DYNAMIC p_ball[0] TRUE IF NOT IS_CHAR_DEAD player1_char IF DOES_OBJECT_EXIST p_ball[0] TASK_LOOK_AT_OBJECT player1_char p_ball[0] 10000 ENDIF ENDIF IF NOT IS_CHAR_DEAD player2_char IF DOES_OBJECT_EXIST p_ball[0] TASK_LOOK_AT_OBJECT player2_char p_ball[0] 10000 ENDIF ENDIF ENDIF shot_played = 1 RETURN // ****************************************************************************************************** // 6. DETERMINE OUTCOME // ****************************************************************************************************** pl_stage_8: // set camera to viewing position IF m_goals = 0 IF NOT IS_CHAR_DEAD current_char // get vec from char to table GET_OBJECT_COORDINATES table x y z vec_x = x - close_aim_stance_x vec_y = y - close_aim_stance_y x += vec_x y += vec_y z += 2.5 SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 GET_OBJECT_COORDINATES table x y z z += 0.5 POINT_CAMERA_AT_POINT x y z JUMP_CUT TIMERA = 0 // move char back a bit GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS current_char 0.0 -0.2 0.0 x2 y2 z2 GET_GROUND_Z_FOR_3D_COORD x2 y2 z2 z2 GET_CHAR_HEADING current_char heading SET_CHAR_COORDINATES current_char safe_stance_x safe_stance_y safe_stance_z SET_CHAR_HEADING current_char heading IF quit = 0 TASK_PLAY_ANIM_NON_INTERRUPTABLE current_char POOL_Idle_Stance POOL 1000.0 TRUE TRUE TRUE FALSE -1 ENDIF m_goals++ ENDIF ENDIF // wait for balls to stop moving IF m_goals = 1 temp_int = 0 temp_int2 = 0 WHILE temp_int < 16 IF ball_is_stationary[temp_int] = 1 temp_int2 ++ ENDIF temp_int++ ENDWHILE IF temp_int2 = 16 m_goals++ TIMERA = 0 ENDIF ENDIF IF m_goals = 2 IF TIMERA > 700 m_goals = 99 ENDIF ENDIF IF m_goals = 99 CLEAR_HELP m_stage++ m_goals = 0 ENDIF RETURN // ********************************************************************************** // CHECK FOR FOULS // ********************************************************************************** pl_stage_9: LVAR_INT balls_potted_this_turn[16] LVAR_INT no_of_balls_potted_this_turn LVAR_INT spots_potted stripes_potted LVAR_INT foul_type // 1. missed all balls // 2. hit wrong ball first // 3. potted white // 4. potted wrong colour // 5. potted black out of turn // 6. rail foul // initialise variables for fouls IF m_goals = 0 foul_type = 0 m_goals++ ENDIF // 1. missed all balls IF m_goals = 1 IF first_moving_ball = -1 foul_type = 1 ENDIF m_goals++ ENDIF // 2. hit wrong ball first IF m_goals = 2 IF NOT first_moving_ball = -1 IF turn_colour = POOL_COLOUR_NONE IF first_moving_ball = 8 foul_type = 2 ENDIF ELSE IF turn_colour = POOL_COLOUR_SPOTS IF first_moving_ball >= 8 foul_type = 2 ENDIF ELSE IF turn_colour = POOL_COLOUR_STRIPES IF first_moving_ball <= 8 foul_type = 2 ENDIF ELSE IF turn_colour = POOL_COLOUR_BLACK IF NOT first_moving_ball = 8 foul_type = 2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF m_goals++ ENDIF // 3. potted white IF m_goals = 3 IF balls_potted_this_turn[0] = 1 foul_type = 3 ENDIF m_goals++ ENDIF // 4. potted wrong colour IF m_goals = 4 IF no_of_balls_potted_this_turn = 1 IF NOT foul_type = 3 IF turn_colour = POOL_COLOUR_NONE // do nothing. ELSE IF turn_colour = POOL_COLOUR_SPOTS IF stripes_potted > 0 foul_type = 4 ENDIF ELSE IF turn_colour = POOL_COLOUR_STRIPES IF spots_potted > 0 foul_type = 4 ENDIF ELSE IF turn_colour = POOL_COLOUR_BLACK IF spots_potted > 0 OR stripes_potted > 0 foul_type = 4 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ELSE IF no_of_balls_potted_this_turn > 1 IF turn_colour = POOL_COLOUR_NONE IF spots_potted > 0 AND stripes_potted = 0 IF NOT balls_potted_this_turn[8] = 1 IF this_is_break = 0 ENDIF ENDIF ENDIF IF spots_potted = 0 AND stripes_potted > 0 IF NOT balls_potted_this_turn[8] = 1 IF this_is_break = 0 ENDIF ENDIF ENDIF ELSE IF turn_colour = POOL_COLOUR_SPOTS IF stripes_potted > 0 foul_type = 4 ENDIF ELSE IF turn_colour = POOL_COLOUR_STRIPES IF spots_potted > 0 foul_type = 4 ENDIF ELSE IF turn_colour = POOL_COLOUR_BLACK IF stripes_potted > 0 OR spots_potted > 0 foul_type = 4 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF m_goals++ ENDIF // 5. potted black out of turn IF m_goals = 5 IF NOT turn_colour = POOL_COLOUR_BLACK IF balls_potted_this_turn[8] = 1 foul_type = 5 ENDIF ELSE // if fouled on black, when black got pocketted IF balls_potted_this_turn[8] = 1 IF NOT foul_type = 0 foul_type = 5 ENDIF ENDIF ENDIF m_goals++ ENDIF // 6. rail foul IF m_goals = 6 //IF this_is_break = 0 IF foul_type = 0 IF no_of_balls_potted_this_turn = 0 IF ball_strikes_cushion = 0 foul_type = 6 ENDIF ENDIF ENDIF m_goals = 99 ENDIF IF m_goals = 99 // assign colours if no foul was committed and a ball was potted IF foul_type = 0 AND this_is_break = 0 AND no_of_balls_potted_this_turn > 0 AND turn_colour = POOL_COLOUR_NONE IF spots_potted > stripes_potted IF turn_player = 1 player1_colour = POOL_COLOUR_SPOTS player2_colour = POOL_COLOUR_STRIPES ELSE player1_colour = POOL_COLOUR_STRIPES player2_colour = POOL_COLOUR_SPOTS ENDIF ELSE IF stripes_potted > spots_potted IF turn_player = 1 player1_colour = POOL_COLOUR_STRIPES player2_colour = POOL_COLOUR_SPOTS ELSE player1_colour = POOL_COLOUR_SPOTS player2_colour = POOL_COLOUR_STRIPES ENDIF ENDIF ENDIF ENDIF CLEAR_HELP m_goals = 0 m_stage++ ENDIF RETURN // ******************************************************************************************* // DETERMINE WHO PLAYS NEXT // ******************************************************************************************* pl_stage_10: // 1. missed all balls // 2. hit wrong ball first // 3. potted white // 4. potted wrong colour // 5. potted black out of turn IF m_goals = 0 TIMERA = 0 // find out if either player is going for black IF ball_potted[1] = 1 AND ball_potted[2] = 1 AND ball_potted[3] = 1 AND ball_potted[4] = 1 AND ball_potted[5] = 1 IF ball_potted[6] = 1 AND ball_potted[7] = 1 IF player1_colour = POOL_COLOUR_SPOTS player1_colour = POOL_COLOUR_BLACK ENDIF IF player2_colour = POOL_COLOUR_SPOTS player2_colour = POOL_COLOUR_BLACK ENDIF ENDIF ENDIF IF ball_potted[9] = 1 AND ball_potted[10] = 1 AND ball_potted[11] = 1 AND ball_potted[12] = 1 AND ball_potted[13] = 1 IF ball_potted[14] = 1 AND ball_potted[15] = 1 IF player1_colour = POOL_COLOUR_STRIPES player1_colour = POOL_COLOUR_BLACK ENDIF IF player2_colour = POOL_COLOUR_STRIPES player2_colour = POOL_COLOUR_BLACK ENDIF ENDIF ENDIF // if no foul occured and player potted a ball it's still current players turn SWITCH foul_type CASE 0 IF no_of_balls_potted_this_turn > 0 IF NOT ball_potted[8] = 1 turn_is_scratch = 0 skip_chalk_cue = 1 IF turn_player = 1 turn_colour = player1_colour ELSE turn_colour = player2_colour ENDIF m_goals = 99 ELSE // this player has won! game_over = 1 this_player_wins = 1 m_goals = 99 ENDIF ELSE IF turn_player = 1 turn_is_scratch = 0 turn_player = 2 current_char = player2_char current_cue = cue2 current_char_is_human = player2_is_human skip_chalk_cue = 0 turn_colour = player2_colour IF player2_is_human = 1 current_pad = PAD2 ELSE current_pad = PAD1 ENDIF m_goals = 99 ELSE turn_is_scratch = 0 turn_player = 1 current_char = player1_char current_cue = cue1 current_char_is_human = player1_is_human skip_chalk_cue = 0 turn_colour = player1_colour current_pad = PAD1 m_goals = 99 ENDIF ENDIF BREAK CASE 1 // 1. missed all balls IF turn_player = 1 turn_player = 2 current_char = player2_char current_cue = cue2 current_char_is_human = player2_is_human turn_is_scratch = 2 skip_chalk_cue = 0 turn_colour = player2_colour IF player2_is_human = 1 current_pad = PAD2 ELSE current_pad = PAD1 ENDIF m_goals = 99 ELSE turn_player = 1 current_char = player1_char current_cue = cue1 current_char_is_human = player1_is_human turn_is_scratch = 2 skip_chalk_cue = 0 turn_colour = player1_colour current_pad = PAD1 m_goals = 99 ENDIF BREAK CASE 2 // 2. hit wrong ball first //PRINT_NOW FOUL2 4000 1 IF turn_player = 1 turn_player = 2 current_char = player2_char current_cue = cue2 current_char_is_human = player2_is_human turn_is_scratch = 2 skip_chalk_cue = 0 turn_colour = player2_colour IF player2_is_human = 1 current_pad = PAD2 ELSE current_pad = PAD1 ENDIF m_goals = 99 ELSE turn_player = 1 current_char = player1_char current_cue = cue1 current_char_is_human = player1_is_human turn_is_scratch = 2 skip_chalk_cue = 0 turn_colour = player1_colour current_pad = PAD1 m_goals = 99 ENDIF BREAK CASE 3 // 3. potted white //PRINT_NOW FOUL3 4000 1 IF turn_player = 1 turn_player = 2 current_char = player2_char current_cue = cue2 current_char_is_human = player2_is_human turn_is_scratch = 2 skip_chalk_cue = 0 turn_colour = player2_colour IF player2_is_human = 1 current_pad = PAD2 ELSE current_pad = PAD1 ENDIF m_goals = 99 ELSE turn_player = 1 current_char = player1_char current_cue = cue1 current_char_is_human = player1_is_human turn_is_scratch = 2 skip_chalk_cue = 0 turn_colour = player1_colour current_pad = PAD1 m_goals = 99 ENDIF BREAK CASE 4 // 4. potted wrong colour //PRINT_NOW FOUL4 4000 1 IF turn_player = 1 turn_player = 2 current_char = player2_char current_cue = cue2 current_char_is_human = player2_is_human turn_is_scratch = 2 skip_chalk_cue = 0 turn_colour = player2_colour IF player2_is_human = 1 current_pad = PAD2 ELSE current_pad = PAD1 ENDIF m_goals = 99 ELSE turn_player = 1 current_char = player1_char current_cue = cue1 current_char_is_human = player1_is_human turn_is_scratch = 2 skip_chalk_cue = 0 turn_colour = player1_colour current_pad = PAD1 m_goals = 99 ENDIF BREAK CASE 5 // 5. potted black out of turn //PRINT_NOW FOUL5 4000 1 LVAR_INT this_player_wins LVAR_INT game_over IF this_is_break = 0 this_player_wins = 0 ELSE this_player_wins = 1 ENDIF game_over = 1 m_goals = 99 BREAK CASE 6 IF turn_player = 1 turn_player = 2 current_char = player2_char current_cue = cue2 current_char_is_human = player2_is_human turn_is_scratch = 2 skip_chalk_cue = 0 turn_colour = player2_colour IF player2_is_human = 1 current_pad = PAD2 ELSE current_pad = PAD1 ENDIF m_goals = 99 ELSE turn_player = 1 current_char = player1_char current_cue = cue1 current_char_is_human = player1_is_human turn_is_scratch = 2 skip_chalk_cue = 0 turn_colour = player1_colour current_pad = PAD1 m_goals = 99 ENDIF BREAK ENDSWITCH IF two_players = 0 IF current_char_is_human = 1 PRINT_HELP_FOREVER PL_H5 // Press ~m~~widget_gambling_continue~ to continue. ENDIF ELSE IF current_pad = PAD1 PRINT_HELP_FOREVER PL_H8 // Player 1 press ~m~~widget_gambling_continue~ to continue. ELSE PRINT_HELP_FOREVER PL_H9 // Player 2 press ~m~~widget_gambling_continue~ to continue. ENDIF ENDIF TIMERA = 0 TIMERB = 0 ENDIF IF m_goals = 99 GOSUB pool_draw_window_2 IF current_char_is_human = 1 IF IS_WIDGET_RELEASED WIDGET_GAMBLING_CONTINUE m_goals++ ENDIF ELSE IF TIMERB > 2000 OR IS_BUTTON_PRESSED current_pad CROSS m_goals++ ENDIF IF IS_WIDGET_RELEASED WIDGET_GAMBLING_CONTINUE m_goals++ ENDIF ENDIF ENDIF IF m_goals = 100 CLEAR_HELP temp_int = 0 no_of_balls_potted_this_turn = 0 WHILE temp_int < 16 balls_potted_this_turn[temp_int] = 0 temp_int++ ENDWHILE spots_potted = 0 stripes_potted = 0 IF game_over = 1 this_is_break = 1 m_stage++ m_goals = 0 ELSE this_is_break = 0 m_stage = 3 m_goals = 0 ENDIF WAIT 0 ENDIF RETURN // ******************************************************************************************* // SHOW WINNER // ******************************************************************************************* pl_stage_11: IF m_goals = 0 IF this_player_wins = 0 IF turn_player = 1 current_char = player2_char current_cue = cue2 ELSE current_char = player1_char current_cue = cue1 ENDIF ELSE IF turn_player = 1 current_char = player1_char current_cue = cue1 ELSE current_char = player2_char current_cue = cue2 ENDIF ENDIF IF NOT IS_CHAR_DEAD current_char //VAR_INT casino_anim_loaded GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS current_char 1.0 2.0 0.0 x y z SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 POINT_CAMERA_AT_CHAR current_char FIXED JUMP_CUT IF two_players = 0 // you win IF current_char = player1_char temp_int = pl_initial_stake * 2 ADD_SCORE player1 temp_int START_NEW_SCRIPT display_win_text temp_int 5000 80 IF NOT IS_CHAR_DEAD opp SET_CHAR_MONEY opp 0 ENDIF ELSE // you lost temp_int = pl_initial_stake * -1 START_NEW_SCRIPT display_win_text temp_int 5000 80 ENDIF ELSE // player1 wins IF current_char = player1_char PRINT_BIG PL_08 5000 1 ELSE // player2 wins PRINT_BIG PL_09 5000 1 ENDIF ENDIF TIMERA = 0 m_goals++ ENDIF ENDIF IF m_goals = 1 IF TIMERA > 5000 m_goals++ ENDIF ENDIF // fade out and delete any remaining balls IF m_goals = 2 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE temp_int = 0 WHILE temp_int < 16 IF DOES_OBJECT_EXIST p_ball[temp_int] DELETE_OBJECT p_ball[temp_int] ENDIF temp_int++ ENDWHILE // recreate balls // cue ball GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table -0.2734375 -0.0546875 0.9296875 x y z // 0.9296875 CREATE_OBJECT_NO_OFFSET K_POOLBALLCUE x y z p_ball[0] GET_OBJECT_HEADING table heading heading += 270.0 SET_OBJECT_HEADING p_ball[0] heading // other balls GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table 0.3408 -0.0284 0.9297 ball_tri_x ball_tri_y ball_tri_z // 0.9297 GET_OBJECT_HEADING table ball_tri_h ball_tri_h += 90.0 CREATE_OBJECT_NO_OFFSET K_POOLBALLSPT01 ball_tri_x ball_tri_y ball_tri_z p_ball[1] CREATE_OBJECT_NO_OFFSET K_POOLBALLSPT02 0.0 0.0 0.0 p_ball[2] CREATE_OBJECT_NO_OFFSET K_POOLBALLSPT03 0.0 0.0 0.0 p_ball[3] CREATE_OBJECT_NO_OFFSET K_POOLBALLSPT04 0.0 0.0 0.0 p_ball[4] CREATE_OBJECT_NO_OFFSET K_POOLBALLSPT05 0.0 0.0 0.0 p_ball[5] CREATE_OBJECT_NO_OFFSET K_POOLBALLSPT06 0.0 0.0 0.0 p_ball[6] CREATE_OBJECT_NO_OFFSET K_POOLBALLSPT07 0.0 0.0 0.0 p_ball[7] CREATE_OBJECT_NO_OFFSET K_POOLBALL8 0.0 0.0 0.0 p_ball[8] CREATE_OBJECT_NO_OFFSET K_POOLBALLSTP01 0.0 0.0 0.0 p_ball[9] CREATE_OBJECT_NO_OFFSET K_POOLBALLSTP02 0.0 0.0 0.0 p_ball[10] CREATE_OBJECT_NO_OFFSET K_POOLBALLSTP03 0.0 0.0 0.0 p_ball[11] CREATE_OBJECT_NO_OFFSET K_POOLBALLSTP04 0.0 0.0 0.0 p_ball[12] CREATE_OBJECT_NO_OFFSET K_POOLBALLSTP05 0.0 0.0 0.0 p_ball[13] CREATE_OBJECT_NO_OFFSET K_POOLBALLSTP06 0.0 0.0 0.0 p_ball[14] CREATE_OBJECT_NO_OFFSET K_POOLBALLSTP07 0.0 0.0 0.0 p_ball[15] GOSUB update_ball_triangle_position m_goals = 99 ENDIF IF m_goals = 99 CLEAR_HELP m_stage++ m_goals = 0 ENDIF RETURN setup_pool_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 // ******************************************************************************************* // ANOTHER GAME ? // ******************************************************************************************* pl_stage_12: this_player_wins = 0 no_of_balls_potted_this_turn = 0 spots_potted = 0 stripes_potted = 0 foul_type = 0 temp_int = 0 WHILE temp_int < 16 balls_potted_this_turn[temp_int] = 0 ball_potted[temp_int] = 0 temp_int++ ENDWHILE turn_is_scratch = 0 game_over = 0 m_stage = 1 m_goals = 0 RETURN // ************************************************************************************************************* // GLOBAL FUNCTIONS - run continuously throughout lifetime of level // ************************************************************************************************************* pl_global_functions: IF DOES_OBJECT_EXIST table GET_OBJECT_COORDINATES table x y z CLEAR_AREA x y z 10.0 TRUE ENDIF IF DOES_OBJECT_EXIST P_ball[0] GET_OBJECT_SPEED P_ball[0] cue_ball_speed GET_OBJECT_ROTATION_VELOCITY P_ball[0] cue_ball_rot_x cue_ball_rot_y cue_ball_rot_z ENDIF // stop balls rolling when the reach a certain speed IF shot_timer > 2000 x = pool_stop_rotation_velocity * -1.0 temp_int = 0 WHILE temp_int < 16 IF DOES_OBJECT_EXIST p_ball[temp_int] GET_OBJECT_SPEED p_ball[temp_int] temp_float IF temp_float < pool_stop_velocity IF temp_float < 0.005 GET_OBJECT_ROTATION_VELOCITY p_ball[temp_int] temp_float temp_float2 temp_float3 temp_int2 = 0 IF temp_float > pool_stop_rotation_velocity OR temp_float < x temp_int2 = 1 ENDIF IF temp_float2 > pool_stop_rotation_velocity OR temp_float2 < x temp_int2 = 1 ENDIF IF temp_float3 > pool_stop_rotation_velocity OR temp_float3 < x temp_int2 = 1 ENDIF IF temp_int2 = 0 SET_OBJECT_VELOCITY p_ball[temp_int] 0.0 0.0 0.0 SET_OBJECT_ROTATION_VELOCITY p_ball[temp_int] 0.0 0.0 0.0 ball_is_stationary[temp_int] = 1 ELSE ball_is_stationary[temp_int] = 0 ENDIF ELSE GET_OBJECT_VELOCITY p_ball[temp_int] x y z x *= 0.9 y *= 0.9 z *= 0.9 SET_OBJECT_VELOCITY p_ball[temp_int] x y z ball_is_stationary[temp_int] = 0 ENDIF ELSE ball_is_stationary[temp_int] = 0 ENDIF ELSE ball_is_stationary[temp_int] = 1 ENDIF temp_int++ ENDWHILE ENDIF // update object anims IF NOT quit = 1 object_anim_char = player1_char object_anim_object = cue1 GOSUB pool_update_object_anims object_anim_char = player2_char object_anim_object = cue2 GOSUB pool_update_object_anims ENDIF // decrease pool ball spin cue_ball_spin_x *= 0.98 cue_ball_spin_y *= 0.98 // any potted balls - delete temp_int = 0 WHILE temp_int < 16 IF DOES_OBJECT_EXIST p_ball[temp_int] GET_OBJECT_COORDINATES p_ball[temp_int] x y z temp_float2 = pool_ball_radius * 2.0 temp_float = ball_tri_z - temp_float2 IF z < temp_float IF ball_potted[temp_int] = 0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION X Y Z SOUND_POOL_BALL_POT IF DOES_OBJECT_EXIST p_ball[temp_int] DELETE_OBJECT p_ball[temp_int] ENDIF ball_potted[temp_int] = 1 balls_potted_this_turn[temp_int] = 1 no_of_balls_potted_this_turn++ IF temp_int > 0 AND temp_int < 8 spots_potted++ ENDIF IF temp_int > 8 stripes_potted++ ENDIF ENDIF ENDIF ENDIF temp_int++ ENDWHILE // record cushion strikes and cue ball strikes LVAR_INT ball_strikes_cushion LVAR_INT first_moving_ball LVAR_INT cue_ball_hit_cushion_first temp_int = 0 WHILE temp_int < 16 IF DOES_OBJECT_EXIST p_ball[temp_int] // check if ball has hit cushion IF HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON p_ball[temp_int] WEAPONTYPE_FALL ball_strikes_cushion++ IF temp_int = 0 cue_ball_hit_cushion_first = 1 ENDIF ENDIF // check if ball has been struck by cue ball IF first_moving_ball = -1 IF temp_int > 0 IF HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON p_ball[temp_int] WEAPONTYPE_DROWNING first_moving_ball = temp_int // apply spin to cue ball IF cue_ball_hit_cushion_first = 0 IF DOES_OBJECT_EXIST p_ball[0] ADD_VELOCITY_RELATIVE_TO_OBJECT_VELOCITY p_ball[0] cue_ball_spin_x cue_ball_spin_y 0.0 ENDIF ENDIF ENDIF ENDIF ENDIF // check if ball has hit cushion and cue ball in same frame IF HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON p_ball[temp_int] WEAPONTYPE_RUNOVERBYCAR ball_strikes_cushion++ IF temp_int = 0 cue_ball_hit_cushion_first = 1 ENDIF IF first_moving_ball = -1 IF temp_int > 0 first_moving_ball = temp_int // apply spin to cue ball IF cue_ball_hit_cushion_first = 0 IF DOES_OBJECT_EXIST p_ball[0] ADD_VELOCITY_RELATIVE_TO_OBJECT_VELOCITY p_ball[0] cue_ball_spin_x cue_ball_spin_y 0.0 ENDIF ENDIF ENDIF ENDIF ENDIF // clear damage on this ball CLEAR_OBJECT_LAST_WEAPON_DAMAGE p_ball[temp_int] ENDIF temp_int++ ENDWHILE IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D IF output_text = 1 output_text = 0 WRITE_DEBUG output_text_off ELSE output_text = 1 WRITE_DEBUG output_text_on ENDIF ENDIF IF NOT DOES_OBJECT_EXIST table m_stage = 99 ENDIF // debug - opp health VAR_INT debug_char_health IF NOT IS_CHAR_DEAD opp GET_CHAR_HEALTH opp debug_char_health ENDIF IF IS_CHAR_DEAD opp m_stage = 99 ENDIF // quit IF quit = 1 DISPLAY_HUD TRUE // give refund IF pl_refund > 0 ADD_SCORE player1 pl_refund ENDIF IF NOT IS_CHAR_DEAD opp FREEZE_CHAR_POSITION opp FALSE REMOVE_DECISION_MAKER dm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH dm SET_CHAR_DECISION_MAKER opp dm SET_CHAR_COLLISION opp TRUE SET_CHAR_PROOFS opp FALSE FALSE FALSE FALSE FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE opp TRUE ENDIF SET_PED_DENSITY_MULTIPLIER 1.0 USE_TEXT_COMMANDS FALSE DISPLAY_RADAR TRUE temp_int = 0 WHILE temp_int < 16 MARK_OBJECT_AS_NO_LONGER_NEEDED p_ball[temp_int] temp_int++ ENDWHILE RESTORE_CAMERA_JUMPCUT IF DOES_OBJECT_EXIST aim_cue DELETE_OBJECT aim_cue ENDIF //SET_OBJECT_COLLISION table ON table_z += 0.1 SET_OBJECT_COORDINATES table table_x table_y table_z // set table max mins // 0.8557 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table -0.9600 -0.4900 0.70 pool_table_min_x pool_table_min_y z GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table 0.9600 0.4900 0.70 pool_table_max_x pool_table_max_y z IF pool_table_min_x > pool_table_max_x x = pool_table_min_x pool_table_min_x = pool_table_max_x pool_table_max_x = x ENDIF IF pool_table_min_y > pool_table_max_y y = pool_table_min_y pool_table_min_y = pool_table_max_y pool_table_max_y = y ENDIF SET_POOL_TABLE_COORDS pool_table_min_x pool_table_min_y z pool_table_max_x pool_table_max_y z // move pool balls up a bit temp_int = 0 WHILE temp_int < 16 IF DOES_OBJECT_EXIST p_ball[temp_int] GET_OBJECT_COORDINATES p_ball[temp_int] x y z z += 0.1 SET_OBJECT_COORDINATES p_ball[temp_int] x y z ENDIF temp_int++ ENDWHILE IF IS_PLAYER_PLAYING player1 //WRITE_DEBUG CLEARED_CHAR_TASKS CLEAR_CHAR_TASKS_IMMEDIATELY scplayer FREEZE_CHAR_POSITION scplayer FALSE SET_PLAYER_CONTROL player1 ON SET_CHAR_COLLISION scplayer TRUE ENDIF DELETE_OBJECT cue1 DELETE_OBJECT cue2 MARK_MODEL_AS_NO_LONGER_NEEDED K_POOLQ REMOVE_ANIMATION POOL ENDIF // quit IF m_stage = 99 AND quit = 0 USE_TEXT_COMMANDS FALSE DISPLAY_RADAR TRUE m_stage = 0 WAIT 500 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_I IF DOES_OBJECT_EXIST p_ball[0] FREEZE_OBJECT_POSITION p_ball[0] FALSE SET_OBJECT_COLLISION p_ball[0] FALSE SET_OBJECT_DYNAMIC p_ball[0] FALSE GENERATE_RANDOM_FLOAT_IN_RANGE -5.0 5.0 x GENERATE_RANDOM_FLOAT_IN_RANGE -5.0 5.0 y SET_OBJECT_VELOCITY p_ball[0] x y 0.0 SET_OBJECT_COLLISION p_ball[0] TRUE SET_OBJECT_DYNAMIC p_ball[0] TRUE ENDIF ENDIF RETURN // ************************************************************************************************************* // MISSION SPECIFIC GOSUBS // ************************************************************************************************************* // params LVAR_FLOAT proj_dist // workings LVAR_INT proj_stage LVAR_FLOAT proj_vec_x LVAR_FLOAT proj_vec_y LVAR_INT line_num LVAR_INT proj_cue[10] LVAR_INT proj_hit[5] LVAR_FLOAT proj_spacing LVAR_FLOAT proj_hit_dist proj_hit_dist2 proj_hit_dist3 // lines LVAR_FLOAT proj_line_x1[3] proj_line_y1[3] proj_line_x2[3] proj_line_y2[3] LVAR_FLOAT proj_lineB_x1[3] proj_lineB_y1[3] proj_lineB_x2[3] proj_lineB_y2[3] // hit ball LVAR_INT proj_hit_ball LVAR_FLOAT proj_hit_ball_dist LVAR_FLOAT proj_hit_ball_vec_x LVAR_FLOAT proj_hit_ball_vec_y LVAR_FLOAT proj_cue_path_x[4] LVAR_FLOAT proj_cue_path_y[4] LVAR_FLOAT proj_hit_start_x proj_hit_end_x pool_draw_projection: proj_stage = 0 proj_dist = 1.7 // only draw projection if ball is more than 2cm away from cushion IF DOES_OBJECT_EXIST p_ball[0] GET_OBJECT_COORDINATES p_ball[0] x y z temp_float = pool_table_min_x + 0.02 IF x < temp_float proj_stage = 99 ENDIF temp_float = pool_table_max_x - 0.02 IF x > temp_float proj_stage = 99 ENDIF temp_float = pool_table_min_y + 0.02 IF y < temp_float proj_stage = 99 ENDIF temp_float = pool_table_max_y - 0.02 IF y > temp_float proj_stage = 99 ENDIF ENDIF WHILE NOT proj_stage = 99 IF NOT projection_calculated = 0 proj_stage = 2 ENDIF IF proj_stage = 0 // get required initial coords IF DOES_OBJECT_EXIST p_ball[0] // clear all lines temp_int = 0 WHILE temp_int < 3 proj_line_x1[temp_int] = -999999.9 proj_line_y1[temp_int] = -999999.9 proj_line_x2[temp_int] = -999999.9 proj_line_y2[temp_int] = -999999.9 proj_lineB_x1[temp_int] = -999999.9 proj_lineB_y1[temp_int] = -999999.9 proj_lineB_x2[temp_int] = -999999.9 proj_lineB_y2[temp_int] = -999999.9 temp_int++ ENDWHILE proj_hit_dist = proj_dist proj_hit_dist = proj_dist proj_spacing = proj_dist / 10.0 GET_OBJECT_HEADING p_ball[0] heading SET_OBJECT_ROTATION p_ball[0] 0.0 0.0 heading GET_OBJECT_COORDINATES p_ball[0] x y z // adjust coordinates so they're always safe IF x < pool_table_min_x x = pool_table_min_x + 0.01 ENDIF IF x > pool_table_max_x x = pool_table_max_x - 0.01 ENDIF IF y < pool_table_min_y y = pool_table_min_y + 0.01 ENDIF IF y > pool_table_max_y y = pool_table_max_y - 0.01 ENDIF GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[0] 0.0 1.0 0.0 x2 y2 z2 proj_vec_x = x2 - x proj_vec_y = y2 - y GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 temp_float proj_vec_x /= temp_float proj_vec_y /= temp_float proj_vec_x *= proj_hit_dist proj_vec_y *= proj_hit_dist p_x1 = x p_y1 = y proj_line_x1[0] = x proj_line_y1[0] = y path_dest_x = x + proj_vec_x path_dest_y = y + proj_vec_y line_num = 0 proj_hit_ball = 0 ignore_cushion = 0 proj_stage++ ENDIF ENDIF IF proj_stage = 1 got_first_hit_ball = 0 // cue ball WHILE proj_hit_dist > 0.0 AND line_num < 3 //WRITE_DEBUG_WITH_INT line_num line_num GOSUB is_path_closest_clear proj_line_x2[line_num] = new_end_point_x proj_line_y2[line_num] = new_end_point_y temp_int = line_num + 1 IF temp_int < 3 proj_line_x1[temp_int] = new_end_point_x proj_line_y1[temp_int] = new_end_point_y ENDIF GET_DISTANCE_BETWEEN_COORDS_2D proj_line_x1[line_num] proj_line_y1[line_num] proj_line_x2[line_num] proj_line_y2[line_num] temp_float proj_hit_dist -= temp_float // reduce distance if something is hit IF path_is_clear = 0 IF NOT obstructing_ball = -1 proj_hit_dist *= 0.5 ELSE proj_hit_dist *= 0.75 ENDIF // store if another ball is hit IF proj_hit_ball = 0 IF NOT obstructing_ball = -1 proj_hit_ball = obstructing_ball proj_hit_ball_dist = proj_hit_dist proj_hit_ball_vec_x = hit_ball_bounce_vec_x proj_hit_ball_vec_y = hit_ball_bounce_vec_y ENDIF ENDIF // work out the next path p_x1 = new_end_point_x p_y1 = new_end_point_y new_bounce_vec_x *= proj_hit_dist new_bounce_vec_y *= proj_hit_dist path_dest_x = p_x1 + new_bounce_vec_x path_dest_y = p_y1 + new_bounce_vec_y line_num++ ELSE // end line_num = 3 ENDIF ENDWHILE projection_calculated++ proj_stage++ ENDIF // actually draw lines IF proj_stage = 2 LVAR_FLOAT proj_offset_dist LVAR_FLOAT proj_offset_speed LVAR_FLOAT proj_offset_vec_x LVAR_FLOAT proj_offset_vec_y LVAR_FLOAT proj_next_offset // cue ball line LVAR_INT proj_cue_ball_objects[10] LVAR_INT proj_used_cue_balls temp_int = 0 WHILE temp_int < 10 IF DOES_OBJECT_EXIST proj_cue_ball_objects[temp_int] DELETE_OBJECT proj_cue_ball_objects[temp_int] ENDIF CREATE_OBJECT K_POOLBALLCUE 0.0 0.0 0.0 proj_cue_ball_objects[temp_int] SET_OBJECT_COLLISION proj_cue_ball_objects[temp_int] FALSE SET_OBJECT_SCALE proj_cue_ball_objects[temp_int] 0.3 temp_int++ ENDWHILE proj_used_cue_balls = 0 proj_offset_speed = 0.005 proj_offset_dist +=@ proj_offset_speed IF proj_offset_dist > proj_spacing proj_offset_dist -= proj_spacing ENDIF proj_next_offset = 0.0 // travel along lines temp_int = 0 WHILE temp_int < 3 IF proj_line_x1[temp_int] > -9999.9 AND proj_line_y1[temp_int] > -9999.9 AND proj_line_x2[temp_int] > -9999.9 AND proj_line_y2[temp_int] > -9999.9 GET_DISTANCE_BETWEEN_COORDS_2D proj_line_x1[temp_int] proj_line_y1[temp_int] proj_line_x2[temp_int] proj_line_y2[temp_int] temp_float vec_x = proj_line_x2[temp_int] - proj_line_x1[temp_int] vec_y = proj_line_y2[temp_int] - proj_line_y1[temp_int] temp_float2 = temp_float / proj_spacing temp_int2 =# temp_float2 temp_int2 += 1 vec_x /= temp_float vec_y /= temp_float proj_offset_vec_x = vec_x proj_offset_vec_y = vec_y proj_offset_vec_x *= proj_offset_dist proj_offset_vec_y *= proj_offset_dist vec_x *= proj_spacing vec_y *= proj_spacing IF DOES_OBJECT_EXIST p_ball[0] GET_OBJECT_COORDINATES p_ball[0] x y z // adjust coordinates so they're always safe IF x < pool_table_min_x x = pool_table_min_x + 0.01 ENDIF IF x > pool_table_max_x x = pool_table_max_x - 0.01 ENDIF IF y < pool_table_min_y y = pool_table_min_y + 0.01 ENDIF IF y > pool_table_max_y y = pool_table_max_y - 0.01 ENDIF ENDIF last_drawn_aim_ball_x = proj_line_x1[temp_int] - vec_x last_drawn_aim_ball_y = proj_line_y1[temp_int] - vec_y last_drawn_aim_ball_x += proj_offset_vec_x last_drawn_aim_ball_y += proj_offset_vec_y temp_int2 += proj_used_cue_balls // place balls WHILE proj_used_cue_balls < temp_int2 AND proj_used_cue_balls < 10 x = last_drawn_aim_ball_x + vec_x y = last_drawn_aim_ball_y + vec_y last_drawn_aim_ball_x = x last_drawn_aim_ball_y = y IF DOES_OBJECT_EXIST proj_cue_ball_objects[proj_used_cue_balls] IF x > pool_table_max_x OR x < pool_table_min_x OR y > pool_table_max_y OR y < pool_table_min_y SET_OBJECT_VISIBLE proj_cue_ball_objects[proj_used_cue_balls] FALSE SET_OBJECT_COORDINATES proj_cue_ball_objects[proj_used_cue_balls] x y z ELSE SET_OBJECT_VISIBLE proj_cue_ball_objects[proj_used_cue_balls] TRUE SET_OBJECT_COORDINATES proj_cue_ball_objects[proj_used_cue_balls] x y z ENDIF ENDIF proj_used_cue_balls++ ENDWHILE ENDIF temp_int++ ENDWHILE proj_stage++ ENDIF // draw hit ball lines IF proj_stage = 3 proj_stage = 99 ENDIF ENDWHILE RETURN ////////////////////////////////////////////////////////////////////////////////////////////////////////// // GOSUB PLAY_OBJECT_ANIMS ////////////////////////////////////////////////////////////////////////// LVAR_INT object_anim_char LVAR_INT object_anim_object LVAR_INT chalk_cue_audio_num LVAR_INT audio_event_chalk_cue[2] pool_update_object_anims: IF NOT IS_CHAR_DEAD object_anim_char IF object_anim_char = scplayer chalk_cue_audio_num = 0 ELSE chalk_cue_audio_num = 1 ENDIF // xlong shot IF IS_CHAR_PLAYING_ANIM object_anim_char pool_xlong_shot IF NOT IS_CHAR_HOLDING_OBJECT object_anim_char object_anim_object TASK_PICK_UP_OBJECT object_anim_char object_anim_object 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL TRUE ENDIF GET_CHAR_ANIM_CURRENT_TIME object_anim_char pool_xlong_shot temp_float IF IS_OBJECT_PLAYING_ANIM object_anim_object pool_xlong_shot_O SET_OBJECT_ANIM_CURRENT_TIME object_anim_object pool_xlong_shot_O temp_float ELSE IF PLAY_OBJECT_ANIM object_anim_object pool_xlong_shot_O POOL 10000.0 FALSE TRUE SET_OBJECT_ANIM_SPEED object_anim_object pool_xlong_shot_O 0.0 ENDIF ENDIF ENDIF // xlong shot start IF IS_CHAR_PLAYING_ANIM object_anim_char pool_xlong_start AND NOT IS_CHAR_PLAYING_ANIM object_anim_char pool_xlong_shot IF NOT IS_CHAR_HOLDING_OBJECT object_anim_char object_anim_object TASK_PICK_UP_OBJECT object_anim_char object_anim_object 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL TRUE ENDIF GET_CHAR_ANIM_CURRENT_TIME object_anim_char pool_xlong_start temp_float IF IS_OBJECT_PLAYING_ANIM object_anim_object pool_xlong_start_O SET_OBJECT_ANIM_CURRENT_TIME object_anim_object pool_xlong_start_O temp_float ELSE IF PLAY_OBJECT_ANIM object_anim_object pool_xlong_start_O POOL 10000.0 FALSE TRUE SET_OBJECT_ANIM_SPEED object_anim_object pool_xlong_start_O 0.0 ENDIF ENDIF ENDIF // long shot IF IS_CHAR_PLAYING_ANIM object_anim_char pool_long_shot IF NOT IS_CHAR_HOLDING_OBJECT object_anim_char object_anim_object TASK_PICK_UP_OBJECT object_anim_char object_anim_object 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL TRUE ENDIF GET_CHAR_ANIM_CURRENT_TIME object_anim_char pool_long_shot temp_float IF IS_OBJECT_PLAYING_ANIM object_anim_object pool_long_shot_O SET_OBJECT_ANIM_CURRENT_TIME object_anim_object pool_long_shot_O temp_float ELSE IF PLAY_OBJECT_ANIM object_anim_object pool_long_shot_O POOL 10000.0 FALSE TRUE SET_OBJECT_ANIM_SPEED object_anim_object pool_long_shot_O 0.0 ENDIF ENDIF ENDIF // long shot start IF IS_CHAR_PLAYING_ANIM object_anim_char pool_long_start AND NOT IS_CHAR_PLAYING_ANIM object_anim_char pool_long_shot IF NOT IS_CHAR_HOLDING_OBJECT object_anim_char object_anim_object TASK_PICK_UP_OBJECT object_anim_char object_anim_object 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL TRUE ENDIF GET_CHAR_ANIM_CURRENT_TIME object_anim_char pool_long_start temp_float IF IS_OBJECT_PLAYING_ANIM object_anim_object pool_long_start_O SET_OBJECT_ANIM_CURRENT_TIME object_anim_object pool_long_start_O temp_float ELSE IF PLAY_OBJECT_ANIM object_anim_object pool_long_start_O POOL 10000.0 FALSE TRUE SET_OBJECT_ANIM_SPEED object_anim_object pool_long_start_O 0.0 ENDIF ENDIF ENDIF // med shot IF IS_CHAR_PLAYING_ANIM object_anim_char pool_med_shot IF NOT IS_CHAR_HOLDING_OBJECT object_anim_char object_anim_object TASK_PICK_UP_OBJECT object_anim_char object_anim_object 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL TRUE ENDIF GET_CHAR_ANIM_CURRENT_TIME object_anim_char pool_med_shot temp_float IF IS_OBJECT_PLAYING_ANIM object_anim_object pool_med_shot_O SET_OBJECT_ANIM_CURRENT_TIME object_anim_object pool_med_shot_O temp_float ELSE IF PLAY_OBJECT_ANIM object_anim_object pool_med_shot_O POOL 10000.0 FALSE TRUE SET_OBJECT_ANIM_SPEED object_anim_object pool_med_shot_O 0.0 ENDIF ENDIF ENDIF // med shot start IF IS_CHAR_PLAYING_ANIM object_anim_char pool_med_start AND NOT IS_CHAR_PLAYING_ANIM object_anim_char pool_med_shot IF NOT IS_CHAR_HOLDING_OBJECT object_anim_char object_anim_object TASK_PICK_UP_OBJECT object_anim_char object_anim_object 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL TRUE ENDIF GET_CHAR_ANIM_CURRENT_TIME object_anim_char pool_med_start temp_float IF IS_OBJECT_PLAYING_ANIM object_anim_object pool_med_start_O SET_OBJECT_ANIM_CURRENT_TIME object_anim_object pool_med_start_O temp_float ELSE IF PLAY_OBJECT_ANIM object_anim_object pool_med_start_O POOL 10000.0 FALSE TRUE SET_OBJECT_ANIM_SPEED object_anim_object pool_med_start_O 0.0 ENDIF ENDIF ENDIF // short shot IF IS_CHAR_PLAYING_ANIM object_anim_char pool_short_shot IF NOT IS_CHAR_HOLDING_OBJECT object_anim_char object_anim_object TASK_PICK_UP_OBJECT object_anim_char object_anim_object 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL TRUE ENDIF GET_CHAR_ANIM_CURRENT_TIME object_anim_char pool_short_shot temp_float IF IS_OBJECT_PLAYING_ANIM object_anim_object pool_short_shot_O SET_OBJECT_ANIM_CURRENT_TIME object_anim_object pool_short_shot_O temp_float ELSE IF PLAY_OBJECT_ANIM object_anim_object pool_short_shot_O POOL 10000.0 FALSE TRUE SET_OBJECT_ANIM_SPEED object_anim_object pool_short_shot_O 0.0 ENDIF ENDIF ENDIF // short shot start IF IS_CHAR_PLAYING_ANIM object_anim_char pool_short_start AND NOT IS_CHAR_PLAYING_ANIM object_anim_char pool_short_shot IF NOT IS_CHAR_HOLDING_OBJECT object_anim_char object_anim_object TASK_PICK_UP_OBJECT object_anim_char object_anim_object 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL TRUE ENDIF GET_CHAR_ANIM_CURRENT_TIME object_anim_char pool_short_start temp_float IF IS_OBJECT_PLAYING_ANIM object_anim_object pool_short_start_O SET_OBJECT_ANIM_CURRENT_TIME object_anim_object pool_short_start_O temp_float ELSE IF PLAY_OBJECT_ANIM object_anim_object pool_short_start_O POOL 10000.0 FALSE TRUE SET_OBJECT_ANIM_SPEED object_anim_object pool_short_start_O 0.0 ENDIF ENDIF ENDIF // chalk cue IF IS_CHAR_PLAYING_ANIM object_anim_char POOL_ChalkCue IF NOT IS_CHAR_HOLDING_OBJECT object_anim_char object_anim_object TASK_PICK_UP_OBJECT object_anim_char object_anim_object 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL TRUE ENDIF GET_CHAR_ANIM_CURRENT_TIME object_anim_char POOL_ChalkCue temp_float IF temp_float > 0.28 IF NOT audio_event_chalk_cue[chalk_cue_audio_num] = 1 GET_OBJECT_COORDINATES object_anim_object x y z REPORT_MISSION_AUDIO_EVENT_AT_POSITION X Y Z SOUND_POOL_CHALK_CUE audio_event_chalk_cue[chalk_cue_audio_num] = 1 ENDIF ENDIF ELSE IF NOT audio_event_chalk_cue[chalk_cue_audio_num] = 0 audio_event_chalk_cue[chalk_cue_audio_num] = 0 ENDIF ENDIF // idle stance IF IS_CHAR_PLAYING_ANIM object_anim_char pool_idle_stance IF NOT IS_CHAR_HOLDING_OBJECT object_anim_char object_anim_object TASK_PICK_UP_OBJECT object_anim_char object_anim_object 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL TRUE ENDIF ENDIF // walk IF IS_CHAR_PLAYING_ANIM object_anim_char POOL_Walk IF NOT IS_CHAR_HOLDING_OBJECT object_anim_char object_anim_object TASK_PICK_UP_OBJECT object_anim_char object_anim_object 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL TRUE ENDIF ENDIF // walk start IF IS_CHAR_PLAYING_ANIM object_anim_char POOL_Walk_start IF NOT IS_CHAR_HOLDING_OBJECT object_anim_char object_anim_object TASK_PICK_UP_OBJECT object_anim_char object_anim_object 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL TRUE ENDIF ENDIF // if ped is just doing an idle stance, make him at least stand with pool cue temp_int = 0 IF IS_CHAR_PLAYING_ANIM object_anim_char idle_stance AND NOT current_char = object_anim_char temp_int = 1 ENDIF IF IS_CHAR_PLAYING_ANIM object_anim_char idle_stance AND m_goals = 6 temp_int = 1 ENDIF IF temp_int = 1 GET_SCRIPT_TASK_STATUS object_anim_char PERFORM_SEQUENCE_TASK temp_int2 IF temp_int2 = FINISHED_TASK DROP_OBJECT object_anim_char FALSE TASK_PICK_UP_OBJECT object_anim_char object_anim_object 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL TRUE OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 POOL_Idle_Stance POOL 4.0 TRUE TRUE TRUE FALSE -1 // WRITE_DEBUG idle_stance5 //TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 POOL_ChalkCue POOL 4.0 FALSE TRUE TRUE FALSE -1 //TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 POOL_Idle_Stance POOL 4.0 FALSE TRUE TRUE TRUE 5000 // WRITE_DEBUG idle_stance6 CLOSE_SEQUENCE_TASK temp_seq IF quit = 0 PERFORM_SEQUENCE_TASK object_anim_char temp_seq ENDIF CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF ENDIF RETURN ////////////////////////////////////////////////////////////////////////////////////////////////////////// // GOSUB FIND_BEST_SHOT ///////////////////////////////////////////////////////////////////////////// // params // return LVAR_FLOAT ai_shot_heading LVAR_FLOAT ai_shot_power LVAR_FLOAT ai_shot_angle // used for determining whether to put spin on ball // working LVAR_INT best_shot_int best_shot_int2 LVAR_INT this_ball_colour LVAR_FLOAT final_shot_x final_shot_y LVAR_FLOAT final_shot_distance LVAR_FLOAT b_x1 b_y1 b_z1 LVAR_FLOAT b_x2 b_y2 b_z2 LVAR_FLOAT b_x3 b_y3 b_z3 LVAR_INT shot_impossible LVAR_FLOAT ball_01_score_pocket[6] LVAR_FLOAT ball_02_score_pocket[6] LVAR_FLOAT ball_03_score_pocket[6] LVAR_FLOAT ball_04_score_pocket[6] LVAR_FLOAT ball_05_score_pocket[6] LVAR_FLOAT ball_06_score_pocket[6] LVAR_FLOAT ball_07_score_pocket[6] LVAR_FLOAT ball_08_score_pocket[6] LVAR_FLOAT ball_09_score_pocket[6] LVAR_FLOAT ball_10_score_pocket[6] LVAR_FLOAT ball_11_score_pocket[6] LVAR_FLOAT ball_12_score_pocket[6] LVAR_FLOAT ball_13_score_pocket[6] LVAR_FLOAT ball_14_score_pocket[6] LVAR_FLOAT ball_15_score_pocket[6] // scores LVAR_FLOAT cue_dist_score LVAR_FLOAT pocket_path_score LVAR_FLOAT cue_path_score LVAR_FLOAT pocket_dist_score LVAR_FLOAT pocket_angle_score LVAR_FLOAT shot_total_score find_best_shot: final_shot_x = 99999.9 final_shot_y = 99999.9 final_shot_distance = 99999.9 ai_shot_heading = 99999.9 ai_shot_angle = 0.0 ai_shot_power = 99999.9 // A. clear scores best_shot_int = 0 WHILE best_shot_int < 6 ball_01_score_pocket[best_shot_int] = 0.0 ball_02_score_pocket[best_shot_int] = 0.0 ball_03_score_pocket[best_shot_int] = 0.0 ball_04_score_pocket[best_shot_int] = 0.0 ball_05_score_pocket[best_shot_int] = 0.0 ball_06_score_pocket[best_shot_int] = 0.0 ball_07_score_pocket[best_shot_int] = 0.0 ball_08_score_pocket[best_shot_int] = 0.0 ball_09_score_pocket[best_shot_int] = 0.0 ball_10_score_pocket[best_shot_int] = 0.0 ball_11_score_pocket[best_shot_int] = 0.0 ball_12_score_pocket[best_shot_int] = 0.0 ball_13_score_pocket[best_shot_int] = 0.0 ball_14_score_pocket[best_shot_int] = 0.0 ball_15_score_pocket[best_shot_int] = 0.0 best_shot_int++ ENDWHILE // B. For each ball work out a score for each pocket best_shot_int = 1 // don't need to do the cue ball WHILE best_shot_int < 16 WAIT 0 shot_impossible = 0 IF DOES_OBJECT_EXIST p_ball[best_shot_int] IF ball_potted[best_shot_int] = 0 // get colour of ball we're aiming at IF best_shot_int < 8 this_ball_colour = POOL_COLOUR_SPOTS ELSE IF best_shot_int = 8 this_ball_colour = POOL_COLOUR_BLACK ELSE this_ball_colour = POOL_COLOUR_STRIPES ENDIF ENDIF // check if ball we're aiming at is same as we're supposed to be aiming at IF this_ball_colour = turn_colour OR turn_colour = POOL_COLOUR_NONE // special case for when no colour is assigned (ie. off the break) IF turn_colour = POOL_COLOUR_NONE AND this_ball_colour = POOL_COLOUR_BLACK shot_impossible = 1 ELSE // NOW COMES THE TRICKY PART!!! // for each of the remaining balls a score must be figured out for each pocket IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "BALL " SAVE_INT_TO_DEBUG_FILE best_shot_int ENDIF best_shot_int2 = 0 WHILE best_shot_int2 < 6 IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "POCKET " SAVE_INT_TO_DEBUG_FILE best_shot_int2 ENDIF angle_ball = p_ball[best_shot_int] angle_pocket = best_shot_int2 GOSUB is_ball_pottable_into_pocket IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE " REQUIRED ANGLE = " SAVE_FLOAT_TO_DEBUG_FILE required_angle_of_shot ENDIF IF angle_is_possible = 1 // CALCULATE SCORES // 1. find if pocket path is clear and give score path_ball = p_ball[best_shot_int] path_ball2 = 0 path_dest_x = pocket_x[best_shot_int2] path_dest_y = pocket_y[best_shot_int2] GOSUB is_path_clear IF path_is_clear = 1 pocket_path_score = 1.0 ELSE IF obstructing_colour = this_ball_colour pocket_path_score = 0.20 ELSE pocket_path_score = 0.10 ENDIF ENDIF IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE " pocket_path_score = " SAVE_FLOAT_TO_DEBUG_FILE pocket_path_score ENDIF // 3. find pocket distance score GET_OBJECT_COORDINATES p_ball[best_shot_int] x y z GET_DISTANCE_BETWEEN_COORDS_2D x y pocket_x[best_shot_int2] pocket_y[best_shot_int2] temp_float pocket_dist_score = 2.3 - temp_float pocket_dist_score /= 2.3 IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE " pocket_dist_score = " SAVE_FLOAT_TO_DEBUG_FILE pocket_dist_score ENDIF // 4. get angle score pocket_angle_score = 90.0 - required_angle_of_shot pocket_angle_score /= 90.0 IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE " pocket_angle_score = " SAVE_FLOAT_TO_DEBUG_FILE pocket_angle_score ENDIF // 5. find if path to required contact point is possible path_ball = p_ball[0] path_ball2 = p_ball[best_shot_int] path_dest_x = angle_x1 path_dest_y = angle_y1 GOSUB is_path_clear IF path_is_clear = 1 cue_path_score = 1.0 ELSE IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE " (path not clear from cue ball to this ball) " ENDIF IF turn_colour = POOL_COLOUR_NONE cue_path_score = 0.05 ELSE IF obstructing_colour = turn_colour cue_path_score = 0.05 ELSE cue_path_score = -1000.0 ENDIF ENDIF ENDIF IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE " cue_path_score = " SAVE_FLOAT_TO_DEBUG_FILE cue_path_score ENDIF // 6. Work out the cue distance score GET_OBJECT_COORDINATES p_ball[0] x y z GET_DISTANCE_BETWEEN_COORDS_2D x y angle_x1 angle_y1 temp_float // optimum distance to cue ball is 0.3m IF temp_float < 0.3 temp_float2 = 0.3 - temp_float temp_float = 0.3 + temp_float2 ENDIF temp_float += -0.3 temp_float2 = 2.0 - temp_float temp_float2 /= 2.0 cue_dist_score = temp_float2 IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE " cue_dist_score = " SAVE_FLOAT_TO_DEBUG_FILE cue_dist_score ENDIF // 7. CALCULATE TOTAL SCORE FOR SHOT (may require some tweaking to each categories weighting) pocket_path_score *= 1.0 cue_path_score *= 1.0 cue_dist_score *= 0.3 pocket_dist_score *= 0.4 pocket_angle_score *= 0.8 shot_total_score = pocket_path_score shot_total_score += cue_path_score shot_total_score += cue_dist_score shot_total_score += pocket_dist_score shot_total_score += pocket_angle_score shot_total_score /= 5.0 // 8. save the score SWITCH best_shot_int CASE 1 ball_01_score_pocket[best_shot_int2] = shot_total_score BREAK CASE 2 ball_02_score_pocket[best_shot_int2] = shot_total_score BREAK CASE 3 ball_03_score_pocket[best_shot_int2] = shot_total_score BREAK CASE 4 ball_04_score_pocket[best_shot_int2] = shot_total_score BREAK CASE 5 ball_05_score_pocket[best_shot_int2] = shot_total_score BREAK CASE 6 ball_06_score_pocket[best_shot_int2] = shot_total_score BREAK CASE 7 ball_07_score_pocket[best_shot_int2] = shot_total_score BREAK CASE 8 ball_08_score_pocket[best_shot_int2] = shot_total_score BREAK CASE 9 ball_09_score_pocket[best_shot_int2] = shot_total_score BREAK CASE 10 ball_10_score_pocket[best_shot_int2] = shot_total_score BREAK CASE 11 ball_11_score_pocket[best_shot_int2] = shot_total_score BREAK CASE 12 ball_12_score_pocket[best_shot_int2] = shot_total_score BREAK CASE 13 ball_13_score_pocket[best_shot_int2] = shot_total_score BREAK CASE 14 ball_14_score_pocket[best_shot_int2] = shot_total_score BREAK CASE 15 ball_15_score_pocket[best_shot_int2] = shot_total_score BREAK ENDSWITCH ELSE // it's not possible to make shot as angle > 90.0 SWITCH best_shot_int CASE 1 ball_01_score_pocket[best_shot_int2] = -1.0 BREAK CASE 2 ball_02_score_pocket[best_shot_int2] = -1.0 BREAK CASE 3 ball_03_score_pocket[best_shot_int2] = -1.0 BREAK CASE 4 ball_04_score_pocket[best_shot_int2] = -1.0 BREAK CASE 5 ball_05_score_pocket[best_shot_int2] = -1.0 BREAK CASE 6 ball_06_score_pocket[best_shot_int2] = -1.0 BREAK CASE 7 ball_07_score_pocket[best_shot_int2] = -1.0 BREAK CASE 8 ball_08_score_pocket[best_shot_int2] = -1.0 BREAK CASE 9 ball_09_score_pocket[best_shot_int2] = -1.0 BREAK CASE 10 ball_10_score_pocket[best_shot_int2] = -1.0 BREAK CASE 11 ball_11_score_pocket[best_shot_int2] = -1.0 BREAK CASE 12 ball_12_score_pocket[best_shot_int2] = -1.0 BREAK CASE 13 ball_13_score_pocket[best_shot_int2] = -1.0 BREAK CASE 14 ball_14_score_pocket[best_shot_int2] = -1.0 BREAK CASE 15 ball_15_score_pocket[best_shot_int2] = -1.0 BREAK ENDSWITCH ENDIF best_shot_int2++ ENDWHILE ENDIF ELSE shot_impossible = 1 ENDIF ELSE shot_impossible = 1 ENDIF ELSE shot_impossible = 1 ENDIF // this ball is impossible set all it's pocket scores to -1.0 IF shot_impossible = 1 SWITCH best_shot_int CASE 1 best_shot_int2 = 0 WHILE best_shot_int2 < 6 ball_01_score_pocket[best_shot_int2] = -1.0 best_shot_int2++ ENDWHILE BREAK CASE 2 best_shot_int2 = 0 WHILE best_shot_int2 < 6 ball_02_score_pocket[best_shot_int2] = -1.0 best_shot_int2++ ENDWHILE BREAK CASE 3 best_shot_int2 = 0 WHILE best_shot_int2 < 6 ball_03_score_pocket[best_shot_int2] = -1.0 best_shot_int2++ ENDWHILE BREAK CASE 4 best_shot_int2 = 0 WHILE best_shot_int2 < 6 ball_04_score_pocket[best_shot_int2] = -1.0 best_shot_int2++ ENDWHILE BREAK CASE 5 best_shot_int2 = 0 WHILE best_shot_int2 < 6 ball_05_score_pocket[best_shot_int2] = -1.0 best_shot_int2++ ENDWHILE BREAK CASE 6 best_shot_int2 = 0 WHILE best_shot_int2 < 6 ball_06_score_pocket[best_shot_int2] = -1.0 best_shot_int2++ ENDWHILE BREAK CASE 7 best_shot_int2 = 0 WHILE best_shot_int2 < 6 ball_07_score_pocket[best_shot_int2] = -1.0 best_shot_int2++ ENDWHILE BREAK CASE 8 best_shot_int2 = 0 WHILE best_shot_int2 < 6 ball_08_score_pocket[best_shot_int2] = -1.0 best_shot_int2++ ENDWHILE BREAK CASE 9 best_shot_int2 = 0 WHILE best_shot_int2 < 6 ball_09_score_pocket[best_shot_int2] = -1.0 best_shot_int2++ ENDWHILE BREAK CASE 10 best_shot_int2 = 0 WHILE best_shot_int2 < 6 ball_10_score_pocket[best_shot_int2] = -1.0 best_shot_int2++ ENDWHILE BREAK CASE 11 best_shot_int2 = 0 WHILE best_shot_int2 < 6 ball_11_score_pocket[best_shot_int2] = -1.0 best_shot_int2++ ENDWHILE BREAK CASE 12 best_shot_int2 = 0 WHILE best_shot_int2 < 6 ball_12_score_pocket[best_shot_int2] = -1.0 best_shot_int2++ ENDWHILE BREAK CASE 13 best_shot_int2 = 0 WHILE best_shot_int2 < 6 ball_13_score_pocket[best_shot_int2] = -1.0 best_shot_int2++ ENDWHILE BREAK CASE 14 best_shot_int2 = 0 WHILE best_shot_int2 < 6 ball_14_score_pocket[best_shot_int2] = -1.0 best_shot_int2++ ENDWHILE BREAK CASE 15 best_shot_int2 = 0 WHILE best_shot_int2 < 6 ball_15_score_pocket[best_shot_int2] = -1.0 best_shot_int2++ ENDWHILE BREAK ENDSWITCH ENDIF // shot_impossible = 1 best_shot_int++ ENDWHILE // C. Now we've got scores for a plethora of possible shots, find the best one LVAR_FLOAT highest_score LVAR_INT highest_score_ball LVAR_INT highest_score_pocket highest_score = -9999.9 highest_score_ball = -1 highest_score_pocket = -1 best_shot_int = 0 IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "Pool AI potential shot scores" ENDIF WHILE best_shot_int < 6 IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "Pocket" SAVE_INT_TO_DEBUG_FILE best_shot_int SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "ball 01 = " SAVE_FLOAT_TO_DEBUG_FILE ball_01_score_pocket[best_shot_int] ENDIF IF ball_01_score_pocket[best_shot_int] > highest_score highest_score = ball_01_score_pocket[best_shot_int] highest_score_ball = 1 highest_score_pocket = best_shot_int ENDIF IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "ball 02 = " SAVE_FLOAT_TO_DEBUG_FILE ball_02_score_pocket[best_shot_int] ENDIF IF ball_02_score_pocket[best_shot_int] > highest_score highest_score = ball_02_score_pocket[best_shot_int] highest_score_ball = 2 highest_score_pocket = best_shot_int ENDIF IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "ball 03 = " SAVE_FLOAT_TO_DEBUG_FILE ball_03_score_pocket[best_shot_int] ENDIF IF ball_03_score_pocket[best_shot_int] > highest_score highest_score = ball_03_score_pocket[best_shot_int] highest_score_ball = 3 highest_score_pocket = best_shot_int ENDIF IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "ball 04 = " SAVE_FLOAT_TO_DEBUG_FILE ball_04_score_pocket[best_shot_int] ENDIF IF ball_04_score_pocket[best_shot_int] > highest_score highest_score = ball_04_score_pocket[best_shot_int] highest_score_ball = 4 highest_score_pocket = best_shot_int ENDIF IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "ball 05 = " SAVE_FLOAT_TO_DEBUG_FILE ball_05_score_pocket[best_shot_int] ENDIF IF ball_05_score_pocket[best_shot_int] > highest_score highest_score = ball_05_score_pocket[best_shot_int] highest_score_ball = 5 highest_score_pocket = best_shot_int ENDIF IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "ball 06 = " SAVE_FLOAT_TO_DEBUG_FILE ball_06_score_pocket[best_shot_int] ENDIF IF ball_06_score_pocket[best_shot_int] > highest_score highest_score = ball_06_score_pocket[best_shot_int] highest_score_ball = 6 highest_score_pocket = best_shot_int ENDIF IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "ball 07 = " SAVE_FLOAT_TO_DEBUG_FILE ball_07_score_pocket[best_shot_int] ENDIF IF ball_07_score_pocket[best_shot_int] > highest_score highest_score = ball_07_score_pocket[best_shot_int] highest_score_ball = 7 highest_score_pocket = best_shot_int ENDIF IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "ball 08 = " SAVE_FLOAT_TO_DEBUG_FILE ball_08_score_pocket[best_shot_int] ENDIF IF ball_08_score_pocket[best_shot_int] > highest_score highest_score = ball_08_score_pocket[best_shot_int] highest_score_ball = 8 highest_score_pocket = best_shot_int ENDIF IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "ball 09 = " SAVE_FLOAT_TO_DEBUG_FILE ball_09_score_pocket[best_shot_int] ENDIF IF ball_09_score_pocket[best_shot_int] > highest_score highest_score = ball_09_score_pocket[best_shot_int] highest_score_ball = 9 highest_score_pocket = best_shot_int ENDIF IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "ball 10 = " SAVE_FLOAT_TO_DEBUG_FILE ball_10_score_pocket[best_shot_int] ENDIF IF ball_10_score_pocket[best_shot_int] > highest_score highest_score = ball_10_score_pocket[best_shot_int] highest_score_ball = 10 highest_score_pocket = best_shot_int ENDIF IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "ball 11 = " SAVE_FLOAT_TO_DEBUG_FILE ball_11_score_pocket[best_shot_int] ENDIF IF ball_11_score_pocket[best_shot_int] > highest_score highest_score = ball_11_score_pocket[best_shot_int] highest_score_ball = 11 highest_score_pocket = best_shot_int ENDIF IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "ball 12 = " SAVE_FLOAT_TO_DEBUG_FILE ball_12_score_pocket[best_shot_int] ENDIF IF ball_12_score_pocket[best_shot_int] > highest_score highest_score = ball_12_score_pocket[best_shot_int] highest_score_ball = 12 highest_score_pocket = best_shot_int ENDIF IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "ball 13 = " SAVE_FLOAT_TO_DEBUG_FILE ball_13_score_pocket[best_shot_int] ENDIF IF ball_13_score_pocket[best_shot_int] > highest_score highest_score = ball_13_score_pocket[best_shot_int] highest_score_ball = 13 highest_score_pocket = best_shot_int ENDIF IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "ball 14 = " SAVE_FLOAT_TO_DEBUG_FILE ball_14_score_pocket[best_shot_int] ENDIF IF ball_14_score_pocket[best_shot_int] > highest_score highest_score = ball_14_score_pocket[best_shot_int] highest_score_ball = 14 highest_score_pocket = best_shot_int ENDIF IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "ball 15 = " SAVE_FLOAT_TO_DEBUG_FILE ball_15_score_pocket[best_shot_int] ENDIF IF ball_15_score_pocket[best_shot_int] > highest_score highest_score = ball_15_score_pocket[best_shot_int] highest_score_ball = 15 highest_score_pocket = best_shot_int ENDIF IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE ENDIF best_shot_int++ ENDWHILE // work out power for shot IF highest_score > 0.0 GET_OBJECT_COORDINATES p_ball[highest_score_ball] b_x1 b_y1 b_z1 GET_OBJECT_COORDINATES p_ball[0] b_x3 b_y3 b_z3 // get vector from ball to pocket b_x2 = pocket_x[highest_score_pocket] - b_x1 b_y2 = pocket_y[highest_score_pocket] - b_y1 // normalise GET_DISTANCE_BETWEEN_COORDS_2D b_x1 b_y1 pocket_x[highest_score_pocket] pocket_y[highest_score_pocket] temp_float b_x2 /= temp_float b_y2 /= temp_float // find contact point temp_float2 = pool_ball_radius * -2.0 b_x2 *= temp_float2 b_y2 *= temp_float2 final_shot_x = b_x1 + b_x2 final_shot_y = b_y1 + b_y2 // reduce angle of shot - to allow for ball physics turning angle on contact. x = b_x1 - final_shot_x y = b_y1 - final_shot_y vec_x = final_shot_x - b_x3 vec_y = final_shot_y - b_y3 GET_ANGLE_BETWEEN_2D_VECTORS x y vec_x vec_y ai_shot_angle // // adjust shot angle // IF ai_shot_angle > 80.0 //WRITE_DEBUG_WITH_FLOAT ai_shot_angle ai_shot_angle temp_float = ai_shot_angle / 90.0 temp_float *= 0.25 x *= temp_float y *= temp_float final_shot_x += x final_shot_y += y // ENDIF // find shot distance GET_DISTANCE_BETWEEN_COORDS_2D b_x3 b_y3 final_shot_x final_shot_y temp_float GET_DISTANCE_BETWEEN_COORDS_2D b_x1 b_y1 final_shot_x final_shot_y temp_float2 final_shot_distance = temp_float + temp_float2 GENERATE_RANDOM_FLOAT_IN_RANGE 2.0 6.0 temp_float final_shot_distance *= temp_float ELSE // D. If there were no scores above 0 we've got a possible snooker situation. IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "hit and hope" ENDIF // ##### HIT AND HOPE ##### // 1. find if any part of the players balls are visible - if so choose that shot best_shot_int = 1 // ignore cue ball WHILE best_shot_int < 16 WAIT 0 IF DOES_OBJECT_EXIST p_ball[best_shot_int] IF ball_potted[best_shot_int] = 0 // get colour of ball we're aiming at IF best_shot_int = 0 this_ball_colour = 3 ELSE IF best_shot_int < 8 this_ball_colour = POOL_COLOUR_SPOTS ELSE IF best_shot_int = 8 this_ball_colour = POOL_COLOUR_BLACK ELSE this_ball_colour = POOL_COLOUR_STRIPES ENDIF ENDIF ENDIF // check if ball we're aiming at is same as we're supposed to be aiming at IF this_ball_colour = turn_colour OR turn_colour = POOL_COLOUR_NONE // special case for when no colour is assigned (ie. off the break) IF turn_colour = POOL_COLOUR_SPOTS AND this_ball_colour = POOL_COLOUR_BLACK // do nothing ELSE // check if we can see either side of the ball see_ball1 = p_ball[0] see_ball2 = p_ball[best_shot_int] GOSUB can_we_see_ball IF NOT ball_can_see_ball = 0 IF ball_can_see_ball = 1 // hit right side final_shot_x = see_x_right final_shot_y = see_y_right ELSE IF ball_can_see_ball = 2 // hit left side final_shot_x = see_x_left final_shot_y = see_y_left ELSE // we can see whole ball, so randomly hit ball between right and left coords // get vector from right to left x = see_x_left - see_x_right y = see_y_left - see_y_right // normalise GET_DISTANCE_BETWEEN_COORDS_2D see_x_right see_y_right see_x_left see_y_left temp_float x /= temp_float y /= temp_float temp_float = pool_ball_radius * 2.0 temp_float *= 0.8 temp_float *= 2.0 GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 temp_float temp_float2 x *= temp_float2 y *= temp_float2 final_shot_x = see_x_right + x final_shot_y = see_y_right + y ENDIF ENDIF // get distance GET_OBJECT_COORDINATES p_ball[0] x y z GET_DISTANCE_BETWEEN_COORDS_2D x y final_shot_x final_shot_y temp_float GENERATE_RANDOM_FLOAT_IN_RANGE 2.0 5.0 temp_float2 final_shot_distance = temp_float * temp_float2 best_shot_int = 16 // exit 'cause we've got a shot now. ENDIF ENDIF ENDIF ENDIF ENDIF best_shot_int++ ENDWHILE // end of HIT AND HOPE // ###### SNOOKER TYPE A ###### IF final_shot_x = 99999.9 AND final_shot_y = 99999.9 // 2. IF NOT, WE'VE GOT A SNOOKER SITUATION A, WE NEED TO BOUNCE OFF CUSHION. IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "bounce off cushion" ENDIF // find the first available place to bounce off best_shot_int = 1 WHILE best_shot_int < 16 WAIT 0 IF DOES_OBJECT_EXIST p_ball[best_shot_int] IF ball_potted[best_shot_int] = 0 // get colour of ball we're aiming at IF best_shot_int = 0 this_ball_colour = 3 ELSE IF best_shot_int < 8 this_ball_colour = POOL_COLOUR_SPOTS ELSE IF best_shot_int = 8 this_ball_colour = POOL_COLOUR_BLACK ELSE this_ball_colour = POOL_COLOUR_STRIPES ENDIF ENDIF ENDIF // check if ball we're aiming at is same as we're supposed to be aiming at IF this_ball_colour = turn_colour OR turn_colour = POOL_COLOUR_NONE // special case for when no colour is assigned (ie. off the break) IF turn_colour = POOL_COLOUR_NONE AND this_ball_colour = POOL_COLOUR_BLACK // do nothing ELSE // check x cushions GET_OBJECT_COORDINATES p_ball[0] b_x1 b_y1 b_z1 GET_OBJECT_COORDINATES p_ball[best_shot_int] b_x2 b_y2 b_z2 // TRY CUSHION 1 IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE " Cushion 1 data = " ENDIF // get x midpoint b_x3 = b_x1 + b_x2 b_x3 /= 2.0 b_y3 = pool_table_min_y // check point doesn't lie on pocket check_for_pocket_x = b_x3 check_for_pocket_y = b_y3 GOSUB is_point_too_near_pocket IF point_lies_on_pocket = 0 // check if bounce shot is clear bounce_ball1 = p_ball[0] bounce_ball2 = p_ball[best_shot_int] bounce_cushion_x = b_x3 bounce_cushion_y = b_y3 GOSUB is_bounce_shot_path_clear IF bounce_path_is_clear = 1 // success! final_shot_x = b_x3 final_shot_y = b_y3 // work out shot distance - over hit by between 3.0 and 6.0 GET_DISTANCE_BETWEEN_COORDS_2D b_x1 b_y1 b_x3 b_y3 temp_float GET_DISTANCE_BETWEEN_COORDS_2D b_x2 b_y2 b_x3 b_y3 temp_float2 final_shot_distance = temp_float + temp_float2 GENERATE_RANDOM_FLOAT_IN_RANGE 3.0 6.0 temp_float final_shot_distance *= temp_float best_shot_int = 16 ENDIF ENDIF // TRY CUSHION 2 IF final_shot_x = 99999.9 AND final_shot_y = 99999.9 IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE " Cushion 2 data = " ENDIF b_y3 = pool_table_max_y // check point doesn't lie on pocket check_for_pocket_x = b_x3 check_for_pocket_y = b_y3 GOSUB is_point_too_near_pocket IF point_lies_on_pocket = 0 // check if bounce shot is clear bounce_ball1 = p_ball[0] bounce_ball2 = p_ball[best_shot_int] bounce_cushion_x = b_x3 bounce_cushion_y = b_y3 GOSUB is_bounce_shot_path_clear IF bounce_path_is_clear = 1 // success! final_shot_x = b_x3 final_shot_y = b_y3 // work out shot distance - over hit by between 3.0 and 6.0 GET_DISTANCE_BETWEEN_COORDS_2D b_x1 b_y1 b_x3 b_y3 temp_float GET_DISTANCE_BETWEEN_COORDS_2D b_x2 b_y2 b_x3 b_y3 temp_float2 final_shot_distance = temp_float + temp_float2 GENERATE_RANDOM_FLOAT_IN_RANGE 3.0 6.0 temp_float final_shot_distance *= temp_float best_shot_int = 16 ENDIF ENDIF ENDIF // TRY CUSHION 3 IF final_shot_x = 99999.9 AND final_shot_y = 99999.9 IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE " Cushion 3 data = " ENDIF // get y midpoint b_y3 = b_y1 + b_y2 b_y3 /= 2.0 b_x3 = pool_table_min_x // check point doesn't lie on pocket check_for_pocket_x = b_x3 check_for_pocket_y = b_y3 GOSUB is_point_too_near_pocket IF point_lies_on_pocket = 0 // check if bounce shot is clear bounce_ball1 = p_ball[0] bounce_ball2 = p_ball[best_shot_int] bounce_cushion_x = b_x3 bounce_cushion_y = b_y3 GOSUB is_bounce_shot_path_clear IF bounce_path_is_clear = 1 // success! final_shot_x = b_x3 final_shot_y = b_y3 // work out shot distance - over hit by between 3.0 and 6.0 GET_DISTANCE_BETWEEN_COORDS_2D b_x1 b_y1 b_x3 b_y3 temp_float GET_DISTANCE_BETWEEN_COORDS_2D b_x2 b_y2 b_x3 b_y3 temp_float2 final_shot_distance = temp_float + temp_float2 GENERATE_RANDOM_FLOAT_IN_RANGE 3.0 6.0 temp_float final_shot_distance *= temp_float best_shot_int = 16 ENDIF ENDIF ENDIF // TRY CUSHION 4 IF final_shot_x = 99999.9 AND final_shot_y = 99999.9 IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE " Cushion 4 data = " ENDIF b_x3 = pool_table_max_x // check point doesn't lie on pocket check_for_pocket_x = b_x3 check_for_pocket_y = b_y3 GOSUB is_point_too_near_pocket IF point_lies_on_pocket = 0 // check if bounce shot is clear bounce_ball1 = p_ball[0] bounce_ball2 = p_ball[best_shot_int] bounce_cushion_x = b_x3 bounce_cushion_y = b_y3 GOSUB is_bounce_shot_path_clear IF bounce_path_is_clear = 1 // success! final_shot_x = b_x3 final_shot_y = b_y3 // work out shot distance - over hit by between 3.0 and 6.0 GET_DISTANCE_BETWEEN_COORDS_2D b_x1 b_y1 b_x3 b_y3 temp_float GET_DISTANCE_BETWEEN_COORDS_2D b_x2 b_y2 b_x3 b_y3 temp_float2 final_shot_distance = temp_float + temp_float2 GENERATE_RANDOM_FLOAT_IN_RANGE 3.0 6.0 temp_float final_shot_distance *= temp_float best_shot_int = 16 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF best_shot_int++ ENDWHILE ENDIF // end SNOOKER TYPE A // ##### SNOOKER TYPE B ##### IF final_shot_x = 99999.9 AND final_shot_y = 99999.9 // 3. snooker situation B - will happen occasionally, choose a ball to bounce off cushion, and add a randomness to it - and belt it!! // find the first available place to bounce off IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "snooker - bounce 2" ENDIF best_shot_int = 1 WHILE best_shot_int < 16 WAIT 0 IF DOES_OBJECT_EXIST p_ball[best_shot_int] IF ball_potted[best_shot_int] = 0 // get colour of ball we're aiming at IF best_shot_int = 0 this_ball_colour = 3 ELSE IF best_shot_int < 8 this_ball_colour = POOL_COLOUR_SPOTS ELSE IF best_shot_int = 8 this_ball_colour = POOL_COLOUR_BLACK ELSE this_ball_colour = POOL_COLOUR_STRIPES ENDIF ENDIF ENDIF // check if ball we're aiming at is same as we're supposed to be aiming at IF this_ball_colour = turn_colour OR turn_colour = POOL_COLOUR_NONE // special case for when no colour is assigned (ie. off the break) IF turn_colour = POOL_COLOUR_NONE AND this_ball_colour = POOL_COLOUR_BLACK // do nothing ELSE // check x cushions GET_OBJECT_COORDINATES p_ball[0] b_x1 b_y1 b_z1 GET_OBJECT_COORDINATES p_ball[best_shot_int] b_x2 b_y2 b_z2 // TRY CUSHION 1 // get x midpoint b_x3 = b_x1 + b_x2 b_x3 /= 2.0 b_y3 = pool_table_min_y // check point doesn't lie on pocket check_for_pocket_x = b_x3 check_for_pocket_y = b_y3 GOSUB is_point_too_near_pocket IF point_lies_on_pocket = 0 // check if bounce shot is clear bounce2_ball1 = p_ball[0] bounce2_cushion_x = b_x3 bounce2_cushion_y = b_y3 GOSUB is_bounce_shot_path_clear_first_half_only IF bounce2_path_is_clear = 1 // success! final_shot_x = b_x3 // add some randomness GENERATE_RANDOM_FLOAT_IN_RANGE -0.05 0.05 temp_float final_shot_x += temp_float final_shot_y = b_y3 // work out shot distance - over hit by between 5.0 and 8.0 GET_DISTANCE_BETWEEN_COORDS_2D b_x1 b_y1 b_x3 b_y3 temp_float GET_DISTANCE_BETWEEN_COORDS_2D b_x2 b_y2 b_x3 b_y3 temp_float2 final_shot_distance = temp_float + temp_float2 GENERATE_RANDOM_FLOAT_IN_RANGE 5.0 8.0 temp_float final_shot_distance *= temp_float best_shot_int = 16 ENDIF ENDIF // TRY CUSHION 2 IF final_shot_x = 99999.9 AND final_shot_y = 99999.9 b_y3 = pool_table_max_y // check point doesn't lie on pocket check_for_pocket_x = b_x3 check_for_pocket_y = b_y3 GOSUB is_point_too_near_pocket IF point_lies_on_pocket = 0 // check if bounce shot is clear bounce2_ball1 = p_ball[0] bounce2_cushion_x = b_x3 bounce2_cushion_y = b_y3 GOSUB is_bounce_shot_path_clear_first_half_only IF bounce2_path_is_clear = 1 // success! final_shot_x = b_x3 // add some randomness GENERATE_RANDOM_FLOAT_IN_RANGE -0.05 0.05 temp_float final_shot_x += temp_float final_shot_y = b_y3 // work out shot distance - over hit by between 5.0 and 8.0 GET_DISTANCE_BETWEEN_COORDS_2D b_x1 b_y1 b_x3 b_y3 temp_float GET_DISTANCE_BETWEEN_COORDS_2D b_x2 b_y2 b_x3 b_y3 temp_float2 final_shot_distance = temp_float + temp_float2 GENERATE_RANDOM_FLOAT_IN_RANGE 5.0 8.0 temp_float final_shot_distance *= temp_float best_shot_int = 16 ENDIF ENDIF ENDIF // TRY CUSHION 3 IF final_shot_x = 99999.9 AND final_shot_y = 99999.9 // get y midpoint b_y3 = b_y1 + b_y2 b_y3 /= 2.0 b_x3 = pool_table_min_x // check point doesn't lie on pocket check_for_pocket_x = b_x3 check_for_pocket_y = b_y3 GOSUB is_point_too_near_pocket IF point_lies_on_pocket = 0 // check if bounce shot is clear bounce2_ball1 = p_ball[0] bounce2_cushion_x = b_x3 bounce2_cushion_y = b_y3 GOSUB is_bounce_shot_path_clear_first_half_only IF bounce2_path_is_clear = 1 // success! final_shot_x = b_x3 final_shot_y = b_y3 // add some randomness GENERATE_RANDOM_FLOAT_IN_RANGE -0.05 0.05 temp_float final_shot_y += temp_float // work out shot distance - over hit by between 5.0 and 8.0 GET_DISTANCE_BETWEEN_COORDS_2D b_x1 b_y1 b_x3 b_y3 temp_float GET_DISTANCE_BETWEEN_COORDS_2D b_x2 b_y2 b_x3 b_y3 temp_float2 final_shot_distance = temp_float + temp_float2 GENERATE_RANDOM_FLOAT_IN_RANGE 5.0 8.0 temp_float final_shot_distance *= temp_float best_shot_int = 16 ENDIF ENDIF ENDIF // TRY CUSHION 4 IF final_shot_x = 99999.9 AND final_shot_y = 99999.9 b_x3 = pool_table_max_x // check point doesn't lie on pocket check_for_pocket_x = b_x3 check_for_pocket_y = b_y3 GOSUB is_point_too_near_pocket IF point_lies_on_pocket = 0 // check if bounce shot is clear bounce2_ball1 = p_ball[0] bounce2_cushion_x = b_x3 bounce2_cushion_y = b_y3 GOSUB is_bounce_shot_path_clear_first_half_only IF bounce2_path_is_clear = 1 // success! final_shot_x = b_x3 final_shot_y = b_y3 // add some randomness GENERATE_RANDOM_FLOAT_IN_RANGE -0.05 0.05 temp_float final_shot_y += temp_float // work out shot distance - over hit by between 5.0 and 8.0 GET_DISTANCE_BETWEEN_COORDS_2D b_x1 b_y1 b_x3 b_y3 temp_float GET_DISTANCE_BETWEEN_COORDS_2D b_x2 b_y2 b_x3 b_y3 temp_float2 final_shot_distance = temp_float + temp_float2 GENERATE_RANDOM_FLOAT_IN_RANGE 5.0 8.0 temp_float final_shot_distance *= temp_float best_shot_int = 16 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF best_shot_int++ ENDWHILE ENDIF // end SNOOKER TYPE B // ##### SNOOKER TYPE C ##### IF final_shot_x = 99999.9 AND final_shot_y = 99999.9 IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "snooker - last resort" ENDIF // if we still don't have a shot, resort to just picking a random heading and power and belt it. GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 360.0 ai_shot_heading GENERATE_RANDOM_FLOAT_IN_RANGE 4.0 8.0 ai_shot_power final_shot_x = 0.0 final_shot_y = 0.0 ENDIF ENDIF // E. We should now have the shot we want to play, now we just need to calculate the power and heading IF ai_shot_heading = 99999.9 AND ai_shot_power = 99999.9 // get heading GET_OBJECT_COORDINATES p_ball[0] b_x1 b_y1 b_z1 b_x2 = final_shot_x - b_x1 b_y2 = final_shot_y - b_y1 GET_HEADING_FROM_VECTOR_2D b_x2 b_y2 ai_shot_heading // might need to somehow take a bit off the heading to make it more accurate // get power ai_shot_power = final_shot_distance * 1.0 // add more power if it's a tighter angle IF ai_shot_angle < 90.0 temp_float = ai_shot_angle / 90.0 temp_float *= 2.0 ai_shot_power += temp_float ENDIF ENDIF IF ai_shot_power < 0.7 ai_shot_power = 0.7 ENDIF IF ai_shot_power > 4.0 ai_shot_power = 4.0 ENDIF RETURN ///////////////////////////////////////////////////////////////////////////////////////////////////////// // GOSUB IS_PATH_CLEAR ///////////////////////////////////////////////////////////////////////////////// // params LVAR_INT path_ball LVAR_INT path_ball2 // optional (use if destination x,y will overlap with a known other ball - set to 0 if not used) LVAR_FLOAT path_dest_x path_dest_y // return LVAR_INT path_is_clear LVAR_INT obstructing_colour // workings LVAR_FLOAT p_x1 p_y1 LVAR_FLOAT p_x2 p_y2 LVAR_FLOAT p_vec1_x p_vec1_y LVAR_FLOAT p_vec2_x p_vec2_y LVAR_FLOAT p_vec3_x p_vec3_y LVAR_FLOAT p_vec1_dist p_vec2_dist p_dist_between_dest_and_ball //LVAR_FLOAT p_cos_angle LVAR_FLOAT p_sin_angle LVAR_INT path_int path_int2 path_int3 LVAR_INT obstructing_ball is_path_clear: // fake create GOTO is_path_clear_skip CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 path_ball CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 path_ball2 is_path_clear_skip: path_is_clear = 1 // default - path is clear obstructing_ball = -1 // vec 1 - ball to destination IF DOES_OBJECT_EXIST path_ball GET_OBJECT_COORDINATES path_ball p_x1 p_y1 z p_vec1_x = path_dest_x - p_x1 p_vec1_y = path_dest_y - p_y1 GET_DISTANCE_BETWEEN_COORDS_2D p_x1 p_y1 path_dest_x path_dest_y p_vec1_dist ENDIF WAIT 0 // if there are no colours / or black / or stripes assigned start at begining IF turn_colour = POOL_COLOUR_NONE OR turn_colour = POOL_COLOUR_BLACK OR turn_colour = POOL_COLOUR_STRIPES path_int = 1 WHILE path_int < 16 GOSUB is_path_clear_internal_gosub path_int++ ENDWHILE ELSE // if spots are assigned start at the black path_int3 = 1 WHILE path_int3 < 16 path_int = path_int3 + 7 IF path_int > 15 path_int += -15 ENDIF GOSUB is_path_clear_internal_gosub path_int3++ ENDWHILE ENDIF path_ball2 = 0 is_path_clear_end: RETURN is_path_clear_internal_gosub: IF DOES_OBJECT_EXIST p_ball[path_int] IF ball_potted[path_int] = 0 IF NOT p_ball[path_int] = path_ball // ingnore if this is path_ball2 path_int2 = 0 IF DOES_OBJECT_EXIST path_ball2 IF p_ball[path_int] = path_ball2 path_int2 = 1 ENDIF ENDIF IF path_int2 = 0 // vec 2 - path_ball to checking ball GET_OBJECT_COORDINATES p_ball[path_int] p_x2 p_y2 z p_vec2_x = p_x2 - p_x1 p_vec2_y = p_y2 - p_y1 GET_DISTANCE_BETWEEN_COORDS_2D p_x1 p_y1 p_x2 p_y2 p_vec2_dist // get angle between vectors GET_ANGLE_BETWEEN_2D_VECTORS p_vec1_x p_vec1_y p_vec2_x p_vec2_y temp_float // get distance between destination and checking ball GET_DISTANCE_BETWEEN_COORDS_2D p_x2 p_y2 path_dest_x path_dest_y p_dist_between_dest_and_ball IF p_dist_between_dest_and_ball < pool_ball_diameter // ball is obstructing IF path_int = 0 obstructing_colour = 3 ELSE IF path_int < 8 obstructing_colour = POOL_COLOUR_SPOTS ELSE IF path_int = 8 obstructing_colour = POOL_COLOUR_BLACK ELSE obstructing_colour = POOL_COLOUR_STRIPES ENDIF ENDIF ENDIF IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE " BALL OBSTRUCTING PATH (too close to target destination) = " SAVE_INT_TO_DEBUG_FILE path_int ENDIF obstructing_ball = path_int path_is_clear = 0 path_int = 16 path_int3 = 16 ELSE // if angle is greater than 90.0 ball cannot be in path IF temp_float <= 90.0 // if vec2_dist is greater than vec1_dist then it can't be obstructing IF p_vec2_dist < p_vec1_dist // find distance from ball to the path path_ball will travel SIN temp_float p_sin_angle temp_float = p_sin_angle * p_vec2_dist // if it's less than 2 radius then it will collide IF temp_float < pool_ball_diameter IF path_int = 0 obstructing_colour = 3 ELSE IF path_int < 8 obstructing_colour = POOL_COLOUR_SPOTS ELSE IF path_int = 8 obstructing_colour = POOL_COLOUR_BLACK ELSE obstructing_colour = POOL_COLOUR_STRIPES ENDIF ENDIF ENDIF IF output_text = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE " BALL OBSTRUCTING PATH (overlapping path) = " SAVE_INT_TO_DEBUG_FILE path_int ENDIF obstructing_ball = path_int path_is_clear = 0 path_int = 16 path_int3 = 16 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF RETURN LVAR_FLOAT new_end_point_x new_end_point_y LVAR_FLOAT new_bounce_vec_x new_bounce_vec_y LVAR_FLOAT hit_ball_bounce_vec_x hit_ball_bounce_vec_y // workings LVAR_FLOAT min_distance_to_test LVAR_FLOAT closest_obstructing_ball LVAR_FLOAT closest_ball_contact_distance_to_vector LVAR_FLOAT closest_obstructing_ball_distance_to_path is_path_closest_clear: path_is_clear = 1 // default - path is clear obstructing_ball = -1 // vec 1 - ball to destination p_vec1_x = path_dest_x - p_x1 p_vec1_y = path_dest_y - p_y1 // check to see if we've hit a cushion IF path_dest_x < pool_table_min_x OR path_dest_x > pool_table_max_x OR path_dest_y < pool_table_min_y OR path_dest_y > pool_table_max_y new_end_point_x = -99999.9 new_end_point_y = -99999.9 temp_int = 0 // find contact point on cushion IF GET_2D_LINES_INTERSECT_POINT p_x1 p_y1 path_dest_x path_dest_y pool_table_min_x pool_table_min_y pool_table_min_x pool_table_max_y new_end_point_x new_end_point_y AND NOT ignore_cushion = 1 temp_int = 1 ELSE IF GET_2D_LINES_INTERSECT_POINT p_x1 p_y1 path_dest_x path_dest_y pool_table_max_x pool_table_min_y pool_table_max_x pool_table_max_y new_end_point_x new_end_point_y AND NOT ignore_cushion = 2 temp_int = 2 ELSE IF GET_2D_LINES_INTERSECT_POINT p_x1 p_y1 path_dest_x path_dest_y pool_table_min_x pool_table_min_y pool_table_max_x pool_table_min_y new_end_point_x new_end_point_y AND NOT ignore_cushion = 3 temp_int = 3 ELSE IF GET_2D_LINES_INTERSECT_POINT p_x1 p_y1 path_dest_x path_dest_y pool_table_min_x pool_table_max_y pool_table_max_x pool_table_max_y new_end_point_x new_end_point_y AND NOT ignore_cushion = 4 temp_int = 4 ENDIF ENDIF ENDIF ENDIF // find bounce vector GET_DISTANCE_BETWEEN_COORDS_2D path_dest_x path_dest_y p_x1 p_y1 temp_float IF temp_float > 0.0 p_vec1_x /= temp_float p_vec1_y /= temp_float ENDIF // find bounce vector IF temp_int = 1 OR temp_int = 2 new_bounce_vec_x = p_vec1_x * -1.0 new_bounce_vec_y = p_vec1_y ENDIF IF temp_int = 3 OR temp_int = 4 new_bounce_vec_x = p_vec1_x new_bounce_vec_y = p_vec1_y * -1.0 ENDIF // ignore cushion just bounced off LVAR_INT ignore_cushion IF NOT temp_int = 0 ignore_cushion = temp_int ENDIF path_is_clear = 0 ELSE // nothing new_end_point_x = path_dest_x new_end_point_y = path_dest_y path_is_clear = 1 ENDIF is_path_closest_clear_end: RETURN ///////////////////////////////////////////////////////////////////////////////////////////////////////// // GOSUB IS_BALL_POTTABLE_INTO_POCKET ///////////////////////////////////////////////////////////////// LVAR_INT angle_ball LVAR_INT angle_pocket // return LVAR_INT angle_is_possible LVAR_FLOAT required_angle_of_shot // workings LVAR_FLOAT angle_vec1_x angle_vec1_y LVAR_FLOAT angle_vec2_x angle_vec2_y LVAR_FLOAT angle_vec3_x angle_vec3_y LVAR_FLOAT angle_x1 angle_y1 // stores position of angle ball & required contact point is_ball_pottable_into_pocket: // vec1. vector from angle ball to pocket IF DOES_OBJECT_EXIST angle_ball GET_OBJECT_COORDINATES angle_ball angle_x1 angle_y1 z angle_vec1_x = pocket_x[angle_pocket] - angle_x1 angle_vec1_y = pocket_y[angle_pocket] - angle_y1 ENDIF // vec2. vector from angle ball to required contact point GET_DISTANCE_BETWEEN_COORDS_2D x y pocket_x[angle_pocket] pocket_y[angle_pocket] temp_float angle_vec2_x = angle_vec1_x / temp_float angle_vec2_y = angle_vec1_y / temp_float angle_vec2_x *= -1.0 angle_vec2_y *= -1.0 temp_float = pool_ball_radius * 2.0 angle_vec2_x *= temp_float angle_vec2_y *= temp_float angle_x1 += angle_vec2_x // changes angle_x1 to the required contact point angle_y1 += angle_vec2_y // vec3. vector from cue ball to required contact point IF DOES_OBJECT_EXIST p_ball[0] GET_OBJECT_COORDINATES p_ball[0] x y z angle_vec3_x = angle_x1 - x angle_vec3_y = angle_y1 - y ENDIF // find angle between vec1 and vec3 - this is the required angle to pot ball into this pocket GET_ANGLE_BETWEEN_2D_VECTORS angle_vec1_x angle_vec1_y angle_vec3_x angle_vec3_y required_angle_of_shot IF required_angle_of_shot < 90.0 angle_is_possible = 1 ELSE angle_is_possible = 0 ENDIF RETURN ///////////////////////////////////////////////////////////////////////////////////////////////////////// // GOSUB CAN_WE_SEE_BALL ///////////////////////////////////////////////////////////////// // params LVAR_INT see_ball1 see_ball2 // return LVAR_INT ball_can_see_ball // 0:cannot see ball, 1:can see right side, 2:can see left side, 3:can see both sides // workings LVAR_INT ball_can_see_right LVAR_INT ball_can_see_left LVAR_FLOAT see_vec_x1 see_vec_y1 LVAR_FLOAT see_vec_x2 see_vec_y2 LVAR_FLOAT see_x1 see_y1 LVAR_FLOAT see_x_right see_y_right LVAR_FLOAT see_x_left see_y_left can_we_see_ball: ball_can_see_ball = 0 ball_can_see_right = 0 ball_can_see_left = 0 IF DOES_OBJECT_EXIST see_ball1 AND DOES_OBJECT_EXIST see_ball2 // TEST RIGHT SIDE // 1. get vector from ball1 to ball2 GET_OBJECT_COORDINATES see_ball1 x y z GET_OBJECT_COORDINATES see_ball2 see_x1 see_y1 z see_vec_x1 = see_x1 - x see_vec_y1 = see_y1 - y // normalise GET_DISTANCE_BETWEEN_COORDS_2D x y see_x1 see_y1 temp_float see_vec_x1 /= temp_float see_vec_y1 /= temp_float // 2. get right hand vector see_vec_x2 = see_vec_y1 see_vec_y2 = see_vec_x1 * -1.0 // 3. get point we want to aim at (right hand side of ball - 80% of ball diameter to make sure we definately hit) temp_float = pool_ball_radius * 2.0 temp_float *= 0.80 temp_float2 = see_vec_x2 * temp_float see_x_right = see_x1 + temp_float2 temp_float2 = see_vec_y2 * temp_float see_y_right = see_y1 + temp_float2 // check if path is clear path_ball = see_ball1 path_ball2 = see_ball2 path_dest_x = see_x_right path_dest_y = see_y_right GOSUB is_path_clear IF path_is_clear = 1 ball_can_see_right = 1 ENDIF // TEST LEFT SIDE temp_float = pool_ball_radius * 2.0 temp_float *= -0.80 temp_float2 = see_vec_x2 * temp_float see_x_left = see_x1 + temp_float2 temp_float2 = see_vec_y2 * temp_float see_y_left = see_y1 + temp_float2 // check if path is clear path_ball = see_ball1 path_ball2 = see_ball2 path_dest_x = see_x_left path_dest_y = see_y_left GOSUB is_path_clear IF path_is_clear = 1 ball_can_see_left = 1 ENDIF // RETURN RESULT IF ball_can_see_right = 0 AND ball_can_see_left = 0 ball_can_see_ball = 0 ENDIF IF ball_can_see_right = 1 AND ball_can_see_left = 0 ball_can_see_ball = 1 ENDIF IF ball_can_see_right = 0 AND ball_can_see_left = 1 ball_can_see_ball = 2 ENDIF IF ball_can_see_right = 1 AND ball_can_see_left = 1 ball_can_see_ball = 3 ENDIF ENDIF RETURN ///////////////////////////////////////////////////////////////////////////////////////////////////////// // GOSUB IS_POINT_TOO_NEAR_POCKET ///////////////////////////////////////////////////////////////// // params LVAR_FLOAT check_for_pocket_x LVAR_FLOAT check_for_pocket_y // return LVAR_INT point_lies_on_pocket // workings LVAR_FLOAT pocket_dist LVAR_FLOAT check_pocket_float LVAR_INT check_pocket_int is_point_too_near_pocket: point_lies_on_pocket = 0 check_pocket_float = 2.5 * pool_ball_radius check_pocket_int = 0 WHILE check_pocket_int < 6 GET_DISTANCE_BETWEEN_COORDS_2D check_for_pocket_x check_for_pocket_y pocket_x[check_pocket_int] pocket_y[check_pocket_int] pocket_dist IF pocket_dist < check_pocket_float SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE " point lies on pocket" point_lies_on_pocket = 1 check_pocket_int = 6 ENDIF check_pocket_int++ ENDWHILE RETURN ///////////////////////////////////////////////////////////////////////////////////////////////////////// // GOSUB IS_BOUNCE_SHOT_PATH_CLEAR ///////////////////////////////////////////////////////////// // params LVAR_INT bounce_ball1 LVAR_INT bounce_ball2 LVAR_FLOAT bounce_cushion_x bounce_cushion_y // return LVAR_INT bounce_path_is_clear // workings is_bounce_shot_path_clear: bounce_path_is_clear = 0 SAVE_NEWLINE_TO_DEBUG_FILE //SAVE_STRING_TO_DEBUG_FILE " bounce_shot_path_clear data = " // is path from cue ball to cushion clear path_ball = bounce_ball1 path_ball2 = 0 path_dest_x = bounce_cushion_x path_dest_y = bounce_cushion_y GOSUB is_path_clear IF path_is_clear = 1 SAVE_STRING_TO_DEBUG_FILE "1st path clear " // is path from ball2 to cushion clear path_ball = bounce_ball2 path_ball2 = 0 path_dest_x = bounce_cushion_x path_dest_y = bounce_cushion_y GOSUB is_path_clear IF path_is_clear = 1 SAVE_STRING_TO_DEBUG_FILE "2nd path clear " bounce_path_is_clear = 1 ENDIF ENDIF RETURN ///////////////////////////////////////////////////////////////////////////////////////////////////////// // GOSUB IS_BOUNCE_SHOT_PATH_CLEAR_FIRST_HALF_ONLY ////////////////////////////////////////////////////// // params LVAR_INT bounce2_ball1 LVAR_FLOAT bounce2_cushion_x bounce2_cushion_y // return LVAR_INT bounce2_path_is_clear // workings is_bounce_shot_path_clear_first_half_only: bounce2_path_is_clear = 0 // is path from ball1 to cushion clear path_ball = bounce_ball1 path_ball2 = 0 path_dest_x = bounce_cushion_x path_dest_y = bounce_cushion_y GOSUB is_path_clear IF path_is_clear = 1 bounce2_path_is_clear = 1 ENDIF RETURN ///////////////////////////////////////////////////////////////////////////////////////////////////////// // GOSUB UPDATE_BALL_TRIANGLE_POSITION //////////////////////////////////////////////////////////////// // params LVAR_FLOAT ball_tri_x ball_tri_y ball_tri_z ball_tri_h // workings LVAR_FLOAT ball_radius_neg LVAR_FLOAT ball_radius_spacer ball_radius_spacer_neg LVAR_FLOAT ball_diameter ball_diameter_neg LVAR_INT triangle_int update_ball_triangle_position: ball_diameter = pool_ball_radius * 2.0 ball_radius_neg = pool_ball_radius * -1.0 ball_diameter_neg = ball_diameter * -1.0 temp_float = ball_diameter * ball_diameter temp_float2 = pool_ball_radius * pool_ball_radius ball_radius_spacer = temp_float - temp_float2 SQRT ball_radius_spacer ball_radius_spacer ball_radius_spacer_neg = ball_radius_spacer * -1.0 triangle_int = 1 WHILE triangle_int < 15 FREEZE_OBJECT_POSITION p_ball[triangle_int] FALSE triangle_int++ ENDWHILE // 1st row SET_OBJECT_COORDINATES p_ball[1] ball_tri_x ball_tri_y ball_tri_z SET_OBJECT_HEADING p_ball[1] ball_tri_h // 2nd row GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[1] ball_radius_neg ball_radius_spacer_neg 0.0 x y z SET_OBJECT_COORDINATES p_ball[9] x y z SET_OBJECT_HEADING p_ball[9] ball_tri_h GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[9] ball_diameter 0.0 0.0 x y z SET_OBJECT_COORDINATES p_ball[3] x y z SET_OBJECT_HEADING p_ball[3] ball_tri_h // 3rd row GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[9] ball_radius_neg ball_radius_spacer_neg 0.0 x y z SET_OBJECT_COORDINATES p_ball[7] x y z SET_OBJECT_HEADING p_ball[7] ball_tri_h GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[7] ball_diameter 0.0 0.0 x y z SET_OBJECT_COORDINATES p_ball[8] x y z SET_OBJECT_HEADING p_ball[8] ball_tri_h GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[8] ball_diameter 0.0 0.0 x y z SET_OBJECT_COORDINATES p_ball[10] x y z SET_OBJECT_HEADING p_ball[10] ball_tri_h // 4th row GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[7] ball_radius_neg ball_radius_spacer_neg 0.0 x y z SET_OBJECT_COORDINATES p_ball[11] x y z SET_OBJECT_HEADING p_ball[11] ball_tri_h GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[11] ball_diameter 0.0 0.0 x y z SET_OBJECT_COORDINATES p_ball[2] x y z SET_OBJECT_HEADING p_ball[2] ball_tri_h GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[2] ball_diameter 0.0 0.0 x y z SET_OBJECT_COORDINATES p_ball[15] x y z SET_OBJECT_HEADING p_ball[15] ball_tri_h GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[15] ball_diameter 0.0 0.0 x y z SET_OBJECT_COORDINATES p_ball[5] x y z SET_OBJECT_HEADING p_ball[5] ball_tri_h // 5th row GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[11] ball_radius_neg ball_radius_spacer_neg 0.0 x y z SET_OBJECT_COORDINATES p_ball[6] x y z SET_OBJECT_HEADING p_ball[6] ball_tri_h GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[6] ball_diameter 0.0 0.0 x y z SET_OBJECT_COORDINATES p_ball[12] x y z SET_OBJECT_HEADING p_ball[12] ball_tri_h GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[12] ball_diameter 0.0 0.0 x y z SET_OBJECT_COORDINATES p_ball[13] x y z SET_OBJECT_HEADING p_ball[13] ball_tri_h GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[13] ball_diameter 0.0 0.0 x y z SET_OBJECT_COORDINATES p_ball[4] x y z SET_OBJECT_HEADING p_ball[4] ball_tri_h GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[4] ball_diameter 0.0 0.0 x y z SET_OBJECT_COORDINATES p_ball[14] x y z SET_OBJECT_HEADING p_ball[14] ball_tri_h RETURN // ******************************************************************************************************* // UPDATE_STANCE_COORDS // ******************************************************************************************************* // TEMPORARY STUFF - floats and ints that don't need to be initialised LVAR_FLOAT ball_0_x ball_0_y ball_0_z LVAR_FLOAT La_x1 La_y1 La_z1 La_x2 La_y2 La_z2 LVAR_FLOAT Lb_x1 Lb_y1 Lb_z1 Lb_x2 Lb_y2 Lb_z2 LVAR_FLOAT far_aim_stance_x close_aim_stance_x stance_x shoot_stance_x LVAR_FLOAT far_aim_stance_y close_aim_stance_y stance_y shoot_stance_y LVAR_FLOAT far_aim_stance_z close_aim_stance_z stance_z shoot_stance_z LVAR_FLOAT far_aim_stance_h close_aim_stance_h stance_h shoot_stance_h LVAR_FLOAT stance_distance LVAR_INT current_stance last_stance LVAR_FLOAT table_path_v1_x table_path_v1_y LVAR_FLOAT table_path_v2_x table_path_v2_y LVAR_FLOAT table_path_v3_x table_path_v3_y LVAR_FLOAT table_path_v4_x table_path_v4_y LVAR_FLOAT safe_stance_x safe_stance_y safe_stance_z LVAR_FLOAT stance_angle LVAR_FLOAT stance_vec_x stance_vec_y LVAR_FLOAT cushion_vec_x cushion_vec_y update_stance_coords: table_path_v1_x = -0.9600 table_path_v1_y = 0.4900 table_path_v2_x = 0.9700 table_path_v2_y = 0.4900 table_path_v3_x = 0.9700 table_path_v3_y = -0.4900 table_path_v4_x = -0.9600 table_path_v4_y = -0.4900 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS p_ball[0] 0.0 -5.0 0.0 La_x1 La_y1 La_z1 GET_OBJECT_COORDINATES p_ball[0] La_x2 La_y2 La_z2 GET_GROUND_Z_FOR_3D_COORD La_x2 La_y2 La_z2 z // find intesect point with path // v1 --- v2 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table table_path_v1_x table_path_v1_y 0.0 Lb_x1 Lb_y1 Lb_z1 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table table_path_v2_x table_path_v2_y 0.0 Lb_x2 Lb_y2 Lb_z2 IF GET_2D_LINES_INTERSECT_POINT La_x1 La_y1 La_x2 La_y2 Lb_x1 Lb_y1 Lb_x2 Lb_y2 x y stance_x = x stance_y = y stance_z = z cushion_vec_x = table_path_v2_x - table_path_v1_x cushion_vec_y = table_path_v2_y - table_path_v1_y ENDIF // v2 --- v3 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table table_path_v3_x table_path_v3_y 0.0 Lb_x1 Lb_y1 Lb_z1 IF GET_2D_LINES_INTERSECT_POINT La_x1 La_y1 La_x2 La_y2 Lb_x1 Lb_y1 Lb_x2 Lb_y2 x y stance_x = x stance_y = y stance_z = z cushion_vec_x = table_path_v3_x - table_path_v2_x cushion_vec_y = table_path_v3_y - table_path_v2_y ENDIF // v3 --- v4 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table table_path_v4_x table_path_v4_y 0.0 Lb_x2 Lb_y2 Lb_z2 IF GET_2D_LINES_INTERSECT_POINT La_x1 La_y1 La_x2 La_y2 Lb_x1 Lb_y1 Lb_x2 Lb_y2 x y stance_x = x stance_y = y stance_z = z cushion_vec_x = table_path_v4_x - table_path_v3_x cushion_vec_y = table_path_v4_y - table_path_v3_y ENDIF // v4 --- v1 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table table_path_v1_x table_path_v1_y 0.0 Lb_x1 Lb_y1 Lb_z1 IF GET_2D_LINES_INTERSECT_POINT La_x1 La_y1 La_x2 La_y2 Lb_x1 Lb_y1 Lb_x2 Lb_y2 x y stance_x = x stance_y = y stance_z = z cushion_vec_x = table_path_v1_x - table_path_v4_x cushion_vec_y = table_path_v1_y - table_path_v4_y ENDIF // get stance angle stance_vec_x = La_x2 - La_x1 stance_vec_y = La_y2 - La_y1 GET_ANGLE_BETWEEN_2D_VECTORS stance_vec_x stance_vec_y cushion_vec_x cushion_vec_y stance_angle IF stance_angle > 90.0 stance_angle += -180.0 stance_angle *= -1.0 ENDIF //WRITE_DEBUG_WITH_FLOAT stance_angle stance_angle // get heading vec_x = La_x2 - stance_x vec_y = La_y2 - stance_y vec_z = La_z2 - stance_z GET_HEADING_FROM_VECTOR_2D vec_x vec_y stance_h far_aim_stance_h = stance_h close_aim_stance_h = stance_h shoot_stance_h = stance_h // set zeds shoot_stance_z = stance_z far_aim_stance_z = stance_z close_aim_stance_z = stance_z // normalise aim vector GET_DISTANCE_BETWEEN_COORDS_2D La_x2 La_y2 stance_x stance_y stance_distance vec_x /= stance_distance vec_y /= stance_distance // ======================== FAR AIM STANCE ============================= // how far do we want to stand from the table? 2.0m say x = vec_x * 3.0 y = vec_y * 3.0 // update this stance coords far_aim_stance_x = stance_x - x far_aim_stance_y = stance_y - y x = vec_x * 1.0 y = vec_y * 1.0 safe_stance_x = stance_x - x safe_stance_y = stance_y - y safe_stance_z = stance_z // ====================== CLOSE AIM STANCE =========================== // choose which stance to use // close IF stance_distance < 0.25 current_stance = 1 ELSE // medium IF stance_distance < 0.65 current_stance = 2 ELSE // far IF stance_distance < 1.1 current_stance = 3 ELSE // v.far current_stance = 4 ENDIF ENDIF ENDIF // if stance angle is greater than 70 degrees than increment the current_stance IF stance_angle > 70.0 current_stance++ IF current_stance > 4 current_stance = 4 ENDIF ENDIF // adjust stance coordinates depending on type of stance IF current_stance = 1 x = vec_x * 0.615 y = vec_y * 0.615 close_aim_stance_x = La_x2 - x close_aim_stance_y = La_y2 - y ENDIF IF current_stance = 2 x = vec_x * 1.0 y = vec_y * 1.0 close_aim_stance_x = La_x2 - x close_aim_stance_y = La_y2 - y ENDIF IF current_stance = 3 x = vec_x * 1.6 y = vec_y * 1.6 close_aim_stance_x = La_x2 - x close_aim_stance_y = La_y2 - y ENDIF IF current_stance = 4 x = vec_x * 2.1 y = vec_y * 2.1 close_aim_stance_x = La_x2 - x close_aim_stance_y = La_y2 - y ENDIF GET_DISTANCE_BETWEEN_COORDS_2D La_x2 La_y2 close_aim_stance_x close_aim_stance_y distance // get distance from ball to close aim, if it's smaller than ball to cushion then change it temp_float = stance_distance temp_float += 0.3 // safe distance away from side of table IF distance < temp_float temp_float = stance_distance + 0.3 x = vec_x * temp_float y = vec_y * temp_float close_aim_stance_x = La_x2 - x close_aim_stance_y = La_y2 - y ENDIF // ======================= SHOOT STANCE ========================== // work out shoot_stance position for next stange IF current_stance = 1 x = vec_x * 0.655 y = vec_y * 0.655 shoot_stance_x = La_x2 - x shoot_stance_y = La_y2 - y ENDIF IF current_stance = 2 x = vec_x * 1.0 y = vec_y * 1.0 shoot_stance_x = La_x2 - x shoot_stance_y = La_y2 - y ENDIF IF current_stance = 3 x = vec_x * 1.6 y = vec_y * 1.6 shoot_stance_x = La_x2 - x shoot_stance_y = La_y2 - y ENDIF IF current_stance = 4 x = vec_x * 2.1 y = vec_y * 2.1 shoot_stance_x = La_x2 - x shoot_stance_y = La_y2 - y ENDIF RETURN // ball and nib stuff LVAR_FLOAT ball_sprite_x ball_sprite_y LVAR_FLOAT ball_sprite_width ball_sprite_height LVAR_FLOAT nib_sprite_x nib_sprite_y LVAR_FLOAT nib_sprite_height nib_sprite_width LVAR_FLOAT nib_speed draw_ball_and_nib: // draw ball DRAW_SPRITE 1 ball_sprite_x ball_sprite_y ball_sprite_width ball_sprite_height 128 128 128 255 // draw nib DRAW_SPRITE 2 nib_sprite_x nib_sprite_y nib_sprite_height nib_sprite_width 128 128 128 255 IF IS_BUTTON_PRESSED current_pad LEFTSTICKY OR IS_BUTTON_PRESSED current_pad LEFTSTICKX OR IS_WIDGET_PRESSED WIDGET_POOL_ENGLISH GET_POSITION_OF_ANALOGUE_STICKS current_pad LStickX LStickY RStickX RStickY x =# LStickX y =# LStickY x /= 128.0 y /= 128.0 x *= 5.0 y *= 5.0 //IF IS_WIDGET_PRESSED WIDGET_POOL_ENGLISH GET_WIDGET_VALUE2 WIDGET_LOOK x, y //ENDIF x *= -0.5 y *= -0.5 temp_float = nib_sprite_x + x temp_float3 = ball_sprite_width / 2.0 temp_float2 = ball_sprite_x + temp_float3 IF temp_float < temp_float2 temp_float2 = ball_sprite_x - temp_float3 IF temp_float > temp_float2 x = temp_float ENDIF ENDIF temp_float = nib_sprite_y + y temp_float3 = ball_sprite_height / 2.0 temp_float2 = ball_sprite_y + temp_float3 IF temp_float < temp_float2 temp_float2 = ball_sprite_y - temp_float3 IF temp_float > temp_float2 y = temp_float ENDIF ENDIF // test new nib positions are ok GET_DISTANCE_BETWEEN_COORDS_2D x y ball_sprite_x ball_sprite_y temp_float temp_float2 = ball_sprite_width / 3.2 IF temp_float > temp_float2 vec_x = x - ball_sprite_x vec_y = y - ball_sprite_y vec_x /= temp_float vec_y /= temp_float vec_x *= temp_float2 vec_y *= temp_float2 nib_sprite_x = ball_sprite_x + vec_x nib_sprite_y = ball_sprite_y + vec_y ELSE nib_sprite_x = x nib_sprite_y = y ENDIF ENDIF RETURN LVAR_FLOAT safe_x safe_y LVAR_INT safe_int LVAR_FLOAT safe_float LVAR_FLOAT safe_distance LVAR_FLOAT safe_vec_x safe_vec_y check_position_is_safe: // check distance between safe coords and all the balls safe_distance = pool_ball_radius * 2.0 safe_int = 1 WHILE safe_int < 16 IF DOES_OBJECT_EXIST p_ball[safe_int] GET_OBJECT_COORDINATES p_ball[safe_int] x y z GET_DISTANCE_BETWEEN_COORDS_2D x y safe_x safe_y safe_float IF safe_float < safe_distance safe_vec_x = safe_x - x safe_vec_y = safe_y - y safe_vec_x /= safe_float safe_vec_y /= safe_float safe_vec_x *= safe_distance safe_vec_y *= safe_distance safe_x = x + safe_vec_x safe_y = y + safe_vec_y ENDIF ENDIF safe_int++ ENDWHILE // check we're still on the table surface safe_float = pool_table_min_x IF safe_x < safe_float safe_x = safe_float ENDIF safe_float = pool_table_max_x IF safe_x > safe_float safe_x = safe_float ENDIF safe_float = pool_table_min_y IF safe_y < safe_float safe_y = safe_float ENDIF safe_float = pool_table_max_y IF safe_y > safe_float safe_y = safe_float ENDIF RETURN VAR_FLOAT cam_x1 cam_y1 cam_z1 VAR_FLOAT cam_x2 cam_y2 cam_z2 VAR_FLOAT cam_nvec_x cam_rvec_x VAR_FLOAT cam_nvec_y cam_rvec_y VAR_FLOAT cam_dist pl_update_camera_vector: GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table 0.0 0.0 0.0 cam_x1 cam_y1 cam_z1 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS table 0.0 -1.0 0.0 cam_x2 cam_y2 cam_z2 cam_nvec_x = cam_x1 - cam_x2 cam_nvec_y = cam_y1 - cam_y2 GET_DISTANCE_BETWEEN_COORDS_2D cam_x1 cam_y1 cam_x2 cam_y2 cam_dist cam_nvec_x /= cam_dist cam_nvec_y /= cam_dist cam_rvec_x = cam_nvec_y cam_rvec_y = cam_nvec_x cam_rvec_y *= -1.0 RETURN // ****************************************************************************************** // DISPLAY HELP SCREENS // ****************************************************************************************** pool_draw_window_1: // Give the wager widget the data it needs for display. // // Args are: cell int0 int1 color label text //================================================================================================= SET_WIDGET_INFO2 WIDGET_WAGER 0 pool_max_bet 0 WAGER_GREEN BJ_03 DUMMY // Max Wager SET_WIDGET_INFO2 WIDGET_WAGER 1 pool_min_bet 0 WAGER_GREEN BJ_02 DUMMY // Min Wager SET_WIDGET_INFO2 WIDGET_WAGER 2 pl_current_wager 0 WAGER_GREEN BJ_01 DUMMY // Total Wager SET_WIDGET_INFO2 WIDGET_WAGER 3 0 0 WAGER_WHITE DUMMY DUMMY // Empty cell SET_WIDGET_VALUE WIDGET_WAGER 0.0 // This lets the wager widget know we don't need an extra cell at the bottom. RETURN LVAR_INT win2_longest_width pool_draw_window_2: IF foul_type = 0 AND no_of_balls_potted_this_turn = 0 win3_dont_draw_help = 1 GOSUB pool_draw_window_3 ELSE //IF temp_int = 1 IF player1_colour = POOL_COLOUR_SPOTS SET_WIDGET_INFO2 WIDGET_POOL 0 0 0 0 PL_01 PL_12 // Player1, Solids ENDIF IF player1_colour = POOL_COLOUR_STRIPES SET_WIDGET_INFO2 WIDGET_POOL 0 0 0 0 PL_01 PL_13 // Player1, Stripes ENDIF IF player1_colour = POOL_COLOUR_NONE SET_WIDGET_INFO2 WIDGET_POOL 0 0 0 0 PL_01 PL_15 // Player1, Open Table ENDIF IF player1_colour = POOL_COLOUR_BLACK SET_WIDGET_INFO2 WIDGET_POOL 0 0 0 0 PL_01 PL_14 // Player1, Black ENDIF GOSUB pl_text IF player2_colour = POOL_COLOUR_SPOTS SET_WIDGET_INFO2 WIDGET_POOL 1 0 0 0 PL_03 PL_12 // CPU, Solids ENDIF IF player2_colour = POOL_COLOUR_STRIPES SET_WIDGET_INFO2 WIDGET_POOL 1 0 0 0 PL_03 PL_13 // CPU, Stripes ENDIF IF player2_colour = POOL_COLOUR_NONE SET_WIDGET_INFO2 WIDGET_POOL 1 0 0 0 PL_03 PL_15 // CPU, Open Table ENDIF IF player2_colour = POOL_COLOUR_BLACK SET_WIDGET_INFO2 WIDGET_POOL 1 0 0 0 PL_03 PL_14 // CPU, Black ENDIF // outcome IF foul_type > 0 SWITCH foul_type // We'll let these strings wrap onto two lines. CASE 0 BREAK CASE 1 SET_WIDGET_INFO2 WIDGET_POOL 0 0 0 0 FOUL1 DUMMY // FOUL! Missed all balls SET_WIDGET_INFO2 WIDGET_POOL 1 0 0 0 DUMMY DUMMY // Empty cell. BREAK CASE 2 SET_WIDGET_INFO2 WIDGET_POOL 0 0 0 0 FOUL2 DUMMY // FOUL! Hit wrong ball first! SET_WIDGET_INFO2 WIDGET_POOL 1 0 0 0 DUMMY DUMMY // Empty cell. BREAK CASE 3 SET_WIDGET_INFO2 WIDGET_POOL 0 0 0 0 FOUL3 DUMMY // FOUL! Pocketed white! SET_WIDGET_INFO2 WIDGET_POOL 1 0 0 0 DUMMY DUMMY // Empty cell. BREAK CASE 4 SET_WIDGET_INFO2 WIDGET_POOL 0 0 0 0 FOUL4 DUMMY // FOUL! Pocketed wrong color! SET_WIDGET_INFO2 WIDGET_POOL 1 0 0 0 DUMMY DUMMY // Empty cell. BREAK CASE 5 SET_WIDGET_INFO2 WIDGET_POOL 0 0 0 0 FOUL5 DUMMY // FOUL! Pocketed black out of turn! SET_WIDGET_INFO2 WIDGET_POOL 1 0 0 0 DUMMY DUMMY // Empty cell. BREAK CASE 6 SET_WIDGET_INFO2 WIDGET_POOL 0 0 0 0 FOUL6 DUMMY // FOUL! No balls hit the rail! SET_WIDGET_INFO2 WIDGET_POOL 1 0 0 0 DUMMY DUMMY // Empty cell. BREAK ENDSWITCH // some balls have been potted ELSE // This info is currently not displayed in the new UI. /* IF no_of_balls_potted_this_turn > 0 IF no_of_balls_potted_this_turn = 1 // only 1 GOSUB pl_text SET_TEXT_COLOUR 134 155 184 255 DISPLAY_TEXT_CLAMPED 36.0 340.0 PL_05 TEXT_CLAMP_WIDTH_1 // Pocketed Ball! // show which ball was potted temp_int = 1 WHILE temp_int < 16 IF NOT balls_potted_this_turn[temp_int] = 0 GOSUB pl_text SET_TEXT_SCALE screen_coord_x[0] screen_coord_y[0] DISPLAY_TEXT_WITH_NUMBER 36.0 360.0 NUM temp_int temp_int = 16 ENDIF temp_int++ ENDWHILE ELSE // more than 1 GOSUB pl_text SET_TEXT_COLOUR 134 155 184 255 DISPLAY_TEXT_CLAMPED 36.0 340.0 PL_06 TEXT_CLAMP_WIDTH_1 // Pocketed Balls! // display balls that have been potted temp_int = 1 temp_int2 = no_of_balls_potted_this_turn temp_float = 36.0 WHILE temp_int2 > 0 WHILE temp_int < 16 IF NOT balls_potted_this_turn[temp_int] = 0 GOSUB pl_text SET_TEXT_SCALE screen_coord_x[0] screen_coord_y[0] // If it's not the last in the list it needs a comma after it. IF temp_int2 > 1 GET_STRING_WIDTH_WITH_NUMBER COMMA temp_int temp_int3 temp_float2 =# temp_int3 DISPLAY_TEXT_WITH_NUMBER temp_float 360.0 COMMA temp_int temp_float += temp_float2 temp_float += 5.0 // Not enough room after comma (why?). temp_int++ temp_int2-- // If it's the last in the list, it does not need a comma. ELSE DISPLAY_TEXT_WITH_NUMBER temp_float 360.0 NUM temp_int temp_int2 = -1 temp_int = 16 ENDIF ELSE temp_int++ ENDIF IF temp_int >= 16 temp_int2 = -1 ENDIF ENDWHILE ENDWHILE ENDIF ENDIF */ ENDIF ENDIF RETURN pool_edit_sprites: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_UP OR IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_W ball_sprite_height += 1.0 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_DOWN OR IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_Z ball_sprite_height += -1.0 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_RIGHT OR IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D ball_sprite_width += 1.0 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_LEFT OR IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A ball_sprite_width += -1.0 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_8 OR IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_W nib_sprite_height += 1.0 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_2 OR IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_Z nib_sprite_height += -1.0 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_6 OR IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D nib_sprite_width += 1.0 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_4 OR IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A nib_sprite_width += -1.0 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ENTER SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "ball_sprite_height = " SAVE_FLOAT_TO_DEBUG_FILE ball_sprite_height SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "ball_sprite_width = " SAVE_FLOAT_TO_DEBUG_FILE ball_sprite_width SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "nib_sprite_height = " SAVE_FLOAT_TO_DEBUG_FILE nib_sprite_height SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "nib_sprite_width = " SAVE_FLOAT_TO_DEBUG_FILE nib_sprite_width ENDIF RETURN LVAR_INT win3_dont_draw_help pool_draw_window_3: // hide in overhead view after 3 secs IF win3_dont_draw_help = 0 temp_int = 0 IF help_timer < 3000 temp_int = 1 ENDIF IF camera_mode = 1 help_timer = 0 temp_int = 1 IF aim_help_flag > 1 aim_help_flag = 0 ENDIF ENDIF IF aim_help_flag = 0 CLEAR_HELP PRINT_HELP_FOREVER PL_H3 // Use movement controls to aim the cue. Tap ~m~~widget_camera~ to change view. Tap ~m~~widget_gambling_continue~ to proceed to shooting. Tap ~m~~widget_minigame_cancel~ To quit. help_timer = 0 aim_help_flag++ ENDIF IF m_stage = 5 IF aim_help_flag = 1 IF help_timer > 3000 CLEAR_HELP aim_help_flag++ ENDIF ENDIF ELSE temp_int = 1 ENDIF ELSE temp_int = 1 win3_dont_draw_help = 0 ENDIF IF temp_int = 1 IF player1_colour = POOL_COLOUR_SPOTS SET_WIDGET_INFO2 WIDGET_POOL 0 0 0 0 PL_01 PL_12 // Player 1, Solids ENDIF IF player1_colour = POOL_COLOUR_STRIPES SET_WIDGET_INFO2 WIDGET_POOL 0 0 0 0 PL_01 PL_13 // Player 1, Stripes ENDIF IF player1_colour = POOL_COLOUR_NONE SET_WIDGET_INFO2 WIDGET_POOL 0 0 0 0 PL_01 PL_15 // Player 1, Open Table ENDIF IF player1_colour = POOL_COLOUR_BLACK SET_WIDGET_INFO2 WIDGET_POOL 0 0 0 0 PL_01 PL_14 // Player 1, Black ENDIF IF player2_colour = POOL_COLOUR_SPOTS SET_WIDGET_INFO2 WIDGET_POOL 1 0 0 0 PL_03 PL_12 // CPU, Solids ENDIF IF player2_colour = POOL_COLOUR_STRIPES SET_WIDGET_INFO2 WIDGET_POOL 1 0 0 0 PL_03 PL_13 // CPU, Stripes ENDIF IF player2_colour = POOL_COLOUR_NONE SET_WIDGET_INFO2 WIDGET_POOL 1 0 0 0 PL_03 PL_15 // CPU, Open Table ENDIF IF player2_colour = POOL_COLOUR_BLACK SET_WIDGET_INFO2 WIDGET_POOL 1 0 0 0 PL_03 PL_14 // CPU, Black ENDIF ENDIF RETURN init_pool_screen_coords: // text scale 2 SCREEN_COORD_X[0] = 0.4753 SCREEN_COORD_Y[0] = 2.3176 // window 2 - bottom corner SCREEN_COORD_X[1] = 174.4835 SCREEN_COORD_Y[1] = 409.0000 // window 3 - bottom corner SCREEN_COORD_X[2] = 157.0000 SCREEN_COORD_Y[2] = 396.8582 // window 4 - bottom corner SCREEN_COORD_X[3] = 168.1938 SCREEN_COORD_Y[3] = 394.4953 // text scale 1 SCREEN_COORD_X[4] = 0.4914 SCREEN_COORD_Y[4] = 2.3977 // wager win - bottom corner SCREEN_COORD_X[5] = 157.0 SCREEN_COORD_Y[5] = 409.0 RETURN LVAR_FLOAT screen_coord_x[6] screen_coord_y[6] LVAR_INT screen_edit pool_edit_text_size: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_C screen_edit++ IF screen_edit > 5 screen_edit = 0 ENDIF WRITE_DEBUG_WITH_INT screen_edit screen_edit ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_UP screen_coord_y[screen_edit] += -0.1 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_DOWN screen_coord_y[screen_edit] += 0.1 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_RIGHT screen_coord_x[screen_edit] += 0.1 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_LEFT screen_coord_x[screen_edit] += -0.1 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ENTER SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "POOL - SCREEN_COORDS" SAVE_NEWLINE_TO_DEBUG_FILE temp_int = 0 WHILE temp_int < 6 SAVE_STRING_TO_DEBUG_FILE "screen_coord_x[" SAVE_INT_TO_DEBUG_FILE temp_int SAVE_STRING_TO_DEBUG_FILE "] = " SAVE_FLOAT_TO_DEBUG_FILE screen_coord_x[temp_int] SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "screen_coord_y[" SAVE_INT_TO_DEBUG_FILE temp_int SAVE_STRING_TO_DEBUG_FILE "] = " SAVE_FLOAT_TO_DEBUG_FILE screen_coord_y[temp_int] SAVE_NEWLINE_TO_DEBUG_FILE temp_int++ ENDWHILE ENDIF RETURN pool_draw_window_4: // hide after 3 secs temp_int = 0 IF help_timer < 3000 temp_int = 1 ENDIF IF aim_help_flag = 0 CLEAR_HELP help_timer = 0 aim_help_flag++ ENDIF IF m_stage = 4 IF aim_help_flag = 1 IF help_timer > 3000 CLEAR_HELP aim_help_flag++ ENDIF ENDIF ENDIF IF temp_int = 1 PRINT_HELP_FOREVER PL_HID // Use the movement controls to position the cue ball. Press ~m~~widget_gambling_continue~ to continue. Press ~m~~widget_minigame_cancel~ to quit. SET_WIDGET_INFO2 WIDGET_POOL 0 0 0 0 PL_17 DUMMY // Ball in hand SET_WIDGET_INFO2 WIDGET_POOL 0 0 0 0 DUMMY DUMMY // Empty cell. ENDIF RETURN // ****************************************************************************************** // ONSCREEN TEXT GOSUBS // ****************************************************************************************** pl_help_text_1: SET_TEXT_SCALE 0.4487 1.5974 SET_TEXT_COLOUR 128 148 178 255 SET_TEXT_JUSTIFY ON SET_TEXT_WRAPX 2000.0 SET_TEXT_PROPORTIONAL ON RETURN pl_help_text_2: SET_TEXT_SCALE 0.4487 1.5974 SET_TEXT_COLOUR 128 148 178 255 SET_TEXT_RIGHT_JUSTIFY ON SET_TEXT_WRAPX 2000.0 SET_TEXT_PROPORTIONAL ON RETURN pl_txt_big_blue_centre: SET_TEXT_SCALE 0.9 2.4 SET_TEXT_COLOUR 128 148 178 255 SET_TEXT_CENTRE ON SET_TEXT_WRAPX 2000.0 SET_TEXT_PROPORTIONAL ON RETURN pl_txt_big_red_centre: SET_TEXT_SCALE 0.9 2.4 SET_TEXT_COLOUR 081 25 29 255 SET_TEXT_CENTRE ON SET_TEXT_WRAPX 2000.0 SET_TEXT_PROPORTIONAL ON RETURN pl_txt_med_blue_left: SET_TEXT_SCALE 0.54 1.44 SET_TEXT_COLOUR 128 148 178 255 SET_TEXT_JUSTIFY ON SET_TEXT_WRAPX 2000.0 SET_TEXT_PROPORTIONAL ON RETURN pl_txt_small_blue_left: SET_TEXT_SCALE 0.405 1.08 SET_TEXT_COLOUR 128 148 178 255 SET_TEXT_JUSTIFY ON SET_TEXT_WRAPX 2000.0 SET_TEXT_PROPORTIONAL ON RETURN pl_txt_med_red_left: SET_TEXT_SCALE 0.54 1.44 SET_TEXT_COLOUR 081 25 29 255 SET_TEXT_JUSTIFY ON SET_TEXT_WRAPX 2000.0 SET_TEXT_PROPORTIONAL ON RETURN LVAR_FLOAT text_float pl_text: SET_TEXT_COLOUR 180 180 180 255 SET_TEXT_SCALE screen_coord_x[4] screen_coord_y[4] SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_JUSTIFY OFF SET_TEXT_CENTRE OFF text_float = screen_coord_x[1] - 20.0 //SET_TEXT_WRAPX text_float SET_TEXT_WRAPX 640.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_BACKGROUND OFF RETURN LVAR_FLOAT ball_turn_mass edit_pool_turn_mass: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_DOWN // update all the balls temp_int = 0 WHILE temp_int < 16 IF DOES_OBJECT_EXIST p_ball[temp_int] SET_OBJECT_TURN_MASS p_Ball[temp_int] ball_turn_mass ENDIF temp_int++ ENDWHILE ENDIF // update all the balls IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ENTER WHILE temp_int < 16 IF DOES_OBJECT_EXIST p_ball[temp_int] SET_OBJECT_TURN_MASS p_Ball[temp_int] ball_turn_mass ENDIF temp_int++ ENDWHILE ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_8 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_2 // increase pool_stop_velocity += -0.001 //WRITE_DEBUG_WITH_FLOAT pool_stop_velocity pool_stop_velocity ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_6 // increase pool_stop_rotation_velocity += 0.001 //WRITE_DEBUG_WITH_FLOAT pool_stop_rotation_velocity pool_stop_rotation_velocity ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_4 // increase pool_stop_rotation_velocity += -0.001 //WRITE_DEBUG_WITH_FLOAT pool_stop_rotation_velocity pool_stop_rotation_velocity ENDIF RETURN // ************************************************************************************************************* // END OF LEVEL GOSUBS - fail, pass, cleanup // ************************************************************************************************************* // FAIL mission_failed_POOL2: PRINT_BIG M_FAIL 5000 1 RETURN // PASS mission_passed_POOL2: PRINT_WITH_NUMBER_BIG ( M_PASS ) 10000 5000 1 //"Mission Passed!" ADD_SCORE player1 10000 CLEAR_WANTED_LEVEL player1 RETURN // CLEANUP mission_cleanup_POOL2: REMOVE_WIDGET_FLAG WIDGET_LOOK 4 // WIDGET_FLAG_ENABLED_IN_CUTSCENE REMOVE_WIDGET_FLAG WIDGET_CAM_TOGGLE 4 // WIDGET_FLAG_ENABLED_IN_CUTSCENE REMOVE_WIDGET_FLAG WIDGET_PLAYER_INFO 4 // WIDGET_FLAG_ENABLED_IN_CUTSCENE SET_WIDGET_INFO2 WIDGET_POOL 0 0 0 0 DUMMY DUMMY // Empty cell. SET_WIDGET_INFO2 WIDGET_POOL 1 0 0 0 DUMMY DUMMY // Empty cell. MAKE_PLAYER_GANG_REAPPEAR DISABLE_2ND_PAD_FOR_DEBUG FALSE SET_SCRIPT_COOP_GAME FALSE disable_debug = 0 CLEAR_MISSION_AUDIO 4 temp_int = 0 WHILE temp_int < 10 IF DOES_OBJECT_EXIST proj_cue_ball_objects[temp_int] DELETE_OBJECT proj_cue_ball_objects[temp_int] ENDIF temp_int++ ENDWHILE IF NOT IS_CHAR_DEAD active_pool_opponent CLEAR_LOOK_AT active_pool_opponent GET_CHAR_COORDINATES active_pool_opponent x y z GET_GROUND_Z_FOR_3D_COORD x y z z player1_home_z = z player2_home_z = z ENDIF // set chars to their home position IF NOT IS_CHAR_DEAD active_pool_opponent GET_CHAR_COORDINATES active_pool_opponent x y z SET_CHAR_COORDINATES active_pool_opponent x y player2_home_z ENDIF IF IS_PLAYER_PLAYING player1 GET_CHAR_COORDINATES scplayer x y z SET_CHAR_COORDINATES scplayer player1_home_x player1_home_y player1_home_z IF NOT IS_CHAR_DEAD active_pool_opponent GET_CHAR_COORDINATES active_pool_opponent x2 y2 z2 ENDIF vec_x = x2 - x vec_y = y2 - y GET_HEADING_FROM_VECTOR_2D vec_x vec_y heading SET_CHAR_HEADING scplayer heading ENDIF REQUEST_MODEL POOLCUE WHILE NOT HAS_MODEL_LOADED POOLCUE WAIT 0 ENDWHILE // give both chars weapons IF IS_PLAYER_PLAYING player1 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE DROP_OBJECT scplayer FALSE GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_POOL_CUE 9999 ENDIF // delete cues IF DOES_OBJECT_EXIST cue1 DELETE_OBJECT cue1 ENDIF IF DOES_OBJECT_EXIST cue2 DELETE_OBJECT cue2 ENDIF IF DOES_OBJECT_EXIST aim_cue DELETE_OBJECT aim_cue ENDIF IF DOES_OBJECT_EXIST active_initial_cue DELETE_OBJECT active_initial_cue ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED POOLCUE MARK_MODEL_AS_NO_LONGER_NEEDED K_POOLQ REMOVE_ANIMATION POOL // === MARK ENTITIES AS NO LONGER NEEDED === (cars,peds,objects,blips,attractors) // === REMOVE ANY OTHER LOADED STUFF === (models,animations,textures) IF IS_PLAYER_PLAYING player1 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COLLISION scplayer TRUE ENDIF // === RESTORE ENVIRONMENT SETTINGS === SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 CLEAR_PRINTS CLEAR_HELP flag_player_on_mission = 0 IF IS_PLAYER_PLAYING player1 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_LOOK_AT scplayer OPEN_SEQUENCE_TASK temp_seq TASK_STAND_STILL -1 1 TASK_PAUSE -1 1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK scplayer temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF MISSION_HAS_FINISHED RETURN POOL_find_camera_position: // for camera position GET_DEBUG_CAMERA_COORDINATES x y z IF DOES_OBJECT_EXIST table GET_OBJECT_COORDINATES table x2 y2 z2 GET_OBJECT_HEADING table heading ENDIF heading *= -1.0 COS heading temp_float SIN heading temp_float2 // get coords relative to car vec_x = x - x2 vec_y = y - y2 vec_z = z - z2 // work out new vec_x vec2_x = vec_x * temp_float temp_float3 = vec_y * temp_float2 vec2_x -= temp_float3 // work out new vec_y vec2_y = vec_x * temp_float2 temp_float3 = vec_y * temp_float vec2_y += temp_float3 // save SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "FIXED_CAMERA_POSITION - OFFSET FROM table = " SAVE_FLOAT_TO_DEBUG_FILE vec2_x SAVE_FLOAT_TO_DEBUG_FILE vec2_y SAVE_FLOAT_TO_DEBUG_FILE vec_z // for camera point at GET_DEBUG_CAMERA_POINT_AT x y z // get coords relative to car vec_x = x - x2 vec_y = y - y2 vec_z = z - z2 // work out new vec_x vec2_x = vec_x * temp_float temp_float3 = vec_y * temp_float2 vec2_x -= temp_float3 // work out new vec_y vec2_y = vec_x * temp_float2 temp_float3 = vec_y * temp_float vec2_y += temp_float3 // save SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "CAMERA_POINT_AT - OFFSET FROM table = " SAVE_FLOAT_TO_DEBUG_FILE vec2_x SAVE_FLOAT_TO_DEBUG_FILE vec2_y SAVE_FLOAT_TO_DEBUG_FILE vec_z RETURN POOL_find_camera_position_from_char: // for camera position GET_DEBUG_CAMERA_COORDINATES x y z IF DOES_CHAR_EXIST current_char IF NOT IS_CHAR_DEAD current_char GET_CHAR_COORDINATES current_char x2 y2 z2 GET_CHAR_HEADING current_char heading ENDIF ENDIF heading *= -1.0 COS heading temp_float SIN heading temp_float2 // get coords relative to car vec_x = x - x2 vec_y = y - y2 vec_z = z - z2 // work out new vec_x vec2_x = vec_x * temp_float temp_float3 = vec_y * temp_float2 vec2_x -= temp_float3 // work out new vec_y vec2_y = vec_x * temp_float2 temp_float3 = vec_y * temp_float vec2_y += temp_float3 // save SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "FIXED_CAMERA_POSITION - OFFSET FROM char = " SAVE_FLOAT_TO_DEBUG_FILE vec2_x SAVE_FLOAT_TO_DEBUG_FILE vec2_y SAVE_FLOAT_TO_DEBUG_FILE vec_z // for camera point at GET_DEBUG_CAMERA_POINT_AT x y z // get coords relative to car vec_x = x - x2 vec_y = y - y2 vec_z = z - z2 // work out new vec_x vec2_x = vec_x * temp_float temp_float3 = vec_y * temp_float2 vec2_x -= temp_float3 // work out new vec_y vec2_y = vec_x * temp_float2 temp_float3 = vec_y * temp_float vec2_y += temp_float3 // save SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "CAMERA_POINT_AT - OFFSET FROM char = " SAVE_FLOAT_TO_DEBUG_FILE vec2_x SAVE_FLOAT_TO_DEBUG_FILE vec2_y SAVE_FLOAT_TO_DEBUG_FILE vec_z RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : // AUTHOR : Neil // DESICRIPTION : // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** { // ************************************************************************************************************* // GENERAL INITIALISATION - Every level requires this // ************************************************************************************************************* SCRIPT_NAME LOWR GOSUB mission_start_LOWR IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_LOWR ENDIF GOSUB mission_cleanup_LOWR MISSION_END mission_start_LOWR: //REGISTER_MISSION_GIVEN flag_player_on_mission = 1 // general variables that are in every mission - DON'T DECLARE MISSION SPECIFIC VARIABLES HERE LVAR_INT m_stage LVAR_INT m_goals LVAR_INT m_passed LVAR_INT m_failed LVAR_INT m_quit LVAR_INT m_frame_num LVAR_INT m_this_frame_time LVAR_INT m_last_frame_time LVAR_INT m_time_diff // commonly used temporary variables LVAR_INT temp_int temp_int2 temp_int3 LVAR_FLOAT temp_float temp_float2 temp_float3 LVAR_INT temp_seq LVAR_FLOAT vec_x vec_y vec_z LVAR_FLOAT vec2_x vec2_y vec2_z LVAR_FLOAT x2 y2 z2 LVAR_FLOAT x3 y3 z3 // commonly used flags LVAR_INT dialogue_flag LVAR_INT help_flag // commonly used timers LVAR_INT dialogue_timer LVAR_INT help_timer // commonly used decision makers LVAR_INT empty_dm LVAR_INT tough_dm VAR_INT lowr_timer m_stage = 0 m_goals = 0 m_passed = 0 m_failed = 0 m_quit = 0 dialogue_flag = 0 help_flag = 0 dialogue_timer = 0 help_timer = 0 TIMERA = 0 TIMERB = 0 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY empty_dm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH tough_dm mission_loop_LOWR: WAIT 0 // for filshie IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S m_passed = 1 ENDIF // end of debug tools ************** // Frame counter m_frame_num++ IF m_frame_num > 22 m_frame_num = 0 ENDIF // Additional Timers GET_GAME_TIMER m_this_frame_time m_time_diff = m_this_frame_time - m_last_frame_time m_last_frame_time = m_this_frame_time dialogue_timer += m_time_diff help_timer += m_time_diff meet_jump_timer[0] += m_time_diff meet_jump_timer[1] += m_time_diff meet_jump_timer[2] += m_time_diff camera_timer += m_time_diff pscore_timer += m_time_diff GET_AREA_VISIBLE temp_int IF temp_int = 0 lowr_timer += m_time_diff ENDIF SWITCH m_stage CASE 0 GOSUB LOWR_m_stage_0 BREAK CASE 1 //GOSUB LOWR_m_stage_1 BREAK CASE 2 //GOSUB LOWR_m_stage_2 BREAK CASE 3 GOSUB LOWR_m_stage_3 BREAK CASE 4 GOSUB LOWR_m_stage_4 BREAK CASE 5 GOSUB LOWR_m_stage_5 BREAK CASE 6 GOSUB LOWR_m_stage_6 BREAK ENDSWITCH GOSUB LOWR_global_functions IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_P GOSUB LOWR_delete_ped ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_O GOSUB LOWR_delete_car ENDIF // end of main loop *** don't change *** end_of_main_loop_LOWR: IF m_quit = 0 IF m_failed = 0 IF m_passed = 0 GOTO mission_loop_LOWR ELSE GOSUB mission_passed_LOWR RETURN ENDIF ELSE GOSUB mission_failed_LOWR RETURN ENDIF ELSE RETURN // quits out - goes to cleanup ENDIF // ************************************************************************************************************* // INITIALISATION - SPECIFIC TO THIS LEVEL // ************************************************************************************************************* LOWR_m_stage_0: // fake creates IF m_goals = -1 CREATE_CAR PONY 0.0 0.0 0.0 meet_car[0] CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 meet_ped[0] ADD_BLIP_FOR_COORD 0.0 0.0 0.0 location_blip ADD_BLIP_FOR_COORD 0.0 0.0 0.0 car_blip CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 bounce_girl ENDIF // cars LVAR_INT pcar LVAR_INT meet_car[7] // peds LVAR_INT mechanic_dude LVAR_INT meet_ped[22] LVAR_INT bounce_girl LVAR_INT sw6_kendal LVAR_INT sw6_cesar // blips LVAR_INT location_blip LVAR_INT car_blip // flags LVAR_INT car_hyd_flag LVAR_INT meet_ped_flag[22] LVAR_INT player_has_attacked_meet LVAR_INT meeting_is_loaded LVAR_INT input_mode LVAR_INT camera_mode LVAR_INT cross_pressed LVAR_INT select_pressed // timers LVAR_INT meet_jump_timer[3] LVAR_INT camera_timer LVAR_INT pscore_timer // floats LVAR_FLOAT load_car_x[7] LVAR_FLOAT load_car_y[7] LVAR_FLOAT load_car_z[7] LVAR_FLOAT load_car_h[7] LVAR_FLOAT load_ped_x[22] LVAR_FLOAT load_ped_y[22] LVAR_FLOAT load_ped_z[22] LVAR_FLOAT load_ped_h[22] LVAR_FLOAT meet_wheel_fr[3] LVAR_FLOAT meet_wheel_fl[3] LVAR_FLOAT meet_wheel_br[3] LVAR_FLOAT meet_wheel_bl[3] LVAR_FLOAT offx offy offz LVAR_FLOAT force_multiplier // wager stuff LVAR_INT bet_step LVAR_INT min_bet LVAR_INT max_bet LVAR_INT current_wager LVAR_INT cross_is_pressed LVAR_INT initial_stake LVAR_INT square_is_pressed min_bet = 50 max_bet = 1000 car_hyd_flag = 0 temp_int = 0 WHILE temp_int < 22 meet_ped_flag[temp_int] = 0 temp_int++ ENDWHILE player_has_attacked_meet = 0 meeting_is_loaded = 0 input_mode = 0 camera_mode = 0 select_pressed = 0 // added to get byte size the same select_pressed = camera_mode select_pressed = camera_mode select_pressed = camera_mode select_pressed = camera_mode select_pressed = camera_mode select_pressed = 0 // set floats force_multiplier = 0.01 // fake creates IF m_goals = -1 ENDIF LOAD_MISSION_TEXT LOWR SUPPRESS_CAR_MODEL SAVANNA GOSUB LOWR_next_stage m_stage = 3 RETURN // ************************************************************************************************************* // STAGE 3 - Player has to go to lowrider meeting // ************************************************************************************************************* LOWR_m_stage_3: IF m_goals = 0 //CLEAR_AREA 1793.0676 -1904.2538 12.3989 200.0 TRUE CLEAR_AREA_OF_CHARS 1721.1167 -1967.4893 11.0 1904.3911 -1838.3147 15.0 // set flags player_has_attacked_meet = 0 meeting_is_loaded = 0 // set floats load_car_x[0] = 1796.9468 // top left load_car_y[0] = -1924.3765 load_car_z[0] = 13.2937 load_car_h[0] = 60.9627 load_car_x[1] = 1802.8647 // infront of middle car load_car_y[1] = -1918.7424 load_car_z[1] = 13.2965 load_car_h[1] = 357.6195 load_car_x[2] = 1788.9922 // top right load_car_y[2] = -1924.5015 load_car_z[2] = 13.2937 load_car_h[2] = 305.5176 load_car_x[3] = 1784.1887 // behind middle car load_car_y[3] = -1913.4397 load_car_z[3] = 13.2957 load_car_h[3] = 188.9639 load_car_x[4] = 1790.9639 // middle car load_car_y[4] = -1913.8983 load_car_z[4] = 13.2985 load_car_h[4] = 266.2616 load_car_x[5] = 1799.8992 // nearest entrance left load_car_y[5] = -1906.4248 load_car_z[5] = 13.3025 load_car_h[5] = 184.4735 load_car_x[6] = 1785.9397 // entrance right load_car_y[6] = -1904.8394 load_car_z[6] = 13.2970 load_car_h[6] = 152.5742 load_ped_x[0] = 1798.6031 load_ped_y[0] = -1908.2596 load_ped_z[0] = 12.4388 load_ped_h[0] = 102.3995 load_ped_x[1] = 1798.8867 load_ped_y[1] = -1907.6678 load_ped_z[1] = 12.4399 load_ped_h[1] = 174.1189 load_ped_x[2] = 1798.8340 load_ped_y[2] = -1911.7822 load_ped_z[2] = 12.4374 load_ped_h[2] = 158.2591 load_ped_x[3] = 1799.5836 load_ped_y[3] = -1912.7948 load_ped_z[3] = 12.4368 load_ped_h[3] = 74.6392 load_ped_x[4] = 1800.9021 load_ped_y[4] = -1918.7135 load_ped_z[4] = 12.4331 load_ped_h[4] = 256.6391 load_ped_x[5] = 1798.1663 load_ped_y[5] = -1920.4265 load_ped_z[5] = 12.4321 load_ped_h[5] = 19.6592 load_ped_x[6] = 1796.8108 load_ped_y[6] = -1920.4260 load_ped_z[6] = 12.4321 load_ped_h[6] = 331.8393 load_ped_x[7] = 1787.7799 load_ped_y[7] = -1919.0714 load_ped_z[7] = 12.4329 load_ped_h[7] = 331.8393 load_ped_x[8] = 1786.7098 load_ped_y[8] = -1917.9816 load_ped_z[8] = 12.4332 load_ped_h[8] = 285.8198 load_ped_x[9] = 1786.1943 load_ped_y[9] = -1907.3561 load_ped_z[9] = 12.4327 load_ped_h[9] = 260.4003 load_ped_x[10] = 1786.8982 load_ped_y[10] = -1906.5308 load_ped_z[10] = 12.4335 load_ped_h[10] = 141.9807 load_ped_x[11] = 1786.2305 load_ped_y[11] = -1908.6224 load_ped_z[11] = 12.4328 load_ped_h[11] = 327.1608 load_ped_x[12] = 1789.1875 load_ped_y[12] = -1919.6648 load_ped_z[12] = 12.4325 load_ped_h[12] = 357.2196 load_ped_x[13] = 1788.1033 load_ped_y[13] = -1907.9491 load_ped_z[13] = 12.4352 load_ped_h[13] = 200.9411 load_ped_x[14] = 1797.9966 load_ped_y[14] = -1912.7402 load_ped_z[14] = 12.4368 load_ped_h[14] = 312.2806 load_ped_x[15] = 1796.4597 load_ped_y[15] = -1908.8817 load_ped_z[15] = 12.4368 load_ped_h[15] = 312.2806 REQUEST_MODEL VLA1 REQUEST_MODEL VLA2 REQUEST_MODEL VLA3 REQUEST_MODEL BFYPRO REQUEST_MODEL HFYST REQUEST_MODEL SAVANNA REQUEST_MODEL REMINGTN REQUEST_ANIMATION LOWRIDER LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED VLA1 OR NOT HAS_MODEL_LOADED VLA2 OR NOT HAS_MODEL_LOADED VLA3 OR NOT HAS_MODEL_LOADED BFYPRO OR NOT HAS_MODEL_LOADED HFYST WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED SAVANNA OR NOT HAS_MODEL_LOADED REMINGTN WAIT 0 ENDWHILE WHILE NOT HAS_ANIMATION_LOADED LOWRIDER WAIT 0 ENDWHILE // put up text and blip IF NOT DOES_BLIP_EXIST location_blip ADD_BLIP_FOR_COORD 1793.0676 -1904.2538 12.3989 location_blip ENDIF SWITCH_AUDIO_ZONE LOWRIDE TRUE lowr_timer = 0 m_goals++ ENDIF // update gathering behaviour IF m_goals = 1 IF meeting_is_loaded = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 1792.9243 -1918.9873 150.0 150.0 FALSE // create initial cars CREATE_CAR REMINGTN 0.0 0.0 0.0 meet_car[0] // top left CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[1] // infront of middle car CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[2] // top right CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[3] // behind middle car CREATE_CAR REMINGTN 0.0 0.0 0.0 meet_car[4] // middle car CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[5] // nearest entrance left CREATE_CAR REMINGTN 0.0 0.0 0.0 meet_car[6] // entrance right CHANGE_CAR_COLOUR meet_car[0] 1 0 CHANGE_CAR_COLOUR meet_car[1] 2 1 CHANGE_CAR_COLOUR meet_car[2] 3 2 CHANGE_CAR_COLOUR meet_car[3] 10 3 CHANGE_CAR_COLOUR meet_car[4] 9 4 CHANGE_CAR_COLOUR meet_car[5] 6 5 CHANGE_CAR_COLOUR meet_car[6] 7 6 // bouncing cars SET_CAR_STATUS meet_car[0] STATUS_PHYSICS SET_CAR_STATUS meet_car[4] STATUS_PHYSICS SET_CAR_STATUS meet_car[3] STATUS_PHYSICS SET_CAR_HYDRAULICS meet_car[0] TRUE SET_CAR_HYDRAULICS meet_car[4] TRUE SET_CAR_HYDRAULICS meet_car[3] TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER meet_car[0] TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER meet_car[4] TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER meet_car[3] TRUE temp_int = 0 WHILE temp_int < 7 SET_CAR_COORDINATES meet_car[temp_int] load_car_x[temp_int] load_car_y[temp_int] load_car_z[temp_int] SET_CAR_HEADING meet_car[temp_int] load_car_h[temp_int] LOCK_CAR_DOORS meet_car[temp_int] CARLOCK_LOCKOUT_PLAYER_ONLY temp_int++ ENDWHILE WAIT 0 // create initial peds // guys CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[0] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[2] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[3] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[5] WAIT 0 CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[6] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[8] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[9] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[11] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[12] WAIT 0 // girls CREATE_CHAR PEDTYPE_MISSION1 HFYST 0.0 0.0 0.0 meet_ped[1] CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[4] CREATE_CHAR PEDTYPE_MISSION1 HFYST 0.0 0.0 0.0 meet_ped[7] CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[10] // wanderers CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[13] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[14] CREATE_CHAR PEDTYPE_MISSION1 HFYST 0.0 0.0 0.0 meet_ped[15] WAIT 0 // drivers CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[16] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[17] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[18] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[19] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[20] // passenger CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[21] // set all on foot chars positions temp_int = 0 WHILE temp_int < 16 IF DOES_CHAR_EXIST meet_ped[temp_int] IF NOT IS_CHAR_DEAD meet_ped[temp_int] SET_CHAR_COORDINATES meet_ped[temp_int] load_ped_x[temp_int] load_ped_y[temp_int] load_ped_z[temp_int] SET_CHAR_HEADING meet_ped[temp_int] load_ped_h[temp_int] ENDIF ENDIF temp_int++ ENDWHILE WAIT 0 // set some of the guys to tough decision makers temp_int = 0 WHILE temp_int < 22 IF NOT IS_CHAR_DEAD meet_ped[temp_int] SET_CHAR_DECISION_MAKER meet_ped[temp_int] tough_dm ENDIF temp_int += 4 ENDWHILE // put drivers in cars IF NOT IS_CHAR_DEAD meet_ped[16] IF NOT IS_CAR_DEAD meet_car[1] WARP_CHAR_INTO_CAR meet_ped[16] meet_car[1] ENDIF ENDIF IF NOT IS_CHAR_DEAD meet_ped[17] IF NOT IS_CAR_DEAD meet_car[2] WARP_CHAR_INTO_CAR meet_ped[17] meet_car[2] ENDIF ENDIF IF NOT IS_CHAR_DEAD meet_ped[18] IF NOT IS_CAR_DEAD meet_car[4] WARP_CHAR_INTO_CAR meet_ped[18] meet_car[4] ENDIF ENDIF IF NOT IS_CHAR_DEAD meet_ped[19] IF NOT IS_CAR_DEAD meet_car[0] WARP_CHAR_INTO_CAR meet_ped[19] meet_car[0] ENDIF ENDIF IF NOT IS_CHAR_DEAD meet_ped[20] IF NOT IS_CAR_DEAD meet_car[3] WARP_CHAR_INTO_CAR meet_ped[20] meet_car[3] ENDIF ENDIF // put passenger in car IF NOT IS_CHAR_DEAD meet_ped[21] IF NOT IS_CAR_DEAD meet_car[2] WARP_CHAR_INTO_CAR_AS_PASSENGER meet_ped[21] meet_car[2] 0 ENDIF ENDIF //SET_RADIO_CHANNEL 11 meeting_is_loaded = 1 lowrider_meeting_is_loaded = 1 //CHECKPOINT_SAVE_ODDJOB 1 ENDIF ELSE IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer 1792.9243 -1918.9873 150.0 150.0 FALSE temp_int = 0 WHILE temp_int < 7 DELETE_CAR meet_car[temp_int] temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 22 DELETE_CHAR meet_ped[temp_int] temp_int++ ENDWHILE meeting_is_loaded = 0 ENDIF ENDIF IF meeting_is_loaded = 1 IF player_has_attacked_meet = 0 // peds SWITCH m_frame_num CASE 0 IF NOT IS_CHAR_DEAD meet_ped[0] GET_SCRIPT_TASK_STATUS meet_ped[0] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CAR_DEAD meet_car[5] IF LOCATE_CAR_3D meet_car[5] load_car_x[5] load_car_y[5] load_car_z[5] 0.2 0.2 1.0 FALSE TASK_PLAY_ANIM -1 M_smklean_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ELSE TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF ELSE TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[0] temp_seq CLEAR_SEQUENCE_TASK temp_seq ELSE IF IS_CHAR_PLAYING_ANIM meet_ped[0] M_smklean_loop IF NOT IS_CAR_DEAD meet_car[5] IF NOT LOCATE_CAR_3D meet_car[5] load_car_x[5] load_car_y[5] load_car_z[5] 0.2 0.2 1.0 FALSE CLEAR_CHAR_TASKS meet_ped[0] ENDIF ENDIF ENDIF ENDIF ENDIF BREAK CASE 1 IF NOT IS_CHAR_DEAD meet_ped[1] GET_SCRIPT_TASK_STATUS meet_ped[1] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CAR_DEAD meet_car[5] IF LOCATE_CAR_3D meet_car[5] load_car_x[5] load_car_y[5] load_car_z[5] 0.2 0.2 1.0 FALSE TASK_PLAY_ANIM -1 F_smklean_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ELSE TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF ELSE TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[1] temp_seq CLEAR_SEQUENCE_TASK temp_seq ELSE IF IS_CHAR_PLAYING_ANIM meet_ped[1] F_smklean_loop IF NOT IS_CAR_DEAD meet_car[5] IF NOT LOCATE_CAR_3D meet_car[5] load_car_x[5] load_car_y[5] load_car_z[5] 0.2 0.2 1.0 FALSE CLEAR_CHAR_TASKS meet_ped[1] ENDIF ENDIF ENDIF ENDIF ENDIF BREAK CASE 2 IF NOT IS_CHAR_DEAD meet_ped[2] GET_SCRIPT_TASK_STATUS meet_ped[2] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD meet_ped[3] TASK_CHAT_WITH_CHAR -1 meet_ped[3] TRUE TRUE ELSE TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[2] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 3 IF NOT IS_CHAR_DEAD meet_ped[3] GET_SCRIPT_TASK_STATUS meet_ped[3] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD meet_ped[2] TASK_CHAT_WITH_CHAR -1 meet_ped[2] FALSE TRUE ELSE TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[3] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 4 IF NOT IS_CHAR_DEAD meet_ped[4] GET_SCRIPT_TASK_STATUS meet_ped[4] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 car_hookertalk PED 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[4] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 5 IF NOT IS_CHAR_DEAD meet_ped[5] GET_SCRIPT_TASK_STATUS meet_ped[5] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD meet_ped[6] TASK_CHAT_WITH_CHAR -1 meet_ped[6] FALSE TRUE ELSE TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[5] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 6 IF NOT IS_CHAR_DEAD meet_ped[6] GET_SCRIPT_TASK_STATUS meet_ped[6] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD meet_ped[5] TASK_CHAT_WITH_CHAR -1 meet_ped[5] TRUE TRUE ELSE TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[6] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 7 IF NOT IS_CHAR_DEAD meet_ped[7] GET_SCRIPT_TASK_STATUS meet_ped[7] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[7] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 8 IF NOT IS_CHAR_DEAD meet_ped[8] GET_SCRIPT_TASK_STATUS meet_ped[8] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[8] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 9 IF NOT IS_CHAR_DEAD meet_ped[9] GET_SCRIPT_TASK_STATUS meet_ped[9] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CAR_DEAD meet_car[6] IF LOCATE_CAR_3D meet_car[6] load_car_x[6] load_car_y[6] load_car_z[6] 0.2 0.2 1.0 FALSE TASK_PLAY_ANIM -1 M_smklean_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ELSE TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF ELSE TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[9] temp_seq CLEAR_SEQUENCE_TASK temp_seq ELSE IF IS_CHAR_PLAYING_ANIM meet_ped[9] M_smklean_loop IF NOT IS_CAR_DEAD meet_car[6] IF NOT LOCATE_CAR_3D meet_car[6] load_car_x[6] load_car_y[6] load_car_z[6] 0.2 0.2 1.0 FALSE CLEAR_CHAR_TASKS meet_ped[9] ENDIF ENDIF ENDIF ENDIF ENDIF BREAK CASE 10 IF NOT IS_CHAR_DEAD meet_ped[10] GET_SCRIPT_TASK_STATUS meet_ped[10] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 fucku PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 woman_idlestance PED 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[10] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 11 IF NOT IS_CHAR_DEAD meet_ped[11] GET_SCRIPT_TASK_STATUS meet_ped[11] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[11] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 12 IF NOT IS_CHAR_DEAD meet_ped[12] GET_SCRIPT_TASK_STATUS meet_ped[12] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE TRUE TRUE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[12] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 13 IF NOT IS_CHAR_DEAD meet_ped[13] GET_SCRIPT_TASK_STATUS meet_ped[13] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 1786.7185 -1915.8783 12.3942 PEDMOVE_WALK 60000 TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 1796.1786 -1919.4648 12.3928 PEDMOVE_WALK 60000 TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 1786.7185 -1915.8783 12.3942 PEDMOVE_WALK 60000 TASK_GO_STRAIGHT_TO_COORD -1 load_ped_x[13] load_ped_y[13] load_ped_z[13] PEDMOVE_WALK 60000 IF NOT IS_CHAR_DEAD meet_ped[9] TASK_TURN_CHAR_TO_FACE_CHAR -1 meet_ped[9] ENDIF TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[13] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 14 IF NOT IS_CHAR_DEAD meet_ped[14] GET_SCRIPT_TASK_STATUS meet_ped[14] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 1800.3669 -1917.3940 12.3938 PEDMOVE_WALK 60000 TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 1789.0570 -1917.9011 12.3936 PEDMOVE_WALK 60000 TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 FALSE TRUE TRUE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 1788.5259 -1907.2943 12.3955 PEDMOVE_WALK 60000 TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 1796.4777 -1908.1738 12.3983 PEDMOVE_WALK 60000 TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[14] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 15 IF NOT IS_CHAR_DEAD meet_ped[15] GET_SCRIPT_TASK_STATUS meet_ped[15] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 1787.6718 -1908.5668 12.3949 PEDMOVE_WALK 60000 TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 1786.7195 -1917.1067 12.3942 PEDMOVE_WALK 60000 TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 FALSE FALSE FALSE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 1787.6718 -1908.5668 12.3949 PEDMOVE_WALK 60000 TASK_GO_STRAIGHT_TO_COORD -1 load_ped_x[15] load_ped_y[15] load_ped_z[15] PEDMOVE_WALK 60000 TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[15] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 16 IF NOT IS_CHAR_DEAD meet_ped[16] GET_SCRIPT_TASK_STATUS meet_ped[16] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 TAP_HAND PED 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[16] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 17 IF NOT IS_CHAR_DEAD meet_ped[17] GET_SCRIPT_TASK_STATUS meet_ped[17] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 TAP_HAND PED 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[17] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 18 // check if player has attacked meeting temp_int = 0 WHILE temp_int < 7 IF DOES_VEHICLE_EXIST meet_car[temp_int] IF NOT IS_CAR_DEAD meet_car[temp_int] IF HAS_CAR_BEEN_DAMAGED_BY_CHAR meet_car[temp_int] scplayer GET_CAR_HEALTH meet_car[temp_int] temp_int2 IF temp_int2 < 950 PRINT_NOW LOW_32 5000 1 // ~r~The meeting is dispersing because fucked with one of their cars. player_has_attacked_meet = 1 temp_int = 7 ENDIF ENDIF ELSE PRINT_NOW LOW_32 5000 1 // ~r~The meeting is dispersing because fucked with one of their cars. player_has_attacked_meet = 1 temp_int = 7 ENDIF ENDIF temp_int++ ENDWHILE BREAK CASE 19 temp_int = 0 WHILE temp_int < 22 IF DOES_CHAR_EXIST meet_ped[temp_int] IF NOT IS_CHAR_DEAD meet_ped[temp_int] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR meet_ped[temp_int] scplayer PRINT_NOW LOW_04 5000 1 // ~r~The meeting is dispersing because you attacked a group member. player_has_attacked_meet = 1 temp_int = 22 ENDIF ELSE PRINT_NOW LOW_04 5000 1 // ~r~The meeting is dispersing because you attacked a group member. player_has_attacked_meet = 1 temp_int = 22 ENDIF ENDIF temp_int++ ENDWHILE BREAK // cars CASE 20 BREAK ENDSWITCH // car 0 - 0 IF meet_jump_timer[0] < 300 meet_wheel_fr[0] = 1.0 meet_wheel_fl[0] = 1.0 meet_wheel_br[0] = 0.0 meet_wheel_bl[0] = 0.0 ELSE IF meet_jump_timer[0] > 500 meet_jump_timer[0] = 0 ELSE meet_wheel_fr[0] = 0.0 meet_wheel_fl[0] = 0.0 meet_wheel_br[0] = 0.0 meet_wheel_bl[0] = 0.0 ENDIF ENDIF // car 1 - 3 IF meet_jump_timer[1] > 2000 GENERATE_RANDOM_INT_IN_RANGE 0 16 hyd_index GOSUB lowr_set_hydraulics meet_wheel_fr[1] = hyd_rf meet_wheel_fl[1] = hyd_lf meet_wheel_br[1] = hyd_rb meet_wheel_bl[1] = hyd_lb meet_jump_timer[1] = 0 ENDIF // car 2 - 4 IF meet_jump_timer[2] > 300 GENERATE_RANDOM_INT_IN_RANGE 0 16 hyd_index GOSUB lowr_set_hydraulics meet_wheel_fr[2] = hyd_rf meet_wheel_fl[2] = hyd_lf meet_wheel_br[2] = hyd_rb meet_wheel_bl[2] = hyd_lb meet_jump_timer[2] = 0 ENDIF IF NOT IS_CAR_DEAD meet_car[0] IF DOES_CAR_HAVE_HYDRAULICS meet_car[0] CONTROL_CAR_HYDRAULICS meet_car[0] meet_wheel_fl[0] meet_wheel_bl[0] meet_wheel_fr[0] meet_wheel_br[0] GET_CAR_COORDINATES meet_car[0] x y z vec_x = load_car_x[0] - x vec_y = load_car_y[0] - y vec_x *= force_multiplier vec_y *= force_multiplier APPLY_FORCE_TO_CAR meet_car[0] vec_x vec_y 0.0 0.0 0.0 0.0 ENDIF ENDIF IF NOT IS_CAR_DEAD meet_car[3] IF DOES_CAR_HAVE_HYDRAULICS meet_car[3] CONTROL_CAR_HYDRAULICS meet_car[3] meet_wheel_fl[1] meet_wheel_bl[1] meet_wheel_fr[1] meet_wheel_br[1] GET_CAR_COORDINATES meet_car[3] x y z vec_x = load_car_x[3] - x vec_y = load_car_y[3] - y vec_x *= force_multiplier vec_y *= force_multiplier APPLY_FORCE_TO_CAR meet_car[3] vec_x vec_y 0.0 0.0 0.0 0.0 ENDIF ENDIF IF NOT IS_CAR_DEAD meet_car[4] IF DOES_CAR_HAVE_HYDRAULICS meet_car[4] CONTROL_CAR_HYDRAULICS meet_car[4] meet_wheel_fl[2] meet_wheel_bl[2] meet_wheel_fr[2] meet_wheel_br[2] GET_CAR_COORDINATES meet_car[4] x y z vec_x = load_car_x[4] - x vec_y = load_car_y[4] - y vec_x *= force_multiplier vec_y *= force_multiplier APPLY_FORCE_TO_CAR meet_car[4] vec_x vec_y 0.0 0.0 0.0 0.0 ENDIF ENDIF ELSE IF player_has_attacked_meet = 1 // player has attacked meeting temp_int = 0 WHILE temp_int < 12 IF NOT IS_CHAR_DEAD meet_ped[temp_int] CLEAR_CHAR_TASKS_IMMEDIATELY meet_ped[temp_int] ENDIF temp_int++ ENDWHILE IF NOT m_failed = 1 temp_int = 0 WHILE temp_int < 22 IF NOT IS_CHAR_DEAD meet_ped[temp_int] SET_CHAR_RELATIONSHIP meet_ped[temp_int] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 ENDIF temp_int++ ENDWHILE ENDIF // mark stuff as no longer needed temp_int = 0 WHILE temp_int < 22 MARK_CHAR_AS_NO_LONGER_NEEDED meet_ped[temp_int] temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 7 MARK_CAR_AS_NO_LONGER_NEEDED meet_car[temp_int] temp_int++ ENDWHILE m_failed = 1 player_has_attacked_meet++ ENDIF ENDIF ENDIF IF lowr_timer > 120000 PRINT_NOW LOW_35 5000 1 // ~r~The meeting is dispersing. m_failed = 1 ELSE // check if player has arrived IF LOCATE_CHAR_IN_CAR_3D scplayer 1793.0676 -1904.2538 12.3989 4.0 4.0 4.0 TRUE STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF IS_CAR_LOW_RIDER car IF DOES_CAR_HAVE_HYDRAULICS car STORE_SCORE player1 temp_int IF temp_int >= min_bet TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 2000000 m_goals = 99 SET_PLAYER_CONTROL player1 OFF STORE_CAR_CHAR_IS_IN scplayer pcar DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ELSE IF dialogue_flag = 0 PRINT_WITH_NUMBER_NOW LOW_38 min_bet 5000 1 // you need $$ to compete dialogue_flag++ ENDIF ENDIF ELSE IF dialogue_flag = 0 PRINT_NOW LOW_36 5000 1 // You need to have a car with hydraulics dialogue_flag++ ENDIF ENDIF ELSE IF dialogue_flag = 0 PRINT_NOW LOW_36 5000 1 // You need to have a car with hydraulics dialogue_flag++ ENDIF ENDIF ELSE IF NOT dialogue_flag = 0 dialogue_flag = 0 ENDIF ENDIF ENDIF ENDIF // exit IF m_goals = 99 GOSUB LOWR_next_stage CHECKPOINT_SAVE_ODDJOB 1 ENDIF RETURN // ************************************************************************************************************* // Stage 4 - cutscene of guy getting out of car - and - wager section // ************************************************************************************************************* LOWR_m_stage_4: // reset car positions IF m_goals = 0 temp_float =# min_bet temp_float2 =# max_bet ADD_WIDGET_FLAG WIDGET_PLAYER_INFO 4 // WIDGET_FLAG_ENABLED_IN_CUTSCENE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD pcar RESET_VEHICLE_HYDRAULICS pcar ENDIF SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 CLEAR_AREA 1793.0676 -1904.2538 12.3989 30.0 TRUE IF DOES_BLIP_EXIST location_blip REMOVE_BLIP location_blip ENDIF // set players position IF NOT IS_CAR_DEAD pcar SET_CAR_COORDINATES pcar 1793.0676 -1904.2538 12.3989 SET_CAR_HEADING pcar 171.6728 ENDIF // clear all char tasks temp_int = 0 WHILE temp_int < 16 IF NOT IS_CHAR_DEAD meet_ped[temp_int] CLEAR_CHAR_TASKS_IMMEDIATELY meet_ped[temp_int] ENDIF temp_int++ ENDWHILE // give all the chars empty decision makers temp_int = 0 WHILE temp_int < 22 IF NOT IS_CHAR_DEAD meet_ped[temp_int] SET_CHAR_DECISION_MAKER meet_ped[temp_int] empty_dm ENDIF temp_int++ ENDWHILE // reset all peds positions temp_int = 0 WHILE temp_int < 16 IF NOT IS_CHAR_DEAD meet_ped[temp_int] SET_CHAR_COORDINATES meet_ped[temp_int] load_ped_x[temp_int] load_ped_y[temp_int] load_ped_z[temp_int] SET_CHAR_HEADING meet_ped[temp_int] load_ped_h[temp_int] ENDIF temp_int++ ENDWHILE // reset all car positions temp_int = 0 WHILE temp_int < 7 IF NOT IS_CAR_DEAD meet_car[temp_int] SET_CAR_COORDINATES meet_car[temp_int] load_car_x[temp_int] load_car_y[temp_int] load_car_z[temp_int] SET_CAR_HEADING meet_car[temp_int] load_car_h[temp_int] ENDIF temp_int++ ENDWHILE SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 1796.7489 -1916.9606 13.8583 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1796.1248 -1916.1810 13.8070 JUMP_CUT m_goals++ ENDIF // make guy in centre car get out and walk towards players car IF m_goals = 1 m_goals++ ENDIF // wait for guy to get to point IF m_goals = 2 IF NOT IS_CHAR_DEAD meet_ped[18] CLEAR_CHAR_TASKS_IMMEDIATELY meet_ped[18] SET_CHAR_COORDINATES meet_ped[18] 1792.6309 -1909.2736 12.4371 SET_CHAR_HEADING meet_ped[18] 331.0204 SET_FIXED_CAMERA_POSITION 1793.8159 -1910.7128 14.0346 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1793.4528 -1909.8005 13.8451 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE m_goals++ ENDIF ENDIF // guy speaks to player IF m_goals = 3 IF NOT IS_CHAR_DEAD meet_ped[18] OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 prtial_gngtlkD LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 prtial_gngtlkE LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 prtial_gngtlkF LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 prtial_gngtlkG LOWRIDER 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[18] temp_seq CLEAR_SEQUENCE_TASK temp_seq //PRINT LOW_06 5000 1 // So you think you can lowride? //PRINT LOW_07 5000 1 // If you're so keen to take us on, how about a wager? GENERATE_RANDOM_INT_IN_RANGE 0 3 temp_int SWITCH temp_int CASE 0 $audio_string = &LOWR_BA audio_sound_file = SOUND_LOWR_BA START_NEW_SCRIPT audio_line meet_ped[18] 0 1 1 0 BREAK CASE 1 $audio_string = &LOWR_BB audio_sound_file = SOUND_LOWR_BB START_NEW_SCRIPT audio_line meet_ped[18] 0 1 1 0 BREAK CASE 2 $audio_string = &LOWR_BC audio_sound_file = SOUND_LOWR_BC START_NEW_SCRIPT audio_line meet_ped[18] 0 1 1 0 BREAK ENDSWITCH TIMERA = 0 m_goals++ ENDIF ENDIF // wait for dialogue to finish IF m_goals = 4 IF TIMERA > 1000 IF audio_line_is_active = 0 OR IS_BUTTON_PRESSED PAD1 CROSS START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS m_goals++ cross_pressed = 1 IF NOT IS_CHAR_DEAD meet_ped[18] CLEAR_CHAR_TASKS meet_ped[18] ENDIF ENDIF ENDIF ENDIF // show wager window IF m_goals = 5 CLEAR_PRINTS SWITCH_WIDESCREEN OFF SET_FIXED_CAMERA_POSITION 1793.4847 -1907.3541 13.4436 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1793.1289 -1908.2886 13.4481 JUMP_CUT current_wager = min_bet temp_int = current_wager * -1 ADD_SCORE player1 temp_int USE_TEXT_COMMANDS TRUE WAIT 1 m_goals++ ENDIF // wager screen IF m_Goals = 6 // check for language change IF HAS_GAME_JUST_RETURNED_FROM_FRONTEND AND HAS_LANGUAGE_CHANGED CLEAR_HELP ENDIF IS_WIDGET_PRESSED WIDGET_REMOVE_BET // Keep the widgets enabled. IS_WIDGET_PRESSED WIDGET_PLACE_BET // ' X ' to increase bet IF IS_WIDGET_PRESSED WIDGET_PLACE_BET IF NOT cross_is_pressed = 1 AND NOT cross_is_pressed = -1 // sort out betting step IF current_wager >= 10000 bet_step = 1000 ELSE IF current_wager >= 1000 bet_step = 100 ELSE IF current_wager >= 100 bet_step = 10 ELSE IF current_wager = 0 bet_step = 2 ELSE bet_step = 1 ENDIF ENDIF ENDIF ENDIF // check betting step doesn't go over players cash STORE_SCORE player1 temp_int IF bet_step > temp_int bet_step = temp_int ENDIF // check betting step won't push us over the maximum bet temp_int = current_wager + bet_step IF temp_int > max_bet bet_step = max_bet - current_wager ENDIF // take cash off player IF bet_step < 0 bet_step *= -1 ENDIF current_wager += bet_step initial_stake += bet_step bet_step *= -1 ADD_SCORE player1 bet_step cross_is_pressed++ IF cross_is_pressed > 1 cross_is_pressed = 2 ELSE TIMERA = 0 ENDIF ELSE IF cross_is_pressed = 1 IF TIMERA > 500 cross_is_pressed = 2 ENDIF ENDIF ENDIF ELSE // reset cross button flag IF NOT cross_is_pressed = 0 cross_is_pressed = 0 ENDIF // remove wager IF IS_WIDGET_PRESSED WIDGET_REMOVE_BET IF NOT square_is_pressed = 1 // sort out betting step IF current_wager > 10000 bet_step = -1000 ELSE IF current_wager > 1000 bet_step = -100 ELSE IF current_wager > 100 bet_step = -10 ELSE bet_step = -1 ENDIF ENDIF ENDIF // check we don't go below minimum bet temp_int = current_wager current_wager += bet_step IF current_wager < min_bet current_wager = 0 bet_step = temp_int bet_step *= -1 ENDIF IF current_wager < min_bet current_wager = min_bet ELSE bet_step *= -1 initial_stake -= bet_step ADD_SCORE player1 bet_step ENDIF square_is_pressed++ IF square_is_pressed > 1 square_is_pressed = 2 ELSE TIMERA = 0 ENDIF ELSE IF TIMERA > 500 square_is_pressed = 2 ENDIF ENDIF ELSE IF NOT square_is_pressed = 0 square_is_pressed = 0 ENDIF ENDIF ENDIF IS_WIDGET_RELEASED WIDGET_PLAYER_INFO // Keep the widget enabled so the player can see their cash. GOSUB lowr_draw_window_1 // ' O ' to ok the bet IF cross_pressed = 0 IF IS_WIDGET_RELEASED WIDGET_GAMBLING_CONTINUE temp_float =# current_wager temp_float *= 0.1 CLEAR_HELP m_goals++ ENDIF ELSE IF NOT IS_BUTTON_PRESSED PAD1 CROSS cross_pressed = 0 ENDIF ENDIF IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON // remove some of the peds and cars IF DOES_VEHICLE_EXIST meet_car[1] DELETE_CAR meet_car[1] ENDIF IF DOES_VEHICLE_EXIST meet_car[4] DELETE_CAR meet_car[4] ENDIF IF DOES_VEHICLE_EXIST meet_car[2] DELETE_CAR meet_car[2] ENDIF IF DOES_VEHICLE_EXIST meet_car[5] DELETE_CAR meet_car[5] ENDIF IF DOES_VEHICLE_EXIST meet_car[3] DELETE_CAR meet_car[3] ENDIF IF DOES_CHAR_EXIST meet_ped[1] DELETE_CHAR meet_ped[1] ENDIF IF DOES_CHAR_EXIST meet_ped[3] DELETE_CHAR meet_ped[3] ENDIF IF DOES_CHAR_EXIST meet_ped[16] DELETE_CHAR meet_ped[16] ENDIF IF DOES_CHAR_EXIST meet_ped[6] DELETE_CHAR meet_ped[6] ENDIF IF DOES_CHAR_EXIST meet_ped[7] DELETE_CHAR meet_ped[7] ENDIF IF DOES_CHAR_EXIST meet_ped[9] DELETE_CHAR meet_ped[9] ENDIF IF DOES_CHAR_EXIST meet_ped[10] DELETE_CHAR meet_ped[10] ENDIF IF DOES_CHAR_EXIST meet_ped[12] DELETE_CHAR meet_ped[12] ENDIF IF DOES_CHAR_EXIST meet_ped[20] DELETE_CHAR meet_ped[20] ENDIF IF DOES_CHAR_EXIST meet_ped[13] DELETE_CHAR meet_ped[13] ENDIF IF NOT IS_CHAR_DEAD bounce_girl IF NOT IS_CAR_DEAD pcar IF IS_CHAR_IN_CAR bounce_girl pcar TASK_LEAVE_CAR bounce_girl pcar ENDIF ENDIF ENDIF DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE m_failed = 1 ENDIF ENDIF // wait for player to place bet IF m_goals = 7 USE_TEXT_COMMANDS FALSE m_goals++ ENDIF IF m_goals = 8 m_goals++ ENDIF IF m_goals = 9 m_goals++ ENDIF IF m_goals = 10 IF TIMERA > 2000 CLEAR_PRINTS //WRITE_DEBUG FADING_OUT DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //WRITE_DEBUG FADED_OUT m_goals = 99 ENDIF ENDIF IF NOT m_failed = 1 GOSUB lowr_meeting_stage3_update_ai ENDIF // exit IF m_goals = 99 GOSUB LOWR_next_stage ENDIF RETURN // ************************************************************************************************************* // Stage 5 - set up minigame scene - cutscene of girl getting into car // ************************************************************************************************************* LOWR_m_stage_5: IF m_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON CLEAR_PRINTS SET_FIXED_CAMERA_POSITION 1788.1068 -1903.8041 13.3553 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1788.9438 -1904.3428 13.2601 JUMP_CUT LOAD_SCENE 1788.9438 -1904.3428 13.2601 m_goals++ ENDIF IF m_goals = 1 REQUEST_MODEL VLA1 REQUEST_MODEL VLA2 REQUEST_MODEL VLA3 REQUEST_MODEL BFYPRO REQUEST_MODEL HFYST REQUEST_MODEL SAVANNA REQUEST_MODEL REMINGTN REQUEST_ANIMATION LOWRIDER LOAD_ALL_MODELS_NOW //WRITE_DEBUG GOT_HERE1 WHILE NOT HAS_MODEL_LOADED VLA1 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED VLA2 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED VLA3 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED BFYPRO WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED HFYST WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED SAVANNA OR NOT HAS_MODEL_LOADED REMINGTN WAIT 0 ENDWHILE WHILE NOT HAS_ANIMATION_LOADED LOWRIDER WAIT 0 ENDWHILE // set floats load_car_x[0] = 1798.2028 // top left load_car_y[0] = -1926.2216 load_car_z[0] = 12.3895 load_car_h[0] = 73.1404 load_car_x[1] = 1802.8640 // infront of middle car load_car_y[1] = -1918.7413 load_car_z[1] = 12.3931 load_car_h[1] = 357.6193 load_car_x[2] = 1784.6350 // top right load_car_y[2] = -1924.9684 load_car_z[2] = 12.3901 load_car_h[2] = 305.0620 load_car_x[3] = 1784.1881 // behind middle car load_car_y[3] = -1913.4393 load_car_z[3] = 12.3923 load_car_h[3] = 183.5814 load_car_x[4] = 1792.3180 // middle car load_car_y[4] = -1919.5132 load_car_z[4] = 12.3928 load_car_h[4] = 8.2504 load_car_x[5] = 1801.4617 // nearest entrance left load_car_y[5] = -1905.6914 load_car_z[5] = 12.3995 load_car_h[5] = 189.9314 load_car_x[6] = 1787.6423 // entrance right load_car_y[6] = -1901.1360 load_car_z[6] = 12.3949 load_car_h[6] = 145.4181 // peds load_ped_x[0] = 1800.0 load_ped_y[0] = -1907.8301 load_ped_z[0] = 12.4398 load_ped_h[0] = 73.7198 load_ped_x[1] = 1799.8458 load_ped_y[1] = -1912.1237 load_ped_z[1] = 12.4582 load_ped_h[1] = 48.2386 load_ped_x[2] = 1800.0861 load_ped_y[2] = -1910.4337 load_ped_z[2] = 12.4372 load_ped_h[2] = 83.7398 load_ped_x[3] = 1801.3206 load_ped_y[3] = -1916.4268 load_ped_z[3] = 12.4343 load_ped_h[3] = 83.7398 load_ped_x[4] = 1798.5405 load_ped_y[4] = -1922.1797 load_ped_z[4] = 12.4310 load_ped_h[4] = 46.5794 load_ped_x[5] = 1799.4904 load_ped_y[5] = -1920.6166 load_ped_z[5] = 12.4322 load_ped_h[5] = 46.5794 load_ped_x[6] = 1787.2549 load_ped_y[6] = -1926.5966 load_ped_z[6] = 12.4283 load_ped_h[6] = 323.6194 load_ped_x[7] = 1786.4419 load_ped_y[7] = -1920.2008 load_ped_z[7] = 12.4322 load_ped_h[7] = 306.1995 load_ped_x[8] = 1785.8242 load_ped_y[8] = -1919.1622 load_ped_z[8] = 12.4324 load_ped_h[8] = 294.6196 load_ped_x[9] = 1786.1021 load_ped_y[9] = -1913.8329 load_ped_z[9] = 12.4327 load_ped_h[9] = 280.7204 load_ped_x[10] = 1786.8058 load_ped_y[10] = -1905.2460 load_ped_z[10] = 12.4342 load_ped_h[10] = 262.8214 load_ped_x[11] = 1788.6932 load_ped_y[11] = -1902.1385 load_ped_z[11] = 12.4348 load_ped_h[11] = 247.1610 load_ped_x[12] = 1794.6162 load_ped_y[12] = -1899.6078 load_ped_z[12] = 12.4398 load_ped_h[12] = 191.0618 load_ped_x[13] = 1799.1346 load_ped_y[13] = -1902.4882 load_ped_z[13] = 12.4431 load_ped_h[13] = 157.4622 load_ped_x[14] = 1795.6742 load_ped_y[14] = -1899.5686 load_ped_z[14] = 12.4407 load_ped_h[14] = 162.6424 load_ped_x[15] = 1800.3689 load_ped_y[15] = -1907.0029 load_ped_z[15] = 12.4403 load_ped_h[15] = 77.6197 load_ped_x[16] = 1800.8259 load_ped_y[16] = -1917.3248 load_ped_z[16] = 12.4340 load_ped_h[16] = 36.1793 load_ped_x[17] = 1785.8500 load_ped_y[17] = -1917.9550 load_ped_z[17] = 12.4324 load_ped_h[17] = 287.0602 load_ped_x[18] = 1788.5383 load_ped_y[18] = -1927.0908 load_ped_z[18] = 12.4280 load_ped_h[18] = 345.1206 load_ped_x[19] = 1787.3230 load_ped_y[19] = -1904.1097 load_ped_z[19] = 12.4337 load_ped_h[19] = 263.3813 load_ped_x[20] = 1798.3904 load_ped_y[20] = -1901.7328 load_ped_z[20] = 12.4429 load_ped_h[20] = 142.4208 // flags set for the lowrider minigame lowrider_level = -1 lowrider_last_level = -1 //lowrider_opposition_skill = 1 force_multiplier = 0.01 // create all stuff required for lowrider minigame --------------- // delete all previously created cars and peds temp_int = 0 WHILE temp_int < 7 IF DOES_VEHICLE_EXIST meet_car[temp_int] DELETE_CAR meet_car[temp_int] ENDIF temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 22 IF DOES_CHAR_EXIST meet_ped[temp_int] DELETE_CHAR meet_ped[temp_int] ENDIF temp_int++ ENDWHILE // ---- setup player -------------------------------------------- IF NOT DOES_VEHICLE_EXIST pcar CREATE_CAR SAVANNA 1793.4956 -1907.4233 12.3992 pcar SET_CAR_HEADING pcar 181.5231 RESET_VEHICLE_HYDRAULICS pcar ELSE IF NOT IS_CAR_DEAD pcar SET_CAR_COORDINATES pcar 1793.4956 -1907.4233 12.3992 SET_CAR_HEADING pcar 181.5231 ENDIF ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF NOT IS_CAR_DEAD pcar WARP_CHAR_INTO_CAR scplayer pcar TASK_PLAY_ANIM scplayer sit_relaxed LOWRIDER 4.0 TRUE FALSE FALSE TRUE -1 ENDIF // create all spector peds and cars --------------------------------------- CREATE_CAR REMINGTN 0.0 0.0 0.0 meet_car[0] // top left CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[1] // infront of middle car CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[2] // top right CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[3] // behind middle car CREATE_CAR REMINGTN 0.0 0.0 0.0 meet_car[4] // middle car CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[5] // nearest entrance left CREATE_CAR REMINGTN 0.0 0.0 0.0 meet_car[6] // entrance right CHANGE_CAR_COLOUR meet_car[0] 1 0 CHANGE_CAR_COLOUR meet_car[1] 2 1 CHANGE_CAR_COLOUR meet_car[2] 3 2 CHANGE_CAR_COLOUR meet_car[3] 10 3 CHANGE_CAR_COLOUR meet_car[4] 9 4 CHANGE_CAR_COLOUR meet_car[5] 6 5 CHANGE_CAR_COLOUR meet_car[6] 7 6 // bouncing cars ----------------------------------------------------------- temp_int = 0 WHILE temp_int < 7 SET_CAR_COORDINATES meet_car[temp_int] load_car_x[temp_int] load_car_y[temp_int] load_car_z[temp_int] SET_CAR_HEADING meet_car[temp_int] load_car_h[temp_int] FREEZE_CAR_POSITION meet_car[temp_int] TRUE LOCK_CAR_DOORS meet_car[temp_int] CARLOCK_LOCKOUT_PLAYER_ONLY temp_int++ ENDWHILE FREEZE_CAR_POSITION meet_car[4] FALSE SET_CAR_STATUS meet_car[4] STATUS_PHYSICS SET_CAR_HYDRAULICS meet_car[4] TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER meet_car[4] TRUE SET_CAR_PROOFS meet_car[4] TRUE TRUE TRUE TRUE TRUE // guys --------------------------------------------------------------------- CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[0] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[1] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[2] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[3] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[4] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[5] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[6] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[7] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[8] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[9] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[10] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[11] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[12] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[13] // girls -------------------------------------------------------------------- CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[14] CREATE_CHAR PEDTYPE_MISSION1 HFYST 0.0 0.0 0.0 meet_ped[15] CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[16] CREATE_CHAR PEDTYPE_MISSION1 HFYST 0.0 0.0 0.0 meet_ped[17] CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[18] CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[19] CREATE_CHAR PEDTYPE_MISSION1 HFYST 0.0 0.0 0.0 meet_ped[20] // driver ------------------------------------------------------------------- CREATE_CHAR_INSIDE_CAR meet_car[4] PEDTYPE_MISSION1 VLA3 meet_ped[21] temp_int = 0 WHILE temp_int < 21 SET_CHAR_COORDINATES meet_ped[temp_int] load_ped_x[temp_int] load_ped_y[temp_int] load_ped_z[temp_int] SET_CHAR_HEADING meet_ped[temp_int] load_ped_h[temp_int] temp_int++ ENDWHILE // bounce girl -------------------------------------------------------------- CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 1788.2734 -1903.3641 12.4345 bounce_girl SET_CHAR_HEADING bounce_girl 232.5412 // load music track --------------------------------------------------------- VAR_INT lowr_track_to_play IF lowr_track_to_play = 0 PRELOAD_BEAT_TRACK 13 lowr_track_to_play++ ELSE PRELOAD_BEAT_TRACK 0 lowr_track_to_play = 0 ENDIF temp_int = 0 WHILE NOT temp_int = CUTSCENE_TRACK_LOADED WAIT 0 GET_BEAT_TRACK_STATUS temp_int ENDWHILE m_goals++ ENDIF // decide whether to put bounce girl in car or not IF m_goals = 2 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car LVAR_INT gang_member_to_delete IF NOT IS_CAR_DEAD car IF NOT IS_CAR_PASSENGER_SEAT_FREE car 0 GET_CHAR_IN_CAR_PASSENGER_SEAT car 0 gang_member_to_delete DELETE_CHAR gang_member_to_delete ENDIF ENDIF IF NOT IS_CHAR_DEAD bounce_girl WARP_CHAR_INTO_CAR_AS_PASSENGER bounce_girl car 0 m_goals++ ENDIF ENDIF ENDIF // switch camera view ------------------------------------------------------------ IF m_goals = 3 SWITCH_WIDESCREEN OFF SET_FIXED_CAMERA_POSITION 1788.5157 -1910.3184 14.8901 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1789.3551 -1909.8429 14.6269 JUMP_CUT DISPLAY_RADAR FALSE DISPLAY_HUD FALSE 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 ENDIF offx = 0.6200 offy = 0.3100 offz = -0.1670 IF NOT IS_CAR_DEAD pcar IF NOT IS_CHAR_DEAD bounce_girl IF IS_CAR_MODEL pcar SAVANNA CLEAR_CHAR_TASKS_IMMEDIATELY bounce_girl ATTACH_CHAR_TO_CAR bounce_girl pcar offx offy offz FACING_FORWARD 0.0 WEAPONTYPE_UNARMED ENDIF ENDIF ENDIF OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_hair LOWRIDER 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_hurry LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD bounce_girl IF IS_CHAR_ATTACHED_TO_ANY_CAR bounce_girl PERFORM_SEQUENCE_TASK bounce_girl temp_seq ENDIF ENDIF CLEAR_SEQUENCE_TASK temp_seq TIMERA = 0 // flags set for the lowrider minigame lowrider_level = -1 lowrider_last_level = -1 IF lowrider_opposition_skill < 1 lowrider_opposition_skill = 1 ENDIF // add on difficulty depending on the wager temp_float =# current_wager temp_float2 =# max_bet temp_float /= temp_float2 temp_float *= 4.0 temp_int =# temp_float lowrider_opposition_skill += temp_int IF lowrider_opposition_skill > 5 lowrider_opposition_skill = 5 ENDIF IF lowrider_opposition_skill < 1 lowrider_opposition_skill = 1 ENDIF WAIT 500 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS PLAY_BEAT_TRACK m_goals++ ENDIF // wait a few secs before starting game, to explain help etc --------------------- IF m_goals = 4 SET_PLAYER_CONTROL player1 ON START_NEW_SCRIPT beat_display //lowrider_opposition_skill = 1 START_NEW_SCRIPT lowrider_game pcar meet_car[4] bounce_girl TIMERA = 0 camera_timer = 0 camera_mode = 0 CLEAR_PRINTS CLEAR_HELP PRINT_HELP LOW_27 // Try to move the suspension in time with the music. help_timer = 0 help_flag = 0 TIMERA = 0 m_goals++ ENDIF // wait for lowrider minigame to start IF m_goals = 5 IF lowrider_game_is_active = 1 m_goals++ ENDIF ENDIF // lowrider minigame -------------------------------------------------------------- IF m_goals = 6 IF lowrider_game_is_active = 1 // do camera work IF select_pressed = 0 IF camera_timer > 5000 OR IS_BUTTON_PRESSED PAD1 SELECT camera_mode++ IF camera_mode >= 5 camera_mode = 0 ENDIF IF NOT IS_CAR_DEAD pcar GET_CAR_COORDINATES pcar x y z ENDIF IF camera_mode = 0 SET_FIXED_CAMERA_POSITION 1803.9780 -1909.3691 15.0671 0.0 0.0 0.0 POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF IF camera_mode = 1 SET_FIXED_CAMERA_POSITION 1795.3690 -1900.9991 14.1795 0.0 0.0 0.0 POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF IF camera_mode = 2 SET_FIXED_CAMERA_POSITION 1788.7931 -1902.9899 13.7203 0.0 0.0 0.0 POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF IF camera_mode = 3 SET_FIXED_CAMERA_POSITION 1789.3766 -1912.1953 14.0671 0.0 0.0 0.0 POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF IF camera_mode = 4 SET_FIXED_CAMERA_POSITION 1796.4092 -1912.2311 13.8316 0.0 0.0 0.0 POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF select_pressed++ camera_timer = 0 ENDIF ELSE IF NOT IS_BUTTON_PRESSED PAD1 SELECT select_pressed = 0 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_C // for camera position GET_ACTIVE_CAMERA_COORDINATES x y z IF NOT IS_CAR_DEAD pcar GET_CAR_COORDINATES pcar x2 y2 z2 GET_CAR_HEADING pcar heading ENDIF heading *= -1.0 COS heading temp_float SIN heading temp_float2 // get coords relative to car vec_x = x - x2 vec_y = y - y2 vec_z = z - z2 // work out new vec_x vec2_x = vec_x * temp_float temp_float3 = vec_y * temp_float2 vec2_x -= temp_float3 // work out new vec_y vec2_y = vec_x * temp_float2 temp_float3 = vec_y * temp_float vec2_y += temp_float3 // save SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "FIXED_CAMERA_POSITION - OFFSET FROM CAR = " SAVE_FLOAT_TO_DEBUG_FILE vec2_x SAVE_FLOAT_TO_DEBUG_FILE vec2_y SAVE_FLOAT_TO_DEBUG_FILE vec_z // for camera point at GET_ACTIVE_CAMERA_POINT_AT x y z // get coords relative to car vec_x = x - x2 vec_y = y - y2 vec_z = z - z2 // work out new vec_x vec2_x = vec_x * temp_float temp_float3 = vec_y * temp_float2 vec2_x -= temp_float3 // work out new vec_y vec2_y = vec_x * temp_float2 temp_float3 = vec_y * temp_float vec2_y += temp_float3 // save SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "CAMERA_POINT_AT - OFFSET FROM CAR = " SAVE_FLOAT_TO_DEBUG_FILE vec2_x SAVE_FLOAT_TO_DEBUG_FILE vec2_y SAVE_FLOAT_TO_DEBUG_FILE vec_z ENDIF ELSE m_goals++ ENDIF ENDIF // finish minigame IF m_goals = 7 SET_PLAYER_CONTROL player1 FALSE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE m_goals = 99 ENDIF GOSUB lowr_meeting_stage5_update_ai // exit IF m_goals = 99 GOSUB LOWR_next_stage ENDIF RETURN // ************************************************************************************************************* // Stage 6 - cutscene at end of minigame // ************************************************************************************************************* LOWR_m_stage_6: IF m_goals = 0 STOP_BEAT_TRACK CLEAR_PRINTS RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 OFF m_goals++ ENDIF IF m_goals = 1 // delete all previously created cars and peds temp_int = 0 WHILE temp_int < 7 IF DOES_VEHICLE_EXIST meet_car[temp_int] DELETE_CAR meet_car[temp_int] ENDIF temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 22 IF DOES_CHAR_EXIST meet_ped[temp_int] DELETE_CHAR meet_ped[temp_int] ENDIF temp_int++ ENDWHILE IF DOES_CHAR_EXIST bounce_girl DELETE_CHAR bounce_girl ENDIF // ---- setup player -------------------------------------------- IF NOT DOES_VEHICLE_EXIST pcar CREATE_CAR SAVANNA 1793.4956 -1907.4233 12.3992 pcar SET_CAR_HEADING pcar 181.5231 ELSE IF NOT IS_CAR_DEAD pcar SET_CAR_COORDINATES pcar 1793.4956 -1907.4233 12.3992 SET_CAR_HEADING pcar 181.5231 ENDIF ENDIF // create all spector peds and cars --------------------------------------- CREATE_CAR REMINGTN 0.0 0.0 0.0 meet_car[0] // top left CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[1] // infront of middle car CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[2] // top right CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[3] // behind middle car CREATE_CAR REMINGTN 0.0 0.0 0.0 meet_car[4] // middle car CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[5] // nearest entrance left CREATE_CAR REMINGTN 0.0 0.0 0.0 meet_car[6] // entrance right CHANGE_CAR_COLOUR meet_car[0] 1 0 CHANGE_CAR_COLOUR meet_car[1] 2 1 CHANGE_CAR_COLOUR meet_car[2] 3 2 CHANGE_CAR_COLOUR meet_car[3] 10 3 CHANGE_CAR_COLOUR meet_car[4] 9 4 CHANGE_CAR_COLOUR meet_car[5] 6 5 CHANGE_CAR_COLOUR meet_car[6] 7 6 // bouncing cars ----------------------------------------------------------- temp_int = 0 WHILE temp_int < 7 SET_CAR_COORDINATES meet_car[temp_int] load_car_x[temp_int] load_car_y[temp_int] load_car_z[temp_int] SET_CAR_HEADING meet_car[temp_int] load_car_h[temp_int] FREEZE_CAR_POSITION meet_car[temp_int] TRUE LOCK_CAR_DOORS meet_car[temp_int] CARLOCK_LOCKOUT_PLAYER_ONLY temp_int++ ENDWHILE FREEZE_CAR_POSITION meet_car[4] FALSE SET_CAR_STATUS meet_car[4] STATUS_PHYSICS SET_CAR_HYDRAULICS meet_car[4] TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER meet_car[4] TRUE SET_CAR_PROOFS meet_car[4] TRUE TRUE TRUE TRUE TRUE // guys --------------------------------------------------------------------- CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[0] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[1] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[2] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[3] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[4] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[5] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[6] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[7] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[8] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[9] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[10] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[11] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[12] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[13] // girls -------------------------------------------------------------------- CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[14] CREATE_CHAR PEDTYPE_MISSION1 HFYST 0.0 0.0 0.0 meet_ped[15] CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[16] CREATE_CHAR PEDTYPE_MISSION1 HFYST 0.0 0.0 0.0 meet_ped[17] CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[18] CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[19] CREATE_CHAR PEDTYPE_MISSION1 HFYST 0.0 0.0 0.0 meet_ped[20] // driver ------------------------------------------------------------------- CREATE_CHAR_INSIDE_CAR meet_car[4] PEDTYPE_MISSION1 VLA3 meet_ped[21] temp_int = 0 WHILE temp_int < 21 SET_CHAR_COORDINATES meet_ped[temp_int] load_ped_x[temp_int] load_ped_y[temp_int] load_ped_z[temp_int] SET_CHAR_HEADING meet_ped[temp_int] load_ped_h[temp_int] temp_int++ ENDWHILE // bounce girl -------------------------------------------------------------- CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 1788.2734 -1903.3641 12.4345 bounce_girl SET_CHAR_HEADING bounce_girl 232.5412 IF NOT IS_CAR_DEAD pcar RESET_VEHICLE_HYDRAULICS pcar IF NOT IS_CAR_PASSENGER_SEAT_FREE pcar 0 GET_CHAR_IN_CAR_PASSENGER_SEAT pcar 0 gang_member_to_delete DELETE_CHAR gang_member_to_delete ENDIF IF NOT IS_CHAR_DEAD bounce_girl WARP_CHAR_INTO_CAR_AS_PASSENGER bounce_girl pcar 0 ENDIF ENDIF // put player into car CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF NOT IS_CAR_DEAD pcar WARP_CHAR_INTO_CAR scplayer pcar TASK_PLAY_ANIM scplayer sit_relaxed LOWRIDER 4.0 TRUE FALSE FALSE TRUE -1 ENDIF LOAD_SCENE_IN_DIRECTION 1793.0 -1908.0 14.0 180.0 LOAD_ALL_MODELS_NOW m_goals = 99 ENDIF // cleanup IF m_goals = 99 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON LOAD_SCENE_IN_DIRECTION 1793.0 -1908.0 14.0 180.0 LOAD_ALL_MODELS_NOW WAIT 500 // remove some of the peds and cars IF DOES_VEHICLE_EXIST meet_car[1] DELETE_CAR meet_car[1] ENDIF IF DOES_VEHICLE_EXIST meet_car[4] DELETE_CAR meet_car[4] ENDIF IF DOES_VEHICLE_EXIST meet_car[2] DELETE_CAR meet_car[2] ENDIF IF DOES_VEHICLE_EXIST meet_car[5] DELETE_CAR meet_car[5] ENDIF IF DOES_VEHICLE_EXIST meet_car[3] DELETE_CAR meet_car[3] ENDIF IF DOES_CHAR_EXIST meet_ped[1] DELETE_CHAR meet_ped[1] ENDIF IF DOES_CHAR_EXIST meet_ped[3] DELETE_CHAR meet_ped[3] ENDIF IF DOES_CHAR_EXIST meet_ped[16] DELETE_CHAR meet_ped[16] ENDIF IF DOES_CHAR_EXIST meet_ped[6] DELETE_CHAR meet_ped[6] ENDIF IF DOES_CHAR_EXIST meet_ped[7] DELETE_CHAR meet_ped[7] ENDIF IF DOES_CHAR_EXIST meet_ped[9] DELETE_CHAR meet_ped[9] ENDIF IF DOES_CHAR_EXIST meet_ped[10] DELETE_CHAR meet_ped[10] ENDIF IF DOES_CHAR_EXIST meet_ped[12] DELETE_CHAR meet_ped[12] ENDIF IF DOES_CHAR_EXIST meet_ped[20] DELETE_CHAR meet_ped[20] ENDIF IF DOES_CHAR_EXIST meet_ped[13] DELETE_CHAR meet_ped[13] ENDIF // put drivers in the cars that are there IF NOT IS_CHAR_DEAD meet_ped[4] IF NOT IS_CAR_DEAD meet_car[0] CLEAR_CHAR_TASKS_IMMEDIATELY meet_ped[4] WARP_CHAR_INTO_CAR meet_ped[4] meet_car[0] ENDIF ENDIF IF NOT IS_CHAR_DEAD meet_ped[11] IF NOT IS_CAR_DEAD meet_car[6] CLEAR_CHAR_TASKS_IMMEDIATELY meet_ped[11] WARP_CHAR_INTO_CAR meet_ped[11] meet_car[6] ENDIF ENDIF IF NOT IS_CHAR_DEAD bounce_girl IF NOT IS_CAR_DEAD pcar TASK_LEAVE_CAR bounce_girl pcar ENDIF ENDIF DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF lowrider_pscore > lowrider_oscore current_wager *= 2 PRINT_WITH_NUMBER_BIG ( WINNER ) current_wager 5000 1 //"Mission Passed!" ADD_SCORE player1 current_wager m_passed = 1 ELSE PRINT_NOW LOW_33 5000 1 // you failed the lowrider challenge m_failed = 1 ENDIF WAIT 0 GOSUB LOWR_next_stage ENDIF GOSUB lowr_meeting_stage5_update_ai RETURN // ************************************************************************************************************* // GLOBAL FUNCTIONS - run continuously throughout lifetime of level // ************************************************************************************************************* LOWR_global_functions: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_4 force_multiplier += 0.01 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_5 force_multiplier += -0.01 ENDIF IF DOES_VEHICLE_EXIST pcar IF IS_CAR_DEAD pcar PRINT_NOW LOW_34 5000 1 // your lowrider is history m_failed = 1 ENDIF ENDIF LVAR_INT ped_density_flag IF IS_PLAYER_PLAYING player1 IF m_stage > 2 IF ped_density_flag = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 1793.0676 -1904.2538 125.0 125.0 FALSE SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 ped_density_flag = 1 ENDIF ELSE IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer 1793.0676 -1904.2538 150.0 150.0 FALSE SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 ped_density_flag = 0 ENDIF ENDIF ENDIF ENDIF RETURN // ************************************************************************************************************* // MISSION SPECIFIC GOSUBS // ************************************************************************************************************* lowr_update_attached_girl: IF NOT IS_CAR_DEAD pcar IF NOT IS_CHAR_DEAD bounce_girl ATTACH_CHAR_TO_CAR bounce_girl pcar offx offy offz FACING_FORWARD 0.0 WEAPONTYPE_UNARMED ENDIF ENDIF RETURN LVAR_FLOAT hyd_lf hyd_lb hyd_rf hyd_rb LVAR_INT hyd_index lowr_set_hydraulics: IF hyd_index = 0 hyd_lf = 0.0 hyd_lb = 0.0 hyd_rf = 0.0 hyd_rb = 0.0 ENDIF IF hyd_index = 1 hyd_lf = 0.0 hyd_lb = 0.0 hyd_rf = 0.0 hyd_rb = 1.0 ENDIF IF hyd_index = 2 hyd_lf = 0.0 hyd_lb = 0.0 hyd_rf = 1.0 hyd_rb = 0.0 ENDIF IF hyd_index = 3 hyd_lf = 0.0 hyd_lb = 0.0 hyd_rf = 1.0 hyd_rb = 1.0 ENDIF IF hyd_index = 4 hyd_lf = 0.0 hyd_lb = 1.0 hyd_rf = 0.0 hyd_rb = 0.0 ENDIF IF hyd_index = 5 hyd_lf = 0.0 hyd_lb = 1.0 hyd_rf = 0.0 hyd_rb = 1.0 ENDIF IF hyd_index = 6 hyd_lf = 0.0 hyd_lb = 1.0 hyd_rf = 1.0 hyd_rb = 0.0 ENDIF IF hyd_index = 7 hyd_lf = 0.0 hyd_lb = 1.0 hyd_rf = 1.0 hyd_rb = 1.0 ENDIF IF hyd_index = 8 hyd_lf = 1.0 hyd_lb = 0.0 hyd_rf = 0.0 hyd_rb = 0.0 ENDIF IF hyd_index = 9 hyd_lf = 1.0 hyd_lb = 0.0 hyd_rf = 0.0 hyd_rb = 1.0 ENDIF IF hyd_index = 10 hyd_lf = 1.0 hyd_lb = 0.0 hyd_rf = 1.0 hyd_rb = 0.0 ENDIF IF hyd_index = 11 hyd_lf = 1.0 hyd_lb = 0.0 hyd_rf = 1.0 hyd_rb = 1.0 ENDIF IF hyd_index = 12 hyd_lf = 1.0 hyd_lb = 1.0 hyd_rf = 0.0 hyd_rb = 0.0 ENDIF IF hyd_index = 13 hyd_lf = 1.0 hyd_lb = 1.0 hyd_rf = 0.0 hyd_rb = 1.0 ENDIF IF hyd_index = 14 hyd_lf = 1.0 hyd_lb = 1.0 hyd_rf = 1.0 hyd_rb = 0.0 ENDIF IF hyd_index = 15 hyd_lf = 1.0 hyd_lb = 1.0 hyd_rf = 1.0 hyd_rb = 1.0 ENDIF RETURN lowr_meeting_stage3_update_ai: // car 0 - 0 IF meet_jump_timer[0] < 300 meet_wheel_fr[0] = 1.0 meet_wheel_fl[0] = 1.0 meet_wheel_br[0] = 0.0 meet_wheel_bl[0] = 0.0 ELSE IF meet_jump_timer[0] > 500 meet_jump_timer[0] = 0 ELSE meet_wheel_fr[0] = 0.0 meet_wheel_fl[0] = 0.0 meet_wheel_br[0] = 0.0 meet_wheel_bl[0] = 0.0 ENDIF ENDIF // car 1 - 3 IF meet_jump_timer[1] > 2000 GENERATE_RANDOM_INT_IN_RANGE 0 16 hyd_index GOSUB lowr_set_hydraulics meet_wheel_fr[1] = hyd_rf meet_wheel_fl[1] = hyd_lf meet_wheel_br[1] = hyd_rb meet_wheel_bl[1] = hyd_lb meet_jump_timer[1] = 0 ENDIF IF NOT IS_CAR_DEAD meet_car[0] IF DOES_CAR_HAVE_HYDRAULICS meet_car[0] CONTROL_CAR_HYDRAULICS meet_car[0] meet_wheel_fl[0] meet_wheel_bl[0] meet_wheel_fr[0] meet_wheel_br[0] GET_CAR_COORDINATES meet_car[0] x y z vec_x = load_car_x[0] - x vec_y = load_car_y[0] - y vec_x *= force_multiplier vec_y *= force_multiplier APPLY_FORCE_TO_CAR meet_car[0] vec_x vec_y 0.0 0.0 0.0 0.0 ENDIF ENDIF IF NOT IS_CAR_DEAD meet_car[3] IF DOES_CAR_HAVE_HYDRAULICS meet_car[3] CONTROL_CAR_HYDRAULICS meet_car[3] meet_wheel_fl[1] meet_wheel_bl[1] meet_wheel_fr[1] meet_wheel_br[1] GET_CAR_COORDINATES meet_car[3] x y z vec_x = load_car_x[3] - x vec_y = load_car_y[3] - y vec_x *= force_multiplier vec_y *= force_multiplier APPLY_FORCE_TO_CAR meet_car[3] vec_x vec_y 0.0 0.0 0.0 0.0 ENDIF ENDIF // peds SWITCH m_frame_num CASE 0 IF NOT IS_CHAR_DEAD meet_ped[0] GET_SCRIPT_TASK_STATUS meet_ped[0] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 M_smklean_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[0] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 1 IF NOT IS_CHAR_DEAD meet_ped[1] GET_SCRIPT_TASK_STATUS meet_ped[1] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 F_smklean_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[1] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 2 IF NOT IS_CHAR_DEAD meet_ped[2] GET_SCRIPT_TASK_STATUS meet_ped[2] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD meet_ped[3] TASK_CHAT_WITH_CHAR -1 meet_ped[3] TRUE TRUE ELSE TASK_PAUSE -1 1000 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[2] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 3 IF NOT IS_CHAR_DEAD meet_ped[3] GET_SCRIPT_TASK_STATUS meet_ped[3] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD meet_ped[2] TASK_CHAT_WITH_CHAR -1 meet_ped[2] FALSE TRUE ELSE TASK_PAUSE -1 1000 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[3] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 4 IF NOT IS_CHAR_DEAD meet_ped[4] GET_SCRIPT_TASK_STATUS meet_ped[4] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 car_hookertalk PED 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[4] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 5 IF NOT IS_CHAR_DEAD meet_ped[5] GET_SCRIPT_TASK_STATUS meet_ped[5] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD meet_ped[6] TASK_CHAT_WITH_CHAR -1 meet_ped[6] FALSE TRUE ELSE TASK_PAUSE -1 1000 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[5] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 6 IF NOT IS_CHAR_DEAD meet_ped[6] GET_SCRIPT_TASK_STATUS meet_ped[6] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD meet_ped[5] TASK_CHAT_WITH_CHAR -1 meet_ped[5] TRUE TRUE ELSE TASK_PAUSE -1 1000 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[6] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 7 IF NOT IS_CHAR_DEAD meet_ped[7] GET_SCRIPT_TASK_STATUS meet_ped[7] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[7] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 8 IF NOT IS_CHAR_DEAD meet_ped[8] GET_SCRIPT_TASK_STATUS meet_ped[8] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[8] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 9 IF NOT IS_CHAR_DEAD meet_ped[9] GET_SCRIPT_TASK_STATUS meet_ped[9] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 M_smklean_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[9] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 10 IF NOT IS_CHAR_DEAD meet_ped[10] GET_SCRIPT_TASK_STATUS meet_ped[10] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 fucku PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 woman_idlestance PED 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[10] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 11 IF NOT IS_CHAR_DEAD meet_ped[11] GET_SCRIPT_TASK_STATUS meet_ped[11] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[11] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 12 IF NOT IS_CHAR_DEAD meet_ped[12] GET_SCRIPT_TASK_STATUS meet_ped[12] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE TRUE TRUE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[12] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 13 IF NOT IS_CHAR_DEAD meet_ped[13] GET_SCRIPT_TASK_STATUS meet_ped[13] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[13] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 14 IF NOT IS_CHAR_DEAD meet_ped[14] GET_SCRIPT_TASK_STATUS meet_ped[14] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[14] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 15 IF NOT IS_CHAR_DEAD meet_ped[15] GET_SCRIPT_TASK_STATUS meet_ped[15] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[15] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 16 IF NOT IS_CHAR_DEAD meet_ped[16] GET_SCRIPT_TASK_STATUS meet_ped[16] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 TAP_HAND PED 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[16] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 17 IF NOT IS_CHAR_DEAD meet_ped[17] GET_SCRIPT_TASK_STATUS meet_ped[17] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 TAP_HAND PED 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[17] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK ENDSWITCH RETURN lowr_meeting_stage5_update_ai: SWITCH m_frame_num // peds CASE 0 IF NOT IS_CHAR_DEAD meet_ped[0] GET_SCRIPT_TASK_STATUS meet_ped[0] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 M_smklean_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[0] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 1 IF NOT IS_CHAR_DEAD meet_ped[1] GET_SCRIPT_TASK_STATUS meet_ped[1] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[1] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 2 IF NOT IS_CHAR_DEAD meet_ped[2] GET_SCRIPT_TASK_STATUS meet_ped[2] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[2] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 3 IF NOT IS_CHAR_DEAD meet_ped[3] GET_SCRIPT_TASK_STATUS meet_ped[3] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 M_smkstnd_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[3] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 4 IF NOT IS_CHAR_DEAD meet_ped[4] GET_SCRIPT_TASK_STATUS meet_ped[4] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 M_smkstnd_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[4] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 5 IF NOT IS_CHAR_DEAD meet_ped[5] GET_SCRIPT_TASK_STATUS meet_ped[5] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[5] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 6 IF NOT IS_CHAR_DEAD meet_ped[6] GET_SCRIPT_TASK_STATUS meet_ped[6] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 M_smkstnd_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[6] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 7 IF NOT IS_CHAR_DEAD meet_ped[7] GET_SCRIPT_TASK_STATUS meet_ped[7] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[7] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 8 IF NOT IS_CHAR_DEAD meet_ped[8] GET_SCRIPT_TASK_STATUS meet_ped[8] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[8] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 9 IF NOT IS_CHAR_DEAD meet_ped[9] GET_SCRIPT_TASK_STATUS meet_ped[9] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 M_smklean_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[9] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 10 IF NOT IS_CHAR_DEAD meet_ped[10] GET_SCRIPT_TASK_STATUS meet_ped[10] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[10] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 11 IF NOT IS_CHAR_DEAD meet_ped[11] GET_SCRIPT_TASK_STATUS meet_ped[11] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 M_smklean_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[11] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 12 IF NOT IS_CHAR_DEAD meet_ped[12] GET_SCRIPT_TASK_STATUS meet_ped[12] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 M_smkstnd_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[12] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 13 IF NOT IS_CHAR_DEAD meet_ped[13] GET_SCRIPT_TASK_STATUS meet_ped[13] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[13] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 14 IF NOT IS_CHAR_DEAD meet_ped[14] GET_SCRIPT_TASK_STATUS meet_ped[14] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[14] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 15 IF NOT IS_CHAR_DEAD meet_ped[15] GET_SCRIPT_TASK_STATUS meet_ped[15] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[15] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 16 IF NOT IS_CHAR_DEAD meet_ped[16] GET_SCRIPT_TASK_STATUS meet_ped[16] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[16] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 17 IF NOT IS_CHAR_DEAD meet_ped[17] GET_SCRIPT_TASK_STATUS meet_ped[17] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[17] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 18 IF NOT IS_CHAR_DEAD meet_ped[18] GET_SCRIPT_TASK_STATUS meet_ped[18] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[18] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 19 IF NOT IS_CHAR_DEAD meet_ped[19] GET_SCRIPT_TASK_STATUS meet_ped[19] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[19] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 20 IF NOT IS_CHAR_DEAD meet_ped[20] GET_SCRIPT_TASK_STATUS meet_ped[20] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[20] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK ENDSWITCH RETURN LOWR_delete_ped: temp_int = 0 WHILE temp_int < 22 IF DOES_CHAR_EXIST meet_ped[temp_int] DELETE_CHAR meet_ped[temp_int] WRITE_DEBUG_WITH_INT PED_DELETED temp_int temp_int = 22 ELSE temp_int++ ENDIF ENDWHILE RETURN LOWR_delete_car: temp_int = 0 WHILE temp_int < 7 IF DOES_VEHICLE_EXIST meet_car[temp_int] DELETE_CAR meet_car[temp_int] WRITE_DEBUG_WITH_INT CAR_DELETED temp_int temp_int = 7 ELSE temp_int++ ENDIF ENDWHILE RETURN lowr_draw_window_1: // Give the wager widget the data it needs for display. // // Args are: cell int0 int1 color label text //================================================================================================= SET_WIDGET_INFO2 WIDGET_WAGER 0 max_bet 0 WAGER_GREEN BJ_03 DUMMY // Max Wager SET_WIDGET_INFO2 WIDGET_WAGER 1 min_bet 0 WAGER_GREEN BJ_02 DUMMY // Min Wager SET_WIDGET_INFO2 WIDGET_WAGER 2 current_wager 0 WAGER_GREEN WOF_04 DUMMY // This Wager SET_WIDGET_INFO2 WIDGET_WAGER 3 0 0 WAGER_WHITE DUMMY DUMMY // Empty cell SET_WIDGET_VALUE WIDGET_WAGER 0.0 // This lets the wager widget know we don't need an extra cell at the bottom. RETURN text_lowr: SET_TEXT_COLOUR 180 180 180 255 SET_TEXT_SCALE 0.4714 2.5077 SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_JUSTIFY OFF SET_TEXT_CENTRE OFF SET_TEXT_WRAPX 640.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_BACKGROUND OFF RETURN // ================================================================= // GOSUB: Next_Stage (sets flags and timers for next mission stage) // ================================================================= LOWR_next_stage: m_stage++ m_goals = 0 dialogue_flag = 0 help_flag = 0 dialogue_timer = 0 help_timer = 0 TIMERA = 0 TIMERB = 0 RETURN // ************************************************************************************************************* // END OF LEVEL GOSUBS - fail, pass, cleanup // ************************************************************************************************************* // FAIL mission_failed_LOWR: RETURN // PASS mission_passed_LOWR: //REGISTER_MISSION_PASSED LOWR //REGISTER_ODDJOB_MISSION_PASSED RETURN // CLEANUP mission_cleanup_LOWR: REMOVE_WIDGET_FLAG WIDGET_PLAYER_INFO 4 // WIDGET_FLAG_ENABLED_IN_CUTSCENE SWITCH_AUDIO_ZONE LOWRIDE FALSE IF DOES_VEHICLE_EXIST pcar IF NOT IS_CAR_DEAD pcar SET_CAR_STATUS pcar STATUS_ABANDONED FREEZE_CAR_POSITION pcar FALSE SET_CAR_PROOFS pcar FALSE FALSE FALSE FALSE FALSE IF IS_PLAYER_PLAYING player1 APPLY_BRAKES_TO_PLAYERS_CAR player1 FALSE ENDIF LOCK_CAR_DOORS pcar CARLOCK_UNLOCKED IF IS_CHAR_IN_CAR scplayer pcar CLEAR_CHAR_TASKS_IMMEDIATELY scplayer WARP_CHAR_INTO_CAR scplayer pcar ENDIF ENDIF ENDIF // remove everything temp_int = 0 WHILE temp_int < 7 IF DOES_VEHICLE_EXIST meet_car[temp_int] IF NOT IS_CAR_DEAD meet_car[temp_int] IF temp_int = 0 OR temp_int = 3 OR temp_int = 4 IF DOES_CAR_HAVE_HYDRAULICS meet_car[temp_int] CONTROL_CAR_HYDRAULICS meet_car[temp_int] 0.0 0.0 0.0 0.0 ENDIF ENDIF SET_CAR_STATUS meet_car[temp_int] STATUS_SIMPLE SET_CAR_HYDRAULICS meet_car[temp_int] FALSE ENDIF MARK_CAR_AS_NO_LONGER_NEEDED meet_car[temp_int] ENDIF temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 22 IF DOES_CHAR_EXIST meet_ped[temp_int] IF NOT IS_CHAR_DEAD meet_ped[temp_int] // IF IS_CHAR_IN_ANY_CAR meet_ped[temp_int] // CLEAR_CHAR_TASKS_IMMEDIATELY meet_ped[temp_int] // ENDIF ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED meet_ped[temp_int] ENDIF temp_int++ ENDWHILE IF DOES_CHAR_EXIST bounce_girl MARK_CHAR_AS_NO_LONGER_NEEDED bounce_girl ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH MARK_MODEL_AS_NO_LONGER_NEEDED SAVANNA MARK_MODEL_AS_NO_LONGER_NEEDED VLA1 MARK_MODEL_AS_NO_LONGER_NEEDED VLA2 MARK_MODEL_AS_NO_LONGER_NEEDED VLA3 MARK_MODEL_AS_NO_LONGER_NEEDED BFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED HFYST MARK_MODEL_AS_NO_LONGER_NEEDED SAVANNA MARK_MODEL_AS_NO_LONGER_NEEDED REMINGTN MARK_MODEL_AS_NO_LONGER_NEEDED SAVANNA REMOVE_ANIMATION LOWRIDER REMOVE_BLIP location_blip DISPLAY_RADAR TRUE GET_BEAT_TRACK_STATUS temp_int IF NOT temp_int = CUTSCENE_TRACK_STOPPED STOP_BEAT_TRACK ENDIF DONT_SUPPRESS_CAR_MODEL SAVANNA // terminate beat display script (if it's running) bd_terminate_script = 1 // remove decision makers REMOVE_DECISION_MAKER empty_dm REMOVE_DECISION_MAKER tough_dm // === RESTORE ENVIRONMENT SETTINGS === SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ************************************* RC TURF WAR 5 ************************************* // ************************************* Bonus Level **************************************** // ***************************************************************************************** // ***************************************************************************************** // Mission start stuff GOSUB mission_start_zero5 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_zero5_failed ENDIF GOSUB mission_cleanup_zero5 MISSION_END // Variables for mission //RC VEHICLES { LVAR_INT rc_playerheli_zero5 LVAR_INT rc_van_zero5 LVAR_INT random_car_zero5 //VAR_INT timer_time_limit__converted_int_zero5 VAR_INT timer_time_limit_zero5 VAR_INT van_death_counter_zero5 //LVAR_FLOAT timer_time_limit timer_time_limit_initial timer_time_limit_converted_float //VAR_INT timer_time_limit_converted_int LVAR_FLOAT coord_temp_redbaron_x coord_temp_redbaron_y coord_temp_redbaron_z LVAR_FLOAT coord_redbaron_x coord_redbaron_y coord_redbaron_z heading_redbaron LVAR_FLOAT coord_players_van_x coord_players_van_y coord_players_van_z heading_players_van //VAR_FLOAT rotation_velocity_zero5_x rotation_velocity_zero5_y rotation_velocity_zero5_z // OBJECT // FLAGS LVAR_INT flag_main_sub_function_zero5 LVAR_INT flag_fly_next_to_transmittor_zero5 LVAR_INT flag_heli_landing_cutscene_zero5 LVAR_INT flag_fly_back_to_player_zero5 LVAR_INT flag_mission_zero5_passed LVAR_INT flag_mission_zero5_failed LVAR_INT flag_created_rc_enemies_zero5 LVAR_INT flag_help_text LVAR_INT flag_help_text2 LVAR_INT flag_transmittor_in_place LVAR_INT flag_is_enemy_van_dead[5] LVAR_INT flag_land_plane_zero5 LVAR_INT flag_self_destruct_zero2 LVAR_INT seq_zero_cutscene LVAR_INT help_flags_zero1 LVAR_INT cutscene_flag_zero5 // BLIP LVAR_INT blip_landing_zero5 LVAR_INT index_zero5 LVAR_INT game_timer_zero2 stuck_timer_zero2 LVAR_FLOAT stuck_x_zero2 stuck_y_zero2 stuck_z_zero2 // ****************************************Mission Start************************************ mission_start_zero5: help_flags_zero1 = 0 flag_player_on_mission = 1 CLEAR_THIS_PRINT_BIG_NOW 1 REGISTER_MISSION_GIVEN SCRIPT_NAME zero5 SET_PLAYER_CONTROL player1 OFF WAIT 0 //timer_time_limit__converted_int_zero5 = 100 // INITIALISING VARIABLES flag_main_sub_function_zero5 = 1 flag_fly_next_to_transmittor_zero5 = 0 flag_heli_landing_cutscene_zero5 = 0 flag_fly_back_to_player_zero5 = 0 flag_transmittor_in_place = 0 flag_help_text = 0 flag_help_text2 = 0 flag_land_plane_zero5 = 0 flag_self_destruct_zero2 = 0 flag_mission_zero5_passed = 0 flag_mission_zero5_failed = 0 van_death_counter_zero5 = 0 timer_time_limit_zero5 = 180000 //5 minutes //timer_time_limit_initial //timer_time_limit_zero5 = 10000 //5 minutes coord_redbaron_x = -2205.44 coord_redbaron_y = 128.99 coord_redbaron_z = 57.33 heading_redbaron = 90.0 coord_players_van_x = -2227.0 coord_players_van_y = 113.0 coord_players_van_z = 35.5 RESET_NUM_OF_MODELS_KILLED_BY_PLAYER Player1 TIMERA = 0 index_zero5 = 0 // LOAD MODELS REQUEST_MODEL rcbaron REQUEST_MODEL topfun WHILE NOT HAS_MODEL_LOADED rcbaron OR NOT HAS_MODEL_LOADED topfun WAIT 0 ENDWHILE DISPLAY_CAR_NAMES FALSE /* REQUEST_MODEL news1 WHILE NOT HAS_MODEL_LOADED news1 WAIT 0 ENDWHILE */ LOAD_MISSION_TEXT ZERO2 DISABLE_ALL_ENTRY_EXITS TRUE /* DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE */ // ******************************************** START MAIN LOOP ********************************** main_zero5_loop: WAIT 0 // WAIT FOR HELI TO REACH WINDOW IF flag_main_sub_function_zero5 = 1 GOSUB main_sub_function_zero5 ENDIF IF flag_mission_zero5_passed = 1 GOTO mission_zero5_passed ENDIF IF flag_mission_zero5_failed = 1 GOTO mission_zero5_failed ENDIF GOTO main_zero5_loop // ////////////////////////////////// ////////////////////////////////// //////////////////////////////// // ************************************ Sub Functions ***************************************** // ////////////////////////////////// ////////////////////////////////// //////////////////////////////// main_sub_function_zero5: TIMERB = 0 // SET_CHAR_COORDINATES scplayer -1851.7444 651.0315 79.4154 CLEAR_AREA coord_players_van_x coord_players_van_y coord_players_van_z 1000.0 TRUE CREATE_CAR TOPFUN -2250.9 124.6 28.48 rc_van_zero5 SET_LOAD_COLLISION_FOR_CAR_FLAG rc_van_zero5 FALSE // coord_players_van_x coord_players_van_y coord_players_van_z OPEN_CAR_DOOR rc_van_zero5 REAR_LEFT_DOOR OPEN_CAR_DOOR rc_van_zero5 REAR_RIGHT_DOOR WARP_CHAR_INTO_CAR scplayer rc_van_zero5 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_POLICE_IGNORE_PLAYER player1 ON SET_FADING_COLOUR 0 0 0 IF NOT IS_CAR_DEAD rc_van_zero5 SET_CAR_COORDINATES rc_van_zero5 -2233.9 122.6 746.48 SET_CAR_HEADING rc_van_zero5 90.0 FREEZE_CAR_POSITION rc_van_zero5 TRUE ENDIF WAIT 1000 // END CUTSCENE IF NOT IS_CAR_DEAD rc_van_zero5 CLOSE_ALL_CAR_DOORS rc_van_zero5 ENDIF SET_AREA_VISIBLE 0 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer -2240.8535 129.3346 1.5 // inside rc shop // SWITCH_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 //SWITCH_PED_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 LOAD_SCENE coord_redbaron_x coord_redbaron_y coord_redbaron_z GIVE_REMOTE_CONTROLLED_MODEL_TO_PLAYER player1 coord_redbaron_x coord_redbaron_y coord_redbaron_z 40.090 rcbaron GET_REMOTE_CONTROLLED_CAR player1 rc_playerheli_zero5 SET_CAR_HEADING rc_playerheli_zero5 90.0 SET_ENABLE_RC_DETONATE_ON_CONTACT FALSE SET_ENABLE_RC_DETONATE FALSE SET_CAR_HEALTH rc_playerheli_zero5 1000 SET_CAR_PROOFS rc_playerheli_zero5 FALSE TRUE TRUE FALSE FALSE // SET_CAR_PROOFS CarID Bulletproof Flameproof Explosionproof Collisionproof MeleeWeaponproof // WAIT 2000 // RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF IF NOT IS_CAR_DEAD rc_playerheli_zero5 POINT_CAMERA_AT_CAR rc_playerheli_zero5 CAM_ON_A_STRING JUMP_CUT FREEZE_CAR_POSITION rc_playerheli_zero5 FALSE WAIT 0 SET_CAMERA_ZOOM CAM_ZOOM_TWO ENDIF SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON DISPLAY_ONSCREEN_TIMER_WITH_STRING timer_time_limit_zero5 TIMER_DOWN ZER2_5 DISPLAY_ONSCREEN_COUNTER_WITH_STRING van_death_counter_zero5 COUNTER_DISPLAY_NUMBER ZER2_43 PRINT_NOW ZER2_45 5000 1 // destroy berkleys vans SET_FORCE_RANDOM_CAR_MODEL TOPFUN // WAiting for rc heli to pickup transmittor WHILE NOT flag_transmittor_in_place = 1 WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S flag_main_sub_function_zero5 = 0 flag_fly_next_to_transmittor_zero5 = 0 flag_heli_landing_cutscene_zero5 = 0 flag_fly_back_to_player_zero5 = 0 flag_mission_zero5_passed = 1 flag_mission_zero5_failed = 0 RETURN ENDIF IF timer_time_limit_zero5 <=0 //SET_PLAYER_CONTROL Player1 OFF IF NOT IS_CAR_DEAD rc_playerheli_zero5 SET_CAR_ENGINE_ON rc_playerheli_zero5 FALSE SET_CAR_HEAVY rc_playerheli_zero5 TRUE ENDIF REMOVE_RC_BUGGY TIMERA = 0 flag_main_sub_function_zero5 = 0 flag_fly_next_to_transmittor_zero5 = 0 flag_heli_landing_cutscene_zero5 = 0 flag_fly_back_to_player_zero5 = 0 flag_mission_zero5_passed = 1 flag_mission_zero5_failed = 0 /* IF IS_PLAYER_PLAYING Player1 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer -2240.8535 129.3346 1.5 // inside rc shop IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -2220.1455 135.9560 1034.6406 ELSE SET_CHAR_COORDINATES scplayer -2220.1455 135.9560 1034.6406 ENDIF SET_CHAR_HEADING scplayer 183.6951 ENDIF */ PRINT_WITH_NUMBER_BIG ZER2_43 van_death_counter_zero5 5000 1 PLAY_MISSION_PASSED_TUNE 1 WAIT 2000 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer -2241.8535 128.3346 1.5 // inside rc shop LOAD_SCENE -2241.8535 128.3346 1034.6406 IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -2220.1455 135.9560 1034.6406 ELSE SET_CHAR_COORDINATES scplayer -2220.1455 135.9560 1034.6406 ENDIF SET_CHAR_HEADING scplayer 183.6951 SET_AREA_VISIBLE 6 //zeros toy shop // PRINT_NOW ZER2_38 5000 1 // ran out of time RETURN ENDIF IF NOT IS_CAR_DEAD rc_playerheli_zero5 IF IS_PLAYER_IN_REMOTE_MODE player1 GET_GAME_TIMER game_timer_zero2 IF NOT LOCATE_CAR_3D rc_playerheli_zero5 stuck_x_zero2 stuck_y_zero2 stuck_z_zero2 1.5 1.5 1.5 FALSE GET_CAR_COORDINATES rc_playerheli_zero5 stuck_x_zero2 stuck_y_zero2 stuck_z_zero2 stuck_timer_zero2 = game_timer_zero2 + 4000 flag_self_destruct_zero2 = 0 ENDIF IF LOCATE_CAR_3D rc_playerheli_zero5 stuck_x_zero2 stuck_y_zero2 stuck_z_zero2 1.5 1.5 1.5 FALSE IF stuck_timer_zero2 < game_timer_zero2 IF flag_self_destruct_zero2 = 0 PRINT_HELP ZER2_4 flag_self_destruct_zero2 = 1 ENDIF IF IS_BUTTON_PRESSED PAD1 CIRCLE OR IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL flag_mission_zero5_failed = 1 flag_main_sub_function_zero5 = 0 SET_PLAYER_CONTROL player1 OFF PRINT_NOW ( ZER2_8 ) 5000 1 // You crashed your plane! PRINT_BIG M_FAIL 5000 1 SET_CAR_HEALTH rc_playerheli_zero5 1 ADD_EXPLOSION stuck_x_zero2 stuck_y_zero2 stuck_z_zero2 EXPLOSION_GRENADE REMOVE_RC_BUGGY flag_mission_zero5_failed = 1 flag_main_sub_function_zero5 = 0 PRINT_NOW ( ZER2_8 ) 5000 1 // You crashed your plane! WAIT 2000 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer -2241.8535 128.3346 1.5 // inside rc shop LOAD_SCENE -2241.8535 128.3346 1034.6406 IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -2220.1455 135.9560 1034.6406 ELSE SET_CHAR_COORDINATES scplayer -2220.1455 135.9560 1034.6406 ENDIF SET_CHAR_HEADING scplayer 183.6951 SET_AREA_VISIBLE 6 //zeros toy shop RETURN ENDIF ENDIF ENDIF GET_CAR_COORDINATES rc_playerheli_zero5 coord_temp_redbaron_x coord_temp_redbaron_y coord_temp_redbaron_z GET_RANDOM_CAR_IN_SPHERE_NO_SAVE coord_temp_redbaron_x coord_temp_redbaron_y coord_temp_redbaron_z 30.0 TOPFUN random_car_zero5 IF NOT IS_CAR_DEAD random_car_zero5 // SET_CAR_HEALTH random_car_zero5 500 SET_CAR_CRUISE_SPEED random_car_zero5 10.0 ENDIF /* IF NOT LOCATE_CAR_3D rc_playerheli_zero5 coord_redbaron_x coord_redbaron_y coord_redbaron_z 20.0 20.0 20.0 FALSE IF IS_BUTTON_PRESSED PAD1 CIRCLE SET_CAR_HEALTH rc_playerheli_zero5 1 ADD_EXPLOSION coord_temp_redbaron_x coord_temp_redbaron_y coord_temp_redbaron_z EXPLOSION_ROCKET REMOVE_RC_BUGGY EXPLODE_CAR rc_playerheli_zero5 DO_FADE 900 FADE_OUT WAIT 900 SET_FORCE_RANDOM_CAR_MODEL TOPFUN GIVE_REMOTE_CONTROLLED_MODEL_TO_PLAYER player1 coord_redbaron_x coord_redbaron_y coord_redbaron_z 40.090 rcbaron DELETE_CAR rc_playerheli_zero5 GET_REMOTE_CONTROLLED_CAR player1 rc_playerheli_zero5 DO_FADE 900 FADE_IN ENDIF ENDIF */ ENDIF ELSE flag_mission_zero5_failed = 1 flag_main_sub_function_zero5 = 0 PRINT_NOW ( ZER2_8 ) 5000 1 // You crashed your plane! SET_PLAYER_CONTROL player1 OFF WAIT 2000 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer -2241.8535 128.3346 1.5 // inside rc shop LOAD_SCENE -2241.8535 128.3346 1034.6406 IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -2220.1455 135.9560 1034.6406 ELSE SET_CHAR_COORDINATES scplayer -2220.1455 135.9560 1034.6406 ENDIF SET_CHAR_HEADING scplayer 183.6951 SET_AREA_VISIBLE 6 //zeros toy shop RETURN ENDIF /* IF NOT IS_PLAYER_IN_REMOTE_MODE player1 SET_FORCE_RANDOM_CAR_MODEL TOPFUN GIVE_REMOTE_CONTROLLED_MODEL_TO_PLAYER player1 coord_redbaron_x coord_redbaron_y coord_redbaron_z 40.090 rcbaron DELETE_CAR rc_playerheli_zero5 GET_REMOTE_CONTROLLED_CAR player1 rc_playerheli_zero5 DO_FADE 900 FADE_IN ENDIF */ GET_NUM_OF_MODELS_KILLED_BY_PLAYER player1 TOPFUN van_death_counter_zero5 ENDWHILE RETURN // ***************************** // MISSION PASSED // ***************************** mission_zero5_passed: //flag_pp1_mission1_passed = 1 SET_PLAYER_CONTROL player1 ON CLEAR_WANTED_LEVEL player1 // REGISTER_MISSION_PASSED ( zero_2 ) // flag_zero_mission_counter++ IF NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 ON ENDIF //START_NEW_SCRIPT pp1_mission_loop RETURN // ***************************** // mission failed // ***************************** mission_zero5_failed: IF NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 ON ENDIF PRINT_BIG M_FAIL 5000 1 WHILE TIMERA < 3000 WAIT 0 IF NOT IS_CAR_DEAD rc_playerheli_zero5 // GET_CAR_ROTATION_VELOCITY rc_playerheli_zero5 rotation_velocity_zero5_x rotation_velocity_zero5_y rotation_velocity_zero5_z // IF NOT rotation_velocity_zero5_x = 0.0 // SET_CAR_ROTATION_VELOCITY rc_playerheli_zero5 0.0 0.0 0.0 SET_CAR_FORWARD_SPEED rc_playerheli_zero5 0.0 ENDIF ENDWHILE RETURN // ***************************** // mission cleanup // ***************************** mission_cleanup_zero5: CAMERA_RESET_NEW_SCRIPTABLES // SET_AREA_VISIBLE 0 flag_player_on_mission = 0 SET_POLICE_IGNORE_PLAYER player1 OFF MARK_CAR_AS_NO_LONGER_NEEDED rc_van_zero5 IF IS_PLAYER_PLAYING player1 IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -2244.4438 136.8633 34.3203 SET_CHAR_HEADING scplayer 90.0 ENDIF ENDIF RELEASE_WEATHER SET_PLAYER_CONTROL player1 ON DISABLE_ALL_ENTRY_EXITS FALSE REMOVE_RC_BUGGY MARK_MODEL_AS_NO_LONGER_NEEDED topfun MARK_MODEL_AS_NO_LONGER_NEEDED rcbaron CLEAR_ONSCREEN_TIMER timer_time_limit_zero5 CLEAR_ONSCREEN_COUNTER van_death_counter_zero5 GET_GAME_TIMER timer_mobile_start DISPLAY_CAR_NAMES TRUE MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* Intro 1 ******************************************* // *********************************** BMX Bandits ***************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME intro1 // Mission start stuff GOSUB mission_start_intro1 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_intro1_failed ENDIF GOSUB mission_cleanup_intro1 MISSION_END { // Variables for mission LVAR_INT bmx1 bmx2 bmx3 players_bmx big_smoke_blip sweet_blip ryder_blip smokes_car1 bmx_pals intro_blip2 intro_blip1 failed_mission intro1_chat_switch LVAR_INT players_vehicle index_intro is_recording_started_intr2 drive_by_char1 drive_by_car drive_by_char2 ReturnStatus intro_blip2_flag_on_bike LVAR_INT everyone_finished test_car_blip car_shits_it freeze_the_bmx[3] freeze_the_gangcar dont_repeat_task intro1_cell_index_end get_in_counter_intro1 LVAR_INT bmx_gang[3] out_of_intro1_locate players_ride_int1 bmx_boys bmx_rival_gang drive_to_hub2 drive_to_hub split_up_cut intro1_audio_is_playing LVAR_INT bmx_bikes[3] bmx_gang_finished[3] drive_to_hub1 bmx_rider_on_bike1 bmx_rider_on_bike2 bmx_rider_on_bike3 intro1_index get_in_counter_intro1_2 LVAR_INT smokes_decision sweets_decision ryders_decision skip_funeral_cutscene switch_traffic_back_on intro1_audio_chat[14] num_bikes_in_chase play_catch_up_audio_smoke LVAR_INT intro1_cutscene_flag chars_decision drive_to_hub_smoke set_up_smokes_audio flag_the_drive_by_car_is_dead killed_the_baller_cunts play_catch_up_audio LVAR_FLOAT int1X int1Y int1Z ClosestX ClosestY ClosestZ int1_driveX int1_driveY int1_driveZ player_bmxX player_bmxY player_bmxZ VAR_TEXT_LABEL $intro1_chat[14] intro1_chat_switch: SWITCH intro1_chat_switch CONST_INT INTRO1_CHAT1 0 CONST_INT INTRO1_CHAT2 1 CONST_INT INTRO1_CHAT3 2 CONST_INT INTRO1_CHAT4 3 CONST_INT INTRO1_CHAT5 4 CONST_INT INTRO1_CHAT6 5 CONST_INT INTRO1_CHAT7 6 CASE INTRO1_CHAT1 $intro1_chat[0] = &INT1_AB //You want to drive? $intro1_chat[1] = &INT1_AC //Sure. That's dope. $intro1_chat[2] = &INT1_AR //Nice car, Smoke. $intro1_chat[3] = &INT1_AA //You know me. It's not cut. Keep the value in it. Keep it real. intro1_audio_chat[0] = SOUND_INT1_AB //You want to drive? intro1_audio_chat[1] = SOUND_INT1_AC //Sure. That's dope. intro1_audio_chat[2] = SOUND_INT1_AR //Nice car, Smoke. intro1_audio_chat[3] = SOUND_INT1_AA //You know me. It's not cut. Keep the value in it. Keep it real. intro1_cell_index_end = 3 BREAK CASE INTRO1_CHAT2 $intro1_chat[0] = &INT1_AI //Drive by. Incoming! $intro1_chat[1] = &INT1_AJ //Aww man… $intro1_chat[2] = &INT1_AK //W/e gotta get back to the hood. $intro1_chat[3] = &INT1_AQ //Follow my lead! intro1_audio_chat[0] = SOUND_INT1_AI //Drive by. Incoming! intro1_audio_chat[1] = SOUND_INT1_AJ //Aww man… intro1_audio_chat[2] = SOUND_INT1_AK //W/e gotta get back to the hood. intro1_audio_chat[3] = SOUND_INT1_AQ //Follow my lead! intro1_cell_index_end = 3 BREAK CASE INTRO1_CHAT3 $intro1_chat[0] = &INT1_GN //I got with them motherfuckers though – showed them niggaz who’s gangsta. Ryder, nigga! $intro1_chat[1] = &INT1_GA //When you leaving, Carl? $intro1_chat[2] = &INT1_GB //I ain’t sure. Thought I might stay. $intro1_chat[3] = &INT1_GC //Things are fucked up… $intro1_chat[4] = &INT1_GD //Last thing we need is your help. $intro1_chat[5] = &INT1_GE //I won’t let you down, I swear it. $intro1_chat[6] = &INT1_GH //We gonna call up some freaks. Chill the hell out. You want some? $intro1_chat[7] = &INT1_GI //I gotta lot going on. I’m tired. I’ll see you all later. $intro1_chat[8] = &INT1_GJ //Drop by later – we’re all hanging out. $intro1_chat[9] = &INT1_GL //And get yourself some colours, dude. $intro1_chat[10] = &INT1_GM //And a haircut, it’s an embarrassment to be seen with you! intro1_audio_chat[0] = SOUND_INT1_GN //I got with them motherfuckers though – showed them niggaz who’s gangsta. Ryder, nigga! intro1_audio_chat[1] = SOUND_INT1_GA //When you leaving, Carl? intro1_audio_chat[2] = SOUND_INT1_GB //I ain’t sure. Thought I might stay. intro1_audio_chat[3] = SOUND_INT1_GC //Things are fucked up… intro1_audio_chat[4] = SOUND_INT1_GD //Last thing we need is your help. intro1_audio_chat[5] = SOUND_INT1_GE //I won’t let you down, I swear it. intro1_audio_chat[6] = SOUND_INT1_GH //We gonna call up some freaks. Chill the hell out. You want some? intro1_audio_chat[7] = SOUND_INT1_GI //I gotta lot going on. I’m tired. I’ll see you all later. intro1_audio_chat[8] = SOUND_INT1_GJ //Drop by later – we’re all hanging out. intro1_audio_chat[9] = SOUND_INT1_GL //And get yourself some colours, dude. intro1_audio_chat[10] = SOUND_INT1_GM //And a haircut, it’s an embarrassment to be seen with you! intro1_cell_index_end = 10 BREAK CASE INTRO1_CHAT4 $intro1_chat[0] = &INT1_CA //Shit! Flats car is onto us – SPLIT UP! $intro1_chat[1] = &INT1_EI //Keep up, motherfucker! intro1_audio_chat[0] = SOUND_INT1_CA //Shit! Flats car is onto us – SPLIT UP! intro1_audio_chat[1] = SOUND_INT1_EI //Keep up, motherfucker! intro1_cell_index_end = 1 BREAK CASE INTRO1_CHAT5 $intro1_chat[0] = &INT1_BA //Takes you back some, huh, CJ? Yeah! //SWEET $intro1_chat[1] = &INT1_BC //Things has changed round here! //CARL $intro1_chat[2] = &INT1_BB //CJ, watch your back ‘round here, man. //SWEET $intro1_chat[3] = &INT1_BD //How'd it get so bad? //CARL $intro1_chat[4] = &INT1_AM //I thought this was Families Turf? $intro1_chat[5] = &INT1_AN //Yeah, it’s Temple Drive Families – we don’t roll with them no more. intro1_audio_chat[0] = SOUND_INT1_BA //Takes you back some, huh, CJ? Yeah! //SWEET intro1_audio_chat[1] = SOUND_INT1_BC //Things has changed round here! //CARL intro1_audio_chat[2] = SOUND_INT1_BB //CJ, watch your back ‘round here, man. //SWEET intro1_audio_chat[3] = SOUND_INT1_BD //How'd it get so bad? //CARL intro1_audio_chat[4] = SOUND_INT1_AM //I thought this was Families Turf? intro1_audio_chat[5] = SOUND_INT1_AN //Yeah, it’s Temple Drive Families – we don’t roll with them no more. intro1_cell_index_end = 5 BREAK CASE INTRO1_CHAT6 $intro1_chat[0] = &INT1_BF //Straight back into the game, right dog? $intro1_chat[1] = &INT1_BG //Was it this bad before you left? $intro1_chat[2] = &INT1_BH //East Coast got you all thinned out, home. intro1_audio_chat[0] = SOUND_INT1_BF //Straight back into the game, right dog? intro1_audio_chat[1] = SOUND_INT1_BG //Was it this bad before you left? intro1_audio_chat[2] = SOUND_INT1_BH //East Coast got you all thinned out, home. intro1_cell_index_end = 2 BREAK CASE INTRO1_CHAT7 $intro1_chat[0] = &INT1_BI //You’re just a lialbility, CJ! $intro1_chat[1] = &INT1_BK //Why’d you bother coming back, CJ? intro1_audio_chat[0] = SOUND_INT1_BI //You’re just a lialbility, CJ! intro1_audio_chat[1] = SOUND_INT1_BK //Why’d you bother coming back, CJ? intro1_cell_index_end = 1 BREAK /* SWEET [INT1_CA] Shit! A Ballas car is onto us! Split up! SMOKE [INT1_CB] Damn, Ballas is chasing us down! RYDER [INT1_CC] BALLAS! EVERYBODY BREAK! Player falls off ************************************************************ //GET_CHAR_HIGHEST_PRIORITY_EVENT scplayer ReturnEventType //FOR PLAYER GETTING KNOCKED OFF //SWEET [INT1_DA] Get up, CJ, pedal! [INT1_DB] Move it, CJ, not far to the Grove! [INT1_DC] You ok, CJ? //SMOKE [INT1_DD] Hey, hey, Carl’s down! [INT1_DE] Oh man, that shit looked like it hurt, homie! [INT1_DF] Get back on your bike, playa! //RYDER [INT1_DG] Ha ha! This fool took a fall! [INT1_DH] He can’t even ride a bike! [INT1_DI] CJ, you cycle like a crack ho, fool! Player pulls ahead ********************************************************** //SWEET [INT1_FA] Hey, look at CJ go! [INT1_FB] Hey, CJ, wait for us, man! [INT1_FC] CJ, you running like a bitch, man! //SMOKE [INT1_FD] Carl’s showing us how it’s really done. [INT1_FE] Skinny fool’s flying ahead on his own. [INT1_FF] CJ’s doing his thing top speed, dog! //RYDER [INT1_FG] Typical, CJ! Leaving the homies behind, huh? [INT1_FH] Hey wait for the homies, fool! [INT1_FI] Figures, moving fast as a motherfucker, you busta! */ ENDSWITCH RETURN // **************************************** Mission Start ********************************** mission_start_intro1: flag_player_on_mission = 1 bmx_gang[0] = big_smoke bmx_gang[1] = ryder bmx_gang[2] = sweet bmx_bikes[0] = bmx1 bmx_bikes[1] = bmx3 bmx_bikes[2] = bmx2 bmx_gang_finished[0] = 0 bmx_gang_finished[1] = 0 bmx_gang_finished[2] = 0 bmx_rider_on_bike1 = 0 bmx_rider_on_bike2 = 0 bmx_rider_on_bike3 = 0 freeze_the_bmx[0] = 0 freeze_the_bmx[1] = 0 freeze_the_bmx[2] = 0 intro1_index = 0 index_intro = 0 is_recording_started_intr2 = 0 been_in_a_bmx = 0 out_of_intro1_locate = 0 everyone_finished = 0 car_shits_it = 0 freeze_the_gangcar = 0 dont_repeat_task = 0 split_up_cut = 0 switch_traffic_back_on = 0 failed_mission = 0 intro_blip2_flag_on_bike = 0 num_bikes_in_chase = 3 play_catch_up_audio = 1 play_catch_up_audio_smoke = 1 get_in_counter_intro1_2 = 0 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT INTRO1 SET_TIME_OF_DAY 09 00 // ****************************************START OF CUTSCENE******************************** CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_AREA_VISIBLE 3 LOAD_CUTSCENE INTRO1A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 // ****************************************END OF CUTSCENE********************************** REMOVE_BLIP intro_coords_blip SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.2 ENABLE_AMBIENT_CRIME FALSE LOAD_SPECIAL_CHARACTER 10 smoke REQUEST_MODEL PEREN LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED PEREN OR NOT HAS_SPECIAL_CHARACTER_LOADED 10 WAIT 0 ENDWHILE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF CLEAR_CHAR_TASKS scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CREATE_CHAR PEDTYPE_MISSION1 SPECIAL10 2498.91 -1680.5 12.37 big_smoke //Big_Smoke SET_ANIM_GROUP_FOR_CHAR big_smoke fatman SET_CHAR_HEADING big_smoke 90.0 CREATE_CAR PEREN 2494.91 -1682.17 12.32 smokes_car1 MARK_MODEL_AS_NO_LONGER_NEEDED PEREN CHANGE_CAR_COLOUR smokes_car1 CARCOLOUR_BLACK CARCOLOUR_BLACK SET_CAR_HEADING smokes_car1 90.0 SET_CHAR_COORDINATES scplayer 2495.59 -1686.96 12.51 TASK_STAND_STILL scplayer TRUE SET_CHAR_HEADING scplayer 32.0 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER big_smoke smokes_car1 10000 0 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_DRIVER scplayer smokes_car1 10000 CLEAR_AREA 2494.91 -1682.17 12.32 50.0 TRUE //LOAD_SCENE 2498.71 -1681.89 12.37 LOAD_SCENE_IN_DIRECTION 2495.59 -1686.96 12.51 32.20 SET_AREA_VISIBLE 0 SET_RADIO_CHANNEL RS_DISCO_FUNK_SOUL intro1_index = 0 intro1_audio_is_playing = 0 intro1_cutscene_flag = 0 intro1_chat_switch = INTRO1_CHAT1 GOSUB intro1_chat_switch DO_FADE 1500 FADE_IN SET_FIXED_CAMERA_POSITION 2498.9470 -1690.0001 14.4011 0.0 0.0 0.0 //Fence view POINT_CAMERA_AT_POINT 2498.4045 -1689.1774 14.2309 JUMP_CUT //SKIP_CUTSCENE_START WHILE NOT intro1_index = 2 WAIT 0 GOSUB load_and_play_audio_intro1 ENDWHILE CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2498.9470 -1690.0001 14.4011 2501.2363 -1678.2303 17.5252 9000 TRUE CAMERA_SET_VECTOR_TRACK 2498.4045 -1689.1774 14.2309 2500.2378 -1678.1876 17.4907 9000 TRUE IF NOT IS_CAR_DEAD smokes_car1 IF NOT IS_CHAR_DEAD big_smoke WHILE NOT IS_CHAR_IN_CAR scplayer smokes_car1 OR NOT IS_CHAR_IN_CAR big_smoke smokes_car1 WAIT 0 IF IS_CAR_DEAD smokes_car1 GOTO mission_intro1_failed ENDIF IF IS_CHAR_DEAD big_smoke GOTO mission_intro1_failed ENDIF GOSUB load_and_play_audio_intro1 ENDWHILE ENDIF ENDIF IF NOT IS_CAR_DEAD smokes_car1 TASK_CAR_DRIVE_TO_COORD scplayer smokes_car1 2414.68 -1656.38 12.38 10.0 MODE_NORMAL PEREN DRIVINGMODE_AVOIDCARS ENDIF WHILE NOT intro1_index = 4 WAIT 0 GOSUB load_and_play_audio_intro1 ENDWHILE //SKIP_CUTSCENE_END CLEAR_PRINTS // ****************************************START OF CUTSCENE******************************** SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT PRINT_BIG ( FUNERAL ) 1000 2 // WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CAMERA_RESET_NEW_SCRIPTABLES DELETE_CHAR big_smoke UNLOAD_SPECIAL_CHARACTER 10 IF NOT IS_CAR_DEAD smokes_car1 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CAR_COORDINATES smokes_car1 956.60 -1099.47 22.73 SET_CAR_HEADING smokes_car1 0.0 IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 910.78 -1075.26 23.29 ELSE SET_CHAR_COORDINATES scplayer 910.78 -1075.26 23.29 ENDIF SET_CHAR_HEADING scplayer 265.0 ENDIF MAKE_PLAYER_SAFE_FOR_CUTSCENE Player1 LOAD_SCENE_IN_DIRECTION 910.78 -1075.26 23.29 265.0 LOAD_CUTSCENE INTRO1B WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE //SET_AREA_VISIBLE 0 // ****************************************END OF CUTSCENE********************************** SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.2 //START Funeral Cut Scene********************************************************************************************** LOAD_SPECIAL_CHARACTER 1 sweet LOAD_SPECIAL_CHARACTER 3 ryder2 LOAD_SPECIAL_CHARACTER 10 smoke REQUEST_MODEL PEREN REQUEST_MODEL BMX REQUEST_MODEL micro_uzi REQUEST_MODEL VOODOO REQUEST_MODEL ballas1 REQUEST_MODEL COLT45 REQUEST_CAR_RECORDING 201 LOAD_ALL_MODELS_NOW WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_SPECIAL_CHARACTER_LOADED 3 OR NOT HAS_SPECIAL_CHARACTER_LOADED 10 OR NOT HAS_MODEL_LOADED PEREN OR NOT HAS_MODEL_LOADED BMX OR NOT HAS_MODEL_LOADED VOODOO WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED micro_uzi OR NOT HAS_MODEL_LOADED ballas1 OR NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 201 WAIT 0 ENDWHILE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF SET_NEAR_CLIP 0.2 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 CLEAR_AREA 943.71 -1103.50 22.85 70.0 TRUE LOAD_SCENE_IN_DIRECTION 943.71 -1103.50 22.85 90.0 CREATE_CAR VOODOO 1038.5 -954.9 41.5 drive_by_car SUPPRESS_CAR_MODEL VOODOO CHANGE_CAR_COLOUR drive_by_car 22 22 SET_LOAD_COLLISION_FOR_CAR_FLAG drive_by_car FALSE CREATE_CHAR_INSIDE_CAR drive_by_car PEDTYPE_MISSION2 ballas1 drive_by_char1 CREATE_CHAR_AS_PASSENGER drive_by_car PEDTYPE_MISSION2 ballas1 0 drive_by_char2 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY chars_decision SET_CHAR_PROOFS drive_by_char1 TRUE TRUE TRUE TRUE TRUE // 3MASTER - the driver could get killed by the explosion during the cutscene and screw up the chase! Proof them! SET_CHAR_PROOFS drive_by_char2 TRUE TRUE TRUE TRUE TRUE SET_CHAR_ACCURACY drive_by_char1 25 SET_CHAR_ACCURACY drive_by_char2 25 SET_CHAR_SHOOT_RATE drive_by_char1 30 SET_CHAR_SHOOT_RATE drive_by_char2 30 SET_CHAR_RELATIONSHIP drive_by_char1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP drive_by_char2 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 MARK_MODEL_AS_NO_LONGER_NEEDED ballas1 GIVE_WEAPON_TO_CHAR drive_by_char2 WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON drive_by_char2 WEAPONTYPE_MICRO_UZI GIVE_WEAPON_TO_CHAR drive_by_char1 WEAPONTYPE_MICRO_UZI 30000 MARK_MODEL_AS_NO_LONGER_NEEDED micro_uzi SET_CURRENT_CHAR_WEAPON drive_by_char1 WEAPONTYPE_MICRO_UZI LOCK_CAR_DOORS drive_by_car CARLOCK_LOCKED SET_CAR_HEADING drive_by_car 100.8 SET_CAR_HEALTH drive_by_car 2000 // 3master - move the bikes a bit further from the wall, the building now has more complex collision that doesn't get along here CREATE_CAR BMX 970.1 -1108.0 23.1 players_bmx SET_CAR_HEALTH players_bmx 2000 SET_CAR_HEADING players_bmx 140.0 SET_CAN_BURST_CAR_TYRES players_bmx FALSE CREATE_CAR BMX 970.1 -1110.5 23.3 bmx_bikes[0] //SMOKE SET_CAR_HEALTH bmx_bikes[0] 2000 SET_CAR_HEADING bmx_bikes[0] 110.0 SET_CAN_BURST_CAR_TYRES bmx_bikes[0] FALSE SET_CAR_STRAIGHT_LINE_DISTANCE bmx_bikes[0] 30 CREATE_CAR BMX 970.1 -1115.5 23.1 bmx_bikes[1] //RYDER SET_CAR_HEALTH bmx_bikes[1] 2000 SET_CAR_HEADING bmx_bikes[1] 140.0 SET_CAN_BURST_CAR_TYRES bmx_bikes[1] FALSE SET_CAR_STRAIGHT_LINE_DISTANCE bmx_bikes[1] 30 CREATE_CAR BMX 970.1 -1113.0 23.1 bmx_bikes[2] //SWEET SET_CAR_HEALTH bmx_bikes[2] 2000 SET_CAR_HEADING bmx_bikes[2] 140.0 SET_CAN_BURST_CAR_TYRES bmx_bikes[2] FALSE SET_CAR_STRAIGHT_LINE_DISTANCE bmx_bikes[2] 30 MARK_MODEL_AS_NO_LONGER_NEEDED BMX IF NOT IS_CAR_DEAD smokes_car1 SET_PLAYER_CONTROL player1 OFF SET_CAR_CAN_BE_DAMAGED smokes_car1 TRUE SET_CAR_COORDINATES smokes_car1 956.60 -1099.47 22.73 SET_CAR_HEADING smokes_car1 0.0 ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 940.0 -1103.50 22.85 ELSE SET_CHAR_COORDINATES scplayer 940.0 -1103.50 22.85 //goto coords 951.1255 -1103.50 22.85 ENDIF SET_CHAR_HEADING scplayer 272.5 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE TASK_GO_STRAIGHT_TO_COORD scplayer 954.0 -1103.50 22.85 PEDMOVE_WALK 20000 CREATE_CHAR PEDTYPE_MISSION1 SPECIAL10 942.79 -1104.41 22.85 bmx_gang[0] //SMOKE //left of CJ SET_ANIM_GROUP_FOR_CHAR bmx_gang[0] fatman SET_CHAR_HEALTH bmx_gang[0] 2000 SET_CHAR_HEADING bmx_gang[0] 184.0 SET_CHAR_NEVER_TARGETTED bmx_gang[0] TRUE SET_CHAR_SUFFERS_CRITICAL_HITS bmx_gang[0] FALSE SET_CHAR_CANT_BE_DRAGGED_OUT bmx_gang[0] TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED bmx_gang[0] TRUE TASK_GO_STRAIGHT_TO_COORD bmx_gang[0] 954.0 -1104.41 22.85 PEDMOVE_WALK 20000 SET_CHAR_DECISION_MAKER bmx_gang[0] chars_decision SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE bmx_gang[0] KNOCKOFFBIKE_NEVER CREATE_CHAR PEDTYPE_MISSION1 SPECIAL03 942.9 -1105.79 22.85 bmx_gang[1] //RYDER //furthest left SET_ANIM_GROUP_FOR_CHAR bmx_gang[1] gang1 SET_CHAR_HEALTH bmx_gang[1] 2000 SET_CHAR_HEADING bmx_gang[1] 50.0 SET_CHAR_NEVER_TARGETTED bmx_gang[1] TRUE SET_CHAR_SUFFERS_CRITICAL_HITS bmx_gang[1] FALSE SET_CHAR_CANT_BE_DRAGGED_OUT bmx_gang[1] TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED bmx_gang[1] TRUE TASK_GO_STRAIGHT_TO_COORD bmx_gang[1] 954.0 -1105.79 22.85 PEDMOVE_WALK 25000 SET_CHAR_DECISION_MAKER bmx_gang[1] chars_decision SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE bmx_gang[1] KNOCKOFFBIKE_NEVER CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 942.96 -1102.0 22.85 bmx_gang[2] //SWEET //right of CJ SET_ANIM_GROUP_FOR_CHAR bmx_gang[2] gang2 SET_CHAR_HEALTH bmx_gang[2] 2000 SET_CHAR_HEADING bmx_gang[2] 96.0 SET_CHAR_NEVER_TARGETTED bmx_gang[2] TRUE SET_CHAR_SUFFERS_CRITICAL_HITS bmx_gang[2] FALSE SET_CHAR_CANT_BE_DRAGGED_OUT bmx_gang[2] TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED bmx_gang[2] TRUE TASK_GO_STRAIGHT_TO_COORD bmx_gang[2] 954.0 -1102.0 22.85 PEDMOVE_WALK 20000 SET_CHAR_DECISION_MAKER bmx_gang[2] chars_decision SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE bmx_gang[2] KNOCKOFFBIKE_NEVER ADD_BLIP_FOR_CHAR bmx_gang[2] sweet_blip SET_BLIP_AS_FRIENDLY sweet_blip TRUE REMOVE_BLIP sweet_blip TIMERB = 0 WHILE TIMERB < 900 WAIT 0 ENDWHILE LOAD_SCENE_IN_DIRECTION 940.0 -1103.50 22.85 272.5 DO_FADE 500 FADE_IN CLEAR_AREA 949.8 -1100.3 23.0 500.0 TRUE SET_FIXED_CAMERA_POSITION 947.9119 -1103.9116 23.4476 0.0 0.0 0.0 //view of 4 guys walking towards cam POINT_CAMERA_AT_POINT 946.9478 -1103.8223 23.6977 JUMP_CUT intro1_index = 0 intro1_audio_is_playing = 0 intro1_cutscene_flag = 0 intro1_chat_switch = INTRO1_CHAT2 GOSUB intro1_chat_switch skip_funeral_cutscene = 0 //SKIP_CUTSCENE_START TIMERB = 0 WHILE TIMERB < 3300 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD drive_by_car IF NOT IS_CHAR_DEAD drive_by_char1 IF HAS_CAR_RECORDING_BEEN_LOADED 201 START_PLAYBACK_RECORDED_CAR drive_by_car 201 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD smokes_car1 IF NOT IS_CHAR_DEAD drive_by_char2 IF IS_CHAR_IN_ANY_CAR drive_by_char2 TASK_DRIVE_BY drive_by_char2 -1 -1 952.92 -1102.99 22.85 100.0 DRIVEBY_AI_SIDE TRUE 90 ENDIF ENDIF IF NOT IS_CHAR_DEAD drive_by_char1 IF IS_CHAR_IN_ANY_CAR drive_by_char1 TASK_DRIVE_BY drive_by_char1 -1 smokes_car1 0.0 0.0 0.0 100.0 DRIVEBY_FIXED_LHS FALSE 90 ENDIF ENDIF ENDIF TIMERB = 0 WHILE TIMERB < 1500 WAIT 0 ENDWHILE CAMERA_RESET_NEW_SCRIPTABLES SET_FIXED_CAMERA_POSITION 951.3326 -1099.6516 25.3079 0.0 0.0 0.0 //Ryder spots drive by POINT_CAMERA_AT_POINT 951.9009 -1100.4523 25.1184 JUMP_CUT TIMERB = 0 WHILE TIMERB < 2500 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD drive_by_car IF NOT IS_CHAR_DEAD bmx_gang[1] CLEAR_LOOK_AT bmx_gang[1] TASK_LOOK_AT_VEHICLE bmx_gang[1] drive_by_car 4000 ENDIF ENDIF TIMERB = 0 WHILE TIMERB < 1000 WAIT 0 ENDWHILE WHILE NOT intro1_index = 1 //Drive by. Incoming! WAIT 0 GOSUB load_and_play_audio_intro1 IF intro1_cutscene_flag = 0 IF intro1_audio_is_playing = 2 IF NOT IS_CAR_DEAD drive_by_car IF NOT IS_CHAR_DEAD bmx_gang[1] //CLEAR_LOOK_AT bmx_gang[1] //TASK_LOOK_AT_VEHICLE bmx_gang[1] drive_by_car 4000 TIMERB = 0 TASK_LOOK_AT_VEHICLE scplayer drive_by_car 4000 IF NOT IS_CHAR_DEAD bmx_gang[0] CLEAR_LOOK_AT bmx_gang[0] TASK_LOOK_AT_VEHICLE bmx_gang[0] drive_by_car 4000 ENDIF IF NOT IS_CHAR_DEAD bmx_gang[2] CLEAR_LOOK_AT bmx_gang[2] TASK_LOOK_AT_VEHICLE bmx_gang[2] drive_by_car 4000 ENDIF intro1_cutscene_flag = 1 ENDIF ENDIF CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 951.3326 -1099.6516 25.3079 951.3326 -1099.6516 25.3079 7500 TRUE CAMERA_SET_VECTOR_TRACK 951.9009 -1100.4523 25.1184 951.9258 -1098.8468 25.3253 7500 TRUE ENDIF ENDIF IF TIMERB > 1000 IF intro1_cutscene_flag = 1 IF NOT IS_CHAR_DEAD bmx_gang[1] TASK_DIVE_AND_GET_UP bmx_gang[1] 1.0 -3.0 1000 IF NOT IS_CHAR_DEAD bmx_gang[0] GIVE_WEAPON_TO_CHAR bmx_gang[0] WEAPONTYPE_PISTOL 50 SET_CHAR_HEADING bmx_gang[0] 270.0 SET_CHAR_STAY_IN_SAME_PLACE bmx_gang[0] TRUE IF NOT IS_CHAR_DEAD drive_by_char1 TASK_TOGGLE_DUCK bmx_gang[0] TRUE TASK_KILL_CHAR_ON_FOOT bmx_gang[0] drive_by_char1 ENDIF ENDIF IF NOT IS_CHAR_DEAD bmx_gang[2] GIVE_WEAPON_TO_CHAR bmx_gang[2] WEAPONTYPE_PISTOL 50 IF NOT IS_CHAR_DEAD drive_by_char1 TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING bmx_gang[2] drive_by_char1 DUCK_RANDOMLY 2000 100 ENDIF ENDIF TASK_DIVE_AND_GET_UP scplayer -1.5 -1.0 1000 ENDIF intro1_cutscene_flag = 2 ENDIF ENDIF ENDWHILE TIMERB = 0 WHILE TIMERB < 1000 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD smokes_car1 EXPLODE_CAR_IN_CUTSCENE smokes_car1 ENDIF TIMERB = 0 intro1_cutscene_flag = 0 WHILE NOT intro1_index = 2 //Aww man! WAIT 0 GOSUB load_and_play_audio_intro1 IF TIMERB > 1600 GOTO skip_out_smokes_audio ENDIF ENDWHILE skip_out_smokes_audio: CLEAR_AREA 956.09 -1105.68 22.75 50.0 TRUE IF NOT IS_CHAR_DEAD drive_by_char2 CLEAR_CHAR_TASKS drive_by_char2 TASK_PLAY_ANIM drive_by_char2 CAR_sit PED 4.0 FALSE FALSE FALSE FALSE -1 ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 945.7507 -1103.5486 23.0477 SET_CHAR_HEADING scplayer 252.8 TASK_STAND_STILL scplayer TRUE IF NOT IS_CHAR_DEAD bmx_gang[0] IF NOT IS_CAR_DEAD bmx_bikes[0] SET_CHAR_STAY_IN_SAME_PLACE bmx_gang[0] FALSE TASK_STAND_STILL bmx_gang[0] TRUE CLEAR_LOOK_AT bmx_gang[0] TASK_TOGGLE_DUCK bmx_gang[0] FALSE SET_CHAR_COORDINATES bmx_gang[0] 957.0725 -1106.5038 22.7146 SET_CHAR_HEADING bmx_gang[0] 251.1192 TASK_ENTER_CAR_AS_DRIVER bmx_gang[0] bmx_bikes[0] -1 //SMOKE ENDIF ENDIF IF NOT IS_CHAR_DEAD bmx_gang[1] IF NOT IS_CAR_DEAD bmx_bikes[1] SET_CHAR_STAY_IN_SAME_PLACE bmx_gang[1] FALSE TASK_STAND_STILL bmx_gang[1] TRUE CLEAR_LOOK_AT bmx_gang[1] TASK_ENTER_CAR_AS_DRIVER bmx_gang[1] bmx_bikes[1] -1 //RYDER ENDIF ENDIF IF NOT IS_CHAR_DEAD bmx_gang[2] IF NOT IS_CAR_DEAD bmx_bikes[2] SET_CHAR_STAY_IN_SAME_PLACE bmx_gang[2] FALSE TASK_STAND_STILL bmx_gang[2] TRUE CLEAR_LOOK_AT bmx_gang[2] SET_CHAR_COORDINATES bmx_gang[2] 957.12 -1104.4 22.7146 TASK_ENTER_CAR_AS_DRIVER bmx_gang[2] bmx_bikes[2] -1 //SWEET ENDIF ENDIF TIMERB = 0 WHILE TIMERB < 100 WAIT 0 ENDWHILE CAMERA_RESET_NEW_SCRIPTABLES SET_FIXED_CAMERA_POSITION 953.4890 -1100.4652 24.8611 0.0 0.0 0.0 //Sweet talks again POINT_CAMERA_AT_POINT 954.1205 -1101.2365 24.7823 JUMP_CUT LOAD_MISSION_AUDIO 2 SOUND_INT1_AP //Grab a bike and peddle. Even you ain’t forgotten that. intro1_cutscene_flag = 0 WHILE NOT intro1_index = 3 //BLAH BLAH WAIT 0 GOSUB load_and_play_audio_intro1 IF intro1_cutscene_flag = 0 IF intro1_audio_is_playing = 2 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_GO_STRAIGHT_TO_COORD scplayer 971.1810 -1108.1931 22.8672 PEDMOVE_RUN 10000 intro1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 2 PRINT_NOW ( INT1_AP ) 10000 1 //Grab a bike and peddle. Even you ain't forgotten that. WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 ENDWHILE skip_funeral_cutscene = 1 //SKIP_CUTSCENE_END IF skip_funeral_cutscene = 0 CLEAR_PRINTS SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF IF NOT IS_CHAR_DEAD bmx_gang[0] IF NOT IS_CAR_DEAD bmx_bikes[0] //CLEAR_CHAR_TASKS_IMMEDIATELY bmx_gang[0] SET_CHAR_COORDINATES bmx_gang[0] 969.2067 -1110.3004 22.8672 //SMOKE SET_CHAR_HEADING bmx_gang[0] 273.1099 TASK_TOGGLE_DUCK bmx_gang[0] FALSE ENDIF ENDIF IF NOT IS_CHAR_DEAD bmx_gang[1] IF NOT IS_CAR_DEAD bmx_bikes[1] //CLEAR_CHAR_TASKS_IMMEDIATELY bmx_gang[1] SET_CHAR_COORDINATES bmx_gang[1] 969.1187 -1116.5605 22.8552 //RYDER SET_CHAR_HEADING bmx_gang[1] 298.5085 ENDIF ENDIF IF NOT IS_CHAR_DEAD bmx_gang[2] IF NOT IS_CAR_DEAD bmx_bikes[2] CLEAR_LOOK_AT bmx_gang[2] //CLEAR_CHAR_TASKS_IMMEDIATELY bmx_gang[2] SET_CHAR_COORDINATES bmx_gang[2] 969.4360 -1113.7754 22.8593 //SWEET SET_CHAR_HEADING bmx_gang[2] 267.2885 ENDIF ENDIF CAMERA_RESET_NEW_SCRIPTABLES IF NOT IS_CAR_DEAD smokes_car1 EXPLODE_CAR_IN_CUTSCENE smokes_car1 ENDIF ENDIF IF NOT IS_CHAR_DEAD bmx_gang[0] IF NOT IS_CAR_DEAD bmx_bikes[0] TASK_TOGGLE_DUCK bmx_gang[0] FALSE TASK_ENTER_CAR_AS_DRIVER bmx_gang[0] bmx_bikes[0] -1 //SMOKE ENDIF ENDIF IF NOT IS_CHAR_DEAD bmx_gang[1] IF NOT IS_CAR_DEAD bmx_bikes[1] TASK_ENTER_CAR_AS_DRIVER bmx_gang[1] bmx_bikes[1] -1 //RYDER ENDIF ENDIF IF NOT IS_CHAR_DEAD bmx_gang[2] IF NOT IS_CAR_DEAD bmx_bikes[2] CLEAR_LOOK_AT bmx_gang[2] TASK_ENTER_CAR_AS_DRIVER bmx_gang[2] bmx_bikes[2] -1 //SWEET ENDIF ENDIF MARK_CAR_AS_NO_LONGER_NEEDED smokes_car1 MARK_MODEL_AS_NO_LONGER_NEEDED PEREN IF NOT IS_CHAR_DEAD bmx_gang[0] REMOVE_WEAPON_FROM_CHAR bmx_gang[0] WEAPONTYPE_PISTOL ENDIF IF NOT IS_CHAR_DEAD bmx_gang[2] REMOVE_WEAPON_FROM_CHAR bmx_gang[2] WEAPONTYPE_PISTOL ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 IF NOT IS_CAR_DEAD drive_by_car STOP_PLAYBACK_RECORDED_CAR drive_by_car ELSE STOP_PLAYBACK_RECORDED_CAR drive_by_car ENDIF REMOVE_CAR_RECORDING 201 TIMERB = 0 WHILE TIMERB < 100 WAIT 0 ENDWHILE SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT CLEAR_LOOK_AT scplayer HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE IF NOT IS_CAR_DEAD players_bmx ADD_BLIP_FOR_CAR players_bmx intro_blip2 SET_BLIP_AS_FRIENDLY intro_blip2 TRUE ENDIF IF NOT IS_CAR_DEAD drive_by_car GET_CAR_COORDINATES drive_by_car int1X int1Y int1Z int1Z = int1Z - 50.0 SET_CAR_COORDINATES drive_by_car int1X int1Y int1Z FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION drive_by_car TRUE // 3MASTER - we're past the cutscene, we can turn this off now SET_CHAR_PROOFS drive_by_char1 FALSE FALSE FALSE FALSE FALSE SET_CHAR_PROOFS drive_by_char2 FALSE FALSE FALSE FALSE FALSE ENDIF IF skip_funeral_cutscene = 0 SET_FADING_COLOUR 0 0 0 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 970.0873 -1107.7755 22.8672 SET_CHAR_HEADING scplayer 254.4577 TIMERB = 0 SET_PLAYER_CONTROL player1 OFF WHILE TIMERB < 1000 WAIT 0 ENDWHILE DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON ENDIF OPEN_SEQUENCE_TASK drive_to_hub1 TASK_CAR_DRIVE_TO_COORD -1 -1 962.5424 -1128.5996 22.6656 8.0 MODE_NORMAL BMX DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 -1 1036.6025 -1148.9425 22.6562 16.0 MODE_NORMAL BMX DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 -1 1325.5830 -1150.1833 22.6484 23.0 MODE_NORMAL BMX DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 -1 1644.7734 -1051.3339 22.8984 23.0 MODE_NORMAL BMX DRIVINGMODE_AVOIDCARS //SPLIT UP! CLOSE_SEQUENCE_TASK drive_to_hub1 OPEN_SEQUENCE_TASK drive_to_hub2 TASK_CAR_DRIVE_TO_COORD -1 -1 1780.85 -1111.48 23.08 21.0 MODE_NORMAL BMX DRIVINGMODE_AVOIDCARS // TASK_CAR_DRIVE_TO_COORD -1 -1 1786.54 -1191.30 22.95 20.0 MODE_NORMAL BMX DRIVINGMODE_AVOIDCARS // TASK_CAR_DRIVE_TO_COORD -1 -1 1798.67 -1270.41 12.47 19.0 MODE_NORMAL BMX DRIVINGMODE_AVOIDCARS // TASK_CAR_DRIVE_TO_COORD -1 -1 1891.00 -1347.78 12.54 21.0 MODE_NORMAL BMX DRIVINGMODE_AVOIDCARS // TASK_CAR_DRIVE_TO_COORD -1 -1 1959.12 -1450.10 12.45 21.0 MODE_NORMAL BMX DRIVINGMODE_AVOIDCARS // TASK_CAR_DRIVE_TO_COORD -1 -1 1987.61 -1516.69 2.39 21.0 MODE_NORMAL BMX DRIVINGMODE_AVOIDCARS // TASK_CAR_DRIVE_TO_COORD -1 -1 2493.82 -1669.91 12.80 25.0 MODE_NORMAL BMX DRIVINGMODE_AVOIDCARS //HUB CLOSE_SEQUENCE_TASK drive_to_hub2 OPEN_SEQUENCE_TASK drive_to_hub_smoke TASK_CAR_DRIVE_TO_COORD -1 -1 1780.85 -1111.48 23.08 20.0 MODE_NORMAL BMX DRIVINGMODE_AVOIDCARS // TASK_CAR_DRIVE_TO_COORD -1 -1 1784.54 -1191.30 22.95 19.0 MODE_NORMAL BMX DRIVINGMODE_AVOIDCARS // TASK_CAR_DRIVE_TO_COORD -1 -1 1798.67 -1270.41 12.47 19.0 MODE_NORMAL BMX DRIVINGMODE_AVOIDCARS // TASK_CAR_DRIVE_TO_COORD -1 -1 1891.00 -1347.78 12.54 20.0 MODE_NORMAL BMX DRIVINGMODE_AVOIDCARS // TASK_CAR_DRIVE_TO_COORD -1 -1 1959.12 -1450.10 12.45 20.0 MODE_NORMAL BMX DRIVINGMODE_AVOIDCARS // TASK_CAR_DRIVE_TO_COORD -1 -1 1987.61 -1516.69 2.39 20.0 MODE_NORMAL BMX DRIVINGMODE_AVOIDCARS // TASK_CAR_DRIVE_TO_COORD -1 -1 2493.82 -1669.91 12.80 24.0 MODE_NORMAL BMX DRIVINGMODE_AVOIDCARS //HUB CLOSE_SEQUENCE_TASK drive_to_hub_smoke IF IS_CAR_DEAD players_bmx PRINT_NOW (INT2_F4) 10000 1 //Your BMX is trashed! GOTO mission_intro1_failed ENDIF //END Funeral Cut Scene************************************************************************************************ intro1_audio_is_playing = 0 //GOTO skip_to_this_bit_of_script2 intro1_index = 3 WHILE NOT intro1_index = 4 //Follow my lead WAIT 0 GOSUB load_and_play_audio_intro1 GOSUB bmx_gang_death_check //Check Ryder, Smoke and Sweet are alive GOSUB freeze_bmxs IF failed_mission = 1 GOTO mission_intro1_failed ENDIF ENDWHILE PRINT_NOW (INTRO2E) 10000 1 // Get on the ~b~bike~s~ and follow ~b~Sweet. REQUEST_ANIMATION MISC blob_flag = 1 TIMERA = 0 IF IS_CHAR_DEAD bmx_gang[2] PRINT_NOW (INT2_F2) 10000 1 //~r~Sweet is dead! GOTO mission_intro1_failed ENDIF switch_traffic_back_on = 0 killed_the_baller_cunts = 0 intro1_index = 0 intro1_audio_is_playing = 0 intro1_cutscene_flag = 0 intro1_chat_switch = INTRO1_CHAT5 GOSUB intro1_chat_switch WHILE NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 1644.7734 -1051.3339 22.8984 10.0 12.0 20.0 FALSE OR NOT LOCATE_CHAR_ANY_MEANS_3D bmx_gang[2] 1644.7734 -1051.3339 22.8984 10.0 12.0 20.0 FALSE WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S SET_CHAR_COORDINATES scplayer 2473.6921 -1684.2153 12.4625 GOTO mission_intro1_passed ENDIF GOSUB bmx_gang_death_check //Check Ryder, Smoke and Sweet are alive GOSUB freeze_bmxs IF NOT IS_CAR_DEAD players_bmx IF IS_CHAR_IN_CAR scplayer players_bmx CLEAR_THIS_PRINT INTRO2E ENDIF ENDIF IF failed_mission = 1 GOTO mission_intro1_failed ENDIF // ***********************************SWITCH PEDS BACK ON************************************************************** IF switch_traffic_back_on = 0 IF TIMERA > 6000 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 switch_traffic_back_on = 1 ENDIF ENDIF // *************************************************************************************************************** // **************************************OUTSIDE OF INITIAL LOCATE************************************************ IF out_of_intro1_locate = 0 IF NOT IS_CAR_DEAD drive_by_car IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 949.4 -1102.1 23.2 50.0 60.0 25.0 FALSE SET_CAR_COORDINATES drive_by_car 1079.15 -1084.73 25.43 SET_CAR_HEADING drive_by_car 175.95 FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION drive_by_car FALSE IF IS_CHAR_IN_ANY_CAR scplayer IF NOT IS_CHAR_DEAD drive_by_char2 IF IS_CHAR_IN_ANY_CAR drive_by_char2 CLEAR_CHAR_TASKS drive_by_char2 TASK_DRIVE_BY drive_by_char2 scplayer -1 0.0 0.0 0.0 5000.0 DRIVEBY_AI_SIDE TRUE 40 ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer players_ride_int1 IF NOT IS_CHAR_DEAD drive_by_char1 IF NOT IS_CAR_DEAD drive_by_car CLEAR_CHAR_TASKS drive_by_char1 IF IS_CHAR_IN_ANY_CAR drive_by_char1 TASK_CAR_MISSION drive_by_char1 drive_by_car players_ride_int1 MISSION_ESCORT_LEFT 30.0 DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF ENDIF ELSE GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 -4.0 0.0 int1_driveX int1_driveY int1_driveZ IF NOT IS_CHAR_DEAD drive_by_char1 GET_SCRIPT_TASK_STATUS drive_by_char1 TASK_CAR_DRIVE_TO_COORD ReturnStatus IF ReturnStatus = FINISHED_TASK IF NOT IS_CHAR_DEAD drive_by_char1 IF NOT IS_CAR_DEAD drive_by_car TASK_CAR_DRIVE_TO_COORD drive_by_char1 drive_by_car int1_driveX int1_driveY int1_driveZ 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF ENDIF ENDIF out_of_intro1_locate = 1 ENDIF ENDIF ELSE IF NOT IS_CAR_DEAD drive_by_car IF NOT IS_CHAR_DEAD drive_by_char1 IF NOT IS_CHAR_DEAD drive_by_char2 // going over the bridge flips the car, dont. IF LOCATE_CAR_2D drive_by_car 1965.90 -1475.38 50.0 50.0 FALSE LVAR_FLOAT ballas_car_pitch GET_CAR_PITCH drive_by_car ballas_car_pitch // pitching up, force down IF ballas_car_pitch > 30.0 AND ballas_car_pitch < 180.0 ADD_TO_CAR_ROTATION_VELOCITY drive_by_car -0.4 0.0 0.0 ELSE // pitching down, force up IF ballas_car_pitch < 330.0 AND ballas_car_pitch > 180.0 ADD_TO_CAR_ROTATION_VELOCITY drive_by_car 0.4 0.0 0.0 ENDIF ENDIF ENDIF GET_CHAR_COORDINATES scplayer player_bmxX player_bmxY player_bmxZ IF NOT LOCATE_CAR_2D drive_by_car player_bmxX player_bmxY 50.0 50.0 FALSE // here's the rubberbanding... AND NOT IS_CAR_ON_SCREEN drive_by_car CLEAR_CHAR_TASKS drive_by_char1 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 -40.0 0.0 int1X int1Y int1Z GET_CLOSEST_CAR_NODE int1X int1Y int1Z ClosestX ClosestY ClosestZ SET_CAR_COORDINATES drive_by_car ClosestX ClosestY ClosestZ TURN_CAR_TO_FACE_COORD drive_by_car player_bmxX player_bmxY // 3MASTER - face the player instead, dont get stuck SET_CAR_FORWARD_SPEED drive_by_car 10.0 ELSE IF IS_CHAR_IN_ANY_CAR scplayer GET_SCRIPT_TASK_STATUS drive_by_char1 TASK_CAR_MISSION ReturnStatus IF ReturnStatus = FINISHED_TASK IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer players_ride_int1 IF IS_CHAR_IN_ANY_CAR drive_by_char1 TASK_CAR_MISSION drive_by_char1 drive_by_car players_ride_int1 MISSION_ESCORT_LEFT 30.0 DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD drive_by_char2 IF IS_CHAR_IN_ANY_CAR drive_by_char2 GET_SCRIPT_TASK_STATUS drive_by_char2 TASK_DRIVE_BY ReturnStatus IF ReturnStatus = FINISHED_TASK TASK_DRIVE_BY drive_by_char2 scplayer -1 0.0 0.0 0.0 5000.0 DRIVEBY_AI_SIDE TRUE 40 ENDIF ENDIF ENDIF ELSE GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 -4.0 0.0 int1_driveX int1_driveY int1_driveZ GET_SCRIPT_TASK_STATUS drive_by_char1 TASK_CAR_DRIVE_TO_COORD ReturnStatus IF ReturnStatus = FINISHED_TASK IF NOT IS_CHAR_DEAD drive_by_char1 IF NOT IS_CAR_DEAD drive_by_car TASK_CAR_DRIVE_TO_COORD drive_by_char1 drive_by_car int1_driveX int1_driveY int1_driveZ 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD drive_by_char2 IF IS_CHAR_IN_ANY_CAR drive_by_char2 GET_SCRIPT_TASK_STATUS drive_by_char2 TASK_DRIVE_BY ReturnStatus IF ReturnStatus = FINISHED_TASK TASK_DRIVE_BY drive_by_char2 scplayer -1 0.0 0.0 0.0 5000.0 DRIVEBY_AI_SIDE TRUE 40 ENDIF ENDIF ENDIF ENDIF ENDIF ELSE IF killed_the_baller_cunts = 0 IF NOT IS_CHAR_DEAD drive_by_char1 CLEAR_CHAR_TASKS drive_by_char1 TASK_LEAVE_ANY_CAR drive_by_char1 TASK_KILL_CHAR_ON_FOOT drive_by_char1 scplayer killed_the_baller_cunts = 1 ENDIF ENDIF ENDIF ELSE IF killed_the_baller_cunts = 0 IF NOT IS_CHAR_DEAD drive_by_char2 CLEAR_CHAR_TASKS drive_by_char2 TASK_LEAVE_ANY_CAR drive_by_char2 TASK_KILL_CHAR_ON_FOOT drive_by_char2 scplayer killed_the_baller_cunts = 1 ENDIF ENDIF ENDIF ENDIF IF IS_CHAR_IN_CAR scplayer players_bmx IF NOT IS_CHAR_DEAD bmx_gang[2] IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bmx_gang[2] 20.0 20.0 10.0 FALSE GOSUB load_and_play_audio_intro1 //play_catch_up_audio = 1 ENDIF ENDIF ENDIF ENDIF // *************************************************************************************************************** // ***************************************BMX HELP TEXT*********************************************************** IF IS_CHAR_IN_MODEL scplayer BMX IF been_in_a_bmx = 0 // This is not true in touch, and seems unneeded in joystick configs. //PRINT_HELP INTRO2C // To pedal the bike faster repeatedly tap ~m~~widget_accelerate~. PRINT_HELP INTRHID // Press and hold ~m~~widget_ped_move_up~ and ~m~~widget_ped_move_down~ to lean. TIMERA = 0 been_in_a_bmx = 1 ELSE IF been_in_a_bmx = 1 IF TIMERA > 10000 PRINT_HELP_FOREVER_CONDITIONAL INTRO2D 32 // You can do a bunny hop by double tapping ~m~~widget_accelerate~. (flag 32 is CONDITION_FLAG_BUNNY_HOP). TIMERA = 0 been_in_a_bmx = 2 ENDIF ENDIF IF been_in_a_bmx = 2 IF TIMERA > 20000 // This is not true anymore in the mobile build. //PRINT_HELP HELP3B // You can only cycle fast or sprint for a limited amount of time. PRINT_HELP HELP3B2 // The more exercise you get the higher your ~h~stamina~w~ will become, allowing you to exert yourself for longer. been_in_a_bmx = 3 ENDIF ENDIF ENDIF ENDIF // *************************************************************************************************************** IF IS_CHAR_DEAD bmx_gang[0] PRINT_NOW (INT2_F1) 10000 1 //~r~Smoke is dead! GOTO mission_intro1_failed ENDIF IF IS_CHAR_DEAD bmx_gang[1] PRINT_NOW (INT2_F3) 10000 1 //~r~Ryder is dead! GOTO mission_intro1_failed ENDIF IF IS_CHAR_DEAD bmx_gang[2] PRINT_NOW (INT2_F2) 10000 1 //~r~Sweet is dead! GOTO mission_intro1_failed ENDIF ENDWHILE //skip_to_this_bit_of_script2: //LOAD_SCENE 1714.14 -1303.24 12.39 //REMOVE THIS // ************************************************SPLIT UP CUT SCENE START********************************************************************************************* flag_the_drive_by_car_is_dead = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION 1647.2081 -1085.2321 24.1633 0.0 0.0 0.0 //Follow Ryder POINT_CAMERA_AT_POINT 1646.3540 -1084.7119 24.1640 JUMP_CUT SET_PLAYER_CONTROL player1 OFF LOAD_SCENE_IN_DIRECTION 1637.6420 -1063.7017 22.8984 152.0807 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 WHILE NOT HAS_ANIMATION_LOADED MISC WAIT 0 REQUEST_ANIMATION MISC DO_FADE 0 FADE_OUT ENDWHILE num_bikes_in_chase = 2 IF IS_CAR_DEAD drive_by_car flag_the_drive_by_car_is_dead = 1 num_bikes_in_chase = 3 ELSE IF IS_CAR_IN_WATER drive_by_car OR IS_CHAR_DEAD drive_by_char1 OR IS_CHAR_DEAD drive_by_char2 flag_the_drive_by_car_is_dead = 1 num_bikes_in_chase = 3 ENDIF ENDIF SWITCH_PED_ROADS_OFF 1782.8021 -1203.4969 0.0 1788.2726 -1236.1504 20.0 SET_NEAR_CLIP 0.2 intro1_index = 0 intro1_audio_is_playing = 0 intro1_cutscene_flag = 0 intro1_chat_switch = INTRO1_CHAT4 GOSUB intro1_chat_switch IF NOT IS_CAR_DEAD bmx_bikes[2] IF NOT IS_CHAR_DEAD bmx_gang[2] FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION bmx_gang[2] FALSE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION bmx_bikes[2] FALSE IF NOT IS_CHAR_IN_CAR bmx_gang[2] bmx_bikes[2] WARP_CHAR_INTO_CAR bmx_gang[2] bmx_bikes[2] ENDIF CLEAR_AREA 1644.4703 -1072.6582 22.9062 4.0 TRUE IF flag_the_drive_by_car_is_dead = 0 SET_CAR_COORDINATES bmx_bikes[2] 1644.4703 -1072.6582 22.9062 SET_CAR_HEADING bmx_bikes[2] 170.0 TASK_CAR_DRIVE_TO_COORD bmx_gang[2] bmx_bikes[2] 1540.2981 -1159.1885 22.9062 20.0 MODE_NORMAL BMX DRIVINGMODE_AVOIDCARS SET_CAR_FORWARD_SPEED bmx_bikes[2] 10.0 IF NOT IS_CAR_DEAD drive_by_car CLEAR_AREA 1637.0801 -1061.0013 22.9114 4.0 TRUE SET_CAR_COORDINATES drive_by_car 1637.0801 -1061.0013 22.9114 SET_CAR_HEADING drive_by_car 182.2789 SET_CAR_FORWARD_SPEED drive_by_car 5.0 IF NOT IS_CHAR_DEAD drive_by_char2 CLEAR_CHAR_TASKS drive_by_char2 //TASK_DRIVE_BY drive_by_char2 -1 bmx_bikes[2] 0.0 0.0 0.0 1000.0 DRIVEBY_AI_SIDE false 50 ENDIF IF NOT IS_CHAR_DEAD drive_by_char1 CLEAR_CHAR_TASKS drive_by_char1 //TASK_DRIVE_BY drive_by_char1 -1 bmx_bikes[2] 0.0 0.0 0.0 100.0 DRIVEBY_FIXED_LHS FALSE 50 TASK_CAR_MISSION drive_by_char1 drive_by_car bmx_bikes[2] MISSION_ESCORT_LEFT 40.0 DRIVINGMODE_AVOIDCARS //Drive by bloke ENDIF ENDIF ELSE SET_CAR_COORDINATES bmx_bikes[2] 1638.1656 -1056.2979 22.9062 SET_CAR_HEADING bmx_bikes[2] 272.6299 ENDIF REMOVE_BLIP sweet_blip ENDIF ENDIF CLEAR_AREA 1638.7117 -1050.3188 22.8984 4.0 TRUE IF NOT IS_CHAR_DEAD bmx_gang[0] IF NOT IS_CAR_DEAD bmx_bikes[0] FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION bmx_gang[0] FALSE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION bmx_bikes[0] FALSE IF NOT IS_CHAR_IN_CAR bmx_gang[0] bmx_bikes[0] //SMOKE WARP_CHAR_INTO_CAR bmx_gang[0] bmx_bikes[0] ENDIF CLEAR_AREA 1640.6490 -1055.4727 22.9062 4.0 TRUE SET_CAR_COORDINATES bmx_bikes[0] 1640.6490 -1055.4727 22.9062 SET_CAR_HEADING bmx_bikes[0] 260.0 ENDIF ENDIF IF NOT IS_CHAR_DEAD bmx_gang[1] IF NOT IS_CAR_DEAD bmx_bikes[1] FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION bmx_gang[1] FALSE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION bmx_bikes[1] FALSE IF NOT IS_CHAR_IN_CAR bmx_gang[1] bmx_bikes[1] //RYDER WARP_CHAR_INTO_CAR bmx_gang[1] bmx_bikes[1] ENDIF CLEAR_AREA 1644.9131 -1050.5381 22.8984 4.0 TRUE SET_CAR_COORDINATES bmx_bikes[1] 1644.9131 -1050.5381 22.8984 SET_CAR_HEADING bmx_bikes[1] 270.0 ENDIF ENDIF SWITCH_WIDESCREEN ON WAIT 100 IF IS_CHAR_IN_ANY_CAR scplayer OR IS_CHAR_ON_ANY_BIKE scplayer STORE_CAR_CHAR_IS_IN scplayer players_ride_int1 SET_CAR_COORDINATES players_ride_int1 1638.7117 -1050.3188 22.8984 SET_CAR_HEADING players_ride_int1 252.8 ELSE SET_CHAR_COORDINATES scplayer 1638.7117 -1050.3188 22.8984 SET_CHAR_HEADING scplayer 252.8 ENDIF CLEAR_AREA 1636.0842 -1093.4589 23.7139 100.0 TRUE IF flag_the_drive_by_car_is_dead = 1 GOTO the_drive_by_car_is_dead ENDIF CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 1647.2081 -1085.2321 24.1633 1647.9692 -1098.4287 24.1724 4100 TRUE CAMERA_SET_VECTOR_TRACK 1646.3540 -1084.7119 24.1640 1647.5226 -1099.3234 24.1731 4100 TRUE DO_FADE 500 FADE_IN TIMERA = 0 WHILE TIMERA < 500 WAIT 0 ENDWHILE WHILE NOT intro1_index = 1 // Split Up! WAIT 0 GOSUB load_and_play_audio_intro1 ENDWHILE TIMERA = 0 WHILE TIMERA < 1000 WAIT 0 ENDWHILE the_drive_by_car_is_dead: IF flag_the_drive_by_car_is_dead = 1 intro1_index = 1 DO_FADE 500 FADE_IN ENDIF CAMERA_RESET_NEW_SCRIPTABLES SET_FIXED_CAMERA_POSITION 1646.4762 -1049.4296 23.0659 0.0 0.0 0.0 //Follow Ryder POINT_CAMERA_AT_POINT 1645.6925 -1049.9973 23.3176 JUMP_CUT WHILE NOT intro1_index = 2 // Keep up, motherfucker! WAIT 0 GOSUB load_and_play_audio_intro1 IF intro1_cutscene_flag = 0 IF intro1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD bmx_gang[1] TASK_PLAY_ANIM bmx_gang[1] BMX_COMEON MISC 4.0 FALSE FALSE FALSE FALSE -1 GET_SCRIPT_TASK_STATUS bmx_gang[1] TASK_PLAY_ANIM ReturnStatus ENDIF intro1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD bmx_gang[1] IF NOT IS_CAR_DEAD players_bmx IF IS_CHAR_IN_CAR scplayer players_bmx ADD_BLIP_FOR_CHAR bmx_gang[1] ryder_blip SET_BLIP_AS_FRIENDLY ryder_blip TRUE ENDIF ENDIF PERFORM_SEQUENCE_TASK bmx_gang[1] drive_to_hub2 //RYDER ENDIF IF NOT IS_CHAR_DEAD bmx_gang[0] IF NOT IS_CAR_DEAD bmx_bikes[0] PERFORM_SEQUENCE_TASK bmx_gang[0] drive_to_hub_smoke //SMOKE CLEAR_SEQUENCE_TASK drive_to_hub_smoke ENDIF ENDIF IF flag_the_drive_by_car_is_dead = 0 IF NOT IS_CHAR_DEAD bmx_gang[2] //FREEZE SWEET IF NOT IS_CAR_DEAD bmx_bikes[2] CLEAR_CHAR_TASKS_IMMEDIATELY bmx_gang[2] SET_CAR_COORDINATES bmx_bikes[2] 1540.2981 -1159.1885 -50.3438 WAIT 0 IF NOT IS_CHAR_DEAD bmx_gang[2] //FREEZE SWEET IF NOT IS_CAR_DEAD bmx_bikes[2] IF NOT IS_CHAR_IN_ANY_CAR bmx_gang[2] WARP_CHAR_INTO_CAR bmx_gang[2] bmx_bikes[2] ENDIF FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION bmx_gang[2] TRUE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION bmx_bikes[2] TRUE ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD drive_by_char1 //FREEZE DRIVE_BY_CAR IF NOT IS_CHAR_DEAD drive_by_char2 IF NOT IS_CAR_DEAD drive_by_car CLEAR_CHAR_TASKS_IMMEDIATELY drive_by_char1 CLEAR_CHAR_TASKS_IMMEDIATELY drive_by_char2 SET_CAR_COORDINATES drive_by_car 1540.2981 -1171.1885 -50.3438 WAIT 0 IF NOT IS_CHAR_DEAD drive_by_char1 //FREEZE DRIVE_BY_CAR IF NOT IS_CHAR_DEAD drive_by_char2 IF NOT IS_CAR_DEAD drive_by_car FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION drive_by_char1 TRUE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION drive_by_char2 TRUE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION drive_by_car TRUE ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ELSE IF NOT IS_CHAR_DEAD bmx_gang[2] IF NOT IS_CAR_DEAD bmx_bikes[2] PERFORM_SEQUENCE_TASK bmx_gang[2] drive_to_hub2 //SWEET ENDIF ENDIF ENDIF CLEAR_SEQUENCE_TASK drive_to_hub2 WAIT 1000 SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT split_up_cut = 1 IF NOT IS_CAR_DEAD players_bmx IF IS_CHAR_IN_CAR scplayer players_bmx PRINT_NOW (INTRO2K) 1000 1 // Follow Ryder! ELSE PRINT_NOW (INTRO2E) 10000 1 // Get on the bike ENDIF ENDIF // ************************************************SPLIT UP CUT SCENE END*************************************************************************************************************** switch_traffic_back_on = 2 IF IS_CAR_DEAD players_bmx PRINT_NOW (INT2_F4) 10000 1 //Your BMX is trashed! GOTO mission_intro1_failed ENDIF IF IS_CHAR_DEAD bmx_gang[1] GOTO mission_intro1_failed ENDIF IF NOT IS_CAR_DEAD players_bmx IF IS_CHAR_IN_CAR scplayer players_bmx blob_flag = 1 ELSE blob_flag = 0 ENDIF ENDIF out_of_intro1_locate = 0 car_shits_it = 0 //GOTO skip_to_this_bit_of_script intro1_index = 0 intro1_audio_is_playing = 0 intro1_cutscene_flag = 0 intro1_chat_switch = INTRO1_CHAT7 get_in_counter_intro1 = 0 GOSUB intro1_chat_switch TIMERA = 0 set_up_smokes_audio = 0 CHECKPOINT_SAVE 1 WHILE NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2493.82 -1669.91 12.22 4.0 3.5 4.0 TRUE //RACE BACK TO THE HOOD OR NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bmx_gang[1] 60.0 60.0 20.0 FALSE WAIT 0 GOSUB bmx_gang_death_check //Check Ryder and Smoke are alive GOSUB freeze_bmxs // we want to prevent the bmx gang from flipping around in the alleyway with stairs // the correct heading should be 180 degrees LVAR_INT intro_bmx_ind intro_bmx_gang_car intro_bmx_ind = 0 WHILE intro_bmx_ind < 3 IF NOT IS_CHAR_DEAD bmx_gang[intro_bmx_ind] GET_CAR_CHAR_IS_USING bmx_gang[intro_bmx_ind] intro_bmx_gang_car IF NOT IS_CAR_DEAD intro_bmx_gang_car IF LOCATE_CAR_2D intro_bmx_gang_car 1785.77 -1208.70 15.0 15.0 FALSE //AND IS_CAR_IN_AIR_PROPER intro_bmx_gang_car // just force the heading, it looks okay for this little patch SET_CAR_HEADING intro_bmx_gang_car 180.0 ENDIF ENDIF ENDIF intro_bmx_ind++ ENDWHILE IF failed_mission = 1 GOTO mission_intro1_failed ENDIF IF car_shits_it = 0 IF out_of_intro1_locate = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1981.2915 -1510.2186 2.3844 40.0 40.0 15.0 FALSE IF NOT IS_CHAR_DEAD drive_by_char1 //FREEZE DRIVE_BY_CAR IF NOT IS_CHAR_DEAD drive_by_char2 IF NOT IS_CAR_DEAD drive_by_car FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION drive_by_char1 FALSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION drive_by_char2 FALSE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION drive_by_car FALSE SET_CAR_COORDINATES drive_by_car 1809.0 -1519.0 7.0 SET_CAR_HEADING drive_by_car 270.0 IF NOT IS_CHAR_IN_ANY_CAR drive_by_char1 WARP_CHAR_INTO_CAR drive_by_char1 drive_by_car ENDIF IF NOT IS_CHAR_IN_ANY_CAR drive_by_char2 WARP_CHAR_INTO_CAR_AS_PASSENGER drive_by_char2 drive_by_car 0 ENDIF CLEAR_CHAR_TASKS drive_by_char2 IF IS_CHAR_IN_ANY_CAR drive_by_char2 TASK_DRIVE_BY drive_by_char2 scplayer -1 0.0 0.0 0.0 5000.0 DRIVEBY_AI_SIDE TRUE 40 ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer players_ride_int1 IF NOT IS_CHAR_DEAD drive_by_char1 IF NOT IS_CAR_DEAD drive_by_car CLEAR_CHAR_TASKS drive_by_char1 IF IS_CHAR_IN_ANY_CAR drive_by_char1 TASK_CAR_MISSION drive_by_char1 drive_by_car players_ride_int1 MISSION_ESCORT_LEFT 30.0 DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF ELSE GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 -4.0 0.0 int1_driveX int1_driveY int1_driveZ IF NOT IS_CHAR_DEAD drive_by_char1 GET_SCRIPT_TASK_STATUS drive_by_char1 TASK_CAR_DRIVE_TO_COORD ReturnStatus IF ReturnStatus = FINISHED_TASK IF NOT IS_CHAR_DEAD drive_by_char1 IF NOT IS_CAR_DEAD drive_by_car IF IS_CHAR_IN_ANY_CAR drive_by_char1 TASK_CAR_DRIVE_TO_COORD drive_by_char1 drive_by_car int1_driveX int1_driveY int1_driveZ 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF out_of_intro1_locate = 1 ENDIF ENDIF ENDIF ELSE IF NOT IS_CAR_DEAD drive_by_car IF NOT IS_CHAR_DEAD drive_by_char1 IF NOT IS_CHAR_DEAD drive_by_char2 // going over the bridge flips the car, dont. IF LOCATE_CAR_2D drive_by_car 1965.90 -1475.38 50.0 50.0 FALSE LVAR_FLOAT ballas_car_pitch2 GET_CAR_PITCH drive_by_car ballas_car_pitch2 // pitching up, force down IF ballas_car_pitch2 > 30.0 AND ballas_car_pitch2 < 180.0 ADD_TO_CAR_ROTATION_VELOCITY drive_by_car -0.4 0.0 0.0 ELSE // pitching down, force up IF ballas_car_pitch2 < 330.0 AND ballas_car_pitch2 > 180.0 ADD_TO_CAR_ROTATION_VELOCITY drive_by_car 0.4 0.0 0.0 ENDIF ENDIF ENDIF GET_CHAR_COORDINATES scplayer player_bmxX player_bmxY player_bmxZ IF NOT LOCATE_CAR_2D drive_by_car player_bmxX player_bmxY 50.0 50.0 FALSE AND NOT IS_CAR_ON_SCREEN drive_by_car LVAR_FLOAT ballas_car_coord_dist CLEAR_CHAR_TASKS drive_by_char1 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 -40.0 0.0 int1X int1Y int1Z GET_CLOSEST_CAR_NODE int1X int1Y int1Z ClosestX ClosestY ClosestZ GET_DISTANCE_BETWEEN_COORDS_3D ClosestX ClosestY ClosestZ 1970.75 -1484.63 6.35 ballas_car_coord_dist IF ballas_car_coord_dist < 20.0 // do not teleport onto one of those stupid car nodes that run down into the highway............. SET_CAR_COORDINATES drive_by_car 1970.75 -1498.38 2.51 ELSE SET_CAR_COORDINATES drive_by_car ClosestX ClosestY ClosestZ ENDIF SET_CAR_COORDINATES drive_by_car ClosestX ClosestY ClosestZ TURN_CAR_TO_FACE_COORD drive_by_car player_bmxX player_bmxY SET_CAR_FORWARD_SPEED drive_by_car 10.0 ELSE IF IS_CHAR_IN_ANY_CAR scplayer GET_SCRIPT_TASK_STATUS drive_by_char1 TASK_CAR_MISSION ReturnStatus IF ReturnStatus = FINISHED_TASK IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer players_ride_int1 IF IS_CHAR_IN_ANY_CAR drive_by_char1 TASK_CAR_MISSION drive_by_char1 drive_by_car players_ride_int1 MISSION_ESCORT_LEFT 30.0 DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD drive_by_char2 IF IS_CHAR_IN_ANY_CAR drive_by_char2 GET_SCRIPT_TASK_STATUS drive_by_char2 TASK_DRIVE_BY ReturnStatus IF ReturnStatus = FINISHED_TASK TASK_DRIVE_BY drive_by_char2 scplayer -1 0.0 0.0 0.0 5000.0 DRIVEBY_AI_SIDE TRUE 40 ENDIF ENDIF ENDIF ELSE GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 -4.0 0.0 int1_driveX int1_driveY int1_driveZ GET_SCRIPT_TASK_STATUS drive_by_char1 TASK_CAR_DRIVE_TO_COORD ReturnStatus IF ReturnStatus = FINISHED_TASK IF NOT IS_CHAR_DEAD drive_by_char1 IF NOT IS_CAR_DEAD drive_by_car IF IS_CHAR_IN_ANY_CAR drive_by_char1 TASK_CAR_DRIVE_TO_COORD drive_by_char1 drive_by_car int1_driveX int1_driveY int1_driveZ 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD drive_by_char2 IF IS_CHAR_IN_ANY_CAR drive_by_char2 GET_SCRIPT_TASK_STATUS drive_by_char2 TASK_DRIVE_BY ReturnStatus IF ReturnStatus = FINISHED_TASK TASK_DRIVE_BY drive_by_char2 scplayer -1 0.0 0.0 0.0 5000.0 DRIVEBY_AI_SIDE TRUE 40 ENDIF ENDIF ENDIF ENDIF ENDIF ELSE IF killed_the_baller_cunts = 0 IF NOT IS_CHAR_DEAD drive_by_char1 CLEAR_CHAR_TASKS drive_by_char1 TASK_LEAVE_ANY_CAR drive_by_char1 TASK_KILL_CHAR_ON_FOOT drive_by_char1 scplayer killed_the_baller_cunts = 1 ENDIF ENDIF ENDIF ELSE IF killed_the_baller_cunts = 0 IF NOT IS_CHAR_DEAD drive_by_char2 CLEAR_CHAR_TASKS drive_by_char2 TASK_LEAVE_ANY_CAR drive_by_char2 TASK_KILL_CHAR_ON_FOOT drive_by_char2 scplayer killed_the_baller_cunts = 1 ENDIF ENDIF ENDIF ENDIF ENDIF // *********************************GANG CAR PISSES OFF AT GROVE STREET******************************************* IF NOT IS_CHAR_DEAD drive_by_char1 IF NOT IS_CAR_DEAD drive_by_car IF LOCATE_CHAR_ANY_MEANS_3D drive_by_char1 2341.85 -1658.92 12.39 30.0 30.0 30.0 FALSE CLEAR_CHAR_TASKS drive_by_char1 TASK_CAR_DRIVE_WANDER drive_by_char1 drive_by_car 20.0 DRIVINGMODE_AVOIDCARS car_shits_it = 1 ENDIF ENDIF ENDIF ENDIF IF set_up_smokes_audio = 0 IF TIMERA > 1500 IF NOT IS_CHAR_DEAD bmx_gang[1] IF NOT IS_CAR_DEAD bmx_bikes[1] IF IS_CHAR_IN_CAR scplayer players_bmx IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bmx_gang[1] 20.0 20.0 10.0 FALSE GOSUB load_and_play_audio_intro1 play_catch_up_audio = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF intro1_index > 1 set_up_smokes_audio = 1 ENDIF ELSE IF set_up_smokes_audio = 1 intro1_index = 0 intro1_audio_is_playing = 0 intro1_cutscene_flag = 0 intro1_chat_switch = INTRO1_CHAT6 get_in_counter_intro1 = 0 GOSUB intro1_chat_switch TIMERA = 0 set_up_smokes_audio = 2 ENDIF IF set_up_smokes_audio = 2 IF TIMERA > 1500 IF NOT IS_CHAR_DEAD bmx_gang[0] IF NOT IS_CAR_DEAD bmx_bikes[0] IF IS_CHAR_IN_CAR scplayer players_bmx IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bmx_gang[0] 20.0 20.0 10.0 FALSE GOSUB load_and_play_audio_intro1 play_catch_up_audio_smoke = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF intro1_index > 2 set_up_smokes_audio = 3 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD bmx_gang[0] PRINT_NOW (INT2_F1) 10000 1 //~r~Smoke is dead! GOTO mission_intro1_failed ENDIF IF IS_CHAR_DEAD bmx_gang[1] PRINT_NOW (INT2_F3) 10000 1 //~r~Ryder is dead! GOTO mission_intro1_failed ENDIF IF flag_the_drive_by_car_is_dead = 1 IF IS_CHAR_DEAD bmx_gang[2] PRINT_NOW (INT2_F2) 10000 1 //~r~Sweet is dead! GOTO mission_intro1_failed ENDIF ENDIF ENDWHILE SET_PLAYER_CONTROL player1 OFF // *******************************Mission Passed CUT SCENE******************************************************** flag_the_drive_by_car_is_dead = 0 IF NOT IS_CAR_DEAD players_bmx IF IS_CHAR_IN_CAR scplayer players_bmx TASK_PLAY_ANIM scplayer BMX_CELEBRATE MISC 4.0 FALSE FALSE FALSE FALSE -1 ENDIF ENDIF WAIT 1000 //skip_to_this_bit_of_script2: //TEST!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! DO_FADE 1500 FADE_OUT //End cutscene WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_WANTED_LEVEL player1 REQUEST_CAR_RECORDING 205 REQUEST_CAR_RECORDING 206 REQUEST_ANIMATION MISC REQUEST_ANIMATION GANGS LOAD_ALL_MODELS_NOW WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 205 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 206 OR NOT HAS_ANIMATION_LOADED MISC OR NOT HAS_ANIMATION_LOADED GANGS WAIT 0 ENDWHILE SWITCH_WIDESCREEN ON SET_NEAR_CLIP 0.2 intro1_index = 0 intro1_audio_is_playing = 0 intro1_cutscene_flag = 0 intro1_chat_switch = INTRO1_CHAT3 GOSUB intro1_chat_switch IF NOT IS_CAR_DEAD players_bmx IF NOT IS_CHAR_IN_CAR scplayer players_bmx IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2487.3093 -1668.3717 12.3438 SET_CHAR_HEADING scplayer 80.0 //SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE flag_the_drive_by_car_is_dead = 1 ELSE SET_CHAR_COORDINATES scplayer 2487.3093 -1668.3717 12.3438 SET_CHAR_HEADING scplayer 80.0 //SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE flag_the_drive_by_car_is_dead = 1 ENDIF ELSE SET_CAR_COORDINATES players_bmx 2487.3093 -1668.3717 12.3438 SET_CAR_HEADING players_bmx 80.0 ENDIF ENDIF CLEAR_AREA 2487.3093 -1668.3717 12.3438 50.0 TRUE IF NOT IS_CHAR_DEAD bmx_gang[0] //SMOKE IF NOT IS_CAR_DEAD bmx_bikes[0] CLEAR_CHAR_TASKS_IMMEDIATELY bmx_gang[0] FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION bmx_gang[0] FALSE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION bmx_bikes[0] FALSE IF NOT IS_CHAR_IN_ANY_CAR bmx_gang[0] WARP_CHAR_INTO_CAR bmx_gang[0] bmx_bikes[0] ENDIF SET_CAR_COORDINATES bmx_bikes[0] 2487.1721 -1666.3010 12.3438 SET_CAR_HEADING bmx_bikes[0] 124.2698 ENDIF ENDIF IF NOT IS_CHAR_DEAD bmx_gang[1] //RYDER IF NOT IS_CAR_DEAD bmx_bikes[1] CLEAR_CHAR_TASKS_IMMEDIATELY bmx_gang[1] FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION bmx_gang[1] FALSE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION bmx_bikes[1] FALSE IF NOT IS_CHAR_IN_ANY_CAR bmx_gang[1] WARP_CHAR_INTO_CAR bmx_gang[1] bmx_bikes[1] ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD bmx_gang[2] //SWEET IF NOT IS_CAR_DEAD bmx_bikes[2] CLEAR_CHAR_TASKS_IMMEDIATELY bmx_gang[2] FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION bmx_gang[2] FALSE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION bmx_bikes[2] FALSE IF NOT IS_CHAR_IN_ANY_CAR bmx_gang[2] WARP_CHAR_INTO_CAR bmx_gang[2] bmx_bikes[2] ENDIF SET_CAR_COORDINATES bmx_bikes[2] 2371.5002 -1654.8945 12.3826 ENDIF ENDIF DELETE_CHAR drive_by_char1 DELETE_CHAR drive_by_char2 DELETE_CAR drive_by_car SET_FIXED_CAMERA_POSITION 2409.0374 -1672.3240 18.3556 0.0 0.0 0.0 //Sweet Riding BMX POINT_CAMERA_AT_POINT 2409.9541 -1671.9441 18.2334 JUMP_CUT LOAD_SCENE 2480.6890 -1670.0065 13.0061 SET_FIXED_CAMERA_POSITION 2479.8269 -1670.5059 12.9206 0.0 0.0 0.0 //Sweet Riding BMX POINT_CAMERA_AT_POINT 2480.6890 -1670.0065 13.0061 JUMP_CUT WAIT 1000 DO_FADE 1000 FADE_IN IF NOT IS_CHAR_DEAD bmx_gang[1] IF NOT IS_CAR_DEAD bmx_bikes[1] START_PLAYBACK_RECORDED_CAR bmx_bikes[1] 206 SET_PLAYBACK_SPEED bmx_bikes[1] 1.0 ENDIF ENDIF intro1_cutscene_flag = 0 WHILE NOT intro1_index = 1 //I got with them motherfuckers though showed them niggaz who's gangsta. Ryder, nigga WAIT 0 GOSUB load_and_play_audio_intro1 IF intro1_cutscene_flag = 0 IF intro1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD bmx_gang[1] CLEAR_LOOK_AT bmx_gang[1] TASK_LOOK_AT_CHAR bmx_gang[1] scplayer 30000 START_CHAR_FACIAL_TALK bmx_gang[1] 20000 CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer bmx_gang[1] 30000 IF NOT IS_CHAR_DEAD bmx_gang[0] TASK_PLAY_ANIM bmx_gang[0] bmx_idleloop_02 MISC 4.0 TRUE FALSE FALSE FALSE -1 //TEST ENDIF IF flag_the_drive_by_car_is_dead = 0 TASK_PLAY_ANIM scplayer bmx_idleloop_01 MISC 4.0 TRUE FALSE FALSE FALSE -1 //TEST ENDIF IF NOT IS_CHAR_DEAD bmx_gang[2] IF NOT IS_CAR_DEAD bmx_bikes[2] START_PLAYBACK_RECORDED_CAR bmx_bikes[2] 205 SET_PLAYBACK_SPEED bmx_bikes[2] 0.8 ENDIF ENDIF ENDIF intro1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE TIMERB = 0 WHILE TIMERB < 200 WAIT 0 ENDWHILE //SKIP_CUTSCENE_START intro1_cutscene_flag = 0 WHILE NOT intro1_index = 2 //When you leaving, Carl? WAIT 0 GOSUB load_and_play_audio_intro1 IF intro1_cutscene_flag = 0 IF intro1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD bmx_gang[2] CLEAR_LOOK_AT bmx_gang[2] TASK_LOOK_AT_CHAR bmx_gang[2] scplayer 30000 START_CHAR_FACIAL_TALK bmx_gang[2] 20000 CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer bmx_gang[2] 30000 TASK_PLAY_ANIM bmx_gang[2] bmx_idleloop_01 MISC 4.0 TRUE FALSE FALSE FALSE -1 //TEST IF flag_the_drive_by_car_is_dead = 0 TASK_PLAY_ANIM scplayer bmx_idleloop_01 MISC 4.0 TRUE FALSE FALSE FALSE -1 //TEST ENDIF IF NOT IS_CHAR_DEAD bmx_gang[0] TASK_PLAY_ANIM bmx_gang[0] bmx_idleloop_02 MISC 4.0 TRUE FALSE FALSE FALSE -1 //TEST ENDIF ENDIF intro1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD bmx_gang[2] STOP_CHAR_FACIAL_TALK bmx_gang[2] ENDIF SET_FIXED_CAMERA_POSITION 2488.3235 -1669.9261 13.3261 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 2487.4849 -1669.3848 13.2679 JUMP_CUT intro1_cutscene_flag = 0 WHILE NOT intro1_index = 3 //I ain’t sure. Thought I might stay. WAIT 0 GOSUB load_and_play_audio_intro1 IF intro1_cutscene_flag = 0 IF intro1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD bmx_gang[0] CLEAR_LOOK_AT bmx_gang[0] TASK_LOOK_AT_CHAR bmx_gang[0] scplayer 15000 IF NOT IS_CHAR_DEAD bmx_gang[2] CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer bmx_gang[2] 30000 ENDIF //CLEAR_CHAR_TASKS scplayer START_CHAR_FACIAL_TALK scplayer 20000 IF flag_the_drive_by_car_is_dead = 0 TASK_PLAY_ANIM scplayer bmx_talkright_loop MISC 4.0 TRUE FALSE FALSE FALSE -1 ELSE //TASK_PLAY_ANIM scplayer IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE 6000 TASK_PLAY_ANIM scplayer prtial_gngtlkC GANGS 4.0 TRUE FALSE FALSE FALSE -1 ENDIF ENDIF intro1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE STOP_CHAR_FACIAL_TALK scplayer intro1_cutscene_flag = 0 WHILE NOT intro1_index = 4 //Things are fucked up WAIT 0 GOSUB load_and_play_audio_intro1 IF intro1_cutscene_flag = 0 IF intro1_audio_is_playing = 2 intro1_cutscene_flag = 1 START_CHAR_FACIAL_TALK scplayer 20000 ENDIF ENDIF ENDWHILE SET_FIXED_CAMERA_POSITION 2482.8044 -1666.7849 13.7850 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 2483.7778 -1666.7742 13.5566 JUMP_CUT CLEAR_CHAR_TASKS scplayer IF flag_the_drive_by_car_is_dead = 0 TASK_PLAY_ANIM scplayer bmx_idleloop_01 MISC 4.0 TRUE FALSE FALSE FALSE -1 //TEST ENDIF STOP_CHAR_FACIAL_TALK scplayer intro1_cutscene_flag = 0 WHILE NOT intro1_index = 5 //Last thing we need is your help. WAIT 0 GOSUB load_and_play_audio_intro1 IF intro1_cutscene_flag = 0 IF intro1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD bmx_gang[2] START_CHAR_FACIAL_TALK bmx_gang[2] 20000 IF NOT IS_CHAR_DEAD bmx_gang[0] CLEAR_LOOK_AT bmx_gang[0] TASK_LOOK_AT_CHAR bmx_gang[0] bmx_gang[2] 15000 ENDIF ENDIF intro1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD bmx_gang[2] STOP_CHAR_FACIAL_TALK bmx_gang[2] ENDIF intro1_cutscene_flag = 0 WHILE NOT intro1_index = 6 //I won’t let you down, I swear it. WAIT 0 GOSUB load_and_play_audio_intro1 IF intro1_cutscene_flag = 0 IF intro1_audio_is_playing = 2 intro1_cutscene_flag = 1 START_CHAR_FACIAL_TALK scplayer 20000 //CLEAR_CHAR_TASKS scplayer IF flag_the_drive_by_car_is_dead = 0 TASK_PLAY_ANIM scplayer bmx_talkright_loop MISC 4.0 TRUE FALSE FALSE FALSE -1 ELSE TASK_PLAY_ANIM scplayer IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE 6000 ENDIF ENDIF ENDIF ENDWHILE STOP_CHAR_FACIAL_TALK scplayer IF flag_the_drive_by_car_is_dead = 0 TASK_PLAY_ANIM scplayer bmx_idleloop_01 MISC 4.0 TRUE FALSE FALSE FALSE -1 //TEST ELSE CLEAR_CHAR_TASKS scplayer ENDIF SET_FIXED_CAMERA_POSITION 2482.9111 -1662.5752 14.0425 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 2483.3662 -1663.4563 13.9140 JUMP_CUT intro1_cutscene_flag = 0 WHILE NOT intro1_index = 7 //We gonna call up some freaks. Chill the hell out. You want some? WAIT 0 GOSUB load_and_play_audio_intro1 IF intro1_cutscene_flag = 0 IF intro1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD bmx_gang[2] START_CHAR_FACIAL_TALK bmx_gang[2] 20000 IF NOT IS_CHAR_DEAD bmx_gang[0] //CLEAR_CHAR_TASKS scplayer CLEAR_LOOK_AT bmx_gang[0] TASK_LOOK_AT_CHAR bmx_gang[0] bmx_gang[2] 15000 ENDIF ENDIF intro1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD bmx_gang[2] STOP_CHAR_FACIAL_TALK bmx_gang[2] ENDIF intro1_cutscene_flag = 0 WHILE NOT intro1_index = 8 //I gotta lot going on. I’m tired. I’ll see you all later. WAIT 0 GOSUB load_and_play_audio_intro1 IF intro1_cutscene_flag = 0 IF intro1_audio_is_playing = 2 intro1_cutscene_flag = 1 CLEAR_CHAR_TASKS scplayer STOP_CHAR_FACIAL_TALK scplayer START_CHAR_FACIAL_TALK scplayer 20000 IF flag_the_drive_by_car_is_dead = 0 TASK_PLAY_ANIM scplayer bmx_talkright_loop MISC 4.0 TRUE FALSE FALSE FALSE -1 ELSE TASK_PLAY_ANIM scplayer IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE 6000 ENDIF ENDIF ENDIF ENDWHILE STOP_CHAR_FACIAL_TALK scplayer IF flag_the_drive_by_car_is_dead = 0 TASK_PLAY_ANIM scplayer bmx_idleloop_01 MISC 4.0 TRUE FALSE FALSE FALSE -1 ELSE CLEAR_CHAR_TASKS scplayer ENDIF SET_FIXED_CAMERA_POSITION 2490.0000 -1667.5375 13.7938 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 2489.0439 -1667.4966 13.5038 JUMP_CUT intro1_cutscene_flag = 0 WHILE NOT intro1_index = 9 //You gotta loose some of that Liberty City anxiety, my brother. WAIT 0 GOSUB load_and_play_audio_intro1 IF intro1_cutscene_flag = 0 IF intro1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD bmx_gang[0] CLEAR_LOOK_AT bmx_gang[0] TASK_LOOK_AT_CHAR bmx_gang[0] scplayer 15000 CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer bmx_gang[0] 15000 //CLEAR_CHAR_TASKS bmx_gang[0] START_CHAR_FACIAL_TALK bmx_gang[0] 20000 TASK_PLAY_ANIM bmx_gang[0] bmx_talkleft_loop MISC 4.0 TRUE FALSE FALSE FALSE -1 ENDIF intro1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD bmx_gang[0] TASK_PLAY_ANIM bmx_gang[0] bmx_idleloop_02 MISC 4.0 TRUE FALSE FALSE FALSE -1 //TEST ENDIF IF NOT IS_CHAR_DEAD bmx_gang[0] STOP_CHAR_FACIAL_TALK bmx_gang[0] ENDIF TIMERB = 0 WHILE TIMERB < 1500 WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION 2474.3059 -1668.4775 13.4599 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 2475.3018 -1668.4584 13.5477 JUMP_CUT IF NOT IS_CAR_DEAD bmx_bikes[0] SET_CAR_HEADING bmx_bikes[0] 0.0 ENDIF intro1_cutscene_flag = 0 WHILE NOT intro1_index = 10 //And get yourself some colours, dude. WAIT 0 GOSUB load_and_play_audio_intro1 IF intro1_cutscene_flag = 0 IF intro1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD bmx_gang[1] CLEAR_LOOK_AT bmx_gang[1] TASK_LOOK_AT_CHAR bmx_gang[1] scplayer 15000 CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer bmx_gang[1] 15000 //CLEAR_CHAR_TASKS bmx_gang[1] START_CHAR_FACIAL_TALK bmx_gang[1] 20000 //TASK_PLAY_ANIM bmx_gang[1] bmx_talkright_loop MISC 4.0 TRUE FALSE FALSE FALSE -1 ENDIF intro1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD bmx_gang[1] STOP_CHAR_FACIAL_TALK bmx_gang[1] ENDIF TIMERB = 0 intro1_cutscene_flag = 0 WHILE NOT intro1_index = 11 //RYDER: And a haircut, it's an embarrassment to be seen with you! WAIT 0 GOSUB load_and_play_audio_intro1 IF intro1_cutscene_flag = 0 IF intro1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD bmx_gang[1] CLEAR_LOOK_AT bmx_gang[1] TASK_LOOK_AT_CHAR bmx_gang[1] scplayer 12500 //RYDER CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer bmx_gang[1] 12500 START_CHAR_FACIAL_TALK bmx_gang[1] 20000 intro1_cutscene_flag = 1 ENDIF ENDIF ENDIF IF TIMERB > 3000 IF NOT IS_CHAR_DEAD bmx_gang[0] IF NOT IS_CAR_DEAD bmx_bikes[0] CLEAR_CHAR_TASKS bmx_gang[0] TASK_CAR_DRIVE_TO_COORD bmx_gang[0] bmx_bikes[0] 2501.2441 -1657.7692 12.3949 4.0 MODE_ACCURATE BMX DRIVINGMODE_AVOIDCARS ENDIF ENDIF IF NOT IS_CHAR_DEAD bmx_gang[2] IF NOT IS_CAR_DEAD bmx_bikes[2] //SWEET CLEAR_CHAR_TASKS bmx_gang[2] TASK_CAR_DRIVE_TO_COORD bmx_gang[2] bmx_bikes[2] 2497.1692 -1680.4458 12.3614 6.0 MODE_ACCURATE BMX DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD bmx_gang[1] STOP_CHAR_FACIAL_TALK bmx_gang[1] ENDIF IF NOT IS_CHAR_DEAD bmx_gang[1] IF NOT IS_CAR_DEAD bmx_bikes[1] IF IS_CHAR_IN_ANY_CAR bmx_gang[1] //CLEAR_CHAR_TASKS bmx_gang[1] CLEAR_LOOK_AT bmx_gang[1] TASK_CAR_DRIVE_TO_COORD bmx_gang[1] bmx_bikes[1] 2466.27 -1690.28 12.51 2.0 MODE_ACCURATE BMX DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF TIMERB = 0 WHILE TIMERB < 3000 WAIT 0 ENDWHILE //SKIP_CUTSCENE_END CAMERA_RESET_NEW_SCRIPTABLES CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_ENTRY_EXIT CARLS TRUE SKIP_CUTSCENE_START //SWITCH_WIDESCREEN OFF CLEAR_PRINTS SET_FIXED_CAMERA_POSITION 2499.3057 -1678.9210 13.0313 0.0 0.0 0.0 // Save the game blah dee blah... POINT_CAMERA_AT_POINT 2499.0439 -1679.8518 13.2865 JUMP_CUT DELETE_CAR bmx_bikes[0] DELETE_CAR bmx_bikes[1] DELETE_CAR bmx_bikes[2] DELETE_CHAR bmx_gang[0] DELETE_CHAR bmx_gang[1] DELETE_CHAR bmx_gang[2] PRINT_HELP SAVE_G TIMERB = 0 WHILE TIMERB < 6000 WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION 2504.2800 -1682.8573 15.1427 0.0 0.0 0.0 // Save the game blah dee blah... POINT_CAMERA_AT_POINT 2504.3059 -1683.8514 15.0385 JUMP_CUT PRINT_HELP SAVE_G2 TIMERB = 0 WHILE TIMERB < 6000 WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION 2494.8633 -1683.0514 13.0207 0.0 0.0 0.0 // Walk into the marker enter CJ's house. POINT_CAMERA_AT_POINT 2494.9395 -1684.0370 13.1717 JUMP_CUT PRINT_HELP SAVE_G3 //SET_PLAYER_CONTROL player1 ON // This turns the widgets on too early! TIMERB = 0 WHILE TIMERB < 6000 WAIT 0 ENDWHILE SKIP_CUTSCENE_END CLEAR_CHAR_TASKS scplayer SET_CHAR_HEADING scplayer 82.97 SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT GOTO mission_intro1_passed // **************************************** Mission intro1 failed ************************* mission_intro1_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // **************************************** mission intro1 passed ************************** mission_intro1_passed: flag_intro_mission_counter ++ REGISTER_MISSION_PASSED ( INTRO_1 ) //Used in the stats PRINT_WITH_NUMBER_BIG ( M_PASSR ) 3 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 3 TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME INT REMOVE_BLIP save_house_blip[0] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT save_pickupX[0] save_pickupY[0] save_pickupZ[0] RADAR_SPRITE_SAVEHOUSE save_house_blip[0] CHANGE_BLIP_DISPLAY save_house_blip[0] BLIP_ONLY CLEAR_WANTED_LEVEL player1 //ADD_SCORE player1 100 PLAY_MISSION_PASSED_TUNE 1 PLAYER_MADE_PROGRESS 1 REMOVE_BLIP intro_contact_blip SWITCH_ENTRY_EXIT CARLS TRUE WRITE_LOG "UNLOCK_ACHIEVEMENT GETTING_STARTED" RETURN // ********************************** mission cleanup ************************************** mission_cleanup_intro1: flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start //Used to reset the mobile phone timer so it doesn't ring immediately after the mission MARK_MODEL_AS_NO_LONGER_NEEDED PEREN MARK_MODEL_AS_NO_LONGER_NEEDED BMX MARK_MODEL_AS_NO_LONGER_NEEDED ballas1 MARK_MODEL_AS_NO_LONGER_NEEDED micro_uzi MARK_MODEL_AS_NO_LONGER_NEEDED VOODOO DONT_SUPPRESS_CAR_MODEL VOODOO MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_CHAR_AS_NO_LONGER_NEEDED drive_by_char1 MARK_CHAR_AS_NO_LONGER_NEEDED drive_by_char2 MARK_CHAR_AS_NO_LONGER_NEEDED bmx_gang[0] MARK_CHAR_AS_NO_LONGER_NEEDED bmx_gang[1] MARK_CHAR_AS_NO_LONGER_NEEDED bmx_gang[2] MARK_CAR_AS_NO_LONGER_NEEDED drive_by_car MARK_CAR_AS_NO_LONGER_NEEDED smokes_car1 MARK_CAR_AS_NO_LONGER_NEEDED bmx_bikes[0] MARK_CAR_AS_NO_LONGER_NEEDED bmx_bikes[1] MARK_CAR_AS_NO_LONGER_NEEDED bmx_bikes[2] REMOVE_CAR_RECORDING 201 REMOVE_CAR_RECORDING 205 REMOVE_CAR_RECORDING 206 REMOVE_ANIMATION MISC REMOVE_ANIMATION GANGS SWITCH_PED_ROADS_ON 1782.8021 -1203.4969 0.0 1788.2726 -1236.1504 20.0 IF NOT IS_CAR_DEAD drive_by_car STOP_PLAYBACK_RECORDED_CAR drive_by_car ELSE STOP_PLAYBACK_RECORDED_CAR drive_by_car ENDIF ENABLE_AMBIENT_CRIME TRUE DELETE_CAR bmx_bikes[0] DELETE_CAR bmx_bikes[1] DELETE_CAR bmx_bikes[2] REMOVE_CHAR_ELEGANTLY bmx_gang[0] REMOVE_CHAR_ELEGANTLY bmx_gang[1] REMOVE_CHAR_ELEGANTLY bmx_gang[2] SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 10 UNLOAD_SPECIAL_CHARACTER 3 //REMOVE_BLIP intro_blip1 //REMOVE_BLIP big_smoke_blip REMOVE_BLIP sweet_blip REMOVE_BLIP ryder_blip REMOVE_BLIP intro_blip2 MISSION_HAS_FINISHED RETURN bmx_gang_death_check: IF NOT IS_CAR_DEAD players_bmx IF IS_CHAR_IN_CAR scplayer players_bmx IF switch_traffic_back_on = 1 //OR switch_traffic_back_on = 0 IF NOT IS_CHAR_DEAD bmx_gang[2] IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bmx_gang[2] 60.0 60.0 20.0 FALSE PRINT_NOW (INTRO2G) 6000 1 // ~s~You're too far away. Stay with ~b~Sweet~s~. //REMOVE_BLIP intro_blip2 IF play_catch_up_audio = 1 play_catch_up_audio = 0 ENDIF blob_flag = 0 ELSE IF play_catch_up_audio = 0 IF intro1_chat_switch = INTRO1_CHAT5 //SWEET IF intro1_index > 5 IF NOT IS_CHAR_DEAD bmx_gang[2] IF LOCATE_CHAR_ANY_MEANS_CHAR_2D bmx_gang[2] scplayer 20.0 20.0 FALSE play_catch_up_audio = 1 GOSUB get_back_in_bike_group ENDIF ENDIF ENDIF ENDIF ENDIF CLEAR_THIS_PRINT INTRO2G // ~s~You're too far away. Stay with ~b~Sweet~s~. blob_flag = 1 ENDIF ENDIF ENDIF IF switch_traffic_back_on = 2 IF NOT IS_CHAR_DEAD bmx_gang[1] IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bmx_gang[1] 60.0 60.0 20.0 FALSE PRINT_NOW (INTRO2J) 6000 1 // too far away, Keep up with Ryder! //REMOVE_BLIP intro_blip2 IF play_catch_up_audio = 1 play_catch_up_audio = 0 ENDIF blob_flag = 0 ELSE //IF TIMERA > 500 IF play_catch_up_audio = 0 //IF intro1_chat_switch = INTRO1_CHAT7 //RYDER IF intro1_index > 1 IF NOT IS_CHAR_DEAD bmx_gang[1] IF LOCATE_CHAR_ANY_MEANS_CHAR_2D bmx_gang[1] scplayer 20.0 20.0 FALSE play_catch_up_audio = 1 GOSUB get_back_in_bike_group ENDIF ENDIF ENDIF //ENDIF ENDIF //ENDIF CLEAR_THIS_PRINT INTRO2J blob_flag = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD bmx_gang[0] //SMOKE IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bmx_gang[0] 60.0 60.0 20.0 FALSE IF play_catch_up_audio_smoke = 1 play_catch_up_audio_smoke = 0 ENDIF ELSE //IF TIMERA > 1000 IF play_catch_up_audio_smoke = 0 IF intro1_index > 2 IF NOT IS_CHAR_DEAD bmx_gang[0] IF LOCATE_CHAR_ANY_MEANS_CHAR_2D bmx_gang[0] scplayer 20.0 20.0 FALSE play_catch_up_audio_smoke = 1 GOSUB get_back_in_bike_group_smoke ENDIF ENDIF ENDIF ENDIF CLEAR_THIS_PRINT INTRO2J //ENDIF ENDIF ENDIF ENDIF IF intro_blip2_flag_on_bike = 0 REMOVE_BLIP intro_blip2 blob_flag = 1 IF switch_traffic_back_on = 0 IF NOT IS_CHAR_DEAD bmx_gang[2] REMOVE_BLIP sweet_blip ADD_BLIP_FOR_CHAR bmx_gang[2] sweet_blip SET_BLIP_AS_FRIENDLY sweet_blip TRUE ENDIF SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 switch_traffic_back_on = 1 ENDIF IF switch_traffic_back_on = 1 IF NOT IS_CHAR_DEAD bmx_gang[2] REMOVE_BLIP sweet_blip ADD_BLIP_FOR_CHAR bmx_gang[2] sweet_blip SET_BLIP_AS_FRIENDLY sweet_blip TRUE ENDIF ENDIF IF switch_traffic_back_on = 2 IF NOT IS_CHAR_DEAD bmx_gang[1] REMOVE_BLIP ryder_blip ADD_BLIP_FOR_CHAR bmx_gang[1] ryder_blip SET_BLIP_AS_FRIENDLY ryder_blip TRUE ENDIF ENDIF intro_blip2_flag_on_bike = 1 ENDIF ELSE IF intro_blip2_flag_on_bike = 1 REMOVE_BLIP intro_blip2 REMOVE_BLIP ryder_blip REMOVE_BLIP sweet_blip ADD_BLIP_FOR_CAR players_bmx intro_blip2 SET_BLIP_AS_FRIENDLY intro_blip2 TRUE IF NOT switch_traffic_back_on = 0 PRINT_NOW (INTRO2E) 10000 1 // Get on the bike ENDIF blob_flag = 0 intro_blip2_flag_on_bike = 0 ENDIF ENDIF ELSE PRINT_NOW (INT2_F4) 10000 1 //Your BMX is trashed! failed_mission = 1 ENDIF IF IS_CHAR_DEAD bmx_gang[0] PRINT_NOW (INT2_F1) 10000 1 //~r~Smoke is dead! failed_mission = 1 ELSE IF bmx_rider_on_bike1 = 0 IF NOT IS_CHAR_DEAD bmx_gang[0] IF NOT IS_CAR_DEAD bmx_bikes[0] IF IS_CHAR_IN_CAR bmx_gang[0] bmx_bikes[0] CLEAR_CHAR_TASKS bmx_gang[0] PERFORM_SEQUENCE_TASK bmx_gang[0] drive_to_hub1 SET_CAR_STRAIGHT_LINE_DISTANCE bmx_bikes[0] 10 bmx_rider_on_bike1 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_CHAR_DEAD bmx_gang[1] PRINT_NOW (INT2_F3) 10000 1 //~r~Ryder is dead! failed_mission = 1 ELSE IF bmx_rider_on_bike3 = 0 IF NOT IS_CHAR_DEAD bmx_gang[1] IF NOT IS_CAR_DEAD bmx_bikes[1] IF IS_CHAR_IN_CAR bmx_gang[1] bmx_bikes[1] CLEAR_CHAR_TASKS bmx_gang[1] PERFORM_SEQUENCE_TASK bmx_gang[1] drive_to_hub1 SET_CAR_STRAIGHT_LINE_DISTANCE bmx_bikes[1] 10 bmx_rider_on_bike3 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT switch_traffic_back_on = 2 IF IS_CHAR_DEAD bmx_gang[2] PRINT_NOW (INT2_F2) 10000 1 //~r~Sweet is dead! failed_mission = 1 ELSE IF bmx_rider_on_bike2 = 0 IF NOT IS_CHAR_DEAD bmx_gang[2] IF NOT IS_CAR_DEAD bmx_bikes[2] IF IS_CHAR_IN_CAR bmx_gang[2] bmx_bikes[2] CLEAR_CHAR_TASKS bmx_gang[2] PERFORM_SEQUENCE_TASK bmx_gang[2] drive_to_hub1 SET_CAR_STRAIGHT_LINE_DISTANCE bmx_bikes[2] 10 bmx_rider_on_bike2 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF bmx_rider_on_bike1 = 1 AND bmx_rider_on_bike2 = 1 AND bmx_rider_on_bike3 = 1 CLEAR_SEQUENCE_TASK drive_to_hub1 bmx_rider_on_bike1 = 2 ENDIF RETURN freeze_bmxs: IF TIMERB > 1000 IF NOT IS_CHAR_DEAD bmx_gang[index_intro] //Freeze chars if they are too far away IF NOT IS_CAR_DEAD bmx_bikes[index_intro] IF IS_CHAR_IN_CAR bmx_gang[index_intro] bmx_bikes[index_intro] IF LOCATE_CHAR_ANY_MEANS_CHAR_2D bmx_gang[index_intro] scplayer 130.0 130.0 FALSE IF freeze_the_bmx[index_intro] = 0 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION bmx_gang[index_intro] FALSE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION bmx_bikes[index_intro] FALSE //SET_CAR_CRUISE_SPEED bmx_bikes[index_intro] 20.0 freeze_the_bmx[index_intro] = 1 ENDIF ELSE IF freeze_the_bmx[index_intro] = 1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION bmx_gang[index_intro] TRUE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION bmx_bikes[index_intro] TRUE //SET_CAR_CRUISE_SPEED bmx_bikes[index_intro] 0.0 freeze_the_bmx[index_intro] = 0 ENDIF ENDIF ENDIF ELSE CLEAR_CHAR_TASKS bmx_gang[index_intro] TASK_GO_TO_COORD_ANY_MEANS bmx_gang[index_intro] 2493.82 -1669.91 12.8 PEDMOVE_SPRINT -1 ENDIF ENDIF index_intro ++ IF index_intro >= num_bikes_in_chase index_intro = 0 ENDIF TIMERB = 0 ENDIF RETURN load_and_play_audio_intro1: IF intro1_audio_is_playing = 0 OR intro1_audio_is_playing = 1 IF intro1_index <= intro1_cell_index_end IF TIMERA > 200 GOSUB play_intro1_audio ENDIF ENDIF ENDIF IF intro1_audio_is_playing = 2 IF HAS_MISSION_AUDIO_FINISHED 1 intro1_audio_is_playing = 0 intro1_index ++ intro1_cutscene_flag = 0 CLEAR_PRINTS TIMERA = 0 ENDIF ENDIF RETURN play_intro1_audio: IF intro1_audio_is_playing = 0 LOAD_MISSION_AUDIO 1 intro1_audio_chat[intro1_index] intro1_audio_is_playing = 1 ENDIF IF intro1_audio_is_playing = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW ( $intro1_chat[intro1_index] ) 4000 1 PLAY_MISSION_AUDIO 1 intro1_audio_is_playing = 2 ENDIF ENDIF RETURN get_back_in_bike_group: CLEAR_MISSION_AUDIO 2 IF switch_traffic_back_on = 1 IF play_catch_up_audio = 1 //SWEET IF get_in_counter_intro1 = 0 LOAD_MISSION_AUDIO 2 SOUND_INT1_EA //Move it, CJ, move it! ENDIF IF get_in_counter_intro1 = 1 LOAD_MISSION_AUDIO 2 SOUND_INT1_EB //Keep up, CJ! ENDIF IF get_in_counter_intro1 = 2 LOAD_MISSION_AUDIO 2 SOUND_INT1_EC //C’mon, CJ, pedal like a motherfucker! ENDIF IF get_in_counter_intro1 = 3 LOAD_MISSION_AUDIO 2 SOUND_INT1_DB //Move it, CJ, not far to the Grove! ENDIF ENDIF ENDIF IF switch_traffic_back_on = 2 IF play_catch_up_audio = 1 //RYDER IF get_in_counter_intro1 = 0 LOAD_MISSION_AUDIO 2 SOUND_INT1_EH //Move it, CJ - you’re embarrassing us, nigga! ENDIF IF get_in_counter_intro1 = 1 LOAD_MISSION_AUDIO 2 SOUND_INT1_EG //What’s the matter, fool? You tired? ENDIF IF get_in_counter_intro1 = 2 LOAD_MISSION_AUDIO 2 SOUND_INT1_EI //keep up, motherfucker! ENDIF IF get_in_counter_intro1 = 3 LOAD_MISSION_AUDIO 2 SOUND_INT1_FG //Typical, CJ! Leaving the homies behind, huh? ENDIF ENDIF ENDIF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer CLEAR_MISSION_AUDIO 1 GOSUB load_any_audio PLAY_MISSION_AUDIO 2 IF switch_traffic_back_on = 1 IF play_catch_up_audio = 1 //SWEET IF get_in_counter_intro1 = 0 PRINT_NOW ( INT1_EA ) 3000 1 //Move it, CJ, move it! ENDIF IF get_in_counter_intro1 = 1 PRINT_NOW ( INT1_EB ) 3000 1 //Keep up, CJ! ENDIF IF get_in_counter_intro1 = 2 PRINT_NOW ( INT1_EC ) 3000 1 //C’mon, CJ, pedal like a motherfucker! ENDIF IF get_in_counter_intro1 = 3 PRINT_NOW ( INT1_BD ) 3000 1 //Move it, CJ, not far to the Grove! ENDIF ENDIF ENDIF IF switch_traffic_back_on = 2 IF play_catch_up_audio = 1 //RYDER IF get_in_counter_intro1 = 0 PRINT_NOW ( INT1_EH ) 3000 1 //Move it, CJ - you’re embarrassing us, nigga! ENDIF IF get_in_counter_intro1 = 1 PRINT_NOW ( INT1_EG ) 3000 1 //What’s the matter, fool? You tired? ENDIF IF get_in_counter_intro1 = 2 PRINT_NOW ( INT1_EI ) 3000 1 //I said keep up, motherfucker! ENDIF IF get_in_counter_intro1 = 3 PRINT_NOW ( INT1_FG ) 3000 1 //Typical, CJ! Leaving the homies behind, huh? ENDIF ENDIF ENDIF GOSUB finish_any_audio get_in_counter_intro1 ++ IF get_in_counter_intro1 > 3 get_in_counter_intro1 = 0 ENDIF TIMERA = 0 RETURN get_back_in_bike_group_smoke: CLEAR_MISSION_AUDIO 2 IF switch_traffic_back_on = 2 IF play_catch_up_audio_smoke = 1 //SMOKE IF get_in_counter_intro1_2 = 0 LOAD_MISSION_AUDIO 2 SOUND_INT1_EJ //What’s matter, CJ? Can’t keep up with the fat man? ENDIF IF get_in_counter_intro1_2 = 1 LOAD_MISSION_AUDIO 2 SOUND_INT1_ED //C’mon man, you gotta keep up! ENDIF IF get_in_counter_intro1_2 = 2 LOAD_MISSION_AUDIO 2 SOUND_INT1_EE //Keep up, CJ! ENDIF IF get_in_counter_intro1_2 = 3 LOAD_MISSION_AUDIO 2 SOUND_INT1_EF //Don’t lose us, CJ! ENDIF ENDIF ENDIF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer CLEAR_MISSION_AUDIO 1 GOSUB load_any_audio PLAY_MISSION_AUDIO 2 IF switch_traffic_back_on = 2 IF play_catch_up_audio_smoke = 1 //SMOKE IF get_in_counter_intro1_2 = 0 PRINT_NOW ( INT1_EJ ) 3000 1 //What’s matter, CJ? Can’t keep up with the fat man? ENDIF IF get_in_counter_intro1_2 = 1 PRINT_NOW ( INT1_ED ) 3000 1 //C’mon man, you gotta keep up! ENDIF IF get_in_counter_intro1_2 = 2 PRINT_NOW ( INT1_EE ) 3000 1 //Keep up, CJ! ENDIF IF get_in_counter_intro1_2 = 3 PRINT_NOW ( INT1_EF ) 3000 1 //Don’t lose us, CJ! ENDIF ENDIF ENDIF GOSUB finish_any_audio get_in_counter_intro1_2 ++ IF get_in_counter_intro1_2 > 3 get_in_counter_intro1_2 = 0 ENDIF TIMERA = 0 RETURN load_any_audio: WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CAR_DEAD players_bmx ENDIF IF IS_CHAR_DEAD bmx_gang[0] PRINT_NOW (INT2_F1) 10000 1 //~r~Smoke is dead! failed_mission = 1 RETURN ENDIF IF IS_CHAR_DEAD bmx_gang[1] PRINT_NOW (INT2_F3) 10000 1 //~r~Ryder is dead! failed_mission = 1 RETURN ENDIF IF NOT switch_traffic_back_on = 2 IF IS_CHAR_DEAD bmx_gang[2] PRINT_NOW (INT2_F2) 10000 1 //~r~Sweet is dead! failed_mission = 1 RETURN ENDIF ENDIF IF switch_traffic_back_on = 1 IF NOT IS_CHAR_DEAD bmx_gang[2] IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1644.7734 -1051.3339 22.8984 10.0 12.0 20.0 FALSE AND LOCATE_CHAR_ANY_MEANS_3D bmx_gang[2] 1644.7734 -1051.3339 22.8984 10.0 12.0 20.0 FALSE RETURN ENDIF ENDIF ENDIF IF switch_traffic_back_on = 2 IF NOT IS_CHAR_DEAD bmx_gang[1] IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2493.82 -1669.91 12.22 4.0 3.5 4.0 TRUE //RACE BACK TO THE HOOD AND LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bmx_gang[1] 60.0 60.0 20.0 FALSE RETURN ENDIF ENDIF ENDIF ENDWHILE RETURN finish_any_audio: WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CAR_DEAD players_bmx ENDIF IF IS_CHAR_DEAD bmx_gang[0] PRINT_NOW (INT2_F1) 10000 1 //~r~Smoke is dead! failed_mission = 1 RETURN ENDIF IF IS_CHAR_DEAD bmx_gang[1] PRINT_NOW (INT2_F3) 10000 1 //~r~Ryder is dead! failed_mission = 1 RETURN ENDIF IF NOT switch_traffic_back_on = 2 IF IS_CHAR_DEAD bmx_gang[2] PRINT_NOW (INT2_F2) 10000 1 //~r~Sweet is dead! failed_mission = 1 RETURN ENDIF ENDIF IF switch_traffic_back_on = 1 IF NOT IS_CHAR_DEAD bmx_gang[2] IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1644.7734 -1051.3339 22.8984 10.0 12.0 20.0 FALSE AND LOCATE_CHAR_ANY_MEANS_3D bmx_gang[2] 1644.7734 -1051.3339 22.8984 10.0 12.0 20.0 FALSE RETURN ENDIF ENDIF ENDIF IF switch_traffic_back_on = 2 IF NOT IS_CHAR_DEAD bmx_gang[1] IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2493.82 -1669.91 12.22 4.0 3.5 4.0 TRUE //RACE BACK TO THE HOOD AND LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bmx_gang[1] 60.0 60.0 20.0 FALSE RETURN ENDIF ENDIF ENDIF ENDWHILE RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* INTRO 2 ******************************************* // ********************************* MENACE II SOCIETY ************************************* // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME intro2 // Mission start stuff GOSUB mission_start_intro2 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_intro2_failed ENDIF GOSUB mission_cleanup_intro2 MISSION_END { // Variables for mission LVAR_INT rob_shop_blip hood_shop_keeper barber_text_finished ryders_car_blip ryders_car_blip_removed cigar_glow_object intro2_chat_switch skipped_pizza_cutscene LVAR_INT intro2_sequence_4 shopkeeper_decision food_help player_sequence_1 ryders_ciggy ryders_blip menace_marker intro2_index intro2_cell_index_end LVAR_INT intro2_sequence_2 shite_haircut smoke_effect shop_keepers_shoots_outside exhale_smoke_effect intro2_audio_is_playing stop_playing_ryder_audio LVAR_INT new_visible_area print_help_intro2 print_into2_text played_ryder_freaking_out vomit_menace flag_vomit_playing intro2_cutscene_flag LVAR_INT ReturnStatus shopkeeper_goes_radge ryders_decision ryders_car_moved player_chats_a_bit intro2_audio_chat[17] stats_help got_in_ryders_truck_first LVAR_INT get_in_counter_intro2 ryder_barbershop_waypoint ryder_pizza_waypoint LVAR_FLOAT intr2_vomitX intr2_vomitY intr2_vomitZ return_animation_food_name VAR_TEXT_LABEL $intro2_chat[17] // **************************************** Mission Start ********************************** intro2_chat_switch: SWITCH intro2_chat_switch CONST_INT INTRO2_CHAT1 0 CONST_INT INTRO2_CHAT2 1 CONST_INT INTRO2_CHAT3 2 CONST_INT INTRO2_CHAT4 3 CONST_INT INTRO2_CHAT5 4 CASE INTRO2_CHAT1 $intro2_chat[0] = &INT2_CA //Hey, Old Reece still run the barber shop? $intro2_chat[1] = &INT2_CB //Like a raggedy-assed motherfucker! $intro2_chat[2] = &INT2_CC //He popped his membrane years ago - $intro2_chat[3] = &INT2_CD //no way I’d let THAT old fool near MY head! $intro2_chat[4] = &INT2_CE //I think I’ll get myself a cut. $intro2_chat[5] = &INT2_CF //Whatever. You got five minutes. $intro2_chat[6] = &INT2_CG //I’m wired like a kung fu master! $intro2_chat[7] = &INT2_BA //So when you running off again? $intro2_chat[8] = &INT2_BB //I’m not, I’m thinkin’ of staying. $intro2_chat[9] = &INT2_BC //Why? $intro2_chat[10] = &INT2_BD //My homies are here. $intro2_chat[11] = &INT2_BE //We always were, fool! $intro2_chat[12] = &INT2_BF //Yeah, but, now I’m back, I know what I’ve been missing. $intro2_chat[13] = &INT2_BG //Don’t expect me to kiss you or nothing. $intro2_chat[14] = &INT2_BH //You still a buster to me. $intro2_chat[15] = &INT2_BJ //Wow, thanks, homie. $intro2_chat[16] = &INT2_BK //Don’t mention it. intro2_audio_chat[0] = SOUND_INT2_CA //Hey, Old Reece still run the barber shop? intro2_audio_chat[1] = SOUND_INT2_CB //Like a raggedy-assed motherfucker! intro2_audio_chat[2] = SOUND_INT2_CC //He popped his membrane years ago - intro2_audio_chat[3] = SOUND_INT2_CD //no way I’d let THAT old fool near MY head! intro2_audio_chat[4] = SOUND_INT2_CE //I think I’ll get myself a cut. intro2_audio_chat[5] = SOUND_INT2_CF //Whatever. You got five minutes. intro2_audio_chat[6] = SOUND_INT2_CG //I’m wired like a kung fu master! intro2_audio_chat[7] = SOUND_INT2_BA //So when you running off again? intro2_audio_chat[8] = SOUND_INT2_BB //I’m not, I’m thinkin’ of staying. intro2_audio_chat[9] = SOUND_INT2_BC //Why? intro2_audio_chat[10] = SOUND_INT2_BD //My homies are here. intro2_audio_chat[11] = SOUND_INT2_BE //We always were, fool! intro2_audio_chat[12] = SOUND_INT2_BF //Yeah, but, now I’m back, I know what I’ve been missing. intro2_audio_chat[13] = SOUND_INT2_BG //Don’t expect me to kiss you or nothing. intro2_audio_chat[14] = SOUND_INT2_BH //You still a buster to me. intro2_audio_chat[15] = SOUND_INT2_BJ //Wow, thanks, homie. intro2_audio_chat[16] = SOUND_INT2_BK //Don’t mention it. intro2_cell_index_end = 16 BREAK CASE INTRO2_CHAT2 $intro2_chat[0] = &INT2_FA //Shit, looks ridiculous. $intro2_chat[1] = &INT2_FB //No respect for the neighborhood, all clean and shit. $intro2_chat[2] = &INT2_FC //You’re looking too skinny, CJ. $intro2_chat[3] = &INT2_FD //Go in and get some food – I’m going to finish this. intro2_audio_chat[0] = SOUND_INT2_FA //Shit, looks ridiculous. intro2_audio_chat[1] = SOUND_INT2_FB //No respect for the neighborhood, all clean and shit. intro2_audio_chat[2] = SOUND_INT2_FC //You’re looking too skinny, CJ. intro2_audio_chat[3] = SOUND_INT2_FD //Go in and get some food – I’m going to finish this. intro2_cell_index_end = 3 BREAK CASE INTRO2_CHAT3 $intro2_chat[0] = &INT2_GA //Give us the money! This is a raid! $intro2_chat[1] = &INT2_GB //Ryder! Not this again! $intro2_chat[2] = &INT2_GC //It ain’t me, fool! $intro2_chat[3] = &INT2_GD //No one else that small! I feel sorry for your dad! $intro2_chat[4] = &INT2_GE //Shit, man, you’re rumbled! Let’s get out of here! $intro2_chat[5] = &INT2_GF //Same old CJ, Buster! Buster! $intro2_chat[6] = &INT2_HB //Motherfucker! RUN! intro2_audio_chat[0] = SOUND_INT2_GA //Give us the money! This is a raid! intro2_audio_chat[1] = SOUND_INT2_GB //Ryder! Not this again! intro2_audio_chat[2] = SOUND_INT2_GC //It ain’t me, fool! intro2_audio_chat[3] = SOUND_INT2_GD //No one else that small! I feel sorry for your dad! intro2_audio_chat[4] = SOUND_INT2_GE //Shit, man, you’re rumbled! Let’s get out of here! intro2_audio_chat[5] = SOUND_INT2_GF //Same old CJ, Buster! Buster! intro2_audio_chat[6] = SOUND_INT2_HB //Motherfucker! RUN! intro2_cell_index_end = 7 BREAK CASE INTRO2_CHAT4 $intro2_chat[0] = &INT2_NB //You better drop by and see Sweet. $intro2_chat[1] = &INT2_NC //He’s been rapping on about that grafitti. $intro2_chat[2] = &INT2_ND //Later, dude. intro2_audio_chat[0] = SOUND_INT2_NB //You better drop by and see Sweet. intro2_audio_chat[1] = SOUND_INT2_NC //He’s been rapping on about that grafitti. intro2_audio_chat[2] = SOUND_INT2_ND //Later, dude. intro2_cell_index_end = 2 BREAK CASE INTRO2_CHAT5 $intro2_chat[0] = &INT2_JA //What you waiting for? $intro2_chat[1] = &INT2_JB //Take us back to the Grove, motherfucker! intro2_audio_chat[0] = SOUND_INT2_JA //What you waiting for? intro2_audio_chat[1] = SOUND_INT2_JB //Take us back to the Grove, motherfucker! intro2_cell_index_end = 1 BREAK //On the street – Player must get a car variations} //INT2_IA //CJ, we need some wheels! //INT2_IB //We need a ride, super fast! //Player gets shot variations– mission failed} //INT2_KA //CJ! Damned lead magnet! //INT2_KB //What you take a bullet for? //Player dies (other) variations – mission failed} //INT2_LA //CJ, quit bluffing and get up! //INT2_LB //Typical CJ! //INT2_LC //You ain’t long for these streets, CJ. //Ryder gets shot – mission failed } //INT2_MA //Oh shit, RYDER! //INT2_MB //This is NOT dope! //Get back to Grove – mission passed } //INT2_NA //We did good! Here’s your cut. ENDSWITCH RETURN mission_start_intro2: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 barber_text_finished = 0 ryders_car_blip_removed = 0 flag_changed_hair_intro2 = 0 print_help_intro2 = 0 print_into2_text = 0 flag_menace_buyfood = 0 food_help = 0 shopkeeper_goes_radge = 0 cj_vomits_for_menace = 0 ryders_car_moved = 0 played_ryder_freaking_out = 0 player_chats_a_bit = 0 menace_marker = 0 flag_vomit_playing = 0 stop_playing_ryder_audio = 0 stats_help = 0 got_in_ryders_truck_first = 0 get_in_counter_intro2 = 0 //intro2_failed_flag = 0 intr2_vomitX = 0.05 intr2_vomitY = 0.12 //1.000 intr2_vomitZ = 0.0 SET_ZONE_GANG_STRENGTH IWD1 GANG_FLAT 5 SET_ZONE_GANG_STRENGTH IWD2 GANG_FLAT 5 SET_ZONE_GANG_STRENGTH IWD3a GANG_FLAT 5 SET_ZONE_GANG_STRENGTH IWD3b GANG_FLAT 5 SET_ZONE_GANG_STRENGTH IWD4 GANG_FLAT 5 SET_ZONE_GANG_STRENGTH IWD5 GANG_FLAT 5 WAIT 0 LOAD_MISSION_TEXT INTRO2 // ****************************************START OF CUTSCENE******************************** // fools compiler GOTO fool_compiler_intro2 CREATE_CHAR PEDTYPE_MISSION1 shopkeeper_model_shops junkfudX junkfudY junkfudZ shop_keep_junkfud fool_compiler_intro2: SET_AREA_VISIBLE 2 LOAD_CUTSCENE INTRO2A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF SET_AREA_VISIBLE 0 // ****************************************END OF CUTSCENE********************************** REMOVE_BLIP spray_shop1 LOAD_SPECIAL_CHARACTER 1 ryder2 REQUEST_MODEL PICADOR // SADLER REQUEST_MODEL cigar REQUEST_MODEL cigar_glow LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED PICADOR OR NOT HAS_MODEL_LOADED cigar OR NOT HAS_MODEL_LOADED cigar_glow OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 WAIT 0 ENDWHILE 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 CLEAR_CHAR_TASKS scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SWITCH_CAR_GENERATOR gen_car6 0 CLEAR_AREA ryder_carX ryder_carY ryder_carZ 6.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR PICADOR &_SHERM__ CREATE_CAR PICADOR ryder_carX ryder_carY ryder_carZ ryder_car //SET_CAR_PROOFS ryder_car TRUE TRUE TRUE FALSE FALSE SET_CAN_BURST_CAR_TYRES ryder_car FALSE CHANGE_CAR_COLOUR ryder_car 84 84 SET_CAR_HEADING ryder_car 0.0 SET_CAR_CAN_BE_VISIBLY_DAMAGED ryder_car FALSE SET_RADIO_CHANNEL RS_MODERN_HIP_HOP CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 2475.29 -1687.85 12.51 ryder LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY ryders_decision SET_CHAR_DECISION_MAKER ryder ryders_decision SET_ANIM_GROUP_FOR_CHAR ryder gang1 SET_CHAR_HEADING scplayer 176.0 SET_CHAR_NEVER_TARGETTED ryder TRUE SET_CHAR_HEALTH ryder 500 SET_CHAR_MAX_HEALTH ryder 500 SET_CHAR_SUFFERS_CRITICAL_HITS ryder FALSE SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER ryder ryder_car 20000 0 SET_CHAR_CANT_BE_DRAGGED_OUT ryder TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED ryder TRUE SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR ryder FALSE ADD_BLIP_FOR_CAR ryder_car ryders_car_blip SET_BLIP_AS_FRIENDLY ryders_car_blip TRUE ADD_BLIP_FOR_COORD 2074.4 -1800.8 12.5 rob_shop_blip REMOVE_BLIP rob_shop_blip LOAD_MISSION_AUDIO 1 SOUND_INT2_AA //WAIT 100 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 2464.03 -1687.61 12.51 SET_CHAR_HEADING scplayer 252.27 SET_AREA_VISIBLE 0 LOAD_SCENE 2464.03 -1687.61 12.51 SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 1000 FADE_IN IF IS_CAR_DEAD ryder_car GOTO mission_intro2_failed ENDIF IF IS_CHAR_DEAD ryder GOTO mission_intro2_failed ENDIF WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CHAR_DEAD ryder PRINT_NOW ( INT2_12 ) 10000 1 //Ryder is dead! GOTO mission_intro2_failed ENDIF IF IS_CAR_DEAD ryder_car PRINT_NOW ( INT2_11 ) 10000 1 //You destroyed ryders car GOTO mission_intro2_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( INT2_AA ) 10000 1 // Show me how they drive on the East Coast, homie! WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CHAR_DEAD ryder PRINT_NOW ( INT2_12 ) 10000 1 //Ryder is dead! GOTO mission_intro2_failed ENDIF IF IS_CAR_DEAD ryder_car PRINT_NOW ( INT2_11 ) 10000 1 //You destroyed ryders car GOTO mission_intro2_failed ENDIF ENDWHILE blob_flag = 0 intro2_index = 0 intro2_audio_is_playing = 0 intro2_cutscene_flag = 0 intro2_chat_switch = INTRO2_CHAT1 GOSUB intro2_chat_switch CLEAR_THIS_PRINT INT2_1 PRINT_NOW ( INT2_6 ) 6000 1 // ~s~Get in ~b~Ryder's car~s~! IF IS_CHAR_DEAD ryder PRINT_NOW ( INT2_12 ) 10000 1 //Ryder is dead! GOTO mission_intro2_failed ENDIF IF IS_CAR_DEAD ryder_car PRINT_NOW ( INT2_11 ) 10000 1 //You destroyed ryders car GOTO mission_intro2_failed ENDIF flag_player_on_menace_mission = 1 WHILE NOT LOCATE_CAR_3D ryder_car 2077.84 -1792.59 12.38 4.0 4.0 4.0 blob_flag OR NOT IS_CHAR_SITTING_IN_CAR scplayer ryder_car OR NOT IS_CHAR_IN_CAR ryder ryder_car OR NOT IS_VEHICLE_ON_ALL_WHEELS ryder_car WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_intro2_passed ENDIF IF menace_marker = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2077.84 -1792.59 12.38 15.0 15.0 4.0 FALSE PRINT_HELP ( HELP44B ) // Drive your vehicle onto the red marker. menace_marker = 1 ENDIF ENDIF IF IS_CHAR_DEAD ryder //OR intro2_failed_flag = 1 PRINT_NOW ( INT2_12 ) 10000 1 //Ryder is dead! GOTO mission_intro2_failed ENDIF IF IS_CAR_DEAD ryder_car //OR intro2_failed_flag = 1 PRINT_NOW ( INT2_11 ) 10000 1 //You destroyed ryders car GOTO mission_intro2_failed ELSE IF IS_CHAR_IN_CAR scplayer ryder_car IF ryders_car_blip_removed = 0 REMOVE_BLIP ryders_car_blip REMOVE_BLIP rob_shop_blip ADD_BLIP_FOR_COORD 2077.84 -1792.59 12.56 rob_shop_blip blob_flag = 1 PRINT_NOW ( HOOD2_A ) 6000 1 // Go to the barbers. TIMERB = 0 ryders_car_blip_removed = 1 ENDIF ELSE IF ryders_car_blip_removed = 1 REMOVE_BLIP rob_shop_blip REMOVE_BLIP ryders_car_blip ADD_BLIP_FOR_CAR ryder_car ryders_car_blip SET_BLIP_AS_FRIENDLY ryders_car_blip TRUE blob_flag = 0 GOSUB get_back_in_the_car_intro2 PRINT_NOW ( INT2_6 ) 6000 1 // ~s~Get in ~b~Ryder's car~s~! SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer ryders_car_blip_removed = 0 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD ryder_car IF IS_CHAR_IN_CAR scplayer ryder_car IF TIMERB > 3000 GOSUB load_and_play_audio_intro2 ENDIF ENDIF ENDIF ENDIF IF IS_CHAR_DEAD ryder //OR intro2_failed_flag = 1 PRINT_NOW ( INT2_12 ) 10000 1 //Ryder is dead! GOTO mission_intro2_failed ENDIF IF IS_CAR_DEAD ryder_car //OR intro2_failed_flag = 1 PRINT_NOW ( INT2_11 ) 10000 1 //You destroyed ryders car GOTO mission_intro2_failed ENDIF ENDWHILE // BARBERS CUTSCENE START********************************************************************************************************************** SWITCH_WIDESCREEN ON //Barbers Cut Scene SET_PLAYER_CONTROL player1 OFF CLEAR_HELP SWITCH_ENTRY_EXIT barbers TRUE SET_FIXED_CAMERA_POSITION 2086.4243 -1783.5780 16.9391 0.0 0.0 0.0 // look at barbers cut POINT_CAMERA_AT_POINT 2085.6025 -1784.1426 16.8617 JUMP_CUT TIMERB = 0 WHILE TIMERB < 3000 WAIT 0 IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD ryder_car IF IS_CHAR_IN_CAR scplayer ryder_car GOSUB load_and_play_audio_intro2 ENDIF ENDIF ENDIF ENDWHILE SKIP_CUTSCENE_START SET_FIXED_CAMERA_POSITION 2075.4177 -1794.7478 14.3637 0.0 0.0 0.0 // look at barbers cut POINT_CAMERA_AT_POINT 2074.4404 -1794.5638 14.2591 JUMP_CUT PRINT_HELP ( INT2_8 )// ~s~Go into the Barbers and get a new haircut. //SWITCH_WIDESCREEN OFF //SET_PLAYER_CONTROL player1 ON // We don't want to see the widgets here...just wait to enable player controls a few more seconds. TIMERB = 0 WHILE TIMERB < 3000 WAIT 0 IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD ryder_car IF IS_CHAR_IN_CAR scplayer ryder_car GOSUB load_and_play_audio_intro2 ENDIF ENDIF ENDIF ENDWHILE SKIP_CUTSCENE_END SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT // BARBERS CUTSCENE END *********************************************************************************************************************** REMOVE_BLIP rob_shop_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT 413.6397 -19.9389 1000.8120 RADAR_SPRITE_NONE rob_shop_blip //BARBERS SHOP SET_BLIP_ENTRY_EXIT rob_shop_blip 2073.0417 -1794.5634 20.0 ADD_SPRITE_BLIP_FOR_COORD 2070.2703 -1791.0918 12.1484 RADAR_SPRITE_NONE ryder_barbershop_waypoint flag_changed_hair_intro2 = 0 WHILE flag_changed_hair_intro2 = 0 OR NOT LOCATE_CHAR_ON_FOOT_3D scplayer 2072.11 -1793.80 12.56 10.0 10.0 3.0 FALSE WAIT 0 IF IS_CAR_DEAD ryder_car PRINT_NOW ( INT2_11 ) 10000 1 //You destroyed ryders car GOTO mission_intro2_failed ENDIF IF IS_CHAR_DEAD ryder PRINT_NOW ( INT2_12 ) 10000 1 //Ryder is dead! GOTO mission_intro2_failed ENDIF IF stop_playing_ryder_audio = 0 IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD ryder_car IF IS_CHAR_IN_CAR scplayer ryder_car GOSUB load_and_play_audio_intro2 ELSE stop_playing_ryder_audio = 1 ENDIF ENDIF ENDIF ENDIF GET_AREA_VISIBLE new_visible_area IF new_visible_area = 2 IF print_help_intro2 = 0 //SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2103.0 -1807.0 10.0 IF LOCATE_CHAR_ON_FOOT_3D scplayer 411.68 -21.77 1000.79 10.0 10.0 3.0 FALSE //SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2169.72 -1673.14 20.0 CLEAR_PRINTS PRINT_NOW ( INT2_9 ) 5000 1 // Walk into the corona to get your haircut. //REMOVE_BLIP rob_shop_blip REQUEST_ANIMATION SHOP print_help_intro2 = 1 ENDIF ENDIF ELSE IF print_help_intro2 = 1 IF LOCATE_CHAR_ON_FOOT_3D scplayer 2072.11 -1793.80 12.56 10.0 10.0 3.0 FALSE //REMOVE_BLIP rob_shop_blip //ADD_BLIP_FOR_COORD 2072.11 -1793.80 12.56 rob_shop_blip //ADD_BLIP_FOR_COORD 414.3000 -19.9000 1000.8120 rob_shop_blip //SET_BLIP_ENTRY_EXIT rob_shop_blip 2073.0417 -1794.5634 20.0 PRINT_NOW ( INT2_8 ) 10000 1 // ~s~Go into the Barbers and get a new haircut. print_help_intro2 = 0 ENDIF ENDIF ENDIF IF flag_changed_hair_intro2 = 0 IF flag_attacked_barber = 1 PRINT_NOW ( INT2_14 ) 10000 1 //You've freaked out the shop keeper. GOTO mission_intro2_failed ENDIF ENDIF ENDWHILE /* REMOVE_PRICE_MODIFIER afro haircuts REMOVE_PRICE_MODIFIER afroblond haircuts REMOVE_PRICE_MODIFIER afrotash haircuts REMOVE_PRICE_MODIFIER afrobeard haircuts REMOVE_PRICE_MODIFIER flattop haircuts ADD_PRICE_MODIFIER pizzalow food 0 // changes the cost of the food in the shop ADD_PRICE_MODIFIER pizzamed food 0 // changes the cost of the food in the shop ADD_PRICE_MODIFIER pizzahigh food 0 // changes the cost of food in the shop */ DO_FADE 0 FADE_OUT CLEAR_PRINTS REMOVE_BLIP rob_shop_blip REMOVE_BLIP ryder_barbershop_waypoint SWITCH_ENTRY_EXIT FDpiza TRUE // OUTSIDE BARBERS CUTSCENE START ************************************************************************************************************* SWITCH_WIDESCREEN ON //Barbers Cut Scene SET_PLAYER_CONTROL player1 OFF CLEAR_AREA 2072.04 -1800.92 12.55 200.0 TRUE SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 SET_NEAR_CLIP 0.2 TASK_STAND_STILL scplayer 10 WHILE NOT HAS_ANIMATION_LOADED SHOP WAIT 0 DO_FADE 0 FADE_OUT ENDWHILE IF NOT IS_CAR_DEAD ryder_car IF NOT IS_CHAR_DEAD ryder //CREATE_FX_SYSTEM_ON_OBJECT cigarette_smoke ryders_ciggy 0.0 0.0 0.115 TRUE smoke_effect //PLAY_FX_SYSTEM smoke_effect WHILE IS_CAR_WAITING_FOR_WORLD_COLLISION ryder_car WAIT 0 IF IS_CAR_DEAD ryder_car PRINT_NOW ( INT2_11 ) 10000 1 //You destroyed ryders car GOTO mission_intro2_failed ENDIF DO_FADE 0 FADE_OUT ENDWHILE IF NOT IS_CHAR_DEAD ryder SET_CHAR_COORDINATES scplayer 2072.55 -1794.67 12.56 SET_CHAR_HEADING scplayer 240.55 CLEAR_CHAR_TASKS_IMMEDIATELY ryder IF IS_CHAR_IN_ANY_CAR ryder WARP_CHAR_FROM_CAR_TO_COORD ryder 2076.4924 -1796.4132 12.5545 ELSE SET_CHAR_COORDINATES ryder 2076.4924 -1796.4132 12.5545 ENDIF SET_CHAR_HEADING ryder 80.0 SET_CHAR_HEALTH ryder 500 CREATE_OBJECT cigar 2440.58 -1979.89 14.2 ryders_ciggy TASK_PICK_UP_OBJECT ryder ryders_ciggy 0.04 0.1 -0.02 PED_HANDL HOLD_ORIENTATE_BONE_FULL NULL NULL -1 TASK_PLAY_ANIM ryder SMOKE_RYD SHOP 4.0 TRUE FALSE FALSE FALSE -1 ENDIF IF NOT IS_CAR_DEAD ryder_car CLEAR_AREA 2078.0901 -1796.2098 12.3828 100.0 TRUE SET_CAR_COORDINATES ryder_car 2078.0901 -1796.2098 12.3828 SET_CAR_HEADING ryder_car 176.9536 ENDIF FIX_CAR_DOOR ryder_car FRONT_LEFT_DOOR FIX_CAR_DOOR ryder_car FRONT_RIGHT_DOOR CLOSE_ALL_CAR_DOORS ryder_car LOCK_CAR_DOORS ryder_car CARLOCK_LOCKOUT_PLAYER_ONLY ELSE PRINT_NOW ( INT2_12 ) 10000 1 //Ryder is dead! GOTO mission_intro2_failed ENDIF ELSE PRINT_NOW ( INT2_11 ) 10000 1 //You destroyed ryders car GOTO mission_intro2_failed ENDIF TIMERA = 0 WHILE NOT TIMERA > 400 WAIT 0 DO_FADE 0 FADE_OUT ENDWHILE CLEAR_PRINTS IF NOT IS_CHAR_DEAD ryder OPEN_SEQUENCE_TASK player_sequence_1 TASK_GO_STRAIGHT_TO_COORD -1 2075.53 -1796.32 12.55 PEDMOVE_WALK 10000 CLEAR_LOOK_AT -1 TASK_LOOK_AT_CHAR -1 ryder 4500 //TASK_ACHIEVE_HEADING -1 270.0 CLOSE_SEQUENCE_TASK player_sequence_1 ENDIF PERFORM_SEQUENCE_TASK scplayer player_sequence_1 CLEAR_SEQUENCE_TASK player_sequence_1 SET_FIXED_CAMERA_POSITION 2074.8662 -1800.8817 13.4518 0.0 0.0 0.0 // Walking out of shop POINT_CAMERA_AT_POINT 2075.0671 -1799.9030 13.4124 JUMP_CUT CLEAR_PRINTS DO_FADE 500 FADE_IN //IF NOT IS_CAR_DEAD ryder_car //FREEZE_CAR_POSITION ryder_car TRUE //ENDIF flag_vomit_playing = 0 intro2_index = 0 intro2_audio_is_playing = 0 intro2_cutscene_flag = 0 intro2_chat_switch = INTRO2_CHAT2 GOSUB intro2_chat_switch TIMERA = 0 WHILE NOT TIMERA > 1700 WAIT 0 GOSUB smoke_a_blunt ENDWHILE IF can_skip_smoking_cutscene = 1 SKIP_CUTSCENE_START ENDIF IF NOT IS_CHAR_DEAD ryder CLEAR_LOOK_AT ryder TASK_LOOK_AT_CHAR ryder scplayer 2000 ENDIF IF NOT IS_CHAR_DEAD ryder //CREATE_FX_SYSTEM_ON_CHAR_WITH_DIRECTION cigarette_smoke Ryder 0.183 -0.135 0.609 0.0 0.0 0.0 TRUE exhale_smoke_effect CREATE_FX_SYSTEM_ON_CHAR exhale Ryder intr2_vomitX intr2_vomitY intr2_vomitZ TRUE exhale_smoke_effect // ATTACH_FX_SYSTEM_TO_CHAR_BONE exhale_smoke_effect Ryder BONE_HEAD ENDIF IF NOT IS_CHAR_DEAD ryder STOP_CHAR_FACIAL_TALK ryder ENDIF IF IS_PLAYER_WEARING Player1 CLOTHES_TEX_HEAD tash OR IS_PLAYER_WEARING Player1 CLOTHES_TEX_HEAD goatee OR IS_PLAYER_WEARING Player1 CLOTHES_TEX_HEAD beard OR IS_PLAYER_WEARING Player1 CLOTHES_TEX_HEAD player_face OR IS_PLAYER_WEARING Player1 CLOTHES_TEX_HEAD highfade OR IS_PLAYER_WEARING Player1 CLOTHES_TEX_HEAD flattop LOAD_MISSION_AUDIO 1 SOUND_INT2_DA //SHIT! I told you he was insane. LOAD_MISSION_AUDIO 2 SOUND_INT2_DB //You look lousy intro2_cutscene_flag = 0 WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 GOSUB smoke_a_blunt IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 ENDIF ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( INT2_DA ) 10000 1 //SHIT! I told you he was insane. IF NOT IS_CHAR_DEAD ryder START_CHAR_FACIAL_TALK ryder 2000 ENDIF intro2_cutscene_flag = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 GOSUB smoke_a_blunt IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD ryder STOP_CHAR_FACIAL_TALK ryder ENDIF SET_FIXED_CAMERA_POSITION 2074.8267 -1797.4138 14.2330 0.0 0.0 0.0 // Close up of haircut POINT_CAMERA_AT_POINT 2075.4324 -1796.6637 13.9678 JUMP_CUT WAIT 1000 intro2_cutscene_flag = 0 WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 GOSUB smoke_a_blunt IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 ENDIF ENDIF ENDWHILE PLAY_MISSION_AUDIO 2 PRINT_NOW ( INT2_DB ) 10000 1 //You look lousy IF NOT IS_CHAR_DEAD ryder START_CHAR_FACIAL_TALK ryder 2000 ENDIF intro2_cutscene_flag = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 GOSUB smoke_a_blunt IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD ryder STOP_CHAR_FACIAL_TALK ryder ENDIF ELSE LOAD_MISSION_AUDIO 1 SOUND_INT2_EA //I take it back, Old Reece still got it. LOAD_MISSION_AUDIO 2 SOUND_INT2_EB //Word. intro2_cutscene_flag = 0 WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 GOSUB smoke_a_blunt IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 ENDIF ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( INT2_EA ) 10000 1 //I take it back, Old Reece still got it. IF NOT IS_CHAR_DEAD ryder START_CHAR_FACIAL_TALK ryder 2000 ENDIF intro2_cutscene_flag = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 GOSUB smoke_a_blunt IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD ryder STOP_CHAR_FACIAL_TALK ryder ENDIF SET_FIXED_CAMERA_POSITION 2075.1902 -1797.2825 14.4799 0.0 0.0 0.0 // Close up of haircut POINT_CAMERA_AT_POINT 2075.6377 -1796.4714 14.1030 JUMP_CUT WAIT 1000 /* intro2_cutscene_flag = 0 WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 GOSUB smoke_a_blunt IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 ENDIF ENDIF ENDWHILE PLAY_MISSION_AUDIO 2 PRINT_NOW ( INT2_EB ) 10000 1 //Word. IF NOT IS_CHAR_DEAD ryder START_CHAR_FACIAL_TALK ryder 3000 ENDIF intro2_cutscene_flag = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 GOSUB smoke_a_blunt IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD ryder STOP_CHAR_FACIAL_TALK ryder ENDIF */ ENDIF IF NOT IS_CHAR_DEAD ryder STOP_CHAR_FACIAL_TALK ryder ENDIF TIMERA = 0 WHILE NOT TIMERA > 1000 WAIT 0 GOSUB smoke_a_blunt ENDWHILE IF NOT IS_CHAR_DEAD ryder STOP_CHAR_FACIAL_TALK ryder ENDIF IF NOT IS_CHAR_DEAD ryder CLEAR_LOOK_AT ryder TASK_LOOK_AT_COORD ryder 2102.0 -1806.0 14.0 3000 //START_CHAR_FACIAL_TALK ryder 2000 ENDIF intro2_cutscene_flag = 0 WHILE NOT intro2_index = 1 //Shit looks ridiculous. WAIT 0 GOSUB load_and_play_audio_intro2 IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 intro2_cutscene_flag = 1 ENDIF ENDIF GOSUB smoke_a_blunt ENDWHILE //IF NOT IS_CHAR_DEAD ryder //STOP_CHAR_FACIAL_TALK ryder //ENDIF CLEAR_LOOK_AT scplayer TASK_LOOK_AT_COORD scplayer 2102.0 -1806.0 14.0 3000 //SET_FIXED_CAMERA_POSITION 2074.1880 -1796.6036 14.1401 0.0 0.0 0.0 // 7/11 //POINT_CAMERA_AT_POINT 2075.1687 -1796.7465 14.0082 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2074.2297 -1795.0304 14.4282 2074.9827 -1798.6713 14.4451 12000 TRUE CAMERA_SET_VECTOR_TRACK 2077.1672 -1795.7289 14.1884 2075.9734 -1798.7341 14.5649 12000 TRUE intro2_cutscene_flag = 0 WHILE NOT intro2_index = 2 //No respect for the neighbourhood, all clean and shit. WAIT 0 GOSUB load_and_play_audio_intro2 IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 IF NOT IS_CHAR_DEAD ryder //START_CHAR_FACIAL_TALK ryder 2000 ENDIF intro2_cutscene_flag = 1 ENDIF ENDIF GOSUB smoke_a_blunt ENDWHILE //IF NOT IS_CHAR_DEAD ryder //STOP_CHAR_FACIAL_TALK ryder //ENDIF TIMERB = 0 intro2_cutscene_flag = 0 WHILE NOT intro2_index = 3 //You're looking too skinny, CJ. WAIT 0 GOSUB load_and_play_audio_intro2 IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 IF NOT IS_CHAR_DEAD ryder //START_CHAR_FACIAL_TALK ryder 2000 ENDIF intro2_cutscene_flag = 1 ENDIF ENDIF GOSUB smoke_a_blunt ENDWHILE //IF NOT IS_CHAR_DEAD ryder //STOP_CHAR_FACIAL_TALK ryder //ENDIF intro2_cutscene_flag = 0 WHILE NOT intro2_index = 4 //Go in and get some food - I'm going to finish this. WAIT 0 GOSUB load_and_play_audio_intro2 IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 IF NOT IS_CHAR_DEAD ryder //START_CHAR_FACIAL_TALK ryder 2000 ENDIF intro2_cutscene_flag = 1 ENDIF ENDIF GOSUB smoke_a_blunt ENDWHILE WHILE NOT TIMERB > 18000 WAIT 0 IF food_help = 0 IF TIMERB > 7500 PRINT_HELP ( FUDHLP1 ) //If you don't eat you will loose weight and eventually energy. FLASH_HUD_OBJECT HUD_FLASH_HEALTH food_help = 1 ENDIF ENDIF IF food_help = 1 IF TIMERB > 13500 PRINT_HELP ( FUDHLP2 ) //If you eat you gain energy but eat too much and you'll become fat. FLASH_HUD_OBJECT -1 food_help = 2 ENDIF ENDIF ENDWHILE IF can_skip_smoking_cutscene = 1 SKIP_CUTSCENE_END CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 ENDIF CLEAR_HELP CAMERA_RESET_NEW_SCRIPTABLES PRINT_NOW ( HOOD2_B ) 10000 1 // Go to the Pizza shop SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON IF NOT IS_CAR_DEAD ryder_car SET_CAR_CAN_BE_VISIBLY_DAMAGED ryder_car TRUE ENDIF REMOVE_BLIP rob_shop_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT 372.90 -118.80 1000.57 RADAR_SPRITE_NONE rob_shop_blip //PIZZA SHOP SET_BLIP_ENTRY_EXIT rob_shop_blip 2103.3762 -1806.3110 20.0 ADD_SPRITE_BLIP_FOR_COORD 2107.6243 -1807.5155 13.2114 RADAR_SPRITE_NONE ryder_pizza_waypoint // OUTSIDE BARBERS CUTSCENE END *************************************************************************************************************** print_help_intro2 = 0 //ACTIVATE_INTERIORS FALSE flag_menace_buyfood = 1 SET_CAR_DENSITY_MULTIPLIER 0.5 SET_PED_DENSITY_MULTIPLIER 0.5 TIMERB = 0 blob_flag = 1 CHECKPOINT_SAVE 1 // 3MASTER - Ryder's car color gets forgotten CHANGE_CAR_COLOUR ryder_car 84 84 // 3MASTER - Ryder's cigar also forgotten IF NOT IS_CHAR_HOLDING_OBJECT ryder ryders_ciggy TASK_PICK_UP_OBJECT ryder ryders_ciggy 0.04 0.1 -0.02 PED_HANDL HOLD_ORIENTATE_BONE_FULL NULL NULL -1 ENDIF WHILE NOT LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer keep_offX keep_offY keep_offZ 1.0 1.0 3.0 FALSE OR NOT flag_menace_buyfood = 3 WAIT 0 IF stats_help = 0 IF TIMERB > 2000 PRINT_HELP_FOREVER_CONDITIONAL FUDHLP3 512 // Press and hold ~m~~widget_player_info~ to view stats. Whenever a stat changes it will appear at the top left of the screen. (flag 512 is CONDITION_FLAG_VIEW_STATS). stats_help = 1 ENDIF ENDIF IF IS_CAR_DEAD ryder_car PRINT_NOW ( INT2_11 ) 10000 1 //You destroyed ryders car GOTO mission_intro2_failed ENDIF IF IS_CHAR_DEAD ryder PRINT_NOW ( INT2_12 ) 10000 1 //Ryder is dead! GOTO mission_intro2_failed ENDIF GOSUB smoke_a_blunt IF NOT flag_menace_buyfood = 3 IF jfud_keep_created = 1 IF IS_CHAR_DEAD shop_keep_junkfud PRINT_NOW ( INT2_10 ) 10000 1 //You killed the shop keeper GOTO mission_intro2_failed ELSE IF NOT IS_CHAR_HEALTH_GREATER shop_keep_junkfud 99 IF NOT IS_CHAR_DEAD shop_keep_junkfud GIVE_WEAPON_TO_CHAR shop_keep_junkfud WEAPONTYPE_SHOTGUN 30 SET_CURRENT_CHAR_WEAPON shop_keep_junkfud WEAPONTYPE_SHOTGUN SET_CHAR_RELATIONSHIP shop_keep_junkfud ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 WAIT 1000 PRINT_NOW ( INT2_14 ) 10000 1 //You've freaked out the shop keeper. GOTO mission_intro2_failed ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD ryder_car IF ryders_car_moved = 0 IF NOT LOCATE_CAR_3D ryder_car 2078.09 -1796.20 12.38 0.2 0.2 2.0 FALSE OR NOT IS_CHAR_HEALTH_GREATER ryder 499 TASK_ENTER_CAR_AS_PASSENGER ryder ryder_car 20000 0 ryders_car_moved = 1 ENDIF ENDIF ENDIF ENDIF GET_AREA_VISIBLE new_visible_area IF new_visible_area = 5 IF print_help_intro2 = 0 //SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2169.72 -1673.14 20.0 //CLEAR_AREA -26.91 -89.73 1002.56 100.0 TRUE REQUEST_ANIMATION GANGS REQUEST_ANIMATION FOOD REQUEST_MODEL COLT45 REQUEST_MODEL CHROMEGUN LOAD_SPECIAL_CHARACTER 2 ryder3 REQUEST_MODEL WMYPIZZ TIMERA = 0 print_help_intro2 = 1 ENDIF IF print_help_intro2 = 1 IF LOCATE_CHAR_ON_FOOT_3D scplayer 372.05 -130.63 1000.49 20.0 20.0 3.0 FALSE PRINT_NOW ( INT2_13 ) 5000 1 //Walk into the marker to buy a pizza. //REMOVE_BLIP rob_shop_blip //ADD_BLIP_FOR_COORD 374.00 -119.28 1000.50 rob_shop_blip print_help_intro2 = 2 ENDIF ENDIF ELSE IF print_help_intro2 = 2 CLEAR_PRINTS //REMOVE_BLIP rob_shop_blip //ADD_BLIP_FOR_COORD 2113.12 -1813.80 12.55 rob_shop_blip print_help_intro2 = 1 ENDIF ENDIF IF flag_attacked_keeper_food = 1 PRINT_NOW ( INT2_14 ) 10000 1 //You've freaked out the shop keeper. GOTO mission_intro2_failed ENDIF ENDWHILE // PIZZA ROBBERY CUTSCENE START**************************************************************************************************************** SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF CLEAR_PRINTS SET_NEAR_CLIP 0.1 STOP_FX_SYSTEM exhale_smoke_effect MARK_MODEL_AS_NO_LONGER_NEEDED cigar MARK_MODEL_AS_NO_LONGER_NEEDED cigar_glow LOAD_MISSION_AUDIO 4 SOUND_BANK_RESTAURANT WHILE NOT HAS_ANIMATION_LOADED FOOD OR NOT HAS_ANIMATION_LOADED GANGS OR NOT HAS_SPECIAL_CHARACTER_LOADED 2 OR NOT HAS_MODEL_LOADED WMYPIZZ OR NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED CHROMEGUN WAIT 0 IF IS_CAR_DEAD ryder_car PRINT_NOW ( INT2_11 ) 10000 1 //You destroyed ryders car. GOTO mission_intro2_failed ENDIF IF IS_CHAR_DEAD ryder PRINT_NOW ( INT2_12 ) 10000 1 //Ryder is dead! GOTO mission_intro2_failed ENDIF IF flag_attacked_keeper_food = 1 PRINT_NOW ( INT2_14 ) 10000 1 //You've freaked out the shop keeper. GOTO mission_intro2_failed ENDIF ENDWHILE IF NOT IS_CHAR_DEAD ryder DROP_OBJECT ryder TRUE CLEAR_CHAR_TASKS_IMMEDIATELY ryder TASK_STAND_STILL ryder 100 SET_CHAR_COORDINATES ryder 375.7327 -125.2345 1000.5296 SET_CHAR_HEADING ryder 201.2298 SET_CHAR_HEALTH ryder 500 SET_CHAR_MAX_HEALTH ryder 500 TASK_PLAY_ANIM ryder ROB_Shifty SHOP 4.0 FALSE FALSE FALSE FALSE -1 ENDIF CLEAR_AREA 372.90 -118.80 1000.57 20.0 TRUE //TEST CLEAR_AREA 369.058 -4.920 1000.883 20.0 TRUE //TEST //CLEAR_AREA_OF_CHARS 369.5132 -133.5416 999.0 372.1891 -118.8091 1005.0 //CLEAR_AREA_OF_CHARS 375.4585 -133.4865 999.0 378.1646 -119.0236 1005.0 CREATE_CHAR PEDTYPE_MISSION1 WMYPIZZ 373.14 -117.11 1000.57 hood_shop_keeper SET_CHAR_HEADING hood_shop_keeper 180.0 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH shopkeeper_decision SET_CHAR_DECISION_MAKER hood_shop_keeper shopkeeper_decision CLEAR_LOOK_AT hood_shop_keeper TASK_LOOK_AT_CHAR hood_shop_keeper scplayer 4700 TASK_TURN_CHAR_TO_FACE_CHAR hood_shop_keeper scplayer //SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE SET_CHAR_COORDINATES scplayer 372.90 -118.80 1000.57 TASK_TURN_CHAR_TO_FACE_CHAR scplayer hood_shop_keeper SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED OPEN_SEQUENCE_TASK intro2_sequence_2 //TASK_GO_STRAIGHT_TO_COORD -1 376.4 -121.6 1000.5 PEDMOVE_WALK 4000 //Ryder goes to rob shop TASK_GO_STRAIGHT_TO_COORD -1 375.2 -119.8 1000.5 PEDMOVE_WALK 7000 //Ryder goes to rob shop //TASK_AIM_GUN_AT_CHAR -1 hood_shop_keeper 3000 TASK_PLAY_ANIM -1 ROB_StickUp_In SHOP 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 ROB_Loop_Threat SHOP 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK intro2_sequence_2 intro2_index = 0 intro2_audio_is_playing = 0 intro2_cutscene_flag = 0 intro2_chat_switch = INTRO2_CHAT3 GOSUB intro2_chat_switch WAIT 200 IF cj_vomits_for_menace = 0 TASK_PLAY_ANIM scplayer EAT_Pizza FOOD 4.0 FALSE FALSE FALSE FALSE -1 ELSE GET_CHAR_COORDINATES scplayer player_X player_Y player_Z intr2_vomitX = player_X + 0.355 intr2_vomitY = player_Y - 0.116 intr2_vomitZ = player_Z - 0.048 CREATE_FX_SYSTEM puke intr2_vomitX intr2_vomitY intr2_vomitZ TRUE vomit_menace //CREATE_FX_SYSTEM_ON_CHAR puke scplayer intr2_vomitX intr2_vomitY intr2_vomitZ TRUE vomit_menace //ATTACH_FX_SYSTEM_TO_CHAR_BONE vomit_menace scplayer BONE_HEAD TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer Eat_Vomit_P FOOD 4.0 FALSE FALSE FALSE FALSE -1 SET_CHAR_SAY_CONTEXT scplayer CONTEXT_GLOBAL_PAIN_CJ_PUKE sample_name_shop //TASK_PLAY_ANIM scplayer Eat_Vomit_P FOOD 4.0 FALSE FALSE FALSE FALSE -1 ENDIF //BUILD_PLAYER_MODEL player1 DO_FADE 500 FADE_IN SET_MUSIC_DOES_FADE TRUE SET_FIXED_CAMERA_POSITION 376.4939 -126.0317 1002.3955 0.0 0.0 0.0 //Ryder putting mask on POINT_CAMERA_AT_POINT 375.9087 -125.2215 1002.3610 JUMP_CUT WAIT 4500 CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 377.0709 -121.8843 1000.7144 377.3563 -119.1986 1002.5696 7000 TRUE CAMERA_SET_VECTOR_TRACK 376.4134 -122.6288 1000.5984 376.4230 -119.1806 1002.2109 7000 TRUE //CAMERA_SET_VECTOR_MOVE 377.0709 -121.8843 1000.7144 377.5171 -121.7195 1002.3387 8000 TRUE //CAMERA_SET_VECTOR_TRACK 376.4134 -122.6288 1000.5984 376.8156 -121.0648 1002.0571 8000 TRUE //SET_FIXED_CAMERA_POSITION 379.9358 -122.7232 1002.5712 0.0 0.0 0.0 //Player talks to shopkeeper //POINT_CAMERA_AT_POINT 378.9661 -122.5710 1002.3801 JUMP_CUT DELETE_CHAR ryder UNLOAD_SPECIAL_CHARACTER 1 CREATE_CHAR PEDTYPE_MISSION1 SPECIAL02 376.3327 -125.2345 1000.5296 ryder SET_ANIM_GROUP_FOR_CHAR ryder gang1 SET_CHAR_NEVER_TARGETTED ryder TRUE SET_CHAR_HEALTH ryder 500 SET_CHAR_MAX_HEALTH ryder 500 SET_CHAR_SUFFERS_CRITICAL_HITS ryder FALSE SET_CHAR_CANT_BE_DRAGGED_OUT ryder TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED ryder TRUE SET_CHAR_DECISION_MAKER ryder ryders_decision SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR ryder FALSE IF NOT IS_CHAR_DEAD ryder GIVE_WEAPON_TO_CHAR ryder WEAPONTYPE_PISTOL 30 SET_CURRENT_CHAR_WEAPON ryder WEAPONTYPE_PISTOL IF NOT IS_CHAR_DEAD hood_shop_keeper PERFORM_SEQUENCE_TASK ryder intro2_sequence_2 CLEAR_SEQUENCE_TASK intro2_sequence_2 ENDIF ENDIF skipped_pizza_cutscene = 0 SKIP_CUTSCENE_START TIMERA = 0 flag_vomit_playing = 0 WHILE NOT LOCATE_CHAR_ANY_MEANS_3D ryder 375.2 -119.8 1000.5 0.4 0.6 2.0 FALSE WAIT 0 IF IS_CHAR_PLAYING_ANIM scplayer Eat_Vomit_P GET_CHAR_ANIM_CURRENT_TIME scplayer Eat_Vomit_P return_animation_food_name IF flag_vomit_playing = 0 IF return_animation_food_name >= 0.463 IF HAS_MISSION_AUDIO_LOADED 4 REPORT_MISSION_AUDIO_EVENT_AT_CHAR scplayer SOUND_RESTAURANT_CJ_PUKE ENDIF flag_vomit_playing = 1 ENDIF ENDIF IF flag_vomit_playing = 1 IF return_animation_food_name >= 0.52 PLAY_FX_SYSTEM vomit_menace flag_vomit_playing = 2 ENDIF ENDIF ENDIF IF IS_CAR_DEAD ryder_car PRINT_NOW ( INT2_11 ) 10000 1 //You destroyed ryders car GOTO mission_intro2_failed ENDIF IF IS_CHAR_DEAD ryder PRINT_NOW ( INT2_12 ) 10000 1 //Ryder is dead! GOTO mission_intro2_failed ENDIF IF flag_attacked_keeper_food = 1 PRINT_NOW ( INT2_14 ) 10000 1 //You've freaked out the shop keeper. GOTO mission_intro2_failed ENDIF IF player_chats_a_bit = 0 IF TIMERA > 1000 IF cj_vomits_for_menace = 0 TASK_PLAY_ANIM scplayer IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE 3000 ENDIF player_chats_a_bit = 1 ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD hood_shop_keeper IF NOT IS_CHAR_DEAD ryder CLEAR_CHAR_TASKS hood_shop_keeper CLEAR_LOOK_AT hood_shop_keeper TASK_LOOK_AT_CHAR hood_shop_keeper ryder 12500 TASK_STAND_STILL scplayer 100 CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer ryder 10000 SET_CHAR_HEADING hood_shop_keeper 200.0 TASK_PLAY_ANIM hood_shop_keeper SHP_Rob_HandsUp SHOP 4.0 TRUE FALSE FALSE FALSE -1 ENDIF ENDIF //SET_FIXED_CAMERA_POSITION 379.4649 -118.3413 1003.0241 0.0 0.0 0.0 //High shot //POINT_CAMERA_AT_POINT 378.5176 -118.5047 1002.7488 JUMP_CUT //SET_FIXED_CAMERA_POSITION 378.2092 -118.5325 1002.6589 0.0 0.0 0.0 //High shot //POINT_CAMERA_AT_POINT 377.2849 -118.6503 1002.2957 JUMP_CUT iSetPizzaPanic = 1 intro2_cutscene_flag = 0 WHILE NOT intro2_index = 1 //Give us the money! This is a raid! WAIT 0 GOSUB load_and_play_audio_intro2 IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 IF NOT IS_CHAR_DEAD ryder CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer ryder 6000 ENDIF intro2_cutscene_flag = 1 ENDIF ENDIF ENDWHILE intro2_cutscene_flag = 0 WHILE NOT intro2_index = 2 //Ryder! Not this again! WAIT 0 GOSUB load_and_play_audio_intro2 IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 IF NOT IS_CHAR_DEAD ryder TASK_PLAY_ANIM ryder ROB_Loop SHOP 4.0 TRUE FALSE FALSE FALSE -1 //IDLE ENDIF IF NOT IS_CHAR_DEAD hood_shop_keeper CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer hood_shop_keeper 6000 ENDIF intro2_cutscene_flag = 1 ENDIF ENDIF ENDWHILE intro2_cutscene_flag = 0 WHILE NOT intro2_index = 3 //It ain't me, fool! WAIT 0 GOSUB load_and_play_audio_intro2 IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 IF NOT IS_CHAR_DEAD ryder TASK_PLAY_ANIM ryder ROB_Loop_Threat SHOP 4.0 TRUE FALSE FALSE FALSE -1 //THREAT ENDIF IF NOT IS_CHAR_DEAD ryder CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer ryder 6000 ENDIF CAMERA_RESET_NEW_SCRIPTABLES SET_FIXED_CAMERA_POSITION 374.9156 -121.7312 1002.5003 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 374.7307 -120.7778 1002.2621 JUMP_CUT intro2_cutscene_flag = 1 ENDIF ENDIF ENDWHILE intro2_cutscene_flag = 0 WHILE NOT intro2_index = 4 //No one else that small! I feel sorry for your dad! WAIT 0 GOSUB load_and_play_audio_intro2 IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 IF NOT IS_CHAR_DEAD hood_shop_keeper CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer hood_shop_keeper 6000 ENDIF IF NOT IS_CHAR_DEAD ryder TASK_PLAY_ANIM ryder ROB_Loop SHOP 4.0 TRUE FALSE FALSE FALSE -1 //IDLE ENDIF intro2_cutscene_flag = 1 ENDIF ENDIF ENDWHILE OPEN_SEQUENCE_TASK intro2_sequence_4 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_PLAY_ANIM -1 ROB_2Idle SHOP 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 prtial_gngtlkH GANGS 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK intro2_sequence_4 intro2_cutscene_flag = 0 WHILE NOT intro2_index = 5 //Shit, man, you're rumbled! Let's get out of here! WAIT 0 GOSUB load_and_play_audio_intro2 IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 SET_FIXED_CAMERA_POSITION 371.5620 -120.1569 1002.4044 0.0 0.0 0.0 //behind CJ POINT_CAMERA_AT_POINT 372.4125 -119.6767 1002.1899 JUMP_CUT IF NOT IS_CHAR_DEAD ryder CLEAR_CHAR_TASKS scplayer CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer ryder 10000 CLEAR_CHAR_TASKS ryder CLEAR_LOOK_AT ryder TASK_LOOK_AT_CHAR ryder scplayer 10000 TASK_TURN_CHAR_TO_FACE_CHAR scplayer ryder TASK_PLAY_ANIM scplayer prtial_gngtlkA GANGS 4.0 FALSE FALSE FALSE FALSE -1 ENDIF intro2_cutscene_flag = 1 ENDIF ENDIF ENDWHILE intro2_cutscene_flag = 0 WHILE NOT intro2_index = 6 //Same old CJ, Buster! Buster! WAIT 0 GOSUB load_and_play_audio_intro2 IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 SET_FIXED_CAMERA_POSITION 374.6357 -121.6844 1001.6368 0.0 0.0 0.0 //All 3 wide POINT_CAMERA_AT_POINT 374.5972 -120.6883 1001.7162 JUMP_CUT IF NOT IS_CHAR_DEAD ryder PERFORM_SEQUENCE_TASK ryder intro2_sequence_4 CLEAR_SEQUENCE_TASK intro2_sequence_4 ENDIF intro2_cutscene_flag = 1 ENDIF ENDIF ENDWHILE //CLEAR_AREA_OF_CHARS 369.5132 -133.5416 999.0 372.1891 -118.8091 1005.0 //CLEAR_AREA_OF_CHARS 375.4585 -133.4865 999.0 378.1646 -119.0236 1005.0 IF NOT IS_CHAR_DEAD ryder CLEAR_CHAR_TASKS ryder ENDIF IF NOT IS_CHAR_DEAD hood_shop_keeper SET_CHAR_HEADING hood_shop_keeper 180.0 TASK_PLAY_ANIM hood_shop_keeper SHP_Gun_Grab SHOP 4.0 FALSE FALSE FALSE TRUE -1 ENDIF WAIT 500 IF NOT IS_CHAR_DEAD hood_shop_keeper GIVE_WEAPON_TO_CHAR hood_shop_keeper WEAPONTYPE_SHOTGUN 30000 SET_CURRENT_CHAR_WEAPON hood_shop_keeper WEAPONTYPE_SHOTGUN ENDIF WAIT 500 //CLEAR_AREA_OF_CHARS 369.5132 -133.5416 999.0 372.1891 -118.8091 1005.0 //CLEAR_AREA_OF_CHARS 375.4585 -133.4865 999.0 378.1646 -119.0236 1005.0 SET_FIXED_CAMERA_POSITION 373.0300 -116.1498 1002.3745 0.0 0.0 0.0 //Shopkeeper firing over shoulder POINT_CAMERA_AT_POINT 373.0192 -117.1292 1002.1727 JUMP_CUT WAIT 300 IF NOT IS_CHAR_DEAD hood_shop_keeper TASK_SHOOT_AT_COORD hood_shop_keeper 374.2905 -125.6810 1001.3077 2000 ENDIF intro2_cutscene_flag = 0 WHILE NOT intro2_index = 7 //Motherfucker! RUN! WAIT 0 GOSUB load_and_play_audio_intro2 IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 FLUSH_ROUTE EXTEND_ROUTE 372.0 -120.1 1000.5 EXTEND_ROUTE 370.5 -132.3 1000.4 TASK_FOLLOW_POINT_ROUTE scplayer PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE EXTEND_ROUTE 376.3 -121.0 1000.5 EXTEND_ROUTE 375.9 -132.0 1000.5 IF NOT IS_CHAR_DEAD ryder TASK_FOLLOW_POINT_ROUTE ryder PEDMOVE_RUN FOLLOW_ROUTE_ONCE ENDIF IF NOT IS_CHAR_DEAD ryder AND NOT IS_CHAR_DEAD hood_shop_keeper CLEAR_LOOK_AT ryder CLEAR_LOOK_AT scplayer CLEAR_LOOK_AT hood_shop_keeper ENDIF IF NOT IS_CHAR_DEAD hood_shop_keeper TASK_SHOOT_AT_COORD hood_shop_keeper 374.2905 -125.6810 1001.3077 1500 ENDIF intro2_cutscene_flag = 1 ENDIF ENDIF ENDWHILE skipped_pizza_cutscene = 1 SKIP_CUTSCENE_END IF skipped_pizza_cutscene = 0 DO_FADE 0 FADE_OUT //End cutscene CLEAR_PRINTS WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ELSE DO_FADE 500 FADE_OUT //End cutscene CLEAR_PRINTS WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF CAMERA_RESET_NEW_SCRIPTABLES CLEAR_AREA 372.90 -118.80 1000.57 100.0 TRUE SET_AREA_VISIBLE 0 TASK_STAND_STILL scplayer 0 SET_CHAR_COORDINATES scplayer 2102.21 -1806.65 12.4 SET_CHAR_HEADING scplayer 75.0 SET_CHAR_CANT_BE_DRAGGED_OUT scplayer TRUE SET_CHAR_AREA_VISIBLE scplayer 0 WAIT 0 IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD ryder_car CLEAR_LOOK_AT ryder CLEAR_LOOK_AT scplayer CLEAR_AREA 2077.57 -1796.41 12.38 100.0 TRUE SET_CAR_COORDINATES ryder_car 2077.57 -1796.41 12.0 SET_CAR_HEADING ryder_car 180.0 SET_CAR_HEALTH ryder_car 1000 /* WHILE IS_CAR_WAITING_FOR_WORLD_COLLISION ryder_car WAIT 0 IF IS_CAR_DEAD ryder_car PRINT_NOW ( INT2_11 ) 10000 1 //You destroyed ryders car GOTO mission_intro2_failed ENDIF DO_FADE 0 FADE_OUT ENDWHILE */ CLEAR_AREA 2098.61 -1801.62 12.39 100.0 TRUE SET_CHAR_COORDINATES ryder 2092.61 -1801.62 12.39 SET_CHAR_HEADING ryder 72.0 SET_CHAR_AREA_VISIBLE ryder 0 LOCK_CAR_DOORS ryder_car CARLOCK_UNLOCKED SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_RUN TASK_ENTER_CAR_AS_PASSENGER ryder ryder_car 40000 0 ENDIF ENDIF RELEASE_WEATHER SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON CLEAR_PRINTS CLEAR_LOADED_SHOP CLEAR_EXTRA_COLOURS FALSE REMOVE_ANIMATION SHOP REMOVE_ANIMATION GANGS REMOVE_ANIMATION FOOD // PIZZA ROBBERY CUTSCENE END****************************************************************************************************************** ryders_car_blip_removed = 0 PRINT_NOW ( INT2_6 ) 10000 1 // ~s~Get in ~b~Ryder's car~s~! IF IS_CHAR_DEAD ryder GOTO mission_intro2_failed ELSE SET_CHAR_HEALTH ryder 500 SET_CHAR_MAX_HEALTH ryder 500 ADD_BLIP_FOR_CHAR ryder ryders_blip REMOVE_BLIP ryders_blip ENDIF REMOVE_BLIP rob_shop_blip REMOVE_BLIP ryder_pizza_waypoint IF NOT IS_CAR_DEAD ryder_car REMOVE_BLIP ryders_car_blip ADD_BLIP_FOR_CAR ryder_car ryders_car_blip SET_BLIP_AS_FRIENDLY ryders_car_blip TRUE ELSE GOTO mission_intro2_failed ENDIF SWITCH_ENTRY_EXIT FDpiza FALSE blob_flag = 1 print_into2_text = 0 OPEN_SEQUENCE_TASK shop_keepers_shoots_outside TASK_GO_STRAIGHT_TO_COORD -1 2102.77 -1806.35 12.55 PEDMOVE_RUN 4000 TASK_SHOOT_AT_COORD -1 2092.67 -1803.64 15.56 1000 CLOSE_SEQUENCE_TASK shop_keepers_shoots_outside CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 1 SOUND_INT2_HA //This pizza parlour is no push-over! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE LOAD_SCENE_IN_DIRECTION 2102.21 -1806.65 12.4 75.0 DO_FADE 500 FADE_IN IF IS_CAR_DEAD ryder_car PRINT_NOW ( INT2_11 ) 10000 1 //You destroyed ryders car. GOTO mission_intro2_failed ENDIF IF IS_CHAR_DEAD ryder PRINT_NOW ( INT2_12 ) 10000 1 //Ryder is dead! GOTO mission_intro2_failed ENDIF intro2_index = 0 intro2_audio_is_playing = 0 intro2_cutscene_flag = 0 intro2_chat_switch = INTRO2_CHAT5 GOSUB intro2_chat_switch TIMERA = 0 TIMERB = 0 CLEAR_AREA 2077.57 -1796.41 12.38 20.0 TRUE WHILE NOT LOCATE_CAR_3D ryder_car 2473.88 -1692.81 12.52 4.0 4.0 4.0 blob_flag //Race back to the hood OR NOT IS_CHAR_IN_CAR ryder ryder_car OR NOT IS_CHAR_SITTING_IN_CAR scplayer ryder_car OR NOT IS_VEHICLE_ON_ALL_WHEELS ryder_car WAIT 0 IF IS_CAR_DEAD ryder_car //OR intro2_failed_flag = 1 PRINT_NOW ( INT2_11 ) 10000 1 //You destroyed ryders car GOTO mission_intro2_failed ENDIF IF IS_CHAR_DEAD ryder //OR intro2_failed_flag = 1 PRINT_NOW ( INT2_12 ) 10000 1 //Ryder is dead! GOTO mission_intro2_failed ENDIF IF NOT LOCATE_CHAR_ON_FOOT_3D scplayer 2104.62 -1806.54 12.55 7.0 6.0 3.0 FALSE IF shopkeeper_goes_radge = 0 IF NOT IS_CHAR_DEAD hood_shop_keeper CLEAR_CHAR_TASKS hood_shop_keeper CLEAR_CHAR_TASKS_IMMEDIATELY hood_shop_keeper SET_CHAR_COORDINATES hood_shop_keeper 2105.32 -1806.24 12.55 SET_CHAR_HEADING hood_shop_keeper 90.0 GIVE_WEAPON_TO_CHAR hood_shop_keeper WEAPONTYPE_SHOTGUN 30000 SET_CURRENT_CHAR_WEAPON hood_shop_keeper WEAPONTYPE_SHOTGUN SET_CHAR_ACCURACY hood_shop_keeper 30 SET_NEAR_CLIP 0.1 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW ( INT2_HA ) 2000 1 //This pizza parlour is no push-over! ENDIF PERFORM_SEQUENCE_TASK hood_shop_keeper shop_keepers_shoots_outside CLEAR_SEQUENCE_TASK shop_keepers_shoots_outside TIMERA = 0 shopkeeper_goes_radge = 1 ENDIF ELSE IF TIMERA > 2000 IF shopkeeper_goes_radge = 1 IF NOT IS_CHAR_DEAD hood_shop_keeper IF LOCATE_CHAR_ON_FOOT_3D hood_shop_keeper 2102.77 -1806.35 12.55 1.0 1.0 3.0 FALSE SET_CHAR_RELATIONSHIP hood_shop_keeper ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 shopkeeper_goes_radge = 2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD ryder_car IF IS_CHAR_IN_CAR scplayer ryder_car IF IS_CHAR_SITTING_IN_CAR ryder ryder_car GOSUB load_and_play_audio_intro2 IF got_in_ryders_truck_first = 0 TIMERB = 0 got_in_ryders_truck_first = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD ryder_car IF IS_CHAR_IN_CAR scplayer ryder_car IF IS_CHAR_SITTING_IN_CAR ryder ryder_car IF ryders_car_blip_removed = 0 REMOVE_BLIP ryders_blip REMOVE_BLIP ryders_car_blip REMOVE_BLIP rob_shop_blip ADD_BLIP_FOR_COORD 2473.88 -1692.81 12.52 rob_shop_blip blob_flag = 1 IF got_in_ryders_truck_first = 1 IF TIMERB > 7000 PRINT_NOW ( INT2_O ) 10000 1 // Drive ryder home PRINT_HELP HELP6_C // Press ~m~~widget_handbrake~ to apply the vehicle's handbrake. ryders_car_blip_removed = 1 ENDIF ENDIF ENDIF ELSE REMOVE_BLIP ryders_car_blip REMOVE_BLIP rob_shop_blip REMOVE_BLIP ryders_blip ADD_BLIP_FOR_CHAR ryder ryders_blip SET_BLIP_AS_FRIENDLY ryders_blip TRUE PRINT_NOW ( INT2_5 ) 1000 1 // ~s~You've left Ryder behind! GET_SCRIPT_TASK_STATUS ryder TASK_ENTER_CAR_AS_PASSENGER ReturnStatus IF ReturnStatus = FINISHED_TASK TASK_ENTER_CAR_AS_PASSENGER ryder ryder_car 20000 0 ENDIF blob_flag = 0 ENDIF ELSE IF ryders_car_blip_removed = 1 REMOVE_BLIP rob_shop_blip REMOVE_BLIP ryders_car_blip ADD_BLIP_FOR_CAR ryder_car ryders_car_blip SET_BLIP_AS_FRIENDLY ryders_car_blip TRUE blob_flag = 0 GOSUB get_back_in_the_car_intro2 PRINT_NOW ( INT2_6 ) 10000 1 // ~s~Get in ~b~Ryder's car~s~! SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer ryders_car_blip_removed = 0 ENDIF ENDIF ELSE PRINT_NOW ( INT2_11 ) 10000 1 //You destroyed ryders car! GOTO mission_intro2_failed ENDIF ENDIF IF IS_CHAR_DEAD ryder //OR intro2_failed_flag = 1 PRINT_NOW ( INT2_12 ) 10000 1 //Ryder is dead! GOTO mission_intro2_failed ENDIF IF IS_CAR_DEAD ryder_car //OR intro2_failed_flag = 1 PRINT_NOW ( INT2_11 ) 10000 1 //You destroyed ryders car GOTO mission_intro2_failed ENDIF ENDWHILE SET_PLAYER_CONTROL player1 OFF intro2_index = 0 intro2_audio_is_playing = 0 intro2_cutscene_flag = 0 intro2_chat_switch = INTRO2_CHAT4 GOSUB intro2_chat_switch IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD ryder_car TASK_LEAVE_CAR ryder ryder_car WAIT 700 IF NOT IS_CAR_DEAD ryder_car TASK_LEAVE_CAR scplayer ryder_car ENDIF ENDIF ENDIF DO_FADE 1600 FADE_OUT //End cutscene WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_WIDESCREEN ON DO_FADE 1500 FADE_IN IF NOT IS_CHAR_DEAD ryder IF IS_CHAR_IN_ANY_CAR ryder WARP_CHAR_FROM_CAR_TO_COORD ryder 2467.3447 -1688.2196 12.5156 ELSE SET_CHAR_COORDINATES ryder 2467.3447 -1688.2196 12.5156 ENDIF ENDIF SET_CHAR_HEADING ryder 284.0 IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2468.3594 -1687.3903 12.518 ELSE SET_CHAR_COORDINATES scplayer 2468.3594 -1687.3903 12.5189 ENDIF SET_CHAR_HEADING scplayer 108.0 SET_FIXED_CAMERA_POSITION 2464.7715 -1687.4926 14.2709 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2465.7505 -1687.6754 14.1833 JUMP_CUT intro2_cutscene_flag = 0 WHILE NOT intro2_index = 1 // You better drop by and see Sweet. WAIT 0 GOSUB load_and_play_audio_intro2 IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 intro2_cutscene_flag = 1 ENDIF ENDIF ENDWHILE intro2_cutscene_flag = 0 WHILE NOT intro2_index = 2 // He's been rapping on about that grafitti. WAIT 0 GOSUB load_and_play_audio_intro2 IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 intro2_cutscene_flag = 1 ENDIF ENDIF ENDWHILE intro2_cutscene_flag = 0 WHILE NOT intro2_index = 3 // Later, dude. WAIT 0 GOSUB load_and_play_audio_intro2 IF intro2_cutscene_flag = 0 IF intro2_audio_is_playing = 2 IF NOT IS_CHAR_DEAD ryder TASK_GO_STRAIGHT_TO_COORD ryder 2459.79 -1688.18 12.56 PEDMOVE_WALK 3000 ENDIF intro2_cutscene_flag = 1 ENDIF ENDIF ENDWHILE TASK_GO_STRAIGHT_TO_COORD scplayer 2471.58 -1685.73 12.51 PEDMOVE_WALK 3000 IF NOT IS_CHAR_DEAD ryder STOP_CHAR_FACIAL_TALK ryder ENDIF WAIT 1000 CLEAR_CHAR_TASKS scplayer SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT DELETE_CHAR ryder GOTO mission_intro2_passed // **************************************** Mission intro2 failed ************************** mission_intro2_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" can_skip_smoking_cutscene = 1 RETURN // **************************************** mission intro2 passed *************************** mission_intro2_passed: REGISTER_MISSION_PASSED ( INTRO_2 ) //Used in the stats PRINT_WITH_NUMBER_BIG ( M_PASSR ) 3 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 3 SWITCH_CAR_GENERATOR gen_car6 101 flag_intro_mission_counter ++ REMOVE_BLIP intro_contact_blip START_NEW_SCRIPT sweet_mission_loop REMOVE_BLIP sweet_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip CLEAR_WANTED_LEVEL player1 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 REMOVE_BLIP barber_shop1 ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2070.2703 -1791.0918 17.1484 RADAR_SPRITE_BARBERS barber_shop1 //Barbers REMOVE_BLIP food_shop1 ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2107.6243 -1807.5155 21.2114 RADAR_SPRITE_PIZZA food_shop1 //Pizza PLAY_MISSION_PASSED_TUNE 1 IF added_all_food_blips_before = 0 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] 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 ENDIF PLAYER_MADE_PROGRESS 1 RETURN // ********************************** mission cleanup ************************************** mission_cleanup_intro2: flag_player_on_mission = 0 IF IS_PLAYER_PLAYING player1 SET_CHAR_CANT_BE_DRAGGED_OUT scplayer FALSE CLEAR_LOOK_AT scplayer ENDIF IF NOT IS_CAR_DEAD ryder_car SET_CAN_BURST_CAR_TYRES ryder_car TRUE ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED WMYPIZZ MARK_MODEL_AS_NO_LONGER_NEEDED PICADOR MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_MODEL_AS_NO_LONGER_NEEDED cigar MARK_MODEL_AS_NO_LONGER_NEEDED cigar_glow REMOVE_ANIMATION SHOP REMOVE_ANIMATION GANGS REMOVE_ANIMATION FOOD flag_menace_buyfood = 0 flag_changed_hair_intro2 = 0 GET_GAME_TIMER timer_mobile_start REMOVE_BLIP ryders_blip REMOVE_BLIP rob_shop_blip REMOVE_BLIP ryders_car_blip REMOVE_BLIP ryder_barbershop_waypoint REMOVE_BLIP ryder_pizza_waypoint REMOVE_CHAR_ELEGANTLY ryder MARK_CHAR_AS_NO_LONGER_NEEDED hood_shop_keeper UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2067.4 -1831.2 13.5 RADAR_SPRITE_SPRAY spray_shop1 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 SET_ZONE_GANG_STRENGTH IWD1 GANG_FLAT 20 SET_ZONE_GANG_STRENGTH IWD2 GANG_FLAT 20 SET_ZONE_GANG_STRENGTH IWD3a GANG_FLAT 20 SET_ZONE_GANG_STRENGTH IWD3b GANG_FLAT 20 SET_ZONE_GANG_STRENGTH IWD4 GANG_FLAT 20 SET_ZONE_GANG_STRENGTH IWD5 GANG_FLAT 20 flag_player_on_menace_mission = 0 //REMOVE_PRICE_MODIFIER afro haircuts //REMOVE_PRICE_MODIFIER afroblond haircuts //REMOVE_PRICE_MODIFIER afrotash haircuts //REMOVE_PRICE_MODIFIER afrobeard haircuts //REMOVE_PRICE_MODIFIER flattop haircuts //REMOVE_PRICE_MODIFIER pizzalow food //REMOVE_PRICE_MODIFIER pizzamed food //REMOVE_PRICE_MODIFIER pizzahigh food //ACTIVATE_INTERIORS TRUE MISSION_HAS_FINISHED RETURN get_back_in_the_car_intro2: CLEAR_MISSION_AUDIO 2 IF get_in_counter_intro2 = 0 LOAD_MISSION_AUDIO 2 SOUND_RYDX_AA //Hop in, CJ. ENDIF IF get_in_counter_intro2 = 1 LOAD_MISSION_AUDIO 2 SOUND_RYDX_AB //Jump in. ENDIF IF get_in_counter_intro2 = 2 LOAD_MISSION_AUDIO 2 SOUND_RYDX_AC //Get in fool! ENDIF IF get_in_counter_intro2 = 3 LOAD_MISSION_AUDIO 2 SOUND_RYDX_AD //All aboard, CJ. ENDIF IF get_in_counter_intro2 = 4 LOAD_MISSION_AUDIO 2 SOUND_RYDX_AE //Guess you drivin, huh? ENDIF IF get_in_counter_intro2 = 5 LOAD_MISSION_AUDIO 2 SOUND_RYDX_AF //C'mon CJ, earn your keep! ENDIF IF get_in_counter_intro2 = 6 LOAD_MISSION_AUDIO 2 SOUND_RYDX_AG //I'm tripping man, you drive. ENDIF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer CLEAR_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CAR_DEAD ryder_car //PRINT_NOW ( INT2_11 ) 10000 1 //You destroyed ryders car //intro2_failed_flag = 1 RETURN ENDIF IF IS_CHAR_DEAD ryder //PRINT_NOW ( INT2_12 ) 10000 1 //Ryder is dead! //intro2_failed_flag = 1 RETURN ENDIF ENDWHILE PLAY_MISSION_AUDIO 2 IF get_in_counter_intro2 = 0 PRINT_NOW ( RYDX_AA ) 3000 1 //Hop in, CJ. ENDIF IF get_in_counter_intro2 = 1 PRINT_NOW ( RYDX_AB ) 3000 1 //Jump in. ENDIF IF get_in_counter_intro2 = 2 PRINT_NOW ( RYDX_AC ) 3000 1 //Get in fool! ENDIF IF get_in_counter_intro2 = 3 PRINT_NOW ( RYDX_AD ) 3000 1 //All aboard, CJ. ENDIF IF get_in_counter_intro2 = 4 PRINT_NOW ( RYDX_AE ) 3000 1 //Guess you drivin, huh? ENDIF IF get_in_counter_intro2 = 5 PRINT_NOW ( RYDX_AF ) 3000 1 //C'mon CJ, earn your keep! ENDIF IF get_in_counter_intro2 = 6 PRINT_NOW ( RYDX_AG ) 3000 1 //I'm tripping man, you drive. ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CAR_DEAD ryder_car //PRINT_NOW ( INT2_11 ) 10000 1 //You destroyed ryders car //intro2_failed_flag = 1 RETURN ENDIF IF IS_CHAR_DEAD ryder //PRINT_NOW ( INT2_12 ) 10000 1 //Ryder is dead! //intro2_failed_flag = 1 RETURN ENDIF ENDWHILE get_in_counter_intro2 ++ IF get_in_counter_intro2 > 6 get_in_counter_intro2 = 0 ENDIF RETURN smoke_a_blunt: IF NOT IS_CHAR_DEAD ryder IF IS_CHAR_PLAYING_ANIM ryder SMOKE_RYD GET_CHAR_ANIM_CURRENT_TIME ryder SMOKE_RYD return_animation_food_name IF flag_vomit_playing = 0 IF return_animation_food_name >= 0.785 CREATE_OBJECT cigar_glow 2440.58 -1979.89 14.2 cigar_glow_object //TASK_PICK_UP_OBJECT ryder cigar_glow_object 0.04 0.1 -0.02 PED_HANDL HOLD_ORIENTATE_BONE_FULL NULL NULL -1 ATTACH_OBJECT_TO_OBJECT cigar_glow_object ryders_ciggy 0.0 0.0 0.0 0.0 0.0 0.0 flag_vomit_playing = 1 ENDIF ENDIF IF flag_vomit_playing = 1 IF return_animation_food_name >= 0.15 AND return_animation_food_name < 0.335 PLAY_FX_SYSTEM exhale_smoke_effect DELETE_OBJECT cigar_glow_object flag_vomit_playing = 2 ENDIF ENDIF IF flag_vomit_playing = 2 IF return_animation_food_name >= 0.335 OR return_animation_food_name < 0.15 STOP_FX_SYSTEM exhale_smoke_effect flag_vomit_playing = 0 ENDIF ENDIF ELSE STOP_FX_SYSTEM exhale_smoke_effect ENDIF ENDIF RETURN load_and_play_audio_intro2: IF intro2_audio_is_playing = 0 OR intro2_audio_is_playing = 1 IF intro2_index <= intro2_cell_index_end IF TIMERA > 200 GOSUB play_intro2_audio ENDIF ENDIF ENDIF IF intro2_audio_is_playing = 2 IF HAS_MISSION_AUDIO_FINISHED 1 GOSUB stop_talking_intro2 intro2_audio_is_playing = 0 intro2_index ++ intro2_cutscene_flag = 0 CLEAR_PRINTS TIMERA = 0 ENDIF ENDIF RETURN play_intro2_audio: IF intro2_audio_is_playing = 0 LOAD_MISSION_AUDIO 1 intro2_audio_chat[intro2_index] intro2_audio_is_playing = 1 ENDIF IF intro2_audio_is_playing = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW ( $intro2_chat[intro2_index] ) 4000 1 //Let's head over to B-Dup's crib. PLAY_MISSION_AUDIO 1 GOSUB start_talking_intro2 intro2_audio_is_playing = 2 ENDIF ENDIF RETURN start_talking_intro2: IF intro2_audio_chat[intro2_index] = SOUND_INT2_GB OR intro2_audio_chat[intro2_index] = SOUND_INT2_GD IF NOT IS_CHAR_DEAD hood_shop_keeper SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH hood_shop_keeper TRUE START_CHAR_FACIAL_TALK hood_shop_keeper 3000 RETURN ENDIF ENDIF IF intro2_audio_chat[intro2_index] = SOUND_INT2_CA OR intro2_audio_chat[intro2_index] = SOUND_INT2_CE OR intro2_audio_chat[intro2_index] = SOUND_INT2_BB OR intro2_audio_chat[intro2_index] = SOUND_INT2_BD OR intro2_audio_chat[intro2_index] = SOUND_INT2_BF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE START_CHAR_FACIAL_TALK scplayer 3000 RETURN ENDIF IF intro2_audio_chat[intro2_index] = SOUND_INT2_BJ OR intro2_audio_chat[intro2_index] = SOUND_INT2_GE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE START_CHAR_FACIAL_TALK scplayer 3000 ELSE IF NOT IS_CHAR_DEAD ryder SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryder TRUE START_CHAR_FACIAL_TALK ryder 3000 ENDIF ENDIF RETURN stop_talking_intro2: IF intro2_audio_chat[intro2_index] = SOUND_INT2_GB OR intro2_audio_chat[intro2_index] = SOUND_INT2_GD IF NOT IS_CHAR_DEAD hood_shop_keeper SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH hood_shop_keeper FALSE STOP_CHAR_FACIAL_TALK hood_shop_keeper RETURN ENDIF ENDIF IF intro2_audio_chat[intro2_index] = SOUND_INT2_CA OR intro2_audio_chat[intro2_index] = SOUND_INT2_CE OR intro2_audio_chat[intro2_index] = SOUND_INT2_BB OR intro2_audio_chat[intro2_index] = SOUND_INT2_BD OR intro2_audio_chat[intro2_index] = SOUND_INT2_BF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer RETURN ENDIF IF intro2_audio_chat[intro2_index] = SOUND_INT2_BJ OR intro2_audio_chat[intro2_index] = SOUND_INT2_GE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer ELSE IF NOT IS_CHAR_DEAD ryder SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryder FALSE STOP_CHAR_FACIAL_TALK ryder ENDIF ENDIF RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* SWEET 1 ******************************************* // ********************************** TAG THE TURF ***************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME SWEET1 // Mission start stuff GOSUB mission_start_sweet1 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_sweet1_failed ENDIF GOSUB mission_cleanup_sweet1 MISSION_END { // Variables for mission VAR_INT spray_can_pickup sweet1_audio_chat[8] sweet1_audio_is_playing sweet1_index sweet1_chat_switch sweet1_cutscene_flag get_in_counter_swee1 LVAR_INT sweet_car_blip_removed jump_help6 tag_cutscene_skipped gang_follow_seq_2 sweet_car_frozen help_for_gangs played_mission_audio_sweet1 LVAR_INT sweet1_tag1 sweet1_tag2 sweet1_tag3 sweet1_tag4 added_sweet1_blip gang_hassle gang_follow_seq_1 sweet1_cell_index_end LVAR_INT jump_help1 jump_help2 jump_help3 jump_help4 jump_help5 sweet1_flat1 sweet1_flat2 sweet_car_blip sweet_deleted help_for_tagging LVAR_INT tag_percentage1 tag_percentage2 small_flats_gang stop_sweet_blip start_tagging Return_Progress played_last_line_of_audio LVAR_INT sweet1_sequence_1 sweet1_sequence_2 sweet1_sequence_3 sweet_tagged_tag Returned_Status Returned_Progress blank_sweet LVAR_INT sweet_in_tag_position1 sweet_in_tag_position2 sweet_in_tag_position3 tag_percentage3_tagged ReturnStatus LVAR_FLOAT tag_postionX tag_postionY tag_postionZ sweet1X sweet1Y sweet1Z tag_area3aX tag_area3aY tag_area3bX tag_area3bY LVAR_FLOAT tag_area1aX tag_area1aY tag_area1bX tag_area1bY tag_area2aX tag_area2aY tag_area2bX tag_area2bY LVAR_FLOAT tag_area4aX tag_area4aY tag_area4bX tag_area4bY Retured_anim_time VAR_TEXT_LABEL $sweet1_chat[8] CLEAR_CHAR_TASKS scplayer // **************************************** Mission Start ********************************** sweet1_chat_switch: SWITCH sweet1_chat_switch CONST_INT SWEET1_CHAT1 0 CONST_INT SWEET1_CHAT2 1 CASE SWEET1_CHAT1 $sweet1_chat[0] = &SWE1_AA //Hey wait up. $sweet1_chat[1] = &SWE1_AB //Thought you'd hang with your brother? $sweet1_chat[2] = &SWE1_AC //Ease up, homie, it's been difficult. $sweet1_chat[3] = &SWE1_AD //You wanna drive? $sweet1_chat[4] = &SWE1_AE //Yeah, sure. sweet1_audio_chat[0] = SOUND_SWE1_AA //Hey wait up. sweet1_audio_chat[1] = SOUND_SWE1_AB //Thought you'd hang with your brother? sweet1_audio_chat[2] = SOUND_SWE1_AC //Ease up, homie, it's been difficult. sweet1_audio_chat[3] = SOUND_SWE1_AD //You wanna drive? sweet1_audio_chat[4] = SOUND_SWE1_AE //Yeah, sure. sweet1_cell_index_end = 4 BREAK CASE SWEET1_CHAT2 $sweet1_chat[0] = &SWE1_BN //Like riding a bike! $sweet1_chat[1] = &SWE1_BO //Yeah, it all comes back, man. $sweet1_chat[2] = &SWE1_BP //Yo, how you doing for greens? $sweet1_chat[3] = &SWE1_BQ //Check it, I’m lean, man. $sweet1_chat[4] = &SWE1_BX //CRASH took my big greens, left me with small change... $sweet1_chat[5] = &SWE1_BT //Here, get yourself a beer or something. $sweet1_chat[6] = &SWE1_BU //I’ll catch you later. sweet1_audio_chat[0] = SOUND_SWE1_BN //Like riding a bike! sweet1_audio_chat[1] = SOUND_SWE1_BO //Yeah, it all comes back, man. sweet1_audio_chat[2] = SOUND_SWE1_BP //Yo, how you doing for greens? sweet1_audio_chat[3] = SOUND_SWE1_BQ //Check it, I’m lean, man. sweet1_audio_chat[4] = SOUND_SWE1_BX //CRASH took my big greens, left me with small change... sweet1_audio_chat[5] = SOUND_SWE1_BT //Here, get yourself a beer or something. sweet1_audio_chat[6] = SOUND_SWE1_BU //I’ll catch you later. sweet1_cell_index_end = 6 BREAK //W {Whilst Driving – Minor damage to Sweet’s car} - versions /* //W { SWEET gets first tag – Player has to get the one across the road } - versions SWE1_AP //I’ll tag this block – follow me in the car. SWE1_AQ //I’ll get this one – follow me in thecar. SWE1_AR //Yo, watch my back while I tag this sucker. //W { Go to next tag location in enemy turf } - versions SWE1_AS //C’mon, let’s cruise into Ballas territory. SWE1_AT //Yo, let’s check out Ballas turf. SWE1_AU //C’mon, CJ, check out Ballas turf with me. //W { Sweet drives off and leaves Player to it.} - versions SWE1_AV //You mark up here, I’ll go off and do another ‘hood. SWE1_AW //You get these, I’ll go tag another block. SWE1_AX //You ok to do this while I go check around the block? //W { Sweet picks up Player when done}* CD Player being chased by Ballas - versions SWE1_BG //YO, CJ, GET IN! SWE1_BH //CARL, QUICK, GET IN! SWE1_BJ //CARL, GET YOUR ASS IN THIS CAR! //W { Sweet picks up Player when done}* CD Player not being chased. - versions SWE1_BK //Hey, CJ, you done? Hop in! SWE1_BL //You done here? – Get in! SWE1_BM //Yo, CJ, get in! */ ENDSWITCH RETURN GOTO dont_create_this_shit CREATE_PICKUP_WITH_AMMO SPRAYCAN PICKUP_ON_STREET_SLOW 1000 2493.52 -1700.83 14.27 spray_can_pickup dont_create_this_shit: mission_start_sweet1: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 WAIT 0 LOAD_MISSION_TEXT SWEET1 // ****************************************START OF CUTSCENE******************************** // fades the screen in CLEAR_AREA 2527.9 -1667.7 14.1 10.0 TRUE LOAD_CUTSCENE SWEET1A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE // ****************************************END OF CUTSCENE********************************** //VIEW_INTEGER_VARIABLE tag_percentage tag_percentage jump_help1 = 0 jump_help2 = 0 jump_help3 = 0 jump_help4 = 0 jump_help5 = 0 jump_help6 = 0 start_tagging = 0 Returned_Progress = 0 sweet_tagged_tag = 0 small_flats_gang = 0 sweet_car_blip_removed = 0 sweet_deleted = 0 gang_hassle = 0 help_for_tagging = 0 sweet_in_tag_position1 = 0 sweet_in_tag_position2 = 0 sweet_in_tag_position3 = 0 tag_percentage3_tagged = 0 tag_cutscene_skipped = 0 sweet_car_frozen = 0 help_for_gangs = 0 played_mission_audio_sweet1 = 0 get_in_counter_swee1 = 0 tag_area1aX = 2038.7583 //LARGE AREA1 tag_area1aY = -1624.4189 tag_area1bX = 2074.5027 tag_area1bY = -1662.7673 tag_area2aX = 2345.68 //LARGE AREA2 tag_area2aY = -1515.79 tag_area2bX = 2423.70 tag_area2bY = -1393.28 tag_area3aX = 2401.60 //ROOF TOP TAG tag_area3aY = -1550.80 tag_area3bX = 2396.33 tag_area3bY = -1555.12 tag_area4aX = 2100.9722 //BRIDGE TAG tag_area4aY = -1646.6226 tag_area4bX = 2105.2639 tag_area4bY = -1656.7118 SET_ZONE_GANG_STRENGTH IWD1 GANG_FLAT 10 SET_ZONE_GANG_STRENGTH IWD2 GANG_FLAT 10 SET_ZONE_GANG_STRENGTH IWD3a GANG_FLAT 10 SET_ZONE_GANG_STRENGTH IWD3b GANG_FLAT 10 SET_ZONE_GANG_STRENGTH IWD4 GANG_FLAT 10 SET_ZONE_GANG_STRENGTH IWD5 GANG_FLAT 10 SET_ZONE_GANG_STRENGTH ELS1a GANG_FLAT 10 SET_ZONE_GANG_STRENGTH ELS1b GANG_FLAT 10 SET_ZONE_GANG_STRENGTH ELS2 GANG_FLAT 10 SET_ZONE_GANG_STRENGTH ELS3a GANG_FLAT 10 SET_ZONE_GANG_STRENGTH ELS3b GANG_FLAT 10 SET_ZONE_GANG_STRENGTH ELS4 GANG_FLAT 10 LOAD_SPECIAL_CHARACTER 1 sweet LOAD_SPECIAL_CHARACTER 10 smoke REQUEST_MODEL SPRAYCAN REQUEST_MODEL GREENWOO REQUEST_MODEL ballas1 REQUEST_MODEL ballas2 LOAD_ALL_MODELS_NOW WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_SPECIAL_CHARACTER_LOADED 10 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED SPRAYCAN OR NOT HAS_MODEL_LOADED GREENWOO OR NOT HAS_MODEL_LOADED ballas1 OR NOT HAS_MODEL_LOADED ballas2 WAIT 0 ENDWHILE sweet1_index = 0 sweet1_audio_is_playing = 0 sweet1_cutscene_flag = 0 sweet1_chat_switch = SWEET1_CHAT1 GOSUB sweet1_chat_switch SET_CHAR_COORDINATES scplayer 2516.53 -1671.37 12.88 SET_CHAR_HEADING scplayer 61.28 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_SPRAYCAN 30000 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_SPRAYCAN CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 2518.07 -1668.82 12.85 sweet SET_ANIM_GROUP_FOR_CHAR sweet gang2 SET_CHAR_HEADING sweet 103.76 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY blank_sweet SET_CHAR_DECISION_MAKER sweet blank_sweet SET_CHAR_NEVER_TARGETTED sweet TRUE GIVE_WEAPON_TO_CHAR sweet WEAPONTYPE_SPRAYCAN 30000 SET_CURRENT_CHAR_WEAPON sweet WEAPONTYPE_SPRAYCAN SET_CHAR_SUFFERS_CRITICAL_HITS sweet FALSE SET_CHAR_HEALTH sweet 500 SET_CHAR_MAX_HEALTH sweet 500 SET_CHAR_CANT_BE_DRAGGED_OUT sweet TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED sweet TRUE SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR sweet FALSE SWITCH_CAR_GENERATOR gen_car7 0 CLEAR_AREA 2518.07 -1668.82 12.85 10.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR GREENWOO &GROVE4L_ CREATE_CAR GREENWOO 2508.16 -1666.47 13.0 sweet_car SET_CAN_BURST_CAR_TYRES sweet_car FALSE CHANGE_CAR_COLOUR sweet_car 59 34 SET_CAR_HEADING sweet_car 16.0 ADD_BLIP_FOR_CAR sweet_car sweet_car_blip SET_BLIP_AS_FRIENDLY sweet_car_blip TRUE SET_RADIO_CHANNEL RS_DISCO_FUNK_SOUL CREATE_CHAR PEDTYPE_MISSION1 SPECIAL10 2520.10 -1669.58 13.10 big_smoke SET_ANIM_GROUP_FOR_CHAR big_smoke fatman SET_CHAR_HEADING big_smoke 173.99 TASK_GO_STRAIGHT_TO_COORD big_smoke 2518.5093 -1676.1243 13.3855 PEDMOVE_WALK 10000 SET_TAG_STATUS_IN_AREA tag_area1aX tag_area1aY tag_area1bX tag_area1bY FALSE SET_TAG_STATUS_IN_AREA tag_area2aX tag_area2aY tag_area2bX tag_area2bY FALSE SET_TAG_STATUS_IN_AREA tag_area3aX tag_area3aY tag_area3bX tag_area3bY FALSE SET_TAG_STATUS_IN_AREA tag_area4aX tag_area4aY tag_area4bX tag_area4bY FALSE GET_PERCENTAGE_TAGGED_IN_AREA tag_area1aX tag_area1aY tag_area1bX tag_area1bY tag_percentage SWITCH_WIDESCREEN ON //Short cut of sweet and player SET_PLAYER_CONTROL player1 OFF CLEAR_AREA 2518.07 -1668.82 12.85 40.0 TRUE SET_NEAR_CLIP 0.2 SET_FIXED_CAMERA_POSITION 2512.0100 -1671.2073 14.2722 0.0 0.0 0.0 //shot of Sweet & Smoke POINT_CAMERA_AT_POINT 2512.9377 -1670.8423 14.1948 JUMP_CUT LOAD_SCENE 2515.42 -1671.19 14.46 TASK_GO_STRAIGHT_TO_COORD sweet 2513.8118 -1669.5271 12.5348 PEDMOVE_WALK 10000 TASK_GO_STRAIGHT_TO_COORD scplayer 2512.64 -1671.07 12.50 PEDMOVE_WALK 10000 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE tag_cutscene_skipped = 0 SKIP_CUTSCENE_START WHILE NOT sweet1_index = 1 //Hey wait up. WAIT 0 GOSUB load_and_play_audio_sweet1 IF sweet1_cutscene_flag = 0 IF sweet1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD sweet CLEAR_LOOK_AT scplayer CLEAR_LOOK_AT sweet TASK_LOOK_AT_CHAR scplayer sweet 8000 TASK_LOOK_AT_CHAR sweet scplayer 8000 //START_CHAR_FACIAL_TALK sweet 5000 ENDIF sweet1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD sweet //STOP_CHAR_FACIAL_TALK sweet TASK_TURN_CHAR_TO_FACE_CHAR scplayer sweet ENDIF CLEAR_AREA 2512.26 -1667.83 12.56 30.0 TRUE CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2523.4170 -1664.9910 15.1254 2522.9614 -1667.4600 15.2254 13000 TRUE CAMERA_SET_VECTOR_TRACK 2513.6946 -1670.6090 13.8556 2514.2966 -1669.3425 13.9372 13000 TRUE WHILE NOT sweet1_index = 2 //Thought you'd hang with your brother? WAIT 0 GOSUB load_and_play_audio_sweet1 IF sweet1_cutscene_flag = 0 IF sweet1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD sweet //START_CHAR_FACIAL_TALK scplayer 5000 //SET_FIXED_CAMERA_POSITION 2516.1646 -1670.9469 12.9003 0.0 0.0 0.0 //shot of Sweet //POINT_CAMERA_AT_POINT 2515.2185 -1670.7294 13.1402 JUMP_CUT ENDIF sweet1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD sweet //STOP_CHAR_FACIAL_TALK scplayer ENDIF WHILE NOT sweet1_index = 3 //Ease up, homie, it's been difficult. WAIT 0 GOSUB load_and_play_audio_sweet1 IF sweet1_cutscene_flag = 0 IF sweet1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD sweet //START_CHAR_FACIAL_TALK sweet 5000 TASK_PLAY_ANIM sweet IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE 6000 ENDIF sweet1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD sweet //STOP_CHAR_FACIAL_TALK sweet ENDIF WHILE NOT sweet1_index = 4 //You wanna drive? WAIT 0 GOSUB load_and_play_audio_sweet1 IF sweet1_cutscene_flag = 0 IF sweet1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD sweet //START_CHAR_FACIAL_TALK sweet 5000 ENDIF sweet1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD sweet //STOP_CHAR_FACIAL_TALK sweet ENDIF WHILE NOT sweet1_index = 5 //Yeah, sure. WAIT 0 GOSUB load_and_play_audio_sweet1 IF sweet1_cutscene_flag = 0 IF sweet1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD sweet IF NOT IS_CAR_DEAD sweet_car //START_CHAR_FACIAL_TALK sweet 10000 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_GO_STRAIGHT_TO_COORD scplayer 2510.2705 -1669.8031 12.4092 PEDMOVE_WALK 10000 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER sweet sweet_car 20000 0 ENDIF ENDIF sweet1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE WAIT 1000 tag_cutscene_skipped = 1 SKIP_CUTSCENE_END CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 //IF NOT IS_CHAR_DEAD sweet //STOP_CHAR_FACIAL_TALK sweet //STOP_CHAR_FACIAL_TALK scplayer //ENDIF DELETE_CHAR big_smoke UNLOAD_SPECIAL_CHARACTER 10 ADD_BLIP_FOR_COORD 2089.01 -1649.08 12.8 stop_sweet_blip REMOVE_BLIP stop_sweet_blip IF tag_cutscene_skipped = 0 SET_CHAR_COORDINATES scplayer 2511.68 -1670.33 12.46 SET_CHAR_HEADING scplayer 62.36 CLEAR_LOOK_AT scplayer //SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK IF NOT IS_CHAR_DEAD sweet IF NOT IS_CAR_DEAD sweet_car CLEAR_AREA 2510.05 -1666.61 12.57 1.0 TRUE SET_CHAR_COORDINATES sweet 2510.05 -1666.61 12.57 SET_CHAR_HEADING sweet 53.89 CLEAR_LOOK_AT sweet CLEAR_CHAR_TASKS_IMMEDIATELY sweet SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER sweet sweet_car 20000 0 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD sweet CLEAR_AREA 2510.05 -1666.61 12.57 1.0 TRUE SET_CHAR_COORDINATES sweet 2510.05 -1666.61 12.57 SET_CHAR_HEADING sweet 53.89 ENDIF CLEAR_CHAR_TASKS scplayer CAMERA_RESET_NEW_SCRIPTABLES SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT PRINT_NOW ( SWE1_A ) 7000 1 // Get in Sweets Car. added_sweet1_blip = 0 blob_flag = 0 IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF //GOTO skip_to_final_sweet_cut WHILE NOT LOCATE_CAR_3D sweet_car 2089.01 -1649.08 12.54 4.0 4.0 4.0 blob_flag OR NOT IS_CHAR_SITTING_IN_CAR scplayer sweet_car OR NOT IS_VEHICLE_ON_ALL_WHEELS sweet_car WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_sweet1_passed ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_SPRAYCAN PRINT_NOW (SWE1SPF) 10000 1 //~r~You need a spraycan! GOTO mission_sweet1_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ELSE IF IS_CHAR_IN_CAR scplayer sweet_car IF sweet_car_blip_removed = 0 REMOVE_BLIP sweet_car_blip REMOVE_BLIP stop_sweet_blip ADD_BLIP_FOR_COORD 2089.01 -1649.08 12.8 stop_sweet_blip PRINT_NOW ( HOOD3_A ) 5000 1 // spray over the rival gang tags with you're own tag. blob_flag = 1 sweet_car_blip_removed = 1 ENDIF ELSE IF sweet_car_blip_removed = 1 REMOVE_BLIP sweet_car_blip REMOVE_BLIP stop_sweet_blip ADD_BLIP_FOR_CAR sweet_car sweet_car_blip SET_BLIP_AS_FRIENDLY sweet_car_blip TRUE GOSUB get_back_in_the_car PRINT_NOW ( SWE1_S ) 5000 1 //~s~Get back in ~b~Sweets car! blob_flag = 0 sweet_car_blip_removed = 0 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_SPRAYCAN PRINT_NOW (SWE1SPF) 10000 1 //~r~You need a spraycan! GOTO mission_sweet1_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF ENDWHILE SET_PLAYER_CONTROL player1 OFF SET_FIXED_CAMERA_POSITION 2082.5332 -1650.2444 14.8007 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2083.5154 -1650.2024 14.6181 JUMP_CUT //TAG CUTSCENE*************************************************************************************************************************** REQUEST_ANIMATION GRAFFITI // graffiti_Chkout GET_NEAREST_TAG_POSITION 2100.84 -1648.71 12.42 tag_postionX tag_postionY tag_postionZ IF NOT IS_CAR_DEAD sweet_car OPEN_SEQUENCE_TASK sweet1_sequence_1 //TAG1 TASK_LEAVE_CAR -1 sweet_car TASK_GO_STRAIGHT_TO_COORD -1 2100.48 -1649.14 12.47 PEDMOVE_WALK 20000 TASK_SHOOT_AT_COORD -1 tag_postionX tag_postionY tag_postionZ 15000 CLOSE_SEQUENCE_TASK sweet1_sequence_1 ENDIF SET_TAG_STATUS_IN_AREA tag_area1aX tag_area1aY tag_area1bX tag_area1bY FALSE SET_TAG_STATUS_IN_AREA tag_area4aX tag_area4aY tag_area4bX tag_area4bY FALSE GET_PERCENTAGE_TAGGED_IN_AREA tag_area1aX tag_area1aY tag_area1bX tag_area1bY tag_percentage SET_CHAR_ACCURACY sweet 90 SET_CHAR_SHOOT_RATE sweet 100 sweet_tagged_tag = 0 SWITCH_WIDESCREEN ON IF NOT IS_CHAR_DEAD sweet IF NOT IS_CAR_DEAD sweet_car TASK_LEAVE_CAR sweet sweet_car ENDIF ENDIF WAIT 600 IF NOT IS_CAR_DEAD sweet_car TASK_LEAVE_CAR scplayer sweet_car ENDIF WAIT 500 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE WHILE NOT HAS_ANIMATION_LOADED GRAFFITI WAIT 0 ENDWHILE LOAD_MISSION_AUDIO 1 SOUND_SWE1_CA //There's another two Balla tags in this hood. LOAD_MISSION_AUDIO 2 SOUND_SWE1_AR //Yo, watch my back while I tag this sucker. IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2094.70 -1652.05 12.65 ELSE SET_CHAR_COORDINATES scplayer 2094.70 -1652.05 12.65 ENDIF SET_CHAR_HEADING scplayer 302.0 CLEAR_CHAR_TASKS scplayer TASK_GO_STRAIGHT_TO_COORD scplayer 2099.12 -1651.26 12.63 PEDMOVE_WALK 20000 IF NOT IS_CHAR_DEAD sweet IF IS_CHAR_IN_ANY_CAR sweet WARP_CHAR_FROM_CAR_TO_COORD sweet 2095.80 -1649.86 12.70 ELSE SET_CHAR_COORDINATES sweet 2095.80 -1649.86 12.70 ENDIF SET_CHAR_HEADING sweet 277.0 CLEAR_CHAR_TASKS sweet PERFORM_SEQUENCE_TASK sweet sweet1_sequence_1 CLEAR_SEQUENCE_TASK sweet1_sequence_1 ENDIF SET_FIXED_CAMERA_POSITION 2095.5315 -1659.4850 13.3156 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2095.7422 -1658.5193 13.4672 JUMP_CUT CLEAR_AREA 2094.20 -1652.05 12.65 10.0 TRUE WAIT 500 DO_FADE 500 FADE_IN IF NOT IS_CHAR_DEAD sweet CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer sweet 4500 ENDIF tag_cutscene_skipped = 0 SKIP_CUTSCENE_START WAIT 2000 SET_FIXED_CAMERA_POSITION 2102.1096 -1647.6721 13.1493 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2101.3691 -1648.3153 13.3438 JUMP_CUT WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 2 PRINT_NOW (SWE1_AR) 10000 1 //Yo, watch my back while I tag this sucker IF NOT IS_CHAR_DEAD sweet START_CHAR_FACIAL_TALK sweet 3000 ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF ENDWHILE CLEAR_PRINTS IF NOT IS_CHAR_DEAD sweet STOP_CHAR_FACIAL_TALK sweet ENDIF IF NOT IS_CHAR_DEAD sweet GET_SEQUENCE_PROGRESS sweet Return_Progress ENDIF WHILE NOT Return_Progress = 2 WAIT 0 IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_SPRAYCAN PRINT_NOW (SWE1SPF) 10000 1 //~r~You need a spraycan! GOTO mission_sweet1_failed ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF GET_SEQUENCE_PROGRESS sweet Return_Progress ENDWHILE //SET_FIXED_CAMERA_POSITION 2097.6716 -1651.5294 14.3508 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 2098.4343 -1650.9133 14.1545 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2097.2688 -1648.2150 14.4973 2098.3191 -1650.5167 14.3662 10000 TRUE CAMERA_SET_VECTOR_TRACK 2101.6265 -1649.5768 13.7631 2101.8901 -1647.9247 13.7316 10000 TRUE PRINT_HELP_FOREVER_CONDITIONAL SWE1_D 256 // Look at the tag and hold ~m~~widget_attack~ to spray it. (the 256 is CONDITION_FLAG_ATTACK) help_for_tagging = 1 TIMERA = 0 WHILE NOT tag_percentage = 100 //TAG1 WAIT 0 GET_PERCENTAGE_TAGGED_IN_AREA tag_area4aX tag_area4aY tag_area4bX tag_area4bY tag_percentage IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_SPRAYCAN PRINT_NOW (SWE1SPF) 10000 1 //~r~You need a spraycan! GOTO mission_sweet1_failed ENDIF IF help_for_tagging = 1 IF TIMERA > 5000 PRINT_HELP SWE1_F //keep the ~o~ button pressed until the tag is completely sprayed over. TIMERA = 0 help_for_tagging = 2 ELSE PRINT_HELP_FOREVER_CONDITIONAL SWE1_D 256 // Look at the tag and hold ~m~~widget_attack~ to spray it. (the 256 is CONDITION_FLAG_ATTACK) ENDIF ENDIF ENDWHILE WAIT 1000 IF NOT IS_CHAR_DEAD sweet SET_CHAR_HEADING sweet 280.0 TASK_PLAY_ANIM sweet GRAFFITI_CHKOUT GRAFFITI 4.0 FALSE FALSE FALSE FALSE -1 GET_SCRIPT_TASK_STATUS sweet TASK_PLAY_ANIM ReturnStatus ENDIF WHILE NOT ReturnStatus = FINISHED_TASK WAIT 0 IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF GET_SCRIPT_TASK_STATUS sweet TASK_PLAY_ANIM ReturnStatus IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_SPRAYCAN PRINT_NOW (SWE1SPF) 10000 1 //~r~You need a spraycan! GOTO mission_sweet1_failed ENDIF IF help_for_tagging = 1 IF TIMERA > 5000 PRINT_HELP SWE1_F //keep the ~o~ button pressed until the tag is completely sprayed over. TIMERA = 0 help_for_tagging = 2 ELSE PRINT_HELP_FOREVER_CONDITIONAL SWE1_D 256 // Look at the tag and hold ~m~~widget_attack~ to spray it. (the 256 is CONDITION_FLAG_ATTACK) ENDIF ENDIF ENDWHILE CAMERA_RESET_NEW_SCRIPTABLES CLEAR_HELP IF NOT IS_CHAR_DEAD sweet TASK_GO_STRAIGHT_TO_COORD sweet 2099.10 -1650.02 12.57 PEDMOVE_WALK 20000 ENDIF IF NOT IS_CHAR_DEAD sweet CLEAR_LOOK_AT sweet CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer sweet 4500 TASK_LOOK_AT_CHAR sweet scplayer 4500 ENDIF WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW (SWE1_CA) 10000 1 //There's another two Balla tags in this hood. IF NOT IS_CHAR_DEAD sweet START_CHAR_FACIAL_TALK sweet 3000 ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF ENDWHILE IF NOT IS_CHAR_DEAD sweet STOP_CHAR_FACIAL_TALK sweet ENDIF CLEAR_PRINTS TASK_GO_STRAIGHT_TO_COORD scplayer 2097.56 -1651.36 12.71 PEDMOVE_WALK 20000 WAIT 500 tag_cutscene_skipped = 1 SKIP_CUTSCENE_END CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SWE1_CB //You go get 'em and I'll keep the engine running. CAMERA_RESET_NEW_SCRIPTABLES IF tag_cutscene_skipped = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_TAG_STATUS_IN_AREA tag_area4aX tag_area4aY tag_area4bX tag_area4bY TRUE SET_CHAR_COORDINATES scplayer 2097.56 -1651.36 12.71 SET_CHAR_HEADING scplayer 99.0 IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS_IMMEDIATELY sweet SET_CHAR_COORDINATES sweet 2099.10 -1650.02 12.57 SET_CHAR_HEADING sweet 99.0 ENDIF SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT DO_FADE 700 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF IF NOT IS_CHAR_DEAD sweet IF NOT IS_CAR_DEAD sweet_car TASK_ENTER_CAR_AS_PASSENGER sweet sweet_car 15000 0 ENDIF ENDIF REMOVE_BLIP sweet_car_blip REMOVE_BLIP stop_sweet_blip CLEAR_LOOK_AT scplayer SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT REMOVE_BLIP stop_sweet_blip ADD_BLIP_FOR_COORD 2068.31 -1654.00 14.3 sweet1_tag2 //On house CHANGE_BLIP_COLOUR sweet1_tag2 1 ADD_BLIP_FOR_COORD 2047.31 -1634.65 13.8 sweet1_tag3 //Down alleyway CHANGE_BLIP_COLOUR sweet1_tag3 1 REMOVE_ANIMATION GRAFFITI IF NOT IS_CAR_DEAD sweet_car LOCK_CAR_DOORS sweet_car CARLOCK_LOCKOUT_PLAYER_ONLY ENDIF sweet_tagged_tag = 1 GET_PERCENTAGE_TAGGED_IN_AREA tag_area1aX tag_area1aY tag_area1bX tag_area1bY tag_percentage SET_TAG_STATUS_IN_AREA tag_area1aX tag_area1aY tag_area1bX tag_area1bY FALSE played_last_line_of_audio = 0 WHILE NOT tag_percentage = 100 WAIT 0 IF played_last_line_of_audio = 0 IF HAS_MISSION_AUDIO_LOADED 2 PLAY_MISSION_AUDIO 2 PRINT_NOW (SWE1_CB) 2500 1 //You go get 'em and I'll keep the engine running. played_last_line_of_audio = 1 ENDIF ELSE IF played_last_line_of_audio = 1 IF HAS_MISSION_AUDIO_FINISHED 2 PRINT_NOW ( SWE1_X ) 6000 1 // ~s~Spray over the remaining tags. played_last_line_of_audio = 2 ENDIF ENDIF ENDIF GET_PERCENTAGE_TAGGED_IN_AREA tag_area1aX tag_area1aY tag_area1bX tag_area1bY tag_percentage GET_PERCENTAGE_TAGGED_IN_AREA 2068.8760 -1654.5895 2063.5444 -1650.0127 tag_percentage1 //On house GET_PERCENTAGE_TAGGED_IN_AREA 2044.8356 -1633.9858 2047.1448 -1638.9565 tag_percentage2 //Down alleyway IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_SPRAYCAN PRINT_NOW (SWE1SPF) 10000 1 //~r~You need a spraycan! GOTO mission_sweet1_failed ENDIF IF LOCATE_CHAR_ON_FOOT_2D scplayer 2043.68 -1635.73 4.0 4.0 FALSE OR LOCATE_CHAR_ON_FOOT_2D scplayer 2067.99 -1652.61 4.0 4.0 FALSE IF help_for_tagging = 0 IF TIMERA > 1000 PRINT_HELP_FOREVER_CONDITIONAL SWE1_D 256 // Look at the tag and hold ~m~~widget_attack~ to spray it. (the 256 is CONDITION_FLAG_ATTACK) TIMERA = 0 help_for_tagging = 1 ENDIF ENDIF IF help_for_tagging = 1 IF TIMERA > 5000 PRINT_HELP SWE1_F //keep the ~o~ button pressed until the tag is completely sprayed over. TIMERA = 0 help_for_tagging = 2 ENDIF ENDIF ENDIF IF tag_percentage1 = 100 REMOVE_BLIP sweet1_tag2 ENDIF IF tag_percentage2 = 100 REMOVE_BLIP sweet1_tag3 ENDIF ENDWHILE IF NOT IS_CAR_DEAD sweet_car REMOVE_BLIP sweet1_tag2 REMOVE_BLIP sweet1_tag3 ADD_BLIP_FOR_CAR sweet_car sweet_car_blip SET_BLIP_AS_FRIENDLY sweet_car_blip TRUE LOCK_CAR_DOORS sweet_car CARLOCK_UNLOCKED ENDIF PRINT_NOW ( SWE1_S ) 6000 1 //~s~Get back in ~b~Sweets car! IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF LOAD_MISSION_AUDIO 1 SOUND_SWE1_AS //C’mon, let’s cruise into Ballas territory. WHILE NOT IS_CHAR_IN_CAR scplayer sweet_car WAIT 0 IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_SPRAYCAN PRINT_NOW (SWE1SPF) 10000 1 //~r~You need a spraycan! GOTO mission_sweet1_failed ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_SPRAYCAN PRINT_NOW (SWE1SPF) 10000 1 //~r~You need a spraycan! GOTO mission_sweet1_failed ENDIF ENDWHILE added_sweet1_blip = 0 help_for_tagging = 0 TIMERA = 0 blob_flag = 1 REMOVE_BLIP sweet_car_blip ADD_BLIP_FOR_COORD 2338.74 -1500.31 22.83 sweet1_tag1 WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_SPRAYCAN PRINT_NOW (SWE1SPF) 10000 1 //~r~You need a spraycan! GOTO mission_sweet1_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SWE1_AS ) 3000 1 // C’mon, let’s cruise into Ballas territory. WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_SPRAYCAN PRINT_NOW (SWE1SPF) 10000 1 //~r~You need a spraycan! GOTO mission_sweet1_failed ENDIF ENDWHILE IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF TIMERA = 0 WHILE NOT LOCATE_CAR_3D sweet_car 2338.74 -1500.31 22.83 4.0 4.0 4.0 blob_flag OR NOT IS_CHAR_SITTING_IN_CAR scplayer sweet_car OR NOT IS_VEHICLE_ON_ALL_WHEELS sweet_car WAIT 0 IF help_for_gangs = 0 IF TIMERA > 10000 PRINT_HELP SWE1_Z1 help_for_gangs = 1 ENDIF ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_SPRAYCAN PRINT_NOW (SWE1SPF) 10000 1 //~r~You need a spraycan! GOTO mission_sweet1_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ELSE IF IS_CHAR_IN_CAR scplayer sweet_car IF sweet_car_blip_removed = 0 REMOVE_BLIP sweet1_tag1 REMOVE_BLIP sweet_car_blip ADD_BLIP_FOR_COORD 2338.74 -1500.31 22.83 sweet1_tag1 PRINT_NOW ( HOOD3_B ) 5000 1 // Go into enemy territory and spray over the rival gang tags sweet_car_blip_removed = 1 blob_flag = 1 ENDIF ELSE IF sweet_car_blip_removed = 1 REMOVE_BLIP sweet_car_blip REMOVE_BLIP sweet1_tag1 ADD_BLIP_FOR_CAR sweet_car sweet_car_blip SET_BLIP_AS_FRIENDLY sweet_car_blip TRUE GOSUB get_back_in_the_car PRINT_NOW ( SWE1_S ) 6000 1 //~s~Get back in ~b~Sweets car! SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer blob_flag = 0 sweet_car_blip_removed = 0 ENDIF ENDIF ENDIF IF help_for_tagging = 0 IF TIMERA > 3000 PRINT_NOW ( HOOD3_B ) 5000 1 // Go into enemy territory and spray over the rival gang tags help_for_tagging = 1 ENDIF ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_SPRAYCAN PRINT_NOW (SWE1SPF) 10000 1 //~r~You need a spraycan! GOTO mission_sweet1_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF ENDWHILE LOAD_MISSION_AUDIO 1 SOUND_SWE1_AV REMOVE_BLIP sweet_car_blip REMOVE_BLIP sweet1_tag1 ADD_BLIP_FOR_COORD 2396.21 -1469.80 24.9 sweet1_tag3 CHANGE_BLIP_COLOUR sweet1_tag3 1 ADD_BLIP_FOR_COORD 2353.22 -1506.54 24.7 sweet1_tag4 CHANGE_BLIP_COLOUR sweet1_tag4 1 // Sweet fucks off cut***************************************************************************************************************** SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 2329.6750 -1499.9113 25.8505 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2330.6533 -1499.9260 25.6440 JUMP_CUT SET_PLAYER_CONTROL player1 OFF WAIT 100 IF NOT IS_CAR_DEAD sweet_car IF IS_CHAR_IN_CAR scplayer sweet_car TASK_LEAVE_CAR scplayer sweet_car ENDIF ENDIF WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SWE1_AV ) 10000 1 // You mark up here, I’ll go off and do another ‘hood WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF ENDWHILE WHILE IS_CHAR_IN_CAR scplayer sweet_car WAIT 0 IF NOT IS_CHAR_DEAD sweet IF NOT IS_CAR_DEAD sweet_car ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD sweet IF NOT IS_CAR_DEAD sweet_car LOCK_CAR_DOORS sweet_car CARLOCK_LOCKOUT_PLAYER_ONLY TASK_SHUFFLE_TO_NEXT_CAR_SEAT sweet sweet_car // 3master adding this back in.. TASK_CAR_DRIVE_WANDER sweet sweet_car 20.0 DRIVINGMODE_AVOIDCARS ENDIF ENDIF help_for_tagging = 0 help_for_gangs = 0 TIMERA = 0 SET_TAG_STATUS_IN_AREA tag_area2aX tag_area2aY tag_area2bX tag_area2bY FALSE GET_PERCENTAGE_TAGGED_IN_AREA tag_area2aX tag_area2aY tag_area2bX tag_area2bY tag_percentage WAIT 1000 SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT WHILE NOT tag_percentage = 100 //SPRAY 2 BALLAS TAGS************************************************************************************ WAIT 0 IF help_for_tagging = 0 IF TIMERA > 2500 PRINT_NOW ( SWE1_M ) 6000 1 //Find and spray over the tags. LOAD_MISSION_AUDIO 1 SOUND_SWE1_BA //What the fuck? LOAD_MISSION_AUDIO 2 SOUND_SWE1_BE //Get that fool! help_for_tagging = 1 ENDIF ENDIF GET_PERCENTAGE_TAGGED_IN_AREA tag_area2aX tag_area2aY tag_area2bX tag_area2bY tag_percentage GET_PERCENTAGE_TAGGED_IN_AREA 2396.21 -1469.80 2387.95 -1463.55 tag_percentage1 //Alleyway GET_PERCENTAGE_TAGGED_IN_AREA 2353.22 -1506.54 2354.88 -1511.58 tag_percentage2 //Mex resturant IF small_flats_gang = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2395.61 -1470.52 50.0 50.0 FALSE //FLATS MEMBERS CREATE_CHAR PEDTYPE_MISSION1 ballas1 2400.45 -1470.39 22.97 sweet1_flat1 SET_CHAR_HEADING sweet1_flat1 82.40 CREATE_CHAR PEDTYPE_MISSION1 ballas2 2396.48 -1469.90 22.99 sweet1_flat2 SET_CHAR_HEADING sweet1_flat2 262.64 TASK_CHAT_WITH_CHAR sweet1_flat2 sweet1_flat1 FALSE TRUE TASK_CHAT_WITH_CHAR sweet1_flat1 sweet1_flat2 TRUE TRUE OPEN_SEQUENCE_TASK gang_follow_seq_1 //Flat1 TASK_GOTO_CHAR_OFFSET -1 scplayer -1 0.5 90.0 SET_SEQUENCE_TO_REPEAT gang_follow_seq_1 1 CLOSE_SEQUENCE_TASK gang_follow_seq_1 OPEN_SEQUENCE_TASK gang_follow_seq_2 //Flat2 TASK_GOTO_CHAR_OFFSET -1 scplayer -1 0.5 270.0 SET_SEQUENCE_TO_REPEAT gang_follow_seq_2 1 CLOSE_SEQUENCE_TASK gang_follow_seq_2 small_flats_gang = 1 ENDIF ELSE IF gang_hassle = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2395.61 -1470.52 20.0 17.0 FALSE //FLATS MEMBERS IF NOT IS_CHAR_DEAD sweet1_flat1 IF NOT IS_CHAR_DEAD sweet1_flat2 SWITCH_WIDESCREEN ON //sweet's back********************************************************************************************** SET_PLAYER_CONTROL player1 OFF SET_FIXED_CAMERA_POSITION 2400.3840 -1472.2081 23.9349 0.0 0.0 0.0 // look at Flats POINT_CAMERA_AT_POINT 2399.4900 -1471.7634 23.9880 JUMP_CUT PRINT_HELP SWE1_H WAIT 500 SKIP_CUTSCENE_START WAIT 6500 SKIP_CUTSCENE_END SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT ENDIF ENDIF gang_hassle = 1 ENDIF ENDIF IF gang_hassle = 1 IF help_for_gangs = 0 IF TIMERA > 2000 PRINT_HELP_FOREVER_CONDITIONAL SWE1_I 256 // Press ~m~~widget_attack~ to spray the gang member in the face. (the 256 is CONDITION_FLAG_ATTACK) help_for_gangs = 1 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2395.61 -1470.52 5.0 5.0 FALSE //FLATS MEMBERS IF NOT IS_CHAR_DEAD sweet1_flat1 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet1_flat1 TRUE TASK_STAND_STILL sweet1_flat1 0 PERFORM_SEQUENCE_TASK sweet1_flat1 gang_follow_seq_1 CLEAR_SEQUENCE_TASK gang_follow_seq_1 ENDIF IF NOT IS_CHAR_DEAD sweet1_flat2 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet1_flat2 TRUE TASK_STAND_STILL sweet1_flat2 0 PERFORM_SEQUENCE_TASK sweet1_flat2 gang_follow_seq_2 CLEAR_SEQUENCE_TASK gang_follow_seq_2 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW ( SWE1_BA ) 2000 1 //What the fuck? ENDIF TIMERA = 0 ENDIF gang_hassle = 2 ENDIF ENDIF IF gang_hassle = 2 IF tag_percentage1 = 100 OR TIMERA > 5000 IF NOT IS_CHAR_DEAD sweet1_flat1 TASK_KILL_CHAR_ON_FOOT sweet1_flat1 scplayer ENDIF IF NOT IS_CHAR_DEAD sweet1_flat2 TASK_KILL_CHAR_ON_FOOT sweet1_flat2 scplayer IF HAS_MISSION_AUDIO_LOADED 2 PLAY_MISSION_AUDIO 2 PRINT_NOW ( SWE1_BE ) 2000 1 //Get that fool! ENDIF ENDIF gang_hassle = 3 ENDIF ENDIF IF gang_hassle = 3 IF HAS_MISSION_AUDIO_FINISHED 2 IF NOT IS_CHAR_DEAD sweet1_flat1 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet1_flat1 FALSE ENDIF IF NOT IS_CHAR_DEAD sweet1_flat2 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet1_flat2 FALSE ENDIF gang_hassle = 4 ENDIF ENDIF ENDIF IF tag_percentage1 = 100 REMOVE_BLIP sweet1_tag3 ENDIF IF tag_percentage2 = 100 REMOVE_BLIP sweet1_tag4 ENDIF IF LOCATE_CHAR_ON_FOOT_2D scplayer 2353.30 -1508.18 3.0 3.0 FALSE AND jump_help6 = 0 PRINT_HELP SWE1_G //Spraying over a rival tags will gain you respect from your gang. TIMERA = 0 jump_help6 = 1 ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_SPRAYCAN PRINT_NOW (SWE1SPF) 10000 1 //~r~You need a spraycan! GOTO mission_sweet1_failed ENDIF IF sweet_car_frozen = 0 IF NOT IS_CHAR_DEAD sweet IF NOT IS_CAR_DEAD sweet_car IF NOT LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer sweet_car 30.0 30.0 10.0 FALSE AND NOT IS_CAR_ON_SCREEN sweet_car CLEAR_CHAR_TASKS sweet SET_CAR_COORDINATES sweet_car 2487.1721 -1666.3010 -100.3438 FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION sweet_car TRUE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION sweet TRUE sweet_car_frozen = 1 ENDIF ENDIF ENDIF ENDIF ENDWHILE REMOVE_BLIP sweet1_tag3 REMOVE_BLIP sweet1_tag4 REMOVE_BLIP sweet1_tag1 ADD_BLIP_FOR_COORD 2374.0 -1534.1 23.0 sweet1_tag1 PRINT_NOW ( SWE1_Z ) 5000 1 // ~s~go to the ~y~blip~s~ to find the next tag. SET_TAG_STATUS_IN_AREA tag_area3aX tag_area3aY tag_area3bX tag_area3bY FALSE GET_PERCENTAGE_TAGGED_IN_AREA tag_area3aX tag_area3aY tag_area3bX tag_area3bY tag_percentage REQUEST_CAR_RECORDING 207 WHILE NOT tag_percentage = 100 //SPRAY LAST TAG****************************************************************************************** WAIT 0 IF help_for_tagging = 0 IF TIMERA > 2500 PRINT_NOW ( SWE1_M ) 6000 1 //Find and spray over the tags. help_for_tagging = 1 ENDIF ENDIF GET_PERCENTAGE_TAGGED_IN_AREA tag_area3aX tag_area3aY tag_area3bX tag_area3bY tag_percentage //roof top IF tag_percentage = 100 REMOVE_BLIP sweet1_tag2 ENDIF IF jump_help1 = 0 IF LOCATE_CHAR_ON_FOOT_3D scplayer 2374.0 -1534.1 23.0 1.4 1.4 2.0 TRUE PRINT_HELP_FOREVER_CONDITIONAL JMPHID 1024 // Stand in front of the fence and press ~m~~widget_sprint~ to climb the fence. (1024 is CWidgetHelpText::CONDITION_FLAG_CLIMB) REMOVE_BLIP sweet1_tag1 REMOVE_BLIP sweet1_tag2 ADD_BLIP_FOR_COORD 2395.43 -1551.69 26.98 sweet1_tag2 //Roof CHANGE_BLIP_COLOUR sweet1_tag2 1 jump_help1 = 1 ENDIF ENDIF IF LOCATE_CHAR_ON_FOOT_2D scplayer 2352.3 -1552.1 3.0 3.0 FALSE AND jump_help1 = 0 PRINT_HELP_FOREVER_CONDITIONAL JMPHID 1024 // Stand in front of the fence and press ~m~~widget_sprint~ to climb the fence. (1024 is CWidgetHelpText::CONDITION_FLAG_CLIMB) jump_help1 = 1 ENDIF IF LOCATE_CHAR_ON_FOOT_2D scplayer 2420.7 -1572.1 3.0 3.0 FALSE AND jump_help1 = 0 PRINT_HELP_FOREVER_CONDITIONAL JMPHID 1024 // Stand in front of the fence and press ~m~~widget_sprint~ to climb the fence. (1024 is CWidgetHelpText::CONDITION_FLAG_CLIMB) jump_help1 = 1 ENDIF IF LOCATE_CHAR_ON_FOOT_2D scplayer 2373.5 -1547.2 3.0 3.0 FALSE AND jump_help2 = 0 PRINT_HELP RADAR5 //up arrows jump_help2 = 1 ENDIF IF LOCATE_CHAR_ON_FOOT_2D scplayer 2378.7546 -1555.8896 3.0 3.0 FALSE AND jump_help5 = 0 PRINT_HELP_FOREVER_CONDITIONAL JMPHID2 1024 // Stand in front of the wall and press ~m~~widget_sprint~ to climb. (1024 is CWidgetHelpText::CONDITION_FLAG_CLIMB) REMOVE_BLIP sweet1_tag1 REMOVE_BLIP sweet1_tag2 ADD_BLIP_FOR_COORD 2395.43 -1551.69 26.98 sweet1_tag2 //Roof CHANGE_BLIP_COLOUR sweet1_tag2 1 jump_help5 = 1 ENDIF IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_SPRAYCAN PRINT_NOW (SWE1SPF) 10000 1 //~r~You need a spraycan! GOTO mission_sweet1_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF IF sweet_car_frozen = 0 IF NOT IS_CHAR_DEAD sweet IF NOT IS_CAR_DEAD sweet_car IF NOT LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer sweet_car 100.0 100.0 10.0 FALSE OR NOT IS_CAR_ON_SCREEN sweet_car CLEAR_CHAR_TASKS sweet SET_CAR_COORDINATES sweet_car 2487.1721 -1666.3010 -100.3438 FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION sweet_car TRUE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION sweet TRUE sweet_car_frozen = 1 ENDIF ENDIF ENDIF ENDIF ENDWHILE //skip_to_final_sweet_cut: REMOVE_BLIP sweet1_tag2 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD sweet IF sweet_car_frozen = 1 FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION sweet_car FALSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION sweet FALSE ENDIF SET_CAR_COORDINATES sweet_car 2337.86 -1467.21 22.82 SET_CAR_HEADING sweet_car 180.0 WAIT 100 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS_IMMEDIATELY sweet TASK_WARP_CHAR_INTO_CAR_AS_DRIVER sweet sweet_car SET_CHAR_CAN_BE_SHOT_IN_VEHICLE sweet FALSE REMOVE_BLIP sweet1_tag1 LOCK_CAR_DOORS sweet_car CARLOCK_UNLOCKED ENDIF ENDIF ENDIF ENDIF WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 207 WAIT 0 REQUEST_CAR_RECORDING 207 IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF ENDWHILE IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD sweet IF HAS_CAR_RECORDING_BEEN_LOADED 207 CLEAR_CHAR_TASKS_IMMEDIATELY sweet WAIT 0 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD sweet TASK_WARP_CHAR_INTO_CAR_AS_DRIVER sweet sweet_car ENDIF ENDIF START_PLAYBACK_RECORDED_CAR sweet_car 207 ENDIF ENDIF ENDIF WAIT 2000 IF NOT IS_CAR_DEAD sweet_car REMOVE_BLIP sweet_car_blip ADD_BLIP_FOR_CAR sweet_car sweet_car_blip SET_BLIP_AS_FRIENDLY sweet_car_blip TRUE ENDIF SET_PLAYER_CONTROL player1 OFF CLEAR_HELP CLEAR_AREA 2378.3225 -1526.1534 23.8690 50.0 TRUE //SET_FIXED_CAMERA_POSITION 2337.1609 -1527.9457 23.7488 0.0 0.0 0.0 // look at car //POINT_CAMERA_AT_POINT 2337.8621 -1527.2365 23.6769 JUMP_CUT DO_FADE 300 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE_IN_DIRECTION 2385.4443 -1529.3350 24.0351 82.7482 SWITCH_WIDESCREEN ON //sweet's back********************************************************************************************** SET_FIXED_CAMERA_POSITION 2386.4436 -1529.3130 24.0696 0.0 0.0 0.0 // look at car2 POINT_CAMERA_AT_POINT 2385.4443 -1529.3350 24.0351 JUMP_CUT DO_FADE 300 FADE_IN TIMERA = 0 LOAD_MISSION_AUDIO 1 SOUND_SWE1_BH WHILE NOT TIMERA > 3500 WAIT 0 IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF ENDWHILE //CAMERA_RESET_NEW_SCRIPTABLES SET_FIXED_CAMERA_POSITION 2386.4436 -1529.3130 24.0696 0.0 0.0 0.0 // look at car2 POINT_CAMERA_AT_POINT 2385.4443 -1529.3350 24.0351 JUMP_CUT IF NOT IS_CAR_DEAD sweet_car REPORT_MISSION_AUDIO_EVENT_AT_CAR sweet_car SOUND_SWEETS_HORN ENDIF WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF ENDWHILE //WAIT 500 IF NOT IS_CAR_DEAD sweet_car REPORT_MISSION_AUDIO_EVENT_AT_CAR sweet_car SOUND_SWEETS_HORN ENDIF PLAY_MISSION_AUDIO 1 PRINT_NOW ( SWE1_BH ) 10000 1 // CARL, QUICK, GET IN! WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF ENDWHILE IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS_IMMEDIATELY sweet WARP_CHAR_INTO_CAR_AS_PASSENGER sweet sweet_car 0 ENDIF ENDIF CAMERA_RESET_NEW_SCRIPTABLES IF NOT IS_CHAR_DEAD sweet1_flat1 CLEAR_CHAR_TASKS sweet1_flat1 TASK_WANDER_STANDARD sweet1_flat1 ENDIF IF NOT IS_CHAR_DEAD sweet1_flat2 CLEAR_CHAR_TASKS sweet1_flat2 TASK_WANDER_STANDARD sweet1_flat2 ENDIF blob_flag = 0 sweet_car_blip_removed = 0 SWITCH_WIDESCREEN OFF //sweet's back SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT PRINT_NOW ( SWE1_S ) 6000 1 //~s~Get back in ~b~Sweets car! REMOVE_BLIP sweet_car_blip REMOVE_BLIP sweet1_tag1 IF NOT IS_CAR_DEAD sweet_car ADD_BLIP_FOR_CAR sweet_car sweet_car_blip SET_BLIP_AS_FRIENDLY sweet_car_blip TRUE ENDIF LOAD_MISSION_AUDIO 1 SOUND_SWEX_AH //Get us back to the hood, CJ! WHILE NOT LOCATE_CAR_3D sweet_car 2504.7354 -1672.4498 12.3848 4.0 4.0 4.0 blob_flag //Drive Sweet home OR NOT IS_CHAR_SITTING_IN_CAR scplayer sweet_car OR NOT IS_VEHICLE_ON_ALL_WHEELS sweet_car WAIT 0 IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ELSE IF IS_CHAR_IN_CAR scplayer sweet_car IF played_mission_audio_sweet1 = 0 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW ( SWEX_AH ) 3000 1 //Get us back to the hood, CJ! TIMERA = 0 played_mission_audio_sweet1 = 1 ENDIF ENDIF IF sweet_car_blip_removed = 0 REMOVE_BLIP sweet1_tag1 REMOVE_BLIP sweet_car_blip ADD_BLIP_FOR_COORD 2504.7354 -1672.4498 12.3848 sweet1_tag1 IF TIMERA > 3000 PRINT_NOW ( SWE1_B ) 6000 1 // Go back to Sweets gaff. sweet_car_blip_removed = 1 ENDIF blob_flag = 1 ENDIF ELSE IF sweet_car_blip_removed = 1 REMOVE_BLIP sweet_car_blip REMOVE_BLIP sweet1_tag1 ADD_BLIP_FOR_CAR sweet_car sweet_car_blip SET_BLIP_AS_FRIENDLY sweet_car_blip TRUE GOSUB get_back_in_the_car PRINT_NOW ( SWE1_S ) 6000 1 //~s~Get back in ~b~Sweets car! SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer blob_flag = 0 sweet_car_blip_removed = 0 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! GOTO mission_sweet1_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! GOTO mission_sweet1_failed ENDIF ENDWHILE //skip_to_final_sweet_cut: SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REQUEST_ANIMATION GANGS WHILE NOT HAS_ANIMATION_LOADED GANGS WAIT 0 ENDWHILE SET_NEAR_CLIP 0.2 IF NOT IS_CHAR_DEAD sweet HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE sweet TRUE ENDIF SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_SPRAYCAN IF NOT IS_CHAR_DEAD sweet STOP_CHAR_FACIAL_TALK sweet STOP_CHAR_FACIAL_TALK scplayer ENDIF sweet1_index = 0 sweet1_audio_is_playing = 0 sweet1_cutscene_flag = 0 sweet1_chat_switch = SWEET1_CHAT2 GOSUB sweet1_chat_switch SET_FIXED_CAMERA_POSITION 2509.9500 -1672.0947 13.7315 0.0 0.0 0.0 //Sweet/player POINT_CAMERA_AT_POINT 2510.8914 -1672.4194 13.8204 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2510.1528 -1673.5514 14.2267 2509.9971 -1671.8660 13.9831 18000 TRUE CAMERA_SET_VECTOR_TRACK 2510.9673 -1672.9948 14.0633 2510.8853 -1672.3169 13.8960 18000 TRUE MARK_CAR_AS_NO_LONGER_NEEDED sweet_car CLEAR_AREA 2511.3518 -1672.14 12.4588 1.0 TRUE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF NOT IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_COORDINATES scplayer 2511.3518 -1672.14 12.4588 ELSE WARP_CHAR_FROM_CAR_TO_COORD scplayer 2511.3518 -1672.14 12.4588 ENDIF SET_CHAR_HEADING scplayer 180.0 CLEAR_AREA 2511.3518 -1673.14 12.4588 1.0 TRUE IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS_IMMEDIATELY sweet IF NOT IS_CHAR_IN_ANY_CAR sweet SET_CHAR_COORDINATES sweet 2511.3518 -1673.14 12.4588 ELSE WARP_CHAR_FROM_CAR_TO_COORD sweet 2511.3518 -1673.14 12.4588 ENDIF SET_CHAR_HEADING sweet 0.0 ENDIF DO_FADE 1000 FADE_IN WAIT 700 Retured_anim_time = 0.0 SKIP_CUTSCENE_START sweet1_cutscene_flag = 0 WHILE NOT sweet1_index = 1 //Like riding a bike! WAIT 0 GOSUB load_and_play_audio_sweet1 IF sweet1_cutscene_flag = 0 IF sweet1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD sweet CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer sweet 20000 ENDIF sweet1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE sweet1_cutscene_flag = 0 WHILE NOT sweet1_index = 2 //Yeah, it all comes back, man. WAIT 0 GOSUB load_and_play_audio_sweet1 IF sweet1_cutscene_flag = 0 IF sweet1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD sweet ENDIF sweet1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE sweet1_cutscene_flag = 0 WHILE NOT sweet1_index = 3 //Yo, how you doing for greens? WAIT 0 GOSUB load_and_play_audio_sweet1 IF sweet1_cutscene_flag = 0 IF sweet1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD sweet ENDIF sweet1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE sweet1_cutscene_flag = 0 WHILE NOT sweet1_index = 4 //Check it, I’m lean, man. WAIT 0 GOSUB load_and_play_audio_sweet1 IF sweet1_cutscene_flag = 0 IF sweet1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD sweet TASK_PLAY_ANIM scplayer IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE 6000 ENDIF sweet1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE sweet1_cutscene_flag = 0 WHILE NOT sweet1_index = 5 //CRASH took my big greens, left me with small change... WAIT 0 GOSUB load_and_play_audio_sweet1 IF sweet1_cutscene_flag = 0 IF sweet1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD sweet //TASK_PLAY_ANIM scplayer IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE 6000 ENDIF sweet1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE sweet1_cutscene_flag = 0 WHILE NOT sweet1_index = 6 //Here, get yourself a beer or something. WAIT 0 GOSUB load_and_play_audio_sweet1 IF sweet1_cutscene_flag = 0 IF sweet1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD sweet //START_CHAR_FACIAL_TALK sweet 5000 IF NOT IS_CHAR_DEAD sweet TASK_PLAY_ANIM sweet hndshkfa GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM scplayer hndshkfa GANGS 4.0 FALSE FALSE FALSE FALSE -1 ENDIF ENDIF sweet1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE GET_SCRIPT_TASK_STATUS scplayer TASK_PLAY_ANIM ReturnStatus WHILE NOT ReturnStatus = FINISHED_TASK WAIT 0 GET_SCRIPT_TASK_STATUS scplayer TASK_PLAY_ANIM ReturnStatus ENDWHILE sweet1_cutscene_flag = 0 WHILE NOT sweet1_index = 7 //I’ll catch you later. WAIT 0 GOSUB load_and_play_audio_sweet1 IF sweet1_cutscene_flag = 0 IF sweet1_audio_is_playing = 2 IF NOT IS_CHAR_DEAD sweet CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer sweet 2000 TASK_GO_STRAIGHT_TO_COORD sweet 2517.3972 -1677.3524 13.2548 PEDMOVE_WALK 20000 ENDIF sweet1_cutscene_flag = 1 ENDIF ENDIF ENDWHILE SKIP_CUTSCENE_END WAIT 1500 CLEAR_LOOK_AT scplayer HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE CAMERA_RESET_NEW_SCRIPTABLES DELETE_CHAR sweet SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT GOTO mission_sweet1_passed // **************************************** Mission sweet1 failed *********************** mission_sweet1_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" SET_TAG_STATUS_IN_AREA tag_area1aX tag_area1aY tag_area1bX tag_area1bY FALSE SET_TAG_STATUS_IN_AREA tag_area2aX tag_area2aY tag_area2bX tag_area2bY FALSE SET_TAG_STATUS_IN_AREA tag_area3aX tag_area3aY tag_area3bX tag_area3bY FALSE SET_TAG_STATUS_IN_AREA tag_area4aX tag_area4aY tag_area4bX tag_area4bY FALSE IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_SPRAYCAN REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_SPRAYCAN ENDIF RETURN // **************************************** mission sweet1 passed ************************ mission_sweet1_passed: flag_sweet_mission_counter ++ //Used to terminate this mission loop in the main script. These varibles will be set up in the main.sc IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_SPRAYCAN REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_SPRAYCAN GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_SPRAYCAN 1000 ELSE GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_SPRAYCAN 1000 ENDIF bball_unlocked = 1 REMOVE_PICKUP spray_can_pickup CREATE_PICKUP_WITH_AMMO SPRAYCAN PICKUP_ON_STREET_SLOW 1000 2492.5054 -1700.8246 1017.8 spray_can_pickup PLAYER_MADE_PROGRESS 1 REGISTER_MISSION_PASSED ( SWEET_1 ) //Used in the stats PRINT_WITH_NUMBER_BIG ( M_PASSS ) 200 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 3 ADD_SCORE player1 200 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 RETURN // ********************************** mission cleanup *********************************** mission_cleanup_sweet1: MARK_MODEL_AS_NO_LONGER_NEEDED SPRAYCAN MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO MARK_MODEL_AS_NO_LONGER_NEEDED ballas1 MARK_MODEL_AS_NO_LONGER_NEEDED ballas2 MARK_CHAR_AS_NO_LONGER_NEEDED sweet1_flat1 MARK_CHAR_AS_NO_LONGER_NEEDED sweet1_flat2 MARK_CHAR_AS_NO_LONGER_NEEDED sweet GET_GAME_TIMER timer_mobile_start //Used to reset the mobile phone timer so it doesn't ring immediately after the mission SWITCH_CAR_GENERATOR gen_car7 101 REMOVE_BLIP sweet1_tag1 REMOVE_BLIP sweet1_tag2 REMOVE_BLIP sweet1_tag3 REMOVE_BLIP sweet1_tag4 REMOVE_BLIP sweet_car_blip REMOVE_BLIP stop_sweet_blip REMOVE_ANIMATION GRAFFITI REMOVE_ANIMATION GANGS REMOVE_CHAR_ELEGANTLY sweet REMOVE_CAR_RECORDING 207 UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 10 IF NOT IS_CAR_DEAD sweet_car SET_CAN_BURST_CAR_TYRES sweet_car TRUE ENDIF SET_ZONE_GANG_STRENGTH IWD1 GANG_FLAT 30 SET_ZONE_GANG_STRENGTH IWD2 GANG_FLAT 30 SET_ZONE_GANG_STRENGTH IWD3a GANG_FLAT 30 SET_ZONE_GANG_STRENGTH IWD3b GANG_FLAT 30 SET_ZONE_GANG_STRENGTH IWD4 GANG_FLAT 30 SET_ZONE_GANG_STRENGTH IWD5 GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS1a GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS1b GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS2 GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS3a GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS3b GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS4 GANG_FLAT 30 flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN get_back_in_the_car: CLEAR_MISSION_AUDIO 2 IF get_in_counter_swee1 = 0 LOAD_MISSION_AUDIO 2 SOUND_SWE1_BM //Get in, nigga! ENDIF IF get_in_counter_swee1 = 1 LOAD_MISSION_AUDIO 2 SOUND_SWEX_BS //CJ, for once, don't be a punk! ENDIF IF get_in_counter_swee1 = 2 LOAD_MISSION_AUDIO 2 SOUND_SWEX_BP //Don't be a buster, CJ! ENDIF IF get_in_counter_swee1 = 3 LOAD_MISSION_AUDIO 2 SOUND_SWE1_BG // CJ, GET IN! ENDIF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer CLEAR_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CHAR_DEAD sweet //PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! //GOTO mission_sweet1_failed RETURN ENDIF IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_SPRAYCAN //PRINT_NOW (SWE1SPF) 10000 1 //~r~You need a spraycan! //GOTO mission_sweet1_failed RETURN ENDIF IF IS_CAR_DEAD sweet_car //PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! //GOTO mission_sweet1_failed RETURN ENDIF ENDWHILE PLAY_MISSION_AUDIO 2 IF get_in_counter_swee1 = 0 PRINT_NOW ( SWE1_BM ) 3000 1 //Get in, nigga! ENDIF IF get_in_counter_swee1 = 1 PRINT_NOW ( SWEX_BS ) 3000 1 // CJ, for once, don't be a punk! ENDIF IF get_in_counter_swee1 = 2 PRINT_NOW ( SWEX_BP ) 3000 1 //Don't be a buster, CJ! ENDIF IF get_in_counter_swee1 = 3 PRINT_NOW ( SWE1_BG ) 3000 1 // CJ, GET IN! ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CHAR_DEAD sweet //PRINT_NOW (SWE1_P) 10000 1 //~r~Sweet is dead! //GOTO mission_sweet1_failed RETURN ENDIF IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_SPRAYCAN //PRINT_NOW (SWE1SPF) 10000 1 //~r~You need a spraycan! //GOTO mission_sweet1_failed RETURN ENDIF IF IS_CAR_DEAD sweet_car //PRINT_NOW (SWE1_Q) 10000 1 //~r~You destroyed Sweets ride! //GOTO mission_sweet1_failed RETURN ENDIF ENDWHILE get_in_counter_swee1 ++ IF get_in_counter_swee1 > 3 get_in_counter_swee1 = 0 ENDIF RETURN load_and_play_audio_sweet1: IF sweet1_audio_is_playing = 0 OR sweet1_audio_is_playing = 1 IF sweet1_index <= sweet1_cell_index_end IF TIMERA > 200 GOSUB play_sweet1_audio ENDIF ENDIF ENDIF IF sweet1_audio_is_playing = 2 IF HAS_MISSION_AUDIO_FINISHED 1 GOSUB stop_talking_sweet1 sweet1_audio_is_playing = 0 sweet1_index ++ sweet1_cutscene_flag = 0 CLEAR_PRINTS TIMERA = 0 ENDIF ENDIF RETURN play_sweet1_audio: IF sweet1_audio_is_playing = 0 LOAD_MISSION_AUDIO 1 sweet1_audio_chat[sweet1_index] sweet1_audio_is_playing = 1 ENDIF IF sweet1_audio_is_playing = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW ( $sweet1_chat[sweet1_index] ) 4000 1 //Let's head over to B-Dup's crib. PLAY_MISSION_AUDIO 1 GOSUB start_talking_sweet1 sweet1_audio_is_playing = 2 ENDIF ENDIF RETURN start_talking_sweet1: /* IF sweet1_audio_chat[sweet1_index] = SOUND_SWE1_SA OR sweet1_audio_chat[sweet1_index] = SOUND_SWE1_SB IF NOT IS_CHAR_DEAD crackhead1 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH crackhead1 TRUE START_CHAR_FACIAL_TALK crackhead1 3000 RETURN ENDIF ENDIF */ IF sweet1_audio_chat[sweet1_index] = SOUND_SWE1_AB OR sweet1_audio_chat[sweet1_index] = SOUND_SWE1_AE OR sweet1_audio_chat[sweet1_index] = SOUND_SWE1_BO OR sweet1_audio_chat[sweet1_index] = SOUND_SWE1_BQ OR sweet1_audio_chat[sweet1_index] = SOUND_SWE1_BX SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE START_CHAR_FACIAL_TALK scplayer 2000 ELSE IF NOT IS_CHAR_DEAD sweet SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet TRUE START_CHAR_FACIAL_TALK sweet 2000 ENDIF ENDIF RETURN stop_talking_sweet1: /* IF sweet1_audio_chat[sweet1_index] = SOUND_SWE1_SA OR sweet1_audio_chat[sweet1_index] = SOUND_SWE1_SB IF NOT IS_CHAR_DEAD crackhead1 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH crackhead1 FALSE STOP_CHAR_FACIAL_TALK crackhead1 RETURN ENDIF ENDIF */ IF sweet1_audio_chat[sweet1_index] = SOUND_SWE1_AB OR sweet1_audio_chat[sweet1_index] = SOUND_SWE1_AE OR sweet1_audio_chat[sweet1_index] = SOUND_SWE1_BO OR sweet1_audio_chat[sweet1_index] = SOUND_SWE1_BQ OR sweet1_audio_chat[sweet1_index] = SOUND_SWE1_BX SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer ELSE IF NOT IS_CHAR_DEAD sweet SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet FALSE STOP_CHAR_FACIAL_TALK sweet ENDIF ENDIF RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* SWEET 1 ******************************************* // ************************************** CLEAN ******************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME sweet1b // Mission start stuff GOSUB mission_start_sweet1b IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_sweet1b_failed ENDIF GOSUB mission_cleanup_sweet1b MISSION_END { // Variables for mission LVAR_INT crack_dealer crackhead1 crackhead2 crack_boss B_dups_blip ryders_blip seq_drug_buy1 crackhead1_attractor seq_drug_sell1 killed_all_crack_fucks LVAR_INT crackhead1_blip crack_boss_blip player_grove_gang ryder_group_spilt_blip drug_buyer1 crackhead5 crackboss_help flag_player_killed_crackhead1 LVAR_INT crackhead1_dead crack_boss_dead crackhead4 already_got_task_sweet1 already_got_task_sweet1_2 in_crack_locate sweet1b_index crackhead10 when_crack_bosses_attack LVAR_INT crackhead6 crackhead7 create_crack_den crackhead8 crackhead9 first_dealer_cut ReturnStatus sweet1a_crackboss skip_crack_cutscene special_death5 LVAR_INT special_death1 special_death2 special_death3 special_death4 crack_fucks crack_bitches smoker1_attack new_visible_area pickup_baseballbat LVAR_INT crack_ciggy1 crack_ciggy2 crack_ciggy3 whore_cower smoker2_attack seq_drug_run flag_sweet1_chat sweet1b_chat_switch crackhead7_blip crackhead8_blip LVAR_INT flag_kill_the_player sweet1b_cell_index_end sweet1b_cutscene_flag sweet1b_audio_chat[8] sweet1b_audio_is_playing flag_sweet1b played_wee_sample LVAR_INT played_up_help help_for_melee_combat dont_play_first_batch play_ryder_mission_audio dealers_head_is_missing get_in_counter_swee1b car_dont_delete_sweet1b LVAR_FLOAT Retured_anim_time car_dont_delete_s1b_x car_dont_delete_s1b_y car_dont_delete_s1b_z car_dont_delete_s1b_dist VAR_TEXT_LABEL $sweet1b_chat[8] // **************************************** Mission Start ********************************** sweet1b_chat_switch: SWITCH sweet1b_chat_switch CONST_INT SWEET1B_CHAT1 0 CONST_INT SWEET1B_CHAT2 1 CONST_INT SWEET1B_CHAT3 2 CONST_INT SWEET1B_CHAT4 3 CONST_INT SWEET1B_CHAT5 4 CONST_INT SWEET1B_CHAT6 5 CONST_INT SWEET1B_CHAT7 6 CONST_INT SWEET1B_CHAT8 7 CASE SWEET1B_CHAT1 $sweet1b_chat[0] = &SWE1_ZF //Let’s head over to B-Dup’s crib. $sweet1b_chat[1] = &SWE1_YA //The ‘hood’sall messed up, huh. $sweet1b_chat[2] = &SWE1_YB //Try getting any of these base heads to help you out. $sweet1b_chat[3] = &SWE1_YC //No wonder the Families are on the way out. $sweet1b_chat[4] = &SWE1_YD //Apart from Smoke, Sweet and yours truly, $sweet1b_chat[5] = &SWE1_YE //Grove Street don’t bang no more. $sweet1b_chat[6] = &SWE1_YF //They just get high… $sweet1b_chat[7] = &SWE1_YG //Word. sweet1b_audio_chat[0] = SOUND_SWE1_ZF //Let’s head over to B-Dup’s crib. sweet1b_audio_chat[1] = SOUND_SWE1_YA //The ‘hood’s all messed up, huh. sweet1b_audio_chat[2] = SOUND_SWE1_YB //Try getting any of these base heads to help you out. sweet1b_audio_chat[3] = SOUND_SWE1_YC //No wonder the Families are on the way out. sweet1b_audio_chat[4] = SOUND_SWE1_YD //Apart from Smoke, Sweet and yours truly, sweet1b_audio_chat[5] = SOUND_SWE1_YE //Grove Street don’t bang no more. sweet1b_audio_chat[6] = SOUND_SWE1_YF //They just get high… sweet1b_audio_chat[7] = SOUND_SWE1_YG //Word. sweet1b_cell_index_end = 7 BREAK CASE SWEET1B_CHAT2 $sweet1b_chat[0] = &SWE1_YM //Hey, I know this cat! $sweet1b_chat[1] = &SWE1_YN //He’s a punk used to run with a Front Yard Ballas OG from Idlewood. $sweet1b_chat[2] = &SWE1_YO //I know his place, it’s just across the tracks there. $sweet1b_chat[3] = &SWE1_YP //Let’s check it out! $sweet1b_chat[4] = &SWE1_YQ //Front Yard turf? $sweet1b_chat[5] = &SWE1_YR //You a buster? $sweet1b_chat[6] = &SWE1_YS //No, I’m down, homie! sweet1b_audio_chat[0] = SOUND_SWE1_YM //Hey, I know this cat! sweet1b_audio_chat[1] = SOUND_SWE1_YN //He’s a punk used to run with a Front Yard Ballas OG from Idlewood. sweet1b_audio_chat[2] = SOUND_SWE1_YO //I know his place, it’s just across the tracks there. sweet1b_audio_chat[3] = SOUND_SWE1_YP //Let’s check it out! sweet1b_audio_chat[4] = SOUND_SWE1_YQ //Front Yard turf? sweet1b_audio_chat[5] = SOUND_SWE1_YR //You a buster? sweet1b_audio_chat[6] = SOUND_SWE1_YS //No, I’m down, homie! sweet1b_cell_index_end = 6 BREAK CASE SWEET1B_CHAT3 $sweet1b_chat[0] = &SWE1_YX //Good afternoon, Ballas poison pushers! $sweet1b_chat[1] = &SWE1_YY //Grove Street OG’s come to bust yo’ faces! sweet1b_audio_chat[0] = SOUND_SWE1_YX //Good afternoon, Ballas poison pushers! sweet1b_audio_chat[1] = SOUND_SWE1_YY //Grove Street OG’s come to bust yo’ faces! sweet1b_cell_index_end = 1 BREAK CASE SWEET1B_CHAT4 $sweet1b_chat[0] = &SWE1_TA //Well now Ballas know Grove Street Families are on the way back up! $sweet1b_chat[1] = &SWE1_TB //Word, homie. And what’s more you didn’t run out on me! $sweet1b_chat[2] = &SWE1_TC //Times are changing! $sweet1b_chat[3] = &SWE1_TD //They gonna be mad... $sweet1b_chat[4] = &SWE1_TE //We’ll warn the gang later. $sweet1b_chat[5] = &SWE1_TF //For now, let’s just bask in the silence of victory, motherfucker! sweet1b_audio_chat[0] = SOUND_SWE1_TA //Well now Ballas know Grove Street Families are on the way back up! sweet1b_audio_chat[1] = SOUND_SWE1_TB //Word, homie. And what’s more you didn’t run out on me! sweet1b_audio_chat[2] = SOUND_SWE1_TC //Times are changing! sweet1b_audio_chat[3] = SOUND_SWE1_TD //They gonna be mad... sweet1b_audio_chat[4] = SOUND_SWE1_TE //We’ll warn the gang later. sweet1b_audio_chat[5] = SOUND_SWE1_TF //For now, let’s just bask in the silence of victory, motherfucker! sweet1b_cell_index_end = 5 BREAK CASE SWEET1B_CHAT5 $sweet1b_chat[0] = &SWE1_SA //Hey partner I'm working man, what you need? What you need, dog? $sweet1b_chat[1] = &SWE1_SB //Dog, I got quality shit right here. sweet1b_audio_chat[0] = SOUND_SWE1_SA //Hey partner I'm working man, what you need? What you need, dog? sweet1b_audio_chat[1] = SOUND_SWE1_SB //Dog, I got quality shit right here. sweet1b_cell_index_end = 1 BREAK CASE SWEET1B_CHAT6 $sweet1b_chat[0] = &SWE1_YT //Man, we on a serious mission now. $sweet1b_chat[1] = &SWE1_YU //Man, don’t sweat it, homie – everybody in the hood knows Ballas are pussies. sweet1b_audio_chat[0] = SOUND_SWE1_YT //Man, we on a serious mission now. sweet1b_audio_chat[1] = SOUND_SWE1_YU //Man, don’t sweat it, homie – everybody in the hood knows Ballas are pussies. sweet1b_cell_index_end = 1 BREAK CASE SWEET1B_CHAT7 $sweet1b_chat[0] = &SWE1_YV //Oo-ee! Man, you can smell a crack den a mile away! $sweet1b_chat[1] = &SWE1_YW //Yeah, let’s shoot through and introduce ourselves. sweet1b_audio_chat[0] = SOUND_SWE1_YV //Oo-ee! Man, you can smell a crack den a mile away! sweet1b_audio_chat[1] = SOUND_SWE1_YW //Yeah, let’s shoot through and introduce ourselves. sweet1b_cell_index_end = 1 BREAK CASE SWEET1B_CHAT8 $sweet1b_chat[0] = &SWE1_UA //Now that the base ain’t being pushed up in their faces… $sweet1b_chat[1] = &SWE1_UB //Maybe these fools should be up for some real bangin’! $sweet1b_chat[2] = &SWE1_UC //Yeah, Grove gone get back on its feet now for sure though. $sweet1b_chat[3] = &SWE1_UD //Later Homie sweet1b_audio_chat[0] = SOUND_SWE1_UA //Now that the base ain’t being pushed up in their faces… sweet1b_audio_chat[1] = SOUND_SWE1_UB //Maybe these fools should be up for some real bangin’! sweet1b_audio_chat[2] = SOUND_SWE1_UC //Yeah, Grove gone get back on its feet now for sure though. sweet1b_audio_chat[3] = SOUND_INT2_ND //Later Homie sweet1b_cell_index_end = 3 BREAK ENDSWITCH RETURN mission_start_sweet1b: REGISTER_MISSION_GIVEN already_got_task_sweet1 = 0 ryder_group_spilt_blip = 0 flag_player_on_mission = 1 create_crack_den = 0 crackhead1_dead = 0 in_crack_locate = 0 special_death1 = 0 special_death2 = 0 special_death3 = 0 special_death4 = 0 smoker1_attack = 0 smoker2_attack = 0 crackboss_help = 0 killed_all_crack_fucks = 0 whore_cower = 0 flag_sweet1_chat = 0 flag_sweet1b = 0 first_dealer_cut = 0 skip_crack_cutscene = 0 flag_player_killed_crackhead1 = 0 help_for_melee_combat = 0 played_wee_sample = 0 when_crack_bosses_attack = 0 SWITCH_ROADS_OFF 2272.9219 -1649.5563 14.3311 2266.1013 -1633.2192 14.3505 SWITCH_PED_ROADS_OFF 324.1973 1116.7579 1082.8981 313.1226 1124.1968 1082.8981 WAIT 0 LOAD_MISSION_TEXT SWEET1B // ****************************************START OF CUTSCENE******************************** // fades the screen in SET_AREA_VISIBLE 1 LOAD_CUTSCENE SWEET1B WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 // ****************************************END OF CUTSCENE********************************** REQUEST_MODEL BAT REQUEST_MODEL GREENWOO LOAD_SPECIAL_CHARACTER 1 RYDER2 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY crack_fucks LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED BAT OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_MODEL_LOADED GREENWOO WAIT 0 ENDWHILE ENABLE_AMBIENT_CRIME FALSE CLEAR_AREA 2516.3916 -1676.5172 13.0041 5.0 TRUE CLEAR_AREA 2508.7424 -1671.1321 12.3818 5.0 TRUE CLEAR_AREA 2516.95 -1675.23 13.05 2.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 2516.3916 -1676.5172 13.0041 ryder SET_CHAR_HEADING ryder 45.7 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_PLAYER1 PEDTYPE_MISSION1 GIVE_WEAPON_TO_CHAR ryder WEAPONTYPE_BASEBALLBAT 3000 SET_CURRENT_CHAR_WEAPON ryder WEAPONTYPE_BASEBALLBAT SET_CHAR_DECISION_MAKER ryder crack_fucks SET_CHAR_ONLY_DAMAGED_BY_PLAYER ryder TRUE //SET_CHAR_AS_PLAYER_FRIEND ryder SET_ANIM_GROUP_FOR_CHAR ryder gang1 SET_CHAR_MAX_HEALTH ryder 500 SET_CHAR_HEALTH ryder 500 SET_CHAR_NEVER_TARGETTED ryder TRUE SET_CHAR_SUFFERS_CRITICAL_HITS ryder TRUE ADD_BLIP_FOR_CHAR ryder ryders_blip SET_BLIP_AS_FRIENDLY ryders_blip TRUE REMOVE_BLIP ryders_blip SET_CHAR_COORDINATES scplayer 2516.95 -1675.23 13.05 SET_CHAR_HEADING scplayer 56.0 LOAD_SCENE 2509.81 -1670.89 12.39 GET_PLAYER_GROUP Player1 Players_Group SET_GROUP_MEMBER Players_Group ryder SET_PLAYER_GROUP_RECRUITMENT player1 FALSE LISTEN_TO_PLAYER_GROUP_COMMANDS ryder FALSE SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS Player1 TRUE ENABLE_ENTRY_EXIT_PLAYER_GROUP_WARPING 2165.72 -1673.14 10.0 TRUE ENABLE_ENTRY_EXIT_PLAYER_GROUP_WARPING 319.56 1117.64 10.0 TRUE MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_CHAR_SIGNAL_AFTER_KILL ryder FALSE //GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_BASEBALLBAT 3000 //SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_BASEBALLBAT //CREATE_PICKUP_WITH_AMMO ModelName PickUpType 3000 X Y Z PickupID //SWITCH_ENTRY_EXIT xref FALSE //SWITCH_ENTRY_EXIT crackhouse TRUE PRINT_NOW ( SW1B_A ) 10000 1 // Go get B Dup to help clean up the crack dealers. SWITCH_CAR_GENERATOR gen_car7 0 CLEAR_AREA 2508.16 -1666.47 12.3983 6.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR GREENWOO &GROVE4L_ CREATE_CAR GREENWOO 2508.16 -1666.47 12.3983 sweet_car CHANGE_CAR_COLOUR sweet_car 59 34 SET_CAR_HEADING sweet_car 16.0 SET_RADIO_CHANNEL RS_MODERN_HIP_HOP MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO SET_PLAYER_CONTROL player1 ON DO_FADE 1200 FADE_IN //GOTO SKIP_BDUPS ADD_BLIP_FOR_COORD 2301.07 -1754.40 12.54 B_dups_blip SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT blob_flag = 1 TIMERA = 0 SWITCH_ENTRY_EXIT lacrak FALSE sweet1b_index = 0 sweet1b_audio_is_playing = 0 sweet1b_cutscene_flag = 0 sweet1b_chat_switch = SWEET1B_CHAT1 GOSUB sweet1b_chat_switch CLEAR_AREA 2301.07 -1754.40 12.54 20.0 TRUE WHILE NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2301.07 -1754.40 12.54 4.0 4.0 4.0 blob_flag //B_dups OR NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D ryder scplayer 30.0 30.0 8.0 FALSE WAIT 0 IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_sweet1b_passed ENDIF IF new_visible_area = 0 IF NOT IS_CHAR_DEAD ryder IF LOCATE_CHAR_ANY_MEANS_CHAR_3D ryder scplayer 10.0 10.0 8.0 FALSE IF IS_CHAR_ON_FOOT scplayer AND IS_CHAR_ON_FOOT ryder GOSUB load_and_play_audio_sweet1b ENDIF IF NOT IS_CHAR_DEAD ryder IF IS_CHAR_IN_ANY_CAR scplayer AND IS_CHAR_IN_ANY_CAR ryder GOSUB load_and_play_audio_sweet1b ENDIF ENDIF ENDIF ENDIF ENDIF IF played_up_help = 0 IF TIMERA > 5000 PRINT_HELP CALLRYD // When on foot tap ~m~~widget_gang_follow~ to call Ryder back to your side if he gets too involved in a fight. played_up_help = 1 ENDIF ENDIF GOSUB ryders_group_break IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF ENDWHILE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF CLEAR_PRINTS SET_FIXED_CAMERA_POSITION 2301.9182 -1746.5054 14.0090 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2301.8096 -1747.4987 14.0471 JUMP_CUT IF NOT IS_CHAR_DEAD ryder IF IS_CHAR_IN_ANY_CAR ryder TASK_LEAVE_ANY_CAR ryder ELSE TASK_GO_STRAIGHT_TO_COORD ryder 2298.57 -1775.44 12.56 PEDMOVE_WALK 2500 ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WAIT 800 TASK_LEAVE_ANY_CAR scplayer ELSE TASK_GO_STRAIGHT_TO_COORD scplayer 2298.57 -1775.44 12.56 PEDMOVE_WALK 2500 ENDIF MARK_CAR_AS_NO_LONGER_NEEDED sweet_car // ****************************************START OF CUTSCENE******************************** DO_FADE 1700 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 3 MAKE_PLAYER_SAFE_FOR_CUTSCENE Player1 //SWITCH_STREAMING OFF LOAD_CUTSCENE SWEET1C WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 //SKIP_BDUPS: // ****************************************END OF CUTSCENE********************************** REQUEST_MODEL BMYDRUG REQUEST_MODEL FAM3 REQUEST_ANIMATION DEALER REQUEST_ANIMATION GANGS LOAD_MISSION_AUDIO 1 SOUND_SWE1_YH //Let’s just cruise through the hood and find us somebody selling. LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED BMYDRUG OR NOT HAS_MODEL_LOADED FAM3 OR NOT HAS_ANIMATION_LOADED DEALER OR NOT HAS_ANIMATION_LOADED GANGS WAIT 0 ENDWHILE REMOVE_BLIP B_dups_blip CREATE_CHAR PEDTYPE_MISSION2 fam3 2283.6565 -1645.5992 14.1598 drug_buyer1 SET_CHAR_DECISION_MAKER drug_buyer1 crack_fucks CREATE_CHAR PEDTYPE_MISSION2 bmydrug 2284.9465 -1645.3959 14.1413 crackhead1 SET_CHAR_MAX_HEALTH crackhead1 120 SET_CHAR_HEALTH crackhead1 120 SET_CHAR_HEADING crackhead1 114.0 ADD_BLIP_FOR_CHAR crackhead1 crackhead1_blip SET_CHAR_DECISION_MAKER crackhead1 crack_fucks SET_CHAR_SHOOT_RATE crackhead1 75 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH crackhead1 TRUE TASK_TURN_CHAR_TO_FACE_CHAR crackhead1 drug_buyer1 TASK_TURN_CHAR_TO_FACE_CHAR drug_buyer1 crackhead1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION crackhead1 TRUE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION drug_buyer1 TRUE SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT SET_CHAR_COORDINATES scplayer 2300.13 -1763.18 12.63 SET_CHAR_HEADING scplayer 0.0 IF NOT IS_CHAR_DEAD ryder SET_CHAR_COORDINATES ryder 2298.15 -1762.67 12.56 SET_CHAR_HEADING ryder 355.37 ENDIF LOAD_SCENE 2300.13 -1763.18 12.63 OPEN_SEQUENCE_TASK seq_drug_run //DRUG BUYER SEQUENCE TASK_GO_STRAIGHT_TO_COORD -1 2281.1160 -1647.5273 14.2174 PEDMOVE_RUN 10000 TASK_GO_STRAIGHT_TO_COORD -1 2281.1331 -1650.7090 14.1714 PEDMOVE_RUN 10000 TASK_GO_STRAIGHT_TO_COORD -1 2238.0911 -1661.7275 14.4690 PEDMOVE_RUN 10000 TASK_WANDER_STANDARD -1 CLOSE_SEQUENCE_TASK seq_drug_run OPEN_SEQUENCE_TASK seq_drug_sell1 //DRUG DEALER SEQUENCE //TASK_PLAY_ANIM -1 DEALER_IDLE GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 DEALER_IDLE DEALER 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 DEALER_DEAL GANGS 4.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT seq_drug_sell1 1 CLOSE_SEQUENCE_TASK seq_drug_sell1 OPEN_SEQUENCE_TASK seq_drug_buy1 //DRUG BUYER SEQUENCE TASK_LOOK_AT_CHAR -1 crackhead1 3000 TASK_LOOK_ABOUT -1 2000 //TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 SHOP_PAY DEALER 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 DRUGS_BUY GANGS 4.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT seq_drug_buy1 1 CLOSE_SEQUENCE_TASK seq_drug_buy1 flag_sweet1b = 1 DO_FADE 1000 FADE_IN WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SWE1_YH ) 3000 1 //Let’s just cruise through the hood and find us somebody selling. WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF ENDWHILE PRINT_NOW ( SW1B_B ) 10000 1 // Go beat up the crack dealers. CHECKPOINT_SAVE 1 // 3MASTER - this has to be loaded after a restart LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH crack_dealer LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_WEAK crack_bitches // Dealer on the street**************************************************************************************************** WHILE NOT IS_CHAR_DEAD crackhead1 OR NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2284.9465 -1645.3959 14.1413 50.0 50.0 8.0 FALSE WAIT 0 IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF IF played_up_help = 0 IF TIMERA > 2000 PRINT_HELP CALLRYD // When on foot tap ~m~~widget_gang_follow~ to call Ryder back to your side if he gets too involved in a fight. played_up_help = 1 ENDIF ENDIF IF crackhead1_dead = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2284.9465 -1645.3959 14.1413 50.0 50.0 8.0 FALSE IF NOT IS_CHAR_DEAD drug_buyer1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION drug_buyer1 FALSE ENDIF IF NOT IS_CHAR_DEAD crackhead1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION crackhead1 FALSE IF NOT IS_CHAR_DEAD drug_buyer1 PERFORM_SEQUENCE_TASK crackhead1 seq_drug_sell1 CLEAR_SEQUENCE_TASK seq_drug_sell1 PERFORM_SEQUENCE_TASK drug_buyer1 seq_drug_buy1 CLEAR_SEQUENCE_TASK seq_drug_buy1 ENDIF ENDIF crackhead1_dead = 1 ENDIF ELSE IF NOT IS_CHAR_DEAD crackhead1 IF crackhead1_dead = 1 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D crackhead1 scplayer 6.0 6.0 8.0 FALSE CLEAR_CHAR_TASKS crackhead1 TASK_LOOK_AT_CHAR crackhead1 scplayer 3000 TASK_TURN_CHAR_TO_FACE_CHAR crackhead1 scplayer SET_CHAR_DECISION_MAKER crackhead1 crack_dealer TASK_PLAY_ANIM crackhead1 DEALER_IDLE DEALER 4.0 TRUE FALSE FALSE FALSE -1 IF flag_player_killed_crackhead1 = 0 IF NOT IS_CHAR_DEAD drug_buyer1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION drug_buyer1 FALSE CLEAR_CHAR_TASKS_IMMEDIATELY drug_buyer1 PERFORM_SEQUENCE_TASK drug_buyer1 seq_drug_run CLEAR_SEQUENCE_TASK seq_drug_run SET_CHAR_DECISION_MAKER drug_buyer1 crack_fucks flag_player_killed_crackhead1 = 1 ENDIF ENDIF sweet1b_index = 0 sweet1b_audio_is_playing = 0 sweet1b_cutscene_flag = 0 sweet1b_chat_switch = SWEET1B_CHAT5 GOSUB sweet1b_chat_switch TIMERA = 0 crackhead1_dead = 2 ENDIF ENDIF ENDIF ENDIF IF crackhead1_dead = 2 IF help_for_melee_combat = 0 IF TIMERA > 2000 IF NOT IS_CHAR_IN_ANY_CAR scplayer PRINT_HELP_FOREVER_CONDITIONAL MEL_HLP 256 // Tap ~m~~widget_explicit_punch~ to perform a melee attack. (256 is CONDITION_FLAG_ATTACK) help_for_melee_combat = 1 ENDIF ENDIF ENDIF IF help_for_melee_combat = 1 IF TIMERA > 8000 IF NOT IS_CHAR_IN_ANY_CAR scplayer // Special attacks are automatic in mobile. //PRINT_HELP ( MELHLP2 ) // Press ~m~~widget_attack~ for a melee attack. help_for_melee_combat = 2 ENDIF ENDIF ENDIF ENDIF IF flag_player_killed_crackhead1 = 0 IF IS_CHAR_DEAD crackhead1 IF NOT IS_CHAR_DEAD drug_buyer1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION drug_buyer1 FALSE CLEAR_CHAR_TASKS_IMMEDIATELY drug_buyer1 PERFORM_SEQUENCE_TASK drug_buyer1 seq_drug_run CLEAR_SEQUENCE_TASK seq_drug_run SET_CHAR_DECISION_MAKER drug_buyer1 crack_fucks flag_player_killed_crackhead1 = 1 ENDIF ELSE IF NOT IS_CHAR_DEAD drug_buyer1 IF NOT IS_CHAR_HEALTH_GREATER crackhead1 119 OR NOT IS_CHAR_HEALTH_GREATER drug_buyer1 99 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION drug_buyer1 FALSE CLEAR_CHAR_TASKS_IMMEDIATELY drug_buyer1 PERFORM_SEQUENCE_TASK drug_buyer1 seq_drug_run CLEAR_SEQUENCE_TASK seq_drug_run SET_CHAR_DECISION_MAKER drug_buyer1 crack_fucks IF NOT IS_CHAR_DEAD crackhead1 TASK_PLAY_ANIM crackhead1 DEALER_IDLE DEALER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF flag_player_killed_crackhead1 = 1 ENDIF ELSE IF NOT IS_CHAR_DEAD crackhead1 TASK_PLAY_ANIM crackhead1 XPRESSscratch PED 4.0 FALSE FALSE FALSE FALSE -1 flag_player_killed_crackhead1 = 1 ENDIF ENDIF ENDIF ENDIF IF flag_kill_the_player = 0 IF NOT IS_CHAR_DEAD crackhead1 IF IS_CHAR_HEALTH_GREATER crackhead1 119 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D crackhead1 scplayer 6.0 6.0 8.0 FALSE GOSUB load_and_play_audio_sweet1b ENDIF ELSE GIVE_WEAPON_TO_CHAR crackhead1 WEAPONTYPE_BASEBALLBAT 3000 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD crackhead1 FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH crackhead1 FALSE CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS CLEAR_CHAR_TASKS crackhead1 TASK_KILL_CHAR_ON_FOOT crackhead1 scplayer flag_kill_the_player = 1 ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 flag_kill_the_player = 1 ENDIF ENDIF IF first_dealer_cut = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2284.9465 -1645.3959 14.1413 20.0 15.0 5.0 FALSE LOAD_MISSION_AUDIO 1 SOUND_SWE1_YK SET_PLAYER_CONTROL player1 OFF WAIT 1000 SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 2283.0186 -1649.4722 15.0999 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2283.3262 -1648.5249 15.1884 JUMP_CUT IF NOT IS_CHAR_DEAD ryder IF LOCATE_CHAR_ANY_MEANS_CHAR_3D ryder scplayer 10.0 10.0 8.0 FALSE WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW SWE1_YK 5000 1 //Yo, check it. Pusher dealing to Grove Street boys! WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF ENDWHILE ELSE WAIT 2000 ENDIF ENDIF WAIT 1000 IF IS_CHAR_IN_ANY_CAR scplayer TASK_LEAVE_ANY_CAR scplayer ENDIF CLEAR_PRINTS SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT first_dealer_cut = 1 ENDIF ENDIF GOSUB ryders_group_break IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF ENDWHILE MARK_MODEL_AS_NO_LONGER_NEEDED fam3 TIMERA = 0 REMOVE_BLIP crackhead1_blip WHILE NOT TIMERA > 2000 OR NOT new_visible_area = 0 WAIT 0 IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF ENDWHILE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 DELETE_CHAR drug_buyer1 MARK_MODEL_AS_NO_LONGER_NEEDED BMYDRUG REMOVE_ANIMATION DEALER LOAD_SCENE 2283.0 -1644.4 14.2 CLEAR_AREA 2285.17 -1644.74 14.08 4.0 TRUE CLEAR_AREA_OF_CARS 2288.28 -1648.13 14.00 2274.92 -1641.33 14.31 //CLEAR_AREA_OF_CHARS 2288.28 -1648.13 14.00 2274.92 -1641.33 14.31 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON GET_CAR_CHAR_IS_USING scplayer car_dont_delete_sweet1b IF NOT IS_CAR_DEAD car_dont_delete_sweet1b GET_CAR_COORDINATES car_dont_delete_sweet1b car_dont_delete_s1b_x car_dont_delete_s1b_y car_dont_delete_s1b_z GET_DISTANCE_BETWEEN_COORDS_3D 2284.4619 -1645.9248 14.1362 car_dont_delete_s1b_x car_dont_delete_s1b_y car_dont_delete_s1b_z car_dont_delete_s1b_dist IF car_dont_delete_s1b_dist < 5.0 SET_CAR_COORDINATES car_dont_delete_sweet1b 2284.0 -1656.0 15.0 ENDIF ENDIF IF NOT IS_CHAR_DEAD ryder SET_CHAR_AREA_VISIBLE ryder 0 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE ryder TRUE REMOVE_CHAR_FROM_GROUP ryder CLEAR_CHAR_TASKS_IMMEDIATELY ryder CLEAR_LOOK_AT ryder ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_LOOK_AT scplayer SET_CHAR_AREA_VISIBLE scplayer 0 //SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE WAIT 1000 //CAMERA_PERSIST_FOV TRUE //SET_CINEMA_CAMERA TRUE //2281.7380 -1652.0873 14.1714 CLEAR_AREA 2285.17 -1644.74 14.08 5.0 TRUE IF NOT IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_COORDINATES scplayer 2284.4619 -1645.9248 14.1362 ELSE WARP_CHAR_FROM_CAR_TO_COORD scplayer 2284.4619 -1645.9248 14.1362 ENDIF SET_CHAR_HEADING scplayer 333.0 IF NOT IS_CHAR_DEAD ryder IF NOT IS_CHAR_IN_ANY_CAR ryder SET_CHAR_COORDINATES ryder 2283.27 -1645.8 14.15 ELSE WARP_CHAR_FROM_CAR_TO_COORD ryder 2283.27 -1645.8 14.15 ENDIF SET_CHAR_HEADING ryder 310.0 ENDIF dealers_head_is_missing = 0 IF DOES_CHAR_EXIST crackhead1 IF IS_CHAR_HEAD_MISSING crackhead1 dealers_head_is_missing = 1 ENDIF ENDIF SET_FIXED_CAMERA_POSITION 2285.1775 -1644.7482 14.0885 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2284.6350 -1645.2657 14.7501 JUMP_CUT IF dealers_head_is_missing = 0 //CAMERA_SET_SHAKE_SIMULATION_SIMPLE 5 30000.0 15.0 SET_PLAYER_DRUNKENNESS Player1 100 ENDIF sweet1b_index = 0 sweet1b_audio_is_playing = 0 sweet1b_cutscene_flag = 0 sweet1b_chat_switch = SWEET1B_CHAT2 GOSUB sweet1b_chat_switch WAIT 200 CLEAR_LOOK_AT scplayer TASK_LOOK_AT_COORD scplayer 2285.1 -1644.7 14.0 21000 IF NOT IS_CHAR_DEAD ryder CLEAR_LOOK_AT ryder TASK_LOOK_AT_COORD ryder 2285.1 -1644.7 14.0 21000 ENDIF DELETE_CHAR crackhead1 IF NOT IS_CHAR_DEAD ryder IF NOT LOCATE_CHAR_ON_FOOT_3D ryder 2283.27 -1645.8 14.15 0.5 0.5 2.0 FALSE IF NOT IS_CHAR_IN_ANY_CAR ryder SET_CHAR_COORDINATES ryder 2283.27 -1645.8 14.15 ELSE WARP_CHAR_FROM_CAR_TO_COORD ryder 2283.27 -1645.8 14.15 ENDIF SET_CHAR_HEADING ryder 310.0 ENDIF ENDIF WAIT 200 DO_FADE 500 FADE_IN WAIT 700 IF NOT IS_CHAR_DEAD ryder IF NOT LOCATE_CHAR_ON_FOOT_3D ryder 2283.27 -1645.8 14.15 0.5 0.5 2.0 FALSE IF NOT IS_CHAR_IN_ANY_CAR ryder SET_CHAR_COORDINATES ryder 2283.27 -1645.8 14.15 ELSE WARP_CHAR_FROM_CAR_TO_COORD ryder 2283.27 -1645.8 14.15 ENDIF SET_CHAR_HEADING ryder 310.0 ENDIF ENDIF CLEAR_PRINTS CLEAR_HELP //CLEAR_WANTED_LEVEL Player1 IF dealers_head_is_missing = 0 //CAMERA_RESET_NEW_SCRIPTABLES //CAMERA_SET_SHAKE_SIMULATION_SIMPLE 5 30000.0 20.0 ENDIF SKIP_CUTSCENE_START sweet1b_cutscene_flag = 0 WHILE sweet1b_index = 0 //PRINT_NOW ( SW1B_S ) 3000 1 //Hey, I know this cat! WAIT 0 GOSUB load_and_play_audio_sweet1b IF sweet1b_cutscene_flag = 0 IF sweet1b_audio_is_playing = 2 IF NOT IS_CHAR_DEAD ryder TASK_PLAY_ANIM ryder IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE 6000 sweet1b_cutscene_flag = 1 ENDIF ENDIF ENDIF ENDWHILE sweet1b_cutscene_flag = 0 WHILE sweet1b_index = 1 //He's a punk used to run with a Front Yard Ballas OG from Idlewood. WAIT 0 GOSUB load_and_play_audio_sweet1b ENDWHILE sweet1b_cutscene_flag = 0 WHILE sweet1b_index = 2 //I know his place, it's just across the tracks there. WAIT 0 GOSUB load_and_play_audio_sweet1b IF sweet1b_cutscene_flag = 0 IF sweet1b_audio_is_playing = 2 IF NOT IS_CHAR_DEAD ryder CLEAR_LOOK_AT ryder TASK_LOOK_AT_CHAR ryder scplayer 9000 sweet1b_cutscene_flag = 1 ENDIF ENDIF ENDIF ENDWHILE IF dealers_head_is_missing = 0 //CAMERA_RESET_NEW_SCRIPTABLES //CAMERA_SET_SHAKE_SIMULATION_SIMPLE 5 30000.0 10.0 ENDIF sweet1b_cutscene_flag = 0 WHILE sweet1b_index = 3 //Let's check it out! WAIT 0 GOSUB load_and_play_audio_sweet1b ENDWHILE sweet1b_cutscene_flag = 0 WHILE sweet1b_index = 4 //Front Yard turf? WAIT 0 GOSUB load_and_play_audio_sweet1b IF sweet1b_cutscene_flag = 0 IF sweet1b_audio_is_playing = 2 //TASK_PLAY_ANIM scplayer prtial_gngtlkB GANGS 4.0 FALSE FALSE FALSE FALSE -1 IF NOT IS_CHAR_DEAD ryder CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer ryder 5000 sweet1b_cutscene_flag = 1 ENDIF ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD ryder CLEAR_LOOK_AT ryder TASK_LOOK_AT_CHAR ryder scplayer 5000 ENDIF sweet1b_cutscene_flag = 0 WHILE sweet1b_index = 5 //You a buster? WAIT 0 GOSUB load_and_play_audio_sweet1b IF sweet1b_cutscene_flag = 0 IF sweet1b_audio_is_playing = 2 IF NOT IS_CHAR_DEAD ryder TASK_PLAY_ANIM ryder prtial_gngtlkH GANGS 4.0 FALSE FALSE FALSE FALSE -1 sweet1b_cutscene_flag = 1 ENDIF ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD ryder TASK_PLAY_ANIM ryder idle_stance PED 4.0 FALSE FALSE FALSE FALSE -1 ENDIF CLEAR_LOOK_AT scplayer TASK_LOOK_AT_COORD scplayer 2285.1 -1644.7 14.0 20000 sweet1b_cutscene_flag = 0 WHILE sweet1b_index = 6 //No, I'm down, homie! WAIT 0 GOSUB load_and_play_audio_sweet1b IF sweet1b_cutscene_flag = 0 IF sweet1b_audio_is_playing = 2 IF NOT IS_CHAR_DEAD ryder CLEAR_LOOK_AT ryder TASK_LOOK_AT_COORD ryder 2285.1 -1644.7 14.0 20000 sweet1b_cutscene_flag = 1 ENDIF ENDIF ENDIF ENDWHILE CLEAR_CHAR_TASKS scplayer TASK_PLAY_ANIM scplayer FightA_G PED 4.0 FALSE FALSE FALSE FALSE -1 WHILE Retured_anim_time < 0.351 WAIT 0 IF IS_CHAR_PLAYING_ANIM scplayer FightA_G GET_CHAR_ANIM_CURRENT_TIME scplayer FightA_G Retured_anim_time ENDIF ENDWHILE REPORT_MISSION_AUDIO_EVENT_AT_POSITION 2285.1775 -1644.7482 14.0885 SOUND_STAMP_PED SKIP_CUTSCENE_END CLEAR_CHAR_TASKS scplayer CLEAR_PRINTS SET_MUSIC_DOES_FADE FALSE DO_FADE 0 FADE_OUT HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE IF NOT IS_CHAR_DEAD ryder HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE ryder FALSE ENDIF WAIT 1000 IF NOT IS_CHAR_DEAD ryder CLEAR_LOOK_AT ryder ENDIF CLEAR_LOOK_AT scplayer REMOVE_ANIMATION GANGS REMOVE_BLIP B_dups_blip ADD_BLIP_FOR_COORD 2171.7815 -1676.7803 14.0859 B_dups_blip //CRACK HOUSE flag_sweet1b = 2 IF NOT IS_CHAR_DEAD ryder REMOVE_CHAR_FROM_GROUP ryder GET_PLAYER_GROUP Player1 Players_Group SET_GROUP_MEMBER Players_Group ryder SET_PLAYER_GROUP_RECRUITMENT player1 FALSE LISTEN_TO_PLAYER_GROUP_COMMANDS ryder FALSE ryder_group_spilt_blip = 1 ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CAMERA_RESET_NEW_SCRIPTABLES SET_PLAYER_DRUNKENNESS Player1 0 SET_CHAR_HEADING scplayer 152.2350 SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT CREATE_PICKUP bat PICKUP_ONCE 2285.7429 -1647.3091 14.0782 pickup_baseballbat SET_MUSIC_DOES_FADE TRUE DO_FADE 1000 FADE_IN CLEAR_PRINTS IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_BASEBALLBAT LOAD_MISSION_AUDIO 2 SOUND_SWE1_ZC //Hey! Grab hold of that bat over there! WAIT 500 WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF GOSUB ryders_group_break IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 2 PRINT_NOW ( SWE1_ZC ) 3000 1 //Hey! Grab hold of that bat over there! WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF //GOSUB ryders_group_break ENDWHILE ENDIF sweet1b_index = 0 sweet1b_audio_is_playing = 0 sweet1b_cutscene_flag = 0 sweet1b_chat_switch = SWEET1B_CHAT6 GOSUB sweet1b_chat_switch TIMERB = 0 TIMERA = 0 IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF PRINT_NOW ( SW1B_1 ) 10000 1 // ~s~Go to ~r~crack dealer~s~ CLEAR_AREA 2171.7815 -1676.7803 14.0859 8.0 TRUE WHILE NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2171.7815 -1676.7803 14.0859 3.5 3.5 4.0 blob_flag //Dealers house OR NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D ryder scplayer 30.0 30.0 8.0 FALSE WAIT 0 IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF IF TIMERB > 5000 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D ryder scplayer 10.0 10.0 8.0 FALSE IF IS_CHAR_ON_FOOT scplayer AND IS_CHAR_ON_FOOT ryder GOSUB load_and_play_audio_sweet1b ENDIF IF NOT IS_CHAR_DEAD ryder IF IS_CHAR_IN_ANY_CAR scplayer AND IS_CHAR_IN_ANY_CAR ryder GOSUB load_and_play_audio_sweet1b ENDIF ENDIF ENDIF ENDIF GOSUB ryders_group_break IF help_for_melee_combat = 0 IF TIMERA > 2000 IF NOT IS_CHAR_IN_ANY_CAR scplayer PRINT_HELP_FOREVER_CONDITIONAL MEL_HLP 256 // Tap ~m~~widget_explicit_punch~ to perform a melee attack. (256 is CONDITION_FLAG_ATTACK) help_for_melee_combat = 1 ENDIF ENDIF ENDIF IF help_for_melee_combat = 1 IF TIMERA > 8000 IF NOT IS_CHAR_IN_ANY_CAR scplayer // Special attacks are automatic in mobile. //PRINT_HELP ( MELHLP2 ) // Press ~m~~widget_attack~ for a melee attack. help_for_melee_combat = 2 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 sweet1b_index = 0 sweet1b_audio_is_playing = 0 sweet1b_cutscene_flag = 0 sweet1b_chat_switch = SWEET1B_CHAT7 GOSUB sweet1b_chat_switch SWITCH_WIDESCREEN ON //Short cut of sweet and player SWITCH_ENTRY_EXIT lacrak TRUE SET_PLAYER_CONTROL player1 OFF SET_FIXED_CAMERA_POSITION 2177.0715 -1682.0378 15.8487 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2176.3433 -1681.3542 15.8969 JUMP_CUT TIMERB = 0 WHILE NOT sweet1b_index = 1 WAIT 0 GOSUB load_and_play_audio_sweet1b ENDWHILE REMOVE_BLIP B_dups_blip ADD_BLIP_FOR_COORD 2169.72 -1673.14 13.01 B_dups_blip //CRACK HOUSE Door flag_sweet1b = 3 SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT Retured_anim_time = 0.0 TIMERB = 0 dont_play_first_batch = 0 // Dealer in crack house**************************************************************************************************** WHILE NOT killed_all_crack_fucks = 1 WAIT 0 GET_AREA_VISIBLE new_visible_area IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_sweet1b_passed ENDIF IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF GOSUB load_and_play_audio_sweet1b IF new_visible_area = 5 ACTIVATE_INTERIOR_PEDS FALSE IF LOCATE_CHAR_ANY_MEANS_3D scplayer 319.15 1120.89 1082.87 20.0 20.0 10.0 FALSE IF create_crack_den = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON CLEAR_AREA 319.15 1120.89 1082.87 100.0 TRUE REMOVE_BLIP ryders_blip DO_FADE 0 FADE_OUT REQUEST_MODEL BALLAS1 REQUEST_MODEL HFYPRO REQUEST_MODEL BFYPRO REQUEST_MODEL BMYDRUG REQUEST_MODEL cigar REQUEST_ANIMATION CRACK REQUEST_ANIMATION BLOWJOBZ REQUEST_ANIMATION BASEBALL LOAD_ALL_MODELS_NOW WHILE NOT HAS_ANIMATION_LOADED CRACK OR NOT HAS_ANIMATION_LOADED BLOWJOBZ OR NOT HAS_ANIMATION_LOADED BASEBALL WAIT 0 DO_FADE 0 FADE_OUT ENDWHILE WHILE NOT HAS_MODEL_LOADED BALLAS1 OR NOT HAS_MODEL_LOADED BFYPRO OR NOT HAS_MODEL_LOADED HFYPRO OR NOT HAS_MODEL_LOADED cigar OR NOT HAS_MODEL_LOADED BMYDRUG WAIT 0 DO_FADE 0 FADE_OUT ENDWHILE OPEN_SEQUENCE_TASK sweet1a_crackboss TASK_GO_STRAIGHT_TO_COORD -1 315.81 1122.30 1082.8 PEDMOVE_RUN 10000 TASK_PLAY_ANIM -1 Bbalbat_Idle_01 CRACK 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK sweet1a_crackboss SWITCH_ENTRY_EXIT lacrak FALSE CREATE_CHAR PEDTYPE_CIVFEMALE hfypro 309.77 1123.5 1082.87 crackhead6 //Crack whore SET_CHAR_AREA_VISIBLE crackhead6 5 SET_CHAR_HEADING crackhead6 107.12 TASK_PLAY_ANIM_NON_INTERRUPTABLE crackhead6 CRCKIDLE4 CRACK 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER crackhead6 crack_fucks CREATE_CHAR PEDTYPE_MISSION2 hfypro 317.5892 1124.7773 1082.8672 crackhead2 //wall near kitchen SET_CHAR_AREA_VISIBLE crackhead2 5 SET_CHAR_HEADING crackhead2 180.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE crackhead2 CRCKIDLE2 CRACK 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER crackhead2 crack_fucks CREATE_CHAR PEDTYPE_MISSION2 BALLAS1 325.0 1119.9750 1082.8750 crackhead4 //Long Sofa SET_CHAR_AREA_VISIBLE crackhead4 5 SET_CHAR_HEADING crackhead4 90.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE crackhead4 CRCKIDLE1 CRACK 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER crackhead4 crack_fucks CREATE_OBJECT cigar 2440.58 -1979.89 1082.2 crack_ciggy1 //SET_OBJECT_ROTATION crack_ciggy1 180.0 180.0 0.0 TASK_PICK_UP_OBJECT crackhead4 crack_ciggy1 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL -1 CREATE_CHAR PEDTYPE_MISSION2 BALLAS1 320.1898 1123.2921 1082.8750 crackhead5 //Sofa back wall SET_CHAR_AREA_VISIBLE crackhead5 5 SET_CHAR_HEADING crackhead5 177.9659 TASK_PLAY_ANIM_NON_INTERRUPTABLE crackhead5 CRCKIDLE3 CRACK 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER crackhead5 crack_fucks CREATE_OBJECT cigar 2440.58 -1979.89 1082.2 crack_ciggy2 TASK_PICK_UP_OBJECT crackhead5 crack_ciggy2 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL -1 //SET_OBJECT_HEADING crack_ciggy2 180.0 CREATE_CHAR PEDTYPE_MISSION2 BALLAS1 333.63 1124.51 1082.88 crackhead7 //kitchen smoker SET_CHAR_MAX_HEALTH crackhead7 70 SET_CHAR_HEALTH crackhead7 70 SET_CHAR_AREA_VISIBLE crackhead7 5 SET_CHAR_HEADING crackhead7 267.96 SET_CHAR_DECISION_MAKER crackhead7 crack_dealer SET_CHAR_RELATIONSHIP crackhead7 ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_PLAYER1 CREATE_OBJECT cigar 2440.58 -1979.89 1082.2 crack_ciggy3 TASK_PICK_UP_OBJECT crackhead7 crack_ciggy3 0.0 0.0 0.0 PED_HANDL HOLD_ORIENTATE_BONE_FULL NULL NULL -1 //SET_OBJECT_HEADING crack_ciggy3 90.0 ADD_BLIP_FOR_CHAR crackhead7 crackhead7_blip SET_BLIP_ENTRY_EXIT crackhead7_blip 2167.8354 -1672.9231 2.0 CREATE_CHAR PEDTYPE_MISSION2 BALLAS1 325.0 1129.2133 1082.8828 crackhead8 //BJ bloke SET_CHAR_AREA_VISIBLE crackhead8 5 SET_CHAR_HEADING crackhead8 90.0 TASK_PLAY_ANIM crackhead8 BJ_Couch_Loop_P BLOWJOBZ 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER crackhead8 crack_dealer SET_CHAR_RELATIONSHIP crackhead8 ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_PLAYER1 ADD_BLIP_FOR_CHAR crackhead8 crackhead8_blip SET_BLIP_ENTRY_EXIT crackhead8_blip 2167.8354 -1672.9231 2.0 CREATE_CHAR PEDTYPE_CIVFEMALE bfypro 324.0 1129.2 1082.8828 crackhead9 //BJ burd SET_CHAR_AREA_VISIBLE crackhead9 5 SET_CHAR_HEADING crackhead9 270.0 TASK_PLAY_ANIM crackhead9 BJ_Couch_Loop_W BLOWJOBZ 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER crackhead9 crack_fucks SET_CHAR_RELATIONSHIP crackhead9 ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_PLAYER1 CREATE_CHAR PEDTYPE_MISSION2 BALLAS1 333.4072 1124.4619 1082.8903 crackhead10 //kitchen SET_CHAR_AREA_VISIBLE crackhead10 5 SET_CHAR_HEADING crackhead10 83.6676 TASK_PLAY_ANIM_NON_INTERRUPTABLE crackhead10 CRCKIDLE3 CRACK 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER crackhead10 crack_fucks CREATE_OBJECT cigar 2440.58 -1979.89 1082.2 crack_ciggy2 TASK_PICK_UP_OBJECT crackhead10 crack_ciggy2 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL -1 //SET_OBJECT_HEADING crack_ciggy2 180.0 CREATE_CHAR PEDTYPE_MISSION2 bmydrug 306.03 1121.86 1082.87 crack_boss //BOSS SET_CHAR_AREA_VISIBLE crack_boss 5 SET_CHAR_SHOOT_RATE crack_boss 80 //SET_CHAR_HAS_USED_ENTRY_EXIT crack_boss 2169.72 -1673.14 20.0 SET_CHAR_MAX_HEALTH crack_boss 150 SET_CHAR_HEALTH crack_boss 150 SET_CHAR_HEADING crack_boss 263.66 GIVE_WEAPON_TO_CHAR crack_boss WEAPONTYPE_BASEBALLBAT 3000 SET_CHAR_DECISION_MAKER crack_boss crack_dealer SET_CHAR_RELATIONSHIP crack_boss ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_PLAYER1 //FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION crack_boss TRUE ADD_BLIP_FOR_CHAR crack_boss crack_boss_blip SET_BLIP_ENTRY_EXIT crack_boss_blip 2167.8354 -1672.9231 2.0 TIMERA = 0 LOAD_MISSION_AUDIO 1 SOUND_SWE1_YX LOAD_MISSION_AUDIO 2 SOUND_SWE1_YY WHILE NOT TIMERA > 1000 WAIT 0 DO_FADE 0 FADE_OUT ENDWHILE IF NOT IS_CHAR_DEAD ryder REMOVE_CHAR_FROM_GROUP ryder CLEAR_CHAR_TASKS_IMMEDIATELY ryder CLEAR_LOOK_AT ryder SET_CHAR_COORDINATES ryder 320.12 1118.20 1082.89 SET_CHAR_HEADING ryder 7.0 SET_CHAR_HAS_USED_ENTRY_EXIT ryder 2169.72 -1673.14 20.0 CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer ryder 6000 ENDIF SET_FIXED_CAMERA_POSITION 318.2970 1115.4377 1085.0538 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 318.7138 1116.3179 1084.8268 JUMP_CUT WAIT 300 DO_FADE 1000 FADE_IN IF NOT IS_CHAR_DEAD ryder TASK_GO_STRAIGHT_TO_COORD ryder 320.0 1122.3 1082.8 PEDMOVE_WALK 6000 ENDIF WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! SWITCH_ENTRY_EXIT lacrak TRUE GOTO mission_sweet1b_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SWE1_YX ) 10000 1 //Good afternoon, Ballas poison pushers! WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CHAR_DEAD ryder SWITCH_ENTRY_EXIT lacrak TRUE PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF ENDWHILE LOAD_MISSION_AUDIO 1 SOUND_BALLA_1 //Grove Street's going down! skip_crack_cutscene = 0 SKIP_CUTSCENE_START WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CHAR_DEAD ryder SWITCH_ENTRY_EXIT lacrak TRUE PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 2 PRINT_NOW ( SWE1_YY ) 10000 1 //Grove Street OG’s come to bust yo’ faces! WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CHAR_DEAD ryder SWITCH_ENTRY_EXIT lacrak TRUE PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF ENDWHILE LOAD_MISSION_AUDIO 2 SOUND_BALLA_2 //Fuck them Grove Street fools! IF NOT IS_CHAR_DEAD ryder WHILE NOT LOCATE_CHAR_ANY_MEANS_3D ryder 320.0 1122.3 1082.8 0.9 0.9 2.0 FALSE WAIT 0 IF IS_CHAR_DEAD ryder SWITCH_ENTRY_EXIT lacrak TRUE PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF ENDWHILE ENDIF IF NOT IS_CHAR_DEAD ryder IF NOT IS_CHAR_DEAD crackhead5 //TASK_KILL_CHAR_ON_FOOT ryder crackhead5 TASK_PLAY_ANIM ryder bat_4 BASEBALL 4.0 FALSE FALSE FALSE FALSE -1 TIMERA = 0 WHILE NOT TIMERA > 400 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD crackhead5 //REPORT_MISSION_AUDIO_EVENT_AT_CHAR crackhead5 SOUND_BASEBALL_BAT_HIT_PED REPORT_MISSION_AUDIO_EVENT_AT_POSITION 320.1898 1123.2921 1082.8750 SOUND_BASEBALL_BAT_HIT_PED TASK_DIE_NAMED_ANIM crackhead5 CRCKDETH3 CRACK 4.0 FALSE DROP_OBJECT crackhead5 FALSE ENDIF sweet1b_cutscene_flag = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD crackhead8 TASK_GO_STRAIGHT_TO_COORD crackhead8 323.80 1124.35 1082.89 PEDMOVE_WALK 10000 //BJ bloke IF NOT IS_CHAR_DEAD crackhead9 CLEAR_CHAR_TASKS crackhead9 SET_CHAR_COORDINATES crackhead9 325.3923 1131.8882 1082.8828 SET_CHAR_HEADING crackhead9 246.1470 TASK_PLAY_ANIM crackhead9 cower PED 4.0 TRUE FALSE FALSE FALSE -1 ENDIF ENDIF TIMERA = 0 WHILE NOT TIMERA > 700 WAIT 0 IF IS_CHAR_DEAD ryder SWITCH_ENTRY_EXIT lacrak TRUE PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF ENDWHILE IF NOT IS_CHAR_DEAD crack_boss //FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION crack_boss FALSE SET_CHAR_COORDINATES crack_boss 310.1843 1122.5980 1082.8903 SET_CHAR_HEADING crack_boss 270.0 REMOVE_BLIP B_dups_blip //REMOVE_BLIP crack_boss_blip PERFORM_SEQUENCE_TASK crack_boss sweet1a_crackboss ENDIF SET_FIXED_CAMERA_POSITION 319.2787 1121.3385 1083.1230 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 318.3951 1121.7733 1083.2970 JUMP_CUT CLEAR_LOOK_AT scplayer TIMERA = 0 WHILE NOT TIMERA > 2500 WAIT 0 IF IS_CHAR_DEAD ryder SWITCH_ENTRY_EXIT lacrak TRUE PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF ENDWHILE IF NOT IS_CHAR_DEAD crackhead7 SET_CHAR_COORDINATES crackhead7 329.29 1122.13 1082.88 SET_CHAR_HEADING crackhead7 90.0 TASK_GO_STRAIGHT_TO_COORD crackhead7 325.25 1122.50 1082.88 PEDMOVE_RUN 10000 //kitchen smoker ENDIF SET_FIXED_CAMERA_POSITION 318.6783 1118.7411 1084.6425 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 319.4823 1119.3168 1084.4937 JUMP_CUT WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! SWITCH_ENTRY_EXIT lacrak TRUE GOTO mission_sweet1b_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 2 PRINT_NOW ( BALLA_2 ) 10000 1 //Fuck them Grove Street fools! WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CHAR_DEAD ryder SWITCH_ENTRY_EXIT lacrak TRUE PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF ENDWHILE skip_crack_cutscene = 1 SKIP_CUTSCENE_END LOAD_MISSION_AUDIO 2 SOUND_RYDX_BC //Ninja these motherfuckers! IF skip_crack_cutscene = 0 SET_FADING_COLOUR 0 0 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 1 SOUND_BALLA_1 //Grove Street's going down! LOAD_MISSION_AUDIO 2 SOUND_RYDX_BC //Ninja these motherfuckers! IF NOT IS_CHAR_DEAD crack_boss //FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION crack_boss FALSE SET_CHAR_COORDINATES crack_boss 310.1843 1122.5980 1082.8903 //CRACK DEALER SET_CHAR_HEADING crack_boss 270.0 REMOVE_BLIP B_dups_blip //REMOVE_BLIP crack_boss_blip PERFORM_SEQUENCE_TASK crack_boss sweet1a_crackboss ENDIF IF NOT IS_CHAR_DEAD crackhead8 SET_CHAR_COORDINATES crackhead8 323.5565 1124.3616 1082.8828 SET_CHAR_HEADING crackhead8 132.0730 TASK_GO_STRAIGHT_TO_COORD crackhead8 323.80 1124.35 1082.89 PEDMOVE_WALK 10000 //BJ bloke IF NOT IS_CHAR_DEAD crackhead9 CLEAR_CHAR_TASKS crackhead9 SET_CHAR_COORDINATES crackhead9 325.3923 1131.8882 1082.8828 SET_CHAR_HEADING crackhead9 246.1470 TASK_PLAY_ANIM crackhead9 cower PED 4.0 TRUE FALSE FALSE FALSE -1 ENDIF ENDIF IF NOT IS_CHAR_DEAD crackhead7 SET_CHAR_COORDINATES crackhead7 326.96 1122.52 1082.89 SET_CHAR_HEADING crackhead7 90.0 TASK_GO_STRAIGHT_TO_COORD crackhead7 325.25 1122.50 1082.88 PEDMOVE_WALK 10000 //kitchen smoker ENDIF IF NOT IS_CHAR_DEAD crackhead5 TASK_DIE_NAMED_ANIM crackhead5 CRCKDETH3 CRACK 4.0 FALSE ENDIF //IF NOT IS_CHAR_DEAD crackhead5 //DROP_OBJECT crackhead5 TRUE //ENDIF WAIT 1000 CLEAR_LOOK_AT scplayer DO_FADE 500 FADE_IN ENDIF CLEAR_SEQUENCE_TASK sweet1a_crackboss REMOVE_ANIMATION BLOWJOBZ REMOVE_ANIMATION BASEBALL REMOVE_ANIMATION DEALER SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT IF NOT IS_CHAR_DEAD crackhead8 TASK_KILL_CHAR_ON_FOOT crackhead8 scplayer ENDIF IF NOT IS_CHAR_DEAD crackhead7 IF NOT IS_CHAR_DEAD ryder TASK_KILL_CHAR_ON_FOOT ryder crackhead7 TASK_KILL_CHAR_ON_FOOT crackhead7 ryder SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_PLAYER1 PEDTYPE_MISSION1 DROP_OBJECT crackhead7 TRUE ENDIF ENDIF IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW ( BALLA_1 ) 2000 1 //Grove Street's going down! ENDIF TIMERA = 0 create_crack_den = 1 ELSE IF TIMERA > 2000 IF played_wee_sample = 0 IF HAS_MISSION_AUDIO_LOADED 2 PLAY_MISSION_AUDIO 2 PRINT_NOW ( RYDX_BC ) 2000 1 // Ninja these motherfuckers! played_wee_sample = 1 ENDIF ENDIF ENDIF IF TIMERA > 4000 IF played_wee_sample = 1 PRINT_NOW ( SW1B_B ) 6000 1 // ~s~Go beat up the ~r~crack dealer~s~ played_wee_sample = 2 ENDIF ENDIF IF NOT IS_CHAR_DEAD crack_boss IF NOT IS_CHAR_IN_ANY_CAR scplayer IF help_for_melee_combat = 0 IF TIMERA > 3000 IF NOT IS_CHAR_IN_ANY_CAR scplayer PRINT_HELP_FOREVER_CONDITIONAL MEL_HLP 256 // Tap ~m~~widget_explicit_punch~ to perform a melee attack. (256 is CONDITION_FLAG_ATTACK) help_for_melee_combat = 1 ENDIF ENDIF ENDIF IF help_for_melee_combat = 1 IF TIMERA > 9000 IF NOT IS_CHAR_IN_ANY_CAR scplayer // Special attacks are automatic in mobile. //PRINT_HELP ( MELHLP2 ) // Press ~m~~widget_attack~ for a melee attack. help_for_melee_combat = 2 ENDIF ENDIF ENDIF ENDIF ENDIF IF create_crack_den = 1 IF IS_CHAR_DEAD crackhead7 OR IS_CHAR_DEAD crack_boss IF NOT IS_CHAR_DEAD ryder REMOVE_CHAR_FROM_GROUP ryder GET_PLAYER_GROUP Player1 Players_Group SET_GROUP_MEMBER Players_Group ryder SET_PLAYER_GROUP_RECRUITMENT player1 FALSE LISTEN_TO_PLAYER_GROUP_COMMANDS ryder FALSE create_crack_den = 2 ENDIF ENDIF ENDIF ENDIF //create_crack_den = 0 ENDIF ENDIF IF create_crack_den > 0 IF IS_CHAR_DEAD crack_boss REMOVE_BLIP crack_boss_blip ENDIF IF IS_CHAR_DEAD crackhead7 REMOVE_BLIP crackhead7_blip ENDIF IF IS_CHAR_DEAD crackhead8 REMOVE_BLIP crackhead8_blip ENDIF IF IS_CHAR_DEAD crackhead8 AND IS_CHAR_DEAD crackhead7 AND IS_CHAR_DEAD crack_boss killed_all_crack_fucks = 1 ENDIF IF when_crack_bosses_attack = 0 IF NOT IS_CHAR_DEAD crack_boss IF IS_CHAR_DEAD crackhead7 OR IS_CHAR_DEAD crackhead8 OR LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer crack_boss 2.0 2.0 2.0 FALSE TASK_KILL_CHAR_ON_FOOT crack_boss scplayer when_crack_bosses_attack = 1 ENDIF ENDIF ENDIF ENDIF IF new_visible_area = 5 IF NOT IS_CHAR_DEAD crackhead2 IF NOT IS_CHAR_HEALTH_GREATER crackhead2 80 IF special_death1 = 0 TASK_DIE_NAMED_ANIM crackhead2 CRCKDETH2 CRACK 4.0 FALSE DROP_OBJECT crackhead2 TRUE special_death1 = 1 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD crackhead4 IF NOT IS_CHAR_HEALTH_GREATER crackhead4 80 IF special_death2 = 0 TASK_DIE_NAMED_ANIM crackhead4 CRCKDETH1 CRACK 4.0 FALSE DROP_OBJECT crackhead4 TRUE special_death2 = 1 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD crackhead6 IF NOT IS_CHAR_HEALTH_GREATER crackhead6 80 IF special_death4 = 0 TASK_DIE_NAMED_ANIM crackhead6 CRCKDETH4 CRACK 4.0 FALSE DROP_OBJECT crackhead6 TRUE special_death4 = 1 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD crackhead10 IF NOT IS_CHAR_HEALTH_GREATER crackhead10 80 IF special_death5 = 0 TASK_DIE_NAMED_ANIM crackhead10 CRCKDETH3 CRACK 4.0 FALSE DROP_OBJECT crackhead10 TRUE special_death5 = 1 ENDIF ENDIF ENDIF ENDIF GOSUB ryders_group_break IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF ENDWHILE WAIT 2000 SWITCH_ENTRY_EXIT lacrak TRUE ENABLE_ENTRY_EXIT_PLAYER_GROUP_WARPING 2165.72 -1673.14 10.0 TRUE ENABLE_ENTRY_EXIT_PLAYER_GROUP_WARPING 319.56 1117.64 10.0 TRUE MARK_MODEL_AS_NO_LONGER_NEEDED bmydrug MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED hfypro MARK_MODEL_AS_NO_LONGER_NEEDED bfypro MARK_MODEL_AS_NO_LONGER_NEEDED cigar ACTIVATE_INTERIOR_PEDS TRUE IF NOT IS_CHAR_DEAD ryder CLEAR_CHAR_TASKS_IMMEDIATELY ryder REMOVE_CHAR_FROM_GROUP ryder CLEAR_LOOK_AT ryder GET_PLAYER_GROUP Player1 Players_Group SET_GROUP_MEMBER Players_Group ryder SET_PLAYER_GROUP_RECRUITMENT player1 FALSE LISTEN_TO_PLAYER_GROUP_COMMANDS ryder FALSE ryder_group_spilt_blip = 1 ENDIF PRINT_NOW ( SW1B_F ) 10000 1 // Go back to Ryders gaff. REMOVE_BLIP crack_boss_blip REMOVE_BLIP B_dups_blip ADD_BLIP_FOR_COORD 2513.33 -1672.12 12.52 B_dups_blip //ryder_group_spilt_blip = 0 blob_flag = 1 flag_sweet1b = 4 IF NOT IS_CHAR_DEAD ryder ENDIF play_ryder_mission_audio = 0 sweet1b_index = 0 sweet1b_audio_is_playing = 0 sweet1b_cutscene_flag = 0 sweet1b_chat_switch = SWEET1B_CHAT4 GOSUB sweet1b_chat_switch LVAR_INT nAtLocation nAtLocation = 0 // Go back to Ryders gaff. WHILE nAtLocation = 0 WAIT 0 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD ryder IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2513.3 -1671.9 12.52 4.0 4.0 4.0 blob_flag OR LOCATE_CHAR_ANY_MEANS_3D ryder 2513.3 -1671.9 12.52 4.0 4.0 4.0 FALSE nAtLocation = 1 ENDIF ENDIF IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF IF play_ryder_mission_audio = 1 GOSUB ryders_group_break ENDIF GET_AREA_VISIBLE new_visible_area IF new_visible_area = 0 IF play_ryder_mission_audio = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2167.6006 -1672.5919 14.0810 10.0 10.0 4.0 FALSE IF NOT IS_CHAR_DEAD ryder IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D ryder scplayer 30.0 30.0 8.0 FALSE //CLEAR_WANTED_LEVEL player1 CLEAR_AREA 2164.9614 -1673.7581 14.0803 1.0 TRUE SET_CHAR_COORDINATES ryder 2164.9614 -1673.7581 14.0803 SET_CHAR_HEADING ryder 280.1246 SET_CHAR_AREA_VISIBLE ryder 0 CLEAR_CHAR_TASKS_IMMEDIATELY ryder REMOVE_CHAR_FROM_GROUP ryder CLEAR_LOOK_AT ryder GET_PLAYER_GROUP Player1 Players_Group SET_GROUP_MEMBER Players_Group ryder SET_PLAYER_GROUP_RECRUITMENT player1 FALSE LISTEN_TO_PLAYER_GROUP_COMMANDS ryder FALSE ENDIF ENDIF play_ryder_mission_audio = 1 ENDIF ENDIF IF play_ryder_mission_audio = 1 IF NOT IS_CHAR_DEAD ryder IF new_visible_area = 0 IF NOT IS_CHAR_DEAD ryder IF LOCATE_CHAR_ANY_MEANS_CHAR_3D ryder scplayer 10.0 10.0 8.0 FALSE SWITCH_ENTRY_EXIT lacrak FALSE IF IS_CHAR_ON_FOOT scplayer AND IS_CHAR_ON_FOOT ryder GOSUB load_and_play_audio_sweet1b ENDIF IF NOT IS_CHAR_DEAD ryder IF IS_CHAR_IN_ANY_CAR scplayer AND IS_CHAR_IN_ANY_CAR ryder GOSUB load_and_play_audio_sweet1b ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF new_visible_area = 5 IF NOT IS_CHAR_DEAD crackhead2 IF NOT IS_CHAR_HEALTH_GREATER crackhead2 80 IF special_death1 = 0 TASK_DIE_NAMED_ANIM crackhead2 CRCKDETH2 CRACK 4.0 FALSE DROP_OBJECT crackhead2 TRUE special_death1 = 1 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD crackhead4 IF NOT IS_CHAR_HEALTH_GREATER crackhead4 80 IF special_death2 = 0 TASK_DIE_NAMED_ANIM crackhead4 CRCKDETH1 CRACK 4.0 FALSE DROP_OBJECT crackhead4 TRUE special_death2 = 1 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD crackhead6 IF NOT IS_CHAR_HEALTH_GREATER crackhead6 80 IF special_death4 = 0 TASK_DIE_NAMED_ANIM crackhead6 CRCKDETH4 CRACK 4.0 FALSE DROP_OBJECT crackhead6 TRUE special_death4 = 1 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD crackhead10 IF NOT IS_CHAR_HEALTH_GREATER crackhead10 80 IF special_death5 = 0 TASK_DIE_NAMED_ANIM crackhead10 CRCKDETH3 CRACK 4.0 FALSE DROP_OBJECT crackhead10 TRUE special_death5 = 1 ENDIF ENDIF ENDIF ENDIF IF IS_CHAR_DEAD ryder PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! GOTO mission_sweet1b_failed ENDIF ENDWHILE sweet1b_index = 0 sweet1b_audio_is_playing = 0 sweet1b_cutscene_flag = 0 sweet1b_chat_switch = SWEET1B_CHAT8 GOSUB sweet1b_chat_switch SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_NEAR_CLIP 0.2 WAIT 500 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REQUEST_ANIMATION GANGS WHILE NOT HAS_ANIMATION_LOADED GANGS WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION 2518.4907 -1679.4010 14.4781 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2518.0862 -1678.4993 14.6304 JUMP_CUT IF NOT IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_COORDINATES scplayer 2517.5244 -1678.4972 13.3912 ELSE WARP_CHAR_FROM_CAR_TO_COORD scplayer 2517.5244 -1678.4972 13.3912 ENDIF SET_CHAR_HEADING scplayer 328.5351 //SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE IF NOT IS_CHAR_DEAD ryder CLEAR_CHAR_TASKS_IMMEDIATELY ryder REMOVE_CHAR_FROM_GROUP ryder CLEAR_LOOK_AT ryder CLEAR_CHAR_TASKS ryder HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE ryder TRUE IF NOT IS_CHAR_IN_ANY_CAR ryder SET_CHAR_COORDINATES ryder 2518.3142 -1676.9066 13.3726 ELSE WARP_CHAR_FROM_CAR_TO_COORD ryder 2518.3142 -1676.9066 13.3726 ENDIF TASK_TURN_CHAR_TO_FACE_CHAR ryder scplayer TASK_TURN_CHAR_TO_FACE_CHAR scplayer ryder SET_CHAR_HEADING scplayer 180.0 ENDIF WAIT 500 DO_FADE 1000 FADE_IN /* TASK_PLAY_ANIM ryder prtial_gngtlkC GANGS 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM ryder prtial_gngtlkB GANGS 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM ryder prtial_gngtlkA GANGS 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM ryder prtial_gngtlkD GANGS 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM ryder prtial_gngtlkE GANGS 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM ryder prtial_gngtlkG GANGS 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM ryder prtial_gngtlkH GANGS 4.0 FALSE FALSE FALSE TRUE -1 */ WHILE NOT sweet1b_index = 3 WAIT 0 GOSUB load_and_play_audio_sweet1b ENDWHILE IF NOT IS_CHAR_DEAD ryder TASK_GO_STRAIGHT_TO_COORD ryder 2522.9968 -1679.1956 14.4970 PEDMOVE_WALK 4000 ENDIF //SET_FIXED_CAMERA_POSITION 2514.4375 -1676.8171 14.4492 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 2515.3772 -1677.1587 14.4617 JUMP_CUT WHILE NOT sweet1b_index = 4 WAIT 0 GOSUB load_and_play_audio_sweet1b ENDWHILE WAIT 1000 RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON DELETE_CHAR ryder GOTO mission_sweet1b_passed // **************************************** Mission sweet1b failed *********************** mission_sweet1b_failed: GET_AREA_VISIBLE new_visible_area IF new_visible_area = 5 SWITCH_ENTRY_EXIT lacrak TRUE ENDIF PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" GET_AREA_VISIBLE new_visible_area IF new_visible_area = 5 IF create_crack_den = 1 IF NOT IS_CHAR_DEAD crackhead2 IF special_death1 = 0 TASK_DIE_NAMED_ANIM crackhead2 CRCKDETH2 CRACK 4.0 FALSE DROP_OBJECT crackhead2 TRUE special_death1 = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD crackhead4 IF special_death2 = 0 TASK_DIE_NAMED_ANIM crackhead4 CRCKDETH1 CRACK 4.0 FALSE DROP_OBJECT crackhead4 TRUE special_death2 = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD crackhead6 IF special_death4 = 0 TASK_DIE_NAMED_ANIM crackhead6 CRCKDETH4 CRACK 4.0 FALSE DROP_OBJECT crackhead6 TRUE special_death4 = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD crackhead10 IF NOT IS_CHAR_HEALTH_GREATER crackhead10 80 IF special_death5 = 0 TASK_DIE_NAMED_ANIM crackhead10 CRCKDETH3 CRACK 4.0 FALSE DROP_OBJECT crackhead10 TRUE special_death5 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF RETURN // **************************************** mission sweet1b passed ************************ mission_sweet1b_passed: flag_sweet_mission_counter ++ //Used to terminate this mission loop in the main script. These varibles will be set up in the main.sc REGISTER_MISSION_PASSED ( SWEET1B ) //Used in the stats //PRINT_WITH_NUMBER_BIG ( M_PASS ) 100 5000 1 //"Mission Passed!" PRINT_WITH_NUMBER_BIG ( M_PASSR ) 3 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 3 SET_ZONE_GANG_STRENGTH GAN1 GANG_GROVE 40 SET_ZONE_GANG_STRENGTH GAN2 GANG_GROVE 40 //ADD_SCORE player1 100 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 PLAYER_MADE_PROGRESS 1 RETURN // ********************************** mission cleanup *********************************** mission_cleanup_sweet1b: IF NOT IS_CHAR_DEAD drug_buyer1 DELETE_CHAR drug_buyer1 ENDIF IF NOT IS_CHAR_DEAD crackhead1 DELETE_CHAR crackhead1 ENDIF entry_exit_area = 0 entry_exit_status = FALSE $entry_exit_name = LACRAK START_NEW_SCRIPT switch_entry_exit_after_mission IF IS_PLAYER_PLAYING player1 SET_PLAYER_DRUNKENNESS Player1 0 ENDIF flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start //Used to reset the mobile phone timer so it doesn't ring immediately after the mission SWITCH_ROADS_ON 2272.9219 -1649.5563 14.3311 2266.1013 -1633.2192 14.3505 SWITCH_PED_ROADS_ON 324.1973 1116.7579 1082.8981 313.1226 1124.1968 1082.8981 MARK_MODEL_AS_NO_LONGER_NEEDED bmydrug MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED BAT MARK_MODEL_AS_NO_LONGER_NEEDED fam3 MARK_MODEL_AS_NO_LONGER_NEEDED hfypro MARK_MODEL_AS_NO_LONGER_NEEDED bfypro MARK_MODEL_AS_NO_LONGER_NEEDED cigar MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO ENABLE_ENTRY_EXIT_PLAYER_GROUP_WARPING 2165.72 -1673.14 10.0 FALSE ENABLE_ENTRY_EXIT_PLAYER_GROUP_WARPING 319.56 1117.64 10.0 FALSE REMOVE_ANIMATION GANGS REMOVE_ANIMATION CRACK REMOVE_ANIMATION BLOWJOBZ REMOVE_ANIMATION BASEBALL REMOVE_ANIMATION DEALER REMOVE_PICKUP pickup_baseballbat REMOVE_BLIP crackhead1_blip REMOVE_BLIP crack_boss_blip REMOVE_BLIP B_dups_blip REMOVE_BLIP ryders_blip SWITCH_CAR_GENERATOR gen_car7 101 REMOVE_CHAR_ELEGANTLY ryder UNLOAD_SPECIAL_CHARACTER 1 ENABLE_AMBIENT_CRIME TRUE MISSION_HAS_FINISHED RETURN ryders_group_break: GET_AREA_VISIBLE new_visible_area IF new_visible_area = 0 IF NOT IS_CHAR_DEAD ryder IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D ryder scplayer 30.0 30.0 8.0 FALSE IF ryder_group_spilt_blip = 0 IF killed_all_crack_fucks = 0 SWITCH_ENTRY_EXIT lacrak FALSE ENDIF REMOVE_BLIP crack_boss_blip REMOVE_BLIP crackhead1_blip REMOVE_BLIP ryders_blip REMOVE_BLIP B_dups_blip ADD_BLIP_FOR_CHAR ryder ryders_blip SET_BLIP_AS_FRIENDLY ryders_blip TRUE REMOVE_CHAR_FROM_GROUP ryder CLEAR_CHAR_TASKS ryder GOSUB get_back_in_ryders_group PRINT_NOW ( SW1B_H ) 6000 1 // You're too far away from Ryder, go back and get him. blob_flag = 0 ryder_group_spilt_blip = 1 ENDIF ELSE IF NOT IS_CHAR_DEAD ryder IF LOCATE_CHAR_ANY_MEANS_CHAR_3D ryder scplayer 10.0 10.0 8.0 FALSE IF ryder_group_spilt_blip = 1 IF NOT IS_CHAR_DEAD ryder REMOVE_BLIP ryders_blip REMOVE_CHAR_FROM_GROUP ryder GET_PLAYER_GROUP Player1 Players_Group SET_GROUP_MEMBER Players_Group ryder SET_PLAYER_GROUP_RECRUITMENT player1 FALSE LISTEN_TO_PLAYER_GROUP_COMMANDS ryder FALSE ENDIF IF flag_sweet1b = 0 REMOVE_BLIP B_dups_blip ADD_BLIP_FOR_COORD 2301.07 -1754.40 12.54 B_dups_blip PRINT_NOW ( SW1B_A ) 7000 1 // ~s~Go to ~y~B Dup crib~s~ ENDIF IF flag_sweet1b = 1 IF NOT IS_CHAR_DEAD crackhead1 REMOVE_BLIP crackhead1_blip ADD_BLIP_FOR_CHAR crackhead1 crackhead1_blip ENDIF PRINT_NOW ( SW1B_B ) 7000 1 // ~s~Go beat up the ~r~crack dealer~s~ ENDIF IF flag_sweet1b = 2 IF new_visible_area = 0 REMOVE_BLIP B_dups_blip ADD_BLIP_FOR_COORD 2171.7815 -1676.7803 14.0859 B_dups_blip //CRACK HOUSE ENDIF PRINT_NOW ( SW1B_1 ) 7000 1 // ~s~Go to ~r~crack dealer~s~ ENDIF IF flag_sweet1b = 3 SWITCH_ENTRY_EXIT lacrak TRUE IF new_visible_area = 0 REMOVE_BLIP B_dups_blip ADD_BLIP_FOR_COORD 2169.72 -1673.14 13.01 B_dups_blip //CRACK HOUSE door ENDIF PRINT_NOW ( SW1B_1 ) 7000 1 // ~s~Go to ~r~crack dealer~s~ ENDIF IF flag_sweet1b = 4 //SWITCH_ENTRY_EXIT lacrak TRUE REMOVE_BLIP B_dups_blip ADD_BLIP_FOR_COORD 2513.33 -1672.12 12.52 B_dups_blip PRINT_NOW ( SW1B_F ) 7000 1 // Go back to Ryders gaff. ENDIF blob_flag = 1 ryder_group_spilt_blip = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF RETURN load_and_play_audio_sweet1b: IF sweet1b_audio_is_playing = 0 OR sweet1b_audio_is_playing = 1 IF sweet1b_index <= sweet1b_cell_index_end IF TIMERA > 200 GOSUB play_sweet1b_audio ENDIF ENDIF ENDIF IF sweet1b_audio_is_playing = 2 IF HAS_MISSION_AUDIO_FINISHED 1 GOSUB stop_talking_sweet1b sweet1b_audio_is_playing = 0 sweet1b_index ++ sweet1b_cutscene_flag = 0 CLEAR_PRINTS TIMERA = 0 ENDIF ENDIF RETURN play_sweet1b_audio: IF sweet1b_audio_is_playing = 0 LOAD_MISSION_AUDIO 1 sweet1b_audio_chat[sweet1b_index] sweet1b_audio_is_playing = 1 ENDIF IF sweet1b_audio_is_playing = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW ( $sweet1b_chat[sweet1b_index] ) 4000 1 PLAY_MISSION_AUDIO 1 GOSUB start_talking_sweet1b sweet1b_audio_is_playing = 2 ENDIF ENDIF RETURN start_talking_sweet1b: IF sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_SA OR sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_SB IF NOT IS_CHAR_DEAD crackhead1 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH crackhead1 TRUE START_CHAR_FACIAL_TALK crackhead1 3000 RETURN ENDIF ENDIF IF sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_YA OR sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_YC OR sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_YF OR sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_YQ OR sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_YS SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE START_CHAR_FACIAL_TALK scplayer 3000 RETURN ENDIF IF sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_TA OR sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_TD OR sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_YT OR sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_YW OR sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_UC SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE START_CHAR_FACIAL_TALK scplayer 3000 ELSE IF NOT IS_CHAR_DEAD ryder SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryder TRUE START_CHAR_FACIAL_TALK ryder 3000 ENDIF ENDIF RETURN stop_talking_sweet1b: IF sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_SA OR sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_SB IF NOT IS_CHAR_DEAD crackhead1 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH crackhead1 FALSE STOP_CHAR_FACIAL_TALK crackhead1 RETURN ENDIF ENDIF IF sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_YA OR sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_YC OR sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_YF OR sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_YQ OR sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_YS SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer RETURN ENDIF IF sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_TA OR sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_TD OR sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_YT OR sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_YW OR sweet1b_audio_chat[sweet1b_index] = SOUND_SWE1_UC SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer ELSE IF NOT IS_CHAR_DEAD ryder SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryder FALSE STOP_CHAR_FACIAL_TALK ryder ENDIF ENDIF RETURN get_back_in_ryders_group: CLEAR_MISSION_AUDIO 2 IF get_in_counter_swee1b = 0 LOAD_MISSION_AUDIO 2 SOUND_RYDX_AL //Hey buster, wait up! ENDIF IF get_in_counter_swee1b = 1 LOAD_MISSION_AUDIO 2 SOUND_RYDX_AM //Don't you bust on me! ENDIF IF get_in_counter_swee1b = 2 LOAD_MISSION_AUDIO 2 SOUND_RYDX_AN //Wait up, CJ! ENDIF IF get_in_counter_swee1b = 3 LOAD_MISSION_AUDIO 2 SOUND_RYDX_AO //Hold up, fool! ENDIF IF get_in_counter_swee1b = 4 LOAD_MISSION_AUDIO 2 SOUND_RYDX_AP //Hey, CJ, where you at? ENDIF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer CLEAR_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CHAR_DEAD ryder //PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! //GOTO mission_sweet1b_failed RETURN ENDIF ENDWHILE PLAY_MISSION_AUDIO 2 IF get_in_counter_swee1b = 0 PRINT_NOW (RYDX_AL ) 3000 1 //Hey buster, wait up! ENDIF IF get_in_counter_swee1b = 1 PRINT_NOW ( RYDX_AM ) 3000 1 //Don't you bust on me! ENDIF IF get_in_counter_swee1b = 2 PRINT_NOW ( RYDX_AN ) 3000 1 //Wait up, CJ! ENDIF IF get_in_counter_swee1b = 3 PRINT_NOW ( RYDX_AO ) 3000 1 //Hold up, fool! ENDIF IF get_in_counter_swee1b = 4 PRINT_NOW ( RYDX_AP ) 3000 1 //Hey, CJ, where you at? ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CHAR_DEAD ryder //PRINT_NOW (SW1B_G) 10000 1 //~r~Ryder is dead! //GOTO mission_sweet1b_failed RETURN ENDIF ENDWHILE get_in_counter_swee1b ++ IF get_in_counter_swee1b > 4 get_in_counter_swee1b = 0 ENDIF IF IS_CHAR_DEAD ryder ENDIF RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* TWAR 2 ******************************************** // ********************************** CHICKEN WINGS **************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME SWEET3 // Mission start stuff GOSUB mission_start_sweet3 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_sweet3_failed ENDIF GOSUB mission_cleanup_sweet3 MISSION_END { // Variables for mission LVAR_INT CurrentcarHealthValue COMPARE_CurrentcarHealthValue played_the_car_dialoge played_first_ouch_samples skip_sweet4_cutscene LVAR_INT chicken_shop_blip drive_by_car1 got_to_drive_through started_to_kill_gang played_the_timer ballas_cunts_not_dead LVAR_INT drive_by_bloke1 drive_by_bloke2 got_to_hub_first_time Return_Progress chicken_man1 chicken_man2 get_in_counter_sweet3 LVAR_INT drive_by_car1_blip sweet3_mate1 sweet3_mate2 sweet3_mate4 car_blow_up create_chicken_men sweet3_cell_index_end LVAR_INT chicken_shop_blip_removed print_sweet3_text kill_them_all_sweet3D SW3_player_vehicle task_returned baller_bloke_dead_in_car LVAR_INT kill_them_all_sweet3 sweet3_audio_chat[13] sweet3_chat_switch SW3_current_area_visible drive_by_bloke_blip1 drive_by_bloke_blip2 LVAR_INT out_of_car1 out_of_car2 sweet3_audio_is_playing sweet3_index sweet3_cutscene_flag chicken_ciggy LVAR_INT drive_by_bloke[2] drive_by_index sequence_initiated smokes_decision sweets_decision ryders_decision LVAR_INT drive_by_bloke1_dead drive_by_bloke2_dead task_exit_burning_car1 task_exit_burning_car2 played_gang_help_text LVAR_INT chicken_text_1 chicken_text_2 block_in_car_blocked chicken_char1 chicken_car1 sweet3_car2 LVAR_FLOAT SW3_playerX SW3_playerY SW3_playerZ VAR_TEXT_LABEL $sweet3_chat[13] // **************************************** Mission Start ********************************** sweet3_chat_switch: SWITCH sweet3_chat_switch CONST_INT SWEET3_CHAT1 0 CONST_INT SWEET3_CHAT2 1 CONST_INT SWEET3_CHAT3 2 CONST_INT SWEET3_CHAT4 3 CONST_INT SWEET3_CHAT5 4 CONST_INT SWEET3_CHAT6 5 CONST_INT SWEET3_CHAT7 6 CONST_INT SWEET3_CHAT8 7 CONST_INT SWEET3_CHAT9 8 CASE sweet3_CHAT2 $sweet3_chat[0] = &SWE2_BA //How did Moms get killed? We gotta talk about it. $sweet3_chat[1] = &SWE2_BB //We all gotta talk about it! They was going for Sweet! $sweet3_chat[2] = &SWE2_BC //How you supposed to know – you know what people are like. $sweet3_chat[3] = &SWE2_BD //Say they have love for you, but won’t say a word. $sweet3_chat[4] = &SWE2_BE //Too damn scared. $sweet3_chat[5] = &SWE2_BF //People say they saw a green Sabre doing the work, $sweet3_chat[6] = &SWE2_BG //then speeding away. $sweet3_chat[7] = &SWE2_BH //Yeah, but people like to talk, don’t they? $sweet3_chat[8] = &SWE2_BJ //Anyway, that’s half of LA you’re talking about! $sweet3_chat[9] = &SWE2_BK //Yeah, that ain’t no help. Sorry. $sweet3_chat[10] = &SWE2_BL //Bro’? $sweet3_chat[11] = &SWE2_BM //They just sprayed the house. Didn’t see jack. sweet3_audio_chat[0] = SOUND_SWE2_BA //How did Moms get killed? We gotta talk about it. sweet3_audio_chat[1] = SOUND_SWE2_BB //We all gotta talk about it! They was going for Sweet! sweet3_audio_chat[2] = SOUND_SWE2_BC //How you supposed to know – you know what people are like. sweet3_audio_chat[3] = SOUND_SWE2_BD //Say they have love for you, but won’t say a word. sweet3_audio_chat[4] = SOUND_SWE2_BE //Too damn scared. sweet3_audio_chat[5] = SOUND_SWE2_BF //People say they saw a green Sabre doing the work, sweet3_audio_chat[6] = SOUND_SWE2_BG //then speeding away. sweet3_audio_chat[7] = SOUND_SWE2_BH //Yeah, but people like to talk, don’t they? sweet3_audio_chat[8] = SOUND_SWE2_BJ //Anyway, that’s half of LA you’re talking about! sweet3_audio_chat[9] = SOUND_SWE2_BK //Yeah, that ain’t no help. Sorry. sweet3_audio_chat[10] = SOUND_SWE2_BL //Bro’? sweet3_audio_chat[11] = SOUND_SWE2_BM //They just sprayed the house. Didn’t see jack. sweet3_cell_index_end = 11 BREAK CASE sweet3_CHAT3 $sweet3_chat[0] = &SWE2_CA //Hit it! Go, go ,go! $sweet3_chat[1] = &SWE2_CC //Hit the gas, we gottaa ice those fools! $sweet3_chat[2] = &SWE2_GA //Ain’t you shooting, Smoke? $sweet3_chat[3] = &SWE2_GB //’ll shoot when I’m done eating. $sweet3_chat[4] = &SWE2_GC //Stop stuffing your mouth! $sweet3_chat[5] = &SWE2_GD //I ain’t stuffing it, homie. I am enjoying my meal. $sweet3_chat[6] = &SWE2_GE //Kill that asshole. $sweet3_chat[7] = &SWE2_HA //Smoke, stop stuffing and start popping Ballas! $sweet3_chat[8] = &SWE2_HB //I’m trying to enjoy my food! $sweet3_chat[9] = &SWE2_HC //And those fools are trying to enjoy our deaths! $sweet3_chat[10] = &SWE2_HD //Now, c’mon, Smoke, Shoot! $sweet3_chat[11] = &SWE2_HE //Just finishing my fries… sweet3_audio_chat[0] = SOUND_SWE2_CA //Hit it! Go, go ,go! sweet3_audio_chat[1] = SOUND_SWE2_CC //Hit the gas, we gottaa ice those fools! sweet3_audio_chat[2] = SOUND_SWE2_GA //Ain’t you shooting, Smoke? sweet3_audio_chat[3] = SOUND_SWE2_GB //’ll shoot when I’m done eating. sweet3_audio_chat[4] = SOUND_SWE2_GC //Stop stuffing your mouth! sweet3_audio_chat[5] = SOUND_SWE2_GD //I ain’t stuffing it, homie. I am enjoying my meal. sweet3_audio_chat[6] = SOUND_SWE2_GE //Kill that asshole. sweet3_audio_chat[7] = SOUND_SWE2_HA //Smoke, stop stuffing and start popping Ballas! sweet3_audio_chat[8] = SOUND_SWE2_HB //I’m trying to enjoy my food! sweet3_audio_chat[9] = SOUND_SWE2_HC //And those fools are trying to enjoy our deaths! sweet3_audio_chat[10] = SOUND_SWE2_HD //Now, c’mon, Smoke, Shoot! sweet3_audio_chat[11] = SOUND_SWE2_HE //Just finishing my fries… sweet3_cell_index_end = 11 BREAK CASE sweet3_CHAT4 $sweet3_chat[0] = &SWE2_MA //Well that was some shit! $sweet3_chat[1] = &SWE2_MB //Yeah, heh-heh, those Ballas fools won’t try that again! $sweet3_chat[2] = &SWE2_MC //Carl, let’s get back to the Grove! $sweet3_chat[3] = &SWE2_MD //Yo, I’m on it. $sweet3_chat[4] = &SWE2_ME //Man, that filled a hole! $sweet3_chat[5] = &SWE2_MF //You chubby motherfucker! $sweet3_chat[6] = &SWE2_MG //Next time, you shooting or I’ll cap you myself! $sweet3_chat[7] = &SWE2_MH //Smoke, you’re wide, man, wide! $sweet3_chat[8] = &SWE2_MJ //And that’s why you love me, homies, heh heh! sweet3_audio_chat[0] = SOUND_SWE2_MA //Well that was some shit! sweet3_audio_chat[1] = SOUND_SWE2_MB //Yeah, heh-heh, those Ballas fools won’t try that again! sweet3_audio_chat[2] = SOUND_SWE2_MC //Carl, let’s get back to the Grove! sweet3_audio_chat[3] = SOUND_SWE2_MD //Yo, I’m on it. sweet3_audio_chat[4] = SOUND_SWE2_ME //Man, that filled a hole! sweet3_audio_chat[5] = SOUND_SWE2_MF //You chubby motherfucker! sweet3_audio_chat[6] = SOUND_SWE2_MG //Next time, you shooting or I’ll cap you myself! sweet3_audio_chat[7] = SOUND_SWE2_MH //Smoke, you’re wide, man, wide! sweet3_audio_chat[8] = SOUND_SWE2_MJ //And that’s why you love me, homies, heh heh! sweet3_cell_index_end = 8 BREAK CASE sweet3_CHAT5 $sweet3_chat[0] = &SWE2_NA //One up to the Grove! $sweet3_chat[1] = &SWE2_NB //Whatchoo talking about, Smoke? $sweet3_chat[2] = &SWE2_NC //All you managed to do was eat my damn food too! $sweet3_chat[3] = &SWE2_ND //It was getting cold! $sweet3_chat[4] = &SWE2_NE //Yo, you cats coming in for a beer? $sweet3_chat[5] = &SWE2_NF //No, dude, I need to get back to my house. $sweet3_chat[6] = &SWE2_NG //CJ, gimme a ride? $sweet3_chat[7] = &SWE2_NH //Sure, why not? Later, dudes. sweet3_audio_chat[0] = SOUND_SWE2_NA //One up to the Grove! sweet3_audio_chat[1] = SOUND_SWE2_NB //Whatchoo talking about, Smoke? sweet3_audio_chat[2] = SOUND_SWE2_NC //All you managed to do was eat my damn food too! sweet3_audio_chat[3] = SOUND_SWE2_ND //It was getting cold! sweet3_audio_chat[4] = SOUND_SWE2_NE //Yo, you cats coming in for a beer? sweet3_audio_chat[5] = SOUND_SWE2_NF //No, dude, I need to get back to my house. sweet3_audio_chat[6] = SOUND_SWE2_NG //CJ, gimme a ride? sweet3_audio_chat[7] = SOUND_SWE2_NH //Sure, why not? Later, dudes. sweet3_cell_index_end = 7 BREAK CASE sweet3_CHAT6 $sweet3_chat[0] = &SWE2_OA //What was with you back there, Smoke? $sweet3_chat[1] = &SWE2_OB //If you can eat your food whilst all about you are losing theirs $sweet3_chat[2] = &SWE2_OC //and blaming you, homie! $sweet3_chat[3] = &SWE2_OD //What? $sweet3_chat[4] = &SWE2_OE //Nothin’. $sweet3_chat[5] = &SWE2_OF //How come you moved out the Grove, Smoke? $sweet3_chat[6] = &SWE2_OG //Got some money from my Aunt - It’s a nice place. $sweet3_chat[7] = &SWE2_OH //But the Grove’s still my heart - all my down dogs are there. $sweet3_chat[8] = &SWE2_OJ //But true, holmes. sweet3_audio_chat[0] = SOUND_SWE2_OA //What was with you back there, Smoke? sweet3_audio_chat[1] = SOUND_SWE2_OB //If you can eat your food whilst all about you are losing theirs sweet3_audio_chat[2] = SOUND_SWE2_OC //and blaming you, homie! sweet3_audio_chat[3] = SOUND_SWE2_OD //What? sweet3_audio_chat[4] = SOUND_SWE2_OE //Nothin’. sweet3_audio_chat[5] = SOUND_SWE2_OF //How come you moved out the Grove, Smoke? sweet3_audio_chat[6] = SOUND_SWE2_OG //Got some money from my Aunt - It’s a nice place. sweet3_audio_chat[7] = SOUND_SWE2_OH //But the Grove’s still my heart - all my down dogs are there. sweet3_audio_chat[8] = SOUND_SWE2_OJ //But true, holmes. sweet3_cell_index_end = 8 BREAK CASE sweet3_CHAT7 $sweet3_chat[0] = &SWE2_PA //Thanks Carl, I’ve missed having you around! $sweet3_chat[1] = &SWE2_PB //I wish Sweet thought that way. $sweet3_chat[2] = &SWE2_PC //He don’t mean it, CJ. $sweet3_chat[3] = &SWE2_PD //He’s still all to’up about yo moms. $sweet3_chat[4] = &SWE2_PE //Here, get yourself some cess or somethin’- relax. sweet3_audio_chat[0] = SOUND_SWE2_PA //Thanks Carl, I’ve missed having you around! sweet3_audio_chat[1] = SOUND_SWE2_PB //I wish Sweet thought that way. sweet3_audio_chat[2] = SOUND_SWE2_PC //He don’t mean it, CJ. sweet3_audio_chat[3] = SOUND_SWE2_PD //He’s still all to’up about yo moms. sweet3_audio_chat[4] = SOUND_SWE2_PE //Here, get yourself some cess or somethin’- relax. sweet3_cell_index_end = 4 BREAK CASE sweet3_CHAT8 $sweet3_chat[0] = &SWE2_DA //My Special! $sweet3_chat[1] = &SWE2_DB //Aw, shit! You got ketchup all over the seat! $sweet3_chat[2] = &SWE2_DC //The business at hand, motherfucker, the business at hand! $sweet3_chat[3] = &SWE2_DD //But these was clean pants! sweet3_audio_chat[0] = SOUND_SWE2_DA //My Special! sweet3_audio_chat[1] = SOUND_SWE2_DB //Aw, shit! You got ketchup all over the seat! sweet3_audio_chat[2] = SOUND_SWE2_DC //The business at hand, motherfucker, the business at hand! sweet3_audio_chat[3] = SOUND_SWE2_DD //But these was clean pants! sweet3_cell_index_end = 3 BREAK CASE sweet3_CHAT9 $sweet3_chat[0] = &SWE2_EA //CJ, watch the damn road! $sweet3_chat[1] = &SWE2_EB //Chill. motherfucker, this ain’t a Sunday drive situation! $sweet3_chat[2] = &SWE2_EC //My soda! It’s all over the fucking floor! $sweet3_chat[3] = &SWE2_ED //Well you can suck it up once we’re done. $sweet3_chat[4] = &SWE2_EE //Now keep you eyes on the Ballas car! sweet3_audio_chat[0] = SOUND_SWE2_EA //CJ, watch the damn road! sweet3_audio_chat[1] = SOUND_SWE2_EB //Chill. motherfucker, this ain’t a Sunday drive situation! sweet3_audio_chat[2] = SOUND_SWE2_EC //My soda! It’s all over the fucking floor! sweet3_audio_chat[3] = SOUND_SWE2_ED //Well you can suck it up once we’re done. sweet3_audio_chat[4] = SOUND_SWE2_EE //Now keep you eyes on the Ballas car! sweet3_cell_index_end = 4 BREAK //SMOKE //My Special! //RYDER //Aw, shit! You got ketchup all over the seat! //SMOKE //The business at hand, motherfucker, the business at hand! //RYDER //But these was clean pants! //RYDER //CJ, watch the damn road! //SMOKE //Chill. motherfucker, this ain’t a Sunday drive situation! //RYDER //My soda! It’s all over the fucking floor! //SWEET //Well you can suck it up once we’re done. //SWEET //Now keep you eyes on the Ballas car! /* SWE2_KA //We’re on fire, everybody for themselves! SWE2_KB //She’s gonna blow, bail out! SWE2_KC //Our ride’s totalled – everybody out! SWE2_LA //Dammit, we were too late! SWE2_LB //We let down our homies! SWE2_LC //We let down the ‘hood! SWE2_JA //Aw shit, CJ’s out! SWE2_JB //CJ! Sweet, CJ’s down! SWE2_JC //He’s bluffing, aren’t you CJ! CJ? SWE2_DA //My Special! SWE2_DB //Aw shit! There’s ketchup all over the seat! SWE2_DC //The business at hand, motherfucker, the business at hand! SWE2_DD //But these were clean pants! SWE2_EA //CJ, watch the damn road! SWE2_EB //Chill, motherfucker, this is not a Sunday drive situation! SWE2_EC //My cola! It’s it’s all over the floor! SWE2_ED //Well you can suck it up once we’re done. SWE2_EE //Now keep your eyes open for that Ballas car! */ /* SWE2_CA //Hit it! Go, go ,go! SWE2_CB //Get after them, CJ! SWE2_CC //Hit the gas, we gottaa ice those fools! SWE2_FA //There they go! SWE2_FC //Ballas! See ‘em? Over there! SWE2_FD //Pull alongside, CJ. SWE2_FE //Ready, dogs? SWE2_CC //Hit the gas, we gottaa ice those fools! SWE2_FB //Get up alongside those motherfuckers, CJ! */ ENDSWITCH RETURN mission_start_sweet3: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 drive_by_bloke1_dead = 0 drive_by_bloke2_dead = 0 got_to_drive_through = 0 sequence_initiated = 0 out_of_car1 = 0 out_of_car2 = 0 drive_by_index = 0 chicken_text_1 = 0 chicken_text_2 = 0 block_in_car_blocked = 0 chicken_shop_blip_removed = 0 print_sweet3_text = 0 got_to_hub_first_time = 0 task_exit_burning_car1 = 0 task_exit_burning_car2 = 0 started_to_kill_gang = 0 car_blow_up = 0 played_the_timer = 0 get_in_counter_sweet3 = 0 drive_by_bloke[0] = drive_by_bloke1 drive_by_bloke[1] = drive_by_bloke2 WAIT 0 LOAD_MISSION_TEXT SWEET3 // ****************************************START OF CUTSCENE******************************** REQUEST_MODEL GREENWOO WHILE NOT HAS_MODEL_LOADED GREENWOO WAIT 0 ENDWHILE SWITCH_CAR_GENERATOR gen_car7 0 CLEAR_AREA 2516.6357 -1675.6909 13.0101 15.0 TRUE CLEAR_AREA 2508.7949 -1671.7073 12.3892 15.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR GREENWOO &GROVE4L_ CREATE_CAR GREENWOO 2508.7 -1671.7 12.3 sweet_car SET_CAR_PROOFS sweet_car FALSE TRUE FALSE FALSE FALSE CHANGE_CAR_COLOUR sweet_car 59 34 SET_CAR_HEADING sweet_car 166.9 SET_CAN_BURST_CAR_TYRES sweet_car FALSE MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO LOAD_CUTSCENE SWEET2A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE //SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE // ****************************************END OF CUTSCENE********************************** // request models LOAD_SPECIAL_CHARACTER 1 smoke LOAD_SPECIAL_CHARACTER 2 sweet LOAD_SPECIAL_CHARACTER 3 ryder2 REQUEST_MODEL TEC9 //REQUEST_MODEL WMYBELL REQUEST_MODEL cigar LOAD_ALL_MODELS_NOW WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_SPECIAL_CHARACTER_LOADED 2 OR NOT HAS_SPECIAL_CHARACTER_LOADED 3 OR NOT HAS_MODEL_LOADED TEC9 //OR NOT HAS_MODEL_LOADED WMYBELL WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED cigar WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD sweet_car CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 2511.5139 -1671.4640 12.4607 big_smoke SET_ANIM_GROUP_FOR_CHAR big_smoke fatman SET_CHAR_HEADING big_smoke 84.5 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER big_smoke sweet_car 10000 1 GIVE_WEAPON_TO_CHAR big_smoke WEAPONTYPE_TEC9 99999 SET_CHAR_NEVER_TARGETTED big_smoke TRUE SET_CHAR_SUFFERS_CRITICAL_HITS big_smoke FALSE SET_CHAR_HEALTH big_smoke 500 SET_CHAR_CANT_BE_DRAGGED_OUT big_smoke TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED big_smoke TRUE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY smokes_decision SET_CHAR_DECISION_MAKER big_smoke smokes_decision SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR big_smoke FALSE CREATE_CHAR PEDTYPE_MISSION1 SPECIAL02 2507.8862 -1667.8005 12.3881 sweet SET_ANIM_GROUP_FOR_CHAR sweet gang2 SET_CHAR_HEADING sweet 167.8 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER sweet sweet_car 10000 2 GIVE_WEAPON_TO_CHAR sweet WEAPONTYPE_TEC9 99999 SET_CHAR_NEVER_TARGETTED sweet TRUE SET_CHAR_SUFFERS_CRITICAL_HITS sweet FALSE SET_CHAR_HEALTH sweet 500 SET_CHAR_CANT_BE_DRAGGED_OUT sweet TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED sweet TRUE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY sweets_decision SET_CHAR_DECISION_MAKER sweet sweets_decision SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR sweet FALSE CREATE_CHAR PEDTYPE_MISSION1 SPECIAL03 2506.3479 -1673.5907 12.3784 ryder SET_ANIM_GROUP_FOR_CHAR ryder gang1 SET_CHAR_HEADING ryder 346.0 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER ryder sweet_car 10000 0 GIVE_WEAPON_TO_CHAR ryder WEAPONTYPE_TEC9 99999 SET_CHAR_NEVER_TARGETTED ryder TRUE SET_CHAR_SUFFERS_CRITICAL_HITS ryder FALSE SET_CHAR_HEALTH ryder 500 SET_CHAR_CANT_BE_DRAGGED_OUT ryder TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED ryder TRUE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY ryders_decision SET_CHAR_DECISION_MAKER ryder ryders_decision SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR ryder FALSE SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_GANG_GROVE PEDTYPE_MISSION1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 PEDTYPE_GANG_GROVE ENDIF SET_RADIO_CHANNEL RS_DISCO_FUNK_SOUL ADD_BLIP_FOR_CAR sweet_car chicken_shop_blip SET_BLIP_AS_FRIENDLY chicken_shop_blip TRUE // fades the screen in SET_FADING_COLOUR 0 0 0 CLEAR_AREA 2516.54 -1671.20 12.87 2.0 TRUE SET_CHAR_COORDINATES scplayer 2516.54 -1671.20 12.87 SET_CHAR_HEADING scplayer 81.20 LOAD_SCENE_IN_DIRECTION 2516.54 -1671.20 12.87 81.20 SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT DO_FADE 1000 FADE_IN IF IS_CAR_DEAD sweet_car GOTO mission_sweet3_failed ENDIF TIMERB = 0 LOAD_MISSION_AUDIO 1 SOUND_SWE2_AA //Carl, you drive.Smoke looks like he’s gonna pass out. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CAR_DEAD sweet_car PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SWE2_AA ) 10000 1 //Carl, you drive.Smoke looks like he’s gonna pass out. WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CAR_DEAD sweet_car PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ENDIF ENDWHILE sweet3_index = 0 sweet3_audio_is_playing = 0 sweet3_cutscene_flag = 0 sweet3_chat_switch = sweet3_CHAT2 GOSUB sweet3_chat_switch IF IS_CAR_DEAD sweet_car PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ENDIF PRINT_NOW ( TWAR2_A ) 6000 1 // Get in the car. TIMERB = 0 blob_flag = 0 chicken_shop_blip_removed = 0 //GOTO return_to_the_hood //TEST WHILE NOT LOCATE_CAR_3D sweet_car 2404.1 -1891.5 12.3 4.0 4.0 4.0 blob_flag //GO TO THE CHICKEN DRIVE THRU OR NOT IS_CHAR_SITTING_IN_CAR scplayer sweet_car OR NOT IS_VEHICLE_ON_ALL_WHEELS sweet_car WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_sweet3_passed ENDIF /* IF create_chicken_men = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2397.9 -1895.5 12.3 100.0 100.0 10.0 FALSE CREATE_CHAR PEDTYPE_CIVMALE WMYBELL 2393.4 -1898.8 12.55 chicken_man1 CREATE_CHAR PEDTYPE_CIVMALE WMYBELL 2392.2 -1898.8 12.55 chicken_man2 TASK_TURN_CHAR_TO_FACE_CHAR chicken_man1 chicken_man2 TASK_TURN_CHAR_TO_FACE_CHAR chicken_man2 chicken_man1 TASK_CHAT_WITH_CHAR chicken_man1 chicken_man2 TRUE TRUE TASK_CHAT_WITH_CHAR chicken_man2 chicken_man1 FALSE TRUE CREATE_OBJECT CIGAR 2393.4 -1898.8 12.55 chicken_ciggy TASK_PICK_UP_OBJECT chicken_man1 chicken_ciggy 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL -1 MARK_MODEL_AS_NO_LONGER_NEEDED WMYBELL MARK_MODEL_AS_NO_LONGER_NEEDED cigar create_chicken_men = 1 ENDIF ENDIF */ IF IS_CAR_DEAD sweet_car PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ELSE IF NOT IS_CAR_DEAD sweet_car IF car_blow_up = 0 IF IS_CHAR_IN_CAR scplayer sweet_car IF chicken_shop_blip_removed = 0 REMOVE_BLIP chicken_shop_blip ADD_BLIP_FOR_COORD 2404.1 -1891.5 12.3 chicken_shop_blip PRINT_NOW ( TWAR2_C ) 6000 1 //drive to ~Y~Cluckin' Bell~s~ drive through. blob_flag = 1 TIMERB = 0 chicken_shop_blip_removed = 1 ENDIF IF played_the_timer = 0 IF TIMERB > 4000 GOSUB load_and_play_audio_sweet3 played_the_timer = 1 ENDIF ELSE GOSUB load_and_play_audio_sweet3 ENDIF ELSE IF chicken_shop_blip_removed = 1 REMOVE_BLIP chicken_shop_blip ADD_BLIP_FOR_CAR sweet_car chicken_shop_blip SET_BLIP_AS_FRIENDLY chicken_shop_blip TRUE GOSUB get_back_in_the_car_sweet3_2 PRINT_NOW ( TW2_X ) 3000 1 //~s~Get back in the ~b~car~s~ SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer blob_flag = 0 chicken_shop_blip_removed = 0 ENDIF ENDIF ENDIF IF NOT IS_CAR_HEALTH_GREATER sweet_car 250 LOAD_MISSION_AUDIO 2 SOUND_SWE2_KC WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CHAR_DEAD sweet //OR failed_sweet3 = 1 PRINT_NOW ( SWE3_E ) 2000 1 //Sweet is dead! GOTO mission_sweet3_failed ENDIF IF IS_CHAR_DEAD ryder //OR failed_sweet3 = 1 PRINT_NOW ( SWE3_F ) 2000 1 //Ryder is dead! GOTO mission_sweet3_failed ENDIF IF IS_CHAR_DEAD big_smoke //OR failed_sweet3 = 1 PRINT_NOW ( SWE3_G ) 2000 1 //Smoke is dead! GOTO mission_sweet3_failed ENDIF IF IS_CAR_DEAD sweet_car //OR failed_sweet3 = 1 PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 PLAY_MISSION_AUDIO 2 PRINT_NOW ( SWE2_KC ) 2000 1 //Our ride’s totalled – everybody out! IF car_blow_up = 0 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD big_smoke TASK_LEAVE_CAR_IMMEDIATELY big_smoke sweet_car TASK_SMART_FLEE_CHAR big_smoke scplayer 100.0 10000 ENDIF IF NOT IS_CHAR_DEAD ryder TASK_LEAVE_CAR_IMMEDIATELY ryder sweet_car TASK_SMART_FLEE_CHAR ryder scplayer 100.0 10000 ENDIF IF NOT IS_CHAR_DEAD sweet TASK_LEAVE_CAR_IMMEDIATELY sweet sweet_car TASK_SMART_FLEE_CHAR sweet scplayer 100.0 10000 ENDIF car_blow_up = 1 ENDIF ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CHAR_DEAD sweet PRINT_NOW ( SWE3_E ) 2000 1 //Sweet is dead! GOTO mission_sweet3_failed ENDIF IF IS_CHAR_DEAD ryder PRINT_NOW ( SWE3_F ) 2000 1 //Ryder is dead! GOTO mission_sweet3_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW ( SWE3_G ) 2000 1 //Smoke is dead! GOTO mission_sweet3_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ENDIF ENDWHILE PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ENDIF ENDIF ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW ( SWE3_E ) 2000 1 //Sweet is dead! GOTO mission_sweet3_failed ENDIF IF IS_CHAR_DEAD ryder PRINT_NOW ( SWE3_F ) 2000 1 //Ryder is dead! GOTO mission_sweet3_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW ( SWE3_G ) 2000 1 //Smoke is dead! GOTO mission_sweet3_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ENDIF ENDWHILE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF CLEAR_PRINTS SET_FIXED_CAMERA_POSITION 2405.9749 -1882.4752 15.2036 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2405.5693 -1883.3892 15.2158 JUMP_CUT // **************************************DRIVE THROUGH CUT SCENE****************************************************** DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //SET_CAR_DENSITY_MULTIPLIER 0.0 //SET_PED_DENSITY_MULTIPLIER 0.0 //LOAD_SCENE_IN_DIRECTION 2394.2866 -1918.8990 12.3828 267.6804 IF NOT IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_COORDINATES scplayer 2364.1926 -1914.0768 12.4235 ELSE WARP_CHAR_FROM_CAR_TO_COORD scplayer 2364.1926 -1914.0768 12.4235 ENDIF DELETE_CHAR big_smoke DELETE_CHAR sweet DELETE_CHAR ryder DELETE_CAR sweet_car MARK_MODEL_AS_NO_LONGER_NEEDED FAM3 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS2 MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO MARK_MODEL_AS_NO_LONGER_NEEDED TEC9 MARK_MODEL_AS_NO_LONGER_NEEDED VOODOO //MARK_MODEL_AS_NO_LONGER_NEEDED WMYBELL MARK_MODEL_AS_NO_LONGER_NEEDED cigar UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 UNLOAD_SPECIAL_CHARACTER 3 LOAD_SCENE_IN_DIRECTION 2397.6443 -1880.2762 23.8686 160.0 CLEAR_AREA 2404.1 -1891.5 12.3 120.0 TRUE MAKE_PLAYER_SAFE_FOR_CUTSCENE Player1 SWITCH_STREAMING OFF LOAD_CUTSCENE SWEET2B WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE CLEAR_AREA 2404.1 -1891.5 12.3 120.0 TRUE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE //SET_CAR_DENSITY_MULTIPLIER 1.0 //SET_PED_DENSITY_MULTIPLIER 1.0 DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE // ****************************************END OF CUTSCENE********************************** REQUEST_MODEL VOODOO REQUEST_MODEL FAM3 REQUEST_MODEL FAM2 REQUEST_MODEL BALLAS2 REQUEST_MODEL GREENWOO LOAD_SPECIAL_CHARACTER 1 smoke LOAD_SPECIAL_CHARACTER 2 sweet LOAD_SPECIAL_CHARACTER 3 ryder2 REQUEST_MODEL TEC9 LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED VOODOO OR NOT HAS_MODEL_LOADED FAM3 OR NOT HAS_MODEL_LOADED BALLAS2 OR NOT HAS_MODEL_LOADED GREENWOO WAIT 0 ENDWHILE WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_SPECIAL_CHARACTER_LOADED 2 OR NOT HAS_SPECIAL_CHARACTER_LOADED 3 OR NOT HAS_MODEL_LOADED TEC9 WAIT 0 ENDWHILE SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 REMOVE_BLIP chicken_shop_blip //TASK_CAR_DRIVE_TO_COORD -1 -1 2230.11 -1659.91 14.30 25.0 MODE_NORMAL VOODOO DRIVINGMODE_AVOIDCARS OPEN_SEQUENCE_TASK kill_them_all_sweet3 TASK_CAR_DRIVE_TO_COORD -1 -1 2410.7388 -1960.0266 12.3906 13.0 MODE_NORMAL VOODOO DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 -1 2326.9031 -1969.6761 12.3738 15.0 MODE_NORMAL VOODOO DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 -1 2235.2625 -1891.3008 12.3828 18.0 MODE_NORMAL VOODOO DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 -1 2094.3066 -1891.8560 12.3738 18.0 MODE_NORMAL VOODOO DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 -1 2105.8198 -1754.1766 12.3984 20.0 MODE_NORMAL VOODOO DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 -1 2321.9136 -1736.0938 12.3828 20.0 MODE_NORMAL VOODOO DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 -1 2498.32 -1658.28 12.36 20.0 MODE_NORMAL VOODOO DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 -1 2502.89 -1674.71 12.37 15.0 MODE_NORMAL VOODOO DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK kill_them_all_sweet3 CUSTOM_PLATE_FOR_NEXT_CAR GREENWOO &GROVE4L_ CREATE_CAR GREENWOO 2396.36 -1917.96 12.38 sweet_car SET_CAR_PROOFS sweet_car FALSE TRUE FALSE FALSE FALSE CHANGE_CAR_COLOUR sweet_car 59 34 SET_CAN_BURST_CAR_TYRES sweet_car FALSE MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO CREATE_CHAR_AS_PASSENGER sweet_car PEDTYPE_MISSION1 SPECIAL01 2 big_smoke SET_ANIM_GROUP_FOR_CHAR big_smoke fatman SET_CHAR_HEADING big_smoke 84.5 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER big_smoke sweet_car 10000 1 GIVE_WEAPON_TO_CHAR big_smoke WEAPONTYPE_TEC9 99999 SET_CHAR_NEVER_TARGETTED big_smoke TRUE SET_CHAR_SUFFERS_CRITICAL_HITS big_smoke FALSE SET_CHAR_HEALTH big_smoke 500 SET_CHAR_CANT_BE_DRAGGED_OUT big_smoke TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED big_smoke TRUE SET_CHAR_DECISION_MAKER big_smoke smokes_decision SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR big_smoke FALSE CREATE_CHAR_AS_PASSENGER sweet_car PEDTYPE_MISSION1 SPECIAL02 1 sweet SET_ANIM_GROUP_FOR_CHAR sweet gang2 SET_CHAR_HEADING sweet 167.8 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER sweet sweet_car 10000 2 GIVE_WEAPON_TO_CHAR sweet WEAPONTYPE_TEC9 99999 SET_CHAR_NEVER_TARGETTED sweet TRUE SET_CHAR_SUFFERS_CRITICAL_HITS sweet FALSE SET_CHAR_HEALTH sweet 500 SET_CHAR_CANT_BE_DRAGGED_OUT sweet TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED sweet TRUE SET_CHAR_DECISION_MAKER sweet sweets_decision SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR sweet FALSE CREATE_CHAR_AS_PASSENGER sweet_car PEDTYPE_MISSION1 SPECIAL03 0 ryder SET_ANIM_GROUP_FOR_CHAR ryder gang1 SET_CHAR_HEADING ryder 346.0 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER ryder sweet_car 10000 0 GIVE_WEAPON_TO_CHAR ryder WEAPONTYPE_TEC9 99999 SET_CHAR_NEVER_TARGETTED ryder TRUE SET_CHAR_SUFFERS_CRITICAL_HITS ryder FALSE SET_CHAR_HEALTH ryder 500 SET_CHAR_CANT_BE_DRAGGED_OUT ryder TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED ryder TRUE SET_CHAR_DECISION_MAKER ryder ryders_decision SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR ryder FALSE IF NOT IS_CAR_DEAD sweet_car //FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION sweet_car FALSE CLEAR_AREA 2396.36 -1917.96 12.38 10.0 TRUE SET_CAR_COORDINATES sweet_car 2396.36 -1917.96 12.38 SET_CAR_HEADING sweet_car 267.3 IF NOT IS_CHAR_IN_CAR scplayer sweet_car WARP_CHAR_INTO_CAR scplayer sweet_car ENDIF ENDIF CLEAR_AREA 2411.3098 -1928.8369 12.3906 10.0 TRUE CREATE_CAR VOODOO 2411.3098 -1928.8369 12.3906 drive_by_car1 CHANGE_CAR_COLOUR drive_by_car1 22 22 SET_CAN_BURST_CAR_TYRES drive_by_car1 FALSE SET_LOAD_COLLISION_FOR_CAR_FLAG drive_by_car1 FALSE SET_CAR_HEALTH drive_by_car1 2700 LOCK_CAR_DOORS drive_by_car1 CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_HEADING drive_by_car1 178.7106 ADD_BLIP_FOR_CAR drive_by_car1 drive_by_car1_blip CREATE_CHAR_INSIDE_CAR drive_by_car1 PEDTYPE_MISSION2 ballas2 drive_by_bloke[0] SET_CHAR_SUFFERS_CRITICAL_HITS drive_by_bloke[0] FALSE //SET_CHAR_CAN_BE_SHOT_IN_VEHICLE drive_by_bloke[0] FALSE //SET_CHAR_HEALTH drive_by_bloke[0] 120 GIVE_WEAPON_TO_CHAR drive_by_bloke[0] WEAPONTYPE_TEC9 99999 SET_CURRENT_CHAR_WEAPON drive_by_bloke[0] WEAPONTYPE_TEC9 SET_CHAR_ACCURACY drive_by_bloke[0] 40 PERFORM_SEQUENCE_TASK drive_by_bloke[0] kill_them_all_sweet3 //DRIVE TO HUB CLEAR_SEQUENCE_TASK kill_them_all_sweet3 CREATE_CHAR_AS_PASSENGER drive_by_car1 PEDTYPE_MISSION2 ballas2 0 drive_by_bloke[1] SET_CHAR_SUFFERS_CRITICAL_HITS drive_by_bloke[1] FALSE //SET_CHAR_CAN_BE_SHOT_IN_VEHICLE drive_by_bloke[1] FALSE //SET_CHAR_HEALTH drive_by_bloke[1] 120 GIVE_WEAPON_TO_CHAR drive_by_bloke[1] WEAPONTYPE_TEC9 99999 SET_CURRENT_CHAR_WEAPON drive_by_bloke[1] WEAPONTYPE_TEC9 SET_CHAR_ACCURACY drive_by_bloke[1] 40 TASK_DRIVE_BY drive_by_bloke[1] -1 sweet_car 0.0 0.0 0.0 5000.0 DRIVEBY_AI_ALL_DIRN TRUE 60 CREATE_CHAR PEDTYPE_MISSION1 FAM2 2506.45 -1681.02 12.53 sweet3_mate1 //good guy Gang bloke1 SET_CHAR_HEADING sweet3_mate1 80.0 SET_CHAR_HEALTH sweet3_mate1 30 GIVE_WEAPON_TO_CHAR sweet3_mate1 WEAPONTYPE_TEC9 99999 SET_CHAR_STAY_IN_SAME_PLACE sweet3_mate1 TRUE SET_CHAR_NEVER_TARGETTED sweet3_mate1 TRUE CREATE_CHAR PEDTYPE_MISSION1 FAM3 2507.3 -1680.1 13.0 sweet3_mate2 //good guy Gang bloke2 SET_CHAR_HEADING sweet3_mate2 90.0 SET_CHAR_HEALTH sweet3_mate2 30 GIVE_WEAPON_TO_CHAR sweet3_mate2 WEAPONTYPE_TEC9 99999 SET_CHAR_STAY_IN_SAME_PLACE sweet3_mate2 TRUE SET_CHAR_NEVER_TARGETTED sweet3_mate2 TRUE TASK_CHAT_WITH_CHAR sweet3_mate1 sweet3_mate2 TRUE TRUE TASK_CHAT_WITH_CHAR sweet3_mate2 sweet3_mate1 FALSE TRUE IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD sweet_car SET_CAR_HEALTH sweet_car 3100 IF IS_CHAR_IN_CAR ryder sweet_car SET_CURRENT_CHAR_WEAPON ryder WEAPONTYPE_TEC9 TASK_DRIVE_BY ryder -1 drive_by_car1 0.0 0.0 0.0 5000.0 DRIVEBY_AI_ALL_DIRN TRUE 99 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD sweet IF NOT IS_CAR_DEAD sweet_car IF IS_CHAR_IN_CAR sweet sweet_car TASK_DRIVE_BY sweet -1 drive_by_car1 0.0 0.0 0.0 5000.0 DRIVEBY_AI_ALL_DIRN FALSE 99 ENDIF ENDIF ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED VOODOO MARK_MODEL_AS_NO_LONGER_NEEDED FAM3 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER TIMERB = 0 print_sweet3_text = 0 drive_by_index = 0 chicken_shop_blip_removed = 0 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_GANG_GROVE PEDTYPE_MISSION1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 PEDTYPE_GANG_GROVE SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 PEDTYPE_PLAYER1 LOAD_SCENE_IN_DIRECTION 2396.36 -1917.96 12.38 267.3 DO_FADE 1000 FADE_IN sweet3_index = 0 sweet3_audio_is_playing = 0 sweet3_cutscene_flag = 0 sweet3_chat_switch = sweet3_CHAT3 GOSUB sweet3_chat_switch played_the_timer = 0 played_gang_help_text = 0 CLEAR_WANTED_LEVEL player1 ENABLE_AMBIENT_CRIME FALSE played_the_car_dialoge = 0 //VIEW_INTEGER_VARIABLE CurrentcarHealthValue CurrentcarHealthValue //VIEW_INTEGER_VARIABLE COMPARE_CurrentcarHealthValue COMPARE_CurrentcarHealthValue //VIEW_INTEGER_VARIABLE played_the_car_dialoge played_the_car_dialoge played_first_ouch_samples = 0 baller_bloke_dead_in_car = 0 GOTO skip_this_shite ADD_BLIP_FOR_CHAR drive_by_bloke[0] drive_by_bloke_blip1 ADD_BLIP_FOR_CHAR drive_by_bloke[1] drive_by_bloke_blip2 skip_this_shite: //WHILE NOT IS_CAR_DEAD drive_by_car1 //KILL THE BALLARS CAR WHILE NOT IS_CHAR_DEAD drive_by_bloke[0] OR NOT IS_CHAR_DEAD drive_by_bloke[1] WAIT 0 IF NOT IS_CAR_DEAD drive_by_car1 GET_AREA_VISIBLE SW3_current_area_visible IF CAN_PLAYER_START_MISSION player1 IF SW3_current_area_visible = 0 //DEATH CUT SCENE IF LOCATE_CAR_3D drive_by_car1 2502.89 -1674.71 12.37 8.0 8.0 5.0 FALSE AND NOT IS_CHAR_DEAD drive_by_bloke[0] AND NOT IS_CHAR_DEAD drive_by_bloke[1] //AND Return_Progress = 6 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON GET_AREA_VISIBLE SW3_current_area_visible IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer SW3_player_vehicle FREEZE_CAR_POSITION SW3_player_vehicle TRUE ELSE FREEZE_CHAR_POSITION scplayer TRUE ENDIF SET_AREA_VISIBLE 0 REQUEST_COLLISION 2497.2988 -1679.5421 LOAD_SCENE_IN_DIRECTION 2513.5444 -1682.8500 14.1195 41.0 CLEAR_AREA 2513.5444 -1682.8500 14.1195 70.0 TRUE SET_FIXED_CAMERA_POSITION 2514.3994 -1683.3451 14.2746 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2513.5444 -1682.8500 14.1195 JUMP_CUT IF NOT IS_CHAR_DEAD drive_by_bloke[0] IF NOT IS_CAR_DEAD drive_by_car1 TASK_CAR_DRIVE_TO_COORD drive_by_bloke[0] drive_by_car1 2386.24 -1658.95 12.38 1.0 MODE_STRAIGHTLINE VOODOO DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF IF NOT IS_CHAR_DEAD drive_by_bloke[1] CLEAR_CHAR_TASKS drive_by_bloke[1] ENDIF DO_FADE 500 FADE_IN TIMERA = 0 WHILE TIMERA < 500 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD drive_by_car1 IF NOT IS_CHAR_DEAD sweet3_mate2 IF NOT IS_CHAR_DEAD drive_by_bloke[1] IF IS_CHAR_IN_CAR drive_by_bloke[1] drive_by_car1 CLEAR_CHAR_TASKS drive_by_bloke[1] SET_CHAR_ACCURACY drive_by_bloke[1] 50 SET_CHAR_SHOOT_RATE drive_by_bloke[1] 90 TASK_DRIVE_BY drive_by_bloke[1] -1 -1 2507.6501 -1681.2400 12.8469 5000.0 DRIVEBY_AI_ALL_DIRN TRUE 100 ENDIF ENDIF ENDIF ELSE GOTO return_to_the_hood ENDIF //WRITE_DEBUG SLOWMO SET_TIME_SCALE 0.75 TIMERA = 0 WHILE NOT IS_CHAR_DEAD sweet3_mate2 OR NOT IS_CHAR_DEAD sweet3_mate1 WAIT 0 IF TIMERA > 2500 IF NOT IS_CHAR_DEAD sweet3_mate2 TASK_DIE sweet3_mate2 ENDIF ENDIF IF TIMERA > 2000 IF NOT IS_CHAR_DEAD sweet3_mate1 TASK_DIE sweet3_mate1 ENDIF ENDIF ENDWHILE /* IF NOT IS_CAR_DEAD drive_by_car1 IF NOT IS_CHAR_DEAD sweet3_mate1 IF NOT IS_CHAR_DEAD drive_by_bloke[1] IF IS_CHAR_IN_CAR drive_by_bloke[1] drive_by_car1 CLEAR_CHAR_TASKS drive_by_bloke[1] SET_CHAR_ACCURACY drive_by_bloke[1] 100 SET_CHAR_SHOOT_RATE drive_by_bloke[1] 90 TASK_DRIVE_BY drive_by_bloke[1] sweet3_mate1 -1 0.0 0.0 0.0 5000.0 DRIVEBY_AI_ALL_DIRN TRUE 100 ENDIF ENDIF ENDIF ELSE GOTO return_to_the_hood ENDIF */ /* TIMERA = 0 WHILE NOT IS_CHAR_DEAD sweet3_mate1 WAIT 0 IF TIMERA > 3000 IF NOT IS_CHAR_DEAD sweet3_mate1 TASK_DIE sweet3_mate1 ENDIF ENDIF ENDWHILE */ IF NOT IS_CHAR_DEAD drive_by_bloke[0] IF NOT IS_CAR_DEAD drive_by_car1 TASK_CAR_DRIVE_TO_COORD drive_by_bloke[0] drive_by_car1 2386.24 -1658.95 12.38 30.0 MODE_STRAIGHTLINE VOODOO DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF TIMERA = 0 WHILE NOT TIMERA > 3000 WAIT 0 ENDWHILE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD drive_by_bloke[0] CLEAR_CHAR_TASKS_IMMEDIATELY drive_by_bloke[0] ENDIF IF NOT IS_CHAR_DEAD drive_by_bloke[1] CLEAR_CHAR_TASKS_IMMEDIATELY drive_by_bloke[1] ENDIF DELETE_CAR drive_by_car1 DELETE_CHAR drive_by_bloke[0] DELETE_CHAR drive_by_bloke[1] SET_AREA_VISIBLE SW3_current_area_visible GET_CHAR_COORDINATES scplayer SW3_playerX SW3_playerY SW3_playerZ LOAD_SCENE SW3_playerX SW3_playerY SW3_playerZ WAIT 100 //PRINT_NOW ( SWE3_I ) 6000 1 // The Flats capped your homies! SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT IF IS_CHAR_IN_ANY_CAR scplayer IF NOT IS_CAR_DEAD SW3_player_vehicle FREEZE_CAR_POSITION SW3_player_vehicle FALSE ENDIF ELSE FREEZE_CHAR_POSITION scplayer FALSE ENDIF DO_FADE 500 FADE_IN ENDIF ENDIF ENDIF ENDIF IF IS_CAR_DEAD drive_by_car1 IF ballas_cunts_not_dead = 0 REMOVE_BLIP drive_by_car1_blip GOSUB drive_by_the_ballers PRINT_NOW ( K_BALLA ) 6000 1 // Kill the Baller gang member ballas_cunts_not_dead = 1 ENDIF ELSE IF NOT IS_CAR_HEALTH_GREATER drive_by_car1 250 IF ballas_cunts_not_dead = 0 REMOVE_BLIP drive_by_car1_blip GOSUB drive_by_the_ballers IF NOT IS_CHAR_DEAD drive_by_bloke[0] OR NOT IS_CHAR_DEAD drive_by_bloke[1] PRINT_NOW ( K_BALLA ) 6000 1 // Kill the Baller gang member ENDIF ballas_cunts_not_dead = 1 ENDIF ENDIF ENDIF IF baller_bloke_dead_in_car = 0 IF IS_CHAR_DEAD drive_by_bloke[0] IF NOT IS_CHAR_DEAD drive_by_bloke[1] REMOVE_BLIP drive_by_bloke_blip1 ADD_BLIP_FOR_CHAR drive_by_bloke[1] drive_by_bloke_blip1 TASK_KILL_CHAR_ON_FOOT drive_by_bloke[1] scplayer baller_bloke_dead_in_car = 1 ENDIF GOSUB drive_by_the_ballers IF NOT IS_CHAR_DEAD drive_by_bloke[0] OR NOT IS_CHAR_DEAD drive_by_bloke[1] PRINT_NOW ( K_BALLA ) 6000 1 // Kill the Baller gang member ENDIF ENDIF IF IS_CHAR_DEAD drive_by_bloke[1] IF NOT IS_CHAR_DEAD drive_by_bloke[0] REMOVE_BLIP drive_by_bloke_blip2 ADD_BLIP_FOR_CHAR drive_by_bloke[0] drive_by_bloke_blip2 TASK_KILL_CHAR_ON_FOOT drive_by_bloke[0] scplayer baller_bloke_dead_in_car = 1 ENDIF GOSUB drive_by_the_ballers IF NOT IS_CHAR_DEAD drive_by_bloke[0] OR NOT IS_CHAR_DEAD drive_by_bloke[1] PRINT_NOW ( K_BALLA ) 6000 1 // Kill the Baller gang member ENDIF ENDIF ENDIF IF IS_CHAR_DEAD drive_by_bloke[0] REMOVE_BLIP drive_by_bloke_blip1 ENDIF IF IS_CHAR_DEAD drive_by_bloke[1] REMOVE_BLIP drive_by_bloke_blip2 ENDIF IF IS_CHAR_DEAD sweet3_mate1 OR IS_CHAR_DEAD sweet3_mate2 PRINT_NOW ( TW2_Y ) 6000 1 // The Flats capped your homies! GOTO mission_sweet3_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ELSE IF NOT IS_CAR_DEAD sweet_car IF car_blow_up = 0 IF IS_CHAR_IN_CAR scplayer sweet_car IF chicken_shop_blip_removed = 0 REMOVE_BLIP chicken_shop_blip REMOVE_BLIP drive_by_car1_blip IF NOT IS_CAR_DEAD drive_by_car1 ADD_BLIP_FOR_CAR drive_by_car1 drive_by_car1_blip ENDIF PRINT_NOW ( SWE3_B ) 3000 1 // Chase down the gang car before he gets to the hub! CHECKPOINT_SAVE 99 chicken_shop_blip_removed = 1 ENDIF IF played_the_car_dialoge = 0 IF TIMERB > 2000 GOSUB load_and_play_audio_sweet3 ENDIF ENDIF IF played_gang_help_text = 0 IF TIMERB > 6000 PRINT_HELP SWE3_H played_gang_help_text = 1 ENDIF ENDIF GET_CAR_HEALTH sweet_car CurrentcarHealthValue IF played_first_ouch_samples = 0 IF played_the_car_dialoge = 0 IF sweet3_index > 11 COMPARE_CurrentcarHealthValue = CurrentcarHealthValue - 60 sweet3_index = 0 sweet3_audio_is_playing = 0 sweet3_cutscene_flag = 0 sweet3_chat_switch = sweet3_CHAT8 played_first_ouch_samples = 1 GOSUB sweet3_chat_switch played_the_car_dialoge = 1 ENDIF ENDIF ENDIF IF played_first_ouch_samples = 1 IF played_the_car_dialoge = 0 IF sweet3_index > 3 COMPARE_CurrentcarHealthValue = CurrentcarHealthValue - 60 sweet3_index = 0 sweet3_audio_is_playing = 0 sweet3_cutscene_flag = 0 sweet3_chat_switch = sweet3_CHAT9 played_first_ouch_samples = 2 GOSUB sweet3_chat_switch played_the_car_dialoge = 1 ENDIF ENDIF ENDIF IF played_the_car_dialoge = 1 IF NOT IS_CAR_HEALTH_GREATER sweet_car COMPARE_CurrentcarHealthValue played_the_car_dialoge = 0 ENDIF ENDIF ELSE IF chicken_shop_blip_removed = 1 REMOVE_BLIP chicken_shop_blip REMOVE_BLIP drive_by_car1_blip ADD_BLIP_FOR_CAR sweet_car chicken_shop_blip SET_BLIP_AS_FRIENDLY chicken_shop_blip TRUE GOSUB get_back_in_the_car_sweet3_2 PRINT_NOW ( TW2_X ) 3000 1 //~s~Get back in the ~b~car~s~. SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer chicken_shop_blip_removed = 0 ENDIF ENDIF ENDIF IF NOT IS_CAR_HEALTH_GREATER sweet_car 250 LOAD_MISSION_AUDIO 2 SOUND_SWE2_KA WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE CLEAR_MISSION_AUDIO 1 PLAY_MISSION_AUDIO 2 PRINT_NOW ( SWE2_KA ) 2000 1 //We’re on fire, everybody for themselves! IF car_blow_up = 0 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD big_smoke TASK_LEAVE_CAR_IMMEDIATELY big_smoke sweet_car TASK_SMART_FLEE_CHAR big_smoke scplayer 100.0 10000 ENDIF IF NOT IS_CHAR_DEAD ryder TASK_LEAVE_CAR_IMMEDIATELY ryder sweet_car TASK_SMART_FLEE_CHAR ryder scplayer 100.0 10000 ENDIF IF NOT IS_CHAR_DEAD sweet TASK_LEAVE_CAR_IMMEDIATELY sweet sweet_car TASK_SMART_FLEE_CHAR sweet scplayer 100.0 10000 ENDIF car_blow_up = 1 ENDIF ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CHAR_DEAD sweet PRINT_NOW ( SWE3_E ) 2000 1 //Sweet is dead! GOTO mission_sweet3_failed ENDIF IF IS_CHAR_DEAD ryder PRINT_NOW ( SWE3_F ) 2000 1 //Ryder is dead! GOTO mission_sweet3_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW ( SWE3_G ) 2000 1 //Smoke is dead! GOTO mission_sweet3_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ENDIF ENDWHILE PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ENDIF ENDIF ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW ( SWE3_E ) 2000 1 //Sweet is dead! GOTO mission_sweet3_failed ENDIF IF IS_CHAR_DEAD ryder PRINT_NOW ( SWE3_F ) 2000 1 //Ryder is dead! GOTO mission_sweet3_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW ( SWE3_G ) 2000 1 //Smoke is dead! GOTO mission_sweet3_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ENDIF IF IS_CAR_DEAD drive_by_car1 ENDIF ENDWHILE return_to_the_hood: IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS sweet ENDIF IF NOT IS_CHAR_DEAD ryder CLEAR_CHAR_TASKS ryder ENDIF REMOVE_BLIP drive_by_bloke_blip1 REMOVE_BLIP drive_by_bloke_blip2 IF NOT IS_CAR_DEAD sweet_car IF IS_CHAR_IN_CAR scplayer sweet_car blob_flag = 1 REMOVE_BLIP drive_by_car1_blip ADD_BLIP_FOR_COORD 2513.33 -1672.12 12.52 drive_by_car1_blip ELSE blob_flag = 0 ENDIF ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW ( SWE3_E ) 2000 1 //Sweet is dead! GOTO mission_sweet3_failed ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 sweet3_index = 0 sweet3_audio_is_playing = 0 sweet3_cutscene_flag = 0 sweet3_chat_switch = sweet3_CHAT4 GOSUB sweet3_chat_switch TIMERA = 0 played_the_timer = 0 IF NOT IS_CAR_DEAD sweet_car IF IS_CHAR_IN_CAR scplayer sweet_car PRINT_NOW ( TW2_W ) 6000 1 // Go back to Sweets gaff. ELSE PRINT_NOW ( TW2_X ) 6000 1 //~s~Get back in the ~b~car~s~. ENDIF ENDIF WHILE NOT LOCATE_CAR_3D sweet_car 2513.3 -1671.9 12.52 4.0 4.0 4.0 blob_flag //Drive Sweet and Ryder home OR NOT IS_CHAR_SITTING_IN_CAR scplayer sweet_car OR NOT IS_VEHICLE_ON_ALL_WHEELS sweet_car WAIT 0 IF IS_CAR_DEAD sweet_car PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ELSE IF NOT IS_CAR_DEAD sweet_car IF car_blow_up = 0 IF IS_CHAR_IN_CAR scplayer sweet_car IF chicken_shop_blip_removed = 0 REMOVE_BLIP chicken_shop_blip REMOVE_BLIP drive_by_car1_blip ADD_BLIP_FOR_COORD 2513.33 -1672.12 12.52 drive_by_car1_blip PRINT_NOW ( TW2_W ) 6000 1 // Go back to Sweets gaff. blob_flag = 1 TIMERA = 0 chicken_shop_blip_removed = 1 ENDIF IF played_the_timer = 0 IF TIMERA > 4000 IF IS_CHAR_IN_CAR scplayer sweet_car GOSUB load_and_play_audio_sweet3 played_the_timer = 1 ENDIF ENDIF ELSE GOSUB load_and_play_audio_sweet3 ENDIF ELSE IF chicken_shop_blip_removed = 1 REMOVE_BLIP drive_by_car1_blip REMOVE_BLIP chicken_shop_blip ADD_BLIP_FOR_CAR sweet_car chicken_shop_blip SET_BLIP_AS_FRIENDLY chicken_shop_blip TRUE GOSUB get_back_in_the_car_sweet3_2 PRINT_NOW ( TW2_X ) 6000 1 //~s~Get back in the ~b~car~s~. SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer blob_flag = 0 chicken_shop_blip_removed = 0 ENDIF ENDIF ENDIF IF NOT IS_CAR_HEALTH_GREATER sweet_car 250 LOAD_MISSION_AUDIO 2 SOUND_SWE2_KB WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE CLEAR_MISSION_AUDIO 1 PLAY_MISSION_AUDIO 2 PRINT_NOW ( SWE2_KB ) 2000 1 //She's gonna blow, bail out! IF car_blow_up = 0 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD big_smoke TASK_LEAVE_CAR_IMMEDIATELY big_smoke sweet_car TASK_SMART_FLEE_CHAR big_smoke scplayer 100.0 10000 ENDIF IF NOT IS_CHAR_DEAD ryder TASK_LEAVE_CAR_IMMEDIATELY ryder sweet_car TASK_SMART_FLEE_CHAR ryder scplayer 100.0 10000 ENDIF IF NOT IS_CHAR_DEAD sweet TASK_LEAVE_CAR_IMMEDIATELY sweet sweet_car TASK_SMART_FLEE_CHAR sweet scplayer 100.0 10000 ENDIF car_blow_up = 1 ENDIF ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CHAR_DEAD sweet PRINT_NOW ( SWE3_E ) 2000 1 //Sweet is dead! GOTO mission_sweet3_failed ENDIF IF IS_CHAR_DEAD ryder PRINT_NOW ( SWE3_F ) 2000 1 //Ryder is dead! GOTO mission_sweet3_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW ( SWE3_G ) 2000 1 //Smoke is dead! GOTO mission_sweet3_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ENDIF ENDWHILE PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ENDIF ENDIF ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW ( SWE3_E ) 2000 1 //Sweet is dead! GOTO mission_sweet3_failed ENDIF IF IS_CHAR_DEAD ryder PRINT_NOW ( SWE3_F ) 2000 1 //Ryder is dead! GOTO mission_sweet3_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW ( SWE3_G ) 2000 1 //Smoke is dead! GOTO mission_sweet3_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ENDIF ENDWHILE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF SET_FIXED_CAMERA_POSITION 2502.7639 -1670.7784 18.4320 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2503.6729 -1670.8512 18.0218 JUMP_CUT CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 sweet3_index = 0 sweet3_audio_is_playing = 0 sweet3_cutscene_flag = 0 sweet3_chat_switch = sweet3_CHAT5 GOSUB sweet3_chat_switch played_the_timer = 0 WHILE NOT sweet3_index = 1 WAIT 0 GOSUB load_and_play_audio_sweet3 ENDWHILE skip_sweet4_cutscene = 0 SKIP_CUTSCENE_START IF NOT IS_CHAR_DEAD ryder CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer ryder 15000 ENDIF WHILE NOT sweet3_index = 3 WAIT 0 GOSUB load_and_play_audio_sweet3 ENDWHILE //SET_FIXED_CAMERA_POSITION 2523.2974 -1679.7168 16.9665 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 2522.5039 -1679.2631 16.5610 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2522.3706 -1679.2603 15.9361 2516.4795 -1680.7637 17.4286 17000 TRUE CAMERA_SET_VECTOR_TRACK 2521.5347 -1678.7838 15.6635 2516.3811 -1679.9175 16.9049 17000 TRUE WHILE NOT sweet3_index = 8 WAIT 0 GOSUB load_and_play_audio_sweet3 ENDWHILE IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD sweet TASK_LEAVE_CAR sweet sweet_car TASK_GO_STRAIGHT_TO_COORD sweet 2519.3884 -1678.6890 13.7070 PEDMOVE_WALK 5000 ENDIF ENDIF WAIT 500 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD ryder TASK_LEAVE_CAR ryder sweet_car TASK_GO_STRAIGHT_TO_COORD ryder 2519.3884 -1678.6890 13.7070 PEDMOVE_WALK 5000 ENDIF ENDIF WAIT 6000 skip_sweet4_cutscene = 1 SKIP_CUTSCENE_END CLEAR_LOOK_AT scplayer CLEAR_PRINTS IF skip_sweet4_cutscene = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE WAIT 500 ENDIF SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT CAMERA_RESET_NEW_SCRIPTABLES DELETE_CHAR ryder DELETE_CHAR sweet CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 IF skip_sweet4_cutscene = 0 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF sweet3_index = 0 sweet3_audio_is_playing = 0 sweet3_cutscene_flag = 0 sweet3_chat_switch = sweet3_CHAT6 GOSUB sweet3_chat_switch played_the_timer = 0 TIMERA = 0 IF IS_CAR_DEAD sweet_car PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ENDIF IF NOT IS_CAR_DEAD sweet_car IF IS_CHAR_IN_CAR scplayer sweet_car blob_flag = 1 REMOVE_BLIP drive_by_car1_blip ADD_BLIP_FOR_COORD 2066.4648 -1695.4436 12.5547 drive_by_car1_blip ELSE blob_flag = 0 ENDIF ENDIF IF NOT IS_CAR_DEAD sweet_car IF IS_CHAR_IN_CAR scplayer sweet_car PRINT_NOW ( TW2_Z ) 6000 1 // Go back to Smokes gaff. ELSE PRINT_NOW ( TW2_X ) 6000 1 //~s~Get back in the ~b~car~s~. ENDIF ENDIF WHILE NOT LOCATE_CAR_3D sweet_car 2066.4648 -1695.4436 12.5547 4.0 3.5 4.0 blob_flag //Drive Smoke home OR NOT IS_CHAR_SITTING_IN_CAR scplayer sweet_car OR NOT IS_VEHICLE_ON_ALL_WHEELS sweet_car WAIT 0 IF IS_CAR_DEAD sweet_car PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ELSE IF NOT IS_CAR_DEAD sweet_car IF car_blow_up = 0 IF IS_CHAR_IN_CAR scplayer sweet_car IF chicken_shop_blip_removed = 0 REMOVE_BLIP chicken_shop_blip REMOVE_BLIP drive_by_car1_blip ADD_BLIP_FOR_COORD 2066.4648 -1695.4436 12.5547 drive_by_car1_blip PRINT_NOW ( TW2_Z ) 6000 1 // Go back to Smokes gaff. blob_flag = 1 TIMERA = 0 chicken_shop_blip_removed = 1 ENDIF IF played_the_timer = 0 IF TIMERA > 4000 IF IS_CHAR_IN_CAR scplayer sweet_car GOSUB load_and_play_audio_sweet3 played_the_timer = 1 ENDIF ENDIF ELSE GOSUB load_and_play_audio_sweet3 ENDIF ELSE IF chicken_shop_blip_removed = 1 REMOVE_BLIP drive_by_car1_blip REMOVE_BLIP chicken_shop_blip ADD_BLIP_FOR_CAR sweet_car chicken_shop_blip SET_BLIP_AS_FRIENDLY chicken_shop_blip TRUE GOSUB get_back_in_the_car_sweet3_1 PRINT_NOW ( TW2_X ) 6000 1 //~s~Get back in the ~b~car~s~. SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer blob_flag = 0 chicken_shop_blip_removed = 0 ENDIF ENDIF ENDIF IF NOT IS_CAR_HEALTH_GREATER sweet_car 250 LOAD_MISSION_AUDIO 2 SOUND_SWE2_KB WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE CLEAR_MISSION_AUDIO 1 PLAY_MISSION_AUDIO 2 PRINT_NOW ( SWE2_KB ) 2000 1 //She’s gonna blow, bail out! IF car_blow_up = 0 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD big_smoke TASK_LEAVE_CAR_IMMEDIATELY big_smoke sweet_car TASK_SMART_FLEE_CHAR big_smoke scplayer 100.0 10000 ENDIF car_blow_up = 1 ENDIF ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW ( SWE3_G ) 2000 1 //Smoke is dead! GOTO mission_sweet3_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ENDIF ENDWHILE PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ENDIF ENDIF ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW ( SWE3_G ) 2000 1 //Smoke is dead! GOTO mission_sweet3_failed ENDIF IF IS_CAR_DEAD sweet_car PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! GOTO mission_sweet3_failed ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 sweet3_index = 0 sweet3_audio_is_playing = 0 sweet3_cutscene_flag = 0 sweet3_chat_switch = sweet3_CHAT7 GOSUB sweet3_chat_switch played_the_timer = 0 SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF SET_PLAYER_IN_CAR_CAMERA_MODE ZOOM_TWO //SET_FIXED_CAMERA_POSITION 2082.4807 -1691.1003 16.0404 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 2081.6516 -1691.6210 15.8370 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2079.1089 -1703.5612 17.6928 2067.1624 -1703.3151 13.4746 17000 TRUE CAMERA_SET_VECTOR_TRACK 2078.2512 -1703.2059 17.3208 2067.1052 -1702.3304 13.6396 17000 TRUE WAIT 500 IF NOT IS_CHAR_DEAD big_smoke CLEAR_LOOK_AT scplayer TASK_LOOK_AT_CHAR scplayer big_smoke 15000 ENDIF skip_sweet4_cutscene = 0 SKIP_CUTSCENE_START WHILE NOT sweet3_index = 1 WAIT 0 GOSUB load_and_play_audio_sweet3 ENDWHILE WHILE NOT sweet3_index = 5 WAIT 0 GOSUB load_and_play_audio_sweet3 ENDWHILE IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD big_smoke TASK_LEAVE_CAR big_smoke sweet_car TASK_GO_STRAIGHT_TO_COORD big_smoke 2058.4043 -1697.1659 12.5547 PEDMOVE_WALK 8000 ENDIF ENDIF WAIT 5000 skip_sweet4_cutscene = 1 SKIP_CUTSCENE_END CLEAR_LOOK_AT scplayer CLEAR_PRINTS IF skip_sweet4_cutscene = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE WAIT 500 ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CAMERA_RESET_NEW_SCRIPTABLES DELETE_CHAR big_smoke SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT IF skip_sweet4_cutscene = 0 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF GOTO mission_sweet3_passed // **************************************** Mission sweet3 failed ************************** mission_sweet3_failed: SET_TIME_SCALE 1.0 PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // **************************************** mission swee t3 passed *************************** mission_sweet3_passed: REGISTER_MISSION_PASSED ( SWEET_3 ) PRINT_WITH_NUMBER_BIG ( M_PASSS ) 200 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 5 ADD_SCORE player1 200 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 flag_sweet_mission_counter ++ SET_INT_STAT PASSED_SWEET2 1 PLAYER_MADE_PROGRESS 1 RETURN // ********************************** mission cleanup ************************************** mission_cleanup_sweet3: REMOVE_CHAR_ELEGANTLY big_smoke REMOVE_CHAR_ELEGANTLY ryder REMOVE_CHAR_ELEGANTLY sweet REMOVE_BLIP chicken_shop_blip REMOVE_BLIP drive_by_car1_blip REMOVE_BLIP drive_by_bloke_blip1 REMOVE_BLIP drive_by_bloke_blip2 ENABLE_AMBIENT_CRIME TRUE IF NOT IS_CAR_DEAD sweet_car SET_CAN_BURST_CAR_TYRES sweet_car TRUE ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED FAM3 MARK_MODEL_AS_NO_LONGER_NEEDED FAM2 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS2 MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO MARK_MODEL_AS_NO_LONGER_NEEDED TEC9 MARK_MODEL_AS_NO_LONGER_NEEDED VOODOO //MARK_MODEL_AS_NO_LONGER_NEEDED WMYBELL MARK_MODEL_AS_NO_LONGER_NEEDED CIGAR MARK_CAR_AS_NO_LONGER_NEEDED drive_by_car1 MARK_CHAR_AS_NO_LONGER_NEEDED drive_by_bloke[0] MARK_CHAR_AS_NO_LONGER_NEEDED drive_by_bloke[1] UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 UNLOAD_SPECIAL_CHARACTER 3 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 SWITCH_CAR_GENERATOR gen_car7 101 GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN load_and_play_audio_sweet3: IF sweet3_audio_is_playing = 0 OR sweet3_audio_is_playing = 1 IF sweet3_index <= sweet3_cell_index_end IF TIMERA > 200 GOSUB play_sweet3_audio ENDIF ENDIF ENDIF IF sweet3_audio_is_playing = 2 IF HAS_MISSION_AUDIO_FINISHED 1 GOSUB stop_talking_sweet3 sweet3_audio_is_playing = 0 sweet3_index ++ sweet3_cutscene_flag = 0 CLEAR_PRINTS TIMERA = 0 ENDIF ENDIF RETURN play_sweet3_audio: IF sweet3_audio_is_playing = 0 LOAD_MISSION_AUDIO 1 sweet3_audio_chat[sweet3_index] sweet3_audio_is_playing = 1 ENDIF IF sweet3_audio_is_playing = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW ( $sweet3_chat[sweet3_index] ) 4000 1 //Let's head over to B-Dup's crib. PLAY_MISSION_AUDIO 1 GOSUB start_talking_sweet3 sweet3_audio_is_playing = 2 ENDIF ENDIF RETURN /* RYDER [] Aw, shit! You got ketchup all over the seat! RYDER [] But these was clean pants! //CJ, watch the damn road! */ start_talking_sweet3: //PLAYER**************************************************************** IF sweet3_audio_chat[sweet3_index] = SOUND_SWE2_BA OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_BL OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_GC OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_MD OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_NH OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_OA SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE START_CHAR_FACIAL_TALK scplayer 3000 RETURN ENDIF IF sweet3_audio_chat[sweet3_index] = SOUND_SWE2_OD OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_OF OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_OJ OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_PB SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE START_CHAR_FACIAL_TALK scplayer 3000 RETURN ENDIF //SWEET***************************************************************** IF sweet3_audio_chat[sweet3_index] = SOUND_SWE2_BM OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_CA OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_CC OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_HC OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_HD OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_MH IF NOT IS_CHAR_DEAD sweet SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet TRUE START_CHAR_FACIAL_TALK sweet 3000 RETURN ENDIF ENDIF IF sweet3_audio_chat[sweet3_index] = SOUND_SWE2_NE OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_MB OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_MC OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_ED //Well you can suck it up once we’re do OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_EE //Now keep you eyes on the Ballas car! IF NOT IS_CHAR_DEAD sweet SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet TRUE START_CHAR_FACIAL_TALK sweet 3000 RETURN ENDIF ENDIF //RYDER****************************************************************** IF sweet3_audio_chat[sweet3_index] = SOUND_SWE2_MA OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_MF OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_MG OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_NB OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_NC OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_EC //My soda! It’s all over the fucking fl IF NOT IS_CHAR_DEAD ryder SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryder TRUE START_CHAR_FACIAL_TALK ryder 3000 RETURN ENDIF ENDIF IF sweet3_audio_chat[sweet3_index] = SOUND_SWE2_DB OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_DD OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_EA IF NOT IS_CHAR_DEAD ryder SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryder TRUE START_CHAR_FACIAL_TALK ryder 3000 RETURN ENDIF ENDIF IF sweet3_audio_chat[sweet3_index] = SOUND_SWE2_BB OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_BF OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_BG OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_BK OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_GA OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_HA IF NOT IS_CHAR_DEAD ryder SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryder TRUE START_CHAR_FACIAL_TALK ryder 3000 ENDIF ELSE //SMOKE********************************************************************* IF NOT IS_CHAR_DEAD big_smoke SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke TRUE START_CHAR_FACIAL_TALK big_smoke 3000 ENDIF ENDIF RETURN stop_talking_sweet3: //PLAYER************************************************************** IF sweet3_audio_chat[sweet3_index] = SOUND_SWE2_BA OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_BL OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_GC OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_MD OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_NH OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_OA SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer RETURN ENDIF IF sweet3_audio_chat[sweet3_index] = SOUND_SWE2_OD OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_OF OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_OJ OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_PB SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer RETURN ENDIF //SWEET************************************************************** IF sweet3_audio_chat[sweet3_index] = SOUND_SWE2_BM OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_CA OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_CC OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_HC OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_HD OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_MH IF NOT IS_CHAR_DEAD sweet SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet FALSE STOP_CHAR_FACIAL_TALK sweet RETURN ENDIF ENDIF IF sweet3_audio_chat[sweet3_index] = SOUND_SWE2_NE OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_MB OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_MC OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_ED //Well you can suck it up once we’re do OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_EE //Now keep you eyes on the Ballas car! IF NOT IS_CHAR_DEAD sweet SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet FALSE STOP_CHAR_FACIAL_TALK sweet RETURN ENDIF ENDIF //RYDER************************************************************** IF sweet3_audio_chat[sweet3_index] = SOUND_SWE2_MA OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_MF OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_MG OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_NB OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_NC OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_EC //My soda! It’s all over the fucking fl IF NOT IS_CHAR_DEAD ryder SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryder FALSE STOP_CHAR_FACIAL_TALK ryder RETURN ENDIF ENDIF IF sweet3_audio_chat[sweet3_index] = SOUND_SWE2_DB OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_DD OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_EA IF NOT IS_CHAR_DEAD ryder SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryder FALSE STOP_CHAR_FACIAL_TALK ryder RETURN ENDIF ENDIF IF sweet3_audio_chat[sweet3_index] = SOUND_SWE2_BB OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_BF OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_BG OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_BK OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_GA OR sweet3_audio_chat[sweet3_index] = SOUND_SWE2_HA IF NOT IS_CHAR_DEAD ryder SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryder FALSE STOP_CHAR_FACIAL_TALK ryder ENDIF ELSE //SMOKE************************************************************** IF NOT IS_CHAR_DEAD big_smoke SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke FALSE STOP_CHAR_FACIAL_TALK big_smoke ENDIF ENDIF RETURN get_back_in_the_car_sweet3_1: CLEAR_MISSION_AUDIO 2 IF get_in_counter_sweet3 = 0 LOAD_MISSION_AUDIO 2 SOUND_SMOX_AA //Get in ENDIF IF get_in_counter_sweet3 = 1 LOAD_MISSION_AUDIO 2 SOUND_SMOX_AB //In the ride! ENDIF IF get_in_counter_sweet3 = 2 LOAD_MISSION_AUDIO 2 SOUND_SMOX_AC //Get in the car! ENDIF IF get_in_counter_sweet3 = 3 LOAD_MISSION_AUDIO 2 SOUND_SMOX_AD //Come on, playa, get in! ENDIF IF get_in_counter_sweet3 = 4 LOAD_MISSION_AUDIO 2 SOUND_SMOX_AE //Come on, wise man, get in the car! ENDIF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer CLEAR_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CHAR_DEAD big_smoke //PRINT_NOW ( SWE3_G ) 2000 1 //Smoke is dead! //failed_sweet3 = 1 RETURN ENDIF IF IS_CAR_DEAD sweet_car //PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! //failed_sweet3 = 1 RETURN ENDIF ENDWHILE PLAY_MISSION_AUDIO 2 IF get_in_counter_sweet3 = 0 PRINT_NOW ( SMOX_AA ) 3000 1 ENDIF IF get_in_counter_sweet3 = 1 PRINT_NOW ( SMOX_AB ) 3000 1 ENDIF IF get_in_counter_sweet3 = 2 PRINT_NOW ( SMOX_AC ) 3000 1 ENDIF IF get_in_counter_sweet3 = 3 PRINT_NOW ( SMOX_AD ) 3000 1 ENDIF IF get_in_counter_sweet3 = 4 PRINT_NOW ( SMOX_AE ) 3000 1 ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CHAR_DEAD big_smoke //PRINT_NOW ( SWE3_G ) 2000 1 //Smoke is dead! //failed_sweet3 = 1 RETURN ENDIF IF IS_CAR_DEAD sweet_car //PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! //failed_sweet3 = 1 RETURN ENDIF ENDWHILE get_in_counter_sweet3 ++ IF get_in_counter_sweet3 > 4 get_in_counter_sweet3 = 0 ENDIF RETURN get_back_in_the_car_sweet3_2: CLEAR_MISSION_AUDIO 2 IF get_in_counter_sweet3 = 0 LOAD_MISSION_AUDIO 2 SOUND_RYDX_AF //C'mon CJ, earn your keep! ENDIF IF get_in_counter_sweet3 = 1 LOAD_MISSION_AUDIO 2 SOUND_SWE1_BM //Get in, nigga! ENDIF IF get_in_counter_sweet3 = 2 LOAD_MISSION_AUDIO 2 SOUND_SWEX_BP //Don't be a buster, CJ! ENDIF IF get_in_counter_sweet3 = 3 LOAD_MISSION_AUDIO 2 SOUND_RYDX_AC //Get in fool! ENDIF IF get_in_counter_sweet3 = 4 LOAD_MISSION_AUDIO 2 SOUND_SWEX_BS //CJ, for once, don't be a punk! ENDIF IF get_in_counter_sweet3 = 5 LOAD_MISSION_AUDIO 2 SOUND_RYDX_AD //All aboard, CJ. ENDIF IF get_in_counter_sweet3 = 6 LOAD_MISSION_AUDIO 2 SOUND_SWE1_BG // CJ, GET IN! ENDIF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer CLEAR_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CHAR_DEAD sweet //PRINT_NOW ( SWE3_E ) 2000 1 //Sweet is dead! //failed_sweet3 = 1 RETURN ENDIF IF IS_CHAR_DEAD ryder //PRINT_NOW ( SWE3_F ) 2000 1 //Ryder is dead! //failed_sweet3 = 1 RETURN ENDIF IF IS_CHAR_DEAD big_smoke //PRINT_NOW ( SWE3_G ) 2000 1 //Smoke is dead! //failed_sweet3 = 1 RETURN ENDIF IF IS_CAR_DEAD sweet_car //PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! //failed_sweet3 = 1 RETURN ENDIF ENDWHILE PLAY_MISSION_AUDIO 2 IF get_in_counter_sweet3 = 0 PRINT_NOW ( RYDX_AF ) 3000 1 //C'mon CJ, earn your keep! ENDIF IF get_in_counter_sweet3 = 1 PRINT_NOW ( SWE1_BM ) 3000 1 //Get in, nigga! ENDIF IF get_in_counter_sweet3 = 2 PRINT_NOW ( SWEX_BP ) 3000 1 //Don't be a buster, CJ! ENDIF IF get_in_counter_sweet3 = 3 PRINT_NOW ( RYDX_AC ) 3000 1 //Get in fool! ENDIF IF get_in_counter_sweet3 = 4 PRINT_NOW ( SWEX_BS ) 3000 1 //CJ, for once, don't be a punk! ENDIF IF get_in_counter_sweet3 = 5 PRINT_NOW ( RYDX_AD ) 3000 1 //All aboard, CJ. ENDIF IF get_in_counter_sweet3 = 6 PRINT_NOW ( SWE1_BG ) 3000 1 // CJ, GET IN! ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CHAR_DEAD sweet //PRINT_NOW ( SWE3_E ) 2000 1 //Sweet is dead! //failed_sweet3 = 1 RETURN ENDIF IF IS_CHAR_DEAD ryder //PRINT_NOW ( SWE3_F ) 2000 1 //Ryder is dead! //failed_sweet3 = 1 RETURN ENDIF IF IS_CHAR_DEAD big_smoke //PRINT_NOW ( SWE3_G ) 2000 1 //Smoke is dead! //failed_sweet3 = 1 RETURN ENDIF IF IS_CAR_DEAD sweet_car //PRINT_NOW ( SWE3_D ) 2000 1 //The car is trashed! //failed_sweet3 = 1 RETURN ENDIF ENDWHILE get_in_counter_sweet3 ++ IF get_in_counter_sweet3 > 6 get_in_counter_sweet3 = 0 ENDIF RETURN drive_by_the_ballers: IF NOT IS_CHAR_DEAD drive_by_bloke[0] REMOVE_BLIP drive_by_bloke_blip1 ADD_BLIP_FOR_CHAR drive_by_bloke[0] drive_by_bloke_blip1 TASK_KILL_CHAR_ON_FOOT drive_by_bloke[0] scplayer IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD sweet_car IF IS_CHAR_IN_CAR ryder sweet_car CLEAR_CHAR_TASKS ryder TASK_DRIVE_BY ryder drive_by_bloke[0] -1 0.0 0.0 0.0 5000.0 DRIVEBY_AI_ALL_DIRN TRUE 70 ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD drive_by_bloke[1] REMOVE_BLIP drive_by_bloke_blip2 ADD_BLIP_FOR_CHAR drive_by_bloke[1] drive_by_bloke_blip2 TASK_KILL_CHAR_ON_FOOT drive_by_bloke[1] scplayer IF NOT IS_CHAR_DEAD sweet IF NOT IS_CAR_DEAD sweet_car IF IS_CHAR_IN_CAR sweet sweet_car CLEAR_CHAR_TASKS sweet TASK_DRIVE_BY sweet drive_by_bloke[1] -1 0.0 0.0 0.0 5000.0 DRIVEBY_AI_ALL_DIRN FALSE 70 ENDIF ENDIF ENDIF ENDIF RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* Sweet 2 ******************************************* // ********************************* GUNS GUNS GUNS **************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME sweet2 // Mission start stuff GOSUB mission_start_sweet2 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_sweet2_failed ENDIF GOSUB mission_cleanup_sweet2 MISSION_END // Variables for mission { LVAR_INT wanted_tag shooting_range_blip tag_target_counter smoke_sweet2_seq_1 smoke_group_spilt_blip sweet2_chat_switch played_smoke_samples LVAR_INT how_much_ammo tag_index playergroup_sw2 smoke_car_blip smoke_car_blip_removed big_smokes_blip smoke_sitting_in_car sweet2_cell_index_end LVAR_INT exp_barrel1 exp_barrel2 barrel2_exists smokes_decision gun_help smoke_sweet2_seq_2 Return_Status played_the_timer get_in_counter_sweet2 LVAR_INT smoke_sweet2_seq_3 smoke_idle_seq2 smoke_idle_seq big_smoke_group_spilt_blip smoke_shots_off emmet Return_Progress flag_player_control_back LVAR_INT sweet2_audio_chat[14] sweet2_index sweet2_audio_is_playing sweet2_cutscene_flag emmets_car refresh_char_weapon finished_mobile_phone_call LVAR_INT new_visible_area print_help_sweet2 skip_emmets_cutscene LVAR_FLOAT beer_bottleX[5] beer_bottleY[5] beer_bottleZ[5] VAR_TEXT_LABEL $sweet2_chat[14] // **************************************** Mission Start ********************************** sweet2_chat_switch: SWITCH sweet2_chat_switch CONST_INT SWEET2_CHAT1 0 CONST_INT SWEET2_CHAT2 1 CONST_INT SWEET2_CHAT3 2 CONST_INT SWEET2_CHAT4 3 CASE SWEET2_CHAT1 $sweet2_chat[0] = &SWE3_AA //What happened to the Families, where’s the love gone? $sweet2_chat[1] = &SWE3_AB //Shit happens. $sweet2_chat[2] = &SWE3_AC //Seville wrongs Temple, Temple wrongs Grove. $sweet2_chat[3] = &SWE3_AD //Bad blood leads to bad blood. $sweet2_chat[4] = &SWE3_AE //Way of the world. $sweet2_chat[5] = &SWE3_AF //Shit. The Families are a mess. Somebody should bring it all together. //$sweet2_chat[6] = &SWE3_AG //Make those Ballas sit up and beg! $sweet2_chat[6] = &SWE3_AH //I admire you, Carl. You’re a leader, a visionary. $sweet2_chat[7] = &SWE3_AJ //Remember me as you get to the top, my friend. $sweet2_chat[8] = &SWE3_AK //Give it a rest, smoke. You’re full of shit. sweet2_audio_chat[0] = SOUND_SWE3_AA //What happened to the Families, where’s the love gone? sweet2_audio_chat[1] = SOUND_SWE3_AB //Shit happens. sweet2_audio_chat[2] = SOUND_SWE3_AC //Seville wrongs Temple, Temple wrongs Grove. sweet2_audio_chat[3] = SOUND_SWE3_AD //Bad blood leads to bad blood. sweet2_audio_chat[4] = SOUND_SWE3_AE //Way of the world. sweet2_audio_chat[5] = SOUND_SWE3_AF //Shit. The Families are a mess. Somebody should bring it all together. //sweet2_audio_chat[6] = SOUND_SWE3_AG //Make those Ballas sit up and beg! sweet2_audio_chat[6] = SOUND_SWE3_AH //I admire you, Carl. You’re a leader, a visionary. sweet2_audio_chat[7] = SOUND_SWE3_AJ //Remember me as you get to the top, my friend. sweet2_audio_chat[8] = SOUND_SWE3_AK //Give it a rest, smoke. You’re full of shit. sweet2_cell_index_end = 8 BREAK CASE SWEET2_CHAT2 $sweet2_chat[0] = &SWE3_GA //Yo. You’re killah, dude, ice cold. $sweet2_chat[1] = &SWE3_GB //But remeber; real strength comes from within, my brother. $sweet2_chat[2] = &SWE3_GC //Word. $sweet2_chat[3] = &SWE3_GD //Guess Liberty didn’t soften you none. $sweet2_chat[4] = &SWE3_GE //Let’s split. $sweet2_chat[5] = &SWE3_GF //See y’round Emmet. $sweet2_chat[6] = &SWE3_GG //I’m 100% behind you on this, boys. $sweet2_chat[7] = &SWE3_GH //You didn’t get it from me, though. Remember that. $sweet2_chat[8] = &SWE3_GJ //And remember this. Emmet is the place for guns! $sweet2_chat[9] = &SWE3_GK //I always got high quality merchandise! $sweet2_chat[10] = &SWE3_GL //I been proudly serving the community for 30 years! $sweet2_chat[11] = &SWE3_GM //Crazy old fool. You drive $sweet2_chat[12] = &SWE3_GN //I seen newer cannons than this strap. Where to? $sweet2_chat[13] = &SWE3_GO //I’m real tired, dude, man, drop me off at my place. sweet2_audio_chat[0] = SOUND_SWE3_GA //Yo. You’re killah, dude, ice cold. sweet2_audio_chat[1] = SOUND_SWE3_GB //But remeber; real strength comes from within, my brother. sweet2_audio_chat[2] = SOUND_SWE3_GC //Word. sweet2_audio_chat[3] = SOUND_SWE3_GD //Guess Liberty didn’t soften you none. sweet2_audio_chat[4] = SOUND_SWE3_GE //Let’s split. sweet2_audio_chat[5] = SOUND_SWE3_GF //See y’round Emmet. sweet2_audio_chat[6] = SOUND_SWE3_GG //I’m 100% behind you on this, boys. sweet2_audio_chat[7] = SOUND_SWE3_GH //You didn’t get it from me, though. Remember that. sweet2_audio_chat[8] = SOUND_SWE3_GJ //And remember this. Emmet is the place for guns! sweet2_audio_chat[9] = SOUND_SWE3_GK //I always got high quality merchandise! sweet2_audio_chat[10] = SOUND_SWE3_GL //I been proudly serving the community for 30 years! sweet2_audio_chat[11] = SOUND_SWE3_GM //Crazy old fool. You drive sweet2_audio_chat[12] = SOUND_SWE3_GN //I seen newer cannons than this strap. Where to? sweet2_audio_chat[13] = SOUND_SWE3_GO //I’m real tired, dude, man, drop me off at my place. sweet2_cell_index_end = 13 BREAK CASE SWEET2_CHAT3 $sweet2_chat[0] = &SWE3_HA //What’s going on here man? Shit seems pretty fucked up? $sweet2_chat[1] = &SWE3_HB //People have to pen their eyes and their hearts, CJ. $sweet2_chat[2] = &SWE3_HC //What are you talking about? $sweet2_chat[3] = &SWE3_HD //I’m talking about the choices all men face, brother. $sweet2_chat[4] = &SWE3_HE //Sometimes, they seem real, but there’s no choice at all. $sweet2_chat[5] = &SWE3_HF //You’re still talking shit. You ain’t changed a bit. $sweet2_chat[6] = &SWE3_HG //Me? No, never. sweet2_audio_chat[0] = SOUND_SWE3_HA //What’s going on here man? Shit seems pretty fucked up? sweet2_audio_chat[1] = SOUND_SWE3_HB //People have to pen their eyes and their hearts, CJ. sweet2_audio_chat[2] = SOUND_SWE3_HC //What are you talking about? sweet2_audio_chat[3] = SOUND_SWE3_HD //I’m talking about the choices all men face, brother. sweet2_audio_chat[4] = SOUND_SWE3_HE //Sometimes, they seem real, but there’s no choice at all. sweet2_audio_chat[5] = SOUND_SWE3_HF //You’re still talking shit. You ain’t changed a bit. sweet2_audio_chat[6] = SOUND_SWE3_HG //Me? No, never. sweet2_cell_index_end = 6 BREAK CASE SWEET2_CHAT4 $sweet2_chat[0] = &MSWE07A //Yo mo fo! $sweet2_chat[1] = &MSWE07B //I thought you was representing? $sweet2_chat[2] = &MSWE07C //What? $sweet2_chat[3] = &MSWE07D //Correct me if I’m wrong, but I thought you was rolling with Grove Street again. $sweet2_chat[4] = &MSWE07E //I am, man, I am! $sweet2_chat[5] = &MSWE07F //I ain’t seen you in yo’colors yet! $sweet2_chat[6] = &MSWE07G //You gotta fly the flag, bro, $sweet2_chat[7] = &MSWE07H //these freaks ain’t gonna respect some cat if he ain’t representing! $sweet2_chat[8] = &MSWE07J //Ok, man, I just haven’t got around to it yet! $sweet2_chat[9] = &MSWE07K //There’s a Binco around the corner from the gym in Ganton, go get yourself some greens! sweet2_audio_chat[0] = SOUND_MSWE07A //Yo mo fo! sweet2_audio_chat[1] = SOUND_MSWE07B //I thought you was representing? sweet2_audio_chat[2] = SOUND_MSWE07C //What? sweet2_audio_chat[3] = SOUND_MSWE07D //Correct me if I’m wrong, but I thought you was rolling with Grove Street again. sweet2_audio_chat[4] = SOUND_MSWE07E //I am, man, I am! sweet2_audio_chat[5] = SOUND_MSWE07F //I ain’t seen you in yo’colors yet! sweet2_audio_chat[6] = SOUND_MSWE07G //You gotta fly the flag, bro, sweet2_audio_chat[7] = SOUND_MSWE07H //these freaks ain’t gonna respect some cat if he ain’t representing! sweet2_audio_chat[8] = SOUND_MSWE07J //Ok, man, I just haven’t got around to it yet! sweet2_audio_chat[9] = SOUND_MSWE07K //There’s a Binco around the corner from the gym in Ganton, go get yourself some greens! sweet2_cell_index_end = 9 BREAK ENDSWITCH RETURN mission_start_sweet2: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 tag_target_counter = 0 tag_index = 0 smoke_group_spilt_blip = 0 barrel2_exists = 0 gun_help = 0 smoke_shots_off = 0 smoke_car_blip_removed = 0 smoke_sitting_in_car = 0 played_the_timer = 0 get_in_counter_sweet2 = 0 beer_bottleX[0] = 2440.58 //on dumpster beer_bottleY[0] = -1979.89 beer_bottleZ[0] = 13.93 beer_bottleX[1] = 2440.14 //on washing machine beer_bottleY[1] = -1976.5 beer_bottleZ[1] = 13.44 beer_bottleX[2] = 2440.95 //on dumpster2 beer_bottleY[2] = -1973.76 beer_bottleZ[2] = 13.95 beer_bottleX[3] = 2448.97 //on fucked car beer_bottleY[3] = -1973.29 beer_bottleZ[3] = 13.35 beer_bottleX[4] = 2444.35 //on crate beer_bottleY[4] = -1970.61 beer_bottleZ[4] = 13.8 WAIT 0 LOAD_MISSION_TEXT SWEET2 // ****************************************START OF CUTSCENE******************************** SET_AREA_VISIBLE 1 LOAD_CUTSCENE SWEET3A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 // *****************************************END OF CUTSCENE********************************* FORCE_WEATHER WEATHER_SUNNY_LA LOAD_SPECIAL_CHARACTER 10 smoke REQUEST_MODEL glendale LOAD_ALL_MODELS_NOW WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 10 OR NOT HAS_MODEL_LOADED glendale WAIT 0 ENDWHILE //2504.4651 -1671.0807 12.3359 87.5066 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY smokes_decision SWITCH_CAR_GENERATOR gen_car7 0 CLEAR_AREA 2506.23 -1675.75 12.37 6.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR GLENDALE &_A2tmfK_ CREATE_CAR GLENDALE 2506.23 -1675.75 12.37 big_smoke_car CHANGE_CAR_COLOUR big_smoke_car 98 14 SET_CAR_HEADING big_smoke_car 148.0 SET_RADIO_CHANNEL RS_DISCO_FUNK_SOUL //CREATE_CHAR_AS_PASSENGER big_smoke_car PEDTYPE_CIVMALE SPECIAL01 0 big_smoke SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_GANG_GROVE PEDTYPE_MISSION1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 PEDTYPE_GANG_GROVE CREATE_CHAR PEDTYPE_MISSION1 SPECIAL10 2505.8691 -1672.7229 12.3778 big_smoke SET_CHAR_HEADING big_smoke 160.0 SET_CHAR_HEALTH big_smoke 500 SET_CHAR_NEVER_TARGETTED big_smoke TRUE SET_CHAR_SUFFERS_CRITICAL_HITS big_smoke FALSE SET_CHAR_WEAPON_SKILL big_smoke WEAPONSKILL_STD SET_CHAR_ACCURACY big_smoke 100 SET_CHAR_SHOOT_RATE big_smoke 30 SET_CHAR_ONLY_DAMAGED_BY_PLAYER big_smoke TRUE SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR big_smoke TRUE // 3MASTER - rockstar wants smoke to exit the car now SET_CHAR_DECISION_MAKER big_smoke smokes_decision SET_CHAR_COORDINATES scplayer 2515.28 -1673.44 12.73 SET_CHAR_HEADING scplayer 81.20 LOAD_SCENE 2516.54 -1671.20 12.87 DO_FADE 1000 FADE_IN SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT PRINT_NOW ( SWE2_A ) 10000 1 // Go to Emmets house to get a gun. SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER big_smoke big_smoke_car 5000 0 SET_CHAR_CANT_BE_DRAGGED_OUT big_smoke TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED big_smoke TRUE ADD_BLIP_FOR_CAR big_smoke_car smoke_car_blip SET_BLIP_AS_FRIENDLY smoke_car_blip TRUE ADD_BLIP_FOR_COORD 2453.07 -2003.96 12.56 shooting_range_blip REMOVE_BLIP shooting_range_blip blob_flag = 0 //GOTO skip_to_end_cut_scene sweet2_index = 0 sweet2_audio_is_playing = 0 sweet2_cutscene_flag = 0 sweet2_chat_switch = SWEET2_CHAT1 GOSUB sweet2_chat_switch TIMERB = 0 played_the_timer = 0 //GOTO skip_hereeeeeeeeeeeeeeee WHILE NOT LOCATE_CAR_3D big_smoke_car 2453.07 -2003.96 12.56 4.0 4.0 4.0 blob_flag //Emmets OR NOT IS_CHAR_SITTING_IN_CAR big_smoke big_smoke_car OR NOT IS_VEHICLE_ON_ALL_WHEELS big_smoke_car WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_sweet2_passed ENDIF IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CAR_DEAD big_smoke_car IF IS_CHAR_IN_CAR scplayer big_smoke_car IF smoke_car_blip_removed = 0 REMOVE_BLIP smoke_car_blip REMOVE_BLIP shooting_range_blip ADD_BLIP_FOR_COORD 2453.07 -2003.96 12.56 shooting_range_blip blob_flag = 1 smoke_car_blip_removed = 1 ENDIF //IF played_the_timer = 0 IF TIMERB > 5000 GOSUB load_and_play_audio_sweet2 //played_the_timer = 1 ENDIF //ELSE //GOSUB load_and_play_audio_sweet2 //ENDIF ELSE IF smoke_car_blip_removed = 1 REMOVE_BLIP shooting_range_blip REMOVE_BLIP smoke_car_blip ADD_BLIP_FOR_CAR big_smoke_car smoke_car_blip SET_BLIP_AS_FRIENDLY smoke_car_blip TRUE GOSUB get_back_in_the_car_sweet2 PRINT_NOW (SWE2_L) 6000 1 //Get back in the car SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer blob_flag = 0 smoke_car_blip_removed = 0 ENDIF ENDIF ELSE PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF ELSE PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 2452.9490 -2011.8243 16.3096 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2452.9805 -2010.9032 15.9217 JUMP_CUT IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CAR_DEAD big_smoke_car //REMOVE_CHAR_FROM_GROUP big_smoke OPEN_SEQUENCE_TASK smoke_sweet2_seq_1 //Flat1 TASK_LEAVE_CAR -1 big_smoke_car FLUSH_ROUTE EXTEND_ROUTE 2453.5151 -1980.7709 12.5547 EXTEND_ROUTE 2450.4863 -1981.6593 12.5547 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_WALK FOLLOW_ROUTE_ONCE CLOSE_SEQUENCE_TASK smoke_sweet2_seq_1 PERFORM_SEQUENCE_TASK big_smoke smoke_sweet2_seq_1 CLEAR_SEQUENCE_TASK smoke_sweet2_seq_1 WAIT 800 IF NOT IS_CAR_DEAD big_smoke_car TASK_LEAVE_CAR scplayer big_smoke_car TASK_GO_STRAIGHT_TO_COORD scplayer 2453.29 -1983.71 12.54 PEDMOVE_WALK 5000 ENDIF ENDIF ENDIF WAIT 2000 GOSUB set_gang_density_to_zero // ****************************************START OF CUTSCENE******************************** DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 CLEAR_AREA 2448.7344 -1976.1932 12.5469 200.0 FALSE //SET_AREA_VISIBLE 1 MAKE_PLAYER_SAFE_FOR_CUTSCENE Player1 //SWITCH_STREAMING OFF LOAD_CUTSCENE SWEET3B WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE //SET_AREA_VISIBLE 0 // *****************************************END OF CUTSCENE********************************* LOAD_SPECIAL_CHARACTER 1 emmet REQUEST_MODEL DYN_WINE_BIG //REQUEST_MODEL barrel4 REQUEST_ANIMATION GANGS REQUEST_ANIMATION CRACK REQUEST_ANIMATION COLT45 REQUEST_ANIMATION FAT REQUEST_MODEL Colt45 REQUEST_MODEL tampa LOAD_ALL_MODELS_NOW WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_MODEL_LOADED DYN_WINE_BIG OR NOT HAS_ANIMATION_LOADED GANGS OR NOT HAS_ANIMATION_LOADED CRACK OR NOT HAS_MODEL_LOADED Colt45 OR NOT HAS_ANIMATION_LOADED COLT45 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED tampa OR NOT HAS_ANIMATION_LOADED FAT WAIT 0 ENDWHILE CLEAR_AREA 2446.49 -1966.47 12.54 4.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR TAMPA &_FELTCH_ CREATE_CAR TAMPA 2446.49 -1965.0 12.54 emmets_car SET_CAR_HEADING emmets_car 101.85 //SET_CAN_BURST_CAR_TYRES emmets_car FALSE LOCK_CAR_DOORS emmets_car CARLOCK_LOCKED SET_CAR_PROOFS emmets_car TRUE TRUE TRUE TRUE TRUE CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 2451.8340 -1976.8108 12.5469 emmet SET_CHAR_HEADING emmet 75.6292 SET_CHAR_HEALTH emmet 600 SET_CHAR_NEVER_TARGETTED emmet TRUE SET_CHAR_SUFFERS_CRITICAL_HITS emmet FALSE //CREATE_OBJECT barrel4 2441.9578 -1973.0739 12.5469 exp_barrel1 //CREATE_OBJECT barrel4 2444.3755 -1979.8214 12.5469 exp_barrel2 //SET_OBJECT_COLLISION exp_barrel1 FALSE //SET_OBJECT_COLLISION exp_barrel2 FALSE REMOVE_BLIP shooting_range_blip GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_PISTOL how_much_ammo GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_PISTOL 30000 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PISTOL IF NOT IS_CHAR_DEAD big_smoke GIVE_WEAPON_TO_CHAR big_smoke WEAPONTYPE_PISTOL 10000 SET_CURRENT_CHAR_WEAPON big_smoke WEAPONTYPE_PISTOL ENDIF // **********************************************SHOOT BOTTLES ROUND 1***************************************************** CLEAR_PRINTS SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_NEAR_CLIP 0.2 LOAD_MISSION_AUDIO 1 SOUND_SWE3_BC //Die, little glass Ballas fool! DO_FADE 1000 FADE_IN IF NOT IS_CHAR_DEAD big_smoke CLEAR_CHAR_TASKS_IMMEDIATELY big_smoke SET_CHAR_COORDINATES big_smoke 2450.4653 -1980.5774 12.5469 SET_CHAR_HEADING big_smoke 79.2792 ENDIF CREATE_OBJECT DYN_WINE_BIG beer_bottleX[0] beer_bottleY[0] beer_bottleZ[0] tag_target[0] //on dumpster //SET_OBJECT_DYNAMIC tag_target[0] FALSE SET_OBJECT_HEADING tag_target[0] 90.0 MAKE_OBJECT_TARGETTABLE tag_target[0] TRUE IF NOT IS_CAR_DEAD big_smoke_car SET_CAR_COORDINATES big_smoke_car 2452.6460 -2003.8763 12.5540 SET_CAR_HEADING big_smoke_car 100.2244 ENDIF SET_FIXED_CAMERA_POSITION 2445.7966 -1976.5854 14.8864 0.0 0.0 0.0 //Shot of bottle. POINT_CAMERA_AT_POINT 2444.9832 -1977.1511 14.7514 JUMP_CUT IF NOT IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_COORDINATES scplayer 2453.8206 -1978.7771 12.5469 ELSE WARP_CHAR_FROM_CAR_TO_COORD scplayer 2453.8206 -1978.7771 12.5469 ENDIF SET_CHAR_HEADING scplayer 89.5159 smoke_group_spilt_blip = 0 WAIT 2500 SET_FIXED_CAMERA_POSITION 2451.3645 -1980.3950 14.2880 0.0 0.0 0.0 //Smoke. POINT_CAMERA_AT_POINT 2450.3652 -1980.3633 14.2636 JUMP_CUT smoke_shots_off = 0 /* OPEN_SEQUENCE_TASK smoke_idle_seq //TASK_ACHIEVE_HEADING -1 77.0 SET_SEQUENCE_TO_REPEAT smoke_idle_seq 1 CLOSE_SEQUENCE_TASK smoke_idle_seq */ OPEN_SEQUENCE_TASK smoke_sweet2_seq_2 TASK_SHOOT_AT_COORD -1 beer_bottleX[0] beer_bottleY[0] beer_bottleZ[0] 1300 TASK_PLAY_ANIM -1 prtial_gngtlkH GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_STAND_STILL -1 5000 TASK_PLAY_ANIM -1 Bbalbat_Idle_02 CRACK 4.0 FALSE FALSE FALSE FALSE -1 TASK_STAND_STILL -1 5000 TASK_PLAY_ANIM -1 prtial_gngtlkD GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_STAND_STILL -1 5000 CLOSE_SEQUENCE_TASK smoke_sweet2_seq_2 WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SWE3_BC ) 10000 1 //Die, little glass Ballas fool! IF NOT IS_CHAR_DEAD big_smoke //TASK_PLAY_ANIM big_smoke colt45_fire COLT45 4.0 FALSE FALSE FALSE TRUE 2000 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke TRUE START_CHAR_FACIAL_TALK big_smoke 3000 ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE IF NOT IS_CHAR_DEAD big_smoke CLEAR_PRINTS STOP_CHAR_FACIAL_TALK big_smoke PERFORM_SEQUENCE_TASK big_smoke smoke_sweet2_seq_2 CLEAR_SEQUENCE_TASK smoke_sweet2_seq_2 ENDIF refresh_char_weapon = 0 WHILE NOT tag_target_counter = 1 WAIT 0 IF DOES_OBJECT_EXIST tag_target[0] IF IS_PLAYER_TARGETTING_OBJECT player1 tag_target[0] GOSUB chars_look_at_targets ELSE GOSUB stop_chars_look_at_targets ENDIF IF HAS_OBJECT_BEEN_DAMAGED tag_target[0] MAKE_OBJECT_TARGETTABLE tag_target[0] FALSE DELETE_OBJECT tag_target[0] tag_target_counter ++ ENDIF ENDIF IF NOT LOCATE_CHAR_ON_FOOT_3D scplayer 2448.9602 -1973.5446 13.3074 13.0 13.0 10.0 FALSE IF smoke_group_spilt_blip = 0 REMOVE_BLIP shooting_range_blip ADD_BLIP_FOR_COORD 2451.95 -1978.93 12.55 shooting_range_blip CLEAR_HELP PRINT_NOW ( SWE2_J ) 10000 1 //GO BACK! IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_PISTOL SET_CHAR_AMMO scplayer WEAPONTYPE_PISTOL 10 ENDIF smoke_group_spilt_blip = 1 ENDIF ELSE IF refresh_char_weapon = 0 IF NOT IS_CHAR_DEAD big_smoke REMOVE_ALL_CHAR_WEAPONS big_smoke GIVE_WEAPON_TO_CHAR big_smoke WEAPONTYPE_PISTOL 10000 SET_CURRENT_CHAR_WEAPON big_smoke WEAPONTYPE_PISTOL refresh_char_weapon = 1 ENDIF ENDIF IF smoke_group_spilt_blip = 1 REMOVE_BLIP shooting_range_blip IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_PISTOL SET_CHAR_AMMO scplayer WEAPONTYPE_PISTOL 30000 ENDIF PRINT_HELP_FOREVER_CONDITIONAL HODHID 256 // Press ~m~~widget_attack~ to fire. CWidgetHelpText::CONDITION_FLAG_ATTACK PRINT_NOW ( SWE2_G ) 10000 1 // Shoot the bottle smoke_group_spilt_blip = 0 ENDIF ENDIF IF smoke_shots_off = 0 IF NOT IS_CHAR_DEAD big_smoke GET_SCRIPT_TASK_STATUS big_smoke TASK_PLAY_ANIM Return_Status GET_SEQUENCE_PROGRESS big_smoke Return_Progress IF Return_Progress = 0 SET_NEAR_CLIP 0.2 SET_FIXED_CAMERA_POSITION 2439.8589 -1979.6781 14.4278 0.0 0.0 0.0 //Shot of bottle. POINT_CAMERA_AT_POINT 2440.8330 -1979.7941 14.2350 JUMP_CUT WAIT 500 IF DOES_OBJECT_EXIST tag_target[0] BREAK_OBJECT tag_target[0] TRUE ENDIF WAIT 1000 SET_CHAR_COORDINATES scplayer 2450.7402 -1978.3749 12.5469 SET_CHAR_HEADING scplayer 89.5159 IF NOT IS_CHAR_DEAD emmet SET_CHAR_COORDINATES emmet 2451.8340 -1976.8108 12.5469 SET_CHAR_HEADING emmet 75.6292 ENDIF RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER tag_target_counter = 0 DELETE_OBJECT tag_target[0] CREATE_OBJECT DYN_WINE_BIG 2440.58 -1979.89 13.83 tag_target[0] //SET_OBJECT_DYNAMIC tag_target[0] FALSE SET_OBJECT_HEADING tag_target[0] 90.0 MAKE_OBJECT_TARGETTABLE tag_target[0] TRUE PRINT_HELP_FOREVER_CONDITIONAL HODHID 256 // Press ~m~~widget_attack~ to fire. CWidgetHelpText::CONDITION_FLAG_ATTACK smoke_shots_off = 1 CHECKPOINT_SAVE 1 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF ENDWHILE //INCREMENT_FLOAT_STAT SHOOTING_SKILL 0.5 // **********************************************SHOOT BOTTLES ROUND 2***************************************************** /* [SWE3_DB] He’s got killah all over his soul! [SWE3_DD] Ballas fools gonna be sorry! [SWE3_DE] That’s it boy! [SWE3_DF] That's good shootin'! */ LOAD_MISSION_AUDIO 1 SOUND_SWE3_DC //Ah, Beverly’d be so proud of you, boy. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SWE3_DC ) 10000 1 // Yeah, that’s real Grove Street style, now! ****************************************************************** IF NOT IS_CHAR_DEAD emmet SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH emmet TRUE START_CHAR_FACIAL_TALK emmet 3000 TASK_PLAY_ANIM emmet prtial_gngtlkC GANGS 4.0 FALSE FALSE FALSE TRUE -1 ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE IF NOT IS_CHAR_DEAD emmet CLEAR_CHAR_TASKS emmet CLEAR_PRINTS STOP_CHAR_FACIAL_TALK emmet ENDIF SET_PLAYER_CONTROL player1 OFF CLEAR_WANTED_LEVEL player1 LOAD_MISSION_AUDIO 2 SOUND_SWE3_BA //I’m the best there ever was! WAIT 1000 tag_target_counter = 0 WAIT 1000 SWITCH_WIDESCREEN ON SET_NEAR_CLIP 0.2 CLEAR_HELP IF NOT IS_CAR_DEAD big_smoke_car SET_CAR_COORDINATES big_smoke_car 2452.6460 -2003.8763 12.5540 SET_CAR_HEADING big_smoke_car 100.2244 ENDIF CREATE_OBJECT DYN_WINE_BIG beer_bottleX[0] beer_bottleY[0] beer_bottleZ[0] tag_target[0] //on dumpster //SET_OBJECT_DYNAMIC tag_target[0] FALSE SET_OBJECT_HEADING tag_target[0] 90.0 MAKE_OBJECT_TARGETTABLE tag_target[0] TRUE CREATE_OBJECT DYN_WINE_BIG beer_bottleX[1] beer_bottleY[1] beer_bottleZ[1] tag_target[1] //on washing machine //SET_OBJECT_DYNAMIC tag_target[1] FALSE SET_OBJECT_HEADING tag_target[1] 90.0 MAKE_OBJECT_TARGETTABLE tag_target[1] TRUE CREATE_OBJECT DYN_WINE_BIG beer_bottleX[2] beer_bottleY[2] beer_bottleZ[2] tag_target[2] //on dumpster2 //SET_OBJECT_DYNAMIC tag_target[2] FALSE SET_OBJECT_HEADING tag_target[2] 90.0 MAKE_OBJECT_TARGETTABLE tag_target[2] TRUE IF NOT IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_COORDINATES scplayer 2453.8206 -1978.7771 12.5469 ELSE WARP_CHAR_FROM_CAR_TO_COORD scplayer 2453.8206 -1978.7771 12.5469 ENDIF SET_CHAR_HEADING scplayer 89.5159 SET_FIXED_CAMERA_POSITION 2447.3789 -1977.0619 15.2851 0.0 0.0 0.0 //Shot of bottle. POINT_CAMERA_AT_POINT 2446.3914 -1977.0115 15.1366 JUMP_CUT WAIT 2500 CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2451.3879 -1981.1035 14.5206 2451.7380 -1980.5852 14.5765 8000 TRUE CAMERA_SET_VECTOR_TRACK 2450.4265 -1980.9240 14.3127 2450.8577 -1980.1874 14.3180 8000 TRUE //SET_FIXED_CAMERA_POSITION 2451.1123 -1981.6794 14.4021 0.0 0.0 0.0 //Smoke. //POINT_CAMERA_AT_POINT 2450.2903 -1981.1359 14.2322 JUMP_CUT SET_CHAR_HEADING scplayer 65.0 smoke_group_spilt_blip = 0 smoke_shots_off = 0 //CLEAR_SEQUENCE_TASK smoke_idle_seq OPEN_SEQUENCE_TASK smoke_idle_seq //TASK_ACHIEVE_HEADING -1 77.0 TASK_PLAY_ANIM -1 Bbalbat_Idle_02 CRACK 4.0 FALSE FALSE FALSE FALSE -1 TASK_STAND_STILL -1 5000 TASK_PLAY_ANIM -1 prtial_gngtlkD GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_STAND_STILL -1 5000 TASK_PLAY_ANIM -1 prtial_gngtlkH GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_STAND_STILL -1 5000 SET_SEQUENCE_TO_REPEAT smoke_idle_seq 1 CLOSE_SEQUENCE_TASK smoke_idle_seq OPEN_SEQUENCE_TASK smoke_sweet2_seq_2 //TASK_GO_STRAIGHT_TO_COORD -1 2450.15 -1979.66 12.55 PEDMOVE_WALK 4000 //TASK_ACHIEVE_HEADING -1 80.0 //TASK_AIM_GUN_AT_COORD -1 beer_bottleX[0] beer_bottleY[0] beer_bottleZ[0] 1000 TASK_PLAY_ANIM -1 colt45_fire COLT45 4.0 FALSE FALSE FALSE TRUE 2000 TASK_SHOOT_AT_COORD -1 beer_bottleX[0] beer_bottleY[0] beer_bottleZ[0] 1300 TASK_SHOOT_AT_COORD -1 beer_bottleX[1] beer_bottleY[1] beer_bottleZ[1] 1300 TASK_SHOOT_AT_COORD -1 beer_bottleX[2] beer_bottleY[2] beer_bottleZ[2] 1300 //TASK_GO_STRAIGHT_TO_COORD -1 2450.48 -1981.65 12.55 PEDMOVE_WALK 4000 PERFORM_SEQUENCE_TASK -1 smoke_idle_seq CLOSE_SEQUENCE_TASK smoke_sweet2_seq_2 IF NOT IS_CHAR_DEAD big_smoke PERFORM_SEQUENCE_TASK big_smoke smoke_sweet2_seq_2 CLEAR_SEQUENCE_TASK smoke_sweet2_seq_2 ENDIF refresh_char_weapon = 0 WHILE NOT tag_target_counter = 3 WAIT 0 IF DOES_OBJECT_EXIST tag_target[tag_index] IF IS_PLAYER_TARGETTING_OBJECT player1 tag_target[tag_index] GOSUB chars_look_at_targets ELSE GOSUB stop_chars_look_at_targets ENDIF IF HAS_OBJECT_BEEN_DAMAGED tag_target[tag_index] MAKE_OBJECT_TARGETTABLE tag_target[tag_index] FALSE DELETE_OBJECT tag_target[tag_index] //INCREMENT_FLOAT_STAT SHOOTING_SKILL 0.5 tag_target_counter ++ ENDIF ENDIF IF NOT LOCATE_CHAR_ON_FOOT_3D scplayer 2448.9602 -1973.5446 13.3074 13.0 13.0 10.0 FALSE IF smoke_group_spilt_blip = 0 REMOVE_BLIP shooting_range_blip ADD_BLIP_FOR_COORD 2451.95 -1978.93 12.55 shooting_range_blip CLEAR_HELP PRINT_NOW ( SWE2_J ) 10000 1 //GO BACK! IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_PISTOL SET_CHAR_AMMO scplayer WEAPONTYPE_PISTOL 10 ENDIF smoke_group_spilt_blip = 1 ENDIF ELSE IF refresh_char_weapon = 0 IF NOT IS_CHAR_DEAD big_smoke REMOVE_ALL_CHAR_WEAPONS big_smoke GIVE_WEAPON_TO_CHAR big_smoke WEAPONTYPE_PISTOL 10000 SET_CURRENT_CHAR_WEAPON big_smoke WEAPONTYPE_PISTOL refresh_char_weapon = 1 ENDIF ENDIF IF smoke_group_spilt_blip = 1 REMOVE_BLIP shooting_range_blip IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_PISTOL SET_CHAR_AMMO scplayer WEAPONTYPE_PISTOL 30000 ENDIF PRINT_HELP_FOREVER_CONDITIONAL HOODHID 2048 // While locked on you can cycle through targets by using ~m~~widget_look_left~ or ~m~~widget_look_right~. (2048 is CWidgetHelpText::CONDITION_FLAG_CYCLE_TARGETS) PRINT_NOW ( SWE2_H ) 10000 1 // Shoot the bottles smoke_group_spilt_blip = 0 ENDIF ENDIF IF smoke_shots_off = 0 IF NOT IS_CHAR_DEAD big_smoke GET_SCRIPT_TASK_STATUS big_smoke TASK_PLAY_ANIM Return_Status GET_SEQUENCE_PROGRESS big_smoke Return_Progress IF Return_Progress = 1 //SET_FIXED_CAMERA_POSITION 2452.8352 -1981.0620 14.5395 0.0 0.0 0.0 //Shot of bottle. //POINT_CAMERA_AT_POINT 2451.9146 -1980.6940 14.4089 JUMP_CUT WAIT 700 IF DOES_OBJECT_EXIST tag_target[0] BREAK_OBJECT tag_target[0] TRUE ENDIF ENDIF IF Return_Progress = 2 //SET_FIXED_CAMERA_POSITION 2452.8352 -1981.0620 14.5395 0.0 0.0 0.0 //Shot of bottle. //POINT_CAMERA_AT_POINT 2451.9146 -1980.6940 14.4089 JUMP_CUT WAIT 500 IF DOES_OBJECT_EXIST tag_target[1] BREAK_OBJECT tag_target[1] TRUE ENDIF ENDIF IF Return_Progress = 3 WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 2 PRINT_NOW ( SWE3_BA ) 10000 1 //I’m the best there ever was! IF NOT IS_CHAR_DEAD big_smoke //TASK_PLAY_ANIM big_smoke colt45_fire COLT45 4.0 FALSE FALSE FALSE TRUE 2000 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke TRUE START_CHAR_FACIAL_TALK big_smoke 3000 ENDIF WAIT 500 IF DOES_OBJECT_EXIST tag_target[2] BREAK_OBJECT tag_target[2] TRUE ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE IF NOT IS_CHAR_DEAD big_smoke CLEAR_PRINTS STOP_CHAR_FACIAL_TALK big_smoke ENDIF WAIT 1000 SET_CHAR_COORDINATES scplayer 2450.7402 -1978.3749 12.5469 SET_CHAR_HEADING scplayer 89.5159 IF NOT IS_CHAR_DEAD emmet SET_CHAR_COORDINATES emmet 2451.8340 -1976.8108 12.5469 SET_CHAR_HEADING emmet 75.6292 ENDIF CAMERA_RESET_NEW_SCRIPTABLES RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER PRINT_HELP_FOREVER_CONDITIONAL HOODHID 2048 // While locked on you can cycle through targets by using ~m~~widget_look_left~ or ~m~~widget_look_right~. (2048 is CWidgetHelpText::CONDITION_FLAG_CYCLE_TARGETS) tag_target_counter = 0 IF DOES_OBJECT_EXIST tag_target[0] MAKE_OBJECT_TARGETTABLE tag_target[0] FALSE ENDIF DELETE_OBJECT tag_target[0] CREATE_OBJECT DYN_WINE_BIG beer_bottleX[0] beer_bottleY[0] beer_bottleZ[0] tag_target[0] //on dumpster //SET_OBJECT_DYNAMIC tag_target[0] FALSE SET_OBJECT_HEADING tag_target[0] 90.0 MAKE_OBJECT_TARGETTABLE tag_target[0] TRUE IF DOES_OBJECT_EXIST tag_target[1] MAKE_OBJECT_TARGETTABLE tag_target[1] FALSE ENDIF DELETE_OBJECT tag_target[1] CREATE_OBJECT DYN_WINE_BIG beer_bottleX[1] beer_bottleY[1] beer_bottleZ[1] tag_target[1] //on washing machine //SET_OBJECT_DYNAMIC tag_target[1] FALSE SET_OBJECT_HEADING tag_target[1] 90.0 MAKE_OBJECT_TARGETTABLE tag_target[1] TRUE IF DOES_OBJECT_EXIST tag_target[2] MAKE_OBJECT_TARGETTABLE tag_target[2] FALSE ENDIF DELETE_OBJECT tag_target[2] CREATE_OBJECT DYN_WINE_BIG beer_bottleX[2] beer_bottleY[2] beer_bottleZ[2] tag_target[2] //on dumpster2 //SET_OBJECT_DYNAMIC tag_target[2] FALSE SET_OBJECT_HEADING tag_target[2] 90.0 MAKE_OBJECT_TARGETTABLE tag_target[2] TRUE smoke_shots_off = 1 ENDIF ENDIF ENDIF tag_index ++ IF tag_index >= 3 tag_index = 0 ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF ENDWHILE // **********************************************SHOOT BOTTLES ROUND 3***************************************************** LOAD_MISSION_AUDIO 1 SOUND_SWE3_DA // Yeah, that’s real Grove Street style, now! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SWE3_DA ) 10000 1 // Yeah, that’s real Grove Street style, now! ****************************************************************** IF NOT IS_CHAR_DEAD emmet SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH emmet TRUE START_CHAR_FACIAL_TALK emmet 3000 TASK_PLAY_ANIM emmet prtial_gngtlkC GANGS 4.0 FALSE FALSE FALSE TRUE -1 ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE IF NOT IS_CHAR_DEAD emmet CLEAR_CHAR_TASKS emmet CLEAR_PRINTS STOP_CHAR_FACIAL_TALK emmet ENDIF SET_PLAYER_CONTROL player1 OFF CLEAR_WANTED_LEVEL player1 LOAD_MISSION_AUDIO 1 SOUND_SWE3_BD //Cap your ass! LOAD_MISSION_AUDIO 2 SOUND_SWE3_BE //And your ass! WAIT 1000 tag_target_counter = 0 WAIT 1000 SWITCH_WIDESCREEN ON SET_NEAR_CLIP 0.2 CLEAR_HELP IF NOT IS_CAR_DEAD big_smoke_car SET_CAR_COORDINATES big_smoke_car 2452.6460 -2003.8763 12.5540 SET_CAR_HEADING big_smoke_car 100.2244 ENDIF beer_bottleX[0] = 2440.58 //on dumpster beer_bottleY[0] = -1979.89 beer_bottleZ[0] = 13.83 beer_bottleX[1] = 2440.14 //on small crate beer_bottleY[1] = -1976.5 beer_bottleZ[1] = 13.4 beer_bottleX[2] = 2440.66 //on dumpster2 beer_bottleY[2] = -1973.76 beer_bottleZ[2] = 14.1 beer_bottleX[3] = 2448.97 //on fucked car beer_bottleY[3] = -1973.29 beer_bottleZ[3] = 13.3 beer_bottleX[4] = 2444.35 //on crate beer_bottleY[4] = -1970.61 beer_bottleZ[4] = 13.7 CREATE_OBJECT DYN_WINE_BIG beer_bottleX[0] beer_bottleY[0] beer_bottleZ[0] tag_target[0] //on dumpster //SET_OBJECT_DYNAMIC tag_target[0] FALSE SET_OBJECT_HEADING tag_target[0] 90.0 MAKE_OBJECT_TARGETTABLE tag_target[0] TRUE CREATE_OBJECT DYN_WINE_BIG beer_bottleX[1] beer_bottleY[1] beer_bottleZ[1] tag_target[1] //on washing machine //SET_OBJECT_DYNAMIC tag_target[1] FALSE SET_OBJECT_HEADING tag_target[1] 90.0 MAKE_OBJECT_TARGETTABLE tag_target[1] TRUE CREATE_OBJECT DYN_WINE_BIG beer_bottleX[2] beer_bottleY[2] beer_bottleZ[2] tag_target[2] //on dumpster2 //SET_OBJECT_DYNAMIC tag_target[2] FALSE SET_OBJECT_HEADING tag_target[2] 90.0 MAKE_OBJECT_TARGETTABLE tag_target[2] TRUE CREATE_OBJECT DYN_WINE_BIG beer_bottleX[3] beer_bottleY[3] beer_bottleZ[3] tag_target[3] //on fucked car //SET_OBJECT_DYNAMIC tag_target[3] FALSE SET_OBJECT_HEADING tag_target[3] 90.0 MAKE_OBJECT_TARGETTABLE tag_target[3] TRUE CREATE_OBJECT DYN_WINE_BIG beer_bottleX[4] beer_bottleY[4] beer_bottleZ[4] tag_target[4] //on crate //SET_OBJECT_DYNAMIC tag_target[4] FALSE SET_OBJECT_HEADING tag_target[4] 90.0 MAKE_OBJECT_TARGETTABLE tag_target[4] TRUE SET_FIXED_CAMERA_POSITION 2453.7554 -1978.9587 15.3890 0.0 0.0 0.0 //Shot of bottle. POINT_CAMERA_AT_POINT 2452.8372 -1978.6106 15.1996 JUMP_CUT IF NOT IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_COORDINATES scplayer 2453.8206 -1978.7771 12.5469 ELSE WARP_CHAR_FROM_CAR_TO_COORD scplayer 2453.8206 -1978.7771 12.5469 ENDIF SET_CHAR_HEADING scplayer 89.5159 WAIT 2500 SET_FIXED_CAMERA_POSITION 2449.0413 -1977.7316 12.9667 0.0 0.0 0.0 //Smoke. POINT_CAMERA_AT_POINT 2449.8354 -1978.3256 13.0934 JUMP_CUT SET_CHAR_HEADING scplayer 65.0 smoke_group_spilt_blip = 0 smoke_shots_off = 0 CLEAR_SEQUENCE_TASK smoke_idle_seq OPEN_SEQUENCE_TASK smoke_idle_seq2 TASK_STAND_STILL -1 5000 TASK_PLAY_ANIM -1 Bbalbat_Idle_02 CRACK 4.0 FALSE FALSE FALSE FALSE -1 TASK_STAND_STILL -1 5000 TASK_PLAY_ANIM -1 prtial_gngtlkH GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_STAND_STILL -1 5000 TASK_PLAY_ANIM -1 prtial_gngtlkD GANGS 4.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT smoke_idle_seq2 1 CLOSE_SEQUENCE_TASK smoke_idle_seq2 OPEN_SEQUENCE_TASK smoke_idle_seq TASK_ACHIEVE_HEADING -1 77.0 TASK_PLAY_ANIM -1 IDLE_tired FAT 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 IDLE_tired FAT 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 IDLE_tired FAT 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 IDLE_tired FAT 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 IDLE_tired FAT 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 IDLE_tired FAT 4.0 FALSE FALSE FALSE FALSE -1 PERFORM_SEQUENCE_TASK -1 smoke_idle_seq2 CLOSE_SEQUENCE_TASK smoke_idle_seq OPEN_SEQUENCE_TASK smoke_sweet2_seq_3 TASK_TOGGLE_DUCK -1 FALSE TASK_GO_STRAIGHT_TO_COORD -1 2450.48 -1981.65 12.55 PEDMOVE_WALK 4000 PERFORM_SEQUENCE_TASK -1 smoke_idle_seq CLOSE_SEQUENCE_TASK smoke_sweet2_seq_3 OPEN_SEQUENCE_TASK smoke_sweet2_seq_2 TASK_TOGGLE_DUCK -1 TRUE TASK_PLAY_ANIM -1 Crouch_Roll_R PED 4.0 FALSE TRUE TRUE FALSE -1 TASK_SHOOT_AT_COORD -1 beer_bottleX[0] beer_bottleY[0] beer_bottleZ[0] 1400 TASK_SHOOT_AT_COORD -1 beer_bottleX[1] beer_bottleY[1] beer_bottleZ[1] 1400 TASK_SHOOT_AT_COORD -1 beer_bottleX[2] beer_bottleY[2] beer_bottleZ[2] 1400 TASK_SHOOT_AT_COORD -1 beer_bottleX[3] beer_bottleY[3] beer_bottleZ[3] 1400 TASK_SHOOT_AT_COORD -1 beer_bottleX[4] beer_bottleY[4] beer_bottleZ[4] 1400 PERFORM_SEQUENCE_TASK -1 smoke_sweet2_seq_3 CLOSE_SEQUENCE_TASK smoke_sweet2_seq_2 IF NOT IS_CHAR_DEAD big_smoke PERFORM_SEQUENCE_TASK big_smoke smoke_sweet2_seq_2 CLEAR_SEQUENCE_TASK smoke_sweet2_seq_2 ENDIF played_smoke_samples = 0 refresh_char_weapon = 0 WHILE NOT tag_target_counter = 5 WAIT 0 IF DOES_OBJECT_EXIST tag_target[tag_index] IF IS_PLAYER_TARGETTING_OBJECT player1 tag_target[tag_index] GOSUB chars_look_at_targets ELSE GOSUB stop_chars_look_at_targets ENDIF IF HAS_OBJECT_BEEN_DAMAGED tag_target[tag_index] MAKE_OBJECT_TARGETTABLE tag_target[tag_index] FALSE DELETE_OBJECT tag_target[tag_index] //INCREMENT_FLOAT_STAT SHOOTING_SKILL 0.5 tag_target_counter ++ ENDIF ENDIF IF NOT LOCATE_CHAR_ON_FOOT_3D scplayer 2448.9602 -1973.5446 13.3074 13.0 13.0 10.0 FALSE IF smoke_group_spilt_blip = 0 REMOVE_BLIP shooting_range_blip ADD_BLIP_FOR_COORD 2451.95 -1978.93 12.55 shooting_range_blip CLEAR_HELP PRINT_NOW ( SWE2_J ) 10000 1 //GO BACK! IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_PISTOL SET_CHAR_AMMO scplayer WEAPONTYPE_PISTOL 10 ENDIF smoke_group_spilt_blip = 1 ENDIF ELSE IF refresh_char_weapon = 0 IF NOT IS_CHAR_DEAD big_smoke REMOVE_ALL_CHAR_WEAPONS big_smoke GIVE_WEAPON_TO_CHAR big_smoke WEAPONTYPE_PISTOL 10000 SET_CURRENT_CHAR_WEAPON big_smoke WEAPONTYPE_PISTOL refresh_char_weapon = 1 ENDIF ENDIF IF smoke_group_spilt_blip = 1 REMOVE_BLIP shooting_range_blip GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_PISTOL 10 PRINT_HELP_FOREVER_CONDITIONAL HO2FCLS 4096 // You can increase your accuracy by crouching, press ~m~~widget_crouch~ to crouch. PRINT_NOW ( SWE2_I ) 10000 1 // Try Shooting the bottles while crouching smoke_group_spilt_blip = 0 ENDIF ENDIF IF smoke_shots_off = 0 IF NOT IS_CHAR_DEAD big_smoke GET_SCRIPT_TASK_STATUS big_smoke TASK_PLAY_ANIM Return_Status GET_SEQUENCE_PROGRESS big_smoke Return_Progress IF Return_Progress = 2 SET_FIXED_CAMERA_POSITION 2452.8652 -1977.8590 13.7390 0.0 0.0 0.0 //Shot of bottle. POINT_CAMERA_AT_POINT 2451.9014 -1978.1173 13.6752 JUMP_CUT IF played_smoke_samples = 0 WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SWE3_BD ) 10000 1 //Cap your ass ****************************************************************** IF NOT IS_CHAR_DEAD big_smoke SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke TRUE START_CHAR_FACIAL_TALK big_smoke 3000 ENDIF WAIT 500 IF DOES_OBJECT_EXIST tag_target[0] BREAK_OBJECT tag_target[0] TRUE ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE IF NOT IS_CHAR_DEAD big_smoke CLEAR_PRINTS STOP_CHAR_FACIAL_TALK big_smoke ENDIF LOAD_MISSION_AUDIO 1 SOUND_SWE3_BF //You want some too? played_smoke_samples = 1 ENDIF ENDIF IF Return_Progress = 3 SET_FIXED_CAMERA_POSITION 2452.9795 -1980.7344 13.8660 0.0 0.0 0.0 //Shot of bottle. POINT_CAMERA_AT_POINT 2452.0886 -1980.2820 13.8231 JUMP_CUT IF played_smoke_samples = 1 WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 2 PRINT_NOW ( SWE3_BE ) 10000 1 //and your ass ****************************************************************** IF NOT IS_CHAR_DEAD big_smoke SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke TRUE START_CHAR_FACIAL_TALK big_smoke 3000 ENDIF WAIT 500 IF DOES_OBJECT_EXIST tag_target[1] BREAK_OBJECT tag_target[1] TRUE ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE IF NOT IS_CHAR_DEAD big_smoke SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke TRUE START_CHAR_FACIAL_TALK big_smoke 3000 ENDIF LOAD_MISSION_AUDIO 2 SOUND_SWE3_BG //Ice cold! played_smoke_samples = 2 ENDIF ENDIF IF Return_Progress = 4 SET_FIXED_CAMERA_POSITION 2453.3035 -1979.4598 14.4320 0.0 0.0 0.0 //Shot of bottle. POINT_CAMERA_AT_POINT 2452.3540 -1979.2430 14.2053 JUMP_CUT IF refresh_char_weapon = 1 IF NOT IS_CHAR_DEAD big_smoke REMOVE_ALL_CHAR_WEAPONS big_smoke GIVE_WEAPON_TO_CHAR big_smoke WEAPONTYPE_PISTOL 10000 SET_CURRENT_CHAR_WEAPON big_smoke WEAPONTYPE_PISTOL refresh_char_weapon = 2 ENDIF ENDIF IF played_smoke_samples = 2 WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SWE3_BF ) 10000 1 //you want some too? ****************************************************************** IF NOT IS_CHAR_DEAD big_smoke SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke TRUE START_CHAR_FACIAL_TALK big_smoke 3000 ENDIF WAIT 500 IF DOES_OBJECT_EXIST tag_target[2] BREAK_OBJECT tag_target[2] TRUE ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE IF NOT IS_CHAR_DEAD big_smoke CLEAR_PRINTS STOP_CHAR_FACIAL_TALK big_smoke ENDIF LOAD_MISSION_AUDIO 1 SOUND_SWE3_BB //I knew I was the chosen one! played_smoke_samples = 3 ENDIF ENDIF IF Return_Progress = 5 SET_FIXED_CAMERA_POSITION 2449.3628 -1971.9142 13.7680 0.0 0.0 0.0 //Shot of bottle. POINT_CAMERA_AT_POINT 2449.4919 -1972.8959 13.6288 JUMP_CUT IF played_smoke_samples = 3 WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 2 PRINT_NOW ( SWE3_BG ) 10000 1 //Ice cold! ****************************************************************** IF NOT IS_CHAR_DEAD big_smoke SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke TRUE START_CHAR_FACIAL_TALK big_smoke 3000 ENDIF WAIT 500 IF DOES_OBJECT_EXIST tag_target[3] BREAK_OBJECT tag_target[3] TRUE ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE LOAD_MISSION_AUDIO 2 SOUND_SWE3_ZZ //Oh, man, check out ‘Special Agent Big Smoke’ IF NOT IS_CHAR_DEAD big_smoke CLEAR_PRINTS STOP_CHAR_FACIAL_TALK big_smoke ENDIF played_smoke_samples = 4 ENDIF ENDIF IF Return_Progress = 6 SET_FIXED_CAMERA_POSITION 2442.5032 -1967.3361 14.1262 0.0 0.0 0.0 //Shot of bottle. POINT_CAMERA_AT_POINT 2443.0920 -1968.1328 13.9918 JUMP_CUT IF refresh_char_weapon = 2 IF NOT IS_CHAR_DEAD big_smoke REMOVE_ALL_CHAR_WEAPONS big_smoke GIVE_WEAPON_TO_CHAR big_smoke WEAPONTYPE_PISTOL 10000 SET_CURRENT_CHAR_WEAPON big_smoke WEAPONTYPE_PISTOL refresh_char_weapon = 3 ENDIF ENDIF IF played_smoke_samples = 4 WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SWE3_BB ) 10000 1 //I knew I was the chosen one! ****************************************************************** IF NOT IS_CHAR_DEAD big_smoke SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke TRUE START_CHAR_FACIAL_TALK big_smoke 3000 ENDIF WAIT 500 IF DOES_OBJECT_EXIST tag_target[4] BREAK_OBJECT tag_target[4] TRUE ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE IF NOT IS_CHAR_DEAD big_smoke CLEAR_PRINTS STOP_CHAR_FACIAL_TALK big_smoke ENDIF played_smoke_samples = 5 ENDIF //CJ's LINE WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 2 PRINT_NOW ( SWE3_ZZ ) 10000 1 //Oh, man, check out ‘Special Agent Big Smoke’ ****************************************************************** WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE PRINT_NOW ( SWE2_I ) 10000 1 // Try Shooting the bottles while crouching SET_CHAR_COORDINATES scplayer 2450.7402 -1978.3749 12.5469 SET_CHAR_HEADING scplayer 89.5159 IF NOT IS_CHAR_DEAD emmet SET_CHAR_COORDINATES emmet 2451.8340 -1976.8108 12.5469 SET_CHAR_HEADING emmet 75.6292 ENDIF RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER PRINT_HELP_FOREVER_CONDITIONAL HO2FCLS 4096 // You can increase your accuracy by crouching, press ~m~~widget_crouch~ to crouch. tag_target_counter = 0 IF DOES_OBJECT_EXIST tag_target[0] MAKE_OBJECT_TARGETTABLE tag_target[0] FALSE ENDIF DELETE_OBJECT tag_target[0] CREATE_OBJECT DYN_WINE_BIG beer_bottleX[0] beer_bottleY[0] beer_bottleZ[0] tag_target[0] //on dumpster //SET_OBJECT_DYNAMIC tag_target[0] FALSE SET_OBJECT_HEADING tag_target[0] 90.0 MAKE_OBJECT_TARGETTABLE tag_target[0] TRUE IF DOES_OBJECT_EXIST tag_target[1] MAKE_OBJECT_TARGETTABLE tag_target[1] FALSE ENDIF DELETE_OBJECT tag_target[1] CREATE_OBJECT DYN_WINE_BIG beer_bottleX[1] beer_bottleY[1] beer_bottleZ[1] tag_target[1] //on washing machine SET_OBJECT_HEADING tag_target[1] 90.0 MAKE_OBJECT_TARGETTABLE tag_target[1] TRUE IF DOES_OBJECT_EXIST tag_target[2] MAKE_OBJECT_TARGETTABLE tag_target[2] FALSE ENDIF DELETE_OBJECT tag_target[2] CREATE_OBJECT DYN_WINE_BIG beer_bottleX[2] beer_bottleY[2] beer_bottleZ[2] tag_target[2] //on dumpster2 SET_OBJECT_HEADING tag_target[2] 90.0 MAKE_OBJECT_TARGETTABLE tag_target[2] TRUE IF DOES_OBJECT_EXIST tag_target[3] MAKE_OBJECT_TARGETTABLE tag_target[3] FALSE ENDIF DELETE_OBJECT tag_target[3] CREATE_OBJECT DYN_WINE_BIG beer_bottleX[3] beer_bottleY[3] beer_bottleZ[3] tag_target[3] //on fucked car SET_OBJECT_HEADING tag_target[3] 90.0 MAKE_OBJECT_TARGETTABLE tag_target[3] TRUE IF DOES_OBJECT_EXIST tag_target[4] MAKE_OBJECT_TARGETTABLE tag_target[4] FALSE ENDIF DELETE_OBJECT tag_target[4] CREATE_OBJECT DYN_WINE_BIG beer_bottleX[4] beer_bottleY[4] beer_bottleZ[4] tag_target[4] //on crate SET_OBJECT_HEADING tag_target[4] 90.0 MAKE_OBJECT_TARGETTABLE tag_target[4] TRUE smoke_shots_off = 1 ENDIF ENDIF ENDIF tag_index ++ IF tag_index >= 5 tag_index = 0 ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF ENDWHILE LOAD_MISSION_AUDIO 1 SOUND_SWE3_DG //Aw, your makin’ me so proud of you! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SWE3_DG ) 10000 1 //Aw, your makin’ me so proud of you! ****************************************************************** IF NOT IS_CHAR_DEAD emmet SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH emmet TRUE START_CHAR_FACIAL_TALK emmet 3000 TASK_PLAY_ANIM emmet prtial_gngtlkC GANGS 4.0 FALSE FALSE FALSE TRUE -1 ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE IF NOT IS_CHAR_DEAD emmet CLEAR_CHAR_TASKS emmet CLEAR_PRINTS STOP_CHAR_FACIAL_TALK emmet ENDIF CLEAR_WANTED_LEVEL player1 SET_PLAYER_CONTROL player1 OFF WAIT 1000 tag_target_counter = 0 WAIT 1000 // **********************************************SHOOT THE PETROL TANK***************************************************** SWITCH_WIDESCREEN ON SET_NEAR_CLIP 0.2 CLEAR_HELP IF NOT IS_CAR_DEAD emmets_car //SET_CAN_BURST_CAR_TYRES emmets_car TRUE SET_CAR_COORDINATES emmets_car 2446.49 -1966.47 12.54 SET_CAR_HEADING emmets_car 101.85 SET_FIXED_CAMERA_POSITION 2447.2234 -1971.3845 14.5714 0.0 0.0 0.0 //Shot of the car. POINT_CAMERA_AT_POINT 2447.0703 -1970.4343 14.2998 JUMP_CUT ENDIF IF NOT IS_CHAR_DEAD emmet SET_CHAR_COORDINATES emmet 2452.6899 -1980.2181 12.5469 SET_CHAR_HEADING emmet 44.7926 ENDIF IF NOT IS_CAR_DEAD big_smoke_car SET_CAR_COORDINATES big_smoke_car 2452.6460 -2003.8763 12.5540 SET_CAR_HEADING big_smoke_car 100.2244 ENDIF IF NOT IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_COORDINATES scplayer 2446.11 -1974.53 12.54 ELSE WARP_CHAR_FROM_CAR_TO_COORD scplayer 2446.11 -1974.53 12.54 ENDIF SET_CHAR_HEADING scplayer 349.81 PRINT_HELP_FOREVER SWE2_F // ~s~Use manual aim to shoot the car's gas tank. IF NOT IS_CAR_DEAD emmets_car WAIT 3000 SET_FIXED_CAMERA_POSITION 2448.2490 -1968.6077 13.7351 0.0 0.0 0.0 //Shot of bottle. POINT_CAMERA_AT_POINT 2447.9189 -1967.7069 13.4528 JUMP_CUT WAIT 2000 ENDIF PRINT_HELP_FOREVER HOOD2C // To manually aim, touch the middle of the screen and move to the left and right whilst shooting. RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON smoke_group_spilt_blip = 0 smoke_shots_off = 0 WHILE NOT IS_CAR_DEAD emmets_car WAIT 0 IF NOT LOCATE_CHAR_ON_FOOT_3D scplayer 2451.95 -1978.93 12.55 13.0 13.0 10.0 FALSE IF smoke_group_spilt_blip = 0 REMOVE_BLIP shooting_range_blip ADD_BLIP_FOR_COORD 2451.95 -1978.93 12.55 shooting_range_blip CLEAR_HELP PRINT_NOW ( SWE2_J ) 10000 1 //GO BACK! IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_PISTOL SET_CHAR_AMMO scplayer WEAPONTYPE_PISTOL 10 ENDIF smoke_group_spilt_blip = 1 ENDIF ELSE IF smoke_group_spilt_blip = 1 REMOVE_BLIP shooting_range_blip IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_PISTOL SET_CHAR_AMMO scplayer WEAPONTYPE_PISTOL 30000 ENDIF PRINT_HELP_FOREVER HOOD2C // To manually aim, touch the middle of the screen and move to the left and right whilst shooting. PRINT_HELP_FOREVER SWE2_F // ~s~Use manual aim to shoot the car's gas tank. smoke_group_spilt_blip = 0 ENDIF ENDIF IF smoke_shots_off = 0 IF NOT IS_CHAR_DEAD big_smoke RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER IF NOT IS_CHAR_DEAD emmet SET_CHAR_PROOFS emmet FALSE FALSE TRUE FALSE FALSE SET_CHAR_HEALTH emmet 600 ENDIF IF NOT IS_CAR_DEAD emmets_car SET_CAR_PROOFS emmets_car FALSE FALSE FALSE FALSE FALSE ENDIF SET_CHAR_PROOFS scplayer FALSE FALSE TRUE FALSE FALSE smoke_shots_off = 1 ENDIF ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF ENDWHILE CLEAR_HELP CLEAR_WANTED_LEVEL player1 MARK_MODEL_AS_NO_LONGER_NEEDED tampa WAIT 2000 CLEAR_WANTED_LEVEL player1 // **********************************************LEAVING EMMETS CUT SCENE START************************************************* DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE_IN_DIRECTION 2450.5669 -1975.6414 12.5469 288.0 SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_NEAR_CLIP 0.2 REQUEST_ANIMATION GANGS WHILE NOT HAS_ANIMATION_LOADED GANGS WAIT 0 ENDWHILE sweet2_index = 0 sweet2_audio_is_playing = 0 sweet2_cutscene_flag = 0 sweet2_chat_switch = SWEET2_CHAT2 GOSUB sweet2_chat_switch IF NOT IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_COORDINATES scplayer 2450.5669 -1975.6414 12.5469 ELSE WARP_CHAR_FROM_CAR_TO_COORD scplayer 2450.5669 -1975.6414 12.5469 ENDIF SET_CHAR_HEADING scplayer 288.2500 IF NOT IS_CHAR_DEAD big_smoke SET_CHAR_COORDINATES big_smoke 2452.7415 -1976.4500 12.5469 SET_CHAR_HEADING big_smoke 345.3302 IF NOT IS_CHAR_DEAD emmet SET_CHAR_HEALTH emmet 600 SET_CHAR_COORDINATES emmet 2452.8459 -1975.1003 12.5469 SET_CHAR_HEADING emmet 160.2500 TASK_TURN_CHAR_TO_FACE_CHAR big_smoke scplayer TASK_TURN_CHAR_TO_FACE_CHAR emmet scplayer CLEAR_LOOK_AT emmet TASK_LOOK_AT_CHAR emmet scplayer 30000 ENDIF ENDIF IF NOT IS_CAR_DEAD big_smoke_car SET_CAR_COORDINATES big_smoke_car 2452.6460 -2003.8763 12.5540 SET_CAR_HEADING big_smoke_car 100.2244 ENDIF CLEAR_AREA 2453.0293 -2001.0591 12.5540 30.0 TRUE CLEAR_HELP CLEAR_PRINTS DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION 2450.1067 -1977.5526 14.0919 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2450.7771 -1976.8383 13.8915 JUMP_CUT sweet2_cutscene_flag = 0 WHILE NOT sweet2_index = 1 WAIT 0 GOSUB load_and_play_audio_sweet2 IF sweet2_cutscene_flag = 0 IF sweet2_audio_is_playing = 2 IF NOT IS_CHAR_DEAD big_smoke //START_CHAR_FACIAL_TALK big_smoke 20000 TASK_PLAY_ANIM big_smoke prtial_gngtlkC GANGS 4.0 FALSE FALSE FALSE TRUE -1 sweet2_cutscene_flag = 1 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF ENDWHILE skip_emmets_cutscene = 0 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 CLEAR_AREA 2452.6460 -2003.8763 12.5540 50.0 TRUE SKIP_CUTSCENE_START sweet2_cutscene_flag = 0 WHILE NOT sweet2_index = 2 WAIT 0 GOSUB load_and_play_audio_sweet2 IF sweet2_cutscene_flag = 0 IF sweet2_audio_is_playing = 2 IF NOT IS_CHAR_DEAD big_smoke //START_CHAR_FACIAL_TALK big_smoke 20000 sweet2_cutscene_flag = 1 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF ENDWHILE IF NOT IS_CHAR_DEAD big_smoke STOP_CHAR_FACIAL_TALK big_smoke ENDIF sweet2_cutscene_flag = 0 WHILE NOT sweet2_index = 3 WAIT 0 GOSUB load_and_play_audio_sweet2 IF sweet2_cutscene_flag = 0 IF sweet2_audio_is_playing = 2 IF NOT IS_CHAR_DEAD emmet //START_CHAR_FACIAL_TALK emmet 20000 sweet2_cutscene_flag = 1 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF ENDWHILE sweet2_cutscene_flag = 0 WHILE NOT sweet2_index = 4 WAIT 0 GOSUB load_and_play_audio_sweet2 IF sweet2_cutscene_flag = 0 IF sweet2_audio_is_playing = 2 IF NOT IS_CHAR_DEAD big_smoke //START_CHAR_FACIAL_TALK big_smoke 20000 sweet2_cutscene_flag = 1 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF ENDWHILE sweet2_cutscene_flag = 0 WHILE NOT sweet2_index = 5 WAIT 0 GOSUB load_and_play_audio_sweet2 IF sweet2_cutscene_flag = 0 IF sweet2_audio_is_playing = 2 IF NOT IS_CHAR_DEAD big_smoke //START_CHAR_FACIAL_TALK big_smoke 20000 sweet2_cutscene_flag = 1 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF ENDWHILE TASK_GO_STRAIGHT_TO_COORD scplayer 2452.6416 -1998.2188 12.5540 PEDMOVE_WALK 20000 IF NOT IS_CHAR_DEAD big_smoke TASK_GO_STRAIGHT_TO_COORD big_smoke 2454.9512 -1998.6581 12.5540 PEDMOVE_WALK 20000 //TASK_WALK_ALONGSIDE_CHAR big_smoke scplayer //TASK_WALK_ALONGSIDE_CHAR scplayer big_smoke ENDIF sweet2_cutscene_flag = 0 WHILE NOT sweet2_index = 6 WAIT 0 GOSUB load_and_play_audio_sweet2 IF sweet2_cutscene_flag = 0 IF sweet2_audio_is_playing = 2 IF NOT IS_CHAR_DEAD big_smoke //START_CHAR_FACIAL_TALK big_smoke 20000 sweet2_cutscene_flag = 1 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF ENDWHILE IF NOT IS_CHAR_DEAD emmet TASK_GO_STRAIGHT_TO_COORD emmet 2453.3206 -1987.7144 12.5469 PEDMOVE_WALK 20000 SET_ANIM_GROUP_FOR_CHAR emmet gang1 ENDIF SET_CHAR_COORDINATES scplayer 2452.0786 -1978.8445 12.5469 SET_CHAR_HEADING scplayer 180.0 CLEAR_CHAR_TASKS scplayer TASK_GO_STRAIGHT_TO_COORD scplayer 2452.6416 -1998.2188 12.5540 PEDMOVE_WALK 20000 sweet2_cutscene_flag = 0 WHILE NOT sweet2_index = 7 WAIT 0 GOSUB load_and_play_audio_sweet2 IF sweet2_cutscene_flag = 0 IF sweet2_audio_is_playing = 2 IF NOT IS_CHAR_DEAD emmet //START_CHAR_FACIAL_TALK emmet 20000 sweet2_cutscene_flag = 1 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF ENDWHILE SET_FIXED_CAMERA_POSITION 2453.5879 -1992.3597 14.7070 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2453.5383 -1991.4121 14.3914 JUMP_CUT sweet2_cutscene_flag = 0 WHILE NOT sweet2_index = 8 WAIT 0 GOSUB load_and_play_audio_sweet2 IF sweet2_cutscene_flag = 0 IF sweet2_audio_is_playing = 2 IF NOT IS_CHAR_DEAD emmet //START_CHAR_FACIAL_TALK emmet 20000 sweet2_cutscene_flag = 1 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF ENDWHILE sweet2_cutscene_flag = 0 WHILE NOT sweet2_index = 9 WAIT 0 GOSUB load_and_play_audio_sweet2 IF sweet2_cutscene_flag = 0 IF sweet2_audio_is_playing = 2 IF NOT IS_CHAR_DEAD emmet //START_CHAR_FACIAL_TALK emmet 20000 sweet2_cutscene_flag = 1 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF ENDWHILE sweet2_cutscene_flag = 0 WHILE NOT sweet2_index = 10 WAIT 0 GOSUB load_and_play_audio_sweet2 IF sweet2_cutscene_flag = 0 IF sweet2_audio_is_playing = 2 IF NOT IS_CHAR_DEAD emmet //START_CHAR_FACIAL_TALK emmet 20000 TASK_PLAY_ANIM emmet prtial_gngtlkC GANGS 4.0 FALSE FALSE FALSE TRUE -1 sweet2_cutscene_flag = 1 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF ENDWHILE WHILE NOT sweet2_index = 11 WAIT 0 GOSUB load_and_play_audio_sweet2 IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF ENDWHILE IF NOT IS_CHAR_DEAD emmet CLEAR_CHAR_TASKS emmet ENDIF CLEAR_AREA 2453.0293 -2001.0591 12.5540 10.0 TRUE SET_FIXED_CAMERA_POSITION 2453.5691 -1992.4054 16.0824 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2453.6028 -1993.3175 15.6741 JUMP_CUT IF NOT IS_CAR_DEAD big_smoke_car IF NOT IS_CHAR_DEAD big_smoke SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER big_smoke big_smoke_car 50000 0 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_DRIVER scplayer big_smoke_car 50000 ENDIF ENDIF WHILE NOT sweet2_index = 12 WAIT 0 GOSUB load_and_play_audio_sweet2 IF IS_CHAR_DEAD emmet PRINT_NOW (SWE2_K) 10000 1 //~r~Emmet is dead! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF ENDWHILE IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CAR_DEAD big_smoke_car WHILE NOT IS_CHAR_SITTING_IN_CAR scplayer big_smoke_car OR NOT IS_CHAR_SITTING_IN_CAR big_smoke big_smoke_car WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF ENDWHILE ENDIF ENDIF SET_FIXED_CAMERA_POSITION 2456.7581 -1999.2529 15.2969 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2456.2307 -2000.0271 14.9470 JUMP_CUT WHILE NOT sweet2_index = 13 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF GOSUB load_and_play_audio_sweet2 ENDWHILE WHILE NOT sweet2_index = 14 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF GOSUB load_and_play_audio_sweet2 ENDWHILE skip_emmets_cutscene = 1 SKIP_CUTSCENE_END SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 IF skip_emmets_cutscene = 0 CLEAR_PRINTS SET_FADING_COLOUR 0 0 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_MISSION_AUDIO 3 CAMERA_RESET_NEW_SCRIPTABLES IF NOT IS_CAR_DEAD big_smoke_car IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_INTO_CAR scplayer big_smoke_car ENDIF IF NOT IS_CHAR_IN_ANY_CAR big_smoke WARP_CHAR_INTO_CAR_AS_PASSENGER big_smoke big_smoke_car 0 ENDIF ENDIF ENDIF WAIT 100 DO_FADE 500 FADE_IN ENDIF DELETE_CHAR emmet RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 // **********************************************LEAVING EMMETS CUT SCENE END************************************************* how_much_ammo = how_much_ammo + 60 IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_PISTOL SET_CHAR_AMMO scplayer WEAPONTYPE_PISTOL how_much_ammo ENDIF PRINT_NOW ( SWE2_D ) 10000 1 // Drive Smoke home. IF NOT IS_CAR_DEAD big_smoke_car REMOVE_BLIP shooting_range_blip REMOVE_BLIP smoke_car_blip ADD_BLIP_FOR_CAR big_smoke_car smoke_car_blip SET_BLIP_AS_FRIENDLY smoke_car_blip TRUE ENDIF IF NOT IS_CHAR_DEAD big_smoke ADD_BLIP_FOR_CHAR big_smoke big_smokes_blip SET_BLIP_AS_FRIENDLY big_smokes_blip TRUE REMOVE_BLIP big_smokes_blip ENDIF //skip_to_end_cut_scene: ADD_BLIP_FOR_COORD 2066.4648 -1695.4436 12.5547 shooting_range_blip REMOVE_BLIP shooting_range_blip blob_flag = 1 smoke_sitting_in_car = 0 smoke_car_blip_removed = 0 smoke_group_spilt_blip = 0 big_smoke_group_spilt_blip = 0 gun_help = 0 TIMERA = 0 TIMERB = 0 sweet2_index = 0 sweet2_audio_is_playing = 0 sweet2_cutscene_flag = 0 sweet2_chat_switch = SWEET2_CHAT3 GOSUB sweet2_chat_switch GOSUB reset_gang_density played_the_timer = 0 RELEASE_WEATHER REMOVE_ANIMATION GANGS REMOVE_ANIMATION CRACK REMOVE_ANIMATION COLT45 REMOVE_ANIMATION FAT MARK_MODEL_AS_NO_LONGER_NEEDED Colt45 MARK_MODEL_AS_NO_LONGER_NEEDED DYN_WINE_BIG MARK_MODEL_AS_NO_LONGER_NEEDED tampa UNLOAD_SPECIAL_CHARACTER 1 //skip_hereeeeeeeeeeeeeeee: WHILE NOT LOCATE_CAR_3D big_smoke_car 2066.4648 -1695.4436 12.5547 4.0 4.0 4.0 blob_flag //GO to Smokes OR NOT IS_CHAR_SITTING_IN_CAR big_smoke big_smoke_car OR NOT IS_VEHICLE_ON_ALL_WHEELS big_smoke_car WAIT 0 IF NOT IS_CHAR_IN_ANY_CAR scplayer IF TIMERA > 5000 IF gun_help = 1 PRINT_HELP_FOREVER HELP53 // Tap ~m~~widget_explicit_prev_weapon~ or ~m~~widget_explicit_next_weapon~ to cycle through your available weapons. TIMERA = 0 gun_help = 2 ENDIF ENDIF IF TIMERA > 5000 IF gun_help = 2 PRINT_HELP ( HOOD2D ) // Your ~h~gun stat~w~ will increase the more you use your weapon. TIMERA = 0 gun_help = 3 ENDIF ENDIF IF TIMERA > 5000 IF gun_help = 3 PRINT_HELP ( HOOD2E ) // Getting a high gun skill will increase your ability with weapons. Hold ~m~~widget_player_info~ on foot to view your weapon skill. TIMERA = 0 gun_help = 4 ENDIF ENDIF ELSE IF TIMERA > 2000 IF gun_help = 0 PRINT_HELP ( EMMET_G ) // Get guns from Emmet. REMOVE_BLIP emmets_shop_blip ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2447.3643 -1974.4963 12.5469 RADAR_SPRITE_EMMETGUN emmets_shop_blip //Emmet TIMERA = 0 gun_help = 1 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CAR_DEAD big_smoke_car IF IS_CHAR_IN_CAR scplayer big_smoke_car IF smoke_car_blip_removed = 0 REMOVE_BLIP smoke_car_blip REMOVE_BLIP shooting_range_blip PRINT_NOW ( SWE2_D ) 6000 1 // Drive Smoke home. ADD_BLIP_FOR_COORD 2066.4648 -1695.4436 12.5547 shooting_range_blip blob_flag = 1 smoke_car_blip_removed = 1 ENDIF //IF played_the_timer = 0 IF TIMERB > 6000 GOSUB load_and_play_audio_sweet2 played_the_timer = 1 ENDIF //ELSE //GOSUB load_and_play_audio_sweet2 //ENDIF ELSE IF smoke_car_blip_removed = 1 REMOVE_BLIP shooting_range_blip REMOVE_BLIP smoke_car_blip ADD_BLIP_FOR_CAR big_smoke_car smoke_car_blip SET_BLIP_AS_FRIENDLY smoke_car_blip TRUE GOSUB get_back_in_the_car_sweet2 PRINT_NOW (SWE2_L) 6000 1 //Get back in the car SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer blob_flag = 0 smoke_car_blip_removed = 0 ENDIF ENDIF ELSE PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF ELSE PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF IF IS_CAR_DEAD big_smoke_car PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! GOTO mission_sweet2_failed ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_NEAR_CLIP 0.2 SET_FIXED_CAMERA_POSITION 2086.0100 -1699.6982 17.7495 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2085.0596 -1699.8313 17.4682 JUMP_CUT REQUEST_MODEL cellphone WAIT 1000 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED cellphone WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD big_smoke //REMOVE_CHAR_FROM_GROUP big_smoke IF NOT IS_CHAR_IN_ANY_CAR big_smoke SET_CHAR_COORDINATES big_smoke 2071.1694 -1703.0597 12.5538 ELSE WARP_CHAR_FROM_CAR_TO_COORD big_smoke 2071.1694 -1703.0597 12.5538 ENDIF SET_CHAR_HEADING big_smoke 162.3527 CLEAR_CHAR_TASKS big_smoke CLEAR_LOOK_AT big_smoke TASK_LOOK_AT_CHAR big_smoke scplayer 4000 ENDIF IF NOT IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_COORDINATES scplayer 2071.5537 -1704.3748 12.5538 ELSE WARP_CHAR_FROM_CAR_TO_COORD scplayer 2071.5537 -1704.3748 12.5538 ENDIF SET_CHAR_HEADING scplayer 12.5041 CLEAR_CHAR_TASKS scplayer //SET_FIXED_CAMERA_POSITION 2073.7661 -1704.6256 14.2777 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 2072.8076 -1704.3674 14.1562 JUMP_CUT SET_FIXED_CAMERA_POSITION 2069.6067 -1704.6298 14.2313 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2070.4746 -1704.1737 14.0353 JUMP_CUT WAIT 1000 DO_FADE 1000 FADE_IN LOAD_MISSION_AUDIO 1 SOUND_SWE3_JA LOAD_MISSION_AUDIO 2 SOUND_SWE3_JB LOAD_MISSION_AUDIO 3 SOUND_MOBRING WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SWE3_JA ) 10000 1 //Thanks, CJ, I’ll see you around. GOSUB start_talking_sweet2 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE IF NOT IS_CHAR_DEAD big_smoke CLEAR_LOOK_AT big_smoke ENDIF GOSUB stop_talking_sweet2 WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CHAR_DEAD big_smoke PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! GOTO mission_sweet2_failed ENDIF ENDWHILE PLAY_MISSION_AUDIO 2 PRINT_NOW ( SWE3_JB ) 10000 1 //Later, homie. SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE START_CHAR_FACIAL_TALK scplayer 3000 //GOSUB start_talking_sweet2 IF NOT IS_CHAR_DEAD big_smoke TASK_GO_STRAIGHT_TO_COORD big_smoke 2065.10 -1703.40 13.15 PEDMOVE_WALK 4000 ENDIF WAIT 1000 IF NOT IS_CHAR_DEAD big_smoke TASK_GO_STRAIGHT_TO_COORD scplayer 2073.2866 -1702.1045 12.5469 PEDMOVE_WALK 4000 ENDIF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer CLEAR_PRINTS WAIT 1000 SET_FIXED_CAMERA_POSITION 2072.7229 -1699.7369 14.1283 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2072.9346 -1700.6702 13.8382 JUMP_CUT DELETE_CHAR big_smoke WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 3 TIMERA = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 3 WAIT 0 IF TIMERA > 1500 GOTO task_use_the_phone_sweet2 ENDIf ENDWHILE task_use_the_phone_sweet2: sweet2_index = 0 sweet2_audio_is_playing = 0 sweet2_cutscene_flag = 0 sweet2_chat_switch = SWEET2_CHAT4 GOSUB sweet2_chat_switch CLEAR_CHAR_TASKS scplayer TASK_USE_MOBILE_PHONE scplayer TRUE WAIT 1800 finished_mobile_phone_call = 0 flag_player_control_back = 0 REMOVE_ANIMATION GANGS REMOVE_ANIMATION CRACK REMOVE_ANIMATION COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED Colt45 MARK_MODEL_AS_NO_LONGER_NEEDED glendale MARK_MODEL_AS_NO_LONGER_NEEDED DYN_WINE_BIG MARK_MODEL_AS_NO_LONGER_NEEDED tampa UNLOAD_SPECIAL_CHARACTER 10 UNLOAD_SPECIAL_CHARACTER 1 WHILE NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2246.9719 -1660.7789 14.2856 3.5 4.0 4.0 TRUE //Go to Binco WAIT 0 IF finished_mobile_phone_call = 0 GOSUB load_and_play_audio_sweet2 IF sweet2_index > 0 IF sweet2_index = 10 OR IS_BUTTON_PRESSED PAD1 TRIANGLE CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS TASK_USE_MOBILE_PHONE scplayer FALSE MARK_MODEL_AS_NO_LONGER_NEEDED cellphone PRINT_NOW ( COLORS ) 6000 1 //Get over to ~y~Binco~s~ and get yourself some Grove Street colors! finished_mobile_phone_call = 1 ENDIF ENDIF ENDIF IF flag_player_control_back = 0 IF sweet2_index > 0 RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON REMOVE_BLIP shooting_range_blip ADD_BLIP_FOR_COORD 2246.9719 -1660.7789 14.2856 shooting_range_blip flag_player_control_back = 1 ENDIF ENDIF ENDWHILE SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 2253.0986 -1644.2246 16.6501 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2252.7742 -1645.1615 16.5203 JUMP_CUT PRINT_NOW (S2HELP1) 6000 1 //Go in shop SWITCH_ENTRY_EXIT cschp TRUE SWITCH_ENTRY_EXIT cssprt TRUE SWITCH_ENTRY_EXIT lacs1 TRUE WAIT 2500 RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON print_help_sweet2 = 0 WHILE NOT print_help_sweet2 = 2 WAIT 0 GET_AREA_VISIBLE new_visible_area IF new_visible_area = 15 IF print_help_sweet2 = 0 IF LOCATE_CHAR_ON_FOOT_3D scplayer 208.0279 -107.9499 1004.1328 10.0 10.0 5.0 FALSE SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON CLEAR_PRINTS WAIT 1500 SET_PLAYER_CONTROL player1 OFF SET_FIXED_CAMERA_POSITION 213.0277 -102.9124 1006.3765 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 213.7582 -102.2797 1006.1193 JUMP_CUT PRINT_NOW (S2HELP2) 6000 1 //get clothes blah blah WAIT 4000 RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON PRINT_HELP HELWARD print_help_sweet2 = 1 ENDIF ENDIF ENDIF IF print_help_sweet2 = 1 IF new_visible_area = 0 IF LOCATE_CHAR_ON_FOOT_3D scplayer 2244.4800 -1664.0599 14.4690 10.0 10.0 5.0 FALSE REMOVE_BLIP shooting_range_blip WAIT 2000 print_help_sweet2 = 2 ENDIF ENDIF ENDIF ENDWHILE RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON GOTO mission_sweet2_passed // **************************************** Mission sweet2 failed ************************ mission_sweet2_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_PISTOL SET_CHAR_AMMO scplayer WEAPONTYPE_PISTOL 5 ENDIF REMOVE_BLIP emmets_shop_blip SWITCH_ENTRY_EXIT cschp FALSE //BINCO //LA SWITCH_ENTRY_EXIT cssprt FALSE //PROLAPS //LA SWITCH_ENTRY_EXIT lacs1 FALSE //SUBURBAN //LA RETURN // **************************************** mission sweet2 passed ************************* mission_sweet2_passed: flag_sweet_mission_counter ++ REGISTER_MISSION_PASSED ( SWEET_2 ) //Used in the stats PRINT_WITH_NUMBER_BIG ( M_PASSR ) 4 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 4 START_NEW_SCRIPT smoke_mission_loop REMOVE_BLIP smoke_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT smokeX smokeY smokeZ smoke_blip_icon smoke_contact_blip REMOVE_BLIP clothes_shop1 ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2243.8069 -1668.5667 20.0313 RADAR_SPRITE_TSHIRT clothes_shop1 //Clothes REMOVE_BLIP emmets_shop_blip ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2447.3643 -1974.4963 12.5469 RADAR_SPRITE_EMMETGUN emmets_shop_blip //Emmet CREATE_PICKUP_WITH_AMMO COLT45 PICKUP_ON_STREET_SLOW 16 2447.7732 -1975.6631 13.0 emmets_gun IF added_all_clothes_blips_before = 0 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 -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 ENDIF PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL player1 PLAYER_MADE_PROGRESS 1 RETURN // ********************************** mission cleanup ************************************ mission_cleanup_sweet2: flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start REMOVE_CHAR_ELEGANTLY big_smoke REMOVE_CHAR_ELEGANTLY emmet //REMOVE_ANIMATION gymnasium REMOVE_ANIMATION GANGS REMOVE_ANIMATION CRACK REMOVE_ANIMATION COLT45 REMOVE_ANIMATION FAT SWITCH_CAR_GENERATOR gen_car7 101 MARK_MODEL_AS_NO_LONGER_NEEDED Colt45 MARK_MODEL_AS_NO_LONGER_NEEDED glendale MARK_MODEL_AS_NO_LONGER_NEEDED DYN_WINE_BIG MARK_MODEL_AS_NO_LONGER_NEEDED cellphone //MARK_MODEL_AS_NO_LONGER_NEEDED barrel4 MARK_MODEL_AS_NO_LONGER_NEEDED tampa GOSUB reset_gang_density UNLOAD_SPECIAL_CHARACTER 10 UNLOAD_SPECIAL_CHARACTER 1 REMOVE_BLIP shooting_range_blip REMOVE_BLIP smoke_car_blip SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 RELEASE_WEATHER IF NOT IS_CAR_DEAD emmets_car SET_CAR_PROOFS emmets_car FALSE FALSE FALSE FALSE FALSE ENDIF SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 CLEAR_HELP MISSION_HAS_FINISHED RETURN chars_look_at_targets: IF DOES_OBJECT_EXIST tag_target[tag_index] IF NOT IS_CHAR_DEAD big_smoke TASK_LOOK_AT_OBJECT big_smoke tag_target[tag_index] 5000 ENDIF ENDIF RETURN stop_chars_look_at_targets: IF DOES_OBJECT_EXIST tag_target[tag_index] IF NOT IS_CHAR_DEAD big_smoke CLEAR_LOOK_AT big_smoke ENDIF ENDIF RETURN sweet2_death_check: RETURN load_and_play_audio_sweet2: IF sweet2_audio_is_playing = 0 OR sweet2_audio_is_playing = 1 IF sweet2_index <= sweet2_cell_index_end IF TIMERA > 200 GOSUB play_sweet2_audio ENDIF ENDIF ENDIF IF sweet2_audio_is_playing = 2 IF HAS_MISSION_AUDIO_FINISHED 1 GOSUB stop_talking_sweet2 sweet2_audio_is_playing = 0 sweet2_index ++ sweet2_cutscene_flag = 0 CLEAR_PRINTS TIMERA = 0 ENDIF ENDIF RETURN play_sweet2_audio: IF sweet2_audio_is_playing = 0 LOAD_MISSION_AUDIO 1 sweet2_audio_chat[sweet2_index] sweet2_audio_is_playing = 1 ENDIF IF sweet2_audio_is_playing = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW ( $sweet2_chat[sweet2_index] ) 4000 1 PLAY_MISSION_AUDIO 1 GOSUB start_talking_sweet2 sweet2_audio_is_playing = 2 ENDIF ENDIF RETURN get_back_in_the_car_sweet2: CLEAR_MISSION_AUDIO 2 IF get_in_counter_sweet2 = 0 LOAD_MISSION_AUDIO 2 SOUND_SMOX_AA //Get in ENDIF IF get_in_counter_sweet2 = 1 LOAD_MISSION_AUDIO 2 SOUND_SMOX_AB //In the ride! ENDIF IF get_in_counter_sweet2 = 2 LOAD_MISSION_AUDIO 2 SOUND_SMOX_AC //Get in the car! ENDIF IF get_in_counter_sweet2 = 3 LOAD_MISSION_AUDIO 2 SOUND_SMOX_AD //Come on, playa, get in! ENDIF IF get_in_counter_sweet2 = 4 LOAD_MISSION_AUDIO 2 SOUND_SMOX_AE //Come on, wise man, get in the car! ENDIF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer CLEAR_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CAR_DEAD big_smoke_car //PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! //GOTO mission_sweet2_failed RETURN ENDIF IF IS_CHAR_DEAD big_smoke //PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! //GOTO mission_sweet2_failed RETURN ENDIF ENDWHILE PLAY_MISSION_AUDIO 2 IF get_in_counter_sweet2 = 0 PRINT_NOW ( SMOX_AA ) 3000 1 ENDIF IF get_in_counter_sweet2 = 1 PRINT_NOW ( SMOX_AB ) 3000 1 ENDIF IF get_in_counter_sweet2 = 2 PRINT_NOW ( SMOX_AC ) 3000 1 ENDIF IF get_in_counter_sweet2 = 3 PRINT_NOW ( SMOX_AD ) 3000 1 ENDIF IF get_in_counter_sweet2 = 4 PRINT_NOW ( SMOX_AE ) 3000 1 ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CAR_DEAD big_smoke_car //PRINT_NOW (SWE2_C) 10000 1 //~r~Trashed smokes ride! //GOTO mission_sweet2_failed RETURN ENDIF IF IS_CHAR_DEAD big_smoke //PRINT_NOW (SWE2_B) 10000 1 //~r~Smoke is dead! //GOTO mission_sweet2_failed RETURN ENDIF ENDWHILE get_in_counter_sweet2 ++ IF get_in_counter_sweet2 > 4 get_in_counter_sweet2 = 0 ENDIF RETURN start_talking_sweet2: IF sweet2_audio_chat[sweet2_index] = SOUND_SWE3_AA OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_AF OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_AK OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_GN OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_HA OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_HC SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE START_CHAR_FACIAL_TALK scplayer 3000 RETURN ENDIF IF sweet2_audio_chat[sweet2_index] = SOUND_SWE3_HF OR sweet2_audio_chat[sweet2_index] = SOUND_MSWE07A OR sweet2_audio_chat[sweet2_index] = SOUND_MSWE07C OR sweet2_audio_chat[sweet2_index] = SOUND_MSWE07E OR sweet2_audio_chat[sweet2_index] = SOUND_MSWE07J OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_JB SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE START_CHAR_FACIAL_TALK scplayer 3000 RETURN ENDIF IF sweet2_audio_chat[sweet2_index] = SOUND_SWE3_GC OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_GG OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_GH OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_GJ OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_GK OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_GL IF NOT IS_CHAR_DEAD emmet SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH emmet TRUE START_CHAR_FACIAL_TALK emmet 3000 ENDIF ELSE IF NOT IS_CHAR_DEAD big_smoke SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke TRUE START_CHAR_FACIAL_TALK big_smoke 3000 ENDIF ENDIF RETURN stop_talking_sweet2: IF sweet2_audio_chat[sweet2_index] = SOUND_SWE3_AA OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_AF OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_AK OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_GN OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_HA OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_HC SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer RETURN ENDIF IF sweet2_audio_chat[sweet2_index] = SOUND_SWE3_HF OR sweet2_audio_chat[sweet2_index] = SOUND_MSWE07A OR sweet2_audio_chat[sweet2_index] = SOUND_MSWE07C OR sweet2_audio_chat[sweet2_index] = SOUND_MSWE07E OR sweet2_audio_chat[sweet2_index] = SOUND_MSWE07J OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_JB SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer RETURN ENDIF IF sweet2_audio_chat[sweet2_index] = SOUND_SWE3_GC OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_GG OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_GH OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_GJ OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_GK OR sweet2_audio_chat[sweet2_index] = SOUND_SWE3_GL IF NOT IS_CHAR_DEAD emmet SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH emmet FALSE STOP_CHAR_FACIAL_TALK emmet ENDIF ELSE IF NOT IS_CHAR_DEAD big_smoke SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke FALSE STOP_CHAR_FACIAL_TALK big_smoke ENDIF ENDIF RETURN set_gang_density_to_zero: SET_ZONE_GANG_STRENGTH ELS1a GANG_FLAT 0 SET_ZONE_GANG_STRENGTH ELS1b GANG_FLAT 0 SET_ZONE_GANG_STRENGTH ELS2 GANG_FLAT 0 SET_ZONE_GANG_STRENGTH ELS3a GANG_FLAT 0 SET_ZONE_GANG_STRENGTH ELS3b GANG_FLAT 0 SET_ZONE_GANG_STRENGTH ELS4 GANG_FLAT 0 SET_ZONE_GANG_STRENGTH LIND1a GANG_FLAT 0 SET_ZONE_GANG_STRENGTH LIND1b GANG_FLAT 0 SET_ZONE_GANG_STRENGTH LIND2a GANG_FLAT 0 SET_ZONE_GANG_STRENGTH LIND2b GANG_FLAT 0 SET_ZONE_GANG_STRENGTH LIND3 GANG_FLAT 0 SET_ZONE_GANG_STRENGTH IWD1 GANG_FLAT 0 SET_ZONE_GANG_STRENGTH IWD2 GANG_FLAT 0 SET_ZONE_GANG_STRENGTH IWD3a GANG_FLAT 0 SET_ZONE_GANG_STRENGTH IWD3b GANG_FLAT 0 SET_ZONE_GANG_STRENGTH IWD4 GANG_FLAT 0 SET_ZONE_GANG_STRENGTH IWD5 GANG_FLAT 0 RETURN reset_gang_density: SET_ZONE_GANG_STRENGTH ELS1a GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS1b GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS2 GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS3a GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS3b GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS4 GANG_FLAT 30 SET_ZONE_GANG_STRENGTH LIND1a GANG_FLAT 20 SET_ZONE_GANG_STRENGTH LIND1b GANG_FLAT 20 SET_ZONE_GANG_STRENGTH LIND2a GANG_FLAT 20 SET_ZONE_GANG_STRENGTH LIND2b GANG_FLAT 20 SET_ZONE_GANG_STRENGTH LIND3 GANG_FLAT 20 SET_ZONE_GANG_STRENGTH IWD1 GANG_FLAT 30 SET_ZONE_GANG_STRENGTH IWD2 GANG_FLAT 30 SET_ZONE_GANG_STRENGTH IWD3a GANG_FLAT 30 SET_ZONE_GANG_STRENGTH IWD3b GANG_FLAT 30 SET_ZONE_GANG_STRENGTH IWD4 GANG_FLAT 30 SET_ZONE_GANG_STRENGTH IWD5 GANG_FLAT 30 RETURN } MISSION_START // ------------------------------------------------------------------------------------------------ // Sweet Mission 4: Ghetto Drive By { SCRIPT_NAME sweet4 // Begin... GOSUB mission_start_sweet4 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_sweet4 ENDIF GOSUB mission_cleanup_sweet4 MISSION_END // ------------------------------------------------------------------------------------------------ // Variables // ---- Flags VAR_INT sw4_stage sw4_hood_acc sw4_ammo sw4_hood_dead[18] sw4_spray_marker VAR_INT sw4_blipped sw4_cut sw4_attack[4] sw4_hood_create[4] LVAR_INT sw4_group_active sw4_group_dead[4] sw4_loop sw4_side sw4_anim LVAR_INT sw4_create sw4_help sw4_stopped_text sw4_stopped sw4_in_car LVAR_INT sw4_decision sw4_on_fire LVAR_INT sw4_wanted_flag sw4_skip_flag sw4_sequence_flag LVAR_INT sw4_cut_text sw4_max_wanted // ---- Blips LVAR_FLOAT sw4_hood_x sw4_hood_y sw4_hood_z LVAR_INT sw4_hood_blip sw4_end_blip sw4_hood_group4_exclusion // ---- Timers / Counters LVAR_INT sw4_timer_start[6] sw4_timer_end[6] sw4_timer_diff[6] sw4_dead_count LVAR_INT sw4_timer_remaining_secs sw4_timer_remaining LVAR_INT sw4_blip_timer_diff sw4_blip_timer_end sw4_blip_timer_start sw4_blip_counter VAR_INT sw4_text_timer_start sw4_text_timer_end sw4_text_timer_diff sw4_text_timer_flag LVAR_INT sw4_count // ---- Coords LVAR_FLOAT sw4_group_loc LVAR_FLOAT sw4_gosub_x sw4_gosub_y sw4_gosub_z LVAR_FLOAT sw4_end_x sw4_end_y sw4_end_z // ---- Sequences LVAR_INT sw4_flee_exp_car sw4_destroy_lead_car sw4_move sw4_flee_car sw4_drive_away sw4_smoke_enters_car LVAR_INT sw4_hood_react[16] sw4_sweet_end_cut sw4_smoke_end_cut sw4_player_shake sw4_ryder_end_cut LVAR_INT sw4_hood_anim // ---- Cameras LVAR_FLOAT sw4_cam_x[10] sw4_cam_y[10] sw4_cam_z[10] // ---- Objects LVAR_INT sw4_gang_strength[40] // ---- Entities LVAR_INT sw4_player_car_arrive sw4_hood_grp[4] sw4_gosub_char sw4_closest_ped LVAR_INT sw4_player_group sw4_passenger sw4_forty VAR_INT sw4_health_display sw4_health LVAR_FLOAT sw4_closest_ped_dist sw4_gosub_dist sw4_anim_time // ---- Dialogue LVAR_TEXT_LABEL sw4_text[62] LVAR_INT sw4_audio_char LVAR_INT sw4_audio[62] sw4_counter sw4_audio_playing sw4_audio_slot sw4_alt_slot sw4_ahead_counter // -------- Characters sw4_load_all: REQUEST_MODEL GREENWOO REQUEST_MODEL TEC9 REQUEST_MODEL COLT45 LOAD_SPECIAL_CHARACTER 10 smoke LOAD_SPECIAL_CHARACTER 2 ryder2 LOAD_SPECIAL_CHARACTER 3 sweet LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED GREENWOO OR NOT HAS_MODEL_LOADED TEC9 OR NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_SPECIAL_CHARACTER_LOADED 10 OR NOT HAS_SPECIAL_CHARACTER_LOADED 2 OR NOT HAS_SPECIAL_CHARACTER_LOADED 3 WAIT 0 ENDWHILE RETURN // ---- Smoke sw4_smoke_create: LVAR_INT sw4_smoke sw4_smoke_blip sw4_smoke_status LVAR_FLOAT sw4_smoke_x sw4_smoke_y sw4_smoke_z sw4_smoke_h sw4_smoke_x = 2510.76 sw4_smoke_y = -1665.82 sw4_smoke_z = 12.3835 sw4_smoke_h = 213.1638 CLEAR_AREA sw4_smoke_x sw4_smoke_y sw4_smoke_z 1.0 TRUE CREATE_CHAR PEDTYPE_CIVMALE SPECIAL10 sw4_smoke_x sw4_smoke_y sw4_smoke_z sw4_smoke SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR sw4_smoke FALSE GIVE_WEAPON_TO_CHAR sw4_smoke WEAPONTYPE_TEC9 sw4_ammo SET_CURRENT_CHAR_WEAPON sw4_smoke WEAPONTYPE_TEC9 SET_CHAR_HEADING sw4_smoke sw4_smoke_h SET_CHAR_ACCURACY sw4_smoke 90 SET_ANIM_GROUP_FOR_CHAR sw4_smoke fatman SET_CHAR_PROOFS sw4_smoke TRUE FALSE FALSE FALSE FALSE SET_CHAR_HEALTH sw4_smoke 200 RETURN // -------- // ---- Ryder sw4_ryder_create: LVAR_INT sw4_ryder sw4_ryder_blip sw4_ryder_status LVAR_FLOAT sw4_ryder_x sw4_ryder_y sw4_ryder_z sw4_ryder_h sw4_ryder_x = 2509.39 sw4_ryder_y = -1672.07 sw4_ryder_z = 12.3835 sw4_ryder_h = 59.5920 CLEAR_AREA sw4_ryder_x sw4_ryder_y sw4_ryder_z 1.0 TRUE CREATE_CHAR PEDTYPE_CIVMALE SPECIAL02 sw4_ryder_x sw4_ryder_y sw4_ryder_z sw4_ryder SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR sw4_ryder FALSE GIVE_WEAPON_TO_CHAR sw4_ryder WEAPONTYPE_TEC9 sw4_ammo SET_CURRENT_CHAR_WEAPON sw4_ryder WEAPONTYPE_TEC9 SET_CHAR_HEADING sw4_ryder sw4_ryder_h SET_CHAR_ACCURACY sw4_ryder 90 SET_ANIM_GROUP_FOR_CHAR sw4_ryder gang1 SET_CHAR_PROOFS sw4_ryder TRUE FALSE FALSE FALSE FALSE SET_CHAR_HEALTH sw4_ryder 200 RETURN sw4_ryder_delete: MARK_CHAR_AS_NO_LONGER_NEEDED sw4_ryder RETURN // -------- // ---- Sweet sw4_sweet_create: LVAR_INT sw4_sweet sw4_sweet_blip sw4_sweet_status LVAR_FLOAT sw4_sweet_x sw4_sweet_y sw4_sweet_z sw4_sweet_h sw4_sweet_x = 2514.29 sw4_sweet_y = -1670.46 sw4_sweet_z = 12.3835 sw4_sweet_h = 41.1276 CLEAR_AREA sw4_sweet_x sw4_sweet_y sw4_sweet_z 1.0 TRUE CREATE_CHAR PEDTYPE_CIVMALE SPECIAL03 sw4_sweet_x sw4_sweet_y sw4_sweet_z sw4_sweet SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR sw4_sweet FALSE GIVE_WEAPON_TO_CHAR sw4_sweet WEAPONTYPE_TEC9 sw4_ammo SET_CURRENT_CHAR_WEAPON sw4_sweet WEAPONTYPE_TEC9 SET_CHAR_HEADING sw4_sweet sw4_sweet_h SET_CHAR_ACCURACY sw4_sweet 90 SET_ANIM_GROUP_FOR_CHAR sw4_sweet gang2 SET_CHAR_PROOFS sw4_sweet TRUE FALSE FALSE FALSE FALSE SET_CHAR_HEALTH sw4_sweet 200 RETURN // -------- // ---- Flat Hoods sw4_flat_hood_create: LVAR_INT sw4_flat_hood[18] sw4_flat_hood_blip[18] LVAR_FLOAT sw4_flat_hood_x[18] sw4_flat_hood_y[18] sw4_flat_hood_z[18] sw4_flat_hood_h[18] LVAR_INT sw4_hood_car[4] LVAR_FLOAT sw4_hood_car_x[4] sw4_hood_car_y[4] sw4_hood_car_z[4] sw4_hood_car_h[4] REQUEST_MODEL ballas1 REQUEST_MODEL ballas2 REQUEST_MODEL COLT45 REQUEST_MODEL VOODOO REQUEST_MODEL SPRAYCAN LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED ballas1 OR NOT HAS_MODEL_LOADED ballas2 OR NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED VOODOO OR NOT HAS_MODEL_LOADED SPRAYCAN WAIT 0 ENDWHILE REQUEST_ANIMATION GANGS REQUEST_ANIMATION GHANDS REQUEST_ANIMATION GHETTO_DB WHILE NOT HAS_ANIMATION_LOADED GANGS OR NOT HAS_ANIMATION_LOADED GHANDS OR NOT HAS_ANIMATION_LOADED GHETTO_DB WAIT 0 ENDWHILE sw4_create = 1 RETURN ADD_BLIP_FOR_COORD 2075.55 -1831.09 12.21 sw4_spray_marker CREATE_CHAR PEDTYPE_GANG_FLAT ballas1 sw4_flat_hood_x[14] sw4_flat_hood_y[14] sw4_flat_hood_z[14] sw4_closest_ped CREATE_CHAR PEDTYPE_GANG_FLAT ballas1 sw4_flat_hood_x[14] sw4_flat_hood_y[14] sw4_flat_hood_z[14] sw4_audio_char ADD_BLIP_FOR_CHAR sw4_smoke sw4_smoke_blip ADD_BLIP_FOR_CHAR sw4_sweet sw4_sweet_blip ADD_BLIP_FOR_CHAR sw4_ryder sw4_ryder_blip // ---- Group 1 sw4_flat_hood_create1: sw4_hood_car_x[0] = 2077.18 sw4_hood_car_y[0] = -1362.05 sw4_hood_car_z[0] = 23.65 sw4_hood_car_h[0] = 180.0 sw4_flat_hood_x[0] = 2079.42 sw4_flat_hood_y[0] = -1364.08 sw4_flat_hood_z[0] = 23.04 sw4_flat_hood_h[0] = 314.1323 CLEAR_AREA sw4_hood_car_x[0] sw4_hood_car_y[0] sw4_hood_car_z[0] 0.5 TRUE CREATE_CAR VOODOO sw4_hood_car_x[0] sw4_hood_car_y[0] sw4_hood_car_z[0] sw4_hood_car[0] CREATE_CHAR_INSIDE_CAR sw4_hood_car[0] PEDTYPE_GANG_FLAT ballas1 sw4_flat_hood[0] SET_CAR_HEADING sw4_hood_car[0] sw4_hood_car_h[0] SUPPRESS_CAR_MODEL VOODOO OPEN_CAR_DOOR sw4_hood_car[0] FRONT_LEFT_DOOR //CREATE_CHAR PEDTYPE_GANG_FLAT ballas1 sw4_flat_hood_x[0] sw4_flat_hood_y[0] sw4_flat_hood_z[0] sw4_flat_hood[0] //SET_CHAR_HEADING sw4_flat_hood[0] sw4_flat_hood_h[0] GIVE_WEAPON_TO_CHAR sw4_flat_hood[0] WEAPONTYPE_TEC9 sw4_ammo SET_CHAR_ACCURACY sw4_flat_hood[0] sw4_hood_acc IF sw4_blipped = 0 ADD_BLIP_FOR_CHAR sw4_flat_hood[0] sw4_flat_hood_blip[0] ENDIF sw4_flat_hood_x[1] = 2075.95 sw4_flat_hood_y[1] = -1365.74 sw4_flat_hood_z[1] = 24.02 sw4_flat_hood_h[1] = 315.85 CLEAR_AREA sw4_flat_hood_x[1] sw4_flat_hood_y[1] sw4_flat_hood_z[1] 0.5 TRUE CREATE_CHAR PEDTYPE_GANG_FLAT ballas2 sw4_flat_hood_x[1] sw4_flat_hood_y[1] sw4_flat_hood_z[1] sw4_flat_hood[1] GIVE_WEAPON_TO_CHAR sw4_flat_hood[1] WEAPONTYPE_PISTOL sw4_ammo SET_CHAR_HEADING sw4_flat_hood[1] sw4_flat_hood_h[1] SET_CHAR_ACCURACY sw4_flat_hood[1] sw4_hood_acc IF sw4_blipped = 0 ADD_BLIP_FOR_CHAR sw4_flat_hood[1] sw4_flat_hood_blip[1] ENDIF sw4_flat_hood_x[2] = 2079.87 sw4_flat_hood_y[2] = -1361.88 sw4_flat_hood_z[2] = 24.02 sw4_flat_hood_h[2] = 54.15 CLEAR_AREA sw4_flat_hood_x[2] sw4_flat_hood_y[2] sw4_flat_hood_z[2] 0.5 TRUE CREATE_CHAR PEDTYPE_GANG_FLAT ballas1 sw4_flat_hood_x[2] sw4_flat_hood_y[2] sw4_flat_hood_z[2] sw4_flat_hood[2] GIVE_WEAPON_TO_CHAR sw4_flat_hood[2] WEAPONTYPE_PISTOL sw4_ammo SET_CHAR_HEADING sw4_flat_hood[2] sw4_flat_hood_h[2] SET_CHAR_ACCURACY sw4_flat_hood[2] sw4_hood_acc IF sw4_blipped = 0 ADD_BLIP_FOR_CHAR sw4_flat_hood[2] sw4_flat_hood_blip[2] ENDIF sw4_flat_hood_x[3] = 2079.34 sw4_flat_hood_y[3] = -1360.02 sw4_flat_hood_z[3] = 24.02 sw4_flat_hood_h[3] = 214.36 CLEAR_AREA sw4_flat_hood_x[3] sw4_flat_hood_y[3] sw4_flat_hood_z[3] 0.5 TRUE CREATE_CHAR PEDTYPE_GANG_FLAT ballas1 sw4_flat_hood_x[3] sw4_flat_hood_y[3] sw4_flat_hood_z[3] sw4_flat_hood[3] GIVE_WEAPON_TO_CHAR sw4_flat_hood[3] WEAPONTYPE_PISTOL sw4_ammo SET_CHAR_HEADING sw4_flat_hood[3] sw4_flat_hood_h[3] SET_CHAR_ACCURACY sw4_flat_hood[3] sw4_hood_acc IF sw4_blipped = 0 ADD_BLIP_FOR_CHAR sw4_flat_hood[3] sw4_flat_hood_blip[3] ENDIF RETURN // ---- Group 2 sw4_flat_hood_create2: sw4_hood_car_x[1] = 2101.57 sw4_hood_car_y[1] = -1287.65 sw4_hood_car_z[1] = 24.17 sw4_hood_car_h[1] = 5.0 sw4_flat_hood_x[4] = 2101.57 sw4_flat_hood_y[4] = -1287.65 sw4_flat_hood_z[4] = 24.17 sw4_flat_hood_h[4] = 5.0 CLEAR_AREA sw4_flat_hood_x[4] sw4_flat_hood_y[4] sw4_flat_hood_z[4] 0.5 TRUE CREATE_CAR VOODOO sw4_hood_car_x[1] sw4_hood_car_y[1] sw4_hood_car_z[1] sw4_hood_car[1] CREATE_CHAR_INSIDE_CAR sw4_hood_car[1] PEDTYPE_GANG_FLAT ballas1 sw4_flat_hood[4] SET_CAR_HEADING sw4_hood_car[1] sw4_hood_car_h[1] POP_CAR_BOOT sw4_hood_car[1] //CREATE_CHAR PEDTYPE_GANG_FLAT ballas2 sw4_flat_hood_x[4] sw4_flat_hood_y[4] sw4_flat_hood_z[4] sw4_flat_hood[4] //SET_CHAR_HEADING sw4_flat_hood[4] sw4_flat_hood_h[4] GIVE_WEAPON_TO_CHAR sw4_flat_hood[4] WEAPONTYPE_TEC9 sw4_ammo SET_CHAR_ACCURACY sw4_flat_hood[4] sw4_hood_acc sw4_flat_hood_x[5] = 2101.58 sw4_flat_hood_y[5] = -1291.78 sw4_flat_hood_z[5] = 24.02 sw4_flat_hood_h[5] = 182.8706 CLEAR_AREA sw4_flat_hood_x[5] sw4_flat_hood_y[5] sw4_flat_hood_z[5] 0.5 TRUE CREATE_CHAR PEDTYPE_GANG_FLAT ballas2 sw4_flat_hood_x[5] sw4_flat_hood_y[5] sw4_flat_hood_z[5] sw4_flat_hood[5] GIVE_WEAPON_TO_CHAR sw4_flat_hood[5] WEAPONTYPE_PISTOL sw4_ammo SET_CHAR_HEADING sw4_flat_hood[5] sw4_flat_hood_h[5] SET_CHAR_ACCURACY sw4_flat_hood[5] sw4_hood_acc sw4_flat_hood_x[6] = 2099.30 sw4_flat_hood_y[6] = -1291.12 sw4_flat_hood_z[6] = 24.02 sw4_flat_hood_h[6] = 105.53 CLEAR_AREA sw4_flat_hood_x[6] sw4_flat_hood_y[6] sw4_flat_hood_z[6] 0.5 TRUE CREATE_CHAR PEDTYPE_GANG_FLAT ballas1 sw4_flat_hood_x[6] sw4_flat_hood_y[6] sw4_flat_hood_z[6] sw4_flat_hood[6] GIVE_WEAPON_TO_CHAR sw4_flat_hood[6] WEAPONTYPE_PISTOL sw4_ammo SET_CHAR_HEADING sw4_flat_hood[6] sw4_flat_hood_h[6] SET_CHAR_ACCURACY sw4_flat_hood[6] sw4_hood_acc sw4_flat_hood_x[7] = 2093.84 sw4_flat_hood_y[7] = -1290.07 sw4_flat_hood_z[7] = 23.15 sw4_flat_hood_h[7] = 58.035 CLEAR_AREA sw4_flat_hood_x[7] sw4_flat_hood_y[7] sw4_flat_hood_z[7] 0.5 TRUE CREATE_CHAR PEDTYPE_GANG_FLAT ballas2 sw4_flat_hood_x[7] sw4_flat_hood_y[7] sw4_flat_hood_z[7] sw4_flat_hood[7] GIVE_WEAPON_TO_CHAR sw4_flat_hood[7] WEAPONTYPE_PISTOL sw4_ammo SET_CHAR_HEADING sw4_flat_hood[7] sw4_flat_hood_h[7] SET_CHAR_ACCURACY sw4_flat_hood[7] sw4_hood_acc RETURN sw4_flat_hood_create2_active: IF sw4_blipped = 0 IF NOT IS_CHAR_DEAD sw4_flat_hood[4] ADD_BLIP_FOR_CHAR sw4_flat_hood[4] sw4_flat_hood_blip[4] ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[5] ADD_BLIP_FOR_CHAR sw4_flat_hood[5] sw4_flat_hood_blip[5] ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[6] ADD_BLIP_FOR_CHAR sw4_flat_hood[6] sw4_flat_hood_blip[6] ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[7] ADD_BLIP_FOR_CHAR sw4_flat_hood[7] sw4_flat_hood_blip[7] ENDIF ENDIF RETURN // ---- Group 3 sw4_flat_hood_create3: sw4_flat_hood_x[8] = 2161.07 sw4_flat_hood_y[8] = -1265.92 sw4_flat_hood_z[8] = 23.02 sw4_flat_hood_h[8] = 257.59 CLEAR_AREA sw4_flat_hood_x[8] sw4_flat_hood_y[8] sw4_flat_hood_z[8] 0.5 TRUE CREATE_CHAR PEDTYPE_GANG_FLAT ballas1 sw4_flat_hood_x[8] sw4_flat_hood_y[8] sw4_flat_hood_z[8] sw4_flat_hood[8] GIVE_WEAPON_TO_CHAR sw4_flat_hood[8] WEAPONTYPE_TEC9 sw4_ammo SET_CHAR_HEADING sw4_flat_hood[8] sw4_flat_hood_h[8] SET_CHAR_ACCURACY sw4_flat_hood[8] sw4_hood_acc IF sw4_blipped = 0 ADD_BLIP_FOR_CHAR sw4_flat_hood[8] sw4_flat_hood_blip[8] ENDIF sw4_flat_hood_x[9] = 2162.18 sw4_flat_hood_y[9] = -1264.69 sw4_flat_hood_z[9] = 23.03 sw4_flat_hood_h[9] = 238.46 CLEAR_AREA sw4_flat_hood_x[9] sw4_flat_hood_y[9] sw4_flat_hood_z[9] 0.5 TRUE CREATE_CHAR PEDTYPE_GANG_FLAT ballas1 sw4_flat_hood_x[9] sw4_flat_hood_y[9] sw4_flat_hood_z[9] sw4_flat_hood[9] GIVE_WEAPON_TO_CHAR sw4_flat_hood[9] WEAPONTYPE_PISTOL sw4_ammo SET_CHAR_HEADING sw4_flat_hood[9] sw4_flat_hood_h[9] SET_CHAR_ACCURACY sw4_flat_hood[9] sw4_hood_acc IF sw4_blipped = 0 ADD_BLIP_FOR_CHAR sw4_flat_hood[9] sw4_flat_hood_blip[9] ENDIF sw4_flat_hood_x[10] = 2162.97 sw4_flat_hood_y[10] = -1261.92 sw4_flat_hood_z[10] = 23.02 sw4_flat_hood_h[10] = 45.33 CLEAR_AREA sw4_flat_hood_x[10] sw4_flat_hood_y[10] sw4_flat_hood_z[10] 0.5 TRUE CREATE_CHAR PEDTYPE_GANG_FLAT ballas2 sw4_flat_hood_x[10] sw4_flat_hood_y[10] sw4_flat_hood_z[10] sw4_flat_hood[10] GIVE_WEAPON_TO_CHAR sw4_flat_hood[10] WEAPONTYPE_PISTOL sw4_ammo SET_CHAR_HEADING sw4_flat_hood[10] sw4_flat_hood_h[10] SET_CHAR_ACCURACY sw4_flat_hood[10] sw4_hood_acc IF sw4_blipped = 0 ADD_BLIP_FOR_CHAR sw4_flat_hood[10] sw4_flat_hood_blip[10] ENDIF sw4_flat_hood_x[11] = 2160.12 sw4_flat_hood_y[11] = -1262.98 sw4_flat_hood_z[11] = 23.03 sw4_flat_hood_h[11] = 18.46 CLEAR_AREA sw4_flat_hood_x[11] sw4_flat_hood_y[11] sw4_flat_hood_z[11] 0.5 TRUE CREATE_CHAR PEDTYPE_GANG_FLAT ballas2 sw4_flat_hood_x[11] sw4_flat_hood_y[11] sw4_flat_hood_z[11] sw4_flat_hood[11] GIVE_WEAPON_TO_CHAR sw4_flat_hood[11] WEAPONTYPE_PISTOL sw4_ammo SET_CHAR_HEADING sw4_flat_hood[11] sw4_flat_hood_h[11] SET_CHAR_ACCURACY sw4_flat_hood[11] sw4_hood_acc IF sw4_blipped = 0 ADD_BLIP_FOR_CHAR sw4_flat_hood[11] sw4_flat_hood_blip[11] ENDIF RETURN // ---- Group 4 sw4_flat_hood_create4: GET_RANDOM_CHAR_IN_SPHERE_ONLY_DRUGS_BUYERS 1971.0 -1198.0 17.7 180.0 sw4_hood_group4_exclusion //HACKED PATHFIND EXCLUSION sw4_flat_hood_x[12] = 1983.80 sw4_flat_hood_y[12] = -1235.98 sw4_flat_hood_z[12] = 20.17 sw4_flat_hood_h[12] = 318.72 CLEAR_AREA sw4_flat_hood_x[12] sw4_flat_hood_y[12] sw4_flat_hood_z[12] 0.5 TRUE CREATE_CHAR PEDTYPE_GANG_FLAT ballas1 sw4_flat_hood_x[12] sw4_flat_hood_y[12] sw4_flat_hood_z[12] sw4_flat_hood[12] GIVE_WEAPON_TO_CHAR sw4_flat_hood[12] WEAPONTYPE_TEC9 sw4_ammo SET_CHAR_HEADING sw4_flat_hood[12] sw4_flat_hood_h[12] SET_CHAR_ACCURACY sw4_flat_hood[12] sw4_hood_acc IF sw4_blipped = 0 ADD_BLIP_FOR_CHAR sw4_flat_hood[12] sw4_flat_hood_blip[12] ENDIF sw4_flat_hood_x[13] = 1981.30 sw4_flat_hood_y[13] = -1233.94 sw4_flat_hood_z[13] = 20.04 sw4_flat_hood_h[13] = 254.99 CLEAR_AREA sw4_flat_hood_x[13] sw4_flat_hood_y[13] sw4_flat_hood_z[13] 0.5 TRUE CREATE_CHAR PEDTYPE_GANG_FLAT ballas2 sw4_flat_hood_x[13] sw4_flat_hood_y[13] sw4_flat_hood_z[13] sw4_flat_hood[13] GIVE_WEAPON_TO_CHAR sw4_flat_hood[13] WEAPONTYPE_PISTOL sw4_ammo SET_CHAR_HEADING sw4_flat_hood[13] sw4_flat_hood_h[13] SET_CHAR_ACCURACY sw4_flat_hood[13] sw4_hood_acc IF sw4_blipped = 0 ADD_BLIP_FOR_CHAR sw4_flat_hood[13] sw4_flat_hood_blip[13] ENDIF sw4_flat_hood_x[14] = 1986.67 sw4_flat_hood_y[14] = -1239.76 sw4_flat_hood_z[14] = 19.17 sw4_flat_hood_h[14] = 98.28 CLEAR_AREA sw4_flat_hood_x[14] sw4_flat_hood_y[14] sw4_flat_hood_z[14] 0.5 TRUE CREATE_CHAR PEDTYPE_GANG_FLAT ballas1 sw4_flat_hood_x[14] sw4_flat_hood_y[14] sw4_flat_hood_z[14] sw4_flat_hood[14] GIVE_WEAPON_TO_CHAR sw4_flat_hood[14] WEAPONTYPE_SPRAYCAN sw4_ammo TASK_STAY_IN_SAME_PLACE sw4_flat_hood[14] TRUE SET_CHAR_HEADING sw4_flat_hood[14] sw4_flat_hood_h[14] SET_CHAR_ACCURACY sw4_flat_hood[14] sw4_hood_acc IF sw4_blipped = 0 ADD_BLIP_FOR_CHAR sw4_flat_hood[14] sw4_flat_hood_blip[14] ENDIF sw4_flat_hood_x[15] = 1986.54 sw4_flat_hood_y[15] = -1233.03 sw4_flat_hood_z[15] = 20.07 sw4_flat_hood_h[15] = 143.42 CLEAR_AREA sw4_flat_hood_x[15] sw4_flat_hood_y[15] sw4_flat_hood_z[15] 0.5 TRUE CREATE_CHAR PEDTYPE_GANG_FLAT ballas2 sw4_flat_hood_x[15] sw4_flat_hood_y[15] sw4_flat_hood_z[15] sw4_flat_hood[15] GIVE_WEAPON_TO_CHAR sw4_flat_hood[15] WEAPONTYPE_PISTOL sw4_ammo SET_CHAR_HEADING sw4_flat_hood[15] sw4_flat_hood_h[15] SET_CHAR_ACCURACY sw4_flat_hood[15] sw4_hood_acc IF sw4_blipped = 0 ADD_BLIP_FOR_CHAR sw4_flat_hood[15] sw4_flat_hood_blip[15] ENDIF RETURN sw4_flat_hood_delete: MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[0] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[1] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[2] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[3] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[4] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[5] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[6] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[7] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[8] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[9] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[10] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[11] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[12] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[13] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[14] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[15] RETURN // ------------------------------------------------------------------------------------------------ // -------- Vehicles // ---- Player Car sw4_player_car_create: LVAR_INT sw4_player_car sw4_player_car_blip LVAR_FLOAT sw4_player_car_x sw4_player_car_y sw4_player_car_z sw4_player_car_h sw4_player_car_x = 2508.16 sw4_player_car_y = -1666.47 sw4_player_car_z = 13.0 sw4_player_car_h = 16.0 SWITCH_CAR_GENERATOR gen_car7 0 CUSTOM_PLATE_FOR_NEXT_CAR GREENWOO GROVE4L_ CLEAR_AREA sw4_player_car_x sw4_player_car_y sw4_player_car_z 6.0 TRUE CREATE_CAR GREENWOO sw4_player_car_x sw4_player_car_y sw4_player_car_z sw4_player_car CHANGE_CAR_COLOUR sw4_player_car 59 34 SET_CAR_HEADING sw4_player_car sw4_player_car_h ADD_BLIP_FOR_CAR sw4_player_car sw4_player_car_blip SET_BLIP_AS_FRIENDLY sw4_player_car_blip TRUE //SET_CAR_PROOFS sw4_player_car TRUE TRUE TRUE TRUE TRUE SET_CAN_BURST_CAR_TYRES sw4_player_car FALSE SET_CAR_HEALTH sw4_player_car 1800 ALTER_WANTED_LEVEL player1 0 RETURN sw4_player_car_delete: IF NOT IS_CAR_DEAD sw4_player_car IF NOT IS_CAR_ON_SCREEN sw4_player_car DELETE_CAR sw4_player_car ENDIF ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO RETURN // -------- Set Groups sw4_hood_group1: // IF NOT IS_CHAR_DEAD sw4_flat_hood[0] // AND NOT IS_CHAR_DEAD sw4_flat_hood[1] // AND NOT IS_CHAR_DEAD sw4_flat_hood[2] // AND NOT IS_CHAR_DEAD sw4_flat_hood[3] // CREATE_GROUP DEFAULT_TASK_ALLOCATOR_SIT_IN_LEADER_CAR sw4_hood_grp[0] // SET_GROUP_LEADER sw4_hood_grp[0] sw4_flat_hood[0] // SET_GROUP_MEMBER sw4_hood_grp[0] sw4_flat_hood[1] // SET_GROUP_MEMBER sw4_hood_grp[0] sw4_flat_hood[2] // SET_GROUP_MEMBER sw4_hood_grp[0] sw4_flat_hood[3] // ENDIF RETURN sw4_hood_group2: // IF NOT IS_CHAR_DEAD sw4_flat_hood[4] // AND NOT IS_CHAR_DEAD sw4_flat_hood[5] // AND NOT IS_CHAR_DEAD sw4_flat_hood[6] // AND NOT IS_CHAR_DEAD sw4_flat_hood[7] // CREATE_GROUP DEFAULT_TASK_ALLOCATOR_SIT_IN_LEADER_CAR sw4_hood_grp[1] // SET_GROUP_LEADER sw4_hood_grp[1] sw4_flat_hood[4] // SET_GROUP_MEMBER sw4_hood_grp[1] sw4_flat_hood[5] // SET_GROUP_MEMBER sw4_hood_grp[1] sw4_flat_hood[6] // SET_GROUP_MEMBER sw4_hood_grp[1] sw4_flat_hood[7] // ENDIF RETURN sw4_hood_group3: IF NOT IS_CHAR_DEAD sw4_flat_hood[8] AND NOT IS_CHAR_DEAD sw4_flat_hood[9] AND NOT IS_CHAR_DEAD sw4_flat_hood[10] AND NOT IS_CHAR_DEAD sw4_flat_hood[11] CREATE_GROUP DEFAULT_TASK_ALLOCATOR_FOLLOW_ANY_MEANS sw4_hood_grp[2] SET_GROUP_LEADER sw4_hood_grp[2] sw4_flat_hood[8] SET_GROUP_MEMBER sw4_hood_grp[2] sw4_flat_hood[9] SET_GROUP_MEMBER sw4_hood_grp[2] sw4_flat_hood[10] SET_GROUP_MEMBER sw4_hood_grp[2] sw4_flat_hood[11] ENDIF RETURN sw4_hood_group4: IF NOT IS_CHAR_DEAD sw4_flat_hood[12] AND NOT IS_CHAR_DEAD sw4_flat_hood[13] AND NOT IS_CHAR_DEAD sw4_flat_hood[14] AND NOT IS_CHAR_DEAD sw4_flat_hood[15] CREATE_GROUP DEFAULT_TASK_ALLOCATOR_FOLLOW_ANY_MEANS sw4_hood_grp[3] SET_GROUP_LEADER sw4_hood_grp[3] sw4_flat_hood[12] SET_GROUP_MEMBER sw4_hood_grp[3] sw4_flat_hood[13] SET_GROUP_MEMBER sw4_hood_grp[3] sw4_flat_hood[14] SET_GROUP_MEMBER sw4_hood_grp[3] sw4_flat_hood[15] ENDIF RETURN // ---- Sequences sw4_hood_react_group1: IF NOT IS_CAR_DEAD sw4_hood_car[0] AND NOT IS_CAR_DEAD sw4_player_car OPEN_SEQUENCE_TASK sw4_hood_react[0] // First car, driver gets out and shoots at the player's car... TASK_LEAVE_CAR -1 sw4_hood_car[0] TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_DESTROY_CAR -1 sw4_player_car CLOSE_SEQUENCE_TASK sw4_hood_react[0] ENDIF IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD sw4_player_car OPEN_SEQUENCE_TASK sw4_hood_react[1] // First car, goon walks around car while shooting at the player, then shoots some more... TASK_GO_TO_COORD_WHILE_SHOOTING -1 2075.15 -1363.85 23.85 PEDMOVE_RUN 0.5 5.0 scplayer TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_DESTROY_CAR -1 sw4_player_car CLOSE_SEQUENCE_TASK sw4_hood_react[1] ENDIF IF NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK sw4_hood_react[2] // First car, goon heads for the player's car while shooting... TASK_DIVE_AND_GET_UP -1 1.0 1.0 500 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_DESTROY_CAR -1 sw4_player_car CLOSE_SEQUENCE_TASK sw4_hood_react[2] ENDIF IF NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK sw4_hood_anim // First car, goon heads for the player's car while shooting... TASK_PLAY_ANIM -1 prtial_gngtlkG GANGS 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM -1 prtial_gngtlkH GANGS 4.0 FALSE FALSE FALSE FALSE 0 CLOSE_SEQUENCE_TASK sw4_hood_anim ENDIF IF NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK sw4_hood_react[3] // First car, goon makes a break for it... TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_DESTROY_CAR -1 sw4_player_car CLOSE_SEQUENCE_TASK sw4_hood_react[3] ENDIF RETURN sw4_hood_react_group2: IF NOT IS_CAR_DEAD sw4_hood_car[1] AND NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK sw4_hood_react[4] // Second car, goon gets out of car heads for player while shooting... TASK_LEAVE_CAR -1 sw4_hood_car[1] TASK_GO_TO_COORD_WHILE_SHOOTING -1 sw4_player_car_x sw4_player_car_y sw4_player_car_z PEDMOVE_WALK 1.0 5.0 scplayer TASK_DESTROY_CAR -1 sw4_player_car CLOSE_SEQUENCE_TASK sw4_hood_react[4] ENDIF IF NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK sw4_hood_react[5] // Second car, goon makes a break for it... TASK_WEAPON_ROLL -1 TRUE TASK_DESTROY_CAR -1 sw4_player_car CLOSE_SEQUENCE_TASK sw4_hood_react[5] ENDIF IF NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK sw4_hood_react[6] // Second car, goon moves to corner while shooting, then flees... TASK_GO_TO_COORD_WHILE_SHOOTING -1 2080.66 -1292.61 24.02 PEDMOVE_RUN 0.5 5.0 scplayer TASK_DESTROY_CAR -1 sw4_player_car CLOSE_SEQUENCE_TASK sw4_hood_react[6] ENDIF IF NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK sw4_hood_react[7] // Second car, goon sidesteps behind car while shooting... TASK_GO_TO_COORD_WHILE_SHOOTING -1 2132.0 -1307.0 24.0 PEDMOVE_RUN 1.0 5.0 scplayer TASK_DESTROY_CAR -1 sw4_player_car CLOSE_SEQUENCE_TASK sw4_hood_react[7] ENDIF RETURN sw4_hood_react_group3: IF NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK sw4_hood_react[8] // Second car, goon gets out of car heads for player while shooting... TASK_GO_TO_COORD_WHILE_SHOOTING -1 2163.0 -1262.0 24.0 PEDMOVE_RUN 1.0 5.0 scplayer TASK_GO_TO_COORD_WHILE_SHOOTING -1 2080.0 -1261.0 24.0 PEDMOVE_RUN 1.0 5.0 scplayer TASK_DESTROY_CAR -1 sw4_player_car CLOSE_SEQUENCE_TASK sw4_hood_react[8] ENDIF IF NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK sw4_hood_react[9] // Second car, goon makes a break for it... TASK_DESTROY_CAR -1 sw4_player_car CLOSE_SEQUENCE_TASK sw4_hood_react[9] ENDIF IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD sw4_player_car OPEN_SEQUENCE_TASK sw4_hood_react[10] // Second car, goon moves to corner while shooting, then flees... TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_DESTROY_CAR -1 sw4_player_car CLOSE_SEQUENCE_TASK sw4_hood_react[10] ENDIF IF NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK sw4_hood_react[11] // Second car, goon sidesteps behind car while shooting... TASK_GO_TO_COORD_WHILE_SHOOTING -1 2163.0 -1262.0 24.0 PEDMOVE_RUN 1.0 5.0 scplayer TASK_GO_TO_COORD_WHILE_SHOOTING -1 2080.0 -1261.0 24.0 PEDMOVE_RUN 1.0 5.0 scplayer TASK_DESTROY_CAR -1 sw4_player_car CLOSE_SEQUENCE_TASK sw4_hood_react[11] ENDIF RETURN sw4_hood_react_group4: IF NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK sw4_hood_react[12] // Second car, goon gets out of car heads for player while shooting... TASK_GO_TO_COORD_WHILE_SHOOTING -1 sw4_player_car_x sw4_player_car_y sw4_player_car_z PEDMOVE_WALK 1.0 5.0 scplayer TASK_DESTROY_CAR -1 sw4_player_car CLOSE_SEQUENCE_TASK sw4_hood_react[12] ENDIF IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD sw4_player_car OPEN_SEQUENCE_TASK sw4_hood_react[13] // Second car, goon makes a break for it... TASK_DESTROY_CAR -1 sw4_player_car CLOSE_SEQUENCE_TASK sw4_hood_react[13] ENDIF IF NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK sw4_hood_react[14] // Second car, goon moves to corner while shooting, then flees... TASK_SHOOT_AT_COORD -1 1984.21 -1239.04 20.50 6000 TASK_FLEE_CHAR -1 scplayer 50.0 -1 CLOSE_SEQUENCE_TASK sw4_hood_react[14] ENDIF IF NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK sw4_hood_react[15] // Second car, goon sidesteps behind car while shooting... TASK_DESTROY_CAR -1 sw4_player_car CLOSE_SEQUENCE_TASK sw4_hood_react[15] ENDIF RETURN // ------------------------------------------------------------------------------------------------ // Start Mission mission_start_sweet4: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 WAIT 0 // ------------------------------------------------------------------------------------------------ // Initialize Variables // ---- Flags sw4_stage = 0 sw4_help = 0 sw4_hood_acc = 30 sw4_ammo = 30000 sw4_blipped = 0 sw4_cut = 0 sw4_wanted_flag = 0 sw4_skip_flag = 0 sw4_sequence_flag = 0 sw4_cut_text = 0 sw4_on_fire = 0 sw4_smoke_status = 0 sw4_ryder_status = 0 sw4_sweet_status = 0 sw4_attack[0] = 0 sw4_attack[1] = 0 sw4_attack[2] = 0 sw4_attack[3] = 0 sw4_hood_create[0] = 0 sw4_hood_create[1] = 0 sw4_hood_create[2] = 0 sw4_hood_create[3] = 0 sw4_dead_count = 0 sw4_hood_dead[0] = 0 sw4_hood_dead[1] = 0 sw4_hood_dead[2] = 0 sw4_hood_dead[3] = 0 sw4_hood_dead[4] = 0 sw4_hood_dead[5] = 0 sw4_hood_dead[6] = 0 sw4_hood_dead[7] = 0 sw4_hood_dead[8] = 0 sw4_hood_dead[9] = 0 sw4_hood_dead[10] = 0 sw4_hood_dead[11] = 0 sw4_hood_dead[12] = 0 sw4_hood_dead[13] = 0 sw4_hood_dead[14] = 0 sw4_hood_dead[15] = 0 sw4_group_dead[0] = 0 sw4_group_dead[1] = 0 sw4_group_dead[2] = 0 sw4_group_dead[3] = 0 sw4_group_active = 0 sw4_create = 0 sw4_count = 0 // ---- Sequences sw4_move = 0 sw4_hood_react[0] = 1 sw4_hood_react[1] = 2 sw4_hood_react[2] = 3 sw4_hood_react[3] = 4 // sw4_hood_react[4] = 1 // sw4_hood_react[5] = 2 // sw4_hood_react[6] = 3 // sw4_hood_react[7] = 4 // // sw4_hood_react[8] = 1 // sw4_hood_react[9] = 2 // sw4_hood_react[10] = 3 // sw4_hood_react[11] = 4 // // sw4_hood_react[12] = 1 // sw4_hood_react[13] = 2 // sw4_hood_react[14] = 3 // sw4_hood_react[15] = 4 sw4_ryder_end_cut = 5 sw4_player_shake = 6 sw4_drive_away = 7 sw4_smoke_enters_car = 8 sw4_hood_anim = 9 // ---- Counter Var sw4_dead_count = 0 // ---- Coords sw4_group_loc = 25.0 // ---- Hoods sw4_flat_hood_x[0] = 2227.72 sw4_flat_hood_y[0] = -1315.79 sw4_flat_hood_z[0] = 24.04 sw4_flat_hood_x[5] = 2099.80 sw4_flat_hood_y[5] = -1288.37 sw4_flat_hood_z[5] = 24.35 sw4_flat_hood_x[10] = 2184.97 sw4_flat_hood_y[10] = -1230.92 sw4_flat_hood_z[10] = 24.02 sw4_flat_hood_x[15] = 2157.77 sw4_flat_hood_y[15] = -1345.03 sw4_flat_hood_z[15] = 24.04 sw4_end_x = 2507.0 sw4_end_y = -1671.0 sw4_end_z = 12.0 // ---- Camera Coords sw4_cam_x[0] = 2500.026 sw4_cam_y[0] = -1661.180 sw4_cam_z[0] = 17.763 sw4_cam_x[1] = 2194.35 sw4_cam_y[1] = -1380.42 sw4_cam_z[1] = 24.34 sw4_cam_x[2] = 2082.42 sw4_cam_y[2] = -1362.58 sw4_cam_z[2] = 26.81 sw4_cam_x[3] = 2078.99 sw4_cam_y[3] = -1366.22 sw4_cam_z[3] = 25.09 sw4_cam_x[4] = 2152.0 sw4_cam_y[4] = -1339.0 sw4_cam_z[4] = 30.0 sw4_cam_x[5] = 2502.16 sw4_cam_y[5] = -1661.95 sw4_cam_z[5] = 15.76 sw4_cam_x[6] = 2509.18 sw4_cam_y[6] = -1662.81 sw4_cam_z[6] = 14.07 sw4_cam_x[7] = 2510.63 sw4_cam_y[7] = -1665.81 sw4_cam_z[7] = 13.83 sw4_cam_x[8] = 2511.89 sw4_cam_y[8] = -1668.39 sw4_cam_z[8] = 14.26 sw4_cam_x[9] = 0.0 sw4_cam_y[9] = 0.0 sw4_cam_z[9] = 0.0 // ---- Flat Hood Blip sw4_hood_x = 2132.2388 sw4_hood_y = -1379.6517 sw4_hood_z = 22.8281 sw4_flat_hood_x[4] = 2101.57 sw4_flat_hood_y[4] = -1287.65 sw4_flat_hood_z[4] = 24.17 sw4_flat_hood_h[4] = 5.0 sw4_flat_hood_x[8] = 2161.07 sw4_flat_hood_y[8] = -1265.92 sw4_flat_hood_z[8] = 23.02 sw4_flat_hood_h[8] = 257.59 sw4_flat_hood_x[12] = 1983.80 sw4_flat_hood_y[12] = -1235.98 sw4_flat_hood_z[12] = 20.17 sw4_flat_hood_h[12] = 318.72 // ---- Dialogue Flags sw4_audio_slot = 1 sw4_alt_slot = 2 sw4_counter = 0 sw4_ahead_counter = 1 sw4_audio_playing = 0 // ---- Dialogue Text $sw4_text[1] = SWE4_AA // Where we going, homie? $sw4_text[2] = SWE4_AB // Rollin' Heights Ballas country. $sw4_text[3] = SWE4_AC // Front Yard Ballas country. $sw4_text[4] = SWE4_AD // Kilo Trays country. $sw4_text[5] = SWE4_AE // Do us a little drive by? $sw4_text[6] = SWE4_AF // For real. You down, Carl? $sw4_text[7] = SWE4_AG // I ain't packing any heat. $sw4_text[8] = SWE4_AH // You ain't cold enough for that shit yet, CJ. $sw4_text[9] = SWE4_AI // No, you're our chauffeur for this little gig! $sw4_text[10] = SWE4_AJ // Gee, thanks. $sw4_text[11] = SWE4_AK // Just don't drive like a fool. $sw4_text[12] = SWE4_BA // Alright, Ballas turf, you dogs ready? $sw4_text[13] = SWE4_BB // Sure, dude, I'm ready. $sw4_text[14] = SWE4_BC // Carl, Just concentrate on the driving and we'll take care of the shooting. $sw4_text[15] = SWE4_BD // Listen to the man. Try not to park us up a tree or nothin'. $sw4_text[16] = SWE4_BE // Yeah if the car stops, we're dead meat. $sw4_text[17] = SWE4_CA // What did I say? CJ drives like a blind motherfucker! $sw4_text[18] = SWE4_CB // Never buy a new car, CJ, never! $sw4_text[19] = SWE4_CC // He's crashing on purpose, I swear it! $sw4_text[20] = SWE4_DA // Holy shit we're sitting ducks! $sw4_text[21] = SWE4_DB // Oh man, oh man, move! MOVE! $sw4_text[22] = SWE4_DC // What you doing, CJ?! $sw4_text[23] = SWE4_DD // Get us moving! $sw4_text[24] = SWE4_DE // He's trying to get us killed! $sw4_text[25] = SWE4_DF // Move it, CJ, move it! $sw4_text[26] = SWE4_EA // I told you he was a buster! $sw4_text[27] = SWE4_EB // Don't run out on me again, Carl! $sw4_text[28] = SWE4_EC // Carl's quitting on us! $sw4_text[29] = SWE4_FA // He's ditched us! $sw4_text[30] = SWE4_FB // Damn you, Carl! I'm on it! $sw4_text[31] = SWE4_FC // I'll get us out of here! $sw4_text[32] = SWE4_FD // Motherfucker! I've got the wheel! $sw4_text[33] = SWE4_GA // Go Carl, GO!! $sw4_text[34] = SWE4_GB // These wheels are hot, every cop in South Central will be looking for this car! $sw4_text[35] = SWE4_HA // Alright! Let's get back to the Grove. $sw4_text[36] = SWE4_HB // Yeah, what you waiting for, Carl? $sw4_text[37] = SWE4_KA // Holy fuck, Grove is back, man, Grove is back! $sw4_text[38] = SWE4_KB // Righteous, dude, they was totally unprepared for us! $sw4_text[39] = SWE4_KC // I'm amazed you didn't get us killed, CJ. $sw4_text[40] = SWE4_KD // Yo, check it, am I dead? $sw4_text[41] = SWE4_KF // Hey, Carl, ignore that motherfucker, you did good today. $sw4_text[42] = SWE4_KG // You're down with the Grove and those Ballas know it, $sw4_text[43] = SWE4_KH // so watch yourself from now on. $sw4_text[44] = SWE4_KE // I'm cool, dude. Look, I'll see you cats later. $sw4_text[45] = SWE4_KI // Here, go get yourself a beer and some colours. $sw4_text[46] = SWE4_LA // We iced them! CJ, let's hunt us down some more! $sw4_text[47] = SWE4_LB // They was too easy, let's find us some more Ballas fools! $sw4_text[48] = SWE4_LC // What you waiting for, CJ? Find us some more Ballas fools to cap! $sw4_text[49] = SWE4_MA // Some of those fools are still standing, we gotta make another pass! $sw4_text[50] = SWE4_MB // We didn't get all those motherfuckers! $sw4_text[51] = SWE4_MC // CJ, let's finish them! $sw4_text[52] = SWE4_MD // Where you going, CJ, there's still some Ballas needing iced! $sw4_text[53] = SWE4_NA // CJ, you're a liability! $sw4_text[54] = SWE4_NB // The cops are onto us again! $sw4_text[55] = SWE4_NC // CJ, you trying to get us busted? $sw4_text[56] = SWE4_OA // C'mon CJ, we gotta lose all this attention! $sw4_text[57] = SWE4_OB // CJ, get us to a spray shop! $sw4_text[58] = SWE4_OC // Not again! C'mon, CJ, get us someplace safe! $sw4_text[59] = SWE4_PA // Now, what was we saying? $sw4_text[60] = SWE4_PB // I forgot what we was rapping on about! $sw4_text[61] = SWE4_PC // Ok, we're cool. Now what was I sayin'? // ---- Dialogue Audio $sw4_audio[1] = SOUND_SWE4_AA // Where we going, homie? $sw4_audio[2] = SOUND_SWE4_AB // Rollin' Heights Ballas country. $sw4_audio[3] = SOUND_SWE4_AC // Front Yard Ballas country. $sw4_audio[4] = SOUND_SWE4_AD // Kilo Trays country. $sw4_audio[5] = SOUND_SWE4_AE // Do us a little drive by? $sw4_audio[6] = SOUND_SWE4_AF // For real. You down, Carl? $sw4_audio[7] = SOUND_SWE4_AG // I ain't packing any heat. $sw4_audio[8] = SOUND_SWE4_AH // You ain't cold enough for that shit yet, CJ. $sw4_audio[9] = SOUND_SWE4_AI // No, you're our chauffeur for this little gig! $sw4_audio[10] = SOUND_SWE4_AJ // Gee, thanks. $sw4_audio[11] = SOUND_SWE4_AK // Just don't drive like a fool. $sw4_audio[12] = SOUND_SWE4_BA // Alright, Ballas turf, you dogs ready? $sw4_audio[13] = SOUND_SWE4_BB // Sure, dude, I'm ready. $sw4_audio[14] = SOUND_SWE4_BC // Carl, Just concentrate on the driving and we'll take care of the shooting. $sw4_audio[15] = SOUND_SWE4_BD // Listen to the man. Try not to park us up a tree or nothin'. $sw4_audio[16] = SOUND_SWE4_BE // Yeah if the car stops, we're dead meat. $sw4_audio[17] = SOUND_SWE4_CA // What did I say? CJ drives like a blind motherfucker! $sw4_audio[18] = SOUND_SWE4_CB // Never buy a new car, CJ, never! $sw4_audio[19] = SOUND_SWE4_CC // He's crashing on purpose, I swear it! $sw4_audio[20] = SOUND_SWE4_DA // Holy shit we're sitting ducks! $sw4_audio[21] = SOUND_SWE4_DB // Oh man, oh man, move! MOVE! $sw4_audio[22] = SOUND_SWE4_DC // What you doing, CJ?! $sw4_audio[23] = SOUND_SWE4_DD // Get us moving! $sw4_audio[24] = SOUND_SWE4_DE // He's trying to get us killed! $sw4_audio[25] = SOUND_SWE4_DF // Move it, CJ, move it! $sw4_audio[26] = SOUND_SWE4_EA // I told you he was a buster! $sw4_audio[27] = SOUND_SWE4_EB // Don't run out on me again, Carl! $sw4_audio[28] = SOUND_SWE4_EC // Carl's quitting on us! $sw4_audio[29] = SOUND_SWE4_FA // He's ditched us! $sw4_audio[30] = SOUND_SWE4_FB // Damn you, Carl! I'm on it! $sw4_audio[31] = SOUND_SWE4_FC // I'll get us out of here! $sw4_audio[32] = SOUND_SWE4_FD // Motherfucker! I've got the wheel! $sw4_audio[33] = SOUND_SWE4_GA // Go Carl, GO!! $sw4_audio[34] = SOUND_SWE4_GB // These wheels are hot, every cop in South Central will be looking for this car! $sw4_audio[35] = SOUND_SWE4_HA // Alright! Let's get back to the Grove. $sw4_audio[36] = SOUND_SWE4_HB // Yeah, what you waiting for, Carl? $sw4_audio[37] = SOUND_SWE4_KA // Holy fuck, Grove is back, man, Grove is back! $sw4_audio[38] = SOUND_SWE4_KB // Righteous, dude, they was totally unprepared for us! $sw4_audio[39] = SOUND_SWE4_KC // I'm amazed you didn't get us killed, CJ. $sw4_audio[40] = SOUND_SWE4_KD // Yo, check it, am I dead? $sw4_audio[41] = SOUND_SWE4_KF // Hey, Carl, ignore that motherfucker, you did good today. $sw4_audio[42] = SOUND_SWE4_KG // You're down with the Grove and those Ballas know it, $sw4_audio[43] = SOUND_SWE4_KH // so watch yourself from now on. $sw4_audio[44] = SOUND_SWE4_KE // I'm cool, dude. Look, I'll see you cats later. $sw4_audio[45] = SOUND_SWE4_KI // Here, go get yourself a beer and some colours. $sw4_audio[46] = SOUND_SWE4_LA // We iced them! CJ, let's hunt us down some more! $sw4_audio[47] = SOUND_SWE4_LB // They was too easy, let's find us some more Ballas fools! $sw4_audio[48] = SOUND_SWE4_LC // What you waiting for, CJ? Find us some more Ballas fools to cap! $sw4_audio[49] = SOUND_SWE4_MA // Some of those fools are still standing, we gotta make another pass! $sw4_audio[50] = SOUND_SWE4_MB // We didn't get all those motherfuckers! $sw4_audio[51] = SOUND_SWE4_MC // CJ, let's finish them! $sw4_audio[52] = SOUND_SWE4_MD // Where you going, CJ, there's still some Ballas needing iced! $sw4_audio[53] = SOUND_SWE4_NA // CJ, you're a liability! $sw4_audio[54] = SOUND_SWE4_NB // The cops are onto us again! $sw4_audio[55] = SOUND_SWE4_NC // CJ, you trying to get us busted? $sw4_audio[56] = SOUND_SWE4_OA // C'mon CJ, we gotta lose all this attention! $sw4_audio[57] = SOUND_SWE4_OB // CJ, get us to a spray shop! $sw4_audio[58] = SOUND_SWE4_OC // Not again! C'mon, CJ, get us someplace safe! $sw4_audio[59] = SOUND_SWE4_PA // Now, what was we saying? $sw4_audio[60] = SOUND_SWE4_PB // I forgot what we was rapping on about! $sw4_audio[61] = SOUND_SWE4_PC // Ok, we're cool. Now what was I sayin'? // ------------------------------------------------------------------------------------------------ // Request Models // ------------------------------------------------------------------------------------------------ // Load Text CLEAR_THIS_PRINT M_FAIL LOAD_MISSION_TEXT SWEET4 //CLEAR_PRINTS // Cutscene CLEAR_AREA 2518.0 -1673.0 14.0 50.0 FALSE //SET_VISIBILITY_OF_CLOSEST_OBJECT_OF_TYPE 2520.0 -1679.0 15.0 10.0 GEN_DOOREXT03 FALSE //SET_PED_DENSITY_MULTIPLIER 0.0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_CUTSCENE SWEET4A DO_FADE 0 FADE_OUT WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT START_CUTSCENE DO_FADE 0 FADE_OUT DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE //SET_VISIBILITY_OF_CLOSEST_OBJECT_OF_TYPE 2520.0 -1679.0 15.0 10.0 GEN_DOOREXT03 TRUE SET_MUSIC_DOES_FADE FALSE SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF SET_RADIO_CHANNEL RS_NEW_JACK_SWING // ------------------------------------------------------------------------------------------------ // Entity GoSubs // Set gang strength SET_CREATE_RANDOM_GANG_MEMBERS FALSE //GET_ZONE_GANG_STRENGTH IWD1 GANG_FLAT sw4_gang_strength[0] //SET_ZONE_GANG_STRENGTH IWD1 GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH IWD2 GANG_FLAT sw4_gang_strength[1] //SET_ZONE_GANG_STRENGTH IWD2 GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH IWD3a GANG_FLAT sw4_gang_strength[2] //SET_ZONE_GANG_STRENGTH IWD3a GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH IWD3b GANG_FLAT sw4_gang_strength[3] //SET_ZONE_GANG_STRENGTH IWD3b GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH IWD4 GANG_FLAT sw4_gang_strength[4] //SET_ZONE_GANG_STRENGTH IWD4 GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH IWD5 GANG_FLAT sw4_gang_strength[5] //SET_ZONE_GANG_STRENGTH IWD5 GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH JEF1a GANG_FLAT sw4_gang_strength[6] //SET_ZONE_GANG_STRENGTH JEF1a GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH JEF1b GANG_FLAT sw4_gang_strength[7] //SET_ZONE_GANG_STRENGTH JEF1b GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH JEF2 GANG_FLAT sw4_gang_strength[8] //SET_ZONE_GANG_STRENGTH JEF2 GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH JEF3b GANG_FLAT sw4_gang_strength[9] //SET_ZONE_GANG_STRENGTH JEF3b GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH JEF3c GANG_FLAT sw4_gang_strength[10] //SET_ZONE_GANG_STRENGTH JEF3c GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH ELS1a GANG_FLAT sw4_gang_strength[11] //SET_ZONE_GANG_STRENGTH ELS1a GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH ELS1b GANG_FLAT sw4_gang_strength[12] //SET_ZONE_GANG_STRENGTH ELS1b GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH ELS2 GANG_FLAT sw4_gang_strength[13] //SET_ZONE_GANG_STRENGTH ELS2 GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH ELS3a GANG_FLAT sw4_gang_strength[14] //SET_ZONE_GANG_STRENGTH ELS3a GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH ELS3b GANG_FLAT sw4_gang_strength[15] //SET_ZONE_GANG_STRENGTH ELS3b GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH ELS4 GANG_FLAT sw4_gang_strength[16] //SET_ZONE_GANG_STRENGTH ELS4 GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH GLN1 GANG_FLAT sw4_gang_strength[17] //SET_ZONE_GANG_STRENGTH GLN1 GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH GLN2a GANG_FLAT sw4_gang_strength[18] //SET_ZONE_GANG_STRENGTH GLN2a GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH GLN2b GANG_FLAT sw4_gang_strength[19] //SET_ZONE_GANG_STRENGTH GLN2b GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH LIND1a GANG_FLAT sw4_gang_strength[20] //SET_ZONE_GANG_STRENGTH LIND1a GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH LIND1b GANG_FLAT sw4_gang_strength[21] //SET_ZONE_GANG_STRENGTH LIND1b GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH LIND2a GANG_FLAT sw4_gang_strength[22] //SET_ZONE_GANG_STRENGTH LIND2a GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH LIND2b GANG_FLAT sw4_gang_strength[23] //SET_ZONE_GANG_STRENGTH LIND2b GANG_FLAT 0 // //GET_ZONE_GANG_STRENGTH LIND3 GANG_FLAT sw4_gang_strength[24] //SET_ZONE_GANG_STRENGTH LIND3 GANG_FLAT 0 GOSUB sw4_load_all GOSUB sw4_smoke_create GOSUB sw4_ryder_create GOSUB sw4_sweet_create GOSUB sw4_player_car_create // ---- Set Groups IF NOT IS_CHAR_DEAD sw4_smoke AND NOT IS_CHAR_DEAD sw4_ryder AND NOT IS_CHAR_DEAD sw4_sweet AND NOT IS_CAR_DEAD sw4_player_car SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK OPEN_SEQUENCE_TASK sw4_smoke_enters_car TASK_STAND_STILL -1 1000 TASK_ENTER_CAR_AS_PASSENGER -1 sw4_player_car -1 0 CLOSE_SEQUENCE_TASK sw4_smoke_enters_car PERFORM_SEQUENCE_TASK sw4_smoke sw4_smoke_enters_car SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER sw4_ryder sw4_player_car -1 1 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER sw4_sweet sw4_player_car -1 2 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY sw4_decision SET_CHAR_DECISION_MAKER sw4_smoke sw4_decision SET_CHAR_DECISION_MAKER sw4_ryder sw4_decision SET_CHAR_DECISION_MAKER sw4_sweet sw4_decision SET_CHAR_CANT_BE_DRAGGED_OUT scplayer TRUE SET_CHAR_CANT_BE_DRAGGED_OUT sw4_smoke TRUE SET_CHAR_CANT_BE_DRAGGED_OUT sw4_ryder TRUE SET_CHAR_CANT_BE_DRAGGED_OUT sw4_sweet TRUE GET_GAME_TIMER sw4_text_timer_start sw4_text_timer_flag = -1 ENDIF GET_MAX_WANTED_LEVEL sw4_max_wanted SET_MAX_WANTED_LEVEL 0 SET_CREATE_RANDOM_COPS FALSE SWITCH_COPS_ON_BIKES OFF //VIEW_INTEGER_VARIABLE sw4_stage sw4_stage //VIEW_INTEGER_VARIABLE sw4_text_timer_flag sw4_text_timer_flag //VIEW_INTEGER_VARIABLE sw4_blipped sw4_blipped // ------------------------------------------------------------------------------------------------ // Task Sequences // ------------------------------------------------------------------------------------------------ // Start Blip SET_CAMERA_BEHIND_PLAYER SET_WANTED_MULTIPLIER 0.7 SET_PLAYER_GROUP_RECRUITMENT player1 FALSE IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer 2516.92 -1679.45 13.42 SET_CHAR_HEADING scplayer 27.25 ENDIF GOSUB sw4_flat_hood_create PRINT_NOW ( SWE4_00 ) 5000 1 // Get in the car IF IS_CHECKPOINT_RESUMING TRUE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY sw4_decision SET_CHAR_DECISION_MAKER sw4_smoke sw4_decision SET_CHAR_DECISION_MAKER sw4_ryder sw4_decision SET_CHAR_DECISION_MAKER sw4_sweet sw4_decision ENDIF GET_GAME_TIMER sw4_timer_start[2] sw4_timer_diff[2] = sw4_timer_end[2] - sw4_timer_start[2] // ------------------------------------------------------------------------------------------------ SET_FADING_COLOUR 0 0 0 DO_FADE 500 FADE_IN // Main Loop sw4_main_loop: WAIT 0 // ---- Load & Play Dialogue... IF NOT sw4_counter = 0 IF sw4_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED sw4_alt_slot CLEAR_MISSION_AUDIO sw4_alt_slot ENDIF sw4_audio_playing = 1 ENDIF IF sw4_audio_playing = 1 LOAD_MISSION_AUDIO sw4_audio_slot sw4_audio[sw4_counter] GOSUB sw4_dialogue_pos // ATTACH_MISSION_AUDIO_TO_PED sw4_audio_slot sw4_audio_char sw4_audio_playing = 2 ENDIF IF sw4_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED sw4_audio_slot IF NOT sw4_audio_char = 0 IF NOT IS_CHAR_DEAD sw4_audio_char START_CHAR_FACIAL_TALK sw4_audio_char 10000 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sw4_audio_char TRUE //ATTACH_MISSION_AUDIO_TO_CHAR c3_audio_slot c3_audio_char ENDIF ENDIF PLAY_MISSION_AUDIO sw4_audio_slot PRINT_NOW $sw4_text[sw4_counter] 10000 1 sw4_audio_playing = 3 ENDIF ENDIF IF sw4_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED sw4_audio_slot CLEAR_THIS_PRINT $sw4_text[sw4_counter] IF NOT sw4_audio_char = 0 IF NOT IS_CHAR_DEAD sw4_audio_char STOP_CHAR_FACIAL_TALK sw4_audio_char SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sw4_audio_char FALSE ENDIF ENDIF IF sw4_audio_slot = 1 sw4_audio_slot = 2 sw4_alt_slot = 1 ELSE sw4_audio_slot = 1 sw4_alt_slot = 2 ENDIF sw4_counter = 0 sw4_audio_playing = 0 IF sw4_text_timer_flag = 2 sw4_text_timer_flag = 6 ELSE sw4_text_timer_flag++ ENDIF ELSE IF NOT HAS_MISSION_AUDIO_LOADED sw4_alt_slot IF sw4_counter < 60 sw4_ahead_counter = sw4_counter + 1 LOAD_MISSION_AUDIO sw4_alt_slot sw4_audio[sw4_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_passed_sweet4 ENDIF // If anyone dies... IF sw4_stage < 8 OR sw4_stage = 666 IF IS_CHAR_DEAD sw4_smoke OR IS_CHAR_DEAD sw4_ryder OR IS_CHAR_DEAD sw4_sweet PRINT_NOW ( SWE4_04 ) 5000 1 // Your homies didn't make it. GOTO mission_failed_sweet4 ENDIF ENDIF IF IS_CAR_DEAD sw4_player_car PRINT_NOW ( SWE4_04 ) 5000 1 // Your homies didn't make it. GOTO mission_failed_sweet4 ENDIF //IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_SPACE // GOSUB sw4_flat_hood_create // //sw4_text_timer_flag = 18 // sw4_stage = 7 // sw4_help = 4 //ENDIF //IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_SPACE // IF NOT IS_CHAR_DEAD scplayer // AND NOT IS_CHAR_DEAD sw4_smoke // AND NOT IS_CHAR_DEAD sw4_ryder // AND NOT IS_CHAR_DEAD sw4_sweet // IF NOT IS_CAR_DEAD sw4_player_car // IF IS_CHAR_IN_CAR scplayer sw4_player_car // AND IS_CHAR_IN_CAR sw4_smoke sw4_player_car // AND IS_CHAR_IN_CAR sw4_ryder sw4_player_car // AND IS_CHAR_IN_CAR sw4_sweet sw4_player_car // SET_CAR_COORDINATES sw4_player_car sw4_hood_x sw4_hood_y sw4_hood_z // sw4_stage = 3 // sw4_text_timer_flag = 14 // ENDIF // ENDIF // ENDIF //ENDIF // Get in the car... IF sw4_stage = 0 IF NOT IS_CAR_DEAD sw4_player_car IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD sw4_smoke AND NOT IS_CHAR_DEAD sw4_ryder AND NOT IS_CHAR_DEAD sw4_sweet IF IS_CHAR_IN_CAR scplayer sw4_player_car AND IS_CHAR_IN_CAR sw4_smoke sw4_player_car AND IS_CHAR_IN_CAR sw4_ryder sw4_player_car AND IS_CHAR_IN_CAR sw4_sweet sw4_player_car CLEAR_PRINTS CLEAR_LOOK_AT sw4_smoke REMOVE_BLIP sw4_player_car_blip REMOVE_BLIP sw4_smoke_blip REMOVE_BLIP sw4_ryder_blip REMOVE_BLIP sw4_sweet_blip GET_GAME_TIMER sw4_text_timer_start sw4_blipped = 0 sw4_stage = 1 ENDIF IF IS_CHAR_IN_CAR scplayer sw4_player_car IF sw4_smoke_status = 0 IF NOT IS_CHAR_IN_CAR sw4_smoke sw4_player_car REMOVE_BLIP sw4_player_car_blip ADD_BLIP_FOR_CHAR sw4_smoke sw4_smoke_blip SET_BLIP_AS_FRIENDLY sw4_smoke_blip TRUE sw4_smoke_status = 1 ENDIF ENDIF IF sw4_smoke_status = 1 IF NOT IS_CHAR_IN_CAR sw4_smoke sw4_player_car IF NOT LOCATE_CHAR_ON_FOOT_CAR_2D sw4_smoke sw4_player_car 8.0 8.0 FALSE PRINT_NOW ( SWE4_09 ) 100 1 // Pick up Smoke. ELSE TASK_ENTER_CAR_AS_PASSENGER sw4_smoke sw4_player_car -1 0 GET_GAME_TIMER sw4_timer_start[2] sw4_smoke_status = 2 ENDIF ENDIF ENDIF IF sw4_smoke_status = 2 GET_GAME_TIMER sw4_timer_end[2] sw4_timer_diff[2] = sw4_timer_end[2] - sw4_timer_start[2] IF sw4_timer_diff[2] > 1000 //PRINT_NOW ( SWE4_09 ) 1000 1 // Pick up Smoke. IF sw4_timer_diff[2] > 3000 sw4_smoke_status = 1 ENDIF ENDIF ENDIF IF sw4_ryder_status = 0 IF NOT IS_CHAR_IN_CAR sw4_ryder sw4_player_car REMOVE_BLIP sw4_player_car_blip ADD_BLIP_FOR_CHAR sw4_ryder sw4_ryder_blip SET_BLIP_AS_FRIENDLY sw4_ryder_blip TRUE sw4_ryder_status = 1 ENDIF ENDIF IF sw4_ryder_status = 1 IF NOT IS_CHAR_IN_CAR sw4_ryder sw4_player_car IF NOT LOCATE_CHAR_ON_FOOT_CAR_2D sw4_ryder sw4_player_car 8.0 8.0 FALSE PRINT_NOW ( SWE4_10 ) 100 1 // Pick up ryder. ELSE TASK_ENTER_CAR_AS_PASSENGER sw4_ryder sw4_player_car -1 1 GET_GAME_TIMER sw4_timer_start[2] sw4_ryder_status = 2 ENDIF ENDIF ENDIF IF sw4_ryder_status = 2 GET_GAME_TIMER sw4_timer_end[2] sw4_timer_diff[2] = sw4_timer_end[2] - sw4_timer_start[2] IF sw4_timer_diff[2] > 1000 //PRINT_NOW ( SWE4_10 ) 1000 1 // Pick up ryder. IF sw4_timer_diff[2] > 3000 sw4_ryder_status = 1 ENDIF ENDIF ENDIF IF sw4_sweet_status = 0 IF NOT IS_CHAR_IN_CAR sw4_sweet sw4_player_car REMOVE_BLIP sw4_player_car_blip ADD_BLIP_FOR_CHAR sw4_sweet sw4_sweet_blip SET_BLIP_AS_FRIENDLY sw4_sweet_blip TRUE sw4_sweet_status = 1 ENDIF ENDIF IF sw4_sweet_status = 1 IF NOT IS_CHAR_IN_CAR sw4_sweet sw4_player_car IF NOT LOCATE_CHAR_ON_FOOT_CAR_2D sw4_sweet sw4_player_car 8.0 8.0 FALSE PRINT_NOW ( SWE4_11 ) 100 1 // Pick up sweet. ELSE TASK_ENTER_CAR_AS_PASSENGER sw4_sweet sw4_player_car -1 2 GET_GAME_TIMER sw4_timer_start[2] sw4_sweet_status = 2 ENDIF ENDIF ENDIF IF sw4_sweet_status = 2 GET_GAME_TIMER sw4_timer_end[2] sw4_timer_diff[2] = sw4_timer_end[2] - sw4_timer_start[2] IF sw4_timer_diff[2] > 1000 //PRINT_NOW ( SWE4_11 ) 1000 1 // Pick up sweet IF sw4_timer_diff[2] > 3000 sw4_sweet_status = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // If you're ready we can begin... IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD sw4_smoke AND NOT IS_CHAR_DEAD sw4_ryder AND NOT IS_CHAR_DEAD sw4_sweet IF NOT IS_CAR_DEAD sw4_player_car IF IS_CHAR_IN_CAR scplayer sw4_player_car AND IS_CHAR_IN_CAR sw4_smoke sw4_player_car AND IS_CHAR_IN_CAR sw4_ryder sw4_player_car AND IS_CHAR_IN_CAR sw4_sweet sw4_player_car IF sw4_stage = 1 sw4_stage = 2 ENDIF IF sw4_stage = 2 sw4_cut = 0 SET_PED_DENSITY_MULTIPLIER 0.0 ADD_BLIP_FOR_COORD sw4_hood_x sw4_hood_y sw4_hood_z sw4_hood_blip GET_GAME_TIMER sw4_timer_start[2] sw4_stage = 3 ENDIF IF sw4_stage = 3 IF sw4_help = 0 GET_GAME_TIMER sw4_timer_end[2] sw4_timer_diff[2] = sw4_timer_end[2] - sw4_timer_start[2] IF sw4_timer_diff[2] > 6000 GET_GAME_TIMER sw4_timer_start[2] sw4_help = 1 ENDIF ENDIF IF sw4_help = 1 GET_GAME_TIMER sw4_timer_end[2] sw4_timer_diff[2] = sw4_timer_end[2] - sw4_timer_start[2] IF sw4_timer_diff[2] > 5000 GET_GAME_TIMER sw4_timer_start[2] sw4_help = 2 ENDIF ENDIF ENDIF IF sw4_stage = 3 IF sw4_hood_create[1] = 0 AND sw4_group_active = 0 IF NOT IS_CAR_DEAD sw4_player_car IF LOCATE_CHAR_IN_CAR_3D scplayer sw4_hood_x sw4_hood_y sw4_hood_z 150.0 150.0 150.0 FALSE IF sw4_create = 0 SET_PED_DENSITY_MULTIPLIER 0.0 //sw4_create = 1 ENDIF ENDIF IF LOCATE_CHAR_IN_CAR_3D scplayer sw4_hood_x sw4_hood_y sw4_hood_z 4.0 4.0 4.0 TRUE IF IS_CHAR_SITTING_IN_CAR scplayer sw4_player_car SET_PLAYER_CONTROL player1 OFF sw4_text_timer_flag = 9 REMOVE_BLIP sw4_hood_blip SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON DO_FADE 300 FADE_OUT GET_GAME_TIMER sw4_text_timer_start TASK_PLAY_ANIM scplayer GDB_Car_PLY GHETTO_DB 4.0 FALSE FALSE FALSE FALSE 0 SET_CURRENT_CHAR_WEAPON sw4_smoke WEAPONTYPE_TEC9 TASK_PLAY_ANIM sw4_smoke GDB_Car_SMO GHETTO_DB 4.0 FALSE FALSE FALSE FALSE 0 SET_CURRENT_CHAR_WEAPON sw4_sweet WEAPONTYPE_TEC9 TASK_PLAY_ANIM sw4_sweet GDB_Car_SWE GHETTO_DB 4.0 FALSE FALSE FALSE FALSE 0 SET_CURRENT_CHAR_WEAPON sw4_ryder WEAPONTYPE_TEC9 TASK_PLAY_ANIM sw4_ryder GDB_Car_RYD GHETTO_DB 4.0 FALSE FALSE FALSE FALSE 0 SET_CAR_CAN_BE_VISIBLY_DAMAGED sw4_player_car FALSE CREATE_OBJECT kb_beer 2440.58 -1979.89 14.2 sw4_forty GOSUB sw4_flat_hood_create1 GOSUB sw4_flat_hood_create2 // create these guys, but dont blip to them.. hopefully they wont mind GOSUB sw4_hood_group1 GOSUB sw4_hood_react_group1 IF NOT IS_CHAR_DEAD sw4_flat_hood[3] HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE sw4_flat_hood[3] TRUE TASK_PICK_UP_OBJECT sw4_flat_hood[3] sw4_forty 0.1 0.1 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL -1 ENDIF REQUEST_MODEL laeroad30 WHILE GET_FADING_STATUS WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED laeroad30 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD sw4_player_car POP_CAR_PANEL sw4_player_car WINDSCREEN_PANEL TRUE ENDIF sw4_stage = 4 sw4_group_active = 1 sw4_hood_create[0] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // Fit a cutscene in here... IF sw4_stage = 4 AND sw4_cut = 0 IF NOT IS_CHAR_DEAD sw4_ryder AND NOT IS_CHAR_DEAD sw4_smoke IF NOT IS_CAR_DEAD sw4_player_car AND NOT IS_CHAR_DEAD sw4_sweet GET_GAME_TIMER sw4_timer_start[0] GET_GAME_TIMER sw4_text_timer_start sw4_cut = 1 ENDIF ENDIF ENDIF IF sw4_stage = 4 IF sw4_cut > 0 GET_GAME_TIMER sw4_timer_end[0] sw4_timer_diff[0] = sw4_timer_end[0] - sw4_timer_start[0] IF sw4_timer_diff[0] > 2000 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED //Replaced IS_BUTTON_PRESSED PAD1 CROSS CLEAR_PRINTS sw4_text_timer_flag = 14 sw4_skip_flag = 1 sw4_cut = 4 ENDIF ENDIF ENDIF IF sw4_cut = 1 GET_GAME_TIMER sw4_timer_end[0] sw4_timer_diff[0] = sw4_timer_end[0] - sw4_timer_start[0] IF sw4_timer_diff[0] > 300 IF sw4_hood_create[0] = 1 IF NOT IS_CHAR_DEAD sw4_ryder SET_NEAR_CLIP 0.1 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS sw4_player_car -0.337 1.566 0.657 sw4_cam_x[1] sw4_cam_y[1] sw4_cam_z[1] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS sw4_player_car 0.038 -1.033 0.088 sw4_cam_x[3] sw4_cam_y[3] sw4_cam_z[3] SET_FIXED_CAMERA_POSITION sw4_cam_x[1] sw4_cam_y[1] sw4_cam_z[1] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT sw4_cam_x[3] sw4_cam_y[3] sw4_cam_z[3] JUMP_CUT //POINT_CAMERA_AT_CHAR sw4_ryder FIXED JUMP_CUT GET_GAME_TIMER sw4_timer_start[0] SET_FADING_COLOUR 0 0 0 DO_FADE 300 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE sw4_text_timer_flag = 9 sw4_cut = 2 ENDIF ENDIF ENDIF ENDIF IF sw4_cut = 2 GET_GAME_TIMER sw4_timer_end[0] sw4_timer_diff[0] = sw4_timer_end[0] - sw4_timer_start[0] IF sw4_timer_diff[0] > 10700 IF sw4_hood_create[0] = 1 SET_FADING_COLOUR 0 0 0 DO_FADE 300 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //LOAD_SCENE sw4_cam_x[2] sw4_cam_y[2] sw4_cam_z[2] //GET_GAME_TIMER sw4_timer_start[0] sw4_cut = 31 ENDIF ENDIF ENDIF IF sw4_cut = 31 GET_GAME_TIMER sw4_timer_end[0] sw4_timer_diff[0] = sw4_timer_end[0] - sw4_timer_start[0] IF sw4_timer_diff[0] > 11000 SET_NEAR_CLIP 0.1 SET_FADING_COLOUR 0 0 0 SET_FIXED_CAMERA_POSITION 2098.1392 -1385.8824 30.5735 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2098.9521 -1385.3640 30.3086 JUMP_CUT DO_FADE 300 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE sw4_cut = 3 ENDIF ENDIF IF sw4_cut = 3 GET_GAME_TIMER sw4_timer_end[0] sw4_timer_diff[0] = sw4_timer_end[0] - sw4_timer_start[0] IF sw4_timer_diff[0] > 13000 IF sw4_hood_create[0] = 1 IF NOT IS_CAR_DEAD sw4_hood_car[0] //LOAD_SCENE sw4_cam_x[2] sw4_cam_y[2] sw4_cam_z[2] CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2098.1392 -1385.8824 30.5735 2075.7866 -1369.6572 23.6289 3500 TRUE CAMERA_SET_VECTOR_TRACK 2098.9521 -1385.3640 30.3086 2076.3159 -1368.8141 23.7227 3500 TRUE IF NOT IS_CHAR_DEAD sw4_flat_hood[2] TASK_PLAY_ANIM sw4_flat_hood[2] gsign1 GHANDS 4.0 FALSE FALSE FALSE FALSE 0 ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[1] PERFORM_SEQUENCE_TASK sw4_flat_hood[1] sw4_hood_anim ENDIF sw4_cut = 4 ENDIF ENDIF ENDIF ENDIF IF sw4_cut = 4 GET_GAME_TIMER sw4_timer_end[0] sw4_timer_diff[0] = sw4_timer_end[0] - sw4_timer_start[0] IF sw4_timer_diff[0] > 20000 OR sw4_skip_flag = 1 SET_FADING_COLOUR 0 0 0 DO_FADE 300 FADE_OUT sw4_cut = 6 ENDIF ENDIF IF sw4_cut = 6 GET_GAME_TIMER sw4_timer_end[0] sw4_timer_diff[0] = sw4_timer_end[0] - sw4_timer_start[0] IF sw4_timer_diff[0] > 21000 OR sw4_skip_flag = 1 CLEAR_PRINTS sw4_text_timer_flag = 14 //DELETE_OBJECT sw4_forty MARK_MODEL_AS_NO_LONGER_NEEDED laeroad30 CAMERA_RESET_NEW_SCRIPTABLES RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF SET_FADING_COLOUR 0 0 0 DO_FADE 300 FADE_IN REMOVE_ANIMATION GANGS REMOVE_ANIMATION GHANDS //PRINT_NOW ( SWE4_02 ) 5000 1 // Shoot up the neighborhood. GET_GAME_TIMER sw4_timer_start[3] GET_GAME_TIMER sw4_timer_start[4] GET_GAME_TIMER sw4_timer_start[5] PRINT_HELP_FOREVER SWE4_13 // Press ~m~~widget_look_left~ or ~m~~widget_look_right~ to look left or right when in a car. FIX_CAR_PANEL sw4_player_car WINDSCREEN_PANEL CLEAR_AREA sw4_hood_x sw4_hood_y sw4_hood_z 4.0 TRUE SET_CAR_CAN_BE_VISIBLY_DAMAGED sw4_player_car TRUE IF NOT IS_CAR_DEAD sw4_player_car GET_CAR_HEALTH sw4_player_car sw4_health IF sw4_health > 250 sw4_health -= 250 ENDIF sw4_health_display = sw4_health / 10 ENDIF sw4_blipped = 1 sw4_skip_flag = 0 sw4_stage = 5 ENDIF ENDIF ENDIF // Continue after cutscene... IF sw4_stage = 5 AND sw4_cut >= 6 // or up GET_GAME_TIMER sw4_timer_end[5] sw4_timer_diff[5] = sw4_timer_end[5] - sw4_timer_start[5] IF sw4_timer_diff[5] > 5000 IF sw4_count = 0 CLEAR_ONSCREEN_COUNTER sw4_health_display DISPLAY_ONSCREEN_COUNTER_WITH_STRING sw4_health_display COUNTER_DISPLAY_BAR SWE4_08 //SET_ONSCREEN_COUNTER_COLOUR sw4_health_display HUD_COLOUR_RED PRINT_HELP_FOREVER SWE4_15 // This will allow you to see where your enemies are located. // Add counter and second help box. GET_GAME_TIMER sw4_timer_start[3] sw4_count = 1 ENDIF ENDIF IF sw4_attack[0] = 0 AND sw4_hood_create[0] = 1 IF NOT IS_CAR_DEAD sw4_player_car IF NOT IS_CHAR_DEAD sw4_flat_hood[0] AND NOT IS_CHAR_DEAD sw4_smoke IF LOCATE_CAR_3D sw4_player_car sw4_flat_hood_x[0] sw4_flat_hood_y[0] sw4_flat_hood_z[0] sw4_group_loc sw4_group_loc sw4_group_loc FALSE OR IS_CHAR_SHOOTING sw4_smoke IF NOT IS_CHAR_DEAD sw4_flat_hood[1] AND NOT IS_CHAR_DEAD sw4_flat_hood[2] AND NOT IS_CHAR_DEAD sw4_flat_hood[3] AND NOT IS_CAR_DEAD sw4_hood_car[0] DELETE_OBJECT sw4_forty //DROP_OBJECT sw4_flat_hood[3] TRUE SET_CURRENT_CHAR_WEAPON sw4_flat_hood[3] WEAPONTYPE_PISTOL PERFORM_SEQUENCE_TASK sw4_flat_hood[0] sw4_hood_react[0] CLEAR_SEQUENCE_TASK sw4_hood_react[0] PERFORM_SEQUENCE_TASK sw4_flat_hood[1] sw4_hood_react[1] CLEAR_SEQUENCE_TASK sw4_hood_react[1] PERFORM_SEQUENCE_TASK sw4_flat_hood[2] sw4_hood_react[2] CLEAR_SEQUENCE_TASK sw4_hood_react[2] PERFORM_SEQUENCE_TASK sw4_flat_hood[3] sw4_hood_react[3] CLEAR_SEQUENCE_TASK sw4_hood_react[3] sw4_attack[0] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF sw4_attack[1] = 0 AND sw4_hood_create[1] = 1 IF NOT IS_CAR_DEAD sw4_player_car IF NOT IS_CHAR_DEAD sw4_flat_hood[4] AND NOT IS_CHAR_DEAD sw4_smoke IF LOCATE_CAR_3D sw4_player_car sw4_flat_hood_x[4] sw4_flat_hood_y[4] sw4_flat_hood_z[4] sw4_group_loc sw4_group_loc sw4_group_loc FALSE OR IS_CHAR_SHOOTING sw4_smoke IF NOT IS_CHAR_DEAD sw4_flat_hood[5] AND NOT IS_CHAR_DEAD sw4_flat_hood[6] AND NOT IS_CHAR_DEAD sw4_flat_hood[7] AND NOT IS_CAR_DEAD sw4_hood_car[1] PERFORM_SEQUENCE_TASK sw4_flat_hood[4] sw4_hood_react[4] CLEAR_SEQUENCE_TASK sw4_hood_react[4] PERFORM_SEQUENCE_TASK sw4_flat_hood[5] sw4_hood_react[5] CLEAR_SEQUENCE_TASK sw4_hood_react[5] PERFORM_SEQUENCE_TASK sw4_flat_hood[6] sw4_hood_react[6] CLEAR_SEQUENCE_TASK sw4_hood_react[6] PERFORM_SEQUENCE_TASK sw4_flat_hood[7] sw4_hood_react[7] CLEAR_SEQUENCE_TASK sw4_hood_react[7] sw4_attack[1] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF sw4_attack[2] = 0 AND sw4_hood_create[2] = 1 IF NOT IS_CAR_DEAD sw4_player_car IF NOT IS_CHAR_DEAD sw4_flat_hood[8] AND NOT IS_CHAR_DEAD sw4_smoke IF LOCATE_CAR_3D sw4_player_car sw4_flat_hood_x[8] sw4_flat_hood_y[8] sw4_flat_hood_z[8] sw4_group_loc sw4_group_loc sw4_group_loc FALSE OR IS_CHAR_SHOOTING sw4_smoke IF NOT IS_CHAR_DEAD sw4_flat_hood[9] AND NOT IS_CHAR_DEAD sw4_flat_hood[10] AND NOT IS_CHAR_DEAD sw4_flat_hood[11] PERFORM_SEQUENCE_TASK sw4_flat_hood[8] sw4_hood_react[8] CLEAR_SEQUENCE_TASK sw4_hood_react[8] PERFORM_SEQUENCE_TASK sw4_flat_hood[9] sw4_hood_react[9] CLEAR_SEQUENCE_TASK sw4_hood_react[9] PERFORM_SEQUENCE_TASK sw4_flat_hood[10] sw4_hood_react[10] CLEAR_SEQUENCE_TASK sw4_hood_react[10] PERFORM_SEQUENCE_TASK sw4_flat_hood[11] sw4_hood_react[11] CLEAR_SEQUENCE_TASK sw4_hood_react[11] sw4_attack[2] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF sw4_attack[3] = 0 AND sw4_hood_create[3] = 1 IF NOT IS_CAR_DEAD sw4_player_car IF NOT IS_CHAR_DEAD sw4_flat_hood[12] AND NOT IS_CHAR_DEAD sw4_smoke IF LOCATE_CAR_3D sw4_player_car sw4_flat_hood_x[12] sw4_flat_hood_y[12] sw4_flat_hood_z[12] sw4_group_loc sw4_group_loc sw4_group_loc FALSE OR IS_CHAR_SHOOTING sw4_smoke IF NOT IS_CHAR_DEAD sw4_flat_hood[13] AND NOT IS_CHAR_DEAD sw4_flat_hood[14] AND NOT IS_CHAR_DEAD sw4_flat_hood[15] PERFORM_SEQUENCE_TASK sw4_flat_hood[12] sw4_hood_react[12] CLEAR_SEQUENCE_TASK sw4_hood_react[12] PERFORM_SEQUENCE_TASK sw4_flat_hood[13] sw4_hood_react[13] CLEAR_SEQUENCE_TASK sw4_hood_react[13] PERFORM_SEQUENCE_TASK sw4_flat_hood[14] sw4_hood_react[14] CLEAR_SEQUENCE_TASK sw4_hood_react[14] PERFORM_SEQUENCE_TASK sw4_flat_hood[15] sw4_hood_react[15] CLEAR_SEQUENCE_TASK sw4_hood_react[15] sw4_attack[3] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF sw4_hood_create[1] = 0 AND sw4_group_active = 2 AND sw4_blipped = 0 IF NOT IS_CAR_DEAD sw4_player_car IF NOT IS_POINT_ON_SCREEN sw4_flat_hood_x[4] sw4_flat_hood_y[4] sw4_flat_hood_z[4] 4.0 IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer sw4_flat_hood_x[4] sw4_flat_hood_y[4] sw4_flat_hood_z[4] sw4_group_loc sw4_group_loc sw4_group_loc FALSE GOSUB sw4_flat_hood_create2_active GOSUB sw4_hood_group2 GOSUB sw4_hood_react_group2 MARK_MODEL_AS_NO_LONGER_NEEDED VOODOO sw4_hood_create[1] = 1 ENDIF ENDIF ENDIF ENDIF IF sw4_hood_create[2] = 0 AND sw4_group_active = 3 AND sw4_blipped = 0 IF NOT IS_CAR_DEAD sw4_player_car // IF NOT IS_POINT_ON_SCREEN sw4_flat_hood_x[8] sw4_flat_hood_y[8] sw4_flat_hood_z[8] 4.0 IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer sw4_flat_hood_x[8] sw4_flat_hood_y[8] sw4_flat_hood_z[8] sw4_group_loc sw4_group_loc sw4_group_loc FALSE GOSUB sw4_flat_hood_create3 GOSUB sw4_hood_group3 GOSUB sw4_hood_react_group3 sw4_hood_create[2] = 1 ENDIF ENDIF ENDIF IF sw4_hood_create[3] = 0 AND sw4_group_active = 4 AND sw4_blipped = 0 IF NOT IS_CAR_DEAD sw4_player_car // IF NOT IS_POINT_ON_SCREEN sw4_flat_hood_x[12] sw4_flat_hood_y[12] sw4_flat_hood_z[12] 4.0 IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer sw4_flat_hood_x[12] sw4_flat_hood_y[12] sw4_flat_hood_z[12] sw4_group_loc sw4_group_loc sw4_group_loc FALSE GOSUB sw4_flat_hood_create4 GOSUB sw4_hood_group4 GOSUB sw4_hood_react_group4 sw4_hood_create[3] = 1 ENDIF ENDIF ENDIF ENDIF // Count the dead... IF sw4_stage > 4 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD sw4_smoke AND NOT IS_CHAR_DEAD sw4_ryder AND NOT IS_CHAR_DEAD sw4_sweet IF NOT IS_CAR_DEAD sw4_player_car IF IS_CHAR_IN_CAR scplayer sw4_player_car AND IS_CHAR_IN_CAR sw4_smoke sw4_player_car AND IS_CHAR_IN_CAR sw4_ryder sw4_player_car AND IS_CHAR_IN_CAR sw4_sweet sw4_player_car IF NOT IS_CAR_ON_FIRE sw4_player_car IF sw4_on_fire = 1 CLEAR_ONSCREEN_COUNTER sw4_health_display DISPLAY_ONSCREEN_COUNTER_WITH_STRING sw4_health_display COUNTER_DISPLAY_BAR SWE4_08 sw4_on_fire = 0 ENDIF GET_CAR_HEALTH sw4_player_car sw4_health sw4_health -= 250 sw4_health_display = sw4_health / 12 IF LOCATE_STOPPED_CHAR_IN_CAR_3D scplayer 2067.0 -1831.0 13.0 5.0 5.0 5.0 FALSE IF sw4_health = 750 SET_CAR_HEALTH sw4_player_car 1800 ENDIF ENDIF ELSE IF sw4_on_fire = 0 CLEAR_ONSCREEN_COUNTER sw4_health_display sw4_on_fire = 1 ENDIF ENDIF ENDIF ENDIF ENDIF GET_GAME_TIMER sw4_timer_end[3] sw4_timer_diff[3] = sw4_timer_end[3] - sw4_timer_start[3] IF sw4_timer_diff[3] > 2000 OR IS_CHAR_DEAD sw4_closest_ped sw4_anim = DRIVEBY_AI_ALL_DIRN //DRIVEBY_START_FROM_RHS sw4_gosub_char = sw4_sweet GOSUB sw4_shoot_at_closest sw4_anim = DRIVEBY_AI_ALL_DIRN //DRIVEBY_START_FROM_LHS sw4_gosub_char = sw4_ryder GOSUB sw4_shoot_at_closest sw4_anim = DRIVEBY_AI_ALL_DIRN //DRIVEBY_START_FROM_RHS sw4_gosub_char = sw4_smoke GOSUB sw4_shoot_at_closest ENDIF IF sw4_hood_create[0] = 1 IF sw4_group_active = 1 IF sw4_hood_dead[0] = 0 IF IS_CHAR_DEAD sw4_flat_hood[0] REMOVE_BLIP sw4_flat_hood_blip[0] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[0] sw4_dead_count++ sw4_hood_dead[0] = 1 ENDIF ENDIF IF sw4_hood_dead[1] = 0 IF IS_CHAR_DEAD sw4_flat_hood[1] REMOVE_BLIP sw4_flat_hood_blip[1] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[1] sw4_dead_count++ sw4_hood_dead[1] = 1 ENDIF ENDIF IF sw4_hood_dead[2] = 0 IF IS_CHAR_DEAD sw4_flat_hood[2] REMOVE_BLIP sw4_flat_hood_blip[2] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[2] sw4_dead_count++ sw4_hood_dead[2] = 1 ENDIF ENDIF IF sw4_hood_dead[3] = 0 IF IS_CHAR_DEAD sw4_flat_hood[3] REMOVE_BLIP sw4_flat_hood_blip[3] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[3] sw4_dead_count++ sw4_hood_dead[3] = 1 ENDIF ENDIF IF sw4_group_dead[0] = 0 IF sw4_hood_dead[0] = 1 AND sw4_hood_dead[1] = 1 AND sw4_hood_dead[2] = 1 AND sw4_hood_dead[3] = 1 IF sw4_blipped = 0 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 46 // SMOKE: We iced them! CJ, let’s hunt us down some more! //PRINT_NOW ( SWE4_LA ) 5000 1 // SMOKE: We iced them! CJ, let’s hunt us down some more! ENDIF ENDIF sw4_group_active = 2 sw4_group_dead[0] = 1 ENDIF ENDIF ENDIF ENDIF IF sw4_hood_create[1] = 1 IF sw4_group_active = 2 IF sw4_hood_dead[4] = 0 IF IS_CHAR_DEAD sw4_flat_hood[4] REMOVE_BLIP sw4_flat_hood_blip[4] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[4] sw4_dead_count++ sw4_hood_dead[4] = 1 ENDIF ENDIF IF sw4_hood_dead[5] = 0 IF IS_CHAR_DEAD sw4_flat_hood[5] REMOVE_BLIP sw4_flat_hood_blip[5] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[5] sw4_dead_count++ sw4_hood_dead[5] = 1 ENDIF ENDIF IF sw4_hood_dead[6] = 0 IF IS_CHAR_DEAD sw4_flat_hood[6] REMOVE_BLIP sw4_flat_hood_blip[6] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[6] sw4_dead_count++ sw4_hood_dead[6] = 1 ENDIF ENDIF IF sw4_hood_dead[7] = 0 IF IS_CHAR_DEAD sw4_flat_hood[7] REMOVE_BLIP sw4_flat_hood_blip[7] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[7] sw4_dead_count++ sw4_hood_dead[7] = 1 ENDIF ENDIF IF sw4_group_dead[1] = 0 IF sw4_hood_dead[4] = 1 AND sw4_hood_dead[5] = 1 AND sw4_hood_dead[6] = 1 AND sw4_hood_dead[7] = 1 IF sw4_blipped = 0 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 47 // SWEET: They was too easy, let’s find us some more Ballas fools! //PRINT_NOW ( SWE4_LB ) 5000 1 // SWEET: They was too easy, let’s find us some more Ballas fools! ENDIF ENDIF sw4_group_active = 3 sw4_group_dead[1] = 1 ENDIF ENDIF ENDIF ENDIF IF sw4_hood_create[2] = 1 IF sw4_group_active = 3 IF sw4_hood_dead[8] = 0 IF IS_CHAR_DEAD sw4_flat_hood[8] REMOVE_BLIP sw4_flat_hood_blip[8] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[8] sw4_dead_count++ sw4_hood_dead[8] = 1 ENDIF ENDIF IF sw4_hood_dead[9] = 0 IF IS_CHAR_DEAD sw4_flat_hood[9] REMOVE_BLIP sw4_flat_hood_blip[9] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[9] sw4_dead_count++ sw4_hood_dead[9] = 1 ENDIF ENDIF IF sw4_hood_dead[10] = 0 IF IS_CHAR_DEAD sw4_flat_hood[10] REMOVE_BLIP sw4_flat_hood_blip[10] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[10] sw4_dead_count++ sw4_hood_dead[10] = 1 ENDIF ENDIF IF sw4_hood_dead[11] = 0 IF IS_CHAR_DEAD sw4_flat_hood[11] REMOVE_BLIP sw4_flat_hood_blip[11] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[11] sw4_dead_count++ sw4_hood_dead[11] = 1 ENDIF ENDIF IF sw4_group_dead[2] = 0 IF sw4_hood_dead[8] = 1 AND sw4_hood_dead[9] = 1 AND sw4_hood_dead[10] = 1 AND sw4_hood_dead[11] = 1 IF sw4_blipped = 0 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 48 // RYDER: What you waiting for, CJ? Find us some more Ballas fools to cap! //PRINT_NOW ( SWE4_LC ) 6000 1 // RYDER: What you waiting for, CJ? Find us some more Ballas fools to cap! ENDIF ENDIF sw4_group_active = 4 sw4_group_dead[2] = 1 ENDIF ENDIF ENDIF ENDIF IF sw4_hood_create[3] = 1 IF sw4_group_active = 4 IF sw4_hood_dead[12] = 0 IF IS_CHAR_DEAD sw4_flat_hood[12] REMOVE_BLIP sw4_flat_hood_blip[12] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[12] sw4_dead_count++ sw4_hood_dead[12] = 1 ENDIF ENDIF IF sw4_hood_dead[13] = 0 IF IS_CHAR_DEAD sw4_flat_hood[13] REMOVE_BLIP sw4_flat_hood_blip[13] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[13] sw4_dead_count++ sw4_hood_dead[13] = 1 ENDIF ENDIF IF sw4_hood_dead[14] = 0 IF IS_CHAR_DEAD sw4_flat_hood[14] REMOVE_BLIP sw4_flat_hood_blip[14] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[14] sw4_dead_count++ sw4_hood_dead[14] = 1 ENDIF ENDIF IF sw4_hood_dead[15] = 0 IF IS_CHAR_DEAD sw4_flat_hood[15] REMOVE_BLIP sw4_flat_hood_blip[15] MARK_CHAR_AS_NO_LONGER_NEEDED sw4_flat_hood[15] sw4_dead_count++ sw4_hood_dead[15] = 1 ENDIF ENDIF IF sw4_group_dead[3] = 0 IF sw4_hood_dead[12] = 1 AND sw4_hood_dead[13] = 1 AND sw4_hood_dead[14] = 1 AND sw4_hood_dead[15] = 1 GET_GAME_TIMER sw4_text_timer_start sw4_group_active = 1 sw4_group_dead[3] = 0 GET_RANDOM_CHAR_IN_SPHERE_ONLY_DRUGS_BUYERS 1930.61 -1401.21 12.87 145.3 sw4_hood_group4_exclusion //HACKED PATHFIND EXCLUSION //reset ENDIF ENDIF ENDIF ENDIF ENDIF // If there are enough dead... ...Show Sprayshop blip... ...send in the goon cars... ...add a wanted level... IF sw4_stage = 5 IF NOT IS_CAR_DEAD sw4_player_car IF sw4_stopped = 0 IF IS_CAR_STOPPED sw4_player_car AND IS_CHAR_IN_CAR scplayer sw4_player_car GET_GAME_TIMER sw4_timer_start[0] GENERATE_RANDOM_INT_IN_RANGE 0 5 sw4_stopped_text sw4_hood_acc = 50 IF NOT IS_CHAR_DEAD sw4_flat_hood[0] SET_CHAR_ACCURACY sw4_flat_hood[0] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[1] SET_CHAR_ACCURACY sw4_flat_hood[1] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[2] SET_CHAR_ACCURACY sw4_flat_hood[2] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[3] SET_CHAR_ACCURACY sw4_flat_hood[3] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[4] SET_CHAR_ACCURACY sw4_flat_hood[4] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[5] SET_CHAR_ACCURACY sw4_flat_hood[5] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[6] SET_CHAR_ACCURACY sw4_flat_hood[6] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[7] SET_CHAR_ACCURACY sw4_flat_hood[7] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[8] SET_CHAR_ACCURACY sw4_flat_hood[8] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[9] SET_CHAR_ACCURACY sw4_flat_hood[9] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[10] SET_CHAR_ACCURACY sw4_flat_hood[10] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[11] SET_CHAR_ACCURACY sw4_flat_hood[11] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[12] SET_CHAR_ACCURACY sw4_flat_hood[12] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[13] SET_CHAR_ACCURACY sw4_flat_hood[13] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[14] SET_CHAR_ACCURACY sw4_flat_hood[14] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[15] SET_CHAR_ACCURACY sw4_flat_hood[15] sw4_hood_acc ENDIF sw4_stopped = 1 ENDIF ENDIF IF sw4_stopped = 1 GET_GAME_TIMER sw4_timer_end[4] sw4_timer_diff[4] = sw4_timer_end[4] - sw4_timer_start[4] IF sw4_timer_diff[4] > 3000 IF IS_CAR_STOPPED sw4_player_car GET_GAME_TIMER sw4_timer_end[0] sw4_timer_diff[0] = sw4_timer_end[0] - sw4_timer_start[0] IF sw4_timer_diff[0] > 250 IF sw4_stopped_text = 0 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 20 // RYDER: Holy shit we’re sitting ducks! //PRINT_NOW ( SWE4_DA ) 3000 1 // RYDER: Holy shit we’re sitting ducks! GET_GAME_TIMER sw4_timer_start[0] sw4_stopped = 2 ENDIF ENDIF IF sw4_stopped_text = 1 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 21 // RYDER: Oh man, oh man, move! MOVE! //PRINT_NOW ( SWE4_DB ) 3000 1 // RYDER: Oh man, oh man, move! MOVE! GET_GAME_TIMER sw4_timer_start[0] sw4_stopped = 2 ENDIF ENDIF IF sw4_stopped_text = 2 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 22 // RYDER: What you doing, CJ?! //PRINT_NOW ( SWE4_DC ) 3000 1 // RYDER: What you doing, CJ?! GET_GAME_TIMER sw4_timer_start[0] sw4_stopped = 2 ENDIF ENDIF IF sw4_stopped_text = 3 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 23 // RYDER: He’s trying to get us killed! //PRINT_NOW ( SWE4_DD ) 3000 1 // RYDER: He’s trying to get us killed! GET_GAME_TIMER sw4_timer_start[0] sw4_stopped = 2 ENDIF ENDIF IF sw4_stopped_text = 4 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 24 // RYDER: He’s trying to get us killed! //PRINT_NOW ( SWE4_DE ) 3000 1 // RYDER: He’s trying to get us killed! GET_GAME_TIMER sw4_timer_start[0] sw4_stopped = 2 ENDIF ENDIF IF sw4_stopped_text = 5 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 25 // RYDER: Move it, CJ, move it! //PRINT_NOW ( SWE4_DF ) 3000 1 // RYDER: Move it, CJ, move it! GET_GAME_TIMER sw4_timer_start[0] sw4_stopped = 2 ENDIF ENDIF ENDIF ELSE sw4_stopped = 2 ENDIF ENDIF ENDIF IF sw4_stopped = 2 IF NOT IS_CAR_STOPPED sw4_player_car GET_GAME_TIMER sw4_timer_end[0] sw4_timer_diff[0] = sw4_timer_end[0] - sw4_timer_start[0] IF sw4_timer_diff[0] > 3100 sw4_stopped = 0 ENDIF //CLEAR_PRINTS sw4_hood_acc = 30 IF NOT IS_CHAR_DEAD sw4_flat_hood[0] SET_CHAR_ACCURACY sw4_flat_hood[0] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[1] SET_CHAR_ACCURACY sw4_flat_hood[1] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[2] SET_CHAR_ACCURACY sw4_flat_hood[2] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[3] SET_CHAR_ACCURACY sw4_flat_hood[3] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[4] SET_CHAR_ACCURACY sw4_flat_hood[4] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[5] SET_CHAR_ACCURACY sw4_flat_hood[5] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[6] SET_CHAR_ACCURACY sw4_flat_hood[6] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[7] SET_CHAR_ACCURACY sw4_flat_hood[7] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[8] SET_CHAR_ACCURACY sw4_flat_hood[8] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[9] SET_CHAR_ACCURACY sw4_flat_hood[9] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[10] SET_CHAR_ACCURACY sw4_flat_hood[10] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[11] SET_CHAR_ACCURACY sw4_flat_hood[11] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[12] SET_CHAR_ACCURACY sw4_flat_hood[12] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[13] SET_CHAR_ACCURACY sw4_flat_hood[13] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[14] SET_CHAR_ACCURACY sw4_flat_hood[14] sw4_hood_acc ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[15] SET_CHAR_ACCURACY sw4_flat_hood[15] sw4_hood_acc ENDIF ENDIF ENDIF ENDIF IF sw4_dead_count = 16 IF sw4_audio_playing = 0 //AND sw4_counter = 0 // 3master - force this to be zero when the audio stops playing, can get stuck in this loop sw4_counter = 0 sw4_counter = 33 // SWEET: Go Carl, GO!! //PRINT ( SWE4_GA ) 5000 1 // SWEET: Go Carl, GO!! GET_GAME_TIMER sw4_blip_timer_start sw4_dead_count = 17 ENDIF ENDIF IF sw4_dead_count = 17 GET_GAME_TIMER sw4_blip_timer_end sw4_blip_timer_diff = sw4_blip_timer_end - sw4_blip_timer_start IF sw4_blip_timer_diff > 3000 SET_FREE_RESPRAYS ON CLEAR_PRINTS SET_MAX_WANTED_LEVEL sw4_max_wanted IF sw4_wanted_flag = 0 SET_CREATE_RANDOM_COPS TRUE ALTER_WANTED_LEVEL_NO_DROP player1 2 ENDIF LOCK_CAR_DOORS sw4_player_car CARLOCK_UNLOCKED CLEAR_ONSCREEN_COUNTER sw4_health_display REMOVE_BLIP spray_shop1 ADD_SPRITE_BLIP_FOR_COORD 2067.4 -1831.2 13.5 RADAR_SPRITE_SPRAY spray_shop1 GET_GAME_TIMER sw4_blip_timer_start SET_PED_DENSITY_MULTIPLIER 0.5 REMOVE_BLIP sw4_flat_hood_blip[0] REMOVE_BLIP sw4_flat_hood_blip[1] REMOVE_BLIP sw4_flat_hood_blip[2] REMOVE_BLIP sw4_flat_hood_blip[3] REMOVE_BLIP sw4_flat_hood_blip[4] REMOVE_BLIP sw4_flat_hood_blip[5] REMOVE_BLIP sw4_flat_hood_blip[6] REMOVE_BLIP sw4_flat_hood_blip[7] REMOVE_BLIP sw4_flat_hood_blip[8] REMOVE_BLIP sw4_flat_hood_blip[9] REMOVE_BLIP sw4_flat_hood_blip[10] REMOVE_BLIP sw4_flat_hood_blip[11] REMOVE_BLIP sw4_flat_hood_blip[12] REMOVE_BLIP sw4_flat_hood_blip[13] REMOVE_BLIP sw4_flat_hood_blip[14] REMOVE_BLIP sw4_flat_hood_blip[15] GET_GAME_TIMER sw4_text_timer_start sw4_text_timer_flag = 14 sw4_cut = 0 sw4_stage = 6 SET_WANTED_MULTIPLIER 1.0 sw4_blip_counter = 19 // 3master - remove the ridiculous path flashing ENDIF ENDIF ENDIF // If player clears.. IF sw4_stage = 6 AND sw4_text_timer_flag = 18 GET_GAME_TIMER sw4_blip_timer_end sw4_blip_timer_diff = sw4_blip_timer_end - sw4_blip_timer_start IF sw4_blip_counter = 0 IF sw4_blip_timer_diff > 500 PRINT_HELP ( SWE4_07 ) // Marked on Radar as a Spray can REMOVE_BLIP spray_shop1 sw4_blip_counter++ ENDIF ENDIF IF sw4_blip_counter = 1 IF sw4_blip_timer_diff > 1000 REMOVE_BLIP spray_shop1 ADD_SPRITE_BLIP_FOR_COORD 2067.4 -1831.2 13.5 RADAR_SPRITE_SPRAY spray_shop1 sw4_blip_counter++ ENDIF ENDIF IF sw4_blip_counter = 2 IF sw4_blip_timer_diff > 1500 REMOVE_BLIP spray_shop1 sw4_blip_counter++ ENDIF ENDIF IF sw4_blip_counter = 3 IF sw4_blip_timer_diff > 2000 REMOVE_BLIP spray_shop1 ADD_SPRITE_BLIP_FOR_COORD 2067.4 -1831.2 13.5 RADAR_SPRITE_SPRAY spray_shop1 sw4_blip_counter++ ENDIF ENDIF IF sw4_blip_counter = 4 IF sw4_blip_timer_diff > 2500 REMOVE_BLIP spray_shop1 sw4_blip_counter++ ENDIF ENDIF IF sw4_blip_counter = 5 IF sw4_blip_timer_diff > 3000 REMOVE_BLIP spray_shop1 ADD_SPRITE_BLIP_FOR_COORD 2067.4 -1831.2 13.5 RADAR_SPRITE_SPRAY spray_shop1 sw4_blip_counter++ ENDIF ENDIF IF sw4_blip_counter = 6 IF sw4_blip_timer_diff > 3500 REMOVE_BLIP spray_shop1 sw4_blip_counter++ ENDIF ENDIF IF sw4_blip_counter = 7 IF sw4_blip_timer_diff > 4000 REMOVE_BLIP spray_shop1 ADD_SPRITE_BLIP_FOR_COORD 2067.4 -1831.2 13.5 RADAR_SPRITE_SPRAY spray_shop1 sw4_blip_counter++ ENDIF ENDIF IF sw4_blip_counter = 8 IF sw4_blip_timer_diff > 4500 REMOVE_BLIP spray_shop1 sw4_blip_counter++ ENDIF ENDIF IF sw4_blip_counter = 9 IF sw4_blip_timer_diff > 5000 REMOVE_BLIP spray_shop1 ADD_SPRITE_BLIP_FOR_COORD 2067.4 -1831.2 13.5 RADAR_SPRITE_SPRAY spray_shop1 sw4_blip_counter++ ENDIF ENDIF IF sw4_blip_counter = 10 IF sw4_blip_timer_diff > 5500 REMOVE_BLIP spray_shop1 sw4_blip_counter++ ENDIF ENDIF IF sw4_blip_counter = 11 IF sw4_blip_timer_diff > 6000 REMOVE_BLIP spray_shop1 ADD_SPRITE_BLIP_FOR_COORD 2067.4 -1831.2 13.5 RADAR_SPRITE_SPRAY spray_shop1 sw4_blip_counter++ ENDIF ENDIF IF sw4_blip_counter = 12 IF sw4_blip_timer_diff > 6500 REMOVE_BLIP spray_shop1 sw4_blip_counter++ ENDIF ENDIF IF sw4_blip_counter = 13 IF sw4_blip_timer_diff > 7000 REMOVE_BLIP spray_shop1 ADD_SPRITE_BLIP_FOR_COORD 2067.4 -1831.2 13.5 RADAR_SPRITE_SPRAY spray_shop1 sw4_blip_counter++ ENDIF ENDIF IF sw4_blip_counter = 14 IF sw4_blip_timer_diff > 7500 REMOVE_BLIP spray_shop1 sw4_blip_counter++ ENDIF ENDIF IF sw4_blip_counter = 15 IF sw4_blip_timer_diff > 8000 REMOVE_BLIP spray_shop1 ADD_SPRITE_BLIP_FOR_COORD 2067.4 -1831.2 13.5 RADAR_SPRITE_SPRAY spray_shop1 sw4_blip_counter++ ENDIF ENDIF IF sw4_blip_counter = 16 IF sw4_blip_timer_diff > 8500 REMOVE_BLIP spray_shop1 sw4_blip_counter++ ENDIF ENDIF IF sw4_blip_counter = 17 IF sw4_blip_timer_diff > 9000 REMOVE_BLIP spray_shop1 ADD_SPRITE_BLIP_FOR_COORD 2067.4 -1831.2 13.5 RADAR_SPRITE_SPRAY spray_shop1 sw4_blip_counter++ ENDIF ENDIF IF sw4_blip_counter = 18 IF sw4_blip_timer_diff > 9500 REMOVE_BLIP spray_shop1 sw4_blip_counter++ ENDIF ENDIF IF sw4_blip_counter = 19 IF sw4_blip_timer_diff > 0 REMOVE_BLIP spray_shop1 ADD_SPRITE_BLIP_FOR_COORD 2067.4 -1831.2 13.5 RADAR_SPRITE_SPRAY spray_shop1 REMOVE_BLIP sw4_spray_marker ADD_BLIP_FOR_COORD 2075.55 -1831.09 12.21 sw4_spray_marker sw4_blip_counter++ ENDIF ENDIF IF sw4_cut = 0 IF NOT IS_CHAR_DEAD scplayer IF LOCATE_CHAR_IN_CAR_3D scplayer 2075.55 -1831.09 12.21 4.0 4.0 4.0 TRUE CLEAR_PRINTS PRINT_HELP ( SWE4_06 ) // Drive into the garage REMOVE_BLIP sw4_spray_marker sw4_cut = 1 ENDIF ENDIF ENDIF IF NOT IS_WANTED_LEVEL_GREATER player1 0 IF LOCATE_CHAR_IN_CAR_3D scplayer 2075.55 -1831.09 12.21 20.0 20.0 20.0 FALSE // 3MASTER - this being TRUE caused the marker to flash into existence OR LOCATE_CHAR_IN_CAR_3D scplayer 1024.55 -1039.09 35.21 20.0 20.0 20.0 TRUE CLEAR_HELP GET_GAME_TIMER sw4_timer_start[0] REMOVE_BLIP sw4_spray_marker // this causes it to show back up for a frame? sw4_stage = 7 sw4_cut = 0 ELSE ALTER_WANTED_LEVEL_NO_DROP player1 2 ENDIF ENDIF ENDIF IF sw4_stage = 7 GET_GAME_TIMER sw4_timer_end[0] sw4_timer_diff[0] = sw4_timer_end[0] - sw4_timer_start[0] IF sw4_timer_diff[0] > 5000 IF sw4_help = 2 SET_FREE_RESPRAYS OFF PRINT_HELP ( WANT_L ) ADD_BLIP_FOR_COORD sw4_player_car_x sw4_player_car_y sw4_player_car_z sw4_end_blip REMOVE_BLIP spray_shop1 ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2067.4 -1831.2 13.5 RADAR_SPRITE_SPRAY spray_shop1 GET_GAME_TIMER sw4_timer_start[0] GET_GAME_TIMER sw4_text_timer_start sw4_help = 3 ENDIF ENDIF IF sw4_help = 3 GET_GAME_TIMER sw4_timer_end[0] sw4_timer_diff[0] = sw4_timer_end[0] - sw4_timer_start[0] IF sw4_timer_diff[0] > 5000 IF sw4_wanted_flag = 0 sw4_text_timer_flag = 18 GET_GAME_TIMER sw4_text_timer_start PRINT_NOW ( SWE4_14 ) 8000 1 // Take your homies back to the hood. sw4_wanted_flag = 1 ENDIF sw4_help = 4 ENDIF ENDIF IF sw4_help = 4 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD sw4_player_car IF IS_CHAR_IN_CAR scplayer sw4_player_car IF LOCATE_CHAR_IN_CAR_3D scplayer sw4_player_car_x sw4_player_car_y sw4_player_car_z 4.0 4.0 4.0 TRUE IF IS_CHAR_SITTING_IN_CAR scplayer sw4_player_car SET_PLAYER_CONTROL player1 OFF TASK_CAR_TEMP_ACTION scplayer sw4_player_car TEMPACT_HANDBRAKESTRAIGHT 2000000 CLEAR_AREA 2518.0 -1673.0 14.0 50.0 FALSE CLEAR_PRINTS SET_PED_DENSITY_MULTIPLIER 0.0 SWITCH_WIDESCREEN ON DO_FADE 300 FADE_OUT GET_GAME_TIMER sw4_timer_start[0] GET_GAME_TIMER sw4_text_timer_start TASK_PLAY_ANIM scplayer GDB_Car2_PLY GHETTO_DB 4.0 FALSE FALSE FALSE TRUE 0 SET_CURRENT_CHAR_WEAPON sw4_smoke WEAPONTYPE_TEC9 TASK_PLAY_ANIM sw4_smoke GDB_Car2_SMO GHETTO_DB 4.0 FALSE FALSE FALSE FALSE 0 SET_CURRENT_CHAR_WEAPON sw4_sweet WEAPONTYPE_TEC9 TASK_PLAY_ANIM sw4_sweet GDB_Car2_SWE GHETTO_DB 4.0 FALSE FALSE FALSE FALSE 0 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_CAR_CAN_BE_VISIBLY_DAMAGED sw4_player_car FALSE sw4_cut = 0 sw4_stage = 8 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // End cutscene... IF sw4_stage = 8 IF NOT IS_CAR_DEAD sw4_player_car IF sw4_cut = 0 IF sw4_cut_text = 0 IF sw4_audio_playing = 0 IF IS_CAR_STOPPED sw4_player_car IF NOT IS_CHAR_DEAD sw4_ryder POP_CAR_PANEL sw4_player_car WINDSCREEN_PANEL TRUE SET_FADING_COLOUR 0 0 0 OPEN_SEQUENCE_TASK sw4_ryder_end_cut TASK_LEAVE_CAR -1 sw4_player_car TASK_GO_STRAIGHT_TO_COORD -1 2521.0 -1679.0 15.2 PEDMOVE_WALK -2 CLOSE_SEQUENCE_TASK sw4_ryder_end_cut PERFORM_SEQUENCE_TASK sw4_ryder sw4_ryder_end_cut ENDIF GET_OFFSET_FROM_CAR_IN_WORLD_COORDS sw4_player_car -0.4 1.566 0.657 sw4_cam_x[1] sw4_cam_y[1] sw4_cam_z[1] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS sw4_player_car 0.038 -1.033 0.088 sw4_cam_x[3] sw4_cam_y[3] sw4_cam_z[3] SET_FIXED_CAMERA_POSITION sw4_cam_x[1] sw4_cam_y[1] sw4_cam_z[1] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT sw4_cam_x[3] sw4_cam_y[3] sw4_cam_z[3] JUMP_CUT DO_FADE 300 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE sw4_counter = 42 //PRINT_NOW ( SWE4_KG ) 5000 1 // SWEET: You’re down with the Grove and those Ballas know it, GET_GAME_TIMER sw4_timer_start[0] sw4_cut_text = 1 ENDIF ENDIF ENDIF IF sw4_cut_text = 1 GET_GAME_TIMER sw4_timer_end[0] sw4_timer_diff[0] = sw4_timer_end[0] - sw4_timer_start[0] IF sw4_timer_diff[0] > 1000 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 43 //PRINT ( SWE4_KH ) 4000 1 // SWEET: so watch yourself from now on. GET_GAME_TIMER sw4_timer_start[0] sw4_cut_text = 2 sw4_cut = 3 ENDIF ENDIF ENDIF ENDIF IF sw4_cut = 3 GET_GAME_TIMER sw4_timer_end[0] sw4_timer_diff[0] = sw4_timer_end[0] - sw4_timer_start[0] IF sw4_timer_diff[0] > 1000 IF NOT IS_CHAR_DEAD sw4_ryder IF NOT IS_CHAR_ON_SCREEN sw4_ryder // 3master - wait until ryder is off the screen OR sw4_timer_diff[0] > 6000 // add a ultimate limit so the game doesn't freeze REMOVE_CHAR_ELEGANTLY sw4_ryder IF sw4_cut_text = 2 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 44 //PRINT ( SWE4_KE ) 4000 1 // CARL: I'm cool, dude. Look, I'll see you cats later. GET_GAME_TIMER sw4_timer_start[0] sw4_cut_text = 3 ENDIF ENDIF ENDIF ENDIF ENDIF GET_GAME_TIMER sw4_timer_end[0] sw4_timer_diff[0] = sw4_timer_end[0] - sw4_timer_start[0] IF sw4_cut_text = 3 IF sw4_timer_diff[0] > 1000 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 45 //PRINT ( SWE4_KI ) 4000 1 // SMOKE: Here, go get yourself a beer and some colours. GET_GAME_TIMER sw4_timer_start[0] sw4_cut_text = 4 ENDIF ENDIF ENDIF GET_GAME_TIMER sw4_timer_end[0] sw4_timer_diff[0] = sw4_timer_end[0] - sw4_timer_start[0] IF NOT IS_CHAR_DEAD sw4_sweet IF sw4_timer_diff[0] > 1000 GET_SCRIPT_TASK_STATUS sw4_sweet TASK_PLAY_ANIM sw4_sweet_status IF sw4_sweet_status = FINISHED_TASK OR sw4_cut_text = 4 PERFORM_SEQUENCE_TASK sw4_sweet sw4_ryder_end_cut GET_GAME_TIMER sw4_timer_start[0] sw4_cut = 4 ENDIF ENDIF ENDIF ENDIF IF sw4_cut = 4 IF NOT IS_CHAR_DEAD sw4_smoke GET_SCRIPT_TASK_STATUS sw4_smoke TASK_PLAY_ANIM sw4_smoke_status IF sw4_smoke_status = FINISHED_TASK OR sw4_audio_playing = 0 // *********************************************** Remove when anims are shortened. PERFORM_SEQUENCE_TASK sw4_smoke sw4_ryder_end_cut WAIT 100 PERFORM_SEQUENCE_TASK scplayer sw4_ryder_end_cut GET_GAME_TIMER sw4_timer_start[0] SET_FADING_COLOUR 0 0 0 DO_FADE 1500 FADE_OUT sw4_cut = 5 ENDIF ENDIF ENDIF IF sw4_cut = 5 GET_GAME_TIMER sw4_timer_end[0] sw4_timer_diff[0] = sw4_timer_end[0] - sw4_timer_start[0] IF sw4_timer_diff[0] > 1000 WHILE GET_FADING_STATUS WAIT 0 ENDWHILE TASK_PLAY_ANIM scplayer GDB_Car2_PLY GHETTO_DB 4.0 FALSE FALSE FALSE FALSE 1 IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2511.0 -1671.0 12.5 ELSE SET_CHAR_COORDINATES scplayer 2511.0 -1671.0 12.5 ENDIF TASK_PLAY_ANIM scplayer GDB_Car2_PLY GHETTO_DB 4.0 FALSE FALSE FALSE FALSE 1 SET_CHAR_HEADING scplayer 223.0 REMOVE_CHAR_ELEGANTLY sw4_sweet REMOVE_CHAR_ELEGANTLY sw4_smoke GET_GAME_TIMER sw4_timer_start[0] sw4_cut = 7 ENDIF ENDIF IF sw4_cut = 7 GET_GAME_TIMER sw4_timer_end[0] sw4_timer_diff[0] = sw4_timer_end[0] - sw4_timer_start[0] IF sw4_timer_diff[0] > 100 IF NOT IS_CAR_DEAD sw4_player_car DELETE_CHAR sw4_smoke DELETE_CHAR sw4_smoke RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_passed_sweet4 sw4_cut = 8 ENDIF ENDIF ENDIF ENDIF ENDIF // If player leaves car... IF sw4_stage > 2 AND sw4_stage < 8 IF sw4_blipped = 0 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD sw4_player_car IF NOT IS_CHAR_IN_CAR scplayer sw4_player_car AND IS_CHAR_ON_FOOT scplayer CLOSE_ALL_CAR_DOORS sw4_player_car // Drive Away IF sw4_sequence_flag = 0 OPEN_SEQUENCE_TASK sw4_drive_away TASK_SHUFFLE_TO_NEXT_CAR_SEAT -1 sw4_player_car TASK_CAR_DRIVE_WANDER -1 sw4_player_car 50.0 DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK sw4_drive_away sw4_sequence_flag = 1 ENDIF sw4_in_car = 0 sw4_timer_remaining = 15000 ADD_BLIP_FOR_CAR sw4_player_car sw4_player_car_blip SET_BLIP_AS_FRIENDLY sw4_player_car_blip TRUE IF sw4_stage = 3 REMOVE_BLIP sw4_hood_blip ENDIF IF sw4_stage = 5 CLEAR_ONSCREEN_COUNTER sw4_health_display IF sw4_group_active = 1 IF sw4_hood_dead[0] = 0 REMOVE_BLIP sw4_flat_hood_blip[0] ENDIF IF sw4_hood_dead[1] = 0 REMOVE_BLIP sw4_flat_hood_blip[1] ENDIF IF sw4_hood_dead[2] = 0 REMOVE_BLIP sw4_flat_hood_blip[2] ENDIF IF sw4_hood_dead[3] = 0 REMOVE_BLIP sw4_flat_hood_blip[3] ENDIF ENDIF IF sw4_group_active = 2 IF sw4_hood_dead[4] = 0 REMOVE_BLIP sw4_flat_hood_blip[4] ENDIF IF sw4_hood_dead[5] = 0 REMOVE_BLIP sw4_flat_hood_blip[5] ENDIF IF sw4_hood_dead[6] = 0 REMOVE_BLIP sw4_flat_hood_blip[6] ENDIF IF sw4_hood_dead[7] = 0 REMOVE_BLIP sw4_flat_hood_blip[7] ENDIF ENDIF IF sw4_group_active = 3 IF sw4_hood_dead[8] = 0 REMOVE_BLIP sw4_flat_hood_blip[8] ENDIF IF sw4_hood_dead[9] = 0 REMOVE_BLIP sw4_flat_hood_blip[9] ENDIF IF sw4_hood_dead[10] = 0 REMOVE_BLIP sw4_flat_hood_blip[10] ENDIF IF sw4_hood_dead[11] = 0 REMOVE_BLIP sw4_flat_hood_blip[11] ENDIF ENDIF IF sw4_group_active = 4 IF sw4_hood_dead[12] = 0 REMOVE_BLIP sw4_flat_hood_blip[12] ENDIF IF sw4_hood_dead[13] = 0 REMOVE_BLIP sw4_flat_hood_blip[13] ENDIF IF sw4_hood_dead[14] = 0 REMOVE_BLIP sw4_flat_hood_blip[14] ENDIF IF sw4_hood_dead[15] = 0 REMOVE_BLIP sw4_flat_hood_blip[15] ENDIF ENDIF ENDIF IF sw4_stage = 6 REMOVE_BLIP sw4_spray_marker ENDIF IF sw4_stage = 7 REMOVE_BLIP sw4_end_blip ENDIF LOCK_CAR_DOORS sw4_player_car CARLOCK_UNLOCKED GET_GAME_TIMER sw4_timer_start[2] sw4_blipped = 1 ENDIF ENDIF ENDIF IF sw4_blipped = 1 IF sw4_timer_remaining_secs >= 0 GET_GAME_TIMER sw4_timer_end[2] sw4_timer_diff[2] = sw4_timer_end[2] - sw4_timer_start[2] sw4_timer_remaining = 10000 - sw4_timer_diff[2] sw4_timer_remaining_secs = sw4_timer_remaining / 1000 IF sw4_in_car = 0 GET_GAME_TIMER sw4_timer_start[0] GENERATE_RANDOM_INT_IN_RANGE 0 2 sw4_stopped_text sw4_in_car = 1 ENDIF IF sw4_in_car = 1 GET_GAME_TIMER sw4_timer_end[0] sw4_timer_diff[0] = sw4_timer_end[0] - sw4_timer_start[0] IF sw4_timer_diff[0] > 200 IF sw4_stopped_text = 0 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 26 // RYDER: I told you he was a buster! sw4_stopped_text = 5 //PRINT ( SWE4_EA ) 3000 1 // RYDER: I told you he was a buster! ENDIF ENDIF IF sw4_stopped_text = 1 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 27 // SWEET: Don’t run out on me again, Carl! sw4_stopped_text = 5 //PRINT ( SWE4_EB ) 3000 1 // SWEET: Don’t run out on me again, Carl! ENDIF ENDIF IF sw4_stopped_text = 2 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 28 // SMOKE: Carl’s quitting on us! sw4_stopped_text = 5 //PRINT ( SWE4_EC ) 3000 1 // SMOKE: Carl’s quitting on us! ENDIF ENDIF ENDIF ENDIF ENDIF IF sw4_timer_remaining < 100 AND sw4_timer_remaining > 0 IF NOT LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer sw4_player_car 15.0 15.0 15.0 FALSE LOCK_CAR_DOORS sw4_player_car CARLOCK_LOCKED ENDIF ENDIF IF sw4_timer_remaining_secs < 0 sw4_timer_remaining_secs = 0 ENDIF IF sw4_timer_remaining_secs = 0 IF NOT LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer sw4_player_car 15.0 15.0 15.0 FALSE //GET_CHAR_IN_CAR_PASSENGER_SEAT sw4_player_car 0 sw4_passenger IF NOT IS_CHAR_DEAD sw4_smoke IF sw4_audio_playing = 0 AND sw4_counter = 0 LOCK_CAR_DOORS sw4_player_car CARLOCK_LOCKED PERFORM_SEQUENCE_TASK sw4_smoke sw4_drive_away CLEAR_PRINTS sw4_counter = 29 //PRINT_NOW ( SWE4_FA ) 3000 1 // RYDER: He’s ditched us! //PRINT ( SWE4_FD ) 3000 1 // SMOKE: Motherfucker! I’ve got the wheel! GET_GAME_TIMER sw4_timer_start[2] REMOVE_BLIP sw4_player_car_blip sw4_stage = 666 ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD sw4_player_car IF IS_CHAR_IN_CAR scplayer sw4_player_car sw4_in_car = 0 REMOVE_BLIP sw4_player_car_blip IF sw4_stage = 3 ADD_BLIP_FOR_COORD sw4_hood_x sw4_hood_y sw4_hood_z sw4_hood_blip ENDIF IF sw4_stage = 5 IF sw4_count = 1 CLEAR_ONSCREEN_COUNTER sw4_health_display DISPLAY_ONSCREEN_COUNTER_WITH_STRING sw4_health_display COUNTER_DISPLAY_BAR SWE4_08 //SET_ONSCREEN_COUNTER_COLOUR sw4_health_display HUD_COLOUR_RED ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[0] REMOVE_BLIP sw4_flat_hood_blip[0] ADD_BLIP_FOR_CHAR sw4_flat_hood[0] sw4_flat_hood_blip[0] ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[1] REMOVE_BLIP sw4_flat_hood_blip[1] ADD_BLIP_FOR_CHAR sw4_flat_hood[1] sw4_flat_hood_blip[1] ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[2] REMOVE_BLIP sw4_flat_hood_blip[2] ADD_BLIP_FOR_CHAR sw4_flat_hood[2] sw4_flat_hood_blip[2] ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[3] REMOVE_BLIP sw4_flat_hood_blip[3] ADD_BLIP_FOR_CHAR sw4_flat_hood[3] sw4_flat_hood_blip[3] ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[4] REMOVE_BLIP sw4_flat_hood_blip[4] ADD_BLIP_FOR_CHAR sw4_flat_hood[4] sw4_flat_hood_blip[4] ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[5] REMOVE_BLIP sw4_flat_hood_blip[5] ADD_BLIP_FOR_CHAR sw4_flat_hood[5] sw4_flat_hood_blip[5] ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[6] REMOVE_BLIP sw4_flat_hood_blip[6] ADD_BLIP_FOR_CHAR sw4_flat_hood[6] sw4_flat_hood_blip[6] ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[7] REMOVE_BLIP sw4_flat_hood_blip[7] ADD_BLIP_FOR_CHAR sw4_flat_hood[7] sw4_flat_hood_blip[7] ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[8] REMOVE_BLIP sw4_flat_hood_blip[8] ADD_BLIP_FOR_CHAR sw4_flat_hood[8] sw4_flat_hood_blip[8] ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[9] REMOVE_BLIP sw4_flat_hood_blip[9] ADD_BLIP_FOR_CHAR sw4_flat_hood[9] sw4_flat_hood_blip[9] ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[10] REMOVE_BLIP sw4_flat_hood_blip[10] ADD_BLIP_FOR_CHAR sw4_flat_hood[10] sw4_flat_hood_blip[10] ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[11] REMOVE_BLIP sw4_flat_hood_blip[11] ADD_BLIP_FOR_CHAR sw4_flat_hood[11] sw4_flat_hood_blip[11] ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[12] REMOVE_BLIP sw4_flat_hood_blip[12] ADD_BLIP_FOR_CHAR sw4_flat_hood[12] sw4_flat_hood_blip[12] ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[13] REMOVE_BLIP sw4_flat_hood_blip[13] ADD_BLIP_FOR_CHAR sw4_flat_hood[13] sw4_flat_hood_blip[13] ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[14] REMOVE_BLIP sw4_flat_hood_blip[14] ADD_BLIP_FOR_CHAR sw4_flat_hood[14] sw4_flat_hood_blip[14] ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[15] REMOVE_BLIP sw4_flat_hood_blip[15] ADD_BLIP_FOR_CHAR sw4_flat_hood[15] sw4_flat_hood_blip[15] ENDIF ENDIF IF sw4_stage = 6 sw4_text_timer_flag = 18 GET_GAME_TIMER sw4_blip_timer_start sw4_blip_timer_start -= 5000 REMOVE_BLIP sw4_spray_marker ADD_BLIP_FOR_COORD 2075.55 -1831.09 12.21 sw4_spray_marker ENDIF IF sw4_stage = 7 REMOVE_BLIP sw4_end_blip ADD_BLIP_FOR_COORD sw4_end_x sw4_end_y sw4_end_z sw4_end_blip ENDIF CLEAR_PRINTS sw4_timer_remaining_secs = 1 GET_GAME_TIMER sw4_text_timer_start sw4_blipped = 0 ENDIF ENDIF ENDIF ENDIF IF sw4_stage = 666 GET_GAME_TIMER sw4_timer_end[2] sw4_timer_diff[2] = sw4_timer_end[2] - sw4_timer_start[2] IF sw4_timer_diff[2] > 1000 IF NOT IS_CHAR_DEAD sw4_smoke AND NOT IS_CAR_DEAD sw4_player_car IF sw4_audio_playing = 0 AND sw4_counter = 0 TASK_CAR_DRIVE_WANDER sw4_smoke sw4_player_car 50.0 DRIVINGMODE_AVOIDCARS sw4_counter = 32 sw4_stage = 667 ENDIF ENDIF ENDIF ENDIF IF sw4_stage = 667 IF NOT IS_CAR_DEAD sw4_player_car IF NOT IS_CAR_ON_SCREEN sw4_player_car OR NOT LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer sw4_player_car 50.0 50.0 50.0 FALSE PRINT_NOW ( SWE4_05 ) 5000 1 // You sure you're down for the 'hood? GOTO mission_failed_sweet4 ENDIF ENDIF ENDIF // Text Timers IF sw4_blipped = 0 IF sw4_stage = 3 IF sw4_text_timer_flag = -1 IF sw4_audio_playing = 0 PRINT ( SWE4_01 ) 100 1 // Drive your homies into Balla territory. ENDIF GET_GAME_TIMER sw4_text_timer_end sw4_text_timer_diff = sw4_text_timer_end - sw4_text_timer_start IF sw4_text_timer_diff > 3000 CLEAR_PRINTS sw4_text_timer_flag++ GET_GAME_TIMER sw4_text_timer_start ENDIF ENDIF IF sw4_text_timer_flag = 0 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 1 // RYDER: Where we going, homie? ENDIF ENDIF IF sw4_text_timer_flag = 1 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 2 // SWEET: Rollin’ Heights Ballas country. ENDIF ENDIF IF sw4_text_timer_flag = 2 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 5 // RYDER: Do us a little drive by? ENDIF ENDIF IF sw4_text_timer_flag = 6 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 9 // RYDER: No, you’re our chauffeur for this little gig! ENDIF ENDIF IF sw4_text_timer_flag = 7 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 10 // CARL: Gee, thanks. //PRINT ( SWE4_AJ ) 100 1 // CARL: Gee, thanks. ENDIF ENDIF IF sw4_text_timer_flag = 8 IF sw4_audio_playing = 0 sw4_counter = 11 // RYDER: Just don’t drive like a fool. ENDIF ENDIF ENDIF IF sw4_stage = 4 IF sw4_text_timer_flag = 9 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 12 // SWEET: Alright – Ballas turf, you dogs ready? ENDIF ENDIF IF sw4_text_timer_flag = 10 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 13 // CARL: Sure, dude, I’m ready. ENDIF ENDIF IF sw4_text_timer_flag = 11 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 14 // SWEET: Carl, Just concentrate on the driving and we’ll take care of the shooting. ENDIF ENDIF IF sw4_text_timer_flag = 12 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 15 // RYDER: Listen to the man. Try not to park us up a tree or nothin’. ENDIF ENDIF IF sw4_text_timer_flag = 13 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 16 // SWEET: Yeah if the car stops, we’re dead meat. IF NOT IS_CHAR_DEAD sw4_flat_hood[2] TASK_PLAY_ANIM sw4_flat_hood[2] gsign3 GHANDS 4.0 FALSE FALSE FALSE FALSE 0 ENDIF IF NOT IS_CHAR_DEAD sw4_flat_hood[3] //TASK_PLAY_ANIM sw4_flat_hood[3] smkcig_prtl GANGS 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM sw4_flat_hood[3] drnkbr_prtl GANGS 4.0 FALSE FALSE FALSE FALSE 0 ENDIF ENDIF ENDIF ENDIF IF sw4_stage = 6 IF sw4_wanted_flag = 0 IF sw4_text_timer_flag = 14 PRINT ( SWE4_12 ) 100 1 // You have a wanted level, cops will chase you. GET_GAME_TIMER sw4_text_timer_end sw4_text_timer_diff = sw4_text_timer_end - sw4_text_timer_start IF sw4_text_timer_diff > 4000 sw4_text_timer_flag++ GET_GAME_TIMER sw4_text_timer_start CHECKPOINT_SAVE 1 ENDIF ENDIF IF sw4_text_timer_flag = 15 PRINT ( SWE4_03 ) 100 1 // Get to the spray shop, you can lose the police there! GET_GAME_TIMER sw4_text_timer_end sw4_text_timer_diff = sw4_text_timer_end - sw4_text_timer_start IF sw4_text_timer_diff > 4000 GET_GAME_TIMER sw4_blip_timer_start sw4_text_timer_flag++ sw4_text_timer_flag++ sw4_text_timer_flag++ GET_GAME_TIMER sw4_text_timer_start ENDIF ENDIF ELSE IF sw4_text_timer_flag = 14 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 55 // RYDER: CJ, you trying to get us busted? ENDIF ENDIF IF sw4_text_timer_flag = 15 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 56 // SWEET: C’mon CJ, we gotta lose all this attention! ENDIF ENDIF IF sw4_text_timer_flag = 16 PRINT ( SWE4_03 ) 4000 1 // Get to the spray shop, you can lose the police there! sw4_text_timer_flag++ GET_GAME_TIMER sw4_text_timer_start ENDIF ENDIF ENDIF IF sw4_stage = 7 AND sw4_help = 4 GET_GAME_TIMER sw4_text_timer_end sw4_text_timer_diff = sw4_text_timer_end - sw4_text_timer_start IF sw4_text_timer_diff > 6000 IF sw4_text_timer_flag = 18 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 37 // SWEET: Holy fuck, Grove is back, man, Grove is back! ENDIF ENDIF ENDIF IF sw4_text_timer_flag = 19 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 38 // CARL: Righteous, dude, they was totally unprepared for us! ENDIF ENDIF IF sw4_text_timer_flag = 20 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 39 // RYDER: I’m amazed you didn’t get us killed, CJ. ENDIF ENDIF IF sw4_text_timer_flag = 21 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 40 // RYDER: Yo, check it, am I dead? ENDIF ENDIF IF sw4_text_timer_flag = 22 IF sw4_audio_playing = 0 AND sw4_counter = 0 sw4_counter = 41 // SWEET: Hey, Carl, ignore that motherfucker, you did good today. ENDIF ENDIF ENDIF ENDIF GOTO sw4_main_loop // ------------------------------------------------------------------------------------------------ // Mission Failed mission_failed_sweet4: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // ------------------------------------------------------------------------------------------------ // Mission Passed mission_passed_sweet4: // //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 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER1 flag_sweet_mission_counter ++ REGISTER_MISSION_PASSED ( SWEET_4 ) PLAYER_MADE_PROGRESS 1 //PRINT_WITH_NUMBER_BIG ( M_PASS ) 200 5000 1 //"Mission Passed!" //PRINT_NOW ( SW4_T11 ) 5000 1 // Well done. ADD_SCORE player1 500 AWARD_PLAYER_MISSION_RESPECT 6 PRINT_WITH_NUMBER_BIG ( M_PASSS ) 500 5000 1 //"Mission Passed!" PLAY_MISSION_PASSED_TUNE 1 START_NEW_SCRIPT ryder_mission_loop REMOVE_BLIP ryder_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT ryderX ryderY ryderZ ryder_blip_icon ryder_contact_blip CLEAR_WANTED_LEVEL player1 RETURN // ------------------------------------------------------------------------------------------------ // Mission Cleanup mission_cleanup_sweet4: GET_RANDOM_CHAR_IN_SPHERE_ONLY_DRUGS_BUYERS 1930.61 -1401.21 12.87 145.3 sw4_hood_group4_exclusion //HACKED PATHFIND EXCLUSION //reset // ---- Entities GOSUB sw4_player_car_delete GOSUB sw4_flat_hood_delete REMOVE_CHAR_ELEGANTLY sw4_sweet REMOVE_CHAR_ELEGANTLY sw4_ryder REMOVE_CHAR_ELEGANTLY sw4_smoke UNLOAD_SPECIAL_CHARACTER 10 UNLOAD_SPECIAL_CHARACTER 2 UNLOAD_SPECIAL_CHARACTER 3 MARK_MODEL_AS_NO_LONGER_NEEDED ballas1 MARK_MODEL_AS_NO_LONGER_NEEDED ballas2 MARK_MODEL_AS_NO_LONGER_NEEDED TEC9 MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED VOODOO //MARK_MODEL_AS_NO_LONGER_NEEDED 867 MARK_MODEL_AS_NO_LONGER_NEEDED SPRAYCAN REMOVE_ANIMATION GHANDS REMOVE_ANIMATION GANGS // ---- Blips REMOVE_BLIP sw4_player_car_blip REMOVE_BLIP sw4_hood_blip REMOVE_BLIP sw4_end_blip REMOVE_BLIP sw4_flat_hood_blip[0] REMOVE_BLIP sw4_flat_hood_blip[1] REMOVE_BLIP sw4_flat_hood_blip[2] REMOVE_BLIP sw4_flat_hood_blip[3] REMOVE_BLIP sw4_flat_hood_blip[4] REMOVE_BLIP sw4_flat_hood_blip[5] REMOVE_BLIP sw4_flat_hood_blip[6] REMOVE_BLIP sw4_flat_hood_blip[7] REMOVE_BLIP sw4_flat_hood_blip[8] REMOVE_BLIP sw4_flat_hood_blip[9] REMOVE_BLIP sw4_flat_hood_blip[10] REMOVE_BLIP sw4_flat_hood_blip[11] REMOVE_BLIP sw4_flat_hood_blip[12] REMOVE_BLIP sw4_flat_hood_blip[13] REMOVE_BLIP sw4_flat_hood_blip[14] REMOVE_BLIP sw4_flat_hood_blip[15] REMOVE_BLIP spray_shop1 REMOVE_BLIP sw4_spray_marker ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2067.4 -1831.2 13.5 RADAR_SPRITE_SPRAY spray_shop1 SET_FREE_RESPRAYS OFF SET_WANTED_MULTIPLIER 1.0 //SET_ZONE_GANG_STRENGTH IWD1 GANG_FLAT sw4_gang_strength[0] // //SET_ZONE_GANG_STRENGTH IWD2 GANG_FLAT sw4_gang_strength[1] // //SET_ZONE_GANG_STRENGTH IWD3a GANG_FLAT sw4_gang_strength[2] // //SET_ZONE_GANG_STRENGTH IWD3b GANG_FLAT sw4_gang_strength[3] // //SET_ZONE_GANG_STRENGTH IWD4 GANG_FLAT sw4_gang_strength[4] // //SET_ZONE_GANG_STRENGTH IWD5 GANG_FLAT sw4_gang_strength[5] // //SET_ZONE_GANG_STRENGTH JEF1a GANG_FLAT sw4_gang_strength[6] // //SET_ZONE_GANG_STRENGTH JEF1b GANG_FLAT sw4_gang_strength[7] // //SET_ZONE_GANG_STRENGTH JEF2 GANG_FLAT sw4_gang_strength[8] // //SET_ZONE_GANG_STRENGTH JEF3b GANG_FLAT sw4_gang_strength[9] // //SET_ZONE_GANG_STRENGTH JEF3c GANG_FLAT sw4_gang_strength[10] // //SET_ZONE_GANG_STRENGTH ELS1a GANG_FLAT sw4_gang_strength[11] // //SET_ZONE_GANG_STRENGTH ELS1b GANG_FLAT sw4_gang_strength[12] // //SET_ZONE_GANG_STRENGTH ELS2 GANG_FLAT sw4_gang_strength[13] // //SET_ZONE_GANG_STRENGTH ELS3a GANG_FLAT sw4_gang_strength[14] // //SET_ZONE_GANG_STRENGTH ELS3b GANG_FLAT sw4_gang_strength[15] // //SET_ZONE_GANG_STRENGTH ELS4 GANG_FLAT sw4_gang_strength[16] // //SET_ZONE_GANG_STRENGTH GLN1 GANG_FLAT sw4_gang_strength[17] // //SET_ZONE_GANG_STRENGTH GLN2a GANG_FLAT sw4_gang_strength[18] // //SET_ZONE_GANG_STRENGTH GLN2b GANG_FLAT sw4_gang_strength[19] // //SET_ZONE_GANG_STRENGTH LIND1a GANG_FLAT sw4_gang_strength[20] // //SET_ZONE_GANG_STRENGTH LIND1b GANG_FLAT sw4_gang_strength[21] // //SET_ZONE_GANG_STRENGTH LIND2a GANG_FLAT sw4_gang_strength[22] // //SET_ZONE_GANG_STRENGTH LIND2b GANG_FLAT sw4_gang_strength[23] // //SET_ZONE_GANG_STRENGTH LIND3 GANG_FLAT sw4_gang_strength[24] SET_MAX_WANTED_LEVEL sw4_max_wanted SET_CREATE_RANDOM_COPS TRUE SWITCH_COPS_ON_BIKES ON SWITCH_CAR_GENERATOR gen_car7 101 DONT_SUPPRESS_CAR_MODEL VOODOO REMOVE_ANIMATION GHETTO_DB CLEAR_ONSCREEN_COUNTER sw4_health_display SET_MUSIC_DOES_FADE TRUE SET_CREATE_RANDOM_GANG_MEMBERS TRUE // ---- Models // ---- Clear Script Stuff flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED RETURN // ------------------------------------------------------------------------------------------------ // ---- Subroutines sw4_shoot_at_closest: IF NOT IS_CHAR_DEAD sw4_gosub_char GET_CHAR_COORDINATES sw4_gosub_char sw4_gosub_x sw4_gosub_y sw4_gosub_z ENDIF sw4_closest_ped = -1 sw4_closest_ped_dist = 99999.9 sw4_loop = 0 WHILE sw4_loop < 18 IF NOT IS_CHAR_DEAD sw4_flat_hood[sw4_loop] GET_CHAR_COORDINATES sw4_flat_hood[sw4_loop] sw4_flat_hood_x[sw4_loop] sw4_flat_hood_y[sw4_loop] sw4_flat_hood_z[sw4_loop] GET_DISTANCE_BETWEEN_COORDS_2D sw4_gosub_x sw4_gosub_y sw4_flat_hood_x[sw4_loop] sw4_flat_hood_y[sw4_loop] sw4_gosub_dist IF sw4_gosub_dist < sw4_closest_ped_dist sw4_closest_ped_dist = sw4_gosub_dist sw4_closest_ped = sw4_flat_hood[sw4_loop] ENDIF ENDIF sw4_loop++ ENDWHILE IF sw4_closest_ped >= 0 IF NOT IS_CHAR_DEAD sw4_closest_ped AND NOT IS_CHAR_DEAD sw4_gosub_char TASK_DRIVE_BY sw4_gosub_char sw4_closest_ped -1 0.0 0.0 0.0 40.0 sw4_anim sw4_side 99 SET_CURRENT_CHAR_WEAPON sw4_gosub_char WEAPONTYPE_TEC9 ENDIF ENDIF GET_GAME_TIMER sw4_timer_start[3] RETURN sw4_dialogue_pos: IF NOT sw4_counter > 11 AND NOT sw4_counter < 17 sw4_audio_char = 0 ENDIF IF NOT sw4_counter > 41 AND NOT sw4_counter < 46 sw4_audio_char = 0 ENDIF IF sw4_counter = 12 OR sw4_counter = 14 OR sw4_counter = 16 OR sw4_counter = 42 OR sw4_counter = 43 sw4_audio_char = sw4_sweet ENDIF IF sw4_counter = 13 OR sw4_counter = 44 sw4_audio_char = scplayer ENDIF IF sw4_counter = 15 sw4_audio_char = sw4_ryder ENDIF IF sw4_counter = 45 sw4_audio_char = sw4_smoke ENDIF RETURN } /* [SWE4_01:SWEET4] ~s~Drive your homies into ~y~Balla territory~s~. [SWE4_02:SWEET4] ~s~Shoot up the neighborhood. [SWE4_03:SWEET4] ~s~Get to the spray shop, you can lose the police there! [SWE4_04:SWEET4] ~r~Your homies didn't make it. [SWE4_05:SWEET4] ~r~You sure you're down for the 'hood? [SWE4_06:SWEET4] Drive your vehicle into the spray shop to lose your ~h~wanted level~w~, ~h~repair ~w~and ~h~respray ~w~your vehicle. Cost - ~h~$100~w~. This time it's free. [SWE4_07:SWEET4] The spray shop icon is marked on the radar as a spray can. [SWE4_08:SWEET4] CAR HEALTH [SWE4_09:SWEET4] ~s~You've left ~b~Smoke ~s~behind! [SWE4_10:SWEET4] ~s~You've left ~b~Ryder ~s~behind! [SWE4_11:SWEET4] ~s~You've left ~b~Sweet ~s~behind! [SWE4_12:SWEET4] ~s~You have a two star wanted level, the cops will chase you down. [SWE4_13:SWEET4] Press ~m~~widget_look_left~ or ~m~~widget_look_right~ to look left or right when in a car. [SWE4_14:SWEET4] ~s~Take your homies back to ~y~the hood~s~. [SWE4_15:SWEET4] This will allow you to see where your enemies are located. [SWE4_AA:SWEET4] Where we going, homie? [SWE4_AB:SWEET4] Rollin' Heights Ballas country. [SWE4_AE:SWEET4] Do us a little drive by? [SWE4_AF:SWEET4] For real. You down, Carl? [SWE4_AG:SWEET4] I ain't packing any heat. [SWE4_AH:SWEET4] You ain't cold enough for that shit yet, CJ. [SWE4_AI:SWEET4] No, you're our chauffeur for this little gig! [SWE4_AJ:SWEET4] Gee, thanks. [SWE4_AK:SWEET4] Just don't drive like a fool. [SWE4_BA:SWEET4] Alright - Ballas turf, you dogs ready? [SWE4_BB:SWEET4] Sure, dude, I'm ready. [SWE4_BC:SWEET4] Carl, just concentrate on the driving and we'll take care of the shooting. [SWE4_BD:SWEET4] Listen to the man. Try not to park us up a tree or nothin'. [SWE4_BE:SWEET4] Yeah if the car stops, we're dead meat. [SWE4_DA:SWEET4] Holy shit we're sitting ducks! [SWE4_DB:SWEET4] Oh man, oh man, move! MOVE! [SWE4_DC:SWEET4] What you doing, CJ?! [SWE4_DD:SWEET4] Get us moving! [SWE4_DE:SWEET4] He's trying to get us killed! [SWE4_DF:SWEET4] Move it, CJ, move it! [SWE4_EA:SWEET4] I told you he was a buster! [SWE4_EB:SWEET4] Don't run out on me again, Carl! [SWE4_EC:SWEET4] Carl's quitting on us! [SWE4_FA:SWEET4] He's ditched us! [SWE4_FD:SWEET4] Motherfucker! I've got the wheel! [SWE4_GA:SWEET4] Go Carl, GO!! [SWE4_GB:SWEET4] These wheels are hot - every cop in South Central will be looking for this car! [SWE4_KA:SWEET4] Holy fuck, Grove is back, man, Grove is back! [SWE4_KB:SWEET4] Righteous, dude, they was totally unprepared for us! [SWE4_KC:SWEET4] I'm amazed you didn't get us killed, CJ. [SWE4_KD:SWEET4] Yo, check it, am I dead? [SWE4_KE:SWEET4] I'm cool, dude. Look, I'll see you cats later. [SWE4_KF:SWEET4] Hey, Carl, ignore that motherfucker, you did good today. [SWE4_KG:SWEET4] You're down with the Grove and those Ballas know it, [SWE4_KH:SWEET4] so watch yourself from now on. [SWE4_KI:SWEET4] Here, go get yourself a beer and some colors. [SWE4_LA:SWEET4] We iced them! CJ, let's hunt us down some more! [SWE4_LB:SWEET4] They was too easy, let's find us some more Ballas fools! [SWE4_LC:SWEET4] What you waiting for, CJ? Find us some more Ballas fools to cap! [SWE4_NC:SWEET4] CJ, you trying to get us busted? [SWE4_OA:SWEET4] C'mon CJ, we gotta lose all this attention! */ MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* SWEET 5 ******************************************** // ************************************** RESCUE **************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME sweet5 // Mission start stuff GOSUB mission_start_hood5 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_hood5_failed ENDIF GOSUB mission_cleanup_hood5 MISSION_END { // **************************************** Mission Start ********************************** LVAR_INT sw5_task_status sw5_time sw5_i sw5_red[6] sw5_sweetsgf LVAR_INT sw5_random sw5_red_Group sw5_red_group_dec LVAR_INT sw5_seville_dec LVAR_INT sw5_house_blip sw5_emmet_blip sw5_gun sw5_red_blip[6] sw5_dead_reds sw5_pause_time LVAR_INT sw5_playerscar sw5_temp sw5_getnewcar sw5_ballascar[2] sw5_reddriver[2] sw5_chase_car_created LVAR_INT sw5_chase_timer sw5_seq sw5_sweet_lost sw5_sweetsgf_lost LVAR_INT sw5_sweet_blip sw5_sweetsgf_blip sw5_finish_blip sw5_special_red_action LVAR_INT sw5_sweet LVAR_INT sweet_change_state_time sw5_sweet_ducking sw5_sweets_target sw5_reds_shooting_player VAR_INT sw5_target[6] LVAR_INT next_red_time_check sw5_redi LVAR_FLOAT sw5_redx sw5_redy sw5_redz sw5_x sw5_y sw5_z sw5_newx sw5_newy sw5_newz sw5_h LVAR_FLOAT sw5_closest_dist_a sw5_closest_dist_b LVAR_INT sw5_nearest_red_a sw5_nearest_red_b LVAR_INT sw5_player_spotted LVAR_INT sw5_scene_made sw5_spotted_for_first_time sw5_empty_dec sw5_sweet_dec sw5_progress sw5_playerscar_model LVAR_INT sw5_chasing_cars_leave sw5_playerscar_type sw5_generatecar LVAR_FLOAT sw5_red_x[6] sw5_red_y[6] sw5_red_z[6] LVAR_INT sw5_sweet_shooting_at sw5_Sweet_alive sw5_mission_fail LVAR_INT sw5_flag sw5_can_skip_cut LVAR_INT sw5_car_model sw5_enter_cut sw5_button_pressed ped_attack_event[6] sw5_redpas[2] sw5_red_model[6] LVAR_INT sw5_help_message_displayed LVAR_INT sw5_skipping_cut LVAR_INT sw5_cut_flag ab_car ab_health ab_int youre_shit can_play_audio_now_time insult[7] noninsult[3] next_insult ab_count IF sw5_flag = 99 CREATE_PICKUP_WITH_AMMO COLT45 PICKUP_ONCE 20 2444.8950 -1981.5243 13.933 sw5_gun ADD_SPRITE_BLIP_FOR_CONTACT_POINT 2444.8950 -1981.5243 13.933 RADAR_SPRITE_GUN sw5_emmet_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT 2444.8950 -1981.5243 13.933 RADAR_SPRITE_GUN sw5_house_blip CREATE_CHAR PEDTYPE_GANG_GROVE SPECIAL01 2752.3408 -1948.8669 16.3125 sw5_sweet CREATE_CHAR PEDTYPE_GANG_GROVE SPECIAL01 2752.3408 -1948.8669 16.3125 sw5_sweetsgf CREATE_CHAR PEDTYPE_GANG_GROVE SPECIAL01 2752.3408 -1948.8669 16.3125 sw5_red[0] ADD_BLIP_FOR_CHAR sw5_sweet sw5_sweet_blip ADD_BLIP_FOR_CHAR sw5_sweet sw5_sweetsgf_blip ADD_BLIP_FOR_CHAR sw5_sweet sw5_red_blip1 ADD_BLIP_FOR_CHAR sw5_sweet sw5_red_blip2 ADD_BLIP_FOR_PICKUP sw5_gun sw5_emmet_marker ENDIF mission_start_hood5: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS Player1 TRUE insult[0] = 14 insult[1] = 15 insult[2] = 16 insult[3] = 17 insult[4] = 18 noninsult[0] = 21 // DO_FADE 1000 FADE_IN // REQUEST_MODEL SENTINEL // WHILE NOT HAS_MODEL_LOADED SENTINEL // WAIT 0 // ENDWHILE // CREATE_CAR SENTINEL 2516.0 -1675.0 14.0 sw5_playerscar // WARP_CHAR_INTO_CAR scplayer sw5_playerscar //VIEW_INTEGER_VARIABLE sw5_cut_flag sw5_cut_flag sw5_cut_flag = 0 SET_CHAR_RELATIONSHIP scplayer ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 sw5_mission_loop: WAIT 0 SWITCH sw5_flag CASE 0 GOSUB sw5_initialise_stuff sw5_flag = 1 BREAK CASE 1 // Mocap cut scene followed by Sweet on phone. GOSUB sw5_cutscene_1 BREAK CASE 2 //Kill the Seville gang attacking Sweet GOSUB sw5_scene1 BREAK CASE 3 //Phone call - get a car GOSUB sw5_cutscene_2 BREAK CASE 4 //Get the car GOSUB sw5_scene2 BREAK CASE 5 //Cut of Sweet coming in to player's car - Seville in cars turn up. GOSUB sw5_cutscene_3 BREAK CASE 6 //Drive back to hub GOSUB sw5_Scene3 BREAK CASE 7 //Sweet says "thanks" and then goes inside to fuck his girlfriend. GOSUB sw5_cutscene_4 BREAK CASE 8 GOTO mission_hood5_passed BREAK ENDSWITCH GOSUB sw5_fail_checks GOSUB sw5_mission_checks GOSUB sweet5_audio IF sw5_mission_fail = 1 GOTO mission_hood5_failed ENDIF GOTO sw5_mission_loop RETURN sw5_fail_checks: IF sw5_sweet_alive = 1 IF IS_CHAR_DEAD sw5_sweet sw5_mission_fail = 1 PRINT SW5_L 4000 1 ENDIF IF IS_CHAR_DEAD sw5_sweetsgf sw5_mission_fail = 1 PRINT SW5_M 4000 1 ENDIF ENDIF RETURN sw5_mission_checks: IF HAS_PICKUP_BEEN_COLLECTED emmets_gun REMOVE_BLIP sw5_emmet_blip REMOVE_BLIP sw5_emmet_marker ENDIF RETURN sw5_initialise_stuff: CLEAR_AREA sweet_carX sweet_carY sweet_carZ 5.0 TRUE SWITCH_CAR_GENERATOR gen_car7 0 REQUEST_MODEL CELLPHONE REQUEST_MODEL BFYRI REQUEST_MODEL TEC9 REQUEST_MODEL SENTINEL REQUEST_MODEL COLT45 REQUEST_MODEL GREENWOO REQUEST_MODEL FAM1 REQUEST_MODEL FAM2 LOAD_SPECIAL_CHARACTER 1 SWEET LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED CELLPHONE OR NOT HAS_MODEL_LOADED BFYRI OR NOT HAS_MODEL_LOADED TEC9 OR NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED SENTINEL WAIT 0 ENDWHILE WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_MODEL_LOADED FAM1 OR NOT HAS_MODEL_LOADED FAM2 OR NOT HAS_MODEL_LOADED GREENWOO WAIT 0 ENDWHILE REQUEST_ANIMATION SWEET REQUEST_ANIMATION GANGS // REQUEST_ANIMATION SWAT // OR NOT HAS_ANIMATION_LOADED SWAT WHILE NOT HAS_ANIMATION_LOADED SWEET OR NOT HAS_ANIMATION_LOADED GANGS WAIT 0 ENDWHILE REQUEST_CAR_RECORDING 153 REQUEST_CAR_RECORDING 154 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 153 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 154 WAIT 0 ENDWHILE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY sw5_empty_dec LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH sw5_sweet_dec LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH sw5_seville_dec SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 PEDTYPE_MISSION1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_MISSION3 CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE sw5_seville_dec EVENT_POTENTIAL_GET_RUN_OVER CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE sw5_seville_dec EVENT_DAMAGE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE sw5_seville_dec EVENT_GUN_AIMED_AT // SET_SCRIPT_LIMIT_TO_GANG_SIZE 1 sw5_target[0] = 0 sw5_target[1] = 0 sw5_target[2] = 0 sw5_target[3] = 0 sw5_target[4] = 0 sw5_target[5] = 0 nearest_range_1 = 99999.0 nearest_range_2 = 99999.0 CREATE_CAR PICADOR ryder_carX ryder_carY ryder_carZ ryder_car CHANGE_CAR_COLOUR ryder_car 84 84 SET_CAR_HEADING ryder_car 0.0 RETURN // CJ enters Sweet's house but no one is inside. // Leaves the house and gets a phone call. It's Sweet and he's pinned down. // Asks CJ to come and give him a hand taking out the Seville gang. sw5_cutscene_1: LVAR_INT dont_skip IF sw5_cut_flag > 1 IF dont_skip = 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED sw5_cut_flag = 7 sw5_skipping_cut = 1 audio_flag = 5 sw5_time = 0 ENDIF ENDIF ENDIF IF sw5_cut_flag = 0 LOAD_MISSION_TEXT SWEET5 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 SET_AREA_VISIBLE 1 LOAD_CUTSCENE SWEET5A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 //MAKE_PLAYER_GANG_DISAPPEAR TRUE ADD_BLIP_FOR_COORD 2775.7930 -1942.9087 15.6576 sw5_house_blip SET_COORD_BLIP_APPEARANCE sw5_house_blip COORD_BLIP_APPEARANCE_ENEMY // CHANGE_BLIP_COLOUR sw5_house_blip RED ADD_SPRITE_BLIP_FOR_CONTACT_POINT 2444.8950 -1981.5243 13.933 RADAR_SPRITE_EMMETGUN sw5_emmet_blip REMOVE_PICKUP emmets_gun CREATE_PICKUP_WITH_AMMO COLT45 PICKUP_ON_STREET_SLOW 16 2447.7732 -1975.6631 13.0 emmets_gun LVAR_INT sw5_emmet_marker ADD_BLIP_FOR_PICKUP emmets_gun sw5_emmet_marker CHANGE_BLIP_DISPLAY sw5_emmet_marker MARKER_ONLY REQUEST_COLLISION 2770.1157 -1915.8955 SET_CHAR_COORDINATES scplayer 2770.1157 -1915.8955 11.6510 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer LOAD_SCENE 2770.1157 -1915.8955 11.6510 SET_FIXED_CAMERA_POSITION 2770.8967 -1915.9508 12.6746 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2770.3369 -1916.3344 13.4091 JUMP_CUT SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE CREATE_CHAR PEDTYPE_MISSION3 SPECIAL01 2752.3408 -1948.8669 16.3125 sw5_sweet IF NOT IS_CHAR_DEAD sw5_sweet OPEN_SEQUENCE_TASK sw5_seq TASK_TOGGLE_DUCK -1 TRUE TASK_USE_MOBILE_PHONE -1 TRUE CLOSE_SEQUENCE_TASK sw5_seq PERFORM_SEQUENCE_TASK sw5_sweet sw5_seq CLEAR_SEQUENCE_TASK sw5_seq ENDIF // wait for the animations //sw5_time = TIMERA + 5000 //WHILE TIMERA < sw5_time // WAIT 0 //ENDWHILE // START CUTSCENE RECORDING SET_RAILTRACK_RESISTANCE_MULT 100.f // HACKING DA CUTSCENE // hide sweet and CJ, the cutscene objects will take their place IF NOT IS_CHAR_DEAD sw5_sweet SET_CHAR_VISIBLE sw5_sweet FALSE ENDIF IF NOT IS_CHAR_DEAD scplayer SET_CHAR_VISIBLE scplayer FALSE ENDIF LOAD_CUTSCENE IGSW5AA // IG_SWEET5AA WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1500 FADE_IN play_audio = 29 sw5_cut_flag = 1 sw5_time = TIMERA + 2000 ENDIF IF sw5_cut_flag = 1 IF TIMERA > sw5_time LVAR_INT sw9_seq TASK_USE_MOBILE_PHONE scplayer TRUE sw5_time = TIMERA + 2200 audio_flag = 3 sw5_cut_flag = 20 ENDIF ENDIF IF sw5_cut_flag = 20 IF TIMERA > sw5_time IF play_audio = 0 //CREATE_CHAR PEDTYPE_MISSION3 SPECIAL01 2752.3408 -1948.8669 16.3125 sw5_sweet CREATE_CAR GREENWOO 2745.5449 -1942.7405 12.5394 sw5_generatecar SET_CAR_HEADING sw5_generatecar 90.0 SET_CHAR_HEADING sw5_sweet 0.0 CREATE_CHAR PEDTYPE_MISSION3 BFYRI 2751.2817 -1948.8669 16.3125 sw5_sweetsgf SET_CHAR_HEADING sw5_sweetsgf 0.0 SET_CHAR_DECISION_MAKER sw5_sweetsgf sw5_empty_dec audio_actor[2] = sw5_sweet audio_actor[3] = sw5_sweetsgf play_audio = 1 play_audio_for = 7 sw5_cut_flag = 2 ENDIF ENDIF ENDIF IF sw5_cut_flag = 2 IF TIMERA > sw5_time //IF NOT IS_CHAR_DEAD sw5_sweet // OPEN_SEQUENCE_TASK sw5_seq // TASK_TOGGLE_DUCK -1 TRUE // TASK_USE_MOBILE_PHONE -1 TRUE // CLOSE_SEQUENCE_TASK sw5_seq // PERFORM_SEQUENCE_TASK sw5_sweet sw5_seq // CLEAR_SEQUENCE_TASK sw5_seq //ENDIF IF NOT IS_CHAR_DEAD sw5_sweetsgf OPEN_SEQUENCE_TASK sw5_seq TASK_PAUSE -1 500 TASK_PLAY_ANIM -1 DUCK_cower PED 8.0 FALSE FALSE FALSE FALSE 16000 CLOSE_SEQUENCE_TASK sw5_seq PERFORM_SEQUENCE_TASK sw5_sweetsgf sw5_seq CLEAR_SEQUENCE_TASK sw5_seq ENDIF // TASK_COWER sw5_sweetsgf CREATE_CHAR PEDTYPE_MISSION2 FAM2 2751.5149 -1973.1781 16.3051 sw5_red[0] SET_CHAR_ACCURACY sw5_red[0] 40 SET_CHAR_DECISION_MAKER sw5_red[0] sw5_empty_dec GIVE_WEAPON_TO_CHAR sw5_red[0] WEAPONTYPE_PISTOL 99999 TASK_TOGGLE_DUCK sw5_red[0] TRUE OPEN_SEQUENCE_TASK sw5_seq TASK_PAUSE -1 2500 TASK_GO_STRAIGHT_TO_COORD -1 2751.7913 -1964.0797 16.3125 PEDMOVE_WALK -2 TASK_PAUSE -1 3500 TASK_GO_STRAIGHT_TO_COORD -1 2751.7913 -1954.0797 16.3125 PEDMOVE_WALK -2 CLOSE_SEQUENCE_TASK sw5_seq PERFORM_SEQUENCE_TASK sw5_red[0] sw5_seq CLEAR_SEQUENCE_TASK sw5_seq CREATE_CHAR PEDTYPE_MISSION2 FAM1 2753.1973 -1973.9462 16.3051 sw5_red[1] SET_CHAR_ACCURACY sw5_red[1] 40 GIVE_WEAPON_TO_CHAR sw5_red[1] WEAPONTYPE_PISTOL 99999 TASK_TOGGLE_DUCK sw5_red[1] TRUE TASK_SHOOT_AT_COORD sw5_red[1] 2753.1499 -1949.6418 16.5866 -2 sw5_time = TIMERA + 2000 sw5_cut_flag = 3 ENDIF ENDIF IF sw5_cut_flag = 3 IF TIMERA > sw5_time IF play_audio = 3 // look at sweet SET_FIXED_CAMERA_POSITION 2753.7837 -1947.4662 16.4890 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2753.2551 -1948.2924 16.6835 JUMP_CUT sw5_time = TIMERA + 4000 sw5_cut_flag = 4 ENDIF ENDIF ENDIF IF sw5_cut_flag = 4 IF TIMERA > sw5_time sw5_time = TIMERA + 4000 sw5_cut_flag = 5 ENDIF ENDIF IF sw5_cut_flag = 5 // IF TIMERA > sw5_time IF play_audio = 6 //look at CJ SET_FIXED_CAMERA_POSITION 2770.8967 -1915.9508 12.6746 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2770.3369 -1916.3344 13.4091 JUMP_CUT IF NOT IS_CHAR_DEAD sw5_sweet SET_CHAR_ACCURACY sw5_sweet 100 ENDIF sw5_time = TIMERA + 4500 sw5_cut_flag = 21 ENDIF // ENDIF ENDIF IF sw5_cut_flag = 21 IF TIMERA > sw5_time TASK_USE_MOBILE_PHONE scplayer FALSE sw5_cut_flag = 6 sw5_time = TIMERA + 1000 ENDIF ENDIF IF sw5_cut_flag = 6 IF TIMERA > sw5_time SET_FIXED_CAMERA_POSITION 2756.2520 -1949.0199 17.5130 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2755.4023 -1949.5182 17.3404 JUMP_CUT IF NOT IS_CHAR_DEAD sw5_sweet CLEAR_CHAR_TASKS_IMMEDIATELY sw5_sweet TASK_TOGGLE_DUCK sw5_sweet TRUE GIVE_WEAPON_TO_CHAR sw5_sweet WEAPONTYPE_PISTOL 500 SET_CURRENT_CHAR_WEAPON sw5_sweet WEAPONTYPE_PISTOL SET_CHAR_HEADING sw5_sweet 180.0 OPEN_SEQUENCE_TASK sw5_seq TASK_PLAY_ANIM -1 Crouch_Roll_L PED 8.0 FALSE TRUE TRUE FALSE -1 IF NOT IS_CHAR_DEAD sw5_red[0] TASK_SHOOT_AT_CHAR -1 sw5_red[0] -2 ENDIF CLOSE_SEQUENCE_TASK sw5_seq PERFORM_SEQUENCE_TASK sw5_sweet sw5_seq CLEAR_SEQUENCE_TASK sw5_seq ENDIF sw5_time = TIMERA + 2500 sw5_cut_flag = 7 ENDIF ENDIF IF sw5_cut_flag = 7 IF TIMERA > sw5_time CLEAR_PRINTS dont_skip = 1 DO_FADE 1000 FADE_OUT sw5_cut_flag = 8 ENDIF ENDIF IF sw5_cut_flag = 8 IF NOT GET_FADING_STATUS // END CUTSCENE RECORDING SET_RAILTRACK_RESISTANCE_MULT 200.f WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE IF NOT IS_CHAR_DEAD sw5_sweet SET_CHAR_VISIBLE sw5_sweet TRUE ENDIF IF NOT IS_CHAR_DEAD scplayer SET_CHAR_VISIBLE scplayer TRUE ENDIF REQUEST_COLLISION 2518.7893 -1677.2203 SET_CHAR_COORDINATES scplayer 2518.4475 -1677.2240 13.4109 SET_CHAR_HEADING scplayer 90.6910 LOAD_SCENE 2510.2844 -1674.0657 14.5338 sw5_time = TIMERA + 300 sw5_cut_flag = 9 // Initialise Sweets health bar LVAR_INT sw5_check_sweet_health sw5_sweet_health_drop_time VAR_INT sw5_sweet_health sw5_sweet_health = 110 GENERATE_RANDOM_INT_IN_RANGE 4500 6000 sw5_sweet_health_drop_time sw5_sweet_health_drop_time += TIMERA DISPLAY_ONSCREEN_COUNTER_WITH_STRING sw5_sweet_health COUNTER_DISPLAY_BAR SW5_A3 //GENERATE_RANDOM_INT_IN_RANGE 2500 6000 sw5_sweet_health_drop_time //sw5_sweet_health_drop_time += TIMERA ENDIF ENDIF IF sw5_cut_flag = 9 IF TIMERA > sw5_time DO_FADE 1500 FADE_IN DELETE_CHAR sw5_sweet DELETE_CHAR sw5_red[0] DELETE_CHAR sw5_red[1] DELETE_CHAR sw5_sweetsgf SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 GET_SCRIPT_TASK_STATUS scplayer TASK_USE_MOBILE_PHONE sw5_task_status // PRINT SW5_C 6000 1 PRINT SW5_A2 6000 1 PRINT SW5_17 6000 1 SET_PLAYER_CONTROL player1 ON MAKE_PLAYER_GANG_REAPPEAR SWITCH_WIDESCREEN OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_WANTED_MULTIPLIER 0.2 sw5_skipping_cut = 1 sw5_flag = 2 ENDIF ENDIF RETURN // ***************************************************************************************** // *** CJ drives over to Sweet's place and takes out the attacking Seville gang members. *** // ***************************************************************************************** sw5_scene1: IF TIMERA > sw5_sweet_health_drop_time LVAR_INT sw5_health_drop GENERATE_RANDOM_INT_IN_RANGE 2500 6000 sw5_sweet_health_drop_time sw5_sweet_health_drop_time += TIMERA GENERATE_RANDOM_INT_IN_RANGE 2 4 sw5_health_drop sw5_sweet_health -= sw5_health_drop IF sw5_sweet_health <= 0 sw5_sweet_health = 0 PRINT SW5_L 4000 1 // sw5_mission_fail = 1 sw5_sweet_alive = 1 ENDIF ENDIF IF sw5_scene_made = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2775.7930 -1942.9087 15.6576 100.0 100.0 50.0 FALSE SET_CREATE_RANDOM_GANG_MEMBERS OFF sw5_scene_made = 1 PRINT SW5_J 4000 1 sw5_red_x[0] = 2761.5156 sw5_red_y[0] = -1972.0280 sw5_red_z[0] = 12.5459 sw5_red_model[0] = FAM1 sw5_red_x[1] = 2761.5989 sw5_red_y[1] = -1955.6726 sw5_red_z[1] = 12.5469 sw5_red_model[1] = FAM2 sw5_red_x[2] = 2768.4514 sw5_red_y[2] = -1972.6053 sw5_red_z[2] = 12.3837 sw5_red_model[2] = FAM1 //2758.3027 //-1984.9614 //12.5547 sw5_red_x[3] = 2761.551 sw5_red_y[3] = -1980.0991 sw5_red_z[3] = 12.5478 sw5_red_model[3] = FAM2 sw5_red_x[4] = 2752.1594 sw5_red_y[4] = -1979.5736 sw5_red_z[4] = 14.0469 sw5_red_model[4] = FAM2 sw5_red_x[5] = 2768.4514 sw5_red_y[5] = -1972.6053 sw5_red_z[5] = 12.3837 sw5_red_model[5] = FAM1 LVAR_INT sw5_a_car CREATE_CAR GREENWOO 2766.9231 -1974.3475 12.3783 sw5_a_car SET_CAR_HEADING sw5_a_car 4.0 sw5_i = 0 WHILE sw5_i < 5 CREATE_CHAR PEDTYPE_MISSION1 sw5_red_model[sw5_i] sw5_red_x[sw5_i] sw5_red_y[sw5_i] sw5_red_z[sw5_i] sw5_red[sw5_i] SET_CHAR_ACCURACY sw5_red[sw5_i] 65 IF sw5_i = 0 OR sw5_i = 3 GIVE_WEAPON_TO_CHAR sw5_red[sw5_i] WEAPONTYPE_TEC9 99999 ELSE GIVE_WEAPON_TO_CHAR sw5_red[sw5_i] WEAPONTYPE_PISTOL 99999 ENDIF TASK_TOGGLE_DUCK sw5_red[sw5_i] TRUE TASK_SHOOT_AT_COORD sw5_red[sw5_i] 2750.9570 -1968.0157 17.9291 -2 SET_CHAR_KINDA_STAY_IN_SAME_PLACE sw5_red[sw5_i] TRUE sw5_i ++ ENDWHILE // EXTEND_ROUTE 2752.1941 -1979.4746 14.0469 // EXTEND_ROUTE 2752.0281 -1974.9559 16.3125 // EXTEND_ROUTE 2753.3323 -1964.8541 16.3125 ADD_BLIP_FOR_CHAR sw5_red[0] sw5_red_blip[0] ADD_BLIP_FOR_CHAR sw5_red[1] sw5_red_blip[1] ADD_BLIP_FOR_CHAR sw5_red[2] sw5_red_blip[2] ADD_BLIP_FOR_CHAR sw5_red[3] sw5_red_blip[3] ADD_BLIP_FOR_CHAR sw5_red[4] sw5_red_blip[4] // ADD_BLIP_FOR_CHAR sw5_red[5] sw5_red_blip[5] REMOVE_BLIP sw5_house_blip SET_CHAR_DECISION_MAKER sw5_red[0] sw5_seville_dec SET_CHAR_DECISION_MAKER sw5_red[1] sw5_seville_dec SET_CHAR_DECISION_MAKER sw5_red[2] sw5_seville_dec SET_CHAR_DECISION_MAKER sw5_red[3] sw5_seville_dec SET_CHAR_DECISION_MAKER sw5_red[4] sw5_seville_dec /// SET_CHAR_DECISION_MAKER sw5_red[5] sw5_seville_dec SET_CHAR_IS_TARGET_PRIORITY sw5_red[0] TRUE SET_CHAR_IS_TARGET_PRIORITY sw5_red[1] TRUE SET_CHAR_IS_TARGET_PRIORITY sw5_red[2] TRUE SET_CHAR_IS_TARGET_PRIORITY sw5_red[3] TRUE SET_CHAR_IS_TARGET_PRIORITY sw5_red[4] TRUE // SET_CHAR_IS_TARGET_PRIORITY sw5_red[5] TRUE SWITCH_ROADS_OFF 2793.8140 -1987.9346 15.3045 2754.3240 -1900.3694 9.8752 SWITCH_PED_ROADS_OFF 2793.8140 -1987.9346 15.3045 2754.3240 -1900.3694 9.8752 ENDIF ENDIF IF sw5_scene_made = 1 GOSUB sw5_ped_actions IF sw5_help_message_displayed = 0 IF IS_CHAR_IN_AREA_3D scplayer 2782.6931 -1921.1246 11.7984 2746.0984 -1993.9053 16.9599 FALSE IF NOT IS_CHAR_IN_ANY_CAR scplayer sw5_help_message_displayed = 1 PRINT_HELP_FOREVER SW5HID // Use low walls and objects for cover. Press ~m~~widget_crouch~ to crouch. //PRINT_HELP SW5_19 ENDIF ENDIF ENDIF sw5_i = 0 sw5_dead_reds = 0 WHILE sw5_i < 5 IF IS_CHAR_DEAD sw5_red[sw5_i] REMOVE_BLIP sw5_red_blip[sw5_i] sw5_dead_reds ++ ELSE SET_CHAR_ACCURACY sw5_red[sw5_i] new_accuracy SET_CHAR_SHOOT_RATE sw5_red[sw5_i] new_accuracy ENDIF sw5_i ++ ENDWHILE LVAR_INT new_accuracy new_accuracy = sw5_dead_reds * 6 new_accuracy += 60 IF sw5_dead_reds = 5 // Skip to phone call from Sweet. sw5_cut_flag = 0 sw5_enter_cut = 0 sw5_button_pressed = 0 sw5_can_skip_cut = 0 sw5_flag = 3 SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 ENDIF ENDIF RETURN // ***************************************************************************************** // CJ gets a call from Sweet telling him to get a car outside the flat for him and his bird. // ***************************************************************************************** sw5_cutscene_2: // IF sw5_can_skip_cut = 1 // IF sw5_enter_cut = 0 // sw5_enter_cut = 1 // IF IS_BUTTON_PRESSED PAD1 CROSS // sw5_button_pressed = 1 // ENDIF // ENDIF // // IF IS_BUTTON_PRESSED PAD1 CROSS // IF sw5_button_pressed = 0 // sw5_cut_flag = 4 // sw5_time = 0 // ENDIF // ELSE // IF sw5_button_pressed = 1 // sw5_button_pressed = 0 // ENDIF // ENDIF // ENDIF IF sw5_cut_flag = 0 //WAit 1.5 secs for phone to ring sw5_time = TIMERA + 1500 sw5_cut_flag = 1 ENDIF IF sw5_cut_flag = 1 IF TIMERA > sw5_time play_audio = 29 CLEAR_ONSCREEN_COUNTER sw5_sweet_health sw5_time = TIMERA + 2500 sw5_cut_flag = 2 ENDIF ENDIF IF sw5_cut_flag = 2 IF TIMERA > sw5_time play_audio = 29 sw5_time = TIMERA + 2500 sw5_cut_flag = 3 ENDIF ENDIF IF sw5_cut_flag = 3 IF TIMERA > sw5_time IF NOT IS_CHAR_IN_AIR scplayer AND NOT IS_CHAR_GETTING_IN_TO_A_CAR scplayer LVAR_INT phone_call_in_Car phone_call_in_Car = 1 TASK_USE_MOBILE_PHONE scplayer TRUE sw5_time = TIMERA + 2500 sw5_cut_flag = 4 ENDIF ENDIF ENDIF IF sw5_cut_flag = 4 IF TIMERA > sw5_time sw5_cut_flag = 5 play_audio = 8 play_audio_for = 2 ENDIF ENDIF IF sw5_cut_flag = 5 IF play_audio = 0 TASK_USE_MOBILE_PHONE scplayer FALSE // audio_flag = 5 // sw5_can_skip_cut = 0 // SET_CHAR_COORDINATES_NO_OFFSET scplayer x y z // SET_CHAR_HEADING scplayer sw5_heading ADD_BLIP_FOR_COORD 2764.2725 -1979.4939 12.5394 sw5_house_blip SWITCH_ROADS_BACK_TO_ORIGINAL 2793.8140 -1987.9346 15.3045 2754.3240 -1900.3694 9.8752 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2793.8140 -1987.9346 15.3045 2754.3240 -1900.3694 9.8752 // SWITCH_WIDESCREEN OFF // SET_PLAYER_CONTROL player1 ON // SET_CAMERA_BEHIND_PLAYER // RESTORE_CAMERA_JUMPCUT // MAKE_PLAYER_GANG_REAPPEAR // SET_EVERYONE_IGNORE_PLAYER Player1 OFF PRINT SW5_14 5000 1 sw5_flag = 4 ENDIF ENDIF // // IF sw5_cut_flag = 5 // IF TIMERA > sw5_time // IF NOT IS_CHAR_IN_AIR scplayer // AND NOT IS_CHAR_GETTING_IN_TO_A_CAR scplayer // IF IS_CHAR_IN_ANY_CAR scplayer // play_audio = 8 // play_audio_for = 2 // ENDI // // // CLEAR_ONSCREEN_COUNTER sw5_sweet_health // // //// SET_PLAYER_CONTROL player1 OFF // CLEAR_CHAR_TASKS_IMMEDIATELY scplayer // SET_PLAYER_CONTROL player1 OFF // // SWITCH_WIDESCREEN ON // SET_EVERYONE_IGNORE_PLAYER Player1 ON // // LVAR_FLOAT sw5_heading // // GET_CHAR_COORDINATES scplayer x y z // GET_CHAR_HEADING scplayer sw5_heading // SET_FIXED_CAMERA_POSITION 2752.3643 -1947.8760 17.4632 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 2753.1821 -1947.4803 17.8808 JUMP_CUT // SET_CHAR_HEADING scplayer 154.6564 // SET_CHAR_COORDINATES scplayer 2752.8809 -1947.0312 16.3203 // // sw5_time = TIMERA + 100 // sw5_cut_flag = 1 // ENDIF // ENDIF // // IF sw5_cut_flag = 1 // IF TIMERA > sw5_time // PRINT SW5_P 1500 1 // sw5_time = TIMERA + 500 // sw5_cut_flag = 2 // ENDIF // ENDIF // // IF sw5_cut_flag = 2 // IF TIMERA > sw5_time // sw5_can_skip_cut = 1 // TASK_USE_MOBILE_PHONE scplayer TRUE // sw5_time = TIMERA + 1500 // sw5_cut_flag = 3 // ENDIF // ENDIF // // IF sw5_cut_flag = 3 // IF TIMERA > sw5_time // CLEAR_PRINTS // play_audio = 8 // play_audio_for = 2 // sw5_time = TIMERA + 5000 // sw5_cut_flag = 4 // ENDIF // ENDIF // // IF sw5_cut_flag = 4 // IF TIMERA > sw5_time // TASK_USE_MOBILE_PHONE scplayer FALSE // audio_flag = 5 // sw5_can_skip_cut = 0 // sw5_cut_flag = 10 // // SET_CHAR_COORDINATES_NO_OFFSET scplayer x y z // SET_CHAR_HEADING scplayer sw5_heading // ADD_BLIP_FOR_COORD 2764.2725 -1979.4939 12.5394 sw5_house_blip // SWITCH_ROADS_BACK_TO_ORIGINAL 2793.8140 -1987.9346 15.3045 2754.3240 -1900.3694 9.8752 // SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2793.8140 -1987.9346 15.3045 2754.3240 -1900.3694 9.8752 // SWITCH_WIDESCREEN OFF // SET_PLAYER_CONTROL player1 ON // SET_CAMERA_BEHIND_PLAYER // RESTORE_CAMERA_JUMPCUT // MAKE_PLAYER_GANG_REAPPEAR // SET_EVERYONE_IGNORE_PLAYER Player1 OFF // ENDIF // ENDIF // // IF sw5_cut_flag = 10 // IF audio_flag = 1 // PRINT SW5_14 5000 1 // sw5_flag = 4 // ENDIF // ENDIF RETURN // ***************************************************************************************** // ******************** Go and get a car to pick up sweet and his bird.********************* // ***************************************************************************************** sw5_scene2: IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2764.2725 -1979.4939 12.5394 4.0 4.0 4.0 TRUE IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer sw5_playerscar IF NOT IS_CAR_DEAD sw5_playerscar GET_MAXIMUM_NUMBER_OF_PASSENGERS sw5_playerscar sw5_temp IF sw5_temp < 2 IF sw5_getNewcar = 0 PRINT_NOW SW5_G 5000 1 //You need a car with at least two passenger seats. sw5_getNewCar = 1 ENDIF ELSE GET_VEHICLE_CLASS sw5_playerscar sw5_playerscar_type GET_CAR_MODEL sw5_playerscar sw5_playerscar_model IF sw5_playerscar_type = NORMAL_CAR OR sw5_playerscar_type = POOR_FAMILY_CAR OR sw5_playerscar_type = RICH_FAMILY_CAR OR sw5_playerscar_type = EXECUTIVE_CAR OR sw5_playerscar_model = copcarla OR sw5_playerscar_model = TAXI SET_PLAYER_CONTROL player1 OFF TASK_CAR_TEMP_ACTION scplayer sw5_playerscar TEMPACT_HANDBRAKESTRAIGHT 2000000 DO_FADE 800 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE sw5_flag = 5 sw5_cut_flag = 0 REMOVE_BLIP sw5_house_blip ELSE PRINT_NOW sw5_16 1000 1 ENDIF ENDIF ENDIF ENDIF ENDIF RETURN // ***************************************************************************************** // *********** Sweet and his bird enter player's car, but more Sevilles turn up in cars **** // ***************************************************************************************** sw5_cutscene_3: IF sw5_enter_cut = 0 sw5_enter_cut = 1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED sw5_button_pressed = 1 ENDIF ENDIF IF IS_SKIP_CUTSCENE_BUTTON_PRESSED IF sw5_button_pressed = 0 IF NOT IS_CHAR_DEAD sw5_sweet AND NOT IS_CHAR_DEAD sw5_sweetsgf IF NOT sw5_cut_flag = 0 AND NOT sw5_cut_flag = 5 sw5_cut_flag = 4 sw5_time = 0 sw5_button_pressed = 1 audio_flag = 5 ENDIF ENDIF ENDIF ELSE IF sw5_button_pressed = 1 sw5_button_pressed = 0 ENDIF ENDIF IF sw5_cut_flag = 5 IF TIMERA > sw5_time DO_FADE 800 FADE_IN // DO_FADE // play_audio = 10 // play_Audio_delay = TIMERA + 500 sw5_time = TIMERA + 3000 sw5_cut_flag = 1 ENDIF ENDIF IF sw5_cut_flag = 0 CLEAR_PRINTS //MAKE_PLAYER_GANG_DISAPPEAR TRUE CLEAR_AREA_OF_CARS 2746.5037 -2001.6106 10.7750 2789.5623 -1927.1542 21.6330 SWITCH_ROADS_OFF 2793.8140 -1987.9346 15.3045 2754.3240 -1900.3694 9.8752 SWITCH_PED_ROADS_OFF 2793.8140 -1987.9346 15.3045 2754.3240 -1900.3694 9.8752 // SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE sw5_seville_dec EVENT_ACQUAINTANCE_PED_HATE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE sw5_seville_dec EVENT_ACQUAINTANCE_PED_HATE TASK_SIMPLE_GANG_DRIVEBY 0.0 100.0 0.0 0.0 TRUE FALSE CREATE_CHAR PEDTYPE_MISSION3 SPECIAL01 2752.3408 -1948.8669 16.3125 sw5_sweet CREATE_CHAR PEDTYPE_MISSION3 BFYRI 2751.2817 -1948.8669 16.3125 sw5_sweetsgf audio_actor[2] = sw5_sweet audio_actor[3] = sw5_sweetsgf SET_CHAR_SUFFERS_CRITICAL_HITS sw5_sweet FALSE SET_CHAR_SUFFERS_CRITICAL_HITS sw5_sweetsgf FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER sw5_sweet FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER sw5_sweetsgf FALSE CREATE_CAR SENTINEL 2766.6650 -1901.9430 10.0050 sw5_ballascar[0] CREATE_CAR SENTINEL 2772.6384 -1903.1267 10.1479 sw5_ballascar[1] SET_CAR_HEADING sw5_ballascar[0] 180.0 SET_CAR_HEADING sw5_ballascar[1] 180.0 SET_CAR_CAN_GO_AGAINST_TRAFFIC sw5_ballascar[0] TRUE SET_CAR_CAN_GO_AGAINST_TRAFFIC sw5_ballascar[1] TRUE START_PLAYBACK_RECORDED_CAR sw5_ballascar[0] 153 START_PLAYBACK_RECORDED_CAR sw5_ballascar[1] 154 CREATE_CHAR_INSIDE_CAR sw5_ballascar[1] PEDTYPE_MISSION1 FAM1 sw5_reddriver[1] CREATE_CHAR_INSIDE_CAR sw5_ballascar[0] PEDTYPE_MISSION1 FAM1 sw5_reddriver[0] // CREATE_CHAR_AS_PASSENGER sw5_ballascar[0] PEDTYPE_MISSION1 FAM2 0 sw5_redpas[0] // CREATE_CHAR_AS_PASSENGER sw5_ballascar[1] PEDTYPE_MISSION1 FAM2 0 sw5_redpas[1] SET_CHAR_DECISION_MAKER sw5_reddriver[0] sw5_seville_Dec SET_CHAR_DECISION_MAKER sw5_reddriver[1] sw5_seville_Dec // SET_CHAR_DECISION_MAKER sw5_redpas[0] sw5_seville_Dec // SET_CHAR_DECISION_MAKER sw5_redpas[1] sw5_seville_Dec // SET_CHAR_SHOOT_RATE sw5_redpas[0] 20 // SET_CHAR_SHOOT_RATE sw5_redpas[1] 20 GIVE_WEAPON_TO_CHAR sw5_reddriver[0] WEAPONTYPE_PISTOL 99999 GIVE_WEAPON_TO_CHAR sw5_reddriver[1] WEAPONTYPE_PISTOL 99999 // GIVE_WEAPON_TO_CHAR sw5_redpas[0] WEAPONTYPE_PISTOL 99999 // GIVE_WEAPON_TO_CHAR sw5_redpas[1] WEAPONTYPE_PISTOL 99999 SET_PLAYBACK_SPEED sw5_ballascar[0] 0.0 SET_PLAYBACK_SPEED sw5_ballascar[1] 0.0 IF NOT IS_CAR_DEAD sw5_playerscar SET_CAR_COORDINATES sw5_playerscar 2763.9600 -1978.8977 12.5394 SET_CAR_HEADING sw5_playerscar 0.0 // make sure seats are empty LVAR_INT sw5_some_guya IF NOT IS_CAR_PASSENGER_SEAT_FREE sw5_playerscar 0 GET_CHAR_IN_CAR_PASSENGER_SEAT sw5_playerscar 0 sw5_some_guya DELETE_CHAR sw5_some_guya ENDIF IF NOT IS_CAR_PASSENGER_SEAT_FREE sw5_playerscar 1 GET_CHAR_IN_CAR_PASSENGER_SEAT sw5_playerscar 1 sw5_some_guya DELETE_CHAR sw5_some_guya ENDIF ENDIF SET_FIXED_CAMERA_POSITION 2756.2314 -1949.6669 18.0543 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2755.7507 -1950.5349 17.9303 JUMP_CUT FLUSH_ROUTE EXTEND_ROUTE 2752.4023 -1974.0765 16.3125 SET_CHAR_COORDINATES sw5_sweetsgf 2752.3115 -1952.8958 16.3051 SET_CHAR_HEADING sw5_sweetsgf 180.0 TASK_FOLLOW_POINT_ROUTE sw5_sweetsgf PEDMOVE_RUN FOLLOW_ROUTE_ONCE SET_CHAR_COORDINATES sw5_sweet 2752.3950 -1950.6991 16.3125 SET_CHAR_HEADING sw5_sweet 180.0 OPEN_SEQUENCE_TASK sw5_seq TASK_PAUSE -1 1000 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE CLOSE_SEQUENCE_TASK sw5_seq PERFORM_SEQUENCE_TASK sw5_sweet sw5_seq CLEAR_SEQUENCE_TASK sw5_seq sw5_time = TIMERA + 500 sw5_cut_flag = 5 ENDIF IF sw5_cut_flag = 1 IF TIMERA > sw5_time SET_FIXED_CAMERA_POSITION 2764.6011 -1986.6956 15.0210 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2764.3198 -1985.7511 14.8511 JUMP_CUT IF NOT IS_CAR_DEAD sw5_playerscar IF NOT IS_CHAR_DEAD sw5_sweetsgf SET_CHAR_COORDINATES sw5_sweetsgf 2760.3577 -1979.5011 12.5394 SET_CHAR_HEADING sw5_sweetsgf 330.0 TASK_ENTER_CAR_AS_PASSENGER sw5_sweetsgf sw5_playerscar 5000 1 ENDIF IF NOT IS_CHAR_DEAD sw5_sweet SET_CHAR_COORDINATES sw5_sweet 2767.2241 -1981.5243 12.3810 SET_CHAR_HEADING sw5_sweet 0.0 TASK_ENTER_CAR_AS_PASSENGER sw5_sweet sw5_playerscar 5000 0 ENDIF ENDIF IF NOT IS_CAR_DEAD sw5_ballascar[1] SET_PLAYBACK_SPEED sw5_ballascar[1] 1.0 sw5_chase_car_created = 1 ENDIF sw5_time = TIMERA + 500 sw5_cut_flag = 2 ENDIF ENDIF IF sw5_cut_flag = 2 IF TIMERA > sw5_time // play_audio_for = 2 IF NOT IS_CAR_DEAD sw5_ballascar[0] SET_PLAYBACK_SPEED sw5_ballascar[0] 1.0 sw5_chase_car_created = 1 ENDIF sw5_time = TIMERA + 2000 sw5_cut_flag = 3 ENDIF ENDIF IF sw5_cut_flag = 3 IF TIMERA > sw5_time play_audio = 12 sw5_time = TIMERA + 2000 sw5_cut_flag = 4 ENDIF ENDIF IF sw5_cut_flag = 4 IF car_one_attack = 0 IF NOT IS_CAR_DEAD sw5_ballascar[0] IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR sw5_ballascar[0] SET_CAR_MISSION sw5_ballascar[0] MISSION_BLOCKPLAYER_CLOSE SET_CAR_CRUISE_SPEED sw5_ballascar[0] 60.0 SET_CAR_HEALTH sw5_ballascar[0] 2500 SET_VEHICLE_AIR_RESISTANCE_MULTIPLIER sw5_ballascar[0] 0.1 car_one_attack = 1 ENDIF ENDIF ENDIF IF car_two_attack = 0 IF NOT IS_CAR_DEAD sw5_ballascar[1] IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR sw5_ballascar[1] SET_CAR_MISSION sw5_ballascar[1] MISSION_BLOCKPLAYER_CLOSE SET_CAR_CRUISE_SPEED sw5_ballascar[1] 60.0 SET_CAR_HEALTH sw5_ballascar[1] 2500 SET_VEHICLE_AIR_RESISTANCE_MULTIPLIER sw5_ballascar[1] 0.1 car_two_attack = 1 ENDIF ENDIF ENDIF LVAR_INT car_one_attack car_two_attack IF TIMERA > sw5_time IF play_audio = 0 sw5_chase_car_created = 1 SWITCH_ROADS_BACK_TO_ORIGINAL 2793.8140 -1987.9346 15.3045 2754.3240 -1900.3694 9.8752 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2793.8140 -1987.9346 15.3045 2754.3240 -1900.3694 9.8752 IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer sw5_playerscar SET_VEHICLE_AIR_RESISTANCE_MULTIPLIER sw5_playerscar 5.0 ENDIF IF sw5_button_pressed = 1 IF NOT IS_CAR_DEAD sw5_ballascar[0] IF IS_PLAYBACK_GOING_ON_FOR_CAR sw5_ballascar[0] SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_CAR sw5_ballascar[0] ENDIF ENDIF IF NOT IS_CAR_DEAD sw5_ballascar[1] IF IS_PLAYBACK_GOING_ON_FOR_CAR sw5_ballascar[1] SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_CAR sw5_ballascar[1] ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD sw5_ballascar[0] AND NOT IS_CAR_DEAD sw5_ballascar[1] SET_CAR_MISSION sw5_ballascar[0] MISSION_BLOCKPLAYER_CLOSE SET_CAR_MISSION sw5_ballascar[1] MISSION_RAMPLAYER_CLOSE SET_CAR_CRUISE_SPEED sw5_ballascar[0] 60.0 SET_CAR_CRUISE_SPEED sw5_ballascar[1] 60.0 SET_CAR_HEALTH sw5_ballascar[0] 2500 SET_CAR_HEALTH sw5_ballascar[1] 2500 SET_VEHICLE_AIR_RESISTANCE_MULTIPLIER sw5_ballascar[0] 0.1 SET_VEHICLE_AIR_RESISTANCE_MULTIPLIER sw5_ballascar[1] 0.1 ENDIF ADD_BLIP_FOR_COORD 2509.0618 -1672.5270 12.3860 sw5_finish_blip SET_BLIP_AS_FRIENDLY sw5_finish_blip TRUE IF NOT IS_CHAR_DEAD sw5_sweet AND NOT IS_CAR_DEAD sw5_playerscar AND NOT IS_CHAR_DEAD sw5_sweetsgf SET_GROUP_MEMBER Players_group sw5_sweet SET_GROUP_MEMBER Players_group sw5_sweetsgf LISTEN_TO_PLAYER_GROUP_COMMANDS sw5_sweet FALSE LISTEN_TO_PLAYER_GROUP_COMMANDS sw5_sweetsgf FALSE GIVE_WEAPON_TO_CHAR sw5_sweet WEAPONTYPE_PISTOL 9999 IF NOT IS_CHAR_IN_CAR sw5_sweet sw5_playerscar CLEAR_CHAR_TASKS_IMMEDIATELY sw5_sweet WARP_CHAR_INTO_CAR_AS_PASSENGER sw5_sweet sw5_playerscar 0 ENDIF IF NOT IS_CHAR_IN_CAR sw5_sweetsgf sw5_playerscar CLEAR_CHAR_TASKS_IMMEDIATELY sw5_sweetsgf WARP_CHAR_INTO_CAR_AS_PASSENGER sw5_sweetsgf sw5_playerscar 1 ENDIF ENDIF IF NOT IS_CAR_DEAD sw5_ballascar[1] AND NOT IS_CHAR_DEAD sw5_reddriver[1] OPEN_SEQUENCE_TASK sw5_seq TASK_CAR_TEMP_ACTION -1 sw5_ballascar[1] TEMPACT_WAIT 1500 TASK_CAR_TEMP_ACTION -1 sw5_ballascar[1] TEMPACT_REVERSE_RIGHT 1000 CLOSE_SEQUENCE_TASK sw5_seq PERFORM_SEQUENCE_TASK sw5_reddriver[1] sw5_seq CLEAR_SEQUENCE_TASK sw5_seq ENDIF IF NOT IS_CAR_DEAD sw5_ballascar[0] AND NOT IS_CHAR_DEAD sw5_reddriver[0] TASK_CAR_TEMP_ACTION sw5_reddriver[0] sw5_ballascar[0] TEMPACT_WAIT 1500 ENDIF SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT CLEAR_PRINTS PRINT SW5_I 5000 1 sw5_flag = 6 sw5_sweet_alive = 1 can_play_audio_now_time = TIMERA + 3000 next_insult = 0 MAKE_PLAYER_GANG_REAPPEAR ENDIF ENDIF ENDIF RETURN // ***************************************************************************************** // ********** Drive back to the hub and avoid the attacking Seville cars if poss *********** // ***************************************************************************************** sw5_scene3: IF youre_shit = 0 IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer ab_car GET_CAR_HEALTH ab_car ab_health IF ab_health < 900 IF play_audio = 0 IF TIMERA > can_play_audio_now_time play_audio = 13 youre_shit = 1 can_play_audio_now_time = TIMERA + 6000 ENDIF ENDIF ENDIF ENDIF ENDIF IF TIMERA > can_play_audio_now_time IF NOT IS_CAR_DEAD sw5_ballascar[0] AND NOT IS_CAR_DEAD sw5_ballascar[1] IF LOCATE_CHAR_IN_CAR_CAR_3D scplayer sw5_ballascar[0] 20.0 20.0 10.0 FALSE OR LOCATE_CHAR_IN_CAR_CAR_3D scplayer sw5_ballascar[1] 20.0 20.0 10.0 FALSE GENERATE_RANDOM_INT_IN_RANGE 0 5 ab_int ab_count = 0 WHILE insult[ab_int] = 0 ab_int ++ ab_count ++ IF ab_int > 4 ab_int = 0 ENDIF IF ab_count > 4 GOTO exit_this_loop ENDIF ENDWHILE play_audio = insult[ab_int] insult[ab_int] = 0 exit_this_loop: can_play_audio_now_time = TIMERA + 7500 ELSE GENERATE_RANDOM_INT_IN_RANGE 0 1 ab_int ab_count = 0 WHILE noninsult[ab_int] = 0 ab_int ++ ab_count ++ IF ab_int > 1 ab_int = 0 ENDIF IF ab_count > 2 GOTO exit_this_loopb ENDIF ENDWHILE play_audio = noninsult[ab_int] noninsult[ab_int] = 0 can_play_audio_now_time = TIMERA + 7500 ENDIF ELSE GENERATE_RANDOM_INT_IN_RANGE 0 2 ab_int ab_count = 0 WHILE noninsult[ab_int] = 0 ab_int ++ ab_count ++ IF ab_int > 1 ab_int = 0 ENDIF IF ab_count > 2 GOTO exit_this_loopb ENDIF ENDWHILE play_audio = noninsult[ab_int] noninsult[ab_int] = 0 exit_this_loopb: can_play_audio_now_time = TIMERA + 7500 ENDIF ENDIF IF NOT IS_CHAR_DEAD sw5_sweet IF NOT IS_GROUP_MEMBER sw5_sweet Players_group IF sw5_sweet_lost = 0 sw5_sweet_lost = 1 PRINT sw5_T 4000 1 IF NOT DOES_BLIP_EXIST sw5_sweet_blip ADD_BLIP_FOR_CHAR sw5_sweet sw5_sweet_blip SET_BLIP_AS_FRIENDLY sw5_sweet_blip TRUE ENDIF REMOVE_BLIP sw5_finish_blip ENDIF IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sw5_sweet 6.0 6.0 FALSE AND sw5_sweet_lost = 1 sw5_sweet_lost = 0 SET_GROUP_MEMBER Players_group sw5_sweet LISTEN_TO_PLAYER_GROUP_COMMANDS sw5_sweet FALSE REMOVE_BLIP sw5_sweet_blip IF sw5_sweetsgf_lost = 0 ADD_BLIP_FOR_COORD 2509.0618 -1672.5270 12.3860 sw5_finish_blip ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD sw5_sweetsgf IF NOT IS_GROUP_MEMBER sw5_sweetsgf Players_group IF sw5_sweetsgf_lost = 0 sw5_sweetsgf_lost = 1 PRINT sw5_U 4000 1 IF NOT DOES_BLIP_EXIST sw5_sweetsgf_blip ADD_BLIP_FOR_CHAR sw5_sweetsgf sw5_sweetsgf_blip SET_BLIP_AS_FRIENDLY sw5_sweetsgf_blip TRUE ENDIF REMOVE_BLIP sw5_finish_blip ENDIF IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sw5_sweetsgf 6.0 6.0 FALSE AND sw5_sweetsgf_lost = 1 sw5_sweetsgf_lost = 0 SET_GROUP_MEMBER Players_group sw5_sweetsgf LISTEN_TO_PLAYER_GROUP_COMMANDS sw5_sweetsgf FALSE REMOVE_BLIP sw5_sweetsgf_blip IF sw5_sweet_lost = 0 ADD_BLIP_FOR_COORD 2509.0618 -1672.5270 12.3860 sw5_finish_blip SET_BLIP_AS_FRIENDLY sw5_finish_blip TRUE ENDIF ENDIF ENDIF ENDIF IF sw5_chase_car_created = 1 IF NOT IS_CAR_DEAD sw5_ballascar[1] AND NOT IS_CHAR_DEAD sw5_reddriver[1] IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer sw5_reddriver[1] 50.0 50.0 20.0 FALSE GET_CHAR_COORDINATES scplayer sw5_x sw5_y sw5_z GET_CHAR_HEADING scplayer sw5_h sw5_chase_car_created = 2 sw5_chase_timer = TIMERA + 800 ENDIF ENDIF ENDIF IF sw5_chase_car_created = 2 AND sw5_chasing_cars_leave = 0 IF TIMERA > sw5_chase_timer GET_NTH_CLOSEST_CAR_NODE player_x player_y player_z 2 sw5_newx sw5_newY sw5_newz IF NOT IS_POINT_ON_SCREEN sw5_x sw5_y sw5_z 8.0 IF NOT LOCATE_STOPPED_CHAR_ANY_MEANS_3D scplayer sw5_newx sw5_newY sw5_newz 10.0 10.0 10.0 FALSE IF NOT IS_CAR_DEAD sw5_ballascar[1] AND NOT IS_CHAR_DEAD sw5_reddriver[1] IF NOT IS_CAR_UPSIDEDOWN sw5_ballascar[1] IF IS_CHAR_IN_CAR sw5_reddriver[1] sw5_ballascar[1] SET_CAR_COORDINATES sw5_ballascar[1] sw5_x sw5_y sw5_z SET_CAR_HEADING sw5_ballascar[1] sw5_h SET_CAR_FORWARD_SPEED sw5_ballascar[1] 25.0 sw5_chase_car_created = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD sw5_sweet AND NOT IS_CHAR_DEAD sw5_sweetsgf IF sw5_chasing_cars_leave = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2509.0618 -1672.5270 12.3860 63.0 63.0 60.0 FALSE sw5_chasing_cars_leave = 1 IF NOT IS_CAR_DEAD sw5_ballascar[0] SET_CAR_MISSION sw5_ballascar[0] MISSION_CRUISE SET_CAR_CRUISE_SPEED sw5_ballascar[0] 20.0 MARK_CAR_AS_NO_LONGER_NEEDED sw5_ballascar[0] MARK_CHAR_AS_NO_LONGER_NEEDED sw5_reddriver[0] ENDIF IF NOT IS_CAR_DEAD sw5_ballascar[1] SET_CAR_MISSION sw5_ballascar[1] MISSION_CRUISE SET_CAR_CRUISE_SPEED sw5_ballascar[1] 20.0 MARK_CAR_AS_NO_LONGER_NEEDED sw5_ballascar[1] MARK_CHAR_AS_NO_LONGER_NEEDED sw5_reddriver[1] ENDIF ENDIF ENDIF IF sw5_sweetsgf_lost = 0 AND sw5_sweet_lost = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2509.0618 -1672.5270 12.3860 4.0 4.0 4.0 TRUE IF LOCATE_CHAR_ANY_MEANS_3D sw5_sweet 2509.0618 -1672.5270 12.3860 8.0 8.0 4.0 FALSE AND LOCATE_CHAR_ANY_MEANS_3D sw5_sweetsgf 2509.0618 -1672.5270 12.3860 8.0 8.0 4.0 FALSE IF IS_CHAR_IN_ANY_CAR scplayer SET_PLAYER_CONTROL player1 OFF STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF // Mission passed - view final cut scene sw5_flag = 7 sw5_cut_flag = 0 ENDIF ENDIF ENDIF ENDIF RETURN // ***************************************************************************************** // ***** Sweet thanks CJ for his help, then enters the house to shag his dirty whore ******* // ***************************************************************************************** sw5_cutscene_4: IF sw5_cut_flag = 0 sw5_sweet_alive = 0 //MAKE_PLAYER_GANG_DISAPPEAR TRUE sw5_time = TIMERA + 600 sw5_cut_flag = 12 ENDIF IF sw5_cut_flag = 12 IF TIMERA > sw5_time IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer sw5_playerscar GET_CAR_MODEL sw5_playerscar sw5_car_model ENDIF IF NOT IS_CHAR_DEAD sw5_sweet SET_CHAR_PROOFS sw5_sweet TRUE TRUE TRUE TRUE TRUE ENDIF IF NOT IS_CHAR_DEAD sw5_sweetsgf SET_CHAR_PROOFS sw5_sweetsgf TRUE TRUE TRUE TRUE TRUE ENDIF SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON CLEAR_AREA_OF_CARS 2472.1021 -1646.1813 19.6421 2517.3831 -1691.2318 9.4098 CLEAR_AREA_OF_CHARS 2472.1021 -1646.1813 19.6421 2517.3831 -1691.2318 9.4098 IF NOT IS_CAR_DEAD sw5_ballascar[0] IF NOT IS_CHAR_IN_CAR scplayer sw5_ballascar[0] DELETE_CAR sw5_ballascar[0] ENDIF ENDIF IF NOT IS_CAR_DEAD sw5_ballascar[1] IF NOT IS_CHAR_IN_CAR scplayer sw5_ballascar[1] DELETE_CAR sw5_ballascar[1] ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer IF NOT IS_CAR_DEAD sw5_playerscar TASK_LEAVE_ANY_CAR scplayer SET_CAR_COORDINATES sw5_playerscar 2507.7087 -1672.1918 13.458 SET_CAR_HEADING sw5_playerscar 340.0 ENDIF ENDIF SET_FIXED_CAMERA_POSITION 2514.2402 -1679.2682 14.5054 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2513.6494 -1678.4825 14.3221 JUMP_CUT IF NOT IS_CHAR_DEAD sw5_sweetsgf GET_CAR_CHAR_IS_USING sw5_sweetsgf car IF car = -1 SET_CHAR_COORDINATES sw5_sweetsgf 2509.8210 -1675.8154 12.5469 SET_CHAR_HEADING sw5_sweetsgf 337.0 TASK_GO_STRAIGHT_TO_COORD sw5_sweetsgf 2512.2295 -1672.7843 12.4531 PEDMOVE_WALK -2 ENDIF ENDIF IF NOT IS_CHAR_DEAD sw5_sweet GET_CAR_CHAR_IS_USING sw5_sweet car IF car = -1 SET_CHAR_COORDINATES sw5_sweet 2508.8210 -1675.8154 12.5469 SET_CHAR_HEADING sw5_sweet 337.0 TASK_GO_STRAIGHT_TO_COORD sw5_sweet 2511.2295 -1672.7843 12.4531 PEDMOVE_WALK -2 ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer sw5_time = TIMERA + 300 sw5_cut_flag = 10 ELSE sw5_cut_flag = 2 ENDIF ENDIF ENDIF IF sw5_cut_flag = 10 IF TIMERA > sw5_time IF NOT IS_CHAR_DEAD sw5_sweetsgf GET_CAR_CHAR_IS_USING sw5_sweetsgf car IF NOT car = -1 TASK_LEAVE_ANY_CAR sw5_sweetsgf ENDIF sw5_time = TIMERA + 400 sw5_cut_flag = 11 ENDIF ENDIF ENDIF IF sw5_cut_flag = 11 IF TIMERA > sw5_time IF NOT IS_CHAR_DEAD sw5_sweet GET_CAR_CHAR_IS_USING sw5_sweet car IF NOT car = -1 TASK_LEAVE_ANY_CAR sw5_sweet ENDIF sw5_time = TIMERA + 2000 sw5_cut_flag = 1 ENDIF ENDIF ENDIF IF sw5_cut_flag = 1 IF TIMERA > sw5_time sw5_cut_flag = 2 ENDIF ENDIF IF sw5_cut_flag = 2 IF NOT IS_CAR_DEAD sw5_playerscar SET_CAR_VISIBLE sw5_playerscar FALSE ENDIF SET_FIXED_CAMERA_POSITION 2509.7134 -1671.5581 13.5033 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2510.1899 -1672.3892 13.8387 JUMP_CUT SET_CHAR_COORDINATES_NO_OFFSET scplayer 2509.8917 -1672.4692 13.5032 // FREEZE_CHAR_POSITION scplayer TRUE SET_CHAR_HEADING scplayer 270.0 // TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer prtial_gngtlkH GANGS 4.0 FALSE 0 0 0 -2 IF NOT IS_CHAR_DEAD sw5_sweet AND NOT IS_CHAR_DEAD sw5_sweetsgf DELETE_CHAR sw5_sweet CREATE_CHAR PEDTYPE_CIVMALE SPECIAL01 2752.3408 -1948.8669 16.3125 sw5_sweet SET_CURRENT_CHAR_WEAPON sw5_sweet WEAPONTYPE_UNARMED SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED REMOVE_CHAR_FROM_GROUP sw5_sweet REMOVE_CHAR_FROM_GROUP sw5_sweetsgf CLEAR_CHAR_TASKS_IMMEDIATELY sw5_sweet CLEAR_CHAR_TASKS_IMMEDIATELY sw5_sweetsgf // SET_CHAR_COLLISION sw5_sweet FALSE // SET_CHAR_COLLISION scplayer FALSE SET_CHAR_COORDINATES_NO_OFFSET sw5_sweet 2510.7917 -1672.4692 13.5032 SET_CHAR_COORDINATES_NO_OFFSET sw5_sweetsgf 2510.7917 -1673.4692 13.5032 // FREEZE_CHAR_POSITION sw5_sweet TRUE SET_CHAR_HEADING sw5_sweet 90.0 SET_CHAR_HEADING sw5_sweetsgf 90.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE sw5_sweet sweet_ass_slap SWEET 4.0 FALSE 0 0 0 -2 TASK_PLAY_ANIM_NON_INTERRUPTABLE sw5_sweetsgf ho_ass_slapped SWEET 4.0 FALSE 0 0 0 -2 // FREEZE_CHAR_POSITION sw5_sweet TRUE // FREEZE_CHAR_POSITION scplayer TRUE ENDIF audio_actor[2] = sw5_sweet play_audio_global = 1 play_timed_audio = 23 play_timed_audio_for = 5 audio_time[0] = 100 audio_time[1] = 1900 audio_time[2] = 4200 audio_time[3] = 6000 audio_time[4] = 8000 audio_to_play[0] = 23 audio_to_play[1] = 24 audio_to_play[2] = 25 audio_to_play[3] = 26 audio_to_play[4] = 27 sw5_time = TIMERA + 1700 sw5_cut_flag = 3 ENDIF IF sw5_cut_flag = 3 IF TIMERA > sw5_time IF NOT IS_CHAR_DEAD sw5_sweet TASK_PLAY_ANIM_NON_INTERRUPTABLE sw5_sweet prtial_gngtlkA GANGS 4.0 FALSE 0 0 0 -2 ENDIF sw5_cut_flag = 4 sw5_time = TIMERA + 300 ENDIF ENDIF IF sw5_cut_flag = 4 IF TIMERA > sw5_time IF NOT IS_CHAR_DEAD sw5_sweetsgf TASK_FOLLOW_PATH_NODES_TO_COORD sw5_sweetsgf 2516.6860 -1675.8606 13.1227 PEDMOVE_WALK 5500 ENDIF sw5_cut_flag = 5 sw5_time = TIMERA + 2000 ENDIF ENDIF IF sw5_cut_flag = 5 IF TIMERA > sw5_time TASK_PLAY_ANIM scplayer hndshkfa gangs 4.0 FALSE 0 0 0 -2 IF NOT IS_CHAR_DEAD sw5_sweet TASK_PLAY_ANIM_NON_INTERRUPTABLE sw5_sweet hndshkfa gangs 4.0 FALSE 0 0 0 3400 ENDIF sw5_cut_flag = 7 sw5_time = TIMERA + 4000 ENDIF ENDIF IF sw5_cut_flag = 7 IF TIMERA > sw5_time IF NOT IS_CHAR_DEAD sw5_sweet TASK_PLAY_ANIM_NON_INTERRUPTABLE sw5_sweet sweet_hndshldr_01 SWEET 4.0 FALSE 0 0 0 -2 TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer plyr_hndshldr_01 SWEET 4.0 FALSE 0 0 0 -2 IF NOT IS_CHAR_DEAD sw5_sweetsgf DELETE_CHAR sw5_sweetsgf ENDIF ENDIF sw5_cut_flag = 8 sw5_time = TIMERA + 3500 ENDIF ENDIF IF sw5_cut_flag = 8 IF TIMERA > sw5_time IF NOT IS_CHAR_DEAD sw5_sweet FREEZE_CHAR_POSITION sw5_sweet FALSE TASK_FOLLOW_PATH_NODES_TO_COORD sw5_sweet 2516.6860 -1675.8606 13.1227 PEDMOVE_WALK 5500 ENDIF sw5_cut_flag = 9 sw5_time = TIMERA + 1500 ENDIF ENDIF IF sw5_cut_flag = 9 IF TIMERA > sw5_time IF NOT IS_CHAR_DEAD sw5_sweet DELETE_CHAR sw5_sweet ENDIF IF NOT IS_CHAR_DEAD sw5_sweetsgf DELETE_CHAR sw5_sweetsgf ENDIF IF NOT IS_CAR_DEAD sw5_playerscar SET_CAR_VISIBLE sw5_playerscar TRUE ENDIF FREEZE_CHAR_POSITION scplayer FALSE SET_PLAYER_CONTROL player1 ON SET_CHAR_HEADING scplayer 90.0 SWITCH_WIDESCREEN OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT // MISSION PASSED MAKE_PLAYER_GANG_REAPPEAR sw5_flag = 8 ENDIF ENDIF RETURN sw5_ped_actions: // There are five Seville gang members attacking Sweet. // When the player gets within range, the two closest peds will shoot at the player. // If the player moves around or peds are killed then the two nearest peds will always attack the player. // The remaining peds will shoot up at Sweet's flat. // TO ADD: Peds advance up the stairs and one ped cautiously leans from behind a wall. // TO ADD: If a ped is interupted during an advance by the player then he should attack player, but return to his task if this changes. LVAR_INT sw5_reds_attack sw5_red_check_time sw5_this_red sw5_red_action[6] sw5_int LVAR_FLOAT sw5_car_speed sw5_car_heading LVAR_FLOAT sw5_angle LVAR_INT sw5_check sw5_first_red_shoot_flag nearest_red_1 nearest_red_2 LVAR_FLOAT sw5_float sw5_float2 sw5_float3 nearest_range_1 nearest_range_2 sw5_distance LVAR_INT sw5_red_blip1 sw5_red_blip2 //red_mode 1 = attack player // 2 = attack flat // 3 = go investigate // 4 = take cover? (player attacks by car) // // //attack_player //attack_flat //investigate_player IF TIMERA > sw5_red_check_time sw5_red_check_time = TIMERA + 50 sw5_this_red ++ IF sw5_this_red = 5 sw5_this_red = 0 ENDIF IF NOT IS_CHAR_DEAD sw5_red[sw5_this_red] IF sw5_player_spotted = 0 // IF HAS_CHAR_SPOTTED_CHAR sw5_red[sw5_this_red] scplayer IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR sw5_red[sw5_this_red] scplayer sw5_player_spotted = 1 ENDIF ENDIF GET_CHAR_COORDINATES sw5_red[sw5_this_red] sw5_redx sw5_redy sw5_redz GET_CHAR_COORDINATES scplayer sw5_x sw5_y sw5_z GET_DISTANCE_BETWEEN_COORDS_2D sw5_x sw5_y sw5_redx sw5_redy sw5_distance IF NOT nearest_red_1 = sw5_this_red IF sw5_distance < nearest_range_1 // REMOVE_BLIP sw5_red_blip1 // ADD_BLIP_FOR_CHAR sw5_red[sw5_this_red] sw5_red_blip1 nearest_red_2 = nearest_red_1 nearest_range_2 = nearest_range_1 nearest_range_1 = sw5_distance nearest_red_1 = sw5_this_red ENDIF ELSE nearest_range_1 = sw5_distance ENDIF IF NOT nearest_red_2 = sw5_this_red IF NOT nearest_red_1 = sw5_this_red IF sw5_distance < nearest_range_2 // REMOVE_BLIP sw5_red_blip2 // ADD_BLIP_FOR_CHAR sw5_red[sw5_this_red] sw5_red_blip2 nearest_red_2 = sw5_this_red nearest_range_2 = sw5_distance ENDIF ENDIF ELSE nearest_range_2 = sw5_distance ENDIF IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer sw5_playerscar GET_CAR_SPEED sw5_playerscar sw5_car_speed IF sw5_car_speed > 5.0 GENERATE_RANDOM_FLOAT_IN_RANGE -0.2 0.2 sw5_float3 sw5_float2 = sw5_car_speed * 1.6 sw5_float2 += sw5_float3 IF sw5_distance < sw5_float2 sw5_float2 = sw5_z - sw5_redz ABS sw5_float2 IF sw5_float2 < 1.0 sw5_float = sw5_redx - sw5_x sw5_float2 = sw5_redy - sw5_y GET_HEADING_FROM_VECTOR_2D sw5_float sw5_float2 sw5_angle // GET_ANGLE_BETWEEN_2D_VECTORS sw5_redx sw5_redy sw5_x sw5_y sw5_angle GET_CAR_HEADING sw5_playerscar sw5_car_heading sw5_float = sw5_angle - sw5_car_heading // sw5_float -= 180.0 ABS sw5_float // IF sw5_float > 180.0 // sw5_float -= 180.0 // ABS sw5_float // ENDIF IF sw5_float < 5.0 // dive for cover (over wall?) sw5_player_spotted = 1 sw5_red_action[sw5_this_red] = 4 ENDIF ENDIF ENDIF ENDIF ENDIF // roll IF sw5_red_action[sw5_this_red] = 4 GET_SCRIPT_TASK_STATUS sw5_red[sw5_this_red] TASK_DIVE_AND_GET_UP sw5_task_status IF sw5_task_status = FINISHED_TASK TASK_DIVE_AND_GET_UP sw5_red[sw5_this_red] 1.0 0.0 500 sw5_red_action[sw5_this_red] = 5 ENDIF ENDIF IF sw5_red_action[sw5_this_red] = 5 GET_SCRIPT_TASK_STATUS sw5_red[sw5_this_red] TASK_DIVE_AND_GET_UP sw5_task_status IF sw5_task_status = FINISHED_TASK sw5_red_action[sw5_this_red] = 0 ENDIF ENDIF IF sw5_red_action[sw5_this_red] = 0 IF sw5_player_spotted = 1 IF sw5_this_red = nearest_red_1 OR sw5_this_red = nearest_red_2 sw5_red_action[sw5_this_red] = 1 ENDIF ENDIF ENDIF //shoot at player IF sw5_red_action[sw5_this_red] = 1 GET_SCRIPT_TASK_STATUS sw5_red[sw5_this_red] TASK_SHOOT_AT_CHAR sw5_task_status IF sw5_task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS sw5_red[sw5_this_red] TASK_KILL_CHAR_ON_FOOT sw5_task_status IF sw5_task_status = FINISHED_TASK // IF sw5_this_red = 4 // IF IS_CHAR_IN_AREA_3D scplayer 2751.0195 -1949.7622 19.1234 2754.6411 -1960.6786 16.5385 FALSE // OPEN_SEQUENCE_TASK sw5_seq // TASK_PLAY_ANIM -1 Crouch_Roll_L PED 8.0 FALSE TRUE TRUE FALSE -1 // TASK_KILL_CHAR_ON_FOOT -1 scplayer // CLOSE_SEQUENCE_TASK sw5_seq // PERFORM_SEQUENCE_TASK sw5_red[4] sw5_seq // CLEAR_SEQUENCE_TASK sw5_seq // // sw5_red_action[4] = 2 // ENDIF // IF IS_CHAR_IN_AREA_3D scplayer 2755.3232 -1949.2924 16.2442 2737.1890 -1915.9371 24.2411 FALSE // TASK_KILL_CHAR_ON_FOOT sw5_red[sw5_this_red] scplayer // ENDIF // ELSE GENERATE_RANDOM_INT_IN_RANGE 0 2 sw5_int IF sw5_int = 0 TASK_SHOOT_AT_CHAR sw5_red[sw5_this_red] scplayer -2 ELSE TASK_KILL_CHAR_ON_FOOT sw5_red[sw5_this_red] scplayer ENDIF // ENDIF ENDIF ENDIF IF NOT sw5_this_red = nearest_red_1 AND NOT sw5_this_red = nearest_red_2 GET_SCRIPT_TASK_STATUS sw5_red[sw5_this_red] PERFORM_SEQUENCE_TASK sw5_task_Status IF sw5_task_status = FINISHED_TASK OPEN_SEQUENCE_TASK sw5_seq TASK_FOLLOW_PATH_NODES_TO_COORD -1 sw5_red_x[sw5_this_red] sw5_red_y[sw5_this_red] sw5_red_z[sw5_this_red] PEDMOVE_RUN 6000 TASK_SHOOT_AT_COORD -1 2750.9570 -1968.0157 17.9291 -2 CLOSE_SEQUENCE_TASK sw5_seq PERFORM_SEQUENCE_TASK sw5_red[sw5_this_red] sw5_seq CLEAR_SEQUENCE_TASK sw5_seq sw5_red_action[sw5_this_red] = 0 ENDIF ENDIF ENDIF ELSE IF sw5_player_spotted = 0 sw5_player_spotted = 1 ENDIF IF sw5_this_red = nearest_red_1 nearest_red_1 = nearest_red_2 nearest_range_1 = nearest_range_2 nearest_red_2 = 0 nearest_range_2 = 99999.0 ENDIF IF sw5_this_red = nearest_red_2 nearest_red_2 = 0 nearest_range_2 = 99999.0 ENDIF ENDIF ENDIF // IF sw5_scene_made = 1 // IF sw5_reds_attack = 0 // sw5_reds_attack = 1 // // sw5_i = 0 // WHILE sw5_i < 5 // IF NOT IS_CHAR_DEAD sw5_red[sw5_i] //// SET_CHAR_KINDA_STAY_IN_SAME_PLACE sw5_red[sw5_i] TRUE // TASK_KILL_CHAR_ON_FOOT sw5_red[sw5_i] scplayer // ENDIF // sw5_i ++ // ENDWHILE // ENDIF // ENDIF // IF ped_attack_event[4] = 0 // IF NOT IS_CHAR_DEAD sw5_red[4] // IF IS_CHAR_IN_AREA_3D scplayer 2751.0195 -1949.7622 19.1234 2754.6411 -1960.6786 16.5385 FALSE // TASK_PLAY_ANIM sw5_red[4] Crouch_Roll_L PED 8.0 FALSE TRUE TRUE FALSE -1 // ped_attack_event[4] = 1 // ENDIF // ENDIF // ENDIF // // IF ped_attack_event[3] = 0 // IF NOT IS_CHAR_DEAD sw5_red[3] // IF NOT sw5_nearest_red_a = 3 // AND NOT sw5_nearest_red_b = 3 // IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer sw5_red[3] 30.0 30.0 30.0 FALSE // TASK_GO_STRAIGHT_TO_COORD sw5_red[3] 2753.2715 -1979.6263 14.0545 PEDMOVE_WALK -2 // ped_attack_event[3] = 1 // ENDIF // ENDIF // ENDIF // ENDIF // // IF ped_attack_event[3] = 1 // IF sw5_nearest_red_a = 3 // OR sw5_nearest_red_b = 3 // ped_attack_event[3] = 0 // ELSE // IF NOT IS_CHAR_DEAD sw5_red[3] // GET_SCRIPT_TASK_STATUS sw5_red[3] TASK_GO_STRAIGHT_TO_COORD sw5_seq // IF sw5_seq = FINISHED_TASK // ped_attack_event[3] = 2 // ENDIF // ENDIF // ENDIF // ENDIF // // // IF TIMERA > next_red_time_check // next_red_time_check = TIMERA + 300 // // GET_CHAR_COORDINATES scplayer sw5_x sw5_y sw5_z // // sw5_closest_dist_a = 99999.0 // sw5_closest_dist_b = 99999.0 // sw5_nearest_red_a = 10 // sw5_nearest_red_b = 10 // // sw5_i = 0 // sw5_player_spotted = 0 // WHILE sw5_i < 5 // IF NOT IS_CHAR_DEAD sw5_red[sw5_i] // GET_CHAR_COORDINATES sw5_red[sw5_i] sw5_redx sw5_redy sw5_redz // GET_DISTANCE_BETWEEN_COORDS_2D sw5_x sw5_y sw5_redx sw5_redy sw5_distance[sw5_i] // IF sw5_distance[sw5_i] < sw5_closest_dist_a // sw5_nearest_red_b = sw5_nearest_red_a // sw5_closest_dist_b = sw5_closest_dist_a // sw5_closest_dist_a = sw5_distance[sw5_i] // sw5_nearest_red_a = sw5_i // ELSE // IF sw5_distance[sw5_i] < sw5_closest_dist_b // sw5_nearest_red_b = sw5_i // sw5_closest_dist_a = sw5_distance[sw5_i] // ENDIF // ENDIF // // IF HAS_CHAR_SPOTTED_CHAR sw5_red[sw5_i] scplayer // IF sw5_spotted_for_first_time = 0 // sw5_spotted_for_first_time = 1 // PRINT sw5_15 4000 1 // * PRINT "Hey that's Sweet's bro - get him" * // ENDIF // sw5_player_spotted = 1 // ENDIF // ENDIF // sw5_i ++ // ENDWHILE // // IF sw5_player_spotted = 0 // sw5_i = 0 // WHILE sw5_i < 5 // IF NOT IS_CHAR_DEAD sw5_red[sw5_i] // IF sw5_target[sw5_i] = 1 // IF NOT IS_CHAR_DEAD sw5_sweet // TASK_SHOOT_AT_CHAR sw5_red[sw5_i] sw5_sweet -2 // ENDIF // sw5_target[sw5_i] = 0 // ENDIF // ENDIF // sw5_i ++ // ENDWHILE // ENDIF // // // IF sw5_player_spotted = 1 // sw5_i = 0 // WHILE sw5_i < 5 // IF NOT IS_CHAR_DEAD sw5_red[sw5_i] // IF sw5_i = sw5_nearest_red_a // OR sw5_i = sw5_nearest_red_b // IF sw5_target[sw5_i] = 0 // sw5_target[sw5_i] = 1 // GET_SCRIPT_TASK_STATUS sw5_red[sw5_i] PERFORM_SEQUENCE_TASK sw5_seq // IF sw5_seq = FINISHED_TASK // OPEN_SEQUENCE_TASK sw5_seq // TASK_SHOOT_AT_CHAR -1 scplayer -2 // CLOSE_SEQUENCE_TASK sw5_seq // PERFORM_SEQUENCE_TASK sw5_red[sw5_i] sw5_seq // CLEAR_SEQUENCE_TASK sw5_seq // ENDIF // ENDIF // ELSE // IF sw5_target[sw5_i] = 1 // IF NOT IS_CHAR_DEAD sw5_sweet // GET_SCRIPT_TASK_STATUS sw5_red[sw5_i] TASK_SHOOT_AT_COORD sw5_seq // IF sw5_seq = FINISHED_TASK // TASK_SHOOT_AT_COORD sw5_red[sw5_i] 2750.9570 -1968.0157 17.9291 -2 // ENDIF // ENDIF // sw5_target[sw5_i] = 0 // ENDIF // ENDIF // ENDIF // sw5_i ++ // ENDWHILE // ENDIF // ENDIF RETURN // ****************************************** // Audio // ****************************************** sweet5_audio: LVAR_INT play_timed_audio play_timed_audio_flag audio_time_start audio_timer_flag audio_time[10] audio_to_play[10] play_timed_audio_for // play timed audio IF NOT play_timed_audio = 0 IF play_timed_audio_flag = 0 play_timed_audio_flag = 1 audio_time_start = TIMERA audio_timer_flag = 0 play_delay = audio_time_start + audio_time[audio_timer_flag] ENDIF IF play_timed_audio_flag = 1 IF TIMERA > play_delay play_audio = audio_to_play[audio_timer_flag] audio_flag = 1 audio_timer_flag ++ play_timed_audio_for -- IF play_timed_audio_for = 0 play_timed_audio = 0 play_timed_audio_flag = 0 ELSE play_delay = audio_time_start + audio_time[audio_timer_flag] ENDIF ENDIF ENDIF ENDIF SWITCH audio_flag CASE 0 //first time game starts LVAR_TEXT_LABEL audio_text[40] LVAR_INT audio_sound[40] audio_slot[3] play_slot LVAR_INT play_audio next_audio play_audio_for audio_flag play_audio_delay // VIEW_INTEGER_VARIABLE play_audio play_audio // VIEW_INTEGER_VARIABLE actor_int actor_int // VIEW_INTEGER_VARIABLE this_actor this_actor // VIEW_INTEGER_VARIABLE sw5_sweet sw5_sweet // VIEW_INTEGER_VARIABLE audio_flag audio_flag // VIEW_INTEGER_VARIABLE audio_actor[2] audio_actor[2] LVAR_INT audio_for_char[40] audio_actor[7] play_audio_now LVAR_INT actor_int this_actor loaded_audio play_delay // $audio_text[0] = &CAT4_BI $audio_text[1] = &MSWE13A //Yo. audio_sound[1] = SOUND_MSWE13A $audio_text[2] = &MSWE13B //Carl! No time to chat! audio_sound[2] = SOUND_MSWE13B $audio_text[3] = &MSWE13C //Been seeing a Seville Families girl. audio_sound[3] = SOUND_MSWE13C $audio_text[4] = &MSWE13D //Word got out and the Seville boys don’t like it. audio_sound[4] = SOUND_MSWE13D $audio_text[5] = &MSWE13E //I’m pinned down In Seville turf and we need a ride out of here! audio_sound[5] = SOUND_MSWE13E $audio_text[6] = &MSWE13F //Sure thing, man, hang in there! audio_sound[6] = SOUND_MSWE13F $audio_text[7] = &MSWE13G //Drop by Emmet’s and get strapped! audio_sound[7] = SOUND_MSWE13G $audio_text[8] = &SWE5_FA //Drop by Emmet’s and get strapped! audio_sound[8] = SOUND_SWE5_FA $audio_text[9] = &SWE5_FB //Drop by Emmet’s and get strapped! audio_sound[9] = SOUND_SWE5_FB $audio_text[10] = &SWE5_GH //Drop by Emmet’s and get strapped! audio_sound[10] = SOUND_SWE5_GH $audio_text[11] = &SWE5_CA //Drop by Emmet’s and get strapped! audio_sound[11] = SOUND_SWE5_CA $audio_text[12] = &SWE5_CC //Drop by Emmet’s and get strapped! audio_sound[12] = SOUND_SWE5_CC $audio_text[13] = &SWE5_GA //Drop by Emmet’s and get strapped! audio_sound[13] = SOUND_SWE5_GA $audio_text[14] = &SWE5_GC //Drop by Emmet’s and get strapped! audio_sound[14] = SOUND_SWE5_GC $audio_text[15] = &SWE5_GD //Drop by Emmet’s and get strapped! audio_sound[15] = SOUND_SWE5_GD $audio_text[16] = &SWE5_GE //Drop by Emmet’s and get strapped! audio_sound[16] = SOUND_SWE5_GE $audio_text[17] = &SWE5_GF //Drop by Emmet’s and get strapped! audio_sound[17] = SOUND_SWE5_GF $audio_text[18] = &SWE5_GG //Drop by Emmet’s and get strapped! audio_sound[18] = SOUND_SWE5_GG $audio_text[19] = &SWE5_GJ //Drop by Emmet’s and get strapped! audio_sound[19] = SOUND_SWE5_GJ $audio_text[20] = &SWE5_GK //Drop by Emmet’s and get strapped! audio_sound[20] = SOUND_SWE5_GK $audio_text[21] = &SWE5_GB //Drop by Emmet’s and get strapped! audio_sound[21] = SOUND_SWE5_GB $audio_text[22] = &SWE5_GL //Drop by Emmet’s and get strapped! audio_sound[22] = SOUND_SWE5_GL $audio_text[23] = &SWE5_EA //Drop by Emmet’s and get strapped! audio_sound[23] = SOUND_SWE5_EA $audio_text[24] = &SWE5_EB //Drop by Emmet’s and get strapped! audio_sound[24] = SOUND_SWE5_EB $audio_text[25] = &SWE5_EC //Drop by Emmet’s and get strapped! audio_sound[25] = SOUND_SWE5_EC $audio_text[26] = &SWE5_ED //Drop by Emmet’s and get strapped! audio_sound[26] = SOUND_SWE5_ED $audio_text[27] = &SWE5_EE //Drop by Emmet’s and get strapped! audio_sound[27] = SOUND_SWE5_EE // $audio_text[28] = &SWE5_EF //Drop by Emmet’s and get strapped! // audio_sound[28] = SOUND_SWE5_EF $audio_text[29] = &MOBRING //Drop by Emmet’s and get strapped! audio_sound[29] = SOUND_MOBRING audio_for_char[1] = 1 audio_for_char[2] = 0 audio_for_char[3] = 0 audio_for_char[4] = 0 audio_for_char[5] = 0 audio_for_char[6] = 1 audio_for_char[7] = 0 audio_for_char[8] = 0 audio_for_char[9] = 0 audio_for_char[10] = 3 audio_for_char[11] = 0 audio_for_char[12] = 0 audio_for_char[13] = 2 audio_for_char[14] = 2 audio_for_char[15] = 2 audio_for_char[16] = 1 audio_for_char[17] = 1 audio_for_char[18] = 1 audio_for_char[19] = 3 audio_for_char[20] = 3 audio_for_char[21] = 2 audio_for_char[22] = 3 audio_for_char[23] = 2 audio_for_char[24] = 2 audio_for_char[25] = 2 audio_for_char[26] = 1 audio_for_char[27] = 2 audio_for_char[28] = 2 audio_for_char[29] = 0 audio_actor[1] = scplayer //1 = catalina //2 = player audio_flag = 1 // play_audio = 0 LOAD_MISSION_AUDIO 1 audio_sound[1] LOAD_MISSION_AUDIO 2 audio_sound[2] audio_slot[1] = 1 audio_slot[2] = 2 BREAK CASE 1 //waiting to play audio IF NOT play_audio = 0 IF TIMERA > play_audio_delay IF HAS_MISSION_AUDIO_FINISHED 1 AND HAS_MISSION_AUDIO_FINISHED 2 IF audio_slot[1] = play_audio play_slot = 1 ELSE IF audio_slot[2] = play_audio play_slot = 2 ELSE play_slot = 1 audio_slot[1] = play_audio CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 audio_sound[play_audio] //audio hasn't been requested yet ENDIF ENDIF IF HAS_MISSION_AUDIO_LOADED play_slot IF NOT audio_for_char[play_audio] = 0 actor_int = audio_for_char[play_audio] this_actor = audio_actor[actor_int] IF NOT IS_CHAR_DEAD this_actor ATTACH_MISSION_AUDIO_TO_CHAR play_slot this_actor IF NOT IS_CHAR_TALKING this_actor play_audio_now = 1 START_CHAR_FACIAL_TALK this_actor 15000 ELSE DISABLE_CHAR_SPEECH this_actor FALSE ENDIF ENDIF ENDIF IF audio_for_char[play_audio] = 0 play_audio_now = 1 ENDIF IF play_audio_now = 1 PLAY_MISSION_AUDIO play_slot CLEAR_PRINTS PRINT $audio_text[play_audio] 10000 1 audio_flag ++ play_audio_now = 0 next_audio = play_audio + 1 // if the other slot doesn't already have the next audio loaded, then load it. IF NOT audio_sound[next_audio] = 0 IF play_slot = 1 IF NOT audio_slot[2] = next_audio LOAD_MISSION_AUDIO 2 audio_sound[next_audio] audio_slot[2] = next_audio ENDIF ELSE IF NOT audio_slot[1] = next_audio LOAD_MISSION_AUDIO 1 audio_sound[next_audio] audio_slot[1] = next_audio ENDIF ENDIF ENDIF ENDIF ELSE LOAD_MISSION_AUDIO play_slot audio_sound[play_audio] ENDIF ENDIF ENDIF ENDIF BREAK CASE 2 // check if audio has/should finish IF HAS_MISSION_AUDIO_FINISHED play_slot audio_flag++ ELSE IF DOES_CHAR_EXIST this_actor IF IS_CHAR_DEAD this_actor audio_flag++ ENDIF ENDIF ENDIF BREAK CASE 3 //clear audio CLEAR_MISSION_AUDIO play_slot audio_slot[play_slot] = 0 CLEAR_PRINTS IF NOT IS_CHAR_DEAD this_actor STOP_CHAR_FACIAL_TALK this_actor ENABLE_CHAR_SPEECH this_actor ENDIF audio_flag++ BREAK CASE 4 //request next audio play_audio ++ IF NOT audio_sound[play_audio] = 0 LOAD_MISSION_AUDIO play_slot audio_sound[play_audio] audio_slot[play_slot] = play_audio ENDIF play_audio_for -= 1 IF NOT play_audio_for > 0 play_audio = 0 ELSE play_audio = next_audio ENDIF audio_flag = 1 BREAK CASE 5 // clear all for cut scene skip audio_flag = 1 play_audio = 0 play_audio_for = 0 play_timed_audio = 0 play_timed_audio_for = 0 CLEAR_MISSION_AUDIO play_slot audio_slot[play_slot] = 0 CLEAR_PRINTS IF NOT IS_CHAR_DEAD this_actor ENABLE_CHAR_SPEECH this_actor ENDIF BREAK ENDSWITCH RETURN // **************************************** Mission hood5 failed ************************ mission_hood5_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // **************************************** mission hood5 passed ************************* mission_hood5_passed: flag_sweet_mission_counter ++ REGISTER_MISSION_PASSED ( SWEET_5 ) //Used in the stats PLAYER_MADE_PROGRESS 1 PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL PLAYER1 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 7 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 7 //amount of respect // START_NEW_SCRIPT ryder_mission_loop // REMOVE_BLIP ryder_contact_blip // ADD_SPRITE_BLIP_FOR_CONTACT_POINT ryderX ryderY ryderZ ryder_blip_icon ryder_contact_blip RETURN // ********************************** mission cleanup ************************************ mission_cleanup_hood5: flag_player_on_mission = 0 SWITCH_CAR_GENERATOR gen_car7 101 // SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 IF DOES_CHAR_EXIST sw5_sweet IF NOT IS_CHAR_DEAD sw5_sweet SET_CHAR_PROOFS sw5_sweet FALSE FALSE FALSE FALSE FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER sw5_sweet FALSE SET_CHAR_NEVER_TARGETTED sw5_sweet FALSE MARK_CHAR_AS_NO_LONGER_NEEDED sw5_sweet ENDIF ENDIF IF DOES_CHAR_EXIST sw5_sweetsgf IF NOT IS_CHAR_DEAD sw5_sweetsgf SET_CHAR_PROOFS sw5_sweetsgf FALSE FALSE FALSE FALSE FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER sw5_sweetsgf FALSE SET_CHAR_NEVER_TARGETTED sw5_sweetsgf FALSE MARK_CHAR_AS_NO_LONGER_NEEDED sw5_sweetsgf ENDIF ENDIF // // IF NOT IS_CAR_DEAD sw5_ballascar[0] // MARK_CAR_AS_NO_LONGER_NEEDED sw5_ballascar[0] // ENDIF // // IF NOT IS_CAR_DEAD sw5_ballascar[1] // MARK_CAR_AS_NO_LONGER_NEEDED sw5_ballascar[1] // ENDIF // // IF NOT IS_CHAR_DEAD sw5_reddriver[0] // MARK_CHAR_AS_NO_LONGER_NEEDED sw5_reddriver[0] // ENDIF // // IF NOT IS_CHAR_DEAD sw5_reddriver[1] // MARK_CHAR_AS_NO_LONGER_NEEDED sw5_reddriver[1] // ENDIF // IF NOT IS_CHAR_DEAD sw5_redpas[0] // MARK_CHAR_AS_NO_LONGER_NEEDED sw5_redpas[0] // ENDIF // // IF NOT IS_CHAR_DEAD sw5_redpas[1] // MARK_CHAR_AS_NO_LONGER_NEEDED sw5_redpas[1] // ENDIF // sw5_i = 0 WHILE sw5_i < 5 MARK_CHAR_AS_NO_LONGER_NEEDED sw5_red[sw5_i] sw5_i ++ ENDWHILE IF NOT IS_CHAR_DEAD scplayer TASK_USE_MOBILE_PHONE scplayer FALSE ENDIF REMOVE_ANIMATION SWEET REMOVE_ANIMATION GANGS // REMOVE_ANIMATION SWAT MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE MARK_MODEL_AS_NO_LONGER_NEEDED BFYRI MARK_MODEL_AS_NO_LONGER_NEEDED TEC9 MARK_MODEL_AS_NO_LONGER_NEEDED SENTINEL MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO MARK_MODEL_AS_NO_LONGER_NEEDED FAM1 MARK_MODEL_AS_NO_LONGER_NEEDED FAM2 UNLOAD_SPECIAL_CHARACTER 1 REMOVE_CAR_RECORDING 153 REMOVE_CAR_RECORDING 154 SWITCH_ROADS_BACK_TO_ORIGINAL 2793.8140 -1987.9346 15.3045 2754.3240 -1900.3694 9.8752 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2793.8140 -1987.9346 15.3045 2754.3240 -1900.3694 9.8752 SWITCH_ROADS_BACK_TO_ORIGINAL 2463.3755 -1702.6946 17.9193 2508.7346 -1644.5736 10.5835 IF NOT IS_CAR_DEAD sw5_generatecar MARK_CAR_AS_NO_LONGER_NEEDED sw5_generatecar ENDIF CLEAR_ONSCREEN_COUNTER sw5_sweet_health CLEAR_CHAR_RELATIONSHIP scplayer ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 // // // REMOVE_BLIP sw5_red_blip[0] REMOVE_BLIP sw5_red_blip[1] REMOVE_BLIP sw5_red_blip[2] REMOVE_BLIP sw5_red_blip[3] REMOVE_BLIP sw5_red_blip[4] REMOVE_BLIP sw5_house_blip REMOVE_BLIP sw5_finish_blip REMOVE_BLIP sw5_emmet_blip REMOVE_BLIP sw5_sweet_blip REMOVE_BLIP sw5_sweetsgf_blip // // ////REMOVE_BLIP sw5_house_blip ////REMOVE_BLIP sw5_finish_blip ////REMOVE_BLIP sw5_emmet_blip // SET_WANTED_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 SWITCH_EMERGENCY_SERVICES ON // REMOVE_DECISION_MAKER sw5_seville_dec REMOVE_DECISION_MAKER sw5_empty_dec //REMOVE_GROUP sw5_red_group SET_CREATE_RANDOM_GANG_MEMBERS ON SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS Player1 FALSE flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : Cesar Vialpando // AUTHOR : Neil // DESICRIPTION : // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** { // ************************************************************************************************************* // GENERAL INITIALISATION - Every level requires this // ************************************************************************************************************* SCRIPT_NAME SWEET6 GOSUB mission_start_SWEET6 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_SWEET6 ENDIF GOSUB mission_cleanup_SWEET6 MISSION_END mission_start_SWEET6: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 // general variables that are in every mission - DON'T DECLARE MISSION SPECIFIC VARIABLES HERE LVAR_INT m_stage LVAR_INT m_goals LVAR_INT m_passed LVAR_INT m_failed LVAR_INT m_quit LVAR_INT m_frame_num LVAR_INT m_this_frame_time LVAR_INT m_last_frame_time LVAR_INT m_time_diff // commonly used temporary variables LVAR_INT temp_int temp_int2 temp_int3 LVAR_FLOAT temp_float temp_float2 temp_float3 LVAR_INT temp_seq LVAR_FLOAT vec_x vec_y vec_z LVAR_FLOAT vec2_x vec2_y vec2_z LVAR_FLOAT x2 y2 z2 LVAR_FLOAT x3 y3 z3 LVAR_INT audio_zone_status // commonly used flags LVAR_INT dialogue_flag LVAR_INT help_flag // commonly used timers LVAR_INT dialogue_timer LVAR_INT help_timer // commonly used decision makers LVAR_INT empty_dm LVAR_INT tough_dm m_stage = 0 m_goals = 0 m_passed = 0 m_failed = 0 m_quit = 0 dialogue_flag = 0 help_flag = 0 dialogue_timer = 0 help_timer = 0 TIMERA = 0 TIMERB = 0 audio_zone_status = -1 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY empty_dm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH tough_dm //m_stage = 5 //m_goals = 0 //LOAD_MISSION_TEXT SWEET6 mission_loop_SWEET6: WAIT 0 // for filshie IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S m_passed = 1 ENDIF // end of debug tools ************** // Frame counter m_frame_num++ IF m_frame_num > 22 m_frame_num = 0 ENDIF // Additional Timers GET_GAME_TIMER m_this_frame_time m_time_diff = m_this_frame_time - m_last_frame_time m_last_frame_time = m_this_frame_time dialogue_timer += m_time_diff help_timer += m_time_diff meet_jump_timer[0] += m_time_diff meet_jump_timer[1] += m_time_diff meet_jump_timer[2] += m_time_diff camera_timer += m_time_diff pscore_timer += m_time_diff GOSUB sweet6_debug_tools SWITCH m_stage CASE 0 GOSUB sweet6_m_stage_0 BREAK CASE 1 GOSUB sweet6_m_stage_1 BREAK CASE 2 GOSUB sweet6_m_stage_2 BREAK CASE 3 GOSUB sweet6_m_stage_3 BREAK CASE 4 GOSUB sweet6_m_stage_4 BREAK CASE 5 GOSUB sweet6_m_stage_5 BREAK CASE 6 GOSUB sweet6_m_stage_6 BREAK ENDSWITCH GOSUB sweet6_global_functions // end of main loop *** don't change *** end_of_main_loop_SWEET6: IF m_quit = 0 IF m_failed = 0 IF m_passed = 0 GOTO mission_loop_SWEET6 ELSE GOSUB mission_passed_SWEET6 RETURN ENDIF ELSE GOSUB mission_failed_SWEET6 RETURN ENDIF ELSE RETURN // quits out - goes to cleanup ENDIF // ************************************************************************************************************* // DEBUG TOOLS // ************************************************************************************************************* sweet6_debug_tools: LVAR_INT debug_on IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_X IF debug_on = 0 debug_on = 1 WRITE_DEBUG LEVEL_DEBUG_ON ELSE debug_on = 0 WRITE_DEBUG LEVEL_DEBUG_OFF ENDIF ENDIF IF debug_on = 1 // Display mission stage variables for debug LVAR_INT display_debug VAR_INT SWEET6_view_debug[8] IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_SPACE display_debug++ IF display_debug > 3 display_debug = 0 ENDIF CLEAR_ALL_VIEW_VARIABLES ENDIF IF display_debug = 1 // system variables SWEET6_view_debug[0] = m_stage SWEET6_view_debug[1] = m_goals SWEET6_view_debug[2] = dialogue_flag SWEET6_view_debug[3] = dialogue_timer SWEET6_view_debug[4] = help_flag SWEET6_view_debug[5] = help_timer SWEET6_view_debug[6] = TIMERA SWEET6_view_debug[7] = TIMERB VIEW_INTEGER_VARIABLE SWEET6_view_debug[0] m_stage VIEW_INTEGER_VARIABLE SWEET6_view_debug[1] m_goals VIEW_INTEGER_VARIABLE SWEET6_view_debug[2] dialogue_flag VIEW_INTEGER_VARIABLE SWEET6_view_debug[3] dialogue_timer VIEW_INTEGER_VARIABLE SWEET6_view_debug[4] help_flag VIEW_INTEGER_VARIABLE SWEET6_view_debug[5] help_timer VIEW_INTEGER_VARIABLE SWEET6_view_debug[6] TIMERA VIEW_INTEGER_VARIABLE SWEET6_view_debug[7] TIMERB ENDIF IF display_debug = 2 // put mission variable for display in here SWEET6_view_debug[0] = car_hyd_flag SWEET6_view_debug[1] = sw6_mission_attempts SWEET6_view_debug[7] = player_has_attacked_meet VIEW_INTEGER_VARIABLE SWEET6_view_debug[0] car_hyd_flag VIEW_INTEGER_VARIABLE SWEET6_view_debug[1] sw6_mission_attempts VIEW_INTEGER_VARIABLE SWEET6_view_debug[7] player_has_attacked_meet ENDIF IF display_debug = 3 // system variables SWEET6_view_debug[0] = meeting_is_loaded SWEET6_view_debug[1] = current_wager VIEW_INTEGER_VARIABLE SWEET6_view_debug[0] meeting_is_loaded VIEW_INTEGER_VARIABLE SWEET6_view_debug[1] current_wager ENDIF // Quit level - no mission pass/fail - cleanup only IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ESC m_quit = 1 ENDIF // Pause level LVAR_INT pause_level IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_P IF pause_level = 0 pause_level = 1 WRITE_DEBUG LEVEL_PAUSED ELSE pause_level = 0 WRITE_DEBUG LEVEL_UNPAUSED ENDIF ENDIF IF pause_level = 1 GOTO end_of_main_loop_SWEET6 ENDIF // progress m_goals & m_stage IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_PLUS m_goals++ ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_MINUS m_goals-- ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_ASTERISK m_stage++ ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_SLASH m_stage-- ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_9 m_goals = 99 ENDIF ENDIF RETURN // ************************************************************************************************************* // INITIALISATION - SPECIFIC TO THIS LEVEL // ************************************************************************************************************* sweet6_m_stage_0: // fake creates IF m_goals = -1 CREATE_CAR PONY 0.0 0.0 0.0 meet_car[0] CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 meet_ped[0] ADD_BLIP_FOR_COORD 0.0 0.0 0.0 location_blip ADD_BLIP_FOR_COORD 0.0 0.0 0.0 car_blip ADD_BLIP_FOR_COORD 0.0 0.0 0.0 mod_garage_blip ADD_BLIP_FOR_COORD 0.0 0.0 0.0 mod_garage1 ENDIF // necessary global variables VAR_INT sweet6_contact_blip // cars LVAR_INT pickup_car LVAR_INT meet_car[7] // peds LVAR_INT mechanic_dude LVAR_INT meet_ped[22] LVAR_INT bounce_girl LVAR_INT sw6_kendal LVAR_INT sw6_cesar // blips LVAR_INT location_blip LVAR_INT car_blip // flags LVAR_INT car_hyd_flag LVAR_INT meet_ped_flag[22] LVAR_INT player_has_attacked_meet LVAR_INT meeting_is_loaded LVAR_INT input_mode LVAR_INT camera_mode LVAR_INT cross_pressed LVAR_INT select_pressed // timers LVAR_INT meet_jump_timer[3] LVAR_INT camera_timer LVAR_INT pscore_timer // floats LVAR_FLOAT load_car_x[7] LVAR_FLOAT load_car_y[7] LVAR_FLOAT load_car_z[7] LVAR_FLOAT load_car_h[7] LVAR_FLOAT load_ped_x[22] LVAR_FLOAT load_ped_y[22] LVAR_FLOAT load_ped_z[22] LVAR_FLOAT load_ped_h[22] LVAR_FLOAT meet_wheel_fr[3] LVAR_FLOAT meet_wheel_fl[3] LVAR_FLOAT meet_wheel_br[3] LVAR_FLOAT meet_wheel_bl[3] LVAR_FLOAT offx offy offz LVAR_FLOAT end_offx end_offy end_offz LVAR_FLOAT force_multiplier // wager stuff LVAR_INT bet_step LVAR_INT min_bet LVAR_INT max_bet LVAR_INT current_wager LVAR_INT cross_is_pressed LVAR_INT initial_stake LVAR_INT square_is_pressed // set flags car_hyd_flag = 0 temp_int = 0 WHILE temp_int < 22 meet_ped_flag[temp_int] = 0 temp_int++ ENDWHILE player_has_attacked_meet = 0 meeting_is_loaded = 0 input_mode = 0 camera_mode = 0 select_pressed = 0 // set floats force_multiplier = 0.01 // fake creates IF m_goals = -1 ADD_BLIP_FOR_COORD 0.0 0.0 0.0 sweet6_contact_blip ENDIF LOAD_MISSION_TEXT SWEET6 SUPPRESS_CAR_MODEL SAVANNA min_bet = 50 max_bet = 1000 START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 GOSUB SWEET6_next_stage RETURN // ************************************************************************************************************* // STAGE 1 - Animated cutscene // ************************************************************************************************************* sweet6_m_stage_1: // initialisation for stage IF m_goals = 0 SET_AREA_VISIBLE 1 LOAD_CUTSCENE SWEET6A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 m_goals++ ENDIF // stage specific stuff IF m_goals = 1 LOAD_SCENE 2519.5752 -1677.8802 13.7661 SET_CHAR_COORDINATES scplayer 2519.5752 -1677.8802 13.7661 SET_CHAR_HEADING scplayer 107.8934 SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT CLEAR_AREA 2519.5752 -1677.8802 13.7661 1000.0 TRUE DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PRINT S6_01 10000 1 // Go to the garage in willowfield ADD_BLIP_FOR_COORD 2653.0159 -2009.1724 12.5547 location_blip m_goals++ ENDIF IF m_goals = 2 m_goals = 99 ENDIF IF m_goals = 99 GOSUB SWEET6_next_stage ENDIF RETURN // ************************************************************************************************************* // STAGE 2 - 2nd Launch of level - triggered when player goes to // mod garage. // ************************************************************************************************************* sweet6_m_stage_2: // wait for player to arrive at blip IF m_goals = 0 temp_int = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2653.0159 -2009.1724 12.5547 4.0 4.0 4.0 TRUE IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF IS_VEHICLE_ON_ALL_WHEELS car SET_PLAYER_CONTROL player1 OFF temp_int = 1 ENDIF ENDIF IF IS_CHAR_ON_FOOT scplayer IF IS_CHAR_STOPPED scplayer SET_PLAYER_CONTROL player1 OFF temp_int = 1 ENDIF ENDIF IF temp_int = 1 IF DOES_BLIP_EXIST location_blip REMOVE_BLIP location_blip ENDIF m_goals++ ENDIF ENDIF IF debug_on = 1 IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK SET_CHAR_COORDINATES scplayer lowrideX lowrideY lowrideZ ENDIF ENDIF ENDIF // wait for car to stop IF m_goals = 1 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF IS_CAR_STOPPED car m_goals++ ENDIF ELSE m_goals++ ENDIF ENDIF // initialisation for stage IF m_goals = 2 SET_PLAYER_CONTROL player1 OFF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS REQUEST_COLLISION 2644.2524 -2028.2457 LOAD_SCENE 2644.2524 -2028.2457 12.5547 SWITCH_WIDESCREEN ON // set camera position SET_FIXED_CAMERA_POSITION 2640.3623 -2011.1040 14.9634 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2640.9590 -2011.8862 14.7846 JUMP_CUT HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE MAKE_PLAYER_GANG_DISAPPEAR CLEAR_AREA 2648.9414 -2017.2471 12.5625 15.0 TRUE CLEAR_AREA 2643.8755 -2029.4388 12.5547 15.0 TRUE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 2641.7434 -2015.4962 12.6446 SET_CHAR_HEADING scplayer 214.4731 SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 stop_gargae_for_neil = 1 // requests REQUEST_MODEL WMYMECH REQUEST_MODEL SAVANNA LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED WMYMECH OR NOT HAS_MODEL_LOADED SAVANNA WAIT 0 ENDWHILE REQUEST_ANIMATION CAR REQUEST_ANIMATION GANGS WHILE NOT HAS_ANIMATION_LOADED CAR OR NOT HAS_ANIMATION_LOADED GANGS WAIT 0 ENDWHILE REQUEST_CAR_RECORDING 552 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 552 WAIT 0 ENDWHILE // create car CREATE_CAR SAVANNA 2644.2524 -2028.2457 12.5547 pickup_car SET_CAR_HEADING pickup_car 358.8272 SET_CAR_HYDRAULICS pickup_car TRUE SET_CAR_STRAIGHT_LINE_DISTANCE pickup_car 40 SET_CAR_DRIVING_STYLE pickup_car DRIVINGMODE_PLOUGHTHROUGH CREATE_CHAR_INSIDE_CAR pickup_car PEDTYPE_CIVMALE WMYMECH mechanic_dude SET_CHAR_DECISION_MAKER mechanic_dude empty_dm TASK_LOOK_AT_CHAR scplayer mechanic_dude 99999 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 m_goals++ ENDIF // skip IF m_goals > 2 AND m_goals < 17 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED m_goals = 17 ENDIF ENDIF // guy drives car out IF m_goals = 3 IF NOT IS_CAR_DEAD pickup_car FREEZE_CAR_POSITION pickup_car FALSE SET_CAR_FORWARD_SPEED pickup_car 2.0 SET_CAR_CRUISE_SPEED pickup_car 4.0 CAR_GOTO_COORDINATES_ACCURATE pickup_car 2644.4622 -2016.2823 12.5547 TIMERA = 0 TIMERB = 0 temp_int = 0 SET_CAR_STATUS pickup_car STATUS_PHYSICS m_goals++ ENDIF ENDIF // wait for car to stop IF m_goals = 4 IF TIMERA < 15000 IF NOT IS_CAR_DEAD pickup_car IF LOCATE_STOPPED_CAR_3D pickup_car 2644.4622 -2017.2823 12.5547 4.0 4.0 4.0 FALSE IF DOES_CAR_HAVE_HYDRAULICS pickup_car CONTROL_CAR_HYDRAULICS pickup_car 0.0 0.0 0.0 0.0 ENDIF m_goals++ ELSE IF temp_int < 2 // do 2 bounces IF TIMERB < 1800 AND TIMERB > 1500 wheel_fl = 1.0 wheel_bl = 0.0 wheel_fr = 1.0 wheel_br = 0.0 ELSE IF TIMERB > 1800 IF TIMERB < 2500 wheel_fl = 0.0 wheel_bl = 0.0 wheel_fr = 0.0 wheel_br = 0.0 ELSE TIMERB = 1300 temp_int++ ENDIF ENDIF ENDIF ENDIF // make car bounce IF DOES_CAR_HAVE_HYDRAULICS pickup_car CONTROL_CAR_HYDRAULICS pickup_car wheel_fl wheel_bl wheel_fr wheel_br ENDIF ENDIF ENDIF ELSE IF NOT IS_CAR_DEAD pickup_car SET_CAR_COORDINATES pickup_car 2644.4622 -2017.2823 12.5547 SET_CAR_HEADING pickup_car 358.5157 m_goals++ ENDIF ENDIF ENDIF // mechanic dude gets out and talks to player. IF m_goals = 5 IF NOT IS_CHAR_DEAD mechanic_dude OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CAR_DEAD pickup_car TASK_LEAVE_CAR -1 pickup_car ENDIF TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_LOOK_AT_CHAR -1 scplayer -2 TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK mechanic_dude temp_seq CLEAR_SEQUENCE_TASK temp_seq TIMERA = 0 m_goals++ ENDIF ENDIF // wait for the mechanic dude to get outside car IF m_goals = 6 IF NOT IS_CHAR_DEAD mechanic_dude IF NOT IS_CAR_DEAD pickup_car IF NOT IS_CHAR_IN_CAR mechanic_dude pickup_car IF IS_CHAR_ON_FOOT mechanic_dude m_goals++ ENDIF ENDIF ENDIF ENDIF ENDIF // second camera angle IF m_goals = 7 SET_FIXED_CAMERA_POSITION 2640.2000 -2018.0593 14.3965 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2641.1350 -2017.7582 14.2101 JUMP_CUT SET_CHAR_COORDINATES scplayer 2642.6584 -2015.2910 12.5947 SET_CHAR_HEADING scplayer 181.4479 IF NOT IS_CHAR_DEAD mechanic_dude SET_CHAR_COORDINATES mechanic_dude 2641.8618 -2018.1082 12.2327 //2641.9785 -2017.1935 12.7019 SET_CHAR_HEADING mechanic_dude 353.0400 TASK_LOOK_AT_CHAR mechanic_dude scplayer -2 ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD mechanic_dude TASK_LOOK_AT_CHAR -1 mechanic_dude 99999 TASK_GO_STRAIGHT_TO_COORD -1 2642.3914 -2016.5813 12.5947 PEDMOVE_WALK 5000 TASK_TURN_CHAR_TO_FACE_CHAR -1 mechanic_dude //TASK_PLAY_ANIM -1 prtial_gngtlkH GANGS 4.0 FALSE FALSE FALSE FALSE -1 ELSE TASK_PAUSE -1 1000 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK scplayer temp_seq CLEAR_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD mechanic_dude CLEAR_CHAR_TASKS_IMMEDIATELY mechanic_dude OPEN_SEQUENCE_TASK temp_seq TASK_LOOK_AT_CHAR -1 scplayer -2 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK mechanic_dude temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF dialogue_flag = 0 TIMERA = 500 m_goals++ ENDIF // wait for dialogue to finish IF m_goals = 8 // make mechanic face player IF NOT IS_CHAR_DEAD mechanic_dude GET_CHAR_COORDINATES scplayer x y z GET_CHAR_COORDINATES mechanic_dude x2 y2 z2 vec_x = x - x2 vec_y = y - y2 GET_HEADING_FROM_VECTOR_2D vec_x vec_y heading SET_CHAR_HEADING mechanic_dude heading ENDIF IF audio_line_is_active = 0 AND TIMERA > 500 SWITCH dialogue_flag CASE 0 // So, you must be Sweet’s bro’ huh? $audio_string = &LOWR_KA audio_sound_file = SOUND_LOWR_KA START_NEW_SCRIPT audio_line mechanic_dude 0 1 1 0 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_LOWR_KB dialogue_flag++ BREAK CASE 1 $audio_string = &LOWR_KB // He phoned ahead, said you might be looking for a car that bounces. audio_sound_file = SOUND_LOWR_KB START_NEW_SCRIPT audio_line mechanic_dude 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_LOWR_KC dialogue_flag++ BREAK CASE 2 $audio_string = &LOWR_KC // Well I owe him big from way back, so here, this should do the trick. audio_sound_file = SOUND_LOWR_KC START_NEW_SCRIPT audio_line mechanic_dude 0 1 1 1 dialogue_flag++ BREAK CASE 3 IF NOT IS_CHAR_DEAD mechanic_dude CLEAR_CHAR_TASKS mechanic_dude ENDIF m_goals++ BREAK ENDSWITCH ENDIF ENDIF // player gets in car IF m_goals = 9 IF NOT IS_CAR_DEAD pickup_car SET_RADIO_CHANNEL RS_CLASSIC_HIP_HOP CLEAR_LOOK_AT scplayer OPEN_SEQUENCE_TASK temp_seq TASK_ENTER_CAR_AS_DRIVER -1 pickup_car 10000 TASK_PLAY_ANIM -1 sit_relaxed CAR 4.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK scplayer temp_seq CLEAR_SEQUENCE_TASK temp_seq TIMERA = 0 IF NOT IS_CHAR_DEAD mechanic_dude TASK_LOOK_AT_CHAR mechanic_dude scplayer -2 ENDIF m_goals++ ENDIF ENDIF // wait for player to get in car IF m_goals = 10 // turn mechanic to face player once he's in the car IF NOT IS_CAR_DEAD pickup_car IF IS_CHAR_IN_CAR scplayer pickup_car AND NOT IS_CHAR_ON_FOOT scplayer IF NOT IS_CHAR_DEAD mechanic_dude FREEZE_CHAR_POSITION mechanic_dude TRUE ENDIF m_goals++ ENDIF ENDIF ENDIF // mechanic talks some more IF m_goals = 11 IF NOT IS_CHAR_DEAD mechanic_dude OPEN_SEQUENCE_TASK temp_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_LOOK_AT_CHAR -1 scplayer -2 TASK_PLAY_ANIM -1 prtial_gngtlkB GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 prtial_gngtlkG GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 idle_chat PED 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK mechanic_dude temp_seq CLEAR_SEQUENCE_TASK temp_seq m_goals++ temp_int = 0 TIMERA = 500 TIMERB = 0 wheel_fl = 0.0 wheel_bl = 0.0 wheel_fr = 0.0 wheel_br = 0.0 dialogue_flag = 0 IF NOT IS_CAR_DEAD pickup_car SET_CAR_STATUS pickup_car STATUS_PHYSICS ENDIF ENDIF ENDIF // do dialogue IF m_goals = 12 IF audio_line_is_active = 0 AND TIMERA > 500 SWITCH dialogue_flag CASE 0 // Custom springs should see you hopping all the way home! Try her out. $audio_string = &LOWR_KD audio_sound_file = SOUND_LOWR_KD START_NEW_SCRIPT audio_line mechanic_dude 0 1 2 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_LOWR_KE dialogue_flag++ BREAK CASE 1 // Very popular with the ese’s – they compete in these things. $audio_string = &LOWR_KE audio_sound_file = SOUND_LOWR_KE START_NEW_SCRIPT audio_line mechanic_dude 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_LOWR_KF dialogue_flag++ BREAK CASE 2 // You can usually find them over by Unity Station. $audio_string = &LOWR_KF audio_sound_file = SOUND_LOWR_KF START_NEW_SCRIPT audio_line mechanic_dude 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_LOWR_KG dialogue_flag++ BREAK CASE 3 // If you ever want to mod your ride, come back any time, man. $audio_string = &LOWR_KG audio_sound_file = SOUND_LOWR_KG START_NEW_SCRIPT audio_line mechanic_dude 0 1 1 1 dialogue_flag++ BREAK CASE 4 IF NOT IS_CHAR_DEAD mechanic_dude CLEAR_CHAR_TASKS mechanic_dude ENDIF m_goals++ BREAK ENDSWITCH ENDIF IF NOT IS_CAR_DEAD pickup_car // player bounces car IF temp_int < 4 // do 4 bounces IF TIMERB < 1800 AND TIMERB > 1500 wheel_fl = 1.0 wheel_bl = 0.0 wheel_fr = 1.0 wheel_br = 0.0 ELSE IF TIMERB > 1800 IF TIMERB < 2500 wheel_fl = 0.0 wheel_bl = 0.0 wheel_fr = 0.0 wheel_br = 0.0 ELSE TIMERB = 1300 temp_int++ ENDIF ENDIF ENDIF ELSE IF temp_int = 4 TASK_PLAY_ANIM scplayer tap_hand CAR 4.0 TRUE FALSE FALSE FALSE -1 temp_int++ ENDIF ENDIF IF DOES_CAR_HAVE_HYDRAULICS pickup_car CONTROL_CAR_HYDRAULICS pickup_car wheel_fl wheel_bl wheel_fr wheel_br ENDIF ENDIF ENDIF IF IS_PLAYER_PLAYING player1 IF IS_CHAR_PLAYING_ANIM scplayer tap_hand SET_CHAR_ANIM_SPEED scplayer tap_hand 0.5 ENDIF ENDIF // wait for dialogue to finish IF m_goals = 13 IF sw6_mission_attempts = 0 //PRINT S6_21 4000 1 //CJ - 'I think I'll have a look just now.' IF NOT IS_CHAR_DEAD mechanic_dude CLEAR_CHAR_TASKS mechanic_dude FREEZE_CHAR_POSITION mechanic_dude FALSE TASK_GO_STRAIGHT_TO_COORD mechanic_dude 2641.2310 -2020.6215 12.7578 PEDMOVE_WALK 5000 ENDIF IF NOT IS_CAR_DEAD pickup_car IF DOES_CAR_HAVE_HYDRAULICS pickup_car CONTROL_CAR_HYDRAULICS pickup_car 0.0 0.0 0.0 0.0 ENDIF ENDIF m_goals++ TIMERA = 0 TIMERB = 0 ELSE m_goals = 17 ENDIF ENDIF // switch camera angle IF m_goals = 14 IF TIMERA > 1000 SET_FIXED_CAMERA_POSITION 2643.9846 -2023.7491 14.9500 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2644.0908 -2022.8002 14.6533 JUMP_CUT IF NOT IS_CAR_DEAD pickup_car CLEAR_CHAR_TASKS_IMMEDIATELY scplayer WARP_CHAR_INTO_CAR scplayer pickup_car START_PLAYBACK_RECORDED_CAR pickup_car 552 PAUSE_PLAYBACK_RECORDED_CAR pickup_car m_goals++ TIMERA = 0 ENDIF ENDIF ENDIF IF m_goals = 15 IF TIMERA > 1000 IF NOT IS_CAR_DEAD pickup_car IF IS_PLAYBACK_GOING_ON_FOR_CAR pickup_car UNPAUSE_PLAYBACK_RECORDED_CAR pickup_car m_goals++ TIMERA = 0 ENDIF ENDIF ENDIF ENDIF // wait for car to go off screen IF m_goals = 16 IF NOT IS_CAR_DEAD pickup_car IF NOT IS_CAR_ON_SCREEN pickup_car OR TIMERA > 3000 m_goals++ ENDIF ENDIF ENDIF // fade out and set up car for mod garage IF m_goals = 17 CLEAR_PRINTS SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR RESTORE_CAMERA_JUMPCUT HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE stop_gargae_for_neil = 0 IF NOT IS_CAR_DEAD pickup_car IF IS_PLAYBACK_GOING_ON_FOR_CAR pickup_car STOP_PLAYBACK_RECORDED_CAR pickup_car ENDIF FREEZE_CAR_POSITION pickup_car FALSE IF DOES_CHAR_EXIST mechanic_dude DELETE_CHAR mechanic_dude ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer WARP_CHAR_INTO_CAR scplayer pickup_car IF IS_PLAYBACK_GOING_ON_FOR_CAR pickup_car STOP_PLAYBACK_RECORDED_CAR pickup_car ENDIF GET_CAR_HEADING pickup_car heading SET_CAR_COORDINATES pickup_car 2644.2583 -2026.5259 12.5469 SET_CAR_HEADING pickup_car 2.3109 SET_PLAYER_CONTROL player1 ON SET_CAMERA_IN_FRONT_OF_PLAYER RESTORE_CAMERA_JUMPCUT ENDIF DELETE_CHAR mechanic_dude MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH REMOVE_ANIMATION CAR REMOVE_ANIMATION GANGS START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 IF NOT sw6_mission_attempts = 0 m_goals = 99 ELSE m_goals++ ENDIF ENDIF // tell player to go into garage IF m_goals = 18 REMOVE_BLIP location_blip ADD_BLIP_FOR_COORD LS_LR_GARAGEX LS_LR_GARAGEY LS_LR_GARAGEZ location_blip ACTIVATE_GARAGE modlast PRINT_NOW S6_38 7000 1 // ~s~Back up the lowrider into the ~y~mod garage~s~. m_goals++ ENDIF // wait for player to get into garage IF m_goals = 19 IF NOT mod_flag = 0 CLEAR_PRINTS REMOVE_BLIP location_blip m_goals++ ELSE IF NOT IS_CAR_DEAD pickup_car IF NOT IS_CHAR_IN_CAR scplayer pickup_car IF DOES_BLIP_EXIST location_blip REMOVE_BLIP location_blip ENDIF IF NOT DOES_BLIP_EXIST car_blip ADD_BLIP_FOR_CAR pickup_car car_blip SET_BLIP_AS_FRIENDLY car_blip TRUE PRINT_NOW S6_23 5000 1 // get in the lowrider ENDIF ELSE IF DOES_BLIP_EXIST car_blip REMOVE_BLIP car_blip CLEAR_THIS_PRINT S6_23 ENDIF IF NOT DOES_BLIP_EXIST location_blip ADD_BLIP_FOR_COORD LS_LR_GARAGEX LS_LR_GARAGEY LS_LR_GARAGEZ location_blip PRINT_NOW S6_38 7000 1 // ~s~Back up the lowrider into the ~y~mod garage~s~. ENDIF ENDIF ENDIF ENDIF ENDIF // wait for player to finish in mod garage IF m_goals = 20 IF mod_flag = 3 AND control_flag_mod = 3 IF NOT IS_CAR_DEAD pickup_car IF IS_CHAR_IN_CAR scplayer pickup_car SET_CAR_HEADING pickup_car 0.0 ENDIF ENDIF m_goals = 99 ENDIF IF mod_flag = 0 IF NOT IS_CAR_DEAD pickup_car IF IS_CHAR_IN_CAR scplayer pickup_car SET_CAR_HEADING pickup_car 0.0 ENDIF ENDIF m_goals = 99 ENDIF ENDIF // if car is in any car with hydraulics - make it the pickup car IF m_goals > 12 temp_int = 0 IF mod_flag = 3 AND control_flag_mod = 3 temp_int = 1 ENDIF IF mod_flag = 0 temp_int = 1 ENDIF IF temp_int = 1 // if car is in any car with hydraulics - make it the pickup car IF IS_CHAR_IN_ANY_CAR scplayer IF NOT IS_CAR_DEAD pickup_car IF NOT IS_CHAR_IN_CAR scplayer pickup_car STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF DOES_CAR_HAVE_HYDRAULICS car MARK_CAR_AS_NO_LONGER_NEEDED pickup_car STORE_CAR_CHAR_IS_IN scplayer pickup_car ENDIF ENDIF ELSE STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF DOES_CAR_HAVE_HYDRAULICS car MARK_CAR_AS_NO_LONGER_NEEDED pickup_car STORE_CAR_CHAR_IS_IN scplayer pickup_car ENDIF ENDIF ENDIF ENDIF ENDIF // exit IF m_goals = 99 MAKE_PLAYER_GANG_REAPPEAR sw6_mission_attempts++ //WRITE_DEBUG_WITH_INT sw6_mission_attempts sw6_mission_attempts ACTIVATE_GARAGE modlast CLEAR_PRINTS IF DOES_CHAR_EXIST mechanic_dude DELETE_CHAR mechanic_dude ENDIF stop_gargae_for_neil = 1 MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH REMOVE_ANIMATION CAR REMOVE_ANIMATION GANGS REMOVE_CAR_RECORDING 552 SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 GOSUB SWEET6_next_stage ENDIF RETURN // ************************************************************************************************************* // STAGE 3 - Player has to go to lowrider meeting // ************************************************************************************************************* sweet6_m_stage_3: IF m_goals = 0 // put up text and blip IF NOT IS_CAR_DEAD pickup_car IF IS_CHAR_IN_CAR scplayer pickup_car PRINT_NOW S6_03 7000 1 // get to the lowrider meeting ENDIF ENDIF IF NOT DOES_BLIP_EXIST location_blip ADD_BLIP_FOR_COORD 1793.0676 -1904.2538 12.3989 location_blip ENDIF // set flags player_has_attacked_meet = 0 meeting_is_loaded = 0 // set floats load_car_x[0] = 1796.9468 // top left load_car_y[0] = -1924.3765 load_car_z[0] = 13.2937 load_car_h[0] = 60.9627 load_car_x[1] = 1802.8647 // infront of middle car load_car_y[1] = -1918.7424 load_car_z[1] = 13.2965 load_car_h[1] = 357.6195 load_car_x[2] = 1788.9922 // top right load_car_y[2] = -1924.5015 load_car_z[2] = 13.2937 load_car_h[2] = 305.5176 load_car_x[3] = 1784.1887 // behind middle car load_car_y[3] = -1913.4397 load_car_z[3] = 13.2957 load_car_h[3] = 188.9639 load_car_x[4] = 1790.9639 // middle car load_car_y[4] = -1913.8983 load_car_z[4] = 13.2985 load_car_h[4] = 266.2616 load_car_x[5] = 1799.8992 // nearest entrance left load_car_y[5] = -1906.4248 load_car_z[5] = 13.3025 load_car_h[5] = 184.4735 load_car_x[6] = 1785.9397 // entrance right load_car_y[6] = -1904.8394 load_car_z[6] = 13.2970 load_car_h[6] = 152.5742 load_ped_x[0] = 1798.6031 load_ped_y[0] = -1908.2596 load_ped_z[0] = 12.4388 load_ped_h[0] = 102.3995 load_ped_x[1] = 1798.8867 load_ped_y[1] = -1907.6678 load_ped_z[1] = 12.4399 load_ped_h[1] = 174.1189 load_ped_x[2] = 1798.8340 load_ped_y[2] = -1911.7822 load_ped_z[2] = 12.4374 load_ped_h[2] = 158.2591 load_ped_x[3] = 1799.5836 load_ped_y[3] = -1912.7948 load_ped_z[3] = 12.4368 load_ped_h[3] = 74.6392 load_ped_x[4] = 1800.9021 load_ped_y[4] = -1918.7135 load_ped_z[4] = 12.4331 load_ped_h[4] = 256.6391 load_ped_x[5] = 1798.1663 load_ped_y[5] = -1920.4265 load_ped_z[5] = 12.4321 load_ped_h[5] = 19.6592 load_ped_x[6] = 1796.8108 load_ped_y[6] = -1920.4260 load_ped_z[6] = 12.4321 load_ped_h[6] = 331.8393 load_ped_x[7] = 1787.7799 load_ped_y[7] = -1919.0714 load_ped_z[7] = 12.4329 load_ped_h[7] = 331.8393 load_ped_x[8] = 1786.7098 load_ped_y[8] = -1917.9816 load_ped_z[8] = 12.4332 load_ped_h[8] = 285.8198 load_ped_x[9] = 1786.1943 load_ped_y[9] = -1907.3561 load_ped_z[9] = 12.4327 load_ped_h[9] = 260.4003 load_ped_x[10] = 1786.8982 load_ped_y[10] = -1906.5308 load_ped_z[10] = 12.4335 load_ped_h[10] = 141.9807 load_ped_x[11] = 1786.2305 load_ped_y[11] = -1908.6224 load_ped_z[11] = 12.4328 load_ped_h[11] = 327.1608 load_ped_x[12] = 1789.1875 load_ped_y[12] = -1919.6648 load_ped_z[12] = 12.4325 load_ped_h[12] = 357.2196 load_ped_x[13] = 1788.1033 load_ped_y[13] = -1907.9491 load_ped_z[13] = 12.4352 load_ped_h[13] = 200.9411 load_ped_x[14] = 1797.9966 load_ped_y[14] = -1912.7402 load_ped_z[14] = 12.4368 load_ped_h[14] = 312.2806 load_ped_x[15] = 1796.4597 load_ped_y[15] = -1908.8817 load_ped_z[15] = 12.4368 load_ped_h[15] = 312.2806 REQUEST_MODEL VLA1 REQUEST_MODEL VLA2 REQUEST_MODEL VLA3 REQUEST_MODEL BFYPRO REQUEST_MODEL HFYST REQUEST_MODEL SAVANNA REQUEST_MODEL REMINGTN REQUEST_ANIMATION LOWRIDER LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED VLA1 OR NOT HAS_MODEL_LOADED VLA2 OR NOT HAS_MODEL_LOADED VLA3 OR NOT HAS_MODEL_LOADED BFYPRO OR NOT HAS_MODEL_LOADED HFYST WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED SAVANNA OR NOT HAS_MODEL_LOADED REMINGTN WAIT 0 ENDWHILE WHILE NOT HAS_ANIMATION_LOADED LOWRIDER WAIT 0 ENDWHILE // do this conditionally if the car radio is on //SWITCH_AUDIO_ZONE LOWRIDE TRUE m_goals++ ENDIF // update gathering behaviour IF m_goals = 1 // debug warp IF debug_on = 1 IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK IF NOT IS_CAR_DEAD pickup_car SET_CAR_COORDINATES pickup_car 1800.9784 -1895.7749 12.4046 SET_CAR_HEADING pickup_car 136.3521 ENDIF ENDIF ENDIF // if player gets out car remove location blip IF NOT IS_CAR_DEAD pickup_car IF NOT IS_CHAR_IN_CAR scplayer pickup_car IF DOES_BLIP_EXIST location_blip REMOVE_BLIP location_blip ENDIF IF NOT DOES_BLIP_EXIST car_blip //PRINT_NOW S6_23 7000 1 // get back in the lowrider PRINT_NOW S6_35 5000 1 // you need to take the lowrider with you ADD_BLIP_FOR_CAR pickup_car car_blip SET_BLIP_AS_FRIENDLY car_blip TRUE ENDIF ELSE IF NOT DOES_BLIP_EXIST location_blip PRINT_NOW S6_03 7000 1 // get to the lowrider meeting ADD_BLIP_FOR_COORD 1793.0676 -1904.2538 12.3989 location_blip ENDIF IF DOES_BLIP_EXIST car_blip REMOVE_BLIP car_blip ENDIF ENDIF ENDIF // if car is in any car with hydraulics - make it the pickup car temp_int = 0 IF mod_flag = 3 AND control_flag_mod = 3 temp_int = 1 ENDIF IF mod_flag = 0 temp_int = 1 ENDIF IF temp_int = 1 // if car is in any car with hydraulics - make it the pickup car IF IS_CHAR_IN_ANY_CAR scplayer IF NOT IS_CAR_DEAD pickup_car IF NOT IS_CHAR_IN_CAR scplayer pickup_car STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF DOES_CAR_HAVE_HYDRAULICS car MARK_CAR_AS_NO_LONGER_NEEDED pickup_car STORE_CAR_CHAR_IS_IN scplayer pickup_car ENDIF ENDIF ELSE STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF DOES_CAR_HAVE_HYDRAULICS car MARK_CAR_AS_NO_LONGER_NEEDED pickup_car STORE_CAR_CHAR_IS_IN scplayer pickup_car ENDIF ENDIF ENDIF ENDIF IF meeting_is_loaded = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 1792.9243 -1918.9873 150.0 150.0 FALSE CHECKPOINT_SAVE 99 // create initial cars CREATE_CAR REMINGTN 0.0 0.0 0.0 meet_car[0] // top left CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[1] // infront of middle car CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[2] // top right CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[3] // behind middle car CHANGE_CAR_COLOUR meet_car[0] 1 0 CHANGE_CAR_COLOUR meet_car[1] 2 1 CHANGE_CAR_COLOUR meet_car[2] 3 2 CHANGE_CAR_COLOUR meet_car[3] 10 3 SET_CAR_STATUS meet_car[0] STATUS_PHYSICS SET_CAR_STATUS meet_car[3] STATUS_PHYSICS SET_CAR_HYDRAULICS meet_car[0] TRUE SET_CAR_HYDRAULICS meet_car[3] TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER meet_car[0] TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER meet_car[3] TRUE WAIT 0 CREATE_CAR REMINGTN 0.0 0.0 0.0 meet_car[4] // middle car CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[5] // nearest entrance left CREATE_CAR REMINGTN 0.0 0.0 0.0 meet_car[6] // entrance right CHANGE_CAR_COLOUR meet_car[4] 9 4 CHANGE_CAR_COLOUR meet_car[5] 6 5 CHANGE_CAR_COLOUR meet_car[6] 7 6 SET_CAR_STATUS meet_car[4] STATUS_PHYSICS SET_CAR_HYDRAULICS meet_car[4] TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER meet_car[4] TRUE WAIT 0 temp_int = 0 WHILE temp_int < 7 IF NOT IS_CAR_DEAD meet_car[temp_int] SET_CAR_COORDINATES meet_car[temp_int] load_car_x[temp_int] load_car_y[temp_int] load_car_z[temp_int] SET_CAR_HEADING meet_car[temp_int] load_car_h[temp_int] LOCK_CAR_DOORS meet_car[temp_int] CARLOCK_LOCKOUT_PLAYER_ONLY ENDIF temp_int++ ENDWHILE WAIT 0 // create initial peds // guys CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[0] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[2] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[3] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[5] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[6] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[8] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[9] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[11] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[12] WAIT 0 // girls CREATE_CHAR PEDTYPE_MISSION1 HFYST 0.0 0.0 0.0 meet_ped[1] CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[4] CREATE_CHAR PEDTYPE_MISSION1 HFYST 0.0 0.0 0.0 meet_ped[7] CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[10] WAIT 0 // wanderers CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[13] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[14] CREATE_CHAR PEDTYPE_MISSION1 HFYST 0.0 0.0 0.0 meet_ped[15] WAIT 0 // drivers CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[16] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[17] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[18] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[19] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[20] // passenger CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[21] WAIT 0 // set all on foot chars positions temp_int = 0 WHILE temp_int < 16 IF DOES_CHAR_EXIST meet_ped[temp_int] IF NOT IS_CHAR_DEAD meet_ped[temp_int] SET_CHAR_COORDINATES meet_ped[temp_int] load_ped_x[temp_int] load_ped_y[temp_int] load_ped_z[temp_int] SET_CHAR_HEADING meet_ped[temp_int] load_ped_h[temp_int] ENDIF ENDIF temp_int++ ENDWHILE // set some of the guys to tough decision makers temp_int = 0 WHILE temp_int < 22 IF DOES_CHAR_EXIST meet_ped[temp_int] IF NOT IS_CHAR_DEAD meet_ped[temp_int] SET_CHAR_DECISION_MAKER meet_ped[temp_int] tough_dm ENDIF ENDIF temp_int += 4 ENDWHILE // put drivers in cars IF NOT IS_CHAR_DEAD meet_ped[16] IF NOT IS_CAR_DEAD meet_car[1] WARP_CHAR_INTO_CAR meet_ped[16] meet_car[1] ENDIF ENDIF IF NOT IS_CHAR_DEAD meet_ped[17] IF NOT IS_CAR_DEAD meet_car[2] WARP_CHAR_INTO_CAR meet_ped[17] meet_car[2] ENDIF ENDIF IF NOT IS_CHAR_DEAD meet_ped[18] IF NOT IS_CAR_DEAD meet_car[4] WARP_CHAR_INTO_CAR meet_ped[18] meet_car[4] ENDIF ENDIF IF NOT IS_CHAR_DEAD meet_ped[19] IF NOT IS_CAR_DEAD meet_car[0] WARP_CHAR_INTO_CAR meet_ped[19] meet_car[0] ENDIF ENDIF IF NOT IS_CHAR_DEAD meet_ped[20] IF NOT IS_CAR_DEAD meet_car[3] WARP_CHAR_INTO_CAR meet_ped[20] meet_car[3] ENDIF ENDIF // put passenger in car IF DOES_CHAR_EXIST meet_ped[21] IF NOT IS_CHAR_DEAD meet_ped[21] IF NOT IS_CAR_DEAD meet_car[2] WARP_CHAR_INTO_CAR_AS_PASSENGER meet_ped[21] meet_car[2] 0 ENDIF ENDIF ENDIF meeting_is_loaded = 1 ENDIF ELSE IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer 1792.9243 -1918.9873 150.0 150.0 FALSE temp_int = 0 WHILE temp_int < 7 DELETE_CAR meet_car[temp_int] // car 0 - 0 temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 22 DELETE_CHAR meet_ped[temp_int] temp_int++ ENDWHILE meeting_is_loaded = 0 ENDIF ENDIF IF meeting_is_loaded = 1 IF player_has_attacked_meet = 0 IF meet_jump_timer[0] < 300 meet_wheel_fr[0] = 1.0 meet_wheel_fl[0] = 1.0 meet_wheel_br[0] = 0.0 meet_wheel_bl[0] = 0.0 ELSE IF meet_jump_timer[0] > 500 meet_jump_timer[0] = 0 ELSE meet_wheel_fr[0] = 0.0 meet_wheel_fl[0] = 0.0 meet_wheel_br[0] = 0.0 meet_wheel_bl[0] = 0.0 ENDIF ENDIF // car 1 - 3 IF meet_jump_timer[1] > 2000 GENERATE_RANDOM_INT_IN_RANGE 0 16 hyd_index GOSUB set_hydraulics meet_wheel_fr[1] = hyd_rf meet_wheel_fl[1] = hyd_lf meet_wheel_br[1] = hyd_rb meet_wheel_bl[1] = hyd_lb meet_jump_timer[1] = 0 ENDIF // car 2 - 4 IF meet_jump_timer[2] > 300 GENERATE_RANDOM_INT_IN_RANGE 0 16 hyd_index GOSUB set_hydraulics meet_wheel_fr[2] = hyd_rf meet_wheel_fl[2] = hyd_lf meet_wheel_br[2] = hyd_rb meet_wheel_bl[2] = hyd_lb meet_jump_timer[2] = 0 ENDIF IF NOT IS_CAR_DEAD meet_car[0] IF DOES_CAR_HAVE_HYDRAULICS meet_car[0] CONTROL_CAR_HYDRAULICS meet_car[0] meet_wheel_fl[0] meet_wheel_bl[0] meet_wheel_fr[0] meet_wheel_br[0] GET_CAR_COORDINATES meet_car[0] x y z vec_x = load_car_x[0] - x vec_y = load_car_y[0] - y vec_x *= force_multiplier vec_y *= force_multiplier APPLY_FORCE_TO_CAR meet_car[0] vec_x vec_y 0.0 0.0 0.0 0.0 ENDIF ENDIF IF NOT IS_CAR_DEAD meet_car[3] IF DOES_CAR_HAVE_HYDRAULICS meet_car[3] CONTROL_CAR_HYDRAULICS meet_car[3] meet_wheel_fl[1] meet_wheel_bl[1] meet_wheel_fr[1] meet_wheel_br[1] GET_CAR_COORDINATES meet_car[3] x y z vec_x = load_car_x[3] - x vec_y = load_car_y[3] - y vec_x *= force_multiplier vec_y *= force_multiplier APPLY_FORCE_TO_CAR meet_car[3] vec_x vec_y 0.0 0.0 0.0 0.0 ENDIF ENDIF IF NOT IS_CAR_DEAD meet_car[4] IF DOES_CAR_HAVE_HYDRAULICS meet_car[4] CONTROL_CAR_HYDRAULICS meet_car[4] meet_wheel_fl[2] meet_wheel_bl[2] meet_wheel_fr[2] meet_wheel_br[2] GET_CAR_COORDINATES meet_car[4] x y z vec_x = load_car_x[4] - x vec_y = load_car_y[4] - y vec_x *= force_multiplier vec_y *= force_multiplier APPLY_FORCE_TO_CAR meet_car[4] vec_x vec_y 0.0 0.0 0.0 0.0 ENDIF ENDIF SWITCH m_frame_num CASE 0 // peds IF NOT IS_CHAR_DEAD meet_ped[0] GET_SCRIPT_TASK_STATUS meet_ped[0] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CAR_DEAD meet_car[5] IF LOCATE_CAR_3D meet_car[5] load_car_x[5] load_car_y[5] load_car_z[5] 0.2 0.2 1.0 FALSE TASK_PLAY_ANIM -1 M_smklean_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ELSE TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF ELSE TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[0] temp_seq CLEAR_SEQUENCE_TASK temp_seq ELSE IF IS_CHAR_PLAYING_ANIM meet_ped[0] M_smklean_loop IF NOT IS_CAR_DEAD meet_car[5] IF NOT LOCATE_CAR_3D meet_car[5] load_car_x[5] load_car_y[5] load_car_z[5] 0.2 0.2 1.0 FALSE CLEAR_CHAR_TASKS meet_ped[0] ENDIF ENDIF ENDIF ENDIF ENDIF BREAK CASE 1 IF NOT IS_CHAR_DEAD meet_ped[1] GET_SCRIPT_TASK_STATUS meet_ped[1] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CAR_DEAD meet_car[5] IF LOCATE_CAR_3D meet_car[5] load_car_x[5] load_car_y[5] load_car_z[5] 0.2 0.2 1.0 FALSE TASK_PLAY_ANIM -1 F_smklean_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ELSE TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF ELSE TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[1] temp_seq CLEAR_SEQUENCE_TASK temp_seq ELSE IF IS_CHAR_PLAYING_ANIM meet_ped[1] F_smklean_loop IF NOT IS_CAR_DEAD meet_car[5] IF NOT LOCATE_CAR_3D meet_car[5] load_car_x[5] load_car_y[5] load_car_z[5] 0.2 0.2 1.0 FALSE CLEAR_CHAR_TASKS meet_ped[1] ENDIF ENDIF ENDIF ENDIF ENDIF BREAK CASE 2 IF NOT IS_CHAR_DEAD meet_ped[2] GET_SCRIPT_TASK_STATUS meet_ped[2] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD meet_ped[3] TASK_CHAT_WITH_CHAR -1 meet_ped[3] TRUE TRUE ELSE TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[2] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 3 IF NOT IS_CHAR_DEAD meet_ped[3] GET_SCRIPT_TASK_STATUS meet_ped[3] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD meet_ped[2] TASK_CHAT_WITH_CHAR -1 meet_ped[2] FALSE TRUE ELSE TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[3] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 4 IF NOT IS_CHAR_DEAD meet_ped[4] GET_SCRIPT_TASK_STATUS meet_ped[4] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 car_hookertalk PED 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[4] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 5 IF NOT IS_CHAR_DEAD meet_ped[5] GET_SCRIPT_TASK_STATUS meet_ped[5] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD meet_ped[6] TASK_CHAT_WITH_CHAR -1 meet_ped[6] FALSE TRUE ELSE TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[5] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 6 IF NOT IS_CHAR_DEAD meet_ped[6] GET_SCRIPT_TASK_STATUS meet_ped[6] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD meet_ped[5] TASK_CHAT_WITH_CHAR -1 meet_ped[5] TRUE TRUE ELSE TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[6] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 7 IF NOT IS_CHAR_DEAD meet_ped[7] GET_SCRIPT_TASK_STATUS meet_ped[7] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[7] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 8 IF NOT IS_CHAR_DEAD meet_ped[8] GET_SCRIPT_TASK_STATUS meet_ped[8] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[8] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 9 IF NOT IS_CHAR_DEAD meet_ped[9] GET_SCRIPT_TASK_STATUS meet_ped[9] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CAR_DEAD meet_car[6] IF LOCATE_CAR_3D meet_car[6] load_car_x[6] load_car_y[6] load_car_z[6] 0.2 0.2 1.0 FALSE TASK_PLAY_ANIM -1 M_smklean_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ELSE TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF ELSE TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[9] temp_seq CLEAR_SEQUENCE_TASK temp_seq ELSE IF IS_CHAR_PLAYING_ANIM meet_ped[9] M_smklean_loop IF NOT IS_CAR_DEAD meet_car[6] IF NOT LOCATE_CAR_3D meet_car[6] load_car_x[6] load_car_y[6] load_car_z[6] 0.2 0.2 1.0 FALSE CLEAR_CHAR_TASKS meet_ped[9] ENDIF ENDIF ENDIF ENDIF ENDIF BREAK CASE 10 IF NOT IS_CHAR_DEAD meet_ped[10] GET_SCRIPT_TASK_STATUS meet_ped[10] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 fucku PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 woman_idlestance PED 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[10] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 11 IF NOT IS_CHAR_DEAD meet_ped[11] GET_SCRIPT_TASK_STATUS meet_ped[11] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[11] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 12 IF NOT IS_CHAR_DEAD meet_ped[12] GET_SCRIPT_TASK_STATUS meet_ped[12] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE TRUE TRUE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[12] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 13 IF NOT IS_CHAR_DEAD meet_ped[13] GET_SCRIPT_TASK_STATUS meet_ped[13] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 1786.7185 -1915.8783 12.3942 PEDMOVE_WALK 60000 TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 1796.1786 -1919.4648 12.3928 PEDMOVE_WALK 60000 TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 1786.7185 -1915.8783 12.3942 PEDMOVE_WALK 60000 TASK_GO_STRAIGHT_TO_COORD -1 load_ped_x[13] load_ped_y[13] load_ped_z[13] PEDMOVE_WALK 60000 IF NOT IS_CHAR_DEAD meet_ped[9] TASK_TURN_CHAR_TO_FACE_CHAR -1 meet_ped[9] ENDIF TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[13] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 14 IF NOT IS_CHAR_DEAD meet_ped[14] GET_SCRIPT_TASK_STATUS meet_ped[14] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 1800.3669 -1917.3940 12.3938 PEDMOVE_WALK 60000 TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 1789.0570 -1917.9011 12.3936 PEDMOVE_WALK 60000 TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 FALSE TRUE TRUE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 1788.5259 -1907.2943 12.3955 PEDMOVE_WALK 60000 TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 1796.4777 -1908.1738 12.3983 PEDMOVE_WALK 60000 TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[14] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 15 IF NOT IS_CHAR_DEAD meet_ped[15] GET_SCRIPT_TASK_STATUS meet_ped[15] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 1787.6718 -1908.5668 12.3949 PEDMOVE_WALK 60000 TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 1786.7195 -1917.1067 12.3942 PEDMOVE_WALK 60000 TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 FALSE FALSE FALSE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 1787.6718 -1908.5668 12.3949 PEDMOVE_WALK 60000 TASK_GO_STRAIGHT_TO_COORD -1 load_ped_x[15] load_ped_y[15] load_ped_z[15] PEDMOVE_WALK 60000 TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[15] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 16 IF NOT IS_CHAR_DEAD meet_ped[16] GET_SCRIPT_TASK_STATUS meet_ped[16] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 TAP_HAND PED 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[16] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 17 IF NOT IS_CHAR_DEAD meet_ped[17] GET_SCRIPT_TASK_STATUS meet_ped[17] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 TAP_HAND PED 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[17] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 18 // check if player has attacked meeting temp_int = 0 WHILE temp_int < 7 IF DOES_VEHICLE_EXIST meet_car[temp_int] IF NOT IS_CAR_DEAD meet_car[temp_int] IF HAS_CAR_BEEN_DAMAGED_BY_CHAR meet_car[temp_int] scplayer GET_CAR_HEALTH meet_car[temp_int] temp_int2 IF temp_int2 < 950 PRINT_NOW S6_32 5000 1 // ~r~The meeting is dispersing because fucked with one of their cars. player_has_attacked_meet = 1 temp_int = 7 ENDIF ENDIF ELSE PRINT_NOW S6_32 5000 1 // ~r~The meeting is dispersing because fucked with one of their cars. player_has_attacked_meet = 1 temp_int = 7 ENDIF ENDIF temp_int++ ENDWHILE BREAK CASE 19 temp_int = 0 WHILE temp_int < 22 IF DOES_CHAR_EXIST meet_ped[temp_int] IF NOT IS_CHAR_DEAD meet_ped[temp_int] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR meet_ped[temp_int] scplayer PRINT_NOW S6_04 5000 1 // ~r~The meeting is dispersing because you attacked a group member. player_has_attacked_meet = 1 temp_int = 22 ENDIF ELSE PRINT_NOW S6_04 5000 1 // ~r~The meeting is dispersing because you attacked a group member. player_has_attacked_meet = 1 temp_int = 22 ENDIF ENDIF temp_int++ ENDWHILE BREAK ENDSWITCH ELSE IF player_has_attacked_meet = 1 // player has attacked meeting temp_int = 0 WHILE temp_int < 12 IF NOT IS_CHAR_DEAD meet_ped[temp_int] CLEAR_CHAR_TASKS_IMMEDIATELY meet_ped[temp_int] ENDIF temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 22 IF NOT IS_CHAR_DEAD meet_ped[temp_int] SET_CHAR_RELATIONSHIP meet_ped[temp_int] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 ENDIF temp_int++ ENDWHILE // mark stuff as no longer needed temp_int = 0 WHILE temp_int < 22 MARK_CHAR_AS_NO_LONGER_NEEDED meet_ped[temp_int] temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 7 MARK_CAR_AS_NO_LONGER_NEEDED meet_car[temp_int] temp_int++ ENDWHILE m_failed = 1 player_has_attacked_meet++ ENDIF ENDIF ENDIF LVAR_INT told_player_no_cash // check if player has arrived IF NOT IS_CAR_DEAD pickup_car IF IS_CHAR_IN_CAR scplayer pickup_car IF LOCATE_CHAR_IN_CAR_3D scplayer 1793.0676 -1904.2538 12.3989 4.0 4.0 4.0 TRUE IF IS_VEHICLE_ON_ALL_WHEELS pickup_car STORE_SCORE player1 temp_int IF temp_int >= min_bet SET_PLAYER_CONTROL player1 OFF STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car //TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 2000000 m_goals = 99 ELSE //PRINT_NOW NOMONY 5000 1 IF audio_line_is_active = 0 AND NOT IS_MESSAGE_BEING_DISPLAYED IF told_player_no_cash = 0 $audio_string = &LOWR_AK audio_sound_file = SOUND_LOWR_AK START_NEW_SCRIPT audio_line -1 0 0 1 0 told_player_no_cash++ PRINT_HELP S6_40 ENDIF ENDIF ENDIF ENDIF ELSE told_player_no_cash = 0 ENDIF ENDIF ENDIF ENDIF // if player is far away from garage enable it LVAR_INT mod_garage_help_displayed IF mod_garage_help_displayed = 0 IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer 2644.0686 -2029.1355 20.0 20.0 FALSE IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED PRINT_HELP S6_22 REMOVE_BLIP mod_garage_blip ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2644.2524 -2028.2457 12.5547 RADAR_SPRITE_MOD_GARAGE mod_garage_blip mod_garage_help_displayed++ ENDIF ENDIF ELSE // display help for lowrider car LVAR_INT lowrider_instructions_been_displayed IF lowrider_instructions_been_displayed = 0 IF NOT IS_CAR_DEAD pickup_car IF IS_CHAR_IN_CAR scplayer pickup_car IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED // This is not true anymore and needs to be corrected... PRINT_HELP S6_36 // "Press and hold ~m~~widget_hydraulics~ while steering to control the vehicle's hydraulics. Tap ~m~~widget_hydraulics~ to lock hydraulics into place." ); lowrider_instructions_been_displayed++ ENDIF ENDIF ENDIF ELSE IF lowrider_instructions_been_displayed = 1 IF NOT IS_CAR_DEAD pickup_car IF IS_CHAR_IN_CAR scplayer pickup_car IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED PRINT_HELP S6_41 // Press ~m~~widget_horn~ to raise and lower the vehicle's hydraulics. lowrider_instructions_been_displayed++ ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF LVAR_INT player_radio_station_chk IF IS_CHAR_IN_ANY_CAR scplayer GET_RADIO_CHANNEL player_radio_station_chk IF NOT player_radio_station_chk = 12 // RS_OFF because who knows, get_radio_channel decrements by 1 insanely IF NOT audio_zone_status = 0 SWITCH_AUDIO_ZONE LOWRIDE FALSE audio_zone_status = 0 ENDIF ELSE IF NOT audio_zone_status = 1 SWITCH_AUDIO_ZONE LOWRIDE TRUE audio_zone_status = 1 ENDIF ENDIF ELSE IF NOT audio_zone_status = 1 SWITCH_AUDIO_ZONE LOWRIDE TRUE audio_zone_status = 1 ENDIF ENDIF // exit IF m_goals = 99 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF IS_CAR_STOPPED car SWITCH_AUDIO_ZONE LOWRIDE TRUE GOSUB SWEET6_next_stage ENDIF ENDIF ENDIF RETURN // ************************************************************************************************************* // Stage 4 - cutscene of guy getting out of car - and - wager section // ************************************************************************************************************* sweet6_m_stage_4: // reset car positions IF m_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD pickup_car RESET_VEHICLE_HYDRAULICS pickup_car ENDIF SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 CLEAR_AREA 1793.0676 -1904.2538 12.3989 30.0 TRUE IF DOES_BLIP_EXIST location_blip REMOVE_BLIP location_blip ENDIF // set players position IF NOT IS_CAR_DEAD pickup_car SET_CAR_COORDINATES pickup_car 1793.0676 -1904.2538 12.3989 SET_CAR_HEADING pickup_car 171.6728 ENDIF // clear all char tasks temp_int = 0 WHILE temp_int < 16 IF NOT IS_CHAR_DEAD meet_ped[temp_int] CLEAR_CHAR_TASKS_IMMEDIATELY meet_ped[temp_int] ENDIF temp_int++ ENDWHILE // give all the chars empty decision makers temp_int = 0 WHILE temp_int < 22 IF NOT IS_CHAR_DEAD meet_ped[temp_int] SET_CHAR_DECISION_MAKER meet_ped[temp_int] empty_dm ENDIF temp_int++ ENDWHILE // reset all peds positions temp_int = 0 WHILE temp_int < 16 IF NOT IS_CHAR_DEAD meet_ped[temp_int] SET_CHAR_COORDINATES meet_ped[temp_int] load_ped_x[temp_int] load_ped_y[temp_int] load_ped_z[temp_int] SET_CHAR_HEADING meet_ped[temp_int] load_ped_h[temp_int] ENDIF temp_int++ ENDWHILE // reset all car positions temp_int = 0 WHILE temp_int < 7 IF NOT IS_CAR_DEAD meet_car[temp_int] SET_CAR_COORDINATES meet_car[temp_int] load_car_x[temp_int] load_car_y[temp_int] load_car_z[temp_int] SET_CAR_HEADING meet_car[temp_int] load_car_h[temp_int] ENDIF temp_int++ ENDWHILE SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 1796.7489 -1916.9606 13.8583 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1796.1248 -1916.1810 13.8070 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE m_goals++ ENDIF // make guy in centre car get out and walk towards players car IF m_goals = 1 IF NOT IS_CHAR_DEAD meet_ped[18] OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CAR_DEAD meet_car[4] TASK_LEAVE_CAR -1 meet_car[4] ENDIF TASK_GO_STRAIGHT_TO_COORD -1 1792.6309 -1909.2736 12.4371 PEDMOVE_WALK 10000 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[18] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF TIMERA = 0 m_goals++ ENDIF // wait for guy to get to point IF m_goals = 2 IF TIMERA > 5000 OR IS_SKIP_CUTSCENE_BUTTON_PRESSED IF NOT IS_CHAR_DEAD meet_ped[18] CLEAR_CHAR_TASKS_IMMEDIATELY meet_ped[18] SET_CHAR_COORDINATES meet_ped[18] 1792.6309 -1909.2736 12.4371 SET_CHAR_HEADING meet_ped[18] 331.0204 SET_FIXED_CAMERA_POSITION 1793.8159 -1910.7128 14.0346 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1793.4528 -1909.8005 13.8451 JUMP_CUT m_goals++ ENDIF ENDIF ENDIF // guy speaks to player IF m_goals = 3 IF NOT IS_CHAR_DEAD meet_ped[18] OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 prtial_gngtlkD LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 prtial_gngtlkE LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 prtial_gngtlkF LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 prtial_gngtlkG LOWRIDER 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[18] temp_seq CLEAR_SEQUENCE_TASK temp_seq GENERATE_RANDOM_INT_IN_RANGE 0 3 temp_int IF temp_int = 0 $audio_string = &LOWR_BA audio_sound_file = SOUND_LOWR_BA START_NEW_SCRIPT audio_line meet_ped[18] 0 1 1 0 ENDIF IF temp_int = 1 $audio_string = &LOWR_BB audio_sound_file = SOUND_LOWR_BB START_NEW_SCRIPT audio_line meet_ped[18] 0 1 1 0 ENDIF IF temp_int = 2 $audio_string = &LOWR_BC audio_sound_file = SOUND_LOWR_BC START_NEW_SCRIPT audio_line meet_ped[18] 0 1 1 0 ENDIF WAIT 1000 USE_TEXT_COMMANDS TRUE WAIT 1 TIMERA = 0 m_goals++ ENDIF ENDIF // wait for dialogue to finish IF m_goals = 4 IF audio_line_is_active = 0 OR IS_SKIP_CUTSCENE_BUTTON_PRESSED m_goals++ cross_pressed = 1 START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS IF NOT IS_CHAR_DEAD meet_ped[18] CLEAR_CHAR_TASKS meet_ped[18] ENDIF ENDIF ENDIF // show wager window IF m_goals = 5 SWITCH_WIDESCREEN OFF SET_FIXED_CAMERA_POSITION 1793.4847 -1907.3541 13.4436 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1793.1289 -1908.2886 13.4481 JUMP_CUT current_wager = min_bet temp_int = current_wager * -1 ADD_SCORE player1 temp_int temp_float =# min_bet temp_float2 =# max_bet ADD_WIDGET_FLAG WIDGET_PLAYER_INFO 4 // WIDGET_FLAG_ENABLED_IN_CUTSCENE PRINT_HELP_FOREVER WAGRHLP // Press and hold ~m~~widget_place_bet~ to increase wager. Press and hold ~m~~widget_remove_bet~ to decrease wager. Tap ~m~~widget_gambling_continue~ to continue. m_goals++ ENDIF // wager screen IF m_Goals = 6 // check for language change IF HAS_GAME_JUST_RETURNED_FROM_FRONTEND AND HAS_LANGUAGE_CHANGED CLEAR_HELP ENDIF IS_WIDGET_PRESSED WIDGET_REMOVE_BET // Keep the widgets enabled. IS_WIDGET_PRESSED WIDGET_PLACE_BET // ' X ' to increase bet IF IS_WIDGET_PRESSED WIDGET_PLACE_BET IF NOT cross_is_pressed = 1 AND NOT cross_is_pressed = -1 // sort out betting step IF current_wager >= 10000 bet_step = 1000 ELSE IF current_wager >= 1000 bet_step = 100 ELSE IF current_wager >= 100 bet_step = 10 ELSE IF current_wager = 0 bet_step = 2 ELSE bet_step = 1 ENDIF ENDIF ENDIF ENDIF // check betting step doesn't go over players cash STORE_SCORE player1 temp_int IF bet_step > temp_int bet_step = temp_int ENDIF // check betting step won't push us over the maximum bet temp_int = current_wager + bet_step IF temp_int > max_bet bet_step = max_bet - current_wager ENDIF // take cash off player IF bet_step < 0 bet_step *= -1 ENDIF current_wager += bet_step initial_stake += bet_step bet_step *= -1 ADD_SCORE player1 bet_step cross_is_pressed++ IF cross_is_pressed > 1 cross_is_pressed = 2 ELSE TIMERA = 0 ENDIF ELSE IF cross_is_pressed = 1 IF TIMERA > 500 cross_is_pressed = 2 ENDIF ENDIF ENDIF ELSE // reset cross button flag IF NOT cross_is_pressed = 0 cross_is_pressed = 0 ENDIF // remove wager IF IS_WIDGET_PRESSED WIDGET_REMOVE_BET IF NOT square_is_pressed = 1 // sort out betting step IF current_wager > 10000 bet_step = -1000 ELSE IF current_wager > 1000 bet_step = -100 ELSE IF current_wager > 100 bet_step = -10 ELSE bet_step = -1 ENDIF ENDIF ENDIF // check we don't go below minimum bet temp_int = current_wager current_wager += bet_step IF current_wager < min_bet current_wager = 0 bet_step = temp_int bet_step *= -1 ENDIF IF current_wager < min_bet current_wager = min_bet ELSE bet_step *= -1 initial_stake -= bet_step ADD_SCORE player1 bet_step ENDIF square_is_pressed++ IF square_is_pressed > 1 square_is_pressed = 2 ELSE TIMERA = 0 ENDIF ELSE IF TIMERA > 500 square_is_pressed = 2 ENDIF ENDIF ELSE IF NOT square_is_pressed = 0 square_is_pressed = 0 ENDIF ENDIF ENDIF IS_WIDGET_RELEASED WIDGET_PLAYER_INFO // Keep the widget enabled so the player can see their cash. STORE_SCORE player1 temp_int GOSUB sw6_draw_window_1 // ' O ' to ok the bet IF cross_pressed = 0 IF IS_WIDGET_RELEASED WIDGET_GAMBLING_CONTINUE temp_float =# current_wager temp_float *= 0.1 m_goals++ ENDIF ELSE IF NOT IS_BUTTON_PRESSED PAD1 CROSS cross_pressed = 0 ENDIF ENDIF ENDIF // wait for player to place bet IF m_goals = 7 USE_TEXT_COMMANDS FALSE SWITCH_WIDESCREEN ON m_goals++ ENDIF IF m_goals = 8 IF NOT IS_CHAR_DEAD meet_ped[18] TIMERA = 0 m_goals++ ENDIF ENDIF IF m_goals = 9 IF NOT IS_CHAR_DEAD meet_ped[18] SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 1791.4329 -1911.4141 12.4371 PEDMOVE_WALK 10000 IF NOT IS_CAR_DEAD meet_car[4] TASK_ENTER_CAR_AS_DRIVER -1 meet_car[4] 5000 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[18] temp_seq CLEAR_SEQUENCE_TASK temp_seq TIMERA = 0 m_goals++ ENDIF ENDIF IF m_goals = 10 IF TIMERA > 2000 CLEAR_PRINTS DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE m_goals = 99 ENDIF ENDIF GOSUB meeting_stage3_update_ai // exit IF m_goals = 99 GOSUB SWEET6_next_stage ENDIF RETURN // ************************************************************************************************************* // Stage 5 - set up minigame scene - cutscene of girl getting into car // ************************************************************************************************************* sweet6_m_stage_5: IF m_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON CLEAR_PRINTS SET_FIXED_CAMERA_POSITION 1788.1068 -1903.8041 13.3553 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1788.9438 -1904.3428 13.2601 JUMP_CUT LOAD_SCENE 1788.9438 -1904.3428 13.2601 m_goals++ ENDIF IF m_goals = 1 REQUEST_MODEL VLA1 REQUEST_MODEL VLA2 REQUEST_MODEL VLA3 REQUEST_MODEL BFYPRO REQUEST_MODEL HFYST REQUEST_MODEL SAVANNA REQUEST_MODEL REMINGTN REQUEST_ANIMATION LOWRIDER LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED VLA1 OR NOT HAS_MODEL_LOADED VLA2 OR NOT HAS_MODEL_LOADED VLA3 OR NOT HAS_MODEL_LOADED BFYPRO OR NOT HAS_MODEL_LOADED HFYST WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED SAVANNA OR NOT HAS_MODEL_LOADED REMINGTN WAIT 0 ENDWHILE WHILE NOT HAS_ANIMATION_LOADED LOWRIDER WAIT 0 ENDWHILE // set floats load_car_x[0] = 1798.2028 // top left load_car_y[0] = -1926.2216 load_car_z[0] = 12.3895 load_car_h[0] = 73.1404 load_car_x[1] = 1802.8640 // infront of middle car load_car_y[1] = -1918.7413 load_car_z[1] = 12.3931 load_car_h[1] = 357.6193 load_car_x[2] = 1784.6350 // top right load_car_y[2] = -1924.9684 load_car_z[2] = 12.3901 load_car_h[2] = 305.0620 load_car_x[3] = 1784.1881 // behind middle car load_car_y[3] = -1913.4393 load_car_z[3] = 12.3923 load_car_h[3] = 183.5814 load_car_x[4] = 1792.3180 // middle car load_car_y[4] = -1919.5132 load_car_z[4] = 12.3928 load_car_h[4] = 8.2504 load_car_x[5] = 1801.4617 // nearest entrance left load_car_y[5] = -1905.6914 load_car_z[5] = 12.3995 load_car_h[5] = 189.9314 load_car_x[6] = 1787.6423 // entrance right load_car_y[6] = -1901.1360 load_car_z[6] = 12.3949 load_car_h[6] = 145.4181 // peds load_ped_x[0] = 1800.0 load_ped_y[0] = -1907.8301 load_ped_z[0] = 12.4398 load_ped_h[0] = 73.7198 load_ped_x[1] = 1799.8458 load_ped_y[1] = -1912.1237 load_ped_z[1] = 12.4582 load_ped_h[1] = 48.2386 load_ped_x[2] = 1800.0861 load_ped_y[2] = -1910.4337 load_ped_z[2] = 12.4372 load_ped_h[2] = 83.7398 load_ped_x[3] = 1801.3206 load_ped_y[3] = -1916.4268 load_ped_z[3] = 12.4343 load_ped_h[3] = 83.7398 load_ped_x[4] = 1798.5405 load_ped_y[4] = -1922.1797 load_ped_z[4] = 12.4310 load_ped_h[4] = 46.5794 load_ped_x[5] = 1799.4904 load_ped_y[5] = -1920.6166 load_ped_z[5] = 12.4322 load_ped_h[5] = 46.5794 load_ped_x[6] = 1787.2549 load_ped_y[6] = -1926.5966 load_ped_z[6] = 12.4283 load_ped_h[6] = 323.6194 load_ped_x[7] = 1786.4419 load_ped_y[7] = -1920.2008 load_ped_z[7] = 12.4322 load_ped_h[7] = 306.1995 load_ped_x[8] = 1785.8242 load_ped_y[8] = -1919.1622 load_ped_z[8] = 12.4324 load_ped_h[8] = 294.6196 load_ped_x[9] = 1786.1021 load_ped_y[9] = -1913.8329 load_ped_z[9] = 12.4327 load_ped_h[9] = 280.7204 load_ped_x[10] = 1786.8058 load_ped_y[10] = -1905.2460 load_ped_z[10] = 12.4342 load_ped_h[10] = 262.8214 load_ped_x[11] = 1788.6932 load_ped_y[11] = -1902.1385 load_ped_z[11] = 12.4348 load_ped_h[11] = 247.1610 load_ped_x[12] = 1794.6162 load_ped_y[12] = -1899.6078 load_ped_z[12] = 12.4398 load_ped_h[12] = 191.0618 load_ped_x[13] = 1799.1346 load_ped_y[13] = -1902.4882 load_ped_z[13] = 12.4431 load_ped_h[13] = 157.4622 load_ped_x[14] = 1795.6742 load_ped_y[14] = -1899.5686 load_ped_z[14] = 12.4407 load_ped_h[14] = 162.6424 load_ped_x[15] = 1800.3689 load_ped_y[15] = -1907.0029 load_ped_z[15] = 12.4403 load_ped_h[15] = 77.6197 load_ped_x[16] = 1800.8259 load_ped_y[16] = -1917.3248 load_ped_z[16] = 12.4340 load_ped_h[16] = 36.1793 load_ped_x[17] = 1785.8500 load_ped_y[17] = -1917.9550 load_ped_z[17] = 12.4324 load_ped_h[17] = 287.0602 load_ped_x[18] = 1788.5383 load_ped_y[18] = -1927.0908 load_ped_z[18] = 12.4280 load_ped_h[18] = 345.1206 load_ped_x[19] = 1787.3230 load_ped_y[19] = -1904.1097 load_ped_z[19] = 12.4337 load_ped_h[19] = 263.3813 load_ped_x[20] = 1798.3904 load_ped_y[20] = -1901.7328 load_ped_z[20] = 12.4429 load_ped_h[20] = 142.4208 force_multiplier = 0.01 // create all stuff required for lowrider minigame --------------- // delete all previously created cars and peds temp_int = 0 WHILE temp_int < 7 IF DOES_VEHICLE_EXIST meet_car[temp_int] DELETE_CAR meet_car[temp_int] ENDIF temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 22 IF DOES_CHAR_EXIST meet_ped[temp_int] DELETE_CHAR meet_ped[temp_int] ENDIF temp_int++ ENDWHILE // ---- setup player -------------------------------------------- IF NOT DOES_VEHICLE_EXIST pickup_car CREATE_CAR SAVANNA 1793.4956 -1907.4233 12.3992 pickup_car SET_CAR_HEADING pickup_car 181.5231 ELSE IF NOT IS_CAR_DEAD pickup_car SET_CAR_COORDINATES pickup_car 1793.4956 -1907.4233 12.3992 SET_CAR_HEADING pickup_car 181.5231 ENDIF ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF NOT IS_CAR_DEAD pickup_car WARP_CHAR_INTO_CAR scplayer pickup_car TASK_PLAY_ANIM scplayer sit_relaxed LOWRIDER 4.0 TRUE FALSE FALSE TRUE -1 ENDIF // create all spector peds and cars --------------------------------------- CREATE_CAR REMINGTN 0.0 0.0 0.0 meet_car[0] // top left CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[1] // infront of middle car CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[2] // top right CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[3] // behind middle car CREATE_CAR REMINGTN 0.0 0.0 0.0 meet_car[4] // middle car CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[5] // nearest entrance left CREATE_CAR REMINGTN 0.0 0.0 0.0 meet_car[6] // entrance right CHANGE_CAR_COLOUR meet_car[0] 1 0 CHANGE_CAR_COLOUR meet_car[1] 2 1 CHANGE_CAR_COLOUR meet_car[2] 3 2 CHANGE_CAR_COLOUR meet_car[3] 10 3 CHANGE_CAR_COLOUR meet_car[4] 9 4 CHANGE_CAR_COLOUR meet_car[5] 6 5 CHANGE_CAR_COLOUR meet_car[6] 7 6 // bouncing cars ----------------------------------------------------------- temp_int = 0 WHILE temp_int < 7 SET_CAR_COORDINATES meet_car[temp_int] load_car_x[temp_int] load_car_y[temp_int] load_car_z[temp_int] SET_CAR_HEADING meet_car[temp_int] load_car_h[temp_int] FREEZE_CAR_POSITION meet_car[temp_int] TRUE LOCK_CAR_DOORS meet_car[temp_int] CARLOCK_LOCKOUT_PLAYER_ONLY temp_int++ ENDWHILE FREEZE_CAR_POSITION meet_car[4] FALSE SET_CAR_STATUS meet_car[4] STATUS_PHYSICS SET_CAR_HYDRAULICS meet_car[4] TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER meet_car[4] TRUE SET_CAR_PROOFS meet_car[4] TRUE TRUE TRUE TRUE TRUE // guys --------------------------------------------------------------------- CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[0] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[1] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[2] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[3] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[4] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[5] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[6] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[7] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[8] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[9] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[10] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[11] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[12] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[13] // girls -------------------------------------------------------------------- CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[14] CREATE_CHAR PEDTYPE_MISSION1 HFYST 0.0 0.0 0.0 meet_ped[15] CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[16] CREATE_CHAR PEDTYPE_MISSION1 HFYST 0.0 0.0 0.0 meet_ped[17] CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[18] CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[19] CREATE_CHAR PEDTYPE_MISSION1 HFYST 0.0 0.0 0.0 meet_ped[20] // driver ------------------------------------------------------------------- CREATE_CHAR_INSIDE_CAR meet_car[4] PEDTYPE_MISSION1 VLA3 meet_ped[21] temp_int = 0 WHILE temp_int < 21 SET_CHAR_COORDINATES meet_ped[temp_int] load_ped_x[temp_int] load_ped_y[temp_int] load_ped_z[temp_int] SET_CHAR_HEADING meet_ped[temp_int] load_ped_h[temp_int] temp_int++ ENDWHILE // bounce girl -------------------------------------------------------------- CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 1788.2734 -1903.3641 12.4345 bounce_girl SET_CHAR_HEADING bounce_girl 232.5412 LVAR_INT gang_member_to_delete IF NOT IS_CAR_DEAD pickup_car IF NOT IS_CAR_PASSENGER_SEAT_FREE pickup_car 0 GET_CHAR_IN_CAR_PASSENGER_SEAT pickup_car 0 gang_member_to_delete DELETE_CHAR gang_member_to_delete ENDIF ENDIF // load music track --------------------------------------------------------- PRELOAD_BEAT_TRACK 0 temp_int = 0 WHILE NOT temp_int = CUTSCENE_TRACK_LOADED //WRITE_DEBUG_WITH_INT TRACK_STATUS temp_int WAIT 0 GET_BEAT_TRACK_STATUS temp_int ENDWHILE m_goals++ ENDIF // girl gets into car ----------------------------------------------------------- IF m_goals = 2 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD bounce_girl SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 1791.1782 -1905.8403 12.3975 PEDMOVE_WALK 10000 IF NOT IS_CAR_DEAD pickup_car TASK_ENTER_CAR_AS_PASSENGER -1 pickup_car 5000 0 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bounce_girl temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF CLEAR_PRINTS m_goals++ ENDIF // wait for girl to get in car --------------------------------------------------- IF m_goals = 3 IF NOT IS_SKIP_CUTSCENE_BUTTON_PRESSED IF NOT IS_CHAR_DEAD bounce_girl IF NOT IS_CAR_DEAD pickup_car IF IS_CHAR_IN_CAR bounce_girl pickup_car m_goals++ TIMERA = 0 ENDIF ENDIF ENDIF ELSE m_goals++ TIMERA = 0 ENDIF ENDIF // switch camera view ------------------------------------------------------------ IF m_goals = 4 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DISPLAY_HUD FALSE SWITCH_WIDESCREEN OFF SET_FIXED_CAMERA_POSITION 1788.5157 -1910.3184 14.8901 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1789.3551 -1909.8429 14.6269 JUMP_CUT DISPLAY_RADAR FALSE IF NOT IS_CAR_DEAD pickup_car LOCK_CAR_DOORS pickup_car CARLOCK_LOCKED_PLAYER_INSIDE APPLY_BRAKES_TO_PLAYERS_CAR player1 ON SET_CAR_PROOFS pickup_car TRUE TRUE TRUE TRUE TRUE ENDIF IF NOT IS_CHAR_DEAD bounce_girl CLEAR_CHAR_TASKS_IMMEDIATELY bounce_girl IF NOT IS_CAR_DEAD pickup_car IF IS_CAR_PASSENGER_SEAT_FREE pickup_car 0 WARP_CHAR_INTO_CAR_AS_PASSENGER bounce_girl pickup_car 0 ENDIF ENDIF ENDIF offx = 0.6200 offy = 0.3100 offz = -0.1670 IF NOT IS_CAR_DEAD pickup_car IF NOT IS_CHAR_DEAD bounce_girl IF IS_CAR_MODEL pickup_car SAVANNA CLEAR_CHAR_TASKS_IMMEDIATELY bounce_girl ATTACH_CHAR_TO_CAR bounce_girl pickup_car offx offy offz FACING_FORWARD 0.0 WEAPONTYPE_UNARMED ENDIF ENDIF ENDIF OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_hair LOWRIDER 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_hurry LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD bounce_girl IF IS_CHAR_ATTACHED_TO_ANY_CAR bounce_girl PERFORM_SEQUENCE_TASK bounce_girl temp_seq ENDIF ENDIF CLEAR_SEQUENCE_TASK temp_seq TIMERA = 0 CLEAR_PRINTS // flags set for the lowrider minigame lowrider_level = -1 lowrider_last_level = -1 IF sw6_mission_attempts = 0 lowrider_opposition_skill = 2 ELSE IF lowrider_opposition_skill < 1 lowrider_opposition_skill = 1 ENDIF ENDIF DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PLAY_BEAT_TRACK m_goals++ ENDIF // wait a few secs before starting game, to explain help etc --------------------- IF m_goals = 5 SET_PLAYER_CONTROL player1 ON START_NEW_SCRIPT beat_display //lowrider_opposition_skill = 1 START_NEW_SCRIPT lowrider_game pickup_car meet_car[4] bounce_girl TIMERA = 0 camera_timer = 0 camera_mode = 0 CLEAR_PRINTS CLEAR_HELP PRINT_HELP S6_39 // Push the right analog stick in time with the music. help_timer = 0 help_flag = 0 TIMERA = 0 m_goals++ ENDIF // wait for lowrider minigame to start IF m_goals = 6 IF lowrider_game_is_active = 1 m_goals++ ENDIF ENDIF // lowrider minigame -------------------------------------------------------------- IF m_goals = 7 IF lowrider_game_is_active = 1 // do camera work IF select_pressed = 0 IF camera_timer > 5000 OR IS_BUTTON_PRESSED PAD1 SELECT //OR IS_WIDGET_RELEASED WIDGET_CAM_TOGGLE - fuck the camera toggle camera_mode++ IF camera_mode >= 5 camera_mode = 0 ENDIF IF NOT IS_CAR_DEAD pickup_car GET_CAR_COORDINATES pickup_car x y z ENDIF IF camera_mode = 0 SET_FIXED_CAMERA_POSITION 1803.9780 -1909.3691 15.0671 0.0 0.0 0.0 POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF IF camera_mode = 1 SET_FIXED_CAMERA_POSITION 1795.3690 -1900.9991 14.1795 0.0 0.0 0.0 POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF IF camera_mode = 2 SET_FIXED_CAMERA_POSITION 1788.7931 -1902.9899 13.7203 0.0 0.0 0.0 POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF IF camera_mode = 3 SET_FIXED_CAMERA_POSITION 1789.3766 -1912.1953 14.0671 0.0 0.0 0.0 POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF IF camera_mode = 4 SET_FIXED_CAMERA_POSITION 1796.4092 -1912.2311 13.8316 0.0 0.0 0.0 POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF select_pressed++ camera_timer = 0 ENDIF ELSE IF NOT IS_BUTTON_PRESSED PAD1 SELECT //AND NOT IS_WIDGET_RELEASED WIDGET_CAM_TOGGLE - fuck the camera toggle select_pressed = 0 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_C //IF IS_DEBUG_CAMERA_ON // for camera position GET_ACTIVE_CAMERA_COORDINATES x y z IF NOT IS_CAR_DEAD pickup_car GET_CAR_COORDINATES pickup_car x2 y2 z2 GET_CAR_HEADING pickup_car heading ENDIF heading *= -1.0 COS heading temp_float SIN heading temp_float2 // get coords relative to car vec_x = x - x2 vec_y = y - y2 vec_z = z - z2 // work out new vec_x vec2_x = vec_x * temp_float temp_float3 = vec_y * temp_float2 vec2_x -= temp_float3 // work out new vec_y vec2_y = vec_x * temp_float2 temp_float3 = vec_y * temp_float vec2_y += temp_float3 // save SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "FIXED_CAMERA_POSITION - OFFSET FROM CAR = " SAVE_FLOAT_TO_DEBUG_FILE vec2_x SAVE_FLOAT_TO_DEBUG_FILE vec2_y SAVE_FLOAT_TO_DEBUG_FILE vec_z // for camera point at GET_ACTIVE_CAMERA_POINT_AT x y z // get coords relative to car vec_x = x - x2 vec_y = y - y2 vec_z = z - z2 // work out new vec_x vec2_x = vec_x * temp_float temp_float3 = vec_y * temp_float2 vec2_x -= temp_float3 // work out new vec_y vec2_y = vec_x * temp_float2 temp_float3 = vec_y * temp_float vec2_y += temp_float3 // save SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "CAMERA_POINT_AT - OFFSET FROM CAR = " SAVE_FLOAT_TO_DEBUG_FILE vec2_x SAVE_FLOAT_TO_DEBUG_FILE vec2_y SAVE_FLOAT_TO_DEBUG_FILE vec_z //ENDIF ENDIF ELSE m_goals++ ENDIF ENDIF // finish minigame IF m_goals = 8 SET_PLAYER_CONTROL player1 FALSE bd_terminate_script = 1 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE m_goals = 99 ENDIF GOSUB meeting_stage5_update_ai // exit IF m_goals = 99 GOSUB SWEET6_next_stage ENDIF RETURN // ************************************************************************************************************* // Stage 6 - cutscene at end of minigame // ************************************************************************************************************* sweet6_m_stage_6: IF m_goals = 0 STOP_BEAT_TRACK CLEAR_PRINTS RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF SET_FIXED_CAMERA_POSITION 1785.7662 -1924.3331 14.4648 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1786.2827 -1923.4926 14.3015 JUMP_CUT IF NOT IS_CAR_DEAD pickup_car RESET_VEHICLE_HYDRAULICS pickup_car ENDIF m_goals++ ENDIF IF m_goals = 1 // delete all previously created cars and peds temp_int = 0 WHILE temp_int < 7 IF DOES_VEHICLE_EXIST meet_car[temp_int] DELETE_CAR meet_car[temp_int] ENDIF temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 22 IF DOES_CHAR_EXIST meet_ped[temp_int] DELETE_CHAR meet_ped[temp_int] ENDIF temp_int++ ENDWHILE IF DOES_CHAR_EXIST bounce_girl DELETE_CHAR bounce_girl ENDIF // ---- setup player -------------------------------------------- IF NOT DOES_VEHICLE_EXIST pickup_car CREATE_CAR SAVANNA 1793.4956 -1907.4233 12.3992 pickup_car SET_CAR_HEADING pickup_car 181.5231 ELSE IF NOT IS_CAR_DEAD pickup_car SET_CAR_COORDINATES pickup_car 1793.4956 -1907.4233 12.3992 SET_CAR_HEADING pickup_car 181.5231 ENDIF ENDIF // create all spector peds and cars --------------------------------------- CREATE_CAR REMINGTN 0.0 0.0 0.0 meet_car[0] // top left CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[1] // infront of middle car CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[2] // top right CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[3] // behind middle car CREATE_CAR REMINGTN 0.0 0.0 0.0 meet_car[4] // middle car CREATE_CAR SAVANNA 0.0 0.0 0.0 meet_car[5] // nearest entrance left CREATE_CAR REMINGTN 0.0 0.0 0.0 meet_car[6] // entrance right CHANGE_CAR_COLOUR meet_car[0] 1 0 CHANGE_CAR_COLOUR meet_car[1] 2 1 CHANGE_CAR_COLOUR meet_car[2] 3 2 CHANGE_CAR_COLOUR meet_car[3] 10 3 CHANGE_CAR_COLOUR meet_car[4] 9 4 CHANGE_CAR_COLOUR meet_car[5] 6 5 CHANGE_CAR_COLOUR meet_car[6] 7 6 // bouncing cars ----------------------------------------------------------- temp_int = 0 WHILE temp_int < 7 SET_CAR_COORDINATES meet_car[temp_int] load_car_x[temp_int] load_car_y[temp_int] load_car_z[temp_int] SET_CAR_HEADING meet_car[temp_int] load_car_h[temp_int] FREEZE_CAR_POSITION meet_car[temp_int] TRUE LOCK_CAR_DOORS meet_car[temp_int] CARLOCK_LOCKOUT_PLAYER_ONLY temp_int++ ENDWHILE FREEZE_CAR_POSITION meet_car[4] FALSE SET_CAR_STATUS meet_car[4] STATUS_PHYSICS SET_CAR_HYDRAULICS meet_car[4] TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER meet_car[4] TRUE SET_CAR_PROOFS meet_car[4] TRUE TRUE TRUE TRUE TRUE // guys --------------------------------------------------------------------- CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[0] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[1] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[2] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[3] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[4] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[5] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[6] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[7] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[8] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[9] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[10] CREATE_CHAR PEDTYPE_MISSION1 VLA3 0.0 0.0 0.0 meet_ped[11] CREATE_CHAR PEDTYPE_MISSION1 VLA1 0.0 0.0 0.0 meet_ped[12] CREATE_CHAR PEDTYPE_MISSION1 VLA2 0.0 0.0 0.0 meet_ped[13] // girls -------------------------------------------------------------------- CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[14] CREATE_CHAR PEDTYPE_MISSION1 HFYST 0.0 0.0 0.0 meet_ped[15] CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[16] CREATE_CHAR PEDTYPE_MISSION1 HFYST 0.0 0.0 0.0 meet_ped[17] CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[18] CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 0.0 0.0 0.0 meet_ped[19] CREATE_CHAR PEDTYPE_MISSION1 HFYST 0.0 0.0 0.0 meet_ped[20] // driver ------------------------------------------------------------------- CREATE_CHAR_INSIDE_CAR meet_car[4] PEDTYPE_MISSION1 VLA3 meet_ped[21] temp_int = 0 WHILE temp_int < 21 SET_CHAR_COORDINATES meet_ped[temp_int] load_ped_x[temp_int] load_ped_y[temp_int] load_ped_z[temp_int] SET_CHAR_HEADING meet_ped[temp_int] load_ped_h[temp_int] temp_int++ ENDWHILE // bounce girl -------------------------------------------------------------- CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 1788.2734 -1903.3641 12.4345 bounce_girl SET_CHAR_HEADING bounce_girl 232.5412 IF NOT IS_CAR_DEAD pickup_car GET_NUMBER_OF_PASSENGERS pickup_car temp_int IF temp_int > 0 // do fuck all ELSE IF NOT IS_CHAR_DEAD bounce_girl WARP_CHAR_INTO_CAR_AS_PASSENGER bounce_girl pickup_car 0 ENDIF ENDIF ENDIF // put player into car CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF NOT IS_CAR_DEAD pickup_car WARP_CHAR_INTO_CAR scplayer pickup_car TASK_PLAY_ANIM scplayer sit_relaxed LOWRIDER 4.0 TRUE FALSE FALSE TRUE -1 ENDIF LOAD_SCENE 1791.5741 -1911.4371 12.4378 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE m_goals++ ENDIF // make opposition dude get out and walk towards player IF m_goals = 2 IF NOT IS_CHAR_DEAD meet_ped[21] OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CAR_DEAD meet_car[4] TASK_LEAVE_CAR -1 meet_car[4] ENDIF TASK_GO_STRAIGHT_TO_COORD -1 1791.5741 -1911.4371 12.4378 PEDMOVE_WALK 10000 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[21] temp_seq CLEAR_SEQUENCE_TASK temp_seq TIMERA = 0 m_goals++ ENDIF ENDIF // cut to dude talking IF m_goals = 3 IF TIMERA > 5000 SET_FIXED_CAMERA_POSITION 1795.4304 -1905.0176 13.6653 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1795.1445 -1905.9680 13.5431 JUMP_CUT IF NOT IS_CHAR_DEAD meet_ped[21] CLEAR_CHAR_TASKS_IMMEDIATELY meet_ped[21] SET_CHAR_COORDINATES meet_ped[21] 1795.9678 -1909.3329 12.4389 SET_CHAR_HEADING meet_ped[21] 20.3199 OPEN_SEQUENCE_TASK temp_seq TASK_LOOK_AT_CHAR -1 scplayer 99999 TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[21] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF TIMERA = 0 m_goals++ ENDIF ENDIF // play dialogue depending on whether player won or lost IF m_goals = 4 IF lowrider_pscore > lowrider_oscore GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int IF temp_int = 0 $audio_string = &LOWR_CA audio_sound_file = SOUND_LOWR_CA START_NEW_SCRIPT audio_line meet_ped[21] 0 1 1 0 ELSE $audio_string = &LOWR_CB audio_sound_file = SOUND_LOWR_CB START_NEW_SCRIPT audio_line meet_ped[21] 0 1 1 0 ENDIF TIMERA = 0 m_goals++ ELSE lowrider_opposition_skill-- GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int IF temp_int = 0 $audio_string = &LOWR_DA audio_sound_file = SOUND_LOWR_DA START_NEW_SCRIPT audio_line meet_ped[21] 0 1 1 0 ELSE $audio_string = &LOWR_DB audio_sound_file = SOUND_LOWR_DB START_NEW_SCRIPT audio_line meet_ped[21] 0 1 1 0 ENDIF TIMERA = 0 m_goals += 2 current_wager *= -1 TIMERA = 0 ENDIF WAIT 1000 ENDIF // turn around and walk back to car IF m_goals = 5 IF audio_line_is_active = 0 OR TIMERA > 3000 IF NOT IS_CHAR_DEAD meet_ped[21] CLEAR_CHAR_TASKS meet_ped[21] CLEAR_LOOK_AT meet_ped[21] OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 1794.2987 -1917.2456 12.4339 PEDMOVE_WALK 10000 IF NOT IS_CAR_DEAD meet_car[4] TASK_ENTER_CAR_AS_DRIVER -1 meet_car[4] 10000 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[21] temp_seq CLEAR_SEQUENCE_TASK temp_seq TIMERA = 0 m_goals += 2 ENDIF ENDIF ENDIF // turn around and walk back to car IF m_goals = 6 IF audio_line_is_active = 0 OR TIMERA > 3000 IF NOT IS_CHAR_DEAD meet_ped[21] CLEAR_CHAR_TASKS meet_ped[21] CLEAR_LOOK_AT meet_ped[21] SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 1794.2987 -1917.2456 12.4339 PEDMOVE_WALK 10000 IF NOT IS_CAR_DEAD meet_car[4] TASK_ENTER_CAR_AS_DRIVER -1 meet_car[4] 10000 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[21] temp_seq CLEAR_SEQUENCE_TASK temp_seq TIMERA = 0 m_goals++ ENDIF ENDIF ENDIF // wait for a couple of secs IF m_goals = 7 IF TIMERA > 3000 IF lowrider_pscore > lowrider_oscore m_goals++ TIMERA = 0 ELSE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE m_goals = 99 ENDIF ENDIF ENDIF // show cesar and kendal getting out car IF m_goals = 8 TIMERA = 0 m_goals++ ENDIF // start animated cutscene IF m_goals = 9 //IF TIMERA > 4500 // load animated cutscene //WRITE_DEBUG fading_out DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //WRITE_DEBUG faded_out // delete all stuff at gathering temp_int = 0 WHILE temp_int < 7 IF DOES_VEHICLE_EXIST meet_car[temp_int] DELETE_CAR meet_car[temp_int] ENDIF temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 22 IF DOES_CHAR_EXIST meet_ped[temp_int] DELETE_CHAR meet_ped[temp_int] ENDIF temp_int++ ENDWHILE IF DOES_CHAR_EXIST bounce_girl DELETE_CHAR bounce_girl ENDIF // remove stuff from memory MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH MARK_MODEL_AS_NO_LONGER_NEEDED SAVANNA MARK_MODEL_AS_NO_LONGER_NEEDED VLA1 MARK_MODEL_AS_NO_LONGER_NEEDED VLA2 MARK_MODEL_AS_NO_LONGER_NEEDED VLA3 MARK_MODEL_AS_NO_LONGER_NEEDED BFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED HFYST MARK_MODEL_AS_NO_LONGER_NEEDED SAVANNA MARK_MODEL_AS_NO_LONGER_NEEDED REMINGTN REMOVE_ANIMATION LOWRIDER // shift pickup car to position IF NOT IS_CAR_DEAD pickup_car RESET_VEHICLE_HYDRAULICS pickup_car CLEAR_AREA 1784.757 -1890.923 12.399 25.0 TRUE SET_CAR_COORDINATES pickup_car 1784.757 -1889.923 12.399 SET_CAR_HEADING pickup_car 90.0 FREEZE_CAR_POSITION pickup_car TRUE ENDIF WAIT 500 LOAD_CUTSCENE SWEET6B WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE m_goals = 99 //ENDIF ENDIF // cleanup IF m_goals = 99 // delete all stuff at gathering temp_int = 0 WHILE temp_int < 7 IF DOES_VEHICLE_EXIST meet_car[temp_int] DELETE_CAR meet_car[temp_int] ENDIF temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 22 IF DOES_CHAR_EXIST meet_ped[temp_int] DELETE_CHAR meet_ped[temp_int] ENDIF temp_int++ ENDWHILE IF DOES_CHAR_EXIST bounce_girl DELETE_CHAR bounce_girl ENDIF // create a couple of cars that leave LVAR_INT leaving_car1 leaving_car2 LVAR_INT leaving_driver1 leaving_driver2 LVAR_INT leaving_ped[3] REQUEST_MODEL REMINGTN REQUEST_MODEL SAVANNA REQUEST_MODEL VLA1 REQUEST_MODEL VLA2 REQUEST_MODEL VLA3 WHILE NOT HAS_MODEL_LOADED REMINGTN OR NOT HAS_MODEL_LOADED SAVANNA OR NOT HAS_MODEL_LOADED VLA1 OR NOT HAS_MODEL_LOADED VLA2 OR NOT HAS_MODEL_LOADED VLA3 WAIT 0 ENDWHILE CREATE_CAR REMINGTN 1787.2657 -1925.1617 12.3900 leaving_car1 SET_CAR_HEADING leaving_car1 24.6517 CREATE_CAR SAVANNA 1799.9189 -1926.1404 12.3895 leaving_car2 SET_CAR_HEADING leaving_car2 341.4824 CREATE_CHAR_INSIDE_CAR leaving_car1 PEDTYPE_CIVMALE VLA1 leaving_driver1 CREATE_CHAR_INSIDE_CAR leaving_car2 PEDTYPE_CIVMALE VLA1 leaving_driver2 CREATE_CHAR PEDTYPE_CIVMALE VLA1 1796.6996 -1915.7422 12.3946 leaving_ped[0] SET_CHAR_HEADING leaving_ped[0] 80.7 CREATE_CHAR PEDTYPE_CIVMALE VLA2 1791.6226 -1919.6207 12.3927 leaving_ped[1] SET_CHAR_HEADING leaving_ped[1] 10.9 CREATE_CHAR PEDTYPE_CIVMALE VLA3 1786.0667 -1911.4623 12.3937 leaving_ped[2] SET_CHAR_HEADING leaving_ped[2] 120.0 MARK_MODEL_AS_NO_LONGER_NEEDED REMINGTN MARK_MODEL_AS_NO_LONGER_NEEDED SAVANNA MARK_MODEL_AS_NO_LONGER_NEEDED VLA1 MARK_MODEL_AS_NO_LONGER_NEEDED VLA2 MARK_MODEL_AS_NO_LONGER_NEEDED VLA3 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON MARK_CHAR_AS_NO_LONGER_NEEDED leaving_ped[0] MARK_CHAR_AS_NO_LONGER_NEEDED leaving_ped[1] MARK_CHAR_AS_NO_LONGER_NEEDED leaving_ped[2] MARK_CHAR_AS_NO_LONGER_NEEDED leaving_driver1 MARK_CHAR_AS_NO_LONGER_NEEDED leaving_driver2 MARK_CAR_AS_NO_LONGER_NEEDED leaving_car1 MARK_CAR_AS_NO_LONGER_NEEDED leaving_car2 IF NOT IS_CAR_DEAD pickup_car FREEZE_CAR_POSITION pickup_car TRUE // 3MASTER - legacy bug, CJ can clip into the car after the mission is finished, set him a bit to the side GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pickup_car -2.08 -0.23 0.657 end_offx end_offy end_offz GET_GROUND_Z_FOR_3D_COORD end_offx end_offy end_offz end_offz SET_CHAR_COORDINATES scplayer end_offx end_offy end_offz ENDIF LOAD_SCENE 1793.9894 -1908.4166 12.3995 DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF lowrider_pscore > lowrider_oscore m_passed = 1 ELSE PRINT_NOW S6_33 5000 1 // you failed the lowrider challenge m_failed = 1 ENDIF WAIT 0 GOSUB SWEET6_next_stage ENDIF GOSUB meeting_stage5_update_ai RETURN // ************************************************************************************************************* // GLOBAL FUNCTIONS - run continuously throughout lifetime of level // ************************************************************************************************************* sweet6_global_functions: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_4 force_multiplier += 0.01 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_5 force_multiplier += -0.01 ENDIF IF DOES_VEHICLE_EXIST pickup_car IF IS_CAR_DEAD pickup_car PRINT_NOW S6_34 5000 1 // your lowrider is history m_failed = 1 ENDIF ENDIF LVAR_INT ped_density_flag IF IS_PLAYER_PLAYING player1 IF m_stage > 2 IF ped_density_flag = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 1793.0676 -1904.2538 125.0 125.0 FALSE SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 ped_density_flag = 1 ENDIF ELSE IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer 1793.0676 -1904.2538 150.0 150.0 FALSE SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 ped_density_flag = 0 ENDIF ENDIF ENDIF ENDIF RETURN // ************************************************************************************************************* // MISSION SPECIFIC GOSUBS // ************************************************************************************************************* update_attached_girl: IF NOT IS_CAR_DEAD pickup_car IF NOT IS_CHAR_DEAD bounce_girl ATTACH_CHAR_TO_CAR bounce_girl pickup_car offx offy offz FACING_FORWARD 0.0 WEAPONTYPE_UNARMED ENDIF ENDIF RETURN LVAR_FLOAT hyd_lf hyd_lb hyd_rf hyd_rb LVAR_INT hyd_index set_hydraulics: IF hyd_index = 0 hyd_lf = 0.0 hyd_lb = 0.0 hyd_rf = 0.0 hyd_rb = 0.0 ENDIF IF hyd_index = 1 hyd_lf = 0.0 hyd_lb = 0.0 hyd_rf = 0.0 hyd_rb = 1.0 ENDIF IF hyd_index = 2 hyd_lf = 0.0 hyd_lb = 0.0 hyd_rf = 1.0 hyd_rb = 0.0 ENDIF IF hyd_index = 3 hyd_lf = 0.0 hyd_lb = 0.0 hyd_rf = 1.0 hyd_rb = 1.0 ENDIF IF hyd_index = 4 hyd_lf = 0.0 hyd_lb = 1.0 hyd_rf = 0.0 hyd_rb = 0.0 ENDIF IF hyd_index = 5 hyd_lf = 0.0 hyd_lb = 1.0 hyd_rf = 0.0 hyd_rb = 1.0 ENDIF IF hyd_index = 6 hyd_lf = 0.0 hyd_lb = 1.0 hyd_rf = 1.0 hyd_rb = 0.0 ENDIF IF hyd_index = 7 hyd_lf = 0.0 hyd_lb = 1.0 hyd_rf = 1.0 hyd_rb = 1.0 ENDIF IF hyd_index = 8 hyd_lf = 1.0 hyd_lb = 0.0 hyd_rf = 0.0 hyd_rb = 0.0 ENDIF IF hyd_index = 9 hyd_lf = 1.0 hyd_lb = 0.0 hyd_rf = 0.0 hyd_rb = 1.0 ENDIF IF hyd_index = 10 hyd_lf = 1.0 hyd_lb = 0.0 hyd_rf = 1.0 hyd_rb = 0.0 ENDIF IF hyd_index = 11 hyd_lf = 1.0 hyd_lb = 0.0 hyd_rf = 1.0 hyd_rb = 1.0 ENDIF IF hyd_index = 12 hyd_lf = 1.0 hyd_lb = 1.0 hyd_rf = 0.0 hyd_rb = 0.0 ENDIF IF hyd_index = 13 hyd_lf = 1.0 hyd_lb = 1.0 hyd_rf = 0.0 hyd_rb = 1.0 ENDIF IF hyd_index = 14 hyd_lf = 1.0 hyd_lb = 1.0 hyd_rf = 1.0 hyd_rb = 0.0 ENDIF IF hyd_index = 15 hyd_lf = 1.0 hyd_lb = 1.0 hyd_rf = 1.0 hyd_rb = 1.0 ENDIF RETURN meeting_stage3_update_ai: // car 0 - 0 IF meet_jump_timer[0] < 300 meet_wheel_fr[0] = 1.0 meet_wheel_fl[0] = 1.0 meet_wheel_br[0] = 0.0 meet_wheel_bl[0] = 0.0 ELSE IF meet_jump_timer[0] > 500 meet_jump_timer[0] = 0 ELSE meet_wheel_fr[0] = 0.0 meet_wheel_fl[0] = 0.0 meet_wheel_br[0] = 0.0 meet_wheel_bl[0] = 0.0 ENDIF ENDIF // car 1 - 3 IF meet_jump_timer[1] > 2000 GENERATE_RANDOM_INT_IN_RANGE 0 16 hyd_index GOSUB set_hydraulics meet_wheel_fr[1] = hyd_rf meet_wheel_fl[1] = hyd_lf meet_wheel_br[1] = hyd_rb meet_wheel_bl[1] = hyd_lb meet_jump_timer[1] = 0 ENDIF IF NOT IS_CAR_DEAD meet_car[0] IF DOES_CAR_HAVE_HYDRAULICS meet_car[0] CONTROL_CAR_HYDRAULICS meet_car[0] meet_wheel_fl[0] meet_wheel_bl[0] meet_wheel_fr[0] meet_wheel_br[0] GET_CAR_COORDINATES meet_car[0] x y z vec_x = load_car_x[0] - x vec_y = load_car_y[0] - y vec_x *= force_multiplier vec_y *= force_multiplier APPLY_FORCE_TO_CAR meet_car[0] vec_x vec_y 0.0 0.0 0.0 0.0 ENDIF ENDIF IF NOT IS_CAR_DEAD meet_car[3] IF DOES_CAR_HAVE_HYDRAULICS meet_car[3] CONTROL_CAR_HYDRAULICS meet_car[3] meet_wheel_fl[1] meet_wheel_bl[1] meet_wheel_fr[1] meet_wheel_br[1] GET_CAR_COORDINATES meet_car[3] x y z vec_x = load_car_x[3] - x vec_y = load_car_y[3] - y vec_x *= force_multiplier vec_y *= force_multiplier APPLY_FORCE_TO_CAR meet_car[3] vec_x vec_y 0.0 0.0 0.0 0.0 ENDIF ENDIF // peds SWITCH m_frame_num CASE 0 IF NOT IS_CHAR_DEAD meet_ped[0] GET_SCRIPT_TASK_STATUS meet_ped[0] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 M_smklean_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[0] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 1 IF NOT IS_CHAR_DEAD meet_ped[1] GET_SCRIPT_TASK_STATUS meet_ped[1] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 F_smklean_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[1] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 2 IF NOT IS_CHAR_DEAD meet_ped[2] GET_SCRIPT_TASK_STATUS meet_ped[2] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD meet_ped[3] TASK_CHAT_WITH_CHAR -1 meet_ped[3] TRUE TRUE ELSE TASK_PAUSE -1 1000 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[2] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 3 IF NOT IS_CHAR_DEAD meet_ped[3] GET_SCRIPT_TASK_STATUS meet_ped[3] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD meet_ped[2] TASK_CHAT_WITH_CHAR -1 meet_ped[2] FALSE TRUE ELSE TASK_PAUSE -1 1000 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[3] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 4 IF NOT IS_CHAR_DEAD meet_ped[4] GET_SCRIPT_TASK_STATUS meet_ped[4] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 car_hookertalk PED 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[4] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 5 IF NOT IS_CHAR_DEAD meet_ped[5] GET_SCRIPT_TASK_STATUS meet_ped[5] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD meet_ped[6] TASK_CHAT_WITH_CHAR -1 meet_ped[6] FALSE TRUE ELSE TASK_PAUSE -1 1000 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[5] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 6 IF NOT IS_CHAR_DEAD meet_ped[6] GET_SCRIPT_TASK_STATUS meet_ped[6] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD meet_ped[5] TASK_CHAT_WITH_CHAR -1 meet_ped[5] TRUE TRUE ELSE TASK_PAUSE -1 1000 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[6] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 7 IF NOT IS_CHAR_DEAD meet_ped[7] GET_SCRIPT_TASK_STATUS meet_ped[7] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[7] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 8 IF NOT IS_CHAR_DEAD meet_ped[8] GET_SCRIPT_TASK_STATUS meet_ped[8] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[8] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 9 IF NOT IS_CHAR_DEAD meet_ped[9] GET_SCRIPT_TASK_STATUS meet_ped[9] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 M_smklean_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[9] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 10 IF NOT IS_CHAR_DEAD meet_ped[10] GET_SCRIPT_TASK_STATUS meet_ped[10] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 fucku PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 woman_idlestance PED 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[10] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 11 IF NOT IS_CHAR_DEAD meet_ped[11] GET_SCRIPT_TASK_STATUS meet_ped[11] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[11] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 12 IF NOT IS_CHAR_DEAD meet_ped[12] GET_SCRIPT_TASK_STATUS meet_ped[12] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE TRUE TRUE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[12] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 13 IF NOT IS_CHAR_DEAD meet_ped[13] GET_SCRIPT_TASK_STATUS meet_ped[13] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[13] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 14 IF NOT IS_CHAR_DEAD meet_ped[14] GET_SCRIPT_TASK_STATUS meet_ped[14] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[14] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 15 IF NOT IS_CHAR_DEAD meet_ped[15] GET_SCRIPT_TASK_STATUS meet_ped[15] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[15] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 16 IF NOT IS_CHAR_DEAD meet_ped[16] GET_SCRIPT_TASK_STATUS meet_ped[16] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 TAP_HAND PED 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[16] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 17 IF NOT IS_CHAR_DEAD meet_ped[17] GET_SCRIPT_TASK_STATUS meet_ped[17] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 TAP_HAND PED 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[17] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK ENDSWITCH RETURN meeting_stage5_update_ai: SWITCH m_frame_num CASE 0 // peds IF NOT IS_CHAR_DEAD meet_ped[0] GET_SCRIPT_TASK_STATUS meet_ped[0] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 M_smklean_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[0] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 1 IF NOT IS_CHAR_DEAD meet_ped[1] GET_SCRIPT_TASK_STATUS meet_ped[1] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[1] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 2 IF NOT IS_CHAR_DEAD meet_ped[2] GET_SCRIPT_TASK_STATUS meet_ped[2] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[2] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 3 IF NOT IS_CHAR_DEAD meet_ped[3] GET_SCRIPT_TASK_STATUS meet_ped[3] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 M_smkstnd_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[3] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 4 IF NOT IS_CHAR_DEAD meet_ped[4] GET_SCRIPT_TASK_STATUS meet_ped[4] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 M_smkstnd_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[4] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 5 IF NOT IS_CHAR_DEAD meet_ped[5] GET_SCRIPT_TASK_STATUS meet_ped[5] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[5] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 6 IF NOT IS_CHAR_DEAD meet_ped[6] GET_SCRIPT_TASK_STATUS meet_ped[6] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 M_smkstnd_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[6] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 7 IF NOT IS_CHAR_DEAD meet_ped[7] GET_SCRIPT_TASK_STATUS meet_ped[7] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[7] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 8 IF NOT IS_CHAR_DEAD meet_ped[8] GET_SCRIPT_TASK_STATUS meet_ped[8] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[8] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 9 IF NOT IS_CHAR_DEAD meet_ped[9] GET_SCRIPT_TASK_STATUS meet_ped[9] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 M_smklean_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[9] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 10 IF NOT IS_CHAR_DEAD meet_ped[10] GET_SCRIPT_TASK_STATUS meet_ped[10] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[10] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 11 IF NOT IS_CHAR_DEAD meet_ped[11] GET_SCRIPT_TASK_STATUS meet_ped[11] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 M_smklean_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[11] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 12 IF NOT IS_CHAR_DEAD meet_ped[12] GET_SCRIPT_TASK_STATUS meet_ped[12] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 M_smkstnd_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[12] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 13 IF NOT IS_CHAR_DEAD meet_ped[13] GET_SCRIPT_TASK_STATUS meet_ped[13] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[13] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 14 IF NOT IS_CHAR_DEAD meet_ped[14] GET_SCRIPT_TASK_STATUS meet_ped[14] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_B_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[14] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 15 IF NOT IS_CHAR_DEAD meet_ped[15] GET_SCRIPT_TASK_STATUS meet_ped[15] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[15] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 16 IF NOT IS_CHAR_DEAD meet_ped[16] GET_SCRIPT_TASK_STATUS meet_ped[16] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_C_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[16] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 17 IF NOT IS_CHAR_DEAD meet_ped[17] GET_SCRIPT_TASK_STATUS meet_ped[17] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[17] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 18 IF NOT IS_CHAR_DEAD meet_ped[18] GET_SCRIPT_TASK_STATUS meet_ped[18] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[18] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 19 IF NOT IS_CHAR_DEAD meet_ped[19] GET_SCRIPT_TASK_STATUS meet_ped[19] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[19] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK CASE 20 IF NOT IS_CHAR_DEAD meet_ped[20] GET_SCRIPT_TASK_STATUS meet_ped[20] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 RAP_A_Loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK meet_ped[20] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF BREAK ENDSWITCH RETURN // ****************************************************************************************** // ONSCREEN TEXT GOSUBS // ****************************************************************************************** s6_txt_big_blue_centre: SET_TEXT_SCALE 0.9 2.4 SET_TEXT_COLOUR 128 148 178 255 SET_TEXT_CENTRE ON SET_TEXT_WRAPX 2000.0 SET_TEXT_PROPORTIONAL ON RETURN s6_txt_big_red_centre: SET_TEXT_SCALE 0.9 2.4 SET_TEXT_COLOUR 081 25 29 255 SET_TEXT_CENTRE ON SET_TEXT_WRAPX 2000.0 SET_TEXT_PROPORTIONAL ON RETURN s6_txt_med_blue_left: SET_TEXT_SCALE 0.54 1.44 SET_TEXT_COLOUR 128 148 178 255 SET_TEXT_JUSTIFY ON SET_TEXT_WRAPX 2000.0 SET_TEXT_PROPORTIONAL ON RETURN sw6_draw_window_1: // Give the wager widget the data it needs for display. // // Args are: cell int0 int1 color label text //================================================================================================= SET_WIDGET_INFO2 WIDGET_WAGER 0 max_bet 0 WAGER_GREEN BJ_03 DUMMY // Max Wager SET_WIDGET_INFO2 WIDGET_WAGER 1 min_bet 0 WAGER_GREEN BJ_02 DUMMY // Min Wager SET_WIDGET_INFO2 WIDGET_WAGER 2 current_wager 0 WAGER_GREEN WOF_04 DUMMY // This Wager SET_WIDGET_INFO2 WIDGET_WAGER 3 0 0 WAGER_WHITE DUMMY DUMMY // Empty cell SET_WIDGET_VALUE WIDGET_WAGER 0.0 // This lets the wager widget know we don't need an extra cell at the bottom. RETURN text_sw6: SET_TEXT_COLOUR 180 180 180 255 SET_TEXT_SCALE 0.4714 2.5077 SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_JUSTIFY OFF SET_TEXT_CENTRE OFF SET_TEXT_WRAPX 640.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_BACKGROUND OFF RETURN // ================================================================= // GOSUB: Next_Stage (sets flags and timers for next mission stage) // ================================================================= SWEET6_next_stage: m_stage++ m_goals = 0 dialogue_flag = 0 help_flag = 0 dialogue_timer = 0 help_timer = 0 TIMERA = 0 TIMERB = 0 RETURN // ************************************************************************************************************* // END OF LEVEL GOSUBS - fail, pass, cleanup // ************************************************************************************************************* // FAIL mission_failed_SWEET6: STOP_BEAT_TRACK REMOVE_BLIP mod_garage_blip stop_gargae_for_neil = 1 PRINT_BIG M_FAIL 5000 1 DEACTIVATE_GARAGE modlast DEACTIVATE_GARAGE bodLAwN RETURN // PASS mission_passed_SWEET6: STOP_BEAT_TRACK PLAY_MISSION_PASSED_TUNE 1 // Make sure this comes AFTER STOP_BEAT_TRACK. REMOVE_BLIP mod_garage_blip ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2644.2524 -2028.2457 12.5547 RADAR_SPRITE_MOD_GARAGE mod_garage_blip REMOVE_BLIP mod_garage1 ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 1043.4 -1025.3 34.4 RADAR_SPRITE_MOD_GARAGE mod_garage1 REMOVE_BLIP sweet_contact_blip ACTIVATE_GARAGE modlast ACTIVATE_GARAGE bodLAwN current_wager *= 2 PRINT_WITH_NUMBER_BIG ( M_PASS ) current_wager 5000 1 //"Mission Passed!" ADD_SCORE player1 current_wager CLEAR_WANTED_LEVEL PLAYER1 PLAYER_MADE_PROGRESS 1 flag_sweet_mission_counter ++ lowrider_minigame_unlocked = 1 stop_gargae_for_neil = 0 // unlock mod garage REGISTER_MISSION_PASSED SWEET_6 SWITCH_CAR_GENERATOR sw6_car_gen1 101 RETURN // CLEANUP mission_cleanup_SWEET6: REMOVE_WIDGET_FLAG WIDGET_PLAYER_INFO 4 // WIDGET_FLAG_ENABLED_IN_CUTSCENE START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 SWITCH_AUDIO_ZONE LOWRIDE FALSE IF DOES_VEHICLE_EXIST pickup_car IF NOT IS_CAR_DEAD pickup_car SET_CAR_STATUS pickup_car STATUS_ABANDONED FREEZE_CAR_POSITION pickup_car FALSE SET_CAR_PROOFS pickup_car FALSE FALSE FALSE FALSE FALSE IF IS_PLAYER_PLAYING player1 APPLY_BRAKES_TO_PLAYERS_CAR player1 FALSE ENDIF LOCK_CAR_DOORS pickup_car CARLOCK_UNLOCKED IF IS_CHAR_IN_CAR scplayer pickup_car CLEAR_CHAR_TASKS_IMMEDIATELY scplayer WARP_CHAR_INTO_CAR scplayer pickup_car ENDIF ENDIF ENDIF // remove everything temp_int = 0 WHILE temp_int < 7 IF DOES_VEHICLE_EXIST meet_car[temp_int] IF NOT IS_CAR_DEAD meet_car[temp_int] IF temp_int = 0 OR temp_int = 3 OR temp_int = 4 IF DOES_CAR_HAVE_HYDRAULICS meet_car[temp_int] CONTROL_CAR_HYDRAULICS meet_car[temp_int] 0.0 0.0 0.0 0.0 ENDIF ENDIF SET_CAR_STATUS meet_car[temp_int] STATUS_SIMPLE SET_CAR_HYDRAULICS meet_car[temp_int] FALSE ENDIF MARK_CAR_AS_NO_LONGER_NEEDED meet_car[temp_int] ENDIF temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 22 IF DOES_CHAR_EXIST meet_ped[temp_int] IF NOT IS_CHAR_DEAD meet_ped[temp_int] ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED meet_ped[temp_int] ENDIF temp_int++ ENDWHILE IF DOES_CHAR_EXIST mechanic_dude MARK_CHAR_AS_NO_LONGER_NEEDED mechanic_dude ENDIF IF DOES_CHAR_EXIST bounce_girl MARK_CHAR_AS_NO_LONGER_NEEDED bounce_girl ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH MARK_MODEL_AS_NO_LONGER_NEEDED SAVANNA MARK_MODEL_AS_NO_LONGER_NEEDED VLA1 MARK_MODEL_AS_NO_LONGER_NEEDED VLA2 MARK_MODEL_AS_NO_LONGER_NEEDED VLA3 MARK_MODEL_AS_NO_LONGER_NEEDED BFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED HFYST MARK_MODEL_AS_NO_LONGER_NEEDED SAVANNA MARK_MODEL_AS_NO_LONGER_NEEDED REMINGTN REMOVE_ANIMATION CAR REMOVE_ANIMATION GANGS REMOVE_ANIMATION LOWRIDER REMOVE_BLIP location_blip REMOVE_BLIP car_blip CLEAR_ONSCREEN_COUNTER lowrider_pscore CLEAR_ONSCREEN_COUNTER lowrider_oscore DISPLAY_RADAR TRUE DONT_SUPPRESS_CAR_MODEL SAVANNA // terminate beat display script (if it's running) bd_terminate_script = 1 // remove decision makers REMOVE_DECISION_MAKER empty_dm REMOVE_DECISION_MAKER tough_dm // === RESTORE ENVIRONMENT SETTINGS === SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* SWEET7 ****************************************** // ******************************** Grave Misfortune ************************************* // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME SWEET7 // Mission start stuff GOSUB mission_start_sweet7 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_sweet7_failed ENDIF GOSUB mission_cleanup_sweet7 MISSION_END { // Variables for mission LVAR_INT sw7_visible LVAR_INT gan1_gzs gan2_gzs // gang_zone_strengths //cutscene stuff LVAR_INT sw7_ctskip_needed LVAR_INT sw7_newctskip_needed //Mission blips LVAR_INT sw7_sweetB LVAR_INT sw7_kaneB LVAR_INT sw7_hearseB LVAR_INT sw7_cementB LVAR_INT sw7_pursuitcarB LVAR_INT sw7_blipswap LVAR_INT sw7_protector1B LVAR_INT sw7_protector2B LVAR_INT sw7_protector3B LVAR_INT sw7_protector4B LVAR_INT sw7_protector5B LVAR_INT sw7_protector6B LVAR_INT sw7_reinforce1B LVAR_INT sw7_reinforce2B //Condition flags LVAR_INT sw7_missionprogress LVAR_INT sw7_chauffeurkilltask LVAR_INT sw7_nextprompt LVAR_INT sw7_protector1dead LVAR_INT sw7_protector2dead LVAR_INT sw7_protector3dead LVAR_INT sw7_kanemove1 LVAR_INT sw7_goonmove1 LVAR_INT sw7_begingangfight LVAR_INT sw7_grove1fight LVAR_INT sw7_grove2fight LVAR_INT sw7_sweetfight LVAR_INT sweet_onroute LVAR_INT sw7_grove1onroute LVAR_INT sw7_grove2onroute LVAR_INT sw7_cockedandloaded LVAR_INT sw7_endanims LVAR_INT sw7_shotanim LVAR_INT sw7_checkkane LVAR_INT sw7_cardamprompt LVAR_INT sw7_finalkaneexit LVAR_INT sw7_finalchauffexit LVAR_INT sw7_kanearrival //Vehicles LVAR_INT sw7_kanehearse LVAR_INT sw7_escapehearse LVAR_INT sw7_sweethearse LVAR_INT sw7_pursuitcar LVAR_INT sw7_hearsehealth //Peds and sequences LVAR_INT sw7_grove1 LVAR_INT sw7_grove2 LVAR_INT sw7_sweetjumpseq LVAR_INT sw7_sweetseqA LVAR_INT sw7_sweetfinalseq LVAR_INT sw7_sbeginseq LVAR_INT sw7_mopupseq LVAR_INT sw7_grove1seqA LVAR_INT sw7_g1beginseq LVAR_INT sw7_grove2seqA LVAR_INT sw7_g2beginseq LVAR_INT sw7_goondm LVAR_INT sw7_emptydm LVAR_INT sw7_toughdm LVAR_INT sw7_normaldm LVAR_INT sw7_preach LVAR_INT sw7_greetinface LVAR_INT sw7_kane LVAR_INT sw7_kane1seq LVAR_INT sw7_kaneseqA LVAR_INT sw7_kanechauffeur LVAR_INT sw7_chauffeur1seq LVAR_INT sw7_chauffeur3seq LVAR_INT sw7_chauffattackseq LVAR_INT sw7_protector1 LVAR_INT sw7_protector1seqA LVAR_INT sw7_protector2 LVAR_INT sw7_protector2seqA LVAR_INT sw7_protector3 LVAR_INT sw7_protector3seqA LVAR_INT sw7_protector4 LVAR_INT sw7_protector5 LVAR_INT sw7_protector6 LVAR_INT sw7_protector4seqA LVAR_INT sw7_protector5seqA LVAR_INT sw7_protector6seqA LVAR_INT sw7_reinforce1 LVAR_INT sw7_reinforce1seq LVAR_INT sw7_reinforce2 LVAR_INT sw7_reinforce2seq LVAR_INT sw7_pursuitseq LVAR_INT sw7_escapechauffeur LVAR_INT sw7_mopupcount LVAR_INT muP1 muP2 muP3 muP4 muP5 muP6 LVAR_INT muR1 muR2 LVAR_INT sw7_pursuitunderway LVAR_INT sw7_newcutscene //Objects LVAR_INT sw7_casket //coords LVAR_FLOAT sw7_coord_area_cemetry_min_x LVAR_FLOAT sw7_coord_area_cemetry_min_y LVAR_FLOAT sw7_coord_area_cemetry_max_x LVAR_FLOAT sw7_coord_area_cemetry_max_y //global health bars and timers VAR_INT sw7_kanehealth VAR_INT sw7_kanefuckedhealth //coordinates LVAR_INT sw7_fleeindex // coord array indexer LVAR_FLOAT sw7_fleeKX[10] LVAR_FLOAT sw7_fleeKY[10] LVAR_FLOAT sw7_fleeKZ[10] LVAR_FLOAT sw7_flee1X[10] LVAR_FLOAT sw7_flee1Y[10] LVAR_FLOAT sw7_flee1Z[10] LVAR_FLOAT sw7_flee2X[10] LVAR_FLOAT sw7_flee2Y[10] LVAR_FLOAT sw7_flee2Z[10] LVAR_FLOAT sw7_flee3X[10] LVAR_FLOAT sw7_flee3Y[10] LVAR_FLOAT sw7_flee3Z[10] // New group teaching vars and blips LVAR_INT sw7_group LVAR_INT sw7_groupsize LVAR_INT sw7_leaders LVAR_INT sw7_banger1 LVAR_INT sw7_banger2 LVAR_INT sw7_banger1b LVAR_INT sw7_banger2b LVAR_INT sw7_bangershouseb LVAR_INT sw7_bang1swap LVAR_INT sw7_bang2swap LVAR_INT sw7_checkgangblips LVAR_INT sw7_passedb LVAR_INT sw7_banger1jumpseq LVAR_INT sw7_banger2jumpseq LVAR_INT sw7_compilerfool VAR_INT sw7_funeraltimer LVAR_INT sw7_drivebyinprogress LVAR_INT sw7_ptrfullfixflag LVAR_INT sw7_escapeaborted LVAR_INT sw7_helpfix LVAR_INT sw7_disbandfix sw7_regroupfix LVAR_INT sw7_respectvalue LVAR_INT sw7_ballastext sw7_ballasb sw7_sweetturn LVAR_INT sw7_ganghelpbuffer sw7_followhelpbuffer LVAR_INT sw7_currentwanted LVAR_INT sw7_parkedcar LVAR_INT sw7_respect1 sw7_respect2 sw7_respect3 LVAR_INT sw7_respect1B sw7_respect2B sw7_respect3B LVAR_INT sw7_gangfrenzy sw7_inc1blip sw7_inc2blip sw7_inc3blip LVAR_INT sw7_grove2guardseq sw7_grove1guardseq LVAR_INT sw7_potentialmembers LVAR_INT sw7_timeron LVAR_INT sw7_newskipfix //Dialogue and audio variables LVAR_INT sfx_crying LVAR_INT sw7_dialogue sw7_audio_char LVAR_INT sw7_text_timer_diff sw7_text_timer_end sw7_text_timer_start LVAR_TEXT_LABEL sw7_text[74] LVAR_INT sw7_audio[74] sw7_audio_slot sw7_alt_slot sw7_counter sw7_ahead_counter sw7_audio_playing sw7_audio_underway LVAR_INT sw7_convo_underway sw7_convo_counter sw7_random sw7_leftcar_counter sw7_backcar_counter sw7_ganghire_counter LVAR_INT sw7_driveby_counter sw7_cut_counter LVAR_INT sw7_forcehelp sw7_forcehelp = 0 LVAR_INT sw7_banger1meetseq sw7_banger2meetseq sw7_playerwallseq testhealth // **************************************** Mission Start ********************************** mission_start_sweet7: REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT sweet7 flag_player_on_mission = 1 //disable_mod_garage = 1 WAIT 0 SET_PLAYER_CONTROL player1 OFF // ****************************************START OF CUTSCENE******************************** SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT FORCE_WEATHER_NOW WEATHER_SUNNY_LA WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_CUTSCENE SWEET7A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE CLEAR_AREA 2508.9753 -1671.5371 12.3853 500.0 TRUE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE RELEASE_WEATHER // ****************************************END OF CUTSCENE********************************** WAIT 0 SET_CHAR_COORDINATES scplayer 2515.2068 -1674.0859 12.7552 SET_CHAR_HEADING scplayer 54.1779 LOAD_SPECIAL_CHARACTER 1 sweet REQUEST_MODEL greenwoo REQUEST_MODEL wmoprea REQUEST_MODEL BFYRI REQUEST_MODEL admiral REQUEST_MODEL sadler REQUEST_MODEL MICRO_UZI REQUEST_MODEL COLT45 REQUEST_MODEL CHROMEGUN REQUEST_MODEL BALLAS3 REQUEST_MODEL BALLAS2 REQUEST_MODEL BALLAS1 REQUEST_MODEL FAM3 REQUEST_MODEL FAM2 REQUEST_MODEL FAM1 REQUEST_ANIMATION graveyard REQUEST_ANIMATION SMOKING LOAD_ALL_MODELS_NOW WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_MODEL_LOADED wmoprea OR NOT HAS_MODEL_LOADED BFYRI OR NOT HAS_MODEL_LOADED admiral OR NOT HAS_MODEL_LOADED sadler WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED greenwoo OR NOT HAS_MODEL_LOADED MICRO_UZI OR NOT HAS_MODEL_LOADED CHROMEGUN WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED BALLAS3 OR NOT HAS_MODEL_LOADED BALLAS2 OR NOT HAS_MODEL_LOADED BALLAS1 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED FAM3 OR NOT HAS_MODEL_LOADED FAM2 OR NOT HAS_MODEL_LOADED FAM1 OR NOT HAS_ANIMATION_LOADED graveyard OR NOT HAS_ANIMATION_LOADED SMOKING WAIT 0 ENDWHILE WAIT 500 // ************************************ Declare Variables ********************************* sw7_timeron = 0 sw7_followhelpbuffer = 0 sw7_ganghelpbuffer = 0 sw7_helpfix = 0 sw7_disbandfix = 0 sw7_regroupfix = 0 sw7_ptrfullfixflag = 0 sw7_escapeaborted = 0 sw7_funeraltimer = 0 sw7_drivebyinprogress = 0 sw7_finalkaneexit = 0 sw7_finalchauffexit = 0 sw7_compilerfool = 0 sw7_newcutscene = 0 sw7_newctskip_needed = 0 sw7_ctskip_needed = 0 sw7_missionprogress = 0 sw7_fleeindex = 0 sw7_chauffeurkilltask = 0 sw7_nextprompt = -13 sw7_begingangfight = 0 sw7_protector1dead = 0 sw7_protector2dead = 0 sw7_protector3dead = 0 sw7_grove1fight = 0 sw7_grove2fight = 0 sw7_sweetfight = 0 sw7_newskipfix = 0 sw7_endanims = 0 sw7_checkkane = 0 sw7_pursuitunderway = 0 sw7_mopupcount = 0 sw7_coord_area_cemetry_min_x = 806.4608 sw7_coord_area_cemetry_min_y = -1129.8440 sw7_coord_area_cemetry_max_x = 952.2434 sw7_coord_area_cemetry_max_y = -1051.8409 sw7_fleeKX[1] = 931.9752 sw7_fleeKY[1] = -1062.447 sw7_fleeKZ[1] = 23.6757 sw7_flee1X[1] = 921.2714 sw7_flee1Y[1] = -1064.7358 sw7_flee1Z[1] = 23.327 sw7_flee2X[1] = 920.3427 sw7_flee2Y[1] = -1061.4033 sw7_flee2Z[1] = 23.6757 sw7_flee3X[1] = 921.2690 sw7_flee3Y[1] = -1081.521 sw7_flee3Z[1] = 23.623 sw7_fleeKX[2] = 922.6375 sw7_fleeKY[2] = -1122.2816 sw7_fleeKZ[2] = 23.0028 sw7_fleeKX[3] = 899.5370 sw7_fleeKY[3] = -1114.6938 sw7_fleeKZ[3] = 23.2320 sw7_flee1X[2] = 913.2869 sw7_flee1Y[2] = -1092.1680 sw7_flee1Z[2] = 23.1942 sw7_flee2X[2] = 911.2869 sw7_flee2Y[2] = -1092.1680 sw7_flee2Z[2] = 22.1942 sw7_flee3X[2] = 914.2869 sw7_flee3Y[2] = -1092.1680 sw7_flee3Z[2] = 25.1942 sw7_flee1X[3] = 886.0813 sw7_flee1Y[3] = -1114.8986 sw7_flee1Z[3] = 22.9879 sw7_flee2X[3] = 883.5623 sw7_flee2Y[3] = -1112.9398 sw7_flee2Z[3] = 23.0419 sw7_flee3X[3] = 881.4856 sw7_flee3Y[3] = -1116.9850 sw7_flee3Z[3] = 23.0419 sw7_fleeKX[4] = 907.4198 sw7_fleeKY[4] = -1101.5787 sw7_fleeKZ[4] = 23.2969 muP1 = 0 muP2 = 0 muP3 = 0 muP4 = 0 muP5 = 0 muP6 = 0 muR1 = 0 muR2 = 0 sw7_funeraltimer = 270000 SWITCH_ROADS_OFF 2297.0376 -1664.6005 10.8474 2324.8655 -1652.1244 14.8382 SWITCH_PED_ROADS_OFF 2297.0376 -1664.6005 10.8474 2324.8655 -1652.1244 14.8382 GET_ZONE_GANG_STRENGTH GAN1 GANG_GROVE gan1_gzs GET_ZONE_GANG_STRENGTH GAN2 GANG_GROVE gan2_gzs SET_ZONE_GANG_STRENGTH GAN1 GANG_GROVE 0 //default is 40 SET_ZONE_GANG_STRENGTH GAN2 GANG_GROVE 0 //default is 40 sw7_missionprogress = 0 GET_MAX_WANTED_LEVEL sw7_currentwanted CLEAR_AREA 954.4976 -1103.5941 22.8015 10.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR greenwoo GROVE4L_ CLEAR_AREA 2508.0845 -1671.1903 12.3794 500.0 TRUE CREATE_CAR greenwoo 2508.0845 -1671.1903 12.3794 sw7_sweethearse SET_CAR_HEADING sw7_sweethearse 354.4729 SET_CAN_BURST_CAR_TYRES sw7_sweethearse FALSE CHANGE_CAR_COLOUR sw7_sweethearse 59 34 OPEN_CAR_DOOR sw7_sweethearse FRONT_RIGHT_DOOR CREATE_CAR admiral 925.7109 -1122.9683 22.9909 sw7_pursuitcar SET_CAR_HEADING sw7_pursuitcar 330.8056//72.9 CHANGE_CAR_COLOUR sw7_pursuitcar 59 34 SET_CAN_BURST_CAR_TYRES sw7_pursuitcar FALSE SET_CAR_PROOFS sw7_pursuitcar FALSE FALSE TRUE FALSE FALSE SET_CAR_PROOFS sw7_pursuitcar TRUE TRUE TRUE TRUE TRUE LOCK_CAR_DOORS sw7_pursuitcar CARLOCK_LOCKED SET_FADING_COLOUR 0 0 0 SET_CAMERA_BEHIND_PLAYER LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY sw7_goondm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY sw7_emptydm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH sw7_toughdm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_WEAK sw7_normaldm CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 885.1994 -1075.5457 23.3273 sw7_protector1 SET_CHAR_DECISION_MAKER sw7_protector1 sw7_goondm SET_CHAR_HEADING sw7_protector1 170.0 SET_CHAR_ACCURACY sw7_protector1 90 GET_CHAR_HEALTH sw7_protector1 testhealth SET_CHAR_HEALTH sw7_protector1 120 CREATE_CHAR PEDTYPE_MISSION1 BALLAS2 883.2532 -1075.4960 23.3273 sw7_protector2 SET_CHAR_DECISION_MAKER sw7_protector2 sw7_goondm SET_CHAR_HEADING sw7_protector2 175.0 SET_CHAR_ACCURACY sw7_protector2 90 SET_CHAR_HEALTH sw7_protector2 120 CREATE_CHAR PEDTYPE_MISSION1 BALLAS2 881.4261 -1077.1143 23.3203 sw7_protector3 SET_CHAR_DECISION_MAKER sw7_protector3 sw7_goondm SET_CHAR_HEADING sw7_protector3 275.0 SET_CHAR_ACCURACY sw7_protector3 90 SET_CHAR_HEALTH sw7_protector3 120 /* test block */ IF NOT IS_CHAR_DEAD sw7_protector1 GIVE_WEAPON_TO_CHAR sw7_protector1 WEAPONTYPE_PISTOL 2000 TASK_PLAY_ANIM sw7_protector1 mrnM_loop graveyard 4.0 1 FALSE FALSE FALSE -1 ENDIF IF NOT IS_CHAR_DEAD sw7_protector2 GIVE_WEAPON_TO_CHAR sw7_protector2 WEAPONTYPE_PISTOL 2000 ENDIF IF NOT IS_CHAR_DEAD sw7_protector3 GIVE_WEAPON_TO_CHAR sw7_protector3 WEAPONTYPE_PISTOL 2000 TASK_PLAY_ANIM sw7_protector3 mrnM_loop graveyard 10.0 1 FALSE FALSE FALSE -1 ENDIF CREATE_OBJECT_NO_OFFSET casket_law 885.6575 -1077.4117 23.3188 sw7_casket CREATE_CHAR PEDTYPE_CIVMALE wmoprea 886.6391 -1079.1786 23.3136 sw7_preach TASK_PLAY_ANIM sw7_preach PRST_loopa graveyard 4.0 1 FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER sw7_preach sw7_emptydm SET_CHAR_HEADING sw7_preach 24.0 MARK_MODEL_AS_NO_LONGER_NEEDED wmoprea CREATE_CHAR PEDTYPE_CIVFEMALE BFYRI 884.9761 -1079.9830 23.3133 sw7_greetinface TASK_PLAY_ANIM sw7_greetinface mrnF_loop graveyard 4.0 1 FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER sw7_greetinface sw7_emptydm SET_CHAR_HEADING sw7_greetinface 4.0 MARK_MODEL_AS_NO_LONGER_NEEDED BFYRI CLEAR_AREA 2297.9709 -1628.0146 13.7028 20.0 TRUE CREATE_CHAR PEDTYPE_GANG_GROVE FAM1 2509.4180 -1663.1340 12.5872 sw7_banger1 SET_CHAR_HEADING sw7_banger1 214.5012 SET_CHAR_DECISION_MAKER sw7_banger1 sw7_emptydm SET_CHAR_SUFFERS_CRITICAL_HITS sw7_banger1 FALSE SET_CHAR_CANT_BE_DRAGGED_OUT sw7_banger1 TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED sw7_banger1 TRUE SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR sw7_banger1 FALSE TASK_PLAY_ANIM sw7_banger1 M_smklean_loop SMOKING 4.0 1 FALSE FALSE FALSE -1 CREATE_CHAR PEDTYPE_GANG_GROVE FAM2 2504.4707 -1675.7640 12.3709 sw7_banger2 SET_CHAR_HEADING sw7_banger2 277.5012 SET_CHAR_DECISION_MAKER sw7_banger2 sw7_emptydm SET_CHAR_SUFFERS_CRITICAL_HITS sw7_banger2 FALSE SET_CHAR_CANT_BE_DRAGGED_OUT sw7_banger2 TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED sw7_banger2 TRUE SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR sw7_banger2 FALSE TASK_PLAY_ANIM sw7_banger2 M_smkstnd_loop SMOKING 4.0 1 FALSE FALSE FALSE -1 SWITCH_ROADS_OFF sw7_coord_area_cemetry_min_x sw7_coord_area_cemetry_min_y 0.0 sw7_coord_area_cemetry_max_x sw7_coord_area_cemetry_max_y 60.0 SWITCH_PED_ROADS_OFF sw7_coord_area_cemetry_min_x sw7_coord_area_cemetry_min_y 0.0 sw7_coord_area_cemetry_max_x sw7_coord_area_cemetry_max_y 60.0 get_int_stat RESPECT sw7_respectvalue FIND_MAX_NUMBER_OF_GROUP_MEMBERS sw7_potentialmembers IF sw7_potentialmembers > 1 sw7_nextprompt = 3 CREATE_CHAR PEDTYPE_MISSION2 SPECIAL01 2509.5896 -1672.2372 12.3934 sweet SET_CHAR_HEADING sweet 239.0 IF NOT IS_CAR_DEAD sw7_sweethearse LOCK_CAR_DOORS sw7_sweethearse CARLOCK_LOCKOUT_PLAYER_ONLY // was mission2 pedtype FREEZE_CAR_POSITION sw7_sweethearse TRUE ENDIF GIVE_WEAPON_TO_CHAR sweet WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_NEVER_TARGETTED sweet TRUE SET_CHAR_SUFFERS_CRITICAL_HITS sweet FALSE SET_CHAR_HEALTH sweet 1000 SET_CHAR_MAX_HEALTH sweet 1000 SET_CHAR_CANT_BE_DRAGGED_OUT sweet TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED sweet TRUE SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR sweet FALSE //CREATE_CHAR_AS_PASSENGER sw7_sweethearse PEDTYPE_MISSION2 SPECIAL01 0 sweet // was mission2 pedtype //Taken out as initial driving section has been ditched 15.09.04 //ADD_BLIP_FOR_CAR sw7_sweethearse sw7_hearseB //SET_BLIP_AS_FRIENDLY sw7_hearseB TRUE //OPEN_CAR_DOOR sw7_sweethearse FRONT_LEFT_DOOR SET_RADIO_CHANNEL RS_NEW_JACK_SWING //sw7_nextprompt = 1 //Taken out 15.09.04 TIMERA = 0 ELSE //WRITE_DEBUG you_shouldnt_see_this_Tell_CraigF CREATE_CHAR PEDTYPE_MISSION2 SPECIAL01 2511.3428 -1674.9357 12.5473 sweet IF NOT IS_CAR_DEAD sw7_sweethearse LOCK_CAR_DOORS sw7_sweethearse CARLOCK_LOCKOUT_PLAYER_ONLY // was mission2 pedtype FREEZE_CAR_POSITION sw7_sweethearse TRUE ENDIF SET_CHAR_MAX_HEALTH sweet 1000 SET_CHAR_CANT_BE_DRAGGED_OUT sweet TRUE //07.10.04 GIVE_WEAPON_TO_CHAR sweet WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_NEVER_TARGETTED sweet TRUE SET_CHAR_SUFFERS_CRITICAL_HITS sweet FALSE SET_CHAR_HEALTH sweet 1000 //SET_RADIO_CHANNEL RS_NEW_JACK_SWING SET_CHAR_MAX_HEALTH sweet 1000 SET_CHAR_CANT_BE_DRAGGED_OUT sweet TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED sweet TRUE SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR sweet FALSE /* CREATE_CAR sadler 2491.9124 -1681.3718 12.3450 sw7_parkedcar SET_CAR_HEADING sw7_parkedcar 87.9 CHANGE_CAR_COLOUR sw7_parkedcar 113 8 */ //After submission fix, using variable for final cut. //SET_CAN_BURST_CAR_TYRES sw7_parkedcar FALSE CREATE_CHAR PEDTYPE_GANG_FLAT BALLAS1 2262.7969 -1348.5397 22.9850 sw7_respect1 //SET_CHAR_HEADING sw7_respect1 312.0 07.10.04 GIVE_WEAPON_TO_CHAR sw7_respect1 WEAPONTYPE_MICRO_UZI 2000 SET_CHAR_DECISION_MAKER sw7_respect1 sw7_emptydm CREATE_CHAR PEDTYPE_GANG_FLAT BALLAS2 2263.5823 -1346.6505 22.9838 sw7_respect2 SET_CHAR_HEADING sw7_respect2 140.0 GIVE_WEAPON_TO_CHAR sw7_respect2 WEAPONTYPE_PISTOL 2000 SET_CHAR_DECISION_MAKER sw7_respect2 sw7_emptydm TASK_CHAT_WITH_CHAR sw7_respect1 sw7_respect2 true true //ped0 will lead the chatting TASK_CHAT_WITH_CHAR sw7_respect2 sw7_respect1 false true //ped1 will follow ped0 at chatting CREATE_CHAR PEDTYPE_GANG_FLAT BALLAS3 2261.8496 -1345.1008 22.9864 sw7_respect3 SET_CHAR_HEADING sw7_respect3 224.0 GIVE_WEAPON_TO_CHAR sw7_respect3 WEAPONTYPE_MICRO_UZI 2000 SET_CHAR_DECISION_MAKER sw7_respect3 sw7_emptydm TASK_PLAY_ANIM sw7_respect3 mrnM_loop graveyard 10.0 1 FALSE FALSE FALSE -1 UNLOAD_SPECIAL_CHARACTER 1 ADD_BLIP_FOR_CHAR sw7_respect1 sw7_respect1B ADD_BLIP_FOR_CHAR sw7_respect2 sw7_respect2B ADD_BLIP_FOR_CHAR sw7_respect3 sw7_respect3B sw7_nextprompt = 0 // was 0 sw7_ballastext = -10 // was 0 timerb = 0 ENDIF TASK_TURN_CHAR_TO_FACE_CHAR scplayer sweet timera = 0 WHILE timera < 2000 WAIT 0 ENDWHILE MARK_MODEL_AS_NO_LONGER_NEEDED sadler SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT CLEAR_AREA 2508.16 -1666.47 13.0 10.0 TRUE DO_FADE 1000 FADE_IN // New group teaching commands. //CREATE_GROUP DEFAULT_TASK_ALLOCATOR_FOLLOW_ANY_MEANS sw7_group GET_PLAYER_GROUP player1 sw7_group SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_GANG_GROVE PEDTYPE_PLAYER1 SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_GROUP_FOLLOW_STATUS sw7_group TRUE IF sw7_compilerfool = 13 ADD_BLIP_FOR_CHAR scplayer sw7_kaneb CREATE_CAR greenwoo 2508.9753 -1671.5371 12.3853 sw7_sweethearse ADD_BLIP_FOR_CAR sw7_sweethearse sw7_pursuitcarb CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 885.1994 -1075.5457 23.3273 sw7_kane ENDIF //CLEAR_ALL_SCRIPT_ROADBLOCKS //Main mission loop //Audio flags sfx_crying = 0 // ---- Dialogue Flags sw7_audio_slot = 1 sw7_alt_slot = 2 sw7_counter = 0 sw7_ahead_counter = 1 sw7_audio_playing = 0 sw7_audio_underway = 0 //Dialogue text $sw7_text[1] = SWE7_AA //We're gonna need some help. $sw7_text[2] = SWE7_AB //Call up some dogs, get us a posse? $sw7_text[3] = SWE7_AC //Word. But I warned you about putting time in for yo'homies. $sw7_text[4] =SWE7_AD//You ain't got enough juice to rally the troops, bro. $sw7_text[5] =SWE7_AE//What can I do about that now? $sw7_text[6] =SWE7_AF//Head over to Ballas turf and ice some fools, $sw7_text[7] =SWE7_AG//Word will soread quick enough. $sw7_text[8] =SWE7_AH//I'll be waiting for you back here. $sw7_text[9] =SWE7_BA//Yo, we'll take my ride. $sw7_text[10] =SWE7_BB//Yo. Where to? $sw7_text[11] =SWE7_BC//Just along the block up there by the bridge. $sw7_text[12] =SWE7_BD//I know a couple of Grovers we can bring along. $sw7_text[13] =SWE7_BE//A Grove posse? I'm down for that! $sw7_text[14] =SWE7_CA//Get out and muster the troops, CJ! $sw7_text[15] =SWE7_CB//There they are, get out and bring 'em along. $sw7_text[16] =SWE7_CC//That's them, go welcome them into the posse! $sw7_text[17] =SWE7_DA//CJ, you been at Ryder's sherm? SHIT.... $sw7_text[18] =SWE7_DB//What the fuck you doing, CJ? $sw7_text[19] =SWE7_DC//Oh man, you crazy freak! $sw7_text[20] =SWE7_DD//Tell those guys to get lost, CJ, I got two OG's in mind. $sw7_text[21] =SWE7_DE//I told you I had two boys in mind, dog, tell these boys to go home! $sw7_text[22] =SWE7_EA//Ok, let's roll, got a couple of boys to meet up with! $sw7_text[23] =SWE7_EB//We'll go around back of Los Sepulcros and sneak in over the wall. $sw7_text[24] =SWE7_EC//Yo, we gotta go get in position before the Funeral starts. $sw7_text[25] =SWE7_ED//Get a move on, CJ, we gonna be late! $sw7_text[26] =SWE7_EE//We got get there early, CJ! $sw7_text[27] =SWE7_EF//Oh, dude, we missed the damn funeral! $sw7_text[28] =SWE7_EG//Aw, man, we blew it, the funeral's over! $sw7_text[29] =SWE7_EH//This is it. $sw7_text[30] =SWE7_EJ//Carl, you stay put while we hop over the wall and check it out. $sw7_text[31] =SWE7_EK//Ok, CJ, come on over! $sw7_text[32] =SWE7_FA//Yo, you guys know CJ, yeah? $sw7_text[33] =SWE7_FB//These two boys been watching Front Yard Ballas set things up. $sw7_text[34] =SWE7_GA//Ok, take up positions and wait for Kane. $sw7_text[35] =SWE7_GB//Kane, ain't he Front Yard royalty? $sw7_text[36] =SWE7_GC//Yeah, so if there's even a hint of trouble befoe he arriives, he won't show. $sw7_text[37] =SWE7_HA//CJ, you psycho moron! Kane won't show now! $sw7_text[38] =SWE7_HB//Oh, man, Kane won't show now! $sw7_text[39] =SWE7_HC//You blew our ambush, CJ, you blew it! $sw7_text[40] =SWE7_JA//Here he comes... $sw7_text[41] =SWE7_JB//Looks like the coward's wearing armour, $sw7_text[42] =SWE7_JC//Might take a round or two extra to drop him! $sw7_text[43] =SWE7_KA//Ok, CJ, you take Kane, we'll take the rest of the trash out! $sw7_text[44] =SWE7_KB//We got the small fry, CJ, you take Kane! $sw7_text[45] =SWE7_KC//Don't worry, dogs, CJ will take care of Kane, just keep these cats off his case! $sw7_text[46] =SWE7_LA//Kane's headed for that Ballas car! $sw7_text[47] =SWE7_LB//Ballas car come to bail him out! $sw7_text[48] =SWE7_LC//He's bailing! $sw7_text[49] =SWE7_MA//C'mon, we'll take that car over there! $sw7_text[50] =SWE7_MB//We can chase that bailler in this car! $sw7_text[51] =SWE7_MC//We can take this car! $sw7_text[52] =SWE7_MD//We can take that car! $sw7_text[53] =SWE7_NA//Ok, I've busted in, c'mon! $sw7_text[54] =SWE7_NB//C'mon, CJ, I've busted into this bucket! $sw7_text[55] =SWE7_OA//Gun it, CJ, we gotta catch him before he reaches Front Yard turf! $sw7_text[56] =SWE7_OB//Punch it, CJ, get after that fool before he gets on home turf! $sw7_text[57] =SWE7_PA//Get me close, CJ! $sw7_text[58] =SWE7_PB//Keep it steady, CJ! $sw7_text[59] =SWE7_PC//Get alongside! $sw7_text[60] =SWE7_PD//Pull up level so I can blast this fool! $sw7_text[61] =SWE7_QA//Aw shit, he's home and dry now! $sw7_text[62] =SWE7_QB//Man, he made it bacck to his crib! $sw7_text[63] =SWE7_QC//Aw fuck! He outran us, FUCK! $sw7_text[64] =SWE7_RA//Eat that you Front Yard FOOL! $sw7_text[65] =SWE7_RB//NOBODY MESSES WITH GROVE STREET FAMILIES! $sw7_text[66] =SWE7_RC//C'mon, we better high tail it back to Ganton! $sw7_text[67] =SWE7_SA//Nice one, CJ! $sw7_text[68] =SWE7_SB//I'll get us a getaway car, you guys take the rest of those Ballas! $sw7_text[69] =SWE7_SC//Ok, everybody in, let's get out of here! $sw7_text[70] =SWE7_TA//Man, we were tight back there! $sw7_text[71] =SWE7_TB//Everybody go home, stay low, we ain't seen each other all day, right? $sw7_text[72] =SWE7_TC//I'll catch you later, Carl. // Dialogue audio $sw7_audio[1] = SOUND_SWE7_AA //We're gonna need some help. $sw7_audio[2] = SOUND_SWE7_AB //Call up some dogs, get us a posse? $sw7_audio[3] = SOUND_SWE7_AC //Word. But I warned you about putting time in for yo'homies. $sw7_audio[4] = SOUND_SWE7_AD//You ain't got enough juice to rally the troops, bro. $sw7_audio[5] = SOUND_SWE7_AE//What can I do about that now? $sw7_audio[6] = SOUND_SWE7_AF//Head over to Ballas turf and ice some fools, $sw7_audio[7] = SOUND_SWE7_AG//Word will soread quick enough. $sw7_audio[8] = SOUND_SWE7_AH//I'll be waiting for you back here. $sw7_audio[9] = SOUND_SWE7_BA//Yo, we'll take my ride. $sw7_audio[10] = SOUND_SWE7_BB//Yo. Where to? $sw7_audio[11] = SOUND_SWE7_BC//Just along the block up there by the bridge. $sw7_audio[12] = SOUND_SWE7_BD//I know a couple of Grovers we can bring along. $sw7_audio[13] = SOUND_SWE7_BE//A Grove posse? I'm down for that! $sw7_audio[14] = SOUND_SWE7_CA//Get out and muster the troops, CJ! $sw7_audio[15] = SOUND_SWE7_CB//There they are, get out and bring 'em along. $sw7_audio[16] = SOUND_SWE7_CC//That's them, go welcome them into the posse! $sw7_audio[17] = SOUND_SWE7_DA//CJ, you been at Ryder's sherm? SHIT.... $sw7_audio[18] = SOUND_SWE7_DB//What the fuck you doing, CJ? $sw7_audio[19] = SOUND_SWE7_DC//Oh man, you crazy freak! $sw7_audio[20] = SOUND_SWE7_DD//Tell those guys to get lost, CJ, I got two OG's in mind. $sw7_audio[21] = SOUND_SWE7_DE//I told you I had two boys in mind, dog, tell these boys to go home! $sw7_audio[22] = SOUND_SWE7_EA//Ok, let's roll, got a couple of boys to meet up with! $sw7_audio[23] = SOUND_SWE7_EB//We'll go around back of Los Sepulcros and sneak in over the wall. $sw7_audio[24] = SOUND_SWE7_EC//Yo, we gotta go get in position before the Funeral starts. $sw7_audio[25] = SOUND_SWE7_ED//Get a move on, CJ, we gonna be late! $sw7_audio[26] = SOUND_SWE7_EE//We got get there early, CJ! $sw7_audio[27] = SOUND_SWE7_EF//Oh, dude, we missed the damn funeral! $sw7_audio[28] = SOUND_SWE7_EG//Aw, man, we blew it, the funeral's over! $sw7_audio[29] = SOUND_SWE7_EH//This is it. $sw7_audio[30] = SOUND_SWE7_EJ//Carl, you stay put while we hop over the wall and check it out. $sw7_audio[31] = SOUND_SWE7_EK//Ok, CJ, come on over! $sw7_audio[32] = SOUND_SWE7_FA//Yo, you guys know CJ, yeah? $sw7_audio[33] = SOUND_SWE7_FB//These two boys been watching Front Yard Ballas set things up. $sw7_audio[34] = SOUND_SWE7_GA//Ok, take up positions and wait for Kane. $sw7_audio[35] = SOUND_SWE7_GB//Kane, ain't he Front Yard royalty? $sw7_audio[36] = SOUND_SWE7_GC//Yeah, so if there's even a hint of trouble befoe he arriives, he won't show. $sw7_audio[37] = SOUND_SWE7_HA//CJ, you psycho moron! Kane won't show now! $sw7_audio[38] = SOUND_SWE7_HB//Oh, man, Kane won't show now! $sw7_audio[39] = SOUND_SWE7_HC//You blew our ambush, CJ, you blew it! $sw7_audio[40] = SOUND_SWE7_JA//Here he comes... $sw7_audio[41] = SOUND_SWE7_JB//Looks like the coward's wearing armour, $sw7_audio[42] = SOUND_SWE7_JC//Might take a round or two extra to drop him! $sw7_audio[43] = SOUND_SWE7_KA//Ok, CJ, you take Kane, we'll take the rest of the trash out! $sw7_audio[44] = SOUND_SWE7_KB//We got the small fry, CJ, you take Kane! $sw7_audio[45] = SOUND_SWE7_KC//Don't worry, dogs, CJ will take care of Kane, just keep these cats off his case! $sw7_audio[46] = SOUND_SWE7_LA//Kane's headed for that Ballas car! $sw7_audio[47] = SOUND_SWE7_LB//Ballas car come to bail him out! $sw7_audio[48] = SOUND_SWE7_LC//He's bailing! $sw7_audio[49] = SOUND_SWE7_MA//C'mon, we'll take that car over there! $sw7_audio[50] = SOUND_SWE7_MB//We can chase that bailler in this car! $sw7_audio[51] = SOUND_SWE7_MC//We can take this car! $sw7_audio[52] = SOUND_SWE7_MD//We can take that car! $sw7_audio[53] = SOUND_SWE7_NA//Ok, I've busted in, c'mon! $sw7_audio[54] = SOUND_SWE7_NB//C'mon, CJ, I've busted into this bucket! $sw7_audio[55] = SOUND_SWE7_OA//Gun it, CJ, we gotta catch him before he reaches Front Yard turf! $sw7_audio[56] = SOUND_SWE7_OB//Punch it, CJ, get after that fool before he gets on home turf! $sw7_audio[57] = SOUND_SWE7_PA//Get me close, CJ! $sw7_audio[58] = SOUND_SWE7_PB//Keep it steady, CJ! $sw7_audio[59] = SOUND_SWE7_PC//Get alongside! $sw7_audio[60] = SOUND_SWE7_PD//Pull up level so I can blast this fool! $sw7_audio[61] = SOUND_SWE7_QA//Aw shit, he's home and dry now! $sw7_audio[62] = SOUND_SWE7_QB//Man, he made it bacck to his crib! $sw7_audio[63] = SOUND_SWE7_QC//Aw fuck! He outran us, FUCK! $sw7_audio[64] = SOUND_SWE7_RA//Eat that you Front Yard FOOL! $sw7_audio[65] = SOUND_SWE7_RB//NOBODY MESSES WITH GROVE STREET FAMILIES! $sw7_audio[66] = SOUND_SWE7_RC//C'mon, we better high tail it back to Ganton! $sw7_audio[67] = SOUND_SWE7_SA//Nice one, CJ! $sw7_audio[68] = SOUND_SWE7_SB//I'll get us a getaway car, you guys take the rest of those Ballas! $sw7_audio[69] = SOUND_SWE7_SC//Ok, everybody in, let's get out of here! $sw7_audio[70] = SOUND_SWE7_TA//Man, we were tight back there! $sw7_audio[71] = SOUND_SWE7_TB//Everybody go home, stay low, we ain't seen each other all day, right? $sw7_audio[72] = SOUND_SWE7_TC//I'll catch you later, Carl. //Main mission loop sweet7_main_mission_loop: WAIT 0 // Audio FX IF sfx_crying = 0 LOAD_MISSION_AUDIO 3 SOUND_MOURNERS sfx_crying = 1 ENDIF IF sfx_crying = 1 IF HAS_MISSION_AUDIO_LOADED 3 sfx_crying = 2 ENDIF ENDIF IF sfx_crying = 2 IF NOT IS_CHAR_DEAD sw7_greetinface IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sw7_greetinface 200.0 200.0 FALSE SET_MISSION_AUDIO_POSITION 3 884.9761 -1079.9830 23.3133 // Central mourning location. PLAY_MISSION_AUDIO 3 //WRITE_DEBUG AUD sfx_crying = 3 ENDIF ENDIF ENDIF // ---- Load & Play Dialogue... IF NOT sw7_counter = 0 IF sw7_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED sw7_alt_slot CLEAR_MISSION_AUDIO sw7_alt_slot ENDIF sw7_audio_playing = 1 sw7_audio_underway = 1 ENDIF IF sw7_audio_playing = 1 LOAD_MISSION_AUDIO sw7_audio_slot sw7_audio[sw7_counter] //GOSUB sw7_dialogue_pos //ATTACH_MISSION_AUDIO_TO_PED sw7_audio_slot sw7_audio_char sw7_audio_playing = 2 ENDIF IF sw7_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED sw7_audio_slot PLAY_MISSION_AUDIO sw7_audio_slot PRINT_NOW $sw7_text[sw7_counter] 10000 1 sw7_audio_playing = 3 ENDIF ENDIF IF sw7_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED sw7_audio_slot CLEAR_THIS_PRINT $sw7_text[sw7_counter] IF sw7_audio_slot = 1 sw7_audio_slot = 2 sw7_alt_slot = 1 ELSE sw7_audio_slot = 1 sw7_alt_slot = 2 ENDIF sw7_counter = 0 sw7_audio_playing = 0 sw7_audio_underway = 0 // okay to cue up next piece of convo text ELSE IF NOT HAS_MISSION_AUDIO_LOADED sw7_alt_slot IF sw7_counter < 72 sw7_ahead_counter = sw7_counter + 1 LOAD_MISSION_AUDIO sw7_alt_slot sw7_audio[sw7_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF // End of dialogue loader / player IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_sweet7_passed ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_W IF NOT IS_CAR_DEAD sw7_sweethearse SET_CAR_COORDINATES sw7_sweethearse 794.2030 -1059.1851 23.6844 ENDIF ENDIF GET_GROUP_SIZE sw7_group sw7_leaders sw7_groupsize //WRITE_DEBUG_WITH_INT gnum sw7_groupsize /* IF sw7_groupsize = 2 SET_PLAYER_GROUP_RECRUITMENT player1 FALSE ENDIF*/ IF sw7_missionprogress < 1 IF sw7_funeraltimer < 1 CLEAR_ONSCREEN_TIMER sw7_funeraltimer CLEAR_PRINTS GENERATE_RANDOM_INT_IN_RANGE 0 2 sw7_random sw7_convo_counter = 31 sw7_missionprogress = 999 ENDIF IF NOT IS_CAR_DEAD sw7_sweethearse IF IS_CAR_ON_FIRE sw7_sweethearse CLEAR_PRINTS PRINT_NOW TWAR664 6000 1 GOTO mission_sweet7_failed ENDIF ENDIF ENDIF get_int_stat RESPECT sw7_respectvalue //WRITE_DEBUG_WITH_FLOAT rpct sw7_respectvalue IF sw7_nextprompt = 0 //keep checking respect // IF sw7_audio_underway = 0 // IF sw7_ballastext = -10 // sw7_counter = 1 // sw7_audio_underway = 1 // sw7_ballastext = -9 // ENDIF // ENDIF // // IF sw7_audio_underway = 0 // // IF sw7_ballastext = -9 // sw7_counter = 2 // sw7_audio_underway = 1 // sw7_ballastext = -8 // ENDIF // ENDIF // // IF sw7_audio_underway = 0 // // IF sw7_ballastext = -8 // sw7_counter = 3 // sw7_audio_underway = 1 // sw7_ballastext = -7 // ENDIF // // ENDIF // IF sw7_ballastext < 0 IF sw7_audio_underway = 0 SWITCH sw7_ballastext CASE -10 sw7_counter = 1 sw7_ballastext = -9 BREAK CASE -9 sw7_counter = 2 sw7_ballastext = -8 BREAK CASE -8 sw7_counter = 3 sw7_ballastext = -7 BREAK CASE -7 sw7_counter = 4 sw7_ballastext = -6 BREAK CASE -6 sw7_counter = 5 sw7_ballastext = -5 BREAK CASE -5 sw7_counter = 6 sw7_ballastext = -4 BREAK CASE -4 sw7_counter = 7 sw7_ballastext = -3 BREAK CASE -3 sw7_counter = 8 sw7_ballastext = -2 BREAK CASE -2 sw7_counter = 0 sw7_ballastext = 0 BREAK ENDSWITCH //sw7_audio_underway = 1 ENDIF ENDIF IF sw7_audio_underway = 0 IF sw7_ballastext = 0 //IF timerb > 7000 CLEAR_PRINTS PRINT_NOW TWAR612 6000 1 sw7_ballastext = 1 timerb = 0 // ENDIF ENDIF IF sw7_ballastext = 1 IF timerb > 7000 CLEAR_PRINTS PRINT_HELP HELP101 sw7_ballastext = 2 ENDIF ENDIF ENDIF IF sw7_sweetturn = 0 IF TIMERA > 3000 IF NOT IS_CHAR_DEAD sweet IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS sweet TASK_TURN_CHAR_TO_FACE_CHAR sweet scplayer TIMERA = 0 ENDIF ENDIF ENDIF ENDIF IF DOES_CHAR_EXIST sweet IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR sweet scplayer CLEAR_PRINTS PRINT_NOW TWAR618 6000 1 GOTO mission_sweet7_failed ENDIF ENDIF IF sw7_gangfrenzy = 0 IF DOES_CHAR_EXIST sw7_respect1 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR sw7_respect1 scplayer //CLEAR_CHAR_TASKS sw7_respect1 //TASK_KILL_CHAR_ON_FOOT sw7_respect1 scplayer sw7_gangfrenzy = 1 ENDIF ENDIF ENDIF IF sw7_gangfrenzy = 0 IF DOES_CHAR_EXIST sw7_respect2 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR sw7_respect2 scplayer //CLEAR_CHAR_TASKS sw7_respect1 //TASK_KILL_CHAR_ON_FOOT sw7_respect1 scplayer sw7_gangfrenzy = 1 ENDIF ENDIF ENDIF IF sw7_gangfrenzy = 0 IF DOES_CHAR_EXIST sw7_respect3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR sw7_respect3 scplayer //CLEAR_CHAR_TASKS sw7_respect1 //TASK_KILL_CHAR_ON_FOOT sw7_respect1 scplayer sw7_gangfrenzy = 1 ENDIF ENDIF ENDIF IF sw7_gangfrenzy = 1 IF NOT IS_CHAR_DEAD sw7_respect1 CLEAR_CHAR_TASKS sw7_respect1 TASK_KILL_CHAR_ON_FOOT sw7_respect1 scplayer ENDIF IF NOT IS_CHAR_DEAD sw7_respect2 CLEAR_CHAR_TASKS sw7_respect2 TASK_KILL_CHAR_ON_FOOT sw7_respect2 scplayer ENDIF IF NOT IS_CHAR_DEAD sw7_respect3 CLEAR_CHAR_TASKS sw7_respect3 TASK_KILL_CHAR_ON_FOOT sw7_respect3 scplayer ENDIF sw7_gangfrenzy = 2 ENDIF IF sw7_inc1blip = 0 IF IS_CHAR_DEAD sw7_respect1 increment_int_stat RESPECT 35 //respect total = respect total = 3.5 REMOVE_BLIP sw7_respect1B get_int_stat RESPECT sw7_respectvalue //WRITE_DEBUG_WITH_INT rt sw7_respectvalue sw7_inc1blip = 1 ENDIF ENDIF IF sw7_inc2blip = 0 IF IS_CHAR_DEAD sw7_respect2 increment_int_stat RESPECT 35 //respect total = respect total = 3.5 REMOVE_BLIP sw7_respect2B get_int_stat RESPECT sw7_respectvalue // WRITE_DEBUG_WITH_INT rt sw7_respectvalue sw7_inc2blip = 1 ENDIF ENDIF IF sw7_inc3blip = 0 IF IS_CHAR_DEAD sw7_respect3 increment_int_stat RESPECT 35 //respect total = respect total = 3.5 REMOVE_BLIP sw7_respect3B get_int_stat RESPECT sw7_respectvalue // WRITE_DEBUG_WITH_INT rt sw7_respectvalue sw7_inc3blip = 1 ENDIF ENDIF IF IS_CHAR_DEAD sw7_respect1 IF IS_CHAR_DEAD sw7_respect2 IF IS_CHAR_DEAD sw7_respect3 get_int_stat RESPECT sw7_respectvalue IF sw7_respectvalue < 100 SET_INT_STAT RESPECT 200 ENDIF ENDIF ENDIF ENDIF FIND_MAX_NUMBER_OF_GROUP_MEMBERS sw7_potentialmembers IF sw7_potentialmembers > 1 MARK_CHAR_AS_NO_LONGER_NEEDED sw7_respect1 MARK_CHAR_AS_NO_LONGER_NEEDED sw7_respect2 MARK_CHAR_AS_NO_LONGER_NEEDED sw7_respect3 REMOVE_BLIP sw7_respect1B REMOVE_BLIP sw7_respect2B REMOVE_BLIP sw7_respect3B CLEAR_PRINTS PRINT_NOW TWAR617 6000 1 IF NOT IS_CAR_DEAD sw7_sweethearse LOCK_CAR_DOORS sw7_sweethearse CARLOCK_LOCKOUT_PLAYER_ONLY //OPEN_CAR_DOOR sw7_sweethearse FRONT_LEFT_DOOR sw7_nextprompt = 1 sw7_sweetturn = 1 //REMOVE_BLIP sw7_ballasB //ADD_BLIP_FOR_CAR sw7_sweethearse sw7_hearseB //SET_BLIP_AS_FRIENDLY sw7_hearseB TRUE //FREEZE_CAR_POSITION sw7_sweethearse FALSE IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS sweet TASK_ENTER_CAR_AS_PASSENGER sweet sw7_sweethearse 20000 0 ADD_BLIP_FOR_CAR sw7_sweethearse sw7_hearseB SET_RADIO_CHANNEL RS_NEW_JACK_SWING SET_BLIP_AS_FRIENDLY sw7_hearseB TRUE ENDIF ENDIF ENDIF ENDIF IF sw7_nextprompt = 1 IF sw7_sweetturn = 1 IF NOT IS_CHAR_DEAD sweet IF NOT IS_CAR_DEAD sw7_sweethearse IF IS_CHAR_SITTING_IN_CAR sweet sw7_sweethearse FREEZE_CAR_POSITION sw7_sweethearse FALSE LOCK_CAR_DOORS sw7_sweethearse CARLOCK_UNLOCKED // ADD_BLIP_FOR_CAR sw7_sweethearse sw7_hearseB // SET_BLIP_AS_FRIENDLY sw7_hearseB TRUE OPEN_CAR_DOOR sw7_sweethearse FRONT_LEFT_DOOR sw7_sweetturn = 2 ENDIF ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD sw7_sweethearse IF IS_CHAR_SITTING_IN_CAR scplayer sw7_sweethearse REMOVE_BLIP sw7_hearseB get_int_stat RESPECT sw7_respectvalue ADD_BLIP_FOR_COORD 2460.4993 -1656.5701 12.3125 sw7_bangershouseB IF NOT IS_CHAR_DEAD sweet SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet TRUE ENDIF sw7_nextprompt = 2 sw7_blipswap = 0 sw7_convo_counter = 1 ENDIF ENDIF ENDIF IF sw7_nextprompt = 2 IF NOT IS_CAR_DEAD sw7_sweethearse // Intro convo IF IS_CHAR_IN_CAR scplayer sw7_sweethearse IF sw7_convo_counter > 0 IF sw7_audio_underway = 0 SWITCH sw7_convo_counter CASE 1 sw7_counter = 10 sw7_convo_counter = 2 BREAK CASE 2 sw7_counter = 11 sw7_convo_counter = 3 BREAK CASE 3 sw7_counter = 12 sw7_convo_counter = 4 BREAK CASE 4 sw7_counter = 13 sw7_convo_counter = 5 BREAK CASE 5 sw7_counter = 0 PRINT_NOW TWAR650 6000 1 IF NOT IS_CHAR_DEAD sweet SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet FALSE ENDIF sw7_convo_counter = 0 // finish convo BREAK ENDSWITCH // sw7_audio_underway = 1 ENDIF ENDIF ENDIF //Get back in the car variations IF sw7_leftcar_counter > 0 IF sw7_audio_underway = 0 SWITCH sw7_leftcar_counter CASE 1 IF sw7_random = 0 sw7_counter = 24 ENDIF IF sw7_random = 1 sw7_counter = 26 ENDIF sw7_leftcar_counter = 2 BREAK CASE 2 sw7_counter = 0 IF NOT IS_CHAR_DEAD sweet SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet FALSE ENDIF PRINT_NOW TWAR645 6000 1 sw7_leftcar_counter = 0 // finish convo BREAK ENDSWITCH // sw7_audio_underway = 1 ENDIF ENDIF // Back in car, get to location variations IF sw7_backcar_counter > 0 IF sw7_audio_underway = 0 SWITCH sw7_backcar_counter CASE 1 IF sw7_random = 0 sw7_counter = 25 ENDIF sw7_backcar_counter = 2 BREAK CASE 2 sw7_counter = 0 PRINT_NOW TWAR650 6000 1 sw7_backcar_counter = 0 // finish convo BREAK ENDSWITCH // sw7_audio_underway = 1 ENDIF ENDIF get_int_stat RESPECT sw7_respectvalue //WRITE_DEBUG_WITH_FLOAT rpct sw7_respectvalue IF sw7_blipswap = 0 IF NOT IS_CHAR_IN_CAR scplayer sw7_sweethearse ADD_BLIP_FOR_CAR sw7_sweethearse sw7_hearseB SET_RADIO_CHANNEL RS_NEW_JACK_SWING SET_BLIP_AS_FRIENDLY sw7_hearseB TRUE REMOVE_BLIP sw7_bangershouseB CLEAR_PRINTS sw7_blipswap = 1 sw7_convo_counter = 0 // finish convo sw7_leftcar_counter = 1 //Cue get back in car variations GENERATE_RANDOM_INT_IN_RANGE 0 2 sw7_random // choice of two text options ENDIF ENDIF IF sw7_blipswap = 1 IF IS_CHAR_IN_CAR scplayer sw7_sweethearse REMOVE_BLIP sw7_hearseB ADD_BLIP_FOR_COORD 2460.4993 -1656.5701 12.3125 sw7_bangershouseB CLEAR_PRINTS sw7_blipswap = 0 sw7_convo_counter = 0 //finish convo sw7_backcar_counter = 1 //Cue back in car, get to location variations GENERATE_RANDOM_INT_IN_RANGE 0 1 sw7_random // only one text option ENDIF ENDIF GET_AREA_VISIBLE sw7_visible IF sw7_visible = 0 IF NOT IS_MINIGAME_IN_PROGRESS SET_PLAYER_CONTROL player1 ON ENDIF ENDIF IF IS_CHAR_IN_CAR scplayer sw7_sweethearse IF LOCATE_CHAR_IN_CAR_3D scplayer 2460.4993 -1656.5701 12.3125 4.0 4.0 4.0 TRUE SET_PLAYER_CONTROL player1 OFF IF IS_CAR_STOPPED sw7_sweethearse FREEZE_CAR_POSITION sw7_sweethearse TRUE CLEAR_AREA 2268.0391 -1670.6952 14.3594 10.0 TRUE REMOVE_ANIMATION SMOKING CLEAR_PRINTS sw7_convo_counter = 1 SET_PLAYER_CONTROL player1 ON SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_GANG_GROVE PEDTYPE_PLAYER1 SET_PLAYER_GROUP_RECRUITMENT player1 TRUE REMOVE_BLIP sw7_bangershouseB IF NOT IS_CHAR_DEAD sw7_banger1 IF NOT IS_CHAR_DEAD sw7_banger2 ADD_BLIP_FOR_CHAR sw7_banger1 sw7_banger1b SET_BLIP_AS_FRIENDLY sw7_banger1b TRUE sw7_bang1swap = 1 ADD_BLIP_FOR_CHAR sw7_banger2 sw7_banger2b SET_BLIP_AS_FRIENDLY sw7_banger2b TRUE sw7_bang2swap = 1 timera = 0 sw7_nextprompt = 4 sw7_checkgangblips = 1 GENERATE_RANDOM_INT_IN_RANGE 0 3 sw7_random // choice of three text options ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // New block to skip the initial convo section IF sw7_nextprompt = 3 FREEZE_CAR_POSITION sw7_sweethearse TRUE CLEAR_AREA 2268.0391 -1670.6952 14.3594 10.0 TRUE REMOVE_ANIMATION SMOKING CLEAR_PRINTS sw7_convo_counter = 1 SET_PLAYER_CONTROL player1 ON SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_GANG_GROVE PEDTYPE_PLAYER1 SET_PLAYER_GROUP_RECRUITMENT player1 TRUE IF NOT IS_CHAR_DEAD sw7_banger1 IF NOT IS_CHAR_DEAD sw7_banger2 ADD_BLIP_FOR_CHAR sw7_banger1 sw7_banger1b SET_BLIP_AS_FRIENDLY sw7_banger1b TRUE sw7_bang1swap = 1 ADD_BLIP_FOR_CHAR sw7_banger2 sw7_banger2b SET_BLIP_AS_FRIENDLY sw7_banger2b TRUE sw7_bang2swap = 1 timera = 0 sw7_nextprompt = 4 sw7_checkgangblips = 1 GENERATE_RANDOM_INT_IN_RANGE 0 3 sw7_random // choice of three text options ENDIF ENDIF ENDIF IF sw7_ganghelpbuffer = 0 IF timera > 8000 CLEAR_THIS_PRINT TWAR652 // ~s~Get those ~b~gang members~s~ to join you. They respect you enough to provide help. CLEAR_HELP PRINT_HELP_FOREVER TWARHID // Target a gang member and press ~m~~widget_gang_recruit~ to recruit him to your group. sw7_ganghelpbuffer = 1 ENDIF ENDIF IF sw7_checkgangblips = 1 IF sw7_bang1swap = 1 IF NOT IS_CHAR_DEAD sw7_banger1 IF IS_GROUP_MEMBER sw7_banger1 sw7_group REMOVE_BLIP sw7_banger1B sw7_bang1swap = 0 ENDIF ENDIF ENDIF IF sw7_bang2swap = 1 IF NOT IS_CHAR_DEAD sw7_banger2 IF IS_GROUP_MEMBER sw7_banger2 sw7_group // SET_CHAR_NEVER_LEAVES_GROUP sw7_banger2 TRUE REMOVE_BLIP sw7_banger2B sw7_bang2swap = 0 ENDIF ENDIF ENDIF IF sw7_bang1swap = 0 IF NOT IS_CHAR_DEAD sw7_banger1 IF NOT IS_GROUP_MEMBER sw7_banger1 sw7_group REMOVE_BLIP sw7_hearseB sw7_nextprompt = 4 ADD_BLIP_FOR_CHAR sw7_banger1 sw7_banger1b SET_BLIP_AS_FRIENDLY sw7_banger1b TRUE sw7_bang1swap = 1 ENDIF ENDIF ENDIF IF sw7_bang2swap = 0 IF NOT IS_CHAR_DEAD sw7_banger2 IF NOT IS_GROUP_MEMBER sw7_banger2 sw7_group REMOVE_BLIP sw7_hearseB sw7_nextprompt = 4 ADD_BLIP_FOR_CHAR sw7_banger2 sw7_banger2b SET_BLIP_AS_FRIENDLY sw7_banger2b TRUE sw7_bang2swap = 1 ENDIF ENDIF ENDIF GET_GROUP_SIZE sw7_group sw7_leaders sw7_groupsize IF sw7_groupsize > 1 IF NOT IS_CHAR_DEAD sw7_banger1 IF NOT IS_GROUP_MEMBER sw7_banger1 sw7_group PRINT_HELP_FOREVER T662 // Holding ~m~~widget_gang_follow~ or ~m~~widget_gang_hold~ for a few seconds or moving too far away from them will disband your group. IF sw7_ganghire_counter < 11 CLEAR_PRINTS GENERATE_RANDOM_INT_IN_RANGE 0 2 sw7_random sw7_ganghire_counter = 11 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD sw7_banger2 IF NOT IS_GROUP_MEMBER sw7_banger2 sw7_group PRINT_HELP_FOREVER T662 // Holding ~m~~widget_gang_follow~ or ~m~~widget_gang_hold~ for a few seconds or moving too far away from them will disband your group. IF sw7_ganghire_counter < 11 CLEAR_PRINTS GENERATE_RANDOM_INT_IN_RANGE 0 2 sw7_random sw7_ganghire_counter = 11 ENDIF ENDIF ENDIF IF sw7_ganghire_counter > 10 IF sw7_audio_underway = 0 SWITCH sw7_ganghire_counter CASE 11 IF sw7_random = 0 sw7_counter = 20 ENDIF IF sw7_random = 1 sw7_counter = 21 ENDIF sw7_ganghire_counter = 12 BREAK CASE 12 sw7_counter = 0 PRINT_NOW TWAR659 6000 1 sw7_ganghire_counter = 999 // finish convo BREAK ENDSWITCH ENDIF ENDIF ENDIF //okay to restart convo if player hires wrong guys AGAIN! IF sw7_groupsize < 2 IF sw7_ganghelpbuffer = 1 PRINT_HELP_FOREVER_CONDITIONAL TWARHID 16 // Target a gang member and press ~m~~widget_gang_recruit~ to recruit him to your group. sw7_ganghelpbuffer = 2 sw7_ganghire_counter = 0 ENDIF ENDIF ENDIF IF sw7_nextprompt = 4 IF sw7_convo_counter > 0 IF sw7_audio_underway = 0 SWITCH sw7_convo_counter CASE 1 IF sw7_random = 0 sw7_counter = 1//14 IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS sweet TASK_PLAY_ANIM sweet endchat_01 PED 4.0 1 FALSE FALSE FALSE -1 ENDIF ENDIF IF sw7_random = 1 sw7_counter = 1//14 IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS sweet TASK_PLAY_ANIM sweet endchat_01 PED 4.0 1 FALSE FALSE FALSE -1 ENDIF ENDIF IF sw7_random = 2 sw7_counter = 1//14 IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS sweet TASK_PLAY_ANIM sweet endchat_01 PED 4.0 1 FALSE FALSE FALSE -1 ENDIF ENDIF sw7_convo_counter = 2 BREAK CASE 2 sw7_counter = 0 PRINT_NOW TWAR652 6000 1 // ~s~Get those ~b~gang members~s~ to join you. They respect you enough to provide help. IF NOT IS_CAR_DEAD sw7_sweethearse IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS sweet TASK_ENTER_CAR_AS_PASSENGER sweet sw7_sweethearse 20000 0 SET_RADIO_CHANNEL RS_NEW_JACK_SWING ENDIF ENDIF sw7_convo_counter = 0 // finish convo BREAK ENDSWITCH ENDIF ENDIF IF NOT IS_CHAR_DEAD sw7_banger1 IF NOT IS_CHAR_DEAD sw7_banger2 IF IS_GROUP_MEMBER sw7_banger1 sw7_group IF IS_GROUP_MEMBER sw7_banger2 sw7_group CLEAR_PRINTS PRINT_NOW TWAR654 5500 1 sw7_followhelpbuffer = 1 TIMERB = 0 IF NOT IS_CAR_DEAD sw7_sweethearse IF NOT IS_CHAR_DEAD sweet IF IS_CHAR_SITTING_IN_CAR sweet sw7_sweethearse //FREEZE_CAR_POSITION sw7_sweethearse FALSE LOCK_CAR_DOORS sw7_sweethearse CARLOCK_UNLOCKED ADD_BLIP_FOR_CAR sw7_sweethearse sw7_hearseB SET_BLIP_AS_FRIENDLY sw7_hearseB TRUE //OPEN_CAR_DOOR sw7_sweethearse FRONT_LEFT_DOOR SET_RADIO_CHANNEL RS_NEW_JACK_SWING ENDIF ENDIF ENDIF sw7_nextprompt = 10 ENDIF ENDIF ENDIF ENDIF ENDIF IF sw7_followhelpbuffer = 1 IF timerb > 6000 // PRINT_HELP TWAR657 sw7_followhelpbuffer = 2 ENDIF ENDIF IF sw7_nextprompt = 10 IF NOT IS_CAR_DEAD sw7_sweethearse IF NOT IS_CHAR_DEAD sw7_banger1 IF NOT IS_CHAR_DEAD sw7_banger2 IF IS_CHAR_SITTING_IN_CAR sw7_banger1 sw7_sweethearse IF IS_CHAR_SITTING_IN_CAR sw7_banger2 sw7_sweethearse IF IS_CHAR_SITTING_IN_CAR scplayer sw7_sweethearse FREEZE_CAR_POSITION sw7_sweethearse FALSE CLEAR_PRINTS SET_CAMERA_BEHIND_PLAYER IF sw7_timeron = 0 DISPLAY_ONSCREEN_TIMER_WITH_STRING sw7_funeraltimer TIMER_DOWN TWAR620 SET_ZONE_GANG_STRENGTH GAN1 GANG_GROVE gan1_gzs //back to starting value SET_ZONE_GANG_STRENGTH GAN2 GANG_GROVE gan2_gzs //back to starting value REMOVE_ANIMATION SMOKING sw7_timeron = 1 ENDIF REMOVE_BLIP sw7_hearseB ADD_BLIP_FOR_COORD 799.0102 -1074.0321 23.0115 sw7_cementB sw7_checkgangblips = 1 // was 0 sw7_blipswap = 0 sw7_convo_counter = 1 sw7_nextprompt = 20 TIMERA = 0 SWITCH_ROADS_OFF 772.2430 -1050.3231 10.2931 806.2723 -1130.1954 23.8359 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF sw7_ctskip_needed = 1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED IF sw7_missionprogress < 10 sw7_missionprogress = 10 sw7_ctskip_needed = 0 // Don't want to read PS2 joypad anymore ENDIF ENDIF ENDIF IF sw7_newctskip_needed = 1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED sw7_newcutscene = 15 ENDIF ENDIF IF IS_CHAR_DEAD sweet CLEAR_PRINTS PRINT_NOW TWAR638 10000 1 GOTO mission_sweet7_failed ENDIF IF IS_CAR_DEAD sw7_pursuitcar IF NOT IS_CHAR_DEAD sweet IF NOT IS_CHAR_IN_ANY_CAR sweet CLEAR_PRINTS PRINT_NOW TWAR648 6000 1 GOTO mission_sweet7_failed ENDIF ENDIF ENDIF IF sw7_missionprogress = 0 IF sw7_nextprompt = 20 IF NOT IS_CAR_DEAD sw7_sweethearse // Intro convo IF IS_CHAR_IN_CAR scplayer sw7_sweethearse IF sw7_helpfix = 0 IF timera > 20000 PRINT_HELP TWAR656 sw7_helpfix = 1 ENDIF ENDIF IF sw7_convo_counter > 0 IF sw7_audio_underway = 0 SWITCH sw7_convo_counter CASE 1 sw7_counter = 23 sw7_convo_counter = 2 BREAK CASE 2 sw7_counter = 35 sw7_convo_counter = 3 BREAK CASE 3 sw7_counter = 36 sw7_convo_counter = 4 BREAK CASE 4 sw7_counter = 0 PRINT_NOW TWAR631 6000 1 sw7_convo_counter = 0 // finish convo BREAK ENDSWITCH ENDIF ENDIF ENDIF //Get back in the car variations IF sw7_leftcar_counter > 0 IF sw7_audio_underway = 0 SWITCH sw7_leftcar_counter CASE 1 IF sw7_random = 0 sw7_counter = 24 ENDIF IF sw7_random = 1 sw7_counter = 26 ENDIF sw7_leftcar_counter = 2 BREAK CASE 2 sw7_counter = 0 PRINT_NOW TWAR632 6000 1 sw7_leftcar_counter = 0 // finish convo BREAK ENDSWITCH ENDIF ENDIF // Back in car, get to location variations IF sw7_backcar_counter > 0 IF sw7_audio_underway = 0 SWITCH sw7_backcar_counter CASE 1 IF sw7_random = 0 sw7_counter = 25 ENDIF sw7_backcar_counter = 2 BREAK CASE 2 sw7_counter = 0 PRINT_NOW TWAR631 6000 1 sw7_backcar_counter = 0 // finish convo BREAK ENDSWITCH ENDIF ENDIF IF sw7_blipswap = 0 IF NOT IS_CHAR_IN_CAR scplayer sw7_sweethearse ADD_BLIP_FOR_CAR sw7_sweethearse sw7_hearseB SET_RADIO_CHANNEL RS_NEW_JACK_SWING SET_BLIP_AS_FRIENDLY sw7_hearseB TRUE REMOVE_BLIP sw7_cementB CLEAR_PRINTS sw7_blipswap = 1 sw7_convo_counter = 0 // finish convo sw7_leftcar_counter = 1 //Cue get back in car variations GENERATE_RANDOM_INT_IN_RANGE 0 2 sw7_random // choice of two text options ENDIF ENDIF IF sw7_blipswap = 1 IF NOT IS_CHAR_DEAD sw7_banger1 IF NOT IS_CHAR_DEAD sw7_banger2 IF IS_CHAR_IN_CAR scplayer sw7_sweethearse IF IS_CHAR_SITTING_IN_CAR sw7_banger1 sw7_sweethearse IF IS_CHAR_SITTING_IN_CAR sw7_banger2 sw7_sweethearse REMOVE_BLIP sw7_hearseB ADD_BLIP_FOR_COORD 799.0102 -1074.0321 23.0115 sw7_cementB CLEAR_PRINTS sw7_blipswap = 0 sw7_convo_counter = 0 //finish convo sw7_backcar_counter = 1 //Cue back in car, get to location variations GENERATE_RANDOM_INT_IN_RANGE 0 1 sw7_random // only one text option ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF GET_AREA_VISIBLE sw7_visible IF sw7_visible = 0 IF NOT IS_MINIGAME_IN_PROGRESS SET_PLAYER_CONTROL player1 ON ENDIF ENDIF IF sw7_blipswap = 0 IF IS_CHAR_IN_CAR scplayer sw7_sweethearse IF LOCATE_CHAR_IN_CAR_3D scplayer 799.0102 -1074.0321 23.0115 3.8 3.8 4.0 TRUE SET_PLAYER_CONTROL player1 OFF IF IS_CAR_STOPPED sw7_sweethearse REMOVE_BLIP sw7_cementB SET_PLAYER_CONTROL player1 OFF CLEAR_ONSCREEN_TIMER sw7_funeraltimer DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION 790.7784 -1072.1392 26.2131 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 791.6847 -1072.3779 25.8645 JUMP_CUT LOAD_SCENE 803.5742 -1075.7522 23.3957 WAIT 0 IF NOT IS_CAR_DEAD sw7_sweethearse FREEZE_CAR_POSITION sw7_sweethearse TRUE ENDIF SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_ONSCREEN_TIMER sw7_funeraltimer DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE sw7_checkgangblips = 0 sw7_missionprogress = 1 sw7_newcutscene = 1 timera = 0 IF sw7_audio_underway = 0 sw7_counter = 29 ENDIF IF sw7_missionprogress = -999 CREATE_CHAR PEDTYPE_MISSION2 FAM2 820.7578 -1078.6709 22.9313 sw7_grove1 SET_CHAR_HEADING sw7_grove1 258.1012 SET_CHAR_DECISION_MAKER sw7_grove1 sw7_emptydm SET_CHAR_HEALTH sw7_grove1 500 SET_CHAR_MAX_HEALTH sw7_grove1 500 SET_CHAR_NEVER_TARGETTED sw7_grove1 TRUE GIVE_WEAPON_TO_CHAR sw7_grove1 WEAPONTYPE_MICRO_UZI 99999 CREATE_CHAR PEDTYPE_MISSION2 FAM2 820.2401 -1075.7628 23.0894 sw7_grove2 SET_CHAR_HEADING sw7_grove2 200.7 SET_CHAR_DECISION_MAKER sw7_grove2 sw7_emptydm SET_CHAR_HEALTH sw7_grove2 500 SET_CHAR_MAX_HEALTH sw7_grove2 500 SET_CHAR_NEVER_TARGETTED sw7_grove2 TRUE GIVE_WEAPON_TO_CHAR sw7_grove2 WEAPONTYPE_MICRO_UZI 99999 ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED FAM2 MARK_MODEL_AS_NO_LONGER_NEEDED FAM3 MARK_MODEL_AS_NO_LONGER_NEEDED FAM1 IF NOT IS_CHAR_DEAD sweet SET_CHAR_DECISION_MAKER sweet sw7_emptydm CLEAR_CHAR_TASKS sweet ADD_BLIP_FOR_CHAR sweet sw7_sweetB SET_BLIP_AS_FRIENDLY sw7_sweetB TRUE OPEN_SEQUENCE_TASK sw7_sweetjumpseq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 804.5760 -1075.7946 23.3946 PEDMOVE_WALK 10000 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK sw7_sweetjumpseq PERFORM_SEQUENCE_TASK sweet sw7_sweetjumpseq CLEAR_SEQUENCE_TASK sw7_sweetjumpseq timera = 0 ENDIF WHILE timera < 1000 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD sw7_banger1 SET_CHAR_DECISION_MAKER sw7_banger1 sw7_emptydm REMOVE_CHAR_FROM_GROUP sw7_banger1 CLEAR_CHAR_TASKS sw7_banger1 OPEN_SEQUENCE_TASK sw7_banger1jumpseq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 804.8553 -1074.4220 23.4385 PEDMOVE_WALK 10000 CLOSE_SEQUENCE_TASK sw7_banger1jumpseq PERFORM_SEQUENCE_TASK sw7_banger1 sw7_banger1jumpseq CLEAR_SEQUENCE_TASK sw7_banger1jumpseq ENDIF WHILE timera < 1750 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD sw7_banger2 SET_CHAR_DECISION_MAKER sw7_banger2 sw7_emptydm REMOVE_CHAR_FROM_GROUP sw7_banger2 CLEAR_CHAR_TASKS sw7_banger2 OPEN_SEQUENCE_TASK sw7_banger2jumpseq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 805.1254 -1072.3445 23.5187 PEDMOVE_RUN 10000 CLOSE_SEQUENCE_TASK sw7_banger2jumpseq PERFORM_SEQUENCE_TASK sw7_banger2 sw7_banger2jumpseq CLEAR_SEQUENCE_TASK sw7_banger2jumpseq ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //sw7_missionprogress = 0 condition check IF sw7_newcutscene = 1 IF timera > 500 sw7_newcutscene = 4 timera = 0 ENDIF ENDIF IF sw7_newcutscene = 4 IF timera > 1000 IF sw7_newskipfix = 0 sw7_newctskip_needed = 1 sw7_newskipfix = 1 ENDIF ENDIF IF timera > 3000 CLEAR_AREA 804.5760 -1075.7946 23.3946 5.0 TRUE SET_FIXED_CAMERA_POSITION 813.1065 -1071.7083 27.3524 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 812.2476 -1072.2009 27.2129 JUMP_CUT sw7_newcutscene = 5 IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS scplayer OPEN_SEQUENCE_TASK sw7_playerwallseq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 803.7976 -1075.8824 23.3933 PEDMOVE_RUN 10000 TASK_ACHIEVE_HEADING -1 272.0 CLOSE_SEQUENCE_TASK sw7_playerwallseq PERFORM_SEQUENCE_TASK scplayer sw7_playerwallseq CLEAR_SEQUENCE_TASK sw7_playerwallseq ENDIF timera = 0 IF NOT IS_CHAR_DEAD sw7_banger2 CLEAR_CHAR_TASKS sw7_banger2 SET_CHAR_COORDINATES sw7_banger2 805.1254 -1072.3445 23.5187 SET_CHAR_HEADING sw7_banger2 230.0 OPEN_SEQUENCE_TASK sw7_banger2jumpseq TASK_CLIMB -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 820.4114 -1076.6030 23.0623 PEDMOVE_RUN 10000 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK sw7_banger2jumpseq PERFORM_SEQUENCE_TASK sw7_banger2 sw7_banger2jumpseq CLEAR_SEQUENCE_TASK sw7_banger2jumpseq ENDIF ENDIF ENDIF IF sw7_newcutscene = 5 IF timera > 200 CLEAR_AREA 804.5760 -1075.7946 23.3946 5.0 TRUE IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS sweet SET_CHAR_COORDINATES sweet 804.5760 -1075.7946 23.3946 SET_CHAR_HEADING sweet 271.0 OPEN_SEQUENCE_TASK sw7_sweetjumpseq TASK_CLIMB -1 TRUE CLOSE_SEQUENCE_TASK sw7_sweetjumpseq PERFORM_SEQUENCE_TASK sweet sw7_sweetjumpseq CLEAR_SEQUENCE_TASK sw7_sweetjumpseq ENDIF timera = 0 sw7_newcutscene = 6 ENDIF ENDIF IF sw7_newcutscene = 6 IF timera > 1000 IF NOT IS_CHAR_DEAD sw7_banger1 CLEAR_CHAR_TASKS sw7_banger1 SET_CHAR_COORDINATES sw7_banger1 804.8553 -1074.4220 23.4385 SET_CHAR_HEADING sw7_banger1 262.0 OPEN_SEQUENCE_TASK sw7_banger1jumpseq TASK_CLIMB -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 818.4114 -1076.6030 23.0623 PEDMOVE_RUN 10000 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK sw7_banger1jumpseq PERFORM_SEQUENCE_TASK sw7_banger1 sw7_banger1jumpseq CLEAR_SEQUENCE_TASK sw7_banger1jumpseq ENDIF sw7_newcutscene = 10 timera = 0 ENDIF ENDIF IF sw7_newcutscene = 10 IF timera > 2000 IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS sweet TASK_GO_STRAIGHT_TO_COORD sweet 818.4114 -1076.6030 23.0623 PEDMOVE_RUN 10000 ENDIF IF sw7_audio_underway = 0 sw7_counter = 31 ENDIF sw7_newcutscene = 13 timera = 0 ENDIF ENDIF IF sw7_newcutscene = 13 IF sw7_audio_underway = 0 IF timera > 2000 sw7_newcutscene = 15 ENDIF ENDIF ENDIF IF sw7_newcutscene = 15 sw7_newctskip_needed = 0 CLEAR_CHAR_TASKS scplayer SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT CLEAR_PRINTS //DO_FADE 500 FADE_IN //WHILE GET_FADING_STATUS // WAIT 0 //ENDWHILE SET_PLAYER_CONTROL player1 ON sw7_newcutscene = 20 CLEAR_PRINTS PRINT_NOW TWAR635 6000 1 CHECKPOINT_SAVE 1 IF NOT IS_CHAR_DEAD sweet //IF NOT IS_CHAR_IN_ANY_CAR sweet CLEAR_CHAR_TASKS_IMMEDIATELY sweet SET_CHAR_COORDINATES sweet 818.4114 -1076.6030 23.0623 SET_CHAR_HEADING sweet 279.0 TASK_TURN_CHAR_TO_FACE_CHAR sweet scplayer //ENDIF /* IF IS_CHAR_IN_ANY_CAR sweet CLEAR_CHAR_TASKS_IMMEDIATELY sweet WARP_CHAR_FROM_CAR_TO_COORD sweet 818.4114 -1076.6030 23.0623 SET_CHAR_HEADING sweet 279.0 ENDIF */ ENDIF IF NOT IS_CHAR_DEAD sw7_banger1 //IF NOT IS_CHAR_IN_ANY_CAR sw7_banger1 CLEAR_CHAR_TASKS_IMMEDIATELY sw7_banger1 SET_CHAR_COORDINATES sw7_banger1 816.0391 -1072.6071 23.7100 SET_CHAR_HEADING sw7_banger1 248.0 //ENDIF /* IF IS_CHAR_IN_ANY_CAR sw7_banger1 CLEAR_CHAR_TASKS_IMMEDIATELY sw7_banger1 WARP_CHAR_FROM_CAR_TO_COORD sw7_banger1 817.2468 -1077.1143 23.0443 SET_CHAR_HEADING sw7_banger1 248.0 ENDIF */ ENDIF IF NOT IS_CHAR_DEAD sw7_banger2 //IF NOT IS_CHAR_IN_ANY_CAR sw7_banger2 CLEAR_CHAR_TASKS_IMMEDIATELY sw7_banger2 SET_CHAR_COORDINATES sw7_banger2 815.9681 -1073.7233 23.5666 SET_CHAR_HEADING sw7_banger2 253.0 //ENDIF /* IF IS_CHAR_IN_ANY_CAR sw7_banger2 CLEAR_CHAR_TASKS_IMMEDIATELY sw7_banger2 WARP_CHAR_FROM_CAR_TO_COORD sw7_banger2 818.9229 -1075.7800 23.1123 SET_CHAR_HEADING sw7_banger2 260.0 ENDIF */ ENDIF ENDIF IF sw7_missionprogress = 1 IF sw7_nextprompt = 20 IF NOT IS_CHAR_DEAD sweet IF sw7_cockedandloaded = 0 IF LOCATE_CHAR_ANY_MEANS_3D sweet 818.4114 -1076.6030 23.0623 4.0 4.0 4.0 FALSE IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sweet 2.0 2.0 FALSE // was 10.0 CLEAR_CHAR_TASKS sweet //TASK_TURN_CHAR_TO_FACE_CHAR sweet scplayer IF NOT IS_CHAR_DEAD sw7_grove2 //TASK_PLAY_ANIM sw7_grove2 RIFLE_load_pro PED 8.0 FALSE FALSE FALSE TRUE -1 ENDIF IF NOT IS_CHAR_DEAD sw7_grove1 //TASK_PLAY_ANIM sw7_grove1 M_smkstnd_loop SMOKING 8.0 FALSE FALSE FALSE TRUE -1 ENDIF sw7_cockedandloaded = 1 //write_debug check ENDIF ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D sweet 818.4114 -1076.6030 23.0623 2.0 2.0 2.0 FALSE IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sweet 2.0 2.0 FALSE // was 8.0 sw7_missionprogress = 4 REMOVE_BLIP sw7_sweetB /* IF NOT IS_CHAR_DEAD sw7_banger1 SET_CHAR_COORDINATES sw7_banger1 814.8055 -1073.2092 23.3404 SET_CHAR_HEADING sw7_banger1 289.0 SET_GROUP_MEMBER sw7_group sw7_banger1 ENDIF IF NOT IS_CHAR_DEAD sw7_banger2 SET_CHAR_COORDINATES sw7_banger2 816.2036 -1077.6571 23.0215 SET_CHAR_HEADING sw7_banger2 234.0 SET_GROUP_MEMBER sw7_group sw7_banger2 ENDIF */ ENDIF ENDIF ENDIF ENDIF ENDIF //sw7_missionprogress = 1 condition check IF sw7_missionprogress < 1 IF IS_CAR_DEAD sw7_sweethearse CLEAR_PRINTS PRINT_NOW TWAR633 8000 1 GOTO mission_sweet7_failed ENDIF ENDIF // Various fail conditions. Wrecking arrival car, attacking mourners before Kane arrives. IF sw7_missionprogress < 5 IF DOES_CHAR_EXIST sw7_banger1 IF IS_CHAR_DEAD sw7_banger1 CLEAR_PRINTS GENERATE_RANDOM_INT_IN_RANGE 0 3 sw7_random sw7_convo_counter = 21 sw7_missionprogress = 999 ENDIF ENDIF IF DOES_CHAR_EXIST sw7_banger2 IF IS_CHAR_DEAD sw7_banger2 CLEAR_PRINTS GENERATE_RANDOM_INT_IN_RANGE 0 3 sw7_random sw7_convo_counter = 21 sw7_missionprogress = 999 ENDIF ENDIF IF DOES_CHAR_EXIST sw7_protector1 /* IF sw7_endanims = 0 IF NOT IS_CHAR_PLAYING_ANIM sw7_protector1 mrnM_loop CLEAR_CHAR_TASKS sw7_protector1 TASK_PLAY_ANIM sw7_protector1 mrnM_loop graveyard 4.0 1 FALSE FALSE FALSE -1 sw7_endanims = 1 ENDIF ENDIF */ IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR sw7_protector1 scplayer sw7_endanims = 1 IF NOT IS_CHAR_DEAD sw7_protector1 CLEAR_CHAR_TASKS sw7_protector1 TASK_KILL_CHAR_ON_FOOT sw7_protector1 scplayer ENDIF IF NOT IS_CHAR_DEAD sw7_protector2 CLEAR_CHAR_TASKS sw7_protector2 TASK_KILL_CHAR_ON_FOOT sw7_protector2 scplayer ENDIF IF NOT IS_CHAR_DEAD sw7_protector3 CLEAR_CHAR_TASKS sw7_protector3 TASK_KILL_CHAR_ON_FOOT sw7_protector3 scplayer ENDIF IF NOT IS_CHAR_DEAD sw7_greetinface CLEAR_CHAR_TASKS sw7_greetinface TASK_SMART_FLEE_CHAR sw7_greetinface scplayer 100.0 -1 ENDIF IF NOT IS_CHAR_DEAD sw7_preach CLEAR_CHAR_TASKS sw7_preach TASK_SMART_FLEE_CHAR sw7_preach scplayer 100.0 -1 ENDIF //WAIT 3000 GENERATE_RANDOM_INT_IN_RANGE 0 3 sw7_random sw7_convo_counter = 41 sw7_missionprogress = 999 ENDIF ENDIF IF DOES_CHAR_EXIST sw7_protector2 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR sw7_protector2 scplayer sw7_endanims = 1 IF NOT IS_CHAR_DEAD sw7_protector2 CLEAR_CHAR_TASKS sw7_protector2 TASK_KILL_CHAR_ON_FOOT sw7_protector2 scplayer ENDIF IF NOT IS_CHAR_DEAD sw7_protector1 CLEAR_CHAR_TASKS sw7_protector1 TASK_KILL_CHAR_ON_FOOT sw7_protector1 scplayer ENDIF IF NOT IS_CHAR_DEAD sw7_protector3 CLEAR_CHAR_TASKS sw7_protector3 TASK_KILL_CHAR_ON_FOOT sw7_protector3 scplayer ENDIF IF NOT IS_CHAR_DEAD sw7_greetinface CLEAR_CHAR_TASKS sw7_greetinface TASK_SMART_FLEE_CHAR sw7_greetinface scplayer 100.0 -1 ENDIF IF NOT IS_CHAR_DEAD sw7_preach CLEAR_CHAR_TASKS sw7_preach TASK_SMART_FLEE_CHAR sw7_preach scplayer 100.0 -1 ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 3 sw7_random sw7_convo_counter = 41 sw7_missionprogress = 999 ENDIF ENDIF IF DOES_CHAR_EXIST sw7_protector3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR sw7_protector3 scplayer sw7_endanims = 1 IF NOT IS_CHAR_DEAD sw7_protector3 CLEAR_CHAR_TASKS sw7_protector3 TASK_KILL_CHAR_ON_FOOT sw7_protector3 scplayer ENDIF IF NOT IS_CHAR_DEAD sw7_protector1 CLEAR_CHAR_TASKS sw7_protector1 TASK_KILL_CHAR_ON_FOOT sw7_protector1 scplayer ENDIF IF NOT IS_CHAR_DEAD sw7_protector2 CLEAR_CHAR_TASKS sw7_protector2 TASK_KILL_CHAR_ON_FOOT sw7_protector2 scplayer ENDIF IF NOT IS_CHAR_DEAD sw7_greetinface CLEAR_CHAR_TASKS sw7_greetinface TASK_SMART_FLEE_CHAR sw7_greetinface scplayer 100.0 -1 ENDIF IF NOT IS_CHAR_DEAD sw7_preach CLEAR_CHAR_TASKS sw7_preach TASK_SMART_FLEE_CHAR sw7_preach scplayer 100.0 -1 ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 3 sw7_random sw7_convo_counter = 41 sw7_missionprogress = 999 ENDIF ENDIF IF DOES_CHAR_EXIST sw7_preach IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR sw7_preach scplayer sw7_endanims = 1 IF NOT IS_CHAR_DEAD sw7_protector1 CLEAR_CHAR_TASKS sw7_protector1 TASK_KILL_CHAR_ON_FOOT sw7_protector1 scplayer ENDIF IF NOT IS_CHAR_DEAD sw7_protector2 CLEAR_CHAR_TASKS sw7_protector2 TASK_KILL_CHAR_ON_FOOT sw7_protector2 scplayer ENDIF IF NOT IS_CHAR_DEAD sw7_protector3 CLEAR_CHAR_TASKS sw7_protector3 TASK_KILL_CHAR_ON_FOOT sw7_protector3 scplayer ENDIF IF NOT IS_CHAR_DEAD sw7_greetinface CLEAR_CHAR_TASKS sw7_greetinface TASK_SMART_FLEE_CHAR sw7_greetinface scplayer 100.0 -1 ENDIF IF NOT IS_CHAR_DEAD sw7_preach CLEAR_CHAR_TASKS sw7_preach TASK_SMART_FLEE_CHAR sw7_preach scplayer 100.0 -1 ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 3 sw7_random sw7_convo_counter = 41 sw7_missionprogress = 999 ENDIF ENDIF IF DOES_CHAR_EXIST sw7_greetinface IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR sw7_greetinface scplayer sw7_endanims = 1 IF NOT IS_CHAR_DEAD sw7_protector1 CLEAR_CHAR_TASKS sw7_protector1 TASK_KILL_CHAR_ON_FOOT sw7_protector1 scplayer ENDIF IF NOT IS_CHAR_DEAD sw7_protector2 CLEAR_CHAR_TASKS sw7_protector2 TASK_KILL_CHAR_ON_FOOT sw7_protector2 scplayer ENDIF IF NOT IS_CHAR_DEAD sw7_protector3 CLEAR_CHAR_TASKS sw7_protector3 TASK_KILL_CHAR_ON_FOOT sw7_protector3 scplayer ENDIF IF NOT IS_CHAR_DEAD sw7_greetinface CLEAR_CHAR_TASKS sw7_greetinface TASK_SMART_FLEE_CHAR sw7_greetinface scplayer 100.0 -1 ENDIF IF NOT IS_CHAR_DEAD sw7_preach CLEAR_CHAR_TASKS sw7_preach TASK_SMART_FLEE_CHAR sw7_preach scplayer 100.0 -1 ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 3 sw7_random sw7_convo_counter = 41 sw7_missionprogress = 999 ENDIF ENDIF ENDIF IF sw7_missionprogress = 999 // mission failed audio IF sw7_convo_counter > 20 // killed one of the two guys needed for the job AND sw7_convo_counter < 30 IF sw7_audio_underway = 0 SWITCH sw7_convo_counter CASE 21 IF sw7_random = 0 sw7_counter = 17 ENDIF IF sw7_random = 1 sw7_counter = 18 ENDIF IF sw7_random = 2 sw7_counter = 19 ENDIF sw7_convo_counter = 22 BREAK CASE 22 sw7_counter = 0 PRINT_NOW TWAR658 6000 1 sw7_convo_counter = 0 // finish convo GOTO mission_sweet7_failed BREAK ENDSWITCH // sw7_audio_underway = 1 ENDIF ENDIF IF sw7_convo_counter > 30 // funeral will be over, time's ran out AND sw7_convo_counter < 40 IF sw7_audio_underway = 0 SWITCH sw7_convo_counter CASE 31 IF sw7_random = 0 sw7_counter = 27 ENDIF IF sw7_random = 1 sw7_counter = 28 ENDIF sw7_convo_counter = 32 BREAK CASE 32 sw7_counter = 0 PRINT_NOW TWAR619 6000 1 sw7_convo_counter = 0 // finish convo GOTO mission_sweet7_failed BREAK ENDSWITCH // sw7_audio_underway = 1 ENDIF ENDIF IF sw7_convo_counter > 40 // Started high jinks at the cemetery before kane has arrived AND sw7_convo_counter < 50 IF sw7_audio_underway = 0 SWITCH sw7_convo_counter CASE 41 IF sw7_random = 0 sw7_counter = 37 ENDIF IF sw7_random = 1 sw7_counter = 38 ENDIF IF sw7_random = 1 sw7_counter = 39 ENDIF sw7_convo_counter = 42 BREAK CASE 42 sw7_counter = 0 PRINT_NOW TWAR625 6000 1 sw7_convo_counter = 0 // finish convo GOTO mission_sweet7_failed BREAK ENDSWITCH // sw7_audio_underway = 1 ENDIF ENDIF IF sw7_convo_counter > 60 // Kane has escaped in his getaway car AND sw7_convo_counter < 70 IF sw7_audio_underway = 0 SWITCH sw7_convo_counter CASE 61 IF sw7_random = 0 sw7_counter = 61 ENDIF IF sw7_random = 1 sw7_counter = 62 ENDIF IF sw7_random = 2 sw7_counter = 63 ENDIF sw7_convo_counter = 62 BREAK CASE 62 sw7_counter = 0 CLEAR_PRINTS PRINT_NOW TWAR627 8000 1 // Kane in his own neighbourhood fail condition DELETE_CHAR sw7_kane sw7_convo_counter = 0 // finish convo GOTO mission_sweet7_failed BREAK ENDSWITCH // sw7_audio_underway = 1 ENDIF ENDIF ENDIF IF sw7_missionprogress = 4 //IF LOCATE_CHAR_ANY_MEANS_3D scplayer 813.6328 -1102.5841 24.7974 2.0 2.0 2.0 TRUE // sw7_missionprogress = 5 //ENDIF // IF HAS_PICKUP_BEEN_COLLECTED sw7_gun //REMOVE_BLIP sw7_mausoB //WAIT 1000 sw7_missionprogress = 5 IF NOT IS_CAR_DEAD sw7_sweethearse CLOSE_ALL_CAR_DOORS sw7_sweethearse FREEZE_CAR_POSITION sw7_sweethearse FALSE LOCK_CAR_DOORS sw7_sweethearse CARLOCK_LOCKOUT_PLAYER_ONLY MARK_CAR_AS_NO_LONGER_NEEDED sw7_sweethearse ENDIF CLEAR_AREA 894.0744 -1073.4971 23.3203 125.0 TRUE SET_PLAYER_CONTROL player1 OFF //CREATE_CAR admiral 897.3787 -1072.4325 23.3203 sw7_kanehearse // LOAD_SCENE 897.3787 -1073.5021 23.3203 CREATE_CAR admiral 897.3787 -1073.5021 23.3203 sw7_kanehearse // SET_CAR_HEADING sw7_kanehearse 84.4729 SET_CAR_HEADING sw7_kanehearse 90.2 CHANGE_CAR_COLOUR sw7_kanehearse 25 40 LOCK_CAR_DOORS sw7_kanehearse CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_PROOFS sw7_kanehearse TRUE TRUE TRUE TRUE TRUE MARK_MODEL_AS_NO_LONGER_NEEDED admiral CREATE_CHAR_AS_PASSENGER sw7_kanehearse PEDTYPE_MISSION1 BALLAS3 0 sw7_kane CREATE_CHAR_INSIDE_CAR sw7_kanehearse PEDTYPE_MISSION1 BALLAS2 sw7_kanechauffeur GIVE_WEAPON_TO_CHAR sw7_kanechauffeur WEAPONTYPE_MICRO_UZI 2000 SET_CHAR_DECISION_MAKER sw7_kane sw7_goondm SET_CHAR_DECISION_MAKER sw7_kanechauffeur sw7_goondm /* Altered SET_CHAR_HEALTH sw7_kane 1000 */ SET_CHAR_HEALTH sw7_kane 260 SET_CHAR_MAX_HEALTH sw7_kane 300 ////WRITE_DEBUG settinghealth SET_CHAR_ACCURACY sw7_kane 100 ADD_ARMOUR_TO_CHAR sw7_kane 100 SET_CHAR_ONLY_DAMAGED_BY_PLAYER sw7_kane TRUE SET_CHAR_SUFFERS_CRITICAL_HITS sw7_kane FALSE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE sw7_kane FALSE SET_CHAR_ALLOWED_TO_DUCK sw7_kane FALSE CREATE_CHAR PEDTYPE_MISSION1 BALLAS2 876.4128 -1068.8662 23.3745 sw7_protector4 SET_CHAR_DECISION_MAKER sw7_protector4 sw7_emptydm SET_CHAR_HEADING sw7_protector4 166.6 GIVE_WEAPON_TO_CHAR sw7_protector4 WEAPONTYPE_MICRO_UZI 2000 SET_CHAR_ONLY_DAMAGED_BY_PLAYER sw7_protector4 TRUE SET_CHAR_ACCURACY sw7_protector4 90 SET_CHAR_HEALTH sw7_protector4 120 CREATE_CHAR PEDTYPE_MISSION1 BALLAS2 922.7446 -1066.2141 23.3203 sw7_protector5 SET_CHAR_DECISION_MAKER sw7_protector5 sw7_emptydm SET_CHAR_HEADING sw7_protector5 66.6 GIVE_WEAPON_TO_CHAR sw7_protector5 WEAPONTYPE_MICRO_UZI 2000 SET_CHAR_SHOOT_RATE sw7_protector5 15 SET_CHAR_ONLY_DAMAGED_BY_PLAYER sw7_protector5 TRUE SET_CHAR_ACCURACY sw7_protector5 90 SET_CHAR_HEALTH sw7_protector5 120 CREATE_CHAR PEDTYPE_MISSION1 BALLAS2 922.4503 -1117.9081 23.0517 sw7_protector6 SET_CHAR_DECISION_MAKER sw7_protector6 sw7_emptydm SET_CHAR_HEADING sw7_protector6 357.6 GIVE_WEAPON_TO_CHAR sw7_protector6 WEAPONTYPE_MICRO_UZI 2000 SET_CHAR_SHOOT_RATE sw7_protector6 15 SET_CHAR_ONLY_DAMAGED_BY_PLAYER sw7_protector6 TRUE SET_CHAR_ACCURACY sw7_protector6 90 SET_CHAR_HEALTH sw7_protector6 120 // ENDIF ENDIF // sw7_missionprogress = 1 condition check IF sw7_checkkane = 0 IF sw7_missionprogress > 4 AND sw7_missionprogress < 999 IF NOT IS_CHAR_DEAD sw7_kane GET_CHAR_HEALTH sw7_kane sw7_kanefuckedhealth sw7_kanehealth = sw7_kanefuckedhealth / 3 ENDIF IF sw7_pursuitunderway = 0 IF IS_CHAR_DEAD sw7_kane REMOVE_BLIP sw7_kaneb sw7_missionprogress = 1352 // Added 07.10.04 GOSUB sw7_mopup CLEAR_PRINTS sw7_checkkane = 1 sw7_grove1fight = 99 sw7_grove2fight = 99 sw7_sweetfight = 99 sw7_convo_counter = 1 IF NOT IS_CAR_DEAD sw7_pursuitcar IF NOT IS_CHAR_DEAD sweet LOCK_CAR_DOORS sw7_pursuitcar CARLOCK_UNLOCKED LOCK_CAR_DOORS sw7_pursuitcar CARLOCK_LOCKOUT_PLAYER_ONLY CLEAR_CHAR_TASKS sweet OPEN_SEQUENCE_TASK sw7_mopupseq TASK_GO_STRAIGHT_TO_COORD -1 930.8062 -1114.4586 23.0940 PEDMOVE_RUN 10000 TASK_ENTER_CAR_AS_PASSENGER -1 sw7_pursuitcar 30000 -1 // was -1 0 CLOSE_SEQUENCE_TASK sw7_mopupseq PERFORM_SEQUENCE_TASK sweet sw7_mopupseq CLEAR_SEQUENCE_TASK sw7_mopupseq ENDIF ENDIF IF NOT IS_CHAR_DEAD sw7_grove1 CLEAR_CHAR_TASKS sw7_grove1 OPEN_SEQUENCE_TASK sw7_grove1guardseq TASK_GO_STRAIGHT_TO_COORD -1 945.3914 -1100.3757 23.2999 PEDMOVE_RUN -1 TASK_AIM_GUN_AT_COORD -1 969.3931 -1098.3408 22.8770 120000 TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK sw7_grove1guardseq PERFORM_SEQUENCE_TASK sw7_grove1 sw7_grove1guardseq CLEAR_SEQUENCE_TASK sw7_grove1guardseq ENDIF IF NOT IS_CHAR_DEAD sw7_grove2 CLEAR_CHAR_TASKS sw7_grove2 OPEN_SEQUENCE_TASK sw7_grove2guardseq TASK_GO_STRAIGHT_TO_COORD -1 944.9411 -1106.7729 23.2539 PEDMOVE_RUN -1 TASK_AIM_GUN_AT_COORD -1 970.9636 -1107.9619 22.8672 120000 TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK sw7_grove2guardseq PERFORM_SEQUENCE_TASK sw7_grove2 sw7_grove2guardseq CLEAR_SEQUENCE_TASK sw7_grove2guardseq ENDIF ENDIF ENDIF IF sw7_pursuitunderway > 0 IF IS_CHAR_DEAD sw7_kane REMOVE_BLIP sw7_kaneb sw7_missionprogress = 1352 // Added 07.10.04 sw7_checkkane = 4 ENDIF ENDIF ENDIF ENDIF IF sw7_checkkane = 4 IF NOT IS_CAR_DEAD sw7_pursuitcar IF NOT IS_CHAR_DEAD sweet IF IS_CHAR_SITTING_IN_CAR sweet sw7_pursuitcar LOCK_CAR_DOORS sw7_pursuitcar CARLOCK_UNLOCKED IF IS_CHAR_SITTING_IN_CAR scplayer sw7_pursuitcar sw7_ptrfullfixflag = 1 CLEAR_CHAR_TASKS sweet REMOVE_BLIP sw7_pursuitcarb ADD_BLIP_FOR_COORD 2501.6335 -1674.1307 12.3689 sw7_passedB SET_POLICE_IGNORE_PLAYER player1 OFF SET_CAMERA_BEHIND_PLAYER sw7_checkkane = 8 sw7_blipswap = 0 sw7_convo_counter = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF sw7_checkkane = 8 IF sw7_pursuitunderway = 0 IF sw7_convo_counter > 0 IF sw7_audio_underway = 0 SWITCH sw7_convo_counter CASE 1 sw7_counter = 69 sw7_convo_counter = 2 BREAK CASE 2 sw7_counter = 0 PRINT_NOW TWAR646 6000 1 sw7_convo_counter = 0 // finish convo BREAK ENDSWITCH ENDIF ENDIF ENDIF IF sw7_pursuitunderway > 0 //WRITE_DEBUG test IF sw7_convo_counter > 0 IF sw7_audio_underway = 0 SWITCH sw7_convo_counter CASE 1 sw7_counter = 64 sw7_convo_counter = 2 BREAK CASE 2 sw7_counter = 65 sw7_convo_counter = 3 BREAK CASE 3 sw7_counter = 66 sw7_convo_counter = 4 BREAK CASE 4 sw7_counter = 0 CLEAR_PRINTS PRINT_NOW TWAR646 6000 1 sw7_convo_counter = 0 // finish convo BREAK ENDSWITCH ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD sw7_pursuitcar IF sw7_blipswap = 0 IF NOT IS_CHAR_IN_CAR scplayer sw7_pursuitcar sw7_convo_counter = 0 ADD_BLIP_FOR_CAR sw7_pursuitcar sw7_pursuitcarB SET_BLIP_AS_FRIENDLY sw7_pursuitcarB TRUE REMOVE_BLIP sw7_passedB CLEAR_PRINTS PRINT_NOW TWAR645 6000 1 sw7_blipswap = 1 ENDIF ENDIF IF sw7_blipswap = 1 IF IS_CHAR_IN_CAR scplayer sw7_pursuitcar REMOVE_BLIP sw7_pursuitcarB ADD_BLIP_FOR_COORD 2501.6335 -1674.1307 12.3689 sw7_passedB SET_POLICE_IGNORE_PLAYER player1 OFF CLEAR_PRINTS PRINT_NOW TWAR647 8000 1 sw7_blipswap = 0 ENDIF ENDIF GET_AREA_VISIBLE sw7_visible IF sw7_visible = 0 IF NOT IS_MINIGAME_IN_PROGRESS SET_PLAYER_CONTROL player1 ON ENDIF ENDIF IF NOT IS_CHAR_DEAD sweet IF IS_CHAR_SITTING_IN_CAR sweet sw7_pursuitcar IF IS_CHAR_IN_CAR scplayer sw7_pursuitcar IF LOCATE_CHAR_IN_CAR_3D scplayer 2501.6335 -1674.1307 12.3689 4.0 4.0 4.0 TRUE SET_PLAYER_CONTROL player1 OFF // SET_CAR_TEMP_ACTION sw7_pursuitcar TEMPACT_HANDBRAKESTRAIGHT 20000 IF IS_CAR_STOPPED sw7_pursuitcar REMOVE_BLIP sw7_passedB CLEAR_PRINTS sw7_checkkane = 74 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF sw7_checkkane = 74 SET_PLAYER_CONTROL player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 TRUE CLEAR_AREA 2501.6335 -1674.1307 12.3689 5.0 TRUE SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 2499.5815 -1682.3954 15.2226 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2499.9690 -1681.4847 15.0790 JUMP_CUT IF NOT IS_CHAR_DEAD sweet OPEN_SEQUENCE_TASK sw7_sweetfinalseq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 2516.6335 -1673.8468 13.9671 PEDMOVE_WALK 20000 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK sw7_sweetfinalseq PERFORM_SEQUENCE_TASK sweet sw7_sweetfinalseq CLEAR_SEQUENCE_TASK sw7_sweetfinalseq ENDIF timerb = 0 sw7_convo_counter = 1 sw7_checkkane = 77 sw7_parkedcar = 1 // new segment 07.10.04 ENDIF //IF sw7_checkkane = 77 // taken out 07.10.04 IF sw7_parkedcar = 1 //using this variable as a stopgap sw7_checkkane = 77 IF sw7_convo_counter > 0 IF sw7_audio_underway = 0 SWITCH sw7_convo_counter CASE 1 sw7_counter = 70 sw7_convo_counter = 2 BREAK CASE 2 sw7_counter = 71 sw7_convo_counter = 3 BREAK CASE 3 sw7_counter = 72 sw7_convo_counter = 4 BREAK CASE 4 sw7_counter = 0 sw7_checkkane = 80 sw7_parkedcar = 2 // added 07.10.04 sw7_convo_counter = 0 // finish convo BREAK ENDSWITCH ENDIF ENDIF ENDIF IF sw7_parkedcar = 2 SET_CAMERA_BEHIND_PLAYER DELETE_CHAR sweet SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT CLEAR_PRINTS SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE GOTO mission_sweet7_passed ENDIF IF sw7_missionprogress = 5 SET_PLAYER_CONTROL player1 OFF WAIT 0 DO_FADE 1500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF IF NOT IS_CHAR_DEAD sw7_grove1 SET_CHAR_SUFFERS_CRITICAL_HITS sw7_grove1 FALSE ENDIF IF NOT IS_CHAR_DEAD sw7_grove2 SET_CHAR_SUFFERS_CRITICAL_HITS sw7_grove2 FALSE ENDIF IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS sweet ENDIF SWITCH_WIDESCREEN ON SET_CHAR_COORDINATES scplayer 816.8154 -1075.3832 23.3516 SET_CHAR_HEADING scplayer 277.0 SET_FIXED_CAMERA_POSITION 822.0925 -1077.8783 23.6895 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 821.1437 -1077.5657 23.7335 JUMP_CUT LOAD_SCENE 803.9182 -1078.6259 23.3515 WAIT 1000 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE sw7_missionprogress = 6 sw7_convo_counter = 1 TIMERA = 0 timerb = 0 ENDIF //sw7_missionprogress = 5 condition check IF sw7_missionprogress = 6 IF sw7_convo_counter > 0 IF sw7_audio_underway = 0 SWITCH sw7_convo_counter CASE 1 //sw7_counter = 32 sw7_convo_counter = 2 BREAK CASE 2 // sw7_counter = 33 IF NOT IS_CHAR_DEAD sweet IF NOT IS_CHAR_DEAD sw7_kane CLEAR_CHAR_TASKS sweet TASK_TURN_CHAR_TO_FACE_CHAR sweet sw7_kane ENDIF ENDIF sw7_convo_counter = 3 BREAK CASE 3 sw7_counter = 34 sw7_convo_counter = 4 BREAK CASE 4 sw7_counter = 0 PRINT_HELP_FOREVER T661 // Press ~m~~widget_gang_follow~ to instruct your gang to follow you or ~m~~widget_gang_hold~ to instruct them to stay in position. sw7_forcehelp = 1 sw7_convo_counter = 0 // finish convo BREAK ENDSWITCH ENDIF ENDIF IF timerb > 10000 IF sw7_forcehelp = 1 PRINT_HELP_FOREVER T662 // Holding ~m~~widget_gang_follow~ or ~m~~widget_gang_hold~ for a few seconds or moving too far away from them will disband your group. sw7_forcehelp = 2 timerb = 0 ENDIF ENDIF IF sw7_forcehelp = 2 IF timerb > 8000 SET_FIXED_CAMERA_POSITION 891.9803 -1068.3428 23.6669 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 891.3828 -1069.1415 23.7373 JUMP_CUT sw7_ctskip_needed = 1 IF sw7_kanearrival = 0 IF NOT IS_CAR_DEAD sw7_kanehearse IF NOT IS_CHAR_DEAD sw7_kanechauffeur TASK_CAR_DRIVE_TO_COORD sw7_kanechauffeur sw7_kanehearse 875.3232 -1073.5021 23.3364 10.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS IF sw7_audio_underway = 0 sw7_counter = 40 ENDIF sw7_kanearrival = 1 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD sw7_kanehearse IF NOT IS_CHAR_DEAD sw7_kanechauffeur IF LOCATE_CAR_3D sw7_kanehearse 875.3232 -1071.9413 23.3364 3.0 3.0 3.0 FALSE IF IS_CAR_STOPPED sw7_kanehearse sw7_missionprogress = 7 IF sw7_audio_underway = 0 sw7_cut_counter = 0 ENDIF SET_FIXED_CAMERA_POSITION 871.9701 -1069.5032 25.6673 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 872.7517 -1070.0419 25.3530 JUMP_CUT LOCK_CAR_DOORS sw7_kanehearse CARLOCK_UNLOCKED SET_CAR_PROOFS sw7_kanehearse FALSE FALSE FALSE FALSE FALSE IF NOT IS_CHAR_DEAD sw7_kane OPEN_SEQUENCE_TASK sw7_kane1seq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 869.1639 -1071.6193 25.2208 PEDMOVE_WALK 10000 TASK_GO_STRAIGHT_TO_COORD -1 892.7105 -1077.9293 23.2684 PEDMOVE_WALK 10000 CLOSE_SEQUENCE_TASK sw7_kane1seq PERFORM_SEQUENCE_TASK sw7_kane sw7_kane1seq CLEAR_SEQUENCE_TASK sw7_kane1seq ENDIF TIMERA = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //sw7_missionprogress = 6 conditioncheck IF sw7_missionprogress = 7 IF TIMERA > 2000 IF NOT IS_CHAR_DEAD sw7_kanechauffeur OPEN_SEQUENCE_TASK sw7_chauffeur1seq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 873.9978 -1077.9880 23.3203 PEDMOVE_WALK 10000 TASK_GO_STRAIGHT_TO_COORD -1 833.1347 -1095.1868 22.8281 PEDMOVE_WALK 10000 CLOSE_SEQUENCE_TASK sw7_chauffeur1seq PERFORM_SEQUENCE_TASK sw7_kanechauffeur sw7_chauffeur1seq CLEAR_SEQUENCE_TASK sw7_chauffeur1seq ENDIF CLEAR_PRINTS sw7_missionprogress = 8 sw7_convo_counter = 1 ENDIF ENDIF // sw7_missionprogress = 7 condition check IF sw7_missionprogress = 8 IF sw7_convo_counter > 0 IF sw7_audio_underway = 0 SWITCH sw7_convo_counter CASE 1 sw7_counter = 41 sw7_convo_counter = 2 BREAK CASE 2 sw7_counter = 42 sw7_convo_counter = 3 BREAK CASE 3 sw7_counter = 0 sw7_convo_counter = 0 // finish convo BREAK ENDSWITCH // sw7_audio_underway = 1 ENDIF ENDIF IF TIMERA > 8000 sw7_missionprogress = 10 ENDIF ENDIF // sw7_missionprogress = 7 condition check IF sw7_missionprogress = 10 sw7_ctskip_needed = 0 sw7_convo_counter = 0 sw7_checkgangblips = 99 SET_CHAR_COORDINATES scplayer 817.3972 -1076.1641 23.1065 IF NOT IS_CHAR_DEAD sw7_banger1 SET_CHAR_COORDINATES sw7_banger1 820.5947 -1074.5170 23.1755 SET_CHAR_HEADING sw7_banger1 176.0 ENDIF IF NOT IS_CHAR_DEAD sw7_banger2 SET_CHAR_COORDINATES sw7_banger2 818.3846 -1079.0015 22.9290 SET_CHAR_HEADING sw7_banger2 291.0 ENDIF IF NOT IS_CHAR_DEAD sw7_kane CLEAR_CHAR_TASKS_IMMEDIATELY sw7_kane IF NOT IS_CHAR_IN_ANY_CAR sw7_kane SET_CHAR_COORDINATES sw7_kane 890.4531 -1063.3676 23.7342//886.5172 -1067.5045 23.5271 ENDIF IF IS_CHAR_IN_ANY_CAR sw7_kane WARP_CHAR_FROM_CAR_TO_COORD sw7_kane 890.4531 -1063.3676 23.7342//886.5172 -1067.5045 23.5271 ENDIF TASK_ACHIEVE_HEADING sw7_kane 84.0 ENDIF SET_CHAR_HEADING scplayer 255.0 SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT REMOVE_ANIMATION smoking REMOVE_ANIMATION graveyard IF NOT IS_CHAR_DEAD sw7_kanechauffeur CLEAR_CHAR_TASKS_IMMEDIATELY sw7_kanechauffeur SET_CHAR_COORDINATES sw7_kanechauffeur 844.5107 -1101.6604 22.8516 //SET_CHAR_COORDINATES sw7_kanechauffeur 850.0652 -1101.5718 22.8516 TASK_ACHIEVE_HEADING sw7_kanechauffeur 135.0 GIVE_WEAPON_TO_CHAR sw7_kanechauffeur WEAPONTYPE_PISTOL 2000 ADD_ARMOUR_TO_CHAR sw7_kanechauffeur 50 ENDIF IF NOT IS_CAR_DEAD sw7_kanehearse SET_CAR_COORDINATES sw7_kanehearse 875.3232 -1073.5021 23.3364 SET_CAR_HEADING sw7_kanehearse 89.0 LOCK_CAR_DOORS sw7_kanehearse CARLOCK_UNLOCKED SET_CAR_PROOFS sw7_kanehearse FALSE FALSE FALSE FALSE FALSE ENDIF SET_PLAYER_CONTROL player1 ON SET_GROUP_FOLLOW_STATUS sw7_group TRUE IF NOT IS_CHAR_DEAD sw7_banger1 IF NOT IS_GROUP_MEMBER sw7_banger1 sw7_group SET_GROUP_MEMBER sw7_group sw7_banger1 SET_CHAR_NEVER_LEAVES_GROUP sw7_banger1 TRUE ENDIF ENDIF IF NOT IS_CHAR_DEAD sw7_banger2 IF NOT IS_GROUP_MEMBER sw7_banger2 sw7_group SET_GROUP_MEMBER sw7_group sw7_banger2 SET_CHAR_NEVER_LEAVES_GROUP sw7_banger2 TRUE ENDIF ENDIF IF NOT IS_CHAR_DEAD sw7_kanechauffeur SET_CHAR_DECISION_MAKER sw7_kanechauffeur sw7_emptydm CLEAR_CHAR_TASKS sw7_kanechauffeur ENDIF TASK_STAY_IN_SAME_PLACE sw7_kanechauffeur TRUE sw7_missionprogress = 15 IF NOT IS_CHAR_DEAD sw7_kane ADD_BLIP_FOR_CHAR sw7_kane sw7_kaneB CHANGE_BLIP_COLOUR sw7_kaneB RED ENDIF IF NOT IS_CAR_DEAD sw7_sweethearse DELETE_CAR sw7_sweethearse ENDIF ENDIF //sw7_missionprogress = 10 condition check IF sw7_missionprogress = 15 SET_POLICE_IGNORE_PLAYER player1 ON IF NOT IS_CHAR_DEAD sw7_kanechauffeur IF NOT IS_CHAR_DEAD sweet OPEN_SEQUENCE_TASK sw7_sweetseqA TASK_GO_STRAIGHT_TO_COORD -1 832.3179 -1081.6274 22.9332 PEDMOVE_RUN 10000 TASK_GO_TO_COORD_WHILE_SHOOTING -1 833.9351 -1101.9663 22.8281 PEDMOVE_RUN 100.0 1.0 sw7_kanechauffeur TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 sw7_kanechauffeur CLOSE_SEQUENCE_TASK sw7_sweetseqA PERFORM_SEQUENCE_TASK sweet sw7_sweetseqA CLEAR_SEQUENCE_TASK sw7_sweetseqA ENDIF IF NOT IS_CHAR_DEAD sw7_grove1 CLEAR_CHAR_TASKS sw7_grove1 OPEN_SEQUENCE_TASK sw7_grove1seqA TASK_GO_STRAIGHT_TO_COORD -1 828.6603 -1080.4081 23.0300 PEDMOVE_SPRINT 10000 TASK_GO_TO_COORD_WHILE_SHOOTING -1 832.5559 -1104.0667 22.8281 PEDMOVE_SPRINT 100.0 1.0 sw7_kanechauffeur TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 sw7_kanechauffeur CLOSE_SEQUENCE_TASK sw7_grove1seqA PERFORM_SEQUENCE_TASK sw7_grove1 sw7_grove1seqA CLEAR_SEQUENCE_TASK sw7_grove1seqA ENDIF IF NOT IS_CHAR_DEAD sw7_grove2 CLEAR_CHAR_TASKS sw7_grove2 OPEN_SEQUENCE_TASK sw7_grove2seqA TASK_GO_STRAIGHT_TO_COORD -1 832.2366 -1077.2246 23.1896 PEDMOVE_SPRINT 10000 TASK_GO_TO_COORD_WHILE_SHOOTING -1 835.7187 -1097.3250 22.8784 PEDMOVE_SPRINT 100.0 1.0 sw7_kanechauffeur TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 sw7_kanechauffeur CLOSE_SEQUENCE_TASK sw7_grove2seqA PERFORM_SEQUENCE_TASK sw7_grove2 sw7_grove2seqA CLEAR_SEQUENCE_TASK sw7_grove2seqA ENDIF GOSUB sw7_initial IF NOT IS_CHAR_DEAD sw7_kanechauffeur IF NOT IS_CHAR_DEAD sweet OPEN_SEQUENCE_TASK sw7_chauffattackseq TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 sweet CLOSE_SEQUENCE_TASK sw7_chauffattackseq PERFORM_SEQUENCE_TASK sw7_kanechauffeur sw7_chauffattackseq CLEAR_SEQUENCE_TASK sw7_chauffattackseq ENDIF ENDIF ENDIF IF sw7_chauffeurkilltask = 1 IF NOT IS_CHAR_DEAD sw7_greetinface DELETE_CHAR sw7_greetinface ENDIF IF NOT IS_CHAR_DEAD sw7_preach DELETE_CHAR sw7_preach ENDIF ENDIF TIMERB = 0 sw7_begingangfight = 1 sw7_convo_counter = 1 GENERATE_RANDOM_INT_IN_RANGE 0 3 sw7_random CLEAR_MISSION_AUDIO 3 ENDIF //sw7_missionprogress = 15 condition check IF sw7_begingangfight = 1 IF sw7_convo_counter > 0 IF sw7_audio_underway = 0 SWITCH sw7_convo_counter CASE 1 IF sw7_random = 0 sw7_counter = 43 ENDIF IF sw7_random = 1 sw7_counter = 44 ENDIF IF sw7_random = 1 sw7_counter = 45 ENDIF sw7_convo_counter = 2 BREAK CASE 2 PRINT_NOW TWAR636 8000 1 sw7_counter = 0 sw7_convo_counter = 0 // finish convo BREAK ENDSWITCH // sw7_audio_underway = 1 ENDIF ENDIF IF TIMERB > 6000 IF sw7_shotanim = 0 IF NOT IS_CHAR_DEAD sw7_kanechauffeur CLEAR_CHAR_TASKS sw7_kanechauffeur TASK_PLAY_ANIM sw7_kanechauffeur KO_shot_face PED 8.0 FALSE FALSE FALSE TRUE -1 SET_CHAR_HEALTH sw7_kanechauffeur 0 sw7_shotanim = 1 CLEAR_PRINTS ENDIF ENDIF ENDIF IF TIMERB > 7000 IF NOT IS_CHAR_DEAD sw7_kanechauffeur CLEAR_CHAR_TASKS sw7_kanechauffeur TASK_DIE sw7_kanechauffeur ENDIF IF sw7_checkkane = 0 IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS sweet FLUSH_ROUTE EXTEND_ROUTE 872.7859 -1100.7915 22.8437 sweet_onroute = 1 TASK_FOLLOW_POINT_ROUTE sweet PEDMOVE_RUN FOLLOW_ROUTE_ONCE ENDIF ENDIF IF NOT IS_CHAR_DEAD sw7_grove1 CLEAR_CHAR_TASKS sw7_grove1 FLUSH_ROUTE EXTEND_ROUTE 882.4450 -1102.0406 22.8281 sw7_grove1onroute = 1 TASK_FOLLOW_POINT_ROUTE sw7_grove1 PEDMOVE_SPRINT FOLLOW_ROUTE_ONCE ENDIF IF NOT IS_CHAR_DEAD sw7_grove2 CLEAR_CHAR_TASKS sw7_grove2 FLUSH_ROUTE EXTEND_ROUTE 888.5107 -1099.9352 21.8918 sw7_grove2onroute = 1 TASK_FOLLOW_POINT_ROUTE sw7_grove2 PEDMOVE_SPRINT FOLLOW_ROUTE_ONCE ENDIF sw7_begingangfight = 2 CLEAR_PRINTS ENDIF ENDIF //was 1.5 1.5 3.0 for all guys //A class fix, Sweet got stuck IF sw7_checkkane = 0 IF sweet_onroute = 1 IF NOT IS_CHAR_DEAD sweet IF LOCATE_CHAR_ANY_MEANS_3D sweet 872.7859 -1100.7915 22.8437 3.0 3.0 3.0 FALSE CLEAR_CHAR_TASKS sweet TASK_GO_STRAIGHT_TO_COORD sweet 875.9534 -1079.5154 23.3203 PEDMOVE_RUN 10000 sweet_onroute = 2 ENDIF ENDIF ENDIF ENDIF IF sw7_grove1onroute = 1 IF NOT IS_CHAR_DEAD sw7_grove1 IF LOCATE_CHAR_ANY_MEANS_3D sw7_grove1 882.4450 -1102.0406 22.8281 5.0 5.0 3.0 FALSE CLEAR_CHAR_TASKS sw7_grove1 TASK_GO_STRAIGHT_TO_COORD sw7_grove1 881.3811 -1088.8960 23.1974 PEDMOVE_RUN 10000 sw7_grove1onroute = 2 ENDIF ENDIF ENDIF IF sw7_grove2onroute = 1 IF NOT IS_CHAR_DEAD sw7_grove2 IF LOCATE_CHAR_ANY_MEANS_3D sw7_grove2 888.5107 -1099.9352 21.8918 5.0 5.0 3.0 FALSE CLEAR_CHAR_TASKS sw7_grove2 TASK_GO_STRAIGHT_TO_COORD sw7_grove2 893.6727 -1077.2947 23.2759 PEDMOVE_SPRINT 10000 sw7_grove2onroute = 2 ENDIF ENDIF ENDIF IF sw7_begingangfight > 0 // was = 2 IF sw7_checkkane = 0 IF sw7_sweetfight = 0 IF NOT IS_CHAR_DEAD sweet //SET_CHAR_DECISION_MAKER sweet sw7_toughdm IF LOCATE_CHAR_ANY_MEANS_3D sweet 875.9534 -1079.5154 23.3203 2.0 2.0 3.0 FALSE CLEAR_CHAR_TASKS sweet IF NOT IS_CHAR_DEAD sw7_protector1 OPEN_SEQUENCE_TASK sw7_sbeginseq TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_KILL_CHAR_ON_FOOT -1 sw7_protector1 CLOSE_SEQUENCE_TASK sw7_sbeginseq PERFORM_SEQUENCE_TASK sweet sw7_sbeginseq CLEAR_SEQUENCE_TASK sw7_sbeginseq ENDIF sw7_sweetfight = 1 ENDIF ENDIF ENDIF ENDIF IF sw7_grove1fight = 0 IF NOT IS_CHAR_DEAD sw7_grove1 //SET_CHAR_DECISION_MAKER sw7_grove1 sw7_toughdm IF LOCATE_CHAR_ANY_MEANS_3D sw7_grove1 881.3811 -1088.8960 23.1974 5.0 5.0 3.0 FALSE CLEAR_CHAR_TASKS sw7_grove1 IF NOT IS_CHAR_DEAD sw7_protector2 OPEN_SEQUENCE_TASK sw7_g1beginseq TASK_STAY_IN_SAME_PLACE -1 FALSE //TASK_CLIMB sw7_grove1 TRUE //TASK_JUMP sw7_grove1 TRUE TASK_KILL_CHAR_ON_FOOT -1 sw7_protector2 //SET_FOLLOW_NODE_THRESHOLD_DISTANCE sw7_grove1 2.0 CLOSE_SEQUENCE_TASK sw7_g1beginseq PERFORM_SEQUENCE_TASK sw7_grove1 sw7_g1beginseq CLEAR_SEQUENCE_TASK sw7_g1beginseq ENDIF sw7_grove1fight = 1 ENDIF ENDIF ENDIF IF sw7_grove2fight = 0 IF NOT IS_CHAR_DEAD sw7_grove2 IF LOCATE_CHAR_ANY_MEANS_3D sw7_grove2 893.6727 -1077.2947 23.2759 5.0 5.0 3.0 FALSE CLEAR_CHAR_TASKS sw7_grove2 IF NOT IS_CHAR_DEAD sw7_protector3 OPEN_SEQUENCE_TASK sw7_g2beginseq TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_KILL_CHAR_ON_FOOT -1 sw7_protector3 CLOSE_SEQUENCE_TASK sw7_g2beginseq PERFORM_SEQUENCE_TASK sw7_grove2 sw7_g2beginseq CLEAR_SEQUENCE_TASK sw7_g2beginseq ENDIF sw7_grove2fight = 1 ENDIF ENDIF ENDIF ENDIF IF sw7_grove1fight = 1 IF IS_CHAR_DEAD sw7_protector2 IF NOT IS_CHAR_DEAD sw7_protector4 IF NOT IS_CHAR_DEAD sw7_grove1 CLEAR_CHAR_TASKS sw7_grove1 TASK_KILL_CHAR_ON_FOOT sw7_grove1 sw7_protector4 ENDIF ENDIF sw7_grove1fight = 2 ENDIF ENDIF IF sw7_grove2fight = 1 IF IS_CHAR_DEAD sw7_protector3 IF NOT IS_CHAR_DEAD sw7_protector5 IF NOT IS_CHAR_DEAD sw7_grove2 CLEAR_CHAR_TASKS sw7_grove2 TASK_KILL_CHAR_ON_FOOT sw7_grove2 sw7_protector5 ENDIF ENDIF ENDIF sw7_grove2fight = 2 ENDIF IF sw7_checkkane = 0 IF sw7_pursuitunderway = 0 IF sw7_sweetfight = 1 IF IS_CHAR_DEAD sw7_protector1 IF NOT IS_CHAR_DEAD sw7_protector6 IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS sweet TASK_KILL_CHAR_ON_FOOT sweet sw7_protector6 ENDIF ENDIF sw7_sweetfight = 2 ENDIF ENDIF ENDIF ENDIF IF sw7_grove1fight = 2 IF IS_CHAR_DEAD sw7_protector4 IF NOT IS_CHAR_DEAD sw7_grove1 IF NOT IS_CHAR_DEAD sw7_kane CLEAR_CHAR_TASKS sw7_grove1 TASK_KILL_CHAR_ON_FOOT sw7_grove1 sw7_kane ENDIF sw7_grove1fight = 3 ENDIF ENDIF ENDIF IF sw7_grove2fight = 2 IF IS_CHAR_DEAD sw7_protector5 IF NOT IS_CHAR_DEAD sw7_grove2 IF NOT IS_CHAR_DEAD sw7_kane CLEAR_CHAR_TASKS sw7_grove2 TASK_KILL_CHAR_ON_FOOT sw7_grove2 sw7_kane ENDIF sw7_grove2fight = 3 ENDIF ENDIF ENDIF IF sw7_checkkane = 0 IF sw7_pursuitunderway = 0 IF sw7_sweetfight = 2 IF IS_CHAR_DEAD sw7_protector6 IF NOT IS_CHAR_DEAD sweet IF NOT IS_CHAR_DEAD sw7_kane CLEAR_CHAR_TASKS sweet TASK_KILL_CHAR_ON_FOOT sweet sw7_kane ENDIF //WRITE_DEBUG Number6_is_dead sw7_sweetfight = 3 ENDIF ENDIF ENDIF ENDIF ENDIF IF sw7_kanemove1 = 1 IF NOT IS_CHAR_DEAD sw7_kane IF LOCATE_CHAR_ANY_MEANS_3D sw7_kane sw7_fleeKX[sw7_fleeindex] sw7_fleeKY[sw7_fleeindex] sw7_fleeKZ[sw7_fleeindex] 5.0 5.0 5.0 FALSE SET_CHAR_ALLOWED_TO_DUCK sw7_kane TRUE CLEAR_CHAR_TASKS sw7_kane TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING sw7_kane scplayer DUCK_RANDOMLY 3000 50 sw7_kanemove1 = 2 ENDIF IF sw7_goonmove1 = 1 IF LOCATE_CHAR_ANY_MEANS_3D sw7_kane sw7_fleeKX[sw7_fleeindex] sw7_fleeKY[sw7_fleeindex] sw7_fleeKZ[sw7_fleeindex] 20.0 20.0 5.0 FALSE GOSUB cycle_goons sw7_goonmove1 = 2 ENDIF ENDIF ENDIF ENDIF IF sw7_kanemove1 = 3 IF NOT IS_CHAR_DEAD sw7_kane IF LOCATE_CHAR_ANY_MEANS_3D sw7_kane sw7_fleeKX[sw7_fleeindex] sw7_fleeKY[sw7_fleeindex] sw7_fleeKZ[sw7_fleeindex] 5.0 5.0 5.0 FALSE CLEAR_CHAR_TASKS sw7_kane TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING sw7_kane scplayer DUCK_RANDOMLY 3000 50 IF NOT IS_CHAR_DEAD sw7_protector5 CLEAR_CHAR_TASKS sw7_protector5 TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING sw7_protector5 scplayer DUCK_RANDOMLY 3000 50 ENDIF sw7_kanemove1 = 4 ENDIF IF sw7_goonmove1 = 2 IF LOCATE_CHAR_ANY_MEANS_3D sw7_kane sw7_fleeKX[sw7_fleeindex] sw7_fleeKY[sw7_fleeindex] sw7_fleeKZ[sw7_fleeindex] 20.0 20.0 5.0 FALSE GOSUB cycle_goons sw7_goonmove1 = 3 ENDIF ENDIF ENDIF ENDIF IF sw7_kanemove1 = 5 IF NOT IS_CHAR_DEAD sw7_kane IF LOCATE_CHAR_ANY_MEANS_3D sw7_kane sw7_fleeKX[sw7_fleeindex] sw7_fleeKY[sw7_fleeindex] sw7_fleeKZ[sw7_fleeindex] 5.0 5.0 5.0 FALSE CLEAR_CHAR_TASKS sw7_kane //was 2 above TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING sw7_kane scplayer DUCK_RANDOMLY 3000 50 sw7_kanemove1 = 6 ENDIF ENDIF ENDIF IF sw7_kanemove1 = 7 IF NOT IS_CHAR_DEAD sw7_kane IF LOCATE_CHAR_ANY_MEANS_3D sw7_kane sw7_fleeKX[sw7_fleeindex] sw7_fleeKY[sw7_fleeindex] sw7_fleeKZ[sw7_fleeindex] 5.0 5.0 5.0 FALSE CLEAR_CHAR_TASKS sw7_kane TASK_STAY_IN_SAME_PLACE sw7_kane FALSE //WRITE_DEBUG_WITH_INT kanemove sw7_fleeindex TASK_KILL_CHAR_ON_FOOT sw7_kane scplayer //GOSUB cycle_kane //put in pop-up guys here! sw7_kanemove1 = 8 //begin car action!!!! //sw7_missionprogress = 50 ENDIF ENDIF ENDIF IF sw7_missionprogress = 20 IF NOT sw7_missionprogress = 25 IF NOT IS_CHAR_DEAD sw7_kane IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sw7_kane 20.0 20.0 FALSE sw7_missionprogress = 25 sw7_fleeindex++ //WRITE_DEBUG_WITH_INT fleeindex sw7_fleeindex GOSUB cycle_kane sw7_kanemove1 = 1 sw7_goonmove1 = 1 TIMERA = 0 ENDIF ENDIF ENDIF IF NOT sw7_missionprogress = 25 IF NOT IS_CHAR_DEAD sw7_kane IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR sw7_kane scplayer sw7_missionprogress = 25 sw7_fleeindex++ //WRITE_DEBUG_WITH_INT fleeindex sw7_fleeindex //SET_CHAR_DECISION_MAKER sw7_kane sw7_emptydm //TASK_GO_STRAIGHT_TO_COORD sw7_kane sw7_fleeKX[sw7_fleeindex] sw7_fleeKY[sw7_fleeindex] sw7_fleeKZ[sw7_fleeindex] PEDMOVE_RUN - GOSUB cycle_kane sw7_kanemove1 = 1 sw7_goonmove1 = 1 ENDIF ENDIF ENDIF IF NOT sw7_missionprogress = 25 IF IS_CHAR_DEAD sw7_protector1 sw7_protector1dead = 1 sw7_missionprogress = 25 sw7_fleeindex++ GOSUB cycle_kane sw7_kanemove1 = 1 sw7_goonmove1 = 1 ENDIF ENDIF IF NOT sw7_missionprogress = 25 IF IS_CHAR_DEAD sw7_protector2 sw7_protector2dead = 1 sw7_missionprogress = 25 sw7_fleeindex++ GOSUB cycle_kane sw7_kanemove1 = 1 sw7_goonmove1 = 1 ENDIF ENDIF IF NOT sw7_missionprogress = 25 IF IS_CHAR_DEAD sw7_protector3 sw7_protector3dead = 1 sw7_missionprogress = 25 sw7_fleeindex++ GOSUB cycle_kane sw7_kanemove1 = 1 sw7_goonmove1 = 1 ENDIF ENDIF IF NOT sw7_missionprogress = 25 IF IS_CHAR_DEAD sw7_protector4 //sw7_protector3dead = 1 sw7_missionprogress = 25 sw7_fleeindex++ GOSUB cycle_kane sw7_kanemove1 = 1 sw7_goonmove1 = 1 ENDIF ENDIF ENDIF // sw7_missionprogress condition check IF sw7_missionprogress = 25 IF sw7_kanemove1 = 2 IF NOT sw7_missionprogress = 30 IF NOT IS_CHAR_DEAD sw7_kane IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sw7_kane 20.0 20.0 FALSE sw7_missionprogress = 30 sw7_fleeindex++ //WRITE_DEBUG_WITH_INT fleeindex sw7_fleeindex GOSUB cycle_kane sw7_kanemove1 = 3 sw7_goonmove1 = 2 ENDIF ENDIF ENDIF IF NOT sw7_missionprogress = 30 IF NOT IS_CHAR_DEAD sw7_kane IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR sw7_kane scplayer sw7_missionprogress = 30 sw7_fleeindex++ // WRITE_DEBUG_WITH_INT fleeindex sw7_fleeindex //SET_CHAR_DECISION_MAKER sw7_kane sw7_emptydm //TASK_GO_STRAIGHT_TO_COORD sw7_kane sw7_fleeKX[sw7_fleeindex] sw7_fleeKY[sw7_fleeindex] sw7_fleeKZ[sw7_fleeindex] PEDMOVE_RUN -2 GOSUB cycle_kane sw7_kanemove1 = 3 sw7_goonmove1 = 2 ENDIF ENDIF ENDIF /* IF NOT sw7_missionprogress = 30 IF IS_CHAR_DEAD sw7_protector1 sw7_protector1dead = 1 sw7_missionprogress = 30 sw7_fleeindex++ GOSUB cycle_kanegoons sw7_kanemove1 = 1 ENDIF ENDIF IF NOT sw7_missionprogress = 30 IF IS_CHAR_DEAD sw7_protector2 sw7_protector2dead = 1 sw7_missionprogress = 30 sw7_fleeindex++ GOSUB cycle_kanegoons sw7_kanemove1 = 1 ENDIF ENDIF IF NOT sw7_missionprogress = 30 IF IS_CHAR_DEAD sw7_protector3 sw7_protector3dead = 1 sw7_missionprogress = 30 sw7_fleeindex++ GOSUB cycle_kanegoons sw7_kanemove1 = 1 ENDIF ENDIF */ ENDIF // sw7_kanemove = 2 ENDIF // sw7_missionprogress = 25 condition check IF sw7_missionprogress = 30 IF sw7_kanemove1 = 4 IF NOT sw7_missionprogress = 35 IF NOT IS_CHAR_DEAD sw7_kane IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sw7_kane 20.0 20.0 FALSE sw7_missionprogress = 35 sw7_fleeindex++ //WRITE_DEBUG_WITH_INT fleeindex sw7_fleeindex // SET_FOLLOW_NODE_THRESHOLD_DISTANCE sw7_kane 150.0 GOSUB cycle_kane sw7_kanemove1 = 5 ENDIF ENDIF ENDIF IF NOT sw7_missionprogress = 35 IF NOT IS_CHAR_DEAD sw7_kane IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR sw7_kane scplayer sw7_missionprogress = 35 sw7_fleeindex++ //WRITE_DEBUG_WITH_INT fleeindex sw7_fleeindex //SET_CHAR_DECISION_MAKER sw7_kane sw7_emptydm //TASK_GO_STRAIGHT_TO_COORD sw7_kane sw7_fleeKX[sw7_fleeindex] sw7_fleeKY[sw7_fleeindex] sw7_fleeKZ[sw7_fleeindex] PEDMOVE_RUN -2 //SET_FOLLOW_NODE_THRESHOLD_DISTANCE sw7_kane 150.0 GOSUB cycle_kane sw7_kanemove1 = 5 ENDIF ENDIF ENDIF ENDIF ENDIF IF sw7_missionprogress = 35 IF sw7_kanemove1 = 6 IF NOT sw7_missionprogress = 40 IF NOT IS_CHAR_DEAD sw7_kane IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sw7_kane 10.0 10.0 FALSE sw7_missionprogress = 40 sw7_fleeindex++ // WRITE_DEBUG_WITH_INT fleeindex sw7_fleeindex //SET_FOLLOW_NODE_THRESHOLD_DISTANCE sw7_kane 150.0 GOSUB cycle_kane sw7_kanemove1 = 7 sw7_missionprogress = 50 ENDIF ENDIF ENDIF IF NOT sw7_missionprogress = 40 IF NOT IS_CHAR_DEAD sw7_kane IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR sw7_kane scplayer sw7_missionprogress = 40 sw7_fleeindex++ // WRITE_DEBUG_WITH_INT fleeindex sw7_fleeindex //SET_CHAR_DECISION_MAKER sw7_kane sw7_emptydm //TASK_GO_STRAIGHT_TO_COORD sw7_kane sw7_fleeKX[sw7_fleeindex] sw7_fleeKY[sw7_fleeindex] sw7_fleeKZ[sw7_fleeindex] PEDMOVE_RUN -2 //SET_FOLLOW_NODE_THRESHOLD_DISTANCE sw7_kane 150.0 GOSUB cycle_kane sw7_kanemove1 = 7 sw7_missionprogress = 50 ENDIF ENDIF ENDIF ENDIF ENDIF IF sw7_missionprogress = 50 CREATE_CAR greenwoo 960.0995 -1032.0989 29.0858 sw7_escapehearse SET_CAR_HEADING sw7_escapehearse 180.4729 CHANGE_CAR_COLOUR sw7_escapehearse 0 2 SET_CAN_BURST_CAR_TYRES sw7_escapehearse FALSE CREATE_CHAR_INSIDE_CAR sw7_escapehearse PEDTYPE_CIVMALE BALLAS2 sw7_escapechauffeur SET_CHAR_SUFFERS_CRITICAL_HITS sw7_escapechauffeur FALSE SET_CHAR_DECISION_MAKER sw7_escapechauffeur sw7_emptydm CREATE_CHAR_AS_PASSENGER sw7_escapehearse PEDTYPE_MISSION1 BALLAS2 1 sw7_reinforce1 SET_CHAR_DECISION_MAKER sw7_reinforce1 sw7_emptydm GIVE_WEAPON_TO_CHAR sw7_reinforce1 WEAPONTYPE_SHOTGUN 2000 SET_CHAR_SHOOT_RATE sw7_reinforce1 15 // SET_CHAR_ACCURACY sw7_protector1 70.0 CREATE_CHAR_AS_PASSENGER sw7_escapehearse PEDTYPE_MISSION1 BALLAS1 2 sw7_reinforce2 SET_CHAR_DECISION_MAKER sw7_reinforce2 sw7_emptydm GIVE_WEAPON_TO_CHAR sw7_reinforce2 WEAPONTYPE_MICRO_UZI 2000 SET_CHAR_SHOOT_RATE sw7_reinforce2 15 MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS2 LOCK_CAR_DOORS sw7_escapehearse CARLOCK_LOCKOUT_PLAYER_ONLY /* CREATE_CAR admiral 955.9408 -1086.9865 23.5250 sw7_pursuitcar SET_CAR_HEADING sw7_pursuitcar 177.9 LOCK_CAR_DOORS sw7_pursuitcar CARLOCK_LOCKED */ //SET_CAR_PROOFS sw7_escapehearse TRUE TRUE TRUE TRUE TRUE IF NOT IS_CHAR_DEAD sw7_escapechauffeur IF NOT IS_CAR_DEAD sw7_escapehearse TASK_CAR_DRIVE_TO_COORD sw7_escapechauffeur sw7_escapehearse 955.9623 -1100.1404 22.7516 10.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS sw7_missionprogress = 55 ENDIF ENDIF ENDIF IF sw7_escapeaborted = 0 IF sw7_missionprogress > 50 AND sw7_missionprogress < 999 IF IS_CHAR_DEAD sw7_escapechauffeur IF NOT IS_CHAR_DEAD sw7_kane CLEAR_CHAR_TASKS sw7_kane TASK_KILL_CHAR_ON_FOOT sw7_kane scplayer ENDIF sw7_escapeaborted = 1 ENDIF ENDIF ENDIF /* IF sw7_finalcut = 1 // cut removed SET_FIXED_CAMERA_POSITION 943.2144 -1116.2319 34.7449 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 942.3730 -1115.8092 34.4082 JUMP_CUT sw7_finalcut = 2 ENDIF */ IF sw7_missionprogress = 55 IF NOT IS_CHAR_DEAD sw7_escapechauffeur IF NOT IS_CAR_DEAD sw7_escapehearse IF LOCATE_CAR_3D sw7_escapehearse 955.9623 -1100.1404 22.7516 3.0 3.0 3.0 FALSE IF NOT IS_CHAR_DEAD sw7_escapechauffeur IF NOT IS_CAR_DEAD sw7_escapehearse TASK_CAR_DRIVE_TO_COORD sw7_escapechauffeur sw7_escapehearse 929.9791 -1103.6449 22.8506 10.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH sw7_missionprogress = 60 IF NOT IS_CHAR_DEAD sw7_kane // CLEAR_CHAR_TASKS sw7_kane ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF sw7_missionprogress = 60 IF NOT IS_CAR_DEAD sw7_escapehearse IF LOCATE_CAR_3D sw7_escapehearse 929.9791 -1103.6449 22.8506 5.0 5.0 3.0 FALSE IF IS_CAR_STOPPED sw7_escapehearse IF NOT IS_CHAR_DEAD sw7_kane CLEAR_CHAR_TASKS sw7_kane //WAIT 500 //dodgy area!!!!!!!!!!!!!!!!!!!!! IF NOT IS_CHAR_DEAD sw7_kane IF NOT IS_CAR_DEAD sw7_escapehearse sw7_convo_counter = 1 GENERATE_RANDOM_INT_IN_RANGE 0 3 sw7_random TASK_ENTER_CAR_AS_PASSENGER sw7_kane sw7_escapehearse -2 0 sw7_missionprogress = 65 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD sw7_reinforce1 CLEAR_CHAR_TASKS sw7_reinforce1 OPEN_SEQUENCE_TASK sw7_reinforce1seq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 916.3773 -1107.9373 23.1694 PEDMOVE_RUN 10000 TASK_KILL_CHAR_ON_FOOT -1 scplayer //TASK_GO_STRAIGHT_TO_COORD -1 833.1347 -1095.1868 22.8281 PEDMOVE_WALK 10000 CLOSE_SEQUENCE_TASK sw7_reinforce1seq PERFORM_SEQUENCE_TASK sw7_reinforce1 sw7_reinforce1seq CLEAR_SEQUENCE_TASK sw7_reinforce1seq sw7_missionprogress = 65 ENDIF IF NOT IS_CHAR_DEAD sw7_reinforce2 CLEAR_CHAR_TASKS sw7_reinforce2 OPEN_SEQUENCE_TASK sw7_reinforce2seq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 918.4471 -1094.8062 23.4897 PEDMOVE_RUN 10000 TASK_KILL_CHAR_ON_FOOT -1 scplayer //TASK_GO_STRAIGHT_TO_COORD -1 833.1347 -1095.1868 22.8281 PEDMOVE_WALK 10000 CLOSE_SEQUENCE_TASK sw7_reinforce2seq PERFORM_SEQUENCE_TASK sw7_reinforce2 sw7_reinforce2seq CLEAR_SEQUENCE_TASK sw7_reinforce2seq sw7_missionprogress = 65 ENDIF ENDIF ENDIF ENDIF ENDIF // sw7_missionprogress = 60 condition check IF sw7_missionprogress = 65 // IF NOT IS_CHAR_DEAD sw7_kane // Added 07.10.04 IF sw7_convo_counter > 0 IF sw7_audio_underway = 0 SWITCH sw7_convo_counter CASE 1 IF sw7_random = 0 sw7_counter = 46 ENDIF IF sw7_random = 1 sw7_counter = 47 ENDIF IF sw7_random = 2 sw7_counter = 48 ENDIF sw7_convo_counter = 2 BREAK CASE 2 sw7_counter = 0 PRINT_NOW TWAR626 6000 1 sw7_convo_counter = 0 // finish convo BREAK ENDSWITCH // sw7_audio_underway = 1 ENDIF ENDIF //ENDIF IF IS_CHAR_DEAD sw7_kane IF NOT IS_CAR_DEAD sw7_escapehearse IF NOT IS_CHAR_DEAD sw7_escapechauffeur CLEAR_CHAR_TASKS sw7_escapechauffeur OPEN_SEQUENCE_TASK sw7_chauffeur3seq TASK_LEAVE_ANY_CAR -1 //TASK_GO_STRAIGHT_TO_COORD -1 918.4471 -1094.8062 23.4897 PEDMOVE_RUN 10000 TASK_KILL_CHAR_ON_FOOT -1 scplayer //TASK_GO_STRAIGHT_TO_COORD -1 833.1347 -1095.1868 22.8281 PEDMOVE_WALK 10000 CLOSE_SEQUENCE_TASK sw7_chauffeur3seq PERFORM_SEQUENCE_TASK sw7_escapechauffeur sw7_chauffeur3seq CLEAR_SEQUENCE_TASK sw7_chauffeur3seq sw7_missionprogress = 90 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD sw7_escapehearse IF NOT IS_CHAR_DEAD sw7_kane IF NOT IS_CHAR_DEAD sw7_escapechauffeur IF IS_CHAR_SITTING_IN_CAR sw7_kane sw7_escapehearse REMOVE_BLIP sw7_kaneB SET_CAR_TEMP_ACTION sw7_escapehearse TEMPACT_REVERSE 6000 //was 5000 LOCK_CAR_DOORS sw7_escapehearse CARLOCK_LOCKOUT_PLAYER_ONLY SET_CHAR_CANT_BE_DRAGGED_OUT sw7_kane TRUE SET_CHAR_CANT_BE_DRAGGED_OUT sw7_kane TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED sw7_kane TRUE //DELETE_CHAR sw7_kane sw7_missionprogress = 70 TIMERA = 0 CLEAR_PRINTS sw7_convo_counter = 11 // only want to do this once! GENERATE_RANDOM_INT_IN_RANGE 0 4 sw7_random IF NOT IS_CAR_DEAD sw7_pursuitcar LOCK_CAR_DOORS sw7_pursuitcar CARLOCK_UNLOCKED LOCK_CAR_DOORS sw7_pursuitcar CARLOCK_LOCKOUT_PLAYER_ONLY ENDIF IF NOT IS_CHAR_DEAD sweet ADD_BLIP_FOR_CHAR sweet sw7_sweetB SET_BLIP_AS_FRIENDLY sw7_sweetB TRUE //write_debug late CLEAR_CHAR_TASKS sweet OPEN_SEQUENCE_TASK sw7_pursuitseq TASK_GO_STRAIGHT_TO_COORD -1 930.8062 -1114.4586 23.0940 PEDMOVE_RUN 10000 TASK_ENTER_CAR_AS_PASSENGER -1 sw7_pursuitcar 30000 -1 CLOSE_SEQUENCE_TASK sw7_pursuitseq PERFORM_SEQUENCE_TASK sweet sw7_pursuitseq CLEAR_SEQUENCE_TASK sw7_pursuitseq sw7_pursuitunderway = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF sw7_missionprogress = 70 IF sw7_convo_counter > 10 IF sw7_audio_underway = 0 SWITCH sw7_convo_counter CASE 11 IF sw7_random = 0 sw7_counter = 49 ENDIF IF sw7_random = 1 sw7_counter = 50 ENDIF IF sw7_random = 2 sw7_counter = 51 ENDIF IF sw7_random = 3 sw7_counter = 52 ENDIF sw7_convo_counter = 12 BREAK CASE 12 sw7_counter = 0 PRINT_NOW TWAR629 6000 1 sw7_convo_counter = 0 // finish convo BREAK ENDSWITCH // sw7_audio_underway = 1 ENDIF ENDIF IF TIMERA > 5000 IF NOT IS_CAR_DEAD sw7_escapehearse IF NOT IS_CHAR_DEAD sw7_escapechauffeur TASK_CAR_DRIVE_TO_COORD sw7_escapechauffeur sw7_escapehearse 1952.4320 -1136.2377 24.6210 20.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS CLEAR_PRINTS sw7_missionprogress = 75 ENDIF ENDIF ENDIF ENDIF IF sw7_missionprogress = 75 IF sw7_convo_counter > 10 IF sw7_audio_underway = 0 SWITCH sw7_convo_counter CASE 11 IF sw7_random = 0 sw7_counter = 49 ENDIF IF sw7_random = 1 sw7_counter = 50 ENDIF IF sw7_random = 2 sw7_counter = 51 ENDIF IF sw7_random = 3 sw7_counter = 52 ENDIF sw7_convo_counter = 12 BREAK CASE 12 sw7_counter = 0 CLEAR_PRINTS PRINT_NOW TWAR629 6000 1 sw7_convo_counter = 0 // finish convo BREAK ENDSWITCH // sw7_audio_underway = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD sw7_kane IF LOCATE_CHAR_ANY_MEANS_3D sw7_kane 1952.4320 -1136.2377 24.6210 5.0 5.0 5.0 FALSE sw7_missionprogress = 80 IF NOT IS_CAR_DEAD sw7_escapehearse IF NOT IS_CHAR_DEAD sw7_escapechauffeur CLEAR_CHAR_TASKS sw7_escapechauffeur TASK_CAR_DRIVE_WANDER sw7_escapechauffeur sw7_escapehearse 30.0 DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD sw7_escapehearse IF NOT IS_CHAR_IN_CAR sw7_kane sw7_escapehearse IF sw7_finalkaneexit = 0 CLEAR_CHAR_TASKS sw7_kane TASK_KILL_CHAR_ON_FOOT sw7_kane scplayer sw7_finalkaneexit = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD sw7_escapechauffeur IF NOT IS_CHAR_IN_CAR sw7_escapechauffeur sw7_escapehearse IF sw7_finalchauffexit = 0 CLEAR_CHAR_TASKS sw7_escapechauffeur TASK_KILL_CHAR_ON_FOOT sw7_escapechauffeur scplayer sw7_finalchauffexit = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF sw7_missionprogress = 80 IF NOT IS_CAR_DEAD sw7_escapehearse IF NOT IS_CHAR_DEAD sw7_kane IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer sw7_kane 50.0 50.0 50.0 FALSE IF NOT IS_CAR_ON_SCREEN sw7_escapehearse GENERATE_RANDOM_INT_IN_RANGE 0 3 sw7_random sw7_convo_counter = 61 sw7_missionprogress = 999 ENDIF ENDIF IF NOT IS_CAR_DEAD sw7_escapehearse IF NOT IS_CHAR_IN_CAR sw7_kane sw7_escapehearse IF sw7_finalkaneexit = 0 CLEAR_CHAR_TASKS sw7_kane TASK_KILL_CHAR_ON_FOOT sw7_kane scplayer sw7_finalkaneexit = 1 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD sw7_escapechauffeur IF NOT IS_CHAR_IN_CAR sw7_escapechauffeur sw7_escapehearse IF sw7_finalchauffexit = 0 CLEAR_CHAR_TASKS sw7_escapechauffeur TASK_KILL_CHAR_ON_FOOT sw7_escapechauffeur scplayer sw7_finalchauffexit = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF sw7_checkkane = 1 GOSUB sw7_mopdown /*IF muP1 = 1 IF IS_CHAR_DEAD sw7_protector1 REMOVE_BLIP sw7_protector1B sw7_mopupcount -- muP1 = 2 ENDIF ENDIF IF muP2 = 1 IF IS_CHAR_DEAD sw7_protector2 REMOVE_BLIP sw7_protector2B sw7_mopupcount -- muP2 = 2 ENDIF ENDIF IF muP3 = 1 IF IS_CHAR_DEAD sw7_protector3 REMOVE_BLIP sw7_protector3B sw7_mopupcount -- muP3 = 2 ENDIF ENDIF IF muP4 = 1 IF IS_CHAR_DEAD sw7_protector4 REMOVE_BLIP sw7_protector4B sw7_mopupcount -- muP4 = 2 ENDIF ENDIF IF muP5 = 1 IF IS_CHAR_DEAD sw7_protector5 sw7_mopupcount -- REMOVE_BLIP sw7_protectorB muP5 = 2 ENDIF ENDIF IF muP6 = 1 IF IS_CHAR_DEAD sw7_protector6 REMOVE_BLIP sw7_protector6B sw7_mopupcount -- muP6 = 2 ENDIF ENDIF IF muR1 = 1 IF IS_CHAR_DEAD sw7_reinforce1 REMOVE_BLIP sw7_reinforce1B sw7_mopupcount -- muR1 = 2 ENDIF ENDIF IF muR2 = 1 IF IS_CHAR_DEAD sw7_reinforce2 REMOVE_BLIP sw7_reinforce2B sw7_mopupcount -- muR2 = 2 ENDIF ENDIF */ IF sw7_convo_counter > 0 IF sw7_audio_underway = 0 SWITCH sw7_convo_counter CASE 1 sw7_counter = 67 sw7_convo_counter = 2 BREAK CASE 2 sw7_counter = 68 sw7_convo_counter = 3 BREAK CASE 3 sw7_counter = 0 PRINT_NOW TWAR628 6000 1 sw7_convo_counter = 0 // finish convo BREAK ENDSWITCH // sw7_audio_underway = 1 ENDIF ENDIF IF sw7_mopupcount = 0 IF NOT IS_CHAR_DEAD sweet IF NOT IS_CAR_DEAD sw7_pursuitcar ADD_BLIP_FOR_CAR sw7_pursuitcar sw7_pursuitcarb // LOCK_CAR_DOORS sw7_pursuitcar CARLOCK_UNLOCKED SET_BLIP_AS_FRIENDLY sw7_pursuitcarb TRUE CLEAR_PRINTS PRINT_NOW TWAR644 6000 1 IF IS_CHAR_SITTING_IN_CAR sweet sw7_pursuitcar LOCK_CAR_DOORS sw7_pursuitcar CARLOCK_UNLOCKED ENDIF //SET_CAR_HEALTH sw7_pursuitcar 1000 SET_CAR_PROOFS sw7_pursuitcar FALSE FALSE FALSE FALSE FALSE sw7_checkkane = 4 ENDIF ENDIF ENDIF ENDIF IF sw7_pursuitunderway = 1 IF NOT IS_CAR_DEAD sw7_pursuitcar IF NOT IS_CHAR_DEAD sweet IF IS_CHAR_SITTING_IN_CAR sweet sw7_pursuitcar CLEAR_PRINTS sw7_convo_counter = 1 GENERATE_RANDOM_INT_IN_RANGE 0 2 sw7_random LOCK_CAR_DOORS sw7_pursuitcar CARLOCK_UNLOCKED SET_CAR_HEALTH sw7_pursuitcar 1000 sw7_pursuitunderway = 2 ENDIF ENDIF ENDIF ENDIF IF sw7_pursuitunderway = 2 IF sw7_convo_counter > 0 IF sw7_audio_underway = 0 SWITCH sw7_convo_counter CASE 1 IF sw7_random = 0 sw7_counter = 53 ENDIF IF sw7_random = 1 sw7_counter = 54 ENDIF sw7_convo_counter = 2 BREAK CASE 2 sw7_counter = 0 CLEAR_PRINTS PRINT_NOW TWAR640 6000 1 sw7_convo_counter = 0 // finish convo BREAK ENDSWITCH // sw7_audio_underway = 1 ENDIF ENDIF IF NOT IS_CAR_DEAD sw7_pursuitcar IF IS_CHAR_SITTING_IN_CAR scplayer sw7_pursuitcar SET_CAR_PROOFS sw7_pursuitcar FALSE FALSE FALSE FALSE FALSE LOCK_CAR_DOORS sw7_pursuitcar CARLOCK_UNLOCKED REMOVE_BLIP sw7_sweetB IF NOT IS_CHAR_DEAD sw7_kane ADD_BLIP_FOR_CHAR sw7_kane sw7_kaneB CLEAR_PRINTS sw7_convo_counter = 1 GENERATE_RANDOM_INT_IN_RANGE 0 2 sw7_random sw7_blipswap = 0 ENDIF sw7_ptrfullfixflag = 1 sw7_pursuitunderway = 3 sw7_drivebyinprogress = 1 sw7_driveby_counter = 1 ENDIF ENDIF ENDIF IF sw7_pursuitunderway = 3 IF NOT IS_CHAR_DEAD sw7_kane IF NOT IS_CAR_DEAD sw7_pursuitcar IF IS_CHAR_IN_CAR scplayer sw7_pursuitcar IF sw7_convo_counter > 0 IF sw7_audio_underway = 0 SWITCH sw7_convo_counter CASE 1 IF sw7_random = 0 sw7_counter = 55 ENDIF IF sw7_random = 1 sw7_counter = 56 ENDIF sw7_convo_counter = 2 BREAK CASE 2 sw7_counter = 0 PRINT_NOW TWAR641 6000 1 sw7_convo_counter = 0 // finish convo BREAK ENDSWITCH // sw7_audio_underway = 1 ENDIF ENDIF ENDIF IF sw7_blipswap = 0 IF NOT IS_CHAR_IN_CAR scplayer sw7_pursuitcar ADD_BLIP_FOR_CAR sw7_pursuitcar sw7_pursuitcarB SET_BLIP_AS_FRIENDLY sw7_pursuitcarB TRUE REMOVE_BLIP sw7_kaneB CLEAR_PRINTS PRINT_NOW TWAR643 6000 1 sw7_blipswap = 1 ENDIF ENDIF IF sw7_blipswap = 1 IF IS_CHAR_IN_CAR scplayer sw7_pursuitcar REMOVE_BLIP sw7_pursuitcarB IF NOT IS_CHAR_DEAD sw7_kane ADD_BLIP_FOR_CHAR sw7_kane sw7_kaneB PRINT_NOW TWAR641 6000 1 ENDIF sw7_blipswap = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF sw7_drivebyinprogress = 1 IF NOT IS_CHAR_DEAD sweet IF NOT IS_CHAR_DEAD sw7_kane IF LOCATE_CHAR_ANY_MEANS_CHAR_2D sweet sw7_kane 30.0 30.0 FALSE CLEAR_CHAR_TASKS sweet TASK_DRIVE_BY sweet sw7_kane -1 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 90 sw7_drivebyinprogress = 2 sw7_driveby_counter = 1 GENERATE_RANDOM_INT_IN_RANGE 0 4 sw7_random ENDIF ENDIF ENDIF ENDIF IF sw7_drivebyinprogress = 2 IF sw7_driveby_counter > 0 IF sw7_audio_underway = 0 SWITCH sw7_driveby_counter CASE 1 IF sw7_random = 0 sw7_counter = 57 ENDIF IF sw7_random = 1 sw7_counter = 58 ENDIF IF sw7_random = 2 sw7_counter = 59 ENDIF IF sw7_random = 3 sw7_counter = 60 ENDIF sw7_driveby_counter = 2 BREAK CASE 2 sw7_counter = 0 PRINT_NOW TWAR649 6000 1 sw7_driveby_counter = 0 // finish convo BREAK ENDSWITCH // sw7_audio_underway = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD sweet IF NOT IS_CHAR_DEAD sw7_kane IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D sweet sw7_kane 40.0 40.0 FALSE CLEAR_CHAR_TASKS sweet sw7_drivebyinprogress = 1 ENDIF ENDIF ENDIF ENDIF IF sw7_ptrfullfixflag = 1 IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 875.3232 -1071.9413 23.3364 400.0 400.0 100.0 FALSE //write_debug mopping_up GOSUB sw7_ptrfullfix sw7_ptrfullfixflag = 2 ENDIF ENDIF IF sw7_disbandfix = 1 IF timerb > 6000 PRINT_HELP_FOREVER TWAR801 // Get your gang to follow you by tapping ~m~~widget_gang_follow~. sw7_disbandfix = 2 sw7_regroupfix = 1 timerb = 0 ENDIF ENDIF GOTO sweet7_main_mission_loop cycle_kane: IF NOT IS_CHAR_DEAD sw7_kane // SET_FOLLOW_NODE_THRESHOLD_DISTANCE sw7_kane 150.0 //CLEAR_CHAR_TASKS sw7_kane OPEN_SEQUENCE_TASK sw7_kaneseqA //CLEAR_CHAR_TASKS sw7_kane TASK_TOGGLE_PED_THREAT_SCANNER -1 FALSE FALSE FALSE //TASK_FOLLOW_PATH_NODES_TO_COORD -1 sw7_fleeKX[sw7_fleeindex] sw7_fleeKY[sw7_fleeindex] sw7_fleeKZ[sw7_fleeindex] PEDMOVE_SPRINT -2 TASK_GO_STRAIGHT_TO_COORD -1 sw7_fleeKX[sw7_fleeindex] sw7_fleeKY[sw7_fleeindex] sw7_fleeKZ[sw7_fleeindex] PEDMOVE_SPRINT -2 //TASK_GO_TO_COORD_WHILE_SHOOTING -1 875.9781 -1056.9521 27.1413 PEDMOVE_RUN 100.0 4.0 scplayer //WRITE_DEBUG going //TASK_STAY_IN_SAME_PLACE -1 TRUE //TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 scplayer DUCK_RANDOMLY 3000 50 CLOSE_SEQUENCE_TASK sw7_kaneseqA PERFORM_SEQUENCE_TASK sw7_kane sw7_kaneseqA CLEAR_SEQUENCE_TASK sw7_kaneseqA ENDIF /* IF sw7_fleeindex = 1 IF NOT IS_CHAR_DEAD sw7_protector1 CLEAR_CHAR_TASKS sw7_protector1 TASK_DIE sw7_protector1 ENDIF ENDIF IF sw7_fleeindex = 2 IF NOT IS_CHAR_DEAD sw7_protector2 CLEAR_CHAR_TASKS sw7_protector2 TASK_DIE sw7_protector2 ENDIF ENDIF IF sw7_fleeindex = 3 IF NOT IS_CHAR_DEAD sw7_protector3 CLEAR_CHAR_TASKS sw7_protector3 TASK_DIE sw7_protector3 ENDIF ENDIF IF sw7_fleeindex = 4 IF NOT IS_CHAR_DEAD sw7_protector4 CLEAR_CHAR_TASKS sw7_protector4 TASK_DIE sw7_protector4 ENDIF ENDIF */ RETURN cycle_goons: IF NOT IS_CHAR_DEAD sw7_protector1 OPEN_SEQUENCE_TASK sw7_protector1seqA TASK_GO_TO_COORD_WHILE_SHOOTING -1 sw7_flee1X[sw7_fleeindex] sw7_flee1Y[sw7_fleeindex] sw7_flee1Z[sw7_fleeindex] PEDMOVE_RUN 100.0 1.0 scplayer //TASK_GO_TO_COORD_WHILE_SHOOTING -1 875.9781 -1056.9521 27.1413 PEDMOVE_RUN 100.0 4.0 scplayer TASK_STAY_IN_SAME_PLACE -1 FALSE // was true TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK sw7_protector1seqA PERFORM_SEQUENCE_TASK sw7_protector1 sw7_protector1seqA CLEAR_SEQUENCE_TASK sw7_protector1seqA ENDIF IF NOT IS_CHAR_DEAD sw7_protector2 OPEN_SEQUENCE_TASK sw7_protector2seqA //TASK_FOLLOW_PATH_NODES_TO_COORD_SHOOTING -1 sw7_flee2X[sw7_fleeindex] sw7_flee2Y[sw7_fleeindex] sw7_flee2Z[sw7_fleeindex] PEDMOVE_RUN -2 scplayer TASK_GO_TO_COORD_WHILE_SHOOTING -1 sw7_flee2X[sw7_fleeindex] sw7_flee2Y[sw7_fleeindex] sw7_flee2Z[sw7_fleeindex] PEDMOVE_RUN 100.0 1.0 scplayer //TASK_GO_TO_COORD_WHILE_SHOOTING -1 875.9781 -1056.9521 27.1413 PEDMOVE_RUN 100.0 4.0 scplayer TASK_STAY_IN_SAME_PLACE -1 FALSE // was true TASK_KILL_CHAR_ON_FOOT -1 scplayer TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 scplayer DUCK_RANDOMLY 5000 70 CLOSE_SEQUENCE_TASK sw7_protector2seqA PERFORM_SEQUENCE_TASK sw7_protector2 sw7_protector2seqA CLEAR_SEQUENCE_TASK sw7_protector2seqA ENDIF IF NOT IS_CHAR_DEAD sw7_protector3 SET_FOLLOW_NODE_THRESHOLD_DISTANCE sw7_protector3 150.0 OPEN_SEQUENCE_TASK sw7_protector3seqA // TASK_FOLLOW_PATH_NODES_TO_COORD_SHOOTING -1 sw7_flee3X[sw7_fleeindex] sw7_flee3Y[sw7_fleeindex] sw7_flee3Z[sw7_fleeindex] PEDMOVE_RUN -2 scplayer TASK_GO_TO_COORD_WHILE_SHOOTING -1 sw7_flee3X[sw7_fleeindex] sw7_flee3Y[sw7_fleeindex] sw7_flee3Z[sw7_fleeindex] PEDMOVE_RUN 100.0 1.0 scplayer //TASK_GO_TO_COORD_WHILE_SHOOTING -1 875.9781 -1056.9521 27.1413 PEDMOVE_RUN 100.0 4.0 scplayer TASK_STAY_IN_SAME_PLACE -1 FALSE // was true TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK sw7_protector3seqA PERFORM_SEQUENCE_TASK sw7_protector3 sw7_protector3seqA CLEAR_SEQUENCE_TASK sw7_protector3seqA ENDIF RETURN // cycle_goons procedure sw7_initial: //IF NOT IS_CHAR_DEAD sw7_kanechauffeur sw7_missionprogress = 20 sw7_chauffeurkilltask = 1 sw7_disbandfix = 1 timerb = 0 IF NOT IS_CHAR_DEAD sw7_protector1 GIVE_WEAPON_TO_CHAR sw7_protector1 WEAPONTYPE_PISTOL 2000 ENDIF IF NOT IS_CHAR_DEAD sw7_protector2 GIVE_WEAPON_TO_CHAR sw7_protector2 WEAPONTYPE_PISTOL 2000 ENDIF IF NOT IS_CHAR_DEAD sw7_protector3 GIVE_WEAPON_TO_CHAR sw7_protector3 WEAPONTYPE_PISTOL 2000 ENDIF IF NOT IS_CHAR_DEAD sw7_kane GIVE_WEAPON_TO_CHAR sw7_kane WEAPONTYPE_PISTOL 2000 ENDIF IF NOT IS_CHAR_DEAD sw7_kane //SET_FOLLOW_NODE_THRESHOLD_DISTANCE sw7_kane 150.0 OPEN_SEQUENCE_TASK sw7_kaneseqA IF sw7_fleeindex = 3 TASK_GO_STRAIGHT_TO_COORD -1 889.4055 -1057.0601 24.0241 PEDMOVE_SPRINT -2 ENDIF IF sw7_fleeindex < 3 TASK_GO_STRAIGHT_TO_COORD -1 889.4055 -1057.0601 24.0241 PEDMOVE_SPRINT -2 ENDIF TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 scplayer DUCK_RANDOMLY 3000 50 CLOSE_SEQUENCE_TASK sw7_kaneseqA PERFORM_SEQUENCE_TASK sw7_kane sw7_kaneseqA CLEAR_SEQUENCE_TASK sw7_kaneseqA ENDIF IF NOT IS_CHAR_DEAD sw7_protector1 SET_FOLLOW_NODE_THRESHOLD_DISTANCE sw7_protector1 150.0 OPEN_SEQUENCE_TASK sw7_protector1seqA TASK_GO_TO_COORD_WHILE_SHOOTING -1 884.8275 -1057.9972 24.8115 PEDMOVE_RUN 100.0 1.0 scplayer //TASK_GO_TO_COORD_WHILE_SHOOTING -1 875.9781 -1056.9521 27.1413 PEDMOVE_RUN 100.0 4.0 scplayer TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK sw7_protector1seqA PERFORM_SEQUENCE_TASK sw7_protector1 sw7_protector1seqA CLEAR_SEQUENCE_TASK sw7_protector1seqA ENDIF IF NOT IS_CHAR_DEAD sw7_protector2 SET_FOLLOW_NODE_THRESHOLD_DISTANCE sw7_protector2 150.0 OPEN_SEQUENCE_TASK sw7_protector2seqA TASK_GO_TO_COORD_WHILE_SHOOTING -1 880.5971 -1057.4679 25.9345 PEDMOVE_RUN 100.0 1.0 scplayer //TASK_GO_TO_COORD_WHILE_SHOOTING -1 875.9781 -1056.9521 27.1413 PEDMOVE_RUN 100.0 4.0 scplayer TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 scplayer DUCK_RANDOMLY 5000 70 CLOSE_SEQUENCE_TASK sw7_protector2seqA PERFORM_SEQUENCE_TASK sw7_protector2 sw7_protector2seqA CLEAR_SEQUENCE_TASK sw7_protector2seqA ENDIF IF NOT IS_CHAR_DEAD sw7_protector3 SET_FOLLOW_NODE_THRESHOLD_DISTANCE sw7_protector3 150.0 OPEN_SEQUENCE_TASK sw7_protector3seqA TASK_GO_TO_COORD_WHILE_SHOOTING -1 881.8948 -1061.7740 24.2952 PEDMOVE_RUN 100.0 1.0 scplayer //TASK_GO_TO_COORD_WHILE_SHOOTING -1 875.9781 -1056.9521 27.1413 PEDMOVE_RUN 100.0 4.0 scplayer TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK sw7_protector3seqA PERFORM_SEQUENCE_TASK sw7_protector3 sw7_protector3seqA CLEAR_SEQUENCE_TASK sw7_protector3seqA ENDIF IF NOT IS_CHAR_DEAD sw7_protector4 SET_FOLLOW_NODE_THRESHOLD_DISTANCE sw7_protector4 150.0 OPEN_SEQUENCE_TASK sw7_protector4seqA TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 scplayer DUCK_RANDOMLY 5000 70 CLOSE_SEQUENCE_TASK sw7_protector4seqA PERFORM_SEQUENCE_TASK sw7_protector4 sw7_protector4seqA CLEAR_SEQUENCE_TASK sw7_protector4seqA ENDIF IF NOT IS_CHAR_DEAD sw7_protector5 SET_FOLLOW_NODE_THRESHOLD_DISTANCE sw7_protector5 150.0 OPEN_SEQUENCE_TASK sw7_protector5seqA TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK sw7_protector5seqA PERFORM_SEQUENCE_TASK sw7_protector5 sw7_protector5seqA CLEAR_SEQUENCE_TASK sw7_protector5seqA ENDIF IF NOT IS_CHAR_DEAD sw7_protector6 SET_FOLLOW_NODE_THRESHOLD_DISTANCE sw7_protector6 150.0 OPEN_SEQUENCE_TASK sw7_protector6seqA TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK sw7_protector6seqA PERFORM_SEQUENCE_TASK sw7_protector6 sw7_protector6seqA CLEAR_SEQUENCE_TASK sw7_protector6seqA ENDIF RETURN sw7_mopup: IF NOT IS_CHAR_DEAD sw7_protector1 ADD_BLIP_FOR_CHAR sw7_protector1 sw7_protector1B CHANGE_BLIP_SCALE sw7_protector1B 2 sw7_mopupcount ++ muP1 = 1 ENDIF IF NOT IS_CHAR_DEAD sw7_protector2 ADD_BLIP_FOR_CHAR sw7_protector2 sw7_protector2B CHANGE_BLIP_SCALE sw7_protector2B 2 sw7_mopupcount ++ muP2 = 1 ENDIF IF NOT IS_CHAR_DEAD sw7_protector3 ADD_BLIP_FOR_CHAR sw7_protector3 sw7_protector3B CHANGE_BLIP_SCALE sw7_protector3B 2 sw7_mopupcount ++ muP3 = 1 ENDIF IF NOT IS_CHAR_DEAD sw7_protector4 ADD_BLIP_FOR_CHAR sw7_protector4 sw7_protector4B CHANGE_BLIP_SCALE sw7_protector4B 2 sw7_mopupcount ++ muP4 = 1 ENDIF IF NOT IS_CHAR_DEAD sw7_protector5 ADD_BLIP_FOR_CHAR sw7_protector5 sw7_protector5B CHANGE_BLIP_SCALE sw7_protector5B 2 sw7_mopupcount ++ muP5 = 1 ENDIF IF NOT IS_CHAR_DEAD sw7_protector6 ADD_BLIP_FOR_CHAR sw7_protector6 sw7_protector6B CHANGE_BLIP_SCALE sw7_protector6B 2 sw7_mopupcount ++ muP6 = 1 ENDIF IF NOT IS_CHAR_DEAD sw7_reinforce1 //PC bug fix CLEAR_CHAR_TASKS sw7_reinforce1 OPEN_SEQUENCE_TASK sw7_reinforce1seq TASK_LEAVE_ANY_CAR -1 // TASK_GO_STRAIGHT_TO_COORD -1 916.3773 -1107.9373 23.1694 PEDMOVE_RUN 10000 TASK_KILL_CHAR_ON_FOOT -1 scplayer //TASK_GO_STRAIGHT_TO_COORD -1 833.1347 -1095.1868 22.8281 PEDMOVE_WALK 10000 CLOSE_SEQUENCE_TASK sw7_reinforce1seq PERFORM_SEQUENCE_TASK sw7_reinforce1 sw7_reinforce1seq CLEAR_SEQUENCE_TASK sw7_reinforce1seq // End PC bug fix ADD_BLIP_FOR_CHAR sw7_reinforce1 sw7_reinforce1B CHANGE_BLIP_SCALE sw7_reinforce1B 2 sw7_mopupcount ++ muR1 = 1 ENDIF IF NOT IS_CHAR_DEAD sw7_reinforce2 // PC bug fix CLEAR_CHAR_TASKS sw7_reinforce2 OPEN_SEQUENCE_TASK sw7_reinforce2seq TASK_LEAVE_ANY_CAR -1 //TASK_GO_STRAIGHT_TO_COORD -1 916.3773 -1107.9373 23.1694 PEDMOVE_RUN 10000 TASK_KILL_CHAR_ON_FOOT -1 scplayer //TASK_GO_STRAIGHT_TO_COORD -1 833.1347 -1095.1868 22.8281 PEDMOVE_WALK 10000 CLOSE_SEQUENCE_TASK sw7_reinforce2seq PERFORM_SEQUENCE_TASK sw7_reinforce2 sw7_reinforce2seq CLEAR_SEQUENCE_TASK sw7_reinforce2seq // End PC bug fix ADD_BLIP_FOR_CHAR sw7_reinforce2 sw7_reinforce2B CHANGE_BLIP_SCALE sw7_reinforce2B 2 sw7_mopupcount ++ muR2 = 1 ENDIF // New PC section 08.12.04 IF NOT IS_CHAR_DEAD sw7_escapechauffeur CLEAR_CHAR_TASKS sw7_escapechauffeur TASK_SMART_FLEE_CHAR sw7_escapechauffeur scplayer 100.0 -1 ENDIF // End PC section. RETURN sw7_mopdown: IF muP1 = 1 IF IS_CHAR_DEAD sw7_protector1 REMOVE_BLIP sw7_protector1B sw7_mopupcount -- muP1 = 2 ENDIF ENDIF IF muP2 = 1 IF IS_CHAR_DEAD sw7_protector2 REMOVE_BLIP sw7_protector2B sw7_mopupcount -- muP2 = 2 ENDIF ENDIF IF muP3 = 1 IF IS_CHAR_DEAD sw7_protector3 REMOVE_BLIP sw7_protector3B sw7_mopupcount -- muP3 = 2 ENDIF ENDIF IF muP4 = 1 IF IS_CHAR_DEAD sw7_protector4 REMOVE_BLIP sw7_protector4B sw7_mopupcount -- muP4 = 2 ENDIF ENDIF IF muP5 = 1 IF IS_CHAR_DEAD sw7_protector5 sw7_mopupcount -- REMOVE_BLIP sw7_protector5B muP5 = 2 ENDIF ENDIF IF muP6 = 1 IF IS_CHAR_DEAD sw7_protector6 REMOVE_BLIP sw7_protector6B sw7_mopupcount -- muP6 = 2 ENDIF ENDIF IF muR1 = 1 IF IS_CHAR_DEAD sw7_reinforce1 REMOVE_BLIP sw7_reinforce1B sw7_mopupcount -- muR1 = 2 ENDIF ENDIF IF muR2 = 1 IF IS_CHAR_DEAD sw7_reinforce2 REMOVE_BLIP sw7_reinforce2B sw7_mopupcount -- muR2 = 2 ENDIF ENDIF RETURN sw7_ptrfullfix: IF NOT IS_CAR_DEAD sw7_pursuitcar IF NOT IS_CHAR_DEAD sw7_banger1 IF NOT IS_CHAR_SITTING_IN_CAR sw7_banger1 sw7_pursuitcar MARK_CHAR_AS_NO_LONGER_NEEDED sw7_banger1 ENDIF ENDIF IF NOT IS_CHAR_DEAD sw7_banger2 IF NOT IS_CHAR_SITTING_IN_CAR sw7_banger2 sw7_pursuitcar MARK_CHAR_AS_NO_LONGER_NEEDED sw7_banger2 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD sw7_kane IF NOT IS_CAR_DEAD sw7_escapehearse IF NOT IS_CHAR_SITTING_IN_CAR sw7_kane sw7_escapehearse MARK_CAR_AS_NO_LONGER_NEEDED sw7_escapehearse ENDIF ENDIF ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED sw7_grove1 MARK_CHAR_AS_NO_LONGER_NEEDED sw7_grove2 MARK_CHAR_AS_NO_LONGER_NEEDED sw7_reinforce1 MARK_CHAR_AS_NO_LONGER_NEEDED sw7_reinforce2 MARK_CHAR_AS_NO_LONGER_NEEDED sw7_preach MARK_CHAR_AS_NO_LONGER_NEEDED sw7_greetinface MARK_CHAR_AS_NO_LONGER_NEEDED sw7_protector1 MARK_CHAR_AS_NO_LONGER_NEEDED sw7_protector2 MARK_CHAR_AS_NO_LONGER_NEEDED sw7_protector3 MARK_CHAR_AS_NO_LONGER_NEEDED sw7_protector4 MARK_CHAR_AS_NO_LONGER_NEEDED sw7_protector5 MARK_CHAR_AS_NO_LONGER_NEEDED sw7_protector6 MARK_CAR_AS_NO_LONGER_NEEDED sw7_kanehearse MARK_CAR_AS_NO_LONGER_NEEDED sw7_sweethearse // WRITE_DEBUG charsremoved RETURN // **************************************** Mission casino3 failed *********************** mission_sweet7_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // **************************************** mission casino3 passed ************************ mission_sweet7_passed: get_int_stat RESPECT sw7_respectvalue // WRITE_DEBUG_WITH_FLOAT rpct sw7_respectvalue //AWARD_PLAYER_MISSION_RESPECT 10 get_int_stat RESPECT sw7_respectvalue //WRITE_DEBUG_WITH_FLOAT rpct sw7_respectvalue REGISTER_MISSION_PASSED ( SWEET_7 ) PLAYER_MADE_PROGRESS 1 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 10 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 10 PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL PLAYER1 flag_sweet_mission_counter ++ REMOVE_BLIP sweet_contact_blip SET_POLICE_IGNORE_PLAYER player1 OFF RETURN // ********************************** mission cleanup *********************************** mission_cleanup_sweet7: SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_ROADS_ON 2297.0376 -1664.6005 10.8474 2324.8655 -1652.1244 14.8382 SWITCH_PED_ROADS_ON 2297.0376 -1664.6005 10.8474 2324.8655 -1652.1244 14.8382 SET_ZONE_GANG_STRENGTH GAN1 GANG_GROVE gan1_gzs //back to starting value SET_ZONE_GANG_STRENGTH GAN2 GANG_GROVE gan2_gzs //back to starting value CLEAR_MISSION_AUDIO 3 CLEAR_HELP GET_GAME_TIMER timer_mobile_start //Used to reset the mobile phone timer so it doesn't ring immediately after the mission SET_POLICE_IGNORE_PLAYER player1 OFF CLEAR_WANTED_LEVEL player1 REMOVE_CHAR_ELEGANTLY sweet RELEASE_WEATHER UNLOAD_SPECIAL_CHARACTER 1 IF NOT IS_CHAR_DEAD sw7_banger1 SET_CHAR_SUFFERS_CRITICAL_HITS sw7_banger1 TRUE SET_CHAR_HEALTH sw7_banger1 100 MARK_CHAR_AS_NO_LONGER_NEEDED sw7_banger1 ENDIF IF NOT IS_CHAR_DEAD sw7_banger2 SET_CHAR_SUFFERS_CRITICAL_HITS sw7_banger2 TRUE SET_CHAR_HEALTH sw7_banger2 100 MARK_CHAR_AS_NO_LONGER_NEEDED sw7_banger2 ENDIF REMOVE_BLIP sw7_kaneB REMOVE_BLIP sw7_sweetB REMOVE_BLIP sw7_hearseB REMOVE_BLIP sw7_cementB REMOVE_BLIP sw7_pursuitcarB REMOVE_BLIP sw7_protector1B REMOVE_BLIP sw7_protector2B REMOVE_BLIP sw7_protector3B REMOVE_BLIP sw7_protector4B REMOVE_BLIP sw7_protector5B REMOVE_BLIP sw7_protector6B REMOVE_BLIP sw7_reinforce1B REMOVE_BLIP sw7_reinforce2B REMOVE_BLIP sw7_bangershouseB REMOVE_BLIP sw7_banger1B REMOVE_BLIP sw7_banger2B REMOVE_BLIP sw7_respect1B REMOVE_BLIP sw7_respect2B REMOVE_BLIP sw7_respect3B REMOVE_BLIP sw7_passedb CLEAR_ONSCREEN_TIMER sw7_funeraltimer REMOVE_ANIMATION graveyard REMOVE_ANIMATION SMOKING MARK_MODEL_AS_NO_LONGER_NEEDED greenwoo MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_MODEL_AS_NO_LONGER_NEEDED admiral MARK_MODEL_AS_NO_LONGER_NEEDED sadler MARK_MODEL_AS_NO_LONGER_NEEDED FAM3 MARK_MODEL_AS_NO_LONGER_NEEDED FAM2 MARK_MODEL_AS_NO_LONGER_NEEDED FAM1 MARK_MODEL_AS_NO_LONGER_NEEDED wmoprea MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS2 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS3 MARK_MODEL_AS_NO_LONGER_NEEDED BFYRI SWITCH_ROADS_ON 772.2430 -1050.3231 10.2931 806.2723 -1130.1954 23.8359 SWITCH_ROADS_ON sw7_coord_area_cemetry_min_x sw7_coord_area_cemetry_min_y 0.0 sw7_coord_area_cemetry_max_x sw7_coord_area_cemetry_max_y 60.0 SWITCH_PED_ROADS_ON sw7_coord_area_cemetry_min_x sw7_coord_area_cemetry_min_y 0.0 sw7_coord_area_cemetry_max_x sw7_coord_area_cemetry_max_y 60.0 flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // *************************************** Crash 2 ***************************************** // *************************************** Doberman **************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME crash4 // Mission start stuff GOSUB mission_start_crash4 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_crash4_failed ENDIF GOSUB mission_cleanup_crash4 MISSION_END { // Variables for mission // bdup character LVAR_INT enemy_crash4 enemy_blip_crash4 flag_enemy_taunt_crash4 enemy_created_crash4 enemy_dead_crash4 enemy_out_car_crash4 LVAR_INT enemy2_crash4 car_crash4 enemy2_out_car_crash4 // general stuff LVAR_INT tough_decisionmaker_crash4 watched_cutscene1_crash4 // area blips LVAR_INT area_blip_crash4 flag_zone_blip_on_crash4 // gang war stuff LVAR_INT gang_strenth1_crash4 // stuff for mobile phone calls LVAR_INT task_status_crash4 guys_shaking_crash4 LVAR_INT flag_gang_help_crash4 // emmetts house for weapons LVAR_INT emmetts_blip_crash4 LVAR_INT weapon_pickup_blip_crash4 // mini cuts LVAR_INT cut_guy1_crash4 cut_guy2_crash4 cut_guy3_crash4 LVAR_FLOAT return_animation_time_guy2_crash4 return_animation_time_guy3_crash4 LVAR_INT flag_guy2_finished_crash4 flag_guy3_finished_crash4 cigar_crash4 flag_watched_end_cut2_crash4 LVAR_INT created_cutscene_guys1_crash4 created_cutscene_guys2_crash4 LVAR_INT watched_baddie_cut_crash4 LVAR_INT flag_had_gang_war_message_crash4 LVAR_INT flag_had_gang_war_message2_crash4 LVAR_INT flag_had_flag_message_crash4 // NEW Ammunation stuff LVAR_INT flag_ammu_help_crash4 dummy_car_crash4 flag_gun_message_crash4 // gang stuff LVAR_INT stored_nmex_strength_crash4 stored_smex_strength_crash4 // new start gang war message LVAR_INT flag_had_kill_message_crash2 // player gang strenth LVAR_INT player_gang_strenth_crash4 LVAR_INT stored_car_crash4 // **************************************** Mission Start ********************************** mission_start_crash4: flag_player_on_mission = 1 flag_on_doberman_mission = 1 // phone message stuff guys_shaking_crash4 = 0 flag_gang_help_crash4 = 0 // flat stuff flag_zone_blip_on_crash4 = 0 // enemy taunt stuff flag_enemy_taunt_crash4 = 0 enemy_created_crash4 = 0 enemy_dead_crash4 = 0 enemy2_out_car_crash4 = 0 enemy2_out_car_crash4 = 0 // general stuff watched_cutscene1_crash4 = 0 return_animation_time_guy2_crash4 = 0.0 return_animation_time_guy3_crash4 = 0.0 flag_guy3_finished_crash4 = 0 flag_guy2_finished_crash4 = 0 flag_watched_end_cut2_crash4 = 0 created_cutscene_guys1_crash4 = 0 created_cutscene_guys2_crash4 = 0 watched_baddie_cut_crash4 = 0 flag_had_gang_war_message_crash4 = 0 flag_had_gang_war_message2_crash4 = 0 flag_had_flag_message_crash4 = 0 flag_ammu_help_crash4 = 0 flag_gun_message_crash4 = 0 flag_bought_gun_for_doberman = 0 stored_nmex_strength_crash4 = 0 stored_smex_strength_crash4 = 0 // new gangwar message flag_had_kill_message_crash2 = 0 // player gang strenth player_gang_strenth_crash4 = 0 // mobile and audio stuff //crash4_index = 0 //crash4_audio_is_playing = 0 //crash4_cutscene_flag = 0 //crash4_chat_switch = 0 REGISTER_MISSION_GIVEN WAIT 0 // ********************** NO ANIMATED CUTSCENE IN THIS MISSION ************************************ CLEAR_THIS_PRINT_BIG_NOW 1 WAIT 1000 LOAD_MISSION_TEXT CRASH2 SET_ZONE_GANG_STRENGTH GLN1 GANG_FLAT 40 SET_ZONE_GANG_STRENGTH GLN1 GANG_GROVE 0 GET_ZONE_GANG_STRENGTH GLN1 GANG_NMEX stored_nmex_strength_crash4 GET_ZONE_GANG_STRENGTH GLN1 GANG_SMEX stored_smex_strength_crash4 SET_ZONE_GANG_STRENGTH GLN1 GANG_NMEX 0 SET_ZONE_GANG_STRENGTH GLN1 GANG_SMEX 0 SET_EVERYONE_IGNORE_PLAYER player1 ON SET_POLICE_IGNORE_PLAYER player1 ON // Decision Makers LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH tough_decisionmaker_crash4 REQUEST_MODEL BALLAS1 REQUEST_MODEL BALLAS2 REQUEST_MODEL TEC9 REQUEST_ANIMATION GANGS REQUEST_ANIMATION SMOKING REQUEST_MODEL CIGAR REQUEST_MODEL FAM2 REQUEST_MODEL FAM3 LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED BALLAS2 OR NOT HAS_MODEL_LOADED TEC9 OR NOT HAS_MODEL_LOADED BALLAS1 OR NOT HAS_ANIMATION_LOADED GANGS WAIT 0 ENDWHILE WHILE NOT HAS_ANIMATION_LOADED SMOKING OR NOT HAS_MODEL_LOADED CIGAR OR NOT HAS_MODEL_LOADED FAM2 OR NOT HAS_MODEL_LOADED FAM3 WAIT 0 ENDWHILE // ***************************************** CUTSCENE SHOWING AMMUNATION ************************************ SET_PED_DENSITY_MULTIPLIER 0.0 CLEAR_AREA 1363.6891 -1280.4408 12.5469 1.0 TRUE SET_CHAR_COORDINATES scplayer 1363.6891 -1280.4408 12.5469 LOAD_SCENE 1363.6891 -1280.4408 12.5469 SET_CHAR_HEADING scplayer 90.0 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT MAKE_PLAYER_GANG_DISAPPEAR SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 ON SET_POLICE_IGNORE_PLAYER player1 ON CLEAR_AREA 1350.1770 -1264.9207 14.7166 1.0 TRUE SET_FIXED_CAMERA_POSITION 1350.1770 -1264.9207 14.7166 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1350.9867 -1265.4988 14.8167 JUMP_CUT SET_FADING_COLOUR 0 0 0 DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PRINT_NOW (AMUHLP) 10000 1 //"This is AmmuNation" SKIP_CUTSCENE_START TIMERA = 0 WHILE TIMERA < 5000 WAIT 0 ENDWHILE SKIP_CUTSCENE_END // ******************************************************* CUTSCENE SHOWING TERRITORY *********************** CLEAR_THIS_PRINT (AMUHLP) SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REQUEST_MODEL Laejeffersalpha REQUEST_MODEL LaeLODpark02 REQUEST_MODEL Laemacpark02 WHILE NOT HAS_MODEL_LOADED Laejeffersalpha OR NOT HAS_MODEL_LOADED LaeLODpark02 OR NOT HAS_MODEL_LOADED Laemacpark02 WAIT 0 ENDWHILE LOAD_ALL_MODELS_NOW SWITCH_WIDESCREEN ON SKIP_CUTSCENE_START SET_CHAR_COORDINATES scplayer 1859.931 -1137.139 22.946 //LOAD_SCENE 1859.931 -1137.139 22.946 LOAD_SCENE_IN_DIRECTION 1859.931 -1137.139 22.946 89.9 IF created_cutscene_guys1_crash4 = 0 CLEAR_AREA 1924.632 -1126.623 24.135 30.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 BALLAS2 1924.632 -1126.623 24.135 cut_guy1_crash4 // leaning against wall smoking SET_CHAR_ONLY_DAMAGED_BY_PLAYER cut_guy1_crash4 TRUE SET_CHAR_HEADING cut_guy1_crash4 180.0 CREATE_OBJECT cigar 1924.632 -1126.623 24.135 cigar_crash4 TASK_PICK_UP_OBJECT cut_guy1_crash4 cigar_crash4 0.04 0.1 -0.02 PED_HANDL HOLD_ORIENTATE_BONE_FULL NULL NULL -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE cut_guy1_crash4 M_smklean_loop SMOKING 4.0 TRUE FALSE FALSE FALSE -1 CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 1921.157 -1127.438 24.048 cut_guy2_crash4 SET_CHAR_ONLY_DAMAGED_BY_PLAYER cut_guy2_crash4 TRUE SET_CHAR_HEADING cut_guy2_crash4 270.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE cut_guy2_crash4 IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 CREATE_CHAR PEDTYPE_MISSION1 BALLAS2 1922.157 -1127.438 24.048 cut_guy3_crash4 SET_CHAR_ONLY_DAMAGED_BY_PLAYER cut_guy3_crash4 TRUE SET_CHAR_HEADING cut_guy3_crash4 90.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE cut_guy3_crash4 IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 created_cutscene_guys1_crash4 = 1 ENDIF SET_FIXED_CAMERA_POSITION 1858.9087 -1136.1016 26.7903 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1859.8669 -1136.3796 26.7250 JUMP_CUT SET_PED_DENSITY_MULTIPLIER 0.0 SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PRINT_NOW (CM2_10 ) 20000 1 //"This is Glen Park, which is Ballas territory, it is marked on the radar with purple." TIMERA = 0 WHILE TIMERA < 10000 WAIT 0 ENDWHILE CLEAR_THIS_PRINT (CM2_10) SET_FIXED_CAMERA_POSITION 1916.7703 -1130.4788 26.9978 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1917.7384 -1130.2701 26.8593 JUMP_CUT PRINT_NOW (CM2_11) 20000 1 //"You must take out the enemy gang to gain this territory as your own." TIMERA = 0 WHILE TIMERA < 10000 WAIT 0 IF guys_shaking_crash4 = 0 IF TIMERA > 7000 IF NOT IS_CHAR_DEAD cut_guy2_crash4 IF NOT IS_CHAR_DEAD cut_guy3_crash4 TASK_PLAY_ANIM_NON_INTERRUPTABLE cut_guy2_crash4 hndshkfa GANGS 4.0 FALSE FALSE FALSE FALSE -1 return_animation_time_guy2_crash4 = 0.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE cut_guy3_crash4 hndshkfa GANGS 4.0 FALSE FALSE FALSE FALSE -1 return_animation_time_guy3_crash4 = 0.0 guys_shaking_crash4 = 1 ENDIF ENDIF ENDIF ENDIF ENDWHILE SKIP_CUTSCENE_END CLEAR_THIS_PRINT (CM2_11) SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE MARK_MODEL_AS_NO_LONGER_NEEDED Laejeffersalpha MARK_MODEL_AS_NO_LONGER_NEEDED LaeLODpark02 MARK_MODEL_AS_NO_LONGER_NEEDED Laemacpark02 CLEAR_THIS_PRINT (CM2_2) REQUEST_COLLISION 1363.6891 -1280.4408 CLEAR_AREA 1363.6891 -1280.4408 12.5469 1.0 TRUE SET_CHAR_COORDINATES scplayer 1363.6891 -1280.4408 12.5469 SET_CHAR_HEADING scplayer 90.0 //LOAD_SCENE 1363.6891 -1280.4408 12.5469 LOAD_SCENE_IN_DIRECTION 1363.6891 -1280.4408 12.5469 90.0 REMOVE_ANIMATION GANGS REMOVE_ANIMATION SMOKING IF created_cutscene_guys1_crash4 = 1 DELETE_CHAR cut_guy1_crash4 DELETE_CHAR cut_guy2_crash4 DELETE_CHAR cut_guy3_crash4 DELETE_OBJECT cigar_crash4 ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED cigar SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_PED_DENSITY_MULTIPLIER 1.0 SET_FADING_COLOUR 0 0 0 DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 OFF SET_POLICE_IGNORE_PLAYER player1 OFF IF played_cut1_before_crash4 = 1 watched_cutscene1_crash4 = 1 IF watched_cutscene1_crash4 = 0 CLEAR_PRINTS SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PED_DENSITY_MULTIPLIER 1.0 REQUEST_COLLISION 1363.6891 -1280.4408 CLEAR_AREA 1363.6891 -1280.4408 12.5469 1.0 TRUE SET_CHAR_COORDINATES scplayer 1363.6891 -1280.4408 12.5469 SET_CHAR_HEADING scplayer 90.0 // LOAD_SCENE 1363.6891 -1280.4408 12.5469 LOAD_SCENE_IN_DIRECTION 1363.6891 -1280.4408 12.5469 90.0 REMOVE_ANIMATION GANGS REMOVE_ANIMATION SMOKING MARK_MODEL_AS_NO_LONGER_NEEDED Laejeffersalpha MARK_MODEL_AS_NO_LONGER_NEEDED LaeLODpark02 MARK_MODEL_AS_NO_LONGER_NEEDED Laemacpark02 IF created_cutscene_guys1_crash4 = 1 DELETE_CHAR cut_guy1_crash4 DELETE_CHAR cut_guy2_crash4 DELETE_CHAR cut_guy3_crash4 DELETE_OBJECT cigar_crash4 ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED CIGAR RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_FADING_COLOUR 0 0 0 DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CAMERA_BEHIND_PLAYER SET_EVERYONE_IGNORE_PLAYER player1 OFF SET_POLICE_IGNORE_PLAYER player1 OFF ENDIF ENDIF played_cut1_before_crash4 = 1 // ************************************** END OF CUT SCENE ONE ************************************ // ******************* PLAYER NOW TOLD TO GO INTO AMMUNATION HAD BUY A GUN ************************ //PRINT_NOW (CM2_22) 8000 1 //"Enter the shop and buy a gun." // changing this to a CONTACT_POINT blip, coords throws off the radar ADD_SPRITE_BLIP_FOR_CONTACT_POINT 1362.895 -1281.008 12.586 RADAR_SPRITE_GUN weapon_pickup_blip_crash4 SWITCH_ENTRY_EXIT ammun1 TRUE // switches on the gang war stuff SET_ZONE_GANG_STRENGTH GLN1 GANG_FLAT 40 SET_ZONE_GANG_STRENGTH GLN1 GANG_GROVE 0 SET_ONLY_CREATE_GANG_MEMBERS TRUE SET_GANG_WARS_TRAINING_MISSION TRUE SET_ZONE_FOR_GANG_WARS_TRAINING GLN1 SET_WANTED_MULTIPLIER 0.5 CAN_TRIGGER_GANG_WAR_WHEN_ON_A_MISSION TRUE SET_GANG_WARS_ACTIVE TRUE flag_gang_war_active = 1 PRINT_NOW (CM2_3) 8000 1 //"Goto Ballas territory and start and gang war. ADD_SPRITE_BLIP_FOR_COORD 1932.351 -1189.647 19.063 RADAR_SPRITE_GANG_G area_blip_crash4 WHILE NOT IS_PLAYER_IN_INFO_ZONE player1 GLN1 WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_crash4_passed ENDIF IF flag_had_flag_message_crash4 = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2444.8950 -1981.5243 13.933 880.0 880.0 100.0 FALSE IF IS_STRING_EMPTY $shop_name PRINT_HELP (CM2_18) //"Ballas territory is marked in purple on the radar." TIMERB = 0 flag_had_flag_message_crash4 = 1 ENDIF ENDIF ENDIF IF flag_had_flag_message_crash4 = 1 IF IS_STRING_EMPTY $shop_name IF TIMERB > 5000 PRINT_HELP (CM2_19) //"The radar blip indicates the territory to attack, it will stay on the radar until you own the territory." flag_had_flag_message_crash4 = 2 ENDIF ENDIF ENDIF GET_ZONE_GANG_STRENGTH GLN1 GANG_FLAT gang_strenth1_crash4 ENDWHILE REMOVE_BLIP weapon_pickup_blip_crash4 PRINT_NOW (CM2_5) 8000 1 //"Kill enemy gang members while on foot to start a gang war." TIMERA = 0 // waiting for the player to start a gang war WHILE NOT IS_GANG_WAR_GOING_ON WAIT 0 IF NOT IS_PLAYER_IN_INFO_ZONE player1 GLN1 IF flag_zone_blip_on_crash4 = 0 // ADD_SPRITE_BLIP_FOR_COORD 1932.351 -1189.647 19.063 RADAR_SPRITE_ENEMYATTACK area_blip_crash4 PRINT_NOW (CM2_6) 8000 1 //"Get back to Glen Park!" flag_zone_blip_on_crash4 = 1 ENDIF ELSE IF flag_zone_blip_on_crash4 = 1 // REMOVE_BLIP area_blip_crash4 CLEAR_THIS_PRINT (CM2_6) PRINT_NOW (CM2_5) 8000 1 //"Kill enemy gang members while on foot to start a gang war." flag_zone_blip_on_crash4 = 0 ENDIF ENDIF IF flag_had_kill_message_crash2 = 0 IF TIMERA >= 60000 PRINT_NOW (CM2_5) 8000 1 //"Kill enemy gang members while on foot to start a gang war." flag_had_kill_message_crash2 = 1 ENDIF ENDIF IF flag_had_kill_message_crash2 = 1 IF TIMERA >= 70000 TIMERA = 0 flag_had_kill_message_crash2 = 0 ENDIF ENDIF ENDWHILE CLEAR_THIS_PRINT (CM2_5) TIMERA = 0 // To let message stuff start for the gang war WHILE NOT gang_strenth1_crash4 = 0 WAIT 0 GET_ZONE_GANG_STRENGTH GLN1 GANG_FLAT gang_strenth1_crash4 GET_ZONE_GANG_STRENGTH GLN1 GANG_GROVE player_gang_strenth_crash4 IF NOT IS_PLAYER_IN_INFO_ZONE player1 GLN1 IF flag_zone_blip_on_crash4 = 0 PRINT_NOW (CM2_6) 8000 1 //"Get back to Glen Park!" flag_zone_blip_on_crash4 = 1 ENDIF IF NOT IS_GANG_WAR_GOING_ON IF player_gang_strenth_crash4 = 0 IF flag_had_gang_war_message2_crash4 = 0 PRINT_NOW (CM2_17) 8000 1 //"The enemy have retaken the territory!" flag_had_gang_war_message2_crash4 = 1 ENDIF ENDIF ELSE flag_had_gang_war_message2_crash4 = 0 ENDIF ELSE IF flag_zone_blip_on_crash4 = 1 CLEAR_THIS_PRINT (CM2_6) flag_zone_blip_on_crash4 = 0 ENDIF IF NOT IS_GANG_WAR_GOING_ON IF player_gang_strenth_crash4 = 0 IF flag_had_gang_war_message_crash4 = 0 PRINT_NOW (CM2_16) 8000 1 //"Attack enemy gang members to start the gang war!" flag_had_gang_war_message_crash4 = 1 ENDIF ENDIF ELSE flag_had_gang_war_message_crash4 = 0 ENDIF ENDIF ENDWHILE REMOVE_BLIP area_blip_crash4 CLEAR_THIS_PRINT (CM2_16) CLEAR_THIS_PRINT (CM2_17) CLEAR_THIS_PRINT (CM2_6) CLEAR_THIS_PRINT (CM2_5) SET_ZONE_GANG_STRENGTH GLN1 GANG_FLAT 0 CAN_TRIGGER_GANG_WAR_WHEN_ON_A_MISSION FALSE WAIT 5000 SET_ONLY_CREATE_GANG_MEMBERS FALSE // *********************************** Cutscene showing player has taken over the territory ***************** GOSUB check_player_is_safe WHILE NOT player_is_completely_safe = 1 WAIT 0 GOSUB check_player_is_safe ENDWHILE CLEAR_PRINTS SET_PLAYER_CONTROL player1 OFF SET_POLICE_IGNORE_PLAYER player1 ON SET_EVERYONE_IGNORE_PLAYER player1 ON SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PED_DENSITY_MULTIPLIER 0.0 MAKE_PLAYER_GANG_DISAPPEAR SWITCH_WIDESCREEN ON IF NOT IS_CHAR_IN_ANY_CAR scplayer CLEAR_AREA 1859.931 -1137.139 22.946 2.0 TRUE SET_CHAR_COORDINATES scplayer 1859.931 -1137.139 22.946 SET_CHAR_HEADING scplayer 284.0 LOAD_SCENE 1859.931 -1137.139 22.946 ELSE STORE_CAR_CHAR_IS_IN scplayer stored_car_crash4 CLEAR_AREA 1859.931 -1137.139 22.946 2.0 TRUE WARP_CHAR_FROM_CAR_TO_COORD scplayer 1859.931 -1137.139 22.946 WHILE IS_CHAR_IN_ANY_CAR scplayer WAIT 0 ENDWHILE SET_CHAR_HEADING scplayer 284.0 LOAD_SCENE 1859.931 -1137.139 22.946 ENDIF SET_FIXED_CAMERA_POSITION 1859.8280 -1136.1796 33.7679 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1860.7511 -1136.4626 33.5080 JUMP_CUT IF created_cutscene_guys2_crash4 = 0 CREATE_CHAR PEDTYPE_MISSION1 FAM2 1910.336 -1154.475 22.699 cut_guy1_crash4 SET_CHAR_HEADING cut_guy1_crash4 131.345 SET_CHAR_ONLY_DAMAGED_BY_PLAYER cut_guy1_crash4 TRUE TASK_PLAY_ANIM_NON_INTERRUPTABLE cut_guy1_crash4 IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 CREATE_CHAR PEDTYPE_MISSION1 FAM3 1907.990 -1157.554 22.932 cut_guy2_crash4 SET_CHAR_HEADING cut_guy2_crash4 318.746 SET_CHAR_ONLY_DAMAGED_BY_PLAYER cut_guy2_crash4 TRUE TASK_PLAY_ANIM_NON_INTERRUPTABLE cut_guy2_crash4 IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 created_cutscene_guys2_crash4 = 1 ENDIF SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF played_cut2_before_crash4 = 1 SKIP_CUTSCENE_START ENDIF PRINT_NOW (CM2_12) 20000 1 //"The territory is now owned by the families and is marked on the radar in green." TIMERA = 0 WHILE TIMERA < 10000 WAIT 0 ENDWHILE CLEAR_THIS_PRINT (CM2_12) SET_FIXED_CAMERA_POSITION 1891.8889 -1163.3944 25.5792 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1892.8651 -1163.1869 25.5167 JUMP_CUT PRINT_NOW (CM2_13) 20000 1 //"Your gang members can now be found in this territory. TIMERA = 0 WHILE TIMERA < 10000 WAIT 0 ENDWHILE CLEAR_THIS_PRINT (CM2_13) PRINT_NOW (CM2_14) 20000 1 //"Your territory will come under constant attack from enemy gangs and you must defend it. TIMERA = 0 WHILE TIMERA < 10000 WAIT 0 ENDWHILE CLEAR_THIS_PRINT (CM2_14) SET_FIXED_CAMERA_POSITION 1859.8280 -1136.1796 33.7679 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1860.7511 -1136.4626 33.5080 JUMP_CUT PRINT_NOW (CM2_15) 20000 1 //"When an attack takes place the territory will flash red. TIMERA = 0 WHILE TIMERA < 10000 WAIT 0 ENDWHILE CLEAR_THIS_PRINT (CM2_15) PRINT_NOW (CM2_20) 20000 1 //"You will gain respect and money for taking over territory, the money will appear at the Grove Street hub." TIMERA = 0 WHILE TIMERA < 10000 WAIT 0 ENDWHILE CLEAR_THIS_PRINT (CM2_20) SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS IF created_cutscene_guys2_crash4 = 1 DELETE_CHAR cut_guy1_crash4 DELETE_CHAR cut_guy2_crash4 ENDIF SET_PED_DENSITY_MULTIPLIER 1.0 IF played_cut2_before_crash4 = 1 flag_watched_end_cut2_crash4 = 1 played_cut2_before_crash4 = 1 SKIP_CUTSCENE_END IF flag_watched_end_cut2_crash4 = 0 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS SET_PED_DENSITY_MULTIPLIER 1.0 IF created_cutscene_guys2_crash4 = 1 DELETE_CHAR cut_guy1_crash4 DELETE_CHAR cut_guy2_crash4 ENDIF ENDIF ENDIF played_cut2_before_crash4 = 1 //// ********************************************* CUT SCENE SHOWING ENEMY RUNNING AWAY *********************** SET_FIXED_CAMERA_POSITION 1914.1069 -1130.9935 27.8685 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1914.8413 -1130.3322 27.7162 JUMP_CUT //SWITCH_WIDESCREEN ON IF flag_end_guy_audio_crash4 = 0 LOAD_MISSION_AUDIO 1 SOUND_CRA2_ZA ELSE IF flag_end_guy_audio_crash4 = 1 LOAD_MISSION_AUDIO 1 SOUND_CRA2_ZB ELSE IF flag_end_guy_audio_crash4 = 2 LOAD_MISSION_AUDIO 1 SOUND_CRA2_ZC ENDIF ENDIF ENDIF WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE CLEAR_AREA 1922.439 -1118.043 25.125 10.0 FALSE CREATE_CHAR PEDTYPE_MISSION2 BALLAS2 1922.439 -1118.043 25.125 enemy_crash4 SET_CHAR_HEADING enemy_crash4 180.0 SET_CHAR_ONLY_DAMAGED_BY_PLAYER enemy_crash4 TRUE GIVE_WEAPON_TO_CHAR enemy_crash4 WEAPONTYPE_TEC9 30000 // Set to infinate ammo SET_CHAR_PROOFS enemy_crash4 TRUE TRUE TRUE TRUE TRUE SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN IF NOT IS_CHAR_DEAD enemy_crash4 TASK_GO_STRAIGHT_TO_COORD enemy_crash4 1922.328 -1127.938 24.078 PEDMOVE_RUN -1 ELSE enemy_dead_crash4 = 1 ENDIF WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD enemy_crash4 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH enemy_crash4 TRUE IF flag_end_guy_audio_crash4 = 0 PRINT_NOW (CRA2_ZA) 10000 1 //"That fucker Paulaski sold me out, die mofo!"" PLAY_MISSION_AUDIO 1 START_CHAR_FACIAL_TALK enemy_crash4 999999 ELSE IF flag_end_guy_audio_crash4 = 1 PRINT_NOW (CRA2_ZB) 10000 1 //"That fucker Paulaski sold me out, die mofo!"" PLAY_MISSION_AUDIO 1 START_CHAR_FACIAL_TALK enemy_crash4 999999 ELSE IF flag_end_guy_audio_crash4 = 2 PRINT_NOW (CRA2_ZC) 10000 1 //"That fucker Paulaski sold me out, die mofo!"" PLAY_MISSION_AUDIO 1 START_CHAR_FACIAL_TALK enemy_crash4 999999 ENDIF ENDIF ENDIF // PRINT_NOW (CM2_7) 8000 1 //"That fucker Paulaski sold me out, die mofo!" ELSE // CLEAR_THIS_PRINT (CM2_7) CLEAR_THIS_PRINT (CRA2_ZA) CLEAR_THIS_PRINT (CRA2_ZB) CLEAR_THIS_PRINT (CRA2_ZC) enemy_dead_crash4 = 1 ENDIF SKIP_CUTSCENE_START TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF enemy_dead_crash4 = 0 IF IS_CHAR_DEAD enemy_crash4 IF NOT HAS_MISSION_AUDIO_FINISHED 1 CLEAR_MISSION_AUDIO 1 ENDIF CLEAR_THIS_PRINT (CRA2_ZA) CLEAR_THIS_PRINT (CRA2_ZB) CLEAR_THIS_PRINT (CRA2_ZC) enemy_dead_crash4 = 1 ELSE IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_THIS_PRINT (CRA2_ZA) CLEAR_THIS_PRINT (CRA2_ZB) CLEAR_THIS_PRINT (CRA2_ZC) ENDIF ENDIF ENDIF ENDWHILE //CLEAR_THIS_PRINT (CM2_7) IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_THIS_PRINT (CRA2_ZA) CLEAR_THIS_PRINT (CRA2_ZB) CLEAR_THIS_PRINT (CRA2_ZC) ENDIF IF NOT IS_CHAR_DEAD enemy_crash4 STOP_CHAR_FACIAL_TALK enemy_crash4 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH enemy_crash4 FALSE ELSE enemy_dead_crash4 = 1 ENDIF MAKE_PLAYER_GANG_REAPPEAR SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SET_POLICE_IGNORE_PLAYER player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 OFF IF NOT IS_CHAR_DEAD enemy_crash4 SET_CHAR_DECISION_MAKER enemy_crash4 tough_decisionmaker_crash4 ADD_BLIP_FOR_CHAR enemy_crash4 enemy_blip_crash4 TASK_KILL_CHAR_ON_FOOT enemy_crash4 scplayer SET_CHAR_PROOFS enemy_crash4 FALSE FALSE FALSE FALSE FALSE ELSE REMOVE_BLIP enemy_blip_crash4 enemy_dead_crash4 = 1 ENDIF watched_baddie_cut_crash4 = 1 SKIP_CUTSCENE_END IF watched_baddie_cut_crash4 = 0 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE MAKE_PLAYER_GANG_REAPPEAR IF NOT IS_CHAR_DEAD enemy_crash4 CLEAR_AREA 1922.903 -1128.477 24.092 2.0 FALSE SET_CHAR_COORDINATES enemy_crash4 1922.903 -1128.477 24.092 SET_CHAR_HEADING enemy_crash4 180.0 STOP_CHAR_FACIAL_TALK enemy_crash4 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH enemy_crash4 FALSE ELSE enemy_dead_crash4 = 1 ENDIF SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON SET_POLICE_IGNORE_PLAYER player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 OFF IF NOT IS_CHAR_DEAD enemy_crash4 ADD_BLIP_FOR_CHAR enemy_crash4 enemy_blip_crash4 TASK_KILL_CHAR_ON_FOOT enemy_crash4 scplayer SET_CHAR_PROOFS enemy_crash4 FALSE FALSE FALSE FALSE FALSE ELSE REMOVE_BLIP enemy_blip_crash4 enemy_dead_crash4 = 1 ENDIF ENDIF ++ flag_end_guy_audio_crash4 IF flag_end_guy_audio_crash4 > 2 flag_end_guy_audio_crash4 = 0 ENDIF PRINT_NOW (CM2_8) 8000 1 //"You have flushed him out, kill him and take over the territory!" // waiting for the enemy guy to be dead WHILE NOT enemy_dead_crash4 = 1 WAIT 0 IF enemy_dead_crash4 = 0 IF IS_CHAR_DEAD enemy_crash4 CLEAR_THIS_PRINT (CM2_7) REMOVE_BLIP enemy_blip_crash4 enemy_dead_crash4 = 1 ENDIF ENDIF ENDWHILE GOTO mission_crash4_passed // **************************************** Mission crash4 failed ************************ mission_crash4_failed: SET_ZONE_GANG_STRENGTH GLN1 GANG_FLAT 40 SET_ZONE_GANG_STRENGTH GLN1 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH GLN1 GANG_NMEX stored_nmex_strength_crash4 SET_ZONE_GANG_STRENGTH GLN1 GANG_SMEX stored_smex_strength_crash4 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 PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" SET_GANG_WARS_ACTIVE FALSE flag_gang_war_active = 0 RETURN // **************************************** mission crash4 passed ************************* mission_crash4_passed: flag_sweet_mission_counter ++ REGISTER_MISSION_PASSED (CRASH_2) //Used in the stats PLAYER_MADE_PROGRESS 1 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 40 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 40 // ammount of respect CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 REMOVE_BLIP sweet_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip CREATE_PROTECTION_PICKUP 2502.10 -1686.38 13.0 10000 territory_cash territory_pickup START_NEW_SCRIPT territory_cash_loop 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 IF add_all_ammu_blips = 0 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!!!!!!!!! add_all_ammu_blips = 1 ENDIF RETURN // ********************************** mission cleanup ************************************ mission_cleanup_crash4: MARK_MODEL_AS_NO_LONGER_NEEDED Laejeffersalpha MARK_MODEL_AS_NO_LONGER_NEEDED LaeLODpark02 MARK_MODEL_AS_NO_LONGER_NEEDED Laemacpark02 SET_PED_DENSITY_MULTIPLIER 1.0 SET_ONLY_CREATE_GANG_MEMBERS FALSE flag_player_on_mission = 0 flag_on_doberman_mission = 0 REMOVE_BLIP area_blip_crash4 REMOVE_BLIP enemy_blip_crash4 REMOVE_BLIP weapon_pickup_blip_crash4 CAN_TRIGGER_GANG_WAR_WHEN_ON_A_MISSION FALSE GET_GAME_TIMER timer_mobile_start MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS2 MARK_MODEL_AS_NO_LONGER_NEEDED TEC9 MARK_MODEL_AS_NO_LONGER_NEEDED FAM2 MARK_MODEL_AS_NO_LONGER_NEEDED FAM3 REMOVE_ANIMATION GANGS REMOVE_ANIMATION SMOKING DELETE_OBJECT cigar_crash4 MARK_MODEL_AS_NO_LONGER_NEEDED cigar DELETE_CHAR cut_guy1_crash4 DELETE_CHAR cut_guy2_crash4 DELETE_CHAR cut_guy3_crash4 REMOVE_DECISION_MAKER tough_decisionmaker_crash4 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : Crash1 // AUTHOR : Keith // DESICRIPTION : Torch a building, then rescue lady trapped inside // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** { // ************************************************************************************************************* // GENERAL INITIALISATION - Every level requires this // ************************************************************************************************************* SCRIPT_NAME Crash1 // Global Variables VAR_INT g_Crash1_counterKM1 // Mission Start stuff GOSUB mission_start_Crash1 IF HAS_DEATHARREST_BEEN_EXECUTED AND m_nfailed = 0 GOSUB mission_failed_Crash1 ENDIF GOSUB mission_cleanup_Crash1 MISSION_END // Global Setup mission_start_Crash1: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 // general variables that are in every mission - DON'T DECLARE MISSION SPECIFIC VARIABLES HERE LVAR_INT m_stage LVAR_INT m_goals LVAR_INT m_passed LVAR_INT m_failed LVAR_INT m_quit LVAR_INT m_pause LVAR_INT m_status LVAR_INT m_frame_num LVAR_INT m_this_frame_time LVAR_INT m_last_frame_time LVAR_INT m_time_diff // commonly used timers LVAR_INT m_mission_timer // Debug variables LVAR_INT display_debug VAR_INT Crash1_view_debug[8] // GLOBAL (for output) LVAR_INT m_nfailed LVAR_INT crash1_armour m_stage = 0 m_goals = 0 m_passed = 0 m_failed = 0 m_quit = 0 m_pause = 0 m_status = 0 m_mission_timer = 0 display_debug = 0 TIMERA = 0 TIMERB = 0 m_nfailed = 0 // Consts CONST_INT CRASH1_GIRL_BURNS_TIME_ms 3000 CONST_INT CRASH1_INFINITE_AMMO 30000 CONST_INT CRASH1_PERSIST -2 // ...cash pickup IDs CONST_INT CRASH1_CASH_PICKUP_DOWNSTAIRS_BEDROOM 0 CONST_INT CRASH1_CASH_PICKUP_COOCHIE_BEDROOM 1 // ---------- CONST_INT CRASH1_MAX_CASH_PICKUPS 2 // The last value above + 1 // ...external fires CONST_INT CRASH1_EXTERIOR_FIRE_LIVING_ROOM 0 CONST_INT CRASH1_EXTERIOR_FIRE_BIG_BEDROOM 1 CONST_INT CRASH1_EXTERIOR_FIRE_EXTRA_ROOM 2 CONST_INT CRASH1_EXTERIOR_FIRE_SMALL_BEDROOM 3 CONST_INT CRASH1_EXTERIOR_FIRE_KITCHEN 4 CONST_INT CRASH1_EXTERIOR_FIRE_ALL 5 // Speech CONST_INT CRASH1_MAX_CONVERSATION_LINES 9 CONST_INT CRASH1_DELAY_BEFORE_NEXT_CONVERSATION_msec 120 // ...audio slot allocations CONST_INT CRASH1_TOTAL_AUDIO_SLOTS 2 // 3 available: generally 1 and 2 for speech; 3 for SFX CONST_INT CRASH1_AUDIO_SLOT_ARRAY_SIZE 3 // CRASH1_TOTAL_AUDIO_SLOTS+1 (slots numbered 1,2,3: so array pos0 wasted) CONST_INT CRASH1_FIRST_SPEECH_SLOT 1 CONST_INT CRASH1_LAST_SPEECH_SLOT 2 CONST_INT CRASH1_SFX_SLOT 3 // NOTE: Not using an engine similar to speech for this because only a few SFX // ...audio slot status CONST_INT CRASH1_AUDIO_SLOT_FREE 0 CONST_INT CRASH1_AUDIO_SLOT_LOADING 1 CONST_INT CRASH1_AUDIO_SLOT_LOADED 2 CONST_INT CRASH1_AUDIO_SLOT_PLAYING 3 // ...conversation status CONST_INT CRASH1_CONVERSATION_STATUS_NONE 0 CONST_INT CRASH1_CONVERSATION_STATUS_PREPARED 1 CONST_INT CRASH1_CONVERSATION_STATUS_PLAYING 2 CONST_INT CRASH1_CONVERSATION_STATUS_INTERRUPTED 3 CONST_INT CRASH1_CONVERSATION_STATUS_FINISHED 4 // ...speech conversations CONST_INT CRASH1_CONVERSATION_NONE 0 CONST_INT CRASH1_CONVERSATION_COOCHIE_SHOUTS 1 CONST_INT CRASH1_CONVERSATION_COOCHIE_SCREAMS 2 CONST_INT CRASH1_CONVERSATION_CARL_HELP 3 //CONST_INT CRASH1_CONVERSATION_INSIDE_GUY 4 CONST_INT CRASH1_CONVERSATION_NO_WAY_OUT 5 CONST_INT CRASH1_CONVERSATION_FIRE_EX 6 CONST_INT CRASH1_CONVERSATION_I_BE_BACK 7 CONST_INT CRASH1_CONVERSATION_OUTSIDE_ROOM 8 CONST_INT CRASH1_CONVERSATION_REACH_COOCHIE 9 CONST_INT CRASH1_CONVERSATION_BUILDING_COLLAPSE 10 CONST_INT CRASH1_CONVERSATION_PUT_OUT_FIRE 11 CONST_INT CRASH1_CONVERSATION_COOCHIE_HERO 12 CONST_INT CRASH1_CONVERSATION_DRIVE_COOCHIE_HOME 13 CONST_INT CRASH1_CONVERSATION_ON_RIDE_HOME 14 CONST_INT CRASH1_CONVERSATION_COOCHIE_HOUSE 15 CONST_INT CRASH1_CONVERSATION_COOCHIE_NAME 16 CONST_INT CRASH1_CONVERSATION_GO_OUT 17 CONST_INT CRASH1_CONVERSATION_CYA 18 // Audio variables LVAR_INT nSpeechCurrentSlot LVAR_INT nConversationStatus LVAR_INT nCurrentConversationID LVAR_INT nRequiredConversationID LVAR_INT nCurrentConversationLine LVAR_INT nCurrentMaxConversationLines LVAR_INT nNextPreloadConversationLine LVAR_INT bitsConversationsPlayed LVAR_INT timerDelayBeforeNextConversation LVAR_INT flagDisplaySpeechSubtitle LVAR_INT nAudioSlotStatus[CRASH1_AUDIO_SLOT_ARRAY_SIZE] LVAR_INT nConversationSequenceSpeechID[CRASH1_MAX_CONVERSATION_LINES] LVAR_TEXT_LABEL tlConversationSequenceSubtitle[CRASH1_MAX_CONVERSATION_LINES] // ...clear audio variables nSpeechCurrentSlot = CRASH1_FIRST_SPEECH_SLOT nConversationStatus = CRASH1_CONVERSATION_STATUS_NONE nCurrentConversationID = CRASH1_CONVERSATION_NONE nRequiredConversationID = CRASH1_CONVERSATION_NONE nCurrentConversationLine = -1 nCurrentMaxConversationLines = 0 nNextPreloadConversationLine = 0 timerDelayBeforeNextConversation = 0 bitsConversationsPlayed = CRASH1_CONVERSATION_NONE flagDisplaySpeechSubtitle = TRUE REPEAT CRASH1_AUDIO_SLOT_ARRAY_SIZE nLoop nAudioSlotStatus[nLoop] = CRASH1_AUDIO_SLOT_FREE ENDREPEAT // Mission Specific Variables // Integer Variables // chars LVAR_INT charGangOutside[5] LVAR_INT charGangBackup[2] LVAR_INT charGuyOnFire LVAR_INT charCoochie LVAR_INT charHouseCower LVAR_INT charHouseStairs // ...cars LVAR_INT carBeingWorkedOn LVAR_INT carGangBackup LVAR_INT carCopCar // ...objects LVAR_INT objectWindow[8] LVAR_INT objectTargetRoom[5] LVAR_INT objectFrontDoor LVAR_INT objectInteriorDoor[4] LVAR_INT objectWall[3] // ...blips LVAR_INT blipDestination LVAR_INT blipTargetRoom[5] LVAR_INT blipMolotovsOnRoute LVAR_INT blipMolotovPickups[2] LVAR_INT blipCoochie // ...pickups LVAR_INT pickupMolotovsOnRoute LVAR_INT pickupMolotovs[2] LVAR_INT pickupFireExtinguisher LVAR_INT pickupCash[CRASH1_MAX_CASH_PICKUPS] // ...fires LVAR_INT fireGuyOnFire LVAR_INT fireCoochie LVAR_INT fireHouseCower LVAR_INT fireHouseStairs LVAR_INT fireInHouse[21] LVAR_INT fireInHouseBig[4] // ...fx systems LVAR_INT fxFrontDoor LVAR_INT fxPlayerSmoke[9] LVAR_INT fxEntranceSmoke LVAR_INT fxCoochieWindowSmoke LVAR_INT fxDisguiseSmoke // ...decision makers LVAR_INT dmEmpty LVAR_INT dmTough // ...AI Status LVAR_INT aiGangOutside[5] LVAR_INT aiGangBackup LVAR_INT aiHouseGuyInCower LVAR_INT aiHouseGuyInStairs LVAR_INT aiCoochie // ...general status LVAR_INT statusFires LVAR_INT statusBigFires LVAR_INT statusWalls[3] LVAR_INT statusCoochieExitPath LVAR_INT statusSmoke // ...Timers LVAR_INT timerOrientate LVAR_INT timerGangBackup LVAR_INT timerCutscene LVAR_INT timerCoochieAnim LVAR_INT timerCoochieBurn LVAR_INT timerOutsideDelay LVAR_INT timerHelpText LVAR_INT timerTargetRoomHitText LVAR_INT timerAllowCoochieScreams LVAR_INT timerPreloadAudio LVAR_INT timerMoreMolotovsRequired // ...Counter LVAR_INT countTargetRoomsHit LVAR_INT countNextTempCutscenePosition // ...mission specific LVAR_INT nCurrentCoochieAnim LVAR_INT nCashPickupID // ...useful int variables LVAR_INT nLoop LVAR_INT nTempInt LVAR_INT nTempInt2 LVAR_INT nTempPed LVAR_INT nTempObject LVAR_INT nTempAmmo LVAR_INT nTempTimer LVAR_INT nSeqTask LVAR_INT nIgnore // Float Variables // ...area variables LVAR_FLOAT xloAreaHitTargetRoom[5] LVAR_FLOAT xhiAreaHitTargetRoom[5] LVAR_FLOAT yloAreaHitTargetRoom[5] LVAR_FLOAT yhiAreaHitTargetRoom[5] LVAR_FLOAT zloAreaHitTargetRoom[5] LVAR_FLOAT zhiAreaHitTargetRoom[5] // ...position variables LVAR_FLOAT xposGangBackup yposGangBackup zposGangBackup LVAR_FLOAT xposFireEx yposFireEx zposFireEx LVAR_FLOAT xposCoochieHome yposCoochieHome zposCoochieHome LVAR_FLOAT xposGangOutsideHold[5] yposGangOutsideHold[5] zposGangOutsideHold[5] LVAR_FLOAT xposGangBackupHold[2] yposGangBackupHold[2] zposGangBackupHold[2] // ...useful float variables LVAR_FLOAT xposTemp yposTemp zposTemp headTemp LVAR_FLOAT xposTemp2 yposTemp2 zposTemp2 LVAR_FLOAT xloTemp xhiTemp yloTemp yhiTemp zloTemp zhiTemp LVAR_FLOAT fTempFloat LVAR_FLOAT fTempDistance // Boolean Variables // ...flags LVAR_INT flagGangOutsidePlayerDetected LVAR_INT flagGangOutsideCallForHelp LVAR_INT flagGangOutsideInjuredOrDead LVAR_INT flagOrientate LVAR_INT flagHouseBurning LVAR_INT flagTargetRoomHit[5] LVAR_INT flagTargetRoomBurning[5] LVAR_INT flagMolotovsOnRouteActive LVAR_INT flagMolotovPickupsActive LVAR_INT flagInHouse LVAR_INT flagBeenInHouse LVAR_INT flagLeavingHouse LVAR_INT flagFireExtinguisherPickupActive LVAR_INT flagFireInHouseBigStillAlight[4] LVAR_INT flagWarpCoochieOutside LVAR_INT flagCheckingForCoochie LVAR_INT flagBlipAtTopOfStairs LVAR_INT flagPlayerInCar LVAR_INT flagCoochieHome LVAR_INT flagFireExHelpDisplayed LVAR_INT flagPotentialWalkThroughFire LVAR_INT flagEnterHouseCutscenePlaying LVAR_INT flagFireExtinguisherCutscenePlaying LVAR_INT flagKissingCutscenePlaying LVAR_INT flagProjectileAroundHouse LVAR_INT flagFireAroundHouse LVAR_INT flagCutsceneFrontDoorStuffDone LVAR_INT flagCutsceneGirlSmokeCreated LVAR_INT flagCoochieLeftBehind LVAR_INT flagCoochieBurnsCounterActive LVAR_INT flagDisplayGoBackMessage_WaitForStartFade LVAR_INT flagDisplayGoBackMessage_WaitForEndFade LVAR_INT flagGirlIsToast LVAR_INT flagAllowCoochieScreams LVAR_INT flagPrepareAndPlayPutOutFireSpeech LVAR_INT flagCashCreated[CRASH1_MAX_CASH_PICKUPS] LVAR_INT flagMoreMolotovsRequired LVAR_INT flagBedroomFireStillBlazing LVAR_INT flagClearFlamesAroundGirl LVAR_INT flagNearHouse LVAR_INT flagDisplayedMolotovHelpText LVAR_INT flagPlayOnlyCoochieLoopingAnim // ...useful flag variables LVAR_INT flagTempFlag LVAR_INT flagCutscenePlaying LVAR_INT flagCleaningUpSkippedCutscene LVAR_INT flagSkipCutscene // ...exists flags LVAR_INT existsGangOutside LVAR_INT existsCarBeingWorkedOn LVAR_INT existsGangBackup LVAR_INT existsGuyOnFire LVAR_INT existsCoochie LVAR_INT existsHouseGuysIn LVAR_INT existsWalls //...clear exists flags existsGangOutside = 0 existsCarBeingWorkedOn = 0 existsGangBackup = 0 existsGuyOnFire = 0 existsCoochie = 0 existsHouseGuysIn = 0 existsWalls = 0 // Clear timers timerOrientate = 0 // Clear important flags flagInHouse = FALSE flagBeenInHouse = FALSE flagLeavingHouse = FALSE flagCheckingForCoochie = FALSE flagWarpCoochieOutside = FALSE flagMolotovPickupsActive = FALSE flagFireExtinguisherPickupActive = FALSE flagPlayerInCar = FALSE flagCleaningUpSkippedCutscene = FALSE flagSkipCutscene = FALSE flagCoochieLeftBehind = FALSE flagGirlIsToast = FALSE flagPrepareAndPlayPutOutFireSpeech = FALSE flagMoreMolotovsRequired = FALSE flagBedroomFireStillBlazing = TRUE flagClearFlamesAroundGirl = TRUE flagNearHouse = FALSE flagDisplayedMolotovHelpText = FALSE flagPlayOnlyCoochieLoopingAnim = FALSE // Other stuff countNextTempCutscenePosition = 0 CREATE_PICKUP BODYARMOUR PICKUP_ONCE 2338.0 -1196.0 28.0 crash1_armour // ***** FAKE ENTITY CREATION TO FOOL THE COMPILER ***** // The compiler just needs to verify there is a CREATE_ before usage IF m_stage = -99 WRITE_DEBUG SHOULD_NEVER_BE_IN_FAKE_ENTITY_CREATION // Cars // ...car being worked on CREATE_CAR VOODOO 0.0 0.0 0.0 carBeingWorkedOn CREATE_CAR VOODOO 0.0 0.0 0.0 carGangBackup CREATE_CAR COPCARLA 0.0 0.0 0.0 carCopCar // Peds // ...gang outside REPEAT 5 nLoop CREATE_CHAR PEDTYPE_GANG_SMEX LSV3 0.0 0.0 0.0 charGangOutside[nLoop] ENDREPEAT // ...gang backup REPEAT 2 nLoop CREATE_CHAR PEDTYPE_GANG_SMEX LSV3 0.0 0.0 0.0 charGangBackup[nLoop] ENDREPEAT // ...guy on fire CREATE_CHAR PEDTYPE_GANG_SMEX LSV2 0.0 0.0 0.0 charGuyOnFire // ...coochie CREATE_CHAR PEDTYPE_CIVFEMALE GANGRL3 0.0 0.0 0.0 charCoochie // ...house guys on way in CREATE_CHAR PEDTYPE_GANG_SMEX LSV2 0.0 0.0 0.0 charHouseCower CREATE_CHAR PEDTYPE_GANG_SMEX LSV2 0.0 0.0 0.0 charHouseStairs // Objects // ...windows REPEAT 8 nLoop CREATE_OBJECT_NO_OFFSET bd_window 0.0 0.0 0.0 objectWindow[nLoop] ENDREPEAT // ...front door CREATE_OBJECT cr1_door 0.0 0.0 0.0 objectFrontDoor // ...walls CREATE_OBJECT BREAK_WALL_1B 0.0 0.0 0.0 objectWall[0] CREATE_OBJECT BREAK_WALL_2B 0.0 0.0 0.0 objectWall[1] CREATE_OBJECT BREAK_WALL_3B 0.0 0.0 0.0 objectWall[2] CREATE_OBJECT BD_FIRE1_O 0.0 0.0 0.0 objectWall[0] // Fires START_CHAR_FIRE charGuyOnFire fireGuyOnFire START_CHAR_FIRE charCoochie fireCoochie START_CHAR_FIRE charHouseCower fireHouseCower START_CHAR_FIRE charHouseStairs fireHouseStairs REPEAT 21 nLoop START_SCRIPT_FIRE 0.0 0.0 0.0 0 1 fireInHouse[nLoop] ENDREPEAT REPEAT 4 nLoop START_SCRIPT_FIRE 0.0 0.0 0.0 0 1 fireInHouseBig[nLoop] ENDREPEAT // Pickups CREATE_PICKUP_WITH_AMMO FIRE_EX PICKUP_ONCE 0 0.0 0.0 0.0 pickupFireExtinguisher CREATE_PICKUP_WITH_AMMO MOLOTOV PICKUP_ONCE 0 0.0 0.0 0.0 pickupMolotovsOnRoute // Blips ADD_BLIP_FOR_CHAR charCoochie blipCoochie ADD_BLIP_FOR_PICKUP pickupMolotovsOnRoute blipMolotovsOnRoute ENDIF // Mission Text LOAD_MISSION_TEXT CRASH1 // Intro Cutscene GOSUB Crash1_Intro_Cutscene // Load Char Mission Decision Makers LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY dmEmpty LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH dmTough // Mission Initialisation GOSUB Crash1_Initialisation // ************************************************************************************************************* // MISSION LOOP // ************************************************************************************************************* mission_loop_Crash1: WAIT 0 // Special shortcut for Craig F to test all missions in order IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S m_passed = 1 GOTO end_of_main_loop_Crash1 ENDIF // Debug Stuff GOSUB Crash1_Debug_Tools GOSUB Crash1_Debug_Shortcuts IF m_quit = 1 OR m_pause = 1 GOTO end_of_main_loop_Crash1 ENDIF // Housekeeping GOSUB Crash1_Frame_Counter GOSUB Crash1_Additional_Timers // Special conditions IF IS_CHAR_DEAD scplayer m_failed = 1 GOTO end_of_main_loop_Crash1 ENDIF // Mission Stage processing // *** INITIALISATION NOW TAKES PLACE BEFORE THE MAIN LOOP *** IF m_stage = 0 WRITE_DEBUG STAGE_SHOULD_NEVER_BE_0_IN_MAIN_LOOP ENDIF // ...Stage 1: Go to the House IF m_stage = 1 GOSUB Crash1_Stage_GoToHouse ENDIF // ...Stage 2: Torch the House IF m_stage = 2 GOSUB Crash1_Stage_TorchHouse ENDIF // ...Stage 3: Go into the House IF m_stage = 3 GOSUB Crash1_Stage_GoIntoHouse ENDIF // ...Stage 4: Reach the lady IF m_stage = 4 GOSUB Crash1_Stage_ReachTheLady ENDIF // ...Stage 5: Collapsing wall cutscene IF m_stage = 5 GOSUB Crash1_Stage_CollapsingWall ENDIF // ...Stage 6: Get the lady out IF m_stage = 6 GOSUB Crash1_Stage_GetTheLadyOut ENDIF // ...Stage 7: Take the Lady home IF m_stage = 7 GOSUB Crash1_Stage_TakeTheLadyHome ENDIF // ...final stage IF m_stage = 8 m_passed = 1 ENDIF // ...special 'walk out of house after mission failure' cutscene IF m_stage = 50 GOSUB Crash1_Stage_FailedInHouse ENDIF IF m_stage = 51 // ...quit to cleanup without displaying 'failed' text again m_quit = TRUE ENDIF // Continuous update methods and event checking // -------------------------------------------- // ...special timers GOSUB Crash1_UpdateTimer_OrientateTimer // ...special flags GOSUB Crash1_CheckIf_In_House // ...speech GOSUB Crash1_Update_Speech // End of Main Loop // ***** DON'T CHANGE ***** end_of_main_loop_Crash1: IF m_quit = 0 IF m_failed = 0 IF m_passed = 0 // Restart main loop GOTO mission_loop_Crash1 ELSE // Mission passed GOSUB mission_passed_Crash1 RETURN ENDIF ELSE // Mission failed GOSUB mission_failed_Crash1 // If the player is in the house then play the 'exit house' cutscene, otherwise just quit // NOTE: Also play the cutscene if the player is in the corridor behind the entry/exit IF flagInHouse = TRUE OR IS_CHAR_IN_AREA_3D scplayer 2350.4048 -1181.9069 26.8553 2353.4836 -1170.5240 30.0687 FALSE m_stage = 50 m_goals = 0 m_failed = FALSE GOTO mission_loop_Crash1 ENDIF RETURN ENDIF ELSE RETURN // quits out - goes to cleanup ENDIF RETURN // Should never reach here // ************************************************************************************************************* // MISSION STAGE GOSUBS // ************************************************************************************************************* // **************************************** // STAGE 1: Get to the House Crash1_Stage_GoToHouse: // Initialisation for this stage IF m_goals = 0 // INSTRUCTIONS: Go pick up some molotovs PRINT_NOW CRA1_00 15000 1 // Generate molotov pickups and blip GOSUB Crash1_Create_MolotovsOnRoute flagDisplayedMolotovHelpText = FALSE timerHelpText = 0 m_goals++ ENDIF // Arrival at the Molotov pickup point IF m_goals = 1 // Check if player has arrived at molotov pickup point IF HAS_PICKUP_BEEN_COLLECTED pickupMolotovsOnRoute REMOVE_BLIP blipMolotovsOnRoute flagDisplayedMolotovHelpText = FALSE timerHelpText = m_mission_timer +5000 m_goals++ ENDIF ENDIF // Cutscene? showing player being given molotovs // ***** THERE'S NOT GOING TO BE A CUTSCENE ***** IF m_goals = 2 m_goals++ ENDIF // Instructions for next stage IF m_goals = 3 // Instructions: Go to the gang house and torch it. PRINT_NOW CRA1_01 5000 1 // Display blip on Gang house ADD_BLIP_FOR_COORD 2351.9038 -1170.8260 28.5 blipDestination m_goals++ ENDIF // Place the outside guys and animate them IF m_goals = 4 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2350.1685 -1164.9385 300.0 300.0 FALSE GOSUB Crash1_Create_Car_Being_Worked_On GOSUB Crash1_Create_Outside_Gang_Members GOSUB Crash1_Create_Windows GOSUB Crash1_Create_Front_Door m_goals++ ENDIF ENDIF // Arrival at the House IF m_goals = 5 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2337.6660 -1180.9938 31.7513 38.1099 31.5599 8.7500 FALSE // Arrived at destination REMOVE_BLIP blipDestination // Make sure there are no Peds or cars to interfere SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 flagNearHouse = TRUE // Stage complete m_goals = 99 ENDIF ENDIF // Continuous updates // ------------------ // Display molotov help IF flagDisplayedMolotovHelpText = FALSE IF NOT timerHelpText = 0 IF timerHelpText < m_mission_timer PRINT_HELP_FOREVER MOLOTOV // Press and hold ~m~~widget_explicit_throw~ to throw a molotov. The longer you hold ~m~~widget_explicit_throw~, the farther you throw it. Be careful! If you don't throw it far enough you'll get caught in the blast. flagDisplayedMolotovHelpText = TRUE ENDIF ENDIF ENDIF // exit IF m_goals = 99 GOSUB Crash1_next_stage ENDIF RETURN // **************************************** // STAGE 2: Torch the house Crash1_Stage_TorchHouse: // Initialisation for this stage IF m_goals = 0 flagGangOutsidePlayerDetected = 0 flagGangOutsideCallForHelp = 0 flagGangOutsideInjuredOrDead = 0 flagOrientate = 0 flagHouseBurning = 0 flagMolotovPickupsActive = 0 flagProjectileAroundHouse = 0 flagFireAroundHouse = 0 countTargetRoomsHit = 0 aiGangBackup = -1 timerTargetRoomHitText = 0 // Set up the Target Rooms stuff GOSUB Crash1_Setup_Target_Rooms GOSUB Crash1_Setup_Target_Room_Hit_Areas // Switch off emergency services SWITCH_EMERGENCY_SERVICES OFF // Slow down the wanted multipler SET_WANTED_MULTIPLIER 0.3 // Make sure the fires don't spread too much SET_MAX_FIRE_GENERATIONS 1 m_goals++ ENDIF // Help text explaining breaking the windows and molotov use IF m_goals = 1 // Instructions: Torch the House PRINT_NOW CRA1_02 6000 1 timerHelpText = m_mission_timer + 7000 m_goals++ CHECKPOINT_SAVE 99 ENDIF // Check if it is time to display help text for how to break windows IF m_goals = 2 REPEAT 5 nLoop nTempObject = nLoop GOSUB Crash1_Update_Target_Rooms_Hit ENDREPEAT IF timerHelpText < m_mission_timer PRINT_HELP WINDOWS m_goals++ ENDIF ENDIF // Check if all rooms of house are torched IF m_goals = 3 REPEAT 5 nLoop nTempObject = nLoop GOSUB Crash1_Update_Target_Rooms_Hit ENDREPEAT // If all rooms hit, goto next stage IF countTargetRoomsHit = 5 // Display a message saying house on fire PRINT_NOW CRA1_04 3000 1 m_goals = 99 ENDIF ENDIF // Continuous Updates // ...GangOutside's AI REPEAT 5 nLoop nTempPed = nLoop GOSUB Crash1_Update_GangOutside_AI ENDREPEAT // ...molotov pickups IF flagMolotovPickupsActive = 1 // ...molotov pickups are active, so check if they have been picked up GOSUB Crash1_CheckIf_Molotov_Pickups_Collected ELSE // ...molotov pickups are not active, so check if they should be created GOSUB Crash1_CheckIf_Molotov_Pickups_Required ENDIF // ...GangBackup GOSUB Crash1_Update_GangBackup // Target Rooms Hit Timer IF NOT timerTargetRoomHitText = 0 IF timerTargetRoomHitText < m_mission_timer // Reset the timer to ensure this doesn't get entered again until next window timerTargetRoomHitText = 0 // Recalculate number of rooms hit nTempInt = 0 REPEAT 5 nLoop IF flagTargetRoomHit[nLoop] = 1 nTempInt++ ENDIF ENDREPEAT // PROBABLY OVERKILL: Unlikely to happen in practice, but just in case... // Make sure two rooms haven't been torched in very quick succession // IF they have, then display the message twice but ensure that the // countTargetRoomsHit flag increases only by 1 each time because // some events are triggered when countTargetRoomsHit reach a certain // amount countTargetRoomsHit++ IF NOT nTempInt = countTargetRoomsHit // ...problem somewhere IF nTempInt < countTargetRoomsHit // if nTempInt is less than the counter, then make the counter = nTempInt // because nTempInt has just been re-calculated using the latest data // NOTE: It should NEVER get in here, but just in case countTargetRoomsHit = nTempInt ELSE // if nTempInt is greater than the counter then more than one window has been // smashed in ultra quick succession, so restart the timer for the next // window // NOTE: Highly unlikely to ever get in here, but just in case timerTargetRoomHitText = m_mission_timer + 500 ENDIF ENDIF // Print target room hit text IF countTargetRoomsHit < 5 GOSUB Crash1_Print_Random_RoomHit_Text ENDIF // Start the scripted fires in this room flagTempFlag = FALSE REPEAT 5 nLoop IF flagTempFlag = FALSE IF flagTargetRoomHit[nLoop] = TRUE AND flagTargetRoomBurning[nLoop] = FALSE statusFires = nLoop GOSUB Crash1_Update_Fires_Exterior flagTargetRoomBurning[nLoop] = TRUE flagTempFlag = TRUE ENDIF ENDIF ENDREPEAT ENDIF ENDIF // If player not detected. check for a projectile or a fire in the area IF flagGangOutsidePlayerDetected = 0 xloTemp = 2337.6660 - 31.000 yloTemp = -1180.9938 - 38.000 zloTemp = 31.7513 - 8.000 xhiTemp = 2337.6660 + 31.000 yhiTemp = -1180.9938 + 38.000 zhiTemp = 31.7513 + 8.000 // ...check for projectile in area IF flagProjectileAroundHouse = 0 IF IS_PROJECTILE_IN_AREA xloTemp yloTemp zloTemp xhiTemp yhiTemp zhiTemp flagProjectileAroundHouse = 1 ENDIF ENDIF IF flagFireAroundHouse = 0 GET_NUMBER_OF_FIRES_IN_AREA xloTemp yloTemp zloTemp xhiTemp yhiTemp zhiTemp nTempInt IF nTempInt > 0 flagFireAroundHouse = 1 ENDIF ENDIF ENDIF // If the player moves a distance away from the house, restart the traffix and the peds IF flagNearHouse = TRUE // ...currently near the house IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2337.6660 -1180.9938 31.7513 48.1099 41.5599 18.7500 FALSE // ...away from house again SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 flagNearHouse = FALSE ENDIF ELSE // ...not currently near the house IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2337.6660 -1180.9938 31.7513 38.1099 31.5599 8.7500 FALSE // ...near house again SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 flagNearHouse = TRUE ENDIF ENDIF // exit IF m_goals = 99 GOSUB Crash1_next_stage ENDIF RETURN // **************************************** // STAGE 3: Go into the house Crash1_Stage_GoIntoHouse: // Initialisation for this stage IF m_goals = 0 // Display the fires statusFires = CRASH1_EXTERIOR_FIRE_ALL GOSUB Crash1_Update_Fires_Exterior // Activate the big fire in the girl's room statusBigFires = 0 GOSUB Crash1_Update_Big_Fires timerCutscene = m_mission_timer + 3000 flagEnterHouseCutscenePlaying = 0 flagCutsceneFrontDoorStuffDone = 0 flagCutsceneGirlSmokeCreated = 0 flagCutscenePlaying = 0 flagCleaningUpSkippedCutscene = 0 flagSkipCutscene = 0 flagCoochieBurnsCounterActive = FALSE flagClearFlamesAroundGirl = TRUE timerAllowCoochieScreams = 0 // Switch off the wanted multipler SET_WANTED_MULTIPLIER 0.0 CLEAR_WANTED_LEVEL player1 // Load the door break audio LOAD_MISSION_AUDIO CRASH1_SFX_SLOT SOUND_WOODEN_DOOR_BREACH m_goals++ ENDIF // Failure Conditions // ------------------ // Check if coochie dead IF existsCoochie = TRUE IF IS_CHAR_DEAD charCoochie m_failed = 1 RETURN ENDIF ENDIF // Pause before fade out IF m_goals = 1 IF timerCutscene < m_mission_timer DO_FADE 400 FADE_OUT SET_PLAYER_CONTROL player1 OFF timerCutscene = m_mission_timer + 2500 GOSUB Crash1_Create_Guy_On_Fire GOSUB Crash1_Create_Coochie flagAllowCoochieScreams = FALSE // Prepare the Coochie speech for the cutscene nRequiredConversationID = CRASH1_CONVERSATION_COOCHIE_SHOUTS GOSUB Crash1_Conversation_Command_Prepare m_goals++ ENDIF ENDIF // Pause before fade in IF m_goals = 2 IF flagSkipCutscene = 1 m_goals++ ELSE IF timerCutscene < m_mission_timer GOSUB Crash1_Enter_House_Cutscene_Begin flagEnterHouseCutscenePlaying = 1 flagCutscenePlaying = 1 m_goals++ ENDIF ENDIF ENDIF // Pause, then trigger guy on fire running out of house IF m_goals = 3 IF flagSkipCutscene = 1 m_goals++ ELSE IF timerCutscene < m_mission_timer AND HAS_MISSION_AUDIO_LOADED CRASH1_SFX_SLOT GOSUB Crash1_Enter_House_Cutscene_Guy_On_Fire m_goals++ ENDIF ENDIF ENDIF // Wait for guy to die (but ensure the cut lasts a certain time), then continue with cutscene IF m_goals = 4 IF flagSkipCutscene = 1 m_goals++ ELSE IF IS_CHAR_DEAD charGuyOnFire AND timerCutscene < m_mission_timer GOSUB Crash1_Enter_House_Cutscene_Coochie m_goals++ ENDIF // The guy is refusing to die, so wait a bit longer before continuing nTempTimer = timerCutscene + 8000 IF NOT IS_CHAR_DEAD charGuyOnFire AND nTempTimer < m_mission_timer GOSUB Crash1_Enter_House_Cutscene_Coochie m_goals++ ENDIF ENDIF ENDIF // Wait briefly before shattering the window IF m_goals = 5 IF flagSkipCutscene = 1 m_goals++ ELSE IF timerCutscene < m_mission_timer IF DOES_OBJECT_EXIST objectWindow[5] //girls window IF NOT HAS_OBJECT_BEEN_DAMAGED objectWindow[5] BREAK_OBJECT objectWindow[5] TRUE ENDIF ENDIF // Create Coochie Window smoke statusSmoke = 4 GOSUB Crash1_Update_Smoke flagCutsceneGirlSmokeCreated = 1 // Trigger the girl's speech // In this instance, overwrite the speech subtitle with the info text below flagDisplaySpeechSubtitle = FALSE GOSUB Crash1_Conversation_Command_Play // Info:You've trapped a girl PRINT_NOW CRA1_05 4600 1 timerCutscene = m_mission_timer + 4300 m_goals++ ENDIF ENDIF ENDIF // Need to let the cutscene fade out to hide the guys being teleported back into position IF m_goals = 6 IF flagSkipCutscene = 1 m_goals++ ELSE IF timerCutscene < m_mission_timer DO_FADE 300 FADE_OUT timerCutscene = m_mission_timer + 1000 // Move the Gang Outside and Gang Backup guys back to their original positions GOSUB Crash1_GangOutside_Move_Back_After_Cutscene GOSUB Crash1_GangBackup_Move_Back_After_Cutscene m_goals++ ENDIF ENDIF ENDIF // Show Coochie for a short period of time then quit the cutscene IF m_goals = 7 IF flagSkipCutscene = 1 m_goals++ ELSE IF timerCutscene < m_mission_timer GOSUB Crash1_Enter_House_Cutscene_Quit // Add a blip at the front door xposTemp = 2352.0371 yposTemp = -1170.3175 zposTemp = 26.9702 ADD_BLIP_FOR_COORD xposTemp yposTemp zposTemp blipDestination // Remove big fire at Front Door statusBigFires = 2 GOSUB Crash1_Update_Big_Fires DO_FADE 200 FADE_IN timerCutscene = m_mission_timer + 200 m_goals++ ENDIF ENDIF ENDIF // Check if the fade in has completed IF m_goals = 8 IF flagSkipCutscene = 1 m_goals = 50 ELSE IF timerCutscene < m_mission_timer flagEnterHouseCutscenePlaying = 0 flagCutscenePlaying = 0 SET_PLAYER_CONTROL player1 ON GOSUB Crash1_Activate_Coochie_Burns_Counter // NOTE: The above gosub triggers a 5000msec message followed by the 4000msec message below = 9000msec timerAllowCoochieScreams = m_mission_timer + 9000 // Enter the house PRINT CRA1_06 4000 1 m_goals++ ENDIF ENDIF ENDIF // Wait for the player to enter the house IF m_goals = 9 IF flagInHouse = 1 // Remove blip at front door and add it on girl REMOVE_BLIP blipDestination // Don't allow Coochie to scream and shout any more flagAllowCoochieScreams = FALSE timerAllowCoochieScreams = 0 IF NOT IS_CHAR_DEAD charCoochie // Interior now 1000m up in the air, so move Coochie // Indicates that the character was created in an interior SET_CHAR_HAS_USED_ENTRY_EXIT charCoochie 2352.1143 -1170.6102 8.0 // NOTE: She ends up a meter too high for some reason, so take this into account GET_CHAR_COORDINATES charCoochie xposTemp yposTemp zposTemp zposTemp += 999.0 SET_CHAR_COORDINATES charCoochie xposTemp yposTemp zposTemp ADD_BLIP_FOR_CHAR charCoochie blipCoochie SET_BLIP_AS_FRIENDLY blipCoochie TRUE ENDIF REMOVE_SCRIPT_FIRE fireGuyOnFire // Move the Girl's Bedroom fire to the doorway statusBigFires = 4 GOSUB Crash1_Update_Big_Fires // Move the entrance smoke so it doesn't obsure the view a sthe player leaves statusSmoke = 6 GOSUB Crash1_Update_Smoke // Create stuff only when the player is in the house (to avoid them being seen when you torch a room) GOSUB Crash1_Setup_Fire_Extinguisher GOSUB Crash1_Create_Interior_Doors GOSUB Crash1_Create_Walls m_goals = 99 ELSE // ...not in house so keep the action going // Update GangOutside's AI REPEAT 5 nLoop nTempPed = nLoop GOSUB Crash1_Update_GangOutside_AI ENDREPEAT // Update GangBackup GOSUB Crash1_Update_GangBackup ENDIF ENDIF // Skipped Cutscene stuff // ---------------------- // Check if the cutscene was skipped // NOTE: Should never enter here unless skipped IF flagCutscenePlaying = 1 IF flagSkipCutscene = 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flagSkipCutscene = 1 ENDIF ENDIF ENDIF // fade out IF m_goals = 50 DO_FADE 500 FADE_OUT timerCutscene = m_mission_timer + 500 flagCleaningUpSkippedCutscene = 1 m_goals++ ENDIF // Clean up the skipped cutscene IF m_goals = 51 IF timerCutscene < m_mission_timer GOSUB Crash1_Cutscene_Skipped_EnterHouse DO_FADE 1500 FADE_IN timerCutscene = m_mission_timer + 1500 m_goals++ ENDIF ENDIF // Resume normal service IF m_goals = 52 IF timerCutscene < m_mission_timer flagCleaningUpSkippedCutscene = 0 flagSkipCutscene = 0 flagEnterHouseCutscenePlaying = 0 flagCutscenePlaying = 0 SET_PLAYER_CONTROL player1 ON GOSUB Crash1_Activate_Coochie_Burns_Counter // NOTE: The above gosub triggers a 5000msec message followed by the 4000msec message below = 9000msec timerAllowCoochieScreams = m_mission_timer + 9000 // Enter the house PRINT CRA1_06 4000 1 m_goals = 9 ENDIF ENDIF // Continuous Updates // ------------------- GOSUB Crash1_Update_Coochie_Panic_Anims // ...GangOutside's AI IF flagCleaningUpSkippedCutscene = 0 REPEAT 5 nLoop nTempPed = nLoop GOSUB Crash1_Update_GangOutside_AI ENDREPEAT ENDIF // ...GangBackup IF flagCleaningUpSkippedCutscene = 0 GOSUB Crash1_Update_GangBackup ENDIF // Coochie Burns Timer IF flagCoochieBurnsCounterActive = TRUE GOSUB Crash1_Update_Coochie_Burn_Time ENDIF // Allow Coochie Screams timer IF timerAllowCoochieScreams > 0 IF timerAllowCoochieScreams < m_mission_timer timerAllowCoochieScreams = 0 flagAllowCoochieScreams = TRUE ENDIF ENDIF // Continuously clear the area around the girl IF flagClearFlamesAroundGirl = TRUE CLEAR_AREA 2345.9072 -1171.6591 30.9688 1.5 FALSE CLEAR_AREA 2345.9072 -1171.6591 1030.9688 1.5 FALSE ENDIF // Check if the player should issue 'encouragement' speech IF NOT IS_BIT_SET bitsConversationsPlayed CRASH1_CONVERSATION_CARL_HELP AND flagAllowCoochieScreams = TRUE IF IS_CHAR_IN_AREA_3D scplayer 2340.2625 -1170.5386 24.9859 2351.0952 -1164.2870 28.2183 FALSE // Make sure the girl isn't issuing speech IF nCurrentConversationID = CRASH1_CONVERSATION_COOCHIE_SCREAMS OR nCurrentConversationID = CRASH1_CONVERSATION_COOCHIE_SHOUTS // ...the girl is issuing screams, so check if they are being played IF nConversationStatus = CRASH1_CONVERSATION_STATUS_PLAYING // ...they are being played, so don't interrupt RETURN ENDIF // The screams must only be prepared, so cancel them GOSUB Crash1_Conversation_Command_Cancel ENDIF // Prepare or play Carl's speech IF nCurrentConversationID = CRASH1_CONVERSATION_NONE // ...prepare the speech nRequiredConversationID = CRASH1_CONVERSATION_CARL_HELP GOSUB Crash1_Conversation_Command_Prepare RETURN ENDIF IF nCurrentConversationID = CRASH1_CONVERSATION_CARL_HELP AND NOT nConversationStatus = CRASH1_CONVERSATION_STATUS_PLAYING // ...play the speech GOSUB Crash1_Conversation_Command_Play ENDIF ENDIF ENDIF // If the player moves a distance away from the house, restart the traffix and the peds IF flagNearHouse = TRUE // ...currently near the house IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2337.6660 -1180.9938 31.7513 48.1099 41.5599 18.7500 FALSE // ...away from house again SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 flagNearHouse = FALSE ENDIF ELSE // ...not currently near the house IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2337.6660 -1180.9938 31.7513 38.1099 31.5599 8.7500 FALSE // ...near house again SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 flagNearHouse = TRUE ENDIF ENDIF // exit IF m_goals = 99 GOSUB Crash1_next_stage ENDIF RETURN // **************************************** // STAGE 4: Reach the Lady Crash1_Stage_ReachTheLady: // Initialisation for this stage IF m_goals = 0 // Create House Guys for way in GOSUB Crash1_Create_HouseGuys_In flagFireExHelpDisplayed = 0 flagFireExtinguisherCutscenePlaying = 0 flagCutscenePlaying = 0 flagCleaningUpSkippedCutscene = 0 flagSkipCutscene = 0 flagDisplayGoBackMessage_WaitForStartFade = FALSE flagDisplayGoBackMessage_WaitForEndFade = FALSE flagPlayOnlyCoochieLoopingAnim = FALSE aiCoochie = -1 // Don't need the ammo boxes any more MARK_MODEL_AS_NO_LONGER_NEEDED CR_AMMOBOX m_goals++ ENDIF // Check if coochie dead IF IS_CHAR_DEAD charCoochie m_failed = 1 RETURN ENDIF // Code within this goal removed, so just move on to the next goal IF m_goals = 1 m_goals++ ENDIF // Check if player outside Coochie Room IF m_goals = 2 xloTemp = 2344.7510 - 1.5000 yloTemp = -1181.1611 - 1.5000 zloTemp = 1030.9610 - 0.5000 xhiTemp = 2344.7510 + 1.5000 yhiTemp = -1181.1611 + 1.5000 zhiTemp = 1030.9610 + 1.5000 IF IS_CHAR_IN_AREA_3D scplayer xloTemp yloTemp zloTemp xhiTemp yhiTemp zhiTemp FALSE // Remove blip from girl and place on extinguisher // NOTE: If the fire extinguisher has been collected this will immediately be cleared up REMOVE_BLIP blipCoochie // Stop clearing the flames around Coochie and remove her flame proofs, just in case the player molotovs her flagClearFlamesAroundGirl = FALSE SET_CHAR_PROOFS charCoochie FALSE FALSE FALSE FALSE FALSE // From now on, only play the Coochie looping anim flagPlayOnlyCoochieLoopingAnim = TRUE // Initiate cutscene if fire extinguisher not collected IF NOT HAS_PICKUP_BEEN_COLLECTED pickupFireExtinguisher DO_FADE 500 FADE_OUT timerCutscene = m_mission_timer + 550 SET_PLAYER_CONTROL player1 OFF // Make Coochie face the player and stand on the floor headTemp = 180.0000 SET_CHAR_HEADING charCoochie headTemp GET_CHAR_COORDINATES charCoochie xposTemp yposTemp zposTemp zposTemp = 1030.9688 SET_CHAR_COORDINATES charCoochie xposTemp yposTemp zposTemp // Stop Coochie playing anims nCurrentCoochieAnim = 99 timerCoochieAnim = 0 flagFireExtinguisherCutscenePlaying = 1 flagCutscenePlaying = 1 // Prepare the 'No Way Out' speech GOSUB Crash1_Conversation_Command_Cancel nRequiredConversationID = CRASH1_CONVERSATION_NO_WAY_OUT GOSUB Crash1_Conversation_Command_Prepare m_goals++ ELSE m_goals = 10 ENDIF ENDIF ENDIF // Check if Fade_Out has finished IF m_goals = 3 IF flagSkipCutscene = 1 m_goals++ ELSE IF NOT nCurrentConversationID = CRASH1_CONVERSATION_NO_WAY_OUT nRequiredConversationID = CRASH1_CONVERSATION_NO_WAY_OUT GOSUB Crash1_Conversation_Command_Prepare ENDIF IF timerCutscene < m_mission_timer ADD_BLIP_FOR_PICKUP pickupFireExtinguisher blipDestination SET_BLIP_ENTRY_EXIT blipDestination 2352.1143 -1170.6102 3.0 GOSUB Crash1_Cutscene_Get_Fire_Extinguisher DO_FADE 500 FADE_IN timerCutscene = m_mission_timer + 550 m_goals++ ENDIF ENDIF ENDIF // Check if Fade_In has finished IF m_goals = 4 IF flagSkipCutscene = 1 m_goals++ ELSE IF NOT nCurrentConversationID = CRASH1_CONVERSATION_NO_WAY_OUT nRequiredConversationID = CRASH1_CONVERSATION_NO_WAY_OUT GOSUB Crash1_Conversation_Command_Prepare ENDIF IF timerCutscene < m_mission_timer AND nCurrentConversationID = CRASH1_CONVERSATION_NO_WAY_OUT // Play the 'No Way Out' speech GOSUB Crash1_Conversation_Command_Play m_goals++ ENDIF ENDIF ENDIF // Check for the 'No Way Out' speech being finished IF m_goals = 5 IF flagSkipCutscene = 1 m_goals++ ELSE IF IS_BIT_SET bitsConversationsPlayed CRASH1_CONVERSATION_NO_WAY_OUT m_goals++ ENDIF ENDIF ENDIF // Prepare the 'Fire Ex' speech and wait for it to be prepared IF m_goals = 6 IF flagSkipCutscene = 1 m_goals++ ELSE IF NOT nCurrentConversationID = CRASH1_CONVERSATION_FIRE_EX // Prepare the 'Fire Extinguisher' cutscene speech nRequiredConversationID = CRASH1_CONVERSATION_FIRE_EX GOSUB Crash1_Conversation_Command_Prepare ELSE m_goals++ ENDIF ENDIF ENDIF // Jump to 'fire extinguisher' cut IF m_goals = 7 IF flagSkipCutscene = 1 m_goals++ ELSE // Jump to fire extinguisher cut SET_FIXED_CAMERA_POSITION 2329.6804 -1172.0250 1030.1374 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2328.8677 -1172.5338 1029.8537 JUMP_CUT // Play 'Fire-Ex' speech GOSUB Crash1_Conversation_Command_Play m_goals++ ENDIF ENDIF // Check if Lady has finished talking IF m_goals = 8 IF flagSkipCutscene = 1 m_goals = 50 ELSE IF IS_BIT_SET bitsConversationsPlayed CRASH1_CONVERSATION_FIRE_EX // Give player back control and allow Coochie Anims again SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT flagFireExtinguisherCutscenePlaying = 0 flagCutscenePlaying = 0 m_goals++ ENDIF ENDIF ENDIF // Prepare and play the 'I'll Be Back' speech IF m_goals = 9 nRequiredConversationID = CRASH1_CONVERSATION_I_BE_BACK GOSUB Crash1_Conversation_Command_Prepare IF nCurrentConversationID = CRASH1_CONVERSATION_I_BE_BACK GOSUB Crash1_Conversation_Command_Play m_goals++ ENDIF ENDIF // Check for player with extinguisher IF m_goals = 10 IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_EXTINGUISHER // Remove blip on fire extinguisher and add it on girl REMOVE_BLIP blipDestination IF NOT IS_CHAR_DEAD charCoochie ADD_BLIP_FOR_CHAR charCoochie blipCoochie SET_BLIP_AS_FRIENDLY blipCoochie TRUE ENDIF // Prepare the 'outside room' speech GOSUB Crash1_Conversation_Command_Cancel nRequiredConversationID = CRASH1_CONVERSATION_OUTSIDE_ROOM GOSUB Crash1_Conversation_Command_Prepare m_goals++ ENDIF ENDIF // Check if player outside Coochie Room with fire extinguisher IF m_goals = 11 xloTemp = 2344.7510 - 1.5000 yloTemp = -1181.1611 - 1.5000 zloTemp = 1030.9610 - 0.5000 xhiTemp = 2344.7510 + 1.5000 yhiTemp = -1181.1611 + 1.5000 zhiTemp = 1030.9610 + 1.5000 IF IS_CHAR_IN_AREA_3D scplayer xloTemp yloTemp zloTemp xhiTemp yhiTemp zhiTemp FALSE IF NOT nCurrentConversationID = CRASH1_CONVERSATION_OUTSIDE_ROOM nRequiredConversationID = CRASH1_CONVERSATION_OUTSIDE_ROOM GOSUB Crash1_Conversation_Command_Prepare ENDIF IF nCurrentConversationID = CRASH1_CONVERSATION_OUTSIDE_ROOM // Instructions: Put out the fire GOSUB Crash1_Conversation_Command_Play // Make Coochie face the player and stand on the floor headTemp = 180.0000 SET_CHAR_HEADING charCoochie headTemp GET_CHAR_COORDINATES charCoochie xposTemp yposTemp zposTemp zposTemp = 1030.9688 SET_CHAR_COORDINATES charCoochie xposTemp yposTemp zposTemp // Timer for when help text should be displayed timerCutscene = m_mission_timer + 3000 // Stop Coochie playing anims nCurrentCoochieAnim = 99 m_goals++ ENDIF ENDIF ENDIF // Get to Coochie IF m_goals = 12 IF timerCutscene > 0 IF timerCutscene < m_mission_timer timerCutscene = 0 PRINT_HELP CRA1_35 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer charCoochie 6.0 6.0 1.0 0 // Give Coochie full health again SET_CHAR_HEALTH charCoochie 100 m_goals = 99 ENDIF ENDIF // Skipped Cutscene stuff // ---------------------- // Check if the cutscene was skipped // NOTE: Should never enter here unless skipped IF flagCutscenePlaying = 1 AND flagSkipCutscene = 0 // Cutscene was skipped IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flagSkipCutscene = 1 ENDIF ENDIF // Restore camera if cutscene skipped IF m_goals = 50 // Give player back control and allow Coochie Anims again SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT nCurrentCoochieAnim = 0 flagCleaningUpSkippedCutscene = 0 flagSkipCutscene = 0 flagFireExtinguisherCutscenePlaying = 0 flagCutscenePlaying = 0 m_goals = 10 ENDIF // Continuous Updates // ------------------ GOSUB Crash1_Update_Coochie_Panic_Anims GOSUB Crash1_Update_Coochie_Burn_Time // GOSUB Crash1_Update_HouseGuyIn_Cowering // GOSUB Crash1_Update_HouseGuyIn_Stairs // Check if Player Left House IF flagInHouse = 0 AND flagBeenInHouse = 1 // Player is outside, tell him to go back in flagDisplayGoBackMessage_WaitForStartFade = TRUE flagBeenInHouse = 0 ENDIF // Display the 'go back for girl' message? (Wait for start fade) IF flagDisplayGoBackMessage_WaitForStartFade = TRUE IF GET_FADING_STATUS flagDisplayGoBackMessage_WaitForStartFade = FALSE flagDisplayGoBackMessage_WaitForEndFade = TRUE ENDIF ENDIF // Display the 'go back for girl' message? (Wait for Fade out) IF flagDisplayGoBackMessage_WaitForEndFade = TRUE IF NOT GET_FADING_STATUS flagDisplayGoBackMessage_WaitForEndFade = FALSE // Instructions: Go back for girl PRINT_NOW CRA1_10 5000 1 ENDIF ENDIF // Continuously clear the area around the fire extinguisher pickup CLEAR_AREA xposFireEx yposFireEx zposFireEx 3.0 FALSE // When the fire extinguisher is picked up, display the help IF flagFireExHelpDisplayed = 0 IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_EXTINGUISHER flagFireExHelpDisplayed = 1 // Go upstairs and rescue the girl PRINT_NOW CRA1_09 4000 1 PRINT_HELP FIRE_EX // Press and hold ~m~~widget_explicit_extinguisher~ to use the fire extinguisher. Aim at the base of a fire to put it out. ENDIF ENDIF // Continuously clear the area around the girl IF flagClearFlamesAroundGirl = TRUE CLEAR_AREA 2345.9072 -1171.6591 30.9688 1.5 FALSE CLEAR_AREA 2345.9072 -1171.6591 1030.9688 1.5 FALSE ENDIF // If the player moves a distance away from the house, restart the traffic and the peds IF flagInHouse = FALSE IF flagNearHouse = TRUE // ...currently near the house IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2337.6660 -1180.9938 31.7513 48.1099 41.5599 18.7500 FALSE // ...away from house again SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 flagNearHouse = FALSE ENDIF ELSE // ...not currently near the house IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2337.6660 -1180.9938 31.7513 38.1099 31.5599 8.7500 FALSE // ...near house again SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 flagNearHouse = TRUE ENDIF ENDIF ENDIF // exit IF m_goals = 99 GOSUB Crash1_next_stage ENDIF RETURN // **************************************** // STAGE 5: Collapsing Wall cutscene Crash1_Stage_CollapsingWall: // Initialisation // -------------- IF m_goals = 0 // Check if the big fire at the girl's door is still blazing flagBedroomFireStillBlazing = TRUE IF IS_SCRIPT_FIRE_EXTINGUISHED fireInHouseBig[0] flagBedroomFireStillBlazing = FALSE ENDIF // Switch off player control SET_PLAYER_CONTROL player1 OFF // Cleanup earlier parts of the mission // GOSUB Crash1_Burn_HouseGuysIn GOSUB Crash1_Remove_All_Outside_Guys // No longer need the LSV2 model MARK_MODEL_AS_NO_LONGER_NEEDED LSV2 IF NOT IS_CAR_DEAD carBeingWorkedOn OPEN_CAR_DOOR_A_BIT carBeingWorkedOn BONNET 0.0f ENDIF flagWarpCoochieOutside = FALSE statusCoochieExitPath = 0 // Activate all big fires statusBigFires = 3 GOSUB Crash1_Update_Big_Fires // Remove the timer CLEAR_ONSCREEN_COUNTER g_Crash1_counterKM1 // Convert walls to rubble statusWalls[1] = 3 statusWalls[2] = 3 // Show blip at top of stairs xposTemp = 2319.7173 yposTemp = -1178.5564 zposTemp = 1030.9688 ADD_BLIP_FOR_COORD xposTemp yposTemp zposTemp blipDestination SET_BLIP_ENTRY_EXIT blipDestination 2352.1143 -1170.6102 3.0 flagBlipAtTopOfStairs = 1 flagCutscenePlaying = 0 flagCleaningUpSkippedCutscene = 0 flagSkipCutscene = 0 // Load the 'wall collapse' audio LOAD_MISSION_AUDIO CRASH1_SFX_SLOT SOUND_WALL_COLLAPSE_NEARBY // Make the girl move forward then face the player FREEZE_CHAR_POSITION charCoochie FALSE TASK_GO_STRAIGHT_TO_COORD charCoochie 2345.6267 -1175.8444 1030.9688 PEDMOVE_RUN -2 // Make the player face the girl TASK_TURN_CHAR_TO_FACE_CHAR scplayer charCoochie // Change the camera angle SET_FIXED_CAMERA_POSITION 2349.7678 -1177.1592 1031.7914 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2348.8494 -1176.7654 1031.8282 JUMP_CUT // Re-activate the fire in the girl's bedroom doorway (it gets put out when control is removed from the player) IF flagBedroomFireStillBlazing = TRUE statusBigFires = 4 GOSUB Crash1_Update_Big_Fires ENDIF // Re-activate the fires in the rooms below the position the player is moved to (they've also gone out) statusFires = 1 GOSUB Crash1_Update_Fires_Interior // Widescreen SWITCH_WIDESCREEN ON flagCutscenePlaying = TRUE flagCleaningUpSkippedCutscene = FALSE flagSkipCutscene = FALSE m_goals++ ENDIF // Failure Conditions // ------------------ // Subgoals // -------- // Start Coochie running towards the player IF m_goals = 1 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE // Prepare and Play the 'Reach Coochie' speech nRequiredConversationID = CRASH1_CONVERSATION_REACH_COOCHIE GOSUB Crash1_Conversation_Command_Prepare IF nCurrentConversationID = CRASH1_CONVERSATION_REACH_COOCHIE GOSUB Crash1_Conversation_Command_Play timerCutscene = m_mission_timer + 500 m_goals++ ENDIF ENDIF ENDIF // Check if the girl has reached her destination IF m_goals = 2 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE IF timerCutscene < m_mission_timer GET_SCRIPT_TASK_STATUS charCoochie TASK_GO_STRAIGHT_TO_COORD m_status IF m_status = FINISHED_TASK // Make the player and the girl face each other TASK_TURN_CHAR_TO_FACE_CHAR scplayer charCoochie TASK_TURN_CHAR_TO_FACE_CHAR charCoochie scplayer m_goals++ ENDIF ENDIF ENDIF ENDIF // Wait for the girl's speech to end and show the animation IF m_goals = 3 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE IF IS_BIT_SET bitsConversationsPlayed CRASH1_CONVERSATION_REACH_COOCHIE AND HAS_MISSION_AUDIO_LOADED CRASH1_SFX_SLOT // Start the wall animation and sound effect PLAY_MISSION_AUDIO CRASH1_SFX_SLOT // Play the breaking walls animation statusWalls[0] = 1 // Wait for a very brief moment before cutting to the animation camera timerCutscene = m_mission_timer + 100 m_goals++ ENDIF ENDIF ENDIF // Cut to the animation camera IF m_goals = 4 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE IF timerCutscene < m_mission_timer SET_FIXED_CAMERA_POSITION 2347.9424 -1179.9541 1031.8584 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2346.9497 -1179.8898 1031.9612 JUMP_CUT // Prepare the 'Building Collapse' conversation nRequiredConversationID = CRASH1_CONVERSATION_BUILDING_COLLAPSE GOSUB Crash1_Conversation_Command_Prepare m_goals++ ENDIF ENDIF ENDIF // Wait for the animation to end IF m_goals = 5 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE // Keep requesting the speech until it is loaded IF NOT nCurrentConversationID = CRASH1_CONVERSATION_BUILDING_COLLAPSE nRequiredConversationID = CRASH1_CONVERSATION_BUILDING_COLLAPSE GOSUB Crash1_Conversation_Command_Prepare ENDIF // Keep the camera shaking SHAKE_CAM 40 IF statusWalls[0] = 5 AND HAS_MISSION_AUDIO_FINISHED CRASH1_SFX_SLOT // Have a brief pause before going back to the girl again timerCutscene = m_mission_timer + 500 m_goals++ ENDIF ENDIF ENDIF // Move the cutscene camera and trigger the next speech IF m_goals = 6 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE // Keep requesting the speech until it is loaded IF NOT nCurrentConversationID = CRASH1_CONVERSATION_BUILDING_COLLAPSE nRequiredConversationID = CRASH1_CONVERSATION_BUILDING_COLLAPSE GOSUB Crash1_Conversation_Command_Prepare ENDIF IF timerCutscene < m_mission_timer AND nCurrentConversationID = CRASH1_CONVERSATION_BUILDING_COLLAPSE // Move the cutscene camera back to Player and Coochie SET_FIXED_CAMERA_POSITION 2348.4949 -1176.4503 1031.4856 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2347.5381 -1176.7322 1031.5580 JUMP_CUT // Trigger the girl speech GOSUB Crash1_Conversation_Command_Play timerCutscene = m_mission_timer + 3000 m_goals++ ENDIF ENDIF ENDIF // Make the player walk away (but only if he put out the bedroom fire) IF m_goals = 7 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE IF timerCutscene < m_mission_timer IF flagBedroomFireStillBlazing = FALSE TASK_GO_STRAIGHT_TO_COORD scplayer 2344.7380 -1180.8529 1030.9766 PEDMOVE_WALK -2 ENDIF m_goals++ ENDIF ENDIF ENDIF // End the cutscene when the speech is finished IF m_goals = 8 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals = 50 ELSE IF IS_BIT_SET bitsConversationsPlayed CRASH1_CONVERSATION_BUILDING_COLLAPSE SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER flagCutscenePlaying = FALSE m_goals++ ENDIF ENDIF ENDIF // RETURN HERE WHEN CUTSCENE ENDED IF m_goals = 9 m_goals = 99 ENDIF // Skipped Cutscene stuff // ---------------------- // Check if the cutscene was skipped // NOTE: Should never enter here unless skipped IF flagCutscenePlaying = TRUE AND flagSkipCutscene = FALSE // Cutscene was skipped IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flagSkipCutscene = TRUE ENDIF ENDIF // fade out IF m_goals = 50 DO_FADE 500 FADE_OUT timerCutscene = m_mission_timer + 500 flagCleaningUpSkippedCutscene = TRUE m_goals++ ENDIF // Clean up the skipped cutscene IF m_goals = 51 IF timerCutscene < m_mission_timer // Tidy up after the cutscene // Cancel speech // ...reach coochie IF NOT IS_BIT_SET bitsConversationsPlayed CRASH1_CONVERSATION_REACH_COOCHIE GOSUB Crash1_Conversation_Command_Cancel SET_BIT bitsConversationsPlayed CRASH1_CONVERSATION_BUILDING_COLLAPSE ENDIF // ...building collapse IF NOT IS_BIT_SET bitsConversationsPlayed CRASH1_CONVERSATION_BUILDING_COLLAPSE GOSUB Crash1_Conversation_Command_Cancel ENDIF // Wall collapse anims IF statusWalls[0] < 5 IF IS_OBJECT_PLAYING_ANIM objectWall[0] BD_FIRE1 SET_OBJECT_ANIM_CURRENT_TIME objectWall[0] BD_FIRE1 1.0 statusWalls[0] = 3 ELSE statusWalls[0] = 4 ENDIF ENDIF SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER DO_FADE 1500 FADE_IN timerCutscene = m_mission_timer + 1500 m_goals++ ENDIF ENDIF // Resume normal service IF m_goals = 52 IF timerCutscene < m_mission_timer flagCleaningUpSkippedCutscene = FALSE flagSkipCutscene = FALSE flagCutscenePlaying = FALSE m_goals = 9 ENDIF ENDIF // Continuous updates // ------------------ // ...breaking walls GOSUB Crash1_Update_AnimatedWall0 // Exit // ---- IF m_goals = 99 GOSUB Crash1_Next_Stage ENDIF RETURN // **************************************** // STAGE 6: Get the Lady Out Crash1_Stage_GetTheLadyOut: // Check if coochie dead IF IS_CHAR_DEAD charCoochie m_failed = 1 RETURN ENDIF // Initialisation for this stage IF m_goals = 0 flagCutscenePlaying = 0 flagCleaningUpSkippedCutscene = 0 flagSkipCutscene = 0 flagKissingCutscenePlaying = 0 m_goals++ ENDIF // Initialise Cutscene showing building collapsing // (NOW DONE IN PREVIOUS STAGE) IF m_goals = 1 m_goals++ ENDIF // Wait until the Speech has finished and the SFX has loaded before shaking the camera // (NOW DONE IN PREVIOUS STAGE) IF m_goals = 2 m_goals++ ENDIF // Shaking the camera for the first time // (NOW DONE IN PREVIOUS STAGE) IF m_goals = 3 // Prepare the next camera shake timerCutscene = m_mission_timer + 5000 timerPreloadAudio = timerCutscene - 3000 m_goals++ ENDIF // Wait until the delay before camera shake times out IF m_goals = 4 IF NOT timerPreloadAudio = 0 IF timerPreloadAudio < m_mission_timer // Load the 'roof collapse' audio LOAD_MISSION_AUDIO CRASH1_SFX_SLOT SOUND_ROOF_COLLAPSE timerPreloadAudio = 0 ENDIF ENDIF IF timerCutscene < m_mission_timer AND HAS_MISSION_AUDIO_LOADED CRASH1_SFX_SLOT // Trigger the sound effect PLAY_MISSION_AUDIO CRASH1_SFX_SLOT // Period of time the camera will shake for timerCutscene = m_mission_timer + 2000 m_goals++ ENDIF ENDIF // Shaking the camera for the second time IF m_goals = 5 IF timerCutscene < m_mission_timer // Stop shaking the camera and introduce a delay until the next shake timerCutscene = m_mission_timer + 5000 timerPreloadAudio = timerCutscene - 3000 m_goals++ ELSE SHAKE_CAM 80 //200 ENDIF ENDIF // Wait until the delay before camera shake times out IF m_goals = 6 IF NOT timerPreloadAudio = 0 IF timerPreloadAudio < m_mission_timer // Load the 'roof collapse' audio LOAD_MISSION_AUDIO CRASH1_SFX_SLOT SOUND_WALL_COLLAPSE_BELOW timerPreloadAudio = 0 ENDIF ENDIF IF timerCutscene < m_mission_timer AND HAS_MISSION_AUDIO_LOADED CRASH1_SFX_SLOT // Trigger the sound effect PLAY_MISSION_AUDIO CRASH1_SFX_SLOT // Period of time the camera will shake for timerCutscene = m_mission_timer + 1500 m_goals++ ENDIF ENDIF // Shaking the camera for the third time IF m_goals = 7 IF timerCutscene < m_mission_timer // All shakes finished m_goals++ ELSE SHAKE_CAM 40 //80 ENDIF ENDIF // Check if Coochie should be warped outside IF m_goals = 8 IF flagWarpCoochieOutside = TRUE // ...yes, so warp her into the house corridor downstairs CLEAR_AREA 2351.7622 -1178.7505 26.9753 15.0000 TRUE SET_CHAR_COORDINATES charCoochie 2352.2622 -1176.7505 26.9753 SET_CHAR_HEADING charCoochie 0.0000 SET_CHAR_HAS_USED_ENTRY_EXIT charCoochie 2352.1143 -1170.6102 8.0 SET_CHAR_AREA_VISIBLE charCoochie 0 CLEAR_CHAR_TASKS_IMMEDIATELY charCoochie // Switch off the entry/exit to make sure the player is never allowed back in SWITCH_ENTRY_EXIT GANG FALSE // Remove blip on front door REMOVE_BLIP blipDestination // Prepare the 'My Hero' conversation GOSUB Crash1_Conversation_Command_Cancel nRequiredConversationID = CRASH1_CONVERSATION_COOCHIE_HERO GOSUB Crash1_Conversation_Command_Prepare m_goals++ ENDIF ENDIF // Set up the cutscene IF m_goals = 9 SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE SET_FIXED_CAMERA_POSITION 2354.5891 -1166.2617 27.8700 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2353.8257 -1166.8904 28.0181 JUMP_CUT SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED // Make the player turn around to face the house OPEN_SEQUENCE_TASK nSeqTask TASK_GO_STRAIGHT_TO_COORD -1 2351.9700 -1169.2600 27.0130 PEDMOVE_WALK CRASH1_PERSIST // Back towards door TASK_ACHIEVE_HEADING -1 180.0 // Achieve Heading CLOSE_SEQUENCE_TASK nSeqTask PERFORM_SEQUENCE_TASK scplayer nSeqTask CLEAR_SEQUENCE_TASK nSeqTask // Make Coochie run out towards the player OPEN_SEQUENCE_TASK nSeqTask TASK_GO_STRAIGHT_TO_COORD -1 2351.9700 -1170.2600 27.0130 PEDMOVE_RUN CRASH1_PERSIST // Outside TASK_ACHIEVE_HEADING -1 0.0 // Achieve Heading CLOSE_SEQUENCE_TASK nSeqTask PERFORM_SEQUENCE_TASK charCoochie nSeqTask CLEAR_SEQUENCE_TASK nSeqTask // Allow the fire engine and driver to be loaded REQUEST_MODEL FIRETRUK REQUEST_MODEL LAFD1 LOAD_ALL_MODELS_NOW flagKissingCutscenePlaying = 1 flagCutscenePlaying = 1 timerCutscene = m_mission_timer + 500 m_goals++ ENDIF // Wait for all tasks to be achieved and the conversation to be ready IF m_goals = 10 IF flagSkipCutscene = 1 m_goals = 50 ELSE IF NOT nCurrentConversationID = CRASH1_CONVERSATION_COOCHIE_HERO nRequiredConversationID = CRASH1_CONVERSATION_COOCHIE_HERO GOSUB Crash1_Conversation_Command_Prepare ENDIF // Check if the audio is ready IF timerCutscene < m_mission_timer IF nCurrentConversationID = CRASH1_CONVERSATION_COOCHIE_HERO // Check if the girl has reached the player GET_SCRIPT_TASK_STATUS charCoochie -1 m_status IF m_status = FINISHED_TASK // Check if the player has turned around GET_SCRIPT_TASK_STATUS scplayer -1 m_status IF m_status = FINISHED_TASK // ...everything ready to continue m_goals++ ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // Start the anims and the speech IF m_goals = 11 IF flagSkipCutscene = 1 m_goals = 50 ELSE // ...anims TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM charCoochie 2351.9700 -1170.2600 27.0130 0.0 0.2 GRLFRD_KISS_03 BD_FIRE 4.0 FALSE FALSE FALSE FALSE -1 TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM scplayer 2351.9700 -1169.2600 27.0130 180.0 0.2 PLAYA_KISS_03 BD_FIRE 4.0 FALSE FALSE FALSE FALSE -1 // ...speech GOSUB Crash1_Conversation_Command_Play timerCutscene = m_mission_timer + 1000 m_goals++ ENDIF ENDIF // Wait for the kiss to end IF m_goals = 12 IF flagSkipCutscene = 1 m_goals = 50 ELSE IF NOT IS_CHAR_PLAYING_ANIM charCoochie GRLFRD_KISS_03 AND NOT IS_CHAR_PLAYING_ANIM scplayer PLAYA_KISS_03 AND timerCutscene < m_mission_timer SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT // Set up the group again MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER players_group charCoochie SET_CHAR_NEVER_LEAVES_GROUP charCoochie TRUE LISTEN_TO_PLAYER_GROUP_COMMANDS charCoochie FALSE TASK_FOLLOW_FOOTSTEPS charCoochie scplayer SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 TRUE flagKissingCutscenePlaying = 0 flagCutscenePlaying = 0 // Convert all script fires to non-script fires so that the fire engine puts them out CLEAR_ALL_SCRIPT_FIRE_FLAGS m_goals++ ENDIF ENDIF ENDIF // Wait for the fire engine and driver to load IF m_goals = 13 IF HAS_MODEL_LOADED FIRETRUK AND HAS_MODEL_LOADED LAFD1 m_goals = 99 ENDIF ENDIF // Skipped Cutscene stuff // ---------------------- // Check if the cutscene was skipped // NOTE: Should never enter here unless skipped IF flagCutscenePlaying = 1 AND flagSkipCutscene = 0 // Cutscene was skipped IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flagSkipCutscene = 1 ENDIF ENDIF // Restore camera if cutscene skipped IF m_goals = 50 IF IS_CHAR_PLAYING_ANIM charCoochie GRLFRD_KISS_03 SET_CHAR_ANIM_CURRENT_TIME charCoochie GRLFRD_KISS_03 1.00 SET_CHAR_ANIM_PLAYING_FLAG charCoochie GRLFRD_KISS_03 TRUE // actually want to turn these on so they tick and get cleaned up ENDIF IF IS_CHAR_PLAYING_ANIM scplayer PLAYA_KISS_03 SET_CHAR_ANIM_CURRENT_TIME scplayer PLAYA_KISS_03 1.00 SET_CHAR_ANIM_PLAYING_FLAG scplayer PLAYA_KISS_03 TRUE ENDIF // Cancel speech IF NOT IS_BIT_SET bitsConversationsPlayed CRASH1_CONVERSATION_COOCHIE_HERO GOSUB Crash1_Conversation_Command_Cancel ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY charCoochie CLEAR_CHAR_TASKS_IMMEDIATELY scplayer timerCutscene = m_mission_timer flagCleaningUpSkippedCutscene = 0 flagSkipCutscene = 0 flagKissingCutscenePlaying = 0 flagCutscenePlaying = 0 m_goals = 12 ENDIF // Continuous Updates // ------------------ // ...coochie following player IF flagKissingCutscenePlaying = 0 GOSUB Crash1_Update_Coochie ENDIF // ...breaking walls GOSUB Crash1_Update_AnimatedWall0 GOSUB Crash1_Update_AnimatedWall1 GOSUB Crash1_Update_AnimatedWall2 // If the player has reached the top of the stairs, remove the blip and place it at the front door xloTemp = 2319.9937 - 1.5000 yloTemp = -1179.2180 - 1.5000 zloTemp = 1030.9766 - 1.2000 xhiTemp = 2319.9937 + 1.5000 yhiTemp = -1179.2180 + 1.5000 zhiTemp = 1030.9766 + 1.2000 IF IS_CHAR_IN_AREA_3D scplayer xloTemp yloTemp zloTemp xhiTemp yhiTemp zhiTemp FALSE AND flagBlipAtTopOfStairs = 1 REMOVE_BLIP blipDestination // Add blip at front door xposTemp = 2353.0847 yposTemp = -1181.1002 zposTemp = 1026.9702 ADD_BLIP_FOR_COORD xposTemp yposTemp zposTemp blipDestination SET_BLIP_ENTRY_EXIT blipDestination 2352.1143 -1170.6102 3.0 flagBlipAtTopOfStairs = 0 ENDIF // Continuously clear the area around the fire extinguisher pickup CLEAR_AREA xposFireEx yposFireEx zposFireEx 3.0 FALSE // Is the player outside? IF flagInHouse = FALSE AND flagBeenInHouse = TRUE // ...yes flagBeenInHouse = FALSE // Temporarily disable the player SET_PLAYER_CONTROL player1 OFF // Temporarily disable Coochie REMOVE_CHAR_FROM_GROUP charCoochie TASK_STAND_STILL charCoochie -2 FREEZE_CHAR_POSITION charCoochie TRUE // Wait for the screen to fade in to see if Coochie should join the player flagCheckingForCoochie = TRUE flagCoochieLeftBehind = FALSE ENDIF // Wait for the player to be in position following the warp out of the house and for the fade to finish IF flagInHouse = FALSE AND flagCheckingForCoochie = TRUE IF LOCATE_CHAR_ON_FOOT_3D scplayer 2351.5747 -1166.1903 26.4524 4.0 4.0 4.0 FALSE IF NOT GET_FADING_STATUS // ...player is outside and the fade has finished // Is Coochie in the area near the front door? IF IS_CHAR_IN_AREA_3D charCoochie 2340.0972 -1188.5099 1025.5766 2352.9773 -1179.8820 1028.1839 FALSE OR IS_CHAR_IN_AREA_3D charCoochie 2344.2205 -1179.8920 1025.5766 2349.8313 -1171.6642 1028.1839 FALSE // ...yes // Allow Coochie to be warped outside and set up the kissing cutscene flagWarpCoochieOutside = TRUE flagCheckingForCoochie = FALSE FREEZE_CHAR_POSITION charCoochie FALSE ELSE // ...no // Instructions: You've left the girl behind PRINT_NOW CRA1_10 8000 1 SET_PLAYER_CONTROL player1 ON flagCoochieLeftBehind = TRUE ENDIF ENDIF ENDIF ENDIF // If the player is in the house and the Coochie Left Behind flag is set, then re-activate Coochie IF flagInHouse = TRUE AND flagCoochieLeftBehind = TRUE flagCoochieLeftBehind = FALSE // Re-enable Coochie again FREEZE_CHAR_POSITION charCoochie FALSE MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER players_group charCoochie SET_CHAR_NEVER_LEAVES_GROUP charCoochie TRUE LISTEN_TO_PLAYER_GROUP_COMMANDS charCoochie FALSE SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 TRUE // Make her wait for the player to return aiCoochie = 2 ENDIF // Make sure the player's fire extinguisher has infinite ammo IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_EXTINGUISHER GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_EXTINGUISHER nTempInt IF nTempInt < 500 SET_CHAR_AMMO scplayer WEAPONTYPE_EXTINGUISHER CRASH1_INFINITE_AMMO ENDIF ENDIF // Check if the 'Put Out Fire' speech should be prepared and played IF flagPrepareAndPlayPutOutFireSpeech = TRUE CLEAR_BIT bitsConversationsPlayed CRASH1_CONVERSATION_PUT_OUT_FIRE nRequiredConversationID = CRASH1_CONVERSATION_PUT_OUT_FIRE GOSUB Crash1_Conversation_Command_Prepare IF nCurrentConversationID = CRASH1_CONVERSATION_PUT_OUT_FIRE GOSUB Crash1_Conversation_Command_Play flagPrepareAndPlayPutOutFireSpeech = FALSE ENDIF ENDIF // If the player moves a distance away from the house, restart the traffix and the peds IF flagInHouse = FALSE IF flagNearHouse = TRUE // ...currently near the house IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2337.6660 -1180.9938 31.7513 48.1099 41.5599 18.7500 FALSE // ...away from house again SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 flagNearHouse = FALSE ENDIF ELSE // ...not currently near the house IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2337.6660 -1180.9938 31.7513 38.1099 31.5599 8.7500 FALSE // ...near house again SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 flagNearHouse = TRUE ENDIF ENDIF ENDIF // exit IF m_goals = 99 GOSUB Crash1_next_stage ENDIF RETURN // **************************************** // STAGE 7: Take the Lady Home Crash1_Stage_TakeTheLadyHome: // Initialisation for this stage IF m_goals = 0 // Allow Peds and Vehicles again SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 // Create the Fire Engine GOSUB Crash1_Create_FireEngine // Display destination blip xposCoochieHome = 2402.3071 yposCoochieHome = -1727.5302 zposCoochieHome = 12.3906 ADD_BLIP_FOR_COORD xposCoochieHome yposCoochieHome zposCoochieHome blipDestination // Remove Coochie Blip REMOVE_BLIP blipCoochie // Clear control flags for this stage flagPlayerInCar = 0 flagCoochieHome = 0 flagCoochieLeftBehind = FALSE // Prepare the speech nRequiredConversationID = CRASH1_CONVERSATION_DRIVE_COOCHIE_HOME GOSUB Crash1_Conversation_Command_Prepare // Make sure neither CJ nor the girl talks during the ride home SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH charCoochie TRUE m_goals++ ENDIF // FAILURE CONDITIONS // ------------------ // Check if coochie dead but only fail if coochie not home IF IS_CHAR_DEAD charCoochie //removing this may fix the issue when this mission gets stuck if, coochie dies when at home //IF flagCoochieHome = FALSE m_failed = 1 RETURN //ENDIF ENDIF // SUBGOALS // -------- // Play the 'Drive Home' conversation IF m_goals = 1 IF NOT nCurrentConversationID = CRASH1_CONVERSATION_DRIVE_COOCHIE_HOME nRequiredConversationID = CRASH1_CONVERSATION_DRIVE_COOCHIE_HOME GOSUB Crash1_Conversation_Command_Prepare ENDIF IF nCurrentConversationID = CRASH1_CONVERSATION_DRIVE_COOCHIE_HOME GOSUB Crash1_Conversation_Command_Play m_goals++ ENDIF ENDIF // Check if Coochie has reached home IF m_goals = 2 flagTempFlag = FALSE // Used to decide if coochie is in the locate // ...check if Coochie arrived home IF LOCATE_CHAR_ANY_MEANS_3D charCoochie xposCoochieHome yposCoochieHome zposCoochieHome 3.0 3.0 3.0 TRUE flagTempFlag = TRUE SET_PLAYER_CONTROL player1 OFF // ...check if coochie in a car IF IS_CHAR_IN_ANY_CAR charCoochie // ...yes, in a car, so make sure the player is also in the car and make him stop STORE_CAR_CHAR_IS_IN_NO_SAVE charCoochie car IF NOT IS_CHAR_IN_CAR scplayer car flagTempFlag = FALSE ENDIF ENDIF ENDIF IF flagTempFlag = TRUE REMOVE_CHAR_FROM_GROUP charCoochie REMOVE_BLIP blipDestination REMOVE_BLIP blipCoochie flagCoochieHome = 1 // Set up the Cutscene camera SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE // Clear the area around her front door to make sure she doesn't get blocked CLEAR_AREA 2401.5200 -1722.0745 12.6072 8.0 TRUE // Clear the area around the player's car IF IS_CHAR_IN_ANY_CAR charCoochie STORE_CAR_CHAR_IS_IN_NO_SAVE charCoochie car GET_CAR_COORDINATES car xposTemp yposTemp zposTemp CLEAR_AREA xposTemp yposTemp zposTemp 5.0 TRUE ENDIF // Cut to camera position SET_FIXED_CAMERA_POSITION 2392.5417 -1727.9492 14.9910 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2393.4580 -1727.5577 14.9067 JUMP_CUT m_goals++ ENDIF ENDIF // Prepare and Play the 'Coochie Name' speech IF m_goals = 3 nRequiredConversationID = CRASH1_CONVERSATION_COOCHIE_NAME GOSUB Crash1_Conversation_Command_Prepare IF nCurrentConversationID = CRASH1_CONVERSATION_COOCHIE_NAME GOSUB Crash1_Conversation_Command_Play // If the player is not in a car then make him face Coochie IF NOT IS_CHAR_IN_ANY_CAR scplayer TASK_TURN_CHAR_TO_FACE_CHAR scplayer charCoochie ENDIF m_goals++ ENDIF ENDIF // Wait for the Coochie Name speech to finish IF m_goals = 4 IF IS_BIT_SET bitsConversationsPlayed CRASH1_CONVERSATION_COOCHIE_NAME m_goals++ ENDIF ENDIF // Prepare and Play the 'Go Out' speech IF m_goals = 5 nRequiredConversationID = CRASH1_CONVERSATION_GO_OUT GOSUB Crash1_Conversation_Command_Prepare IF nCurrentConversationID = CRASH1_CONVERSATION_GO_OUT GOSUB Crash1_Conversation_Command_Play m_goals++ ENDIF ENDIF // Make Coochie leave the car if she is in one IF m_goals = 6 // Make Coochie get out of the car if she is in one IF IS_CHAR_IN_ANY_CAR charCoochie // ...she is in a car TASK_LEAVE_ANY_CAR charCoochie m_goals++ ELSE // ...not in a car, so skip the next goal m_goals = 8 ENDIF ENDIF // Check if Coochie has left the car IF m_goals = 7 GET_SCRIPT_TASK_STATUS charCoochie TASK_LEAVE_ANY_CAR m_status IF m_status = FINISHED_TASK m_goals++ ENDIF ENDIF // Make Coochie go to coords and make the player face her if not in a car IF m_goals = 8 TASK_GO_STRAIGHT_TO_COORD charCoochie 2402.0522 -1719.7156 12.6181 PEDMOVE_RUN -2 IF NOT IS_CHAR_IN_ANY_CAR scplayer TASK_TURN_CHAR_TO_FACE_CHAR scplayer charCoochie ENDIF m_goals++ ENDIF // Check if Coochie reached wave position, and make player turn again to face her IF m_goals = 9 GET_SCRIPT_TASK_STATUS charCoochie TASK_GO_STRAIGHT_TO_COORD m_status IF m_status = FINISHED_TASK // The wave anim starts 180 degrees away from the actual wave heading, so calculate this heading // ...player coords GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp xhiTemp = xposTemp yhiTemp = yposTemp // ...coochie coords GET_CHAR_COORDINATES charCoochie xposTemp yposTemp zposTemp xloTemp = xposTemp yloTemp = yposTemp // ...calculate vector xposTemp = xloTemp - xhiTemp yposTemp = yloTemp - yhiTemp GET_HEADING_FROM_VECTOR_2D xposTemp yposTemp headTemp // Play Wave Anim TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM charCoochie 2402.0522 -1719.7156 12.6181 headTemp 0.2 BD_GF_Wave BD_FIRE 4.0 FALSE FALSE FALSE FALSE -1 // TASK_PLAY_ANIM_NON_INTERRUPTABLE charCoochie BD_GF_Wave BD_FIRE 4.0 false false false false -1 IF NOT IS_CHAR_IN_ANY_CAR scplayer TASK_TURN_CHAR_TO_FACE_CHAR scplayer charCoochie ENDIF m_goals++ ENDIF ENDIF // Prepare and Play the 'CYA' speech IF m_goals = 10 nRequiredConversationID = CRASH1_CONVERSATION_CYA GOSUB Crash1_Conversation_Command_Prepare IF nCurrentConversationID = CRASH1_CONVERSATION_CYA GOSUB Crash1_Conversation_Command_Play m_goals++ ENDIF ENDIF // Check if animation finished IF m_goals = 11 IF IS_CHAR_PLAYING_ANIM charCoochie BD_GF_Wave GET_CHAR_ANIM_CURRENT_TIME charCoochie BD_GF_Wave fTempFloat IF fTempFloat = 1.0000 // Walk away TASK_GO_STRAIGHT_TO_COORD charCoochie 2401.8574 -1717.0104 12.6334 PEDMOVE_RUN -2 m_goals++ ENDIF ENDIF ENDIF // Check if girl disappeared from view IF m_goals = 12 GET_SCRIPT_TASK_STATUS charCoochie TASK_GO_STRAIGHT_TO_COORD m_status IF m_status = FINISHED_TASK DELETE_CHAR charCoochie // Restore camera SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT // Allow CJ to talk again SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE m_goals++ ENDIF ENDIF IF m_goals = 13 // Restore player control SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SET_ALL_CARS_CAN_BE_DAMAGED TRUE m_goals = 99 ENDIF // Continuous Updates // If the player gets in a car then remove Coochie's Follow_Footsteps so that she gets in too IF flagCoochieHome = 0 IF IS_CHAR_IN_ANY_CAR scplayer // ...player is in a car // If the player was not previously in a car, then remove Coochie's tasks so she follows him IF flagPlayerInCar = 0 flagPlayerInCar = 1 CLEAR_CHAR_TASKS_IMMEDIATELY charCoochie ENDIF ELSE // ...player is not in a car // If the player was previously in a car, then add Follow_Footsteps to Coochie again IF flagPlayerInCar = 1 flagPlayerInCar = 0 TASK_FOLLOW_FOOTSTEPS charCoochie scplayer ENDIF ENDIF ENDIF // Check if the player and Coochie are nearby or not // NOTE 26/8/04: but only if they are in the same visible area. If player enters a shop, Coochie will be left outside. IF NOT IS_CHAR_DEAD charCoochie GET_CHAR_AREA_VISIBLE scplayer nTempInt GET_CHAR_AREA_VISIBLE charCoochie nTempInt2 IF nTempInt = nTempInt2 GET_CHAR_COORDINATES charCoochie xposTemp yposTemp zposTemp GET_CHAR_COORDINATES scplayer xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance IF flagCoochieLeftBehind = TRUE // ...Coochie was far away, see if she are closer now IF fTempDistance < 20.0 // ...she is now close flagCoochieLeftBehind = FALSE // Set her up again CLEAR_CHAR_TASKS charCoochie MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER players_group charCoochie SET_CHAR_NEVER_LEAVES_GROUP charCoochie TRUE LISTEN_TO_PLAYER_GROUP_COMMANDS charCoochie FALSE SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 TRUE IF flagPlayerInCar = FALSE TASK_FOLLOW_FOOTSTEPS charCoochie scplayer ENDIF // Update Blips ADD_BLIP_FOR_COORD xposCoochieHome yposCoochieHome zposCoochieHome blipDestination REMOVE_BLIP blipCoochie ENDIF ELSE // ...Coochie was close, see if she is now far away IF fTempDistance > 50.0 // ...she is now far away flagCoochieLeftBehind = TRUE PRINT_NOW CRA1_12 7000 1 // Temporarily disable Coochie REMOVE_CHAR_FROM_GROUP charCoochie CLEAR_CHAR_TASKS_IMMEDIATELY charCoochie TASK_STAND_STILL charCoochie -2 // Update Blips REMOVE_BLIP blipDestination ADD_BLIP_FOR_CHAR charCoochie blipCoochie SET_BLIP_AS_FRIENDLY blipCoochie TRUE ENDIF ENDIF ENDIF ENDIF // Player and Coochie banter on way home IF NOT IS_CHAR_DEAD charCoochie AND flagCoochieHome = FALSE IF IS_CHAR_IN_ANY_CAR scplayer AND IS_CHAR_IN_ANY_CAR charCoochie STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF IS_CHAR_IN_CAR charCoochie car AND NOT IS_CAR_STOPPED car IF NOT IS_BIT_SET bitsConversationsPlayed CRASH1_CONVERSATION_ON_RIDE_HOME AND nCurrentConversationID = CRASH1_CONVERSATION_NONE nRequiredConversationID = CRASH1_CONVERSATION_ON_RIDE_HOME GOSUB Crash1_Conversation_Command_Prepare IF nCurrentConversationID = CRASH1_CONVERSATION_ON_RIDE_HOME GOSUB Crash1_Conversation_Command_Play ENDIF ENDIF ENDIF ENDIF ENDIF // Player approaching Coochie house IF NOT IS_CHAR_DEAD charCoochie AND flagCoochieHome = FALSE IF NOT IS_BIT_SET bitsConversationsPlayed CRASH1_CONVERSATION_COOCHIE_HOUSE AND NOT nCurrentConversationID = CRASH1_CONVERSATION_COOCHIE_HOUSE IF LOCATE_CHAR_ANY_MEANS_3D charCoochie xposCoochieHome yposCoochieHome zposCoochieHome 30.0 30.0 20.0 FALSE GOSUB Crash1_Conversation_Command_Cancel nRequiredConversationID = CRASH1_CONVERSATION_COOCHIE_HOUSE GOSUB Crash1_Conversation_Command_Prepare IF nCurrentConversationID = CRASH1_CONVERSATION_COOCHIE_HOUSE GOSUB Crash1_Conversation_Command_Play ENDIF // Clear the area around her front door to make sure she doesn't get blocked CLEAR_AREA 2401.5200 -1722.0745 12.6072 8.0 TRUE ENDIF ENDIF ENDIF // exit IF m_goals = 99 GOSUB Crash1_next_stage ENDIF RETURN // **************************************** // The 'Failed In House' cutscene Crash1_Stage_FailedInHouse: // Initialisation // -------------- IF m_goals = 0 // Make the player everything proof and remove his control SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE SET_PLAYER_CONTROL player1 OFF // Let the 'mission failed' text be on screen for a few seconds timerCutscene = m_mission_timer + 1000 m_goals++ ENDIF // Failure Conditions // ------------------ // Subgoals // -------- // Kep displaying mission failed for a few seconds, then fade out IF m_goals = 1 IF timerCutscene < m_mission_timer SET_FADING_COLOUR 0 0 0 DO_FADE 500 FADE_OUT timerCutscene = m_mission_timer + 500 m_goals++ ENDIF ENDIF // Warp the player out and set up the 'exiting house' cutscene IF m_goals = 2 IF NOT GET_FADING_STATUS AND timerCutscene < m_mission_timer // If the player is in the wee corridor behind the entry/exit sign and is in a vehicle, then get him // out of the vehicle and delete it IF flagInHouse = FALSE IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car WARP_CHAR_FROM_CAR_TO_COORD scplayer 2351.7332 -1179.0419 26.9753 DELETE_CAR car ENDIF ENDIF // Position the player SET_AREA_VISIBLE 0 CLEAR_AREA 2351.9607 -1172.0735 26.9765 8.0 TRUE LOAD_SCENE 2351.9607 -1172.0735 26.9765 SET_CHAR_COORDINATES scplayer 2351.9607 -1172.0735 26.9765 SET_CHAR_HEADING scplayer 0.0 SET_CHAR_AREA_VISIBLE scplayer 0 // Position the camera SET_FIXED_CAMERA_POSITION 2345.0439 -1170.0148 32.0063 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2345.8000 -1169.8221 31.3810 JUMP_CUT // Wait before fading in timerCutscene = m_mission_timer + 1000 m_goals++ ENDIF ENDIF // Get ready to fade in IF m_goals = 3 IF timerCutscene < m_mission_timer DO_FADE 500 FADE_IN TASK_GO_STRAIGHT_TO_COORD scplayer 2351.9277 -1166.0802 26.4593 PEDMOVE_RUN CRASH1_PERSIST timerCutscene = m_mission_timer + 500 m_goals++ ENDIF ENDIF // Wait for the player to reach the destination IF m_goals = 4 IF timerCutscene < m_mission_timer GET_SCRIPT_TASK_STATUS scplayer TASK_GO_STRAIGHT_TO_COORD m_status IF m_status = FINISHED_TASK SET_CHAR_COORDINATES scplayer 2351.9277 -1166.0802 26.4593 SET_CHAR_HEADING scplayer 0.0 SET_CAMERA_BEHIND_PLAYER m_goals = 99 ENDIF ENDIF ENDIF // Continuous updates // ------------------ // Exit // ---- IF m_goals = 99 // Make the player nothing proof again, and give him back control SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE SET_PLAYER_CONTROL player1 ON GOSUB Crash1_Next_Stage ENDIF RETURN // ************************************************************************************************************* // CODE CUTSCENES SKIPPED // ************************************************************************************************************* // **************************************** // The 'Enter House' cutscene Crash1_Cutscene_Skipped_EnterHouse: // Do front door stuff if not done IF flagCutsceneFrontDoorStuffDone = 0 // Remove the front door SET_OBJECT_PROOFS objectFrontDoor FALSE FALSE FALSE FALSE FALSE SET_OBJECT_COLLISION_DAMAGE_EFFECT objectFrontDoor TRUE SET_OBJECT_DYNAMIC objectFrontDoor TRUE BREAK_OBJECT objectFrontDoor TRUE // Create entrance smoke statusSmoke = 0 GOSUB Crash1_Update_Smoke ELSE // Remove the front door fire statusBigFires = 2 GOSUB Crash1_Update_Big_Fires ENDIF // Deal with guy on fire IF NOT IS_CHAR_DEAD charGuyOnFire SET_CHAR_COORDINATES charGuyOnFire 2352.1809 -1164.8928 26.4392 START_CHAR_FIRE charGuyOnFire fireGuyOnFire SET_CHAR_HEALTH charGuyOnFire 1 CLEAR_CHAR_TASKS_IMMEDIATELY charGuyOnFire TASK_DIE charGuyOnFire ENDIF // Deal with girl's bedroom stuff IF DOES_OBJECT_EXIST objectWindow[5] //girls window // AND NOT HAS_OBJECT_BEEN_DAMAGED objectWindow[5] // BREAK_OBJECT objectWindow[5] TRUE DELETE_OBJECT objectWindow[5] ENDIF IF flagCutsceneGirlSmokeCreated = 0 // Create Coochie Window smoke statusSmoke = 4 GOSUB Crash1_Update_Smoke ENDIF // Front Door blip REMOVE_BLIP blipDestination xposTemp = 2352.0371 yposTemp = -1170.3175 zposTemp = 26.9702 ADD_BLIP_FOR_COORD xposTemp yposTemp zposTemp blipDestination // Camera angles and allowing entrance into the house, etc GOSUB Crash1_Enter_House_Cutscene_Quit // GangOutside if they were teleported REPEAT 5 nTempPed IF NOT IS_CHAR_DEAD charGangOutside[nTempPed] IF aiGangOutside[nTempPed] = 6 // ...this guy was teleported GOSUB Crash1_GangOutside_Move_Back_After_Cutscene ENDIF ENDIF ENDREPEAT // GangBackup if they were teleported IF aiGangBackup = 5 GOSUB Crash1_GangBackup_Move_Back_After_Cutscene ENDIF RETURN // ************************************************************************************************************* // MISSION SPECIFIC GOSUBS // ************************************************************************************************************* // ************************************************************************************************************* // MOLOTOVS ON ROUTE // ************************************************************************************************************* // **************************************** // Create Molotovs On Route Crash1_Create_MolotovsOnRoute: // Generate Molotovs on Route pickup xposTemp = 1785.6981 yposTemp = -1222.1055 zposTemp = 16.9119 nTempInt = 0 CREATE_PICKUP_WITH_AMMO MOLOTOV PICKUP_ONCE 25 xposTemp yposTemp zposTemp pickupMolotovsOnRoute ADD_BLIP_FOR_PICKUP pickupMolotovsOnRoute blipMolotovsOnRoute RETURN // ************************************************************************************************************* // "GANG OUTSIDE" GUYS // ************************************************************************************************************* // **************************************** // GANG OUTSIDE'S AI Crash1_Update_GangOutside_AI: // AI STATES // -1: Not Initialised // 0: Playing Idle Anims // 1: Insult and Going Closer // 2: Orientate // 3: Chasing (OBSOLETE) // 4: Shooting // 5: At start of cutscene, teleport if in area around door // 6: Stand Still during cutscene // Check if this gang member is alive IF IS_CHAR_DEAD charGangOutside[nTempPed] flagGangOutsideInjuredOrDead = 1 RETURN ENDIF // Update AI states SWITCH aiGangOutside[nTempPed] // Not Initialised CASE -1 GOSUB Crash1_GangOutside_Play_Idle_Anim aiGangOutside[nTempPed] = 0 BREAK // Playing Idle Anims CASE 0 GOSUB Crash1_GangOutside_Update_Playing_Idle_Anims BREAK // Insult and Going Closer CASE 1 GOSUB Crash1_GangOutside_Update_Insult_And_Going_Closer BREAK // Orientate CASE 2 GOSUB Crash1_GangOutside_Update_Orientating BREAK // Chasing (obsolete) CASE 3 BREAK // Shooting CASE 4 GOSUB Crash1_GangOutside_Update_Shooting BREAK // Possible Teleport CASE 5 GOSUB Crash1_GangOutside_Possible_Teleport BREAK // Stand Still during cutscene CASE 6 GOSUB Crash1_GangOutside_Stand_Still BREAK ENDSWITCH RETURN // **************************************** // GANG OUTSIDE PLAY IDLE ANIMS Crash1_GangOutside_Play_Idle_Anim: SWITCH nTempPed // Mechanic CASE 0 TASK_PLAY_ANIM_NON_INTERRUPTABLE charGangOutside[nTempPed] wash_up BD_FIRE 1.0 TRUE FALSE FALSE FALSE -1 BREAK // Phone Guy CASE 1 TASK_PLAY_ANIM charGangOutside[nTempPed] phone_talk PED 1.0 TRUE FALSE FALSE FALSE -1 BREAK // Smokers DEFAULT TASK_PLAY_ANIM charGangOutside[nTempPed] M_smklean_loop BD_FIRE 1.0 TRUE FALSE FALSE FALSE -1 ENDSWITCH RETURN // **************************************** // GANG OUTSIDE UPDATE PLAYING IDLE ANIMS Crash1_GangOutside_Update_Playing_Idle_Anims: // IF the house is burning, then Shoot // IF there has been a projectile and a fire in the area, then Shoot // IF a call for help has been issued, then Orientate // IF a friend injured or dead then Shoot // IF myself injured then Shoot // OTHERWISE IF the player has not been detected, then check for player detection // Is the house burning? IF flagHouseBurning = 1 GOSUB Crash1_GangOutside_Shoot RETURN ENDIF // Has there been a projectile and a fire in the area // (ie: has the player thrown a molotov) IF flagProjectileAroundHouse = 1 AND flagFireAroundHouse = 1 GOSUB Crash1_GangOutside_Shoot RETURN ENDIF // Has there been a call for help? IF flagGangOutsideCallForHelp = 1 GOSUB Crash1_GangOutside_Orientate RETURN ENDIF // Has a friend been injured or killed? IF flagGangOutsideInjuredOrDead = 1 GOSUB Crash1_GangOutside_Shoot RETURN ENDIF // Have I been injured? IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR charGangOutside[nTempPed] scplayer GOSUB Crash1_GangOutside_Shoot flagGangOutsideInjuredOrDead = 1 RETURN ENDIF // Is this gang member the first to detect the player? // Do nothing else if the player has already been detected by someone IF flagGangOutsidePlayerDetected = 1 RETURN ENDIF // Check if any gang member (except the mechanic) has spotted the Player SWITCH nTempPed // Mechanic CASE 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D charGangOutside[nTempPed] scplayer 3.0 3.0 FALSE GOSUB Crash1_GangOutside_Insult_And_Go_Closer ENDIF BREAK // Phone Guy CASE 1 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D charGangOutside[nTempPed] scplayer 3.0 3.0 FALSE GOSUB Crash1_GangOutside_Insult_And_Go_Closer ENDIF BREAK // Front Door guy CASE 2 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D charGangOutside[nTempPed] scplayer 3.0 3.0 FALSE GOSUB Crash1_GangOutside_Insult_And_Go_Closer ENDIF BREAK // Tree guy CASE 3 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D charGangOutside[nTempPed] scplayer 3.0 3.0 FALSE GOSUB Crash1_GangOutside_Insult_And_Go_Closer ENDIF BREAK // Other House guy CASE 4 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D charGangOutside[nTempPed] scplayer 3.0 3.0 FALSE GOSUB Crash1_GangOutside_Insult_And_Go_Closer ENDIF BREAK ENDSWITCH RETURN // **************************************** // GANG OUTSIDE INSULT AND GO CLOSER Crash1_GangOutside_Insult_And_Go_Closer: // SHOUT: Take this punk down SET_CHAR_SAY_CONTEXT charGangOutside[nTempPed] CONTEXT_GLOBAL_ABUSE_GANG_LSV nIgnore // ...the tree guy should not run to the player because he looks really stupid, all others should // unless the player is in a car IF NOT IS_CHAR_IN_ANY_CAR scplayer // ...run towards the player TASK_GOTO_CHAR charGangOutside[nTempPed] scplayer 5000 3.0 ENDIF // Housekeeping aiGangOutside[nTempPed] = 1 flagGangOutsidePlayerDetected = 1 RETURN // **************************************** // GANG OUTSIDE UPDATE INSULT AND GOING CLOSER Crash1_GangOutside_Update_Insult_And_Going_Closer: // Check if reached player // Check if the TASK_GOTO_CHAR is still active GET_SCRIPT_TASK_STATUS charGangOutside[nTempPed] TASK_GOTO_CHAR m_status IF m_status = FINISHED_TASK // ...task has ended // Set the 'call for help' flag so that other gang members respond flagGangOutsideCallForHelp = 1 // Make this gang member move into 'close to player' mode GOSUB Crash1_GangOutside_Shoot ENDIF RETURN // **************************************** // GANG OUTSIDE SHOOT Crash1_GangOutside_Shoot: // Make the gang member enter a shooting phase // Clear current tasks CLEAR_CHAR_TASKS_IMMEDIATELY charGangOutside[nTempPed] // Issue attacking task SET_CHAR_DECISION_MAKER charGangOutside[nTempPed] dmTough TASK_KILL_CHAR_ON_FOOT charGangOutside[nTempPed] scplayer aiGangOutside[nTempPed] = 4 RETURN // **************************************** // GANG OUTSIDE UPDATE SHOOTING Crash1_GangOutside_Update_Shooting: // If the gang member is a distance away from the player, then swap to a GOTO task // If the Enter House cutscene is playing then change to the 'possible teleport' ai status IF flagEnterHouseCutscenePlaying = 1 aiGangOutside[nTempPed] = 5 RETURN ENDIF // Get Player Coords GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp xloTemp = xposTemp yloTemp = yposTemp // Get Gang Member coordinates GET_CHAR_COORDINATES charGangOutside[nTempPed] xposTemp yposTemp zposTemp xhiTemp = xposTemp yhiTemp = yposTemp // Get the distance between the coordinates GET_DISTANCE_BETWEEN_COORDS_2D xloTemp yloTemp xhiTemp yhiTemp fTempFloat // If the distance gets too great, then swap to an ORIENTATE task IF fTempFloat > 38.000 GOSUB Crash1_GangOutside_Orientate RETURN ENDIF // Otherwise, ensure the Ped doesn't switch out of the combat mode GET_SCRIPT_TASK_STATUS charGangOutside[nTempPed] TASK_KILL_CHAR_ON_FOOT m_status IF m_status = FINISHED_TASK // ...task shouldn't be finished, so re-issue GOSUB Crash1_GangOutside_Shoot ENDIF RETURN // **************************************** // GANG OUTSIDE ORIENTATE Crash1_GangOutside_Orientate: // Make the gang member Orientate // If the Enter House cutscene is playing then change to the 'possible teleport' ai status IF flagEnterHouseCutscenePlaying = 1 aiGangOutside[nTempPed] = 5 RETURN ENDIF // Clear current tasks CLEAR_CHAR_TASKS_IMMEDIATELY charGangOutside[nTempPed] // Get the Required Heading // ...get player coords GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp xloTemp = xposTemp yloTemp = yposTemp // ...get Gang Member coords GET_CHAR_COORDINATES charGangOutside[nTempPed] xposTemp yposTemp zposTemp xhiTemp = xposTemp yhiTemp = yposTemp // Calculate Vector xposTemp = xloTemp - xhiTemp yposTemp = yloTemp - yhiTemp GET_HEADING_FROM_VECTOR_2D xposTemp yposTemp headTemp // Orientate TASK_ACHIEVE_HEADING charGangOutside[nTempPed] headTemp aiGangOutside[nTempPed] = 2 RETURN // **************************************** // GANG OUTSIDE UPDATE ORIENTATING Crash1_GangOutside_Update_Orientating: // If close to player, then swap to a SHOOT task // Periodically, re-issue the Orientate task // Get Player Coords GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp xloTemp = xposTemp yloTemp = yposTemp // Get Gang Member coordinates GET_CHAR_COORDINATES charGangOutside[nTempPed] xposTemp yposTemp zposTemp xhiTemp = xposTemp yhiTemp = yposTemp // Get the distance between the coordinates GET_DISTANCE_BETWEEN_COORDS_2D xloTemp yloTemp xhiTemp yhiTemp fTempFloat // If the distance is short, then swap to a SHOOT task IF fTempFloat < 35.0000 GOSUB Crash1_GangOutside_Shoot RETURN ENDIF // Distance is not short, so check if it is time to re-issue the orientate task IF flagOrientate = 1 GOSUB Crash1_GangOutside_Orientate ENDIF RETURN // **************************************** // GANG OUTSIDE POSSIBLE TELEPORT Crash1_GangOutside_Possible_Teleport: // Move the Gang Outside member to a temporary hidden position for the cutscene GOSUB Crash1_GangOutside_Hide_During_Cutscene // Get the ped to stand still CLEAR_CHAR_TASKS_IMMEDIATELY charGangOutside[nTempPed] SET_CHAR_DECISION_MAKER charGangOutside[nTempPed] dmEmpty TASK_STAND_STILL charGangOutside[nTempPed] -2 aiGangOutside[nTempPed] = 6 // NOTE: Ned to freeze the ped in place, but do this on the next frame RETURN // **************************************** // GANG OUTSIDE STAND STILL Crash1_GangOutside_Stand_Still: // While the cutscene is still playing, stay standing still IF flagEnterHouseCutscenePlaying = 1 // Ensure still playing stand still GET_SCRIPT_TASK_STATUS charGangOutside[nTempPed] TASK_STAND_STILL m_status IF m_status = FINISHED_TASK CLEAR_CHAR_TASKS_IMMEDIATELY charGangOutside[nTempPed] TASK_STAND_STILL charGangOutside[nTempPed] -2 ENDIF RETURN ENDIF // Swap to a Shooting task CLEAR_CHAR_TASKS_IMMEDIATELY charGangOutside[nTempPed] SET_CHAR_DECISION_MAKER charGangOutside[nTempPed] dmTough TASK_KILL_CHAR_ON_FOOT charGangOutside[nTempPed] scplayer aiGangOutside[nTempPed] = 4 RETURN // **************************************** // GANG OUTSIDE HIDE DURING CUTSCENE Crash1_GangOutside_Hide_During_Cutscene: // Get and store current coords GET_CHAR_COORDINATES charGangOutside[nTempPed] xposGangOutsideHold[nTempPed] yposGangOutsideHold[nTempPed] zposGangOutsideHold[nTempPed] // Move the Gang Outside member to a temporary hidden position // NOTE: There are 7 sets of coords because the Gang Backup guys will get moved also SWITCH countNextTempCutscenePosition CASE 0 SET_CHAR_COORDINATES charGangOutside[nTempPed] 2319.3142 -1202.8967 26.9609 BREAK CASE 1 SET_CHAR_COORDINATES charGangOutside[nTempPed] 2315.9771 -1204.6580 26.9609 BREAK CASE 2 SET_CHAR_COORDINATES charGangOutside[nTempPed] 2318.9915 -1207.2223 26.9615 BREAK CASE 3 SET_CHAR_COORDINATES charGangOutside[nTempPed] 2315.7451 -1210.2960 26.9609 BREAK CASE 4 SET_CHAR_COORDINATES charGangOutside[nTempPed] 2318.0896 -1212.9161 26.9609 BREAK CASE 5 SET_CHAR_COORDINATES charGangOutside[nTempPed] 2314.1089 -1215.6415 26.9609 BREAK CASE 6 SET_CHAR_COORDINATES charGangOutside[nTempPed] 2316.0420 -1219.5007 26.9609 BREAK DEFAULT RETURN ENDSWITCH countNextTempCutscenePosition++ RETURN // **************************************** // GANG OUTSIDE HIDE DURING CUTSCENE Crash1_GangOutside_Move_Back_After_Cutscene: // Store the original coords REPEAT 5 nLoop IF NOT IS_CHAR_DEAD charGangOutside[nLoop] SET_CHAR_COORDINATES charGangOutside[nLoop] xposGangOutsideHold[nLoop] yposGangOutsideHold[nLoop] zposGangOutsideHold[nLoop] ENDIF ENDREPEAT RETURN // ************************************************************************************************************* // TARGET ROOMS // ************************************************************************************************************* // **************************************** // SETUP TARGET ROOMS Crash1_Setup_Target_Rooms: // Set up invisible ammo boxes so that blips can be attached to show which windows need smashed // ...window 0 xposTemp = 2346.0469 yposTemp = -1189.6610 zposTemp = 27.9709 nTempInt = 0 CREATE_OBJECT CR_AMMOBOX xposTemp yposTemp zposTemp objectTargetRoom[nTempInt] SET_OBJECT_VISIBLE objectTargetRoom[nTempInt] FALSE SET_OBJECT_COLLISION objectTargetRoom[nTempInt] FALSE ADD_BLIP_FOR_OBJECT objectTargetRoom[nTempInt] blipTargetRoom[nTempInt] CHANGE_BLIP_COLOUR blipTargetRoom[nTempInt] RED SET_OBJECT_HEALTH objectTargetRoom[nTempInt] 1 // ...window 1 xposTemp = 2336.0449 yposTemp = -1189.6610 zposTemp = 27.9709 nTempInt++ CREATE_OBJECT CR_AMMOBOX xposTemp yposTemp zposTemp objectTargetRoom[nTempInt] SET_OBJECT_VISIBLE objectTargetRoom[nTempInt] FALSE SET_OBJECT_COLLISION objectTargetRoom[nTempInt] FALSE ADD_BLIP_FOR_OBJECT objectTargetRoom[nTempInt] blipTargetRoom[nTempInt] CHANGE_BLIP_COLOUR blipTargetRoom[nTempInt] RED SET_OBJECT_HEALTH objectTargetRoom[nTempInt] 1 // ...window 2 xposTemp = 2326.4087 yposTemp = -1189.6610 zposTemp = 27.9709 nTempInt++ CREATE_OBJECT CR_AMMOBOX xposTemp yposTemp zposTemp objectTargetRoom[nTempInt] SET_OBJECT_VISIBLE objectTargetRoom[nTempInt] FALSE SET_OBJECT_COLLISION objectTargetRoom[nTempInt] FALSE ADD_BLIP_FOR_OBJECT objectTargetRoom[nTempInt] blipTargetRoom[nTempInt] CHANGE_BLIP_COLOUR blipTargetRoom[nTempInt] RED SET_OBJECT_HEALTH objectTargetRoom[nTempInt] 1 // ...window 3 xposTemp = 2345.8977 yposTemp = -1170.0438 zposTemp = 27.9709 nTempInt++ CREATE_OBJECT CR_AMMOBOX xposTemp yposTemp zposTemp objectTargetRoom[nTempInt] SET_OBJECT_VISIBLE objectTargetRoom[nTempInt] FALSE SET_OBJECT_COLLISION objectTargetRoom[nTempInt] FALSE ADD_BLIP_FOR_OBJECT objectTargetRoom[nTempInt] blipTargetRoom[nTempInt] CHANGE_BLIP_COLOUR blipTargetRoom[nTempInt] RED SET_OBJECT_HEALTH objectTargetRoom[nTempInt] 1 // ...window 4 xposTemp = 2326.4067 yposTemp = -1170.0438 zposTemp = 27.9709 nTempInt++ CREATE_OBJECT CR_AMMOBOX xposTemp yposTemp zposTemp objectTargetRoom[nTempInt] SET_OBJECT_VISIBLE objectTargetRoom[nTempInt] FALSE SET_OBJECT_COLLISION objectTargetRoom[nTempInt] FALSE ADD_BLIP_FOR_OBJECT objectTargetRoom[nTempInt] blipTargetRoom[nTempInt] CHANGE_BLIP_COLOUR blipTargetRoom[nTempInt] RED SET_OBJECT_HEALTH objectTargetRoom[nTempInt] 1 RETURN // **************************************** // SETUP HIT TARGET ROOM AREAS Crash1_Setup_Target_Room_Hit_Areas: // Setup the Areas that the molotovs need to hit to be classed as setting the room on fire // ...window 0 nTempInt = 0 xloAreaHitTargetRoom[nTempInt] = 2345.9788 - 2.1000 xhiAreaHitTargetRoom[nTempInt] = 2345.9788 + 2.1000 yloAreaHitTargetRoom[nTempInt] = -1188.8 - 0.8000 yhiAreaHitTargetRoom[nTempInt] = -1188.8 + 0.8000 zloAreaHitTargetRoom[nTempInt] = 28.8649 - 1.2000 zhiAreaHitTargetRoom[nTempInt] = 28.8649 + 1.2000 flagTargetRoomHit[nTempInt] = FALSE flagTargetRoomBurning[nTempInt] = FALSE // ...window 1 nTempInt++ xloAreaHitTargetRoom[nTempInt] = 2336.1875 - 2.1000 xhiAreaHitTargetRoom[nTempInt] = 2336.1875 + 2.1000 yloAreaHitTargetRoom[nTempInt] = -1188.8 - 0.8000 yhiAreaHitTargetRoom[nTempInt] = -1188.8 + 0.8000 zloAreaHitTargetRoom[nTempInt] = 28.8649 - 1.2000 zhiAreaHitTargetRoom[nTempInt] = 28.8649 + 1.2000 flagTargetRoomHit[nTempInt] = FALSE flagTargetRoomBurning[nTempInt] = FALSE // ...window 2 nTempInt++ xloAreaHitTargetRoom[nTempInt] = 2326.2551 - 2.1000 xhiAreaHitTargetRoom[nTempInt] = 2326.2551 + 2.1000 yloAreaHitTargetRoom[nTempInt] = -1188.8 - 0.8000 yhiAreaHitTargetRoom[nTempInt] = -1188.8 + 0.8000 zloAreaHitTargetRoom[nTempInt] = 28.8649 - 1.2000 zhiAreaHitTargetRoom[nTempInt] = 28.8649 + 1.2000 flagTargetRoomHit[nTempInt] = FALSE flagTargetRoomBurning[nTempInt] = FALSE // ...window 3 nTempInt++ xloAreaHitTargetRoom[nTempInt] = 2346.1160 - 2.1000 xhiAreaHitTargetRoom[nTempInt] = 2346.1160 + 2.1000 yloAreaHitTargetRoom[nTempInt] = -1171.0 - 0.8000 yhiAreaHitTargetRoom[nTempInt] = -1171.0 + 0.8000 zloAreaHitTargetRoom[nTempInt] = 28.8649 - 1.2000 zhiAreaHitTargetRoom[nTempInt] = 28.8649 + 1.2000 flagTargetRoomHit[nTempInt] = FALSE flagTargetRoomBurning[nTempInt] = FALSE // ...window 4 nTempInt++ xloAreaHitTargetRoom[nTempInt] = 2326.2551 - 2.1000 xhiAreaHitTargetRoom[nTempInt] = 2326.2551 + 2.1000 yloAreaHitTargetRoom[nTempInt] = -1171.0 - 0.8000 yhiAreaHitTargetRoom[nTempInt] = -1171.0 + 0.8000 zloAreaHitTargetRoom[nTempInt] = 28.8649 - 1.2000 zhiAreaHitTargetRoom[nTempInt] = 28.8649 + 1.2000 flagTargetRoomHit[nTempInt] = FALSE flagTargetRoomBurning[nTempInt] = FALSE RETURN // **************************************** // UPDATE TARGET ROOMS HIT Crash1_Update_Target_Rooms_Hit: // Check if this room already been hit. IF flagTargetRoomHit[nTempObject] = 1 RETURN ENDIF // The room hasn't yet been hit, so check if it has now been hit IF IS_PROJECTILE_IN_AREA xloAreaHitTargetRoom[nTempObject] yloAreaHitTargetRoom[nTempObject] zloAreaHitTargetRoom[nTempObject] xhiAreaHitTargetRoom[nTempObject] yhiAreaHitTargetRoom[nTempObject] zhiAreaHitTargetRoom[nTempObject] // Smash the window if it isn't already smashed // NOTE: Although there are 8 windows, the first five are the ones for the rooms that need to be set on fire IF NOT HAS_OBJECT_BEEN_DAMAGED objectWindow[nTempObject] BREAK_OBJECT objectWindow[nTempObject] TRUE ENDIF // Mark this room as being on fire, and increase the total hit flagTargetRoomHit[nTempObject] = 1 // Set the House Burning flag to make the Peds react flagHouseBurning = 1 // Remove the blip DELETE_OBJECT objectTargetRoom[nTempObject] REMOVE_BLIP blipTargetRoom[nTempObject] // Start a timer saying target room hit timerTargetRoomHitText = m_mission_timer + 500 ENDIF RETURN // **************************************** // Choose Random 'Room Hit' text Crash1_Print_Random_RoomHit_Text: // Print target room hit text GENERATE_RANDOM_INT_IN_RANGE 0 5 nTempInt SWITCH nTempInt CASE 0 PRINT_NOW CRA1_30 4000 1 BREAK CASE 1 PRINT_NOW CRA1_31 4000 1 BREAK CASE 2 PRINT_NOW CRA1_32 4000 1 BREAK CASE 3 PRINT_NOW CRA1_33 4000 1 BREAK CASE 4 PRINT_NOW CRA1_34 4000 1 BREAK ENDSWITCH RETURN // ************************************************************************************************************* // MOLOTOV PICKUPS // ************************************************************************************************************* // **************************************** // CHECK IF MOLOTOV PICKUPS REQUIRED Crash1_CheckIf_Molotov_Pickups_Required: // If the Player has no ammo and there are still some rooms that need to be set on fire, then create pickups GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_MOLOTOV nTempAmmo IF nTempAmmo = 0 AND countTargetRoomsHit < 5 IF flagMoreMolotovsRequired = FALSE // Start a timer to allow this section to end without creating the molotovs if the last window // is about to be broken timerMoreMolotovsRequired = m_mission_timer + 3000 flagMoreMolotovsRequired = TRUE RETURN ENDIF // Has the timer elapsed? IF NOT timerMoreMolotovsRequired < m_mission_timer RETURN ENDIF // Reset the variables timerMoreMolotovsRequired = 0 flagMoreMolotovsRequired = FALSE // Generate pickups // ...molotov pickup 0 xposTemp = 2337.6023 yposTemp = -1169.3689 zposTemp = 28.2207 nTempInt = 0 CREATE_PICKUP_WITH_AMMO MOLOTOV PICKUP_ONCE 25 xposTemp yposTemp zposTemp pickupMolotovs[nTempInt] ADD_BLIP_FOR_PICKUP pickupMolotovs[nTempInt] blipMolotovPickups[nTempInt] // ...molotov pickup 1 xposTemp = 2334.1289 yposTemp = -1200.4379 zposTemp = 28.1609 nTempInt++ CREATE_PICKUP_WITH_AMMO MOLOTOV PICKUP_ONCE 25 xposTemp yposTemp zposTemp pickupMolotovs[nTempInt] ADD_BLIP_FOR_PICKUP pickupMolotovs[nTempInt] blipMolotovPickups[nTempInt] // Temporarily remove the Target Rooms blips REPEAT 5 nLoop IF flagTargetRoomHit[nLoop] = 0 REMOVE_BLIP blipTargetRoom[nLoop] ENDIF ENDREPEAT // There are more molotovs nearby PRINT_NOW CRA1_03 5000 1 flagMolotovPickupsActive = 1 ENDIF RETURN // **************************************** // CHECK IF MOLOTOV PICKUPS COLLECTED Crash1_CheckIf_Molotov_Pickups_Collected: // If either pickup has been collected, then remove both pickups IF HAS_PICKUP_BEEN_COLLECTED pickupMolotovs[0] OR HAS_PICKUP_BEEN_COLLECTED pickupMolotovs[1] // Remove Pickups REPEAT 2 nLoop REMOVE_PICKUP pickupMolotovs[nLoop] REMOVE_BLIP blipMolotovPickups[nLoop] ENDREPEAT // Add the Target Rooms blips again REPEAT 5 nLoop IF flagTargetRoomHit[nLoop] = 0 ADD_BLIP_FOR_OBJECT objectTargetRoom[nLoop] blipTargetRoom[nLoop] CHANGE_BLIP_COLOUR blipTargetRoom[nLoop] RED ENDIF ENDREPEAT flagMolotovPickupsActive = 0 ENDIF RETURN // ************************************************************************************************************* // "GANG BACKUP" GUYS // ************************************************************************************************************* // **************************************** // UPDATE GANG BACKUP CAR Crash1_Update_GangBackup: // AI STATUS // -1: Not Initialised // 0: Car Doing Goto // 1: Car Doing Left Turn // 2: Car Doing Handbrake Turn // 3: Gang exiting car // 4: Gang Backup On Foot // 5: Gang Backup During Cutscene SWITCH aiGangBackup // Not Initialised CASE -1 GOSUB Crash1_Create_GangBackup BREAK // Car Doing Goto CASE 0 GOSUB Crash1_GangBackup_Car_Doing_Goto BREAK // Car Doing Turn CASE 1 GOSUB Crash1_GangBackup_Car_Turning BREAK // Car Doing Handbreak Turn CASE 2 GOSUB Crash1_GangBackup_Car_Handbraking BREAK // Gang exiting car CASE 3 GOSUB Crash1_GangBackup_Exiting_Car BREAK // Gang on Foot CASE 4 GOSUB Crash1_GangBackup_On_Foot BREAK // Gang during cutscene CASE 5 GOSUB Crash1_GangBackup_During_Cutscene BREAK ENDSWITCH RETURN // ******************************* // Gang Backup Car and Peds Crash1_Create_GangBackup: IF NOT countTargetRoomsHit = 2 RETURN ENDIF // The Car xposTemp = 2370.7917 //2416.7803 yposTemp = -1250.8990 //-1158.0902 zposTemp = 22.8451 //30.0039 headTemp = 358.0048 //90.0406 CLEAR_AREA xposTemp yposTemp zposTemp 10.0 FALSE CREATE_CAR VOODOO xposTemp yposTemp zposTemp carGangBackup SET_CAR_HEADING carGangBackup headTemp SET_CAR_CRUISE_SPEED carGangBackup 100.0 SET_CAR_DRIVING_STYLE carGangBackup 2 // The Peds // ...gang backup 0 nTempInt = 0 CREATE_CHAR_INSIDE_CAR carGangBackup PEDTYPE_GANG_SMEX LSV2 charGangBackup[nTempInt] GIVE_WEAPON_TO_CHAR charGangBackup[nTempInt] WEAPONTYPE_PISTOL 999 SET_CHAR_IS_TARGET_PRIORITY charGangBackup[nTempInt] TRUE // ...gang backup 1 nTempInt++ CREATE_CHAR_AS_PASSENGER carGangBackup PEDTYPE_GANG_SMEX LSV1 0 charGangBackup[nTempInt] GIVE_WEAPON_TO_CHAR charGangBackup[nTempInt] WEAPONTYPE_PISTOL 999 SET_CHAR_IS_TARGET_PRIORITY charGangBackup[nTempInt] TRUE // Get the Car to the House xposGangBackup = 2370.7917 //2376.2666 yposGangBackup = -1185.6624 //-1155.0165 zposGangBackup = 26.4297 //26.4531 CAR_GOTO_COORDINATES carGangBackup xposGangBackup yposGangBackup zposGangBackup // Housekeeping aiGangBackup = 0 existsGangBackup = 1 RETURN // **************************************** // GANG BACKUP CAR DOING GOTO Crash1_GangBackup_Car_Doing_Goto: // If car is dead, go to ped actions IF IS_CAR_DEAD carGangBackup aiGangBackup = 2 RETURN ENDIF // Car not dead, so see if it has arrived at it's destination IF LOCATE_CAR_2D carGangBackup xposGangBackup yposGangBackup 6.0 6.0 FALSE // ...arrived, so do a turn SET_CAR_TEMP_ACTION carGangBackup TEMPACT_TURNLEFT 500 timerGangBackup = m_mission_timer + 350 aiGangBackup = 1 ENDIF RETURN // **************************************** // GANG BACKUP CAR TURNING Crash1_GangBackup_Car_Turning: // If car is dead, go to ped actions IF IS_CAR_DEAD carGangBackup aiGangBackup = 2 RETURN ENDIF // Check if finished performing turn IF timerGangBackup < m_mission_timer // ...timer elapsed, so do a handbrake turn SET_CAR_TEMP_ACTION carGangBackup TEMPACT_HANDBRAKETURNLEFT 5000 aiGangBackup = 2 ENDIF RETURN // **************************************** // GANG BACKUP CAR HANDBRAKING Crash1_GangBackup_Car_Handbraking: // If car is stopped, then move on to the next stage IF IS_CAR_DEAD carGangBackup OR IS_CAR_STOPPED carGangBackup // First gang member nTempPed = 0 IF NOT IS_CHAR_DEAD charGangBackup[nTempPed] // Issue leave car TASK_LEAVE_CAR charGangBackup[nTempPed] carGangBackup ENDIF // Second gang member nTempPed++ IF NOT IS_CHAR_DEAD charGangBackup[nTempPed] // Issue leave car TASK_LEAVE_CAR charGangBackup[nTempPed] carGangBackup ENDIF aiGangBackup = 3 ENDIF RETURN // **************************************** // GANG BACKUP EXIT CAR Crash1_GangBackup_Exiting_Car: // Check if both gang members have exited the car // ...member 0 nTempPed = 0 IF NOT IS_CHAR_DEAD charGangBackup[nTempPed] // Check if performing "leave car" GET_SCRIPT_TASK_STATUS charGangBackup[nTempPed] TASK_LEAVE_CAR m_status IF NOT m_status = FINISHED_TASK RETURN ENDIF ENDIF // ...member 1 nTempPed++ IF NOT IS_CHAR_DEAD charGangBackup[nTempPed] // Check if performing "leave car" GET_SCRIPT_TASK_STATUS charGangBackup[nTempPed] TASK_LEAVE_CAR m_status IF NOT m_status = FINISHED_TASK RETURN ENDIF ENDIF // Noth are either dead or have exited the car aiGangBackup = 4 RETURN // **************************************** // GANG BACKUP ON FOOT Crash1_GangBackup_On_Foot: // Check if Cutscene playing IF flagEnterHouseCutscenePlaying = 1 nTempPed = 0 IF NOT IS_CHAR_DEAD charGangBackup[nTempPed] CLEAR_CHAR_TASKS_IMMEDIATELY charGangBackup[nTempPed] SET_CHAR_DECISION_MAKER charGangBackup[nTempPed] dmEmpty TASK_STAND_STILL charGangBackup[nTempPed] -2 ENDIF nTempPed++ IF NOT IS_CHAR_DEAD charGangBackup[nTempPed] CLEAR_CHAR_TASKS_IMMEDIATELY charGangBackup[nTempPed] SET_CHAR_DECISION_MAKER charGangBackup[nTempPed] dmEmpty TASK_STAND_STILL charGangBackup[nTempPed] -2 ENDIF // Move them out of the way during the cutscene GOSUB Crash1_GangBackup_Hide_During_Cutscene aiGangBackup = 5 RETURN ENDIF // Update first gang member nTempPed = 0 IF NOT IS_CHAR_DEAD charGangBackup[nTempPed] // Check if performing "kill player" GET_SCRIPT_TASK_STATUS charGangBackup[nTempPed] TASK_KILL_CHAR_ON_FOOT m_status IF m_status = FINISHED_TASK // ...task shouldn't be finished, so re-issue CLEAR_CHAR_TASKS_IMMEDIATELY charGangBackup[nTempPed] // Issue attacking task SET_CHAR_DECISION_MAKER charGangBackup[nTempPed] dmTough TASK_KILL_CHAR_ON_FOOT charGangBackup[nTempPed] scplayer ENDIF ENDIF // Update second gang member nTempPed++ IF NOT IS_CHAR_DEAD charGangBackup[nTempPed] // Check if performing "kill player" GET_SCRIPT_TASK_STATUS charGangBackup[nTempPed] TASK_KILL_CHAR_ON_FOOT m_status IF m_status = FINISHED_TASK // ...task shouldn't be finished, so re-issue CLEAR_CHAR_TASKS_IMMEDIATELY charGangBackup[nTempPed] // Issue attacking task SET_CHAR_DECISION_MAKER charGangBackup[nTempPed] dmTough TASK_KILL_CHAR_ON_FOOT charGangBackup[nTempPed] scplayer ENDIF ENDIF RETURN // **************************************** // GANG BACKUP DURING CUTSCENE Crash1_GangBackup_During_Cutscene: // While the cutscene is still playing, stay standing still IF flagEnterHouseCutscenePlaying = 1 // Ensure still playing stand still nTempPed = 0 IF NOT IS_CHAR_DEAD charGangBackup[nTempPed] GET_SCRIPT_TASK_STATUS charGangBackup[nTempPed] TASK_STAND_STILL m_status IF m_status = FINISHED_TASK CLEAR_CHAR_TASKS_IMMEDIATELY charGangBackup[nTempPed] TASK_STAND_STILL charGangBackup[nTempPed] -2 ENDIF ENDIF nTempPed++ IF NOT IS_CHAR_DEAD charGangBackup[nTempPed] GET_SCRIPT_TASK_STATUS charGangBackup[nTempPed] TASK_STAND_STILL m_status IF m_status = FINISHED_TASK CLEAR_CHAR_TASKS_IMMEDIATELY charGangBackup[nTempPed] TASK_STAND_STILL charGangBackup[nTempPed] -2 ENDIF ENDIF RETURN ENDIF // Swap to a Shooting task nTempPed = 0 IF NOT IS_CHAR_DEAD charGangBackup[nTempPed] CLEAR_CHAR_TASKS_IMMEDIATELY charGangBackup[nTempPed] SET_CHAR_DECISION_MAKER charGangBackup[nTempPed] dmTough TASK_KILL_CHAR_ON_FOOT charGangBackup[nTempPed] scplayer ENDIF nTempPed++ IF NOT IS_CHAR_DEAD charGangBackup[nTempPed] CLEAR_CHAR_TASKS_IMMEDIATELY charGangBackup[nTempPed] SET_CHAR_DECISION_MAKER charGangBackup[nTempPed] dmTough TASK_KILL_CHAR_ON_FOOT charGangBackup[nTempPed] scplayer ENDIF aiGangBackup = 4 RETURN // **************************************** // GANG BACKUP HIDE DURING CUTSCENE Crash1_GangBackup_Hide_During_Cutscene: REPEAT 2 nLoop IF NOT IS_CHAR_DEAD charGangBackup[nLoop] // Get and store current coords GET_CHAR_COORDINATES charGangBackup[nLoop] xposGangBackupHold[nLoop] yposGangBackupHold[nLoop] zposGangBackupHold[nLoop] // Move the Gang Outside member to a temporary hidden position // NOTE: There are 7 sets of coords because the Gang Outside guys will get moved also SWITCH countNextTempCutscenePosition CASE 0 SET_CHAR_COORDINATES charGangBackup[nLoop] 2319.3142 -1202.8967 26.9609 BREAK CASE 1 SET_CHAR_COORDINATES charGangBackup[nLoop] 2315.9771 -1204.6580 26.9609 BREAK CASE 2 SET_CHAR_COORDINATES charGangBackup[nLoop] 2318.9915 -1207.2223 26.9615 BREAK CASE 3 SET_CHAR_COORDINATES charGangBackup[nLoop] 2315.7451 -1210.2960 26.9609 BREAK CASE 4 SET_CHAR_COORDINATES charGangBackup[nLoop] 2318.0896 -1212.9161 26.9609 BREAK CASE 5 SET_CHAR_COORDINATES charGangBackup[nLoop] 2314.1089 -1215.6415 26.9609 BREAK CASE 6 SET_CHAR_COORDINATES charGangBackup[nLoop] 2316.0420 -1219.5007 26.9609 BREAK DEFAULT RETURN ENDSWITCH countNextTempCutscenePosition++ ENDIF ENDREPEAT RETURN // **************************************** // GANG BACKUP HIDE DURING CUTSCENE Crash1_GangBackup_Move_Back_After_Cutscene: // Store the original coords REPEAT 2 nLoop IF NOT IS_CHAR_DEAD charGangBackup[nLoop] SET_CHAR_COORDINATES charGangBackup[nLoop] xposGangBackupHold[nLoop] yposGangBackupHold[nLoop] zposGangBackupHold[nLoop] ENDIF ENDREPEAT RETURN // ************************************************************************************************************* // ENTER HOUSE CUTSCENE // ************************************************************************************************************* // **************************************** // CREATE GUY ON FIRE Crash1_Enter_House_Cutscene_Begin: SET_PLAYER_CONTROL player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE // Cut to guy bursting out of the front door on fire SET_FIXED_CAMERA_POSITION 2335.3389 -1159.1302 30.4689 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2336.1541 -1159.7073 30.4200 JUMP_CUT DO_FADE 1000 FADE_IN timerCutscene = m_mission_timer + 1500 RETURN // **************************************** // UPDATE FIRES Crash1_Update_Fires_Exterior: IF statusFires = CRASH1_EXTERIOR_FIRE_ALL REMOVE_ALL_SCRIPT_FIRES ENDIF // NOTE: Randomly choose the size of the fire (between 1 and 3) IF statusFires = CRASH1_EXTERIOR_FIRE_ALL OR statusFires = CRASH1_EXTERIOR_FIRE_SMALL_BEDROOM GENERATE_RANDOM_INT_IN_RANGE 2 4 nTempInt START_SCRIPT_FIRE 2346.3552 -1172.7339 27.2957 1 nTempInt fireInHouse[0] GENERATE_RANDOM_INT_IN_RANGE 1 4 nTempInt START_SCRIPT_FIRE 2345.4836 -1171.8418 27.2957 0 nTempInt fireInHouse[1] GENERATE_RANDOM_INT_IN_RANGE 2 4 nTempInt START_SCRIPT_FIRE 2348.1709 -1173.4933 27.2957 0 nTempInt fireInHouse[2] GENERATE_RANDOM_INT_IN_RANGE 2 4 nTempInt START_SCRIPT_FIRE 2348.3870 -1172.3396 27.2957 1 nTempInt fireInHouse[3] ENDIF IF statusFires = CRASH1_EXTERIOR_FIRE_ALL OR statusFires = CRASH1_EXTERIOR_FIRE_LIVING_ROOM GENERATE_RANDOM_INT_IN_RANGE 1 4 nTempInt START_SCRIPT_FIRE 2347.9832 -1187.0693 27.2891 0 nTempInt fireInHouse[4] GENERATE_RANDOM_INT_IN_RANGE 1 4 nTempInt START_SCRIPT_FIRE 2347.7915 -1186.2532 27.2891 1 nTempInt fireInHouse[5] GENERATE_RANDOM_INT_IN_RANGE 2 4 nTempInt START_SCRIPT_FIRE 2346.1501 -1186.6389 27.2891 0 nTempInt fireInHouse[6] GENERATE_RANDOM_INT_IN_RANGE 1 4 nTempInt START_SCRIPT_FIRE 2345.9875 -1188.3011 27.2891 1 nTempInt fireInHouse[7] ENDIF IF statusFires = CRASH1_EXTERIOR_FIRE_ALL OR statusFires = CRASH1_EXTERIOR_FIRE_BIG_BEDROOM GENERATE_RANDOM_INT_IN_RANGE 1 4 nTempInt START_SCRIPT_FIRE 2334.9724 -1187.8058 27.0820 1 nTempInt fireInHouse[8] GENERATE_RANDOM_INT_IN_RANGE 1 4 nTempInt START_SCRIPT_FIRE 2334.1821 -1188.2694 27.0080 0 nTempInt fireInHouse[9] GENERATE_RANDOM_INT_IN_RANGE 2 4 nTempInt START_SCRIPT_FIRE 2335.7856 -1188.2498 27.7429 1 nTempInt fireInHouse[10] GENERATE_RANDOM_INT_IN_RANGE 1 4 nTempInt START_SCRIPT_FIRE 2335.4668 -1187.1431 27.5372 0 nTempInt fireInHouse[11] ENDIF IF statusFires = CRASH1_EXTERIOR_FIRE_ALL OR statusFires = CRASH1_EXTERIOR_FIRE_EXTRA_ROOM GENERATE_RANDOM_INT_IN_RANGE 2 4 nTempInt START_SCRIPT_FIRE 2323.4312 -1185.6132 27.2891 1 nTempInt fireInHouse[12] GENERATE_RANDOM_INT_IN_RANGE 1 4 nTempInt START_SCRIPT_FIRE 2324.5488 -1186.6141 27.2891 0 nTempInt fireInHouse[13] GENERATE_RANDOM_INT_IN_RANGE 1 4 nTempInt START_SCRIPT_FIRE 2325.3708 -1184.3833 27.2891 1 nTempInt fireInHouse[14] GENERATE_RANDOM_INT_IN_RANGE 2 4 nTempInt START_SCRIPT_FIRE 2324.7622 -1187.4618 27.2891 0 nTempInt fireInHouse[15] GENERATE_RANDOM_INT_IN_RANGE 1 3 nTempInt START_SCRIPT_FIRE 2324.7163 -1188.4775 30.5800 1 nTempInt fireInHouse[16] ENDIF IF statusFires = CRASH1_EXTERIOR_FIRE_ALL OR statusFires = CRASH1_EXTERIOR_FIRE_KITCHEN GENERATE_RANDOM_INT_IN_RANGE 2 4 nTempInt START_SCRIPT_FIRE 2322.2388 -1172.9714 27.1409 0 nTempInt fireInHouse[17] GENERATE_RANDOM_INT_IN_RANGE 1 4 nTempInt START_SCRIPT_FIRE 2322.2205 -1174.7516 27.2031 0 nTempInt fireInHouse[18] GENERATE_RANDOM_INT_IN_RANGE 1 4 nTempInt START_SCRIPT_FIRE 2323.6958 -1174.4291 27.2131 1 nTempInt fireInHouse[19] GENERATE_RANDOM_INT_IN_RANGE 2 4 nTempInt START_SCRIPT_FIRE 2325.1592 -1172.7932 27.1539 1 nTempInt fireInHouse[20] ENDIF // NOTE: Fires 21; 22; and 23 are for blocking pathways RETURN // **************************************** // UPDATE FIRES Crash1_Update_Fires_Interior: // STATUS // 0: Remove ALL fires as seen from outside, and reactivate them 1000, higher // 1: Clear out and re-activate the fires in the first two rooms // NOTE: These fires get put out automatically by code when I switch player control off // to play the 'get the fire extinguisher' cutscene IF statusFires = 0 REMOVE_ALL_SCRIPT_FIRES ENDIF IF statusFires = 1 REPEAT 8 nLoop REMOVE_SCRIPT_FIRE fireInHouse[nLoop] ENDREPEAT ENDIF // NOTE: Randomly choose the size of the fire (between 1 and 3) // ***************************** // // 26/6/04 // TEMP: Only use size 1 and 2 because size 3 are HUGE // NOTE: So this will be a random int between 1 and 3 to produce results of 1 or 2 // // 28/6/04 // Fires are no longer HUGE, so selevctively use some size 3's // // ***************************** //pickup room 1 GENERATE_RANDOM_INT_IN_RANGE 1 3 nTempInt START_SCRIPT_FIRE 2345.6462 -1178.3800 1027.1534 1 nTempInt fireInHouse[0] GENERATE_RANDOM_INT_IN_RANGE 1 3 nTempInt START_SCRIPT_FIRE 2344.5576 -1178.3342 1027.1247 0 nTempInt fireInHouse[1] GENERATE_RANDOM_INT_IN_RANGE 1 4 nTempInt START_SCRIPT_FIRE 2345.0271 -1177.2084 1027.1654 0 nTempInt fireInHouse[2] GENERATE_RANDOM_INT_IN_RANGE 1 3 nTempInt START_SCRIPT_FIRE 2347.8647 -1173.9291 1027.2237 1 nTempInt fireInHouse[3] //lounge - room 2 GENERATE_RANDOM_INT_IN_RANGE 1 3 nTempInt START_SCRIPT_FIRE 2349.1365 -1187.9143 1027.2592 0 nTempInt fireInHouse[4] GENERATE_RANDOM_INT_IN_RANGE 1 4 nTempInt START_SCRIPT_FIRE 2348.7976 -1186.3055 1027.2812 1 nTempInt fireInHouse[5] GENERATE_RANDOM_INT_IN_RANGE 1 3 nTempInt START_SCRIPT_FIRE 2347.6250 -1187.3240 1027.2684 0 nTempInt fireInHouse[6] GENERATE_RANDOM_INT_IN_RANGE 1 4 nTempInt START_SCRIPT_FIRE 2347.5872 -1184.5962 1027.1338 1 nTempInt fireInHouse[7] // Only activate these if the status is 0 IF statusFires = 0 //bedroom - room 3 GENERATE_RANDOM_INT_IN_RANGE 1 3 nTempInt START_SCRIPT_FIRE 2334.9724 -1187.8058 1027.1820 1 nTempInt fireInHouse[8] GENERATE_RANDOM_INT_IN_RANGE 1 3 nTempInt START_SCRIPT_FIRE 2334.1821 -1188.2694 1027.1080 0 nTempInt fireInHouse[9] GENERATE_RANDOM_INT_IN_RANGE 1 3 nTempInt START_SCRIPT_FIRE 2335.7856 -1188.2498 1027.7429 1 nTempInt fireInHouse[10] GENERATE_RANDOM_INT_IN_RANGE 1 4 nTempInt START_SCRIPT_FIRE 2335.4668 -1187.1431 1027.5372 0 nTempInt fireInHouse[11] //lounge - room 5 GENERATE_RANDOM_INT_IN_RANGE 1 3 nTempInt START_SCRIPT_FIRE 2321.8201 -1179.5139 1027.7670 1 nTempInt fireInHouse[12] GENERATE_RANDOM_INT_IN_RANGE 1 3 nTempInt START_SCRIPT_FIRE 2321.4541 -1181.0443 1027.2244 0 nTempInt fireInHouse[13] GENERATE_RANDOM_INT_IN_RANGE 1 4 nTempInt START_SCRIPT_FIRE 2322.7886 -1181.0933 1027.1716 1 nTempInt fireInHouse[14] GENERATE_RANDOM_INT_IN_RANGE 1 3 nTempInt START_SCRIPT_FIRE 2321.8521 -1183.0619 1027.1119 0 nTempInt fireInHouse[15] GENERATE_RANDOM_INT_IN_RANGE 1 4 nTempInt START_SCRIPT_FIRE 2322.6111 -1184.0139 1027.1331 0 nTempInt fireInHouse[16] //kitchen - room 6 GENERATE_RANDOM_INT_IN_RANGE 1 3 nTempInt START_SCRIPT_FIRE 2322.2388 -1172.9714 1027.1409 0 nTempInt fireInHouse[17] GENERATE_RANDOM_INT_IN_RANGE 1 3 nTempInt START_SCRIPT_FIRE 2322.2205 -1174.7516 1027.2031 0 nTempInt fireInHouse[18] GENERATE_RANDOM_INT_IN_RANGE 1 4 nTempInt START_SCRIPT_FIRE 2323.6958 -1174.4291 1027.2131 1 nTempInt fireInHouse[19] GENERATE_RANDOM_INT_IN_RANGE 1 3 nTempInt START_SCRIPT_FIRE 2325.1592 -1172.7932 1027.1539 1 nTempInt fireInHouse[20] ENDIF // NOTE: Fires 21; 22; and 23 are for blocking pathways RETURN // **************************************** // UPDATE BIG FIRES Crash1_Update_Big_Fires: // States: // 0: Create Cutscene fire in Girl's bedroom // 1: Create Cutscene fire in Front Door // 2: Remove Front Door fire again // 3: Create all fires in their doorways // 4: Move Girl's Room fire to her doorway // 5: Record status because player has gone outside (only used while leading the lady out) // 6: Reactivate the fires that should still be lit when player re-enters (only used while leading the lady out) // ***************************** // // 26/6/04 // TEMP: The kitchen door fire (fireInHouseBig[3]) has been temporarily reduced to a size 2 // because it was coming through the floor upstairs // // ***************************** SWITCH statusBigFires // Create Cutscene fire in Girl's bedroom CASE 0 START_SCRIPT_FIRE 2345.4644 -1174.0333 31.1000 0 3 fireInHouseBig[0] BREAK // Create Cutscene fire in Front Door (use a smaller fire) CASE 1 START_SCRIPT_FIRE 2352.1000 -1171.2500 26.9700 0 2 fireInHouseBig[1] BREAK // Remove Cutscene fire in Front Door CASE 2 REMOVE_SCRIPT_FIRE fireInHouseBig[1] BREAK // Create all fires to their doorways CASE 3 START_SCRIPT_FIRE 2340.3645 -1184.9277 1031.1000 0 3 fireInHouseBig[1] START_SCRIPT_FIRE 2332.4829 -1180.8887 1031.1000 0 3 fireInHouseBig[2] START_SCRIPT_FIRE 2326.0811 -1178.8252 1027.2000 0 3 fireInHouseBig[3] BREAK // Move Girl's Room fire to her doorway CASE 4 REMOVE_SCRIPT_FIRE fireInHouseBig[0] START_SCRIPT_FIRE 2344.8838 -1178.6970 1031.1000 0 3 fireInHouseBig[0] BREAK // Record status of fires CASE 5 REPEAT 4 nLoop flagFireInHouseBigStillAlight[nLoop] = TRUE IF DOES_SCRIPT_FIRE_EXIST fireInHouseBig[nLoop] IF IS_SCRIPT_FIRE_EXTINGUISHED fireInHouseBig[nLoop] flagFireInHouseBigStillAlight[nLoop] = FALSE ENDIF ENDIF ENDREPEAT BREAK // Restore fires // NOTE: Need to always create a fire, but make previously extinguished ones small CASE 6 nTempInt = 3 IF flagFireInHouseBigStillAlight[0] = FALSE nTempInt = 1 ENDIF START_SCRIPT_FIRE 2344.8838 -1178.6970 1031.1000 0 nTempInt fireInHouseBig[0] nTempInt = 3 IF flagFireInHouseBigStillAlight[1] = FALSE nTempInt = 1 ENDIF START_SCRIPT_FIRE 2340.3645 -1184.9277 1031.1000 0 nTempInt fireInHouseBig[1] nTempInt = 3 IF flagFireInHouseBigStillAlight[2] = FALSE nTempInt = 1 ENDIF START_SCRIPT_FIRE 2332.4829 -1180.8887 1031.1000 0 nTempInt fireInHouseBig[2] nTempInt = 3 IF flagFireInHouseBigStillAlight[3] = FALSE nTempInt = 1 ENDIF START_SCRIPT_FIRE 2326.0811 -1178.8252 1027.2000 0 nTempInt fireInHouseBig[3] BREAK ENDSWITCH RETURN // **************************************** // UPDATE SMOKE Crash1_Update_Smoke: // STATUS // 0: Create entrance smoke // 1: Remove entrance smoke // 2: Create smoke around player // 3: Remove smoke around player // 4: Create Coochie window smoke // 5: Remove Coochie window smoke // 6: Move entrance smoke SWITCH statusSmoke // Create entrance Smoke CASE 0 // Outside Entrance Cutscene Smoke: create the fx system CREATE_FX_SYSTEM TEARGASAD 2351.7180 -1170.9823 26.7609 TRUE fxEntranceSmoke PLAY_FX_SYSTEM fxEntranceSmoke // Inside House Disguise Smoke: create the fx system CREATE_FX_SYSTEM TEARGAS 2351.8130 -1181.2899 1029.7834 TRUE fxDisguiseSmoke PLAY_FX_SYSTEM fxDisguiseSmoke BREAK // Remove entrance Smoke CASE 1 KILL_FX_SYSTEM fxEntranceSmoke KILL_FX_SYSTEM fxDisguiseSmoke BREAK // Smoke around the player CASE 2 // ...create the fx systems CREATE_FX_SYSTEM_ON_CHAR TEARGAS scplayer 0.0 0.0 2.0 TRUE fxPlayerSmoke[0] //directly above CREATE_FX_SYSTEM_ON_CHAR TEARGAS scplayer 0.0 2.0 1.8 TRUE fxPlayerSmoke[1] // in front CREATE_FX_SYSTEM_ON_CHAR TEARGAS scplayer 0.0 -2.0 2.0 TRUE fxPlayerSmoke[2] // behind CREATE_FX_SYSTEM_ON_CHAR TEARGAS scplayer 1.0 5.0 1.5 TRUE fxPlayerSmoke[3] // 5m in front CREATE_FX_SYSTEM_ON_CHAR TEARGAS scplayer -1.0 8.0 1.8 TRUE fxPlayerSmoke[4] // 8m in front CREATE_FX_SYSTEM_ON_CHAR TEARGAS scplayer 2.0 0.0 1.5 TRUE fxPlayerSmoke[5] // side CREATE_FX_SYSTEM_ON_CHAR TEARGAS scplayer -2.0 0.0 1.5 TRUE fxPlayerSmoke[6] //side CREATE_FX_SYSTEM_ON_CHAR TEARGAS scplayer -2.0 2.0 1.5 TRUE fxPlayerSmoke[7] //front diag CREATE_FX_SYSTEM_ON_CHAR TEARGAS scplayer 2.0 2.0 1.5 TRUE fxPlayerSmoke[8] //front diag // ...play the effects REPEAT 9 nLoop PLAY_FX_SYSTEM fxPlayerSmoke[nLoop] ENDREPEAT BREAK // Remove smoke around player CASE 3 REPEAT 9 nLoop KILL_FX_SYSTEM fxPlayerSmoke[nLoop] ENDREPEAT BREAK // Create Coochie window Smoke CASE 4 // create the fx system CREATE_FX_SYSTEM TEARGASAD 2345.0068 -1171.8123 33.9960 TRUE fxCoochieWindowSmoke PLAY_FX_SYSTEM fxCoochieWindowSmoke BREAK // Remove Coochie window Smoke CASE 5 KILL_FX_SYSTEM fxCoochieWindowSmoke BREAK // Move the entrance smoke a bit farther back so that the player's view isn't obscured as he leaves CASE 6 KILL_FX_SYSTEM fxEntranceSmoke CREATE_FX_SYSTEM TEARGASAD 2351.7180 -1175.1287 26.7609 TRUE fxEntranceSmoke PLAY_FX_SYSTEM fxEntranceSmoke BREAK ENDSWITCH RETURN // **************************************** // CREATE FIRE EXTINGUISHER Crash1_Setup_Fire_Extinguisher: xposFireEx = 2322.6394 yposFireEx = -1176.5375 zposFireEx = 1027.7566 CREATE_PICKUP_WITH_AMMO FIRE_EX PICKUP_ONCE CRASH1_INFINITE_AMMO xposFireEx yposFireEx zposFireEx pickupFireExtinguisher flagFireExtinguisherPickupActive = 1 RETURN // **************************************** // CREATE INTERIOR DOORS Crash1_Create_Interior_Doors: CREATE_OBJECT_NO_OFFSET cr1_door 2342.7078 -1177.8259 1031.0018 objectInteriorDoor[0]//girls room - bathroom CREATE_OBJECT_NO_OFFSET cr1_door 2338.4023 -1177.8323 1030.9852 objectInteriorDoor[1]//bathroom - girlsroom CREATE_OBJECT_NO_OFFSET cr1_door 2333.6650 -1173.9318 1030.9767 objectInteriorDoor[2]//bathroom - hallway west CREATE_OBJECT_NO_OFFSET cr1_door 2335.9680 -1179.4352 1030.9687 objectInteriorDoor[3]//bathroom - hallway south SET_OBJECT_HEADING objectInteriorDoor[3] 89.3975 // Make sure the interior gets collision for these doors REPEAT 4 nLoop SET_OBJECT_AREA_VISIBLE objectInteriorDoor[nLoop] 5 ENDREPEAT // Make sure that the doors can't be smashed REPEAT 4 nLoop SET_OBJECT_COLLISION_DAMAGE_EFFECT objectInteriorDoor[nLoop] FALSE ENDREPEAT RETURN // **************************************** // CREATE GUY ON FIRE Crash1_Create_Guy_On_Fire: xposTemp = 2352.3254 yposTemp = -1179.7899 zposTemp = 26.9766 headTemp = 2.8064 CREATE_CHAR PEDTYPE_GANG_SMEX LSV3 xposTemp yposTemp zposTemp charGuyOnFire // He starts off inside, so need the interior collisions SET_CHAR_AREA_VISIBLE charGuyOnFire 5 SET_CHAR_HEADING charGuyOnFire headTemp SET_CHAR_DECISION_MAKER charGuyOnFire dmEmpty existsGuyOnFire = 1 RETURN // **************************************** // CREATE COOCHIE Crash1_Create_Coochie: xposTemp = 2345.9072 yposTemp = -1171.6591 zposTemp = 30.9688 headTemp = 359.0737 CREATE_CHAR PEDTYPE_CIVFEMALE GANGRL3 xposTemp yposTemp zposTemp charCoochie // She starts off inside, so need the interior collision for her SET_CHAR_AREA_VISIBLE charCoochie 5 SET_CHAR_HEADING charCoochie headTemp SET_CHAR_HEALTH charCoochie 100 SET_CHAR_NEVER_TARGETTED charCoochie TRUE SET_CHAR_PROOFS charCoochie FALSE TRUE TRUE FALSE FALSE SET_CHAR_RELATIONSHIP charCoochie ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_PLAYER1 FREEZE_CHAR_POSITION charCoochie TRUE // Play the looping anim TASK_PLAY_ANIM_NON_INTERRUPTABLE charCoochie BD_Panic_Loop BD_FIRE 4.0 true false false false -1 nCurrentCoochieAnim = 0 GENERATE_RANDOM_INT_IN_RANGE 500 2000 nTempInt timerCoochieAnim = m_mission_timer + nTempInt // Shut her up DISABLE_CHAR_SPEECH charCoochie FALSE existsCoochie = 1 RETURN // **************************************** // MAKE GUY ON FIRE EXIT HOUSE, AND EXPLODE DOORWAY Crash1_Enter_House_Cutscene_Guy_On_Fire: // Explode the Door SET_OBJECT_PROOFS objectFrontDoor FALSE FALSE FALSE FALSE FALSE SET_OBJECT_COLLISION_DAMAGE_EFFECT objectFrontDoor TRUE SET_OBJECT_DYNAMIC objectFrontDoor TRUE SET_OBJECT_VELOCITY objectFrontDoor 0.0 15.0 0.0 BREAK_OBJECT objectFrontDoor TRUE // Create the Particle effect for exploding the front door CREATE_FX_SYSTEM explosion_door 2351.9185 -1171.0139 28.1817 TRUE fxFrontDoor PLAY_AND_KILL_FX_SYSTEM fxFrontDoor // Play the audio PLAY_MISSION_AUDIO CRASH1_SFX_SLOT // Create entrance smoke statusSmoke = 0 GOSUB Crash1_Update_Smoke // Create Front Door fire statusBigFires = 1 GOSUB Crash1_Update_Big_Fires // Set flag in case cutscene skipped flagCutsceneFrontDoorStuffDone = 1 // Guy On Fire runs out of house IF IS_CHAR_DEAD charGuyOnFire RETURN ENDIF OPEN_SEQUENCE_TASK nSeqTask TASK_GO_STRAIGHT_TO_COORD -1 2352.1809 -1164.8928 26.4392 PEDMOVE_RUN -2 TASK_DIE -1 CLOSE_SEQUENCE_TASK nSeqTask PERFORM_SEQUENCE_TASK charGuyOnFire nSeqTask CLEAR_SEQUENCE_TASK nSeqTask // NOTE: The natural reactions of a guy on fire is to run away from the player. I need to make this guy // fireproof so that he burns but doesn't do the normal 'Help I'm in fire' reactions SET_CHAR_PROOFS charGuyOnFire FALSE TRUE FALSE FALSE FALSE REMOVE_SCRIPT_FIRE fireGuyOnFire START_CHAR_FIRE charGuyOnFire fireGuyOnFire SET_CHAR_HEALTH charGuyOnFire 55 timerCutscene = m_mission_timer + 4000 RETURN // **************************************** // SHOW COOCHIE PANIC Crash1_Enter_House_Cutscene_Coochie: // Cut to Coochie screaming in building // SET_FIXED_CAMERA_POSITION 2342.6807 -1167.5538 32.1681 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 2343.5144 -1168.1018 32.2343 JUMP_CUT SET_FIXED_CAMERA_POSITION 2343.5598 -1168.5067 32.4408 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2344.3914 -1169.0100 32.6753 JUMP_CUT timerCutscene = m_mission_timer + 200 RETURN // **************************************** // QUIT CUTSCENE Crash1_Enter_House_Cutscene_Quit: SWITCH_ENTRY_EXIT GANG TRUE GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp LOAD_SCENE xposTemp yposTemp zposTemp SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_AREA_VISIBLE 0 RETURN // **************************************** // UPDATE COOCHIE PANIC ANIMS Crash1_Update_Coochie_Panic_Anims: // Do nothing if coochie dead IF IS_CHAR_DEAD charCoochie OR nCurrentCoochieAnim = 99 RETURN ENDIF // Do nothing if timer has not elapsed IF m_mission_timer < timerCoochieAnim RETURN ENDIF // Timer has elapsed // Is the looping anim playing? IF nCurrentCoochieAnim = 0 IF flagPlayOnlyCoochieLoopingAnim = TRUE // ...just leave the looping anim playing timerCoochieAnim = m_mission_timer + 120000 ELSE // ...yes, so choose a new one-shot to play GENERATE_RANDOM_INT_IN_RANGE 1 5 nCurrentCoochieAnim ENDIF ELSE // ...no, so check if the current one-shot has finished fTempFloat = 1.0 SWITCH nCurrentCoochieAnim CASE 1 IF IS_CHAR_PLAYING_ANIM charCoochie BD_Panic_01 GET_CHAR_ANIM_CURRENT_TIME charCoochie BD_Panic_01 fTempFloat ENDIF BREAK CASE 2 IF IS_CHAR_PLAYING_ANIM charCoochie BD_Panic_02 GET_CHAR_ANIM_CURRENT_TIME charCoochie BD_Panic_02 fTempFloat ENDIF BREAK CASE 3 IF IS_CHAR_PLAYING_ANIM charCoochie BD_Panic_03 GET_CHAR_ANIM_CURRENT_TIME charCoochie BD_Panic_03 fTempFloat ENDIF BREAK CASE 4 IF IS_CHAR_PLAYING_ANIM charCoochie BD_Panic_04 GET_CHAR_ANIM_CURRENT_TIME charCoochie BD_Panic_04 fTempFloat ENDIF BREAK ENDSWITCH IF NOT fTempFloat = 1.0 RETURN ENDIF // Current one-shot has finished, so play the looping anim for a while nCurrentCoochieAnim = 0 GENERATE_RANDOM_INT_IN_RANGE 500 2000 nTempInt timerCoochieAnim = m_mission_timer + nTempInt ENDIF // Play the new anim SWITCH nCurrentCoochieAnim CASE 0 IF NOT IS_CHAR_PLAYING_ANIM charCoochie BD_Panic_Loop TASK_PLAY_ANIM_NON_INTERRUPTABLE charCoochie BD_Panic_Loop BD_FIRE 4.0 true false false false -1 ENDIF BREAK CASE 1 TASK_PLAY_ANIM_NON_INTERRUPTABLE charCoochie BD_Panic_01 BD_FIRE 1.0 false false false false -1 BREAK CASE 2 TASK_PLAY_ANIM_NON_INTERRUPTABLE charCoochie BD_Panic_02 BD_FIRE 1.0 false false false false -1 BREAK CASE 3 TASK_PLAY_ANIM_NON_INTERRUPTABLE charCoochie BD_Panic_03 BD_FIRE 1.0 false false false false -1 BREAK CASE 4 TASK_PLAY_ANIM_NON_INTERRUPTABLE charCoochie BD_Panic_04 BD_FIRE 1.0 false false false false -1 BREAK ENDSWITCH // If Coochie is allowed to scream and shout, then prepare or play the next shout or scream IF flagAllowCoochieScreams = FALSE RETURN ENDIF // If something other than a Coochie Scream/Shout has been prepared, then do nothing else here IF NOT nCurrentConversationID = CRASH1_CONVERSATION_COOCHIE_SHOUTS AND NOT nCurrentConversationID = CRASH1_CONVERSATION_COOCHIE_SCREAMS AND NOT nCurrentConversationID = CRASH1_CONVERSATION_NONE RETURN ENDIF // If this is a looping anim, then prepare the next scream shout IF nCurrentCoochieAnim = 0 // If the scream and shout speech has been played, then clear it IF IS_BIT_SET bitsConversationsPlayed CRASH1_CONVERSATION_COOCHIE_SHOUTS OR IS_BIT_SET bitsConversationsPlayed CRASH1_CONVERSATION_COOCHIE_SCREAMS // ...clear both bits CLEAR_BIT bitsConversationsPlayed CRASH1_CONVERSATION_COOCHIE_SHOUTS CLEAR_BIT bitsConversationsPlayed CRASH1_CONVERSATION_COOCHIE_SCREAMS ENDIF // Prepare the next scream/shout, if something else hasn't been prepared IF nCurrentConversationID = CRASH1_CONVERSATION_NONE GENERATE_RANDOM_INT_IN_RANGE 0 3 nTempInt SWITCH nTempInt CASE 0 // ...shout nRequiredConversationID = CRASH1_CONVERSATION_COOCHIE_SHOUTS GOSUB Crash1_Conversation_Command_Prepare BREAK CASE 1 // ...scream nRequiredConversationID = CRASH1_CONVERSATION_COOCHIE_SCREAMS GOSUB Crash1_Conversation_Command_Prepare BREAK DEFAULT // ...do nothing RETURN ENDSWITCH ENDIF RETURN ENDIF // If the anim is one of the one-off panic anims, then play any prepared scream/shout if the player is nearby IF nCurrentCoochieAnim >= 1 AND nCurrentCoochieAnim <= 4 IF nConversationStatus = CRASH1_CONVERSATION_STATUS_PREPARED AND IS_CHAR_IN_AREA_3D scplayer 2327.2424 -1175.0516 24.6005 2361.9519 -1149.0908 28.2697 FALSE // ...because of an earlier check, this can only be a Coochie scream/shout // NOTE: If it is a scream, don't display subtitles IF nCurrentConversationID = CRASH1_CONVERSATION_COOCHIE_SCREAMS flagDisplaySpeechSubtitle = FALSE ENDIF GOSUB Crash1_Conversation_Command_Play ENDIF ENDIF RETURN // **************************************** // ACTIVATE COOCHIE BURNS COUNTER Crash1_Activate_Coochie_Burns_Counter: // Instructions: Save the girl PRINT_NOW CRA1_07 5000 1 // Set up health bar for Coochie g_Crash1_counterKM1 = 100 timerCoochieBurn = m_mission_timer + CRASH1_GIRL_BURNS_TIME_ms DISPLAY_ONSCREEN_COUNTER_WITH_STRING g_Crash1_counterKM1 COUNTER_DISPLAY_BAR CRA1_70 flagCoochieBurnsCounterActive = TRUE SET_CHAR_HEALTH charCoochie 100 CHECKPOINT_SAVE 99 RETURN // **************************************** // UPDATE COOCHIE BURN TIME Crash1_Update_Coochie_Burn_Time: IF IS_CHAR_DEAD charCoochie RETURN ENDIF // Get the Girl's Health GET_CHAR_HEALTH charCoochie nTempInt IF timerCoochieBurn < m_mission_timer // Decrease health by 1 nTempInt-- // Restart the counter for the next health point // NOTE: If there are any fires around Coochie then increase the speed (because Coochie refuses to burn) GET_CHAR_COORDINATES charCoochie xposTemp yposTemp zposTemp GET_NUMBER_OF_FIRES_IN_RANGE xposTemp yposTemp zposTemp 1.2 nTempInt2 IF nTempInt2 > 0 AND flagInHouse = TRUE // ...fires in area timerCoochieBurn = m_mission_timer + 100 ELSE // ...no fires in area timerCoochieBurn = m_mission_timer + CRASH1_GIRL_BURNS_TIME_ms ENDIF ENDIF // Ensure not negative IF nTempInt < 0 nTempInt = 0 ENDIF // IF counter has reached 0 then coochie dies IF nTempInt = 0 // Turn coochie around to head into the room, set her on fire, and kill her CLEAR_CHAR_TASKS_IMMEDIATELY charCoochie REMOVE_SCRIPT_FIRE fireCoochie START_CHAR_FIRE charCoochie fireCoochie SET_CHAR_HEALTH charCoochie 20 TASK_DIE charCoochie FREEZE_CHAR_POSITION charCoochie FALSE nCurrentCoochieAnim = 99 CLEAR_ONSCREEN_COUNTER g_Crash1_counterKM1 // The girl is dead PRINT_NOW CRA1_50 5000 1 flagGirlIsToast = TRUE // Turn Coochie to face inside the room headTemp = 180.0000 SET_CHAR_HEADING charCoochie headTemp ELSE // Set Coochie's health SET_CHAR_HEALTH charCoochie nTempInt ENDIF // Update Counter g_Crash1_counterKM1 = nTempInt RETURN // ************************************************************************************************************* // HOUSE GUYS ON WAY IN // ************************************************************************************************************* // **************************************** // SETUP HOUSE GUYS ON WAY IN Crash1_Create_HouseGuys_In: // Cowering House Guy on way in xposTemp = 2342.7424 yposTemp = -1184.7313 zposTemp = 1026.9766 headTemp = 274.3023 CREATE_CHAR PEDTYPE_GANG_SMEX LSV3 xposTemp yposTemp zposTemp charHouseCower // Indicates that the character was created in an interior SET_CHAR_HAS_USED_ENTRY_EXIT charHouseCower 2352.1143 -1170.6102 2.0 // Starts off inside, so needs interior collisions SET_CHAR_AREA_VISIBLE charHouseCower 5 SET_CHAR_HEADING charHouseCower headTemp SET_CHAR_DECISION_MAKER charHouseCower dmEmpty SET_CHAR_HEALTH charHouseCower 20 SET_CHAR_MAX_HEALTH charHouseCower 100 SET_CHAR_RELATIONSHIP charHouseCower ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ACCURACY charHouseCower 5 START_CHAR_FIRE charHouseCower fireHouseCower TASK_DEAD charHouseCower aiHouseGuyInCower = 0 // Stairs House Guy on way in xposTemp = 2322.5632 yposTemp = -1185.2175 zposTemp = 1026.9766 headTemp = 292.9689 CREATE_CHAR PEDTYPE_GANG_SMEX LSV1 xposTemp yposTemp zposTemp charHouseStairs // Indicates that the character was created in an interior SET_CHAR_HAS_USED_ENTRY_EXIT charHouseStairs 2352.1143 -1170.6102 2.0 // Starts off inside, so needs interior collisions SET_CHAR_AREA_VISIBLE charHouseStairs 5 SET_CHAR_HEADING charHouseStairs headTemp SET_CHAR_DECISION_MAKER charHouseStairs dmEmpty SET_CHAR_HEALTH charHouseStairs 20 SET_CHAR_MAX_HEALTH charHouseStairs 100 SET_CHAR_RELATIONSHIP charHouseStairs ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ACCURACY charHouseStairs 5 START_CHAR_FIRE charHouseStairs fireHouseStairs TASK_DEAD charHouseStairs aiHouseGuyInStairs = 0 existsHouseGuysIn = 1 RETURN /* // **************************************** // UPDATE COWERING HOUSE GUY ON WAY IN Crash1_Update_HouseGuyIn_Cowering: IF IS_CHAR_DEAD charHouseCower RETURN ENDIF // Update Cowering guy's AI SWITCH aiHouseGuyInCower // Cowering CASE 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer charHouseCower 5.5 5.5 1.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR charHouseCower scplayer // Prepare and Play the inside guy's speech (but don't worry if it doesn't happen) nRequiredConversationID = CRASH1_CONVERSATION_INSIDE_GUY GOSUB Crash1_Conversation_Command_Prepare // Issue this speech if prepared, otherwise issue generic speech IF nCurrentConversationID = CRASH1_CONVERSATION_INSIDE_GUY // ...issue this speech GOSUB Crash1_Conversation_Command_Play ELSE // ...it didn't get prepared, so issue generic speech and set the 'issued bit' manually SET_CHAR_SAY_CONTEXT charHouseCower CONTEXT_GLOBAL_ABUSE_GANG_LSV nIgnore SET_BIT bitsConversationsPlayed CRASH1_CONVERSATION_INSIDE_GUY ENDIF // Activate Kill Player GET_CHAR_HEALTH charHouseCower nTempInt IF nTempInt > 0 TASK_KILL_CHAR_ON_FOOT charHouseCower scplayer ENDIF aiHouseGuyInCower = 1 ENDIF BREAK // Killing Player CASE 1 // Check if the fire extinguisher cutscene is playing IF flagFireExtinguisherCutscenePlaying = 1 aiHouseGuyInCower = 2 RETURN ENDIF // If not killing the player, then re-activate it GET_SCRIPT_TASK_STATUS charHouseCower TASK_KILL_CHAR_ON_FOOT m_status IF m_status = FINISHED_TASK // Re-activate Kill Player TASK_KILL_CHAR_ON_FOOT charHouseCower scplayer ENDIF BREAK // Stand Still during fire extinguisher cutscene CASE 2 // Check if the fire extinguisher cutscene is no longer playing IF flagFireExtinguisherCutscenePlaying = 0 aiHouseGuyInCower = 1 RETURN ENDIF // If not standing still, then re-activate it GET_SCRIPT_TASK_STATUS charHouseCower TASK_STAND_STILL m_status IF m_status = FINISHED_TASK // Re-activate Kill Player CLEAR_CHAR_TASKS_IMMEDIATELY charHouseCower TASK_STAND_STILL charHouseCower -2 ENDIF BREAK ENDSWITCH RETURN */ /* // **************************************** // UPDATE STAIRS HOUSE GUY ON WAY IN Crash1_Update_HouseGuyIn_Stairs: IF IS_CHAR_DEAD charHouseStairs RETURN ENDIF // Update Stairs guy's AI SWITCH aiHouseGuyInStairs // Waiting CASE 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer charHouseStairs 10.0 10.0 1.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR charHouseStairs scplayer // Activate Kill Player GET_CHAR_HEALTH charHouseStairs nTempInt IF nTempInt > 0 TASK_GO_STRAIGHT_TO_COORD charHouseStairs 2322.8635 -1186.7020 1026.9839 PEDMOVE_RUN -2 ENDIF aiHouseGuyInStairs = 1 ENDIF BREAK // Moving CASE 1 // If reached destination, then kill player GET_SCRIPT_TASK_STATUS charHouseStairs TASK_GO_STRAIGHT_TO_COORD m_status IF m_status = FINISHED_TASK // Activate Kill Player TASK_KILL_CHAR_ON_FOOT charHouseStairs scplayer aiHouseGuyInStairs = 2 ENDIF BREAK // Killing CASE 2 // Check if the fire extinguisher cutscene is playing IF flagFireExtinguisherCutscenePlaying = 1 aiHouseGuyInStairs = 3 RETURN ENDIF // If not killing the player, then re-activate it GET_SCRIPT_TASK_STATUS charHouseStairs TASK_KILL_CHAR_ON_FOOT m_status IF m_status = FINISHED_TASK // Activate Kill Player CLEAR_CHAR_TASKS_IMMEDIATELY charHouseStairs TASK_KILL_CHAR_ON_FOOT charHouseStairs scplayer ENDIF BREAK // Stand Still during fire extinguisher cutscene CASE 3 // Check if the fire extinguisher cutscene is no longer playing IF flagFireExtinguisherCutscenePlaying = 0 aiHouseGuyInStairs = 2 RETURN ENDIF // If not standing still, then re-activate it GET_SCRIPT_TASK_STATUS charHouseStairs TASK_STAND_STILL m_status IF m_status = FINISHED_TASK // Re-activate Kill Player CLEAR_CHAR_TASKS_IMMEDIATELY charHouseStairs TASK_STAND_STILL charHouseStairs -2 ENDIF BREAK ENDSWITCH RETURN */ // ************************************************************************************************************* // INSIDE BURNING BUILDING // ************************************************************************************************************* // **************************************** // CUTSCENE: Coochie says get fire extinguisher Crash1_Cutscene_Get_Fire_Extinguisher: SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON // Move the player SET_CHAR_COORDINATES scplayer 2344.5354 -1181.7455 1030.9610 SET_CHAR_HEADING scplayer 359.8736 // Position camera behind player and raised SET_FIXED_CAMERA_POSITION 2344.6243 -1185.3538 1033.7832 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2344.6946 -1184.3729 1033.6016 JUMP_CUT // Re-activate the fire in the girl's bedroom doorway (it must have been put out when the player was moved) statusBigFires = 4 GOSUB Crash1_Update_Big_Fires // Re-activate the fires in the rooms below the position the player is moved to (they've also gone out) statusFires = 1 GOSUB Crash1_Update_Fires_Interior RETURN /* // **************************************** // Burn House Guys Crash1_Burn_HouseGuysIn: IF NOT IS_CHAR_DEAD charHouseCower CLEAR_CHAR_TASKS_IMMEDIATELY charHouseCower TASK_DIE charHouseCower START_CHAR_FIRE charHouseCower fireHouseCower ENDIF IF NOT IS_CHAR_DEAD charHouseStairs CLEAR_CHAR_TASKS_IMMEDIATELY charHouseStairs TASK_DIE charHouseStairs START_CHAR_FIRE charHouseStairs fireHouseStairs ENDIF RETURN */ // **************************************** // Burn House Guys Crash1_Remove_All_Outside_Guys: // GangOutside REPEAT 5 nLoop REMOVE_CHAR_ELEGANTLY charGangOutside[nLoop] ENDREPEAT // GangBackup REPEAT 2 nLoop REMOVE_CHAR_ELEGANTLY charGangBackup[nLoop] ENDREPEAT RETURN // **************************************** // Update Coochie actions Crash1_Update_Coochie: // AI States: // -1: Not Initialised // 0: Following Player // 1: Stopped because of potential walk through fire // 2: Stopped because the player has left her behind // 3: Checking if the player has returned SWITCH aiCoochie // Not Initialised CASE -1 // Set up the Group MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER players_group charCoochie SET_CHAR_NEVER_LEAVES_GROUP charCoochie TRUE LISTEN_TO_PLAYER_GROUP_COMMANDS charCoochie FALSE TASK_FOLLOW_FOOTSTEPS charCoochie scplayer SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 TRUE aiCoochie = 0 BREAK // Following Player CASE 0 // Check for potential to walk through fire flagPotentialWalkThroughFire = FALSE IF flagInHouse = TRUE GOSUB CheckCoochiePotentialWalkThroughFire IF flagPotentialWalkThroughFire = TRUE // ...potential for Coochie to walk through fire // Prepare and Play Put Out Fire text flagPrepareAndPlayPutOutFireSpeech = TRUE // Change to a 'stand still' task CLEAR_CHAR_TASKS_IMMEDIATELY charCoochie TASK_STAND_STILL charCoochie -2 aiCoochie = 1 ELSE // ...make sure Coochie still following GET_SCRIPT_TASK_STATUS charCoochie TASK_FOLLOW_FOOTSTEPS m_status IF m_status = FINISHED_TASK // Re-activate Follow Footsteps CLEAR_CHAR_TASKS_IMMEDIATELY charCoochie TASK_FOLLOW_FOOTSTEPS charCoochie scplayer ENDIF ENDIF ENDIF BREAK // Stopped because of fire CASE 1 // Check for potential to walk through fire flagPotentialWalkThroughFire = 0 IF flagInHouse = TRUE GOSUB CheckCoochiePotentialWalkThroughFire IF flagPotentialWalkThroughFire = 0 // Allow Coochie to move again CLEAR_CHAR_TASKS_IMMEDIATELY charCoochie TASK_FOLLOW_FOOTSTEPS charCoochie scplayer flagPrepareAndPlayPutOutFireSpeech = FALSE aiCoochie = 0 ENDIF ENDIF BREAK // Stopped because the player has left her behind CASE 2 CLEAR_CHAR_TASKS_IMMEDIATELY charCoochie TASK_STAND_STILL charCoochie -2 aiCoochie = 3 BREAK // Checking if the player has returned CASE 3 // Check if the player is nearby IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer charCoochie 6.0 6.0 1.0 0 // Re-activate Coochie flagPotentialWalkThroughFire = 0 IF flagInHouse = TRUE GOSUB CheckCoochiePotentialWalkThroughFire IF flagPotentialWalkThroughFire = 0 // ...not potentially about to walk through fire, so make her follow the player again TASK_FOLLOW_FOOTSTEPS charCoochie scplayer aiCoochie = 0 ELSE // ...about to walk through fire, so make her wait till the fires out OPEN_SEQUENCE_TASK nSeqTask TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_STAND_STILL -1 -2 CLOSE_SEQUENCE_TASK nSeqTask PERFORM_SEQUENCE_TASK charCoochie nSeqTask CLEAR_SEQUENCE_TASK nSeqTask // Prepare and play 'put out fire' text flagPrepareAndPlayPutOutFireSpeech = TRUE aiCoochie = 1 ENDIF ENDIF ENDIF BREAK ENDSWITCH RETURN // **************************************** // Check if Coochie has the potential to walk through fire CheckCoochiePotentialWalkThroughFire: // When Coochie is in specific areas, check against script fires to // see if they are still burning // AREAS // 0: Coochie Bedroom Door // 1: Door out of room opposite Coochie bedroom // 2: Top of stairs // 3: Kitchen Door // 4: Big Fires downstairs SWITCH statusCoochieExitPath // Coochie Bedroom door fire CASE 0 xloTemp = 2345.5000 - 2.0000 yloTemp = -1177.1218 - 2.0000 zloTemp = 1030.9688 - 0.5000 xhiTemp = 2345.5000 + 2.0000 yhiTemp = -1177.1218 + 2.0000 zhiTemp = 1030.9688 + 1.5000 IF IS_CHAR_IN_AREA_3D charCoochie xloTemp yloTemp zloTemp xhiTemp yhiTemp zhiTemp FALSE // Is the bedroom door fire still burning? IF DOES_SCRIPT_FIRE_EXIST fireInHouseBig[0] IF IS_SCRIPT_FIRE_EXTINGUISHED fireInHouseBig[0] // ...fire extinguished, so start checking next fire area statusCoochieExitPath++ ELSE // ...fire still burning, so set the flag flagPotentialWalkThroughFire = 1 ENDIF ELSE // ...fire doesn't exist, so start checking next fire area statusCoochieExitPath++ ENDIF ENDIF BREAK // Exit of room opposite Coochie Bedroom CASE 1 xloTemp = 2342.7952 - 2.0000 yloTemp = -1184.9711 - 2.0000 zloTemp = 1030.9688 - 0.5000 xhiTemp = 2342.7952 + 2.0000 yhiTemp = -1184.9711 + 2.0000 zhiTemp = 1030.9688 + 1.5000 IF IS_CHAR_IN_AREA_3D charCoochie xloTemp yloTemp zloTemp xhiTemp yhiTemp zhiTemp FALSE // Is the fire still burning? IF DOES_SCRIPT_FIRE_EXIST fireInHouseBig[1] IF IS_SCRIPT_FIRE_EXTINGUISHED fireInHouseBig[1] // ...fire extinguished, so start checking next fire area statusCoochieExitPath++ ELSE // ...fire still burning, so set the flag flagPotentialWalkThroughFire = 1 ENDIF ELSE // ...fire doesn't exist, so start checking next fire area statusCoochieExitPath++ ENDIF ENDIF BREAK // Fire at top of stairs CASE 2 xloTemp = 2334.4453 - 2.0000 yloTemp = -1181.4629 - 2.0000 zloTemp = 1030.9688 - 0.5000 xhiTemp = 2334.4453 + 2.0000 yhiTemp = -1181.4629 + 2.0000 zhiTemp = 1030.9688 + 1.5000 IF IS_CHAR_IN_AREA_3D charCoochie xloTemp yloTemp zloTemp xhiTemp yhiTemp zhiTemp FALSE // Is the fire still burning? IF DOES_SCRIPT_FIRE_EXIST fireInHouseBig[2] IF IS_SCRIPT_FIRE_EXTINGUISHED fireInHouseBig[2] // ...fire extinguished, so start checking next fire area statusCoochieExitPath++ ELSE // ...fire still burning, so set the flag flagPotentialWalkThroughFire = 1 ENDIF ELSE // ...fire doesn't exist, so start checking next fire area statusCoochieExitPath++ ENDIF ENDIF BREAK // Fire in kitchen door CASE 3 xloTemp = 2325.8542 - 2.5000 yloTemp = -1182.6364 - 2.5000 zloTemp = 1026.9839 - 0.5000 xhiTemp = 2325.8542 + 2.5000 yhiTemp = -1182.6364 + 2.5000 zhiTemp = 1026.9839 + 1.5000 IF IS_CHAR_IN_AREA_3D charCoochie xloTemp yloTemp zloTemp xhiTemp yhiTemp zhiTemp FALSE // Is the fire still burning? IF DOES_SCRIPT_FIRE_EXIST fireInHouseBig[3] IF IS_SCRIPT_FIRE_EXTINGUISHED fireInHouseBig[3] // ...fire extinguished, so start checking next fire area statusCoochieExitPath++ ELSE // ...fire still burning, so set the flag flagPotentialWalkThroughFire = 1 ENDIF ELSE // ...fire doesn't exist, so start checking next fire area statusCoochieExitPath++ ENDIF ENDIF BREAK // Small fires in doorway of downstairs bedroom CASE 4 xloTemp = 2342.9607 - 2.0000 yloTemp = -1176.9055 - 2.0000 zloTemp = 1026.9766 - 0.5000 xhiTemp = 2342.9607 + 2.0000 yhiTemp = -1176.9055 + 2.0000 zhiTemp = 1026.9766 + 1.5000 IF IS_CHAR_IN_AREA_3D charCoochie xloTemp yloTemp zloTemp xhiTemp yhiTemp zhiTemp FALSE // Are the small fires in this area still burning? xloTemp = 2344.9900 yloTemp = -1178.3976 zloTemp = 1026.9766 REPEAT 21 nLoop // Get this script fire's coordinates IF DOES_SCRIPT_FIRE_EXIST fireInHouse[nLoop] IF NOT IS_SCRIPT_FIRE_EXTINGUISHED fireInHouse[nLoop] GET_SCRIPT_FIRE_COORDS fireInHouse[nLoop] xhiTemp yhiTemp zhiTemp // Get distance between script fire's coords and the test coords GET_DISTANCE_BETWEEN_COORDS_3D xloTemp yloTemp zloTemp xhiTemp yhiTemp zhiTemp fTempFloat IF fTempFloat <= 3.0 // This fire is still burning, so set the flag and return flagPotentialWalkThroughFire = 1 RETURN ENDIF ENDIF ENDIF ENDREPEAT // All scripted fires extinguished // Do a check for non-scripted fires also GET_NUMBER_OF_FIRES_IN_RANGE xloTemp yloTemp zloTemp 3.0f nTempInt IF NOT nTempInt = 0 flagPotentialWalkThroughFire = 1 ENDIF // All fires extinguished statusCoochieExitPath++ ENDIF BREAK ENDSWITCH RETURN // **************************************** // Update Animated Wall 0 Crash1_Update_AnimatedWall0: // STATUS // 0: Normal wall is in place // 1: Start the animated wall // 2: Wall animation in progress // 3: Place broken wall // 4: Wall collape finished nTempInt = 0 SWITCH statusWalls[nTempInt] // Normal wall in place CASE 0 // Nothing to do BREAK // Create the object CASE 1 // Delete the normal wall DELETE_OBJECT objectWall[nTempInt] MARK_MODEL_AS_NO_LONGER_NEEDED BREAK_WALL_1A // Create the animated wall in its place xposTemp = 2338.0 yposTemp = -1180.0 zposTemp = 1030.5 headTemp = 90.0 CREATE_OBJECT_NO_OFFSET BD_FIRE1_O xposTemp yposTemp zposTemp objectWall[nTempInt] SET_OBJECT_HEADING objectWall[nTempInt] headTemp statusWalls[nTempInt] = 2 BREAK // Start the animation CASE 2 IF DOES_OBJECT_EXIST objectWall[nTempInt] IF PLAY_OBJECT_ANIM objectWall[nTempInt] BD_FIRE1 BD_FIRE 1000.0 FALSE TRUE statusWalls[nTempInt] = 3 ELSE statusWalls[nTempInt] = 4 ENDIF ENDIF BREAK // Animation in progress CASE 3 GET_OBJECT_ANIM_CURRENT_TIME objectWall[nTempInt] BD_FIRE1 fTempFloat IF fTempFloat = 1.0 statusWalls[nTempInt] = 4 ENDIF BREAK // Place broken wall CASE 4 // Delete the animated wall DELETE_OBJECT objectWall[nTempInt] MARK_MODEL_AS_NO_LONGER_NEEDED BD_FIRE1_O // Create the broken wall in its place xposTemp = 2338.126 yposTemp = -1181.917 zposTemp = 1033.188 CREATE_OBJECT_NO_OFFSET BREAK_WALL_1B xposTemp yposTemp zposTemp objectWall[nTempInt] statusWalls[nTempInt] = 5 BREAK // Wall collapse finished CASE 5 // Nothing to do BREAK ENDSWITCH RETURN // **************************************** // Update Animated Wall 1 Crash1_Update_AnimatedWall1: // STATUS // 0: Normal wall is in place // 1: Start the animated wall // 2: Wall animation in progress // 3: Place broken wall // 4: Wall collape finished nTempInt = 1 SWITCH statusWalls[nTempInt] // Normal wall in place CASE 0 // Nothing to do BREAK // Start the animation CASE 1 BREAK // Animation in progress CASE 2 BREAK // Place broken wall CASE 3 // Delete the animated wall DELETE_OBJECT objectWall[nTempInt] MARK_MODEL_AS_NO_LONGER_NEEDED BREAK_WALL_2A // Create the broken wall in its place xposTemp = 2330.402 yposTemp = -1179.15 zposTemp = 1030.55 CREATE_OBJECT_NO_OFFSET BREAK_WALL_2B xposTemp yposTemp zposTemp objectWall[nTempInt] statusWalls[nTempInt] = 4 BREAK // Wall collapse finished CASE 4 // Nothing to do BREAK ENDSWITCH RETURN // **************************************** // Update Animated Wall 2 Crash1_Update_AnimatedWall2: // STATUS // 0: Normal wall is in place // 1: Start the animated wall // 2: Wall animation in progress // 3: Place broken wall // 4: Wall collape finished nTempInt = 2 SWITCH statusWalls[nTempInt] // Normal wall in place CASE 0 // Nothing to do BREAK // Start the animation CASE 1 BREAK // Animation in progress CASE 2 BREAK // Place broken wall CASE 3 // Delete the animated wall DELETE_OBJECT objectWall[nTempInt] MARK_MODEL_AS_NO_LONGER_NEEDED BREAK_WALL_3A // Create the broken wall in its place xposTemp = 2340.293 yposTemp = -1182.294 zposTemp = 1026.957 CREATE_OBJECT_NO_OFFSET BREAK_WALL_3B xposTemp yposTemp zposTemp objectWall[nTempInt] statusWalls[nTempInt] = 4 BREAK // Wall collapse finished CASE 4 // Nothing to do BREAK ENDSWITCH RETURN // ************************************************************************************************************* // OUTSIDE BURNING BUILDING // ************************************************************************************************************* // **************************************** // CREATE FIRE TRUCK Crash1_Create_FireEngine: // The Fire Engine // NOTE: The Coordinates are where the vehicle has to drive to //CREATE_EMERGENCY_SERVICES_CAR FIRETRUK 2340.6372 -1152.7217 25.9686 RETURN // ************************************************************************************************************* // CASH PICKUPS // ************************************************************************************************************* // **************************************** // Create Cash Pickups In Rooms Crash1_Create_Room_Cash_Pickups: REPEAT CRASH1_MAX_CASH_PICKUPS nLoop IF flagCashCreated[nLoop] = FALSE nCashPickupID = nLoop GOSUB Crash1_Create_Cash_Pickups ENDIF ENDREPEAT RETURN // **************************************** // Create Cash Pickups Crash1_Create_Cash_Pickups: IF flagCashCreated[nCashPickupID] = TRUE RETURN ENDIF SWITCH nCashPickupID CASE CRASH1_CASH_PICKUP_DOWNSTAIRS_BEDROOM CREATE_MONEY_PICKUP 2338.5505 -1186.9388 1027.9766 500 TRUE pickupCash[nCashPickupID] flagCashCreated[nCashPickupID] = TRUE BREAK CASE CRASH1_CASH_PICKUP_COOCHIE_BEDROOM CREATE_MONEY_PICKUP 2348.1841 -1173.1639 1031.9766 500 TRUE pickupCash[nCashPickupID] flagCashCreated[nCashPickupID] = TRUE BREAK DEFAULT WRITE_DEBUG_WITH_INT Illegal_Cash_Pickup_ID nCashPickupID ENDSWITCH RETURN // ************************************************************************************************************* // AUDIO ROUTINES // ************************************************************************************************************* // ------------------------------ // SPEECH ENGINE // ------------------------------ // **************************************** // UPDATE SPEECH Crash1_Update_Speech: SWITCH nConversationStatus CASE CRASH1_CONVERSATION_STATUS_NONE CASE CRASH1_CONVERSATION_STATUS_PREPARED CASE CRASH1_CONVERSATION_STATUS_INTERRUPTED CASE CRASH1_CONVERSATION_STATUS_FINISHED // ...nothing to do BREAK CASE CRASH1_CONVERSATION_STATUS_PLAYING // ...playing the conversation GOSUB Crash1_Playing_Conversation BREAK DEFAULT WRITE_DEBUG UNKNOWN_CONVERSATION_STATUS_ID RETURN ENDSWITCH RETURN // **************************************** // Initial Speech Slot Preloads Crash1_Initial_Speech_Slot_Preloads: // Preload the first two slots if possible IF nNextPreloadConversationLine = nCurrentMaxConversationLines RETURN ENDIF // ...slot 1 nTempInt = CRASH1_FIRST_SPEECH_SLOT nAudioSlotStatus[nTempInt] = CRASH1_AUDIO_SLOT_LOADING LOAD_MISSION_AUDIO nTempInt nConversationSequenceSpeechID[nNextPreloadConversationLine] nNextPreloadConversationLine++ // Are there more lines to be preloaded IF nNextPreloadConversationLine = nCurrentMaxConversationLines RETURN ENDIF // ...slot 2 nTempInt++ IF nTempInt > CRASH1_LAST_SPEECH_SLOT RETURN ENDIF nAudioSlotStatus[nTempInt] = CRASH1_AUDIO_SLOT_LOADING LOAD_MISSION_AUDIO nTempInt nConversationSequenceSpeechID[nNextPreloadConversationLine] nNextPreloadConversationLine++ RETURN // **************************************** // Playing Conversation Crash1_Playing_Conversation: // Check if the conversation should be interrupted GOSUB Crash1_Check_If_Interrupt_Conversation IF nConversationStatus = CRASH1_CONVERSATION_STATUS_INTERRUPTED GOSUB Crash1_Interrupt_Conversation RETURN ENDIF // Check the status of the current slot SWITCH nAudioSlotStatus[nSpeechCurrentSlot] CASE CRASH1_AUDIO_SLOT_FREE RETURN BREAK CASE CRASH1_AUDIO_SLOT_LOADING // ...check if the speech has loaded IF NOT HAS_MISSION_AUDIO_LOADED nSpeechCurrentSlot // ...no RETURN ENDIF // Speech has loaded nAudioSlotStatus[nSpeechCurrentSlot] = CRASH1_AUDIO_SLOT_LOADED BREAK CASE CRASH1_AUDIO_SLOT_LOADED // ...play the speech and display the subtitles PLAY_MISSION_AUDIO nSpeechCurrentSlot IF flagDisplaySpeechSubtitle = TRUE PRINT_NOW $tlConversationSequenceSubtitle[nCurrentConversationLine] 10000 1 ENDIF nAudioSlotStatus[nSpeechCurrentSlot] = CRASH1_AUDIO_SLOT_PLAYING RETURN BREAK CASE CRASH1_AUDIO_SLOT_PLAYING // ...check if the speech has finished playing IF NOT HAS_MISSION_AUDIO_FINISHED nSpeechCurrentSlot // ...still playing RETURN ENDIF // Speech has finished playing, so move on to the next piece GOSUB Crash1_Current_Speech_Finished BREAK DEFAULT WRITE_DEBUG UNKNOWN_AUDIO_SLOT_STATUS RETURN ENDSWITCH RETURN // **************************************** // Current Conversation has been interrupted Crash1_Interrupt_Conversation: // Clear mission audio nTempInt = CRASH1_FIRST_SPEECH_SLOT WHILE nTempInt <= CRASH1_LAST_SPEECH_SLOT CLEAR_MISSION_AUDIO nTempInt nTempInt++ ENDWHILE GOSUB Crash1_Finish_Conversation RETURN // **************************************** // Current Speech has finished Crash1_Current_Speech_Finished: // Housekeeping nAudioSlotStatus[nSpeechCurrentSlot] = CRASH1_AUDIO_SLOT_FREE nCurrentConversationLine++ IF nCurrentConversationLine = nCurrentMaxConversationLines // ...conversation over GOSUB Crash1_Finish_Conversation RETURN ENDIF // Preload the next piece of audio that will be played in this slot IF nNextPreloadConversationLine < nCurrentMaxConversationLines // ...there is another piece of speech required in this slot nAudioSlotStatus[nSpeechCurrentSlot] = CRASH1_AUDIO_SLOT_LOADING LOAD_MISSION_AUDIO nSpeechCurrentSlot nConversationSequenceSpeechID[nNextPreloadConversationLine] nNextPreloadConversationLine++ ENDIF // Switch to the next speech slot nSpeechCurrentSlot++ IF nSpeechCurrentSlot > CRASH1_LAST_SPEECH_SLOT nSpeechCurrentSlot = CRASH1_FIRST_SPEECH_SLOT ENDIF RETURN // **************************************** // Current Conversation has finished Crash1_Finish_Conversation: // Mark this conversation as 'played' SET_BIT bitsConversationsPlayed nCurrentConversationID nCurrentConversationID = CRASH1_CONVERSATION_NONE nConversationStatus = CRASH1_CONVERSATION_STATUS_NONE nRequiredConversationID = CRASH1_CONVERSATION_NONE nSpeechCurrentSlot = CRASH1_FIRST_SPEECH_SLOT nCurrentConversationLine = 0 nCurrentMaxConversationLines = 0 nNextPreloadConversationLine = 0 nTempInt = CRASH1_FIRST_SPEECH_SLOT WHILE nTempInt < CRASH1_LAST_SPEECH_SLOT nAudioSlotStatus[nTempInt] = CRASH1_AUDIO_SLOT_FREE nTempInt++ ENDWHILE // Clear subtitles CLEAR_SMALL_PRINTS // Introduce a delay before the next conversation can be prepared timerDelayBeforeNextConversation = m_mission_timer + CRASH1_DELAY_BEFORE_NEXT_CONVERSATION_msec RETURN // ------------------------------ // EXTERNAL SPEECH CONTROLS // ------------------------------ // **************************************** // Conversation Command Prepare Crash1_Conversation_Command_Prepare: // Prepare a conversation IF NOT nConversationStatus = CRASH1_CONVERSATION_STATUS_NONE GOSUB Crash1_Conversation_Command_Cancel ENDIF // Wait for the timer to elapse before preparing the next conversation IF timerDelayBeforeNextConversation > m_mission_timer RETURN ENDIF timerDelayBeforeNextConversation = 0 nCurrentConversationID = nRequiredConversationID nRequiredConversationID = CRASH1_CONVERSATION_NONE nSpeechCurrentSlot = CRASH1_FIRST_SPEECH_SLOT nCurrentConversationLine = 0 nCurrentMaxConversationLines = 0 nNextPreloadConversationLine = 0 flagDisplaySpeechSubtitle = TRUE nTempInt = CRASH1_FIRST_SPEECH_SLOT WHILE nTempInt < CRASH1_LAST_SPEECH_SLOT nAudioSlotStatus[nTempInt] = CRASH1_AUDIO_SLOT_FREE nTempInt++ ENDWHILE // Prepare the next conversation GOSUB Crash1_Prepare_Next_Conversation RETURN // **************************************** // Conversation Command Play Crash1_Conversation_Command_Play: // Ensure the conversation has been prepared IF NOT nConversationStatus = CRASH1_CONVERSATION_STATUS_PREPARED RETURN ENDIF nConversationStatus = CRASH1_CONVERSATION_STATUS_PLAYING RETURN // **************************************** // Conversation Command Cancel Crash1_Conversation_Command_Cancel: // Ensure the conversation has been prepared IF nConversationStatus = CRASH1_CONVERSATION_STATUS_NONE RETURN ENDIF GOSUB Crash1_Interrupt_Conversation RETURN // ------------------------------ // MISSION SPECIFIC SPEECH SETUP // ------------------------------ // **************************************** // Prepare Next Conversation Crash1_Prepare_Next_Conversation: SWITCH nCurrentConversationID CASE CRASH1_CONVERSATION_COOCHIE_SHOUTS GOSUB Crash1_Prepare_Conversation_Coochie_Shouts BREAK CASE CRASH1_CONVERSATION_COOCHIE_SCREAMS GOSUB Crash1_Prepare_Conversation_Coochie_Screams BREAK CASE CRASH1_CONVERSATION_CARL_HELP GOSUB Crash1_Prepare_Conversation_Carl_Help BREAK // CASE CRASH1_CONVERSATION_INSIDE_GUY // GOSUB Crash1_Prepare_Conversation_Inside_Guy // BREAK CASE CRASH1_CONVERSATION_NO_WAY_OUT GOSUB Crash1_Prepare_Conversation_No_Way_Out BREAK CASE CRASH1_CONVERSATION_FIRE_EX GOSUB Crash1_Prepare_Conversation_Fire_Ex BREAK CASE CRASH1_CONVERSATION_I_BE_BACK GOSUB Crash1_Prepare_Conversation_I_Be_Back BREAK CASE CRASH1_CONVERSATION_OUTSIDE_ROOM GOSUB Crash1_Prepare_Conversation_Outside_Room BREAK CASE CRASH1_CONVERSATION_REACH_COOCHIE GOSUB Crash1_Prepare_Conversation_Reach_Coochie BREAK CASE CRASH1_CONVERSATION_BUILDING_COLLAPSE GOSUB Crash1_Prepare_Conversation_Building_Collapse BREAK CASE CRASH1_CONVERSATION_PUT_OUT_FIRE GOSUB Crash1_Prepare_Conversation_Put_Out_Fire BREAK CASE CRASH1_CONVERSATION_COOCHIE_HERO GOSUB Crash1_Prepare_Conversation_Coochie_Hero BREAK CASE CRASH1_CONVERSATION_DRIVE_COOCHIE_HOME GOSUB Crash1_Prepare_Conversation_Drive_Coochie_Home BREAK CASE CRASH1_CONVERSATION_ON_RIDE_HOME GOSUB Crash1_Prepare_Conversation_On_Ride_Home BREAK CASE CRASH1_CONVERSATION_COOCHIE_HOUSE GOSUB Crash1_Prepare_Conversation_Coochie_House BREAK CASE CRASH1_CONVERSATION_COOCHIE_NAME GOSUB Crash1_Prepare_Conversation_Coochie_Name BREAK CASE CRASH1_CONVERSATION_GO_OUT GOSUB Crash1_Prepare_Conversation_Go_Out BREAK CASE CRASH1_CONVERSATION_CYA GOSUB Crash1_Prepare_Conversation_Cya BREAK DEFAULT WRITE_DEBUG UNKNOWN_CONVERSATION RETURN ENDSWITCH // Preload the first two pieces of speech GOSUB Crash1_Initial_Speech_Slot_Preloads nConversationStatus = CRASH1_CONVERSATION_STATUS_PREPARED RETURN // **************************************** // Check if the current conversation should be interrupted Crash1_Check_If_Interrupt_Conversation: // Is Carl Dead? SWITCH nCurrentConversationID CASE CRASH1_CONVERSATION_CARL_HELP CASE CRASH1_CONVERSATION_NO_WAY_OUT CASE CRASH1_CONVERSATION_FIRE_EX CASE CRASH1_CONVERSATION_I_BE_BACK CASE CRASH1_CONVERSATION_OUTSIDE_ROOM CASE CRASH1_CONVERSATION_REACH_COOCHIE CASE CRASH1_CONVERSATION_BUILDING_COLLAPSE CASE CRASH1_CONVERSATION_PUT_OUT_FIRE CASE CRASH1_CONVERSATION_COOCHIE_HERO CASE CRASH1_CONVERSATION_DRIVE_COOCHIE_HOME CASE CRASH1_CONVERSATION_ON_RIDE_HOME CASE CRASH1_CONVERSATION_COOCHIE_HOUSE CASE CRASH1_CONVERSATION_COOCHIE_NAME CASE CRASH1_CONVERSATION_GO_OUT CASE CRASH1_CONVERSATION_CYA IF IS_CHAR_DEAD scplayer nConversationStatus = CRASH1_CONVERSATION_STATUS_INTERRUPTED RETURN ENDIF BREAK ENDSWITCH // Is Coochie dead? SWITCH nCurrentConversationID CASE CRASH1_CONVERSATION_COOCHIE_SHOUTS CASE CRASH1_CONVERSATION_COOCHIE_SCREAMS CASE CRASH1_CONVERSATION_NO_WAY_OUT CASE CRASH1_CONVERSATION_FIRE_EX CASE CRASH1_CONVERSATION_I_BE_BACK CASE CRASH1_CONVERSATION_OUTSIDE_ROOM CASE CRASH1_CONVERSATION_REACH_COOCHIE CASE CRASH1_CONVERSATION_BUILDING_COLLAPSE CASE CRASH1_CONVERSATION_PUT_OUT_FIRE CASE CRASH1_CONVERSATION_COOCHIE_HERO CASE CRASH1_CONVERSATION_DRIVE_COOCHIE_HOME CASE CRASH1_CONVERSATION_ON_RIDE_HOME CASE CRASH1_CONVERSATION_COOCHIE_HOUSE CASE CRASH1_CONVERSATION_COOCHIE_NAME CASE CRASH1_CONVERSATION_GO_OUT CASE CRASH1_CONVERSATION_CYA IF IS_CHAR_DEAD charCoochie nConversationStatus = CRASH1_CONVERSATION_STATUS_INTERRUPTED RETURN ENDIF BREAK ENDSWITCH // Is Cowering Guy dead? // SWITCH nCurrentConversationID // CASE CRASH1_CONVERSATION_INSIDE_GUY // IF IS_CHAR_DEAD charHouseCower // nConversationStatus = CRASH1_CONVERSATION_STATUS_INTERRUPTED // RETURN // ENDIF // BREAK // ENDSWITCH // Is the Player and Coochie still in the same car? SWITCH nCurrentConversationID CASE CRASH1_CONVERSATION_ON_RIDE_HOME IF NOT IS_CHAR_IN_ANY_CAR scplayer nConversationStatus = CRASH1_CONVERSATION_STATUS_INTERRUPTED RETURN ENDIF IF NOT IS_CHAR_IN_ANY_CAR charCoochie nConversationStatus = CRASH1_CONVERSATION_STATUS_INTERRUPTED RETURN ENDIF BREAK ENDSWITCH RETURN // **************************************** // Prepare Conversation: Coochie Shouts Crash1_Prepare_Conversation_Coochie_Shouts: // A random one of 9 Coochie shouts for help GENERATE_RANDOM_INT_IN_RANGE 0 9 nTempInt SWITCH nTempInt CASE 0 nConversationSequenceSpeechID[0] = SOUND_CRA1_AA $tlConversationSequenceSubtitle[0] = CRA1_AA BREAK CASE 1 nConversationSequenceSpeechID[0] = SOUND_CRA1_AB $tlConversationSequenceSubtitle[0] = CRA1_AB BREAK CASE 2 nConversationSequenceSpeechID[0] = SOUND_CRA1_AC $tlConversationSequenceSubtitle[0] = CRA1_AC BREAK CASE 3 nConversationSequenceSpeechID[0] = SOUND_CRA1_AD $tlConversationSequenceSubtitle[0] = CRA1_AD BREAK CASE 4 nConversationSequenceSpeechID[0] = SOUND_CRA1_AE $tlConversationSequenceSubtitle[0] = CRA1_AE BREAK CASE 5 nConversationSequenceSpeechID[0] = SOUND_CRA1_AF $tlConversationSequenceSubtitle[0] = CRA1_AF BREAK CASE 6 nConversationSequenceSpeechID[0] = SOUND_CRA1_AG $tlConversationSequenceSubtitle[0] = CRA1_AG BREAK CASE 7 nConversationSequenceSpeechID[0] = SOUND_CRA1_AH $tlConversationSequenceSubtitle[0] = CRA1_AH BREAK CASE 8 nConversationSequenceSpeechID[0] = SOUND_CRA1_AJ $tlConversationSequenceSubtitle[0] = CRA1_AJ BREAK ENDSWITCH nCurrentMaxConversationLines = 1 RETURN // **************************************** // Prepare Conversation: Coochie Screams Crash1_Prepare_Conversation_Coochie_Screams: // A random one of 5 Coochie screams GENERATE_RANDOM_INT_IN_RANGE 0 5 nTempInt SWITCH nTempInt CASE 0 nConversationSequenceSpeechID[0] = SOUND_CRA1_BA $tlConversationSequenceSubtitle[0] = CRA1_BA BREAK CASE 1 nConversationSequenceSpeechID[0] = SOUND_CRA1_BB $tlConversationSequenceSubtitle[0] = CRA1_BB BREAK CASE 2 nConversationSequenceSpeechID[0] = SOUND_CRA1_BC $tlConversationSequenceSubtitle[0] = CRA1_BC BREAK CASE 3 nConversationSequenceSpeechID[0] = SOUND_CRA1_BD $tlConversationSequenceSubtitle[0] = CRA1_BD BREAK CASE 4 nConversationSequenceSpeechID[0] = SOUND_CRA1_BE $tlConversationSequenceSubtitle[0] = CRA1_BE BREAK ENDSWITCH nCurrentMaxConversationLines = 1 RETURN // **************************************** // Prepare Conversation: Carl Help Crash1_Prepare_Conversation_Carl_Help: // A random one of 2 Coochie shouts of encouragement GENERATE_RANDOM_INT_IN_RANGE 0 2 nTempInt SWITCH nTempInt CASE 0 nConversationSequenceSpeechID[0] = SOUND_CRA1_CA $tlConversationSequenceSubtitle[0] = CRA1_CA BREAK CASE 1 nConversationSequenceSpeechID[0] = SOUND_CRA1_CB $tlConversationSequenceSubtitle[0] = CRA1_CB BREAK ENDSWITCH nCurrentMaxConversationLines = 1 RETURN /* // **************************************** // Prepare Conversation: Inside Guy Crash1_Prepare_Conversation_Inside_Guy: // A random one of 4 LSV gang comments // NOTE: Each of these is actually by a differnet voice - but there are no variations, so I'll randomly // choose a piece of speech and see how dodgy it sounds GENERATE_RANDOM_INT_IN_RANGE 0 4 nTempInt SWITCH nTempInt CASE 0 nConversationSequenceSpeechID[0] = SOUND_CRA1_DA $tlConversationSequenceSubtitle[0] = CRA1_DA BREAK CASE 1 nConversationSequenceSpeechID[0] = SOUND_CRA1_DB $tlConversationSequenceSubtitle[0] = CRA1_DB BREAK CASE 2 nConversationSequenceSpeechID[0] = SOUND_CRA1_DC $tlConversationSequenceSubtitle[0] = CRA1_DC BREAK CASE 3 nConversationSequenceSpeechID[0] = SOUND_CRA1_DD $tlConversationSequenceSubtitle[0] = CRA1_DD BREAK ENDSWITCH nCurrentMaxConversationLines = 1 RETURN */ // **************************************** // Prepare Conversation: No Way Out Crash1_Prepare_Conversation_No_Way_Out: // Conversation between Coochie and Carl nTempInt = 0 nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_EA $tlConversationSequenceSubtitle[nTempInt] = CRA1_EA nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_EB $tlConversationSequenceSubtitle[nTempInt] = CRA1_EB nTempInt++ IF nTempInt > CRASH1_MAX_CONVERSATION_LINES WRITE_DEBUG TOO_MANY_CONVERSATION_LINES ENDIF nCurrentMaxConversationLines = nTempInt RETURN // **************************************** // Prepare Conversation: Fire Ex Crash1_Prepare_Conversation_Fire_Ex: // Conversation between Coochie and Carl nConversationSequenceSpeechID[0] = SOUND_CRA1_EC $tlConversationSequenceSubtitle[0] = CRA1_EC nCurrentMaxConversationLines = 1 RETURN // **************************************** // Prepare Conversation: I'll Be Back Crash1_Prepare_Conversation_I_Be_Back: // Conversation between Coochie and Carl nConversationSequenceSpeechID[0] = SOUND_CRA1_ED $tlConversationSequenceSubtitle[0] = CRA1_ED nCurrentMaxConversationLines = 1 RETURN // **************************************** // Prepare Conversation: Outside Room Crash1_Prepare_Conversation_Outside_Room: // Conversation between Coochie and Carl nTempInt = 0 nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_FA $tlConversationSequenceSubtitle[nTempInt] = CRA1_FA nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_FB $tlConversationSequenceSubtitle[nTempInt] = CRA1_FB nTempInt++ IF nTempInt > CRASH1_MAX_CONVERSATION_LINES WRITE_DEBUG TOO_MANY_CONVERSATION_LINES ENDIF nCurrentMaxConversationLines = nTempInt RETURN // **************************************** // Prepare Conversation: Reach Coochie Crash1_Prepare_Conversation_Reach_Coochie: // Conversation between Coochie and Carl nConversationSequenceSpeechID[0] = SOUND_CRA1_GA $tlConversationSequenceSubtitle[0] = CRA1_GA nCurrentMaxConversationLines = 1 RETURN // **************************************** // Prepare Conversation: Building Collapse Crash1_Prepare_Conversation_Building_Collapse: // Conversation between Coochie and Carl nTempInt = 0 nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_GB $tlConversationSequenceSubtitle[nTempInt] = CRA1_GB nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_GC $tlConversationSequenceSubtitle[nTempInt] = CRA1_GC nTempInt++ IF nTempInt > CRASH1_MAX_CONVERSATION_LINES WRITE_DEBUG TOO_MANY_CONVERSATION_LINES ENDIF nCurrentMaxConversationLines = nTempInt RETURN // **************************************** // Prepare Conversation: Put Out Fire Crash1_Prepare_Conversation_Put_Out_Fire: // A random one of 11 Coochie or Carl fire fighting comments GENERATE_RANDOM_INT_IN_RANGE 0 11 nTempInt SWITCH nTempInt CASE 0 nConversationSequenceSpeechID[0] = SOUND_CRA1_HA $tlConversationSequenceSubtitle[0] = CRA1_HA BREAK CASE 1 nConversationSequenceSpeechID[0] = SOUND_CRA1_HB $tlConversationSequenceSubtitle[0] = CRA1_HB BREAK CASE 2 nConversationSequenceSpeechID[0] = SOUND_CRA1_HC $tlConversationSequenceSubtitle[0] = CRA1_HC BREAK CASE 3 nConversationSequenceSpeechID[0] = SOUND_CRA1_HD $tlConversationSequenceSubtitle[0] = CRA1_HD BREAK CASE 4 nConversationSequenceSpeechID[0] = SOUND_CRA1_HE $tlConversationSequenceSubtitle[0] = CRA1_HE BREAK CASE 5 nConversationSequenceSpeechID[0] = SOUND_CRA1_HF $tlConversationSequenceSubtitle[0] = CRA1_HF BREAK CASE 6 nConversationSequenceSpeechID[0] = SOUND_CRA1_HG $tlConversationSequenceSubtitle[0] = CRA1_HG BREAK CASE 7 nConversationSequenceSpeechID[0] = SOUND_CRA1_HH $tlConversationSequenceSubtitle[0] = CRA1_HH BREAK CASE 8 nConversationSequenceSpeechID[0] = SOUND_CRA1_HJ $tlConversationSequenceSubtitle[0] = CRA1_HJ BREAK CASE 9 nConversationSequenceSpeechID[0] = SOUND_CRA1_HK $tlConversationSequenceSubtitle[0] = CRA1_HK BREAK CASE 10 nConversationSequenceSpeechID[0] = SOUND_CRA1_HL $tlConversationSequenceSubtitle[0] = CRA1_HL BREAK ENDSWITCH nCurrentMaxConversationLines = 1 RETURN // **************************************** // Prepare Conversation: Coochie Hero Crash1_Prepare_Conversation_Coochie_Hero: // Conversation between Coochie and Carl nConversationSequenceSpeechID[0] = SOUND_CRA1_JA $tlConversationSequenceSubtitle[0] = CRA1_JA nCurrentMaxConversationLines = 1 RETURN // **************************************** // Prepare Conversation: Drive Coochie Home Crash1_Prepare_Conversation_Drive_Coochie_Home: // Conversation between Coochie and Carl nTempInt = 0 nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_JB $tlConversationSequenceSubtitle[nTempInt] = CRA1_JB nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_JC $tlConversationSequenceSubtitle[nTempInt] = CRA1_JC nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_JD $tlConversationSequenceSubtitle[nTempInt] = CRA1_JD nTempInt++ IF nTempInt > CRASH1_MAX_CONVERSATION_LINES WRITE_DEBUG TOO_MANY_CONVERSATION_LINES ENDIF nCurrentMaxConversationLines = nTempInt RETURN // **************************************** // Prepare Conversation: On Ride Home Crash1_Prepare_Conversation_On_Ride_Home: // Conversation between Coochie and Carl nTempInt = 0 nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_KA $tlConversationSequenceSubtitle[nTempInt] = CRA1_KA nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_KB $tlConversationSequenceSubtitle[nTempInt] = CRA1_KB nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_KC $tlConversationSequenceSubtitle[nTempInt] = CRA1_KC nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_KD $tlConversationSequenceSubtitle[nTempInt] = CRA1_KD nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_KE $tlConversationSequenceSubtitle[nTempInt] = CRA1_KE nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_KF $tlConversationSequenceSubtitle[nTempInt] = CRA1_KF nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_KG $tlConversationSequenceSubtitle[nTempInt] = CRA1_KG nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_KH $tlConversationSequenceSubtitle[nTempInt] = CRA1_KH nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_KJ $tlConversationSequenceSubtitle[nTempInt] = CRA1_KJ nTempInt++ IF nTempInt > CRASH1_MAX_CONVERSATION_LINES WRITE_DEBUG TOO_MANY_CONVERSATION_LINES ENDIF nCurrentMaxConversationLines = nTempInt RETURN // **************************************** // Prepare Conversation: Coochie House Crash1_Prepare_Conversation_Coochie_House: // Conversation between Coochie and Carl nConversationSequenceSpeechID[0] = SOUND_CRA1_LA $tlConversationSequenceSubtitle[0] = CRA1_LA nCurrentMaxConversationLines = 1 RETURN // **************************************** // Prepare Conversation: Coochie Name Crash1_Prepare_Conversation_Coochie_Name: // Conversation between Coochie and Carl nTempInt = 0 nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_MA $tlConversationSequenceSubtitle[nTempInt] = CRA1_MA nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_CRA1_MB $tlConversationSequenceSubtitle[nTempInt] = CRA1_MB nTempInt++ IF nTempInt > CRASH1_MAX_CONVERSATION_LINES WRITE_DEBUG TOO_MANY_CONVERSATION_LINES ENDIF nCurrentMaxConversationLines = nTempInt RETURN // **************************************** // Prepare Conversation: Go Out Crash1_Prepare_Conversation_Go_Out: // Conversation between Coochie and Carl nConversationSequenceSpeechID[0] = SOUND_CRA1_MC $tlConversationSequenceSubtitle[0] = CRA1_MC nCurrentMaxConversationLines = 1 RETURN // **************************************** // Prepare Conversation: Cya Crash1_Prepare_Conversation_Cya: // Conversation between Coochie and Carl nConversationSequenceSpeechID[0] = SOUND_CRA1_MD $tlConversationSequenceSubtitle[0] = CRA1_MD nCurrentMaxConversationLines = 1 RETURN // ************************************************************************************************************* // HOUSEKEEPING GOSUBS // ************************************************************************************************************* // **************************************** // DEBUG TOOLS Crash1_Debug_Tools: // Display mission stage variables for debug IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_SPACE display_debug++ IF display_debug > 2 display_debug = 0 ENDIF CLEAR_ALL_VIEW_VARIABLES ENDIF GET_CHAR_HEALTH scplayer nTempInt IF NOT IS_CHAR_DEAD charCoochie GET_CHAR_HEALTH charCoochie nTempInt2 ENDIF IF display_debug = 1 // system variables Crash1_view_debug[0] = m_stage Crash1_view_debug[1] = m_goals Crash1_view_debug[2] = m_mission_timer Crash1_view_debug[3] = nTempInt Crash1_view_debug[4] = nTempInt2 Crash1_view_debug[5] = aiCoochie Crash1_view_debug[6] = 0 Crash1_view_debug[7] = 0 VIEW_INTEGER_VARIABLE Crash1_view_debug[6] ignore VIEW_INTEGER_VARIABLE Crash1_view_debug[7] ignore VIEW_INTEGER_VARIABLE Crash1_view_debug[0] m_stage VIEW_INTEGER_VARIABLE Crash1_view_debug[1] m_goals VIEW_INTEGER_VARIABLE Crash1_view_debug[2] m_mission_timer VIEW_INTEGER_VARIABLE Crash1_view_debug[3] player_health VIEW_INTEGER_VARIABLE Crash1_view_debug[4] coochie_health VIEW_INTEGER_VARIABLE Crash1_view_debug[5] aiCoochie ENDIF IF display_debug = 2 // put mission variable for display in here // Crash1_view_debug[0] = m_stage // Crash1_view_debug[1] = m_goals // Crash1_view_debug[2] = dialogue_flag // Crash1_view_debug[3] = dialogue_timer // Crash1_view_debug[4] = help_flag // Crash1_view_debug[5] = help_timer // Crash1_view_debug[6] = TIMERA // Crash1_view_debug[7] = TIMERB // VIEW_INTEGER_VARIABLE Crash1_view_debug[0] m_stage // VIEW_INTEGER_VARIABLE Crash1_view_debug[1] m_goals // VIEW_INTEGER_VARIABLE Crash1_view_debug[2] dialogue_flag // VIEW_INTEGER_VARIABLE Crash1_view_debug[3] dialogue_timer // VIEW_INTEGER_VARIABLE Crash1_view_debug[4] help_flag // VIEW_INTEGER_VARIABLE Crash1_view_debug[5] help_timer // VIEW_INTEGER_VARIABLE Crash1_view_debug[6] TIMERA // VIEW_INTEGER_VARIABLE Crash1_view_debug[7] TIMERB ENDIF // Quit level - no mission pass/fail - cleanup only IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ESC m_quit = 1 ENDIF // Pause level IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_P IF m_pause = 0 m_pause = 1 WRITE_DEBUG LEVEL_PAUSED ELSE m_pause = 0 WRITE_DEBUG LEVEL_UNPAUSED ENDIF ENDIF RETURN // **************************************** // DEBUG SHORTCUTS Crash1_Debug_Shortcuts: IF NOT IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_J RETURN ENDIF // Jump to the house IF m_stage = 1 AND m_goals < 3 // Position the player at the house CLEAR_AREA 2311.2341 -1150.6134 25.8027 0.5 0 LOAD_SCENE 2311.2341 -1150.6134 25.8027 SET_CHAR_HEADING scplayer 266.3994 SET_CHAR_COORDINATES scplayer 2311.2341 -1150.6134 25.8027 SET_CAMERA_BEHIND_PLAYER // Remove Ammunation Blip variable REMOVE_BLIP blipDestination REMOVE_BLIP blipMolotovsOnRoute // Give molotovs if none IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_MOLOTOV REMOVE_PICKUP pickupMolotovsOnRoute GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_MOLOTOV 20 ENDIF m_goals = 3 ENDIF // Jump to the 'Screaming Girl' cutscene IF m_stage = 2 // Clean up 'Rooms on Fire' REPEAT 5 nLoop IF flagTargetRoomHit[nLoop] = 0 IF NOT HAS_OBJECT_BEEN_DAMAGED objectWindow[nLoop] BREAK_OBJECT objectWindow[nLoop] TRUE ENDIF flagTargetRoomHit[nLoop] = 1 flagTargetRoomBurning[nLoop] = TRUE DELETE_OBJECT objectTargetRoom[nLoop] REMOVE_BLIP blipTargetRoom[nLoop] ENDIF ENDREPEAT countTargetRoomsHit = 5 // Clean up Molotov Pickups IF flagMolotovPickupsActive = 1 REPEAT 2 nLoop REMOVE_PICKUP pickupMolotovs[nLoop] REMOVE_BLIP blipMolotovPickups[nLoop] ENDREPEAT ENDIF IF flagMolotovsOnRouteActive = 1 REMOVE_PICKUP pickupMolotovsOnRoute REMOVE_BLIP blipMolotovsOnRoute ENDIF // Kill off GangOutside IF existsGangOutside = 1 REPEAT 5 nLoop IF NOT IS_CHAR_DEAD charGangOutside[nLoop] CLEAR_CHAR_TASKS_IMMEDIATELY charGangOutside[nLoop] TASK_DIE charGangOutside[nLoop] ENDIF ENDREPEAT ENDIF // Kill off GangBackup IF existsGangBackup = 1 REPEAT 5 nLoop IF NOT IS_CHAR_DEAD charGangBackup[nLoop] CLEAR_CHAR_TASKS_IMMEDIATELY charGangBackup[nLoop] TASK_DIE charGangBackup[nLoop] ENDIF ENDREPEAT ENDIF GOSUB Crash1_next_stage ENDIF // Jump to 'outside girl's room with extinguisher' IF m_stage = 4 AND m_goals < 10 // Give player the fire extinguisher flagFireExHelpDisplayed = 1 IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_EXTINGUISHER GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_EXTINGUISHER CRASH1_INFINITE_AMMO REMOVE_BLIP blipDestination ENDIF // Position the player outside the room CLEAR_AREA 2336.5095 -1181.3417 1030.9688 0.5 0 SET_CHAR_HEADING scplayer 279.3672 SET_CHAR_COORDINATES scplayer 2336.5095 -1181.3417 1030.9688 SET_CAMERA_BEHIND_PLAYER // Stop protecting hte girl from flames flagClearFlamesAroundGirl = FALSE SET_CHAR_PROOFS charCoochie FALSE FALSE FALSE FALSE FALSE // Prepare the 'outside room' speech IF NOT nCurrentConversationID = CRASH1_CONVERSATION_NONE GOSUB Crash1_Conversation_Command_Cancel ENDIF nRequiredConversationID = CRASH1_CONVERSATION_OUTSIDE_ROOM GOSUB Crash1_Conversation_Command_Prepare m_goals = 11 ENDIF // Jump to 'ready to leave house with girl' IF m_stage = 6 AND m_goals < 8 REMOVE_BLIP blipDestination // Move player CLEAR_AREA 2350.3596 -1180.5604 1026.9766 0.5 0 SET_CHAR_HEADING scplayer 266.3335 SET_CHAR_COORDINATES scplayer 2350.3596 -1180.5604 1026.9766 SET_CAMERA_BEHIND_PLAYER // Move Coochie IF NOT IS_CHAR_DEAD charCoochie CLEAR_AREA 2349.0698 -1181.5055 1026.9834 0.5 0 SET_CHAR_HEADING charCoochie 266.6129 SET_CHAR_COORDINATES charCoochie 2349.0698 -1181.5055 1026.9834 ENDIF m_goals = 8 ENDIF // Jump to girl's house IF m_stage = 7 AND m_goals = 2 // Move player CLEAR_AREA 2423.5388 -1721.2123 12.9061 0.5 0 SET_CHAR_HEADING scplayer 154.9302 SET_CHAR_COORDINATES scplayer 2423.5388 -1721.2123 12.9061 SET_CAMERA_BEHIND_PLAYER // Move Coochie IF NOT IS_CHAR_DEAD charCoochie IF NOT IS_CHAR_IN_ANY_CAR charCoochie CLEAR_AREA 2419.1685 -1718.1705 12.7866 0.5 0 SET_CHAR_HEADING charCoochie 75.9556 SET_CHAR_COORDINATES charCoochie 2419.1685 -1718.1705 12.7866 ENDIF ENDIF ENDIF RETURN // **************************************** // FRAME COUNTER (Useful if processor scheduling is needed) Crash1_Frame_Counter: m_frame_num++ IF m_frame_num > 9 m_frame_num = 0 ENDIF RETURN // **************************************** // ADDITIONAL TIMERS Crash1_Additional_Timers: GET_GAME_TIMER m_this_frame_time m_time_diff = m_this_frame_time - m_last_frame_time m_last_frame_time = m_this_frame_time m_mission_timer += m_time_diff RETURN // **************************************** // UPDATE ORIENTATE TIMER Crash1_UpdateTimer_OrientateTimer: GET_GAME_TIMER nTempTimer flagOrientate = 0 IF nTempTimer > timerOrientate flagOrientate = 1 timerOrientate = nTempTimer + 3000 ENDIF RETURN // **************************************** // CHECK IF IN HOUSE Crash1_CheckIf_In_House: // NOTE: When entering a house, it needs to use the GET_CHAR_AREA_VISIBLE for the player so that the Interior ID // of the player and the Entry/Exit that the player used both get updated at the same time. // When exiting a house, it needs to use the GET_AREA_VISIBLE which is the GAME's visible area because this // changes immediately to be the outside area whereas the GET_CHAR_AREA_VISIBLE for the player doesn't until // the player has played the 'exiting house' sequence and appears outside. The problem with this is that // Coochie doesn't get frozen until the player is outside and this leads to all sorts of problems if she // follows him out of the house. // If the player is in the house, check if the GAME has registered him as being out of the house IF flagInHouse = TRUE // Use the GAME's visible area GET_AREA_VISIBLE nTempInt IF NOT nTempInt = 5 // ...no longer in the house flagInHouse = FALSE flagLeavingHouse = TRUE // ...allow the player to sprint again DISABLE_PLAYER_SPRINT player1 FALSE // ...remove player smoke effect statusSmoke = 3 GOSUB Crash1_Update_Smoke // ...remove heathaze effect in the house SET_HEATHAZE_EFFECT FALSE // Record the status of the big fires so they can be reactivated if the player comes back into the house IF m_stage = 5 statusBigFires = 5 GOSUB Crash1_Update_Big_Fires ENDIF // Remove the existing small fires and re-create them at ground level statusFires = CRASH1_EXTERIOR_FIRE_ALL GOSUB Crash1_Update_Fires_Exterior // Unzoom the radar SET_RADAR_ZOOM 0 ENDIF RETURN ENDIF // The player is not in the house, so check if he has entered it IF flagInHouse = FALSE // Use the PLAYER's visible area and the Entry/Exit used GET_CHAR_AREA_VISIBLE scplayer nTempInt IF flagLeavingHouse = TRUE IF nTempInt = 5 // ...still leaving house RETURN ELSE // ...definitely left house flagLeavingHouse = FALSE ENDIF ENDIF // Check if the player has entered the house IF nTempInt = 5 GET_NAME_OF_ENTRY_EXIT_CHAR_USED scplayer txtString IF $txtString = &GANG // ...definitely just entered the Burning Desire house flagInHouse = TRUE flagBeenInHouse = TRUE flagCheckingForCoochie = FALSE timerOutsideDelay = 0 DISABLE_PLAYER_SPRINT player1 TRUE // ...create player smoke effect statusSmoke = 2 GOSUB Crash1_Update_Smoke // ...create heathaze effect in the house SET_HEATHAZE_EFFECT TRUE // ...make sure the player takes less fire damage while in the house SET_CHAR_FIRE_DAMAGE_MULTIPLIER scplayer 0.3 // ...make sure the navigation nodes are switched on SWITCH_PED_ROADS_ON 2300.0 -1200.0 1000.0 2370.0 -1160.0 1050.0 // Remove the existing small fires and re-create them in the interior (1000m in air) statusFires = 0 GOSUB Crash1_Update_Fires_Interior // If the player goes outside at any time during stage 4 (reach the lady) and then comes back in, // reactivate the fire at her bedroom door IF m_stage = 4 statusBigFires = 4 GOSUB Crash1_Update_Big_Fires ENDIF // If the player goes outside at any time during stage 5 (lead the lady out) and then comes back in, // reactivate the fires that were burning when he left IF m_stage = 5 statusBigFires = 6 GOSUB Crash1_Update_Big_Fires ENDIF // Spread some cash pickups around the house GOSUB Crash1_Create_Room_Cash_Pickups // Zoom the radar and makle sure all blips get shown on the zoomed radar SET_RADAR_ZOOM 50 SHOW_BLIPS_ON_ALL_LEVELS TRUE // Get rid of the 'enter the house' text CLEAR_THIS_PRINT CRA1_06 // Get rid of the 'go back for girl' text CLEAR_THIS_PRINT CRA1_10 ENDIF ENDIF ENDIF RETURN // ================================================================= // GOSUB: Next_Stage (sets flags and timers for next mission stage) // ================================================================= Crash1_next_stage: m_stage++ m_goals = 0 TIMERA = 0 TIMERB = 0 RETURN // ************************************************************************************************************* // INTRO CUTSCENE GOSUB // ************************************************************************************************************* Crash1_Intro_Cutscene: SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 17 SET_CHAR_COORDINATES scplayer 1038.1704 -1335.2207 12.5493 SET_CHAR_HEADING scplayer 0.0 LOAD_CUTSCENE CRASH1A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_FADING_COLOUR 0 0 0 DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RETURN // ************************************************************************************************************* // INITIALISATION GOSUBS // ************************************************************************************************************* Crash1_Initialisation: WHILE NOT IS_PLAYER_PLAYING player1 WAIT 0 ENDWHILE GOSUB Crash1_Load_All_Models GOSUB Crash1_Load_All_Anims // Position the player CLEAR_AREA 1038.1704 -1335.2207 12.5493 0.5 0 LOAD_SCENE 1038.1704 -1335.2207 12.5493 SET_CHAR_COORDINATES scplayer 1038.1704 -1335.2207 12.5493 SET_CHAR_HEADING scplayer 0.0 SET_CAMERA_BEHIND_PLAYER // Create a Cop Car outside the Donut shop CREATE_CAR COPCARLA 1032.4376 -1330.9314 12.3864 carCopCar SET_CAR_HEADING carCopCar 270.0000 LOCK_CAR_DOORS carCopCar CARLOCK_UNLOCKED MARK_CAR_AS_NO_LONGER_NEEDED carCopCar // Don't allow entry to the gang house SWITCH_ENTRY_EXIT GANG FALSE // Delete the global Object Burning Desire door DELETE_OBJECT g_BD_DOOR // Disband the player's group and prevent recruitment REMOVE_GROUP Players_Group SET_PLAYER_GROUP_RECRUITMENT player1 FALSE // Disable the mod garage (to prevent a potential problem failing while in it during the mission) disable_mod_garage = TRUE // Fade in SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN GOSUB Crash1_next_stage RETURN // *********************************** // LOAD ALL MODELS Crash1_Load_All_Models: // CARS REQUEST_MODEL VOODOO // Car with hood popped, and gangBackup car REQUEST_MODEL COPCARLA // Outside donut shop // PEDS REQUEST_MODEL LSV1 // Gang guy type 1 REQUEST_MODEL LSV2 // Gang guy type 2 REQUEST_MODEL LSV3 // Gang guy type 3 REQUEST_MODEL GANGRL3 // Coochie (the girl to be rescued) // GUNS REQUEST_MODEL COLT45 // pistol REQUEST_MODEL MOLOTOV // molotov REQUEST_MODEL FIRE_EX // fire extinguisher // OBJECTS REQUEST_MODEL BREAK_WALL_1A // Normal Wall 0 REQUEST_MODEL BREAK_WALL_2A // Normal Wall 1 REQUEST_MODEL BREAK_WALL_3A // Normal Wall 2 REQUEST_MODEL BREAK_WALL_1B // Broken Wall 0 REQUEST_MODEL BREAK_WALL_2B // Broken Wall 1 REQUEST_MODEL BREAK_WALL_3B // Broken Wall 2 REQUEST_MODEL BD_FIRE1_O // Animated Wall 0 REQUEST_MODEL CR_AMMOBOX // Invisible obbject at breakable windows LOAD_ALL_MODELS_NOW // Are Cars Loaded? WHILE NOT HAS_MODEL_LOADED VOODOO OR NOT HAS_MODEL_LOADED COPCARLA WAIT 0 ENDWHILE // Are Peds Loaded? WHILE NOT HAS_MODEL_LOADED LSV1 OR NOT HAS_MODEL_LOADED LSV2 OR NOT HAS_MODEL_LOADED LSV3 OR NOT HAS_MODEL_LOADED GANGRL3 WAIT 0 ENDWHILE // Are weapons loaded? WHILE NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED MOLOTOV OR NOT HAS_MODEL_LOADED FIRE_EX WAIT 0 ENDWHILE // Are the Objects loaded? WHILE NOT HAS_MODEL_LOADED BREAK_WALL_1B OR NOT HAS_MODEL_LOADED BREAK_WALL_2B OR NOT HAS_MODEL_LOADED BREAK_WALL_3B OR NOT HAS_MODEL_LOADED BD_FIRE1_O WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED CR_AMMOBOX OR NOT HAS_MODEL_LOADED BREAK_WALL_1A OR NOT HAS_MODEL_LOADED BREAK_WALL_2A OR NOT HAS_MODEL_LOADED BREAK_WALL_3A WAIT 0 ENDWHILE RETURN // *********************************** // LOAD ALL ANIMS Crash1_Load_All_Anims: // Gang Outside anims REQUEST_ANIMATION BD_FIRE // for BD specific anims // Are Gang Outside anims loaded? WHILE NOT HAS_ANIMATION_LOADED BD_FIRE WAIT 0 ENDWHILE RETURN // ************************************************************************************************************* // ENTITY CREATION GOSUBS // ************************************************************************************************************* // ******************************* // Car outside Gang Hunt with Hood open Crash1_Create_Car_Being_Worked_On: xposTemp = 2351.2366 yposTemp = -1161.0748 zposTemp = 27.4175 headTemp = 268.3430 CLEAR_AREA xposTemp yposTemp zposTemp 10.0 FALSE CREATE_CAR VOODOO xposTemp yposTemp zposTemp carBeingWorkedOn SET_CAR_HEADING carBeingWorkedOn headTemp OPEN_CAR_DOOR carBeingWorkedOn BONNET existsCarBeingWorkedOn = 1 RETURN // ******************************* // Five outside gang guys Crash1_Create_Outside_Gang_Members: // Gang Guy 0: Mechanic xposTemp = 2354.2604 yposTemp = -1161.1060 zposTemp = 26.4678 headTemp = 80.3034 nTempInt = 0 CREATE_CHAR PEDTYPE_GANG_SMEX LSV3 xposTemp yposTemp zposTemp charGangOutside[nTempInt] SET_CHAR_HEADING charGangOutside[nTempInt] headTemp GIVE_WEAPON_TO_CHAR charGangOutside[nTempInt] WEAPONTYPE_PISTOL 999 SET_CHAR_IS_TARGET_PRIORITY charGangOutside[nTempInt] TRUE SET_CHAR_DECISION_MAKER charGangOutside[nTempInt] dmEmpty aiGangOutside[nTempInt] = -1 // Gang Guy 1: Speaking on mobile phone xposTemp = 2349.7393 yposTemp = -1165.1923 zposTemp = 26.3933 headTemp = 65.0946 //325.2994 nTempInt++ CREATE_CHAR PEDTYPE_GANG_SMEX LSV2 xposTemp yposTemp zposTemp charGangOutside[nTempInt] SET_CHAR_HEADING charGangOutside[nTempInt] headTemp GIVE_WEAPON_TO_CHAR charGangOutside[nTempInt] WEAPONTYPE_PISTOL 999 SET_CHAR_IS_TARGET_PRIORITY charGangOutside[nTempInt] TRUE SET_CHAR_DECISION_MAKER charGangOutside[nTempInt] dmEmpty aiGangOutside[nTempInt] = -1 // Gang Guy 2: Smoking at Front Door xposTemp = 2354.2446 yposTemp = -1170.4009 zposTemp = 26.9609 headTemp = 1.1416 nTempInt++ CREATE_CHAR PEDTYPE_GANG_SMEX LSV1 xposTemp yposTemp zposTemp charGangOutside[nTempInt] SET_CHAR_HEADING charGangOutside[nTempInt] headTemp GIVE_WEAPON_TO_CHAR charGangOutside[nTempInt] WEAPONTYPE_PISTOL 999 SET_CHAR_IS_TARGET_PRIORITY charGangOutside[nTempInt] TRUE SET_CHAR_DECISION_MAKER charGangOutside[nTempInt] dmEmpty aiGangOutside[nTempInt] = -1 // Gang Guy 3: Smoking against tree (back of house at right) xposTemp = 2315.0057 yposTemp = -1189.8250 zposTemp = 27.0045 headTemp = 52.4876 nTempInt++ CREATE_CHAR PEDTYPE_GANG_SMEX LSV2 xposTemp yposTemp zposTemp charGangOutside[nTempInt] SET_CHAR_HEADING charGangOutside[nTempInt] headTemp GIVE_WEAPON_TO_CHAR charGangOutside[nTempInt] WEAPONTYPE_PISTOL 999 SET_CHAR_IS_TARGET_PRIORITY charGangOutside[nTempInt] TRUE SET_CHAR_DECISION_MAKER charGangOutside[nTempInt] dmEmpty SET_CHAR_ACCURACY charGangOutside[nTempInt] 15 aiGangOutside[nTempInt] = -1 // Gang Guy 4: Smoking against other house (back of house at left) xposTemp = 2349.9534 yposTemp = -1204.1256 zposTemp = 26.9609 headTemp = 348.4000 nTempInt++ CREATE_CHAR PEDTYPE_GANG_SMEX LSV1 xposTemp yposTemp zposTemp charGangOutside[nTempInt] SET_CHAR_HEADING charGangOutside[nTempInt] headTemp GIVE_WEAPON_TO_CHAR charGangOutside[nTempInt] WEAPONTYPE_PISTOL 999 SET_CHAR_IS_TARGET_PRIORITY charGangOutside[nTempInt] TRUE SET_CHAR_DECISION_MAKER charGangOutside[nTempInt] dmEmpty aiGangOutside[nTempInt] = -1 existsGangOutside = 1 RETURN // ******************************* // House Windows Crash1_Create_Windows: // Front Downstairs Right Window xposTemp = 2345.914 yposTemp = -1188.633 zposTemp = 28.969 nTempInt = 0 CREATE_OBJECT_NO_OFFSET bd_window xposTemp yposTemp zposTemp objectWindow[nTempInt] // Front Downstairs Left Window xposTemp = 2336.023 yposTemp = -1188.633 zposTemp = 28.969 nTempInt++ CREATE_OBJECT_NO_OFFSET bd_window xposTemp yposTemp zposTemp objectWindow[nTempInt] // Front Downstairs Far Left Window xposTemp = 2326.164 yposTemp = -1188.633 zposTemp = 28.969 nTempInt++ CREATE_OBJECT_NO_OFFSET bd_window xposTemp yposTemp zposTemp objectWindow[nTempInt] // Window by Front Door xposTemp = 2345.977 yposTemp = -1170.977 zposTemp = 28.969 nTempInt++ CREATE_OBJECT_NO_OFFSET bd_window xposTemp yposTemp zposTemp objectWindow[nTempInt] SET_OBJECT_HEADING objectWindow[nTempInt] 180.0 // Kitchen Window xposTemp = 2326.57 yposTemp = -1170.984 zposTemp = 28.953 nTempInt++ CREATE_OBJECT_NO_OFFSET bd_window xposTemp yposTemp zposTemp objectWindow[nTempInt] SET_OBJECT_HEADING objectWindow[nTempInt] 180.0 // Girls Window xposTemp = 2345.977 yposTemp = -1170.977 zposTemp = 32.953 nTempInt++ CREATE_OBJECT_NO_OFFSET bd_window_shatter xposTemp yposTemp zposTemp objectWindow[nTempInt] SET_OBJECT_HEADING objectWindow[nTempInt] 180.0 // Front Upstairs Left Window xposTemp = 2336.023 yposTemp = -1188.633 zposTemp = 32.961 nTempInt++ CREATE_OBJECT_NO_OFFSET bd_window xposTemp yposTemp zposTemp objectWindow[nTempInt] // Front Upstairs Right Window xposTemp = 2345.914 yposTemp = -1188.633 zposTemp = 32.961 nTempInt++ CREATE_OBJECT_NO_OFFSET bd_window xposTemp yposTemp zposTemp objectWindow[nTempInt] RETURN // ******************************* // Front Door Crash1_Create_Front_Door: // Create the mission version of the BD door CREATE_OBJECT CR1_DOOR 2352.8512 -1171.0266 26.9669 objectFrontDoor SET_OBJECT_HEADING objectFrontDoor 90.0000 SET_OBJECT_DYNAMIC objectFrontDoor FALSE SET_OBJECT_COLLISION_DAMAGE_EFFECT objectFrontDoor FALSE SET_OBJECT_PROOFS objectFrontDoor TRUE TRUE TRUE TRUE TRUE RETURN // ******************************* // Front Door Crash1_Create_Walls: // Wall 0 xposTemp = 2338.126 yposTemp = -1181.917 zposTemp = 1033.188 nTempInt = 0 CREATE_OBJECT_NO_OFFSET BREAK_WALL_1A xposTemp yposTemp zposTemp objectWall[nTempInt] SET_OBJECT_HEADING objectWall[nTempInt] 90.0 statusWalls[nTempInt] = 0 // Wall 1 xposTemp = 2330.402 yposTemp = -1179.15 zposTemp = 1030.55 nTempInt++ CREATE_OBJECT_NO_OFFSET BREAK_WALL_2A xposTemp yposTemp zposTemp objectWall[nTempInt] statusWalls[nTempInt] = 0 // Wall 2 xposTemp = 2340.293 yposTemp = -1182.294 zposTemp = 1026.963 nTempInt++ CREATE_OBJECT_NO_OFFSET BREAK_WALL_3A xposTemp yposTemp zposTemp objectWall[nTempInt] SET_OBJECT_HEADING objectWall[nTempInt] 90.0 statusWalls[nTempInt] = 0 // These objects will need interior collision REPEAT 3 nLoop SET_OBJECT_AREA_VISIBLE objectWall[nLoop] 5 ENDREPEAT existsWalls = 1 RETURN // ************************************************************************************************************* // END OF LEVEL GOSUBS - fail, pass, cleanup // ************************************************************************************************************* // FAIL mission_failed_Crash1: PRINT_BIG M_FAIL 5000 1 IF flagGirlIsToast = FALSE AND existsCoochie = TRUE AND IS_CHAR_DEAD charCoochie // Girl didn't burn to death so display a more generic 'girl dead' message PRINT_NOW CRA1_51 5000 1 ENDIF m_nfailed = 1 RETURN // PASS mission_passed_Crash1: // This mission gives no cash or respect reward, so use M_PASSD label PRINT_WITH_NUMBER_BIG M_PASSD 0 5000 1 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 REGISTER_MISSION_PASSED CRASH_1 PLAYER_MADE_PROGRESS 1 flag_crash_mission_counter ++ // Make Coochie a girlfriend SET_BIT iActiveGF COOCHIE RETURN // CLEANUP mission_cleanup_Crash1: // Entity Clearup // ...gang outside IF existsGangOutside = 1 REPEAT 5 nLoop MARK_CHAR_AS_NO_LONGER_NEEDED charGangOutside[nLoop] ENDREPEAT existsGangOutside = 0 ENDIF // ...gang car being worked on IF existsCarBeingWorkedOn = 1 MARK_CAR_AS_NO_LONGER_NEEDED carBeingWorkedOn existsCarBeingWorkedOn = 0 ENDIF // ...molotov pickups IF flagMolotovPickupsActive = 1 REPEAT 2 nLoop REMOVE_PICKUP pickupMolotovs[nLoop] REMOVE_BLIP blipMolotovPickups[nLoop] ENDREPEAT flagMolotovPickupsActive = 0 ENDIF // ...cash pickups REPEAT CRASH1_MAX_CASH_PICKUPS nLoop REMOVE_PICKUP pickupCash[nLoop] ENDREPEAT // ...gang backup IF existsGangBackup = 1 MARK_CAR_AS_NO_LONGER_NEEDED carGangBackup REPEAT 2 nLoop MARK_CHAR_AS_NO_LONGER_NEEDED charGangBackup[nLoop] ENDREPEAT existsGangBackup = 0 ENDIF // ...guy on fire IF existsGuyOnFire = 1 MARK_CHAR_AS_NO_LONGER_NEEDED charGuyOnFire REMOVE_SCRIPT_FIRE fireGuyOnFire existsGuyOnFire = 0 ENDIF // ...coochie IF existsCoochie = 1 MARK_CHAR_AS_NO_LONGER_NEEDED charCoochie REMOVE_BLIP blipCoochie CLEAR_ONSCREEN_COUNTER g_Crash1_counterKM1 REMOVE_SCRIPT_FIRE fireCoochie existsCoochie = 1 ENDIF // ...house guys on way in IF existsHouseGuysIn = 1 REMOVE_CHAR_ELEGANTLY charHouseCower REMOVE_CHAR_ELEGANTLY charHouseStairs existsHouseGuysIn = 0 ENDIF // ...fire extinguisher IF flagFireExtinguisherPickupActive = 1 REMOVE_PICKUP pickupFireExtinguisher flagFireExtinguisherPickupActive = 0 ENDIF // Blips REMOVE_BLIP blipDestination REMOVE_BLIP blipMolotovsOnRoute // Animation Clearup REMOVE_ANIMATION BD_FIRE // Get rid of the Player's mission specific weapons IF IS_PLAYER_PLAYING player1 REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_MOLOTOV REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_EXTINGUISHER // ...restore the player's fire damage SET_CHAR_FIRE_DAMAGE_MULTIPLIER scplayer 1.0 // ...make sure the player can sprint again DISABLE_PLAYER_SPRINT player1 FALSE // ...make sure the player's group follows his commands again SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 FALSE // ...make sure player is allowed to talk again SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF // Fires // Don't do this because all the fires will then be converted to non-script fires when mission is finished and keep burning // REMOVE_ALL_SCRIPT_FIRES // Smoke IF flagInHouse = 1 // ...remove smoke effect statusSmoke = 3 GOSUB Crash1_Update_Smoke ENDIF // ...remove entrance smoke statusSmoke = 1 GOSUB Crash1_Update_Smoke // ...remove Coochie Window smoke statusSmoke = 5 GOSUB Crash1_Update_Smoke // Models MARK_MODEL_AS_NO_LONGER_NEEDED VOODOO MARK_MODEL_AS_NO_LONGER_NEEDED COPCARLA MARK_MODEL_AS_NO_LONGER_NEEDED FIRETRUK // PEDS MARK_MODEL_AS_NO_LONGER_NEEDED LSV1 MARK_MODEL_AS_NO_LONGER_NEEDED LSV2 MARK_MODEL_AS_NO_LONGER_NEEDED LSV3 MARK_MODEL_AS_NO_LONGER_NEEDED GANGRL3 MARK_MODEL_AS_NO_LONGER_NEEDED LAFD1 // GUNS MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED MOLOTOV MARK_MODEL_AS_NO_LONGER_NEEDED FIRE_EX // OBJECTS MARK_MODEL_AS_NO_LONGER_NEEDED BREAK_WALL_1A MARK_MODEL_AS_NO_LONGER_NEEDED BREAK_WALL_2A MARK_MODEL_AS_NO_LONGER_NEEDED BREAK_WALL_3A MARK_MODEL_AS_NO_LONGER_NEEDED BREAK_WALL_1B MARK_MODEL_AS_NO_LONGER_NEEDED BREAK_WALL_2B MARK_MODEL_AS_NO_LONGER_NEEDED BREAK_WALL_3B MARK_MODEL_AS_NO_LONGER_NEEDED BD_FIRE1_O MARK_MODEL_AS_NO_LONGER_NEEDED CR_AMMOBOX // Heat haze SET_HEATHAZE_EFFECT FALSE // === RESTORE ENVIRONMENT SETTINGS === SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_WANTED_MULTIPLIER 1.0 SET_RADAR_ZOOM 0 // Restore Player settings DISABLE_PLAYER_SPRINT player1 FALSE // Switch on emergency services SWITCH_EMERGENCY_SERVICES ON // Switch off the entry/exit to make sure the player is never allowed back in outside the mission SWITCH_ENTRY_EXIT GANG FALSE // Allow Group Recruitment again SET_PLAYER_GROUP_RECRUITMENT player1 TRUE // Re-enable the mod garage (to prevent a potential problem failing while in it during the mission) disable_mod_garage = FALSE // Re-create the Burning Desire door (global object) CREATE_OBJECT CR1_DOOR 2352.8512 -1171.0266 26.9669 g_BD_DOOR SET_OBJECT_HEADING g_BD_DOOR 90.0000 SET_OBJECT_DYNAMIC g_BD_DOOR FALSE SET_OBJECT_COLLISION_DAMAGE_EFFECT g_BD_DOOR FALSE SET_OBJECT_PROOFS g_BD_DOOR TRUE TRUE TRUE TRUE TRUE DONT_REMOVE_OBJECT g_BD_DOOR // Make sure the mobile phone doesn't ring immediately after a mission GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // *********************************** Territory War 6 ************************************* // *********************************** Docks shootout ************************************ // ***************************************************************************************** // * Deal going down at the docks player must go there take everyone out and get the money * // * loads of guys to take out. Two dealing parties start to kick off with each other and * // * the player. Player must take everyone out the go to get the case. However case is * // * empty then other gang members drive past and go down storm drains. Player must chase * // * them down and get the stuff back off them. * // ***************************************************************************************** // Mission start stuff { SCRIPT_NAME crash3 GOSUB mission_start_drugs3 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_drugs3_failed ENDIF GOSUB mission_cleanup_drugs3 MISSION_END // **************************************** Variables for mission **************************** //outside warehouse LVAR_INT leftdoor1_c3 LVAR_INT rightdoor1_c3 LVAR_INT leftdoor2_c3 LVAR_INT rightdoor2_c3 LVAR_INT leftdoor3_c3 LVAR_INT rightdoor3_c3 LVAR_INT leftdoor4_c3 LVAR_INT rightdoor4_c3 LVAR_INT ramp1_c3 LVAR_INT ramp2_c3 LVAR_INT ramp3_c3 LVAR_INT ramp4_c3 LVAR_INT ramp5_c3 LVAR_INT ramp6_c3 LVAR_INT ramp7_c3 LVAR_INT ramp8_c3 LVAR_INT dockshutter_c3 LVAR_INT keypad_c3 LVAR_INT crash3_DM //decision maker LVAR_INT crash3weak_DM //decision maker LVAR_INT chasecar1_c3 LVAR_INT chasecar2_c3 LVAR_INT chasecar3_c3 LVAR_INT chasecar4_c3 LVAR_INT parkedtruck1_c3 LVAR_INT parkedtruck2_c3 LVAR_INT forklift1_c3 LVAR_INT forklift2_c3 LVAR_INT forkworker1_c3 LVAR_INT forkworker2_c3 LVAR_INT workerdoor_c3 LVAR_INT workerchat_c3 LVAR_INT workerdirector_c3 LVAR_INT talkworker1_c3 LVAR_INT talkworker2_c3 LVAR_INT barrel1_c3 LVAR_INT barrel2_c3 LVAR_INT barrel3_c3 LVAR_INT barrel4_c3 LVAR_INT barrel5_c3 LVAR_INT barrel6_c3 LVAR_INT cutscenec3_seq //sequences LVAR_INT shuttersound_c3 //sound LVAR_INT scriptstatus_c3 //text LVAR_TEXT_LABEL $text_label_c3 LVAR_INT audio_label_c3 LVAR_TEXT_LABEL $input_text_c3 //inside warehouse LVAR_INT guard1_c3 LVAR_INT guard2_c3 LVAR_INT guard3_c3 LVAR_INT guard4_c3 LVAR_INT guard5_c3 LVAR_INT guard6_c3 LVAR_INT guard7_c3 LVAR_INT guard8_c3 LVAR_INT guard9_c3 LVAR_INT guard10_c3 LVAR_INT guard11_c3 LVAR_INT guard12_c3 LVAR_INT guard13_c3 LVAR_INT guard14_c3 LVAR_INT guard15_c3 LVAR_INT guard16_c3 LVAR_INT flat1_c3 LVAR_INT flat2_c3 LVAR_INT tolotov_c3 LVAR_INT box_c3 LVAR_INT box_c3health LVAR_INT russian1_c3 LVAR_INT russian2_c3 LVAR_INT russian3_c3 LVAR_INT russian4_c3 LVAR_INT playerbike_c3 LVAR_INT russianboss1_c3 LVAR_INT russianboss2_c3 LVAR_INT backdoor_c3 //sequence LVAR_INT enemy_c3 LVAR_INT tolotov_c3seq LVAR_INT tolotovflee_c3seq LVAR_INT tolotovdrive_c3seq LVAR_FLOAT enemyx_c3 enemyy_c3 enemyz_c3 LVAR_FLOAT enemyx2_c3 enemyy2_c3 enemyz2_c3 LVAR_INT stayshoot_c3seq LVAR_INT runkill_c3seq LVAR_INT runstay_c3seq LVAR_INT run2stay_c3seq LVAR_INT peekleft_c3seq LVAR_INT rolloutr_c3seq LVAR_INT runshootstay_c3seq LVAR_INT stayshootnoduck_c3seq LVAR_INT chasecar1a_seq LVAR_INT chasecar1b_seq LVAR_INT sequencetask_c3 //pickups LVAR_INT armour1_c3 //2160.167 -2247.337 13.594 LVAR_INT armour2_c3 //2156.482 -2258.929 17.047 LVAR_INT health_c3 //2158.82 -2232.747 13.59 LVAR_INT weapon_c3 //blips LVAR_INT warehouse_c3blip LVAR_INT tolotov_c3blip LVAR_INT russianboss1_c3blip LVAR_INT russianboss2_c3blip //flags LVAR_INT crash_c3flag LVAR_INT cutsceneshuttersound_c3flag LVAR_INT forkworker1_c3flag LVAR_INT forkworker2_c3flag LVAR_INT workerdirector_c3flag LVAR_INT barrel_c3flag LVAR_INT playerattacks_c3flag LVAR_INT workerdoor_c3flag LVAR_INT keypadtext_c3flag LVAR_INT openshutter_c3flag LVAR_INT firstarea_c3flag LVAR_INT secondarea_c3flag LVAR_INT thirdarea_c3flag LVAR_INT fourtharea_c3flag LVAR_INT guard1_c3flag LVAR_INT guard2_c3flag LVAR_INT guard3_c3flag LVAR_INT guard4_c3flag LVAR_INT guard5_c3flag LVAR_INT guard6_c3flag LVAR_INT guard7_c3flag LVAR_INT guard8_c3flag LVAR_INT guard9_c3flag LVAR_INT guard10_c3flag LVAR_INT guard11_c3flag LVAR_INT guard12_c3flag LVAR_INT guard13_c3flag LVAR_INT guard14_c3flag LVAR_INT guard15_c3flag LVAR_INT guard16_c3flag LVAR_INT flat1_c3flag LVAR_INT flat2_c3flag LVAR_INT tolotov_c3flag LVAR_INT box_c3flag LVAR_INT trailer_c3flag LVAR_INT doorcounter_c3flag LVAR_INT russian1_c3flag LVAR_INT helptext_c3flag LVAR_INT missionpassed_c3flag VAR_INT tripskip_c3flag //do not reset LVAR_INT progressaudio_c3flag LVAR_INT handlingudio_c3flag LVAR_INT gettingincar_c3flag LVAR_INT outofcar_c3flag LVAR_INT playerincar_c3flag LVAR_INT forklift1_c3flag LVAR_INT forklift2_c3flag LVAR_INT speedbalance_c3flag //LVAR_INT speedofcar_c3flag // **************************************** Mission Start ************************************ mission_start_drugs3: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT CRASH3 SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 CLEAR_AREA 1036.86 -1336.49 20.0 20.0 FALSE /////////////////////////////////////////// CUTSCENE START LOAD_CUTSCENE CRASH3A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE /////////////////////////////////////////// CUTSCENE END SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON RESTORE_CAMERA_JUMPCUT REQUEST_MODEL FORKLIFT REQUEST_MODEL MULE REQUEST_MODEL MP5LNG REQUEST_MODEL SEC_KEYPAD REQUEST_MODEL KMB_RAMP REQUEST_MODEL BANSHEE REQUEST_MODEL PCJ600 REQUEST_CAR_RECORDING 342 LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED FORKLIFT OR NOT HAS_MODEL_LOADED MULE OR NOT HAS_CAR_RECORDING_BEEN_LOADED 342 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED SEC_KEYPAD OR NOT HAS_MODEL_LOADED MP5LNG OR NOT HAS_MODEL_LOADED KMB_RAMP OR NOT HAS_MODEL_LOADED BANSHEE OR NOT HAS_MODEL_LOADED PCJ600 WAIT 0 ENDWHILE SET_WANTED_MULTIPLIER 0.1 SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY crash3_DM CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE crash3_DM EVENT_DRAGGED_OUT_CAR ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE crash3_DM EVENT_DRAGGED_OUT_CAR TASK_COMPLEX_KILL_PED_ON_FOOT 50.0 50.0 50.0 50.0 1 1 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_WEAK crash3weak_DM SET_CHAR_COORDINATES scplayer 1038.0 -1339.0 12.8 SET_CHAR_HEADING scplayer 1.0 SET_CAMERA_BEHIND_PLAYER LOAD_SCENE_IN_DIRECTION 1038.0 -1340.99 13.94 1.0 DO_FADE 1500 FADE_IN // ****************************** Declare Variables Values *********************************** //flags crash_c3flag = 0 cutsceneshuttersound_c3flag = 0 forkworker1_c3flag = 0 forkworker2_c3flag = 0 workerdirector_c3flag = 0 barrel_c3flag = 0 playerattacks_c3flag = 0 workerdoor_c3flag = 0 keypadtext_c3flag = 0 openshutter_c3flag = 0 firstarea_c3flag = 0 secondarea_c3flag = 0 thirdarea_c3flag = 0 fourtharea_c3flag = 0 guard1_c3flag = 0 guard2_c3flag = 0 guard3_c3flag = 0 guard4_c3flag = 0 guard5_c3flag = 0 guard6_c3flag = 0 guard7_c3flag = 0 guard8_c3flag = 0 guard9_c3flag = 0 guard10_c3flag = 0 guard11_c3flag = 0 guard12_c3flag = 0 guard13_c3flag = 0 guard14_c3flag = 0 guard15_c3flag = 0 guard16_c3flag = 0 flat1_c3flag = 0 flat2_c3flag = 0 tolotov_c3flag = 0 box_c3flag = 0 trailer_c3flag = 0 doorcounter_c3flag = 0 russian1_c3flag = 0 helptext_c3flag = 0 missionpassed_c3flag = 0 progressaudio_c3flag = 0 handlingudio_c3flag = 0 gettingincar_c3flag = 0 outofcar_c3flag = 0 playerincar_c3flag = 0 forklift1_c3flag = 0 forklift2_c3flag = 0 speedbalance_c3flag = 0 //speedofcar_c3flag = 0 // ************************************** Main mission ****************************************** //set up trip skip IF tripskip_c3flag > 0 SET_UP_SKIP 2263.378 -2226.33 12.4 47.416 ENDIF dockshootoutloop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_drugs3_passed ENDIF //get to the docks IF crash_c3flag = 0 ADD_BLIP_FOR_COORD 2247.639 -2202.144 12.59 warehouse_c3blip PRINT_NOW ( CSH3_1 ) 7000 1 //Go to docks crash_c3flag = 1 ENDIF //player at docks IF crash_c3flag = 1 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2247.639 -2202.144 3.0 3.0 TRUE ////////////////////////////////////////////////////////////////////// Create everything IF tripskip_c3flag = 0 tripskip_c3flag = 1 ENDIF CLEAR_SKIP SET_PLAYER_CONTROL PLAYER1 OFF SWITCH_EMERGENCY_SERVICES OFF DO_FADE 500 FADE_OUT DISPLAY_RADAR 2 // PATHING OFF WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF IS_CHAR_SITTING_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car SET_CAR_PROOFS car FALSE TRUE TRUE FALSE FALSE SET_CAR_HEADING car 128.0 SET_CAR_HEALTH car 2000 ELSE SET_CHAR_HEADING scplayer 128.0 ENDIF CLEAR_AREA 2174.896 -2258.914 150.0 150.0 TRUE REQUEST_MODEL imcmptrkdrl_LAS REQUEST_MODEL imcmptrkdrr_LAS REQUEST_MODEL imcompmovedr1_las REQUEST_MODEL WMYMECH REQUEST_MODEL COLT45 REQUEST_MODEL BARREL4 REQUEST_CAR_RECORDING 310 //cars that go up the ramp REQUEST_CAR_RECORDING 328 //cars that go up the ramp REQUEST_CAR_RECORDING 329 //cars that go up the ramp REQUEST_CAR_RECORDING 309 //cars that go up the ramp REQUEST_CAR_RECORDING 347 //forklift truck LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED WMYMECH OR NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED BARREL4 WAIT 0 ENDWHILE WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 310 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 328 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 329 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 309 WAIT 0 ENDWHILE WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 347 OR NOT HAS_MODEL_LOADED imcmptrkdrl_LAS OR NOT HAS_MODEL_LOADED imcmptrkdrr_LAS OR NOT HAS_MODEL_LOADED imcompmovedr1_las WAIT 0 ENDWHILE LOAD_SCENE 2212.02 -2225.45 12.24 //truck 1 CREATE_OBJECT imcmptrkdrl_LAS 2192.925 -2231.824 14.205 leftdoor1_c3 CREATE_OBJECT imcmptrkdrr_LAS 2195.072 -2229.589 14.205 rightdoor1_c3 SET_OBJECT_HEADING leftdoor1_c3 135.0 SET_OBJECT_HEADING rightdoor1_c3 85.0 //truck 2 CREATE_OBJECT imcmptrkdrl_LAS 2200.184 -2224.419 14.205 leftdoor2_c3 CREATE_OBJECT imcmptrkdrr_LAS 2202.432 -2222.266 14.205 rightdoor2_c3 SET_OBJECT_HEADING leftdoor2_c3 135.0 SET_OBJECT_HEADING rightdoor2_c3 85.0 //truck 3 CREATE_OBJECT imcmptrkdrl_LAS 2207.766 -2217.281 14.205 leftdoor3_c3 CREATE_OBJECT imcmptrkdrr_LAS 2210.014 -2215.058 14.205 rightdoor3_c3 SET_OBJECT_HEADING leftdoor3_c3 135.0 SET_OBJECT_HEADING rightdoor3_c3 85.0 //truck 4 CREATE_OBJECT imcmptrkdrl_LAS 2215.096 -2210.761 14.205 leftdoor4_c3 CREATE_OBJECT imcmptrkdrr_LAS 2217.344 -2208.537 14.205 rightdoor4_c3 SET_OBJECT_HEADING leftdoor4_c3 135.0 SET_OBJECT_HEADING rightdoor4_c3 85.0 //create ramps CREATE_OBJECT_NO_OFFSET kmb_ramp 2193.418 -2231.352 14.183 ramp1_c3 CREATE_OBJECT_NO_OFFSET kmb_ramp 2194.642 -2230.128 14.183 ramp2_c3 CREATE_OBJECT_NO_OFFSET kmb_ramp 2200.686 -2224.019 14.183 ramp3_c3 CREATE_OBJECT_NO_OFFSET kmb_ramp 2201.910 -2222.795 14.183 ramp4_c3 CREATE_OBJECT_NO_OFFSET kmb_ramp 2208.243 -2216.833 14.183 ramp5_c3 CREATE_OBJECT_NO_OFFSET kmb_ramp 2209.468 -2215.609 14.183 ramp6_c3 CREATE_OBJECT_NO_OFFSET kmb_ramp 2215.489 -2210.406 14.183 ramp7_c3 CREATE_OBJECT_NO_OFFSET kmb_ramp 2216.713 -2209.182 14.183 ramp8_c3 SET_OBJECT_ROTATION ramp1_c3 0.0 0.0 45.0 SET_OBJECT_ROTATION ramp2_c3 0.0 0.0 45.0 SET_OBJECT_ROTATION ramp3_c3 0.0 0.0 45.0 SET_OBJECT_ROTATION ramp4_c3 0.0 0.0 45.0 SET_OBJECT_ROTATION ramp5_c3 0.0 0.0 45.0 SET_OBJECT_ROTATION ramp6_c3 0.0 0.0 45.0 SET_OBJECT_ROTATION ramp7_c3 0.0 0.0 45.0 SET_OBJECT_ROTATION ramp8_c3 0.0 0.0 45.0 //create shutter door CREATE_OBJECT_NO_OFFSET imcompmovedr1_las 2178.073 -2254.384 15.9 dockshutter_c3 SET_OBJECT_HEADING dockshutter_c3 224.0 //create keypad CREATE_OBJECT SEC_KEYPAD 2174.896 -2258.914 15.0 keypad_c3 MAKE_OBJECT_TARGETTABLE keypad_c3 TRUE FREEZE_OBJECT_POSITION keypad_c3 TRUE SET_OBJECT_HEADING keypad_c3 35.23 //215.23 SET_OBJECT_HEALTH keypad_c3 10 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER keypad_c3 TRUE //barrel CREATE_OBJECT BARREL4 2187.538 -2255.581 12.51 barrel5_c3 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER barrel5_c3 TRUE MAKE_OBJECT_TARGETTABLE barrel5_c3 TRUE //////////////////////////////////////////////////////////////////////////// Forklifts and trucks //parked trucks gets barrels from this truck CREATE_CAR MULE 2175.94 -2268.1 12.66 parkedtruck1_c3 SET_CAR_HEADING parkedtruck1_c3 48.24 SET_CAR_HEALTH parkedtruck1_c3 650 //delivers boxes to this truck CREATE_CAR MULE 2159.395 -2295.29 12.688 parkedtruck2_c3 SET_CAR_HEADING parkedtruck2_c3 44.51 SET_CAR_HEALTH parkedtruck2_c3 650 //create forklift trucks and drivers //transporting boxes CREATE_CAR FORKLIFT 2174.87 -2289.22 12.06 forklift1_c3 SET_CAR_HEADING forklift1_c3 321.59 CREATE_CHAR_INSIDE_CAR forklift1_c3 PEDTYPE_MISSION1 WMYMECH forkworker1_c3 SET_CAR_STRAIGHT_LINE_DISTANCE forklift1_c3 150 SET_CHAR_DECISION_MAKER forkworker1_c3 crash3_DM //transporting barrels CREATE_CAR FORKLIFT 2193.25 -2256.4 12.25 forklift2_c3 SET_CAR_HEADING forklift2_c3 266.92 CREATE_CHAR_INSIDE_CAR forklift2_c3 PEDTYPE_MISSION1 WMYMECH forkworker2_c3 SET_CAR_STRAIGHT_LINE_DISTANCE forklift2_c3 150 SET_CHAR_DECISION_MAKER forkworker2_c3 crash3_DM /////////////////////////////////////////////// FORKLIFT 1 //go boxes picked up IF NOT IS_CAR_DEAD forklift1_c3 IF NOT IS_CHAR_DEAD forkworker1_c3 IF IS_CHAR_SITTING_IN_CAR forkworker1_c3 forklift1_c3 CREATE_OBJECT BARREL4 2179.18 -2270.92 -14.0 barrel3_c3 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER barrel3_c3 TRUE MAKE_OBJECT_TARGETTABLE barrel3_c3 TRUE CREATE_OBJECT BARREL4 2179.18 -2270.92 -10.0 barrel4_c3 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER barrel4_c3 TRUE MAKE_OBJECT_TARGETTABLE barrel4_c3 TRUE ATTACH_OBJECT_TO_CAR barrel3_c3 forklift1_c3 0.5 0.3 0.3 0.0 0.0 0.0 ATTACH_OBJECT_TO_CAR barrel4_c3 forklift1_c3 -0.5 0.3 0.3 0.0 0.0 0.0 TASK_CAR_DRIVE_TO_COORD forkworker1_c3 forklift1_c3 2179.49 -2280.46 14.03 5.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF /////////////////////////////////////////////// FORKLIFT 2 IF NOT IS_CAR_DEAD forklift2_c3 IF NOT IS_CHAR_DEAD forkworker2_c3 IF IS_CHAR_IN_CAR forkworker2_c3 forklift2_c3 CREATE_OBJECT BARREL4 2179.18 -2270.92 -14.0 barrel1_c3 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER barrel1_c3 TRUE MAKE_OBJECT_TARGETTABLE barrel1_c3 TRUE CREATE_OBJECT BARREL4 2179.18 -2270.92 -10.0 barrel2_c3 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER barrel2_c3 TRUE MAKE_OBJECT_TARGETTABLE barrel2_c3 TRUE ATTACH_OBJECT_TO_CAR barrel1_c3 forklift2_c3 0.5 0.3 0.3 0.0 0.0 0.0 ATTACH_OBJECT_TO_CAR barrel2_c3 forklift2_c3 -0.5 0.3 0.3 0.0 0.0 0.0 TASK_CAR_DRIVE_TO_COORD forkworker2_c3 forklift2_c3 2209.1 -2253.64 12.25 6.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF /////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// Cars that go into trucks CREATE_CAR BANSHEE 2207.7 -2246.157 12.597 chasecar1_c3 CREATE_CHAR_INSIDE_CAR chasecar1_c3 PEDTYPE_MISSION1 WMYMECH guard1_c3 SET_CHAR_DECISION_MAKER guard1_c3 crash3_DM CREATE_CAR PCJ600 2212.9 -2241.6 12.59 chasecar2_c3 CREATE_CHAR_INSIDE_CAR chasecar2_c3 PEDTYPE_MISSION1 WMYMECH guard2_c3 SET_CHAR_DECISION_MAKER guard2_c3 crash3_DM CREATE_CAR BANSHEE 2218.87 -2234.29 12.6 chasecar3_c3 CREATE_CHAR_INSIDE_CAR chasecar3_c3 PEDTYPE_MISSION1 WMYMECH guard3_c3 SET_CHAR_DECISION_MAKER guard3_c3 crash3_DM CREATE_CAR PCJ600 2224.3 -2228.19 12.597 chasecar4_c3 CREATE_CHAR_INSIDE_CAR chasecar4_c3 PEDTYPE_MISSION1 WMYMECH guard4_c3 SET_CHAR_DECISION_MAKER guard4_c3 crash3_DM ///////////////////////////////////////////////////////////////////////// Peds CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2181.97 -2252.695 13.82 workerdoor_c3 //guy guarding door SET_CHAR_HEADING workerdoor_c3 231.26 GIVE_WEAPON_TO_CHAR workerdoor_c3 WEAPONTYPE_MP5 99999 SET_CHAR_DECISION_MAKER workerdoor_c3 crash3_DM SET_CHAR_ACCURACY workerdoor_c3 30 CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2189.65 -2250.05 12.597 workerchat_c3 //guy who talks to the forklift driver SET_CHAR_HEADING workerchat_c3 229.24 SET_CHAR_DECISION_MAKER workerchat_c3 crash3_DM GIVE_WEAPON_TO_CHAR workerchat_c3 WEAPONTYPE_PISTOL 9999 SET_CHAR_ACCURACY workerchat_c3 30 CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2193.126 -2233.95 12.59 workerdirector_c3 //guy who waves the car in guy who will hassle player SET_CHAR_HEADING workerdirector_c3 249.77 SET_CHAR_DECISION_MAKER workerdirector_c3 crash3_DM GIVE_WEAPON_TO_CHAR workerdirector_c3 WEAPONTYPE_MP5 9999 SET_CHAR_ACCURACY workerdirector_c3 30 CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2199.71 -2257.841 12.597 talkworker1_c3 //two guys chatting in the middle SET_CHAR_HEADING talkworker1_c3 347.22 SET_CHAR_DECISION_MAKER talkworker1_c3 crash3_DM GIVE_WEAPON_TO_CHAR talkworker1_c3 WEAPONTYPE_PISTOL 9999 SET_CHAR_ACCURACY talkworker1_c3 30 CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2200.2 -2256.49 12.597 talkworker2_c3 //two guys chatting in the middle SET_CHAR_HEADING talkworker2_c3 168.1 TASK_CHAT_WITH_CHAR talkworker1_c3 talkworker2_c3 TRUE TRUE //talkworkert_c3 will lead the chatting SET_CHAR_DECISION_MAKER talkworker2_c3 crash3_DM GIVE_WEAPON_TO_CHAR talkworker2_c3 WEAPONTYPE_MP5 9999 SET_CHAR_ACCURACY talkworker2_c3 30 TASK_CHAT_WITH_CHAR talkworker2_c3 talkworker1_c3 FALSE TRUE //overall view SET_FIXED_CAMERA_POSITION 2256.6230 -2213.5222 23.0389 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2255.7021 -2213.8325 22.8027 JUMP_CUT SWITCH_WIDESCREEN ON DO_FADE 500 FADE_IN IF NOT IS_CAR_DEAD chasecar1_c3 IF NOT IS_CAR_DEAD chasecar2_c3 IF NOT IS_CAR_DEAD chasecar3_c3 IF NOT IS_CAR_DEAD chasecar4_c3 START_PLAYBACK_RECORDED_CAR chasecar2_c3 310 START_PLAYBACK_RECORDED_CAR chasecar3_c3 328 START_PLAYBACK_RECORDED_CAR chasecar4_c3 329 START_PLAYBACK_RECORDED_CAR chasecar1_c3 309 PRINT_NOW CSH3_2 5000 1 //~s~The Russians and Ballas are having a ~r~meeting ~s~inside the warehouse. ENDIF ENDIF ENDIF ENDIF crash_c3flag = 2 ENDIF ENDIF IF crash_c3flag = 2 IF NOT IS_CAR_DEAD chasecar1_c3 IF IS_PLAYBACK_GOING_ON_FOR_CAR chasecar1_c3 IF NOT IS_CAR_DEAD chasecar1_c3 PAUSE_PLAYBACK_RECORDED_CAR chasecar1_c3 TIMERA = 0 crash_c3flag = 3 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// SKIP_CUTSCENE_START ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// ENDIF IF crash_c3flag = 3 IF TIMERA > 5499 //zoomed in on car SET_FIXED_CAMERA_POSITION 2207.0144 -2244.2073 13.7376 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2206.3335 -2243.4856 13.6130 JUMP_CUT IF NOT IS_CHAR_DEAD workerdirector_c3 TASK_PLAY_ANIM workerdirector_c3 HANDSUP PED 4.0 FALSE FALSE FALSE FALSE -1 ENDIF IF NOT IS_CAR_DEAD chasecar1_c3 IF IS_PLAYBACK_GOING_ON_FOR_CAR chasecar1_c3 UNPAUSE_PLAYBACK_RECORDED_CAR chasecar1_c3 TIMERA = 0 crash_c3flag = 4 ENDIF ENDIF ENDIF ENDIF IF crash_c3flag = 4 IF TIMERA > 1799 //move camera to side of car SET_FIXED_CAMERA_POSITION 2205.3713 -2235.2532 14.1153 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2204.3743 -2235.2654 14.0397 JUMP_CUT IF NOT IS_CHAR_DEAD workerdirector_c3 TASK_PLAY_ANIM workerdirector_c3 ROADCROSS PED 4.0 FALSE FALSE FALSE FALSE -1 ENDIF TIMERA = 0 crash_c3flag = 5 ENDIF ENDIF IF crash_c3flag = 5 IF TIMERA > 3150 PRINT_NOW ( CSH3_3 ) 7000 2 //you will have to find your way inside SET_FIXED_CAMERA_POSITION 2210.2996 -2254.0671 16.7105 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2209.3108 -2254.1807 16.6143 JUMP_CUT IF NOT IS_CHAR_DEAD talkworker2_c3 TASK_PLAY_ANIM talkworker2_c3 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 ENDIF IF NOT IS_CHAR_DEAD forkworker1_c3 IF NOT IS_CAR_DEAD forklift1_c3 IF NOT IS_CHAR_SITTING_IN_CAR forkworker1_c3 forklift1_c3 TASK_CAR_DRIVE_TO_COORD forkworker1_c3 forklift1_c3 2187.88 -2265.11 12.6 6.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF TIMERA = 0 crash_c3flag = 6 ENDIF ENDIF IF TIMERA > 2999 IF crash_c3flag = 6 //keypad guy CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2177.95 -2261.002 13.818 guard5_c3 SET_CHAR_HEADING guard5_c3 45.4 SET_CHAR_DECISION_MAKER guard5_c3 crash3_DM //walking up to the keypad SET_FIXED_CAMERA_POSITION 2187.0791 -2255.2695 15.5563 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2186.0818 -2255.3162 15.5002 JUMP_CUT OPEN_SEQUENCE_TASK cutscenec3_seq TASK_GO_STRAIGHT_TO_COORD -1 2175.29 -2259.22 14.8 PEDMOVE_RUN -1 TASK_PLAY_ANIM -1 ATM PED 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK cutscenec3_seq PERFORM_SEQUENCE_TASK guard5_c3 cutscenec3_seq CLEAR_SEQUENCE_TASK cutscenec3_seq IF NOT IS_CHAR_DEAD workerdoor_c3 TASK_PLAY_ANIM workerdoor_c3 ROADCROSS PED 4.0 FALSE FALSE FALSE FALSE -1 ENDIF WHILE NOT cutsceneshuttersound_c3flag = 6 WAIT 0 IF cutsceneshuttersound_c3flag = 0 IF NOT IS_CHAR_DEAD guard5_c3 IF LOCATE_STOPPED_CHAR_ON_FOOT_2D guard5_c3 2175.29 -2259.22 3.0 3.0 FALSE TIMERB = 0 cutsceneshuttersound_c3flag = 1 ENDIF ENDIF ENDIF IF cutsceneshuttersound_c3flag = 1 IF NOT IS_CHAR_DEAD guard5_c3 IF LOCATE_STOPPED_CHAR_ON_FOOT_2D guard5_c3 2175.29 -2259.22 3.0 3.0 FALSE IF TIMERB > 1000 TASK_ACHIEVE_HEADING guard5_c3 308.1 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT dockshutter_c3 SOUND_SHUTTER_DOOR_START //ADD_ONE_OFF_SOUND 2181.127 -2251.999 14.036 SOUND_POLICE_CELL_DOOR_CLUNK //ADD_CONTINUOUS_SOUND 2181.127 -2251.999 14.036 SOUND_POLICE_CELL_DOOR_SLIDING_LOOP shuttersound_c3 TIMERB = 0 guard5_c3flag = 1 cutsceneshuttersound_c3flag = 2 ENDIF ENDIF ENDIF ENDIF IF guard5_c3flag = 1 IF NOT IS_CHAR_DEAD guard5_c3 GET_SCRIPT_TASK_STATUS guard5_c3 TASK_ACHIEVE_HEADING scriptstatus_c3 IF scriptstatus_c3 = FINISHED_TASK OR TIMERB > 1000 TASK_GO_STRAIGHT_TO_COORD guard5_c3 2179.523 -2256.364 14.81 PEDMOVE_RUN 5000 guard5_c3flag = 2 ENDIF ENDIF ENDIF IF cutsceneshuttersound_c3flag = 2 IF NOT IS_CHAR_DEAD guard5_c3 IF DOES_OBJECT_EXIST dockshutter_c3 IF SLIDE_OBJECT dockshutter_c3 2178.073 -2254.384 19.7 0.0 0.0 0.15 FALSE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT dockshutter_c3 SOUND_SHUTTER_DOOR_STOP cutsceneshuttersound_c3flag = 3 ENDIF ENDIF ENDIF ENDIF IF cutsceneshuttersound_c3flag = 3 IF NOT IS_CHAR_DEAD guard5_c3 IF LOCATE_CHAR_ON_FOOT_2D guard5_c3 2179.522 -2256.364 1.0 1.0 FALSE TASK_GO_STRAIGHT_TO_COORD guard5_c3 2173.5 -2250.35 14.81 PEDMOVE_RUN 5000 cutsceneshuttersound_c3flag = 4 ENDIF ENDIF ENDIF IF cutsceneshuttersound_c3flag = 4 IF NOT IS_CHAR_DEAD guard5_c3 IF LOCATE_CHAR_ON_FOOT_2D guard5_c3 2174.31 -2251.09 1.0 1.0 FALSE TASK_GO_STRAIGHT_TO_COORD guard5_c3 2168.66 -2254.9035 14.59 PEDMOVE_RUN 5000 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT dockshutter_c3 SOUND_SHUTTER_DOOR_START cutsceneshuttersound_c3flag = 5 ENDIF ENDIF ENDIF IF cutsceneshuttersound_c3flag = 5 IF DOES_OBJECT_EXIST dockshutter_c3 IF SLIDE_OBJECT dockshutter_c3 2178.073 -2254.384 15.9 0.0 0.0 0.15 FALSE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT dockshutter_c3 SOUND_SHUTTER_DOOR_STOP cutsceneshuttersound_c3flag = 6 ENDIF ENDIF ENDIF ENDWHILE crash_c3flag = 7 ENDIF ENDIF IF crash_c3flag = 7 ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// SKIP_CUTSCENE_END ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT dockshutter_c3 SOUND_SHUTTER_DOOR_STOP guard5_c3flag = 0 STOP_PLAYBACK_RECORDED_CAR chasecar1_c3 STOP_PLAYBACK_RECORDED_CAR chasecar2_c3 STOP_PLAYBACK_RECORDED_CAR chasecar3_c3 STOP_PLAYBACK_RECORDED_CAR chasecar4_c3 //REMOVE_SOUND shuttersound_c3 //remove sound DELETE_OBJECT dockshutter_c3 //shutter,ramps and truck doors etc. DELETE_OBJECT ramp1_c3 DELETE_OBJECT ramp2_c3 DELETE_OBJECT ramp3_c3 DELETE_OBJECT ramp4_c3 DELETE_OBJECT ramp5_c3 DELETE_OBJECT ramp6_c3 DELETE_OBJECT ramp7_c3 DELETE_OBJECT ramp8_c3 DELETE_OBJECT leftdoor1_c3 DELETE_OBJECT rightdoor1_c3 DELETE_OBJECT leftdoor2_c3 DELETE_OBJECT rightdoor2_c3 DELETE_OBJECT leftdoor3_c3 DELETE_OBJECT rightdoor3_c3 DELETE_OBJECT leftdoor4_c3 DELETE_OBJECT rightdoor4_c3 DELETE_CAR chasecar1_c3 DELETE_CAR chasecar2_c3 DELETE_CAR chasecar3_c3 DELETE_CAR chasecar4_c3 DELETE_CAR forklift1_c3 DELETE_CAR forklift2_c3 DELETE_CHAR forkworker1_c3 DELETE_CHAR forkworker2_c3 DELETE_OBJECT barrel1_c3 DELETE_OBJECT barrel2_c3 DELETE_OBJECT barrel3_c3 DELETE_OBJECT barrel4_c3 DELETE_CHAR guard1_c3 DELETE_CHAR guard2_c3 DELETE_CHAR guard3_c3 DELETE_CHAR guard4_c3 DELETE_CHAR guard5_c3 CLEAR_AREA 2192.925 -2231.824 100.0 100.0 FALSE //truck 1 CREATE_OBJECT imcmptrkdrl_LAS 2192.925 -2231.824 14.205 leftdoor1_c3 CREATE_OBJECT imcmptrkdrr_LAS 2195.072 -2229.589 14.205 rightdoor1_c3 SET_OBJECT_HEADING leftdoor1_c3 315.0 SET_OBJECT_HEADING rightdoor1_c3 315.0 //truck 2 CREATE_OBJECT imcmptrkdrl_LAS 2200.184 -2224.419 14.205 leftdoor2_c3 CREATE_OBJECT imcmptrkdrr_LAS 2202.432 -2222.266 14.205 rightdoor2_c3 SET_OBJECT_HEADING leftdoor2_c3 315.0 SET_OBJECT_HEADING rightdoor2_c3 315.0 //truck 3 CREATE_OBJECT imcmptrkdrl_LAS 2207.766 -2217.281 14.205 leftdoor3_c3 CREATE_OBJECT imcmptrkdrr_LAS 2210.014 -2215.058 14.205 rightdoor3_c3 SET_OBJECT_HEADING leftdoor3_c3 315.0 SET_OBJECT_HEADING rightdoor3_c3 315.0 //truck 4 CREATE_OBJECT imcmptrkdrl_LAS 2215.096 -2210.761 14.205 leftdoor4_c3 CREATE_OBJECT imcmptrkdrr_LAS 2217.344 -2208.537 14.205 rightdoor4_c3 SET_OBJECT_HEADING leftdoor4_c3 315.0 SET_OBJECT_HEADING rightdoor4_c3 315.0 CREATE_OBJECT_NO_OFFSET imcompmovedr1_las 2178.073 -2254.384 15.9 dockshutter_c3 SET_OBJECT_HEADING dockshutter_c3 224.0 CREATE_CAR FORKLIFT 2176.89 -2291.75 12.25 forklift1_c3 SET_CAR_HEADING forklift1_c3 321.59 CREATE_CHAR_INSIDE_CAR forklift1_c3 PEDTYPE_MISSION1 WMYMECH forkworker1_c3 GIVE_WEAPON_TO_CHAR forkworker1_c3 WEAPONTYPE_PISTOL 9999 SET_CHAR_ACCURACY forkworker1_c3 30 SET_CAR_STRAIGHT_LINE_DISTANCE forklift1_c3 150 SET_CHAR_DECISION_MAKER forkworker1_c3 crash3_DM SET_CAR_HEALTH forklift1_c3 650 SET_CAR_ONLY_DAMAGED_BY_PLAYER forklift1_c3 TRUE //transporting barrels CREATE_CAR FORKLIFT 2210.81 -2253.72 12.598 forklift2_c3 SET_CAR_HEADING forklift2_c3 71.09 CREATE_CHAR_INSIDE_CAR forklift2_c3 PEDTYPE_MISSION1 WMYMECH forkworker2_c3 GIVE_WEAPON_TO_CHAR forkworker2_c3 WEAPONTYPE_PISTOL 9999 SET_CHAR_ACCURACY forkworker2_c3 30 SET_CAR_STRAIGHT_LINE_DISTANCE forklift2_c3 150 SET_CHAR_DECISION_MAKER forkworker2_c3 crash3_DM SET_CAR_ONLY_DAMAGED_BY_PLAYER forklift2_c3 TRUE SET_CAR_HEALTH forklift2_c3 650 CREATE_OBJECT BARREL4 2179.18 -2270.92 -14.0 barrel1_c3 CREATE_OBJECT BARREL4 2179.18 -2270.92 -10.0 barrel2_c3 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER barrel1_c3 TRUE SET_OBJECT_ONLY_DAMAGED_BY_PLAYER barrel2_c3 TRUE MAKE_OBJECT_TARGETTABLE barrel1_c3 TRUE MAKE_OBJECT_TARGETTABLE barrel2_c3 TRUE ATTACH_OBJECT_TO_CAR barrel1_c3 forklift2_c3 0.5 0.3 0.3 0.0 0.0 0.0 ATTACH_OBJECT_TO_CAR barrel2_c3 forklift2_c3 -0.5 0.3 0.3 0.0 0.0 0.0 CREATE_PICKUP BODYARMOUR PICKUP_ONCE 2186.507 -2244.993 15.81 armour1_c3 CREATE_PICKUP BODYARMOUR PICKUP_ONCE 2146.559 -2244.46 13.58 armour2_c3 CREATE_PICKUP HEALTH PICKUP_ONCE 2158.82 -2232.747 13.59 health_c3 //MARK_MODEL_AS_NO_LONGER_NEEDED PCJ600 //MARK_MODEL_AS_NO_LONGER_NEEDED BANSHEE REQUEST_MODEL BALLAS1 REQUEST_MODEL IMY_BBOX REQUEST_ANIMATION SWAT REQUEST_ANIMATION DODGE REQUEST_CAR_RECORDING 347 LOAD_SPECIAL_CHARACTER 1 ANDRE LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED BALLAS1 OR NOT HAS_ANIMATION_LOADED SWAT OR NOT HAS_MODEL_LOADED IMY_BBOX OR NOT HAS_CAR_RECORDING_BEEN_LOADED 347 WAIT 0 ENDWHILE WHILE NOT HAS_ANIMATION_LOADED DODGE OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 WAIT 0 ENDWHILE SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON CLEAR_PRINTS RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER REMOVE_BLIP warehouse_c3blip ADD_BLIP_FOR_COORD 2178.38 -2254.89 13.81 warehouse_c3blip DO_FADE 500 FADE_IN // CREATE_OBJECT_NO_OFFSET Imy_la_door 2118.088 -2274.635 20.867 backdoor_c3 SET_OBJECT_HEADING backdoor_c3 225.0 crash_c3flag = 8 CHECKPOINT_SAVE 99 ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////Resume Player Control /////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// // This is ambient stuff for when the player is not hostile IF crash_c3flag = 8 /////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////// Opening door ////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// //help text IF keypadtext_c3flag = 0 IF DOES_OBJECT_EXIST keypad_c3 IF NOT HAS_OBJECT_BEEN_DAMAGED keypad_c3 IF LOCATE_CHAR_ANY_MEANS_OBJECT_3D scplayer keypad_c3 15.0 15.0 4.0 FALSE PRINT_HELP CSH3_7 //The door is locked damage the keypad that might get it open. keypadtext_c3flag = 1 ENDIF ENDIF ENDIF ENDIF IF keypadtext_c3flag = 1 IF DOES_OBJECT_EXIST keypad_c3 IF NOT HAS_OBJECT_BEEN_DAMAGED keypad_c3 IF LOCATE_CHAR_ANY_MEANS_OBJECT_3D scplayer keypad_c3 5.0 5.0 4.0 FALSE PRINT_HELP CSH3_7 //The door is locked damage the keypad that might get it open. keypadtext_c3flag = 2 ENDIF ENDIF ENDIF ENDIF IF keypadtext_c3flag = 2 IF DOES_OBJECT_EXIST keypad_c3 IF NOT HAS_OBJECT_BEEN_DAMAGED keypad_c3 IF NOT LOCATE_CHAR_ANY_MEANS_OBJECT_3D scplayer keypad_c3 5.0 5.0 4.0 FALSE keypadtext_c3flag = 1 ENDIF ENDIF ENDIF ENDIF // //open door next part of mission IF DOES_OBJECT_EXIST keypad_c3 IF HAS_OBJECT_BEEN_DAMAGED keypad_c3 CLEAR_PRINTS crash_c3flag = 9 ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////// Russians do normal ambient stuff /////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// IF playerattacks_c3flag = 0 IF forkworker2_c3flag = 0 IF workerdirector_c3flag = 0 IF IS_CHAR_IN_ANGLED_AREA_2D scplayer 2198.686 -2180.832 2116.212 -2263.317 82.0 FALSE forkworker2_c3flag = 1 workerdirector_c3flag = 1 ENDIF ENDIF ENDIF ///////////////////////////////////////////////////////////////////// Russians become hostile //player drives inside area IF IS_CHAR_IN_ANGLED_AREA_2D scplayer 2172.36 -2207.176 2116.212 -2263.317 82.0 FALSE IF IS_CHAR_IN_ANY_CAR scplayer playerattacks_c3flag = 1 ENDIF ENDIF //player shoots or targets anything in area IF IS_CHAR_IN_ANGLED_AREA_2D scplayer 2198.686 -2180.832 2116.212 -2263.317 82.0 FALSE IF IS_CHAR_SHOOTING scplayer playerattacks_c3flag = 1 ENDIF IF IS_PLAYER_TARGETTING_ANYTHING PLAYER1 playerattacks_c3flag = 1 ENDIF ENDIF // //guy at door warns playr to leave area // IF workerdoor_c3flag = 0 // IF NOT IS_CHAR_DEAD workerdoor_c3 // IF LOCATE_CHAR_ON_FOOT_2D scplayer 2178.94 -2254.93 8.0 8.0 FALSE // PRINT_NOW CSH3_14 5000 1 //Step away from the door punk, get out of here or I will shoot your brains out! // TASK_LOOK_AT_CHAR workerdoor_c3 scplayer 10000 // TIMERB = 0 // workerdoor_c3flag = 1 // ENDIF // ENDIF // ENDIF // // IF workerdoor_c3flag = 1 // IF TIMERB > 7000 // IF LOCATE_CHAR_ON_FOOT_2D scplayer 2178.94 -2254.93 8.0 8.0 FALSE // PRINT_NOW CSH3_15 5000 1 //You had it punk, time to eat bullets! Get him! // playerattacks_c3flag = 1 // workerdoor_c3flag = 2 // ELSE // workerdoor_c3flag = 0 // ENDIF // ENDIF // ENDIF //anyone damaged IF DOES_CHAR_EXIST forkworker1_c3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR forkworker1_c3 scplayer playerattacks_c3flag = 1 ENDIF ENDIF IF DOES_CHAR_EXIST forkworker2_c3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR forkworker1_c3 scplayer playerattacks_c3flag = 1 ENDIF ENDIF IF DOES_CHAR_EXIST workerdoor_c3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR workerdoor_c3 scplayer playerattacks_c3flag = 1 ENDIF ENDIF IF DOES_CHAR_EXIST workerchat_c3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR workerchat_c3 scplayer playerattacks_c3flag = 1 ENDIF ENDIF IF DOES_CHAR_EXIST workerdirector_c3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR workerdirector_c3 scplayer playerattacks_c3flag = 1 ENDIF ENDIF IF DOES_CHAR_EXIST talkworker1_c3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR talkworker1_c3 scplayer playerattacks_c3flag = 1 ENDIF ENDIF IF DOES_CHAR_EXIST talkworker2_c3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR talkworker2_c3 scplayer playerattacks_c3flag = 1 ENDIF ENDIF ///////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// Guy who hassles player IF workerdirector_c3flag = 1 IF NOT IS_CHAR_DEAD workerdirector_c3 IF IS_CHAR_IN_ANGLED_AREA_2D scplayer 2198.686 -2180.832 2116.212 -2263.317 82.0 FALSE TASK_GOTO_CHAR_OFFSET workerdirector_c3 scplayer -1 1.5 0.0 LOAD_MISSION_AUDIO 1 SOUND_CRA3_EA //Hey, who the fuck are you? LOAD_MISSION_AUDIO 2 SOUND_CRA3_EC //You’re putting your nose where it’s not wanted! workerdirector_c3flag = 2 ENDIF ENDIF ENDIF IF workerdirector_c3flag = 2 IF NOT IS_CHAR_DEAD workerdirector_c3 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D workerdirector_c3 scplayer 5.0 5.0 FALSE ATTACH_MISSION_AUDIO_TO_CHAR 1 workerdirector_c3 ATTACH_MISSION_AUDIO_TO_CHAR 2 workerdirector_c3 workerdirector_c3flag = 3 ENDIF ENDIF ENDIF IF workerdirector_c3flag = 3 IF NOT IS_CHAR_DEAD workerdirector_c3 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW CRA3_EA 3000 1 //Hey, who the fuck are you? workerdirector_c3flag = 4 ENDIF ENDIF ENDIF IF workerdirector_c3flag = 4 IF NOT IS_CHAR_DEAD workerdirector_c3 IF HAS_MISSION_AUDIO_FINISHED 1 IF HAS_MISSION_AUDIO_LOADED 2 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 PLAY_MISSION_AUDIO 2 //You’re putting your nose where it’s not wanted! PRINT_NOW CRA3_EC 3000 1 workerdirector_c3flag = 5 ENDIF ENDIF ENDIF ENDIF IF workerdirector_c3flag = 5 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_PRINTS playerattacks_c3flag = 1 workerdirector_c3flag = 6 ENDIF ENDIF //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// Forklift truck with barrels moves as player enters area IF forkworker2_c3flag = 1 IF NOT IS_CAR_DEAD forklift2_c3 IF NOT IS_CHAR_DEAD forkworker2_c3 IF IS_CHAR_IN_CAR forkworker2_c3 forklift2_c3 IF IS_CAR_ON_SCREEN forklift2_c3 TASK_CAR_DRIVE_TO_COORD forkworker2_c3 forklift2_c3 2195.84 -2251.522 12.598 5.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH forkworker2_c3flag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF IF forkworker2_c3flag = 2 IF NOT IS_CHAR_DEAD forkworker2_c3 IF NOT IS_CAR_DEAD forklift2_c3 IF IS_CHAR_IN_CAR forkworker2_c3 forklift2_c3 IF LOCATE_STOPPED_CAR_2D forklift2_c3 2195.84 -2251.522 3.0 3.0 FALSE IF NOT IS_CHAR_DEAD forkworker2_c3 IF NOT IS_CHAR_DEAD workerchat_c3 TASK_LOOK_AT_CHAR forkworker2_c3 workerchat_c3 30000 TASK_GO_STRAIGHT_TO_COORD workerchat_c3 2197.896 -2249.251 12.59 PEDMOVE_WALK -1 ENDIF forkworker2_c3flag = 3 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF forkworker2_c3flag = 3 IF NOT IS_CHAR_DEAD forkworker2_c3 IF IS_CHAR_SITTING_IN_ANY_CAR forkworker2_c3 IF NOT IS_CHAR_DEAD workerchat_c3 IF LOCATE_STOPPED_CHAR_ON_FOOT_2D workerchat_c3 2197.896 -2249.251 3.0 3.0 FALSE TASK_TURN_CHAR_TO_FACE_CHAR workerchat_c3 forkworker2_c3 TASK_LOOK_AT_CHAR forkworker2_c3 workerchat_c3 60000 forkworker2_c3flag = 4 ENDIF ENDIF ENDIF ENDIF ENDIF IF forkworker2_c3flag = 4 IF NOT IS_CHAR_DEAD forkworker2_c3 IF IS_CHAR_SITTING_IN_ANY_CAR forkworker2_c3 IF NOT IS_CHAR_DEAD workerchat_c3 IF LOCATE_STOPPED_CHAR_ON_FOOT_2D workerchat_c3 2197.896 -2249.251 3.0 3.0 FALSE TASK_PLAY_ANIM workerchat_c3 IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 forkworker2_c3flag = 5 ENDIF ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////fork lift truck boxes //go boxes picked up IF forkworker1_c3flag = 0 IF NOT IS_CAR_DEAD forklift1_c3 IF NOT IS_CHAR_DEAD forkworker1_c3 IF IS_CHAR_SITTING_IN_CAR forkworker1_c3 forklift1_c3 forkworker1_c3flag = 1 ENDIF ENDIF ENDIF ENDIF IF forkworker1_c3flag = 1 IF NOT IS_CAR_DEAD forklift1_c3 IF NOT IS_CHAR_DEAD forkworker1_c3 IF IS_CHAR_SITTING_IN_CAR forkworker1_c3 forklift1_c3 IF HAS_CAR_RECORDING_BEEN_LOADED 347 START_PLAYBACK_RECORDED_CAR_LOOPED forklift1_c3 347 CREATE_OBJECT BARREL4 2179.18 -2270.92 -14.0 barrel3_c3 CREATE_OBJECT BARREL4 2179.18 -2270.92 -10.0 barrel4_c3 ATTACH_OBJECT_TO_CAR barrel3_c3 forklift1_c3 0.5 0.3 0.3 0.0 0.0 0.0 ATTACH_OBJECT_TO_CAR barrel4_c3 forklift1_c3 -0.5 0.3 0.3 0.0 0.0 0.0 MAKE_OBJECT_TARGETTABLE barrel3_c3 TRUE MAKE_OBJECT_TARGETTABLE barrel4_c3 TRUE SET_OBJECT_ONLY_DAMAGED_BY_PLAYER barrel3_c3 TRUE SET_OBJECT_ONLY_DAMAGED_BY_PLAYER barrel4_c3 TRUE barrel_c3flag = 1 forkworker1_c3flag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF //as soon as stopped IF forkworker1_c3flag = 2 IF NOT IS_CAR_DEAD forklift1_c3 IF NOT IS_CHAR_DEAD forkworker1_c3 IF IS_CHAR_SITTING_IN_CAR forkworker1_c3 forklift1_c3 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR forklift1_c3 TIMERA = 0 forkworker1_c3flag = 3 ENDIF ENDIF ENDIF ENDIF ENDIF //restart IF forkworker1_c3flag = 3 IF NOT IS_CAR_DEAD forklift1_c3 IF NOT IS_CHAR_DEAD forkworker1_c3 IF IS_CHAR_IN_CAR forkworker1_c3 forklift1_c3 IF TIMERA > 500 forkworker1_c3flag = 0 ENDIF ENDIF ENDIF ENDIF ENDIF //drop boxes IF barrel_c3flag = 1 IF NOT IS_CAR_DEAD forklift1_c3 IF NOT IS_CHAR_DEAD forkworker1_c3 IF IS_CHAR_SITTING_IN_CAR forkworker1_c3 forklift1_c3 IF LOCATE_CAR_2D forklift1_c3 2179.18 -2270.92 2.0 2.0 FALSE DELETE_OBJECT barrel3_c3 DELETE_OBJECT barrel4_c3 barrel_c3flag = 0 ENDIF ENDIF ENDIF ENDIF ENDIF //char not in car IF forkworker1_c3flag < 4 IF NOT IS_CAR_DEAD forklift1_c3 IF NOT IS_CHAR_DEAD forkworker1_c3 IF IS_CHAR_SITTING_IN_CAR forkworker1_c3 forklift1_c3 ELSE STOP_PLAYBACK_RECORDED_CAR forklift1_c3 forkworker1_c3flag = 4 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR forklift1_c3 forkworker1_c3flag = 4 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR forklift1_c3 forkworker1_c3flag = 4 ENDIF ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////// Attack Player ///////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// IF playerattacks_c3flag = 1 //take cover then attack freely IF NOT IS_CHAR_DEAD talkworker1_c3 enemy_c3 = talkworker1_c3 enemyx_c3 = 2203.12 enemyy_c3 = -2264.767 enemyz_c3 = 14.0 GOSUB runkill_c3label ENDIF IF NOT IS_CHAR_DEAD talkworker2_c3 enemy_c3 = talkworker2_c3 enemyx_c3 = 2188.586 enemyy_c3 = -2258.273 enemyz_c3 = 14.0 GOSUB runstay_c3label ENDIF IF NOT IS_CHAR_DEAD workerchat_c3 enemy_c3 = workerchat_c3 enemyx_c3 = 2207.985 enemyy_c3 = -2244.51 enemyz_c3 = 14.0 GOSUB runkill_c3label ENDIF IF NOT IS_CHAR_DEAD workerdirector_c3 TASK_KILL_CHAR_ON_FOOT workerdirector_c3 scplayer ENDIF IF NOT IS_CHAR_DEAD workerdoor_C3 enemy_c3 = workerdoor_C3 GOSUB stayshoot_c3label ENDIF //forklift trucks IF NOT IS_CAR_DEAD forklift1_c3 IF NOT IS_CHAR_DEAD forkworker1_c3 IF IS_CHAR_SITTING_IN_CAR forkworker1_c3 forklift1_c3 IF NOT IS_CAR_DEAD forklift1_c3 STOP_PLAYBACK_RECORDED_CAR forklift1_c3 TASK_CAR_MISSION forkworker1_c3 forklift1_c3 -1 MISSION_RAMPLAYER_FARAWAY 6.0 DRIVINGMODE_PLOUGHTHROUGH forklift1_c3flag = 1 ENDIF // ELSE // TASK_KILL_CHAR_ON_FOOT forkworker1_c3 scplayer ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD forklift2_c3 IF NOT IS_CHAR_DEAD forkworker2_c3 IF IS_CHAR_SITTING_IN_CAR forkworker2_c3 forklift2_c3 IF NOT IS_CAR_DEAD forklift2_c3 TASK_CAR_MISSION forkworker2_c3 forklift2_c3 -1 MISSION_RAMPLAYER_FARAWAY 5.0 DRIVINGMODE_PLOUGHTHROUGH forklift2_c3flag = 1 ENDIF // ELSE // TASK_KILL_CHAR_ON_FOOT forkworker2_c3 scplayer ENDIF ENDIF ENDIF playerattacks_c3flag = 2 ENDIF //forklift truck attack patterns IF forklift1_c3flag = 1 IF NOT IS_CAR_DEAD forklift1_c3 IF NOT IS_CHAR_DEAD forkworker1_c3 IF IS_CHAR_SITTING_IN_CAR forkworker1_c3 forklift1_c3 IF IS_CHAR_TOUCHING_CHAR forkworker1_c3 scplayer TASK_CAR_TEMP_ACTION forkworker1_c3 forklift1_c3 TEMPACT_REVERSE 2000 forklift1_c3flag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF IF forklift1_c3flag = 2 IF NOT IS_CAR_DEAD forklift1_c3 IF NOT IS_CHAR_DEAD forkworker1_c3 IF IS_CHAR_SITTING_IN_CAR forkworker1_c3 forklift1_c3 GET_SCRIPT_TASK_STATUS forkworker1_c3 TASK_CAR_TEMP_ACTION sequencetask_c3 IF sequencetask_c3 = FINISHED_TASK TASK_CAR_MISSION forkworker1_c3 forklift1_c3 -1 MISSION_RAMPLAYER_FARAWAY 6.0 DRIVINGMODE_PLOUGHTHROUGH forklift1_c3flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF forklift2_c3flag = 1 IF NOT IS_CAR_DEAD forklift2_c3 IF NOT IS_CHAR_DEAD forkworker2_c3 IF IS_CHAR_SITTING_IN_CAR forkworker2_c3 forklift2_c3 IF IS_CHAR_TOUCHING_CHAR forkworker2_c3 scplayer TASK_CAR_TEMP_ACTION forkworker2_c3 forklift2_c3 TEMPACT_REVERSE 2000 forklift2_c3flag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF IF forklift2_c3flag = 2 IF NOT IS_CAR_DEAD forklift2_c3 IF NOT IS_CHAR_DEAD forkworker2_c3 IF IS_CHAR_SITTING_IN_CAR forkworker2_c3 forklift2_c3 GET_SCRIPT_TASK_STATUS forkworker2_c3 TASK_CAR_TEMP_ACTION sequencetask_c3 IF sequencetask_c3 = FINISHED_TASK TASK_CAR_MISSION forkworker2_c3 forklift2_c3 -1 MISSION_RAMPLAYER_FARAWAY 6.0 DRIVINGMODE_PLOUGHTHROUGH forklift2_c3flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////// INSIDE WAREHOUSE ////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// //opening the shutter IF crash_c3flag = 9 IF openshutter_c3flag = 0 PRINT_NOW CSH3_13 5000 1//office at back DELETE_OBJECT keypad_c3 MARK_MODEL_AS_NO_LONGER_NEEDED SEC_KEYPAD ADD_ONE_OFF_SOUND 2181.127 -2251.999 14.036 SOUND_POLICE_CELL_DOOR_CLUNK ADD_CONTINUOUS_SOUND 2181.127 -2251.999 14.036 SOUND_POLICE_CELL_DOOR_SLIDING_LOOP shuttersound_c3 REMOVE_BLIP warehouse_c3blip SET_MAX_FIRE_GENERATIONS 0 //create flat boss CREATE_CHAR PEDTYPE_SPECIAL SPECIAL01 2125.8 -2274.24 19.67 tolotov_c3 // SET_CHAR_HEADING tolotov_c3 221.579 SET_CHAR_DECISION_MAKER tolotov_c3 crash3_DM SET_CHAR_HEALTH tolotov_c3 1000 SET_CHAR_MAX_HEALTH tolotov_c3 1000 SET_CHAR_MONEY tolotov_c3 3000 SET_CHAR_SUFFERS_CRITICAL_HITS tolotov_c3 FALSE SET_CHAR_USES_UPPERBODY_DAMAGE_ANIMS_ONLY tolotov_c3 TRUE ADD_BLIP_FOR_CHAR tolotov_c3 tolotov_c3blip CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2129.2166 -2281.7803 19.6719 russianboss1_c3 // SET_CHAR_HEADING russianboss1_c3 314.7061 SET_CHAR_DECISION_MAKER russianboss1_c3 crash3_DM GIVE_WEAPON_TO_CHAR russianboss1_c3 WEAPONTYPE_PISTOL 99999 SET_CHAR_WEAPON_SKILL russianboss1_c3 WEAPONSKILL_PRO SET_CHAR_ACCURACY russianboss1_c3 20 SET_CHAR_HEALTH russianboss1_c3 50 // ADD_BLIP_FOR_CHAR russianboss1_c3 russianboss1_c3blip CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2124.1536 -2277.2427 19.6719 russianboss2_c3 // SET_CHAR_HEADING russianboss2_c3 241.1202 SET_CHAR_DECISION_MAKER russianboss2_c3 crash3_DM GIVE_WEAPON_TO_CHAR russianboss2_c3 WEAPONTYPE_PISTOL 99999 SET_CHAR_WEAPON_SKILL russianboss2_c3 WEAPONSKILL_PRO SET_CHAR_ACCURACY russianboss2_c3 20 SET_CHAR_HEALTH russianboss2_c3 50 // ADD_BLIP_FOR_CHAR russianboss2_c3 russianboss2_c3blip missionpassed_c3flag = 1 //create guys here CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2172.73 -2249.83 12.6 guard1_c3 //runs towards the player SET_CHAR_HEADING guard1_c3 227.0 SET_CHAR_DECISION_MAKER guard1_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard1_c3 WEAPONTYPE_PISTOL 99999 SET_CHAR_ACCURACY guard1_c3 20 SET_CHAR_HEALTH guard1_c3 30 CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2168.42 -2252.714 12.59 guard2_c3 //stays at corner shooting SET_CHAR_HEADING guard2_c3 250.942 SET_CHAR_DECISION_MAKER guard2_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard2_c3 WEAPONTYPE_PISTOL 99999 SET_CHAR_ACCURACY guard2_c3 20 SET_CHAR_SHOOT_RATE guard2_c3 30 SET_CHAR_HEALTH guard2_c3 20 CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2174.66 -2248.6 12.6 guard3_c3 //runs towards the player SET_CHAR_HEADING guard3_c3 227.0 SET_CHAR_DECISION_MAKER guard3_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard3_c3 WEAPONTYPE_MP5 99999 SET_CHAR_ALLOWED_TO_DUCK guard3_c3 FALSE SET_CHAR_ACCURACY guard3_c3 20 // CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2162.758 -2268.065 19.712 guard4_c3 //right side of railing -> 2157.128 -2260.676 20.7 // SET_CHAR_HEADING guard4_c3 35.38 // SET_CHAR_DECISION_MAKER guard4_c3 crash3_DM // GIVE_WEAPON_TO_CHAR guard4_c3 WEAPONTYPE_MP5 99999 // SET_CHAR_ALLOWED_TO_DUCK guard4_c3 FALSE // SET_CHAR_ACCURACY guard4_c3 20 CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2163.0717 -2246.027 12.59 guard5_c3 //peeking to his left SET_CHAR_HEADING guard5_c3 224.58 SET_CHAR_DECISION_MAKER guard5_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard5_c3 WEAPONTYPE_MP5 99999 SET_CHAR_ACCURACY guard5_c3 20 CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2158.03 -2233.23 12.59 guard6_c3 //rolling right SET_CHAR_HEADING guard6_c3 230.37 SET_CHAR_DECISION_MAKER guard6_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard6_c3 WEAPONTYPE_PISTOL 99999 SET_CHAR_ACCURACY guard6_c3 20 IF guard1_c3flag = 0 IF NOT IS_CHAR_DEAD guard1_c3 TASK_KILL_CHAR_ON_FOOT guard1_c3 scplayer guard1_c3flag = 1 ENDIF ENDIF IF guard3_c3flag = 0 IF NOT IS_CHAR_DEAD guard3_c3 TASK_KILL_CHAR_ON_FOOT guard3_c3 scplayer guard3_c3flag = 1 ENDIF ENDIF IF DOES_OBJECT_EXIST dockshutter_c3 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT dockshutter_c3 SOUND_SHUTTER_DOOR_START ENDIF openshutter_c3flag = 1 crash_c3flag = 10 ENDIF ENDIF IF openshutter_c3flag = 1 IF DOES_OBJECT_EXIST dockshutter_c3 IF SLIDE_OBJECT dockshutter_c3 2178.073 -2254.384 19.7 0.0 0.0 0.1 FALSE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT dockshutter_c3 SOUND_SHUTTER_DOOR_STOP //and more guys here openshutter_c3flag = 2 ENDIF ENDIF ENDIF //start first set of guys doing their actions IF crash_c3flag = 10 IF IS_CHAR_IN_ANGLED_AREA_2D scplayer 2167.955 -2253.054 2175.023 -2245.327 -11.5 FALSE crash_c3flag = 11 ENDIF IF DOES_CHAR_EXIST guard1_c3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR guard1_c3 scplayer crash_c3flag = 11 ENDIF ENDIF IF DOES_CHAR_EXIST guard2_c3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR guard2_c3 scplayer crash_c3flag = 11 ENDIF ENDIF IF DOES_CHAR_EXIST guard3_c3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR guard3_c3 scplayer crash_c3flag = 11 ENDIF ENDIF ENDIF IF crash_c3flag = 11 IF helptext_c3flag = 0 IF TIMERA > 0 IF IS_CHAR_DEAD guard1_c3 IF IS_CHAR_DEAD guard3_c3 IF IS_CHAR_DEAD guard5_c3 PRINT_HELP_FOREVER CSH3_10 // If you press ~m~~widget_attack~ while armed with a gun you can strafe. TIMERA = 0 helptext_c3flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF helptext_c3flag = 1 IF TIMERA > 8000 PRINT_HELP CSH3_11 TIMERA = 0 helptext_c3flag = 2 ENDIF ENDIF IF helptext_c3flag = 2 IF TIMERA > 8000 PRINT_HELP CSH3_12 TIMERA = 0 helptext_c3flag = 3 ENDIF ENDIF IF helptext_c3flag = 3 IF TIMERA > 8000 PRINT_HELP_FOREVER CSH3_52 // To roll you must be crouched and have a gun equipped then press and hold ~m~~widget_attack~ and move left or right to roll. TIMERA = 0 helptext_c3flag = 4 ENDIF ENDIF IF helptext_c3flag = 4 IF TIMERA > 8000 PRINT_HELP CSH3_51 //Rolling is useful in gun fights as it allows you to dodge gunfire and surprise enemies. You can roll left or right. helptext_c3flag = 5 ENDIF ENDIF IF firstarea_c3flag = 0 IF guard2_c3flag = 0 IF NOT IS_CHAR_DEAD guard2_c3 enemy_c3 = guard2_c3 GOSUB stayshoot_c3label guard2_c3flag = 1 ENDIF ENDIF // IF guard4_c3flag = 0 // IF NOT IS_CHAR_DEAD guard4_c3 // enemy_c3 = guard4_c3 // enemyx_c3 = 2149.83 // enemyy_c3 = -2253.37 // enemyz_c3 = 20.4 // GOSUB runstay_c3label // guard4_c3flag = 1 // ENDIF // ENDIF IF guard5_c3flag = 0 IF NOT IS_CHAR_DEAD guard5_c3 enemy_c3 = guard5_c3 GOSUB peekleft_c3label guard5_c3flag = 1 ENDIF ENDIF IF guard5_c3flag = 1 IF NOT IS_CHAR_DEAD guard5_c3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR guard5_c3 scplayer OR LOCATE_CHAR_ANY_MEANS_CHAR_2D guard5_c3 scplayer 3.0 3.0 FALSE TASK_KILL_CHAR_ON_FOOT guard5_c3 scplayer guard5_c3flag = 2 ENDIF ELSE MARK_CHAR_AS_NO_LONGER_NEEDED guard5_c3 guard5_c3flag = 2 ENDIF ENDIF IF guard6_c3flag = 0 IF NOT IS_CHAR_DEAD guard6_c3 IF IS_CHAR_IN_ANGLED_AREA_2D scplayer 2161.927 -2243.2519 2168.71 -2237.79 10.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR guard6_c3 scplayer enemy_c3 = guard6_c3 GOSUB rolloutr_c3label guard6_c3flag = 1 ENDIF ENDIF ENDIF ENDIF //create other guys IF secondarea_c3flag = 0 IF IS_CHAR_IN_ANGLED_AREA_2D scplayer 2160.6587 -2244.4089 2168.71 -2237.79 12.0 FALSE //mark outside as no longer needed //MARK_MODEL_AS_NO_LONGER_NEEDED FORKLIFT MARK_MODEL_AS_NO_LONGER_NEEDED MULE MARK_MODEL_AS_NO_LONGER_NEEDED SEC_KEYPAD MARK_MODEL_AS_NO_LONGER_NEEDED KMB_RAMP //MARK_MODEL_AS_NO_LONGER_NEEDED BANSHEE //MARK_MODEL_AS_NO_LONGER_NEEDED PCJ600 MARK_CAR_AS_NO_LONGER_NEEDED forklift1_c3 MARK_CAR_AS_NO_LONGER_NEEDED forklift2_c3 MARK_CHAR_AS_NO_LONGER_NEEDED forkworker1_c3 MARK_CHAR_AS_NO_LONGER_NEEDED forkworker2_c3 MARK_OBJECT_AS_NO_LONGER_NEEDED barrel1_c3 MARK_OBJECT_AS_NO_LONGER_NEEDED barrel2_c3 MARK_OBJECT_AS_NO_LONGER_NEEDED barrel3_c3 MARK_OBJECT_AS_NO_LONGER_NEEDED barrel4_c3 MARK_OBJECT_AS_NO_LONGER_NEEDED barrel5_c3 MARK_CHAR_AS_NO_LONGER_NEEDED forkworker1_c3 MARK_CHAR_AS_NO_LONGER_NEEDED forkworker2_c3 MARK_CHAR_AS_NO_LONGER_NEEDED workerdoor_c3 MARK_CHAR_AS_NO_LONGER_NEEDED workerchat_c3 MARK_CHAR_AS_NO_LONGER_NEEDED workerdirector_c3 MARK_CHAR_AS_NO_LONGER_NEEDED talkworker1_c3 MARK_CHAR_AS_NO_LONGER_NEEDED talkworker2_c3 MARK_CAR_AS_NO_LONGER_NEEDED parkedtruck1_c3 MARK_CAR_AS_NO_LONGER_NEEDED parkedtruck2_c3 CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2149.249 -2243.9577 12.6 guard7_c3 //peeking around corner SET_CHAR_HEADING guard7_c3 312.4132 SET_CHAR_DECISION_MAKER guard7_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard7_c3 WEAPONTYPE_MP5 99999 SET_CHAR_ACCURACY guard7_c3 20 SET_CHAR_HEALTH guard7_c3 50 CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2156.04 -2250.73 12.59 guard8_c3 //run to coords shooting 2152.0188 -2246.949 12.595 SET_CHAR_HEADING guard8_c3 46.763 SET_CHAR_DECISION_MAKER guard8_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard8_c3 WEAPONTYPE_PISTOL 99999 SET_CHAR_ACCURACY guard8_c3 20 //barrels CREATE_OBJECT BARREL4 2149.725 -2249.85 12.35 barrel1_c3 CREATE_OBJECT BARREL4 2162.399 -2259.433 12.35 barrel2_c3 CREATE_OBJECT BARREL4 2152.317 -2270.389 12.35 barrel3_c3 CREATE_OBJECT BARREL4 2139.31 -2270.019 14.70 barrel4_c3 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER barrel1_c3 TRUE SET_OBJECT_ONLY_DAMAGED_BY_PLAYER barrel2_c3 TRUE SET_OBJECT_ONLY_DAMAGED_BY_PLAYER barrel3_c3 TRUE SET_OBJECT_ONLY_DAMAGED_BY_PLAYER barrel4_c3 TRUE MAKE_OBJECT_TARGETTABLE barrel1_c3 TRUE MAKE_OBJECT_TARGETTABLE barrel2_c3 TRUE MAKE_OBJECT_TARGETTABLE barrel3_c3 TRUE MAKE_OBJECT_TARGETTABLE barrel4_c3 TRUE //box CREATE_OBJECT IMY_BBOX 2140.91 -2260.2 18.1 box_c3 SET_OBJECT_HEADING box_c3 317.068 SET_OBJECT_HEALTH box_c3 1000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER box_c3 TRUE secondarea_c3flag = 1 ENDIF ENDIF IF secondarea_c3flag = 1 IF guard7_c3flag = 0 IF NOT IS_CHAR_DEAD guard7_c3 enemy_c3 = guard7_c3 GOSUB peekleft_c3label guard7_c3flag = 1 ENDIF ENDIF IF guard7_c3flag = 1 IF NOT IS_CHAR_DEAD guard7_c3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR guard7_c3 scplayer OR LOCATE_CHAR_ANY_MEANS_CHAR_2D guard7_c3 scplayer 3.0 3.0 FALSE TASK_KILL_CHAR_ON_FOOT guard7_c3 scplayer guard7_c3flag = 2 ENDIF ELSE MARK_CHAR_AS_NO_LONGER_NEEDED guard7_c3 guard7_c3flag = 2 ENDIF ENDIF IF guard8_c3flag = 0 IF NOT IS_CHAR_DEAD guard8_c3 enemy_c3 = guard8_c3 enemyx_c3 = 2152.0188 enemyy_c3 = -2246.949 enemyz_c3 = 12.595 GOSUB runshootstay_c3label guard8_c3flag = 1 ENDIF ENDIF ENDIF IF thirdarea_c3flag = 0 IF IS_CHAR_IN_ANGLED_AREA_2D scplayer 2157.47 -2246.72 2152.737 -2251.8567 -10.0 FALSE CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2164.943 -2259.275 12.594 guard10_c3 SET_CHAR_HEADING guard10_c3 46.776 SET_CHAR_DECISION_MAKER guard10_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard10_c3 WEAPONTYPE_MP5 99999 SET_CHAR_ACCURACY guard10_c3 30 SET_CHAR_SHOOT_RATE guard10_c3 20 CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2159.296 -2256.66 12.59 guard11_c3 SET_CHAR_HEADING guard11_c3 46.776 SET_CHAR_DECISION_MAKER guard11_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard11_c3 WEAPONTYPE_MP5 99999 SET_CHAR_ACCURACY guard11_c3 20 SET_CHAR_ALLOWED_TO_DUCK guard11_c3 FALSE SET_CHAR_SHOOT_RATE guard11_c3 20 //for fourth area // CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2157.615 -2272.369 12.59 guard9_c3 //top railing -> 2145.00 -2248.41 19.693 // SET_CHAR_HEADING guard9_c3 51.16 // SET_CHAR_DECISION_MAKER guard9_c3 crash3_DM // GIVE_WEAPON_TO_CHAR guard9_c3 WEAPONTYPE_PISTOL 99999 // SET_CHAR_ACCURACY guard9_c3 20 // SET_CHAR_HEALTH guard9_c3 20 CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2137.578 -2262.216 12.59 guard12_c3 //runs to 2148.945 -2273.314 13.595 SET_CHAR_HEADING guard12_c3 211.9 SET_CHAR_DECISION_MAKER guard12_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard12_c3 WEAPONTYPE_MP5 99999 SET_CHAR_ACCURACY guard12_c3 10 CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2138.008 -2253.369 12.59 guard13_c3 //runs to shooting 2143.387 -2267.5 13.595 SET_CHAR_HEADING guard13_c3 139.993 SET_CHAR_DECISION_MAKER guard13_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard13_c3 WEAPONTYPE_PISTOL 99999 SET_CHAR_ACCURACY guard13_c3 10 CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2151.545 -2279.607 13.82 guard14_c3 //crouch walk to 2140.375 -2269.66 13.59 SET_CHAR_HEADING guard14_c3 46.63 SET_CHAR_DECISION_MAKER guard14_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard14_c3 WEAPONTYPE_MP5 99999 SET_CHAR_ACCURACY guard14_c3 10 CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2140.6948 -2259.8767 12.5547 guard15_c3 //boxguy1 hit SET_CHAR_HEADING guard15_c3 259.7427 SET_CHAR_DECISION_MAKER guard15_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard15_c3 WEAPONTYPE_MP5 99999 SET_CHAR_ACCURACY guard15_c3 10 SET_CHAR_SHOOT_RATE guard15_c3 20 CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2141.7634 -2261.2769 12.5547 guard16_c3 //boxguy2 jump SET_CHAR_HEADING guard16_c3 259.742 SET_CHAR_DECISION_MAKER guard16_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard16_c3 WEAPONTYPE_MP5 99999 SET_CHAR_ACCURACY guard16_c3 10 SET_CHAR_SHOOT_RATE guard16_c3 20 CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2131.561 -2279.424 19.712 flat1_c3 //-> 2134.504 -2276.708 19.712 -> 2130.845 -2272.55 19.71 SET_CHAR_HEADING flat1_c3 313.176 SET_CHAR_DECISION_MAKER flat1_c3 crash3_DM GIVE_WEAPON_TO_CHAR flat1_c3 WEAPONTYPE_PISTOL 99999 SET_CHAR_ACCURACY flat1_c3 10 SET_CHAR_SHOOT_RATE flat1_c3 20 CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2128.952 -2282.271 19.712 flat2_c3 //-> 2134.788 -2275.941 19.712 -> 2139.879 -2270.926 18.0 SET_CHAR_HEADING flat2_c3 313.176 SET_CHAR_DECISION_MAKER flat2_c3 crash3_DM GIVE_WEAPON_TO_CHAR flat2_c3 WEAPONTYPE_PISTOL 99999 SET_CHAR_ACCURACY flat2_c3 10 SET_CHAR_SHOOT_RATE flat2_c3 20 thirdarea_c3flag = 1 ENDIF ENDIF // IF helptext_c3flag = 3 // IF LOCATE_CHAR_ON_FOOT_2D scplayer 2155.18 -2263.00 2.5 2.5 FALSE // PRINT_HELP CSH3_17 // helptext_c3flag = 4 // ENDIF // ENDIF IF thirdarea_c3flag = 1 IF guard10_c3flag = 0 IF NOT IS_CHAR_DEAD guard10_c3 enemy_c3 = guard10_c3 GOSUB stayshoot_c3label guard10_c3flag = 1 ENDIF ENDIF IF guard11_c3flag = 0 IF NOT IS_CHAR_DEAD guard11_c3 enemy_c3 = guard11_c3 GOSUB stayshoot_c3label guard11_c3flag = 1 ENDIF ENDIF ENDIF IF fourtharea_c3flag = 0 IF IS_CHAR_IN_ANGLED_AREA_2D scplayer 2160.728 -2254.586 2152.4 -2263.3 10.0 FALSE IF guard12_c3flag = 0 IF DOES_OBJECT_EXIST box_c3 ENDIF IF NOT IS_CHAR_DEAD guard12_c3 enemy_c3 = guard12_c3 enemyx_c3 = 2148.945 enemyy_c3 = -2273.314 enemyz_c3 = 13.595 SET_CHAR_ALLOWED_TO_DUCK guard12_c3 FALSE GOSUB runstay_c3label guard12_c3flag = 1 ENDIF ENDIF IF guard13_c3flag = 0 IF NOT IS_CHAR_DEAD guard13_c3 enemy_c3 = guard13_c3 enemyx_c3 = 2133.613 enemyy_c3 = -2258.067 enemyz_c3 = 12.59 enemyx2_c3 = 2143.387 enemyy2_c3 = -2267.5 enemyz2_c3 = 13.595 TASK_TOGGLE_DUCK guard13_c3 TRUE GOSUB run2stay_c3label guard13_c3flag = 1 ENDIF ENDIF IF guard14_c3flag = 0 IF NOT IS_CHAR_DEAD guard14_c3 enemy_c3 = guard14_c3 enemyx_c3 = 2140.375 enemyy_c3 = -2269.66 enemyz_c3 = 13.59 TASK_TOGGLE_DUCK guard14_c3 TRUE GOSUB runstay_c3label guard14_c3flag = 1 ENDIF ENDIF IF flat1_c3flag = 0 IF NOT IS_CHAR_DEAD flat1_c3 enemy_c3 = flat1_c3 enemyx_c3 = 2134.504 enemyy_c3 = -2276.708 enemyz_c3 = 19.712 enemyx2_c3 = 2130.845 enemyy2_c3 = -2272.55 enemyz2_c3 = 19.71 SET_CHAR_ALLOWED_TO_DUCK flat1_c3 FALSE GOSUB run2stay_c3label flat1_c3flag = 1 ENDIF ENDIF IF flat2_c3flag = 0 IF NOT IS_CHAR_DEAD flat2_c3 enemy_c3 = flat2_c3 enemyx_c3 = 2134.788 enemyy_c3 = -2275.941 enemyz_c3 = 19.712 enemyx2_c3 = 2139.879 enemyy2_c3 = -2270.926 enemyz2_c3 = 18.0 SET_CHAR_ALLOWED_TO_DUCK flat2_c3 FALSE GOSUB run2stay_c3label flat2_c3flag = 1 ENDIF ENDIF //box guys IF guard15_c3flag = 0 IF NOT IS_CHAR_DEAD guard15_c3 enemy_c3 = guard15_c3 GOSUB stayshoot_c3label guard15_c3flag = 1 ENDIF ENDIF IF guard16_c3flag = 0 IF NOT IS_CHAR_DEAD guard16_c3 enemy_c3 = guard16_c3 GOSUB stayshoot_c3label guard16_c3flag = 1 ENDIF ENDIF fourtharea_c3flag = 1 ENDIF ENDIF //guy who runs // IF guard9_c3flag = 1 // IF NOT IS_CHAR_DEAD guard9_c3 // IF LOCATE_CHAR_ON_FOOT_2D guard9_c3 2149.02 -2262.492 2.0 2.0 FALSE // TASK_DIE guard9_c3 // guard9_c3flag = 2 // ENDIF // ENDIF // ENDIF //flat boss IF tolotov_c3flag = 0 IF IS_CHAR_IN_ANGLED_AREA_3D scplayer 2136.48 -2266.78 28.0 2145.55 -2275.04 18.0 -20.0 FALSE MARK_MODEL_AS_NO_LONGER_NEEDED imcmptrkdrl_LAS MARK_MODEL_AS_NO_LONGER_NEEDED imcmptrkdrr_LAS MARK_MODEL_AS_NO_LONGER_NEEDED imcompmovedr1_las //create tolotovs guards and cars and bikes PRINT_NOW CSH3_53 7000 1 //~s~Take out the ~r~Russian gang leader~s~ inside the office supplying the Ballas with arms! IF NOT IS_CHAR_DEAD russianboss1_c3 enemy_c3 = russianboss1_c3 GOSUB stayshoot_c3label ENDIF IF NOT IS_CHAR_DEAD russianboss2_c3 TASK_KILL_CHAR_ON_FOOT russianboss2_c3 scplayer ENDIF tolotov_c3flag = 1 ENDIF ENDIF IF missionpassed_c3flag = 1 IF IS_CHAR_DEAD tolotov_c3 // IF IS_CHAR_DEAD russianboss1_c3 // IF IS_CHAR_DEAD russianboss2_c3 // TIMERB = 0 missionpassed_c3flag = 2 ENDIF // ENDIF // ENDIF ENDIF IF missionpassed_c3flag = 2 // IF TIMERB > 2000 GOTO mission_drugs3_passed // ENDIF ENDIF IF IS_CHAR_DEAD tolotov_c3 IF DOES_BLIP_EXIST tolotov_c3blip REMOVE_BLIP tolotov_c3blip ENDIF ENDIF // IF IS_CHAR_DEAD russianboss1_c3 // IF DOES_BLIP_EXIST russianboss1_c3blip // REMOVE_BLIP russianboss1_c3blip // ENDIF // ENDIF // IF IS_CHAR_DEAD russianboss2_c3 // IF DOES_BLIP_EXIST russianboss2_c3blip // REMOVE_BLIP russianboss2_c3blip // ENDIF // ENDIF /////////////////////////////////////////////////////////box drop IF box_c3flag = 0 IF DOES_OBJECT_EXIST box_c3 GET_OBJECT_HEALTH box_c3 box_c3health IF box_C3health < 1000 SET_OBJECT_PROOFS box_c3 TRUE TRUE TRUE TRUE TRUE IF NOT IS_CHAR_DEAD guard16_c3 SET_CHAR_HEADING guard16_c3 200.025 TASK_PLAY_ANIM_NON_INTERRUPTABLE guard16_c3 crush_jump DODGE 1000.0 FALSE TRUE TRUE TRUE -1 ENDIF TIMERB = 0 box_c3flag = 1 ENDIF ENDIF ENDIF IF box_c3flag = 1 IF TIMERB > 1500 IF DOES_OBJECT_EXIST box_c3 SET_OBJECT_COORDINATES box_c3 2140.91 -2260.2 18.1 SET_OBJECT_DYNAMIC box_c3 TRUE SET_OBJECT_COLLISION box_c3 TRUE ADD_TO_OBJECT_VELOCITY box_c3 0.0 0.0 -2.0 IF NOT IS_CHAR_DEAD guard15_c3 SET_CHAR_COLLISION guard15_c3 FALSE TASK_PLAY_ANIM_NON_INTERRUPTABLE guard15_c3 crushed DODGE 1000.0 FALSE TRUE TRUE TRUE -1 ENDIF TIMERB = 0 box_c3flag = 2 ENDIF ENDIF ENDIF IF box_c3flag = 2 IF TIMERB > 600 IF NOT IS_CHAR_DEAD guard15_c3 SET_CHAR_NEVER_TARGETTED guard15_c3 TRUE REMOVE_CHAR_ELEGANTLY guard15_c3 ENDIF IF NOT IS_CHAR_DEAD guard16_c3 SET_CHAR_NEVER_TARGETTED guard16_c3 TRUE ENDIF box_c3flag = 3 ENDIF ENDIF //////////////////////////////////////////////////////////// //marking char's as no longer needed IF guard1_c3flag = 1 IF IS_CHAR_DEAD guard1_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard1_c3 guard1_c3flag = 2 ENDIF ENDIF IF guard2_c3flag = 1 IF IS_CHAR_DEAD guard2_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard2_c3 guard2_c3flag = 2 ENDIF ENDIF IF guard3_c3flag = 1 IF IS_CHAR_DEAD guard3_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard3_c3 guard3_c3flag = 2 ENDIF ENDIF // IF guard4_c3flag = 1 // IF IS_CHAR_DEAD guard4_c3 // MARK_CHAR_AS_NO_LONGER_NEEDED guard4_c3 // guard4_c3flag = 2 // ENDIF // ENDIF IF guard5_c3flag > 0 IF guard5_c3flag < 3 IF IS_CHAR_DEAD guard5_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard5_c3 guard5_c3flag = 2 ENDIF ENDIF ENDIF IF guard6_c3flag = 1 IF IS_CHAR_DEAD guard6_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard6_c3 guard6_c3flag = 2 ENDIF ENDIF IF guard7_c3flag > 0 IF guard7_c3flag < 3 IF IS_CHAR_DEAD guard7_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard7_c3 guard7_c3flag = 3 ENDIF ENDIF ENDIF IF guard8_c3flag = 1 IF IS_CHAR_DEAD guard8_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard8_c3 guard8_c3flag = 2 ENDIF ENDIF // IF guard9_c3flag > 0 // IF guard9_c3flag < 3 // IF IS_CHAR_DEAD guard9_c3 // MARK_CHAR_AS_NO_LONGER_NEEDED guard9_c3 // guard9_c3flag = 3 // ENDIF // ENDIF // ENDIF IF guard10_c3flag = 1 IF IS_CHAR_DEAD guard10_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard10_c3 guard10_c3flag = 2 ENDIF ENDIF IF guard11_c3flag = 1 IF IS_CHAR_DEAD guard11_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard11_c3 guard11_c3flag = 2 ENDIF ENDIF IF guard12_c3flag = 1 IF IS_CHAR_DEAD guard12_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard12_c3 guard12_c3flag = 2 ENDIF ENDIF IF guard13_c3flag = 1 IF IS_CHAR_DEAD guard13_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard13_c3 guard13_c3flag = 2 ENDIF ENDIF IF guard14_c3flag = 1 IF IS_CHAR_DEAD guard14_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard14_c3 guard14_c3flag = 2 ENDIF ENDIF IF flat1_c3flag = 1 IF IS_CHAR_DEAD flat1_c3 MARK_CHAR_AS_NO_LONGER_NEEDED flat1_c3 flat1_c3flag = 2 ENDIF ENDIF IF flat2_c3flag = 1 IF IS_CHAR_DEAD flat2_c3 MARK_CHAR_AS_NO_LONGER_NEEDED flat2_c3 flat2_c3flag = 2 ENDIF ENDIF //car chase bit IF tolotov_c3flag = 1 IF IS_CHAR_IN_ANGLED_AREA_3D scplayer 2125.14 -2270.97 27.0 2121.09 -2275.33 19.0 14.0 FALSE MARK_CHAR_AS_NO_LONGER_NEEDED guard1_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard2_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard3_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard4_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard5_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard6_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard7_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard8_c3 REMOVE_CHAR_ELEGANTLY guard1_c3 REMOVE_CHAR_ELEGANTLY guard2_c3 REMOVE_CHAR_ELEGANTLY guard3_c3 REMOVE_CHAR_ELEGANTLY guard4_c3 REMOVE_CHAR_ELEGANTLY guard5_c3 REMOVE_CHAR_ELEGANTLY guard6_c3 REMOVE_CHAR_ELEGANTLY guard7_c3 REMOVE_CHAR_ELEGANTLY guard8_c3 DELETE_CAR chasecar1_c3 DELETE_CAR chasecar2_c3 DELETE_CAR forklift1_c3 CLEAR_AREA 2185.53 -2271.95 50.0 50.0 FALSE MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 CREATE_OBJECT BARREL4 2170.366 -2337.439 12.54 barrel6_c3 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER barrel6_c3 TRUE CREATE_CAR FORKLIFT 2122.0920 -2307.1411 12.5693 forklift1_c3 SET_CAR_HEADING forklift1_c3 265.9861 SET_CAN_BURST_CAR_TYRES forklift1_c3 FALSE CREATE_CAR BANSHEE 2190.07 -2269.8 12.5693 chasecar1_c3 SET_CAR_HEADING chasecar1_c3 308.99 SET_CAR_HEALTH chasecar1_c3 1000 CREATE_CAR PCJ600 2175.75 -2280.57 12.5693 chasecar2_c3 SET_CAR_HEADING chasecar2_c3 315.41 SET_CAN_BURST_CAR_TYRES chasecar2_c3 FALSE CREATE_PICKUP_WITH_AMMO MP5LNG PICKUP_ONCE 250 2175.614 -2282.959 13.54 weapon_c3 //mp5 CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2132.698 -2303.37 13.699 guard1_c3 //duck SET_CHAR_HEADING guard1_c3 826.228 SET_CHAR_DECISION_MAKER guard1_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard1_c3 WEAPONTYPE_MP5 99999 SET_CHAR_ACCURACY guard1_c3 30 enemy_c3 = guard1_c3 GOSUB stayshoot_c3label CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2138.0598 -2308.614 19.7000 guard2_c3 //no duck mech SET_CHAR_HEADING guard2_c3 60.478 SET_CHAR_DECISION_MAKER guard2_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard2_c3 WEAPONTYPE_MP5 99999 SET_CHAR_ACCURACY guard2_c3 30 enemy_c3 = guard2_c3 GOSUB stayshootnoduck_c3label CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2144.0068 -2295.1943 19.6760 guard3_c3 //no duck mech SET_CHAR_HEADING guard3_c3 119.8487 SET_CHAR_DECISION_MAKER guard3_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard3_c3 WEAPONTYPE_PISTOL 99999 SET_CHAR_ALLOWED_TO_DUCK guard3_c3 FALSE SET_CHAR_HEALTH guard3_c3 50 SET_CHAR_ACCURACY guard3_c3 30 enemy_c3 = guard3_c3 GOSUB stayshootnoduck_c3label CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2131.56 -2313.6 12.5719 guard4_c3 //duck mech SET_CHAR_HEADING guard4_c3 265.9861 SET_CHAR_DECISION_MAKER guard4_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard4_c3 WEAPONTYPE_MP5 99999 SET_CHAR_ALLOWED_TO_DUCK guard4_c3 FALSE SET_CHAR_ACCURACY guard4_c3 30 enemy_c3 = guard4_c3 GOSUB stayshoot_c3label CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2183.367 -2293.234 12.5 guard6_c3 //stay no duck SET_CHAR_HEADING guard6_c3 148.671 SET_CHAR_DECISION_MAKER guard6_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard6_c3 WEAPONTYPE_MP5 99999 TASK_KILL_CHAR_ON_FOOT guard6_c3 scplayer SET_CHAR_HEALTH guard6_c3 50 enemy_c3 = guard6_c3 GOSUB stayshootnoduck_c3label CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2165.737 -2324.289 17.515 guard7_c3 //duck SET_CHAR_HEADING guard7_c3 224.6632 SET_CHAR_DECISION_MAKER guard7_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard7_c3 WEAPONTYPE_MP5 99999 SET_CHAR_HEALTH guard7_c3 70 SET_CHAR_ACCURACY guard7_c3 30 enemy_c3 = guard7_c3 GOSUB stayshootnoduck_c3label CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2170.07 -2334.498 12.547 guard8_c3 //stand SET_CHAR_HEADING guard8_c3 89.2721 SET_CHAR_DECISION_MAKER guard8_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard8_c3 WEAPONTYPE_MP5 99999 SET_CHAR_HEALTH guard8_c3 50 enemy_c3 = guard8_c3 GOSUB stayshootnoduck_c3label // CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2174.9712 -2273.7190 12.5469 guard9_c3 //stand // SET_CHAR_HEADING guard9_c3 89.2721 // SET_CHAR_DECISION_MAKER guard9_c3 crash3_DM // GIVE_WEAPON_TO_CHAR guard9_c3 WEAPONTYPE_MP5 99999 // SET_CHAR_ACCURACY guard9_c3 30 // enemy_c3 = guard9_c3 // GOSUB stayshootnoduck_c3label // TIMERA = 0 IF DOES_OBJECT_EXIST backdoor_c3 SET_OBJECT_HEADING backdoor_c3 90.0 ELSE DELETE_OBJECT backdoor_c3 ENDIF IF NOT IS_CHAR_DEAD tolotov_c3 TASK_PLAY_ANIM tolotov_c3 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE 2000 ENDIF tolotov_c3flag = 2 ENDIF ENDIF //get in car IF tolotov_c3flag = 2 IF NOT IS_CHAR_DEAD tolotov_c3 IF TIMERA > 750 OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR tolotov_c3 scplayer OR IS_PLAYER_TARGETTING_CHAR PLAYER1 tolotov_c3 CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2135.46 -2296.64 12.9 guard5_c3 //free SET_CHAR_HEADING guard5_c3 337.5533 SET_CHAR_DECISION_MAKER guard5_c3 crash3_DM GIVE_WEAPON_TO_CHAR guard5_c3 WEAPONTYPE_PISTOL 99999 TASK_KILL_CHAR_ON_FOOT guard5_c3 scplayer enemy_c3 = guard5_c3 GOSUB stayshootnoduck_c3label OPEN_SEQUENCE_TASK tolotov_c3seq TASK_FOLLOW_PATH_NODES_TO_COORD -1 2128.62 -2294.87 13.75 PEDMOVE_RUN 350000 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2185.5 -2274.8 13.75 PEDMOVE_SPRINT 350000 CLOSE_SEQUENCE_TASK tolotov_c3seq PERFORM_SEQUENCE_TASK tolotov_c3 tolotov_c3seq CLEAR_SEQUENCE_TASK tolotov_c3seq tolotov_c3flag = 3 ENDIF ENDIF ENDIF IF tolotov_c3flag = 3 IF NOT IS_CHAR_DEAD tolotov_c3 IF LOCATE_CHAR_ANY_MEANS_2D tolotov_c3 2185.5 -2274.8 10.0 10.0 FALSE MARK_CHAR_AS_NO_LONGER_NEEDED guard4_c3 tolotov_c3flag = 4 ENDIF ENDIF ENDIF //imran IF NOT IS_CHAR_DEAD tolotov_c3 IF tolotov_c3flag = 4 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer tolotov_c3 200.0 200.0 FALSE IF NOT IS_CHAR_ON_SCREEN tolotov_c3 PRINT_NOW CSH3_55 5000 1 //~r~He got away! GOTO mission_drugs3_failed ENDIF ENDIF IF gettingincar_c3flag < 2 //check which car player is using IF gettingincar_c3flag = 1 IF NOT IS_CAR_DEAD chasecar1_c3 GET_CAR_CHAR_IS_USING scplayer car IF car = chasecar1_c3 GOSUB tolotovflee_c3label gettingincar_c3flag = 2 ENDIF ENDIF ENDIF IF gettingincar_c3flag = 0 IF NOT IS_CAR_DEAD chasecar1_c3 IF LOCATE_CAR_2D chasecar1_c3 2190.07 -2269.8 6.0 6.0 FALSE IF NOT IS_CHAR_IN_CAR scplayer chasecar1_c3 IF playerincar_c3flag = 0 //get in car CLEAR_CHAR_TASKS tolotov_c3 TASK_ENTER_CAR_AS_DRIVER tolotov_c3 chasecar1_c3 -2 gettingincar_c3flag = 1 ELSE GOSUB tolotovflee_c3label gettingincar_c3flag = 2 ENDIF ELSE GOSUB tolotovflee_c3label gettingincar_c3flag = 2 ENDIF ELSE GOSUB tolotovflee_c3label gettingincar_c3flag = 2 ENDIF ELSE GOSUB tolotovflee_c3label gettingincar_c3flag = 2 ENDIF ENDIF IF gettingincar_c3flag = 1 IF playerincar_c3flag = 0 IF NOT IS_CAR_DEAD chasecar1_c3 IF IS_CHAR_IN_CAR tolotov_c3 chasecar1_c3 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D tolotov_c3 scplayer 60.0 60.0 FALSE PRINT_NOW CSH3_54 5000 1 //~s~He has got in a ~r~car ~s~chase him down and take him out! SET_CHAR_HEALTH tolotov_c3 100 SET_CHAR_SUFFERS_CRITICAL_HITS tolotov_c3 TRUE CAR_GOTO_COORDINATES chasecar1_c3 2246.61 -2204.78 13.65 SET_CAR_CRUISE_SPEED chasecar1_c3 20.0 SET_CAR_DRIVING_STYLE chasecar1_c3 DRIVINGMODE_AVOIDCARS SWITCH_ROADS_OFF 2203.8 -2174.63 0.0 2279.2 -2234.63 18.21 outofcar_c3flag = 1 gettingincar_c3flag = 2 ENDIF ENDIF ENDIF ELSE GOSUB tolotovflee_c3label gettingincar_c3flag = 2 ENDIF ENDIF //if player gets in car IF NOT IS_CAR_DEAD chasecar1_c3 IF playerincar_c3flag = 0 IF IS_CHAR_IN_CAR scplayer chasecar1_c3 GOSUB tolotovflee_c3label playerincar_c3flag = 1 ENDIF ENDIF IF playerincar_c3flag = 1 IF NOT IS_CHAR_IN_CAR scplayer chasecar1_c3 playerincar_c3flag = 0 ENDIF ENDIF ELSE GOSUB tolotovflee_c3label gettingincar_c3flag = 2 ENDIF ENDIF ENDIF //if he is out of car IF outofcar_c3flag = 1 IF NOT IS_CHAR_SITTING_IN_ANY_CAR tolotov_c3 TASK_SMART_FLEE_CHAR tolotov_c3 scplayer 300.0 500000 IF NOT IS_CAR_DEAD chasecar1_c3 IF IS_PLAYBACK_GOING_ON_FOR_CAR chasecar1_c3 STOP_PLAYBACK_RECORDED_CAR chasecar1_c3 ENDIF ENDIF outofcar_c3flag = 2 ENDIF ENDIF //switch into recordings IF gettingincar_c3flag = 2 IF NOT IS_CAR_DEAD chasecar1_c3 IF IS_CHAR_SITTING_IN_CAR tolotov_c3 chasecar1_c3 IF LOCATE_CAR_2D chasecar1_c3 2246.61 -2204.78 10.0 10.0 FALSE MARK_CHAR_AS_NO_LONGER_NEEDED guard1_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard2_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard3_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard4_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard5_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard6_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard7_c3 MARK_CHAR_AS_NO_LONGER_NEEDED guard8_c3 MARK_CAR_AS_NO_LONGER_NEEDED forklift1_c3 CAR_SET_IDLE chasecar1_c3 START_PLAYBACK_RECORDED_CAR_USING_AI chasecar1_c3 342 SET_PLAYBACK_SPEED chasecar1_c3 0.85 SWITCH_ROADS_OFF 2203.8 -2174.63 0.0 2279.2 -2234.63 18.21 speedbalance_c3flag = 1 gettingincar_c3flag = 3 ENDIF ENDIF ENDIF ENDIF //balance speed when in storm drains IF gettingincar_c3flag = 3 IF NOT IS_CAR_DEAD chasecar1_c3 IF IS_CHAR_SITTING_IN_CAR tolotov_c3 chasecar1_c3 IF speedbalance_c3flag = 1 IF IS_PLAYBACK_GOING_ON_FOR_CAR chasecar1_c3 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D tolotov_c3 scplayer 40.0 40.0 FALSE SET_PLAYBACK_SPEED chasecar1_c3 0.4 speedbalance_c3flag = 2 ENDIF ENDIF ENDIF IF speedbalance_c3flag = 2 IF IS_PLAYBACK_GOING_ON_FOR_CAR chasecar1_c3 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D tolotov_c3 scplayer 40.0 40.0 FALSE SET_PLAYBACK_SPEED chasecar1_c3 0.85 speedbalance_c3flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //switch into recordings IF gettingincar_c3flag = 3 IF NOT IS_CAR_DEAD chasecar1_c3 IF IS_CHAR_SITTING_IN_CAR tolotov_c3 chasecar1_c3 IF LOCATE_CAR_2D chasecar1_c3 1440.92 -1594.59 20.0 20.0 FALSE IF IS_PLAYBACK_GOING_ON_FOR_CAR chasecar1_c3 STOP_PLAYBACK_RECORDED_CAR chasecar1_c3 CAR_SET_IDLE chasecar1_c3 ENDIF TASK_CAR_DRIVE_WANDER tolotov_c3 chasecar1_c3 25.0 DRIVINGMODE_AVOIDCARS gettingincar_c3flag = 4 ENDIF ENDIF ENDIF ENDIF ENDIF //dialogue IF tolotov_c3flag > 1 IF NOT IS_CHAR_DEAD tolotov_c3 GOSUB process_audio_c3 IF progressaudio_c3flag = 0 IF handlingudio_c3flag = 0 audio_label_c3 = SOUND_CRA3_DB //Stop, we could do business! $input_text_c3 = CRA3_DB //Stop, we could do business! GOSUB load_audio_c3 ENDIF ENDIF IF progressaudio_c3flag = 1 IF handlingudio_c3flag = 0 audio_label_c3 = SOUND_CRA3_DC //Fuck you, Americansky! I’m gone! $input_text_c3 = CRA3_DC //Fuck you, Americansky! I’m gone! GOSUB load_audio_c3 ENDIF ENDIF IF progressaudio_c3flag = 2 IF handlingudio_c3flag = 0 audio_label_c3 = SOUND_CRA3_DD //Doing business in america is dangerous! $input_text_c3 = CRA3_DD //Doing business in america is dangerous! GOSUB load_audio_c3 ENDIF ENDIF ENDIF ENDIF ENDIF GOTO dockshootoutloop ///////////////////////////////////// GOSUBS load_audio_c3: IF handlingudio_c3flag = 0 LOAD_MISSION_AUDIO 1 audio_label_c3 $text_label_c3 = $input_text_c3 handlingudio_c3flag = 1 ENDIF RETURN process_audio_c3: IF handlingudio_c3flag = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW $text_label_c3 4000 1 //Dummy message" IF NOT IS_CHAR_DEAD tolotov_c3 ATTACH_MISSION_AUDIO_TO_CHAR 1 tolotov_c3 ENDIF PLAY_MISSION_AUDIO 1 handlingudio_c3flag = 2 ENDIF ENDIF IF handlingudio_c3flag = 2 IF HAS_MISSION_AUDIO_FINISHED 1 progressaudio_c3flag++ CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS handlingudio_c3flag = 0 ENDIF ENDIF RETURN tolotovflee_c3label: SET_CHAR_HEALTH tolotov_c3 100 SET_CHAR_MAX_HEALTH tolotov_c3 100 OPEN_SEQUENCE_TASK tolotovflee_c3seq TASK_FOLLOW_PATH_NODES_TO_COORD -1 2191.422 -2183.429 13.55 PEDMOVE_RUN -2 TASK_SMART_FLEE_CHAR -1 scplayer 300.0 500000 CLOSE_SEQUENCE_TASK tolotovflee_c3seq PERFORM_SEQUENCE_TASK tolotov_c3 tolotovflee_c3seq CLEAR_SEQUENCE_TASK tolotovflee_c3seq RETURN runstay_c3label: OPEN_SEQUENCE_TASK runstay_c3seq TASK_GO_STRAIGHT_TO_COORD -1 enemyx_c3 enemyy_c3 enemyz_c3 PEDMOVE_RUN -1 //SET_CHAR_ALLOWED_TO_DUCK -1 FALSE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK runstay_c3seq PERFORM_SEQUENCE_TASK enemy_c3 runstay_c3seq CLEAR_SEQUENCE_TASK runstay_c3seq RETURN run2stay_c3label: OPEN_SEQUENCE_TASK run2stay_c3seq TASK_GO_STRAIGHT_TO_COORD -1 enemyx_c3 enemyy_c3 enemyz_c3 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 enemyx2_c3 enemyy2_c3 enemyz2_c3 PEDMOVE_RUN -1 //SET_CHAR_ALLOWED_TO_DUCK -1 FALSE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK run2stay_c3seq PERFORM_SEQUENCE_TASK enemy_c3 run2stay_c3seq CLEAR_SEQUENCE_TASK run2stay_c3seq RETURN runkill_c3label: OPEN_SEQUENCE_TASK runkill_c3seq TASK_GO_STRAIGHT_TO_COORD -1 enemyx_c3 enemyy_c3 enemyz_c3 PEDMOVE_RUN -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK runkill_c3seq PERFORM_SEQUENCE_TASK enemy_c3 runkill_c3seq CLEAR_SEQUENCE_TASK runkill_c3seq RETURN stayshoot_c3label: OPEN_SEQUENCE_TASK stayshoot_c3seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_TOGGLE_DUCK -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK stayshoot_c3seq PERFORM_SEQUENCE_TASK enemy_c3 stayshoot_c3seq CLEAR_SEQUENCE_TASK stayshoot_c3seq RETURN stayshootnoduck_c3label: OPEN_SEQUENCE_TASK stayshootnoduck_c3seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK stayshootnoduck_c3seq PERFORM_SEQUENCE_TASK enemy_c3 stayshootnoduck_c3seq CLEAR_SEQUENCE_TASK stayshootnoduck_c3seq RETURN runshootstay_c3label: OPEN_SEQUENCE_TASK runshootstay_c3seq TASK_GO_TO_COORD_WHILE_SHOOTING -1 enemyx_c3 enemyy_c3 enemyz_c3 PEDMOVE_RUN 0.5 1.0 scplayer TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_TOGGLE_DUCK -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK runshootstay_c3seq PERFORM_SEQUENCE_TASK enemy_c3 runshootstay_c3seq CLEAR_SEQUENCE_TASK runshootstay_c3seq RETURN rolloutr_c3label: OPEN_SEQUENCE_TASK rolloutr_c3seq TASK_PLAY_ANIM -1 Crouch_Roll_R PED 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_TOGGLE_DUCK -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer //TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK rolloutr_c3seq PERFORM_SEQUENCE_TASK enemy_c3 rolloutr_c3seq CLEAR_SEQUENCE_TASK rolloutr_c3seq RETURN peekleft_c3label: OPEN_SEQUENCE_TASK peekleft_c3seq TASK_PLAY_ANIM -1 swt_wllpk_L SWAT 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 swt_wllshoot_in_L SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer 1500 TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_PLAY_ANIM -1 swt_wllshoot_out_L SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM -1 swt_wllpk_L_back SWAT 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT peekleft_c3seq 1 CLOSE_SEQUENCE_TASK peekleft_c3seq PERFORM_SEQUENCE_TASK enemy_c3 peekleft_c3seq CLEAR_SEQUENCE_TASK peekleft_c3seq RETURN // Mission drugs3 failed mission_drugs3_failed: PRINT_BIG M_FAIL 5000 1 RETURN // mission drugs3 passed mission_drugs3_passed: PRINT_WITH_NUMBER_BIG M_PASSD 0 5000 1 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 //REGISTER_MISSION_PASSED XXXX PLAYER_MADE_PROGRESS 1 REGISTER_MISSION_PASSED ( CRASH_3 ) flag_crash_mission_counter ++ REMOVE_BLIP crash_contact_blip RETURN // mission cleanup mission_cleanup_drugs3: DISPLAY_RADAR 3 // PATHING ON IF NOT IS_CAR_DEAD car SET_CAR_PROOFS car FALSE FALSE FALSE FALSE FALSE ENDIF IF DOES_OBJECT_EXIST dockshutter_c3 DELETE_OBJECT dockshutter_c3 ENDIF IF DOES_OBJECT_EXIST leftdoor1_c3 DELETE_OBJECT rightdoor1_c3 ENDIF IF DOES_OBJECT_EXIST leftdoor2_c3 DELETE_OBJECT rightdoor2_c3 ENDIF IF DOES_OBJECT_EXIST leftdoor3_c3 DELETE_OBJECT rightdoor3_c3 ENDIF IF DOES_OBJECT_EXIST leftdoor4_c3 DELETE_OBJECT rightdoor4_c3 ENDIF IF DOES_OBJECT_EXIST dockshutter_c3 DELETE_OBJECT dockshutter_c3 ENDIF IF DOES_OBJECT_EXIST keypad_c3 DELETE_OBJECT keypad_c3 ENDIF SWITCH_ROADS_ON 2203.8 -2174.63 0.0 2279.2 -2234.63 18.21 //blips REMOVE_BLIP warehouse_c3blip //REMOVE_BLIP russianboss1_c3blip //REMOVE_BLIP russianboss2_c3blip REMOVE_BLIP tolotov_c3blip //animations REMOVE_ANIMATION SWAT REMOVE_ANIMATION DODGE //pickups REMOVE_PICKUP armour1_c3 REMOVE_PICKUP armour2_c3 REMOVE_PICKUP health_c3 //object DELETE_OBJECT box_c3 //vehicles MARK_CAR_AS_NO_LONGER_NEEDED parkedtruck1_c3 MARK_CAR_AS_NO_LONGER_NEEDED parkedtruck2_c3 MARK_CAR_AS_NO_LONGER_NEEDED forklift1_c3 MARK_CAR_AS_NO_LONGER_NEEDED forklift2_c3 REMOVE_PICKUP weapon_c3 REMOVE_CHAR_ELEGANTLY guard1_c3 REMOVE_CHAR_ELEGANTLY guard2_c3 REMOVE_CHAR_ELEGANTLY guard3_c3 REMOVE_CHAR_ELEGANTLY guard4_c3 REMOVE_CHAR_ELEGANTLY guard5_c3 REMOVE_CHAR_ELEGANTLY guard6_c3 REMOVE_CHAR_ELEGANTLY guard7_c3 REMOVE_CHAR_ELEGANTLY guard8_c3 REMOVE_CHAR_ELEGANTLY guard10_c3 REMOVE_CHAR_ELEGANTLY guard11_c3 REMOVE_CHAR_ELEGANTLY guard12_c3 REMOVE_CHAR_ELEGANTLY guard13_c3 REMOVE_CHAR_ELEGANTLY guard14_c3 REMOVE_CHAR_ELEGANTLY guard15_c3 REMOVE_CHAR_ELEGANTLY guard16_c3 //multipliers SET_WANTED_MULTIPLIER 1.0 //models MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED BARREL4 MARK_MODEL_AS_NO_LONGER_NEEDED FORKLIFT MARK_MODEL_AS_NO_LONGER_NEEDED MULE MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED SEC_KEYPAD MARK_MODEL_AS_NO_LONGER_NEEDED KMB_RAMP MARK_MODEL_AS_NO_LONGER_NEEDED BANSHEE MARK_MODEL_AS_NO_LONGER_NEEDED PCJ600 MARK_MODEL_AS_NO_LONGER_NEEDED imcmptrkdrl_LAS MARK_MODEL_AS_NO_LONGER_NEEDED imcmptrkdrr_LAS MARK_MODEL_AS_NO_LONGER_NEEDED imcompmovedr1_las MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED IMY_BBOX MARK_MODEL_AS_NO_LONGER_NEEDED PCJ600 UNLOAD_SPECIAL_CHARACTER 1 IF NOT IS_CAR_DEAD chasecar2_c3 SET_CAN_BURST_CAR_TYRES chasecar2_c3 TRUE ENDIF IF NOT IS_CAR_DEAD forklift1_c3 SET_CAN_BURST_CAR_TYRES forklift1_c3 TRUE ENDIF IF NOT IS_CAR_DEAD car SET_CAR_PROOFS car FALSE FALSE TRUE FALSE FALSE ENDIF GET_GAME_TIMER timer_mobile_start SWITCH_EMERGENCY_SERVICES ON flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* GUN 1 ********************************************* // ********************************* Introduction to burglary ****************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** { SCRIPT_NAME GUNS1 // Mission start stuff GOSUB mission_start_g1 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_g1_failed ENDIF GOSUB mission_cleanup_g1 MISSION_END // Variables for mission // **************************************** Mission Start ********************************** // ***************************** // VARIABLES // ***************************** // NORMAL VARIABLES LVAR_INT ryd1_counter LVAR_INT ryd1_number_gunbox_truck LVAR_INT ryd1_gunbox_player_is_carrying LVAR_INT ryd1_area_name LVAR_INT ryd1_task_status LVAR_INT ryd1_decision ryd1_decision2 ryd1_decision3 ryd1_group_decision LVAR_INT ryd1_message_displayed ryd1_message_on_screen LVAR_INT ryd1_noise_difference ryd1_previous_noise LVAR_INT ryd1_boxes_left LVAR_INT ryd1_boxes_player_needs LVAR_INT ryd1_temp_int LVAR_INT ryd1_reward // FLAGS LVAR_INT ryd1_mission_progression_flag LVAR_INT ryd1_safety_flag LVAR_INT ryd1_ryder_created_flag LVAR_INT ryd1_player_in_van_flag LVAR_INT ryd1_truck_blip_added_flag LVAR_INT ryd1_house_blip_added_flag LVAR_INT ryd1_ryder_blip_added_flag LVAR_INT ryd1_ryder_told_enter_car_flag LVAR_INT ryd1_ryder_in_van_flag LVAR_INT ryd1_player_holding_box_flag LVAR_INT ryd1_gunbox_picked_up_flag[7] LVAR_INT ryd1_home_blip_added_flag LVAR_INT ryd1_spray_blip_added_flag LVAR_INT ryd1_cop_task_assigned LVAR_INT ryd1_cops_attacking_flag LVAR_INT ryd1_ryder_box_deleted_flag LVAR_INT ryd1_locked_car_flag LVAR_INT ryd1_player_in_spray_shop_flag LVAR_INT ryd1_help_displayed ryd1_near_box LVAR_INT ryd1_at_night_flag LVAR_INT ryd1_spray_message_played LVAR_INT ryd1_allowed_to_check_sound LVAR_INT ryd1_timer_on_screen LVAR_INT ryd1_box_blip_added[7] LVAR_INT ryd1_clothes_changed LVAR_INT ryd1_truck_message_displayed ryd1_box_help_been_shown ryd1_crate_message_shown LVAR_INT ryd1_dark_active LVAR_INT ryd1_restless_scene_played LVAR_INT ryd1_noise_bar_added_flag LVAR_INT ryd1_inside_house_flag LVAR_INT ryd1_owner_awake_flag LVAR_INT ryd1_able_to_leave_flag // CHARS LVAR_INT ryd1_ryder_ped LVAR_INT ryd1_owner_ped LVAR_INT ryd1_cop1_ped LVAR_INT ryd1_cop2_ped // VEHICLES LVAR_INT ryd1_truck_car LVAR_INT ryd1_cop_car // BLIPS LVAR_INT ryd1_truck_blip LVAR_INT ryd1_house_blip LVAR_INT ryd1_spray_blip LVAR_INT ryd1_home_blip LVAR_INT ryd1_ryder_blip LVAR_INT ryd1_door_blip LVAR_INT ryd1_gunbox_blip[7] // OBJECTS LVAR_INT ryd1_gunbox_obj[7] // SEQUENCES LVAR_INT ryd1_player_house_seq LVAR_INT ryd1_ryder_house_seq LVAR_INT ryd1_player_door_seq LVAR_INT ryd1_owner_awake_seq LVAR_INT ryd1_ryder_leave_seq LVAR_INT ryd1_player_leave_seq LVAR_INT ryd1_cop1_seq LVAR_INT ryd1_cop2_seq // COORDS LVAR_FLOAT ryd1_gunbox_x[7] ryd1_gunbox_y[7] ryd1_gunbox_z[7] LVAR_FLOAT ryd1_truck_heading LVAR_FLOAT ryd1_passenger_x ryd1_passenger_y ryd1_passenger_z ryd1_driver_x ryd1_driver_y ryd1_driver_z LVAR_FLOAT ryd1_player_x ryd1_player_y ryd1_player_z LVAR_FLOAT ryd1_temp_x ryd1_temp_y ryd1_temp_z // TIMERS VAR_INT ryd1_time_to_daylight //STEALTH STUFF VAR_INT ryd1_noise_bar LVAR_FLOAT ryd1_noise_float ryd1_noise_total // extra guff LVAR_INT ryd1_timer_current ryd1_timer_start ryd1_time_elapsed ryd1_timer_started ///// AUDIO CRAP VAR_TEXT_LABEL ryd1_text[82] LVAR_INT ryd1_audio[82] LVAR_INT ryd1_audio_counter LVAR_INT ryd1_audio_slot1 ryd1_audio_slot2 ryd1_audio_playing LVAR_INT ryd1_text_loop_done LVAR_INT ryd1_mobile LVAR_INT ryd1_text_timer_diff LVAR_INT ryd1_text_timer_end LVAR_INT ryd1_text_timer_start LVAR_INT ryd1_ahead_counter LVAR_INT ryd1_track_playing LVAR_INT ryd1_flee_audio_counter ryd1_flee_audio_played LVAR_INT ryd1_safe_audio_counter ryd1_safe_audio_played LVAR_INT ryd1_lockup_audio_counter ryd1_lockup_audio_played LVAR_INT ryd1_wanted_audio_counter ryd1_wanted_audio_played LVAR_INT ryd1_sfx[4] LVAR_INT ryd1_sfx_counter LVAR_INT ryd1_sfx_playing LVAR_INT ryd1_sfx_played mission_start_g1: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 /* GET_TIME_OF_DAY Hours Minutes The game uses a 24 hours clock for the time of day. It could be important for the script to know what time it is (to trigger time related missions / events). The hours (0-23) are placed in the Hours variable. A similar thing happens to the minutes (0-59) SET_TIME_OF_DAY Hours Minutes */ WAIT 0 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE FORCE_WEATHER WEATHER_SUNNY_LA IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 ENDIF LOAD_MISSION_TEXT RYDER1 LOAD_CUTSCENE RYDER1A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE CLEAR_AREA 2464.0 -1714.0 14.0 100.0 TRUE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RELEASE_WEATHER CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF // ******************************************** REQUEST MODELS ********************************** LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH ryd1_decision COPY_CHAR_DECISION_MAKER ryd1_decision ryd1_decision3 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY ryd1_decision2 CHANGE_GARAGE_TYPE burg_lk GARAGE_FOR_SCRIPT_TO_OPEN_AND_CLOSE LOAD_GROUP_DECISION_MAKER DM_GROUP_MISSION_NORM ryd1_group_decision SET_GROUP_DECISION_MAKER Players_Group ryd1_group_decision CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE ryd1_group_decision EVENT_LEADER_ENTERED_CAR_AS_DRIVER CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE ryd1_group_decision EVENT_LEADER_EXITED_CAR_AS_DRIVER // Flags ryd1_mission_progression_flag = 0 ryd1_safety_flag = 0 ryd1_ryder_created_flag = 0 ryd1_player_in_van_flag = 0 ryd1_truck_blip_added_flag = 0 ryd1_house_blip_added_flag = 0 ryd1_ryder_told_enter_car_flag = 0 ryd1_ryder_in_van_flag = 0 ryd1_number_gunbox_truck = 0 ryd1_player_holding_box_flag = 0 ryd1_gunbox_picked_up_flag[0] = 0 ryd1_gunbox_picked_up_flag[1] = 0 ryd1_gunbox_picked_up_flag[2] = 0 ryd1_gunbox_picked_up_flag[3] = 0 ryd1_gunbox_picked_up_flag[4] = 0 ryd1_gunbox_picked_up_flag[5] = 0 ryd1_gunbox_picked_up_flag[6] = 0 ryd1_counter = 0 ryd1_noise_bar_added_flag = 0 ryd1_noise_bar = 0 ryd1_owner_awake_flag = 0 ryd1_home_blip_added_flag = 0 ryd1_spray_blip_added_flag = 0 ryd1_gunbox_player_is_carrying = 0 ryd1_task_status = 0 ryd1_cop_task_assigned = 0 ryd1_cops_attacking_flag = 0 ryd1_ryder_box_deleted_flag = 0 ryd1_locked_car_flag = 0 ryd1_player_in_spray_shop_flag = 0 ryd1_help_displayed = 0 ryd1_near_box = 0 ryd1_message_displayed = 0 ryd1_message_on_screen = 0 ryd1_previous_noise = 0 ryd1_at_night_flag = 0 ryd1_inside_house_flag = 0 ryd1_noise_total = 0.0 ryd1_noise_float = 0.0 ryd1_boxes_left = 0 ryd1_boxes_player_needs = 2 ryd1_reward = 0 ryd1_spray_message_played = 0 ryd1_clothes_changed = 0 ryd1_truck_message_displayed = 0 ryd1_box_help_been_shown = 0 ryd1_crate_message_shown = 0 ryd1_dark_active = 0 ryd1_restless_scene_played = 0 ryd1_able_to_leave_flag = 0 ryd1_allowed_to_check_sound = 0 ryd1_timer_on_screen = 0 ryd1_time_to_daylight = 0 // gun box locations ryd1_gunbox_x[0] = 2809.0 ryd1_gunbox_y[0] = -1168.0 ryd1_gunbox_z[0] = 1024.5720 ryd1_gunbox_x[1] = 2820.0332 ryd1_gunbox_y[1] = -1165.8358 ryd1_gunbox_z[1] = 1024.6959 ryd1_gunbox_x[2] = 2819.5398 ryd1_gunbox_y[2] = -1170.5558 ryd1_gunbox_z[2] = 1028.2973 ryd1_gunbox_x[3] = 2817.0205 ryd1_gunbox_y[3] = -1165.2019 ryd1_gunbox_z[3] = 1028.3053 ryd1_gunbox_x[4] = 2812.6562 ryd1_gunbox_y[4] = -1168.5800 ryd1_gunbox_z[4] = 1028.2965 ryd1_gunbox_x[5] = 2812.6113 ryd1_gunbox_y[5] = -1172.7316 ryd1_gunbox_z[5] = 1024.6947 ryd1_gunbox_x[6] = 2803.6802 ryd1_gunbox_y[6] = -1161.3123 ryd1_gunbox_z[6] = 1028.3053 ryd1_box_blip_added[0] = 0 ryd1_box_blip_added[1] = 0 ryd1_box_blip_added[2] = 0 ryd1_box_blip_added[3] = 0 ryd1_box_blip_added[4] = 0 ryd1_box_blip_added[5] = 0 ryd1_box_blip_added[6] = 0 ryd1_timer_started = 0 IF ryd1_safety_flag = 999999 ADD_BLIP_FOR_COORD 0.0 0.0 0.0 ryd1_ryder_blip ENDIF ////////////////////////////////////////// ///////////// AUDIO CRAP ///////////////// ////////////////////////////////////////// ryd1_audio_counter = 0 ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ryd1_audio_playing = 0 ryd1_text_loop_done = 0 ryd1_mobile = 0 ryd1_text_timer_diff = 0 ryd1_text_timer_end = 0 ryd1_text_timer_start = 0 ryd1_ahead_counter = 0 ryd1_track_playing = 0 ryd1_flee_audio_counter = 0 ryd1_flee_audio_played = 0 ryd1_safe_audio_counter = 0 ryd1_safe_audio_played = 0 ryd1_lockup_audio_counter = 0 ryd1_lockup_audio_played = 0 ryd1_wanted_audio_counter = 0 ryd1_wanted_audio_played = 0 $ryd1_text[1] = RYD1_AA//Cuz, it's already night, your head's waterlogged! $ryd1_text[2] = RYD1_AB//Where is this old motherfucker? Where in hell is he? $ryd1_text[3] = RYD1_AC//Chill out. We ain't there yet. $ryd1_text[4] = RYD1_AD//Yeah, right, Carl. You always right. $ryd1_text[5] = RYD1_AE//That's my homie. Mister right. $ryd1_text[6] = RYD1_AF//Shut up. $ryd1_text[7] = RYD1_AG//You can't stop me. $ryd1_text[8] = RYD1_AH//Who can't? $ryd1_text[9] = RYD1_AJ//Whatever. $ryd1_text[10] = RYD1_BA//Let's storm the place. $ryd1_text[11] = RYD1_BB//Hold up. Let's sneak in, grab what we can and sneak out. $ryd1_text[12] = RYD1_BC//Ninja style?...OK. $ryd1_text[13] = RYD1_BD//Come out you old bastard! $ryd1_text[14] = RYD1_BE//Shut up! $ryd1_text[15] = RYD1_BF//He can't stop me! $ryd1_text[16] = RYD1_CA//Ok, Cuz, in you go, I'll keep watch. $ryd1_text[17] = RYD1_CB//CJ, what we gonna grab? $ryd1_text[18] = RYD1_CC//SShhhhh! Can it, homie! $ryd1_text[19] = RYD1_CD//I thought you was gonna keep watch outside! $ryd1_text[20] = RYD1_CE//That's a good idea! I'll be outside! $ryd1_text[21] = RYD1_CF//Give me strength. $ryd1_text[22] = RYD1_ZA//Keep it coming, CJ! $ryd1_text[23] = RYD1_ZB//What I tell ya? We making a killing! $ryd1_text[24] = RYD1_ZC//Get back in there and strip the place! $ryd1_text[25] = RYD1_ZD//There's plenty more in there! $ryd1_text[26] = RYD1_ZE//Hurry it up, CJ! $ryd1_text[27] = RYD1_ZF//Take him for everything you can! $ryd1_text[28] = RYD1_ZG//C'mon, CJ, we can empty that place! $ryd1_text[29] = RYD1_ZH//Plenty more room in LB's van! $ryd1_text[30] = RYD1_ZJ//Hit him up for everything he's got! $ryd1_text[31] = RYD1_ZK//You're a natural house-breaker, dude! $ryd1_text[32] = RYD1_ZL//C'mon, keep it up! $ryd1_text[33] = RYD1_ZM//We gonna be able to retire! $ryd1_text[34] = RYD1_ZN//One more trip, CJ, we still got time! $ryd1_text[35] = RYD1_DA//Gooks! $ryd1_text[36] = RYD1_DB//Get off my ridge, you viet cong bastards! $ryd1_text[37] = RYD1_DC//This one's for Kenny! $ryd1_text[38] = RYD1_DD//Oh shit! $ryd1_text[39] = RYD1_DE//Thieving commie bastards! $ryd1_text[40] = RYD1_DF//Jesus Christ! $ryd1_text[41] = RYD1_DG//Let's get outta here! $ryd1_text[42] = RYD1_DH//Me first! $ryd1_text[43] = RYD1_DJ//That pussy called the cops! $ryd1_text[44] = RYD1_DK//I'm gonna ice them! $ryd1_text[45] = RYD1_DL//Fuck that, let's get this stuff out of here! $ryd1_text[46] = RYD1_EA//You dumb bastard sherm head. $ryd1_text[47] = RYD1_EB//What I do? You the one woke that crazy old bastard! $ryd1_text[48] = RYD1_EC//We gotta lose this heat! $ryd1_text[49] = RYD1_ED//There's a spray shop in Idlewood should be able to take a van this big! $ryd1_text[50] = RYD1_FA//Ok, now we're cooking with gas! $ryd1_text[51] = RYD1_FB//LB's got a lock-up down in Seville Boulevard Families turf. $ryd1_text[52] = RYD1_FC//I'm on it! $ryd1_text[53] = RYD1_GA//Seriously, Ryder, you gotta give up the sherms! $ryd1_text[54] = RYD1_GB//Tell you what. I'll give up the water if you give being a buster! $ryd1_text[55] = RYD1_GC//Now hold it right there, homie... $ryd1_text[56] = RYD1_GD//Buster! $ryd1_text[57] = RYD1_GE//Forget it. $ryd1_text[58] = RYD1_GF//Forget you first! $ryd1_text[59] = RYD1_GG//One day you're gonna wish you hadn't pissed me off! $ryd1_text[60] = RYD1_GH//Can I hear something? $ryd1_text[61] = RYD1_GJ//Sounds like a buster complaining all the damn time! $ryd1_text[62] = RYD1_GK//This is childish. $ryd1_text[63] = RYD1_GL//I ain't talking to you no more. $ryd1_text[64] = RYD1_HA//You blown it, CJ, with your crazy-assed driving! $ryd1_text[65] = RYD1_HB//Back to the Pay'n'Spray! $ryd1_text[66] = RYD1_JA//You see, simple! $ryd1_text[67] = RYD1_JB//Yeah that was a real breeze. $ryd1_text[68] = RYD1_KA//CJ, you gotta get it into your head that this is every day shit. $ryd1_text[69] = RYD1_KB//Listen up, no motherfucker gonna give a gangbanging carjacker like you anything for free. $ryd1_text[70] = RYD1_KC//So you gotta go take it. $ryd1_text[71] = RYD1_KD//All the houses in this state full of shit to rob. $ryd1_text[72] = RYD1_KE//They're insured, they won't miss nothing. $ryd1_text[73] = RYD1_KF//Just bring it back here and LB will give you a fair price! $ryd1_text[74] = RYD1_KG//Ok, look, I'm tired, I'll see you later. $ryd1_text[75] = RYD1_KH//Whatever, holmes, think about what I said... $ryd1_text[76] = RYDX_AC//Get in fool! $ryd1_text[77] = RYD1_LA// Ryder! Buster! $ryd1_text[78] = RYD1_LB// Ryder, where the hell you at, man? $ryd1_text[79] = RYD1_LC// Mark ass Ryder! $ryd1_text[80] = RYDX_BG// Oh, I'm outta here! $ryd1_text[81] = RYDX_BI// Oh shit, I'm gone! ryd1_audio[1] = SOUND_RYD1_AA//Cuz, it's already night, your head's waterlogged! ryd1_audio[2] = SOUND_RYD1_AB//Where is this old motherfucker? Where in hell is he? ryd1_audio[3] = SOUND_RYD1_AC//Chill out. We ain't there yet. ryd1_audio[4] = SOUND_RYD1_AD//Yeah, right, Carl. You always right. ryd1_audio[5] = SOUND_RYD1_AE//That's my homie. Mister right. ryd1_audio[6] = SOUND_RYD1_AF//Shut up. ryd1_audio[7] = SOUND_RYD1_AG//You can't stop me. ryd1_audio[8] = SOUND_RYD1_AH//Who can't? ryd1_audio[9] = SOUND_RYD1_AJ//Whatever. ryd1_audio[10] = SOUND_RYD1_BA//Let's storm the place. ryd1_audio[11] = SOUND_RYD1_BB//Hold up. Let's sneak in, grab what we can and sneak out. ryd1_audio[12] = SOUND_RYD1_BC//Ninja style?...OK. ryd1_audio[13] = SOUND_RYD1_BD//Come out you old bastard! ryd1_audio[14] = SOUND_RYD1_BE//Shut up! ryd1_audio[15] = SOUND_RYD1_BF//He can't stop me! ryd1_audio[16] = SOUND_RYD1_CA//Ok, Cuz, in you go, I'll keep watch. ryd1_audio[17] = SOUND_RYD1_CB//CJ, what we gonna grab? ryd1_audio[18] = SOUND_RYD1_CC//SShhhhh! Can it, homie! ryd1_audio[19] = SOUND_RYD1_CD//I thought you was gonna keep watch outside! ryd1_audio[20] = SOUND_RYD1_CE//That's a good idea! I'll be outside! ryd1_audio[21] = SOUND_RYD1_CF//Give me strength. ryd1_audio[22] = SOUND_RYD1_ZA//Keep it coming, CJ! ryd1_audio[23] = SOUND_RYD1_ZB//What I tell ya? We making a killing! ryd1_audio[24] = SOUND_RYD1_ZC//Get back in there and strip the place! ryd1_audio[25] = SOUND_RYD1_ZD//There's plenty more in there! ryd1_audio[26] = SOUND_RYD1_ZE//Hurry it up, CJ! ryd1_audio[27] = SOUND_RYD1_ZF//Take him for everything you can! ryd1_audio[28] = SOUND_RYD1_ZG//C'mon, CJ, we can empty that place! ryd1_audio[29] = SOUND_RYD1_ZH//Plenty more room in LB's van! ryd1_audio[30] = SOUND_RYD1_ZJ//Hit him up for everything he's got! ryd1_audio[31] = SOUND_RYD1_ZK//You're a natural house-breaker, dude! ryd1_audio[32] = SOUND_RYD1_ZL//C'mon, keep it up! ryd1_audio[33] = SOUND_RYD1_ZM//We gonna be able to retire! ryd1_audio[34] = SOUND_RYD1_ZN//One more trip, CJ, we still got time! ryd1_audio[35] = SOUND_RYD1_DA//Gooks! ryd1_audio[36] = SOUND_RYD1_DB//Get off my ridge, you viet cong bastards! ryd1_audio[37] = SOUND_RYD1_DC//This one's for Kenny! ryd1_audio[38] = SOUND_RYD1_DD//Oh shit! ryd1_audio[39] = SOUND_RYD1_DE//Thieving commie bastards! ryd1_audio[40] = SOUND_RYD1_DF//Jesus Christ! ryd1_audio[41] = SOUND_RYD1_DG//Let's get outta here! ryd1_audio[42] = SOUND_RYD1_DH//Me first! ryd1_audio[43] = SOUND_RYD1_DJ//That pussy called the cops! ryd1_audio[44] = SOUND_RYD1_DK//I'm gonna ice them! ryd1_audio[45] = SOUND_RYD1_DL//Fuck that, let's get this stuff out of here! ryd1_audio[46] = SOUND_RYD1_EA//You dumb bastard sherm head. ryd1_audio[47] = SOUND_RYD1_EB//What I do? You the one woke that crazy old bastard! ryd1_audio[48] = SOUND_RYD1_EC//We gotta lose this heat! ryd1_audio[49] = SOUND_RYD1_ED//There's a spray shop in Idlewood should be able to take a van this big! ryd1_audio[50] = SOUND_RYD1_FA//Ok, now we're cooking with gas! ryd1_audio[51] = SOUND_RYD1_FB//LB's got a lock-up down in Seville Boulevard Families turf. ryd1_audio[52] = SOUND_RYD1_FC//I'm on it! ryd1_audio[53] = SOUND_RYD1_GA//Seriously, Ryder, you gotta give up the sherms! ryd1_audio[54] = SOUND_RYD1_GB//Tell you what. I'll give up the water if you give being a buster! ryd1_audio[55] = SOUND_RYD1_GC//Now hold it right there, homie... ryd1_audio[56] = SOUND_RYD1_GD//Buster! ryd1_audio[57] = SOUND_RYD1_GE//Forget it. ryd1_audio[58] = SOUND_RYD1_GF//Forget you first! ryd1_audio[59] = SOUND_RYD1_GG//One day you're gonna wish you hadn't pissed me off! ryd1_audio[60] = SOUND_RYD1_GH//Can I hear something? ryd1_audio[61] = SOUND_RYD1_GJ//Sounds like a buster complaining all the damn time! ryd1_audio[62] = SOUND_RYD1_GK//This is childish. ryd1_audio[63] = SOUND_RYD1_GL//I ain't talking to you no more. ryd1_audio[64] = SOUND_RYD1_HA//You blown it, CJ, with your crazy-assed driving! ryd1_audio[65] = SOUND_RYD1_HB//Back to the Pay'n'Spray! ryd1_audio[66] = SOUND_RYD1_JA//You see, simple! ryd1_audio[67] = SOUND_RYD1_JB//Yeah that was a real breeze. ryd1_audio[68] = SOUND_RYD1_KA//CJ, you gotta get it into your head that this is every day shit. ryd1_audio[69] = SOUND_RYD1_KB//Listen up, no motherfucker gonna give a gangbanging carjacker like you anything for free. ryd1_audio[70] = SOUND_RYD1_KC//So you gotta go take it. ryd1_audio[71] = SOUND_RYD1_KD//All the houses in this state full of shit to rob. ryd1_audio[72] = SOUND_RYD1_KE//They're insured, they won't miss nothing. ryd1_audio[73] = SOUND_RYD1_KF//Just bring it back here and LB will give you a fair price! ryd1_audio[74] = SOUND_RYD1_KG//Ok, look, I'm tired, I'll see you later. ryd1_audio[75] = SOUND_RYD1_KH//Whatever, holmes, think about what I said... ryd1_audio[76] = SOUND_RYDX_AC//Get in fool! ryd1_audio[77] = SOUND_RYD1_LA// Ryder! Buster! ryd1_audio[78] = SOUND_RYD1_LB// Ryder, where the hell you at, man? ryd1_audio[79] = SOUND_RYD1_LC// Mark ass Ryder! ryd1_audio[80] = SOUND_RYDX_BG// Oh, I'm outta here! ryd1_audio[81] = SOUND_RYDX_BI// Oh shit, I'm gone! ryd1_sfx[1] = SOUND_ALARM_CLOCK ryd1_sfx[2] = SOUND_SECURITY_ALARM ryd1_sfx[3] = SOUND_SNORE ryd1_sfx_counter = 0 ryd1_sfx_playing = 0 ryd1_sfx_played = 0 disable_mod_garage = 1 //////////////////////////////////////// /// CREATE RYDER AND THE BURGLAR VAN /// //////////////////////////////////////// IF ryd1_mission_progression_flag = 0 GET_TIME_OF_DAY hours minutes ryd1_at_night_flag = 1 SET_TIME_OF_DAY 22 00 SWITCH_ENTRY_EXIT burhous FALSE REQUEST_MODEL BOXBURG REQUEST_ANIMATION CAR_CHAT LOAD_SPECIAL_CHARACTER 1 ryder2 WHILE NOT HAS_MODEL_LOADED BOXBURG OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_ANIMATION_LOADED CAR_CHAT WAIT 0 ENDWHILE CLEAR_AREA 2470.6560 -1689.6487 12.5198 100.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR BOXBURG &__SWAG__ CREATE_CAR BOXBURG 2476.6819 -1679.5656 12.3451 ryd1_truck_car SET_CAR_HEADING ryd1_truck_car 48.7370 CREATE_CHAR PEDTYPE_SPECIAL SPECIAL01 2475.1677 -1686.4825 12.5007 ryd1_ryder_ped SET_CHAR_CANT_BE_DRAGGED_OUT ryd1_ryder_ped TRUE SET_CHAR_DECISION_MAKER ryd1_ryder_ped ryd1_decision CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE ryd1_decision EVENT_DAMAGE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE ryd1_decision EVENT_VEHICLE_ON_FIRE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE ryd1_decision EVENT_GOT_KNOCKED_OVER_BY_CAR CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE ryd1_decision EVENT_VEHICLE_DAMAGE_COLLISION CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE ryd1_decision EVENT_VEHICLE_DAMAGE_WEAPON ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE ryd1_decision EVENT_DAMAGE TASK_SIMPLE_BE_DAMAGED 0.0 100.0 0.0 0.0 TRUE TRUE SET_ANIM_GROUP_FOR_CHAR ryd1_ryder_ped gang1 SET_CHAR_NEVER_TARGETTED ryd1_ryder_ped TRUE SET_CHAR_HEALTH ryd1_ryder_ped 200 SET_CHAR_SUFFERS_CRITICAL_HITS ryd1_ryder_ped FALSE SET_CAR_HEADING ryd1_truck_car 30.0 IF ryd1_at_night_flag = 999 ADD_BLIP_FOR_CAR ryd1_truck_car ryd1_truck_blip SET_BLIP_AS_FRIENDLY ryd1_truck_blip TRUE ENDIF CLEAR_PRINTS ryd1_truck_blip_added_flag = 1 ryd1_ryder_in_van_flag = 1 ryd1_ryder_created_flag = 1 ryd1_mission_progression_flag = 1 LOAD_SCENE 2475.0 -1699.0 15.0 RESTORE_CAMERA_JUMPCUT //players drivers side to van SET_CHAR_COORDINATES scplayer 2473.4829 -1686.5990 12.5154 SET_CHAR_HEADING scplayer 14.9748 OPEN_SEQUENCE_TASK ryd1_player_leave_seq TASK_GO_STRAIGHT_TO_COORD -1 2473.5269 -1680.0364 12.3551 PEDMOVE_WALK 6000 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_DRIVER -1 ryd1_truck_car 5000 CLOSE_SEQUENCE_TASK ryd1_player_leave_seq PERFORM_SEQUENCE_TASK scplayer ryd1_player_leave_seq CLEAR_SEQUENCE_TASK ryd1_player_leave_seq //ryder SET_CHAR_HEADING ryd1_ryder_ped 349.3790 OPEN_SEQUENCE_TASK ryd1_player_leave_seq TASK_GO_STRAIGHT_TO_COORD -1 2480.9248 -1682.3480 12.3381 PEDMOVE_RUN 6000 TASK_GO_STRAIGHT_TO_COORD -1 2478.3054 -1677.0597 12.3478 PEDMOVE_RUN 6000 TASK_ENTER_CAR_AS_PASSENGER -1 ryd1_truck_car 3000 0 CLOSE_SEQUENCE_TASK ryd1_player_leave_seq PERFORM_SEQUENCE_TASK ryd1_ryder_ped ryd1_player_leave_seq CLEAR_SEQUENCE_TASK ryd1_player_leave_seq SET_FIXED_CAMERA_POSITION 2470.3828 -1675.8162 13.2161 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2471.1660 -1676.4238 13.3470 JUMP_CUT SWITCH_WIDESCREEN ON CLEAR_AREA 2470.6560 -1689.6487 12.5198 100.0 TRUE SET_TIME_OF_DAY 22 00 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SKIP_CUTSCENE_START TIMERA = 0 ryd1_safety_flag = 0 ryd1_audio_counter = 76 // Get in fool ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ryd1_audio_playing = 0 ryd1_ahead_counter = 0 WHILE ryd1_safety_flag = 0 IF NOT ryd1_audio_counter = 0 IF ryd1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 CLEAR_MISSION_AUDIO ryd1_audio_slot2 ENDIF ryd1_audio_playing = 1 ENDIF IF ryd1_audio_playing = 1 LOAD_MISSION_AUDIO ryd1_audio_slot1 ryd1_audio[ryd1_audio_counter] ryd1_audio_playing = 2 ENDIF IF ryd1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot1 PLAY_MISSION_AUDIO ryd1_audio_slot1 PRINT_NOW $ryd1_text[ryd1_audio_counter] 10000 1 ryd1_audio_playing = 3 ENDIF ENDIF IF ryd1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ryd1_audio_slot1 CLEAR_THIS_PRINT $ryd1_text[ryd1_audio_counter] IF ryd1_audio_slot1 = 1 ryd1_audio_slot1 = 2 ryd1_audio_slot2 = 1 ELSE ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ENDIF ryd1_audio_counter = 0 ryd1_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 IF ryd1_audio_counter < 76 ryd1_ahead_counter = ryd1_audio_counter + 1 LOAD_MISSION_AUDIO ryd1_audio_slot2 ryd1_audio[ryd1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF IF TIMERA > 15000 ryd1_safety_flag = 1 ENDIF IF NOT IS_CHAR_DEAD ryd1_ryder_ped IF NOT IS_CAR_DEAD ryd1_truck_car IF IS_CHAR_SITTING_IN_CAR ryd1_ryder_ped ryd1_truck_car AND IS_CHAR_SITTING_IN_CAR scplayer ryd1_truck_car ryd1_safety_flag = 1 ENDIF ELSE ryd1_safety_flag = 1 ENDIF ELSE ryd1_safety_flag = 1 ENDIF WAIT 0 ENDWHILE SKIP_CUTSCENE_END CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS IF ryd1_at_night_flag = 1 SET_EVERYONE_IGNORE_PLAYER player1 ON CLEAR_MISSION_AUDIO ryd1_audio_slot1 CLEAR_MISSION_AUDIO ryd1_audio_slot2 CLEAR_PRINTS FREEZE_ONSCREEN_TIMER FALSE ryd1_audio_counter = 0 ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ryd1_audio_playing = 0 ryd1_text_loop_done = 0 ryd1_mobile = 0 ryd1_text_timer_diff = 0 ryd1_text_timer_end = 0 ryd1_text_timer_start = 0 ryd1_ahead_counter = 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD ryd1_truck_car IF NOT IS_CHAR_DEAD ryd1_ryder_ped IF NOT IS_CHAR_IN_CAR ryd1_ryder_ped ryd1_truck_car WARP_CHAR_INTO_CAR_AS_PASSENGER ryd1_ryder_ped ryd1_truck_car 0 ENDIF IF NOT IS_CHAR_IN_CAR scplayer ryd1_truck_car WARP_CHAR_INTO_CAR scplayer ryd1_truck_car ENDIF ENDIF ENDIF SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 IF NOT IS_CHAR_DEAD ryd1_ryder_ped IF NOT IS_GROUP_MEMBER ryd1_ryder_ped Players_Group SET_SCRIPT_LIMIT_TO_GANG_SIZE 1 SET_GROUP_MEMBER Players_Group ryd1_ryder_ped SET_GROUP_FOLLOW_STATUS Players_Group FALSE LISTEN_TO_PLAYER_GROUP_COMMANDS ryd1_ryder_ped FALSE ENDIF ENDIF ENDIF RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF CLEAR_PRINTS SET_TIME_OF_DAY 22 00 REMOVE_ANIMATION CAR_CHAT SET_EVERYONE_IGNORE_PLAYER player1 OFF /////////////////////////////////////////////// //// HAVE PLAYER PUT ON A BALACLAVA HERE ? //// /////////////////////////////////////////////// STORE_CLOTHES_STATE ryd1_clothes_changed = 1 GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP Player1 balaclava balaclava CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 CLEAR_THIS_BIG_PRINT BOXBURG PRINT (GUNS130) 5000 1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON ENDIF // START MAIN LOOP ryder1_main_loop: WAIT 0 //////////////////////DAVE B debug keys REMOVE LATER //// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_SPACE GOTO mission_g1_passed CREATE_CHAR PEDTYPE_MISSION1 wmopj 2817.2693 -1169.8748 28.2720 ryd1_owner_ped ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_1 SET_CHAR_COORDINATES scplayer 2834.0 -1182.0 25.0 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_2 SET_CHAR_COORDINATES scplayer 2492.0 -1666.0 12.0 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_4 ryd1_number_gunbox_truck = 4 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_3 ryd1_mission_progression_flag = 8 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_BSPACE ryd1_time_to_daylight = 6000000 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_0 ryd1_time_to_daylight = 5000 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_g1_passed ENDIF /////////////////////////////////////////////////////////////// /// IF RYDER / VAN CREATED FAIL MISSION IF EITHER IS KILLED /// /////////////////////////////////////////////////////////////// IF ryd1_ryder_created_flag = 1 IF IS_CHAR_DEAD ryd1_ryder_ped CLEAR_PRINTS IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT (GUNS125) 5000 1 //"Ryders dead" GOTO mission_g1_failed ENDIF IF IS_CAR_DEAD ryd1_truck_car IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT (GUNS122) 5000 1 //" the truck has been destroyed " GOTO mission_g1_failed ENDIF GET_AREA_VISIBLE ryd1_area_name IF ryd1_area_name = 0 IF ryd1_mission_progression_flag < 8 IF NOT IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava PRINT (RYD1_37) 5000 1 //" ~r~You no longer have the balaclava. " GOTO mission_g1_failed ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// /////////////////////// BEFORE PLAYER REACHES THE HOUSE ////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// /// ONCE PLAYER GETS IN THE VAN REMOVE BLIP AND ADD BLIP FOR HOUSE /// ////////////////////////////////////////////////////////////////////// IF ryd1_mission_progression_flag = 1 AND NOT IS_CAR_DEAD ryd1_truck_car IF IS_CHAR_IN_CAR scplayer ryd1_truck_car REMOVE_BLIP ryd1_truck_blip ryd1_truck_blip_added_flag = 0 CLEAR_PRINTS ADD_BLIP_FOR_COORD 2819.9 -1181.7 25.15 ryd1_house_blip PRINT (GUNS130) 5000 1 ryd1_house_blip_added_flag = 1 ryd1_mission_progression_flag = 2 ENDIF ENDIF IF ryd1_mission_progression_flag = 2 //////////////////////////////////////////////////////////// /// CHECK IF PLAYER LEAVES VAN BEFORE REACHING THE HOUSE /// //////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD ryd1_truck_car AND NOT IS_CHAR_DEAD ryd1_ryder_ped ///////////////////// /// PLAYER CHECKS /// ///////////////////// IF NOT IS_CHAR_IN_CAR scplayer ryd1_truck_car IF ryd1_truck_blip_added_flag = 0 IF ryd1_ryder_in_van_flag = 0 IF ryd1_ryder_blip_added_flag = 1 REMOVE_BLIP ryd1_ryder_blip ryd1_ryder_blip_added_flag = 0 ENDIF ENDIF REMOVE_BLIP ryd1_house_blip IF ryd1_ryder_blip_added_flag = 1 REMOVE_BLIP ryd1_ryder_blip ryd1_ryder_blip_added_flag = 0 ENDIF ryd1_house_blip_added_flag = 0 IF IS_MESSAGE_BEING_DISPLAYED ryd1_message_on_screen = 1 ENDIF CLEAR_PRINTS PRINT (GUNS128) 5000 1 //~s~You left the ~b~truck~s~! Get back to it! ryd1_audio_counter = 76 ryd1_audio_playing = 0 CLEAR_MISSION_AUDIO ryd1_audio_slot1 CLEAR_MISSION_AUDIO ryd1_audio_slot2 SET_PLAYER_GROUP_TO_FOLLOW_NEVER player1 True ADD_BLIP_FOR_CAR ryd1_truck_car ryd1_truck_blip SET_BLIP_AS_FRIENDLY ryd1_truck_blip TRUE ryd1_truck_blip_added_flag = 1 ELSE IF NOT ryd1_audio_counter = 0 IF ryd1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 CLEAR_MISSION_AUDIO ryd1_audio_slot2 ENDIF ryd1_audio_playing = 1 ENDIF IF ryd1_audio_playing = 1 LOAD_MISSION_AUDIO ryd1_audio_slot1 ryd1_audio[ryd1_audio_counter] ryd1_audio_playing = 2 ENDIF IF ryd1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot1 ATTACH_MISSION_AUDIO_TO_CHAR ryd1_audio_slot1 ryd1_ryder_ped PLAY_MISSION_AUDIO ryd1_audio_slot1 //PRINT_NOW $ryd1_text[ryd1_audio_counter] 10000 1 ryd1_message_displayed++ ryd1_audio_playing = 3 ENDIF ENDIF IF ryd1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ryd1_audio_slot1 //CLEAR_THIS_PRINT $ryd1_text[ryd1_audio_counter] IF ryd1_audio_slot1 = 1 ryd1_audio_slot1 = 2 ryd1_audio_slot2 = 1 ELSE ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ENDIF ryd1_audio_counter = 0 ryd1_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 IF ryd1_audio_counter < 76 ryd1_ahead_counter = ryd1_audio_counter + 1 LOAD_MISSION_AUDIO ryd1_audio_slot2 ryd1_audio[ryd1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ELSE IF ryd1_ryder_in_van_flag = 1 IF ryd1_house_blip_added_flag = 0 SET_PLAYER_GROUP_TO_FOLLOW_NEVER player1 FALSE REMOVE_BLIP ryd1_truck_blip ryd1_truck_blip_added_flag = 0 CLEAR_PRINTS PRINT (GUNS130) 5000 1 // "Park out side the house" ADD_BLIP_FOR_COORD 2819.9 -1181.7 25.15 ryd1_house_blip ryd1_house_blip_added_flag = 1 ENDIF ELSE IF ryd1_truck_blip_added_flag = 1 SET_PLAYER_GROUP_TO_FOLLOW_NEVER player1 FALSE REMOVE_BLIP ryd1_truck_blip ryd1_truck_blip_added_flag = 0 ENDIF ENDIF ENDIF //////////////////// /// RYDER CHECKS /// //////////////////// IF IS_CHAR_IN_CAR ryd1_ryder_ped ryd1_truck_car IF ryd1_ryder_in_van_flag = 0 IF ryd1_ryder_blip_added_flag = 1 REMOVE_BLIP ryd1_ryder_blip ryd1_ryder_blip_added_flag = 0 ENDIF ryd1_ryder_in_van_flag = 1 ryd1_ryder_told_enter_car_flag = 0 ryd1_ryder_in_van_flag = 1 ENDIF ELSE IF ryd1_ryder_in_van_flag = 1 ryd1_ryder_in_van_flag = 0 ENDIF IF ryd1_ryder_blip_added_flag = 0 AND ryd1_truck_blip_added_flag = 0 REMOVE_BLIP ryd1_house_blip ryd1_house_blip_added_flag = 0 ADD_BLIP_FOR_CHAR ryd1_ryder_ped ryd1_ryder_blip SET_BLIP_AS_FRIENDLY ryd1_ryder_blip TRUE IF IS_MESSAGE_BEING_DISPLAYED ryd1_message_on_screen = 1 ENDIF CLEAR_PRINTS PRINT (GUNS143) 5000 1 //~s~You've left ~b~Ryder~s~ behind go and get him. ryd1_ryder_blip_added_flag = 1 ENDIF IF ryd1_ryder_told_enter_car_flag = 0 TASK_ENTER_CAR_AS_PASSENGER ryd1_ryder_ped ryd1_truck_car -2 0 // -2 was 3000 ryd1_ryder_told_enter_car_flag = 1 ELSE GET_SCRIPT_TASK_STATUS ryd1_ryder_ped TASK_ENTER_CAR_AS_PASSENGER ryd1_task_status IF NOT ryd1_task_status = WAITING_TO_START_TASK AND NOT ryd1_task_status = PERFORMING_TASK ryd1_ryder_told_enter_car_flag = 0 ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////////////// //// CHECK IF MESSAGE DISPLAY GETS INTERUPTED //// ////////////////////////////////////////////////// IF ryd1_ryder_in_van_flag = 1 AND ryd1_house_blip_added_flag = 1 //IF IS_MESSAGE_BEING_DISPLAYED //ryd1_message_on_screen = 1 //ENDIF IF ryd1_message_on_screen = 1 IF ryd1_message_displayed < 8 PRINT (GUNS135) 4000 1 //As I was saying.... ryd1_message_displayed-- IF ryd1_message_displayed < 0 ryd1_message_displayed = 0 ENDIF ryd1_message_on_screen = 0 ENDIF ENDIF IF ryd1_message_on_screen = 0 IF ryd1_text_loop_done = 0 IF NOT ryd1_audio_counter = 0 IF ryd1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 CLEAR_MISSION_AUDIO ryd1_audio_slot2 ENDIF ryd1_audio_playing = 1 ENDIF IF ryd1_audio_playing = 1 LOAD_MISSION_AUDIO ryd1_audio_slot1 ryd1_audio[ryd1_audio_counter] ryd1_audio_playing = 2 ENDIF IF ryd1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot1 PLAY_MISSION_AUDIO ryd1_audio_slot1 PRINT_NOW $ryd1_text[ryd1_audio_counter] 10000 1 ryd1_message_displayed++ ryd1_audio_playing = 3 ENDIF ENDIF IF ryd1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ryd1_audio_slot1 CLEAR_THIS_PRINT $ryd1_text[ryd1_audio_counter] IF ryd1_audio_slot1 = 1 ryd1_audio_slot1 = 2 ryd1_audio_slot2 = 1 ELSE ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ENDIF ryd1_audio_counter = 0 ryd1_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 IF ryd1_audio_counter < 76 ryd1_ahead_counter = ryd1_audio_counter + 1 LOAD_MISSION_AUDIO ryd1_audio_slot2 ryd1_audio[ryd1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_MESSAGE_BEING_DISPLAYED SWITCH ryd1_mobile CASE 0 IF ryd1_audio_playing = 0 ryd1_audio_counter = 2 // PRINT (RYD1_AB) 4000 1 //RYDER: Where is this old motherfucker? Where in hell is he? //(RYD1_AB) ryd1_mobile = 1 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 5000 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryd1_ryder_ped TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF GET_GAME_TIMER ryd1_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 3 //PRINT (RYD1_AC) 4000 1 //CARL: Chill out. We ain't there yet. //(RYD1_AC) ryd1_mobile = 2 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 4000 ENDIF ryd1_audio_counter = 4 //PRINT (RYD1_AD) 4000 1 //RYDER: Yeah, right, Carl. You always right. //(RYD1_AD) ryd1_mobile = 3 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 3 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 4000 ENDIF ryd1_audio_counter = 5//PRINT (RYD1_AE) 3000 1 //That's my homie. Mister right. //(RYD1_AE) ryd1_mobile = 4 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 4 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 6//PRINT (RYD1_AF) 3000 1 //CARL :Shut up. //(RYD1_AF) ryd1_mobile = 5 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 5 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 7//PRINT (RYD1_AG) 3000 1 //RYDER: You can't stop me.//(RYD1_AG) ryd1_mobile = 6 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 3000 ENDIF GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 6 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 8//PRINT (RYD1_AH) 3000 1 //CARL: Who can't? //(RYD1_AH) ryd1_mobile = 7 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 7 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 9//PRINT (RYD1_AJ) 3000 1 //RYDER: Whatever. //(RYD1_AJ) ryd1_mobile = 8 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 3000 ENDIF GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_text_loop_done = 1 IF NOT IS_CHAR_DEAD ryd1_ryder_ped SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryd1_ryder_ped FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK ryd1_ryder_ped ENDIF PRINT (GUNS130) 5000 1 ENDIF ENDIF BREAK ENDSWITCH ENDIF ///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// ENDIF ENDIF ENDIF //////////////////////////////////////////// /// CHECK IF PLAYER IS OUTSIDE THE HOUSE /// //////////////////////////////////////////// IF ryd1_ryder_in_van_flag = 1 AND ryd1_house_blip_added_flag = 1 IF LOCATE_CHAR_IN_CAR_3D scplayer 2819.9 -1181.7 25.15 4.0 4.0 2.5 TRUE SET_PLAYER_CONTROL player1 OFF STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 2000000 REMOVE_BLIP ryd1_house_blip ryd1_house_blip_added_flag = 0 ryd1_message_on_screen = 0 CLEAR_WANTED_LEVEL player1 SET_POLICE_IGNORE_PLAYER player1 ON CLEAR_PRINTS CLEAR_AREA 2819.9 -1181.7 25.15 30.0 TRUE ryd1_mission_progression_flag = 3 ENDIF ENDIF ENDIF IF ryd1_mission_progression_flag < 4 AND ryd1_timer_on_screen = 1 IF ryd1_time_to_daylight = 0 CLEAR_PRINTS CLEAR_CHAR_TASKS scplayer IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT (RYD1_35) 5000 1 //~r~You've waited too long to get to the house, it's no longer night time! GOTO mission_g1_failed ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// /////////////////////// WHEN PLAYER REACHES THE HOUSE ////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////// /// PLAY CUT-SCENE EXPLAINING HOW TO BREAK IN /// ///////////////////////////////////////////////// IF ryd1_mission_progression_flag = 3 IF played_ryder1_before = 0 played_ryder1_before = 1 ENDIF // cut-scene goes here SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON FREEZE_ONSCREEN_TIMER TRUE SKIP_CUTSCENE_START // view of front of van SET_FIXED_CAMERA_POSITION 2798.6450 -1190.1647 31.8647 0.0 0.0 0.0 // front of van POINT_CAMERA_AT_POINT 2799.4875 -1189.6843 31.6214 JUMP_CUT // wide shot CLEAR_PRINTS ryd1_audio_counter = 0 ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ryd1_audio_playing = 0 ryd1_text_loop_done = 0 ryd1_mobile = 0 ryd1_text_timer_diff = 0 ryd1_text_timer_end = 0 ryd1_text_timer_start = 0 ryd1_ahead_counter = 0 ryder1_text_loop2: WAIT 0 IF ryd1_text_loop_done = 0 IF NOT ryd1_audio_counter = 0 IF ryd1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 CLEAR_MISSION_AUDIO ryd1_audio_slot2 ENDIF ryd1_audio_playing = 1 ENDIF IF ryd1_audio_playing = 1 LOAD_MISSION_AUDIO ryd1_audio_slot1 ryd1_audio[ryd1_audio_counter] ryd1_audio_playing = 2 ENDIF IF ryd1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot1 PLAY_MISSION_AUDIO ryd1_audio_slot1 PRINT_NOW $ryd1_text[ryd1_audio_counter] 10000 1 ryd1_audio_playing = 3 ENDIF ENDIF IF ryd1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ryd1_audio_slot1 CLEAR_THIS_PRINT $ryd1_text[ryd1_audio_counter] IF ryd1_audio_slot1 = 1 ryd1_audio_slot1 = 2 ryd1_audio_slot2 = 1 ELSE ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ENDIF ryd1_audio_counter = 0 ryd1_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 IF ryd1_audio_counter < 76 ryd1_ahead_counter = ryd1_audio_counter + 1 LOAD_MISSION_AUDIO ryd1_audio_slot2 ryd1_audio[ryd1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH ryd1_mobile CASE 0 IF ryd1_audio_playing = 0 ryd1_audio_counter = 10 //PRINT (RYD1_BA) 4000 1 //RYDER: Let's storm the place.//(RYD1_BA) ryd1_mobile = 1 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 4000 OPEN_SEQUENCE_TASK ryd1_ryder_house_seq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 2809.2810 -1181.6093 24.6181 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK ryd1_ryder_house_seq PERFORM_SEQUENCE_TASK ryd1_ryder_ped ryd1_ryder_house_seq CLEAR_SEQUENCE_TASK ryd1_ryder_house_seq ENDIF GET_GAME_TIMER ryd1_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped STOP_CHAR_FACIAL_TALK ryd1_ryder_ped START_CHAR_FACIAL_TALK scplayer 5000 ENDIF OPEN_SEQUENCE_TASK ryd1_player_house_seq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 2808.1194 -1182.2551 24.6181 PEDMOVE_WALK -1 // this need to be changed CLOSE_SEQUENCE_TASK ryd1_player_house_seq PERFORM_SEQUENCE_TASK scplayer ryd1_player_house_seq CLEAR_SEQUENCE_TASK ryd1_player_house_seq ryd1_audio_counter = 11 // PRINT (RYD1_BB) 4000 1 //CARL: Hold up. Let's sneak in, grab the guns and sneak out. //(RYD1_BB) ryd1_mobile = 2 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped STOP_CHAR_FACIAL_TALK scplayer START_CHAR_FACIAL_TALK ryd1_ryder_ped 4000 ENDIF ryd1_audio_counter = 12 // PRINT (RYD1_BC) 4000 1 //RYDER: Ninja style?...OK. //(RYD1_BC) REQUEST_ANIMATION ON_LOOKERS REQUEST_ANIMATION GANGS ryd1_mobile = 3 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 3 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 WHILE NOT HAS_ANIMATION_LOADED ON_LOOKERS OR NOT HAS_ANIMATION_LOADED GANGS WAIT 0 ENDWHILE IF ryd1_locked_car_flag = 0 IF NOT IS_CAR_DEAD ryd1_truck_car AND NOT IS_CHAR_DEAD ryd1_ryder_ped IF NOT IS_CHAR_IN_CAR scplayer ryd1_truck_car AND NOT IS_CHAR_IN_CAR ryd1_ryder_ped ryd1_truck_car CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY ryd1_ryder_ped SET_CHAR_COORDINATES scplayer 2808.1194 -1182.2551 24.3693 SET_CHAR_HEADING scplayer 353.059 SET_CHAR_COORDINATES ryd1_ryder_ped 2809.2810 -1181.6093 24.3693 SET_CHAR_HEADING ryd1_ryder_ped 30.6396 SET_FIXED_CAMERA_POSITION 2804.0598 -1181.8337 25.8646 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2804.9604 -1181.4055 25.9365 JUMP_CUT CLOSE_ALL_CAR_DOORS ryd1_truck_car LOCK_CAR_DOORS ryd1_truck_car CARLOCK_LOCKED FIX_CAR_DOOR ryd1_truck_car FRONT_LEFT_DOOR FIX_CAR_DOOR ryd1_truck_car FRONT_RIGHT_DOOR FREEZE_CAR_POSITION ryd1_truck_car TRUE ryd1_locked_car_flag = 1 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD ryd1_ryder_ped OPEN_SEQUENCE_TASK ryd1_player_door_seq TASK_PLAY_ANIM -1 shout_in ON_LOOKERS 1000.0 FALSE FALSE FALSE FALSE -1 // latest addition TASK_PLAY_ANIM -1 shout_loop ON_LOOKERS 1000.0 FALSE FALSE FALSE FALSE -1 // latest addition TASK_PLAY_ANIM -1 shout_out ON_LOOKERS 1000.0 FALSE FALSE FALSE FALSE -1 // latest addition CLOSE_SEQUENCE_TASK ryd1_player_door_seq PERFORM_SEQUENCE_TASK ryd1_ryder_ped ryd1_player_door_seq CLEAR_SEQUENCE_TASK ryd1_player_door_seq TASK_TURN_CHAR_TO_FACE_CHAR scplayer ryd1_ryder_ped ENDIF IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 4000 ENDIF ryd1_audio_counter = 13// PRINT (RYD1_BD) 4000 1 //RYDER (shouting):Come out you old bastard! //(RYD1_BD) ryd1_mobile = 4 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 4 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 REQUEST_ANIMATION GANGS WHILE NOT HAS_ANIMATION_LOADED GANGS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD ryd1_ryder_ped STOP_CHAR_FACIAL_TALK ryd1_ryder_ped START_CHAR_FACIAL_TALK scplayer 3000 ENDIF ryd1_audio_counter = 14// PRINT (RYD1_BE) 3000 1 //CARL: Shut up! //(RYD1_BE) IF NOT IS_CHAR_DEAD ryd1_ryder_ped TASK_LOOK_AT_CHAR scplayer ryd1_ryder_ped 5000 TASK_PLAY_ANIM scplayer prtial_gngtlkC GANGS 4.0 FALSE FALSE FALSE FALSE -1 // latest addition ENDIF ryd1_mobile = 5 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 5 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped STOP_CHAR_FACIAL_TALK scplayer START_CHAR_FACIAL_TALK ryd1_ryder_ped 4000 ENDIF ryd1_audio_counter = 15//PRINT (RYD1_BF) 3000 1 //RYDER: He can't stop me! //(RYD1_BF) CLEAR_CHAR_TASKS scplayer IF NOT IS_CHAR_DEAD ryd1_ryder_ped TASK_LOOK_AT_CHAR ryd1_ryder_ped scplayer 3000 TASK_PLAY_ANIM ryd1_ryder_ped prtial_gngtlkB GANGS 4.0 FALSE FALSE FALSE FALSE -1 // latest addition ENDIF ryd1_mobile = 6 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 6 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 4000 ENDIF ryd1_audio_counter = 16//PRINT (RYD1_CA) 4000 1 //(RYD1_CA) IF NOT IS_CHAR_DEAD ryd1_ryder_ped CLEAR_LOOK_AT ryd1_ryder_ped TASK_SHAKE_FIST ryd1_ryder_ped ENDIF ryd1_mobile = 7 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_text_loop_done = 1 ENDIF ENDIF BREAK ENDSWITCH GOTO ryder1_text_loop2 ENDIF SKIP_CUTSCENE_END IF NOT IS_CHAR_DEAD ryd1_ryder_ped STOP_CHAR_FACIAL_TALK ryd1_ryder_ped STOP_CHAR_FACIAL_TALK scplayer ENDIF CLEAR_MISSION_AUDIO ryd1_audio_slot1 CLEAR_MISSION_AUDIO ryd1_audio_slot2 FREEZE_ONSCREEN_TIMER FALSE IF ryd1_locked_car_flag = 0 IF NOT IS_CAR_DEAD ryd1_truck_car AND NOT IS_CHAR_DEAD ryd1_ryder_ped CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY ryd1_ryder_ped IF NOT IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_COORDINATES scplayer 2808.1194 -1182.2551 24.3693 ELSE WARP_CHAR_FROM_CAR_TO_COORD scplayer 2808.1194 -1182.2551 24.3693 ENDIF SET_CHAR_HEADING scplayer 10.3905 IF NOT IS_CHAR_IN_ANY_CAR ryd1_ryder_ped SET_CHAR_COORDINATES_NO_OFFSET ryd1_ryder_ped 2809.2810 -1181.6093 24.6181 ELSE WARP_CHAR_FROM_CAR_TO_COORD ryd1_ryder_ped 2809.2810 -1181.6093 24.6181 ENDIF SET_CHAR_HEADING ryd1_ryder_ped 30.6396 CLOSE_ALL_CAR_DOORS ryd1_truck_car LOCK_CAR_DOORS ryd1_truck_car CARLOCK_LOCKED FIX_CAR_DOOR ryd1_truck_car FRONT_LEFT_DOOR FIX_CAR_DOOR ryd1_truck_car FRONT_RIGHT_DOOR FREEZE_CAR_POSITION ryd1_truck_car TRUE ryd1_locked_car_flag = 1 ENDIF ENDIF //////////////////////////////////////////////// IF NOT IS_CHAR_DEAD ryd1_ryder_ped CLEAR_CHAR_TASKS_IMMEDIATELY ryd1_ryder_ped CLEAR_LOOK_AT ryd1_ryder_ped ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_LOOK_AT scplayer REMOVE_ANIMATION ON_LOOKERS CLEAR_PRINTS RESTORE_CAMERA_JUMPCUT SWITCH_ENTRY_EXIT burhous TRUE SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF ADD_BLIP_FOR_COORD 2808.0 -1177.0 26.0 ryd1_door_blip PRINT (RYD1_39) 5000 1// Break down the ~y~door~s~. IF NOT IS_CHAR_DEAD ryd1_ryder_ped IF IS_GROUP_MEMBER ryd1_ryder_ped Players_Group REMOVE_CHAR_FROM_GROUP ryd1_ryder_ped ENDIF OPEN_SEQUENCE_TASK ryd1_ryder_leave_seq TASK_GO_STRAIGHT_TO_COORD -1 2829.4116 -1187.1519 23.8422 PEDMOVE_WALK -2 TASK_LOOK_AT_COORD -1 2833.2507 -1197.9080 23.3976 2500 TASK_LOOK_AT_COORD -1 2831.1655 -1169.7920 23.9627 2500 TASK_STAND_STILL -1 5000 TASK_GO_STRAIGHT_TO_COORD -1 2811.4375 -1185.9824 24.2707 PEDMOVE_WALK -2 TASK_LOOK_AT_COORD -1 2808.1223 -1190.8842 24.3397 2500 TASK_LOOK_AT_COORD -1 2808.4304 -1177.4086 24.3621 2500 TASK_STAND_STILL -1 5000 SET_SEQUENCE_TO_REPEAT ryd1_ryder_leave_seq 1 CLOSE_SEQUENCE_TASK ryd1_ryder_leave_seq PERFORM_SEQUENCE_TASK ryd1_ryder_ped ryd1_ryder_leave_seq CLEAR_SEQUENCE_TASK ryd1_ryder_leave_seq ENDIF ryd1_mission_progression_flag = 4 ENDIF ////////////////////////////////////// /// CHECK IF PLAYER HAS BROKEN IN /// ////////////////////////////////////// IF ryd1_mission_progression_flag = 4 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2808.0 -1170.0 1026.0 10.0 10.0 10.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer 2807.9600 -1176.2361 24.3824 1.2 1.2 3.0 FALSE CLEAR_PRINTS REMOVE_BLIP ryd1_door_blip SET_PLAYER_CONTROL Player1 OFF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS CLEAR_HELP DISPLAY_HUD FALSE SET_FIXED_CAMERA_POSITION 2806.7925 -1168.7496 1025.8832 0.0 0.0 0.0 // overlooking house POINT_CAMERA_AT_POINT 2807.3391 -1169.5865 1025.9030 JUMP_CUT // wide shot SET_RADAR_ZOOM 90 SWITCH_WIDESCREEN ON CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_AREA_VISIBLE 8 LOAD_SCENE 2807.6199 -1169.8799 1024.5781 SET_AREA_VISIBLE 8 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2807.9600 -1176.2361 20.0 SET_CHAR_COORDINATES scplayer 2807.6199 -1171.8999 1024.5781 SET_CHAR_HEADING scplayer 0.0 ryd1_noise_total = 0.0 ryd1_noise_bar = 0 SET_AREA_VISIBLE 8 SWITCH_PED_ROADS_OFF 2775.0 -1196.40 0.0 2840.0 -1141.0 40.0 CLEAR_AREA 2808.73 -1168.32 1024.6 100.0 TRUE LOAD_SCENE 2808.73 -1168.32 1024.6 RESTORE_CAMERA_JUMPCUT IF NOT IS_CHAR_DEAD ryd1_ryder_ped CLEAR_CHAR_TASKS ryd1_ryder_ped ENDIF ///////////////////////////////////// /// CREATE THE PICKUPS AND PJ PED /// ///////////////////////////////////// REQUEST_MODEL db_ammo WHILE NOT HAS_MODEL_LOADED db_ammo WAIT 0 ENDWHILE ryd1_counter = 0 WHILE (ryd1_counter < 7) LVAR_FLOAT ryd1_gunbox_actualz GET_GROUND_Z_FOR_3D_COORD ryd1_gunbox_x[ryd1_counter] ryd1_gunbox_y[ryd1_counter] ryd1_gunbox_z[ryd1_counter] ryd1_gunbox_actualz CREATE_OBJECT db_ammo ryd1_gunbox_x[ryd1_counter] ryd1_gunbox_y[ryd1_counter] ryd1_gunbox_actualz ryd1_gunbox_obj[ryd1_counter] ADD_BLIP_FOR_OBJECT ryd1_gunbox_obj[ryd1_counter] ryd1_gunbox_blip[ryd1_counter] GET_OBJECT_COORDINATES ryd1_gunbox_obj[ryd1_counter] ryd1_temp_x ryd1_temp_y ryd1_temp_z IF ryd1_temp_z > 700.0 SET_BLIP_ENTRY_EXIT ryd1_gunbox_blip[ryd1_counter] 2807.8440 -1176.9855 10.0 ENDIF ryd1_box_blip_added[ryd1_counter] = 1 SET_OBJECT_AREA_VISIBLE ryd1_gunbox_obj[ryd1_counter] 8 SET_OBJECT_AS_STEALABLE ryd1_gunbox_obj[ryd1_counter] TRUE SET_OBJECT_COLLISION ryd1_gunbox_obj[ryd1_counter] TRUE SET_OBJECT_DYNAMIC ryd1_gunbox_obj[ryd1_counter] FALSE // set to static until picked up... it will bounce around otherwise ryd1_boxes_left++ ryd1_counter++ ENDWHILE REQUEST_ANIMATION INT_HOUSE REQUEST_ANIMATION GANGS WHILE NOT HAS_ANIMATION_LOADED INT_HOUSE OR NOT HAS_ANIMATION_LOADED GANGS WAIT 0 ENDWHILE REQUEST_MODEL wmopj REQUEST_MODEL CHROMEGUN WHILE NOT HAS_MODEL_LOADED wmopj OR NOT HAS_MODEL_LOADED CHROMEGUN WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_MISSION1 wmopj 2816.8572 -1169.0747 1028.1719 ryd1_owner_ped SET_CHAR_AREA_VISIBLE ryd1_owner_ped 8 SET_CHAR_SUFFERS_CRITICAL_HITS ryd1_owner_ped TRUE SET_CHAR_USES_COLLISION_CLOSEST_OBJECT_OF_TYPE 2816.8572 -1169.0747 1028.1719 4.0 MED_BED_8 FALSE ryd1_owner_ped SET_CHAR_DECISION_MAKER ryd1_owner_ped ryd1_decision2 SET_CHAR_COORDINATES ryd1_owner_ped 2816.8572 -1169.0747 1028.1719 SET_CHAR_HEADING ryd1_owner_ped 90.0 GIVE_WEAPON_TO_CHAR ryd1_owner_ped WEAPONTYPE_SHOTGUN 3000 SET_CURRENT_CHAR_WEAPON ryd1_owner_ped WEAPONTYPE_UNARMED TASK_PLAY_ANIM ryd1_owner_ped BED_Loop_R INT_HOUSE 4.0 TRUE FALSE FALSE FALSE -1 // latest addition SET_FIXED_CAMERA_POSITION 2806.7925 -1168.7496 1025.8832 0.0 0.0 0.0 // overlooking house POINT_CAMERA_AT_POINT 2807.3391 -1169.5865 1025.9030 JUMP_CUT // wide shot IF ryd1_inside_house_flag = 0 SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 // normally 1.0 CLEAR_AREA 2819.9 -1181.7 1025.15 50.0 TRUE ryd1_inside_house_flag = 1 ENDIF ryd1_gunbox_picked_up_flag[0] = 1 ryd1_number_gunbox_truck++ REMOVE_BLIP ryd1_gunbox_blip[0] ryd1_box_blip_added[0] = 0 DELETE_OBJECT ryd1_gunbox_obj[0] ryd1_boxes_left-- DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DISPLAY_HUD TRUE ryd1_mission_progression_flag = 5 ENDIF ENDIF // IF ryd1_mission_progression_flag = 4 ////////////////////////////////////////////////////////////// /// FAIL MISSION IF IT'S NO LONGER NIGHT BEFORE BRAKING IN /// ////////////////////////////////////////////////////////////// IF ryd1_mission_progression_flag < 7 IF ryd1_timer_on_screen = 0 GET_TIME_OF_DAY hours minutes IF hours > 21 //got til 5 in morning ryd1_temp_int = 24 - hours ryd1_temp_int += 6 ryd1_temp_int *= 60000 ryd1_time_to_daylight = ryd1_temp_int ryd1_temp_int = 60000 - minutes ryd1_time_to_daylight += minutes ENDIF IF hours < 5 //got til 5 in moring ryd1_temp_int = 6 - hours ryd1_temp_int *= 60000 ryd1_time_to_daylight = ryd1_temp_int ryd1_temp_int = 60000 - minutes ryd1_time_to_daylight += minutes ENDIF DISPLAY_ONSCREEN_TIMER_WITH_STRING ryd1_time_to_daylight TIMER_DOWN RYD1_41 ryd1_timer_on_screen = 1 ENDIF ELSE IF ryd1_timer_on_screen = 1 CLEAR_ONSCREEN_TIMER ryd1_time_to_daylight ryd1_timer_on_screen = 0 ENDIF ENDIF //////////////////////////////////////////////////////// /// HAVE CUT-SCENE SHOWING PLAYER HOW TO STEAL STUFF /// //////////////////////////////////////////////////////// /// & ADD stealth bar ////////////////////////////////// //////////////////////////////////////////////////////// IF ryd1_mission_progression_flag = 5 CLEAR_AREA 2819.9 -1181.7 1025.15 50.0 TRUE FREEZE_ONSCREEN_TIMER TRUE SKIP_CUTSCENE_START CLEAR_HELP PRINT_HELP RYD1_92 // You must remain silent at all times. WHILE NOT IS_HELP_MESSAGE_BEING_DISPLAYED WAIT 0 ENDWHILE TIMERA = 0 ryd1_safety_flag = 0 WHILE ryd1_safety_flag = 0 IF TIMERA > 4000 OR NOT IS_PLAYER_PLAYING player1 ryd1_safety_flag = 1 ENDIF WAIT 0 ENDWHILE CLEAR_HELP // The crouch button is currently 86'ed. PRINT_HELP_FOREVER_CONDITIONAL RYD_HID 4096 // "Press ~m~~widget_explicit_crouch~ to crouch and sneak around the house quietly." WHILE NOT IS_HELP_MESSAGE_BEING_DISPLAYED WAIT 0 ENDWHILE TIMERA = 0 ryd1_safety_flag = 0 WHILE ryd1_safety_flag = 0 IF TIMERA > 4000 OR NOT IS_PLAYER_PLAYING player1 ryd1_safety_flag = 1 ENDIF WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION 2815.59 -1169.15 1029.45 0.0 0.0 0.0 // overlooking house POINT_CAMERA_AT_POINT 2820.48 -1173.33 1028.01 JUMP_CUT // wide shot CLEAR_HELP PRINT_HELP RYD1_94 // If you make too much noise you will wake the inhabitants of the house. WHILE NOT IS_HELP_MESSAGE_BEING_DISPLAYED WAIT 0 ENDWHILE TIMERA = 0 ryd1_safety_flag = 0 ryd1_sfx_counter = 3 ryd1_sfx_playing = 0 ryd1_sfx_played = 0 WHILE ryd1_safety_flag = 0 IF NOT ryd1_sfx_counter = 0 IF ryd1_sfx_playing = 0 IF HAS_MISSION_AUDIO_LOADED 3 CLEAR_MISSION_AUDIO 3 ENDIF ryd1_sfx_playing = 1 ENDIF IF ryd1_sfx_playing = 1 LOAD_MISSION_AUDIO 3 ryd1_sfx[ryd1_sfx_counter] // audio fx to be used ryd1_sfx_playing = 2 ENDIF IF ryd1_sfx_playing = 2 IF HAS_MISSION_AUDIO_LOADED 3 PLAY_MISSION_AUDIO 3 ryd1_sfx_playing = 3 ENDIF ENDIF IF ryd1_sfx_playing = 3 IF HAS_MISSION_AUDIO_FINISHED 3 ryd1_sfx_counter = 0 ryd1_sfx_playing = 0 ENDIF ENDIF ENDIF IF TIMERA > 4000 OR NOT IS_PLAYER_PLAYING player1 ryd1_safety_flag = 1 ENDIF WAIT 0 ENDWHILE PRINT_HELP RYD1_95 // Make sure the noise bar does not reach maximum. WHILE NOT IS_HELP_MESSAGE_BEING_DISPLAYED WAIT 0 ENDWHILE TIMERA = 0 ryd1_safety_flag = 0 ryd1_sfx_counter = 3 ryd1_sfx_playing = 0 WHILE ryd1_safety_flag = 0 IF NOT ryd1_sfx_counter = 0 IF ryd1_sfx_playing = 0 IF HAS_MISSION_AUDIO_LOADED 3 CLEAR_MISSION_AUDIO 3 ENDIF ryd1_sfx_playing = 1 ENDIF IF ryd1_sfx_playing = 1 LOAD_MISSION_AUDIO 3 ryd1_sfx[ryd1_sfx_counter] // audio fx to be used ryd1_sfx_playing = 2 ENDIF IF ryd1_sfx_playing = 2 IF HAS_MISSION_AUDIO_LOADED 3 PLAY_MISSION_AUDIO 3 ryd1_sfx_playing = 3 ENDIF ENDIF IF ryd1_sfx_playing = 3 IF HAS_MISSION_AUDIO_FINISHED 3 ryd1_sfx_counter = 0 ryd1_sfx_playing = 0 ENDIF ENDIF ENDIF IF TIMERA > 4000 OR NOT IS_PLAYER_PLAYING player1 ryd1_safety_flag = 1 ENDIF WAIT 0 ENDWHILE SKIP_CUTSCENE_END CLEAR_MISSION_AUDIO 3 FREEZE_ONSCREEN_TIMER FALSE CLEAR_HELP CLEAR_PRINTS IF NOT IS_CAR_DEAD ryd1_truck_car AND NOT IS_CHAR_DEAD ryd1_ryder_ped CLEAR_AREA 2812.9 -1181.13 1024.396 100.0 TRUE SET_CAR_COORDINATES ryd1_truck_car 2811.8457 -1183.2910 24.2764 SET_CAR_HEADING ryd1_truck_car 246.9816 OPEN_CAR_DOOR ryd1_truck_car REAR_LEFT_DOOR OPEN_CAR_DOOR ryd1_truck_car REAR_RIGHT_DOOR CLEAR_CHAR_TASKS ryd1_ryder_ped GET_OFFSET_FROM_CAR_IN_WORLD_COORDS ryd1_truck_car -1.5 -4.0 0.0 ryd1_passenger_x ryd1_passenger_y ryd1_passenger_z GET_CAR_HEADING ryd1_truck_car ryd1_truck_heading ryd1_truck_heading -= 180.0 IF ryd1_truck_heading < 180.0 ryd1_truck_heading += 360.0 ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY ryd1_ryder_ped SET_CHAR_COORDINATES ryd1_ryder_ped 2811.1216 -1186.5492 24.2718//ryd1_passenger_x ryd1_passenger_y -101.0 SET_CHAR_HEADING ryd1_ryder_ped 17.5866//ryd1_truck_heading GET_OFFSET_FROM_CAR_IN_WORLD_COORDS ryd1_truck_car 0.0 -4.0 0.0 ryd1_passenger_x ryd1_passenger_y ryd1_passenger_z OPEN_SEQUENCE_TASK ryd1_ryder_leave_seq TASK_GO_STRAIGHT_TO_COORD -1 2829.4116 -1187.1519 23.8422 PEDMOVE_WALK -2 TASK_LOOK_AT_COORD -1 2833.2507 -1197.9080 23.3976 2500 TASK_LOOK_AT_COORD -1 2831.1655 -1169.7920 23.9627 2500 TASK_STAND_STILL -1 5000 TASK_GO_STRAIGHT_TO_COORD -1 2811.4375 -1185.9824 24.2707 PEDMOVE_WALK -2 TASK_LOOK_AT_COORD -1 2808.1223 -1190.8842 24.3397 2500 TASK_LOOK_AT_COORD -1 2808.4304 -1177.4086 24.3621 2500 TASK_STAND_STILL -1 5000 SET_SEQUENCE_TO_REPEAT ryd1_ryder_leave_seq 1 CLOSE_SEQUENCE_TASK ryd1_ryder_leave_seq PERFORM_SEQUENCE_TASK ryd1_ryder_ped ryd1_ryder_leave_seq CLEAR_SEQUENCE_TASK ryd1_ryder_leave_seq ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer RESTORE_CAMERA_JUMPCUT REMOVE_ANIMATION GANGS ryd1_noise_total = 0.0 ryd1_noise_bar = 0 SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF ///////////////////// /// add noise bar /// ///////////////////// IF ryd1_noise_bar_added_flag = 0 ryd1_noise_total = 0.0 ryd1_noise_bar = 0 ryd1_noise_bar = 0 DISPLAY_ONSCREEN_COUNTER_WITH_STRING ryd1_noise_bar COUNTER_DISPLAY_BAR (GUNS1_5) ryd1_noise_bar_added_flag = 1 TIMERB = 0 ENDIF ryd1_inside_house_flag = 1 ryd1_audio_counter = 0 ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ryd1_audio_playing = 0 ryd1_text_loop_done = 0 ryd1_mobile = 0 ryd1_text_timer_diff = 0 ryd1_text_timer_end = 0 ryd1_text_timer_start = 0 ryd1_ahead_counter = 0 ryd1_noise_bar = 0 ryd1_noise_total = 0.0 ryd1_mission_progression_flag = 6 ENDIF ///////////////////////////////////// ///////// UPDATE NOISE BAR ////////// ///////////////////////////////////// IF ryd1_owner_awake_flag = 0 AND ryd1_mission_progression_flag < 7 IF ryd1_crate_message_shown = 0 AND ryd1_mission_progression_flag = 6 AND TIMERB > 2500 CLEAR_PRINTS PRINT (RYD1_40) 5000 1 //Find a crate. PRINT_WITH_NUMBER (RYD1_97) 3 5000 1 //~s~You need to steal at least ~1~ crates of guns. ryd1_crate_message_shown = 1 ENDIF IF ryd1_inside_house_flag = 0 IF ryd1_noise_bar_added_flag = 0 GET_AREA_VISIBLE ryd1_area_name IF ryd1_area_name = 8 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2807.6199 -1171.8999 1024.5776 50.0 50.0 50.0 FALSE IF ryd1_owner_awake_flag = 0 ryd1_noise_bar = 0 ryd1_noise_total = 0.0 IF ryd1_noise_bar_added_flag = 0 DISPLAY_ONSCREEN_COUNTER_WITH_STRING ryd1_noise_bar COUNTER_DISPLAY_BAR (GUNS1_5) SET_ONSCREEN_COUNTER_FLASH_WHEN_FIRST_DISPLAYED ryd1_noise_bar FALSE //SET_DARKNESS_EFFECT TRUE -1 ryd1_noise_bar_added_flag = 1 ENDIF ENDIF ENDIF ELSE IF ryd1_time_to_daylight = 0 IF NOT IS_CHAR_DEAD ryd1_owner_ped CLEAR_CHAR_TASKS ryd1_owner_ped SET_CHAR_COORDINATES ryd1_owner_ped 2806.9963 -1169.8094 1024.6120 SET_CHAR_HEADING ryd1_owner_ped 193.7598 SET_CHAR_DECISION_MAKER ryd1_owner_ped ryd1_decision REMOVE_DECISION_MAKER ryd1_decision2 SET_CHAR_RELATIONSHIP ryd1_owner_ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 OPEN_SEQUENCE_TASK ryd1_owner_awake_seq TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ryd1_owner_awake_seq PERFORM_SEQUENCE_TASK ryd1_owner_ped ryd1_owner_awake_seq CLEAR_SEQUENCE_TASK ryd1_owner_awake_seq ENDIF ryd1_temp_int = 0 WHILE ryd1_temp_int < 7 IF DOES_OBJECT_EXIST ryd1_gunbox_obj[ryd1_temp_int] SET_OBJECT_AS_STEALABLE ryd1_gunbox_obj[ryd1_temp_int] FALSE ENDIF IF ryd1_box_blip_added[ryd1_temp_int] = 1 REMOVE_BLIP ryd1_gunbox_blip[ryd1_temp_int] ryd1_box_blip_added[ryd1_temp_int] = 0 ENDIF ryd1_temp_int++ ENDWHILE CLEAR_ONSCREEN_TIMER ryd1_time_to_daylight CLEAR_ONSCREEN_COUNTER ryd1_noise_bar IF ryd1_number_gunbox_truck > 3 CLEAR_ONSCREEN_TIMER ryd1_time_to_daylight // play the escape scene ryd1_mission_progression_flag = 7 ELSE //////////////////////////////////////////////// /// have cut-scene of ryder fucking off here /// //////////////////////////////////////////////// GOSUB check_player_is_safe IF player_is_completely_safe = 1 IF NOT IS_CAR_DEAD ryd1_truck_car AND NOT IS_CHAR_DEAD ryd1_ryder_ped SET_PLAYER_CONTROL Player1 OFF SWITCH_WIDESCREEN ON CLEAR_HELP CLEAR_PRINTS LOCK_CAR_DOORS ryd1_truck_car CARLOCK_UNLOCKED FREEZE_CAR_POSITION ryd1_truck_car FALSE LOAD_SCENE 2807.8579 -1188.1034 25.4725 SET_FIXED_CAMERA_POSITION 2807.8579 -1188.1034 25.4725 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2808.7920 -1187.7477 25.4449 JUMP_CUT FLUSH_ROUTE EXTEND_ROUTE 2832.2573 -1182.7083 23.7924 EXTEND_ROUTE 2840.8108 -1211.1450 22.6279 OPEN_SEQUENCE_TASK ryd1_owner_awake_seq //TASK_GO_STRAIGHT_TO_COORD -1 2807.6262 -1174.2717 1024.5781 PEDMOVE_WALK 10000 IF ryd1_mission_progression_flag > 5 TASK_GO_STRAIGHT_TO_COORD -1 2812.0908 -1186.1982 24.2658 PEDMOVE_RUN 10000 ENDIF TASK_ENTER_CAR_AS_DRIVER -1 ryd1_truck_car 20000 TASK_DRIVE_POINT_ROUTE_ADVANCED -1 ryd1_truck_car 25.0 MODE_ACCURATE 0 DRIVINGMODE_SLOWDOWNFORCARS CLOSE_SEQUENCE_TASK ryd1_owner_awake_seq PERFORM_SEQUENCE_TASK ryd1_ryder_ped ryd1_owner_awake_seq CLEAR_SEQUENCE_TASK ryd1_owner_awake_seq ryd1_audio_counter = 0 ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ryd1_audio_playing = 0 ryd1_ahead_counter = 0 ryd1_mobile = 0 ryd1_safety_flag = 0 TIMERA = 0 WHILE ryd1_safety_flag = 0 IF NOT ryd1_audio_counter = 0 IF ryd1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 CLEAR_MISSION_AUDIO ryd1_audio_slot2 ENDIF ryd1_audio_playing = 1 ENDIF IF ryd1_audio_playing = 1 LOAD_MISSION_AUDIO ryd1_audio_slot1 ryd1_audio[ryd1_audio_counter] ryd1_audio_playing = 2 ENDIF IF ryd1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot1 PLAY_MISSION_AUDIO ryd1_audio_slot1 PRINT_NOW $ryd1_text[ryd1_audio_counter] 10000 1 ryd1_audio_playing = 3 ENDIF ENDIF IF ryd1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ryd1_audio_slot1 CLEAR_THIS_PRINT $ryd1_text[ryd1_audio_counter] IF ryd1_audio_slot1 = 1 ryd1_audio_slot1 = 2 ryd1_audio_slot2 = 1 ELSE ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ENDIF ryd1_audio_counter = 0 ryd1_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 IF ryd1_audio_counter < 76 ryd1_ahead_counter = ryd1_audio_counter + 1 LOAD_MISSION_AUDIO ryd1_audio_slot2 ryd1_audio[ryd1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH ryd1_mobile CASE 0 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 5000 ENDIF ryd1_audio_counter = 81//Oh shit, I'm gone! ryd1_mobile = 1 GET_GAME_TIMER ryd1_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped STOP_CHAR_FACIAL_TALK ryd1_ryder_ped ENDIF START_CHAR_FACIAL_TALK scplayer 5000 ryd1_audio_counter = 77//Ryder! Buster! ryd1_mobile = 2 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 STOP_CHAR_FACIAL_TALK scplayer ENDIF ENDIF BREAK ENDSWITCH IF NOT IS_CHAR_DEAD ryd1_ryder_ped GET_SCRIPT_TASK_STATUS ryd1_ryder_ped PERFORM_SEQUENCE_TASK ryd1_task_status ELSE ryd1_safety_flag = 1 ENDIF IF TIMERA > 15000 OR ryd1_task_status = FINISHED_TASK STOP_CHAR_FACIAL_TALK scplayer ryd1_safety_flag = 1 ENDIF WAIT 0 ENDWHILE ENDIF ENDIF CLEAR_PRINTS CLEAR_CHAR_TASKS scplayer RESTORE_CAMERA_JUMPCUT //PRINT (RYD1_43) 5000 1 //~r~You're not going to be able to get the guns now that he's awake! ALTER_WANTED_LEVEL player1 2 IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT (RYD1_96) 5000 1//You did not manage to steal enough crates. GOTO mission_g1_failed ENDIF ryd1_noise_bar_added_flag = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF ryd1_mission_progression_flag < 7 GET_CHAR_COORDINATES scplayer ryd1_player_x ryd1_player_y ryd1_player_z IF ryd1_player_z > 900.0 IF ryd1_dark_active = 0 GET_AREA_VISIBLE ryd1_area_name IF ryd1_area_name = 8 ryd1_dark_active = 1 ENDIF ENDIF ELSE IF ryd1_dark_active = 1 ryd1_dark_active = 0 ENDIF ENDIF ENDIF IF ryd1_mission_progression_flag > 2 IF ryd1_mission_progression_flag < 7 IF ryd1_noise_bar_added_flag = 1 IF ryd1_owner_awake_flag = 0 GET_AREA_VISIBLE ryd1_area_name IF ryd1_area_name = 0 IF ryd1_inside_house_flag = 1 CLEAR_MISSION_AUDIO 3 ryd1_sfx_counter = 3 ryd1_sfx_playing = 0 SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 // normally 1.0 IF ryd1_player_holding_box_flag = 1 IF DOES_OBJECT_EXIST ryd1_gunbox_obj[ryd1_gunbox_player_is_carrying] SET_OBJECT_AREA_VISIBLE ryd1_gunbox_obj[ryd1_gunbox_player_is_carrying] 0 ENDIF ENDIF IF ryd1_noise_bar_added_flag = 1 CLEAR_ONSCREEN_COUNTER ryd1_noise_bar ryd1_noise_bar_added_flag = 0 ENDIF ryd1_inside_house_flag = 0 SET_RADAR_ZOOM 0 ENDIF IF ryd1_noise_bar > 11 ryd1_noise_bar-= 10 IF ryd1_noise_total > 11.0 ryd1_noise_total-= 10.0 ELSE ryd1_noise_total = 0.0 ENDIF ELSE ryd1_noise_total = 0.0 ryd1_noise_bar = 0 ENDIF ENDIF //ryd1_area_name != 0 IF ryd1_area_name = 8 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2809.0 -1169.0 1026.0 30.0 30.0 30.0 FALSE IF NOT ryd1_sfx_counter = 0 IF ryd1_sfx_playing = 0 IF HAS_MISSION_AUDIO_LOADED 3 CLEAR_MISSION_AUDIO 3 ENDIF ryd1_sfx_playing = 1 ENDIF IF ryd1_sfx_playing = 1 LOAD_MISSION_AUDIO 3 ryd1_sfx[ryd1_sfx_counter] // audio fx to be used ryd1_sfx_playing = 2 ENDIF IF ryd1_sfx_playing = 2 IF HAS_MISSION_AUDIO_LOADED 3 IF NOT IS_CHAR_DEAD ryd1_owner_ped ATTACH_MISSION_AUDIO_TO_CHAR 3 ryd1_owner_ped PLAY_MISSION_AUDIO 3 ENDIF ryd1_sfx_playing = 3 ENDIF ENDIF IF ryd1_sfx_playing = 3 IF HAS_MISSION_AUDIO_FINISHED 3 ryd1_sfx_counter = 0 ryd1_sfx_playing = 0 TIMERA = 0 ENDIF ENDIF ELSE IF TIMERA > 3000 ryd1_sfx_counter = 3 ENDIF ENDIF IF NOT IS_CHAR_DEAD ryd1_owner_ped GET_CHAR_COORDINATES scplayer ryd1_player_x ryd1_player_y ryd1_player_z IF ryd1_allowed_to_check_sound = 1 GET_SOUND_LEVEL_AT_COORDS -1 ryd1_player_x ryd1_player_y ryd1_player_z ryd1_noise_float ryd1_noise_float *= 1.6 ELSE IF TIMERB > 500 ryd1_allowed_to_check_sound = 1 ENDIF ryd1_noise_bar = 0 ryd1_noise_total = 0.0 ENDIF ENDIF IF ryd1_inside_house_flag = 0 SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 // normally 1.0 CLEAR_AREA 2819.9 -1181.7 1025.15 50.0 TRUE IF ryd1_player_holding_box_flag = 1 IF DOES_OBJECT_EXIST ryd1_gunbox_obj[ryd1_gunbox_player_is_carrying] SET_OBJECT_AREA_VISIBLE ryd1_gunbox_obj[ryd1_gunbox_player_is_carrying] 8 ENDIF ENDIF SET_RADAR_ZOOM 90 ryd1_inside_house_flag = 1 ENDIF IF ryd1_noise_float > 20.0 ryd1_noise_float -= 20.0 /// additional effectors to sound /// ryd1_noise_total += ryd1_noise_float ENDIF ryd1_noise_total *= 0.99 ryd1_noise_bar =# ryd1_noise_total IF ryd1_noise_bar >= 100 ryd1_noise_bar = 100 IF ryd1_timer_started = 0 GET_GAME_TIMER ryd1_timer_start ryd1_timer_started = 1 ENDIF ELSE IF ryd1_noise_bar < 0 ryd1_noise_bar = 0 ENDIF //ryd1_timer_started = 0 ENDIF ////////////////////////////////////////// /// owner being attacked and gunfire /// ////////////////////////////////////////// IF NOT IS_CHAR_DEAD ryd1_owner_ped IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR ryd1_owner_ped scplayer OR LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer ryd1_owner_ped 1.0 1.0 2.0 FALSE ryd1_timer_started = 2 ryd1_noise_bar = 100 ENDIF ENDIF ENDIF ENDIF //ryd1_area_name = 8 IF ryd1_timer_started = 1 GET_GAME_TIMER ryd1_timer_current ryd1_time_elapsed = ryd1_timer_current - ryd1_timer_start IF ryd1_time_elapsed > 1500 // may need to increase this // can have "restless" old man here if forced to put it in ( ; /\ ; ) // IF ryd1_restless_scene_played = 0 CLEAR_MISSION_AUDIO 3 ryd1_sfx_counter = 0 ryd1_sfx_playing = 0 CLEAR_PRINTS SET_PLAYER_CONTROL Player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 2816.0957 -1169.5221 1029.0809 0.0 0.0 0.0 // overlooking bedroom POINT_CAMERA_AT_POINT 2817.0930 -1169.5881 1029.0551 JUMP_CUT ryd1_audio_counter = 0 ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ryd1_audio_playing = 0 ryd1_text_loop_done = 0 ryd1_mobile = 0 ryd1_text_timer_diff = 0 ryd1_text_timer_end = 0 ryd1_text_timer_start = 0 ryd1_ahead_counter = 0 ryder1_text_loop5: WAIT 0 IF ryd1_text_loop_done = 0 IF NOT ryd1_audio_counter = 0 IF ryd1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 CLEAR_MISSION_AUDIO ryd1_audio_slot2 ENDIF ryd1_audio_playing = 1 ENDIF IF ryd1_audio_playing = 1 LOAD_MISSION_AUDIO ryd1_audio_slot1 ryd1_audio[ryd1_audio_counter] ryd1_audio_playing = 2 ENDIF IF ryd1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot1 PLAY_MISSION_AUDIO ryd1_audio_slot1 PRINT_NOW $ryd1_text[ryd1_audio_counter] 10000 1 ryd1_audio_playing = 3 ENDIF ENDIF IF ryd1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ryd1_audio_slot1 CLEAR_THIS_PRINT $ryd1_text[ryd1_audio_counter] IF ryd1_audio_slot1 = 1 ryd1_audio_slot1 = 2 ryd1_audio_slot2 = 1 ELSE ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ENDIF ryd1_audio_counter = 0 ryd1_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 IF ryd1_audio_counter < 76 ryd1_ahead_counter = ryd1_audio_counter + 1 LOAD_MISSION_AUDIO ryd1_audio_slot2 ryd1_audio[ryd1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_MESSAGE_BEING_DISPLAYED SWITCH ryd1_mobile CASE 0 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_owner_ped START_CHAR_FACIAL_TALK ryd1_owner_ped 5000 ENDIF ryd1_audio_counter = 36 // RYD1_DB Get off my ridge, you viet cong bastards! ryd1_mobile = 1 GET_GAME_TIMER ryd1_text_timer_start ENDIF BREAK DEFAULT GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF NOT IS_CHAR_DEAD ryd1_owner_ped STOP_CHAR_FACIAL_TALK ryd1_owner_ped ENDIF IF ryd1_audio_playing = 0 ryd1_text_loop_done = 1 ENDIF ENDIF BREAK ENDSWITCH ENDIF GOTO ryder1_text_loop5 ENDIF PRINT (GUNS134) 3000 1 // ~s~You're making too much noise, you have to sneak! RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL Player1 ON SWITCH_WIDESCREEN OFF ryd1_timer_started = 0 ryd1_noise_bar = 0 ryd1_noise_total= 0.0 ryd1_restless_scene_played = 1 ryd1_sfx_counter = 3 ELSE ryd1_timer_started = 2 ENDIF ENDIF ENDIF // print the apporpriate message for current stealth level IF ryd1_timer_started = 2//ryd1_noise_bar = 100 OR ryd1_time_to_daylight = 0 CLEAR_MISSION_AUDIO 3 ryd1_sfx_playing = 0 ryd1_sfx_counter = 0 ryd1_temp_int = 0 WHILE ryd1_temp_int < 7 IF DOES_OBJECT_EXIST ryd1_gunbox_obj[ryd1_temp_int] SET_OBJECT_AS_STEALABLE ryd1_gunbox_obj[ryd1_temp_int] FALSE ENDIF IF ryd1_box_blip_added[ryd1_temp_int] = 1 REMOVE_BLIP ryd1_gunbox_blip[ryd1_temp_int] ryd1_box_blip_added[ryd1_temp_int] = 0 ENDIF ryd1_temp_int++ ENDWHILE IF ryd1_area_name = 8 IF NOT IS_CHAR_DEAD ryd1_owner_ped GET_CHAR_HEALTH ryd1_owner_ped ryd1_temp_int IF ryd1_temp_int < 20 SET_CHAR_HEALTH ryd1_owner_ped 20 ENDIF CLEAR_MISSION_AUDIO 3 CLEAR_CHAR_TASKS_IMMEDIATELY ryd1_owner_ped FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION ryd1_owner_ped FALSE GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 1.0 1.0 0.0 ryd1_driver_x ryd1_driver_y ryd1_driver_z CLEAR_AREA 2808.1228 -1172.8232 1024.6120 10.0 TRUE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer ryd1_owner_ped 1.0 1.0 2.0 FALSE SET_CHAR_COORDINATES scplayer 2817.2288 -1166.1100 1028.1719 SET_CHAR_HEADING scplayer 94.7698 ENDIF SET_CHAR_COORDINATES ryd1_owner_ped 2815.9609 -1169.3920 1028.1720 SET_CHAR_HEADING ryd1_owner_ped 14.1 SET_FIXED_CAMERA_POSITION 2816.2422 -1168.3579 1029.4849 0.0 0.0 0.0 // overlooking bedroom POINT_CAMERA_AT_POINT 2815.6743 -1169.1440 1029.7288 JUMP_CUT OPEN_SEQUENCE_TASK ryd1_owner_awake_seq TASK_SCRATCH_HEAD -1 TASK_SHAKE_FIST -1 CLOSE_SEQUENCE_TASK ryd1_owner_awake_seq PERFORM_SEQUENCE_TASK ryd1_owner_ped ryd1_owner_awake_seq CLEAR_SEQUENCE_TASK ryd1_owner_awake_seq SET_PLAYER_CONTROL player1 OFF CLEAR_CHAR_TASKS scplayer SWITCH_WIDESCREEN ON CLEAR_PRINTS CLEAR_HELP SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE IF ryd1_number_gunbox_truck < 4 SET_CHAR_COORDINATES scplayer 2807.5254 -1167.0757 1024.5781 SET_CHAR_HEADING scplayer 169.2411 ENDIF //TASK_GO_TO_COORD_ANY_MEANS scplayer 2806.9963 -1169.2094 24.6120 PEDMOVE_RUN -1 SET_CURRENT_CHAR_WEAPON ryd1_owner_ped WEAPONTYPE_SHOTGUN SKIP_CUTSCENE_START CLEAR_PRINTS IF ryd1_time_to_daylight > 0 CLEAR_MISSION_AUDIO 3 IF NOT IS_CHAR_DEAD ryd1_owner_ped STOP_CHAR_FACIAL_TALK ryd1_owner_ped START_CHAR_FACIAL_TALK ryd1_owner_ped 4000 ryd1_audio_counter = 39 ENDIF //PRINT (GUNS111) 4000 1 //I heard you for sure that time, I'm phoning the cops ELSE PRINT (RYD1_36) 4000 1 //SMITH: Morning already.. wait a minute something doesn't feel right here! ryd1_sfx_playing = 0 ryd1_sfx_counter = 1 ENDIF ///// audio entry required ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ryd1_audio_playing = 0 ryd1_text_loop_done = 0 ryd1_mobile = 0 ryd1_text_timer_diff = 0 ryd1_text_timer_end = 0 ryd1_text_timer_start = 0 ryd1_safety_flag = 0 TIMERA = 0 WHILE ryd1_safety_flag = 0 IF NOT ryd1_sfx_counter = 0 IF ryd1_sfx_playing = 0 IF HAS_MISSION_AUDIO_LOADED 3 CLEAR_MISSION_AUDIO 3 ENDIF ryd1_sfx_playing = 1 ENDIF IF ryd1_sfx_playing = 1 LOAD_MISSION_AUDIO 3 ryd1_sfx[ryd1_sfx_counter] // audio fx to be used ryd1_sfx_playing = 2 ENDIF IF ryd1_sfx_playing = 2 IF HAS_MISSION_AUDIO_LOADED 3 PLAY_MISSION_AUDIO 3 ryd1_sfx_playing = 3 ENDIF ENDIF IF ryd1_sfx_playing = 3 IF HAS_MISSION_AUDIO_FINISHED 3 OR TIMERA > 3000 CLEAR_MISSION_AUDIO 3 ryd1_sfx_counter = 0 ryd1_sfx_playing = 0 ENDIF ENDIF ENDIF IF NOT ryd1_audio_counter = 0 IF ryd1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 CLEAR_MISSION_AUDIO ryd1_audio_slot2 ENDIF ryd1_audio_playing = 1 ENDIF IF ryd1_audio_playing = 1 LOAD_MISSION_AUDIO ryd1_audio_slot1 ryd1_audio[ryd1_audio_counter] ryd1_audio_playing = 2 ENDIF IF ryd1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot1 PLAY_MISSION_AUDIO ryd1_audio_slot1 PRINT_NOW $ryd1_text[ryd1_audio_counter] 10000 1 ryd1_audio_playing = 3 ENDIF ENDIF IF ryd1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ryd1_audio_slot1 CLEAR_THIS_PRINT $ryd1_text[ryd1_audio_counter] IF NOT IS_CHAR_DEAD ryd1_owner_ped STOP_CHAR_FACIAL_TALK ryd1_owner_ped ENDIF IF ryd1_audio_slot1 = 1 ryd1_audio_slot1 = 2 ryd1_audio_slot2 = 1 ELSE ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ENDIF ryd1_audio_counter = 0 ryd1_audio_playing = 0 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD ryd1_owner_ped ryd1_safety_flag = 1 ELSE GET_SCRIPT_TASK_STATUS ryd1_owner_ped PERFORM_SEQUENCE_TASK ryd1_task_status IF ryd1_task_status = FINISHED_TASK ryd1_safety_flag = 1 ENDIF ENDIF IF TIMERA > 15000 ryd1_safety_flag = 1 ENDIF WAIT 0 ENDWHILE SKIP_CUTSCENE_END CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_MISSION_AUDIO 3 CLEAR_PRINTS HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE REMOVE_ANIMATION GANGS ryd1_player_holding_box_flag = 0 IF NOT IS_CHAR_DEAD ryd1_owner_ped STOP_CHAR_FACIAL_TALK ryd1_owner_ped IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2811.8816 -1167.5698 1029.2197 9.1000 7.2000 5.0000 FALSE AND ryd1_player_z > 1029.0 // player and smith both upstairs OPEN_SEQUENCE_TASK ryd1_owner_awake_seq TASK_LOOK_AT_CHAR -1 scplayer 5000 TASK_GOTO_CHAR -1 scplayer -1 5.0 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ryd1_owner_awake_seq PERFORM_SEQUENCE_TASK ryd1_owner_ped ryd1_owner_awake_seq CLEAR_SEQUENCE_TASK ryd1_owner_awake_seq ELSE SET_CHAR_COORDINATES ryd1_owner_ped 2804.3247 -1162.2542 1028.1797 SET_CHAR_HEADING ryd1_owner_ped 180.0 OPEN_SEQUENCE_TASK ryd1_owner_awake_seq TASK_LOOK_AT_CHAR -1 scplayer 10000 TASK_GO_TO_COORD_WHILE_SHOOTING -1 2803.9768 -1168.1567 1025.3750 PEDMOVE_RUN 0.5 0.0 scplayer TASK_GO_TO_COORD_WHILE_SHOOTING -1 2806.9963 -1169.8094 1024.6120 PEDMOVE_RUN 0.5 0.0 scplayer TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ryd1_owner_awake_seq PERFORM_SEQUENCE_TASK ryd1_owner_ped ryd1_owner_awake_seq CLEAR_SEQUENCE_TASK ryd1_owner_awake_seq ENDIF ENDIF CLEAR_CHAR_TASKS scplayer CLEAR_LOOK_AT scplayer IF NOT IS_CHAR_DEAD ryd1_ryder_ped CLEAR_CHAR_TASKS ryd1_ryder_ped CLEAR_LOOK_AT ryd1_ryder_ped ENDIF CLEAR_AREA 2806.9963 -1169.2094 1024.6120 50.0 TRUE IF NOT IS_CHAR_DEAD ryd1_ryder_ped AND NOT IS_CAR_DEAD ryd1_truck_car CLEAR_CHAR_TASKS ryd1_ryder_ped GET_OFFSET_FROM_CAR_IN_WORLD_COORDS ryd1_truck_car -1.5 -4.0 0.0 ryd1_passenger_x ryd1_passenger_y ryd1_passenger_z GET_CAR_HEADING ryd1_truck_car ryd1_truck_heading ryd1_truck_heading -= 180.0 IF ryd1_truck_heading < 180.0 ryd1_truck_heading += 360.0 ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY ryd1_ryder_ped SET_CHAR_COORDINATES ryd1_ryder_ped 2811.1216 -1186.5492 24.2718//ryd1_passenger_x ryd1_passenger_y -101.0 SET_CHAR_HEADING ryd1_ryder_ped 17.5866//ryd1_truck_heading ENDIF IF NOT IS_CHAR_DEAD ryd1_owner_ped SET_CHAR_DECISION_MAKER ryd1_owner_ped ryd1_decision REMOVE_DECISION_MAKER ryd1_decision2 SET_CHAR_RELATIONSHIP ryd1_owner_ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 ENDIF REMOVE_ANIMATION INT_HOUSE IF ryd1_number_gunbox_truck > 3 IF NOT IS_CHAR_DEAD ryd1_owner_ped OPEN_SEQUENCE_TASK ryd1_owner_awake_seq TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ryd1_owner_awake_seq PERFORM_SEQUENCE_TASK ryd1_owner_ped ryd1_owner_awake_seq CLEAR_SEQUENCE_TASK ryd1_owner_awake_seq ENDIF SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE PRINT (RYD1_44) 4000 1 // ~s~You're not going to be able to steal any more boxes, get back to the ~b~truck~s~. ryd1_message_displayed = 0 ELSE ////////////// audio goes in here ////////////////// ryd1_audio_counter = 0 ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ryd1_audio_playing = 0 ryd1_text_loop_done = 0 ryd1_mobile = 0 ryd1_text_timer_diff = 0 ryd1_text_timer_end = 0 ryd1_text_timer_start = 0 ryd1_ahead_counter = 0 ryder1_text_loop4: WAIT 0 IF ryd1_text_loop_done = 0 IF NOT ryd1_audio_counter = 0 IF ryd1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 CLEAR_MISSION_AUDIO ryd1_audio_slot2 ENDIF ryd1_audio_playing = 1 ENDIF IF ryd1_audio_playing = 1 LOAD_MISSION_AUDIO ryd1_audio_slot1 ryd1_audio[ryd1_audio_counter] ryd1_audio_playing = 2 ENDIF IF ryd1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot1 PLAY_MISSION_AUDIO ryd1_audio_slot1 PRINT_NOW $ryd1_text[ryd1_audio_counter] 10000 1 ryd1_audio_playing = 3 ENDIF ENDIF IF ryd1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ryd1_audio_slot1 CLEAR_THIS_PRINT $ryd1_text[ryd1_audio_counter] IF ryd1_audio_slot1 = 1 ryd1_audio_slot1 = 2 ryd1_audio_slot2 = 1 ELSE ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ENDIF ryd1_audio_counter = 0 ryd1_audio_playing = 0 ryd1_text_loop_done = 1 ENDIF ENDIF ENDIF IF ryd1_audio_playing = 0 IF ryd1_text_loop_done = 0 ryd1_audio_counter = 38//PRINT (RYD1_DD) 3000 1//CARL: Oh Shit! //(RYD1_DD) SET_CHAR_COORDINATES scplayer 2807.5254 -1167.0757 1024.5781 SET_CHAR_HEADING scplayer 169.2411 TASK_GO_STRAIGHT_TO_COORD scplayer 2807.6262 -1178.2717 1024.5781 PEDMOVE_RUN 6000 CLEAR_SEQUENCE_TASK ryd1_owner_awake_seq SET_FIXED_CAMERA_POSITION 2809.6707 -1173.2228 1025.9940 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2808.8162 -1172.7136 1025.8912 JUMP_CUT ENDIF ENDIF GOTO ryder1_text_loop4 ENDIF ryd1_safety_flag = 0 TIMERA = 0 WHILE ryd1_safety_flag = 0 GET_SCRIPT_TASK_STATUS scplayer TASK_GO_STRAIGHT_TO_COORD ryd1_task_status IF TIMERA > 10000 OR ryd1_task_status = FINISHED_TASK OR LOCATE_CHAR_ANY_MEANS_3D scplayer 2807.6262 -1174.2717 1024.5781 1.3 1.3 3.0 FALSE ryd1_safety_flag = 1 ENDIF WAIT 0 ENDWHILE DO_FADE 1500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CHAR_TASKS scplayer SET_CHAR_COORDINATES scplayer 2808.7842 -1178.0537 24.3559 SET_CHAR_HEADING scplayer 231.7034 SET_AREA_VISIBLE 0 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2807.7764 -1174.7816 20.0 //SET_CHAR_AREA_VISIBLE scplayer 0 SET_FIXED_CAMERA_POSITION 2807.4727 -1176.3146 25.8373 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2808.3184 -1176.8474 25.8125 JUMP_CUT REQUEST_COLLISION 2808.7842 -1178.0537 LOAD_SCENE 2808.7842 -1178.0537 24.0 IF NOT IS_CAR_DEAD ryd1_truck_car DELETE_CAR ryd1_truck_car ENDIF MARK_CAR_AS_NO_LONGER_NEEDED ryd1_truck_car IF NOT IS_CHAR_DEAD ryd1_ryder_ped DELETE_CHAR ryd1_ryder_ped ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED ryd1_ryder_ped OPEN_SEQUENCE_TASK ryd1_owner_awake_seq TASK_GO_STRAIGHT_TO_COORD -1 2814.9736 -1181.6954 24.2639 PEDMOVE_RUN 10000 TASK_SCRATCH_HEAD -1 CLOSE_SEQUENCE_TASK ryd1_owner_awake_seq PERFORM_SEQUENCE_TASK scplayer ryd1_owner_awake_seq CLEAR_SEQUENCE_TASK ryd1_owner_awake_seq // SET_DARKNESS_EFFECT FALSE -1 IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 ENDIF DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ryd1_audio_counter = 78 // Ryder, where the hell you at, man? ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ryd1_audio_playing = 0 ryd1_ahead_counter = 0 ryd1_safety_flag = 0 TIMERA = 0 WHILE ryd1_safety_flag = 0 IF NOT ryd1_audio_counter = 0 IF ryd1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 CLEAR_MISSION_AUDIO ryd1_audio_slot2 ENDIF ryd1_audio_playing = 1 ENDIF IF ryd1_audio_playing = 1 LOAD_MISSION_AUDIO ryd1_audio_slot1 ryd1_audio[ryd1_audio_counter] ryd1_audio_playing = 2 ENDIF IF ryd1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot1 PLAY_MISSION_AUDIO ryd1_audio_slot1 PRINT_NOW $ryd1_text[ryd1_audio_counter] 10000 1 ryd1_audio_playing = 3 ENDIF ENDIF IF ryd1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ryd1_audio_slot1 CLEAR_THIS_PRINT $ryd1_text[ryd1_audio_counter] IF ryd1_audio_slot1 = 1 ryd1_audio_slot1 = 2 ryd1_audio_slot2 = 1 ELSE ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ENDIF ryd1_audio_counter = 0 ryd1_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 IF ryd1_audio_counter < 76 ryd1_ahead_counter = ryd1_audio_counter + 1 LOAD_MISSION_AUDIO ryd1_audio_slot2 ryd1_audio[ryd1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK ryd1_task_status IF TIMERA > 10000 OR ryd1_task_status = FINISHED_TASK ryd1_safety_flag = 1 ENDIF WAIT 0 ENDWHILE ENDIF ENDIF ELSE /// player already outside IF NOT IS_CHAR_DEAD ryd1_owner_ped CLEAR_CHAR_TASKS ryd1_owner_ped SET_CHAR_COORDINATES ryd1_owner_ped 2806.9963 -1169.8094 1024.6120 SET_CHAR_HEADING ryd1_owner_ped 193.7598 SET_CHAR_DECISION_MAKER ryd1_owner_ped ryd1_decision REMOVE_DECISION_MAKER ryd1_decision2 SET_CHAR_RELATIONSHIP ryd1_owner_ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 OPEN_SEQUENCE_TASK ryd1_owner_awake_seq TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ryd1_owner_awake_seq PERFORM_SEQUENCE_TASK ryd1_owner_ped ryd1_owner_awake_seq CLEAR_SEQUENCE_TASK ryd1_owner_awake_seq IF NOT ryd1_number_gunbox_truck > 3 /////////////////////////////////////////// /// have scene showing ryder legging it /// /////////////////////////////////////////// IF NOT IS_CAR_DEAD ryd1_truck_car AND NOT IS_CHAR_DEAD ryd1_ryder_ped SET_PLAYER_CONTROL Player1 OFF SWITCH_WIDESCREEN ON CLEAR_PRINTS CLEAR_HELP LOCK_CAR_DOORS ryd1_truck_car CARLOCK_UNLOCKED FREEZE_CAR_POSITION ryd1_truck_car FALSE SET_FIXED_CAMERA_POSITION 2807.8579 -1188.1034 25.4725 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2808.7920 -1187.7477 25.4449 JUMP_CUT FLUSH_ROUTE EXTEND_ROUTE 2832.2573 -1182.7083 23.7924 EXTEND_ROUTE 2840.8108 -1211.1450 22.6279 OPEN_SEQUENCE_TASK ryd1_owner_awake_seq //TASK_GO_STRAIGHT_TO_COORD -1 2807.6262 -1174.2717 1024.5781 PEDMOVE_WALK 10000 IF ryd1_mission_progression_flag > 5 TASK_GO_STRAIGHT_TO_COORD -1 2816.7273 -1185.6876 24.2433 PEDMOVE_RUN 10000 ENDIF TASK_ENTER_CAR_AS_DRIVER -1 ryd1_truck_car 20000 TASK_DRIVE_POINT_ROUTE_ADVANCED -1 ryd1_truck_car 25.0 MODE_ACCURATE 0 DRIVINGMODE_SLOWDOWNFORCARS CLOSE_SEQUENCE_TASK ryd1_owner_awake_seq PERFORM_SEQUENCE_TASK ryd1_ryder_ped ryd1_owner_awake_seq CLEAR_SEQUENCE_TASK ryd1_owner_awake_seq ryd1_audio_counter = 0 ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ryd1_audio_playing = 0 ryd1_ahead_counter = 0 ryd1_mobile = 0 ryd1_safety_flag = 0 TIMERA = 0 WHILE ryd1_safety_flag = 0 IF NOT ryd1_audio_counter = 0 IF ryd1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 CLEAR_MISSION_AUDIO ryd1_audio_slot2 ENDIF ryd1_audio_playing = 1 ENDIF IF ryd1_audio_playing = 1 LOAD_MISSION_AUDIO ryd1_audio_slot1 ryd1_audio[ryd1_audio_counter] ryd1_audio_playing = 2 ENDIF IF ryd1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot1 PLAY_MISSION_AUDIO ryd1_audio_slot1 PRINT_NOW $ryd1_text[ryd1_audio_counter] 10000 1 ryd1_audio_playing = 3 ENDIF ENDIF IF ryd1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ryd1_audio_slot1 CLEAR_THIS_PRINT $ryd1_text[ryd1_audio_counter] IF ryd1_audio_slot1 = 1 ryd1_audio_slot1 = 2 ryd1_audio_slot2 = 1 ELSE ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ENDIF ryd1_audio_counter = 0 ryd1_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 IF ryd1_audio_counter < 76 ryd1_ahead_counter = ryd1_audio_counter + 1 LOAD_MISSION_AUDIO ryd1_audio_slot2 ryd1_audio[ryd1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH ryd1_mobile CASE 0 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 5000 ENDIF ryd1_audio_counter = 80//Oh shit, I'm gone! ryd1_mobile = 1 GET_GAME_TIMER ryd1_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped STOP_CHAR_FACIAL_TALK ryd1_ryder_ped ENDIF START_CHAR_FACIAL_TALK scplayer 5000 ryd1_audio_counter = 77//Ryder! Buster! ryd1_mobile = 2 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 STOP_CHAR_FACIAL_TALK scplayer ENDIF ENDIF BREAK ENDSWITCH IF NOT IS_CHAR_DEAD ryd1_ryder_ped GET_SCRIPT_TASK_STATUS ryd1_ryder_ped PERFORM_SEQUENCE_TASK ryd1_task_status ELSE ryd1_safety_flag = 1 ENDIF IF TIMERA > 15000 OR ryd1_task_status = FINISHED_TASK ryd1_safety_flag = 1 ENDIF WAIT 0 ENDWHILE ENDIF ENDIF ENDIF ENDIF //ryd1_area_name = 8 CLEAR_ONSCREEN_TIMER ryd1_time_to_daylight CLEAR_ONSCREEN_COUNTER ryd1_noise_bar ryd1_noise_bar_added_flag = 0 ryd1_owner_awake_flag = 1 IF ryd1_number_gunbox_truck > 3 CLEAR_ONSCREEN_TIMER ryd1_time_to_daylight ryd1_owner_awake_flag = 1 ryd1_mission_progression_flag = 7 ELSE ///////////////////////////////////////////////////////////////////////////// /// have cut-scene of player leaving the house and ryder fucking off here /// ///////////////////////////////////////////////////////////////////////////// CLEAR_PRINTS SET_PLAYER_CONTROL Player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT CLEAR_CHAR_TASKS scplayer //PRINT (RYD1_43) 3000 1 //~r~You're not going to be able to get the guns now that he's awake! ALTER_WANTED_LEVEL player1 2 IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT (RYD1_96) 5000 1//You did not manage to steal enough crates. GOTO mission_g1_failed ENDIF ELSE ryd1_noise_difference = ryd1_previous_noise - ryd1_noise_bar ryd1_previous_noise = ryd1_noise_bar IF ryd1_noise_bar > 30 AND ryd1_noise_bar < 60 IF ryd1_noise_difference < 0 // noise going up IF ryd1_message_on_screen = 0 IF NOT IS_MESSAGE_BEING_DISPLAYED PRINT (GUNS134) 4000 1 // ~s~You're making too much noise, you have to sneak! ryd1_message_on_screen = 1 ENDIF ENDIF ELSE // noise going down IF ryd1_message_on_screen = 1 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT ryd1_message_on_screen = 2 PRINT (GUNS134) 3000 1 // ~s~You're making too much noise, you have to sneak! ryd1_message_on_screen = 2 ENDIF ENDIF ENDIF ENDIF IF ryd1_noise_bar > 59 IF ryd1_noise_difference < 0 // noise going up IF ryd1_message_on_screen = 1 IF NOT IS_MESSAGE_BEING_DISPLAYED CLEAR_PRINTS PRINT (GUNS1_7) 4000 1 //" I'm sure I heard a noise.. ryd1_message_on_screen = 3 ENDIF ENDIF ELSE IF ryd1_message_on_screen = 2 IF NOT IS_MESSAGE_BEING_DISPLAYED PRINT (GUNS1_7) 4000 1 //" I'm sure I heard a noise.. ryd1_message_on_screen = 3 ENDIF ENDIF ENDIF ENDIF IF ryd1_noise_bar < 51 //ryd1_message_on_screen = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// /////////////////////// WHEN PLAYER IN THE HOUSE /////////////////////// //////////////////////////////////////////////////////////////////////////// IF ryd1_mission_progression_flag = 6 ryd1_temp_int = 0 WHILE ryd1_temp_int < 7 IF ryd1_player_holding_box_flag = 0 IF DOES_OBJECT_EXIST ryd1_gunbox_obj[ryd1_temp_int] IF ryd1_box_blip_added[ryd1_temp_int] = 0 ADD_BLIP_FOR_OBJECT ryd1_gunbox_obj[ryd1_temp_int] ryd1_gunbox_blip[ryd1_temp_int] GET_OBJECT_COORDINATES ryd1_gunbox_obj[ryd1_temp_int] ryd1_temp_x ryd1_temp_y ryd1_temp_z IF ryd1_temp_z > 700.0 SET_BLIP_ENTRY_EXIT ryd1_gunbox_blip[ryd1_temp_int] 2807.8440 -1176.9855 10.0 ENDIF ryd1_box_blip_added[ryd1_temp_int] = 1 ENDIF ENDIF ELSE IF ryd1_box_blip_added[ryd1_temp_int] = 1 REMOVE_BLIP ryd1_gunbox_blip[ryd1_temp_int] ryd1_box_blip_added[ryd1_temp_int] = 0 ENDIF ENDIF ryd1_temp_int++ ENDWHILE IF NOT ryd1_audio_counter = 0 IF ryd1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 CLEAR_MISSION_AUDIO ryd1_audio_slot2 ENDIF ryd1_audio_playing = 1 ENDIF IF ryd1_audio_playing = 1 LOAD_MISSION_AUDIO ryd1_audio_slot1 ryd1_audio[ryd1_audio_counter] ryd1_audio_playing = 2 ENDIF IF ryd1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot1 PLAY_MISSION_AUDIO ryd1_audio_slot1 PRINT_NOW $ryd1_text[ryd1_audio_counter] 10000 1 ryd1_audio_playing = 3 ENDIF ENDIF IF ryd1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ryd1_audio_slot1 CLEAR_THIS_PRINT $ryd1_text[ryd1_audio_counter] IF ryd1_boxes_left > 0 IF ryd1_able_to_leave_flag = 0 PRINT_NOW (GUNS147) 5000 1 // " get another crate" ELSE PRINT_NOW (RYD1_2) 5000 1//Find a ~g~crate~s~, or get in the ~b~truck~s~ and go offload what you've already stashed ENDIF ENDIF IF ryd1_audio_slot1 = 1 ryd1_audio_slot1 = 2 ryd1_audio_slot2 = 1 ELSE ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ENDIF ryd1_audio_counter = 0 ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped STOP_CHAR_FACIAL_TALK ryd1_ryder_ped ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////// /// ALLOW THE PLAYER TO LEAE AFTER OCLLECTING 3 CRATES /// ////////////////////////////////////////////////////////// IF ryd1_able_to_leave_flag = 1 IF NOT IS_CAR_DEAD ryd1_truck_car IF IS_CHAR_SITTING_IN_CAR scplayer ryd1_truck_car FREEZE_CAR_POSITION ryd1_truck_car FALSE CLOSE_ALL_CAR_DOORS ryd1_truck_car ////// SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 2810.1990 -1187.9792 25.1092 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2811.0686 -1187.5039 25.2425 JUMP_CUT CLEAR_PRINTS CLEAR_HELP CLEAR_AREA ryd1_passenger_x ryd1_passenger_y ryd1_passenger_z 25.0 TRUE DELETE_OBJECT ryd1_gunbox_obj[ryd1_gunbox_player_is_carrying] CLEAR_ONSCREEN_COUNTER ryd1_noise_bar ryd1_noise_bar_added_flag = 0 REMOVE_BLIP ryd1_truck_blip ryd1_truck_blip_added_flag = 0 REMOVE_CHAR_ELEGANTLY ryd1_owner_ped REMOVE_BLIP ryd1_gunbox_blip[0] REMOVE_BLIP ryd1_gunbox_blip[1] REMOVE_BLIP ryd1_gunbox_blip[2] REMOVE_BLIP ryd1_gunbox_blip[3] REMOVE_BLIP ryd1_gunbox_blip[4] REMOVE_BLIP ryd1_gunbox_blip[5] REMOVE_BLIP ryd1_gunbox_blip[6] DELETE_OBJECT ryd1_gunbox_obj[0] DELETE_OBJECT ryd1_gunbox_obj[1] DELETE_OBJECT ryd1_gunbox_obj[2] DELETE_OBJECT ryd1_gunbox_obj[3] DELETE_OBJECT ryd1_gunbox_obj[4] DELETE_OBJECT ryd1_gunbox_obj[5] DELETE_OBJECT ryd1_gunbox_obj[6] MARK_CHAR_AS_NO_LONGER_NEEDED ryd1_owner_ped MARK_MODEL_AS_NO_LONGER_NEEDED wmopj MARK_MODEL_AS_NO_LONGER_NEEDED db_ammo MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[0] MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[1] MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[2] MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[3] MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[4] MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[5] MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[6] REMOVE_ANIMATION INT_HOUSE IF NOT IS_CHAR_DEAD ryd1_ryder_ped OPEN_SEQUENCE_TASK ryd1_ryder_leave_seq TASK_GO_STRAIGHT_TO_COORD -1 2812.0908 -1186.1982 24.2658 PEDMOVE_RUN 10000 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER -1 ryd1_truck_car 4000 0 CLOSE_SEQUENCE_TASK ryd1_ryder_leave_seq PERFORM_SEQUENCE_TASK ryd1_ryder_ped ryd1_ryder_leave_seq CLEAR_SEQUENCE_TASK ryd1_ryder_leave_seq ENDIF SWITCH_ENTRY_EXIT burhous FALSE ryd1_audio_counter = 38 ryd1_audio_playing = 0 ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 TIMERB = 0 ryd1_safety_flag = 0 WHILE ryd1_safety_flag = 0 IF NOT ryd1_audio_counter = 0 IF ryd1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 CLEAR_MISSION_AUDIO ryd1_audio_slot2 ENDIF ryd1_audio_playing = 1 ENDIF IF ryd1_audio_playing = 1 LOAD_MISSION_AUDIO ryd1_audio_slot1 ryd1_audio[ryd1_audio_counter] ryd1_audio_playing = 2 ENDIF IF ryd1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot1 PLAY_MISSION_AUDIO ryd1_audio_slot1 PRINT_NOW $ryd1_text[ryd1_audio_counter] 10000 1 ryd1_audio_playing = 3 ENDIF ENDIF IF ryd1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ryd1_audio_slot1 CLEAR_THIS_PRINT $ryd1_text[ryd1_audio_counter] IF ryd1_audio_slot1 = 1 ryd1_audio_slot1 = 2 ryd1_audio_slot2 = 1 ELSE ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ENDIF ryd1_audio_counter = 0 ryd1_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 IF ryd1_audio_counter < 76 ryd1_ahead_counter = ryd1_audio_counter + 1 LOAD_MISSION_AUDIO ryd1_audio_slot2 ryd1_audio[ryd1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD ryd1_ryder_ped AND NOT IS_CAR_DEAD ryd1_truck_car IF IS_CHAR_SITTING_IN_CAR ryd1_ryder_ped ryd1_truck_car ryd1_safety_flag = 1 ENDIF ELSE IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF GOTO mission_g1_failed ENDIF IF TIMERB > 15000 ryd1_safety_flag = 1 ENDIF WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD ryd1_ryder_ped IF NOT IS_CAR_DEAD ryd1_truck_car IF NOT IS_CHAR_IN_CAR ryd1_ryder_ped ryd1_truck_car WARP_CHAR_INTO_CAR_AS_PASSENGER ryd1_ryder_ped ryd1_truck_car 0 ENDIF ENDIF ENDIF RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON ryd1_ryder_told_enter_car_flag = 0 ryd1_ryder_blip_added_flag = 0 ryd1_truck_blip_added_flag = 0 ryd1_audio_counter = 0 ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ryd1_audio_playing = 0 ryd1_text_loop_done = 0 ryd1_mobile = 0 ryd1_text_timer_diff = 0 ryd1_text_timer_end = 0 ryd1_text_timer_start = 0 ryd1_ahead_counter = 0 ryd1_track_playing = 1 ryd1_mission_progression_flag = 8 ryd1_message_displayed = 0 ryd1_message_on_screen = 0 SET_POLICE_IGNORE_PLAYER player1 OFF SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 // normally 1.0 CLEAR_PRINTS PRINT (GUNS124) 10000 1 // "get home" ADD_BLIP_FOR_COORD 2742.0 -2008.0 13.0 ryd1_home_blip ryd1_home_blip_added_flag = 1 ENDIF ENDIF ELSE /// able to leave IF ryd1_able_to_leave_flag = 0 IF ryd1_number_gunbox_truck > 3 IF NOT IS_CAR_DEAD ryd1_truck_car LOCK_CAR_DOORS ryd1_truck_car CARLOCK_UNLOCKED ryd1_able_to_leave_flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////// /// CHECK IF PLAYER CLOSE TO CRATE /// ////////////////////////////////////// IF ryd1_mission_progression_flag = 6 AND ryd1_player_holding_box_flag = 0 ryd1_near_box = 0 ryd1_counter = 0 IF ryd1_boxes_player_needs > ryd1_boxes_left CLEAR_PRINTS IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT (RYD1_32) 5000 1 //~r~ There isn't enough guns left to fill the truck! GOTO mission_g1_failed ELSE IF ryd1_boxes_left = 0 ryd1_mission_progression_flag = 7 ENDIF ENDIF WHILE (ryd1_counter < 7) IF ryd1_gunbox_picked_up_flag[ryd1_counter] = 0 IF DOES_OBJECT_EXIST ryd1_gunbox_obj[ryd1_counter] IF IS_OBJECT_IN_WATER ryd1_gunbox_obj[ryd1_counter] MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[ryd1_counter] IF ryd1_box_blip_added[ryd1_counter] = 1 REMOVE_BLIP ryd1_gunbox_blip[ryd1_counter] ryd1_box_blip_added[ryd1_counter] = 0 ENDIF ryd1_gunbox_picked_up_flag[ryd1_counter] = 1 ryd1_boxes_left-- ENDIF ELSE MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[ryd1_counter] ryd1_gunbox_picked_up_flag[ryd1_counter] = 1 ryd1_boxes_left-- ENDIF ENDIF IF ryd1_gunbox_picked_up_flag[ryd1_counter] = 0 AND ryd1_player_holding_box_flag = 0 IF LOCATE_CHAR_ON_FOOT_OBJECT_3D scplayer ryd1_gunbox_obj[ryd1_counter] 1.5 1.5 1.5 FALSE ryd1_near_box = 1 IF ryd1_help_displayed = 0 IF ryd1_box_help_been_shown = 0 ryd1_box_help_been_shown = 1 ENDIF ryd1_help_displayed= 1 ENDIF IF DOES_OBJECT_EXIST ryd1_gunbox_obj[ryd1_counter] IF IS_CHAR_HOLDING_OBJECT scplayer ryd1_gunbox_obj[ryd1_counter] CLEAR_HELP ryd1_help_displayed = 0 // have player pick up the box ryd1_gunbox_player_is_carrying = ryd1_counter IF NOT IS_CHAR_DEAD ryd1_ryder_ped AND ryd1_truck_blip_added_flag = 0 IF NOT IS_CAR_DEAD ryd1_truck_car ryd1_house_blip_added_flag = 0 ADD_BLIP_FOR_CAR ryd1_truck_car ryd1_truck_blip SET_BLIP_AS_FRIENDLY ryd1_truck_blip TRUE CLEAR_PRINTS IF ryd1_truck_message_displayed = 0 PRINT (GUNS146) 10000 1 // ryd1_truck_message_displayed = 1 ENDIF ryd1_truck_blip_added_flag = 1 ENDIF ENDIF ryd1_gunbox_picked_up_flag[ryd1_counter] = 1 ryd1_player_holding_box_flag = 1 ENDIF ENDIF ENDIF ENDIF ryd1_counter++ ENDWHILE IF ryd1_near_box = 0 CLEAR_HELP ryd1_help_displayed = 0 ENDIF ENDIF ///////////////////////////// /// LET PLAYER DROP CRATE /// ///////////////////////////// IF ryd1_player_holding_box_flag = 1 IF DOES_OBJECT_EXIST ryd1_gunbox_obj[ryd1_gunbox_player_is_carrying] IF IS_CHAR_HOLDING_OBJECT scplayer ryd1_gunbox_obj[ryd1_gunbox_player_is_carrying] ELSE ryd1_gunbox_picked_up_flag[ryd1_gunbox_player_is_carrying] = 0 ryd1_player_holding_box_flag = 0 REMOVE_BLIP ryd1_truck_blip ryd1_truck_blip_added_flag = 0 IF ryd1_house_blip_added_flag = 0 AND NOT ryd1_number_gunbox_truck = 5 CLEAR_PRINTS IF ryd1_able_to_leave_flag = 0 PRINT (RYD1_40) 5000 1 //Find a crate. ELSE PRINT (RYD1_2) 5000 1//Find a ~g~crate~s~, or get in the ~b~truck~s~ and go offload what you've already stashed ENDIF ryd1_house_blip_added_flag = 1 ENDIF ENDIF ENDIF ENDIF /////////////////////////////////////////////////////////////////////// /// IF PLAYER IS HOLDING A CRATE AND BY TRUCK PASS CRATE INTO TRUCK /// /////////////////////////////////////////////////////////////////////// IF ryd1_player_holding_box_flag = 1 AND ryd1_mission_progression_flag = 6 IF NOT IS_CAR_DEAD ryd1_truck_car AND NOT IS_CHAR_DEAD ryd1_ryder_ped IF LOCATE_CHAR_ON_FOOT_3D scplayer ryd1_passenger_x ryd1_passenger_y 24.0 1.5 1.5 2.0 FALSE IF ryd1_help_displayed = 0 OPEN_SEQUENCE_TASK ryd1_ryder_leave_seq TASK_GO_STRAIGHT_TO_COORD -1 2811.4375 -1185.9824 24.2707 PEDMOVE_WALK 10000 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK ryd1_ryder_leave_seq PERFORM_SEQUENCE_TASK ryd1_ryder_ped ryd1_ryder_leave_seq CLEAR_SEQUENCE_TASK ryd1_ryder_leave_seq PRINT_HELP RYD1_30 // Walk over to the truck to drop the item. ryd1_help_displayed = 1 ENDIF //IF IS_BUTTON_PRESSED PAD1 TRIANGLE //OR IS_WIDGET_RELEASED WIDGET_MISSION_START // This should be automatic; just get near the truck. CLEAR_HELP CLEAR_PRINTS ryd1_help_displayed = 0 ryd1_number_gunbox_truck++ ryd1_reward += 50 ryd1_ryder_box_deleted_flag = 0 ryd1_boxes_player_needs-- ryd1_boxes_left-- IF ryd1_boxes_left = 0 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 4000 ENDIF ryd1_audio_counter = 33 // RYD1_ZM//We gonna be able to retire! ENDIF ryd1_mission_progression_flag = 7 ELSE SWITCH ryd1_number_gunbox_truck CASE 2 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 4000 ENDIF ryd1_audio_counter = 22// RYD1_ZA//Keep it coming, CJ! ENDIF BREAK CASE 3 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 4000 ENDIF ryd1_audio_counter = 23// RYD1_ZB//What I tell ya? We making a killing! ENDIF BREAK CASE 4 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 4000 ENDIF ryd1_able_to_leave_flag = 1 ryd1_audio_counter = 31 // RYD1_ZK//You're a natural house-breaker, dude! IF NOT IS_CAR_DEAD ryd1_truck_car LOCK_CAR_DOORS ryd1_truck_car CARLOCK_UNLOCKED ENDIF ENDIF BREAK CASE 5 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 4000 ENDIF ryd1_audio_counter = 25 // RYD1_ZD//There's plenty more in there! ENDIF BREAK CASE 6 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 4000 ENDIF ryd1_audio_counter = 27 // RYD1_ZF//Take him for everything you can! ENDIF BREAK CASE 7 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 4000 ENDIF ryd1_audio_counter = 24 // RYD1_ZC//Get back in there and strip the place! ENDIF BREAK CASE 8 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 4000 ENDIF ryd1_audio_counter = 32 // RYD1_ZL//C'mon, keep it up! ENDIF BREAK DEFAULT IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 4000 ENDIF ryd1_audio_counter = 26 // RYD1_ZE//Hurry it up, CJ! ENDIF BREAK ENDSWITCH //ENDIF CLEAR_CHAR_TASKS ryd1_ryder_ped TASK_SHAKE_FIST ryd1_ryder_ped OPEN_SEQUENCE_TASK ryd1_ryder_leave_seq TASK_GO_STRAIGHT_TO_COORD -1 2829.4116 -1187.1519 23.8422 PEDMOVE_WALK -2 TASK_LOOK_AT_COORD -1 2833.2507 -1197.9080 23.3976 2500 TASK_LOOK_AT_COORD -1 2831.1655 -1169.7920 23.9627 2500 TASK_STAND_STILL -1 5000 TASK_GO_STRAIGHT_TO_COORD -1 2811.4375 -1185.9824 24.2707 PEDMOVE_WALK -2 TASK_LOOK_AT_COORD -1 2808.1223 -1190.8842 24.3397 2500 TASK_LOOK_AT_COORD -1 2808.4304 -1177.4086 24.3621 2500 TASK_STAND_STILL -1 5000 SET_SEQUENCE_TO_REPEAT ryd1_ryder_leave_seq 1 CLOSE_SEQUENCE_TASK ryd1_ryder_leave_seq PERFORM_SEQUENCE_TASK ryd1_ryder_ped ryd1_ryder_leave_seq CLEAR_SEQUENCE_TASK ryd1_ryder_leave_seq // pass over crate anim ryd1_player_holding_box_flag = 0 IF NOT ryd1_able_to_leave_flag = 1 REMOVE_BLIP ryd1_truck_blip ryd1_truck_blip_added_flag = 0 ENDIF // delete the crate IF ryd1_number_gunbox_truck > 1 AND ryd1_ryder_box_deleted_flag = 0 ryd1_safety_flag = 0 TIMERB = 0 IF DOES_OBJECT_EXIST ryd1_gunbox_obj[ryd1_gunbox_player_is_carrying] WHILE ryd1_safety_flag = 0 IF NOT IS_CHAR_HOLDING_OBJECT scplayer ryd1_gunbox_obj[ryd1_gunbox_player_is_carrying] OR IS_CHAR_DEAD scplayer OR TIMERB > 500 ryd1_safety_flag = 1 ENDIF WAIT 0 ENDWHILE MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[ryd1_gunbox_player_is_carrying] DELETE_OBJECT ryd1_gunbox_obj[ryd1_gunbox_player_is_carrying] // bit drastic could usebetter method ? REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE ryd1_ryder_box_deleted_flag = 1 ENDIF ENDIF IF ryd1_house_blip_added_flag = 0 AND ryd1_boxes_left > 0 //ADD_BLIP_FOR_COORD 2809.64 -1168.75 25.61 ryd1_house_blip ryd1_temp_int = 0 WHILE ryd1_temp_int < 7 IF DOES_OBJECT_EXIST ryd1_gunbox_obj[ryd1_temp_int] IF ryd1_box_blip_added[ryd1_temp_int] = 0 ADD_BLIP_FOR_OBJECT ryd1_gunbox_obj[ryd1_temp_int] ryd1_gunbox_blip[ryd1_temp_int] GET_OBJECT_COORDINATES ryd1_gunbox_obj[ryd1_temp_int] ryd1_temp_x ryd1_temp_y ryd1_temp_z IF ryd1_temp_z > 700.0 SET_BLIP_ENTRY_EXIT ryd1_gunbox_blip[ryd1_temp_int] 2807.8440 -1176.9855 10.0 ENDIF ryd1_box_blip_added[ryd1_temp_int] = 1 ENDIF ENDIF ryd1_temp_int++ ENDWHILE ryd1_house_blip_added_flag = 1 ENDIF ENDIF // is button pressed ELSE CLEAR_HELP ryd1_help_displayed = 0 ENDIF // locate ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////// /// if PLAYER HAS THE REQUIRED NUMBER OF CRATES TRIGGER NEXT MISSION SECTION /// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////// WHEN PLAYER LEAVES THE HOUSE ////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////// /// HAVE CUT-SCENE SHOWING PLAYER LEAVING HOUSE /// /////////////////////////////////////////////////// IF ryd1_mission_progression_flag = 7 GET_AREA_VISIBLE ryd1_area_name IF ryd1_area_name = 0 ryd1_message_on_screen = 0 ryd1_message_displayed = 0 SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PLAYER_CONTROL player1 OFF CLEAR_PRINTS DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RESTORE_CAMERA_JUMPCUT // SET_DARKNESS_EFFECT FALSE -1 SET_RADAR_ZOOM 0 CLEAR_PRINTS SWITCH_WIDESCREEN ON CLEAR_PRINTS CLEAR_HELP CLEAR_AREA ryd1_passenger_x ryd1_passenger_y ryd1_passenger_z 25.0 TRUE DELETE_OBJECT ryd1_gunbox_obj[ryd1_gunbox_player_is_carrying] IF ryd1_owner_awake_flag = 0 CLEAR_ONSCREEN_COUNTER ryd1_noise_bar ryd1_noise_bar_added_flag = 0 ENDIF REMOVE_BLIP ryd1_truck_blip ryd1_truck_blip_added_flag = 0 REMOVE_CHAR_ELEGANTLY ryd1_owner_ped DELETE_OBJECT ryd1_gunbox_obj[0] DELETE_OBJECT ryd1_gunbox_obj[1] DELETE_OBJECT ryd1_gunbox_obj[2] DELETE_OBJECT ryd1_gunbox_obj[3] DELETE_OBJECT ryd1_gunbox_obj[4] DELETE_OBJECT ryd1_gunbox_obj[5] DELETE_OBJECT ryd1_gunbox_obj[6] MARK_CHAR_AS_NO_LONGER_NEEDED ryd1_owner_ped MARK_MODEL_AS_NO_LONGER_NEEDED wmopj MARK_MODEL_AS_NO_LONGER_NEEDED db_ammo MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[0] MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[1] MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[2] MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[3] MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[4] MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[5] MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[6] REMOVE_ANIMATION INT_HOUSE IF NOT IS_CHAR_DEAD ryd1_ryder_ped AND NOT IS_CAR_DEAD ryd1_truck_car CLEAR_CHAR_TASKS ryd1_ryder_ped GET_OFFSET_FROM_CAR_IN_WORLD_COORDS ryd1_truck_car -1.5 -4.0 0.0 ryd1_passenger_x ryd1_passenger_y ryd1_passenger_z GET_CAR_HEADING ryd1_truck_car ryd1_truck_heading ryd1_truck_heading -= 180.0 IF ryd1_truck_heading < 180.0 ryd1_truck_heading += 360.0 ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY ryd1_ryder_ped SET_CHAR_COORDINATES ryd1_ryder_ped 2811.1216 -1186.5492 24.2718//ryd1_passenger_x ryd1_passenger_y -101.0 SET_CHAR_HEADING ryd1_ryder_ped 17.5866//ryd1_truck_heading GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS ryd1_ryder_ped 1.0 1.0 0.0 ryd1_passenger_x ryd1_passenger_y ryd1_passenger_z SET_CHAR_COORDINATES scplayer ryd1_passenger_x ryd1_passenger_y ryd1_passenger_z SET_CHAR_COORDINATES scplayer 2806.9277 -1178.8778 24.4038 SET_CHAR_HEADING scplayer 260.0 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS ryd1_truck_car 3.5 0.0 0.0 ryd1_passenger_x ryd1_passenger_y ryd1_passenger_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS ryd1_truck_car -3.5 0.0 0.0 ryd1_driver_x ryd1_driver_y ryd1_driver_z LOCK_CAR_DOORS ryd1_truck_car CARLOCK_UNLOCKED FREEZE_CAR_POSITION ryd1_truck_car FALSE ENDIF /////////////////////////////////////////////////////// //////////////////if player did wake owner //////////// /////////////////////////////////////////////////////// IF ryd1_owner_awake_flag = 1 REQUEST_MODEL COLT45 REQUEST_MODEL LAPD1 //lapd1 REQUEST_MODEL COPCARLA //cop car LA WHILE NOT HAS_MODEL_LOADED LAPD1 OR NOT HAS_MODEL_LOADED COPCARLA OR NOT HAS_MODEL_LOADED COLT45 WAIT 0 ENDWHILE /////////////// create the cops CUSTOM_PLATE_FOR_NEXT_CAR COPCARLA &TH3_P1G5 CREATE_CAR COPCARLA 2841.16 -1237.64 21.56 ryd1_cop_car SWITCH_CAR_SIREN ryd1_cop_car ON SET_CAR_HEADING ryd1_cop_car 10.0 CREATE_CHAR_INSIDE_CAR ryd1_cop_car PEDTYPE_COP LAPD1 ryd1_cop1_ped GIVE_WEAPON_TO_CHAR ryd1_cop1_ped WEAPONTYPE_PISTOL 3000 CREATE_CHAR_AS_PASSENGER ryd1_cop_car PEDTYPE_COP LAPD1 0 ryd1_cop2_ped GIVE_WEAPON_TO_CHAR ryd1_cop2_ped WEAPONTYPE_PISTOL 3000 //////////////////////////////////////// IF NOT IS_CAR_DEAD ryd1_truck_car AND NOT IS_CAR_DEAD ryd1_cop_car AND NOT IS_CHAR_DEAD ryd1_cop1_ped OPEN_SEQUENCE_TASK ryd1_cop1_seq TASK_CAR_DRIVE_TO_COORD -1 ryd1_cop_car 2833.26 -1186.69 23.8 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_LEAVE_CAR -1 ryd1_cop_car TASK_AIM_GUN_AT_CHAR -1 scplayer 2000 TASK_SHOOT_AT_COORD -1 ryd1_passenger_x ryd1_passenger_y ryd1_passenger_z 10000 CLOSE_SEQUENCE_TASK ryd1_cop1_seq PERFORM_SEQUENCE_TASK ryd1_cop1_ped ryd1_cop1_seq CLEAR_SEQUENCE_TASK ryd1_cop1_seq OPEN_SEQUENCE_TASK ryd1_cop2_seq TASK_LEAVE_CAR -1 ryd1_cop_car TASK_AIM_GUN_AT_CHAR -1 scplayer 2000 TASK_SHOOT_AT_COORD -1 ryd1_driver_x ryd1_driver_y ryd1_driver_z 10000 CLOSE_SEQUENCE_TASK ryd1_cop2_seq ENDIF IF NOT IS_CAR_DEAD ryd1_truck_car CLOSE_ALL_CAR_DOORS ryd1_truck_car ENDIF SET_FIXED_CAMERA_POSITION 2835.0146 -1176.0179 25.3376 0.0 0.0 0.0//2835.42 -1175.28 25.23 0.0 0.0 0.0 // overlooking bedroom POINT_CAMERA_AT_POINT 2834.2639 -1176.6774 25.3009 JUMP_CUT//2822.20 -1191.38 22.60 JUMP_CUT REQUEST_COLLISION 2835.0146 -1176.0179 LOAD_SCENE 2835.0146 -1176.0179 25.3376 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE TIMERA = 0 ryd1_safety_flag = 0 ///////////////////////////////////////////////////////// //////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// ryd1_audio_counter = 0 ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ryd1_audio_playing = 0 ryd1_text_loop_done = 0 ryd1_mobile = 0 ryd1_text_timer_diff = 0 ryd1_text_timer_end = 0 ryd1_text_timer_start = 0 ryd1_ahead_counter = 0 ryder1_text_loop6: WAIT 0 IF ryd1_text_loop_done = 0 IF NOT ryd1_audio_counter = 0 IF ryd1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 CLEAR_MISSION_AUDIO ryd1_audio_slot2 ENDIF ryd1_audio_playing = 1 ENDIF IF ryd1_audio_playing = 1 LOAD_MISSION_AUDIO ryd1_audio_slot1 ryd1_audio[ryd1_audio_counter] ryd1_audio_playing = 2 ENDIF IF ryd1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot1 PLAY_MISSION_AUDIO ryd1_audio_slot1 PRINT_NOW $ryd1_text[ryd1_audio_counter] 10000 1 ryd1_audio_playing = 3 ENDIF ENDIF IF ryd1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ryd1_audio_slot1 CLEAR_THIS_PRINT $ryd1_text[ryd1_audio_counter] IF ryd1_audio_slot1 = 1 ryd1_audio_slot1 = 2 ryd1_audio_slot2 = 1 ELSE ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ENDIF ryd1_audio_counter = 0 ryd1_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 IF ryd1_audio_counter < 76 ryd1_ahead_counter = ryd1_audio_counter + 1 LOAD_MISSION_AUDIO ryd1_audio_slot2 ryd1_audio[ryd1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH ryd1_mobile CASE 0 IF ryd1_audio_playing = 0 SET_FIXED_CAMERA_POSITION 2835.0146 -1176.0179 25.3376 0.0 0.0 0.0//2835.42 -1175.28 25.23 0.0 0.0 0.0 // overlooking bedroom POINT_CAMERA_AT_POINT 2834.2639 -1176.6774 25.3009 JUMP_CUT//2822.20 -1191.38 22.60 JUMP_CUT ryd1_audio_counter = 43 // PRINT (RYD1_DJ) 4000 1//RYDER: That pussy called the cops!// ryd1_mobile = 1 GET_GAME_TIMER ryd1_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 44 //PRINT (RYD1_DK) 4000 1//~n~ I'm gonna ice them! //(RYD1_DK) ryd1_mobile = 2 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF NOT IS_CHAR_DEAD ryd1_cop1_ped GET_SCRIPT_TASK_STATUS ryd1_cop1_ped PERFORM_SEQUENCE_TASK ryd1_task_status IF ryd1_task_status = PERFORMING_TASK GET_SEQUENCE_PROGRESS ryd1_cop1_ped ryd1_task_status IF ryd1_task_status = 1 OR TIMERA > 10000 IF ryd1_cop_task_assigned = 0 IF NOT IS_CHAR_DEAD ryd1_cop2_ped IF NOT IS_CAR_DEAD ryd1_cop_car IF ryd1_audio_playing = 0 ryd1_audio_counter = 45 //PRINT (RYD1_DL) 4000 1 //CARL: Fuck that, let's get this stuff out fo here! //(RYD1_DL) ryd1_mobile = 3 GET_GAME_TIMER ryd1_text_timer_start PERFORM_SEQUENCE_TASK ryd1_cop2_ped ryd1_cop2_seq CLEAR_SEQUENCE_TASK ryd1_cop2_seq SET_FIXED_CAMERA_POSITION 2807.8728 -1178.3564 24.8046 0.0 0.0 0.0 // overlooking bedroom POINT_CAMERA_AT_POINT 2808.7207 -1178.8698 24.9362 JUMP_CUT IF NOT IS_CAR_DEAD ryd1_truck_car IF NOT IS_CHAR_DEAD ryd1_ryder_ped OPEN_SEQUENCE_TASK ryd1_player_leave_seq TASK_GO_STRAIGHT_TO_COORD -1 2814.0415 -1181.3757 24.2701 PEDMOVE_RUN 6000 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_RUN TASK_ENTER_CAR_AS_DRIVER -1 ryd1_truck_car 5000 CLOSE_SEQUENCE_TASK ryd1_player_leave_seq PERFORM_SEQUENCE_TASK scplayer ryd1_player_leave_seq CLEAR_SEQUENCE_TASK ryd1_player_leave_seq OPEN_SEQUENCE_TASK ryd1_ryder_leave_seq TASK_GO_STRAIGHT_TO_COORD -1 2812.0908 -1186.1982 24.2658 PEDMOVE_RUN 6000 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_RUN TASK_ENTER_CAR_AS_PASSENGER -1 ryd1_truck_car 3000 0 CLOSE_SEQUENCE_TASK ryd1_ryder_leave_seq PERFORM_SEQUENCE_TASK ryd1_ryder_ped ryd1_ryder_leave_seq CLEAR_SEQUENCE_TASK ryd1_ryder_leave_seq ENDIF ENDIF ryd1_cop_task_assigned = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF BREAK CASE 3 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 46 //PRINT (RYD1_EA) 3000 1// CARL: You dumb bastard sherm head. //(RYD1_EA) ryd1_mobile = 4 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD ryd1_truck_car IF NOT IS_CHAR_IN_CAR scplayer ryd1_truck_car CLEAR_CHAR_TASKS scplayer WARP_CHAR_INTO_CAR scplayer ryd1_truck_car ENDIF ENDIF IF NOT IS_CHAR_DEAD ryd1_ryder_ped IF NOT IS_CAR_DEAD ryd1_truck_car IF NOT IS_CHAR_IN_CAR ryd1_ryder_ped ryd1_truck_car WARP_CHAR_INTO_CAR_AS_PASSENGER ryd1_ryder_ped ryd1_truck_car 0 ENDIF IF NOT IS_CHAR_IN_CAR scplayer ryd1_truck_car WARP_CHAR_INTO_CAR scplayer ryd1_truck_car ENDIF ENDIF ENDIF ryd1_text_loop_done = 1 ENDIF ENDIF BREAK ENDSWITCH GOTO ryder1_text_loop6 ///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// ENDIF /////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////// // end of cutscene //PRINT (RYD1_EB) 4000 1 //RYDER: What I do? You the one woke that crazy old bastard! //(RYD1_EB) //PRINT (RYD1_EC) 4000 1 //RYDER: We gotta lose this heat! //(RYD1_EC) //PRINT (RYD1_ED) 4000 1 //RYDER: There's a spray shop in Idlewood should be able to to take a van this big //(RYD1_ED) ryd1_track_playing = 0 PRINT (GUNS123) 10000 1 // "lose cops" ADD_SPRITE_BLIP_FOR_COORD 2067.4 -1831.2 13.5 RADAR_SPRITE_SPRAY ryd1_spray_blip ryd1_cops_attacking_flag = 1 ryd1_spray_blip_added_flag = 1 //ADD_BLIP_FOR_COORD 2741.00 -2006.00 14.00 ryd1_spray_blip//lock-up location IF NOT IS_WANTED_LEVEL_GREATER player1 1 ALTER_WANTED_LEVEL player1 2 ENDIF IF NOT IS_CHAR_DEAD ryd1_cop1_ped TASK_KILL_CHAR_ON_FOOT ryd1_cop1_ped scplayer ENDIF IF NOT IS_CHAR_DEAD ryd1_cop2_ped TASK_KILL_CHAR_ON_FOOT ryd1_cop2_ped scplayer ENDIF //////////////////////////////////////////////////////////////// ////////////////// IF PLAYER DID NOT WAKE THE OWNER //////////// //////////////////////////////////////////////////////////////// ELSE IF NOT IS_CAR_DEAD ryd1_truck_car CLOSE_ALL_CAR_DOORS ryd1_truck_car ENDIF GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 SET_FIXED_CAMERA_POSITION 2818.6704 -1182.2640 24.8706 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2817.7019 -1182.4490 25.0366 JUMP_CUT DO_FADE 1000 FADE_IN REQUEST_COLLISION 2814.0415 -1181.3757 LOAD_SCENE 2814.0415 -1181.3757 24.2701 WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD ryd1_truck_car AND NOT IS_CHAR_DEAD ryd1_ryder_ped OPEN_SEQUENCE_TASK ryd1_player_leave_seq TASK_GO_STRAIGHT_TO_COORD -1 2814.0415 -1181.3757 24.2701 PEDMOVE_WALK 6000 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_DRIVER -1 ryd1_truck_car 6000 CLOSE_SEQUENCE_TASK ryd1_player_leave_seq PERFORM_SEQUENCE_TASK scplayer ryd1_player_leave_seq CLEAR_SEQUENCE_TASK ryd1_player_leave_seq OPEN_SEQUENCE_TASK ryd1_ryder_leave_seq TASK_GO_STRAIGHT_TO_COORD -1 2812.0908 -1186.1982 24.2658 PEDMOVE_WALK 6000 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER -1 ryd1_truck_car 4000 0 CLOSE_SEQUENCE_TASK ryd1_ryder_leave_seq PERFORM_SEQUENCE_TASK ryd1_ryder_ped ryd1_ryder_leave_seq CLEAR_SEQUENCE_TASK ryd1_ryder_leave_seq ENDIF /////////// audio to go in here //////////////// //PRINT (RYD1_FA) 4000 1 //RYDER: Ok, now we're cooking with gas! //(RYD1_FA) //PRINT (RYD1_FB) 4000 1 //RYDER: LB's got a lock-up down in Seville Boulevard Families turf. //(RYD1_FB) //PRINT (RYD1_FC) 4000 1 // CARL: I'm on it! //(RYD1_FC) //$ryd1_text[50] = RYD1_FA//Ok, now we're cooking with gas! //$ryd1_text[51] = RYD1_FB//LB's got a lock-up down in Seville Boulevard Families turf. //$ryd1_text[52] = RYD1_FC//I'm on it! ryd1_track_playing = 1 TIMERB = 0 ryd1_safety_flag = 0 WHILE ryd1_safety_flag = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped AND NOT IS_CAR_DEAD ryd1_truck_car IF IS_CHAR_SITTING_IN_CAR ryd1_ryder_ped ryd1_truck_car AND IS_CHAR_SITTING_IN_CAR scplayer ryd1_truck_car ryd1_safety_flag = 1 ENDIF ELSE IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF GOTO mission_g1_failed ENDIF IF TIMERB > 10000 ryd1_safety_flag = 1 ENDIF WAIT 0 ENDWHILE // end of cutscene CLEAR_PRINTS PRINT (GUNS124) 10000 1 // "get home" ADD_BLIP_FOR_COORD 2742.0 -2008.0 13.0 ryd1_home_blip ryd1_home_blip_added_flag = 1 ENDIF IF NOT IS_CHAR_DEAD ryd1_ryder_ped IF NOT IS_CAR_DEAD ryd1_truck_car IF NOT IS_CHAR_IN_CAR ryd1_ryder_ped ryd1_truck_car WARP_CHAR_INTO_CAR_AS_PASSENGER ryd1_ryder_ped ryd1_truck_car 0 ENDIF IF NOT IS_CHAR_IN_CAR scplayer ryd1_truck_car WARP_CHAR_INTO_CAR scplayer ryd1_truck_car ENDIF ENDIF ENDIF RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF IF NOT IS_CHAR_DEAD ryd1_ryder_ped IF NOT IS_GROUP_MEMBER ryd1_ryder_ped Players_Group MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_Group ryd1_ryder_ped SET_GROUP_FOLLOW_STATUS Players_Group FALSE LISTEN_TO_PLAYER_GROUP_COMMANDS ryd1_ryder_ped FALSE ENDIF ENDIF SET_POLICE_IGNORE_PLAYER player1 OFF SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 // normally 1.0 ryd1_ryder_told_enter_car_flag = 0 ryd1_ryder_blip_added_flag = 0 ryd1_truck_blip_added_flag = 0 ryd1_audio_counter = 0 ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ryd1_audio_playing = 0 ryd1_text_loop_done = 0 ryd1_mobile = 0 ryd1_text_timer_diff = 0 ryd1_text_timer_end = 0 ryd1_text_timer_start = 0 ryd1_ahead_counter = 0 ryd1_mission_progression_flag = 8 ryd1_message_displayed = 0 ELSE /// player still inside the house IF NOT ryd1_audio_counter = 0 IF ryd1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 CLEAR_MISSION_AUDIO ryd1_audio_slot2 ENDIF ryd1_audio_playing = 1 ENDIF IF ryd1_audio_playing = 1 LOAD_MISSION_AUDIO ryd1_audio_slot1 ryd1_audio[ryd1_audio_counter] ryd1_audio_playing = 2 ENDIF IF ryd1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot1 PLAY_MISSION_AUDIO ryd1_audio_slot1 PRINT_NOW $ryd1_text[ryd1_audio_counter] 10000 1 ryd1_audio_playing = 3 ENDIF ENDIF IF ryd1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ryd1_audio_slot1 CLEAR_THIS_PRINT $ryd1_text[ryd1_audio_counter] IF ryd1_audio_slot1 = 1 ryd1_audio_slot1 = 2 ryd1_audio_slot2 = 1 ELSE ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ENDIF ryd1_audio_counter = 0 ryd1_audio_playing = 0 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD ryd1_ryder_ped AND ryd1_message_displayed < 3 IF NOT IS_MESSAGE_BEING_DISPLAYED IF ryd1_message_displayed = 0 IF ryd1_audio_playing = 0 START_CHAR_FACIAL_TALK scplayer 3000 ryd1_audio_counter = 38//PRINT (RYD1_DD) 3000 1//CARL: Oh Shit! //(RYD1_DD) ryd1_message_displayed = 1 ENDIF ELSE IF ryd1_message_displayed = 1 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_owner_ped START_CHAR_FACIAL_TALK ryd1_owner_ped 4000 STOP_CHAR_FACIAL_TALK scplayer ENDIF ryd1_audio_counter = 36//PRINT (RYD1_DB) 4000 1 // SMITH: Get off my ridge, you viet cong bastards!//(RYD1_DB) ryd1_message_displayed = 2 ENDIF ELSE IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 4000 ENDIF ryd1_audio_counter = 37//PRINT (RYD1_DC) 4000 1 //SMITH: This one's for Kenny! //(RYD1_DC) ryd1_message_displayed = 3 ENDIF ENDIF ENDIF ENDIF ELSE CLEAR_PRINTS PRINT (RYD1_44) 4000 1 // ~s~You're not going to be able to steal any more boxes, get back to the ~b~truck~s~. ENDIF IF ryd1_truck_blip_added_flag = 0 REMOVE_BLIP ryd1_truck_blip IF NOT IS_CAR_DEAD ryd1_truck_car ADD_BLIP_FOR_CAR ryd1_truck_car ryd1_truck_blip SET_BLIP_AS_FRIENDLY ryd1_truck_blip TRUE ryd1_truck_blip_added_flag = 1 ENDIF ENDIF ENDIF // area_visible = 0 ENDIF ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// IF ryd1_mission_progression_flag = 8 ///// AUDIO CODE TO GO HERE ///////////// IF NOT ryd1_audio_counter = 0 IF ryd1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 CLEAR_MISSION_AUDIO ryd1_audio_slot2 ENDIF ryd1_audio_playing = 1 ENDIF IF ryd1_audio_playing = 1 LOAD_MISSION_AUDIO ryd1_audio_slot1 ryd1_audio[ryd1_audio_counter] ryd1_audio_playing = 2 ENDIF IF ryd1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot1 PLAY_MISSION_AUDIO ryd1_audio_slot1 IF NOT ryd1_audio_counter = 76 PRINT_NOW $ryd1_text[ryd1_audio_counter] 10000 1 ENDIF ryd1_audio_playing = 3 ENDIF ENDIF IF ryd1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ryd1_audio_slot1 CLEAR_THIS_PRINT $ryd1_text[ryd1_audio_counter] IF ryd1_audio_slot1 = 1 ryd1_audio_slot1 = 2 ryd1_audio_slot2 = 1 ELSE ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ENDIF ryd1_audio_counter = 0 ryd1_audio_playing = 0 ENDIF ENDIF ENDIF /* ryd1_track_playing = 0 ryd1_flee_audio_counter = 0 ryd1_flee_audio_played = 0 ryd1_safe_audio_counter = 0 ryd1_safe_audio_played = 0 ryd1_lockup_audio_counter = 0 ryd1_lockup_audio_played = 0 ryd1_wanted_audio_counter = 0 ryd1_wanted_audio_played = 0 */ IF ryd1_track_playing = 0 // player fleeing house after waking owner // IF ryd1_flee_audio_played = 0 IF NOT IS_MESSAGE_BEING_DISPLAYED SWITCH ryd1_flee_audio_counter CASE 0 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryd1_ryder_ped TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF //ryd1_audio_counter = 46 //RYD1_EA//You dumb bastard sherm head. ryd1_flee_audio_counter = 1 GET_GAME_TIMER ryd1_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 47 //RYD1_EB//What I do? You the one woke that crazy old bastard! ryd1_flee_audio_counter = 2 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 48 //RYD1_EC//We gotta lose this heat! ryd1_flee_audio_counter = 3 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 3 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 49 //RYD1_ED//There's a spray shop in Idlewood should be able to take a van this big! ryd1_flee_audio_counter = 4 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryd1_ryder_ped FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF ryd1_flee_audio_played = 1 ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF ELSE IF ryd1_track_playing = 1 // player does not have wanted rating heading to lockup // IF ryd1_safe_audio_played = 0 IF NOT IS_MESSAGE_BEING_DISPLAYED SWITCH ryd1_safe_audio_counter CASE 0 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryd1_ryder_ped TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF ryd1_audio_counter = 50 //RYD1_FA//Ok, now we're cooking with gas! ryd1_safe_audio_counter = 1 GET_GAME_TIMER ryd1_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 51 //RYD1_FB//LB's got a lock-up down in Seville Boulevard Families turf. ryd1_safe_audio_counter = 2 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 52 //RYD1_FC//I'm on it! ryd1_safe_audio_counter = 3 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryd1_ryder_ped FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF ryd1_safe_audio_played = 1 ryd1_track_playing = 3 ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF ELSE IF ryd1_track_playing = 2 // player has regained a wanted level // IF ryd1_wanted_audio_played = 0 SWITCH ryd1_wanted_audio_counter CASE 0 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryd1_ryder_ped TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF ryd1_audio_counter = 64 //RYD1_HA//You blown it, CJ, with your crazy-assed driving! ryd1_wanted_audio_counter = 1 GET_GAME_TIMER ryd1_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 65 //RYD1_HB//Back to the Pay'n'Spray! ryd1_wanted_audio_counter = 2 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryd1_ryder_ped FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF ryd1_wanted_audio_played = 1 ENDIF ENDIF BREAK ENDSWITCH ENDIF ELSE IF ryd1_track_playing = 3 // while driving to the lockup // IF ryd1_lockup_audio_played = 0 IF NOT IS_MESSAGE_BEING_DISPLAYED SWITCH ryd1_lockup_audio_counter CASE 0 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryd1_ryder_ped TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF ryd1_audio_counter = 53 //RYD1_GA//Seriously, Ryder, you gotta give up the sherms! ryd1_lockup_audio_counter = 1 GET_GAME_TIMER ryd1_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 54 //RYD1_GB//Tell you what. I'll give up the water if you give being a buster! ryd1_lockup_audio_counter = 2 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 55 //RYD1_GC//Now hold it right there, homie... ryd1_lockup_audio_counter = 3 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 3 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 56 //RYD1_GD//Buster! ryd1_lockup_audio_counter = 4 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 4 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 57 //RYD1_GE//Forget it. ryd1_lockup_audio_counter = 5 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 5 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 58 //RYD1_GF//Forget you first! ryd1_lockup_audio_counter = 6 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 6 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 59 //RYD1_GG//One day you're gonna wish you hadn't pissed me off! ryd1_lockup_audio_counter = 7 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 7 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 60 //RYD1_GH//Can I hear something? ryd1_lockup_audio_counter = 8 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 8 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 61 //RYD1_GJ//Sounds like a buster complaining all the damn time! ryd1_lockup_audio_counter = 9 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 9 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 62 //RYD1_GK//This is childish. ryd1_lockup_audio_counter = 10 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 10 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 ryd1_audio_counter = 63 //RYD1_GL//I ain't talking to you no more. ryd1_lockup_audio_counter = 11 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryd1_ryder_ped FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF ryd1_lockup_audio_played = 1 ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF /////////////////////////////////////////// /////////////////////////////////////////// /////////////////////////////////////////// IF NOT IS_CHAR_DEAD ryd1_ryder_ped IF NOT IS_CAR_DEAD ryd1_truck_car IF NOT IS_CHAR_IN_CAR scplayer ryd1_truck_car ryd1_player_in_van_flag = 0 /// remove all the other blips /// IF ryd1_truck_blip_added_flag = 0 IF ryd1_home_blip_added_flag = 1 REMOVE_BLIP ryd1_home_blip ryd1_home_blip_added_flag = 0 ENDIF IF ryd1_spray_blip_added_flag = 1 REMOVE_BLIP ryd1_spray_blip ryd1_spray_blip_added_flag = 0 ENDIF IF ryd1_ryder_blip_added_flag = 1 REMOVE_BLIP ryd1_ryder_blip ryd1_ryder_blip_added_flag = 0 ENDIF /// add blip for the truck /// IF IS_MESSAGE_BEING_DISPLAYED ryd1_message_on_screen = 1 ENDIF CLEAR_PRINTS PRINT (GUNS128) 2000 1 //"You left the truck.." SET_PLAYER_GROUP_TO_FOLLOW_NEVER player1 True ADD_BLIP_FOR_CAR ryd1_truck_car ryd1_truck_blip SET_BLIP_AS_FRIENDLY ryd1_truck_blip TRUE ryd1_truck_blip_added_flag = 1 ryd1_audio_counter = 76 ryd1_audio_playing = 0 CLEAR_MISSION_AUDIO ryd1_audio_slot1 CLEAR_MISSION_AUDIO ryd1_audio_slot2 ryd1_track_playing = 99 ENDIF ELSE // player is in car ryd1_player_in_van_flag = 1 IF ryd1_truck_blip_added_flag = 1 SET_PLAYER_GROUP_TO_FOLLOW_NEVER player1 FALSE REMOVE_BLIP ryd1_truck_blip ryd1_track_playing = 3 ryd1_truck_blip_added_flag = 0 ELSE IF NOT IS_CHAR_IN_CAR ryd1_ryder_ped ryd1_truck_car ryd1_ryder_in_van_flag = 0 IF ryd1_ryder_blip_added_flag = 0 /// remove all the other blips /// IF ryd1_home_blip_added_flag = 1 REMOVE_BLIP ryd1_home_blip ryd1_home_blip_added_flag = 0 ENDIF IF ryd1_spray_blip_added_flag = 1 REMOVE_BLIP ryd1_spray_blip ryd1_spray_blip_added_flag = 0 ENDIF /// add blip for ryder /// IF IS_MESSAGE_BEING_DISPLAYED ryd1_message_on_screen = 1 ENDIF CLEAR_PRINTS PRINT (GUNS143) 2000 1 // "you've left Ryder behind.. ADD_BLIP_FOR_CHAR ryd1_ryder_ped ryd1_ryder_blip SET_BLIP_AS_FRIENDLY ryd1_ryder_blip TRUE ryd1_track_playing = 99 ryd1_ryder_blip_added_flag = 1 ENDIF IF ryd1_ryder_told_enter_car_flag = 0 TASK_ENTER_CAR_AS_PASSENGER ryd1_ryder_ped ryd1_truck_car -2 0 ryd1_ryder_told_enter_car_flag = 1 ELSE GET_SCRIPT_TASK_STATUS ryd1_ryder_ped TASK_ENTER_CAR_AS_PASSENGER ryd1_task_status IF NOT ryd1_task_status = WAITING_TO_START_TASK AND NOT ryd1_task_status = PERFORMING_TASK ryd1_ryder_told_enter_car_flag = 0 ENDIF ENDIF ELSE // Ryder with the player IF ryd1_ryder_blip_added_flag = 1 REMOVE_BLIP ryd1_ryder_blip ryd1_ryder_blip_added_flag = 0 ryd1_track_playing = 3 ENDIF //IF ryd1_track_playing > 2 //ENDIF ryd1_ryder_in_van_flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////// /// CHECK PLAYERS LOCATION AND WANTED LEVEL AND PASS MISSION IF NOT WANTED AND AT GANG HOUSE /// //////////////////////////////////////////////////////////////////////////////////////////////// IF ryd1_ryder_in_van_flag = 1 AND ryd1_player_in_van_flag = 1 /// location check IF ryd1_home_blip_added_flag = 1 IF LOCATE_CHAR_IN_CAR_3D scplayer 2742.0 -2008.0 13.0 15.0 15.0 4.0 FALSE CLEAR_PRINTS PRINT (RYD1_34) 3000 1//Park the truck inside the lockup. IF LOCATE_STOPPED_CHAR_IN_CAR_3D scplayer 2741.2412 -2011.2740 13.5869 2.9000 3.2000 5.0000 FALSE ////////////////////////////// /// START OF END CUT SCENE /// ////////////////////////////// SET_PLAYER_CONTROL player1 OFF CLEAR_PRINTS DO_FADE 1500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_AREA 2741.2412 -2011.2740 13.5869 10.0 TRUE SWITCH_WIDESCREEN ON // SET_DARKNESS_EFFECT FALSE -1 REMOVE_BLIP ryd1_home_blip CLEAR_PRINTS IF NOT IS_CHAR_DEAD ryd1_ryder_ped IF IS_GROUP_MEMBER ryd1_ryder_ped Players_Group REMOVE_CHAR_FROM_GROUP ryd1_ryder_ped ENDIF ENDIF LOAD_SCENE 2745.47 -2003.59 15.53 SET_FIXED_CAMERA_POSITION 2745.47 -2003.59 15.53 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2737.34 -2002.24 11.65 JUMP_CUT IF ryd1_clothes_changed = 1 //RESTORE_CLOTHES_STATE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 ryd1_clothes_changed = 0 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2741.0 -2007.14 13.0 ELSE SET_CHAR_COORDINATES scplayer 2741.0 -2008.14 13.0 ENDIF IF NOT IS_CHAR_DEAD ryd1_ryder_ped IF IS_CHAR_IN_ANY_CAR ryd1_ryder_ped WARP_CHAR_FROM_CAR_TO_COORD ryd1_ryder_ped 2740.0 -2008.14 13.0 ELSE SET_CHAR_COORDINATES ryd1_ryder_ped 2740.0 -2007.14 13.0 ENDIF ENDIF IF NOT IS_CAR_DEAD ryd1_truck_car DELETE_CAR ryd1_truck_car MARK_CAR_AS_NO_LONGER_NEEDED ryd1_truck_car ENDIF CLEAR_AREA 2741.0 -2005.0 14.14 50.0 TRUE /////// audio goes in here //////////// ryd1_audio_counter = 0 ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ryd1_audio_playing = 0 ryd1_text_loop_done = 0 ryd1_mobile = 0 ryd1_text_timer_diff = 0 ryd1_text_timer_end = 0 ryd1_text_timer_start = 0 ryd1_ahead_counter = 0 ryder1_text_loop7: WAIT 0 IF ryd1_text_loop_done = 0 IF NOT ryd1_audio_counter = 0 IF ryd1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 CLEAR_MISSION_AUDIO ryd1_audio_slot2 ENDIF ryd1_audio_playing = 1 ENDIF IF ryd1_audio_playing = 1 LOAD_MISSION_AUDIO ryd1_audio_slot1 ryd1_audio[ryd1_audio_counter] ryd1_audio_playing = 2 ENDIF IF ryd1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot1 PLAY_MISSION_AUDIO ryd1_audio_slot1 PRINT_NOW $ryd1_text[ryd1_audio_counter] 10000 1 ryd1_audio_playing = 3 ENDIF ENDIF IF ryd1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ryd1_audio_slot1 CLEAR_THIS_PRINT $ryd1_text[ryd1_audio_counter] IF ryd1_audio_slot1 = 1 ryd1_audio_slot1 = 2 ryd1_audio_slot2 = 1 ELSE ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ENDIF ryd1_audio_counter = 0 ryd1_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 IF ryd1_audio_counter < 76 ryd1_ahead_counter = ryd1_audio_counter + 1 LOAD_MISSION_AUDIO ryd1_audio_slot2 ryd1_audio[ryd1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH ryd1_mobile CASE 0 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 4000 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryd1_ryder_ped TRUE ENDIF ryd1_audio_counter = 66 // PRINT (RYD1_JA) 3000 1// RYDER: You see, simple! //(RYD1_JA) ryd1_mobile = 1 GET_GAME_TIMER ryd1_text_timer_start IF NOT IS_CHAR_DEAD ryd1_ryder_ped OPEN_SEQUENCE_TASK ryd1_player_leave_seq TASK_GO_STRAIGHT_TO_COORD -1 2741.0 -2005.0 14.14 PEDMOVE_WALK 6000 TASK_GO_STRAIGHT_TO_COORD -1 2741.0 -2001.0 14.14 PEDMOVE_WALK 6000 TASK_TURN_CHAR_TO_FACE_CHAR -1 ryd1_ryder_ped CLOSE_SEQUENCE_TASK ryd1_player_leave_seq PERFORM_SEQUENCE_TASK scplayer ryd1_player_leave_seq CLEAR_SEQUENCE_TASK ryd1_player_leave_seq OPEN_SEQUENCE_TASK ryd1_player_leave_seq TASK_GO_STRAIGHT_TO_COORD -1 2740.0 -2005.0 14.14 PEDMOVE_WALK 6000 TASK_GO_STRAIGHT_TO_COORD -1 2740.0 -2001.0 14.14 PEDMOVE_WALK 6000 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_PLAY_ANIM -1 IDLE_chat PED 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK ryd1_player_leave_seq PERFORM_SEQUENCE_TASK ryd1_ryder_ped ryd1_player_leave_seq CLEAR_SEQUENCE_TASK ryd1_player_leave_seq ENDIF DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF BREAK CASE 1 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK scplayer 4000 STOP_CHAR_FACIAL_TALK ryd1_ryder_ped ENDIF ryd1_audio_counter = 67 //PRINT (RYD1_JB) 3000 1// CARL: Yeah that was a real breeze. //(RYD1_JB) ryd1_safety_flag = 0 TIMERA = 0 ryd1_mobile = 2 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK ryd1_task_status IF ryd1_task_status = FINISHED_TASK OR TIMERA > 8000 CLOSE_GARAGE burg_lk WHILE NOT IS_GARAGE_CLOSED burg_lk WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 5000 STOP_CHAR_FACIAL_TALK scplayer ENDIF ryd1_audio_counter = 68 //PRINT (RYD1_KA) 5000 1//RYDER: CJ, you gotta get it into your head that this is every day shit. //(RYD1_KA) ryd1_mobile = 3 GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 CLEAR_CHAR_TASKS scplayer IF NOT IS_CHAR_DEAD ryd1_ryder_ped CLEAR_CHAR_TASKS ryd1_ryder_ped ENDIF ryd1_text_loop_done = 1 ENDIF ENDIF BREAK ENDSWITCH GOTO ryder1_text_loop7 ENDIF ////////////////////// end of audio //////////////////////// // camera cuts showing houses player can rob DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer 2161.0 -1664.0 22.0 SET_FIXED_CAMERA_POSITION 2168.1545 -1686.3741 15.6932 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2168.0940 -1685.3768 15.7351 JUMP_CUT REQUEST_COLLISION 2168.1545 -1686.3741 LOAD_SCENE 2168.1545 -1686.3741 15.6932 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_HELP PRINT_HELP_FOREVER (RYD1_88) // You can perform burglaries at night when not on a mission. WHILE NOT IS_HELP_MESSAGE_BEING_DISPLAYED WAIT 0 ENDWHILE TIMERA = 0 ryd1_safety_flag = 0 WHILE ryd1_safety_flag = 0 IF TIMERA > 4000 OR NOT IS_PLAYER_PLAYING player1 ryd1_safety_flag = 1 ENDIF WAIT 0 ENDWHILE CLEAR_HELP PRINT_HELP_FOREVER (RYD1_90) // Many houses can be broken into, and goods stolen from the owners. WHILE NOT IS_HELP_MESSAGE_BEING_DISPLAYED WAIT 0 ENDWHILE TIMERA = 0 ryd1_safety_flag = 0 WHILE ryd1_safety_flag = 0 IF TIMERA > 4000 OR NOT IS_PLAYER_PLAYING player1 ryd1_safety_flag = 1 ENDIF WAIT 0 ENDWHILE CLEAR_HELP DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer 2272.0 -1792.0 14.0 SET_FIXED_CAMERA_POSITION 2255.5391 -1783.7028 13.6049 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2254.8816 -1784.4452 13.7333 JUMP_CUT REQUEST_COLLISION 2254.2080 -1790.2325 LOAD_SCENE 2254.2080 -1790.2325 13.1057 /////////////////////////////// /// ADD A BRUGLARY_VAN_HERE /// /////////////////////////////// SWITCH_CAR_GENERATOR gen_car19 0 CLEAR_AREA 2251.0281 -1788.6610 12.7625 10.0 TRUE CREATE_CAR BOXBURG 2251.0281 -1788.6610 12.9625 ryd1_truck_car SET_CAR_HEADING ryd1_truck_car 358.9591 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PRINT_HELP_FOREVER (RYD1_89) // You need to get in this type of van to start the burglary. WHILE NOT IS_HELP_MESSAGE_BEING_DISPLAYED WAIT 0 ENDWHILE TIMERA = 0 ryd1_safety_flag = 0 WHILE ryd1_safety_flag = 0 IF TIMERA > 4000 OR NOT IS_PLAYER_PLAYING player1 ryd1_safety_flag = 1 ENDIF WAIT 0 ENDWHILE CLEAR_HELP PRINT_HELP_FOREVER (RYD1_91) // Load up the truck and then take it back to the lockup. WHILE NOT IS_HELP_MESSAGE_BEING_DISPLAYED WAIT 0 ENDWHILE TIMERA = 0 ryd1_safety_flag = 0 WHILE ryd1_safety_flag = 0 IF TIMERA > 4000 OR NOT IS_PLAYER_PLAYING player1 ryd1_safety_flag = 1 ENDIF WAIT 0 ENDWHILE CLEAR_HELP DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD ryd1_truck_car DELETE_CAR ryd1_truck_car MARK_CAR_AS_NO_LONGER_NEEDED ryd1_truck_car ENDIF SET_CHAR_COORDINATES scplayer 2741.0 -2001.0 12.5547 SET_CHAR_HEADING scplayer 80.0 SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 2745.47 -2003.59 15.53 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2737.34 -2002.24 11.65 JUMP_CUT REQUEST_COLLISION 2745.47 -2003.59 LOAD_SCENE 2745.47 -2003.59 15.53 IF NOT IS_CHAR_DEAD ryd1_ryder_ped SET_CHAR_COORDINATES ryd1_ryder_ped 2740.0 -2001.0 12.5547 SET_CHAR_HEADING ryd1_ryder_ped 230.0 TASK_TURN_CHAR_TO_FACE_CHAR scplayer ryd1_ryder_ped TASK_TURN_CHAR_TO_FACE_CHAR ryd1_ryder_ped scplayer ENDIF DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ///////////////////////// audio goes in here ///////////////////////// ryd1_audio_counter = 0 ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ryd1_audio_playing = 0 ryd1_text_loop_done = 0 ryd1_mobile = 0 ryd1_text_timer_diff = 0 ryd1_text_timer_end = 0 ryd1_text_timer_start = 0 ryd1_ahead_counter = 0 ryder1_text_loop8: WAIT 0 IF ryd1_text_loop_done = 0 IF NOT ryd1_audio_counter = 0 IF ryd1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 CLEAR_MISSION_AUDIO ryd1_audio_slot2 ENDIF ryd1_audio_playing = 1 ENDIF IF ryd1_audio_playing = 1 LOAD_MISSION_AUDIO ryd1_audio_slot1 ryd1_audio[ryd1_audio_counter] ryd1_audio_playing = 2 ENDIF IF ryd1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ryd1_audio_slot1 PLAY_MISSION_AUDIO ryd1_audio_slot1 PRINT_NOW $ryd1_text[ryd1_audio_counter] 10000 1 ryd1_audio_playing = 3 ENDIF ENDIF IF ryd1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ryd1_audio_slot1 CLEAR_THIS_PRINT $ryd1_text[ryd1_audio_counter] IF ryd1_audio_slot1 = 1 ryd1_audio_slot1 = 2 ryd1_audio_slot2 = 1 ELSE ryd1_audio_slot1 = 1 ryd1_audio_slot2 = 2 ENDIF ryd1_audio_counter = 0 ryd1_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED ryd1_audio_slot2 IF ryd1_audio_counter < 76 ryd1_ahead_counter = ryd1_audio_counter + 1 LOAD_MISSION_AUDIO ryd1_audio_slot2 ryd1_audio[ryd1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH ryd1_mobile CASE 0 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK scplayer 5000 STOP_CHAR_FACIAL_TALK ryd1_ryder_ped ENDIF TASK_PLAY_ANIM scplayer IDLE_chat PED 4.0 FALSE FALSE FALSE FALSE -1 ryd1_audio_counter = 74 // PRINT (RYD1_KG) 4000 1//CARL: Ok, look, I'm tired, I'll see you later. //(RYD1_KG) ryd1_mobile = 1 GET_GAME_TIMER ryd1_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped START_CHAR_FACIAL_TALK ryd1_ryder_ped 5000 STOP_CHAR_FACIAL_TALK scplayer CLEAR_CHAR_TASKS scplayer ENDIF ryd1_audio_counter = 75 //PRINT (RYD1_KH) 4000 1//RYDER: Whatever, holmes, think about what I said //(RYD1_KH) ryd1_mobile = 2 TIMERA = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped OPEN_SEQUENCE_TASK ryd1_player_leave_seq TASK_GO_STRAIGHT_TO_COORD -1 2761.0 -2002.0 14.0 PEDMOVE_WALK 10000 CLOSE_SEQUENCE_TASK ryd1_player_leave_seq PERFORM_SEQUENCE_TASK ryd1_ryder_ped ryd1_player_leave_seq CLEAR_SEQUENCE_TASK ryd1_player_leave_seq ENDIF GET_GAME_TIMER ryd1_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER ryd1_text_timer_end ryd1_text_timer_diff = ryd1_text_timer_end - ryd1_text_timer_start IF ryd1_text_timer_diff > 1000 IF ryd1_audio_playing = 0 IF NOT IS_CHAR_DEAD ryd1_ryder_ped STOP_CHAR_FACIAL_TALK ryd1_ryder_ped STOP_CHAR_FACIAL_TALK scplayer ENDIF ryd1_text_loop_done = 1 ENDIF ENDIF BREAK ENDSWITCH GOTO ryder1_text_loop8 ENDIF ryd1_safety_flag = 0 WHILE ryd1_safety_flag = 0 GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK ryd1_task_status IF ryd1_task_status = FINISHED_TASK OR TIMERA > 6000 ryd1_safety_flag = 1 ENDIF WAIT 0 ENDWHILE /////////////////////// end of audio ///////////////////////////// SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE GOTO mission_g1_passed ////////////////////////// ////////////////////////// ////////////////////////// ELSE LOCATE_CHAR_ANY_MEANS_3D scplayer 2741.0 -2010.0 13.5 4.0 4.0 5.0000 TRUE IF NOT IS_GARAGE_OPEN burg_lk OPEN_GARAGE burg_lk ENDIF ENDIF ELSE LOCATE_CHAR_ANY_MEANS_3D scplayer 2742.0 -2000.0 13.0 4.0 4.0 5.0000 TRUE IF NOT IS_GARAGE_CLOSED burg_lk CLOSE_GARAGE burg_lk ENDIF ENDIF ENDIF /// wanted level check IF IS_WANTED_LEVEL_GREATER player1 0 ryd1_safe_audio_played = 0 IF ryd1_owner_awake_flag = 1 IF LOCATE_CHAR_IN_CAR_2D scplayer 2067.4 -1831.2 15.0 15.0 FALSE // spray shop IF ryd1_cops_attacking_flag = 1 // scripted cops chasing player AND ryd1_player_in_spray_shop_flag = 0 IF NOT IS_CHAR_DEAD ryd1_cop1_ped AND NOT IS_CAR_DEAD ryd1_cop_car AND NOT IS_CAR_DEAD ryd1_truck_car SWITCH_CAR_SIREN ryd1_cop_car OFF TASK_CAR_MISSION ryd1_cop1_ped ryd1_cop_car ryd1_truck_car MISSION_EMERGENCYVEHICLE_STOP 20.0 DRIVINGMODE_STOPFORCARS ENDIF ryd1_player_in_spray_shop_flag = 1 ryd1_cops_attacking_flag = 0 ENDIF ELSE IF ryd1_player_in_spray_shop_flag = 1 AND ryd1_cops_attacking_flag = 0 IF NOT IS_CHAR_DEAD ryd1_cop1_ped AND NOT IS_CAR_DEAD ryd1_cop_car AND NOT IS_CAR_DEAD ryd1_truck_car SWITCH_CAR_SIREN ryd1_cop_car ON TASK_CAR_MISSION ryd1_cop1_ped ryd1_cop_car ryd1_truck_car MISSION_RAMPLAYER_CLOSE 33.0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ryd1_player_in_spray_shop_flag = 0 ryd1_cops_attacking_flag = 1 ENDIF ENDIF ENDIF //IF ryd1_owner_awake_flag = 1 IF ryd1_spray_blip_added_flag = 0 IF ryd1_home_blip_added_flag = 1 REMOVE_BLIP ryd1_home_blip CLEAR_PRINTS ryd1_track_playing = 2 //PRINT (RYD1_HA) 4000 1 //RYDER: You blown, CJ, with your crazy-assed driving! //PRINT (RYD1_HB) 4000 1 // ~n~Back to the Pay' n' Spray! //(RYD1_HA) //(RYD1_HB) ryd1_home_blip_added_flag = 0 ENDIF ADD_SPRITE_BLIP_FOR_COORD 2067.4 -1831.2 13.5 RADAR_SPRITE_SPRAY ryd1_spray_blip ryd1_spray_blip_added_flag = 1 CLEAR_PRINTS PRINT (GUNS123) 5000 1 // "lose cops" IF ryd1_spray_message_played = 1 ryd1_track_playing = 2 ryd1_spray_message_played = 0 ENDIF ENDIF ELSE //IS_WANTED_LEVEL_GREATER player1 0 ////////////////////////////////////////////// ////////////////////////////////////////////// ////////////////////////////////////////////// ryd1_wanted_audio_played = 0 IF ryd1_message_on_screen = 1 IF ryd1_message_displayed < 11 PRINT (GUNS135) 4000 1 //As I was saying.... ryd1_message_displayed-- IF ryd1_message_displayed < 0 ryd1_message_displayed = 0 ENDIF ryd1_message_on_screen = 0 ENDIF ENDIF /////////////////////////////////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// IF ryd1_home_blip_added_flag = 0 IF ryd1_spray_blip_added_flag = 1 REMOVE_BLIP ryd1_spray_blip ryd1_spray_blip_added_flag = 0 ENDIF CLEAR_PRINTS IF LOCATE_CHAR_IN_CAR_2D scplayer 2067.4 -1831.2 15.0 15.0 FALSE // spray shop WAIT 3000 PRINT (GUNS124) 5000 1 // "get home" ELSE PRINT (GUNS124) 5000 1 // "get home" ENDIF IF ryd1_spray_message_played = 0 IF ryd1_owner_awake_flag = 1 ryd1_track_playing = 1 ENDIF ELSE ryd1_track_playing = 3 ENDIF ADD_BLIP_FOR_COORD 2742.0 -2008.0 13.0 ryd1_home_blip ryd1_home_blip_added_flag = 1 ENDIF IF ryd1_cops_attacking_flag = 1 // scripted cops chasing player AND ryd1_player_in_spray_shop_flag = 0 IF NOT IS_CHAR_DEAD ryd1_cop1_ped AND NOT IS_CAR_DEAD ryd1_cop_car AND NOT IS_CAR_DEAD ryd1_truck_car SWITCH_CAR_SIREN ryd1_cop_car OFF TASK_CAR_MISSION ryd1_cop1_ped ryd1_cop_car ryd1_truck_car MISSION_CRUISE 20.0 DRIVINGMODE_AVOIDCARS ryd1_cops_attacking_flag = 0 ENDIF ENDIF ENDIF //IF IS_WANTED_LEVEL_GREATER player1 0 ENDIF //AND ryd1_ryder_in_van_flag = 1 ENDIF //IF ryd1_mission_progression_flag = 8 ///////////////////////////////////////////// /// FUDGE TO STOP PEDS GENERATED IN HOUSE /// ///////////////////////////////////////////// /* GET_AREA_VISIBLE ryd1_area_name IF ryd1_area_name = 0 IF ryd1_inside_house_flag = 1 IF NOT IS_CAR_DEAD ryd1_cop_car FREEZE_CAR_POSITION ryd1_cop_car FALSE ENDIF SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 // normally 1.0 ryd1_inside_house_flag = 0 ENDIF ELSE IF ryd1_area_name = 8 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2809.0 -1169.0 26.0 30.0 30.0 30.0 FALSE IF ryd1_inside_house_flag = 0 IF NOT IS_CAR_DEAD ryd1_cop_car FREEZE_CAR_POSITION ryd1_cop_car TRUE ENDIF SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 // normally 1.0 CLEAR_AREA 2819.9 -1181.7 25.15 50.0 TRUE ryd1_inside_house_flag = 1 ENDIF ENDIF ENDIF ENDIF */ /////////////////////////////////////////////// /////////////////////////////////////////////// //VIEW_INTEGER_VARIABLE ryd1_boxes_left boxes_left GOTO ryder1_main_loop ///////////////////////// //// EXTRA FUNCTIONS //// ///////////////////////// ryder1_leaving_house_cut_scene: RETURN // **************************** MISSION FAILED *********************** mission_g1_failed: PRINT_BIG M_FAIL 5000 1 //GOTO mission_cleanup_g1 RETURN // ***************************** MISSION PASSED ********************** // mission pp1 passed mission_g1_passed: //flag_pp1_mission1_passed = 1 ryd1_reward = ryd1_number_gunbox_truck * 50 //PRINT_WITH_NUMBER_BIG M_PASS ryd1_reward 5000 1 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 3 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 3//amount of respect SET_POLICE_IGNORE_PLAYER player1 OFF //ADD_SCORE player1 ryd1_reward CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 PLAYER_MADE_PROGRESS 1 REGISTER_MISSION_PASSED ( RYDER_1 ) flag_ryder_mission_counter ++ // GOTO mission_cleanup_g1 RETURN // **************************************** start MISSION CLEANUP ********************************* mission_cleanup_g1: flag_player_on_mission = 0 disable_mod_garage = 0 GET_GAME_TIMER timer_mobile_start SWITCH_CAR_GENERATOR gen_car19 101 SET_RADAR_ZOOM 0 IF IS_PLAYER_PLAYING player1 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF SET_POLICE_IGNORE_PLAYER player1 OFF SWITCH_ENTRY_EXIT burhous TRUE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE ///////////////////// /// REMOVE BLIPS /// //////////////////// REMOVE_BLIP ryd1_ryder_blip REMOVE_BLIP ryd1_house_blip REMOVE_BLIP ryd1_truck_blip REMOVE_BLIP ryd1_door_blip REMOVE_BLIP ryd1_spray_blip REMOVE_BLIP ryd1_home_blip REMOVE_BLIP ryd1_gunbox_blip[0] REMOVE_BLIP ryd1_gunbox_blip[1] REMOVE_BLIP ryd1_gunbox_blip[2] REMOVE_BLIP ryd1_gunbox_blip[3] REMOVE_BLIP ryd1_gunbox_blip[4] REMOVE_BLIP ryd1_gunbox_blip[5] REMOVE_BLIP ryd1_gunbox_blip[6] //ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2067.4 -1831.2 13.5 RADAR_SPRITE_SPRAY spray_shop1 //////////////////// /// REMOVE_GROUP /// //////////////////// ////////////////////////////// /// CLEAR_ONSCREEN_COUNTER /// ////////////////////////////// CLEAR_ONSCREEN_COUNTER ryd1_noise_bar DISPLAY_HUD TRUE ////////////////////////////// /// CLEAR_ONSCREEN_TIMER /// ////////////////////////////// CLEAR_ONSCREEN_TIMER ryd1_time_to_daylight /////////////////////////////////////// /// MARK MODELS AS NO LONGER NEEDED /// /////////////////////////////////////// MARK_MODEL_AS_NO_LONGER_NEEDED BOXBURG MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_MODEL_AS_NO_LONGER_NEEDED wmopj MARK_MODEL_AS_NO_LONGER_NEEDED LAPD1 MARK_MODEL_AS_NO_LONGER_NEEDED COPCARLA MARK_MODEL_AS_NO_LONGER_NEEDED db_ammo REMOVE_ANIMATION CARRY REMOVE_ANIMATION GANGS REMOVE_ANIMATION POLICE REMOVE_ANIMATION INT_HOUSE REMOVE_ANIMATION ON_LOOKERS REMOVE_ANIMATION CAR_CHAT REMOVE_CHAR_ELEGANTLY ryd1_ryder_ped MARK_CHAR_AS_NO_LONGER_NEEDED ryd1_owner_ped MARK_CHAR_AS_NO_LONGER_NEEDED ryd1_cop1_ped MARK_CHAR_AS_NO_LONGER_NEEDED ryd1_cop2_ped MARK_CAR_AS_NO_LONGER_NEEDED ryd1_cop_car MARK_CAR_AS_NO_LONGER_NEEDED ryd1_truck_car MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[0] MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[1] MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[2] MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[3] MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[4] MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[5] MARK_OBJECT_AS_NO_LONGER_NEEDED ryd1_gunbox_obj[6] IF NOT IS_CHAR_DEAD ryd1_owner_ped SET_CHAR_DECISION_MAKER ryd1_owner_ped ryd1_decision3 SET_CHAR_RELATIONSHIP ryd1_owner_ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 //SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 ENDIF UNLOAD_SPECIAL_CHARACTER 1 REMOVE_DECISION_MAKER ryd1_decision REMOVE_DECISION_MAKER ryd1_decision2 REMOVE_DECISION_MAKER ryd1_decision3 REMOVE_DECISION_MAKER ryd1_group_decision //REMOVE_DECISION_MAKER //REMOVE_THREAT_LIST threat_buddy_g1 //SWITCH_PED_ROADS_ON 2775.0 -1196.40 20.0 2840.0 -1141.0 35.0 //SWITCH_ROADS_BACK_TO_ORIGINAL SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2775.0 -1196.40 20.0 2840.0 -1141.0 35.0 // CLEAR_ALL_VIEW_VARIABLES MISSION_HAS_FINISHED RETURN } ////////////////////////////////////////// ////////////////// TEXT LABELS /////////// ////////////////////////////////////////// /* PRINT (GUNS1_5) 3000 1 //Noise Gauge PRINT (GUNS1_6) 3000 1 //SMITH: ZZZZZZzzzzZZ PRINT (GUNS1_7) 3000 1 //SMITH: I'm sure I heard a noise.... PRINT (GUNS111) 3000 1 //SMITH: I heard you for sure that time, I'm phoning the cops! PRINT (GUNS117) 3000 1 //Ryder: Ok, seems like you got everything. Now lets get out of here! PRINT (GUNS120) 3000 1 //~t~ = Break Open Door. PRINT (GUNS121) 3000 1 //Ryder: Quit playing, fool. PRINT (GUNS122) 3000 1 //~r~The truck has been destroyed! PRINT (GUNS123) 3000 1 //~s~You got too much heat on you. Lose the cops. PRINT (GUNS124) 3000 1 //~s~Get safely back to the ~y~lockup~s~. PRINT (GUNS125) 3000 1 //~r~Ryder's dead! PRINT (GUNS128) 3000 1 //~s~You left the ~b~truck~s~! Get back to it! PRINT (GUNS129) 3000 1 //Ryder: Ok, you gotta go through that door. PRINT (GUNS130) 3000 1 //~s~Park the truck near the ~y~house~s~. PRINT (GUNS134) 3000 1 // ~s~You're making too much noise, you have to sneak! PRINT (GUNS135) 3000 1 //RYDER: As I was saying.... PRINT (GUNS136) 3000 1 //RYDER: Ok, we need 3 more crates PRINT (GUNS137) 3000 1 //RYDER: Faster man, this snooping around is giving me the willies. PRINT (GUNS138) 3000 1 //RYDER:We need one more bro, then we're out of here. PRINT (GUNS143) 3000 1 //~s~You've left ~b~Ryder~s~ behind go and get him. PRINT (GUNS146) 3000 1 //~s~Take the guns back to the ~y~truck~s~. PRINT (GUNS147) 3000 1 //~s~Go and fetch another box. PRINT (RYD1_18) 3000 1 //SMITH: Gooks! PRINT (RYD1_19) 3000 1 //RYDER: Jesus Christ! Can't stop me! PRINT (RYD1_20) 3000 1 // SMITH: Get off my ridge, you viet cong bastards! PRINT (RYD1_21) 3000 1 //CARL: Let's get outta here. PRINT (RYD1_22) 3000 1 //RYDER: I'll fight him. PRINT (RYD1_30) 3000 1 //Walk over to the truck to drop the item. PRINT (RYD1_32) 3000 1 //~r~There aren't enough guns left to fill the truck! PRINT (RYD1_34) 3000 1 //~s~Park the truck inside the ~y~lockup~s~. PRINT (RYD1_35) 3000 1 //~r~ You've waited too long to get to the house, it's no longer night time! PRINT (RYD1_36) 3000 1 //SMITH: Morning already.. wait a minute something doesn't feel right here! PRINT (RYD1_37) 3000 1 //SMITH: This one's for Kenny!? PRINT (RYD1_39) 3000 1 //Enther the ~y~house~s~. PRINT (RYD1_40) 3000 1 //Find a crate. PRINT (RYD1_41) 3000 1 //DAYLIGHT: PRINT (RYD1_42) 3000 1 //~r~You took too long to get the guns, it's no longer night time! PRINT (RYD1_43) 3000 1 //~r~You're not going to be able to get the guns now that he's awake! */ MISSION_START // ***************************************************************************************** // ************************** GUN MISSION 2: 'Ammo Train/Truck' **************************** // ***************************************************************************************** // *** Player has got a tip off about a train load of weaponry that has stopped. The Same*** // *** tip off has been giving to every gang in LA. Huge Gun fight with enemy gang, *** // *** Mexicans and Players gang. Player has to hold the train long enough so his homies*** // *** can grab enough weapons. *** // ***************************************************************************************** // Mission start stuff SCRIPT_NAME ryder3 GOSUB mission_ryder3_start IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_ryder3_failed ENDIF GOSUB mission_ryder3_cleanup MISSION_END // ****************************************Mission Start************************************ { LVAR_INT mission_blip sequence_task v LVAR_INT r3_car_paused r3_left_car r3_get_back r3_get_onto_train r3_crates_0 r3_crates_1 r3_crates_2 LVAR_FLOAT x2 y2 z2 x3 y3 z3 h LVAR_INT r3_peekright r3_peekleft LVAR_INT r3_m3_blip[8] r3_ammo_crate[5] LVAR_INT r3_seq_tunnel_1 r3_seq_tunnel_2 f4_train_rear_blip r3_failed LVAR_INT r3_catching_blip r3_grove_blip r3_tough LVAR_INT r3_played_anim r3_caboose r3_van_seq r3_cower LVAR_INT r3_crate_w r3_crate_x r3_crate_y r3_crate_z r3_crate_v r3_crate_cnt LVAR_INT r3_start_text r3_wait LVAR_INT r3_time_left r3_inside_zone LVAR_INT r3_converse_good r3_converse_good_1 VAR_INT r3_rnd LVAR_INT r3_mission_flag ryders_goon3 LVAR_INT r3_crate_a r3_crate_b r3_crate_c r3_crate_d LVAR_INT r3_playing LVAR_INT r3_audio LVAR_INT r3_upsidedown LVAR_INT r3_sprayed LVAR_INT r3_ryders_car_blip LVAR_INT r3_fx LVAR_INT r3_switch LVAR_INT r3_spawn_train LVAR_INT r3_car_been_sprayed LVAR_INT r3_back_to_grove LVAR_INT r3_empty LVAR_TEXT_LABEL r3_print mission_ryder3_start: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 r3_mission_flag = 0 r3_rnd = 0 r3_playing = 2 r3_spawn_train = 0 // -- Timer Stuff For Player Movement VAR_FLOAT ryder3_elapsed_time VAR_INT ryder3_last_time VAR_INT ryder3_current_time LVAR_FLOAT ftemp_ryder3_current_time ftemp_ryder3_last_time LVAR_INT ryder3_temp_int // ***************************************************************************************** LOAD_MISSION_TEXT ryder3 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH r3_tough LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY r3_empty SET_CAR_DENSITY_MULTIPLIER 0.5 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 2 LOAD_CUTSCENE RYDER3A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_FADING_COLOUR 0 0 0 DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE CLEAR_PRINTS SWITCH_WIDESCREEN OFF SET_AREA_VISIBLE 0 SWITCH_CAR_GENERATOR gen_car6 0 REQUEST_MODEL picador REQUEST_MODEL MICRO_UZI REQUEST_MODEL COLT45 REQUEST_MODEL CR_GUNCRATE REQUEST_MODEL CR_AMMOBOX REQUEST_MODEL FAM1 REQUEST_ANIMATION BOX REQUEST_ANIMATION RYDER REQUEST_ANIMATION SWAT REQUEST_MODEL LSV1 REQUEST_MODEL LSV2 REQUEST_MODEL LSV3 REQUEST_MODEL FREIGHT REQUEST_MODEL FREIFLAT REQUEST_MODEL GREENWOO REQUEST_MODEL FAM1 REQUEST_MODEL FAM2 LOAD_SPECIAL_CHARACTER 1 ryder2 LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED picador OR NOT HAS_MODEL_LOADED MICRO_UZI OR NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED CR_GUNCRATE OR NOT HAS_MODEL_LOADED CR_AMMOBOX WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED FAM1 OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_ANIMATION_LOADED BOX OR NOT HAS_ANIMATION_LOADED RYDER WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED LSV1 OR NOT HAS_MODEL_LOADED LSV2 OR NOT HAS_MODEL_LOADED LSV3 OR NOT HAS_MODEL_LOADED FREIGHT OR NOT HAS_MODEL_LOADED FREIFLAT WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED GREENWOO OR NOT HAS_MODEL_LOADED FAM1 OR NOT HAS_MODEL_LOADED FAM2 OR NOT HAS_ANIMATION_LOADED SWAT WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD scplayer GOSUB r3_set_camera SET_PLAYER_CONTROL player1 OFF OPEN_SEQUENCE_TASK r3_peekright TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_R SWAT 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_in_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer 2000 TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_out_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_R_back SWAT 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT r3_peekright 1 CLOSE_SEQUENCE_TASK r3_peekright OPEN_SEQUENCE_TASK r3_peekleft TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_L SWAT 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_in_L SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer 2000 TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_out_L SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_L_back SWAT 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT r3_peekleft 1 CLOSE_SEQUENCE_TASK r3_peekleft OPEN_SEQUENCE_TASK r3_cower TASK_PLAY_ANIM -1 cower PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PAUSE -1 2000 CLOSE_SEQUENCE_TASK r3_cower OPEN_SEQUENCE_TASK r3_van_seq TASK_PLAY_ANIM -1 RYD_Beckon_01 RYDER 1.0 FALSE FALSE FALSE FALSE -1 TASK_PAUSE -1 20000 SET_SEQUENCE_TO_REPEAT r3_van_seq 1 CLOSE_SEQUENCE_TASK r3_van_seq OPEN_SEQUENCE_TASK r3_get_onto_train TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_GO_TO_COORD_ANY_MEANS -1 2290.5840 -1142.4111 25.7144 PEDMOVE_RUN -1 TASK_GO_TO_COORD_ANY_MEANS -1 2288.5393 -1133.7534 25.7076 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 253.8300 TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK r3_get_onto_train OPEN_SEQUENCE_TASK r3_seq_tunnel_1 TASK_GO_TO_COORD_ANY_MEANS -1 2289.0916 -1117.0493 25.9062 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK r3_seq_tunnel_1 OPEN_SEQUENCE_TASK r3_seq_tunnel_2 TASK_GO_TO_COORD_ANY_MEANS -1 2285.1099 -1117.1169 25.9062 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK r3_seq_tunnel_2 CLEAR_AREA 2477.1350 -1683.1158 12.3782 10.0 TRUE CLEAR_AREA 2469.2244 -1672.4965 12.4840 10.0 TRUE CLEAR_AREA 2472.7832 -1685.6962 12.5153 0.5 0 LOAD_SCENE 2472.7832 -1685.6962 12.5153 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer 2472.7832 -1685.6962 12.5153 SET_CHAR_HEADING scplayer 336.6331 SET_CAMERA_BEHIND_PLAYER ENDIF LVAR_INT ryders_car SET_CAR_MODEL_COMPONENTS picador 4 4 CUSTOM_PLATE_FOR_NEXT_CAR picador &_SHERM__ CREATE_CAR picador 2476.0354 -1678.3788 12.3457 ryders_car SET_CAN_BURST_CAR_TYRES ryders_car FALSE SET_CAR_HEADING ryders_car 43.9007 SET_CAR_HEALTH ryders_car 2000 ADD_BLIP_FOR_CAR ryders_car r3_ryders_car_blip SET_BLIP_AS_FRIENDLY r3_ryders_car_blip TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER ryders_car TRUE CHANGE_CAR_COLOUR ryders_car 84 84 SET_CAR_CRUISE_SPEED ryders_car 5.0 CHANGE_BLIP_DISPLAY r3_ryders_car_blip NEITHER SET_CAR_STRAIGHT_LINE_DISTANCE ryders_car 250 CREATE_CHAR_AS_PASSENGER ryders_car PEDTYPE_MISSION1 SPECIAL01 0 ryder SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR ryder FALSE UNLOAD_SPECIAL_CHARACTER 1 SET_CHAR_HEADING ryder 121.9883 TASK_STAY_IN_SAME_PLACE ryder TRUE SET_CHAR_HEALTH ryder 800 SET_CHAR_MAX_HEALTH ryder 800 SET_CHAR_SUFFERS_CRITICAL_HITS ryder FALSE SET_CHAR_NEVER_TARGETTED ryder TRUE GIVE_WEAPON_TO_CHAR ryder WEAPONTYPE_MICRO_UZI 9999 SET_CHAR_CANT_BE_DRAGGED_OUT ryder TRUE SET_ANIM_GROUP_FOR_CHAR ryder gang1 SET_CHAR_RELATIONSHIP ryder ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER ryder r3_tough SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 PEDTYPE_MISSION1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION2 PEDTYPE_MISSION2 LVAR_INT gun_index new_guns[10] r3_grove_car r3_lsv_car gun_index = 0 WHILE gun_index < 10 new_guns[gun_index] = -1 gun_index++ ENDWHILE gun_index = 0 VAR_INT collected_guns collected_guns = 0 VAR_INT r3_total_guns r3_total_guns = 10 LVAR_INT goons_flag goons_flag = 0 LVAR_INT stored_check_index stored_check_index = -1 LVAR_INT power_bar_increment LVAR_FLOAT power_bar_increment_f power_bar_increment = 5 IF flag_player_on_mission = 0 CREATE_OBJECT_NO_OFFSET GUNBOX x y z new_guns[gun_index] ENDIF r3_mission_flag = 0 SWITCH_ROADS_OFF 2284.0 -1151.0 10.0 2288.0 -1147.0 30.0 SWITCH_ROADS_OFF 2287.3213 -1132.5714 10.0000 2360.8386 -1177.1337 40.0000 SWITCH_ROADS_OFF 2311.6763 -1375.3975 10.0000 2292.3650 -1303.1021 40.0000 SWITCH_ROADS_OFF 2268.6953 -1138.5408 10.0000 2282.3616 -1159.6042 40.0000 SWITCH_ROADS_OFF 2307.5366 -1162.6240 10.0000 2266.3511 -1136.9897 40.0000 //SWITCH_PED_ROADS_OFF 2311.6538 -1165.1200 10.0000 2255.6228 -1134.2437 40.0000 //SWITCH_PED_ROADS_OFF 2284.0 -1151.0 10.0 2288.0 -1147.0 40.0 //SWITCH_PED_ROADS_OFF 2287.3213 -1132.5714 10.0000 2360.8386 -1177.1337 40.0000 SWITCH_RANDOM_TRAINS OFF SET_CREATE_RANDOM_GANG_MEMBERS FALSE LVAR_INT failed_mission failed_mission = 0 LVAR_INT box_collisions box_collisions = 0 LVAR_INT crate_model crate_model = CR_GUNCRATE TIMERA = 0 SET_WANTED_MULTIPLIER 0.0 ENDIF LVAR_INT r3_crt_0 CREATE_OBJECT_NO_OFFSET tmp_bin 2295.3909 -1129.8121 26.4000 r3_crt_0 SET_OBJECT_HEADING r3_crt_0 187.2863 mission_ryder3_loop:///////////////////////////////////////////////////////////////////////////// IF NOT IS_CHAR_DEAD scplayer TASK_ENTER_CAR_AS_DRIVER scplayer ryders_car 5000 ENDIF SET_FIXED_CAMERA_POSITION 2473.6416 -1674.0046 13.6679 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2473.8325 -1674.9689 13.4843 JUMP_CUT GOSUB r3_fade_in PRINT_NOW ( RYD3_Z ) 6000 1 // ~s~Drive ~b~Ryder's Truck ~s~to the ~y~ammo train~s~. TIMERB = 0 WHILE TIMERB < 4000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO r3_skip_the_cut_initial ENDIF ENDWHILE r3_skip_the_cut_initial: GOSUB r3_restore_camera WHILE NOT IS_CHAR_DEAD scplayer WAIT 0 GOSUB ryder3_keys GOSUB r3_play_sample IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S GOTO mission_ryder3_passed ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2290.6499 -1148.7227 25.7508 275.0 275.0 200.0 FALSE SET_CAR_DENSITY_MULTIPLIER 0.0 ELSE IF r3_mission_flag < 10 SET_CAR_DENSITY_MULTIPLIER 1.0 ENDIF ENDIF // ********************************************************************************************** // * * // * Spawn that train * // * * // ********************************************************************************************** IF r3_spawn_train = 0 IF HAS_MODEL_LOADED FREIGHT AND HAS_MODEL_LOADED FREIFLAT LVAR_INT ammo_train CREATE_MISSION_TRAIN 10 2278.1770 -1144.8823 27.5107 1 ammo_train LOCK_CAR_DOORS ammo_train CARLOCK_LOCKED SET_TRAIN_SPEED ammo_train 0.0 SET_TRAIN_CRUISE_SPEED ammo_train 0.0 FREEZE_CAR_POSITION ammo_train TRUE GET_TRAIN_CABOOSE ammo_train ammo_train_rear CREATE_OBJECT ammotrn_obj 2278.1770 -1144.8823 27.5107 r3_caboose ATTACH_OBJECT_TO_CAR r3_caboose ammo_train_rear 0.0 0.0 0.0 0.0 0.0 0.0 CREATE_OBJECT CR_GUNCRATE 2278.1770 -1144.8823 27.5107 r3_crate_a ATTACH_OBJECT_TO_CAR r3_crate_a ammo_train_rear 0.5 -5.5 -0.8 0.0 0.0 145.0 CREATE_OBJECT CR_GUNCRATE 2278.1770 -1144.8823 27.5107 r3_crate_b ATTACH_OBJECT_TO_CAR r3_crate_b ammo_train_rear 0.5 6.0 -0.8 0.0 0.0 60.0 CREATE_OBJECT CR_GUNCRATE 2278.1770 -1144.8823 27.5107 r3_crate_c ATTACH_OBJECT_TO_CAR r3_crate_c ammo_train_rear -0.5 8.0 -0.8 0.0 0.0 130.0 CREATE_OBJECT CR_GUNCRATE 2287.7437 -1131.7500 25.7431 r3_ammo_crate[0] SET_OBJECT_HEADING r3_ammo_crate[0] 85.7739 CREATE_OBJECT CR_GUNCRATE 2287.3584 -1131.0911 25.7449 r3_ammo_crate[1] SET_OBJECT_HEADING r3_ammo_crate[1] 209.4727 CREATE_OBJECT CR_GUNCRATE 2287.6646 -1127.0555 25.8118 r3_ammo_crate[2] SET_OBJECT_HEADING r3_ammo_crate[2] 97.4572 CREATE_OBJECT CR_GUNCRATE 2287.4309 -1125.5863 25.8256 r3_ammo_crate[3] SET_OBJECT_HEADING r3_ammo_crate[3] 176.9109 r3_spawn_train = 1 // ---------------------------------------------------------------------------------------------- SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_MISSION2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 PEDTYPE_MISSION1 LVAR_INT r3_enemy[6] r3_enemy_inv[6] r3_dead_grove r3_dead_lsv //Enemy crouching CREATE_CHAR PEDTYPE_CIVMALE FAM2 2291.9690 -1131.6296 25.7468 r3_dead_grove SET_CHAR_HEADING r3_dead_grove 188.6236 TASK_PLAY_ANIM_NON_INTERRUPTABLE r3_dead_grove KO_shot_front PED 2.0 FALSE FALSE FALSE TRUE -1 SET_CHAR_COLLISION r3_dead_grove FALSE SET_CHAR_NEVER_TARGETTED r3_dead_grove TRUE SET_CHAR_DECISION_MAKER r3_dead_grove r3_empty //Enemy crouching CREATE_CHAR PEDTYPE_CIVMALE LSV1 2290.6602 -1146.0228 25.7507 r3_dead_lsv SET_CHAR_HEADING r3_dead_lsv 180.7254 TASK_PLAY_ANIM_NON_INTERRUPTABLE r3_dead_lsv KO_shot_front PED 2.0 FALSE FALSE FALSE TRUE -1 SET_CHAR_COLLISION r3_dead_lsv FALSE SET_CHAR_NEVER_TARGETTED r3_dead_lsv TRUE SET_CHAR_DECISION_MAKER r3_dead_lsv r3_empty // ---------------------------------------------------------------------------------------------- //Enemy crouching CREATE_CHAR PEDTYPE_MISSION2 LSV1 2295.6833 -1128.6821 25.8647 r3_enemy[0] SET_CHAR_HEADING r3_enemy[0] 175.3117 TASK_STAY_IN_SAME_PLACE r3_enemy[0] TRUE SET_CHAR_IS_TARGET_PRIORITY r3_enemy[0] TRUE //Enemy standing CREATE_CHAR PEDTYPE_MISSION2 LSV2 2289.1404 -1131.1329 25.7539 r3_enemy[1] SET_CHAR_HEADING r3_enemy[1] 190.0070 TASK_STAY_IN_SAME_PLACE r3_enemy[1] TRUE SET_CHAR_IS_TARGET_PRIORITY r3_enemy[1] TRUE //Enemy standing CREATE_CHAR PEDTYPE_MISSION2 LSV2 2293.7415 -1130.3425 25.8004 r3_enemy[2] SET_CHAR_HEADING r3_enemy[2] 178.0093 TASK_TOGGLE_DUCK r3_enemy[2] TRUE TASK_STAY_IN_SAME_PLACE r3_enemy[2] TRUE SET_CHAR_IS_TARGET_PRIORITY r3_enemy[2] TRUE //Enemy on the train CREATE_CHAR PEDTYPE_MISSION2 LSV3 2285.5225 -1135.3694 28.0000 r3_enemy[3] SET_CHAR_HEADING r3_enemy[3] 202.6963 SET_CHAR_ONLY_DAMAGED_BY_PLAYER r3_enemy[3] TRUE TASK_STAY_IN_SAME_PLACE r3_enemy[3] TRUE SET_CHAR_IS_TARGET_PRIORITY r3_enemy[3] TRUE // ---------------------------------------------------------------------------------------------- LVAR_INT r3_goon[4] //First guy Crouching CREATE_CHAR PEDTYPE_MISSION1 FAM1 2296.2817 -1158.1842 25.6529 r3_goon[0] SET_CHAR_HEADING r3_goon[0] 9.0020 TASK_TOGGLE_DUCK r3_goon[0] TRUE TASK_STAY_IN_SAME_PLACE r3_goon[0] TRUE //Second guy standing CREATE_CHAR PEDTYPE_MISSION1 FAM2 2287.5237 -1150.0411 25.7574 r3_goon[1] SET_CHAR_HEADING r3_goon[1] 347.6220 TASK_STAY_IN_SAME_PLACE r3_goon[1] TRUE TASK_TOGGLE_DUCK r3_goon[1] TRUE //Third guy standing CREATE_CHAR PEDTYPE_MISSION1 FAM1 2301.2568 -1157.3722 25.5970 r3_goon[2] SET_CHAR_HEADING r3_goon[2] 9.0020 TASK_STAY_IN_SAME_PLACE r3_goon[2] TRUE // ---------------------------------------------------------------------------------------------- ENDIF ENDIF // ********************************************************************************************** // * * // * PLAYER ENTERS CAR GUYS DRIVE OFF * // * * // ********************************************************************************************** IF NOT IS_CAR_DEAD ryders_car AND NOT IS_CHAR_DEAD ryder IF IS_CHAR_IN_CAR scplayer ryders_car AND r3_mission_flag = 0 TIMERB = 0 SET_RADIO_CHANNEL 5 SWITCH_RANDOM_TRAINS OFF goons_flag = 4 r3_mission_flag ++ CHANGE_BLIP_DISPLAY r3_ryders_car_blip NEITHER ADD_BLIP_FOR_COORD 2278.1770 -1144.8823 27.5107 mission_blip SET_COORD_BLIP_APPEARANCE mission_blip COORD_BLIP_APPEARANCE_NORMAL r3_switch = 1 ENDIF ENDIF // ********************************************************************************************** // * * // * SPAWN TRAIN AND THREE GUYS * // * * // ********************************************************************************************** IF r3_mission_flag = 1 OR r3_mission_flag = 2 IF NOT IS_CAR_DEAD ryders_car AND NOT IS_CHAR_DEAD ryder IF IS_CHAR_IN_CAR scplayer ryders_car IF NOT r3_switch = 1 CHANGE_BLIP_DISPLAY r3_ryders_car_blip NEITHER CHANGE_BLIP_DISPLAY mission_blip BOTH PRINT_NOW ( RYD3_Z ) 6000 1 // ~s~Drive ~b~Ryder's Truck ~s~to the ~y~ammo train~s~. r3_switch = 1 ENDIF ELSE IF r3_switch = 1 IF NOT IS_CHAR_DEAD ryder SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryder FALSE ENDIF IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF CHANGE_BLIP_DISPLAY mission_blip NEITHER CHANGE_BLIP_DISPLAY r3_ryders_car_blip BOTH GENERATE_RANDOM_INT_IN_RANGE 0 3 r3_rnd SWITCH r3_rnd CASE 0 $r3_print = &RYD3_NA // Hey, CJ, don't you run out on me! r3_audio = SOUND_RYD3_NA GOSUB r3_load_sample BREAK CASE 1 $r3_print = &RYD3_NB // You getting the buster itch again? r3_audio = SOUND_RYD3_NB GOSUB r3_load_sample BREAK CASE 2 $r3_print = &RYD3_NC // Don't you bust out on me, CJ! r3_audio = SOUND_RYD3_NC GOSUB r3_load_sample BREAK ENDSWITCH r3_switch = 2 ENDIF IF r3_playing = 2 AND r3_switch = 2 PRINT_NOW ( RYD3_Q ) 4000 1 // Get back into ~b~Ryder's truck~s~! r3_switch = 0 ENDIF r3_converse_good = 1 ENDIF ENDIF ENDIF IF r3_mission_flag = 1 IF r3_converse_good = 0 IF r3_playing = 2 AND r3_time_left = 0 IF NOT IS_CHAR_DEAD ryder SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryder TRUE ENDIF IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF $r3_print = &RYD3_AD // Cool, you drive CJ, seeing as you’s ‘Mister Driver’. r3_audio = SOUND_RYD3_AD GOSUB r3_load_sample r3_time_left = 1 CHECKPOINT_SAVE 99 //WDFIXME - removing for now - train is not saving correctly ENDIF IF r3_playing = 2 AND r3_time_left = 1 $r3_print = &RYD3_AE // Not this shit again... r3_audio = SOUND_RYD3_AE GOSUB r3_load_sample r3_time_left = 2 ENDIF IF r3_playing = 2 AND r3_time_left = 2 $r3_print = &RYD3_BA // Don’t give me a hard time about my driving, I ain’t got the energy. r3_audio = SOUND_RYD3_BA GOSUB r3_load_sample r3_time_left = 3 ENDIF IF r3_playing = 2 AND r3_time_left = 3 $r3_print = &RYD3_BB // Well, don’t go rolling us over and over in flames, then. r3_audio = SOUND_RYD3_BB GOSUB r3_load_sample r3_time_left = 4 ENDIF IF r3_playing = 2 AND r3_time_left = 4 $r3_print = &RYD3_BC // I ain’t risin’ to it, man. r3_audio = SOUND_RYD3_BC GOSUB r3_load_sample r3_time_left = 5 ENDIF IF r3_playing = 2 AND r3_time_left = 5 $r3_print = &RYD3_BD // Good, means you’ll concentrate on the road! r3_audio = SOUND_RYD3_BD GOSUB r3_load_sample r3_time_left = 6 ENDIF IF r3_playing = 2 AND r3_time_left = 6 $r3_print = &RYD3_BE // Shit, man, you love to give a homie a hard time. r3_audio = SOUND_RYD3_BE GOSUB r3_load_sample r3_time_left = 7 ENDIF IF r3_playing = 2 AND r3_time_left = 7 $r3_print = &RYD3_BG // Just trying to keep my soldiers alive! r3_audio = SOUND_RYD3_BG GOSUB r3_load_sample r3_time_left = 8 ENDIF IF r3_playing = 2 AND r3_time_left = 8 $r3_print = &RYD3_BH // By nagging them to death? r3_audio = SOUND_RYD3_BH GOSUB r3_load_sample r3_time_left = 9 ENDIF IF r3_playing = 2 AND r3_time_left = 9 $r3_print = &RYD3_BJ // The road, motherfucker, the road! r3_audio = SOUND_RYD3_BJ GOSUB r3_load_sample IF NOT IS_CHAR_DEAD ryder SHUT_CHAR_UP ryder FALSE ENDIF IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP scplayer FALSE ENDIF r3_time_left = 10 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2290.6499 -1148.7227 25.7508 200.0 200.0 200.0 FALSE AND r3_spawn_train = 1 REPEAT 4 v IF NOT IS_CHAR_DEAD r3_enemy[v] TASK_STAY_IN_SAME_PLACE r3_enemy[v] TRUE ADD_BLIP_FOR_CHAR r3_enemy[v] r3_enemy_inv[v] IF v = 3 OR v = 0 SET_CHAR_WEAPON_SKILL r3_enemy[v] WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR r3_enemy[v] WEAPONTYPE_PISTOL 9999 ELSE GIVE_WEAPON_TO_CHAR r3_enemy[v] WEAPONTYPE_MICRO_UZI 9999 SET_CURRENT_CHAR_WEAPON r3_enemy[v] WEAPONTYPE_MICRO_UZI ENDIF SET_CHAR_SHOOT_RATE r3_enemy[v] 50 SET_CHAR_ACCURACY r3_enemy[v] 50 SET_CHAR_DECISION_MAKER r3_enemy[v] r3_tough ENDIF ENDREPEAT // ************************************************************************************* // * * // * Grove Gang at Train * // * * // ************************************************************************************* REPEAT 3 v IF NOT IS_CHAR_DEAD r3_goon[v] SET_CHAR_NEVER_TARGETTED r3_goon[v] TRUE TASK_STAY_IN_SAME_PLACE r3_goon[v] TRUE IF v = 1 SET_CHAR_HEALTH r3_goon[v] 200 SET_CHAR_MAX_HEALTH r3_goon[v] 200 ELSE SET_CHAR_HEALTH r3_goon[v] 50 SET_CHAR_MAX_HEALTH r3_goon[v] 50 ENDIF IF v = 1 SET_CHAR_WEAPON_SKILL r3_goon[v] WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR r3_goon[v] WEAPONTYPE_PISTOL 9999 ELSE GIVE_WEAPON_TO_CHAR r3_goon[v] WEAPONTYPE_MICRO_UZI 9999 SET_CURRENT_CHAR_WEAPON r3_goon[v] WEAPONTYPE_MICRO_UZI ENDIF SET_CHAR_SHOOT_RATE r3_goon[v] 70 SET_CHAR_ACCURACY r3_goon[v] 70 SET_CHAR_DECISION_MAKER r3_goon[v] r3_tough ENDIF ENDREPEAT r3_spawn_train = 2 ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2290.6499 -1148.7227 25.7508 100.0 100.0 200.0 FALSE r3_mission_flag ++ TIMERB = 0 r3_time_left = 0 ENDIF ENDIF // ********************************************************************************************** // * * // * DRIVING TO THE TRAIN * // * * // ********************************************************************************************** IF r3_mission_flag = 2 REPEAT 4 v IF IS_CHAR_DEAD r3_enemy[v] AND NOT r3_enemy[v] = 0 IF DOES_BLIP_EXIST r3_enemy_inv[v] REMOVE_BLIP r3_enemy_inv[v] r3_enemy_inv[v] = 0 MARK_CHAR_AS_NO_LONGER_NEEDED r3_enemy[v] ENDIF ENDIF ENDREPEAT IF NOT IS_CAR_DEAD ryders_car AND NOT IS_CHAR_DEAD ryder IF IS_CHAR_IN_CAR scplayer ryders_car // r3_converse_good = 0 ELSE r3_converse_good_1 = 1 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2290.6499 -1148.7227 25.7508 100.0 100.0 100.0 FALSE AND r3_inside_zone = 0 IF NOT IS_CHAR_DEAD r3_goon[1] OPEN_SEQUENCE_TASK r3_sequence_task TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_TOGGLE_DUCK -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 2291.7244 -1138.6476 25.6745 PEDMOVE_RUN -2 TASK_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD r3_enemy[0] TASK_KILL_CHAR_ON_FOOT -1 r3_enemy[0] ENDIF IF NOT IS_CHAR_DEAD r3_enemy[1] TASK_KILL_CHAR_ON_FOOT -1 r3_enemy[1] ENDIF IF NOT IS_CHAR_DEAD r3_enemy[2] TASK_KILL_CHAR_ON_FOOT -1 r3_enemy[2] ENDIF IF NOT IS_CHAR_DEAD r3_enemy[3] TASK_KILL_CHAR_ON_FOOT -1 r3_enemy[3] ENDIF CLOSE_SEQUENCE_TASK r3_sequence_task CLEAR_CHAR_TASKS_IMMEDIATELY r3_goon[1] PERFORM_SEQUENCE_TASK r3_goon[1] r3_sequence_task CLEAR_SEQUENCE_TASK r3_sequence_task ENDIF IF NOT IS_CHAR_DEAD r3_goon[0] OPEN_SEQUENCE_TASK r3_sequence_task TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_TOGGLE_DUCK -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 2297.5330 -1137.5785 25.8778 PEDMOVE_RUN -2 TASK_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD r3_enemy[0] TASK_KILL_CHAR_ON_FOOT -1 r3_enemy[0] ENDIF IF NOT IS_CHAR_DEAD r3_enemy[1] TASK_KILL_CHAR_ON_FOOT -1 r3_enemy[1] ENDIF IF NOT IS_CHAR_DEAD r3_enemy[2] TASK_KILL_CHAR_ON_FOOT -1 r3_enemy[2] ENDIF IF NOT IS_CHAR_DEAD r3_enemy[3] TASK_KILL_CHAR_ON_FOOT -1 r3_enemy[3] ENDIF CLOSE_SEQUENCE_TASK r3_sequence_task CLEAR_CHAR_TASKS_IMMEDIATELY r3_goon[0] PERFORM_SEQUENCE_TASK r3_goon[0] r3_sequence_task CLEAR_SEQUENCE_TASK r3_sequence_task ENDIF IF NOT IS_CHAR_DEAD r3_goon[2] OPEN_SEQUENCE_TASK r3_sequence_task TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_TOGGLE_DUCK -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 2290.1179 -1141.7802 25.7024 PEDMOVE_RUN -2 FLUSH_ROUTE IF NOT IS_CHAR_DEAD r3_enemy[0] TASK_KILL_CHAR_ON_FOOT -1 r3_enemy[0] ENDIF IF NOT IS_CHAR_DEAD r3_enemy[1] TASK_KILL_CHAR_ON_FOOT -1 r3_enemy[1] ENDIF IF NOT IS_CHAR_DEAD r3_enemy[2] TASK_KILL_CHAR_ON_FOOT -1 r3_enemy[2] ENDIF IF NOT IS_CHAR_DEAD r3_enemy[3] TASK_KILL_CHAR_ON_FOOT -1 r3_enemy[3] ENDIF CLOSE_SEQUENCE_TASK r3_sequence_task CLEAR_CHAR_TASKS_IMMEDIATELY r3_goon[2] PERFORM_SEQUENCE_TASK r3_goon[2] r3_sequence_task CLEAR_SEQUENCE_TASK r3_sequence_task ENDIF r3_inside_zone = 1 TIMERB = 0 ENDIF IF r3_converse_good_1 = 0 AND r3_inside_zone = 1 IF r3_playing = 2 AND r3_time_left = 0 $r3_print = &RYD3_CA // Here we are. r3_audio = SOUND_RYD3_CA GOSUB r3_load_sample r3_time_left = 1 ENDIF IF r3_playing = 2 AND r3_time_left = 1 $r3_print = &RYD3_CB // That’s our train alright. r3_audio = SOUND_RYD3_CB GOSUB r3_load_sample r3_time_left = 2 ENDIF ENDIF IF NOT IS_CAR_DEAD ryders_car AND NOT IS_CHAR_DEAD scplayer IF NOT IS_CHAR_IN_CAR scplayer ryders_car PRINT_NOW ( RYD3_Q ) 5000 1 // What are you doing? Get back into the car! IF r3_get_back = 0 REMOVE_BLIP mission_blip ADD_BLIP_FOR_CAR ryders_car mission_blip SET_BLIP_AS_FRIENDLY mission_blip TRUE r3_get_back = 1 ENDIF ELSE IF r3_get_back = 1 REMOVE_BLIP mission_blip ADD_BLIP_FOR_COORD 2278.1770 -1144.8823 27.5107 mission_blip SET_COORD_BLIP_APPEARANCE mission_blip COORD_BLIP_APPEARANCE_NORMAL r3_get_back = 0 ENDIF ENDIF ENDIF // ********************************************************************************************** // * * // * PLAYER ARRIVES AT THE TRAIN * // * * // ********************************************************************************************** IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD ryders_car IF LOCATE_STOPPED_CAR_3D ryders_car 2289.5911 -1135.6255 25.6863 40.0 40.0 40.0 FALSE REMOVE_BLIP mission_blip IF DOES_BLIP_EXIST r3_ryders_car_blip CHANGE_BLIP_DISPLAY r3_ryders_car_blip NEITHER ENDIF IF NOT IS_CHAR_DEAD r3_enemy[0] OR NOT IS_CHAR_DEAD r3_enemy[1] OR NOT IS_CHAR_DEAD r3_enemy[2] OR NOT IS_CHAR_DEAD r3_enemy[3] $r3_print = &RYD3_CC // Shit, looks like some Northside Vagos got there first! r3_audio = SOUND_RYD3_CC GOSUB r3_load_sample ENDIF TIMERA = 0 IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD ryders_car IF IS_CHAR_IN_CAR ryder ryders_car LVAR_INT r3_seq_tracks OPEN_SEQUENCE_TASK r3_seq_tracks TASK_LEAVE_CAR -1 ryders_car TASK_TOGGLE_DUCK -1 TRUE TASK_GO_TO_COORD_ANY_MEANS -1 2295.1042 -1148.0286 25.7612 PEDMOVE_RUN -1 TASK_TOGGLE_PED_THREAT_SCANNER -1 TRUE TRUE TRUE IF NOT IS_CHAR_DEAD r3_enemy[0] TASK_KILL_CHAR_ON_FOOT -1 r3_enemy[0] ENDIF IF NOT IS_CHAR_DEAD r3_enemy[1] TASK_KILL_CHAR_ON_FOOT -1 r3_enemy[1] ENDIF IF NOT IS_CHAR_DEAD r3_enemy[2] TASK_KILL_CHAR_ON_FOOT -1 r3_enemy[2] ENDIF IF NOT IS_CHAR_DEAD r3_enemy[3] TASK_KILL_CHAR_ON_FOOT -1 r3_enemy[3] ENDIF CLOSE_SEQUENCE_TASK r3_seq_tracks CLEAR_CHAR_TASKS ryder PERFORM_SEQUENCE_TASK ryder r3_seq_tracks ENDIF ENDIF ENDIF r3_mission_flag ++ ENDIF ENDIF ENDIF IF r3_mission_flag = 3 AND TIMERA > 4000 LVAR_INT r3_sequence_task IF NOT IS_CHAR_DEAD r3_enemy[1] TASK_STAY_IN_SAME_PLACE r3_enemy[1] FALSE ENDIF IF NOT IS_CHAR_DEAD r3_enemy[0] OR NOT IS_CHAR_DEAD r3_enemy[1] OR NOT IS_CHAR_DEAD r3_enemy[2] OR NOT IS_CHAR_DEAD r3_enemy[3] PRINT_NOW ( RYD3_M ) 5000 1 // ~s~Shoot the ~r~Vagos ~s~robbing the train! ENDIF r3_mission_flag ++ ENDIF IF r3_mission_flag = 4 REPEAT 4 v IF IS_CHAR_DEAD r3_enemy[v] AND NOT r3_enemy[v] = 0 IF DOES_BLIP_EXIST r3_enemy_inv[v] REMOVE_BLIP r3_enemy_inv[v] r3_enemy_inv[v] = 0 MARK_CHAR_AS_NO_LONGER_NEEDED r3_enemy[v] ENDIF ENDIF ENDREPEAT IF IS_CHAR_DEAD r3_enemy[0] AND IS_CHAR_DEAD r3_enemy[1] AND IS_CHAR_DEAD r3_enemy[2] AND IS_CHAR_DEAD r3_enemy[3] IF r3_wait = 0 TIMERA = 0 r3_wait = 1 ENDIF ENDIF IF r3_wait = 1 AND TIMERA > 2000 r3_mission_flag ++ IF NOT IS_CHAR_DEAD ryder PERFORM_SEQUENCE_TASK ryder r3_get_onto_train ENDIF ENDIF ENDIF // ********************************************************************************************** // * * // * The Ballas Car arrives * // * * // ********************************************************************************************** IF r3_mission_flag = 5 TIMERA = 0 r3_mission_flag ++ ENDIF // ********************************************************************************************** // * * // * BALLAS ARRIVES AT THE TRAIN * // * * // ********************************************************************************************** IF r3_mission_flag = 6 GOSUB r3_fade_out REQUEST_MODEL GREENWOO REQUEST_MODEL micro_uzi REQUEST_MODEL ballas1 REQUEST_MODEL ballas3 REQUEST_MODEL COLT45 WHILE NOT HAS_MODEL_LOADED GREENWOO OR NOT HAS_MODEL_LOADED micro_uzi OR NOT HAS_MODEL_LOADED ballas1 OR NOT HAS_MODEL_LOADED ballas3 OR NOT HAS_MODEL_LOADED COLT45 WAIT 0 ENDWHILE LVAR_INT gang2_car CREATE_CAR GREENWOO 2340.0549 -1151.4324 25.9546 gang2_car SET_CAR_HEADING gang2_car 92.6857 CAR_GOTO_COORDINATES gang2_car 2313.4141 -1150.0930 25.7997 SET_CAR_DRIVING_STYLE gang2_car 3 SET_CAR_CRUISE_SPEED gang2_car 25.0 LVAR_INT r3_ballas[4] r3_ballas_inv[4] CREATE_CHAR_INSIDE_CAR gang2_car PEDTYPE_MISSION2 ballas1 r3_ballas[0] SET_CHAR_HEADING r3_ballas[0] 227.7265 CREATE_CHAR_AS_PASSENGER gang2_car PEDTYPE_MISSION2 ballas3 0 r3_ballas[1] SET_CHAR_HEADING r3_ballas[1] 301.1901 CREATE_CHAR_AS_PASSENGER gang2_car PEDTYPE_MISSION2 ballas1 1 r3_ballas[2] SET_CHAR_HEADING r3_ballas[2] 82.8733 SET_CHAR_ONLY_DAMAGED_BY_PLAYER r3_ballas[2] TRUE CREATE_CHAR_AS_PASSENGER gang2_car PEDTYPE_MISSION2 ballas3 2 r3_ballas[3] SET_CHAR_HEADING r3_ballas[3] 82.8733 SET_CHAR_ONLY_DAMAGED_BY_PLAYER r3_ballas[3] TRUE REPEAT 4 v ADD_BLIP_FOR_CHAR r3_ballas[v] r3_ballas_inv[v] IF v = 3 SET_CHAR_WEAPON_SKILL r3_ballas[v] WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR r3_ballas[v] WEAPONTYPE_PISTOL 9999 ELSE GIVE_WEAPON_TO_CHAR r3_ballas[v] WEAPONTYPE_MICRO_UZI 9999 SET_CURRENT_CHAR_WEAPON r3_ballas[v] WEAPONTYPE_MICRO_UZI ENDIF SET_CHAR_HEALTH r3_ballas[v] 200 SET_CHAR_MAX_HEALTH r3_ballas[v] 200 SET_CHAR_SHOOT_RATE r3_ballas[v] 40 SET_CHAR_ACCURACY r3_ballas[v] 40 SET_CHAR_DECISION_MAKER r3_ballas[v] r3_tough SET_CHAR_IS_TARGET_PRIORITY r3_ballas[v] TRUE ENDREPEAT GOSUB r3_set_camera LOAD_SCENE_IN_DIRECTION 2287.2961 -1140.3798 25.6779 252.6459 SET_FIXED_CAMERA_POSITION 2283.1445 -1135.6521 28.6919 0.0 0.0 0.0 IF NOT IS_CAR_DEAD gang2_car POINT_CAMERA_AT_CAR gang2_car FIXED JUMP_CUT ENDIF IF NOT IS_CHAR_DEAD scplayer IF NOT IS_CHAR_IN_ANY_CAR scplayer TASK_TURN_CHAR_TO_FACE_COORD scplayer 2313.4141 -1150.0930 25.7997 ENDIF ENDIF REPEAT 3 v IF NOT IS_CHAR_DEAD r3_goon[v] IF NOT IS_CHAR_IN_ANY_CAR r3_goon[v] TASK_TURN_CHAR_TO_FACE_COORD r3_goon[v] 2313.4141 -1150.0930 25.7997 TASK_STAY_IN_SAME_PLACE r3_goon[v] TRUE ENDIF ENDIF ENDREPEAT LVAR_INT r3_sequence IF NOT IS_CHAR_DEAD ryder OPEN_SEQUENCE_TASK r3_sequence TASK_TOGGLE_DUCK -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 2295.6929 -1142.4689 25.8392 PEDMOVE_RUN -2 TASK_TURN_CHAR_TO_FACE_COORD -1 2313.4141 -1150.0930 25.7997 IF NOT IS_CHAR_DEAD r3_ballas[0] TASK_KILL_CHAR_ON_FOOT -1 r3_ballas[0] ENDIF IF NOT IS_CHAR_DEAD r3_ballas[1] TASK_KILL_CHAR_ON_FOOT -1 r3_ballas[1] ENDIF IF NOT IS_CHAR_DEAD r3_ballas[2] TASK_KILL_CHAR_ON_FOOT -1 r3_ballas[2] ENDIF IF NOT IS_CHAR_DEAD r3_ballas[3] TASK_KILL_CHAR_ON_FOOT -1 r3_ballas[3] ENDIF CLOSE_SEQUENCE_TASK r3_sequence IF NOT IS_CHAR_IN_ANY_CAR ryder CLEAR_CHAR_TASKS_IMMEDIATELY ryder PERFORM_SEQUENCE_TASK ryder r3_sequence ENDIF CLEAR_SEQUENCE_TASK r3_sequence ENDIF GOSUB r3_fade_in PRINT_NOW ( RYD3_2 ) 3000 1 // ~s~Protect the train from the ~r~flats! WAIT 1000 TIMERB = 0 WHILE TIMERB < 3000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO r3_skip_the_cut_0 ENDIF ENDWHILE r3_skip_the_cut_0: GOSUB r3_restore_camera PRINT_NOW ( RYD3_DA ) 3000 1 // We got Ballas trying to crash the party! $r3_print = &RYD3_DA // We got Ballas trying to crash the party! r3_audio = SOUND_RYD3_DA GOSUB r3_load_sample r3_time_left = 0 TIMERB = 0 r3_mission_flag ++ ENDIF // ********************************************************************************************** // * * // * MAKE FLATS LEAVE CAR * // * * // ********************************************************************************************** IF r3_mission_flag = 7 IF NOT IS_CAR_DEAD gang2_car IF LOCATE_STOPPED_CAR_2D gang2_car 2304.1821 -1142.6194 15.0 15.0 0 TASK_EVERYONE_LEAVE_CAR gang2_car r3_mission_flag ++ ENDIF ENDIF ENDIF // ********************************************************************************************** // * * // * TURN OFF BLIPS WHEN FLAT DIES * // * * // ********************************************************************************************** IF r3_mission_flag = 8 REPEAT 4 v IF IS_CHAR_DEAD r3_ballas[v] AND NOT r3_ballas[v] = 0 IF DOES_BLIP_EXIST r3_ballas_inv[v] REMOVE_BLIP r3_ballas_inv[v] r3_ballas_inv[v] = 0 MARK_CHAR_AS_NO_LONGER_NEEDED r3_ballas[v] ENDIF ENDIF ENDREPEAT IF TIMERB > 3000 AND r3_time_left = 0 $r3_print = &RYD3_DB // Looks like Tenpennny told every gang in South Central! r3_audio = SOUND_RYD3_DB GOSUB r3_load_sample IF NOT IS_CHAR_DEAD r3_ballas[0] TASK_GO_TO_COORD_ANY_MEANS r3_ballas[0] 2299.2844 -1133.9290 27.3281 PEDMOVE_RUN -1 ENDIF IF NOT IS_CHAR_DEAD r3_ballas[1] TASK_GO_TO_COORD_ANY_MEANS r3_ballas[1] 2291.2261 -1140.1689 25.6912 PEDMOVE_RUN -1 ENDIF IF NOT IS_CHAR_DEAD r3_ballas[2] TASK_GO_TO_COORD_ANY_MEANS r3_ballas[2] 2298.0903 -1144.0359 25.9190 PEDMOVE_RUN -1 ENDIF IF NOT IS_CHAR_DEAD r3_ballas[3] TASK_GO_TO_COORD_ANY_MEANS r3_ballas[3] 2291.8420 -1129.2198 25.7756 PEDMOVE_RUN -1 ENDIF r3_time_left = 1 ENDIF IF r3_playing = 2 AND r3_time_left = 1 $r3_print = &RYD3_DC // Ice those Ballassholes! r3_audio = SOUND_RYD3_DC GOSUB r3_load_sample r3_time_left = 2 ENDIF IF IS_CHAR_DEAD r3_ballas[0] AND IS_CHAR_DEAD r3_ballas[1] AND IS_CHAR_DEAD r3_ballas[2] AND IS_CHAR_DEAD r3_ballas[3] r3_mission_flag ++ ADD_BLIP_FOR_COORD 2287.1472 -1121.7023 25.8903 f4_train_rear_blip SET_COORD_BLIP_APPEARANCE f4_train_rear_blip COORD_BLIP_APPEARANCE_NORMAL $r3_print = &RYD3_EA // Go check out the train, CJ. r3_audio = SOUND_RYD3_EA GOSUB r3_load_sample r3_time_left = 0 IF NOT IS_CHAR_DEAD ryder // -------------------------------------------------------------------------------- LVAR_INT r3_seq_train_goto_a r3_seq_goto_the_train OPEN_SEQUENCE_TASK r3_seq_goto_the_train TASK_ACHIEVE_HEADING -1 77.6187 TASK_PLAY_ANIM -1 IDLE_armed PED 1.0 FALSE FALSE FALSE FALSE -1 TASK_PAUSE -1 2000 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_PLAY_ANIM -1 RYD_Beckon_01 RYDER 1.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT r3_seq_goto_the_train 1 CLOSE_SEQUENCE_TASK r3_seq_goto_the_train // -------------------------------------------------------------------------------- OPEN_SEQUENCE_TASK r3_seq_train_goto_a TASK_GO_STRAIGHT_TO_COORD -1 2294.8538 -1143.8496 25.8140 PEDMOVE_RUN -2 TASK_GO_STRAIGHT_TO_COORD -1 2290.7161 -1122.9971 25.8774 PEDMOVE_RUN -2 PERFORM_SEQUENCE_TASK -1 r3_seq_goto_the_train CLOSE_SEQUENCE_TASK r3_seq_train_goto_a // -------------------------------------------------------------------------------- CLEAR_CHAR_TASKS_IMMEDIATELY ryder PERFORM_SEQUENCE_TASK ryder r3_seq_train_goto_a // -------------------------------------------------------------------------------- CLEAR_SEQUENCE_TASK r3_seq_goto_the_train CLEAR_SEQUENCE_TASK r3_seq_train_goto_a // -------------------------------------------------------------------------------- ENDIF TIMERB = 0 ENDIF ENDIF // ********************************************************************************************** // * * // * TRAIN LEAVES WITH THE PLAYER * // * * // ********************************************************************************************** IF r3_mission_flag = 9 IF TIMERB > 4000 AND r3_time_left = 0 //CHECKPOINT_SAVE 1 //WDFIXME - removing for now - train is not saving correctly PRINT_NOW ( RYD3_1 ) 4000 1 // ~s~Climb up onto the ~y~Train ~s~before anyone else shows up r3_time_left = 1 ENDIF IF LOCATE_CHAR_ON_FOOT_3D scplayer 2287.1472 -1121.7023 25.8903 1.2 1.2 3.0 TRUE IF NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 OFF ENDIF IF DOES_BLIP_EXIST f4_train_rear_blip REMOVE_BLIP f4_train_rear_blip ENDIF GOSUB r3_set_camera DELETE_CHAR r3_enemy[3] SET_PLAYER_DISPLAY_VITAL_STATS_BUTTON player1 FALSE SET_FIXED_CAMERA_POSITION 2288.8806 -1117.7576 28.0044 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2288.3003 -1118.5493 27.8136 JUMP_CUT IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer 2287.1472 -1121.7023 25.8903 SET_CHAR_HEADING scplayer 91.8747 TASK_CLIMB scplayer TRUE SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE ENDIF WAIT 1000 GOSUB r3_fade_out IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF NOT IS_CHAR_SITTING_IN_ANY_CAR scplayer SET_CHAR_COORDINATES scplayer 2284.7661 -1121.4998 27.3860 ELSE WARP_CHAR_FROM_CAR_TO_COORD scplayer 2284.7661 -1121.4998 27.3860 ENDIF SET_CHAR_HEADING scplayer 220.0 ENDIF REQUEST_CAR_RECORDING 486 REQUEST_CAR_RECORDING 490 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 486 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 490 WAIT 0 ENDWHILE CLEAR_AREA 2284.7322 -1121.9163 27.0000 50.0 TRUE IF NOT IS_CAR_DEAD ryders_car LVAR_INT ryders_goon1 CREATE_CHAR PEDTYPE_MISSION1 FAM1 2294.5537 -1156.3818 25.6646 ryders_goon1 SET_CHAR_HEADING ryders_goon1 9.0020 IF NOT IS_CHAR_DEAD ryders_goon1 IF NOT IS_CHAR_IN_CAR ryders_goon1 ryders_car WARP_CHAR_INTO_CAR ryders_goon1 ryders_car ENDIF ENDIF IF IS_CHAR_DEAD ryders_goon1 CREATE_CHAR_INSIDE_CAR ryders_car PEDTYPE_MISSION1 FAM1 ryders_goon1 SET_CHAR_NEVER_TARGETTED ryders_goon1 TRUE GIVE_WEAPON_TO_CHAR ryders_goon1 WEAPONTYPE_MICRO_UZI 9999 ENDIF CLOSE_ALL_CAR_DOORS ryders_car ENDIF IF NOT IS_CAR_DEAD ryders_car AND NOT IS_CHAR_DEAD ryders_goon1 ADD_BLIP_FOR_CAR ryders_car r3_catching_blip SET_BLIP_AS_FRIENDLY r3_catching_blip TRUE SET_CAR_HEALTH ryders_car 5000 SET_CHAR_HEALTH ryders_goon1 500 ENDIF DELETE_CHAR ryder IF NOT IS_CAR_DEAD ryders_car GET_CAR_COORDINATES ryders_car x y z ENDIF CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 x y z ryder SET_CHAR_HEALTH ryder 500 CLEAR_ALL_CHAR_RELATIONSHIPS ryder ACQUAINTANCE_TYPE_PED_HATE IF NOT IS_CAR_DEAD ryders_car ATTACH_CHAR_TO_CAR ryder ryders_car 0.0 -0.85 0.65 FACING_LEFT 360.0 WEAPONTYPE_MICRO_UZI ENDIF SET_CHAR_PROOFS ryder TRUE TRUE FALSE TRUE TRUE TASK_TOGGLE_PED_THREAT_SCANNER ryder FALSE FALSE FALSE IF NOT IS_CHAR_DEAD ryders_goon1 TASK_TOGGLE_PED_THREAT_SCANNER ryders_goon1 FALSE FALSE FALSE SET_CHAR_DECISION_MAKER ryders_goon1 r3_empty ENDIF IF NOT IS_CAR_DEAD ryders_car START_PLAYBACK_RECORDED_CAR ryders_car 486 PAUSE_PLAYBACK_RECORDED_CAR ryders_car ENDIF WAIT 800 IF NOT IS_CAR_DEAD ammo_train FREEZE_CAR_POSITION ammo_train FALSE START_PLAYBACK_RECORDED_CAR ammo_train 490 ENDIF DELETE_OBJECT r3_ammo_crate[0] DELETE_OBJECT r3_ammo_crate[1] DELETE_OBJECT r3_ammo_crate[2] DELETE_OBJECT r3_ammo_crate[3] REPEAT 3 v DELETE_CHAR r3_goon[v] ENDREPEAT SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 LOAD_SCENE_IN_DIRECTION 2288.5164 -1136.4039 28.5557 149.2199 SET_FIXED_CAMERA_POSITION 2288.5164 -1136.4039 28.5557 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2288.2947 -1137.3680 28.4100 JUMP_CUT IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 2284.7661 -1121.4998 27.3860 SET_CHAR_HEADING scplayer 0.0000 ENDIF WAIT 200 IF NOT IS_CAR_DEAD ryders_car AND IS_PLAYBACK_GOING_ON_FOR_CAR ryders_car UNPAUSE_PLAYBACK_RECORDED_CAR ryders_car ENDIF GOSUB r3_fade_in SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD3_FA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( RYD3_FA ) 2000 1 // Oh shit! WAIT 2000 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD3_FB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( RYD3_FB ) 4000 1 // Stay put, CJ, we’re gonna be right behind you! WAIT 4000 IF NOT IS_CAR_DEAD ammo_train SET_HEADING_FOR_ATTACHED_PLAYER player1 225.0000 225.0000 LVAR_INT ammo_train_rear GET_TRAIN_CABOOSE ammo_train ammo_train_rear ATTACH_CHAR_TO_CAR scplayer ammo_train_rear 0.0 -8.0 0.9 FACING_FORWARD 360.0 WEAPONTYPE_UNARMED SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE SET_CHAR_COLLISION scplayer FALSE ENDIF GOSUB r3_restore_camera SET_CAR_DENSITY_MULTIPLIER 0.0 DRAW_CROSSHAIR TRUE //SET_RADAR_ZOOM 50 $r3_print = &RYD3_GA // Throw me some boxes, CJ! r3_audio = SOUND_RYD3_GA GOSUB r3_load_sample TIMERB = 0 r3_time_left = 0 VAR_INT box_timer box_timer = 90000 DISPLAY_ONSCREEN_TIMER_WITH_STRING box_timer TIMER_DOWN RYD3_3 VAR_INT throw_power_bar throw_power_bar = 0 goons_flag = 0 DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING throw_power_bar COUNTER_DISPLAY_BAR 1 RYD3_E DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING r3_total_guns COUNTER_DISPLAY_NUMBER 2 RYD3_F IF NOT IS_CHAR_DEAD ryder CLEAR_CHAR_TASKS ryder ENDIF r3_mission_flag ++ ENDIF ENDIF // ********************************************************************************************** // * * // * ON THE TRAIN THROWING BOXES * // * * // ********************************************************************************************** IF r3_mission_flag = 10 IF TIMERB > 5000 AND r3_time_left = 0 PRINT_HELP_FOREVER RYD3_D // Press ~m~~widget_attack~ to power up your throw, then release ~m~~widget_attack~ to throw. r3_time_left = 1 ENDIF IF TIMERA > 8000 IF NOT IS_CHAR_DEAD ryder CLEAR_CHAR_TASKS ryder GENERATE_RANDOM_INT_IN_RANGE 0 3 r3_rnd SWITCH r3_rnd CASE 0 TASK_PLAY_ANIM ryder RYD_Beckon_01 RYDER 1.0 FALSE FALSE FALSE FALSE -1 BREAK CASE 1 TASK_PLAY_ANIM ryder RYD_Beckon_02 RYDER 1.0 FALSE FALSE FALSE FALSE -1 BREAK CASE 2 TASK_PLAY_ANIM ryder RYD_Beckon_03 RYDER 1.0 FALSE FALSE FALSE FALSE -1 BREAK ENDSWITCH ENDIF TIMERA = 0 ENDIF IF NOT IS_CAR_DEAD ammo_train_rear IF NOT IS_CHAR_DEAD ryder GET_CHAR_COORDINATES scplayer x y z GET_CHAR_COORDINATES ryder x2 y2 z2 x -= x2 y -= y2 GET_HEADING_FROM_VECTOR_2D x y heading SET_CHAR_HEADING ryder heading ENDIF GET_GAME_TIMER ryder3_current_time ftemp_ryder3_current_time =# ryder3_current_time ftemp_ryder3_last_time =# ryder3_last_time ryder3_elapsed_time = ftemp_ryder3_current_time - ftemp_ryder3_last_time ryder3_last_time = ryder3_current_time IF NOT collected_guns = 10 IF IS_BUTTON_PRESSED PAD1 CIRCLE OR IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1 OR IS_WIDGET_PRESSED WIDGET_ATTACK // scale the power bar increment by 33 milliseconds (30fps) power_bar_increment_f =# power_bar_increment ryder3_elapsed_time = power_bar_increment_f * ryder3_elapsed_time ryder3_elapsed_time = ryder3_elapsed_time * 0.03 ryder3_temp_int =# ryder3_elapsed_time throw_power_bar += ryder3_temp_int IF throw_power_bar > 100 throw_power_bar = 100 //power_bar_increment = -5 ENDIF IF throw_power_bar < 0 throw_power_bar = 0 power_bar_increment = 50 ENDIF LVAR_INT pad1_circle_pressed ++ pad1_circle_pressed ELSE IF pad1_circle_pressed > 0 IF throw_power_bar > 20 LVAR_FLOAT throw_power throw_power =# throw_power_bar throw_power /= 2.0 GET_ACTIVE_CAMERA_COORDINATES x y z GET_ACTIVE_CAMERA_POINT_AT x2 y2 z2 IF DOES_OBJECT_EXIST new_guns[gun_index] DELETE_OBJECT new_guns[gun_index] ENDIF CREATE_OBJECT_NO_OFFSET crate_model x2 y2 z2 new_guns[gun_index] SET_OBJECT_RECORDS_COLLISIONS new_guns[gun_index] TRUE LVAR_INT new_guns_model[10] new_guns_model[gun_index] = crate_model x2 -= x y2 -= y z2 -= z x2 *= throw_power y2 *= throw_power z2 *= throw_power SET_OBJECT_DYNAMIC new_guns[gun_index] TRUE SET_OBJECT_COLLISION new_guns[gun_index] TRUE GET_CAR_SPEED_VECTOR ammo_train_rear x y z x3 = x + x2 y3 = y + y2 z3 = z + z2 SET_OBJECT_VELOCITY new_guns[gun_index] x3 y3 z3 ++ gun_index IF gun_index = 10 gun_index = 0 ENDIF ENDIF pad1_circle_pressed = 0 throw_power_bar = 0 ENDIF ENDIF ENDIF LVAR_INT check_index check_index = 0 WHILE check_index < 10 IF DOES_OBJECT_EXIST new_guns[check_index] AND NOT IS_CHAR_DEAD ryder GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS ryder 0.0 1.0 0.5 x y z IF LOCATE_OBJECT_3D new_guns[check_index] x y z 1.00 1.00 1.00 0 IF goons_flag = 0 AND NOT IS_CHAR_DEAD ryder AND NOT collected_guns = 10 SET_OBJECT_COLLISION new_guns[check_index] FALSE TASK_PICK_UP_OBJECT ryder new_guns[check_index] 0.0 0.3 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL CATCH_BOX BOX 0 TIMERA = 0 GENERATE_RANDOM_INT_IN_RANGE 0 2 r3_rnd SWITCH collected_guns CASE 1 IF r3_rnd = 0 $r3_print = &RYD3_HA // Damn! Not so hard! r3_audio = SOUND_RYD3_HA GOSUB r3_load_sample ELSE $r3_print = &RYD3_HB // I got it! r3_audio = SOUND_RYD3_HB GOSUB r3_load_sample ENDIF BREAK CASE 3 IF r3_rnd = 0 $r3_print = &RYD3_HC // Nice throw, fool! r3_audio = SOUND_RYD3_HC GOSUB r3_load_sample ELSE $r3_print = &RYD3_HD // Keep ‘em coming! r3_audio = SOUND_RYD3_HD GOSUB r3_load_sample ENDIF BREAK CASE 5 IF r3_rnd = 0 $r3_print = &RYD3_HE // Shit! I nearly dropped that one! r3_audio = SOUND_RYD3_HE GOSUB r3_load_sample ELSE $r3_print = &RYD3_HF // Bull’s eye! r3_audio = SOUND_RYD3_HF GOSUB r3_load_sample ENDIF BREAK CASE 7 IF r3_rnd = 0 $r3_print = &RYD3_HG // You trying to kill me? r3_audio = SOUND_RYD3_HG GOSUB r3_load_sample ELSE $r3_print = &RYD3_HH // Oh, yeah! r3_audio = SOUND_RYD3_HH GOSUB r3_load_sample ENDIF BREAK CASE 8 IF r3_rnd = 0 $r3_print = &RYD3_HJ // Can’t stop me! r3_audio = SOUND_RYD3_HJ GOSUB r3_load_sample ELSE $r3_print = &RYD3_HK // And another one! r3_audio = SOUND_RYD3_HK GOSUB r3_load_sample ENDIF BREAK CASE 9 $r3_print = &RYD3_HM // Ok, CJ! That’s all I can carry! r3_audio = SOUND_RYD3_HM GOSUB r3_load_sample BREAK ENDSWITCH stored_check_index = check_index ++ collected_guns IF r3_total_guns > 0 r3_total_guns -- ENDIF IF collected_guns = 5 IF NOT IS_CHAR_DEAD ryder SET_CHAR_HEALTH ryder 5000 ENDIF IF NOT IS_CHAR_DEAD ryders_goon1 SET_CHAR_HEALTH ryders_goon1 5000 ENDIF crate_model = CR_AMMOBOX ENDIF IF collected_guns = 10 DRAW_CROSSHAIR FALSE SET_CAR_DENSITY_MULTIPLIER 1.0 ENDIF goons_flag ++ ENDIF ELSE IF new_guns_model[check_index] = CR_AMMOBOX AND NOT IS_CHAR_DEAD ryder IF HAS_CHAR_BEEN_DAMAGED_BY_WEAPON ryder WEAPONTYPE_EXPLOSION GENERATE_RANDOM_INT_IN_RANGE 0 6 r3_rnd SWITCH r3_rnd CASE 0 $r3_print = &RYD3_JA // Watch what the fuck you're doing! r3_audio = SOUND_RYD3_JA GOSUB r3_load_sample BREAK CASE 1 $r3_print = &RYD3_JB // CJ, I swear you're trying to kill me! r3_audio = SOUND_RYD3_JB GOSUB r3_load_sample BREAK CASE 2 $r3_print = &RYD3_JC // CAREFUL with these damn things! r3_audio = SOUND_RYD3_JC GOSUB r3_load_sample BREAK CASE 3 $r3_print = &RYD3_JD // Hey, EASY, CJ, EASY! r3_audio = SOUND_RYD3_JD GOSUB r3_load_sample BREAK CASE 4 $r3_print = &RYD3_JE // You throw like a girl! r3_audio = SOUND_RYD3_JE GOSUB r3_load_sample BREAK CASE 5 $r3_print = &RYD3_JF // Carl, do you understand the concept, here? r3_audio = SOUND_RYD3_JF GOSUB r3_load_sample BREAK ENDSWITCH CLEAR_CHAR_LAST_WEAPON_DAMAGE ryder ENDIF IF HAS_OBJECT_COLLIDED_WITH_ANYTHING new_guns[check_index] box_collisions ++ IF box_collisions > 4 IF NOT IS_CHAR_DEAD ryder AND NOT IS_CHAR_DEAD ryders_goon1 IF NOT IS_CHAR_TOUCHING_OBJECT ryder new_guns[check_index] IF NOT IS_CHAR_TOUCHING_OBJECT ryders_goon1 new_guns[check_index] GET_OBJECT_COORDINATES new_guns[check_index] x y z BREAK_OBJECT new_guns[check_index] TRUE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT new_guns[check_index] SOUND_EXPLOSION CREATE_FX_SYSTEM EXPLOSION_SMALL X Y Z TRUE r3_fx PLAY_AND_KILL_FX_SYSTEM r3_fx MARK_OBJECT_AS_NO_LONGER_NEEDED new_guns[check_index] new_guns[check_index] = 0 ENDIF ENDIF ENDIF ENDIF ELSE box_collisions = 0 ENDIF ENDIF ENDIF IF DOES_OBJECT_EXIST new_guns[check_index] IF NOT LOCATE_CHAR_ANY_MEANS_OBJECT_2D scplayer new_guns[check_index] 100.0 100.0 0 MARK_OBJECT_AS_NO_LONGER_NEEDED new_guns[check_index] new_guns[check_index] = 0 ENDIF ENDIF IF goons_flag = 1 IF NOT IS_CHAR_DEAD ryder AND NOT IS_CHAR_DEAD ryders_goon1 GET_SCRIPT_TASK_STATUS ryder TASK_PICK_UP_OBJECT task_status ENDIF IF task_status = FINISHED_TASK IF stored_check_index > -1 SWITCH r3_crate_cnt CASE 0 CREATE_OBJECT CR_GUNCRATE 2278.1770 -1144.8823 27.5107 r3_crate_y ATTACH_OBJECT_TO_CAR r3_crate_y ryders_car 0.4 -2.10 -0.10 0.0 0.0 15.0 SET_OBJECT_COLLISION r3_crate_y FALSE BREAK CASE 2 CREATE_OBJECT CR_GUNCRATE 2278.1770 -1144.8823 27.5107 r3_crate_w ATTACH_OBJECT_TO_CAR r3_crate_w ryders_car -0.5 -2.10 -0.10 0.0 0.0 30.0 SET_OBJECT_COLLISION r3_crate_w FALSE BREAK CASE 4 CREATE_OBJECT CR_GUNCRATE 2278.1770 -1144.8823 27.5107 r3_crate_x ATTACH_OBJECT_TO_CAR r3_crate_x ryders_car 0.4 -2.10 0.30 0.0 30.0 0.0 BREAK CASE 6 CREATE_OBJECT CR_AMMOBOX 2278.1770 -1144.8823 27.5107 r3_crate_z ATTACH_OBJECT_TO_CAR r3_crate_z ryders_car -0.6 -2.10 0.30 0.0 0.0 15.0 BREAK CASE 8 CREATE_OBJECT CR_AMMOBOX 2278.1770 -1144.8823 27.5107 r3_crate_v ATTACH_OBJECT_TO_CAR r3_crate_v ryders_car -0.1 -2.10 0.30 0.0 0.0 15.0 BREAK ENDSWITCH r3_crate_cnt ++ IF r3_crate_cnt >= 10 disdain: CLEAR_ONSCREEN_COUNTER r3_total_guns CLEAR_ONSCREEN_COUNTER throw_power_bar CLEAR_ONSCREEN_TIMER box_timer r3_mission_flag ++ ELSE IF DOES_OBJECT_EXIST new_guns[stored_check_index] DELETE_OBJECT new_guns[stored_check_index] ENDIF ENDIF ENDIF goons_flag = 0 ENDIF ENDIF ENDIF ++ check_index ENDWHILE ENDIF IF NOT IS_CAR_DEAD ryders_car IF box_timer < 10 CLEAR_ONSCREEN_COUNTER r3_total_guns CLEAR_ONSCREEN_COUNTER throw_power_bar CLEAR_ONSCREEN_TIMER box_timer failed_mission = 1 r3_mission_flag ++ ENDIF ENDIF ENDIF IF r3_mission_flag = 11 AND r3_playing = 2 GOSUB r3_fade_out SET_CAR_DENSITY_MULTIPLIER 1.0 CLEAR_HELP IF NOT IS_CAR_DEAD ryders_car STOP_PLAYBACK_RECORDED_CAR ryders_car ENDIF IF NOT IS_CAR_DEAD ammo_train_rear LVAR_FLOAT ryders_car_z r3_direction_h GET_CAR_COORDINATES ammo_train_rear x y z GET_GROUND_Z_FOR_3D_COORD x y z ryders_car_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS ammo_train_rear -2.0 -1.0 -1.0 x y z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS ammo_train_rear 0.0 -4.0 -1.0 x2 y2 z2 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS ammo_train_rear 0.0 10.0 -0.5 x3 y3 z3 LVAR_FLOAT DestX DestY DestZ GET_OFFSET_FROM_CAR_IN_WORLD_COORDS ammo_train_rear 0.0 -50.0 0.0 DestX DestY DestZ GET_CAR_HEADING ammo_train_rear heading GET_CAR_HEADING ammo_train_rear r3_direction_h heading -= 50.0 IF NOT IS_CAR_DEAD ammo_train STOP_PLAYBACK_RECORDED_CAR ammo_train ENDIF ENDIF IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COLLISION scplayer TRUE DETACH_CHAR_FROM_CAR scplayer REMOVE_ANIMATION BOX SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE ENDIF DELETE_MISSION_TRAINS DELETE_OBJECT r3_caboose DELETE_OBJECT r3_crate_a DELETE_OBJECT r3_crate_b DELETE_OBJECT r3_crate_c SET_PLAYER_DISPLAY_VITAL_STATS_BUTTON player1 TRUE IF NOT IS_CAR_DEAD ryders_car AND NOT IS_CHAR_DEAD scplayer FREEZE_CAR_POSITION ryders_car FALSE SET_CAR_COORDINATES ryders_car x y ryders_car_z SET_CAR_HEADING ryders_car heading SET_CHAR_COORDINATES scplayer x2 y2 ryders_car_z SET_CAR_STATUS ryders_car STATUS_PLAYER LOCK_CAR_DOORS ryders_car CARLOCK_UNLOCKED ENDIF GOSUB r3_set_camera SET_FIXED_CAMERA_POSITION x3 y3 z3 0.0 0.0 0.0 LOAD_SCENE_IN_DIRECTION x3 y3 z3 r3_direction_h IF NOT IS_CAR_DEAD ryders_car POINT_CAMERA_AT_CAR ryders_car FIXED JUMP_CUT DELETE_CHAR ryders_goon1 CREATE_CHAR_AS_PASSENGER ryders_car PEDTYPE_MISSION1 FAM1 0 ryders_goon1 SET_CHAR_HEALTH ryders_goon1 800 SET_CHAR_MAX_HEALTH ryders_goon1 800 SET_CHAR_SUFFERS_CRITICAL_HITS ryders_goon1 FALSE SET_CHAR_NEVER_TARGETTED ryders_goon1 TRUE ENDIF IF NOT IS_CHAR_DEAD ryder DETACH_CHAR_FROM_CAR ryder ATTACH_CHAR_TO_CAR ryder ryders_car 0.0 -1.30 0.80 FACING_BACK 15.0 WEAPONTYPE_MICRO_UZI ENDIF IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD ryders_car TASK_ENTER_CAR_AS_DRIVER scplayer ryders_car 4000 ENDIF GOSUB r3_fade_in IF failed_mission = 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD3_JG WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( RYD3_JG ) 2000 1 // You as bad at throwing as you is at driving! ELSE CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD3_HN WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( RYD3_HN ) 2000 1 // Hop in the front and burn rubber! ENDIF WAIT 4000 GOSUB r3_restore_camera DRAW_CROSSHAIR FALSE TIMERA = 0 r3_mission_flag = 35 ENDIF IF r3_mission_flag = 12 IF failed_mission = 1 r3_mission_flag = 35 r3_failed = 1 ELSE r3_mission_flag = 35 ENDIF ENDIF IF r3_mission_flag = 35 IF DOES_BLIP_EXIST r3_catching_blip REMOVE_BLIP r3_catching_blip ENDIF IF failed_mission = 1 GOSUB r3_fade_out IF NOT IS_CAR_DEAD ammo_train DELETE_CAR ammo_train ENDIF IF NOT IS_CHAR_DEAD ryder DELETE_CHAR ryder ENDIF IF NOT IS_CHAR_DEAD ryders_goon1 DELETE_CHAR ryders_goon1 ENDIF IF NOT IS_CAR_DEAD ryders_car AND NOT IS_CHAR_DEAD scplayer IF NOT IS_CHAR_IN_CAR scplayer ryders_car WARP_CHAR_INTO_CAR scplayer ryders_car ENDIF ENDIF check_index = 0 WHILE check_index < 10 DELETE_OBJECT new_guns[check_index] ++ check_index ENDWHILE GOSUB r3_fade_in PRINT_NOW ( RYD3_T ) 4000 1 // ~r~You did not get enough boxes in time. GOTO mission_ryder3_failed ENDIF IF NOT IS_CHAR_DEAD ryder AND NOT IS_CHAR_DEAD scplayer SET_CHAR_RELATIONSHIP ryder ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_COP TASK_STAY_IN_SAME_PLACE ryder TRUE TASK_TOGGLE_PED_THREAT_SCANNER ryder TRUE TRUE TRUE SET_CHAR_DECISION_MAKER ryder r3_tough ENDIF // Player drives back to Grove $r3_print = &RYD3_KA // Man, we got a berry on our tail! r3_audio = SOUND_RYD3_KA GOSUB r3_load_sample TIMERB = 0 r3_time_left = 0 REMOVE_BLIP mission_blip ADD_BLIP_FOR_COORD 2067.4631 -1831.6700 12.5527 mission_blip //ADD_BLIP_FOR_COORD 2451.3799 -1661.6095 12.3047 mission_blip SET_COORD_BLIP_APPEARANCE mission_blip COORD_BLIP_APPEARANCE_NORMAL SET_WANTED_MULTIPLIER 1.0 ALTER_WANTED_LEVEL player1 3 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 r3_mission_flag ++ TIMERA = 0 ENDIF IF r3_mission_flag = 36 AND TIMERA > 4000 IF NOT IS_CHAR_DEAD ryder TASK_TOGGLE_DUCK ryder TRUE ENDIF PRINT_NOW ( RYD3_13 ) 7000 1 // ~s~Use the nearby ~y~pay and spray~s~ to lose the cops r3_mission_flag ++ r3_get_back = 0 ENDIF // ******************************************************************************************************** // * * // * Taking Crates to Grove * // * * // ******************************************************************************************************** IF r3_mission_flag = 37 IF NOT IS_CAR_DEAD ryders_car IF NOT IS_CHAR_IN_CAR scplayer ryders_car PRINT_NOW ( RYD3_Q ) 5000 1 // What are you doing? Get back into the car! IF r3_get_back = 0 REMOVE_BLIP mission_blip ADD_BLIP_FOR_CAR ryders_car mission_blip SET_BLIP_AS_FRIENDLY mission_blip TRUE r3_get_back = 1 ENDIF ELSE IF r3_get_back = 1 REMOVE_BLIP mission_blip IF r3_car_been_sprayed = 1 ADD_BLIP_FOR_COORD 2446.8870 -1661.9623 12.3047 mission_blip // The Grove ELSE ADD_BLIP_FOR_COORD 2067.4631 -1831.6700 12.5527 mission_blip // The Garage ENDIF SET_COORD_BLIP_APPEARANCE mission_blip COORD_BLIP_APPEARANCE_NORMAL r3_get_back = 0 ENDIF ENDIF IF IS_CAR_UPSIDEDOWN ryders_car AND r3_upsidedown = 0 IF NOT IS_CHAR_DEAD ryder TASK_DIE ryder ENDIF r3_upsidedown = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD ryder IF IS_CHAR_SHOOTING ryder AND TIMERB > 10000 AND NOT IS_MESSAGE_BEING_DISPLAYED TIMERB = 0 GENERATE_RANDOM_INT_IN_RANGE 0 8 r3_rnd SWITCH r3_rnd CASE 0 $r3_print = &RYD3_LA // Take this you cop bastards! r3_audio = SOUND_RYD3_LA GOSUB r3_load_sample BREAK CASE 1 $r3_print = &RYD3_LB // You’re dealing with a kung fu master! r3_audio = SOUND_RYD3_LB GOSUB r3_load_sample BREAK CASE 2 $r3_print = &RYD3_LC // Ninja style! r3_audio = SOUND_RYD3_LC GOSUB r3_load_sample BREAK CASE 3 $r3_print = &RYD3_LD // You ain’t never gonna catch this gangsta! r3_audio = SOUND_RYD3_LD GOSUB r3_load_sample BREAK CASE 4 $r3_print = &RYD3_LE // Fuck off, cops! r3_audio = SOUND_RYD3_LE GOSUB r3_load_sample BREAK CASE 5 $r3_print = &RYD3_LF // I’m getting tired of this – fuck off! r3_audio = SOUND_RYD3_LF GOSUB r3_load_sample BREAK CASE 6 $r3_print = &RYD3_LG // You guys got nothing better to do? r3_audio = SOUND_RYD3_LG GOSUB r3_load_sample BREAK CASE 7 $r3_print = &RYD3_LH // I’m a cop killer! r3_audio = SOUND_RYD3_LH GOSUB r3_load_sample BREAK ENDSWITCH ENDIF ENDIF IF NOT IS_CAR_DEAD ryders_car AND NOT IS_CHAR_DEAD scplayer AND r3_get_back = 0 IF NOT IS_CHAR_DEAD ryder AND NOT IS_CHAR_DEAD scplayer IF NOT IS_WANTED_LEVEL_GREATER player1 0 IF r3_car_been_sprayed = 0 AND NOT IS_CHAR_DEAD ryder CLEAR_CHAR_TASKS_IMMEDIATELY ryder CLEAR_ALL_CHAR_RELATIONSHIPS ryder ACQUAINTANCE_TYPE_PED_HATE SET_CHAR_DECISION_MAKER ryder r3_empty TASK_STAY_IN_SAME_PLACE ryder TRUE TASK_TOGGLE_PED_THREAT_SCANNER ryder FALSE FALSE FALSE TASK_TOGGLE_DUCK ryder TRUE IF DOES_BLIP_EXIST mission_blip REMOVE_BLIP mission_blip ENDIF $r3_print = &RYD3_KB // Back to Grove Street! r3_audio = SOUND_RYD3_KB GOSUB r3_load_sample TIMERA = 0 ADD_BLIP_FOR_COORD 2451.3799 -1661.6095 12.3047 mission_blip r3_car_been_sprayed = 1 ENDIF ELSE IF r3_car_been_sprayed = 1 AND NOT IS_CHAR_DEAD ryder IF DOES_BLIP_EXIST mission_blip REMOVE_BLIP mission_blip ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY ryder SET_CHAR_RELATIONSHIP ryder ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_COP TASK_STAY_IN_SAME_PLACE ryder TRUE TASK_TOGGLE_PED_THREAT_SCANNER ryder TRUE TRUE TRUE SET_CHAR_DECISION_MAKER ryder r3_tough TASK_TOGGLE_DUCK ryder TRUE PRINT_NOW ( RYD3_I ) 7000 1 // ~s~Lose the cops use the pay and spray nearby! ADD_BLIP_FOR_COORD 2067.4631 -1831.6700 12.5527 mission_blip // The Garage r3_car_been_sprayed = 0 ENDIF ENDIF ENDIF IF NOT IS_WANTED_LEVEL_GREATER player1 0 AND TIMERA > 4000 AND r3_back_to_grove = 0 PRINT_NOW ( RYD3101 ) 7000 1 // ~s~Take the crates back to ~y~Grove street. r3_back_to_grove = 1 ENDIF IF NOT IS_WANTED_LEVEL_GREATER player1 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2446.8870 -1661.9623 12.3047 4.0 4.0 4.0 TRUE AND IS_CHAR_IN_CAR scplayer ryders_car CLEAR_WANTED_LEVEL player1 CLEAR_AREA 2483.6179 -1666.0925 12.3594 50.0 TRUE GOSUB r3_fade_out IF NOT IS_CHAR_DEAD ryder AND NOT IS_CAR_DEAD ryders_car DETACH_CHAR_FROM_CAR ryder ATTACH_CHAR_TO_CAR ryder ryders_car 0.0 -1.30 0.80 FACING_FORWARD 15.0 WEAPONTYPE_MICRO_UZI ENDIF REMOVE_BLIP mission_blip REQUEST_CAR_RECORDING 104 REQUEST_ANIMATION GANGS WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 104 OR NOT HAS_ANIMATION_LOADED GANGS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD ryders_car IF NOT IS_CHAR_IN_CAR scplayer ryders_car WARP_CHAR_INTO_CAR_AS_PASSENGER scplayer ryders_car 0 ENDIF START_PLAYBACK_RECORDED_CAR ryders_car 104 SKIP_IN_PLAYBACK_RECORDED_CAR ryders_car 1.0 ENDIF GOSUB r3_set_camera SET_FIXED_CAMERA_POSITION 2444.7961 -1650.0048 24.6868 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2445.6292 -1650.4827 24.4081 JUMP_CUT DELETE_CHAR ryders_goon1 IF NOT IS_CHAR_DEAD ryder TASK_TOGGLE_PED_THREAT_SCANNER ryder FALSE FALSE FALSE ENDIF GOSUB r3_fade_in // ***************************************************************************************** CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD3_MA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( RYD3_MA ) 8000 1 // Damn, homie, your stuff was tight! TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_PRINTS // ***************************************************************************************** CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD3_MB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( RYD3_MB ) 8000 1 // You too, homie! TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_PRINTS // ***************************************************************************************** CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD3_MC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( RYD3_MC ) 8000 1 // LB's coming over to stash the shit. TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_PRINTS // ***************************************************************************************** IF NOT IS_CAR_DEAD ryders_car SET_FIXED_CAMERA_POSITION 2472.5762 -1675.4618 14.0837 0.0 0.0 0.0 POINT_CAMERA_AT_CAR ryders_car FIXED JUMP_CUT ENDIF WAIT 5000 IF r3_failed = 0 IF NOT IS_CAR_DEAD ryders_car AND NOT IS_CHAR_DEAD ryder CLEAR_CHAR_TASKS ryder TASK_TOGGLE_DUCK ryder FALSE STOP_PLAYBACK_RECORDED_CAR ryders_car GET_OFFSET_FROM_CAR_IN_WORLD_COORDS ryders_car 0.0 10.0 0.0 x y z TASK_GO_STRAIGHT_TO_COORD scplayer x y z PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD ryder x y z PEDMOVE_WALK -2 ENDIF // ***************************************************************************************** CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD3_MD WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( RYD3_MD ) 8000 1 // Okay, later then. TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_PRINTS // ***************************************************************************************** WAIT 1500 IF HAS_ANIMATION_LOADED GANGS IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2471.3433 -1684.3064 12.5159 // 2471.1055 -1688.0310 12.5198 ELSE SET_CHAR_COORDINATES scplayer 2471.3433 -1684.3064 12.5159 // 2471.1055 -1688.0310 12.5198 ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_HEADING scplayer 238.6571 // 288.4078 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 1.0 -1.0 x y z ENDIF IF NOT IS_CHAR_DEAD ryder IF IS_CHAR_IN_ANY_CAR ryder DETACH_CHAR_FROM_CAR ryder WARP_CHAR_FROM_CAR_TO_COORD ryder x y z ELSE SET_CHAR_COORDINATES ryder x y z ENDIF H = 238.6571 - 180.0 CLEAR_CHAR_TASKS_IMMEDIATELY ryder SET_CHAR_HEADING ryder H OPEN_SEQUENCE_TASK sequence_task TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM -1 2471.3433 -1684.3064 12.5159 238.6571 0.4 PRTIAL_HNDSHK_01 GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_LOOK_AT_CHAR -1 ryder 3000 CLOSE_SEQUENCE_TASK sequence_task PERFORM_SEQUENCE_TASK scplayer sequence_task CLEAR_SEQUENCE_TASK sequence_task OPEN_SEQUENCE_TASK sequence_task TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM -1 x y z H 0.4 PRTIAL_HNDSHK_01 GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 2465.7278 -1687.0248 12.5184 pedmove_walk -2 CLOSE_SEQUENCE_TASK sequence_task PERFORM_SEQUENCE_TASK ryder sequence_task CLEAR_SEQUENCE_TASK sequence_task ENDIF SET_FIXED_CAMERA_POSITION 2472.5212 -1683.4700 14.0526 0.0 0.0 0.0//2471.5955 -1686.8521 14.1658 POINT_CAMERA_AT_POINT 2472.0012 -1684.3237 14.0313 JUMP_CUT//2471.6270 -1687.8485 14.0891 // ***************************************************************************************** CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD3_ME WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( RYD3_ME ) 8000 1 // For life, CJ, for life – you heard? TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_PRINTS // ***************************************************************************************** WAIT 1000 GOSUB r3_fade_out ELSE REQUEST_ANIMATION GANGS ENDIF DELETE_CHAR ryder GOTO mission_ryder3_passed ENDIF ENDIF ENDIF ENDIF ENDIF // ********************************************************************************************** // * * // * DEATH CHECKS COMMENCE * // * * // ********************************************************************************************** IF IS_CAR_DEAD ryders_car PRINT_NOW ( RYD3_14 ) 5000 1 // ~r~Ryders truck has been destroyed! GOTO mission_ryder3_failed ENDIF IF IS_CHAR_DEAD ryder PRINT_NOW ( RYD3_B ) 5000 1 // Ryder is dead! GOTO mission_ryder3_failed ENDIF ENDWHILE GOTO mission_ryder3_failed // Mission ryder3 failed mission_ryder3_failed: IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF SET_WANTED_MULTIPLIER 1.0 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE ENDIF PRINT_BIG M_FAIL 5000 1 RETURN // mission ryder3 passed mission_ryder3_passed: IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF GOSUB r3_restore_camera SET_WANTED_MULTIPLIER 1.0 SET_CAMERA_BEHIND_PLAYER GOSUB r3_fade_in PRINT_WITH_NUMBER_BIG ( M_PASSR ) 7 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 7 PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL player1 flag_ryder_mission_counter ++ PLAYER_MADE_PROGRESS 1 REGISTER_MISSION_PASSED ( RYDER_3 ) RETURN // mission cleanup mission_ryder3_cleanup: IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF IF NOT IS_CHAR_DEAD ryder REMOVE_CHAR_ELEGANTLY ryder ENDIF DRAW_CROSSHAIR FALSE SET_WANTED_MULTIPLIER 1.0 SET_PLAYER_DISPLAY_VITAL_STATS_BUTTON player1 TRUE REMOVE_CAR_RECORDING 490 REMOVE_CAR_RECORDING 486 REMOVE_CAR_RECORDING 104 IF NOT IS_CHAR_DEAD r3_dead_grove DELETE_CHAR r3_dead_grove ENDIF IF NOT IS_CHAR_DEAD r3_dead_lsv DELETE_CHAR r3_dead_lsv ENDIF REPEAT 4 v IF DOES_BLIP_EXIST r3_ballas_inv[v] REMOVE_BLIP r3_ballas_inv[v] ENDIF IF DOES_BLIP_EXIST r3_enemy_inv[v] REMOVE_BLIP r3_enemy_inv[v] ENDIF ENDREPEAT IF DOES_BLIP_EXIST r3_catching_blip REMOVE_BLIP r3_catching_blip ENDIF IF DOES_BLIP_EXIST mission_blip REMOVE_BLIP mission_blip ENDIF IF DOES_BLIP_EXIST f4_train_rear_blip REMOVE_BLIP f4_train_rear_blip ENDIF IF DOES_BLIP_EXIST r3_ryders_car_blip REMOVE_BLIP r3_ryders_car_blip ENDIF DELETE_OBJECT r3_ammo_crate[0] DELETE_OBJECT r3_ammo_crate[1] DELETE_OBJECT r3_ammo_crate[2] DELETE_OBJECT r3_ammo_crate[3] DELETE_OBJECT r3_crate_a DELETE_OBJECT r3_crate_b DELETE_OBJECT r3_crate_c DELETE_OBJECT r3_crate_v DELETE_OBJECT r3_crate_w DELETE_OBJECT r3_crate_x DELETE_OBJECT r3_crate_y DELETE_OBJECT r3_crate_z SET_CREATE_RANDOM_GANG_MEMBERS TRUE CLEAR_ONSCREEN_COUNTER r3_total_guns CLEAR_ONSCREEN_COUNTER throw_power_bar CLEAR_ONSCREEN_TIMER box_timer DETACH_CHAR_FROM_CAR ryder DETACH_CHAR_FROM_CAR scplayer SWITCH_RANDOM_TRAINS ON MARK_MODEL_AS_NO_LONGER_NEEDED picador MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED CR_GUNCRATE MARK_MODEL_AS_NO_LONGER_NEEDED CR_AMMOBOX MARK_MODEL_AS_NO_LONGER_NEEDED FAM1 MARK_MODEL_AS_NO_LONGER_NEEDED FAM2 MARK_MODEL_AS_NO_LONGER_NEEDED LSV1 MARK_MODEL_AS_NO_LONGER_NEEDED LSV2 MARK_MODEL_AS_NO_LONGER_NEEDED LSV3 MARK_MODEL_AS_NO_LONGER_NEEDED FREIGHT MARK_MODEL_AS_NO_LONGER_NEEDED FREIFLAT MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO MARK_MODEL_AS_NO_LONGER_NEEDED ballas1 MARK_MODEL_AS_NO_LONGER_NEEDED ballas3 MARK_MODEL_AS_NO_LONGER_NEEDED micro_uzi MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ REMOVE_ANIMATION BOX REMOVE_ANIMATION GANGS REMOVE_ANIMATION RYDER REMOVE_ANIMATION SWAT SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 UNLOAD_SPECIAL_CHARACTER 1 SWITCH_ROADS_BACK_TO_ORIGINAL 2284.0 -1151.0 10.0 2288.0 -1147.0 30.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2287.3213 -1132.5714 10.0000 2360.8386 -1177.1337 40.0000 SWITCH_ROADS_BACK_TO_ORIGINAL 2311.6763 -1375.3975 10.0000 2292.3650 -1303.1021 40.0000 SWITCH_ROADS_BACK_TO_ORIGINAL 2268.6953 -1138.5408 10.0000 2282.3616 -1159.6042 40.0000 SWITCH_ROADS_BACK_TO_ORIGINAL 2307.5366 -1162.6240 10.0000 2266.3511 -1136.9897 40.0000 // SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2311.6538 -1165.1200 10.0000 2255.6228 -1134.2437 40.0000 // SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2284.0 -1151.0 10.0 2288.0 -1147.0 40.0 // SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2287.3213 -1132.5714 10.0000 2360.8386 -1177.1337 40.0000 flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start CLEAR_WANTED_LEVEL player1 SET_WANTED_MULTIPLIER 1.0 MISSION_HAS_FINISHED RETURN // ********************************** camera stuff ************************************ r3_set_camera: SET_PLAYER_CONTROL player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE CLEAR_PRINTS CLEAR_HELP RETURN r3_restore_camera: SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT CLEAR_HELP CLEAR_PRINTS RETURN r3_fade_out: DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN r3_fade_in: DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN // ***************************************************************************************** // * * // * Keyboard shortcuts * // * * // ***************************************************************************************** ryder3_keys: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A REQUEST_MODEL picador WHILE NOT HAS_MODEL_LOADED picador WAIT 0 ENDWHILE LVAR_INT r3_spawn_car CREATE_CAR picador 2298.3899 -1149.0121 25.7656 r3_spawn_car SET_CAR_HEADING r3_spawn_car 45.7660 IF NOT IS_CHAR_DEAD scplayer WARP_CHAR_INTO_CAR scplayer r3_spawn_car ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED picador r3_mission_flag = 50 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B REQUEST_CAR_RECORDING 486 REQUEST_CAR_RECORDING 490 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 486 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 490 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD ammo_train FREEZE_CAR_POSITION ammo_train FALSE START_PLAYBACK_RECORDED_CAR ammo_train 490 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 REQUEST_MODEL FREIGHT REQUEST_MODEL FREIFLAT REQUEST_MODEL GREENWOO REQUEST_CAR_RECORDING 106 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 106 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED FREIGHT OR NOT HAS_MODEL_LOADED FREIFLAT OR NOT HAS_MODEL_LOADED GREENWOO WAIT 0 ENDWHILE LVAR_INT ammo_train3 CREATE_MISSION_TRAIN 10 2278.1770 -1144.8823 27.5107 1 ammo_train3 MARK_MODEL_AS_NO_LONGER_NEEDED FREIGHT MARK_MODEL_AS_NO_LONGER_NEEDED FREIFLAT SET_TRAIN_SPEED ammo_train3 0.0 SET_TRAIN_CRUISE_SPEED ammo_train3 0.0 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F IF NOT IS_CHAR_DEAD ryder TASK_PLAY_ANIM ryder RYD_Beckon_01 RYDER 1.0 FALSE FALSE FALSE FALSE -1 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K collected_guns = 9 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H IF NOT IS_CHAR_DEAD scplayer REQUEST_ANIMATION CARRY WHILE NOT HAS_ANIMATION_LOADED CARRY WAIT 0 ENDWHILE GET_CHAR_COORDINATES scplayer x y z CREATE_OBJECT_NO_OFFSET crate_model x y z new_guns[0] SET_OBJECT_COLLISION new_guns[0] FALSE TASK_PICK_UP_OBJECT scplayer new_guns[0] 0.0 0.3 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL CATCH_BOX BOX 0 REMOVE_ANIMATION CARRY ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_P REQUEST_CAR_RECORDING 486 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 486 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD ryders_car START_PLAYBACK_RECORDED_CAR ryders_car 486 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_I IF NOT IS_CAR_DEAD ryders_car CREATE_OBJECT CR_GUNCRATE 2278.1770 -1144.8823 27.5107 r3_crate_y ATTACH_OBJECT_TO_CAR r3_crate_y ryders_car 0.4 -2.10 -0.10 0.0 0.0 15.0 SET_OBJECT_COLLISION r3_crate_y FALSE CREATE_OBJECT CR_GUNCRATE 2278.1770 -1144.8823 27.5107 r3_crate_w ATTACH_OBJECT_TO_CAR r3_crate_w ryders_car -0.5 -2.10 -0.10 0.0 0.0 30.0 SET_OBJECT_COLLISION r3_crate_w FALSE CREATE_OBJECT CR_GUNCRATE 2278.1770 -1144.8823 27.5107 r3_crate_x ATTACH_OBJECT_TO_CAR r3_crate_x ryders_car 0.4 -2.10 0.30 0.0 30.0 0.0 CREATE_OBJECT CR_AMMOBOX 2278.1770 -1144.8823 27.5107 r3_crate_z ATTACH_OBJECT_TO_CAR r3_crate_z ryders_car -0.6 -2.10 0.30 0.0 0.0 15.0 CREATE_OBJECT CR_AMMOBOX 2278.1770 -1144.8823 27.5107 r3_crate_v ATTACH_OBJECT_TO_CAR r3_crate_v ryders_car -0.1 -2.10 0.30 0.0 0.0 15.0 ENDIF ENDIF RETURN r3_load_sample: CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 r3_audio r3_playing = 0 RETURN r3_play_sample: IF HAS_MISSION_AUDIO_LOADED 1 AND r3_playing = 0 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $r3_print ) 10000 1 r3_playing = 1 ENDIF IF HAS_MISSION_AUDIO_FINISHED 1 AND r3_playing = 1 CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT $r3_print r3_playing = 2 ENDIF RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION RYDER2 : // AUTHOR : // DESICRIPTION : // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** { // ************************************************************************************************************* // GENERAL INITIALISATION - Every level requires this // ************************************************************************************************************* SCRIPT_NAME RYDER2 GOSUB mission_start_RYDER2 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_RYDER2 ENDIF GOSUB mission_cleanup_RYDER2 MISSION_END mission_start_RYDER2: //WRITE_DEBUG ryder2_started REGISTER_MISSION_GIVEN flag_player_on_mission = 1 // general variables that are in every mission - DON'T DECLARE MISSION SPECIFIC VARIABLES HERE LVAR_INT m_stage LVAR_INT m_goals LVAR_INT m_passed LVAR_INT m_failed LVAR_INT frame_num LVAR_INT this_frame_time LVAR_INT last_frame_time LVAR_INT time_diff // commonly used temporary variables LVAR_INT temp_int temp_int2 temp_int3 LVAR_FLOAT temp_float temp_float2 temp_float3 LVAR_INT temp_seq LVAR_INT dialogue_flag dialogue_flag2 m_stage = 0 m_goals = 0 m_passed = 0 m_failed = 0 dialogue_flag = 0 dialogue_flag2 = 0 mission_loop_RYDER2: WAIT 0 // frame count frame_num++ IF frame_num > 9 frame_num = 0 ENDIF // timer GET_GAME_TIMER this_frame_time time_diff = this_frame_time - last_frame_time last_frame_time = this_frame_time ping_box_timer += time_diff ryder_dialogue_timer += time_diff gate_reminder_timer += time_diff temp_int = 0 WHILE temp_int < 9 m_guard_timer[temp_int] += time_diff temp_int++ ENDWHILE LVAR_INT spawn_timer LVAR_INT jeep_timer LVAR_INT exploding_box_timer LVAR_INT dialogue_timer LVAR_INT boxes_outside_timer LVAR_INT load_box_timer LVAR_INT ryder_dialogue_timer2 spawn_timer += time_diff jeep_timer += time_diff exploding_box_timer += time_diff dialogue_timer += time_diff boxes_outside_timer += time_diff load_box_timer += time_diff ryder_dialogue_timer2 += time_diff IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S m_passed = 1 ENDIF //GOSUB adjust_box_position GOSUB ryder2_debug_tools ryder2_loop_start: SWITCH m_stage CASE 0 GOSUB ryder2_m_stage_0 BREAK CASE 1 GOSUB ryder2_m_stage_1 BREAK CASE 2 GOSUB ryder2_m_stage_2 BREAK CASE 3 GOSUB ryder2_m_stage_3 BREAK CASE 4 GOSUB ryder2_m_stage_4 BREAK CASE 5 GOSUB ryder2_m_stage_5 BREAK CASE 6 GOSUB ryder2_m_stage_6 BREAK CASE 7 GOSUB ryder2_m_stage_7 BREAK ENDSWITCH GOSUB ryder2_global_functions IF goto_start_of_loop = 1 goto_start_of_loop = 0 GOTO ryder2_loop_start ENDIF // end of main loop IF m_failed = 0 IF m_passed = 0 GOTO mission_loop_RYDER2 ELSE GOSUB mission_passed_RYDER2 RETURN ENDIF ELSE GOSUB mission_failed_RYDER2 RETURN ENDIF // Fake create GOTO ry2_skip_this CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 ryder CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 exploding_box[0] CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 throwing_box CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 displayed_boxes_in_van[0] CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 hide_anim_box CREATE_CAR PONY 0.0 0.0 0.0 patriot1 CREATE_CAR PONY 0.0 0.0 0.0 patriot2 ADD_BLIP_FOR_COORD 0.0 0.0 0.0 van_blip ADD_BLIP_FOR_COORD 0.0 0.0 0.0 location_blip ADD_BLIP_FOR_COORD 0.0 0.0 0.0 ryder_blip ADD_BLIP_FOR_COORD 0.0 0.0 0.0 switch1_blip ADD_BLIP_FOR_COORD 0.0 0.0 0.0 switch2_blip CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 fake_van_collision_obj CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 spawned_dude[0] ry2_skip_this: // ************************************************************************************************************* // COMMONLY USED STUFF FOR EVERY SCRIPT - DON'T CHANGE // ************************************************************************************************************* ryder2_debug_tools: LVAR_INT debug_on IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_X IF debug_on = 0 debug_on = 1 WRITE_DEBUG LEVEL_DEBUG_ON IF NOT IS_CHAR_DEAD ryder SET_CHAR_ONLY_DAMAGED_BY_PLAYER ryder TRUE // TAKE OUT !!!!!! ENDIF ELSE debug_on = 0 WRITE_DEBUG LEVEL_DEBUG_OFF ENDIF ENDIF IF debug_on = 1 // display mission stage variables for debug LVAR_INT display_debug VAR_INT ry2_view_debug[8] VAR_FLOAT ry2_view_debug_f[8] IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_SPACE display_debug++ IF display_debug > 2 display_debug = 0 ENDIF CLEAR_ALL_VIEW_VARIABLES ENDIF IF display_debug = 1 ry2_view_debug[0] = m_stage ry2_view_debug[1] = m_goals ry2_view_debug[2] = ryder_stage ry2_view_debug[3] = warehouse_opened ry2_view_debug_f[4] = gate2_target_z ry2_view_debug[5] = dialogue_flag ry2_view_debug[6] = dialogue_flag2 ry2_view_debug[7] = audio_line_is_active VIEW_INTEGER_VARIABLE ry2_view_debug[0] m_stage VIEW_INTEGER_VARIABLE ry2_view_debug[1] m_goals VIEW_INTEGER_VARIABLE ry2_view_debug[2] ryder_stage VIEW_INTEGER_VARIABLE ry2_view_debug[3] warehouse_opened VIEW_FLOAT_VARIABLE ry2_view_debug_f[4] gate2_target_z VIEW_INTEGER_VARIABLE ry2_view_debug[5] dialogue_flag VIEW_INTEGER_VARIABLE ry2_view_debug[6] dialogue_flag2 VIEW_INTEGER_VARIABLE ry2_view_debug[7] audio_line_is_active ENDIF IF display_debug = 2 ry2_view_debug[0] = ryder_get_box_flag ry2_view_debug[1] = loaded_boxes ry2_view_debug[2] = spawn_this_many_guards ry2_view_debug[3] = TIMERA ry2_view_debug[4] = spawn_timer // ry2_view_debug[5] = // ry2_view_debug[6] = // ry2_view_debug[7] = VIEW_INTEGER_VARIABLE ry2_view_debug[0] ryder_get_box_flag VIEW_INTEGER_VARIABLE ry2_view_debug[1] loaded_boxes VIEW_INTEGER_VARIABLE ry2_view_debug[2] spawn_this_many_guards VIEW_INTEGER_VARIABLE ry2_view_debug[3] TIMERA VIEW_INTEGER_VARIABLE ry2_view_debug[4] spawn_timer // VIEW_INTEGER_VARIABLE ry2_view_debug[5] // VIEW_INTEGER_VARIABLE ry2_view_debug[6] // VIEW_INTEGER_VARIABLE ry2_view_debug[7] ENDIF ENDIF RETURN // ************************************************************************************************************* // INITIALISATION - SPECIFIC TO THIS LEVEL // ************************************************************************************************************* ryder2_m_stage_0: // Specific mission variables // Initialise any variables IF m_goals = 0 // objects LVAR_INT switch1 LVAR_INT switch2 LVAR_INT m_box[25] LVAR_INT back_door[6] LVAR_INT fake_van_collision_obj LVAR_INT fake_ryder_collision // vehicles LVAR_INT van LVAR_INT patriot1 patriot2 LVAR_INT m_mesa LVAR_INT fork LVAR_INT jeep1 LVAR_INT jeep2 // peds LVAR_INT m_guard[9] LVAR_INT m_mesa_driver LVAR_INT fork_driver LVAR_INT driver1 LVAR_INT driver2 LVAR_INT end_cut_ped1 LVAR_INT end_cut_ped2 LVAR_INT passenger1 LVAR_INT passenger2 // blips LVAR_INT van_blip LVAR_INT location_blip LVAR_INT ryder_blip LVAR_INT switch1_blip LVAR_INT switch2_blip // flags LVAR_INT alarm_raised LVAR_INT player_got_uniform LVAR_INT player_in_complex LVAR_INT loaded_boxes LVAR_INT guards_alerted LVAR_INT fork_loaded fork_box1 LVAR_INT ryder_got_driveby LVAR_INT warehouse_opened LVAR_INT gate1_opened LVAR_INT ryder_stage LVAR_INT generate_baddies LVAR_INT m_wave LVAR_INT jeep_wave LVAR_INT passenger1_got_task LVAR_INT passenger2_got_task VAR_INT ryder_health LVAR_INT ryder_health_displayed LVAR_INT ping_box_timer LVAR_INT ryder_dialogue_timer LVAR_INT ryder_dialogue_int LVAR_INT gate_reminder_timer LVAR_INT smashed_boxes LVAR_INT boxes_are_outside_dialogue LVAR_INT m_box_value[25] LVAR_INT m_guard_flag[9] LVAR_INT m_guard_timer[9] LVAR_INT ryder_text_van LVAR_INT ryder_flag LVAR_INT ryder_explained_what_to_do LVAR_INT burst_tyres_flag LVAR_INT conversation_on_route_back LVAR_INT chasers_have_bugged_off LVAR_INT van_collision LVAR_INT enable_fake_van_collision LVAR_INT jeep_created LVAR_INT spawn_difficulty LVAR_INT required_boxes LVAR_INT beep_sound_flag LVAR_INT told_more_boxes_outside LVAR_INT goto_start_of_loop // coords LVAR_FLOAT m_guard_off_x m_guard_off_y m_guard_off_z LVAR_FLOAT x2 y2 z2 // pickups LVAR_INT m_pickup[25] // decision makers LVAR_INT ryder_dm LVAR_INT tough_dm LVAR_INT empty_dm LVAR_INT driveby_dm // groups LVAR_INT guard_group // gates for now LVAR_INT gate1 LVAR_INT gate2 LVAR_FLOAT gate1_start_x gate1_start_y gate1_start_z LVAR_FLOAT gate2_start_x gate2_start_y gate2_start_z LVAR_FLOAT gate1_target_x gate1_target_y gate1_target_z LVAR_FLOAT gate2_target_x gate2_target_y gate2_target_z LVAR_FLOAT gate3_target_x gate3_target_y gate3_target_z LVAR_INT gate3 gate4 gate7 // set flags ryder = 0 van = 0 fork = 0 alarm_raised = 0 player_got_uniform = 0 player_in_complex = 0 loaded_boxes = 0 guards_alerted = 0 fork_loaded = 0 fork_box1 = 0 ryder_got_driveby = 0 warehouse_opened = 0 gate1_opened = 0 ryder_stage = 0 generate_baddies = 0 m_wave = 0 jeep_wave = 0 passenger1_got_task = 0 passenger2_got_task = 0 ryder_health = 0 ryder_health_displayed = 0 ryder_dialogue_int = 0 //first_box_picked_up = 0 smashed_boxes = 0 boxes_are_outside_dialogue = 0 jeep_created = 0 spawn_difficulty = 0 goto_start_of_loop = 0 temp_int = 0 WHILE temp_int < 9 m_guard_flag[temp_int] = 0 temp_int++ ENDWHILE location_blip = 0 burst_tyres_flag = 0 van_collision = 0 enable_fake_van_collision = 0 show_front_box = 0 told_more_boxes_outside = 0 required_boxes = 6 gate1_start_x = 2720.623 gate1_start_y = -2405.432 gate1_start_z = 13.989 gate2_start_x = 2774.361 gate2_start_y = -2417.829 gate2_start_z = 14.675 spawn_x1[0] = 2721.0 // stairs 1 spawn_y1[0] = -2380.0 spawn_z1[0] = 16.3507 spawn_h1[0] = 173.3713 spawn_x2[0] = 2721.6006 spawn_y2[0] = -2384.6377 spawn_z2[0] = 16.3403 spawn_x3[0] = 2732.8726 spawn_y3[0] = -2385.6775 spawn_z3[0] = 12.6250 spawn_x4[0] = 2763.6924 spawn_y4[0] = -2411.2581 spawn_z4[0] = 12.6276 spawn_x1[1] = 2729.35 // stairs 2 2729.3586 -2451.0784 spawn_y1[1] = -2451.07 spawn_z1[1] = 16.6007 spawn_h1[1] = 247.5382 spawn_x2[1] = 2734.9082 spawn_y2[1] = -2451.3196 spawn_z2[1] = 16.5938 spawn_x3[1] = 2735.1760 spawn_y3[1] = -2437.9150 spawn_z3[1] = 12.6362 spawn_x4[1] = 2763.7722 spawn_y4[1] = -2428.2026 spawn_z4[1] = 12.4725 spawn_x1[2] = 2748.5549 // porta 1 spawn_y1[2] = -2453.0491 spawn_z1[2] = 12.8623 spawn_h1[2] = 347.9489 spawn_x2[2] = 2748.5955 spawn_y2[2] = -2446.5869 spawn_z2[2] = 12.6432 spawn_x3[2] = 2757.5857 spawn_y3[2] = -2434.7612 spawn_z3[2] = 12.4876 spawn_x4[2] = 2766.1582 spawn_y4[2] = -2432.0142 spawn_z4[2] = 12.6485 spawn_x1[3] = 2793.5156 // dont want porta 2 spawn_y1[3] = -2394.2839 spawn_z1[3] = 12.8623 spawn_h1[3] = 178.5569 spawn_x2[3] = 2793.4727 spawn_y2[3] = -2398.6621 spawn_z2[3] = 12.6323 spawn_x3[3] = 2799.5728 spawn_y3[3] = -2403.2915 spawn_z3[3] = 12.6308 spawn_x4[3] = 2799.2507 spawn_y4[3] = -2410.9849 spawn_z4[3] = 12.6309 spawn_x1[4] = 2721.0 // stairs 1 spawn_y1[4] = -2380.0 spawn_z1[4] = 16.3507 spawn_h1[4] = 186.1396 spawn_x2[4] = 2721.5022 spawn_y2[4] = -2383.6094 spawn_z2[4] = 16.3403 spawn_x3[4] = 2733.7444 spawn_y3[4] = -2386.2271 spawn_z3[4] = 12.6250 spawn_x4[4] = 2754.8855 spawn_y4[4] = -2409.5017 spawn_z4[4] = 12.5104 spawn_x1[5] = 2729.35 // stairs2 spawn_y1[5] = -2451.07 spawn_z1[5] = 16.6007 spawn_h1[5] = 246.8993 spawn_x2[5] = 2734.4683 spawn_y2[5] = -2450.8242 spawn_z2[5] = 16.5938 spawn_x3[5] = 2735.5732 spawn_y3[5] = -2436.6675 spawn_z3[5] = 12.6361 spawn_x4[5] = 2759.3601 spawn_y4[5] = -2420.3557 spawn_z4[5] = 12.4948 spawn_x1[6] = 2748.5513 // porta 1 spawn_y1[6] = -2452.8279 spawn_z1[6] = 12.8623 spawn_h1[6] = 339.2833 spawn_x2[6] = 2750.6704 spawn_y2[6] = -2442.9441 spawn_z2[6] = 12.6432 spawn_x3[6] = 2758.1475 spawn_y3[6] = -2440.4915 spawn_z3[6] = 12.4936 spawn_x4[6] = 2769.0291 spawn_y4[6] = -2430.3367 spawn_z4[6] = 12.6485 spawn_x1[7] = 2793.6384 // porta 2 dont want spawn_y1[7] = -2395.2266 spawn_z1[7] = 12.8623 spawn_h1[7] = 170.3273 spawn_x2[7] = 2793.9031 spawn_y2[7] = -2399.0630 spawn_z2[7] = 12.6322 spawn_x3[7] = 2799.3840 spawn_y3[7] = -2403.4741 spawn_z3[7] = 12.6309 spawn_x4[7] = 2799.4099 spawn_y4[7] = -2414.3362 spawn_z4[7] = 12.6309 spawn_x1[8] = 2799.7637 // back door 2 dont want spawn_y1[8] = -2433.0024 spawn_z1[8] = 12.6308 spawn_h1[8] = 358.8697 spawn_x2[8] = 2799.9019 spawn_y2[8] = -2425.6943 spawn_z2[8] = 12.6307 spawn_x3[8] = 2796.6543 spawn_y3[8] = -2420.4629 spawn_z3[8] = 12.6315 spawn_x4[8] = 2786.0105 spawn_y4[8] = -2414.4451 spawn_z4[8] = 12.6341 spawn_x1[9] = 2800.0078 // back door2 dont want spawn_y1[9] = -2432.2847 spawn_z1[9] = 12.6307 spawn_h1[9] = 2.0796 spawn_x2[9] = 2800.0232 spawn_y2[9] = -2426.1531 spawn_z2[9] = 12.6307 spawn_x3[9] = 2790.8010 spawn_y3[9] = -2421.9172 spawn_z3[9] = 12.6330 spawn_x4[9] = 2786.3369 spawn_y4[9] = -2421.4333 spawn_z4[9] = 12.6340 m_goals++ ENDIF // Load any text / textures etc. IF m_goals = 1 LOAD_MISSION_TEXT RYDER2 // REQUEST_ANIMATION BOX // REQUEST_ANIMATION CARRY // WHILE NOT HAS_ANIMATION_LOADED BOX // OR NOT HAS_ANIMATION_LOADED CARRY // WAIT 0 // ENDWHILE m_goals++ ENDIF START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 // load decision makers LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY empty_dm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH tough_dm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH ryder_dm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY driveby_dm // load audio bank LOAD_MISSION_AUDIO 3 SOUND_BANK_UNCLE_SAM WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE // Environment Settings IF m_goals = 2 //SWITCH_PED_ROADS_OFF 2694.0 -2329.3125 0.0 2811.9556 -2567.3694 20.0 //SET_PED_DENSITY_MULTIPLIER 1.0 //SET_CAR_DENSITY_MULTIPLIER 0.3 //SET_TIME_OF_DAY 23 1 SET_WANTED_MULTIPLIER 0.2 m_goals = 99 ENDIF // End of stage IF m_goals = 99 m_stage++ m_goals = 0 ENDIF RETURN // ************************************************************************************************************* // STAGE 1 - wait for player to get in van and drive to 1st locate // ************************************************************************************************************* ryder2_m_stage_1: // animated cut scene IF m_goals = 0 CLEAR_AREA 2463.4751 -1713.4281 12.5025 20.0 TRUE LOAD_CUTSCENE RYDER2A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE m_goals++ ENDIF // create van outside house IF m_goals = 1 CHECKPOINT_SAVE 99 IF IS_CHECKPOINT_RESUMING TRUE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY empty_dm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH tough_dm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH ryder_dm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY driveby_dm ENDIF SWITCH_CAR_GENERATOR gen_car6 0 //Ryders car CLEAR_AREA 2472.81 -1690.97 12.53 5.0 TRUE REQUEST_MODEL MULE LOAD_SPECIAL_CHARACTER 1 RYDER2 REQUEST_MODEL COLT45 WHILE NOT HAS_MODEL_LOADED MULE OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_MODEL_LOADED COLT45 WAIT 0 ENDWHILE SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 TRUE SET_CAR_MODEL_COMPONENTS MULE -1 -1 CREATE_CAR MULE 2475.9084 -1679.6207 12.3447 van SET_CAR_HEADING van 69.0573 REMOVE_BLIP van_blip ADD_BLIP_FOR_CAR van van_blip SET_BLIP_AS_FRIENDLY van_blip TRUE SET_CAN_BURST_CAR_TYRES van FALSE VEHICLE_DOES_PROVIDE_COVER van FALSE SUPPRESS_CAR_MODEL MULE // create ryder CREATE_CHAR_AS_PASSENGER van PEDTYPE_MISSION2 SPECIAL01 0 ryder SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR ryder FALSE GIVE_WEAPON_TO_CHAR ryder WEAPONTYPE_PISTOL 99999 SET_CHAR_ACCURACY ryder 70 SET_CHAR_MAX_HEALTH ryder 500 SET_CHAR_HEALTH ryder 500 TASK_TOGGLE_PED_THREAT_SCANNER ryder FALSE FALSE FALSE SET_CHAR_NEVER_TARGETTED ryder TRUE SET_CHAR_SUFFERS_CRITICAL_HITS ryder FALSE SET_ANIM_GROUP_FOR_CHAR ryder gang1 SET_CHAR_DECISION_MAKER ryder ryder_dm CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE ryder_dm EVENT_VEHICLE_ON_FIRE //PRINT_NOW RY2_01 8000 1 // Ryder - 'I got my hands on this funky van which should do the trick, get in.' TASK_LOOK_AT_CHAR ryder scplayer 999999 PRINT_NOW RY2_03 7000 1 dialogue_flag = 0 SET_CHAR_CANT_BE_DRAGGED_OUT ryder TRUE SET_ANIM_GROUP_FOR_CHAR ryder MAN SET_CHAR_COORDINATES scplayer 2474.8699 -1698.4652 12.5210 SET_CHAR_HEADING scplayer 4.8941 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 0 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON TIMERA = 0 // create gates CREATE_OBJECT_NO_OFFSET KMB_FRONTGATE gate1_start_x gate1_start_y gate1_start_z gate1 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS gate1 0.0 10.0 0.0 gate1_target_x gate1_target_y gate1_target_z CREATE_OBJECT_NO_OFFSET WAREHOUSE_DOOR2B gate2_start_x gate2_start_y gate2_start_z gate2 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS gate2 0.0 0.0 4.0 gate2_target_x gate2_target_y gate2_target_z // create other gates CREATE_OBJECT_NO_OFFSET KMB_FRONTGATE 2720.623 -2504.023 13.989 gate3 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS gate3 0.0 10.0 0.0 gate3_target_x gate3_target_y gate3_target_z CREATE_OBJECT_NO_OFFSET WAREHOUSE_DOOR2B 2774.361 -2493.922 14.675 gate4 // far CREATE_OBJECT_NO_OFFSET WAREHOUSE_DOOR2B 2774.361 -2455.925 14.675 gate7 // near // create back doors CREATE_OBJECT_NO_OFFSET WAREHOUSE_DOOR1 2799.75 -2405.3943 14.58 back_door[0] CREATE_OBJECT_NO_OFFSET WAREHOUSE_DOOR1 2799.75 -2430.2153 14.58 back_door[1] CREATE_OBJECT_NO_OFFSET WAREHOUSE_DOOR1 2799.75 -2443.4866 14.58 back_door[2] CREATE_OBJECT_NO_OFFSET WAREHOUSE_DOOR1 2799.75 -2468.2542 14.58 back_door[3] CREATE_OBJECT_NO_OFFSET WAREHOUSE_DOOR1 2799.75 -2481.7112 14.58 back_door[4] CREATE_OBJECT_NO_OFFSET WAREHOUSE_DOOR1 2799.75 -2506.3135 14.58 back_door[5] temp_int = 0 WHILE temp_int < 6 FREEZE_OBJECT_POSITION back_door[temp_int] TRUE temp_int++ ENDWHILE // create switches CREATE_OBJECT SEC_KEYPAD 2720.4749 -2411.8562 13.8768 switch1 MAKE_OBJECT_TARGETTABLE switch1 TRUE SET_OBJECT_HEADING switch1 90.0 SET_OBJECT_HEALTH switch1 10 FREEZE_OBJECT_POSITION switch1 TRUE SET_OBJECT_COLLISION switch1 OFF CREATE_OBJECT SEC_KEYPAD 2774.1479 -2423.2297 14.2684 switch2 MAKE_OBJECT_TARGETTABLE switch2 TRUE SET_OBJECT_HEADING switch2 270.0 SET_OBJECT_HEALTH switch2 10 FREEZE_OBJECT_POSITION switch2 TRUE SET_OBJECT_COLLISION switch2 OFF SET_RADIO_CHANNEL RS_MODERN_HIP_HOP dialogue_flag = 0 TIMERA = 0 m_goals++ CHECKPOINT_SAVE 99 ENDIF // wait for player to get into van IF m_goals = 2 IF audio_line_is_active = 0 IF NOT IS_CAR_DEAD van IF IS_CHAR_IN_CAR scplayer van REMOVE_BLIP location_Blip ADD_BLIP_FOR_COORD 2699.2932 -2395.0129 12.6172 location_blip PRINT_NOW RY2_02 7000 1 //Drive down to the compound at Ocean Docks. dialogue_timer = 0 m_goals++ dialogue_flag = 0 dialogue_flag2 = 0 IF NOT IS_CHAR_DEAD ryder CLEAR_LOOK_AT ryder ENDIF ENDIF ENDIF ENDIF ENDIF // wait for player to arrive at docks IF m_goals = 3 // cheat to warp player there IF debug_on = 1 IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK SET_CHAR_COORDINATES scplayer 2699.2932 -2395.0129 12.6172 ENDIF ENDIF IF NOT IS_CAR_DEAD van IF DOES_BLIP_EXIST location_blip IF LOCATE_CAR_3D van 2699.2932 -2395.0129 12.6172 4.0 4.0 4.0 TRUE IF IS_CHAR_IN_CAR scplayer van IF IS_VEHICLE_ON_ALL_WHEELS van STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 2000000 SET_PLAYER_CONTROL player1 OFF REMOVE_BLIP location_blip m_goals = 99 ENDIF ENDIF ENDIF ENDIF ENDIF // conversation IF dialogue_timer > 7500 IF NOT IS_CHAR_DEAD ryder IF IS_CHAR_IN_ANY_CAR ryder STORE_CAR_CHAR_IS_IN ryder car IF NOT IS_CAR_DEAD car IF IS_CHAR_IN_CAR scplayer car IF TIMERB > 1000 IF audio_line_is_active = 0 SWITCH dialogue_flag2 CASE 0 $audio_string = &RYD2_AA audio_sound_file = SOUND_RYD2_AA START_NEW_SCRIPT audio_line ryder 0 0 2 0 dialogue_flag2++ TIMERB = 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD2_CA BREAK CASE 1 $audio_string = &RYD2_CA audio_sound_file = SOUND_RYD2_CA IF dialogue_flag = 0 START_NEW_SCRIPT audio_line scplayer 0 0 1 1 ELSE START_NEW_SCRIPT audio_line scplayer 0 0 1 0 dialogue_flag = 0 ENDIF dialogue_flag2++ TIMERB = 0 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_RYD2_CB BREAK CASE 2 $audio_string = &RYD2_CB audio_sound_file = SOUND_RYD2_CB IF dialogue_flag = 0 START_NEW_SCRIPT audio_line ryder 0 0 2 1 ELSE START_NEW_SCRIPT audio_line ryder 0 0 2 0 dialogue_flag = 0 ENDIF dialogue_flag2++ TIMERB = 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD2_CC BREAK CASE 3 $audio_string = &RYD2_CC audio_sound_file = SOUND_RYD2_CC IF dialogue_flag = 0 START_NEW_SCRIPT audio_line scplayer 0 0 1 1 ELSE START_NEW_SCRIPT audio_line scplayer 0 0 1 0 dialogue_flag = 0 ENDIF dialogue_flag2++ TIMERB = 0 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_RYD2_CD BREAK CASE 4 $audio_string = &RYD2_CD audio_sound_file = SOUND_RYD2_CD IF dialogue_flag = 0 START_NEW_SCRIPT audio_line ryder 0 0 2 1 ELSE START_NEW_SCRIPT audio_line ryder 0 0 2 0 dialogue_flag = 0 ENDIF dialogue_flag2++ TIMERB = 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD2_CE BREAK CASE 5 $audio_string = &RYD2_CE audio_sound_file = SOUND_RYD2_CE IF dialogue_flag = 0 START_NEW_SCRIPT audio_line ryder 0 0 1 1 ELSE START_NEW_SCRIPT audio_line ryder 0 0 1 0 dialogue_flag = 0 ENDIF dialogue_flag2++ TIMERB = 0 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_RYD2_CF BREAK CASE 6 $audio_string = &RYD2_CF audio_sound_file = SOUND_RYD2_CF IF dialogue_flag = 0 START_NEW_SCRIPT audio_line scplayer 0 0 2 1 ELSE START_NEW_SCRIPT audio_line scplayer 0 0 2 0 dialogue_flag = 0 ENDIF dialogue_flag2++ TIMERB = 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD2_CG BREAK CASE 7 $audio_string = &RYD2_CG audio_sound_file = SOUND_RYD2_CG IF dialogue_flag = 0 START_NEW_SCRIPT audio_line scplayer 0 0 1 1 ELSE START_NEW_SCRIPT audio_line scplayer 0 0 1 0 dialogue_flag = 0 ENDIF dialogue_flag2++ TIMERB = 0 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_RYD2_CH BREAK CASE 8 $audio_string = &RYD2_CH audio_sound_file = SOUND_RYD2_CH IF dialogue_flag = 0 START_NEW_SCRIPT audio_line ryder 0 0 2 1 ELSE START_NEW_SCRIPT audio_line ryder 0 0 2 0 dialogue_flag = 0 ENDIF dialogue_flag2++ TIMERB = 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD2_CJ BREAK CASE 9 $audio_string = &RYD2_CJ audio_sound_file = SOUND_RYD2_CJ IF dialogue_flag = 0 START_NEW_SCRIPT audio_line scplayer 0 0 1 1 ELSE START_NEW_SCRIPT audio_line scplayer 0 0 1 0 dialogue_flag = 0 ENDIF dialogue_flag2++ TIMERB = 0 BREAK ENDSWITCH ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // exit IF m_goals = 99 m_goals = 0 m_stage++ ENDIF // FUNCTIONS FOR STAGE ------- IF NOT IS_CAR_DEAD van IF NOT IS_CHAR_IN_CAR scplayer van IF NOT DOES_BLIP_EXIST van_blip REMOVE_BLIP van_blip ADD_BLIP_FOR_CAR van van_blip SET_BLIP_AS_FRIENDLY van_blip TRUE REMOVE_BLIP location_blip IF NOT IS_CHAR_DEAD ryder TASK_LOOK_AT_CHAR ryder scplayer 999999 ENDIF TIMERA = 20001 ENDIF IF audio_line_is_active = 0 IF TIMERA > 60000 PRINT_NOW RY2_03 7000 1 // get in the van with ryder dialogue_flag = 0 TIMERA = 0 ENDIF IF m_goals > 2 IF TIMERA > 5000 IF dialogue_flag = 0 IF NOT IS_CHAR_DEAD ryder IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer ryder 15.0 15.0 15.0 FALSE GENERATE_RANDOM_INT_IN_RANGE 0 3 temp_int SWITCH temp_int CASE 0 $audio_string = &RYD2_BA audio_sound_file = SOUND_RYD2_BA BREAK CASE 1 $audio_string = &RYD2_BB audio_sound_file = SOUND_RYD2_BB BREAK CASE 2 $audio_string = &RYD2_BC audio_sound_file = SOUND_RYD2_BC BREAK ENDSWITCH START_NEW_SCRIPT audio_line ryder 0 1 1 0 dialogue_flag++ ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ELSE IF DOES_BLIP_EXIST van_blip REMOVE_BLIP van_blip IF NOT DOES_BLIP_EXIST location_blip REMOVE_BLIP location_Blip ADD_BLIP_FOR_COORD 2699.2932 -2395.0129 12.6172 location_blip IF NOT IS_CHAR_DEAD ryder CLEAR_LOOK_AT ryder ENDIF ENDIF ENDIF ENDIF ENDIF RETURN // ************************************************************************************************************* // STAGE 2 - scripted cutscene at entrance to compound // ************************************************************************************************************* ryder2_m_stage_2: // initialisation for stage IF m_goals = 0 CLEAR_PRINTS SET_PLAYER_CONTROL player1 OFF // SET_FADING_COLOUR 0 0 0 // DO_FADE 500 FADE_OUT // WHILE GET_FADING_STATUS // WAIT 0 // ENDWHILE // SWITCH_WIDESCREEN ON // SET_NEAR_CLIP 0.01 dialogue_flag = -1 m_goals++ ENDIF // wait for car to stop IF m_goals = 1 IF NOT IS_CAR_DEAD van IF IS_CAR_STOPPED van m_goals++ ENDIF ENDIF ENDIF // load scene IF m_goals = 2 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // set player van position IF NOT IS_CAR_DEAD van SET_CAR_COORDINATES van 2699.6230 -2394.7869 12.6172 SET_CAR_HEADING van 267.9095 ENDIF // clear area around gate CLEAR_AREA 2720.6111 -2405.3799 12.4609 30.0 TRUE // clear area around warehouse door CLEAR_AREA 2768.7400 -2413.7883 12.6172 30.0 TRUE SWITCH_WIDESCREEN ON //SET_NEAR_CLIP 0.01 SET_FIXED_CAMERA_POSITION 2688.5696 -2394.1858 17.6992 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2689.4553 -2394.5994 17.4888 JUMP_CUT REQUEST_MODEL CJ_CARDBRD_PICKUP REQUEST_MODEL ARMY REQUEST_MODEL COLT45 REQUEST_MODEL FORKLIFT LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED CJ_CARDBRD_PICKUP OR NOT HAS_MODEL_LOADED ARMY OR NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED FORKLIFT WAIT 0 ENDWHILE CREATE_OBJECT_NO_OFFSET CJ_CARDBRD_PICKUP 2796.8752 -2417.1418 13.23 m_box[4] CREATE_OBJECT_NO_OFFSET CJ_CARDBRD_PICKUP 2798.0090 -2417.1072 13.23 m_box[5] CREATE_OBJECT_NO_OFFSET CJ_CARDBRD_PICKUP 2796.8999 -2418.3098 13.23 m_box[6] CREATE_OBJECT_NO_OFFSET CJ_CARDBRD_PICKUP 2798.0134 -2418.3247 13.23 m_box[7] CREATE_OBJECT_NO_OFFSET CJ_CARDBRD_PICKUP 2799.8865 -2381.2029 13.23 m_box[11] CREATE_OBJECT_NO_OFFSET CJ_CARDBRD_PICKUP 2799.9575 -2379.7205 13.23 m_box[12] CREATE_OBJECT_NO_OFFSET CJ_CARDBRD_PICKUP 2763.5308 -2401.9348 13.23 m_box[13] CREATE_OBJECT_NO_OFFSET CJ_CARDBRD_PICKUP 2802.7502 -2449.8354 13.23 m_box[14] CREATE_OBJECT_NO_OFFSET CJ_CARDBRD_PICKUP 2802.9148 -2448.5754 13.23 m_box[15] CREATE_OBJECT_NO_OFFSET CJ_CARDBRD_PICKUP 2802.9062 -2446.8267 13.23 m_box[16] CREATE_OBJECT_NO_OFFSET CJ_CARDBRD_PICKUP 2788.9319 -2431.2712 13.23 m_box[17] CREATE_OBJECT_NO_OFFSET CJ_CARDBRD_PICKUP 2790.3984 -2431.3357 13.23 m_box[18] CREATE_OBJECT_NO_OFFSET CJ_CARDBRD_PICKUP 2778.6975 -2442.4333 13.23 m_box[19] CREATE_OBJECT_NO_OFFSET CJ_CARDBRD_PICKUP 2763.5647 -2400.6414 13.23 m_box[20] CREATE_OBJECT_NO_OFFSET CJ_CARDBRD_PICKUP 2780.8511 -2392.7373 13.23 m_box[21] CREATE_OBJECT_NO_OFFSET CJ_CARDBRD_PICKUP 2795.0940 -2469.4895 13.23 m_box[22] CREATE_OBJECT_NO_OFFSET CJ_CARDBRD_PICKUP 2803.0669 -2428.3799 13.23 m_box[23] SET_OBJECT_HEADING m_box[4] 91.9411 SET_OBJECT_HEADING m_box[5] 0.0320 SET_OBJECT_HEADING m_box[6] 89.8612 SET_OBJECT_HEADING m_box[7] 1.6342 SET_OBJECT_HEADING m_box[11] 6.8174 SET_OBJECT_HEADING m_box[12] 19.1807 SET_OBJECT_HEADING m_box[13] 339.1130 SET_OBJECT_HEADING m_box[14] 352.3154 SET_OBJECT_HEADING m_box[15] 2.8386 SET_OBJECT_HEADING m_box[16] 3.2099 SET_OBJECT_HEADING m_box[17] 266.6248 SET_OBJECT_HEADING m_box[18] 4.6663 SET_OBJECT_HEADING m_box[19] 175.8277 SET_OBJECT_HEADING m_box[20] 344.0064 SET_OBJECT_HEADING m_box[21] 355.9493 SET_OBJECT_HEADING m_box[22] 1.9283 SET_OBJECT_HEADING m_box[23] 358.0803 temp_int = 0 WHILE temp_int < 25 WAIT 0 IF DOES_OBJECT_EXIST m_box[temp_int] SET_OBJECT_DYNAMIC m_box[temp_int] TRUE //FREEZE_OBJECT_POSITION m_box[temp_int] TRUE GENERATE_RANDOM_INT_IN_RANGE 1 8 temp_int2 SET_OBJECT_MASS m_box[temp_int] 1000.0 SET_OBJECT_TURN_MASS m_box[temp_int] 1000.0 m_box_value[temp_int] = temp_int2 ENDIF temp_int++ ENDWHILE // guards around warehouse CREATE_CHAR PEDTYPE_MISSION1 ARMY 2773.7222 -2423.3884 12.6311 m_guard[0] SET_CHAR_HEADING m_guard[0] 68.8849 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS m_guard[0] 0.0 1.5 0.0 m_guard_off_x m_guard_off_y m_guard_off_z CREATE_CHAR PEDTYPE_MISSION1 ARMY 2721.9438 -2411.5654 12.6198 m_guard[1] SET_CHAR_HEADING m_guard[1] 0.0 CREATE_CHAR PEDTYPE_MISSION1 ARMY 2789.5242 -2416.3723 12.6333 m_guard[2] // inside warehouse SET_CHAR_HEADING m_guard[2] 202.4407 CREATE_CHAR PEDTYPE_MISSION1 ARMY 2790.2310 -2418.8372 12.6331 m_guard[3] // inside warehouse SET_CHAR_HEADING m_guard[3] 23.3411 CREATE_CHAR PEDTYPE_MISSION1 ARMY 2774.9111 -2404.3035 12.6311 m_guard[4] SET_CHAR_HEADING m_guard[4] 77.8711 CREATE_GROUP DEFAULT_TASK_ALLOCATOR_STAND_STILL guard_group temp_int = 0 WHILE temp_int < 5 GIVE_WEAPON_TO_CHAR m_guard[temp_int] WEAPONTYPE_PISTOL 99999 SET_CHAR_ACCURACY m_guard[temp_int] 35 SET_CHAR_HEALTH m_guard[temp_int] 100 TASK_TOGGLE_PED_THREAT_SCANNER m_guard[temp_int] FALSE FALSE FALSE SET_CHAR_DECISION_MAKER m_guard[temp_int] tough_dm SET_SENSE_RANGE m_guard[temp_int] 100.0 IF temp_int = 0 SET_GROUP_LEADER guard_group m_guard[0] ELSE IF NOT temp_int = 2 AND NOT temp_int = 3 SET_GROUP_MEMBER guard_group m_guard[temp_int] ENDIF ENDIF SET_CHAR_NEVER_LEAVES_GROUP m_guard[temp_int] TRUE temp_int++ ENDWHILE IF NOT IS_CHAR_DEAD m_guard[2] SET_CHAR_DECISION_MAKER m_guard[2] empty_dm ENDIF IF NOT IS_CHAR_DEAD m_guard[3] SET_CHAR_DECISION_MAKER m_guard[3] empty_dm ENDIF // create forklift CREATE_CAR FORKLIFT 2791.426 -2418.577 12.66 fork SET_CAR_HEADING fork 90.0 MARK_MODEL_AS_NO_LONGER_NEEDED FORKLIFT SET_CAR_PROOFS fork TRUE FALSE FALSE FALSE FALSE SET_CAR_COORDINATES fork 2758.2412 -2372.3140 12.6172 SET_CAR_HEADING fork 180.3774 SET_CAN_BURST_CAR_TYRES fork FALSE SET_CAR_HEALTH fork 3000 CREATE_CHAR_INSIDE_CAR fork PEDTYPE_MISSION1 ARMY fork_driver // create mesa REQUEST_MODEL MESA WHILE NOT HAS_MODEL_LOADED MESA WAIT 0 ENDWHILE CREATE_CAR MESA 2688.9626 -2407.6763 12.4609 m_mesa SET_CAR_HEADING m_mesa 270.0 CREATE_CHAR_INSIDE_CAR m_mesa PEDTYPE_MISSION1 ARMY m_mesa_driver CAR_GOTO_COORDINATES_ACCURATE m_mesa 2712.8535 -2407.8250 12.4684 MARK_MODEL_AS_NO_LONGER_NEEDED MESA CHANGE_CAR_COLOUR m_mesa 37 37 // army green IF NOT IS_CHAR_DEAD m_guard[4] FLUSH_ROUTE EXTEND_ROUTE 2776.5305 -2401.0420 12.6250 EXTEND_ROUTE 2798.9333 -2400.3425 12.6310 TASK_FOLLOW_POINT_ROUTE m_guard[4] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ENDIF DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //PRINT RY2_04 3000 1 // RYDER - 'This is the place.' TIMERA = 0 m_goals++ ENDIF // switch camera mode IF m_goals = 3 IF audio_line_is_active = 0 IF NOT IS_CAR_DEAD m_mesa IF LOCATE_CAR_3D m_mesa 2712.8535 -2407.8250 12.4684 15.0 15.0 15.0 FALSE // shot of gate //SET_FIXED_CAMERA_POSITION 2700.4141 -2394.4092 14.6699 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 2701.0142 -2395.1892 14.4928 JUMP_CUT SET_FIXED_CAMERA_POSITION 2700.6265 -2392.2102 14.9203 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2701.0923 -2393.0881 14.8109 JUMP_CUT // start off forklift IF NOT IS_CAR_DEAD fork CAR_GOTO_COORDINATES_ACCURATE fork 2768.7400 -2413.7883 12.6172 SET_CAR_STRAIGHT_LINE_DISTANCE fork 200 ENDIF IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD m_mesa TASK_LOOK_AT_VEHICLE ryder m_mesa 5000 TASK_LOOK_AT_VEHICLE scplayer m_mesa 6000 ENDIF ENDIF TIMERA = 0 dialogue_flag++ m_goals++ ENDIF ENDIF ENDIF ENDIF // wait for mesa to stop IF m_goals = 4 IF NOT IS_CAR_DEAD m_mesa IF LOCATE_STOPPED_CAR_3D m_mesa 2712.8535 -2407.8250 12.4684 4.0 4.0 4.0 FALSE // open gate - should happen automatically m_goals++ IF DOES_OBJECT_EXIST gate1 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gate1 SOUND_HEAVY_GATE_START ENDIF TIMERA = 0 ENDIF ENDIF ENDIF // open gate IF m_goals = 5 IF DOES_OBJECT_EXIST gate1 IF SLIDE_OBJECT gate1 gate1_target_x gate1_target_y gate1_target_z 0.0 0.2 0.0 FALSE m_goals++ REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gate1 SOUND_HEAVY_GATE_STOP ENDIF ENDIF ENDIF // start mesa after a couple of tics IF m_goals = 6 IF NOT IS_CAR_DEAD m_mesa SET_FIXED_CAMERA_POSITION 2723.0945 -2413.2454 14.2659 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2722.5476 -2412.4136 14.1704 JUMP_CUT CAR_GOTO_COORDINATES m_mesa 2758.4919 -2454.5100 12.4766 IF NOT IS_CHAR_DEAD m_guard[0] SET_CHAR_HEADING m_guard[0] 275.0 ENDIF IF NOT IS_CHAR_DEAD m_guard[1] TASK_LOOK_AT_VEHICLE m_guard[1] m_mesa 999999 ENDIF m_goals++ TIMERA = 0 ENDIF ENDIF // change camera view IF m_goals = 7 IF TIMERA > 2500 SET_FIXED_CAMERA_POSITION 2770.9795 -2426.9326 13.3413 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2771.1853 -2425.9773 13.5536 JUMP_CUT TIMERA = 0 beep_sound_flag = 0 m_goals++ ENDIF ENDIF // wait for forklift to hit mark IF m_goals = 8 IF NOT IS_CAR_DEAD fork IF LOCATE_STOPPED_CAR_3D fork 2768.7400 -2413.7883 12.6172 4.0 4.0 4.0 FALSE IF NOT IS_CHAR_DEAD m_guard[0] OPEN_SEQUENCE_TASK temp_seq TASK_TURN_CHAR_TO_FACE_COORD -1 2774.2666 -2423.2197 14.3429 //TASK_USE_ATM -1 TASK_PLAY_ANIM -1 atm ped 4.0 FALSE FALSE FALSE FALSE 1000 TASK_GO_STRAIGHT_TO_COORD -1 2773.7222 -2423.3884 12.6311 PEDMOVE_WALK 5000 TASK_ACHIEVE_HEADING -1 90.0 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK m_guard[0] temp_seq CLEAR_SEQUENCE_TASK temp_seq TIMERA = 0 m_goals++ ENDIF ENDIF ENDIF IF TIMERA > 10000 IF NOT IS_CAR_DEAD fork SET_CAR_COORDINATES fork 2768.7400 -2413.7883 12.6172 SET_CAR_HEADING fork 225.6142 ENDIF ENDIF ENDIF // wait for ped to finish anim IF m_goals = 9 IF NOT IS_CHAR_DEAD m_guard[0] IF IS_CHAR_PLAYING_ANIM m_guard[0] atm IF beep_sound_flag = 0 TIMERB = 0 beep_sound_flag++ ENDIF IF beep_sound_flag = 1 IF TIMERB > 500 IF DOES_OBJECT_EXIST switch2 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT switch2 SOUND_KEYPAD_BEEP beep_sound_flag++ ENDIF ENDIF ENDIF ENDIF GET_SCRIPT_TASK_STATUS m_guard[0] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OR TIMERA > 4000 // open door TIMERA = 0 IF DOES_OBJECT_EXIST gate2 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gate2 SOUND_SHUTTER_DOOR_START ENDIF m_goals++ ENDIF ENDIF ENDIF // wait for door to open IF m_goals = 10 IF DOES_OBJECT_EXIST gate2 IF SLIDE_OBJECT gate2 gate2_target_x gate2_target_y gate2_target_z 0.0 0.0 0.1 FALSE IF NOT IS_CAR_DEAD fork CAR_GOTO_COORDINATES fork 2785.3538 -2416.7444 12.6187 TIMERA = 0 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gate2 SOUND_SHUTTER_DOOR_STOP m_goals++ ENDIF ENDIF ENDIF ENDIF // wait a couple of secs, then close door IF m_goals = 11 IF TIMERA > 4000 // close door IF DOES_OBJECT_EXIST gate2 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gate2 SOUND_SHUTTER_DOOR_START ENDIF m_goals++ ENDIF ENDIF // wait for door to close IF m_goals = 12 IF DOES_OBJECT_EXIST gate2 IF SLIDE_OBJECT gate2 gate2_start_x gate2_start_y gate2_start_z 0.0 0.0 0.2 FALSE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gate2 SOUND_SHUTTER_DOOR_STOP m_goals++ ENDIF ENDIF ENDIF IF m_goals = 13 IF TIMERA > 2000 AND audio_line_is_active = 0 m_goals = 99 ENDIF ENDIF // dialogue IF TIMERB > 1000 IF audio_line_is_active = 0 SWITCH dialogue_flag CASE 0 $audio_string = &RYD2_DA audio_sound_file = SOUND_RYD2_DA START_NEW_SCRIPT audio_line ryder 0 1 1 0 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_RYD2_DB dialogue_flag++ TIMERB = 0 BREAK CASE 1 // slight pause dialogue_flag++ TIMERB = 0 BREAK CASE 2 $audio_string = &RYD2_DB audio_sound_file = SOUND_RYD2_DB START_NEW_SCRIPT audio_line scplayer 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD2_DC dialogue_flag++ TIMERB = 0 BREAK CASE 3 $audio_string = &RYD2_DC audio_sound_file = SOUND_RYD2_DC START_NEW_SCRIPT audio_line scplayer 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_RYD2_DD dialogue_flag++ TIMERB = 0 BREAK CASE 4 $audio_string = &RYD2_DD audio_sound_file = SOUND_RYD2_DD START_NEW_SCRIPT audio_line ryder 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD2_DE dialogue_flag++ TIMERB = 0 BREAK CASE 5 $audio_string = &RYD2_DE audio_sound_file = SOUND_RYD2_DE START_NEW_SCRIPT audio_line ryder 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_RYD2_DF dialogue_flag++ TIMERB = 0 BREAK CASE 6 // slight pause dialogue_flag++ TIMERB = 0 BREAK CASE 7 $audio_string = &RYD2_DF audio_sound_file = SOUND_RYD2_DF START_NEW_SCRIPT audio_line ryder 0 1 2 1 dialogue_flag++ TIMERB = 0 BREAK ENDSWITCH ENDIF ENDIF // skip cutscene IF m_goals > 2 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED // Replaced IS_BUTTON_PRESSED PAD1 CROSS m_goals = 99 ENDIF ENDIF // finish cutscene IF m_goals = 99 DO_FADE 250 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // stop bug about loop gate opening sounds IF DOES_OBJECT_EXIST gate1 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gate1 SOUND_HEAVY_GATE_STOP ENDIF IF DOES_OBJECT_EXIST gate2 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gate2 SOUND_SHUTTER_DOOR_STOP ENDIF CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 IF NOT IS_CAR_DEAD van CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 2700.7578 -2392.4504 12.6172 SET_CHAR_HEADING scplayer 236.0759 IF NOT IS_CHAR_DEAD ryder CLEAR_CHAR_TASKS_IMMEDIATELY ryder WARP_CHAR_INTO_CAR ryder van ENDIF ENDIF //WAIT 100 // set forklift back to original position IF NOT IS_CAR_DEAD fork SET_CAR_COORDINATES fork 2791.426 -2418.3098 13.66 SET_CAR_HEADING fork 270.0 ENDIF IF NOT IS_CHAR_DEAD fork_driver DELETE_CHAR fork_driver ENDIF // remove mesa truck IF NOT IS_CAR_DEAD m_mesa SET_CAR_COORDINATES m_mesa 2748.0549 -2394.4268 12.6419 SET_CAR_HEADING m_mesa 174.3167 ENDIF IF NOT IS_CHAR_DEAD m_mesa_driver DELETE_CHAR m_mesa_driver ENDIF // set gates back SET_OBJECT_COORDINATES gate1 gate1_start_x gate1_start_y gate1_start_z SET_OBJECT_COORDINATES gate2 gate2_start_x gate2_start_y gate2_start_z // unfreeze any boxes temp_int = 0 WHILE temp_int < 25 //WAIT 0 IF DOES_OBJECT_EXIST m_box[temp_int] FREEZE_OBJECT_POSITION m_box[temp_int] FALSE SET_OBJECT_VELOCITY m_box[temp_int] 0.0 0.0 0.0 SET_OBJECT_DYNAMIC m_box[temp_int] FALSE SET_OBJECT_COLLISION m_box[temp_int] TRUE ENDIF temp_int++ ENDWHILE IF NOT IS_CAR_DEAD van POP_CAR_DOOR van BOOT FALSE ENDIF IF NOT IS_CHAR_DEAD m_guard[1] CLEAR_LOOK_AT m_guard[1] ENDIF SWITCH_EMERGENCY_SERVICES OFF SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 250 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON m_goals = 0 m_stage++ ENDIF // FUNCTIONS GLOBAL FOR STAGE ------- RETURN // ************************************************************************************************************* // STAGE 3 - WAIT FOR PLAYER TO OPEN FRONT GATE // ************************************************************************************************************* ryder2_m_stage_3: IF m_goals = 0 IF DOES_OBJECT_EXIST switch1 SET_OBJECT_COLLISION switch1 TRUE FREEZE_OBJECT_POSITION switch1 TRUE ENDIF IF DOES_OBJECT_EXIST switch2 SET_OBJECT_COLLISION switch2 TRUE FREEZE_OBJECT_POSITION switch2 TRUE ENDIF PRINT RY2_59 7000 1 //Open the front gate by shooting the ~r~switch~s~. REMOVE_BLIP switch1_blip ADD_BLIP_FOR_COORD 2722.0752 -2411.2715 12.6198 switch1_blip CHANGE_BLIP_COLOUR switch1_blip RED IF NOT IS_CAR_DEAD van FREEZE_CAR_POSITION van TRUE LOCK_CAR_DOORS van CARLOCK_LOCKOUT_PLAYER_ONLY ENDIF ryder_flag = 0 IF NOT IS_CHAR_DEAD ryder TASK_LOOK_AT_CHAR ryder scplayer 99999 ENDIF ryder_dialogue_timer = 0 m_goals++ ENDIF // wait for gate to open IF m_goals = 1 IF gate1_opened = 2 IF NOT IS_CAR_DEAD van REMOVE_BLIP switch1_blip REQUEST_CAR_RECORDING 523 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 523 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD van START_PLAYBACK_RECORDED_CAR van 523 ENDIF IF NOT IS_CHAR_DEAD ryder CLEAR_LOOK_AT ryder ENDIF $audio_string = &RYD2_GA audio_sound_file = SOUND_RYD2_GA START_NEW_SCRIPT audio_line ryder 0 1 1 0 WAIT 100 m_goals = 99 ENDIF ELSE // if player is near van and presses triangle to try and get in IF NOT IS_CAR_DEAD van IF LOCATE_CHAR_ON_FOOT_CAR_3D scplayer van 5.0 5.0 3.0 FALSE IF IS_BUTTON_PRESSED PAD1 TRIANGLE IF ryder_text_van = 0 IF audio_line_is_active = 0 $audio_string = &RYD2_EA audio_sound_file = SOUND_RYD2_EA START_NEW_SCRIPT audio_line ryder 0 1 1 0 ryder_dialogue_timer = 0 ENDIF ryder_text_van++ ELSE IF ryder_text_van = 1 IF audio_line_is_active = 0 $audio_string = &RYD2_EB audio_sound_file = SOUND_RYD2_EB START_NEW_SCRIPT audio_line ryder 0 1 1 0 ryder_dialogue_timer = 0 ENDIF ryder_text_van = 0 ENDIF ENDIF ENDIF ENDIF ENDIF // ryder shouts at player if he's taking too long IF NOT IS_CHAR_DEAD ryder IF LOCATE_CHAR_ANY_MEANS_CHAR_3D ryder scplayer 20.0 20.0 20.0 FALSE IF ryder_dialogue_timer > 40000 IF audio_line_is_active = 0 $audio_string = &RYD2_FA audio_sound_file = SOUND_RYD2_FA START_NEW_SCRIPT audio_line ryder 0 1 1 0 ryder_dialogue_timer = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // if warehouse door has been opened, but gate hasn't spawn new guards if player is inside the warehouse IF NOT m_goals = 99 IF frame_num = 9 IF NOT warehouse_opened = 0 AND gate1_opened = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2785.89 -2417.98 14.36 20.0 20.0 5.0 FALSE //GOSUB spawn_new_guards IF spawn_timer > 30000 spawn_this_many_guards = 3 GOSUB process_spawning_guards spawn_timer = 0 ENDIF ENDIF ELSE IF gate1_opened = 0 AND warehouse_opened = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2785.89 -2417.98 14.36 20.0 20.0 5.0 FALSE //GOSUB spawn_new_guards IF spawn_timer > 30000 spawn_this_many_guards = 3 GOSUB process_spawning_guards spawn_timer = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF m_goals = 99 m_stage++ m_goals = 0 ryder_flag = 0 spawn_this_many_guards = 0 ENDIF RETURN // ************************************************************************************************************* // STAGE 4 - WAIT FOR PLAYER TO OPEN WAREHOUSE DOOR // ************************************************************************************************************* ryder2_m_stage_4: // wait for door to open IF m_goals = 0 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED IF audio_line_is_active = 0 IF warehouse_opened = 0 //REMOVE_BLIP location_blip ADD_BLIP_FOR_COORD 2773.1008 -2423.4185 12.6269 switch2_blip CHANGE_BLIP_COLOUR switch2_blip RED PRINT RY2_60 7000 1 //Open the warehouse door by shooting the ~r~switch~s~. dialogue_timer = 0 dialogue_flag = 0 m_goals++ ELSE m_goals++ ENDIF ENDIF ENDIF ENDIF IF m_goals = 1 IF NOT IS_CAR_DEAD van IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR van FREEZE_CAR_POSITION van TRUE dialogue_flag = 0 dialogue_timer = 20000 m_goals++ TIMERA = 0 ENDIF ENDIF ENDIF // wait for player to open warehouse IF m_goals = 2 IF NOT warehouse_opened = 0 IF NOT IS_CAR_DEAD van REMOVE_BLIP switch2_blip //FREEZE_CAR_POSITION van FALSE REQUEST_CAR_RECORDING 524 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 524 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD van START_PLAYBACK_RECORDED_CAR van 524 ENDIF TIMERA = 0 dialogue_flag = 0 m_goals++ ENDIF ELSE // ryder is waiting for player to open gate IF dialogue_timer > 20000 IF NOT IS_CHAR_DEAD ryder IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer ryder 15.0 15.0 15.0 FALSE IF audio_line_is_active = 0 SWITCH dialogue_flag CASE 0 $audio_string = &RYD2_GB audio_sound_file = SOUND_RYD2_GB START_NEW_SCRIPT audio_line ryder 0 1 1 0 dialogue_flag++ dialogue_timer = 0 BREAK CASE 1 $audio_string = &RYD2_LA audio_sound_file = SOUND_RYD2_LA START_NEW_SCRIPT audio_line ryder 0 1 1 0 dialogue_flag++ dialogue_timer = 0 BREAK CASE 2 $audio_string = &RYD2_LE audio_sound_file = SOUND_RYD2_LE START_NEW_SCRIPT audio_line ryder 0 1 1 0 dialogue_flag = 0 dialogue_timer = 0 BREAK ENDSWITCH ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // play dialogue IF m_goals = 3 dialogue_flag = 0 IF audio_line_is_active = 0 GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int IF temp_int = 0 $audio_string = &RYD2_HA audio_sound_file = SOUND_RYD2_HA START_NEW_SCRIPT audio_line scplayer 0 1 1 0 m_goals++ ELSE $audio_string = &RYD2_HB audio_sound_file = SOUND_RYD2_HB START_NEW_SCRIPT audio_line scplayer 0 1 1 0 m_goals++ ENDIF ENDIF ENDIF // wait for ryder to park van IF m_goals = 4 IF NOT IS_CAR_DEAD van IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR van m_goals = 99 ELSE IF TIMERA > 10600 STOP_PLAYBACK_RECORDED_CAR van ENDIF ENDIF ENDIF ENDIF // end IF m_goals = 99 IF NOT IS_CAR_DEAD van FREEZE_CAR_POSITION van TRUE SET_VEHICLE_IS_CONSIDERED_BY_PLAYER van FALSE ENDIF m_goals = 0 m_stage++ ENDIF // if ryder gets pulled out van // 1st time IF ryder_flag = 0 IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD van IF NOT IS_CHAR_IN_CAR ryder van IF IS_PLAYBACK_GOING_ON_FOR_CAR van PAUSE_PLAYBACK_RECORDED_CAR van FREEZE_CAR_POSITION van TRUE ENDIF TASK_ENTER_CAR_AS_DRIVER ryder van 10000 TIMERA = 0 ryder_flag++ ENDIF ENDIF ENDIF ENDIF IF ryder_flag = 1 IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD van IF IS_CHAR_IN_CAR ryder van IF IS_PLAYBACK_GOING_ON_FOR_CAR van UNPAUSE_PLAYBACK_RECORDED_CAR van FREEZE_CAR_POSITION van FALSE ENDIF ryder_flag = 0 ENDIF ENDIF ENDIF IF TIMERA > 10000 ryder_flag = 0 ENDIF ENDIF RETURN // ************************************************************************************************************* // STAGE 5 - LOAD VAN // ************************************************************************************************************* LVAR_FLOAT van_back_x van_back_y van_back_z LVAR_FLOAT van_back_ryder_x van_back_ryder_y van_back_ryder_z LVAR_INT ryder_explain_dialogue ryder2_m_stage_5: // DEBUG IF debug_on = 1 IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK loaded_boxes = required_boxes ENDIF ENDIF // setup loading of van IF m_goals = 0 REQUEST_ANIMATION RYDER WHILE NOT HAS_ANIMATION_LOADED RYDER WAIT 0 ENDWHILE ryder_explain_dialogue = 0 loaded_boxes_neg = required_boxes DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING loaded_boxes_neg COUNTER_DISPLAY_NUMBER 2 RY2_21 // Boxes Loaded ~1~ DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING ryder_health COUNTER_DISPLAY_BAR 1 RY2_19 IF NOT IS_CAR_DEAD van IF IS_CAR_MODEL van MULE GET_OFFSET_FROM_CAR_IN_WORLD_COORDS van 0.0 -5.5 0.6 van_back_x van_back_y van_back_z // was 0.0 4.5 0.6 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS van 3.0 5.5 0.6 van_back_ryder_x van_back_ryder_y van_back_ryder_z ENDIF SET_CAR_HEAVY van TRUE SET_CAR_STRONG van TRUE SET_CAR_HEALTH van 2750 //FREEZE_CAR_POSITION van TRUE LOCK_CAR_DOORS van CARLOCK_LOCKOUT_PLAYER_ONLY ENDIF IF NOT IS_CHAR_DEAD ryder CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE ryder_dm EVENT_POTENTIAL_GET_RUN_OVER SET_CHAR_RELATIONSHIP ryder ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP ryder ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 TASK_TOGGLE_PED_THREAT_SCANNER ryder TRUE TRUE TRUE IF DOES_BLIP_EXIST van_blip REMOVE_BLIP van_blip ENDIF ENDIF IF NOT IS_CAR_DEAD fork IF NOT IS_CHAR_IN_CAR scplayer fork PRINT RY2_55 5000 1 // Get in the ~b~forklift~s~ truck REMOVE_BLIP van_blip ADD_BLIP_FOR_CAR fork van_blip SET_BLIP_AS_FRIENDLY van_blip TRUE ENDIF ENDIF enable_fake_van_collision = 1 frozen_van = 0 dialogue_timer = -4000 dialogue_flag = 0 TIMERA = 0 WAIT 0 m_goals++ ENDIF LVAR_INT frozen_van IF frozen_van = 0 IF NOT IS_CHAR_DEAD ryder IF IS_CHAR_ON_FOOT ryder IF NOT IS_CAR_DEAD van FREEZE_CAR_POSITION van TRUE frozen_van = 1 ENDIF ENDIF ENDIF ENDIF IF ryder_explain_dialogue = 0 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND audio_line_is_active = 0 $audio_string = &RYD2_KB audio_sound_file = SOUND_RYD2_KB START_NEW_SCRIPT audio_line ryder 0 1 1 0 ryder_explain_dialogue = 1 TIMERA = 0 ENDIF ELSE IF ryder_explain_dialogue = 1 IF TIMERA > 1000 IF audio_line_is_active = 0 ryder_explain_dialogue = 2 ENDIF ENDIF ENDIF ENDIF // wait for player to get in forklift truck IF m_goals = 1 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED IF NOT IS_CAR_DEAD fork IF IS_CHAR_IN_CAR scplayer fork AND ryder_explain_dialogue = 2 //PRINT_NOW RY2_70 7000 1 // use the forklift truck to load boxes onto the van. IF forklift_help_flag < 1 forklift_help_flag = 1 ENDIF m_goals++ TIMERA = 0 WAIT 0 ELSE IF IS_CHAR_IN_CAR scplayer fork CLEAR_THIS_PRINT RY2_55 forklift_help_flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF // forklift help LVAR_INT forklift_help_flag IF forklift_help_flag > 0 AND forklift_help_flag < 5 IF NOT IS_CAR_DEAD fork IF IS_CHAR_IN_CAR scplayer fork IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED SWITCH forklift_help_flag CASE 1 PRINT_HELP RY2_69 // Position the forks below the box then raise the forks to lift the box. BREAK CASE 2 PRINT_HELP RY2_68 // Use ~m~~widget_crane_up~ and ~m~~widget_crane_down~ to control the truck's forks. BREAK CASE 3 PRINT_HELP_FOREVER RY2_71 // Use ~m~~widget_look_left~ and ~m~~widget_look_right~ to look left and right. BREAK ENDSWITCH forklift_help_flag++ ENDIF ELSE CLEAR_HELP ENDIF ENDIF ENDIF IF m_goals = 2 m_goals += 3 ENDIF // // wait for text to finish, put up forklift help // IF m_goals = 2 // IF NOT IS_MESSAGE_BEING_DISPLAYED // PRINT_HELP RY2_69 // Position the forks below the box then raise the forks to lift the box. // TIMERA = 0 // m_goals++ // WAIT 0 // ENDIF // ENDIF // // 2nd bit of help text // IF m_goals = 3 // IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED // // PRINT_HELP RY2_68 // Use ~m~~widget_crane_up~ and ~m~~widget_crane_down~ to control the truck's forks. // WAIT 0 // m_goals++ // ENDIF // ENDIF // // 3rd bit of help text // IF m_goals = 4 // IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED // PRINT_HELP RY2_71 // Use ~m~~widget_look_left~ and ~m~~widget_look_right~ to look left and right. // WAIT 0 // m_goals++ // ENDIF // ENDIF // play audio IF m_goals = 5 IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND NOT IS_MESSAGE_BEING_DISPLAYED IF audio_line_is_active = 0 IF dialogue_timer > 1000 SWITCH dialogue_flag CASE 0 $audio_string = &RYD2_KA audio_sound_file = SOUND_RYD2_KA START_NEW_SCRIPT audio_line ryder 0 1 1 0 dialogue_flag++ dialogue_timer = 0 BREAK // CASE 1 // $audio_string = &RYD2_KB // audio_sound_file = SOUND_RYD2_KB // START_NEW_SCRIPT audio_line ryder 0 1 1 0 // dialogue_flag++ // dialogue_timer = 0 // BREAK // CASE 2 // $audio_string = &RYD2_KC // audio_sound_file = SOUND_RYD2_KC // START_NEW_SCRIPT audio_line ryder 0 1 1 0 // dialogue_flag++ // dialogue_timer = 0 // BREAK CASE 1 dialogue_flag = 0 m_goals++ BREAK ENDSWITCH ENDIF ENDIF ENDIF ENDIF // wait for audio to finish IF m_goals = 6 IF dialogue_timer > 1000 IF audio_line_is_active = 0 spawn_timer = 0 // next_spawn_time = 40000 // baddies_spawned = 0 // baddies_to_be_spawned = 2 TIMERB = 30000 ryder_dialogue_timer = 0 TIMERA = 0 m_goals++ ENDIF ENDIF ENDIF // // spawn guards LVAR_INT spawn_new_wave_of_guards // IF spawn_new_wave_of_guards = 1 // SWITCH loaded_boxes // CASE 0 // spawn_this_many_guards = 1 // BREAK // CASE 1 // spawn_this_many_guards = 1 // BREAK // CASE 2 // spawn_this_many_guards = 1 // BREAK // CASE 3 // spawn_this_many_guards = 1 // BREAK // CASE 4 // spawn_this_many_guards = 1 // BREAK // CASE 5 // spawn_this_many_guards = 1 // BREAK // ENDSWITCH // spawn_timer = 0 // spawn_new_wave_of_guards = 0 // ENDIF // spawn more guard if the player is taking ages IF m_goals > 5 AND spawn_timer > 30000 //WRITE_DEBUG spawned_guard spawn_this_many_guards = 1 spawn_timer = 0 ENDIF // ryder loads boxes IF m_goals = 8 IF NOT IS_CHAR_DEAD ryder IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND NOT IS_MESSAGE_BEING_DISPLAYED ryder_explained_what_to_do = 1 // print dialogue IF ryder_dialogue_timer > 30000 SWITCH ryder_dialogue_int CASE 0 $audio_string = &RYD2_LA audio_sound_file = SOUND_RYD2_LA START_NEW_SCRIPT audio_line ryder 0 0 1 0 BREAK CASE 1 $audio_string = &RYD2_LB audio_sound_file = SOUND_RYD2_LB START_NEW_SCRIPT audio_line ryder 0 0 1 0 BREAK CASE 2 $audio_string = &RYD2_LC audio_sound_file = SOUND_RYD2_LC START_NEW_SCRIPT audio_line ryder 0 0 1 0 BREAK CASE 3 $audio_string = &RYD2_LD audio_sound_file = SOUND_RYD2_LD START_NEW_SCRIPT audio_line ryder 0 0 1 0 BREAK CASE 4 $audio_string = &RYD2_LE audio_sound_file = SOUND_RYD2_LE START_NEW_SCRIPT audio_line ryder 0 0 1 0 BREAK ENDSWITCH ryder_dialogue_int++ IF ryder_dialogue_int > 4 ryder_dialogue_int = 0 ENDIF ryder_dialogue_timer = 0 ENDIF ENDIF ENDIF ENDIF // manage forklift / location blips IF DOES_BLIP_EXIST van_Blip IF NOT IS_CAR_DEAD fork IF IS_CHAR_IN_CAR scplayer fork CLEAR_THIS_PRINT RY2_55 REMOVE_BLIP van_blip ENDIF ENDIF ELSE IF NOT IS_CAR_DEAD fork IF NOT IS_CHAR_IN_CAR scplayer fork REMOVE_BLIP van_blip ADD_BLIP_FOR_CAR fork van_blip SET_BLIP_AS_FRIENDLY van_Blip TRUE IF DOES_BLIP_EXIST location_blip REMOVE_BLIP location_blip ENDIF //IF NOT IS_MESSAGE_BEING_DISPLAYED //AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED PRINT RY2_55 5000 1 // Get in the ~b~forklift~s~ truck //ENDIF ELSE IF m_goals >= 1 IF NOT DOES_BLIP_EXIST location_blip REMOVE_BLIP location_blip IF NOT IS_CAR_DEAD van ADD_BLIP_FOR_CAR van location_blip //CHANGE_BLIP_COLOUR location_blip YELLOW SET_BLIP_AS_FRIENDLY location_blip TRUE ENDIF //ADD_BLIP_FOR_COORD van_back_x van_back_y van_back_z location_Blip ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD ryder // 0. Go to back of van and wait for next box IF ryder_stage = 0 GET_SCRIPT_TASK_STATUS ryder PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK WHILE NOT HAS_ANIMATION_LOADED COLT45 REQUEST_ANIMATION COLT45 WAIT 0 ENDWHILE OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 van_back_ryder_x van_back_ryder_y van_back_ryder_z PEDMOVE_WALK -2 // IF IS_PLAYER_PLAYING player1 // TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer // ENDIF TASK_ACHIEVE_HEADING -1 90.0 TASK_STAY_IN_SAME_PLACE -1 TRUE //TASK_LOOK_ABOUT -1 5000 TASK_PLAY_ANIM -1 roadcross PED 4.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM -1 roadcross PED 4.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM -1 colt45_reload COLT45 4.0 FALSE TRUE TRUE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK ryder temp_seq CLEAR_SEQUENCE_TASK temp_seq //ryder_stage++ ENDIF ENDIF // check if box has been loaded onto the back of the van ----------------------------------------------------------- LVAR_INT activate_load_box_timer LVAR_INT loading_box_screen LVAR_INT box_to_delete temp_int = 0 WHILE temp_int < 25 IF DOES_OBJECT_EXIST m_box[temp_int] IF NOT IS_CAR_DEAD van GET_OFFSET_FROM_CAR_IN_WORLD_COORDS van 0.0000 -2.6100 1.0400 x y z IF LOCATE_OBJECT_3D m_box[temp_int] x y z 0.7100 1.0000 1.1200 FALSE IF NOT IS_CAR_DEAD fork IF IS_CHAR_IN_CAR scplayer fork IF NOT IS_CHAR_ON_FOOT scplayer IF IS_CHAR_SITTING_IN_CAR scplayer fork IF activate_load_box_timer = 0 activate_load_box_timer = 1 ENDIF IF load_box_timer > 500 box_to_delete = temp_int loading_box_screen++ load_box_timer = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF temp_int++ ENDWHILE IF activate_load_box_timer = 0 load_box_timer = 0 ENDIF IF NOT loading_box_screen = 0 SWITCH loading_box_screen CASE 1 IF NOT IS_CAR_DEAD fork CLEAR_CHAR_TASKS_IMMEDIATELY scplayer WARP_CHAR_INTO_CAR scplayer fork ENDIF SWITCH_WIDESCREEN ON CLEAR_HELP SET_PLAYER_CONTROL player1 OFF SET_FIXED_CAMERA_POSITION 2767.4814 -2410.5925 14.7201 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2768.1326 -2411.3464 14.6336 JUMP_CUT DELETE_OBJECT m_box[box_to_delete] loaded_boxes++ loading_box_screen++ BREAK CASE 2 IF load_box_timer > 1000 // IF IS_CHAR_IN_ANY_CAR scplayer // STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car // TASK_CAR_TEMP_ACTION scplayer car TEMPACT_REVERSE 2000 // SET_CAR_FORWARD_SPEED car -5.0 // ENDIF load_box_timer = 0 loading_box_screen++ ENDIF BREAK CASE 3 IF load_box_timer > 1000 loading_box_screen++ ELSE IF load_box_timer < 500 IF NOT IS_CAR_DEAD fork SET_CAR_FORWARD_SPEED fork -5.0 ENDIF ENDIF ENDIF BREAK CASE 4 SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON activate_load_box_timer = 0 loading_box_screen = 0 load_box_timer = 0 spawn_new_wave_of_guards = 1 BREAK ENDSWITCH ENDIF ENDIF // // if alarm is gone off spawn baddies who arrive in jeeps // IF jeep_created = 0 // AND loaded_boxes > 2 // IF m_goals > 4 // IF frame_num = 9 // AND NOT alarm_raised = 0 // //AND jeep_timer > 200000 // // make a jeep come from the left. // IF jeep2 = 0 // // IF NOT IS_POINT_ON_SCREEN 2485.0 -2562.3 14.0 5.0 // // IF NOT HAS_MODEL_LOADED MESA // REQUEST_MODEL MESA // WHILE NOT HAS_MODEL_LOADED MESA // WAIT 0 // ENDWHILE // ENDIF // // CREATE_CAR MESA 2485.0 -2562.3 14.0 jeep2 // MARK_MODEL_AS_NO_LONGER_NEEDED MESA // SET_CAR_HEADING jeep2 0.0 // SET_CAR_CRUISE_SPEED jeep2 50.0 // CHANGE_CAR_COLOUR jeep2 37 37 // army green // CREATE_CHAR_INSIDE_CAR jeep2 PEDTYPE_MISSION1 ARMY m_guard[7] // new_group_member = m_guard[7] // GOSUB set_new_guard_member // CREATE_CHAR_AS_PASSENGER jeep2 PEDTYPE_MISSION1 ARMY 0 m_guard[8] // new_group_member = m_guard[8] // GOSUB set_new_guard_member // // GENERATE_RANDOM_INT_IN_RANGE 3 6 temp_int // OPEN_SEQUENCE_TASK temp_seq // IF NOT IS_CAR_DEAD jeep2 // TASK_CAR_DRIVE_TO_COORD -1 jeep2 2651.4 -2505.8 13.6 50.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS // TASK_CAR_DRIVE_TO_COORD -1 jeep2 2731.4 -2504.2 13.5 50.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS // TASK_CAR_DRIVE_TO_COORD -1 jeep2 2761.1 -2439.4 13.6 50.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS // TASK_CAR_TEMP_ACTION -1 jeep2 temp_int 1000 // TASK_LEAVE_CAR -1 jeep2 // ENDIF // TASK_GOTO_CHAR -1 scplayer 60000 30.0 // TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer // CLOSE_SEQUENCE_TASK temp_seq // PERFORM_SEQUENCE_TASK m_guard[7] temp_seq // CLEAR_SEQUENCE_TASK temp_seq // // passenger2_got_task = 0 // jeep_created = 1 // //WRITE_DEBUG LEFT_JEEP_CREATED // jeep_timer = 0 // jeep_wave = 0 // ELSE // jeep_wave = 0 // ENDIF // // ELSE // IF NOT m_guard[7] = 0 // //MARK_CHAR_AS_NO_LONGER_NEEDED m_guard[7] // m_guard[7] = 0 // ENDIF // IF NOT m_guard[8] = 0 // //MARK_CHAR_AS_NO_LONGER_NEEDED m_guard[8] // m_guard[8] = 0 // ENDIF // IF NOT jeep2 = 0 // MARK_CAR_AS_NO_LONGER_NEEDED jeep2 // jeep2 = 0 // ENDIF // ENDIF // ENDIF // ENDIF // ELSE // // open gate // IF jeep_created = 1 // IF DOES_OBJECT_EXIST gate3 // IF SLIDE_OBJECT gate3 gate3_target_x gate3_target_y gate3_target_z 0.0 0.2 0.0 FALSE // jeep_created++ // ENDIF // ENDIF // ENDIF // ENDIF // IF passenger2_got_task = 0 // IF NOT IS_CHAR_DEAD m_guard[8] // IF NOT IS_CHAR_DEAD m_guard[7] // IF NOT IS_CAR_DEAD jeep2 // IF NOT IS_CHAR_IN_CAR m_guard[7] jeep2 // OPEN_SEQUENCE_TASK temp_seq // TASK_LEAVE_CAR -1 jeep2 // TASK_GOTO_CHAR -1 scplayer 60000 30.0 // TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer // CLOSE_SEQUENCE_TASK temp_seq // PERFORM_SEQUENCE_TASK m_guard[8] temp_seq // PERFORM_SEQUENCE_TASK m_guard[7] temp_seq // CLEAR_SEQUENCE_TASK temp_seq // passenger2_got_task = 1 // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // check if ryder gets damaged by guards IF frame_num = 7 IF NOT IS_CHAR_DEAD ryder IF HAS_CHAR_BEEN_DAMAGED_BY_WEAPON ryder WEAPONTYPE_PISTOL AND ryder_dialogue_timer2 > 40000 LVAR_INT got_hit_dialogue got_hit_dialogue ++ IF got_hit_dialogue > 4 got_hit_dialogue = 1 ENDIF SWITCH got_hit_dialogue CASE 1 $audio_string = &RYD2_MA audio_sound_file = SOUND_RYD2_MA START_NEW_SCRIPT audio_line ryder 0 1 1 0 BREAK CASE 2 $audio_string = &RYD2_MC audio_sound_file = SOUND_RYD2_MC START_NEW_SCRIPT audio_line ryder 0 1 1 0 BREAK CASE 3 $audio_string = &RYD2_MD audio_sound_file = SOUND_RYD2_MD START_NEW_SCRIPT audio_line ryder 0 1 1 0 BREAK CASE 4 $audio_string = &RYD2_ME audio_sound_file = SOUND_RYD2_ME START_NEW_SCRIPT audio_line ryder 0 1 1 0 BREAK ENDSWITCH CLEAR_CHAR_LAST_WEAPON_DAMAGE ryder ryder_dialogue_timer2 = 0 ENDIF ENDIF ENDIF // if all the boxes are loaded go to next stage IF loaded_boxes >= required_boxes AND loading_box_screen = 0 CLEAR_ONSCREEN_COUNTER loaded_boxes_neg IF NOT next_box = -1 IF DOES_OBJECT_EXIST m_box[next_box] IF NOT IS_CHAR_DEAD ryder IF IS_CHAR_HOLDING_OBJECT ryder m_box[next_box] DROP_OBJECT ryder TRUE ENDIF ENDIF // IF IS_OBJECT_ATTACHED m_box[next_box] // DETACH_OBJECT m_box[next_box] 0.0 0.0 0.01 TRUE // ENDIF ENDIF ENDIF m_goals = 99 ENDIF // ************************************************** // TELL PLAYER THERE ARE MORE BOXES OUTSIDE // ************************************************** IF boxes_outside_timer > 30000 AND NOT m_goals = 99 AND told_more_boxes_outside < 1 IF audio_line_is_active = 0 AND NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED IF frame_num = 5 IF IS_CHAR_IN_AREA_3D scplayer 2775.7815 -2406.8206 10.6380 2801.4333 -2429.6179 15.3143 FALSE temp_int = 0 temp_int2 = 0 WHILE temp_int < 25 IF DOES_OBJECT_EXIST m_box[temp_int] IF NOT HAS_OBJECT_BEEN_DAMAGED m_box[temp_int] IF IS_OBJECT_IN_AREA_3D m_box[temp_int] 2774.3079 -2405.2800 12.6803 2801.6074 -2430.0728 15.3896 FALSE temp_int2++ temp_int = 25 ENDIF ENDIF ENDIF temp_int++ ENDWHILE //WRITE_DEBUG_WITH_INT temp_int2 temp_int2 IF temp_int2 = 0 //PRINT_NOW RY2_49 5000 1 // there are more boxes outside GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int IF temp_int = 0 $audio_string = &RYD2_LH audio_sound_file = SOUND_RYD2_LH START_NEW_SCRIPT audio_line ryder 0 1 1 0 ELSE $audio_string = &RYD2_LJ audio_sound_file = SOUND_RYD2_LJ START_NEW_SCRIPT audio_line ryder 0 1 1 0 ENDIF boxes_outside_timer = 0 //boxes_are_outside_dialogue++ told_more_boxes_outside++ ENDIF ENDIF ENDIF ENDIF ENDIF IF m_goals = 99 goto_start_of_loop = 1 m_goals = 0 m_stage++ ENDIF GOSUB process_spawning_guards shown_boxes = loaded_boxes GOSUB update_van_filling RETURN // ************************************************************************************************************* // STAGE 6 - Get back to base // ************************************************************************************************************* ryder2_m_stage_6: IF m_goals = 0 LVAR_FLOAT van_roll LVAR_FLOAT van_this_heading LVAR_FLOAT van_last_heading LVAR_FLOAT van_diff_heading LVAR_INT ryder_anim_flag LVAR_INT ryder_get_box_flag LVAR_INT r3_is_pressed LVAR_INT throwing_box LVAR_INT exploding_box[10] LVAR_INT ryder_is_attached_to_van LVAR_INT disable_chuck_boxes LVAR_FLOAT vec_x vec_y ryder_anim_flag = 0 ryder_get_box_flag = 0 r3_is_pressed = 0 throwing_box = 0 temp_int = 0 WHILE temp_int < 10 exploding_box[temp_int] = 0 temp_int++ ENDWHILE ryder_is_attached_to_van = 0 disable_chuck_boxes = 0 throwing_boxes = 4 IF NOT IS_CHAR_DEAD ryder SET_CHAR_DECISION_MAKER ryder empty_dm ENDIF // REQUEST_ANIMATION RYDER // WHILE NOT HAS_ANIMATION_LOADED RYDER // WAIT 0 // ENDWHILE // REMOVE_ANIMATION BOX // REMOVE_ANIMATION CARRY dialogue_flag = 0 ryder_is_attached_to_van = 0 m_goals++ ENDIF // small cut of ryder getting in van IF m_goals = 1 LVAR_FLOAT ryder_point_x ryder_point_y ryder_point_z ryder_point_x = 2765.9990 ryder_point_y = -2419.7766 ryder_point_z = 12.6396 // get safe point to put ryder CLEAR_AREA ryder_point_x ryder_point_y ryder_point_z 1.5 TRUE // WHILE IS_POINT_OBSCURED_BY_A_MISSION_ENTITY ryder_point_x ryder_point_y ryder_point_z 0.5 0.5 1.0 // ryder_point_y += -1.0 // WAIT 0 // ENDWHILE SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 2761.1191 -2421.1570 14.5289 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2762.0024 -2420.6914 14.4766 JUMP_CUT IF NOT IS_CHAR_DEAD ryder SET_CHAR_PROOFS ryder TRUE TRUE TRUE TRUE TRUE CLEAR_CHAR_TASKS_IMMEDIATELY ryder SET_CHAR_COORDINATES ryder ryder_point_x ryder_point_y ryder_point_z SET_CHAR_HEADING ryder 270.0 TASK_GO_STRAIGHT_TO_COORD ryder 2771.3521 -2418.0725 12.6440 PEDMOVE_RUN 5000 ENDIF IF audio_line_is_active = 0 $audio_string = &RYD2_ND audio_sound_file = SOUND_RYD2_ND START_NEW_SCRIPT audio_line ryder 0 1 1 0 // C’mon, CJ, we got enough! ENDIF TIMERA = 0 m_goals++ ENDIF // wait IF m_goals = 2 IF TIMERA > 2500 AND audio_line_is_active = 0 m_goals++ TIMERA = 0 ENDIF ENDIF // switch camera IF m_goals = 3 IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD van CLEAR_CHAR_TASKS_IMMEDIATELY ryder ATTACH_CHAR_TO_CAR ryder van 0.0 -3.0 0.9 FACING_BACK 180.0 WEAPONTYPE_UNARMED CLEAR_ONSCREEN_COUNTER ryder_health SET_CHAR_MAX_HEALTH ryder 350 SET_CHAR_HEALTH ryder 350 CREATE_OBJECT NF_PED_COLL 0.0 0.0 0.0 fake_ryder_collision ATTACH_OBJECT_TO_CAR fake_ryder_collision van -0.5 -2.0 0.0 0.0 0.0 0.0 SET_CHAR_PROOFS ryder TRUE TRUE TRUE TRUE TRUE SET_OBJECT_SCALE fake_ryder_collision 0.5 SET_OBJECT_PROOFS fake_ryder_collision FALSE TRUE TRUE TRUE FALSE last_fake_object_health = 1000 ryder_is_attached_to_van = 1 disable_chuck_boxes = 1 OPEN_SEQUENCE_TASK temp_seq TASK_LOOK_AT_CHAR -1 scplayer 2000 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 idle_chat PED 4.0 FALSE FALSE FALSE TRUE 2000 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 VAN_stand RYDER 4.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK temp_Seq PERFORM_SEQUENCE_TASK ryder temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF SET_FIXED_CAMERA_POSITION 2774.3230 -2420.5894 14.8944 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2773.4412 -2420.1323 14.7784 JUMP_CUT $audio_string = &RYD2_NB audio_sound_file = SOUND_RYD2_NB START_NEW_SCRIPT audio_line ryder 0 1 1 0 // CJ, get up front an drive us outta here! TIMERA = 0 m_goals++ ENDIF // wait IF m_goals = 4 IF TIMERA > 2500 AND audio_line_is_active = 0 SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT PRINT_NOW RY2_67 5000 1 //Get in the ~b~van~s~. IF NOT IS_CAR_DEAD van REMOVE_BLIP van_blip REMOVE_BLIP van_blip ADD_BLIP_FOR_CAR van van_blip SET_BLIP_AS_FRIENDLY van_blip TRUE SET_CAR_PROOFS van FALSE FALSE TRUE FALSE FALSE FREEZE_CAR_POSITION van FALSE SET_VEHICLE_IS_CONSIDERED_BY_PLAYER van TRUE LOCK_CAR_DOORS van CARLOCK_UNLOCKED ENDIF IF NOT IS_CHAR_DEAD ryder SET_CHAR_PROOFS ryder TRUE TRUE TRUE TRUE TRUE ENDIF m_goals++ TIMERA = 0 ENDIF ENDIF IF m_goals = 5 temp_int2 = 0 // check if player is in van IF NOT IS_CAR_DEAD van IF IS_CHAR_IN_CAR scplayer van temp_int2 = 1 //SET_PLAYER_IN_CAR_CAMERA_MODE ZOOM_THREE ELSE IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED IF dialogue_flag = 0 IF TIMERA > 30000 OR temp_int2 = 1 GENERATE_RANDOM_INT_IN_RANGE 0 3 temp_int SWITCH temp_int CASE 0 $audio_string = &RYD2_NA audio_sound_file = SOUND_RYD2_NA START_NEW_SCRIPT audio_line ryder 0 1 1 0 BREAK // CASE 1 // $audio_string = &RYD2_NB // audio_sound_file = SOUND_RYD2_NB // START_NEW_SCRIPT audio_line ryder 0 1 1 0 // BREAK CASE 1 $audio_string = &RYD2_NC audio_sound_file = SOUND_RYD2_NC START_NEW_SCRIPT audio_line ryder 0 1 1 0 BREAK CASE 2 $audio_string = &RYD2_ND audio_sound_file = SOUND_RYD2_ND START_NEW_SCRIPT audio_line ryder 0 1 1 0 BREAK ENDSWITCH dialogue_flag = 1 TIMERA = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF temp_int2 = 1 TIMERA = 0 dialogue_timer = 0 m_goals++ ENDIF ENDIF IF m_goals = 6 // check if player has got back in van IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND audio_line_is_active = 0 IF NOT IS_CAR_DEAD van IF IS_CHAR_IN_CAR scplayer van // START_NEW_SCRIPT cleanup_audio_line // CLEAR_MISSION_AUDIO 1 // CLEAR_MISSION_AUDIO 2 FREEZE_CAR_POSITION van FALSE IF DOES_BLIP_EXIST van_blip REMOVE_BLIP van_blip ENDIF REMOVE_BLIP location_blip IF NOT DOES_BLIP_EXIST location_blip ADD_BLIP_FOR_COORD 2454.6257 -1972.5344 12.5617 location_blip PRINT_NOW RY2_66 6000 1 // head to willowfield ENDIF TIMERA = 0 REQUEST_MODEL PATRIOT REQUEST_MODEL ARMY WHILE NOT HAS_MODEL_LOADED PATRIOT OR NOT HAS_MODEL_LOADED ARMY WAIT 0 ENDWHILE CREATE_CAR PATRIOT 2780.7183 -2456.1033 12.6354 patriot1 //2783.1235 -2456.7844 12.6281 SET_CAR_HEADING patriot1 90.0 SET_CAR_HEAVY patriot1 TRUE LOCK_CAR_DOORS patriot1 CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_PROOFS patriot1 TRUE TRUE TRUE TRUE TRUE CREATE_CAR PATRIOT 2780.5569 -2493.3464 12.6287 patriot2 SET_CAR_HEADING patriot2 90.0 SET_CAR_HEAVY patriot2 TRUE LOCK_CAR_DOORS patriot2 CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_PROOFS patriot2 TRUE TRUE TRUE TRUE TRUE // create patriot drivers IF NOT IS_CAR_DEAD patriot1 CREATE_CHAR_INSIDE_CAR patriot1 PEDTYPE_MISSION1 ARMY driver1 TASK_TOGGLE_PED_THREAT_SCANNER driver1 FALSE FALSE FALSE SET_CAR_DRIVING_STYLE patriot1 DRIVINGMODE_AVOIDCARS SET_CAR_CRUISE_SPEED patriot1 50.0 SET_CAR_PROOFS patriot1 FALSE FALSE FALSE FALSE FALSE SET_CAR_TRACTION patriot1 2.0 SET_CAR_HEAVY patriot1 TRUE SET_CAR_HEALTH patriot1 1300 // create passenger CREATE_CHAR_AS_PASSENGER patriot1 PEDTYPE_MISSION1 ARMY 0 passenger1 SET_CHAR_RELATIONSHIP passenger1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER passenger1 empty_dm GIVE_WEAPON_TO_CHAR passenger1 WEAPONTYPE_PISTOL 999999 ENDIF IF NOT IS_CAR_DEAD patriot2 CREATE_CHAR_INSIDE_CAR patriot2 PEDTYPE_MISSION1 ARMY driver2 TASK_TOGGLE_PED_THREAT_SCANNER driver2 FALSE FALSE FALSE SET_CAR_DRIVING_STYLE patriot2 DRIVINGMODE_AVOIDCARS SET_CAR_CRUISE_SPEED patriot2 50.0 SET_CAR_PROOFS patriot2 FALSE FALSE FALSE FALSE FALSE SET_CAR_TRACTION patriot2 2.0 SET_CAR_HEAVY patriot2 TRUE SET_CAR_HEALTH patriot2 1300 // create passenger CREATE_CHAR_AS_PASSENGER patriot2 PEDTYPE_MISSION1 ARMY 0 passenger2 SET_CHAR_RELATIONSHIP passenger2 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER passenger2 empty_dm GIVE_WEAPON_TO_CHAR passenger2 WEAPONTYPE_PISTOL 999999 ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED PATRIOT MARK_MODEL_AS_NO_LONGER_NEEDED ARMY dialogue_timer = 0 dialogue_flag = 0 m_goals++ ELSE IF dialogue_timer > 20000 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED IF NOT IS_CHAR_DEAD ryder IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer ryder 5.0 5.0 3.0 FALSE GENERATE_RANDOM_INT_IN_RANGE 0 4 temp_int SWITCH temp_int CASE 0 $audio_string = &RYD2_NA audio_sound_file = SOUND_RYD2_NA START_NEW_SCRIPT audio_line ryder 1 0 1 0 BREAK CASE 1 $audio_string = &RYD2_NB audio_sound_file = SOUND_RYD2_NB START_NEW_SCRIPT audio_line ryder 1 0 1 0 BREAK CASE 2 $audio_string = &RYD2_NC audio_sound_file = SOUND_RYD2_NC START_NEW_SCRIPT audio_line ryder 1 0 1 0 BREAK CASE 3 $audio_string = &RYD2_ND audio_sound_file = SOUND_RYD2_ND START_NEW_SCRIPT audio_line ryder 1 0 1 0 BREAK ENDSWITCH dialogue_timer = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF m_goals = 7 // cutscene of patriots moving out //IF TIMERA > 6000 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS gate4 0.0 0.0 4.0 gate1_target_x gate1_target_y gate1_target_z GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS gate7 0.0 0.0 4.0 gate2_target_x gate2_target_y gate2_target_z IF DOES_OBJECT_EXIST gate4 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gate4 SOUND_SHUTTER_DOOR_START ENDIF TIMERA = 0 m_goals++ //ENDIF ENDIF IF m_goals = 8 // open doors IF TIMERA > 1000 IF SLIDE_OBJECT gate4 gate1_target_x gate1_target_y gate1_target_z 0.0 0.0 0.2 FALSE AND SLIDE_OBJECT gate7 gate2_target_x gate2_target_y gate2_target_z 0.0 0.0 0.15 FALSE IF DOES_OBJECT_EXIST gate4 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gate4 SOUND_SHUTTER_DOOR_STOP ENDIF m_goals++ ENDIF ENDIF ENDIF IF m_goals = 9 // patriots drive out IF NOT IS_CAR_DEAD patriot1 //CAR_GOTO_COORDINATES patriot1 2765.1235 -2456.7844 12.6281 SET_CAR_FORWARD_SPEED patriot1 20.0 ENDIF IF NOT IS_CAR_DEAD patriot2 //CAR_GOTO_COORDINATES patriot2 2765.1235 -2493.3464 12.6287 SET_CAR_FORWARD_SPEED patriot2 20.0 ENDIF //PRINT_NOW RY2_16 5000 1 // RYDER - 'Shit we've got a couple of army heading for us.' dialogue_flag = 0 dialogue_flag2 = 0 dialogue_timer = 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD2_PA IF NOT IS_CAR_DEAD patriot1 IF NOT IS_CAR_DEAD van IF NOT IS_CHAR_DEAD driver1 TASK_CAR_MISSION driver1 patriot1 van MISSION_RAMPLAYER_FARAWAY 50.0 DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD patriot2 IF NOT IS_CAR_DEAD van IF NOT IS_CHAR_DEAD driver2 TASK_CAR_MISSION driver2 patriot2 van MISSION_BLOCKPLAYER_FARAWAY 50.0 DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF // add stuck car checks IF NOT IS_CAR_DEAD patriot1 IF NOT IS_CAR_DEAD patriot2 ADD_STUCK_CAR_CHECK_WITH_WARP patriot1 1.0 2000 TRUE TRUE TRUE -1 ADD_STUCK_CAR_CHECK_WITH_WARP patriot2 1.0 2000 TRUE TRUE TRUE -1 ENDIF ENDIF m_goals++ TIMERA = 0 ENDIF IF m_goals = 10 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED // say dialogue GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int IF temp_int = 0 $audio_string = &RYD2_OA audio_sound_file = SOUND_RYD2_OA START_NEW_SCRIPT audio_line ryder 0 1 2 0 ELSE $audio_string = &RYD2_OB audio_sound_file = SOUND_RYD2_OB START_NEW_SCRIPT audio_line ryder 0 1 2 0 ENDIF TIMERA = 0 m_goals++ ENDIF ENDIF // play dialogue IF m_goals = 11 IF TIMERA > 1000 IF NOT IS_CAR_DEAD van IF IS_CHAR_IN_CAR scplayer van IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED IF dialogue_timer > 1000 IF audio_line_is_active= 0 SWITCH dialogue_flag2 CASE 0 $audio_string = &RYD2_PA audio_sound_file = SOUND_RYD2_PA START_NEW_SCRIPT audio_line ryder 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_RYD2_PB dialogue_flag2++ BREAK CASE 1 $audio_string = &RYD2_PB audio_sound_file = SOUND_RYD2_PB START_NEW_SCRIPT audio_line scplayer 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD2_PC dialogue_flag2++ BREAK CASE 2 $audio_string = &RYD2_PC audio_sound_file = SOUND_RYD2_PC START_NEW_SCRIPT audio_line ryder 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_RYD2_PD dialogue_flag2++ BREAK CASE 3 $audio_string = &RYD2_PD audio_sound_file = SOUND_RYD2_PD START_NEW_SCRIPT audio_line scplayer 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD2_PE dialogue_flag2++ BREAK CASE 4 $audio_string = &RYD2_PE audio_sound_file = SOUND_RYD2_PE START_NEW_SCRIPT audio_line scplayer 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_RYD2_PF dialogue_flag2++ ryder_get_box_flag++ BREAK CASE 5 $audio_string = &RYD2_PF audio_sound_file = SOUND_RYD2_PF START_NEW_SCRIPT audio_line ryder 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD2_PG dialogue_flag2++ BREAK CASE 6 $audio_string = &RYD2_PG audio_sound_file = SOUND_RYD2_PG START_NEW_SCRIPT audio_line ryder 0 1 1 1 dialogue_flag2++ BREAK CASE 7 m_goals++ BREAK ENDSWITCH dialogue_timer = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF m_goals = 12 m_goals++ ENDIF IF m_goals = 13 PRINT_HELP RY2_72 // press the l3 button to make ryder throw a box. disable_chuck_boxes = 0 TIMERA = 0 burst_tyres_flag = 0 conversation_on_route_back = 0 chasers_have_bugged_off = 0 dialogue_flag = 0 m_goals++ ENDIF IF m_goals = 14 IF burst_tyres_flag = 0 IF TIMERA > 10000 IF NOT IS_CAR_DEAD van SET_CAN_BURST_CAR_TYRES van TRUE burst_tyres_flag = 1 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD van IF IS_CHAR_IN_CAR scplayer van IF LOCATE_CAR_3D van 2454.6257 -1972.5344 12.5617 4.0 4.0 4.0 TRUE IF IS_VEHICLE_ON_ALL_WHEELS van //TASK_CAR_TEMP_ACTION scplayer van TEMPACT_HANDBRAKESTRAIGHT 2000000 SET_PLAYER_CONTROL player1 OFF REMOVE_BLIP location_blip m_goals = 99 ENDIF ENDIF ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_ENTER IF NOT IS_CAR_DEAD van SET_CAR_COORDINATES van 2454.6257 -1972.5344 12.5617 ENDIF ENDIF // make chasers bug off if player is near to destination IF chasers_have_bugged_off = 0 IF NOT IS_CAR_DEAD van IF LOCATE_CAR_2D van 2454.6257 -1972.5344 40.0 40.0 FALSE IF DOES_VEHICLE_EXIST patriot1 MARK_CAR_AS_NO_LONGER_NEEDED patriot1 ENDIF IF DOES_CHAR_EXIST driver1 MARK_CHAR_AS_NO_LONGER_NEEDED driver1 ENDIF IF DOES_VEHICLE_EXIST patriot2 MARK_CAR_AS_NO_LONGER_NEEDED patriot2 ENDIF IF DOES_CHAR_EXIST driver2 MARK_CHAR_AS_NO_LONGER_NEEDED driver2 ENDIF chasers_have_bugged_off++ ENDIF ENDIF ENDIF IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED IF TIMERA > 20000 IF NOT conversation_on_route_back = 99 IF dialogue_timer > 1000 IF audio_line_is_active = 0 IF NOT IS_CHAR_DEAD ryder IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer ryder 15.0 15.0 5.0 FALSE SWITCH conversation_on_route_back CASE 0 $audio_string = &RYD2_SA audio_sound_file = SOUND_RYD2_SA START_NEW_SCRIPT audio_line scplayer 0 1 1 0 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_RYD2_SB conversation_on_route_back++ dialogue_timer = 0 BREAK CASE 1 $audio_string = &RYD2_SB audio_sound_file = SOUND_RYD2_SB IF dialogue_flag = 0 START_NEW_SCRIPT audio_line scplayer 0 1 2 1 ELSE START_NEW_SCRIPT audio_line scplayer 0 1 2 0 dialogue_flag = 0 ENDIF CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD2_SC conversation_on_route_back++ dialogue_timer = 0 BREAK CASE 2 $audio_string = &RYD2_SC audio_sound_file = SOUND_RYD2_SC IF dialogue_flag = 0 START_NEW_SCRIPT audio_line ryder 0 1 1 1 ELSE START_NEW_SCRIPT audio_line ryder 0 1 1 0 dialogue_flag = 0 ENDIF CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_RYD2_SD conversation_on_route_back++ dialogue_timer = 0 BREAK CASE 3 $audio_string = &RYD2_SD audio_sound_file = SOUND_RYD2_SD IF dialogue_flag = 0 START_NEW_SCRIPT audio_line scplayer 0 1 2 1 ELSE START_NEW_SCRIPT audio_line scplayer 0 1 2 0 dialogue_flag = 0 ENDIF CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD2_SE conversation_on_route_back++ dialogue_timer = 0 BREAK CASE 4 $audio_string = &RYD2_SE audio_sound_file = SOUND_RYD2_SE IF dialogue_flag = 0 START_NEW_SCRIPT audio_line ryder 0 1 1 1 ELSE START_NEW_SCRIPT audio_line ryder 0 1 1 0 dialogue_flag = 0 ENDIF CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_RYD2_SF conversation_on_route_back++ dialogue_timer = 0 BREAK CASE 5 $audio_string = &RYD2_SF audio_sound_file = SOUND_RYD2_SF IF dialogue_flag = 0 START_NEW_SCRIPT audio_line ryder 0 1 2 1 ELSE START_NEW_SCRIPT audio_line ryder 0 1 2 0 dialogue_flag = 0 ENDIF CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD2_SG conversation_on_route_back++ dialogue_timer = 0 BREAK CASE 6 $audio_string = &RYD2_SG audio_sound_file = SOUND_RYD2_SG IF dialogue_flag = 0 START_NEW_SCRIPT audio_line ryder 0 1 1 1 ELSE START_NEW_SCRIPT audio_line ryder 0 1 1 0 dialogue_flag = 0 ENDIF CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_RYD2_SH conversation_on_route_back++ dialogue_timer = 0 BREAK CASE 7 $audio_string = &RYD2_SH audio_sound_file = SOUND_RYD2_SH IF dialogue_flag = 0 START_NEW_SCRIPT audio_line scplayer 0 1 2 1 ELSE START_NEW_SCRIPT audio_line scplayer 0 1 2 0 dialogue_flag = 0 ENDIF CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD2_SJ conversation_on_route_back++ dialogue_timer = 0 BREAK CASE 8 $audio_string = &RYD2_SJ audio_sound_file = SOUND_RYD2_SJ IF dialogue_flag = 0 START_NEW_SCRIPT audio_line scplayer 0 1 1 1 ELSE START_NEW_SCRIPT audio_line scplayer 0 1 1 0 dialogue_flag = 0 ENDIF CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_RYD2_SK conversation_on_route_back++ dialogue_timer = 0 BREAK CASE 9 $audio_string = &RYD2_SK audio_sound_file = SOUND_RYD2_SK IF dialogue_flag = 0 START_NEW_SCRIPT audio_line ryder 0 1 2 1 ELSE START_NEW_SCRIPT audio_line ryder 0 1 2 0 dialogue_flag = 0 ENDIF conversation_on_route_back = 99 BREAK ENDSWITCH ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED IF NOT conversation_on_route_back > 0 AND NOT conversation_on_route_back <= 99 IF throwing_boxes = 0 disable_chuck_boxes = 1 //PRINT_NOW RY2_54 6000 1 // RYDER - 'Shit! We've ditched too many boxes, we can't afford to ditch any more!!' GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int IF temp_int = 0 $audio_string = &RYD2_RA audio_sound_file = SOUND_RYD2_RA START_NEW_SCRIPT audio_line ryder 0 1 1 0 dialogue_flag = 1 ELSE $audio_string = &RYD2_RB audio_sound_file = SOUND_RYD2_RB START_NEW_SCRIPT audio_line ryder 0 1 1 0 dialogue_flag = 1 ENDIF throwing_boxes-- ENDIF ENDIF ENDIF ENDIF IF m_goals = 99 IF NOT IS_CAR_DEAD van IF IS_CAR_STOPPED van m_goals = 0 m_stage++ ENDIF ENDIF ENDIF GOSUB update_van_filling // check if fake ryder collision takes damage LVAR_INT last_fake_object_health IF DOES_OBJECT_EXIST fake_ryder_collision GET_OBJECT_HEALTH fake_ryder_collision temp_int IF temp_int < last_fake_object_health IF NOT IS_CHAR_DEAD ryder GET_CHAR_HEALTH ryder temp_int temp_int += -17 IF temp_int < 1 temp_int = 1 ENDIF SET_CHAR_HEALTH ryder temp_int IF temp_int = 1 TASK_DIE ryder ENDIF GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS ryder 0.5 0.2 0.4 x y z GENERATE_RANDOM_FLOAT_IN_RANGE -1.0 1.0 x2 GENERATE_RANDOM_FLOAT_IN_RANGE -1.0 1.0 y2 GENERATE_RANDOM_FLOAT_IN_RANGE -1.0 1.0 z2 IF DOES_CHAR_EXIST ryder IF NOT IS_CHAR_DEAD ryder ADD_BLOOD x y z x2 y2 z2 20 ryder ENDIF ENDIF ENDIF ENDIF CLEAR_OBJECT_LAST_WEAPON_DAMAGE fake_ryder_collision GET_OBJECT_HEALTH fake_ryder_collision last_fake_object_health ENDIF // ryder behaviour for van IF ryder_is_attached_to_van = 1 IF disable_chuck_boxes = 0 // box picking up and throwing IF NOT IS_CAR_DEAD van IF r3_is_pressed = 0 IF IS_BUTTON_PRESSED PAD1 LEFTSHOCK OR IS_WIDGET_RELEASED WIDGET_HORN r3_is_pressed = 1 IF ryder_get_box_flag = 0 OR ryder_get_box_flag = 3 ryder_get_box_flag++ ENDIF ENDIF ELSE IF NOT IS_BUTTON_PRESSED PAD1 LEFTSHOCK AND NOT IS_WIDGET_RELEASED WIDGET_HORN r3_is_pressed = 0 ENDIF ENDIF ENDIF ENDIF // set char heading and get roll IF NOT IS_CAR_DEAD van GET_CAR_HEADING van heading IF NOT IS_CHAR_DEAD ryder heading += 180.0 SET_CHAR_HEADING ryder heading ENDIF GET_CAR_ROLL van van_roll ENDIF IF NOT IS_CAR_DEAD van GET_CAR_HEADING van van_this_heading ENDIF van_diff_heading = van_this_heading - van_last_heading IF van_diff_heading < -180.0 van_diff_heading += 360.0 ENDIF IF van_diff_heading > 180.0 van_diff_heading += -360.0 ENDIF van_last_heading = van_this_heading IF NOT IS_CHAR_DEAD ryder IF ryder_get_box_flag = 0 IF van_roll < -60.0 IF NOT ryder_anim_flag = 1 TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder VAN_Fall_L RYDER 4.0 FALSE FALSE FALSE TRUE -1 ryder_anim_flag = 1 ENDIF ELSE IF van_roll > 60.0 IF NOT ryder_anim_flag = 2 TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder VAN_Fall_R RYDER 4.0 FALSE FALSE FALSE TRUE -1 ryder_anim_flag = 2 ENDIF ELSE IF van_roll < -5.0 IF NOT ryder_anim_flag = 3 TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder VAN_Lean_L RYDER 4.0 FALSE FALSE FALSE TRUE -1 ryder_anim_flag = 3 ENDIF ELSE IF van_roll > 5.0 IF NOT ryder_anim_flag = 4 TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder VAN_Lean_R RYDER 4.0 FALSE FALSE FALSE TRUE -1 ryder_anim_flag = 4 ENDIF ELSE IF van_diff_heading < -2.0 IF NOT ryder_anim_flag = 4 TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder VAN_Lean_R RYDER 4.0 FALSE FALSE FALSE TRUE -1 ryder_anim_flag = 4 ENDIF ELSE IF van_diff_heading > 2.0 IF NOT ryder_anim_flag = 3 TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder VAN_Lean_L RYDER 4.0 FALSE FALSE FALSE TRUE -1 ryder_anim_flag = 3 ENDIF ELSE IF NOT ryder_anim_flag = 0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder VAN_stand RYDER 4.0 FALSE FALSE FALSE TRUE -1 ryder_anim_flag = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ELSE // go to pickup box IF ryder_get_box_flag = 1 IF NOT ryder_anim_flag = 5 TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder VAN_PickUp_S RYDER 1000.0 FALSE FALSE FALSE FALSE -1 ryder_anim_flag = 5 ELSE GET_SCRIPT_TASK_STATUS ryder TASK_PLAY_ANIM_NON_INTERRUPTABLE temp_int IF temp_int = FINISHED_TASK // attach box GET_CHAR_COORDINATES ryder x y z CREATE_OBJECT CM_BOX x y z throwing_box TASK_PICK_UP_OBJECT ryder throwing_box -0.096 0.246 0.142 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL TRUE SET_OBJECT_COLLISION throwing_box FALSE shown_boxes-- throwing_boxes-- ryder_get_box_flag++ ENDIF ENDIF ENDIF // wait to finish picking up box IF ryder_get_box_flag = 2 IF NOT ryder_anim_flag = 6 TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder VAN_PickUp_E RYDER 1000.0 FALSE FALSE FALSE FALSE -1 ryder_anim_flag = 6 ELSE GET_SCRIPT_TASK_STATUS ryder TASK_PLAY_ANIM_NON_INTERRUPTABLE temp_int IF temp_int = FINISHED_TASK ryder_get_box_flag++ ENDIF ENDIF ENDIF // lean with box IF ryder_get_box_flag = 3 IF van_roll < -60.0 IF NOT ryder_anim_flag = 1 GOSUB ry2_throw_box TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder VAN_Fall_L RYDER 4.0 FALSE FALSE FALSE TRUE -1 ryder_anim_flag = 1 ryder_get_box_flag = 0 ENDIF ELSE IF van_roll > 60.0 IF NOT ryder_anim_flag = 2 GOSUB ry2_throw_box TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder VAN_Fall_R RYDER 4.0 FALSE FALSE FALSE TRUE -1 ryder_anim_flag = 2 ryder_get_box_flag = 0 ENDIF ELSE IF van_roll < -5.0 IF NOT ryder_anim_flag = 7 TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder VAN_Crate_R RYDER 4.0 FALSE FALSE FALSE TRUE -1 ryder_anim_flag = 7 ENDIF ELSE IF van_roll > 5.0 IF NOT ryder_anim_flag = 8 TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder VAN_Crate_L RYDER 4.0 FALSE FALSE FALSE TRUE -1 ryder_anim_flag = 8 ENDIF ELSE IF van_diff_heading < -2.0 IF NOT ryder_anim_flag = 7 TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder VAN_Crate_R RYDER 4.0 FALSE FALSE FALSE TRUE -1 ryder_anim_flag = 7 ENDIF ELSE IF van_diff_heading > 2.0 IF NOT ryder_anim_flag = 8 TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder VAN_Crate_L RYDER 4.0 FALSE FALSE FALSE TRUE -1 ryder_anim_flag = 8 ENDIF ELSE IF NOT ryder_anim_flag = 9 TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder Van_Stand_Crate RYDER 4.0 FALSE FALSE FALSE TRUE -1 ryder_anim_flag = 9 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // throw box IF ryder_get_box_flag = 4 IF NOT ryder_anim_flag = 10 TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder Van_Throw RYDER 1000.0 FALSE FALSE FALSE FALSE -1 ryder_anim_flag = 10 ELSE IF IS_CHAR_PLAYING_ANIM ryder Van_Throw GET_CHAR_ANIM_CURRENT_TIME ryder Van_Throw temp_float IF temp_float > 0.292 GOSUB ry2_throw_box ryder_get_box_flag++ ENDIF ENDIF ENDIF ENDIF // wait to finish throwing box IF ryder_get_box_flag = 5 GET_SCRIPT_TASK_STATUS ryder TASK_PLAY_ANIM_NON_INTERRUPTABLE temp_int IF temp_int = FINISHED_TASK IF NOT ryder_anim_flag = 0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder VAN_stand RYDER 1000.0 FALSE FALSE FALSE TRUE -1 ryder_anim_flag = 0 ENDIF IF throwing_boxes > 0 ryder_get_box_flag = 1 ELSE ryder_get_box_flag = 0 disable_chuck_boxes = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // if ryders health is zero - detach and die IF NOT ryder_is_attached_to_van = 0 IF NOT IS_CHAR_DEAD ryder GET_CHAR_HEALTH ryder temp_int IF temp_int < 100 DETACH_CHAR_FROM_CAR ryder TASK_DIE ryder ryder_is_attached_to_van = 0 ENDIF ENDIF ENDIF // make exploding boxes explode temp_int = 0 WHILE temp_int < 5 IF DOES_OBJECT_EXIST exploding_box[temp_int] IF DOES_OBJECT_EXIST exploding_box[temp_int] IF NOT IS_CAR_DEAD patriot1 IF IS_VEHICLE_TOUCHING_OBJECT patriot1 exploding_box[temp_int] GET_OBJECT_COORDINATES exploding_box[temp_int] x y z DELETE_OBJECT exploding_box[temp_int] ADD_EXPLOSION X Y Z EXPLOSION_SMALL ENDIF ENDIF ENDIF IF DOES_OBJECT_EXIST exploding_box[temp_int] IF NOT IS_CAR_DEAD patriot2 IF IS_VEHICLE_TOUCHING_OBJECT patriot2 exploding_box[temp_int] GET_OBJECT_COORDINATES exploding_box[temp_int] x y z DELETE_OBJECT exploding_box[temp_int] ADD_EXPLOSION X Y Z EXPLOSION_SMALL ENDIF ENDIF ENDIF IF DOES_OBJECT_EXIST exploding_box[temp_int] GET_OBJECT_HEALTH exploding_box[temp_int] temp_int2 IF temp_int2 < 950 IF NOT IS_CAR_DEAD van GET_OBJECT_COORDINATES exploding_box[temp_int] x y z DELETE_OBJECT exploding_box[temp_int] ADD_EXPLOSION X Y Z EXPLOSION_GRENADE ENDIF ENDIF ENDIF ENDIF temp_int++ ENDWHILE // give van a blip if the player gets out IF m_goals > 4 IF NOT IS_CAR_DEAD van IF IS_CHAR_IN_CAR scplayer van IF DOES_BLIP_EXIST van_blip REMOVE_BLIP van_blip ENDIF IF NOT DOES_BLIP_EXIST location_blip ADD_BLIP_FOR_COORD 2454.6257 -1972.5344 12.5617 location_blip ENDIF ELSE IF NOT DOES_BLIP_EXIST van_blip ADD_BLIP_FOR_CAR van van_blip SET_BLIP_AS_FRIENDLY van_blip TRUE ENDIF IF DOES_BLIP_EXIST location_blip REMOVE_BLIP location_blip ENDIF ENDIF ENDIF ENDIF // check if player has left the van IF m_goals >= 13 IF NOT IS_CAR_DEAD van IF NOT IS_CHAR_IN_CAR scplayer van IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED IF NOT conversation_on_route_back > 0 AND NOT conversation_on_route_back <= 99 IF dialogue_timer > 15000 IF audio_line_is_active = 0 IF NOT IS_CHAR_DEAD ryder IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer ryder 5.0 5.0 5.0 FALSE GENERATE_RANDOM_INT_IN_RANGE 0 3 temp_int SWITCH temp_int CASE 0 $audio_string = &RYD2_QA audio_sound_file = SOUND_RYD2_QA START_NEW_SCRIPT audio_line ryder 0 1 1 0 dialogue_flag = 1 BREAK CASE 1 $audio_string = &RYD2_QB audio_sound_file = SOUND_RYD2_QB START_NEW_SCRIPT audio_line ryder 0 1 1 0 dialogue_flag = 1 BREAK CASE 2 $audio_string = &RYD2_QC audio_sound_file = SOUND_RYD2_QC START_NEW_SCRIPT audio_line ryder 0 1 1 0 dialogue_flag = 1 BREAK ENDSWITCH dialogue_timer = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF frame_num = 4 IF DOES_VEHICLE_EXIST patriot1 IF NOT IS_CAR_DEAD patriot1 // driver AI IF NOT IS_CHAR_DEAD driver1 IF NOT IS_CHAR_IN_CAR driver1 patriot1 GET_SCRIPT_TASK_STATUS driver1 TASK_KILL_CHAR_ON_FOOT temp_int IF temp_int = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT driver1 scplayer ENDIF ENDIF ENDIF // passenger AI IF NOT IS_CHAR_DEAD passenger1 IF IS_CHAR_IN_CAR passenger1 patriot1 IF NOT IS_CAR_DEAD van IF IS_CHAR_IN_CAR scplayer van GET_CAR_SPEED van temp_float IF temp_float < 5.0 IF NOT IS_CHAR_DEAD ryder IF LOCATE_CHAR_ANY_MEANS_CHAR_3D passenger1 ryder 40.0 40.0 20.0 FALSE GET_SCRIPT_TASK_STATUS passenger1 TASK_DRIVE_BY temp_int IF temp_int = FINISHED_TASK TASK_DRIVE_BY passenger1 -1 van 0.0 0.0 0.0 100.0 DRIVEBY_AI_ALL_DIRN TRUE 40 ENDIF ENDIF ENDIF ENDIF ELSE IF NOT IS_CHAR_IN_CAR scplayer patriot1 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D passenger1 scplayer 40.0 40.0 20.0 FALSE GET_SCRIPT_TASK_STATUS passenger1 TASK_DRIVE_BY temp_int IF temp_int = FINISHED_TASK TASK_DRIVE_BY passenger1 scplayer -1 0.0 0.0 0.0 100.0 DRIVEBY_AI_ALL_DIRN TRUE 40 ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS passenger1 TASK_KILL_CHAR_ON_FOOT temp_int IF temp_int = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT passenger1 scplayer ENDIF ENDIF ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS passenger1 TASK_KILL_CHAR_ON_FOOT temp_int IF temp_int = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT passenger1 scplayer ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF frame_num = 8 IF DOES_VEHICLE_EXIST patriot2 IF NOT IS_CAR_DEAD patriot2 // driver AI IF NOT IS_CHAR_DEAD driver2 IF NOT IS_CHAR_IN_CAR driver2 patriot2 GET_SCRIPT_TASK_STATUS driver2 TASK_KILL_CHAR_ON_FOOT temp_int IF temp_int = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT driver2 scplayer ENDIF ENDIF ENDIF // passenger AI IF NOT IS_CHAR_DEAD passenger2 IF IS_CHAR_IN_CAR passenger2 patriot2 IF NOT IS_CAR_DEAD van IF IS_CHAR_IN_CAR scplayer van GET_CAR_SPEED van temp_float IF temp_float < 5.0 IF NOT IS_CHAR_DEAD ryder IF LOCATE_CHAR_ANY_MEANS_CHAR_3D passenger2 ryder 40.0 40.0 20.0 FALSE GET_SCRIPT_TASK_STATUS passenger2 TASK_DRIVE_BY temp_int IF temp_int = FINISHED_TASK TASK_DRIVE_BY passenger2 -1 van 0.0 0.0 0.0 100.0 DRIVEBY_AI_ALL_DIRN TRUE 60 ENDIF ENDIF ENDIF ENDIF ELSE IF NOT IS_CHAR_IN_CAR scplayer patriot2 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D passenger2 scplayer 40.0 40.0 20.0 FALSE GET_SCRIPT_TASK_STATUS passenger2 TASK_DRIVE_BY temp_int IF temp_int = FINISHED_TASK TASK_DRIVE_BY passenger2 scplayer -1 0.0 0.0 0.0 100.0 DRIVEBY_AI_ALL_DIRN TRUE 60 ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS passenger2 TASK_KILL_CHAR_ON_FOOT temp_int IF temp_int = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT passenger2 scplayer ENDIF ENDIF ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS passenger2 TASK_KILL_CHAR_ON_FOOT temp_int IF temp_int = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT passenger2 scplayer ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // warp patriots close to van if they've fallen behind IF frame_num = 0 AND m_goals > 10 IF DOES_VEHICLE_EXIST patriot1 IF NOT IS_CAR_DEAD patriot1 IF NOT IS_CAR_DEAD van GET_OFFSET_FROM_CAR_IN_WORLD_COORDS van 0.0 -20.0 0.0 x y z IF NOT LOCATE_CAR_2D patriot1 x y 40.0 40.0 FALSE IF NOT IS_CAR_ON_SCREEN patriot1 temp_int = 1 temp_int2 = 0 WHILE temp_int2 = 0 GET_NTH_CLOSEST_CAR_NODE x y z temp_int x2 y2 z2 IF NOT IS_POINT_ON_SCREEN x2 y2 z2 5.0 AND NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY x2 y2 z2 5.0 5.0 5.0 GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 temp_float IF temp_float > 30.0 temp_int2 = -1 ELSE temp_int2 = 1 ENDIF ELSE temp_int++ IF temp_int > 10 temp_int2 = -1 ENDIF ENDIF ENDWHILE // warp IF temp_int2 = 1 GET_CAR_COORDINATES van x y z vec_x = x - x2 vec_y = y - y2 GET_HEADING_FROM_VECTOR_2D vec_x vec_y heading CLEAR_AREA x2 y2 z2 5.0 TRUE SET_CAR_COORDINATES patriot1 x2 y2 z2 SET_CAR_HEADING patriot1 heading ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // warp patriots close to van if they've fallen behind IF frame_num = 1 AND m_goals > 10 IF DOES_VEHICLE_EXIST patriot2 IF NOT IS_CAR_DEAD patriot2 IF NOT IS_CAR_DEAD van GET_OFFSET_FROM_CAR_IN_WORLD_COORDS van 0.0 -20.0 0.0 x y z IF NOT LOCATE_CAR_2D patriot2 x y 40.0 40.0 FALSE IF NOT IS_CAR_ON_SCREEN patriot2 temp_int = 1 temp_int2 = 0 WHILE temp_int2 = 0 GET_NTH_CLOSEST_CAR_NODE x y z temp_int x2 y2 z2 IF NOT IS_POINT_ON_SCREEN x2 y2 z2 5.0 AND NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY x2 y2 z2 5.0 5.0 5.0 GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 temp_float IF temp_float > 30.0 temp_int2 = -1 ELSE temp_int2 = 1 ENDIF ELSE temp_int++ IF temp_int > 10 temp_int2 = -1 ENDIF ENDIF ENDWHILE // warp IF temp_int2 = 1 GET_CAR_COORDINATES van x y z vec_x = x - x2 vec_y = y - y2 GET_HEADING_FROM_VECTOR_2D vec_x vec_y heading CLEAR_AREA x2 y2 z2 5.0 TRUE SET_CAR_COORDINATES patriot2 x2 y2 z2 SET_CAR_HEADING patriot2 heading ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF RETURN // ************************************************************************************************************** // STAGE 7 - end cutscene // ************************************************************************************************************** ryder2_m_stage_7: IF m_goals = 0 SET_PLAYER_CONTROL player1 OFF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REQUEST_MODEL FAM1 REQUEST_MODEL FAM2 WHILE NOT HAS_MODEL_LOADED FAM1 OR NOT HAS_MODEL_LOADED FAM2 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD van SET_CAR_COORDINATES van 2455.7078 -1972.8582 12.5469 SET_CAR_HEADING van 343.4514 ENDIF SWITCH_WIDESCREEN ON SET_NEAR_CLIP 0.1 IF NOT IS_CHAR_DEAD ryder CLEAR_CHAR_TASKS ryder ENDIF CLEAR_AREA 2447.9011 -1980.5422 12.8338 20.0 TRUE SET_FIXED_CAMERA_POSITION 2447.9011 -1980.5422 12.8338 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2448.4839 -1979.7354 12.9290 JUMP_CUT IF NOT IS_CHAR_DEAD driver1 DELETE_CHAR driver1 ENDIF IF NOT IS_CHAR_DEAD driver2 DELETE_CHAR driver2 ENDIF IF NOT IS_CAR_DEAD patriot1 DELETE_CAR patriot1 ENDIF IF NOT IS_CAR_DEAD patriot2 DELETE_CAR patriot2 ENDIF CREATE_CHAR PEDTYPE_CIVMALE FAM1 2448.4761 -1980.7510 12.5947 end_cut_ped1 CREATE_CHAR PEDTYPE_CIVMALE FAM2 2447.5532 -1979.8827 12.5947 end_cut_ped2 SET_CHAR_HEADING end_cut_ped1 316.4611 SET_CHAR_HEADING end_cut_ped2 319.2614 SET_CHAR_DECISION_MAKER end_cut_ped1 empty_dm SET_CHAR_DECISION_MAKER end_cut_ped2 empty_dm MARK_MODEL_AS_NO_LONGER_NEEDED FAM1 MARK_MODEL_AS_NO_LONGER_NEEDED FAM2 IF NOT IS_CHAR_DEAD ryder DETACH_CHAR_FROM_CAR ryder CLEAR_CHAR_TASKS_IMMEDIATELY ryder IF DOES_OBJECT_EXIST throwing_box DELETE_OBJECT throwing_box ENDIF SET_CHAR_COORDINATES ryder 2453.0017 -1976.5757 12.5469 SET_CHAR_HEADING ryder 5.1526 SET_ANIM_GROUP_FOR_CHAR ryder gang1 OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 2452.7024 -1972.9393 12.5469 PEDMOVE_WALK 10000 TASK_LOOK_AT_CHAR -1 scplayer 3000 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK ryder temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 2452.2900 -1971.6825 12.5469 SET_CHAR_HEADING scplayer 153.4741 IF NOT IS_CHAR_DEAD end_cut_ped1 TASK_LOOK_AT_CHAR scplayer end_cut_ped1 4000 ENDIF // IF NOT IS_CHAR_DEAD ryder // OPEN_SEQUENCE_TASK temp_seq // TASK_LOOK_AT_CHAR -1 end_cut_ped1 5000 // TASK_TURN_CHAR_TO_FACE_CHAR -1 end_cut_ped1 // CLOSE_SEQUENCE_TASK temp_seq // PERFORM_SEQUENCE_TASK ryder temp_seq // CLEAR_SEQUENCE_TASK temp_seq // ENDIF // TASK_GO_STRAIGHT_TO_COORD end_cut_ped1 2451.9153 -1977.5061 12.5947 PEDMOVE_WALK 10000 // TASK_GO_STRAIGHT_TO_COORD end_cut_ped2 2450.5459 -1976.3612 12.5947 PEDMOVE_WALK 10000 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 audio_line_is_active = 0 CLEAR_PRINTS dialogue_flag = 0 dialogue_timer = 1000 TIMERA = 0 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE m_goals++ ENDIF IF m_goals > 0 IF audio_line_is_active = 0 IF dialogue_timer > 1000 SWITCH dialogue_flag CASE 0 $audio_string = &RYD2_TA audio_sound_file = SOUND_RYD2_TA START_NEW_SCRIPT audio_line ryder 0 1 1 0 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_RYD2_TB dialogue_flag++ dialogue_timer = 0 IF NOT IS_CHAR_DEAD end_cut_ped1 TASK_GO_STRAIGHT_TO_COORD end_cut_ped1 2451.9153 -1977.5061 12.5947 PEDMOVE_WALK 10000 ENDIF IF NOT IS_CHAR_DEAD end_cut_ped2 TASK_GO_STRAIGHT_TO_COORD end_cut_ped2 2450.5459 -1976.3612 12.5947 PEDMOVE_WALK 10000 ENDIF BREAK CASE 1 $audio_string = &RYD2_TB audio_sound_file = SOUND_RYD2_TB START_NEW_SCRIPT audio_line scplayer 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_RYD2_TC dialogue_flag++ dialogue_timer = 0 BREAK CASE 2 SET_FIXED_CAMERA_POSITION 2450.0459 -1966.4122 15.1296 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2450.5613 -1967.2509 14.9539 JUMP_CUT $audio_string = &RYD2_TC audio_sound_file = SOUND_RYD2_TC START_NEW_SCRIPT audio_line ryder 0 1 1 1 //CLEAR_MISSION_AUDIO 2 //LOAD_MISSION_AUDIO 2 SOUND_RYD2_TD dialogue_flag++ dialogue_timer = 0 IF NOT IS_CHAR_DEAD ryder OPEN_SEQUENCE_TASK temp_seq // TASK_PAUSE -1 1000 // TASK_PLAY_ANIM -1 fucku PED 4.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM -1 idle_chat ped 4.0 FALSE TRUE TRUE FALSE 2000 TASK_GO_STRAIGHT_TO_COORD -1 2452.2388 -1980.2244 12.5469 PEDMOVE_WALK 10000 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK ryder temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF BREAK CASE 3 //$audio_string = &RYD2_TD //audio_sound_file = SOUND_RYD2_TD //START_NEW_SCRIPT audio_line ryder 0 1 2 1 IF NOT IS_CHAR_DEAD end_cut_ped1 OPEN_SEQUENCE_TASK temp_seq TASK_PAUSE -1 2000 //TASK_PLAY_ANIM -1 TURN_180 PED FALSE TRUE TRUE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 2452.9514 -1982.9205 12.5469 PEDMOVE_WALK 10000 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK end_cut_ped1 temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD end_cut_ped2 OPEN_SEQUENCE_TASK temp_seq TASK_PAUSE -1 1500 //TASK_PLAY_ANIM -1 TURN_180 PED FALSE TRUE TRUE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 2452.0056 -1983.1857 12.5469 PEDMOVE_WALK 10000 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK end_cut_ped2 temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF dialogue_flag++ dialogue_timer = 0 BREAK ENDSWITCH ENDIF ENDIF ENDIF IF m_goals = 1 IF dialogue_flag > 3 AND dialogue_timer > 5000 AND audio_line_is_active = 0 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED m_goals++ ENDIF ELSE IF IS_SKIP_CUTSCENE_BUTTON_PRESSED //Replaced IS_BUTTON_PRESSED PAD1 CROSS m_goals++ ENDIF ENDIF ENDIF IF m_goals = 2 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DELETE_CHAR end_cut_ped1 DELETE_CHAR end_cut_ped2 DELETE_CHAR ryder // IF NOT IS_CAR_DEAD van // IF IS_CHAR_IN_CAR scplayer van // WARP_CHAR_FROM_CAR_TO_COORD scplayer 2457.4285 -1973.7041 12.5984 // SET_CHAR_HEADING scplayer 0.0 // DELETE_CAR van // ENDIF // ENDIF temp_int = 0 WHILE temp_int < 5 IF DOES_OBJECT_EXIST displayed_boxes_in_van[temp_int] DELETE_OBJECT displayed_boxes_in_van[temp_int] ENDIF temp_int++ ENDWHILE IF DOES_OBJECT_EXIST hide_anim_box DELETE_OBJECT hide_anim_box ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON m_passed = 1 ENDIF RETURN // ************************************************************************************************************* // GLOBAL FUNCTIONS - run continuously throughout lifetime of level // ************************************************************************************************************* ryder2_global_functions: // fail conditions IF DOES_CHAR_EXIST ryder IF IS_CHAR_DEAD ryder m_failed = 1 PRINT_NOW RY2_22 5000 1 // ryder is history ENDIF ENDIF IF DOES_VEHICLE_EXIST van IF IS_CAR_DEAD van IF ryder_is_attached_to_van = 1 IF NOT IS_CHAR_DEAD ryder TASK_DIE ryder ENDIF ENDIF m_failed = 1 PRINT_NOW RY2_25 5000 1 // van is history ENDIF ENDIF IF m_stage < 6 IF DOES_VEHICLE_EXIST fork IF IS_CAR_DEAD fork m_failed = 1 PRINT_NOW RY2_40 5000 1 // forklift truck is history ELSE IF IS_CAR_IN_WATER fork m_failed = 1 PRINT_NOW RY2_40 5000 1 // forklift truck is history ENDIF ENDIF ENDIF ENDIF // count available boxes IF m_stage > 2 AND m_stage < 6 IF frame_num = 6 temp_int = 0 temp_int2 = 0 WHILE temp_int < 25 IF DOES_OBJECT_EXIST m_box[temp_int] IF NOT IS_OBJECT_IN_WATER m_box[temp_int] GET_OBJECT_COORDINATES m_box[temp_int] x y z IF z > 0.0 temp_int2++ ENDIF //WRITE_DEBUG_WITH_INT BOX_NOT_IN_WATER temp_int ELSE //WRITE_DEBUG_WITH_INT BOX_IN_WATER temp_int ENDIF ENDIF temp_int++ ENDWHILE IF temp_int2 < loaded_boxes_neg GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int IF temp_int = 0 $audio_string = &RYD2_LF audio_sound_file = SOUND_RYD2_LF START_NEW_SCRIPT audio_line ryder 0 1 1 0 ELSE $audio_string = &RYD2_LE audio_sound_file = SOUND_RYD2_LE START_NEW_SCRIPT audio_line ryder 0 1 1 0 ENDIF WAIT 4000 PRINT_NOW RY2_58 5000 1 // too many boxes were destroyed! m_failed = 1 ENDIF ENDIF ENDIF // switches IF m_stage >= 3 IF gate1_opened = 0 IF DOES_OBJECT_EXIST switch1 IF HAS_OBJECT_BEEN_DAMAGED switch1 gate1_opened++ CLEAR_PRINTS REPORT_MISSION_AUDIO_EVENT_AT_OBJECT switch1 SOUND_SHOOT_CONTROLS IF DOES_OBJECT_EXIST gate1 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gate1 SOUND_HEAVY_GATE_START ENDIF ENDIF ENDIF ELSE IF gate1_opened = 1 IF DOES_OBJECT_EXIST gate1 IF SLIDE_OBJECT gate1 gate1_target_x gate1_target_y gate1_target_z 0.0 0.2 0.0 FALSE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gate1 SOUND_HEAVY_GATE_STOP gate1_opened++ ENDIF ENDIF ENDIF ENDIF IF warehouse_opened = 0 IF DOES_OBJECT_EXIST switch2 IF HAS_OBJECT_BEEN_DAMAGED switch2 IF DOES_OBJECT_EXIST back_door[0] DELETE_OBJECT back_door[0] ENDIF IF DOES_OBJECT_EXIST back_door[1] DELETE_OBJECT back_door[1] ENDIF REPORT_MISSION_AUDIO_EVENT_AT_OBJECT switch2 SOUND_SHOOT_CONTROLS IF DOES_OBJECT_EXIST gate2 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gate2 SOUND_SHUTTER_DOOR_START ENDIF CLEAR_PRINTS warehouse_opened++ ENDIF ENDIF ELSE IF warehouse_opened = 1 IF DOES_OBJECT_EXIST gate2 IF SLIDE_OBJECT gate2 gate2_target_x gate2_target_y gate2_target_z 0.1 0.1 0.1 FALSE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gate2 SOUND_SHUTTER_DOOR_STOP IF NOT gate1_opened = 0 REMOVE_BLIP location_blip ENDIF warehouse_opened++ gate_reminder_timer = 30000 ENDIF ENDIF ENDIF ENDIF ENDIF // Check if player is in complex ---------------------------------------------------------------------- IF frame_num = 0 IF IS_CHAR_IN_AREA_2D scplayer 2721.0 -2329.8518 2810.5479 -2565.9336 FALSE IF player_in_complex = 0 player_in_complex = 1 ENDIF ELSE player_in_complex = 0 ENDIF ENDIF // loaded boxes -------------------------------------------------------------------- VAR_INT loaded_boxes_neg loaded_boxes_neg = required_boxes - loaded_boxes IF loaded_boxes_neg < 0 loaded_boxes_neg = 0 ENDIF // make ryder shoot from van if alarm has gone off --------------------------------- IF alarm_raised = 1 IF ryder_got_driveby = 0 IF NOT IS_CHAR_DEAD ryder SET_CHAR_RELATIONSHIP ryder ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 TASK_TOGGLE_PED_THREAT_SCANNER ryder 0 1 0 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE ryder_dm EVENT_ACQUAINTANCE_PED_HATE TASK_SIMPLE_GANG_DRIVEBY 0.0 100.0 0.0 0.0 TRUE FALSE ryder_got_driveby = 1 ENDIF ENDIF ENDIF // display ryders health once he's taken damage IF NOT IS_CHAR_DEAD ryder GET_CHAR_HEALTH ryder ryder_health temp_float =# ryder_health temp_float /= 500.0 temp_float *= 100.0 IF temp_float > 100.0 temp_float = 100.0 ENDIF ryder_health =# temp_float ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////// // // // AI // // // //////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////// // before alarm is raised guards will question player ------------------------------ IF alarm_raised = 0 IF frame_num = 1 temp_int = 0 WHILE temp_int < 5 IF NOT IS_CHAR_DEAD m_guard[temp_int] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR m_guard[temp_int] scplayer OR IS_PLAYER_TARGETTING_CHAR player1 m_guard[temp_int] alarm_raised = 1 ENDIF ENDIF temp_int++ ENDWHILE // if any of the guards see the player or buddy and they don't have uniform - set off alarm IF alarm_raised = 0 temp_int = 0 WHILE temp_int < 5 IF NOT IS_CHAR_DEAD m_guard[temp_int] IF m_guard_flag[temp_int] = 0 IF player_in_complex = 1 IF HAS_CHAR_SPOTTED_CHAR m_guard[temp_int] scplayer TASK_AIM_GUN_AT_CHAR m_guard[temp_int] scplayer 10000 LVAR_INT warning_flag IF warning_flag = 0 $audio_string = &RYD2_VA audio_sound_file = SOUND_RYD2_VA START_NEW_SCRIPT audio_line m_guard[temp_int] 0 1 1 0 warning_flag ++ ENDIF m_guard_timer[temp_int] = 0 m_guard_flag[temp_int]++ ELSE IF LOCATE_CHAR_ON_FOOT_CHAR_3D scplayer m_guard[temp_int] 5.0 5.0 2.0 FALSE GET_SCRIPT_TASK_STATUS m_guard[temp_int] TASK_TURN_CHAR_TO_FACE_CHAR temp_int2 IF temp_int2 = FINISHED_TASK TASK_TURN_CHAR_TO_FACE_CHAR m_guard[temp_int] scplayer ENDIF ENDIF ENDIF ENDIF ENDIF IF m_guard_flag[temp_int] = 1 IF m_guard_timer[temp_int] > 8000 IF player_in_complex = 1 //PRINT_NOW RY2_G2 4000 1 // sound the alarm! GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int2 IF temp_int = 0 $audio_string = &RYD2_VB audio_sound_file = SOUND_RYD2_VB START_NEW_SCRIPT audio_line m_guard[temp_int] 0 1 1 0 ELSE $audio_string = &RYD2_VG audio_sound_file = SOUND_RYD2_VG START_NEW_SCRIPT audio_line m_guard[temp_int] 0 1 1 0 ENDIF alarm_raised = 1 temp_int = 5 ENDIF ELSE IF player_in_complex = 0 m_guard_flag[temp_int] = 0 warning_flag = 0 ENDIF ENDIF ENDIF ENDIF temp_int++ ENDWHILE ENDIF // if alarm is raised reset flags IF alarm_raised = 1 temp_int = 0 WHILE temp_int < 9 m_guard_flag[temp_int] = 0 temp_int++ ENDWHILE ENDIF ENDIF ELSE // ai if alarm has gone off - guard behaviour IF frame_num < 9 IF NOT IS_CHAR_DEAD m_guard[frame_num] SWITCH frame_num CASE 1 IF m_guard_flag[frame_num] = 0 OPEN_SEQUENCE_TASK temp_seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK m_guard[frame_num] temp_seq CLEAR_SEQUENCE_TASK temp_seq m_guard_flag[frame_num]++ ENDIF BREAK CASE 2 IF warehouse_opened = 1 IF m_guard_flag[2] = 0 SET_CHAR_RELATIONSHIP m_guard[2] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP m_guard[2] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 TASK_TOGGLE_PED_THREAT_SCANNER m_guard[2] FALSE FALSE FALSE OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 2785.7522 -2413.0188 12.6316 PEDMOVE_RUN -2 TASK_SET_CHAR_DECISION_MAKER -1 tough_dm TASK_TOGGLE_PED_THREAT_SCANNER -1 TRUE TRUE FALSE TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK m_guard[2] temp_seq CLEAR_SEQUENCE_TASK temp_seq m_guard_flag[2]++ ENDIF IF m_guard_flag[2] = 1 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D m_guard[2] scplayer 5.0 5.0 5.0 FALSE TASK_KILL_CHAR_ON_FOOT m_guard[2] scplayer m_guard_flag[2]++ ENDIF ENDIF ENDIF BREAK CASE 3 IF warehouse_opened = 1 IF m_guard_flag[3] = 0 SET_CHAR_RELATIONSHIP m_guard[3] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP m_guard[3] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 TASK_TOGGLE_PED_THREAT_SCANNER m_guard[3] FALSE FALSE FALSE OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 2786.6631 -2422.2354 12.6340 PEDMOVE_RUN -2 TASK_SET_CHAR_DECISION_MAKER -1 tough_dm TASK_TOGGLE_PED_THREAT_SCANNER -1 TRUE TRUE FALSE TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK m_guard[3] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF m_guard_flag[3] = 1 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D m_guard[3] scplayer 5.0 5.0 5.0 FALSE TASK_KILL_CHAR_ON_FOOT m_guard[3] scplayer m_guard_flag[3]++ ENDIF ENDIF ENDIF BREAK CASE 4 IF m_guard_flag[4] = 0 OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 2764.9285 -2402.1235 12.6250 PEDMOVE_RUN -2 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 scplayer DUCK_WHEN_PLAYER_SHOOTING 3000 90 TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK m_guard[4] temp_seq CLEAR_SEQUENCE_TASK temp_seq m_guard_flag[4]++ ENDIF IF m_guard_flag[4] = 1 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D m_guard[4] scplayer 5.0 5.0 5.0 FALSE TASK_KILL_CHAR_ON_FOOT m_guard[4] scplayer m_guard_flag[4]++ ENDIF ENDIF BREAK DEFAULT IF m_guard_flag[frame_num] = 0 OPEN_SEQUENCE_TASK temp_seq //TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer //TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK m_guard[frame_num] temp_seq CLEAR_SEQUENCE_TASK temp_seq m_guard_flag[frame_num]++ ENDIF BREAK ENDSWITCH ENDIF ENDIF ENDIF // // alert guards if alarm has gone off ------------------------------ // IF alarm_raised = 1 // AND guards_alerted = 0 // IF NOT IS_CHAR_DEAD ryder // SET_CHAR_RELATIONSHIP ryder ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 // TASK_TOGGLE_PED_THREAT_SCANNER ryder TRUE TRUE FALSE // ENDIF // temp_int = 0 // WHILE temp_int < 5 // IF NOT temp_int = 2 // AND NOT temp_int = 3 // IF NOT IS_CHAR_DEAD m_guard[temp_int] // SET_CHAR_RELATIONSHIP m_guard[temp_int] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 // SET_CHAR_RELATIONSHIP m_guard[temp_int] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 // TASK_TOGGLE_PED_THREAT_SCANNER m_guard[temp_int] TRUE TRUE TRUE // TASK_KILL_CHAR_ON_FOOT m_guard[temp_int] scplayer // ENDIF // ENDIF // temp_int++ // ENDWHILE // // IF NOT IS_CHAR_DEAD m_guard[4] // // // ENDIF // guards_alerted = 1 // ENDIF // create pickups if boxes get destroyed ------------------------------------------------------------------------- IF frame_num = 2 temp_int = 0 WHILE temp_int < 25 IF DOES_OBJECT_EXIST m_box[temp_int] //IF NOT IS_OBJECT_ATTACHED m_box[temp_int] IF HAS_OBJECT_BEEN_DAMAGED m_box[temp_int] GET_OBJECT_COORDINATES m_box[temp_int] x y z // PICKUPS // --------------- // 1. pistol // 2. armour // 3. grenades // 4. health // 5. explosion // 6. uzi // 7. shotgun IF IS_OBJECT_ATTACHED m_box[temp_int] // do fuck all ELSE IF m_box_value[temp_int] = 1 CREATE_PICKUP_WITH_AMMO colt45 PICKUP_ONCE 30 x y z m_pickup[temp_int] ELSE IF m_box_value[temp_int] = 2 CREATE_PICKUP bodyarmour PICKUP_ONCE x y z m_pickup[temp_int] ELSE IF m_box_value[temp_int] = 3 CREATE_PICKUP_WITH_AMMO grenade PICKUP_ONCE 6 x y z m_pickup[temp_int] ELSE IF m_box_value[temp_int] = 4 CREATE_PICKUP health PICKUP_ONCE x y z m_pickup[temp_int] ELSE IF m_box_value[temp_int] = 5 //ADD_EXPLOSION x y z EXPLOSION_GRENADE ELSE IF m_box_value[temp_int] = 6 CREATE_PICKUP_WITH_AMMO MICRO_UZI PICKUP_ONCE 30 x y z m_pickup[temp_int] ELSE IF m_box_value[temp_int] = 7 CREATE_PICKUP_WITH_AMMO chromegun PICKUP_ONCE 30 x y z m_pickup[temp_int] ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF smashed_boxes++ DELETE_OBJECT m_box[temp_int] ENDIF ENDIF //ENDIF temp_int++ ENDWHILE ENDIF // switch van collision if player is in forklift truck ------------------------------------------ IF enable_fake_van_collision = 1 IF van_collision = 0 IF NOT IS_CAR_DEAD fork IF IS_CHAR_IN_CAR scplayer fork IF NOT IS_CAR_DEAD van IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR van IF NOT IS_CHAR_DEAD ryder IF NOT IS_CHAR_IN_CAR ryder van IF IS_CAR_STOPPED van van_collision = 1 FREEZE_CAR_POSITION van TRUE SET_CAR_COLLISION van FALSE IF NOT DOES_OBJECT_EXIST fake_van_collision_obj GET_CAR_COORDINATES van x y z GET_CAR_HEADING van heading CREATE_OBJECT_NO_OFFSET FAKE_MULE_COL x y z fake_van_collision_obj SET_OBJECT_HEADING fake_van_collision_obj heading ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ELSE IF loading_box_screen = 0 IF NOT IS_CAR_DEAD fork IF NOT IS_CHAR_IN_CAR scplayer fork van_collision = 0 ENDIF ELSE van_collision = 0 ENDIF IF van_collision = 0 IF DOES_OBJECT_EXIST fake_van_collision_obj GET_OBJECT_COORDINATES fake_van_collision_obj x y z GET_OBJECT_HEADING fake_van_collision_obj heading DELETE_OBJECT fake_van_collision_obj ENDIF IF NOT IS_CAR_DEAD van SET_CAR_COLLISION van TRUE FREEZE_CAR_POSITION van FALSE ENDIF ENDIF ENDIF ENDIF ENDIF // ******************************************************************************* // HELP TEXT // ******************************************************************************* IF frame_num = 3 AND m_stage >= 3 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND audio_line_is_active = 0 // switch1 help LVAR_INT switch1_help IF DOES_OBJECT_EXIST switch1 IF NOT HAS_OBJECT_BEEN_DAMAGED switch1 IF LOCATE_CHAR_ON_FOOT_3D scplayer 2722.1143 -2412.0549 12.6198 2.0 2.0 2.0 FALSE IF switch1_help = 0 //PRINT_NOW RY2_42 5000 1 // shoot switch PRINT_NOW RY2_61 5000 1 switch1_help++ ENDIF ELSE IF NOT switch1_help = 0 switch1_help = 0 ENDIF ENDIF ENDIF ENDIF // switch2 help LVAR_INT switch2_help IF DOES_OBJECT_EXIST switch2 IF NOT HAS_OBJECT_BEEN_DAMAGED switch2 IF LOCATE_CHAR_ON_FOOT_3D scplayer 2773.1008 -2423.4185 12.6269 2.0 2.0 2.0 FALSE IF switch2_help = 0 PRINT_NOW RY2_62 5000 1 // shoot switch switch2_help++ ENDIF ELSE IF NOT switch2_help = 0 switch2_help = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // ************************************************** // RYDER DRIVING VAN DIALOGUE // ************************************************** LVAR_INT in_van_way IF frame_num = 4 IF audio_line_is_active = 0 IF NOT IS_CAR_DEAD van IF IS_PLAYBACK_GOING_ON_FOR_CAR van GET_OFFSET_FROM_CAR_IN_WORLD_COORDS van 0.0 10.0 0.0 x y z IF LOCATE_CHAR_ANY_MEANS_3D scplayer x y z 4.0 4.0 4.0 FALSE IF in_van_way = 0 GENERATE_RANDOM_INT_IN_RANGE 0 3 temp_int SWITCH temp_int CASE 0 $audio_string = &RYD2_JA audio_sound_file = SOUND_RYD2_JA START_NEW_SCRIPT audio_line ryder 0 0 1 0 BREAK CASE 1 $audio_string = &RYD2_JB audio_sound_file = SOUND_RYD2_JB START_NEW_SCRIPT audio_line ryder 0 0 1 0 BREAK CASE 2 $audio_string = &RYD2_JC audio_sound_file = SOUND_RYD2_JC START_NEW_SCRIPT audio_line ryder 0 0 1 0 BREAK ENDSWITCH in_van_way++ ENDIF ELSE IF NOT in_van_way = 0 in_van_way = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // ************************************************** // SMASHED BOXES DIALOGUE // ************************************************** IF smashed_boxes = 3 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND audio_line_is_active = 0 $audio_string = &RYD2_LG audio_sound_file = SOUND_RYD2_LG START_NEW_SCRIPT audio_line ryder 0 1 1 0 smashed_boxes++ ENDIF ENDIF RETURN // ************************************************************************************************************* // MISSION SPECIFIC GOSUBS // ************************************************************************************************************* LVAR_INT throwing_boxes LVAR_INT throwing_status LVAR_INT shown_boxes LVAR_INT show_front_box LVAR_INT displayed_boxes_in_van[5] LVAR_INT hide_anim_box LVAR_INT uvf_temp_int update_van_filling: IF shown_boxes = 6 show_front_box = 1 shown_boxes = 5 ENDIF IF show_front_box = 1 IF NOT IS_CAR_DEAD van IF NOT DOES_OBJECT_EXIST hide_anim_box CREATE_OBJECT CM_BOX 0.0 0.0 0.0 hide_anim_box SET_OBJECT_COLLISION hide_anim_box FALSE ATTACH_OBJECT_TO_CAR hide_anim_box van 0.6223 -2.3101 0.2002 0.0 0.0 317.0214 ENDIF ENDIF ELSE IF DOES_OBJECT_EXIST hide_anim_box DELETE_OBJECT hide_anim_box ENDIF ENDIF SWITCH shown_boxes CASE 0 uvf_temp_int = 0 WHILE uvf_temp_int < 5 IF DOES_OBJECT_EXIST displayed_boxes_in_van[uvf_temp_int] DELETE_OBJECT displayed_boxes_in_van[uvf_temp_int] ENDIF uvf_temp_int++ ENDWHILE BREAK CASE 1 IF NOT DOES_OBJECT_EXIST displayed_boxes_in_van[0] IF NOT IS_CAR_DEAD van CREATE_OBJECT CJ_CARDBRD_PICKUP 0.0 0.0 0.0 displayed_boxes_in_van[0] SET_OBJECT_COLLISION displayed_boxes_in_van[0] FALSE ATTACH_OBJECT_TO_CAR displayed_boxes_in_van[0] van -0.4928 -0.1684 0.3614 0.0 0.0 0.0 ENDIF ENDIF uvf_temp_int = 1 WHILE uvf_temp_int < 5 IF DOES_OBJECT_EXIST displayed_boxes_in_van[uvf_temp_int] DELETE_OBJECT displayed_boxes_in_van[uvf_temp_int] ENDIF uvf_temp_int++ ENDWHILE BREAK CASE 2 IF NOT DOES_OBJECT_EXIST displayed_boxes_in_van[1] IF NOT IS_CAR_DEAD van CREATE_OBJECT CJ_CARDBRD_PICKUP 0.0 0.0 0.0 displayed_boxes_in_van[1] SET_OBJECT_COLLISION displayed_boxes_in_van[1] FALSE ATTACH_OBJECT_TO_CAR displayed_boxes_in_van[1] van 0.4835 -0.2148 0.3614 0.0 0.0 0.0 ENDIF ENDIF IF NOT DOES_OBJECT_EXIST displayed_boxes_in_van[0] IF NOT IS_CAR_DEAD van CREATE_OBJECT CJ_CARDBRD_PICKUP 0.0 0.0 0.0 displayed_boxes_in_van[0] SET_OBJECT_COLLISION displayed_boxes_in_van[0] FALSE ATTACH_OBJECT_TO_CAR displayed_boxes_in_van[0] van -0.4928 -0.1684 0.3614 0.0 0.0 0.0 ENDIF ENDIF uvf_temp_int = 2 WHILE uvf_temp_int < 5 IF DOES_OBJECT_EXIST displayed_boxes_in_van[uvf_temp_int] DELETE_OBJECT displayed_boxes_in_van[uvf_temp_int] ENDIF uvf_temp_int++ ENDWHILE BREAK CASE 3 IF NOT DOES_OBJECT_EXIST displayed_boxes_in_van[2] IF NOT IS_CAR_DEAD van CREATE_OBJECT CARDBOARDBOX2 0.0 0.0 0.0 displayed_boxes_in_van[2] SET_OBJECT_COLLISION displayed_boxes_in_van[2] FALSE ATTACH_OBJECT_TO_CAR displayed_boxes_in_van[2] van -0.2585 -0.3195 1.1567 0.0 0.0 23.4700 ENDIF ENDIF IF NOT DOES_OBJECT_EXIST displayed_boxes_in_van[1] IF NOT IS_CAR_DEAD van CREATE_OBJECT CJ_CARDBRD_PICKUP 0.0 0.0 0.0 displayed_boxes_in_van[1] SET_OBJECT_COLLISION displayed_boxes_in_van[1] FALSE ATTACH_OBJECT_TO_CAR displayed_boxes_in_van[1] van 0.4835 -0.2148 0.3614 0.0 0.0 0.0 ENDIF ENDIF IF NOT DOES_OBJECT_EXIST displayed_boxes_in_van[0] IF NOT IS_CAR_DEAD van CREATE_OBJECT CJ_CARDBRD_PICKUP 0.0 0.0 0.0 displayed_boxes_in_van[0] SET_OBJECT_COLLISION displayed_boxes_in_van[0] FALSE ATTACH_OBJECT_TO_CAR displayed_boxes_in_van[0] van -0.4928 -0.1684 0.3614 0.0 0.0 0.0 ENDIF ENDIF uvf_temp_int = 3 WHILE uvf_temp_int < 5 IF DOES_OBJECT_EXIST displayed_boxes_in_van[uvf_temp_int] DELETE_OBJECT displayed_boxes_in_van[uvf_temp_int] ENDIF uvf_temp_int++ ENDWHILE BREAK CASE 4 IF NOT DOES_OBJECT_EXIST displayed_boxes_in_van[3] IF NOT IS_CAR_DEAD van CREATE_OBJECT CARDBOARDBOX2 0.0 0.0 0.0 displayed_boxes_in_van[3] SET_OBJECT_COLLISION displayed_boxes_in_van[3] FALSE ATTACH_OBJECT_TO_CAR displayed_boxes_in_van[3] van -0.4009 -1.7762 0.2292 0.0 0.0 342.0102 ENDIF ENDIF IF NOT DOES_OBJECT_EXIST displayed_boxes_in_van[2] IF NOT IS_CAR_DEAD van CREATE_OBJECT CARDBOARDBOX2 0.0 0.0 0.0 displayed_boxes_in_van[2] SET_OBJECT_COLLISION displayed_boxes_in_van[2] FALSE ATTACH_OBJECT_TO_CAR displayed_boxes_in_van[2] van -0.2585 -0.3195 1.1567 0.0 0.0 23.4700 ENDIF ENDIF IF NOT DOES_OBJECT_EXIST displayed_boxes_in_van[1] IF NOT IS_CAR_DEAD van CREATE_OBJECT CJ_CARDBRD_PICKUP 0.0 0.0 0.0 displayed_boxes_in_van[1] SET_OBJECT_COLLISION displayed_boxes_in_van[1] FALSE ATTACH_OBJECT_TO_CAR displayed_boxes_in_van[1] van 0.4835 -0.2148 0.3614 0.0 0.0 0.0 ENDIF ENDIF IF NOT DOES_OBJECT_EXIST displayed_boxes_in_van[0] IF NOT IS_CAR_DEAD van CREATE_OBJECT CJ_CARDBRD_PICKUP 0.0 0.0 0.0 displayed_boxes_in_van[0] SET_OBJECT_COLLISION displayed_boxes_in_van[0] FALSE ATTACH_OBJECT_TO_CAR displayed_boxes_in_van[0] van -0.4928 -0.1684 0.3614 0.0 0.0 0.0 ENDIF ENDIF uvf_temp_int = 4 WHILE uvf_temp_int < 5 IF DOES_OBJECT_EXIST displayed_boxes_in_van[uvf_temp_int] DELETE_OBJECT displayed_boxes_in_van[uvf_temp_int] ENDIF uvf_temp_int++ ENDWHILE BREAK CASE 5 IF NOT DOES_OBJECT_EXIST displayed_boxes_in_van[4] IF NOT IS_CAR_DEAD van CREATE_OBJECT CARDBOARDBOX2 0.0 0.0 0.0 displayed_boxes_in_van[4] SET_OBJECT_COLLISION displayed_boxes_in_van[4] FALSE ATTACH_OBJECT_TO_CAR displayed_boxes_in_van[4] van -0.4374 -1.7451 0.9021 0.0 0.0 210.1588 ENDIF ENDIF IF NOT DOES_OBJECT_EXIST displayed_boxes_in_van[3] IF NOT IS_CAR_DEAD van CREATE_OBJECT CARDBOARDBOX2 0.0 0.0 0.0 displayed_boxes_in_van[3] SET_OBJECT_COLLISION displayed_boxes_in_van[3] FALSE ATTACH_OBJECT_TO_CAR displayed_boxes_in_van[3] van -0.4009 -1.7762 0.2292 0.0 0.0 342.0102 ENDIF ENDIF IF NOT DOES_OBJECT_EXIST displayed_boxes_in_van[2] IF NOT IS_CAR_DEAD van CREATE_OBJECT CARDBOARDBOX2 0.0 0.0 0.0 displayed_boxes_in_van[2] SET_OBJECT_COLLISION displayed_boxes_in_van[2] FALSE ATTACH_OBJECT_TO_CAR displayed_boxes_in_van[2] van -0.2585 -0.3195 1.1567 0.0 0.0 23.4700 ENDIF ENDIF IF NOT DOES_OBJECT_EXIST displayed_boxes_in_van[1] IF NOT IS_CAR_DEAD van CREATE_OBJECT CJ_CARDBRD_PICKUP 0.0 0.0 0.0 displayed_boxes_in_van[1] SET_OBJECT_COLLISION displayed_boxes_in_van[1] FALSE ATTACH_OBJECT_TO_CAR displayed_boxes_in_van[1] van 0.4835 -0.2148 0.3614 0.0 0.0 0.0 ENDIF ENDIF IF NOT DOES_OBJECT_EXIST displayed_boxes_in_van[0] IF NOT IS_CAR_DEAD van CREATE_OBJECT CJ_CARDBRD_PICKUP 0.0 0.0 0.0 displayed_boxes_in_van[0] SET_OBJECT_COLLISION displayed_boxes_in_van[0] FALSE ATTACH_OBJECT_TO_CAR displayed_boxes_in_van[0] van -0.4928 -0.1684 0.3614 0.0 0.0 0.0 ENDIF ENDIF BREAK ENDSWITCH RETURN LVAR_INT exp_temp_int exp_temp_int2 add_to_exploding_boxes: exp_temp_int2 = -1 exp_temp_int = 0 WHILE exp_temp_int < 10 IF NOT DOES_OBJECT_EXIST exploding_box[exp_temp_int] exp_temp_int2 = exp_temp_int exp_temp_int = 10 ENDIF exp_temp_int++ ENDWHILE IF NOT exp_temp_int2 = -1 exploding_box[exp_temp_int2] = throwing_box exploding_box_timer = 0 SET_OBJECT_RECORDS_COLLISIONS exploding_box[exp_temp_int2] TRUE loaded_boxes-- ENDIF RETURN LVAR_INT new_group_member LVAR_INT ngm_temp_int ngm_temp_int2 set_new_guard_member: // fake create IF ngm_temp_int = -999 CREATE_CHAR PEDTYPE_MISSION1 MALE01 0.0 0.0 0.0 new_group_member ENDIF IF NOT IS_CHAR_DEAD new_group_member GIVE_WEAPON_TO_CHAR new_group_member WEAPONTYPE_PISTOL 99999 SET_CHAR_ACCURACY new_group_member 32 //SET_CHAR_SHOOT_RATE new_group_member 50 SET_CHAR_HEALTH new_group_member 100 SET_CHAR_DECISION_MAKER new_group_member tough_dm SET_CHAR_RELATIONSHIP new_group_member ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 IF NOT gate1_opened = 0 SET_CHAR_RELATIONSHIP new_group_member ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 ENDIF TASK_TOGGLE_PED_THREAT_SCANNER new_group_member TRUE TRUE TRUE // SET_SEEING_RANGE new_group_member 100.0 // SET_HEARING_RANGE new_group_member 100.0 SET_SENSE_RANGE new_group_member 100.0 IF NOT DOES_GROUP_EXIST guard_group REMOVE_GROUP guard_group CREATE_GROUP DEFAULT_TASK_ALLOCATOR_STAND_STILL guard_group ENDIF GET_GROUP_SIZE guard_group ngm_temp_int ngm_temp_int2 IF ngm_temp_int = 0 SET_GROUP_LEADER guard_group new_group_member ELSE SET_GROUP_MEMBER guard_group new_group_member ENDIF SET_CHAR_NEVER_LEAVES_GROUP new_group_member TRUE ENDIF RETURN // ************************************************************ // get next box coords // ************************************************************ LVAR_FLOAT closest_dist LVAR_INT closest_box LVAR_FLOAT closest_x closest_y closest_z LVAR_FLOAT next_box_x next_box_y next_box_z LVAR_INT next_box get_box_coords: closest_dist = 999999.0 closest_box = -1 closest_x = 0.0 closest_y = 0.0 closest_z = 0.0 temp_int = 0 WHILE temp_int < 25 IF DOES_OBJECT_EXIST m_box[temp_int] IF NOT IS_CHAR_HOLDING_OBJECT scplayer m_box[temp_int] IF NOT IS_OBJECT_ATTACHED m_box[temp_int] IF NOT HAS_OBJECT_BEEN_DAMAGED m_box[temp_int] IF NOT IS_CHAR_DEAD ryder GET_CHAR_COORDINATES ryder x y z ENDIF GET_OBJECT_COORDINATES m_box[temp_int] next_box_x next_box_y next_box_z GET_DISTANCE_BETWEEN_COORDS_2D next_box_x next_box_y x y temp_float IF temp_float < 6.0 IF temp_float < closest_dist closest_dist = temp_float closest_box = temp_int closest_x = next_box_x closest_y = next_box_y closest_z = next_box_z ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF temp_int++ ENDWHILE // store resulting values next_box = closest_box next_box_x = closest_x next_box_y = closest_y next_box_z = closest_z RETURN LVAR_FLOAT throw_box_x throw_box_y throw_box_z LVAR_FLOAT throw_box_q1 throw_box_q2 throw_box_q3 throw_box_q4 ry2_throw_box: // detach box GET_OBJECT_COORDINATES throwing_box throw_box_x throw_box_y throw_box_z GET_OBJECT_QUATERNION throwing_box throw_box_q1 throw_box_q2 throw_box_q3 throw_box_q4 DROP_OBJECT ryder TRUE IF NOT IS_CAR_DEAD van GET_CAR_FORWARD_X van vec_x GET_CAR_FORWARD_Y van vec_y ENDIF vec_x *= -10.0 vec_y *= -10.0 SET_OBJECT_COORDINATES throwing_box throw_box_x throw_box_y throw_box_z SET_OBJECT_QUATERNION throwing_box throw_box_q1 throw_box_q2 throw_box_q3 throw_box_q4 SET_OBJECT_DYNAMIC throwing_box TRUE SET_OBJECT_COLLISION throwing_box TRUE ADD_TO_OBJECT_VELOCITY throwing_box vec_x vec_y 0.0 IF NOT IS_CAR_DEAD van SORT_OUT_OBJECT_COLLISION_WITH_CAR throwing_box van ENDIF GOSUB add_to_exploding_boxes throwing_box = 0 RETURN // ********************************************************************************************* // process spawned guards // ********************************************************************************************* // parameters LVAR_INT spawn_this_many_guards // workings LVAR_INT last_spawned_guard_position LVAR_INT this_spawned_guard_position LVAR_INT spawn_flag LVAR_INT spawned_dude[5] LVAR_INT this_spawned_dude LVAR_INT spawn_int // settings LVAR_FLOAT spawn_x1[10] spawn_y1[10] spawn_z1[10] spawn_h1[10] LVAR_FLOAT spawn_x2[10] spawn_y2[10] spawn_z2[10] LVAR_FLOAT spawn_x3[10] spawn_y3[10] spawn_z3[10] LVAR_FLOAT spawn_x4[10] spawn_y4[10] spawn_z4[10] process_spawning_guards: IF spawn_this_many_guards > 0 SWITCH spawn_flag // check model is loaded CASE 0 IF NOT HAS_MODEL_LOADED ARMY REQUEST_MODEL ARMY ELSE spawn_flag++ ENDIF BREAK // check there is space CASE 1 // check there is space to create a new spawned dude this_spawned_dude = -1 spawn_int = 0 WHILE spawn_int < 5 IF DOES_CHAR_EXIST spawned_dude[spawn_int] IF IS_CHAR_DEAD spawned_dude[spawn_int] MARK_CHAR_AS_NO_LONGER_NEEDED spawned_dude[spawn_int] spawned_dude[spawn_int] = 0 this_spawned_dude = spawn_int spawn_int = 5 ENDIF ELSE this_spawned_dude = spawn_int spawn_int = 5 ENDIF spawn_int++ ENDWHILE IF NOT this_spawned_dude = -1 spawn_flag++ ENDIF BREAK // check for suitable spawn position CASE 2 ry2_spawn_bit: IF this_spawned_guard_position = 3 OR this_spawned_guard_position = 7 OR this_spawned_guard_position = 8 OR this_spawned_guard_position = 9 this_spawned_guard_position++ GOTO ry2_spawn_bit ENDIF IF this_spawned_guard_position > 9 this_spawned_guard_position = 0 ENDIF IF NOT this_spawned_guard_position = last_spawned_guard_position IF NOT IS_POINT_ON_SCREEN spawn_x1[this_spawned_guard_position] spawn_y1[this_spawned_guard_position] spawn_z1[this_spawned_guard_position] 2.0 IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY spawn_x1[this_spawned_guard_position] spawn_y1[this_spawned_guard_position] spawn_z1[this_spawned_guard_position] 1.5 1.5 2.0 spawn_flag++ ELSE this_spawned_guard_position++ ENDIF ELSE this_spawned_guard_position++ ENDIF ELSE this_spawned_guard_position++ ENDIF IF this_spawned_guard_position > 9 this_spawned_guard_position = 0 ENDIF BREAK // create dude CASE 3 CREATE_CHAR PEDTYPE_MISSION1 ARMY spawn_x1[this_spawned_guard_position] spawn_y1[this_spawned_guard_position] spawn_z1[this_spawned_guard_position] spawned_dude[this_spawned_dude] new_group_member = spawned_dude[this_spawned_dude] GOSUB set_new_guard_member OPEN_SEQUENCE_TASK temp_seq TASK_TOGGLE_PED_THREAT_SCANNER -1 TRUE TRUE TRUE TASK_GO_STRAIGHT_TO_COORD -1 spawn_x2[this_spawned_guard_position] spawn_y2[this_spawned_guard_position] spawn_z2[this_spawned_guard_position] PEDMOVE_RUN -2 TASK_GO_STRAIGHT_TO_COORD -1 spawn_x3[this_spawned_guard_position] spawn_y3[this_spawned_guard_position] spawn_z3[this_spawned_guard_position] PEDMOVE_RUN -2 IF NOT IS_CHAR_DEAD ryder TASK_GOTO_CHAR -1 ryder 20000 25.0 //TASK_KILL_CHAR_ON_FOOT -1 ryder ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK spawned_dude[this_spawned_dude] temp_seq CLEAR_SEQUENCE_TASK temp_seq last_spawned_guard_position = this_spawned_guard_position spawn_this_many_guards += -1 spawn_flag = 0 //WRITE_DEBUG_WITH_INT GUARD_CREATED this_spawned_guard_position BREAK ENDSWITCH ELSE spawn_flag = 0 ENDIF RETURN LVAR_INT adjust_box_int adjust_box_position: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B adjust_box_int++ IF adjust_box_int > 24 adjust_box_int = 0 ENDIF WRITE_DEBUG_WITH_INT ADJUST_BOX_NUMBER adjust_box_int ENDIF IF DOES_OBJECT_EXIST m_box[adjust_box_int] GET_OBJECT_COORDINATES m_box[adjust_box_int] x y z GET_OBJECT_HEADING m_box[adjust_box_int] heading z += 1.0 DRAW_CORONA x y z 0.2 CORONATYPE_MOON FLARETYPE_NONE 255 0 0 z += -1.0 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_UP y += 0.1 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_DOWN y += -0.1 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_RIGHT x += 0.1 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_LEFT x += -0.1 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_8 z += 0.01 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_2 z += -0.01 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_4 heading += 1.0 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_6 heading += -1.0 ENDIF IF DOES_OBJECT_EXIST m_box[adjust_box_int] SET_OBJECT_COORDINATES m_box[adjust_box_int] x y z SET_OBJECT_HEADING m_box[adjust_box_int] heading ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ENTER SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "Box coords = " SAVE_INT_TO_DEBUG_FILE adjust_box_int SAVE_FLOAT_TO_DEBUG_FILE x SAVE_FLOAT_TO_DEBUG_FILE y SAVE_FLOAT_TO_DEBUG_FILE z SAVE_FLOAT_TO_DEBUG_FILE heading ENDIF RETURN // ************************************************************************************************************* // END OF LEVEL GOSUBS - fail, pass, cleanup // ************************************************************************************************************* // FAIL mission_failed_RYDER2: // WRITE_DEBUG ryder2_failed PRINT_BIG M_FAIL 5000 1 RETURN // PASS mission_passed_RYDER2: CLEAR_WANTED_LEVEL player1 REGISTER_MISSION_PASSED RYDER_2 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 10 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 5 //amount of respect PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL PLAYER1 PLAYER_MADE_PROGRESS 1 IF flag_returned_tags = 0 SET_GANG_WEAPONS GANG_GROVE WEAPONTYPE_PISTOL WEAPONTYPE_TEC9 WEAPONTYPE_UNARMED ENDIF REMOVE_BLIP ryder_contact_blip SET_INT_STAT PASSED_RYDER2 1 flag_ryder_mission_counter++ RETURN // CLEANUP mission_cleanup_RYDER2: IF IS_PLAYER_PLAYING player1 SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 FALSE ENDIF IF NOT IS_CAR_DEAD van FREEZE_CAR_POSITION van FALSE SET_VEHICLE_IS_CONSIDERED_BY_PLAYER van TRUE ENDIF //SET_PLAYER_IN_CAR_CAMERA_MODE ZOOM_TWO IF NOT IS_CAR_DEAD m_mesa MARK_CAR_AS_NO_LONGER_NEEDED m_mesa ENDIF // tell any remaining peds to attack player IF alarm_raised = 1 temp_int = 0 WHILE temp_int < 9 IF DOES_CHAR_EXIST m_guard[temp_int] IF NOT IS_CHAR_DEAD m_guard[temp_int] TASK_KILL_CHAR_ON_FOOT m_guard[temp_int] scplayer ENDIF ENDIF temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 5 IF DOES_CHAR_EXIST spawned_dude[temp_int] IF NOT IS_CHAR_DEAD spawned_dude[temp_int] TASK_KILL_CHAR_ON_FOOT spawned_dude[temp_int] scplayer ENDIF ENDIF temp_int++ ENDWHILE ENDIF IF NOT IS_CHAR_DEAD ryder REMOVE_CHAR_ELEGANTLY ryder ENDIF // === MARK ENTITIES AS NO LONGER NEEDED === (cars,peds,objects,blips,attractors) MARK_OBJECT_AS_NO_LONGER_NEEDED gate1 MARK_OBJECT_AS_NO_LONGER_NEEDED gate2 MARK_OBJECT_AS_NO_LONGER_NEEDED gate3 MARK_OBJECT_AS_NO_LONGER_NEEDED gate4 MARK_OBJECT_AS_NO_LONGER_NEEDED gate7 temp_int = 0 WHILE temp_int < 25 MARK_OBJECT_AS_NO_LONGER_NEEDED m_box[temp_int] IF NOT m_pickup[temp_int] = 0 REMOVE_PICKUP m_pickup[temp_int] m_pickup[temp_int] = 0 ENDIF temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 5 //MARK_CHAR_AS_NO_LONGER_NEEDED m_guard[temp_int] temp_int++ ENDWHILE REMOVE_BLIP van_blip REMOVE_BLIP location_blip REMOVE_BLIP ryder_blip REMOVE_BLIP switch1_blip REMOVE_BLIP switch2_blip temp_int = 0 WHILE temp_int < 5 IF DOES_OBJECT_EXIST displayed_boxes_in_van[temp_int] DELETE_OBJECT displayed_boxes_in_van[temp_int] ENDIF temp_int++ ENDWHILE IF DOES_OBJECT_EXIST hide_anim_box DELETE_OBJECT hide_anim_box ENDIF IF DOES_OBJECT_EXIST fake_van_collision_obj DELETE_OBJECT fake_van_collision_obj ENDIF IF DOES_VEHICLE_EXIST van IF NOT IS_CAR_DEAD van FREEZE_CAR_POSITION van FALSE SET_CAR_COLLISION van TRUE ENDIF ENDIF SWITCH_EMERGENCY_SERVICES ON REMOVE_DECISION_MAKER empty_dm REMOVE_DECISION_MAKER tough_dm REMOVE_DECISION_MAKER ryder_dm REMOVE_DECISION_MAKER driveby_dm DONT_SUPPRESS_CAR_MODEL MULE // === REMOVE ANY OTHER LOADED STUFF === (models,animations,textures) CLEAR_ONSCREEN_COUNTER loaded_boxes_neg CLEAR_ONSCREEN_COUNTER ryder_health MARK_MODEL_AS_NO_LONGER_NEEDED ARMY MARK_MODEL_AS_NO_LONGER_NEEDED MULE MARK_MODEL_AS_NO_LONGER_NEEDED PATRIOT MARK_MODEL_AS_NO_LONGER_NEEDED MESA MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED CJ_CARDBRD_PICKUP MARK_MODEL_AS_NO_LONGER_NEEDED FAM1 MARK_MODEL_AS_NO_LONGER_NEEDED FAM2 // REMOVE_ANIMATION box // REMOVE_ANIMATION carry REMOVE_ANIMATION ryder REMOVE_ANIMATION colt45 // === RESTORE ENVIRONMENT SETTINGS === SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_WANTED_MULTIPLIER 1.0 GET_GAME_TIMER timer_mobile_start START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_MISSION_AUDIO 3 // WRITE_DEBUG ryder2_cleaned_up flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // *********************************** TWAR mission 7 ************************************* // *************************************** Payback ***************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // Mission start stuff SCRIPT_NAME smoke1 GOSUB mission_start_twar7 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_twar7_failed ENDIF GOSUB mission_cleanup_twar7 MISSION_END { // Variables for mission //people LVAR_INT tw7_ass_bandit tw7_ass_bandit_bike tw7_players_bike tw7_smokes_car LVAR_INT tw7_bj_male tw7_bj_female tw7_lying_down_ped tw7_friend_of_lying_down_ped LVAR_INT tw7_car[10] tw7_char[10] tw7_goon[3] LVAR_INT tw7_cutscene_object tw7_driver_temp tw7_reenter_state //blips LVAR_INT tw7_control_blip //flags LVAR_INT tw7_goals tw7_control_flag tw7_skip_cutscene_flag tw7_deathcheck_flag LVAR_INT tw7_car_check_flag LVAR_INT tw7_flag_mc_strap_in_group LVAR_INT tw7_car_nodes LVAR_INT tw7_model tw7_class LVAR_INT tw7_which_gun LVAR_INT tw7_no_plates_flag tw7_no_plates LVAR_INT tw7_car_playback_flag LVAR_INT tw7_car_health_flag LVAR_INT tw7_special_trip_skip LVAR_FLOAT tw7_anim_time //speech LVAR_INT tw7_speech_goals tw7_speech_control_flag tw7_speech_flag LVAR_TEXT_LABEL tw7_print_label[13] LVAR_INT tw7_audio_label[13] LVAR_INT tw7_last_label LVAR_INT tw7_slot1 tw7_slot2 tw7_slot_load tw7_play_which_slot LVAR_INT tw7_random_last_label LVAR_INT tw7_storing_speech_control_number tw7_storing_speech_goals_number //coords LVAR_FLOAT tw7_playerx tw7_playery tw7_ass_banditx tw7_ass_bandity tw7_tempx tw7_tempy tw7_tempz tw7_playback_speed LVAR_FLOAT tw7_plyr_cutx tw7_plyr_cuty tw7_plyr_cutz tw7_plyr_cut_heading //sequences/decision makers/threat lists/attractors/groups LVAR_INT tw7_seq tw7_group_decision_maker tw7_group_seq tw7_char_decision_maker tw7_empty_decision_maker VAR_INT tw7_dummy_exclusion //debug // // ****************************************Mission Start************************************ mission_start_twar7: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN DISPLAY_RADAR 5 // RADAR IGNORE SWITCHED OFF NODES LOAD_MISSION_TEXT SMOKE1 IF flag_player_on_mission = 0 CREATE_CHAR PEDTYPE_MISSION2 SPECIAL03 1543.2 -1687.0 12.5 mc_strap ADD_BLIP_FOR_COORD 2454.4 -1284.5 22.7 tw7_control_blip ENDIF CLEAR_PRINTS WAIT 0 // *************************************Set Flags/variables********************************* tw7_goals = 0 tw7_control_flag = 0 tw7_skip_cutscene_flag = 0 tw7_deathcheck_flag = 0 tw7_speech_flag = 0 tw7_car_check_flag = 0 tw7_flag_mc_strap_in_group = 0 tw7_car_nodes = 0 tw7_car_playback_flag = 0 tw7_car_health_flag = 0 tw7_playerx = 0.0 tw7_playery = 0.0 tw7_ass_banditx = 0.0 tw7_ass_bandity = 0.0 tw7_tempx = 0.0 tw7_tempy = 0.0 tw7_tempz = 0.0 tw7_playback_speed = 0.0 tw7_speech_goals = 0 tw7_speech_control_flag = 0 tw7_speech_flag = 0 tw7_last_label = 0 tw7_slot1 = 0 tw7_slot2 = 0 tw7_slot_load = 0 tw7_play_which_slot = 0 tw7_random_last_label = 0 tw7_storing_speech_control_number = 0 tw7_storing_speech_goals_number = 0 tw7_plyr_cutx = 0.0 tw7_plyr_cuty = 0.0 tw7_plyr_cutz = 0.0 tw7_plyr_cut_heading = 0.0 tw7_model = 0 tw7_class = 0 tw7_which_gun = 0 tw7_no_plates_flag = 0 tw7_no_plates = 0 tw7_special_trip_skip = 0 tw7_anim_time = 0.0 tw7_reenter_state = 0 // ****************************************START OF CUTSCENE******************************** MAKE_PLAYER_GANG_DISAPPEAR CLEAR_AREA 2072.3 -1695.2 12.5 80.0 TRUE CREATE_OBJECT Lae_smokecutscene 2055.0 -1695.0 12.5 tw7_cutscene_object LOAD_CUTSCENE SMOKE1A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE DELETE_OBJECT tw7_cutscene_object MAKE_PLAYER_GANG_REAPPEAR SET_PLAYER_CONTROL player1 OFF // ****************************************END OF CUTSCENE********************************** SET_FADING_COLOUR 0 0 0 WAIT 0 //------------------REQUEST_MODELS ------------------------------ REQUEST_MODEL GLENDALE LOAD_SPECIAL_CHARACTER 1 smoke LOAD_SPECIAL_CHARACTER 2 sweet LOAD_ALL_MODELS_NOW /* ////////////debug///////////////////////////////////// SWITCH_WIDESCREEN OFF SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 REQUEST_MODEL PCJ600 LOAD_ALL_MODELS_NOW LOAD_SCENE 2408.7 -1260.7 22.5 CREATE_CAR PCJ600 2408.7 -1260.7 22.5 tw7_players_bike SET_CAR_HEADING tw7_players_bike 96.2 WARP_CHAR_INTO_CAR scplayer tw7_players_bike SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON DO_FADE 0 FADE_IN blergh: WAIT 0 GOTO blergh */ /* //////////////DEBUG///////////////// LOAD_SPECIAL_CHARACTER 3 ogloc REQUEST_MODEL LSV2 REQUEST_MODEL LSV3 REQUEST_MODEL PCJ600 LOAD_ALL_MODELS_NOW SET_CHAR_COORDINATES scplayer 2286.8 -1485.0 21.8 CREATE_CHAR PEDTYPE_MISSION2 SPECIAL03 2285.6 -1483.1 21.7 mc_strap SET_PLAYER_CONTROL player1 ON tw7_goals = 15 GOTO twar7mainloop //////////////DEBUG///////////////// */ /* //////////////DEBUG///////////////// LOAD_SPECIAL_CHARACTER 3 ogloc REQUEST_MODEL LSV2 REQUEST_MODEL LSV3 REQUEST_MODEL PCJ600 LOAD_ALL_MODELS_NOW SET_CHAR_COORDINATES scplayer 2466.9 -1278.4 28.9 CREATE_CAR GLENDALE 2075.0 -1688.5 12.29 tw7_smokes_car CREATE_CHAR PEDTYPE_MISSION2 SPECIAL01 2072.3 -1697.2 12.5 big_smoke CREATE_CHAR PEDTYPE_MISSION2 SPECIAL02 2072.3 -1696.2 12.5 sweet CREATE_CHAR PEDTYPE_MISSION2 SPECIAL03 2467.8 -1275.6 28.8 mc_strap SET_PLAYER_CONTROL player1 ON tw7_goals = 3 DO_FADE 0 FADE_IN GOTO twar7mainloop //////////////DEBUG///////////////// */ /* VAR_INT tw7_slot1 tw7_slot2 tw7_slot_load tw7_play_which_slot VAR_INT tw7_storing_speech_control_number tw7_storing_speech_goals_number VAR_INT tw7_speech_goals tw7_speech_control_flag tw7_speech_flag VIEW_INTEGER_VARIABLE tw7_speech_control_flag tw7_speech_control_flag VIEW_INTEGER_VARIABLE tw7_storing_speech_control_number tw7_storing_speech_control_number VIEW_INTEGER_VARIABLE tw7_speech_goals tw7_speech_goals VIEW_INTEGER_VARIABLE tw7_slot_load tw7_slot_load */ ///setting up char and group decision makers REMOVE_GROUP Players_Group SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 TRUE //starting intro scripted cut of player, smoke and sweet getting into the car SWITCH_WIDESCREEN ON HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE MAKE_PLAYER_GANG_DISAPPEAR //SET_FIXED_CAMERA_POSITION 2074.1 -1686.0 13.9 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 2074.7 -1707.0 13.2 JUMP_CUT SET_FIXED_CAMERA_POSITION 2073.8699 -1682.7007 14.1963 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2073.6985 -1683.6857 14.1768 JUMP_CUT LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH tw7_char_decision_maker COPY_CHAR_DECISION_MAKER DM_PED_EMPTY tw7_empty_decision_maker LOAD_GROUP_DECISION_MAKER DM_GROUP_MISSION_NORM tw7_group_decision_maker CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE tw7_group_decision_maker EVENT_LEADER_ENTERED_CAR_AS_DRIVER ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE tw7_group_decision_maker EVENT_LEADER_ENTERED_CAR_AS_DRIVER TASK_GROUP_ENTER_CAR_AND_PERFORM_SEQUENCE 100.0 100.0 100.0 100.0 1 1 CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE tw7_group_decision_maker EVENT_ACQUAINTANCE_PED_HATE ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE tw7_group_decision_maker EVENT_ACQUAINTANCE_PED_HATE TASK_GROUP_USE_MEMBER_DECISION 0.0 100.0 0.0 0.0 1 0 CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE tw7_group_decision_maker EVENT_PLAYER_COMMAND_TO_GROUP CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE tw7_group_decision_maker EVENT_DAMAGE SET_GROUP_DECISION_MAKER Players_Group tw7_group_decision_maker //smokes car CLEAR_AREA 2075.0 -1688.5 12.29 10.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR GLENDALE &_A2tmfK_ CREATE_CAR GLENDALE 2075.0 -1688.5 12.29 tw7_smokes_car SET_CAR_HEADING tw7_smokes_car 359.74 CHANGE_CAR_COLOUR tw7_smokes_car 98 14 SET_CAN_RESPRAY_CAR tw7_smokes_car FALSE SET_RADIO_CHANNEL RS_DISCO_FUNK_SOUL //smoke CLEAR_AREA 2077.0 -1691.1 12.5 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 SPECIAL01 2077.0 -1691.1 12.5 big_smoke //CLEAR_AREA 2072.3 -1697.2 12.5 1.0 TRUE //CREATE_CHAR PEDTYPE_MISSION2 SPECIAL01 2072.3 -1697.2 12.5 big_smoke SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR big_smoke FALSE SET_CHAR_HEADING big_smoke 255.7 SET_CHAR_NEVER_TARGETTED big_smoke TRUE SET_CHAR_CANT_BE_DRAGGED_OUT big_smoke TRUE SET_ANIM_GROUP_FOR_CHAR big_smoke fatman SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER big_smoke tw7_smokes_car -2 0 SET_CHAR_DECISION_MAKER big_smoke tw7_empty_decision_maker GET_RANDOM_CHAR_IN_SPHERE_ONLY_DRUGS_BUYERS 2081.75 -1736.35 12.49 120.0 tw7_dummy_exclusion //HACKED PATHFIND EXCLUSION //sweet CLEAR_AREA 2075.3 -1693.4 12.5 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 SPECIAL02 2075.3 -1693.4 12.5 sweet //CLEAR_AREA 2072.3 -1696.2 12.5 1.0 TRUE //CREATE_CHAR PEDTYPE_MISSION2 SPECIAL02 2072.3 -1696.2 12.5 sweet SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR sweet FALSE SET_CHAR_NEVER_TARGETTED sweet TRUE SET_CHAR_CANT_BE_DRAGGED_OUT sweet TRUE SET_ANIM_GROUP_FOR_CHAR sweet gang2 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER sweet tw7_smokes_car -2 2 SET_CHAR_DECISION_MAKER sweet tw7_empty_decision_maker //scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_AREA 2072.9 -1690.6 12.5 1.0 TRUE SET_CHAR_COORDINATES scplayer 2072.9 -1690.6 12.5 //CLEAR_AREA 2072.3 -1695.2 12.5 1.0 TRUE //SET_CHAR_COORDINATES scplayer 2072.3 -1695.2 12.5 SET_CHAR_HEADING scplayer 33.0 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_DRIVER scplayer tw7_smokes_car -2 SWITCH_RANDOM_TRAINS OFF DELETE_ALL_TRAINS ENABLE_AMBIENT_CRIME FALSE //switching burglary door off SWITCH_ENTRY_EXIT LAHS1A FALSE DO_FADE 500 FADE_IN tw7_skip_cutscene_flag = 1 SKIP_CUTSCENE_START twar7mainloop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_twar7_passed ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// DEATHCHECKS /////////////////////////////////////////////////////////////////////////////////// GOSUB tw7_death_checks IF tw7_deathcheck_flag = 1 GOTO mission_twar7_failed ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// FIXING SPECIAL SKIP /////////////////////////////////////////////////////////////////////////// IF tw7_goals = 0 OR tw7_goals = 1 IF tw7_special_trip_skip = 1 IF IS_SKIP_WAITING_FOR_SCRIPT_TO_FADE_IN SET_PLAYER_CONTROL player1 OFF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke FALSE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 tw7_speech_goals = 0 //mc_strap IF IS_CHAR_DEAD mc_strap REQUEST_ANIMATION CAR_CHAT LOAD_SPECIAL_CHARACTER 3 ogloc LOAD_ALL_MODELS_NOW CREATE_CHAR PEDTYPE_MISSION2 SPECIAL03 1543.2 -1687.0 12.5 mc_strap SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR mc_strap FALSE SET_CHAR_HEADING mc_strap 97.2 //TASK_PLAY_ANIM mc_strap SEAT_IDLE PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_NEVER_TARGETTED mc_strap TRUE SET_CHAR_CANT_BE_DRAGGED_OUT mc_strap TRUE SET_CHAR_SUFFERS_CRITICAL_HITS mc_strap FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER mc_strap TRUE WARP_CHAR_INTO_CAR_AS_PASSENGER mc_strap tw7_smokes_car -1 SET_SENSE_RANGE mc_strap 80.0 ENDIF REMOVE_BLIP tw7_control_blip ADD_BLIP_FOR_COORD 2454.4 -1284.5 22.7 tw7_control_blip PRINT_NOW ( SMK1_10 ) 7000 1 //Drive to the Ass bandits' house. SET_PLAYER_CONTROL player1 ON DO_FADE 1000 FADE_IN tw7_speech_flag = 2 tw7_control_flag = 2 tw7_goals = 1 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////entering Smokes car//////////////////////////////////////////////////////////////////////////// IF tw7_goals = 0 IF IS_CHAR_IN_CAR scplayer tw7_smokes_car IF IS_CHAR_IN_CAR big_smoke tw7_smokes_car IF IS_CHAR_IN_CAR sweet tw7_smokes_car tw7_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB tw7_death_checks IF tw7_deathcheck_flag = 1 GOTO mission_twar7_failed ENDIF IF tw7_skip_cutscene_flag = 1 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB tw7_death_checks IF tw7_deathcheck_flag = 1 GOTO mission_twar7_failed ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer WARP_CHAR_INTO_CAR scplayer tw7_smokes_car CLEAR_CHAR_TASKS_IMMEDIATELY big_smoke WARP_CHAR_INTO_CAR_AS_PASSENGER big_smoke tw7_smokes_car 0 CLEAR_CHAR_TASKS_IMMEDIATELY sweet WARP_CHAR_INTO_CAR_AS_PASSENGER sweet tw7_smokes_car 2 ENDIF IF tw7_trip_skip_flag[0] = 1 //SET_UP_SKIP 1526.9 -1654.5 12.1 180.0 SET_UP_SKIP_FOR_SPECIFIC_VEHICLE 1526.9 -1654.5 12.1 180.0 tw7_smokes_car IF tw7_trip_skip_flag[1] = 0 //PRINT_HELP SKIP_1 // If you have previously completed a journey in a mission that you failed you may press ~m~~widget_skip_cutscene~ to activate a 'Trip Skip'. tw7_trip_skip_flag[1] = 1 ENDIF PRINT_NOW ( SMK1_02 ) 7000 1 //Go and pick up OG Loc from the Police Station. ENDIF IF tw7_trip_skip_flag[0] = 2 //SET_UP_SKIP 2453.8 -1305.0 22.5 0.0 SET_UP_SKIP_FOR_VEHICLE_FINISHED_BY_SCRIPT 2453.8 -1305.0 22.5 0.0 tw7_smokes_car IF tw7_trip_skip_flag[1] = 0 //PRINT_HELP SKIP_1 // If you have previously completed a journey in a mission that you failed you may press ~m~~widget_skip_cutscene~ to activate a 'Trip Skip'. tw7_trip_skip_flag[1] = 1 ENDIF tw7_special_trip_skip = 1 ENDIF ADD_BLIP_FOR_COORD 1532.8 -1672.9 12.4 tw7_control_blip HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE MAKE_PLAYER_GANG_REAPPEAR SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON IF tw7_skip_cutscene_flag = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB tw7_death_checks IF tw7_deathcheck_flag = 1 GOTO mission_twar7_failed ENDIF ENDIF timerb = 0 tw7_control_flag = 0 tw7_car_check_flag = 1 tw7_goals = 1 ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////going to pick up strap////////////////////////////////////////////////////////////////////////// //waiting for player to reach strap and getting him in the car IF tw7_goals = 1 IF tw7_control_flag = 0 //initial bit of dialogue IF tw7_speech_goals = 0 IF tw7_speech_flag = 0 IF timerb > 7000 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet TRUE tw7_speech_goals = 1 tw7_speech_control_flag = 0 GOSUB tw7_dialogue_setup tw7_speech_flag = 1 ENDIF ENDIF ENDIF IF tw7_speech_flag = 1 IF tw7_speech_goals = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet FALSE tw7_speech_flag = 2 ENDIF ENDIF ////////////////debug////////////////////////////////////////////////// IF IS_CHAR_IN_ANY_CAR scplayer IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q SET_CHAR_COORDINATES scplayer 1531.4 -1693.7 12.4 ENDIF ENDIF ////////////////debug////////////////////////////////////////////////// IF IS_CHAR_IN_CAR scplayer tw7_smokes_car IF IS_CHAR_IN_CAR big_smoke tw7_smokes_car IF IS_CHAR_IN_CAR sweet tw7_smokes_car IF LOCATE_CHAR_IN_CAR_3D scplayer 1532.8 -1672.9 12.4 4.0 4.0 4.0 TRUE CLEAR_HELP SET_PLAYER_CONTROL player1 OFF tw7_control_flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF tw7_control_flag = 1 SET_PLAYER_CONTROL player1 OFF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet FALSE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 tw7_speech_goals = 0 IF tw7_trip_skip_flag[0] = 0 tw7_trip_skip_flag[0] = 1 ENDIF CLEAR_SKIP SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE MAKE_PLAYER_SAFE_FOR_CUTSCENE Player1 SWITCH_STREAMING OFF CLEAR_AREA 1532.8 -1672.9 12.4 300.0 TRUE SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 1496.5 -1672.6 13.2 DELETE_CHAR big_smoke DELETE_CHAR sweet DELETE_CAR tw7_smokes_car UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 MARK_MODEL_AS_NO_LONGER_NEEDED GLENDALE LOAD_TEXTURE_DICTIONARY LD_bum LOAD_SPRITE 1 bum2 LOAD_SPRITE 2 blkdot LOAD_ALL_MODELS_NOW USE_TEXT_COMMANDS TRUE LOAD_CUTSCENE SMOKE1B WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN timera = 0 WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 /* IF timera > 28700 IF timera < 29000 DRAW_SPRITE 2 320.0 225.0 800.0 600.0 0 0 0 255 DRAW_SPRITE 1 322.0 228.0 453.0 317.0 160 160 160 255 ENDIF ENDIF */ ENDWHILE CLEAR_CUTSCENE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE USE_TEXT_COMMANDS FALSE REMOVE_TEXTURE_DICTIONARY REQUEST_MODEL GLENDALE REQUEST_ANIMATION CAR_CHAT LOAD_SPECIAL_CHARACTER 1 smoke LOAD_SPECIAL_CHARACTER 2 sweet LOAD_SPECIAL_CHARACTER 3 ogloc LOAD_ALL_MODELS_NOW GET_RANDOM_CHAR_IN_SPHERE_ONLY_DRUGS_BUYERS 1529.55 -1604.70 12.50 114.3 tw7_dummy_exclusion //HACKED PATHFIND EXCLUSION //smokes car CUSTOM_PLATE_FOR_NEXT_CAR GLENDALE &_A2tmfK_ CREATE_CAR GLENDALE 1532.8 -1672.9 12.4 tw7_smokes_car SET_CAR_HEADING tw7_smokes_car 184.0 CHANGE_CAR_COLOUR tw7_smokes_car 98 14 SET_CAN_RESPRAY_CAR tw7_smokes_car FALSE WARP_CHAR_INTO_CAR scplayer tw7_smokes_car SET_RADIO_CHANNEL RS_DISCO_FUNK_SOUL //smoke CREATE_CHAR PEDTYPE_MISSION2 SPECIAL01 2072.3 -1697.2 12.5 big_smoke SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR big_smoke FALSE SET_CHAR_HEADING big_smoke 255.7 SET_CHAR_NEVER_TARGETTED big_smoke TRUE SET_CHAR_CANT_BE_DRAGGED_OUT big_smoke TRUE SET_ANIM_GROUP_FOR_CHAR big_smoke fatman TASK_ENTER_CAR_AS_PASSENGER big_smoke tw7_smokes_car -2 0 SET_CHAR_DECISION_MAKER big_smoke tw7_empty_decision_maker WARP_CHAR_INTO_CAR_AS_PASSENGER big_smoke tw7_smokes_car -1 //ryder CREATE_CHAR PEDTYPE_MISSION2 SPECIAL02 2072.3 -1696.2 12.5 sweet SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR sweet FALSE SET_CHAR_NEVER_TARGETTED sweet TRUE SET_CHAR_CANT_BE_DRAGGED_OUT sweet TRUE SET_ANIM_GROUP_FOR_CHAR sweet gang2 TASK_ENTER_CAR_AS_PASSENGER sweet tw7_smokes_car -2 2 SET_CHAR_DECISION_MAKER sweet tw7_empty_decision_maker WARP_CHAR_INTO_CAR_AS_PASSENGER sweet tw7_smokes_car -1 //mc_strap CREATE_CHAR PEDTYPE_MISSION2 SPECIAL03 1543.2 -1687.0 12.5 mc_strap SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR mc_strap FALSE SET_CHAR_HEADING mc_strap 97.2 //TASK_PLAY_ANIM mc_strap SEAT_IDLE PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_NEVER_TARGETTED mc_strap TRUE SET_CHAR_CANT_BE_DRAGGED_OUT mc_strap TRUE SET_CHAR_SUFFERS_CRITICAL_HITS mc_strap FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER mc_strap TRUE WARP_CHAR_INTO_CAR_AS_PASSENGER mc_strap tw7_smokes_car -1 SET_SENSE_RANGE mc_strap 80.0 CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE tw7_char_decision_maker EVENT_VEHICLE_ON_FIRE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE tw7_char_decision_maker EVENT_ACQUAINTANCE_PED_HATE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE tw7_char_decision_maker EVENT_ACQUAINTANCE_PED_HATE TASK_SIMPLE_GANG_DRIVEBY 0.0 100.0 0.0 0.0 1 1 SET_CHAR_DECISION_MAKER mc_strap tw7_char_decision_maker REMOVE_BLIP tw7_control_blip ADD_BLIP_FOR_COORD 2454.4 -1284.5 22.7 tw7_control_blip SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 GOSUB tw7_death_checks IF tw7_deathcheck_flag = 1 GOTO mission_twar7_failed ENDIF DO_FADE 1000 FADE_IN PRINT_NOW ( SMK1_10 ) 7000 1 //Drive to the Ass bandits' house. timerb = 0 tw7_speech_flag = 0 tw7_control_flag = 2 CHECKPOINT_SAVE 1 ENDIF //waiting for player to reach ass bandit house IF tw7_control_flag = 2 //initial bit of dialogue IF tw7_speech_goals = 0 IF tw7_speech_flag = 0 IF timerb > 7000 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH mc_strap TRUE tw7_speech_goals = 2 tw7_speech_control_flag = 0 GOSUB tw7_dialogue_setup tw7_speech_flag = 1 ENDIF ENDIF ENDIF IF tw7_speech_flag = 1 IF tw7_speech_goals = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH mc_strap FALSE tw7_speech_flag = 2 ENDIF ENDIF ////////////////debug////////////////////////////////debug//////////////// IF IS_CHAR_IN_ANY_CAR mc_strap IF IS_CHAR_IN_ANY_CAR scplayer IF IS_CHAR_IN_ANY_CAR big_smoke IF IS_CHAR_IN_ANY_CAR sweet IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q SET_CHAR_COORDINATES scplayer 2454.7 -1294.5 22.7 ENDIF ENDIF ENDIF ENDIF ENDIF ////////////////debug////////////////////////////////debug//////////////// IF IS_CHAR_IN_CAR scplayer tw7_smokes_car IF IS_CHAR_IN_CAR big_smoke tw7_smokes_car IF IS_CHAR_IN_CAR sweet tw7_smokes_car IF LOCATE_CHAR_IN_CAR_3D scplayer 2454.4 -1284.5 22.7 4.0 4.0 4.0 TRUE IF tw7_trip_skip_flag[0] = 1 tw7_trip_skip_flag[0] = 2 ENDIF tw7_speech_flag = 0 tw7_control_flag = 0 tw7_goals = 2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// at Mexican's house //////////////////////////////////////////////////////////////////////////// IF tw7_goals = 2 IF tw7_control_flag = 0 GET_RANDOM_CHAR_IN_SPHERE_ONLY_DRUGS_BUYERS 1930.61 -1401.21 12.87 145.3 tw7_dummy_exclusion //HACKED PATHFIND EXCLUSION //reset CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 tw7_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SHUT_ALL_CHARS_UP TRUE MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_FIXED_CAMERA_POSITION 2451.2 -1295.1 24.8 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2459.7 -1284.6 26.5 JUMP_CUT SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH mc_strap FALSE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 tw7_speech_goals = 0 tw7_skip_cutscene_flag = 1 SKIP_CUTSCENE_START TASK_PLAY_ANIM mc_strap CAR_Sc1_BR CAR_CHAT 6.0 FALSE FALSE FALSE FALSE -1 tw7_speech_goals = 3 tw7_speech_control_flag = 0 GOSUB tw7_dialogue_setup timera = 0 tw7_control_flag = 1 ENDIF IF tw7_control_flag = 1 IF tw7_speech_control_flag = 1 TASK_PLAY_ANIM scplayer CAR_Sc1_FL CAR_CHAT 6.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM sweet CAR_Sc1_BL CAR_CHAT 6.0 FALSE FALSE FALSE FALSE -1 tw7_control_flag = 2 ENDIF ENDIF IF tw7_control_flag = 2 IF tw7_speech_control_flag = 4 TASK_PLAY_ANIM big_smoke CAR_Sc1_FR CAR_CHAT 6.0 FALSE FALSE FALSE FALSE -1 tw7_control_flag = 3 ENDIF ENDIF IF tw7_control_flag = 3 DRAW_SPHERE 2468.8 -1278.2 29.1 1.2 IF tw7_speech_goals = 0 IF IS_CAR_STOPPED tw7_smokes_car OPEN_SEQUENCE_TASK tw7_seq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 2457.4 -1286.1 23.0 PEDMOVE_RUN 60000 CLOSE_SEQUENCE_TASK tw7_seq PERFORM_SEQUENCE_TASK scplayer tw7_seq CLEAR_SEQUENCE_TASK tw7_seq OPEN_SEQUENCE_TASK tw7_seq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 2458.4 -1287.8 23.0 PEDMOVE_RUN 60000 CLOSE_SEQUENCE_TASK tw7_seq PERFORM_SEQUENCE_TASK mc_strap tw7_seq CLEAR_SEQUENCE_TASK tw7_seq tw7_control_flag = 4 ENDIF ENDIF ENDIF IF tw7_control_flag = 4 DRAW_SPHERE 2468.8 -1278.2 29.1 1.2 GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK IF IS_CHAR_IN_ANY_CAR big_smoke WARP_CHAR_FROM_CAR_TO_COORD big_smoke 2472.8 -1277.9 28.9 ENDIF WARP_CHAR_INTO_CAR big_smoke tw7_smokes_car LOCK_CAR_DOORS tw7_smokes_car CARLOCK_LOCKED TASK_CAR_DRIVE_WANDER big_smoke tw7_smokes_car 15.0 DRIVINGMODE_AVOIDCARS timera = 0 tw7_control_flag = 5 ENDIF ENDIF IF tw7_control_flag = 5 DRAW_SPHERE 2468.8 -1278.2 29.1 1.2 IF timera > 0 //////DEBUG - THIS CAN BE CHANGED BACK TO 3000 IF YOU WANT TO SEE SMOKE PULLING AWAY tw7_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB tw7_death_checks IF tw7_deathcheck_flag = 1 GOTO mission_twar7_failed ENDIF //if cutscene has been skipped IF tw7_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 tw7_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS DRAW_SPHERE 2468.8 -1278.2 29.1 1.2 WAIT 0 DRAW_SPHERE 2468.8 -1278.2 29.1 1.2 ENDWHILE GOSUB tw7_death_checks IF tw7_deathcheck_flag = 1 GOTO mission_twar7_failed ENDIF CLEAR_AREA 2457.4 -1286.1 23.0 1.0 TRUE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 2457.4 -1286.1 23.0 SET_CHAR_HEADING scplayer 230.2 CLEAR_AREA 2458.4 -1287.8 23.0 1.0 TRUE CLEAR_CHAR_TASKS_IMMEDIATELY mc_strap SET_CHAR_COORDINATES mc_strap 2458.4 -1287.8 23.0 SET_CHAR_HEADING mc_strap 230.2 CLEAR_AREA 2452.4 -1267.6 23.8 5.0 TRUE SET_CAR_COORDINATES tw7_smokes_car 2452.4 -1267.6 23.8 SET_CAR_HEADING tw7_smokes_car 0.0 IF IS_CHAR_IN_ANY_CAR big_smoke WARP_CHAR_FROM_CAR_TO_COORD big_smoke 2472.8 -1277.9 28.9 ENDIF WARP_CHAR_INTO_CAR big_smoke tw7_smokes_car LOCK_CAR_DOORS tw7_smokes_car CARLOCK_LOCKED TASK_CAR_DRIVE_WANDER big_smoke tw7_smokes_car 15.0 DRIVINGMODE_AVOIDCARS ENDIF OPEN_SEQUENCE_TASK tw7_seq TASK_GO_STRAIGHT_TO_COORD -1 2463.5 -1286.9 25.2 PEDMOVE_RUN -2 TASK_GO_STRAIGHT_TO_COORD -1 2463.9 -1278.4 29.0 PEDMOVE_RUN -2 TASK_GO_STRAIGHT_TO_COORD -1 2467.8 -1277.1 28.9 PEDMOVE_RUN -2 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK tw7_seq PERFORM_SEQUENCE_TASK mc_strap tw7_seq CLEAR_SEQUENCE_TASK tw7_seq REMOVE_ANIMATION CAR_CHAT REMOVE_BLIP tw7_control_blip ADD_BLIP_FOR_COORD 2468.8 -1278.4 28.9 tw7_control_blip SET_BLIP_AS_FRIENDLY tw7_control_blip FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE MAKE_PLAYER_GANG_REAPPEAR SWITCH_WIDESCREEN OFF SHUT_ALL_CHARS_UP FALSE RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON CHECKPOINT_SAVE 1 // for the chase DISPLAY_RADAR 2 // PATHING OFF CLEAR_PRINTS PRINT_NOW ( SMK1_03 ) 7000 1 //Go and ring the doorbell. IF tw7_skip_cutscene_flag = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS DRAW_SPHERE 2468.8 -1278.2 29.1 1.2 WAIT 0 DRAW_SPHERE 2468.8 -1278.2 29.1 1.2 ENDWHILE GOSUB tw7_death_checks IF tw7_deathcheck_flag = 1 GOTO mission_twar7_failed ENDIF ENDIF tw7_control_flag = 0 tw7_goals = 3 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// At the Mexican's house //////////////////////////////////////////////////////////////////////// IF tw7_goals = 3 IF tw7_control_flag = 0 IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer 2468.8 -1278.2 29.1 1.2 1.2 3.0 TRUE tw7_control_flag = 1 ENDIF ENDIF IF tw7_control_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_MISSION_AUDIO 3 tw7_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB tw7_death_checks IF tw7_deathcheck_flag = 1 GOTO mission_twar7_failed ENDIF SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SHUT_ALL_CHARS_UP TRUE MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE REQUEST_MODEL PCJ600 REQUEST_MODEL TEC9 REQUEST_MODEL LSV2 REQUEST_MODEL MICRO_UZI REQUEST_ANIMATION CRIB REQUEST_ANIMATION MISC REQUEST_ANIMATION GANGS REQUEST_ANIMATION RAPPING LOAD_TEXTURE_DICTIONARY LD_bum LOAD_SPRITE 1 bum1 LOAD_SPRITE 2 blkdot LOAD_ALL_MODELS_NOW USE_TEXT_COMMANDS TRUE LOAD_MISSION_AUDIO 3 SOUND_BANK_OGLOC WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE GOSUB tw7_death_checks IF tw7_deathcheck_flag = 1 GOTO mission_twar7_failed ENDIF LOAD_ALL_MODELS_NOW //creating fake car for player CLEAR_AREA 2471.0 -1285.1 28.3 30.0 TRUE CREATE_CAR PCJ600 2471.0 -1285.1 28.3 tw7_players_bike SET_CAR_HEADING tw7_players_bike 272.5 SET_CAN_BURST_CAR_TYRES tw7_players_bike FALSE CLEAR_AREA 2488.2 -1279.9 30.0 30.0 TRUE CREATE_CAR PCJ600 2488.2 -1279.9 30.0 tw7_ass_bandit_bike SET_CAR_ONLY_DAMAGED_BY_PLAYER tw7_ass_bandit_bike TRUE SET_CAR_HEADING tw7_ass_bandit_bike 286.4 SET_CAR_ALWAYS_CREATE_SKIDS tw7_ass_bandit_bike TRUE SET_CAN_BURST_CAR_TYRES tw7_ass_bandit_bike FALSE SET_CAR_PROOFS tw7_ass_bandit_bike TRUE TRUE TRUE TRUE TRUE CLEAR_AREA 2483.9 -1280.2 29.4 30.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 LSV2 2483.9 -1280.2 29.4 tw7_ass_bandit SET_CHAR_ACCURACY tw7_ass_bandit 10 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH tw7_ass_bandit TRUE SET_CHAR_MONEY tw7_ass_bandit 500 SET_CHAR_HEADING tw7_ass_bandit 261.6 GIVE_WEAPON_TO_CHAR tw7_ass_bandit WEAPONTYPE_TEC9 30000 SET_CHAR_SUFFERS_CRITICAL_HITS tw7_ass_bandit FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER tw7_ass_bandit TRUE SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE tw7_ass_bandit KNOCKOFFBIKE_NEVER SET_CHAR_STAY_IN_SAME_PLACE tw7_ass_bandit TRUE SET_CHAR_PROOFS tw7_ass_bandit TRUE TRUE FALSE TRUE TRUE SET_CHAR_SHOOT_RATE tw7_ass_bandit 20 SET_CHAR_DECISION_MAKER tw7_ass_bandit tw7_empty_decision_maker OPEN_SEQUENCE_TASK tw7_group_seq TASK_DRIVE_BY -1 tw7_ass_bandit -1 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN FALSE 100 CLOSE_SEQUENCE_TASK tw7_group_seq SET_GROUP_SEQUENCE Players_Group tw7_group_seq CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY mc_strap CLEAR_AREA 2468.0 -1278.5 29.1 1.0 TRUE SET_CHAR_COORDINATES scplayer 2468.0 -1278.5 29.1 SET_CHAR_HEADING scplayer 269.4 CLEAR_AREA 2467.4 -1275.8 28.8 1.0 TRUE SET_CHAR_COORDINATES mc_strap 2467.4 -1275.8 28.8 SET_CHAR_HEADING mc_strap 282.8 OPEN_SEQUENCE_TASK tw7_seq TASK_GO_STRAIGHT_TO_COORD -1 2469.2 -1278.7 29.3 PEDMOVE_WALK 60000 TASK_ACHIEVE_HEADING -1 262.0 TASK_PLAY_ANIM -1 CRIB_Use_Switch CRIB 4.0 FALSE FALSE FALSE FALSE 800 TASK_LOOK_AT_CHAR -1 mc_strap 7000 CLOSE_SEQUENCE_TASK tw7_seq PERFORM_SEQUENCE_TASK scplayer tw7_seq CLEAR_SEQUENCE_TASK tw7_seq tw7_skip_cutscene_flag = 1 SKIP_CUTSCENE_START CLEAR_PRINTS SET_FIXED_CAMERA_POSITION 2461.7 -1273.7 30.0 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2470.1 -1277.1 30.7 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB tw7_death_checks IF tw7_deathcheck_flag = 1 GOTO mission_twar7_failed ENDIF tw7_control_flag = 2 ENDIF IF tw7_control_flag = 2 IF IS_CHAR_PLAYING_ANIM scplayer CRIB_Use_Switch GET_CHAR_ANIM_CURRENT_TIME scplayer CRIB_Use_Switch tw7_anim_time IF tw7_anim_time > 0.65 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 2469.2 -1278.7 29.3 SOUND_OGLOC_DOORBELL tw7_control_flag = 3 ENDIF ENDIF ENDIF IF tw7_control_flag = 3 GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK OPEN_SEQUENCE_TASK tw7_seq TASK_PLAY_ANIM -1 prtial_gngtlkE GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 2467.8 -1274.4 28.8 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 2468.6 -1273.3 28.8 PEDMOVE_WALK -2 TASK_ACHIEVE_HEADING -1 278.7 //TASK_PLAY_ANIM -1 bng_wndw_02 MISC 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK tw7_seq PERFORM_SEQUENCE_TASK mc_strap tw7_seq CLEAR_SEQUENCE_TASK tw7_seq // Freddy! I've come for you, motherfucker! tw7_speech_goals = 4 tw7_speech_control_flag = 0 tw7_random_last_label = 5 GOSUB tw7_dialogue_setup tw7_control_flag = 4 ENDIF ENDIF IF tw7_control_flag = 4 IF tw7_speech_control_flag > 2 OPEN_SEQUENCE_TASK tw7_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 mc_strap TASK_PLAY_ANIM -1 plyr_shkhead MISC 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK tw7_seq PERFORM_SEQUENCE_TASK scplayer tw7_seq CLEAR_SEQUENCE_TASK tw7_seq tw7_control_flag = 5 ENDIF ENDIF IF tw7_control_flag = 5 //loading up the window banging sound IF tw7_speech_goals = 0 OPEN_SEQUENCE_TASK tw7_seq TASK_PLAY_ANIM -1 bng_wndw MISC 4.0 FALSE FALSE FALSE FALSE -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer //TASK_PLAY_ANIM -1 prtial_gngtlkE GANGS 4.0 FALSE FALSE FALSE FALSE -1 //TASK_ACHIEVE_HEADING -1 278.7 CLOSE_SEQUENCE_TASK tw7_seq PERFORM_SEQUENCE_TASK mc_strap tw7_seq CLEAR_SEQUENCE_TASK tw7_seq OPEN_SEQUENCE_TASK tw7_seq TASK_PLAY_ANIM -1 Laugh_01 RAPPING 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK tw7_seq PERFORM_SEQUENCE_TASK scplayer tw7_seq CLEAR_SEQUENCE_TASK tw7_seq // GIMME BACK MY RHYMES! tw7_speech_goals = 4 tw7_speech_control_flag = 5 tw7_random_last_label = 9 GOSUB tw7_dialogue_setup timera = 0 tw7_control_flag = 6 ENDIF ENDIF IF tw7_control_flag = 6 IF IS_CHAR_PLAYING_ANIM mc_strap bng_wndw GET_CHAR_ANIM_CURRENT_TIME mc_strap bng_wndw tw7_anim_time IF tw7_anim_time > 0.4 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 2468.6 -1273.3 28.8 SOUND_OGLOC_WINDOW_RATTLE_BANG tw7_control_flag = 7 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD tw7_ass_bandit IF NOT IS_CAR_DEAD tw7_ass_bandit_bike IF tw7_control_flag = 7 /* IF timera > 8700 IF timera < 9000 DRAW_SPRITE 2 320.0 225.0 800.0 600.0 0 0 0 255 DRAW_SPRITE 1 322.0 228.0 453.0 317.0 160 160 160 255 ENDIF ENDIF */ IF tw7_speech_goals = 0 OPEN_SEQUENCE_TASK tw7_seq TASK_ENTER_CAR_AS_DRIVER -1 tw7_ass_bandit_bike -1 CLOSE_SEQUENCE_TASK tw7_seq PERFORM_SEQUENCE_TASK tw7_ass_bandit tw7_seq CLEAR_SEQUENCE_TASK tw7_seq // Motherfucker's making a break for it! tw7_speech_goals = 4 tw7_speech_control_flag = 9 tw7_random_last_label = 10 GOSUB tw7_dialogue_setup SET_FIXED_CAMERA_POSITION 2495.4 -1282.3 32.6 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2479.2 -1272.5 30.5 JUMP_CUT tw7_control_flag = 8 ENDIF ENDIF IF tw7_control_flag = 8 IF IS_CHAR_IN_CAR tw7_ass_bandit tw7_ass_bandit_bike START_PLAYBACK_RECORDED_CAR tw7_ass_bandit_bike 30 //leaving the house and stopping just before the alleyways timera = 0 tw7_control_flag = 9 ENDIF ENDIF IF tw7_control_flag = 9 IF timera > 2000 IF NOT IS_CAR_DEAD tw7_players_bike CLEAR_AREA 2468.4 -1282.4 28.8 1.0 TRUE SET_CHAR_COORDINATES mc_strap 2468.4 -1282.4 28.8 SET_CHAR_HEADING mc_strap 171.7 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_RUN OPEN_SEQUENCE_TASK tw7_seq TASK_ENTER_CAR_AS_PASSENGER -1 tw7_players_bike -2 -1 CLOSE_SEQUENCE_TASK tw7_seq PERFORM_SEQUENCE_TASK mc_strap tw7_seq CLEAR_SEQUENCE_TASK tw7_seq CLEAR_AREA 2467.4 -1281.2 28.8 1.0 TRUE SET_CHAR_COORDINATES scplayer 2467.4 -1281.2 28.8 SET_CHAR_HEADING scplayer 171.7 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_RUN OPEN_SEQUENCE_TASK tw7_seq TASK_ENTER_CAR_AS_DRIVER -1 tw7_players_bike -2 CLOSE_SEQUENCE_TASK tw7_seq PERFORM_SEQUENCE_TASK scplayer tw7_seq CLEAR_SEQUENCE_TASK tw7_seq SET_FIXED_CAMERA_POSITION 2460.9 -1283.7 30.6 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2472.6 -1284.4 31.1 JUMP_CUT tw7_speech_goals = 5 tw7_speech_control_flag = 0 GOSUB tw7_dialogue_setup tw7_control_flag = 10 ENDIF ENDIF ENDIF IF tw7_control_flag = 10 IF tw7_speech_goals = 0 IF NOT IS_CHAR_DEAD mc_strap IF NOT IS_CAR_DEAD tw7_players_bike IF IS_CHAR_IN_CAR scplayer tw7_players_bike AND IS_CHAR_IN_CAR mc_strap tw7_players_bike tw7_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB tw7_death_checks IF tw7_deathcheck_flag = 1 GOTO mission_twar7_failed ENDIF IF tw7_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_MISSION_AUDIO 3 tw7_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB tw7_death_checks IF tw7_deathcheck_flag = 1 GOTO mission_twar7_failed ENDIF IF NOT IS_CHAR_DEAD tw7_ass_bandit IF NOT IS_CAR_DEAD tw7_ass_bandit_bike CLEAR_CHAR_TASKS tw7_ass_bandit IF NOT IS_CHAR_IN_CAR tw7_ass_bandit tw7_ass_bandit_bike WARP_CHAR_INTO_CAR tw7_ass_bandit tw7_ass_bandit_bike ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD tw7_players_bike CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY mc_strap IF NOT IS_CHAR_IN_CAR scplayer tw7_players_bike WARP_CHAR_INTO_CAR scplayer tw7_players_bike ENDIF IF NOT IS_CHAR_IN_CAR mc_strap tw7_players_bike TASK_WARP_CHAR_INTO_CAR_AS_PASSENGER mc_strap tw7_players_bike -1 ENDIF ENDIF ENDIF ENSURE_PLAYER_HAS_DRIVE_BY_WEAPON player1 78 GIVE_WEAPON_TO_CHAR mc_strap WEAPONTYPE_TEC9 30000 SET_CURRENT_CHAR_WEAPON mc_strap WEAPONTYPE_TEC9 MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_Group mc_strap tw7_flag_mc_strap_in_group = 1 tw7_car_check_flag = 1 SET_CHAR_RELATIONSHIP mc_strap ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 IF NOT IS_CHAR_DEAD tw7_ass_bandit IF NOT IS_CAR_DEAD tw7_ass_bandit_bike IF IS_PLAYBACK_GOING_ON_FOR_CAR tw7_ass_bandit_bike STOP_PLAYBACK_RECORDED_CAR tw7_ass_bandit_bike ENDIF SET_CAR_COORDINATES tw7_ass_bandit_bike 2521.2 -1359.0 27.3 SET_CAR_HEADING tw7_ass_bandit_bike 295.2 ENDIF ENDIF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT REMOVE_ANIMATION CRIB REMOVE_ANIMATION MISC REMOVE_ANIMATION GANGS REMOVE_ANIMATION RAPPING CLEAR_HELP PRINT_NOW ( SMK1_04 ) 7000 1 //Catch and kill the Ass Bandit! REMOVE_BLIP tw7_control_blip IF NOT IS_CHAR_DEAD tw7_ass_bandit ADD_BLIP_FOR_CHAR tw7_ass_bandit tw7_control_blip SET_BLIP_AS_FRIENDLY tw7_control_blip FALSE ENDIF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SHUT_ALL_CHARS_UP FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON IF tw7_skip_cutscene_flag = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB tw7_death_checks IF tw7_deathcheck_flag = 1 GOTO mission_twar7_failed ENDIF ENDIF USE_TEXT_COMMANDS FALSE REMOVE_TEXTURE_DICTIONARY DELETE_CHAR big_smoke DELETE_CHAR sweet DELETE_CAR tw7_smokes_car UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 MARK_MODEL_AS_NO_LONGER_NEEDED GLENDALE CLEAR_MISSION_AUDIO 3 IF IS_CAR_DEAD tw7_ass_bandit_bike OR IS_CAR_DEAD tw7_players_bike GOTO mission_twar7_failed ENDIF tw7_speech_flag = 0 tw7_control_flag = 0 tw7_goals = 4 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// Triggering the Mexican car recordings ///////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// 31 - through the alleyways //////////////////////////////////////////////////////////////////// IF tw7_goals > 3 IF tw7_goals < 15 IF NOT IS_CHAR_DEAD tw7_ass_bandit IF NOT IS_CAR_DEAD tw7_ass_bandit_bike // 3MASTER - force og loc into the back seat if he falls off GET_DRIVER_OF_CAR tw7_players_bike tw7_driver_temp IF IS_CAR_PASSENGER_SEAT_FREE tw7_players_bike 0 AND NOT tw7_driver_temp = -1 AND tw7_reenter_state = 0 TASK_ENTER_CAR_AS_PASSENGER mc_strap tw7_players_bike -1 0 tw7_reenter_state = 1 ENDIF IF NOT IS_CAR_PASSENGER_SEAT_FREE tw7_players_bike 0 AND NOT tw7_driver_temp = -1 AND tw7_reenter_state = 1 tw7_reenter_state = 0 ENDIF IF tw7_goals = 4 /////////////////// SPEECH FOR THIS SECTION ////////////////////// IF tw7_speech_flag = 0 IF tw7_speech_goals = 0 IF HAS_CHAR_SPOTTED_CHAR mc_strap tw7_ass_bandit OR HAS_CHAR_SPOTTED_CHAR tw7_ass_bandit mc_strap //IF IS_CHAR_RESPONDING_TO_EVENT mc_strap EVENT_ACQUAINTANCE_PED_HATE //OR IS_CHAR_RESPONDING_TO_EVENT tw7_ass_bandit EVENT_ACQUAINTANCE_PED_HATE IF NOT IS_CHAR_DEAD tw7_ass_bandit tw7_speech_goals = 6 tw7_speech_control_flag = 0 tw7_random_last_label = 1 GOSUB tw7_dialogue_setup ENDIF tw7_speech_flag = 1 ENDIF ENDIF ENDIF ////// car nodes jiggery pokery /////// IF tw7_car_nodes = 0 //road at end of first alleyway SWITCH_ROADS_OFF 2563.7 -1435.0 10.0 2580.3 -1266.4 100.6 //road at end of second alleyway SWITCH_ROADS_OFF 2635.0 -1434.4 10.0 2652.0 -1263.6 100.0 //road at end of third alleyway SWITCH_ROADS_OFF 2714.9 -1501.6 10.0 2746.1 -1266.4 100.0 //create_random_ped to look dead CREATE_RANDOM_CHAR 2579.8 -1348.3 35.5 tw7_lying_down_ped TASK_DIE tw7_lying_down_ped CREATE_RANDOM_CHAR 2578.8 -1348.3 35.5 tw7_friend_of_lying_down_ped SET_CHAR_HEADING tw7_friend_of_lying_down_ped 260.0 TASK_PLAY_ANIM tw7_friend_of_lying_down_ped weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 tw7_car_nodes = 1 ENDIF IF tw7_car_nodes = 1 //switching on road at end of first alleyway IF LOCATE_CAR_2D tw7_ass_bandit_bike 2582.6 -1351.8 5.0 5.0 FALSE SWITCH_ROADS_ON 2563.7 -1435.0 10.0 2580.3 -1266.4 100.6 tw7_car_nodes = 2 ENDIF ENDIF IF tw7_car_nodes = 2 //switching on road at end of second alleyway IF LOCATE_CAR_2D tw7_ass_bandit_bike 2653.0 -1329.8 5.0 5.0 FALSE SWITCH_ROADS_ON 2635.0 -1434.4 10.0 2652.0 -1263.6 100.0 tw7_car_nodes = 3 ENDIF ENDIF IF tw7_car_nodes = 3 //switching on road at end of second alleyway IF LOCATE_CAR_2D tw7_ass_bandit_bike 2748.3 -1320.3 5.0 5.0 FALSE SWITCH_ROADS_ON 2714.9 -1501.6 10.0 2746.1 -1266.4 100.0 tw7_car_nodes = 4 ENDIF ENDIF ///// main bit //////// IF tw7_control_flag = 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer tw7_ass_bandit 30.0 30.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit scplayer OR HAS_CAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit_bike scplayer START_PLAYBACK_RECORDED_CAR tw7_ass_bandit_bike 31 REMOVE_CAR_RECORDING 30 tw7_control_flag = 1 ENDIF ENDIF IF tw7_control_flag = 1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR tw7_ass_bandit_bike SWITCH_ROADS_ON 2563.7 -1435.0 10.0 2580.3 -1266.4 100.6 SWITCH_ROADS_ON 2635.0 -1434.4 10.0 2652.0 -1263.6 100.0 SWITCH_ROADS_ON 2714.9 -1501.6 10.0 2746.1 -1266.4 100.0 timera = 0 tw7_speech_flag = 0 tw7_control_flag = 0 tw7_car_nodes = 0 tw7_goals = 5 ENDIF ENDIF GOSUB tw7_sorting_speed GOSUB tw7_mc_strap_group ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// 32 - up the steep alleyway //////////////////////////////////////////////////////////////////// IF tw7_goals = 5 /////////////////// SPEECH FOR THIS SECTION ////////////////////// IF tw7_speech_flag = 0 IF HAS_CHAR_SPOTTED_CHAR mc_strap tw7_ass_bandit OR HAS_CHAR_SPOTTED_CHAR tw7_ass_bandit mc_strap //IF IS_CHAR_RESPONDING_TO_EVENT mc_strap EVENT_ACQUAINTANCE_PED_HATE //OR IS_CHAR_RESPONDING_TO_EVENT tw7_ass_bandit EVENT_ACQUAINTANCE_PED_HATE IF NOT IS_CHAR_DEAD tw7_ass_bandit tw7_speech_goals = 6 tw7_speech_control_flag = 1 tw7_random_last_label = 2 GOSUB tw7_dialogue_setup ENDIF tw7_speech_flag = 1 ENDIF IF tw7_control_flag = 1 tw7_speech_flag = 1 ENDIF ENDIF ////// car nodes jiggery pokery /////// IF tw7_car_nodes = 0 //first left road SWITCH_ROADS_OFF 2713.9 -1499.3 10.0 2746.6 -1266.3 100.0 //first right road SWITCH_ROADS_OFF 2714.6 -1249.9 10.0 2744.7 -1332.9 100.0 //second left road SWITCH_ROADS_OFF 2634.6 -1396.6 10.0 2651.0 -1264.2 100.0 //second right road SWITCH_ROADS_OFF 2635.1 -1248.0 10.0 2651.0 -1055.3 100.0 //second straight on road SWITCH_ROADS_OFF 2651.5 -1263.8 10.0 2579.5 -1248.7 100.0 tw7_car_nodes = 1 ENDIF IF tw7_car_nodes = 1 //switching on road at end of first road IF LOCATE_CAR_2D tw7_ass_bandit_bike 2712.7 -1265.7 5.0 5.0 FALSE SWITCH_ROADS_ON 2713.9 -1499.3 10.0 2746.6 -1266.3 100.0 SWITCH_ROADS_ON 2714.6 -1249.9 10.0 2744.7 -1332.9 100.0 tw7_car_nodes = 2 ENDIF ENDIF IF tw7_car_nodes = 2 //switching on road at end of second road IF LOCATE_CAR_2D tw7_ass_bandit_bike 2630.5 -1248.3 5.0 5.0 FALSE SWITCH_ROADS_ON 2634.6 -1396.6 10.0 2651.0 -1264.2 100.0 SWITCH_ROADS_ON 2635.1 -1248.0 10.0 2651.0 -1055.3 100.0 SWITCH_ROADS_ON 2651.5 -1263.8 10.0 2579.5 -1248.7 100.0 tw7_car_nodes = 3 ENDIF ENDIF ///// main bit //////// IF tw7_control_flag = 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer tw7_ass_bandit 30.0 30.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit scplayer OR HAS_CAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit_bike scplayer OR timera > 4000 IF NOT IS_CHAR_DEAD tw7_ass_bandit SET_CHAR_PROOFS tw7_ass_bandit FALSE FALSE FALSE FALSE FALSE ENDIF IF NOT IS_CAR_DEAD tw7_ass_bandit_bike SET_CAR_PROOFS tw7_ass_bandit_bike FALSE FALSE FALSE FALSE FALSE ENDIF START_PLAYBACK_RECORDED_CAR tw7_ass_bandit_bike 32 tw7_control_flag = 1 ENDIF ENDIF IF tw7_control_flag = 1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR tw7_ass_bandit_bike MARK_CHAR_AS_NO_LONGER_NEEDED tw7_friend_of_lying_down_ped MARK_CHAR_AS_NO_LONGER_NEEDED tw7_lying_down_ped SWITCH_ROADS_ON 2713.9 -1499.3 10.0 2746.6 -1266.3 100.0 SWITCH_ROADS_ON 2714.6 -1249.9 10.0 2744.7 -1332.9 100.0 SWITCH_ROADS_ON 2634.6 -1396.6 10.0 2651.0 -1264.2 100.0 SWITCH_ROADS_ON 2635.1 -1248.0 10.0 2651.0 -1055.3 100.0 SWITCH_ROADS_ON 2651.5 -1263.8 10.0 2579.5 -1248.7 100.0 timera = 0 tw7_speech_flag = 0 tw7_car_nodes = 0 tw7_control_flag = 0 tw7_goals = 6 ENDIF ENDIF GOSUB tw7_sorting_speed GOSUB tw7_mc_strap_group ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// 33 - fast road section and stops just before the wee hill /// IF tw7_goals = 6 /////////////////// SPEECH FOR THIS SECTION ////////////////////// IF tw7_speech_flag = 0 //IF IS_CHAR_RESPONDING_TO_EVENT mc_strap EVENT_ACQUAINTANCE_PED_HATE //OR IS_CHAR_RESPONDING_TO_EVENT tw7_ass_bandit EVENT_ACQUAINTANCE_PED_HATE IF HAS_CHAR_SPOTTED_CHAR mc_strap tw7_ass_bandit OR HAS_CHAR_SPOTTED_CHAR tw7_ass_bandit mc_strap OR LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer tw7_ass_bandit 35.0 35.0 FALSE timerb = 0 IF NOT IS_CHAR_DEAD tw7_ass_bandit tw7_speech_goals = 6 tw7_speech_control_flag = 2 tw7_random_last_label = 3 GOSUB tw7_dialogue_setup ENDIF tw7_speech_flag = 1 ENDIF IF tw7_control_flag = 1 tw7_speech_flag = 1 ENDIF ENDIF ////// car nodes jiggery pokery /////// IF tw7_car_nodes = 0 //first left road SWITCH_ROADS_OFF 2563.7 -1248.6 10.0 2578.9 -1192.2 100.0 //second left road SWITCH_ROADS_OFF 2443.7 -1249.2 10.0 2459.1 -1191.9 100.0 //third left road SWITCH_ROADS_OFF 2363.5 -1253.4 10.0 2378.7 -1145.5 100.0 //long road SWITCH_ROADS_OFF 2311.2 -1144.7 10.0 2379.1 -1162.1 100.0 ///////nodes for NEXT playback section////////// SWITCH_ROADS_OFF 2239.9 -1130.0 10.0 2017.6 -928.3 100.0 tw7_car_nodes = 1 ENDIF IF tw7_car_nodes = 1 //switching on first left road IF LOCATE_CAR_2D tw7_ass_bandit_bike 2563.2 -1191.8 5.0 5.0 FALSE SWITCH_ROADS_ON 2563.7 -1248.6 10.0 2578.9 -1192.2 100.6 tw7_car_nodes = 2 ENDIF ENDIF IF tw7_car_nodes = 2 //switching on second left road IF LOCATE_CAR_2D tw7_ass_bandit_bike 2442.4 -1191.4 5.0 5.0 FALSE SWITCH_ROADS_ON 2443.7 -1249.2 10.0 2459.1 -1191.9 100.0 tw7_car_nodes = 3 ENDIF ENDIF IF tw7_car_nodes = 3 //switching on third left road IF LOCATE_CAR_2D tw7_ass_bandit_bike 2360.1 -1164.8 5.0 5.0 FALSE SWITCH_ROADS_ON 2363.5 -1253.4 10.0 2378.7 -1145.5 100.0 tw7_car_nodes = 4 ENDIF ENDIF IF tw7_car_nodes = 4 //switching on road next to railway IF LOCATE_CAR_2D tw7_ass_bandit_bike 2315.0 -1145.9 5.0 5.0 FALSE SWITCH_ROADS_ON 2311.2 -1144.7 10.0 2379.1 -1162.1 100.0 tw7_car_nodes = 5 ENDIF ENDIF ///// main bit //////// IF tw7_control_flag = 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer tw7_ass_bandit 30.0 30.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit scplayer OR HAS_CAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit_bike scplayer OR timera > 4000 START_PLAYBACK_RECORDED_CAR tw7_ass_bandit_bike 33 tw7_control_flag = 1 ENDIF ENDIF IF tw7_control_flag = 1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR tw7_ass_bandit_bike SWITCH_ROADS_ON 2563.7 -1248.6 10.0 2578.9 -1192.2 100.6 SWITCH_ROADS_ON 2443.7 -1249.2 10.0 2459.1 -1191.9 100.0 SWITCH_ROADS_ON 2363.5 -1253.4 10.0 2378.7 -1145.5 100.0 SWITCH_ROADS_ON 2311.2 -1144.7 10.0 2379.1 -1162.1 100.0 timera = 0 tw7_speech_flag = 0 tw7_car_nodes = 0 tw7_control_flag = 0 tw7_goals = 7 ENDIF ENDIF GOSUB tw7_sorting_speed GOSUB tw7_mc_strap_group ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// 34 - the wee hill just before the BIG road bit (bike start @ 2224.0 -1125.8 24.2, 347.0) ///// IF tw7_goals = 7 /////////////////// SPEECH FOR THIS SECTION ////////////////////// IF tw7_speech_flag = 0 IF HAS_CHAR_SPOTTED_CHAR mc_strap tw7_ass_bandit OR HAS_CHAR_SPOTTED_CHAR tw7_ass_bandit mc_strap //IF IS_CHAR_RESPONDING_TO_EVENT mc_strap EVENT_ACQUAINTANCE_PED_HATE //OR IS_CHAR_RESPONDING_TO_EVENT tw7_ass_bandit EVENT_ACQUAINTANCE_PED_HATE timerb = 0 IF NOT IS_CHAR_DEAD tw7_ass_bandit tw7_speech_goals = 6 tw7_speech_control_flag = 3 tw7_random_last_label = 4 GOSUB tw7_dialogue_setup ENDIF tw7_speech_flag = 1 ENDIF IF tw7_control_flag = 1 tw7_speech_flag = 1 ENDIF ENDIF ////// car nodes jiggery pokery /////// IF tw7_car_nodes = 0 ///////nodes for NEXT playback section////////// //road straight ahead SWITCH_ROADS_OFF 1930.6 -1031.9 10.0 1574.4 -879.9 100.0 tw7_car_nodes = 1 ENDIF IF tw7_car_nodes = 1 //switching on first left road IF LOCATE_CAR_2D tw7_ass_bandit_bike 2149.8 -996.1 5.0 5.0 FALSE SWITCH_ROADS_ON 2239.9 -1130.0 10.0 2017.6 -928.3 100.0 tw7_car_nodes = 2 ENDIF ENDIF IF tw7_control_flag = 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer tw7_ass_bandit 30.0 30.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit scplayer OR HAS_CAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit_bike scplayer OR timera > 4000 START_PLAYBACK_RECORDED_CAR tw7_ass_bandit_bike 34 tw7_control_flag = 1 ENDIF ENDIF IF tw7_control_flag = 1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR tw7_ass_bandit_bike SWITCH_ROADS_ON 2239.9 -1130.0 10.0 2017.6 -928.3 100.0 timera = 0 tw7_speech_flag = 0 tw7_car_nodes = 0 tw7_control_flag = 0 tw7_goals = 8 ENDIF ENDIF GOSUB tw7_sorting_speed GOSUB tw7_mc_strap_group ENDIF ///////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// 35 - THE big road bit (bike start @ 1942.5 -1016.2 31.8, 87.4) /////////////////////////// IF tw7_goals = 8 /////////////////// SPEECH FOR THIS SECTION ////////////////////// IF tw7_speech_flag = 0 IF HAS_CHAR_SPOTTED_CHAR mc_strap tw7_ass_bandit OR HAS_CHAR_SPOTTED_CHAR tw7_ass_bandit mc_strap //IF IS_CHAR_RESPONDING_TO_EVENT mc_strap EVENT_ACQUAINTANCE_PED_HATE //OR IS_CHAR_RESPONDING_TO_EVENT tw7_ass_bandit EVENT_ACQUAINTANCE_PED_HATE IF NOT IS_CHAR_DEAD tw7_ass_bandit tw7_speech_goals = 6 tw7_speech_control_flag = 4 tw7_random_last_label = 5 GOSUB tw7_dialogue_setup ENDIF tw7_speech_flag = 1 ENDIF IF tw7_control_flag = 1 tw7_speech_flag = 1 ENDIF ENDIF ////// car nodes jiggery pokery /////// IF tw7_car_nodes = 0 //whole of freeway SWITCH_ROADS_OFF 1879.6 -1024.3 10.0 1600.0 -1521.7 100.0 tw7_car_nodes = 1 ENDIF IF tw7_car_nodes = 1 //switching on road straight ahead IF LOCATE_CAR_2D tw7_ass_bandit_bike 1819.4 -1034.0 5.0 5.0 FALSE SWITCH_ROADS_ON 1930.6 -1031.9 10.0 1574.4 -879.9 100.0 tw7_car_nodes = 2 ENDIF ENDIF IF tw7_car_nodes = 2 //switching on whole of freeway IF LOCATE_CAR_2D tw7_ass_bandit_bike 1755.3 -1489.1 5.0 5.0 FALSE SWITCH_ROADS_ON 1879.6 -1024.3 10.0 1552.0 -1521.7 100.0 tw7_car_nodes = 3 ENDIF ENDIF ///// main bit //////// IF tw7_control_flag = 0 AND LOCATE_CHAR_ANY_MEANS_3D tw7_ass_bandit 1942.52 -1016.24 32.83 35.0 35.0 35.0 FALSE // 3MASTER - fix idiotic bug that spawns these cars and crashes IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer tw7_ass_bandit 30.0 30.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit scplayer OR HAS_CAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit_bike scplayer OR timera > 4000 tw7_no_plates = MANANA GOSUB tw7_my_number_plates CREATE_CAR MANANA 1688.5 -1111.7 58.5 tw7_car[0] //front car - car rec 50 CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[0] tw7_char[0] SET_LOAD_COLLISION_FOR_CAR_FLAG tw7_car[0] TRUE SET_CAR_HEADING tw7_car[0] 322.3 START_PLAYBACK_RECORDED_CAR tw7_car[0] 50 tw7_no_plates = MANANA GOSUB tw7_my_number_plates CREATE_CAR MANANA 1679.7 -1131.6 59.7 tw7_car[1] //second car - car rec 51 CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[1] tw7_char[1] SET_LOAD_COLLISION_FOR_CAR_FLAG tw7_car[1] TRUE SET_CAR_HEADING tw7_car[1] 321.2 START_PLAYBACK_RECORDED_CAR tw7_car[1] 51 CREATE_CAR PCJ600 1644.8 -1177.5 54.3 tw7_car[2] //third car - first bike - car rec 52 CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[2] tw7_char[2] SET_LOAD_COLLISION_FOR_CAR_FLAG tw7_car[2] TRUE SET_CAR_HEADING tw7_car[2] 320.8 START_PLAYBACK_RECORDED_CAR tw7_car[2] 52 tw7_no_plates = MANANA GOSUB tw7_my_number_plates CREATE_CAR MANANA 1637.0 -1203.8 51.5 tw7_car[3] //fourth car - car rec 53 CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[3] tw7_char[3] SET_LOAD_COLLISION_FOR_CAR_FLAG tw7_car[3] TRUE SET_CAR_HEADING tw7_car[3] 350.3 START_PLAYBACK_RECORDED_CAR tw7_car[3] 53 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE tw7_model tw7_class IF tw7_model >= 0 tw7_no_plates = tw7_model GOSUB tw7_my_number_plates CREATE_CAR tw7_model 1618.2 -1306.4 35.6 tw7_car[4] //first car left on dual carriageway - car rec 54 SET_CAR_HEADING tw7_car[4] 343.7 SET_LOAD_COLLISION_FOR_CAR_FLAG tw7_car[4] TRUE CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[4] tw7_char[4] START_PLAYBACK_RECORDED_CAR tw7_car[4] 54 ENDIF GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE tw7_model tw7_class IF tw7_model >= 0 tw7_no_plates = tw7_model GOSUB tw7_my_number_plates CREATE_CAR tw7_model 1621.8 -1317.9 33.0 tw7_car[5] //second car left on dual carriageway - car rec 55 SET_CAR_HEADING tw7_car[5] 348.7 SET_LOAD_COLLISION_FOR_CAR_FLAG tw7_car[5] TRUE CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[5] tw7_char[5] START_PLAYBACK_RECORDED_CAR tw7_car[5] 55 ENDIF GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE tw7_model tw7_class IF tw7_model >= 0 tw7_no_plates = tw7_model GOSUB tw7_my_number_plates CREATE_CAR tw7_model 1615.6 -1327.7 31.5 tw7_car[6] //second car right on dual carriageway - car rec 56 SET_CAR_HEADING tw7_car[6] 352.1 SET_LOAD_COLLISION_FOR_CAR_FLAG tw7_car[6] TRUE CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[6] tw7_char[6] START_PLAYBACK_RECORDED_CAR tw7_car[6] 56 ENDIF GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE tw7_model tw7_class IF tw7_model >= 0 tw7_no_plates = tw7_model GOSUB tw7_my_number_plates CREATE_CAR tw7_model 1612.3 -1394.0 27.6 tw7_car[7] //third car right on dual carriageway - car rec 57 SET_CAR_HEADING tw7_car[7] 353.6 SET_LOAD_COLLISION_FOR_CAR_FLAG tw7_car[7] TRUE CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[7] tw7_char[7] START_PLAYBACK_RECORDED_CAR tw7_car[7] 57 ENDIF GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE tw7_model tw7_class IF tw7_model >= 0 tw7_no_plates = tw7_model GOSUB tw7_my_number_plates CREATE_CAR tw7_model 1612.3 -1462.2 27.1 tw7_car[8] //fourth car right on dual carriageway - car rec 58 SET_CAR_HEADING tw7_car[8] 357.2 SET_LOAD_COLLISION_FOR_CAR_FLAG tw7_car[8] TRUE CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[8] tw7_char[8] START_PLAYBACK_RECORDED_CAR tw7_car[8] 58 ENDIF GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE tw7_model tw7_class IF tw7_model >= 0 tw7_no_plates = tw7_model GOSUB tw7_my_number_plates CREATE_CAR tw7_model 1663.4 -1457.0 24.3 tw7_car[9] //car that crashes - car rec 60 SET_CAR_HEADING tw7_car[9] 51.9 SET_LOAD_COLLISION_FOR_CAR_FLAG tw7_car[9] TRUE CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[9] tw7_char[9] START_PLAYBACK_RECORDED_CAR tw7_car[9] 60 ENDIF START_PLAYBACK_RECORDED_CAR tw7_ass_bandit_bike 35 tw7_control_flag = 1 ENDIF ENDIF IF tw7_control_flag = 1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR tw7_ass_bandit_bike tw7_control_flag = 2 ENDIF IF NOT IS_CAR_DEAD tw7_car[9] IF LOCATE_CAR_2D tw7_car[9] 1601.4 -1389.5 5.0 5.0 FALSE STOP_PLAYBACK_RECORDED_CAR tw7_car[9] //EXPLODE_CAR tw7_car[9] //ADD_EXPLOSION 1601.4 -1389.5 30.4 EXPLOSION_GRENADE //ADD_EXPLOSION 1601.4 -1389.5 30.4 EXPLOSION_OBJECT //ADD_EXPLOSION 1601.4 -1389.5 30.4 EXPLOSION_MOLOTOV tw7_control_flag = 2 ENDIF ENDIF ENDIF IF tw7_control_flag = 2 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR tw7_ass_bandit_bike SWITCH_ROADS_ON 1930.6 -1031.9 10.0 1574.4 -879.9 100.0 SWITCH_ROADS_ON 1879.6 -1024.3 10.0 1552.0 -1521.7 100.0 timera = 0 tw7_car_nodes = 0 tw7_speech_flag = 0 tw7_control_flag = 0 tw7_goals = 9 ENDIF ENDIF GOSUB tw7_sorting_speed GOSUB tw7_mc_strap_group ENDIF ///////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////// 36 - Through Little School bit with snogging peeps (bike start @ 1762.6 -1474.1 12.0, 0.0) /// IF tw7_goals = 9 /////////////////// SPEECH FOR THIS SECTION ////////////////////// IF tw7_speech_flag = 0 IF HAS_CHAR_SPOTTED_CHAR mc_strap tw7_ass_bandit OR HAS_CHAR_SPOTTED_CHAR tw7_ass_bandit mc_strap //IF IS_CHAR_RESPONDING_TO_EVENT mc_strap EVENT_ACQUAINTANCE_PED_HATE //OR IS_CHAR_RESPONDING_TO_EVENT tw7_ass_bandit EVENT_ACQUAINTANCE_PED_HATE timerb = 0 IF NOT IS_CHAR_DEAD tw7_ass_bandit tw7_speech_goals = 6 tw7_speech_control_flag = 5 tw7_random_last_label = 6 GOSUB tw7_dialogue_setup ENDIF tw7_speech_flag = 1 ENDIF IF tw7_control_flag = 1 tw7_speech_flag = 1 ENDIF ENDIF ////// car nodes jiggery pokery /////// IF tw7_car_nodes = 0 //only road to cross SWITCH_ROADS_OFF 1725.8 -1433.3 10.0 1838.0 -1459.4 100.0 tw7_car_nodes = 1 ENDIF IF tw7_car_nodes = 1 //switching on road straight ahead IF LOCATE_CAR_2D tw7_ass_bandit_bike 1781.3 -1437.9 5.0 5.0 FALSE SWITCH_ROADS_ON 1725.8 -1433.3 10.0 1838.0 -1459.4 100.0 tw7_car_nodes = 2 ENDIF ENDIF ///// main bit //////// IF tw7_control_flag = 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer tw7_ass_bandit 30.0 30.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit scplayer OR HAS_CAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit_bike scplayer OR timera > 4000 MARK_CAR_AS_NO_LONGER_NEEDED tw7_car[0] MARK_CAR_AS_NO_LONGER_NEEDED tw7_car[1] MARK_CAR_AS_NO_LONGER_NEEDED tw7_car[2] MARK_CAR_AS_NO_LONGER_NEEDED tw7_car[3] MARK_CAR_AS_NO_LONGER_NEEDED tw7_car[4] MARK_CAR_AS_NO_LONGER_NEEDED tw7_car[5] MARK_CAR_AS_NO_LONGER_NEEDED tw7_car[6] MARK_CAR_AS_NO_LONGER_NEEDED tw7_car[7] MARK_CAR_AS_NO_LONGER_NEEDED tw7_car[8] MARK_CAR_AS_NO_LONGER_NEEDED tw7_car[9] MARK_CHAR_AS_NO_LONGER_NEEDED tw7_char[0] MARK_CHAR_AS_NO_LONGER_NEEDED tw7_char[1] MARK_CHAR_AS_NO_LONGER_NEEDED tw7_char[2] MARK_CHAR_AS_NO_LONGER_NEEDED tw7_char[3] MARK_CHAR_AS_NO_LONGER_NEEDED tw7_char[4] MARK_CHAR_AS_NO_LONGER_NEEDED tw7_char[5] MARK_CHAR_AS_NO_LONGER_NEEDED tw7_char[6] MARK_CHAR_AS_NO_LONGER_NEEDED tw7_char[7] MARK_CHAR_AS_NO_LONGER_NEEDED tw7_char[8] MARK_CHAR_AS_NO_LONGER_NEEDED tw7_char[9] CREATE_RANDOM_CHAR 1778.4 -1343.1 14.7 tw7_bj_male SET_CHAR_HEADING tw7_bj_male 180.0 CREATE_RANDOM_CHAR 1778.4 -1344.1 14.7 tw7_bj_female SET_CHAR_HEADING tw7_bj_female 0.0 START_PLAYBACK_RECORDED_CAR tw7_ass_bandit_bike 36 tw7_control_flag = 1 ENDIF ENDIF IF tw7_control_flag = 1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR tw7_ass_bandit_bike SWITCH_ROADS_ON 1725.8 -1433.3 10.0 1838.0 -1459.4 100.0 timera = 0 tw7_car_nodes = 0 tw7_speech_flag = 0 tw7_control_flag = 0 tw7_goals = 10 ENDIF ENDIF GOSUB tw7_sorting_speed GOSUB tw7_mc_strap_group ENDIF ///////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// 37 - Through Skate Park (bike start @ 1828.8 -1342.5 13.0, 276.3) //////////////////////// IF tw7_goals = 10 /////////////////// SPEECH FOR THIS SECTION ////////////////////// IF tw7_speech_flag = 0 IF HAS_CHAR_SPOTTED_CHAR mc_strap tw7_ass_bandit OR HAS_CHAR_SPOTTED_CHAR tw7_ass_bandit mc_strap //IF IS_CHAR_RESPONDING_TO_EVENT mc_strap EVENT_ACQUAINTANCE_PED_HATE //OR IS_CHAR_RESPONDING_TO_EVENT tw7_ass_bandit EVENT_ACQUAINTANCE_PED_HATE timerb = 0 IF NOT IS_CHAR_DEAD tw7_ass_bandit tw7_speech_goals = 6 tw7_speech_control_flag = 6 tw7_random_last_label = 7 GOSUB tw7_dialogue_setup ENDIF tw7_speech_flag = 1 ENDIF IF tw7_control_flag = 1 tw7_speech_flag = 1 ENDIF ENDIF ////// car nodes jiggery pokery /////// IF tw7_car_nodes = 0 //road straight ahead SWITCH_ROADS_OFF 1838.4 -1453.6 10.0 1853.7 -1303.4 100.0 //road that you jump over SWITCH_ROADS_OFF 1979.3 -1468.7 10.0 1853.5 -1452.5 100.0 ////// SWITCHING OFF ROAD FOR NEXT PLAYBACK ///////////// SWITCH_ROADS_OFF 2334.0 -1556.1 10.0 2350.5 -1489.7 100.0 tw7_car_nodes = 1 ENDIF IF tw7_car_nodes = 1 //switching on road straight ahead IF LOCATE_CAR_2D tw7_ass_bandit_bike 1855.7 -1379.0 5.0 5.0 FALSE SWITCH_ROADS_ON 1838.4 -1453.6 10.0 1853.7 -1303.4 100.0 tw7_car_nodes = 2 ENDIF ENDIF IF tw7_car_nodes = 2 //switching on road that you jump over IF LOCATE_CAR_2D tw7_ass_bandit_bike 1971.5 -1474.6 5.0 5.0 FALSE SWITCH_ROADS_ON 1979.3 -1468.7 10.0 1853.5 -1452.5 100.0 tw7_car_nodes = 3 ENDIF ENDIF ///// main bit //////// IF tw7_control_flag = 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer tw7_ass_bandit 30.0 30.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit scplayer OR HAS_CAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit_bike scplayer OR timera > 4000 START_PLAYBACK_RECORDED_CAR tw7_ass_bandit_bike 37 tw7_control_flag = 1 ENDIF ENDIF IF tw7_control_flag = 1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR tw7_ass_bandit_bike MARK_CHAR_AS_NO_LONGER_NEEDED tw7_bj_male MARK_CHAR_AS_NO_LONGER_NEEDED tw7_bj_female SWITCH_ROADS_ON 1838.4 -1453.6 10.0 1853.7 -1303.4 100.0 SWITCH_ROADS_ON 1979.3 -1468.7 10.0 1853.5 -1452.5 100.0 timera = 0 tw7_car_nodes = 0 tw7_speech_flag = 0 tw7_control_flag = 0 tw7_goals = 11 ENDIF ENDIF GOSUB tw7_sorting_speed GOSUB tw7_mc_strap_group ENDIF ///////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// 38 - Through Taco Bell (bike start @ 2333.3 -1551.2 22.6, 344.6) ///////////////////////// IF tw7_goals = 11 /////////////////// SPEECH FOR THIS SECTION ////////////////////// IF tw7_speech_flag = 0 IF HAS_CHAR_SPOTTED_CHAR mc_strap tw7_ass_bandit OR HAS_CHAR_SPOTTED_CHAR tw7_ass_bandit mc_strap //IF IS_CHAR_RESPONDING_TO_EVENT mc_strap EVENT_ACQUAINTANCE_PED_HATE //OR IS_CHAR_RESPONDING_TO_EVENT tw7_ass_bandit EVENT_ACQUAINTANCE_PED_HATE timerb = 0 IF NOT IS_CHAR_DEAD tw7_ass_bandit tw7_speech_goals = 6 tw7_speech_control_flag = 7 tw7_random_last_label = 8 GOSUB tw7_dialogue_setup ENDIF tw7_speech_flag = 1 ENDIF IF tw7_control_flag = 1 tw7_speech_flag = 1 ENDIF ENDIF ////// car nodes jiggery pokery /////// IF tw7_car_nodes = 0 //road next to taco bell SWITCH_ROADS_OFF 2350.1 -1516.0 10.0 2423.9 -1532.5 100.0 tw7_car_nodes = 1 ENDIF IF tw7_car_nodes = 1 //switching on road next to taco bell IF LOCATE_CAR_2D tw7_ass_bandit_bike 2394.8 -1508.7 5.0 5.0 FALSE SWITCH_ROADS_ON 2350.1 -1516.0 10.0 2423.9 -1532.5 100.0 SWITCH_ROADS_ON 2334.0 -1556.1 10.0 2350.5 -1489.7 100.0 tw7_car_nodes = 2 ENDIF ENDIF ///// main bit //////// IF tw7_control_flag = 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer tw7_ass_bandit 30.0 30.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit scplayer OR HAS_CAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit_bike scplayer OR timera > 4000 START_PLAYBACK_RECORDED_CAR tw7_ass_bandit_bike 38 tw7_control_flag = 1 ENDIF ENDIF IF tw7_control_flag = 1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR tw7_ass_bandit_bike SWITCH_ROADS_ON 2350.1 -1516.0 10.0 2423.9 -1532.5 100.0 SWITCH_ROADS_ON 2334.0 -1556.1 10.0 2350.5 -1489.7 100.0 timera = 0 tw7_car_nodes = 0 tw7_speech_flag = 0 tw7_control_flag = 0 tw7_goals = 12 ENDIF ENDIF GOSUB tw7_sorting_speed GOSUB tw7_mc_strap_group ENDIF ///////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// 39 - Past Chris Police Bit (bike start @ 2424.5 -1483.3 22.6, 354.8) ///////////////////// IF tw7_goals = 12 /////////////////// SPEECH FOR THIS SECTION ////////////////////// IF tw7_speech_flag = 0 IF HAS_CHAR_SPOTTED_CHAR mc_strap tw7_ass_bandit OR HAS_CHAR_SPOTTED_CHAR tw7_ass_bandit mc_strap //IF IS_CHAR_RESPONDING_TO_EVENT mc_strap EVENT_ACQUAINTANCE_PED_HATE //OR IS_CHAR_RESPONDING_TO_EVENT tw7_ass_bandit EVENT_ACQUAINTANCE_PED_HATE timerb = 0 IF NOT IS_CHAR_DEAD tw7_ass_bandit tw7_speech_goals = 6 tw7_speech_control_flag = 8 tw7_random_last_label = 9 GOSUB tw7_dialogue_setup ENDIF tw7_speech_flag = 1 ENDIF IF tw7_control_flag = 1 tw7_speech_flag = 1 ENDIF ENDIF ////// car nodes jiggery pokery /////// IF tw7_car_nodes = 0 //all roads SWITCH_ROADS_OFF 2379.8 -1373.3 10.0 2423.7 -1452.6 100.0 tw7_car_nodes = 1 ENDIF IF tw7_car_nodes = 1 //switching on all roads IF LOCATE_CAR_2D tw7_ass_bandit_bike 2398.6 -1432.4 5.0 5.0 FALSE SWITCH_ROADS_ON 2379.8 -1373.3 10.0 2423.7 -1452.6 100.0 tw7_car_nodes = 2 ENDIF ENDIF ///// main bit //////// IF tw7_control_flag = 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer tw7_ass_bandit 30.0 30.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit scplayer OR HAS_CAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit_bike scplayer OR timera > 4000 START_PLAYBACK_RECORDED_CAR tw7_ass_bandit_bike 39 tw7_control_flag = 1 ENDIF ENDIF IF tw7_control_flag = 1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR tw7_ass_bandit_bike SWITCH_ROADS_ON 2379.8 -1373.3 10.0 2423.7 -1452.6 100.0 timera = 0 tw7_car_nodes = 0 tw7_speech_flag = 0 tw7_control_flag = 0 tw7_goals = 13 ENDIF ENDIF GOSUB tw7_sorting_speed GOSUB tw7_mc_strap_group ENDIF ///////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////// 40 - Last bit, stop at basketball courts (phew) (bike start @ 2408.7 -1260.7 22.5, 96.2) ///// IF tw7_goals = 13 GOSUB tw7_sorting_speed GOSUB tw7_mc_strap_group /////////////////// SPEECH FOR THIS SECTION ////////////////////// IF tw7_speech_flag = 0 IF HAS_CHAR_SPOTTED_CHAR mc_strap tw7_ass_bandit OR HAS_CHAR_SPOTTED_CHAR tw7_ass_bandit mc_strap //IF IS_CHAR_RESPONDING_TO_EVENT mc_strap EVENT_ACQUAINTANCE_PED_HATE //OR IS_CHAR_RESPONDING_TO_EVENT tw7_ass_bandit EVENT_ACQUAINTANCE_PED_HATE timerb = 0 IF NOT IS_CHAR_DEAD tw7_ass_bandit tw7_speech_goals = 6 tw7_speech_control_flag = 9 tw7_random_last_label = 10 GOSUB tw7_dialogue_setup ENDIF tw7_speech_flag = 1 ENDIF IF tw7_control_flag = 1 tw7_speech_flag = 1 ENDIF ENDIF ////// car nodes jiggery pokery /////// IF tw7_car_nodes = 0 //road just before the jump through the persons backyard SWITCH_ROADS_OFF 2363.5 -1291.7 10.0 2379.5 -1181.2 100.0 //road just after the jump through the persons backyard SWITCH_ROADS_OFF 2295.9 -1291.5 10.0 2311.5 -1162.3 100.0 //road just after the jump over the railway thing SWITCH_ROADS_OFF 2333.9 -1392.1 10.0 2220.2 -1377.1 100.0 //last road SWITCH_ROADS_OFF 2334.6 -1493.6 10.0 2219.8 -1475.2 100.0 tw7_car_nodes = 1 ENDIF IF tw7_car_nodes = 1 //switching on road just before the jump through the persons backyard IF LOCATE_CAR_2D tw7_ass_bandit_bike 2362.8 -1259.3 5.0 5.0 FALSE SWITCH_ROADS_ON 2363.5 -1291.7 10.0 2379.5 -1181.2 100.0 tw7_car_nodes = 2 ENDIF ENDIF IF tw7_car_nodes = 2 //switching on road just after the jump through the persons backyard IF LOCATE_CAR_2D tw7_ass_bandit_bike 2294.5 -1263.5 5.0 5.0 FALSE SWITCH_ROADS_ON 2295.9 -1291.5 10.0 2311.5 -1162.3 100.0 tw7_car_nodes = 3 ENDIF ENDIF IF tw7_car_nodes = 3 //switching on road just after the jump over the railway thing IF LOCATE_CAR_2D tw7_ass_bandit_bike 2284.2 -1393.8 5.0 5.0 FALSE SWITCH_ROADS_ON 2333.9 -1392.1 10.0 2220.2 -1377.1 100.0 tw7_car_nodes = 4 ENDIF ENDIF IF tw7_car_nodes = 4 //switching on last road IF LOCATE_CAR_2D tw7_ass_bandit_bike 2293.8 -1491.7 5.0 5.0 FALSE SWITCH_ROADS_ON 2334.6 -1493.6 10.0 2219.8 -1475.2 100.0 tw7_car_nodes = 5 ENDIF ENDIF ///// main bit //////// IF tw7_control_flag = 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer tw7_ass_bandit 30.0 30.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit scplayer OR HAS_CAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit_bike scplayer OR timera > 4000 //creating guys at the basketball court for the ass bandit to run too IF HAS_MODEL_LOADED LSV3 CREATE_CHAR PEDTYPE_MISSION2 LSV3 2301.9 -1504.1 24.3 tw7_goon[0] //hoop shooter SET_CHAR_HEADING tw7_goon[0] 358.5 GIVE_WEAPON_TO_CHAR tw7_goon[0] WEAPONTYPE_TEC9 30000 SET_CHAR_KINDA_STAY_IN_SAME_PLACE tw7_goon[0] TRUE SET_CHAR_DECISION_MAKER tw7_goon[0] tw7_empty_decision_maker ENDIF IF HAS_MODEL_LOADED LSV3 CREATE_CHAR PEDTYPE_MISSION2 LSV3 2302.5 -1502.3 24.3 tw7_goon[1] //left guy watching SET_CHAR_HEADING tw7_goon[1] 18.5 GIVE_WEAPON_TO_CHAR tw7_goon[1] WEAPONTYPE_TEC9 30000 SET_CHAR_KINDA_STAY_IN_SAME_PLACE tw7_goon[1] TRUE SET_CHAR_DECISION_MAKER tw7_goon[1] tw7_empty_decision_maker ENDIF IF HAS_MODEL_LOADED LSV3 CREATE_CHAR PEDTYPE_MISSION2 LSV3 2300.6 -1503.9 24.3 tw7_goon[2] //right guy watching SET_CHAR_HEADING tw7_goon[2] 5.9 GIVE_WEAPON_TO_CHAR tw7_goon[2] WEAPONTYPE_TEC9 30000 SET_CHAR_KINDA_STAY_IN_SAME_PLACE tw7_goon[2] TRUE SET_CHAR_DECISION_MAKER tw7_goon[2] tw7_empty_decision_maker ENDIF START_PLAYBACK_RECORDED_CAR tw7_ass_bandit_bike 40 tw7_control_flag = 1 ENDIF ENDIF IF tw7_control_flag = 1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR tw7_ass_bandit_bike SWITCH_ROADS_ON 2363.5 -1291.7 10.0 2379.5 -1181.2 100.0 SWITCH_ROADS_ON 2295.9 -1291.5 10.0 2311.5 -1162.3 100.0 SWITCH_ROADS_ON 2333.9 -1392.1 10.0 2220.2 -1377.1 100.0 SWITCH_ROADS_ON 2334.6 -1493.6 10.0 2219.8 -1475.2 100.0 OPEN_SEQUENCE_TASK tw7_seq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 2300.3 -1502.8 24.3 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 205.1 CLOSE_SEQUENCE_TASK tw7_seq PERFORM_SEQUENCE_TASK tw7_ass_bandit tw7_seq CLEAR_SEQUENCE_TASK tw7_seq tw7_reenter_state = 2 IF NOT IS_CAR_DEAD tw7_ass_bandit_bike SET_CAR_ALWAYS_CREATE_SKIDS tw7_ass_bandit_bike FALSE ENDIF tw7_control_flag = 2 ENDIF ENDIF IF tw7_control_flag = 2 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer tw7_ass_bandit 30.0 30.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit scplayer OR HAS_CAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit_bike scplayer IF IS_GROUP_MEMBER mc_strap Players_Group REMOVE_CHAR_FROM_GROUP mc_strap ENDIF IGNORE_HEIGHT_DIFFERENCE_FOLLOWING_NODES mc_strap TRUE SET_FOLLOW_NODE_THRESHOLD_DISTANCE mc_strap 50.0 OPEN_SEQUENCE_TASK tw7_seq TASK_LEAVE_ANY_CAR -1 TASK_KILL_CHAR_ON_FOOT -1 tw7_ass_bandit CLOSE_SEQUENCE_TASK tw7_seq PERFORM_SEQUENCE_TASK mc_strap tw7_seq CLEAR_SEQUENCE_TASK tw7_seq tw7_reenter_state = 2 tw7_speech_flag = 0 tw7_car_nodes = 0 tw7_control_flag = 0 tw7_goals = 14 ENDIF ENDIF ENDIF ///////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// guys at the basketball court ///////////////////////////////////////////////////////////// IF tw7_goals = 14 /////////////////// SPEECH FOR THIS SECTION ////////////////////// IF tw7_speech_flag = 0 IF HAS_CHAR_SPOTTED_CHAR mc_strap tw7_ass_bandit OR HAS_CHAR_SPOTTED_CHAR tw7_ass_bandit mc_strap //IF IS_CHAR_RESPONDING_TO_EVENT mc_strap EVENT_ACQUAINTANCE_PED_HATE //OR IS_CHAR_RESPONDING_TO_EVENT tw7_ass_bandit EVENT_ACQUAINTANCE_PED_HATE tw7_speech_goals = 7 tw7_speech_control_flag = 0 GOSUB tw7_dialogue_setup timerb = 0 tw7_speech_flag = 1 ENDIF ENDIF IF tw7_speech_flag = 1 IF tw7_speech_goals = 0 // I'm gonna kill that cheeky motherfucker! tw7_speech_goals = 17 tw7_speech_control_flag = 0 GOSUB tw7_dialogue_setup tw7_speech_flag = 2 ENDIF ENDIF IF tw7_control_flag = 0 REMOVE_BLIP tw7_control_blip ADD_BLIP_FOR_CHAR tw7_ass_bandit tw7_control_blip SET_CHAR_ONLY_DAMAGED_BY_PLAYER tw7_ass_bandit FALSE OPEN_SEQUENCE_TASK tw7_seq TASK_LEAVE_ANY_CAR -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 mc_strap TASK_KILL_CHAR_ON_FOOT -1 mc_strap CLOSE_SEQUENCE_TASK tw7_seq PERFORM_SEQUENCE_TASK tw7_ass_bandit tw7_seq CLEAR_SEQUENCE_TASK tw7_seq IF NOT IS_CHAR_DEAD tw7_goon[0] GET_SCRIPT_TASK_STATUS tw7_goon[0] TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT tw7_goon[0] scplayer ENDIF ENDIF IF NOT IS_CHAR_DEAD tw7_goon[1] GET_SCRIPT_TASK_STATUS tw7_goon[1] TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT tw7_goon[1] scplayer ENDIF ENDIF IF NOT IS_CHAR_DEAD tw7_goon[2] GET_SCRIPT_TASK_STATUS tw7_goon[2] TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT tw7_goon[2] scplayer ENDIF ENDIF tw7_control_flag = 1 ENDIF ENDIF ELSE REMOVE_BLIP tw7_control_blip IF NOT IS_CHAR_DEAD tw7_goon[0] TASK_FLEE_CHAR tw7_goon[0] scplayer 20.0 -2 ENDIF IF NOT IS_CHAR_DEAD tw7_goon[1] TASK_FLEE_CHAR tw7_goon[1] scplayer 20.0 -2 ENDIF IF NOT IS_CHAR_DEAD tw7_goon[2] TASK_FLEE_CHAR tw7_goon[2] scplayer 20.0 -2 ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 timera = 0 tw7_control_flag = 0 tw7_speech_flag = 0 tw7_goals = 15 ENDIF ELSE REMOVE_BLIP tw7_control_blip IF NOT IS_CHAR_DEAD tw7_goon[0] TASK_FLEE_CHAR tw7_goon[0] scplayer 20.0 -2 ENDIF IF NOT IS_CHAR_DEAD tw7_goon[1] TASK_FLEE_CHAR tw7_goon[1] scplayer 20.0 -2 ENDIF IF NOT IS_CHAR_DEAD tw7_goon[2] TASK_FLEE_CHAR tw7_goon[2] scplayer 20.0 -2 ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 timera = 0 tw7_control_flag = 0 tw7_speech_flag = 0 tw7_goals = 15 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////ASS BANDIT DEAD CUTSCENE /////////////////////////////////////////////////////////////////////// IF tw7_goals = 15 IF tw7_control_flag = 0 IF timera > 2000 GOSUB check_player_is_safe IF player_is_completely_safe = 1 CLEAR_PRINTS DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB tw7_death_checks IF tw7_deathcheck_flag = 1 GOTO mission_twar7_failed ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 tw7_speech_goals = 0 DELETE_CHAR tw7_goon[0] DELETE_CHAR tw7_goon[1] DELETE_CHAR tw7_goon[2] SWITCH_ROADS_BACK_TO_ORIGINAL 2563.7 -1435.0 10.0 2580.3 -1266.4 100.6 SWITCH_ROADS_BACK_TO_ORIGINAL 2635.0 -1434.4 10.0 2652.0 -1263.6 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2714.9 -1501.6 10.0 2746.1 -1266.4 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2713.9 -1499.3 10.0 2746.6 -1266.3 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2714.6 -1249.9 10.0 2744.7 -1332.9 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2634.6 -1396.6 10.0 2651.0 -1264.2 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2635.1 -1248.0 10.0 2651.0 -1055.3 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2651.5 -1263.8 10.0 2579.5 -1248.7 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2563.7 -1248.6 10.0 2578.9 -1192.2 100.6 SWITCH_ROADS_BACK_TO_ORIGINAL 2443.7 -1249.2 10.0 2459.1 -1191.9 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2363.5 -1253.4 10.0 2378.7 -1145.5 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2311.2 -1144.7 10.0 2379.1 -1162.1 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2239.9 -1130.0 10.0 2017.6 -928.3 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 1930.6 -1031.9 10.0 1574.4 -879.9 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 1879.6 -1024.3 10.0 1552.0 -1521.7 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 1725.8 -1433.3 10.0 1838.0 -1459.4 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 1838.4 -1453.6 10.0 1853.7 -1303.4 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 1979.3 -1468.7 10.0 1853.5 -1452.5 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2334.0 -1556.1 10.0 2350.5 -1489.7 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2350.1 -1516.0 10.0 2423.9 -1532.5 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2379.8 -1373.3 10.0 2423.7 -1452.6 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2363.5 -1291.7 10.0 2379.5 -1181.2 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2295.9 -1291.5 10.0 2311.5 -1162.3 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2333.9 -1392.1 10.0 2220.2 -1377.1 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2334.6 -1493.6 10.0 2219.8 -1475.2 100.0 MARK_CAR_AS_NO_LONGER_NEEDED tw7_players_bike MARK_CAR_AS_NO_LONGER_NEEDED tw7_ass_bandit_bike MARK_MODEL_AS_NO_LONGER_NEEDED LSV2 MARK_MODEL_AS_NO_LONGER_NEEDED LSV3 MARK_MODEL_AS_NO_LONGER_NEEDED PCJ600 REQUEST_ANIMATION MISC LOAD_ALL_MODELS_NOW REQUEST_COLLISION 2293.4 -1490.2 LOAD_SCENE_IN_DIRECTION 2293.4 -1490.2 22.2 90.0 CLEAR_AREA 2293.4 -1490.2 22.2 20.0 TRUE SET_PED_DENSITY_MULTIPLIER 0.0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SHUT_ALL_CHARS_UP TRUE MAKE_PLAYER_GANG_DISAPPEAR IF NOT IS_CAR_DEAD tw7_ass_bandit_bike SET_CAR_ALWAYS_CREATE_SKIDS tw7_ass_bandit_bike FALSE ENDIF //getting current player position CLEAR_CHAR_TASKS_IMMEDIATELY scplayer GET_CHAR_COORDINATES scplayer tw7_plyr_cutx tw7_plyr_cuty tw7_plyr_cutz GET_CHAR_HEADING scplayer tw7_plyr_cut_heading REMOVE_CHAR_FROM_GROUP mc_strap CLEAR_CHAR_TASKS_IMMEDIATELY mc_strap //setting player in position CLEAR_AREA 2290.4 -1490.2 22.3 1.0 TRUE SET_CHAR_COORDINATES scplayer 2290.4 -1490.2 22.3 SET_CHAR_HEADING scplayer 265.8 TASK_GO_STRAIGHT_TO_COORD scplayer 2295.6 -1490.5 21.3 PEDMOVE_WALK -1 GET_CURRENT_CHAR_WEAPON scplayer tw7_which_gun SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED //setting mc-strap in position CLEAR_CHAR_TASKS_IMMEDIATELY mc_strap CLEAR_AREA 2295.3 -1491.3 22.3 1.0 TRUE SET_CHAR_COORDINATES mc_strap 2295.3 -1491.3 22.3 SET_CHAR_HEADING mc_strap 268.4 TASK_AIM_GUN_AT_COORD mc_strap 2299.3 -1490.6 22.8 10000 SET_FIXED_CAMERA_POSITION 2299.3 -1490.6 22.8 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2255.6 -1493.3 38.3 JUMP_CUT tw7_speech_goals = 8 tw7_speech_control_flag = 0 GOSUB tw7_dialogue_setup tw7_control_flag = 1 DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB tw7_death_checks IF tw7_deathcheck_flag = 1 GOTO mission_twar7_failed ENDIF tw7_skip_cutscene_flag = 1 SKIP_CUTSCENE_START ENDIF ENDIF ENDIF IF tw7_control_flag = 1 GET_SCRIPT_TASK_STATUS scplayer TASK_GO_STRAIGHT_TO_COORD task_status IF task_status = FINISHED_TASK TASK_TURN_CHAR_TO_FACE_CHAR mc_strap scplayer OPEN_SEQUENCE_TASK tw7_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 mc_strap TASK_PLAY_ANIM -1 IDLE_CHAT_02 MISC 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK tw7_seq PERFORM_SEQUENCE_TASK scplayer tw7_seq CLEAR_SEQUENCE_TASK tw7_seq tw7_control_flag = 2 ENDIF ENDIF IF tw7_control_flag = 2 IF tw7_speech_control_flag > 2 CLEAR_CHAR_TASKS scplayer TASK_PLAY_ANIM mc_strap IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 tw7_control_flag = 3 ENDIF ENDIF IF tw7_control_flag = 3 IF tw7_speech_control_flag > 3 CLEAR_CHAR_TASKS mc_strap TASK_PLAY_ANIM scplayer IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 tw7_control_flag = 4 ENDIF ENDIF IF tw7_control_flag = 4 IF tw7_speech_control_flag > 4 CLEAR_CHAR_TASKS scplayer TASK_PLAY_ANIM mc_strap IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 tw7_control_flag = 5 ENDIF ENDIF IF tw7_control_flag = 5 IF tw7_speech_control_flag > 5 CLEAR_CHAR_TASKS mc_strap TASK_PLAY_ANIM scplayer IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 tw7_control_flag = 6 ENDIF ENDIF IF tw7_control_flag = 6 IF tw7_speech_control_flag > 6 CLEAR_CHAR_TASKS scplayer TASK_PLAY_ANIM mc_strap IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 tw7_control_flag = 7 ENDIF ENDIF IF tw7_control_flag = 7 IF tw7_speech_goals = 0 tw7_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB tw7_death_checks IF tw7_deathcheck_flag = 1 GOTO mission_twar7_failed ENDIF CLEAR_CHAR_TASKS mc_strap IF tw7_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 tw7_speech_goals = 0 ENDIF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB tw7_death_checks IF tw7_deathcheck_flag = 1 GOTO mission_twar7_failed ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer tw7_plyr_cutz -= 1.0 CLEAR_AREA tw7_plyr_cutx tw7_plyr_cuty tw7_plyr_cutz 1.0 TRUE REQUEST_COLLISION tw7_plyr_cutx tw7_plyr_cuty LOAD_ALL_MODELS_NOW SET_CHAR_COORDINATES scplayer tw7_plyr_cutx tw7_plyr_cuty tw7_plyr_cutz SET_CHAR_HEADING scplayer tw7_plyr_cut_heading SET_CURRENT_CHAR_WEAPON scplayer tw7_which_gun CLEAR_CHAR_TASKS_IMMEDIATELY mc_strap GET_CLOSEST_CHAR_NODE tw7_plyr_cutx tw7_plyr_cuty tw7_plyr_cutz tw7_tempx tw7_tempy tw7_tempz REQUEST_COLLISION tw7_tempx tw7_tempy LOAD_ALL_MODELS_NOW tw7_tempz += 2.0 GET_GROUND_Z_FOR_3D_COORD tw7_tempx tw7_tempy tw7_tempz tw7_plyr_cutz CLEAR_AREA tw7_tempx tw7_tempy tw7_plyr_cutz 1.0 TRUE SET_CHAR_COORDINATES mc_strap tw7_tempx tw7_tempy tw7_plyr_cutz MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_Group mc_strap tw7_flag_mc_strap_in_group = 1 LOAD_SCENE tw7_plyr_cutx tw7_plyr_cuty tw7_plyr_cutz REMOVE_ANIMATION MISC SET_PED_DENSITY_MULTIPLIER 1.0 REMOVE_BLIP tw7_control_blip ADD_BLIP_FOR_COORD 783.2 -1630.3 12.2 tw7_control_blip SET_BLIP_AS_FRIENDLY tw7_control_blip TRUE SWITCH_WIDESCREEN OFF SHUT_ALL_CHARS_UP FALSE MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB tw7_death_checks IF tw7_deathcheck_flag = 1 GOTO mission_twar7_failed ENDIF tw7_control_flag = 0 tw7_speech_flag = 0 tw7_goals = 16 timerb = 0 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////Driving OG Loc back to the burger shot ///////////////////////////////////////////////////////// IF tw7_goals = 16 IF tw7_speech_goals = 0 IF tw7_speech_flag = 0 tw7_speech_goals = 9 tw7_speech_control_flag = 0 GOSUB tw7_dialogue_setup tw7_speech_flag = 1 ENDIF ENDIF IF tw7_speech_goals = 0 IF tw7_speech_flag = 1 PRINT_NOW ( SMK1_13 ) 8500 1 //Take OG Loc to the Burger Shot. tw7_speech_flag = 2 DISPLAY_RADAR 3 // PATHING ON ENDIF ENDIF IF tw7_control_flag = 0 IF IS_GROUP_MEMBER mc_strap Players_Group IF LOCATE_CHAR_ANY_MEANS_3D scplayer 783.2 -1630.3 12.2 4.0 4.0 4.0 TRUE IF LOCATE_CHAR_ANY_MEANS_3D mc_strap 783.2 -1630.3 12.2 4.0 4.0 4.0 FALSE //checking if player is in a vehicle SET_PLAYER_CONTROL player1 OFF tw7_control_flag = 0 tw7_goals = 17 ENDIF ENDIF ENDIF ENDIF GOSUB tw7_mc_strap_group ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// final cutscene at the burger shot ///////////////////////////////////////////////////////////// IF tw7_goals = 17 IF tw7_control_flag = 0 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 tw7_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SHUT_ALL_CHARS_UP TRUE MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE REMOVE_CHAR_FROM_GROUP mc_strap OPEN_SEQUENCE_TASK tw7_seq TASK_PAUSE -1 1500 TASK_LEAVE_ANY_CAR -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 mc_strap CLOSE_SEQUENCE_TASK tw7_seq PERFORM_SEQUENCE_TASK scplayer tw7_seq CLEAR_SEQUENCE_TASK tw7_seq OPEN_SEQUENCE_TASK tw7_seq TASK_LEAVE_ANY_CAR -1 //TASK_PAUSE -1 2000 TASK_GO_STRAIGHT_TO_COORD -1 792.1 -1626.0 12.4 PEDMOVE_WALK -2 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK tw7_seq PERFORM_SEQUENCE_TASK mc_strap tw7_seq CLEAR_SEQUENCE_TASK tw7_seq tw7_speech_goals = 10 tw7_speech_control_flag = 0 GOSUB tw7_dialogue_setup SET_FIXED_CAMERA_POSITION 776.7145 -1637.2482 14.0840 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 777.5906 -1636.7693 14.1398 JUMP_CUT tw7_control_flag = 1 ENDIF IF tw7_control_flag = 1 IF tw7_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DELETE_CHAR mc_strap REMOVE_BLIP tw7_control_blip SHUT_ALL_CHARS_UP FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_twar7_passed ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////setting up the drive-by shooting//////////////////////////////////////////////////////////////// IF tw7_goals > 3 IF tw7_goals < 14 IF NOT IS_CHAR_DEAD tw7_ass_bandit GET_SCRIPT_TASK_STATUS tw7_ass_bandit TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK TASK_DRIVE_BY tw7_ass_bandit scplayer -1 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN FALSE 100 ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////failing mission///////////////////////////////////////////////////////////////////////////////// IF tw7_goals > 3 IF tw7_goals < 15 IF NOT IS_CHAR_DEAD tw7_ass_bandit IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer tw7_ass_bandit 250.0 250.0 FALSE IF NOT IS_CHAR_ON_SCREEN tw7_ass_bandit tw7_control_flag = 0 tw7_goals = 20 ENDIF ENDIF ENDIF ENDIF ENDIF IF tw7_goals = 20 IF tw7_control_flag = 0 IF NOT IS_CHAR_DEAD mc_strap IF NOT IS_CAR_DEAD tw7_players_bike IF IS_CHAR_IN_CAR mc_strap tw7_players_bike CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 tw7_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR //HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE PRINT_NOW ( SMK1_12 ) 4000 1 //Freddy got away! IF IS_CHAR_IN_ANY_CAR scplayer APPLY_BRAKES_TO_PLAYERS_CAR player1 ON ENDIF REMOVE_CHAR_FROM_GROUP mc_strap OPEN_SEQUENCE_TASK tw7_seq TASK_LEAVE_ANY_CAR -1 TASK_WANDER_STANDARD -1 CLOSE_SEQUENCE_TASK tw7_seq PERFORM_SEQUENCE_TASK mc_strap tw7_seq CLEAR_SEQUENCE_TASK tw7_seq timera = 0 tw7_control_flag = 1 ENDIF ENDIF ENDIF IF IS_CAR_DEAD tw7_players_bike tw7_control_flag = 2 ENDIF IF IS_CHAR_DEAD mc_strap tw7_control_flag = 2 ENDIF IF NOT IS_CHAR_IN_CAR mc_strap tw7_players_bike tw7_control_flag = 2 ENDIF ENDIF IF tw7_control_flag = 1 IF timera > 3000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DELETE_CHAR mc_strap IF IS_CHAR_IN_ANY_CAR scplayer APPLY_BRAKES_TO_PLAYERS_CAR player1 OFF ENDIF REMOVE_BLIP tw7_control_blip SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE tw7_control_flag = 2 ENDIF ENDIF IF tw7_control_flag = 2 CLEAR_PRINTS PRINT_NOW ( SMK1_12 ) 4000 1 //Freddy got away! GOTO mission_twar7_failed ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////Streaming in the car_recordings///////////////////////////////////////////////////////////////// IF tw7_goals = 3 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 30 REQUEST_CAR_RECORDING 30 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 31 REQUEST_CAR_RECORDING 31 ENDIF ENDIF IF tw7_goals = 4 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 32 REQUEST_CAR_RECORDING 32 ENDIF ENDIF IF tw7_goals = 5 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 33 REQUEST_CAR_RECORDING 33 ENDIF ENDIF IF tw7_goals = 6 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 34 REQUEST_CAR_RECORDING 34 ENDIF ENDIF IF tw7_goals = 7 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 35 REQUEST_CAR_RECORDING 35 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 50 REQUEST_CAR_RECORDING 50 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 51 REQUEST_CAR_RECORDING 51 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 52 REQUEST_CAR_RECORDING 52 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 53 REQUEST_CAR_RECORDING 53 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 54 REQUEST_CAR_RECORDING 54 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 55 REQUEST_CAR_RECORDING 55 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 56 REQUEST_CAR_RECORDING 56 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 57 REQUEST_CAR_RECORDING 57 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 58 REQUEST_CAR_RECORDING 58 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 35 REQUEST_CAR_RECORDING 60 ENDIF REQUEST_MODEL MANANA ENDIF IF tw7_goals = 8 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 36 REQUEST_CAR_RECORDING 36 ENDIF ENDIF IF tw7_goals = 9 MARK_MODEL_AS_NO_LONGER_NEEDED MANANA IF NOT HAS_CAR_RECORDING_BEEN_LOADED 37 REQUEST_CAR_RECORDING 37 ENDIF ENDIF IF tw7_goals = 10 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 38 REQUEST_CAR_RECORDING 38 ENDIF ENDIF IF tw7_goals = 11 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 39 REQUEST_CAR_RECORDING 39 ENDIF ENDIF IF tw7_goals = 12 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 40 REQUEST_CAR_RECORDING 40 ENDIF REQUEST_MODEL LSV3 ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////blips/////////////////////////////////////////////////////////////////////////////////////////// IF tw7_goals > 0 IF tw7_goals < 3 GOSUB tw7_blippage ENDIF ENDIF IF tw7_goals > 3 IF tw7_goals < 14 GOSUB tw7_blippage_part2 ENDIF ENDIF ///ingame dialogue/// GOSUB tw7_overall_dialogue GOTO twar7mainloop // Mission twar7 failed mission_twar7_failed: PRINT_BIG M_FAIL 5000 1 RETURN // mission twar7 passed mission_twar7_passed: CLEAR_PRINTS PRINT_WITH_NUMBER_BIG ( M_PASSR ) 5 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 5//amount of respect CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 REGISTER_MISSION_PASSED SMOKE_1 PLAYER_MADE_PROGRESS 1 flag_smoke_mission_counter ++ START_NEW_SCRIPT strap_mission_loop REMOVE_BLIP strap_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT strapX strapY strapZ strap_blip_icon strap_contact_blip RETURN // mission cleanup mission_cleanup_twar7: GET_RANDOM_CHAR_IN_SPHERE_ONLY_DRUGS_BUYERS 1930.61 -1401.21 12.87 145.3 tw7_dummy_exclusion //HACKED PATHFIND EXCLUSION //reset DISPLAY_RADAR 3 // PATHING ON //SET_CAMERA_BEHIND_PLAYER IF IS_STRING_EMPTY $shop_name RESTORE_CAMERA_JUMPCUT ENDIF IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF SHUT_ALL_CHARS_UP FALSE REMOVE_BLIP tw7_control_blip CLEAR_MISSION_AUDIO 3 MARK_MODEL_AS_NO_LONGER_NEEDED MANANA MARK_MODEL_AS_NO_LONGER_NEEDED PCJ600 MARK_MODEL_AS_NO_LONGER_NEEDED TEC9 MARK_MODEL_AS_NO_LONGER_NEEDED LSV2 MARK_MODEL_AS_NO_LONGER_NEEDED LSV3 MARK_MODEL_AS_NO_LONGER_NEEDED GLENDALE MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI REMOVE_ANIMATION CAR_CHAT REMOVE_ANIMATION CRIB REMOVE_ANIMATION MISC REMOVE_ANIMATION RAPPING SWITCH_ROADS_BACK_TO_ORIGINAL 2563.7 -1435.0 10.0 2580.3 -1266.4 100.6 SWITCH_ROADS_BACK_TO_ORIGINAL 2635.0 -1434.4 10.0 2652.0 -1263.6 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2714.9 -1501.6 10.0 2746.1 -1266.4 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2713.9 -1499.3 10.0 2746.6 -1266.3 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2714.6 -1249.9 10.0 2744.7 -1332.9 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2634.6 -1396.6 10.0 2651.0 -1264.2 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2635.1 -1248.0 10.0 2651.0 -1055.3 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2651.5 -1263.8 10.0 2579.5 -1248.7 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2563.7 -1248.6 10.0 2578.9 -1192.2 100.6 SWITCH_ROADS_BACK_TO_ORIGINAL 2443.7 -1249.2 10.0 2459.1 -1191.9 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2363.5 -1253.4 10.0 2378.7 -1145.5 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2311.2 -1144.7 10.0 2379.1 -1162.1 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2239.9 -1130.0 10.0 2017.6 -928.3 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 1930.6 -1031.9 10.0 1574.4 -879.9 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 1879.6 -1024.3 10.0 1552.0 -1521.7 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 1725.8 -1433.3 10.0 1838.0 -1459.4 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 1838.4 -1453.6 10.0 1853.7 -1303.4 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 1979.3 -1468.7 10.0 1853.5 -1452.5 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2334.0 -1556.1 10.0 2350.5 -1489.7 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2350.1 -1516.0 10.0 2423.9 -1532.5 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2379.8 -1373.3 10.0 2423.7 -1452.6 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2363.5 -1291.7 10.0 2379.5 -1181.2 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2295.9 -1291.5 10.0 2311.5 -1162.3 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2333.9 -1392.1 10.0 2220.2 -1377.1 100.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2334.6 -1493.6 10.0 2219.8 -1475.2 100.0 SWITCH_ENTRY_EXIT LAHS1A TRUE SWITCH_RANDOM_TRAINS ON REMOVE_CHAR_ELEGANTLY big_smoke REMOVE_CHAR_ELEGANTLY sweet REMOVE_CHAR_ELEGANTLY mc_strap UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 UNLOAD_SPECIAL_CHARACTER 3 ENABLE_AMBIENT_CRIME TRUE CLEAR_SEQUENCE_TASK tw7_group_seq GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////// GOSUBS /////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// tw7_death_checks://///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF tw7_goals < 4 IF IS_CHAR_DEAD big_smoke CLEAR_PRINTS PRINT_NOW ( SMK1_06 ) 7000 1 //Big Smoke has been killed. tw7_deathcheck_flag = 1 ENDIF IF IS_CHAR_DEAD sweet CLEAR_PRINTS PRINT_NOW ( SMK1_07 ) 7000 1 //sweet has been killed. tw7_deathcheck_flag = 1 ENDIF IF IS_CAR_DEAD tw7_smokes_car CLEAR_PRINTS PRINT_NOW ( SMK1_08 ) 7000 1 //Smoke's car has been destroyed. tw7_deathcheck_flag = 1 ENDIF ENDIF //ignoring chars not being there during animated cutscene IF tw7_goals = 1 IF tw7_control_flag = 1 IF tw7_deathcheck_flag = 1 tw7_deathcheck_flag = 0 ENDIF ENDIF ENDIF IF tw7_goals = 1 IF tw7_control_flag = 2 IF IS_CHAR_DEAD mc_strap CLEAR_PRINTS PRINT_NOW ( SMK1_05 ) 7000 1 //MC Strap has been killed! tw7_deathcheck_flag = 1 ENDIF ENDIF ENDIF IF tw7_goals > 1 IF IS_CHAR_DEAD mc_strap CLEAR_PRINTS PRINT_NOW ( SMK1_05 ) 7000 1 //MC Strap has been killed! tw7_deathcheck_flag = 1 ENDIF ENDIF IF tw7_goals > 3 IF tw7_goals < 15 IF IS_CAR_DEAD tw7_players_bike CLEAR_PRINTS PRINT_NOW ( SMK1_14 ) 7000 1 //The bike you needed was destroyed! tw7_deathcheck_flag = 1 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// tw7_blippage://///////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //sorting the blippage IF tw7_car_check_flag = 0 IF IS_CHAR_IN_CAR scplayer tw7_smokes_car CLEAR_THIS_PRINT SMK1_01 REMOVE_BLIP tw7_control_blip IF tw7_goals = 1 IF tw7_control_flag = 0 ADD_BLIP_FOR_COORD 1532.8 -1672.9 12.4 tw7_control_blip // picking up mc_strap ELSE ADD_BLIP_FOR_COORD 2454.4 -1284.5 22.7 tw7_control_blip // ass bandit house ENDIF ENDIF tw7_car_check_flag = 1 ENDIF ENDIF IF tw7_car_check_flag = 1 IF NOT IS_CHAR_IN_CAR scplayer tw7_smokes_car REMOVE_BLIP tw7_control_blip ADD_BLIP_FOR_CAR tw7_smokes_car tw7_control_blip SET_BLIP_AS_FRIENDLY tw7_control_blip TRUE tw7_car_check_flag = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// tw7_blippage_part2:///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF tw7_flag_mc_strap_in_group = 1 IF tw7_goals > 3 IF tw7_goals < 14 IF tw7_car_check_flag = 0 IF NOT IS_CAR_DEAD tw7_players_bike IF IS_CHAR_IN_CAR scplayer tw7_players_bike CLEAR_THIS_PRINT $tw7_print_label[tw7_speech_control_flag] CLEAR_THIS_PRINT SMK1_11 CLEAR_THIS_PRINT SMK1_04 PRINT_NOW ( SMK1_04 ) 7000 1 //Catch and kill the Ass Bandit! REMOVE_BLIP tw7_control_blip ADD_BLIP_FOR_CHAR tw7_ass_bandit tw7_control_blip SET_BLIP_AS_FRIENDLY tw7_control_blip FALSE tw7_car_check_flag = 1 ENDIF ENDIF ENDIF IF tw7_car_check_flag = 1 IF NOT IS_CAR_DEAD tw7_players_bike IF NOT IS_CHAR_IN_CAR scplayer tw7_players_bike CLEAR_THIS_PRINT $tw7_print_label[tw7_speech_control_flag] CLEAR_THIS_PRINT SMK1_11 CLEAR_THIS_PRINT SMK1_04 PRINT_NOW ( SMK1_11 ) 7000 1 //Get back on the bike and continue with the mission. REMOVE_BLIP tw7_control_blip ADD_BLIP_FOR_CAR tw7_players_bike tw7_control_blip SET_BLIP_AS_FRIENDLY tw7_control_blip TRUE tw7_car_check_flag = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// tw7_mc_strap_group:///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF tw7_flag_mc_strap_in_group = 1 IF NOT IS_GROUP_MEMBER mc_strap Players_Group REMOVE_BLIP tw7_control_blip ADD_BLIP_FOR_CHAR mc_strap tw7_control_blip SET_BLIP_AS_FRIENDLY tw7_control_blip TRUE tw7_flag_mc_strap_in_group = 0 ENDIF ENDIF IF tw7_flag_mc_strap_in_group = 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer mc_strap 8.0 8.0 8.0 FALSE IF NOT IS_GROUP_MEMBER mc_strap Players_Group MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_Group mc_strap ENDIF IF tw7_goals < 16 REMOVE_BLIP tw7_control_blip IF IS_CHAR_IN_CAR scplayer tw7_players_bike ADD_BLIP_FOR_CHAR tw7_ass_bandit tw7_control_blip ELSE ADD_BLIP_FOR_CAR tw7_players_bike tw7_control_blip SET_BLIP_AS_FRIENDLY tw7_control_blip TRUE ENDIF ELSE REMOVE_BLIP tw7_control_blip ADD_BLIP_FOR_COORD 783.2 -1630.3 12.2 tw7_control_blip ENDIF tw7_flag_mc_strap_in_group = 1 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// tw7_sorting_speed:////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF NOT IS_CHAR_DEAD tw7_ass_bandit IF NOT IS_CAR_DEAD tw7_ass_bandit_bike IF IS_CHAR_IN_CAR tw7_ass_bandit tw7_ass_bandit_bike //sorting out car health IF tw7_car_health_flag = 0 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit scplayer OR HAS_CAR_BEEN_DAMAGED_BY_CHAR tw7_ass_bandit_bike scplayer SET_CAR_HEALTH tw7_ass_bandit_bike 350 tw7_car_health_flag = 1 ENDIF ENDIF GET_CHAR_COORDINATES scplayer tw7_playerx tw7_playery tw7_tempx GET_CAR_COORDINATES tw7_ass_bandit_bike tw7_ass_banditx tw7_ass_bandity tw7_tempx GET_DISTANCE_BETWEEN_COORDS_2D tw7_playerx tw7_playery tw7_ass_banditx tw7_ass_bandity tw7_tempx //////////////////////////////////////////////////////////////////////////////////////////// ///// playback ranges from 0.0 - 2.0 //// ///// sqrt of tempx is from 0.0 (close) to 100.0 (far) //// ///// when tempx < 21, playback speed should be 1.0 - 2.0 (i.e. speed car up a bit) //// ///// when tempx > 20, playback speed should be 0.0 - 1.0 (i.e. slow car down a bit) //// ///// speed should never be above 2.0 or below 0.0 //// ///// formula for < 21 = 2.0 - (actual / 20.0) //// ///// formula for > 21 = 1.0 - ((actual - 20.0) / 80.0) //// //////////////////////////////////////////////////////////////////////////////////////////// IF tw7_tempx < 21.0 tw7_tempx = tw7_tempx / 20.0 tw7_tempy = tw7_tempx tw7_tempx = 2.0 - tw7_tempy ELSE tw7_tempx = tw7_tempx - 20.0 //tw7_tempx = tw7_tempx / 80.0 tw7_tempx = tw7_tempx / 90.0 tw7_tempy = tw7_tempx tw7_tempx = 1.0 - tw7_tempy ENDIF tw7_playback_speed = tw7_tempx IF tw7_playback_speed > 2.0 tw7_playback_speed = 2.0 ENDIF IF tw7_playback_speed < 0.5 tw7_playback_speed = 0.5 ENDIF /* IF tw7_playback_speed < 0.0 tw7_playback_speed = 0.0 ENDIF */ IF IS_PLAYBACK_GOING_ON_FOR_CAR tw7_ass_bandit_bike SET_PLAYBACK_SPEED tw7_ass_bandit_bike tw7_playback_speed ENDIF //setting the speed of the other cars IF tw7_goals = 8 IF tw7_car_playback_flag < 10 IF NOT IS_CAR_DEAD tw7_car[tw7_car_playback_flag] IF NOT IS_CHAR_DEAD tw7_char[tw7_car_playback_flag] IF IS_CHAR_IN_CAR tw7_char[tw7_car_playback_flag] tw7_car[tw7_car_playback_flag] IF IS_PLAYBACK_GOING_ON_FOR_CAR tw7_car[tw7_car_playback_flag] SET_PLAYBACK_SPEED tw7_car[tw7_car_playback_flag] tw7_playback_speed ENDIF ELSE IF IS_PLAYBACK_GOING_ON_FOR_CAR tw7_car[tw7_car_playback_flag] STOP_PLAYBACK_RECORDED_CAR tw7_car[tw7_car_playback_flag] ENDIF ENDIF ELSE IF IS_PLAYBACK_GOING_ON_FOR_CAR tw7_car[tw7_car_playback_flag] STOP_PLAYBACK_RECORDED_CAR tw7_car[tw7_car_playback_flag] ENDIF ENDIF ENDIF tw7_car_playback_flag ++ ELSE tw7_car_playback_flag = 0 ENDIF ENDIF /////DEBUG///////////////////////////////////////// IF NOT IS_CHAR_IN_CAR tw7_ass_bandit tw7_ass_bandit_bike WARP_CHAR_INTO_CAR tw7_ass_bandit tw7_ass_bandit_bike ENDIF /////DEBUG///////////////////////////////////////// ELSE IF NOT IS_CAR_DEAD tw7_ass_bandit_bike IF IS_PLAYBACK_GOING_ON_FOR_CAR tw7_ass_bandit_bike STOP_PLAYBACK_RECORDED_CAR tw7_ass_bandit_bike ENDIF ENDIF ENDIF ENDIF ELSE IF NOT IS_CAR_DEAD tw7_ass_bandit_bike IF IS_PLAYBACK_GOING_ON_FOR_CAR tw7_ass_bandit_bike STOP_PLAYBACK_RECORDED_CAR tw7_ass_bandit_bike ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// tw7_my_number_plates://///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// GENERATE_RANDOM_INT_IN_RANGE 1 37 tw7_no_plates_flag IF tw7_no_plates_flag = 1 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates got_m00_ ENDIF IF tw7_no_plates_flag = 2 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates m00tv_4u ENDIF IF tw7_no_plates_flag = 3 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates mathew_2 ENDIF IF tw7_no_plates_flag = 4 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates d4_dew0r ENDIF IF tw7_no_plates_flag = 5 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates d0de_777 ENDIF IF tw7_no_plates_flag = 6 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates dam0_666 ENDIF IF tw7_no_plates_flag = 7 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates C0NEY_88 ENDIF IF tw7_no_plates_flag = 8 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates pre4cher ENDIF IF tw7_no_plates_flag = 9 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates dbp_4ndy ENDIF IF tw7_no_plates_flag = 10 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates ev1l_sly ENDIF IF tw7_no_plates_flag = 11 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates n1_r4v3n ENDIF IF tw7_no_plates_flag = 12 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates d1vx_z00 ENDIF IF tw7_no_plates_flag = 13 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates mr_b3nn ENDIF IF tw7_no_plates_flag = 14 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates r3d_r4sp ENDIF IF tw7_no_plates_flag = 15 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates La_B0mba ENDIF IF tw7_no_plates_flag = 16 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates L3337_0g ENDIF IF tw7_no_plates_flag = 17 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates budd4h_X ENDIF IF tw7_no_plates_flag = 18 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates t3h_buck ENDIF IF tw7_no_plates_flag = 19 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates CHUNKY_1 ENDIF IF tw7_no_plates_flag = 20 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates ev1l_bnz ENDIF IF tw7_no_plates_flag = 21 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates S4ND_M4N ENDIF IF tw7_no_plates_flag = 22 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates RKK_DBP1 ENDIF IF tw7_no_plates_flag = 23 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates RE1_K0KU ENDIF IF tw7_no_plates_flag = 24 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates s3xy_jud ENDIF IF tw7_no_plates_flag = 25 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates sunra_93 ENDIF IF tw7_no_plates_flag = 26 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates UG_FuX69 ENDIF IF tw7_no_plates_flag = 27 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates Li0n_Cum ENDIF IF tw7_no_plates_flag = 28 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates rkk_pwnd ENDIF IF tw7_no_plates_flag = 29 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates haze_b0b ENDIF IF tw7_no_plates_flag = 30 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates t3h_fluf ENDIF IF tw7_no_plates_flag = 31 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates BM_4NDY_ ENDIF IF tw7_no_plates_flag = 32 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates BM_D34N_ ENDIF IF tw7_no_plates_flag = 33 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates BM_L4C3Y ENDIF IF tw7_no_plates_flag = 34 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates BM_D3V__ ENDIF IF tw7_no_plates_flag = 35 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates NU_SK00L ENDIF IF tw7_no_plates_flag = 36 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates G4L_AVET ENDIF IF tw7_no_plates_flag = 37 CUSTOM_PLATE_FOR_NEXT_CAR tw7_no_plates M0j0_j0j ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// tw7_overall_dialogue://///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF tw7_goals = 1 IF IS_CHAR_SITTING_IN_CAR scplayer tw7_smokes_car IF tw7_speech_goals = 1 //initial driving dialogue OR tw7_speech_goals = 2 //dialogue on the way to the ass bandits house IF tw7_speech_control_flag < tw7_last_label GOSUB tw7_loading_dialogue GOSUB tw7_playing_dialogue IF tw7_control_flag = 0 IF NOT IS_CHAR_DEAD big_smoke OR NOT IS_CHAR_DEAD sweet GOSUB tw7_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $tw7_print_label[tw7_speech_control_flag] tw7_slot1 = 0 tw7_slot2 = 0 ENDIF ENDIF IF tw7_control_flag = 1 OR tw7_control_flag = 2 IF NOT IS_CHAR_DEAD big_smoke OR NOT IS_CHAR_DEAD sweet OR NOT IS_CHAR_DEAD mc_strap GOSUB tw7_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $tw7_print_label[tw7_speech_control_flag] tw7_slot1 = 0 tw7_slot2 = 0 ENDIF ENDIF ELSE tw7_speech_goals = 0 ENDIF ENDIF ENDIF IF NOT IS_CHAR_IN_CAR scplayer tw7_smokes_car IF tw7_speech_goals < 11 IF tw7_speech_control_flag < tw7_last_label tw7_speech_control_flag ++ ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS CLEAR_THIS_PRINT $tw7_print_label[tw7_speech_control_flag] tw7_storing_speech_goals_number = tw7_speech_goals tw7_storing_speech_control_number = tw7_speech_control_flag tw7_speech_goals = 11 GENERATE_RANDOM_INT_IN_RANGE 0 5 tw7_speech_control_flag tw7_random_last_label = tw7_speech_control_flag + 1 GOSUB tw7_dialogue_setup ENDIF ENDIF IF tw7_speech_goals = 11 //carl is out of car IF NOT IS_CHAR_IN_CAR scplayer tw7_smokes_car IF tw7_speech_control_flag < tw7_last_label GOSUB tw7_loading_dialogue GOSUB tw7_playing_dialogue IF tw7_control_flag = 0 IF NOT IS_CHAR_DEAD big_smoke OR NOT IS_CHAR_DEAD sweet GOSUB tw7_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $tw7_print_label[tw7_speech_control_flag] tw7_slot1 = 0 tw7_slot2 = 0 ENDIF ENDIF IF tw7_control_flag = 1 IF NOT IS_CHAR_DEAD big_smoke OR NOT IS_CHAR_DEAD sweet OR NOT IS_CHAR_DEAD mc_strap GOSUB tw7_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $tw7_print_label[tw7_speech_control_flag] tw7_slot1 = 0 tw7_slot2 = 0 ENDIF ENDIF ELSE PRINT_NOW ( SMK1_01 ) 11000 1 //Get back in Smoke's car. tw7_speech_goals = 12 ENDIF ENDIF IF IS_CHAR_SITTING_IN_CAR scplayer tw7_smokes_car CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $tw7_print_label[tw7_speech_control_flag] tw7_speech_goals = 13 tw7_speech_control_flag = 0 CLEAR_PRINTS //GOSUB tw7_dialogue_setup ENDIF ENDIF IF tw7_speech_goals = 12 //carl has been out of car and has returned IF IS_CHAR_SITTING_IN_CAR scplayer tw7_smokes_car tw7_speech_goals = 13 tw7_speech_control_flag = 0 CLEAR_PRINTS //GOSUB tw7_dialogue_setup ENDIF ENDIF IF tw7_speech_goals = 13 //where player has returned to the car IF IS_CHAR_SITTING_IN_CAR scplayer tw7_smokes_car timerb = 0 tw7_speech_goals = tw7_storing_speech_goals_number tw7_speech_control_flag = tw7_storing_speech_control_number GOSUB tw7_dialogue_setup IF tw7_storing_speech_goals_number = 0 IF tw7_control_flag = 0 PRINT_NOW ( SMK1_02 ) 7000 1 //Go and pick up OG Loc from the Police Station. ELSE PRINT_NOW ( SMK1_10 ) 7000 1 //Drive to the Ass bandits' house. ENDIF ENDIF ENDIF IF NOT IS_CHAR_IN_CAR scplayer tw7_smokes_car CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $tw7_print_label[tw7_speech_control_flag] tw7_speech_goals = 11 GENERATE_RANDOM_INT_IN_RANGE 0 5 tw7_speech_control_flag tw7_random_last_label = tw7_speech_control_flag + 1 GOSUB tw7_dialogue_setup ENDIF ENDIF ENDIF IF tw7_speech_goals = 3 //cutscene in car about to get out and ring doorbell OR tw7_speech_goals = 4 //cutscene at the house OR tw7_speech_goals = 5 //first convo as player and mcstrap get on the bike OR tw7_speech_goals = 8 //cutscene after killing ass bandit OR tw7_speech_goals = 10 //cutscene at burger shot IF tw7_speech_control_flag < tw7_last_label GOSUB tw7_loading_dialogue GOSUB tw7_playing_dialogue GOSUB tw7_finishing_dialogue ELSE tw7_speech_goals = 0 ENDIF ENDIF IF tw7_goals > 3 IF tw7_goals < 14 OR tw7_goals = 16 IF IS_GROUP_MEMBER mc_strap Players_Group IF LOCATE_CHAR_ANY_MEANS_CHAR_3D mc_strap scplayer 10.0 10.0 8.0 FALSE IF IS_CHAR_ON_FOOT scplayer AND IS_CHAR_ON_FOOT mc_strap IF tw7_speech_goals = 9 //strap talking to player about where to go IF tw7_speech_control_flag < tw7_last_label GOSUB tw7_loading_dialogue GOSUB tw7_playing_dialogue IF NOT IS_CHAR_DEAD mc_strap GOSUB tw7_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $tw7_print_label[tw7_speech_control_flag] tw7_slot1 = 0 tw7_slot2 = 0 ENDIF ELSE tw7_speech_goals = 0 ENDIF ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer AND IS_CHAR_IN_ANY_CAR mc_strap IF tw7_speech_goals = 9 //strap talking to player about where to go IF tw7_speech_control_flag < tw7_last_label GOSUB tw7_loading_dialogue GOSUB tw7_playing_dialogue IF NOT IS_CHAR_DEAD mc_strap GOSUB tw7_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $tw7_print_label[tw7_speech_control_flag] tw7_slot1 = 0 tw7_slot2 = 0 ENDIF ELSE tw7_speech_goals = 0 ENDIF ENDIF ENDIF ENDIF /* IF tw7_speech_goals = 9 //strap talking to player about where to go IF tw7_speech_control_flag < tw7_last_label GOSUB tw7_loading_dialogue GOSUB tw7_playing_dialogue IF NOT IS_CHAR_DEAD mc_strap GOSUB tw7_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $tw7_print_label[tw7_speech_control_flag] tw7_slot1 = 0 tw7_slot2 = 0 ENDIF ELSE tw7_speech_goals = 0 ENDIF ENDIF */ ELSE IF tw7_speech_goals < 14 IF tw7_speech_control_flag < tw7_last_label tw7_speech_control_flag ++ ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $tw7_print_label[tw7_speech_control_flag] CLEAR_PRINTS tw7_storing_speech_goals_number = tw7_speech_goals tw7_storing_speech_control_number = tw7_speech_control_flag tw7_speech_goals = 14 GENERATE_RANDOM_INT_IN_RANGE 0 3 tw7_speech_control_flag tw7_random_last_label = tw7_speech_control_flag + 1 GOSUB tw7_dialogue_setup ENDIF ENDIF IF tw7_speech_goals = 14 //mc_strap is out of the group IF NOT IS_GROUP_MEMBER mc_strap Players_Group IF tw7_speech_control_flag < tw7_last_label GOSUB tw7_loading_dialogue GOSUB tw7_playing_dialogue IF NOT IS_CHAR_DEAD mc_strap GOSUB tw7_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $tw7_print_label[tw7_speech_control_flag] tw7_slot1 = 0 tw7_slot2 = 0 ENDIF ELSE PRINT_NOW ( SMK1_09 ) 7000 1 //You have left OG Loc behind. tw7_speech_goals = 15 ENDIF ELSE PRINT_NOW ( SMK1_09 ) 7000 1 //You have left OG Loc behind. tw7_speech_goals = 15 ENDIF ENDIF IF tw7_speech_goals = 15 //mc_strap has been out of the group and has returned IF IS_GROUP_MEMBER mc_strap Players_Group tw7_speech_goals = 16 tw7_speech_control_flag = 0 CLEAR_PRINTS //GOSUB tw7_dialogue_setup ENDIF ENDIF IF tw7_speech_goals = 16 //mc_strap is back in group IF IS_GROUP_MEMBER mc_strap Players_Group timerb = 0 tw7_speech_goals = tw7_storing_speech_goals_number tw7_speech_control_flag = tw7_storing_speech_control_number GOSUB tw7_dialogue_setup IF tw7_storing_speech_goals_number = 0 IF tw7_goals < 14 IF IS_CHAR_IN_CAR scplayer tw7_players_bike PRINT_NOW ( SMK1_04 ) 7000 1 //Catch and kill the Ass Bandit! ELSE PRINT_NOW ( SMK1_11 ) 7000 1 //Get back on the bike and continue with the mission. ENDIF ELSE PRINT_NOW ( SMK1_13 ) 8500 1 //Take OG Loc to the Burger Shot. ENDIF ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $tw7_print_label[tw7_speech_control_flag] tw7_speech_goals = 14 GENERATE_RANDOM_INT_IN_RANGE 0 3 tw7_speech_control_flag tw7_random_last_label = tw7_speech_control_flag + 1 GOSUB tw7_dialogue_setup ENDIF ENDIF ENDIF ENDIF IF tw7_speech_goals = 6 //freddy giving mc_strap hassle OR tw7_speech_goals = 7 //freddy giving player hassle before freddy is killed IF tw7_speech_control_flag < tw7_last_label GOSUB tw7_loading_dialogue GOSUB tw7_playing_dialogue IF NOT IS_CHAR_DEAD tw7_ass_bandit GOSUB tw7_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $tw7_print_label[tw7_speech_control_flag] tw7_slot1 = 0 tw7_slot2 = 0 ENDIF ELSE tw7_speech_goals = 0 ENDIF ENDIF IF tw7_speech_goals = 17 //I'm gonna kill that cheeky motherfucker! IF tw7_speech_control_flag < tw7_last_label GOSUB tw7_loading_dialogue GOSUB tw7_playing_dialogue IF NOT IS_CHAR_DEAD tw7_ass_bandit AND NOT IS_CHAR_DEAD mc_strap GOSUB tw7_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $tw7_print_label[tw7_speech_control_flag] tw7_slot1 = 0 tw7_slot2 = 0 ENDIF ELSE tw7_speech_goals = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// tw7_dialogue_setup:///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF tw7_speech_goals = 1 $tw7_print_label[0] = &SMO1_AA // Good to hang with you, brother. I'm sorry I can get a little tense. $tw7_print_label[1] = &SMO1_AC // Don't worry about it. $tw7_print_label[2] = &SMO1_AD // And it ain't Jeffery no more. It's OG Loc $tw7_print_label[3] = &SMO1_AE // OG Loc? $tw7_print_label[4] = &SMO1_AF // Yeah. Real gangster. $tw7_print_label[5] = &SMO1_AG // I see. And what he do? $tw7_print_label[6] = &SMO1_AH // Anything he could to get thrown in jail. For his career. $tw7_print_label[7] = &SMO1_AJ // Joyriding or parking fines or some bullshit. tw7_audio_label[0] = SOUND_SMO1_AA tw7_audio_label[1] = SOUND_SMO1_AC tw7_audio_label[2] = SOUND_SMO1_AD tw7_audio_label[3] = SOUND_SMO1_AE tw7_audio_label[4] = SOUND_SMO1_AF tw7_audio_label[5] = SOUND_SMO1_AG tw7_audio_label[6] = SOUND_SMO1_AH tw7_audio_label[7] = SOUND_SMO1_AJ tw7_last_label = 8 ENDIF IF tw7_speech_goals = 2 $tw7_print_label[0] = &SMO1_BA // What are your plans, homie, now you're a free man. $tw7_print_label[1] = &SMO1_BB // I ain't free, my parole officer lined me up with a job! $tw7_print_label[2] = &SMO1_BC // Motherfucker! Always keeping a guy down. $tw7_print_label[3] = &SMO1_BD // You got that right! $tw7_print_label[4] = &SMO1_BE // Still, ain't so bad, I'm gonna be a 'hygiene technician'. $tw7_print_label[5] = &SMO1_BF // Going up in the world. $tw7_print_label[6] = &SMO1_BG // Just a stepping-stone to greatness. tw7_audio_label[0] = SOUND_SMO1_BA tw7_audio_label[1] = SOUND_SMO1_BB tw7_audio_label[2] = SOUND_SMO1_BC tw7_audio_label[3] = SOUND_SMO1_BD tw7_audio_label[4] = SOUND_SMO1_BE tw7_audio_label[5] = SOUND_SMO1_BF tw7_audio_label[6] = SOUND_SMO1_BG tw7_last_label = 7 ENDIF IF tw7_speech_goals = 3 $tw7_print_label[0] = &SMO1_CA // This is the place $tw7_print_label[1] = &SMO1_CB // Ain't this a Vagos' 'hood? $tw7_print_label[2] = &SMO1_CC // Don't give a shit. $tw7_print_label[3] = &SMO1_CD // C'mon, let's leave Loc to deal with Casanova. $tw7_print_label[4] = &SMO1_CE // I'll stick with Jeff- Loc! $tw7_print_label[5] = &SMO1_CF // Ok. Watch yourselves. $tw7_print_label[6] = &SMO1_CG // See you back at the 'hood. tw7_audio_label[0] = SOUND_SMO1_CA tw7_audio_label[1] = SOUND_SMO1_CB tw7_audio_label[2] = SOUND_SMO1_CC tw7_audio_label[3] = SOUND_SMO1_CD tw7_audio_label[4] = SOUND_SMO1_CE tw7_audio_label[5] = SOUND_SMO1_CF tw7_audio_label[6] = SOUND_SMO1_CG tw7_last_label = 7 ENDIF IF tw7_speech_goals = 4 $tw7_print_label[0] = &SMO1_CH // Freddy! I've come for you, motherfucker! $tw7_print_label[1] = &SMO1_DB // Hey, Loc, wait a second! $tw7_print_label[2] = &SMO1_CJ // Jeffery, you got the wrong idea, man - that was just a prison thing! $tw7_print_label[3] = &SMO1_CK // I got me plenty of muchachas on the outside, $tw7_print_label[4] = &SMO1_CL // don't need your scrawny ass! $tw7_print_label[5] = &SMO1_CM // Ignore him, CJ, I don't know what he's talking about! $tw7_print_label[6] = &SMO1_CN // GIMME BACK MY RHYMES! $tw7_print_label[7] = &SMO1_CO // You dropped the soap, sugar, $tw7_print_label[8] = &SMO1_CP // I don't know nothing about any rhymes! $tw7_print_label[9] = &SMO1_DA // Motherfucker's making a break for it! //$tw7_print_label[10] = &SMO1_DC // Ah shit, he'll get caught violating his parole! tw7_audio_label[0] = SOUND_SMO1_CH tw7_audio_label[1] = SOUND_SMO1_DB tw7_audio_label[2] = SOUND_SMO1_CJ tw7_audio_label[3] = SOUND_SMO1_CK tw7_audio_label[4] = SOUND_SMO1_CL tw7_audio_label[5] = SOUND_SMO1_CM tw7_audio_label[6] = SOUND_SMO1_CN tw7_audio_label[7] = SOUND_SMO1_CO tw7_audio_label[8] = SOUND_SMO1_CP tw7_audio_label[9] = SOUND_SMO1_DA //tw7_audio_label[10] = SOUND_SMO1_DC tw7_last_label = tw7_random_last_label ENDIF IF tw7_speech_goals = 5 $tw7_print_label[0] = &SMO1_EA // Hey Loc, you gone crazy?! $tw7_print_label[1] = &SMO1_EB // Back off, CJ, I gotta protect my rep! tw7_audio_label[0] = SOUND_SMO1_EA tw7_audio_label[1] = SOUND_SMO1_EB tw7_last_label = 2 ENDIF IF tw7_speech_goals = 6 $tw7_print_label[0] = &SMO1_FA // Oooo! Chase me! Chase me! $tw7_print_label[1] = &SMO1_FB // C'mon, honey, I'm losing my patience! $tw7_print_label[2] = &SMO1_FC // I like a fast ass, not a slow ass! $tw7_print_label[3] = &SMO1_FD // I thought you were keen, cute buns! $tw7_print_label[4] = &SMO1_FE // Cath me if you caaAAAaan! $tw7_print_label[5] = &SMO1_FF // Yoohoo! Over here! $tw7_print_label[6] = &SMO1_FG // Cooweee, Jeffery! $tw7_print_label[7] = &SMO1_FH // I do love the thrill of the chase! $tw7_print_label[8] = &SMO1_FJ // Move those sweaty cheeks! $tw7_print_label[9] = &SMO1_FK // Try to show a little more enthusiasm, darling. //$tw7_print_label[10] = &SMO1_FL // Honey buns, I'm over here! ///debug - dialogue not in yet //$tw7_print_label[11] = &SMO1_FM // The anticipation is unbearable! ///debug - dialogue not in yet tw7_audio_label[0] = SOUND_SMO1_FA tw7_audio_label[1] = SOUND_SMO1_FB tw7_audio_label[2] = SOUND_SMO1_FC tw7_audio_label[3] = SOUND_SMO1_FD tw7_audio_label[4] = SOUND_SMO1_FE tw7_audio_label[5] = SOUND_SMO1_FF tw7_audio_label[6] = SOUND_SMO1_FG tw7_audio_label[7] = SOUND_SMO1_FH tw7_audio_label[8] = SOUND_SMO1_FJ tw7_audio_label[9] = SOUND_SMO1_FK //tw7_audio_label[10] = SOUND_SMO1_FL //tw7_audio_label[11] = SOUND_SMO1_FM tw7_last_label = tw7_random_last_label ENDIF IF tw7_speech_goals = 7 $tw7_print_label[0] = &SMO1_GA // He's broken my heart! $tw7_print_label[1] = &SMO1_GB // Get him, boys! tw7_audio_label[0] = SOUND_SMO1_GA tw7_audio_label[1] = SOUND_SMO1_GB tw7_last_label = 2 ENDIF IF tw7_speech_goals = 8 $tw7_print_label[0] = &SMO1_HA // Don't say a damn thing. $tw7_print_label[1] = &SMO1_HB // Was you lonely, Loc? $tw7_print_label[2] = &SMO1_HC // Hey, I like a nice moustache myself! $tw7_print_label[3] = &SMO1_HD // I kept it real, unlike you fake ass motherfucker. $tw7_print_label[4] = &SMO1_HE // C'mon let's get back to the Grove. $tw7_print_label[5] = &SMO1_HF // Nah, I gotta go and sign in for this damn job. $tw7_print_label[6] = &SMO1_HG // Whatever, you want a ride anyway? $tw7_print_label[7] = &SMO1_HH // Sure thing. Let's roll. tw7_audio_label[0] = SOUND_SMO1_HA tw7_audio_label[1] = SOUND_SMO1_HB tw7_audio_label[2] = SOUND_SMO1_HC tw7_audio_label[3] = SOUND_SMO1_HD tw7_audio_label[4] = SOUND_SMO1_HE tw7_audio_label[5] = SOUND_SMO1_HF tw7_audio_label[6] = SOUND_SMO1_HG tw7_audio_label[7] = SOUND_SMO1_HH tw7_last_label = 8 ENDIF IF tw7_speech_goals = 9 $tw7_print_label[0] = &SMO1_JA // It's the Burger Shot, Verona Beach. $tw7_print_label[1] = &SMO1_JB // You're the boss $tw7_print_label[2] = &SMO1_JC // Coz I'm keen With the hygiene, $tw7_print_label[3] = &SMO1_JD // On a mission, Like a super technician. $tw7_print_label[4] = &SMO1_JG // Get on with that shit man. $tw7_print_label[5] = &SMO1_JM // Look at you, all muscley and shit. $tw7_print_label[6] = &SMO1_JH // 17s, on the hang $tw7_print_label[7] = &SMO1_JJ // You coulda did that out here. $tw7_print_label[8] = &SMO1_JK // Because I did it in the joint, its real now. $tw7_print_label[9] = &SMO1_JL // Yeah, I guess it is, homie. tw7_audio_label[0] = SOUND_SMO1_JA tw7_audio_label[1] = SOUND_SMO1_JB tw7_audio_label[2] = SOUND_SMO1_JC tw7_audio_label[3] = SOUND_SMO1_JD tw7_audio_label[4] = SOUND_SMO1_JG tw7_audio_label[5] = SOUND_SMO1_JM tw7_audio_label[6] = SOUND_SMO1_JH tw7_audio_label[7] = SOUND_SMO1_JJ tw7_audio_label[8] = SOUND_SMO1_JK tw7_audio_label[9] = SOUND_SMO1_JL tw7_last_label = 10 ENDIF IF tw7_speech_goals = 10 $tw7_print_label[0] = &SMO1_KA // Thanks for the ride, CJ. $tw7_print_label[1] = &SMO1_KB // Don't be a stranger. $tw7_print_label[2] = &SMO1_KC // Sure thing, I'll see you around $tw7_print_label[3] = &SMO1_KD // Like a quarter pound! $tw7_print_label[4] = &SMO1_KE // Later. tw7_audio_label[0] = SOUND_SMO1_KA tw7_audio_label[1] = SOUND_SMO1_KB tw7_audio_label[2] = SOUND_SMO1_KC tw7_audio_label[3] = SOUND_SMO1_KD tw7_audio_label[4] = SOUND_SMO1_KE tw7_last_label = 5 ENDIF IF tw7_speech_goals = 11 $tw7_print_label[0] = &SMOX_AA // Get in $tw7_print_label[1] = &SMOX_AB // In the ride! $tw7_print_label[2] = &SMOX_AC // Get in the car! $tw7_print_label[3] = &SMOX_AD // Come on, dude, get in! $tw7_print_label[4] = &SMOX_AE // Come on, wise man, get in the car! $tw7_print_label[5] = &SMOX_AF // Get in the mother fucking car! tw7_audio_label[0] = SOUND_SMOX_AA tw7_audio_label[1] = SOUND_SMOX_AB tw7_audio_label[2] = SOUND_SMOX_AC tw7_audio_label[3] = SOUND_SMOX_AD tw7_audio_label[4] = SOUND_SMOX_AE tw7_audio_label[5] = SOUND_SMOX_AF tw7_last_label = tw7_random_last_label ENDIF IF tw7_speech_goals = 14 $tw7_print_label[0] = &LOCX_AA // Hold up, CJ! $tw7_print_label[1] = &LOCX_AB // Hey, wait up, dog! $tw7_print_label[2] = &LOCX_AC // Hold it, CJ! tw7_audio_label[0] = SOUND_LOCX_AA tw7_audio_label[1] = SOUND_LOCX_AB tw7_audio_label[2] = SOUND_LOCX_AC tw7_last_label = tw7_random_last_label ENDIF IF tw7_speech_goals = 17 $tw7_print_label[0] = SMO1_GC // I'm gonna kill that cheeky motherfucker! $tw7_print_label[1] = SMO1_GD // Your ass is mine! $tw7_print_label[2] = SMO1_GE // No, I didn't mean it like that! $tw7_print_label[3] = SMO1_GF // CJ, help me out here! tw7_audio_label[0] = SOUND_SMO1_GC tw7_audio_label[1] = SOUND_SMO1_GD tw7_audio_label[2] = SOUND_SMO1_GE tw7_audio_label[3] = SOUND_SMO1_GF tw7_last_label = 4 ENDIF tw7_slot_load = tw7_speech_control_flag tw7_slot1 = 0 tw7_slot2 = 0 tw7_play_which_slot = 1 //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// tw7_loading_dialogue://///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF tw7_slot_load < tw7_last_label //slot 1 IF tw7_slot1 = 0 LOAD_MISSION_AUDIO 1 tw7_audio_label[tw7_slot_load] tw7_slot_load ++ tw7_slot1 = 1 ENDIF //slot 2 IF tw7_slot2 = 0 LOAD_MISSION_AUDIO 2 tw7_audio_label[tw7_slot_load] tw7_slot_load ++ tw7_slot2 = 1 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// tw7_playing_dialogue://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //slot 1 IF tw7_play_which_slot = 1 IF tw7_slot1 = 1 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $tw7_print_label[tw7_speech_control_flag] ) 4500 1 tw7_slot1 = 2 ENDIF ENDIF ENDIF //slot 2 IF tw7_play_which_slot = 2 IF tw7_slot2 = 1 IF HAS_MISSION_AUDIO_LOADED 2 PLAY_MISSION_AUDIO 2 PRINT_NOW ( $tw7_print_label[tw7_speech_control_flag] ) 4500 1 tw7_slot2 = 2 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// tw7_finishing_dialogue:////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //slot 1 IF tw7_slot1 = 2 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_THIS_PRINT $tw7_print_label[tw7_speech_control_flag] tw7_speech_control_flag ++ tw7_play_which_slot = 2 tw7_slot1 = 0 ENDIF ENDIF //slot 2 IF tw7_slot2 = 2 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT $tw7_print_label[tw7_speech_control_flag] tw7_speech_control_flag ++ tw7_play_which_slot = 1 tw7_slot2 = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// } /* REQUEST_MODEL SENTINEL REQUEST_MODEL PCJ600 REQUEST_CAR_RECORDING 60 LOAD_ALL_MODELS_NOW WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 60 WAIT 0 ENDWHILE LOAD_SCENE 1942.5 -1016.2 31.8 CREATE_CAR PCJ600 1942.5 -1016.2 31.8 tw7_ass_bandit_bike //SET_CAR_ONLY_DAMAGED_BY_PLAYER tw7_ass_bandit_bike TRUE //SET_CAR_DRIVING_STYLE tw7_ass_bandit_bike DRIVINGMODE_AVOIDCARS SET_CAR_HEADING tw7_ass_bandit_bike 87.4 WARP_CHAR_INTO_CAR scplayer tw7_ass_bandit_bike DO_FADE 0 FADE_IN CREATE_CAR SENTINEL 1688.5 -1111.7 58.5 tw7_car[0] //front car - car rec 50 CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[0] tw7_char[0] SET_LOAD_COLLISION_FOR_CHAR_FLAG tw7_char[0] TRUE SET_CAR_HEADING tw7_car[0] 322.3 CREATE_CAR SENTINEL 1679.7 -1131.6 59.7 tw7_car[1] //second car - car rec 51 CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[1] tw7_char[1] SET_LOAD_COLLISION_FOR_CHAR_FLAG tw7_char[1] TRUE SET_CAR_HEADING tw7_car[1] 321.2 CREATE_CAR PCJ600 1644.8 -1177.5 54.3 tw7_car[2] //third car - first bike - car rec 52 CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[2] tw7_char[2] SET_LOAD_COLLISION_FOR_CHAR_FLAG tw7_char[2] TRUE SET_CAR_HEADING tw7_car[2] 320.8 CREATE_CAR SENTINEL 1637.0 -1203.8 51.5 tw7_car[3] //fourth car - car rec 53 CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[3] tw7_char[3] SET_LOAD_COLLISION_FOR_CHAR_FLAG tw7_char[3] TRUE SET_CAR_HEADING tw7_car[3] 350.3 CREATE_CAR SENTINEL 1618.2 -1306.4 35.6 tw7_car[4] //first car left on dual carriageway - car rec 54 CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[4] tw7_char[4] SET_LOAD_COLLISION_FOR_CHAR_FLAG tw7_char[4] TRUE SET_CAR_HEADING tw7_car[4] 343.7 CREATE_CAR SENTINEL 1621.8 -1317.9 33.0 tw7_car[5] //second car left on dual carriageway - car rec 55 CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[5] tw7_char[5] SET_LOAD_COLLISION_FOR_CHAR_FLAG tw7_char[5] TRUE SET_CAR_HEADING tw7_car[5] 348.7 CREATE_CAR SENTINEL 1615.6 -1327.7 31.5 tw7_car[6] //second car right on dual carriageway - car rec 56 CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[6] tw7_char[6] SET_LOAD_COLLISION_FOR_CHAR_FLAG tw7_char[6] TRUE SET_CAR_HEADING tw7_car[6] 352.1 CREATE_CAR SENTINEL 1612.3 -1394.0 27.6 tw7_car[7] //third car right on dual carriageway - car rec 57 CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[7] tw7_char[7] SET_LOAD_COLLISION_FOR_CHAR_FLAG tw7_char[7] TRUE SET_CAR_HEADING tw7_car[7] 353.6 CREATE_CAR SENTINEL 1612.3 -1462.2 27.1 tw7_car[8] //fourth car right on dual carriageway - car rec 58 CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[8] tw7_char[8] SET_LOAD_COLLISION_FOR_CHAR_FLAG tw7_char[8] TRUE SET_CAR_HEADING tw7_car[8] 357.2 CREATE_CAR SENTINEL 1663.4 -1457.0 24.3 tw7_car[9] //car that crashes into tanker - car rec 60 CREATE_RANDOM_CHAR_AS_DRIVER tw7_car[9] tw7_char[9] SET_LOAD_COLLISION_FOR_CHAR_FLAG tw7_char[9] TRUE SET_CAR_HEADING tw7_car[9] 51.9 blergh: WAIT 0 IF tw7_control_flag = 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_CTRL WHILE IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_CTRL WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD tw7_char[0] IF NOT IS_CAR_DEAD tw7_car[0] SET_CAR_STAY_IN_SLOW_LANE tw7_car[0] TRUE TASK_CAR_DRIVE_TO_COORD tw7_char[0] tw7_car[0] 1852.2 -1028.5 34.8 15.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS START_RECORDING_CAR tw7_car[0] 50 ENDIF ENDIF IF NOT IS_CHAR_DEAD tw7_char[1] IF NOT IS_CAR_DEAD tw7_car[1] TASK_CAR_DRIVE_TO_COORD tw7_char[1] tw7_car[1] 1852.3 -1022.9 34.7 15.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS SET_CAR_STAY_IN_SLOW_LANE tw7_car[1] TRUE START_RECORDING_CAR tw7_car[1] 51 ENDIF ENDIF IF NOT IS_CHAR_DEAD tw7_char[2] IF NOT IS_CAR_DEAD tw7_car[2] TASK_CAR_DRIVE_TO_COORD tw7_char[2] tw7_car[2] 1833.8 -1031.3 35.3 15.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS START_RECORDING_CAR tw7_car[2] 52 ENDIF ENDIF IF NOT IS_CHAR_DEAD tw7_char[3] IF NOT IS_CAR_DEAD tw7_car[3] TASK_CAR_DRIVE_TO_COORD tw7_char[3] tw7_car[3] 1837.4 -1025.9 35.0 15.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS START_RECORDING_CAR tw7_car[3] 53 ENDIF ENDIF IF NOT IS_CHAR_DEAD tw7_char[4] IF NOT IS_CAR_DEAD tw7_car[4] SET_CAR_FORWARD_SPEED tw7_car[4] 15.0 TASK_CAR_DRIVE_TO_COORD tw7_char[4] tw7_car[4] 1826.7 -1032.7 35.7 15.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS START_RECORDING_CAR tw7_car[4] 54 ENDIF ENDIF IF NOT IS_CHAR_DEAD tw7_char[5] IF NOT IS_CAR_DEAD tw7_car[5] //SET_CAR_FORWARD_SPEED tw7_car[5] 15.0 TASK_CAR_DRIVE_TO_COORD tw7_char[5] tw7_car[5] 1642.1 -1131.3 57.3 15.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS START_RECORDING_CAR tw7_car[5] 55 ENDIF ENDIF IF NOT IS_CHAR_DEAD tw7_char[6] IF NOT IS_CAR_DEAD tw7_car[6] //SET_CAR_FORWARD_SPEED tw7_car[6] 15.0 TASK_CAR_DRIVE_TO_COORD tw7_char[6] tw7_car[6] 1806.4 -1025.9 35.0 15.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS START_RECORDING_CAR tw7_car[6] 56 ENDIF ENDIF IF NOT IS_CHAR_DEAD tw7_char[7] IF NOT IS_CAR_DEAD tw7_car[7] TASK_CAR_DRIVE_TO_COORD tw7_char[7] tw7_car[7] 1642.2 -1160.7 54.9 15.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS START_RECORDING_CAR tw7_car[7] 57 ENDIF ENDIF IF NOT IS_CHAR_DEAD tw7_char[8] IF NOT IS_CAR_DEAD tw7_car[8] TASK_CAR_DRIVE_TO_COORD tw7_char[8] tw7_car[8] 1647.2 -1160.7 54.9 15.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS START_RECORDING_CAR tw7_car[8] 58 ENDIF ENDIF IF NOT IS_CAR_DEAD tw7_car[9] START_PLAYBACK_RECORDED_CAR tw7_car[9] 60 ENDIF tw7_control_flag = 1 ENDIF ENDIF IF tw7_control_flag = 1 IF NOT IS_CAR_DEAD tw7_car[0] IF IS_RECORDING_GOING_ON_FOR_CAR tw7_car[0] IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_CTRL WHILE IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_CTRL WAIT 0 ENDWHILE tw7_control_flag = 2 ENDIF ENDIF ENDIF ENDIF GOTO blergh */ MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************** SMOKE 2 ****************************************** // ********************************* Mission Description *********************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME smoke2 // Mission start stuff GOSUB mission_start_smoke2 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_smoke2_failed ENDIF GOSUB mission_cleanup_smoke2 MISSION_END { // Variables for mission LVAR_INT s2_player_car s2_smoke LVAR_FLOAT s2_player_car_x s2_player_car_y s2_player_car_z s2_player_car_heading VAR_FLOAT s2_meet_x s2_meet_y s2_meet_z LVAR_INT s2_weapon_pickup LVAR_INT s2_escaping_guy s2_getaway_car s2_getaway_car_driver LVAR_INT s2_escape_guards[2] LVAR_INT s2_num_of_points_on_route LVAR_FLOAT s2_route_x[22] s2_route_y[22] s2_route_z[22] LVAR_INT s2_index LVAR_INT s2_whole_route_seq s2_route_seq1 s2_route_seq2 s2_route_seq3 s2_route_seq4 LVAR_INT s2_route_seq_progress1 s2_route_seq_progress2 //LVAR_INT s2_cur_attack_point_reached LVAR_INT s2_smoke_tired_seq LVAR_INT s2_task_status LVAR_INT s2_escaping_guy_decisions LVAR_INT s2_smoke_decisions LVAR_INT s2_current_driver LVAR_FLOAT s2_getaway_dest_x s2_getaway_dest_y s2_getaway_dest_z LVAR_INT s2_get_in_audio_stage // mission audio LVAR_TEXT_LABEL s2_audio_text[9] LVAR_INT s2_audio_sound[9] LVAR_INT s2_audio_is_playing s2_audio_index s2_total_audio_to_play s2_started_talking LVAR_INT s2_current_audio_needed CONST_INT S2_TIRED_AUDIO 0 CONST_INT S2_CHASE_AUDIO 1 CONST_INT S2_CAR_AUDIO 2 // flags LVAR_INT s2_player_entered_first_car s2_player_in_first_car LVAR_INT s2_car_audio_started s2_car_audio_finished LVAR_INT s2_player_and_smoke_arrived LVAR_INT s2_weapon_pickup_collected LVAR_INT s2_help_text_printed[3] s2_help_text_cleared LVAR_INT s2_smoke_started_to_play_chase_dialogue s2_smoke_played_chase_dialogue LVAR_INT s2_player_reached_escape_guards LVAR_INT s2_escaping_guy_reached_first_driveway //LVAR_INT s2_escaping_guy_attacking LVAR_INT s2_escaping_guy_finished_route s2_escaping_guy_fleeing LVAR_INT s2_escaping_guy_entered_car s2_escaping_guy_going_to_destination LVAR_INT s2_getaway_driver_attacking_player LVAR_INT s2_cutscene_skipped LVAR_INT s2_fake_creates // blips LVAR_INT s2_player_car_blip s2_meet_blip s2_escaping_guy_blip LVAR_INT s2_weapon_pickup_blip // **************************************** Mission Start ********************************** mission_start_smoke2: REGISTER_MISSION_GIVEN DISPLAY_RADAR 5 // PATHING IGNORE SWITCHED OFF LOAD_MISSION_TEXT SMOKE2 flag_player_on_mission = 1 WAIT 0 // ************************************ Initialise variables ***************************** s2_player_car_x = 2068.42 s2_player_car_y = -1694.87 s2_player_car_z = 13.3 s2_player_car_heading = 270.0 s2_meet_x = 2514.34 s2_meet_y = -1411.93 s2_meet_z = 27.41 s2_player_entered_first_car = 0 s2_player_in_first_car = 0 s2_car_audio_started = 0 s2_car_audio_finished = 0 s2_player_and_smoke_arrived = 0 s2_weapon_pickup_collected = 0 s2_help_text_printed[0] = 0 s2_help_text_printed[1] = 0 s2_help_text_printed[2] = 0 s2_help_text_cleared = 0 s2_smoke_started_to_play_chase_dialogue = 0 s2_smoke_played_chase_dialogue = 0 s2_player_reached_escape_guards = 0 s2_escaping_guy_reached_first_driveway = 0 //s2_cur_attack_point_reached = 0 //s2_escaping_guy_attacking = 0 s2_num_of_points_on_route = 22 // bottom of stairs s2_route_x[0] = 2459.80 s2_route_y[0] = -1402.19 s2_route_z[0] = 24.06 // across road at start of alleyway s2_route_x[1] = 2442.07 s2_route_y[1] = -1370.23 s2_route_z[1] = 24.06 // at end of alleyway s2_route_x[2] = 2414.49 s2_route_y[2] = -1369.36 s2_route_z[2] = 24.76 // across alleyway at start of fence s2_route_x[3] = 2410.19 s2_route_y[3] = -1364.03 s2_route_z[3] = 24.75 s2_route_x[4] = 2399.68 s2_route_y[4] = -1358.24 s2_route_z[4] = 24.93 s2_route_x[5] = 2381.88 s2_route_y[5] = -1354.88 s2_route_z[5] = 24.08 // second alleyway s2_route_x[6] = 2343.29 s2_route_y[6] = -1351.41 s2_route_z[6] = 24.06 // end of second alleyway s2_route_x[7] = 2336.29 s2_route_y[7] = -1310.99 s2_route_z[7] = 24.29 // first fence at last row of houses s2_route_x[8] = 2257.07 s2_route_y[8] = -1291.85 s2_route_z[8] = 24.01 s2_route_x[9] = 2241.61 s2_route_y[9] = -1281.61 s2_route_z[9] = 24.42 // first alleyway fence s2_route_x[10] = 2241.61 s2_route_y[10] = -1264.68 s2_route_z[10] = 24.37 s2_route_x[11] = 2239.48 s2_route_y[11] = -1260.91 s2_route_z[11] = 23.98 s2_route_x[12] = 2241.18 s2_route_y[12] = -1257.88 s2_route_z[12] = 23.99 s2_route_x[13] = 2241.18 s2_route_y[13] = -1254.46 s2_route_z[13] = 24.46 s2_route_x[14] = 2241.18 s2_route_y[14] = -1238.30 s2_route_z[14] = 25.21 s2_route_x[15] = 2221.54 s2_route_y[15] = -1235.75 s2_route_z[15] = 24.62 s2_route_x[16] = 2202.27 s2_route_y[16] = -1236.72 s2_route_z[16] = 24.00 s2_route_x[17] = 2202.21 s2_route_y[17] = -1257.05 s2_route_z[17] = 23.91 //// last fence //s2_route_x[18] = 2198.75 //s2_route_y[18] = -1262.54 //s2_route_z[18] = 23.92 //s2_route_x[19] = 2197.24 //s2_route_y[19] = -1276.44 //s2_route_z[19] = 24.58 // //s2_route_x[20] = 2192.78 //s2_route_y[20] = -1282.57 //s2_route_z[20] = 24.57 // last fence s2_route_x[18] = 2199.57 s2_route_y[18] = -1263.15 s2_route_z[18] = 23.92 s2_route_x[19] = 2199.08 s2_route_y[19] = -1279.44 s2_route_z[19] = 24.57 s2_route_x[20] = 2182.07 s2_route_y[20] = -1280.2 s2_route_z[20] = 24.68 s2_route_x[21] = 2175.18 s2_route_y[21] = -1282.82 s2_route_z[21] = 24.02 s2_getaway_dest_x = 2117.86 s2_getaway_dest_y = -1071.42 s2_getaway_dest_z = 24.64 s2_get_in_audio_stage = 0 s2_escaping_guy_finished_route = 0 s2_escaping_guy_fleeing = 0 s2_escaping_guy_entered_car = 0 s2_escaping_guy_going_to_destination = 0 s2_getaway_driver_attacking_player = 0 s2_audio_is_playing = 0 s2_audio_index = 0 s2_started_talking = 0 s2_fake_creates = 0 // ****************************************START OF CUTSCENE******************************* SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_AREA 2069.90 -1702.73 12.59 100.0 FALSE REQUEST_MODEL Lae_smokecutscene WHILE NOT HAS_MODEL_LOADED Lae_smokecutscene WAIT 0 ENDWHILE LVAR_INT s2_cutscene_object CREATE_OBJECT_NO_OFFSET Lae_smokecutscene 2055.0 -1695.0 15.0 s2_cutscene_object LOAD_CUTSCENE SMOKE2A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF MARK_MODEL_AS_NO_LONGER_NEEDED Lae_smokecutscene DELETE_OBJECT s2_cutscene_object // ****************************************END OF CUTSCENE********************************* LOAD_SPECIAL_CHARACTER 1 smoke REQUEST_MODEL GLENDALE REQUEST_MODEL COLT45 LOAD_ALL_MODELS_NOW WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_MODEL_LOADED GLENDALE OR NOT HAS_MODEL_LOADED COLT45 WAIT 0 ENDWHILE GOSUB s2_create_player_car_and_smoke LOAD_SCENE 2069.90 -1702.73 12.59 CLEAR_AREA 2069.90 -1702.73 12.59 100.0 FALSE // clear area around first corona driven to CLEAR_AREA s2_meet_x s2_meet_y s2_meet_z 100.0 FALSE // switch roads off around first corona driven to // so there aren't any cars in the way SWITCH_ROADS_OFF 2488.0 -1431.93 25.41 2528.0 -1391.93 29.41 // switch node off at driveway near first fence at last row of houses SWITCH_ROADS_OFF 2252.89 -1286.37 22.25 2258.89 -1280.37 28.25 SET_RADIO_CHANNEL RS_DISCO_FUNK_SOUL //SET_CHAR_COORDINATES scplayer 2069.90 -1702.73 12.59 SET_CHAR_COORDINATES scplayer 2070.87 -1703.01 12.55 SET_CHAR_HEADING scplayer 0.0 // fades the screen in SET_FADING_COLOUR 0 0 0 WAIT 500 DO_FADE 1500 FADE_IN //WAIT 1500 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON // CREATE statements to keep the compiler happy IF s2_fake_creates = 1 CREATE_CAR GLENDALE 0.0 0.0 -100.0 s2_player_car ADD_BLIP_FOR_CAR s2_player_car s2_player_car_blip CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 0.0 0.0 -100.0 s2_smoke CREATE_CHAR PEDTYPE_MISSION2 LSV1 0.0 0.0 -100.0 s2_escaping_guy CREATE_CAR SENTINEL 0.0 0.0 -100.0 s2_getaway_car CREATE_CHAR_INSIDE_CAR s2_getaway_car PEDTYPE_MISSION2 LSV2 s2_getaway_car_driver CREATE_CHAR PEDTYPE_MISSION2 LSV2 0.0 0.0 -100.0 s2_escape_guards[0] CREATE_CHAR PEDTYPE_MISSION2 LSV3 0.0 0.0 -100.0 s2_escape_guards[1] ENDIF SWITCH_PED_ROADS_OFF 2458.50 -1410.63 24.06 2504.27 -1395.83 28.55 OPEN_SEQUENCE_TASK s2_route_seq1 TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[0] s2_route_y[0] s2_route_z[0] PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[1] s2_route_y[1] s2_route_z[1] PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[2] s2_route_y[2] s2_route_z[2] PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[3] s2_route_y[3] s2_route_z[3] PEDMOVE_RUN -1 TASK_CLIMB -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[4] s2_route_y[4] s2_route_z[4] PEDMOVE_RUN -1 TASK_CLIMB -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[5] s2_route_y[5] s2_route_z[5] PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK s2_route_seq1 OPEN_SEQUENCE_TASK s2_route_seq2 TASK_CLIMB -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[6] s2_route_y[6] s2_route_z[6] PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[7] s2_route_y[7] s2_route_z[7] PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[8] s2_route_y[8] s2_route_z[8] PEDMOVE_SPRINT -1 TASK_GO_STRAIGHT_TO_COORD -1 2254.09 -1283.83 25.18 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[9] s2_route_y[9] s2_route_z[9] PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[10] s2_route_y[10] s2_route_z[10] PEDMOVE_RUN -1 TASK_CLIMB -1 TRUE CLOSE_SEQUENCE_TASK s2_route_seq2 OPEN_SEQUENCE_TASK s2_route_seq3 TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[11] s2_route_y[11] s2_route_z[11] PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[12] s2_route_y[12] s2_route_z[12] PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[13] s2_route_y[13] s2_route_z[13] PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[14] s2_route_y[14] s2_route_z[14] PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 90.0 TASK_CLIMB -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[15] s2_route_y[15] s2_route_z[15] PEDMOVE_RUN -1 TASK_CLIMB -1 TRUE CLOSE_SEQUENCE_TASK s2_route_seq3 OPEN_SEQUENCE_TASK s2_route_seq4 TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[16] s2_route_y[16] s2_route_z[16] PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[17] s2_route_y[17] s2_route_z[17] PEDMOVE_RUN -1 TASK_CLIMB -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[18] s2_route_y[18] s2_route_z[18] PEDMOVE_RUN -1 TASK_CLIMB -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[19] s2_route_y[19] s2_route_z[19] PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[20] s2_route_y[20] s2_route_z[20] PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[21] s2_route_y[21] s2_route_z[21] PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK s2_route_seq4 //OPEN_SEQUENCE_TASK s2_route_seq1 // TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[0] s2_route_y[0] s2_route_z[0] PEDMOVE_RUN -1 // TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[1] s2_route_y[1] s2_route_z[1] PEDMOVE_RUN -1 // TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[2] s2_route_y[2] s2_route_z[2] PEDMOVE_RUN -1 // TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[3] s2_route_y[3] s2_route_z[3] PEDMOVE_RUN -1 // TASK_CLIMB -1 TRUE // TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[4] s2_route_y[4] s2_route_z[4] PEDMOVE_RUN -1 // TASK_CLIMB -1 TRUE // TASK_GO_TO_COORD_WHILE_SHOOTING -1 s2_route_x[5] s2_route_y[5] s2_route_z[5] PEDMOVE_RUN 5.0 1.0 scplayer //CLOSE_SEQUENCE_TASK s2_route_seq1 // //OPEN_SEQUENCE_TASK s2_route_seq2 // TASK_CLIMB -1 TRUE // TASK_GO_TO_COORD_WHILE_SHOOTING -1 s2_route_x[6] s2_route_y[6] s2_route_z[6] PEDMOVE_RUN 5.0 1.0 scplayer // TASK_GO_TO_COORD_WHILE_SHOOTING -1 s2_route_x[7] s2_route_y[7] s2_route_z[7] PEDMOVE_RUN 5.0 1.0 scplayer // TASK_GO_TO_COORD_WHILE_SHOOTING -1 s2_route_x[8] s2_route_y[8] s2_route_z[8] PEDMOVE_SPRINT 5.0 1.0 scplayer // TASK_CLIMB -1 TRUE // TASK_CLIMB -1 TRUE // TASK_GO_TO_COORD_WHILE_SHOOTING -1 s2_route_x[9] s2_route_y[9] s2_route_z[9] PEDMOVE_RUN 5.0 1.0 scplayer // TASK_GO_TO_COORD_WHILE_SHOOTING -1 s2_route_x[10] s2_route_y[10] s2_route_z[10] PEDMOVE_RUN 5.0 1.0 scplayer //CLOSE_SEQUENCE_TASK s2_route_seq2 // //OPEN_SEQUENCE_TASK s2_route_seq3 // TASK_CLIMB -1 TRUE // TASK_GO_TO_COORD_WHILE_SHOOTING -1 s2_route_x[11] s2_route_y[11] s2_route_z[11] PEDMOVE_RUN 5.0 1.0 scplayer // TASK_GO_TO_COORD_WHILE_SHOOTING -1 s2_route_x[12] s2_route_y[12] s2_route_z[12] PEDMOVE_RUN 5.0 1.0 scplayer // TASK_GO_TO_COORD_WHILE_SHOOTING -1 s2_route_x[14] s2_route_y[14] s2_route_z[14] PEDMOVE_RUN 5.0 1.0 scplayer // TASK_ACHIEVE_HEADING -1 90.0 // TASK_CLIMB -1 TRUE // TASK_GO_TO_COORD_WHILE_SHOOTING -1 s2_route_x[15] s2_route_y[15] s2_route_z[15] PEDMOVE_RUN 5.0 1.0 scplayer // TASK_CLIMB -1 TRUE //CLOSE_SEQUENCE_TASK s2_route_seq3 // //OPEN_SEQUENCE_TASK s2_route_seq4 // TASK_GO_TO_COORD_WHILE_SHOOTING -1 s2_route_x[16] s2_route_y[16] s2_route_z[16] PEDMOVE_RUN 5.0 1.0 scplayer // TASK_GO_TO_COORD_WHILE_SHOOTING -1 s2_route_x[17] s2_route_y[17] s2_route_z[17] PEDMOVE_RUN 5.0 1.0 scplayer // TASK_CLIMB -1 TRUE // TASK_GO_TO_COORD_WHILE_SHOOTING -1 s2_route_x[18] s2_route_y[18] s2_route_z[18] PEDMOVE_RUN 5.0 1.0 scplayer // TASK_CLIMB -1 TRUE // TASK_GO_TO_COORD_WHILE_SHOOTING -1 s2_route_x[19] s2_route_y[19] s2_route_z[19] PEDMOVE_RUN 5.0 1.0 scplayer // TASK_GO_TO_COORD_WHILE_SHOOTING -1 s2_route_x[20] s2_route_y[20] s2_route_z[20] PEDMOVE_RUN 5.0 1.0 scplayer // TASK_GO_TO_COORD_WHILE_SHOOTING -1 s2_route_x[21] s2_route_y[21] s2_route_z[21] PEDMOVE_RUN 5.0 1.0 scplayer //CLOSE_SEQUENCE_TASK s2_route_seq4 OPEN_SEQUENCE_TASK s2_whole_route_seq PERFORM_SEQUENCE_TASK -1 s2_route_seq1 PERFORM_SEQUENCE_TASK -1 s2_route_seq2 PERFORM_SEQUENCE_TASK -1 s2_route_seq3 PERFORM_SEQUENCE_TASK -1 s2_route_seq4 CLOSE_SEQUENCE_TASK s2_whole_route_seq PRINT_NOW ( SMK2_1 ) 10000 0 // Mission loop smoke2_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_smoke2_passed ENDIF // // temp // IF IS_BUTTON_PRESSED PAD1 LEFTSHOCK // GOSUB s2_play_mission_failed_cutscene // ENDIF IF NOT s2_player_entered_first_car = 1 AND NOT IS_CHAR_DEAD s2_smoke AND NOT IS_CAR_DEAD s2_player_car IF IS_CHAR_IN_CAR scplayer s2_player_car REMOVE_BLIP s2_player_car_blip ADD_BLIP_FOR_COORD s2_meet_x s2_meet_y s2_meet_z s2_meet_blip s2_player_entered_first_car = 1 s2_player_in_first_car = 1 PRINT_NOW ( SMK2_2 ) 11000 0 CREATE_PICKUP_WITH_AMMO COLT45 PICKUP_ONCE 100 2444.8950 -1981.5243 13.933 s2_weapon_pickup ADD_SPRITE_BLIP_FOR_CONTACT_POINT 2444.8950 -1981.5243 13.933 RADAR_SPRITE_EMMETGUN s2_weapon_pickup_blip TIMERA = 0 ENDIF ENDIF IF s2_player_entered_first_car = 1 AND NOT s2_player_and_smoke_arrived = 1 AND NOT IS_CHAR_DEAD s2_smoke AND NOT IS_CAR_DEAD s2_player_car IF NOT s2_weapon_pickup_collected = 1 IF HAS_PICKUP_BEEN_COLLECTED s2_weapon_pickup REMOVE_BLIP s2_weapon_pickup_blip s2_weapon_pickup_collected = 1 ENDIF ENDIF IF s2_player_in_first_car = 1 AND NOT IS_CHAR_IN_CAR scplayer s2_player_car REMOVE_BLIP s2_meet_blip ADD_BLIP_FOR_CAR s2_player_car s2_player_car_blip SET_BLIP_AS_FRIENDLY s2_player_car_blip TRUE GOSUB s2_play_smoke_get_in_audio // check mission failed conditions IF IS_CHAR_DEAD s2_smoke CLEAR_MISSION_AUDIO 2 PRINT_NOW ( SMK2_7 ) 4000 0 GOTO mission_smoke2_failed ENDIF IF IS_CAR_DEAD s2_player_car PRINT_NOW ( SMK2_12 ) 5000 0 GOTO mission_smoke2_failed ENDIF IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer 2444.8950 -1981.5243 20.0 20.0 FALSE OR s2_weapon_pickup_collected = 1 PRINT_NOW ( SMK2_3 ) 5000 0 ELSE PRINT_NOW ( SMK2_16 ) 5000 0 ENDIF s2_player_in_first_car = 0 ENDIF IF s2_player_in_first_car = 0 AND IS_CHAR_IN_CAR scplayer s2_player_car REMOVE_BLIP s2_player_car_blip ADD_BLIP_FOR_COORD s2_meet_x s2_meet_y s2_meet_z s2_meet_blip IF s2_car_audio_finished = 1 PRINT_NOW ( SMK2_15 ) 5000 0 ENDIF s2_player_in_first_car = 1 ENDIF IF s2_player_in_first_car = 1 IF NOT s2_car_audio_started = 1 AND TIMERA > 10000 s2_current_audio_needed = S2_CAR_AUDIO GOSUB s2_setup_audio_data IF NOT IS_CHAR_DEAD s2_smoke SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH s2_smoke TRUE ENDIF s2_car_audio_started = 1 ENDIF IF s2_car_audio_started = 1 AND NOT s2_car_audio_finished = 1 IF s2_audio_index < s2_total_audio_to_play GOSUB s2_load_and_play_audio ELSE IF NOT IS_CHAR_DEAD s2_smoke SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH s2_smoke FALSE ENDIF s2_car_audio_finished = 1 ENDIF ENDIF ENDIF IF s2_player_in_first_car = 1 IF LOCATE_CHAR_IN_CAR_3D scplayer s2_meet_x s2_meet_y s2_meet_z 4.0 4.0 2.0 TRUE SET_PLAYER_CONTROL player1 OFF s2_player_and_smoke_arrived = 1 REMOVE_BLIP s2_meet_blip REMOVE_BLIP s2_weapon_pickup_blip SWITCH_ROADS_BACK_TO_ORIGINAL 2488.0 -1431.93 25.41 2528.0 -1391.93 29.41 IF NOT IS_CHAR_DEAD s2_smoke SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH s2_smoke FALSE ENDIF GOSUB s2_play_meet_cutscene // switch nodes off around getaway car SWITCH_ROADS_OFF 2164.51 -1287.88 20.0 2170.88 -1267.88 30.0 PRINT_NOW ( SMK2_17 ) 10000 0 TIMERA = 0 CHECKPOINT_SAVE 99 ENDIF ENDIF ENDIF IF s2_player_and_smoke_arrived = 1 IF NOT s2_help_text_printed[0] = 1 AND TIMERA > 10000 PRINT_HELP_FOREVER SMK2_H1 // Press and hold ~m~~widget_sprint~ to sprint. s2_help_text_printed[0] = 1 TIMERA = 0 ENDIF IF s2_help_text_printed[0] = 1 AND NOT s2_help_text_printed[1] = 1 AND TIMERA > 10000 PRINT_HELP_FOREVER SMK2_H2 s2_help_text_printed[1] = 1 TIMERA = 0 ENDIF IF s2_help_text_printed[1] = 1 AND NOT s2_help_text_printed[2] = 1 AND TIMERA > 10000 PRINT_HELP_FOREVER SPRSTAM s2_help_text_printed[2] = 1 TIMERA = 0 ENDIF IF s2_help_text_printed[2] = 1 AND NOT s2_help_text_cleared = 1 AND TIMERA > 10000 CLEAR_HELP s2_help_text_cleared = 1 ENDIF IF NOT s2_smoke_played_chase_dialogue = 1 IF NOT IS_CHAR_DEAD s2_smoke IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer s2_smoke 5.0 5.0 FALSE AND NOT s2_smoke_started_to_play_chase_dialogue = 1 s2_current_audio_needed = S2_CHASE_AUDIO GOSUB s2_setup_audio_data IF NOT IS_CHAR_DEAD s2_smoke SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH s2_smoke TRUE ENDIF s2_smoke_started_to_play_chase_dialogue = 1 ENDIF ENDIF IF s2_smoke_started_to_play_chase_dialogue = 1 AND s2_current_audio_needed = S2_CHASE_AUDIO IF s2_audio_index < s2_total_audio_to_play IF NOT IS_CHAR_DEAD s2_smoke GOSUB s2_load_and_play_audio ELSE CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS s2_smoke_played_chase_dialogue = 1 ENDIF ELSE IF NOT IS_CHAR_DEAD s2_smoke SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH s2_smoke FALSE ENDIF s2_smoke_played_chase_dialogue = 1 ENDIF ENDIF ENDIF // escape guards run after player when he goes past them IF NOT s2_player_reached_escape_guards = 1 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2354.11 -1355.54 15.0 15.0 FALSE s2_index = 0 WHILE s2_index < 2 IF NOT IS_CHAR_DEAD s2_escape_guards[s2_index] SET_CHAR_KINDA_STAY_IN_SAME_PLACE s2_escape_guards[s2_index] FALSE ENDIF s2_index++ ENDWHILE s2_player_reached_escape_guards = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD s2_escaping_guy IF NOT s2_escaping_guy_reached_first_driveway = 1 GET_SCRIPT_TASK_STATUS s2_escaping_guy PERFORM_SEQUENCE_TASK_FROM_PROGRESS s2_task_status IF s2_task_status = PERFORMING_TASK GET_SEQUENCE_PROGRESS_RECURSIVE s2_escaping_guy s2_route_seq_progress1 s2_route_seq_progress2 IF s2_route_seq_progress1 = 1 AND s2_route_seq_progress2 = 4 s2_escaping_guy_reached_first_driveway = 1 ENDIF ENDIF ENDIF IF NOT s2_escaping_guy_reached_first_driveway = 1 IF IS_CHAR_PLAYING_ANIM s2_escaping_guy run_gang1 SET_CHAR_ANIM_SPEED s2_escaping_guy run_gang1 1.5 ENDIF IF IS_CHAR_PLAYING_ANIM s2_escaping_guy sprint_civi SET_CHAR_ANIM_SPEED s2_escaping_guy sprint_civi 1.5 ENDIF ELSE IF IS_CHAR_PLAYING_ANIM s2_escaping_guy run_gang1 SET_CHAR_ANIM_SPEED s2_escaping_guy run_gang1 1.2 ENDIF IF IS_CHAR_PLAYING_ANIM s2_escaping_guy sprint_civi SET_CHAR_ANIM_SPEED s2_escaping_guy sprint_civi 1.2 ENDIF ENDIF ENDIF // // escaping guy stops and shoots at player if close at certain points on route // IF NOT IS_CHAR_DEAD s2_escaping_guy // IF s2_cur_attack_point_reached < 3 // AND NOT s2_escaping_guy_attacking = 1 // GET_SCRIPT_TASK_STATUS s2_escaping_guy PERFORM_SEQUENCE_TASK_FROM_PROGRESS s2_task_status // IF s2_task_status = PERFORMING_TASK // GET_SEQUENCE_PROGRESS_RECURSIVE s2_escaping_guy s2_route_seq_progress1 s2_route_seq_progress2 // SWITCH s2_cur_attack_point_reached // CASE 0 // IF s2_route_seq_progress1 = 1 // AND s2_route_seq_progress2 = 3 // // s2_cur_attack_point_reached = 1 // IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer s2_escaping_guy 20.0 20.0 FALSE // TASK_KILL_CHAR_ON_FOOT s2_escaping_guy scplayer // TIMERB = 0 // s2_escaping_guy_attacking = 1 // ENDIF // // ENDIF // BREAK // CASE 1 // IF s2_route_seq_progress1 = 1 // AND s2_route_seq_progress2 = 6 // // s2_cur_attack_point_reached = 2 // IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer s2_escaping_guy 20.0 20.0 FALSE // TASK_KILL_CHAR_ON_FOOT s2_escaping_guy scplayer // TIMERB = 0 // s2_escaping_guy_attacking = 1 // ENDIF // // ENDIF // BREAK // CASE 2 // IF s2_route_seq_progress1 = 3 // AND s2_route_seq_progress2 = 1 // // s2_cur_attack_point_reached = 3 // IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer s2_escaping_guy 20.0 20.0 FALSE // TASK_KILL_CHAR_ON_FOOT s2_escaping_guy scplayer // TIMERB = 0 // s2_escaping_guy_attacking = 1 // ENDIF // // ENDIF // BREAK // DEFAULT // BREAK // ENDSWITCH // ENDIF // ENDIF // IF s2_escaping_guy_attacking = 1 // IF TIMERB > 5000 // OR LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer s2_escaping_guy 10.0 10.0 FALSE // SWITCH s2_cur_attack_point_reached // CASE 1 // PERFORM_SEQUENCE_TASK_FROM_PROGRESS s2_escaping_guy s2_whole_route_seq 1 3 // BREAK // CASE 2 // PERFORM_SEQUENCE_TASK_FROM_PROGRESS s2_escaping_guy s2_whole_route_seq 1 6 // BREAK // CASE 3 // PERFORM_SEQUENCE_TASK_FROM_PROGRESS s2_escaping_guy s2_whole_route_seq 3 1 // BREAK // DEFAULT // BREAK // ENDSWITCH // s2_escaping_guy_attacking = 0 // ENDIF // ENDIF // ENDIF // at end of route, escaping guy gets into getaway car with driver. // if car or driver have been destroyed by the time the escaping guy gets there, // he flees from the player. IF NOT IS_CHAR_DEAD s2_escaping_guy IF NOT s2_escaping_guy_finished_route = 1 s2_index = s2_num_of_points_on_route - 1 GET_SCRIPT_TASK_STATUS s2_escaping_guy PERFORM_SEQUENCE_TASK_FROM_PROGRESS s2_task_status IF s2_task_status = FINISHED_TASK AND LOCATE_CHAR_ANY_MEANS_3D s2_escaping_guy s2_route_x[s2_index] s2_route_y[s2_index] s2_route_z[s2_index] 10.0 10.0 10.0 FALSE s2_escaping_guy_finished_route = 1 IF NOT IS_CAR_DEAD s2_getaway_car AND NOT IS_CHAR_DEAD s2_getaway_car_driver IF NOT IS_CAR_ON_FIRE s2_getaway_car TASK_ENTER_CAR_AS_PASSENGER s2_escaping_guy s2_getaway_car -2 0 ENDIF ENDIF ENDIF ENDIF IF NOT s2_getaway_driver_attacking_player = 1 IF NOT IS_CHAR_DEAD s2_getaway_car_driver AND NOT IS_CAR_DEAD s2_getaway_car IF IS_CAR_ON_FIRE s2_getaway_car TASK_KILL_CHAR_ON_FOOT s2_getaway_car_driver scplayer s2_getaway_driver_attacking_player = 1 ENDIF ENDIF ENDIF IF s2_escaping_guy_finished_route = 1 AND NOT s2_escaping_guy_fleeing = 1 IF NOT s2_escaping_guy_entered_car = 1 IF NOT IS_CAR_DEAD s2_getaway_car AND NOT IS_CHAR_DEAD s2_getaway_car_driver IF IS_CHAR_IN_CAR s2_escaping_guy s2_getaway_car s2_escaping_guy_entered_car = 1 TASK_CAR_DRIVE_WANDER s2_getaway_car_driver s2_getaway_car 30.0 DRIVINGMODE_AVOIDCARS GIVE_WEAPON_TO_CHAR s2_escaping_guy WEAPONTYPE_MICRO_UZI 99999 TASK_DRIVE_BY s2_escaping_guy scplayer -1 0.0 0.0 0.0 1000.0 DRIVEBY_AI_ALL_DIRN FALSE 60 SWITCH_ROADS_BACK_TO_ORIGINAL 2164.51 -1287.88 20.0 2170.88 -1267.88 30.0 IF IS_CHAR_IN_ANY_CAR scplayer PRINT_NOW ( SMK2_9 ) 10000 0 ELSE PRINT_NOW ( SMK2_8 ) 10000 0 ENDIF TIMERA = 0 ENDIF ENDIF IF NOT s2_escaping_guy_entered_car = 1 IF IS_CAR_DEAD s2_getaway_car OR IS_CHAR_DEAD s2_getaway_car_driver TASK_SMART_FLEE_CHAR s2_escaping_guy scplayer 1000.0 9999999 s2_escaping_guy_fleeing = 1 ELSE IF IS_CAR_ON_FIRE s2_getaway_car TASK_SMART_FLEE_CHAR s2_escaping_guy scplayer 1000.0 9999999 s2_escaping_guy_fleeing = 1 ENDIF ENDIF ENDIF ENDIF IF s2_escaping_guy_entered_car = 1 // if car's on fire or there's no driver, escaping guy flees // and driver attacks player if he still exists IF NOT s2_escaping_guy_fleeing = 1 IF NOT IS_CAR_DEAD s2_getaway_car GET_DRIVER_OF_CAR s2_getaway_car s2_current_driver IF IS_CAR_ON_FIRE s2_getaway_car OR s2_current_driver = -1 TASK_SMART_FLEE_CHAR s2_escaping_guy scplayer 1000.0 9999999 IF NOT IS_CHAR_DEAD s2_getaway_car_driver AND NOT s2_getaway_driver_attacking_player = 1 TASK_KILL_CHAR_ON_FOOT s2_getaway_car_driver scplayer s2_getaway_driver_attacking_player = 1 ENDIF s2_escaping_guy_fleeing = 1 ENDIF ENDIF ENDIF IF NOT s2_escaping_guy_fleeing = 1 IF NOT s2_escaping_guy_going_to_destination = 1 AND TIMERA > 180000 IF NOT IS_CAR_DEAD s2_getaway_car AND NOT IS_CHAR_DEAD s2_getaway_car_driver IF IS_CHAR_IN_CAR s2_getaway_car_driver s2_getaway_car AND IS_CHAR_IN_CAR s2_escaping_guy s2_getaway_car TASK_CAR_DRIVE_TO_COORD s2_getaway_car_driver s2_getaway_car s2_getaway_dest_x s2_getaway_dest_y s2_getaway_dest_z 30.0 MODE_NORMAL 0 DRIVINGMODE_AVOIDCARS s2_escaping_guy_going_to_destination = 1 PRINT_NOW ( SMK2_10 ) 7000 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ELSE GOTO mission_smoke2_passed ENDIF ENDIF IF IS_CHAR_DEAD s2_smoke PRINT_NOW ( SMK2_7 ) 4000 0 GOTO mission_smoke2_failed ENDIF IF NOT s2_player_and_smoke_arrived = 1 AND IS_CAR_DEAD s2_player_car PRINT_NOW ( SMK2_12 ) 5000 0 GOTO mission_smoke2_failed ENDIF IF s2_escaping_guy_finished_route = 1 AND NOT IS_CHAR_DEAD s2_escaping_guy IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer s2_escaping_guy 300.0 300.0 FALSE PRINT_NOW ( SMK2_11 ) 4000 0 GOTO mission_smoke2_failed ENDIF ENDIF IF s2_escaping_guy_going_to_destination = 1 AND NOT s2_escaping_guy_fleeing = 1 AND NOT IS_CHAR_DEAD s2_escaping_guy AND NOT IS_CHAR_DEAD s2_getaway_car_driver AND NOT IS_CAR_DEAD s2_getaway_car IF IS_CHAR_IN_CAR s2_escaping_guy s2_getaway_car AND IS_CHAR_IN_CAR s2_getaway_car_driver s2_getaway_car AND LOCATE_CAR_3D s2_getaway_car s2_getaway_dest_x s2_getaway_dest_y s2_getaway_dest_z 6.0 6.0 4.0 FALSE GOSUB check_player_is_safe IF player_is_completely_safe = 1 GOSUB s2_play_mission_failed_cutscene ELSE REMOVE_CHAR_ELEGANTLY s2_escaping_guy ENDIF PRINT_NOW ( SMK2_11 ) 4000 0 GOTO mission_smoke2_failed ENDIF ENDIF GOTO smoke2_loop // ********************************** Mission GOSUBS ************************************ // ************************************************************ // Create player's car with Smoke already in passenger seat // ************************************************************ s2_create_player_car_and_smoke: CUSTOM_PLATE_FOR_NEXT_CAR GLENDALE &_A2tmfK_ CREATE_CAR GLENDALE s2_player_car_x s2_player_car_y s2_player_car_z s2_player_car SET_CAR_HEADING s2_player_car s2_player_car_heading CHANGE_CAR_COLOUR s2_player_car 98 14 ADD_BLIP_FOR_CAR s2_player_car s2_player_car_blip SET_BLIP_AS_FRIENDLY s2_player_car_blip TRUE // CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 2066.71 -1703.59 13.19 s2_smoke // SET_CHAR_HEADING s2_smoke 270.0 CREATE_CHAR_AS_PASSENGER s2_player_car PEDTYPE_MISSION1 SPECIAL01 0 s2_smoke SET_CHAR_HEALTH s2_smoke 500 SET_CHAR_MAX_HEALTH s2_smoke 500 GIVE_WEAPON_TO_CHAR s2_smoke WEAPONTYPE_PISTOL 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER s2_smoke TRUE SET_CHAR_NEVER_TARGETTED s2_smoke TRUE SET_CHAR_SUFFERS_CRITICAL_HITS s2_smoke FALSE SET_ANIM_GROUP_FOR_CHAR s2_smoke fatman SET_CHAR_CANT_BE_DRAGGED_OUT s2_smoke TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED s2_smoke TRUE SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR s2_smoke FALSE COPY_CHAR_DECISION_MAKER -1 s2_smoke_decisions CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE s2_smoke_decisions EVENT_VEHICLE_ON_FIRE SET_CHAR_DECISION_MAKER s2_smoke s2_smoke_decisions CLEAR_ALL_CHAR_RELATIONSHIPS s2_smoke ACQUAINTANCE_TYPE_PED_DISLIKE CLEAR_ALL_CHAR_RELATIONSHIPS s2_smoke ACQUAINTANCE_TYPE_PED_HATE RETURN // ************************************************************* // Cutscene showing Smoke going into meet and meet breaking up // ************************************************************* s2_play_meet_cutscene: DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS CLEAR_AREA s2_meet_x s2_meet_y s2_meet_z 150.0 TRUE SWITCH_ROADS_OFF 2441.38 -1405.59 15.0 2460.42 -1368.34 40.0 SWITCH_PED_ROADS_OFF 2441.38 -1405.59 15.0 2460.42 -1368.34 40.0 SET_CAR_DENSITY_MULTIPLIER 0.0 LVAR_INT s2_random_cars[2] s2_random_car_drivers[2] LVAR_INT s2_random_car_model s2_random_car_class GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE s2_random_car_model s2_random_car_class IF NOT s2_random_car_model = -1 CREATE_CAR s2_random_car_model 2448.31 -1392.34 23.68 s2_random_cars[0] CREATE_RANDOM_CHAR_AS_DRIVER s2_random_cars[0] s2_random_car_drivers[0] SET_CAR_HEADING s2_random_cars[0] 180.0 CREATE_CAR s2_random_car_model 2453.7 -1408.14 23.68 s2_random_cars[1] CREATE_RANDOM_CHAR_AS_DRIVER s2_random_cars[1] s2_random_car_drivers[1] SET_CAR_HEADING s2_random_cars[1] 0.0 ENDIF // remove player and Smoke from car before deleting it IF NOT IS_CAR_DEAD s2_player_car IF IS_CHAR_IN_CAR scplayer s2_player_car WARP_CHAR_FROM_CAR_TO_COORD scplayer 2473.6 -1420.86 27.88 ENDIF IF NOT IS_CHAR_DEAD s2_smoke IF IS_CHAR_IN_CAR s2_smoke s2_player_car WARP_CHAR_FROM_CAR_TO_COORD s2_smoke 2470.6 -1420.86 27.88 ENDIF ENDIF ENDIF DELETE_CAR s2_player_car SET_PLAYER_CONTROL player1 OFF MAKE_PLAYER_SAFE_FOR_CUTSCENE Player1 LOAD_CUTSCENE SMOKE2B WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_CAR_DENSITY_MULTIPLIER 1.0 REQUEST_MODEL LSV1 REQUEST_MODEL LSV2 REQUEST_MODEL LSV3 REQUEST_MODEL SENTINEL REQUEST_MODEL MICRO_UZI //REQUEST_MODEL NRG500 LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED LSV1 OR NOT HAS_MODEL_LOADED LSV2 OR NOT HAS_MODEL_LOADED LSV3 OR NOT HAS_MODEL_LOADED SENTINEL OR NOT HAS_MODEL_LOADED MICRO_UZI //OR NOT HAS_MODEL_LOADED NRG500 WAIT 0 ENDWHILE // preload Smoke's chase and then tired audio $s2_audio_text[0] = &SMO2b11 s2_audio_sound[0] = SOUND_SMO2b11 GENERATE_RANDOM_INT_IN_RANGE 0 3 s2_random_int IF s2_random_int = 0 $s2_audio_text[1] = &SMO2_CA s2_audio_sound[1] = SOUND_SMO2_CA ENDIF IF s2_random_int = 1 $s2_audio_text[1] = &SMO2_CB s2_audio_sound[1] = SOUND_SMO2_CB ENDIF IF s2_random_int = 2 $s2_audio_text[1] = &SMO2_CC s2_audio_sound[1] = SOUND_SMO2_CC ENDIF LOAD_MISSION_AUDIO 1 s2_audio_sound[0] LOAD_MISSION_AUDIO 2 s2_audio_sound[1] WHILE NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE LOAD_SCENE 2471.99 -1402.32 27.82 CREATE_CHAR PEDTYPE_MISSION2 LSV1 2471.99 -1402.32 27.82 s2_escaping_guy SET_CHAR_HEADING s2_escaping_guy 90.0 SET_CHAR_HEALTH s2_escaping_guy 200 SET_CHAR_MAX_HEALTH s2_escaping_guy 200 SET_CHAR_MONEY s2_escaping_guy 500 SET_CHAR_ONLY_DAMAGED_BY_PLAYER s2_escaping_guy TRUE GIVE_WEAPON_TO_CHAR s2_escaping_guy WEAPONTYPE_PISTOL 99999 SET_CHAR_ACCURACY s2_escaping_guy 5 SET_CHAR_STAY_IN_SAME_PLACE s2_escaping_guy TRUE CLEAR_ALL_CHAR_RELATIONSHIPS s2_escaping_guy ACQUAINTANCE_TYPE_PED_DISLIKE CLEAR_ALL_CHAR_RELATIONSHIPS s2_escaping_guy ACQUAINTANCE_TYPE_PED_HATE IF NOT IS_CHAR_DEAD s2_escaping_guy PERFORM_SEQUENCE_TASK s2_escaping_guy s2_whole_route_seq ENDIF SET_CHAR_COORDINATES scplayer 2473.99 -1402.32 27.82 SET_CHAR_HEADING scplayer 90.0 IF NOT IS_CHAR_DEAD s2_smoke SET_CHAR_COORDINATES s2_smoke 2474.99 -1402.32 27.82 SET_CHAR_HEADING s2_smoke 90.0 ENDIF SET_FIXED_CAMERA_POSITION 2460.9929 -1400.9906 24.5671 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2461.8762 -1401.4060 24.7836 JUMP_CUT DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE s2_cutscene_skipped = 1 SKIP_CUTSCENE_START WAIT 2000 FLUSH_ROUTE EXTEND_ROUTE s2_route_x[0] s2_route_y[0] s2_route_z[0] EXTEND_ROUTE s2_route_x[1] s2_route_y[1] s2_route_z[1] TASK_FOLLOW_POINT_ROUTE scplayer PEDMOVE_RUN FOLLOW_ROUTE_ONCE IF NOT IS_CHAR_DEAD s2_smoke OPEN_SEQUENCE_TASK s2_smoke_tired_seq TASK_GO_STRAIGHT_TO_COORD -1 s2_route_x[0] s2_route_y[0] s2_route_z[0] PEDMOVE_RUN -1 TASK_PLAY_ANIM -1 IDLE_tired PED 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK s2_smoke_tired_seq PERFORM_SEQUENCE_TASK s2_smoke s2_smoke_tired_seq CLEAR_SEQUENCE_TASK s2_smoke_tired_seq ENDIF PLAY_MISSION_AUDIO 1 PRINT_NOW $s2_audio_text[0] 10000 1 WAIT 4000 CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS IF NOT s2_random_car_model = -1 IF NOT IS_CHAR_DEAD s2_random_car_drivers[0] AND NOT IS_CAR_DEAD s2_random_cars[0] TASK_CAR_DRIVE_TO_COORD s2_random_car_drivers[0] s2_random_cars[0] 2448.31 -1429.92 23.68 10.0 MODE_NORMAL 0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF // show player chasing escaping guy across street and Smoke stopping SET_FIXED_CAMERA_POSITION 2459.7158 -1406.5293 23.4481 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2459.6582 -1405.5365 23.5530 JUMP_CUT // wait for Smoke to play tired animation IF NOT IS_CHAR_DEAD s2_smoke GET_SCRIPT_TASK_STATUS s2_smoke PERFORM_SEQUENCE_TASK s2_task_status IF s2_task_status = PERFORMING_TASK GET_SEQUENCE_PROGRESS s2_smoke s2_route_seq_progress1 WHILE s2_route_seq_progress1 <= 0 WAIT 0 IF NOT IS_CHAR_DEAD s2_smoke GET_SCRIPT_TASK_STATUS s2_smoke PERFORM_SEQUENCE_TASK s2_task_status IF s2_task_status = PERFORMING_TASK GET_SEQUENCE_PROGRESS s2_smoke s2_route_seq_progress1 ENDIF ENDIF ENDWHILE ENDIF ENDIF PLAY_MISSION_AUDIO 2 PRINT_NOW $s2_audio_text[1] 10000 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 ENDWHILE CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS WAIT 1000 CLEAR_AREA s2_route_x[2] s2_route_y[2] s2_route_z[2] 35.0 FALSE // set escaping guy ready for next shot IF NOT IS_CHAR_DEAD s2_escaping_guy SET_CHAR_COORDINATES s2_escaping_guy s2_route_x[2] s2_route_y[2] 23.74 SET_CHAR_HEADING s2_escaping_guy 45.0 PERFORM_SEQUENCE_TASK_FROM_PROGRESS s2_escaping_guy s2_whole_route_seq 0 3 ENDIF // show escaping guy climbing over first fence SET_FIXED_CAMERA_POSITION 2406.65 -1358.0 25.33 0.0 0.0 0.0 POINT_CAMERA_AT_POINT s2_route_x[3] s2_route_y[3] s2_route_z[3] JUMP_CUT WAIT 1000 IF NOT IS_CHAR_DEAD s2_escaping_guy GET_SCRIPT_TASK_STATUS s2_escaping_guy PERFORM_SEQUENCE_TASK_FROM_PROGRESS s2_task_status IF s2_task_status = PERFORMING_TASK GET_SEQUENCE_PROGRESS_RECURSIVE s2_escaping_guy s2_route_seq_progress1 s2_route_seq_progress2 WHILE s2_route_seq_progress1 = 0 AND s2_route_seq_progress2 <= 3 WAIT 0 IF NOT IS_CHAR_DEAD s2_escaping_guy GET_SCRIPT_TASK_STATUS s2_escaping_guy PERFORM_SEQUENCE_TASK_FROM_PROGRESS s2_task_status IF s2_task_status = PERFORMING_TASK GET_SEQUENCE_PROGRESS_RECURSIVE s2_escaping_guy s2_route_seq_progress1 s2_route_seq_progress2 ENDIF ENDIF ENDWHILE ENDIF ENDIF WAIT 2200 // show escaping guy climbing over second fence SET_FIXED_CAMERA_POSITION 2404.81 -1354.37 25.71 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2401.40 -1356.79 25.31 JUMP_CUT WAIT 4500 s2_cutscene_skipped = 0 SKIP_CUTSCENE_END IF s2_cutscene_skipped = 1 // if cutscene skipped, set conditions to those at the end of the cutscene IF NOT IS_CHAR_DEAD s2_smoke IF IS_CHAR_IN_ANY_CAR s2_smoke WARP_CHAR_FROM_CAR_TO_COORD s2_smoke s2_route_x[0] s2_route_y[0] 23.06 ELSE SET_CHAR_COORDINATES s2_smoke s2_route_x[0] s2_route_y[0] 23.06 ENDIF SET_CHAR_HEADING s2_smoke 90.0 // Smoke out of breath so player has to chase down escaping guy TASK_PLAY_ANIM s2_smoke IDLE_tired PED 4.0 TRUE FALSE FALSE FALSE -1 ENDIF IF NOT IS_CHAR_DEAD s2_escaping_guy SET_CHAR_COORDINATES s2_escaping_guy 2390.73 -1355.69 23.74 SET_CHAR_HEADING s2_escaping_guy 81.47 PERFORM_SEQUENCE_TASK_FROM_PROGRESS s2_escaping_guy s2_whole_route_seq 0 7 ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS ENDIF IF NOT IS_CHAR_DEAD s2_escaping_guy COPY_CHAR_DECISION_MAKER -1 s2_escaping_guy_decisions CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE s2_escaping_guy_decisions EVENT_VEHICLE_ON_FIRE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE s2_escaping_guy_decisions EVENT_DAMAGE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE s2_escaping_guy_decisions EVENT_SHOT_FIRED CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE s2_escaping_guy_decisions EVENT_GUN_AIMED_AT CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE s2_escaping_guy_decisions EVENT_GOT_KNOCKED_OVER_BY_CAR CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE s2_escaping_guy_decisions EVENT_ACQUAINTANCE_PED_HATE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE s2_escaping_guy_decisions EVENT_ACQUAINTANCE_PED_DISLIKE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE s2_escaping_guy_decisions EVENT_DEAD_PED CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE s2_escaping_guy_decisions EVENT_SEXY_PED SET_CHAR_DECISION_MAKER s2_escaping_guy s2_escaping_guy_decisions ADD_BLIP_FOR_CHAR s2_escaping_guy s2_escaping_guy_blip ENDIF // create getaway car and driver for escaping guy at end of route CLEAR_AREA 2170.68 -1282.01 23.7 100.0 FALSE CREATE_CAR SENTINEL 2170.68 -1282.01 23.7 s2_getaway_car CREATE_CHAR_INSIDE_CAR s2_getaway_car PEDTYPE_MISSION2 LSV2 s2_getaway_car_driver SET_CAR_HEADING s2_getaway_car 357.03 SET_CAR_ONLY_DAMAGED_BY_PLAYER s2_getaway_car TRUE SET_CAN_BURST_CAR_TYRES s2_getaway_car FALSE LOCK_CAR_DOORS s2_getaway_car CARLOCK_LOCKOUT_PLAYER_ONLY SET_CHAR_ONLY_DAMAGED_BY_PLAYER s2_getaway_car_driver TRUE GIVE_WEAPON_TO_CHAR s2_getaway_car_driver WEAPONTYPE_PISTOL 99999 // create two guards to help escaping guy CLEAR_AREA 2353.86 -1356.92 23.41 5.0 FALSE CREATE_CHAR PEDTYPE_MISSION2 LSV2 2353.86 -1356.92 23.41 s2_escape_guards[0] CREATE_CHAR PEDTYPE_MISSION2 LSV3 2354.11 -1355.54 23.41 s2_escape_guards[1] SET_CHAR_HEADING s2_escape_guards[0] 90.0 SET_CHAR_HEADING s2_escape_guards[1] 270.0 s2_index = 0 WHILE s2_index < 2 SET_CHAR_ONLY_DAMAGED_BY_PLAYER s2_escape_guards[s2_index] TRUE GIVE_WEAPON_TO_CHAR s2_escape_guards[s2_index] WEAPONTYPE_PISTOL 99999 SET_CHAR_ACCURACY s2_escape_guards[s2_index] 50 CLEAR_ALL_CHAR_RELATIONSHIPS s2_escape_guards[s2_index] ACQUAINTANCE_TYPE_PED_DISLIKE CLEAR_ALL_CHAR_RELATIONSHIPS s2_escape_guards[s2_index] ACQUAINTANCE_TYPE_PED_HATE SET_CHAR_KINDA_STAY_IN_SAME_PLACE s2_escape_guards[s2_index] TRUE TASK_KILL_CHAR_ON_FOOT s2_escape_guards[s2_index] scplayer s2_index++ ENDWHILE MARK_MODEL_AS_NO_LONGER_NEEDED LSV3 IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer s2_route_x[1] s2_route_y[1] 23.05 ELSE SET_CHAR_COORDINATES scplayer s2_route_x[1] s2_route_y[1] 23.05 ENDIF SET_CHAR_HEADING scplayer 90.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2441.38 -1405.59 15.0 2460.42 -1368.34 40.0 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2441.38 -1405.59 15.0 2460.42 -1368.34 40.0 IF NOT s2_random_car_model = -1 MARK_CAR_AS_NO_LONGER_NEEDED s2_random_cars[0] MARK_CHAR_AS_NO_LONGER_NEEDED s2_random_car_drivers[0] MARK_CAR_AS_NO_LONGER_NEEDED s2_random_cars[1] MARK_CHAR_AS_NO_LONGER_NEEDED s2_random_car_drivers[1] ENDIF SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON CLEAR_CHAR_TASKS scplayer RETURN // **************************************************************** // Cutscene showing escaping guy running up stairs at destination // **************************************************************** s2_play_mission_failed_cutscene: SET_PLAYER_CONTROL player1 OFF IF NOT IS_CHAR_DEAD s2_escaping_guy SET_CHAR_PROOFS s2_escaping_guy TRUE TRUE TRUE TRUE TRUE ENDIF IF NOT IS_CHAR_DEAD s2_getaway_car_driver SET_CHAR_PROOFS s2_getaway_car_driver TRUE TRUE TRUE TRUE TRUE ENDIF IF NOT IS_CAR_DEAD s2_getaway_car SET_CAR_PROOFS s2_getaway_car TRUE TRUE TRUE TRUE TRUE ENDIF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_AREA s2_getaway_dest_x s2_getaway_dest_y s2_getaway_dest_z 100.0 FALSE SWITCH_ROADS_OFF 2108.5 -1080.59 4.73 2128.5 -1060.59 44.73 SWITCH_PED_ROADS_OFF 2108.5 -1080.59 4.73 2128.5 -1060.59 44.73 LVAR_INT s2_current_player_car LVAR_FLOAT s2_player_x s2_player_y s2_player_z s2_player_heading LVAR_FLOAT s2_ground_z s2_water_height GET_CHAR_COORDINATES scplayer s2_player_x s2_player_y s2_player_z GET_CHAR_HEADING scplayer s2_player_heading GET_WATER_HEIGHT_AT_COORDS s2_player_x s2_player_y FALSE s2_water_height GET_GROUND_Z_FOR_3D_COORD s2_player_x s2_player_y s2_player_z s2_ground_z IF s2_water_height > s2_ground_z s2_ground_z = s2_water_height ENDIF REQUEST_COLLISION s2_getaway_dest_x s2_getaway_dest_y LOAD_SCENE s2_getaway_dest_x s2_getaway_dest_y s2_getaway_dest_z SWITCH_ROADS_OFF 2082.91 -1107.01 4.53 2102.91 -1087.01 44.53 SWITCH_PED_ROADS_OFF 2082.91 -1107.01 4.53 2102.91 -1087.01 44.53 CLEAR_AREA 2092.91 -1097.01 24.53 20.0 FALSE SET_CHAR_COORDINATES scplayer 2092.91 -1097.01 -100.0 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer s2_current_player_car SET_CAR_HEADING s2_current_player_car 242.86 ENDIF IF NOT IS_CAR_DEAD s2_getaway_car SET_CAR_COORDINATES s2_getaway_car s2_getaway_dest_x s2_getaway_dest_y -100.0 SET_CAR_HEADING s2_getaway_car 50.74 // make sure both peds are sitting in the car IF NOT IS_CHAR_DEAD s2_escaping_guy CLEAR_CHAR_TASKS_IMMEDIATELY s2_escaping_guy IF IS_CHAR_IN_ANY_CAR s2_escaping_guy WARP_CHAR_FROM_CAR_TO_COORD s2_escaping_guy 2115.98 -1059.43 24.75 ENDIF WARP_CHAR_INTO_CAR_AS_PASSENGER s2_escaping_guy s2_getaway_car 0 ENDIF IF NOT IS_CHAR_DEAD s2_getaway_car_driver CLEAR_CHAR_TASKS_IMMEDIATELY s2_getaway_car_driver IF IS_CHAR_IN_ANY_CAR s2_getaway_car_driver WARP_CHAR_FROM_CAR_TO_COORD s2_getaway_car_driver 2117.04 -1061.53 24.53 ENDIF WARP_CHAR_INTO_CAR s2_getaway_car_driver s2_getaway_car ENDIF ENDIF WAIT 1000 SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 2110.56 -1067.61 25.27 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2114.84 -1067.77 25.63 JUMP_CUT IF NOT IS_CHAR_DEAD s2_escaping_guy FLUSH_ROUTE EXTEND_ROUTE 2121.0 -1068.03 23.82 EXTEND_ROUTE 2127.23 -1061.17 28.33 EXTEND_ROUTE 2139.74 -1066.82 34.06 EXTEND_ROUTE 2143.63 -1066.27 34.06 EXTEND_ROUTE 2157.15 -1072.39 39.48 LVAR_INT s2_stairs_seq OPEN_SEQUENCE_TASK s2_stairs_seq TASK_LEAVE_ANY_CAR -1 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE CLOSE_SEQUENCE_TASK s2_stairs_seq PERFORM_SEQUENCE_TASK s2_escaping_guy s2_stairs_seq CLEAR_SEQUENCE_TASK s2_stairs_seq ENDIF DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 IF NOT IS_CHAR_DEAD s2_escaping_guy IF IS_CHAR_PLAYING_ANIM s2_escaping_guy run_gang1 SET_CHAR_ANIM_SPEED s2_escaping_guy run_gang1 1.0 ENDIF ENDIF ENDWHILE LVAR_INT s2_escaping_guy_halfway_up_stairs s2_escaping_guy_almost_at_top s2_escaping_guy_halfway_up_stairs = 0 s2_escaping_guy_almost_at_top = 0 s2_cutscene_skipped = 1 SKIP_CUTSCENE_START WHILE NOT s2_escaping_guy_almost_at_top = 1 WAIT 0 IF NOT IS_CHAR_DEAD s2_escaping_guy IF IS_CHAR_PLAYING_ANIM s2_escaping_guy run_gang1 SET_CHAR_ANIM_SPEED s2_escaping_guy run_gang1 1.0 ENDIF IF NOT s2_escaping_guy_halfway_up_stairs = 1 IF LOCATE_CHAR_ON_FOOT_3D s2_escaping_guy 2143.63 -1066.27 34.06 4.0 4.0 4.0 FALSE SET_FIXED_CAMERA_POSITION 2131.97 -1067.61 33.57 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2137.38 -1068.03 34.43 JUMP_CUT s2_escaping_guy_halfway_up_stairs = 1 ENDIF ENDIF IF NOT s2_escaping_guy_almost_at_top = 1 IF LOCATE_CHAR_ON_FOOT_3D s2_escaping_guy 2157.15 -1072.39 39.48 6.0 6.0 4.0 FALSE s2_escaping_guy_almost_at_top = 1 ENDIF ENDIF ENDIF ENDWHILE s2_cutscene_skipped = 0 SKIP_CUTSCENE_END DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 IF NOT IS_CHAR_DEAD s2_escaping_guy IF IS_CHAR_PLAYING_ANIM s2_escaping_guy run_gang1 SET_CHAR_ANIM_SPEED s2_escaping_guy run_gang1 1.0 ENDIF ENDIF ENDWHILE REQUEST_COLLISION s2_player_x s2_player_y LOAD_SCENE s2_player_x s2_player_y s2_ground_z SET_CHAR_COORDINATES scplayer s2_player_x s2_player_y s2_ground_z IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer s2_current_player_car SET_CAR_HEADING s2_current_player_car s2_player_heading ELSE SET_CHAR_HEADING scplayer s2_player_heading ENDIF DELETE_CHAR s2_escaping_guy DELETE_CHAR s2_getaway_car_driver DELETE_CAR s2_getaway_car SWITCH_ROADS_BACK_TO_ORIGINAL 2108.5 -1080.59 4.73 2128.5 -1060.59 44.73 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2108.5 -1080.59 4.73 2128.5 -1060.59 44.73 SWITCH_ROADS_BACK_TO_ORIGINAL 2082.91 -1107.01 4.53 2102.91 -1087.01 44.53 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2082.91 -1107.01 4.53 2102.91 -1087.01 44.53 SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN // *************************************************************** // Mission audio // *************************************************************** s2_setup_audio_data: VAR_INT s2_random_int SWITCH s2_current_audio_needed CASE S2_TIRED_AUDIO GENERATE_RANDOM_INT_IN_RANGE 0 3 s2_random_int IF s2_random_int = 0 $s2_audio_text[0] = &SMO2_CA s2_audio_sound[0] = SOUND_SMO2_CA ENDIF IF s2_random_int = 1 $s2_audio_text[0] = &SMO2_CB s2_audio_sound[0] = SOUND_SMO2_CB ENDIF IF s2_random_int = 2 $s2_audio_text[0] = &SMO2_CC s2_audio_sound[0] = SOUND_SMO2_CC ENDIF s2_total_audio_to_play = 1 BREAK CASE S2_CHASE_AUDIO GENERATE_RANDOM_INT_IN_RANGE 0 3 s2_random_int IF s2_random_int = 0 $s2_audio_text[0] = &SMO2_DA s2_audio_sound[0] = SOUND_SMO2_DA ENDIF IF s2_random_int = 1 $s2_audio_text[0] = &SMO2_DB s2_audio_sound[0] = SOUND_SMO2_DB ENDIF IF s2_random_int = 2 $s2_audio_text[0] = &SMO2_DC s2_audio_sound[0] = SOUND_SMO2_DC ENDIF s2_total_audio_to_play = 1 BREAK CASE S2_CAR_AUDIO $s2_audio_text[0] = &SMO2_BA s2_audio_sound[0] = SOUND_SMO2_BA $s2_audio_text[1] = &SMO2_BB s2_audio_sound[1] = SOUND_SMO2_BB $s2_audio_text[2] = &SMO2_BC s2_audio_sound[2] = SOUND_SMO2_BC $s2_audio_text[3] = &SMO2_BD s2_audio_sound[3] = SOUND_SMO2_BD $s2_audio_text[4] = &SMO2_BE s2_audio_sound[4] = SOUND_SMO2_BE $s2_audio_text[5] = &SMO2_BF s2_audio_sound[5] = SOUND_SMO2_BF $s2_audio_text[6] = &SMO2_BG s2_audio_sound[6] = SOUND_SMO2_BG $s2_audio_text[7] = &SMO2_BH s2_audio_sound[7] = SOUND_SMO2_BH $s2_audio_text[8] = &SMO2_BJ s2_audio_sound[8] = SOUND_SMO2_BJ s2_total_audio_to_play = 9 BREAK DEFAULT BREAK ENDSWITCH s2_audio_is_playing = 0 s2_audio_index = 0 s2_started_talking = 0 CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS RETURN s2_load_and_play_audio: IF s2_audio_is_playing = 0 OR s2_audio_is_playing = 1 IF s2_audio_index < s2_total_audio_to_play IF TIMERB > 200 GOSUB s2_play_audio ENDIF ENDIF ENDIF IF s2_audio_is_playing = 2 IF HAS_MISSION_AUDIO_FINISHED 1 s2_audio_is_playing = 0 s2_audio_index++ s2_started_talking = 0 CLEAR_PRINTS TIMERB = 0 ENDIF ENDIF RETURN s2_play_audio: IF s2_audio_is_playing = 0 LOAD_MISSION_AUDIO 1 s2_audio_sound[s2_audio_index] s2_audio_is_playing = 1 ENDIF IF s2_audio_is_playing = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW $s2_audio_text[s2_audio_index] 10000 1 PLAY_MISSION_AUDIO 1 s2_audio_is_playing = 2 ENDIF ENDIF RETURN // *************************************************************** // Play audio for Smoke telling player to get back in the car // *************************************************************** s2_play_smoke_get_in_audio: CLEAR_MISSION_AUDIO 2 SWITCH s2_get_in_audio_stage CASE 0 LOAD_MISSION_AUDIO 2 SOUND_SMOX_AA BREAK CASE 1 LOAD_MISSION_AUDIO 2 SOUND_SMOX_AB BREAK CASE 2 LOAD_MISSION_AUDIO 2 SOUND_SMOX_AC BREAK CASE 3 LOAD_MISSION_AUDIO 2 SOUND_SMOX_AD BREAK CASE 4 LOAD_MISSION_AUDIO 2 SOUND_SMOX_AE BREAK DEFAULT BREAK ENDSWITCH STOP_CHAR_FACIAL_TALK scplayer CLEAR_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CHAR_DEAD s2_smoke OR IS_CAR_DEAD s2_player_car RETURN ENDIF IF NOT s2_weapon_pickup_collected = 1 IF HAS_PICKUP_BEEN_COLLECTED s2_weapon_pickup REMOVE_BLIP s2_weapon_pickup_blip s2_weapon_pickup_collected = 1 ENDIF ENDIF ENDWHILE PLAY_MISSION_AUDIO 2 SWITCH s2_get_in_audio_stage CASE 0 PRINT_NOW ( SMOX_AA ) 3000 1 BREAK CASE 1 PRINT_NOW ( SMOX_AB ) 3000 1 BREAK CASE 2 PRINT_NOW ( SMOX_AC ) 3000 1 BREAK CASE 3 PRINT_NOW ( SMOX_AD ) 3000 1 BREAK CASE 4 PRINT_NOW ( SMOX_AE ) 3000 1 BREAK DEFAULT BREAK ENDSWITCH WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CHAR_DEAD s2_smoke OR IS_CAR_DEAD s2_player_car RETURN ENDIF IF NOT s2_weapon_pickup_collected = 1 IF HAS_PICKUP_BEEN_COLLECTED s2_weapon_pickup REMOVE_BLIP s2_weapon_pickup_blip s2_weapon_pickup_collected = 1 ENDIF ENDIF ENDWHILE s2_get_in_audio_stage++ IF s2_get_in_audio_stage > 4 s2_get_in_audio_stage = 0 ENDIF RETURN // ******************************** Mission smoke2 failed ********************************** mission_smoke2_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" trigger_phonecall_failed = 1 RETURN // ******************************** Mission smoke2 passed ********************************** mission_smoke2_passed: flag_smoke_mission_counter++ REGISTER_MISSION_PASSED ( SMOKE_2 ) PLAYER_MADE_PROGRESS 1 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 3 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 3 //ADD_SCORE player1 100 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 RETURN // *********************************** Mission cleanup ************************************* mission_cleanup_smoke2: DISPLAY_RADAR 3 // PATHING ON MARK_MODEL_AS_NO_LONGER_NEEDED LSV1 MARK_MODEL_AS_NO_LONGER_NEEDED LSV2 MARK_MODEL_AS_NO_LONGER_NEEDED LSV3 MARK_MODEL_AS_NO_LONGER_NEEDED GLENDALE MARK_MODEL_AS_NO_LONGER_NEEDED SENTINEL //MARK_MODEL_AS_NO_LONGER_NEEDED NRG500 MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI UNLOAD_SPECIAL_CHARACTER 1 REMOVE_CHAR_ELEGANTLY s2_smoke REMOVE_PICKUP s2_weapon_pickup REMOVE_BLIP s2_weapon_pickup_blip REMOVE_BLIP s2_player_car_blip REMOVE_BLIP s2_meet_blip REMOVE_BLIP s2_escaping_guy_blip CLEAR_SEQUENCE_TASK s2_whole_route_seq CLEAR_SEQUENCE_TASK s2_route_seq1 CLEAR_SEQUENCE_TASK s2_route_seq2 CLEAR_SEQUENCE_TASK s2_route_seq3 CLEAR_SEQUENCE_TASK s2_route_seq4 CLEAR_SEQUENCE_TASK s2_smoke_tired_seq CLEAR_SEQUENCE_TASK s2_stairs_seq CLEAR_HELP REMOVE_DECISION_MAKER s2_escaping_guy_decisions REMOVE_DECISION_MAKER s2_smoke_decisions SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2458.50 -1410.63 24.06 2504.27 -1395.83 28.55 SWITCH_ROADS_BACK_TO_ORIGINAL 2488.0 -1431.93 25.41 2528.0 -1391.93 29.41 SWITCH_ROADS_BACK_TO_ORIGINAL 2252.89 -1286.37 22.25 2258.89 -1280.37 28.25 SWITCH_ROADS_BACK_TO_ORIGINAL 2164.51 -1287.88 20.0 2170.88 -1267.88 30.0 // roads around mission failed cutscene SWITCH_ROADS_BACK_TO_ORIGINAL 2108.5 -1080.59 4.73 2128.5 -1060.59 44.73 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2108.5 -1080.59 4.73 2128.5 -1060.59 44.73 // roads around player at mission failed cutscene SWITCH_ROADS_BACK_TO_ORIGINAL 2082.91 -1107.01 4.53 2102.91 -1087.01 44.53 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2082.91 -1107.01 4.53 2102.91 -1087.01 44.53 // roads at first scripted cutscene SWITCH_ROADS_BACK_TO_ORIGINAL 2441.38 -1405.59 15.0 2460.42 -1368.34 40.0 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2441.38 -1405.59 15.0 2460.42 -1368.34 40.0 SET_CAR_DENSITY_MULTIPLIER 1.0 FLUSH_ROUTE GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* SMOKE 3 ******************************************* // ********************************** Train-ing Day***************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME smoke3 // Mission start stuff GOSUB mission_start_smoke3 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_smoke3_failed ENDIF GOSUB mission_cleanup_smoke3 MISSION_END { // Variables for mission //mexican peds LVAR_INT mex1_s3 LVAR_INT mex2_s3 LVAR_INT mex3_s3 LVAR_INT mex4_s3 //getting task status LVAR_INT taskstatus_s3 LVAR_FLOAT finishanim_s3 //train LVAR_INT train_s3 LVAR_INT opptrain_s3 LVAR_INT opptrain2_s3 LVAR_INT carriage1_s3 LVAR_INT carriage2_s3 LVAR_FLOAT train_s3heading LVAR_FLOAT carriage1x_s3 carriage1y_s3 carriage1z_s3 LVAR_FLOAT carriage2x_s3 carriage2y_s3 carriage2z_s3 //object LVAR_INT crane_s3 LVAR_INT barrier_s3 //bike LVAR_INT bike_s3 //train speed //decisions LVAR_INT std1ped_s3 //block car LVAR_INT blockcar_s3 LVAR_INT othercar_s3 LVAR_INT othercardriver1_s3 LVAR_INT othercardriver2_s3 LVAR_INT blockcardriver_s3 //sequences LVAR_INT enemy_s3 LVAR_INT jump_s3seq LVAR_INT ontopoftrain_s3seq LVAR_INT cutscene_s3seq LVAR_INT killsmoke_s3seq //train speed LVAR_FLOAT playercarx_s3 playercary_s3 playercarz_s3 LVAR_FLOAT trainx_s3 trainy_s3 trainz_s3 LVAR_FLOAT distance_s3 LVAR_INT trainspeed_s3 ///////////////////////////////////////////////////////////////////////// LVAR_INT smoke3_DM //decision maker LVAR_INT smoke3mex_DM //decision maker LVAR_INT emptysmoke3_DM LVAR_INT groupsmoke3_DM LVAR_INT smokecar_s3 LVAR_INT smoke3_area //flags LVAR_INT smoke_s3flag LVAR_INT firstcutscene_s3flag LVAR_INT mex1jump_s3flag LVAR_INT mex2jump_s3flag LVAR_INT mex3jump_s3flag LVAR_INT mex4jump_s3flag LVAR_INT trainismoving_s3flag LVAR_INT mex1dead_s3flag LVAR_INT mex2dead_s3flag LVAR_INT mex3dead_s3flag LVAR_INT mex4dead_s3flag LVAR_INT opptrain_s3flag LVAR_INT smokegroupstation_s3flag LVAR_INT blockcar_s3flag LVAR_INT outoffirstgroup_s3flag LVAR_INT smokegroupchase_s3flag LVAR_INT trainspeed_s3flag/////////////////////////////////////////////////////////////////////// LVAR_INT speedlimit_s3flag LVAR_INT difficulty_s3flag //do not reset this flag LVAR_INT run_s2flag LVAR_INT drivebyfirsttime_s3flag LVAR_INT skipcutscene_s3flag LVAR_INT smokeincar_s3flag LVAR_INT dialogue_s3flag LVAR_INT duck_s3flag LVAR_INT mex2_s3flag LVAR_INT mex4_s3flag LVAR_INT locatesmoke_s3flag LVAR_INT explode_s3flag LVAR_INT missionplaying_s3flag LVAR_INT progressaudio_s3flag LVAR_INT handlingudio_s3flag LVAR_INT playerinbike_s3flag LVAR_INT audiowayback_s3flag LVAR_INT bikecreated_s3flag LVAR_INT getsmoke_s3flag LVAR_INT mexdead_s3counter LVAR_INT infotext_s3flag //blips LVAR_INT trainstation_s3blip LVAR_INT mex1_s3blip LVAR_INT mex2_s3blip LVAR_INT mex3_s3blip LVAR_INT mex4_s3blip LVAR_INT smokecar_s3blip LVAR_INT smokehouse_s3blip LVAR_INT bike_s3blip LVAR_TEXT_LABEL $text_label_s3 LVAR_INT audio_label_s3 LVAR_TEXT_LABEL $input_text_s3 //debug //VAR_INT health1 //VAR_INT health2 //VAR_INT health3 //VAR_INT health4 timertest // // **************************************** Mission Start ********************************** mission_start_smoke3: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 WAIT 0 // ****************************************START OF CUTSCENE******************************** LOAD_MISSION_TEXT SMOKE3 FORCE_WEATHER_NOW WEATHER_SUNNY_LA CLEAR_AREA 2077.58 -1695.929 150.0 150.0 TRUE SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REQUEST_MODEL Lae_smokecutscene WHILE NOT HAS_MODEL_LOADED Lae_smokecutscene WAIT 0 ENDWHILE LVAR_INT smokeobject_s3 CREATE_OBJECT_NO_OFFSET Lae_smokecutscene 2055.0 -1695.0 15.0 smokeobject_s3 LOAD_CUTSCENE SMOKE3A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE RELEASE_WEATHER MARK_MODEL_AS_NO_LONGER_NEEDED Lae_smokecutscene DELETE_OBJECT smokeobject_s3 // ****************************************END OF CUTSCENE********************************** // fades the screen in SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON //LOAD_CHAR_DECISION_MAKER imran/std1_is std1ped_s3 SET_FADING_COLOUR 0 0 0 DO_FADE 1500 FADE_IN // request models DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON REQUEST_MODEL STREAK REQUEST_MODEL STREAKC REQUEST_MODEL IMMMCRAN REQUEST_MODEL GLENDALE REQUEST_MODEL TEC9 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SMO3_AA //Where to, Smoke? CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SMOX_AD //Come on, playa, get in! LOAD_SPECIAL_CHARACTER 1 SMOKE LOAD_ALL_MODELS_NOW WHILE NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED STREAK OR NOT HAS_MODEL_LOADED STREAKC OR NOT HAS_MODEL_LOADED IMMMCRAN OR NOT HAS_MODEL_LOADED TEC9 OR NOT HAS_MODEL_LOADED GLENDALE WAIT 0 ENDWHILE //REQUEST_ANIMATION RIOT // OR NOT HAS_ANIMATION_LOADED RIOT //decision maker LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY smoke3_DM LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY emptysmoke3_DM CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE emptysmoke3_DM EVENT_DAMAGE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY smoke3mex_DM CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE smoke3mex_DM EVENT_DAMAGE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE smoke3mex_DM EVENT_POTENTIAL_GET_RUN_OVER CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE smoke3mex_DM EVENT_POTENTIAL_WALK_INTO_VEHICLE SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 //create train CLEAR_AREA 1682.6184 -1957.8800 150.0 150.0 FALSE //Go with Smoke to the Train Station where the mexicans are doing the deal. SWITCH_RANDOM_TRAINS OFF DELETE_ALL_TRAINS CREATE_MISSION_TRAIN 11 1725.55 -1953.278 12.5 FALSE train_s3 //1725 was 30 SET_TRAIN_SPEED train_s3 0.0 SET_TRAIN_CRUISE_SPEED train_s3 0.0 GET_TRAIN_CARRIAGE train_s3 1 carriage1_s3 GET_TRAIN_CARRIAGE train_s3 2 carriage2_s3 SET_CAR_PROOFS train_s3 TRUE TRUE TRUE TRUE TRUE SET_TRAIN_FORCED_TO_SLOW_DOWN train_s3 FALSE LOCK_CAR_DOORS train_s3 CARLOCK_LOCKED LOCK_CAR_DOORS carriage1_s3 CARLOCK_LOCKED LOCK_CAR_DOORS carriage2_s3 CARLOCK_LOCKED SET_CAR_PROOFS carriage1_s3 TRUE TRUE TRUE TRUE TRUE SET_CAR_PROOFS carriage2_s3 TRUE TRUE TRUE TRUE TRUE //Set player's and smokes coordinates after cutscene //create smoke's car CLEAR_AREA 2077.58 -1695.929 150.0 150.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR GLENDALE &_A2tmfK_ CREATE_CAR GLENDALE 2058.86 -1694.612 12.297 smokecar_S3 CHANGE_CAR_COLOUR smokecar_S3 98 14 SET_CAR_HEADING smokecar_S3 271.822 SET_CAR_HEALTH smokecar_S3 1000 CREATE_CHAR_AS_PASSENGER smokecar_S3 PEDTYPE_SPECIAL SPECIAL01 0 big_smoke SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR big_smoke FALSE SET_CHAR_HEALTH big_smoke 500 SET_CHAR_ONLY_DAMAGED_BY_PLAYER big_smoke TRUE SET_CHAR_SUFFERS_CRITICAL_HITS big_smoke FALSE SET_CHAR_NEVER_TARGETTED big_smoke TRUE SET_CHAR_DECISION_MAKER big_smoke smoke3_DM SET_CHAR_CANT_BE_DRAGGED_OUT big_smoke TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED big_smoke TRUE SET_MAX_FIRE_GENERATIONS 1 SET_RADIO_CHANNEL RS_MODERN_HIP_HOP WARP_CHAR_INTO_CAR scplayer smokecar_S3 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 SET_RAILTRACK_RESISTANCE_MULT 0.3 DO_FADE 500 FADE_IN SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE // ************************************ DECLARE VARIABLES ******************************** smoke_s3flag = 0 firstcutscene_s3flag = 0 mex1jump_s3flag = 0 mex2jump_s3flag = 0 mex3jump_s3flag = 0 mex4jump_s3flag = 0 trainismoving_s3flag = 0 mex1dead_s3flag = 0 mex2dead_s3flag = 0 mex3dead_s3flag = 0 mex4dead_s3flag = 0 opptrain_s3flag = 0 smokegroupstation_s3flag = 0 blockcar_s3flag = 0 outoffirstgroup_s3flag = 0 trainspeed_s3flag = 0 smokegroupchase_s3flag = 0 run_s2flag = 0 drivebyfirsttime_s3flag = 0 skipcutscene_s3flag = 0 smokeincar_s3flag = 0 dialogue_s3flag = 0 duck_s3flag = 0 speedlimit_s3flag = 0 locatesmoke_s3flag = 0 mex2_s3flag = 0 mex4_s3flag = 0 explode_s3flag = 0 missionplaying_s3flag = 0 progressaudio_s3flag = 0 handlingudio_s3flag = 0 playerinbike_s3flag = 0 bikecreated_s3flag = 0 getsmoke_s3flag = 0 mexdead_s3counter = 0 infotext_s3flag = 0 // ************************************ MISSION LOOP ************************************* IF smoke_s3flag = 0 ADD_BLIP_FOR_COORD 1783.211 -1933.133 12.597 trainstation_s3blip dialogue_s3flag = 1 smoke_s3flag = 1 ENDIF smoke4_main_mission_loop: WAIT 0 //VIEW_INTEGER_VARIABLE playerinbike_s3flag playerinbike_s3flag //mex1dead_s3flag mex1dead_s3flag //VIEW_INTEGER_VARIABLE mex2dead_s3flag mex2dead_s3flag //VIEW_INTEGER_VARIABLE mex3dead_s3flag mex3dead_s3flag //VIEW_INTEGER_VARIABLE mex4dead_s3flag mex4dead_s3flag //VIEW_INTEGER_VARIABLE duck_s3flag duck_s3flag //VIEW_INTEGER_VARIABLE smoke_s3flag smoke_s3flag //VIEW_INTEGER_VARIABLE smokegroupchase_s3flag smokegroupchase_s3flag IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_smoke3_passed ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// Getting to train station //////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////group stuff before the train station IF smoke_s3flag = 1 IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CAR_DEAD smokecar_s3 IF IS_CHAR_SITTING_IN_CAR scplayer smokecar_s3 IF dialogue_s3flag = 1 PLAY_MISSION_AUDIO 1 PRINT_NOW SMO3_AA 5000 1 //Where to dialogue_s3flag = 2 ENDIF IF dialogue_s3flag = 2 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SMO3_AB //Unity Station. dialogue_s3flag = 3 ENDIF ENDIF IF dialogue_s3flag = 3 IF IS_CHAR_SITTING_IN_CAR scplayer smokecar_s3 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW SMO3_AB 5000 1 //Unity Station. dialogue_s3flag = 4 ENDIF ENDIF ENDIF IF dialogue_s3flag = 4 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 PRINT_NOW SMK3_1 5000 1 //The Mexicans are meeting up at the Los Santos Central Train Station, go with Smoke and see what they are up to. dialogue_s3flag = 5 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF outoffirstgroup_s3flag = 0 IF smoke_s3flag = 1 OR smoke_s3flag = 10 IF smokegroupstation_s3flag = 0 IF NOT IS_CAR_DEAD smokecar_s3 IF NOT IS_CHAR_SITTING_IN_CAR scplayer smokecar_s3 ADD_BLIP_FOR_CAR smokecar_s3 smokecar_s3blip SET_BLIP_AS_FRIENDLY smokecar_s3blip TRUE REMOVE_BLIP trainstation_s3blip CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 //PRINT SMK3_19 5000 1 //Get back in the car! PLAY_MISSION_AUDIO 2 PRINT_NOW SMOX_AD 2000 1 //Come on, playa, get in! smoke_s3flag = 10 smokegroupstation_s3flag = 1 ENDIF ENDIF ENDIF IF smokegroupstation_s3flag = 1 IF NOT IS_CAR_DEAD smokecar_s3 IF IS_CHAR_SITTING_IN_CAR scplayer smokecar_s3 REMOVE_BLIP smokecar_s3blip ADD_BLIP_FOR_COORD 1783.211 -1933.133 12.597 trainstation_s3blip IF dialogue_s3flag = 5 PRINT_NOW SMK3_1 12000 1 //The Mexicans are meeting up at the Los Santos Central Train Station, go with Smoke and see what they are up to. ENDIF smoke_s3flag = 1 smokegroupstation_s3flag = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF smoke_s3flag = 1 OR smoke_s3flag = 10 IF IS_CHAR_DEAD big_smoke PRINT_NOW SMK3_21 5000 1 //~r~Smoke died! GOTO mission_smoke3_failed ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// Train station cutscene //////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF smoke_s3flag = 1 IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CAR_DEAD smokecar_s3 IF firstcutscene_s3flag = 0 IF IS_CHAR_SITTING_IN_CAR big_smoke smokecar_s3 IF IS_CHAR_SITTING_IN_CAR scplayer smokecar_s3 IF LOCATE_CAR_2D smokecar_s3 1783.211 -1933.133 4.2 4.2 TRUE // disable paths when following the train DISPLAY_RADAR 2 // PATHING OFF SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL PLAYER1 OFF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD smokecar_s3 SET_CAR_COORDINATES smokecar_s3 1783.4182 -1933.0547 12.3862 SET_CAR_HEADING smokecar_s3 178.4615 ENDIF REQUEST_MODEL LSV1 REQUEST_MODEL LSV2 REQUEST_MODEL LSV3 REQUEST_MODEL MP5LNG REQUEST_MODEL SANCHEZ REQUEST_MODEL TRNTRK8_LAS REQUEST_ANIMATION TRAIN REQUEST_ANIMATION GANGS CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SMO3_BA //What we looking for, Smoke? CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SMO3_BB //Some Vagos cats meeting some San Fierro Rifa and cutting some kind of deal.. IF NOT HAS_SPECIAL_CHARACTER_LOADED 1 LOAD_SPECIAL_CHARACTER 1 SMOKE ENDIF REQUEST_ANIMATION GANGS REQUEST_ANIMATION TRAIN LOAD_ALL_MODELS_NOW WHILE NOT HAS_ANIMATION_LOADED GANGS OR NOT HAS_ANIMATION_LOADED TRAIN WAIT 0 ENDWHILE WHILE NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED LSV1 OR NOT HAS_MODEL_LOADED LSV2 OR NOT HAS_MODEL_LOADED LSV3 OR NOT HAS_MODEL_LOADED SANCHEZ OR NOT HAS_MODEL_LOADED MP5LNG WAIT 0 ENDWHILE LOAD_SCENE 1684.53 -1948.48 20.66 CLEAR_AREA 1682.6184 -1957.88 150.0 150.0 FALSE SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 outoffirstgroup_s3flag = 1 REMOVE_BLIP trainstation_s3blip CLEAR_AREA 1699.31 -1938.799 100.0 100.0 FALSE //create object CREATE_OBJECT_NO_OFFSET IMMMCRAN 2194.438 -1912.756 11.907 crane_s3 //2194.684 -1913.144 15.361 SET_OBJECT_HEADING crane_s3 0.0 //create mexicans CREATE_CHAR PEDTYPE_MISSION1 LSV1 1682.546 -1959.222 20.99 mex1_s3 //create mexicans SET_CHAR_HEADING mex1_s3 0.0 SET_FOLLOW_NODE_THRESHOLD_DISTANCE mex1_s3 500.0 SET_CHAR_PROOFS mex1_s3 TRUE TRUE TRUE TRUE TRUE SET_CHAR_DECISION_MAKER mex1_s3 smoke3mex_DM CREATE_CHAR PEDTYPE_MISSION1 LSV3 1682.546 -1958.222 20.99 mex2_s3 //-1958.756 SET_CHAR_HEADING mex2_s3 180.0 SET_FOLLOW_NODE_THRESHOLD_DISTANCE mex2_s3 500.0 SET_CHAR_PROOFS mex2_s3 TRUE TRUE TRUE TRUE TRUE SET_CHAR_DECISION_MAKER mex2_s3 smoke3mex_DM CREATE_CHAR PEDTYPE_MISSION1 LSV2 1681.038 -1958.03 20.99 mex3_s3 SET_CHAR_HEADING mex3_s3 182.467 SET_FOLLOW_NODE_THRESHOLD_DISTANCE mex3_s3 500.0 SET_CHAR_PROOFS mex3_s3 TRUE TRUE TRUE TRUE TRUE SET_CHAR_DECISION_MAKER mex3_s3 smoke3mex_DM CREATE_CHAR PEDTYPE_MISSION1 LSV3 1681.129 -1959.63 20.99 mex4_s3 SET_CHAR_HEADING mex4_s3 6.22 SET_FOLLOW_NODE_THRESHOLD_DISTANCE mex4_s3 500.0 SET_CHAR_PROOFS mex4_s3 TRUE TRUE TRUE TRUE TRUE SET_CHAR_DECISION_MAKER mex4_s3 smoke3mex_DM firstcutscene_s3flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF firstcutscene_s3flag = 1 IF NOT IS_CHAR_DEAD scplayer IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CAR_DEAD smokecar_s3 CLEAR_AREA 1682.6184 -1957.8800 150.0 150.0 FALSE //set camera coords and position player and smoke SET_FIXED_CAMERA_POSITION 1780.7285 -1937.9547 13.4430 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1781.3113 -1937.1478 13.3475 JUMP_CUT LOAD_SCENE 1687.04 -1946.6 21.79 LOAD_SCENE_IN_DIRECTION 1735.16 -1945.29 14.44 88.46 DO_FADE 750 FADE_IN PLAY_MISSION_AUDIO 1 START_CHAR_FACIAL_TALK scplayer 10000 PRINT_NOW SMO3_BA 5000 1 //What we looking for, Smoke? TIMERA = 0 firstcutscene_s3flag = 2 ENDIF ENDIF ENDIF ENDIF IF firstcutscene_s3flag = 2 IF TIMERA > 1000 IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CAR_DEAD smokecar_s3 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 STOP_CHAR_FACIAL_TALK scplayer LOAD_MISSION_AUDIO 1 SOUND_SMO3_BC //San Fierro? PLAY_MISSION_AUDIO 2 START_CHAR_FACIAL_TALK big_smoke 10000 PRINT_NOW SMO3_BB 5000 1 //Some Vagos cats meeting some San Fierro Rifa and cutting some kind of deal.. ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// skipcutscene_s3flag = 0 SKIP_CUTSCENE_START ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// TASK_LEAVE_CAR big_smoke smokecar_s3 WAIT 100 IF NOT IS_CHAR_DEAD big_smoke TASK_LOOK_AT_CHAR big_smoke scplayer 3500 ENDIF IF NOT IS_CAR_DEAD smokecar_s3 TASK_LEAVE_CAR scplayer smokecar_s3 ENDIF TIMERA = 0 firstcutscene_s3flag = 3 ENDIF ENDIF ENDIF ENDIF ENDIF IF firstcutscene_s3flag = 3 IF NOT IS_CHAR_DEAD scplayer IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CAR_DEAD smokecar_s3 IF NOT IS_CHAR_IN_ANY_CAR big_smoke IF NOT IS_CHAR_IN_ANY_CAR scplayer SET_FIXED_CAMERA_POSITION 1778.6099 -1938.6750 12.9064 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1779.2753 -1937.9441 13.0581 JUMP_CUT SET_CHAR_COORDINATES scplayer 1783.92 -1936.33 12.6 SET_CHAR_HEADING scplayer 117.0 TASK_GO_STRAIGHT_TO_COORD big_smoke 1775.3 -1939.23 12.9 PEDMOVE_WALK -1 OPEN_SEQUENCE_TASK cutscene_s3seq TASK_LOOK_AT_CHAR -1 big_smoke 10000 TASK_GO_STRAIGHT_TO_COORD -1 1776.63 -1940.18 13.66 PEDMOVE_WALK -1 //1777.098 -1940.277 12.609 CLOSE_SEQUENCE_TASK cutscene_s3seq PERFORM_SEQUENCE_TASK scplayer cutscene_s3seq CLEAR_SEQUENCE_TASK cutscene_s3seq TIMERA = 0 firstcutscene_s3flag = 4 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF firstcutscene_s3flag = 4 IF NOT IS_CHAR_DEAD scplayer IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD mex1_s3 IF NOT IS_CHAR_DEAD mex2_s3 IF NOT IS_CHAR_DEAD mex3_s3 IF NOT IS_CHAR_DEAD mex4_s3 IF NOT IS_CAR_DEAD smokecar_s3 IF NOT IS_CHAR_SITTING_IN_ANY_CAR big_smoke IF NOT IS_CHAR_SITTING_IN_ANY_CAR scplayer IF HAS_MISSION_AUDIO_FINISHED 2 IF TIMERA > 3000 PLAY_MISSION_AUDIO 1 START_CHAR_FACIAL_TALK scplayer 10000 PRINT_NOW SMO3_BC 5000 1 //San Fierro? SET_FIXED_CAMERA_POSITION 1732.4696 -1945.0454 12.9171 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1731.4921 -1945.1290 13.1107 JUMP_CUT SET_CHAR_COORDINATES big_smoke 1737.2 -1944.2 12.6 SET_CHAR_HEADING big_smoke 88.5 SET_CHAR_COORDINATES scplayer 1737.2 -1945.7 12.6 SET_CHAR_HEADING scplayer 88.5 TASK_GO_STRAIGHT_TO_COORD big_smoke 1718.04 -1944.2 13.6 PEDMOVE_WALK -1 //x is lower to walk further away TASK_GO_STRAIGHT_TO_COORD scplayer 1718.04 -1945.7 13.6 PEDMOVE_WALK -1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SMO3_BD //I thought Northern Mexicans don’t mix with Los Santos esse’s. TIMERA = 0 firstcutscene_s3flag = 5 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF firstcutscene_s3flag = 5 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 STOP_CHAR_FACIAL_TALK scplayer LOAD_MISSION_AUDIO 1 SOUND_SMO3_BE //You got me. PLAY_MISSION_AUDIO 2 START_CHAR_FACIAL_TALK scplayer 10000 PRINT_NOW SMO3_BD 5000 1 //I thought Northern Mexicans don't mix with Los Santos esse's. firstcutscene_s3flag = 6 ENDIF ENDIF IF firstcutscene_s3flag = 6 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_PRINTS CLEAR_MISSION_AUDIO 2 STOP_CHAR_FACIAL_TALK scplayer LOAD_MISSION_AUDIO 2 SOUND_SMO3_BF //That look like them! IF NOT IS_CHAR_DEAD big_smoke PLAY_MISSION_AUDIO 1 START_CHAR_FACIAL_TALK big_smoke 3000 PRINT_NOW SMO3_BE 5000 1 //You got me. ENDIF TIMERA = 0 //added firstcutscene_s3flag = 7 ENDIF ENDIF IF firstcutscene_s3flag = 7 IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD mex1_s3 IF NOT IS_CHAR_DEAD mex2_s3 IF NOT IS_CHAR_DEAD mex3_s3 IF NOT IS_CHAR_DEAD mex4_s3 IF TIMERA > 1500 //added was 5500 IF HAS_MISSION_AUDIO_FINISHED 1 //SET_FIXED_CAMERA_POSITION 1679.9171 -1959.6146 22.7919 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 1680.7834 -1959.1910 22.5273 JUMP_CUT SET_FIXED_CAMERA_POSITION 1726.0277 -1944.9240 13.9132 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1725.0594 -1945.1676 13.9694 JUMP_CUT TASK_PLAY_ANIM mex2_s3 hndshkfa GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM mex1_s3 hndshkfa GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM mex4_s3 IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 TASK_PLAY_ANIM mex3_s3 prtial_gngtlkG GANGS 4.0 TRUE FALSE FALSE FALSE -1 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 1724.08 -1946.27 12.5 SET_CHAR_HEADING scplayer 86.93 CLEAR_CHAR_TASKS_IMMEDIATELY big_smoke SET_CHAR_COORDINATES big_smoke 1723.93 -1944.52 12.5 SET_CHAR_HEADING big_smoke 93.27 PLAY_MISSION_AUDIO 2 START_CHAR_FACIAL_TALK scplayer 10000 PRINT_NOW SMO3_BF 5000 1 //That look like them! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SMO3_BG //Motherfuckers clocked us! TIMERA = 0 firstcutscene_s3flag = 8 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF firstcutscene_s3flag = 8 IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD mex1_s3 IF NOT IS_CHAR_DEAD mex2_s3 IF NOT IS_CHAR_DEAD mex3_s3 IF NOT IS_CHAR_DEAD mex4_s3 GET_SCRIPT_TASK_STATUS mex1_s3 TASK_PLAY_ANIM taskstatus_s3 IF taskstatus_s3 = FINISHED_TASK OR TIMERA > 1750 TASK_LOOK_AT_CHAR mex1_s3 big_smoke 10000 IF NOT IS_CHAR_DEAD mex2_s3 TASK_LOOK_AT_CHAR mex2_s3 scplayer 10000 ENDIF IF NOT IS_CHAR_DEAD mex3_s3 TASK_LOOK_AT_CHAR mex3_s3 scplayer 10000 ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TIMERA = 0 firstcutscene_s3flag = 9 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF firstcutscene_s3flag = 9 IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD mex1_s3 IF NOT IS_CHAR_DEAD mex2_s3 IF NOT IS_CHAR_DEAD mex3_s3 IF NOT IS_CHAR_DEAD mex4_s3 IF HAS_MISSION_AUDIO_FINISHED 2 IF HAS_MISSION_AUDIO_LOADED 1 IF TIMERA > 0 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SMO3_BH //We got to get those fools! SET_FIXED_CAMERA_POSITION 1721.3442 -1943.8755 13.8732 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1722.2112 -1944.3728 13.8443 JUMP_CUT TASK_LOOK_AT_CHAR scplayer big_smoke 10000 PLAY_MISSION_AUDIO 1 START_CHAR_FACIAL_TALK big_smoke 3000 PRINT_NOW SMO3_BG 5000 1 //Motherfuckers clocked us! TASK_PLAY_ANIM big_smoke prtial_gngtlkC GANGS 4.0 FALSE FALSE FALSE FALSE -1 TIMERB = 0 firstcutscene_s3flag = 10 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF firstcutscene_s3flag = 10 IF NOT IS_CHAR_DEAD big_smoke IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS CREATE_CAR SANCHEZ 1778.6237 -1939.9049 12.5598 bike_s3 SET_CAR_HEADING bike_s3 176.7993 SET_CAR_HEALTH bike_s3 10000 SET_CAN_BURST_CAR_TYRES bike_s3 FALSE SET_CAR_PROOFS bike_s3 TRUE TRUE TRUE TRUE TRUE CHANGE_CAR_COLOUR bike_s3 6 6 bikecreated_s3flag = 1 IF NOT IS_CAR_DEAD smokecar_s3 SET_CAR_HEALTH smokecar_s3 10000 SET_CAN_BURST_CAR_TYRES smokecar_s3 FALSE ENDIF IF NOT IS_CHAR_DEAD mex1_s3 CLEAR_CHAR_TASKS_IMMEDIATELY mex1_s3 SET_CHAR_COORDINATES mex1_s3 1682.254 -1953.64 20.985 SET_CHAR_HEADING mex1_s3 266.36 TASK_GO_STRAIGHT_TO_COORD mex1_s3 1799.49 -1953.73 12.23 PEDMOVE_RUN 50000 ENDIF IF NOT IS_CHAR_DEAD mex2_s3 CLEAR_CHAR_TASKS_IMMEDIATELY mex2_s3 SET_CHAR_COORDINATES mex2_s3 1679.256 -1953.635 20.985 //9 SET_CHAR_HEADING mex2_s3 266.36 TASK_GO_STRAIGHT_TO_COORD mex2_s3 1799.49 -1953.73 12.23 PEDMOVE_RUN 50000 ENDIF WAIT 250 IF NOT IS_CHAR_DEAD mex3_s3 CLEAR_CHAR_TASKS_IMMEDIATELY mex3_s3 SET_CHAR_COORDINATES mex3_s3 1676.74 -1953.59 20.985 //1676.11 -1953.64 20.985//1676.256 -1953.635 20.985//6 SET_CHAR_HEADING mex3_s3 266.36 TASK_GO_STRAIGHT_TO_COORD mex3_s3 1799.49 -1953.73 12.23 PEDMOVE_RUN 50000 ENDIF WAIT 250 IF NOT IS_CHAR_DEAD mex4_s3 CLEAR_CHAR_TASKS_IMMEDIATELY mex4_s3 SET_CHAR_COORDINATES mex4_s3 1675.3 -1953.67 20.985 //1675.4 -1953.23 20.953 //1675.256 -1953.735 20.985 SET_CHAR_HEADING mex4_s3 266.389//266.36 TASK_GO_STRAIGHT_TO_COORD mex4_s3 1799.49 -1953.73 12.23 PEDMOVE_RUN 50000 ENDIF IF NOT IS_CAR_DEAD train_s3 SET_TRAIN_CRUISE_SPEED train_s3 15.0 //5.0 trainismoving_s3flag = 1 ENDIF CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 1703.5477 -1951.4958 16.9714 1750.5477 -1951.4958 16.9714 10000 TRUE CAMERA_SET_VECTOR_TRACK 1702.5494 -1951.5137 16.9159 1702.5494 -1951.5137 16.9159 10000 TRUE TIMERB = 0 IF NOT IS_CHAR_DEAD big_smoke CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY big_smoke SET_CHAR_COORDINATES scplayer 1715.0 -1946.79 12.6 SET_CHAR_COORDINATES big_smoke 1712.36 -1944.47 12.6 ENDIF firstcutscene_s3flag = 11 ENDIF // ENDIF ENDIF //timertest = TIMERB //VIEW_INTEGER_VARIABLE timertest timertest IF firstcutscene_s3flag > 10 IF firstcutscene_s3flag < 14 IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD mex1_s3 IF NOT IS_CHAR_DEAD mex2_s3 IF NOT IS_CHAR_DEAD mex3_s3 IF NOT IS_CHAR_DEAD mex4_s3 IF NOT IS_CAR_DEAD carriage1_s3 IF NOT IS_CAR_DEAD carriage2_s3 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS carriage1_s3 0.0 9.84 3.0 carriage1x_s3 carriage1y_s3 carriage1z_s3 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS carriage2_s3 0.0 9.84 3.0 carriage2x_s3 carriage2y_s3 carriage2z_s3 IF NOT firstcutscene_s3flag > 11 GET_CHAR_COORDINATES mex2_s3 player_x player_y player_z POINT_CAMERA_AT_POINT player_x player_y 18.0 JUMP_CUT ENDIF IF mex1jump_s3flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D mex1_s3 carriage2x_s3 carriage2y_s3 carriage2z_s3 2.0 2.0 2.0 FALSE TASK_PLAY_ANIM scplayer FUCKU PED 4.0 FALSE FALSE FALSE FALSE -1 enemy_s3 = mex1_s3 GOSUB jump_s3label mex1jump_s3flag = 1 ENDIF ENDIF IF mex1jump_s3flag = 1 IF LOCATE_CHAR_ANY_MEANS_3D mex1_s3 carriage1x_s3 carriage1y_s3 carriage1z_s3 2.0 2.0 2.0 FALSE enemy_s3 = mex1_s3 GOSUB jump_s3label mex1jump_s3flag = 2 ENDIF ENDIF IF mex2jump_s3flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D mex2_s3 carriage2x_s3 carriage2y_s3 carriage2z_s3 2.0 2.0 2.0 FALSE enemy_s3 = mex2_s3 GOSUB jump_s3label mex2jump_s3flag = 1 ENDIF ENDIF IF mex2jump_s3flag = 1 IF LOCATE_CHAR_ANY_MEANS_3D mex2_s3 carriage1x_s3 carriage1y_s3 carriage1z_s3 2.0 2.0 2.0 FALSE enemy_s3 = mex2_s3 GOSUB jump_s3label mex2jump_s3flag = 2 ENDIF ENDIF IF mex3jump_s3flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D mex3_s3 carriage2x_s3 carriage2y_s3 carriage2z_s3 2.0 2.0 2.0 FALSE enemy_s3 = mex3_s3 GOSUB jump_s3label mex3jump_s3flag = 1 ENDIF ENDIF IF mex3jump_s3flag = 1 IF LOCATE_CHAR_ANY_MEANS_3D mex3_s3 carriage1x_s3 carriage1y_s3 carriage1z_s3 2.0 2.0 2.0 FALSE enemy_s3 = mex3_s3 GOSUB jump_s3label mex3jump_s3flag = 2 ENDIF ENDIF IF mex4jump_s3flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D mex4_s3 carriage2x_s3 carriage2y_s3 carriage2z_s3 2.0 2.0 2.0 FALSE enemy_s3 = mex4_s3 GOSUB jump_s3label mex4jump_s3flag = 1 ENDIF ENDIF IF mex4jump_s3flag = 1 IF LOCATE_CHAR_ANY_MEANS_3D mex4_s3 carriage1x_s3 carriage1y_s3 carriage1z_s3 2.0 2.0 2.0 FALSE enemy_s3 = mex4_s3 GOSUB jump_s3label mex4jump_s3flag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF firstcutscene_s3flag = 11 IF TIMERB > 4200 IF NOT IS_CHAR_DEAD big_smoke TASK_GO_STRAIGHT_TO_COORD big_smoke 1765.99 -1944.25 13.75 PEDMOVE_RUN 100000 TASK_GO_STRAIGHT_TO_COORD scplayer 1771.1 -1946.12 13.75 PEDMOVE_RUN 100000 PLAY_MISSION_AUDIO 2 PRINT_NOW SMO3_BH 5000 1//We got to get those fools! firstcutscene_s3flag = 12 ENDIF ENDIF ENDIF IF firstcutscene_s3flag = 12 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS firstcutscene_s3flag = 13 ENDIF ENDIF IF firstcutscene_s3flag = 13 IF TIMERB > 8000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE firstcutscene_s3flag = 14 ENDIF ENDIF IF firstcutscene_s3flag = 14 IF NOT IS_CAR_DEAD train_s3 IF NOT IS_CHAR_DEAD big_smoke // SET_TRAIN_SPEED train_s3 25.0 SET_MISSION_TRAIN_COORDINATES train_s3 1880.06 -1953.67 12.44 SET_TRAIN_CRUISE_SPEED train_s3 10.0 DELETE_CHAR mex1_s3 DELETE_CHAR mex2_s3 DELETE_CHAR mex3_s3 DELETE_CHAR mex4_s3 CREATE_CHAR PEDTYPE_MISSION1 LSV1 1682.6184 -1957.8800 20.9453 mex1_s3 //create mexicans enemy_s3 = mex1_s3 GOSUB ontopoftrain_labels3 SET_CHAR_SUFFERS_CRITICAL_HITS mex1_s3 FALSE CREATE_CHAR PEDTYPE_MISSION1 LSV3 1682.99 -1947.17 20.03 mex2_s3 enemy_s3 = mex2_s3 GOSUB ontopoftrain_labels3 SET_CHAR_SUFFERS_CRITICAL_HITS mex2_s3 FALSE CREATE_CHAR PEDTYPE_MISSION1 LSV3 1681.6184 -1957.8800 20.9453 mex3_s3 enemy_s3 = mex3_s3 GOSUB ontopoftrain_labels3 SET_CHAR_SUFFERS_CRITICAL_HITS mex3_s3 FALSE CREATE_CHAR PEDTYPE_MISSION4 LSV3 1682.5 -1945.17 20.033 mex4_s3 enemy_s3 = mex4_s3 GOSUB ontopoftrain_labels3 SET_CHAR_SUFFERS_CRITICAL_HITS mex4_s3 FALSE SET_CHAR_PROOFS mex1_s3 FALSE FALSE TRUE FALSE FALSE SET_CHAR_PROOFS mex2_s3 FALSE FALSE TRUE FALSE FALSE SET_CHAR_PROOFS mex3_s3 FALSE FALSE TRUE FALSE FALSE ATTACH_CHAR_TO_CAR mex1_s3 train_s3 0.0 5.0 3.0 FACING_FORWARD 360.0 WEAPONTYPE_MP5 ATTACH_CHAR_TO_CAR mex2_s3 train_s3 0.0 2.0 3.0 FACING_FORWARD 360.0 WEAPONTYPE_MP5 ATTACH_CHAR_TO_CAR mex3_s3 train_s3 0.0 -3.0 3.0 FACING_FORWARD 360.0 WEAPONTYPE_MP5 ATTACH_CHAR_TO_CAR mex4_s3 train_s3 0.0 -6.1 3.0 FACING_FORWARD 360.0 WEAPONTYPE_MP5 SET_CHAR_DECISION_MAKER mex1_s3 smoke3mex_DM SET_CHAR_DECISION_MAKER mex2_s3 smoke3mex_DM SET_CHAR_DECISION_MAKER mex3_s3 smoke3mex_DM SET_CHAR_DECISION_MAKER mex4_s3 emptysmoke3_DM SET_CHAR_ACCURACY mex1_s3 10 SET_CHAR_ACCURACY mex2_s3 10 SET_CHAR_ACCURACY mex3_s3 10 SET_CHAR_ACCURACY mex4_s3 10 SET_CHAR_SHOOT_RATE mex1_s3 20 SET_CHAR_SHOOT_RATE mex2_s3 20 SET_CHAR_SHOOT_RATE mex3_s3 30 SET_CHAR_SHOOT_RATE mex4_s3 20 IF difficulty_s3flag = 0 SET_CHAR_MAX_HEALTH mex1_s3 350 SET_CHAR_MAX_HEALTH mex2_s3 350 SET_CHAR_MAX_HEALTH mex3_s3 350 SET_CHAR_HEALTH mex1_s3 350 SET_CHAR_HEALTH mex2_s3 350 SET_CHAR_HEALTH mex3_s3 350 ENDIF IF difficulty_s3flag = 1 SET_CHAR_MAX_HEALTH mex1_s3 336 SET_CHAR_MAX_HEALTH mex2_s3 315 SET_CHAR_MAX_HEALTH mex3_s3 450 SET_CHAR_HEALTH mex1_s3 336 SET_CHAR_HEALTH mex2_s3 315 SET_CHAR_HEALTH mex3_s3 450 ENDIF IF difficulty_s3flag = 2 SET_CHAR_MAX_HEALTH mex1_s3 315 SET_CHAR_MAX_HEALTH mex2_s3 315 SET_CHAR_MAX_HEALTH mex3_s3 315 SET_CHAR_HEALTH mex1_s3 315 SET_CHAR_HEALTH mex2_s3 315 SET_CHAR_HEALTH mex3_s3 315 ENDIF IF difficulty_s3flag = 3 SET_CHAR_MAX_HEALTH mex1_s3 245 SET_CHAR_MAX_HEALTH mex2_s3 245 SET_CHAR_MAX_HEALTH mex3_s3 245 SET_CHAR_HEALTH mex1_s3 245 SET_CHAR_HEALTH mex2_s3 245 SET_CHAR_HEALTH mex3_s3 245 ENDIF IF difficulty_s3flag > 3 SET_CHAR_MAX_HEALTH mex1_s3 210 SET_CHAR_MAX_HEALTH mex2_s3 210 SET_CHAR_MAX_HEALTH mex3_s3 210 SET_CHAR_HEALTH mex1_s3 210 SET_CHAR_HEALTH mex2_s3 210 SET_CHAR_HEALTH mex3_s3 210 ENDIF SET_CHAR_PROOFS mex4_s3 TRUE TRUE TRUE TRUE TRUE ADD_BLIP_FOR_CHAR mex1_s3 mex1_s3blip ADD_BLIP_FOR_CHAR mex2_s3 mex2_s3blip ADD_BLIP_FOR_CHAR mex3_s3 mex3_s3blip ADD_BLIP_FOR_CHAR mex4_s3 mex4_s3blip CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY big_smoke TIMERA = 0 firstcutscene_s3flag = 15 ENDIF ENDIF ENDIF IF firstcutscene_s3flag = 15 IF NOT IS_CHAR_DEAD big_smoke ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// skipcutscene_s3flag = 1 SKIP_CUTSCENE_END ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// //PLAYER HAS SKIPPED CUTSCENE IF skipcutscene_s3flag = 0 DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 DELETE_CHAR mex1_s3 DELETE_CHAR mex2_s3 DELETE_CHAR mex3_s3 DELETE_CHAR mex4_s3 REMOVE_BLIP mex1_s3blip REMOVE_BLIP mex2_s3blip REMOVE_BLIP mex3_s3blip REMOVE_BLIP mex4_s3blip DELETE_MISSION_TRAINS //create object DELETE_OBJECT crane_s3 CREATE_OBJECT_NO_OFFSET IMMMCRAN 2194.438 -1912.756 11.907 crane_s3 //2194.684 -1913.144 15.361 SET_OBJECT_HEADING crane_s3 0.0 CREATE_MISSION_TRAIN 11 1880.06 -1953.67 12.44 FALSE train_s3 //1725 was 30 SET_TRAIN_FORCED_TO_SLOW_DOWN train_s3 FALSE SET_TRAIN_SPEED train_s3 10.0 SET_TRAIN_CRUISE_SPEED train_s3 10.0 GET_TRAIN_CARRIAGE train_s3 1 carriage1_s3 GET_TRAIN_CARRIAGE train_s3 2 carriage2_s3 SET_CAR_PROOFS train_s3 TRUE TRUE TRUE TRUE TRUE LOCK_CAR_DOORS train_s3 CARLOCK_LOCKED LOCK_CAR_DOORS carriage1_s3 CARLOCK_LOCKED LOCK_CAR_DOORS carriage2_s3 CARLOCK_LOCKED SET_CAR_PROOFS carriage1_s3 TRUE TRUE TRUE TRUE TRUE SET_CAR_PROOFS carriage2_s3 TRUE TRUE TRUE TRUE TRUE //create mexicans CREATE_CHAR PEDTYPE_MISSION1 LSV1 1682.6184 -1957.8800 20.9453 mex1_s3 //create mexicans enemy_s3 = mex1_s3 GOSUB ontopoftrain_labels3 SET_CHAR_SUFFERS_CRITICAL_HITS mex1_s3 FALSE CREATE_CHAR PEDTYPE_MISSION1 LSV3 1682.99 -1947.17 20.03 mex2_s3 enemy_s3 = mex2_s3 GOSUB ontopoftrain_labels3 SET_CHAR_SUFFERS_CRITICAL_HITS mex2_s3 FALSE CREATE_CHAR PEDTYPE_MISSION1 LSV3 1681.6184 -1957.8800 20.9453 mex3_s3 enemy_s3 = mex3_s3 GOSUB ontopoftrain_labels3 SET_CHAR_SUFFERS_CRITICAL_HITS mex3_s3 FALSE CREATE_CHAR PEDTYPE_MISSION4 LSV3 1682.5 -1945.17 20.033 mex4_s3 enemy_s3 = mex4_s3 GOSUB ontopoftrain_labels3 SET_CHAR_SUFFERS_CRITICAL_HITS mex4_s3 FALSE SET_CHAR_PROOFS mex1_s3 FALSE FALSE TRUE FALSE FALSE SET_CHAR_PROOFS mex2_s3 FALSE FALSE TRUE FALSE FALSE SET_CHAR_PROOFS mex3_s3 FALSE FALSE TRUE FALSE FALSE ATTACH_CHAR_TO_CAR mex1_s3 train_s3 0.0 5.0 3.0 FACING_FORWARD 360.0 WEAPONTYPE_MP5 ATTACH_CHAR_TO_CAR mex2_s3 train_s3 0.0 2.0 3.0 FACING_FORWARD 360.0 WEAPONTYPE_MP5 ATTACH_CHAR_TO_CAR mex3_s3 train_s3 0.0 -3.0 3.0 FACING_FORWARD 360.0 WEAPONTYPE_MP5 ATTACH_CHAR_TO_CAR mex4_s3 train_s3 0.0 -6.1 3.0 FACING_FORWARD 360.0 WEAPONTYPE_MP5 SET_CHAR_DECISION_MAKER mex1_s3 smoke3mex_DM SET_CHAR_DECISION_MAKER mex2_s3 smoke3mex_DM SET_CHAR_DECISION_MAKER mex3_s3 smoke3mex_DM SET_CHAR_DECISION_MAKER mex4_s3 emptysmoke3_DM SET_CHAR_ACCURACY mex1_s3 10 SET_CHAR_ACCURACY mex2_s3 10 SET_CHAR_ACCURACY mex3_s3 10 SET_CHAR_ACCURACY mex4_s3 10 SET_CHAR_SHOOT_RATE mex1_s3 20 SET_CHAR_SHOOT_RATE mex2_s3 20 SET_CHAR_SHOOT_RATE mex3_s3 30 SET_CHAR_SHOOT_RATE mex4_s3 20 IF difficulty_s3flag = 0 SET_CHAR_MAX_HEALTH mex1_s3 350 SET_CHAR_MAX_HEALTH mex2_s3 350 SET_CHAR_MAX_HEALTH mex3_s3 350 SET_CHAR_HEALTH mex1_s3 350 SET_CHAR_HEALTH mex2_s3 350 SET_CHAR_HEALTH mex3_s3 350 ENDIF IF difficulty_s3flag = 1 SET_CHAR_MAX_HEALTH mex1_s3 336 SET_CHAR_MAX_HEALTH mex2_s3 315 SET_CHAR_MAX_HEALTH mex3_s3 450 SET_CHAR_HEALTH mex1_s3 336 SET_CHAR_HEALTH mex2_s3 315 SET_CHAR_HEALTH mex3_s3 450 ENDIF IF difficulty_s3flag = 2 SET_CHAR_MAX_HEALTH mex1_s3 315 SET_CHAR_MAX_HEALTH mex2_s3 315 SET_CHAR_MAX_HEALTH mex3_s3 315 SET_CHAR_HEALTH mex1_s3 315 SET_CHAR_HEALTH mex2_s3 315 SET_CHAR_HEALTH mex3_s3 315 ENDIF IF difficulty_s3flag = 3 SET_CHAR_MAX_HEALTH mex1_s3 245 SET_CHAR_MAX_HEALTH mex2_s3 245 SET_CHAR_MAX_HEALTH mex3_s3 245 SET_CHAR_HEALTH mex1_s3 245 SET_CHAR_HEALTH mex2_s3 245 SET_CHAR_HEALTH mex3_s3 245 ENDIF IF difficulty_s3flag > 3 SET_CHAR_MAX_HEALTH mex1_s3 210 SET_CHAR_MAX_HEALTH mex2_s3 210 SET_CHAR_MAX_HEALTH mex3_s3 210 SET_CHAR_HEALTH mex1_s3 210 SET_CHAR_HEALTH mex2_s3 210 SET_CHAR_HEALTH mex3_s3 210 ENDIF ADD_BLIP_FOR_CHAR mex1_s3 mex1_s3blip ADD_BLIP_FOR_CHAR mex2_s3 mex2_s3blip ADD_BLIP_FOR_CHAR mex3_s3 mex3_s3blip ADD_BLIP_FOR_CHAR mex4_s3 mex4_s3blip IF bikecreated_s3flag = 0 CREATE_CAR SANCHEZ 1778.6237 -1939.9049 12.5598 bike_s3 SET_CAR_HEADING bike_s3 176.7993 SET_CAR_HEALTH bike_s3 10000 SET_CAR_PROOFS bike_s3 TRUE TRUE TRUE TRUE TRUE SET_CAN_BURST_CAR_TYRES bike_s3 FALSE CHANGE_CAR_COLOUR bike_s3 6 6 ENDIF IF NOT IS_CAR_DEAD smokecar_s3 SET_CAR_HEALTH smokecar_s3 10000 SET_CAN_BURST_CAR_TYRES smokecar_s3 FALSE ENDIF SET_CHAR_PROOFS mex4_s3 TRUE TRUE TRUE TRUE TRUE IF NOT IS_CHAR_DEAD big_smoke IF IS_CHAR_IN_ANY_CAR big_smoke WARP_CHAR_FROM_CAR_TO_COORD big_smoke 1772.918 -1941.495 12.567 SET_CHAR_HEADING big_smoke 269.216 ELSE SET_CHAR_COORDINATES big_smoke 1772.918 -1941.495 12.567 SET_CHAR_HEADING big_smoke 269.216 ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1774.065 -1943.003 12.558 SET_CHAR_HEADING scplayer 263.195 ELSE SET_CHAR_COORDINATES scplayer 1774.065 -1943.003 12.558 SET_CHAR_HEADING scplayer 263.195 ENDIF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF ENDIF IF NOT IS_CHAR_DEAD big_smoke SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_SCRIPT_LIMIT_TO_GANG_SIZE 1 SET_CHAR_COORDINATES scplayer 1774.065 -1943.003 12.558 //1767.06 -1942.17 12.573 SET_CHAR_HEADING scplayer 263.195 //263.195 IF NOT IS_CHAR_DEAD big_smoke SET_CHAR_COORDINATES big_smoke 1772.918 -1941.495 12.567 //1765.614 -1941.731 12.57 SET_CHAR_HEADING big_smoke 269.216 //269.216 ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY big_smoke CAMERA_RESET_NEW_SCRIPTABLES RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_Group big_smoke SET_GROUP_SEPARATION_RANGE Players_Group 30.0 //////////////////////////////////////////////////////////// LOAD_GROUP_DECISION_MAKER DM_GROUP_MISSION_NORM groupsmoke3_DM CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE groupsmoke3_DM EVENT_DAMAGE CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE groupsmoke3_DM EVENT_VEHICLE_DAMAGE_WEAPON CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE groupsmoke3_DM EVENT_ACQUAINTANCE_PED_HATE SET_GROUP_DECISION_MAKER Players_Group groupsmoke3_DM SET_CHAR_RELATIONSHIP big_smoke ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 SET_CHAR_DECISION_MAKER big_smoke smoke3_DM TASK_TOGGLE_PED_THREAT_SCANNER big_smoke FALSE TRUE FALSE ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE groupsmoke3_DM EVENT_ACQUAINTANCE_PED_HATE TASK_GROUP_USE_MEMBER_DECISION 0.0 100.0 0.0 0.0 TRUE FALSE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE smoke3_DM EVENT_ACQUAINTANCE_PED_HATE TASK_SIMPLE_GANG_DRIVEBY 0.0 100.0 0.0 0.0 TRUE FALSE SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS PLAYER1 TRUE SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON SET_CAR_DENSITY_MULTIPLIER 0.5 SET_PED_DENSITY_MULTIPLIER 0.5 ENDIF CLEAR_PRINTS IF NOT IS_CAR_DEAD bike_s3 ADD_BLIP_FOR_CAR bike_s3 bike_s3blip SET_BLIP_AS_FRIENDLY bike_s3blip TRUE ENDIF IF NOT IS_CHAR_DEAD mex4_s3 SET_CHAR_ACCURACY mex4_s3 20 enemy_s3 = mex4_s3 GOSUB killsmoke_s3label ENDIF SWITCH_ROADS_OFF 2261.14 -1141.45 18.0 2308.19 -1156.38 35.0 SWITCH_ROADS_OFF 2270.69 -1391.75 20.28 2315.81 -1375.58 26.88 SWITCH_ROADS_OFF 2257.3 -1491.95 20.63 2299.7 -1477.32 26.12 SWITCH_ROADS_OFF 2235.25 -1656.59 12.68 2176.75 -1629.89 15.0 SWITCH_ROADS_OFF 2221.43 -1721.07 10.09 2174.01 -172.72 15.73 SWITCH_ROADS_OFF 2234.09 -1723.3 14.0 2178.22 -1742.47 10.0 SWITCH_ROADS_OFF 2261.14 -1141.45 18.0 2308.19 -1156.38 35.0 SWITCH_ROADS_OFF 1956.91 -1936.01 10.07 1965.61 -1978.99 14.45 SWITCH_ROADS_OFF 2181.3 -1892.0 10.0 2222.36 -1897.71 15.0 PRINT_NOW SMK3_2 7000 1 //~s~Get on the motorbike and chase down the ~r~Vagos gang members ~s~and take them out! REMOVE_ANIMATION GANGS MARK_MODEL_AS_NO_LONGER_NEEDED LSV2 trainspeed_s3flag = 1 smoke_s3flag = 2 difficulty_s3flag++ //increment difficulty smokeincar_s3flag = 1 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE smoke3mex_DM EVENT_ACQUAINTANCE_PED_HATE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 FALSE TRUE DO_FADE 1000 FADE_IN MARK_CAR_AS_NO_LONGER_NEEDED smokecar_s3 SET_VEHICLE_CAMERA_TWEAK SANCHEZ 1.0 1.0 0.12 MARK_MODEL_AS_NO_LONGER_NEEDED TRNTRK8_LAS firstcutscene_s3flag = 14 ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////// Group stuff and blip swapping for chase //////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF smokeincar_s3flag = 1 IF NOT IS_CHAR_DEAD big_smoke IF IS_CHAR_SITTING_IN_ANY_CAR big_smoke REMOVE_BLIP bike_s3blip GIVE_WEAPON_TO_CHAR big_smoke WEAPONTYPE_TEC9 99999 SET_CURRENT_CHAR_WEAPON big_smoke WEAPONTYPE_TEC9 SET_CHAR_ACCURACY big_smoke 70 smokeincar_s3flag = 2 ENDIF ENDIF ENDIF IF firstcutscene_s3flag = 14 IF playerinbike_s3flag = 0 IF IS_CHAR_SITTING_IN_ANY_CAR scplayer REMOVE_BLIP bike_s3blip //SET_PLAYER_IN_CAR_CAMERA_MODE ZOOM_THREE playerinbike_s3flag = 1 ENDIF ENDIF ENDIF IF smoke_s3flag = 2 //////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////// Chase //////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// car coming onto the track IF blockcar_s3flag < 2 IF blockcar_s3flag = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2272.57 -1494.89 40.0 40.0 FALSE CREATE_CAR GLENDALE 2295.777 -1481.268 22.91 blockcar_s3 CREATE_CHAR_INSIDE_CAR blockcar_s3 PEDTYPE_CIVMALE LSV1 blockcardriver_s3 SET_CAR_HEADING blockcar_s3 88.47 CAR_GOTO_COORDINATES_ACCURATE blockcar_s3 2280.45 -1480.961 22.483 SET_CAR_CRUISE_SPEED blockcar_s3 6.5 SET_CAR_DRIVING_STYLE blockcar_s3 DRIVINGMODE_STOPFORCARS blockcar_s3flag = 1 ENDIF ENDIF IF blockcar_s3flag = 1 IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer 2280.45 -1480.961 50.0 50.0 FALSE MARK_CAR_AS_NO_LONGER_NEEDED blockcar_s3 MARK_CHAR_AS_NO_LONGER_NEEDED blockcardriver_s3 MARK_MODEL_AS_NO_LONGER_NEEDED GLENDALE blockcar_s3flag = 2 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD train_s3 // VIEW_INTEGER_VARIABLE difficulty_s3flag difficulty_s3flag // VIEW_FLOAT_VARIABLE x x // VIEW_FLOAT_VARIABLE y y //train speeds IF trainspeed_s3flag = 1 IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer train_s3 50.0 50.0 FALSE IF speedlimit_s3flag = 1 SET_TRAIN_CRUISE_SPEED train_s3 15.0 ENDIF IF speedlimit_s3flag > 1 SET_TRAIN_CRUISE_SPEED train_s3 18.0 ENDIF IF speedlimit_s3flag = 0 SET_TRAIN_CRUISE_SPEED train_s3 10.0 ENDIF trainspeed_s3flag = 2 ENDIF ENDIF IF trainspeed_s3flag = 2 IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer train_s3 45.0 45.0 FALSE IF speedlimit_s3flag = 0 speedlimit_s3flag = 1 ENDIF SET_TRAIN_CRUISE_SPEED train_s3 28.0 trainspeed_s3flag = 1 ENDIF ENDIF IF trainspeed_s3flag = 1 IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer train_s3 20.0 20.0 FALSE IF speedlimit_s3flag > 1 SET_TRAIN_CRUISE_SPEED train_s3 32.5 //32.0//35.0 //38.0 ELSE SET_TRAIN_CRUISE_SPEED train_s3 30.0 //29.5 //32.0 //35.0 ENDIF trainspeed_s3flag = 3 ENDIF ENDIF IF trainspeed_s3flag = 3 IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer train_s3 20.0 20.0 FALSE trainspeed_s3flag = 2 ENDIF ENDIF ////////////////////////////////////////////////////////////////////////// Incoming trains IF opptrain_s3flag < 15 //first incoming train IF opptrain_s3flag = 0 IF LOCATE_CAR_2D train_s3 2282.12 -1439.76 20.0 20.0 FALSE IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer 2289.69 -1034.14 20.0 20.0 FALSE CREATE_MISSION_TRAIN 11 2289.69 -1034.14 26.29 TRUE opptrain_s3 SET_TRAIN_SPEED opptrain_s3 30.0 SET_TRAIN_CRUISE_SPEED opptrain_s3 15.0 CREATE_OBJECT imy_track_barrier 2151.289 -664.906 52.10 barrier_s3 SET_OBJECT_HEADING barrier_s3 50.36 speedlimit_s3flag = 2 opptrain_s3flag = 1 ELSE opptrain_s3flag = 15 ENDIF ENDIF ENDIF IF opptrain_s3flag = 1 IF NOT IS_CAR_DEAD opptrain_s3 IF LOCATE_CAR_2D opptrain_s3 2288.31 -1408.91 20.0 20.0 FALSE SET_TRAIN_CRUISE_SPEED opptrain_s3 0.0 opptrain_s3flag = 2 ENDIF ENDIF ENDIF IF opptrain_s3flag = 2 IF NOT IS_CAR_DEAD opptrain_s3 IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer opptrain_s3 40.0 40.0 FALSE IF NOT IS_CAR_ON_SCREEN opptrain_s3 DELETE_MISSION_TRAIN opptrain_s3 opptrain_s3flag = 3 ENDIF ENDIF ENDIF ENDIF //second incoming train IF opptrain_s3flag = 3 IF LOCATE_CAR_2D train_s3 2176.87 -689.51 20.0 20.0 FALSE IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer 2283.36 -336.9 30.0 30.0 FALSE CREATE_MISSION_TRAIN 11 2283.36 -336.9 37.27 TRUE opptrain_s3 SET_TRAIN_SPEED opptrain_s3 30.0 SET_TRAIN_CRUISE_SPEED opptrain_s3 15.0 opptrain_s3flag = 4 ELSE opptrain_s3flag = 15 ENDIF ENDIF ENDIF IF opptrain_s3flag = 4 IF NOT IS_CAR_DEAD opptrain_s3 IF LOCATE_CAR_2D opptrain_s3 2052.08 -583.31 20.0 20.0 FALSE //2012.88 -419.28 SET_TRAIN_CRUISE_SPEED opptrain_s3 0.0 opptrain_s3flag = 5 ENDIF ENDIF ENDIF IF opptrain_s3flag = 5 IF NOT IS_CAR_DEAD opptrain_s3 IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer opptrain_s3 40.0 40.0 FALSE IF NOT IS_CAR_ON_SCREEN opptrain_s3 DELETE_MISSION_TRAIN opptrain_s3 opptrain_s3flag = 6 ENDIF ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////// duck locations IF duck_s3flag = 0 IF LOCATE_CAR_2D train_s3 2198.0 -1913.0 12.0 12.0 FALSE IF NOT IS_CHAR_DEAD mex1_s3 TASK_DUCK mex1_s3 -1 ENDIF IF NOT IS_CHAR_DEAD mex2_s3 TASK_DUCK mex2_s3 -1 ENDIF IF NOT IS_CHAR_DEAD mex3_s3 TASK_DUCK mex3_s3 -1 ENDIF CREATE_CAR GLENDALE 2200.07 -1731.94 12.28 othercar_s3 SET_CAR_HEADING othercar_s3 277.116 CREATE_CHAR PEDTYPE_MISSION3 MALE01 2201.55 -1728.59 12.43 othercardriver1_s3 SET_CHAR_HEADING othercardriver1_s3 285.1 CREATE_CHAR PEDTYPE_MISSION3 MALE01 2202.93 -1728.36 12.43 othercardriver2_s3 SET_CHAR_HEADING othercardriver2_s3 393.56 TASK_PLAY_ANIM othercardriver1_s3 IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 TASK_PLAY_ANIM othercardriver2_s3 IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 speedlimit_s3flag = 1 duck_s3flag = 1 ENDIF ENDIF IF duck_s3flag = 1 IF NOT LOCATE_CAR_2D train_s3 2198.0 -1913.0 12.0 12.0 FALSE IF NOT IS_CHAR_DEAD mex1_s3 enemy_s3 = mex1_s3 GOSUB ontopoftrain_labels3 ENDIF IF NOT IS_CHAR_DEAD mex2_s3 enemy_s3 = mex2_s3 GOSUB ontopoftrain_labels3 ENDIF IF NOT IS_CHAR_DEAD mex3_s3 enemy_s3 = mex3_s3 GOSUB ontopoftrain_labels3 ENDIF duck_s3flag = 2 ENDIF ENDIF IF duck_s3flag = 2 IF LOCATE_CAR_2D train_s3 2285.58 -1353.75 20.0 20.0 FALSE IF NOT IS_CHAR_DEAD mex1_s3 TASK_DUCK mex1_s3 -1 ENDIF IF NOT IS_CHAR_DEAD mex2_s3 TASK_DUCK mex2_s3 -1 ENDIF IF NOT IS_CHAR_DEAD mex3_s3 TASK_DUCK mex3_s3 -1 ENDIF duck_s3flag = 3 ENDIF ENDIF IF duck_s3flag = 3 IF NOT LOCATE_CAR_2D train_s3 2285.58 -1353.75 20.0 20.0 FALSE IF NOT IS_CHAR_DEAD mex1_s3 enemy_s3 = mex1_s3 GOSUB ontopoftrain_labels3 ENDIF IF NOT IS_CHAR_DEAD mex2_s3 enemy_s3 = mex2_s3 GOSUB ontopoftrain_labels3 ENDIF IF NOT IS_CHAR_DEAD mex3_s3 enemy_s3 = mex3_s3 GOSUB ontopoftrain_labels3 ENDIF IF NOT IS_CHAR_DEAD mex4_s3 TASK_DIE mex4_s3 ENDIF DELETE_OBJECT crane_s3 MARK_MODEL_AS_NO_LONGER_NEEDED IMMMCRAN MARK_CAR_AS_NO_LONGER_NEEDED othercar_s3 MARK_CHAR_AS_NO_LONGER_NEEDED othercardriver1_s3 MARK_CHAR_AS_NO_LONGER_NEEDED othercardriver2_s3 mex2_s3flag = 1 duck_s3flag = 4 ENDIF ENDIF IF duck_s3flag = 4 IF LOCATE_CAR_2D train_s3 2121.0 -361.0 18.0 18.0 FALSE IF NOT IS_CHAR_DEAD mex1_s3 TASK_DUCK mex1_s3 -1 ENDIF IF NOT IS_CHAR_DEAD mex3_s3 TASK_DUCK mex3_s3 -1 ENDIF duck_s3flag = 5 ENDIF ENDIF IF duck_s3flag = 5 IF NOT LOCATE_CAR_2D train_s3 2121.0 -361.0 18.0 18.0 FALSE IF NOT IS_CHAR_DEAD mex1_s3 enemy_s3 = mex1_s3 GOSUB ontopoftrain_labels3 ENDIF IF NOT IS_CHAR_DEAD mex3_s3 enemy_s3 = mex3_s3 GOSUB ontopoftrain_labels3 ENDIF duck_s3flag = 6 ENDIF ENDIF IF duck_s3flag = 6 IF NOT LOCATE_CAR_2D train_s3 2121.0 -361.0 18.0 18.0 FALSE speedlimit_s3flag = 3 duck_s3flag = 7 ENDIF ENDIF //mex2 IF mex2_s3flag = 1 IF NOT IS_CHAR_DEAD mex2_s3 IF LOCATE_CAR_2D train_s3 2285.53 -1120.59 20.0 20.0 FALSE SET_CHAR_DECISION_MAKER mex2_s3 emptysmoke3_DM mex2_s3flag = 2 ENDIF ENDIF ENDIF IF mex2_s3flag = 2 IF NOT IS_CHAR_DEAD mex2_s3 IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer train_s3 30.0 30.0 FALSE TASK_PLAY_ANIM_NON_INTERRUPTABLE mex2_s3 tran_stmb TRAIN 4.0 FALSE FALSE FALSE TRUE -1 SET_CHAR_PROOFS mex2_s3 TRUE TRUE TRUE TRUE TRUE mex2_s3flag = 3 ENDIF ENDIF ENDIF IF mex2_s3flag = 3 IF NOT IS_CHAR_DEAD mex2_s3 IF IS_CHAR_PLAYING_ANIM mex2_s3 tran_stmb GET_CHAR_ANIM_CURRENT_TIME mex2_s3 tran_stmb finishanim_s3 IF finishanim_s3 = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE mex2_s3 tran_hng TRAIN 4.0 TRUE FALSE FALSE FALSE -1 TIMERA = 0 mex2_s3flag = 4 ENDIF ENDIF ENDIF ENDIF IF mex2_s3flag = 4 IF TIMERA > 10000 IF NOT IS_CHAR_DEAD mex2_s3 TASK_PLAY_ANIM_NON_INTERRUPTABLE mex2_s3 tran_gtup TRAIN 4.0 FALSE FALSE FALSE FALSE -1 mex2_s3flag = 5 ENDIF ENDIF ENDIF IF mex2_s3flag = 5 IF NOT IS_CHAR_DEAD mex2_s3 IF IS_CHAR_PLAYING_ANIM mex2_s3 tran_gtup GET_CHAR_ANIM_CURRENT_TIME mex2_s3 tran_gtup finishanim_s3 IF finishanim_s3 = 1.0 SET_CHAR_DECISION_MAKER mex2_s3 smoke3mex_DM enemy_s3 = mex2_s3 GOSUB ontopoftrain_labels3 REMOVE_ANIMATION TRAIN SET_CHAR_PROOFS mex2_s3 FALSE FALSE FALSE FALSE FALSE mex2_s3flag = 6 ENDIF ENDIF ENDIF ENDIF IF mex2_s3flag > 0 IF mex2_s3flag < 6 IF NOT IS_CHAR_DEAD mex2_s3 GET_CAR_HEADING train_s3 train_s3heading SET_CHAR_HEADING mex2_s3 train_s3heading ENDIF ENDIF ENDIF IF mex4_s3flag = 0 IF DOES_OBJECT_EXIST crane_s3 IF NOT IS_CHAR_DEAD mex4_s3 IF LOCATE_CHAR_ANY_MEANS_2D mex4_s3 2197.53 -1913.39 3.0 3.0 FALSE TASK_TOGGLE_PED_THREAT_SCANNER mex4_s3 FALSE FALSE FALSE DETACH_CHAR_FROM_CAR mex4_s3 SET_CHAR_COLLISION mex4_s3 FALSE ATTACH_CHAR_TO_OBJECT mex4_s3 crane_s3 2.85 -0.70 5.9 FACING_FORWARD 360.0 WEAPONTYPE_UNARMED SET_CHAR_HEADING mex4_s3 0.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE mex4_s3 tran_ouch TRAIN 4.0 FALSE FALSE FALSE TRUE -1 //IF NOT IS_CHAR_DEAD big_smoke //IF LOCATE_CHAR_ANY_MEANS_2D big_smoke 2197.53 -1913.39 15.0 15.0 FALSE //ENDIF //ENDIF mex4dead_s3flag = 1 mex4_s3flag = 1 REMOVE_BLIP mex4_s3blip ENDIF ENDIF ELSE IF NOT IS_CHAR_DEAD mex4_s3 SET_CHAR_PROOFS mex4_s3 FALSE FALSE FALSE FALSE FALSE ENDIF ENDIF ENDIF IF mex4_s3flag = 1 IF DOES_OBJECT_EXIST crane_s3 GET_OBJECT_HEADING crane_s3 train_s3heading IF NOT IS_CHAR_DEAD mex4_s3 SET_CHAR_HEADING mex4_s3 train_s3heading ENDIF ENDIF IF NOT IS_CHAR_DEAD mex4_s3 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer mex4_s3 50.0 50.0 FALSE REMOVE_CHAR_ELEGANTLY mex4_s3 mex4_s3flag = 2 ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////// IF mex1dead_s3flag = 0 IF IS_CHAR_DEAD mex1_s3 mex1dead_s3flag = 1 mexdead_s3counter++ IF DOES_BLIP_EXIST mex1_s3blip REMOVE_BLIP mex1_s3blip ENDIF ENDIF ENDIF IF mex2dead_s3flag = 0 IF IS_CHAR_DEAD mex2_s3 mex2dead_s3flag = 1 mexdead_s3counter++ IF DOES_BLIP_EXIST mex2_s3blip REMOVE_BLIP mex2_s3blip ENDIF ENDIF ENDIF IF mex3dead_s3flag = 0 IF IS_CHAR_DEAD mex3_s3 mex3dead_s3flag = 1 mexdead_s3counter++ IF DOES_BLIP_EXIST mex3_s3blip REMOVE_BLIP mex3_s3blip ENDIF ENDIF ENDIF IF mex4dead_s3flag = 0 IF IS_CHAR_DEAD mex4_s3 mex4dead_s3flag = 1 mexdead_s3counter++ IF DOES_BLIP_EXIST mex4_s3blip REMOVE_BLIP mex4_s3blip ENDIF ENDIF ENDIF //Explosive car IF explode_s3flag = 0 IF NOT IS_CAR_DEAD othercar_s3 IF HAS_CAR_BEEN_DAMAGED_BY_CAR othercar_s3 train_s3 EXPLODE_CAR othercar_s3 explode_s3flag = 1 ENDIF ENDIF ENDIF IF explode_s3flag = 1 MARK_CAR_AS_NO_LONGER_NEEDED othercar_s3 explode_s3flag = 2 ENDIF //////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////// Chase //////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////// //player passes mission if they are all taken out IF mex1dead_s3flag = 1 IF mex2dead_s3flag = 1 IF mex3dead_s3flag = 1 IF mex4dead_s3flag = 1 IF NOT IS_CHAR_DEAD big_smoke IF IS_GROUP_MEMBER big_smoke Players_Group ADD_BLIP_FOR_COORD 2061.68 -1694.71 12.554 smokehouse_s3blip locatesmoke_s3flag = 1 missionplaying_s3flag = 1 progressaudio_s3flag = 0 handlingudio_s3flag = 0 getsmoke_s3flag = 1 ELSE getsmoke_s3flag = 2 PRINT_NOW SMK3_18 5000 1 //~s~You left ~b~Smoke ~s~behind go get him! ENDIF ENDIF SET_RAILTRACK_RESISTANCE_MULT -1.0 MARK_CHAR_AS_NO_LONGER_NEEDED mex1_s3 MARK_CHAR_AS_NO_LONGER_NEEDED mex2_s3 MARK_CHAR_AS_NO_LONGER_NEEDED mex3_s3 MARK_CHAR_AS_NO_LONGER_NEEDED mex4_s3 MARK_MODEL_AS_NO_LONGER_NEEDED LSV1 MARK_MODEL_AS_NO_LONGER_NEEDED LSV2 MARK_MODEL_AS_NO_LONGER_NEEDED LSV3 MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED STREAK MARK_MODEL_AS_NO_LONGER_NEEDED STREAKC MARK_MISSION_TRAIN_AS_NO_LONGER_NEEDED train_s3 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 SWITCH_ROADS_ON 2261.14 -1141.45 18.0 2308.19 -1156.38 35.0 SWITCH_ROADS_ON 2270.69 -1391.75 20.28 2315.81 -1375.58 26.88 SWITCH_ROADS_ON 2268.75 -1390.8 20.86 2330.03 -1375.53 23.10 SWITCH_ROADS_ON 2257.3 -1491.95 20.63 2299.7 -1477.32 26.12 SWITCH_ROADS_ON 2235.25 -1656.59 12.68 2176.75 -1629.89 15.0 SWITCH_ROADS_ON 2221.43 -1721.07 10.09 2174.01 -172.72 15.73 SWITCH_ROADS_ON 2234.09 -1723.3 14.0 2178.22 -1742.47 10.0 SWITCH_ROADS_ON 2261.14 -1141.45 18.0 2308.19 -1156.38 35.0 SWITCH_ROADS_ON 1956.91 -1936.01 10.07 1965.61 -1978.99 14.45 SWITCH_ROADS_ON 2181.3 -1892.0 10.0 2222.36 -1897.71 15.0 DISPLAY_RADAR 3 // PATHING ON smoke_s3flag = 3 ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////// Mission passed //////////////////////////////////////////////////// Mission failed //Smoke died IF IS_CHAR_DEAD big_smoke PRINT_NOW SMK3_21 5000 1 //~r~Smoke died! GOTO mission_smoke3_failed ENDIF //out of range IF smoke_s3flag = 2 IF speedlimit_s3flag = 0 x = 320.0 y = 320.0 ELSE x = 200.0 y = 200.0 ENDIF IF NOT IS_CAR_DEAD train_s3 IF NOT IS_CAR_ON_SCREEN train_s3 IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer train_s3 x y FALSE IF NOT IS_CHAR_DEAD mex1_s3 OR NOT IS_CHAR_DEAD mex2_s3 OR NOT IS_CHAR_DEAD mex3_s3 OR NOT IS_CHAR_DEAD mex4_s3 SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL PLAYER1 OFF ///////////// GET_AREA_VISIBLE smoke3_area IF NOT smoke3_area = 0 DO_FADE 250 FADE_OUT IF NOT IS_CHAR_DEAD big_smoke SET_CHAR_PROOFS big_smoke TRUE TRUE TRUE TRUE TRUE ENDIF WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD big_smoke SET_AREA_VISIBLE 0 FREEZE_CHAR_POSITION scplayer TRUE GET_CHAR_COORDINATES big_smoke x y z SET_CHAR_PROOFS big_smoke TRUE TRUE TRUE TRUE TRUE LOAD_SCENE x y z DO_FADE 250 FADE_IN ENDIF ENDIF ///////////// IF NOT IS_CHAR_DEAD big_smoke missionplaying_s3flag = 1 SET_CAMERA_IN_FRONT_OF_CHAR big_smoke TASK_WANDER_STANDARD big_smoke GET_CHAR_COORDINATES big_smoke x y z CLEAR_AREA x y 100.0 100.0 FALSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 ENDIF LOAD_MISSION_AUDIO 2 SOUND_SMO3_MC //We just had to follow the damn train, CJ! WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE PRINT_NOW ( SMO3_MC ) 4000 1 PLAY_MISSION_AUDIO 2 WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 ENDWHILE CLEAR_PRINTS CLEAR_MISSION_AUDIO 2 //////////////////// IF NOT smoke3_area = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE smoke3_area FREEZE_CHAR_POSITION scplayer FALSE GET_CHAR_COORDINATES scplayer x y z LOAD_SCENE x y z DO_FADE 250 FADE_IN ENDIF //////////////////// SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER DELETE_CHAR big_smoke PRINT_NOW SMK3_13 5000 1 GOTO mission_smoke3_failed ENDIF ENDIF ENDIF ENDIF ENDIF //get to certain destination IF smoke_s3flag = 2 IF NOT IS_CAR_DEAD train_s3 IF LOCATE_CAR_2D train_s3 2790.52 223.63 15.0 15.0 FALSE SET_PLAYER_CONTROL PLAYER1 OFF SWITCH_WIDESCREEN ON SET_TRAIN_SPEED train_s3 20.0 SET_TRAIN_CRUISE_SPEED train_s3 20.0 SET_FIXED_CAMERA_POSITION 2796.8391 222.9677 10.7646 0.0 0.0 0.0 POINT_CAMERA_AT_CAR train_s3 FIXED JUMP_CUT IF IS_CHAR_SITTING_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car SET_CAR_COORDINATES car 2814.828 154.135 17.2 SET_CAR_HEADING car 9.0 SET_CAR_CRUISE_SPEED car 0.0 ELSE SET_CHAR_COORDINATES scplayer 2814.828 154.135 17.2 SET_CHAR_HEADING scplayer 9.0 ENDIF WAIT 3000 RESTORE_CAMERA_JUMPCUT WAIT 0 missionplaying_s3flag = 1 IF NOT IS_CHAR_DEAD big_smoke SET_CAMERA_IN_FRONT_OF_CHAR big_smoke TASK_WANDER_STANDARD big_smoke GET_CHAR_COORDINATES big_smoke x y z ENDIF CLEAR_AREA x y 100.0 100.0 FALSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SMO3_MC //We just had to follow the damn train, CJ! WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE PRINT_NOW ( SMO3_MC ) 4000 1 PLAY_MISSION_AUDIO 2 WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 ENDWHILE CLEAR_PRINTS CLEAR_MISSION_AUDIO 2 SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER DELETE_CHAR big_smoke PRINT_NOW SMK3_20 10000 1 //~r~They got away! GOTO mission_smoke3_failed ENDIF ENDIF ENDIF //Smoke Dialogue IF missionplaying_s3flag = 0 IF IS_GROUP_MEMBER big_smoke Players_Group IF IS_CHAR_SITTING_IN_ANY_CAR big_smoke IF IS_CHAR_SITTING_IN_ANY_CAR scplayer GOSUB process_audio_s3 //play mission audio IF progressaudio_s3flag = 0 IF handlingudio_s3flag = 0 audio_label_s3 = SOUND_SMO3_CA //Follow that train! $input_text_s3 = SMO3_CA //Follow that train! GOSUB load_audio_s3 TIMERB = 0 ENDIF ENDIF IF progressaudio_s3flag = 1 IF handlingudio_s3flag = 0 IF TIMERB > 4000 audio_label_s3 = SOUND_SMO3_EB //Get me close, CJ, I'm gonnna cap those mothers! $input_text_s3 = SMO3_EB //Get me close, CJ, I'm gonnna cap those mothers! GOSUB load_audio_s3 TIMERB = 0 ENDIF ENDIF ENDIF IF progressaudio_s3flag = 2 IF handlingudio_s3flag = 0 IF NOT IS_CAR_DEAD train_s3 IF LOCATE_CHAR_ANY_MEANS_CAR_2D big_smoke train_s3 50.0 50.0 FALSE audio_label_s3 = SOUND_SMO3_EA //Pull alongside, I can get a shot! $input_text_s3 = SMO3_EA //Pull alongside, I can get a shot! infotext_s3flag = 1 GOSUB load_audio_s3 ENDIF ENDIF ENDIF ENDIF IF progressaudio_s3flag = 3 IF handlingudio_s3flag = 0 IF NOT IS_CAR_DEAD opptrain_s3 IF LOCATE_CHAR_ANY_MEANS_CAR_2D big_smoke opptrain_s3 165.0.0 165.0 FALSE audio_label_s3 = SOUND_SMO3_FA //Holy fuck! On-coming train $input_text_s3 = SMO3_FA //Holy fuck! On-coming train GOSUB load_audio_s3 ENDIF ENDIF ENDIF ENDIF IF progressaudio_s3flag = 4 IF handlingudio_s3flag = 0 IF LOCATE_CHAR_ANY_MEANS_2D big_smoke 2180.22 -689.43 60.0 60.0 FALSE audio_label_s3 = SOUND_SMO3_HA //Take the high road on the right, CJ! $input_text_s3 = SMO3_HA //Take the high road on the right, CJ! GOSUB load_audio_s3 ENDIF ENDIF ENDIF IF progressaudio_s3flag = 5 IF handlingudio_s3flag = 0 IF NOT IS_CAR_DEAD opptrain_s3 IF LOCATE_CHAR_ANY_MEANS_CAR_2D big_smoke opptrain_s3 100.0 100.0 FALSE audio_label_s3 = SOUND_SMO3_FC //Look-the-fuck-out – TRAIN! $input_text_s3 = SMO3_FC //Look-the-fuck-out – TRAIN! GOSUB load_audio_s3 TIMERB = 0 ENDIF ENDIF ENDIF ENDIF IF progressaudio_s3flag = 6 IF handlingudio_s3flag = 0 IF TIMERB > 11000 audio_label_s3 = SOUND_SMO3_EC //Match their speed and I’ll ice those fools! $input_text_s3 = SMO3_EC //Match their speed and I’ll ice those fools! IF DOES_OBJECT_EXIST barrier_s3 IF NOT IS_OBJECT_ON_SCREEN barrier_s3 DELETE_OBJECT barrier_s3 ENDIF ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED imy_track_barrier IF NOT IS_CHAR_DEAD big_smoke IF mexdead_s3counter < 3 SET_CHAR_ACCURACY big_smoke 85 ENDIF ENDIF GOSUB load_audio_s3 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF smoke_s3flag = 3 IF getsmoke_s3flag = 1 IF audiowayback_s3flag = 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SMO3_PC //Let’s hightail it back to mine before the cops show! MARK_OBJECT_AS_NO_LONGER_NEEDED barrier_s3 MARK_MODEL_AS_NO_LONGER_NEEDED imy_track_barrier audiowayback_s3flag = 1 ENDIF IF audiowayback_s3flag = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW ( SMO3_PC ) 4000 1 PLAY_MISSION_AUDIO 1 audiowayback_s3flag = 2 ENDIF ENDIF IF audiowayback_s3flag = 2 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 audiowayback_s3flag = 3 TIMERB = 0 ENDIF ENDIF IF audiowayback_s3flag = 3 IF TIMERB > 500 PRINT_NOW SMK3_22 6000 1 //~s~Drive Big Smoke back to his ~y~house~s~. TIMERB = 0 audiowayback_s3flag = 4 ENDIF ENDIF IF NOT IS_CHAR_DEAD big_smoke IF audiowayback_s3flag = 4 IF IS_GROUP_MEMBER big_smoke Players_Group IF IS_CHAR_SITTING_IN_ANY_CAR big_smoke IF IS_CHAR_SITTING_IN_ANY_CAR scplayer GOSUB process_audio_s3 //play mission audio IF progressaudio_s3flag = 0 IF handlingudio_s3flag = 0 IF TIMERB > 7000 audio_label_s3 = SOUND_SMO3_RA //Was it always like this? $input_text_s3 = SMO3_RA //Was it always like this? GOSUB load_audio_s3 TIMERB = 0 ENDIF ENDIF ENDIF IF progressaudio_s3flag = 1 IF handlingudio_s3flag = 0 audio_label_s3 = SOUND_SMO3_RB //Was what? $input_text_s3 = SMO3_RB //Was what? GOSUB load_audio_s3 ENDIF ENDIF IF progressaudio_s3flag = 2 IF handlingudio_s3flag = 0 audio_label_s3 = SOUND_SMO3_RC //Always fucked up around here. Or is it because of the drugs? $input_text_s3 = SMO3_RC //Always fucked up around here. Or is it because of the drugs? GOSUB load_audio_s3 ENDIF ENDIF IF progressaudio_s3flag = 3 IF handlingudio_s3flag = 0 audio_label_s3 = SOUND_SMO3_RD //What do you think? $input_text_s3 = SMO3_RD //What do you think? GOSUB load_audio_s3 ENDIF ENDIF IF progressaudio_s3flag = 4 IF handlingudio_s3flag = 0 audio_label_s3 = SOUND_SMO3_RE //I don’t know. That’s why I’m asking you. $input_text_s3 = SMO3_RE //I don’t know. That’s why I’m asking you. GOSUB load_audio_s3 ENDIF ENDIF IF progressaudio_s3flag = 5 IF handlingudio_s3flag = 0 audio_label_s3 = SOUND_SMO3_RF //Don’t ask a wise man, friend. Ask a fool. $input_text_s3 = SMO3_RF //Don’t ask a wise man, friend. Ask a fool. GOSUB load_audio_s3 ENDIF ENDIF IF progressaudio_s3flag = 6 IF handlingudio_s3flag = 0 audio_label_s3 = SOUND_SMO3_RG //That’s what I was doing. $input_text_s3 = SMO3_RG //That’s what I was doing. GOSUB load_audio_s3 ENDIF ENDIF IF progressaudio_s3flag = 7 IF handlingudio_s3flag = 0 audio_label_s3 = SOUND_SMO3_RH //Well, if you’re going to make it personal, I ain’t speaking no more. $input_text_s3 = SMO3_RH //Well, if you’re going to make it personal, I ain’t speaking no more. GOSUB load_audio_s3 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF locatesmoke_s3flag = 1 IF NOT IS_CHAR_DEAD big_smoke IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2061.68 -1694.71 4.0 4.0 TRUE IF LOCATE_CHAR_ANY_MEANS_2D big_smoke 2061.68 -1694.71 4.0 4.0 FALSE SET_PLAYER_CONTROL PLAYER1 OFF DO_FADE 1000 FADE_OUT SWITCH_WIDESCREEN ON audiowayback_s3flag = 5 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED IF NOT IS_CHAR_DEAD big_smoke REMOVE_CHAR_FROM_GROUP big_smoke CLEAR_CHAR_TASKS_IMMEDIATELY big_smoke SET_CURRENT_CHAR_WEAPON big_smoke WEAPONTYPE_UNARMED ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2060.3254 -1694.8049 12.5547 SET_CHAR_HEADING scplayer 91.3046 ELSE SET_CHAR_COORDINATES scplayer 2060.3254 -1694.8049 12.5547 SET_CHAR_HEADING scplayer 91.3046 ENDIF IF IS_CHAR_IN_ANY_CAR big_smoke WARP_CHAR_FROM_CAR_TO_COORD big_smoke 2057.75 -1694.79 12.554 SET_CHAR_HEADING big_smoke 273.188 ELSE SET_CHAR_COORDINATES big_smoke 2057.75 -1694.79 12.554 SET_CHAR_HEADING big_smoke 273.188 ENDIF CLEAR_AREA 2057.75 -1694.79 100.0 100.0 TRUE IF NOT IS_CAR_DEAD bike_s3 SET_CAR_COORDINATES bike_s3 2060.3 -1697.975 9.0 SET_CAR_HEADING bike_s3 88.04 ENDIF REQUEST_ANIMATION GANGS LOAD_MISSION_AUDIO 1 SOUND_SMO3_SA //You better clear out, CJ, LOAD_MISSION_AUDIO 2 SOUND_SMO3_SB //I don’t want those CRASH fools getting their claws into you. LOAD_ALL_MODELS_NOW WHILE NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 OR NOT HAS_ANIMATION_LOADED GANGS WAIT 0 ENDWHILE smoke_s3flag = 4 ENDIF ENDIF ENDIF ENDIF IF IS_CHAR_DEAD big_smoke PRINT_NOW SMK3_21 5000 1 //~r~Smoke died! GOTO mission_smoke3_failed ENDIF ENDIF ENDIF IF smoke_s3flag = 4 SET_FIXED_CAMERA_POSITION 2061.8142 -1692.7729 13.1148 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2061.0894 -1693.4531 13.2238 JUMP_CUT DO_FADE 500 FADE_IN IF NOT IS_CHAR_DEAD big_smoke TASK_PLAY_ANIM big_smoke prtial_gngtlkC GANGS 4.0 FALSE FALSE FALSE FALSE -1 PLAY_MISSION_AUDIO 1 //You better clear out, CJ, START_CHAR_FACIAL_TALK big_smoke 10000 PRINT_NOW SMO3_SA 4000 1 //You better clear out, CJ, ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SMO3_SC //Alright, homie. You be careful with those cats. PLAY_MISSION_AUDIO 2 //I don’t want those CRASH fools getting their claws into you. PRINT_NOW SMO3_SB 4000 1 //I don’t want those CRASH fools getting their claws into you. IF NOT IS_CHAR_DEAD big_smoke TASK_PLAY_ANIM big_smoke IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD big_smoke CLEAR_CHAR_TASKS big_smoke STOP_CHAR_FACIAL_TALK big_smoke ENDIF CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS LOAD_MISSION_AUDIO 2 SOUND_SMO3_SD //I'll see you later. SET_FIXED_CAMERA_POSITION 2055.8511 -1692.6440 14.0837 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2056.5813 -1693.3239 14.0171 JUMP_CUT WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 //Alright, homie. You be careful with those cats. PRINT_NOW SMO3_SC 5000 1 TASK_PLAY_ANIM scplayer IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_PRINTS WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 2 //I don’t want those CRASH fools getting their claws into you. PRINT_NOW SMO3_SD 5000 1 //I’ll see you later. WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 ENDWHILE DO_FADE 1500 FADE_OUT IF NOT IS_CHAR_DEAD big_smoke TASK_GO_STRAIGHT_TO_COORD big_smoke 2058.027 -1697.166 13.55 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD scplayer 2072.723 -1694.359 13.55 PEDMOVE_WALK -1 ENDIF WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DELETE_CHAR big_smoke CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 2072.723 -1694.359 12.54 SET_CHAR_HEADING scplayer 272.637 SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER DO_FADE 500 FADE_IN CLEAR_PRINTS GOTO mission_smoke3_passed ENDIF // blip swapping for chase and the way back IF smoke_s3flag = 2 OR smoke_s3flag = 3 IF NOT IS_CHAR_DEAD big_smoke IF smokegroupchase_s3flag = 0 IF NOT IS_GROUP_MEMBER big_smoke Players_Group PRINT_NOW SMK3_18 5000 1 //~s~You left ~b~Smoke ~s~behind go get him! ADD_BLIP_FOR_CHAR big_smoke trainstation_s3blip SET_BLIP_AS_FRIENDLY trainstation_s3blip TRUE IF smoke_s3flag = 2 REMOVE_BLIP mex1_s3blip REMOVE_BLIP mex2_s3blip REMOVE_BLIP mex3_s3blip REMOVE_BLIP mex4_s3blip ENDIF IF smoke_s3flag = 3 REMOVE_BLIP smokehouse_s3blip locatesmoke_s3flag = 0 ENDIF smokegroupchase_s3flag = 1 ENDIF ENDIF IF smokegroupchase_s3flag = 1 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer big_smoke 10.0 10.0 8.0 FALSE IF IS_CHAR_ON_SCREEN big_smoke IF NOT IS_GROUP_MEMBER big_smoke Players_Group SET_GROUP_MEMBER Players_Group big_smoke SET_GROUP_SEPARATION_RANGE Players_Group 30.0 ENDIF REMOVE_BLIP trainstation_s3blip IF smoke_s3flag = 2 IF NOT IS_CHAR_DEAD mex1_s3 ADD_BLIP_FOR_CHAR mex1_s3 mex1_s3blip ENDIF IF NOT IS_CHAR_DEAD mex2_s3 ADD_BLIP_FOR_CHAR mex2_s3 mex2_s3blip ENDIF IF NOT IS_CHAR_DEAD mex3_s3 ADD_BLIP_FOR_CHAR mex3_s3 mex3_s3blip ENDIF IF NOT IS_CHAR_DEAD mex4_s3 ADD_BLIP_FOR_CHAR mex4_s3 mex4_s3blip ENDIF PRINT_NOW SMK3_3 5000 1//~s~Chase down the ~r~Vagos gang members ~s~and take them out! ENDIF IF smoke_s3flag = 3 IF getsmoke_s3flag = 1 PRINT_NOW SMK3_22 5000 1 //~s~Drive Big Smoke back to his ~y~house~s~. ADD_BLIP_FOR_COORD 2061.68 -1694.71 12.554 smokehouse_s3blip locatesmoke_s3flag = 1 ENDIF ENDIF IF getsmoke_s3flag = 2 IF smoke_s3flag = 3 ADD_BLIP_FOR_COORD 2061.68 -1694.71 12.554 smokehouse_s3blip locatesmoke_s3flag = 1 missionplaying_s3flag = 1 progressaudio_s3flag = 0 handlingudio_s3flag = 0 getsmoke_s3flag = 1 ENDIF ENDIF smokegroupchase_s3flag = 0 ENDIF ENDIF ENDIF ENDIF ENDIF GOTO smoke4_main_mission_loop //////////////////////////////////////////////////////// SEQUENCES load_audio_s3: IF handlingudio_s3flag = 0 LOAD_MISSION_AUDIO 1 audio_label_s3 $text_label_s3 = $input_text_s3 handlingudio_s3flag = 1 ENDIF RETURN process_audio_s3: IF handlingudio_s3flag = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW $text_label_s3 4000 1 //Dummy message" PLAY_MISSION_AUDIO 1 handlingudio_s3flag = 2 ENDIF ENDIF IF handlingudio_s3flag = 2 IF HAS_MISSION_AUDIO_FINISHED 1 progressaudio_s3flag++ CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS IF infotext_s3flag = 1 PRINT_NOW SMK3_25 6000 1 //~s~Keep up with the front carriage of the train so Big Smoke can shoot the ~r~Vagos gang members~s~. infotext_s3flag = 2 ENDIF handlingudio_s3flag = 0 ENDIF ENDIF RETURN jump_s3label: OPEN_SEQUENCE_TASK jump_s3seq TASK_JUMP -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 1799.49 -1953.73 12.23 PEDMOVE_RUN 50000 CLOSE_SEQUENCE_TASK jump_s3seq PERFORM_SEQUENCE_TASK enemy_s3 jump_s3seq CLEAR_SEQUENCE_TASK jump_s3seq RETURN ontopoftrain_labels3: OPEN_SEQUENCE_TASK ontopoftrain_s3seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_TOGGLE_PED_THREAT_SCANNER -1 TRUE FALSE FALSE CLOSE_SEQUENCE_TASK ontopoftrain_s3seq PERFORM_SEQUENCE_TASK enemy_s3 ontopoftrain_s3seq CLEAR_SEQUENCE_TASK ontopoftrain_s3seq RETURN killsmoke_s3label: OPEN_SEQUENCE_TASK killsmoke_s3seq TASK_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD big_smoke TASK_KILL_CHAR_ON_FOOT -1 big_smoke ENDIF CLOSE_SEQUENCE_TASK killsmoke_s3seq PERFORM_SEQUENCE_TASK enemy_s3 killsmoke_s3seq CLEAR_SEQUENCE_TASK killsmoke_s3seq RETURN // **************************************** Mission smoke3 failed ************************ mission_smoke3_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // **************************************** mission smoke3 passed ************************* mission_smoke3_passed: flag_smoke_mission_counter ++ REGISTER_MISSION_PASSED ( SMOKE_3 ) PLAYER_MADE_PROGRESS 1 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 5 5000 1 //"Mission Passed!" PLAY_MISSION_PASSED_TUNE 1 AWARD_PLAYER_MISSION_RESPECT 5//amount of respect CLEAR_WANTED_LEVEL player1 RETURN // ********************************** mission cleanup ************************************ mission_cleanup_smoke3: DISPLAY_RADAR 3 // PATHING ON flag_player_on_mission = 0 RESTORE_CAMERA_JUMPCUT //SET_PLAYER_IN_CAR_CAMERA_MODE ZOOM_TWO MARK_OBJECT_AS_NO_LONGER_NEEDED barrier_s3 MARK_OBJECT_AS_NO_LONGER_NEEDED crane_s3 MARK_MODEL_AS_NO_LONGER_NEEDED imy_track_barrier SET_RAILTRACK_RESISTANCE_MULT -1.0 IF IS_PLAYER_PLAYING PLAYER1 SET_PLAYER_CONTROL PLAYER1 ON SWITCH_WIDESCREEN OFF ENDIF IF NOT IS_CAR_DEAD bike_s3 SET_CAN_BURST_CAR_TYRES bike_s3 TRUE ENDIF MARK_MISSION_TRAINS_AS_NO_LONGER_NEEDED SWITCH_RANDOM_TRAINS ON SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 REMOVE_CHAR_ELEGANTLY mex1_s3 REMOVE_CHAR_ELEGANTLY mex2_s3 REMOVE_CHAR_ELEGANTLY mex3_s3 REMOVE_CHAR_ELEGANTLY mex4_s3 REMOVE_CHAR_ELEGANTLY big_smoke SWITCH_ROADS_ON 2261.14 -1141.45 18.0 2308.19 -1156.38 35.0 SWITCH_ROADS_ON 2270.69 -1391.75 20.28 2315.81 -1375.58 26.88 SWITCH_ROADS_ON 2268.75 -1390.8 20.86 2330.03 -1375.53 23.10 SWITCH_ROADS_ON 2257.3 -1491.95 20.63 2299.7 -1477.32 26.12 SWITCH_ROADS_ON 2235.25 -1656.59 12.68 2176.75 -1629.89 15.0 SWITCH_ROADS_ON 2221.43 -1721.07 10.09 2174.01 -172.72 15.73 SWITCH_ROADS_ON 2234.09 -1723.3 14.0 2178.22 -1742.47 10.0 SWITCH_ROADS_ON 2261.14 -1141.45 18.0 2308.19 -1156.38 35.0 SWITCH_ROADS_ON 1956.91 -1936.01 10.07 1965.61 -1978.99 14.45 SWITCH_ROADS_ON 2181.3 -1892.0 10.0 2222.36 -1897.71 15.0 MARK_MODEL_AS_NO_LONGER_NEEDED LSV1 MARK_MODEL_AS_NO_LONGER_NEEDED LSV2 MARK_MODEL_AS_NO_LONGER_NEEDED LSV3 MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ MARK_MODEL_AS_NO_LONGER_NEEDED STREAK MARK_MODEL_AS_NO_LONGER_NEEDED STREAKC MARK_MODEL_AS_NO_LONGER_NEEDED IMMMCRAN MARK_MODEL_AS_NO_LONGER_NEEDED ESPERANT MARK_MODEL_AS_NO_LONGER_NEEDED GLENDALE MARK_MODEL_AS_NO_LONGER_NEEDED TEC9 MARK_MODEL_AS_NO_LONGER_NEEDED TRNTRK8_LAS UNLOAD_SPECIAL_CHARACTER 1 REMOVE_ANIMATION TRAIN REMOVE_ANIMATION GANGS REMOVE_BLIP trainstation_s3blip REMOVE_BLIP mex1_s3blip REMOVE_BLIP mex2_s3blip REMOVE_BLIP mex3_s3blip REMOVE_BLIP mex4_s3blip REMOVE_BLIP smokecar_s3blip REMOVE_BLIP smokehouse_s3blip REMOVE_BLIP bike_s3blip IF NOT IS_CAR_DEAD train_s3 SET_TRAIN_FORCED_TO_SLOW_DOWN train_s3 TRUE ENDIF RESET_VEHICLE_CAMERA_TWEAK IF NOT IS_CAR_DEAD bike_s3 SET_CAR_HEALTH bike_s3 1000 SET_CAN_BURST_CAR_TYRES bike_s3 TRUE SET_CAR_PROOFS bike_s3 FALSE FALSE FALSE FALSE FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF RELEASE_WEATHER IF NOT IS_CAR_DEAD smokecar_s3 SET_CAR_HEALTH smokecar_s3 1000 SET_CAN_BURST_CAR_TYRES smokecar_s3 TRUE ENDIF MARK_CAR_AS_NO_LONGER_NEEDED bike_s3 MARK_CAR_AS_NO_LONGER_NEEDED smokecar_s3 GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED RETURN } ///////////////////////////////////////////////////// Speed of the train //IF smoke_s3flag = 2 // IF NOT IS_CAR_DEAD train_s3 // // IF trainspeed_s3flag = 0 // IF LOCATE_CAR_2D train_s3 2121.57 -1955.66 10.0 10.0 FALSE // trainspeed_s3flag = 1 // ENDIF // ENDIF // // IF trainspeed_s3flag = 1 // IF LOCATE_CAR_2D train_s3 2200.74 -1817.98 10.0 10.0 FALSE // trainspeed_s3flag = 2 // ENDIF // ENDIF // // IF trainspeed_s3flag = 2 // IF LOCATE_CAR_2D train_s3 2287.55 -1387.63 10.0 10.0 FALSE // trainspeed_s3flag = 3 // ENDIF // ENDIF // // IF trainspeed_s3flag = 0 // IF IS_PLAYER_PLAYING player1 // GET_CHAR_COORDINATES scplayer playercarx_s3 playercary_s3 playercarz_s3 // ENDIF // // GET_CAR_COORDINATES train_s3 trainx_s3 trainy_s3 trainz_s3 // GET_DISTANCE_BETWEEN_COORDS_2D playercarx_s3 playercary_s3 trainx_s3 trainy_s3 distance_s3 // trainspeed_s3 = 3000.0 / distance_s3 //< THIS WILL SPEED THE CAR UP IF IT GETS CLOSER (INCREASE NUMBER TO MAKE CAR GO FASTER) // // IF trainspeed_s3 > 25.0 // trainspeed_s3 = 25.0 // ENDIF // // IF trainspeed_s3 < 12.0 // trainspeed_s3 = 12.0 // ENDIF // // SET_TRAIN_CRUISE_SPEED train_s3 trainspeed_s3 // // ENDIF // // // IF trainspeed_s3flag = 1 // IF IS_PLAYER_PLAYING player1 // GET_CHAR_COORDINATES scplayer playercarx_s3 playercary_s3 playercarz_s3 // ENDIF // // GET_CAR_COORDINATES train_s3 trainx_s3 trainy_s3 trainz_s3 // GET_DISTANCE_BETWEEN_COORDS_2D playercarx_s3 playercary_s3 trainx_s3 trainy_s3 distance_s3 // trainspeed_s3 = 1000.0 / distance_s3 //< THIS WILL SPEED THE CAR UP IF IT GETS CLOSER (INCREASE NUMBER TO MAKE CAR GO FASTER) // // IF trainspeed_s3 > 25.0 // trainspeed_s3 = 25.0 // ENDIF // // IF trainspeed_s3 < 10.0 // trainspeed_s3 = 10.0 // ENDIF // // SET_TRAIN_CRUISE_SPEED train_s3 trainspeed_s3 // // ENDIF // // IF trainspeed_s3flag = 2 // IF IS_PLAYER_PLAYING player1 // GET_CHAR_COORDINATES scplayer playercarx_s3 playercary_s3 playercarz_s3 // ENDIF // // GET_CAR_COORDINATES train_s3 trainx_s3 trainy_s3 trainz_s3 // GET_DISTANCE_BETWEEN_COORDS_2D playercarx_s3 playercary_s3 trainx_s3 trainy_s3 distance_s3 // trainspeed_s3 = 1000.0 / distance_s3 //< THIS WILL SPEED THE CAR UP IF IT GETS CLOSER (INCREASE NUMBER TO MAKE CAR GO FASTER) // // IF trainspeed_s3 > 30.0 // trainspeed_s3 = 30.0 // ENDIF // // IF trainspeed_s3 < 12.0 // trainspeed_s3 = 12.0 // ENDIF // // SET_TRAIN_CRUISE_SPEED train_s3 trainspeed_s3 // // ENDIF // // IF trainspeed_s3flag = 3 // IF IS_PLAYER_PLAYING player1 // GET_CHAR_COORDINATES scplayer playercarx_s3 playercary_s3 playercarz_s3 // ENDIF // // GET_CAR_COORDINATES train_s3 trainx_s3 trainy_s3 trainz_s3 // GET_DISTANCE_BETWEEN_COORDS_2D playercarx_s3 playercary_s3 trainx_s3 trainy_s3 distance_s3 // trainspeed_s3 = 1000.0 / distance_s3 //< THIS WILL SPEED THE CAR UP IF IT GETS CLOSER (INCREASE NUMBER TO MAKE CAR GO FASTER) // // IF trainspeed_s3 > 30.0 //35.0 // trainspeed_s3 = 30.0 //35.0 // ENDIF // // IF trainspeed_s3 < 12.0 // trainspeed_s3 = 12.0 // ENDIF // // SET_TRAIN_CRUISE_SPEED train_s3 trainspeed_s3 // // ENDIF // //////////////////////////////////////// Player loses Smoke during the chase //IF smoke_s3flag = 2 // // IF NOT IS_CHAR_DEAD big_smoke // // IF smokegroupchase_s3flag = 0 // IF NOT IS_GROUP_MEMBER big_smoke Players_Group // PRINT SMK3_18 5000 1 //You left Smoke behind go get him if you wish the extra firepower will help! // ADD_BLIP_FOR_CHAR big_smoke trainstation_s3blip // SET_BLIP_AS_FRIENDLY trainstation_s3blip TRUE // smokegroupchase_s3flag = 1 // ENDIF // ENDIF // // IF smokegroupchase_s3flag = 1 // IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer big_smoke 10.0 10.0 8.0 FALSE // IF IS_CHAR_ON_SCREEN big_smoke // IF NOT IS_GROUP_MEMBER big_smoke Players_Group // SET_GROUP_MEMBER Players_Group big_smoke // ENDIF // //REMOVE_BLIP trainstation_s3blip // smokegroupchase_s3flag = 0 // ENDIF // ENDIF // ENDIF // // ENDIF // //ENDIF // /////////////////////////////////////////////////////////////////////////////// ////speed_train_if_close_tom_player: ////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // // IF IS_PLAYER_PLAYING player1 // GET_CHAR_COORDINATES scplayer gosub_target_car_x gosub_target_car_y z // ENDIF // // GET_CAR_COORDINATES gosub_car_to_slow gosub_car_to_slow_x gosub_car_to_slow_y z // GET_DISTANCE_BETWEEN_COORDS_2D gosub_car_to_slow_x gosub_car_to_slow_y gosub_target_car_x gosub_target_car_y distance // // //gosub_car_to_slow_speed = distance + 3.0 //< THIS WILL SLOW THE CAR DOWN IF IT GETS CLOSER // gosub_car_to_slow_speed = 2000.0 / distance //< THIS WILL SPEED THE CAR UP IF IT GETS CLOSER (INCREASE NUMBER TO MAKE CAR GO FASTER) // // IF gosub_car_to_slow_speed > 50.0 // gosub_car_to_slow_speed = 50.0 // ENDIF // IF gosub_car_to_slow_speed < 15.0 // gosub_car_to_slow_speed = 15.0 // ENDIF // SET_CAR_CRUISE_SPEED gosub_car_to_slow gosub_car_to_slow_speed // /////////////////////////////////////////////////////////////////////////////// ////RETURN///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // **************************************************************************************** // //third incoming train // IF opptrain_s3flag = 6 // IF LOCATE_CAR_2D train_s3 2526.1 -281.49 20.0 20.0 FALSE // IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer 2832.86 -2.04 40.0 40.0 FALSE // CREATE_MISSION_TRAIN 11 2832.86 -2.04 28.79 TRUE opptrain_s3 // SET_TRAIN_SPEED opptrain_s3 5.0 // SET_TRAIN_CRUISE_SPEED opptrain_s3 15.0 // opptrain_s3flag = 7 // ELSE // opptrain_s3flag = 15 // ENDIF // ENDIF // ENDIF // IF opptrain_s3flag = 7 // IF NOT IS_CAR_DEAD opptrain_s3 // IF LOCATE_CAR_2D opptrain_s3 2462.77 -279.44 20.0 20.0 FALSE // SET_TRAIN_CRUISE_SPEED opptrain_s3 0.0 // opptrain_s3flag = 8 // ENDIF // ENDIF // ENDIF // IF opptrain_s3flag = 8 // IF NOT IS_CAR_DEAD opptrain_s3 // IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer opptrain_s3 40.0 40.0 FALSE // IF NOT IS_CAR_ON_SCREEN opptrain_s3 // DELETE_MISSION_TRAIN opptrain_s3 // opptrain_s3flag = 9 // ENDIF // ENDIF // ENDIF // ENDIF MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* DRUGS 1 ******************************************* // ********************************* Mission Description *********************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME smoke4 // Mission start stuff GOSUB mission_start_drugs1 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_drugs1_failed ENDIF GOSUB mission_cleanup_drugs1 MISSION_END { //////////////////////// variables for shootout // Variables for mission LVAR_INT smokecar_s4 //decision maker LVAR_INT smoke4_DM LVAR_INT smoke4duck_DM LVAR_INT people1_s4 LVAR_INT people2_s4 LVAR_INT people3_s4 LVAR_INT people4_s4 LVAR_INT people5_s4 LVAR_INT russian1_s4 LVAR_INT russian2_s4 LVAR_INT russian3_s4 LVAR_INT russian4_s4 LVAR_INT russian5_s4 LVAR_INT russian6_s4 LVAR_INT russian7_s4 LVAR_INT russian8_s4 LVAR_INT russian9_s4 LVAR_INT russian10_s4 LVAR_INT russian11_s4 LVAR_INT russian12_s4 LVAR_INT russian13_s4 LVAR_INT russian14_s4 LVAR_INT russian15_s4 LVAR_INT russian16_s4 LVAR_INT russian17_s4 LVAR_INT russian18_s4 LVAR_INT russian19_s4 LVAR_INT russian20_s4 VAR_INT smokehealth_s4 LVAR_FLOAT animtime_s4 LVAR_INT hoochie_s4 LVAR_INT visiblearea_s4 //sequences LVAR_INT run2kill_s4seq LVAR_INT runkill_s4seq LVAR_INT stayshoot_s4seq LVAR_INT stayshootnoduck_s4seq LVAR_INT smoke1_s4seq LVAR_INT smoke2_s4seq LVAR_INT smoke3_s4seq LVAR_INT smoke4_s4seq LVAR_INT smoke5_s4seq LVAR_INT smoke6_s4seq LVAR_INT smoke7_s4seq LVAR_INT smoke8_s4seq LVAR_INT sequencetask_s4 LVAR_INT runkillstay_s4seq LVAR_INT enemy_s4 enemytarget_s4 LVAR_FLOAT enemyx_s4 enemyy_s4 enemyz_s4 LVAR_FLOAT enemyx2_s4 enemyy2_s4 enemyz2_s4 //blips LVAR_INT smokecar_s4blip LVAR_INT atrium_s4blip LVAR_INT smoke_s4blip //flags LVAR_INT smoke_s4flag VAR_INT smokeshoot_s4flag LVAR_INT smokegroupstation_s4flag LVAR_INT outoffirstgroup_s4flag LVAR_INT skipcutscene_s4flag LVAR_INT russian3_s4flag LVAR_INT russian12_s4flag LVAR_INT russian7_s4flag LVAR_INT russian11_s4flag LVAR_INT russian13_s4flag LVAR_INT cutscene_s4flag //flags LVAR_INT russian8_s4flag LVAR_INT russian9_s4flag LVAR_INT russian1remove_s4flag LVAR_INT russian2remove_s4flag LVAR_INT russian3remove_s4flag LVAR_INT russian4remove_s4flag LVAR_INT russian5remove_s4flag LVAR_INT russian6remove_s4flag LVAR_INT russian7remove_s4flag LVAR_INT russian8remove_s4flag LVAR_INT russian9remove_s4flag LVAR_INT russian10remove_s4flag LVAR_INT russian11remove_s4flag LVAR_INT russian12remove_s4flag LVAR_INT russian13remove_s4flag LVAR_INT russian14remove_s4flag LVAR_INT russian15remove_s4flag LVAR_INT russian16remove_s4flag LVAR_INT russian17remove_s4flag LVAR_INT russian18remove_s4flag LVAR_INT russian19remove_s4flag LVAR_INT russian20remove_s4flag LVAR_INT text_s4flag LVAR_INT shootout_s4flag LVAR_INT russianseliminated_s3counter LVAR_INT helpshoottext_s4flag LVAR_INT warp_s4flag LVAR_INT oneoff_s4flag LVAR_INT slowdownstart_s4flag LVAR_INT stoptalk_s4flag //////////////////////// variables for on rails section LVAR_FLOAT cam_pos_X_s4 cam_pos_Y_s4 cam_pos_Z_s4 cam_look_X_s4 cam_look_Y_s4 cam_look_Z_s4 LVAR_FLOAT cam_P_acc_X_s4 cam_P_acc_Y_s4 cam_P_acc_Z_s4 cam_P_speed_X_s4 cam_P_speed_Y_s4 cam_P_speed_Z_s4 LVAR_FLOAT cam_L_acc_X_s4 cam_L_acc_Y_s4 cam_L_acc_Z_s4 cam_L_speed_X_s4 cam_L_speed_Y_s4 cam_L_speed_Z_s4 LVAR_FLOAT cam_P_Y_cap_speed cam_L_Y_cap_speed cam_L_Z_cap_speed LVAR_INT timescale_status_s4 grate_s4 barrel1_s4 barrel2_s4 barrel3_s4 barrel4_s4 barrel5_s4 LVAR_FLOAT timescale_s4 LVAR_INT camera_pos_status_s4 LVAR_INT camera_look_status_s4 LVAR_INT smokebike_s4 LVAR_INT skip_s4 LVAR_INT coach1_s4 LVAR_INT coach2_s4 LVAR_INT car1_s4 LVAR_INT car2_s4 LVAR_INT car3_s4 LVAR_INT car4_s4 LVAR_INT car5_s4 LVAR_INT car6_s4 LVAR_INT car7_s4 LVAR_INT car8_s4 LVAR_INT car9_s4 LVAR_INT car12_s4 LVAR_INT car13_s4 LVAR_INT coach3_s4 LVAR_INT driver1_s4 LVAR_INT driver2_s4 LVAR_INT driver3_s4 LVAR_INT driver4_s4 LVAR_INT driver5_s4 LVAR_INT driver6_s4 LVAR_INT driver7_s4 LVAR_INT driver8_s4 LVAR_INT driver9_s4 LVAR_INT driver12_s4 LVAR_INT driver13_s4 LVAR_INT packer_s4 LVAR_INT bike1_s4 LVAR_INT rcar1_s4 LVAR_INT rcar2_s4 LVAR_INT rcar3_s4 LVAR_INT rcar4_s4 LVAR_INT bike2_s4 LVAR_INT bike3_s4 LVAR_INT bike4_s4 LVAR_INT packerdriver_s4 LVAR_INT packerpassenger_s4 LVAR_FLOAT cam_X_pos_s4 cam_Y_pos_s4 cam_Z_pos_s4 LVAR_FLOAT cam_X_look_s4 cam_Y_look_s4 cam_Z_look_s4 LVAR_INT driverofcar_s4 LVAR_INT bike5_s4 LVAR_INT packercar2_s4 LVAR_INT packercar1_s4 VAR_INT bikehealth_s4 //blips LVAR_INT packer_s4blip LVAR_INT car1_s4blip LVAR_INT car2_s4blip LVAR_INT car3_s4blip LVAR_INT car4_s4blip LVAR_INT bike1_s4blip LVAR_INT bike2_s4blip LVAR_INT bike3_s4blip LVAR_INT bike4_s4blip LVAR_INT bike5_s4blip LVAR_INT bike6_s4blip LVAR_INT bike7_s4blip LVAR_INT bike8_s4blip LVAR_INT bike9_s4blip LVAR_INT bike10_s4blip LVAR_INT bike11_s4blip LVAR_INT bike12_s4blip LVAR_INT russian13_s4blip LVAR_INT russian14_s4blip LVAR_INT rcar3_s4blip LVAR_INT rcar4_s4blip LVAR_INT rcar1_s4blip LVAR_INT russian7_s4blip LVAR_INT russian8_s4blip LVAR_INT russian9_s4blip LVAR_INT russian10_s4blip LVAR_INT russian12_s4blip LVAR_INT russian20_s4blip //text LVAR_TEXT_LABEL $text_label_s4 LVAR_INT audio_label_s4 LVAR_TEXT_LABEL $input_text_s4 //flags LVAR_INT ambientcar_s4flag LVAR_INT firstchase_s4flag LVAR_INT notonscreen_s4flag LVAR_INT storm1_s4flag LVAR_INT gopacker_s4flag LVAR_INT bike1swap_s4flag LVAR_INT bike2swap_s4flag LVAR_INT bike3swap_s4flag LVAR_INT bike4swap_s4flag LVAR_INT bike5swap_s4flag LVAR_INT bike6swap_s4flag LVAR_INT bike7swap_s4flag LVAR_INT bike8swap_s4flag LVAR_INT car1_s4flag LVAR_INT car2_s4flag LVAR_INT car3_s4flag LVAR_INT car4_s4flag LVAR_INT car5_s4flag LVAR_INT bike1_s4flag LVAR_INT bike2_s4flag LVAR_INT bike3_s4flag LVAR_INT bike4_s4flag LVAR_INT bike5_s4flag LVAR_INT car1swap_s4flag LVAR_INT car2swap_s4flag LVAR_INT car3swap_s4flag LVAR_INT car4swap_s4flag LVAR_INT packercar1_s4flag LVAR_INT packercar2_s4flag LVAR_INT startrecording_s4flag LVAR_INT thirdchase_s4flag LVAR_INT packersmash1_s4flag LVAR_INT packersmash2_s4flag LVAR_INT packerstatus_s4flag LVAR_INT spark_s4flag LVAR_INT finalcut_s4flag LVAR_INT playershoot_s4flag LVAR_INT jumpchase_s4flag LVAR_INT finalchase_s4flag LVAR_INT grate_s4flag LVAR_INT progressaudio_s4flag LVAR_INT handlingudio_s4flag LVAR_INT getonbikecut_s4flag LVAR_INT truckaudio_s4flag LVAR_INT explodecar5_s4flag LVAR_INT explodecar6_s4flag LVAR_INT difficulty_s4flag //do not reset this flag LVAR_INT difficulty_s4value //do not reset this // **************************************** Mission Start ********************************** mission_start_drugs1: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 WAIT 0 LOAD_MISSION_TEXT SMOKE4 // ****************************************START OF CUTSCENE******************************** CLEAR_AREA 2060.0 -1694.0 50.0 50.0 TRUE FORCE_WEATHER_NOW WEATHER_SUNNY_LA REQUEST_MODEL Lae_smokecutscene WHILE NOT HAS_MODEL_LOADED Lae_smokecutscene WAIT 0 ENDWHILE LVAR_INT smokeobject_s4 CREATE_OBJECT_NO_OFFSET Lae_smokecutscene 2055.0 -1695.0 15.0 smokeobject_s4 LOAD_CUTSCENE SMOKE4A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE MARK_MODEL_AS_NO_LONGER_NEEDED Lae_smokecutscene DELETE_OBJECT smokeobject_s4 // ****************************************END OF CUTSCENE********************************** // fades the screen in SET_FADING_COLOUR 0 0 0 WAIT 500 // request models REQUEST_MODEL GLENDALE REQUEST_MODEL WFYRI REQUEST_MODEL WFYST REQUEST_MODEL MAFFA REQUEST_MODEL MAFFB LOAD_SPECIAL_CHARACTER 1 SMOKE LOAD_MISSION_AUDIO 2 SOUND_SMOX_AC //Get in the car! LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED GLENDALE OR NOT HAS_MODEL_LOADED MAFFA OR NOT HAS_MODEL_LOADED MAFFA OR NOT HAS_MODEL_LOADED WFYRI OR NOT HAS_MODEL_LOADED WFYST WAIT 0 ENDWHILE WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE // ****************************** Declare Variables Values *********************************** //////////////////////// variables for shootout //flags smoke_s4flag = 0 smokeshoot_s4flag = 0 smokegroupstation_s4flag = 0 outoffirstgroup_s4flag = 0 skipcutscene_s4flag = 0 russian3_s4flag = 0 russian12_s4flag = 0 russian7_s4flag = 0 russian11_s4flag = 0 russian13_s4flag = 0 cutscene_s4flag = 0 russian8_s4flag = 0 russian9_s4flag = 0 russian1remove_s4flag = 0 russian2remove_s4flag = 0 russian3remove_s4flag = 0 russian4remove_s4flag = 0 russian5remove_s4flag = 0 russian6remove_s4flag = 0 russian7remove_s4flag = 0 russian8remove_s4flag = 0 russian9remove_s4flag = 0 russian10remove_s4flag = 0 russian11remove_s4flag = 0 russian12remove_s4flag = 0 russian13remove_s4flag = 0 russian14remove_s4flag = 0 russian15remove_s4flag = 0 russian16remove_s4flag = 0 russian17remove_s4flag = 0 russian18remove_s4flag = 0 russian19remove_s4flag = 0 russian20remove_s4flag = 0 text_s4flag = 0 shootout_s4flag = 0 russianseliminated_s3counter = 0 helpshoottext_s4flag = 0 warp_s4flag = 0 progressaudio_s4flag = 0 handlingudio_s4flag = 0 oneoff_s4flag = 0 slowdownstart_s4flag = 0 stoptalk_s4flag = 0 //////////////////////// variables for on rails section //flags ambientcar_s4flag = 0 firstchase_s4flag = 0 notonscreen_s4flag = 0 storm1_s4flag = 0 gopacker_s4flag = 0 bike1swap_s4flag = 0 bike2swap_s4flag = 0 bike3swap_s4flag = 0 bike4swap_s4flag = 0 bike5swap_s4flag = 0 bike6swap_s4flag = 0 bike7swap_s4flag = 0 bike8swap_s4flag = 0 car1_s4flag = 0 car2_s4flag = 0 car3_s4flag = 0 car4_s4flag = 0 car5_s4flag = 0 bike1_s4flag = 0 bike2_s4flag = 0 bike3_s4flag = 0 bike4_s4flag = 0 bike5_s4flag = 0 car1swap_s4flag = 0 car2swap_s4flag = 0 car3swap_s4flag = 0 car4swap_s4flag = 0 packercar1_s4flag = 0 packercar2_s4flag = 0 startrecording_s4flag = 0 thirdchase_s4flag = 0 packersmash1_s4flag = 0 packersmash2_s4flag = 0 packerstatus_s4flag = 0 spark_s4flag = 0 finalcut_s4flag = 0 playershoot_s4flag = 0 jumpchase_s4flag = 0 finalchase_s4flag = 0 grate_s4flag = 0 getonbikecut_s4flag = 0 truckaudio_s4flag = 0 explodecar5_s4flag = 0 explodecar6_s4flag = 0 // **************************************** Mission drugs1 failed ******************************* LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY smoke4_DM LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY smoke4duck_DM ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE smoke4duck_DM EVENT_SHOT_FIRED_WHIZZED_BY TASK_SIMPLE_DUCK_WHILE_SHOTS_WHIZZING 0.0 100.0 100.0 100.0 FALSE TRUE //create smoke's car CLEAR_AREA 2077.58 -1695.929 150.0 150.0 TRUE //SET_CHAR_COORDINATES scplayer 2073.572 -1700.066 12.602 //1716.4 -1941.476 12.51 //SET_CHAR_HEADING scplayer 273.887 CUSTOM_PLATE_FOR_NEXT_CAR GLENDALE &_A2tmfK_ CREATE_CAR GLENDALE 2058.86 -1694.612 12.297 smokecar_s4 SET_RADIO_CHANNEL RS_MODERN_HIP_HOP CHANGE_CAR_COLOUR smokecar_s4 98 14 SET_CAR_HEADING smokecar_s4 271.822 SET_CAR_HEALTH smokecar_s4 1000 CREATE_CHAR_AS_PASSENGER smokecar_s4 PEDTYPE_SPECIAL SPECIAL01 0 big_smoke SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR big_smoke FALSE SET_CHAR_SIGNAL_AFTER_KILL big_smoke FALSE //SET_ANIM_GROUP_FOR_CHAR big_smoke fatman SET_CHAR_HEALTH big_smoke 500 SET_CHAR_SUFFERS_CRITICAL_HITS big_smoke FALSE SET_CHAR_NEVER_TARGETTED big_smoke TRUE SET_CHAR_DECISION_MAKER big_smoke smoke4_DM //ADD_BLIP_FOR_CAR smokecar_s4 smokecar_s4blip SET_CHAR_CANT_BE_DRAGGED_OUT big_smoke TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED big_smoke TRUE //SET_BLIP_AS_FRIENDLY smokecar_s4blip TRUE SET_MAX_FIRE_GENERATIONS 1 WARP_CHAR_INTO_CAR scplayer smokecar_s4 SET_WANTED_MULTIPLIER 0.0 SWITCH_EMERGENCY_SERVICES OFF DO_FADE 1500 FADE_IN RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF SHUT_CHAR_UP scplayer TRUE SWITCH_ROADS_OFF 1694.12 -1604.33 5.0 1805.94 -1593.12 15.0 PRINT_NOW DGS1_1 6000 1 //~s~Take Big Smoke to ~y~Downtown~s TIMERB = 0 SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_smoke TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE smoke4_main_loop: WAIT 0 //imran //VIEW_INTEGER_VARIABLE difficulty_s4value difficulty_s4value IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_drugs1_passed ENDIF IF NOT finalchase_s4flag > 7 IF IS_CHAR_DEAD big_smoke PRINT_NOW DGS1_60 7000 1 //~r~Smoke died! GOTO mission_drugs1_failed ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// Getting to Atrium //////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF shootout_s4flag = 0 IF smoke_s4flag = 11 IF smokeshoot_s4flag < 6 IF NOT IS_CHAR_IN_AREA_2D scplayer 1744.2 -1686.68 1698.34 -1616.4 FALSE IF NOT IS_CHAR_ON_SCREEN big_smoke EXPLODE_CHAR_HEAD big_smoke PRINT_NOW DGS1_3 7000 1//~r~You left Smoke alone and he died! Next time stick a bit closer! GOTO mission_drugs1_failed ENDIF ENDIF ENDIF ENDIF IF smoke_s4flag = 0 IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CAR_DEAD smokecar_s4 IF IS_CHAR_SITTING_IN_CAR scplayer smokecar_s4 IF IS_CHAR_SITTING_IN_CAR scplayer smokecar_s4 ADD_BLIP_FOR_COORD 1722.568 -1597.92 12.405 atrium_s4blip PRINT_NOW DGS1_1 10000 1 //~s~Take Big Smoke to ~y~Downtown~s~. // REMOVE_BLIP smokecar_s4blip smoke_s4flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ///////////////////////////////////////////////////////////////////////////group stuff before the atrium IF outoffirstgroup_s4flag = 0 IF smoke_s4flag = 1 OR smoke_s4flag = 100 IF smokegroupstation_s4flag = 0 IF NOT IS_CAR_DEAD smokecar_s4 IF NOT IS_CHAR_SITTING_IN_CAR scplayer smokecar_s4 ADD_BLIP_FOR_CAR smokecar_s4 smokecar_s4blip SET_BLIP_AS_FRIENDLY smokecar_s4blip TRUE REMOVE_BLIP atrium_s4blip //PRINT_NOW DGS1_57 5000 1 //~s~Get back in the car! smoke_s4flag = 100 CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS PLAY_MISSION_AUDIO 2 PRINT_NOW SMOX_AC 2000 1 //Get in the car! smokegroupstation_s4flag = 1 ENDIF ENDIF ENDIF IF smokegroupstation_s4flag = 1 IF NOT IS_CAR_DEAD smokecar_s4 IF IS_CHAR_SITTING_IN_CAR scplayer smokecar_s4 REMOVE_BLIP smokecar_s4blip ADD_BLIP_FOR_COORD 1722.568 -1597.92 12.405 atrium_s4blip CLEAR_PRINTS CLEAR_MISSION_AUDIO 2 IF progressaudio_s4flag > 12 PRINT_NOW DGS1_1 5000 1 //~s~Take Big Smoke to ~y~Downtown~s~. ENDIF smoke_s4flag = 1 smokegroupstation_s4flag = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ///////////////////////////////////////////////////////////////////////////Dialogue before atrium IF smoke_s4flag = 1 GOSUB process_audio_s4 //play mission audio IF progressaudio_s4flag = 0 IF handlingudio_s4flag = 0 IF TIMERB > 6500 audio_label_s4 = SOUND_SMO4_AA //This better now be another cop errand, man. $input_text_s4 = SMO4_AA //This better now be another cop errand, man. GOSUB load_audio_s4 ENDIF ENDIF ENDIF IF progressaudio_s4flag = 1 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_AB //No, this is strictly for the homies. $input_text_s4 = SMO4_AB //No, this is strictly for the homies. GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 2 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_AC //I gotta be honest, CJ, could be some heavy shit where we going. $input_text_s4 = SMO4_AC //I gotta be honest, CJ, could be some heavy shit where we going. GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 3 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_AD //Man, what is you into, Smoke? $input_text_s4 = SMO4_AD //Man, what is you into, Smoke? GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 4 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_AE //Lot of shit going down, Carl. $input_text_s4 = SMO4_AE //Lot of shit going down, Carl. GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 5 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_AF //Families coming back, Ballas pushing base, $input_text_s4 = SMO4_AF //Families coming back, Ballas pushing base, GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 6 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_AG //Russian cats with nothing to lose... $input_text_s4 = SMO4_AG //Russian cats with nothing to lose... GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 7 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_AH //Russians? $input_text_s4 = SMO4_AH //Russians? GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 7 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_AJ // Yeah, go figure. $input_text_s4 = SMO4_AJ // Yeah, go figure. GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 8 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_AK //All my life I been told to fear the Ruskies, but I never even met one. $input_text_s4 = SMO4_AK //All my life I been told to fear the Ruskies, but I never even met one. GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 9 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_AL //Then the wall comes down and we’re all supposed to be friends. $input_text_s4 = SMO4_AL //Then the wall comes down and we’re all supposed to be friends. GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 10 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_AM //Five minutes later my cuz gets laid out by some Rigger fresh off the boat. $input_text_s4 = SMO4_AM //Five minutes later my cuz gets laid out by some Rigger fresh off the boat. GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 11 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_AN //For real? $input_text_s4 = SMO4_AN //For real? GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 12 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_AO //Word. $input_text_s4 = SMO4_AO //Word. GOSUB load_audio_s4 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// Arrived at Atrium //////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF smoke_s4flag = 1 IF NOT IS_CAR_DEAD smokecar_s4 IF NOT IS_CHAR_DEAD big_smoke IF IS_CHAR_SITTING_IN_CAR big_smoke smokecar_s4 IF IS_CHAR_SITTING_IN_CAR scplayer smokecar_s4 IF LOCATE_CAR_3D smokecar_s4 1722.568 -1597.92 12.45 4.0 4.0 5.0 TRUE SET_PLAYER_CONTROL PLAYER1 OFF SWITCH_WIDESCREEN ON DISABLE_ALL_ENTRY_EXITS TRUE SET_MAX_WANTED_LEVEL 0 text_s4flag = 0 CLEAR_AREA 1722.568 -1597.92 300.0 300.0 TRUE SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 SET_FIXED_CAMERA_POSITION 1711.4487 -1576.9242 30.3531 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1711.6277 -1577.8209 29.9486 JUMP_CUT TASK_LEAVE_ANY_CAR big_smoke TASK_LEAVE_ANY_CAR scplayer DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED REQUEST_MODEL MICRO_UZI REQUEST_MODEL COLT45 REQUEST_MODEL MP5LNG REQUEST_ANIMATION JST_BUISNESS CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SMO4_BA //Before I walk in there I just gotta know you’re down for this. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SMO4_BB //Look, Smoke, we go way back. We Groves, man! LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED MP5LNG OR NOT HAS_ANIMATION_LOADED JST_BUISNESS OR NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED MP5LNG WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_MISSION1 WFYST 1718.2826 -1633.1780 19.2035 people1_s4 SHUT_CHAR_UP people1_s4 TRUE SET_CHAR_HEADING people1_s4 59.5412 TASK_PLAY_ANIM_NON_INTERRUPTABLE people1_s4 SEAT_IDLE PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER people1_s4 smoke4_DM SHUT_CHAR_UP people1_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 WFYST 1717.7198 -1633.9523 19.2029 people2_s4 SET_CHAR_HEADING people2_s4 313.3566 SHUT_CHAR_UP people2_s4 TRUE TASK_PLAY_ANIM_NON_INTERRUPTABLE people2_s4 SEAT_IDLE PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER people2_s4 smoke4_DM SHUT_CHAR_UP people2_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 WFYST 1712.8112 -1629.4536 19.2010 people3_s4 SET_CHAR_HEADING people3_s4 48.5227//90.7262 SHUT_CHAR_UP people3_s4 TRUE TASK_PLAY_ANIM_NON_INTERRUPTABLE people3_s4 SEAT_IDLE PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER people3_s4 smoke4_DM SHUT_CHAR_UP people3_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 WFYST 1712.1465 -1630.1652 19.2003 people4_s4 SET_CHAR_HEADING people4_s4 322.1413 SHUT_CHAR_UP people4_s4 TRUE TASK_PLAY_ANIM_NON_INTERRUPTABLE people4_s4 SEAT_IDLE PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER people4_s4 smoke4_DM SHUT_CHAR_UP people4_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 WFYST 1732.5283 -1627.4497 19.2044 people5_s4 SET_CHAR_HEADING people5_s4 275.6598 SHUT_CHAR_UP people5_s4 TRUE TASK_PLAY_ANIM_NON_INTERRUPTABLE people5_s4 SEAT_IDLE PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER people5_s4 smoke4_DM SHUT_CHAR_UP people5_s4 TRUE //create russians CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1729.973 -1649.115 19.274 russian1_s4 SET_CHAR_HEADING russian1_s4 11.051 //duck and shoot smoke SET_CHAR_DECISION_MAKER russian1_s4 smoke4_DM GIVE_WEAPON_TO_CHAR russian1_s4 WEAPONTYPE_MP5 9999 SET_CHAR_AREA_VISIBLE russian1_s4 18 SET_CHAR_HEALTH russian1_s4 35 ADD_BLIP_FOR_CHAR russian1_s4 bike1_s4blip CHANGE_BLIP_DISPLAY bike1_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike1_s4blip 2 SET_CHAR_KEEP_TASK russian1_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 MAFFB 1729.971 -1657.139 19.278 russian2_s4 SET_CHAR_HEADING russian2_s4 21.106 //2 -> no duck stay shoot player (bullets) SET_CHAR_HEALTH russian2_s4 10 SET_CHAR_DECISION_MAKER russian2_s4 smoke4_DM SET_CHAR_WEAPON_SKILL russian2_s4 WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR russian2_s4 WEAPONTYPE_PISTOL 9999 SET_CHAR_ACCURACY russian2_s4 60 SET_CHAR_AREA_VISIBLE russian2_s4 18 ADD_BLIP_FOR_CHAR russian2_s4 bike2_s4blip CHANGE_BLIP_DISPLAY bike2_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike2_s4blip 2 SET_CHAR_KEEP_TASK russian2_s4 TRUE SET_CHAR_SHOOT_RATE russian2_s4 50 CREATE_CHAR PEDTYPE_MISSION1 MAFFB 1722.311 -1658.636 19.108 russian3_s4 SET_CHAR_HEADING russian3_s4 352.526 //3 duck stay and shoot smoke (bullets) SET_CHAR_DECISION_MAKER russian3_s4 smoke4duck_DM SET_CHAR_WEAPON_SKILL russian3_s4 WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR russian3_s4 WEAPONTYPE_PISTOL 9999 SET_CHAR_AREA_VISIBLE russian3_s4 18 ADD_BLIP_FOR_CHAR russian3_s4 bike3_s4blip CHANGE_BLIP_DISPLAY bike3_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike3_s4blip 2 SET_CHAR_KEEP_TASK russian3_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1712.399 -1657.463 19.26 russian4_s4 SET_CHAR_HEALTH russian4_s4 150 SET_CHAR_HEADING russian4_s4 323.108 //4 - shoot player duck stay and shoot (bullets) SET_CHAR_DECISION_MAKER russian4_s4 smoke4duck_DM SET_CHAR_WEAPON_SKILL russian4_s4 WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR russian4_s4 WEAPONTYPE_PISTOL 9999 SET_CHAR_AREA_VISIBLE russian4_s4 18 SET_CHAR_ACCURACY russian4_s4 50 ADD_BLIP_FOR_CHAR russian4_s4 bike4_s4blip CHANGE_BLIP_DISPLAY bike4_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike4_s4blip 2 SET_CHAR_KEEP_TASK russian4_s4 TRUE SET_CHAR_MAX_HEALTH russian4_s4 150 SET_CHAR_HEALTH russian4_s4 150 SET_CHAR_SHOOT_RATE russian4_s4 50 CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1712.763 -1664.816 19.273 russian5_s4 SET_CHAR_HEADING russian5_s4 329.331 //5 shoot player no duck (bullets) SET_CHAR_DECISION_MAKER russian5_s4 smoke4duck_DM GIVE_WEAPON_TO_CHAR russian5_s4 WEAPONTYPE_MP5 9999 SET_CHAR_ACCURACY russian5_s4 50 SET_CHAR_MAX_HEALTH russian5_s4 150 SET_CHAR_HEALTH russian5_s4 150 SET_CHAR_AREA_VISIBLE russian5_s4 18 ADD_BLIP_FOR_CHAR russian5_s4 bike5_s4blip CHANGE_BLIP_DISPLAY bike5_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike5_s4blip 2 SET_CHAR_KEEP_TASK russian5_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1718.711 -1655.182 19.108 russian6_s4 SET_CHAR_HEADING russian6_s4 327.782 //6 shoot player stay duck SET_CHAR_DECISION_MAKER russian6_s4 smoke4_DM SET_CHAR_WEAPON_SKILL russian6_s4 WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR russian6_s4 WEAPONTYPE_PISTOL 9999 SET_CHAR_AREA_VISIBLE russian6_s4 18 SET_CHAR_ACCURACY russian6_s4 60 ADD_BLIP_FOR_CHAR russian6_s4 bike6_s4blip CHANGE_BLIP_DISPLAY bike6_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike6_s4blip 2 SET_CHAR_KEEP_TASK russian6_s4 TRUE //create russians CREATE_CHAR PEDTYPE_MISSION1 MAFFB 1701.8 -1650.28 19.26 russian7_s4 SET_CHAR_HEADING russian7_s4 265.623 //7 -> kill normally 1720.069 -1649.467 19.27 SET_CHAR_DECISION_MAKER russian7_s4 smoke4_DM SET_CHAR_WEAPON_SKILL russian7_s4 WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR russian7_s4 WEAPONTYPE_PISTOL 9999 SET_CHAR_MAX_HEALTH russian7_s4 150 SET_CHAR_HEALTH russian7_s4 150 SET_CHAR_AREA_VISIBLE russian7_s4 18 ADD_BLIP_FOR_CHAR russian7_s4 bike7_s4blip CHANGE_BLIP_DISPLAY bike7_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike7_s4blip 2 SET_CHAR_KEEP_TASK russian7_s4 TRUE SET_CHAR_SHOOT_RATE russian7_s4 50 CREATE_CHAR PEDTYPE_MISSION1 MAFFB 1719.6 -1671.764 22.741 russian10_s4 SET_CHAR_HEALTH russian10_s4 5 SET_CHAR_HEADING russian10_s4 11.45 //10 stay and shoot at player no duck SET_CHAR_DECISION_MAKER russian10_s4 smoke4_DM GIVE_WEAPON_TO_CHAR russian10_s4 WEAPONTYPE_MP5 9999 SET_CHAR_ALLOWED_TO_DUCK russian10_s4 FALSE SET_CHAR_AREA_VISIBLE russian10_s4 18 ADD_BLIP_FOR_CHAR russian10_s4 bike10_s4blip CHANGE_BLIP_DISPLAY bike10_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike10_s4blip 2 SET_CHAR_KEEP_TASK russian10_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 MAFFB 1701.897 -1668.039 19.23 russian11_s4 SET_CHAR_HEADING russian11_s4 276.178 //11 stay and shoot at player no duck SET_CHAR_DECISION_MAKER russian11_s4 smoke4_DM SET_CHAR_WEAPON_SKILL russian11_s4 WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR russian11_s4 WEAPONTYPE_PISTOL 9999 SET_CHAR_AREA_VISIBLE russian11_s4 18 SET_CHAR_ACCURACY russian11_s4 60 ADD_BLIP_FOR_CHAR russian11_s4 bike11_s4blip CHANGE_BLIP_DISPLAY bike11_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike11_s4blip 2 SET_CHAR_KEEP_TASK russian11_s4 TRUE SET_CHAR_MAX_HEALTH russian11_s4 150 SET_CHAR_HEALTH russian11_s4 150 CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1725.037 -1672.69 22.735 russian12_s4 SET_CHAR_HEADING russian12_s4 127.283 //->1728.416 -1669.709 22.64935 -> go to shiwl shoooting ->1721.637 -1662.946 19.27 kill normally SET_CHAR_DECISION_MAKER russian12_s4 smoke4_DM SET_CHAR_WEAPON_SKILL russian12_s4 WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR russian12_s4 WEAPONTYPE_PISTOL 9999 SET_CHAR_ACCURACY russian12_s4 60 SET_CHAR_AREA_VISIBLE russian12_s4 18 ADD_BLIP_FOR_CHAR russian12_s4 bike12_s4blip CHANGE_BLIP_DISPLAY bike12_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike12_s4blip 2 SET_CHAR_KEEP_TASK russian12_s4 TRUE SET_CHAR_SHOOT_RATE russian12_s4 50 CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1733.358 -1664.599 22.747 russian13_s4 SET_CHAR_HEADING russian13_s4 141.981 // -> 1729.928 -1667.75 21.65 ->1725.52 -1663.737 20.5 -> kill player SET_CHAR_DECISION_MAKER russian13_s4 smoke4_DM SET_CHAR_WEAPON_SKILL russian13_s4 WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR russian13_s4 WEAPONTYPE_PISTOL 9999 SET_CHAR_ACCURACY russian13_s4 50 SET_CHAR_AREA_VISIBLE russian13_s4 18 ADD_BLIP_FOR_CHAR russian13_s4 russian13_s4blip CHANGE_BLIP_DISPLAY russian13_s4blip BLIP_ONLY CHANGE_BLIP_SCALE russian13_s4blip 2 SET_CHAR_KEEP_TASK russian13_s4 TRUE SET_CHAR_MAX_HEALTH russian13_s4 150 SET_CHAR_HEALTH russian13_s4 150 LOAD_SCENE_IN_DIRECTION 1726.993 -1628.007 20.2 8.98 LOAD_SCENE_IN_DIRECTION 1726.993 -1628.007 20.2 169.7 smoke_s4flag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // IF smoke_s4flag = 2 IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_IN_ANY_CAR big_smoke IF NOT IS_CHAR_IN_ANY_CAR scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY big_smoke SET_CHAR_COORDINATES scplayer 1726.04 -1632.521 19.18 SET_CHAR_HEADING scplayer 180.0 SET_CHAR_COORDINATES big_smoke 1726.815 -1633.001 19.18 SET_CHAR_HEADING big_smoke 180.0 CREATE_CHAR PEDTYPE_MISSION1 WFYRI 1727.757 -1632.918 19.18 hoochie_s4 SET_CHAR_HEADING hoochie_s4 270.0 SET_CHAR_DECISION_MAKER hoochie_s4 smoke4_DM SHUT_CHAR_UP hoochie_s4 TRUE TIMERB = 0 SET_FIXED_CAMERA_POSITION 1728.489 -1633.539 20.16 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1726.404 -1632.053 20.279 JUMP_CUT TIMERA = 0 cutscene_s4flag = 1 smoke_s4flag = 8 ENDIF ENDIF ENDIF ENDIF IF smoke_s4flag = 8 IF cutscene_s4flag = 1 IF TIMERA > 1000 CLEAR_PRINTS DO_FADE 500 FADE_IN cutscene_s4flag = 2 ENDIF ENDIF IF cutscene_s4flag = 2 IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD hoochie_s4 SET_CHAR_COLLISION hoochie_s4 FALSE SET_CHAR_COLLISION big_smoke FALSE SET_CHAR_COLLISION scplayer FALSE //////////////////////////////////////SET THIS BACK IF SKIPPED TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer player_01 JST_BUISNESS 1000.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE big_smoke smoke_01 JST_BUISNESS 1000.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE hoochie_s4 girl_01 JST_BUISNESS 1000.0 FALSE FALSE FALSE TRUE -1 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED TIMERB = 0 ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// skipcutscene_s4flag = 0 SKIP_CUTSCENE_START ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// cutscene_s4flag = 3 ENDIF ENDIF ENDIF //camera angles IF cutscene_s4flag = 3 IF TIMERB > 2066 SET_FIXED_CAMERA_POSITION 1726.3505 -1630.8242 20.7289 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1726.4110 -1631.8223 20.7195 JUMP_CUT PLAY_MISSION_AUDIO 1 IF NOT IS_CHAR_DEAD big_smoke START_CHAR_FACIAL_TALK big_smoke 10000 ENDIF PRINT_NOW SMO4_BA 5000 1 //Before I walk in there I just gotta know you’re down for this. cutscene_s4flag = 4 ENDIF ENDIF IF cutscene_s4flag = 4 IF TIMERB > 4999 IF HAS_MISSION_AUDIO_FINISHED 1 SET_FIXED_CAMERA_POSITION 1726.3701 -1633.3800 20.6705 0.0 0.0 0.0 //1726.3096 -1632.9805 20.7301 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1726.4155 -1632.3811 20.6667 JUMP_CUT CLEAR_PRINTS PLAY_MISSION_AUDIO 2 IF NOT IS_CHAR_DEAD big_smoke STOP_CHAR_FACIAL_TALK big_smoke ENDIF PRINT_NOW SMO4_BB 5000 1//Look, Smoke, we go way back. We Groves, man! START_CHAR_FACIAL_TALK scplayer 10000 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SMO4_BC //That’s my dog! cutscene_s4flag = 5 ENDIF ENDIF ENDIF IF cutscene_s4flag = 5 IF HAS_MISSION_AUDIO_FINISHED 2 IF HAS_MISSION_AUDIO_LOADED 1 STOP_CHAR_FACIAL_TALK scplayer PLAY_MISSION_AUDIO 1 IF NOT IS_CHAR_DEAD big_smoke START_CHAR_FACIAL_TALK big_smoke 10000 ENDIF PRINT_NOW SMO4_BC 5000 1 //That's my dog! CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SMO4_BD //If you hear the shit start to fly, come in blasting! cutscene_s4flag = 6 ENDIF ENDIF ENDIF IF cutscene_s4flag = 6 IF HAS_MISSION_AUDIO_FINISHED 1 IF HAS_MISSION_AUDIO_LOADED 2 PLAY_MISSION_AUDIO 2 PRINT_NOW SMO4_BD 5000 1 //If you hear the shit start to fly, come in blasting! LOAD_MISSION_AUDIO 1 SOUND_SMO4_BE //I'm down, dog. cutscene_s4flag = 7 ENDIF ENDIF ENDIF IF cutscene_s4flag = 7 IF TIMERB > 9999 IF NOT IS_CHAR_DEAD hoochie_s4 IF HAS_MISSION_AUDIO_FINISHED 2 IF HAS_MISSION_AUDIO_LOADED 1 IF NOT IS_CHAR_DEAD big_smoke STOP_CHAR_FACIAL_TALK big_smoke ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY hoochie_s4 SET_CHAR_COORDINATES hoochie_s4 1732.785 -1633.043 19.2 SET_CHAR_HEADING hoochie_s4 0.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE hoochie_s4 girl_02 JST_BUISNESS 1000.0 FALSE FALSE FALSE TRUE -1 PLAY_MISSION_AUDIO 1 PRINT_NOW SMO4_BE 3000 1 //I'm down, dog. SET_NEAR_CLIP 0.09 START_CHAR_FACIAL_TALK scplayer 2000 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SMO4_BF //Hey, baby, want company? stoptalk_s4flag = 1 cutscene_s4flag = 8 ENDIF ENDIF ENDIF ENDIF ENDIF IF stoptalk_s4flag = 1 IF HAS_MISSION_AUDIO_FINISHED 1 STOP_CHAR_FACIAL_TALK scplayer stoptalk_s4flag = 2 ENDIF ENDIF IF cutscene_s4flag = 8 IF TIMERB > 18500//17165 IF HAS_MISSION_AUDIO_LOADED 2 IF HAS_MISSION_AUDIO_FINISHED 1 SET_FIXED_CAMERA_POSITION 1725.0935 -1632.4459 20.7074 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1726.0913 -1632.3909 20.6711 JUMP_CUT SET_NEAR_CLIP 0.1 PLAY_MISSION_AUDIO 2 PRINT_NOW SMO4_BF 3000 1 //Hey, baby, want company? CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SMO4_BG //Motherfuckers! cutscene_s4flag = 9 ENDIF ENDIF ENDIF ENDIF IF cutscene_s4flag = 9 IF HAS_MISSION_AUDIO_FINISHED 2 IF HAS_MISSION_AUDIO_LOADED 1 STOP_CHAR_FACIAL_TALK scplayer PLAY_MISSION_AUDIO 1 PRINT_NOW SMO4_BG 5000 1 //Motherfuckers! cutscene_s4flag = 10 ENDIF ENDIF ENDIF IF cutscene_s4flag = 10 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS IF NOT IS_CHAR_DEAD big_smoke IF IS_CHAR_PLAYING_ANIM scplayer player_01 GET_CHAR_ANIM_CURRENT_TIME scplayer player_01 animtime_s4 IF animtime_s4 = 1.0 smoke_s4flag = 10 cutscene_s4flag = 11 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF smoke_s4flag = 10 IF TIMERA > 2000 IF NOT IS_CHAR_DEAD big_smoke CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// skipcutscene_s4flag = 1 SKIP_CUTSCENE_END ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS SET_AREA_VISIBLE 18 LOAD_SCENE 1722.81 -1658.54 20.19 //PLAYER HAS SKIPPED CUTSCENE IF skipcutscene_s4flag = 0 CLEAR_PRINTS DELETE_CHAR people1_s4 DELETE_CHAR people2_s4 DELETE_CHAR people3_s4 DELETE_CHAR people4_s4 DELETE_CHAR people5_s4 DELETE_CHAR russian1_s4 DELETE_CHAR russian2_s4 DELETE_CHAR russian3_s4 DELETE_CHAR russian4_s4 DELETE_CHAR russian5_s4 DELETE_CHAR russian6_s4 DELETE_CHAR russian7_s4 DELETE_CHAR russian10_s4 DELETE_CHAR russian11_s4 DELETE_CHAR russian12_s4 DELETE_CHAR russian13_s4 MARK_MODEL_AS_NO_LONGER_NEEDED WFYRI MARK_MODEL_AS_NO_LONGER_NEEDED WFYST DELETE_CAR smokecar_s4 MARK_MODEL_AS_NO_LONGER_NEEDED GLENDALE //create russians CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1729.973 -1649.115 19.274 russian1_s4 SET_CHAR_HEADING russian1_s4 11.051 //duck and shoot smoke SET_CHAR_DECISION_MAKER russian1_s4 smoke4_DM GIVE_WEAPON_TO_CHAR russian1_s4 WEAPONTYPE_MP5 9999 SET_CHAR_AREA_VISIBLE russian1_s4 18 SET_CHAR_HEALTH russian1_s4 35 ADD_BLIP_FOR_CHAR russian1_s4 bike1_s4blip CHANGE_BLIP_DISPLAY bike1_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike1_s4blip 2 SET_CHAR_KEEP_TASK russian1_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 MAFFB 1729.971 -1657.139 19.278 russian2_s4 SET_CHAR_HEALTH russian2_s4 10 SET_CHAR_HEADING russian2_s4 21.106 //2 -> no duck stay shoot player (bullets) SET_CHAR_DECISION_MAKER russian2_s4 smoke4_DM SET_CHAR_WEAPON_SKILL russian2_s4 WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR russian2_s4 WEAPONTYPE_PISTOL 9999 SET_CHAR_ACCURACY russian2_s4 60 SET_CHAR_AREA_VISIBLE russian2_s4 18 ADD_BLIP_FOR_CHAR russian2_s4 bike2_s4blip CHANGE_BLIP_DISPLAY bike2_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike2_s4blip 2 SET_CHAR_SHOOT_RATE russian2_s4 50 SET_CHAR_KEEP_TASK russian2_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 MAFFB 1722.311 -1658.636 19.108 russian3_s4 SET_CHAR_HEADING russian3_s4 352.526 //3 duck stay and shoot smoke (bullets) SET_CHAR_DECISION_MAKER russian3_s4 smoke4duck_DM SET_CHAR_WEAPON_SKILL russian3_s4 WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR russian3_s4 WEAPONTYPE_PISTOL 9999 SET_CHAR_AREA_VISIBLE russian3_s4 18 ADD_BLIP_FOR_CHAR russian3_s4 bike3_s4blip CHANGE_BLIP_DISPLAY bike3_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike3_s4blip 2 SET_CHAR_KEEP_TASK russian3_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1712.399 -1657.463 19.26 russian4_s4 SET_CHAR_HEALTH russian4_s4 150 SET_CHAR_HEADING russian4_s4 323.108 //4 - shoot player duck stay and shoot (bullets) SET_CHAR_DECISION_MAKER russian4_s4 smoke4duck_DM SET_CHAR_WEAPON_SKILL russian4_s4 WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR russian4_s4 WEAPONTYPE_PISTOL 9999 SET_CHAR_AREA_VISIBLE russian4_s4 18 ADD_BLIP_FOR_CHAR russian4_s4 bike4_s4blip CHANGE_BLIP_DISPLAY bike4_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike4_s4blip 2 SET_CHAR_ACCURACY russian4_s4 60 SET_CHAR_KEEP_TASK russian4_s4 TRUE SET_CHAR_MAX_HEALTH russian4_s4 150 SET_CHAR_HEALTH russian4_s4 150 SET_CHAR_SHOOT_RATE russian4_s4 50 CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1712.763 -1664.816 19.273 russian5_s4 SET_CHAR_HEADING russian5_s4 329.331 //5 shoot player no duck (bullets) SET_CHAR_DECISION_MAKER russian5_s4 smoke4duck_DM GIVE_WEAPON_TO_CHAR russian5_s4 WEAPONTYPE_MP5 9999 SET_CHAR_ACCURACY russian5_s4 70 SET_CHAR_MAX_HEALTH russian5_s4 150 SET_CHAR_HEALTH russian5_s4 150 SET_CHAR_AREA_VISIBLE russian5_s4 18 ADD_BLIP_FOR_CHAR russian5_s4 bike5_s4blip CHANGE_BLIP_DISPLAY bike5_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike5_s4blip 2 SET_CHAR_KEEP_TASK russian5_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1718.711 -1655.182 19.108 russian6_s4 SET_CHAR_HEADING russian6_s4 327.782 //6 shoot player stay duck SET_CHAR_DECISION_MAKER russian6_s4 smoke4_DM SET_CHAR_WEAPON_SKILL russian6_s4 WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR russian6_s4 WEAPONTYPE_PISTOL 9999 SET_CHAR_AREA_VISIBLE russian6_s4 18 ADD_BLIP_FOR_CHAR russian6_s4 bike6_s4blip CHANGE_BLIP_DISPLAY bike6_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike6_s4blip 2 SET_CHAR_ACCURACY russian6_s4 60 SET_CHAR_KEEP_TASK russian6_s4 TRUE //create russians CREATE_CHAR PEDTYPE_MISSION1 MAFFB 1701.8 -1650.28 19.26 russian7_s4 SET_CHAR_HEADING russian7_s4 265.623 //7 -> kill normally 1720.069 -1649.467 19.27 SET_CHAR_DECISION_MAKER russian7_s4 smoke4_DM SET_CHAR_WEAPON_SKILL russian7_s4 WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR russian7_s4 WEAPONTYPE_PISTOL 9999 SET_CHAR_MAX_HEALTH russian7_s4 150 SET_CHAR_HEALTH russian7_s4 150 SET_CHAR_AREA_VISIBLE russian7_s4 18 ADD_BLIP_FOR_CHAR russian7_s4 bike7_s4blip CHANGE_BLIP_DISPLAY bike7_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike7_s4blip 2 SET_CHAR_KEEP_TASK russian7_s4 TRUE SET_CHAR_SHOOT_RATE russian7_s4 60 CREATE_CHAR PEDTYPE_MISSION1 MAFFB 1719.6 -1671.764 22.741 russian10_s4 SET_CHAR_HEALTH russian10_s4 5 SET_CHAR_HEADING russian10_s4 11.45 //10 stay and shoot at player no duck SET_CHAR_DECISION_MAKER russian10_s4 smoke4_DM GIVE_WEAPON_TO_CHAR russian10_s4 WEAPONTYPE_MP5 9999 SET_CHAR_ALLOWED_TO_DUCK russian10_s4 FALSE SET_CHAR_AREA_VISIBLE russian10_s4 18 ADD_BLIP_FOR_CHAR russian10_s4 bike10_s4blip CHANGE_BLIP_DISPLAY bike10_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike10_s4blip 2 SET_CHAR_KEEP_TASK russian10_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 MAFFB 1701.897 -1668.039 19.23 russian11_s4 SET_CHAR_HEADING russian11_s4 276.178 //11 stay and shoot at player no duck SET_CHAR_DECISION_MAKER russian11_s4 smoke4_DM SET_CHAR_WEAPON_SKILL russian11_s4 WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR russian11_s4 WEAPONTYPE_PISTOL 9999 SET_CHAR_AREA_VISIBLE russian11_s4 18 SET_CHAR_ACCURACY russian11_s4 60 ADD_BLIP_FOR_CHAR russian11_s4 bike11_s4blip CHANGE_BLIP_DISPLAY bike11_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike11_s4blip 2 SET_CHAR_KEEP_TASK russian11_s4 TRUE SET_CHAR_MAX_HEALTH russian11_s4 150 SET_CHAR_HEALTH russian11_s4 150 CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1725.037 -1672.69 22.735 russian12_s4 SET_CHAR_HEADING russian12_s4 127.283 //->1728.416 -1669.709 22.64935 -> go to shiwl shoooting ->1721.637 -1662.946 19.27 kill normally SET_CHAR_DECISION_MAKER russian12_s4 smoke4_DM SET_CHAR_WEAPON_SKILL russian12_s4 WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR russian12_s4 WEAPONTYPE_PISTOL 9999 SET_CHAR_ACCURACY russian12_s4 60 SET_CHAR_AREA_VISIBLE russian12_s4 18 ADD_BLIP_FOR_CHAR russian12_s4 bike12_s4blip CHANGE_BLIP_DISPLAY bike12_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike12_s4blip 2 SET_CHAR_KEEP_TASK russian12_s4 TRUE SET_CHAR_SHOOT_RATE russian12_s4 50 CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1733.358 -1664.599 22.747 russian13_s4 SET_CHAR_HEADING russian13_s4 141.981 // -> 1729.928 -1667.75 21.65 ->1725.52 -1663.737 20.5 -> kill player SET_CHAR_DECISION_MAKER russian13_s4 smoke4_DM SET_CHAR_WEAPON_SKILL russian13_s4 WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR russian13_s4 WEAPONTYPE_PISTOL 9999 SET_CHAR_ACCURACY russian13_s4 65 SET_CHAR_AREA_VISIBLE russian13_s4 18 ADD_BLIP_FOR_CHAR russian13_s4 russian13_s4blip CHANGE_BLIP_DISPLAY russian13_s4blip BLIP_ONLY CHANGE_BLIP_SCALE russian13_s4blip 2 SET_CHAR_KEEP_TASK russian13_s4 TRUE SET_CHAR_MAX_HEALTH russian13_s4 150 SET_CHAR_HEALTH russian13_s4 150 ////////////////////////////////////// ENDIF IF smokeshoot_s4flag = 0 IF NOT IS_CHAR_DEAD big_smoke CLEAR_CHAR_TASKS_IMMEDIATELY big_smoke SET_CHAR_COLLISION big_smoke TRUE SET_CHAR_COLLISION scplayer TRUE STOP_CHAR_FACIAL_TALK big_smoke STOP_CHAR_FACIAL_TALK scplayer SET_CHAR_COORDINATES big_smoke 1727.8838 -1641.1274 19.2323 SET_CHAR_HEADING big_smoke 182.5173 SET_CHAR_HAS_USED_ENTRY_EXIT big_smoke 1727.009 -1635.826 1.0 ADD_BLIP_FOR_CHAR big_smoke smoke_s4blip SET_CHAR_ACCURACY big_smoke 100 SET_CHAR_AREA_VISIBLE big_smoke 18 SET_BLIP_AS_FRIENDLY smoke_s4blip TRUE SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 1727.009 -1635.826 1.0 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF LOAD_SCENE 1727.8838 -1641.1274 19.2323 GIVE_WEAPON_TO_CHAR big_smoke WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_MAX_HEALTH big_smoke 500 SET_CHAR_HEALTH big_smoke 500 GET_CHAR_HEALTH big_smoke smokehealth_s4 SET_CHAR_SHOOT_RATE big_smoke 55 smokehealth_s4 = smokehealth_s4 / 5 DISPLAY_ONSCREEN_COUNTER_WITH_STRING smokehealth_s4 COUNTER_DISPLAY_BAR DGS1_58 TASK_TOGGLE_DUCK big_smoke TRUE smokeshoot_s4flag = 1 ENDIF ENDIF CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SMO4_BL SWITCH_WIDESCREEN ON CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 1725.9333 -1638.3741 19.2232 SET_CHAR_HEADING scplayer 174.7897 IF NOT IS_CHAR_DEAD big_smoke SET_CHAR_PROOFS big_smoke TRUE TRUE TRUE TRUE TRUE ENDIF WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE DO_FADE 250 FADE_IN IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 //CJ, get in he(re)- oh there you are! PRINT_NOW SMO4_BL 2500 1 ENDIF IF NOT IS_CHAR_DEAD russian1_s4 IF NOT IS_CHAR_DEAD big_smoke enemy_s4 = russian1_s4 enemytarget_s4 = big_smoke GOSUB stayshoot_s4label ENDIF ENDIF IF NOT IS_CHAR_DEAD russian3_s4 IF NOT IS_CHAR_DEAD big_smoke enemy_s4 = russian3_s4 enemytarget_s4 = big_smoke GOSUB stayshootnoduck_s4label ENDIF ENDIF SET_FIXED_CAMERA_POSITION 1726.5278 -1637.8292 21.2570 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1726.4767 -1638.7794 20.9496 JUMP_CUT TASK_TOGGLE_DUCK scplayer TRUE TASK_GO_STRAIGHT_TO_COORD scplayer 1724.626 -1640.693 20.2245 PEDMOVE_WALK -1 TIMERA = 0 WHILE NOT LOCATE_STOPPED_CHAR_ANY_MEANS_2D scplayer 1724.626 -1640.693 1.5 1.5 FALSE OR NOT TIMERA > 1500 WAIT 0 ENDWHILE IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS ENDIF GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_MICRO_UZI 120 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_HEADING scplayer 180.0 SWITCH_WIDESCREEN OFF SET_CHAR_COLLISION scplayer TRUE REMOVE_ANIMATION JST_BUISNESS REMOVE_BLIP atrium_s4blip DELETE_CHAR people1_s4 DELETE_CHAR people2_s4 DELETE_CHAR people3_s4 DELETE_CHAR people4_s4 MARK_MODEL_AS_NO_LONGER_NEEDED WFYST MARK_MODEL_AS_NO_LONGER_NEEDED WFYRI DELETE_CHAR hoochie_s4 DELETE_CAR smokecar_s4 MARK_MODEL_AS_NO_LONGER_NEEDED GLENDALE SET_PLAYER_CONTROL PLAYER1 ON TASK_TOGGLE_DUCK scplayer TRUE IF NOT IS_CHAR_DEAD big_smoke SET_CHAR_PROOFS big_smoke FALSE FALSE FALSE FALSE FALSE ENDIF CLEAR_MISSION_AUDIO 1 shootout_s4flag = 1 progressaudio_s4flag = 0 handlingudio_s4flag = 0 helpshoottext_s4flag = 1 smoke_s4flag = 11 TIMERA = 0 slowdownstart_s4flag = 2 //1 ENDIF ENDIF ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////// Shootout inside Atrium /////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //IF slowdownstart_s4flag = 1 // IF TIMERA > 1500 // OR NOT LOCATE_CHAR_ANY_MEANS_2D scplayer 1725.629 -1641.05 4.0 4.0 FALSE // slowdownstart_s4flag = 2 // ENDIF //ENDIF IF smoke_s4flag = 11 IF slowdownstart_s4flag = 2 IF NOT IS_CHAR_DEAD big_smoke GET_CHAR_HEALTH big_smoke smokehealth_s4 smokehealth_s4 = smokehealth_s4 / 5 ENDIF IF warp_s4flag = 0 IF smokeshoot_s4flag = 1 IF NOT IS_CHAR_DEAD russian2_s4 enemy_s4 = russian2_s4 enemytarget_s4 = scplayer GOSUB stayshootnoduck_s4label ENDIF IF NOT IS_CHAR_DEAD russian4_s4 enemy_s4 = russian4_s4 enemytarget_s4 = scplayer GOSUB stayshoot_s4label ENDIF IF NOT IS_CHAR_DEAD russian5_s4 IF NOT IS_CHAR_DEAD big_smoke enemy_s4 = russian5_s4 enemytarget_s4 = big_smoke GOSUB stayshootnoduck_s4label ENDIF ENDIF IF NOT IS_CHAR_DEAD russian6_s4 enemy_s4 = russian6_s4 enemytarget_s4 = scplayer GOSUB stayshoot_s4label ENDIF IF NOT IS_CHAR_DEAD russian10_s4 enemy_s4 = russian10_s4 enemytarget_s4 = scplayer GOSUB stayshootnoduck_s4label ENDIF IF NOT IS_CHAR_DEAD russian12_s4 enemy_s4 = russian12_s4 enemytarget_s4 = scplayer enemyx_s4 = 1728.416 enemyy_s4 = -1669.709 enemyz_s4 = 22.84935 enemyx2_s4 = 1721.637 enemyy2_s4 = -1662.946 enemyz2_s4 = 20.27 GOSUB run2kill_s4label ENDIF IF NOT IS_CHAR_DEAD big_smoke //PRINT_NOW DGS1_56 7000 1 //~s~Get inside and protect Big Smoke! text_s4flag = 1 OPEN_SEQUENCE_TASK smoke1_s4seq TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD russian1_s4 TASK_KILL_CHAR_ON_FOOT -1 russian1_s4 ENDIF IF NOT IS_CHAR_DEAD russian2_s4 TASK_KILL_CHAR_ON_FOOT -1 russian2_s4 ENDIF TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_GO_STRAIGHT_TO_COORD -1 1727.7167 -1658.271 20.277 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK smoke1_s4seq PERFORM_SEQUENCE_TASK big_smoke smoke1_s4seq CLEAR_SEQUENCE_TASK smoke1_s4seq ENDIF TIMERA = 0 smokeshoot_s4flag = 2 ENDIF ////////////////////////// smoke behaviour IF smokeshoot_s4flag = 2 IF NOT IS_CHAR_DEAD big_smoke GET_SCRIPT_TASK_STATUS big_smoke PERFORM_SEQUENCE_TASK sequencetask_s4 IF sequencetask_s4 = FINISHED_TASK //OR LOCATE_STOPPED_CHAR_ON_FOOT_2D big_smoke 1727.7167 -1658.271 1.0 1.0 FALSE SET_CHAR_ACCURACY big_smoke 50 OPEN_SEQUENCE_TASK smoke2_s4seq text_s4flag = 2 TASK_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD russian3_s4 TASK_KILL_CHAR_ON_FOOT -1 russian3_s4 ENDIF IF NOT IS_CHAR_DEAD russian11_s4 TASK_KILL_CHAR_ON_FOOT -1 russian11_s4 ENDIF IF NOT IS_CHAR_DEAD russian12_s4 TASK_KILL_CHAR_ON_FOOT -1 russian12_s4 ENDIF TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_FOLLOW_PATH_NODES_TO_COORD -1 1719.854 -1666.667 20.271 PEDMOVE_RUN -1 //TASK_GO_STRAIGHT_TO_COORD -1 1719.854 -1666.667 20.271 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK smoke2_s4seq PERFORM_SEQUENCE_TASK big_smoke smoke2_s4seq CLEAR_SEQUENCE_TASK smoke2_s4seq smokeshoot_s4flag = 3 ENDIF ENDIF ENDIF IF smokeshoot_s4flag = 3 IF NOT IS_CHAR_DEAD big_smoke GET_SCRIPT_TASK_STATUS big_smoke PERFORM_SEQUENCE_TASK sequencetask_s4 IF sequencetask_s4 = FINISHED_TASK //OR LOCATE_STOPPED_CHAR_ON_FOOT_2D big_smoke 1727.7167 -1658.271 1.0 1.0 FALSE text_s4flag = 3 OPEN_SEQUENCE_TASK smoke3_s4seq TASK_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD russian5_s4 TASK_KILL_CHAR_ON_FOOT -1 russian5_s4 ENDIF IF NOT IS_CHAR_DEAD russian6_s4 TASK_KILL_CHAR_ON_FOOT -1 russian6_s4 ENDIF IF NOT IS_CHAR_DEAD russian7_s4 TASK_KILL_CHAR_ON_FOOT -1 russian7_s4 ENDIF TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_FOLLOW_PATH_NODES_TO_COORD -1 1713.96 -1668.24 19.27 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK smoke3_s4seq PERFORM_SEQUENCE_TASK big_smoke smoke3_s4seq CLEAR_SEQUENCE_TASK smoke3_s4seq smokeshoot_s4flag = 4 ENDIF ENDIF ENDIF IF smokeshoot_s4flag = 4 IF NOT IS_CHAR_DEAD big_smoke GET_SCRIPT_TASK_STATUS big_smoke PERFORM_SEQUENCE_TASK sequencetask_s4 IF sequencetask_s4 = FINISHED_TASK //OR LOCATE_STOPPED_CHAR_ON_FOOT_2D big_smoke 1727.7167 -1658.271 1.0 1.0 FALSE text_s4flag = 4 OPEN_SEQUENCE_TASK smoke4_s4seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_TOGGLE_DUCK -1 TRUE IF NOT IS_CHAR_DEAD russian4_s4 TASK_KILL_CHAR_ON_FOOT -1 russian4_s4 ENDIF IF NOT IS_CHAR_DEAD russian10_s4 TASK_KILL_CHAR_ON_FOOT -1 russian10_s4 ENDIF IF NOT IS_CHAR_DEAD russian13_s4 TASK_KILL_CHAR_ON_FOOT -1 russian13_s4 ENDIF CLOSE_SEQUENCE_TASK smoke4_s4seq PERFORM_SEQUENCE_TASK big_smoke smoke4_s4seq CLEAR_SEQUENCE_TASK smoke4_s4seq smokeshoot_s4flag = 5 ENDIF ENDIF ENDIF //out the atrium IF smokeshoot_s4flag = 5 IF NOT IS_CHAR_DEAD big_smoke GET_SCRIPT_TASK_STATUS big_smoke PERFORM_SEQUENCE_TASK sequencetask_s4 IF sequencetask_s4 = FINISHED_TASK text_s4flag = 5 OPEN_SEQUENCE_TASK smoke5_s4seq TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_FOLLOW_PATH_NODES_TO_COORD -1 1704.45 -1667.71 19.68 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK smoke5_s4seq PERFORM_SEQUENCE_TASK big_smoke smoke5_s4seq CLEAR_SEQUENCE_TASK smoke5_s4seq smokeshoot_s4flag = 6 ENDIF ENDIF ENDIF /////////////////////////////////////////// FIRST SET OF GUYS IF russian3_s4flag = 0 IF NOT IS_CHAR_DEAD russian3_s4 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR russian3_s4 scplayer TASK_STAY_IN_SAME_PLACE russian3_s4 FALSE TASK_KILL_CHAR_ON_FOOT russian3_s4 scplayer russian3_s4flag = 1 ENDIF ENDIF ENDIF IF russian12_s4flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1727.0 -1637.0 20.0 3.0 3.0 5.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer 1700.19 -1667.58 20.0 6.5 6.5 5.0 FALSE REMOVE_CHAR_ELEGANTLY people5_s4 russian12_s4flag = 1 ENDIF ENDIF IF russian7_s4flag = 0 IF DOES_CHAR_EXIST russian7_s4 IF IS_CHAR_IN_AREA_3D scplayer 1707.16 -1643.73 17.0 1735.9 -1653.46 22.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR russian7_s4 scplayer OR IS_CHAR_DEAD russian3_s4 IF NOT IS_CHAR_DEAD russian7_s4 enemy_s4 = russian7_s4 enemytarget_s4 = scplayer enemyx_s4 = 1725.069 enemyy_s4 = -1649.467 enemyz_s4 = 19.27 SET_CHAR_MONEY russian7_s4 250 GOSUB runkill_s4label ENDIF IF NOT IS_CHAR_DEAD russian11_s4 enemy_s4 = russian11_s4 enemytarget_s4 = scplayer enemyx_s4 = 1717.0 enemyy_s4 = -1667.75 enemyz_s4 = 20.27 enemyx2_s4 = 1715.609 enemyy2_s4 = -1657.258 enemyz2_s4 = 20.271 GOSUB run2kill_s4label ENDIF russian7_s4flag = 1 ENDIF ENDIF ENDIF IF russian13_s4flag = 0 IF DOES_CHAR_EXIST russian13_s4 IF IS_CHAR_IN_AREA_3D scplayer 1738.42 -1651.07 17.0 1698.7 -1659.61 22.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR russian13_s4 scplayer OR IS_CHAR_DEAD russian4_s4 IF NOT IS_CHAR_DEAD russian13_s4 enemy_s4 = russian13_s4 enemytarget_s4 = scplayer enemyx_s4 = 1729.928 enemyy_s4 = -1667.75 enemyz_s4 = 22.85 enemyx2_s4 = 1725.52 enemyy2_s4 = -1663.737 enemyz2_s4 = 20.5 GOSUB run2kill_s4label ENDIF russian13_s4flag = 1 ENDIF ENDIF ENDIF IF smokeshoot_s4flag < 7 IF russian1remove_s4flag = 0 IF IS_CHAR_DEAD russian1_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian1_s4 REMOVE_BLIP bike1_s4blip russianseliminated_s3counter ++ russian1remove_s4flag = 1 ENDIF ENDIF IF russian2remove_s4flag = 0 IF IS_CHAR_DEAD russian2_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian2_s4 REMOVE_BLIP bike2_s4blip russianseliminated_s3counter ++ russian2remove_s4flag = 1 ENDIF ENDIF IF russian3remove_s4flag = 0 IF IS_CHAR_DEAD russian3_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian3_s4 REMOVE_BLIP bike3_s4blip russianseliminated_s3counter ++ russian3remove_s4flag = 1 ENDIF ENDIF IF russian4remove_s4flag = 0 IF IS_CHAR_DEAD russian4_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian4_s4 REMOVE_BLIP bike4_s4blip russianseliminated_s3counter ++ russian4remove_s4flag = 1 ENDIF ENDIF IF russian5remove_s4flag = 0 IF IS_CHAR_DEAD russian5_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian5_s4 REMOVE_BLIP bike5_s4blip russianseliminated_s3counter ++ russian5remove_s4flag = 1 ENDIF ENDIF IF russian6remove_s4flag = 0 IF IS_CHAR_DEAD russian6_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian6_s4 REMOVE_BLIP bike6_s4blip russianseliminated_s3counter ++ russian6remove_s4flag = 1 ENDIF ENDIF IF russian7remove_s4flag = 0 IF IS_CHAR_DEAD russian7_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian7_s4 REMOVE_BLIP bike7_s4blip russianseliminated_s3counter ++ russian7remove_s4flag = 1 ENDIF ENDIF IF russian10remove_s4flag = 0 IF IS_CHAR_DEAD russian10_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian10_s4 REMOVE_BLIP bike10_s4blip russianseliminated_s3counter ++ russian10remove_s4flag = 1 ENDIF ENDIF IF russian11remove_s4flag = 0 IF IS_CHAR_DEAD russian11_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian11_s4 REMOVE_BLIP bike11_s4blip russianseliminated_s3counter ++ russian11remove_s4flag = 1 ENDIF ENDIF IF russian12remove_s4flag = 0 IF IS_CHAR_DEAD russian12_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian12_s4 REMOVE_BLIP bike12_s4blip russianseliminated_s3counter ++ russian12remove_s4flag = 1 ENDIF ENDIF IF russian13remove_s4flag = 0 IF IS_CHAR_DEAD russian13_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian13_s4 REMOVE_BLIP russian13_s4blip russianseliminated_s3counter ++ russian13remove_s4flag = 1 ENDIF ENDIF ENDIF //dialogue IF smoke_s4flag = 11 IF warp_s4flag = 0 GOSUB process_audio_s4 //play mission audio IF progressaudio_s4flag = 0 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_BO //Use some cover, they’s blasting like fools! $input_text_s4 = SMO4_BO //Use some cover, they’s blasting like fools! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 1 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_EK //Ice those fools! $input_text_s4 = SMO4_EK //Ice those fools! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 2 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_DA //Big Smoke, you made big mistake, huh! $input_text_s4 = SMO4_DA //Big Smoke, you made big mistake, huh! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 3 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_BN //Watch yourself, CJ, I think they’s pissed! $input_text_s4 = SMO4_BN //Watch yourself, CJ, I think they’s pissed! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 4 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_BP //Take the right and cover my ass! $input_text_s4 = SMO4_BP //Take the right and cover my ass! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 5 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_EG //Keep it up, CJ! $input_text_s4 = SMO4_EG //Keep it up, CJ! GOSUB load_audio_s4 ENDIF ENDIF // IF progressaudio_s4flag = 9 // IF handlingudio_s4flag = 0 // audio_label_s4 = SOUND_SMO4_ED //Back me up, here! // $input_text_s4 = SMO4_ED //Back me up, here! // GOSUB load_audio_s4 // ENDIF // ENDIF IF progressaudio_s4flag = 6 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_EJ //My homie is making y’all pay! $input_text_s4 = SMO4_EJ //My homie is making y’all pay! GOSUB load_audio_s4 ENDIF ENDIF IF oneoff_s4flag = 0 IF smokeshoot_s4flag = 6 OR russianseliminated_s3counter = 11 handlingudio_s4flag = 0 progressaudio_s4flag = 12 oneoff_s4flag = 1 ENDIF ENDIF IF progressaudio_s4flag = 12 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_DJ //Stick with me, CJ, we’re out of here! $input_text_s4 = SMO4_DJ //Stick with me, CJ, we’re out of here! GOSUB load_audio_s4 ENDIF ENDIF ENDIF ENDIF IF helpshoottext_s4flag = 1 PRINT_HELP DGS1_63 //Shooting whilst you are crouching improves your accuracy. TIMERB = 0 helpshoottext_s4flag = 2 ENDIF IF helpshoottext_s4flag = 2 IF TIMERB > 10000 PRINT_HELP DGS1_2 //If enemies are using cover it may be better to use precision aimong on the ~h~right analoge stick ~w~whilst shooting. TIMERB = 0 helpshoottext_s4flag = 3 ENDIF ENDIF //warp smoke outside IF NOT IS_CHAR_DEAD big_smoke IF LOCATE_CHAR_ON_FOOT_3D big_smoke 1704.45 -1667.71 19.68 6.0 6.0 4.0 FALSE IF LOCATE_CHAR_ON_FOOT_3D scplayer 1700.49 -1667.87 19.46 8.5 8.5 4.0 FALSE IF smokeshoot_s4flag = 6 OR russianseliminated_s3counter = 11 SET_CHAR_PROOFS big_smoke TRUE TRUE TRUE TRUE TRUE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL PLAYER1 OFF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF NOT IS_CHAR_DEAD big_smoke SET_AREA_VISIBLE 0 SET_CHAR_AREA_VISIBLE big_smoke 0 CLEAR_CHAR_TASKS_IMMEDIATELY big_smoke SET_CHAR_AREA_VISIBLE scplayer 0 //used entry exit SET_CHAR_COORDINATES big_smoke 1696.229 -1669.133 19.23 SET_CHAR_HEADING big_smoke 86.7366 SET_CHAR_COORDINATES scplayer 1696.339 -1666.897 19.2 SET_CHAR_HEADING scplayer 85.4 ENDIF // 8 stay and shoot CREATE_CHAR PEDTYPE_MISSION1 MAFFB 1682.685 -1671.516 19.24 russian8_s4 SET_CHAR_HEADING russian8_s4 289.407 //stay in same place shoot smoke stayshoot_s4label SET_CHAR_DECISION_MAKER russian8_s4 smoke4_DM SET_CHAR_WEAPON_SKILL russian8_s4 WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR russian8_s4 WEAPONTYPE_PISTOL 9999 SET_CHAR_ACCURACY russian8_s4 50 SET_CHAR_HEALTH russian8_s4 150 ADD_BLIP_FOR_CHAR russian8_s4 bike1_s4blip CHANGE_BLIP_DISPLAY bike1_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike1_s4blip 2 SET_CHAR_KEEP_TASK russian8_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1676.529 -1676.516 20.47 russian14_s4 SET_CHAR_HEADING russian14_s4 299.59 //stay in same place shoot player no duck stayshootnoduck_s4label SET_CHAR_DECISION_MAKER russian14_s4 smoke4_DM GIVE_WEAPON_TO_CHAR russian14_s4 WEAPONTYPE_MP5 9999 SET_CHAR_ACCURACY russian14_s4 30 SET_CHAR_HEALTH russian14_s4 150 SET_CHAR_ALLOWED_TO_DUCK russian14_s4 FALSE ADD_BLIP_FOR_CHAR russian14_s4 bike2_s4blip CHANGE_BLIP_DISPLAY bike2_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike2_s4blip 2 SET_CHAR_KEEP_TASK russian14_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1645.896 -1667.693 20.472 russian15_s4 //attack player SET_CHAR_HEADING russian15_s4 270.18 //run twice ->1654.724 -1667.792 20.469 -> 1675.149 -1667.818 20.47 ideally stay in smale place and kill SET_CHAR_DECISION_MAKER russian15_s4 smoke4_DM SET_CHAR_WEAPON_SKILL russian15_s4 WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR russian15_s4 WEAPONTYPE_PISTOL 9999 SET_CHAR_ACCURACY russian15_s4 60 SET_CHAR_HEALTH russian15_s4 150 ADD_BLIP_FOR_CHAR russian15_s4 bike3_s4blip CHANGE_BLIP_DISPLAY bike3_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike3_s4blip 2 SET_CHAR_KEEP_TASK russian15_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1663.022 -1685.541 20.469 russian16_s4 SET_CHAR_HEADING russian16_s4 301.304 //stay in same place shoot player SET_CHAR_DECISION_MAKER russian16_s4 smoke4_DM GIVE_WEAPON_TO_CHAR russian16_s4 WEAPONTYPE_MP5 9999 SET_CHAR_ACCURACY russian16_s4 50 SET_CHAR_HEALTH russian16_s4 125 ADD_BLIP_FOR_CHAR russian16_s4 bike4_s4blip CHANGE_BLIP_DISPLAY bike4_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike4_s4blip 2 SET_CHAR_KEEP_TASK russian16_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1663.079 -1676.61 20.468 russian17_s4 SET_CHAR_HEADING russian17_s4 268.5 //stay in same place shoot player stayshootnoduck_s4label SET_CHAR_DECISION_MAKER russian17_s4 smoke4_DM GIVE_WEAPON_TO_CHAR russian17_s4 WEAPONTYPE_MP5 9999 SET_CHAR_ACCURACY russian17_s4 60 SET_CHAR_MAX_HEALTH russian17_s4 125 SET_CHAR_HEALTH russian17_s4 125 SET_CHAR_ALLOWED_TO_DUCK russian17_s4 FALSE ADD_BLIP_FOR_CHAR russian17_s4 bike5_s4blip CHANGE_BLIP_DISPLAY bike5_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike5_s4blip 2 SET_CHAR_KEEP_TASK russian17_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1662.793 -1670.124 20.463 russian18_s4 SET_CHAR_HEADING russian18_s4 268.5 //stay in same place shoot smoke SET_CHAR_DECISION_MAKER russian18_s4 smoke4_DM GIVE_WEAPON_TO_CHAR russian18_s4 WEAPONTYPE_MP5 9999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian18_s4 TRUE SET_CHAR_ACCURACY russian18_s4 60 SET_CHAR_MAX_HEALTH russian18_s4 150 SET_CHAR_HEALTH russian18_s4 150 ADD_BLIP_FOR_CHAR russian18_s4 bike6_s4blip CHANGE_BLIP_DISPLAY bike6_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike6_s4blip 2 SET_CHAR_KEEP_TASK russian18_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1698.51 -1678.459 19.233 russian9_s4 SET_CHAR_HEADING russian9_s4 99.699 //run twice -> 1691.416 -1678.243 20.24 -> 1669.863 -1679.125 20.47 ideally stay in smale place and kill SET_CHAR_DECISION_MAKER russian9_s4 smoke4_DM SET_CHAR_WEAPON_SKILL russian9_s4 WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR russian9_s4 WEAPONTYPE_PISTOL 9999 SET_CHAR_ACCURACY russian9_s4 30 SET_CHAR_HEALTH russian9_s4 150 ADD_BLIP_FOR_CHAR russian9_s4 bike7_s4blip CHANGE_BLIP_DISPLAY bike7_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike7_s4blip 2 SET_CHAR_KEEP_TASK russian9_s4 TRUE TASK_TOGGLE_DUCK scplayer TRUE WAIT 500 IF NOT IS_CHAR_DEAD big_smoke SET_CHAR_PROOFS big_smoke FALSE FALSE FALSE FALSE FALSE ENDIF SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL PLAYER1 ON DO_FADE 750 FADE_IN russianseliminated_s3counter = 0 smokeshoot_s4flag = 6 progressaudio_s4flag = 0 handlingudio_s4flag = 0 warp_s4flag = 1 // 3MASTER - do an explicit load scene when exiting the atrium LOAD_SCENE 1691.64 -1668.76 20.20 ENDIF ENDIF ENDIF ENDIF ENDIF //warp flag /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////// Shootout outside Atrium /////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF warp_s4flag = 1 IF smokeshoot_s4flag = 6 IF NOT IS_CHAR_DEAD big_smoke SET_CHAR_ACCURACY big_smoke 80 OPEN_SEQUENCE_TASK smoke6_s4seq TASK_TOGGLE_DUCK -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 1690.24 -1669.363 21.46 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD russian8_s4 TASK_KILL_CHAR_ON_FOOT -1 russian8_s4 ENDIF IF NOT IS_CHAR_DEAD russian14_s4 TASK_KILL_CHAR_ON_FOOT -1 russian14_s4 ENDIF IF NOT IS_CHAR_DEAD russian15_s4 TASK_KILL_CHAR_ON_FOOT -1 russian15_s4 ENDIF CLOSE_SEQUENCE_TASK smoke6_s4seq PERFORM_SEQUENCE_TASK big_smoke smoke6_s4seq CLEAR_SEQUENCE_TASK smoke6_s4seq smokeshoot_s4flag = 7 ENDIF ENDIF IF smokeshoot_s4flag = 7 IF NOT IS_CHAR_DEAD big_smoke GET_SCRIPT_TASK_STATUS big_smoke PERFORM_SEQUENCE_TASK sequencetask_s4 IF sequencetask_s4 = FINISHED_TASK SET_CHAR_ACCURACY big_smoke 60 OPEN_SEQUENCE_TASK smoke7_s4seq TASK_FOLLOW_PATH_NODES_TO_COORD -1 1669.82 -1671.917 21.43 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD russian17_s4 TASK_KILL_CHAR_ON_FOOT -1 russian17_s4 ENDIF IF NOT IS_CHAR_DEAD russian15_s4 TASK_KILL_CHAR_ON_FOOT -1 russian15_s4 ENDIF IF NOT IS_CHAR_DEAD russian18_s4 TASK_KILL_CHAR_ON_FOOT -1 russian18_s4 ENDIF CLOSE_SEQUENCE_TASK smoke7_s4seq PERFORM_SEQUENCE_TASK big_smoke smoke7_s4seq CLEAR_SEQUENCE_TASK smoke7_s4seq smokeshoot_s4flag = 8 ENDIF ENDIF ENDIF IF smokeshoot_s4flag = 8 IF NOT IS_CHAR_DEAD big_smoke GET_SCRIPT_TASK_STATUS big_smoke PERFORM_SEQUENCE_TASK sequencetask_s4 IF sequencetask_s4 = FINISHED_TASK OPEN_SEQUENCE_TASK smoke8_s4seq TASK_TOGGLE_DUCK -1 TRUE IF NOT IS_CHAR_DEAD russian9_s4 TASK_KILL_CHAR_ON_FOOT -1 russian9_s4 ENDIF IF NOT IS_CHAR_DEAD russian16_s4 TASK_KILL_CHAR_ON_FOOT -1 russian16_s4 ENDIF CLOSE_SEQUENCE_TASK smoke8_s4seq PERFORM_SEQUENCE_TASK big_smoke smoke8_s4seq CLEAR_SEQUENCE_TASK smoke8_s4seq smokeshoot_s4flag = 9 ENDIF ENDIF ENDIF IF smokeshoot_s4flag = 9 IF NOT IS_CHAR_DEAD big_smoke GET_SCRIPT_TASK_STATUS big_smoke PERFORM_SEQUENCE_TASK sequencetask_s4 IF sequencetask_s4 = FINISHED_TASK OR russianseliminated_s3counter = 7 TIMERB = 0 getonbikecut_s4flag = 1 smoke_s4flag = 12 ENDIF ENDIF ENDIF IF russianseliminated_s3counter = 7 TIMERB = 0 getonbikecut_s4flag = 1 smoke_s4flag = 12 ENDIF /////////////////////////////////////////// SECOND SET OF GUYS IF russian8_s4flag = 0 IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD russian8_s4 IF NOT IS_CHAR_DEAD big_smoke enemy_s4 = russian8_s4 enemytarget_s4 = big_smoke GOSUB stayshootnoduck_s4label ENDIF ENDIF IF NOT IS_CHAR_DEAD russian14_s4 enemy_s4 = russian14_s4 enemytarget_s4 = scplayer GOSUB stayshootnoduck_s4label ENDIF IF NOT IS_CHAR_DEAD russian16_s4 IF NOT IS_CHAR_DEAD big_smoke enemy_s4 = russian16_s4 enemytarget_s4 = scplayer GOSUB stayshoot_s4label ENDIF ENDIF IF NOT IS_CHAR_DEAD russian17_s4 enemy_s4 = russian17_s4 enemytarget_s4 = scplayer GOSUB stayshootnoduck_s4label ENDIF IF NOT IS_CHAR_DEAD russian18_s4 IF NOT IS_CHAR_DEAD big_smoke enemy_s4 = russian18_s4 enemytarget_s4 = big_smoke GOSUB stayshoot_s4label ENDIF ENDIF russian8_s4flag = 1 ENDIF ENDIF IF russian9_s4flag = 0 IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD russian9_s4 enemy_s4 = russian9_s4 enemytarget_s4 = scplayer enemyx_s4 = 1669.863 enemyy_s4 = -1679.125 enemyz_s4 = 20.47 GOSUB runkillstay_s4label ENDIF IF NOT IS_CHAR_DEAD russian15_s4 enemy_s4 = russian15_s4 enemytarget_s4 = scplayer enemyx_s4 = 1675.149 enemyy_s4 = -1667.818 enemyz_s4 = 20.47 GOSUB runkillstay_s4label ENDIF russian9_s4flag = 1 ENDIF ENDIF //play mission audio IF progressaudio_s4flag = 0 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_EB //Stick real close, Carl! $input_text_s4 = SMO4_EB //Stick real close, Carl! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 1 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_BM //Keep your head down – the air’s thick with lead! $input_text_s4 = SMO4_BM //Keep your head down – the air’s thick with lead! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 2 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_DG //Smoke, you and your friend are dead men! $input_text_s4 = SMO4_DG //Smoke, you and your friend are dead men! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 3 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_BG //Motherfuckers! $input_text_s4 = SMO4_BG //Motherfuckers! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 4 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_ED //Back me up, here! $input_text_s4 = SMO4_ED //Back me up, here! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 5 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_EF //That’s my dog, CJ! $input_text_s4 = SMO4_EF //That’s my dog, CJ! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 6 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_EH //Holmes, you are ice cold! $input_text_s4 = SMO4_EH //Holmes, you are ice cold! GOSUB load_audio_s4 ENDIF ENDIF //audio GOSUB process_audio_s4 // counter IF russian8remove_s4flag = 0 IF IS_CHAR_DEAD russian8_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian8_s4 REMOVE_BLIP bike1_s4blip russianseliminated_s3counter ++ russian8remove_s4flag = 1 ENDIF ENDIF IF russian14remove_s4flag = 0 IF IS_CHAR_DEAD russian14_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian14_s4 REMOVE_BLIP bike2_s4blip russianseliminated_s3counter ++ russian14remove_s4flag = 1 ENDIF ENDIF IF russian15remove_s4flag = 0 IF IS_CHAR_DEAD russian15_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian15_s4 REMOVE_BLIP bike3_s4blip russianseliminated_s3counter ++ russian15remove_s4flag = 1 ENDIF ENDIF IF russian16remove_s4flag = 0 IF IS_CHAR_DEAD russian16_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian16_s4 REMOVE_BLIP bike4_s4blip russianseliminated_s3counter ++ russian16remove_s4flag = 1 ENDIF ENDIF IF russian17remove_s4flag = 0 IF IS_CHAR_DEAD russian17_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian17_s4 REMOVE_BLIP bike5_s4blip russianseliminated_s3counter ++ russian17remove_s4flag = 1 ENDIF ENDIF IF russian18remove_s4flag = 0 IF IS_CHAR_DEAD russian18_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian18_s4 REMOVE_BLIP bike6_s4blip russianseliminated_s3counter ++ russian18remove_s4flag = 1 ENDIF ENDIF IF russian9remove_s4flag = 0 IF IS_CHAR_DEAD russian9_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian9_s4 REMOVE_BLIP bike7_s4blip russianseliminated_s3counter ++ russian9remove_s4flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////// Getting on Bike //////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF getonbikecut_s4flag = 1 IF TIMERB > 2000 getonbikecut_s4flag = 2 CHECKPOINT_SAVE 99 //moved here as easy fix - WDTODO move this after the recordings ENDIF ENDIF IF getonbikecut_s4flag = 2 IF smoke_s4flag = 12 IF NOT IS_CHAR_DEAD big_smoke CLEAR_PRINTS SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL PLAYER1 OFF SET_PLAYER_ENTER_CAR_BUTTON PLAYER1 FALSE //////////////////////////////////////////////////////////////////////////// CLEAR_AREA 1672.3206 -1697.2590 200.0 200.0 FALSE SET_FIXED_CAMERA_POSITION 1672.3206 -1697.2590 20.6216 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1672.0695 -1696.5005 21.2228 JUMP_CUT CLEAR_ONSCREEN_COUNTER smokehealth_s4 REMOVE_BLIP smoke_s4blip CLEAR_CHAR_TASKS_IMMEDIATELY big_smoke CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES big_smoke 1668.756 -1689.291 20.869 SET_CHAR_HEADING big_smoke 203.5 SET_CHAR_COORDINATES scplayer 1667.26 -1683.5 20.869 SET_CHAR_HEADING scplayer 203.5 MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED MAFFB CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SMO4_EO //Time to return the favour, CJ, get on! REQUEST_CAR_RECORDING 250 REQUEST_CAR_RECORDING 251 REQUEST_CAR_RECORDING 252 REQUEST_MODEL BF400 WAIT 100 LOAD_ALL_MODELS_NOW WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 250 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 251 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 252 OR NOT HAS_MODEL_LOADED BF400 WAIT 0 ENDWHILE WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE DELETE_CHAR hoochie_s4 CLEAR_AREA 1668.67 -1694.68 19.97 200.0 FALSE CUSTOM_PLATE_FOR_NEXT_CAR BF400 &_IMY_AK CREATE_CAR BF400 1671.7914 -1695.1062 19.4800 smokebike_s4 SET_CAR_HEADING smokebike_s4 117.5347 SET_CAR_PROOFS smokebike_s4 FALSE TRUE TRUE TRUE TRUE SET_INTERPOLATION_PARAMETERS 0.0 3000 SET_CAN_BURST_CAR_TYRES smokebike_s4 FALSE GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_MICRO_UZI 99999 SET_CAR_HEALTH smokebike_s4 3000 SET_CAN_BURST_CAR_TYRES smokebike_s4 FALSE TIMERA = 0 smoke_s4flag = 13 ENDIF ENDIF IF smoke_s4flag = 13 IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CAR_DEAD smokebike_s4 SET_FIXED_CAMERA_POSITION 1672.3206 -1697.2590 20.6216 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1672.0695 -1696.5005 20.6212 INTERPOLATION TIMERA = 0 smoke_s4flag = 14 ENDIF ENDIF ENDIF IF smoke_s4flag = 14 IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CAR_DEAD smokebike_s4 IF TIMERA > 900 TASK_ENTER_CAR_AS_DRIVER big_smoke smokebike_s4 5000 TASK_ENTER_CAR_AS_PASSENGER scplayer smokebike_s4 5000 0 CLEAR_MISSION_AUDIO 1 PLAY_MISSION_AUDIO 2 PRINT_NOW SMO4_EO 5000 1 //Time to return the favour, CJ, get on! oneoff_s4flag = 2 smoke_s4flag = 15 ENDIF ENDIF ENDIF ENDIF IF smoke_s4flag = 15 IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CAR_DEAD smokebike_s4 IF IS_CHAR_SITTING_IN_CAR big_smoke smokebike_s4 SET_FIXED_CAMERA_POSITION 1672.9832 -1692.0907 19.8891 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1672.5699 -1692.9985 19.9589 JUMP_CUT POINT_CAMERA_AT_CAR smokebike_s4 FIXED JUMP_CUT CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 1674.371 -1695.0973 19.814 SET_CHAR_HEADING scplayer 90.0 TASK_ENTER_CAR_AS_PASSENGER scplayer smokebike_s4 5000 0 TASK_LOOK_AT_CHAR big_smoke scplayer 2000 SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE scplayer KNOCKOFFBIKE_NEVER SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE big_smoke KNOCKOFFBIKE_NEVER smoke_s4flag = 16 ENDIF ENDIF ENDIF ENDIF IF smoke_s4flag = 16 IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CAR_DEAD smokebike_s4 IF IS_CHAR_SITTING_IN_CAR scplayer smokebike_s4 SET_RADIO_CHANNEL RS_MODERN_ROCK CLEAR_LOOK_AT big_smoke START_PLAYBACK_RECORDED_CAR smokebike_s4 250 TIMERA = 0 smoke_s4flag = 17 ENDIF ENDIF ENDIF ENDIF IF smoke_s4flag = 17 IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CAR_DEAD smokebike_s4 IF IS_CHAR_SITTING_IN_CAR scplayer smokebike_s4 IF TIMERA > 1600 SET_FIXED_CAMERA_POSITION 1623.3313 -1705.4485 19.7991 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1624.3309 -1705.4746 19.7991 JUMP_CUT STOP_PLAYBACK_RECORDED_CAR smokebike_s4 WAIT 0 IF NOT IS_CAR_DEAD smokebike_s4 START_PLAYBACK_RECORDED_CAR smokebike_s4 251 ENDIF TIMERA = 0 getonbikecut_s4flag = 3 smoke_s4flag = 18 ENDIF ENDIF ENDIF ENDIF ENDIF IF oneoff_s4flag = 2 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT SMO4_EO oneoff_s4flag = 3 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////// CITY CHASE SECTION CITY //////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF firstchase_s4flag = 0 OR firstchase_s4flag = 1 OR firstchase_s4flag = 2 OR firstchase_s4flag = 3 IF NOT IS_CAR_DEAD smokebike_s4 IF NOT finalchase_s4flag > 3 GET_CAR_HEALTH smokebike_s4 bikehealth_s4 //bikehealth_s4 = bikehealth_s4 - 1000 //1000 IF bikehealth_s4 <= 0 bikehealth_s4 = 0 SET_CAR_PROOFS smokebike_s4 FALSE FALSE FALSE FALSE FALSE SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE IF NOT IS_CHAR_DEAD big_smoke SET_CHAR_PROOFS big_smoke FALSE FALSE FALSE FALSE FALSE TASK_DIE big_smoke ENDIF EXPLODE_CAR smokebike_s4 PRINT_NOW DGS1_60 7000 1 //~r~Smoke died! GOTO mission_drugs1_failed ELSE bikehealth_s4 = bikehealth_s4 / 30 ENDIF ENDIF ENDIF ENDIF IF firstchase_s4flag = 0 IF smoke_s4flag = 18 IF TIMERA > 700 z = 19.7991 REQUEST_CAR_RECORDING 253 //coach REQUEST_CAR_RECORDING 254 //reverse car car1 REQUEST_CAR_RECORDING 255 //at the beginning crashes out car2 REQUEST_CAR_RECORDING 256 //first enemy bike REQUEST_CAR_RECORDING 257 //second enemy bike REQUEST_MODEL SULTAN REQUEST_MODEL KMB_SKIP REQUEST_MODEL NEBULA REQUEST_MODEL COACH REQUEST_MODEL PACKER CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SMO4_FA //Hey man, we got bikes all on us! LOAD_ALL_MODELS_NOW WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 253 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 254 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 255 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 256 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 257 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED SULTAN OR NOT HAS_MODEL_LOADED KMB_SKIP OR NOT HAS_MODEL_LOADED NEBULA OR NOT HAS_MODEL_LOADED COACH OR NOT HAS_MODEL_LOADED PACKER OR NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE CREATE_OBJECT KMB_SKIP 1563.6030 -1437.1074 12.3470 skip_s4 SET_OBJECT_HEADING skip_s4 90.4568 FREEZE_OBJECT_POSITION skip_s4 TRUE CREATE_CAR COACH 1552.2089 -1437.2998 12.3828 coach1_s4 SET_CAR_HEADING coach1_s4 90.2081 FREEZE_CAR_POSITION coach1_s4 TRUE CREATE_CAR COACH 1539.7588 -1437.3400 12.3906 coach2_s4 SET_CAR_HEADING coach2_s4 90.2081 FREEZE_CAR_POSITION coach2_s4 TRUE CREATE_CAR NEBULA 1680.473 -1589.874 13.23 car1_s4 SET_CAR_HEADING car1_s4 87.883 CHANGE_CAR_COLOUR car1_s4 CARCOLOUR_CHERRYRED CARCOLOUR_CHERRYRED CREATE_CHAR_INSIDE_CAR car1_s4 PEDTYPE_MISSION1 MALE01 driver1_s4 SET_CHAR_DECISION_MAKER driver1_s4 smoke4_DM CREATE_CAR NEBULA 1594.553 -1595.0389 13.243 car2_s4 SET_CAR_HEADING car2_s4 271.189 CHANGE_CAR_COLOUR car2_s4 CARCOLOUR_LIGHTBLUEGREY CARCOLOUR_LIGHTBLUEGREY CREATE_CHAR_INSIDE_CAR car2_s4 PEDTYPE_MISSION1 MALE01 driver2_s4 SET_CHAR_DECISION_MAKER driver2_s4 smoke4_DM CREATE_CAR NEBULA 1655.527 -1550.667 13.226 car3_s4 SET_CAR_HEADING car3_s4 180.735 CHANGE_CAR_COLOUR car3_s4 51 51 CREATE_CHAR_INSIDE_CAR car3_s4 PEDTYPE_MISSION1 MALE01 driver3_s4 SET_CHAR_DECISION_MAKER driver3_s4 smoke4_DM CREATE_CAR NEBULA 1655.391 -1463.511 13.22 car4_s4 SET_CAR_HEADING car4_s4 180.735 CHANGE_CAR_COLOUR car4_s4 CARCOLOUR_MIDNIGHTBLUE CARCOLOUR_MIDNIGHTBLUE SET_CAR_HEAVY car4_s4 TRUE CREATE_CHAR_INSIDE_CAR car4_s4 PEDTYPE_MISSION1 MALE01 driver4_s4 SET_CHAR_DECISION_MAKER driver4_s4 smoke4_DM CREATE_CAR NEBULA 1660.788 -1563.222 13.23 car5_s4 //-1553 SET_CAR_HEADING car5_s4 358.832 CHANGE_CAR_COLOUR car5_s4 73 73 CREATE_CHAR_INSIDE_CAR car5_s4 PEDTYPE_MISSION1 MALE01 driver5_s4 SET_CHAR_DECISION_MAKER driver5_s4 smoke4_DM CREATE_CAR NEBULA 1660.594 -1522.353 13.225 car6_s4 SET_CAR_HEADING car6_s4 358.832 CHANGE_CAR_COLOUR car6_s4 99 99 CREATE_CHAR_INSIDE_CAR car6_s4 PEDTYPE_MISSION1 MALE01 driver6_s4 SET_CHAR_DECISION_MAKER driver6_s4 smoke4_DM CREATE_CAR NEBULA 1693.236 -1589.973 13.224 car7_s4 SET_CAR_HEADING car7_s4 91.298 CHANGE_CAR_COLOUR car7_s4 CARCOLOUR_POLICECARBLUE CARCOLOUR_POLICECARBLUE SET_CAR_HEAVY car7_s4 TRUE CREATE_CHAR_INSIDE_CAR car7_s4 PEDTYPE_MISSION1 MALE01 driver7_s4 SET_CHAR_DECISION_MAKER driver7_s4 smoke4_DM CREATE_CAR PACKER 1590.891 -1590.689 13.09 packer_s4 SET_PETROL_TANK_WEAKPOINT packer_s4 FALSE SET_CAR_HEADING packer_s4 273.516 SET_CAR_HEALTH packer_s4 3000 SET_CAR_ONLY_DAMAGED_BY_PLAYER packer_s4 TRUE CREATE_CHAR_INSIDE_CAR packer_s4 PEDTYPE_MISSION1 MAFFA russian1_s4 SET_CHAR_DECISION_MAKER russian1_s4 smoke4_DM SET_CHAR_CAN_BE_SHOT_IN_VEHICLE russian1_s4 FALSE ADD_BLIP_FOR_CAR packer_s4 packer_s4blip CHANGE_BLIP_DISPLAY packer_s4blip BLIP_ONLY CHANGE_BLIP_SCALE packer_s4blip 2 SET_CAR_PROOFS packer_s4 FALSE TRUE TRUE TRUE TRUE packerstatus_s4flag = 1 TIMERA = 0 WHILE z > 13.8442 //12.6442 WAIT 0 z -=@ 0.02 SET_FIXED_CAMERA_POSITION 1623.3313 -1705.4485 z 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1624.3309 -1705.4746 z JUMP_CUT IF startrecording_s4flag = 0 IF TIMERA > 1000 //1500 IF NOT IS_CAR_DEAD smokebike_s4 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR smokebike_s4 CREATE_CAR BF400 1665.25 -1716.98 12.75 bike1_s4 SET_PETROL_TANK_WEAKPOINT bike1_s4 FALSE SET_CAR_HEADING bike1_s4 84.0 SET_CAR_HEALTH bike1_s4 800 CREATE_CHAR_INSIDE_CAR bike1_s4 PEDTYPE_MISSION1 MAFFA russian2_s4 SET_CHAR_DECISION_MAKER russian2_s4 smoke4_DM SET_CHAR_HEALTH russian2_s4 10 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian2_s4 TRUE CREATE_CHAR_AS_PASSENGER bike1_s4 PEDTYPE_MISSION1 MAFFA 0 russian3_s4 GIVE_WEAPON_TO_CHAR russian3_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_DECISION_MAKER russian3_s4 smoke4_DM SET_CHAR_HEALTH russian3_s4 10 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian3_s4 TRUE ADD_BLIP_FOR_CAR bike1_s4 bike1_s4blip CHANGE_BLIP_DISPLAY bike1_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike1_s4blip 2 bike1swap_s4flag = 1 bike1_s4flag = 1 WAIT 0 IF NOT IS_CAR_DEAD smokebike_s4 START_PLAYBACK_RECORDED_CAR smokebike_s4 252 //SET_INTERPOLATION_PARAMETERS 0.0 3000 SET_PLAYBACK_SPEED smokebike_s4 0.9 ENDIF IF NOT IS_CAR_DEAD bike1_s4 START_PLAYBACK_RECORDED_CAR bike1_s4 256 //SET_INTERPOLATION_PARAMETERS 0.0 3000 SET_PLAYBACK_SPEED bike1_s4 0.9 ENDIF startrecording_s4flag = 1 ENDIF ENDIF ENDIF ENDIF ENDWHILE smoke_s4flag = 19 ENDIF ENDIF IF smoke_s4flag = 19 IF TIMERA > 8500 IF NOT IS_CAR_DEAD smokebike_s4 IF NOT IS_CHAR_DEAD big_smoke GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_MICRO_UZI 99999 TASK_DRIVE_BY scplayer -1 -1 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 100 SET_HEADING_FOR_ATTACHED_PLAYER PLAYER1 95.5 200.0 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON //SET_PLAYER_FAST_RELOAD PLAYER1 TRUE DISPLAY_ONSCREEN_COUNTER_WITH_STRING bikehealth_s4 COUNTER_DISPLAY_BAR DGS1_59 difficulty_s4flag++ IF difficulty_s4flag > 1 difficulty_s4value = 30 ELSE difficulty_s4value = 92 ENDIF IF NOT IS_CHAR_DEAD russian2_s4 GIVE_WEAPON_TO_CHAR russian2_s4 WEAPONTYPE_MICRO_UZI 99999 TASK_DRIVE_BY russian2_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE difficulty_s4value ENDIF IF NOT IS_CHAR_DEAD russian3_s4 TASK_DRIVE_BY russian3_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 100 ENDIF SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE SET_CHAR_PROOFS big_smoke TRUE TRUE TRUE TRUE TRUE PRINT_HELP DGS1_HD // To look around on the bike use the camera controls. To fire tap ~m~~widget_attack~. progressaudio_s4flag = 0 handlingudio_s4flag = 0 TIMERB = 0 text_s4flag = 200 smoke_s4flag = 20 ENDIF ENDIF ENDIF ENDIF IF text_s4flag = 200 IF IS_HELP_MESSAGE_BEING_DISPLAYED text_s4flag = 201 ENDIF ENDIF //propose to get rid of this IF text_s4flag = 201 IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED text_s4flag = 202 ENDIF ENDIF IF NOT IS_CAR_DEAD smokebike_s4 IF ambientcar_s4flag = 0 IF LOCATE_CAR_2D smokebike_s4 1620.59 -1612.14 7.0 7.0 FALSE IF NOT IS_CAR_DEAD car1_s4 CAR_GOTO_COORDINATES car1_s4 1571.424 -1590.02 13.23 SET_CAR_CRUISE_SPEED car1_s4 13.5 SET_CAR_FORWARD_SPEED car1_s4 13.5 SET_CAR_DRIVING_STYLE car1_s4 DRIVINGMODE_STOPFORCARS_IGNORELIGHTS ENDIF IF NOT IS_CAR_DEAD car2_s4 CAR_GOTO_COORDINATES car2_s4 1681.473 -1595.0593 13.22 SET_CAR_CRUISE_SPEED car2_s4 13.5 SET_CAR_FORWARD_SPEED car2_s4 4.5 SET_CAR_DRIVING_STYLE car2_s4 DRIVINGMODE_STOPFORCARS_IGNORELIGHTS ENDIF IF NOT IS_CAR_DEAD car7_s4 CAR_GOTO_COORDINATES car7_s4 1582.411 -1590.115 13.228 SET_CAR_CRUISE_SPEED car7_s4 9.0 SET_CAR_DRIVING_STYLE car7_s4 DRIVINGMODE_STOPFORCARS_IGNORELIGHTS ENDIF IF NOT IS_CAR_DEAD packer_s4 START_PLAYBACK_RECORDED_CAR packer_s4 255 SET_PLAYBACK_SPEED packer_s4 0.9 ENDIF ambientcar_s4flag = 1 ENDIF ENDIF IF ambientcar_s4flag = 1 IF LOCATE_CAR_2D smokebike_s4 1654.1 -1589.48 10.0 10.0 FALSE IF NOT IS_CAR_DEAD car3_s4 CAR_GOTO_COORDINATES car3_s4 1655.839 -1576.842 13.226 SET_CAR_CRUISE_SPEED car3_s4 9.0 SET_CAR_DRIVING_STYLE car3_s4 DRIVINGMODE_STOPFORCARS_IGNORELIGHTS ENDIF IF NOT IS_CAR_DEAD car4_s4 CAR_GOTO_COORDINATES car4_s4 1655.593 -1559.511 13.227 SET_CAR_CRUISE_SPEED car4_s4 9.0 SET_CAR_FORWARD_SPEED car4_s4 9.0 SET_CAR_DRIVING_STYLE car4_s4 DRIVINGMODE_STOPFORCARS_IGNORELIGHTS ENDIF IF NOT IS_CAR_DEAD car5_s4 CAR_GOTO_COORDINATES car5_s4 1702.0 -1444.0 13.0 SET_CAR_CRUISE_SPEED car5_s4 9.0 SET_CAR_FORWARD_SPEED car5_s4 10.8 SET_CAR_DRIVING_STYLE car5_s4 DRIVINGMODE_STOPFORCARS_IGNORELIGHTS ENDIF IF NOT IS_CAR_DEAD car6_s4 CAR_GOTO_COORDINATES car6_s4 1702.0 -1444.0 13.0 SET_CAR_CRUISE_SPEED car6_s4 9.0 SET_CAR_FORWARD_SPEED car6_s4 9.0 SET_CAR_DRIVING_STYLE car6_s4 DRIVINGMODE_STOPFORCARS_IGNORELIGHTS ENDIF ambientcar_s4flag = 2 ENDIF ENDIF IF ambientcar_s4flag = 2 IF LOCATE_CAR_2D smokebike_s4 1657.56 -1537.29 10.0 10.0 FALSE CREATE_CAR BF400 1702.127 -1496.87 12.95 bike2_s4 SET_PETROL_TANK_WEAKPOINT bike2_s4 FALSE SET_CAR_HEADING bike2_s4 26.5 SET_CAR_HEALTH bike2_s4 800 CREATE_CHAR_INSIDE_CAR bike2_s4 PEDTYPE_MISSION1 MAFFA russian8_s4 SET_CHAR_DECISION_MAKER russian8_s4 smoke4_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian8_s4 TRUE SET_CHAR_HEALTH russian8_s4 10 CREATE_CHAR_AS_PASSENGER bike2_s4 PEDTYPE_MISSION1 MAFFA 0 russian9_s4 GIVE_WEAPON_TO_CHAR russian9_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian9_s4 TRUE SET_CHAR_DECISION_MAKER russian9_s4 smoke4_DM SET_CHAR_HEALTH russian9_s4 10 ADD_BLIP_FOR_CAR bike2_s4 bike2_s4blip CHANGE_BLIP_DISPLAY bike2_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike2_s4blip 2 bike2swap_s4flag = 1 bike2_s4flag = 1 CREATE_CAR NEBULA 1622.005 -1443.498 13.229 car8_s4 SET_CAR_HEADING car8_s4 266.928 CHANGE_CAR_COLOUR car8_s4 115 115 SET_CAR_HEAVY car8_s4 TRUE CREATE_CHAR_INSIDE_CAR car8_s4 PEDTYPE_MISSION1 MALE01 driver8_s4 SET_CHAR_DECISION_MAKER driver8_s4 smoke4_DM CREATE_CAR NEBULA 1536.288 -1443.049 13.224 car9_s4 SET_CAR_HEADING car9_s4 269.939 CHANGE_CAR_COLOUR car9_s4 122 122 SET_CAR_HEAVY car9_s4 TRUE CREATE_CHAR_INSIDE_CAR car9_s4 PEDTYPE_MISSION1 MALE01 driver9_s4 SET_CHAR_DECISION_MAKER driver9_s4 smoke4_DM ambientcar_s4flag = 3 ENDIF ENDIF IF ambientcar_s4flag = 3 IF LOCATE_CAR_2D smokebike_s4 1657.94 -1468.93 15.0 15.0 FALSE IF NOT IS_CAR_DEAD bike2_s4 START_PLAYBACK_RECORDED_CAR bike2_s4 257 ENDIF IF NOT IS_CHAR_DEAD russian8_s4 IF difficulty_s4flag < 3 GIVE_WEAPON_TO_CHAR russian8_s4 WEAPONTYPE_MICRO_UZI 99999 TASK_DRIVE_BY russian8_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE difficulty_s4value ENDIF ENDIF IF NOT IS_CHAR_DEAD russian9_s4 TASK_DRIVE_BY russian9_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 100 ENDIF DELETE_CAR car1_s4 DELETE_CAR car2_s4 DELETE_CAR car7_s4 IF NOT IS_CAR_DEAD car8_s4 CAR_GOTO_COORDINATES car8_s4 1720.037 -1444.137 13.222 SET_CAR_CRUISE_SPEED car8_s4 9.0 SET_CAR_DRIVING_STYLE car8_s4 DRIVINGMODE_STOPFORCARS_IGNORELIGHTS ENDIF IF NOT IS_CAR_DEAD car9_s4 CAR_GOTO_COORDINATES car9_s4 1654.817 -1492.993 13.22 SET_CAR_CRUISE_SPEED car9_s4 13.5 SET_CAR_FORWARD_SPEED car9_s4 20.0 SET_CAR_DRIVING_STYLE car9_s4 DRIVINGMODE_STOPFORCARS_IGNORELIGHTS ENDIF ambientcar_s4flag = 4 ENDIF ENDIF IF ambientcar_s4flag = 4 IF LOCATE_CAR_2D smokebike_s4 1631.77 -1441.31 12.0 12.0 FALSE ambientcar_s4flag = 5 ENDIF ENDIF IF ambientcar_s4flag = 5 IF LOCATE_CAR_2D smokebike_s4 1545.68 -1437.35 10.0 10.0 FALSE CREATE_CAR NEBULA 1394.751 -1427.224 13.24 car13_s4 SET_CAR_HEADING car13_s4 184.525 CHANGE_CAR_COLOUR car13_s4 99 99 CAR_GOTO_COORDINATES car13_s4 1441.028 -1443.271 13.234 SET_CAR_CRUISE_SPEED car13_s4 13.5 SET_CAR_DRIVING_STYLE car13_s4 DRIVINGMODE_STOPFORCARS_IGNORELIGHTS CREATE_CHAR_INSIDE_CAR car13_s4 PEDTYPE_MISSION1 MALE01 driver5_s4 SET_CHAR_DECISION_MAKER driver5_s4 smoke4_DM ambientcar_s4flag = 6 ENDIF ENDIF IF ambientcar_s4flag = 6 IF LOCATE_CAR_2D smokebike_s4 1508.7 -1440.86 10.0 10.0 FALSE DELETE_CAR car8_s4 DELETE_CAR car3_s4 DELETE_CAR car4_s4 CREATE_CAR COACH 1457.689 -1371.728 13.235 coach3_s4 SET_CAR_HEADING coach3_s4 177.712 START_PLAYBACK_RECORDED_CAR coach3_s4 253 SET_PLAYBACK_SPEED coach3_s4 0.9 CREATE_CAR SULTAN 1374.507 -1394.312 13.272 rcar1_s4 SET_CAR_HEALTH rcar1_s4 400 SET_CAR_HEADING rcar1_s4 193.922 CREATE_CHAR_AS_PASSENGER rcar1_s4 PEDTYPE_MISSION1 MAFFA 0 russian11_s4 GIVE_WEAPON_TO_CHAR russian11_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_DECISION_MAKER russian11_s4 smoke4_DM TASK_DRIVE_BY russian11_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 70 ADD_BLIP_FOR_CAR rcar1_s4 rcar1_s4blip CHANGE_BLIP_DISPLAY rcar1_s4blip BLIP_ONLY CHANGE_BLIP_SCALE rcar1_s4blip 2 CREATE_CAR SULTAN 1374.577 -1401.141 13.102 rcar2_s4 SET_CAR_HEADING rcar2_s4 349.825 CHANGE_CAR_COLOUR rcar2_s4 0 0 SET_CAR_HEALTH rcar2_s4 500 CREATE_CAR SULTAN 1374.362 -1407.883 13.239 rcar3_s4 SET_CAR_HEADING rcar3_s4 194.852 SET_CAR_HEALTH rcar3_s4 500 // CREATE_CHAR_AS_PASSENGER rcar3_s4 PEDTYPE_MISSION1 MAFFA 0 russian12_s4 // GIVE_WEAPON_TO_CHAR russian12_s4 WEAPONTYPE_MICRO_UZI 99999 // SET_CHAR_DECISION_MAKER russian12_s4 smoke4_DM // TASK_DRIVE_BY russian12_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 80 ADD_BLIP_FOR_CAR rcar3_s4 rcar3_s4blip CHANGE_BLIP_DISPLAY rcar3_s4blip BLIP_ONLY CHANGE_BLIP_SCALE rcar3_s4blip 2 //new added car CREATE_CAR SULTAN 1401.0576 -1430.8915 12.3905 rcar4_s4 SET_CAR_HEADING rcar4_s4 10.385 SET_CAR_HEALTH rcar4_s4 500 ADD_BLIP_FOR_CAR rcar4_s4 rcar4_s4blip CHANGE_BLIP_DISPLAY rcar4_s4blip BLIP_ONLY CHANGE_BLIP_SCALE rcar4_s4blip 2 OPEN_CAR_DOOR rcar4_s4 FRONT_LEFT_DOOR OPEN_CAR_DOOR rcar4_s4 FRONT_RIGHT_DOOR CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1399.4642 -1431.6041 12.3905 russian12_s4 SET_CHAR_DECISION_MAKER russian12_s4 smoke4_DM GIVE_WEAPON_TO_CHAR russian12_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_HEALTH russian12_s4 100 enemy_s4 = russian12_s4 enemytarget_s4 = scplayer GOSUB stayshootnoduck_s4label ADD_BLIP_FOR_CHAR russian12_s4 russian12_s4blip CHANGE_BLIP_DISPLAY russian12_s4blip BLIP_ONLY CHANGE_BLIP_SCALE russian12_s4blip 2 CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1401.4662 -1427.3888 12.3905 russian20_s4 SET_CHAR_DECISION_MAKER russian20_s4 smoke4_DM GIVE_WEAPON_TO_CHAR russian20_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_HEALTH russian20_s4 100 enemy_s4 = russian20_s4 enemytarget_s4 = scplayer GOSUB stayshootnoduck_s4label ADD_BLIP_FOR_CHAR russian20_s4 russian20_s4blip CHANGE_BLIP_DISPLAY russian20_s4blip BLIP_ONLY CHANGE_BLIP_SCALE russian20_s4blip 2 // CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1374.992 -1397.639 12.438 russian13_s4 SET_CHAR_DECISION_MAKER russian13_s4 smoke4_DM GIVE_WEAPON_TO_CHAR russian13_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_HEALTH russian13_s4 100 enemy_s4 = russian13_s4 enemytarget_s4 = scplayer GOSUB stayshoot_s4label ADD_BLIP_FOR_CHAR russian13_s4 russian13_s4blip CHANGE_BLIP_DISPLAY russian13_s4blip BLIP_ONLY CHANGE_BLIP_SCALE russian13_s4blip 2 CREATE_CHAR PEDTYPE_MISSION1 MAFFA 1374.543 -1404.678 12.425 russian14_s4 SET_CHAR_DECISION_MAKER russian14_s4 smoke4_DM GIVE_WEAPON_TO_CHAR russian14_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_HEALTH russian14_s4 100 enemy_s4 = russian14_s4 enemytarget_s4 = scplayer GOSUB stayshoot_s4label ADD_BLIP_FOR_CHAR russian14_s4 russian14_s4blip CHANGE_BLIP_DISPLAY russian14_s4blip BLIP_ONLY CHANGE_BLIP_SCALE russian14_s4blip 2 ambientcar_s4flag = 7 ENDIF ENDIF IF ambientcar_s4flag = 7 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR smokebike_s4 IF LOCATE_CAR_2D smokebike_s4 1395.844 -1408.105 5.0 5.0 FALSE FREEZE_CAR_POSITION smokebike_s4 TRUE REMOVE_BLIP packer_s4blip STOP_PLAYBACK_RECORDED_CAR bike1_s4 REMOVE_BLIP bike1_s4blip STOP_PLAYBACK_RECORDED_CAR bike2_s4 REMOVE_BLIP bike2_s4blip MARK_CHAR_AS_NO_LONGER_NEEDED driver1_s4 MARK_CHAR_AS_NO_LONGER_NEEDED driver2_s4 MARK_CHAR_AS_NO_LONGER_NEEDED driver3_s4 MARK_CHAR_AS_NO_LONGER_NEEDED driver4_s4 MARK_CHAR_AS_NO_LONGER_NEEDED driver5_s4 MARK_CHAR_AS_NO_LONGER_NEEDED driver6_s4 MARK_CHAR_AS_NO_LONGER_NEEDED driver7_s4 MARK_CHAR_AS_NO_LONGER_NEEDED driver8_s4 MARK_CHAR_AS_NO_LONGER_NEEDED driver9_s4 MARK_CAR_AS_NO_LONGER_NEEDED car1_s4 MARK_CAR_AS_NO_LONGER_NEEDED car2_s4 MARK_CAR_AS_NO_LONGER_NEEDED car3_s4 MARK_CAR_AS_NO_LONGER_NEEDED car4_s4 MARK_CAR_AS_NO_LONGER_NEEDED car7_s4 MARK_CAR_AS_NO_LONGER_NEEDED car8_s4 MARK_CAR_AS_NO_LONGER_NEEDED car13_s4 MARK_CAR_AS_NO_LONGER_NEEDED coach3_s4 DELETE_CAR car5_s4 DELETE_CAR car6_s4 DELETE_CAR car9_s4 MARK_MODEL_AS_NO_LONGER_NEEDED COACH MARK_MODEL_AS_NO_LONGER_NEEDED KMB_SKIP MARK_MODEL_AS_NO_LONGER_NEEDED NEBULA DELETE_OBJECT skip_s4 DELETE_CAR coach1_s4 DELETE_CAR coach2_s4 MARK_CAR_AS_NO_LONGER_NEEDED coach3_s4 DELETE_CAR bike2_s4 DELETE_CHAR russian8_s4 DELETE_CHAR russian9_s4 DELETE_CAR bike1_s4 DELETE_CAR packer_s4 DELETE_CHAR russian1_s4 DELETE_CHAR russian2_s4 DELETE_CHAR russian3_s4 MARK_CAR_AS_NO_LONGER_NEEDED car13_s4 TIMERA = 0 ambientcar_s4flag = 8 ENDIF ENDIF ENDIF IF ambientcar_s4flag > 7 IF notonscreen_s4flag = 0 IF NOT IS_POINT_ON_SCREEN 1400.41 -1447.12 12.3 10.0 CLEAR_AREA 1400.41 -1447.12 12.3 50.0 FALSE notonscreen_s4flag = 1 ambientcar_s4flag < 9 ENDIF ENDIF ENDIF IF ambientcar_s4flag = 8 REQUEST_CAR_RECORDING 258 //smokebike REQUEST_CAR_RECORDING 259 //bike1 REQUEST_CAR_RECORDING 260 //bike2 REQUEST_CAR_RECORDING 261 //bike3 REQUEST_CAR_RECORDING 262 //car1 REQUEST_CAR_RECORDING 263 //car2 REQUEST_CAR_RECORDING 264 //bike4 REQUEST_CAR_RECORDING 265 //packer in cut REQUEST_CAR_RECORDING 266 //bike1 in cut REQUEST_CAR_RECORDING 267 //car1 in cut REQUEST_CAR_RECORDING 268 //second bike ambientcar_s4flag = 9 ENDIF IF ambientcar_s4flag = 9 IF TIMERA > 10000 IF HAS_CAR_RECORDING_BEEN_LOADED 258 IF HAS_CAR_RECORDING_BEEN_LOADED 259 IF HAS_CAR_RECORDING_BEEN_LOADED 260 IF HAS_CAR_RECORDING_BEEN_LOADED 261 IF HAS_CAR_RECORDING_BEEN_LOADED 262 IF HAS_CAR_RECORDING_BEEN_LOADED 263 IF HAS_CAR_RECORDING_BEEN_LOADED 264 IF HAS_CAR_RECORDING_BEEN_LOADED 265 IF HAS_CAR_RECORDING_BEEN_LOADED 266 IF HAS_CAR_RECORDING_BEEN_LOADED 267 IF HAS_CAR_RECORDING_BEEN_LOADED 268 firstchase_s4flag = 1 ambientcar_s4flag = 10 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //spin/stop bikes if the both guys are not in car IF packerstatus_s4flag = 1 IF IS_CAR_DEAD packer_s4 STOP_PLAYBACK_RECORDED_CAR packer_s4 packerstatus_s4flag = 2 ENDIF ENDIF IF bike1swap_s4flag = 1 IF NOT IS_CAR_DEAD bike1_s4 IF NOT IS_CHAR_DEAD russian2_s4 ELSE IF NOT IS_CHAR_DEAD russian3_s4 IF IS_CHAR_IN_CAR russian3_s4 bike1_s4 GET_DRIVER_OF_CAR bike1_s4 driverofcar_s4 IF driverofcar_s4 = -1 GET_CAR_COORDINATES smokebike_s4 player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD russian3_s4 player_x player_y -10.0 WARP_CHAR_INTO_CAR russian3_s4 bike1_s4 TASK_DRIVE_BY russian3_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 100 bike1swap_s4flag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike1_s4 18.0 STOP_PLAYBACK_RECORDED_CAR bike1_s4 SET_CAR_ROTATION_VELOCITY bike1_s4 3.5 7.3999 8.1003 bike1swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF bike1swap_s4flag = 2 IF IS_CHAR_DEAD russian3_s4 STOP_PLAYBACK_RECORDED_CAR bike1_s4 IF NOT IS_CAR_DEAD bike1_s4 SET_CAR_FORWARD_SPEED bike1_s4 18.0 SET_CAR_ROTATION_VELOCITY bike1_s4 3.5 7.3999 8.1003 ENDIF bike1swap_s4flag = 3 ENDIF ENDIF IF bike1_s4flag = 1 IF IS_CHAR_DEAD russian2_s4 IF IS_CHAR_DEAD russian3_s4 OR IS_CAR_DEAD bike1_s4 STOP_PLAYBACK_RECORDED_CAR bike1_s4 REMOVE_BLIP bike1_s4blip MARK_CAR_AS_NO_LONGER_NEEDED bike1_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian2_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian3_s4 bike1_s4flag = 2 ENDIF ENDIF ENDIF IF bike2swap_s4flag = 1 IF NOT IS_CAR_DEAD bike2_s4 IF NOT IS_CHAR_DEAD russian8_s4 ELSE IF NOT IS_CHAR_DEAD russian9_s4 IF IS_CHAR_IN_CAR russian9_s4 bike2_s4 GET_DRIVER_OF_CAR bike2_s4 driverofcar_s4 IF driverofcar_s4 = -1 GET_CAR_COORDINATES smokebike_s4 player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD russian9_s4 player_x player_y -10.0 WARP_CHAR_INTO_CAR russian9_s4 bike2_s4 TASK_DRIVE_BY russian9_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 100 bike2swap_s4flag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike2_s4 15.0 STOP_PLAYBACK_RECORDED_CAR bike2_s4 SET_CAR_ROTATION_VELOCITY bike2_s4 3.5 7.3999 8.1003 bike2swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF bike2swap_s4flag = 2 IF IS_CHAR_DEAD russian9_s4 STOP_PLAYBACK_RECORDED_CAR bike2_s4 IF NOT IS_CAR_DEAD bike2_s4 SET_CAR_FORWARD_SPEED bike2_s4 15.0 SET_CAR_ROTATION_VELOCITY bike2_s4 3.5 7.3999 8.1003 ENDIF bike2swap_s4flag = 3 ENDIF ENDIF IF bike2_s4flag = 1 IF IS_CHAR_DEAD russian8_s4 IF IS_CHAR_DEAD russian9_s4 OR IS_CAR_DEAD bike2_s4 STOP_PLAYBACK_RECORDED_CAR bike2_s4 REMOVE_BLIP bike2_s4blip MARK_CAR_AS_NO_LONGER_NEEDED bike2_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian8_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian9_s4 bike2_s4flag = 2 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD russian13_s4 IF DOES_BLIP_EXIST russian13_s4blip REMOVE_BLIP russian13_s4blip ENDIF ENDIF IF IS_CHAR_DEAD russian14_s4 IF DOES_BLIP_EXIST russian14_s4blip REMOVE_BLIP russian14_s4blip ENDIF ENDIF IF IS_CAR_DEAD rcar1_s4 IF DOES_BLIP_EXIST rcar1_s4blip REMOVE_BLIP rcar1_s4blip ENDIF ENDIF IF IS_CAR_DEAD rcar3_s4 IF DOES_BLIP_EXIST rcar3_s4blip REMOVE_BLIP rcar3_s4blip ENDIF ENDIF IF explodecar5_s4flag = 0 IF NOT IS_CAR_DEAD car5_s4 IF NOT IS_CAR_DEAD packer_s4 IF HAS_CAR_BEEN_DAMAGED_BY_CAR car5_s4 packer_s4 EXPLODE_CAR car5_s4 explodecar5_s4flag = 1 ENDIF ENDIF ENDIF ENDIF IF explodecar6_s4flag = 0 IF NOT IS_CAR_DEAD car6_s4 IF NOT IS_CAR_DEAD packer_s4 IF HAS_CAR_BEEN_DAMAGED_BY_CAR car6_s4 packer_s4 EXPLODE_CAR car6_s4 explodecar6_s4flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF smoke_s4flag = 20 OR firstchase_s4flag = 1 IF storm1_s4flag < 3 //audio IF progressaudio_s4flag = 0 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_FB //They after us on a bike, Smoke! $input_text_s4 = SMO4_FB //They after us on a bike, Smoke!! GOSUB load_audio_s4 //CHECKPOINT_SAVE 1 //moved before recordings(2436) - this is instant mission fail ENDIF ENDIF IF progressaudio_s4flag = 1 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_ES //Waste any motherfucker that follows us! $input_text_s4 = SMO4_ES //Waste any motherfucker that follows us! GOSUB load_audio_s4 ENDIF ENDIF IF truckaudio_s4flag = 0 IF LOCATE_CAR_2D smokebike_s4 1659.49 -1580.97 50.0 50.0 FALSE //32.0 truckaudio_s4flag = 1 ENDIF ENDIF //truck then traffic IF progressaudio_s4flag = 2 IF handlingudio_s4flag = 0 IF truckaudio_s4flag = 1 audio_label_s4 = SOUND_SMO4_FD //Shit, man, they coming fo’ us in a truck! $input_text_s4 = SMO4_FD //Shit, man, they coming fo’ us in a truck! GOSUB load_audio_s4 ENDIF ENDIF ENDIF IF progressaudio_s4flag = 3 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_FE //Don’t tell me about it, toast that fucker! $input_text_s4 = SMO4_FE //Don’t tell me about it, toast that fucker! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 4 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_FF //Look at all this traffic $input_text_s4 = SMO4_FF //Look at all this traffic GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 5 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_FG //I’m coming through! $input_text_s4 = SMO4_FG //I’m coming through! GOSUB load_audio_s4 ENDIF ENDIF // IF progressaudio_s4flag = 6 // IF handlingudio_s4flag = 0 // audio_label_s4 = SOUND_SMO4_FH //Don’t just sound your horn, get out the damn way! // $input_text_s4 = SMO4_FH //Don’t just sound your horn, get out the damn way! // GOSUB load_audio_s4 // ENDIF // ENDIF //second bike IF truckaudio_s4flag = 1 IF LOCATE_CAR_2D smokebike_s4 1638.05 -1440.64 60.0 60.0 FALSE //25.0 truckaudio_s4flag = 2 ENDIF ENDIF IF progressaudio_s4flag = 6 IF handlingudio_s4flag = 0 IF truckaudio_s4flag = 2 audio_label_s4 = SOUND_SMO4_FC //We got bikes on our six—smash it Smoke! $input_text_s4 = SMO4_FC //We got bikes on our six—smash it Smoke! GOSUB load_audio_s4 ENDIF ENDIF ENDIF //jumping the coach IF truckaudio_s4flag = 2 IF LOCATE_CAR_2D smokebike_s4 1579.33 -1438.05 55.0 55.0 FALSE //35.0 truckaudio_s4flag = 3 ENDIF ENDIF IF progressaudio_s4flag = 7 IF handlingudio_s4flag = 0 IF truckaudio_s4flag = 3 audio_label_s4 = SOUND_SMO4_FJ //Hold on tight, homie! $input_text_s4 = SMO4_FJ //Hold on tight, homie! GOSUB load_audio_s4 ENDIF ENDIF ENDIF IF progressaudio_s4flag = 8 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_FK //Ah Smoke,! Nooooooo! $input_text_s4 = SMO4_FK //Ah Smoke,! Nooooooo! GOSUB load_audio_s4 ENDIF ENDIF //hit the coach IF truckaudio_s4flag = 3 IF NOT IS_CAR_DEAD packer_s4 IF LOCATE_CAR_2D smokebike_s4 1432.61 -1438.66 12.0 12.0 FALSE truckaudio_s4flag = 4 ENDIF ELSE truckaudio_s4flag = 4 progressaudio_s4flag = 12 ENDIF ENDIF IF progressaudio_s4flag = 9 IF handlingudio_s4flag = 0 IF truckaudio_s4flag = 4 audio_label_s4 = SOUND_SMO4_FL //Ah, they hit a bus! $input_text_s4 = SMO4_FL //Ah, they hit a bus! GOSUB load_audio_s4 ENDIF ENDIF ENDIF IF progressaudio_s4flag = 10 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_FM //I’ll never dis public transport again! $input_text_s4 = SMO4_FM //I’ll never dis public transport again! GOSUB load_audio_s4 ENDIF ENDIF //roadblock IF truckaudio_s4flag = 4 IF LOCATE_CAR_2D smokebike_s4 1406.73 -1393.15 10.0 10.0 FALSE truckaudio_s4flag = 5 ENDIF ENDIF IF progressaudio_s4flag = 11 IF handlingudio_s4flag = 0 IF truckaudio_s4flag = 5 audio_label_s4 = SOUND_SMO4_GA //Damn, road-blocked! $input_text_s4 = SMO4_GA //Damn, road-blocked! GOSUB load_audio_s4 ENDIF ENDIF ENDIF IF progressaudio_s4flag = 12 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_GB //Ah shit Smoke, these cats is organized, $input_text_s4 = SMO4_GB //Ah shit Smoke, these cats is organized, GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 13 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_GD //Look, Carl, all I know is they’s real pissed with us. $input_text_s4 = SMO4_GD //Look, Carl, all I know is they’s real pissed with us. GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 14 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_GE //Hold on, I got an idea! $input_text_s4 = SMO4_GE //Hold on, I got an idea! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 15 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_GF //Smoke, what you thinking? Flood control’s a dead end, man! $input_text_s4 = SMO4_GF //Smoke, what you thinking? Flood control’s a dead end, man! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 16 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_GG //We had to lose those cars! $input_text_s4 = SMO4_GG //We had to lose those cars! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 17 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_GH //Don’t worry, I know a way out, up past Grove street! $input_text_s4 = SMO4_GH //Don’t worry, I know a way out, up past Grove street! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 18 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_GJ //The old sewer tunnel? Oh man.... $input_text_s4 = SMO4_GJ //The old sewer tunnel? Oh man.... GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 19 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_ER //Watch our backs! $input_text_s4 = SMO4_ER //Watch our backs! GOSUB load_audio_s4 ENDIF ENDIF //more bikes IF truckaudio_s4flag = 5 IF LOCATE_CAR_2D smokebike_s4 1362.39 -1590.12 15.0 15.0 FALSE truckaudio_s4flag = 6 ENDIF ENDIF IF progressaudio_s4flag = 20 IF handlingudio_s4flag = 0 IF truckaudio_s4flag = 6 audio_label_s4 = SOUND_SMO4_GK //Smoke, it’s more bikes! $input_text_s4 = SMO4_GK //Smoke, it’s more bikes! GOSUB load_audio_s4 ENDIF ENDIF ENDIF IF progressaudio_s4flag = 21 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_EL //Pop their brains, CJ! $input_text_s4 = SMO4_EL //Pop their brains, CJ! GOSUB load_audio_s4 ENDIF ENDIF //audio GOSUB process_audio_s4 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////// INTO THE STORM DRAINS ////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF firstchase_s4flag = 1 IF NOT IS_CAR_DEAD smokebike_s4 IF storm1_s4flag = 0 CREATE_CAR BF400 1446.923 -1429.569 12.1 bike1_s4 SET_PETROL_TANK_WEAKPOINT bike1_s4 FALSE SET_CAR_HEADING bike1_s4 174.719 CREATE_CHAR_INSIDE_CAR bike1_s4 PEDTYPE_MISSION1 MAFFA russian1_s4 SET_CHAR_DECISION_MAKER russian1_s4 smoke4_DM SET_CHAR_HEALTH russian1_s4 10 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian1_s4 TRUE CREATE_CHAR_AS_PASSENGER bike1_s4 PEDTYPE_MISSION1 MAFFA 0 russian2_s4 GIVE_WEAPON_TO_CHAR russian2_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_HEALTH russian2_s4 10 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian2_s4 TRUE SET_CHAR_DECISION_MAKER russian2_s4 smoke4_DM ADD_BLIP_FOR_CAR bike1_s4 bike1_s4blip CHANGE_BLIP_DISPLAY bike1_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike1_s4blip 2 bike1swap_s4flag = 1 bike1_s4flag = 1 CREATE_CAR BF400 1377.421 -1571.321 12.1 bike2_s4 SET_PETROL_TANK_WEAKPOINT bike2_s4 FALSE SET_CAR_HEADING bike2_s4 166.577 CREATE_CHAR_INSIDE_CAR bike2_s4 PEDTYPE_MISSION1 MAFFA russian3_s4 SET_CHAR_DECISION_MAKER russian3_s4 smoke4_DM SET_CHAR_HEALTH russian3_s4 10 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian3_s4 TRUE CREATE_CHAR_AS_PASSENGER bike2_s4 PEDTYPE_MISSION1 MAFFA 0 russian4_s4 GIVE_WEAPON_TO_CHAR russian4_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_HEALTH russian4_s4 10 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian4_s4 TRUE SET_CHAR_DECISION_MAKER russian4_s4 smoke4_DM ADD_BLIP_FOR_CAR bike2_s4 bike2_s4blip CHANGE_BLIP_DISPLAY bike2_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike2_s4blip 2 bike2swap_s4flag = 1 bike2_s4flag = 1 CREATE_CAR BF400 1361.086 -1665.478 12.62 bike3_s4 SET_PETROL_TANK_WEAKPOINT bike3_s4 FALSE SET_CAR_HEADING bike3_s4 187.657 CREATE_CHAR_INSIDE_CAR bike3_s4 PEDTYPE_MISSION1 MAFFA russian5_s4 SET_CHAR_DECISION_MAKER russian5_s4 smoke4_DM SET_CHAR_HEALTH russian5_s4 50 CREATE_CHAR_AS_PASSENGER bike3_s4 PEDTYPE_MISSION1 MAFFA 0 russian6_s4 GIVE_WEAPON_TO_CHAR russian6_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_DECISION_MAKER russian6_s4 smoke4_DM SET_CHAR_HEALTH russian6_s4 10 ADD_BLIP_FOR_CAR bike3_s4 bike3_s4blip CHANGE_BLIP_DISPLAY bike3_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike3_s4blip 2 bike3swap_s4flag = 1 bike3_s4flag = 1 CREATE_CAR BF400 1365.219 -1420.908 12.104 bike4_s4 SET_PETROL_TANK_WEAKPOINT bike4_s4 FALSE SET_CAR_HEADING bike4_s4 353.946 CREATE_CHAR_INSIDE_CAR bike4_s4 PEDTYPE_MISSION1 MAFFA russian15_s4 SET_CHAR_DECISION_MAKER russian15_s4 smoke4_DM SET_CHAR_HEALTH russian15_s4 10 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian15_s4 TRUE CREATE_CHAR_AS_PASSENGER bike4_s4 PEDTYPE_MISSION1 MAFFA 0 russian16_s4 GIVE_WEAPON_TO_CHAR russian16_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_HEALTH russian16_s4 10 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian16_s4 TRUE SET_CHAR_DECISION_MAKER russian16_s4 smoke4_DM ADD_BLIP_FOR_CAR bike4_s4 bike4_s4blip CHANGE_BLIP_DISPLAY bike4_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike4_s4blip 2 bike4swap_s4flag = 1 bike4_s4flag = 1 CREATE_CAR SULTAN 1374.372 -1665.108 12.91 car1_s4 SET_PETROL_TANK_WEAKPOINT car1_s4 FALSE SET_CAR_HEADING car1_s4 176.22 CREATE_CHAR_INSIDE_CAR car1_s4 PEDTYPE_MISSION1 MAFFA russian7_s4 SET_CHAR_DECISION_MAKER russian7_s4 smoke4_DM CREATE_CHAR_AS_PASSENGER car1_s4 PEDTYPE_MISSION1 MAFFA 0 russian8_s4 GIVE_WEAPON_TO_CHAR russian8_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_HEALTH russian8_s4 10 SET_CHAR_DECISION_MAKER russian8_s4 smoke4_DM ADD_BLIP_FOR_CAR car1_s4 car1_s4blip CHANGE_BLIP_DISPLAY car1_s4blip BLIP_ONLY CHANGE_BLIP_SCALE car1_s4blip 2 car1swap_s4flag = 1 car1_s4flag = 1 CREATE_CAR SULTAN 1373.704 -1633.619 12.935 car2_s4 SET_PETROL_TANK_WEAKPOINT car2_s4 FALSE SET_CAR_HEADING car2_s4 176.22 CREATE_CHAR_INSIDE_CAR car2_s4 PEDTYPE_MISSION1 MAFFA russian9_s4 SET_CHAR_DECISION_MAKER russian9_s4 smoke4_DM CREATE_CHAR_AS_PASSENGER car2_s4 PEDTYPE_MISSION1 MAFFA 0 russian10_s4 GIVE_WEAPON_TO_CHAR russian10_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_DECISION_MAKER russian10_s4 smoke4_DM SET_CHAR_HEALTH russian10_s4 10 ADD_BLIP_FOR_CAR car2_s4 car2_s4blip CHANGE_BLIP_DISPLAY car2_s4blip BLIP_ONLY CHANGE_BLIP_SCALE car2_s4blip 2 car2swap_s4flag = 1 car2_s4flag = 1 //WARP_CHAR_INTO_CAR scplayer car1_s4 WAIT 0 IF NOT IS_CAR_DEAD smokebike_s4 FREEZE_CAR_POSITION smokebike_s4 FALSE START_PLAYBACK_RECORDED_CAR smokebike_s4 258 ENDIF IF NOT IS_CAR_DEAD bike1_s4 IF NOT IS_CHAR_DEAD russian1_s4 START_PLAYBACK_RECORDED_CAR bike1_s4 259 IF NOT IS_CHAR_DEAD russian1_s4 IF difficulty_s4flag < 2 GIVE_WEAPON_TO_CHAR russian1_s4 WEAPONTYPE_MICRO_UZI 99999 TASK_DRIVE_BY russian1_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE difficulty_s4value ENDIF ENDIF IF NOT IS_CHAR_DEAD russian2_s4 TASK_DRIVE_BY russian2_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 100 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD bike4_s4 IF NOT IS_CHAR_DEAD russian15_s4 START_PLAYBACK_RECORDED_CAR bike4_s4 264 ENDIF IF NOT IS_CHAR_DEAD russian15_s4 IF difficulty_s4flag < 3 GIVE_WEAPON_TO_CHAR russian15_s4 WEAPONTYPE_MICRO_UZI 99999 TASK_DRIVE_BY russian15_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE difficulty_s4value ENDIF ENDIF IF NOT IS_CHAR_DEAD russian16_s4 TASK_DRIVE_BY russian16_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 90 ENDIF ENDIF storm1_s4flag = 1 ENDIF IF storm1_s4flag = 1 IF LOCATE_CAR_2D smokebike_s4 1374.62 -1549.64 10.0 10.0 FALSE IF NOT IS_CAR_DEAD bike2_s4 IF NOT IS_CHAR_DEAD russian3_s4 START_PLAYBACK_RECORDED_CAR bike2_s4 260 IF difficulty_s4flag < 2 GIVE_WEAPON_TO_CHAR russian3_s4 WEAPONTYPE_MICRO_UZI 99999 TASK_DRIVE_BY russian3_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE difficulty_s4value ENDIF ENDIF IF NOT IS_CHAR_DEAD russian4_s4 TASK_DRIVE_BY russian4_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 100 ENDIF ENDIF DELETE_CAR coach3_s4 DELETE_CAR rcar1_s4 DELETE_CAR rcar2_s4 DELETE_CAR rcar3_s4 DELETE_CAR rcar4_s4 DELETE_CHAR russian11_s4 DELETE_CHAR russian12_s4 DELETE_CHAR russian13_s4 DELETE_CHAR russian14_s4 DELETE_CHAR russian20_s4 REMOVE_BLIP russian12_s4blip REMOVE_BLIP russian13_s4blip REMOVE_BLIP russian14_s4blip REMOVE_BLIP russian20_s4blip REMOVE_BLIP rcar1_s4blip REMOVE_BLIP rcar3_s4blip REMOVE_BLIP rcar4_s4blip storm1_s4flag = 2 ENDIF ENDIF IF storm1_s4flag = 2 IF LOCATE_CAR_2D smokebike_s4 1361.086 -1665.478 10.0 10.0 FALSE IF NOT IS_CAR_DEAD bike3_s4 IF NOT IS_CHAR_DEAD russian5_s4 START_PLAYBACK_RECORDED_CAR bike3_s4 261 ENDIF ENDIF IF NOT IS_CHAR_DEAD russian6_s4 TASK_DRIVE_BY russian6_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 100 ENDIF IF NOT IS_CAR_DEAD car1_s4 IF NOT IS_CHAR_DEAD russian7_s4 START_PLAYBACK_RECORDED_CAR car1_s4 262 ENDIF ENDIF IF NOT IS_CHAR_DEAD russian8_s4 TASK_DRIVE_BY russian8_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 10 ENDIF IF NOT IS_CAR_DEAD car2_s4 IF NOT IS_CHAR_DEAD russian9_s4 START_PLAYBACK_RECORDED_CAR car2_s4 263 ENDIF ENDIF IF NOT IS_CHAR_DEAD russian10_s4 TASK_DRIVE_BY russian10_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 10 ENDIF storm1_s4flag = 3 ENDIF ENDIF //camera switch IF storm1_s4flag = 3 IF LOCATE_CAR_2D smokebike_s4 1530.0 -1742.0 10.0 10.0 TRUE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL PLAYER1 OFF IF NOT IS_CAR_DEAD smokebike_s4 SET_CAR_PROOFS smokebike_s4 TRUE TRUE TRUE TRUE TRUE ENDIF cam_offz = 0.2 cam_Z_look_s4 = 0.0 ATTACH_CAMERA_TO_VEHICLE smokebike_s4 0.0 -2.0 cam_offz 0.0 0.0 cam_Z_look_s4 0.0 JUMP_CUT CLEAR_CHAR_TASKS_IMMEDIATELY scplayer WARP_CHAR_INTO_CAR_AS_PASSENGER scplayer smokebike_s4 0 STOP_PLAYBACK_RECORDED_CAR bike1_s4 DELETE_CAR bike1_s4 REMOVE_BLIP bike1_s4blip DELETE_CHAR russian1_s4 DELETE_CHAR russian2_s4 STOP_PLAYBACK_RECORDED_CAR bike2_s4 DELETE_CAR bike2_s4 REMOVE_BLIP bike2_s4blip DELETE_CHAR russian3_s4 DELETE_CHAR russian4_s4 STOP_PLAYBACK_RECORDED_CAR bike3_s4 DELETE_CAR bike3_s4 REMOVE_BLIP bike3_s4blip DELETE_CHAR russian5_s4 DELETE_CHAR russian6_s4 STOP_PLAYBACK_RECORDED_CAR bike4_s4 DELETE_CAR bike4_s4 REMOVE_BLIP bike4_s4blip DELETE_CHAR russian15_s4 DELETE_CHAR russian16_s4 STOP_PLAYBACK_RECORDED_CAR car1_s4 DELETE_CAR car1_s4 REMOVE_BLIP car1_s4blip DELETE_CHAR russian7_s4 DELETE_CHAR russian8_s4 STOP_PLAYBACK_RECORDED_CAR car2_s4 DELETE_CAR car2_s4 REMOVE_BLIP car2_s4blip DELETE_CHAR russian9_s4 DELETE_CHAR russian10_s4 CREATE_CAR BF400 1505.103 -1733.09 3.05 bike1_s4 SET_PETROL_TANK_WEAKPOINT bike1_s4 FALSE SET_CAR_HEADING bike1_s4 258.539 CREATE_CHAR_INSIDE_CAR bike1_s4 PEDTYPE_MISSION1 MAFFA russian1_s4 SET_CHAR_DECISION_MAKER russian1_s4 smoke4_DM SET_CHAR_HEALTH russian1_s4 10 CREATE_CHAR_AS_PASSENGER bike1_s4 PEDTYPE_MISSION1 MAFFA 0 russian2_s4 GIVE_WEAPON_TO_CHAR russian2_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_HEALTH russian2_s4 10 SET_CHAR_DECISION_MAKER russian2_s4 smoke4_DM CREATE_CAR BF400 1487.213 -1734.792 3.25 bike2_s4 SET_PETROL_TANK_WEAKPOINT bike2_s4 FALSE SET_CAR_HEADING bike2_s4 250.829 CREATE_CHAR_INSIDE_CAR bike2_s4 PEDTYPE_MISSION1 MAFFA russian3_s4 SET_CHAR_DECISION_MAKER russian3_s4 smoke4_DM SET_CHAR_HEALTH russian3_s4 10 CREATE_CHAR_AS_PASSENGER bike2_s4 PEDTYPE_MISSION1 MAFFA 0 russian4_s4 GIVE_WEAPON_TO_CHAR russian4_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_HEALTH russian4_s4 20 SET_CHAR_DECISION_MAKER russian4_s4 smoke4_DM CREATE_CAR SULTAN 1496.864 -1731.303 6.3 car1_s4 SET_PETROL_TANK_WEAKPOINT car1_s4 FALSE SET_CAR_HEADING car1_s4 255.305 CREATE_CHAR_INSIDE_CAR car1_s4 PEDTYPE_MISSION1 MAFFA russian7_s4 SET_CHAR_DECISION_MAKER russian7_s4 smoke4_DM CREATE_CHAR_AS_PASSENGER car1_s4 PEDTYPE_MISSION1 MAFFA 0 russian8_s4 GIVE_WEAPON_TO_CHAR russian8_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_DECISION_MAKER russian8_s4 smoke4_DM SET_CHAR_HEALTH russian8_s4 10 CREATE_CAR PACKER 1550.873 -1737.1218 14.1055 packer_s4 SET_PETROL_TANK_WEAKPOINT packer_s4 FALSE SET_CAR_HEADING packer_s4 245.140 CREATE_CHAR_INSIDE_CAR packer_s4 PEDTYPE_MISSION1 MAFFA packerdriver_s4 SET_CHAR_CAN_BE_SHOT_IN_VEHICLE packerdriver_s4 FALSE SET_CAR_PROOFS packer_s4 TRUE TRUE TRUE TRUE TRUE SET_CHAR_PROOFS packerdriver_s4 TRUE TRUE TRUE TRUE TRUE SET_CHAR_DECISION_MAKER packerdriver_s4 smoke4_DM CREATE_CHAR_AS_PASSENGER packer_s4 PEDTYPE_MISSION1 MAFFA 0 packerpassenger_s4 GIVE_WEAPON_TO_CHAR packerpassenger_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_DECISION_MAKER packerpassenger_s4 smoke4_DM CREATE_CAR SULTAN 1550.873 -1737.1218 -14.1055 packercar1_s4 SET_PETROL_TANK_WEAKPOINT packercar1_s4 FALSE SET_CAR_HEADING packercar1_s4 256.415 SET_CAR_PROOFS packercar1_s4 TRUE TRUE TRUE TRUE TRUE ATTACH_CAR_TO_CAR packercar1_s4 packer_s4 0.0 -4.6 0.65 15.0 0.0 0.0 packercar1_s4flag = 0 CREATE_CAR SULTAN 1550.873 -1737.1218 14.1055 packercar2_s4 SET_PETROL_TANK_WEAKPOINT packercar2_s4 FALSE SET_CAR_HEADING packercar2_s4 256.415 SET_CAR_PROOFS packercar2_s4 TRUE TRUE TRUE TRUE TRUE ATTACH_CAR_TO_CAR packercar2_s4 packer_s4 0.0 1.15 2.4 15.0 0.0 0.0 packercar2_s4flag = 0 TIMERA = 0 gopacker_s4flag = 1 storm1_s4flag = 4 ENDIF ENDIF IF gopacker_s4flag = 1 IF LOCATE_CAR_2D smokebike_s4 1550.52 -1749.19 10.0 10.0 TRUE IF NOT IS_CAR_DEAD packer_s4 START_PLAYBACK_RECORDED_CAR packer_s4 265 ENDIF IF NOT IS_CAR_DEAD bike1_s4 START_PLAYBACK_RECORDED_CAR bike1_s4 266 ENDIF IF NOT IS_CAR_DEAD car1_s4 START_PLAYBACK_RECORDED_CAR car1_s4 267 ENDIF IF NOT IS_CAR_DEAD bike2_s4 START_PLAYBACK_RECORDED_CAR bike2_s4 268 ENDIF gopacker_s4flag = 2 ENDIF ENDIF IF storm1_s4flag = 4 IF TIMERA > 250 // IF CAMERA Z POSITION STARTS AT 0.0 THIS WILL STOP THE CAMERA ONCE IT HAS GONE METRES HIGH IF cam_offz < 0.8 cam_offz +=@ 0.008 cam_Z_look_s4 +=@ 0.008 ATTACH_CAMERA_TO_VEHICLE smokebike_s4 0.0 -2.0 cam_offz 0.0 0.0 cam_Z_look_s4 0.0 JUMP_CUT ELSE storm1_s4flag = 5 ENDIF ENDIF ENDIF IF storm1_s4flag = 5 IF TIMERA > 2500 SET_FIXED_CAMERA_POSITION 1605.5912 -1766.7932 3.3342 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1604.7743 -1766.2546 3.5404 JUMP_CUT SET_TIME_SCALE 0.9 TIMERA = 0 TIMERB = 0 spark_s4flag = 1 storm1_s4flag = 6 ENDIF ENDIF IF storm1_s4flag = 6 IF TIMERA > 800 z = 0.3 storm1_s4flag = 7 ENDIF ENDIF IF storm1_s4flag = 7 IF z < 0.6 z+= 0.001 SET_TIME_SCALE z ELSE IF TIMERA > 2500 OR z > 0.6 storm1_s4flag = 7 SET_TIME_SCALE 0.5 ENDIF ENDIF ENDIF IF storm1_s4flag = 7 IF TIMERA > 2000 POINT_CAMERA_AT_POINT 1605.7826 -1765.8336 3.5404 INTERPOLATION z = 0.5 TIMERA = 0 storm1_s4flag = 8 ENDIF ENDIF IF storm1_s4flag = 8 IF z < 1.0 z+= 0.01 SET_TIME_SCALE z ELSE IF TIMERA > 1000 OR z > 0.9 storm1_s4flag = 9 TIMERA = 0 SET_TIME_SCALE 1.0 ENDIF ENDIF ENDIF IF storm1_s4flag = 9 IF TIMERA > 2800 firstchase_s4flag = 2 storm1_s4flag = 10 ENDIF ENDIF IF spark_s4flag = 1 IF TIMERB > 1242 ADD_SPARKS 1580.85 -1752.32 12.91 0.0 0.0 1.0 60 ADD_SPARKS 1580.75 -1749.51 12.92 0.0 0.0 1.0 100 spark_s4flag = 2 ENDIF ENDIF IF spark_s4flag = 2 IF TIMERB > 1400 ADD_SPARKS 1580.74 -1752.68 12.87 0.0 0.0 1.0 100 ADD_SPARKS 1580.85 -1749.75 12.91 0.0 0.0 1.0 60 spark_s4flag = 3 ENDIF ENDIF IF spark_s4flag = 3 IF TIMERB > 1500 ADD_SPARKS 1580.85 -1752.32 12.91 0.0 0.0 1.0 100 ADD_SPARKS 1580.85 -1752.32 12.91 0.0 0.0 1.0 80 spark_s4flag = 4 ENDIF ENDIF IF spark_s4flag = 4 IF TIMERB > 1600 ADD_SPARKS 1580.85 -1752.32 12.91 0.0 0.0 1.0 100 ADD_SPARKS 1580.75 -1749.51 12.92 0.0 0.0 1.0 60 spark_s4flag = 5 ENDIF ENDIF IF spark_s4flag = 5 IF TIMERB > 1700 ADD_SPARKS 1580.74 -1752.68 12.87 0.0 0.0 1.0 80 ADD_SPARKS 1580.85 -1749.75 12.91 0.0 0.0 1.0 100 spark_s4flag = 6 ENDIF ENDIF IF spark_s4flag = 6 IF TIMERB > 1800 ADD_SPARKS 1580.85 -1752.32 12.91 0.0 0.0 1.0 60 ADD_SPARKS 1580.85 -1752.32 12.91 0.0 0.0 1.0 80 spark_s4flag = 7 ENDIF ENDIF IF spark_s4flag = 7 IF TIMERB > 2404 ADD_SPARKS 1599.28 -1757.56 3.11 0.0 0.0 1.0 60 spark_s4flag = 8 ENDIF ENDIF IF spark_s4flag = 8 IF TIMERB > 3418 //2517 ADD_SPARKS 1599.76 1757.96 3.14 0.0 0.0 1.0 100 ADD_SPARKS 1601.69 -1758.73 3.18 0.0 0.0 1.0 60 spark_s4flag = 9 ENDIF ENDIF IF spark_s4flag = 9 IF TIMERB > 3598 //2848 ADD_SPARKS 1605.46 -1763.14 3.18 0.0 0.0 1.0 100 spark_s4flag = 10 ENDIF ENDIF IF spark_s4flag = 10 IF TIMERB > 3600 //2800 ADD_SPARKS 1605.46 -1763.14 3.18 0.0 0.0 1.0 80 spark_s4flag = 11 ENDIF ENDIF //spin/stop bikes if the both guys are not in car IF storm1_s4flag < 4 IF bike1swap_s4flag = 1 IF NOT IS_CAR_DEAD bike1_s4 IF NOT IS_CHAR_DEAD russian1_s4 ELSE IF NOT IS_CHAR_DEAD russian2_s4 IF IS_CHAR_IN_CAR russian2_s4 bike1_s4 GET_DRIVER_OF_CAR bike1_s4 driverofcar_s4 IF driverofcar_s4 = -1 GET_CAR_COORDINATES smokebike_s4 player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD russian2_s4 player_x player_y -10.0 WARP_CHAR_INTO_CAR russian2_s4 bike1_s4 TASK_DRIVE_BY russian2_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 100 bike1swap_s4flag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike1_s4 18.0 STOP_PLAYBACK_RECORDED_CAR bike1_s4 SET_CAR_ROTATION_VELOCITY bike1_s4 1.5 3.3999 4.1003 bike1swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF bike1swap_s4flag = 2 IF IS_CHAR_DEAD russian2_s4 STOP_PLAYBACK_RECORDED_CAR bike1_s4 IF NOT IS_CAR_DEAD bike1_s4 SET_CAR_FORWARD_SPEED bike1_s4 18.0 SET_CAR_ROTATION_VELOCITY bike1_s4 1.5 3.3999 4.1003 ENDIF bike1swap_s4flag = 3 ENDIF ENDIF IF bike1_s4flag = 1 IF IS_CHAR_DEAD russian1_s4 IF IS_CHAR_DEAD russian2_s4 OR IS_CAR_DEAD bike1_s4 STOP_PLAYBACK_RECORDED_CAR bike1_s4 REMOVE_BLIP bike1_s4blip MARK_CAR_AS_NO_LONGER_NEEDED bike1_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian1_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian2_s4 bike1_s4flag = 2 ENDIF ENDIF ENDIF IF bike2swap_s4flag = 1 IF NOT IS_CAR_DEAD bike2_s4 IF NOT IS_CHAR_DEAD russian3_s4 ELSE IF NOT IS_CHAR_DEAD russian4_s4 IF IS_CHAR_IN_CAR russian4_s4 bike2_s4 GET_DRIVER_OF_CAR bike2_s4 driverofcar_s4 IF driverofcar_s4 = -1 GET_CAR_COORDINATES smokebike_s4 player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD russian4_s4 player_x player_y -10.0 WARP_CHAR_INTO_CAR russian4_s4 bike2_s4 TASK_DRIVE_BY russian4_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 100 bike2swap_s4flag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike2_s4 15.0 STOP_PLAYBACK_RECORDED_CAR bike2_s4 SET_CAR_ROTATION_VELOCITY bike2_s4 5.5 3.3999 5.1003 bike2swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF bike2swap_s4flag = 2 IF IS_CHAR_DEAD russian4_s4 STOP_PLAYBACK_RECORDED_CAR bike2_s4 IF NOT IS_CAR_DEAD bike2_s4 SET_CAR_FORWARD_SPEED bike2_s4 15.0 SET_CAR_ROTATION_VELOCITY bike2_s4 5.5 3.3999 5.1003 ENDIF bike2swap_s4flag = 3 ENDIF ENDIF IF bike2_s4flag = 1 IF IS_CHAR_DEAD russian3_s4 IF IS_CHAR_DEAD russian4_s4 OR IS_CAR_DEAD bike2_s4 STOP_PLAYBACK_RECORDED_CAR bike2_s4 REMOVE_BLIP bike2_s4blip MARK_CAR_AS_NO_LONGER_NEEDED bike2_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian3_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian4_s4 bike2_s4flag = 2 ENDIF ENDIF ENDIF IF bike3swap_s4flag = 1 IF NOT IS_CAR_DEAD bike3_s4 IF NOT IS_CHAR_DEAD russian5_s4 ELSE IF NOT IS_CHAR_DEAD russian6_s4 IF IS_CHAR_IN_CAR russian6_s4 bike3_s4 GET_DRIVER_OF_CAR bike3_s4 driverofcar_s4 IF driverofcar_s4 = -1 GET_CAR_COORDINATES smokebike_s4 player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD russian6_s4 player_x player_y -10.0 WARP_CHAR_INTO_CAR russian6_s4 bike3_s4 TASK_DRIVE_BY russian6_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE difficulty_s4value bike3swap_s4flag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike3_s4 15.0 STOP_PLAYBACK_RECORDED_CAR bike3_s4 SET_CAR_ROTATION_VELOCITY bike3_s4 1.5 4.3999 5.1003 bike3swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF bike3swap_s4flag = 2 IF IS_CHAR_DEAD russian6_s4 STOP_PLAYBACK_RECORDED_CAR bike3_s4 IF NOT IS_CAR_DEAD bike3_s4 SET_CAR_FORWARD_SPEED bike3_s4 15.0 SET_CAR_ROTATION_VELOCITY bike3_s4 1.5 4.3999 5.1003 ENDIF bike3swap_s4flag = 3 ENDIF ENDIF IF bike3_s4flag = 1 IF IS_CHAR_DEAD russian5_s4 IF IS_CHAR_DEAD russian6_s4 OR IS_CAR_DEAD bike3_s4 STOP_PLAYBACK_RECORDED_CAR bike3_s4 REMOVE_BLIP bike3_s4blip MARK_CAR_AS_NO_LONGER_NEEDED bike3_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian5_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian6_s4 bike3_s4flag = 2 ENDIF ENDIF ENDIF IF bike4swap_s4flag = 1 IF NOT IS_CAR_DEAD bike4_s4 IF NOT IS_CHAR_DEAD russian15_s4 ELSE IF NOT IS_CHAR_DEAD russian16_s4 IF IS_CHAR_IN_CAR russian16_s4 bike4_s4 GET_DRIVER_OF_CAR bike4_s4 driverofcar_s4 IF driverofcar_s4 = -1 GET_CAR_COORDINATES smokebike_s4 player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD russian16_s4 player_x player_y -10.0 WARP_CHAR_INTO_CAR russian16_s4 bike4_s4 TASK_DRIVE_BY russian16_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE difficulty_s4value bike4swap_s4flag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike4_s4 15.0 STOP_PLAYBACK_RECORDED_CAR bike4_s4 SET_CAR_ROTATION_VELOCITY bike4_s4 2.5 3.3999 3.1003 bike4swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF bike4swap_s4flag = 2 IF IS_CHAR_DEAD russian16_s4 STOP_PLAYBACK_RECORDED_CAR bike4_s4 IF NOT IS_CAR_DEAD bike4_s4 SET_CAR_FORWARD_SPEED bike4_s4 15.0 SET_CAR_ROTATION_VELOCITY bike4_s4 2.5 3.3999 3.1003 ENDIF bike4swap_s4flag = 3 ENDIF ENDIF IF bike4_s4flag = 1 IF IS_CHAR_DEAD russian15_s4 IF IS_CHAR_DEAD russian16_s4 OR IS_CAR_DEAD bike4_s4 STOP_PLAYBACK_RECORDED_CAR bike4_s4 REMOVE_BLIP bike4_s4blip MARK_CAR_AS_NO_LONGER_NEEDED bike4_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian15_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian16_s4 bike4_s4flag = 2 ENDIF ENDIF ENDIF IF car1swap_s4flag = 1 IF NOT IS_CAR_DEAD car1_s4 IF NOT IS_CHAR_DEAD russian7_s4 ELSE IF NOT IS_CHAR_DEAD russian8_s4 IF IS_CHAR_IN_CAR russian8_s4 car1_s4 GET_DRIVER_OF_CAR car1_s4 driverofcar_s4 IF driverofcar_s4 = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT russian8_s4 car1_s4 car1swap_s4flag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR car1_s4 car1swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF car1swap_s4flag = 2 IF IS_CHAR_DEAD russian8_s4 STOP_PLAYBACK_RECORDED_CAR car1_s4 car1swap_s4flag = 3 ENDIF ENDIF IF car1_s4flag = 1 IF IS_CHAR_DEAD russian7_s4 IF IS_CHAR_DEAD russian8_s4 OR IS_CAR_DEAD car1_s4 STOP_PLAYBACK_RECORDED_CAR car1_s4 REMOVE_BLIP car1_s4blip MARK_CAR_AS_NO_LONGER_NEEDED car1_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian7_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian8_s4 car1_s4flag = 2 ENDIF ENDIF ENDIF IF car2swap_s4flag = 1 IF NOT IS_CAR_DEAD car2_s4 IF NOT IS_CHAR_DEAD russian9_s4 ELSE IF NOT IS_CHAR_DEAD russian10_s4 IF IS_CHAR_IN_CAR russian10_s4 car2_s4 GET_DRIVER_OF_CAR car2_s4 driverofcar_s4 IF driverofcar_s4 = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT russian10_s4 car2_s4 car2swap_s4flag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR car2_s4 car2swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF car2swap_s4flag = 2 IF IS_CHAR_DEAD russian10_s4 STOP_PLAYBACK_RECORDED_CAR car2_s4 car2swap_s4flag = 3 ENDIF ENDIF IF car2_s4flag = 1 IF IS_CHAR_DEAD russian9_s4 IF IS_CHAR_DEAD russian10_s4 OR IS_CAR_DEAD car2_s4 STOP_PLAYBACK_RECORDED_CAR car2_s4 MARK_CAR_AS_NO_LONGER_NEEDED car2_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian9_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian10_s4 REMOVE_BLIP car2_s4blip car2_s4flag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////// PACKER CHASE ////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF firstchase_s4flag = 2 IF NOT IS_CAR_DEAD smokebike_s4 IF thirdchase_s4flag = 0 DO_FADE 0 FADE_OUT STOP_PLAYBACK_RECORDED_CAR bike1_s4 DELETE_CAR bike1_s4 DELETE_CHAR russian1_s4 DELETE_CHAR russian2_s4 STOP_PLAYBACK_RECORDED_CAR bike2_s4 DELETE_CAR bike2_s4 DELETE_CHAR russian3_s4 DELETE_CHAR russian4_s4 STOP_PLAYBACK_RECORDED_CAR car1_s4 DELETE_CAR car1_s4 DELETE_CHAR russian7_s4 DELETE_CHAR russian8_s4 DELETE_CAR packercar1_s4 DELETE_CAR packercar2_s4 STOP_PLAYBACK_RECORDED_CAR packer_s4 DELETE_CAR packer_s4 DELETE_CHAR packerdriver_s4 IF NOT IS_CAR_DEAD smokebike_s4 STOP_PLAYBACK_RECORDED_CAR smokebike_s4 ENDIF REQUEST_CAR_RECORDING 269 REQUEST_CAR_RECORDING 270 REQUEST_CAR_RECORDING 271 REQUEST_CAR_RECORDING 272 REQUEST_CAR_RECORDING 273 //bike 1 not in cutscene REQUEST_CAR_RECORDING 274 //bike 1 not in cutscene REQUEST_CAR_RECORDING 275 //car that crashes into packer REQUEST_CAR_RECORDING 276 //car 2 that goes into packer REQUEST_CAR_RECORDING 277 //car that goes all the way REQUEST_CAR_RECORDING 278 //bike that comes from slip road REQUEST_CAR_RECORDING 279 //bikes that come from the slip road to the left REQUEST_CAR_RECORDING 280 //jumps in from the bridge REQUEST_CAR_RECORDING 281 //car that comes down the embankment LOAD_ALL_MODELS_NOW WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 273 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 274 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 275 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 276 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 277 WAIT 0 ENDWHILE WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 278 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 279 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 280 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 281 WAIT 0 ENDWHILE WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 269 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 270 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 271 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 272 WAIT 0 ENDWHILE CREATE_CAR PACKER 1601.9146 -1755.917 4.6 packer_s4 SET_PETROL_TANK_WEAKPOINT packer_s4 FALSE SET_CAR_HEADING packer_s4 256.415 CREATE_CHAR_INSIDE_CAR packer_s4 PEDTYPE_MISSION1 MAFFA packerdriver_s4 SET_CHAR_CAN_BE_SHOT_IN_VEHICLE packerdriver_s4 FALSE SET_CAR_PROOFS packer_s4 TRUE TRUE TRUE TRUE TRUE SET_CHAR_PROOFS packerdriver_s4 TRUE TRUE TRUE TRUE TRUE SET_CHAR_DECISION_MAKER packerdriver_s4 smoke4_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER packerdriver_s4 TRUE ADD_BLIP_FOR_CAR packer_s4 packer_s4blip CHANGE_BLIP_DISPLAY packer_s4blip BLIP_ONLY CHANGE_BLIP_SCALE packer_s4blip 2 CREATE_CAR SULTAN 1550.873 -1737.1218 -14.1055 packercar1_s4 SET_PETROL_TANK_WEAKPOINT packercar1_s4 FALSE SET_CAR_HEADING packercar1_s4 256.415 SET_CAR_PROOFS packercar1_s4 TRUE TRUE TRUE TRUE TRUE ATTACH_CAR_TO_CAR packercar1_s4 packer_s4 0.0 -4.6 0.65 15.0 0.0 0.0 packersmash1_s4flag = 1 CREATE_CAR SULTAN 1550.873 -1737.1218 14.1055 packercar2_s4 SET_PETROL_TANK_WEAKPOINT packercar2_s4 FALSE SET_CAR_HEADING packercar2_s4 256.415 SET_CAR_PROOFS packercar2_s4 TRUE TRUE TRUE TRUE TRUE ATTACH_CAR_TO_CAR packercar2_s4 packer_s4 0.0 1.15 2.4 15.0 0.0 0.0 packersmash2_s4flag = 1 CREATE_CAR BF400 1505.103 -1733.09 3.05 bike1_s4 SET_PETROL_TANK_WEAKPOINT bike1_s4 FALSE SET_CAR_HEADING bike1_s4 258.539 SET_CAR_PROOFS bike1_s4 FALSE TRUE TRUE TRUE FALSE CREATE_CHAR_INSIDE_CAR bike1_s4 PEDTYPE_MISSION1 MAFFA russian1_s4 SET_CHAR_HEALTH russian1_s4 10 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian1_s4 10 SET_CHAR_DECISION_MAKER russian1_s4 smoke4_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian1_s4 TRUE CREATE_CHAR_AS_PASSENGER bike1_s4 PEDTYPE_MISSION1 MAFFA 0 russian2_s4 GIVE_WEAPON_TO_CHAR russian2_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_HEALTH russian2_s4 10 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian2_s4 10 SET_CHAR_DECISION_MAKER russian2_s4 smoke4_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian2_s4 TRUE bike1swap_s4flag = 1 bike1_s4flag = 1 ADD_BLIP_FOR_CAR bike1_s4 bike1_s4blip CHANGE_BLIP_DISPLAY bike1_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike1_s4blip 2 CREATE_CAR BF400 1487.213 -1734.792 3.25 bike2_s4 SET_PETROL_TANK_WEAKPOINT bike2_s4 FALSE SET_CAR_HEADING bike2_s4 258.716 SET_CAR_PROOFS bike2_s4 FALSE TRUE TRUE TRUE FALSE CREATE_CHAR_INSIDE_CAR bike2_s4 PEDTYPE_MISSION1 MAFFA russian3_s4 SET_CHAR_DECISION_MAKER russian3_s4 smoke4_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian3_s4 TRUE SET_CHAR_HEALTH russian3_s4 20 CREATE_CHAR_AS_PASSENGER bike2_s4 PEDTYPE_MISSION1 MAFFA 0 russian4_s4 GIVE_WEAPON_TO_CHAR russian4_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_DECISION_MAKER russian4_s4 smoke4_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian4_s4 TRUE SET_CHAR_HEALTH russian4_s4 30 bike2swap_s4flag = 1 bike2_s4flag = 1 ADD_BLIP_FOR_CAR bike2_s4 bike2_s4blip CHANGE_BLIP_DISPLAY bike2_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike2_s4blip 2 CREATE_CAR SULTAN 1496.864 -1731.303 6.3 car1_s4 SET_PETROL_TANK_WEAKPOINT car1_s4 FALSE SET_CAR_HEADING car1_s4 257.724 CREATE_CHAR_INSIDE_CAR car1_s4 PEDTYPE_MISSION1 MAFFA russian5_s4 SET_CHAR_DECISION_MAKER russian5_s4 smoke4_DM SET_CHAR_CAN_BE_SHOT_IN_VEHICLE russian5_s4 FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian5_s4 TRUE CREATE_CHAR_AS_PASSENGER car1_s4 PEDTYPE_MISSION1 MAFFA 0 russian6_s4 GIVE_WEAPON_TO_CHAR russian6_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian6_s4 TRUE SET_CHAR_DECISION_MAKER russian6_s4 smoke4_DM SET_CHAR_HEALTH russian6_s4 10 car1swap_s4flag = 1 car1_s4flag = 1 ADD_BLIP_FOR_CAR car1_s4 car1_s4blip CHANGE_BLIP_DISPLAY car1_s4blip BLIP_ONLY CHANGE_BLIP_SCALE car1_s4blip 2 SET_CAR_HEALTH car1_s4 1000 WAIT 0 IF NOT IS_CAR_DEAD packer_s4 START_PLAYBACK_RECORDED_CAR packer_s4 269 ENDIF IF NOT IS_CAR_DEAD packercar1_s4 START_PLAYBACK_RECORDED_CAR packercar1_s4 270 ENDIF IF NOT IS_CAR_DEAD packercar2_s4 START_PLAYBACK_RECORDED_CAR packercar2_s4 271 ENDIF IF NOT IS_CAR_DEAD smokebike_s4 START_PLAYBACK_RECORDED_CAR smokebike_s4 272 ENDIF IF NOT IS_CAR_DEAD packercar1_s4 DETACH_CAR packercar1_s4 20.0 180.0 0.0 FALSE ENDIF IF NOT IS_CAR_DEAD packercar2_s4 DETACH_CAR packercar2_s4 20.0 180.0 0.0 FALSE ENDIF IF NOT IS_CAR_DEAD bike1_s4 START_PLAYBACK_RECORDED_CAR bike1_s4 273 ENDIF IF NOT IS_CAR_DEAD bike2_s4 START_PLAYBACK_RECORDED_CAR bike2_s4 274 ENDIF IF NOT IS_CAR_DEAD car1_s4 START_PLAYBACK_RECORDED_CAR car1_s4 275 ENDIF TASK_DRIVE_BY scplayer -1 -1 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 100 SET_HEADING_FOR_ATTACHED_PLAYER PLAYER1 346.2 359.0 RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON IF NOT IS_CAR_DEAD smokebike_s4 SET_CAR_PROOFS smokebike_s4 FALSE TRUE TRUE TRUE TRUE ENDIF DO_FADE 250 FADE_IN CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 truckaudio_s4flag = 0 progressaudio_s4flag = 0 handlingudio_s4flag = 0 SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE IF NOT IS_CHAR_DEAD big_smoke SET_CHAR_PROOFS big_smoke TRUE TRUE TRUE TRUE TRUE ENDIF TIMERB = 0 IF NOT IS_CHAR_DEAD russian2_s4 TASK_DRIVE_BY russian2_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 90 ENDIF IF NOT IS_CHAR_DEAD russian1_s4 IF difficulty_s4flag < 3 GIVE_WEAPON_TO_CHAR russian1_s4 WEAPONTYPE_MICRO_UZI 99999 TASK_DRIVE_BY russian1_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE difficulty_s4value ENDIF ENDIF IF NOT IS_CHAR_DEAD russian3_s4 IF difficulty_s4flag < 2 GIVE_WEAPON_TO_CHAR russian3_s4 WEAPONTYPE_MICRO_UZI 99999 TASK_DRIVE_BY russian3_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE difficulty_s4value ENDIF ENDIF IF NOT IS_CHAR_DEAD russian4_s4 TASK_DRIVE_BY russian4_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 90 ENDIF IF NOT IS_CHAR_DEAD russian6_s4 TASK_DRIVE_BY russian6_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 90 ENDIF thirdchase_s4flag = 1 ENDIF IF thirdchase_s4flag = 1 IF LOCATE_CAR_2D smokebike_s4 1905.28 -1831.57 12.0 12.0 FALSE CREATE_CAR SULTAN 2002.102 -1890.368 8.108 car2_s4 SET_PETROL_TANK_WEAKPOINT car2_s4 FALSE SET_CAR_HEADING car2_s4 44.1 START_PLAYBACK_RECORDED_CAR car2_s4 276 CREATE_CHAR_INSIDE_CAR car2_s4 PEDTYPE_MISSION1 MAFFA russian7_s4 SET_CHAR_DECISION_MAKER russian7_s4 smoke4_DM SET_CHAR_CAN_BE_SHOT_IN_VEHICLE russian7_s4 FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian7_s4 TRUE CREATE_CHAR_AS_PASSENGER car2_s4 PEDTYPE_MISSION1 MAFFA 0 russian8_s4 GIVE_WEAPON_TO_CHAR russian8_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian8_s4 TRUE SET_CHAR_DECISION_MAKER russian8_s4 smoke4_DM SET_CHAR_HEALTH russian8_s4 10 car2swap_s4flag = 1 car2_s4flag = 1 ADD_BLIP_FOR_CAR car2_s4 car2_s4blip CHANGE_BLIP_DISPLAY car2_s4blip BLIP_ONLY CHANGE_BLIP_SCALE car2_s4blip 2 SET_CAR_HEALTH car2_s4 1100 SET_CAR_PROOFS car2_s4 FALSE TRUE FALSE FALSE FALSE CREATE_CAR SULTAN 2008.843 -1897.323 8.1 car3_s4 SET_PETROL_TANK_WEAKPOINT car3_s4 FALSE SET_CAR_HEADING car3_s4 44.1 START_PLAYBACK_RECORDED_CAR car3_s4 277 SET_CAR_PROOFS car3_s4 FALSE TRUE TRUE TRUE FALSE SET_CAR_ONLY_DAMAGED_BY_PLAYER car3_s4 TRUE CREATE_CHAR_INSIDE_CAR car3_s4 PEDTYPE_MISSION1 MAFFA russian9_s4 SET_CHAR_DECISION_MAKER russian9_s4 smoke4_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian9_s4 TRUE CREATE_CHAR_AS_PASSENGER car3_s4 PEDTYPE_MISSION1 MAFFA 0 russian10_s4 GIVE_WEAPON_TO_CHAR russian10_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian10_s4 TRUE SET_CHAR_DECISION_MAKER russian10_s4 smoke4_DM SET_CHAR_HEALTH russian10_s4 10 car3swap_s4flag = 1 car3_s4flag = 1 ADD_BLIP_FOR_CAR car3_s4 car3_s4blip CHANGE_BLIP_DISPLAY car3_s4blip BLIP_ONLY CHANGE_BLIP_SCALE car3_s4blip 2 SET_CAR_HEALTH car3_s4 700 IF NOT IS_CHAR_DEAD russian8_s4 TASK_DRIVE_BY russian8_s4 -1 smokebike_s4 0.0 0.0 0.0 250.0 DRIVEBY_AI_ALL_DIRN TRUE 10 ENDIF IF NOT IS_CHAR_DEAD russian10_s4 TASK_DRIVE_BY russian10_s4 -1 smokebike_s4 0.0 0.0 0.0 250.0 DRIVEBY_AI_ALL_DIRN TRUE 10 ENDIF thirdchase_s4flag = 2 ENDIF ENDIF IF thirdchase_s4flag = 2 IF LOCATE_CAR_2D smokebike_s4 2101.55 -1850.81 12.0 12.0 FALSE CREATE_CAR BF400 2093.446 -1836.207 12.72 bike4_s4 SET_PETROL_TANK_WEAKPOINT bike4_s4 FALSE SET_CAR_HEADING bike4_s4 267.18 SET_CAR_PROOFS bike4_s4 FALSE TRUE TRUE TRUE FALSE CREATE_CHAR_INSIDE_CAR bike4_s4 PEDTYPE_MISSION1 MAFFA russian11_s4 SET_CHAR_HEALTH russian11_s4 50 SET_CHAR_DECISION_MAKER russian11_s4 smoke4_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian11_s4 TRUE CREATE_CHAR_AS_PASSENGER bike4_s4 PEDTYPE_MISSION1 MAFFA 0 russian12_s4 GIVE_WEAPON_TO_CHAR russian12_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_DECISION_MAKER russian12_s4 smoke4_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian12_s4 TRUE SET_CHAR_HEALTH russian12_s4 10 bike4swap_s4flag = 1 bike4_s4flag = 1 ADD_BLIP_FOR_CAR bike4_s4 bike4_s4blip CHANGE_BLIP_DISPLAY bike4_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike4_s4blip 2 START_PLAYBACK_RECORDED_CAR bike4_s4 279 CREATE_CAR BF400 2018.735 -1900.925 8.108 bike3_s4 SET_PETROL_TANK_WEAKPOINT bike3_s4 FALSE SET_CAR_HEADING bike3_s4 258.716 SET_CAR_PROOFS bike3_s4 FALSE TRUE TRUE TRUE FALSE CREATE_CHAR_INSIDE_CAR bike3_s4 PEDTYPE_MISSION1 MAFFA russian13_s4 SET_CHAR_DECISION_MAKER russian13_s4 smoke4_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian13_s4 TRUE CREATE_CHAR_AS_PASSENGER bike3_s4 PEDTYPE_MISSION1 MAFFA 0 russian14_s4 GIVE_WEAPON_TO_CHAR russian14_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_DECISION_MAKER russian14_s4 smoke4_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian14_s4 TRUE SET_CHAR_HEALTH russian13_s4 10 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian13_s4 10 SET_CHAR_HEALTH russian14_s4 30 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian14_s4 10 bike3swap_s4flag = 1 bike3_s4flag = 1 ADD_BLIP_FOR_CAR bike3_s4 bike3_s4blip CHANGE_BLIP_DISPLAY bike3_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike3_s4blip 2 START_PLAYBACK_RECORDED_CAR bike3_s4 278 IF NOT IS_CHAR_DEAD russian11_s4 IF difficulty_s4flag < 4 GIVE_WEAPON_TO_CHAR russian11_s4 WEAPONTYPE_MICRO_UZI 99999 TASK_DRIVE_BY russian11_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE difficulty_s4value ENDIF ENDIF IF NOT IS_CHAR_DEAD russian13_s4 IF difficulty_s4flag < 4 GIVE_WEAPON_TO_CHAR russian13_s4 WEAPONTYPE_MICRO_UZI 99999 TASK_DRIVE_BY russian13_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE difficulty_s4value ENDIF ENDIF IF NOT IS_CHAR_DEAD russian12_s4 TASK_DRIVE_BY russian12_s4 -1 smokebike_s4 0.0 0.0 0.0 250.0 DRIVEBY_AI_ALL_DIRN TRUE 100 ENDIF IF NOT IS_CHAR_DEAD russian14_s4 TASK_DRIVE_BY russian14_s4 -1 smokebike_s4 0.0 0.0 0.0 250.0 DRIVEBY_AI_ALL_DIRN TRUE 100 ENDIF thirdchase_s4flag = 3 ENDIF ENDIF IF thirdchase_s4flag = 3 IF LOCATE_CAR_2D smokebike_s4 2425.93 -1874.76 10.0 10.0 FALSE DELETE_CAR packercar1_s4 DELETE_CAR packercar2_s4 DELETE_CAR bike1_s4 DELETE_CAR bike2_s4 DELETE_CHAR russian1_s4 DELETE_CHAR russian2_s4 DELETE_CHAR russian3_s4 DELETE_CHAR russian4_s4 DELETE_CAR car1_s4 DELETE_CAR car2_s4 DELETE_CHAR russian5_s4 DELETE_CHAR russian6_s4 DELETE_CHAR russian7_s4 DELETE_CHAR russian8_s4 CREATE_CAR BF400 2417.1 -1876.578 12.92 bike5_s4 SET_PETROL_TANK_WEAKPOINT bike5_s4 FALSE SET_CAR_HEADING bike5_s4 271.4 START_PLAYBACK_RECORDED_CAR bike5_s4 280 SET_CAR_PROOFS bike5_s4 FALSE TRUE TRUE TRUE FALSE CREATE_CHAR_INSIDE_CAR bike5_s4 PEDTYPE_MISSION1 MAFFA russian15_s4 SET_CHAR_DECISION_MAKER russian15_s4 smoke4_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian15_s4 TRUE CREATE_CHAR_AS_PASSENGER bike5_s4 PEDTYPE_MISSION1 MAFFA 0 russian16_s4 GIVE_WEAPON_TO_CHAR russian16_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_DECISION_MAKER russian16_s4 smoke4_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian16_s4 TRUE SET_CHAR_HEALTH russian15_s4 10 SET_CHAR_HEALTH russian16_s4 10 bike5swap_s4flag = 1 bike5_s4flag = 1 ADD_BLIP_FOR_CAR bike5_s4 bike5_s4blip CHANGE_BLIP_DISPLAY bike5_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike5_s4blip 2 IF NOT IS_CHAR_DEAD russian16_s4 TASK_DRIVE_BY russian16_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 90 ENDIF IF NOT IS_CHAR_DEAD russian15_s4 GIVE_WEAPON_TO_CHAR russian15_s4 WEAPONTYPE_MICRO_UZI 99999 TASK_DRIVE_BY russian15_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE difficulty_s4value ENDIF thirdchase_s4flag = 4 ENDIF ENDIF IF thirdchase_s4flag = 4 IF LOCATE_CAR_2D smokebike_s4 2499.36 -1871.699 10.0 10.0 FALSE CREATE_CAR SULTAN 2529.256 -1892.9 13.24 car4_s4 SET_PETROL_TANK_WEAKPOINT car4_s4 FALSE SET_CAR_HEADING car4_s4 269.177 START_PLAYBACK_RECORDED_CAR car4_s4 281 SET_CAR_HEALTH car4_s4 600 CREATE_CHAR_INSIDE_CAR car4_s4 PEDTYPE_MISSION1 MAFFA russian17_s4 SET_CHAR_DECISION_MAKER russian17_s4 smoke4_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian17_s4 TRUE CREATE_CHAR_AS_PASSENGER car4_s4 PEDTYPE_MISSION1 MAFFA 0 russian18_s4 GIVE_WEAPON_TO_CHAR russian18_s4 WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian18_s4 TRUE SET_CHAR_DECISION_MAKER russian18_s4 smoke4_DM car4swap_s4flag = 1 car4_s4flag = 1 ADD_BLIP_FOR_CAR car4_s4 car4_s4blip CHANGE_BLIP_DISPLAY car4_s4blip BLIP_ONLY CHANGE_BLIP_SCALE car4_s4blip 2 SET_CAR_HEALTH car4_s4 800 IF NOT IS_CHAR_DEAD russian18_s4 TASK_DRIVE_BY russian18_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 90 ENDIF thirdchase_s4flag = 5 ENDIF ENDIF IF thirdchase_s4flag = 5 IF NOT IS_CAR_DEAD packer_s4 IF NOT IS_RECORDING_GOING_ON_FOR_CAR packer_s4 FREEZE_CAR_POSITION packer_s4 TRUE thirdchase_s4flag = 6 ENDIF ENDIF ENDIF //need to add IF thirdchase_s4flag = 6 IF jumpchase_s4flag = 0 IF firstchase_s4flag = 2 jumpchase_s4flag = 1 finalcut_s4flag = 1 //go to final bit of the chase ENDIF ENDIF ENDIF IF packersmash1_s4flag = 1 IF NOT IS_CAR_DEAD car1_s4 IF NOT IS_CAR_DEAD packercar1_s4 IF TIMERB > 26250 //25851 IF NOT car1swap_s4flag = 3 OR NOT car1_s4flag = 2 SET_CAR_PROOFS packercar1_s4 FALSE FALSE FALSE FALSE FALSE STOP_PLAYBACK_RECORDED_CAR packercar1_s4 SET_CAR_HEALTH packercar1_s4 200 SET_CAR_ROTATION_VELOCITY packercar1_s4 1.5 -2.3999 4.1003 EXPLODE_CAR packercar1_s4 packersmash1_s4flag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF IF packersmash1_s4flag = 2 IF NOT IS_CAR_DEAD car1_s4 IF TIMERB > 26900 EXPLODE_CAR car1_s4 packersmash1_s4flag = 3 ENDIF ENDIF ENDIF IF packersmash2_s4flag = 1 IF NOT IS_CAR_DEAD car2_s4 IF NOT IS_CAR_DEAD packercar2_s4 IF TIMERB > 35647//35100 SET_CAR_PROOFS packercar2_s4 FALSE FALSE FALSE FALSE FALSE SET_CAR_HEALTH packercar2_s4 500 packersmash2_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF packersmash2_s4flag = 2 IF TIMERB > 35800 IF NOT IS_CAR_DEAD packercar2_s4 EXPLODE_CAR packercar2_s4 packersmash2_s4flag = 3 ENDIF ENDIF ENDIF IF packersmash2_s4flag = 3 IF TIMERB > 36500 IF NOT IS_CAR_DEAD car2_s4 EXPLODE_CAR car2_s4 packersmash2_s4flag = 4 ENDIF ENDIF ENDIF //spin/stop bikes if the both guys are not in car IF bike1swap_s4flag = 1 IF NOT IS_CAR_DEAD bike1_s4 IF NOT IS_CHAR_DEAD russian1_s4 ELSE IF NOT IS_CHAR_DEAD russian2_s4 IF IS_CHAR_IN_CAR russian2_s4 bike1_s4 GET_DRIVER_OF_CAR bike1_s4 driverofcar_s4 IF driverofcar_s4 = -1 GET_CAR_COORDINATES smokebike_s4 player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD russian2_s4 player_x player_y -10.0 WARP_CHAR_INTO_CAR russian2_s4 bike1_s4 TASK_DRIVE_BY russian2_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 100 bike1swap_s4flag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike1_s4 18.0 STOP_PLAYBACK_RECORDED_CAR bike1_s4 SET_CAR_ROTATION_VELOCITY bike1_s4 3.5 7.3999 8.1003 bike1swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF bike1swap_s4flag = 2 IF IS_CHAR_DEAD russian2_s4 STOP_PLAYBACK_RECORDED_CAR bike1_s4 IF NOT IS_CAR_DEAD bike1_s4 SET_CAR_FORWARD_SPEED bike1_s4 18.0 SET_CAR_ROTATION_VELOCITY bike1_s4 3.5 7.3999 8.1003 ENDIF bike1swap_s4flag = 3 ENDIF ENDIF IF bike1_s4flag = 1 IF IS_CHAR_DEAD russian1_s4 IF IS_CHAR_DEAD russian2_s4 OR IS_CAR_DEAD bike1_s4 STOP_PLAYBACK_RECORDED_CAR bike1_s4 REMOVE_BLIP bike1_s4blip MARK_CAR_AS_NO_LONGER_NEEDED bike1_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian1_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian2_s4 bike1_s4flag = 2 ENDIF ENDIF ENDIF // IF bike2swap_s4flag = 1 IF NOT IS_CAR_DEAD bike2_s4 IF NOT IS_CHAR_DEAD russian3_s4 ELSE IF NOT IS_CHAR_DEAD russian4_s4 IF IS_CHAR_IN_CAR russian4_s4 bike2_s4 GET_DRIVER_OF_CAR bike2_s4 driverofcar_s4 IF driverofcar_s4 = -1 GET_CAR_COORDINATES smokebike_s4 player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD russian4_s4 player_x player_y -10.0 WARP_CHAR_INTO_CAR russian4_s4 bike2_s4 TASK_DRIVE_BY russian4_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 100 bike2swap_s4flag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike2_s4 18.0 STOP_PLAYBACK_RECORDED_CAR bike2_s4 SET_CAR_ROTATION_VELOCITY bike2_s4 3.5 7.3999 8.1003 bike2swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF bike2swap_s4flag = 2 IF IS_CHAR_DEAD russian4_s4 STOP_PLAYBACK_RECORDED_CAR bike2_s4 IF NOT IS_CAR_DEAD bike2_s4 SET_CAR_FORWARD_SPEED bike2_s4 18.0 SET_CAR_ROTATION_VELOCITY bike2_s4 3.5 7.3999 8.1003 ENDIF bike2swap_s4flag = 3 ENDIF ENDIF IF bike2_s4flag = 1 IF IS_CHAR_DEAD russian3_s4 IF IS_CHAR_DEAD russian4_s4 OR IS_CAR_DEAD bike2_s4 STOP_PLAYBACK_RECORDED_CAR bike2_s4 REMOVE_BLIP bike2_s4blip MARK_CAR_AS_NO_LONGER_NEEDED bike2_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian3_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian4_s4 bike2_s4flag = 2 ENDIF ENDIF ENDIF // IF car1swap_s4flag = 1 IF NOT IS_CAR_DEAD car1_s4 IF NOT IS_CHAR_DEAD russian5_s4 ELSE IF NOT IS_CHAR_DEAD russian6_s4 IF IS_CHAR_IN_CAR russian6_s4 car1_s4 GET_DRIVER_OF_CAR car1_s4 driverofcar_s4 IF driverofcar_s4 = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT russian6_s4 car1_s4 car1swap_s4flag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR car1_s4 car1swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF car1swap_s4flag = 2 IF IS_CHAR_DEAD russian6_s4 STOP_PLAYBACK_RECORDED_CAR car1_s4 IF NOT IS_CAR_DEAD car1_s4 CAR_SET_IDLE car1_s4 ENDIF car1swap_s4flag = 3 ENDIF ENDIF IF car1_s4flag = 1 IF IS_CHAR_DEAD russian5_s4 IF IS_CHAR_DEAD russian6_s4 OR IS_CAR_DEAD car1_s4 STOP_PLAYBACK_RECORDED_CAR car1_s4 IF NOT IS_CAR_DEAD car1_s4 CAR_SET_IDLE car1_s4 ENDIF REMOVE_BLIP car1_s4blip MARK_CAR_AS_NO_LONGER_NEEDED car1_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian5_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian6_s4 car1_s4flag = 2 ENDIF ENDIF ENDIF // IF car2swap_s4flag = 1 IF NOT IS_CAR_DEAD car2_s4 IF NOT IS_CHAR_DEAD russian7_s4 ELSE IF NOT IS_CHAR_DEAD russian8_s4 IF IS_CHAR_IN_CAR russian8_s4 car2_s4 GET_DRIVER_OF_CAR car2_s4 driverofcar_s4 IF driverofcar_s4 = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT russian8_s4 car2_s4 car2swap_s4flag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR car2_s4 car2swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF car2swap_s4flag = 2 IF IS_CHAR_DEAD russian8_s4 STOP_PLAYBACK_RECORDED_CAR car2_s4 IF NOT IS_CAR_DEAD car2_s4 CAR_SET_IDLE car2_s4 ENDIF car2swap_s4flag = 3 ENDIF ENDIF IF car2_s4flag = 1 IF IS_CHAR_DEAD russian7_s4 IF IS_CHAR_DEAD russian8_s4 OR IS_CAR_DEAD car2_s4 STOP_PLAYBACK_RECORDED_CAR car2_s4 IF NOT IS_CAR_DEAD car2_s4 CAR_SET_IDLE car2_s4 ENDIF REMOVE_BLIP car2_s4blip MARK_CAR_AS_NO_LONGER_NEEDED car2_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian7_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian8_s4 car2_s4flag = 2 ENDIF ENDIF ENDIF // IF car3swap_s4flag = 1 IF NOT IS_CAR_DEAD car3_s4 IF NOT IS_CHAR_DEAD russian9_s4 ELSE IF NOT IS_CHAR_DEAD russian10_s4 IF IS_CHAR_IN_CAR russian10_s4 car3_s4 GET_DRIVER_OF_CAR car3_s4 driverofcar_s4 IF driverofcar_s4 = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT russian10_s4 car3_s4 car3swap_s4flag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR car3_s4 car3swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF car3swap_s4flag = 2 IF IS_CHAR_DEAD russian10_s4 STOP_PLAYBACK_RECORDED_CAR car3_s4 IF NOT IS_CAR_DEAD car3_s4 CAR_SET_IDLE car3_s4 ENDIF car3swap_s4flag = 3 ENDIF ENDIF IF car3_s4flag = 1 IF IS_CHAR_DEAD russian9_s4 IF IS_CHAR_DEAD russian10_s4 OR IS_CAR_DEAD car3_s4 STOP_PLAYBACK_RECORDED_CAR car3_s4 REMOVE_BLIP car3_s4blip IF NOT IS_CAR_DEAD car3_s4 CAR_SET_IDLE car3_s4 ENDIF MARK_CAR_AS_NO_LONGER_NEEDED car3_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian9_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian10_s4 car3_s4flag = 2 ENDIF ENDIF ENDIF // IF bike4swap_s4flag = 1 IF NOT IS_CAR_DEAD bike4_s4 IF NOT IS_CHAR_DEAD russian11_s4 ELSE IF NOT IS_CHAR_DEAD russian12_s4 IF IS_CHAR_IN_CAR russian12_s4 bike4_s4 GET_DRIVER_OF_CAR bike4_s4 driverofcar_s4 IF driverofcar_s4 = -1 GET_CAR_COORDINATES smokebike_s4 player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD russian12_s4 player_x player_y -10.0 WARP_CHAR_INTO_CAR russian12_s4 bike4_s4 TASK_DRIVE_BY russian12_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 100 bike4swap_s4flag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike4_s4 18.0 STOP_PLAYBACK_RECORDED_CAR bike4_s4 SET_CAR_ROTATION_VELOCITY bike4_s4 3.5 7.3999 8.1003 bike4swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF bike4swap_s4flag = 2 IF IS_CHAR_DEAD russian12_s4 STOP_PLAYBACK_RECORDED_CAR bike4_s4 IF NOT IS_CAR_DEAD bike4_s4 SET_CAR_FORWARD_SPEED bike4_s4 18.0 SET_CAR_ROTATION_VELOCITY bike4_s4 3.5 7.3999 8.1003 ENDIF bike4swap_s4flag = 3 ENDIF ENDIF IF bike4_s4flag = 1 IF IS_CHAR_DEAD russian11_s4 IF IS_CHAR_DEAD russian12_s4 OR IS_CAR_DEAD bike4_s4 STOP_PLAYBACK_RECORDED_CAR bike4_s4 REMOVE_BLIP bike4_s4blip MARK_CAR_AS_NO_LONGER_NEEDED bike4_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian11_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian12_s4 bike4_s4flag = 2 ENDIF ENDIF ENDIF // IF bike3swap_s4flag = 1 IF NOT IS_CAR_DEAD bike3_s4 IF NOT IS_CHAR_DEAD russian13_s4 ELSE IF NOT IS_CHAR_DEAD russian14_s4 IF IS_CHAR_IN_CAR russian14_s4 bike3_s4 GET_DRIVER_OF_CAR bike3_s4 driverofcar_s4 IF driverofcar_s4 = -1 GET_CAR_COORDINATES smokebike_s4 player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD russian14_s4 player_x player_y -10.0 WARP_CHAR_INTO_CAR russian14_s4 bike3_s4 TASK_DRIVE_BY russian14_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 100 bike3swap_s4flag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike3_s4 18.0 STOP_PLAYBACK_RECORDED_CAR bike3_s4 SET_CAR_ROTATION_VELOCITY bike3_s4 3.5 7.3999 8.1003 bike3swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF bike3swap_s4flag = 2 IF IS_CHAR_DEAD russian14_s4 STOP_PLAYBACK_RECORDED_CAR bike3_s4 IF NOT IS_CAR_DEAD bike3_s4 SET_CAR_FORWARD_SPEED bike3_s4 18.0 SET_CAR_ROTATION_VELOCITY bike3_s4 3.5 7.3999 8.1003 ENDIF bike3swap_s4flag = 3 ENDIF ENDIF IF bike3_s4flag = 1 IF IS_CHAR_DEAD russian13_s4 IF IS_CHAR_DEAD russian14_s4 OR IS_CAR_DEAD bike3_s4 STOP_PLAYBACK_RECORDED_CAR bike3_s4 REMOVE_BLIP bike3_s4blip MARK_CAR_AS_NO_LONGER_NEEDED bike3_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian13_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian14_s4 bike3_s4flag = 2 ENDIF ENDIF ENDIF // IF bike5swap_s4flag = 1 IF NOT IS_CAR_DEAD bike5_s4 IF NOT IS_CHAR_DEAD russian15_s4 ELSE IF NOT IS_CHAR_DEAD russian16_s4 IF IS_CHAR_IN_CAR russian16_s4 bike5_s4 GET_DRIVER_OF_CAR bike5_s4 driverofcar_s4 IF driverofcar_s4 = -1 GET_CAR_COORDINATES smokebike_s4 player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD russian16_s4 player_x player_y -10.0 WARP_CHAR_INTO_CAR russian16_s4 bike5_s4 TASK_DRIVE_BY russian16_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 100 bike5swap_s4flag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike5_s4 18.0 STOP_PLAYBACK_RECORDED_CAR bike5_s4 SET_CAR_ROTATION_VELOCITY bike5_s4 3.5 7.3999 8.1003 bike5swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF bike5swap_s4flag = 2 IF IS_CHAR_DEAD russian16_s4 STOP_PLAYBACK_RECORDED_CAR bike5_s4 IF NOT IS_CAR_DEAD bike5_s4 SET_CAR_FORWARD_SPEED bike5_s4 18.0 SET_CAR_ROTATION_VELOCITY bike5_s4 3.5 7.3999 8.1003 ENDIF bike5swap_s4flag = 3 ENDIF ENDIF IF bike5_s4flag = 1 IF IS_CHAR_DEAD russian15_s4 IF IS_CHAR_DEAD russian16_s4 OR IS_CAR_DEAD bike5_s4 STOP_PLAYBACK_RECORDED_CAR bike5_s4 REMOVE_BLIP bike5_s4blip MARK_CAR_AS_NO_LONGER_NEEDED bike5_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian15_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian16_s4 bike5_s4flag = 2 ENDIF ENDIF ENDIF // IF car4swap_s4flag = 1 IF NOT IS_CAR_DEAD car4_s4 IF NOT IS_CHAR_DEAD russian17_s4 ELSE IF NOT IS_CHAR_DEAD russian18_s4 IF IS_CHAR_IN_CAR russian18_s4 car4_s4 GET_DRIVER_OF_CAR car4_s4 driverofcar_s4 IF driverofcar_s4 = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT russian18_s4 car4_s4 car4swap_s4flag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR car4_s4 car4swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF car4swap_s4flag = 2 IF IS_CHAR_DEAD russian18_s4 STOP_PLAYBACK_RECORDED_CAR car4_s4 IF NOT IS_CAR_DEAD car4_s4 CAR_SET_IDLE car4_s4 ENDIF car4swap_s4flag = 3 ENDIF ENDIF IF car4_s4flag = 1 IF IS_CHAR_DEAD russian17_s4 IF IS_CHAR_DEAD russian18_s4 OR IS_CAR_DEAD car4_s4 STOP_PLAYBACK_RECORDED_CAR car4_s4 IF NOT IS_CAR_DEAD car4_s4 CAR_SET_IDLE car4_s4 ENDIF REMOVE_BLIP car4_s4blip MARK_CAR_AS_NO_LONGER_NEEDED car4_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian17_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian18_s4 car4_s4flag = 2 ENDIF ENDIF ENDIF //audio IF thirdchase_s4flag > 0 IF progressaudio_s4flag = 0 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_HA //Oh shit, now the truck’s found us again! $input_text_s4 = SMO4_HA //They after us on a bike, Smoke!! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 1 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_HB //Man, you’re so negative! $input_text_s4 = SMO4_HB //Man, you’re so negative! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 2 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_HC //Focus on the good news! $input_text_s4 = SMO4_HC //Focus on the good news! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 3 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_HD //Such as? $input_text_s4 = SMO4_HD //Such as? GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 4 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_HE //We ain’t dead and your trigger finger still works! $input_text_s4 = SMO4_HE //Waste any motherfucker that follows us! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 5 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_HF //I think the gearbox is screwed on this thing!! $input_text_s4 = SMO4_HF //I think the gearbox is screwed on this thing!! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 6 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_HH //Yeah, who negative now, bitch? $input_text_s4 = SMO4_HH //Yeah, who negative now, bitch? GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 7 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_HJ //Point taken. I’ll shut up! $input_text_s4 = SMO4_HJ //Point taken. I’ll shut up! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 8 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_ER //Watch our backs! $input_text_s4 = SMO4_ER //Watch our backs! GOSUB load_audio_s4 ENDIF ENDIF //first car falling off IF truckaudio_s4flag = 0 IF LOCATE_CAR_2D smokebike_s4 2047.59 -1850.32 12.0 12.0 FALSE truckaudio_s4flag = 1 ENDIF ENDIF IF progressaudio_s4flag = 9 IF handlingudio_s4flag = 0 IF truckaudio_s4flag = 1 audio_label_s4 = SOUND_SMO4_HN //OH SHIT! $input_text_s4 = SMO4_HN //OH SHIT! GOSUB load_audio_s4 ENDIF ENDIF ENDIF //slip road IF truckaudio_s4flag = 1 IF LOCATE_CAR_2D smokebike_s4 2121.17 -1853.67 12.0 12.0 FALSE truckaudio_s4flag = 2 ENDIF ENDIF IF progressaudio_s4flag = 10 IF handlingudio_s4flag = 0 IF truckaudio_s4flag = 2 audio_label_s4 = SOUND_SMO4_GM //Oh man, the cars found a ramp! $input_text_s4 = SMO4_GM //Oh man, the cars found a ramp! GOSUB load_audio_s4 ENDIF ENDIF ENDIF IF progressaudio_s4flag = 11 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_GP //Don’t tell me about it – shoot! $input_text_s4 = SMO4_GP //Don’t tell me about it – shoot! GOSUB load_audio_s4 ENDIF ENDIF //second car IF truckaudio_s4flag = 2 IF LOCATE_CAR_2D smokebike_s4 2216.75 -1854.73 12.0 12.0 FALSE truckaudio_s4flag = 3 ENDIF ENDIF IF progressaudio_s4flag = 12 IF handlingudio_s4flag = 0 IF truckaudio_s4flag = 3 audio_label_s4 = SOUND_SMO4_HP //Hold on! $input_text_s4 = SMO4_HP //Hold on! GOSUB load_audio_s4 ENDIF ENDIF ENDIF IF progressaudio_s4flag = 13 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_HS //Get us up that ramp! $input_text_s4 = SMO4_HS //Get us up that ramp! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 14 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_HT //I’m on it! $input_text_s4 = SMO4_HT //I’m on it! GOSUB load_audio_s4 ENDIF ENDIF //bike off bridge IF truckaudio_s4flag = 3 IF LOCATE_CAR_2D smokebike_s4 2435.94 -1874.57 12.0 12.0 FALSE truckaudio_s4flag = 4 ENDIF ENDIF IF progressaudio_s4flag = 15 IF handlingudio_s4flag = 0 IF truckaudio_s4flag = 4 audio_label_s4 = SOUND_SMO4_GL //We got more bikes on us, man! $input_text_s4 = SMO4_GL //We got more bikes on us, man! GOSUB load_audio_s4 ENDIF ENDIF ENDIF IF progressaudio_s4flag = 16 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_GN //Quit whining and shoot as many assholes as you can! $input_text_s4 = SMO4_GN //Quit whining and shoot as many assholes as you can! GOSUB load_audio_s4 ENDIF ENDIF //talking about the truck IF truckaudio_s4flag = 4 IF LOCATE_CAR_2D smokebike_s4 2539.11 -1865.31 12.0 12.0 FALSE truckaudio_s4flag = 5 ENDIF ENDIF IF progressaudio_s4flag = 17 IF handlingudio_s4flag = 0 IF truckaudio_s4flag = 4 audio_label_s4 = SOUND_SMO4_JA //Fools totalled their truck! $input_text_s4 = SMO4_JA //Fools totalled their truck!! GOSUB load_audio_s4 ENDIF ENDIF ENDIF IF progressaudio_s4flag = 18 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_JB //Go around ‘em, man! $input_text_s4 = SMO4_JB //Go around ‘em, man! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 19 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_JC //Screw that, We’re taking the scenic route $input_text_s4 = SMO4_JC //Screw that, We’re taking the scenic route GOSUB load_audio_s4 ENDIF ENDIF //audio GOSUB process_audio_s4 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////// JUMPING OVER PACKER CUT SCENE //////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF jumpchase_s4flag = 1 IF NOT IS_CAR_DEAD smokebike_s4 IF finalcut_s4flag = 1 IF LOCATE_CAR_2D smokebike_s4 2565.98 -1747.12 12.0 12.0 FALSE DO_FADE 0 FADE_OUT //request car recordings REQUEST_CAR_RECORDING 282 //player bike REQUEST_CAR_RECORDING 283 //bike1 REQUEST_CAR_RECORDING 284 //bike2 REQUEST_CAR_RECORDING 285 //bike3 REQUEST_CAR_RECORDING 286 //bike4 REQUEST_MODEL storm_drain_cover REQUEST_MODEL barrel4 SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL PLAYER1 OFF SET_CAR_PROOFS smokebike_s4 TRUE TRUE TRUE TRUE TRUE IF NOT IS_CHAR_DEAD big_smoke SET_CHAR_PROOFS big_smoke TRUE TRUE TRUE TRUE TRUE ENDIF SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE IF NOT IS_CAR_DEAD packer_s4 OPEN_CAR_DOOR packer_s4 FRONT_LEFT_DOOR ENDIF cam_pos_X_s4 = 2569.1440 cam_pos_Y_s4 = -1676.1851 cam_pos_Z_s4 = 2.9150 cam_look_X_s4 = 2569.5117 cam_look_Y_s4 = -1677.1125 cam_look_Z_s4 = 2.8487 //initial shot SET_FIXED_CAMERA_POSITION 2578.4055 -1668.3281 1.3204 0.0 0.0 0.0 //cam_pos_X_s4 cam_pos_Y_s4 cam_pos_Z_s4 POINT_CAMERA_AT_POINT 2577.8525 -1669.1570 1.4051 JUMP_CUT //cam_look_X_s4 cam_look_Y_s4 cam_look_Z_s4 STOP_PLAYBACK_RECORDED_CAR bike1_s4 DELETE_CAR bike1_s4 DELETE_CHAR russian1_s4 DELETE_CHAR russian2_s4 STOP_PLAYBACK_RECORDED_CAR bike2_s4 DELETE_CAR bike2_s4 DELETE_CHAR russian3_s4 DELETE_CHAR russian4_s4 STOP_PLAYBACK_RECORDED_CAR car1_s4 DELETE_CAR car1_s4 DELETE_CHAR russian5_s4 DELETE_CHAR russian6_s4 STOP_PLAYBACK_RECORDED_CAR car2_s4 DELETE_CAR car2_s4 DELETE_CHAR russian7_s4 DELETE_CHAR russian8_s4 STOP_PLAYBACK_RECORDED_CAR car3_s4 DELETE_CAR car3_s4 DELETE_CHAR russian9_s4 DELETE_CHAR russian10_s4 STOP_PLAYBACK_RECORDED_CAR bike4_s4 DELETE_CAR bike4_s4 DELETE_CHAR russian11_s4 DELETE_CHAR russian12_s4 STOP_PLAYBACK_RECORDED_CAR bike3_s4 DELETE_CAR bike3_s4 DELETE_CHAR russian13_s4 DELETE_CHAR russian14_s4 STOP_PLAYBACK_RECORDED_CAR bike5_s4 DELETE_CAR bike5_s4 DELETE_CHAR russian15_s4 DELETE_CHAR russian16_s4 STOP_PLAYBACK_RECORDED_CAR car4_s4 DELETE_CAR car4_s4 DELETE_CHAR russian17_s4 DELETE_CHAR russian18_s4 CREATE_CAR SULTAN 2575.8711 -1676.5568 0.7246 car1_s4 SET_CAR_HEADING car1_s4 85.0235 //carleft SET_CAR_PROOFS car1_s4 TRUE FALSE FALSE FALSE FALSE CREATE_CAR SULTAN 2567.3477 -1675.9116 0.7398 car2_s4 SET_CAR_HEADING car2_s4 263.7667 //carright SET_CAR_PROOFS car2_s4 TRUE FALSE FALSE FALSE FALSE CREATE_CHAR PEDTYPE_MISSION1 MAFFA 2578.0220 -1674.7611 0.7667 people1_s4 SET_CHAR_HEADING people1_s4 162.2371 SET_CHAR_DECISION_MAKER people1_s4 smoke4_DM GIVE_WEAPON_TO_CHAR people1_s4 WEAPONTYPE_MICRO_UZI 9999 TASK_SHOOT_AT_COORD people1_s4 2574.87 -1686.48 2.02 3000 CREATE_CHAR PEDTYPE_MISSION1 MAFFA 2574.3364 -1674.4777 0.7734 people2_s4 SET_CHAR_HEADING people2_s4 162.2371 SET_CHAR_DECISION_MAKER people2_s4 smoke4_DM GIVE_WEAPON_TO_CHAR people2_s4 WEAPONTYPE_MICRO_UZI 9999 TASK_SHOOT_AT_COORD people2_s4 2572.21 -1686.56 3.13 3000 TASK_TOGGLE_DUCK people2_s4 TRUE CREATE_CHAR PEDTYPE_MISSION1 MAFFA 2569.2949 -1674.3998 0.7752 people3_s4 SET_CHAR_HEADING people3_s4 170.9985 SET_CHAR_DECISION_MAKER people3_s4 smoke4_DM GIVE_WEAPON_TO_CHAR people3_s4 WEAPONTYPE_MICRO_UZI 9999 TASK_SHOOT_AT_COORD people3_s4 2566.95 -1686.14 2.5 3000 CREATE_CHAR PEDTYPE_MISSION1 MAFFA 2565.3142 -1673.9213 0.7864 people4_s4 SET_CHAR_HEADING people4_s4 170.9985 SET_CHAR_DECISION_MAKER people4_s4 smoke4_DM GIVE_WEAPON_TO_CHAR people4_s4 WEAPONTYPE_MICRO_UZI 9999 TASK_TOGGLE_DUCK people4_s4 TRUE TASK_SHOOT_AT_COORD people4_s4 2564.35 -1786.51 2.18 3000 IF IS_PLAYBACK_GOING_ON_FOR_CAR smokebike_s4 STOP_PLAYBACK_RECORDED_CAR smokebike_s4 //WAIT 0 ENDIF firstchase_s4flag = 3 finalcut_s4flag = 2 ENDIF ENDIF IF finalcut_s4flag = 2 IF HAS_CAR_RECORDING_BEEN_LOADED 282 IF HAS_CAR_RECORDING_BEEN_LOADED 283 IF HAS_CAR_RECORDING_BEEN_LOADED 284 IF HAS_CAR_RECORDING_BEEN_LOADED 285 IF HAS_CAR_RECORDING_BEEN_LOADED 286 IF HAS_MODEL_LOADED storm_drain_cover IF HAS_MODEL_LOADED barrel4 finalcut_s4flag = 3 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH finalcut_s4flag CASE 3 IF NOT IS_CAR_DEAD smokebike_s4 TIMERA = 0 START_PLAYBACK_RECORDED_CAR smokebike_s4 282 IF NOT IS_CAR_DEAD packer_s4 SET_CAR_HEALTH packer_s4 300 ENDIF z = 1.0 finalcut_s4flag = 7 IF NOT IS_CAR_DEAD smokebike_s4 //SET_NEAR_CLIP 0.1 ENDIF ENDIF BREAK CASE 7 //IF TIMERA > 1600 finalcut_s4flag = 8 DO_FADE 250 FADE_IN // SWITCH_WIDESCREEN ON TIMERA = 0 TIMERB = 0 timescale_status_s4 = 0 camera_pos_status_s4 = 0 camera_look_status_s4 = 0 //ENDIF BREAK CASE 8 GOSUB mission_smoke4_CUT_timescale GOSUB mission_smoke4_CUT_camera_position GOSUB mission_smoke4_CUT_camera_lookat IF TIMERA > 1800//1200 // write_debug setting_camera IF playershoot_s4flag = 0 playershoot_s4flag = 1 ENDIF SET_FIXED_CAMERA_POSITION cam_pos_X_s4 cam_pos_Y_s4 cam_pos_Z_s4 0.0 0.0 0.0 POINT_CAMERA_AT_POINT cam_look_X_s4 cam_look_Y_s4 cam_look_Z_s4 JUMP_CUT ENDIF BREAK // CASE 9 // cam_pos_X_s4 -= 0.1 // cam_pos_Y_s4 += 0.7 // SET_FIXED_CAMERA_POSITION cam_pos_X_s4 cam_pos_Y_s4 cam_pos_Z_s4 0.0 0.0 0.0 // // GET_CAR_COORDINATES smokebike_s4 cam_look_X_s4 cam_look_Y_s4 cam_look_Z_s4 // POINT_CAMERA_AT_POINT cam_look_X_s4 cam_look_Y_s4 cam_look_Z_s4 JUMP_CUT // BREAK ENDSWITCH IF playershoot_s4flag = 1 IF NOT IS_CHAR_DEAD people1_s4 enemy_s4 = people1_s4 enemytarget_s4 = scplayer GOSUB stayshoot_s4label ENDIF IF NOT IS_CHAR_DEAD people2_s4 enemy_s4 = people2_s4 enemytarget_s4 = scplayer GOSUB stayshootnoduck_s4label ENDIF IF NOT IS_CHAR_DEAD people3_s4 enemy_s4 = people3_s4 enemytarget_s4 = scplayer GOSUB stayshoot_s4label ENDIF IF NOT IS_CHAR_DEAD people4_s4 enemy_s4 = people4_s4 enemytarget_s4 = scplayer GOSUB stayshootnoduck_s4label ENDIF playershoot_s4flag = 2 ENDIF IF playershoot_s4flag = 2 IF TIMERB > 3400 playershoot_s4flag = 3 ENDIF ENDIF IF playershoot_s4flag = 3 IF TIMERB > 3480 IF NOT IS_CAR_DEAD packer_s4 FREEZE_CAR_POSITION packer_s4 FALSE EXPLODE_CAR packer_s4 ADD_EXPLOSION 2570.2278 -1684.9486 2.2595 EXPLOSION_GRENADE ADD_EXPLOSION 2570.2278 -1684.9486 2.2595 EXPLOSION_MOLOTOV playershoot_s4flag = 4 ENDIF ENDIF ENDIF IF playershoot_s4flag = 4 IF TIMERB > 3550 IF NOT IS_CAR_DEAD car1_s4 EXPLODE_CAR car1_s4 ADD_EXPLOSION 2575.2690 -1677.0764 1.0414 EXPLOSION_MOLOTOV ENDIF playershoot_s4flag = 5 ENDIF ENDIF IF playershoot_s4flag = 5 IF NOT IS_CAR_DEAD car2_s4 IF TIMERB > 3625 EXPLODE_CAR car2_s4 ADD_EXPLOSION 2568.7490 -1676.1389 1.2090 EXPLOSION_ROCKET playershoot_s4flag = 6 ENDIF ENDIF ENDIF IF finalcut_s4flag > 7 IF TIMERB > 4599 TASK_DRIVE_BY scplayer -1 -1 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 100 jumpchase_s4flag = 2 finalcut_s4flag = 10 ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////// FINAL PART OF CHASE ///////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF jumpchase_s4flag = 2 IF NOT IS_CAR_DEAD smokebike_s4 IF finalchase_s4flag = 0 SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON SET_HEADING_FOR_ATTACHED_PLAYER PLAYER1 263.0 350.0 //want 353.0 RESTORE_CAMERA_JUMPCUT SET_CAR_PROOFS smokebike_s4 FALSE TRUE TRUE TRUE TRUE IF NOT IS_CHAR_DEAD big_smoke SET_CHAR_PROOFS big_smoke TRUE TRUE TRUE TRUE TRUE ENDIF SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE CREATE_OBJECT_NO_OFFSET storm_drain_cover 2631.852 -1482.75 18.109 grate_s4 grate_s4flag = 1 progressaudio_s4flag = 0 handlingudio_s4flag = 0 truckaudio_s4flag = 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SMO4_JE //Fry, motherfuckers! SET_OBJECT_HEALTH grate_s4 150 CREATE_OBJECT barrel4 2786.521 -1416.051 15.31 barrel1_s4 CREATE_OBJECT barrel4 2787.548 -1418.3228 15.31 barrel2_s4 CREATE_OBJECT barrel4 2824.324 -1418.704 15.31 barrel3_s4 CREATE_OBJECT barrel4 2822.16 -1419.988 15.31 barrel4_s4 CREATE_OBJECT barrel4 2823.05 -1418.747 15.3 barrel5_s4 MARK_MODEL_AS_NO_LONGER_NEEDED PACKER CREATE_CAR SULTAN 2601.6887 -1600.1074 3.1106 car4_s4 SET_CAR_HEADING car4_s4 61.4469 car4_s4flag = 1 CREATE_CAR SULTAN 2595.7173 -1558.2898 8.4514 car5_s4 SET_CAR_HEADING car5_s4 287.8971 car5_s4flag = 1 CREATE_CHAR PEDTYPE_MISSION1 MAFFA 2601.4409 -1597.4613 3.2207 russian7_s4 SET_CHAR_HEADING russian7_s4 135.3988 SET_CHAR_HEALTH russian7_s4 20 SET_CHAR_DECISION_MAKER russian7_s4 smoke4_DM GIVE_WEAPON_TO_CHAR russian7_s4 WEAPONTYPE_MICRO_UZI 3000 ADD_BLIP_FOR_CHAR russian7_s4 russian7_s4blip CHANGE_BLIP_DISPLAY russian7_s4blip BLIP_ONLY CHANGE_BLIP_SCALE russian7_s4blip 2 CREATE_CHAR PEDTYPE_MISSION1 MAFFA 2596.7649 -1559.5886 8.2770 russian8_s4 SET_CHAR_HEADING russian8_s4 201.1592 SET_CHAR_HEALTH russian8_s4 20 SET_CHAR_DECISION_MAKER russian8_s4 smoke4_DM GIVE_WEAPON_TO_CHAR russian8_s4 WEAPONTYPE_MICRO_UZI 3000 ADD_BLIP_FOR_CHAR russian8_s4 russian8_s4blip CHANGE_BLIP_DISPLAY russian8_s4blip BLIP_ONLY CHANGE_BLIP_SCALE russian8_s4blip 2 CREATE_CHAR PEDTYPE_MISSION1 MAFFA 2596.9414 -1555.8549 8.9717 russian9_s4 SET_CHAR_HEADING russian9_s4 201.1592 //d SET_CHAR_HEALTH russian9_s4 20 SET_CHAR_DECISION_MAKER russian9_s4 smoke4_DM GIVE_WEAPON_TO_CHAR russian9_s4 WEAPONTYPE_MICRO_UZI 3000 ADD_BLIP_FOR_CHAR russian9_s4 russian9_s4blip CHANGE_BLIP_DISPLAY russian9_s4blip BLIP_ONLY CHANGE_BLIP_SCALE russian9_s4blip 2 //guys at front of tunnel CREATE_CHAR PEDTYPE_MISSION1 MAFFA 2624.8191 -1494.0024 15.4086 russian10_s4 SET_CHAR_HEADING russian10_s4 145.1087 SET_CHAR_HEALTH russian10_s4 10 SET_CHAR_DECISION_MAKER russian10_s4 smoke4_DM GIVE_WEAPON_TO_CHAR russian10_s4 WEAPONTYPE_MICRO_UZI 3000 ADD_BLIP_FOR_CHAR russian10_s4 russian10_s4blip CHANGE_BLIP_DISPLAY russian10_s4blip BLIP_ONLY CHANGE_BLIP_SCALE russian10_s4blip 2 CREATE_CHAR PEDTYPE_MISSION1 MAFFA 2625.4133 -1496.5874 15.3563 russian12_s4 SET_CHAR_HEADING russian12_s4 153.8693 SET_CHAR_HEALTH russian12_s4 10 SET_CHAR_DECISION_MAKER russian12_s4 smoke4_DM GIVE_WEAPON_TO_CHAR russian12_s4 WEAPONTYPE_MICRO_UZI 3000 ADD_BLIP_FOR_CHAR russian12_s4 russian12_s4blip CHANGE_BLIP_DISPLAY russian12_s4blip BLIP_ONLY CHANGE_BLIP_SCALE russian12_s4blip 2 CREATE_CAR BF400 2539.3440 -1712.7698 12.4719 bike1_s4 SET_CAR_HEADING bike1_s4 287.1995 CREATE_CHAR_INSIDE_CAR bike1_s4 PEDTYPE_MISSION1 MAFFA russian1_s4 SET_CHAR_DECISION_MAKER russian1_s4 smoke4_DM CREATE_CHAR_AS_PASSENGER bike1_s4 PEDTYPE_MISSION1 MAFFA 0 russian2_s4 GIVE_WEAPON_TO_CHAR russian2_s4 WEAPONTYPE_MICRO_UZI 9999 SET_CHAR_DECISION_MAKER russian2_s4 smoke4_DM ADD_BLIP_FOR_CAR bike1_s4 bike1_s4blip CHANGE_BLIP_DISPLAY bike1_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike1_s4blip 2 SET_CHAR_HEALTH russian1_s4 10 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian1_s4 10 SET_CHAR_HEALTH russian2_s4 10 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian2_s4 10 bike1swap_s4flag = 1 bike1_s4flag = 1 CREATE_CAR BF400 2533.5684 -1714.5688 12.4874 bike2_s4 SET_PETROL_TANK_WEAKPOINT bike2_s4 FALSE SET_CAR_HEADING bike2_s4 287.5564 CREATE_CHAR_INSIDE_CAR bike2_s4 PEDTYPE_MISSION1 MAFFA russian3_s4 SET_CHAR_DECISION_MAKER russian3_s4 smoke4_DM CREATE_CHAR_AS_PASSENGER bike2_s4 PEDTYPE_MISSION1 MAFFA 0 russian4_s4 GIVE_WEAPON_TO_CHAR russian4_s4 WEAPONTYPE_MICRO_UZI 9999 SET_CHAR_DECISION_MAKER russian4_s4 smoke4_DM ADD_BLIP_FOR_CAR bike2_s4 bike2_s4blip CHANGE_BLIP_DISPLAY bike2_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike2_s4blip 2 SET_CHAR_HEALTH russian3_s4 50 SET_CHAR_HEALTH russian4_s4 50 bike2swap_s4flag = 1 bike2_s4flag = 1 CREATE_CAR BF400 2529.6826 -1715.8032 12.4991 bike3_s4 SET_PETROL_TANK_WEAKPOINT bike3_s4 FALSE SET_CAR_HEADING bike3_s4 287.7722 CREATE_CHAR_INSIDE_CAR bike3_s4 PEDTYPE_MISSION1 MAFFA russian5_s4 SET_CHAR_DECISION_MAKER russian5_s4 smoke4_DM CREATE_CHAR_AS_PASSENGER bike3_s4 PEDTYPE_MISSION1 MAFFA 0 russian6_s4 GIVE_WEAPON_TO_CHAR russian6_s4 WEAPONTYPE_MICRO_UZI 9999 SET_CHAR_DECISION_MAKER russian6_s4 smoke4_DM ADD_BLIP_FOR_CAR bike3_s4 bike3_s4blip CHANGE_BLIP_DISPLAY bike3_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike3_s4blip 2 SET_CHAR_HEALTH russian5_s4 30 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian5_s4 10 SET_CHAR_HEALTH russian6_s4 30 SET_CHAR_ONLY_DAMAGED_BY_PLAYER russian6_s4 10 bike3swap_s4flag = 1 bike3_s4flag = 1 CREATE_CAR BF400 2524.5420 -1717.4609 12.5175 bike4_s4 SET_PETROL_TANK_WEAKPOINT bike4_s4 FALSE SET_CAR_HEADING bike4_s4 287.8176 CREATE_CHAR_INSIDE_CAR bike4_s4 PEDTYPE_MISSION1 MAFFA russian15_s4 SET_CHAR_DECISION_MAKER russian15_s4 smoke4_DM CREATE_CHAR_AS_PASSENGER bike4_s4 PEDTYPE_MISSION1 MAFFA 0 russian16_s4 GIVE_WEAPON_TO_CHAR russian16_s4 WEAPONTYPE_MICRO_UZI 9999 SET_CHAR_DECISION_MAKER russian16_s4 smoke4_DM ADD_BLIP_FOR_CAR bike4_s4 bike4_s4blip CHANGE_BLIP_DISPLAY bike4_s4blip BLIP_ONLY CHANGE_BLIP_SCALE bike4_s4blip 2 bike4swap_s4flag = 1 bike4_s4flag = 1 IF NOT IS_CHAR_DEAD russian7_s4 enemy_s4 = russian7_s4 enemytarget_s4 = scplayer GOSUB stayshoot_s4label ENDIF IF NOT IS_CHAR_DEAD russian8_s4 enemy_s4 = russian8_s4 enemytarget_s4 = scplayer GOSUB stayshootnoduck_s4label ENDIF IF NOT IS_CHAR_DEAD russian9_s4 enemy_s4 = russian9_s4 enemytarget_s4 = scplayer GOSUB stayshoot_s4label ENDIF IF NOT IS_CHAR_DEAD russian10_s4 enemy_s4 = russian10_s4 enemytarget_s4 = scplayer GOSUB stayshootnoduck_s4label ENDIF IF NOT IS_CHAR_DEAD russian12_s4 enemy_s4 = russian12_s4 enemytarget_s4 = scplayer GOSUB stayshootnoduck_s4label ENDIF finalchase_s4flag = 1 ENDIF IF finalchase_s4flag = 1 IF LOCATE_CAR_2D smokebike_s4 2580.74 -1621.47 15.0 15.0 FALSE IF NOT IS_CAR_DEAD bike1_s4 START_PLAYBACK_RECORDED_CAR bike1_s4 283 ENDIF IF NOT IS_CAR_DEAD bike2_s4 START_PLAYBACK_RECORDED_CAR bike2_s4 284 ENDIF IF NOT IS_CAR_DEAD bike3_s4 START_PLAYBACK_RECORDED_CAR bike3_s4 285 ENDIF IF NOT IS_CAR_DEAD bike4_s4 START_PLAYBACK_RECORDED_CAR bike4_s4 286 ENDIF IF NOT IS_CHAR_DEAD russian2_s4 TASK_DRIVE_BY russian2_s4 -1 smokebike_s4 0.0 0.0 0.0 200.0 DRIVEBY_AI_ALL_DIRN TRUE 90 ENDIF IF NOT IS_CHAR_DEAD russian4_s4 TASK_DRIVE_BY russian4_s4 -1 smokebike_s4 0.0 0.0 0.0 200.0 DRIVEBY_AI_ALL_DIRN TRUE difficulty_s4value ENDIF IF NOT IS_CHAR_DEAD russian6_s4 TASK_DRIVE_BY russian6_s4 -1 smokebike_s4 0.0 0.0 0.0 200.0 DRIVEBY_AI_ALL_DIRN TRUE 90 ENDIF IF NOT IS_CHAR_DEAD russian16_s4 TASK_DRIVE_BY russian16_s4 -1 smokebike_s4 0.0 0.0 0.0 200.0 DRIVEBY_AI_ALL_DIRN TRUE 90 ENDIF MARK_CAR_AS_NO_LONGER_NEEDED car1_s4 MARK_CAR_AS_NO_LONGER_NEEDED packer_s4 MARK_CHAR_AS_NO_LONGER_NEEDED packerdriver_s4 MARK_CAR_AS_NO_LONGER_NEEDED car2_s4 MARK_CHAR_AS_NO_LONGER_NEEDED people1_s4 MARK_CHAR_AS_NO_LONGER_NEEDED people2_s4 MARK_CHAR_AS_NO_LONGER_NEEDED people3_s4 MARK_CHAR_AS_NO_LONGER_NEEDED people4_s4 finalchase_s4flag = 2 ENDIF ENDIF IF finalchase_s4flag = 2 IF LOCATE_CAR_2D smokebike_s4 2676.96 -1432.1 12.0 12.0 FALSE DELETE_CHAR russian7_s4 DELETE_CHAR russian8_s4 DELETE_CHAR russian9_s4 DELETE_CAR car4_s4 DELETE_CAR car5_s4 DELETE_CAR packer_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian10_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian12_s4 //guys at front of tunnel REMOVE_BLIP russian7_s4blip REMOVE_BLIP russian8_s4blip REMOVE_BLIP russian9_s4blip REMOVE_BLIP russian10_s4blip REMOVE_BLIP russian12_s4blip CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SMO4_JS //We lost ‘em, Smoke! finalchase_s4flag = 3 ENDIF ENDIF /////////////////////////////////////////////////// PLAYER PASSES ///////////////////////////////////////////////// IF finalchase_s4flag = 3 IF NOT IS_CAR_DEAD smokebike_s4 IF LOCATE_CAR_2D smokebike_s4 2825.37 -1538.43 7.0 7.0 FALSE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL PLAYER1 OFF SET_FIXED_CAMERA_POSITION 2823.7549 -1537.1378 10.0736 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2823.2505 -1537.9661 10.3176 JUMP_CUT CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS LOAD_MISSION_AUDIO 1 SOUND_SMO4_KA //Man, we better split up. WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 2 PRINT_NOW SMO4_JS 5000 1//We lost ‘em, Smoke! finalchase_s4flag = 4 ENDIF ENDIF ENDIF IF finalchase_s4flag = 4 IF NOT IS_CAR_DEAD smokebike_s4 IF LOCATE_STOPPED_CAR_2D smokebike_s4 2825.37 -1538.43 5.0 5.0 FALSE IF NOT IS_CHAR_DEAD big_smoke IF HAS_MISSION_AUDIO_FINISHED 2 IF HAS_MISSION_AUDIO_LOADED 1 CLEAR_PRINTS PLAY_MISSION_AUDIO 1 //Man, we better split up. PRINT_NOW SMO4_KA 5000 1//Man, we better split up. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SMO4_KC //I’ll take it another block and dump it. DELETE_CHAR russian2_s4 DELETE_CHAR russian3_s4 DELETE_CAR bike1_s4 REMOVE_BLIP bike1_s4blip DELETE_CHAR russian4_s4 DELETE_CHAR russian5_s4 DELETE_CAR bike2_s4 REMOVE_BLIP bike2_s4blip DELETE_CHAR russian6_s4 DELETE_CHAR russian7_s4 DELETE_CAR bike3_s4 REMOVE_BLIP bike3_s4blip DELETE_CHAR russian15_s4 DELETE_CHAR russian16_s4 DELETE_CAR bike4_s4 REMOVE_BLIP bike4_s4blip TASK_LOOK_AT_CHAR big_smoke scplayer 10000 TIMERA = 0 finalchase_s4flag = 5 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF finalchase_s4flag = 5 IF HAS_MISSION_AUDIO_FINISHED 1 IF HAS_MISSION_AUDIO_LOADED 2 SET_FIXED_CAMERA_POSITION 2819.6658 -1542.1078 10.2063 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2820.4011 -1541.4436 10.3396 JUMP_CUT CLEAR_PRINTS IF NOT IS_CHAR_DEAD big_smoke START_CHAR_FACIAL_TALK big_smoke 10000 ENDIF PLAY_MISSION_AUDIO 2 PRINT_NOW SMO4_KC 5000 1//I’ll take it another block and dump it. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SMO4_KD //That was some shit back there. SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE scplayer KNOCKOFFBIKE_DEFAULT REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_MICRO_UZI GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_MICRO_UZI 80 IF IS_CHAR_IN_ANY_CAR scplayer TASK_LEAVE_ANY_CAR scplayer ENDIF finalchase_s4flag = 6 ENDIF ENDIF ENDIF IF finalchase_s4flag = 6 IF NOT IS_CHAR_SITTING_IN_ANY_CAR scplayer IF NOT IS_CHAR_DEAD big_smoke TASK_LOOK_AT_CHAR scplayer big_smoke 15000 TASK_LOOK_AT_CHAR big_smoke scplayer 15000 finalchase_s4flag = 7 ENDIF ENDIF ENDIF IF finalchase_s4flag = 7 IF HAS_MISSION_AUDIO_FINISHED 2 IF HAS_MISSION_AUDIO_LOADED 1 CLEAR_PRINTS PLAY_MISSION_AUDIO 1 PRINT_NOW SMO4_KD 5000 1 //That was some shit back there CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SMO4_KE //Yeah, for sure. finalchase_s4flag = 8 ENDIF ENDIF ENDIF IF finalchase_s4flag = 8 IF HAS_MISSION_AUDIO_FINISHED 1 IF HAS_MISSION_AUDIO_LOADED 2 IF NOT IS_CHAR_DEAD big_smoke STOP_CHAR_FACIAL_TALK big_smoke ENDIF CLEAR_PRINTS PLAY_MISSION_AUDIO 2 PRINT_NOW SMO4_KE 5000 1 //Yeah, for sure. START_CHAR_FACIAL_TALK scplayer 10000 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SMO4_KF //Listen we can’t hang around here—I’ll see you later, homie. finalchase_s4flag = 9 ENDIF ENDIF ENDIF IF finalchase_s4flag = 9 IF HAS_MISSION_AUDIO_FINISHED 2 IF HAS_MISSION_AUDIO_LOADED 1 CLEAR_PRINTS PLAY_MISSION_AUDIO 1 PRINT_NOW SMO4_KF 5000 1 //Listen we can’t hang around here—I’ll see you later, homie. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SMO4_KG //Big love, CJ. TIMERA = 0 finalchase_s4flag = 10 ENDIF ENDIF ENDIF IF finalchase_s4flag = 10 IF NOT IS_CAR_DEAD smokebike_s4 IF NOT IS_CHAR_DEAD big_smoke IF TIMERA > 3000 IF HAS_MISSION_AUDIO_FINISHED 1 IF HAS_MISSION_AUDIO_LOADED 2 STOP_CHAR_FACIAL_TALK scplayer SET_CAR_STRAIGHT_LINE_DISTANCE smokebike_S4 200 TASK_CAR_DRIVE_TO_COORD big_smoke smokebike_s4 2804.5 -1538.95 10.38 6.0 MODE_NORMAL 0 DRIVINGMODE_PLOUGHTHROUGH PLAY_MISSION_AUDIO 2 PRINT_NOW SMO4_KG 2500 1 //Big love, CJ. IF NOT IS_CHAR_DEAD big_smoke START_CHAR_FACIAL_TALK big_smoke 10000 ENDIF TIMERA = 0 finalchase_s4flag = 11 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF finalchase_s4flag = 11 IF TIMERA > 2000 IF HAS_MISSION_AUDIO_FINISHED 2 IF NOT IS_CHAR_DEAD big_smoke STOP_CHAR_FACIAL_TALK big_smoke ENDIF SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER DELETE_CAR smokebike_S4 DELETE_CHAR big_smoke CLEAR_ONSCREEN_COUNTER bikehealth_s4 CLEAR_PRINTS GOTO mission_drugs1_passed //clear counters finalchase_s4flag = 12 ENDIF ENDIF ENDIF //gate check IF grate_s4flag = 1 IF HAS_OBJECT_OF_TYPE_BEEN_SMASHED 2631.852 -1482.75 18.109 10.0 storm_drain_cover IF HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON grate_s4 WEAPONTYPE_MICRO_UZI CLEAR_PRINTS grate_s4flag = 2 ELSE GET_CAR_HEALTH smokebike_s4 bikehealth_s4 //bikehealth_s4 = bikehealth_s4 - 100 //SET_CAR_HEALTH smokebike_s4 bikehealth_s4 //bikehealth_s4 = bikehealth_s4 / 10 //WRITE_DEBUG_WITH_INT smokebike_s4 smokebike_s4 CLEAR_PRINTS grate_s4flag = 3 ENDIF ENDIF ENDIF //audio IF finalchase_s4flag > 0 IF finalchase_s4flag < 4 IF progressaudio_s4flag = 0 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_JE //Fry, motherfuckers! $input_text_s4 = SMO4_JE //Fry, motherfuckers! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 1 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_JF //There’s the old sewer up ahead! $input_text_s4 = SMO4_JF //There’s the old sewer up ahead! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 2 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_JG //Shoot out the gate! $input_text_s4 = SMO4_JG //Shoot out the gate! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 3 IF handlingudio_s4flag = 0 IF grate_s4flag = 2 audio_label_s4 = SOUND_SMO4_JH //Nice one, CJ, here we go! $input_text_s4 = SMO4_JH //Nice one, CJ, here we go! GOSUB load_audio_s4 ELSE IF grate_s4flag = 3 audio_label_s4 = SOUND_SMO4_JJ //The gate, Carl, the GATE! $input_text_s4 = SMO4_JJ //The gate, Carl, the GATE! GOSUB load_audio_s4 ENDIF ENDIF ENDIF ENDIF IF truckaudio_s4flag = 0 IF LOCATE_CAR_2D smokebike_s4 2647.31 -1457.67 10.0 10.0 FALSE truckaudio_s4flag = 1 ENDIF ENDIF IF progressaudio_s4flag = 4 IF handlingudio_s4flag = 0 IF truckaudio_s4flag = 1 audio_label_s4 = SOUND_SMO4_JK //Man, I used to hate this tunnel when we was kids. $input_text_s4 = SMO4_JK //Man, I used to hate this tunnel when we was kids. GOSUB load_audio_s4 ENDIF ENDIF ENDIF IF progressaudio_s4flag = 5 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_JL //We can reminisce later – we still got company! $input_text_s4 = SMO4_JL //We can reminisce later – we still got company! GOSUB load_audio_s4 ENDIF ENDIF IF progressaudio_s4flag = 6 IF handlingudio_s4flag = 0 audio_label_s4 = SOUND_SMO4_JP //Don’t these guys ever give up? $input_text_s4 = SMO4_JP //Don’t these guys ever give up? GOSUB load_audio_s4 ENDIF ENDIF GOSUB process_audio_s4 ENDIF ENDIF //if cars get damaged set them on fire instantly IF car4_s4flag = 1 IF NOT IS_CAR_DEAD car4_s4 IF HAS_CAR_BEEN_DAMAGED_BY_CHAR car4_s4 scplayer EXPLODE_CAR car4_s4 car4_s4flag = 2 ENDIF ENDIF ENDIF IF car5_s4flag = 1 IF NOT IS_CAR_DEAD car5_s4 IF HAS_CAR_BEEN_DAMAGED_BY_CHAR car5_s4 scplayer EXPLODE_CAR car5_s4 car5_s4flag = 2 ENDIF ENDIF ENDIF //spin/stop bikes if the both guys are not in car IF bike1swap_s4flag = 1 IF NOT IS_CAR_DEAD bike1_s4 IF NOT IS_CHAR_DEAD russian1_s4 ELSE IF NOT IS_CHAR_DEAD russian2_s4 IF IS_CHAR_IN_CAR russian2_s4 bike1_s4 GET_DRIVER_OF_CAR bike1_s4 driverofcar_s4 IF driverofcar_s4 = -1 GET_CAR_COORDINATES smokebike_s4 player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD russian2_s4 player_x player_y -10.0 WARP_CHAR_INTO_CAR russian2_s4 bike1_s4 TASK_DRIVE_BY russian2_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 100 bike1swap_s4flag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike1_s4 18.0 STOP_PLAYBACK_RECORDED_CAR bike1_s4 SET_CAR_ROTATION_VELOCITY bike1_s4 3.5 7.3999 8.1003 bike1swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF bike1swap_s4flag = 2 IF IS_CHAR_DEAD russian2_s4 STOP_PLAYBACK_RECORDED_CAR bike1_s4 IF NOT IS_CAR_DEAD bike1_s4 SET_CAR_FORWARD_SPEED bike1_s4 18.0 SET_CAR_ROTATION_VELOCITY bike1_s4 3.5 7.3999 8.1003 ENDIF bike1swap_s4flag = 3 ENDIF ENDIF IF bike1_s4flag = 1 IF IS_CHAR_DEAD russian1_s4 IF IS_CHAR_DEAD russian2_s4 OR IS_CAR_DEAD bike1_s4 STOP_PLAYBACK_RECORDED_CAR bike1_s4 REMOVE_BLIP bike1_s4blip MARK_CAR_AS_NO_LONGER_NEEDED bike1_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian1_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian2_s4 bike1_s4flag = 2 ENDIF ENDIF ENDIF // IF bike2swap_s4flag = 1 IF NOT IS_CAR_DEAD bike2_s4 IF NOT IS_CHAR_DEAD russian3_s4 ELSE IF NOT IS_CHAR_DEAD russian4_s4 IF IS_CHAR_IN_CAR russian4_s4 bike2_s4 GET_DRIVER_OF_CAR bike2_s4 driverofcar_s4 IF driverofcar_s4 = -1 GET_CAR_COORDINATES smokebike_s4 player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD russian4_s4 player_x player_y -10.0 WARP_CHAR_INTO_CAR russian4_s4 bike2_s4 TASK_DRIVE_BY russian4_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 100 bike2swap_s4flag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike2_s4 18.0 STOP_PLAYBACK_RECORDED_CAR bike2_s4 SET_CAR_ROTATION_VELOCITY bike2_s4 3.5 7.3999 8.1003 bike2swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF bike2swap_s4flag = 2 IF IS_CHAR_DEAD russian4_s4 STOP_PLAYBACK_RECORDED_CAR bike2_s4 IF NOT IS_CAR_DEAD bike2_s4 SET_CAR_FORWARD_SPEED bike2_s4 18.0 SET_CAR_ROTATION_VELOCITY bike2_s4 3.5 7.3999 8.1003 ENDIF bike2swap_s4flag = 3 ENDIF ENDIF IF bike2_s4flag = 1 IF IS_CHAR_DEAD russian3_s4 IF IS_CHAR_DEAD russian4_s4 OR IS_CAR_DEAD bike2_s4 STOP_PLAYBACK_RECORDED_CAR bike2_s4 REMOVE_BLIP bike2_s4blip MARK_CAR_AS_NO_LONGER_NEEDED bike2_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian3_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian4_s4 bike2_s4flag = 2 ENDIF ENDIF ENDIF // IF bike3swap_s4flag = 1 IF NOT IS_CAR_DEAD bike3_s4 IF NOT IS_CHAR_DEAD russian5_s4 ELSE IF NOT IS_CHAR_DEAD russian6_s4 IF IS_CHAR_IN_CAR russian6_s4 bike3_s4 GET_DRIVER_OF_CAR bike3_s4 driverofcar_s4 IF driverofcar_s4 = -1 GET_CAR_COORDINATES smokebike_s4 player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD russian6_s4 player_x player_y -10.0 WARP_CHAR_INTO_CAR russian6_s4 bike3_s4 TASK_DRIVE_BY russian6_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 100 bike3swap_s4flag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike3_s4 18.0 STOP_PLAYBACK_RECORDED_CAR bike3_s4 SET_CAR_ROTATION_VELOCITY bike3_s4 3.5 7.3999 8.1003 bike3swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF bike3swap_s4flag = 2 IF IS_CHAR_DEAD russian6_s4 STOP_PLAYBACK_RECORDED_CAR bike3_s4 IF NOT IS_CAR_DEAD bike3_s4 SET_CAR_FORWARD_SPEED bike3_s4 18.0 SET_CAR_ROTATION_VELOCITY bike3_s4 3.5 7.3999 8.1003 ENDIF bike3swap_s4flag = 3 ENDIF ENDIF IF bike3_s4flag = 1 IF IS_CHAR_DEAD russian5_s4 IF IS_CHAR_DEAD russian6_s4 OR IS_CAR_DEAD bike3_s4 STOP_PLAYBACK_RECORDED_CAR bike3_s4 REMOVE_BLIP bike3_s4blip MARK_CAR_AS_NO_LONGER_NEEDED bike3_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian5_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian6_s4 bike3_s4flag = 2 ENDIF ENDIF ENDIF // IF bike4swap_s4flag = 1 IF NOT IS_CAR_DEAD bike4_s4 IF NOT IS_CHAR_DEAD russian15_s4 ELSE IF NOT IS_CHAR_DEAD russian16_s4 IF IS_CHAR_IN_CAR russian16_s4 bike4_s4 GET_DRIVER_OF_CAR bike4_s4 driverofcar_s4 IF driverofcar_s4 = -1 GET_CAR_COORDINATES smokebike_s4 player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD russian16_s4 player_x player_y -10.0 WARP_CHAR_INTO_CAR russian16_s4 bike4_s4 TASK_DRIVE_BY russian16_s4 -1 smokebike_s4 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 100 bike4swap_s4flag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike4_s4 18.0 STOP_PLAYBACK_RECORDED_CAR bike4_s4 SET_CAR_ROTATION_VELOCITY bike4_s4 3.5 7.3999 8.1003 bike4swap_s4flag = 2 ENDIF ENDIF ENDIF ENDIF IF bike4swap_s4flag = 2 IF IS_CHAR_DEAD russian16_s4 STOP_PLAYBACK_RECORDED_CAR bike4_s4 IF NOT IS_CAR_DEAD bike4_s4 SET_CAR_FORWARD_SPEED bike4_s4 18.0 SET_CAR_ROTATION_VELOCITY bike4_s4 3.5 7.3999 8.1003 ENDIF bike4swap_s4flag = 3 ENDIF ENDIF IF bike4_s4flag = 1 IF IS_CHAR_DEAD russian15_s4 IF IS_CHAR_DEAD russian16_s4 OR IS_CAR_DEAD bike4_s4 STOP_PLAYBACK_RECORDED_CAR bike4_s4 REMOVE_BLIP bike4_s4blip MARK_CAR_AS_NO_LONGER_NEEDED bike4_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian15_s4 MARK_CHAR_AS_NO_LONGER_NEEDED russian16_s4 bike4_s4flag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF GOTO smoke4_main_loop mission_smoke4_CUT_timescale: SWITCH timescale_status_s4 CASE 0 SET_TIME_SCALE 0.8 timescale_s4 = 0.8 timescale_status_s4 ++ BREAK CASE 1 IF TIMERB > 3200 timescale_s4 -=@ 0.05 IF timescale_s4 < 0.3 timescale_s4 = 0.3 timescale_status_s4 ++ ENDIF SET_TIME_SCALE timescale_s4 ENDIF BREAK CASE 2 IF TIMERB > 4000 timescale_s4 +=@ 0.05 IF timescale_s4 > 1.0 timescale_s4 = 1.0 timescale_status_s4 ++ ENDIF SET_TIME_SCALE timescale_s4 ENDIF BREAK ENDSWITCH RETURN mission_smoke4_CUT_camera_position: SWITCH camera_pos_status_s4 CASE 0 GET_CAR_COORDINATES smokebike_s4 cam_look_X_s4 cam_look_Y_s4 cam_look_Z_s4 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS smokebike_s4 1.0 -2.5 0.0 cam_pos_X_s4 cam_pos_Y_s4 cam_pos_Z_s4 cam_pos_X_s4 = 2563.2803 cam_pos_Y_s4 = -1737.3275 cam_pos_Z_s4 = 1.1412 cam_look_X_s4 = 2562.6504 cam_look_Y_s4 = -1734.7252 cam_look_Z_s4 = 1.1991 cam_P_acc_X_s4 = 0.001 cam_P_acc_Y_s4 = 0.000000000003 cam_P_speed_X_s4 = 0.03 cam_P_speed_Y_s4 = 0.1 cam_P_Y_cap_speed = 0.47 cam_P_speed_Z_s4 = 0.003 camera_pos_status_s4 ++ CASE 1 IF TIMERB < 2900 cam_P_speed_X_s4 +=@ cam_P_acc_X_s4 cam_P_acc_Y_s4 +=@ cam_P_acc_Y_s4 cam_P_speed_Y_s4 +=@ cam_P_acc_Y_s4 IF cam_P_speed_Y_s4 > cam_P_Y_cap_speed cam_P_speed_Y_s4 = cam_P_Y_cap_speed ENDIF cam_pos_X_s4 +=@ cam_P_speed_X_s4 cam_pos_Y_s4 +=@ cam_P_speed_Y_s4 cam_pos_Z_s4 +=@ cam_P_speed_Z_s4 BREAK ELSE cam_P_acc_X_s4 = -0.01 camera_pos_status_s4 ++ ENDIF CASE 2 IF TIMERB < 4000 cam_P_speed_X_s4 +=@ cam_P_acc_X_s4 cam_P_acc_Y_s4 +=@ cam_P_acc_Y_s4 cam_P_speed_Y_s4 +=@ cam_P_acc_Y_s4 IF cam_P_speed_Y_s4 > cam_P_Y_cap_speed cam_P_speed_Y_s4 = cam_P_Y_cap_speed ENDIF cam_pos_X_s4 +=@ cam_P_speed_X_s4 cam_pos_Y_s4 +=@ cam_P_speed_Y_s4 cam_pos_Z_s4 +=@ cam_P_speed_Z_s4 BREAK ELSE camera_pos_status_s4 ++ ENDIF ENDSWITCH RETURN mission_smoke4_CUT_camera_lookat: SWITCH camera_look_status_s4 CASE 0 cam_L_acc_Y_s4 = 0.007 cam_L_acc_Z_s4 = 0.012 cam_L_speed_X_s4 = 0.045 cam_L_speed_Y_s4 = 0.06 cam_L_Y_cap_speed = 0.32 cam_L_speed_Z_s4 = 0.005 cam_L_Z_cap_speed = 0.1 camera_look_status_s4 ++ CASE 1 IF TIMERB < 2800 cam_L_speed_Y_s4 +=@ cam_L_acc_Y_s4 IF cam_L_speed_Y_s4 > cam_L_Y_cap_speed cam_L_speed_Y_s4 = cam_L_Y_cap_speed ENDIF cam_look_X_s4 +=@ cam_L_speed_X_s4 cam_look_Y_s4 +=@ cam_L_speed_Y_s4 cam_look_Z_s4 +=@ cam_L_speed_Z_s4 BREAK ELSE camera_look_status_s4 ++ ENDIF CASE 2 IF TIMERB < 3600 cam_L_speed_Y_s4 +=@ cam_L_acc_Y_s4 IF cam_L_speed_Y_s4 > cam_L_Y_cap_speed cam_L_speed_Y_s4 = cam_L_Y_cap_speed ENDIF cam_L_speed_Z_s4 +=@ cam_L_acc_Z_s4 IF cam_L_speed_Z_s4 > cam_L_Z_cap_speed cam_L_speed_Z_s4 = cam_L_Z_cap_speed ENDIF cam_look_X_s4 +=@ cam_L_speed_X_s4 cam_look_Y_s4 +=@ cam_L_speed_Y_s4 cam_look_Z_s4 +=@ cam_L_speed_Z_s4 ELSE camera_look_status_s4 ++ ENDIF BREAK ENDSWITCH RETURN load_audio_s4: IF handlingudio_s4flag = 0 LOAD_MISSION_AUDIO 1 audio_label_s4 $text_label_s4 = $input_text_s4 handlingudio_s4flag = 1 ENDIF RETURN process_audio_s4: IF handlingudio_s4flag = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW $text_label_s4 4000 1 //Dummy message" PLAY_MISSION_AUDIO 1 handlingudio_s4flag = 2 ENDIF ENDIF IF handlingudio_s4flag = 2 IF HAS_MISSION_AUDIO_FINISHED 1 progressaudio_s4flag++ CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS handlingudio_s4flag = 0 ENDIF ENDIF RETURN runkillstay_s4label: OPEN_SEQUENCE_TASK runkillstay_s4seq TASK_GO_STRAIGHT_TO_COORD -1 enemyx_s4 enemyy_s4 enemyz_s4 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 enemytarget_s4 CLOSE_SEQUENCE_TASK runkillstay_s4seq PERFORM_SEQUENCE_TASK enemy_s4 runkillstay_s4seq CLEAR_SEQUENCE_TASK runkillstay_s4seq RETURN run2kill_s4label: OPEN_SEQUENCE_TASK run2kill_s4seq TASK_GO_TO_COORD_WHILE_SHOOTING -1 enemyx_s4 enemyy_s4 enemyz_s4 PEDMOVE_RUN 0.5 1.0 scplayer TASK_GO_TO_COORD_WHILE_SHOOTING -1 enemyx2_s4 enemyy2_s4 enemyz2_s4 PEDMOVE_RUN 0.5 1.0 scplayer TASK_KILL_CHAR_ON_FOOT -1 enemytarget_s4 CLOSE_SEQUENCE_TASK run2kill_s4seq PERFORM_SEQUENCE_TASK enemy_s4 run2kill_s4seq CLEAR_SEQUENCE_TASK run2kill_s4seq RETURN runkill_s4label: OPEN_SEQUENCE_TASK runkill_s4seq TASK_GO_STRAIGHT_TO_COORD -1 enemyx_s4 enemyy_s4 enemyz_s4 PEDMOVE_RUN -1 TASK_KILL_CHAR_ON_FOOT -1 enemytarget_s4 CLOSE_SEQUENCE_TASK runkill_s4seq PERFORM_SEQUENCE_TASK enemy_s4 runkill_s4seq CLEAR_SEQUENCE_TASK runkill_s4seq RETURN stayshoot_s4label: OPEN_SEQUENCE_TASK stayshoot_s4seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_TOGGLE_DUCK -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 enemytarget_s4 CLOSE_SEQUENCE_TASK stayshoot_s4seq PERFORM_SEQUENCE_TASK enemy_s4 stayshoot_s4seq CLEAR_SEQUENCE_TASK stayshoot_s4seq RETURN stayshootnoduck_s4label: OPEN_SEQUENCE_TASK stayshootnoduck_s4seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 enemytarget_s4 CLOSE_SEQUENCE_TASK stayshootnoduck_s4seq PERFORM_SEQUENCE_TASK enemy_s4 stayshootnoduck_s4seq CLEAR_SEQUENCE_TASK stayshootnoduck_s4seq RETURN mission_drugs1_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_MICRO_UZI // WDTOM failing the mission needs to take this weapon away or player has infinite ammo! RETURN // **************************************** mission drugs1 passed ************************ mission_drugs1_passed: flag_smoke_mission_counter ++ REMOVE_BLIP smoke_contact_blip REGISTER_MISSION_PASSED ( SMOKE_4 ) PLAYER_MADE_PROGRESS 1 //REGISTER_MISSION_PASSED ( ) PRINT_WITH_NUMBER_BIG ( M_PASSR ) 10 5000 1 //"Mission Passed!" PLAY_MISSION_PASSED_TUNE 1 AWARD_PLAYER_MISSION_RESPECT 10//amount of respect CLEAR_WANTED_LEVEL player1 //START_NEW_SCRIPT hood_mission4_loop RETURN // ********************************** mission cleanup ************************************** mission_cleanup_drugs1: flag_player_on_mission = 0 SWITCH_ROADS_ON 1694.12 -1604.33 5.0 1805.94 -1593.12 15.0 REMOVE_CHAR_ELEGANTLY big_smoke UNLOAD_SPECIAL_CHARACTER 1 DISABLE_ALL_ENTRY_EXITS FALSE //blips REMOVE_BLIP smokecar_s4blip REMOVE_BLIP atrium_s4blip REMOVE_BLIP smoke_s4blip REMOVE_BLIP packer_s4blip REMOVE_BLIP car1_s4blip REMOVE_BLIP car2_s4blip REMOVE_BLIP car3_s4blip REMOVE_BLIP car4_s4blip REMOVE_BLIP bike1_s4blip REMOVE_BLIP bike2_s4blip REMOVE_BLIP bike3_s4blip REMOVE_BLIP bike4_s4blip REMOVE_BLIP bike5_s4blip REMOVE_BLIP bike6_s4blip REMOVE_BLIP bike7_s4blip REMOVE_BLIP rcar4_s4blip //REMOVE_BLIP bike9_s4blip REMOVE_BLIP bike10_s4blip REMOVE_BLIP bike11_s4blip REMOVE_BLIP bike12_s4blip REMOVE_BLIP russian13_s4blip REMOVE_BLIP russian14_s4blip REMOVE_BLIP rcar3_s4blip REMOVE_BLIP rcar4_s4blip REMOVE_BLIP rcar1_s4blip REMOVE_BLIP russian7_s4blip REMOVE_BLIP russian8_s4blip REMOVE_BLIP russian9_s4blip REMOVE_BLIP russian10_s4blip REMOVE_BLIP russian12_s4blip REMOVE_BLIP russian13_s4blip REMOVE_BLIP russian14_s4blip REMOVE_BLIP russian20_s4blip SET_PLAYER_GROUP_RECRUITMENT player1 TRUE SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 //mark models MARK_MODEL_AS_NO_LONGER_NEEDED GLENDALE MARK_MODEL_AS_NO_LONGER_NEEDED WFYRI MARK_MODEL_AS_NO_LONGER_NEEDED WFYST MARK_MODEL_AS_NO_LONGER_NEEDED MAFFA MARK_MODEL_AS_NO_LONGER_NEEDED MAFFB MARK_MODEL_AS_NO_LONGER_NEEDED BF400 MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG REMOVE_ANIMATION JST_BUISNESS MARK_MODEL_AS_NO_LONGER_NEEDED SULTAN MARK_MODEL_AS_NO_LONGER_NEEDED KMB_SKIP MARK_MODEL_AS_NO_LONGER_NEEDED NEBULA MARK_MODEL_AS_NO_LONGER_NEEDED COACH MARK_MODEL_AS_NO_LONGER_NEEDED PACKER MARK_MODEL_AS_NO_LONGER_NEEDED storm_drain_cover MARK_MODEL_AS_NO_LONGER_NEEDED barrel4 //density's SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 //multiplier SET_WANTED_MULTIPLIER 1.0 SET_MAX_WANTED_LEVEL 4 //counters CLEAR_ONSCREEN_COUNTER smokehealth_s4 CLEAR_ONSCREEN_COUNTER bikehealth_s4 //other IF IS_PLAYER_PLAYING PLAYER1 //SET_PLAYER_FAST_RELOAD PLAYER1 FALSE SHUT_CHAR_UP scplayer FALSE SET_PLAYER_ENTER_CAR_BUTTON PLAYER1 TRUE SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE scplayer KNOCKOFFBIKE_DEFAULT SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF IF NOT IS_CHAR_DEAD big_smoke SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE big_smoke KNOCKOFFBIKE_DEFAULT ENDIF RELEASE_WEATHER DETACH_CHAR_FROM_CAR scplayer SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE SWITCH_EMERGENCY_SERVICES ON GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED IF IS_PLAYER_PLAYING PLAYER1 IF NOT IS_CHAR_DEAD russian1_s4 TASK_KILL_CHAR_ON_FOOT russian1_s4 scplayer ENDIF IF NOT IS_CHAR_DEAD russian2_s4 TASK_KILL_CHAR_ON_FOOT russian2_s4 scplayer ENDIF IF NOT IS_CHAR_DEAD russian3_s4 TASK_KILL_CHAR_ON_FOOT russian3_s4 scplayer ENDIF IF NOT IS_CHAR_DEAD russian4_s4 TASK_KILL_CHAR_ON_FOOT russian4_s4 scplayer ENDIF IF NOT IS_CHAR_DEAD russian5_s4 TASK_KILL_CHAR_ON_FOOT russian5_s4 scplayer ENDIF IF NOT IS_CHAR_DEAD russian6_s4 TASK_KILL_CHAR_ON_FOOT russian6_s4 scplayer ENDIF IF NOT IS_CHAR_DEAD russian7_s4 TASK_KILL_CHAR_ON_FOOT russian7_s4 scplayer ENDIF IF NOT IS_CHAR_DEAD russian8_s4 TASK_KILL_CHAR_ON_FOOT russian8_s4 scplayer ENDIF IF NOT IS_CHAR_DEAD russian9_s4 TASK_KILL_CHAR_ON_FOOT russian9_s4 scplayer ENDIF IF NOT IS_CHAR_DEAD russian10_s4 TASK_KILL_CHAR_ON_FOOT russian10_s4 scplayer ENDIF IF NOT IS_CHAR_DEAD russian11_s4 TASK_KILL_CHAR_ON_FOOT russian11_s4 scplayer ENDIF IF NOT IS_CHAR_DEAD russian12_s4 TASK_KILL_CHAR_ON_FOOT russian12_s4 scplayer ENDIF IF NOT IS_CHAR_DEAD russian13_s4 TASK_KILL_CHAR_ON_FOOT russian13_s4 scplayer ENDIF IF NOT IS_CHAR_DEAD russian14_s4 TASK_KILL_CHAR_ON_FOOT russian14_s4 scplayer ENDIF ENDIF RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* MUSIC 1 ******************************************* // ********************************* Mission Description *********************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME strap1 // Mission start stuff GOSUB mission_start_music1 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_music1_failed ENDIF GOSUB mission_cleanup_music1 MISSION_END { // **************************************** Declare variables ***************************** LVAR_FLOAT m1_beach_party_x m1_beach_party_y m1_beach_party_z LVAR_INT m1_campfire1 m1_campfire2 LVAR_FLOAT m1_campfire1_x m1_campfire1_y m1_campfire1_z LVAR_FLOAT m1_campfire2_x m1_campfire2_y m1_campfire2_z LVAR_INT m1_campfire1wood m1_campfire2wood LVAR_INT m1_sound_van LVAR_FLOAT m1_sound_van_x m1_sound_van_y m1_sound_van_z m1_sound_van_heading LVAR_FLOAT m1_destination_x m1_destination_y m1_destination_z //LVAR_FLOAT m1_van_speed LVAR_INT m1_DJ LVAR_FLOAT m1_DJ_start_x m1_DJ_start_y LVAR_FLOAT m1_next_to_DJ_x m1_next_to_DJ_y m1_next_to_DJ_z LVAR_INT m1_num_of_ambient_peds m1_ambient_peds[21] LVAR_FLOAT m1_ambient_ped_start_x[21] m1_ambient_ped_start_y[21] m1_ambient_ped_start_heading[21] LVAR_INT m1_num_of_perimeter_cars LVAR_INT m1_perimeter_cars[7] m1_car_drivers[7] m1_perimeter_car_driver LVAR_FLOAT m1_party_radius m1_four_times_party_radius m1_perimeter_car_angle LVAR_FLOAT m1_perimeter_car_x m1_perimeter_car_y m1_perimeter_car_z m1_perimeter_car_heading LVAR_INT m1_num_of_cars_chasing_player //LVAR_INT m1_perimeter_quads[3] //LVAR_FLOAT m1_perimeter_quad_x[3] m1_perimeter_quad_y[3] m1_perimeter_quad_heading[3] LVAR_INT m1_index m1_ped_index m1_car_index LVAR_INT m1_first_drink_seq m1_second_drink_seq LVAR_INT m1_hours m1_minutes LVAR_INT m1_DJ_leave_car_seq LVAR_INT m1_task_status LVAR_INT m1_seq_progress LVAR_INT m1_party_decisions LVAR_INT m1_DJ_play_seq m1_DJ_dance_seq m1_ambient_ped_anim_seq // mission audio LVAR_TEXT_LABEL m1_audio_text[1] LVAR_INT m1_audio_sound[1] LVAR_INT m1_audio_is_playing m1_audio_index m1_total_audio_to_play m1_started_talking LVAR_INT m1_current_audio_needed CONST_INT M1_STEAL_AUDIO 0 CONST_INT M1_DANCE_FAIL_AUDIO 1 // flags LVAR_INT m1_fake_creates LVAR_INT m1_beach_party_created m1_first_scripted_cutscene_played LVAR_INT m1_talking_to_DJ m1_DJ_going_back_to_decks LVAR_INT m1_dancing_for_DJ m1_playing_dancing_failed_audio LVAR_INT m1_completed_dancing m1_talking_to_DJ_after_dancing m1_DJ_gone_to_van m1_DJ_unlocked_van LVAR_INT m1_sound_van_captured m1_DJ_left_van m1_DJ_started_shouting m1_DJ_shouted LVAR_INT m1_player_entered_sound_van m1_player_in_sound_van m1_cars_chasing_player LVAR_INT m1_ambient_ped_attacking[21] m1_DJ_attacking LVAR_INT m1_ped_chasing[21] m1_car_chasing[7] LVAR_INT m1_driver_getting_in_to_car[7] LVAR_INT m1_all_chars_and_cars_not_chasing_deleted LVAR_INT m1_party_disrupted LVAR_INT m1_everyone_stopped_from_chasing_player LVAR_INT m1_script_fires_on // blips LVAR_INT m1_DJ_blip m1_sound_van_blip m1_destination_blip // **************************************** Mission Start ********************************** mission_start_music1: REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT STRAP1 flag_player_on_mission = 1 WAIT 0 // **************************************** Initialise variables ***************************** //m1_beach_party_x = 2872.26 //m1_beach_party_y = -2157.87 //m1_beach_party_z = 1.76 m1_beach_party_x = 526.84 m1_beach_party_y = -1885.19 m1_beach_party_z = 2.4 m1_campfire1_x = m1_beach_party_x + 2.5 m1_campfire1_y = m1_beach_party_y + 3.5 m1_campfire1_z = 2.79 m1_campfire2_x = m1_beach_party_x - 7.0 m1_campfire2_y = m1_beach_party_y - 9.8 m1_campfire2_z = 2.06 m1_sound_van_x = m1_campfire1_x + 9.0 m1_sound_van_y = m1_campfire1_y + 4.0 m1_sound_van_z = m1_campfire1_z m1_sound_van_heading = 340.0 // outside garage door m1_destination_x = 1643.42 m1_destination_y = -1524.69 m1_destination_z = 12.61 m1_DJ_start_x = m1_sound_van_x - 1.08 m1_DJ_start_y = m1_sound_van_y - 3.05 m1_next_to_DJ_x = m1_DJ_start_x - 0.54 m1_next_to_DJ_y = m1_DJ_start_y - 1.53 m1_next_to_DJ_z = 3.14 m1_num_of_ambient_peds = 21 // dancers m1_ambient_ped_start_x[0] = m1_campfire1_x + 10.0 m1_ambient_ped_start_y[0] = m1_campfire1_y - 6.0 m1_ambient_ped_start_heading[0] = 300.0 m1_ambient_ped_start_x[1] = m1_ambient_ped_start_x[0] + 3.0 m1_ambient_ped_start_y[1] = m1_ambient_ped_start_y[0] m1_ambient_ped_start_heading[1] = m1_ambient_ped_start_heading[0] + 120.0 m1_ambient_ped_start_x[2] = m1_ambient_ped_start_x[0] + 3.0 m1_ambient_ped_start_y[2] = m1_ambient_ped_start_y[0] + 3.0 m1_ambient_ped_start_heading[2] = m1_ambient_ped_start_heading[0] + 240.0 // idle chat m1_ambient_ped_start_x[3] = m1_beach_party_x + 17.5 m1_ambient_ped_start_y[3] = m1_beach_party_y + 3.0 m1_ambient_ped_start_heading[3] = 270.0 m1_ambient_ped_start_x[4] = m1_ambient_ped_start_x[3] + 1.0 m1_ambient_ped_start_y[4] = m1_ambient_ped_start_y[3] m1_ambient_ped_start_heading[4] = m1_ambient_ped_start_heading[3] - 180.0 // sitting down m1_ambient_ped_start_x[5] = m1_campfire1_x - 2.0 m1_ambient_ped_start_y[5] = m1_campfire1_y - 8.0 m1_ambient_ped_start_heading[5] = 315.0 m1_ambient_ped_start_x[6] = m1_ambient_ped_start_x[5] + 2.5 m1_ambient_ped_start_y[6] = m1_ambient_ped_start_y[5] m1_ambient_ped_start_heading[6] = m1_ambient_ped_start_heading[5] + 90.0 m1_ambient_ped_start_x[7] = m1_ambient_ped_start_x[5] + 2.5 m1_ambient_ped_start_y[7] = m1_ambient_ped_start_y[5] + 2.5 m1_ambient_ped_start_heading[7] = m1_ambient_ped_start_heading[5] + 180.0 m1_ambient_ped_start_x[8] = m1_ambient_ped_start_x[5] m1_ambient_ped_start_y[8] = m1_ambient_ped_start_y[5] + 2.5 m1_ambient_ped_start_heading[8] = m1_ambient_ped_start_heading[5] + 270.0 m1_ambient_ped_start_x[9] = m1_beach_party_x + 12.0 m1_ambient_ped_start_y[9] = m1_beach_party_y - 9.5 m1_ambient_ped_start_heading[9] = 0.0 m1_ambient_ped_start_x[10] = m1_ambient_ped_start_x[9] - 0.5 m1_ambient_ped_start_y[10] = m1_ambient_ped_start_y[9] + 1.5 m1_ambient_ped_start_heading[10] = m1_ambient_ped_start_heading[9] + 180.0 // moonbathers m1_ambient_ped_start_x[11] = m1_campfire2_x m1_ambient_ped_start_y[11] = m1_campfire2_y + 5.0 m1_ambient_ped_start_heading[11] = 200.0 m1_ambient_ped_start_x[12] = m1_campfire2_x + 3.0 m1_ambient_ped_start_y[12] = m1_campfire2_y + 3.5 m1_ambient_ped_start_heading[12] = 170.0 m1_ambient_ped_start_x[13] = m1_campfire2_x + 4.0 m1_ambient_ped_start_y[13] = m1_campfire2_y m1_ambient_ped_start_heading[13] = 0.0 m1_ambient_ped_start_x[14] = m1_campfire2_x + 5.0 m1_ambient_ped_start_y[14] = m1_campfire2_y + 2.0 m1_ambient_ped_start_heading[14] = 270.0 // more dancers m1_ambient_ped_start_x[15] = m1_campfire1_x + 1.0 m1_ambient_ped_start_y[15] = m1_campfire1_y + 6.0 m1_ambient_ped_start_heading[15] = 270.0 m1_ambient_ped_start_x[16] = m1_ambient_ped_start_x[15] + 1.5 m1_ambient_ped_start_y[16] = m1_ambient_ped_start_y[15] + 1.5 m1_ambient_ped_start_heading[16] = m1_ambient_ped_start_heading[15] - 90.0 m1_ambient_ped_start_x[17] = m1_ambient_ped_start_x[15] + 3.0 m1_ambient_ped_start_y[17] = m1_ambient_ped_start_y[15] m1_ambient_ped_start_heading[17] = m1_ambient_ped_start_heading[15] - 180.0 m1_ambient_ped_start_x[18] = m1_ambient_ped_start_x[15] + 1.5 m1_ambient_ped_start_y[18] = m1_ambient_ped_start_y[15] - 1.5 m1_ambient_ped_start_heading[18] = m1_ambient_ped_start_heading[15] - 270.0 // guys leaning on van m1_ambient_ped_start_x[19] = m1_sound_van_x - 3.0 m1_ambient_ped_start_y[19] = m1_sound_van_y - 1.0 m1_ambient_ped_start_heading[19] = 0.0 m1_ambient_ped_start_x[20] = m1_ambient_ped_start_x[19] m1_ambient_ped_start_y[20] = m1_ambient_ped_start_y[19] + 1.0 m1_ambient_ped_start_heading[20] = m1_ambient_ped_start_heading[19] + 180.0 m1_party_radius = 20.0 m1_four_times_party_radius = m1_party_radius * 4.0 m1_num_of_perimeter_cars = 7 //m1_perimeter_quad_x[0] = m1_beach_party_x + 2.5 //m1_perimeter_quad_y[0] = m1_beach_party_y - 11.0 //m1_perimeter_quad_x[1] = m1_beach_party_x + 5.5 //m1_perimeter_quad_y[1] = m1_beach_party_y - 12.0 //m1_perimeter_quad_x[2] = m1_beach_party_x + 3.0 //m1_perimeter_quad_y[2] = m1_beach_party_y - 15.0 GOSUB m1_calculate_new_positions m1_audio_is_playing = 0 m1_audio_index = 0 m1_started_talking = 0 m1_fake_creates = 0 m1_beach_party_created = 0 m1_first_scripted_cutscene_played = 0 m1_talking_to_DJ = 0 m1_dancing_for_DJ = 0 m1_playing_dancing_failed_audio = 0 m1_completed_dancing = 0 m1_talking_to_DJ_after_dancing = 0 m1_DJ_gone_to_van = 0 m1_DJ_unlocked_van = 0 m1_sound_van_captured = 0 m1_DJ_left_van = 0 m1_player_entered_sound_van = 0 m1_player_in_sound_van = 0 m1_DJ_started_shouting = 0 m1_DJ_shouted = 0 m1_cars_chasing_player = 0 m1_all_chars_and_cars_not_chasing_deleted = 0 m1_party_disrupted = 0 m1_everyone_stopped_from_chasing_player = 0 m1_DJ_attacking = 0 m1_index = 0 WHILE m1_index < m1_num_of_ambient_peds m1_ambient_ped_attacking[m1_index] = 0 m1_ped_chasing[m1_index] = 0 IF m1_index < m1_num_of_perimeter_cars m1_car_chasing[m1_index] = 0 m1_driver_getting_in_to_car[m1_index] = 0 ENDIF m1_index++ ENDWHILE // ****************************************START OF CUTSCENE******************************** SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_AREA 809.5818 -1630.5734 12.5469 100.0 FALSE LOAD_SCENE 809.5818 -1630.5734 12.5469 MAKE_PLAYER_GANG_DISAPPEAR LOAD_CUTSCENE STRAP1A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF MAKE_PLAYER_GANG_REAPPEAR // ****************************************END OF CUTSCENE********************************** REQUEST_MODEL VOODOO REQUEST_MODEL ESPERANT REQUEST_MODEL OCEANIC //REQUEST_MODEL QUAD REQUEST_MODEL PONY REQUEST_MODEL MP5LNG REQUEST_MODEL BFYST REQUEST_MODEL WFYST REQUEST_MODEL BMYST REQUEST_MODEL WMYRO REQUEST_MODEL WFYCLOT REQUEST_MODEL WMYST REQUEST_MODEL WMYCLOT REQUEST_MODEL BMYDJ REQUEST_MODEL WFYRI REQUEST_MODEL OFYRI REQUEST_VEHICLE_MOD wheel_or1 STREAM_SCRIPT Dance.sc LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED VOODOO OR NOT HAS_MODEL_LOADED ESPERANT OR NOT HAS_MODEL_LOADED OCEANIC OR NOT HAS_MODEL_LOADED PONY OR NOT HAS_MODEL_LOADED MP5LNG //OR NOT HAS_MODEL_LOADED QUAD WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED BFYST WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED WFYST OR NOT HAS_MODEL_LOADED BMYST OR NOT HAS_MODEL_LOADED WMYRO OR NOT HAS_MODEL_LOADED WFYCLOT OR NOT HAS_MODEL_LOADED WMYST OR NOT HAS_MODEL_LOADED WMYCLOT WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED BMYDJ OR NOT HAS_MODEL_LOADED WFYRI OR NOT HAS_MODEL_LOADED OFYRI WAIT 0 ENDWHILE WHILE NOT HAS_VEHICLE_MOD_LOADED wheel_or1 OR NOT HAS_STREAMED_SCRIPT_LOADED Dance.sc WAIT 0 ENDWHILE CHANGE_GARAGE_TYPE mul_lan GARAGE_FOR_SCRIPT_TO_OPEN_AND_CLOSE // switch off ped nodes around beach party SWITCH_PED_ROADS_OFF 502.15 -1913.39 -5.0 558.86 -1838.87 10.0 LOAD_SCENE 809.5818 -1630.5734 12.5469 FORCE_WEATHER_NOW WEATHER_SUNNY_LA SET_CHAR_COORDINATES scplayer 809.5818 -1630.5734 12.5469 SET_CHAR_HEADING scplayer 176.0 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT // fades the screen in SET_FADING_COLOUR 0 0 0 WAIT 500 DO_FADE 1500 FADE_IN //WAIT 1500 SET_PLAYER_CONTROL player1 ON ADD_BLIP_FOR_COORD m1_next_to_DJ_x m1_next_to_DJ_y m1_next_to_DJ_z m1_DJ_blip PRINT_NOW ( MUS1_5 ) 10000 0 // CREATE statements to keep the compiler happy IF m1_fake_creates = 1 CREATE_CAR PONY 0.0 0.0 -100.0 m1_sound_van ADD_BLIP_FOR_CAR m1_sound_van m1_sound_van_blip CREATE_CHAR PEDTYPE_MISSION1 BFYST 0.0 0.0 -100.0 m1_DJ OPEN_SEQUENCE_TASK m1_DJ_play_seq TASK_STAND_STILL -1 -2 CLOSE_SEQUENCE_TASK m1_DJ_play_seq m1_index = 0 WHILE m1_index < m1_num_of_ambient_peds CREATE_CHAR PEDTYPE_MISSION1 BFYST 0.0 0.0 -100.0 m1_ambient_peds[m1_index] m1_index++ ENDWHILE m1_index = 0 WHILE m1_index < m1_num_of_perimeter_cars CREATE_CAR VOODOO 0.0 0.0 -100.0 m1_perimeter_cars[m1_index] m1_index++ ENDWHILE // m1_index = 0 // WHILE m1_index < 3 // CREATE_CAR QUAD 0.0 0.0 -100.0 m1_perimeter_quads[m1_index] // m1_index++ // ENDWHILE ENDIF // Mission loop music1_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_music1_passed ENDIF FORCE_WEATHER_NOW WEATHER_SUNNY_LA IF NOT m1_beach_party_created = 1 IF LOCATE_CHAR_ANY_MEANS_2D scplayer m1_beach_party_x m1_beach_party_y 200.0 200.0 FALSE CLEAR_AREA m1_beach_party_x m1_beach_party_y m1_beach_party_z 100.0 FALSE GOSUB m1_create_beach_party LVAR_FLOAT m1_campfirelog_x m1_campfirelog_y m1_campfirelog_x = m1_campfire1_x + 0.15 m1_campfirelog_y = m1_campfire1_y + 0.15 CREATE_OBJECT_NO_OFFSET DYN_woodpile2 m1_campfirelog_x m1_campfirelog_y 2.6 m1_campfire1wood m1_campfirelog_x = m1_campfire2_x + 0.15 m1_campfirelog_y = m1_campfire2_y + 0.15 CREATE_OBJECT_NO_OFFSET DYN_woodpile2 m1_campfirelog_x m1_campfirelog_y 2.31 m1_campfire2wood SET_OBJECT_SCALE m1_campfire1wood 0.5 SET_OBJECT_SCALE m1_campfire2wood 0.5 SET_OBJECT_COLLISION_DAMAGE_EFFECT m1_campfire1wood FALSE SET_OBJECT_COLLISION_DAMAGE_EFFECT m1_campfire2wood FALSE SWITCH_AUDIO_ZONE BEACH TRUE WAIT 1500 GOSUB m1_animate_ambient_peds IF NOT IS_CHAR_DEAD m1_DJ FREEZE_CHAR_POSITION m1_DJ TRUE ENDIF IF NOT IS_CAR_DEAD m1_sound_van FREEZE_CAR_POSITION m1_sound_van TRUE ENDIF IF DOES_OBJECT_EXIST m1_campfire1wood FREEZE_OBJECT_POSITION m1_campfire1wood TRUE ENDIF IF DOES_OBJECT_EXIST m1_campfire2wood FREEZE_OBJECT_POSITION m1_campfire2wood TRUE ENDIF // START_SCRIPT_FIRE m1_campfire1_x m1_campfire1_y m1_campfire1_z 0 1 m1_campfire1 // START_SCRIPT_FIRE m1_campfire2_x m1_campfire2_y m1_campfire2_z 0 1 m1_campfire2 CREATE_FX_SYSTEM fire m1_campfire1_x m1_campfire1_y m1_campfire1_z TRUE m1_campfire1 CREATE_FX_SYSTEM fire m1_campfire2_x m1_campfire2_y m1_campfire2_z TRUE m1_campfire2 PLAY_FX_SYSTEM m1_campfire1 PLAY_FX_SYSTEM m1_campfire2 m1_script_fires_on = 1 m1_beach_party_created = 1 ENDIF ENDIF IF m1_beach_party_created = 1 // campfires on at night and put out in the daytime GET_TIME_OF_DAY m1_hours m1_minutes IF m1_hours >= 6 AND m1_hours < 22 IF m1_script_fires_on = 1 // REMOVE_ALL_SCRIPT_FIRES STOP_FX_SYSTEM m1_campfire1 STOP_FX_SYSTEM m1_campfire2 m1_script_fires_on = 0 ENDIF ELSE IF m1_script_fires_on = 0 // START_SCRIPT_FIRE m1_campfire1_x m1_campfire1_y m1_campfire1_z 0 1 m1_campfire1 // START_SCRIPT_FIRE m1_campfire2_x m1_campfire2_y m1_campfire2_z 0 1 m1_campfire2 PLAY_FX_SYSTEM m1_campfire1 PLAY_FX_SYSTEM m1_campfire2 m1_script_fires_on = 1 ENDIF ENDIF IF NOT m1_first_scripted_cutscene_played = 1 AND LOCATE_CHAR_ANY_MEANS_2D scplayer m1_beach_party_x m1_beach_party_y 50.0 50.0 FALSE GOSUB m1_play_first_scripted_cutscene m1_first_scripted_cutscene_played = 1 ENDIF IF m1_sound_van_captured = 0 IF NOT m1_talking_to_DJ = 1 AND NOT m1_dancing_for_DJ = 1 AND NOT m1_completed_dancing = 1 IF NOT IS_CHAR_DEAD m1_DJ AND LOCATE_CHAR_ON_FOOT_3D scplayer m1_next_to_DJ_x m1_next_to_DJ_y m1_next_to_DJ_z 1.2 1.2 2.0 TRUE REMOVE_BLIP m1_DJ_blip //TASK_TURN_CHAR_TO_FACE_CHAR m1_DJ scplayer CLEAR_CHAR_TASKS m1_DJ SET_CHAR_HEADING m1_DJ 110.0 GOSUB m1_init_first_conversation PRINT_HELP ( TALK_1 ) m1_talking_to_DJ = 1 m1_DJ_going_back_to_decks = 0 SET_PLAYER_CONTROL player1 OFF SET_CHAR_COORDINATES scplayer m1_next_to_DJ_x m1_next_to_DJ_y 2.3 SET_CHAR_HEADING scplayer 290.0 SET_CAMERA_POSITION_UNFIXED 0.031 -2.152 //SET_CAMERA_POSITION_UNFIXED 1.778 -123.36 WAIT 1000 SET_PLAYER_CONTROL player1 ON ENDIF ENDIF IF m1_talking_to_DJ = 1 AND NOT m1_dancing_for_DJ = 1 IF NOT IS_CHAR_DEAD m1_DJ IF IS_CONVERSATION_AT_NODE m1_DJ $m1_dstar_node SET_PLAYER_CONTROL player1 OFF IF NOT HAS_STREAMED_SCRIPT_LOADED Dance.sc STREAM_SCRIPT Dance.sc ENDIF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS OR NOT HAS_STREAMED_SCRIPT_LOADED Dance.sc WAIT 0 ENDWHILE CLEAR_HELP IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 533.81 -1891.64 -100.0 ELSE SET_CHAR_COORDINATES scplayer 533.81 -1891.64 -100.0 ENDIF //SET_CHAR_HEADING scplayer m1_sound_van_heading SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED CLEAR_AREA 533.81 -1891.64 2.27 10.0 FALSE // clear dancing area of mission quads and cars // m1_index = 0 // WHILE m1_index < 3 // IF NOT IS_CAR_DEAD m1_perimeter_quads[m1_index] // IF LOCATE_CAR_3D m1_perimeter_quads[m1_index] 533.81 -1891.64 2.27 10.0 10.0 10.0 FALSE // DELETE_CAR m1_perimeter_quads[m1_index] // ENDIF // ELSE // DELETE_CAR m1_perimeter_quads[m1_index] // ENDIF // m1_index++ // ENDWHILE m1_index = 0 WHILE m1_index < m1_num_of_perimeter_cars IF NOT IS_CAR_DEAD m1_perimeter_cars[m1_index] IF LOCATE_CAR_3D m1_perimeter_cars[m1_index] 533.81 -1891.64 2.27 10.0 10.0 10.0 FALSE DELETE_CAR m1_perimeter_cars[m1_index] ENDIF ELSE DELETE_CAR m1_perimeter_cars[m1_index] ENDIF m1_index++ ENDWHILE IF NOT IS_CHAR_DEAD m1_DJ CLEAR_CONVERSATION_FOR_CHAR m1_DJ CLEAR_CHAR_TASKS_IMMEDIATELY m1_DJ SET_CHAR_HEADING m1_DJ 110.0 OPEN_SEQUENCE_TASK m1_DJ_dance_seq TASK_PLAY_ANIM -1 DAN_Loop_A DANCING 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m1_DJ_dance_seq 1 CLOSE_SEQUENCE_TASK m1_DJ_dance_seq PERFORM_SEQUENCE_TASK m1_DJ m1_DJ_dance_seq CLEAR_SEQUENCE_TASK m1_DJ_dance_seq ENDIF SWITCH_AUDIO_ZONE BEACH FALSE // stop peds chatting during dancing IF NOT IS_CHAR_DEAD m1_ambient_peds[3] CLEAR_CHAR_TASKS_IMMEDIATELY m1_ambient_peds[3] ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[4] CLEAR_CHAR_TASKS_IMMEDIATELY m1_ambient_peds[4] ENDIF CLEAR_PRINTS PRINT_NOW ( MUS1_4 ) 10000 0 CHECKPOINT_SAVE 99 m1_index = 0 WHILE m1_index < 5 // IF m1_index = 1 // OR m1_index = 2 fDanceCameraX[m1_index] = 531.18 fDanceCameraY[m1_index] = -1893.8 fDanceCameraZ[m1_index] = 3.45 fDanceTargetX[m1_index] = 533.94 fDanceTargetY[m1_index] = -1891.82 fDanceTargetZ[m1_index] = 3.44 // ELSE // fDanceCameraX[m1_index] = // fDanceCameraY[m1_index] = // fDanceCameraZ[m1_index] = // fDanceTargetX[m1_index] = // fDanceTargetY[m1_index] = // fDanceTargetZ[m1_index] = // ENDIF m1_index++ ENDWHILE SET_BIT iDanceReport DANCE_MINIGAME_RUNNING START_NEW_STREAMED_SCRIPT Dance.sc 533.81 -1891.64 -100.0 m1_sound_van_heading DANCE_TRACK_GFUNK DANCE_MISSION_NO_PARTNER // SET_CAMERA_BEHIND_PLAYER // RESTORE_CAMERA_JUMPCUT // // DO_FADE 1000 FADE_IN // WHILE GET_FADING_STATUS // WAIT 0 // ENDWHILE m1_dancing_for_DJ = 1 ELSE IF NOT m1_DJ_going_back_to_decks = 1 IF IS_CONVERSATION_AT_NODE m1_DJ $m1_bexit_node OR IS_CONVERSATION_AT_NODE m1_DJ $m1_gexit_node m1_DJ_going_back_to_decks = 1 ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer m1_DJ 5.0 5.0 FALSE TIMERB = 0 ELSE IF TIMERB > 3000 // if player goes 5m away from the DJ for more than 3s, // conversation is reset CLEAR_CONVERSATION_FOR_CHAR m1_DJ CLEAR_HELP SET_CHAR_COORDINATES m1_DJ m1_DJ_start_x m1_DJ_start_y -100.0 SET_CHAR_HEADING m1_DJ m1_sound_van_heading PERFORM_SEQUENCE_TASK m1_DJ m1_DJ_play_seq m1_talking_to_DJ = 0 m1_DJ_going_back_to_decks = 0 ADD_BLIP_FOR_COORD m1_next_to_DJ_x m1_next_to_DJ_y m1_next_to_DJ_z m1_DJ_blip ENDIF ENDIF ENDIF ELSE // if conversation has finished and player leaves DJ locate, // conversation is reset IF NOT LOCATE_CHAR_ON_FOOT_3D scplayer m1_next_to_DJ_x m1_next_to_DJ_y m1_next_to_DJ_z 1.2 1.2 2.0 FALSE m1_DJ_going_back_to_decks = 0 CLEAR_CONVERSATION_FOR_CHAR m1_DJ CLEAR_HELP SET_CHAR_COORDINATES m1_DJ m1_DJ_start_x m1_DJ_start_y -100.0 SET_CHAR_HEADING m1_DJ m1_sound_van_heading PERFORM_SEQUENCE_TASK m1_DJ m1_DJ_play_seq m1_talking_to_DJ = 0 ADD_BLIP_FOR_COORD m1_next_to_DJ_x m1_next_to_DJ_y m1_next_to_DJ_z m1_DJ_blip ENDIF ENDIF ENDIF ENDIF ENDIF IF m1_dancing_for_DJ = 1 AND NOT m1_completed_dancing = 1 IF NOT IS_BIT_SET iDanceReport DANCE_MINIGAME_RUNNING AND NOT m1_playing_dancing_failed_audio = 1 SET_PLAYER_CONTROL player1 ON IF NOT IS_CHAR_DEAD m1_DJ CLEAR_CHAR_TASKS_IMMEDIATELY m1_DJ ENDIF CLEAR_PRINTS IF iDanceScore >= 2500 SWITCH_AUDIO_ZONE BEACH TRUE GOSUB m1_init_second_conversation PRINT_HELP ( TALK_1 ) m1_completed_dancing = 1 m1_talking_to_DJ_after_dancing = 1 m1_DJ_going_back_to_decks = 0 ELSE m1_current_audio_needed = M1_DANCE_FAIL_AUDIO GOSUB m1_setup_audio_data TIMERA = 0 m1_playing_dancing_failed_audio = 1 ENDIF ENDIF IF m1_playing_dancing_failed_audio = 1 IF m1_audio_index < m1_total_audio_to_play AND m1_current_audio_needed = M1_DANCE_FAIL_AUDIO IF NOT IS_CHAR_DEAD m1_DJ GOSUB m1_load_and_play_audio ENDIF ELSE IF TIMERA > 1000 PRINT_NOW ( MUS1_8 ) 5000 0 GOTO mission_music1_failed ENDIF ENDIF ENDIF ENDIF IF m1_completed_dancing = 1 AND NOT m1_DJ_gone_to_van = 1 IF NOT IS_CHAR_DEAD m1_DJ IF NOT m1_talking_to_DJ_after_dancing = 1 IF LOCATE_CHAR_ON_FOOT_3D scplayer m1_next_to_DJ_x m1_next_to_DJ_y m1_next_to_DJ_z 1.2 1.2 2.0 TRUE REMOVE_BLIP m1_DJ_blip CLEAR_CHAR_TASKS m1_DJ SET_CHAR_HEADING m1_DJ 110.0 GOSUB m1_init_second_conversation PRINT_HELP ( TALK_1 ) m1_talking_to_DJ_after_dancing = 1 m1_DJ_going_back_to_decks = 0 ENDIF ELSE IF IS_CONVERSATION_AT_NODE m1_DJ VYES1 OR IS_CONVERSATION_AT_NODE m1_DJ VYES2 IF NOT IS_CAR_DEAD m1_sound_van CLEAR_CONVERSATION_FOR_CHAR m1_DJ CLEAR_HELP SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK FREEZE_CHAR_POSITION m1_DJ FALSE TASK_ENTER_CAR_AS_PASSENGER m1_DJ m1_sound_van -1 0 ADD_BLIP_FOR_CAR m1_sound_van m1_sound_van_blip SET_BLIP_AS_FRIENDLY m1_sound_van_blip TRUE m1_talking_to_DJ_after_dancing = 0 m1_DJ_gone_to_van = 1 PRINT ( MUS1_7 ) 10000 0 ENDIF ELSE IF NOT m1_DJ_going_back_to_decks = 1 IF IS_CONVERSATION_AT_NODE m1_DJ VLATE m1_DJ_going_back_to_decks = 1 ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer m1_DJ 5.0 5.0 FALSE TIMERB = 0 ELSE IF TIMERB > 3000 // if player goes 5m away from the DJ for more than 3s, // conversation is reset CLEAR_CONVERSATION_FOR_CHAR m1_DJ CLEAR_HELP SET_CHAR_COORDINATES m1_DJ m1_DJ_start_x m1_DJ_start_y -100.0 SET_CHAR_HEADING m1_DJ m1_sound_van_heading PERFORM_SEQUENCE_TASK m1_DJ m1_DJ_play_seq m1_talking_to_DJ_after_dancing = 0 m1_DJ_going_back_to_decks = 0 ADD_BLIP_FOR_COORD m1_next_to_DJ_x m1_next_to_DJ_y m1_next_to_DJ_z m1_DJ_blip ENDIF ENDIF ENDIF ELSE // if conversation has finished and player leaves DJ locate, // conversation is reset IF NOT LOCATE_CHAR_ON_FOOT_3D scplayer m1_next_to_DJ_x m1_next_to_DJ_y m1_next_to_DJ_z 1.2 1.2 2.0 FALSE m1_DJ_going_back_to_decks = 0 CLEAR_CONVERSATION_FOR_CHAR m1_DJ CLEAR_HELP SET_CHAR_COORDINATES m1_DJ m1_DJ_start_x m1_DJ_start_y -100.0 SET_CHAR_HEADING m1_DJ m1_sound_van_heading PERFORM_SEQUENCE_TASK m1_DJ m1_DJ_play_seq m1_talking_to_DJ_after_dancing = 0 ADD_BLIP_FOR_COORD m1_next_to_DJ_x m1_next_to_DJ_y m1_next_to_DJ_z m1_DJ_blip ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF m1_DJ_gone_to_van = 1 AND NOT m1_DJ_unlocked_van = 1 AND NOT IS_CHAR_DEAD m1_DJ AND NOT IS_CAR_DEAD m1_sound_van IF IS_CHAR_IN_CAR m1_DJ m1_sound_van LOCK_CAR_DOORS m1_sound_van CARLOCK_UNLOCKED CONTROL_CAR_DOOR m1_sound_van REAR_LEFT_DOOR DT_DOOR_SWINGING_FREE -1.0 CONTROL_CAR_DOOR m1_sound_van REAR_RIGHT_DOOR DT_DOOR_SWINGING_FREE -1.0 SET_CAR_CAN_BE_VISIBLY_DAMAGED m1_sound_van TRUE m1_DJ_unlocked_van = 1 ENDIF ENDIF // if player attacks the DJ, fires a shot near the party or any member of the party is killed, // guards attack and all other members flee IF NOT m1_party_disrupted = 1 IF LOCATE_CHAR_ANY_MEANS_2D scplayer m1_beach_party_x m1_beach_party_y m1_party_radius m1_party_radius FALSE AND IS_CHAR_SHOOTING scplayer m1_party_disrupted = 1 ELSE IF IS_CHAR_DEAD m1_DJ m1_party_disrupted = 1 ELSE IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR m1_DJ scplayer OR IS_CHAR_RESPONDING_TO_EVENT m1_DJ EVENT_GUN_AIMED_AT m1_party_disrupted = 1 ENDIF ENDIF m1_index = 0 WHILE m1_index < m1_num_of_ambient_peds AND NOT m1_party_disrupted = 1 IF IS_CHAR_DEAD m1_ambient_peds[m1_index] m1_party_disrupted = 1 ELSE IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR m1_ambient_peds[m1_index] scplayer m1_party_disrupted = 1 ENDIF ENDIF m1_index++ ENDWHILE ENDIF IF m1_party_disrupted = 1 CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS IF NOT m1_DJ_unlocked_van = 1 GOSUB m1_set_party_guards_attacking GOSUB m1_set_ped_reactions_to_fight ELSE IF NOT m1_cars_chasing_player = 1 GOSUB m1_set_cars_chasing_player m1_cars_chasing_player = 1 ENDIF IF NOT IS_CHAR_DEAD m1_DJ AND NOT m1_DJ_attacking = 1 SET_CURRENT_CHAR_WEAPON m1_DJ WEAPONTYPE_MP5 TASK_KILL_CHAR_ON_FOOT m1_DJ scplayer m1_DJ_attacking = 1 SET_CHAR_KEEP_TASK m1_DJ TRUE ENDIF ENDIF SWITCH_AUDIO_ZONE BEACH FALSE ELSE // only keep peds chatting when player isn't dancing IF NOT m1_dancing_for_DJ = 1 OR m1_completed_dancing = 1 GOSUB m1_keep_chatting_peds_talking ENDIF ENDIF ENDIF IF m1_DJ_unlocked_van = 1 AND m1_party_disrupted = 1 IF m1_cars_chasing_player = 1 AND NOT m1_everyone_stopped_from_chasing_player = 1 GOSUB m1_keep_drivers_in_cars ENDIF ENDIF // player entered sound van IF NOT m1_player_entered_sound_van = 1 AND NOT IS_CAR_DEAD m1_sound_van IF IS_CHAR_IN_CAR scplayer m1_sound_van REMOVE_BLIP m1_sound_van_blip m1_player_entered_sound_van = 1 m1_player_in_sound_van = 1 FREEZE_CAR_POSITION m1_sound_van FALSE SET_CAMERA_BEHIND_PLAYER PRINT_NOW ( MUS1_19 ) 7000 0 ADD_BLIP_FOR_COORD m1_destination_x m1_destination_y m1_destination_z m1_destination_blip ENDIF ENDIF IF m1_player_entered_sound_van = 1 GOSUB m1_current_blip_check // player captured sound van IF NOT IS_CAR_DEAD m1_sound_van IF NOT LOCATE_CAR_2D m1_sound_van m1_beach_party_x m1_beach_party_y m1_party_radius m1_party_radius FALSE SET_CAR_ONLY_DAMAGED_BY_PLAYER m1_sound_van FALSE m1_sound_van_captured = 1 SWITCH_AUDIO_ZONE BEACH FALSE ENDIF ENDIF ENDIF ENDIF IF m1_sound_van_captured = 1 IF NOT m1_DJ_left_van = 1 AND NOT IS_CHAR_DEAD m1_DJ AND NOT IS_CAR_DEAD m1_sound_van OPEN_SEQUENCE_TASK m1_DJ_leave_car_seq TASK_LEAVE_CAR_IMMEDIATELY -1 m1_sound_van TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m1_DJ_leave_car_seq PERFORM_SEQUENCE_TASK m1_DJ m1_DJ_leave_car_seq CLEAR_SEQUENCE_TASK m1_DJ_leave_car_seq m1_DJ_left_van = 1 ENDIF IF m1_DJ_left_van = 1 AND NOT IS_CHAR_DEAD m1_DJ AND NOT m1_DJ_started_shouting = 1 GET_SCRIPT_TASK_STATUS m1_DJ PERFORM_SEQUENCE_TASK m1_task_status IF NOT m1_task_status = FINISHED_TASK GET_SEQUENCE_PROGRESS m1_DJ m1_seq_progress IF m1_seq_progress >= 0 m1_current_audio_needed = M1_STEAL_AUDIO GOSUB m1_setup_audio_data SET_CURRENT_CHAR_WEAPON m1_DJ WEAPONTYPE_MP5 m1_DJ_started_shouting = 1 ENDIF ENDIF ENDIF IF m1_DJ_started_shouting = 1 AND NOT m1_DJ_shouted = 1 IF m1_audio_index < m1_total_audio_to_play AND m1_current_audio_needed = M1_STEAL_AUDIO IF NOT IS_CHAR_DEAD m1_DJ GOSUB m1_load_and_play_audio ELSE CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS m1_DJ_shouted = 1 ENDIF ELSE m1_DJ_shouted = 1 ENDIF ENDIF // send peds to chase player IF NOT m1_cars_chasing_player = 1 GOSUB m1_set_cars_chasing_player m1_cars_chasing_player = 1 ENDIF IF NOT m1_everyone_stopped_from_chasing_player = 1 GOSUB m1_keep_drivers_in_cars ENDIF // once cars chasing and player is outside 4*party_radius, // remove all unused ambient peds (improved performance) IF m1_cars_chasing_player = 1 AND NOT m1_all_chars_and_cars_not_chasing_deleted = 1 IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer m1_beach_party_x m1_beach_party_y m1_four_times_party_radius m1_four_times_party_radius FALSE GOSUB m1_delete_all_chars_and_cars_not_chasing m1_all_chars_and_cars_not_chasing_deleted = 1 ENDIF ENDIF // stop everyone from chasing player if near destination IF m1_cars_chasing_player = 1 AND NOT IS_CAR_DEAD m1_sound_van AND NOT m1_everyone_stopped_from_chasing_player = 1 IF IS_CHAR_IN_CAR scplayer m1_sound_van AND LOCATE_CHAR_IN_CAR_2D scplayer m1_destination_x m1_destination_y 50.0 50.0 FALSE GOSUB m1_stop_everyone_from_chasing_player m1_everyone_stopped_from_chasing_player = 1 ENDIF ENDIF GOSUB m1_current_blip_check ENDIF // mission pass/fail conditions IF NOT m1_DJ_unlocked_van = 1 IF IS_CHAR_DEAD m1_DJ CLEAR_PRINTS PRINT_NOW ( MUS1_18 ) 5000 0 GOTO mission_music1_failed ELSE IF m1_party_disrupted = 1 CLEAR_PRINTS PRINT_NOW ( MUS1_21 ) 5000 0 GOTO mission_music1_failed ENDIF ENDIF ENDIF IF IS_CAR_DEAD m1_sound_van CLEAR_PRINTS PRINT_NOW ( MUS1_20 ) 5000 0 GOTO mission_music1_failed ELSE IF m1_player_entered_sound_van = 1 IF IS_CHAR_IN_CAR scplayer m1_sound_van IF LOCATE_CAR_3D m1_sound_van m1_destination_x m1_destination_y m1_destination_z 4.0 4.0 2.0 TRUE SET_PLAYER_CONTROL player1 OFF GOSUB m1_play_mission_passed_cutscene GOTO mission_music1_passed ENDIF ENDIF ENDIF ENDIF ENDIF GOTO music1_loop // ********************************** Mission GOSUBS ************************************ // ************************************************************ // Create beach party with circle of parked cars, // four quads, sound van, beach party peds and DJ // ************************************************************ m1_create_beach_party: // create ring of parked cars around the beach party m1_index = 0 m1_perimeter_car_angle = -30.0 WHILE m1_index < m1_num_of_perimeter_cars COS m1_perimeter_car_angle m1_perimeter_car_x SIN m1_perimeter_car_angle m1_perimeter_car_y m1_perimeter_car_x *= m1_party_radius m1_perimeter_car_y *= m1_party_radius m1_perimeter_car_x += m1_beach_party_x m1_perimeter_car_y += m1_beach_party_y IF m1_index = 0 OR m1_index = 3 OR m1_index = 6 CREATE_CAR VOODOO m1_perimeter_car_x m1_perimeter_car_y -100.0 m1_perimeter_cars[m1_index] ELSE IF m1_index = 1 OR m1_index = 7 CREATE_CAR OCEANIC m1_perimeter_car_x m1_perimeter_car_y -100.0 m1_perimeter_cars[m1_index] ELSE CREATE_CAR ESPERANT m1_perimeter_car_x m1_perimeter_car_y -100.0 m1_perimeter_cars[m1_index] ENDIF ENDIF m1_perimeter_car_heading = 90.0 + m1_perimeter_car_angle SET_CAR_HEADING m1_perimeter_cars[m1_index] m1_perimeter_car_heading //FORCE_CAR_LIGHTS m1_perimeter_cars[m1_index] FORCE_CAR_LIGHTS_ON //SET_CAR_ENGINE_ON m1_perimeter_cars[m1_index] TRUE LOCK_CAR_DOORS m1_perimeter_cars[m1_index] CARLOCK_LOCKED m1_perimeter_car_angle += 37.0 m1_index++ ENDWHILE // // create quads // m1_index = 0 // WHILE m1_index < 3 // CREATE_CAR QUAD m1_perimeter_quad_x[m1_index] m1_perimeter_quad_y[m1_index] -100.0 m1_perimeter_quads[m1_index] // SET_CAR_HEADING m1_perimeter_quads[m1_index] m1_perimeter_quad_heading[m1_index] // m1_index++ // ENDWHILE // create sound van SET_CAR_MODEL_COMPONENTS PONY 0 0 CREATE_CAR PONY m1_sound_van_x m1_sound_van_y m1_sound_van_z m1_sound_van LVAR_INT m1_dummy_wheelmod ADD_VEHICLE_MOD m1_sound_van wheel_or1 m1_dummy_wheelmod SET_CAR_HEADING m1_sound_van m1_sound_van_heading CAR_SET_IDLE m1_sound_van SET_CAR_ONLY_DAMAGED_BY_PLAYER m1_sound_van TRUE // don't let enemies damage sound van until player captures it SET_CAR_HEALTH m1_sound_van 5000 CHANGE_CAR_COLOUR m1_sound_van CARCOLOUR_MIDNIGHTBLUE CARCOLOUR_MIDNIGHTBLUE SET_CAN_BURST_CAR_TYRES m1_sound_van FALSE SET_CAR_TRACTION m1_sound_van 2.0 OPEN_CAR_DOOR m1_sound_van REAR_LEFT_DOOR OPEN_CAR_DOOR m1_sound_van REAR_RIGHT_DOOR LOCK_CAR_DOORS m1_sound_van CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_CAN_BE_VISIBLY_DAMAGED m1_sound_van FALSE // wait for sound van to land so that DJ can be created near the van WAIT 1000 // create beach party peds and DJ CREATE_CHAR PEDTYPE_MISSION1 BFYST m1_DJ_start_x m1_DJ_start_y -100.0 m1_DJ SET_CHAR_HEADING m1_DJ m1_sound_van_heading SET_CHAR_ONLY_DAMAGED_BY_PLAYER m1_DJ TRUE GIVE_WEAPON_TO_CHAR m1_DJ WEAPONTYPE_MP5 99999 SET_CURRENT_CHAR_WEAPON m1_DJ WEAPONTYPE_UNARMED m1_DJ_attacking = 0 COPY_CHAR_DECISION_MAKER DM_PED_EMPTY m1_party_decisions ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE m1_party_decisions EVENT_GUN_AIMED_AT TASK_SIMPLE_HANDS_UP 100.0 100.0 100.0 100.0 FALSE TRUE SET_CHAR_DECISION_MAKER m1_DJ m1_party_decisions m1_index = 0 WHILE m1_index < m1_num_of_ambient_peds IF m1_index = 0 OR m1_index = 4 OR m1_index = 7 OR m1_index = 11 CREATE_CHAR PEDTYPE_MISSION1 BMYST m1_ambient_ped_start_x[m1_index] m1_ambient_ped_start_y[m1_index] -100.0 m1_ambient_peds[m1_index] ELSE IF m1_index = 6 OR m1_index = 3 OR m1_index = 2 CREATE_CHAR PEDTYPE_MISSION1 WMYST m1_ambient_ped_start_x[m1_index] m1_ambient_ped_start_y[m1_index] -100.0 m1_ambient_peds[m1_index] ELSE IF m1_index = 9 OR m1_index = 14 OR m1_index = 17 OR m1_index = 19 CREATE_CHAR PEDTYPE_MISSION1 WFYCLOT m1_ambient_ped_start_x[m1_index] m1_ambient_ped_start_y[m1_index] -100.0 m1_ambient_peds[m1_index] ELSE IF m1_index = 12 CREATE_CHAR PEDTYPE_MISSION1 WMYRO m1_ambient_ped_start_x[m1_index] m1_ambient_ped_start_y[m1_index] -100.0 m1_ambient_peds[m1_index] ELSE IF m1_index = 16 OR m1_index = 10 CREATE_CHAR PEDTYPE_MISSION1 WFYST m1_ambient_ped_start_x[m1_index] m1_ambient_ped_start_y[m1_index] -100.0 m1_ambient_peds[m1_index] ELSE IF m1_index = 5 OR m1_index = 15 CREATE_CHAR PEDTYPE_MISSION1 WMYCLOT m1_ambient_ped_start_x[m1_index] m1_ambient_ped_start_y[m1_index] -100.0 m1_ambient_peds[m1_index] ELSE IF m1_index = 8 OR m1_index = 13 CREATE_CHAR PEDTYPE_MISSION1 BMYDJ m1_ambient_ped_start_x[m1_index] m1_ambient_ped_start_y[m1_index] -100.0 m1_ambient_peds[m1_index] ELSE IF m1_index = 1 OR m1_index = 20 CREATE_CHAR PEDTYPE_MISSION1 OFYRI m1_ambient_ped_start_x[m1_index] m1_ambient_ped_start_y[m1_index] -100.0 m1_ambient_peds[m1_index] ELSE CREATE_CHAR PEDTYPE_MISSION1 WFYRI m1_ambient_ped_start_x[m1_index] m1_ambient_ped_start_y[m1_index] -100.0 m1_ambient_peds[m1_index] ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF SET_CHAR_HEADING m1_ambient_peds[m1_index] m1_ambient_ped_start_heading[m1_index] GIVE_WEAPON_TO_CHAR m1_ambient_peds[m1_index] WEAPONTYPE_MP5 99999 SET_CURRENT_CHAR_WEAPON m1_ambient_peds[m1_index] WEAPONTYPE_UNARMED SET_CHAR_DECISION_MAKER m1_ambient_peds[m1_index] m1_party_decisions m1_ambient_ped_attacking[m1_index] = 0 m1_index++ ENDWHILE // MARK_MODEL_AS_NO_LONGER_NEEDED QUAD MARK_MODEL_AS_NO_LONGER_NEEDED VOODOO MARK_MODEL_AS_NO_LONGER_NEEDED ESPERANT MARK_MODEL_AS_NO_LONGER_NEEDED OCEANIC MARK_MODEL_AS_NO_LONGER_NEEDED WFYST MARK_MODEL_AS_NO_LONGER_NEEDED BMYST MARK_MODEL_AS_NO_LONGER_NEEDED WMYRO MARK_MODEL_AS_NO_LONGER_NEEDED WFYCLOT MARK_MODEL_AS_NO_LONGER_NEEDED WMYST MARK_MODEL_AS_NO_LONGER_NEEDED WMYCLOT MARK_MODEL_AS_NO_LONGER_NEEDED BMYDJ MARK_MODEL_AS_NO_LONGER_NEEDED WFYRI MARK_MODEL_AS_NO_LONGER_NEEDED OFYRI MARK_VEHICLE_MOD_AS_NO_LONGER_NEEDED wheel_or1 RETURN // ************************************************************ // Animate ambient peds // ************************************************************ m1_animate_ambient_peds: REQUEST_ANIMATION BAR REQUEST_ANIMATION DANCING REQUEST_ANIMATION BEACH REQUEST_ANIMATION SCRATCHING WHILE NOT HAS_ANIMATION_LOADED BAR OR NOT HAS_ANIMATION_LOADED DANCING OR NOT HAS_ANIMATION_LOADED BEACH OR NOT HAS_ANIMATION_LOADED SCRATCHING WAIT 0 ENDWHILE OPEN_SEQUENCE_TASK m1_DJ_play_seq TASK_PLAY_ANIM -1 SCLNG_R SCRATCHING 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m1_DJ_play_seq 1 CLOSE_SEQUENCE_TASK m1_DJ_play_seq IF NOT IS_CHAR_DEAD m1_DJ PERFORM_SEQUENCE_TASK m1_DJ m1_DJ_play_seq ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[0] OPEN_SEQUENCE_TASK m1_ambient_ped_anim_seq TASK_PLAY_ANIM -1 DNCE_M_A DANCING 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m1_ambient_ped_anim_seq 1 CLOSE_SEQUENCE_TASK m1_ambient_ped_anim_seq PERFORM_SEQUENCE_TASK m1_ambient_peds[0] m1_ambient_ped_anim_seq CLEAR_SEQUENCE_TASK m1_ambient_ped_anim_seq ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[1] OPEN_SEQUENCE_TASK m1_ambient_ped_anim_seq TASK_PLAY_ANIM -1 DNCE_M_B DANCING 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m1_ambient_ped_anim_seq 1 CLOSE_SEQUENCE_TASK m1_ambient_ped_anim_seq PERFORM_SEQUENCE_TASK m1_ambient_peds[1] m1_ambient_ped_anim_seq CLEAR_SEQUENCE_TASK m1_ambient_ped_anim_seq ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[2] OPEN_SEQUENCE_TASK m1_ambient_ped_anim_seq TASK_PLAY_ANIM -1 DNCE_M_D DANCING 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m1_ambient_ped_anim_seq 1 CLOSE_SEQUENCE_TASK m1_ambient_ped_anim_seq PERFORM_SEQUENCE_TASK m1_ambient_peds[2] m1_ambient_ped_anim_seq CLEAR_SEQUENCE_TASK m1_ambient_ped_anim_seq ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[3] AND NOT IS_CHAR_DEAD m1_ambient_peds[4] TASK_CHAT_WITH_CHAR m1_ambient_peds[3] m1_ambient_peds[4] TRUE TRUE TASK_CHAT_WITH_CHAR m1_ambient_peds[4] m1_ambient_peds[3] FALSE TRUE ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[5] OPEN_SEQUENCE_TASK m1_ambient_ped_anim_seq TASK_PLAY_ANIM -1 Lay_Bac_Loop BEACH 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m1_ambient_ped_anim_seq 1 CLOSE_SEQUENCE_TASK m1_ambient_ped_anim_seq PERFORM_SEQUENCE_TASK m1_ambient_peds[5] m1_ambient_ped_anim_seq CLEAR_SEQUENCE_TASK m1_ambient_ped_anim_seq ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[6] OPEN_SEQUENCE_TASK m1_ambient_ped_anim_seq TASK_PLAY_ANIM -1 ParkSit_M_loop BEACH 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m1_ambient_ped_anim_seq 1 CLOSE_SEQUENCE_TASK m1_ambient_ped_anim_seq PERFORM_SEQUENCE_TASK m1_ambient_peds[6] m1_ambient_ped_anim_seq CLEAR_SEQUENCE_TASK m1_ambient_ped_anim_seq ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[7] OPEN_SEQUENCE_TASK m1_ambient_ped_anim_seq TASK_PLAY_ANIM -1 Lay_Bac_Loop BEACH 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m1_ambient_ped_anim_seq 1 CLOSE_SEQUENCE_TASK m1_ambient_ped_anim_seq PERFORM_SEQUENCE_TASK m1_ambient_peds[7] m1_ambient_ped_anim_seq CLEAR_SEQUENCE_TASK m1_ambient_ped_anim_seq ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[8] OPEN_SEQUENCE_TASK m1_ambient_ped_anim_seq TASK_PLAY_ANIM -1 ParkSit_M_loop BEACH 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m1_ambient_ped_anim_seq 1 CLOSE_SEQUENCE_TASK m1_ambient_ped_anim_seq PERFORM_SEQUENCE_TASK m1_ambient_peds[8] m1_ambient_ped_anim_seq CLEAR_SEQUENCE_TASK m1_ambient_ped_anim_seq ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[9] OPEN_SEQUENCE_TASK m1_ambient_ped_anim_seq TASK_PLAY_ANIM -1 ParkSit_W_loop BEACH 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m1_ambient_ped_anim_seq 1 CLOSE_SEQUENCE_TASK m1_ambient_ped_anim_seq PERFORM_SEQUENCE_TASK m1_ambient_peds[9] m1_ambient_ped_anim_seq CLEAR_SEQUENCE_TASK m1_ambient_ped_anim_seq ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[10] OPEN_SEQUENCE_TASK m1_ambient_ped_anim_seq TASK_PLAY_ANIM -1 ParkSit_M_loop BEACH 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m1_ambient_ped_anim_seq 1 CLOSE_SEQUENCE_TASK m1_ambient_ped_anim_seq PERFORM_SEQUENCE_TASK m1_ambient_peds[10] m1_ambient_ped_anim_seq CLEAR_SEQUENCE_TASK m1_ambient_ped_anim_seq ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[11] OPEN_SEQUENCE_TASK m1_ambient_ped_anim_seq TASK_PLAY_ANIM -1 ParkSit_M_loop BEACH 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m1_ambient_ped_anim_seq 1 CLOSE_SEQUENCE_TASK m1_ambient_ped_anim_seq PERFORM_SEQUENCE_TASK m1_ambient_peds[11] m1_ambient_ped_anim_seq CLEAR_SEQUENCE_TASK m1_ambient_ped_anim_seq ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[12] OPEN_SEQUENCE_TASK m1_ambient_ped_anim_seq TASK_PLAY_ANIM -1 Lay_Bac_Loop BEACH 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m1_ambient_ped_anim_seq 1 CLOSE_SEQUENCE_TASK m1_ambient_ped_anim_seq PERFORM_SEQUENCE_TASK m1_ambient_peds[12] m1_ambient_ped_anim_seq CLEAR_SEQUENCE_TASK m1_ambient_ped_anim_seq ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[13] OPEN_SEQUENCE_TASK m1_ambient_ped_anim_seq TASK_PLAY_ANIM -1 BATHER BEACH 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m1_ambient_ped_anim_seq 1 CLOSE_SEQUENCE_TASK m1_ambient_ped_anim_seq PERFORM_SEQUENCE_TASK m1_ambient_peds[13] m1_ambient_ped_anim_seq CLEAR_SEQUENCE_TASK m1_ambient_ped_anim_seq ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[14] OPEN_SEQUENCE_TASK m1_ambient_ped_anim_seq TASK_PLAY_ANIM -1 SitnWait_loop_W BEACH 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m1_ambient_ped_anim_seq 1 CLOSE_SEQUENCE_TASK m1_ambient_ped_anim_seq PERFORM_SEQUENCE_TASK m1_ambient_peds[14] m1_ambient_ped_anim_seq CLEAR_SEQUENCE_TASK m1_ambient_ped_anim_seq ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[15] OPEN_SEQUENCE_TASK m1_ambient_ped_anim_seq TASK_PLAY_ANIM -1 DNCE_M_B DANCING 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m1_ambient_ped_anim_seq 1 CLOSE_SEQUENCE_TASK m1_ambient_ped_anim_seq PERFORM_SEQUENCE_TASK m1_ambient_peds[15] m1_ambient_ped_anim_seq CLEAR_SEQUENCE_TASK m1_ambient_ped_anim_seq ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[16] OPEN_SEQUENCE_TASK m1_ambient_ped_anim_seq TASK_PLAY_ANIM -1 DNCE_M_C DANCING 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m1_ambient_ped_anim_seq 1 CLOSE_SEQUENCE_TASK m1_ambient_ped_anim_seq PERFORM_SEQUENCE_TASK m1_ambient_peds[16] m1_ambient_ped_anim_seq CLEAR_SEQUENCE_TASK m1_ambient_ped_anim_seq ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[17] OPEN_SEQUENCE_TASK m1_ambient_ped_anim_seq TASK_PLAY_ANIM -1 DNCE_M_D DANCING 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m1_ambient_ped_anim_seq 1 CLOSE_SEQUENCE_TASK m1_ambient_ped_anim_seq PERFORM_SEQUENCE_TASK m1_ambient_peds[17] m1_ambient_ped_anim_seq CLEAR_SEQUENCE_TASK m1_ambient_ped_anim_seq ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[18] OPEN_SEQUENCE_TASK m1_ambient_ped_anim_seq TASK_PLAY_ANIM -1 DNCE_M_E DANCING 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m1_ambient_ped_anim_seq 1 CLOSE_SEQUENCE_TASK m1_ambient_ped_anim_seq PERFORM_SEQUENCE_TASK m1_ambient_peds[18] m1_ambient_ped_anim_seq CLEAR_SEQUENCE_TASK m1_ambient_ped_anim_seq ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[19] OPEN_SEQUENCE_TASK m1_first_drink_seq TASK_PLAY_ANIM -1 dnk_stndF_loop BAR 4.0 FALSE FALSE FALSE TRUE -1 TASK_PAUSE -1 4000 SET_SEQUENCE_TO_REPEAT m1_first_drink_seq 1 CLOSE_SEQUENCE_TASK m1_first_drink_seq PERFORM_SEQUENCE_TASK m1_ambient_peds[19] m1_first_drink_seq CLEAR_SEQUENCE_TASK m1_first_drink_seq ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[20] OPEN_SEQUENCE_TASK m1_second_drink_seq TASK_PLAY_ANIM -1 dnk_stndF_loop BAR 4.0 FALSE FALSE FALSE TRUE -1 TASK_PAUSE -1 2200 SET_SEQUENCE_TO_REPEAT m1_second_drink_seq 1 CLOSE_SEQUENCE_TASK m1_second_drink_seq PERFORM_SEQUENCE_TASK m1_ambient_peds[20] m1_second_drink_seq CLEAR_SEQUENCE_TASK m1_second_drink_seq ENDIF RETURN // ************************************************************ // Refresh chatting peds if both of them have stopped // ************************************************************ m1_keep_chatting_peds_talking: IF NOT IS_CHAR_DEAD m1_ambient_peds[3] AND NOT IS_CHAR_DEAD m1_ambient_peds[4] LVAR_INT m1_chat1_status m1_chat2_status GET_SCRIPT_TASK_STATUS m1_ambient_peds[3] TASK_CHAT_WITH_CHAR m1_chat1_status GET_SCRIPT_TASK_STATUS m1_ambient_peds[4] TASK_CHAT_WITH_CHAR m1_chat2_status IF m1_chat1_status = FINISHED_TASK AND m1_chat2_status = FINISHED_TASK TASK_CHAT_WITH_CHAR m1_ambient_peds[3] m1_ambient_peds[4] TRUE TRUE TASK_CHAT_WITH_CHAR m1_ambient_peds[4] m1_ambient_peds[3] FALSE TRUE ENDIF ENDIF RETURN // ************************************************************ // Send small group of ambient peds to attack // ************************************************************ m1_set_party_guards_attacking: m1_index = 5 WHILE m1_index <= 8 IF NOT IS_CHAR_DEAD m1_ambient_peds[m1_index] AND m1_ambient_ped_attacking[m1_index] = 0 SET_CURRENT_CHAR_WEAPON m1_ambient_peds[m1_index] WEAPONTYPE_MP5 TASK_KILL_CHAR_ON_FOOT m1_ambient_peds[m1_index] scplayer m1_ambient_ped_attacking[m1_index] = 1 SET_CHAR_KEEP_TASK m1_ambient_peds[m1_index] TRUE ENDIF m1_index++ ENDWHILE IF NOT IS_CHAR_DEAD m1_DJ AND m1_DJ_attacking = 0 SET_CURRENT_CHAR_WEAPON m1_DJ WEAPONTYPE_MP5 FREEZE_CHAR_POSITION m1_DJ FALSE TASK_KILL_CHAR_ON_FOOT m1_DJ scplayer m1_DJ_attacking = 1 SET_CHAR_KEEP_TASK m1_DJ TRUE ENDIF RETURN // ************************************************************ // Stop all ambient peds from attacking when no longer required // ************************************************************ m1_delete_all_chars_and_cars_not_chasing: m1_index = 0 WHILE m1_index < m1_num_of_ambient_peds IF NOT m1_ped_chasing[m1_index] = 1 IF NOT IS_CHAR_DEAD m1_ambient_peds[m1_index] IF NOT IS_CHAR_ON_SCREEN m1_ambient_peds[m1_index] DELETE_CHAR m1_ambient_peds[m1_index] ENDIF ENDIF ENDIF m1_index++ ENDWHILE m1_index = 0 WHILE m1_index < m1_num_of_perimeter_cars IF NOT m1_car_chasing[m1_index] = 1 IF NOT IS_CAR_DEAD m1_perimeter_cars[m1_index] IF NOT IS_CAR_ON_SCREEN m1_perimeter_cars[m1_index] DELETE_CAR m1_perimeter_cars[m1_index] ENDIF ENDIF ENDIF m1_index++ ENDWHILE // m1_index = 0 // WHILE m1_index < 3 // IF NOT IS_CAR_DEAD m1_perimeter_quads[m1_index] // IF NOT IS_CAR_ON_SCREEN m1_perimeter_quads[m1_index] // DELETE_CAR m1_perimeter_quads[m1_index] // ENDIF // ENDIF // m1_index++ // ENDWHILE RETURN // ************************************************************ // Set peds to duck and cover // ************************************************************ m1_set_ped_reactions_to_fight: // peds that aren't guards flee player m1_index = 0 WHILE m1_index < m1_num_of_ambient_peds IF NOT IS_CHAR_DEAD m1_ambient_peds[m1_index] IF m1_index < 5 OR m1_index > 8 TASK_SMART_FLEE_CHAR m1_ambient_peds[m1_index] scplayer 400.0 9999999 SET_CHAR_KEEP_TASK m1_ambient_peds[m1_index] TRUE ENDIF ENDIF m1_index++ ENDWHILE // second group of dancers hide in cars IF NOT IS_CAR_DEAD m1_perimeter_cars[1] LOCK_CAR_DOORS m1_perimeter_cars[1] CARLOCK_LOCKOUT_PLAYER_ONLY IF NOT IS_CHAR_DEAD m1_ambient_peds[15] TASK_ENTER_CAR_AS_DRIVER m1_ambient_peds[15] m1_perimeter_cars[1] -1 ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[16] TASK_ENTER_CAR_AS_PASSENGER m1_ambient_peds[16] m1_perimeter_cars[1] -1 0 ENDIF ENDIF IF NOT IS_CAR_DEAD m1_perimeter_cars[2] LOCK_CAR_DOORS m1_perimeter_cars[2] CARLOCK_LOCKOUT_PLAYER_ONLY IF NOT IS_CHAR_DEAD m1_ambient_peds[17] TASK_ENTER_CAR_AS_DRIVER m1_ambient_peds[17] m1_perimeter_cars[2] -1 ENDIF IF NOT IS_CHAR_DEAD m1_ambient_peds[18] TASK_ENTER_CAR_AS_PASSENGER m1_ambient_peds[18] m1_perimeter_cars[2] -1 0 ENDIF ENDIF RETURN // ************************************************************ // Send cars to chase player // ************************************************************ m1_set_cars_chasing_player: IF NOT IS_CAR_DEAD m1_sound_van m1_num_of_cars_chasing_player = 0 m1_car_index = 0 WHILE m1_car_index < m1_num_of_perimeter_cars IF NOT IS_CAR_DEAD m1_perimeter_cars[m1_car_index] GET_DRIVER_OF_CAR m1_perimeter_cars[m1_car_index] m1_perimeter_car_driver IF m1_perimeter_car_driver = -1 AND NOT m1_car_chasing[m1_car_index] = 1 AND m1_num_of_cars_chasing_player < 2 m1_ped_index = 0 WHILE m1_ped_index < m1_num_of_ambient_peds IF NOT IS_CHAR_DEAD m1_ambient_peds[m1_ped_index] AND NOT m1_ped_chasing[m1_ped_index] = 1 //AND NOT m1_ambient_ped_attacking[m1_ped_index] = 1 LOCK_CAR_DOORS m1_perimeter_cars[m1_car_index] CARLOCK_LOCKOUT_PLAYER_ONLY TASK_CAR_MISSION m1_ambient_peds[m1_ped_index] m1_perimeter_cars[m1_car_index] -1 MISSION_RAMPLAYER_FARAWAY 30.0 DRIVINGMODE_AVOIDCARS m1_car_drivers[m1_car_index] = m1_ambient_peds[m1_ped_index] m1_driver_getting_in_to_car[m1_car_index] = 1 SET_CAR_HEAVY m1_perimeter_cars[m1_car_index] TRUE SET_CAR_STRONG m1_perimeter_cars[m1_car_index] TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER m1_perimeter_cars[m1_car_index] TRUE m1_ped_chasing[m1_ped_index] = 1 m1_car_chasing[m1_car_index] = 1 m1_num_of_cars_chasing_player++ // driver found for this car; break out of ped loop m1_ped_index = m1_num_of_ambient_peds ENDIF m1_ped_index++ ENDWHILE ENDIF ENDIF m1_car_index++ ENDWHILE REMOVE_DECISION_MAKER m1_party_decisions COPY_CHAR_DECISION_MAKER -1 m1_party_decisions CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE m1_party_decisions EVENT_DRAGGED_OUT_CAR m1_index = 0 WHILE m1_index < m1_num_of_ambient_peds IF NOT IS_CHAR_DEAD m1_ambient_peds[m1_index] // set reactions of peds that aren't chasing IF NOT m1_ped_chasing[m1_index] = 1 IF m1_index >= 5 AND m1_index <= 8 // guards get stay in same place so that there aren't too many chars chasing player in van SET_CHAR_STAY_IN_SAME_PLACE m1_ambient_peds[m1_index] TRUE SET_CURRENT_CHAR_WEAPON m1_ambient_peds[m1_index] WEAPONTYPE_MP5 TASK_KILL_CHAR_ON_FOOT m1_ambient_peds[m1_index] scplayer m1_ambient_ped_attacking[m1_index] = 1 SET_CHAR_KEEP_TASK m1_ambient_peds[m1_index] TRUE SET_CHAR_RELATIONSHIP m1_ambient_peds[m1_index] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 ELSE // all other peds flee player TASK_SMART_FLEE_CHAR m1_ambient_peds[m1_index] scplayer 400.0 9999999 SET_CHAR_KEEP_TASK m1_ambient_peds[m1_index] TRUE ENDIF ELSE SET_CHAR_KEEP_TASK m1_ambient_peds[m1_index] FALSE ENDIF // reset decision maker to normal responses now that the party's attacking SET_CHAR_DECISION_MAKER m1_ambient_peds[m1_index] m1_party_decisions ENDIF m1_index++ ENDWHILE IF NOT IS_CHAR_DEAD m1_DJ SET_CHAR_DECISION_MAKER m1_DJ m1_party_decisions ENDIF ENDIF RETURN // ************************************************************ // Check if anyone's fallen out of their car // ************************************************************ m1_keep_drivers_in_cars: IF NOT IS_CAR_DEAD m1_sound_van m1_car_index = 0 WHILE m1_car_index < m1_num_of_perimeter_cars IF NOT IS_CAR_DEAD m1_perimeter_cars[m1_car_index] AND m1_car_chasing[m1_car_index] = 1 IF NOT IS_CHAR_DEAD m1_car_drivers[m1_car_index] IF NOT IS_CHAR_IN_CAR m1_car_drivers[m1_car_index] m1_perimeter_cars[m1_car_index] AND m1_driver_getting_in_to_car[m1_car_index] = 0 TASK_CAR_MISSION m1_car_drivers[m1_car_index] m1_perimeter_cars[m1_car_index] -1 MISSION_RAMPLAYER_FARAWAY 30.0 DRIVINGMODE_AVOIDCARS m1_driver_getting_in_to_car[m1_car_index] = 1 ENDIF IF IS_CHAR_IN_CAR m1_car_drivers[m1_car_index] m1_perimeter_cars[m1_car_index] AND m1_driver_getting_in_to_car[m1_car_index] = 1 m1_driver_getting_in_to_car[m1_car_index] = 0 ENDIF ENDIF ENDIF m1_car_index++ ENDWHILE ENDIF RETURN // ************************************************************ // Make sure cars aren't too far behind when chasing player // ************************************************************ m1_stop_chasing_cars_from_losing_player: m1_index = 0 WHILE m1_index < m1_num_of_perimeter_cars IF NOT IS_CAR_DEAD m1_perimeter_cars[m1_index] AND m1_car_chasing[m1_index] = 1 GET_DRIVER_OF_CAR m1_perimeter_cars[m1_index] m1_perimeter_car_driver IF NOT IS_CAR_ON_SCREEN m1_perimeter_cars[m1_index] AND NOT m1_perimeter_car_driver = -1 AND NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer m1_perimeter_cars[m1_index] 100.0 100.0 FALSE GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 -10.0 -1.0 m1_perimeter_car_x m1_perimeter_car_y m1_perimeter_car_z SET_CAR_COORDINATES m1_perimeter_cars[m1_index] m1_perimeter_car_x m1_perimeter_car_y m1_perimeter_car_z ENDIF ENDIF m1_index++ ENDWHILE RETURN // ************************************************************ // Stop chasing drivers once player is near destination // ************************************************************ m1_stop_everyone_from_chasing_player: m1_car_index = 0 WHILE m1_car_index < m1_num_of_perimeter_cars IF NOT IS_CAR_DEAD m1_perimeter_cars[m1_car_index] AND NOT IS_CHAR_DEAD m1_car_drivers[m1_car_index] AND m1_car_chasing[m1_car_index] = 1 TASK_CAR_DRIVE_TO_COORD m1_car_drivers[m1_car_index] m1_perimeter_cars[m1_car_index] m1_beach_party_x m1_beach_party_y m1_beach_party_z 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ENDIF m1_car_index++ ENDWHILE RETURN // ***************************************************************** // Cutscene showing player driving sound van into garage // ***************************************************************** m1_play_mission_passed_cutscene: DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE OPEN_GARAGE mul_lan WHILE NOT IS_GARAGE_OPEN mul_lan WAIT 0 ENDWHILE IF IS_CAR_DEAD m1_sound_van CLEAR_PRINTS PRINT_NOW ( MUS1_20 ) 5000 0 GOTO mission_music1_failed ENDIF CLEAR_AREA m1_destination_x m1_destination_y m1_destination_z 50.0 FALSE // remove any cars still chasing m1_car_index = 0 WHILE m1_car_index < m1_num_of_perimeter_cars IF m1_car_chasing[m1_car_index] = 1 DELETE_CHAR m1_car_drivers[m1_car_index] DELETE_CAR m1_perimeter_cars[m1_car_index] ENDIF m1_car_index++ ENDWHILE SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE IF NOT IS_CAR_DEAD m1_sound_van SET_CAR_COORDINATES m1_sound_van m1_destination_x m1_destination_y m1_destination_z SET_CAR_HEADING m1_sound_van 0.0 IF NOT IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_INTO_CAR scplayer m1_sound_van ENDIF ENDIF WAIT 500 SET_FIXED_CAMERA_POSITION 1640.75 -1528.1 14.25 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1642.49 -1522.89 14.11 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF IS_CAR_DEAD m1_sound_van CLEAR_PRINTS PRINT_NOW ( MUS1_20 ) 5000 0 GOTO mission_music1_failed ENDIF LVAR_INT m1_cutscene_skipped m1_cutscene_skipped = 1 SKIP_CUTSCENE_START LVAR_INT m1_final_cutscene_seq IF NOT IS_CAR_DEAD m1_sound_van OPEN_SEQUENCE_TASK m1_final_cutscene_seq TASK_CAR_DRIVE_TO_COORD -1 m1_sound_van 1643.48 -1515.73 13.82 5.0 MODE_ACCURATE 0 DRIVINGMODE_AVOIDCARS TASK_LEAVE_CAR -1 m1_sound_van TASK_GO_STRAIGHT_TO_COORD -1 1641.91 -1517.64 12.62 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 1641.91 -1522.36 12.61 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK m1_final_cutscene_seq PERFORM_SEQUENCE_TASK scplayer m1_final_cutscene_seq CLEAR_SEQUENCE_TASK m1_final_cutscene_seq ENDIF WAIT 1000 // wait until player's left van to fade out GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK m1_task_status IF NOT m1_task_status = FINISHED_TASK GET_SEQUENCE_PROGRESS scplayer m1_seq_progress WHILE m1_seq_progress <= 1 AND NOT m1_task_status = FINISHED_TASK WAIT 0 GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK m1_task_status IF NOT m1_task_status = FINISHED_TASK GET_SEQUENCE_PROGRESS scplayer m1_seq_progress ENDIF ENDWHILE ENDIF WAIT 2000 m1_cutscene_skipped = 0 SKIP_CUTSCENE_END IF m1_cutscene_skipped = 1 ENDIF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLOSE_GARAGE mul_lan WHILE NOT IS_GARAGE_CLOSED mul_lan WAIT 0 ENDWHILE IF IS_CAR_DEAD m1_sound_van CLEAR_PRINTS PRINT_NOW ( MUS1_20 ) 5000 0 GOTO mission_music1_failed ENDIF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer m1_destination_x m1_destination_y m1_destination_z ELSE SET_CHAR_COORDINATES scplayer m1_destination_x m1_destination_y m1_destination_z ENDIF SET_CHAR_HEADING scplayer 180.0 DELETE_CAR m1_sound_van SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN // ************************************************************ // Set up conversation before dance with DJ // ************************************************************ m1_init_first_conversation: START_SETTING_UP_CONVERSATION m1_DJ VAR_INT m1_random_int m1_random_int2 LVAR_TEXT_LABEL m1_hi_node m1_doffe_node m1_bexit_node m1_dstar_node m1_gexit_node LVAR_INT m1_hi_sound m1_hiy_sound m1_hin_sound LVAR_INT m1_doffe_sound m1_doffey_sound m1_doffen_sound LVAR_INT m1_bexit_sound m1_dstar_sound m1_gexit_sound GENERATE_RANDOM_INT_IN_RANGE 0 2 m1_random_int GENERATE_RANDOM_INT_IN_RANGE 0 3 m1_random_int2 IF m1_random_int = 0 SWITCH m1_random_int2 CASE 0 $m1_hi_node = HI1 m1_hi_sound = SOUND_HI1 m1_hiy_sound = SOUND_HI1Y m1_hin_sound = SOUND_HI1N BREAK CASE 1 $m1_hi_node = HI3 m1_hi_sound = SOUND_HI3 m1_hiy_sound = SOUND_HI3Y m1_hin_sound = SOUND_HI3N BREAK CASE 2 $m1_hi_node = HI5 m1_hi_sound = SOUND_HI5 m1_hiy_sound = SOUND_HI5Y m1_hin_sound = SOUND_HI5N BREAK DEFAULT BREAK ENDSWITCH ELSE SWITCH m1_random_int2 CASE 0 $m1_hi_node = HI2 m1_hi_sound = SOUND_HI2 m1_hiy_sound = SOUND_HI2Y m1_hin_sound = SOUND_HI2N BREAK CASE 1 $m1_hi_node = HI4 m1_hi_sound = SOUND_HI4 m1_hiy_sound = SOUND_HI4Y m1_hin_sound = SOUND_HI4N BREAK CASE 2 $m1_hi_node = HI6 m1_hi_sound = SOUND_HI6 m1_hiy_sound = SOUND_HI6Y m1_hin_sound = SOUND_HI6N BREAK DEFAULT BREAK ENDSWITCH ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 2 m1_random_int IF m1_random_int = 0 $m1_doffe_node = DOFFE1 m1_doffe_sound = SOUND_DOFFE1 m1_doffey_sound = SOUND_DOFFE1Y m1_doffen_sound = SOUND_DOFFE1N ELSE $m1_doffe_node = DOFFE3 m1_doffe_sound = SOUND_DOFFE3 m1_doffey_sound = SOUND_DOFFE3Y m1_doffen_sound = SOUND_DOFFE3N ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 2 m1_random_int IF m1_random_int = 0 $m1_bexit_node = BEXIT1 m1_bexit_sound = SOUND_BEXIT1 ELSE $m1_bexit_node = BEXIT2 m1_bexit_sound = SOUND_BEXIT2 ENDIF $m1_dstar_node = DSTAR2 m1_dstar_sound = SOUND_DSTAR2 GENERATE_RANDOM_INT_IN_RANGE 0 2 m1_random_int IF m1_random_int = 0 $m1_gexit_node = GEXIT1 m1_gexit_sound = SOUND_GEXIT1 ELSE $m1_gexit_node = GEXIT2 m1_gexit_sound = SOUND_GEXIT2 ENDIF SET_UP_CONVERSATION_NODE_WITH_SCRIPTED_SPEECH $m1_hi_node $m1_doffe_node $m1_bexit_node m1_hi_sound m1_hiy_sound m1_hin_sound SET_UP_CONVERSATION_END_NODE_WITH_SCRIPTED_SPEECH $m1_bexit_node m1_bexit_sound SET_UP_CONVERSATION_NODE_WITH_SCRIPTED_SPEECH $m1_doffe_node $m1_dstar_node $m1_gexit_node m1_doffe_sound m1_doffey_sound m1_doffen_sound SET_UP_CONVERSATION_END_NODE_WITH_SCRIPTED_SPEECH $m1_dstar_node m1_dstar_sound SET_UP_CONVERSATION_END_NODE_WITH_SCRIPTED_SPEECH $m1_gexit_node m1_gexit_sound FINISH_SETTING_UP_CONVERSATION RETURN // ************************************************************ // Set up conversation after dance with DJ // ************************************************************ m1_init_second_conversation: START_SETTING_UP_CONVERSATION m1_DJ LVAR_TEXT_LABEL m1_voffe_node m1_vsure_node LVAR_INT m1_voffe_sound m1_voffey_sound m1_voffen_sound LVAR_INT m1_vsure_sound m1_vsurey_sound m1_vsuren_sound GENERATE_RANDOM_INT_IN_RANGE 0 2 m1_random_int IF m1_random_int = 0 $m1_voffe_node = VOFFE1 m1_voffe_sound = SOUND_VOFFE1 m1_voffey_sound = SOUND_VOFFE1Y m1_voffen_sound = SOUND_VOFFE1N ELSE $m1_voffe_node = VOFFE2 m1_voffe_sound = SOUND_VOFFE2 m1_voffey_sound = SOUND_VOFFE2Y m1_voffen_sound = SOUND_VOFFE2N ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 2 m1_random_int IF m1_random_int = 0 $m1_vsure_node = VSURE1 m1_vsure_sound = SOUND_VSURE1 m1_vsurey_sound = SOUND_VSURE1Y m1_vsuren_sound = SOUND_VSURE1N ELSE $m1_vsure_node = VSURE2 m1_vsure_sound = SOUND_VSURE2 m1_vsurey_sound = SOUND_VSURE2Y m1_vsuren_sound = SOUND_VSURE2N ENDIF SET_UP_CONVERSATION_NODE_WITH_SCRIPTED_SPEECH $m1_voffe_node VYES2 $m1_vsure_node m1_voffe_sound m1_voffey_sound m1_voffen_sound SET_UP_CONVERSATION_END_NODE_WITH_SCRIPTED_SPEECH VYES2 SOUND_VYES2 SET_UP_CONVERSATION_NODE_WITH_SCRIPTED_SPEECH $m1_vsure_node VLATE VYES1 m1_vsure_sound m1_vsurey_sound m1_vsuren_sound SET_UP_CONVERSATION_END_NODE_WITH_SCRIPTED_SPEECH VLATE SOUND_VLATE SET_UP_CONVERSATION_END_NODE_WITH_SCRIPTED_SPEECH VYES1 SOUND_VYES1 FINISH_SETTING_UP_CONVERSATION RETURN // ************************************************************ // Find coordinates for new beach party location // ************************************************************ m1_calculate_new_positions: LVAR_FLOAT m1_xdiff m1_ydiff LVAR_FLOAT m1_xnew m1_ynew // first campfire m1_xdiff = m1_campfire1_x - m1_beach_party_x m1_ydiff = m1_campfire1_y - m1_beach_party_y GOSUB m1_calculate_individual_position m1_campfire1_x = m1_xnew m1_campfire1_y = m1_ynew m1_campfire1_z = 2.68 // second campfire m1_xdiff = m1_campfire2_x - m1_beach_party_x m1_ydiff = m1_campfire2_y - m1_beach_party_y GOSUB m1_calculate_individual_position m1_campfire2_x = m1_xnew m1_campfire2_y = m1_ynew m1_campfire2_z = 2.39 // sound van m1_xdiff = m1_sound_van_x - m1_beach_party_x m1_ydiff = m1_sound_van_y - m1_beach_party_y GOSUB m1_calculate_individual_position m1_sound_van_x = m1_xnew m1_sound_van_y = m1_ynew m1_sound_van_z = 3.42 m1_sound_van_heading -= 51.0 // DJ m1_xdiff = m1_DJ_start_x - m1_beach_party_x m1_ydiff = m1_DJ_start_y - m1_beach_party_y GOSUB m1_calculate_individual_position m1_DJ_start_x = m1_xnew m1_DJ_start_y = m1_ynew m1_xdiff = m1_next_to_DJ_x - m1_beach_party_x m1_ydiff = m1_next_to_DJ_y - m1_beach_party_y GOSUB m1_calculate_individual_position m1_next_to_DJ_x = m1_xnew m1_next_to_DJ_y = m1_ynew m1_next_to_DJ_z = 2.31 // ambient ped positions m1_index = 0 WHILE m1_index < m1_num_of_ambient_peds m1_xdiff = m1_ambient_ped_start_x[m1_index] - m1_beach_party_x m1_ydiff = m1_ambient_ped_start_y[m1_index] - m1_beach_party_y GOSUB m1_calculate_individual_position m1_ambient_ped_start_x[m1_index] = m1_xnew m1_ambient_ped_start_y[m1_index] = m1_ynew m1_ambient_ped_start_heading[m1_index] -= 51.0 m1_index++ ENDWHILE // // quads // m1_index = 0 // WHILE m1_index < 3 // m1_xdiff = m1_perimeter_quad_x[m1_index] - m1_beach_party_x // m1_ydiff = m1_perimeter_quad_y[m1_index] - m1_beach_party_y // GOSUB m1_calculate_individual_position // m1_perimeter_quad_x[m1_index] = m1_xnew // m1_perimeter_quad_y[m1_index] = m1_ynew // m1_index++ // ENDWHILE // m1_perimeter_quad_heading[0] = 190.0 // m1_perimeter_quad_heading[1] = 317.0 // m1_perimeter_quad_heading[2] = 112.0 RETURN m1_calculate_individual_position: LVAR_FLOAT m1_xdiff_squared m1_ydiff_squared LVAR_FLOAT m1_dist_from_centre m1_dist_from_centre_squared m1_xdiff_squared = m1_xdiff * m1_xdiff m1_ydiff_squared = m1_ydiff * m1_ydiff m1_dist_from_centre_squared = m1_xdiff_squared + m1_ydiff_squared SQRT m1_dist_from_centre_squared m1_dist_from_centre // need cos and sin of (theta + 51) to find new coord (where theta is angle from y-axis of old coords) // don't have inverse tan to find theta, but only need cos(A+B) and sin(A+B) so use // cos(A+B) = cosAcosB - sinAsinB, sin(A+B) = sinAcosB + cosAsinB LVAR_FLOAT m1_cos_theta m1_sin_theta m1_cos_rotation m1_sin_rotation LVAR_FLOAT m1_cos_theta_cos_rotation m1_sin_theta_sin_rotation LVAR_FLOAT m1_sin_theta_cos_rotation m1_cos_theta_sin_rotation LVAR_FLOAT m1_cos_theta_plus_rotation m1_sin_theta_plus_rotation m1_cos_theta = m1_ydiff / m1_dist_from_centre m1_sin_theta = m1_xdiff / m1_dist_from_centre COS 51.0 m1_cos_rotation SIN 51.0 m1_sin_rotation m1_cos_theta_cos_rotation = m1_cos_theta * m1_cos_rotation m1_sin_theta_sin_rotation = m1_sin_theta * m1_sin_rotation m1_sin_theta_cos_rotation = m1_sin_theta * m1_cos_rotation m1_cos_theta_sin_rotation = m1_cos_theta * m1_sin_rotation m1_cos_theta_plus_rotation = m1_cos_theta_cos_rotation - m1_sin_theta_sin_rotation m1_sin_theta_plus_rotation = m1_sin_theta_cos_rotation + m1_cos_theta_sin_rotation m1_xnew = m1_dist_from_centre * m1_sin_theta_plus_rotation m1_ynew = m1_dist_from_centre * m1_cos_theta_plus_rotation m1_xnew += m1_beach_party_x m1_ynew += m1_beach_party_y RETURN // ************************************************************ // If player gets out, add blip for van // ************************************************************ m1_current_blip_check: IF NOT IS_CAR_DEAD m1_sound_van IF m1_player_in_sound_van = 1 IF NOT IS_CHAR_IN_CAR scplayer m1_sound_van REMOVE_BLIP m1_destination_blip ADD_BLIP_FOR_CAR m1_sound_van m1_sound_van_blip SET_BLIP_AS_FRIENDLY m1_sound_van_blip TRUE PRINT_NOW ( MUS1_6 ) 7000 0 m1_player_in_sound_van = 0 ENDIF ELSE IF IS_CHAR_IN_CAR scplayer m1_sound_van REMOVE_BLIP m1_sound_van_blip ADD_BLIP_FOR_COORD m1_destination_x m1_destination_y m1_destination_z m1_destination_blip PRINT_NOW ( MUS1_19 ) 7000 0 m1_player_in_sound_van = 1 ENDIF ENDIF ENDIF RETURN // **************************************************************** // Cutscene showing player beach party and giving them instructions // **************************************************************** m1_play_first_scripted_cutscene: SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON CLEAR_PRINTS PRINT_NOW ( MUS1_2 ) 10000 0 SET_FIXED_CAMERA_POSITION 532.87 -1893.69 3.29 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 533.97 -1892.67 3.3 JUMP_CUT GET_CHAR_COORDINATES scplayer player_x player_y player_z SET_CHAR_COORDINATES scplayer player_x player_y -100.0 // set player facing the beach party LVAR_FLOAT m1_direction_x m1_direction_y m1_direction_x = m1_beach_party_x - player_x m1_direction_y = m1_beach_party_y - player_y GET_HEADING_FROM_VECTOR_2D m1_direction_x m1_direction_y heading IF NOT IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_HEADING scplayer heading ELSE LVAR_INT m1_player_car STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer m1_player_car CAR_SET_IDLE m1_player_car SET_CAR_HEADING m1_player_car heading ENDIF WAIT 2000 m1_cutscene_skipped = 1 SKIP_CUTSCENE_START WAIT 8000 // PRINT_NOW ( MUS1_3 ) 10000 0 // // SET_FIXED_CAMERA_POSITION 534.88 -1903.09 2.16 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 535.7 -1897.65 2.07 JUMP_CUT // // WAIT 10000 // // PRINT_NOW ( MUS1_4 ) 10000 0 // // SET_FIXED_CAMERA_POSITION 535.77 -1895.22 2.89 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 536.55 -1893.94 2.92 JUMP_CUT // // WAIT 10000 m1_cutscene_skipped = 0 SKIP_CUTSCENE_END IF m1_cutscene_skipped = 1 ENDIF CLEAR_PRINTS SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON RETURN // *************************************************************** // Mission audio // *************************************************************** m1_setup_audio_data: SWITCH m1_current_audio_needed CASE M1_STEAL_AUDIO $m1_audio_text[0] = &LOC1_YT m1_audio_sound[0] = SOUND_LOC1_YT m1_total_audio_to_play = 1 BREAK CASE M1_DANCE_FAIL_AUDIO $m1_audio_text[0] = &DNCEF1 m1_audio_sound[0] = SOUND_DNCEF1 m1_total_audio_to_play = 1 BREAK DEFAULT BREAK ENDSWITCH m1_audio_is_playing = 0 m1_audio_index = 0 m1_started_talking = 0 CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS RETURN m1_load_and_play_audio: IF m1_audio_is_playing = 0 OR m1_audio_is_playing = 1 IF m1_audio_index < m1_total_audio_to_play IF TIMERA > 1000 GOSUB m1_play_audio ENDIF ENDIF ENDIF IF m1_audio_is_playing = 2 IF HAS_MISSION_AUDIO_FINISHED 1 m1_audio_is_playing = 0 m1_audio_index++ CLEAR_PRINTS TIMERA = 0 ENDIF ENDIF RETURN m1_play_audio: IF m1_audio_is_playing = 0 LOAD_MISSION_AUDIO 1 m1_audio_sound[m1_audio_index] m1_audio_is_playing = 1 ENDIF IF m1_audio_is_playing = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW $m1_audio_text[m1_audio_index] 10000 1 IF m1_current_audio_needed = M1_DANCE_FAIL_AUDIO AND NOT IS_CHAR_DEAD m1_DJ ATTACH_MISSION_AUDIO_TO_CHAR 1 m1_DJ ENDIF PLAY_MISSION_AUDIO 1 m1_audio_is_playing = 2 ENDIF ENDIF RETURN // ******************************** Mission music1 failed ********************************** mission_music1_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // ******************************** Mission music1 passed ********************************** mission_music1_passed: flag_strap_mission_counter ++ REGISTER_MISSION_PASSED ( STRAP_1 ) PLAYER_MADE_PROGRESS 1 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 3 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 3 //ADD_SCORE player1 100 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 RETURN // *********************************** Mission cleanup ************************************* mission_cleanup_music1: //MARK_MODEL_AS_NO_LONGER_NEEDED QUAD MARK_MODEL_AS_NO_LONGER_NEEDED VOODOO MARK_MODEL_AS_NO_LONGER_NEEDED ESPERANT MARK_MODEL_AS_NO_LONGER_NEEDED OCEANIC MARK_MODEL_AS_NO_LONGER_NEEDED PONY MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED BFYST MARK_MODEL_AS_NO_LONGER_NEEDED WFYST MARK_MODEL_AS_NO_LONGER_NEEDED BMYST MARK_MODEL_AS_NO_LONGER_NEEDED WMYRO MARK_MODEL_AS_NO_LONGER_NEEDED WFYCLOT MARK_MODEL_AS_NO_LONGER_NEEDED WMYST MARK_MODEL_AS_NO_LONGER_NEEDED WMYCLOT MARK_MODEL_AS_NO_LONGER_NEEDED BMYDJ MARK_MODEL_AS_NO_LONGER_NEEDED WFYRI MARK_MODEL_AS_NO_LONGER_NEEDED OFYRI MARK_VEHICLE_MOD_AS_NO_LONGER_NEEDED wheel_or1 MARK_OBJECT_AS_NO_LONGER_NEEDED m1_campfire1wood MARK_OBJECT_AS_NO_LONGER_NEEDED m1_campfire2wood MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED Dance.sc REMOVE_ANIMATION BAR REMOVE_ANIMATION DANCING REMOVE_ANIMATION BEACH REMOVE_ANIMATION SCRATCHING REMOVE_BLIP m1_DJ_blip REMOVE_BLIP m1_sound_van_blip REMOVE_BLIP m1_destination_blip //REMOVE_ALL_SCRIPT_FIRES KILL_FX_SYSTEM m1_campfire1 KILL_FX_SYSTEM m1_campfire2 CLEAR_SEQUENCE_TASK m1_first_drink_seq CLEAR_SEQUENCE_TASK m1_second_drink_seq CLEAR_SEQUENCE_TASK m1_DJ_leave_car_seq CLEAR_SEQUENCE_TASK m1_final_cutscene_seq CLEAR_SEQUENCE_TASK m1_DJ_play_seq CLEAR_SEQUENCE_TASK m1_DJ_dance_seq CLEAR_SEQUENCE_TASK m1_ambient_ped_anim_seq IF IS_PLAYER_PLAYING player1 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE ENDIF IF NOT IS_CHAR_DEAD m1_DJ CLEAR_CONVERSATION_FOR_CHAR m1_DJ FREEZE_CHAR_POSITION m1_DJ FALSE ENDIF IF NOT IS_CAR_DEAD m1_sound_van SET_CAR_CAN_BE_VISIBLY_DAMAGED m1_sound_van TRUE ENDIF REMOVE_DECISION_MAKER m1_party_decisions CLEAR_HELP SWITCH_AUDIO_ZONE BEACH FALSE SWITCH_PED_ROADS_BACK_TO_ORIGINAL 502.15 -1913.39 -5.0 558.86 -1838.87 10.0 GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // *********************************** Strap 2 ******************************************** // ********************************* Steal Rhyme Book 2 *********************************** // ***************************************************************************************** // * Player has to steal rhyme book from Dr G's mansion. This mission teaches the player * // * about stealth // ***************************************************************************************** // Mission start stuff { SCRIPT_NAME strap2 GOSUB mission_start_music2 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_music2_failed ENDIF GOSUB mission_cleanup_music2 MISSION_END // **************************************** Variables for mission **************************** //mansion LVAR_INT mansioninterior_s2 LVAR_INT drgcar1_s2 LVAR_INT drgcar2_s2 LVAR_INT guard1_s2 LVAR_INT guard2_s2 LVAR_INT guard3_s2 LVAR_INT guard4_s2 LVAR_INT guard5_s2 LVAR_INT guard6_s2 LVAR_INT guard7_s2 LVAR_INT guard8_s2 LVAR_INT strap2_DM //decision makers LVAR_INT strap2empty_DM //decision makers LVAR_INT drink_s2 LVAR_INT enemy_s2 LVAR_INT drinkvend_s2seq LVAR_INT console_s2seq LVAR_INT guard4_s2seq LVAR_INT ogloc_s2 LVAR_INT mtbike_s2 //sequences LVAR_INT guard2_s2seq LVAR_INT guard7_s2seq LVAR_INT guard1_s2seq LVAR_INT sequencetask_s2 LVAR_INT guard3_s2seq //pickups LVAR_INT rhymebook_s2 LVAR_INT pickupgun_s2 //blips LVAR_INT rhymebook_s2blip LVAR_INT guard1_s2blip LVAR_INT guard2_s2blip LVAR_INT guard3_s2blip LVAR_INT guard4_s2blip LVAR_INT guard5_s2blip LVAR_INT guard6_s2blip LVAR_INT guard7_s2blip LVAR_INT guard8_s2blip //flags LVAR_INT rhymebook_s2flag LVAR_INT helptext_s2flag LVAR_INT guard2_s2flag LVAR_INT guard3_s2flag LVAR_INT guard4_s2flag LVAR_INT guard5_s2flag LVAR_INT guard6_s2flag LVAR_INT guard7_s2flag LVAR_INT guard8_s2flag LVAR_INT hudflash_s2flag LVAR_INT guard1text_s2flag LVAR_INT guard2text_s2flag LVAR_INT guard3text_s2flag LVAR_INT guard4text_s2flag LVAR_INT guard5text_s2flag LVAR_INT pickupcollect_s2flag LVAR_INT playerseenstate_s2 LVAR_INT guard1playerseenstate_s2 LVAR_INT guard2playerseenstate_s2 LVAR_INT guard3playerseenstate_s2 LVAR_INT guard4playerseenstate_s2 LVAR_INT guard5playerseenstate_s2 LVAR_INT guard6playerseenstate_s2 LVAR_INT guard7playerseenstate_s2 LVAR_INT bararea_s2flag LVAR_INT missionaudio_s2flag LVAR_INT playerducking_s2flag VAR_INT tripskip_s2flag //do not reset LVAR_INT mountainbike_s2flag ///////////////////////////////////////////// CUTSCENE END // **************************************** Mission Start ************************************ mission_start_music2: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT STRAP2 ///////////////////////////////////////////// CUTSCENE START SET_FADING_COLOUR 0 0 0 SET_AREA_VISIBLE 10 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_CUTSCENE STRAP2A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON RESTORE_CAMERA_JUMPCUT REQUEST_MODEL HUNTLEY REQUEST_MODEL STAFFORD REQUEST_MODEL KMB_RHYMESBOOK REQUEST_MODEL CJ_JUICE_CAN REQUEST_MODEL SILENCED REQUEST_MODEL MTBIKE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 1 SOUND_LOC2_BA LOAD_MISSION_AUDIO 2 SOUND_LOC2_BB LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED HUNTLEY OR NOT HAS_MODEL_LOADED STAFFORD OR NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED KMB_RHYMESBOOK OR NOT HAS_MODEL_LOADED CJ_JUICE_CAN OR NOT HAS_MODEL_LOADED SILENCED OR NOT HAS_MODEL_LOADED MTBIKE WAIT 0 ENDWHILE ADD_BLIP_FOR_COORD 1239.032 -741.106 94.76 rhymebook_s2blip //1298.72 -796.12 84.07 SET_CHAR_COORDINATES scplayer 790.0 -1626.0 12.5 LOAD_SCENE 790.0 -1626.0 12.5 SET_CAMERA_BEHIND_PLAYER SET_CHAR_HEADING scplayer 356.0 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_STEAL strap2_DM LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY strap2empty_DM SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 PEDTYPE_MISSION1 SWITCH_ENTRY_EXIT maddogs FALSE SWITCH_ENTRY_EXIT MDDOGS TRUE SET_PLAYER_GROUP_RECRUITMENT PLAYER1 FALSE SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 DO_FADE 1500 FADE_IN // ****************************** Declare Variables Values *********************************** //flags rhymebook_s2flag = 0 helptext_s2flag = 0 guard2_s2flag = 0 guard3_s2flag = 0 guard4_s2flag = 0 guard5_s2flag = 0 guard6_s2flag = 0 guard7_s2flag = 0 guard8_s2flag = 0 hudflash_s2flag = 0 guard1text_s2flag = 0 guard2text_s2flag = 0 guard3text_s2flag = 0 guard4text_s2flag = 0 guard5text_s2flag = 0 pickupcollect_s2flag = 0 playerseenstate_s2 = 0 guard1playerseenstate_s2 = 0 guard2playerseenstate_s2 = 0 guard3playerseenstate_s2 = 0 guard4playerseenstate_s2 = 0 guard5playerseenstate_s2 = 0 guard6playerseenstate_s2 = 0 guard7playerseenstate_s2 = 0 bararea_s2flag = 0 missionaudio_s2flag = 0 playerducking_s2flag = 0 mountainbike_s2flag = 0 // ************************************** Main mission ****************************************** // //CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE crash3_DM EVENT_DRAGGED_OUT_CAR //ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE crash3_DM EVENT_DRAGGED_OUT_CAR TASK_COMPLEX_KILL_PED_ON_FOOT 50.0 50.0 50.0 50.0 1 1 // //friendProb threatProb playerProb undefinedProb inCar onFoot PRINT_NOW STP2_1 10000 1 //~s~Go to Mad Dogg's mansion. //////////////////////////////////////////////////////////////////////////////////////////////////// IF tripskip_s2flag > 0 SET_UP_SKIP 1242.659 -748.503 94.33 191.586 ENDIF stealrhymebook_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_music2_passed ENDIF IF rhymebook_s2flag = 0 IF IS_CHAR_IN_ANGLED_AREA_2D scplayer 1222.799 -735.563 1348.407 -759.322 -100.0 FALSE IF tripskip_s2flag = 0 tripskip_s2flag = 1 ENDIF CLEAR_SKIP REMOVE_BLIP rhymebook_s2blip ADD_BLIP_FOR_COORD 1298.66 -795.58 83.84 rhymebook_s2blip PRINT_NOW STP2_2 5000 1//~s~The main door is around the back of the mansion, you should be able to get inside undetected as most of Mad Dogg's entourage are at rehearsals for an award ceremony. CREATE_CAR HUNTLEY 1243.154 -805.76 83.188 drgcar1_s2 SET_CAR_HEADING drgcar1_s2 1.533 CREATE_CAR STAFFORD 1255.024 -804.587 83.934 drgcar2_s2 SET_CAR_HEADING drgcar2_s2 182.9 rhymebook_s2flag = 1 ENDIF ENDIF //player is insdie mansion IF rhymebook_s2flag = 1 GET_CHAR_AREA_VISIBLE scplayer mansioninterior_s2 IF mansioninterior_s2 = 5 SET_WANTED_MULTIPLIER 0.0 SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 1256.6234 -801.0125 1084.0914 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1255.9296 -801.7316 1084.0444 JUMP_CUT // SET_CHAR_COORDINATES scplayer 1299.3522 -792.6416 1083.0078 SET_CHAR_HEADING scplayer 0.0 CLEAR_AREA 1299.3522 -792.6416 200.0 200.0 FALSE REQUEST_ANIMATION CRIB REQUEST_ANIMATION VENDING REQUEST_MODEL KNIFECUR REQUEST_MODEL WBDYG1 REQUEST_MODEL WBDYG2 REQUEST_MODEL MICRO_UZI LOAD_MISSION_AUDIO 3 SOUND_VIDEO_GAME_LOOP LOAD_ALL_MODELS_NOW LOAD_SCENE 1256.6234 -801.0125 1084.0914 WHILE NOT HAS_ANIMATION_LOADED CRIB OR NOT HAS_ANIMATION_LOADED VENDING OR NOT HAS_MODEL_LOADED KNIFECUR OR NOT HAS_MODEL_LOADED WBDYG1 OR NOT REQUEST_MODEL WBDYG2 OR NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE SET_PLAYER_CONTROL PLAYER1 OFF SET_RADAR_ZOOM 100 REMOVE_BLIP rhymebook_s2blip //1st guard CREATE_CHAR PEDTYPE_MISSION1 WBDYG1 1301.98 -785.31 1083.05 guard1_s2//piano guy SET_CHAR_HAS_USED_ENTRY_EXIT guard1_s2 1298.78 -798.2 1.0 SET_FOLLOW_NODE_THRESHOLD_DISTANCE guard1_s2 2.0 SET_CHAR_HEADING guard1_s2 358.83 SET_CHAR_DECISION_MAKER guard1_s2 strap2_DM ADD_BLIP_FOR_CHAR guard1_s2 guard1_s2blip CHANGE_BLIP_DISPLAY guard1_s2blip BLIP_ONLY // SET_BLIP_ENTRY_EXIT guard1_s2blip 1298.78 -798.2 1.0 GIVE_WEAPON_TO_CHAR guard1_s2 WEAPONTYPE_MICRO_UZI 9999 SET_CHAR_ACCURACY guard1_s2 90 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD guard1_s2 FALSE SET_CHAR_AREA_VISIBLE guard1_s2 5 PRINT_NOW STP2_3 7000 1 //~s~The rhyme book is in Mad Dogg's recording studio. WAIT 2000 ////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// SKIP_CUTSCENE_START ////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// WAIT 1000 CREATE_CHAR PEDTYPE_MISSION1 WBDYG2 1249.0631 -769.8262 1083.0234 guard2_s2 SET_CHAR_HAS_USED_ENTRY_EXIT guard2_s2 1298.78 -798.2 1.0 SET_CHAR_AREA_VISIBLE guard2_s2 5 SET_CHAR_HEADING guard2_s2 270.5520 SET_FOLLOW_NODE_THRESHOLD_DISTANCE guard2_s2 5.0 SET_CHAR_DECISION_MAKER guard2_s2 strap2_DM WAIT 3500 IF NOT IS_CHAR_DEAD guard2_s2 TASK_GO_STRAIGHT_TO_COORD guard2_s2 1262.0562 -769.9772 1083.9878 PEDMOVE_WALK -1 ENDIF WAIT 500 SET_FIXED_CAMERA_POSITION 1260.7443 -769.5749 1085.2577 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1259.7814 -769.5841 1084.9878 JUMP_CUT PRINT_NOW STP2_39 7000 1 ////~r~Madd Dogg's personal security ~s~are patrolling the mansion. Do not use any guns on your way to the rhymebook - you will alert them, use stealth to steal the rhymebook. WAIT 7000 SET_NEAR_CLIP 0.1 SET_FIXED_CAMERA_POSITION 1299.5042 -793.3958 1084.6926 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1299.5894 -792.3994 1084.6846 JUMP_CUT PRINT_NOW STP2_5 7000 1 //The first guard cannot see you. This means you can sneak up to him with a melee weapon and perform a stealth kill. WAIT 7000 ////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// SKIP_CUTSCENE_END ////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// DELETE_CHAR guard2_s2 //rhyme book CREATE_PICKUP kmb_rhymesbook PICKUP_ONCE 1256.871 -801.048 1084.063 rhymebook_s2 ADD_BLIP_FOR_PICKUP rhymebook_s2 rhymebook_s2blip SET_BLIP_ENTRY_EXIT rhymebook_s2blip 1298.78 -798.2 1.0 DISABLE_ALL_ENTRY_EXITS TRUE RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_KNIFE 1 SET_PLAYER_CYCLE_WEAPON_BUTTON PLAYER1 FALSE DELETE_CAR drgcar1_s2 MARK_MODEL_AS_NO_LONGER_NEEDED HUNTLEY MARK_MODEL_AS_NO_LONGER_NEEDED STAFFORD DELETE_CAR drgcar2_s2 CLEAR_PRINTS //Walk up to him slowly so as not to make a loud noise, target him and when your arm raises press the circle button. TIMERA = 0 rhymebook_s2flag = 2 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// Player on their way through mansion //////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF pickupcollect_s2flag = 0 IF rhymebook_s2flag = 2 IF helptext_s2flag = 0 PRINT_HELP STP2_7 //The patrolling security guards are shown on the radar by the red blips which point in the direction the security guards are facing. FLASH_HUD_OBJECT HUD_FLASH_RADAR TIMERA = 0 TIMERB = 0 helptext_s2flag = 1 CHECKPOINT_SAVE 99 ENDIF IF hudflash_s2flag = 0 IF TIMERB > 5000 FLASH_HUD_OBJECT -1 hudflash_s2flag = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD guard1_s2 IF helptext_s2flag = 1 IF TIMERA > 5000 PRINT_HELP STP2_9 //Approach the guard and remain undetected. FLASH_HUD_OBJECT -1 TIMERA = 0 helptext_s2flag = 2 ENDIF ENDIF IF helptext_s2flag = 2 IF NOT IS_CHAR_DEAD guard1_s2 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer guard1_s2 5.0 5.0 FALSE OR TIMERA > 9500 TIMERA = 0 helptext_s2flag = 3 ENDIF ENDIF ENDIF IF helptext_s2flag = 3 IF TIMERA > 10000 OR IS_CHAR_PLAYING_ANIM scplayer KILL_PARTIAL OR IS_PLAYER_TARGETTING_CHAR PLAYER1 guard1_s2 PRINT_HELP STP2HID // Perform the stealth kill by moving slowly towards the guard while targeting him. Then press ~m~~attack_widget~ when your arm is raised. TIMERA = 0 helptext_s2flag = 4 ENDIF ENDIF IF helptext_s2flag = 4 IF IS_CHAR_PLAYING_ANIM scplayer KILL_PARTIAL PRINT_HELP_FOREVER STP2_11 // Press ~m~~widget_attack~ to perform the stealth kill. TIMERA = 0 helptext_s2flag = 5 ENDIF ENDIF ENDIF //swimming pool IF guard2_s2flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1290.907 -781.423 1083.59 4.3 4.3 6.0 FALSE IF IS_CHAR_DUCKING scplayer playerducking_s2flag = 1 ENDIF SET_PLAYER_CONTROL PLAYER1 OFF SWITCH_WIDESCREEN ON CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_NEAR_CLIP 0.1 CLEAR_AREA 1290.907 -781.423 100.0 100.0 FALSE CREATE_CHAR PEDTYPE_MISSION1 WBDYG2 1290.6670 -778.9339 1083.0116 guard2_s2 SET_CHAR_HAS_USED_ENTRY_EXIT guard2_s2 1298.78 -798.2 1.0 SET_CHAR_AREA_VISIBLE guard2_s2 5 SET_CHAR_HEADING guard2_s2 350.1510 SET_FOLLOW_NODE_THRESHOLD_DISTANCE guard2_s2 5.0 SET_CHAR_DECISION_MAKER guard2_s2 strap2_DM ADD_BLIP_FOR_CHAR guard2_s2 guard2_s2blip CHANGE_BLIP_DISPLAY guard2_s2blip BLIP_ONLY // SET_BLIP_ENTRY_EXIT guard2_s2blip 1298.78 -798.2 1.0 GIVE_WEAPON_TO_CHAR guard2_s2 WEAPONTYPE_MICRO_UZI 9999 SET_CHAR_ACCURACY guard2_s2 90 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD guard2_s2 FALSE FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 1289.988 -766.581 1084.063 NONE NONE EXTEND_PATROL_ROUTE 1270.314 -766.564 1084.063 ROADCROSS PED EXTEND_PATROL_ROUTE 1270.074 -782.155 1084.063 NONE NONE EXTEND_PATROL_ROUTE 1290.246 -782.463 1084.056 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE guard2_s2 PEDMOVE_WALK FOLLOW_ROUTE_LOOP SET_CHAR_COORDINATES scplayer 1297.599 -781.234 1083.0477 SET_CHAR_HEADING scplayer 89.58 SET_FIXED_CAMERA_POSITION 1291.0549 -784.5060 1084.5138 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1290.5502 -783.6482 1084.4172 JUMP_CUT ///////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// IF NOT IS_CHAR_DEAD guard1_s2 DELETE_CHAR guard1_s2 CREATE_CHAR PEDTYPE_MISSION1 WBDYG1 1304.1895 -785.871 1084.0477 guard1_s2//piano guy SET_CHAR_HAS_USED_ENTRY_EXIT guard1_s2 1298.78 -798.2 1.0 SET_CHAR_AREA_VISIBLE guard1_s2 5 SET_FOLLOW_NODE_THRESHOLD_DISTANCE guard1_s2 2.0 SET_CHAR_HEADING guard1_s2 311.2134 SET_CHAR_DECISION_MAKER guard1_s2 strap2_DM ADD_BLIP_FOR_CHAR guard1_s2 guard1_s2blip CHANGE_BLIP_DISPLAY guard1_s2blip BLIP_ONLY // SET_BLIP_ENTRY_EXIT guard1_s2blip 1298.78 -798.2 1.0 GIVE_WEAPON_TO_CHAR guard1_s2 WEAPONTYPE_MICRO_UZI 9999 SET_CHAR_ACCURACY guard1_s2 90 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD guard1_s2 FALSE ENDIF ///////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// PRINT_NOW STP2_13 6000 1 //A guard is patrolling the swimming pool area. Observing his route will allow you to plan how to get past him or kill him undetected. WAIT 2000 /////////////////////////////////////////////////////////////////////// SKIP_CUTSCENE_START /////////////////////////////////////////////////////////////////////// WAIT 4000 /////////////////////////////////////////////////////////////////////// SKIP_CUTSCENE_END /////////////////////////////////////////////////////////////////////// RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL PLAYER1 ON IF playerducking_s2flag = 1 TASK_TOGGLE_DUCK scplayer TRUE ENDIF playerducking_s2flag = 0 SWITCH_WIDESCREEN OFF PRINT_NOW STP2_14 5000 1 //There are lots of shadows in this area to hide in. Hiding in shadows makes it difficult for a guard to spot you. TIMERA = 0 TIMERB = 0 guard2_s2flag = 1 helptext_s2flag = 6 ENDIF ENDIF IF helptext_s2flag = 6 IF TIMERA > 5000 helptext_s2flag = 7 ENDIF ENDIF //changing room area IF guard3_s2flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1260.104 -769.51 1083.06 5.0 5.0 6.0 FALSE IF IS_CHAR_DUCKING scplayer playerducking_s2flag = 1 ENDIF SET_PLAYER_CONTROL PLAYER1 OFF SWITCH_WIDESCREEN ON CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_PRINTS CLEAR_AREA 1260.104 -769.51 100.0 100.0 FALSE CREATE_CHAR PEDTYPE_MISSION1 WBDYG2 1249.598 -780.06 1083.063 guard3_s2 SET_CHAR_HAS_USED_ENTRY_EXIT guard3_s2 1298.78 -798.2 1.0 SET_CHAR_AREA_VISIBLE guard3_s2 5 SET_CHAR_ACCURACY guard3_s2 90 SET_CHAR_HEADING guard3_s2 355.188 SET_FOLLOW_NODE_THRESHOLD_DISTANCE guard3_s2 5.0 SET_CHAR_DECISION_MAKER guard3_s2 strap2_DM TASK_GO_STRAIGHT_TO_COORD guard3_s2 1250.092 -769.277 1083.064 PEDMOVE_WALK -1 SET_FIXED_CAMERA_POSITION 1249.8562 -766.8402 1084.7775 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1249.8140 -767.8293 1084.6366 JUMP_CUT SET_CHAR_COORDINATES scplayer 1266.494 -769.705 1083.06 SET_CHAR_HEADING scplayer 92.259 /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// IF NOT IS_CHAR_DEAD guard2_s2 DELETE_CHAR guard2_s2 //delete guard CREATE_CHAR PEDTYPE_MISSION1 WBDYG2 1290.6670 -778.9339 1083.0116 guard2_s2 SET_CHAR_HAS_USED_ENTRY_EXIT guard2_s2 1298.78 -798.2 1.0 SET_CHAR_HEADING guard2_s2 350.1510 SET_FOLLOW_NODE_THRESHOLD_DISTANCE guard2_s2 2.0 SET_CHAR_DECISION_MAKER guard2_s2 strap2_DM ADD_BLIP_FOR_CHAR guard2_s2 guard2_s2blip CHANGE_BLIP_DISPLAY guard2_s2blip BLIP_ONLY // SET_BLIP_ENTRY_EXIT guard2_s2blip 1298.78 -798.2 1.0 GIVE_WEAPON_TO_CHAR guard2_s2 WEAPONTYPE_MICRO_UZI 9999 SET_CHAR_ACCURACY guard2_s2 90 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD guard2_s2 FALSE FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 1289.988 -766.581 1084.063 NONE NONE EXTEND_PATROL_ROUTE 1270.314 -766.564 1084.063 ROADCROSS PED EXTEND_PATROL_ROUTE 1270.074 -782.155 1084.063 NONE NONE EXTEND_PATROL_ROUTE 1290.246 -782.463 1084.056 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE guard2_s2 PEDMOVE_WALK FOLLOW_ROUTE_LOOP ENDIF /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// PRINT_NOW STP2_15 3000 1//~s~A guard is coming. WAIT 2000 /////////////////////////////////////////////////////////////////////// SKIP_CUTSCENE_START /////////////////////////////////////////////////////////////////////// WAIT 1000 PRINT_NOW STP2_16 4000 1//~s~Find a suitable place to hide before he spots you. SET_FIXED_CAMERA_POSITION 1267.4048 -769.6973 1084.6667 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1266.4120 -769.6685 1084.5508 JUMP_CUT IF NOT IS_CHAR_DEAD guard3_s2 SET_CHAR_COORDINATES guard3_s2 1249.598 -780.06 1083.063 SET_CHAR_HEADING guard3_s2 355.188 ENDIF WAIT 2000 POINT_CAMERA_AT_POINT 1266.9119 -770.5618 1084.5688 INTERPOLATION WAIT 2000 /////////////////////////////////////////////////////////////////////// SKIP_CUTSCENE_END /////////////////////////////////////////////////////////////////////// DELETE_CHAR guard3_s2 CREATE_CHAR PEDTYPE_MISSION1 WBDYG2 1249.634 -781.405 1083.5 guard3_s2 SET_CHAR_HAS_USED_ENTRY_EXIT guard3_s2 1298.78 -798.2 1.0 SET_CHAR_AREA_VISIBLE guard3_s2 5 SET_CHAR_HEADING guard3_s2 357.273 ADD_BLIP_FOR_CHAR guard3_s2 guard3_s2blip CHANGE_BLIP_DISPLAY guard3_s2blip BLIP_ONLY // SET_BLIP_ENTRY_EXIT guard3_s2blip 1298.78 -798.2 1.0 SET_FOLLOW_NODE_THRESHOLD_DISTANCE guard3_s2 5.0 SET_CHAR_DECISION_MAKER guard3_s2 strap2_DM OPEN_SEQUENCE_TASK guard3_s2seq TASK_FOLLOW_PATH_NODES_TO_COORD -1 1267.96 -769.792 1084.06 PEDMOVE_WALK -2 SET_SEQUENCE_TO_REPEAT guard3_s2seq 1 CLOSE_SEQUENCE_TASK guard3_s2seq PERFORM_SEQUENCE_TASK guard3_s2 guard3_s2seq CLEAR_SEQUENCE_TASK guard3_s2seq GIVE_WEAPON_TO_CHAR guard3_s2 WEAPONTYPE_MICRO_UZI 50 SET_CHAR_ACCURACY guard3_s2 90 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD guard3_s2 FALSE RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON IF playerducking_s2flag = 1 TASK_TOGGLE_DUCK scplayer TRUE ENDIF playerducking_s2flag = 0 CLEAR_PRINTS PRINT_HELP STP2_41 //If the white blip on the radar that represents your position turns blue it indicates that you are in the shadows and are hidden from patrolling guards. guard3_s2flag = 1 ENDIF ENDIF // lounge and bar area IF guard4_s2flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1249.466 -789.487 1083.0635 7.5 7.5 6.0 FALSE IF HAS_MISSION_AUDIO_LOADED 3 SET_MISSION_AUDIO_POSITION 3 1276.31 -793.92 1084.12 PLAY_MISSION_AUDIO 3 ENDIF IF IS_CHAR_DUCKING scplayer playerducking_s2flag = 1 ENDIF SET_PLAYER_CONTROL PLAYER1 OFF SWITCH_WIDESCREEN ON CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_AREA 1249.466 -789.487 100.0 100.0 FALSE SET_CHAR_COORDINATES scplayer 1249.825 -780.682 1083.06 SET_CHAR_HEADING scplayer 180.659 CLEAR_PRINTS //drink guy CREATE_CHAR PEDTYPE_MISSION1 WBDYG2 1258.2712 -793.395 1083.289 guard4_s2 SET_CHAR_HAS_USED_ENTRY_EXIT guard4_s2 1298.78 -798.2 1.0 SET_CHAR_AREA_VISIBLE guard4_s2 5 SET_CHAR_HEADING guard4_s2 354.328 ADD_BLIP_FOR_CHAR guard4_s2 guard4_s2blip CHANGE_BLIP_DISPLAY guard4_s2blip BLIP_ONLY // SET_BLIP_ENTRY_EXIT guard4_s2blip 1298.78 -798.2 1.0 SET_FOLLOW_NODE_THRESHOLD_DISTANCE guard4_s2 5.0 SET_CHAR_DECISION_MAKER guard4_s2 strap2_DM SET_CHAR_DROPS_WEAPONS_WHEN_DEAD guard4_s2 FALSE CREATE_OBJECT_NO_OFFSET CJ_JUICE_CAN 1258.25 -792.64 1084.16 drink_s2 GET_MODEL_DIMENSIONS CJ_JUICE_CAN x y z x y z y /= 2.0 y += 0.027 //console CREATE_CHAR PEDTYPE_MISSION1 WBDYG1 1276.795 -792.368 1083.055 guard5_s2 SET_CHAR_HAS_USED_ENTRY_EXIT guard5_s2 1298.78 -798.2 1.0 SET_CHAR_ACCURACY guard5_s2 100 SET_CHAR_AREA_VISIBLE guard5_s2 5 SET_CHAR_HEADING guard5_s2 180.0 SET_CHAR_DECISION_MAKER guard5_s2 strap2_DM IF NOT IS_CHAR_DEAD guard4_s2 OPEN_SEQUENCE_TASK drinkvend_s2seq TASK_PICK_UP_OBJECT -1 drink_s2 0.062 y 0.0 PED_HANDL HOLD_ORIENTATE_BONE_FULL VEND_USE_PT2 VENDING FALSE//-0.05 0.15 0.0 TASK_PICK_UP_OBJECT -1 drink_s2 0.062 y 0.0 PED_HANDL HOLD_ORIENTATE_BONE_FULL VEND_DRINK2_P VENDING FALSE//-0.05 0.15 0.0 CLOSE_SEQUENCE_TASK drinkvend_s2seq PERFORM_SEQUENCE_TASK guard4_s2 drinkvend_s2seq CLEAR_SEQUENCE_TASK drinkvend_s2seq ENDIF //drinking at bar SET_FIXED_CAMERA_POSITION 1251.8201 -788.3540 1084.5016 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1252.4631 -789.1154 1084.4197 JUMP_CUT PRINT_NOW STP2_19 5000 1 //~s~If you walk straight past the guard here he will see you try crouching and walking past the bar to remain out of his line of sight. ////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// IF NOT IS_CHAR_DEAD guard2_s2 DELETE_CHAR guard2_s2 //delete guard CREATE_CHAR PEDTYPE_MISSION1 WBDYG2 1290.6670 -778.9339 1083.0116 guard2_s2 SET_CHAR_HAS_USED_ENTRY_EXIT guard2_s2 1298.78 -798.2 1.0 SET_CHAR_HEADING guard2_s2 350.1510 SET_FOLLOW_NODE_THRESHOLD_DISTANCE guard2_s2 2.0 SET_CHAR_DECISION_MAKER guard2_s2 strap2_DM ADD_BLIP_FOR_CHAR guard2_s2 guard2_s2blip CHANGE_BLIP_DISPLAY guard2_s2blip BLIP_ONLY // SET_BLIP_ENTRY_EXIT guard2_s2blip 1298.78 -798.2 1.0 GIVE_WEAPON_TO_CHAR guard2_s2 WEAPONTYPE_MICRO_UZI 9999 SET_CHAR_ACCURACY guard2_s2 100 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD guard2_s2 FALSE FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 1289.988 -766.581 1084.063 NONE NONE EXTEND_PATROL_ROUTE 1270.314 -766.564 1084.063 ROADCROSS PED EXTEND_PATROL_ROUTE 1270.074 -782.155 1084.063 NONE NONE EXTEND_PATROL_ROUTE 1290.246 -782.463 1084.056 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE guard2_s2 PEDMOVE_WALK FOLLOW_ROUTE_LOOP ENDIF IF NOT IS_CHAR_DEAD guard3_s2 DELETE_CHAR guard3_s2 //delete guard CREATE_CHAR PEDTYPE_MISSION1 WBDYG2 1267.96 -769.792 1084.06 guard3_s2 SET_CHAR_HAS_USED_ENTRY_EXIT guard3_s2 1298.78 -798.2 1.0 SET_CHAR_HEADING guard3_s2 0.141 ADD_BLIP_FOR_CHAR guard3_s2 guard3_s2blip CHANGE_BLIP_DISPLAY guard3_s2blip BLIP_ONLY // SET_BLIP_ENTRY_EXIT guard3_s2blip 1298.78 -798.2 1.0 SET_FOLLOW_NODE_THRESHOLD_DISTANCE guard3_s2 5.0 SET_CHAR_DECISION_MAKER guard3_s2 strap2_DM GIVE_WEAPON_TO_CHAR guard3_s2 WEAPONTYPE_MICRO_UZI 50 SET_CHAR_ACCURACY guard3_s2 100 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD guard3_s2 FALSE ENDIF ////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// WAIT 1750 /////////////////////////////////////////////////////////////////////// SKIP_CUTSCENE_START /////////////////////////////////////////////////////////////////////// WAIT 2000 //console gamers IF NOT IS_CHAR_DEAD guard5_s2 TASK_PLAY_ANIM guard5_s2 PED_CONSOLE_LOOP CRIB 4.0 TRUE FALSE FALSE FALSE -1 START_CHAR_FACIAL_TALK guard5_s2 10000 ENDIF WAIT 500 SET_FIXED_CAMERA_POSITION 1274.9828 -790.5506 1084.0632 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1275.5747 -791.3560 1084.0349 JUMP_CUT PRINT_NOW ( LOC2_BA ) 4000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE //tv view SET_FIXED_CAMERA_POSITION 1276.3011 -794.5306 1084.2312 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1276.2915 -793.5345 1084.1427 JUMP_CUT PRINT_NOW ( LOC2_BB ) 4000 1 PLAY_MISSION_AUDIO 2 IF NOT IS_CHAR_DEAD guard5_s2 OPEN_SEQUENCE_TASK console_s2seq TASK_PLAY_ANIM -1 PED_CONSOLE_LOOSE CRIB 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 PED_CONSOLE_LOOP CRIB 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK console_s2seq PERFORM_SEQUENCE_TASK guard5_s2 console_s2seq CLEAR_SEQUENCE_TASK console_s2seq ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 ENDWHILE /////////////////////////////////////////////////////////////////////// SKIP_CUTSCENE_END /////////////////////////////////////////////////////////////////////// DELETE_CHAR guard4_s2 DELETE_CHAR guard5_s2 CREATE_CHAR PEDTYPE_MISSION1 WBDYG2 1258.2712 -793.395 1083.289 guard4_s2 // SET_CHAR_HAS_USED_ENTRY_EXIT guard4_s2 1298.78 -798.2 1.0 SET_CHAR_HEADING guard4_s2 354.328 // TASK_PLAY_ANIM guard4_s2 ATM PED 4.0 TRUE FALSE FALSE FALSE -1 ADD_BLIP_FOR_CHAR guard4_s2 guard4_s2blip CHANGE_BLIP_DISPLAY guard4_s2blip BLIP_ONLY // SET_BLIP_ENTRY_EXIT guard4_s2blip 1298.78 -798.2 1.0 SET_CHAR_DECISION_MAKER guard4_s2 strap2_DM SET_CHAR_DROPS_WEAPONS_WHEN_DEAD guard4_s2 FALSE GIVE_WEAPON_TO_CHAR guard4_s2 WEAPONTYPE_MICRO_UZI 5000 SET_CHAR_ACCURACY guard4_s2 100 SET_INFORM_RESPECTED_FRIENDS guard4_s2 5.0 1 //console CREATE_CHAR PEDTYPE_MISSION1 WBDYG1 1276.795 -792.368 1083.055 guard5_s2 SET_CHAR_HAS_USED_ENTRY_EXIT guard5_s2 1298.78 -798.2 1.0 SET_CHAR_HEADING guard5_s2 180.0 SET_CHAR_DECISION_MAKER guard5_s2 strap2_DM SET_CHAR_DROPS_WEAPONS_WHEN_DEAD guard5_s2 FALSE GIVE_WEAPON_TO_CHAR guard5_s2 WEAPONTYPE_MICRO_UZI 5000 ADD_BLIP_FOR_CHAR guard5_s2 guard5_s2blip CHANGE_BLIP_DISPLAY guard5_s2blip BLIP_ONLY // SET_BLIP_ENTRY_EXIT guard5_s2blip 1298.78 -798.2 1.0 SET_CHAR_ACCURACY guard5_s2 100 SET_INFORM_RESPECTED_FRIENDS guard5_s2 5.0 1 CREATE_CHAR PEDTYPE_MISSION1 WBDYG2 1262.533 -805.139 1083.0555 guard7_s2 SET_CHAR_HAS_USED_ENTRY_EXIT guard7_s2 1298.78 -798.2 1.0 SET_CHAR_HEADING guard7_s2 359.265 SET_CHAR_DECISION_MAKER guard7_s2 strap2_DM ADD_BLIP_FOR_CHAR guard7_s2 guard7_s2blip CHANGE_BLIP_DISPLAY guard7_s2blip BLIP_ONLY // SET_BLIP_ENTRY_EXIT guard7_s2blip 1298.78 -798.2 1.0 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD guard7_s2 FALSE GIVE_WEAPON_TO_CHAR guard7_s2 WEAPONTYPE_MICRO_UZI 5555 SET_CHAR_ACCURACY guard7_s2 100 IF NOT IS_CHAR_DEAD guard5_s2 TASK_PLAY_ANIM guard5_s2 PED_CONSOLE_LOOP CRIB 4.0 TRUE FALSE FALSE FALSE -1 ENDIF CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON IF playerducking_s2flag = 1 TASK_TOGGLE_DUCK scplayer TRUE ENDIF playerducking_s2flag = 0 TIMERA = 0 TIMERB = 0 helptext_s2flag = 9 PRINT_HELP STP2_36 //Press ~h~L3 ~h~ to crouch. You can walk while crouched allowing you to move quietly and reduce the chances of you being spotted. guard4_s2flag = 1 ENDIF ENDIF IF guard4_s2flag = 1 GET_CHAR_SPEED scplayer x IF NOT IS_CHAR_DEAD guard4_s2 IF IS_CHAR_IN_AREA_3D scplayer 1246.77 -785.08 1083.26 1255.87 -797.69 1090.0 FALSE OR x > 0.0 SET_CHAR_HEADING guard4_s2 168.503 OPEN_SEQUENCE_TASK guard4_s2seq TASK_GO_STRAIGHT_TO_COORD -1 1256.29 -795.6 1084.289 PEDMOVE_WALK -1 TASK_PLAY_ANIM -1 ATM PED 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK guard4_s2seq PERFORM_SEQUENCE_TASK guard4_s2 guard4_s2seq CLEAR_SEQUENCE_TASK guard4_s2seq guard4_s2flag = 2 ENDIF ENDIF ENDIF IF HAS_PICKUP_BEEN_COLLECTED rhymebook_s2 //you now have the rhyme book get it back to burger shot //Use the skills you have learned to get past the remaining guards patrolling the mansion. REMOVE_BLIP rhymebook_s2blip ADD_BLIP_FOR_COORD 1298.74 -797.46 1083.4 rhymebook_s2blip IF IS_PLAYER_PLAYING PLAYER1 SET_PLAYER_CYCLE_WEAPON_BUTTON PLAYER1 TRUE ENDIF SET_BLIP_ENTRY_EXIT rhymebook_s2blip 1298.78 -798.2 1.0 PRINT_NOW STP2_40 7000 1 //~y~Exit ~s~the mansion and get the rhymebook back to OG loc. Its safe to use your weapons now, although it may be less risky if you use stealth to get past any ~r~guards ~s~on patrol. TIMERA = 0 TIMERB = 0 rhymebook_s2flag = 3 pickupcollect_s2flag = 1 ENDIF IF IS_CHAR_DEAD guard1_s2 IF DOES_BLIP_EXIST guard1_s2blip REMOVE_BLIP guard1_s2blip ENDIF ENDIF IF IS_CHAR_DEAD guard2_s2 IF DOES_BLIP_EXIST guard2_s2blip REMOVE_BLIP guard2_s2blip ENDIF ENDIF IF IS_CHAR_DEAD guard3_s2 IF DOES_BLIP_EXIST guard3_s2blip REMOVE_BLIP guard3_s2blip ENDIF ENDIF IF IS_CHAR_DEAD guard4_s2 IF DOES_BLIP_EXIST guard4_s2blip REMOVE_BLIP guard4_s2blip ENDIF ENDIF IF IS_CHAR_DEAD guard5_s2 IF DOES_BLIP_EXIST guard5_s2blip REMOVE_BLIP guard5_s2blip ENDIF ENDIF IF IS_CHAR_DEAD guard7_s2 IF DOES_BLIP_EXIST guard7_s2blip REMOVE_BLIP guard7_s2blip ENDIF ENDIF // //stealth dialogue // IF NOT IS_CHAR_DEAD guard2_s2 // enemy_s2 = guard2_s2 // playerseenstate_s2 = guard2playerseenstate_s2 // GOSUB alertstate_s2label // guard2playerseenstate_s2 = playerseenstate_s2 // ENDIF // // IF NOT IS_CHAR_DEAD guard3_s2 // enemy_s2 = guard3_s2 // playerseenstate_s2 = guard3playerseenstate_s2 // GOSUB alertstate_s2label // guard3playerseenstate_s2 = playerseenstate_s2 // ENDIF // // IF NOT IS_CHAR_DEAD guard4_s2 // enemy_s2 = guard4_s2 // playerseenstate_s2 = guard4playerseenstate_s2 // GOSUB alertstate_s2label // guard4playerseenstate_s2 = playerseenstate_s2 // ENDIF // // IF NOT IS_CHAR_DEAD guard5_s2 // enemy_s2 = guard5_s2 // playerseenstate_s2 = guard5playerseenstate_s2 // GOSUB alertstate_s2label // guard5playerseenstate_s2 = playerseenstate_s2 // ENDIF // // IF NOT IS_CHAR_DEAD guard7_s2 // enemy_s2 = guard7_s2 // playerseenstate_s2 = guard7playerseenstate_s2 // GOSUB alertstate_s2label // guard7playerseenstate_s2 = playerseenstate_s2 // ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// Player on their way out mansion //////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF rhymebook_s2flag = 3 IF pickupcollect_s2flag = 1 DISABLE_ALL_ENTRY_EXITS FALSE CREATE_PICKUP_WITH_AMMO silenced PICKUP_ONCE 30 1237.4177 -808.5872 1084.09 pickupgun_s2 //silenced pistol, office //text - some of the guards are using //if not console guys are dead create him //if not bar guy is dead create him DELETE_CHAR guard1_s2 DELETE_CHAR guard2_s2 DELETE_CHAR guard3_s2 CREATE_CHAR PEDTYPE_MISSION1 WBDYG1 1243.53 -812.19 1083.04 guard1_s2 //investigator SET_CHAR_HAS_USED_ENTRY_EXIT guard1_s2 1298.78 -798.2 1.0 SET_CHAR_HEADING guard1_s2 270.948 SET_CHAR_DECISION_MAKER guard1_s2 strap2_DM ADD_BLIP_FOR_CHAR guard1_s2 guard1_s2blip CHANGE_BLIP_DISPLAY guard1_s2blip BLIP_ONLY // SET_BLIP_ENTRY_EXIT guard1_s2blip 1298.78 -798.2 1.0 GIVE_WEAPON_TO_CHAR guard1_s2 WEAPONTYPE_PISTOL_SILENCED 99999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE guard1_s2 2.0 TASK_FOLLOW_PATH_NODES_TO_COORD guard1_s2 1270.694 -802.518 1084.05 PEDMOVE_WALK -2 SET_INFORM_RESPECTED_FRIENDS guard1_s2 10.0 1 SET_CHAR_ACCURACY guard1_s2 100 CREATE_CHAR PEDTYPE_MISSION1 WBDYG2 1280.02 -789.01 1083.05 guard2_s2 //outside recording room SET_CHAR_HAS_USED_ENTRY_EXIT guard2_s2 1298.78 -798.2 1.0 SET_CHAR_HEADING guard2_s2 91.837 SET_CHAR_DECISION_MAKER guard2_s2 strap2_DM ADD_BLIP_FOR_CHAR guard2_s2 guard2_s2blip CHANGE_BLIP_DISPLAY guard2_s2blip BLIP_ONLY // SET_BLIP_ENTRY_EXIT guard2_s2blip 1298.78 -798.2 1.0 GIVE_WEAPON_TO_CHAR guard2_s2 WEAPONTYPE_PISTOL_SILENCED 99999 SET_INFORM_RESPECTED_FRIENDS guard2_s2 5.0 1 SET_CHAR_ACCURACY guard2_s2 100 CREATE_CHAR PEDTYPE_MISSION1 WBDYG1 1249.768 -780.616 1084.063 guard6_s2 //corridor and changing rooms SET_CHAR_HAS_USED_ENTRY_EXIT guard6_s2 1298.78 -798.2 1.0 SET_CHAR_HEADING guard6_s2 3.43 ADD_BLIP_FOR_CHAR guard6_s2 guard6_s2blip CHANGE_BLIP_DISPLAY guard6_s2blip BLIP_ONLY // SET_BLIP_ENTRY_EXIT guard6_s2blip 1298.78 -798.2 1.0 SET_CHAR_DECISION_MAKER guard6_s2 strap2_DM GIVE_WEAPON_TO_CHAR guard6_s2 WEAPONTYPE_PISTOL_SILENCED 99999 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 1249.799 -769.679 1084.063 ROADCROSS PED EXTEND_PATROL_ROUTE 1267.62 -769.651 1084.06 NONE NONE EXTEND_PATROL_ROUTE 1249.799 -769.679 1084.063 NONE NONE EXTEND_PATROL_ROUTE 1249.768 -780.616 1084.063 NONE NONE TASK_FOLLOW_PATROL_ROUTE guard6_s2 PEDMOVE_WALK FOLLOW_ROUTE_LOOP SET_INFORM_RESPECTED_FRIENDS guard6_s2 15.0 2 IF NOT IS_CHAR_DEAD guard5_s2 DELETE_CHAR guard5_s2 CREATE_CHAR PEDTYPE_MISSION1 WBDYG1 1276.795 -792.368 1083.055 guard5_s2 //console gaming SET_CHAR_HAS_USED_ENTRY_EXIT guard5_s2 1298.78 -798.2 1.0 SET_CHAR_HEADING guard5_s2 180.0 SET_CHAR_DECISION_MAKER guard5_s2 strap2empty_DM GIVE_WEAPON_TO_CHAR guard5_s2 WEAPONTYPE_PISTOL_SILENCED 99999 ADD_BLIP_FOR_CHAR guard5_s2 guard5_s2blip CHANGE_BLIP_DISPLAY guard5_s2blip BLIP_ONLY // SET_BLIP_ENTRY_EXIT guard5_s2blip 1298.78 -798.2 1.0 TASK_PLAY_ANIM guard5_s2 PED_CONSOLE_LOOP CRIB 4.0 TRUE FALSE FALSE FALSE -1 SET_INFORM_RESPECTED_FRIENDS guard5_s2 20.0 1 ELSE REMOVE_CHAR_ELEGANTLY guard5_s2 CREATE_CHAR PEDTYPE_MISSION1 WBDYG1 1270.616 -792.298 1084.047 guard5_s2 //console gaming SET_CHAR_HAS_USED_ENTRY_EXIT guard5_s2 1298.78 -798.2 1.0 SET_CHAR_HEADING guard5_s2 186.126 SET_CHAR_DECISION_MAKER guard5_s2 strap2empty_DM GIVE_WEAPON_TO_CHAR guard5_s2 WEAPONTYPE_PISTOL_SILENCED 99999 ADD_BLIP_FOR_CHAR guard5_s2 guard5_s2blip CHANGE_BLIP_DISPLAY guard5_s2blip BLIP_ONLY // SET_BLIP_ENTRY_EXIT guard5_s2blip 1298.78 -798.2 1.0 TASK_SIT_DOWN guard5_s2 400000 SET_INFORM_RESPECTED_FRIENDS guard5_s2 20.0 1 ENDIF IF NOT IS_CHAR_DEAD guard4_s2 DELETE_CHAR guard4_s2 CREATE_CHAR PEDTYPE_MISSION1 WBDYG2 1256.492 -795.662 1084.282 guard4_s2 SET_CHAR_HAS_USED_ENTRY_EXIT guard4_s2 1298.78 -798.2 1.0 SET_CHAR_HEADING guard4_s2 186.842 TASK_PLAY_ANIM guard4_s2 ATM PED 4.0 TRUE FALSE FALSE FALSE -1 ADD_BLIP_FOR_CHAR guard4_s2 guard4_s2blip CHANGE_BLIP_DISPLAY guard4_s2blip BLIP_ONLY // SET_BLIP_ENTRY_EXIT guard4_s2blip 1298.78 -798.2 1.0 SET_CHAR_DECISION_MAKER guard4_s2 strap2empty_DM GIVE_WEAPON_TO_CHAR guard4_s2 WEAPONTYPE_PISTOL_SILENCED 99999 SET_INFORM_RESPECTED_FRIENDS guard4_s2 10.0 1 ELSE REMOVE_CHAR_ELEGANTLY guard4_s2 CREATE_CHAR PEDTYPE_MISSION1 WBDYG2 1252.99 -795.461 1083.282 guard4_s2 SET_CHAR_HAS_USED_ENTRY_EXIT guard4_s2 1298.78 -798.2 1.0 SET_CHAR_HEADING guard4_s2 186.842 TASK_PLAY_ANIM guard4_s2 ATM PED 4.0 TRUE FALSE FALSE FALSE -1 ADD_BLIP_FOR_CHAR guard4_s2 guard4_s2blip CHANGE_BLIP_DISPLAY guard4_s2blip BLIP_ONLY // SET_BLIP_ENTRY_EXIT guard4_s2blip 1298.78 -798.2 1.0 SET_CHAR_DECISION_MAKER guard4_s2 strap2empty_DM GIVE_WEAPON_TO_CHAR guard4_s2 WEAPONTYPE_PISTOL_SILENCED 99999 SET_INFORM_RESPECTED_FRIENDS guard4_s2 10.0 1 ENDIF CREATE_CHAR PEDTYPE_MISSION1 WBDYG2 1290.6670 -778.9339 1083.0116 guard8_s2 //swimming pool SET_CHAR_HAS_USED_ENTRY_EXIT guard8_s2 1298.78 -798.2 1.0 SET_CHAR_HEADING guard8_s2 350.1510 SET_FOLLOW_NODE_THRESHOLD_DISTANCE guard8_s2 5.0 SET_CHAR_DECISION_MAKER guard8_s2 strap2empty_DM ADD_BLIP_FOR_CHAR guard8_s2 guard8_s2blip CHANGE_BLIP_DISPLAY guard8_s2blip BLIP_ONLY // SET_BLIP_ENTRY_EXIT guard8_s2blip 1298.78 -798.2 1.0 GIVE_WEAPON_TO_CHAR guard8_s2 WEAPONTYPE_PISTOL_SILENCED 5000 SET_CHAR_ACCURACY guard8_s2 100 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 1289.988 -766.581 1084.063 NONE NONE EXTEND_PATROL_ROUTE 1270.314 -766.564 1084.063 ROADCROSS PED EXTEND_PATROL_ROUTE 1270.074 -782.155 1084.063 NONE NONE EXTEND_PATROL_ROUTE 1290.246 -782.463 1084.056 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE guard8_s2 PEDMOVE_WALK FOLLOW_ROUTE_LOOP guard8_s2flag = 0 pickupcollect_s2flag = 2 ENDIF IF bararea_s2flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1282.61 -787.389 1084.0635 6.0 6.0 6.0 FALSE IF NOT IS_CHAR_DEAD guard4_s2 SET_CHAR_DECISION_MAKER guard4_s2 strap2_DM ENDIF IF NOT IS_CHAR_DEAD guard5_s2 SET_CHAR_DECISION_MAKER guard5_s2 strap2_DM ENDIF bararea_s2flag = 1 ENDIF ENDIF IF guard8_s2flag = 0 IF LOCATE_CHAR_ON_FOOT_3D scplayer 1249.61 -772.86 1083.46 7.0 7.0 5.0 FALSE IF NOT IS_CHAR_DEAD guard8_s2 SET_CHAR_DECISION_MAKER guard8_s2 strap2_DM guard8_s2flag = 1 ENDIF ENDIF ENDIF IF pickupcollect_s2flag > 0 IF helptext_s2flag = 9 IF TIMERA > 8500 PRINT_HELP STP2_33 //The guards are using silenced guns if you manage to obtain one they will allow you to fire a gun without being heard by nearby guards. helptext_s2flag = 10 ENDIF ENDIF ENDIF // GET_AREA_VISIBLE mansioninterior_s2 GET_CHAR_AREA_VISIBLE scplayer mansioninterior_s2 IF mansioninterior_s2 = 0 REMOVE_BLIP rhymebook_s2blip WHILE NOT GET_FADING_STATUS WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer 1299.664 -800.546 83.148 SET_CHAR_HEADING scplayer 271.284 SET_CAMERA_BEHIND_PLAYER pickupcollect_s2flag = 2 rhymebook_s2flag = 4 ENDIF IF IS_CHAR_DEAD guard1_s2 IF DOES_BLIP_EXIST guard1_s2blip REMOVE_BLIP guard1_s2blip ENDIF ENDIF IF IS_CHAR_DEAD guard2_s2 IF DOES_BLIP_EXIST guard2_s2blip REMOVE_BLIP guard2_s2blip ENDIF ENDIF IF IS_CHAR_DEAD guard3_s2 IF DOES_BLIP_EXIST guard3_s2blip REMOVE_BLIP guard3_s2blip ENDIF ENDIF IF IS_CHAR_DEAD guard4_s2 IF DOES_BLIP_EXIST guard4_s2blip REMOVE_BLIP guard4_s2blip ENDIF ENDIF IF IS_CHAR_DEAD guard5_s2 IF DOES_BLIP_EXIST guard5_s2blip REMOVE_BLIP guard5_s2blip ENDIF ENDIF IF IS_CHAR_DEAD guard6_s2 IF DOES_BLIP_EXIST guard6_s2blip REMOVE_BLIP guard6_s2blip ENDIF ENDIF IF IS_CHAR_DEAD guard7_s2 IF DOES_BLIP_EXIST guard7_s2blip REMOVE_BLIP guard7_s2blip ENDIF ENDIF IF IS_CHAR_DEAD guard8_s2 IF DOES_BLIP_EXIST guard8_s2blip REMOVE_BLIP guard8_s2blip ENDIF ENDIF // //stealth dialogue // IF NOT IS_CHAR_DEAD guard2_s2 // enemy_s2 = guard2_s2 // playerseenstate_s2 = guard2playerseenstate_s2 // GOSUB alertstate_s2label // guard2playerseenstate_s2 = playerseenstate_s2 // ENDIF // // IF NOT IS_CHAR_DEAD guard3_s2 // enemy_s2 = guard3_s2 // playerseenstate_s2 = guard3playerseenstate_s2 // GOSUB alertstate_s2label // guard3playerseenstate_s2 = playerseenstate_s2 // ENDIF // // IF NOT IS_CHAR_DEAD guard4_s2 // enemy_s2 = guard4_s2 // playerseenstate_s2 = guard4playerseenstate_s2 // GOSUB alertstate_s2label // guard4playerseenstate_s2 = playerseenstate_s2 // ENDIF // // IF NOT IS_CHAR_DEAD guard5_s2 // enemy_s2 = guard5_s2 // playerseenstate_s2 = guard5playerseenstate_s2 // GOSUB alertstate_s2label // guard5playerseenstate_s2 = playerseenstate_s2 // ENDIF // // IF NOT IS_CHAR_DEAD guard6_s2 // enemy_s2 = guard6_s2 // playerseenstate_s2 = guard6playerseenstate_s2 // GOSUB alertstate_s2label // guard6playerseenstate_s2 = playerseenstate_s2 // ENDIF // // IF NOT IS_CHAR_DEAD guard7_s2 // enemy_s2 = guard7_s2 // playerseenstate_s2 = guard7playerseenstate_s2 // GOSUB alertstate_s2label // guard7playerseenstate_s2 = playerseenstate_s2 // ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////// Outside Mansion //////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF pickupcollect_s2flag = 2 IF rhymebook_s2flag = 4 ADD_BLIP_FOR_COORD 790.0 -1631.0 12.43 rhymebook_s2blip CLEAR_MISSION_AUDIO 3 CREATE_CAR MTBIKE 1306.718 -797.24 83.66 mtbike_s2 SET_CAR_HEADING mtbike_s2 206.253 DELETE_CHAR guard1_s2 DELETE_CHAR guard2_s2 DELETE_CHAR guard3_s2 DELETE_CHAR guard4_s2 DELETE_CHAR guard5_s2 DELETE_CHAR guard6_s2 DELETE_CHAR guard7_s2 REMOVE_BLIP guard1_s2blip REMOVE_BLIP guard2_s2blip REMOVE_BLIP guard3_s2blip REMOVE_BLIP guard4_s2blip REMOVE_BLIP guard5_s2blip REMOVE_BLIP guard6_s2blip REMOVE_BLIP guard7_s2blip MARK_MODEL_AS_NO_LONGER_NEEDED WBDYG1 MARK_MODEL_AS_NO_LONGER_NEEDED WBDYG2 MARK_MODEL_AS_NO_LONGER_NEEDED HUNTLEY MARK_MODEL_AS_NO_LONGER_NEEDED STAFFORD MARK_MODEL_AS_NO_LONGER_NEEDED KMB_RHYMESBOOK MARK_MODEL_AS_NO_LONGER_NEEDED CJ_JUICE_CAN MARK_MODEL_AS_NO_LONGER_NEEDED SILENCED REMOVE_ANIMATION CRIB REMOVE_ANIMATION VENDING MARK_MODEL_AS_NO_LONGER_NEEDED KNIFECUR SET_RADAR_ZOOM 0 REMOVE_BLIP guard1_s2blip REMOVE_BLIP guard2_s2blip REMOVE_BLIP guard3_s2blip REMOVE_BLIP guard4_s2blip REMOVE_BLIP guard5_s2blip REMOVE_BLIP guard6_s2blip REMOVE_BLIP guard7_s2blip PRINT_NOW STP2_30 7000 1 //~s~You need to take the rhymebook back to OG Loc he is at ~y~Burger Shot~s~. rhymebook_s2flag = 5 TIMERA = 0 CHECKPOINT_SAVE 99 ENDIF ENDIF IF mountainbike_s2flag = 0 IF NOT IS_CAR_DEAD mtbike_s2 IF IS_CHAR_SITTING_IN_CAR scplayer mtbike_s2 //SET_PLAYER_IN_CAR_CAMERA_MODE ZOOM_THREE mountainbike_s2flag = 1 ENDIF ENDIF ENDIF IF rhymebook_s2flag = 5 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 788.05 -1630.31 12.42 2.0 2.0 5.0 TRUE SET_PLAYER_CONTROL PLAYER1 OFF SWITCH_WIDESCREEN ON DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_AREA -1095.4885 -1630.6090 50.0 50.0 TRUE MARK_CAR_AS_NO_LONGER_NEEDED mtbike_s2 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer car SET_CAR_COORDINATES car 784.686 -1613.7 12.22 SET_CAR_HEADING car 353.08 WARP_CHAR_FROM_CAR_TO_COORD scplayer 785.75 -1632.84 12.43 SET_CHAR_HEADING scplayer 316.0 ELSE SET_CHAR_COORDINATES scplayer 785.75 -1632.84 12.43 SET_CHAR_HEADING scplayer 316.0 ENDIF REQUEST_ANIMATION GANGS LOAD_SPECIAL_CHARACTER 1 OGLOC CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_LOC2_CA //Yo, Loc, I got what you wanted, dog. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_LOC2_CB //Holmes, you are ice cold, dude! LOAD_ALL_MODELS_NOW WHILE NOT HAS_ANIMATION_LOADED GANGS OR NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_SPECIAL SPECIAL01 792.72 -1626.6 12.43 ogloc_s2 SET_CHAR_HEADING ogloc_s2 114.71 SET_CHAR_DECISION_MAKER ogloc_s2 strap2empty_DM SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED SHUT_CHAR_UP ogloc_s2 TRUE SHUT_CHAR_UP scplayer TRUE DO_FADE 2000 FADE_IN missionaudio_s2flag = 1 SET_FIXED_CAMERA_POSITION 785.7997 -1635.4298 13.4579 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 786.2913 -1634.5647 13.3583 JUMP_CUT TASK_GO_STRAIGHT_TO_COORD scplayer 788.98 -1629.61 12.59 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD ogloc_s2 788.98 -1629.61 12.59 PEDMOVE_WALK -1 TIMERA = 0 rhymebook_s2flag = 6 ENDIF ENDIF IF rhymebook_s2flag = 6 IF TIMERA > 2440 IF NOT IS_CHAR_DEAD ogloc_s2 SET_FIXED_CAMERA_POSITION 788.2733 -1628.8318 13.9503 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 788.4730 -1629.8112 13.9214 JUMP_CUT SET_CHAR_COORDINATES scplayer 787.973 -1630.274 12.42 SET_CHAR_HEADING scplayer 310.378 SET_CHAR_COORDINATES ogloc_s2 788.7348 -1629.6262 12.42 SET_CHAR_HEADING ogloc_s2 130.378 CLEAR_CHAR_TASKS_IMMEDIATELY ogloc_s2 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_PLAY_ANIM ogloc_s2 hndshkfa GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM scplayer hndshkfa GANGS 4.0 FALSE FALSE FALSE FALSE -1 rhymebook_s2flag = 7 ENDIF ENDIF ENDIF IF rhymebook_s2flag > 4 IF NOT IS_CHAR_DEAD ogloc_s2 IF missionaudio_s2flag = 1 PLAY_MISSION_AUDIO 1 START_CHAR_FACIAL_TALK scplayer 10000 PRINT_NOW LOC2_CA 5000 1//Yo, Loc, I got what you wanted, dog. missionaudio_s2flag = 2 ENDIF IF missionaudio_s2flag = 2 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 STOP_CHAR_FACIAL_TALK scplayer LOAD_MISSION_AUDIO 1 SOUND_LOC2_CC //I'll catch you later, dog. missionaudio_s2flag = 3 ENDIF ENDIF IF missionaudio_s2flag = 3 PLAY_MISSION_AUDIO 2 PRINT_NOW LOC2_CB 5000 1//Holmes, you are ice cold, dude! START_CHAR_FACIAL_TALK ogloc_s2 10000 missionaudio_s2flag = 4 ENDIF IF missionaudio_s2flag = 4 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_PRINTS CLEAR_MISSION_AUDIO 2 STOP_CHAR_FACIAL_TALK ogloc_s2 LOAD_MISSION_AUDIO 2 SOUND_LOC2_DC //Ciao, holmes! missionaudio_s2flag = 5 ENDIF ENDIF IF missionaudio_s2flag = 5 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW LOC2_CC 5000 1//I'll catch you later, dog START_CHAR_FACIAL_TALK scplayer 10000 PLAY_MISSION_AUDIO 1 missionaudio_s2flag = 6 ENDIF ENDIF IF missionaudio_s2flag = 6 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS STOP_CHAR_FACIAL_TALK scplayer missionaudio_s2flag = 7 ENDIF ENDIF IF missionaudio_s2flag = 7 SET_FIXED_CAMERA_POSITION 773.2047 -1633.0664 17.7324 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 774.1813 -1632.9076 17.5877 JUMP_CUT PLAY_MISSION_AUDIO 2 PRINT_NOW LOC2_DC 5000 1//Ciao, holmes! START_CHAR_FACIAL_TALK ogloc_s2 4000 TASK_GO_STRAIGHT_TO_COORD scplayer 806.1331 -1630.2195 12.3906 PEDMOVE_WALK 60000 TASK_GO_STRAIGHT_TO_COORD ogloc_s2 793.8177 -1625.1552 12.3828 PEDMOVE_WALK 60000 missionaudio_s2flag = 8 ENDIF IF missionaudio_s2flag = 8 IF HAS_MISSION_AUDIO_FINISHED 2 DO_FADE 1000 FADE_OUT CLEAR_PRINTS CLEAR_MISSION_AUDIO 2 WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer 808.299 -1630.424 12.42 SET_CHAR_HEADING scplayer 254.602 DO_FADE 1000 FADE_IN RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL PLAYER1 ON SWITCH_WIDESCREEN OFF GOTO mission_music2_passed missionaudio_s2flag = 9 ENDIF ENDIF ENDIF ENDIF GOTO stealrhymebook_loop //alertstate_s2label: //IF NOT IS_CHAR_DEAD enemy_s2 // // IF playerseenstate_s2 = 0 // IF IS_CHAR_RESPONDING_TO_EVENT enemy_s2 EVENT_SOUND_QUIET // OR IS_CHAR_RESPONDING_TO_EVENT enemy_s2 EVENT_ACQUAINTANCE_PED_HATE_BADLY_LIT // IF NOT IS_CHAR_RESPONDING_TO_EVENT enemy_s2 EVENT_ACQUAINTANCE_PED_HATE // playerseenstate_s2 = 1 // PRINT_NOW STP2_22 3000 1 //What was that? // ENDIF // ENDIF // ENDIF // // IF playerseenstate_s2 = 1 // IF NOT IS_CHAR_RESPONDING_TO_EVENT enemy_s2 EVENT_SOUND_QUIET // AND NOT IS_CHAR_RESPONDING_TO_EVENT enemy_s2 EVENT_ACQUAINTANCE_PED_HATE_BADLY_LIT // AND NOT IS_CHAR_RESPONDING_TO_EVENT enemy_s2 EVENT_ACQUAINTANCE_PED_HATE // AND NOT IS_CHAR_RESPONDING_TO_EVENT enemy_s2 EVENT_SHOT_FIRED // AND NOT IS_CHAR_RESPONDING_TO_EVENT enemy_s2 EVENT_DAMAGE // AND NOT IS_CHAR_RESPONDING_TO_EVENT enemy_s2 EVENT_GUN_AIMED_AT // PRINT_NOW STP2_23 3000 1 //Hmm..must of been nothing. // playerseenstate_s2 = 0 // ENDIF // ENDIF // // IF playerseenstate_s2 = 0 //KILL PLAYER // OR playerseenstate_s2 = 1 // IF IS_CHAR_RESPONDING_TO_EVENT enemy_s2 EVENT_ACQUAINTANCE_PED_HATE // OR IS_CHAR_RESPONDING_TO_EVENT enemy_s2 EVENT_SHOT_FIRED // OR IS_CHAR_RESPONDING_TO_EVENT enemy_s2 EVENT_DAMAGE // OR IS_CHAR_RESPONDING_TO_EVENT enemy_s2 EVENT_GUN_AIMED_AT // PRINT_NOW (STP2_24) 3000 1 //Soldier: Hey you stop! // playerseenstate_s2 = 2 // ENDIF // ENDIF // // IF playerseenstate_s2 = 2 //RETURN FROM KILL PLAYER // IF NOT IS_CHAR_RESPONDING_TO_EVENT enemy_s2 EVENT_SOUND_QUIET // AND NOT IS_CHAR_RESPONDING_TO_EVENT enemy_s2 EVENT_ACQUAINTANCE_PED_HATE_BADLY_LIT // AND NOT IS_CHAR_RESPONDING_TO_EVENT enemy_s2 EVENT_ACQUAINTANCE_PED_HATE // AND NOT IS_CHAR_RESPONDING_TO_EVENT enemy_s2 EVENT_SHOT_FIRED // AND NOT IS_CHAR_RESPONDING_TO_EVENT enemy_s2 EVENT_DAMAGE // AND NOT IS_CHAR_RESPONDING_TO_EVENT enemy_s2 EVENT_GUN_AIMED_AT // PRINT_NOW (MAF8_12) 3000 1 //Soldier: Shit, lost him! // playerseenstate_s2 = 0 // ENDIF // ENDIF // //ENDIF // //RETURN // Mission music2 failed mission_music2_failed: PRINT_BIG M_FAIL 5000 1 RETURN // mission music2 passed mission_music2_passed: REGISTER_MISSION_PASSED STRAP_2 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 4 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 4//amount of respect CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 PLAYER_MADE_PROGRESS 1 flag_strap_mission_counter ++ RETURN // mission cleanup mission_cleanup_music2: SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 REMOVE_CHAR_ELEGANTLY ogloc_s2 REMOVE_PICKUP pickupgun_s2 SWITCH_ENTRY_EXIT maddogs FALSE SWITCH_ENTRY_EXIT MDDOGS FALSE IF IS_PLAYER_PLAYING PLAYER1 SET_PLAYER_CYCLE_WEAPON_BUTTON PLAYER1 TRUE SET_PLAYER_GROUP_RECRUITMENT PLAYER1 TRUE ENDIF SET_WANTED_MULTIPLIER 1.0 //radar SET_RADAR_ZOOM 0 //blips SHUT_CHAR_UP scplayer FALSE REMOVE_BLIP rhymebook_s2blip REMOVE_BLIP guard1_s2blip REMOVE_BLIP guard2_s2blip REMOVE_BLIP guard3_s2blip REMOVE_BLIP guard4_s2blip REMOVE_BLIP guard5_s2blip REMOVE_BLIP guard6_s2blip REMOVE_BLIP guard7_s2blip REMOVE_PICKUP rhymebook_s2 //models & animations UNLOAD_SPECIAL_CHARACTER 1 REMOVE_ANIMATION GANGS MARK_MODEL_AS_NO_LONGER_NEEDED MTBIKE MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED WBDYG1 MARK_MODEL_AS_NO_LONGER_NEEDED WBDYG2 MARK_MODEL_AS_NO_LONGER_NEEDED HUNTLEY MARK_MODEL_AS_NO_LONGER_NEEDED STAFFORD MARK_MODEL_AS_NO_LONGER_NEEDED KMB_RHYMESBOOK MARK_MODEL_AS_NO_LONGER_NEEDED CJ_JUICE_CAN MARK_MODEL_AS_NO_LONGER_NEEDED SILENCED REMOVE_ANIMATION CRIB REMOVE_ANIMATION VENDING MARK_MODEL_AS_NO_LONGER_NEEDED KNIFECUR flag_player_on_mission = 0 DISABLE_ALL_ENTRY_EXITS FALSE GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ****************************************** MUSIC 3 ************************************** // ********************************* TAKE OUT DOC G'S MANAGER ****************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME strap3 // Mission start stuff GOSUB mission_start_music3 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_music3_failed ENDIF GOSUB mission_cleanup_music3 MISSION_END { // Variables for mission //people LVAR_INT crowd[21] m3_cop[9] wc1 mc1 m3_limo[3] m3_limo_driver[3] m3_dgcar1[3] m3_dgcar1_driver[3] LVAR_INT m3_east_barrier1 m3_east_barrier2 m3_south_east_barrier1 m3_south_east_barrier2 m3_south_west_barrier1 m3_south_west_barrier2 LVAR_INT m3_west_barrier1 m3_west_barrier2 m3_north_west_barrier1 m3_north_west_barrier2 m3_north_east_barrier1 m3_north_east_barrier2 LVAR_INT right_barrier1 right_barrier2 right_barrier3 left_barrier1 left_barrier2 left_barrier3 LVAR_INT front_left_barrier1 front_left_barrier2 front_left_barrier3 front_right_barrier1 front_right_barrier2 front_right_barrier3 LVAR_INT docg_manager docg_hoochie LVAR_INT m3_goons[7] LVAR_INT m3_interviewer //LVAR_INT m3_checkpoint LVAR_INT m3_dummy_target //blips LVAR_INT m3_docg_manager_blip m3_goon_blips[8] //flags LVAR_INT m3_goals m3_control_flag m3_skip_cutscene_flag m3_deathcheck_flag m3_cutscene_goals_flag LVAR_INT m3_flash_flag1 m3_flash_flag2 LVAR_INT m3_shit_hit_fan LVAR_INT has_crowd_been_created crowd_flag_death_check creating_crowd_flag m3_crowd_flag m3_crowd_check LVAR_INT m3_char_select[5] m3_cs LVAR_INT cop_death_check LVAR_INT m3_car_check_flag LVAR_INT m3_gametimer_difference m3_gametimer_ended m3_gametimer_started m3_time_to_fail m3_stray_flag m3_number_to_print LVAR_INT m3_hours LVAR_INT m3_how_many_cars_flag LVAR_INT m3_context LVAR_INT m3_random_number LVAR_INT m3_baddy_control_flag[2] LVAR_INT m3_baddy_in_range_check LVAR_INT m3_seq_progress LVAR_FLOAT m3_car_heading LVAR_FLOAT m3_car_speed LVAR_INT m3_paynspray_text_duration LVAR_INT m3_paynspray_text_flag LVAR_INT m3_initial_direction_text_flag LVAR_INT m3_warning_text LVAR_INT m3_help_flag LVAR_INT m3_removing_crowd LVAR_INT m3_removing_cop_flag LVAR_INT m3_removing_crowd_flag LVAR_INT m3_phone_cutscene LVAR_INT m3_no_plates_flag m3_no_plates LVAR_INT m3_random_flash_flag1 LVAR_INT m3_random_flash_flag2 LVAR_INT m3_camflash1 LVAR_INT m3_camflash2 //speech LVAR_INT m3_speech_goals m3_speech_flag m3_speech_control_flag m3_random_last_label LVAR_TEXT_LABEL m3_print_label[14] LVAR_INT m3_audio_label[14] LVAR_INT m3_last_label LVAR_INT m3_slot1 m3_slot2 m3_slot_load m3_play_which_slot //coords LVAR_FLOAT m3_x m3_y m3_z LVAR_FLOAT m3_x2 m3_y2 m3_z2 //sequences/decision makers/threat lists/attractors/groups LVAR_INT m3_limo_seq m3_seq m3_empty_ped_decision_maker m3_ped_decisions //debug // **************************************** Mission Start ********************************** mission_start_music3: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT STRAP3 IF flag_player_on_mission = 0 //COPY_CHAR_DECISION_MAKER m3_star m3_celeb_decisions CREATE_OBJECT DYN_ROADBARRIER_2 1024.5 -1123.2 22.9 right_barrier1 CREATE_OBJECT DYN_ROADBARRIER_2 1024.5 -1127.2 22.9 right_barrier2 CREATE_OBJECT DYN_ROADBARRIER_2 1024.5 -1131.2 22.9 right_barrier3 CREATE_OBJECT DYN_ROADBARRIER_2 1020.5 -1123.2 22.9 left_barrier1 CREATE_OBJECT DYN_ROADBARRIER_2 1020.5 -1127.2 22.9 left_barrier2 CREATE_OBJECT DYN_ROADBARRIER_2 1020.5 -1131.2 22.9 left_barrier3 CREATE_OBJECT DYN_ROADBARRIER_2 1016.5 -1133.2 22.9 front_left_barrier1 CREATE_OBJECT DYN_ROADBARRIER_2 1012.5 -1133.2 22.9 front_left_barrier2 CREATE_OBJECT DYN_ROADBARRIER_2 1008.5 -1133.2 22.9 front_left_barrier3 CREATE_OBJECT DYN_ROADBARRIER_2 1028.5 -1133.2 22.9 front_right_barrier1 CREATE_OBJECT DYN_ROADBARRIER_2 1032.5 -1133.2 22.9 front_right_barrier2 CREATE_OBJECT DYN_ROADBARRIER_2 1036.5 -1133.2 22.9 front_right_barrier3 CREATE_OBJECT DYN_ROADBARRIER_2 1036.5 -1133.2 22.9 m3_east_barrier1 CREATE_OBJECT DYN_ROADBARRIER_2 1036.5 -1133.2 22.9 m3_east_barrier2 CREATE_OBJECT DYN_ROADBARRIER_2 1036.5 -1133.2 22.9 m3_south_east_barrier1 CREATE_OBJECT DYN_ROADBARRIER_2 1036.5 -1133.2 22.9 m3_south_east_barrier2 CREATE_OBJECT DYN_ROADBARRIER_2 1036.5 -1133.2 22.9 m3_south_west_barrier1 CREATE_OBJECT DYN_ROADBARRIER_2 1036.5 -1133.2 22.9 m3_south_west_barrier2 CREATE_OBJECT DYN_ROADBARRIER_2 1036.5 -1133.2 22.9 m3_west_barrier1 CREATE_OBJECT DYN_ROADBARRIER_2 1036.5 -1133.2 22.9 m3_west_barrier2 CREATE_OBJECT DYN_ROADBARRIER_2 1036.5 -1133.2 22.9 m3_north_west_barrier1 CREATE_OBJECT DYN_ROADBARRIER_2 1036.5 -1133.2 22.9 m3_north_west_barrier2 CREATE_OBJECT DYN_ROADBARRIER_2 1036.5 -1133.2 22.9 m3_north_east_barrier1 CREATE_OBJECT DYN_ROADBARRIER_2 1036.5 -1133.2 22.9 m3_north_east_barrier2 ADD_BLIP_FOR_COORD 1118.3 -1140.9 22.2 m3_docg_manager_blip CREATE_CHAR PEDTYPE_MISSION2 LAPD1 1023.4 -1121.0 22.9 m3_cop[8] CREATE_CHAR PEDTYPE_MISSION2 LAPD1 1023.4 -1121.0 22.9 m3_limo_driver[1] CREATE_CAR ELEGANT 1174.1 -926.8 43.6 m3_limo[1] CREATE_CHAR PEDTYPE_MISSION2 LAPD1 1023.4 -1121.0 22.9 mc1 CREATE_CHAR PEDTYPE_MISSION2 LAPD1 1023.4 -1121.0 22.9 wc1 CREATE_CHAR PEDTYPE_MISSION2 LAPD1 1023.4 -1121.0 22.9 m3_interviewer ENDIF CLEAR_PRINTS WAIT 0 // *************************************Set Flags/variables********************************* m3_goals = 0 m3_control_flag = 0 m3_skip_cutscene_flag = 0 m3_deathcheck_flag = 0 m3_speech_flag = 0 m3_cutscene_goals_flag = 0 x = 0.0 y = 0.0 z = 0.0 m3_cs = 0 m3_flash_flag1 = 0 m3_flash_flag2 = 0 m3_shit_hit_fan = 0 has_crowd_been_created = 0 crowd_flag_death_check = 0 creating_crowd_flag = 0 m3_crowd_flag = 0 m3_crowd_check = 0 m3_char_select[1] = WBDYG1 //m3_char_select[3] = WMYPAP1 //m3_char_select[4] = WMYPAP2 cop_death_check = 0 m3_car_check_flag = 0 m3_x = 0.0 m3_y = 0.0 m3_z = 0.0 m3_x2 = 0.0 m3_y2 = 0.0 m3_z2 = 0.0 m3_gametimer_difference = 0 m3_gametimer_ended = 0 m3_gametimer_started = 0 m3_time_to_fail = 0 m3_stray_flag = 0 m3_number_to_print = 0 m3_hours = 0 minutes = 0 m3_how_many_cars_flag = 0 m3_car_heading = 0.0 m3_random_number = 0 m3_baddy_control_flag[0] = 0 m3_baddy_control_flag[1] = 0 m3_baddy_in_range_check = 0 m3_paynspray_text_duration = 0 m3_paynspray_text_flag = 0 m3_initial_direction_text_flag = 0 m3_warning_text = 0 m3_speech_goals = 0 m3_speech_flag = 0 m3_speech_control_flag = 0 m3_random_last_label = 0 m3_last_label = 0 m3_slot1 = 0 m3_slot2 = 0 m3_slot_load = 0 m3_play_which_slot = 0 m3_help_flag = 0 m3_removing_crowd = 0 m3_removing_cop_flag = 0 m3_removing_crowd_flag = 0 m3_phone_cutscene = 0 m3_no_plates_flag = 0 m3_no_plates = 0 m3_seq_progress = 0 m3_random_flash_flag1 = 0 m3_random_flash_flag2 = 0 // ****************************************START OF CUTSCENE******************************** MAKE_PLAYER_GANG_DISAPPEAR SET_AREA_VISIBLE 10 SET_FADING_COLOUR 0 0 0 LOAD_CUTSCENE STRAP3A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED CLEAR_HELP WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 CLEAR_CUTSCENE MAKE_PLAYER_GANG_REAPPEAR SET_PLAYER_CONTROL player1 OFF // ****************************************END OF CUTSCENE********************************** SET_FADING_COLOUR 0 0 0 WAIT 0 //------------------REQUEST_MODELS------------------------------ REQUEST_MODEL WBDYG1 REQUEST_MODEL ELEGANT REQUEST_MODEL COLT45 REQUEST_MODEL CELLPHONE LOAD_MISSION_AUDIO 3 SOUND_LOCK_CAR_DOORS LOAD_ALL_MODELS_NOW ///setting up char and group decision makers REMOVE_GROUP Players_Group SET_PLAYER_GROUP_RECRUITMENT player1 FALSE COPY_CHAR_DECISION_MAKER DM_PED_EMPTY m3_empty_ped_decision_maker LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH m3_ped_decisions CLEAR_AREA 1214.8 -921.7 41.7 5.0 TRUE m3_no_plates = ELEGANT GOSUB m3_my_number_plates CREATE_CAR ELEGANT 1214.8 -921.7 41.7 m3_dgcar1[1] SET_CAR_HEADING m3_dgcar1[1] 169.3 CHANGE_CAR_COLOUR m3_dgcar1[1] 0 0 SET_CAN_RESPRAY_CAR m3_dgcar1[1] FALSE SET_CAR_ONLY_DAMAGED_BY_PLAYER m3_dgcar1[1] TRUE LOCK_CAR_DOORS m3_dgcar1[1] CARLOCK_UNLOCKED SET_CAR_ONLY_DAMAGED_BY_PLAYER m3_dgcar1[1] TRUE SET_CAN_BURST_CAR_TYRES m3_dgcar1[1] FALSE ADD_BLIP_FOR_CAR m3_dgcar1[1] m3_docg_manager_blip CREATE_CHAR_INSIDE_CAR m3_dgcar1[1] PEDTYPE_MISSION2 WBDYG1 m3_dgcar1_driver[1] GIVE_WEAPON_TO_CHAR m3_dgcar1_driver[1] WEAPONTYPE_PISTOL 3000 SET_CHAR_DECISION_MAKER m3_dgcar1_driver[1] m3_ped_decisions CLEAR_AREA 1297.6 -1137.2 22.5 5.0 TRUE m3_no_plates = ELEGANT GOSUB m3_my_number_plates CREATE_CAR ELEGANT 1297.6 -1137.2 22.5 m3_dgcar1[0] SET_CAR_HEADING m3_dgcar1[0] 90.0 SET_CAR_ONLY_DAMAGED_BY_PLAYER m3_dgcar1[0] TRUE CHANGE_CAR_COLOUR m3_dgcar1[0] 0 0 MARK_CAR_AS_CONVOY_CAR m3_dgcar1[0] TRUE LOCK_CAR_DOORS m3_dgcar1[0] CARLOCK_LOCKOUT_PLAYER_ONLY FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION m3_dgcar1[0] TRUE SET_CAN_BURST_CAR_TYRES m3_dgcar1[0] FALSE CLEAR_AREA 1316.5 -1137.2 22.5 5.0 TRUE m3_no_plates = ELEGANT GOSUB m3_my_number_plates CREATE_CAR ELEGANT 1316.5 -1137.2 22.5 m3_dgcar1[2] SET_CAR_HEADING m3_dgcar1[2] 90.0 SET_CAR_ONLY_DAMAGED_BY_PLAYER m3_dgcar1[2] TRUE CHANGE_CAR_COLOUR m3_dgcar1[2] 0 0 MARK_CAR_AS_CONVOY_CAR m3_dgcar1[2] TRUE LOCK_CAR_DOORS m3_dgcar1[2] CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_DRIVING_STYLE m3_dgcar1[2] DRIVINGMODE_SLOWDOWNFORCARS FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION m3_dgcar1[2] TRUE SET_CAN_BURST_CAR_TYRES m3_dgcar1[2] FALSE SET_CAR_STRAIGHT_LINE_DISTANCE m3_dgcar1[2] 50 SET_CAR_CAN_BE_VISIBLY_DAMAGED m3_dgcar1[2] FALSE //nodes stopping wander car from fucking off into countryside //node 1 MARK_ROAD_NODE_AS_DONT_WANDER 76.6 -1527.6 4.1 //node 2 MARK_ROAD_NODE_AS_DONT_WANDER 162.2 -1394.6 46.8 //node 3 MARK_ROAD_NODE_AS_DONT_WANDER 273.2 -980.9 47.4 //node 4 MARK_ROAD_NODE_AS_DONT_WANDER 362.8 -1147.8 77.0 //node 5 MARK_ROAD_NODE_AS_DONT_WANDER 378.1 -1147.4 77.0 //node 6 MARK_ROAD_NODE_AS_DONT_WANDER 1536.4 -994.8 41.5 //node 7 MARK_ROAD_NODE_AS_DONT_WANDER 1638.7 -1177.5 54.1 //node 8 MARK_ROAD_NODE_AS_DONT_WANDER 1873.9 -1009.4 35.0 //node 9 MARK_ROAD_NODE_AS_DONT_WANDER 2887.8 -1121.4 9.8 //node 10 MARK_ROAD_NODE_AS_DONT_WANDER 165.8 -1185.3 51.8 //node 11 MARK_ROAD_NODE_AS_DONT_WANDER 695.7 -995.6 51.0 //node 12 MARK_ROAD_NODE_AS_DONT_WANDER 794.8 -1033.6 23.7 //node 13 MARK_ROAD_NODE_AS_DONT_WANDER 1311.1 -701.7 91.7 //node 14 MARK_ROAD_NODE_AS_DONT_WANDER 2838.7 -1024.2 21.5 PRINT_NOW ( STP3_01 ) 7000 1 //One of Doc G's Managers drivers is eating at the Burger Shot across town. PRINT ( STP3_02 ) 7000 1 //Go and steal his car and meet the other drivers before 10pm. CLEAR_AREA 794.6 -1597.1 12.5 1.0 TRUE LOAD_SCENE 794.6 -1597.1 12.5 SET_CHAR_COORDINATES scplayer 794.6 -1597.1 12.5 SET_CHAR_HEADING scplayer 45.0 SET_TIME_OF_DAY 16 00 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON ENABLE_AMBIENT_CRIME FALSE /* VAR_INT m3_flash_flag1 VAR_INT m3_flash_flag2 VIEW_INTEGER_VARIABLE m3_flash_flag1 m3_flash_flag1 VIEW_INTEGER_VARIABLE m3_flash_flag2 m3_flash_flag2 */ timerb = 0 DO_FADE 500 FADE_IN mission_music3_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_music3_passed ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// Deathchecks /////////////////////////////////////////////////////////////////////////////////// GOSUB m3_death_checks IF m3_deathcheck_flag = 1 GOTO mission_music3_failed ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// setting up a game timer /////////////////////////////////////////////////////////////////////// GET_GAME_TIMER m3_gametimer_ended m3_gametimer_difference = m3_gametimer_ended - m3_gametimer_started m3_gametimer_started = m3_gametimer_ended m3_time_to_fail -= m3_gametimer_difference m3_paynspray_text_duration += m3_gametimer_difference //getting time of day GET_TIME_OF_DAY m3_hours minutes ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// waiting for player to steal the humvee /////////////////////////////////////////////////////// IF m3_goals = 0 ////debug//// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q SET_CHAR_COORDINATES scplayer 1179.5 -920.3 42.2 SET_CHAR_HEADING scplayer 99.7 ENDIF /////debug/// ////////////SPEECH FOR THIS SECTION//////////////////// //dialogue once player is near the car to tell the player to damage it IF m3_speech_flag = 0 IF m3_control_flag = 1 OR m3_control_flag = 2 IF LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer m3_dgcar1[1] 25.0 25.0 25.0 FALSE IF NOT IS_CHAR_DEAD m3_dgcar1_driver[1] IF IS_CHAR_IN_CAR m3_dgcar1_driver[1] m3_dgcar1[1] PRINT ( STP3_19 ) 7000 1 //Damage the car to force the driver out. ENDIF ELSE m3_speech_flag = 2 ENDIF m3_speech_flag = 1 ENDIF ENDIF ENDIF IF m3_speech_flag = 1 //clearing that fucking damage print IF NOT IS_CHAR_DEAD m3_dgcar1_driver[1] IF NOT IS_CHAR_SITTING_IN_CAR m3_dgcar1_driver[1] m3_dgcar1[1] CLEAR_THIS_PRINT STP3_19 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer m3_dgcar1_driver[1] 15.0 15.0 15.0 FALSE IF m3_speech_goals = 0 //driver swearing at player m3_speech_goals = 1 m3_speech_control_flag = 0 GOSUB m3_dialogue_setup ENDIF ENDIF m3_speech_flag = 2 ENDIF ELSE m3_speech_flag = 2 ENDIF ENDIF IF m3_speech_flag = 2 IF m3_speech_goals = 0 IF NOT IS_CAR_DEAD m3_dgcar1[1] IF NOT IS_CHAR_IN_CAR scplayer m3_dgcar1[1] CLEAR_THIS_PRINT STP3_19 PRINT ( STP3_11 ) 7000 1 //Get in the car. m3_speech_flag = 3 ELSE m3_speech_flag = 3 ENDIF ENDIF ENDIF ENDIF /// WAITING FOR PLAYER TO TRIGGER MC STRAP PHONE CALL IF m3_control_flag = 0 IF NOT IS_CHAR_DEAD m3_dgcar1_driver[1] IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer m3_dgcar1_driver[1] 250.0 250.0 FALSE OR m3_hours > 17 GOSUB check_player_is_safe IF player_is_completely_safe = 1 //phone cutscene IF NOT IS_CHAR_IN_ANY_CAR scplayer //cutscene showing player answering phone CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 m3_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON //phone ringing m3_speech_goals = 7 m3_speech_control_flag = 0 m3_random_last_label = 1 GOSUB m3_dialogue_setup SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE m3_skip_cutscene_flag = 1 SKIP_CUTSCENE_START TASK_USE_MOBILE_PHONE scplayer TRUE timera = 0 m3_phone_cutscene = 1 m3_control_flag = 1 ELSE IF NOT IS_CHAR_DEAD m3_dgcar1_driver[1] IF NOT IS_CAR_DEAD m3_dgcar1[1] OPEN_SEQUENCE_TASK m3_seq TASK_ENTER_CAR_AS_DRIVER -1 m3_dgcar1[1] -1 TASK_CAR_DRIVE_TO_COORD -1 m3_dgcar1[1] 1211.0 -932.3 41.9 15.0 MODE_NORMAL 1 DRIVINGMODE_STOPFORCARS TASK_CAR_DRIVE_TO_COORD -1 m3_dgcar1[1] 1160.8 -1027.5 31.4 15.0 MODE_NORMAL 1 DRIVINGMODE_STOPFORCARS TASK_CAR_DRIVE_WANDER -1 m3_dgcar1[1] 15.0 DRIVINGMODE_STOPFORCARS CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK m3_dgcar1_driver[1] m3_seq CLEAR_SEQUENCE_TASK m3_seq ADD_STUCK_CAR_CHECK_WITH_WARP m3_dgcar1[1] 0.5 4000 TRUE TRUE TRUE 7 ENDIF ENDIF //mc strap phoning player m3_speech_goals = 7 m3_speech_control_flag = 0 m3_random_last_label = 5 GOSUB m3_dialogue_setup SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE m3_phone_cutscene = 3 m3_control_flag = 1 ENDIF ELSE m3_control_flag = 1 ENDIF ENDIF ENDIF ENDIF IF m3_phone_cutscene = 1 IF timera > 2000 IF m3_speech_goals = 0 //mc strap phoning player m3_speech_goals = 7 m3_speech_control_flag = 1 m3_random_last_label = 2 GOSUB m3_dialogue_setup m3_phone_cutscene = 2 ENDIF ENDIF ENDIF IF m3_phone_cutscene = 2 IF m3_speech_goals = 0 //mc strap phoning player m3_speech_goals = 7 m3_speech_control_flag = 2 m3_random_last_label = 5 GOSUB m3_dialogue_setup m3_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB m3_death_checks IF m3_deathcheck_flag = 1 GOTO mission_music3_failed ENDIF IF NOT IS_CHAR_DEAD m3_dgcar1_driver[1] IF NOT IS_CAR_DEAD m3_dgcar1[1] OPEN_SEQUENCE_TASK m3_seq TASK_ENTER_CAR_AS_DRIVER -1 m3_dgcar1[1] -1 TASK_CAR_DRIVE_TO_COORD -1 m3_dgcar1[1] 1211.0 -932.3 41.9 15.0 MODE_NORMAL 1 DRIVINGMODE_STOPFORCARS TASK_CAR_DRIVE_TO_COORD -1 m3_dgcar1[1] 1160.8 -1027.5 31.4 15.0 MODE_NORMAL 1 DRIVINGMODE_STOPFORCARS TASK_CAR_DRIVE_WANDER -1 m3_dgcar1[1] 15.0 DRIVINGMODE_STOPFORCARS CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK m3_dgcar1_driver[1] m3_seq CLEAR_SEQUENCE_TASK m3_seq ADD_STUCK_CAR_CHECK_WITH_WARP m3_dgcar1[1] 0.5 4000 TRUE TRUE TRUE 7 ENDIF ENDIF SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF m3_phone_cutscene = 3 ENDIF ENDIF IF m3_phone_cutscene = 3 IF m3_speech_goals = 0 GET_SCRIPT_TASK_STATUS scplayer TASK_USE_MOBILE_PHONE task_status IF task_status = PERFORMING_TASK TASK_USE_MOBILE_PHONE scplayer FALSE ENDIF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE m3_phone_cutscene = 4 ENDIF IF IS_BUTTON_PRESSED PAD1 TRIANGLE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 m3_speech_goals = 0 GET_SCRIPT_TASK_STATUS scplayer TASK_USE_MOBILE_PHONE task_status IF task_status = PERFORMING_TASK TASK_USE_MOBILE_PHONE scplayer FALSE ENDIF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE m3_phone_cutscene = 4 ENDIF ENDIF //car is on it's way to meet the other cars IF m3_control_flag = 1 IF NOT IS_CHAR_DEAD m3_dgcar1_driver[1] IF IS_CHAR_IN_CAR m3_dgcar1_driver[1] m3_dgcar1[1] IF m3_hours > 20 //i.e. 9 pm TASK_CAR_DRIVE_TO_COORD m3_dgcar1_driver[1] m3_dgcar1[1] 1316.4 -1136.5 22.9 15.0 MODE_NORMAL 1 DRIVINGMODE_AVOIDCARS m3_control_flag = 2 ENDIF ENDIF ENDIF ENDIF //waiting for car to reach other cars and then fail the mission IF m3_control_flag = 2 IF NOT IS_CHAR_DEAD m3_dgcar1_driver[1] IF IS_CHAR_IN_CAR m3_dgcar1_driver[1] m3_dgcar1[1] IF LOCATE_CAR_2D m3_dgcar1[1] 1316.4 -1136.5 5.0 5.0 FALSE PRINT_NOW ( STP3_03 ) 4000 1 //You were too slow! m3_how_many_cars_flag = 1 m3_goals = 9 ENDIF ENDIF ENDIF ENDIF //checking if enemy should attack player IF m3_control_flag > 0 IF m3_control_flag < 3 //car has been damaged IF HAS_CAR_BEEN_DAMAGED_BY_CHAR m3_dgcar1[1] scplayer IF NOT IS_CHAR_DEAD m3_dgcar1_driver[1] OPEN_SEQUENCE_TASK m3_seq TASK_LEAVE_ANY_CAR -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK m3_dgcar1_driver[1] m3_seq CLEAR_SEQUENCE_TASK m3_seq ENDIF REMOVE_STUCK_CAR_CHECK m3_dgcar1[1] m3_control_flag = 3 ENDIF //player has pulled char out IF NOT IS_CHAR_DEAD m3_dgcar1_driver[1] IF NOT IS_CHAR_IN_CAR m3_dgcar1_driver[1] m3_dgcar1[1] IF NOT IS_CHAR_DEAD m3_dgcar1_driver[1] OPEN_SEQUENCE_TASK m3_seq TASK_LEAVE_ANY_CAR -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK m3_dgcar1_driver[1] m3_seq CLEAR_SEQUENCE_TASK m3_seq ENDIF REMOVE_STUCK_CAR_CHECK m3_dgcar1[1] m3_control_flag = 3 ENDIF ELSE REMOVE_STUCK_CAR_CHECK m3_dgcar1[1] m3_control_flag = 3 ENDIF ENDIF ENDIF //////////////MISC STUFF FOR THIS BIT//////////////////// //failing the mission due to running out of time IF m3_hours > 21 //i.e. 10pm AND minutes > 30 m3_how_many_cars_flag = 0 m3_goals = 9 ENDIF //changing car to be able to be damaged by other people while on_screen IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer m3_dgcar1[1] 60.0 60.0 FALSE SET_CAR_ONLY_DAMAGED_BY_PLAYER m3_dgcar1[1] FALSE ELSE SET_CAR_ONLY_DAMAGED_BY_PLAYER m3_dgcar1[1] TRUE ENDIF ////////////WAITING FOR PLAYER TO GET INTO CAR/////////////// IF m3_control_flag = 3 IF IS_CHAR_IN_CAR scplayer m3_dgcar1[1] REMOVE_BLIP m3_docg_manager_blip ADD_BLIP_FOR_COORD 1306.4 -1137.5 22.5 m3_docg_manager_blip CLEAR_THIS_PRINT STP3_11 PRINT ( STP3_33 ) 7000 1 //Go and meet up with the other drivers. Don't damage your car! MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE m3_speech_flag = 0 m3_control_flag = 0 m3_goals = 1 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// waiting for player to arrive next to other drivers //////////////////////////////////////////// IF m3_goals = 1 ////debug//// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q SET_CHAR_COORDINATES scplayer 1306.4 -1137.5 22.5 SET_CAR_HEADING m3_dgcar1[1] 90.0 ENDIF /////debug/// //failing the mission due to running out of time IF m3_hours > 21 //i.e. 10pm AND minutes > 30 m3_how_many_cars_flag = 0 m3_goals = 9 ENDIF //getting the car repaired if it is damaged IF m3_control_flag = 0 IF IS_CHAR_IN_CAR scplayer m3_dgcar1[1] IF NOT IS_CAR_HEALTH_GREATER m3_dgcar1[1] 700 OR IS_CAR_VISIBLY_DAMAGED m3_dgcar1[1] CLEAR_THIS_PRINT STP3_33 IF m3_speech_flag = 0 REMOVE_BLIP spray_shop2 ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 488.0 -1734.0 34.4 RADAR_SPRITE_SPRAY spray_shop2 DISPLAY_RADAR 6 // PATHING PAY AND SPRAY // prefer this system PRINT ( STP3_22 ) 11000 1 //The car is damaged, go and get it repaired. m3_speech_flag = 1 ENDIF ENDIF IF IS_CAR_HEALTH_GREATER m3_dgcar1[1] 700 IF NOT IS_CAR_VISIBLY_DAMAGED m3_dgcar1[1] CLEAR_THIS_PRINT STP3_22 REMOVE_BLIP spray_shop2 ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 488.0 -1734.0 34.4 RADAR_SPRITE_SPRAY spray_shop2 DISPLAY_RADAR 3 // PATHING ON REMOVE_BLIP m3_docg_manager_blip ADD_BLIP_FOR_COORD 1306.4 -1137.5 22.5 m3_docg_manager_blip m3_paynspray_text_flag = 0 m3_paynspray_text_duration = 0 m3_speech_flag = 0 m3_control_flag = 1 ENDIF ENDIF ENDIF ENDIF IF m3_paynspray_text_flag = 0 IF m3_paynspray_text_duration > 4000 PRINT ( STP3_33 ) 7000 1 //Go and meet up with the other drivers. Don't damage your car! m3_paynspray_text_flag = 1 ENDIF ENDIF //waiting for player to get to the other cars and get in correct position IF m3_control_flag = 1 IF IS_CHAR_IN_CAR scplayer m3_dgcar1[1] //waiting for player to get to the other cars IF LOCATE_CAR_3D m3_dgcar1[1] 1306.4 -1137.5 22.5 4.0 4.0 4.0 TRUE GET_CAR_HEADING m3_dgcar1[1] m3_car_heading IF m3_car_heading > 95.0 IF m3_car_heading <= 360.0 PRINT_NOW ( STP3_25 ) 7000 1 //Park the car facing the same way as the other cars. ENDIF ENDIF IF m3_car_heading < 85.0 IF m3_car_heading >= 0.0 PRINT_NOW ( STP3_25 ) 7000 1 //Park the car facing the same way as the other cars. ENDIF ENDIF IF m3_car_heading >= 85.0 IF m3_car_heading <= 95.0 m3_control_flag = 2 ENDIF ENDIF ENDIF //printing help first time player comes close to cars IF m3_initial_direction_text_flag = 0 IF LOCATE_CAR_3D m3_dgcar1[1] 1306.4 -1137.5 22.5 15.0 30.0 30.0 FALSE IF IS_CAR_ON_SCREEN m3_dgcar1[0] OR IS_CAR_ON_SCREEN m3_dgcar1[2] PRINT_NOW ( STP3_25 ) 7000 1 //Park the car facing the same way as the other cars. m3_initial_direction_text_flag = 1 ENDIF ENDIF ENDIF //checking if car is damaged IF NOT IS_CAR_HEALTH_GREATER m3_dgcar1[1] 700 OR IS_CAR_VISIBLY_DAMAGED m3_dgcar1[1] REMOVE_BLIP m3_docg_manager_blip REMOVE_BLIP spray_shop2 ADD_SPRITE_BLIP_FOR_COORD 488.0 -1734.0 34.4 RADAR_SPRITE_SPRAY spray_shop2 CLEAR_PRINTS PRINT ( STP3_22 ) 11000 1 //The car is damaged, go and get it repaired. m3_control_flag = 0 ENDIF ENDIF ENDIF //player has acheived the correct position IF IS_CAR_HEALTH_GREATER m3_dgcar1[1] 700 IF NOT IS_CAR_VISIBLY_DAMAGED m3_dgcar1[1] IF m3_control_flag = 2 SET_PLAYER_CONTROL player1 OFF MARK_CHAR_AS_NO_LONGER_NEEDED m3_dgcar1_driver[1] REMOVE_BLIP m3_docg_manager_blip REMOVE_BLIP spray_shop2 ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 488.0 -1734.0 34.4 RADAR_SPRITE_SPRAY spray_shop2 m3_goals = 2 ENDIF ENDIF ENDIF GOSUB m3_blippage ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// FAIL CUTSCENE ///////////////////////////////////////////////////////////////////////////////// IF m3_goals = 9 ///this is used to stop control_flag from resetting other stuff within m3_goals = 0 and m3_goals = 1 m3_control_flag = 0 m3_goals = 10 ENDIF IF m3_goals = 10 GOSUB check_player_is_safe IF player_is_completely_safe = 1 //m3_how_many_cars_flag = 0 //show two cars pulling away //m3_how_many_cars_flag = 1 //show three cars pulling away IF m3_control_flag = 0 CLEAR_PRINTS DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 m3_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SHUT_ALL_CHARS_UP TRUE IF LOCATE_CHAR_ANY_MEANS_2D scplayer 1306.4 -1137.5 20.0 20.0 FALSE CLEAR_AREA 1247.1 -1156.0 22.7 1.0 TRUE SET_CHAR_COORDINATES scplayer 1247.1 -1156.0 22.7 ENDIF LOAD_SCENE 1305.5 -1131.7 22.6 DELETE_CAR m3_dgcar1[0] MARK_CAR_AS_NO_LONGER_NEEDED m3_dgcar1[1] //player could be in this car DELETE_CHAR m3_dgcar1_driver[1] DELETE_CAR m3_dgcar1[2] SET_RADIO_CHANNEL RS_OFF CLEAR_AREA 1303.5 -1131.5 22.6 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 WBDYG1 1303.5 -1131.5 22.6 m3_dgcar1_driver[0] SET_CHAR_HEADING m3_dgcar1_driver[0] 168.1 SET_CHAR_DECISION_MAKER m3_dgcar1_driver[0] m3_empty_ped_decision_maker CLEAR_AREA 1297.6 -1137.2 22.5 5.0 TRUE m3_no_plates = ELEGANT GOSUB m3_my_number_plates CREATE_CAR ELEGANT 1297.6 -1137.2 22.5 m3_dgcar1[0] SET_CAR_HEADING m3_dgcar1[0] 90.0 CHANGE_CAR_COLOUR m3_dgcar1[0] 0 0 MARK_CAR_AS_CONVOY_CAR m3_dgcar1[0] TRUE TASK_ENTER_CAR_AS_DRIVER m3_dgcar1_driver[0] m3_dgcar1[0] -1 CLEAR_AREA 1305.5 -1131.7 22.6 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 WBDYG1 1305.5 -1131.7 22.6 m3_dgcar1_driver[2] SET_CHAR_HEADING m3_dgcar1_driver[2] 168.1 SET_CHAR_DECISION_MAKER m3_dgcar1_driver[2] m3_empty_ped_decision_maker CLEAR_AREA 1316.5 -1137.2 22.5 5.0 TRUE m3_no_plates = ELEGANT GOSUB m3_my_number_plates CREATE_CAR ELEGANT 1316.5 -1137.2 22.5 m3_dgcar1[2] SET_CAR_HEADING m3_dgcar1[2] 90.0 CHANGE_CAR_COLOUR m3_dgcar1[2] 0 0 MARK_CAR_AS_CONVOY_CAR m3_dgcar1[2] TRUE SET_CAR_STRAIGHT_LINE_DISTANCE m3_dgcar1[2] 50 IF m3_how_many_cars_flag = 1 CLEAR_AREA 1306.4 -1137.5 22.5 5.0 TRUE m3_no_plates = ELEGANT GOSUB m3_my_number_plates CREATE_CAR ELEGANT 1306.4 -1137.5 22.5 m3_dgcar1[1] SET_CAR_HEADING m3_dgcar1[1] 90.0 CHANGE_CAR_COLOUR m3_dgcar1[1] 0 0 MARK_CAR_AS_CONVOY_CAR m3_dgcar1[2] TRUE SET_CAR_STRAIGHT_LINE_DISTANCE m3_dgcar1[1] 50 GENERATE_RANDOM_INT_IN_RANGE 0 3 m3_cs CREATE_CHAR_INSIDE_CAR m3_dgcar1[1] PEDTYPE_MISSION2 m3_char_select[m3_cs] m3_dgcar1_driver[1] ELSE IF NOT IS_CAR_DEAD m3_dgcar1[1] IF LOCATE_CAR_2D m3_dgcar1[1] 1306.4 -1137.5 20.0 20.0 FALSE SET_CAR_COORDINATES m3_dgcar1[1] 1247.5 -1151.8 22.6 ENDIF ENDIF ENDIF SET_FIXED_CAMERA_POSITION 1292.8 -1143.5 24.3 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1302.3 -1136.2 24.0 JUMP_CUT CLEAR_PRINTS IF m3_how_many_cars_flag = 0 PRINT_NOW ( STP3_20 ) 8000 1 //You were too slow! Doc G's other cars have left without you. ELSE PRINT_NOW ( STP3_21 ) 8000 1 //You were too slow! Doc G's cars have left! ENDIF DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE timera = 0 m3_control_flag = 1 ENDIF ENDIF IF m3_control_flag = 1 IF timera > 1000 IF NOT IS_CAR_DEAD m3_dgcar1[2] IF NOT IS_CHAR_DEAD m3_dgcar1_driver[2] TASK_ENTER_CAR_AS_DRIVER m3_dgcar1_driver[2] m3_dgcar1[2] -1 ENDIF ENDIF m3_control_flag = 2 ENDIF ENDIF IF m3_control_flag = 2 IF NOT IS_CHAR_DEAD m3_dgcar1_driver[2] GET_SCRIPT_TASK_STATUS m3_dgcar1_driver[2] TASK_ENTER_CAR_AS_DRIVER task_status IF task_status = FINISHED_TASK IF NOT IS_CAR_DEAD m3_dgcar1[0] IF NOT IS_CHAR_DEAD m3_dgcar1_driver[0] OPEN_SEQUENCE_TASK m3_limo_seq TASK_CAR_DRIVE_TO_COORD -1 m3_dgcar1[0] 1103.3 -1140.9 22.7 15.0 MODE_ACCURATE 1 DRIVINGMODE_AVOIDCARS //front car CLOSE_SEQUENCE_TASK m3_limo_seq PERFORM_SEQUENCE_TASK m3_dgcar1_driver[0] m3_limo_seq CLEAR_SEQUENCE_TASK m3_limo_seq ENDIF ENDIF IF NOT IS_CAR_DEAD m3_dgcar1[2] IF NOT IS_CHAR_DEAD m3_dgcar1_driver[2] OPEN_SEQUENCE_TASK m3_limo_seq TASK_PAUSE -1 500 TASK_CAR_DRIVE_TO_COORD -1 m3_dgcar1[2] 1103.3 -1140.9 22.7 15.0 MODE_ACCURATE 1 DRIVINGMODE_AVOIDCARS //front car CLOSE_SEQUENCE_TASK m3_limo_seq PERFORM_SEQUENCE_TASK m3_dgcar1_driver[2] m3_limo_seq CLEAR_SEQUENCE_TASK m3_limo_seq ENDIF ENDIF IF m3_how_many_cars_flag = 1 IF NOT IS_CAR_DEAD m3_dgcar1[1] IF NOT IS_CHAR_DEAD m3_dgcar1_driver[1] OPEN_SEQUENCE_TASK m3_limo_seq TASK_PAUSE -1 1000 TASK_CAR_DRIVE_TO_COORD -1 m3_dgcar1[1] 1103.3 -1140.9 22.7 15.0 MODE_ACCURATE 1 DRIVINGMODE_AVOIDCARS //front car CLOSE_SEQUENCE_TASK m3_limo_seq PERFORM_SEQUENCE_TASK m3_dgcar1_driver[1] m3_limo_seq CLEAR_SEQUENCE_TASK m3_limo_seq ENDIF ENDIF ENDIF m3_control_flag = 3 ENDIF ENDIF ENDIF IF m3_control_flag = 3 IF NOT IS_CAR_DEAD m3_dgcar1[0] IF NOT IS_CAR_ON_SCREEN m3_dgcar1[0] DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SHUT_ALL_CHARS_UP FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT GET_CHAR_COORDINATES scplayer m3_x m3_y m3_z LOAD_SCENE m3_x m3_y m3_z CLEAR_PRINTS PRINT_BIG M_FAIL 5000 1 IF m3_how_many_cars_flag = 0 PRINT_NOW ( STP3_20 ) 5500 1 //You were too slow! Doc G's other cars have left without you. ELSE PRINT_NOW ( STP3_21 ) 5500 1 //You were too slow! Doc G's cars have left! ENDIF DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_music3_failed ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// playing the MOOTV awards cutscene ///////////////////////////////////////////////////////////// IF m3_goals = 2 IF m3_cutscene_goals_flag = 0 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 m3_speech_goals = 0 SWITCH_AUDIO_ZONE AWARDS TRUE SHUT_ALL_CHARS_UP TRUE CLEAR_WANTED_LEVEL player1 CLEAR_AREA 1303.5 -1131.5 22.6 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 WBDYG1 1303.5 -1131.5 22.6 m3_dgcar1_driver[0] SET_CHAR_HEADING m3_dgcar1_driver[0] 168.1 GIVE_WEAPON_TO_CHAR m3_dgcar1_driver[0] WEAPONTYPE_PISTOL 3000 SET_CHAR_DECISION_MAKER m3_dgcar1_driver[0] m3_empty_ped_decision_maker CLEAR_AREA 1305.5 -1131.7 22.6 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 WBDYG1 1305.5 -1131.7 22.6 m3_dgcar1_driver[2] SET_CHAR_HEADING m3_dgcar1_driver[2] 168.1 GIVE_WEAPON_TO_CHAR m3_dgcar1_driver[2] WEAPONTYPE_PISTOL 3000 SET_CHAR_DECISION_MAKER m3_dgcar1_driver[2] m3_empty_ped_decision_maker CLEAR_AREA 1306.4 -1137.5 22.5 5.0 TRUE SET_CAR_COORDINATES m3_dgcar1[1] 1306.4 -1137.5 22.5 SET_CAR_HEADING m3_dgcar1[1] 90.0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_FIXED_CAMERA_POSITION 1288.6 -1146.2 28.9 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1301.0 -1137.2 23.3 JUMP_CUT FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION m3_dgcar1[0] FALSE TASK_ENTER_CAR_AS_DRIVER m3_dgcar1_driver[0] m3_dgcar1[0] -1 timera = 0 m3_cutscene_goals_flag = 1 ENDIF IF m3_cutscene_goals_flag = 1 IF timera > 1000 IF NOT IS_CHAR_DEAD m3_dgcar1_driver[2] FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION m3_dgcar1[2] FALSE TASK_ENTER_CAR_AS_DRIVER m3_dgcar1_driver[2] m3_dgcar1[2] -1 ENDIF m3_skip_cutscene_flag = 1 SKIP_CUTSCENE_START m3_cutscene_goals_flag = 2 ENDIF ENDIF IF m3_cutscene_goals_flag = 2 IF NOT IS_CHAR_DEAD m3_dgcar1_driver[2] GET_SCRIPT_TASK_STATUS m3_dgcar1_driver[2] TASK_ENTER_CAR_AS_DRIVER task_status IF task_status = FINISHED_TASK //Hey, what kept you? m3_speech_goals = 8 m3_speech_control_flag = 0 m3_random_last_label = 2 GOSUB m3_dialogue_setup m3_cutscene_goals_flag = 3 ENDIF ENDIF ENDIF IF m3_cutscene_goals_flag = 3 IF m3_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m3_death_checks IF m3_deathcheck_flag = 1 GOTO mission_music3_failed ENDIF REQUEST_MODEL BMYRI REQUEST_MODEL WFYRI //REQUEST_MODEL WMYPAP1 //REQUEST_MODEL WMYPAP2 REQUEST_MODEL CAMERA REQUEST_MODEL STRETCH REQUEST_MODEL LAPD1 REQUEST_MODEL DYN_ROADBARRIER_2 LOAD_ALL_MODELS_NOW SET_RADIO_CHANNEL RS_OFF WHILE has_crowd_been_created = 0 WAIT 0 GOSUB m3_creating_crowd ENDWHILE GOSUB m3_death_checks IF m3_deathcheck_flag = 1 GOTO mission_music3_failed ENDIF SET_TIME_OF_DAY 22 00 CLEAR_AREA 1022.2 -1133.2 24.0 80.0 TRUE LOAD_SCENE 1022.2 -1133.2 24.0 SET_FIXED_CAMERA_POSITION 996.6 -1144.4 29.8 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1018.9 -1133.7 23.5 JUMP_CUT //PRINT_NOW ( STP3_05 ) 4000 1 //THE M00TV AWARDS CEREMONY DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m3_death_checks IF m3_deathcheck_flag = 1 GOTO mission_music3_failed ENDIF m3_cutscene_goals_flag = 4 timera = 0 ENDIF ENDIF IF m3_cutscene_goals_flag = 4 IF NOT IS_CAR_DEAD m3_limo[0] IF NOT IS_CHAR_DEAD m3_limo_driver[0] GET_SCRIPT_TASK_STATUS m3_limo_driver[0] PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK GET_OFFSET_FROM_CAR_IN_WORLD_COORDS m3_limo[0] 1.7 1.5 0.0 m3_x m3_y z OPEN_SEQUENCE_TASK m3_limo_seq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 m3_x m3_y m3_z PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 0.0 CLOSE_SEQUENCE_TASK m3_limo_seq PERFORM_SEQUENCE_TASK m3_limo_driver[0] m3_limo_seq CLEAR_SEQUENCE_TASK m3_limo_seq ENDIF ENDIF ENDIF m3_cutscene_goals_flag = 5 ENDIF IF m3_cutscene_goals_flag = 5 GOSUB m3_cameras IF timera > 4000 SET_FIXED_CAMERA_POSITION 1026.3 -1123.6 24.3 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1023.6 -1123.8 24.3 JUMP_CUT // Congratulations on your award, you must be thrilled! m3_speech_goals = 11 m3_speech_control_flag = 0 GOSUB m3_dialogue_setup m3_cutscene_goals_flag = 6 ENDIF ENDIF IF m3_cutscene_goals_flag = 6 IF m3_speech_goals = 0 // Yeah, yeah, yeah, yeah, I'd like to thank my fans, my momma and my dealer. m3_speech_goals = 12 m3_speech_control_flag = 0 GOSUB m3_dialogue_setup IF NOT IS_CHAR_DEAD mc1 TASK_PLAY_ANIM mc1 IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 ENDIF m3_cutscene_goals_flag = 7 ENDIF ENDIF IF m3_cutscene_goals_flag = 7 GOSUB m3_cameras IF m3_speech_goals = 0 IF m3_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m3_death_checks IF m3_deathcheck_flag = 1 GOTO mission_music3_failed ENDIF CLEAR_AREA 1305.5 -1131.7 22.6 60.0 TRUE LOAD_SCENE 1305.5 -1131.7 22.6 SET_FIXED_CAMERA_POSITION 1288.6 -1146.2 28.9 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1301.0 -1137.2 23.3 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m3_death_checks IF m3_deathcheck_flag = 1 GOTO mission_music3_failed ENDIF //Hold position in the middle of the motorcade until we get to the Awards Show. m3_speech_goals = 8 m3_speech_control_flag = 2 m3_random_last_label = 4 GOSUB m3_dialogue_setup m3_cutscene_goals_flag = 8 ENDIF ENDIF ENDIF IF m3_cutscene_goals_flag = 8 IF m3_speech_goals = 0 //LOAD_SCENE 1317.7 -1145.3 22.9 m3_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB m3_death_checks IF m3_deathcheck_flag = 1 GOTO mission_music3_failed ENDIF //if cutscene has been skipped IF m3_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 m3_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m3_death_checks IF m3_deathcheck_flag = 1 GOTO mission_music3_failed ENDIF FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION m3_dgcar1[0] FALSE IF IS_CHAR_DEAD m3_dgcar1_driver[0] CLEAR_AREA 1303.5 -1131.5 22.6 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 WBDYG1 1303.5 -1131.5 22.6 m3_dgcar1_driver[0] SET_CHAR_HEADING m3_dgcar1_driver[0] 168.1 GIVE_WEAPON_TO_CHAR m3_dgcar1_driver[0] WEAPONTYPE_PISTOL 3000 ENDIF IF NOT IS_CHAR_DEAD m3_dgcar1_driver[0] IF NOT IS_CHAR_IN_CAR m3_dgcar1_driver[0] m3_dgcar1[0] WARP_CHAR_INTO_CAR m3_dgcar1_driver[0] m3_dgcar1[0] ENDIF ENDIF FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION m3_dgcar1[2] FALSE IF IS_CHAR_DEAD m3_dgcar1_driver[2] GENERATE_RANDOM_INT_IN_RANGE 0 3 m3_cs CLEAR_AREA 1305.5 -1131.7 22.6 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 WBDYG1 1305.5 -1131.7 22.6 m3_dgcar1_driver[2] SET_CHAR_HEADING m3_dgcar1_driver[2] 168.1 GIVE_WEAPON_TO_CHAR m3_dgcar1_driver[2] WEAPONTYPE_PISTOL 3000 IF NOT IS_CHAR_IN_CAR m3_dgcar1_driver[2] m3_dgcar1[2] WARP_CHAR_INTO_CAR m3_dgcar1_driver[2] m3_dgcar1[2] ENDIF ENDIF IF NOT IS_CHAR_DEAD m3_dgcar1_driver[2] IF NOT IS_CHAR_IN_CAR m3_dgcar1_driver[2] m3_dgcar1[2] WARP_CHAR_INTO_CAR m3_dgcar1_driver[2] m3_dgcar1[2] ENDIF ENDIF CLEAR_AREA 1306.4 -1137.5 22.5 5.0 TRUE SET_CAR_COORDINATES m3_dgcar1[1] 1306.4 -1137.5 22.5 SET_CAR_HEADING m3_dgcar1[1] 90.0 REQUEST_MODEL BMYRI REQUEST_MODEL WFYRI REQUEST_MODEL CAMERA REQUEST_MODEL STRETCH REQUEST_MODEL LAPD1 LOAD_ALL_MODELS_NOW WHILE has_crowd_been_created = 0 WAIT 0 GOSUB m3_creating_crowd ENDWHILE GOSUB m3_death_checks IF m3_deathcheck_flag = 1 GOTO mission_music3_failed ENDIF SET_TIME_OF_DAY 22 00 ENDIF MARK_CAR_AS_CONVOY_CAR m3_dgcar1[0] TRUE MARK_CAR_AS_CONVOY_CAR m3_dgcar1[1] TRUE MARK_CAR_AS_CONVOY_CAR m3_dgcar1[2] TRUE DELETE_CHAR mc1 DELETE_CHAR wc1 DELETE_CHAR m3_interviewer DELETE_CHAR m3_limo_driver[0] DELETE_CHAR m3_limo_driver[1] DELETE_CAR m3_limo[0] DELETE_CAR m3_limo[1] MARK_MODEL_AS_NO_LONGER_NEEDED BMYRI MARK_MODEL_AS_NO_LONGER_NEEDED WFYRI MARK_MODEL_AS_NO_LONGER_NEEDED STRETCH LOCK_CAR_DOORS m3_dgcar1[1] CARLOCK_LOCKED SHUT_ALL_CHARS_UP FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON //CREATE_CHECKPOINT CHECKPOINT_TORUS_UPDOWN 1306.4 -1137.5 22.5 1306.4 -1137.5 27.5 5.0 m3_checkpoint //PRINT_NOW ( STP3_44 ) 3000 1 //OTHER LIMO DRIVER: Right, stick close and let's roll PRINT ( STP3_06 ) 7000 1 //Follow the other cars in a convoy until you reach the awards ceremony. //if cutscene has been skipped IF m3_skip_cutscene_flag = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m3_death_checks IF m3_deathcheck_flag = 1 GOTO mission_music3_failed ENDIF ENDIF IF NOT IS_CHAR_DEAD m3_dgcar1_driver[0] TASK_CAR_DRIVE_TO_COORD m3_dgcar1_driver[0] m3_dgcar1[0] 1015.1 -1139.2 22.7 15.0 MODE_ACCURATE 1 DRIVINGMODE_AVOIDCARS //front car ENDIF IF NOT IS_CHAR_DEAD m3_dgcar1_driver[2] SET_CAR_FOLLOW_CAR m3_dgcar1[2] m3_dgcar1[0] 27.0 SET_CAR_CRUISE_SPEED m3_dgcar1[2] 15.0 SET_CAR_DRIVING_STYLE m3_dgcar1[2] DRIVINGMODE_SLOWDOWNFORCARS ENDIF m3_speech_flag = 0 m3_control_flag = 0 m3_goals = 3 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////Waiting for the cars to arrive at the awards//////////////////////////////////////////////////// //waiting for cars to arrive at awards IF m3_goals = 3 IF m3_speech_flag = 0 IF LOCATE_CAR_2D m3_dgcar1[0] 1094.8 -1142.6 3.0 3.0 FALSE //Keep frosty, guys. m3_speech_goals = 8 m3_speech_control_flag = 4 m3_random_last_label = 5 GOSUB m3_dialogue_setup m3_speech_flag = 1 ENDIF ENDIF IF m3_control_flag = 0 IF LOCATE_CAR_2D m3_dgcar1[0] 1015.1 -1139.2 3.0 3.0 FALSE GET_OFFSET_FROM_CAR_IN_WORLD_COORDS m3_dgcar1[0] 0.0 -12.0 0.0 m3_x m3_y z REMOVE_BLIP m3_docg_manager_blip ADD_BLIP_FOR_COORD m3_x m3_y m3_z m3_docg_manager_blip m3_control_flag = 1 ENDIF ENDIF IF m3_control_flag = 1 IF LOCATE_CAR_2D m3_dgcar1[1] m3_x m3_y 9.0 9.0 FALSE PRINT_NOW ( STP3_32 ) 7000 1 //Stop the car here. ELSE CLEAR_PRINTS ENDIF IF LOCATE_STOPPED_CAR_2D m3_dgcar1[1] m3_x m3_y 10.0 10.0 FALSE AND IS_CHAR_SITTING_IN_CAR scplayer m3_dgcar1[1] REMOVE_BLIP m3_docg_manager_blip //PRINT_NOW ( STP3_12 ) 7000 1 //Wait for Doc G to get into your vehicle. CLEAR_PRINTS m3_control_flag = 0 IF m3_shit_hit_fan = 0 m3_speech_flag = 0 m3_goals = 4 ENDIF ENDIF ENDIF //creating the checkpoint you have to stay in //GET_OFFSET_FROM_CAR_IN_WORLD_COORDS m3_dgcar1[0] 0.0 -12.0 0.0 m3_x m3_y z //SET_CHECKPOINT_COORDS m3_checkpoint m3_x m3_y z //failing GOSUB m3_stray_timer IF NOT IS_CAR_DEAD m3_dgcar1[1] IF NOT IS_CHAR_IN_CAR scplayer m3_dgcar1[1] CLEAR_PRINTS PRINT_NOW ( STP3_12 ) 4000 1 //You left the car and alerted the other drivers! GOTO mission_music3_failed ENDIF ENDIF GOSUB m3_damaging_other_cars ///// MISC - CHECKING NO-ONE HAS DIED AT CEREMONY IF has_crowd_been_created = 1 GOSUB m3_crowd_death_checks IF m3_shit_hit_fan = 4 CLEAR_PRINTS PRINT_NOW ( STP3_24 ) 4000 1 //Doc G's Manager has been spooked and refuses to come out! GOTO mission_music3_failed ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////GOAL 1 - Waiting for Doc G to enter the car and telling the cars to start heading to the mansion/////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF m3_goals = 4 IF m3_control_flag = 0 CLEAR_PRINTS DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m3_death_checks IF m3_deathcheck_flag = 1 GOTO mission_music3_failed ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 m3_speech_goals = 0 SHUT_ALL_CHARS_UP TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SET_RADIO_CHANNEL RS_OFF SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE REQUEST_MODEL BMYRI REQUEST_MODEL HFYRI LOAD_ALL_MODELS_NOW CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE m3_empty_ped_decision_maker EVENT_POTENTIAL_WALK_INTO_PED CLEAR_AREA 1021.0 -1122.0 22.9 50.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 WBDYG1 1021.0 -1122.0 22.9 m3_goons[0] SET_CHAR_HEADING m3_goons[0] 180.0 SET_ANIM_GROUP_FOR_CHAR m3_goons[0] gang2 SET_CHAR_DECISION_MAKER m3_goons[0] m3_empty_ped_decision_maker SET_CHAR_ONLY_DAMAGED_BY_PLAYER m3_goons[0] TRUE GIVE_WEAPON_TO_CHAR m3_goons[0] WEAPONTYPE_PISTOL 3000 OPEN_SEQUENCE_TASK m3_seq TASK_PAUSE -1 120 TASK_GO_STRAIGHT_TO_COORD -1 1021.0 -1133.7 22.9 PEDMOVE_WALK -1 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER -1 m3_dgcar1[0] -1 0 CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK m3_goons[0] m3_seq CLEAR_SEQUENCE_TASK m3_seq CREATE_CHAR PEDTYPE_MISSION2 WBDYG1 1022.2 -1122.0 22.9 m3_goons[1] SET_CHAR_HEADING m3_goons[1] 180.0 SET_ANIM_GROUP_FOR_CHAR m3_goons[0] gang1 SET_CHAR_DECISION_MAKER m3_goons[1] m3_empty_ped_decision_maker SET_CHAR_ONLY_DAMAGED_BY_PLAYER m3_goons[1] TRUE GIVE_WEAPON_TO_CHAR m3_goons[1] WEAPONTYPE_PISTOL 3000 OPEN_SEQUENCE_TASK m3_seq TASK_PAUSE -1 100 TASK_GO_STRAIGHT_TO_COORD -1 1022.2 -1133.7 22.9 PEDMOVE_WALK -1 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER -1 m3_dgcar1[0] -1 1 CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK m3_goons[1] m3_seq CLEAR_SEQUENCE_TASK m3_seq CREATE_CHAR PEDTYPE_MISSION2 WBDYG1 1023.4 -1122.0 22.9 m3_goons[2] GIVE_WEAPON_TO_CHAR m3_goons[2] WEAPONTYPE_PISTOL 3000 SET_CHAR_HEADING m3_goons[2] 180.0 SET_CHAR_DECISION_MAKER m3_goons[2] m3_empty_ped_decision_maker SET_CHAR_ONLY_DAMAGED_BY_PLAYER m3_goons[2] TRUE OPEN_SEQUENCE_TASK m3_seq TASK_PAUSE -1 100 TASK_GO_STRAIGHT_TO_COORD -1 1023.4 -1133.7 22.9 PEDMOVE_WALK -1 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER -1 m3_dgcar1[0] -1 2 CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK m3_goons[2] m3_seq CLEAR_SEQUENCE_TASK m3_seq //docg CREATE_CHAR PEDTYPE_GANG9 BMYRI 1021.6 -1123.2 22.9 docg_manager SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH docg_manager TRUE SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR docg_manager FALSE SET_ANIM_GROUP_FOR_CHAR m3_goons[0] gang2 SET_CHAR_HEADING docg_manager 187.9 SET_CHAR_DECISION_MAKER docg_manager m3_empty_ped_decision_maker REMOVE_BLIP m3_docg_manager_blip //ADD_BLIP_FOR_CHAR docg_manager m3_docg_manager_blip SET_CHAR_FORCE_DIE_IN_CAR docg_manager TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER docg_manager TRUE OPEN_SEQUENCE_TASK m3_seq TASK_PAUSE -1 100 TASK_GO_STRAIGHT_TO_COORD -1 1021.6 -1134.9 22.9 PEDMOVE_WALK -1 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER -1 m3_dgcar1[1] -1 1 CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK docg_manager m3_seq CLEAR_SEQUENCE_TASK m3_seq //hoochie CREATE_CHAR PEDTYPE_GANG9 HFYRI 1022.8 -1123.2 22.9 docg_hoochie SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR docg_hoochie FALSE SET_CHAR_HEADING docg_hoochie 187.9 SET_CHAR_DECISION_MAKER docg_hoochie m3_empty_ped_decision_maker SET_CHAR_ONLY_DAMAGED_BY_PLAYER docg_hoochie TRUE SET_CHAR_FORCE_DIE_IN_CAR docg_hoochie TRUE OPEN_SEQUENCE_TASK m3_seq TASK_PAUSE -1 100 TASK_GO_STRAIGHT_TO_COORD -1 1022.8 -1134.9 22.9 PEDMOVE_WALK -1 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER -1 m3_dgcar1[1] -1 2 CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK docg_hoochie m3_seq CLEAR_SEQUENCE_TASK m3_seq TASK_LOOK_AT_CHAR scplayer docg_hoochie -2 CREATE_CHAR PEDTYPE_MISSION2 WBDYG1 1022.2 -1124.4 22.9 m3_goons[4] GIVE_WEAPON_TO_CHAR m3_goons[4] WEAPONTYPE_PISTOL 3000 SET_ANIM_GROUP_FOR_CHAR m3_goons[0] gang1 SET_CHAR_HEADING m3_goons[4] 180.0 SET_CHAR_DECISION_MAKER m3_goons[4] m3_empty_ped_decision_maker SET_CHAR_ONLY_DAMAGED_BY_PLAYER m3_goons[4] TRUE OPEN_SEQUENCE_TASK m3_seq TASK_PAUSE -1 50 TASK_GO_STRAIGHT_TO_COORD -1 1022.2 -1136.1 22.9 PEDMOVE_WALK -1 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER -1 m3_dgcar1[2] -1 0 CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK m3_goons[4] m3_seq CLEAR_SEQUENCE_TASK m3_seq CREATE_CHAR PEDTYPE_MISSION2 WBDYG1 1023.4 -1124.4 22.9 m3_goons[5] GIVE_WEAPON_TO_CHAR m3_goons[5] WEAPONTYPE_PISTOL 3000 SET_CHAR_HEADING m3_goons[5] 180.0 SET_CHAR_DECISION_MAKER m3_goons[5] m3_empty_ped_decision_maker SET_CHAR_ONLY_DAMAGED_BY_PLAYER m3_goons[5] TRUE OPEN_SEQUENCE_TASK m3_seq TASK_PAUSE -1 50 TASK_GO_STRAIGHT_TO_COORD -1 1023.4 -1136.1 22.9 PEDMOVE_WALK -1 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER -1 m3_dgcar1[2] -1 1 CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK m3_goons[5] m3_seq CLEAR_SEQUENCE_TASK m3_seq CREATE_CHAR PEDTYPE_MISSION2 WBDYG1 1021.4 -1125.6 22.9 m3_goons[6] GIVE_WEAPON_TO_CHAR m3_goons[6] WEAPONTYPE_PISTOL 3000 SET_CHAR_HEADING m3_goons[6] 180.0 SET_CHAR_DECISION_MAKER m3_goons[6] m3_empty_ped_decision_maker SET_CHAR_ONLY_DAMAGED_BY_PLAYER m3_goons[6] TRUE OPEN_SEQUENCE_TASK m3_seq TASK_GO_STRAIGHT_TO_COORD -1 1021.4 -1137.3 22.9 PEDMOVE_WALK -1 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER -1 m3_dgcar1[2] -1 2 CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK m3_goons[6] m3_seq CLEAR_SEQUENCE_TASK m3_seq IF NOT IS_CAR_DEAD m3_dgcar1[0] CLEAR_AREA 1015.1 -1139.2 22.9 50.0 TRUE SET_CAR_COORDINATES m3_dgcar1[0] 1015.1 -1139.2 22.9 SET_CAR_HEADING m3_dgcar1[0] 90.0 ENDIF IF NOT IS_CAR_DEAD m3_dgcar1[1] CLEAR_AREA 1025.1 -1139.2 22.9 50.0 TRUE SET_CAR_COORDINATES m3_dgcar1[1] 1025.1 -1139.2 22.9 SET_CAR_HEADING m3_dgcar1[1] 90.0 ENDIF IF NOT IS_CAR_DEAD m3_dgcar1[2] CLEAR_AREA 1035.1 -1139.2 22.9 50.0 TRUE SET_CAR_COORDINATES m3_dgcar1[2] 1035.1 -1139.2 22.9 SET_CAR_HEADING m3_dgcar1[2] 90.0 ENDIF //DELETE_CHECKPOINT m3_checkpoint LOCK_CAR_DOORS m3_dgcar1[1] CARLOCK_UNLOCKED SET_FIXED_CAMERA_POSITION 1021.4 -1135.3 23.5 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1021.7 -1124.1 25.2 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m3_death_checks IF m3_deathcheck_flag = 1 GOTO mission_music3_failed ENDIF m3_skip_cutscene_flag = 1 SKIP_CUTSCENE_START m3_control_flag = 1 ENDIF IF m3_control_flag = 1 IF NOT IS_CHAR_DEAD docg_manager IF IS_CHAR_IN_AREA_2D docg_manager 1019.7 -1130.2 1025.7 -1135.0 FALSE SET_FIXED_CAMERA_POSITION 1024.7 -1141.7 24.0 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1024.6 -1138.7 23.9 JUMP_CUT m3_control_flag = 2 ENDIF ENDIF ENDIF IF m3_control_flag = 2 //giving orders and weapons to goons IF NOT IS_CAR_DEAD m3_dgcar1[1] IF NOT IS_CHAR_DEAD docg_manager IF IS_CHAR_IN_CAR docg_manager m3_dgcar1[1] SET_RADIO_CHANNEL RS_NEW_JACK_SWING //doc g manager talking to player at awards ceremony m3_speech_goals = 2 m3_speech_control_flag = 0 GOSUB m3_dialogue_setup timera = 0 m3_control_flag = 3 ENDIF ENDIF ENDIF ENDIF IF m3_control_flag = 3 IF m3_speech_goals = 0 PLAY_MISSION_AUDIO 3 m3_control_flag = 4 ENDIF ENDIF IF m3_control_flag = 4 IF HAS_MISSION_AUDIO_FINISHED 3 m3_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB m3_death_checks IF m3_deathcheck_flag = 1 GOTO mission_music3_failed ENDIF //if cutscene has been skipped IF m3_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 m3_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m3_death_checks IF m3_deathcheck_flag = 1 GOTO mission_music3_failed ENDIF //CLEAR_CHAR_TASKS scplayer IF NOT IS_CAR_DEAD m3_dgcar1[0] IF NOT IS_CHAR_DEAD m3_goons[0] IF NOT IS_CHAR_IN_ANY_CAR m3_goons[0] WARP_CHAR_INTO_CAR_AS_PASSENGER m3_goons[0] m3_dgcar1[0] 0 ENDIF ENDIF IF NOT IS_CHAR_DEAD m3_goons[1] IF NOT IS_CHAR_IN_ANY_CAR m3_goons[1] WARP_CHAR_INTO_CAR_AS_PASSENGER m3_goons[1] m3_dgcar1[0] 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD m3_goons[2] IF NOT IS_CHAR_IN_ANY_CAR m3_goons[2] WARP_CHAR_INTO_CAR_AS_PASSENGER m3_goons[2] m3_dgcar1[0] 2 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD m3_dgcar1[1] /* IF NOT IS_CHAR_DEAD m3_goons[3] IF NOT IS_CHAR_IN_ANY_CAR m3_goons[3] WARP_CHAR_INTO_CAR_AS_PASSENGER m3_goons[3] m3_dgcar1[1] 0 ENDIF ENDIF */ IF NOT IS_CHAR_DEAD docg_manager IF NOT IS_CHAR_IN_ANY_CAR docg_manager WARP_CHAR_INTO_CAR_AS_PASSENGER docg_manager m3_dgcar1[1] 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD docg_hoochie IF NOT IS_CHAR_IN_ANY_CAR docg_hoochie WARP_CHAR_INTO_CAR_AS_PASSENGER docg_hoochie m3_dgcar1[1] 2 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD m3_dgcar1[2] IF NOT IS_CHAR_DEAD m3_goons[4] IF NOT IS_CHAR_IN_ANY_CAR m3_goons[4] WARP_CHAR_INTO_CAR_AS_PASSENGER m3_goons[4] m3_dgcar1[2] 0 ENDIF ENDIF IF NOT IS_CHAR_DEAD m3_goons[5] IF NOT IS_CHAR_IN_ANY_CAR m3_goons[5] WARP_CHAR_INTO_CAR_AS_PASSENGER m3_goons[5] m3_dgcar1[2] 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD m3_goons[6] IF NOT IS_CHAR_IN_ANY_CAR m3_goons[6] WARP_CHAR_INTO_CAR_AS_PASSENGER m3_goons[6] m3_dgcar1[2] 2 ENDIF ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD m3_dgcar1[0] IF NOT IS_CHAR_DEAD m3_dgcar1_driver[0] OPEN_SEQUENCE_TASK m3_seq TASK_CAR_DRIVE_TO_COORD -1 m3_dgcar1[0] 964.6 -1055.1 27.6 15.0 MODE_ACCURATE 1 DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 m3_dgcar1[0] 965.0 -1036.4 29.0 15.0 MODE_ACCURATE 1 DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK m3_dgcar1_driver[0] m3_seq CLEAR_SEQUENCE_TASK m3_seq ENDIF ENDIF CLEAR_LOOK_AT scplayer CLEAR_PRINTS PRINT ( STP3_08 ) 7000 1 //There is a pier to the South that you can dump the car off. PRINT ( STP3_09 ) 7000 1 //Dump the car in the water but make sure no-one sees you! REMOVE_BLIP m3_docg_manager_blip ADD_BLIP_FOR_COORD 836.9 -2041.5 11.8 m3_docg_manager_blip ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE m3_empty_ped_decision_maker EVENT_POTENTIAL_WALK_INTO_PED TASK_COMPLEX_AVOID_OTHER_PED_WHILE_WANDERING 0.0 100.0 0.0 0.0 FALSE TRUE LOCK_CAR_DOORS m3_dgcar1[1] CARLOCK_LOCKED SHUT_ALL_CHARS_UP FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON IF m3_skip_cutscene_flag = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m3_death_checks IF m3_deathcheck_flag = 1 GOTO mission_music3_failed ENDIF ENDIF timera = 0 m3_control_flag = 0 m3_goals = 5 ENDIF ENDIF GOSUB m3_cameras ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////GOAL 2 - Drowning Doc G's Manager////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF m3_goals = 5 /* IF NOT IS_CAR_DEAD m3_dgcar1[1] IF IS_CHAR_IN_CAR scplayer m3_dgcar1[1] IF LOCATE_CHAR_ANY_MEANS_3D scplayer 836.0 -2036.0 11.6 5.0 5.0 5.0 TRUE ENDIF ENDIF ENDIF */ //////////////////////////////////////////////////////////// /// controlling the body guards //////////////////////////// //////////////////////////////////////////////////////////// GOSUB m3_controlling_enemy_cars IF m3_control_flag = 0 //speech for this section IF m3_speech_flag = 0 IF timera > 14000 //radio message informing guards that the manager has been swiped m3_speech_goals = 3 m3_speech_control_flag = 0 GOSUB m3_dialogue_setup m3_speech_flag = 1 ENDIF ENDIF IF m3_speech_flag = 1 IF m3_speech_goals = 0 //Doc G's Manager pleading for his life part 1 m3_speech_goals = 4 m3_speech_control_flag = 0 GOSUB m3_dialogue_setup m3_speech_flag = 2 ENDIF ENDIF IF m3_speech_flag = 2 IF m3_speech_goals = 0 //Doc G's Manager pleading for his life part 2 m3_speech_goals = 5 m3_speech_control_flag = 0 GOSUB m3_dialogue_setup m3_speech_flag = 3 ENDIF ENDIF IF m3_speech_flag = 3 IF IS_CHAR_IN_AREA_3D scplayer 789.4 -1798.8 10.0 896.9 -1763.6 20.0 FALSE IF m3_speech_goals = 5 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 m3_speech_goals = 0 CLEAR_PRINTS //Doc G's Manager pleading for his life part 2 m3_speech_goals = 10 m3_speech_control_flag = 0 GOSUB m3_dialogue_setup m3_speech_flag = 4 IF NOT IS_CHAR_DEAD docg_manager SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH docg_manager FALSE ENDIF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD docg_hoochie IF NOT IS_CHAR_TALKING docg_hoochie IF m3_speech_flag = 0 IF timera < 10000 SET_CHAR_SAY_CONTEXT docg_hoochie CONTEXT_GLOBAL_PAIN_ON_FIRE m3_context ENDIF ENDIF IF m3_speech_flag = 3 OR m3_speech_flag = 4 SET_CHAR_SAY_CONTEXT docg_hoochie CONTEXT_GLOBAL_PAIN_ON_FIRE m3_context ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////// ///waiting for player to dump the enemy car in the water!/// //////////////////////////////////////////////////////////// IF m3_control_flag = 0 IF NOT IS_CAR_DEAD m3_dgcar1[1] IF IS_CHAR_IN_CAR scplayer m3_dgcar1[1] IF m3_help_flag = 0 IF IS_CHAR_IN_AREA_3D scplayer 853.7 -1810.1 10.0 818.5 -1874.0 20.0 FALSE PRINT_HELP_FOREVER STP3_35 // Keep your speed up to the end of the pier then press ~m~~widget_enter_car~ to bail out. m3_help_flag = 1 ENDIF ENDIF IF m3_help_flag = 1 GET_CAR_SPEED m3_dgcar1[1] m3_car_speed IF m3_car_speed > 10.0 IF IS_CHAR_IN_AREA_3D scplayer 820.0 -2004.0 10.0 852.4 -2068.0 20.0 FALSE PRINT_HELP_FOREVER STP3_34 // Press ~m~~widget_enter_car~ to bail out now! m3_help_flag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF //checking to see if the car has ended off the end of the pier IF NOT IS_CAR_DEAD m3_dgcar1[1] IF NOT IS_CHAR_IN_CAR scplayer m3_dgcar1[1] //going off the end of the pier IF IS_CAR_IN_AREA_3D m3_dgcar1[1] 855.6 -2067.9 5.0 812.6 -2085.9 20.0 FALSE SET_TIME_SCALE 0.3 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 m3_speech_goals = 0 CLEAR_PRINTS SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR SET_FIXED_CAMERA_POSITION 813.5 -2128.9 2.2 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 847.6 -2068.1 11.7 JUMP_CUT GOSUB m3_baddy_close_check m3_speech_flag = 0 timera = 0 m3_control_flag = 1 ENDIF ENDIF ENDIF //removing blip if car is in water IF IS_CAR_IN_WATER m3_dgcar1[1] REMOVE_BLIP m3_docg_manager_blip GOSUB m3_baddy_close_check m3_speech_goals = 0 m3_control_flag = 2 ENDIF ENDIF IF m3_control_flag = 1 IF m3_speech_flag = 0 //doc g screaming holy fuck m3_speech_goals = 6 m3_speech_control_flag = 0 GOSUB m3_dialogue_setup m3_speech_flag = 1 ENDIF IF IS_CAR_IN_WATER m3_dgcar1[1] OR timera > 10000 SET_TIME_SCALE 1.0 timera = 0 m3_control_flag = 2 ENDIF ENDIF IF m3_control_flag = 2 IF timera > 500 IF m3_speech_goals = 0 IF m3_baddy_in_range_check = 0 timera = 0 m3_goals = 7 ELSE SET_PLAYER_CONTROL player1 ON MAKE_PLAYER_GANG_REAPPEAR SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT m3_control_flag = 0 timerb = 0 m3_goals = 6 ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////// ///////////////////MISC SHIT//////////////////////////////// //////////////////////////////////////////////////////////// //clearing help IF IS_BUTTON_PRESSED PAD1 TRIANGLE OR timera > 11000 CLEAR_HELP ENDIF //crowd checks IF m3_shit_hit_fan < 4 GOSUB m3_crowd_death_checks ENDIF //removing ceremony crowd IF m3_removing_crowd < 3 GOSUB m3_removing_crowd_after_ceremony ENDIF //failin IF m3_control_flag = 0 IF NOT IS_CAR_IN_WATER m3_dgcar1[1] IF IS_CHAR_DEAD docg_manager CLEAR_PRINTS PRINT_NOW ( STP3_31 ) 4000 1 //You didn't dump the car in the water! GOTO mission_music3_failed ENDIF IF NOT IS_CAR_DEAD m3_dgcar1[1] IF NOT IS_CHAR_IN_CAR scplayer m3_dgcar1[1] IF IS_CAR_STOPPED m3_dgcar1[1] TASK_LEAVE_CAR_AND_FLEE docg_manager m3_dgcar1[1] 2316.4 -1519.2 24.3 CLEAR_PRINTS PRINT_NOW ( STP3_18 ) 4000 1 //You let Doc G's Manager escape! GOTO mission_music3_failed ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////// Manager is dead, waiting to kill bodyguards ////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF m3_goals = 6 GOSUB m3_controlling_enemy_cars IF m3_control_flag = 0 IF m3_baddy_in_range_check = 0 timera = 0 m3_goals = 7 ELSE REMOVE_BLIP m3_docg_manager_blip IF NOT IS_CHAR_DEAD m3_dgcar1_driver[0] ADD_BLIP_FOR_CHAR m3_dgcar1_driver[0] m3_goon_blips[0] ENDIF IF NOT IS_CHAR_DEAD m3_dgcar1_driver[2] ADD_BLIP_FOR_CHAR m3_dgcar1_driver[2] m3_goon_blips[1] ENDIF IF NOT IS_CHAR_DEAD m3_goons[0] ADD_BLIP_FOR_CHAR m3_goons[0] m3_goon_blips[2] ENDIF IF NOT IS_CHAR_DEAD m3_goons[1] ADD_BLIP_FOR_CHAR m3_goons[1] m3_goon_blips[3] ENDIF IF NOT IS_CHAR_DEAD m3_goons[2] ADD_BLIP_FOR_CHAR m3_goons[2] m3_goon_blips[4] ENDIF IF NOT IS_CHAR_DEAD m3_goons[4] ADD_BLIP_FOR_CHAR m3_goons[4] m3_goon_blips[5] ENDIF IF NOT IS_CHAR_DEAD m3_goons[5] ADD_BLIP_FOR_CHAR m3_goons[5] m3_goon_blips[6] ENDIF IF NOT IS_CHAR_DEAD m3_goons[6] ADD_BLIP_FOR_CHAR m3_goons[6] m3_goon_blips[7] ENDIF PRINT_NOW ( STP3_26 ) 11000 1 //One of the other drivers saw you dispose of Doc G's Manager. Kill them! m3_control_flag = 1 ENDIF ENDIF IF m3_control_flag = 1 IF IS_CHAR_DEAD m3_dgcar1_driver[0] REMOVE_BLIP m3_goon_blips[0] ENDIF IF IS_CHAR_DEAD m3_dgcar1_driver[2] REMOVE_BLIP m3_goon_blips[1] ENDIF IF IS_CHAR_DEAD m3_goons[0] REMOVE_BLIP m3_goon_blips[2] ENDIF IF IS_CHAR_DEAD m3_goons[1] REMOVE_BLIP m3_goon_blips[3] ENDIF IF IS_CHAR_DEAD m3_goons[2] REMOVE_BLIP m3_goon_blips[4] ENDIF IF IS_CHAR_DEAD m3_goons[4] REMOVE_BLIP m3_goon_blips[5] ENDIF IF IS_CHAR_DEAD m3_goons[5] REMOVE_BLIP m3_goon_blips[6] ENDIF IF IS_CHAR_DEAD m3_goons[6] REMOVE_BLIP m3_goon_blips[7] ENDIF IF IS_CHAR_DEAD m3_dgcar1_driver[0] IF IS_CHAR_DEAD m3_dgcar1_driver[2] IF IS_CHAR_DEAD m3_goons[0] IF IS_CHAR_DEAD m3_goons[1] IF IS_CHAR_DEAD m3_goons[2] IF IS_CHAR_DEAD m3_goons[4] IF IS_CHAR_DEAD m3_goons[5] IF IS_CHAR_DEAD m3_goons[6] timera = 2000 m3_goals = 7 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////GOAL 3 - Waiting for doc g to drown//////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF m3_goals = 7 IF timera > 3000 SET_PLAYER_CONTROL player1 ON MAKE_PLAYER_GANG_REAPPEAR SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT GOTO mission_music3_passed ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////// MISC ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //prompting player that he doesn't have long left IF m3_warning_text = 0 IF m3_goals = 0 OR m3_goals = 1 IF m3_hours > 21 //IF minutes > 30 PRINT ( STP3_28 ) 7000 1 //Hurry up, you have to meet the other drivers before 10pm! m3_warning_text = 1 //ENDIF ENDIF ENDIF ENDIF //ingame dialogue GOSUB m3_overall_dialogue GOTO mission_music3_loop mission_music3_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN mission_music3_passed: flag_strap_mission_counter ++ CLEAR_PRINTS SET_INT_STAT PASSED_STRAP3 1 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 5 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 5//amount of respect REGISTER_MISSION_PASSED STRAP_3 PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL PLAYER1 REMOVE_BLIP strap_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT strapX strapY strapZ strap_blip_icon strap_contact_blip PLAYER_MADE_PROGRESS 1 RETURN mission_cleanup_music3: DISPLAY_RADAR 3 // PATHING ON SWITCH_AUDIO_ZONE AWARDS FALSE SET_TIME_SCALE 1.0 //SET_CAMERA_BEHIND_PLAYER //SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF IF IS_STRING_EMPTY $shop_name RESTORE_CAMERA_JUMPCUT ENDIF REMOVE_BLIP m3_docg_manager_blip //DELETE_CHECKPOINT m3_checkpoint REMOVE_BLIP spray_shop2 ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 488.0 -1734.0 34.4 RADAR_SPRITE_SPRAY spray_shop2 REMOVE_CHAR_ELEGANTLY docg_manager REMOVE_CHAR_ELEGANTLY docg_hoochie IF NOT IS_CAR_DEAD m3_dgcar1[0] IMPROVE_CAR_BY_CHEATING m3_dgcar1[0] FALSE ENDIF IF NOT IS_CAR_DEAD m3_dgcar1[2] IMPROVE_CAR_BY_CHEATING m3_dgcar1[2] FALSE ENDIF IF NOT IS_CAR_DEAD m3_dgcar1[1] LOCK_CAR_DOORS m3_dgcar1[1] CARLOCK_UNLOCKED ENDIF IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF SHUT_ALL_CHARS_UP FALSE MARK_MODEL_AS_NO_LONGER_NEEDED WBDYG1 MARK_MODEL_AS_NO_LONGER_NEEDED LAPD1 MARK_MODEL_AS_NO_LONGER_NEEDED BMYRI MARK_MODEL_AS_NO_LONGER_NEEDED WFYRI MARK_MODEL_AS_NO_LONGER_NEEDED BMYRI MARK_MODEL_AS_NO_LONGER_NEEDED HFYRI MARK_MODEL_AS_NO_LONGER_NEEDED STRETCH MARK_MODEL_AS_NO_LONGER_NEEDED ELEGANT MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED CAMERA MARK_MODEL_AS_NO_LONGER_NEEDED DYN_ROADBARRIER_2 MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE UNMARK_ALL_ROAD_NODES_AS_DONT_WANDER SWITCH_ROADS_BACK_TO_ORIGINAL 802.1 -1150.2 10.0 1156.9 -1131.2 50.0 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 802.1 -1150.2 10.0 1156.9 -1131.2 50.0 SWITCH_ROADS_BACK_TO_ORIGINAL 1053.2 -1146.1 10.0 1072.5 -1215.5 50.0 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 1053.2 -1146.1 10.0 1072.5 -1215.5 50.0 SWITCH_ROADS_BACK_TO_ORIGINAL 932.9 -1154.4 10.0 951.8 -1215.4 50.0 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 932.9 -1154.4 10.0 951.8 -1215.4 50.0 SWITCH_ROADS_BACK_TO_ORIGINAL 972.1 -1135.4 10.0 952.9 -1044.3 50.0 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 972.1 -1135.4 10.0 952.9 -1044.3 50.0 SWITCH_ROADS_BACK_TO_ORIGINAL 1072.8 -1135.0 10.0 1092.4 -1045.5 50.0 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 1072.8 -1135.0 10.0 1092.4 -1045.5 50.0 ENABLE_AMBIENT_CRIME TRUE GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////// GOSUBS /////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// m3_death_checks://///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF m3_goals < 5 IF IS_CAR_DEAD m3_dgcar1[1] CLEAR_PRINTS PRINT_NOW ( STP3_10 ) 4000 1 //The convoy vehicle has been destroyed! m3_deathcheck_flag = 1 ENDIF ENDIF IF m3_goals < 5 IF IS_CAR_DEAD m3_dgcar1[0] CLEAR_PRINTS PRINT_NOW ( STP3_10 ) 4000 1 //The convoy vehicle has been destroyed! m3_deathcheck_flag = 1 ENDIF IF IS_CAR_DEAD m3_dgcar1[2] CLEAR_PRINTS PRINT_NOW ( STP3_10 ) 4000 1 //The convoy vehicle has been destroyed! m3_deathcheck_flag = 1 ENDIF ENDIF IF m3_goals = 3 IF m3_control_flag < 4 IF IS_CHAR_DEAD m3_cop[8] CLEAR_PRINTS PRINT_NOW ( STP3_16 ) 4000 1 //You killed a cop and alerted the other drivers! m3_deathcheck_flag = 1 ENDIF ENDIF ENDIF IF m3_goals > 2 IF m3_goals < 5 IF IS_CHAR_DEAD m3_dgcar1_driver[0] CLEAR_PRINTS PRINT_NOW ( STP3_17 ) 4000 1 //You killed one of the other drivers! m3_deathcheck_flag = 1 ENDIF IF IS_CHAR_DEAD m3_dgcar1_driver[2] CLEAR_PRINTS PRINT_NOW ( STP3_17 ) 4000 1 //You killed one of the other drivers! m3_deathcheck_flag = 1 ENDIF ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// m3_creating_crowd:///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF creating_crowd_flag < 20 IF creating_crowd_flag = 0 //stars CREATE_CHAR PEDTYPE_CIVMALE BMYRI 1023.4 -1123.6 22.9 mc1 SET_CHAR_HEADING mc1 267.1 SET_LOAD_COLLISION_FOR_CHAR_FLAG mc1 TRUE SET_CHAR_DECISION_MAKER mc1 m3_empty_ped_decision_maker CREATE_CHAR PEDTYPE_CIVFEMALE WFYRI 1023.1 -1124.6 22.9 wc1 SET_CHAR_HEADING wc1 296.3 SET_LOAD_COLLISION_FOR_CHAR_FLAG wc1 TRUE SET_CHAR_DECISION_MAKER wc1 m3_empty_ped_decision_maker //interviewers CREATE_CHAR PEDTYPE_CIVFEMALE WFYRI 1025.0 -1124.6 22.9 m3_interviewer SET_CHAR_HEADING m3_interviewer 90.0 SET_LOAD_COLLISION_FOR_CHAR_FLAG m3_interviewer TRUE SET_CHAR_DECISION_MAKER m3_interviewer m3_empty_ped_decision_maker //creating barriers around the roads to stop player entering and switching off nodes //EAST barriers CREATE_OBJECT DYN_ROADBARRIER_2 1092.7 -1144.2 22.7 m3_east_barrier1 SET_OBJECT_HEADING m3_east_barrier1 0.0 SET_OBJECT_COLLISION m3_east_barrier1 TRUE CREATE_OBJECT DYN_ROADBARRIER_2 1092.7 -1148.8 22.7 m3_east_barrier2 SET_OBJECT_HEADING m3_east_barrier2 90.0 SET_OBJECT_COLLISION m3_east_barrier2 TRUE SWITCH_ROADS_OFF 802.1 -1150.2 10.0 1156.9 -1131.2 50.0 SWITCH_PED_ROADS_OFF 802.1 -1150.2 10.0 1156.9 -1131.2 50.0 //SOUTH EAST barriers CREATE_OBJECT DYN_ROADBARRIER_2 1062.5 -1159.4 22.6 m3_south_east_barrier1 SET_OBJECT_HEADING m3_south_east_barrier1 180.0 SET_OBJECT_COLLISION m3_south_east_barrier1 TRUE CREATE_OBJECT DYN_ROADBARRIER_2 1054.4 -1159.4 22.6 m3_south_east_barrier2 SET_OBJECT_HEADING m3_south_east_barrier2 180.0 SET_OBJECT_COLLISION m3_south_east_barrier2 TRUE SWITCH_ROADS_OFF 1053.2 -1146.1 10.0 1072.5 -1215.5 50.0 SWITCH_PED_ROADS_OFF 1053.2 -1146.1 10.0 1072.5 -1215.5 50.0 //SOUTH WEST barriers CREATE_OBJECT DYN_ROADBARRIER_2 944.5 -1159.4 22.6 m3_south_west_barrier1 SET_OBJECT_HEADING m3_south_west_barrier1 180.0 SET_OBJECT_COLLISION m3_south_west_barrier1 TRUE CREATE_OBJECT DYN_ROADBARRIER_2 940.0 -1159.4 22.6 m3_south_west_barrier2 SET_OBJECT_HEADING m3_south_west_barrier2 180.0 SET_OBJECT_COLLISION m3_south_west_barrier2 TRUE SWITCH_ROADS_OFF 932.9 -1154.4 10.0 951.8 -1215.4 50.0 SWITCH_PED_ROADS_OFF 932.9 -1154.4 10.0 951.8 -1215.4 50.0 //WEST barriers CREATE_OBJECT DYN_ROADBARRIER_2 931.3 -1148.8 22.7 m3_west_barrier1 SET_OBJECT_HEADING m3_west_barrier1 90.0 SET_OBJECT_COLLISION m3_west_barrier1 TRUE CREATE_OBJECT DYN_ROADBARRIER_2 931.3 -1139.9 22.7 m3_west_barrier2 SET_OBJECT_HEADING m3_west_barrier2 90.0 SET_OBJECT_COLLISION m3_west_barrier2 TRUE //NORTH WEST barriers CREATE_OBJECT DYN_ROADBARRIER_2 960.2 -1130.4 22.7 m3_north_west_barrier1 SET_OBJECT_HEADING m3_north_west_barrier1 180.0 SET_OBJECT_COLLISION m3_north_west_barrier1 TRUE CREATE_OBJECT DYN_ROADBARRIER_2 967.4 -1130.4 22.7 m3_north_west_barrier2 SET_OBJECT_HEADING m3_north_west_barrier2 90.0 SET_OBJECT_COLLISION m3_north_west_barrier2 TRUE SWITCH_ROADS_OFF 972.1 -1135.4 10.0 952.9 -1044.3 50.0 SWITCH_PED_ROADS_OFF 972.1 -1135.4 10.0 952.9 -1044.3 50.0 //NORTH EAST barriers CREATE_OBJECT DYN_ROADBARRIER_2 1080.6 -1130.7 22.7 m3_north_east_barrier1 SET_OBJECT_HEADING m3_north_east_barrier1 180.0 SET_OBJECT_COLLISION m3_north_east_barrier1 TRUE CREATE_OBJECT DYN_ROADBARRIER_2 1085.5 -1130.6 22.7 m3_north_east_barrier2 SET_OBJECT_HEADING m3_north_east_barrier2 180.0 SET_OBJECT_COLLISION m3_north_east_barrier2 TRUE SWITCH_ROADS_OFF 1072.8 -1135.0 10.0 1092.4 -1045.5 50.0 SWITCH_PED_ROADS_OFF 1072.8 -1135.0 10.0 1092.4 -1045.5 50.0 //creating awards ceremony scene CREATE_OBJECT DYN_ROADBARRIER_2 1024.5 -1123.2 22.9 right_barrier1 SET_OBJECT_HEADING right_barrier1 90.0 SET_OBJECT_COLLISION right_barrier1 FALSE CREATE_OBJECT DYN_ROADBARRIER_2 1024.5 -1127.2 22.9 right_barrier2 SET_OBJECT_HEADING right_barrier2 90.0 SET_OBJECT_COLLISION right_barrier2 FALSE CREATE_OBJECT DYN_ROADBARRIER_2 1024.5 -1131.2 22.9 right_barrier3 SET_OBJECT_HEADING right_barrier3 90.0 SET_OBJECT_COLLISION right_barrier3 FALSE CREATE_OBJECT DYN_ROADBARRIER_2 1020.5 -1123.2 22.9 left_barrier1 SET_OBJECT_HEADING left_barrier1 90.0 SET_OBJECT_COLLISION left_barrier1 FALSE CREATE_OBJECT DYN_ROADBARRIER_2 1020.5 -1127.2 22.9 left_barrier2 SET_OBJECT_HEADING left_barrier2 90.0 SET_OBJECT_COLLISION left_barrier2 FALSE CREATE_OBJECT DYN_ROADBARRIER_2 1020.5 -1131.2 22.9 left_barrier3 SET_OBJECT_HEADING left_barrier3 90.0 SET_OBJECT_COLLISION left_barrier3 FALSE CREATE_OBJECT DYN_ROADBARRIER_2 1016.5 -1133.2 22.9 front_left_barrier1 SET_OBJECT_HEADING front_left_barrier1 180.0 SET_OBJECT_COLLISION front_left_barrier1 FALSE CREATE_OBJECT DYN_ROADBARRIER_2 1012.5 -1133.2 22.9 front_left_barrier2 SET_OBJECT_HEADING front_left_barrier2 180.0 SET_OBJECT_COLLISION front_left_barrier2 FALSE CREATE_OBJECT DYN_ROADBARRIER_2 1008.5 -1133.2 22.9 front_left_barrier3 SET_OBJECT_HEADING front_left_barrier3 180.0 SET_OBJECT_COLLISION front_left_barrier3 FALSE CREATE_OBJECT DYN_ROADBARRIER_2 1028.5 -1133.2 22.9 front_right_barrier1 SET_OBJECT_HEADING front_right_barrier1 180.0 SET_OBJECT_COLLISION front_right_barrier1 FALSE CREATE_OBJECT DYN_ROADBARRIER_2 1032.5 -1133.2 22.9 front_right_barrier2 SET_OBJECT_HEADING front_right_barrier2 180.0 SET_OBJECT_COLLISION front_right_barrier2 FALSE CREATE_OBJECT DYN_ROADBARRIER_2 1036.5 -1133.2 22.9 front_right_barrier3 SET_OBJECT_HEADING front_right_barrier3 180.0 SET_OBJECT_COLLISION front_right_barrier3 FALSE //right barrier first gap CREATE_CHAR PEDTYPE_MISSION2 LAPD1 1025.3 -1124.9 22.9 m3_cop[0] GIVE_WEAPON_TO_CHAR m3_cop[0] WEAPONTYPE_PISTOL 3000 SET_CHAR_HEADING m3_cop[0] 276.6 SET_LOAD_COLLISION_FOR_CHAR_FLAG m3_cop[0] TRUE //right barrier second gap CREATE_CHAR PEDTYPE_MISSION2 LAPD1 1024.7 -1129.1 22.9 m3_cop[1] GIVE_WEAPON_TO_CHAR m3_cop[1] WEAPONTYPE_PISTOL 3000 SET_CHAR_HEADING m3_cop[1] 276.6 SET_LOAD_COLLISION_FOR_CHAR_FLAG m3_cop[1] TRUE //right barrier third gap CREATE_CHAR PEDTYPE_MISSION2 LAPD1 1024.7 -1133.8 22.9 m3_cop[2] GIVE_WEAPON_TO_CHAR m3_cop[2] WEAPONTYPE_PISTOL 3000 SET_CHAR_HEADING m3_cop[2] 276.6 SET_LOAD_COLLISION_FOR_CHAR_FLAG m3_cop[2] TRUE //left barrier first gap CREATE_CHAR PEDTYPE_MISSION2 LAPD1 1020.4 -1125.2 22.9 m3_cop[3] GIVE_WEAPON_TO_CHAR m3_cop[3] WEAPONTYPE_PISTOL 3000 SET_CHAR_HEADING m3_cop[3] 92.2 SET_LOAD_COLLISION_FOR_CHAR_FLAG m3_cop[3] TRUE //left barrier second gap CREATE_CHAR PEDTYPE_MISSION2 LAPD1 1020.4 -1129.1 22.9 m3_cop[4] GIVE_WEAPON_TO_CHAR m3_cop[4] WEAPONTYPE_PISTOL 3000 SET_CHAR_HEADING m3_cop[4] 92.2 SET_LOAD_COLLISION_FOR_CHAR_FLAG m3_cop[4] TRUE //left barrier third gap CREATE_CHAR PEDTYPE_MISSION2 LAPD1 1020.4 -1133.5 22.9 m3_cop[5] GIVE_WEAPON_TO_CHAR m3_cop[5] WEAPONTYPE_PISTOL 3000 SET_CHAR_HEADING m3_cop[5] 92.2 SET_LOAD_COLLISION_FOR_CHAR_FLAG m3_cop[5] TRUE //right emergency exit CREATE_CHAR PEDTYPE_MISSION2 LAPD1 1032.6 -1115.5 22.9 m3_cop[6] GIVE_WEAPON_TO_CHAR m3_cop[6] WEAPONTYPE_PISTOL 3000 SET_CHAR_HEADING m3_cop[6] 173.9 SET_LOAD_COLLISION_FOR_CHAR_FLAG m3_cop[6] TRUE //left emergency exit CREATE_CHAR PEDTYPE_MISSION2 LAPD1 1012.0 -1115.8 22.9 m3_cop[7] GIVE_WEAPON_TO_CHAR m3_cop[7] WEAPONTYPE_PISTOL 3000 SET_CHAR_HEADING m3_cop[7] 187.9 SET_LOAD_COLLISION_FOR_CHAR_FLAG m3_cop[7] TRUE //creating limos CREATE_CAR STRETCH 1031.4 -1138.6 22.7 m3_limo[0] CREATE_CHAR_INSIDE_CAR m3_limo[0] PEDTYPE_MISSION2 WBDYG1 m3_limo_driver[0] SET_CAR_HEADING m3_limo[0] 90.0 SET_LOAD_COLLISION_FOR_CHAR_FLAG m3_limo_driver[0] TRUE OPEN_SEQUENCE_TASK m3_limo_seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_CAR_DRIVE_TO_COORD -1 m3_limo[0] 1023.3 -1138.6 22.7 15.0 MODE_ACCURATE 1 DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK m3_limo_seq PERFORM_SEQUENCE_TASK m3_limo_driver[0] m3_limo_seq CLEAR_SEQUENCE_TASK m3_limo_seq CREATE_CAR STRETCH 1042.8 -1138.6 22.7 m3_limo[1] CREATE_CHAR_INSIDE_CAR m3_limo[1] PEDTYPE_MISSION2 WBDYG1 m3_limo_driver[1] SET_CAR_HEADING m3_limo[1] 90.0 SET_LOAD_COLLISION_FOR_CHAR_FLAG m3_limo_driver[1] TRUE //create LAPD1 to open barrier CREATE_CHAR PEDTYPE_MISSION2 LAPD1 1093.7 -1145.2 22.7 m3_cop[8] GIVE_WEAPON_TO_CHAR m3_cop[8] WEAPONTYPE_PISTOL 3000 SET_CHAR_HEADING m3_cop[8] 274.6 SET_LOAD_COLLISION_FOR_CHAR_FLAG m3_cop[8] TRUE SET_CHAR_DECISION_MAKER m3_cop[8] m3_empty_ped_decision_maker //creating a dummy target for the photographers to shoot CREATE_RANDOM_CHAR 1023.6 -1122.3 22.9 m3_dummy_target SET_CHAR_VISIBLE m3_dummy_target FALSE SET_CHAR_COLLISION m3_dummy_target FALSE SET_CHAR_DECISION_MAKER m3_dummy_target m3_empty_ped_decision_maker SET_CHAR_STAY_IN_SAME_PLACE m3_dummy_target TRUE ENDIF GOSUB m3_rand_coords //GENERATE_RANDOM_INT_IN_RANGE 3 5 m3_cs CREATE_RANDOM_CHAR m3_x m3_y 22.9 crowd[creating_crowd_flag] //CREATE_CHAR PEDTYPE_MISSION2 m3_char_select[m3_cs] m3_x m3_y 22.9 crowd[creating_crowd_flag] SET_CHAR_HEADING crowd[creating_crowd_flag] heading SET_SENSE_RANGE crowd[creating_crowd_flag] 0.0 SET_CHAR_STAY_IN_SAME_PLACE crowd[creating_crowd_flag] TRUE GIVE_WEAPON_TO_CHAR crowd[creating_crowd_flag] WEAPONTYPE_CAMERA 30000 SET_CHAR_DECISION_MAKER crowd[creating_crowd_flag] m3_empty_ped_decision_maker SET_LOAD_COLLISION_FOR_CHAR_FLAG crowd[creating_crowd_flag] TRUE IF creating_crowd_flag < 5 //first five get told to do something OPEN_SEQUENCE_TASK m3_seq GENERATE_RANDOM_INT_IN_RANGE 500 2000 m3_random_number IF NOT IS_CHAR_DEAD m3_dummy_target TASK_KILL_CHAR_ON_FOOT_TIMED -1 m3_dummy_target m3_random_number ENDIF GENERATE_RANDOM_INT_IN_RANGE 1500 4000 m3_random_number TASK_PAUSE -1 m3_random_number SET_SEQUENCE_TO_REPEAT m3_seq 1 CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK crowd[creating_crowd_flag] m3_seq CLEAR_SEQUENCE_TASK m3_seq ENDIF //SET_CHAR_COLLISION crowd[creating_crowd_flag] FALSE SET_LOAD_COLLISION_FOR_CHAR_FLAG crowd[creating_crowd_flag] TRUE creating_crowd_flag ++ ELSE has_crowd_been_created = 1 ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// m3_crowd_death_checks:///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF m3_shit_hit_fan = 0 //checking crowd or cops IF crowd_flag_death_check < 20 IF IS_CHAR_DEAD crowd[crowd_flag_death_check] m3_shit_hit_fan = 1 ENDIF IF NOT IS_CHAR_DEAD crowd[crowd_flag_death_check] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR crowd[crowd_flag_death_check] scplayer m3_shit_hit_fan = 1 ENDIF ENDIF crowd_flag_death_check ++ ELSE crowd_flag_death_check = 0 ENDIF IF cop_death_check < 8 IF IS_CHAR_DEAD m3_cop[cop_death_check] m3_shit_hit_fan = 1 ENDIF IF NOT IS_CHAR_DEAD m3_cop[cop_death_check] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR m3_cop[cop_death_check] scplayer m3_shit_hit_fan = 1 ENDIF ENDIF cop_death_check ++ ELSE cop_death_check = 0 ENDIF ENDIF IF m3_shit_hit_fan = 1 crowd_flag_death_check = 0 cop_death_check = 0 m3_shit_hit_fan = 2 ENDIF IF m3_shit_hit_fan = 2 IF crowd_flag_death_check < 20 IF NOT IS_CHAR_DEAD crowd[crowd_flag_death_check] GET_SCRIPT_TASK_STATUS crowd[crowd_flag_death_check] TASK_FLEE_CHAR task_status IF task_status = FINISHED_TASK SET_CHAR_KEEP_TASK crowd[crowd_flag_death_check] TRUE TASK_FLEE_CHAR crowd[crowd_flag_death_check] scplayer 80.0 10000000 ENDIF IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D crowd[crowd_flag_death_check] scplayer 80.0 80.0 FALSE IF NOT IS_CHAR_ON_SCREEN crowd[crowd_flag_death_check] MARK_CHAR_AS_NO_LONGER_NEEDED crowd[crowd_flag_death_check] ENDIF ENDIF ENDIF crowd_flag_death_check ++ ELSE m3_shit_hit_fan = 3 ENDIF ENDIF IF m3_shit_hit_fan = 3 IF cop_death_check < 8 IF NOT IS_CHAR_DEAD m3_cop[cop_death_check] GET_SCRIPT_TASK_STATUS m3_cop[cop_death_check] TASK_CHAR_ARREST_CHAR task_status IF task_status = FINISHED_TASK SET_CHAR_KEEP_TASK m3_cop[cop_death_check] TRUE TASK_CHAR_ARREST_CHAR m3_cop[cop_death_check] scplayer ENDIF ENDIF cop_death_check ++ ELSE m3_shit_hit_fan = 4 ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// m3_removing_crowd_after_ceremony:////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF m3_removing_crowd = 0 IF m3_removing_cop_flag < 8 IF NOT IS_CHAR_DEAD m3_cop[m3_removing_cop_flag] IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D m3_cop[m3_removing_cop_flag] scplayer 80.0 80.0 FALSE IF NOT IS_CHAR_ON_SCREEN m3_cop[m3_removing_cop_flag] MARK_CHAR_AS_NO_LONGER_NEEDED m3_cop[m3_removing_cop_flag] ENDIF ENDIF ENDIF m3_removing_cop_flag ++ ELSE m3_removing_crowd = 1 ENDIF ENDIF IF m3_removing_crowd = 1 IF m3_removing_crowd_flag < 8 IF NOT IS_CHAR_DEAD m3_cop[m3_removing_crowd_flag] IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D m3_cop[m3_removing_crowd_flag] scplayer 80.0 80.0 FALSE IF NOT IS_CHAR_ON_SCREEN m3_cop[m3_removing_crowd_flag] MARK_CHAR_AS_NO_LONGER_NEEDED m3_cop[m3_removing_crowd_flag] ENDIF ENDIF ENDIF m3_removing_crowd_flag ++ ELSE m3_removing_crowd = 2 ENDIF ENDIF IF m3_removing_crowd = 2 IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer 1015.1 -1139.2 80.0 80.0 FALSE MARK_OBJECT_AS_NO_LONGER_NEEDED right_barrier1 MARK_OBJECT_AS_NO_LONGER_NEEDED right_barrier2 MARK_OBJECT_AS_NO_LONGER_NEEDED right_barrier3 MARK_OBJECT_AS_NO_LONGER_NEEDED left_barrier1 MARK_OBJECT_AS_NO_LONGER_NEEDED left_barrier2 MARK_OBJECT_AS_NO_LONGER_NEEDED left_barrier3 MARK_OBJECT_AS_NO_LONGER_NEEDED front_left_barrier1 MARK_OBJECT_AS_NO_LONGER_NEEDED front_left_barrier2 MARK_OBJECT_AS_NO_LONGER_NEEDED front_left_barrier3 MARK_OBJECT_AS_NO_LONGER_NEEDED front_right_barrier1 MARK_OBJECT_AS_NO_LONGER_NEEDED front_right_barrier2 MARK_OBJECT_AS_NO_LONGER_NEEDED front_right_barrier3 MARK_OBJECT_AS_NO_LONGER_NEEDED m3_east_barrier1 MARK_OBJECT_AS_NO_LONGER_NEEDED m3_east_barrier2 MARK_OBJECT_AS_NO_LONGER_NEEDED m3_south_east_barrier1 MARK_OBJECT_AS_NO_LONGER_NEEDED m3_south_east_barrier2 MARK_OBJECT_AS_NO_LONGER_NEEDED m3_south_west_barrier1 MARK_OBJECT_AS_NO_LONGER_NEEDED m3_south_west_barrier2 MARK_OBJECT_AS_NO_LONGER_NEEDED m3_west_barrier1 MARK_OBJECT_AS_NO_LONGER_NEEDED m3_west_barrier2 MARK_OBJECT_AS_NO_LONGER_NEEDED m3_north_west_barrier1 MARK_OBJECT_AS_NO_LONGER_NEEDED m3_north_west_barrier2 MARK_OBJECT_AS_NO_LONGER_NEEDED m3_north_east_barrier1 MARK_OBJECT_AS_NO_LONGER_NEEDED m3_north_east_barrier2 MARK_MODEL_AS_NO_LONGER_NEEDED DYN_ROADBARRIER_2 SWITCH_AUDIO_ZONE AWARDS FALSE m3_removing_crowd = 3 ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// m3_rand_coords://////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// GENERATE_RANDOM_FLOAT_IN_RANGE 1016.2 1030.8 m3_x GENERATE_RANDOM_FLOAT_IN_RANGE -1122.3 -1133.7 m3_y IF m3_x < 1020.0 heading = 280.1 ELSE heading = 96.5 ENDIF IF m3_x < 1027.4 AND m3_x > 1019.8 GOTO m3_rand_coords ENDIF WHILE m3_crowd_check < m3_crowd_flag WAIT 0 IF NOT IS_CHAR_DEAD crowd[m3_crowd_check] IF LOCATE_CHAR_ANY_MEANS_2D crowd[m3_crowd_check] m3_x m3_y 1.0 1.0 0 GOTO m3_rand_coords ENDIF ENDIF m3_crowd_check ++ ENDWHILE /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// m3_cameras://////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF m3_flash_flag1 = 0 GOSUB taking_pictures ELSE IF m3_flash_flag1 < m3_random_flash_flag1 m3_flash_flag1 ++ ELSE DRAW_LIGHT_WITH_RANGE m3_x m3_y m3_z 255 255 255 200.0 //DRAW_WEAPONSHOP_CORONA m3_x m3_y m3_z 0.5 CORONATYPE_SHINYSTAR FLARETYPE_NONE 255 255 255 CREATE_FX_SYSTEM CAMFLASH m3_x m3_y m3_z TRUE m3_camflash1 PLAY_AND_KILL_FX_SYSTEM m3_camflash1 m3_flash_flag1 = 0 ENDIF ENDIF IF m3_flash_flag2 = 0 GOSUB taking_pictures ELSE IF m3_flash_flag2 < m3_random_flash_flag2 m3_flash_flag2 ++ ELSE DRAW_LIGHT_WITH_RANGE m3_x2 m3_y2 m3_z2 255 255 255 200.0 //DRAW_WEAPONSHOP_CORONA m3_x2 m3_y2 m3_z2 0.5 CORONATYPE_SHINYSTAR FLARETYPE_NONE 255 255 255 CREATE_FX_SYSTEM CAMFLASH m3_x2 m3_y2 m3_z2 TRUE m3_camflash2 PLAY_AND_KILL_FX_SYSTEM m3_camflash2 m3_flash_flag2 = 0 ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// taking_pictures://///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF m3_flash_flag1 = 0 GENERATE_RANDOM_INT_IN_RANGE 1 10 m3_random_flash_flag1 GENERATE_RANDOM_INT_IN_RANGE 0 20 m3_crowd_flag IF NOT IS_CHAR_DEAD crowd[m3_crowd_flag] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS crowd[m3_crowd_flag] 0.0 0.3 0.5 m3_x m3_y z m3_flash_flag1 ++ ENDIF ENDIF IF m3_flash_flag2 = 0 GENERATE_RANDOM_INT_IN_RANGE 1 10 m3_random_flash_flag2 GENERATE_RANDOM_INT_IN_RANGE 0 20 m3_crowd_flag IF NOT IS_CHAR_DEAD crowd[m3_crowd_flag] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS crowd[m3_crowd_flag] 0.0 0.3 0.5 m3_x2 m3_y2 m3_z2 m3_flash_flag2 ++ ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// m3_blippage://///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// //sorting the blippage IF m3_car_check_flag = 0 IF IS_CHAR_IN_CAR scplayer m3_dgcar1[1] REMOVE_BLIP m3_docg_manager_blip CLEAR_THIS_PRINT STP3_13 IF m3_control_flag = 0 m3_speech_flag = 0 ENDIF IF m3_control_flag = 1 ADD_BLIP_FOR_COORD 1306.4 -1137.5 22.5 m3_docg_manager_blip PRINT ( STP3_33 ) 7000 1 //Go and meet up with the other drivers. Don't damage your car! ENDIF m3_car_check_flag = 1 ENDIF ENDIF IF m3_car_check_flag = 1 IF NOT IS_CHAR_IN_CAR scplayer m3_dgcar1[1] REMOVE_BLIP m3_docg_manager_blip ADD_BLIP_FOR_CAR m3_dgcar1[1] m3_docg_manager_blip SET_BLIP_AS_FRIENDLY m3_docg_manager_blip TRUE IF timerb > 7000 CLEAR_THIS_PRINT STP3_33 PRINT ( STP3_13 ) 7000 1 //Get back in the car and get on with the mission. ENDIF m3_car_check_flag = 0 ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// m3_stray_timer://////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF m3_stray_flag = 0 IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer m3_dgcar1[0] 35.0 35.0 FALSE m3_time_to_fail = 5000 ENDIF m3_stray_flag = 1 ENDIF IF m3_stray_flag = 1 IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer m3_dgcar1[0] 35.0 35.0 FALSE IF m3_time_to_fail > 4000 m3_number_to_print = 5 PRINT_WITH_NUMBER_NOW ( STP3_14 ) m3_number_to_print 4000 1 //You have ~1~ seconds to rejoin the convoy. ENDIF IF m3_time_to_fail < 4000 IF m3_time_to_fail > 3000 m3_number_to_print = 4 PRINT_WITH_NUMBER_NOW ( STP3_14 ) m3_number_to_print 4000 1 //You have ~1~ seconds to rejoin the convoy. ENDIF ENDIF IF m3_time_to_fail < 3000 IF m3_time_to_fail > 2000 m3_number_to_print = 3 PRINT_WITH_NUMBER_NOW ( STP3_14 ) m3_number_to_print 4000 1 //You have ~1~ seconds to rejoin the convoy. ENDIF ENDIF IF m3_time_to_fail < 2000 IF m3_time_to_fail > 1000 m3_number_to_print = 2 PRINT_WITH_NUMBER_NOW ( STP3_14 ) m3_number_to_print 4000 1 //You have ~1~ seconds to rejoin the convoy. ENDIF ENDIF IF m3_time_to_fail < 1000 m3_number_to_print = 1 PRINT_WITH_NUMBER_NOW ( STP3_15 ) m3_number_to_print 4000 1 //You have ~1~ second to rejoin the convoy. ENDIF IF m3_time_to_fail < 0 PRINT_NOW ( STP3_07 ) 4000 1 //You strayed too far and alerted the other drivers! m3_deathcheck_flag = 1 ENDIF ELSE CLEAR_THIS_PRINT STP3_14 CLEAR_THIS_PRINT STP3_15 m3_stray_flag = 0 ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// m3_damaging_other_cars://////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF m3_speech_flag = 0 IF NOT IS_CAR_HEALTH_GREATER m3_dgcar1[0] 950 PRINT_NOW ( STP3_30 ) 4000 1 // Don't damage the car! m3_speech_flag = 1 ENDIF IF NOT IS_CAR_HEALTH_GREATER m3_dgcar1[2] 950 PRINT_NOW ( STP3_30 ) 4000 1 // Don't damage the car! m3_speech_flag = 1 ENDIF ENDIF IF m3_speech_flag = 1 IF NOT IS_CAR_HEALTH_GREATER m3_dgcar1[0] 850 CLEAR_PRINTS PRINT ( STP3_23 ) 4000 1 //You alerted the other drivers with your bad driving. m3_speech_flag = 2 ENDIF IF NOT IS_CAR_HEALTH_GREATER m3_dgcar1[2] 850 CLEAR_PRINTS PRINT ( STP3_23 ) 4000 1 //You alerted the other drivers with your bad driving. m3_speech_flag = 2 ENDIF ENDIF IF m3_speech_flag = 2 IF NOT IS_CHAR_DEAD m3_dgcar1_driver[0] TASK_KILL_CHAR_ON_FOOT m3_dgcar1_driver[0] scplayer ENDIF IF NOT IS_CHAR_DEAD m3_dgcar1_driver[2] TASK_KILL_CHAR_ON_FOOT m3_dgcar1_driver[2] scplayer ENDIF timera = 0 m3_speech_flag = 3 ENDIF IF m3_speech_flag = 3 IF timera > 3000 m3_deathcheck_flag = 1 ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// m3_car0_goons:///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF NOT IS_CHAR_DEAD m3_goons[0] OPEN_SEQUENCE_TASK m3_seq TASK_PAUSE -1 150 TASK_LEAVE_ANY_CAR -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK m3_goons[0] m3_seq CLEAR_SEQUENCE_TASK m3_seq ENDIF IF NOT IS_CHAR_DEAD m3_goons[1] OPEN_SEQUENCE_TASK m3_seq TASK_LEAVE_ANY_CAR -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK m3_goons[1] m3_seq CLEAR_SEQUENCE_TASK m3_seq ENDIF IF NOT IS_CHAR_DEAD m3_goons[2] OPEN_SEQUENCE_TASK m3_seq TASK_PAUSE -1 100 TASK_LEAVE_ANY_CAR -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK m3_goons[2] m3_seq CLEAR_SEQUENCE_TASK m3_seq ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// m3_car1_goons:///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF NOT IS_CHAR_DEAD m3_goons[4] OPEN_SEQUENCE_TASK m3_seq TASK_PAUSE -1 150 TASK_LEAVE_ANY_CAR -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK m3_goons[4] m3_seq CLEAR_SEQUENCE_TASK m3_seq ENDIF IF NOT IS_CHAR_DEAD m3_goons[5] OPEN_SEQUENCE_TASK m3_seq TASK_LEAVE_ANY_CAR -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK m3_goons[5] m3_seq CLEAR_SEQUENCE_TASK m3_seq ENDIF IF NOT IS_CHAR_DEAD m3_goons[6] OPEN_SEQUENCE_TASK m3_seq TASK_PAUSE -1 100 TASK_LEAVE_ANY_CAR -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK m3_goons[6] m3_seq CLEAR_SEQUENCE_TASK m3_seq ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// m3_baddy_close_check:////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD m3_dgcar1[0] IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer m3_dgcar1[0] 160.0 160.0 FALSE m3_baddy_in_range_check ++ ENDIF ENDIF IF NOT IS_CAR_DEAD m3_dgcar1[2] IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer m3_dgcar1[2] 160.0 160.0 FALSE m3_baddy_in_range_check ++ ENDIF ENDIF IF NOT IS_CAR_DEAD m3_dgcar1[0] IF NOT IS_CHAR_DEAD m3_dgcar1_driver[0] TASK_CAR_TEMP_ACTION m3_dgcar1_driver[0] m3_dgcar1[0] TEMPACT_HANDBRAKESTRAIGHT 3000 ENDIF ENDIF IF NOT IS_CAR_DEAD m3_dgcar1[2] IF NOT IS_CHAR_DEAD m3_dgcar1_driver[2] TASK_CAR_TEMP_ACTION m3_dgcar1_driver[2] m3_dgcar1[2] TEMPACT_HANDBRAKESTRAIGHT 3000 ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// m3_controlling_enemy_cars:///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// //controlling the first car and occupants IF m3_baddy_control_flag[0] = 0 IF NOT IS_CAR_DEAD m3_dgcar1[0] IF NOT LOCATE_CHAR_IN_CAR_CAR_2D scplayer m3_dgcar1[0] 15.0 15.0 FALSE IF NOT IS_CHAR_DEAD m3_dgcar1_driver[0] IMPROVE_CAR_BY_CHEATING m3_dgcar1[0] TRUE SET_CAR_CRUISE_SPEED m3_dgcar1[0] 100.0 MARK_CAR_AS_CONVOY_CAR m3_dgcar1[0] FALSE ADD_STUCK_CAR_CHECK_WITH_WARP m3_dgcar1[0] 0.5 4000 TRUE TRUE TRUE 7 TASK_CAR_MISSION m3_dgcar1_driver[0] m3_dgcar1[0] -1 MISSION_BLOCKPLAYER_FARAWAY 35.0 DRIVINGMODE_AVOIDCARS m3_baddy_control_flag[0] = 1 ENDIF ENDIF ENDIF ENDIF IF m3_goals = 6 IF timerb > 1000 IF m3_baddy_control_flag[0] = 1 IF NOT IS_CAR_DEAD m3_dgcar1[0] IF NOT IS_CHAR_DEAD m3_dgcar1_driver[0] IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer m3_dgcar1[0] 20.0 20.0 FALSE TASK_CAR_MISSION m3_dgcar1_driver[0] m3_dgcar1[0] -1 MISSION_BLOCKPLAYER_FARAWAY 35.0 DRIVINGMODE_AVOIDCARS m3_baddy_control_flag[0] = 2 ELSE m3_baddy_control_flag[0] = 2 ENDIF ENDIF ENDIF ENDIF IF m3_baddy_control_flag[0] = 2 IF NOT IS_CHAR_IN_ANY_CAR scplayer IF NOT IS_CAR_DEAD m3_dgcar1[0] IF NOT IS_CHAR_DEAD m3_dgcar1_driver[0] IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer m3_dgcar1[0] 20.0 20.0 FALSE CLEAR_CHAR_TASKS m3_dgcar1_driver[0] OPEN_SEQUENCE_TASK m3_seq TASK_CAR_TEMP_ACTION -1 m3_dgcar1[0] TEMPACT_HANDBRAKESTRAIGHT 3000 TASK_LEAVE_ANY_CAR -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK m3_dgcar1_driver[0] m3_seq CLEAR_SEQUENCE_TASK m3_seq GOSUB m3_car0_goons LOCK_CAR_DOORS m3_dgcar1[0] CARLOCK_UNLOCKED m3_baddy_control_flag[0] = 3 ENDIF ELSE GOSUB m3_car0_goons LOCK_CAR_DOORS m3_dgcar1[0] CARLOCK_UNLOCKED m3_baddy_control_flag[0] = 3 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //controlling the second car and occupants IF m3_baddy_control_flag[1] = 0 IF NOT IS_CAR_DEAD m3_dgcar1[2] IF NOT LOCATE_CHAR_IN_CAR_CAR_2D scplayer m3_dgcar1[2] 15.0 15.0 FALSE IF NOT IS_CHAR_DEAD m3_dgcar1_driver[2] IMPROVE_CAR_BY_CHEATING m3_dgcar1[2] TRUE SET_CAR_CRUISE_SPEED m3_dgcar1[2] 100.0 MARK_CAR_AS_CONVOY_CAR m3_dgcar1[2] FALSE ADD_STUCK_CAR_CHECK_WITH_WARP m3_dgcar1[2] 0.5 4000 TRUE TRUE TRUE 7 TASK_CAR_MISSION m3_dgcar1_driver[2] m3_dgcar1[2] -1 MISSION_BLOCKPLAYER_FARAWAY 35.0 DRIVINGMODE_AVOIDCARS m3_baddy_control_flag[1] = 1 ENDIF ENDIF ENDIF ENDIF IF m3_goals = 6 IF timerb > 1000 IF m3_baddy_control_flag[1] = 1 IF NOT IS_CAR_DEAD m3_dgcar1[2] IF NOT IS_CHAR_DEAD m3_dgcar1_driver[2] IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer m3_dgcar1[2] 20.0 20.0 FALSE TASK_CAR_MISSION m3_dgcar1_driver[2] m3_dgcar1[2] -1 MISSION_BLOCKPLAYER_FARAWAY 35.0 DRIVINGMODE_AVOIDCARS m3_baddy_control_flag[1] = 2 ELSE m3_baddy_control_flag[1] = 2 ENDIF ENDIF ENDIF ENDIF IF m3_baddy_control_flag[1] = 2 IF NOT IS_CHAR_IN_ANY_CAR scplayer IF NOT IS_CAR_DEAD m3_dgcar1[2] IF NOT IS_CHAR_DEAD m3_dgcar1_driver[2] IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer m3_dgcar1[2] 15.0 15.0 FALSE CLEAR_CHAR_TASKS m3_dgcar1_driver[2] OPEN_SEQUENCE_TASK m3_seq TASK_CAR_TEMP_ACTION -1 m3_dgcar1[2] TEMPACT_HANDBRAKESTRAIGHT 3000 TASK_LEAVE_ANY_CAR -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m3_seq PERFORM_SEQUENCE_TASK m3_dgcar1_driver[2] m3_seq CLEAR_SEQUENCE_TASK m3_seq GOSUB m3_car1_goons LOCK_CAR_DOORS m3_dgcar1[2] CARLOCK_UNLOCKED m3_baddy_control_flag[1] = 3 ENDIF ELSE GOSUB m3_car1_goons LOCK_CAR_DOORS m3_dgcar1[2] CARLOCK_UNLOCKED m3_baddy_control_flag[1] = 3 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// m3_my_number_plates://///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// GENERATE_RANDOM_INT_IN_RANGE 1 37 m3_no_plates_flag IF m3_no_plates_flag = 1 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates got_m00_ ENDIF IF m3_no_plates_flag = 2 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates m00tv_4u ENDIF IF m3_no_plates_flag = 3 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates mathew_2 ENDIF IF m3_no_plates_flag = 4 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates d4_dew0r ENDIF IF m3_no_plates_flag = 5 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates d0de_777 ENDIF IF m3_no_plates_flag = 6 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates dam0_666 ENDIF IF m3_no_plates_flag = 7 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates C0NEY_88 ENDIF IF m3_no_plates_flag = 8 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates pre4cher ENDIF IF m3_no_plates_flag = 9 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates dbp_4ndy ENDIF IF m3_no_plates_flag = 10 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates ev1l_sly ENDIF IF m3_no_plates_flag = 11 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates n1_r4v3n ENDIF IF m3_no_plates_flag = 12 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates d1vx_z00 ENDIF IF m3_no_plates_flag = 13 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates mr_b3nn ENDIF IF m3_no_plates_flag = 14 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates r3d_r4sp ENDIF IF m3_no_plates_flag = 15 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates La_B0mba ENDIF IF m3_no_plates_flag = 16 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates L3337_0g ENDIF IF m3_no_plates_flag = 17 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates budd4h_X ENDIF IF m3_no_plates_flag = 18 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates t3h_buck ENDIF IF m3_no_plates_flag = 19 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates CHUNKY_1 ENDIF IF m3_no_plates_flag = 20 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates ev1l_bnz ENDIF IF m3_no_plates_flag = 21 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates S4ND_M4N ENDIF IF m3_no_plates_flag = 22 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates RKK_DBP1 ENDIF IF m3_no_plates_flag = 23 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates RE1_K0KU ENDIF IF m3_no_plates_flag = 24 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates s3xy_jud ENDIF IF m3_no_plates_flag = 25 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates sunra_93 ENDIF IF m3_no_plates_flag = 26 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates UG_FuX69 ENDIF IF m3_no_plates_flag = 27 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates Li0n_Cum ENDIF IF m3_no_plates_flag = 28 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates rkk_pwnd ENDIF IF m3_no_plates_flag = 29 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates haze_b0b ENDIF IF m3_no_plates_flag = 30 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates t3h_fluf ENDIF IF m3_no_plates_flag = 31 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates BM_4NDY_ ENDIF IF m3_no_plates_flag = 32 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates BM_D34N_ ENDIF IF m3_no_plates_flag = 33 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates BM_L4C3Y ENDIF IF m3_no_plates_flag = 34 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates BM_D3V__ ENDIF IF m3_no_plates_flag = 35 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates NU_SK00L ENDIF IF m3_no_plates_flag = 36 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates G4L_AVET ENDIF IF m3_no_plates_flag = 37 CUSTOM_PLATE_FOR_NEXT_CAR m3_no_plates M0j0_j0j ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// m3_dialogue_setup:///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF m3_speech_goals = 1 $m3_print_label[0] = &LOC3_AA // Hey, what the fuck are you playing at? m3_audio_label[0] = SOUND_LOC3_AA m3_last_label = 1 ENDIF IF m3_speech_goals = 2 $m3_print_label[0] = &LOC3_BA // Hey, man. $m3_print_label[1] = &LOC3_BB // Take me back to Dogg's mansion. $m3_print_label[2] = &LOC3_BC // Not today, asshole. $m3_print_label[3] = &LOC3_BD // Today we're taking the scenic route, $m3_print_label[4] = &LOC3_BE // via the bottom of the ocean! m3_audio_label[0] = SOUND_LOC3_BA m3_audio_label[1] = SOUND_LOC3_BB m3_audio_label[2] = SOUND_LOC3_BC m3_audio_label[3] = SOUND_LOC3_BD m3_audio_label[4] = SOUND_LOC3_BE m3_last_label = 5 ENDIF IF m3_speech_goals = 3 $m3_print_label[0] = &LOC3_CA // Security team, the Principle is being kidnapped! $m3_print_label[1] = &LOC3_CB // Rescue him at all costs! m3_audio_label[0] = SOUND_LOC3_CA m3_audio_label[1] = SOUND_LOC3_CB m3_last_label = 2 ENDIF IF m3_speech_goals = 4 $m3_print_label[0] = &LOC3_DA // Who the fuck are you? $m3_print_label[1] = &LOC3_DB // Where's my usual driver? $m3_print_label[2] = &LOC3_DC // Unlock this fucking door! $m3_print_label[3] = &LOC3_DD // I can't fucking swim, you fucking psycho! $m3_print_label[4] = &LOC3_EA // So I've heard! m3_audio_label[0] = SOUND_LOC3_DA m3_audio_label[1] = SOUND_LOC3_DB m3_audio_label[2] = SOUND_LOC3_DC m3_audio_label[3] = SOUND_LOC3_DD m3_audio_label[4] = SOUND_LOC3_EA m3_last_label = 5 ENDIF IF m3_speech_goals = 5 $m3_print_label[0] = &LOC3_EB // What you want, fool, money? $m3_print_label[1] = &LOC3_EC // I got bitches, loads o'fine -bitches take 'em. $m3_print_label[2] = &LOC3_ED // They'll do anything you want! $m3_print_label[3] = &LOC3_EE // You want a record contract? $m3_print_label[4] = &LOC3_EF // Man I can make any fool a superstar! $m3_print_label[5] = &LOC3_EG // I know people in this town, powerful people! $m3_print_label[6] = &LOC3_EH // Dangerous motherfuckers! $m3_print_label[7] = &LOC3_EJ // You Grove Street Families? $m3_print_label[8] = &LOC3_EK // I know Ballas OG's - we're like brothers! $m3_print_label[9] = &LOC3_EL // They'll fuck you up so bad! //$m3_print_label[10] = &LOC3_EM // And yo'moms. And yo dad! //$m3_print_label[11] = &LOC3_EN // Fuck, NOOOOOOOOO! m3_audio_label[0] = SOUND_LOC3_EB m3_audio_label[1] = SOUND_LOC3_EC m3_audio_label[2] = SOUND_LOC3_ED m3_audio_label[3] = SOUND_LOC3_EE m3_audio_label[4] = SOUND_LOC3_EF m3_audio_label[5] = SOUND_LOC3_EG m3_audio_label[6] = SOUND_LOC3_EH m3_audio_label[7] = SOUND_LOC3_EJ m3_audio_label[8] = SOUND_LOC3_EK m3_audio_label[9] = SOUND_LOC3_EL //m3_audio_label[10] = SOUND_LOC3_EM //m3_audio_label[11] = SOUND_LOC3_EN m3_last_label = 10 ENDIF IF m3_speech_goals = 6 $m3_print_label[0] = &LOC3_EO // Holy FUUUUUUUUUUCK! m3_audio_label[0] = SOUND_LOC3_EO m3_last_label = 1 ENDIF IF m3_speech_goals = 7 $m3_print_label[0] = &MOBRING // Phone Ringing $m3_print_label[1] = &MLOC04A // Yo, Loc? Whatttup now? $m3_print_label[2] = &MLOC04B // One of Madd Dogg's chaufeurs just left the Burger Shot across town. $m3_print_label[3] = &MLOC04C // Said he was headed over to the Music Awards! $m3_print_label[4] = &MLOC04D // Good lookin'. I'm a see if I can catch up with them. m3_audio_label[0] = SOUND_MOBRING m3_audio_label[1] = SOUND_MLOC04A m3_audio_label[2] = SOUND_MLOC04B m3_audio_label[3] = SOUND_MLOC04C m3_audio_label[4] = SOUND_MLOC04D m3_last_label = m3_random_last_label ENDIF IF m3_speech_goals = 8 $m3_print_label[0] = &LOC3_FA // Hey, what kept you? $m3_print_label[1] = &LOC3_FB // Come on we need to go and pick up the boss! $m3_print_label[2] = &LOC3_FC // Hold position in the middle of the motorcade until we get to the Awards Show. //$m3_print_label[3] = &LOC3_FD // Hold up here for a second until the cops let us through. $m3_print_label[3] = &LOC3_FE // Stick close and let's roll! $m3_print_label[4] = &LOC3_FF // Keep frosty, guys. m3_audio_label[0] = SOUND_LOC3_FA m3_audio_label[1] = SOUND_LOC3_FB m3_audio_label[2] = SOUND_LOC3_FC //m3_audio_label[3] = SOUND_LOC3_FD m3_audio_label[3] = SOUND_LOC3_FE m3_audio_label[4] = SOUND_LOC3_FF m3_last_label = m3_random_last_label ENDIF IF m3_speech_goals = 9 $m3_print_label[0] = &LOC3_GA // Hey, watch what you're doing! $m3_print_label[1] = &LOC3_GB // Watch the damn car! $m3_print_label[2] = &LOC3_GC // You unprofessional asshole! $m3_print_label[3] = &LOC3_GD // Keep your mind on the job! m3_audio_label[0] = SOUND_LOC3_GA m3_audio_label[1] = SOUND_LOC3_GB m3_audio_label[2] = SOUND_LOC3_GC m3_audio_label[3] = SOUND_LOC3_GD m3_last_label = m3_random_last_label ENDIF IF m3_speech_goals = 10 $m3_print_label[0] = &RYD1_BE // Shut up! m3_audio_label[0] = SOUND_RYD1_BE m3_last_label = 1 ENDIF IF m3_speech_goals = 11 $m3_print_label[0] = &LOC3_JA // Congratulations on your award, you must be thrilled! m3_audio_label[0] = SOUND_LOC3_JA m3_last_label = 1 ENDIF IF m3_speech_goals = 12 $m3_print_label[0] = &LOC3_JB // Yeah, yeah, yeah, yeah, I'd like to thank my fans, my momma and my dealer. m3_audio_label[0] = SOUND_LOC3_JB m3_last_label = 1 ENDIF m3_slot_load = m3_speech_control_flag m3_slot1 = 0 m3_slot2 = 0 m3_play_which_slot = 1 /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// m3_overall_dialogue://///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF m3_speech_goals = 1 //driver swearing at player IF m3_speech_control_flag < m3_last_label GOSUB m3_loading_dialogue GOSUB m3_playing_dialogue IF NOT IS_CHAR_DEAD m3_dgcar1_driver[1] GOSUB m3_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $m3_print_label[m3_speech_control_flag] m3_slot1 = 0 m3_slot2 = 0 ENDIF ELSE m3_speech_goals = 0 ENDIF ENDIF IF m3_speech_goals = 7 //mc strap phoning player OR m3_speech_goals = 2 //doc g manager talking to player at awards ceremony OR m3_speech_goals = 6 //doc g screaming holy fuck OR m3_speech_goals = 11 //Awards ceremony OR m3_speech_goals = 12 //Awards ceremony IF m3_speech_control_flag < m3_last_label GOSUB m3_loading_dialogue GOSUB m3_playing_dialogue GOSUB m3_finishing_dialogue ELSE m3_speech_goals = 0 ENDIF ENDIF IF m3_goals = 5 IF m3_control_flag = 0 IF m3_speech_goals = 3 //radio message informing guards that the manager has been swiped OR m3_speech_goals = 4 //Doc G's Manager pleading for his life part 1 OR m3_speech_goals = 5 //Doc G's Manager pleading for his life part 2 OR m3_speech_goals = 10 //player telling manager to stfu IF m3_speech_control_flag < m3_last_label GOSUB m3_loading_dialogue GOSUB m3_playing_dialogue IF NOT IS_CHAR_DEAD docg_manager IF NOT IS_CAR_DEAD m3_dgcar1[1] IF IS_CHAR_IN_CAR scplayer m3_dgcar1[1] GOSUB m3_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $m3_print_label[m3_speech_control_flag] m3_slot1 = 0 m3_slot2 = 0 ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $m3_print_label[m3_speech_control_flag] m3_slot1 = 0 m3_slot2 = 0 ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $m3_print_label[m3_speech_control_flag] m3_slot1 = 0 m3_slot2 = 0 ENDIF ELSE m3_speech_goals = 0 ENDIF ENDIF ENDIF ENDIF IF m3_speech_goals = 8 //driver swearing at player OR m3_speech_goals = 9 IF m3_speech_control_flag < m3_last_label GOSUB m3_loading_dialogue GOSUB m3_playing_dialogue IF NOT IS_CHAR_DEAD m3_dgcar1_driver[0] IF NOT IS_CAR_DEAD m3_dgcar1[1] IF IS_CHAR_IN_CAR scplayer m3_dgcar1[1] GOSUB m3_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $m3_print_label[m3_speech_control_flag] m3_slot1 = 0 m3_slot2 = 0 ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $m3_print_label[m3_speech_control_flag] m3_slot1 = 0 m3_slot2 = 0 ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $m3_print_label[m3_speech_control_flag] m3_slot1 = 0 m3_slot2 = 0 ENDIF ELSE m3_speech_goals = 0 ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// m3_loading_dialogue://///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF m3_slot_load < m3_last_label //slot 1 IF m3_slot1 = 0 LOAD_MISSION_AUDIO 1 m3_audio_label[m3_slot_load] m3_slot_load ++ m3_slot1 = 1 ENDIF //slot 2 IF m3_slot2 = 0 LOAD_MISSION_AUDIO 2 m3_audio_label[m3_slot_load] m3_slot_load ++ m3_slot2 = 1 ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// m3_playing_dialogue://///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// //slot 1 IF m3_play_which_slot = 1 IF m3_slot1 = 1 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $m3_print_label[m3_speech_control_flag] ) 4500 1 // m3_slot1 = 2 ENDIF ENDIF ENDIF //slot 2 IF m3_play_which_slot = 2 IF m3_slot2 = 1 IF HAS_MISSION_AUDIO_LOADED 2 PLAY_MISSION_AUDIO 2 PRINT_NOW ( $m3_print_label[m3_speech_control_flag] ) 4500 1 // m3_slot2 = 2 ENDIF ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// m3_finishing_dialogue:///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// //slot 1 IF m3_slot1 = 2 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_THIS_PRINT $m3_print_label[m3_speech_control_flag] m3_speech_control_flag ++ m3_play_which_slot = 2 m3_slot1 = 0 ENDIF ENDIF //slot 2 IF m3_slot2 = 2 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT $m3_print_label[m3_speech_control_flag] m3_speech_control_flag ++ m3_play_which_slot = 1 m3_slot2 = 0 ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// } MISSION_START // ***************************************************************************************** // ********************************* music5 ************************************************ // ***************************************************************************************** // ***************************************************************************************** // ****************************** HOUSE PARTY ********************************************** // ***************************************************************************************** SCRIPT_NAME music5 // Mission start stuff GOSUB mission_start_music5 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_music5_failed ENDIF GOSUB mission_cleanup_music5 MISSION_END { // Variables for mission //people LVAR_INT blocking_car1 blocking_car2 good_gang_member[7] attcar[4] bad_gang_member[14] LVAR_INT alleyway_car LVAR_INT m5_UZI_pickup m5_car_mover LVAR_INT tw7_cutscene_car1 tw7_cutscene_car2 //blips LVAR_INT bad_gang_member_blip[14] //flags LVAR_INT music5_goals m5_control_flag m5_skip_cutscene_flag m5_deathcheck_flag LVAR_INT sweet_recording m5_car_mover_recording triggering_original_enemy_cars LVAR_INT m5_gang1_recieved_orders LVAR_INT m5_blip_flag LVAR_INT m5_char_select[6] m5_char_select_flag LVAR_INT m5_controlling_last_wave LVAR_INT m5_cutscene_crap LVAR_INT m5_no_plates_flag m5_no_plates LVAR_INT m5_hours m5_minutes LVAR_INT m5_model m5_class LVAR_INT m5_enemy_accuracy //speech LVAR_INT m5_speech_goals m5_speech_flag m5_speech_control_flag m5_random_last_label LVAR_TEXT_LABEL m5_print_label[9] LVAR_INT m5_audio_label[9] LVAR_INT m5_last_label LVAR_INT m5_slot1 m5_slot2 m5_slot_load m5_play_which_slot //coords LVAR_FLOAT m5_x m5_y m5_z //sequences/decision makers/threat lists/attractors/groups LVAR_INT m5_seq m5_ped_decisions m5_empty_ped_decision_maker m5_good_group m5_good_group2 m5_bad_group m5_bad_group2 m5_group_dec //debug // ****************************************Mission Start************************************ mission_start_music5: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT STRAP4 CLEAR_PRINTS WAIT 0 // *************************************Set Flags/variables********************************* LA_hub_activity = 1 //ambient hub stuff turned off music5_goals = 0 m5_control_flag = 0 m5_skip_cutscene_flag = 0 m5_deathcheck_flag = 0 m5_speech_flag = 0 sweet_recording = 0 m5_car_mover_recording = 0 triggering_original_enemy_cars = 0 m5_gang1_recieved_orders = 0 m5_blip_flag = 0 m5_char_select[0] = FAM2 m5_char_select[1] = FAM3 m5_char_select[2] = FAM3 m5_char_select[3] = BALLAS2 m5_char_select[4] = BALLAS2 m5_char_select[5] = BALLAS3 m5_char_select_flag = 0 m5_controlling_last_wave = 0 m5_speech_goals = 0 m5_speech_control_flag = 0 m5_random_last_label = 0 m5_last_label = 0 m5_slot1 = 0 m5_slot2 = 0 m5_slot_load = 0 m5_play_which_slot = 0 m5_x = 0.0 m5_y = 0.0 m5_z = 0.0 m5_cutscene_crap = 0 m5_no_plates_flag = 0 m5_no_plates = 0 m5_hours = 0 m5_minutes = 0 m5_enemy_accuracy = 75 //switching off car gens SWITCH_CAR_GENERATOR gen_car6 0 SWITCH_CAR_GENERATOR gen_car7 0 SWITCH_CAR_GENERATOR gen_car10 0 // ****************************************START OF CUTSCENE******************************** CLEAR_AREA 791.7 -1627.0 12.3 10.0 TRUE SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 MAKE_PLAYER_GANG_DISAPPEAR SET_FADING_COLOUR 0 0 0 IF strap4_mission_passed_once_flag = 0 CLEAR_AREA 782.5 -1619.3 12.0 5.0 0 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE m5_model m5_class IF m5_model >= 0 CREATE_CAR m5_model 782.5 -1619.3 12.0 tw7_cutscene_car1 SET_CAR_HEADING tw7_cutscene_car1 270.0 ENDIF CLEAR_AREA 782.5 -1604.8 12.0 5.0 0 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE m5_model m5_class IF m5_model >= 0 CREATE_CAR m5_model 782.5 -1604.8 12.0 tw7_cutscene_car2 SET_CAR_HEADING tw7_cutscene_car2 270.0 ENDIF LOAD_CUTSCENE STRAP4A ELSE IF m5_cutscene_crap = 0 CLEAR_AREA 2484.9 -1649.2 12.5 160.0 0 SET_AREA_VISIBLE 3 LOAD_CUTSCENE Strp4b1 m5_cutscene_crap = 1 ENDIF ENDIF WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE MARK_CAR_AS_NO_LONGER_NEEDED tw7_cutscene_car1 MARK_CAR_AS_NO_LONGER_NEEDED tw7_cutscene_car2 CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF // ****************************************END OF CUTSCENE********************************** // ****************************************START OF CUTSCENE******************************** IF m5_cutscene_crap = 1 IF NOT WAS_CUTSCENE_SKIPPED CLEAR_AREA 2484.9 -1649.2 12.5 160.0 0 SET_FADING_COLOUR 0 0 0 REQUEST_MODEL GREENWOO LOAD_ALL_MODELS_NOW CLEAR_AREA 2503.0 -1658.8 12.3 5.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR GREENWOO GROVE4L_ CREATE_CAR GREENWOO 2503.0 -1658.8 13.0 blocking_car1 CHANGE_CAR_COLOUR blocking_car1 59 34 SET_CAR_HEADING blocking_car1 234.0 SET_AREA_VISIBLE 0 LOAD_CUTSCENE Strp4b2 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE DELETE_CAR blocking_car1 SET_PLAYER_CONTROL player1 OFF m5_cutscene_crap = 0 ENDIF ENDIF // ****************************************END OF CUTSCENE********************************** MAKE_PLAYER_GANG_REAPPEAR SET_FADING_COLOUR 0 0 0 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 WAIT 0 //------------------REQUEST_MODELS ------------------------------ IF strap4_mission_passed_once_flag = 0 DO_FADE 0 FADE_IN GOTO mission_music5_passed ENDIF REQUEST_MODEL FAM2 REQUEST_MODEL FAM3 REQUEST_MODEL BALLAS2 REQUEST_MODEL BALLAS3 REQUEST_MODEL GREENWOO REQUEST_MODEL TAHOMA REQUEST_MODEL VOODOO REQUEST_MODEL MOLOTOV REQUEST_MODEL TEC9 LOAD_SPECIAL_CHARACTER 1 sweet LOAD_SPECIAL_CHARACTER 2 ryder2 LOAD_MISSION_AUDIO 3 SOUND_HOUSE_PARTY_BASS_LOOP WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE SET_MISSION_AUDIO_POSITION 3 2482.0 -1646.3 12.8 PLAY_MISSION_AUDIO 3 LOAD_ALL_MODELS_NOW REMOVE_GROUP Players_Group SET_PLAYER_GROUP_RECRUITMENT player1 FALSE /////////////////////////////// DECISION MAKER SHIT ////////////////////////////////////////////// SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_MISSION2 ////1 is BAD GUYS SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 PEDTYPE_MISSION1 ////2 is players group SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 PEDTYPE_MISSION1 ////3 is smoke's group SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION2 PEDTYPE_MISSION3 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION3 PEDTYPE_MISSION2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION2 PEDTYPE_PLAYER1 ////2 is players group SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION3 PEDTYPE_PLAYER1 ////3 is smoke's group SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 PEDTYPE_MISSION1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION2 PEDTYPE_MISSION2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION3 PEDTYPE_MISSION3 GET_PLAYER_GROUP Player1 m5_good_group SET_GROUP_SEPARATION_RANGE m5_good_group 1000.0 LOAD_GROUP_DECISION_MAKER DM_GROUP_MISSION_NORM m5_group_dec CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE m5_group_dec EVENT_LEADER_EXITED_CAR_AS_DRIVER CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE m5_group_dec EVENT_LEADER_ENTERED_CAR_AS_DRIVER ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE m5_group_dec EVENT_SHOT_FIRED TASK_GROUP_KILL_THREATS_BASIC 0.0 100.0 0.0 0.0 FALSE TRUE SET_GROUP_DECISION_MAKER m5_good_group m5_group_dec SET_GROUP_DEFAULT_TASK_ALLOCATOR m5_good_group DEFAULT_TASK_ALLOCATOR_STAND_STILL LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH m5_ped_decisions COPY_CHAR_DECISION_MAKER DM_PED_EMPTY m5_empty_ped_decision_maker CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE m5_empty_ped_decision_maker EVENT_POTENTIAL_WALK_INTO_PED CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE m5_ped_decisions EVENT_POTENTIAL_WALK_INTO_PED //sweet CREATE_CHAR PEDTYPE_MISSION3 SPECIAL01 2485.5 -1647.7 13.3 sweet SET_CHAR_NEVER_TARGETTED sweet TRUE SET_CHAR_HEADING sweet 196.6 SET_CHAR_ONLY_DAMAGED_BY_PLAYER sweet TRUE SET_CHAR_STAY_IN_SAME_PLACE sweet TRUE GIVE_WEAPON_TO_CHAR sweet WEAPONTYPE_TEC9 3000 ADD_ARMOUR_TO_CHAR sweet 100 SET_CHAR_ONLY_DAMAGED_BY_PLAYER sweet TRUE SET_CHAR_DECISION_MAKER sweet m5_empty_ped_decision_maker //car sweet moves CLEAR_AREA 2503.0 -1658.8 12.3 5.0 TRUE //m5_no_plates = GREENWOO //GOSUB m5_my_number_plates CUSTOM_PLATE_FOR_NEXT_CAR GREENWOO GROVE4L_ CREATE_CAR GREENWOO 2503.0 -1658.8 13.0 blocking_car1 CHANGE_CAR_COLOUR blocking_car1 59 34 SET_CAR_HEADING blocking_car1 234.0 LOCK_CAR_DOORS blocking_car1 CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_HEAVY blocking_car1 TRUE SET_CAR_PROOFS blocking_car1 TRUE TRUE FALSE FALSE FALSE //car moving guy with sweet GENERATE_RANDOM_INT_IN_RANGE 0 3 m5_char_select_flag CREATE_CHAR PEDTYPE_MISSION3 m5_char_select[m5_char_select_flag] 2487.1 -1647.7 13.3 m5_car_mover SET_CHAR_NEVER_TARGETTED m5_car_mover TRUE SET_CHAR_HEADING m5_car_mover 158.9 SET_CHAR_ONLY_DAMAGED_BY_PLAYER m5_car_mover TRUE SET_CHAR_STAY_IN_SAME_PLACE m5_car_mover TRUE GIVE_WEAPON_TO_CHAR m5_car_mover WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER m5_car_mover m5_empty_ped_decision_maker //car m5_car_mover moves CLEAR_AREA 2496.7 -1683.4 13.0 5.0 TRUE m5_no_plates = VOODOO GOSUB m5_my_number_plates CREATE_CAR VOODOO 2496.7 -1683.4 13.0 blocking_car2 SET_CAR_HEADING blocking_car2 272.5 LOCK_CAR_DOORS blocking_car2 CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_HEAVY blocking_car2 TRUE SET_CAR_PROOFS blocking_car2 TRUE TRUE FALSE FALSE FALSE //ryder CREATE_CHAR PEDTYPE_MISSION3 SPECIAL02 2484.1 -1641.2 13.5 ryder SET_CHAR_STAY_IN_SAME_PLACE ryder TRUE SET_CHAR_NEVER_TARGETTED ryder TRUE SET_CHAR_HEADING ryder 180.0 GIVE_WEAPON_TO_CHAR ryder WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER ryder m5_empty_ped_decision_maker //good gang member0 GENERATE_RANDOM_INT_IN_RANGE 0 3 m5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 m5_char_select[m5_char_select_flag] 2486.2 -1642.2 13.5 good_gang_member[0] SET_CHAR_STAY_IN_SAME_PLACE good_gang_member[0] TRUE SET_CHAR_NEVER_TARGETTED good_gang_member[0] TRUE SET_CHAR_HEADING good_gang_member[0] 180.0 GIVE_WEAPON_TO_CHAR good_gang_member[0] WEAPONTYPE_TEC9 3000 //SET_CHAR_SUFFERS_CRITICAL_HITS good_gang_member[0] FALSE //ADD_ARMOUR_TO_CHAR good_gang_member[0] 100 SET_CHAR_DECISION_MAKER good_gang_member[0] m5_empty_ped_decision_maker //good gang member1 GENERATE_RANDOM_INT_IN_RANGE 0 3 m5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 m5_char_select[m5_char_select_flag] 2486.2 -1641.2 13.5 good_gang_member[1] SET_CHAR_STAY_IN_SAME_PLACE good_gang_member[1] TRUE SET_CHAR_NEVER_TARGETTED good_gang_member[1] TRUE SET_CHAR_HEADING good_gang_member[1] 180.0 GIVE_WEAPON_TO_CHAR good_gang_member[1] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER good_gang_member[1] m5_empty_ped_decision_maker //good gang member3 GENERATE_RANDOM_INT_IN_RANGE 0 3 m5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 m5_char_select[m5_char_select_flag] 2486.2 -1639.2 13.5 good_gang_member[3] SET_CHAR_STAY_IN_SAME_PLACE good_gang_member[3] TRUE SET_CHAR_NEVER_TARGETTED good_gang_member[3] TRUE SET_CHAR_HEADING good_gang_member[3] 180.0 GIVE_WEAPON_TO_CHAR good_gang_member[3] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER good_gang_member[3] m5_empty_ped_decision_maker //FIRST CAR GOES TO RIGHT HAND SIDE OF THE ROAD m5_no_plates = TAHOMA GOSUB m5_my_number_plates CREATE_CAR TAHOMA 2227.6 -1667.8 13.7 attcar[0] SET_CAR_HEADING attcar[0] 342.3 SET_CAR_PROOFS attcar[0] TRUE TRUE FALSE FALSE FALSE LOCK_CAR_DOORS attcar[0] CARLOCK_LOCKOUT_PLAYER_ONLY GENERATE_RANDOM_INT_IN_RANGE 3 6 m5_char_select_flag CREATE_CHAR_INSIDE_CAR attcar[0] PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] bad_gang_member[0] SET_CHAR_KINDA_STAY_IN_SAME_PLACE bad_gang_member[0] TRUE GIVE_WEAPON_TO_CHAR bad_gang_member[0] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER bad_gang_member[0] m5_empty_ped_decision_maker CREATE_GROUP DEFAULT_TASK_ALLOCATOR_STAND_STILL m5_bad_group SET_GROUP_SEPARATION_RANGE m5_bad_group 300.0 SET_GROUP_DECISION_MAKER m5_bad_group m5_group_dec SET_GROUP_LEADER m5_bad_group bad_gang_member[0] SET_CHAR_ACCURACY bad_gang_member[0] m5_enemy_accuracy GENERATE_RANDOM_INT_IN_RANGE 3 6 m5_char_select_flag CREATE_CHAR_AS_PASSENGER attcar[0] PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 0 bad_gang_member[1] GIVE_WEAPON_TO_CHAR bad_gang_member[1] WEAPONTYPE_TEC9 3000 SET_CHAR_KINDA_STAY_IN_SAME_PLACE bad_gang_member[1] TRUE SET_CHAR_DECISION_MAKER bad_gang_member[1] m5_empty_ped_decision_maker SET_GROUP_MEMBER m5_bad_group bad_gang_member[1] SET_CHAR_ACCURACY bad_gang_member[1] m5_enemy_accuracy GENERATE_RANDOM_INT_IN_RANGE 3 6 m5_char_select_flag CREATE_CHAR_AS_PASSENGER attcar[0] PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 1 bad_gang_member[2] SET_CHAR_ONLY_DAMAGED_BY_PLAYER bad_gang_member[2] TRUE SET_CHAR_SUFFERS_CRITICAL_HITS bad_gang_member[2] FALSE ADD_ARMOUR_TO_CHAR bad_gang_member[2] 100 GIVE_WEAPON_TO_CHAR bad_gang_member[2] WEAPONTYPE_TEC9 3000 //GIVE_WEAPON_TO_CHAR bad_gang_member[2] WEAPONTYPE_MOLOTOV 1 //SET_CHAR_KINDA_STAY_IN_SAME_PLACE bad_gang_member[2] TRUE SET_CHAR_DECISION_MAKER bad_gang_member[2] m5_empty_ped_decision_maker SET_CHAR_ACCURACY bad_gang_member[2] m5_enemy_accuracy GENERATE_RANDOM_INT_IN_RANGE 3 6 m5_char_select_flag CREATE_CHAR_AS_PASSENGER attcar[0] PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 2 bad_gang_member[3] GIVE_WEAPON_TO_CHAR bad_gang_member[3] WEAPONTYPE_TEC9 3000 //SET_CHAR_KINDA_STAY_IN_SAME_PLACE bad_gang_member[3] TRUE SET_CHAR_DECISION_MAKER bad_gang_member[3] m5_empty_ped_decision_maker SET_GROUP_MEMBER m5_bad_group bad_gang_member[3] SET_CHAR_ACCURACY bad_gang_member[3] m5_enemy_accuracy //SECOND CAR GOES TO LEFT HAND SIDE OF THE ROAD m5_no_plates = TAHOMA GOSUB m5_my_number_plates CREATE_CAR TAHOMA 2224.6 -1677.9 13.2 attcar[1] SET_CAR_HEADING attcar[1] 342.3 SET_CAR_PROOFS attcar[1] TRUE TRUE FALSE FALSE FALSE LOCK_CAR_DOORS attcar[1] CARLOCK_LOCKOUT_PLAYER_ONLY GENERATE_RANDOM_INT_IN_RANGE 3 6 m5_char_select_flag CREATE_CHAR_INSIDE_CAR attcar[1] PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] bad_gang_member[4] GIVE_WEAPON_TO_CHAR bad_gang_member[4] WEAPONTYPE_TEC9 3000 SET_CHAR_KINDA_STAY_IN_SAME_PLACE bad_gang_member[4] TRUE SET_CHAR_DECISION_MAKER bad_gang_member[4] m5_empty_ped_decision_maker SET_GROUP_MEMBER m5_bad_group bad_gang_member[4] SET_CHAR_ACCURACY bad_gang_member[4] m5_enemy_accuracy GENERATE_RANDOM_INT_IN_RANGE 3 6 m5_char_select_flag CREATE_CHAR_AS_PASSENGER attcar[1] PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 0 bad_gang_member[5] GIVE_WEAPON_TO_CHAR bad_gang_member[5] WEAPONTYPE_TEC9 3000 //SET_CHAR_KINDA_STAY_IN_SAME_PLACE bad_gang_member[5] TRUE SET_CHAR_DECISION_MAKER bad_gang_member[5] m5_empty_ped_decision_maker SET_GROUP_MEMBER m5_bad_group bad_gang_member[5] SET_CHAR_ACCURACY bad_gang_member[5] m5_enemy_accuracy GENERATE_RANDOM_INT_IN_RANGE 3 6 m5_char_select_flag CREATE_CHAR_AS_PASSENGER attcar[1] PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 1 bad_gang_member[6] GIVE_WEAPON_TO_CHAR bad_gang_member[6] WEAPONTYPE_TEC9 3000 SET_CHAR_KINDA_STAY_IN_SAME_PLACE bad_gang_member[6] TRUE SET_CHAR_DECISION_MAKER bad_gang_member[6] m5_empty_ped_decision_maker SET_GROUP_MEMBER m5_bad_group bad_gang_member[6] SET_CHAR_ACCURACY bad_gang_member[6] m5_enemy_accuracy GENERATE_RANDOM_INT_IN_RANGE 3 6 m5_char_select_flag CREATE_CHAR_AS_PASSENGER attcar[1] PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 2 bad_gang_member[7] GIVE_WEAPON_TO_CHAR bad_gang_member[7] WEAPONTYPE_TEC9 3000 SET_CHAR_KINDA_STAY_IN_SAME_PLACE bad_gang_member[7] TRUE SET_CHAR_DECISION_MAKER bad_gang_member[7] m5_empty_ped_decision_maker SET_GROUP_MEMBER m5_bad_group bad_gang_member[7] SET_CHAR_ACCURACY bad_gang_member[7] m5_enemy_accuracy SET_AREA_VISIBLE 0 LOAD_SCENE 2484.9 -1649.2 12.5 CLEAR_AREA 2484.9 -1649.2 12.5 160.0 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_MAX_FIRE_GENERATIONS 1 REQUEST_CAR_RECORDING 22 REQUEST_CAR_RECORDING 23 CLEAR_AREA 2492.4 -1632.0 12.4 1.0 TRUE SET_CHAR_COORDINATES scplayer 2492.4 -1632.0 12.4 SET_FIXED_CAMERA_POSITION 2483.0 -1649.8 12.5 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2494.3 -1650.3 16.6 JUMP_CUT SHUT_ALL_CHARS_UP TRUE ENABLE_AMBIENT_CRIME FALSE mission_music5_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_music5_passed ENDIF ALTER_WANTED_LEVEL player1 0 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// DEATHCHECKS /////////////////////////////////////////////////////////////////////////////////// GOSUB m5_death_checks IF m5_deathcheck_flag = 1 GOTO mission_music5_failed ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////Playing the BIG intro cutscene////////////////////////////////////////////////////////////////// IF music5_goals = 0 IF m5_control_flag = 0 IF NOT IS_CAR_DEAD blocking_car1 OPEN_SEQUENCE_TASK m5_seq TASK_FOLLOW_PATH_NODES_TO_COORD -1 2498.5 -1652.3 12.5 PEDMOVE_RUN -1 TASK_ENTER_CAR_AS_DRIVER -1 blocking_car1 -1 CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK sweet m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF IF NOT IS_CHAR_DEAD m5_car_mover IF NOT IS_CAR_DEAD blocking_car2 OPEN_SEQUENCE_TASK m5_seq //TASK_PAUSE -1 100 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2487.4 -1657.9 12.3 PEDMOVE_RUN -1 TASK_ENTER_CAR_AS_DRIVER -1 blocking_car2 -1 CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK m5_car_mover m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF ENDIF //ryder fucking off IF NOT IS_CHAR_DEAD ryder OPEN_SEQUENCE_TASK m5_seq TASK_PAUSE -1 500 TASK_GO_STRAIGHT_TO_COORD -1 2486.1 -1646.7 12.9 PEDMOVE_WALK 1 TASK_GO_STRAIGHT_TO_COORD -1 2485.1 -1652.7 12.3 PEDMOVE_RUN -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2478.4 -1649.1 12.5 PEDMOVE_RUN -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2478.2 -1631.4 12.5 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK ryder m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF //good_gang_member[0] - runs to left hand car IF NOT IS_CHAR_DEAD good_gang_member[0] OPEN_SEQUENCE_TASK m5_seq TASK_PAUSE -1 1000 TASK_GO_STRAIGHT_TO_COORD -1 2487.1 -1646.7 12.9 PEDMOVE_WALK 1 TASK_GO_STRAIGHT_TO_COORD -1 2487.1 -1654.7 12.3 PEDMOVE_RUN -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2472.3 -1652.8 12.5 PEDMOVE_RUN -1 TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PAUSE -1 9000 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2466.3 -1660.7 12.2 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 88.6 CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK good_gang_member[0] m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF //good_gang_member[1] - runs to the house at the right of the cars next to smashable fence IF NOT IS_CHAR_DEAD good_gang_member[1] OPEN_SEQUENCE_TASK m5_seq TASK_PAUSE -1 1500 TASK_GO_STRAIGHT_TO_COORD -1 2486.1 -1646.7 12.9 PEDMOVE_WALK 1 TASK_GO_STRAIGHT_TO_COORD -1 2486.1 -1654.7 12.3 PEDMOVE_RUN -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2467.6 -1649.2 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 110.0 TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_TOGGLE_DUCK -1 TRUE CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK good_gang_member[1] m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF //good_gang_member[3] - runs to left hand car IF NOT IS_CHAR_DEAD good_gang_member[3] OPEN_SEQUENCE_TASK m5_seq TASK_PAUSE -1 3000 TASK_GO_STRAIGHT_TO_COORD -1 2486.1 -1646.7 12.9 PEDMOVE_WALK 1 TASK_GO_STRAIGHT_TO_COORD -1 2486.1 -1654.7 12.3 PEDMOVE_RUN -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2473.4 -1652.7 12.5 PEDMOVE_RUN -1 TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PAUSE -1 9000 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2463.8 -1663.6 12.2 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 116.3 CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK good_gang_member[3] m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF DO_FADE 1000 FADE_IN //ryder dialogue m5_speech_goals = 1 GENERATE_RANDOM_INT_IN_RANGE 0 3 m5_speech_control_flag m5_random_last_label = m5_speech_control_flag + 1 GOSUB m5_dialogue_setup m5_skip_cutscene_flag = 1 SKIP_CUTSCENE_START timera = 0 m5_control_flag = 1 ENDIF IF m5_control_flag = 1 IF NOT IS_CHAR_DEAD sweet IF timera > 3000 //sweet dialogue m5_speech_goals = 2 m5_speech_control_flag = 0 m5_random_last_label = 2 GOSUB m5_dialogue_setup SET_FIXED_CAMERA_POSITION 2501.5 -1650.5 13.3 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2498.9 -1682.1 16.3 JUMP_CUT timera = 0 m5_control_flag = 2 ENDIF ENDIF ENDIF //waiting until big smoke and m5_car_mover are in the cars IF m5_control_flag = 2 //controlling the baddies coming in IF triggering_original_enemy_cars = 0 IF timera > 6000 //sorting out first car of first wave - goes right of road IF NOT IS_CAR_DEAD attcar[0] IF NOT IS_CHAR_DEAD bad_gang_member[0] OPEN_SEQUENCE_TASK m5_seq TASK_CAR_DRIVE_TO_COORD -1 attcar[0] 2435.3 -1661.1 12.2 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_TEMP_ACTION -1 attcar[0] TEMPACT_TURNRIGHT 200 TASK_CAR_TEMP_ACTION -1 attcar[0] TEMPACT_HANDBRAKESTRAIGHT 400 CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[0] m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF ENDIF //sorting out second car of first wave - goes left of road IF NOT IS_CAR_DEAD attcar[1] IF NOT IS_CHAR_DEAD bad_gang_member[4] OPEN_SEQUENCE_TASK m5_seq TASK_CAR_DRIVE_TO_COORD -1 attcar[1] 2440.8 -1656.9 12.2 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_TEMP_ACTION -1 attcar[1] TEMPACT_TURNLEFT 200 TASK_CAR_TEMP_ACTION -1 attcar[1] TEMPACT_HANDBRAKESTRAIGHT 400 CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[4] m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF ENDIF triggering_original_enemy_cars = 1 ENDIF ENDIF //controlling the car recordings IF sweet_recording < 2 OR m5_car_mover_recording < 2 IF NOT IS_CAR_DEAD blocking_car1 IF sweet_recording = 0 IF IS_CHAR_IN_CAR sweet blocking_car1 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m5_death_checks IF m5_deathcheck_flag = 1 GOTO mission_music5_failed ENDIF LOAD_SCENE 2459.2747 -1653.2631 13.0938 SET_FIXED_CAMERA_POSITION 2459.2747 -1653.2631 13.0938 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2460.0891 -1653.8428 13.1158 JUMP_CUT IF NOT IS_CAR_DEAD blocking_car1 START_PLAYBACK_RECORDED_CAR blocking_car1 22 ENDIF DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m5_death_checks IF m5_deathcheck_flag = 1 GOTO mission_music5_failed ENDIF sweet_recording = 1 ENDIF ELSE IF NOT IS_CAR_DEAD blocking_car1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR blocking_car1 IF sweet_recording = 1 OPEN_SEQUENCE_TASK m5_seq TASK_PAUSE -1 2000 TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 2458.9 -1665.6 12.2 PEDMOVE_RUN -2 TASK_GO_STRAIGHT_TO_COORD -1 2465.0 -1666.4 12.2 PEDMOVE_RUN -2 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2465.3 -1654.6 12.2 PEDMOVE_RUN -2 TASK_ACHIEVE_HEADING -1 107.0 TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_TOGGLE_DUCK -1 TRUE CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK sweet m5_seq CLEAR_SEQUENCE_TASK m5_seq sweet_recording = 2 ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD m5_car_mover IF NOT IS_CAR_DEAD blocking_car2 IF m5_car_mover_recording = 0 IF IS_CHAR_IN_CAR m5_car_mover blocking_car2 START_PLAYBACK_RECORDED_CAR blocking_car2 23 m5_car_mover_recording = 1 ENDIF ELSE IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR blocking_car2 IF m5_car_mover_recording = 1 OPEN_SEQUENCE_TASK m5_seq TASK_PAUSE -1 2000 TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 2458.2 -1655.0 12.2 PEDMOVE_RUN -2 TASK_GO_STRAIGHT_TO_COORD -1 2461.1 -1650.8 12.2 PEDMOVE_RUN -2 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2467.4 -1657.7 12.2 PEDMOVE_RUN -2 TASK_ACHIEVE_HEADING -1 110.0 CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK m5_car_mover m5_seq CLEAR_SEQUENCE_TASK m5_seq m5_car_mover_recording = 2 ENDIF ENDIF ENDIF ENDIF ENDIF ELSE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m5_death_checks IF m5_deathcheck_flag = 1 GOTO mission_music5_failed ENDIF m5_control_flag = 3 ENDIF ENDIF IF m5_control_flag = 3 LOAD_SCENE 2404.5 -1672.3 15.8 //creating car at end of the alleyway m5_no_plates = TAHOMA GOSUB m5_my_number_plates CREATE_CAR TAHOMA 2485.0 -1682.5 15.0 alleyway_car LOCK_CAR_DOORS alleyway_car CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_HEAVY alleyway_car TRUE SET_CAR_PROOFS alleyway_car TRUE TRUE FALSE FALSE FALSE SET_CAR_HEADING alleyway_car 90.0 CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_POS TRUE CAMERA_PERSIST_TRACK TRUE CAMERA_SET_VECTOR_MOVE 2404.5 -1672.3 15.8 2408.6 -1672.7 15.9 5000 TRUE CAMERA_SET_VECTOR_TRACK 2384.8 -1665.4 13.4 2416.5 -1665.3 13.9 5000 TRUE DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m5_death_checks IF m5_deathcheck_flag = 1 GOTO mission_music5_failed ENDIF timera = 0 m5_control_flag = 4 ENDIF IF m5_control_flag = 4 IF timera > 5800 m5_control_flag = 5 ENDIF ENDIF IF m5_control_flag = 5 m5_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB m5_death_checks IF m5_deathcheck_flag = 1 GOTO mission_music5_failed ENDIF CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 m5_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m5_death_checks IF m5_deathcheck_flag = 1 GOTO mission_music5_failed ENDIF CAMERA_RESET_NEW_SCRIPTABLES //If cutscene has been skipped IF m5_skip_cutscene_flag = 1 IF NOT IS_CAR_DEAD attcar[0] SET_CAR_COORDINATES attcar[0] 2453.1 -1663.0 12.3 SET_CAR_HEADING attcar[0] 217.2 ENDIF IF NOT IS_CAR_DEAD attcar[1] SET_CAR_COORDINATES attcar[1] 2452.2 -1651.9 12.3 SET_CAR_HEADING attcar[1] 314.2 ENDIF CLEAR_PRINTS ENDIF IF IS_CAR_DEAD alleyway_car //creating car at end of the alleyway m5_no_plates = TAHOMA GOSUB m5_my_number_plates CREATE_CAR TAHOMA 2485.0 -1682.5 15.0 alleyway_car LOCK_CAR_DOORS alleyway_car CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_HEAVY alleyway_car TRUE SET_CAR_PROOFS alleyway_car TRUE TRUE FALSE FALSE FALSE SET_CAR_HEADING alleyway_car 90.0 ENDIF IF NOT IS_CAR_DEAD blocking_car1 IF IS_PLAYBACK_GOING_ON_FOR_CAR blocking_car1 STOP_PLAYBACK_RECORDED_CAR blocking_car1 ENDIF SET_CAR_COORDINATES blocking_car1 2462.3 -1662.4 12.1 SET_CAR_HEADING blocking_car1 325.8 ENDIF IF NOT IS_CAR_DEAD blocking_car2 IF IS_PLAYBACK_GOING_ON_FOR_CAR blocking_car2 STOP_PLAYBACK_RECORDED_CAR blocking_car2 ENDIF SET_CAR_COORDINATES blocking_car2 2463.4 -1656.1 12.0 SET_CAR_HEADING blocking_car2 50.5 ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY sweet CLEAR_AREA 2465.3 -1654.6 12.2 1.0 TRUE SET_CHAR_COORDINATES sweet 2465.3 -1654.6 12.2 SET_CHAR_HEADING sweet 107.0 SET_CHAR_DECISION_MAKER sweet m5_ped_decisions CREATE_GROUP DEFAULT_TASK_ALLOCATOR_STAND_STILL m5_good_group2 SET_GROUP_DECISION_MAKER m5_good_group2 m5_group_dec SET_GROUP_LEADER m5_good_group2 sweet OPEN_SEQUENCE_TASK m5_seq TASK_PLAY_ANIM -1 weapon_crouch PED 1000.0 FALSE FALSE FALSE TRUE -1 TASK_TOGGLE_DUCK -1 TRUE CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK sweet m5_seq CLEAR_SEQUENCE_TASK m5_seq IF NOT IS_CHAR_DEAD m5_car_mover CLEAR_CHAR_TASKS_IMMEDIATELY m5_car_mover CLEAR_AREA 2467.4 -1657.7 12.2 1.0 TRUE SET_CHAR_COORDINATES m5_car_mover 2467.4 -1657.7 12.2 SET_CHAR_HEADING m5_car_mover 107.0 SET_CHAR_DECISION_MAKER m5_car_mover m5_ped_decisions SET_GROUP_MEMBER m5_good_group2 m5_car_mover ENDIF IF NOT IS_CHAR_DEAD good_gang_member[0] CLEAR_CHAR_TASKS_IMMEDIATELY good_gang_member[0] CLEAR_AREA 2466.3 -1660.7 12.2 1.0 TRUE SET_CHAR_COORDINATES good_gang_member[0] 2466.3 -1660.7 12.2 SET_CHAR_HEADING good_gang_member[0] 88.6 SET_CHAR_DECISION_MAKER good_gang_member[0] m5_ped_decisions SET_GROUP_MEMBER m5_good_group good_gang_member[0] OPEN_SEQUENCE_TASK m5_seq TASK_TOGGLE_DUCK -1 TRUE TASK_PLAY_ANIM -1 weapon_crouch PED 1000.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK good_gang_member[0] m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF IF NOT IS_CHAR_DEAD good_gang_member[1] CLEAR_CHAR_TASKS_IMMEDIATELY good_gang_member[1] CLEAR_AREA 2467.6 -1649.2 12.5 1.0 TRUE SET_CHAR_COORDINATES good_gang_member[1] 2467.6 -1649.2 12.5 SET_CHAR_HEADING good_gang_member[1] 110.0 SET_CHAR_DECISION_MAKER good_gang_member[1] m5_ped_decisions SET_GROUP_MEMBER m5_good_group good_gang_member[1] OPEN_SEQUENCE_TASK m5_seq TASK_TOGGLE_DUCK -1 TRUE TASK_PLAY_ANIM -1 weapon_crouch PED 1000.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK good_gang_member[1] m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF IF NOT IS_CHAR_DEAD good_gang_member[3] CLEAR_CHAR_TASKS_IMMEDIATELY good_gang_member[3] CLEAR_AREA 2462.3 -1665.7 12.2 1.0 TRUE SET_CHAR_COORDINATES good_gang_member[3] 2462.3 -1665.7 12.2 SET_CHAR_HEADING good_gang_member[3] 76.9 SET_CHAR_DECISION_MAKER good_gang_member[3] m5_ped_decisions SET_GROUP_MEMBER m5_good_group good_gang_member[3] OPEN_SEQUENCE_TASK m5_seq TASK_TOGGLE_DUCK -1 TRUE TASK_PLAY_ANIM -1 weapon_crouch PED 1000.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK good_gang_member[3] m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF LOAD_SCENE 2487.3 -1650.7 12.5 CLEAR_AREA 2469.7 -1657.0 12.3 1.0 TRUE SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2469.7 -1657.0 12.3 SET_CHAR_HEADING scplayer 90.0 CREATE_PICKUP_WITH_AMMO TEC9 PICKUP_ON_STREET 120 2466.0 -1656.1 13.3 m5_UZI_pickup ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE m5_ped_decisions EVENT_POTENTIAL_WALK_INTO_PED TASK_COMPLEX_AVOID_OTHER_PED_WHILE_WANDERING 0.0 100.0 0.0 0.0 FALSE TRUE DELETE_CHAR ryder UNLOAD_SPECIAL_CHARACTER 2 //sweet dialogue m5_speech_goals = 2 m5_speech_control_flag = 2 m5_random_last_label = 4 GOSUB m5_dialogue_setup SHUT_ALL_CHARS_UP FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m5_death_checks IF m5_deathcheck_flag = 1 GOTO mission_music5_failed ENDIF timera = 0 m5_control_flag = 0 music5_goals = 1 CHECKPOINT_SAVE 99 ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////WAVE 1 - Getting the first set of guys into place and waiting for them all to die/////////////// IF music5_goals = 1 IF m5_speech_flag = 0 IF m5_speech_goals = 0 PRINT ( STP4_02 ) 11000 1 //Defend your hood from the attackers. m5_speech_flag = 1 ENDIF ENDIF //giving gang orders IF m5_control_flag = 0 //sorting out first car driver of first wave - goes right of road IF NOT IS_CHAR_DEAD bad_gang_member[0] OPEN_SEQUENCE_TASK m5_seq TASK_PAUSE -1 1200 TASK_LEAVE_ANY_CAR -1 TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[0] m5_seq CLEAR_SEQUENCE_TASK m5_seq ADD_BLIP_FOR_CHAR bad_gang_member[0] bad_gang_member_blip[0] CHANGE_BLIP_SCALE bad_gang_member_blip[0] 1 ENDIF IF NOT IS_CHAR_DEAD bad_gang_member[1] OPEN_SEQUENCE_TASK m5_seq TASK_PAUSE -1 500 //TASK_FOLLOW_PATH_NODES_TO_COORD -1 2442.9 -1672.9 12.6 PEDMOVE_RUN -1 TASK_LEAVE_ANY_CAR -1 TASK_ACHIEVE_HEADING -1 295.1 TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[1] m5_seq CLEAR_SEQUENCE_TASK m5_seq ADD_BLIP_FOR_CHAR bad_gang_member[1] bad_gang_member_blip[1] CHANGE_BLIP_SCALE bad_gang_member_blip[1] 1 ENDIF IF NOT IS_CHAR_DEAD bad_gang_member[2] //going to throw molotov OPEN_SEQUENCE_TASK m5_seq TASK_PAUSE -1 2200 TASK_LEAVE_ANY_CAR -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[2] m5_seq CLEAR_SEQUENCE_TASK m5_seq ADD_BLIP_FOR_CHAR bad_gang_member[2] bad_gang_member_blip[2] CHANGE_BLIP_SCALE bad_gang_member_blip[2] 1 ENDIF IF NOT IS_CHAR_DEAD bad_gang_member[3] OPEN_SEQUENCE_TASK m5_seq TASK_PAUSE -1 2000 TASK_LEAVE_ANY_CAR -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[3] m5_seq CLEAR_SEQUENCE_TASK m5_seq ADD_BLIP_FOR_CHAR bad_gang_member[3] bad_gang_member_blip[3] CHANGE_BLIP_SCALE bad_gang_member_blip[3] 1 ENDIF //sorting out second car driver of first wave - goes left of road IF NOT IS_CHAR_DEAD bad_gang_member[4] OPEN_SEQUENCE_TASK m5_seq TASK_PAUSE -1 1800 TASK_LEAVE_ANY_CAR -1 TASK_ACHIEVE_HEADING -1 245.3 TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[4] m5_seq CLEAR_SEQUENCE_TASK m5_seq ADD_BLIP_FOR_CHAR bad_gang_member[4] bad_gang_member_blip[4] CHANGE_BLIP_SCALE bad_gang_member_blip[4] 1 ENDIF IF NOT IS_CHAR_DEAD bad_gang_member[5] OPEN_SEQUENCE_TASK m5_seq TASK_PAUSE -1 2300 //TASK_FOLLOW_PATH_NODES_TO_COORD -1 2436.3 -1647.3 12.6 PEDMOVE_RUN -1 TASK_LEAVE_ANY_CAR -1 TASK_ACHIEVE_HEADING -1 268.6 //TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[5] m5_seq CLEAR_SEQUENCE_TASK m5_seq ADD_BLIP_FOR_CHAR bad_gang_member[5] bad_gang_member_blip[5] CHANGE_BLIP_SCALE bad_gang_member_blip[5] 1 ENDIF IF NOT IS_CHAR_DEAD bad_gang_member[6] OPEN_SEQUENCE_TASK m5_seq TASK_PAUSE -1 2100 //TASK_FOLLOW_PATH_NODES_TO_COORD -1 2455.2 -1647.8 12.6 PEDMOVE_RUN -1 TASK_LEAVE_ANY_CAR -1 TASK_ACHIEVE_HEADING -1 225.8 TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[6] m5_seq CLEAR_SEQUENCE_TASK m5_seq ADD_BLIP_FOR_CHAR bad_gang_member[6] bad_gang_member_blip[6] CHANGE_BLIP_SCALE bad_gang_member_blip[6] 1 ENDIF IF NOT IS_CHAR_DEAD bad_gang_member[7] OPEN_SEQUENCE_TASK m5_seq TASK_PAUSE -1 1200 //TASK_FOLLOW_PATH_NODES_TO_COORD -1 2445.1 -1645.0 12.6 PEDMOVE_RUN -1 TASK_LEAVE_ANY_CAR -1 TASK_ACHIEVE_HEADING -1 236.0 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[7] m5_seq CLEAR_SEQUENCE_TASK m5_seq ADD_BLIP_FOR_CHAR bad_gang_member[7] bad_gang_member_blip[7] CHANGE_BLIP_SCALE bad_gang_member_blip[7] 1 ENDIF m5_control_flag = 1 ENDIF //waiting for all of them to die IF m5_control_flag = 1 /* //getting molotov guy to throw molotov IF NOT IS_CHAR_DEAD bad_gang_member[2] IF m5_gang1_recieved_orders = 0 GET_SCRIPT_TASK_STATUS bad_gang_member[2] PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK OPEN_SEQUENCE_TASK m5_seq IF NOT IS_CHAR_DEAD good_gang_member[0] TASK_KILL_CHAR_ON_FOOT -1 good_gang_member[0] ENDIF TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[2] m5_seq CLEAR_SEQUENCE_TASK m5_seq m5_gang1_recieved_orders = 1 ENDIF ENDIF IF m5_gang1_recieved_orders = 1 GET_SCRIPT_TASK_STATUS bad_gang_member[2] PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK IF DOES_GROUP_EXIST m5_bad_group SET_GROUP_MEMBER m5_bad_group bad_gang_member[2] ELSE CREATE_GROUP DEFAULT_TASK_ALLOCATOR_STAND_STILL m5_bad_group SET_GROUP_DECISION_MAKER m5_bad_group m5_group_dec SET_GROUP_LEADER m5_bad_group bad_gang_member[2] ENDIF SET_CHAR_ONLY_DAMAGED_BY_PLAYER bad_gang_member[2] FALSE m5_gang1_recieved_orders = 2 ENDIF ENDIF ENDIF */ IF IS_CHAR_DEAD bad_gang_member[0] IF IS_CHAR_DEAD bad_gang_member[1] IF IS_CHAR_DEAD bad_gang_member[2] IF IS_CHAR_DEAD bad_gang_member[3] IF IS_CHAR_DEAD bad_gang_member[4] IF IS_CHAR_DEAD bad_gang_member[5] IF IS_CHAR_DEAD bad_gang_member[6] IF IS_CHAR_DEAD bad_gang_member[7] IF IS_CHAR_DEAD bad_gang_member[8] IF IS_CHAR_DEAD bad_gang_member[9] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[0] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[1] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[2] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[3] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[4] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[5] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[6] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[7] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[8] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[9] REMOVE_BLIP bad_gang_member_blip[0] REMOVE_BLIP bad_gang_member_blip[1] REMOVE_BLIP bad_gang_member_blip[2] REMOVE_BLIP bad_gang_member_blip[3] REMOVE_BLIP bad_gang_member_blip[4] REMOVE_BLIP bad_gang_member_blip[5] REMOVE_BLIP bad_gang_member_blip[6] REMOVE_BLIP bad_gang_member_blip[7] REMOVE_BLIP bad_gang_member_blip[8] REMOVE_BLIP bad_gang_member_blip[9] CLEAR_PRINTS timera = 0 m5_control_flag = 0 music5_goals = 2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //removing blips as each char dies IF m5_blip_flag < 10 IF IS_CHAR_DEAD bad_gang_member[m5_blip_flag] REMOVE_BLIP bad_gang_member_blip[m5_blip_flag] ENDIF m5_blip_flag ++ ELSE m5_blip_flag = 0 ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////WAVE 2 - Guys on top of the bridge////////////////////////////////////////////////////////////// IF music5_goals = 2 GOSUB check_player_is_safe IF player_is_completely_safe = 1 IF m5_control_flag = 0 IF timera > 2000 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 m5_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SHUT_ALL_CHARS_UP TRUE //CAR ON TOP OF THE BRIDGE CLEAR_AREA 2425.8 -1636.6 26.2 5.0 TRUE m5_no_plates = TAHOMA GOSUB m5_my_number_plates CREATE_CAR TAHOMA 2425.8 -1636.6 26.2 attcar[2] SET_CAR_HEADING attcar[2] 166.8 CLEAR_AREA 2441.6 -1658.6 25.2 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 2441.6 -1658.6 25.2 bad_gang_member[0] SET_CHAR_ACCURACY bad_gang_member[0] m5_enemy_accuracy SET_CHAR_HEADING bad_gang_member[0] 262.7 SET_CHAR_ONLY_DAMAGED_BY_PLAYER bad_gang_member[0] TRUE GIVE_WEAPON_TO_CHAR bad_gang_member[0] WEAPONTYPE_TEC9 3000 SET_CHAR_STAY_IN_SAME_PLACE bad_gang_member[0] TRUE CREATE_GROUP DEFAULT_TASK_ALLOCATOR_STAND_STILL m5_bad_group2 SET_GROUP_SEPARATION_RANGE m5_bad_group2 300.0 SET_CHAR_HEALTH bad_gang_member[0] 10 SET_CHAR_DECISION_MAKER bad_gang_member[0] m5_empty_ped_decision_maker SET_GROUP_DECISION_MAKER m5_bad_group2 m5_group_dec SET_GROUP_LEADER m5_bad_group2 bad_gang_member[0] ADD_BLIP_FOR_CHAR bad_gang_member[0] bad_gang_member_blip[0] CHANGE_BLIP_SCALE bad_gang_member_blip[0] 1 OPEN_SEQUENCE_TASK m5_seq TASK_SET_IGNORE_WEAPON_RANGE_FLAG -1 TRUE TASK_PAUSE -1 500 TASK_CLIMB -1 FALSE //TASK_GO_STRAIGHT_TO_COORD -1 2442.5 -1658.4 25.3 PEDMOVE_RUN -1 TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[0] m5_seq CLEAR_SEQUENCE_TASK m5_seq CLEAR_AREA 2441.6 -1660.2 25.1 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 2441.6 -1660.2 25.1 bad_gang_member[1] SET_CHAR_ACCURACY bad_gang_member[1] m5_enemy_accuracy SET_CHAR_HEADING bad_gang_member[1] 265.9 SET_CHAR_ONLY_DAMAGED_BY_PLAYER bad_gang_member[1] TRUE GIVE_WEAPON_TO_CHAR bad_gang_member[1] WEAPONTYPE_TEC9 3000 SET_CHAR_HEALTH bad_gang_member[1] 10 SET_CHAR_STAY_IN_SAME_PLACE bad_gang_member[1] TRUE SET_CHAR_DECISION_MAKER bad_gang_member[1] m5_empty_ped_decision_maker SET_GROUP_MEMBER m5_bad_group2 bad_gang_member[1] ADD_BLIP_FOR_CHAR bad_gang_member[1] bad_gang_member_blip[1] CHANGE_BLIP_SCALE bad_gang_member_blip[1] 1 OPEN_SEQUENCE_TASK m5_seq TASK_SET_IGNORE_WEAPON_RANGE_FLAG -1 TRUE TASK_PAUSE -1 600 TASK_CLIMB -1 FALSE TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[1] m5_seq CLEAR_SEQUENCE_TASK m5_seq CLEAR_AREA 2441.6 -1665.2 24.6 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 2441.6 -1665.2 24.6 bad_gang_member[2] SET_CHAR_ACCURACY bad_gang_member[2] m5_enemy_accuracy SET_CHAR_HEADING bad_gang_member[2] 273.6 SET_CHAR_ONLY_DAMAGED_BY_PLAYER bad_gang_member[2] TRUE SET_CHAR_HEALTH bad_gang_member[2] 10 GIVE_WEAPON_TO_CHAR bad_gang_member[2] WEAPONTYPE_TEC9 3000 SET_CHAR_STAY_IN_SAME_PLACE bad_gang_member[2] TRUE SET_CHAR_DECISION_MAKER bad_gang_member[2] m5_empty_ped_decision_maker SET_GROUP_MEMBER m5_bad_group2 bad_gang_member[2] ADD_BLIP_FOR_CHAR bad_gang_member[2] bad_gang_member_blip[2] CHANGE_BLIP_SCALE bad_gang_member_blip[2] 1 OPEN_SEQUENCE_TASK m5_seq TASK_SET_IGNORE_WEAPON_RANGE_FLAG -1 TRUE TASK_PAUSE -1 1700 TASK_CLIMB -1 FALSE TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[2] m5_seq CLEAR_SEQUENCE_TASK m5_seq CLEAR_AREA 2441.6 -1655.4 25.6 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 2441.6 -1655.4 25.6 bad_gang_member[3] SET_CHAR_ACCURACY bad_gang_member[3] m5_enemy_accuracy SET_CHAR_HEADING bad_gang_member[3] 280.0 SET_CHAR_ONLY_DAMAGED_BY_PLAYER bad_gang_member[3] TRUE GIVE_WEAPON_TO_CHAR bad_gang_member[3] WEAPONTYPE_TEC9 3000 SET_CHAR_HEALTH bad_gang_member[3] 10 SET_CHAR_STAY_IN_SAME_PLACE bad_gang_member[3] TRUE SET_CHAR_DECISION_MAKER bad_gang_member[3] m5_empty_ped_decision_maker SET_GROUP_MEMBER m5_bad_group2 bad_gang_member[3] ADD_BLIP_FOR_CHAR bad_gang_member[3] bad_gang_member_blip[3] CHANGE_BLIP_SCALE bad_gang_member_blip[3] 1 OPEN_SEQUENCE_TASK m5_seq TASK_SET_IGNORE_WEAPON_RANGE_FLAG -1 TRUE TASK_PAUSE -1 2000 TASK_CLIMB -1 FALSE TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[3] m5_seq CLEAR_SEQUENCE_TASK m5_seq //LOAD_SCENE 2441.6 -1655.4 25.6 TASK_TURN_CHAR_TO_FACE_CHAR scplayer bad_gang_member[3] SET_FIXED_CAMERA_POSITION 2474.3 -1660.9 14.1 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2449.8 -1657.2 19.1 JUMP_CUT //sweet dialogue m5_speech_goals = 2 m5_speech_control_flag = 5 m5_random_last_label = 6 GOSUB m5_dialogue_setup SKIP_CUTSCENE_START timera = 0 timerb = 0 m5_control_flag = 1 ENDIF ENDIF ENDIF IF m5_control_flag = 1 IF timera > 3000 SKIP_CUTSCENE_END GOSUB m5_death_checks IF m5_deathcheck_flag = 1 GOTO mission_music5_failed ENDIF //If cutscene has been skipped IF m5_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 m5_speech_goals = 0 ENDIF IF NOT IS_CHAR_DEAD good_gang_member[1] TASK_SHOOT_AT_COORD good_gang_member[1] 2443.9 -1659.9 24.6 -2 ENDIF IF NOT IS_CHAR_DEAD good_gang_member[3] EXPLODE_CHAR_HEAD good_gang_member[3] ENDIF //GET_CHAR_COORDINATES scplayer m5_x m5_y m5_z //LOAD_SCENE m5_x m5_y m5_z SHUT_ALL_CHARS_UP FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON m5_speech_flag = 0 m5_control_flag = 2 ENDIF ENDIF IF m5_control_flag = 2 IF m5_speech_flag = 0 IF m5_speech_goals = 0 PRINT ( STP4_03 ) 11000 1 //There are enemies on the bridge above. m5_speech_flag = 1 ENDIF ENDIF IF IS_CHAR_DEAD bad_gang_member[0] IF IS_CHAR_DEAD bad_gang_member[1] IF IS_CHAR_DEAD bad_gang_member[2] IF IS_CHAR_DEAD bad_gang_member[3] MARK_CAR_AS_NO_LONGER_NEEDED attcar[2] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[0] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[1] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[2] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[3] REMOVE_BLIP bad_gang_member_blip[0] REMOVE_BLIP bad_gang_member_blip[1] REMOVE_BLIP bad_gang_member_blip[2] REMOVE_BLIP bad_gang_member_blip[3] CLEAR_PRINTS timera = 0 m5_control_flag = 0 music5_goals = 3 ENDIF ENDIF ENDIF ENDIF ENDIF //removing blips as each char dies IF m5_blip_flag < 4 IF IS_CHAR_DEAD bad_gang_member[m5_blip_flag] REMOVE_BLIP bad_gang_member_blip[m5_blip_flag] ENDIF m5_blip_flag ++ ELSE m5_blip_flag = 0 ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////WAVE 3 - Guys coming from the alleyway////////////////////////////////////////////////////////// IF music5_goals = 3 GOSUB check_player_is_safe IF player_is_completely_safe = 1 IF m5_control_flag = 0 IF timera > 2000 CLEAR_PRINTS DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m5_death_checks IF m5_deathcheck_flag = 1 GOTO mission_music5_failed ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 m5_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR //HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SHUT_ALL_CHARS_UP TRUE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE m5_empty_ped_decision_maker EVENT_POTENTIAL_WALK_INTO_PED CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE m5_ped_decisions EVENT_POTENTIAL_WALK_INTO_PED IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2473.5 -1655.2 12.1 5.0 5.0 5.0 FALSE CLEAR_AREA 2475.8 -1663.6 12.3 1.0 TRUE SET_CHAR_COORDINATES scplayer 2475.8 -1663.6 12.3 ENDIF IF NOT IS_CAR_DEAD blocking_car2 CLEAR_AREA 2473.5 -1655.2 12.1 5.0 TRUE SET_CAR_COORDINATES blocking_car2 2473.5 -1655.2 12.1 SET_CAR_HEADING blocking_car2 267.2 ELSE CLEAR_AREA 2473.5 -1655.2 12.1 5.0 TRUE m5_no_plates = VOODOO GOSUB m5_my_number_plates CREATE_CAR VOODOO 2473.5 -1655.2 12.1 blocking_car2 SET_CAR_HEADING blocking_car2 267.2 LOCK_CAR_DOORS blocking_car2 CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_HEAVY blocking_car2 TRUE SET_CAR_PROOFS blocking_car2 TRUE TRUE FALSE FALSE FALSE ENDIF //final guys coming in from alleyway CLEAR_AREA 2480.7 -1729.2 12.2 5.0 TRUE m5_no_plates = TAHOMA GOSUB m5_my_number_plates CREATE_CAR TAHOMA 2480.7 -1729.2 12.2 attcar[3] SET_CAR_HEADING attcar[3] 105.1 LOCK_CAR_DOORS attcar[3] CARLOCK_LOCKOUT_PLAYER_ONLY //goes to left of alleyway and sits there CLEAR_AREA 2481.2 -1718.2 12.5 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 2481.2 -1718.2 12.5 bad_gang_member[0] SET_CHAR_ACCURACY bad_gang_member[0] m5_enemy_accuracy SET_CHAR_HEADING bad_gang_member[0] 353.4 GIVE_WEAPON_TO_CHAR bad_gang_member[0] WEAPONTYPE_TEC9 3000 SET_CHAR_STAY_IN_SAME_PLACE bad_gang_member[0] TRUE SET_CHAR_DECISION_MAKER bad_gang_member[0] m5_empty_ped_decision_maker CREATE_GROUP DEFAULT_TASK_ALLOCATOR_STAND_STILL m5_bad_group2 SET_GROUP_SEPARATION_RANGE m5_bad_group2 300.0 SET_GROUP_DECISION_MAKER m5_bad_group2 m5_group_dec SET_GROUP_LEADER m5_bad_group2 bad_gang_member[0] ADD_BLIP_FOR_CHAR bad_gang_member[0] bad_gang_member_blip[0] CHANGE_BLIP_SCALE bad_gang_member_blip[0] 1 OPEN_SEQUENCE_TASK m5_seq TASK_GO_STRAIGHT_TO_COORD -1 2481.2 -1688.1 12.5 PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 TRUE TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_SHOOT_AT_COORD -1 2480.2 -1680.1 12.5 10000 TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[0] m5_seq CLEAR_SEQUENCE_TASK m5_seq //goes to left in cutscene, standing behind ducking guy then goes to kill sweet CLEAR_AREA 2482.1 -1720.2 12.5 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 2482.1 -1720.2 12.5 bad_gang_member[1] SET_CHAR_ACCURACY bad_gang_member[1] m5_enemy_accuracy SET_CHAR_HEADING bad_gang_member[1] 352.8 GIVE_WEAPON_TO_CHAR bad_gang_member[1] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER bad_gang_member[1] m5_empty_ped_decision_maker SET_GROUP_MEMBER m5_bad_group2 bad_gang_member[1] ADD_BLIP_FOR_CHAR bad_gang_member[1] bad_gang_member_blip[1] CHANGE_BLIP_SCALE bad_gang_member_blip[1] 1 OPEN_SEQUENCE_TASK m5_seq TASK_GO_STRAIGHT_TO_COORD -1 2482.1 -1689.8 12.5 PEDMOVE_RUN -1 TASK_SHOOT_AT_COORD -1 2480.2 -1680.1 13.5 4000 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[1] m5_seq CLEAR_SEQUENCE_TASK m5_seq //goes to right ducking down in same place CLEAR_AREA 2481.0 -1718.2 12.5 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 2481.0 -1718.2 12.5 bad_gang_member[2] SET_CHAR_ACCURACY bad_gang_member[2] m5_enemy_accuracy SET_CHAR_HEADING bad_gang_member[2] 352.8 GIVE_WEAPON_TO_CHAR bad_gang_member[2] WEAPONTYPE_TEC9 3000 SET_CHAR_STAY_IN_SAME_PLACE bad_gang_member[2] TRUE SET_CHAR_DECISION_MAKER bad_gang_member[2] m5_empty_ped_decision_maker SET_GROUP_MEMBER m5_bad_group2 bad_gang_member[2] ADD_BLIP_FOR_CHAR bad_gang_member[2] bad_gang_member_blip[2] CHANGE_BLIP_SCALE bad_gang_member_blip[2] 1 OPEN_SEQUENCE_TASK m5_seq TASK_GO_STRAIGHT_TO_COORD -1 2481.0 -1687.8 12.5 PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 TRUE TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_SHOOT_AT_COORD -1 2480.2 -1680.1 13.5 10000 TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[2] m5_seq CLEAR_SEQUENCE_TASK m5_seq //goes to right in cutscene, standing behind ducking guy then goes to kill player CLEAR_AREA 2480.3 -1719.2 12.5 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 2480.3 -1719.2 12.5 bad_gang_member[3] SET_CHAR_ACCURACY bad_gang_member[3] m5_enemy_accuracy SET_CHAR_HEADING bad_gang_member[3] 352.8 GIVE_WEAPON_TO_CHAR bad_gang_member[3] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER bad_gang_member[3] m5_empty_ped_decision_maker SET_GROUP_MEMBER m5_bad_group2 bad_gang_member[3] ADD_BLIP_FOR_CHAR bad_gang_member[3] bad_gang_member_blip[3] CHANGE_BLIP_SCALE bad_gang_member_blip[3] 1 OPEN_SEQUENCE_TASK m5_seq TASK_GO_STRAIGHT_TO_COORD -1 2480.3 -1689.7 12.5 PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 TRUE TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_SHOOT_AT_COORD -1 2480.2 -1680.1 13.5 4000 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[3] m5_seq CLEAR_SEQUENCE_TASK m5_seq LOAD_SCENE_IN_DIRECTION 2478.8 -1708.1 12.9 190.0 SET_FIXED_CAMERA_POSITION 2481.0 -1682.5 12.9 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2487.4 -1700.0 16.7 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m5_death_checks IF m5_deathcheck_flag = 1 GOTO mission_music5_failed ENDIF //sweet dialogue m5_speech_goals = 2 m5_speech_control_flag = 6 m5_random_last_label = 7 GOSUB m5_dialogue_setup m5_skip_cutscene_flag = 1 SKIP_CUTSCENE_START timera = 0 m5_control_flag = 1 ENDIF ENDIF ENDIF IF m5_control_flag = 1 IF timera > 3000 m5_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB m5_death_checks IF m5_deathcheck_flag = 1 GOTO mission_music5_failed ENDIF //If cutscene has been skipped IF m5_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 m5_speech_goals = 0 ENDIF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m5_death_checks IF m5_deathcheck_flag = 1 GOTO mission_music5_failed ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer //SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2474.3 -1674.2 12.5 SET_CHAR_HEADING scplayer 215.5 IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS_IMMEDIATELY sweet CLEAR_AREA 2472.5 -1666.2 12.3 1.0 TRUE SET_CHAR_COORDINATES sweet 2472.5 -1666.2 12.3 SET_CHAR_HEADING sweet 234.4 SET_CHAR_STAY_IN_SAME_PLACE sweet FALSE OPEN_SEQUENCE_TASK m5_seq TASK_SET_CHAR_DECISION_MAKER -1 m5_empty_ped_decision_maker TASK_TOGGLE_DUCK -1 FALSE TASK_GO_STRAIGHT_TO_COORD -1 2476.1 -1673.4 12.5 PEDMOVE_WALK -1 TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK sweet m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF IF NOT IS_CHAR_DEAD m5_car_mover CLEAR_CHAR_TASKS_IMMEDIATELY m5_car_mover SET_CHAR_STAY_IN_SAME_PLACE m5_car_mover FALSE OPEN_SEQUENCE_TASK m5_seq TASK_SET_CHAR_DECISION_MAKER -1 m5_empty_ped_decision_maker TASK_TOGGLE_DUCK -1 FALSE TASK_GO_STRAIGHT_TO_COORD -1 2478.2 -1673.7 12.5 PEDMOVE_RUN -1 TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK m5_car_mover m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF IF NOT IS_CHAR_DEAD good_gang_member[0] CLEAR_CHAR_TASKS_IMMEDIATELY good_gang_member[0] SET_CHAR_STAY_IN_SAME_PLACE good_gang_member[0] FALSE OPEN_SEQUENCE_TASK m5_seq TASK_SET_CHAR_DECISION_MAKER -1 m5_empty_ped_decision_maker TASK_TOGGLE_DUCK -1 FALSE TASK_GO_STRAIGHT_TO_COORD -1 2481.2 -1682.9 12.5 PEDMOVE_RUN -1 TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK good_gang_member[0] m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF IF NOT IS_CHAR_DEAD good_gang_member[1] CLEAR_CHAR_TASKS_IMMEDIATELY good_gang_member[1] SET_CHAR_STAY_IN_SAME_PLACE good_gang_member[1] FALSE OPEN_SEQUENCE_TASK m5_seq TASK_SET_CHAR_DECISION_MAKER -1 m5_empty_ped_decision_maker TASK_TOGGLE_DUCK -1 FALSE TASK_GO_STRAIGHT_TO_COORD -1 2482.2 -1682.9 12.5 PEDMOVE_RUN -1 TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK good_gang_member[1] m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE m5_ped_decisions EVENT_POTENTIAL_WALK_INTO_PED TASK_COMPLEX_AVOID_OTHER_PED_WHILE_WANDERING 0.0 100.0 0.0 0.0 FALSE TRUE ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE m5_group_dec EVENT_SHOT_FIRED TASK_GROUP_KILL_THREATS_BASIC 0.0 100.0 0.0 0.0 FALSE TRUE IF NOT IS_CHAR_DEAD bad_gang_member[0] CLEAR_CHAR_TASKS_IMMEDIATELY bad_gang_member[0] //SET_CHAR_COORDINATES bad_gang_member[0] 2481.2 -1688.1 12.5 OPEN_SEQUENCE_TASK m5_seq TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[0] m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF IF NOT IS_CHAR_DEAD bad_gang_member[1] CLEAR_CHAR_TASKS_IMMEDIATELY bad_gang_member[1] //SET_CHAR_COORDINATES bad_gang_member[1] 2482.1 -1689.8 12.5 OPEN_SEQUENCE_TASK m5_seq TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[1] m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF IF NOT IS_CHAR_DEAD bad_gang_member[2] CLEAR_CHAR_TASKS_IMMEDIATELY bad_gang_member[2] //SET_CHAR_COORDINATES bad_gang_member[2] 2481.0 -1687.8 12.5 OPEN_SEQUENCE_TASK m5_seq TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[2] m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF IF NOT IS_CHAR_DEAD bad_gang_member[3] CLEAR_CHAR_TASKS_IMMEDIATELY bad_gang_member[3] CLEAR_AREA 2489.6 -1683.3 12.5 1.0 TRUE SET_CHAR_COORDINATES bad_gang_member[3] 2489.6 -1683.3 12.5 SET_CHAR_HEADING bad_gang_member[3] 45.5 OPEN_SEQUENCE_TASK m5_seq TASK_SET_CHAR_DECISION_MAKER -1 m5_ped_decisions CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[3] m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF //behind ryders house at front CLEAR_AREA 2469.4 -1708.9 12.5 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 2469.4 -1708.9 12.5 bad_gang_member[4] SET_CHAR_ACCURACY bad_gang_member[4] m5_enemy_accuracy SET_CHAR_HEADING bad_gang_member[4] 352.8 //SET_CHAR_KINDA_STAY_IN_SAME_PLACE bad_gang_member[4] TRUE GIVE_WEAPON_TO_CHAR bad_gang_member[4] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER bad_gang_member[4] m5_ped_decisions SET_GROUP_MEMBER m5_bad_group2 bad_gang_member[4] ADD_BLIP_FOR_CHAR bad_gang_member[4] bad_gang_member_blip[4] CHANGE_BLIP_SCALE bad_gang_member_blip[4] 1 OPEN_SEQUENCE_TASK m5_seq //TASK_TOGGLE_DUCK -1 TRUE //TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 //TASK_PAUSE -1 2000 //TASK_GO_STRAIGHT_TO_COORD -1 2472.7 -1704.5 12.5 PEDMOVE_RUN -1 //TASK_GO_STRAIGHT_TO_COORD -1 2476.5 -1688.0 12.5 PEDMOVE_RUN -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[4] m5_seq CLEAR_SEQUENCE_TASK m5_seq //behind ryders house at front CLEAR_AREA 2467.1 -1710.8 12.5 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 2467.1 -1710.8 12.5 bad_gang_member[5] SET_CHAR_ACCURACY bad_gang_member[5] m5_enemy_accuracy SET_CHAR_HEADING bad_gang_member[5] 352.8 //SET_CHAR_KINDA_STAY_IN_SAME_PLACE bad_gang_member[5] TRUE GIVE_WEAPON_TO_CHAR bad_gang_member[5] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER bad_gang_member[5] m5_ped_decisions SET_GROUP_MEMBER m5_bad_group2 bad_gang_member[5] ADD_BLIP_FOR_CHAR bad_gang_member[5] bad_gang_member_blip[5] CHANGE_BLIP_SCALE bad_gang_member_blip[5] 1 OPEN_SEQUENCE_TASK m5_seq //TASK_TOGGLE_DUCK -1 TRUE //TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 //TASK_PAUSE -1 2000 //TASK_GO_STRAIGHT_TO_COORD -1 2472.9 -1706.1 12.5 PEDMOVE_RUN -1 //TASK_GO_STRAIGHT_TO_COORD -1 2473.7 -1686.7 12.5 PEDMOVE_RUN -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[5] m5_seq CLEAR_SEQUENCE_TASK m5_seq //up beside sweets at front CLEAR_AREA 2529.3 -1691.6 12.5 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 2529.3 -1691.6 12.5 bad_gang_member[6] SET_CHAR_ACCURACY bad_gang_member[6] m5_enemy_accuracy SET_CHAR_HEADING bad_gang_member[6] 352.8 //SET_CHAR_KINDA_STAY_IN_SAME_PLACE bad_gang_member[6] TRUE GIVE_WEAPON_TO_CHAR bad_gang_member[6] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER bad_gang_member[6] m5_ped_decisions SET_GROUP_MEMBER m5_bad_group2 bad_gang_member[6] ADD_BLIP_FOR_CHAR bad_gang_member[6] bad_gang_member_blip[6] CHANGE_BLIP_SCALE bad_gang_member_blip[6] 1 OPEN_SEQUENCE_TASK m5_seq //TASK_GO_STRAIGHT_TO_COORD -1 2512.7 -1679.9 12.5 PEDMOVE_RUN -1 //TASK_GO_STRAIGHT_TO_COORD -1 2490.3 -1678.7 12.5 PEDMOVE_RUN -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer //IF NOT IS_CHAR_DEAD sweet //TASK_KILL_CHAR_ON_FOOT -1 sweet //ENDIF CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[6] m5_seq CLEAR_SEQUENCE_TASK m5_seq //up beside sweets at back CLEAR_AREA 2529.7 -1690.1 12.5 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 2529.7 -1690.1 12.5 bad_gang_member[7] SET_CHAR_ACCURACY bad_gang_member[7] m5_enemy_accuracy SET_CHAR_HEADING bad_gang_member[7] 352.8 //SET_CHAR_KINDA_STAY_IN_SAME_PLACE bad_gang_member[7] TRUE GIVE_WEAPON_TO_CHAR bad_gang_member[7] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER bad_gang_member[7] m5_ped_decisions SET_GROUP_MEMBER m5_bad_group2 bad_gang_member[7] ADD_BLIP_FOR_CHAR bad_gang_member[7] bad_gang_member_blip[7] CHANGE_BLIP_SCALE bad_gang_member_blip[7] 1 OPEN_SEQUENCE_TASK m5_seq //TASK_GO_STRAIGHT_TO_COORD -1 2511.3 -1680.3 12.5 PEDMOVE_RUN -1 //TASK_GO_STRAIGHT_TO_COORD -1 2491.3 -1678.7 12.5 PEDMOVE_RUN -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[7] m5_seq CLEAR_SEQUENCE_TASK m5_seq //Guys coming from behind strap's house CLEAR_AREA 2478.7 -1645.7 12.5 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 2478.7 -1645.7 12.5 bad_gang_member[8] SET_CHAR_ACCURACY bad_gang_member[8] m5_enemy_accuracy SET_CHAR_HEADING bad_gang_member[8] 180.0 GIVE_WEAPON_TO_CHAR bad_gang_member[8] WEAPONTYPE_TEC9 3000 SET_CHAR_STAY_IN_SAME_PLACE bad_gang_member[8] TRUE SET_CHAR_DECISION_MAKER bad_gang_member[8] m5_empty_ped_decision_maker CLEAR_AREA 2477.7 -1645.7 12.5 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 2477.7 -1645.7 12.5 bad_gang_member[9] SET_CHAR_ACCURACY bad_gang_member[9] m5_enemy_accuracy SET_CHAR_HEADING bad_gang_member[9] 180.0 GIVE_WEAPON_TO_CHAR bad_gang_member[9] WEAPONTYPE_TEC9 3000 SET_CHAR_STAY_IN_SAME_PLACE bad_gang_member[9] TRUE SET_CHAR_DECISION_MAKER bad_gang_member[9] m5_empty_ped_decision_maker CLEAR_AREA 2478.7 -1644.7 12.5 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 2478.7 -1644.7 12.5 bad_gang_member[10] SET_CHAR_ACCURACY bad_gang_member[10] m5_enemy_accuracy SET_CHAR_HEADING bad_gang_member[10] 180.0 GIVE_WEAPON_TO_CHAR bad_gang_member[10] WEAPONTYPE_TEC9 3000 SET_CHAR_STAY_IN_SAME_PLACE bad_gang_member[10] TRUE SET_CHAR_DECISION_MAKER bad_gang_member[10] m5_empty_ped_decision_maker CLEAR_AREA 2477.7 -1644.7 12.5 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 m5_char_select[m5_char_select_flag] 2477.7 -1644.7 12.5 bad_gang_member[11] SET_CHAR_ACCURACY bad_gang_member[11] m5_enemy_accuracy SET_CHAR_HEADING bad_gang_member[11] 180.0 GIVE_WEAPON_TO_CHAR bad_gang_member[11] WEAPONTYPE_TEC9 3000 SET_CHAR_STAY_IN_SAME_PLACE bad_gang_member[11] TRUE SET_CHAR_DECISION_MAKER bad_gang_member[11] m5_empty_ped_decision_maker SHUT_ALL_CHARS_UP FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON PRINT ( STP4_04 ) 11000 1 //Help Sweet defend against the last of the enemies. DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m5_death_checks IF m5_deathcheck_flag = 1 GOTO mission_music5_failed ENDIF timera = 0 m5_control_flag = 2 ENDIF ENDIF IF m5_control_flag = 2 //controlling the guys coming from behind straps house IF m5_controlling_last_wave = 0 IF IS_CHAR_DEAD bad_gang_member[0] IF IS_CHAR_DEAD bad_gang_member[1] IF IS_CHAR_DEAD bad_gang_member[2] IF IS_CHAR_DEAD bad_gang_member[7] IF IS_CHAR_DEAD bad_gang_member[8] m5_controlling_last_wave = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF timera > 10000 m5_controlling_last_wave = 1 ENDIF IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2478.5 -1646.2 7.0 7.0 FALSE m5_controlling_last_wave = 1 ENDIF IF NOT IS_CHAR_DEAD bad_gang_member[8] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR bad_gang_member[8] scplayer m5_controlling_last_wave = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD bad_gang_member[9] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR bad_gang_member[9] scplayer m5_controlling_last_wave = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD bad_gang_member[10] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR bad_gang_member[10] scplayer m5_controlling_last_wave = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD bad_gang_member[11] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR bad_gang_member[11] scplayer m5_controlling_last_wave = 1 ENDIF ENDIF ENDIF IF m5_controlling_last_wave = 1 IF NOT IS_CHAR_DEAD bad_gang_member[8] CREATE_GROUP DEFAULT_TASK_ALLOCATOR_STAND_STILL m5_bad_group SET_GROUP_SEPARATION_RANGE m5_bad_group 300.0 SET_CHAR_DECISION_MAKER bad_gang_member[8] m5_ped_decisions SET_GROUP_DECISION_MAKER m5_bad_group m5_group_dec SET_GROUP_LEADER m5_bad_group bad_gang_member[8] ADD_BLIP_FOR_CHAR bad_gang_member[8] bad_gang_member_blip[8] CHANGE_BLIP_SCALE bad_gang_member_blip[8] 1 SET_CHAR_STAY_IN_SAME_PLACE bad_gang_member[8] FALSE TASK_KILL_CHAR_ON_FOOT bad_gang_member[8] scplayer ENDIF IF NOT IS_CHAR_DEAD bad_gang_member[9] SET_CHAR_DECISION_MAKER bad_gang_member[9] m5_ped_decisions SET_GROUP_MEMBER m5_bad_group bad_gang_member[9] ADD_BLIP_FOR_CHAR bad_gang_member[9] bad_gang_member_blip[9] CHANGE_BLIP_SCALE bad_gang_member_blip[9] 1 SET_CHAR_STAY_IN_SAME_PLACE bad_gang_member[9] FALSE TASK_KILL_CHAR_ON_FOOT bad_gang_member[9] scplayer ENDIF IF NOT IS_CHAR_DEAD bad_gang_member[10] SET_CHAR_DECISION_MAKER bad_gang_member[10] m5_ped_decisions SET_GROUP_MEMBER m5_bad_group bad_gang_member[10] ADD_BLIP_FOR_CHAR bad_gang_member[10] bad_gang_member_blip[10] CHANGE_BLIP_SCALE bad_gang_member_blip[10] 1 SET_CHAR_STAY_IN_SAME_PLACE bad_gang_member[10] FALSE OPEN_SEQUENCE_TASK m5_seq TASK_GO_STRAIGHT_TO_COORD -1 2477.3 -1651.4 12.5 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 2464.0 -1653.4 12.5 PEDMOVE_RUN -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK bad_gang_member[10] m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF IF NOT IS_CHAR_DEAD bad_gang_member[11] SET_CHAR_DECISION_MAKER bad_gang_member[11] m5_ped_decisions SET_GROUP_MEMBER m5_bad_group bad_gang_member[11] ADD_BLIP_FOR_CHAR bad_gang_member[11] bad_gang_member_blip[11] CHANGE_BLIP_SCALE bad_gang_member_blip[11] 1 SET_CHAR_STAY_IN_SAME_PLACE bad_gang_member[11] FALSE TASK_KILL_CHAR_ON_FOOT bad_gang_member[11] sweet ENDIF //sweet dialogue CLEAR_PRINTS m5_speech_goals = 2 m5_speech_control_flag = 7 m5_random_last_label = 8 GOSUB m5_dialogue_setup m5_controlling_last_wave = 2 ENDIF //waiting for everyone to die IF IS_CHAR_DEAD bad_gang_member[0] IF IS_CHAR_DEAD bad_gang_member[1] IF IS_CHAR_DEAD bad_gang_member[2] IF IS_CHAR_DEAD bad_gang_member[3] IF IS_CHAR_DEAD bad_gang_member[4] IF IS_CHAR_DEAD bad_gang_member[5] IF IS_CHAR_DEAD bad_gang_member[6] IF IS_CHAR_DEAD bad_gang_member[7] IF IS_CHAR_DEAD bad_gang_member[8] IF IS_CHAR_DEAD bad_gang_member[9] IF IS_CHAR_DEAD bad_gang_member[10] IF IS_CHAR_DEAD bad_gang_member[11] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[0] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[1] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[2] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[3] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[4] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[5] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[6] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[7] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[8] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[9] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[10] MARK_CHAR_AS_NO_LONGER_NEEDED bad_gang_member[11] REMOVE_BLIP bad_gang_member_blip[0] REMOVE_BLIP bad_gang_member_blip[1] REMOVE_BLIP bad_gang_member_blip[2] REMOVE_BLIP bad_gang_member_blip[3] REMOVE_BLIP bad_gang_member_blip[4] REMOVE_BLIP bad_gang_member_blip[5] REMOVE_BLIP bad_gang_member_blip[6] REMOVE_BLIP bad_gang_member_blip[7] REMOVE_BLIP bad_gang_member_blip[8] REMOVE_BLIP bad_gang_member_blip[9] REMOVE_BLIP bad_gang_member_blip[10] REMOVE_BLIP bad_gang_member_blip[11] CLEAR_PRINTS timera = 0 m5_control_flag = 0 music5_goals = 4 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //removing blips as each char dies IF m5_blip_flag < 12 IF IS_CHAR_DEAD bad_gang_member[m5_blip_flag] REMOVE_BLIP bad_gang_member_blip[m5_blip_flag] ENDIF m5_blip_flag ++ ELSE m5_blip_flag = 0 ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// Final Cutscene //////////////////////////////////////////////////////////////////////////////// IF music5_goals = 4 GOSUB check_player_is_safe IF player_is_completely_safe = 1 IF m5_control_flag = 0 IF timera > 2000 CLEAR_PRINTS DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m5_death_checks IF m5_deathcheck_flag = 1 GOTO mission_music5_failed ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 m5_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE IF NOT main_visible_area = 0 SET_AREA_VISIBLE 0 SET_CHAR_AREA_VISIBLE scplayer 0 ENDIF SHUT_ALL_CHARS_UP TRUE CLEAR_AREA 2484.9 -1649.2 12.5 160.0 TRUE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 2484.2 -1666.2 12.3 SET_CHAR_HEADING scplayer 336.7 OPEN_SEQUENCE_TASK m5_seq TASK_GO_STRAIGHT_TO_COORD -1 2486.7 -1650.1 12.3 PEDMOVE_WALK -1 TASK_PAUSE -1 1000 TASK_GO_STRAIGHT_TO_COORD -1 2486.7 -1646.0 12.5 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK scplayer m5_seq CLEAR_SEQUENCE_TASK m5_seq IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS_IMMEDIATELY sweet SET_CHAR_COORDINATES sweet 2487.2 -1666.1 12.3 SET_CHAR_HEADING sweet 4.3 OPEN_SEQUENCE_TASK m5_seq TASK_GO_STRAIGHT_TO_COORD -1 2486.7 -1645.1 12.3 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 178.8 CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK sweet m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF IF NOT IS_CHAR_DEAD m5_car_mover CLEAR_CHAR_TASKS_IMMEDIATELY m5_car_mover SET_CHAR_COORDINATES m5_car_mover 2488.9 -1649.0 12.5 SET_CHAR_HEADING m5_car_mover 177.2 ENDIF IF NOT IS_CHAR_DEAD good_gang_member[0] CLEAR_CHAR_TASKS_IMMEDIATELY good_gang_member[0] SET_CHAR_COORDINATES good_gang_member[0] 2484.2 -1669.1 12.3 SET_CHAR_HEADING good_gang_member[0] 177.2 OPEN_SEQUENCE_TASK m5_seq TASK_GO_STRAIGHT_TO_COORD -1 2488.4 -1650.8 12.3 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK good_gang_member[0] m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF IF NOT IS_CHAR_DEAD good_gang_member[1] CLEAR_CHAR_TASKS_IMMEDIATELY good_gang_member[1] SET_CHAR_COORDINATES good_gang_member[1] 2485.2 -1669.1 12.3 SET_CHAR_HEADING good_gang_member[1] 177.2 OPEN_SEQUENCE_TASK m5_seq TASK_GO_STRAIGHT_TO_COORD -1 2489.4 -1650.7 12.3 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK m5_seq PERFORM_SEQUENCE_TASK good_gang_member[1] m5_seq CLEAR_SEQUENCE_TASK m5_seq ENDIF //sweet dialogue m5_speech_goals = 3 m5_speech_control_flag = 0 GOSUB m5_dialogue_setup SET_FIXED_CAMERA_POSITION 2480.7 -1660.5 13.1 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2498.7 -1656.6 17.9 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB m5_death_checks IF m5_deathcheck_flag = 1 GOTO mission_music5_failed ENDIF m5_control_flag = 1 ENDIF ENDIF ENDIF IF m5_control_flag = 1 IF m5_speech_control_flag = 4 SET_FIXED_CAMERA_POSITION 2471.5542 -1656.1665 18.3790 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2472.4253 -1655.6761 18.4020 JUMP_CUT //SET_FIXED_CAMERA_POSITION 2480.7 -1660.5 13.1 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 2486.5 -1646.7 16.3 JUMP_CUT m5_control_flag = 2 ENDIF ENDIF IF m5_control_flag = 2 IF m5_speech_goals = 0 timera = 0 m5_control_flag = 3 ENDIF ENDIF IF m5_control_flag = 3 IF timera > 1000 DO_FADE 2500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GET_TIME_OF_DAY m5_hours m5_minutes m5_hours += 6 SET_TIME_OF_DAY m5_hours m5_minutes DELETE_CHAR sweet UNLOAD_SPECIAL_CHARACTER 1 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 2486.6 -1649.9 12.5 SET_CHAR_HEADING scplayer 177.8 SHUT_ALL_CHARS_UP FALSE SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT WAIT 2000 DO_FADE 2500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_music5_passed ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////MISC STUFF////////////////////////////////////////////////////////////////////////////////////// IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer 2484.9 -1663.5 300.0 300.0 FALSE CLEAR_PRINTS PRINT_NOW ( STP4_06 ) 7000 1 //Too many of your gang have been killed. GOTO mission_music5_failed ENDIF //ingame dialogue GOSUB m5_overall_dialogue GOTO mission_music5_loop // Mission music5 failed mission_music5_failed: PRINT_BIG M_FAIL 5000 1 RETURN // mission music5 passed mission_music5_passed: IF strap4_mission_passed_once_flag = 0 REMOVE_BLIP strap_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT strap2X strap2Y strap2Z strap_blip_icon strap_contact_blip DO_FADE 500 FADE_IN PRINT_NOW ( STP4_07 ) 11000 1 //The house party will start at 8pm and finish at 5am at MC Strap's house. Get some new threads and a haircut. flag_strap_mission_counter ++ strap4_mission_passed_once_flag = 1 ELSE SET_INT_STAT PASSED_STRAP4 1 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 10 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 10//amount of respect CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 REGISTER_MISSION_PASSED STRAP_4 PLAYER_MADE_PROGRESS 1 flag_strap_mission_counter ++ REMOVE_BLIP strap_contact_blip ENDIF RETURN // mission cleanup mission_cleanup_music5: //SET_CAMERA_BEHIND_PLAYER IF IS_STRING_EMPTY $shop_name RESTORE_CAMERA_JUMPCUT ENDIF IF NOT IS_CAR_DEAD blocking_car1 LOCK_CAR_DOORS blocking_car1 CARLOCK_UNLOCKED SET_CAR_PROOFS blocking_car1 FALSE FALSE FALSE FALSE FALSE SET_CAR_HEAVY blocking_car1 FALSE ENDIF IF NOT IS_CAR_DEAD blocking_car2 LOCK_CAR_DOORS blocking_car2 CARLOCK_UNLOCKED SET_CAR_PROOFS blocking_car2 FALSE FALSE FALSE FALSE FALSE SET_CAR_HEAVY blocking_car2 FALSE ENDIF IF NOT IS_CAR_DEAD alleyway_car LOCK_CAR_DOORS alleyway_car CARLOCK_UNLOCKED SET_CAR_PROOFS alleyway_car FALSE FALSE FALSE FALSE FALSE SET_CAR_HEAVY alleyway_car FALSE ENDIF REMOVE_BLIP bad_gang_member_blip[0] REMOVE_BLIP bad_gang_member_blip[1] REMOVE_BLIP bad_gang_member_blip[2] REMOVE_BLIP bad_gang_member_blip[3] REMOVE_BLIP bad_gang_member_blip[4] REMOVE_BLIP bad_gang_member_blip[5] REMOVE_BLIP bad_gang_member_blip[6] REMOVE_BLIP bad_gang_member_blip[7] REMOVE_BLIP bad_gang_member_blip[8] REMOVE_BLIP bad_gang_member_blip[9] REMOVE_BLIP bad_gang_member_blip[10] REMOVE_BLIP bad_gang_member_blip[11] REMOVE_BLIP bad_gang_member_blip[12] REMOVE_BLIP bad_gang_member_blip[13] LA_hub_activity = 0 //ambient shit turned off IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF SHUT_ALL_CHARS_UP FALSE REMOVE_CHAR_ELEGANTLY sweet REMOVE_CHAR_ELEGANTLY ryder MARK_MODEL_AS_NO_LONGER_NEEDED FAM2 MARK_MODEL_AS_NO_LONGER_NEEDED FAM3 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS2 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS3 MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO MARK_MODEL_AS_NO_LONGER_NEEDED TAHOMA MARK_MODEL_AS_NO_LONGER_NEEDED VOODOO MARK_MODEL_AS_NO_LONGER_NEEDED MOLOTOV MARK_MODEL_AS_NO_LONGER_NEEDED TEC9 //switching on car gens UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 SWITCH_CAR_GENERATOR gen_car6 101 SWITCH_CAR_GENERATOR gen_car7 101 SWITCH_CAR_GENERATOR gen_car10 101 REMOVE_PICKUP m5_UZI_pickup ENABLE_AMBIENT_CRIME TRUE GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////// GOSUBS /////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// m5_death_checks://///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF IS_CHAR_DEAD sweet CLEAR_PRINTS PRINT_NOW ( STP4_05 ) 7000 1 //You killed Sweet! m5_deathcheck_flag = 1 ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// m5_my_number_plates://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// GENERATE_RANDOM_INT_IN_RANGE 1 37 m5_no_plates_flag IF m5_no_plates_flag = 1 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates got_m00_ ENDIF IF m5_no_plates_flag = 2 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates m00tv_4u ENDIF IF m5_no_plates_flag = 3 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates mathew_2 ENDIF IF m5_no_plates_flag = 4 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates d4_dew0r ENDIF IF m5_no_plates_flag = 5 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates d0de_777 ENDIF IF m5_no_plates_flag = 6 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates dam0_666 ENDIF IF m5_no_plates_flag = 7 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates C0NEY_88 ENDIF IF m5_no_plates_flag = 8 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates pre4cher ENDIF IF m5_no_plates_flag = 9 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates dbp_4ndy ENDIF IF m5_no_plates_flag = 10 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates ev1l_sly ENDIF IF m5_no_plates_flag = 11 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates n1_r4v3n ENDIF IF m5_no_plates_flag = 12 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates d1vx_z00 ENDIF IF m5_no_plates_flag = 13 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates mr_b3nn ENDIF IF m5_no_plates_flag = 14 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates r3d_r4sp ENDIF IF m5_no_plates_flag = 15 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates La_B0mba ENDIF IF m5_no_plates_flag = 16 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates L3337_0g ENDIF IF m5_no_plates_flag = 17 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates budd4h_X ENDIF IF m5_no_plates_flag = 18 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates t3h_buck ENDIF IF m5_no_plates_flag = 19 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates CHUNKY_1 ENDIF IF m5_no_plates_flag = 20 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates ev1l_bnz ENDIF IF m5_no_plates_flag = 21 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates S4ND_M4N ENDIF IF m5_no_plates_flag = 22 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates RKK_DBP1 ENDIF IF m5_no_plates_flag = 23 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates RE1_K0KU ENDIF IF m5_no_plates_flag = 24 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates s3xy_jud ENDIF IF m5_no_plates_flag = 25 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates sunra_93 ENDIF IF m5_no_plates_flag = 26 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates UG_FuX69 ENDIF IF m5_no_plates_flag = 27 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates Li0n_Cum ENDIF IF m5_no_plates_flag = 28 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates rkk_pwnd ENDIF IF m5_no_plates_flag = 29 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates haze_b0b ENDIF IF m5_no_plates_flag = 30 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates t3h_fluf ENDIF IF m5_no_plates_flag = 31 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates BM_4NDY_ ENDIF IF m5_no_plates_flag = 32 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates BM_D34N_ ENDIF IF m5_no_plates_flag = 33 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates BM_L4C3Y ENDIF IF m5_no_plates_flag = 34 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates BM_D3V__ ENDIF IF m5_no_plates_flag = 35 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates NU_SK00L ENDIF IF m5_no_plates_flag = 36 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates G4L_AVET ENDIF IF m5_no_plates_flag = 37 CUSTOM_PLATE_FOR_NEXT_CAR m5_no_plates M0j0_j0j ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// m5_dialogue_setup:////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF m5_speech_goals = 1 $m5_print_label[0] = &LOC4_CA // Shit, I'll go rustle up some homies! $m5_print_label[1] = &LOC4_CB // Oh man, I'll go get us some more back up! $m5_print_label[2] = &LOC4_CC // I'll go get Smoke and some Grove boys! m5_audio_label[0] = SOUND_LOC4_CA m5_audio_label[1] = SOUND_LOC4_CB m5_audio_label[2] = SOUND_LOC4_CC m5_last_label = m5_random_last_label ENDIF IF m5_speech_goals = 2 $m5_print_label[0] = &LOC4_AA // Yo, get some cars and block the road! $m5_print_label[1] = &LOC4_AB // The rest of you get strapped! $m5_print_label[2] = &LOC4_AC // Pick your positions - Carl get some cover! $m5_print_label[3] = &LOC4_AE // Let 'em have it! //$m5_print_label[4] = &LOC4_AD // Steady, here they come! $m5_print_label[5] = &LOC4_AF // Look out, more of them above us on the bridge! $m5_print_label[6] = &LOC4_AG // Carl! Cover the alleyway! $m5_print_label[7] = &LOC4_AH // Behind us, CJ, behind us! m5_audio_label[0] = SOUND_LOC4_AA m5_audio_label[1] = SOUND_LOC4_AB m5_audio_label[2] = SOUND_LOC4_AC m5_audio_label[3] = SOUND_LOC4_AE //m5_audio_label[4] = SOUND_LOC4_AD m5_audio_label[5] = SOUND_LOC4_AF m5_audio_label[6] = SOUND_LOC4_AG m5_audio_label[7] = SOUND_LOC4_AH m5_last_label = m5_random_last_label ENDIF IF m5_speech_goals = 3 $m5_print_label[0] = &LOC4_BA // GROVE IS KING!! $m5_print_label[1] = &LOC4_BB // Man, I ain't seen Ballas roll in that strength before! $m5_print_label[2] = &LOC4_BC // They heard Carl Johnson was running with his brother again! $m5_print_label[3] = &LOC4_BD // Word. $m5_print_label[4] = &LOC4_BE // C'mon, let's get back to the party. //$m5_print_label[5] = &LOC4_BF // GROVE IS KING! $m5_print_label[5] = &LOC4_BG // Shit, man, some party after all! m5_audio_label[0] = SOUND_LOC4_BA m5_audio_label[1] = SOUND_LOC4_BB m5_audio_label[2] = SOUND_LOC4_BC m5_audio_label[3] = SOUND_LOC4_BD m5_audio_label[4] = SOUND_LOC4_BE //m5_audio_label[5] = SOUND_LOC4_BF m5_audio_label[5] = SOUND_LOC4_BG m5_last_label = 6 ENDIF m5_slot_load = m5_speech_control_flag m5_slot1 = 0 m5_slot2 = 0 m5_play_which_slot = 1 //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// m5_overall_dialogue://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF m5_speech_goals = 2 //sweet giving orders IF m5_speech_control_flag < m5_last_label GOSUB m5_loading_dialogue GOSUB m5_playing_dialogue IF NOT IS_CHAR_DEAD sweet GOSUB m5_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $m5_print_label[m5_speech_control_flag] m5_slot1 = 0 m5_slot2 = 0 ENDIF ELSE m5_speech_goals = 0 ENDIF ENDIF IF m5_speech_goals = 1 //ryder cutscene dialogue OR m5_speech_goals = 3 //final cutscene dialogue IF m5_speech_control_flag < m5_last_label GOSUB m5_loading_dialogue GOSUB m5_playing_dialogue GOSUB m5_finishing_dialogue ELSE m5_speech_goals = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// m5_loading_dialogue://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF m5_slot_load < m5_last_label //slot 1 IF m5_slot1 = 0 LOAD_MISSION_AUDIO 1 m5_audio_label[m5_slot_load] m5_slot_load ++ m5_slot1 = 1 ENDIF //slot 2 IF m5_slot2 = 0 LOAD_MISSION_AUDIO 2 m5_audio_label[m5_slot_load] m5_slot_load ++ m5_slot2 = 1 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// m5_playing_dialogue://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //slot 1 IF m5_play_which_slot = 1 IF m5_slot1 = 1 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $m5_print_label[m5_speech_control_flag] ) 4500 1 // m5_slot1 = 2 ENDIF ENDIF ENDIF //slot 2 IF m5_play_which_slot = 2 IF m5_slot2 = 1 IF HAS_MISSION_AUDIO_LOADED 2 PLAY_MISSION_AUDIO 2 PRINT_NOW ( $m5_print_label[m5_speech_control_flag] ) 4500 1 // m5_slot2 = 2 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// m5_finishing_dialogue:////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //slot 1 IF m5_slot1 = 2 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_THIS_PRINT $m5_print_label[m5_speech_control_flag] m5_speech_control_flag ++ m5_play_which_slot = 2 m5_slot1 = 0 ENDIF ENDIF //slot 2 IF m5_slot2 = 2 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT $m5_print_label[m5_speech_control_flag] m5_speech_control_flag ++ m5_play_which_slot = 1 m5_slot2 = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// } MISSION_START // ******************************************************************************************* // ********************************** Race Tournament **************************************** // ******************************************************************************************* // Mission start stuff { GOSUB mission_start_cprace IF HAS_DEATHARREST_BEEN_EXECUTED PRINT_NOW RACES25 5000 1//~r~You have been disqualified from the race IF show_race_selection = FALSE IF race_selection = CESAR_RACE AND flag_cesar_mission_counter = 0 PRINT_BIG M_FAIL 3000 1 ENDIF IF race_selection = BADLAND_RACE1 OR race_selection = BADLAND_RACE2 PRINT_BIG M_FAIL 3000 1 ENDIF ENDIF ELSE IF exit_mode = 0 or exit_mode = 3 DO_FADE 2000 FADE_OUT SET_DEATHARREST_STATE OFF WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF if show_race_selection = FALSE if race_selection = BADLAND_RACE1 or race_selection = BADLAND_RACE2 SET_ALL_CARS_CAN_BE_DAMAGED FALSE endif endif ENDIF GOSUB mission_cleanup_cprace MISSION_END // *************************************** Mission Start ************************************* mission_start_cprace: flag_player_on_mission = 1 disable_mod_garage = 1 SCRIPT_NAME cprace WAIT 0 // fixes bug where game would crash if player fails race/mission while in an interior. DISABLE_ALL_ENTRY_EXITS TRUE load_mission_text racetor LVAR_INT mission_blip mission_timer temp_int sequence_task sequence_taskB players_car mins seconds race_timer_temp LVAR_FLOAT h x2 y2 z2 x3 y3 z3 temp_float speed LVAR_INT display_hud_position position display_hud_position = 1 lVAR_INT race_flag IF show_race_selection = TRUE PRINT_HELP_FOREVER RACES33 // Press ~m~~widget_race_left~ or ~m~~widget_race_right~ to select race. Press ~m~~widget_store_accept~ To Start Race. Press ~m~~widget_store_cancel~ to quit. race_flag = MENU_SCREEN exit_mode = 0 if menu_mode = LA_RACES lvar_int first_race last_race first_race = 0 last_race = 8 endif if menu_mode = SF_RACES first_race = 9 last_race = 14 endif if menu_mode = LV_RACES first_race = 15 last_race = 18 endif if menu_mode = AIR_RACES first_race = 19 last_race = 24 endif if race_selection < first_race or race_selection > last_race race_selection = first_race endif LVAR_INT txd_in_memory txd_in_memory = 0 GOSUB load_race_txd ELSE race_flag = GET_COORDS_FOR_RACE lVAR_INT exit_mode if race_selection = NASCAR_RACE or race_selection = DIRTBIKE_STADIUM exit_mode = 3 else exit_mode = 2 endif ENDIF IF race_flag = RACE_START_GO lvar_int first_blip ADD_BLIP_FOR_COORD x y z first_blip CREATE_CHECKPOINT checkpoint_type x y z x y z 6.0 cp_marker create_racers_car://///////////////////////////////////////////// racer_cp_z[a] += 3.0 GET_GROUND_Z_FOR_3D_COORD racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] racer_cp_z[a] if racer_cp_z[a] < 0.0 if IS_THIS_MODEL_A_BOAT racers_car_model[a] racer_cp_z[a] = 0.0 endif endif CREATE_CAR racers_car_model[a] racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] racers_car[a] SET_CAR_HEADING racers_car[a] heading SET_VEHICLE_AREA_VISIBLE racers_car[a] interior_race LOCK_CAR_DOORS racers_car[a] CARLOCK_LOCKOUT_PLAYER_ONLY if race_selection = NASCAR_RACE set_car_health racers_car[a] 2200 endif if race_selection = DIRTBIKE_STADIUM set_car_health racers_car[a] 10000 SET_CAR_PROOFS racers_car[a] false false false true false endif if interior_race = 0 SET_CAR_PROOFS racers_car[a] FALSE TRUE FALSE FALSE FALSE SET_CAR_STRONG racers_car[a] TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER racers_car[a] TRUE if race_flag = CREATE_START_LINE while IS_CAR_WAITING_FOR_WORLD_COLLISION racers_car[a] wait 0 if is_car_dead racers_car[a] if show_race_selection = false if race_selection = CESAR_RACE failed_cesar_race = 1 endif endif return endif endwhile endif SET_LOAD_COLLISION_FOR_CAR_FLAG racers_car[a] FALSE else SET_LOAD_COLLISION_FOR_CAR_FLAG racers_car[a] TRUE endif if not racers_car_colour1[0] = -1 CHANGE_CAR_COLOUR racers_car[a] racers_car_colour1[a] racers_car_colour2[a] endif IF IS_THIS_MODEL_A_BOAT racers_car_model[a] SET_CAR_STRAIGHT_LINE_DISTANCE racers_car[a] 40 SET_BOAT_CRUISE_SPEED racers_car[a] 42.0 ELSE IF IS_THIS_MODEL_A_HELI racers_car_model[a] FREEZE_CAR_POSITION racers_car[a] TRUE SET_CAR_FORWARD_SPEED racers_car[a] 10.0 ELSE IF IS_THIS_MODEL_A_PLANE racers_car_model[a] FREEZE_CAR_POSITION racers_car[a] TRUE SET_CAR_FORWARD_SPEED racers_car[a] 10.0 ELSE SET_CAR_WATERTIGHT racers_car[a] TRUE SET_CAN_BURST_CAR_TYRES racers_car[a] FALSE if interior_race = 0 SET_UPSIDEDOWN_CAR_NOT_DAMAGED racers_car[a] TRUE endif SET_CAR_STRAIGHT_LINE_DISTANCE racers_car[a] 5 SET_CAR_DRIVING_STYLE racers_car[a] 2 SET_CAR_CRUISE_SPEED racers_car[a] 42.0 CAR_SET_IDLE racers_car[a] ENDIF ENDIF ENDIF RETURN ENDIF VAR_FLOAT x_hud_pos[14] y_hud_pos[14] x_hud_scale[14] y_hud_scale[14] x_hud_pos[0] = 70.3919 y_hud_pos[0] = 124.6278 x_hud_scale[0] = 0.6617 y_hud_scale[0] = 2.5845 y_hud_pos[1] = 173.8119 x_hud_scale[1] = 0.7208 y_hud_scale[1] = 2.5114 y_hud_pos[2] = 198.9919 x_hud_scale[2] = 0.7377 y_hud_scale[2] = 2.2364 y_hud_pos[3] = 249.6367 y_hud_pos[5] = 303.4643 y_hud_pos[6] = 328.6443 y_hud_pos[7] = 25.1800 LVAR_FLOAT race_distance[30] race_distance[0] = 2357.2393//LA lowrider race race_distance[1] = 1321.1934//LA race 2 race_distance[2] = 3300.9675//LA race 3 race_distance[3] = 3646.7991//LA race 4 race_distance[4] = 3880.6770//LA race 5 race_distance[5] = 4216.2734//LA race 6 race_distance[6] = 8410.4580//LA race 7 race_distance[7] = 4817.6362//badlands race 1 race_distance[8] = 4817.6362//badlands race 2 race_distance[9] = 3203.2295//badlands race 3 (san fran) sanchez race_distance[10] = 3265.0281//badlands race 4 (san fran) buggy race_distance[11] = 1901.2850//gokart race_distance[12] = 2644.2966//sanfran race 1 race_distance[13] = 8372.6787//sanfran race 2 race_distance[14] = 10760.4961//sanfran race 3 race_distance[15] = 7806.1025//Sanfran to vegas race_distance[16] = 4307.6499//desert race 1 race_distance[17] = 4696.6606//desert race 2 race_distance[18] = 5960.2803//vegas ring road race_distance[19] = 6826.6475 //plane race 1 race_distance[20] = 12299.1367//plane race 2 race_distance[21] = 17384.6172//plane race 3 race_distance[22] = 4922.4722//heli race 1 race_distance[23] = 4398.4995//heli race 2 race_distance[24] = 4970.7422//heli race 3 race_distance[25] = 0.0//nascar 8track race_distance[26] = 0.0//dirtbike stadium track race_distance[27] = 0.0 race_distance[28] = 0.0 race_distance[29] = 0.0 LVAR_TEXT_LABEL $race_name[30] $race_name[0] = &RACE00//Lowrider Race $race_name[1] = &RACE01//Little Loop $race_name[2] = &RACE02//Backroad Wanderer $race_name[3] = &RACE03//City Circuit $race_name[4] = &RACE04//Vine Wood $race_name[5] = &RACE05//Freeway $race_name[6] = &RACE06//Into the Country $race_name[7] = &RACE07//Badlands A $race_name[8] = &RACE08//Badlands B $race_name[9] = &RACE09//Dirtbike Danger $race_name[10] = &RACE10//Bandito County $race_name[11] = &RACE11//gokart $race_name[12] = &RACE12//San Fierro Fastlane $race_name[13] = &RACE13//San Fierro Hills $race_name[14] = &RACE14//Country Endurance $race_name[15] = &RACE15//San Fierro to Las Venturas $race_name[16] = &RACE16//Dam Rider $race_name[17] = &RACE17//Desert Tricks $race_name[18] = &RACE18//Las Venturas Ringroad $race_name[19] = &RACE19//Plane Race 1 - Rustler $race_name[20] = &RACE20//Plane Race 2 - Stunt $race_name[21] = &RACE21//Plane Race 3 - Hydra $race_name[22] = &RACE22//Heli Race 1 $race_name[23] = &RACE23//Heli Race 2 $race_name[24] = &RACE24//Heli Race 3 //$race_name[25] = &RACE25//RACE 25 //$race_name[26] = &RACE26//RACE 26 //$race_name[27] = &RACE27//RACE 27 //$race_name[28] = &RACE28//RACE 28 //$race_name[29] = &RACE29//RACE 29 lvar_int race_stats_time[30] race_stats_time[0] = RACETOUR_0_BEST_TIME race_stats_time[1] = RACETOUR_1_BEST_TIME race_stats_time[2] = RACETOUR_2_BEST_TIME race_stats_time[3] = RACETOUR_3_BEST_TIME race_stats_time[4] = RACETOUR_4_BEST_TIME race_stats_time[5] = RACETOUR_5_BEST_TIME race_stats_time[6] = RACETOUR_6_BEST_TIME race_stats_time[7] = RACETOUR_7_BEST_TIME race_stats_time[8] = RACETOUR_8_BEST_TIME race_stats_time[9] = RACETOUR_9_BEST_TIME race_stats_time[10] = RACETOUR_10_BEST_TIME race_stats_time[11] = RACETOUR_11_BEST_TIME race_stats_time[12] = RACETOUR_12_BEST_TIME race_stats_time[13] = RACETOUR_13_BEST_TIME race_stats_time[14] = RACETOUR_14_BEST_TIME race_stats_time[15] = RACETOUR_15_BEST_TIME race_stats_time[16] = RACETOUR_16_BEST_TIME race_stats_time[17] = RACETOUR_17_BEST_TIME race_stats_time[18] = RACETOUR_18_BEST_TIME race_stats_time[19] = RACETOUR_19_BEST_TIME race_stats_time[20] = RACETOUR_20_BEST_TIME race_stats_time[21] = RACETOUR_21_BEST_TIME race_stats_time[22] = RACETOUR_22_BEST_TIME race_stats_time[23] = RACETOUR_23_BEST_TIME race_stats_time[24] = RACETOUR_24_BEST_TIME race_stats_time[NASCAR_RACE] = BEST_TIME_HOTRING race_stats_time[DIRTBIKE_STADIUM] = BEST_TIME_DIRTTRACK //race_stats_time[25] = BEST_TIME_HOTRING //race_stats_time[26] = BEST_TIME_HOTRING //race_stats_time[27] = BEST_TIME_HOTRING //race_stats_time[28] = BEST_TIME_HOTRING //race_stats_time[29] = BEST_TIME_HOTRING lvar_int race_stats_position[30] race_stats_position[0] = RACETOUR_0_BEST_POSITION race_stats_position[1] = RACETOUR_1_BEST_POSITION race_stats_position[2] = RACETOUR_2_BEST_POSITION race_stats_position[3] = RACETOUR_3_BEST_POSITION race_stats_position[4] = RACETOUR_4_BEST_POSITION race_stats_position[5] = RACETOUR_5_BEST_POSITION race_stats_position[6] = RACETOUR_6_BEST_POSITION race_stats_position[7] = RACETOUR_7_BEST_POSITION race_stats_position[8] = RACETOUR_8_BEST_POSITION race_stats_position[9] = RACETOUR_9_BEST_POSITION race_stats_position[10] = RACETOUR_10_BEST_POSITION race_stats_position[11] = RACETOUR_11_BEST_POSITION race_stats_position[12] = RACETOUR_12_BEST_POSITION race_stats_position[13] = RACETOUR_13_BEST_POSITION race_stats_position[14] = RACETOUR_14_BEST_POSITION race_stats_position[15] = RACETOUR_15_BEST_POSITION race_stats_position[16] = RACETOUR_16_BEST_POSITION race_stats_position[17] = RACETOUR_17_BEST_POSITION race_stats_position[18] = RACETOUR_18_BEST_POSITION //race_stats_position[19] = RACETOUR_19_BEST_POSITION //race_stats_position[20] = RACETOUR_20_BEST_POSITION //race_stats_position[21] = RACETOUR_21_BEST_POSITION //race_stats_position[22] = RACETOUR_22_BEST_POSITION race_stats_position[NASCAR_RACE] = BEST_POSITION_HOTRING race_stats_position[DIRTBIKE_STADIUM] = BEST_POSITION_DIRTTRACK //race_stats_position[25] = RACETOUR_25_BEST_POSITION //race_stats_position[26] = RACETOUR_26_BEST_POSITION //race_stats_position[27] = RACETOUR_27_BEST_POSITION //race_stats_position[28] = RACETOUR_28_BEST_POSITION //race_stats_position[29] = RACETOUR_29_BEST_POSITION get_char_coordinates scplayer x y z SET_RESPAWN_POINT_FOR_DURATION_OF_MISSION x y z lvar_int checkpoint_type checkpoint_type = checkpoint_tube USE_TEXT_COMMANDS TRUE SET_MESSAGE_FORMATTING TRUE 355 370 SET_PLAYER_CONTROL player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 TRUE SET_ALL_CARS_CAN_BE_DAMAGED FALSE LVAR_INT last_lap_time last_lap_time = 0 LVAR_INT out_of_car_flag out_of_car_flag = 0 lvar_int total_races total_races = 25 lvar_int racers_car_colour1[6] racers_car_colour2[6] racers_car_colour1[0] = -1 LVAR_INT interior_race interior_race = 0 LVAR_INT got_a_best_time got_a_best_position got_a_best_time = 0 got_a_best_position = 0 lvar_int total_laps total_laps = 1 lvar_int race_audio_flag race_audio_timer current_sound race_audio_flag = 0 race_audio_timer = 0 current_sound = 0 /////////////////////////////////////////////////////////////////////// //GET RACE COORDS part1 !!!!! ///////////////////////////////////////// /////////////////////////////////////////////////////////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_r race_debug = 0 var_int coords coords = 0 VIEW_INTEGER_VARIABLE coords coords SET_PLAYER_CONTROL player1 ON race_flag = CREATE_A_RACE LVAR_INT ps2_key_r_pressed ps2_key_r_pressed = 1 ELSE race_debug = -1 ENDIF /////////////////////////////////////////////////////////////////////// // *************************************** MISSION CHUNKS ************************************** CONST_INT CREATE_A_RACE 0 CONST_INT MENU_SCREEN 1 CONST_INT GET_COORDS_FOR_RACE 2 CONST_INT INITIALISE_VARIABLES 3 CONST_INT LOAD_MODELS 4 CONST_INT LOAD_AREA 5 CONST_INT CREATE_START_LINE 6 CONST_INT RACE_START_3 7 CONST_INT RACE_START_2 8 CONST_INT RACE_START_1 9 CONST_INT RACE_START_GO 10 CONST_INT MAIN_RACE_LOOP 11 CONST_INT MAIN_RACE_LOOP_B 12 CONST_INT FINISH_RACE 13 CONST_INT RACE_ENDED 14 // *************************************** MISSION LOOP ************************************** mission_cprace_loop: //////////////////// //////////// ////////////////////////////////////// // *************************************** MISSION LOOP ************************************** WAIT 0 GET_GAME_TIMER game_timer IF race_flag < FINISH_RACE position = 0 endif a = 0 switch race_flag /////////////////////////////////////////////////////////////////////// // GET RACE COORDS part2 !!!!! //////////////////////////////////////// /////////////////////////////////////////////////////////////////////// //ENABLE RACE DEBUG = HOLD R AS WALKING INTO MISSION MARKER //TURN ON RACE DEBUG = R //TURN OFF RACE DEBUG = R //DROP CHECKPOINT = CIRCLE //TEST & OUTPUT RACE = SHIFT + R case CREATE_A_RACE IF race_debug > -1 IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_r IF ps2_key_r_pressed = 0 IF race_debug = 0 ++ coords PRINT_NOW CHEATON 800 1 race_debug = 1 ELSE IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_shift //TEST RACE total_laps = 1 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "total_laps = 1" total_racers = 6 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "total_racers = 6" racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racer_model[4] = MALE01 racer_model[5] = MALE01 SAVE_NEWLINE_TO_DEBUG_FILE r = 0 WHILE r < total_racers SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "racer_model[" SAVE_INT_TO_DEBUG_FILE r SAVE_STRING_TO_DEBUG_FILE "] = MALE01" ++ r ENDWHILE racers_car_model[0] = stored_car_model racers_car_model[1] = stored_car_model racers_car_model[2] = stored_car_model racers_car_model[3] = stored_car_model racers_car_model[4] = stored_car_model racers_car_model[5] = stored_car_model SAVE_NEWLINE_TO_DEBUG_FILE r = 0 WHILE r < total_racers SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "racers_car_model[" SAVE_INT_TO_DEBUG_FILE r SAVE_STRING_TO_DEBUG_FILE "] = " SAVE_INT_TO_DEBUG_FILE stored_car_model ++ r ENDWHILE x = checkpoints_x[0] y = checkpoints_y[0] z = checkpoints_z[0] SAVE_NEWLINE_TO_DEBUG_FILE SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "checkpoints_x[0] = " SAVE_FLOAT_TO_DEBUG_FILE x SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "checkpoints_y[0] = " SAVE_FLOAT_TO_DEBUG_FILE y SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "checkpoints_z[0] = " SAVE_FLOAT_TO_DEBUG_FILE z PRINT_NOW LABEL 1000 1 //TESTING NEW RACE! race_flag = INITIALISE_VARIABLES coords = 0 race_debug = 0 ELSE coords = 0 PRINT_NOW CHEATOF 800 1 race_debug = 0 ENDIF ENDIF ps2_key_r_pressed = 1 ENDIF ELSE ps2_key_r_pressed = 0 ENDIF ENDIF IF race_debug = 1 IF IS_PLAYER_PLAYING player1 IF coords = 0 IF IS_BUTTON_PRESSED PAD1 CIRCLE IF pad1_circle_pressed = 0 ++coords pad1_circle_pressed = 1 ENDIF ELSE pad1_circle_pressed = 0 ENDIF ENDIF IF coords > 0 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer stored_car LVAR_INT stored_car_model GET_CAR_MODEL stored_car stored_car_model IF IS_THIS_MODEL_A_PLANE stored_car_model or IS_THIS_MODEL_A_HELI stored_car_model GET_DEBUG_CAMERA_COORDINATES x y z else GET_CHAR_COORDINATES scplayer x y z endif LVAR_FLOAT last_x last_y last_z GET_DISTANCE_BETWEEN_COORDS_3D x y z last_x last_y last_z distance LVAR_INT distance_int distance_int =# distance GOSUB setup_text_cprace SET_TEXT_DROPSHADOW 2 0 0 0 255 SET_TEXT_SCALE 0.8 2.0 DISPLAY_TEXT_WITH_NUMBER 30.0 145.0 RACES00 distance_int//Race ~1~: IF distance > 200.0 OR IS_BUTTON_PRESSED PAD1 CIRCLE LVAR_INT pad1_circle_pressed IF pad1_circle_pressed = 0 PRINT_NOW TEXXYZ4 800 1 // Writing coordinates to file... -- coords SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "checkpoints_x[" SAVE_INT_TO_DEBUG_FILE coords SAVE_STRING_TO_DEBUG_FILE "] = " SAVE_FLOAT_TO_DEBUG_FILE x SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "checkpoints_y[" SAVE_INT_TO_DEBUG_FILE coords SAVE_STRING_TO_DEBUG_FILE "] = " SAVE_FLOAT_TO_DEBUG_FILE y SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "checkpoints_z[" SAVE_INT_TO_DEBUG_FILE coords SAVE_STRING_TO_DEBUG_FILE "] = " IF IS_THIS_MODEL_A_BOAT stored_car_model ELSE IF IS_THIS_MODEL_A_HELI stored_car_model ELSE IF IS_THIS_MODEL_A_PLANE stored_car_model ELSE GET_GROUND_Z_FOR_3D_COORD x y z z ENDIF ENDIF ENDIF SAVE_FLOAT_TO_DEBUG_FILE z SAVE_NEWLINE_TO_DEBUG_FILE checkpoints_x[coords] = x checkpoints_y[coords] = y checkpoints_z[coords] = z last_x = x last_y = y last_z = z ++ coords total_checkpoints = coords ++ coords pad1_circle_pressed = 1 ENDIF ELSE pad1_circle_pressed = 0 ENDIF ENDIF ENDIF ENDIF ENDIF break /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// case MENU_SCREEN DISPLAY_HUD FALSE GET_CURRENT_LANGUAGE current_Language LVAR_INT pad1_leftstick_x pad1_leftstick_y pad1_rightstick_x pad1_rightstick_y GET_POSITION_OF_ANALOGUE_STICKS PAD1 pad1_leftstick_x pad1_leftstick_y pad1_rightstick_x pad1_rightstick_y LVAR_INT pad1_up_pressed IF pad1_leftstick_y < -100 OR pad1_leftstick_x > 100 OR IS_BUTTON_PRESSED PAD1 DPADUP OR IS_BUTTON_PRESSED PAD1 DPADRIGHT OR IS_WIDGET_RELEASED WIDGET_RACE_RIGHT IF pad1_up_pressed = 0 IF race_selection < last_race ++ race_selection else race_selection = first_race ENDIF GOSUB load_race_txd pad1_up_pressed = 1 ENDIF ELSE pad1_up_pressed = 0 ENDIF LVAR_INT pad1_down_pressed IF pad1_leftstick_y > 100 OR pad1_leftstick_x < -100 OR IS_BUTTON_PRESSED PAD1 DPADDOWN OR IS_BUTTON_PRESSED PAD1 DPADLEFT OR IS_WIDGET_RELEASED WIDGET_RACE_LEFT IF pad1_down_pressed = 0 IF race_selection > first_race -- race_selection else race_selection = last_race ENDIF GOSUB load_race_txd pad1_down_pressed = 1 ENDIF ELSE pad1_down_pressed = 0 ENDIF LVAR_INT pad1_triangle_pressed IF IS_BUTTON_PRESSED PAD1 TRIANGLE OR IS_WIDGET_RELEASED WIDGET_STORE_CANCEL IF pad1_triangle_pressed = 0 REMOVE_TEXTURE_DICTIONARY DISPLAY_HUD true CLEAR_HELP exit_mode = 1 RETURN pad1_triangle_pressed = 1 ENDIF ELSE pad1_triangle_pressed = 0 ENDIF SET_WIDGET_TEXTURE WIDGET_STORE_ACCEPT "hud_check" LVAR_INT pad1_cross_pressed IF IS_BUTTON_PRESSED PAD1 CROSS OR IS_WIDGET_RELEASED WIDGET_STORE_ACCEPT IF pad1_cross_pressed = 0 IF race_selection > -1 DO_FADE 500 FADE_OUT race_flag = GET_COORDS_FOR_RACE ENDIF pad1_cross_pressed = 1 ENDIF ELSE pad1_cross_pressed = 0 ENDIF DRAW_WINDOW 48.0 100.0 594.0 380.0 RACES_0 SWIRLS_BOTH GOSUB setup_text_cprace SET_TEXT_WRAPX 320.0 SET_TEXT_SCALE x_hud_scale[0] y_hud_scale[0] DISPLAY_TEXT x_hud_pos[0] y_hud_pos[0] $race_name[race_selection] //Race ~1~: GOSUB setup_text_cprace SET_TEXT_SCALE x_hud_scale[1] y_hud_scale[1] DISPLAY_TEXT x_hud_pos[0] y_hud_pos[1] RACES36 //Track Length GOSUB setup_text_cprace set_text_colour 180 180 180 255 SET_TEXT_SCALE x_hud_scale[2] y_hud_scale[2] y_hud_pos[2] = y_hud_pos[1] + y_hud_pos[7] //5,280 = feet in a mile //1609 = meters in a mile IF ARE_MEASUREMENTS_IN_METRES LVAR_FLOAT km temp_float2 km = race_distance[race_selection] / 1000.0 LVAR_INT left_dec_pl_digits right_dec_pl_digits left_dec_pl_digits =# km temp_float =# left_dec_pl_digits temp_float2 = km - temp_float right_dec_pl_digits =# temp_float2 IF right_dec_pl_digits < 10 DISPLAY_TEXT_WITH_2_NUMBERS x_hud_pos[0] y_hud_pos[2] RACES35 left_dec_pl_digits right_dec_pl_digits//~1~.0~1~ km ELSE DISPLAY_TEXT_WITH_2_NUMBERS x_hud_pos[0] y_hud_pos[2] RACES34 left_dec_pl_digits right_dec_pl_digits//~1~.~1~ km ENDIF ELSE LVAR_FLOAT miles miles = race_distance[race_selection] / 1609.0 left_dec_pl_digits =# miles temp_float =# left_dec_pl_digits temp_float2 = miles - temp_float temp_float2 *= 100.0 right_dec_pl_digits =# temp_float2 IF right_dec_pl_digits < 10 DISPLAY_TEXT_WITH_2_NUMBERS x_hud_pos[0] y_hud_pos[2] RACES47 left_dec_pl_digits right_dec_pl_digits//~1~.0~1~ miles ELSE DISPLAY_TEXT_WITH_2_NUMBERS x_hud_pos[0] y_hud_pos[2] RACES46 left_dec_pl_digits right_dec_pl_digits//~1~.~1~ miles ENDIF ENDIF GOSUB setup_text_cprace SET_TEXT_SCALE x_hud_scale[1] y_hud_scale[1] DISPLAY_TEXT x_hud_pos[0] y_hud_pos[3] RACES38 //Best Time GOSUB setup_text_cprace set_text_colour 180 180 180 255 SET_TEXT_SCALE x_hud_scale[2] y_hud_scale[2] y_hud_pos[4] = y_hud_pos[3] + y_hud_pos[7] IF cprace_best_times[race_selection] = 999999999 DISPLAY_TEXT x_hud_pos[0] y_hud_pos[4] RACES45 //NA ELSE mins = cprace_best_times[race_selection] / 60 temp_int = mins * 60 seconds = cprace_best_times[race_selection] - temp_int IF seconds < 10 DISPLAY_TEXT_WITH_2_NUMBERS x_hud_pos[0] y_hud_pos[4] RACES40 mins seconds //~1~:0~1~ ELSE DISPLAY_TEXT_WITH_2_NUMBERS x_hud_pos[0] y_hud_pos[4] RACES39 mins seconds //~1~:~1~ ENDIF ENDIF if not menu_mode = AIR_RACES GOSUB setup_text_cprace SET_TEXT_SCALE x_hud_scale[1] y_hud_scale[1] DISPLAY_TEXT x_hud_pos[0] y_hud_pos[5] RACES37 //Best Result GOSUB setup_text_cprace set_text_colour 180 180 180 255 SET_TEXT_SCALE x_hud_scale[2] y_hud_scale[2] y_hud_pos[6] = y_hud_pos[5] + y_hud_pos[7] IF cprace_best_position[race_selection] = 1 DISPLAY_TEXT x_hud_pos[0] y_hud_pos[6] RACES41//1ST ELSE IF cprace_best_position[race_selection] = 2 DISPLAY_TEXT x_hud_pos[0] y_hud_pos[6] RACES42//2ND ELSE IF cprace_best_position[race_selection] = 3 DISPLAY_TEXT x_hud_pos[0] y_hud_pos[6] RACES43//3RD ELSE IF cprace_best_position[race_selection] > 3 AND cprace_best_position[race_selection] < 100 DISPLAY_TEXT_WITH_NUMBER x_hud_pos[0] y_hud_pos[6] RACES44 cprace_best_position[race_selection]//~1~TH ELSE DISPLAY_TEXT x_hud_pos[0] y_hud_pos[6] RACES45//NA ENDIF ENDIF ENDIF ENDIF ENDIF temp_int = race_selection + 1 DRAW_SPRITE temp_int 450.0 238.18 256.0 256.0 180 180 180 255 // Race preview thumbnail. break case GET_COORDS_FOR_RACE IF NOT GET_FADING_STATUS REMOVE_TEXTURE_DICTIONARY CLEAR_HELP gosub race_coords DISPLAY_CAR_NAMES FALSE DISPLAY_HUD TRUE if interior_race = 0 else SET_PLAYER_IS_IN_STADIUM TRUE DISPLAY_ZONE_NAMES false HIDE_ALL_FRONTEND_BLIPS true SET_EXTRA_COLOURS 2 FALSE endif disable_all_cranes = 1 if got_race_made_progress[race_selection] = 0 if race_selection = CESAR_RACE and show_race_selection = FALSE else register_mission_given endif endif if race_selection = 23 switch_car_generator gen_car_flying[1] 0 endif race_flag = INITIALISE_VARIABLES ENDIF break case INITIALISE_VARIABLES LVAR_INT total_checkpoints_minus_1 total_checkpoints total_checkpoints_minus_1 = total_checkpoints - 1 LVAR_INT total_laps_minus_1 total_laps_minus_1 = total_laps - 1 LVAR_INT r a c e r = 0 a = 0 c = 0 e = 0 LVAR_INT total_racers WHILE a < total_racers LVAR_INT cpcounter[16] cpcounter[a] = 0 LVAR_INT lap_cpcounter[16] lap_cpcounter[a] = 0 lvar_int racer_finished_race[16] racer_finished_race[a] = 0 lvar_int racer_out_car_timer[16] racer_out_car_timer[a] = 0 ++ a ENDWHILE a = 0 LVAR_INT racer_decisions racer_decisions = -1 race_flag = LOAD_MODELS if checkpoint_type = CHECKPOINT_TORUS if race_selection = 22 or race_selection = 23 or race_selection = 24 lvar_float loc_size_x loc_size_y loc_size_z loc_size_x = 12.0 loc_size_y = 12.0 loc_size_z = 12.0 lvar_float checkpoint_size checkpoint_size = 6.0 else loc_size_x = 25.0 loc_size_y = 25.0 loc_size_z = 25.0 checkpoint_size = 12.0 endif else loc_size_x = 12.0 loc_size_y = 12.0 loc_size_z = 7.0 checkpoint_size = 6.0 endif break case LOAD_MODELS r = 0 while r < total_racers if racer_model[r] = SPECIAL01 if race_selection = CESAR_RACE LOAD_SPECIAL_CHARACTER 1 cesar LOAD_SPECIAL_CHARACTER 2 kendl endif if race_selection = BADLAND_RACE1 LOAD_SPECIAL_CHARACTER 1 wuzimu endif if race_selection = BADLAND_RACE2 LOAD_SPECIAL_CHARACTER 1 wuzimu//claude LOAD_SPECIAL_CHARACTER 2 cat endif else REQUEST_MODEL racer_model[r] endif //if race_selection = BADLAND_RACE1 if race_selection = BADLAND_RACE2 REQUEST_VEHICLE_MOD wheel_or1 endif REQUEST_MODEL racers_car_model[r] ++ r endwhile REQUEST_ANIMATION CAR REQUEST_ANIMATION RIOT load_all_models_now lvar_int all_models_loaded all_models_loaded = false while all_models_loaded = false wait 0 all_models_loaded = true r = 0 while r < total_racers if racer_model[r] = SPECIAL01 if not has_special_character_loaded 1 if race_selection = CESAR_RACE load_special_character 1 cesar all_models_loaded = false endif if race_selection = BADLAND_RACE1 load_special_character 1 wuzimu all_models_loaded = false endif if race_selection = BADLAND_RACE2 load_special_character 1 wuzimu//claude all_models_loaded = false endif endif if race_selection = CESAR_RACE if not has_special_character_loaded 2 load_special_character 2 kendl all_models_loaded = false endif endif if race_selection = BADLAND_RACE2 if not has_special_character_loaded 2 load_special_character 2 cat all_models_loaded = false endif endif else if not has_model_loaded racer_model[r] request_model racer_model[r] all_models_loaded = false endif endif //if race_selection = BADLAND_RACE1 if race_selection = BADLAND_RACE2 if not HAS_VEHICLE_MOD_LOADED wheel_or1 REQUEST_VEHICLE_MOD wheel_or1 all_models_loaded = false endif endif if not has_model_loaded racers_car_model[r] request_model racer_model[r] request_model racers_car_model[r] all_models_loaded = false endif r++ endwhile endwhile race_flag = LOAD_AREA break case LOAD_AREA set_car_density_multiplier 0.0 CLEAR_AREA checkpoints_x[0] checkpoints_y[0] checkpoints_z[0] 30.0 0 if show_race_selection = true clear_char_tasks_immediately scplayer endif SET_CHAR_COORDINATES scplayer checkpoints_x[0] checkpoints_y[0] checkpoints_z[0] SET_CHAR_AREA_VISIBLE scplayer interior_race SET_AREA_VISIBLE interior_race REQUEST_COLLISION checkpoints_x[0] checkpoints_y[0] RESTORE_CAMERA_JUMPCUT LOAD_SCENE checkpoints_x[0] checkpoints_y[0] checkpoints_z[0] SET_WEATHER_TO_APPROPRIATE_TYPE_NOW race_flag = CREATE_START_LINE break case CREATE_START_LINE DISPLAY_RADAR 2 // PATHING OFF IF HAS_ANIMATION_LOADED CAR AND HAS_ANIMATION_LOADED RIOT CREATE_CAR racers_car_model[0] checkpoints_x[0] checkpoints_y[0] checkpoints_z[0] stored_car TURN_CAR_TO_FACE_COORD stored_car checkpoints_x[1] checkpoints_y[1]// MUST PLACE checkpoint[1] STRAIGHT AHEAD FROM START checkpoint[0] temp_int = total_racers - 1 a = 0 WHILE a < total_racers if total_racers > 1 LVAR_FLOAT car_size_x car_size_y half_size_x half_size_y GET_MODEL_DIMENSIONS racers_car_model[0] half_size_x half_size_y z car_size_x car_size_y z half_size_x *= -1.0 car_size_x += half_size_x IF car_size_x < 2.0 car_size_x = 2.0 ENDIF half_size_x = car_size_x * -1.0 half_size_y *= -1.0 car_size_y += half_size_y c = a / 2 c *= 2 IF c = a//IS a AN EVEN NUMBER? x = car_size_x temp_float =# a temp_float *= car_size_y temp_float *= -1.0 y = temp_float ELSE x = half_size_x e = a - 1 temp_float =# e temp_float *= car_size_y temp_float *= -1.0 y = temp_float ENDIF if is_car_dead stored_car if show_race_selection = false if race_selection = CESAR_RACE failed_cesar_race = 1 endif endif return endif GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_car x y 0.0 x y z GET_CAR_HEADING stored_car heading LVAR_FLOAT racer_cp_x[16] racer_cp_y[16] racer_cp_z[16] racer_cp_x[a] = x racer_cp_y[a] = y else GET_CAR_HEADING stored_car heading x = racer_cp_x[a] y = racer_cp_y[a] racer_cp_x[a] = checkpoints_x[0] racer_cp_y[a] = checkpoints_y[0] z = checkpoints_z[0] endif IF NOT IS_THIS_MODEL_A_BOAT racers_car_model[a] IF NOT IS_THIS_MODEL_A_PLANE racers_car_model[a] IF NOT IS_THIS_MODEL_A_HELI racers_car_model[a] GET_GROUND_Z_FOR_3D_COORD x y z z ENDIF ENDIF ENDIF racer_cp_z[a] = z IF a < temp_int LVAR_INT racers_car[16] GOSUB create_racers_car LVAR_INT racer[16] CREATE_CHAR_INSIDE_CAR racers_car[a] PEDTYPE_CIVMALE racer_model[a] racer[a] if racer_model[a] = SPECIAL01 if race_selection = CESAR_RACE or race_selection = BADLAND_RACE2 lvar_int race_passenger CREATE_CHAR_AS_PASSENGER racers_car[a] PEDTYPE_CIVFEMALE SPECIAL02 0 race_passenger endif set_car_proofs racers_car[a] true true true false true endif if interior_race > 0 if racer_decisions = -1 COPY_CHAR_DECISION_MAKER -1 racer_decisions CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE racer_decisions EVENT_VEHICLE_ON_FIRE endif SET_CHAR_DECISION_MAKER racer[a] racer_decisions endif SET_CHAR_AREA_VISIBLE racer[a] interior_race SET_CHAR_CAN_BE_SHOT_IN_VEHICLE racer[a] FALSE SET_CHAR_SUFFERS_CRITICAL_HITS racer[a] FALSE SET_CHAR_NEVER_TARGETTED racer[a] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER racer[a] TRUE SET_CHAR_CANT_BE_DRAGGED_OUT racer[a] FALSE SET_CHAR_DROWNS_IN_WATER racer[a] FALSE SET_CHAR_HEALTH racer[a] 500 LVAR_INT racer_blip[16] if interior_race = 0 ADD_BLIP_FOR_CHAR racer[a] racer_blip[a] endif CHANGE_BLIP_DISPLAY racer_blip[a] MARKER_ONLY ELSE IF NOT IS_THIS_MODEL_A_BOAT racers_car_model[a] IF NOT IS_THIS_MODEL_A_PLANE racers_car_model[a] IF NOT IS_THIS_MODEL_A_HELI racers_car_model[a] IF interior_race = 0 LVAR_INT rt_empty_dec LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY rt_empty_dec GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_car -4.0435 6.5755 -0.8 x y z get_ground_z_for_3d_coord x y z z LVAR_INT flag_girl CREATE_RANDOM_CHAR x y z flag_girl SET_CHAR_KEEP_TASK flag_girl TRUE SET_CHAR_DECISION_MAKER flag_girl rt_empty_dec TASK_TURN_CHAR_TO_FACE_COORD flag_girl checkpoints_x[0] checkpoints_y[0] checkpoints_z[0] LVAR_INT flag_object CREATE_OBJECT_NO_OFFSET kmb_goflag x y z flag_object TASK_PICK_UP_OBJECT flag_girl flag_object 0.062 0.027 -0.15 PED_HANDL HOLD_ORIENTATE_BONE_FULL FLAG_DROP CAR 0 LVAR_INT spectator[11] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_car -5.6392 2.9435 -0.8 x y z get_ground_z_for_3d_coord x y z z CREATE_RANDOM_CHAR x y z spectator[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_car -6.0071 -2.0778 2.5 x y z get_ground_z_for_3d_coord x y z z CREATE_RANDOM_CHAR x y z spectator[1] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_car -7.6039 -5.0807 2.5 x y z get_ground_z_for_3d_coord x y z z CREATE_RANDOM_CHAR x y z spectator[2] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_car -7.0724 -6.4057 2.5 x y z get_ground_z_for_3d_coord x y z z CREATE_RANDOM_CHAR x y z spectator[3] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_car -5.9988 -13.553 2.5 x y z get_ground_z_for_3d_coord x y z z CREATE_RANDOM_CHAR x y z spectator[4] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_car 6.0730 -15.2059 2.5 x y z get_ground_z_for_3d_coord x y z z CREATE_RANDOM_CHAR x y z spectator[5] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_car 7.2639 -12.9933 2.5 x y z get_ground_z_for_3d_coord x y z z CREATE_RANDOM_CHAR x y z spectator[6] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_car 5.8429 -7.7069 2.5 x y z get_ground_z_for_3d_coord x y z z CREATE_RANDOM_CHAR x y z spectator[7] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_car 8.4135 -3.7971 2.5 x y z get_ground_z_for_3d_coord x y z z CREATE_RANDOM_CHAR x y z spectator[8] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_car 6.2507 0.3634 2.5 x y z get_ground_z_for_3d_coord x y z z CREATE_RANDOM_CHAR x y z spectator[9] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_car 8.6397 2.4190 2.5 x y z get_ground_z_for_3d_coord x y z z CREATE_RANDOM_CHAR x y z spectator[10] r = 0 WHILE r < 11 SET_CHAR_DECISION_MAKER spectator[r] rt_empty_dec SET_CHAR_KEEP_TASK spectator[r] TRUE OPEN_SEQUENCE_TASK sequence_taskB gosub generate_random_anims SET_SEQUENCE_TO_REPEAT sequence_taskB true CLOSE_SEQUENCE_TASK sequence_taskB OPEN_SEQUENCE_TASK sequence_task TASK_TURN_CHAR_TO_FACE_COORD -1 checkpoints_x[0] checkpoints_y[0] checkpoints_z[0] PERFORM_SEQUENCE_TASK -1 sequence_taskB CLOSE_SEQUENCE_TASK sequence_task PERFORM_SEQUENCE_TASK spectator[r] sequence_task CLEAR_SEQUENCE_TASK sequence_taskB CLEAR_SEQUENCE_TASK sequence_task ++ r ENDWHILE ENDIF ENDIF ENDIF ENDIF DELETE_CAR stored_car SET_CAR_DENSITY_MULTIPLIER 0.5 racer[a] = scplayer LVAR_INT playaz playaz = a LVAR_INT stored_car racer_cp_z[playaz] += 3.0 GET_GROUND_Z_FOR_3D_COORD racer_cp_x[playaz] racer_cp_y[playaz] racer_cp_z[playaz] racer_cp_z[playaz] if racer_cp_z[playaz] < 0.0 if IS_THIS_MODEL_A_BOAT racers_car_model[playaz] racer_cp_z[playaz] = 0.0 endif endif IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer racers_car[playaz] set_car_coordinates racers_car[playaz] racer_cp_x[playaz] racer_cp_y[playaz] racer_cp_z[playaz] else CREATE_CAR racers_car_model[playaz] racer_cp_x[playaz] racer_cp_y[playaz] racer_cp_z[playaz] racers_car[playaz] //if race_selection = BADLAND_RACE1 if race_selection = BADLAND_RACE2 ADD_VEHICLE_MOD racers_car[playaz] wheel_or1 temp_int endif if not racers_car_colour1[0] = -1 CHANGE_CAR_COLOUR racers_car[playaz] racers_car_colour1[playaz] racers_car_colour2[playaz] endif WARP_CHAR_INTO_CAR scplayer racers_car[playaz] ENDIf SET_VEHICLE_AREA_VISIBLE racers_car[playaz] interior_race SET_CAR_HEADING racers_car[playaz] heading//DEBUG!!! //buff up the player vehicle heatlh SET_CAR_HEALTH racers_car[playaz] 2200 IF IS_THIS_MODEL_A_PLANE racers_car_model[playaz] OR IS_THIS_MODEL_A_HELI racers_car_model[playaz] FREEZE_CAR_POSITION racers_car[playaz] TRUE SET_CAR_FORWARD_SPEED racers_car[playaz] 10.0 ENDIF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 500 FADE_IN WAIT 500 ENDIF ++ a ENDWHILE SET_PLAYER_CONTROL player1 OFF SET_CAMERA_BEHIND_PLAYER restore_camera_jumpcut race_flag = RACE_START_3 ELSE REQUEST_ANIMATION CAR REQUEST_ANIMATION RIOT ENDIF break case RACE_START_3 SET_EVERYONE_IGNORE_PLAYER player1 TRUE SET_ALL_CARS_CAN_BE_DAMAGED FALSE PRINT_BIG RACES_4 1100 4 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_RACE_321 VAR_INT races_timer races_timer = game_timer + 999 race_flag = RACE_START_2 break case RACE_START_2 IF races_timer < game_timer PRINT_BIG RACES_5 1100 4 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_RACE_321 races_timer = game_timer + 999 race_flag = RACE_START_1 ENDIF break case RACE_START_1 IF races_timer < game_timer PRINT_BIG RACES_6 1100 4 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_RACE_321 races_timer = game_timer + 1500 race_flag = RACE_START_GO ENDIF break case RACE_START_GO IF races_timer < game_timer PRINT_BIG RACES_7 800 4 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_RACE_GO SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SET_ALL_CARS_CAN_BE_DAMAGED TRUE a = 0 WHILE a < 11 MARK_CHAR_AS_NO_LONGER_NEEDED spectator[a] a ++ ENDWHILE MARK_CHAR_AS_NO_LONGER_NEEDED flag_girl remove_animation car a = 0 WHILE a < total_racers IF NOT IS_CAR_DEAD racers_car[a] SET_CAR_ONLY_DAMAGED_BY_PLAYER racers_car[a] FALSE IF NOT IS_THIS_MODEL_A_BOAT racers_car_model[a] IF NOT IS_THIS_MODEL_A_PLANE racers_car_model[a] IF NOT IS_THIS_MODEL_A_HELI racers_car_model[a] IF NOT a = playaz if interior_race = 0 ADD_STUCK_CAR_CHECK_WITH_WARP racers_car[a] 3.0 4000 TRUE TRUE TRUE -1 endif ENDIF ELSE FREEZE_CAR_POSITION racers_car[a] FALSE ENDIF ELSE FREEZE_CAR_POSITION racers_car[a] FALSE ENDIF ENDIF ENDIF ++ a ENDWHILE SET_CAR_DENSITY_MULTIPLIER 1.0 x_hud_pos[0] = 582.7242 y_hud_pos[0] = 356.2812 x_hud_scale[0] = 52.2072 y_hud_scale[0] = 52.2072 x_hud_pos[1] = 584.0833 y_hud_pos[1] = 329.3647 x_hud_scale[1] = 0.4943 y_hud_scale[1] = 2.0970 x_hud_pos[2] = 570.6411 y_hud_pos[2] = 323.5937 x_hud_scale[2] = 0.9127 y_hud_scale[2] = 4.8106 x_hud_pos[3] = 585.9410 y_hud_pos[3] = 345.6341 x_hud_scale[3] = 0.4197 y_hud_scale[3] = 1.8511 x_hud_pos[4] = 582.7242 y_hud_pos[4] = 359.0323 x_hud_scale[4] = 0.4993 y_hud_scale[4] = 2.6370 x_hud_pos[5] = 582.7242 y_hud_pos[5] = 356.2812 x_hud_scale[5] = 56.2072 y_hud_scale[5] = 56.2072 x_hud_pos[6] = 582.7242 y_hud_pos[6] = 356.2812 x_hud_scale[6] = 58.2072 y_hud_scale[6] = 58.2072 x_hud_pos[7] = 582.7242 y_hud_pos[7] = 400.7518 x_hud_scale[7] = 58.2072 y_hud_scale[7] = 32.7789 x_hud_pos[8] = 582.7242 y_hud_pos[8] = 400.2518 x_hud_scale[8] = 56.2072 y_hud_scale[8] = 31.7789 x_hud_pos[9] = 582.7242 y_hud_pos[9] = 399.2518 x_hud_scale[9] = 52.2072 y_hud_scale[9] = 29.7789 x_hud_pos[10] = 560.4862 y_hud_pos[10] = 384.5027 x_hud_scale[10] = 0.5 y_hud_scale[10] = 1.5393 races_timer = game_timer // Really confusing but when we are using an onscreen timer, races_timer automatically counts up, and is stored as the current time. last_lap_time = game_timer // Else, the current time is the current time - the start time :( if total_racers = 1 races_timer = 0 DISPLAY_ONSCREEN_TIMER_WITH_STRING races_timer timer_up TIMER2 endif CLEAR_THIS_PRINT_BIG_NOW 2 race_flag = MAIN_RACE_LOOP ENDIF break case MAIN_RACE_LOOP case MAIN_RACE_LOOP_B WHILE a < total_racers IF NOT IS_CHAR_DEAD racer[a] //WORK OUT RACERS POSITIONS IF race_flag < FINISH_RACE IF NOT scplayer = racer[a] IF lap_cpcounter[playaz] < lap_cpcounter[a] ++ position ELSE IF lap_cpcounter[playaz] = lap_cpcounter[a] IF cpcounter[playaz] < cpcounter[a] ++ position ELSE IF cpcounter[a] > total_checkpoints_minus_1 ++ position ELSE IF cpcounter[playaz] = cpcounter[a] GET_CHAR_COORDINATES racer[a] x y z LVAR_FLOAT racer_distance_from_cp GET_DISTANCE_BETWEEN_COORDS_3D x y z racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] racer_distance_from_cp GET_CHAR_COORDINATES scplayer x y z LVAR_FLOAT player_distance_from_cp GET_DISTANCE_BETWEEN_COORDS_3D x y z racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] player_distance_from_cp IF player_distance_from_cp > racer_distance_from_cp ++ position ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF race_flag = MAIN_RACE_LOOP_B IF scplayer = racer[a] IF NOT IS_CAR_DEAD racers_car[playaz] //OUT OF CAR TIMER FOR PLAYER IF IS_CHAR_IN_CAR scplayer racers_car[playaz] IF out_of_car_flag = 1 CLEAR_THIS_PRINT RACES21 REMOVE_BLIP first_blip racer_cp_z[a] -= 1000.0 if interior_race = 0 c = 0 temp_int = total_racers - 1 WHILE c < temp_int IF NOT IS_CHAR_DEAD racer[c] ADD_BLIP_FOR_CHAR racer[c] racer_blip[c] CHANGE_BLIP_DISPLAY racer_blip[c] MARKER_ONLY ENDIF ++ c ENDWHILE ADD_BLIP_FOR_COORD racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] first_blip CHANGE_BLIP_COLOUR first_blip RED CHANGE_BLIP_DISPLAY first_blip BLIP_ONLY CHANGE_BLIP_SCALE first_blip 3 IF cpcounter[a] = total_checkpoints_minus_1 AND lap_cpcounter[a] = total_laps_minus_1 if checkpoint_type = checkpoint_torus temp_int = cpcounter[a] -- temp_int IF temp_int < 0 temp_int = 0 ENDIF CREATE_CHECKPOINT checkpoint_type racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] checkpoints_x[temp_int] checkpoints_y[temp_int] checkpoints_z[temp_int] checkpoint_size cp_marker else CREATE_CHECKPOINT CHECKPOINT_ENDTUBE racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] 0.0 0.0 0.0 6.0 cp_marker endif ELSE temp_int = cpcounter[a] ++ temp_int IF cpcounter[a] = total_checkpoints_minus_1 temp_int = 1 ENDIF CREATE_CHECKPOINT checkpoint_type racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] checkpoints_x[temp_int] checkpoints_y[temp_int] checkpoints_z[temp_int] checkpoint_size cp_marker ENDIF endif out_of_car_flag = 0 ENDIF ELSE IF out_of_car_flag = 0 DELETE_CHECKPOINT cp_marker REMOVE_BLIP first_blip c = 0 temp_int = total_racers - 1 WHILE c < temp_int REMOVE_BLIP racer_blip[c] ++ c ENDWHILE ADD_BLIP_FOR_CAR racers_car[playaz] first_blip SET_BLIP_AS_FRIENDLY first_blip TRUE racer_cp_z[a] += 1000.0 LVAR_INT out_of_car_timer out_of_car_timer = game_timer + 25400 out_of_car_flag = 1 ENDIF seconds = out_of_car_timer - game_timer seconds /= 1000 IF seconds < 1 seconds = 0 ENDIF IF out_of_car_timer < game_timer PRINT_NOW RACES20 5000 1//~r~You have been disqualified for leaving your car. if show_race_selection = false AND NOT race_selection = DIRTBIKE_STADIUM PRINT_BIG M_FAIL 3000 1 endif if show_race_selection = false if race_selection = CESAR_RACE failed_cesar_race = 1 endif endif RETURN ENDIF if seconds = 1 ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE PRINT_WITH_NUMBER_NOW RACE_21 seconds 200 1 //You have ~1~ second to return to your car. else ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE PRINT_WITH_NUMBER_NOW RACES21 seconds 200 1 //You have ~1~ seconds to return to your car. endif ENDIF ELSE IF IS_CAR_IN_WATER racers_car[playaz] IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer stored_car IF NOT stored_car = racers_car[playaz] PRINT_NOW RACES24 5000 1//~r~You have been disqualified for destroying your car. if show_race_selection = false PRINT_BIG M_FAIL 3000 1 endif if show_race_selection = false if race_selection = CESAR_RACE failed_cesar_race = 1 endif endif RETURN ENDIF ELSE PRINT_NOW RACES24 5000 1//~r~You have been disqualified for destroying your car. if show_race_selection = false PRINT_BIG M_FAIL 3000 1 endif if show_race_selection = false if race_selection = CESAR_RACE failed_cesar_race = 1 endif endif RETURN ENDIF ELSE PRINT_NOW RACES24 5000 1//~r~You have been disqualified for destroying your car. if show_race_selection = false PRINT_BIG M_FAIL 3000 1 endif if show_race_selection = false if race_selection = CESAR_RACE failed_cesar_race = 1 endif endif RETURN ENDIF ENDIF ELSE IF cpcounter[a] < total_checkpoints //SPEED UP OR SLOW DOWN RACERS IF THEY ARE 4 CHECKPOINTS AHEAD OF PLAYER IF IS_CHAR_IN_ANY_CAR racer[a] if interior_race = 0 temp_int = cpcounter[playaz] + 4 STORE_CAR_CHAR_IS_IN_NO_SAVE racer[a] stored_car //if this car is ahead of the player by 3 checkpoints, reduce speed IF cpcounter[a] > temp_int //or locate_char_in_car_2d racer[a] slowdown_x slow_down_y 15.0 15.0 0 SET_CAR_CRUISE_SPEED stored_car 15.0 ELSE SET_CAR_CRUISE_SPEED stored_car 42.0 ENDIF //some special conditional speed for this race if race_selection = BADLAND_RACE2 if locate_car_2d stored_car -882.9833 -47.9468 24.6100 25.6400 0 or locate_car_2d stored_car -843.0954 -141.9169 24.5900 -29.2400 0 set_car_cruise_speed stored_car 35.0 endif endif ENDIF else if race_selection = NASCAR_RACE //respawn goto respawn_racer else if racer_out_car_timer[a] = 0 racer_out_car_timer[a] = game_timer + 8000 endif if racer_out_car_timer[a] < game_timer if not cpcounter[a] = cpcounter[playaz] IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer racer[a] 30.0 30.0 0 IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer racer_cp_x[a] racer_cp_y[a] 30.0 30.0 0 IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] 4.0 4.0 3.0 IF NOT IS_CHAR_ON_SCREEN racer[a] IF NOT IS_POINT_ON_SCREEN racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] 4.0 MARK_CAR_AS_NO_LONGER_NEEDED racers_car[a] GOSUB create_racers_car WARP_CHAR_INTO_CAR racer[a] racers_car[a] temp_int = cpcounter[a] + 1 IF temp_int < total_checkpoints TURN_CAR_TO_FACE_COORD racers_car[a] checkpoints_x[temp_int] checkpoints_y[temp_int] set_car_forward_speed racers_car[a] 20.0 ENDIF racer_out_car_timer[a] = 0 else racer_out_car_timer[a] = 0 ENDIF else racer_out_car_timer[a] = 0 ENDIF else racer_out_car_timer[a] = 0 ENDIF else racer_out_car_timer[a] = 0 ENDIF else racer_out_car_timer[a] = 0 ENDIF ENDIF ENDIF endif ENDIF //IS THIS AI RACER MORE THAN 4 CHECKPOINTS BEHIND? if interior_race = 0 r = 0 e = 0 WHILE r < total_racers LVAR_INT opponent_cpcounter_minus4 opponent_cpcounter_minus4 = cpcounter[r] - 4 IF cpcounter[a] < opponent_cpcounter_minus4 ++ e ENDIF ++ r ENDWHILE //IF AI RACER IS MORE THAN 4 CHECKPOINTS BEHIND ANYONE WARP HIM TO THE NEXT CHECKPOINT IF e > 0 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer racer[a] 150.0 150.0 0 IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer racer_cp_x[a] racer_cp_y[a] 150.0 150.0 0 IF NOT LOCATE_CHAR_ANY_MEANS_2D racer[a] racer_cp_x[a] racer_cp_y[a] 40.0 40.0 0 IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] 4.0 4.0 3.0 IF NOT IS_CHAR_ON_SCREEN racer[a] IF NOT IS_POINT_ON_SCREEN racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] 4.0 IF IS_CHAR_SITTING_IN_ANY_CAR racer[a] SET_CHAR_COORDINATES racer[a] racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] temp_int = cpcounter[a] + 1 TURN_CAR_TO_FACE_COORD stored_car checkpoints_x[temp_int] checkpoints_y[temp_int] ELSE MARK_CAR_AS_NO_LONGER_NEEDED racers_car[a] GOSUB create_racers_car WARP_CHAR_INTO_CAR racer[a] racers_car[a] temp_int = cpcounter[a] + 1 IF temp_int < total_checkpoints TURN_CAR_TO_FACE_COORD racers_car[a] checkpoints_x[temp_int] checkpoints_y[temp_int] set_car_forward_speed racers_car[a] 20.0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF temp_int = 0 //HAS RACER HIT NEXT CHECKPOINT? IF LOCATE_CHAR_IN_CAR_3D racer[a] racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] loc_size_x loc_size_y loc_size_z 0 temp_int = 1 else IF racer[a] = scplayer IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S request_collision racer_cp_x[a] racer_cp_y[a] load_scene racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] x = racer_cp_z[a] + 1.0 set_char_coordinates racer[a] racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] ENDIF ENDIF ENDIF IF temp_int = 1 IF race_flag = MAIN_RACE_LOOP race_flag = MAIN_RACE_LOOP_B //INCREMENT FLAG SO I KNOW THE RACE HAS STARTED AND I CAN WARP OPPONENTS ETC ENDIF IF scplayer = racer[a] if interior_race = 0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP first_blip endif ENDIF ++ cpcounter[a] //GET NEXT CHECKPOINT FOR RACER IF cpcounter[a] < total_checkpoints temp_int = cpcounter[a] racer_cp_x[a] = checkpoints_x[temp_int] racer_cp_y[a] = checkpoints_y[temp_int] racer_cp_z[a] = checkpoints_z[temp_int] ELSE if lap_cpcounter[a] < total_laps ++ lap_cpcounter[a] endif IF lap_cpcounter[a] = total_laps IF racer[a] = scplayer if total_laps > 1 lap_timer = game_timer - last_lap_time //STORE A NEW LAP TIME FOR THE PLAYER lap_timer /= 1000 IF cprace_best_lap_times[race_selection] > lap_timer cprace_best_lap_times[race_selection] = lap_timer if race_selection = NASCAR_RACE REGISTER_FASTEST_TIME BEST_LAP_TIME_HOTRING lap_timer endif if race_selection = DIRTBIKE_STADIUM REGISTER_FASTEST_TIME BEST_LAP_TIME_DIRTTRACK lap_timer endif ENDIF endif DELETE_CHECKPOINT cp_marker REMOVE_BLIP first_blip race_flag = FINISH_RACE if show_race_selection = false if position > 0 PRINT_BIG M_FAIL 3000 1 endif endif racer_cp_z[a] = 99999.0 //STOP WINNING RACERS FROM GOING ANYWHERE ELSE //MAKE RACERS AS THEY FINISH THE RACE STOP ON FINISH LINE if not is_car_dead racers_car[a] REMOVE_STUCK_CAR_CHECK racers_car[a] endif if interior_race = 0 get_script_task_status racer[a] PERFORM_SEQUENCE_TASK task_status if task_status = finished_task OPEN_SEQUENCE_TASK sequence_task GET_CHAR_SPEED racer[a] temp_float temp_int =# temp_float temp_int *= -100 temp_int += 4000 if temp_int < 10 temp_int = 10 endif TASK_CAR_TEMP_ACTION -1 -1 TEMPACT_GOFORWARD temp_int generate_random_int_in_range 0 5 temp_int if temp_int = 0 or temp_int = 1 TASK_CAR_TEMP_ACTION -1 -1 TEMPACT_TURNLEFT 200 TASK_CAR_TEMP_ACTION -1 -1 TEMPACT_HANDBRAKETURNLEFT 250000 else TASK_CAR_TEMP_ACTION -1 -1 TEMPACT_TURNRIGHT 200 TASK_CAR_TEMP_ACTION -1 -1 TEMPACT_HANDBRAKETURNRIGHT 250000 endif TASK_CAR_TEMP_ACTION -1 -1 TEMPACT_HANDBRAKESTRAIGHT 250000 TASK_CAR_TEMP_ACTION -1 -1 TEMPACT_HANDBRAKESTRAIGHT 250000 TASK_CAR_TEMP_ACTION -1 -1 TEMPACT_HANDBRAKESTRAIGHT 250000 TASK_CAR_TEMP_ACTION -1 -1 TEMPACT_HANDBRAKESTRAIGHT 250000 TASK_CAR_DRIVE_WANDER -1 -1 100.0 2 CLOSE_SEQUENCE_TASK sequence_task PERFORM_SEQUENCE_TASK racer[a] sequence_task CLEAR_SEQUENCE_TASK sequence_task endif else get_script_task_status racer[a] TASK_CAR_DRIVE_WANDER task_status if task_status = finished_task TASK_CAR_DRIVE_WANDER racer[a] -1 100.0 2 endif endif racer_cp_z[a] = 99999.0 //STOP WINNING RACERS FROM GOING ANYWHERE ENDIF ELSE IF scplayer = racer[a] LVAR_INT lap_timer lap_timer = game_timer - last_lap_time //STORE A NEW LAP TIME FOR THE PLAYER lap_timer /= 1000 IF cprace_best_lap_times[race_selection] > lap_timer cprace_best_lap_times[race_selection] = lap_timer if race_selection = NASCAR_RACE REGISTER_FASTEST_TIME BEST_LAP_TIME_HOTRING lap_timer endif if race_selection = DIRTBIKE_STADIUM REGISTER_FASTEST_TIME BEST_LAP_TIME_DIRTTRACK lap_timer endif mins = lap_timer / 60 temp_int = mins * 60 seconds = lap_timer - temp_int if seconds < 10 print_with_2_numbers_now LAPTIM0 mins seconds 5000 1//New Best Lap Time ~1~:0~1~ else print_with_2_numbers_now LAPTIME mins seconds 5000 1//New Best Lap Time ~1~:~1~ endif ENDIF last_lap_time = game_timer ENDIF cpcounter[a] = 0 temp_int = cpcounter[a] racer_cp_x[a] = checkpoints_x[temp_int] racer_cp_y[a] = checkpoints_y[temp_int] racer_cp_z[a] = checkpoints_z[temp_int] ENDIF ENDIF IF scplayer = racer[a] IF NOT racer_cp_z[a] = 99999.0 //ADD NEXT BLIP AND CHECKPOINT FOR PLAYER if interior_race = 0 ADD_BLIP_FOR_COORD racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] first_blip CHANGE_BLIP_COLOUR first_blip RED CHANGE_BLIP_DISPLAY first_blip BLIP_ONLY CHANGE_BLIP_SCALE first_blip 3 DELETE_CHECKPOINT cp_marker endif IF cpcounter[a] = total_checkpoints_minus_1 AND lap_cpcounter[a] = total_laps_minus_1 if checkpoint_type = checkpoint_torus temp_int = cpcounter[a] -- temp_int IF temp_int < 0 temp_int = 0 ENDIF CREATE_CHECKPOINT checkpoint_type racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] checkpoints_x[temp_int] checkpoints_y[temp_int] checkpoints_z[temp_int] checkpoint_size cp_marker else CREATE_CHECKPOINT CHECKPOINT_ENDTUBE racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] 0.0 0.0 0.0 6.0 cp_marker endif ELSE if interior_race = 0 temp_int = cpcounter[a] ++ temp_int IF cpcounter[a] = total_checkpoints_minus_1 temp_int = 1 ENDIF LVAR_INT cp_marker CREATE_CHECKPOINT checkpoint_type racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] checkpoints_x[temp_int] checkpoints_y[temp_int] checkpoints_z[temp_int] checkpoint_size cp_marker ENDIF ENDIF ENDIF ELSE IF NOT racer_cp_z[a] = 99999.0 //STOP WINNING RACERS FROM GOING ANYWHERE //TELL THE AI OPPONENT TO DRIVE/SAIL/FLY TO NEXT CHECKPOINT IF IS_CHAR_IN_ANY_HELI racer[a] IF NOT IS_CAR_DEAD racers_car[a] IF IS_CHAR_IN_CAR racer[a] racers_car[a] HELI_GOTO_COORDS racers_car[a] racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] 0.0 racer_cp_z[a] ELSE STORE_CAR_CHAR_IS_IN_NO_SAVE racer[a] stored_car HELI_GOTO_COORDS stored_car racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] 0.0 racer_cp_z[a] ENDIF ELSE STORE_CAR_CHAR_IS_IN_NO_SAVE racer[a] stored_car HELI_GOTO_COORDS stored_car racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] 0.0 racer_cp_z[a] ENDIF ELSE IF IS_CHAR_IN_ANY_PLANE racer[a] IF NOT IS_CAR_DEAD racers_car[a] IF IS_CHAR_IN_CAR racer[a] racers_car[a] PLANE_GOTO_COORDS racers_car[a] racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] 0.0 racer_cp_z[a] ELSE STORE_CAR_CHAR_IS_IN_NO_SAVE racer[a] stored_car PLANE_GOTO_COORDS stored_car racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] 0.0 racer_cp_z[a] ENDIF ELSE STORE_CAR_CHAR_IS_IN_NO_SAVE racer[a] stored_car PLANE_GOTO_COORDS stored_car racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] 0.0 racer_cp_z[a] ENDIF ELSE get_script_task_status racer[a] PERFORM_SEQUENCE_TASK task_status if task_status = finished_task get_script_task_status racer[a] TASK_CAR_drive_wander task_status if task_status = finished_task //SET INDOOR RACER SPEED// IF NOT IS_CAR_DEAD racers_car[a] TASK_CAR_DRIVE_TO_COORD racer[a] racers_car[a] racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] 35.0 MODE_RACING racers_car_model[a] DRIVINGMODE_AVOIDCARS IF cpcounter[a] > total_checkpoints REMOVE_STUCK_CAR_CHECK racers_car[a] ENDIF ELSE TASK_CAR_DRIVE_TO_COORD racer[a] -1 racer_cp_x[a] racer_cp_y[a] racer_cp_z[a] 35.0 MODE_RACING racers_car_model[a] DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ELSE if interior_race > 0 respawn_racer: IF NOT scplayer = racer[a] IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY respawn_x respawn_y respawn_z 2.5 2.5 2.5 cpcounter[a] = 1 REMOVE_BLIP racer_blip[a] mark_car_as_no_longer_needed racers_car[a] mark_char_as_no_longer_needed racer[a] racer_cp_x[a] = respawn_x racer_cp_y[a] = respawn_y racer_cp_z[a] = respawn_z heading = respawn_h gosub create_racers_car CREATE_CHAR_INSIDE_CAR racers_car[a] PEDTYPE_CIVMALE racer_model[a] racer[a] SET_CHAR_AREA_VISIBLE racer[a] interior_race SET_CHAR_CAN_BE_SHOT_IN_VEHICLE racer[a] FALSE SET_CHAR_SUFFERS_CRITICAL_HITS racer[a] FALSE SET_CHAR_NEVER_TARGETTED racer[a] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER racer[a] TRUE SET_CHAR_CANT_BE_DRAGGED_OUT racer[a] FALSE SET_CHAR_DROWNS_IN_WATER racer[a] FALSE SET_CHAR_HEALTH racer[a] 500 set_car_forward_speed racers_car[a] 25.0 endif endif //respawn dude + car else IF NOT scplayer = racer[a] IF race_flag < FINISH_RACE IF cpcounter[playaz] = cpcounter[a] OR cpcounter[playaz] < cpcounter[a] OR cpcounter[a] > total_checkpoints_minus_1 ++ position ENDIF ENDIF IF NOT IS_CHAR_IN_WATER racer[a] REMOVE_BLIP racer_blip[a] MARK_CHAR_AS_NO_LONGER_NEEDED racer[a] MARK_CAR_AS_NO_LONGER_NEEDED racers_car[a] ENDIF ENDIF ENDIF ENDIF ++ a ENDWHILE if total_racers > 1 IS_WIDGET_PRESSED WIDGET_RACING // Enable the widget. display_hud_position = position + 1 LVAR_INT nElapsedSeconds nElapsedSeconds = game_timer - races_timer nElapsedSeconds /= 1000 LVAR_FLOAT f0, f1, f2 f0 =# position f0 += 1.0 f1 =# total_racers f2 =# nElapsedSeconds SET_WIDGET_VALUE3 WIDGET_RACING f0, f1, f2 // Send the current position, max racers, and the time to the widget. // If there are multiple laps, render the bottom backdrop and the lap count. if total_laps > 1 temp_int = lap_cpcounter[playaz] + 1 if temp_int > total_laps temp_int = total_laps endif f0 =# temp_int f1 =# total_laps SET_WIDGET_VALUE2 WIDGET_RACING f0 f1 // Let the widget know the lap stats to render. // Else make sure the widget knows there's no laps to render. else SET_WIDGET_VALUE2 WIDGET_RACING 0.0 0.0 endif ENDIF IF race_selection = BADLAND_RACE1 GOSUB race13_special ENDIF IF race_selection = NASCAR_RACE or race_selection = DIRTBIKE_STADIUM GOSUB do_stadium_sound_effects ENDIF break case FINISH_RACE // remove the other racer blips immediately after the player finishes the race c = 0 temp_int = total_racers - 1 WHILE c < temp_int REMOVE_BLIP racer_blip[c] ++ c ENDWHILE if show_race_selection = false IF display_hud_position = 1 IF race_selection = BADLAND_RACE1 OR race_selection = BADLAND_RACE2 ++ flag_bcesar_mission_counter MAKE_PLAYER_SAFE_FOR_CUTSCENE PLAYER1 ENDIF IF race_selection = CESAR_RACE PRINT_WITH_NUMBER_BIG M_PASS 1000 5000 1 //"Mission Passed!" ADD_SCORE player1 1000 REMOVE_BLIP cesar_contact_blip ++ flag_cesar_mission_counter ENDIF CLEAR_WANTED_LEVEL player1 ELSE /* extra fail check causing another retry to occur when finishing the race and not in first IF race_selection = CESAR_RACE AND flag_cesar_mission_counter = 0 PRINT_BIG M_FAIL 3000 1 //"Mission Failed" ENDIF IF race_selection = BADLAND_RACE1 OR race_selection = BADLAND_RACE2 PRINT_BIG M_FAIL 3000 1 //"Mission Failed" ENDIF */ ENDIF ENDIF clear_onscreen_timer races_timer // Really confusing but when we are using an onscreen timer, races_timer automatically counts up, and is stored as the current time. // Else, the current time is the current time - the start time :( race_timer_temp = game_timer - races_timer IF total_racers = 1 race_timer_temp = races_timer ENDIF race_timer_temp /= 1000 IF cprace_best_times[race_selection] > race_timer_temp cprace_best_times[race_selection] = race_timer_temp REGISTER_FASTEST_TIME race_stats_time[race_selection] race_timer_temp got_a_best_time = 1 ENDIF if total_racers > 1 IF cprace_best_position[race_selection] > display_hud_position cprace_best_position[race_selection] = display_hud_position REGISTER_BEST_POSITION race_stats_position[race_selection] display_hud_position got_a_best_position = 1 ENDIF endif x_hud_pos[0] = 208.0665 y_hud_pos[0] = 297.9241 x_hud_scale[0] = 474.2788 y_hud_scale[0] = 383.4714 x_hud_pos[1] = 219.6480 y_hud_pos[1] = 313.8785 x_hud_scale[1] = 0.5858 y_hud_scale[1] = 2.5296 x_hud_pos[2] = 465.3051 x_hud_scale[2] = 0.4116 y_hud_pos[3] = 339.1096 x_hud_scale[3] = 0.5858 gosub player_made_progress_cprace races_timer = game_timer + 12000 race_flag = RACE_ENDED break case RACE_ENDED DISPLAY_RADAR 3 // PATHING ON GET_CURRENT_LANGUAGE current_Language if current_language = LANGUAGE_ENGLISH x_hud_scale[1] = x_hud_scale[3] else x_hud_scale[1] = x_hud_scale[2] endif if total_racers = 1 y = y_hud_pos[0] + 25.0 DRAW_WINDOW x_hud_pos[0] y x_hud_scale[0] y_hud_scale[0] dummy SWIRLS_BOTH // You Have Won! else IF display_hud_position = 1 DRAW_WINDOW x_hud_pos[0] y_hud_pos[0] x_hud_scale[0] y_hud_scale[0] RACES18 SWIRLS_BOTH // Winner! ELSE DRAW_WINDOW x_hud_pos[0] y_hud_pos[0] x_hud_scale[0] y_hud_scale[0] RACES_8 SWIRLS_BOTH // Loser! ENDIF ENDIF if total_racers > 1 GOSUB setup_text_cprace SET_TEXT_JUSTIFY ON SET_TEXT_SCALE x_hud_scale[1] y_hud_scale[1] IF got_a_best_position = 1 DISPLAY_TEXT_CLAMPED x_hud_pos[1] y_hud_pos[1] TOP_POS 140.0 // New Best Position else DISPLAY_TEXT_CLAMPED x_hud_pos[1] y_hud_pos[1] RACES30, 140.0 // Position ENDIF GOSUB setup_text_cprace SET_TEXT_RIGHT_JUSTIFY ON SET_TEXT_SCALE x_hud_scale[1] y_hud_scale[1] SET_TEXT_COLOUR 180 180 180 255 IF display_hud_position = 1 DISPLAY_TEXT x_hud_pos[2] y_hud_pos[1] RACES26 // 1ST ENDIF IF display_hud_position = 2 DISPLAY_TEXT x_hud_pos[2] y_hud_pos[1] RACES27 // 2ND ENDIF IF display_hud_position = 3 DISPLAY_TEXT x_hud_pos[2] y_hud_pos[1] RACES28 // 3RD ENDIF IF display_hud_position > 3 DISPLAY_TEXT_WITH_NUMBER x_hud_pos[2] y_hud_pos[1] RACES29 display_hud_position // ~1~TH ENDIF ENDIF GOSUB setup_text_cprace SET_TEXT_JUSTIFY ON SET_TEXT_SCALE x_hud_scale[1] y_hud_scale[1] IF got_a_best_time = 1 DISPLAY_TEXT_CLAMPED x_hud_pos[1] y_hud_pos[3] TOPTIME, 140.0f // New Best Time else DISPLAY_TEXT_CLAMPED x_hud_pos[1] y_hud_pos[3] RACES31, 140.0f // Time ENDIF mins = race_timer_temp / 60 temp_int = mins * 60 seconds = race_timer_temp - temp_int GOSUB setup_text_cprace SET_TEXT_RIGHT_JUSTIFY ON SET_TEXT_SCALE x_hud_scale[1] y_hud_scale[1] SET_TEXT_COLOUR 180 180 180 255 IF seconds > 9 DISPLAY_TEXT_WITH_2_NUMBERS x_hud_pos[2] y_hud_pos[3] TIME mins seconds// ~1~:~1~ ELSE DISPLAY_TEXT_WITH_2_NUMBERS x_hud_pos[2] y_hud_pos[3] TIME_0 mins seconds// ~1~:0~1~ ENDIF IF game_timer > races_timer RETURN ENDIF break endswitch GOTO mission_cprace_loop race_coords: SWITCH race_selection LVAR_FLOAT checkpoints_x[82] LVAR_FLOAT checkpoints_y[82] LVAR_FLOAT checkpoints_z[82] case CESAR_RACE//LA race 1///////////////////////////////////////////////////// checkpoints_x[0] = 1492.4072 checkpoints_y[0] = -1872.3652 checkpoints_z[0] = 15.8 checkpoints_x[1] = 1384.2626 checkpoints_y[1] = -1872.0153 checkpoints_z[1] = 12.3828 checkpoints_x[2] = 1075.4420 checkpoints_y[2] = -1851.9783 checkpoints_z[2] = 12.3910 checkpoints_x[3] = 647.3663 checkpoints_y[3] = -1734.1852 checkpoints_z[3] = 12.4844 checkpoints_x[4] = 627.2474 checkpoints_y[4] = -1228.5500 checkpoints_z[4] = 16.9893 checkpoints_x[5] = 497.0043 checkpoints_y[5] = -1282.8180 checkpoints_z[5] = 14.6513 checkpoints_x[6] = 500.4120 checkpoints_y[6] = -1326.6494 checkpoints_z[6] = 14.8178 checkpoints_x[7] = 401.0033 checkpoints_y[7] = -1404.4572 checkpoints_z[7] = 32.8973 checkpoints_x[8] = 420.3067 checkpoints_y[8] = -1450.7135 checkpoints_z[8] = 29.5842 checkpoints_x[9] = 329.1244 checkpoints_y[9] = -1631.1117 checkpoints_z[9] = 32.1247 checkpoints_x[10] = 366.4376 checkpoints_y[10] = -1647.3485 checkpoints_z[10] = 31.7176 checkpoints_x[11] = 369.98 checkpoints_y[11] = -2030.34 checkpoints_z[11] = 5.55 total_checkpoints = 12 total_racers = 6 racer_model[0] = DNMOLC2 racer_model[1] = WMYCLOT racer_model[2] = CWFYHB racer_model[3] = BIKERB racer_model[4] = SPECIAL01 racer_model[5] = MALE01 racers_car_model[0] = MAJESTIC racers_car_model[1] = REMINGTN racers_car_model[2] = MAJESTIC racers_car_model[3] = blade racers_car_model[4] = SAVANNA // Cesar racers_car_model[5] = blade // Player racers_car_colour1[0] = 6 racers_car_colour2[0] = 0 racers_car_colour1[1] = 8 racers_car_colour2[1] = 0 racers_car_colour1[2] = 2 racers_car_colour2[2] = 1 racers_car_colour1[3] = 0 racers_car_colour2[3] = 0 racers_car_colour1[4] = 3 racers_car_colour2[4] = 3 break case 1//3//LA race 2///////////////////////////////////////////////////////// checkpoints_x[0] = 2875.1919 checkpoints_y[0] = -1458.8499 checkpoints_z[0] = 10.5892 checkpoints_x[1] = 2875.3616 checkpoints_y[1] = -1404.7677 checkpoints_z[1] = 10.7143 checkpoints_x[2] = 2797.0366 checkpoints_y[2] = -1291.1517 checkpoints_z[2] = 41.3890 checkpoints_x[3] = 2609.9841 checkpoints_y[3] = -1256.4584 checkpoints_z[3] = 47.9322 checkpoints_x[4] = 2371.2822 checkpoints_y[4] = -1280.4771 checkpoints_z[4] = 23.6341 checkpoints_x[5] = 2450.5571 checkpoints_y[5] = -1444.2399 checkpoints_z[5] = 23.6318 checkpoints_x[6] = 2618.4355 checkpoints_y[6] = -1444.8256 checkpoints_z[6] = 31.6234 checkpoints_x[7] = 2657.3000 checkpoints_y[7] = -1404.3268 checkpoints_z[7] = 30.0795 checkpoints_x[8] = 2680.5063 checkpoints_y[8] = -1489.5558 checkpoints_z[8] = 30.2098 checkpoints_x[9] = 2755.9521 checkpoints_y[9] = -1488.5153 checkpoints_z[9] = 29.3812 checkpoints_x[10] = checkpoints_x[0] checkpoints_y[10] = checkpoints_y[0] checkpoints_z[10] = checkpoints_z[0] total_checkpoints = 11 total_racers = 6 racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racer_model[4] = MALE01 racer_model[5] = MALE01 racers_car_model[0] = PCJ600 racers_car_model[1] = FCR900 racers_car_model[2] = NRG500 racers_car_model[3] = PCJ600 racers_car_model[4] = FCR900 racers_car_model[5] = NRG500 gosub get_random_racer_models break case 2//7//La race 3///////////////////////////////////////////////////////// checkpoints_x[0] = 261.7816 checkpoints_y[0] = -1243.1110 checkpoints_z[0] = 71.8851 checkpoints_x[1] = 312.9973 checkpoints_y[1] = -1206.8527 checkpoints_z[1] = 74.9057 checkpoints_x[2] = 440.3485 checkpoints_y[2] = -1186.6721 checkpoints_z[2] = 67.2076 checkpoints_x[3] = 623.8817 checkpoints_y[3] = -1109.9668 checkpoints_z[3] = 45.6186 checkpoints_x[4] = 745.0934 checkpoints_y[4] = -951.0351 checkpoints_z[4] = 53.7660 checkpoints_x[5] = 873.6384 checkpoints_y[5] = -860.0975 checkpoints_z[5] = 76.5242 checkpoints_x[6] = 1053.8181 checkpoints_y[6] = -777.5837 checkpoints_z[6] = 104.7803 checkpoints_x[7] = 1248.3679 checkpoints_y[7] = -731.3474 checkpoints_z[7] = 93.7346 checkpoints_x[8] = 1372.4016 checkpoints_y[8] = -675.6946 checkpoints_z[8] = 92.6217 checkpoints_x[9] = 1328.0111 checkpoints_y[9] = -583.8703 checkpoints_z[9] = 93.4113 checkpoints_x[10] = 1167.3146 checkpoints_y[10] = -633.0795 checkpoints_z[10] = 102.7501 checkpoints_x[11] = 968.4116 checkpoints_y[11] = -646.2520 checkpoints_z[11] = 120.7201 checkpoints_x[12] = 791.0770 checkpoints_y[12] = -800.4396 checkpoints_z[12] = 65.0537 checkpoints_x[13] = 620.9355 checkpoints_y[13] = -905.8031 checkpoints_z[13] = 62.1261 checkpoints_x[14] = 454.9853 checkpoints_y[14] = -1013.5457 checkpoints_z[14] = 92.0091 checkpoints_x[15] = 276.8912 checkpoints_y[15] = -1104.1589 checkpoints_z[15] = 80.0612 checkpoints_x[16] = 141.6012 checkpoints_y[16] = -1247.2673 checkpoints_z[16] = 43.7920 checkpoints_x[17] = 192.4688 checkpoints_y[17] = -1380.5973 checkpoints_z[17] = 47.6608 checkpoints_x[18] = checkpoints_x[0] checkpoints_y[18] = checkpoints_y[0] checkpoints_z[18] = checkpoints_z[0] total_checkpoints = 19 total_racers = 6 racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racer_model[4] = MALE01 racer_model[5] = MALE01 racers_car_model[0] = PCJ600 racers_car_model[1] = FCR900 racers_car_model[2] = NRG500 racers_car_model[3] = PCJ600 racers_car_model[4] = FCR900 racers_car_model[5] = FCR900 gosub get_random_racer_models break case 3//5//La race 4///////////////////////////////////////////////////////// checkpoints_x[0] = 1927.4796 checkpoints_y[0] = -1515.5161 checkpoints_z[0] = 2.2978 checkpoints_x[1] = 2018.4005 checkpoints_y[1] = -1515.4050 checkpoints_z[1] = 2.4054 checkpoints_x[2] = 2179.0063 checkpoints_y[2] = -1559.6609 checkpoints_z[2] = 1.1797 checkpoints_x[3] = 2370.1377 checkpoints_y[3] = -1619.5530 checkpoints_z[3] = 7.3323 checkpoints_x[4] = 2570.8413 checkpoints_y[4] = -1619.0562 checkpoints_z[4] = 17.6841 checkpoints_x[5] = 2756.8462 checkpoints_y[5] = -1657.1729 checkpoints_z[5] = 11.5191 checkpoints_x[6] = 2915.1785 checkpoints_y[6] = -1534.3623 checkpoints_z[6] = 9.8750 checkpoints_x[7] = 2916.2283 checkpoints_y[7] = -1333.4915 checkpoints_z[7] = 9.8750 checkpoints_x[8] = 2819.3313 checkpoints_y[8] = -1142.6382 checkpoints_z[8] = 15.7018 checkpoints_x[9] = 2622.6462 checkpoints_y[9] = -1152.8718 checkpoints_z[9] = 50.4181 checkpoints_x[10] = 2423.1863 checkpoints_y[10] = -1154.1694 checkpoints_z[10] = 30.5642 checkpoints_x[11] = 2167.0461 checkpoints_y[11] = -1101.9148 checkpoints_z[11] = 24.3864 checkpoints_x[12] = 2006.0774 checkpoints_y[12] = -1027.8392 checkpoints_z[12] = 34.3152 checkpoints_x[13] = 1835.8240 checkpoints_y[13] = -991.5906 checkpoints_z[13] = 35.8824 checkpoints_x[14] = 1636.3135 checkpoints_y[14] = -1005.1503 checkpoints_z[14] = 49.8831 checkpoints_x[15] = 1617.0243 checkpoints_y[15] = -1215.8334 checkpoints_z[15] = 51.0566 checkpoints_x[16] = 1577.9720 checkpoints_y[16] = -1417.8311 checkpoints_z[16] = 27.6154 checkpoints_x[17] = 1722.8226 checkpoints_y[17] = -1525.9321 checkpoints_z[17] = 18.3927 checkpoints_x[18] = checkpoints_x[0] checkpoints_y[18] = checkpoints_y[0] checkpoints_z[18] = checkpoints_z[0] total_checkpoints = 19 total_racers = 6 racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racer_model[4] = MALE01 racer_model[5] = MALE01 racers_car_model[0] = PCJ600 racers_car_model[1] = FCR900 racers_car_model[2] = NRG500 racers_car_model[3] = PCJ600 racers_car_model[4] = FCR900 racers_car_model[5] = FCR900 gosub get_random_racer_models break case 4//6//LA race 5///////////////////////////////////////////////////////// checkpoints_x[0] = 1357.6558 checkpoints_y[0] = -1361.6705 checkpoints_z[0] = 12.3828 checkpoints_x[1] = 1357.6888 checkpoints_y[1] = -1186.4038 checkpoints_z[1] = 20.2744 checkpoints_x[2] = 1369.7407 checkpoints_y[2] = -1000.5261 checkpoints_z[2] = 27.0200 checkpoints_x[3] = 1505.8179 checkpoints_y[3] = -868.7814 checkpoints_z[3] = 61.0462 checkpoints_x[4] = 1452.7943 checkpoints_y[4] = -711.5325 checkpoints_z[4] = 89.8766 checkpoints_x[5] = 1253.5721 checkpoints_y[5] = -729.2587 checkpoints_z[5] = 93.4292 checkpoints_x[6] = 1059.3055 checkpoints_y[6] = -775.9847 checkpoints_z[6] = 105.3241 checkpoints_x[7] = 878.6650 checkpoints_y[7] = -858.1913 checkpoints_z[7] = 76.8826 checkpoints_x[8] = 721.7916 checkpoints_y[8] = -980.4561 checkpoints_z[8] = 51.9555 checkpoints_x[9] = 571.0251 checkpoints_y[9] = -1045.2030 checkpoints_z[9] = 72.2876 checkpoints_x[10] = 373.2952 checkpoints_y[10] = -1075.6443 checkpoints_z[10] = 72.8049 checkpoints_x[11] = 288.4963 checkpoints_y[11] = -1249.7473 checkpoints_z[11] = 72.7210 checkpoints_x[12] = 481.2224 checkpoints_y[12] = -1240.9764 checkpoints_z[12] = 19.3512 checkpoints_x[13] = 518.3340 checkpoints_y[13] = -1377.6030 checkpoints_z[13] = 14.9457 checkpoints_x[14] = 448.0064 checkpoints_y[14] = -1540.8318 checkpoints_z[14] = 27.8796 checkpoints_x[15] = 487.4595 checkpoints_y[15] = -1661.5750 checkpoints_z[15] = 20.7400 checkpoints_x[16] = 687.2253 checkpoints_y[16] = -1673.4799 checkpoints_z[16] = 10.7959 checkpoints_x[17] = 866.4786 checkpoints_y[17] = -1584.6984 checkpoints_z[17] = 12.3828 checkpoints_x[18] = 1066.7291 checkpoints_y[18] = -1572.3047 checkpoints_z[18] = 12.3750 checkpoints_x[19] = 1261.2136 checkpoints_y[19] = -1572.2433 checkpoints_z[19] = 12.3906 checkpoints_x[20] = checkpoints_x[0] checkpoints_y[20] = checkpoints_y[0] checkpoints_z[20] = checkpoints_z[0] total_checkpoints = 21 total_racers = 6 racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racer_model[4] = MALE01 racer_model[5] = MALE01 racers_car_model[0] = URANUS ///thiss racers_car_model[1] = WINDSOR racers_car_model[2] = BLISTAC racers_car_model[3] = WINDSOR racers_car_model[4] = SENTINEL racers_car_model[5] = SUNRISE gosub get_random_racer_models break case 5//11//LA race 6//////////////////////////////////////////////////////// checkpoints_x[0] = 852.0544 checkpoints_y[0] = -1405.6216 checkpoints_z[0] = 12.2170 checkpoints_x[1] = 1102.7889 checkpoints_y[1] = -1405.7665 checkpoints_z[1] = 12.4280 checkpoints_x[2] = 1353.0377 checkpoints_y[2] = -1405.5443 checkpoints_z[2] = 12.3251 checkpoints_x[3] = 1600.9651 checkpoints_y[3] = -1440.8522 checkpoints_z[3] = 12.3828 checkpoints_x[4] = 1850.6221 checkpoints_y[4] = -1461.7772 checkpoints_z[4] = 12.3984 checkpoints_x[0] = 831.7679 checkpoints_y[0] = -1405.5880 checkpoints_z[0] = 12.3849 checkpoints_x[1] = 1031.8224 checkpoints_y[1] = -1405.6149 checkpoints_z[1] = 12.0966 checkpoints_x[2] = 1232.1444 checkpoints_y[2] = -1405.7316 checkpoints_z[2] = 12.0633 checkpoints_x[3] = 1429.5076 checkpoints_y[3] = -1439.0908 checkpoints_z[3] = 12.3828 checkpoints_x[4] = 1630.1804 checkpoints_y[4] = -1440.8579 checkpoints_z[4] = 12.3828 checkpoints_x[5] = 1829.5267 checkpoints_y[5] = -1460.8038 checkpoints_z[5] = 12.3448 checkpoints_x[6] = 2029.9794 checkpoints_y[6] = -1463.3813 checkpoints_z[6] = 14.4553 checkpoints_x[7] = 2175.8225 checkpoints_y[7] = -1384.4027 checkpoints_z[7] = 22.8281 checkpoints_x[8] = 2342.4265 checkpoints_y[8] = -1442.3237 checkpoints_z[8] = 22.8281 checkpoints_x[9] = 2191.8752 checkpoints_y[9] = -1545.9338 checkpoints_z[9] = 1.1724 checkpoints_x[10] = 1997.0780 checkpoints_y[10] = -1499.9512 checkpoints_z[10] = 2.3804 checkpoints_x[11] = 1797.0646 checkpoints_y[11] = -1500.8741 checkpoints_z[11] = 6.8307 checkpoints_x[12] = 1641.0017 checkpoints_y[12] = -1439.3447 checkpoints_z[12] = 27.0747 checkpoints_x[13] = 1627.5547 checkpoints_y[13] = -1280.7031 checkpoints_z[13] = 41.8850 checkpoints_x[14] = 1683.5068 checkpoints_y[14] = -1089.0116 checkpoints_z[14] = 55.7917 checkpoints_x[15] = 1566.0544 checkpoints_y[15] = -927.5945 checkpoints_z[15] = 42.7541 checkpoints_x[16] = 1366.1051 checkpoints_y[16] = -933.6759 checkpoints_z[16] = 33.1953 checkpoints_x[17] = 1166.0874 checkpoints_y[17] = -941.9011 checkpoints_z[17] = 41.8697 checkpoints_x[18] = 966.7150 checkpoints_y[18] = -962.2038 checkpoints_z[18] = 38.1905 checkpoints_x[19] = 784.2582 checkpoints_y[19] = -1043.9791 checkpoints_z[19] = 23.6177 checkpoints_x[20] = 677.2552 checkpoints_y[20] = -1164.1283 checkpoints_z[20] = 14.1640 checkpoints_x[21] = 627.7037 checkpoints_y[21] = -1337.9041 checkpoints_z[21] = 12.4227 checkpoints_x[22] = checkpoints_x[0] checkpoints_y[22] = checkpoints_y[0] checkpoints_z[22] = checkpoints_z[0] total_checkpoints = 23 total_racers = 6 racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racer_model[4] = MALE01 racer_model[5] = MALE01 racers_car_model[0] = BANSHEE racers_car_model[1] = BULLET racers_car_model[2] = BUFFALO racers_car_model[3] = BANSHEE racers_car_model[4] = BULLET racers_car_model[5] = SUPERGT gosub get_random_racer_models break case 6//4//LA & Badlands big loop race///////////////////////////////////////////////////////// checkpoints_x[0] = 1331.9257 checkpoints_y[0] = -2280.5098 checkpoints_z[0] = 13.1732 checkpoints_x[1] = 1331.7747 checkpoints_y[1] = -2541.6821 checkpoints_z[1] = 13.1765 checkpoints_x[2] = 1544.3086 checkpoints_y[2] = -2684.9834 checkpoints_z[2] = 7.5074 checkpoints_x[3] = 1945.9465 checkpoints_y[3] = -2685.1306 checkpoints_z[3] = 6.5549 checkpoints_x[4] = 2175.1411 checkpoints_y[4] = -2557.9939 checkpoints_z[4] = 13.1730 checkpoints_x[5] = 2352.7188 checkpoints_y[5] = -2222.2229 checkpoints_z[5] = 13.1737 checkpoints_x[6] = 2740.5217 checkpoints_y[6] = -2168.7822 checkpoints_z[6] = 10.7349 checkpoints_x[7] = 2844.8318 checkpoints_y[7] = -1812.9653 checkpoints_z[7] = 10.6737 checkpoints_x[8] = 2926.0945 checkpoints_y[8] = -1421.2627 checkpoints_z[8] = 10.6570 checkpoints_x[9] = 2888.9463 checkpoints_y[9] = -1022.6848 checkpoints_z[9] = 10.6607 checkpoints_x[10] = 2896.4834 checkpoints_y[10] = -621.0989 checkpoints_z[10] = 10.6300 checkpoints_x[11] = 2718.6228 checkpoints_y[11] = -273.2495 checkpoints_z[11] = 27.6705 checkpoints_x[12] = 2774.2993 checkpoints_y[12] = 119.9424 checkpoints_z[12] = 22.8712 checkpoints_x[13] = 2612.8201 checkpoints_y[13] = 327.3945 checkpoints_z[13] = 25.6764 checkpoints_x[14] = 2213.9834 checkpoints_y[14] = 324.9601 checkpoints_z[14] = 32.5307 checkpoints_x[15] = 1817.1840 checkpoints_y[15] = 278.3323 checkpoints_z[15] = 21.5314 checkpoints_x[16] = 1621.1851 checkpoints_y[16] = 312.8743 checkpoints_z[16] = 20.8534 checkpoints_x[17] = 1608.0289 checkpoints_y[17] = 372.2700 checkpoints_z[17] = 26.4284 checkpoints_x[18] = 1658.6716 checkpoints_y[18] = 317.3336 checkpoints_z[18] = 30.0474 checkpoints_x[19] = 1651.5359 checkpoints_y[19] = -68.8376 checkpoints_z[19] = 35.9156 checkpoints_x[20] = 1668.6531 checkpoints_y[20] = -369.1116 checkpoints_z[20] = 34.3923 checkpoints_x[21] = 1699.7850 checkpoints_y[21] = -665.8258 checkpoints_z[21] = 43.3311 checkpoints_x[22] = 1640.0302 checkpoints_y[22] = -1062.3292 checkpoints_z[22] = 60.8035 checkpoints_x[23] = 1594.4076 checkpoints_y[23] = -1457.8339 checkpoints_z[23] = 28.3679 checkpoints_x[24] = 1622.3555 checkpoints_y[24] = -1856.5045 checkpoints_z[24] = 25.4707 checkpoints_x[25] = 1452.1591 checkpoints_y[25] = -2117.2712 checkpoints_z[25] = 13.1726 checkpoints_x[26] = checkpoints_x[0] checkpoints_y[26] = checkpoints_y[0] checkpoints_z[26] = checkpoints_z[0] total_checkpoints = 27 total_racers = 4 racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racer_model[4] = MALE01 racer_model[5] = MALE01 racers_car_model[0] = TURISMO racers_car_model[1] = BANSHEE racers_car_model[2] = CHEETAH racers_car_model[3] = BULLET racers_car_model[4] = TURISMO racers_car_model[5] = INFERNUS gosub get_random_racer_models break case BADLAND_RACE1/////////////////////////////BCESAR PART I///////////////////////////// checkpoints_x[0] = 1559.9829 checkpoints_y[0] = 17.4680 checkpoints_z[0] = 26.1563 checkpoints_x[1] = 1556.4261 checkpoints_y[1] = -94.0345 checkpoints_z[1] = 19.4957 checkpoints_x[2] = 1434.7378 checkpoints_y[2] = -214.9645 checkpoints_z[2] = 7.3527 checkpoints_x[3] = 1321.2535 checkpoints_y[3] = -195.8984 checkpoints_z[3] = 15.7447 checkpoints_x[4] = 1211.0071 checkpoints_y[4] = -102.6927 checkpoints_z[4] = 39.3603 checkpoints_x[5] = 892.2923 checkpoints_y[5] = -88.1123 checkpoints_z[5] = 22.4405 checkpoints_x[6] = 789.9247 checkpoints_y[6] = -124.3171 checkpoints_z[6] = 21.3365 checkpoints_x[7] = 659.6545 checkpoints_y[7] = -196.7497 checkpoints_z[7] = 11.7663 checkpoints_x[8] = 419.4744 checkpoints_y[8] = -302.5507 checkpoints_z[8] = 6.4460 checkpoints_x[9] = 289.8085 checkpoints_y[9] = -380.3828 checkpoints_z[9] = 7.8753 checkpoints_x[10] = 207.4451 checkpoints_y[10] = -298.9230 checkpoints_z[10] = 0.4375 checkpoints_x[11] = 182.4970 checkpoints_y[11] = -217.8004 checkpoints_z[11] = 0.4216 checkpoints_x[12] = 22.0727 checkpoints_y[12] = -207.7681 checkpoints_z[12] = 0.5827 checkpoints_x[13] = -114.2310 checkpoints_y[13] = -132.3417 checkpoints_z[13] = 2.1236 checkpoints_x[14] = -38.4818 checkpoints_y[14] = 140.8613 checkpoints_z[14] = 2.1234 checkpoints_x[15] = -141.4718 //-149.1394 checkpoints_y[15] = 187.6611 //192.6522 checkpoints_z[15] = 6.2406 //2.1250 checkpoints_x[16] = -329.7878 checkpoints_y[16] = 173.9210 checkpoints_z[16] = 5.4030 checkpoints_x[17] = -507.6872 checkpoints_y[17] = 221.0444 checkpoints_z[17] = 8.7633 checkpoints_x[18] = -661.1096//-658.3503 checkpoints_y[18] = 226.3879 //146.4855 checkpoints_z[18] = 16.7064 //28.2693 checkpoints_x[19] = -618.4406 checkpoints_y[19] = -67.8995 checkpoints_z[19] = 62.3489 checkpoints_x[20] = -507.8417 checkpoints_y[20] = -45.9077 checkpoints_z[20] = 59.2556 checkpoints_x[21] = -520.6511 checkpoints_y[21] = 79.6011 checkpoints_z[21] = 32.2117 checkpoints_x[22] = -715.4454 checkpoints_y[22] = 225.1288 checkpoints_z[22] = 0.2899 checkpoints_x[23] = -770.0811 checkpoints_y[23] = 130.1324 checkpoints_z[23] = 9.4651 checkpoints_x[24] = -738.1151 checkpoints_y[24] = 25.5550 checkpoints_z[24] = 32.2336 checkpoints_x[25] = -885.7850 checkpoints_y[25] = -41.3927 checkpoints_z[25] = 33.2347 checkpoints_x[26] = -716.4521 checkpoints_y[26] = 5.1206 checkpoints_z[26] = 59.1055 checkpoints_x[27] = -759.2693 checkpoints_y[27] = -92.0455 checkpoints_z[27] = 64.8686 checkpoints_x[28] = -826.8810 checkpoints_y[28] = -167.7603 checkpoints_z[28] = 64.9900 checkpoints_x[29] = -728.9467 checkpoints_y[29] = -173.5218 checkpoints_z[29] = 65.1248 checkpoints_x[30] = -544.8638 checkpoints_y[30] = -189.4458 checkpoints_z[30] = 77.8383 total_checkpoints = 31 total_racers = 4 racer_model[0] = WMYST racer_model[1] = WMYBMX racer_model[2] = SPECIAL01 racer_model[3] = MALE01 racers_car_model[0] = STALLION racers_car_model[1] = SABRE racers_car_model[2] = FORTUNE racers_car_model[3] = SABRE racers_car_colour1[0] = 4 racers_car_colour2[0] = 80 racers_car_colour1[1] = 3 racers_car_colour2[1] = 80 racers_car_colour1[2] = 5 racers_car_colour2[2] = 80 break case BADLAND_RACE2/////////////////////////////BCESAR4 PART II///////////////////////////// checkpoints_x[0] = -544.8638 checkpoints_y[0] = -189.4458 checkpoints_z[0] = 81.8383 checkpoints_x[1] = -728.9467 checkpoints_y[1] = -173.5218 checkpoints_z[1] = 65.1248 checkpoints_x[2] = -826.8810 checkpoints_y[2] = -167.7603 checkpoints_z[2] = 64.9900 checkpoints_x[3] = -759.2693 checkpoints_y[3] = -92.0455 checkpoints_z[3] = 64.8686 checkpoints_x[4] = -716.4521 checkpoints_y[4] = 5.1206 checkpoints_z[4] = 59.1055 checkpoints_x[5] = -885.7850 checkpoints_y[5] = -41.3927 checkpoints_z[5] = 33.2347 checkpoints_x[6] = -738.1151 checkpoints_y[6] = 25.5550 checkpoints_z[6] = 32.2336 checkpoints_x[7] = -770.0811 checkpoints_y[7] = 130.1324 checkpoints_z[7] = 9.4651 checkpoints_x[8] = -715.4454 checkpoints_y[8] = 225.1288 checkpoints_z[8] = 0.2899 checkpoints_x[9] = -624.6024 checkpoints_y[9] = 187.2405 checkpoints_z[9] = 15.4381 checkpoints_x[10] = -520.6511 checkpoints_y[10] = 79.6011 checkpoints_z[10] = 32.2117 checkpoints_x[11] = -507.8417 checkpoints_y[11] = -45.9077 checkpoints_z[11] = 59.2556 checkpoints_x[12] = -618.4406 checkpoints_y[12] = -67.8995 checkpoints_z[12] = 62.3489 checkpoints_x[13] = -658.3503 checkpoints_y[13] = 146.4855 checkpoints_z[13] = 28.2693 checkpoints_x[14] = -507.6872 checkpoints_y[14] = 221.0444 checkpoints_z[14] = 8.7633 checkpoints_x[15] = -329.7878 checkpoints_y[15] = 173.9210 checkpoints_z[15] = 5.5 checkpoints_x[16] = -149.4881 checkpoints_y[16] = 189.6471 checkpoints_z[16] = 7.2644 checkpoints_x[17] = -38.4818 checkpoints_y[17] = 140.8613 checkpoints_z[17] = 2.1234 checkpoints_x[18] = -114.2310 checkpoints_y[18] = -132.3417 checkpoints_z[18] = 2.1236 checkpoints_x[19] = 22.0727 checkpoints_y[19] = -207.7681 checkpoints_z[19] = 0.5827 checkpoints_x[20] = 182.4970 checkpoints_y[20] = -217.8004 checkpoints_z[20] = 0.4216 checkpoints_x[21] = 207.4451 checkpoints_y[21] = -298.9230 checkpoints_z[21] = 0.4375 checkpoints_x[22] = 279.6441 checkpoints_y[22] = -378.3416 checkpoints_z[22] = 7.9003 checkpoints_x[23] = 419.4744 checkpoints_y[23] = -302.5507 checkpoints_z[23] = 6.4460 checkpoints_x[24] = 573.5200 checkpoints_y[24] = -202.8494 checkpoints_z[24] = 13.7118 checkpoints_x[25] = 748.4567 checkpoints_y[25] = -150.8298 checkpoints_z[25] = 18.3722 checkpoints_x[26] = 820.4231 checkpoints_y[26] = -111.5991 checkpoints_z[26] = 23.2476 checkpoints_x[27] = 1000.3245 checkpoints_y[27] = -80.3516 checkpoints_z[27] = 21.0326 checkpoints_x[28] = 1187.3932 checkpoints_y[28] = -83.8790 checkpoints_z[28] = 35.2576 checkpoints_x[29] = 1265.8466 checkpoints_y[29] = -153.0857 checkpoints_z[29] = 36.8097 checkpoints_x[30] = 1434.7378 checkpoints_y[30] = -214.9645 checkpoints_z[30] = 7.3527 checkpoints_x[31] = 1548.9625 checkpoints_y[31] = -146.2702 checkpoints_z[31] = 16.4932 checkpoints_x[32] = 1559.9829 checkpoints_y[32] = 17.4680 checkpoints_z[32] = 23.1563 total_checkpoints = 33 total_racers = 4 racer_model[0] = WMYST racer_model[1] = WMYBMX racer_model[2] = special01 racer_model[3] = MALE01 racers_car_model[0] = ZR350 racers_car_model[1] = SULTAN racers_car_model[2] = ELEGY racers_car_model[3] = ZR350 racers_car_colour1[0] = 4 racers_car_colour2[0] = 80 racers_car_colour1[1] = 3 racers_car_colour2[1] = 80 racers_car_colour1[2] = 5 racers_car_colour2[2] = 80 break case 9//19// dirt track 1 - country side //////////////////////////////////////////////////////// checkpoints_x[0] = -796.8273 checkpoints_y[0] = -2468.5293 checkpoints_z[0] = 83.6549 checkpoints_x[1] = -938.5198 checkpoints_y[1] = -2364.5115 checkpoints_z[1] = 57.0608 checkpoints_x[2] = -1065.6564 checkpoints_y[2] = -2379.4363 checkpoints_z[2] = 46.5486 checkpoints_x[3] = -1247.8232 checkpoints_y[3] = -2313.5276 checkpoints_z[3] = 19.8007 checkpoints_x[4] = -1356.1370 checkpoints_y[4] = -2180.3655 checkpoints_z[4] = 21.3467 checkpoints_x[5] = -1541.3026 checkpoints_y[5] = -2154.7817 checkpoints_z[5] = 5.8607 checkpoints_x[6] = -1674.8757 checkpoints_y[6] = -2235.1318 checkpoints_z[6] = 33.8691 checkpoints_x[7] = -1839.9366 checkpoints_y[7] = -2349.3684 checkpoints_z[7] = 31.9587 checkpoints_x[8] = -1841.0366 checkpoints_y[8] = -2454.4004 checkpoints_z[8] = 27.4044 checkpoints_x[9] = -1702.0441 checkpoints_y[9] = -2587.9758 checkpoints_z[9] = 26.1706 checkpoints_x[10] = -1508.3315 checkpoints_y[10] = -2634.7327 checkpoints_z[10] = 46.8766 checkpoints_x[11] = -1310.9048 checkpoints_y[11] = -2637.8320 checkpoints_z[11] = 12.8080 checkpoints_x[12] = -1122.6166 checkpoints_y[12] = -2652.5916 checkpoints_z[12] = 15.4117 checkpoints_x[13] = -934.2363 checkpoints_y[13] = -2668.4731 checkpoints_z[13] = 80.3479 checkpoints_x[14] = -753.5882 checkpoints_y[14] = -2672.7854 checkpoints_z[14] = 84.0788 checkpoints_x[15] = -668.0180 checkpoints_y[15] = -2496.9883 checkpoints_z[15] = 37.5787 checkpoints_x[16] = -550.4019 checkpoints_y[16] = -2334.5386 checkpoints_z[16] = 26.8502 checkpoints_x[17] = -366.3848 checkpoints_y[17] = -2257.2500 checkpoints_z[17] = 41.7144 checkpoints_x[18] = -276.1146 checkpoints_y[18] = -2189.3635 checkpoints_z[18] = 27.7264 total_checkpoints = 19 total_racers = 6 racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racer_model[4] = MALE01 racer_model[5] = MALE01 racers_car_model[0] = SANCHEZ racers_car_model[1] = SANCHEZ racers_car_model[2] = SANCHEZ racers_car_model[3] = SANCHEZ racers_car_model[4] = SANCHEZ racers_car_model[5] = SANCHEZ gosub get_random_racer_models break case 10//22///// cokerun dirtrack - buggy /////////////////////////////////////////////// checkpoints_x[0] = -1936.7911 checkpoints_y[0] = -2452.2354 checkpoints_z[0] = 29.6377 checkpoints_x[1] = -1862.5398 checkpoints_y[1] = -2379.4365 checkpoints_z[1] = 30.1425 checkpoints_x[2] = -1690.1442//-1689.8959 checkpoints_y[2] = -2303.8459//-2303.2747 checkpoints_z[2] = 43.3626 //40.3353 checkpoints_x[3] = -1676.3170 checkpoints_y[3] = -2132.6992 checkpoints_z[3] = 35.2082 checkpoints_x[4] = -1855.4214//-1855.3040 checkpoints_y[4] = -2087.1172//-2086.2729 checkpoints_z[4] = 58.3697 //92.4466 checkpoints_x[5] = -1919.8019 checkpoints_y[5] = -1937.4572 checkpoints_z[5] = 78.5313 checkpoints_x[6] = -1749.3341 checkpoints_y[6] = -1899.5192 checkpoints_z[6] = 95.8199 checkpoints_x[7] = -1571.2920//-1570.6925 checkpoints_y[7] = -1904.1659//-1903.4506 checkpoints_z[7] = 84.3076 //80.4284 checkpoints_x[8] = -1483.7836 checkpoints_y[8] = -1783.2861 checkpoints_z[8] = 49.8768 checkpoints_x[9] = -1429.8779//-1431.6093 checkpoints_y[9] = -1915.6406//-1931.1265 checkpoints_z[9] = 25.1751 //35.0593 checkpoints_x[10] = -1301.8013//-1303.6959 checkpoints_y[10] = -2084.0544//-2089.8992 checkpoints_z[10] = 22.9116 //62.6247 checkpoints_x[11] = -1269.9126//-1270.3809 checkpoints_y[11] = -2248.7356//-2249.0642 checkpoints_z[11] = 21.3152 //44.8726 checkpoints_x[12] = -1146.5144 checkpoints_y[12] = -2371.5076 checkpoints_z[12] = 27.0467 checkpoints_x[13] = -959.5773 checkpoints_y[13] = -2306.2700 checkpoints_z[13] = 56.1859 checkpoints_x[14] = -867.9595 checkpoints_y[14] = -2180.8906 checkpoints_z[14] = 25.6567 checkpoints_x[15] = -843.4177 checkpoints_y[15] = -2018.7344 checkpoints_z[15] = 20.9828 checkpoints_x[16] = -767.7295 checkpoints_y[16] = -1865.5333 checkpoints_z[16] = 11.4149 checkpoints_x[17] = -666.3682 checkpoints_y[17] = -1996.2764 checkpoints_z[17] = 23.9143 checkpoints_x[18] = -486.6196 checkpoints_y[18] = -2025.7653 checkpoints_z[18] = 48.2450 checkpoints_x[19] = -323.4612 checkpoints_y[19] = -1914.2063 checkpoints_z[19] = 11.1951 total_checkpoints = 20 total_racers = 6 racer_model[0] = male01 racer_model[1] = male01 racer_model[2] = male01 racer_model[3] = male01 racer_model[4] = male01 racer_model[5] = male01 racers_car_model[0] = bandito racers_car_model[1] = bandito racers_car_model[2] = bandito racers_car_model[3] = bandito racers_car_model[4] = bandito racers_car_model[5] = bandito gosub get_random_racer_models break case 11//// GO-Kart Race //////////////////////////////////////////////////////// checkpoints_x[0] = -2728.3093 checkpoints_y[0] = -310.8731 checkpoints_z[0] = 6.0391 checkpoints_x[1] = -2668.6711 checkpoints_y[1] = -251.6207 checkpoints_z[1] = 5.4984 checkpoints_x[2] = -2655.9775 checkpoints_y[2] = -104.6751 checkpoints_z[2] = 2.9982 checkpoints_x[3] = -2460.8352 checkpoints_y[3] = -69.9766 checkpoints_z[3] = 31.2000 checkpoints_x[4] = -2421.2627 checkpoints_y[4] = 55.6089 checkpoints_z[4] = 34.0156 checkpoints_x[5] = -2545.2600 checkpoints_y[5] = 137.9111 checkpoints_z[5] = 15.2177 checkpoints_x[6] = -2604.1365 checkpoints_y[6] = 136.8579 checkpoints_z[6] = 3.1797 checkpoints_x[7] = -2558.6606 checkpoints_y[7] = 245.6250 checkpoints_z[7] = 10.7931 checkpoints_x[8] = -2578.5039 checkpoints_y[8] = 345.8331 checkpoints_z[8] = 7.2168 checkpoints_x[9] = -2706.2817 checkpoints_y[9] = 317.6024 checkpoints_z[9] = 3.1797 checkpoints_x[10] = -2809.2441 checkpoints_y[10] = 232.3965 checkpoints_z[10] = 6.0313 checkpoints_x[11] = -2757.7490 checkpoints_y[11] = 138.2248 checkpoints_z[11] = 5.9033 checkpoints_x[12] = -2758.3901 checkpoints_y[12] = -43.9910 checkpoints_z[12] = 6.1263 checkpoints_x[13] = -2756.8923 checkpoints_y[13] = -184.0135 checkpoints_z[13] = 5.8843 checkpoints_x[14] = -2812.4644 checkpoints_y[14] = -299.5974 checkpoints_z[14] = 6.0390 checkpoints_x[15] = checkpoints_x[0] checkpoints_y[15] = checkpoints_y[0] checkpoints_z[15] = checkpoints_z[0] total_checkpoints = 16 total_racers = 6 racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racer_model[4] = MALE01 racer_model[5] = MALE01 racers_car_model[0] = kart racers_car_model[1] = kart racers_car_model[2] = kart racers_car_model[3] = kart racers_car_model[4] = kart racers_car_model[5] = kart gosub get_random_racer_models break //case 11//15// boat race 1 dinghy //////////////////////////////////////////////////////// //checkpoints_x[0] = 2121.7205 //checkpoints_y[0] = -156.0080 //checkpoints_z[0] = 0.0 // //checkpoints_x[1] = 1843.6671 //checkpoints_y[1] = -43.0750 //checkpoints_z[1] = 0.0 // //checkpoints_x[2] = 1571.8040 //checkpoints_y[2] = -170.2337 //checkpoints_z[2] = 0.0 // //checkpoints_x[3] = 1272.0471 //checkpoints_y[3] = -187.2620 //checkpoints_z[3] = 0.0 // //checkpoints_x[4] = 980.5278 //checkpoints_y[4] = -115.9946 //checkpoints_z[4] = 0.0 // //checkpoints_x[5] = 698.4188 //checkpoints_y[5] = -218.8346 //checkpoints_z[5] = 0.0 // //checkpoints_x[6] = 404.4511 //checkpoints_y[6] = -279.1968 //checkpoints_z[6] = 0.0 // //checkpoints_x[7] = 142.0295 //checkpoints_y[7] = -424.9876 //checkpoints_z[7] = 0.0 // //checkpoints_x[8] = -79.2922 //checkpoints_y[8] = -627.6002 //checkpoints_z[8] = 0.0 // //checkpoints_x[9] = 25.2075 //checkpoints_y[9] = -908.8446 //checkpoints_z[9] = 0.0 // //checkpoints_x[10] = 73.3687 //checkpoints_y[10] = -1205.0173 //checkpoints_z[10] = 0.0 // //checkpoints_x[11] = 53.1958 //checkpoints_y[11] = -1504.3722 //checkpoints_z[11] = 0.0 // //checkpoints_x[12] = 111.5816 //checkpoints_y[12] = -1798.8573 //checkpoints_z[12] = 0.0 // //checkpoints_x[13] = 249.2093 //checkpoints_y[13] = -1998.9181 //checkpoints_z[13] = 0.0 // //total_checkpoints = 14 // //total_racers = 4 //racer_model[0] = MALE01 //racer_model[1] = MALE01 //racer_model[2] = MALE01 //racer_model[3] = MALE01 //racers_car_model[0] = jetmax //racers_car_model[1] = jetmax //racers_car_model[2] = jetmax //racers_car_model[3] = jetmax //gosub get_random_racer_models //break //446, squalo //452, speeder //493, jetmax case 12//0//san fran car race 1///////////////////////////////////////////////////////// checkpoints_x[0] = -2657.1643 checkpoints_y[0] = 1153.8717 checkpoints_z[0] = 34.7396 checkpoints_x[1] = -2593.2209 checkpoints_y[1] = 1217.8544 checkpoints_z[1] = 34.7402 checkpoints_x[2] = -2312.2881 checkpoints_y[2] = 1176.3868 checkpoints_z[2] = 49.6080 checkpoints_x[3] = -2157.1926 checkpoints_y[3] = 1268.1965 checkpoints_z[3] = 26.0127 checkpoints_x[4] = -1959.5264 checkpoints_y[4] = 1287.2050 checkpoints_z[4] = 6.7514 checkpoints_x[5] = -1741.0756//-1771.2837 checkpoints_y[5] = 1325.2985//1349.0731 checkpoints_z[5] = 6.0830//6.7539 checkpoints_x[6] = -1759.8651 checkpoints_y[6] = 1269.1467 checkpoints_z[6] = 8.8598 checkpoints_x[7] = -1884.2421 checkpoints_y[7] = 1160.6906 checkpoints_z[7] = 45.0107 checkpoints_x[8] = -1897.1008 checkpoints_y[8] = 960.1686 checkpoints_z[8] = 34.7366 checkpoints_x[9] = -1998.1781 checkpoints_y[9] = 841.1865 checkpoints_z[9] = 45.0219 checkpoints_x[10] = -2189.2585 checkpoints_y[10] = 808.5273 checkpoints_z[10] = 56.0602 checkpoints_x[11] = -2389.1855 checkpoints_y[11] = 808.6409 checkpoints_z[11] = 34.7495 checkpoints_x[12] = -2589.6924 checkpoints_y[12] = 808.5219 checkpoints_z[12] = 49.5411 checkpoints_x[13] = -2711.4875//-2690.2190 checkpoints_y[13] = 812.8809//812.4327 checkpoints_z[13] = 48.9309//49.5548 checkpoints_x[14] = -2750.8938 checkpoints_y[14] = 890.6993 checkpoints_z[14] = 65.8952 checkpoints_x[15] = -2653.9116 checkpoints_y[15] = 1157.3455 checkpoints_z[15] = 34.7386 total_checkpoints = 16 total_racers = 6 lvar_int racer_model[16] racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racer_model[4] = MALE01 racer_model[5] = MALE01 lvar_int racers_car_model[16] racers_car_model[0] = JESTER racers_car_model[1] = CLUB racers_car_model[2] = JESTER racers_car_model[3] = FLASH racers_car_model[4] = URANUS racers_car_model[5] = ALPHA gosub get_random_racer_models break case 13//1//san fran car race 2///////////////////////////////////////////////////////// checkpoints_x[0] = -1584.1415 checkpoints_y[0] = 1053.4387 checkpoints_z[0] = 6.8392 checkpoints_x[1] = -1584.1279 checkpoints_y[1] = 1150.2612 checkpoints_z[1] = 6.8387 checkpoints_x[2] = -1699.0767 checkpoints_y[2] = 1312.0203 checkpoints_z[2] = 6.8293 checkpoints_x[3] = -1875.8906 checkpoints_y[3] = 1352.0593 checkpoints_z[3] = 6.8322 checkpoints_x[4] = -2060.7412 checkpoints_y[4] = 1274.4521 checkpoints_z[4] = 8.0659 checkpoints_x[5] = -2258.3064 checkpoints_y[5] = 1257.6816 checkpoints_z[5] = 42.6038 checkpoints_x[6] = -2143.2812 checkpoints_y[6] = 1075.6525 checkpoints_z[6] = 79.1249 checkpoints_x[7] = -2143.1406 checkpoints_y[7] = 896.6196 checkpoints_z[7] = 79.6432 checkpoints_x[8] = -2143.0837 checkpoints_y[8] = 696.6971 checkpoints_z[8] = 67.6451 checkpoints_x[9] = -2146.7373 checkpoints_y[9] = 532.8465 checkpoints_z[9] = 34.8181 checkpoints_x[10] = -2055.5637 checkpoints_y[10] = 504.0781 checkpoints_z[10] = 34.8168 checkpoints_x[11] = -1968.1750 checkpoints_y[11] = 605.5881 checkpoints_z[11] = 34.8199 checkpoints_x[12] = -1820.3933 checkpoints_y[12] = 475.0548 checkpoints_z[12] = 23.4295 checkpoints_x[13] = -1876.9030 checkpoints_y[13] = 288.4981 checkpoints_z[13] = 32.6699 checkpoints_x[14] = -1897.5850 checkpoints_y[14] = 87.7896 checkpoints_z[14] = 37.9384 checkpoints_x[15] = -1911.1510 checkpoints_y[15] = -214.2394 checkpoints_z[15] = 38.0320 checkpoints_x[16] = -1910.9742 checkpoints_y[16] = -515.5727 checkpoints_z[16] = 38.0323 checkpoints_x[17] = -1910.6749 checkpoints_y[17] = -816.3037 checkpoints_z[17] = 44.7432 checkpoints_x[18] = -1910.6584 checkpoints_y[18] = -1117.4086 checkpoints_z[18] = 38.0214 checkpoints_x[19] = -1907.2764 checkpoints_y[19] = -1317.6263 checkpoints_z[19] = 39.3164 checkpoints_x[20] = -1996.8965 checkpoints_y[20] = -1289.2639 checkpoints_z[20] = 37.3518 checkpoints_x[21] = -2153.5298 checkpoints_y[21] = -1031.5967 checkpoints_z[21] = 32.3638 checkpoints_x[22] = -2205.5667 checkpoints_y[22] = -859.1885 checkpoints_z[22] = 54.6872 checkpoints_x[23] = -2202.6658 checkpoints_y[23] = -759.2505 checkpoints_z[23] = 62.3413 checkpoints_x[24] = -2352.2554 checkpoints_y[24] = -775.5399 checkpoints_z[24] = 95.1597 checkpoints_x[25] = -2421.5444 checkpoints_y[25] = -610.6656 checkpoints_z[25] = 132.3493 checkpoints_x[26] = -2627.1377 checkpoints_y[26] = -496.4363 checkpoints_z[26] = 70.0900 checkpoints_x[27] = -2351.2471 checkpoints_y[27] = -460.0875 checkpoints_z[27] = 79.9485 checkpoints_x[28] = -2599.9963 checkpoints_y[28] = -372.7368 checkpoints_z[28] = 43.7794 checkpoints_x[29] = -2702.3145 checkpoints_y[29] = -530.1367 checkpoints_z[29] = 12.4366 checkpoints_x[30] = -2699.1968 checkpoints_y[30] = -401.2050 checkpoints_z[30] = 7.7008 checkpoints_x[31] = -2210.2551 checkpoints_y[31] = -348.0724 checkpoints_z[31] = 36.8384 checkpoints_x[32] = -1897.7339 checkpoints_y[32] = -314.4976 checkpoints_z[32] = 48.9384 checkpoints_x[33] = -1890.3602 checkpoints_y[33] = -45.4288 checkpoints_z[33] = 38.0312 checkpoints_x[34] = -1886.5565 checkpoints_y[34] = 55.2930 checkpoints_z[34] = 38.0326 checkpoints_x[35] = -1848.0386 checkpoints_y[35] = 242.5393 checkpoints_z[35] = 30.8250 checkpoints_x[36] = -1736.6350//-1753.1964 checkpoints_y[36] = 316.5836//308.0770 checkpoints_z[36] = 6.0390//6.0390 checkpoints_x[37] = -1682.9807 checkpoints_y[37] = 367.1342 checkpoints_z[37] = 6.0280 checkpoints_x[38] = -1559.2928 checkpoints_y[38] = 528.3320 checkpoints_z[38] = 6.8409 checkpoints_x[39] = -1535.5515 checkpoints_y[39] = 827.4427 checkpoints_z[39] = 6.8401 checkpoints_x[40] = -1584.1294 checkpoints_y[40] = 1115.6006 checkpoints_z[40] = 6.8376 total_checkpoints = 41 total_racers = 6 racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racer_model[4] = MALE01 racer_model[5] = MALE01 racers_car_model[0] = BUFFALO racers_car_model[1] = SULTAN racers_car_model[2] = SUPERGT racers_car_model[3] = SUPERGT racers_car_model[4] = ZR350 racers_car_model[5] = PHOENIX gosub get_random_racer_models break case 14//2//san fran car race 3///////////////////////////////////////////////////////// checkpoints_x[0] = -1761.6553 checkpoints_y[0] = -606.3881 checkpoints_z[0] = 15.8961 checkpoints_x[1] = -1760.5399 checkpoints_y[1] = -686.4133 checkpoints_z[1] = 24.2389 checkpoints_x[2] = -1502.8759 checkpoints_y[2] = -820.2545 checkpoints_z[2] = 61.3357 checkpoints_x[3] = -1219.3323 checkpoints_y[3] = -759.4814 checkpoints_z[3] = 62.0285 checkpoints_x[4] = -1096.1517 checkpoints_y[4] = -489.1358 checkpoints_z[4] = 32.7156 checkpoints_x[5] = -911.5416 checkpoints_y[5] = -455.9558 checkpoints_z[5] = 26.7166 checkpoints_x[6] = -621.3364 checkpoints_y[6] = -393.1580 checkpoints_z[6] = 22.1878 checkpoints_x[7] = -395.5605 checkpoints_y[7] = -533.5220 checkpoints_z[7] = 17.6561 checkpoints_x[8] = -372.2669 checkpoints_y[8] = -819.4839 checkpoints_z[8] = 28.1926 checkpoints_x[9] = -584.5377 checkpoints_y[9] = -1160.5718 checkpoints_z[9] = 21.8153 checkpoints_x[10] = -659.3533 checkpoints_y[10] = -1548.8143 checkpoints_z[10] = 22.1495 checkpoints_x[11] = -717.1517 checkpoints_y[11] = -1697.2047 checkpoints_z[11] = 48.2586 checkpoints_x[12] = -714.6181 checkpoints_y[12] = -1395.0941 checkpoints_z[12] = 60.5799 checkpoints_x[13] = -764.0460 checkpoints_y[13] = -1385.0271 checkpoints_z[13] = 82.2146 checkpoints_x[14] = -762.7014 checkpoints_y[14] = -1685.0406 checkpoints_z[14] = 96.9103 checkpoints_x[15] = -945.4141 checkpoints_y[15] = -1903.2269 checkpoints_z[15] = 81.3436 checkpoints_x[16] = -1104.5411 checkpoints_y[16] = -2155.3254 checkpoints_z[16] = 34.6761 checkpoints_x[17] = -1186.2012 checkpoints_y[17] = -2444.5413 checkpoints_z[17] = 54.4532 checkpoints_x[18] = -982.3237 checkpoints_y[18] = -2611.6235 checkpoints_z[18] = 86.2530 checkpoints_x[19] = -713.2529 checkpoints_y[19] = -2336.6172 checkpoints_z[19] = 36.4201 checkpoints_x[20] = -512.3461 checkpoints_y[20] = -2166.4167 checkpoints_z[20] = 53.5212 checkpoints_x[21] = -258.5978 checkpoints_y[21] = -2074.8718 checkpoints_z[21] = 36.6480 checkpoints_x[22] = -260.1367 checkpoints_y[22] = -1777.1909 checkpoints_z[22] = 7.5735 checkpoints_x[23] = -57.3444 checkpoints_y[23] = -1601.3746 checkpoints_z[23] = 1.3776 checkpoints_x[24] = -124.2960 checkpoints_y[24] = -1466.5753 checkpoints_z[24] = 2.4045 checkpoints_x[25] = -143.4815 checkpoints_y[25] = -1270.3171 checkpoints_z[25] = 2.4040 checkpoints_x[26] = -113.7683 //-120.6564 checkpoints_y[26] = -998.8210 //-991.0425 checkpoints_z[26] = 23.9178 //33.7625 checkpoints_x[27] = -377.3843 checkpoints_y[27] = -838.2166 checkpoints_z[27] = 47.1444 checkpoints_x[28] = -626.0056 checkpoints_y[28] = -989.0120 checkpoints_z[28] = 66.0268 checkpoints_x[29] = -877.4561 checkpoints_y[29] = -1097.4255 checkpoints_z[29] = 96.1699 checkpoints_x[30] = -925.9376 checkpoints_y[30] = -1391.3534 checkpoints_z[30] = 126.2905 checkpoints_x[31] = -1219.1407 checkpoints_y[31] = -1347.2485 checkpoints_z[31] = 122.5235 checkpoints_x[32] = -1407.7227 checkpoints_y[32] = -1414.4497 checkpoints_z[32] = 104.9232 checkpoints_x[33] = -1577.0127 checkpoints_y[33] = -1168.8024 checkpoints_z[33] = 102.3586 checkpoints_x[34] = -1626.0673 checkpoints_y[34] = -882.9627 checkpoints_z[34] = 97.5243 checkpoints_x[35] = -1744.3031 checkpoints_y[35] = -853.2858 checkpoints_z[35] = 77.1834 checkpoints_x[36] = -1684.6123 checkpoints_y[36] = -1143.2905 checkpoints_z[36] = 72.4364 checkpoints_x[37] = -1549.5376 checkpoints_y[37] = -1286.3467 checkpoints_z[37] = 57.1135 checkpoints_x[38] = -1525.7571 checkpoints_y[38] = -1383.5315 checkpoints_z[38] = 45.1796 checkpoints_x[39] = -1626.1416 checkpoints_y[39] = -1375.5872 checkpoints_z[39] = 45.2062 checkpoints_x[40] = -1800.1742 checkpoints_y[40] = -1016.7898 checkpoints_z[40] = 51.6322 checkpoints_x[41] = -1817.4778 checkpoints_y[41] = -617.6195 checkpoints_z[41] = 15.9507 total_checkpoints = 42 total_racers = 6 racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racer_model[4] = MALE01 racer_model[5] = MALE01 racers_car_model[0] = TURISMO racers_car_model[1] = CHEETAH racers_car_model[2] = INFERNUS racers_car_model[3] = TURISMO racers_car_model[4] = BANSHEE racers_car_model[5] = BULLET gosub get_random_racer_models break case 15//8//SanFran to Vegas///////////////////////////////////////////////////////// checkpoints_x[0] = -2001.8562 checkpoints_y[0] = 1076.3024 checkpoints_z[0] = 54.5637 checkpoints_x[1] = -2302.3865 checkpoints_y[1] = 1076.7543 checkpoints_z[1] = 54.5859 checkpoints_x[2] = -2596.7849 checkpoints_y[2] = 1136.7277 checkpoints_z[2] = 54.4297 checkpoints_x[3] = -2673.7673 checkpoints_y[3] = 1427.2927 checkpoints_z[3] = 54.4271 checkpoints_x[4] = -2673.7754 checkpoints_y[4] = 1728.2385 checkpoints_z[4] = 66.8937 checkpoints_x[5] = -2673.8074 checkpoints_y[5] = 2028.8955 checkpoints_z[5] = 57.2377 checkpoints_x[6] = -2731.7419 checkpoints_y[6] = 2323.1829 checkpoints_z[6] = 67.5411 checkpoints_x[7] = -2622.0935 checkpoints_y[7] = 2602.5972 checkpoints_z[7] = 68.7000 checkpoints_x[8] = -2322.7722 checkpoints_y[8] = 2637.1003 checkpoints_z[8] = 53.2135 checkpoints_x[9] = -2027.1217 checkpoints_y[9] = 2585.8655 checkpoints_z[9] = 53.9804 checkpoints_x[10] = -1885.6207 checkpoints_y[10] = 2321.5217 checkpoints_z[10] = 38.5395 checkpoints_x[11] = -1675.2961 checkpoints_y[11] = 2107.6970 checkpoints_z[11] = 17.3995 checkpoints_x[12] = -1629.9763 checkpoints_y[12] = 1810.8279 checkpoints_z[12] = 11.0590 checkpoints_x[13] = -1347.9883 checkpoints_y[13] = 1705.6704 checkpoints_z[13] = 4.8179 checkpoints_x[14] = -1125.8702 checkpoints_y[14] = 1504.0950 checkpoints_z[14] = 22.1877 checkpoints_x[15] = -1010.7657 checkpoints_y[15] = 1227.0442 checkpoints_z[15] = 31.1773 checkpoints_x[16] = -908.7908 checkpoints_y[16] = 944.9431 checkpoints_z[16] = 17.3370 checkpoints_x[17] = -744.0402 checkpoints_y[17] = 694.0286 checkpoints_z[17] = 16.9982 checkpoints_x[18] = -469.1425 checkpoints_y[18] = 573.0610 checkpoints_z[18] = 16.0649 checkpoints_x[19] = -168.3162 checkpoints_y[19] = 562.0268 checkpoints_z[19] = 14.9046 checkpoints_x[20] = 110.1296 checkpoints_y[20] = 673.4105 checkpoints_z[20] = 4.6336 checkpoints_x[21] = 400.6810 checkpoints_y[21] = 749.8367 checkpoints_z[21] = 5.0607 checkpoints_x[22] = 686.3097 checkpoints_y[22] = 656.6995 checkpoints_z[22] = 7.8963 checkpoints_x[23] = 975.3585 checkpoints_y[23] = 738.1249 checkpoints_z[23] = 9.6719 checkpoints_x[24] = 1242.0449 checkpoints_y[24] = 876.2670 checkpoints_z[24] = 13.1519 checkpoints_x[25] = 1226.8104 checkpoints_y[25] = 1169.8772 checkpoints_z[25] = 5.8125 checkpoints_x[26] = 1226.6638 checkpoints_y[26] = 1469.9360 checkpoints_z[26] = 5.7420 total_checkpoints = 27 total_racers = 6 racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racer_model[4] = MALE01 racer_model[5] = MALE01 racers_car_model[0] = TURISMO racers_car_model[1] = CHEETAH racers_car_model[2] = INFERNUS racers_car_model[3] = TURISMO racers_car_model[4] = BANSHEE racers_car_model[5] = BANSHEE gosub get_random_racer_models break case 16//9//Desert race 1///////////////////////////////////////////////////////// checkpoints_x[0] = -878.0113 checkpoints_y[0] = 1947.4839 checkpoints_z[0] = 59.1845 checkpoints_x[1] = -857.6418 checkpoints_y[1] = 1873.2499 checkpoints_z[1] = 59.1830 checkpoints_x[2] = -1030.6890 checkpoints_y[2] = 1853.5463 checkpoints_z[2] = 58.8558 checkpoints_x[3] = -1093.1816 checkpoints_y[3] = 1748.0228 checkpoints_z[3] = 31.6318 checkpoints_x[4] = -902.4880 checkpoints_y[4] = 1687.6664 checkpoints_z[4] = 26.2670 checkpoints_x[5] = -847.1951 checkpoints_y[5] = 1495.5806 checkpoints_z[5] = 17.5443 checkpoints_x[6] = -782.4052 checkpoints_y[6] = 1305.8105 checkpoints_z[6] = 12.6016 checkpoints_x[7] = -616.3677 checkpoints_y[7] = 1193.6448 checkpoints_z[7] = 9.2126 checkpoints_x[8] = -474.1805 checkpoints_y[8] = 1052.0857 checkpoints_z[8] = 10.0313 checkpoints_x[9] = -319.1918 checkpoints_y[9] = 925.6066 checkpoints_z[9] = 10.3099 checkpoints_x[10] = -267.4492 checkpoints_y[10] = 825.0159 checkpoints_z[10] = 13.2739 checkpoints_x[11] = -188.4539 checkpoints_y[11] = 1007.1902 checkpoints_z[11] = 18.5885 checkpoints_x[12] = -164.8873 checkpoints_y[12] = 1198.2633 checkpoints_z[12] = 18.5938 checkpoints_x[13] = -142.1028 checkpoints_y[13] = 1250.0220 checkpoints_z[13] = 18.5869 checkpoints_x[14] = -341.5205 checkpoints_y[14] = 1265.6954 checkpoints_z[14] = 22.1515 checkpoints_x[15] = -440.0310 checkpoints_y[15] = 1439.6689 checkpoints_z[15] = 32.3340 checkpoints_x[16] = -438.1716 checkpoints_y[16] = 1639.6729 checkpoints_z[16] = 34.6319 checkpoints_x[17] = -381.6811 checkpoints_y[17] = 1831.0260 checkpoints_z[17] = 49.8567 checkpoints_x[18] = -433.4627 checkpoints_y[18] = 1883.9919 checkpoints_z[18] = 59.8611 checkpoints_x[19] = -465.4392 checkpoints_y[19] = 1768.5317 checkpoints_z[19] = 71.9576 checkpoints_x[20] = -464.5399 checkpoints_y[20] = 1968.4230 checkpoints_z[20] = 81.2536 checkpoints_x[21] = -411.0666 checkpoints_y[21] = 2074.5962 checkpoints_z[21] = 60.6433 checkpoints_x[22] = -610.1716 checkpoints_y[22] = 2050.8872 checkpoints_z[22] = 59.1798 checkpoints_x[23] = -790.6900 checkpoints_y[23] = 2053.9099 checkpoints_z[23] = 59.1798 checkpoints_x[24] = checkpoints_x[0] checkpoints_y[24] = checkpoints_y[0] checkpoints_z[24] = checkpoints_z[0] total_checkpoints = 25 total_racers = 6 racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racer_model[4] = MALE01 racer_model[5] = MALE01 racers_car_model[0] = PCJ600 racers_car_model[1] = FCR900 racers_car_model[2] = NRG500 racers_car_model[3] = PCJ600 racers_car_model[4] = FCR900 racers_car_model[5] = NRG500 gosub get_random_racer_models break case 17//10//Desert race 2//////////////////////////////////////////////////////// //checkpoints_x[0] = -374.9463 //checkpoints_y[0] = 2201.4568 //checkpoints_z[0] = 41.6510 // //checkpoints_x[1] = -390.8883 //checkpoints_y[1] = 2265.4556 //checkpoints_z[1] = 41.1335 // //checkpoints_x[2] = -376.4139 //checkpoints_y[2] = 2363.9299 //checkpoints_z[2] = 30.3884 // //checkpoints_x[3] = -407.7379 //checkpoints_y[3] = 2457.2075 //checkpoints_z[3] = 43.0772 // //checkpoints_x[4] = -503.3011 //checkpoints_y[4] = 2429.9836 //checkpoints_z[4] = 54.9013 // //checkpoints_x[5] = -601.4474 //checkpoints_y[5] = 2441.7410 //checkpoints_z[5] = 71.2696 // //checkpoints_x[6] = -678.2108 //checkpoints_y[6] = 2506.3896 //checkpoints_z[6] = 75.2021 // //checkpoints_x[7] = -729.4489 //checkpoints_y[7] = 2592.5422 //checkpoints_z[7] = 69.1407 // //checkpoints_x[8] = -700.4753 //checkpoints_y[8] = 2687.3875 //checkpoints_z[8] = 55.9636 // //checkpoints_x[9] = -790.3241 //checkpoints_y[9] = 2730.0793 //checkpoints_z[9] = 44.8626 // //checkpoints_x[10] = -890.4892 //checkpoints_y[10] = 2724.2561 //checkpoints_z[10] = 45.4101 // //checkpoints_x[11] = -989.8942 //checkpoints_y[11] = 2712.7505 //checkpoints_z[11] = 45.4074 // //checkpoints_x[12] = -1090.0802 //checkpoints_y[12] = 2701.3955 //checkpoints_z[12] = 45.4332 // //checkpoints_x[13] = -1189.7527 //checkpoints_y[13] = 2689.6638 //checkpoints_z[13] = 45.4260 // //checkpoints_x[14] = -1276.8923 //checkpoints_y[14] = 2664.9668 //checkpoints_z[14] = 48.5917 // //checkpoints_x[15] = -1351.6736 //checkpoints_y[15] = 2650.0254 //checkpoints_z[15] = 50.5879 // //checkpoints_x[16] = -1424.2471 //checkpoints_y[16] = 2718.4275 //checkpoints_z[16] = 61.7923 // //checkpoints_x[17] = -1523.9604 //checkpoints_y[17] = 2730.3774 //checkpoints_z[17] = 63.6405 // //checkpoints_x[18] = -1623.9374 //checkpoints_y[18] = 2725.2644 //checkpoints_z[18] = 57.2280 // //checkpoints_x[19] = -1724.0027 //checkpoints_y[19] = 2731.8008 //checkpoints_z[19] = 60.4080 // //checkpoints_x[20] = -1810.1735 //checkpoints_y[20] = 2680.3145 //checkpoints_z[20] = 55.9172 // //checkpoints_x[21] = -1852.3207 //checkpoints_y[21] = 2589.7817 //checkpoints_z[21] = 49.4334 // //checkpoints_x[22] = -1910.9666 //checkpoints_y[22] = 2508.9009 //checkpoints_z[22] = 43.9725 // //checkpoints_x[23] = -1993.4631 //checkpoints_y[23] = 2452.0798 //checkpoints_z[23] = 36.1913 // //checkpoints_x[24] = -1983.5367 //checkpoints_y[24] = 2352.5730 //checkpoints_z[24] = 28.0793 // //checkpoints_x[25] = -1988.1018 //checkpoints_y[25] = 2253.1653 //checkpoints_z[25] = 15.6906 // //checkpoints_x[26] = -1896.9801 //checkpoints_y[26] = 2212.8940 //checkpoints_z[26] = 5.6429 // //checkpoints_x[27] = -1826.5327 //checkpoints_y[27] = 2141.4875 //checkpoints_z[27] = 7.1591 // //checkpoints_x[28] = -1784.7640 //checkpoints_y[28] = 2050.4395 //checkpoints_z[28] = 8.3530 // //checkpoints_x[29] = -1795.0258 //checkpoints_y[29] = 1950.9360 //checkpoints_z[29] = 13.2365 // //checkpoints_x[30] = -1763.5988 //checkpoints_y[30] = 1855.9103 //checkpoints_z[30] = 19.0940 // //checkpoints_x[31] = -1667.6451 //checkpoints_y[31] = 1827.8444 //checkpoints_z[31] = 25.4007 // //checkpoints_x[32] = -1567.9170 //checkpoints_y[32] = 1839.8270 //checkpoints_z[32] = 26.3627 // //checkpoints_x[33] = -1467.8148 //checkpoints_y[33] = 1846.8763 //checkpoints_z[33] = 32.3573 // //checkpoints_x[34] = -1367.7511 //checkpoints_y[34] = 1854.9581 //checkpoints_z[34] = 36.8529 // //checkpoints_x[35] = -1270.7789 //checkpoints_y[35] = 1829.6432 //checkpoints_z[35] = 39.8193 // //checkpoints_x[36] = -1175.4015 //checkpoints_y[36] = 1798.3138 //checkpoints_z[36] = 39.8602 // //checkpoints_x[37] = -1078.8146 //checkpoints_y[37] = 1824.6576 //checkpoints_z[37] = 47.0318 // //checkpoints_x[38] = -981.6960 //checkpoints_y[38] = 1843.2656 //checkpoints_z[38] = 62.2027 // //checkpoints_x[39] = -894.8107 //checkpoints_y[39] = 1793.2656 //checkpoints_z[39] = 59.7473 // //checkpoints_x[40] = -861.4218 //checkpoints_y[40] = 1887.7130 //checkpoints_z[40] = 59.7415 // //checkpoints_x[41] = -869.7413 //checkpoints_y[41] = 1987.3971 //checkpoints_z[41] = 59.7353 // //checkpoints_x[42] = -784.1523 //checkpoints_y[42] = 2040.2885 //checkpoints_z[42] = 59.7408 // //checkpoints_x[43] = -684.8186 //checkpoints_y[43] = 2054.9055 //checkpoints_z[43] = 59.7346 // //checkpoints_x[44] = -589.2283 //checkpoints_y[44] = 2023.5383 //checkpoints_z[44] = 59.7390 // //checkpoints_x[45] = -497.0670 //checkpoints_y[45] = 1984.5245 //checkpoints_z[45] = 59.7569 // //checkpoints_x[46] = -469.7606 //checkpoints_y[46] = 2060.1919 //checkpoints_z[46] = 60.4341 // //checkpoints_x[47] = -422.4174 //checkpoints_y[47] = 2143.4629 //checkpoints_z[47] = 44.4062 // //checkpoints_x[48] = checkpoints_x[0] //checkpoints_y[48] = checkpoints_y[0] //checkpoints_z[48] = checkpoints_z[0] // //total_checkpoints = 49 checkpoints_x[0] = -375.6397 checkpoints_y[0] = 2204.2168 checkpoints_z[0] = 41.0938 checkpoints_x[1] = -388.8497 checkpoints_y[1] = 2258.0559 checkpoints_z[1] = 40.9952 checkpoints_x[2] = -410.6823 checkpoints_y[2] = 2455.7473 checkpoints_z[2] = 42.9124 checkpoints_x[3] = -608.4162 checkpoints_y[3] = 2447.1904 checkpoints_z[3] = 71.7551 checkpoints_x[4] = -715.8640 checkpoints_y[4] = 2536.5945 checkpoints_z[4] = 72.7592 checkpoints_x[5] = -713.7043 checkpoints_y[5] = 2697.4658 checkpoints_z[5] = 53.2852 checkpoints_x[6] = -912.5499 checkpoints_y[6] = 2721.9873 checkpoints_z[6] = 44.8627 checkpoints_x[7] = -1112.7545 checkpoints_y[7] = 2698.6506 checkpoints_z[7] = 44.8750 checkpoints_x[8] = -1238.1705 checkpoints_y[8] = 2679.8606 checkpoints_z[8] = 45.9321 checkpoints_x[9] = -1359.5502 checkpoints_y[9] = 2659.5569 checkpoints_z[9] = 50.4683 checkpoints_x[10] = -1545.7728 checkpoints_y[10] = 2732.3538 checkpoints_z[10] = 61.3062 checkpoints_x[11] = -1746.0358 checkpoints_y[11] = 2727.4485 checkpoints_z[11] = 59.0648 checkpoints_x[12] = -1860.2474 checkpoints_y[12] = 2563.0430 checkpoints_z[12] = 48.8929 checkpoints_x[13] = -2002.1327 checkpoints_y[13] = 2422.6030 checkpoints_z[13] = 32.9752 checkpoints_x[14] = -1961.4625 checkpoints_y[14] = 2227.8911 checkpoints_z[14] = 10.7077 checkpoints_x[15] = -1807.1235 checkpoints_y[15] = 2100.1001 checkpoints_z[15] = 7.4268 checkpoints_x[16] = -1782.0896 checkpoints_y[16] = 1901.7749 checkpoints_z[16] = 14.7248 checkpoints_x[17] = -1591.9083 checkpoints_y[17] = 1837.2899 checkpoints_z[17] = 24.8515 checkpoints_x[18] = -1392.0566 checkpoints_y[18] = 1852.9677 checkpoints_z[18] = 35.4945 checkpoints_x[19] = -1199.3655 checkpoints_y[19] = 1799.6382 checkpoints_z[19] = 40.4346 checkpoints_x[20] = -1008.3061 checkpoints_y[20] = 1855.6041 checkpoints_z[20] = 61.6784 checkpoints_x[21] = -857.7028 checkpoints_y[21] = 1874.0140 checkpoints_z[21] = 59.1758 checkpoints_x[22] = -758.5721 checkpoints_y[22] = 2048.2322 checkpoints_z[22] = 59.1866 checkpoints_x[23] = -563.1158 checkpoints_y[23] = 2005.5745 checkpoints_z[23] = 59.2474 checkpoints_x[24] = -468.9791 checkpoints_y[24] = 2056.8108 checkpoints_z[24] = 59.8750 checkpoints_x[25] = -392.3245 checkpoints_y[25] = 2154.4480 checkpoints_z[25] = 42.1847 checkpoints_x[26] = checkpoints_x[0] checkpoints_y[26] = checkpoints_y[0] checkpoints_z[26] = checkpoints_z[0] total_checkpoints = 27 total_racers = 6 racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racer_model[4] = MALE01 racer_model[5] = MALE01 racers_car_model[0] = PCJ600 racers_car_model[1] = FCR900 racers_car_model[2] = NRG500 racers_car_model[3] = PCJ600 racers_car_model[4] = FCR900 racers_car_model[5] = FCR900 gosub get_random_racer_models break case 18//21// vegas ring road ///////////////////////////////////////////////////////////////// checkpoints_x[0] = 1446.4259 checkpoints_y[0] = 834.0658 checkpoints_z[0] = 5.8125 checkpoints_x[1] = 1747.2593 checkpoints_y[1] = 834.0250 checkpoints_z[1] = 8.6815 checkpoints_x[2] = 2047.3347 checkpoints_y[2] = 834.1916 checkpoints_z[2] = 5.7422 checkpoints_x[3] = 2348.7219 checkpoints_y[3] = 834.1481 checkpoints_z[3] = 5.7422 checkpoints_x[4] = 2637.9202 checkpoints_y[4] = 915.6277 checkpoints_z[4] = 5.7498 checkpoints_x[5] = 2726.8245 checkpoints_y[5] = 1202.2665 checkpoints_z[5] = 5.7422 checkpoints_x[6] = 2726.6975 checkpoints_y[6] = 1502.9668 checkpoints_z[6] = 5.7422 checkpoints_x[7] = 2726.9583 checkpoints_y[7] = 1804.3431 checkpoints_z[7] = 5.7393 checkpoints_x[8] = 2726.5791 checkpoints_y[8] = 2125.7964 checkpoints_z[8] = 5.7269 checkpoints_x[9] = 2705.1716 checkpoints_y[9] = 2405.5667 checkpoints_z[9] = 5.7277 checkpoints_x[10] = 2489.2671 checkpoints_y[10] = 2614.2732 checkpoints_z[10] = 4.1679 checkpoints_x[11] = 2188.4788 checkpoints_y[11] = 2609.6289 checkpoints_z[11] = 5.8164 checkpoints_x[12] = 1898.3093 checkpoints_y[12] = 2529.1553 checkpoints_z[12] = 5.8125 checkpoints_x[13] = 1603.5236 checkpoints_y[13] = 2473.0833 checkpoints_z[13] = 5.8516 checkpoints_x[14] = 1305.1807 checkpoints_y[14] = 2439.1897 checkpoints_z[14] = 5.7422 checkpoints_x[15] = 1208.2319 checkpoints_y[15] = 2154.5139 checkpoints_z[15] = 5.7422 checkpoints_x[16] = 1208.3795 checkpoints_y[16] = 1853.8372 checkpoints_z[16] = 5.7422 checkpoints_x[17] = 1208.3218 checkpoints_y[17] = 1553.0247 checkpoints_z[17] = 5.7422 checkpoints_x[18] = 1208.1263 checkpoints_y[18] = 1252.5565 checkpoints_z[18] = 5.7498 checkpoints_x[19] = 1229.1874 checkpoints_y[19] = 952.9079 checkpoints_z[19] = 5.8125 checkpoints_x[20] = checkpoints_x[0] checkpoints_y[20] = checkpoints_y[0] checkpoints_z[20] = checkpoints_z[0] total_checkpoints = 21 total_racers = 6 racer_model[0] = male01 racer_model[1] = male01 racer_model[2] = male01 racer_model[3] = male01 racer_model[4] = male01 racer_model[5] = male01 racers_car_model[0] = TURISMO racers_car_model[1] = ELEGY racers_car_model[2] = CHEETAH racers_car_model[3] = INFERNUS racers_car_model[4] = ELEGY racers_car_model[5] = TURISMO gosub get_random_racer_models break case 19//23// plane race 1 over LA ////////////////////////////////////////////////////////// checkpoints_x[0] = 1796.9010 checkpoints_y[0] = -2593.3291 checkpoints_z[0] = 12.5982 checkpoints_x[1] = 1596.9150 checkpoints_y[1] = -2592.1233 checkpoints_z[1] = 25.9969 checkpoints_x[2] = 1425.4287 //1397.8796 checkpoints_y[2] = -2549.1069 //-2573.5667 checkpoints_z[2] = 37.8234//36.0608 checkpoints_x[3] = 1280.5555 checkpoints_y[3] = -2394.5862 checkpoints_z[3] = 52.2127 checkpoints_x[4] = 1296.1647 checkpoints_y[4] = -2194.1313 checkpoints_z[4] = 72.3519 checkpoints_x[5] = 1317.0125 checkpoints_y[5] = -1995.0265 checkpoints_z[5] = 77.6570 checkpoints_x[6] = 1385.2157 checkpoints_y[6] = -1807.2498 checkpoints_z[6] = 64.6153 checkpoints_x[7] = 1501.2018 checkpoints_y[7] = -1642.8923 checkpoints_z[7] = 78.2774 checkpoints_x[8] = 1597.7827 checkpoints_y[8] = -1466.8529 checkpoints_z[8] = 87.9007 checkpoints_x[9] = 1621.6930 checkpoints_y[9] = -1267.5903 checkpoints_z[9] = 84.5704 checkpoints_x[10] = 1592.6260 checkpoints_y[10] = -1069.3135 checkpoints_z[10] = 87.8825 checkpoints_x[11] = 1477.0962 checkpoints_y[11] = -905.3071 checkpoints_z[11] = 103.4455 checkpoints_x[12] = 1388.8838 checkpoints_y[12] = -725.4239 checkpoints_z[12] = 125.9394 checkpoints_x[13] = 1320.7153 checkpoints_y[13] = -536.3066 checkpoints_z[13] = 127.7300 checkpoints_x[14] = 1233.9475 checkpoints_y[14] = -356.5205 checkpoints_z[14] = 103.7008 checkpoints_x[15] = 1235.2209 checkpoints_y[15] = -155.8231 checkpoints_z[15] = 83.5000 checkpoints_x[16] = 1362.4542 checkpoints_y[16] = -2.0532 checkpoints_z[16] = 70.1118 checkpoints_x[17] = 1562.0732 checkpoints_y[17] = -27.0897 checkpoints_z[17] = 64.6716 checkpoints_x[18] = 1670.3130 checkpoints_y[18] = -196.5335 checkpoints_z[18] = 77.4671 checkpoints_x[19] = 1698.6969 checkpoints_y[19] = -394.7666 checkpoints_z[19] = 84.5130 checkpoints_x[20] = 1841.2386 checkpoints_y[20] = -535.4985 checkpoints_z[20] = 105.1396 checkpoints_x[21] = 1999.7769 checkpoints_y[21] = -658.8530 checkpoints_z[21] = 125.3019 checkpoints_x[22] = 2117.7710 checkpoints_y[22] = -819.4944 checkpoints_z[22] = 144.8639 checkpoints_x[23] = 2200.1814 checkpoints_y[23] = -1001.2698 checkpoints_z[23] = 129.4889 checkpoints_x[24] = 2265.8049 checkpoints_y[24] = -1184.5841 checkpoints_z[24] = 83.0669 checkpoints_x[25] = 2296.1453 checkpoints_y[25] = -1383.3942 checkpoints_z[25] = 62.1655 checkpoints_x[26] = 2321.6077 checkpoints_y[26] = -1582.0300 checkpoints_z[26] = 63.1144 checkpoints_x[27] = 2400.4419 checkpoints_y[27] = -1766.2267 checkpoints_z[27] = 56.7954 checkpoints_x[28] = 2525.2559 checkpoints_y[28] = -1922.6801 checkpoints_z[28] = 52.2529 checkpoints_x[29] = 2593.7256 checkpoints_y[29] = -2111.7336 checkpoints_z[29] = 53.1139 checkpoints_x[30] = 2575.0493 checkpoints_y[30] = -2313.6313 checkpoints_z[30] = 53.9683 checkpoints_x[31] = 2455.3967 checkpoints_y[31] = -2476.6331 checkpoints_z[31] = 54.8922 checkpoints_x[32] = 2264.0710 checkpoints_y[32] = -2548.5916 checkpoints_z[32] = 55.7578 checkpoints_x[33] = 2065.2854 checkpoints_y[33] = -2571.6355 checkpoints_z[33] = 56.5966 checkpoints_x[34] = 1862.5022 checkpoints_y[34] = -2582.0991 checkpoints_z[34] = 54.6357 total_checkpoints = 35 total_racers = 1 racer_model[0] = male01 racer_model[1] = male01 racer_model[2] = male01 racer_model[3] = male01 racers_car_model[0] = rustler racers_car_model[1] = rustler racers_car_model[2] = rustler racers_car_model[3] = rustler checkpoint_type = CHECKPOINT_TORUS break case 20//18///// plane race 2 over san fran and countryside /////////////////////////////////////////////// checkpoints_x[0] = -1582.6702 checkpoints_y[0] = -89.9953 checkpoints_z[0] = 13.1683 checkpoints_x[1] = -1439.1865 checkpoints_y[1] = 53.2109 checkpoints_z[1] = 30.0 checkpoints_x[2] = -1286.6859 checkpoints_y[2] = 185.0573 checkpoints_z[2] = 32.9885 checkpoints_x[3] = -1091.8765 checkpoints_y[3] = 137.3885 checkpoints_z[3] = 46.7629 checkpoints_x[4] = -1042.1692 checkpoints_y[4] = -59.4087 checkpoints_z[4] = 43.6030 checkpoints_x[5] = -1047.5674 checkpoints_y[5] = -259.0437 checkpoints_z[5] = 23.8409 checkpoints_x[6] = -1126.5594 checkpoints_y[6] = -445.5607 checkpoints_z[6] = 28.0502 checkpoints_x[7] = -1261.2401 checkpoints_y[7] = -598.8228 checkpoints_z[7] = 37.4576 checkpoints_x[8] = -1444.8026 checkpoints_y[8] = -690.5997 checkpoints_z[8] = 52.7263 checkpoints_x[9] = -1649.0076 checkpoints_y[9] = -681.2640 checkpoints_z[9] = 60.8852 checkpoints_x[10] = -1845.5848 checkpoints_y[10] = -636.4395 checkpoints_z[10] = 61.1217 checkpoints_x[11] = -2044.8175 checkpoints_y[11] = -658.4432 checkpoints_z[11] = 71.2804 checkpoints_x[12] = -2206.1648 checkpoints_y[12] = -778.5996 checkpoints_z[12] = 85.9739 checkpoints_x[13] = -2240.9282 checkpoints_y[13] = -976.7443 checkpoints_z[13] = 75.2422 checkpoints_x[14] = -2139.4800 checkpoints_y[14] = -1148.6174 checkpoints_z[14] = 61.3795 checkpoints_x[15] = -2028.6338 checkpoints_y[15] = -1315.7115 checkpoints_z[15] = 40.6530 checkpoints_x[16] = -1884.6228 checkpoints_y[16] = -1459.3368 checkpoints_z[16] = 37.0927 checkpoints_x[17] = -1725.2833 checkpoints_y[17] = -1581.1932 checkpoints_z[17] = 51.3609 checkpoints_x[18] = -1548.5010 checkpoints_y[18] = -1676.2234 checkpoints_z[18] = 63.2502 checkpoints_x[19] = -1368.6127 checkpoints_y[19] = -1769.1973 checkpoints_z[19] = 52.0990 checkpoints_x[20] = -1327.0420 checkpoints_y[20] = -1980.8834 checkpoints_z[20] = 35.4768 checkpoints_x[21] = -1462.6591 checkpoints_y[21] = -2110.3398 checkpoints_z[21] = 22.6174 checkpoints_x[22] = -1551.0675 checkpoints_y[22] = -2287.2764 checkpoints_z[22] = 56.7071 checkpoints_x[23] = -1624.6454 checkpoints_y[23] = -2464.3018 checkpoints_z[23] = 115.5442 checkpoints_x[24] = -1735.0121 checkpoints_y[24] = -2633.0918 checkpoints_z[24] = 101.7228 checkpoints_x[25] = -1673.6176 checkpoints_y[25] = -2817.3203 checkpoints_z[25] = 50.4920 checkpoints_x[26] = -1529.3984 checkpoints_y[26] = -2958.8643 checkpoints_z[26] = 35.2493 checkpoints_x[27] = -1331.8695 checkpoints_y[27] = -3016.8154 checkpoints_z[27] = 36.5563 checkpoints_x[28] = -1140.5167 checkpoints_y[28] = -2957.8384 checkpoints_z[28] = 35.4633 checkpoints_x[29] = -1133.4834 checkpoints_y[29] = -2757.1152 checkpoints_z[29] = 30.2641 checkpoints_x[30] = -1219.5931 checkpoints_y[30] = -2575.6001 checkpoints_z[30] = 35.8018 checkpoints_x[31] = -1227.1932 checkpoints_y[31] = -2375.0991 checkpoints_z[31] = 31.7209 checkpoints_x[32] = -1172.7458 checkpoints_y[32] = -2182.8044 checkpoints_z[32] = 45.2393 checkpoints_x[33] = -1144.3121 checkpoints_y[33] = -1988.0176 checkpoints_z[33] = 83.1497 checkpoints_x[34] = -1021.3864 checkpoints_y[34] = -1832.8214 checkpoints_z[34] = 115.2484 checkpoints_x[35] = -943.5054 checkpoints_y[35] = -1647.9922 checkpoints_z[35] = 133.3276 checkpoints_x[36] = -900.7032 checkpoints_y[36] = -1450.5847 checkpoints_z[36] = 142.0757 checkpoints_x[37] = -884.4996 checkpoints_y[37] = -1249.6418 checkpoints_z[37] = 148.1781 checkpoints_x[38] = -880.2889 checkpoints_y[38] = -1048.9901 checkpoints_z[38] = 158.8745 checkpoints_x[39] = -936.6008 checkpoints_y[39] = -855.3414 checkpoints_z[39] = 160.1570 checkpoints_x[40] = -972.9082 checkpoints_y[40] = -660.9503 checkpoints_z[40] = 116.3043 checkpoints_x[41] = -980.3859 checkpoints_y[41] = -464.2646 checkpoints_z[41] = 79.1644 checkpoints_x[42] = -818.3880 checkpoints_y[42] = -348.3954 checkpoints_z[42] = 51.4388 checkpoints_x[43] = -617.8265 checkpoints_y[43] = -330.2328 checkpoints_z[43] = 37.1987 checkpoints_x[44] = -415.4925 checkpoints_y[44] = -339.8519 checkpoints_z[44] = 28.2761 checkpoints_x[45] = -248.3391 checkpoints_y[45] = -451.8987 checkpoints_z[45] = 18.5819 checkpoints_x[46] = -192.9961 checkpoints_y[46] = -643.9890 checkpoints_z[46] = 8.8890 checkpoints_x[47] = -128.7125 checkpoints_y[47] = -835.6478 checkpoints_z[47] = 24.9195 checkpoints_x[48] = 63.3296 checkpoints_y[48] = -892.0873 checkpoints_z[48] = 40.4431 checkpoints_x[49] = 236.1952 checkpoints_y[49] = -791.0125 checkpoints_z[49] = 46.7307 checkpoints_x[50] = 298.5167 checkpoints_y[50] = -600.2706 checkpoints_z[50] = 53.5437 checkpoints_x[51] = 326.4258 checkpoints_y[51] = -400.9587 checkpoints_z[51] = 50.4641 checkpoints_x[52] = 308.5928 checkpoints_y[52] = -201.9229 checkpoints_z[52] = 40.3219 checkpoints_x[53] = 244.4628 checkpoints_y[53] = -8.2110 checkpoints_z[53] = 31.0744 checkpoints_x[54] = 129.2121 checkpoints_y[54] = 155.3022 checkpoints_z[54] = 27.6231 checkpoints_x[55] = -37.7018 checkpoints_y[55] = 268.3331 checkpoints_z[55] = 26.3544 checkpoints_x[56] = -224.3873 checkpoints_y[56] = 341.0904 checkpoints_z[56] = 28.1078 checkpoints_x[57] = -420.1607 checkpoints_y[57] = 382.1896 checkpoints_z[57] = 29.8681 checkpoints_x[58] = -622.4773 checkpoints_y[58] = 381.9150 checkpoints_z[58] = 31.6354 checkpoints_x[59] = -822.8240 checkpoints_y[59] = 370.0051 checkpoints_z[59] = 33.4142 checkpoints_x[60] = -1012.3494 checkpoints_y[60] = 300.3856 checkpoints_z[60] = 35.7468 checkpoints_x[61] = -1193.1001 checkpoints_y[61] = 214.7394 checkpoints_z[61] = 38.0629 total_checkpoints = 62 total_racers = 1 racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racers_car_model[0] = STUNT racers_car_model[1] = STUNT racers_car_model[2] = STUNT racers_car_model[3] = STUNT checkpoint_type = CHECKPOINT_TORUS break case 21//16// plane race 3 - over desert //////////////////////////////////////////////////// checkpoints_x[0] = 366.9820 checkpoints_y[0] = 2502.5947 checkpoints_z[0] = 15.5571 checkpoints_x[1] = 116.6520 checkpoints_y[1] = 2502.9016 checkpoints_z[1] = 47.5682 checkpoints_x[2] = -133.6242 checkpoints_y[2] = 2524.3916 checkpoints_z[2] = 55.1281 checkpoints_x[3] = -377.8474 checkpoints_y[3] = 2588.0684 checkpoints_z[3] = 67.6866 checkpoints_x[4] = -604.1302 checkpoints_y[4] = 2694.6387 checkpoints_z[4] = 84.7931 checkpoints_x[5] = -838.6850 checkpoints_y[5] = 2779.9014 checkpoints_z[5] = 69.2036 checkpoints_x[6] = -1045.6289 checkpoints_y[6] = 2639.2791 checkpoints_z[6] = 69.0984 checkpoints_x[7] = -984.3267 checkpoints_y[7] = 2395.5078 checkpoints_z[7] = 64.5187 checkpoints_x[8] = -873.4733 checkpoints_y[8] = 2171.1863 checkpoints_z[8] = 64.5549 checkpoints_x[9] = -770.1340 checkpoints_y[9] = 1943.2484 checkpoints_z[9] = 70.9270 checkpoints_x[10] = -653.4092 checkpoints_y[10] = 1720.4705 checkpoints_z[10] = 47.6015 checkpoints_x[11] = -578.5898 checkpoints_y[11] = 1481.9722 checkpoints_z[11] = 21.5084 checkpoints_x[12] = -521.8337 checkpoints_y[12] = 1238.4370 checkpoints_z[12] = 11.6736 checkpoints_x[13] = -469.9443 checkpoints_y[13] = 995.7210 checkpoints_z[13] = 51.4066 checkpoints_x[14] = -525.4200 checkpoints_y[14] = 750.7462 checkpoints_z[14] = 44.2215 checkpoints_x[15] = -664.0441 checkpoints_y[15] = 541.0659 checkpoints_z[15] = 15.9243 checkpoints_x[16] = -914.7918 checkpoints_y[16] = 536.2426 checkpoints_z[16] = 11.8040 checkpoints_x[17] = -1131.9183 checkpoints_y[17] = 661.8135 checkpoints_z[17] = 13.6564 checkpoints_x[18] = -1309.8328 checkpoints_y[18] = 839.3160 checkpoints_z[18] = 10.7039 checkpoints_x[19] = -1449.3723 checkpoints_y[19] = 1045.7767 checkpoints_z[19] = 31.9947 checkpoints_x[20] = -1603.1224 checkpoints_y[20] = 1243.2097 checkpoints_z[20] = 38.6648 checkpoints_x[21] = -1813.1013 checkpoints_y[21] = 1379.4404 checkpoints_z[21] = 28.4044 checkpoints_x[22] = -2061.4885 checkpoints_y[22] = 1418.5486 checkpoints_z[22] = 22.0099 checkpoints_x[23] = -2312.4692 checkpoints_y[23] = 1430.6986 checkpoints_z[23] = 42.3744 checkpoints_x[24] = -2522.7451 checkpoints_y[24] = 1564.1936 checkpoints_z[24] = 75.9034 checkpoints_x[25] = -2689.2380 checkpoints_y[25] = 1753.7452 checkpoints_z[25] = 99.5865 checkpoints_x[26] = -2759.3706 checkpoints_y[26] = 1994.2650 checkpoints_z[26] = 110.8744 checkpoints_x[27] = -2682.7717 checkpoints_y[27] = 2233.0974 checkpoints_z[27] = 113.4608 checkpoints_x[28] = -2493.9070 checkpoints_y[28] = 2397.5063 checkpoints_z[28] = 102.0156 checkpoints_x[29] = -2245.1086 checkpoints_y[29] = 2418.7727 checkpoints_z[29] = 83.5877 checkpoints_x[30] = -1994.6051 checkpoints_y[30] = 2407.9421 checkpoints_z[30] = 87.4376 checkpoints_x[31] = -1751.4714 checkpoints_y[31] = 2349.7395 checkpoints_z[31] = 90.2881 checkpoints_x[32] = -1535.0994 checkpoints_y[32] = 2217.6560 checkpoints_z[32] = 75.7349 checkpoints_x[33] = -1305.3025 checkpoints_y[33] = 2118.7158 checkpoints_z[33] = 74.7752 checkpoints_x[34] = -1064.8070 checkpoints_y[34] = 2187.7681 checkpoints_z[34] = 66.2415 checkpoints_x[35] = -814.3556 checkpoints_y[35] = 2195.8723 checkpoints_z[35] = 56.1521 checkpoints_x[36] = -563.2742 checkpoints_y[36] = 2203.3303 checkpoints_z[36] = 60.9129 checkpoints_x[37] = -313.3741 checkpoints_y[37] = 2229.2600 checkpoints_z[37] = 73.2015 checkpoints_x[38] = -66.3647 checkpoints_y[38] = 2178.0820 checkpoints_z[38] = 71.9294 checkpoints_x[39] = 186.4198 checkpoints_y[39] = 2211.2131 checkpoints_z[39] = 71.6732 checkpoints_x[40] = 390.8383 checkpoints_y[40] = 2356.5137 checkpoints_z[40] = 65.1402 checkpoints_x[41] = 639.1594 checkpoints_y[41] = 2385.2598 checkpoints_z[41] = 47.4816 checkpoints_x[42] = 857.9940 checkpoints_y[42] = 2510.1575 checkpoints_z[42] = 50.2583 checkpoints_x[43] = 929.9869 checkpoints_y[43] = 2748.3516 checkpoints_z[43] = 77.8011 checkpoints_x[44] = 760.5828 checkpoints_y[44] = 2935.7300 checkpoints_z[44] = 91.5673 checkpoints_x[45] = 512.0109 checkpoints_y[45] = 2901.7397 checkpoints_z[45] = 93.8596 checkpoints_x[46] = 309.8430 checkpoints_y[46] = 2752.8918 checkpoints_z[46] = 93.5908 checkpoints_x[47] = 153.0242 checkpoints_y[47] = 2560.3210 checkpoints_z[47] = 64.3547 checkpoints_x[48] = 18.2657 checkpoints_y[48] = 2347.9043 checkpoints_z[48] = 66.4087 checkpoints_x[49] = -99.4455 checkpoints_y[49] = 2126.3430 checkpoints_z[49] = 75.4819 checkpoints_x[50] = -257.6325 checkpoints_y[50] = 1931.1837 checkpoints_z[50] = 75.4922 checkpoints_x[51] = -392.7389 checkpoints_y[51] = 1720.5944 checkpoints_z[51] = 94.1061 checkpoints_x[52] = -499.7809 checkpoints_y[52] = 1492.5453 checkpoints_z[52] = 58.1720 checkpoints_x[53] = -687.7847 checkpoints_y[53] = 1327.0256 checkpoints_z[53] = 45.0028 checkpoints_x[54] = -881.8704 checkpoints_y[54] = 1169.7690 checkpoints_z[54] = 68.6343 checkpoints_x[55] = -1075.9196 checkpoints_y[55] = 1008.1553 checkpoints_z[55] = 61.9286 checkpoints_x[56] = -1272.9574 checkpoints_y[56] = 852.6403 checkpoints_z[56] = 61.1137 checkpoints_x[57] = -1457.5387 checkpoints_y[57] = 680.1183 checkpoints_z[57] = 69.2464 checkpoints_x[58] = -1634.6477 checkpoints_y[58] = 496.5454 checkpoints_z[58] = 79.7593 checkpoints_x[59] = -1839.8145 checkpoints_y[59] = 342.0907 checkpoints_z[59] = 77.0974 checkpoints_x[60] = -2063.7295 checkpoints_y[60] = 218.3637 checkpoints_z[60] = 74.2748 checkpoints_x[61] = -2305.2566 checkpoints_y[61] = 145.8570 checkpoints_z[61] = 72.5908 checkpoints_x[62] = -2554.3037 checkpoints_y[62] = 126.6046 checkpoints_z[62] = 96.9355 checkpoints_x[63] = -2745.5088 checkpoints_y[63] = -33.5993 checkpoints_z[63] = 80.1740 checkpoints_x[64] = -2863.9419 checkpoints_y[64] = -255.5460 checkpoints_z[64] = 62.7643 checkpoints_x[65] = -2912.2810 checkpoints_y[65] = -500.7706 checkpoints_z[65] = 51.8291 checkpoints_x[66] = -2947.3884 checkpoints_y[66] = -759.2774 checkpoints_z[66] = 44.0041 checkpoints_x[67] = -2962.4233 checkpoints_y[67] = -1011.3326 checkpoints_z[67] = 42.2517 checkpoints_x[68] = -2955.5059 checkpoints_y[68] = -1276.0228 checkpoints_z[68] = 45.3020 checkpoints_x[69] = -3000.9043 checkpoints_y[69] = -1528.5626 checkpoints_z[69] = 51.0040 total_checkpoints = 70 total_racers = 1 racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racers_car_model[0] = hydra racers_car_model[1] = hydra racers_car_model[2] = hydra racers_car_model[3] = hydra checkpoint_type = CHECKPOINT_TORUS break case 22//// heli race 1 //////////////////////////////////////////////////////// checkpoints_x[0] = 381.9952 //365.2745 checkpoints_y[0] = 2542.0879 //2536.9697 checkpoints_z[0] = 15.6876//15.9518 checkpoints_x[1] = 304.6997 checkpoints_y[1] = 2547.0571 checkpoints_z[1] = 37.9750 checkpoints_x[2] = -97.4654 checkpoints_y[2] = 2554.8413 checkpoints_z[2] = 32.4746 checkpoints_x[3] = -102.6455 checkpoints_y[3] = 2699.2356 checkpoints_z[3] = 63.5945 checkpoints_x[4] = -221.9480 checkpoints_y[4] = 2718.0803 checkpoints_z[4] = 82.3850 checkpoints_x[5] = -418.3279 checkpoints_y[5] = 2691.0811 checkpoints_z[5] = 78.5077 checkpoints_x[6] = -392.2611 checkpoints_y[6] = 2492.1931 checkpoints_z[6] = 84.2570 checkpoints_x[7] = -360.1944 checkpoints_y[7] = 2294.6384 checkpoints_z[7] = 79.3440 checkpoints_x[8] = -238.1485 checkpoints_y[8] = 2230.0068 checkpoints_z[8] = 81.9684 checkpoints_x[9] = -287.1143 checkpoints_y[9] = 2091.0303 checkpoints_z[9] = 70.2663 checkpoints_x[10] = -481.0875 checkpoints_y[10] = 2051.7400 checkpoints_z[10] = 76.2466 checkpoints_x[11] = -665.1192 checkpoints_y[11] = 2131.2520 checkpoints_z[11] = 77.2696 checkpoints_x[12] = -845.4529 checkpoints_y[12] = 2218.8611 checkpoints_z[12] = 80.0327 checkpoints_x[13] = -1044.8663 checkpoints_y[13] = 2207.6155 checkpoints_z[13] = 67.0078 checkpoints_x[14] = -1234.2344 checkpoints_y[14] = 2142.3931 checkpoints_z[14] = 66.1648 checkpoints_x[15] = -1424.9308 checkpoints_y[15] = 2205.6995 checkpoints_z[15] = 70.8862 checkpoints_x[16] = -1571.2373//-1556.4469 checkpoints_y[16] = 2247.7661 //2356.8413 checkpoints_z[16] = 65.1073 //67.7106 checkpoints_x[17] = -1745.6370 checkpoints_y[17] = 2292.5112 checkpoints_z[17] = 49.3695 checkpoints_x[18] = -1945.6023 checkpoints_y[18] = 2285.9128 checkpoints_z[18] = 44.2433 checkpoints_x[19] = -1953.8809 checkpoints_y[19] = 2484.8774 checkpoints_z[19] = 63.2602 checkpoints_x[20] = -1895.0948 checkpoints_y[20] = 2633.0344 checkpoints_z[20] = 74.4549 checkpoints_x[21] = -1706.8728 checkpoints_y[21] = 2703.2317 checkpoints_z[21] = 72.8798 checkpoints_x[22] = -1505.7236 checkpoints_y[22] = 2721.0344 checkpoints_z[22] = 69.9706 checkpoints_x[23] = -1305.5951 checkpoints_y[23] = 2708.3213 checkpoints_z[23] = 66.4619 checkpoints_x[24] = -1105.8900 checkpoints_y[24] = 2731.6108 checkpoints_z[24] = 62.9933 checkpoints_x[25] = -905.1519 checkpoints_y[25] = 2728.8303 checkpoints_z[25] = 64.0124 checkpoints_x[26] = -704.1036 checkpoints_y[26] = 2733.8982 checkpoints_z[26] = 66.2347 total_checkpoints = 27 total_racers = 1 racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racers_car_model[0] = MAVERICK racers_car_model[1] = MAVERICK racers_car_model[2] = MAVERICK racers_car_model[3] = MAVERICK checkpoint_type = CHECKPOINT_TORUS break case 23//// heli race 2 //////////////////////////////////////////////////////// checkpoints_x[0] = -1962.8712 checkpoints_y[0] = 628.0812 checkpoints_z[0] = 150.2844 checkpoints_x[1] = -1848.3406 checkpoints_y[1] = 531.9294 checkpoints_z[1] = 86.1743 checkpoints_x[2] = -1827.9133 checkpoints_y[2] = 399.3668 checkpoints_z[2] = 29.9100 checkpoints_x[3] = -1751.3608 checkpoints_y[3] = 326.9781 checkpoints_z[3] = 25.4958 checkpoints_x[4] = -1647.9576 checkpoints_y[4] = 412.8291 checkpoints_z[4] = 26.6578 checkpoints_x[5] = -1560.5126 checkpoints_y[5] = 532.7433 checkpoints_z[5] = 18.6913 checkpoints_x[6] = -1572.1968 checkpoints_y[6] = 638.3369 checkpoints_z[6] = 25.3806 checkpoints_x[7] = -1700.5547 checkpoints_y[7] = 706.7762 checkpoints_z[7] = 53.3757 checkpoints_x[8] = -1715.5071 checkpoints_y[8] = 777.6501 checkpoints_z[8] = 45.9312 checkpoints_x[9] = -1715.9783 checkpoints_y[9] = 978.3165 checkpoints_z[9] = 51.9890 checkpoints_x[10] = -1714.9581 checkpoints_y[10] = 1178.5619 checkpoints_z[10] = 54.9734 checkpoints_x[11] = -1912.9225 checkpoints_y[11] = 1146.2551 checkpoints_z[11] = 56.3473 checkpoints_x[12] = -2003.2480 checkpoints_y[12] = 982.3228 checkpoints_z[12] = 58.8190 checkpoints_x[13] = -2006.1685 checkpoints_y[13] = 810.2207 checkpoints_z[13] = 54.1756 checkpoints_x[14] = -1959.2341 checkpoints_y[14] = 713.3063 checkpoints_z[14] = 75.2571 checkpoints_x[15] = -1793.0067 checkpoints_y[15] = 730.7606 checkpoints_z[15] = 44.6388 checkpoints_x[16] = -1593.7314 checkpoints_y[16] = 732.4928 checkpoints_z[16] = 20.5721 checkpoints_x[17] = -1533.4238 checkpoints_y[17] = 923.6081 checkpoints_z[17] = 29.4493 checkpoints_x[18] = -1489.1721 checkpoints_y[18] = 1118.7367 checkpoints_z[18] = 17.2211 checkpoints_x[19] = -1605.0448 checkpoints_y[19] = 1284.0444 checkpoints_z[19] = 27.5543 checkpoints_x[20] = -1787.9211 checkpoints_y[20] = 1365.8104 checkpoints_z[20] = 32.2595 checkpoints_x[21] = -1986.4290 checkpoints_y[21] = 1319.3376 checkpoints_z[21] = 23.0384 checkpoints_x[22] = -2185.9966 checkpoints_y[22] = 1345.1117 checkpoints_z[22] = 19.4206 checkpoints_x[23] = -2384.5986 checkpoints_y[23] = 1380.5878 checkpoints_z[23] = 17.9485 checkpoints_x[24] = -2537.7593 checkpoints_y[24] = 1369.6406 checkpoints_z[24] = 23.8562 checkpoints_x[25] = -2719.3149 checkpoints_y[25] = 1345.6749 checkpoints_z[25] = 32.2039 checkpoints_x[26] = -2875.1421 checkpoints_y[26] = 1245.7825 checkpoints_z[26] = 20.7763 total_checkpoints = 27 total_racers = 1 racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racers_car_model[0] = vcnmav racers_car_model[1] = vcnmav racers_car_model[2] = vcnmav racers_car_model[3] = vcnmav checkpoint_type = CHECKPOINT_TORUS break case 24//// heli race 3 //////////////////////////////////////////////////////// checkpoints_x[0] = 1765.6085 checkpoints_y[0] = -2285.9114 checkpoints_z[0] = 25.9621 checkpoints_x[1] = 1764.2942 checkpoints_y[1] = -2084.3706 checkpoints_z[1] = 26.0431 checkpoints_x[2] = 1649.4017 checkpoints_y[2] = -1920.2314 checkpoints_z[2] = 40.6173 checkpoints_x[3] = 1552.0238 checkpoints_y[3] = -1745.2733 checkpoints_z[3] = 30.0462 checkpoints_x[4] = 1419.0309 checkpoints_y[4] = -1595.6182 checkpoints_z[4] = 25.4285 checkpoints_x[5] = 1402.0891 checkpoints_y[5] = -1441.6224 checkpoints_z[5] = 18.2271 checkpoints_x[6] = 1545.3347 checkpoints_y[6] = -1431.1941 checkpoints_z[6] = 36.4370 checkpoints_x[7] = 1653.4458 checkpoints_y[7] = -1305.8412 checkpoints_z[7] = 49.6078 checkpoints_x[8] = 1786.0935 checkpoints_y[8] = -1276.7664 checkpoints_z[8] = 22.6321 checkpoints_x[9] = 1901.0399 checkpoints_y[9] = -1221.9493 checkpoints_z[9] = 34.6990 checkpoints_x[10] = 1848.2241 checkpoints_y[10] = -1097.6525 checkpoints_z[10] = 46.0898 checkpoints_x[11] = 1649.3767 checkpoints_y[11] = -1085.2963 checkpoints_z[11] = 36.7768 checkpoints_x[12] = 1487.2054 checkpoints_y[12] = -970.0334 checkpoints_z[12] = 60.1281 checkpoints_x[13] = 1304.2201 checkpoints_y[13] = -1038.9294 checkpoints_z[13] = 39.8547 checkpoints_x[14] = 1215.7979 checkpoints_y[14] = -1218.8619 checkpoints_z[14] = 27.9230 checkpoints_x[15] = 1302.6127 checkpoints_y[15] = -1399.1266 checkpoints_z[15] = 26.3812 checkpoints_x[16] = 1437.0153 checkpoints_y[16] = -1321.4310 checkpoints_z[16] = 45.3960 checkpoints_x[17] = 1609.0900 checkpoints_y[17] = -1299.4969 checkpoints_z[17] = 25.0714 checkpoints_x[18] = 1791.4205 checkpoints_y[18] = -1381.3638 checkpoints_z[18] = 35.1700 checkpoints_x[19] = 1827.0215 checkpoints_y[19] = -1567.2794 checkpoints_z[19] = 22.9243 checkpoints_x[20] = 1628.1960 checkpoints_y[20] = -1600.5996 checkpoints_z[20] = 38.8226 checkpoints_x[21] = 1450.9086 checkpoints_y[21] = -1694.8391 checkpoints_z[21] = 25.2192 checkpoints_x[22] = 1389.8123 checkpoints_y[22] = -1852.9839 checkpoints_z[22] = 24.9970 checkpoints_x[23] = 1206.6090 checkpoints_y[23] = -1933.7227 checkpoints_z[23] = 57.1028 checkpoints_x[24] = 1053.4609 checkpoints_y[24] = -2063.9326 checkpoints_z[24] = 70.7254 checkpoints_x[25] = 1048.6985 checkpoints_y[25] = -2265.5034 checkpoints_z[25] = 47.2394 checkpoints_x[26] = 1224.4021 checkpoints_y[26] = -2359.4944 checkpoints_z[26] = 28.5888 checkpoints_x[27] = 1425.6099 checkpoints_y[27] = -2360.0474 checkpoints_z[27] = 28.3338 total_checkpoints = 28 total_racers = 1 racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racers_car_model[0] = hunter racers_car_model[1] = hunter racers_car_model[2] = hunter racers_car_model[3] = hunter checkpoint_type = CHECKPOINT_TORUS break case NASCAR_RACE// NASCAR track - oval ring //////////////////////////////////////////////////////// //checkpoints_x[0] = -1380.0 //checkpoints_y[0] = 914.5 //checkpoints_z[0] = 1040.2 // //checkpoints_x[1] = -1351.0 //checkpoints_y[1] = 914.5 //checkpoints_z[1] = 1040.2 // //checkpoints_x[2] = -1257.9135 //checkpoints_y[2] = 1003.5409 //checkpoints_z[2] = 1039.6945 // //checkpoints_x[3] = -1320.4248 //checkpoints_y[3] = 1067.4575 //checkpoints_z[3] = 1039.4650 // //checkpoints_x[4] = -1475.5144 //checkpoints_y[4] = 1067.5107 //checkpoints_z[4] = 1039.3875 // //checkpoints_x[5] = -1520.7008 //checkpoints_y[5] = 952.5261 //checkpoints_z[5] = 1039.5588 // //checkpoints_x[6] = checkpoints_x[0] //checkpoints_y[6] = checkpoints_y[0] //checkpoints_z[6] = checkpoints_z[0] // //lvar_float respawn_x respawn_y respawn_z respawn_h //respawn_x = -1410.4200 //respawn_y = 895.6823 //respawn_z = 1034.5179 //respawn_h = 292.4636 // //total_checkpoints = 7 // //interior_race = 15 checkpoints_x[0] = -1398.3552 checkpoints_y[0] = -197.2079 checkpoints_z[0] = 1043.1188 checkpoints_x[1] = -1398.9879 checkpoints_y[1] = -188.7892 checkpoints_z[1] = 1043.2023 checkpoints_x[2] = -1465.9392 checkpoints_y[2] = -134.0836 checkpoints_z[2] = 1046.0107 checkpoints_x[3] = -1530.1384 checkpoints_y[3] = -193.3988 checkpoints_z[3] = 1050.7562 checkpoints_x[4] = -1415.6857 checkpoints_y[4] = -274.1765 checkpoints_z[4] = 1051.1486 checkpoints_x[5] = -1305.1776 checkpoints_y[5] = -143.5283 checkpoints_z[5] = 1050.1254 checkpoints_x[6] = -1302.7737 checkpoints_y[6] = -268.6358 checkpoints_z[6] = 1048.4873 checkpoints_x[7] = checkpoints_x[0] checkpoints_y[7] = checkpoints_y[0] checkpoints_z[7] = checkpoints_z[0] lvar_float respawn_x respawn_y respawn_z respawn_h respawn_x = -1406.3274 respawn_y = -265.7914 respawn_z = 1042.6562 respawn_h = 346.3297 total_checkpoints = 8 interior_race = 7 total_laps = 6 //12 Reduced for 8-Track on mobile total_racers = 8 // 12 racer_model[0] = MALE01 racer_model[1] = MALE01 racer_model[2] = MALE01 racer_model[3] = MALE01 racer_model[4] = MALE01 racer_model[5] = MALE01 racer_model[6] = MALE01 racer_model[7] = MALE01 racer_model[8] = MALE01 racer_model[9] = MALE01 racer_model[10] = MALE01 racer_model[11] = MALE01 racer_model[12] = MALE01 racer_model[13] = MALE01 racer_model[14] = MALE01 racer_model[15] = MALE01 racers_car_model[0] = HOTRINB racers_car_model[1] = HOTRINA racers_car_model[2] = HOTRING racers_car_model[3] = HOTRINB racers_car_model[4] = HOTRINA racers_car_model[5] = HOTRING racers_car_model[6] = HOTRINA racers_car_model[7] = HOTRING racers_car_model[8] = HOTRINB racers_car_model[9] = HOTRING racers_car_model[10] = HOTRINB racers_car_model[11] = HOTRINB racers_car_model[12] = HOTRING racers_car_model[13] = HOTRINA racers_car_model[14] = HOTRING racers_car_model[15] = HOTRINA break case DIRTBIKE_STADIUM// dirtbike stadium race ////////////////////////////////////////////////////////// //checkpoints_x[0] = -1384.8257 //checkpoints_y[0] = -601.2573 //checkpoints_z[0] = 1052.9121 // //checkpoints_x[1] = -1466.6851 //checkpoints_y[1] = -601.0947 //checkpoints_z[1] = 1054.7152 // //checkpoints_x[2] = -1523.3116 //checkpoints_y[2] = -638.0695 //checkpoints_z[2] = 1050.2198 // //checkpoints_x[3] = -1500.4653 //checkpoints_y[3] = -720.0493 //checkpoints_z[3] = 1049.7407 // //checkpoints_x[4] = -1387.4237 //checkpoints_y[4] = -740.8824 //checkpoints_z[4] = 1049.7665 // //checkpoints_x[5] = -1309.2252 //checkpoints_y[5] = -722.5314 //checkpoints_z[5] = 1049.8013 // //checkpoints_x[6] = -1377.7024 //checkpoints_y[6] = -672.3581 //checkpoints_z[6] = 1051.7253 // //checkpoints_x[7] = -1494.4806 //checkpoints_y[7] = -640.9672 //checkpoints_z[7] = 1050.8016 // //checkpoints_x[8] = -1447.4924 //checkpoints_y[8] = -680.9002 //checkpoints_z[8] = 1048.7092 // //checkpoints_x[9] = -1388.9855 //checkpoints_y[9] = -722.5293 //checkpoints_z[9] = 1051.4194 // //checkpoints_x[10] = -1370.9406 //checkpoints_y[10] = -690.9001 //checkpoints_z[10] = 1050.6930 // //checkpoints_x[11] = -1401.2961 //checkpoints_y[11] = -636.0718 //checkpoints_z[11] = 1046.9365 // //checkpoints_x[12] = -1309.1252 //checkpoints_y[12] = -646.6835 //checkpoints_z[12] = 1052.2255 // //checkpoints_x[13] = checkpoints_x[0] //checkpoints_y[13] = checkpoints_y[0] //checkpoints_z[13] = checkpoints_z[0] // //respawn_x = -1344.1630 //respawn_y = -598.8836 //respawn_z = 1051.8291 //respawn_h = 103.3822 // //total_checkpoints = 14 checkpoints_x[0] = -1354.3584 checkpoints_y[0] = -590.5628 checkpoints_z[0] = 1055.4529 checkpoints_x[1] = -1431.1766 checkpoints_y[1] = -588.3124 checkpoints_z[1] = 1054.5120 checkpoints_x[2] = -1516.8740 checkpoints_y[2] = -635.0942 checkpoints_z[2] = 1050.2751 checkpoints_x[3] = -1500.6779 checkpoints_y[3] = -719.0175 checkpoints_z[3] = 1051.6433 checkpoints_x[4] = -1387.5020 checkpoints_y[4] = -743.1501 checkpoints_z[4] = 1051.0165 checkpoints_x[5] = -1295.5396 checkpoints_y[5] = -705.3506 checkpoints_z[5] = 1055.2552 checkpoints_x[6] = -1365.3123 checkpoints_y[6] = -666.0998 checkpoints_z[6] = 1055.0581 checkpoints_x[7] = -1486.5000 checkpoints_y[7] = -636.4586 checkpoints_z[7] = 1052.2252 checkpoints_x[8] = -1447.8599 checkpoints_y[8] = -690.3426 checkpoints_z[8] = 1052.8342 checkpoints_x[9] = -1389.9077 checkpoints_y[9] = -720.9943 checkpoints_z[9] = 1055.1191 checkpoints_x[10] = -1370.6849 checkpoints_y[10] = -687.8977 checkpoints_z[10] = 1053.7834 checkpoints_x[11] = -1399.1357 checkpoints_y[11] = -635.8359 checkpoints_z[11] = 1051.0432 checkpoints_x[12] = -1308.6388 checkpoints_y[12] = -649.4201 checkpoints_z[12] = 1054.9724 checkpoints_x[13] = checkpoints_x[0] checkpoints_y[13] = checkpoints_y[0] checkpoints_z[13] = checkpoints_z[0] respawn_x = -1344.1630 respawn_y = -598.8836 respawn_z = 1051.8291 respawn_h = 103.3822 total_checkpoints = 14 interior_race = 4 total_laps = 4 //6 reduced for 'Dirt Track' on mobile total_racers = 8 // 12 racer_model[0] = WMYCR racer_model[1] = DNMOLC2 racer_model[2] = MALE01 racer_model[3] = VWMYCR racer_model[4] = OMYST racer_model[5] = DWMYLC1 racer_model[6] = CWFYFR1 racer_model[7] = SWMYCR racer_model[8] = MALE01 racer_model[9] = WMYCR racer_model[10] = DWMYLC1 racer_model[11] = MALE01 racer_model[12] = MALE01 racer_model[13] = MALE01 racer_model[14] = MALE01 racer_model[15] = MALE01 racers_car_model[0] = sanchez racers_car_model[1] = sanchez racers_car_model[2] = sanchez racers_car_model[3] = sanchez racers_car_model[4] = sanchez racers_car_model[5] = sanchez racers_car_model[6] = sanchez racers_car_model[7] = sanchez racers_car_model[8] = sanchez racers_car_model[9] = sanchez racers_car_model[10] = sanchez racers_car_model[11] = sanchez racers_car_model[12] = sanchez racers_car_model[13] = sanchez racers_car_model[14] = sanchez racers_car_model[15] = sanchez break endswitch return race13_special:///////// Kev's Bolt on ;) /////////////////////////////// LVAR_INT race_event_flag[2] special_car[2] special_char[2] task_state test_jmp IF race_event_flag[0] = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -148.2144 87.3396 2.1234 280.0 280.0 30.0 FALSE race_event_flag[0] = 1 ENDIF ENDIF IF race_event_flag[0] = 1 race_event_flag[0] = 2 REQUEST_MODEL COMBINE REQUEST_MODEL VHMYELV ENDIF IF race_event_flag[0] = 2 IF HAS_MODEL_LOADED COMBINE AND HAS_MODEL_LOADED VHMYELV race_event_flag[0] = 3 CREATE_CAR COMBINE -128.2144 80.3396 2.1234 special_car[0] SET_CAR_HEADING special_car[0] 250.5799 CREATE_CHAR_INSIDE_CAR special_car[0] PEDTYPE_CIVMALE VHMYELV special_char[0] MARK_MODEL_AS_NO_LONGER_NEEDED COMBINE MARK_MODEL_AS_NO_LONGER_NEEDED VHMYELV FLUSH_ROUTE EXTEND_ROUTE -95.8304 68.2700 3.4764 EXTEND_ROUTE -77.3806 70.3096 3.5478 TASK_DRIVE_POINT_ROUTE_ADVANCED special_char[0] special_car[0] 7.5 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF IF race_event_flag[0] = 3 IF NOT IS_CHAR_DEAD special_char[0] GET_SCRIPT_TASK_STATUS special_char[0] TASK_DRIVE_POINT_ROUTE_ADVANCED task_state IF task_state = FINISHED_TASK race_event_flag[0] = 4 IF NOT IS_CAR_DEAD special_car[0] MARK_CAR_AS_NO_LONGER_NEEDED special_car[0] ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED special_char[0] ENDIF ENDIF ENDIF IF race_event_flag[1] = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -542.1076 230.7356 11.6475 320.0 320.0 30.0 FALSE race_event_flag[1] = 1 ENDIF ENDIF IF race_event_flag[1] = 1 race_event_flag[1] = 2 REQUEST_MODEL WALTON REQUEST_MODEL VHMYELV ENDIF IF race_event_flag[1] = 2 IF HAS_MODEL_LOADED WALTON AND HAS_MODEL_LOADED VHMYELV race_event_flag[1] = 3 CREATE_CAR WALTON -542.1076 230.7356 11.6475 special_car[1] SET_CAR_HEADING special_car[1] 262.8685 CREATE_CHAR_INSIDE_CAR special_car[1] PEDTYPE_CIVMALE VHMYELV special_char[1] MARK_MODEL_AS_NO_LONGER_NEEDED WALTON MARK_MODEL_AS_NO_LONGER_NEEDED VHMYELV TASK_CAR_DRIVE_TO_COORD special_char[1] special_car[1] -270.5629 199.0073 6.9900 11.5 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ENDIF ENDIF IF race_event_flag[1] = 3 IF NOT IS_CHAR_DEAD special_char[1] GET_SCRIPT_TASK_STATUS special_char[1] TASK_CAR_DRIVE_TO_COORD task_state IF task_state = FINISHED_TASK race_event_flag[1] = 4 IF NOT IS_CAR_DEAD special_car[1] TASK_CAR_DRIVE_WANDER special_char[1] special_car[1] 11.5 DRIVINGMODE_AVOIDCARS MARK_CAR_AS_NO_LONGER_NEEDED special_car[1] ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED special_char[1] ENDIF ENDIF ENDIF RETURN load_race_txd://///////////////////////////////////////////////// IF race_selection < 6 IF NOT txd_in_memory = 1 REMOVE_TEXTURE_DICTIONARY LOAD_TEXTURE_DICTIONARY LD_RCE1 LOAD_SPRITE 1 race00 LOAD_SPRITE 2 race01 LOAD_SPRITE 3 race02 LOAD_SPRITE 4 race03 LOAD_SPRITE 5 race04 LOAD_SPRITE 6 race05 txd_in_memory = 1 RETURN ENDIF ENDIF IF race_selection > 5 AND race_selection < 12 IF NOT txd_in_memory = 2 REMOVE_TEXTURE_DICTIONARY LOAD_TEXTURE_DICTIONARY LD_RCE2 LOAD_SPRITE 7 race06 LOAD_SPRITE 8 race07 LOAD_SPRITE 9 race08 LOAD_SPRITE 10 race09 LOAD_SPRITE 11 race10 LOAD_SPRITE 12 race11 txd_in_memory = 2 RETURN ENDIF ENDIF IF race_selection > 11 AND race_selection < 18 IF NOT txd_in_memory = 3 REMOVE_TEXTURE_DICTIONARY LOAD_TEXTURE_DICTIONARY LD_RCE3 LOAD_SPRITE 13 race12 LOAD_SPRITE 14 race13 LOAD_SPRITE 15 race14 LOAD_SPRITE 16 race15 LOAD_SPRITE 17 race16 LOAD_SPRITE 18 race17 txd_in_memory = 3 RETURN ENDIF ENDIF IF race_selection > 17 AND race_selection < 24 IF NOT txd_in_memory = 4 REMOVE_TEXTURE_DICTIONARY LOAD_TEXTURE_DICTIONARY LD_RCE4 LOAD_SPRITE 19 race18 LOAD_SPRITE 20 race19 LOAD_SPRITE 21 race20 LOAD_SPRITE 22 race21 LOAD_SPRITE 23 race22 LOAD_SPRITE 24 race23 txd_in_memory = 4 RETURN ENDIF ENDIF IF race_selection > 23 AND race_selection < 30 IF NOT txd_in_memory = 5 REMOVE_TEXTURE_DICTIONARY LOAD_TEXTURE_DICTIONARY LD_RCE5 LOAD_SPRITE 25 race24 txd_in_memory = 5 RETURN ENDIF ENDIF RETURN setup_text_cprace://///////////////////////////////////////////// SET_TEXT_COLOUR 134 155 184 255 SET_TEXT_SCALE 0.6146 2.4961 SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_JUSTIFY OFF SET_TEXT_CENTRE OFF SET_TEXT_WRAPX 640.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_BACKGROUND OFF SET_TEXT_DROPSHADOW 2 0 0 0 255 RETURN get_random_racer_models://///////////////////////////////////////////// c = 0 e = total_racers - 1 while c < e generate_random_int_in_range 0 32 a switch a case 0 racer_model[c] = DWMYLC1 break case 1 racer_model[c] = OMYST break case 2 racer_model[c] = SBFYST break case 3 racer_model[c] = WMYJG break case 4 racer_model[c] = WMYCR break case 5 racer_model[c] = WMYST break case 6 racer_model[c] = MAFFB break case 7 racer_model[c] = DNB2 break case 8 racer_model[c] = VMAFF2 break case 9 racer_model[c] = DNMYLC break case 10 racer_model[c] = DNFYLC break case 11 racer_model[c] = DNMOLC2 break case 12 racer_model[c] = HFYBE break case 13 racer_model[c] = SBMYST break case 14 racer_model[c] = DWFYLC1 break case 15 racer_model[c] = CWFYHB break case 16 racer_model[c] = SOMYST break case 17 racer_model[c] = VWMYCR break case 18 racer_model[c] = VBMYCR break case 19 racer_model[c] = SOMYRI break case 20 racer_model[c] = MECGRL3 break case 21 racer_model[c] = CWFYFR1 break case 22 racer_model[c] = DWFYLC2 break case 23 racer_model[c] = VWMYCD break case 24 racer_model[c] = WFYCLOT break case 25 racer_model[c] = WMYCLOT break case 26 racer_model[c] = SBMOCD break case 27 racer_model[c] = SHMYCR break case 28 racer_model[c] = SWFYST break case 29 racer_model[c] = VHFYST3 break case 30 racer_model[c] = BIKERB break case 31 racer_model[c] = SWMYCR break endswitch ++ c endwhile return player_made_progress_cprace://///////////////////////////////////////////// if display_hud_position = 1 or total_racers = 1 PLAY_MISSION_PASSED_TUNE 1 switch race_selection case 0 if got_race_made_progress[0] = 0 //CESAR_RACE PLAYER_MADE_PROGRESS 1 ++ total_races_completed if show_race_selection = false REGISTER_MISSION_PASSED CESAR_1 else register_mission_passed $race_name[race_selection] endif got_race_made_progress[0] = 1 endif break case 1 if got_race_made_progress[1] = 0 // LITTLE LOOP PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[1] = 1 endif break case 2 if got_race_made_progress[2] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[2] = 1 endif break case 3 if got_race_made_progress[3] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[3] = 1 endif break case 4 if got_race_made_progress[4] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[4] = 1 endif break case 5 if got_race_made_progress[5] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[5] = 1 endif break case 6 if got_race_made_progress[6] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[6] = 1 endif break case 7 if got_race_made_progress[7] = 0//BADLAND_RACE1 PLAYER_MADE_PROGRESS 1 start_new_script display_win_text 5000 5000 add_score player1 5000 ++ total_races_completed register_mission_passed $race_name[race_selection] got_race_made_progress[7] = 1 endif break case 8 if got_race_made_progress[8] = 0//BADLAND_RACE2 PLAYER_MADE_PROGRESS 1 ++ total_races_completed register_mission_passed $race_name[race_selection] got_race_made_progress[8] = 1 endif break case 9 if got_race_made_progress[9] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[9] = 1 endif break case 10 if got_race_made_progress[10] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[10] = 1 endif break case 11 if got_race_made_progress[11] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[11] = 1 endif break case 12 if got_race_made_progress[12] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[12] = 1 endif break case 13 if got_race_made_progress[13] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[13] = 1 endif break case 14 if got_race_made_progress[14] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[14] = 1 endif break case 15 if got_race_made_progress[15] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[15] = 1 endif break case 16 if got_race_made_progress[16] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[16] = 1 endif break case 17 if got_race_made_progress[17] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[17] = 1 endif break case 18 if got_race_made_progress[18] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[18] = 1 endif break case 19 if got_race_made_progress[19] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[19] = 1 endif break case 20 if got_race_made_progress[20] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[20] = 1 endif break case 21 if got_race_made_progress[21] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[21] = 1 endif break case 22 if got_race_made_progress[22] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[22] = 1 endif break case 23 if got_race_made_progress[23] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[23] = 1 endif break case 24 if got_race_made_progress[24] = 0 PLAYER_MADE_PROGRESS 1 ++ total_races_completed gosub win_cash_cprace register_mission_passed $race_name[race_selection] got_race_made_progress[24] = 1 endif break case NASCAR_RACE // 8-track race if got_race_made_progress[NASCAR_RACE] = 0 start_new_script display_win_text 10000 5000 add_score player1 10000 PLAYER_MADE_PROGRESS 1 register_mission_passed STAD_03 SWITCH_CAR_GENERATOR nascar_reward_cargen1 101 SWITCH_CAR_GENERATOR nascar_reward_cargen2 101 got_race_made_progress[NASCAR_RACE] = 1 endif // if got_race_made_progress[NASCAR_RACE] = 1 //this allows for repeat completion (unsure if this is supposed to be repeatable) // start_new_script display_win_text 10000 5000 // add_score player1 10000 // endif break case DIRTBIKE_STADIUM if got_race_made_progress[DIRTBIKE_STADIUM] = 0 start_new_script display_win_text 25000 5000 add_score player1 25000 PLAYER_MADE_PROGRESS 1 register_mission_passed STAD_01 SWITCH_CAR_GENERATOR dirtrack_reward_cargen 101 got_race_made_progress[DIRTBIKE_STADIUM] = 1 endif if got_race_made_progress[DIRTBIKE_STADIUM] = 1 //this allows for repeat completion start_new_script display_win_text 25000 5000 add_score player1 25000 endif break endswitch endif return win_cash_cprace://///////////////////////////////////////////// if total_races_completed = total_races if got_race_mission_complete = 0 start_new_script display_win_text 1000000 5000 45 add_score player1 1000000 got_race_mission_complete = 1 endif else start_new_script display_win_text 10000 5000 add_score player1 10000 endif return generate_random_anims://///////////////////////////////////////////// repeat 7 c generate_random_int_in_range 0 5 e switch e case 0 TASK_PLAY_ANIM -1 RIOT_CHANT RIOT 4.0 TRUE FALSE FALSE FALSE 2700 break case 1 TASK_PLAY_ANIM -1 RIOT_CHALLENGE RIOT 4.0 TRUE FALSE FALSE FALSE 2000 break case 2 TASK_PLAY_ANIM -1 RIOT_SHOUT RIOT 4.0 TRUE FALSE FALSE FALSE 2000 break case 3 TASK_PLAY_ANIM -1 RIOT_FUKU RIOT 4.0 TRUE FALSE FALSE FALSE 3000 break case 4 TASK_PLAY_ANIM -1 RIOT_PUNCHES RIOT 4.0 TRUE FALSE FALSE FALSE 2200 break endswitch endrepeat return do_stadium_sound_effects://///////////////////////////////////////////// if race_audio_flag = 0 if has_mission_audio_finished 4 //Fix PC Bug Nos. 509 & 513 if race_audio_timer < game_timer CLEAR_MISSION_AUDIO 4 generate_random_int_in_range 0 4 current_sound switch current_sound case 0 LOAD_MISSION_AUDIO 4 SOUND_CROWD_AWWS break case 1 LOAD_MISSION_AUDIO 4 SOUND_CROWD_CHEERS break case 2 LOAD_MISSION_AUDIO 4 SOUND_CROWD_CHEERS_BIG break case 3 LOAD_MISSION_AUDIO 4 SOUND_BANK_AIR_HORN break endswitch ++ race_audio_flag endif endif endif if race_audio_flag = 1 if HAS_MISSION_AUDIO_LOADED 4 if current_sound = 3 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_AIR_HORN else play_mission_audio 4 endif generate_random_int_in_range 2000 10000 race_audio_timer race_audio_timer += game_timer race_audio_flag = 0 endif endif return mission_cleanup_cprace:////////////////////////////////////////// DISPLAY_RADAR 3 // PATHING ON IF exit_mode = 0 OR exit_mode = 1 OR exit_mode = 3 IF IS_PLAYER_PLAYING player1 if exit_mode = 3 if race_selection = NASCAR_RACE x = 2693.1836 y = -1699.6553 z = 9.3891 heading = 34.2987 endif if race_selection = DIRTBIKE_STADIUM x = 1101.7811 y = 1604.5785 z = 11.5506 heading = 353.1771 endif else if menu_mode = LA_RACES x = traceX[menu_mode] y = traceY[menu_mode] + 4.0 heading = 180.0 endif if menu_mode = SF_RACES x = traceX[menu_mode] + 4.0 y = traceY[menu_mode] heading = 90.0 endif if menu_mode = LV_RACES or menu_mode = AIR_RACES x = traceX[menu_mode] + 4.0 y = traceY[menu_mode] heading = 90.0 endif // if menu_mode = AIR_RACES // x = traceX[menu_mode] + 4.0 // y = traceY[menu_mode] // heading = 90.0 // endif IF not exit_mode = 1 x = traceX[menu_mode] y = traceY[menu_mode] ENDIF z = traceZ[menu_mode] endif clear_char_tasks_immediately scplayer SET_CHAR_COORDINATES scplayer x y z SET_CHAR_HEADING scplayer heading CLEAR_AREA x y z 0.5 0 REQUEST_COLLISION x y SET_WEATHER_TO_APPROPRIATE_TYPE_NOW SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_AREA_VISIBLE 0 SET_CHAR_AREA_VISIBLE scplayer 0 LOAD_SCENE x y z DO_FADE 2000 FADE_IN ENDIF ENDIF a = 0 WHILE a < total_racers if not a = playaz if not racer[a] = scplayer MARK_CAR_AS_NO_LONGER_NEEDED racers_car[a] MARK_CHAR_AS_NO_LONGER_NEEDED racer[a] endif endif MARK_MODEL_AS_NO_LONGER_NEEDED racer_model[a] MARK_MODEL_AS_NO_LONGER_NEEDED racers_car_model[a] REMOVE_BLIP racer_blip[a] ++ a ENDWHILE remove_char_elegantly race_passenger UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 if player_fall_state > 0 player_fall_state = 6 endif MARK_CHAR_AS_NO_LONGER_NEEDED race_passenger MARK_CHAR_AS_NO_LONGER_NEEDED flag_girl a = 0 WHILE a < 11 MARK_CHAR_AS_NO_LONGER_NEEDED spectator[a] ++ a ENDWHILE if race_selection = 23 IF d5_pilot_licence_obtained = 1 SWITCH_CAR_GENERATOR gen_car_flying[1] 101 ENDIF ENDIF REMOVE_BLIP first_blip DELETE_CHECKPOINT cp_marker DELETE_OBJECT flag_object clear_onscreen_timer races_timer remove_animation riot remove_animation car USE_TEXT_COMMANDS FALSE SET_MESSAGE_FORMATTING FALSE 380 464 SET_CAR_DENSITY_MULTIPLIER 1.0 DISABLE_ALL_ENTRY_EXITS FALSE DISPLAY_CAR_NAMES true DISPLAY_ZONE_NAMES true HIDE_ALL_FRONTEND_BLIPS false SET_PLAYER_IS_IN_STADIUM false DISPLAY_HUD TRUE CLEAR_EXTRA_COLOURS FALSE if is_player_playing player1 SET_CHAR_AREA_VISIBLE scplayer 0 endif disable_all_cranes = 0 disable_mod_garage = 0 flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ------------------------------------------------------------------------------------------------ // Cesar Mission 1: Race { SCRIPT_NAME cesar1 // Begin... GOSUB mission_start_cesar1 //WRITE_DEBUG CHECKING_ARREST IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_cesar1 ENDIF //IF cs1_race_is_go = 1 // 3master - the mission works properly without this, and we can't cleanup otherwise... weird //WRITE_DEBUG CLEANUP_ GOSUB mission_cleanup_cesar1 //ENDIF MISSION_END // ------------------------------------------------------------------------------------------------ // Variables // ---- Flags LVAR_INT cs1_stage cs1_in_car cs1_cut LVAR_INT cs1_cesar_status LVAR_INT cs1_cesar_slow // ---- Dialogue LVAR_INT cs1_dialogue_playing cs1_random_dialogue_last[2] VAR_INT cs1_random_dialogue // ---- Blips LVAR_INT cs1_contact_blip // ---- Timers / Counters LVAR_INT cs1_timer_start cs1_timer_end cs1_timer_diff LVAR_INT cs1_text_timer_start cs1_text_timer_end cs1_text_timer_diff // ---- Sequences LVAR_INT cs1_cesar_drive // ---- Coords LVAR_FLOAT cs1_meet_x cs1_meet_y cs1_meet_z LVAR_FLOAT cs1_cesar_start_x cs1_cesar_start_y cs1_cesar_start_z cs1_player_start_x cs1_player_start_y cs1_player_start_z // ---- Dialogue LVAR_TEXT_LABEL cs1_text[17] LVAR_INT cs1_audio_char LVAR_INT cs1_audio[17] cs1_counter cs1_audio_playing cs1_audio_slot cs1_alt_slot cs1_ahead_counter // ------------------------------------------------------------------------------------------------ // -------- Vehicles cs1_load_all: REQUEST_MODEL VLA1 // Drone 1 REQUEST_MODEL REMINGTN // Drone 2 REQUEST_MODEL MAJESTIC REQUEST_MODEL SAVANNA // Lowrider REQUEST_MODEL BLADE LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED VLA1 OR NOT HAS_MODEL_LOADED REMINGTN OR NOT HAS_MODEL_LOADED MAJESTIC OR NOT HAS_MODEL_LOADED SAVANNA OR NOT HAS_MODEL_LOADED BLADE WAIT 0 ENDWHILE LOAD_SPECIAL_CHARACTER 1 cesar LOAD_SPECIAL_CHARACTER 2 kendl LOAD_ALL_MODELS_NOW WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_SPECIAL_CHARACTER_LOADED 2 WAIT 0 ENDWHILE RETURN cs1_player_car_create: LVAR_INT cs1_player_car_blip cs1_player_car_health cs1_player_car_health_end // LVAR_FLOAT cs1_player_car_x cs1_player_car_y cs1_player_car_z cs1_player_car_h ADD_BLIP_FOR_CAR cs1_player_car cs1_player_car_blip RETURN // -------- Cesar, Kendl, & Cesar's Car ADD_BLIP_FOR_COORD cesarX cesarY cesarZ cs1_contact_blip cs1_cesar_car_create: LVAR_INT cs1_cesar cs1_cesar_blip LVAR_INT cs1_cesar_car cs1_cesar_car_blip cs1_kendl LVAR_FLOAT cs1_cesar_car_x cs1_cesar_car_y cs1_cesar_car_z cs1_cesar_car_h cs1_distance cs1_cesar_car_speed REQUEST_CAR_RECORDING 172 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 172 WAIT 0 ENDWHILE cs1_cesar_car_x = 1793.6869 cs1_cesar_car_y = -2138.6863 cs1_cesar_car_z = 12.5547 cs1_cesar_car_h = 0.1899 CLEAR_AREA cs1_cesar_car_x cs1_cesar_car_y cs1_cesar_car_z 20.5 TRUE CUSTOM_PLATE_FOR_NEXT_CAR SAVANNA &_LVA4L__ CREATE_CAR SAVANNA cs1_cesar_car_x cs1_cesar_car_y cs1_cesar_car_z cs1_cesar_car SET_LOAD_COLLISION_FOR_CAR_FLAG cs1_cesar_car FALSE SUPPRESS_CAR_MODEL SAVANNA CHANGE_CAR_COLOUR cs1_cesar_car 3 3 CREATE_CHAR_INSIDE_CAR cs1_cesar_car PEDTYPE_CIVMALE SPECIAL01 cs1_cesar CREATE_CHAR_AS_PASSENGER cs1_cesar_car PEDTYPE_CIVFEMALE SPECIAL02 0 cs1_kendl SET_CAR_HEADING cs1_cesar_car cs1_cesar_car_h SET_CAR_CRUISE_SPEED cs1_cesar_car 35.0 SET_CAR_DRIVING_STYLE cs1_cesar_car DRIVINGMODE_PLOUGHTHROUGH SET_CAR_HEAVY cs1_cesar_car TRUE LOCK_CAR_DOORS cs1_cesar_car CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_PROOFS cs1_cesar_car TRUE TRUE TRUE TRUE TRUE SET_CAN_BURST_CAR_TYRES cs1_cesar_car FALSE SET_CHAR_PROOFS cs1_cesar TRUE TRUE TRUE TRUE TRUE SET_CHAR_PROOFS cs1_kendl TRUE TRUE TRUE TRUE TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE cs1_cesar FALSE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE cs1_kendl FALSE RETURN ADD_BLIP_FOR_CAR cs1_cesar_car cs1_cesar_car_blip // -------- // ---- Cesar's Pals cs1_drone_car_create: LVAR_INT cs1_drone[4] cs1_drone_car[4] LVAR_FLOAT cs1_drone_car_x[4] cs1_drone_car_y[4] cs1_drone_car_z[4] cs1_drone_car_h[4] cs1_drone_car_x[0] = 1492.3043 cs1_drone_car_y[0] = -1869.0234 cs1_drone_car_z[0] = 12.3828 cs1_drone_car_h[0] = 90.0 CLEAR_AREA cs1_drone_car_x[0] cs1_drone_car_y[0] cs1_drone_car_z[0] 2.5 TRUE CREATE_CAR MAJESTIC cs1_drone_car_x[0] cs1_drone_car_y[0] cs1_drone_car_z[0] cs1_drone_car[0] SET_LOAD_COLLISION_FOR_CAR_FLAG cs1_drone_car[0] FALSE CHANGE_CAR_COLOUR cs1_drone_car[0] 6 0 SET_CAR_HEADING cs1_drone_car[0] cs1_drone_car_h[0] CREATE_CHAR_INSIDE_CAR cs1_drone_car[0] PEDTYPE_GANG_SMEX VLA1 cs1_drone[0] SET_CHAR_PROOFS cs1_drone[0] TRUE TRUE TRUE TRUE TRUE SET_CAR_CRUISE_SPEED cs1_drone_car[0] 35.0 SET_CAR_DRIVING_STYLE cs1_drone_car[0] DRIVINGMODE_PLOUGHTHROUGH LOCK_CAR_DOORS cs1_drone_car[0] CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_PROOFS cs1_drone_car[0] TRUE TRUE TRUE FALSE TRUE SET_CAN_BURST_CAR_TYRES cs1_drone_car[0] FALSE cs1_drone_car_x[1] = 1492.3043 cs1_drone_car_y[1] = -1875.0234 cs1_drone_car_z[1] = 12.3828 cs1_drone_car_h[1] = 90.0 CLEAR_AREA cs1_drone_car_x[1] cs1_drone_car_y[1] cs1_drone_car_z[1] 2.5 TRUE CREATE_CAR REMINGTN cs1_drone_car_x[1] cs1_drone_car_y[1] cs1_drone_car_z[1] cs1_drone_car[1] SET_LOAD_COLLISION_FOR_CAR_FLAG cs1_drone_car[1] FALSE SUPPRESS_CAR_MODEL REMINGTN CHANGE_CAR_COLOUR cs1_drone_car[1] 8 0 SET_CAR_HEADING cs1_drone_car[1] cs1_drone_car_h[1] CREATE_CHAR_INSIDE_CAR cs1_drone_car[1] PEDTYPE_GANG_SMEX VLA1 cs1_drone[1] SET_CHAR_PROOFS cs1_drone[1] TRUE TRUE TRUE TRUE TRUE SET_CAR_CRUISE_SPEED cs1_drone_car[1] 35.0 SET_CAR_DRIVING_STYLE cs1_drone_car[1] DRIVINGMODE_PLOUGHTHROUGH LOCK_CAR_DOORS cs1_drone_car[1] CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_PROOFS cs1_drone_car[1] TRUE TRUE TRUE TRUE TRUE SET_CAN_BURST_CAR_TYRES cs1_drone_car[1] FALSE cs1_drone_car_x[2] = 1504.3043 cs1_drone_car_y[2] = -1869.0234 cs1_drone_car_z[2] = 12.3828 cs1_drone_car_h[2] = 90.0 CLEAR_AREA cs1_drone_car_x[2] cs1_drone_car_y[2] cs1_drone_car_z[2] 2.5 TRUE CREATE_CAR MAJESTIC cs1_drone_car_x[2] cs1_drone_car_y[2] cs1_drone_car_z[2] cs1_drone_car[2] SET_LOAD_COLLISION_FOR_CAR_FLAG cs1_drone_car[2] FALSE SUPPRESS_CAR_MODEL MAJESTIC CHANGE_CAR_COLOUR cs1_drone_car[2] 2 1 SET_CAR_HEADING cs1_drone_car[2] cs1_drone_car_h[2] CREATE_CHAR_INSIDE_CAR cs1_drone_car[2] PEDTYPE_GANG_SMEX VLA1 cs1_drone[2] SET_CHAR_PROOFS cs1_drone[2] TRUE TRUE TRUE TRUE TRUE SET_CAR_CRUISE_SPEED cs1_drone_car[2] 35.0 SET_CAR_DRIVING_STYLE cs1_drone_car[2] DRIVINGMODE_PLOUGHTHROUGH LOCK_CAR_DOORS cs1_drone_car[2] CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_PROOFS cs1_drone_car[2] TRUE TRUE TRUE TRUE TRUE SET_CAN_BURST_CAR_TYRES cs1_drone_car[2] FALSE cs1_drone_car_x[3] = 1504.3043 cs1_drone_car_y[3] = -1875.0234 cs1_drone_car_z[3] = 12.3828 cs1_drone_car_h[3] = 90.0 CLEAR_AREA cs1_drone_car_x[3] cs1_drone_car_y[3] cs1_drone_car_z[3] 2.5 TRUE CREATE_CAR BLADE cs1_drone_car_x[3] cs1_drone_car_y[3] cs1_drone_car_z[3] cs1_drone_car[3] SET_LOAD_COLLISION_FOR_CAR_FLAG cs1_drone_car[3] FALSE SET_CAR_HEADING cs1_drone_car[3] cs1_drone_car_h[3] CREATE_CHAR_INSIDE_CAR cs1_drone_car[3] PEDTYPE_GANG_SMEX VLA1 cs1_drone[3] SET_CAR_CRUISE_SPEED cs1_drone_car[3] 35.0 SET_CAR_DRIVING_STYLE cs1_drone_car[3] DRIVINGMODE_PLOUGHTHROUGH LOCK_CAR_DOORS cs1_drone_car[3] CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_PROOFS cs1_drone_car[3] TRUE TRUE TRUE TRUE TRUE SET_CAN_BURST_CAR_TYRES cs1_drone_car[3] FALSE RETURN // ------------------------------------------------------------------------------------------------ // Start Mission mission_start_cesar1: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 WAIT 0 LOAD_MISSION_TEXT CESAR1 SET_PLAYER_GROUP_RECRUITMENT player1 FALSE // ------------------------------------------------------------------------------------------------ // Initialize Variables // ---- Flags cs1_stage = 0 cs1_in_car = 0 cs1_cut = -1 cs1_race_is_go = 0 cs1_dialogue_playing = 2 cs1_cesar_slow = 0 cs1_counter = 0 cs1_ahead_counter = 1 cs1_audio_slot = 1 cs1_alt_slot = 2 cs1_audio_playing = 0 cs1_random_dialogue_last[0] = 0 cs1_random_dialogue_last[1] = 4 // ---- Coords cs1_meet_x = 1820.44 cs1_meet_y = -2117.32 cs1_meet_z = 13.09 cs1_player_start_x = 1518.3043 cs1_player_start_y = -1875.0234 cs1_player_start_z = 12.3828 cs1_cesar_start_x = 1518.3043 cs1_cesar_start_y = -1869.0234 cs1_cesar_start_z = 12.3828 // ---- Dialogue Text $cs1_text[1] = CES1_AA // Hey, keep up, holmes! $cs1_text[2] = CES1_AB // Not far now, eh! $cs1_text[3] = CES1_AC // C'mon, Carl, follow us! $cs1_text[4] = CES1_AD // Nearly there, Carl! $cs1_text[5] = CES1_BA // You gonna have to drive better than that, CJ! $cs1_text[6] = CES1_BB // Hey, CJ, you wrecking your car, eh! $cs1_text[7] = CES1_BC // Carl, your driving is an embarrassment! $cs1_text[8] = CES1_BD // Oh, Carl, I thought you said you could drive! $cs1_text[9] = CES1_CA // Carl! What are you doing? $cs1_text[10] = CES1_CB // Watch out, Carl! $cs1_text[11] = CES1_CC // Carl, you idiot! $cs1_text[12] = CES1_CD // Hey, Carl, don't play dirty! $cs1_text[13] = CES1_CE // Hey, watch out, Carl! $cs1_text[14] = CES1_CF // You trying to kill your sister? //$cs1_text[15] = CES1_CG // Here we go, yeeehaaa! //$cs1_text[16] = CES1_CH // Goodluck, holmes! // ---- Dialogue Audio cs1_audio[1] = SOUND_CES1_AA // Hey, keep up, holmes! cs1_audio[2] = SOUND_CES1_AB // Not far now, eh! cs1_audio[3] = SOUND_CES1_AC // C'mon, Carl, follow us! cs1_audio[4] = SOUND_CES1_AD // Nearly there, Carl! cs1_audio[5] = SOUND_CES1_BA // You gonna have to drive better than that, CJ! cs1_audio[6] = SOUND_CES1_BB // Hey, CJ, you wrecking your car, eh! cs1_audio[7] = SOUND_CES1_BC // Carl, your driving is an embarrassment! cs1_audio[8] = SOUND_CES1_BD // Oh, Carl, I thought you said you could drive! cs1_audio[9] = SOUND_CES1_CA // Carl! What are you doing? cs1_audio[10] = SOUND_CES1_CB // Watch out, Carl! cs1_audio[11] = SOUND_CES1_CC // Carl, you idiot! cs1_audio[12] = SOUND_CES1_CD // Hey, Carl, don't play dirty! cs1_audio[13] = SOUND_CES1_CE // Hey, watch out, Carl! cs1_audio[14] = SOUND_CES1_CF // You trying to kill your sister? //cs1_audio[15] = SOUND_CES1_CG // Here we go, yeeehaaa! //cs1_audio[16] = SOUND_CES1_CH // Goodluck, holmes! // ------------------------------------------------------------------------------------------------ // Request Models // ------------------------------------------------------------------------------------------------ // Entity GoSubs SET_CAR_DENSITY_MULTIPLIER 0.0 STORE_CAR_CHAR_IS_IN scplayer cs1_player_car SET_CAR_COORDINATES cs1_player_car cesarX cesarY cesarZ SET_CAR_HEADING cs1_player_car 270.0 //SET_FADING_COLOUR 0 0 0 //DO_FADE 2000 FADE_OUT // //WHILE GET_FADING_STATUS // WAIT 0 //ENDWHILE CLEAR_AREA 1796.0 -2118.0 14.0 25.0 TRUE LOAD_CUTSCENE CESAR1A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE CLEAR_AREA 1796.0 -2118.0 14.0 15.0 TRUE SET_CAR_DENSITY_MULTIPLIER 0.5 GOSUB cs1_load_all //DO_FADE 1000 FADE_IN // ------------------------------------------------------------------------------------------------ // Task Sequences // ------------------------------------------------------------------------------------------------ // Starting blip... //GOSUB cs1_player_car_create SET_FADING_COLOUR 0 0 0 GET_GAME_TIMER cs1_text_timer_start SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 OFF //PRINT_NOW ( CES1_01 ) 10000 1 // Pick up your car // ------------------------------------------------------------------------------------------------ // Main Loop cs1_main_loop: WAIT 0 // ---- Load & Play Dialogue... IF NOT cs1_counter = 0 IF cs1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED cs1_alt_slot CLEAR_MISSION_AUDIO cs1_alt_slot ENDIF cs1_audio_playing = 1 ENDIF IF cs1_audio_playing = 1 LOAD_MISSION_AUDIO cs1_audio_slot cs1_audio[cs1_counter] //GOSUB cs1_dialogue_pos //ATTACH_MISSION_AUDIO_TO_PED cs1_audio_slot cs1_audio_char cs1_audio_playing = 2 ENDIF IF cs1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED cs1_audio_slot PLAY_MISSION_AUDIO cs1_audio_slot PRINT_NOW $cs1_text[cs1_counter] 10000 1 cs1_audio_playing = 3 ENDIF ENDIF IF cs1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED cs1_audio_slot CLEAR_THIS_PRINT $cs1_text[cs1_counter] IF cs1_audio_slot = 1 cs1_audio_slot = 2 cs1_alt_slot = 1 ELSE cs1_audio_slot = 1 cs1_alt_slot = 2 ENDIF cs1_counter = 0 cs1_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED cs1_alt_slot IF cs1_counter < 60 cs1_ahead_counter = cs1_counter + 1 LOAD_MISSION_AUDIO cs1_alt_slot cs1_audio[cs1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S flag_cesar_mission_counter ++ GOTO mission_passed_cesar1 ENDIF IF cs1_stage > 0 GOSUB cs1_in_car_check ENDIF IF cs1_stage > 0 AND cs1_stage < 666 IF IS_CAR_DEAD cs1_cesar_car PRINT_NOW ( CES1_09 ) 7000 1 GOTO mission_failed_cesar1 ENDIF ENDIF // Meet Cesar... ...switch to cut... he gets in his car... IF cs1_stage = 0 IF cs1_cut = -1 IF NOT IS_CAR_DEAD cs1_player_car AND NOT IS_CHAR_DEAD scplayer WARP_CHAR_INTO_CAR scplayer cs1_player_car CLEAR_PRINTS GET_GAME_TIMER cs1_timer_start GOSUB cs1_cesar_car_create SWITCH_WIDESCREEN ON DO_FADE 500 FADE_IN DO_FADE 500 FADE_IN DO_FADE 500 FADE_IN cs1_cut = 0 ENDIF ENDIF IF cs1_cut = 0 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD cs1_player_car IF IS_CHAR_IN_CAR scplayer cs1_player_car IF NOT IS_CHAR_DEAD cs1_cesar AND NOT IS_CAR_DEAD cs1_cesar_car GET_GAME_TIMER cs1_timer_end cs1_timer_diff = cs1_timer_end - cs1_timer_start IF NOT IS_CHAR_DEAD cs1_cesar AND NOT IS_CHAR_DEAD cs1_kendl SET_CHAR_PROOFS cs1_cesar TRUE TRUE TRUE TRUE TRUE SET_CHAR_PROOFS cs1_kendl TRUE TRUE TRUE TRUE TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE cs1_cesar FALSE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE cs1_kendl FALSE IF NOT IS_CAR_DEAD cs1_cesar_car START_PLAYBACK_RECORDED_CAR cs1_cesar_car 172 ENDIF SET_FIXED_CAMERA_POSITION 1786.3308 -2120.0657 12.8592 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1787.3093 -2120.1292 13.0548 JUMP_CUT GET_CAR_HEALTH cs1_player_car cs1_player_car_health cs1_cut = 2 ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD cs1_cesar AND NOT IS_CAR_DEAD cs1_cesar_car IF cs1_cut = 1 IF LOCATE_CHAR_IN_CAR_3D cs1_cesar 1802.1261 -2110.1030 12.3902 4.0 4.0 4.0 FALSE SET_FIXED_CAMERA_POSITION 1825.2024 -2100.5496 18.3156 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1824.6929 -2101.3733 18.0676 JUMP_CUT cs1_cut = 2 ENDIF ENDIF IF cs1_cut = 2 IF NOT IS_CAR_DEAD cs1_cesar_car IF IS_CHAR_IN_CAR cs1_cesar cs1_cesar_car IF LOCATE_CHAR_IN_CAR_3D cs1_cesar cs1_meet_x cs1_meet_y cs1_meet_z 25.0 25.0 25.0 FALSE IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR cs1_cesar_car OPEN_SEQUENCE_TASK cs1_cesar_drive TASK_CAR_DRIVE_TO_COORD -1 cs1_cesar_car 1533.0076 -1877.2430 12.3828 20.0 MODE_ACCURATE FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 cs1_cesar_car cs1_cesar_start_x cs1_cesar_start_y cs1_cesar_start_z 12.0 MODE_ACCURATE FALSE DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK cs1_cesar_drive PERFORM_SEQUENCE_TASK cs1_cesar cs1_cesar_drive ADD_STUCK_CAR_CHECK_WITH_WARP cs1_cesar_car 1.0 2000 TRUE TRUE TRUE 2 REMOVE_BLIP cs1_cesar_car_blip ADD_BLIP_FOR_CAR cs1_cesar_car cs1_cesar_car_blip SET_BLIP_AS_FRIENDLY cs1_cesar_car_blip TRUE RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF cs1_in_car = 1 PRINT_NOW ( CES1_04 ) 5000 2 // Follow Cesar to the race start. cs1_dialogue_playing = 2 GET_GAME_TIMER cs1_text_timer_start // Add stuck check cs1_cut = 3 CHECKPOINT_SAVE 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF cs1_cut = 3 GOSUB cs1_drone_car_create cs1_stage = 1 ENDIF ENDIF ENDIF // Drive to race start... IF cs1_stage = 1 IF cs1_cut = 3 GET_GAME_TIMER cs1_text_timer_start IF NOT IS_CHAR_DEAD cs1_drone[0] SET_CHAR_CAN_BE_SHOT_IN_VEHICLE cs1_drone[0] FALSE ENDIF IF NOT IS_CHAR_DEAD cs1_drone[1] SET_CHAR_CAN_BE_SHOT_IN_VEHICLE cs1_drone[1] FALSE ENDIF IF NOT IS_CHAR_DEAD cs1_drone[2] SET_CHAR_CAN_BE_SHOT_IN_VEHICLE cs1_drone[2] FALSE ENDIF IF NOT IS_CHAR_DEAD cs1_drone[3] SET_CHAR_CAN_BE_SHOT_IN_VEHICLE cs1_drone[3] FALSE ENDIF cs1_cut = 4 ENDIF IF cs1_cut = 4 IF NOT IS_CAR_DEAD cs1_player_car IF NOT IS_CHAR_DEAD cs1_cesar AND NOT IS_CAR_DEAD cs1_cesar_car GET_SCRIPT_TASK_STATUS cs1_cesar TASK_CAR_DRIVE_TO_COORD cs1_cesar_status IF cs1_cesar_status = FINISHED_TASK IF DOES_CAR_HAVE_STUCK_CAR_CHECK cs1_cesar_car REMOVE_STUCK_CAR_CHECK cs1_cesar_car ENDIF ENDIF IF NOT LOCATE_CHAR_IN_CAR_3D cs1_cesar cs1_cesar_start_x cs1_cesar_start_y cs1_cesar_start_z 20.0 20.0 20.0 FALSE GET_CAR_COORDINATES cs1_player_car cs1_player_car_x cs1_player_car_y cs1_player_car_z GET_CAR_COORDINATES cs1_cesar_car cs1_cesar_car_x cs1_cesar_car_y cs1_cesar_car_z GET_DISTANCE_BETWEEN_COORDS_2D cs1_player_car_x cs1_player_car_y cs1_cesar_car_x cs1_cesar_car_y cs1_distance cs1_cesar_car_speed = 1000.0 / cs1_distance IF cs1_cesar_car_speed > 30.0 cs1_cesar_car_speed = 30.0 ENDIF IF cs1_cesar_car_speed < 12.0 cs1_cesar_car_speed = 12.0 ENDIF SET_CAR_CRUISE_SPEED cs1_cesar_car cs1_cesar_car_speed ELSE SET_CAR_CRUISE_SPEED cs1_cesar_car 12.0 ENDIF IF cs1_cesar_slow = 0 IF LOCATE_CHAR_IN_CAR_3D cs1_cesar cs1_cesar_start_x cs1_cesar_start_y cs1_cesar_start_z 10.0 10.0 10.0 FALSE REMOVE_BLIP cs1_cesar_car_blip ADD_BLIP_FOR_COORD cs1_player_start_x cs1_player_start_y cs1_player_start_z cs1_cesar_blip PRINT_NOW ( CES1_05 ) 10000 1 // Drive onto the starting grid. cs1_dialogue_playing = 5 cs1_cesar_slow = 1 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer cs1_cesar 15.0 15.0 15.0 FALSE IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer cs1_cesar 10.0 10.0 10.0 FALSE IF cs1_dialogue_playing = 0 IF cs1_random_dialogue_last[0] < 4 GET_GAME_TIMER cs1_text_timer_start cs1_dialogue_playing = 1 CLEAR_PRINTS cs1_random_dialogue = cs1_random_dialogue_last[0] ++cs1_random_dialogue_last[0] ENDIF ENDIF ENDIF ENDIF ENDIF GET_CAR_HEALTH cs1_player_car cs1_player_car_health_end IF cs1_player_car_health_end < cs1_player_car_health IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer cs1_cesar 15.0 15.0 15.0 FALSE IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer cs1_cesar 10.0 10.0 10.0 FALSE IF cs1_dialogue_playing = 0 IF cs1_random_dialogue_last[1] < 8 cs1_player_car_health = cs1_player_car_health_end GET_GAME_TIMER cs1_text_timer_start cs1_dialogue_playing = 1 cs1_random_dialogue = cs1_random_dialogue_last[1] ++cs1_random_dialogue_last[1] ENDIF ENDIF ENDIF ENDIF ENDIF IF cs1_dialogue_playing = 1 IF cs1_random_dialogue = 0 IF cs1_audio_playing = 0 AND cs1_counter = 0 cs1_counter = 1 // Hey, keep up, holmes! GET_GAME_TIMER cs1_text_timer_start cs1_dialogue_playing = 2 ENDIF ENDIF IF cs1_random_dialogue = 1 IF cs1_audio_playing = 0 AND cs1_counter = 0 cs1_counter = 2 // Not far now, eh! GET_GAME_TIMER cs1_text_timer_start cs1_dialogue_playing = 2 ENDIF ENDIF IF cs1_random_dialogue = 2 IF cs1_audio_playing = 0 AND cs1_counter = 0 cs1_counter = 3 // C'mon, Carl, follow us! GET_GAME_TIMER cs1_text_timer_start cs1_dialogue_playing = 2 ENDIF ENDIF IF cs1_random_dialogue = 3 IF cs1_audio_playing = 0 AND cs1_counter = 0 cs1_counter = 4 // Nearly there, Carl! GET_GAME_TIMER cs1_text_timer_start cs1_dialogue_playing = 2 ENDIF ENDIF IF cs1_random_dialogue = 4 IF cs1_audio_playing = 0 AND cs1_counter = 0 cs1_counter = 5 // You gonna have to drive better than that, CJ! GET_GAME_TIMER cs1_text_timer_start cs1_dialogue_playing = 2 ENDIF ENDIF IF cs1_random_dialogue = 5 IF cs1_audio_playing = 0 AND cs1_counter = 0 cs1_counter = 6 // Hey, CJ, you wrecking your car, eh! GET_GAME_TIMER cs1_text_timer_start cs1_dialogue_playing = 2 ENDIF ENDIF IF cs1_random_dialogue = 6 IF cs1_audio_playing = 0 AND cs1_counter = 0 cs1_counter = 7 // Carl, your driving is an embarrassment! GET_GAME_TIMER cs1_text_timer_start cs1_dialogue_playing = 2 ENDIF ENDIF IF cs1_random_dialogue = 7 IF cs1_audio_playing = 0 AND cs1_counter = 0 cs1_counter = 8 // Oh, Carl, I thought you said you could drive! GET_GAME_TIMER cs1_text_timer_start cs1_dialogue_playing = 2 ENDIF ENDIF IF cs1_random_dialogue = 8 PRINT_NOW ( CES1_04 ) 100 1 // ~s~Follow ~b~Cesar ~s~to the race start. GET_GAME_TIMER cs1_text_timer_end cs1_text_timer_diff = cs1_text_timer_end - cs1_text_timer_start IF cs1_text_timer_diff > 5000 GET_GAME_TIMER cs1_text_timer_start cs1_dialogue_playing = 2 ENDIF ENDIF ENDIF IF cs1_dialogue_playing = 2 GET_GAME_TIMER cs1_text_timer_end cs1_text_timer_diff = cs1_text_timer_end - cs1_text_timer_start IF cs1_text_timer_diff > 6000 IF NOT IS_CAR_DEAD cs1_drone_car[0] AND NOT IS_CAR_DEAD cs1_drone_car[1] AND NOT IS_CAR_DEAD cs1_drone_car[2] AND NOT IS_CAR_DEAD cs1_drone_car[3] FREEZE_CAR_POSITION cs1_drone_car[0] TRUE FREEZE_CAR_POSITION cs1_drone_car[1] TRUE FREEZE_CAR_POSITION cs1_drone_car[2] TRUE FREEZE_CAR_POSITION cs1_drone_car[3] TRUE ENDIF cs1_dialogue_playing = 0 ENDIF ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD cs1_cesar_car AND NOT IS_CHAR_DEAD cs1_cesar IF NOT IS_CAR_DEAD cs1_player_car AND NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_CAR scplayer cs1_player_car IF LOCATE_CHAR_IN_CAR_3D scplayer cs1_player_start_x cs1_player_start_y cs1_player_start_z 4.0 4.0 4.0 TRUE SET_PLAYER_CONTROL player1 OFF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_passed_cesar1 ENDIF ENDIF ENDIF ENDIF ENDIF IF cs1_stage = 666 GOTO mission_failed_cesar1 ENDIF GOTO cs1_main_loop // ------------------------------------------------------------------------------------------------ // Mission Failed mission_failed_cesar1: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" MARK_MODEL_AS_NO_LONGER_NEEDED SAVANNA MARK_MODEL_AS_NO_LONGER_NEEDED VLA1 MARK_MODEL_AS_NO_LONGER_NEEDED MAJESTIC MARK_MODEL_AS_NO_LONGER_NEEDED REMINGTN MARK_MODEL_AS_NO_LONGER_NEEDED BLADE //flag_player_on_mission = 0 RETURN // ------------------------------------------------------------------------------------------------ // Mission Passed mission_passed_cesar1: cs1_race_is_go = 1 //flag_cesar_mission_counter ++ ////REGISTER_MISSION_PASSED ( ) //PRINT_WITH_NUMBER_BIG ( M_PASS ) 200 5000 1 //"Mission Passed!" //ADD_SCORE player1 200 //CLEAR_WANTED_LEVEL player1 RETURN // ------------------------------------------------------------------------------------------------ // Mission Cleanup mission_cleanup_cesar1: // ---- Entities // ---- Blips REMOVE_BLIP cs1_player_car_blip REMOVE_BLIP cs1_cesar_car_blip REMOVE_BLIP cs1_cesar_blip REMOVE_BLIP cs1_contact_blip MARK_MODEL_AS_NO_LONGER_NEEDED VLA1 // REMOVE_BLIP cs1_drone_car_blip[0] // REMOVE_BLIP cs1_drone_car_blip[1] // REMOVE_BLIP cs1_drone_car_blip[2] // REMOVE_BLIP cs1_drone_car_blip[3] DELETE_CAR cs1_cesar_car DELETE_CAR cs1_drone_car[0] DELETE_CAR cs1_drone_car[1] DELETE_CAR cs1_drone_car[2] DELETE_CAR cs1_drone_car[3] UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 // ---- Models //SET_PLAYER_GROUP_RECRUITMENT player1 TRUE // ---- Clear Script Stuff //CLEAR_ONSCREEN_TIMER cs1_car_timer flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED IF NOT cs1_stage = 666 AND cs1_race_is_go = 1 // still travelling to the race when mission failed, dont insta-fade out DO_FADE 0 FADE_OUT ENDIF RETURN // ------------------------------------------------------------------------------------------------ // ---- Sub-routines // ------------------------------------------------------------------------------------------------ // Starting Cutscene cs1_in_car_check: //Get Player's car... IF IS_CAR_DEAD cs1_player_car PRINT_NOW ( CES1_08 ) 5000 1 cs1_stage = 666 ENDIF IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD cs1_player_car IF cs1_in_car = 1 IF NOT IS_CHAR_IN_CAR scplayer cs1_player_car IF cs1_stage = 1 IF cs1_cesar_slow = 0 REMOVE_BLIP cs1_cesar_car_blip ENDIF IF cs1_cesar_slow = 1 REMOVE_BLIP cs1_cesar_blip ENDIF cs1_dialogue_playing = 10 REMOVE_BLIP cs1_player_car_blip ADD_BLIP_FOR_CAR cs1_player_car cs1_player_car_blip SET_BLIP_AS_FRIENDLY cs1_player_car_blip TRUE cs1_in_car = 0 ENDIF // IF cs1_stage = 0 // AND cs1_cut = -2 // REMOVE_BLIP cs1_contact_blip // ENDIF ENDIF ENDIF IF cs1_in_car = 0 IF cs1_stage = 1 PRINT_NOW ( CES1_06 ) 100 1 // Get back in the car. ENDIF IF IS_CHAR_IN_CAR scplayer cs1_player_car CLEAR_PRINTS IF cs1_stage = 1 IF cs1_cesar_slow = 0 IF NOT IS_CAR_DEAD cs1_cesar_car REMOVE_BLIP cs1_cesar_car_blip ADD_BLIP_FOR_CAR cs1_cesar_car cs1_cesar_car_blip SET_BLIP_AS_FRIENDLY cs1_cesar_car_blip TRUE ENDIF ENDIF IF cs1_cesar_slow = 1 REMOVE_BLIP cs1_cesar_blip ADD_BLIP_FOR_COORD cs1_player_start_x cs1_player_start_y cs1_player_start_z cs1_cesar_blip PRINT_NOW ( CES1_05 ) 10000 1 // Drive onto the starting grid. ENDIF REMOVE_BLIP cs1_player_car_blip cs1_dialogue_playing = 0 cs1_in_car = 1 ENDIF // IF cs1_stage = 0 // AND cs1_cut = -2 // ADD_BLIP_FOR_COORD cesarX cesarY cesarZ cs1_contact_blip // PRINT_NOW ( CES1_02 ) 10000 1 // Go meet Cesar // ENDIF ENDIF ENDIF ENDIF RETURN } /* [C1_A_A] CESAR: Hey, keep up, holmes! [C1_A_B] CESAR: Not far now, eh! [C1_A_C] KENDL: C'mon, Carl, follow us! [C1_A_D] KENDL: Nearly there, Carl! [C1_B_A] CESAR: You gonna have to drive better than that, CJ! [C1_B_B] CESAR: Hey, CJ, you wrecking your car, eh! [C1_B_C] KENDL: Carl, your driving is an embarrassment! [C1_B_D] KENDL: Oh, Carl, I thought you said you could drive! [C1_C_A] CESAR: Here we go, yeeehaaa! [C1_C_B] CESAR: Goodluck, holmes! [CES1_01 // ~s~Go and pick up your ~b~car ~s~for the race. [CES1_02 // ~s~Get to ~y~Cesar's place~s~. [CES1_03 // ~s~Get back in the ~b~car~s~. [CES1_04 // ~s~Follow ~b~Cesar ~s~to the race start. [CES1_05 // ~s~Drive onto the ~y~starting grid~s~. [CES1_06 // ~s~Get back in ~b~the car~s~. [CES1_07 // ~r~Not fast enough, try again. [CES1_08 // ~r~You destroyed the car! [CES1_09 // ~r~You destroyed Cesar's car! */ MISSION_START // ********************************************************************************************* // ********************************************************************************************* // ********************************************************************************************* // ***************************************** LA1FIN1 ******************************************* // ********************************** Reuniting The Families *********************************** // ********* Inspired by Perfect Dark, Goldeneye, Terminator 2, Time Crisis, Zelda ************* // ********************************************************************************************* // ********************************************************************************************* // ********************************************************************************************* SCRIPT_NAME la1fin1 // Mission start stuff GOSUB mission_start_drugs4 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_drugs4_failed ENDIF GOSUB mission_cleanup_drugs4 MISSION_END { // Variables for mission //interior section LVAR_INT grove1_f1 LVAR_INT grove2_f1 LVAR_INT grove3_f1 LVAR_INT grove4_f1 LVAR_INT grove5_f1 LVAR_INT grove6_f1 LVAR_INT extpoliceheli_f1 LVAR_INT extpoliceheli_f1health LVAR_INT extpolicevan1_f1 LVAR_INT extpolicevan2_f1 LVAR_INT exthelidriver_f1 LVAR_INT extvan1driver_f1 LVAR_INT extvan2driver_f1 LVAR_INT swatrope1_f1 LVAR_INT swatrope2_f1 LVAR_INT swatrope3_f1 LVAR_INT swatrope4_f1 LVAR_INT swat1_f1 LVAR_INT swat2_f1 LVAR_INT swat3_f1 LVAR_INT swat4_f1 LVAR_INT motel_DM //decision maker stuff LVAR_INT coward_DM LVAR_INT extmotel_DM //decision maker stuff LVAR_INT helispotlight_f1 LVAR_INT swatrope1_f1status LVAR_INT swatrope2_f1status LVAR_INT swatrope3_f1status LVAR_INT swatrope4_f1status LVAR_INT playerweapon_f1 //inside motel LVAR_INT motel_interior //for get_visible_area command LVAR_INT breachfx_f1 //breach particle fx LVAR_INT woundedgrove1_f1 LVAR_INT woundedgrove2_f1 LVAR_INT swat5_f1 LVAR_INT swat6_f1 LVAR_INT swat7_f1 LVAR_INT swat8_f1 LVAR_INT swat9_f1 LVAR_INT swat10_f1 LVAR_INT swat11_f1 LVAR_INT swat12_f1 LVAR_INT swat13_f1 LVAR_INT swat14_f1 LVAR_INT swat15_f1 LVAR_INT swat16_f1 LVAR_INT swat17_f1 LVAR_INT swat18_f1 LVAR_INT hoochie1_f1 LVAR_INT hoochie2_f1 LVAR_INT breachdoor_f1 LVAR_INT vent1_f1 LVAR_INT vent2_f1 LVAR_INT swtbreach01_f1 //for animations LVAR_INT swtbreach02_f1 //for animations LVAR_INT swtbreach03_f1 //for animations LVAR_FLOAT swtvent01_f1 //for animations LVAR_FLOAT swtvent02_f1 //for animations LVAR_FLOAT upsidedownswat_f1 //for animations LVAR_INT skylite_f1 LVAR_INT sweetstatus_f1 LVAR_INT playerstatus_f1 LVAR_FLOAT playeranim_f1 LVAR_INT trolley1_f1 LVAR_INT trolley2_f1 LVAR_INT trolley3_f1 LVAR_INT trolley4_f1 LVAR_INT trolley5_f1 LVAR_INT trolley6_f1 LVAR_INT trolley7_f1 //text LVAR_TEXT_LABEL $text_label_f1 LVAR_INT audio_label_f1 LVAR_TEXT_LABEL $input_text_f1 //on rails section //sequences LVAR_INT hoochieflee_f1seq LVAR_INT runstay_f1seq LVAR_INT stayshoot_f1seq LVAR_INT stayshootnoduck_f1seq LVAR_INT stay2shoot_f1seq LVAR_INT rolloutr_f1seq LVAR_INT rolloutl_f1seq LVAR_INT peekright_f1seq LVAR_INT peekleft_f1seq LVAR_INT enemy_f1 LVAR_INT enemytarget_f1 LVAR_INT enemytarget2_f1 LVAR_INT hoochieescape_f1seq LVAR_FLOAT enemyx_f1 enemyy_f1 enemyz_f1 LVAR_INT shootatcoords_f1seq LVAR_INT hoochie2_f1seq //counters VAR_INT sweethealth_f1 //pickups LVAR_INT armour1_f1 //flags LVAR_INT moteldeal_f1flag LVAR_INT missiongo_f1flag LVAR_INT playerincar_f1flag LVAR_INT extvan1driver_f1flag LVAR_INT swat1_f1flag LVAR_INT swat2_f1flag LVAR_INT extvan2driver_f1flag LVAR_INT swat3_f1flag LVAR_INT swat4_f1flag LVAR_INT breach_f1flag LVAR_INT swatrope1_f1flag LVAR_INT swatrope2_f1flag LVAR_INT swatrope3_f1flag LVAR_INT swatrope4_f1flag LVAR_INT skipcutscene_f1flag LVAR_INT extpoliceheli_f1flag LVAR_INT extpolicevan1_f1flag LVAR_INT extpolicevan2_f1flag LVAR_INT insidemotel_f1flag LVAR_INT motelentrance_f1flag LVAR_INT firstcorridor_f1flag LVAR_INT woundedgrove1_f1flag LVAR_INT grove2_f1flag LVAR_INT attachaudio_f1flag LVAR_INT grovecorner_f1flag LVAR_INT swatcorner_f1flag LVAR_INT swat5_f1flag LVAR_INT swat6_f1flag LVAR_INT swat7_f1flag LVAR_INT swat8_f1flag LVAR_INT swat9_f1flag LVAR_INT swat10_f1flag LVAR_INT swat11_f1flag LVAR_INT coordshoot_f1flag //sequence flag LVAR_INT grove5_f1flag LVAR_INT vent1a_f1flag LVAR_INT vent1b_f1flag LVAR_INT swat14_f1flag LVAR_INT swat15_f1flag LVAR_INT swat16_f1flag LVAR_INT swat17_f1flag LVAR_INT swat18_f1flag LVAR_INT sweet_f1flag LVAR_INT sweetexit_f1flag LVAR_INT roofmotel_f1flag LVAR_INT swatwindosmash_f1flag LVAR_INT hoochie1_f1flag LVAR_INT skiphelicutscene_f1flag LVAR_INT helicrash_f1flag LVAR_INT talkincar_f1flag LVAR_INT progressaudio_f1flag LVAR_INT handlingaudio_f1flag LVAR_INT hoochie2_f1flag LVAR_INT missionaudio2_f1flag LVAR_INT audiosweet_f1flag //blips LVAR_INT sweet_f1blip LVAR_INT motel_f1blip LVAR_INT heli_f1blip /////////////////////////////////////////////////////// On rails variables /////////////////////////////////////////////////////// On rails variables LVAR_INT policecar1_f1 LVAR_INT policecar2_f1 LVAR_INT policecar3_f1 LVAR_INT policecar4_f1 LVAR_INT policecar5_f1 LVAR_INT policecar6_f1 LVAR_INT policecar7_f1 LVAR_INT policecar8_f1 LVAR_INT policecarblock_f1 LVAR_INT cop1_f1 LVAR_INT cop2_f1 LVAR_INT cop3_f1 LVAR_INT cop4_f1 LVAR_INT cop5_f1 LVAR_INT cop6_f1 LVAR_INT cop7_f1 LVAR_INT cop8_f1 LVAR_INT cop9_f1 LVAR_INT cop10_f1 LVAR_INT cop11_f1 LVAR_INT cop12_f1 LVAR_INT cop13_f1 LVAR_INT cop14_f1 LVAR_INT cop15_f1 LVAR_INT cop16_f1 LVAR_INT train_f1 VAR_INT carhealth_f1 LVAR_INT copbike1_f1 LVAR_INT copbike2_f1 LVAR_INT copbike3_f1 LVAR_INT copbike4_f1 LVAR_INT biker1_f1 LVAR_INT biker2_f1 LVAR_INT bikerjumper3_f1 LVAR_INT bikerjumper4_f1 LVAR_FLOAT bikerjumper4_f1heading LVAR_FLOAT bikerjumper3_f1heading LVAR_INT sca1_f1 LVAR_INT sca2_f1 LVAR_INT sca3_f1 LVAR_INT sca4_f1 LVAR_INT sca5_f1 LVAR_INT sca6_f1 LVAR_FLOAT animframebk_jmp LVAR_FLOAT animframebk_punch LVAR_INT donut_f1 LVAR_INT bikerjumper4_f1health LVAR_INT bikerjumper3_f1health LVAR_INT copright_f1 LVAR_INT copleft_f1 LVAR_INT policecarblock2_f1 LVAR_INT policecarblock3_f1 LVAR_INT jetwashfx1_f1 LVAR_FLOAT copright_f1heading LVAR_FLOAT copleft_f1heading LVAR_INT bloodfx1_f1 LVAR_INT bloodfx2_f1 LVAR_INT bloodfx3_f1 LVAR_INT torso_f1 LVAR_INT legr_f1 LVAR_INT legl_f1 LVAR_INT armr_f1 LVAR_INT arml_f1 LVAR_INT head_f1 LVAR_INT fence_f1 LVAR_INT fence2_f1 LVAR_INT fence3_f1 LVAR_INT fence4_f1 LVAR_INT fence5_f1 LVAR_INT fence6_f1 LVAR_INT fence7_f1 LVAR_INT fence8_f1 LVAR_INT fence9_f1 LVAR_INT fence10_f1 LVAR_INT fence11_f1 LVAR_INT fence12_f1 LVAR_INT fencel_f1 LVAR_INT fence2l_f1 LVAR_INT fence3l_f1 LVAR_INT fence4l_f1 LVAR_INT fence5l_f1 LVAR_INT fence6l_f1 LVAR_INT fence7l_f1 LVAR_INT fence8l_f1 LVAR_INT fence9l_f1 LVAR_INT fence10l_f1 LVAR_INT fence11l_f1 LVAR_INT fence12l_f1 LVAR_INT trailer_f1 LVAR_INT truck_f1 LVAR_INT car_f1 LVAR_INT advertholder_f1 LVAR_FLOAT animstate_f1 LVAR_INT fire_f1 LVAR_INT fire2_f1 LVAR_INT fire3_f1 LVAR_INT fire4_f1 LVAR_INT fire5_f1 LVAR_INT fire6_f1 LVAR_INT driverofcar_f1 //blips LVAR_INT policecar1_f1blip LVAR_INT policecar2_f1blip LVAR_INT policecar3_f1blip LVAR_INT policecar4_f1blip LVAR_INT policecar5_f1blip LVAR_INT policecar6_f1blip LVAR_INT policecar7_f1blip LVAR_INT policecar8_f1blip //flags LVAR_INT difficulty_f1flag //do not reset this LVAR_INT rails_f1flag LVAR_INT motelchase_f1flag LVAR_INT copcars_f1flag LVAR_INT policecar1_f1flag LVAR_INT policecar2_f1flag LVAR_INT policecar3_f1flag LVAR_INT policecar4_f1flag LVAR_INT policecar5_f1flag LVAR_INT policecar6_f1flag LVAR_INT policecar7_f1flag LVAR_INT policecar8_f1flag LVAR_INT sca_f1flag LVAR_INT policecarblock_f1flag LVAR_INT bikerjumper4_f1flag LVAR_INT bikerjumper3_f1flag LVAR_INT playdeathanim_f1flag LVAR_INT playdeathanim2_f1flag LVAR_INT helileave_f1flag LVAR_INT chasetext_f1flag LVAR_INT policecar1swap_f1flag LVAR_INT policecar2swap_f1flag LVAR_INT policecar3swap_f1flag LVAR_INT policecar4swap_f1flag LVAR_INT policecar5swap_f1flag LVAR_INT policecar6swap_f1flag LVAR_INT policecar7swap_f1flag LVAR_INT policecar8swap_f1flag LVAR_INT copright_f1flag LVAR_INT copleft_f1flag LVAR_INT turncamera_f1flag LVAR_INT fence_f1flag LVAR_INT helisetpiece_f1flag LVAR_INT textrails_f1flag LVAR_INT actiontext_f1flag LVAR_INT policecarexplode_f1flag LVAR_INT breakposter_f1flag LVAR_INT finalcut_f1flag LVAR_INT helpshoottext_f1flag /////////////////////////////////////////////////////// On rails variables /////////////////////////////////////////////////////// On rails variables // **************************************** Mission Start ********************************** mission_start_drugs4: REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT LAFIN1 flag_player_on_mission = 1 WAIT 0 // ****************************************START OF CUTSCENE******************************** // ****************************************END OF CUTSCENE********************************** // fades the screen in ////upper body muscle //SET_FLOAT_STAT BODY_MUSCLE 50.0 ////fatness //SET_FLOAT_STAT FAT 200.0 // //BUILD_PLAYER_MODEL player1 // //////////////////////////////////////////////////////////////////// CUTSCENE START SET_AREA_VISIBLE 1 LOAD_CUTSCENE FINAL1A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 /////////////////////////////////////////////////////////////////// CUTSCENE END SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON SET_FADING_COLOUR 0 0 0 WAIT 0 LOAD_SCENE 2517.237 -1671.341 12.9 FORCE_WEATHER_NOW WEATHER_SUNNY_LA // request models REQUEST_MODEL GREENWOO REQUEST_MODEL FAM3 REQUEST_MODEL FAM2 REQUEST_MODEL CHROMEGUN LOAD_SPECIAL_CHARACTER 1 SWEET LOAD_SPECIAL_CHARACTER 2 SMOKE LOAD_SPECIAL_CHARACTER 3 RYDER2 REQUEST_CAR_RECORDING 350 REQUEST_MODEL MP5LNG REQUEST_MODEL COLT45 REQUEST_MODEL SWAT LOAD_MISSION_AUDIO 2 SOUND_SMOX_AD //Come on, playa, get in! REQUEST_CAR_RECORDING 352 REQUEST_CAR_RECORDING 353 LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED GREENWOO OR NOT HAS_MODEL_LOADED FAM3 OR NOT HAS_MODEL_LOADED FAM2 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED CHROMEGUN OR NOT HAS_CAR_RECORDING_BEEN_LOADED 350 OR NOT HAS_MODEL_LOADED MP5LNG OR NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED SWAT WAIT 0 ENDWHILE WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_SPECIAL_CHARACTER_LOADED 2 OR NOT HAS_SPECIAL_CHARACTER_LOADED 3 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 352 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 353 WAIT 0 ENDWHILE SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 // ************************************************setting variables************************************** //flags for interior section moteldeal_f1flag = 0 missiongo_f1flag = 0 playerincar_f1flag = 0 extvan1driver_f1flag = 0 swat1_f1flag = 0 swat2_f1flag = 0 extvan2driver_f1flag = 0 swat3_f1flag = 0 swat4_f1flag = 0 breach_f1flag = 0 swatrope1_f1flag = 0 swatrope2_f1flag = 0 swatrope3_f1flag = 0 swatrope4_f1flag = 0 skipcutscene_f1flag = 0 extpoliceheli_f1flag = 0 extpolicevan1_f1flag = 0 extpolicevan2_f1flag = 0 insidemotel_f1flag = 0 motelentrance_f1flag = 0 firstcorridor_f1flag = 0 woundedgrove1_f1flag = 0 grove2_f1flag = 0 grovecorner_f1flag = 0 swatcorner_f1flag = 0 swat5_f1flag = 0 swat6_f1flag = 0 swat7_f1flag = 0 swat8_f1flag = 0 swat9_f1flag = 0 swat10_f1flag = 0 swat11_f1flag = 0 coordshoot_f1flag = 0 //sequence flag grove5_f1flag = 0 vent1a_f1flag = 0 vent1b_f1flag = 0 swat14_f1flag = 0 swat15_f1flag = 0 swat16_f1flag = 0 swat17_f1flag = 0 swat18_f1flag = 0 sweet_f1flag = 0 sweetexit_f1flag = 0 roofmotel_f1flag = 0 swatwindosmash_f1flag = 0 hoochie1_f1flag = 0 skiphelicutscene_f1flag = 0 helicrash_f1flag = 0 talkincar_f1flag = 0 progressaudio_f1flag = 0 handlingaudio_f1flag = 0 hoochie2_f1flag = 0 missionaudio2_f1flag = 0 audiosweet_f1flag = 0 attachaudio_f1flag = 0 //flags for rails chase rails_f1flag = 0 motelchase_f1flag = 0 copcars_f1flag = 0 policecar1_f1flag = 0 policecar2_f1flag = 0 policecar3_f1flag = 0 policecar4_f1flag = 0 policecar5_f1flag = 0 policecar6_f1flag = 0 policecar7_f1flag = 0 policecar8_f1flag = 0 sca_f1flag = 0 policecarblock_f1flag = 0 bikerjumper4_f1flag = 0 bikerjumper3_f1flag = 0 playdeathanim_f1flag = 0 playdeathanim2_f1flag = 0 helileave_f1flag = 0 chasetext_f1flag = 0 policecar1swap_f1flag = 0 policecar2swap_f1flag = 0 policecar3swap_f1flag = 0 policecar4swap_f1flag = 0 policecar5swap_f1flag = 0 policecar6swap_f1flag = 0 policecar7swap_f1flag = 0 policecar8swap_f1flag = 0 copright_f1flag = 0 copleft_f1flag = 0 turncamera_f1flag = 0 fence_f1flag = 0 helisetpiece_f1flag = 0 textrails_f1flag = 0 actiontext_f1flag = 0 policecarexplode_f1flag = 0 breakposter_f1flag = 0 finalcut_f1flag = 0 helpshoottext_f1flag = 0 // ******************************************************************************************************* LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY motel_DM CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE motel_dm EVENT_POTENTIAL_GET_RUN_OVER LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_WEAK coward_DM LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH extmotel_DM //ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE extmotel_DM EVENT_ACQUAINTANCE_PED_HATE TASK_COMPLEX_KILL_PED_ON_FOOT_STAND_STILL 100.0 100.0 100.0 100.0 1 1 //ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE extmotel_DM EVENT_DAMAGE TASK_COMPLEX_KILL_PED_ON_FOOT 50.0 50.0 50.0 50.0 1 1 CLEAR_AREA 2514.316 -1673.395 150.0 150.0 TRUE SET_TIME_OF_DAY 19 30 SET_CHAR_COORDINATES scplayer 2517.237 -1671.341 12.9 SET_CHAR_HEADING scplayer 63.048 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER //create car CUSTOM_PLATE_FOR_NEXT_CAR GREENWOO &GROVE4L_ CREATE_CAR GREENWOO 2508.07 -1672.114 12.0957 sweet_car SET_CAR_CAN_BE_VISIBLY_DAMAGED sweet_car FALSE SET_CAR_HEADING sweet_car 167.195 SET_CAR_ONLY_DAMAGED_BY_PLAYER sweet_car TRUE ADD_BLIP_FOR_CAR sweet_car sweet_f1blip SET_BLIP_AS_FRIENDLY sweet_f1blip TRUE CHANGE_CAR_COLOUR sweet_car 59 34 //create buddies CREATE_CHAR PEDTYPE_SPECIAL SPECIAL01 2511.005 -1672.268 12.493 sweet SET_CHAR_HEADING sweet 62.083 SET_CHAR_NEVER_TARGETTED sweet TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER sweet TRUE TASK_ENTER_CAR_AS_PASSENGER sweet sweet_car 5000 1 SET_CHAR_CANT_BE_DRAGGED_OUT sweet TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED sweet TRUE SET_CHAR_DECISION_MAKER sweet motel_DM SET_CHAR_NEVER_TARGETTED sweet TRUE SET_CHAR_SUFFERS_CRITICAL_HITS sweet FALSE SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR sweet FALSE CREATE_CHAR PEDTYPE_SPECIAL SPECIAL02 2505.318 -1674.747 12.376 big_smoke SET_CHAR_HEADING big_smoke 356.374 SET_CHAR_NEVER_TARGETTED big_smoke TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER big_smoke TRUE TASK_ENTER_CAR_AS_PASSENGER big_smoke sweet_car 5000 0 SET_CHAR_CANT_BE_DRAGGED_OUT big_smoke TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED big_smoke TRUE SET_CHAR_DECISION_MAKER big_smoke motel_DM SET_CHAR_NEVER_TARGETTED big_smoke TRUE SET_CHAR_SUFFERS_CRITICAL_HITS big_smoke FALSE SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR big_smoke FALSE CREATE_CHAR PEDTYPE_SPECIAL SPECIAL03 2506.57 -1667.753 12.376 ryder SET_CHAR_HEADING ryder 171.457 SET_CHAR_NEVER_TARGETTED ryder TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER ryder TRUE TASK_ENTER_CAR_AS_PASSENGER ryder sweet_car 5000 2 SET_CHAR_CANT_BE_DRAGGED_OUT ryder TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED ryder TRUE SET_CHAR_DECISION_MAKER ryder motel_DM SET_CHAR_NEVER_TARGETTED ryder TRUE SET_CHAR_SUFFERS_CRITICAL_HITS ryder FALSE SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR ryder FALSE PRINT_NOW LAF1_1 10000 1 //Get in the car and drive the crew to the meet at the motel. SHUT_CHAR_UP scplayer TRUE SET_WANTED_MULTIPLIER 0.0 SET_MAX_FIRE_GENERATIONS 1 SWITCH_ROADS_OFF 2180.18 -1130.28 21.2 2276.82 -1151.26 28.0 SWITCH_PED_ROADS_OFF 2180.18 -1130.28 21.2 2276.82 -1151.26 28.0 SWITCH_EMERGENCY_SERVICES OFF DO_FADE 500 FADE_IN moteldeal_mainloop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_drugs4_passed ENDIF //timeratest = TIMERA //VIEW_INTEGER_VARIABLE timeratest timeratest //timerbtest = TIMERB //VIEW_INTEGER_VARIABLE timerbtest timerbtest //VIEW_INTEGER_VARIABLE helisetpiece_f1flag helisetpiece_f1flag //VIEW_INTEGER_VARIABLE copcars_f1flag copcars_f1flag //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////// Getting to motel and cut scene //////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //once player is in car told to go to destination IF missiongo_f1flag = 0 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD sweet IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD ryder IF IS_CHAR_SITTING_IN_CAR sweet sweet_car IF IS_CHAR_SITTING_IN_CAR ryder sweet_car IF IS_CHAR_SITTING_IN_CAR big_smoke sweet_car IF IS_CHAR_SITTING_IN_CAR scplayer sweet_car REMOVE_BLIP sweet_f1blip ADD_BLIP_FOR_COORD 2256.239 -1146.909 25.121 motel_f1blip SET_RADIO_CHANNEL RS_NEW_JACK_SWING PRINT_NOW LAF1_3 7000 1 //Drive the crew to the meet at the motel SWITCH_ENTRY_EXIT motel2 FALSE TIMERA = 0 playerincar_f1flag = 1 moteldeal_f1flag = 1 missiongo_f1flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF moteldeal_f1flag = 1 GOSUB process_audio_f1 //play mission audio IF progressaudio_f1flag = 0 IF handlingaudio_f1flag = 0 IF TIMERA > 7000 audio_label_f1 = SOUND_FIN1_GA //Say, CJ, you gonna crash the car again? $input_text_f1 = FIN1_GA //Say, CJ, you gonna crash the car again? GOSUB load_audio_f1 ENDIF ENDIF ENDIF IF progressaudio_f1flag = 1 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_GB //Fuck you, Ryder. $input_text_f1 = FIN1_GB //Fuck you, Ryder. GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 2 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_GC //Ryder, give CJ a break, man. He’s practically turned the Grove around by himself. $input_text_f1 = FIN1_GC //Ryder, give CJ a break, man. He’s practically turned the Grove around by himself. GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 3 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_GD //Man, I was just telling a joke on the little nigga. $input_text_f1 = FIN1_GD //Man, I was just telling a joke on the little nigga. GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 4 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_GE //Everything you do is a joke, Ryder. $input_text_f1 = FIN1_GE //Everything you do is a joke, Ryder. GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 5 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_GG //That ain’t true! $input_text_f1 = FIN1_GG //That ain’t true! GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 6 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_GI //Ryder… just chill the fuck out. $input_text_f1 = FIN1_GI //Ryder… just chill the fuck out. GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 7 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_GJ //Remember, we’re uniting the Families, so no bullshit. $input_text_f1 = FIN1_GJ //Remember, we’re uniting the Families, so no bullshit. GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 8 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_GK //Stay cool. $input_text_f1 = FIN1_GK //Stay cool. GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 9 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_GL //You know me, Sweet, cool as a Shaolin monk! $input_text_f1 = FIN1_GL //You know me, Sweet, cool as a Shaolin monk! GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 10 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_GM //Especially you, Ryder. $input_text_f1 = FIN1_GM //Especially you, Ryder. GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 11 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_GN //What you mean? I resent your implication, and shit. $input_text_f1 = FIN1_GN //What you mean? I resent your implication, and shit. GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 12 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_GO //Sweet’s just sayin’ you’re a natural killa. $input_text_f1 = FIN1_GO //Sweet’s just sayin’ you’re a natural killa. GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 13 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_GP //You gotta tame that tiger and stay cool. $input_text_f1 = FIN1_GP //You gotta tame that tiger and stay cool. GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 14 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_GQ //Yeah, well put it like this – I understand what he’s trying to say, $input_text_f1 = FIN1_GQ //Yeah, well put it like this – I understand what he’s trying to say, GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 15 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_GR //but I’m always cool, fool! $input_text_f1 = FIN1_GR //but I’m always cool, fool! GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 16 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_GS //Hey we all down with that, dog. $input_text_f1 = FIN1_GS //Hey we all down with that, dog. GOSUB load_audio_f1 ENDIF ENDIF ENDIF IF moteldeal_f1flag = 1 OR moteldeal_f1flag = 100 //tell player to get back in the car if they leave it IF NOT IS_CAR_DEAD sweet_car IF playerincar_f1flag = 1 IF NOT IS_CHAR_IN_CAR scplayer sweet_car REMOVE_BLIP motel_f1blip ADD_BLIP_FOR_CAR sweet_car sweet_f1blip SET_BLIP_AS_FRIENDLY sweet_f1blip TRUE //PRINT_NOW LAF1_2 5000 1 //Get back in the car! PLAY_MISSION_AUDIO 2 PRINT_NOW SMOX_AD 2000 1 //Come on, playa, get in! moteldeal_f1flag = 100 playerincar_f1flag = 0 ENDIF ENDIF IF playerincar_f1flag = 0 IF IS_CHAR_IN_CAR scplayer sweet_car REMOVE_BLIP sweet_f1blip ADD_BLIP_FOR_COORD 2256.239 -1146.909 25.121 motel_f1blip CLEAR_PRINTS CLEAR_MISSION_AUDIO 2 IF progressaudio_f1flag > 16 PRINT_NOW LAF1_3 5000 1 //Drive the crew to the meet at the motel ENDIF moteldeal_f1flag = 1 playerincar_f1flag = 1 ENDIF ENDIF ENDIF ENDIF IF moteldeal_f1flag = 0 OR moteldeal_f1flag = 1 OR moteldeal_f1flag = 100 //any of the crew get wasted IF IS_CHAR_DEAD sweet OR IS_CHAR_DEAD big_smoke OR IS_CHAR_DEAD ryder PRINT_NOW LAF1_71 5000 1 //Your homies died! GOTO mission_drugs4_failed ENDIF //car gets wasted IF IS_CAR_DEAD sweet_car PRINT_NOW LAF1_72 5000 1 //The car is wrecked GOTO mission_drugs4_failed ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////// cut scene at the motel //player comes in from the right side of the camera IF moteldeal_f1flag = 1 IF NOT IS_CHAR_DEAD sweet IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD sweet_car IF IS_CHAR_SITTING_IN_CAR scplayer sweet_car IF LOCATE_CAR_2D sweet_car 2256.239 -1146.909 4.4 4.4 TRUE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 SET_PLAYER_CONTROL PLAYER1 OFF SET_MAX_WANTED_LEVEL 0 CLEAR_WANTED_LEVEL PLAYER1 CLEAR_AREA 2223.769 -1141.832 200.0 200.0 TRUE SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 SET_WANTED_MULTIPLIER 0.0 CLEAR_PRINTS moteldeal_f1flag = 2 //player comes in from the right ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //player comes in from the right IF moteldeal_f1flag = 2 IF NOT IS_CAR_DEAD sweet_car CLEAR_AREA 2223.971 -1149.75 200.0 200.0 FALSE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL PLAYER1 OFF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 1 SOUND_FIN1_HA //Ok, it’s strictly one rep per set – you guys are gonna have to wait here. LOAD_MISSION_AUDIO 2 SOUND_FIN1_HB //We’ll be here just in case, bro. REQUEST_MODEL POLMAV REQUEST_MODEL ENFORCER REQUEST_ANIMATION CAR_CHAT LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED POLMAV OR NOT HAS_MODEL_LOADED ENFORCER OR NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 OR NOT HAS_ANIMATION_LOADED CAR_CHAT WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_MISSION3 FAM3 2220.3696 -1160.3181 24.7265 grove1_f1 SET_CHAR_HEADING grove1_f1 272.7973 //leaning against middle car TASK_PLAY_ANIM grove1_f1 IDLE_CHAT PED 8.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER grove1_f1 motel_DM SET_CHAR_NEVER_TARGETTED grove1_f1 TRUE WAIT 250 CREATE_CHAR PEDTYPE_MISSION3 FAM2 2221.5642 -1160.3588 24.7265 grove2_f1 SET_CHAR_HEADING grove2_f1 85.7682 //opposite that guy TASK_PLAY_ANIM grove2_f1 IDLE_CHAT PED 8.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER grove2_f1 motel_DM SET_CHAR_NEVER_TARGETTED grove2_f1 TRUE CREATE_CHAR PEDTYPE_MISSION3 FAM2 2227.2244 -1172.0699 24.7265 grove3_f1 SET_CHAR_HEADING grove3_f1 359.1032 //leaning against the left car SET_CHAR_DECISION_MAKER grove3_f1 motel_DM SET_CHAR_NEVER_TARGETTED grove3_f1 TRUE CREATE_CHAR PEDTYPE_MISSION3 FAM3 2226.3889 -1171.6877 24.7265 grove4_f1 SET_CHAR_HEADING grove4_f1 278.7767 //next to him TASK_PLAY_ANIM grove4_f1 IDLE_CHAT PED 8.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER grove4_f1 motel_DM SET_CHAR_NEVER_TARGETTED grove4_f1 TRUE LOAD_SCENE_IN_DIRECTION 2236.1460 -1146.3591 25.4346 34.0 IF NOT IS_CAR_DEAD sweet_car CAR_SET_IDLE sweet_car SET_CAR_COORDINATES sweet_car 2278.411 -1147.018 25.5 SET_CAR_HEADING sweet_car 80.53 CAMERA_RESET_NEW_SCRIPTABLES SET_FIXED_CAMERA_POSITION 2236.1460 -1146.3591 25.4346 0.0 0.0 0.0 // POINT_CAMERA_AT_CAR sweet_car FIXED JUMP_CUT ENDIF LOAD_SCENE 2226.3889 -1171.6877 24.7265 DO_FADE 250 FADE_IN IF NOT IS_CAR_DEAD sweet_car START_PLAYBACK_RECORDED_CAR sweet_car 350 ENDIF CAMERA_SET_VECTOR_MOVE 2236.1460 -1146.3591 25.4346 2236.1460 -1146.3591 25.4346 2500 TRUE CAMERA_SET_VECTOR_TRACK 2235.9368 -1145.3813 25.4440 2235.3645 -1145.7352 25.444 2500 TRUE TIMERA = 0 moteldeal_f1flag = 3 ENDIF ENDIF // camera as car comes into courtyard IF moteldeal_f1flag = 3 IF TIMERA > 2500//2000 ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// skipcutscene_f1flag = 0 SKIP_CUTSCENE_START ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// SET_FIXED_CAMERA_POSITION 2220.6746 -1161.4014 26.4187 0.0 0.0 0.0 //camera inside courtyard POINT_CAMERA_AT_POINT 2220.9478 -1160.4401 26.3852 JUMP_CUT IF NOT IS_CAR_DEAD sweet_car POP_CAR_PANEL sweet_car WINDSCREEN_PANEL FALSE ENDIF TIMERA = 0 moteldeal_f1flag = 4 ENDIF ENDIF // chatting in car and creating other cars and peds IF moteldeal_f1flag = 4 IF TIMERA > 2750 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD sweet IF NOT IS_CHAR_DEAD ryder IF NOT IS_CHAR_DEAD big_smoke IF HAS_MISSION_AUDIO_LOADED 1 IF HAS_MISSION_AUDIO_LOADED 2 IF IS_PLAYBACK_GOING_ON_FOR_CAR sweet_car STOP_PLAYBACK_RECORDED_CAR sweet_car ENDIF SET_NEAR_CLIP 0.1 SET_CAR_COORDINATES sweet_car 2224.3572 -1149.7413 24.8342 SET_CAR_HEADING sweet_car 180.1644 SET_FIXED_CAMERA_POSITION 2224.3838 -1150.7454 26.0663 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2224.3892 -1149.7494 25.9763 JUMP_CUT TASK_PLAY_ANIM scplayer CAR_Sc1_FL CAR_CHAT 6.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM sweet CAR_Sc1_BL CAR_CHAT 6.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM big_smoke CAR_Sc1_FR CAR_CHAT 6.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM ryder CAR_Sc1_BR CAR_CHAT 6.0 FALSE FALSE FALSE FALSE -1 PLAY_MISSION_AUDIO 1 PRINT_NOW FIN1_HA 5000 1 //Ok, it’s strictly one rep per set – you guys are gonna have to wait here. START_CHAR_FACIAL_TALK sweet 10000 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 IF NOT IS_CHAR_DEAD sweet STOP_CHAR_FACIAL_TALK sweet ENDIF LOAD_MISSION_AUDIO 1 SOUND_FIN1_HC //thanks, homie, but I’m down with these boys. PLAY_MISSION_AUDIO 2 PRINT_NOW FIN1_HB 5000 1 //We’ll be here just in case, bro. START_CHAR_FACIAL_TALK scplayer 10000 WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 ENDWHILE CLEAR_PRINTS CLEAR_MISSION_AUDIO 2 STOP_CHAR_FACIAL_TALK scplayer moteldeal_f1flag = 5 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF moteldeal_f1flag = 5 IF HAS_MISSION_AUDIO_LOADED 1 IF NOT IS_CHAR_DEAD sweet PLAY_MISSION_AUDIO 1 PRINT_NOW FIN1_HC 5000 1 //thanks, homie, but I’m down with these boys. START_CHAR_FACIAL_TALK sweet 10000 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_PRINTS IF NOT IS_CHAR_DEAD sweet STOP_CHAR_FACIAL_TALK sweet ENDIF CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FIN1_HD //I don’t like this, man. Look at all them other familiy hoods! They used to be Grove Streets. LOAD_MISSION_AUDIO 2 SOUND_FIN1_HE //Relax. We straight, they straight. moteldeal_f1flag = 6 ENDIF ENDIF ENDIF //sweet leaves the car IF moteldeal_f1flag = 6 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD sweet IF NOT IS_CHAR_DEAD ryder IF NOT IS_CHAR_DEAD big_smoke IF IS_CHAR_IN_CAR sweet sweet_car //IF IS_CHAR_SITTING_IN_CAR sweet sweet_car TASK_LEAVE_CAR sweet sweet_car moteldeal_f1flag = 7 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //sweet walks up the stairs IF moteldeal_f1flag = 7 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD sweet IF NOT IS_CHAR_DEAD ryder IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_SITTING_IN_CAR sweet sweet_car SET_NEAR_CLIP 0.2 SET_FIXED_CAMERA_POSITION 2223.6252 -1146.9951 26.1711 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2224.3557 -1147.6769 26.2099 JUMP_CUT FLUSH_ROUTE EXTEND_ROUTE 2230.81 -1159.59 24.4 EXTEND_ROUTE 2233.75 -1159.83 25.29 TASK_FOLLOW_POINT_ROUTE sweet PEDMOVE_RUN FOLLOW_ROUTE_ONCE TASK_PLAY_ANIM scplayer CAR_Sc2_FL CAR_CHAT 8.0 FALSE FALSE FALSE TRUE -1 TIMERA = 0 moteldeal_f1flag = 8 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF moteldeal_f1flag = 8 IF NOT IS_CHAR_DEAD sweet IF NOT IS_CHAR_DEAD ryder IF NOT IS_CHAR_DEAD big_smoke IF LOCATE_CHAR_ON_FOOT_2D sweet 2233.75 -1159.83 2.8 2.8 FALSE //1.0 1.0 moteldeal_f1flag = 9 ELSE IF TIMERA > 10000 SET_CHAR_COORDINATES sweet 2233.75 -1159.83 25.29 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //in car chat IF moteldeal_f1flag = 9 IF NOT IS_CHAR_DEAD ryder IF NOT IS_CHAR_DEAD big_smoke IF HAS_MISSION_AUDIO_LOADED 1 SET_NEAR_CLIP 0.1 SET_FIXED_CAMERA_POSITION 2225.0601 -1148.1921 26.0902 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2224.4465 -1148.9805 26.0466 JUMP_CUT DELETE_CHAR sweet TASK_PLAY_ANIM scplayer CAR_Sc3_FL CAR_CHAT 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM big_smoke CAR_Sc3_FR CAR_CHAT 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM ryder CAR_Sc3_BR CAR_CHAT 4.0 FALSE FALSE FALSE FALSE -1 PLAY_MISSION_AUDIO 1 PRINT_NOW FIN1_HD 5000 1 //I don’t like this, man. Look at all them other familiy hoods! They used to be Grove Streets. IF NOT IS_CHAR_DEAD ryder START_CHAR_FACIAL_TALK ryder 10000 ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD ryder STOP_CHAR_FACIAL_TALK ryder ENDIF CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FIN1_HG //Feel a little exposed, but I’m good. TIMERA = 0 moteldeal_f1flag = 10 ENDIF ENDIF ENDIF ENDIF //in car chat IF moteldeal_f1flag = 10 IF NOT IS_CHAR_DEAD ryder IF NOT IS_CHAR_DEAD big_smoke IF HAS_MISSION_AUDIO_LOADED 2 SET_FIXED_CAMERA_POSITION 2224.3921 -1148.6056 25.9857 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2224.3960 -1149.6051 25.955 JUMP_CUT //SET_FIXED_CAMERA_POSITION 2224.3059 -1148.6110 26.1209 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 2224.4033 -1149.6036 26.0508 JUMP_CUT PLAY_MISSION_AUDIO 2 PRINT_NOW FIN1_HE 5000 1 //Relax. We straight, they straight. START_CHAR_FACIAL_TALK scplayer 10000 WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 ENDWHILE CLEAR_PRINTS STOP_CHAR_FACIAL_TALK scplayer LOAD_MISSION_AUDIO 2 SOUND_FIN1_HH //This is the Los Santos Police Department; Everybody stay where you are! moteldeal_f1flag = 11 ENDIF ENDIF ENDIF ENDIF //in car chat IF moteldeal_f1flag = 11 IF NOT IS_CHAR_DEAD ryder IF NOT IS_CHAR_DEAD big_smoke IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW FIN1_HG 5000 1 //Feel a little exposed, but I’m good. IF NOT IS_CHAR_DEAD big_smoke START_CHAR_FACIAL_TALK big_smoke 10000 ENDIF CREATE_CAR POLMAV 2227.0295 -1130.199 25.305 extpoliceheli_f1 START_PLAYBACK_RECORDED_CAR extpoliceheli_f1 352 IF IS_PLAYBACK_GOING_ON_FOR_CAR extpoliceheli_f1 PAUSE_PLAYBACK_RECORDED_CAR extpoliceheli_f1 ENDIF CREATE_CHAR_INSIDE_CAR extpoliceheli_f1 PEDTYPE_MISSION4 SWAT exthelidriver_f1 SET_CHAR_CAN_BE_SHOT_IN_VEHICLE exthelidriver_f1 FALSE LOCK_CAR_DOORS extpoliceheli_f1 CARLOCK_LOCKED SET_CHAR_CANT_BE_DRAGGED_OUT exthelidriver_f1 TRUE SET_CHAR_DECISION_MAKER exthelidriver_f1 motel_DM SET_HELI_BLADES_FULL_SPEED extpoliceheli_f1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD big_smoke STOP_CHAR_FACIAL_TALK big_smoke ENDIF CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FIN1_HI //Oh shit! moteldeal_f1flag = 12 ENDIF ENDIF ENDIF ENDIF // zoom shot of heli flying to motel IF moteldeal_f1flag = 12 IF NOT IS_CAR_DEAD extpoliceheli_f1 IF IS_PLAYBACK_GOING_ON_FOR_CAR extpoliceheli_f1 IF HAS_MISSION_AUDIO_LOADED 2 SET_NEAR_CLIP 0.2 UNPAUSE_PLAYBACK_RECORDED_CAR extpoliceheli_f1 SET_FIXED_CAMERA_POSITION 2182.5217 -1083.6869 61.5308 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2182.9958 -1084.4630 61.115 JUMP_CUT TIMERA = 0 moteldeal_f1flag = 13 ENDIF ENDIF ENDIF ENDIF // Heli arriving at motel IF moteldeal_f1flag = 13 IF NOT IS_CAR_DEAD extpoliceheli_f1 IF TIMERA > 3000 TIMERA = 0 SET_FIXED_CAMERA_POSITION 2232.1777 -1149.9021 33.2809 0.0 0.0 0.0 POINT_CAMERA_AT_CAR extpoliceheli_f1 FIXED JUMP_CUT CREATE_SEARCHLIGHT_ON_VEHICLE extpoliceheli_f1 0.0 1.0 -0.5 2228.36 -1171.48 25.82 5.0 0.4 helispotlight_f1 MOVE_SEARCHLIGHT_BETWEEN_COORDS helispotlight_f1 2228.36 -1171.48 25.82 2215.41 -1142.51 25.5 0.5 PLAY_MISSION_AUDIO 2 PRINT_NOW FIN1_HH 5000 1 //This is the Los Santos Police Department; Everybody stay where you are! WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 ENDWHILE CLEAR_PRINTS LOAD_MISSION_AUDIO 2 SOUND_FIN1_CI //All units Rock’n’roll! REMOVE_ANIMATION CAR_CHAT moteldeal_f1flag = 14 ENDIF ENDIF ENDIF //player getting out the car IF moteldeal_f1flag = 14 IF NOT IS_CAR_DEAD extpoliceheli_f1 IF IS_PLAYBACK_GOING_ON_FOR_CAR extpoliceheli_f1 IF TIMERA > 3000 STOP_PLAYBACK_RECORDED_CAR extpoliceheli_f1 SET_FIXED_CAMERA_POSITION 2226.9976 -1144.5411 25.3493 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2226.5945 -1145.4496 25.4594 JUMP_CUT START_PLAYBACK_RECORDED_CAR extpoliceheli_f1 353 ///////////////////////354 // IF NOT IS_CHAR_DEAD grove3_f1 TASK_GO_STRAIGHT_TO_COORD grove3_f1 2219.71 -1178.52 25.34 PEDMOVE_RUN -1 ENDIF IF NOT IS_CHAR_DEAD grove4_f1 TASK_GO_STRAIGHT_TO_COORD grove4_f1 2206.65 -1172.63 25.08 PEDMOVE_RUN -1 ENDIF // TIMERA = 0 moteldeal_f1flag = 15 ENDIF ENDIF ENDIF ENDIF IF moteldeal_f1flag = 15 IF NOT IS_CAR_DEAD extpoliceheli_f1 IF NOT IS_CAR_DEAD sweet_car IF IS_CHAR_IN_ANY_CAR scplayer IF TIMERA > 2000 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW FIN1_HI 5000 1 //Oh shit! TASK_LEAVE_ANY_CAR scplayer IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD ryder CLEAR_LOOK_AT big_smoke CLEAR_LOOK_AT ryder TASK_LOOK_AT_CHAR big_smoke scplayer 15000 TASK_LOOK_AT_CHAR ryder scplayer 15000 ENDIF ENDIF TIMERA = 0 moteldeal_f1flag = 16 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF moteldeal_f1flag = 16 IF TIMERA > 2000 IF HAS_MISSION_AUDIO_FINISHED 1 IF HAS_MISSION_AUDIO_LOADED 2 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 // IF NOT IS_CHAR_DEAD grove3_f1 TASK_GO_STRAIGHT_TO_COORD grove3_f1 2203.25 -1178.87 25.44 PEDMOVE_RUN -1 ENDIF IF NOT IS_CHAR_DEAD grove4_f1 TASK_GO_STRAIGHT_TO_COORD grove4_f1 2204.15 -1153.74 25.58 PEDMOVE_RUN -1 ENDIF // SET_FIXED_CAMERA_POSITION 2224.0667 -1162.7069 40.9275 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2223.8423 -1163.2263 40.1030 JUMP_CUT SET_TIME_SCALE 0.5 CREATE_SWAT_ROPE PEDTYPE_MISSION4 SWAT 2223.56 -1168.05 32.28 swatrope1_f1 //front left 2223.98 -1167.86 32.39 GIVE_WEAPON_TO_CHAR swatrope1_f1 WEAPONTYPE_MP5 9999 SET_CHAR_ACCURACY swatrope1_f1 30 PLAY_MISSION_AUDIO 2 PRINT_NOW FIN1_CI 3000 1 //All units Rock’n’roll LOAD_MISSION_AUDIO 1 SOUND_FIN1_HJ //Man, what you doin’? WAIT 100 CREATE_SWAT_ROPE PEDTYPE_MISSION4 SWAT 2222.63 -1166.01 32.25 swatrope2_f1 //rear left GIVE_WEAPON_TO_CHAR swatrope2_f1 WEAPONTYPE_MP5 9999 SET_CHAR_ACCURACY swatrope2_f1 30 WAIT 50 CREATE_SWAT_ROPE PEDTYPE_MISSION4 SWAT 2221.58 -1168.9 32.27 swatrope3_f1 //front right GIVE_WEAPON_TO_CHAR swatrope3_f1 WEAPONTYPE_MP5 9999 SET_CHAR_ACCURACY swatrope3_f1 30 WAIT 100 CREATE_SWAT_ROPE PEDTYPE_MISSION4 SWAT 2220.74 -1167.28 32.22 swatrope4_f1 //rear right GIVE_WEAPON_TO_CHAR swatrope4_f1 WEAPONTYPE_MP5 9999 SET_CHAR_ACCURACY swatrope4_f1 30 WAIT 500 IF NOT IS_CHAR_DEAD grove3_f1 GIVE_WEAPON_TO_CHAR grove3_f1 WEAPONTYPE_PISTOL 9999 TASK_DUCK grove3_f1 10000 ENDIF IF NOT IS_CHAR_DEAD grove4_f1 GIVE_WEAPON_TO_CHAR grove4_f1 WEAPONTYPE_PISTOL 9999 TASK_GO_STRAIGHT_TO_COORD grove4_f1 2221.179 -1177.662 25.767 PEDMOVE_RUN 5000 ENDIF SET_FIXED_CAMERA_POSITION 2222.3960 -1165.5629 24.9959 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2222.3159 -1165.8301 25.9562 JUMP_CUT SET_CHAR_COORDINATES scplayer 2226.1436 -1149.9968 24.8496 SET_CHAR_HEADING scplayer 102.7208 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_SHOTGUN 60 TIMERA = 0 moteldeal_f1flag = 17 ENDIF ENDIF ENDIF ENDIF IF moteldeal_f1flag = 17 IF TIMERA > 1500 //1600 IF HAS_MISSION_AUDIO_FINISHED 2 IF HAS_MISSION_AUDIO_LOADED 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS LOAD_MISSION_AUDIO 2 SOUND_FIN1_HK //Get back in, Carl, we’re out of here! SET_TIME_SCALE 1.0 SET_FIXED_CAMERA_POSITION 2222.5940 -1150.7103 26.1976 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2223.4031 -1150.1393 26.0591 JUMP_CUT TIMERA = 0 PLAY_MISSION_AUDIO 1 PRINT_NOW FIN1_HJ 5000 1 //Man, what you doin’? IF NOT IS_CHAR_DEAD ryder START_CHAR_FACIAL_TALK ryder 10000 ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD ryder STOP_CHAR_FACIAL_TALK ryder TASK_LOOK_AT_CHAR scplayer ryder 3000 ENDIF CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FIN1_HL //I ain't leavin' my brother, I ain't no buster! WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 2 PRINT_NOW FIN1_HK 5000 1//Get back in, Carl, we’re out of here! IF NOT IS_CHAR_DEAD big_smoke START_CHAR_FACIAL_TALK big_smoke 10000 ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD big_smoke STOP_CHAR_FACIAL_TALK big_smoke ENDIF CLEAR_PRINTS CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_FIN1_HM //Man, it’s every motherfucker for himself! moteldeal_f1flag = 18 ENDIF ENDIF ENDIF ENDIF IF moteldeal_f1flag = 18 IF NOT IS_CHAR_DEAD swatrope1_f1 IF NOT IS_CHAR_DEAD swatrope2_f1 IF NOT IS_CHAR_DEAD swatrope3_f1 IF NOT IS_CHAR_DEAD swatrope4_f1 IF swatrope1_f1flag = 0 GET_SCRIPT_TASK_STATUS swatrope1_f1 CREATE_SWAT_ROPE swatrope1_f1status IF swatrope1_f1status = FINISHED_TASK TASK_GO_STRAIGHT_TO_COORD swatrope1_f1 2226.43 -1155.37 25.33 PEDMOVE_RUN 5000 swatrope1_f1flag = 1 ENDIF ENDIF IF swatrope2_f1flag = 0 GET_SCRIPT_TASK_STATUS swatrope2_f1 CREATE_SWAT_ROPE swatrope2_f1status IF swatrope2_f1status = FINISHED_TASK TASK_GO_STRAIGHT_TO_COORD swatrope2_f1 2230.52 -1165.15 25.63 PEDMOVE_RUN 5000 swatrope2_f1flag = 1 ENDIF ENDIF IF swatrope3_f1flag = 0 GET_SCRIPT_TASK_STATUS swatrope3_f1 CREATE_SWAT_ROPE swatrope3_f1status IF swatrope3_f1status = FINISHED_TASK TASK_GO_STRAIGHT_TO_COORD swatrope3_f1 2217.53 -1163.18 25.27 PEDMOVE_RUN 5000 swatrope3_f1flag = 1 ENDIF ENDIF IF swatrope4_f1flag = 0 GET_SCRIPT_TASK_STATUS swatrope4_f1 CREATE_SWAT_ROPE swatrope4_f1status IF swatrope4_f1status = FINISHED_TASK TASK_GO_STRAIGHT_TO_COORD swatrope4_f1 2226.25 -1167.00 25.04 PEDMOVE_RUN 5000 swatrope4_f1flag = 1 ENDIF ENDIF IF swatrope1_f1status = FINISHED_TASK IF swatrope2_f1status = FINISHED_TASK IF swatrope3_f1status = FINISHED_TASK IF swatrope4_f1status = FINISHED_TASK moteldeal_f1flag = 21 ENDIF ENDIF ENDIF ENDIF IF TIMERA > 3000 TASK_GO_STRAIGHT_TO_COORD swatrope1_f1 2226.43 -1155.37 25.33 PEDMOVE_RUN 5000 TASK_GO_STRAIGHT_TO_COORD swatrope2_f1 2230.52 -1165.15 25.63 PEDMOVE_RUN 5000 TASK_GO_STRAIGHT_TO_COORD swatrope3_f1 2217.53 -1163.18 25.27 PEDMOVE_RUN 5000 TASK_GO_STRAIGHT_TO_COORD swatrope4_f1 2226.25 -1167.00 25.04 PEDMOVE_RUN 5000 moteldeal_f1flag = 19 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF moteldeal_f1flag = 19 IF TIMERA > 3000 IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD sweet_car IF HAS_MISSION_AUDIO_LOADED 1 IF HAS_MISSION_AUDIO_LOADED 2 REQUEST_CAR_RECORDING 354 REQUEST_CAR_RECORDING 355 REQUEST_CAR_RECORDING 356 TASK_SHUFFLE_TO_NEXT_CAR_SEAT big_smoke sweet_car PLAY_MISSION_AUDIO 1 PRINT_NOW FIN1_HL 5000 1 //I ain't leavin' my brother, I ain't no buster! IF NOT IS_CHAR_DEAD scplayer START_CHAR_FACIAL_TALK scplayer 10000 ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 354 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 355 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 356 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD sweet_car START_PLAYBACK_RECORDED_CAR sweet_car 356 ENDIF PLAY_MISSION_AUDIO 2 PRINT_NOW FIN1_HM 3000 1 //Man, it’s every motherfucker for himself! IF NOT IS_CHAR_DEAD ryder START_CHAR_FACIAL_TALK ryder 10000 ENDIF IF NOT IS_CAR_DEAD extpoliceheli_f1 IF IS_PLAYBACK_GOING_ON_FOR_CAR extpoliceheli_f1 STOP_PLAYBACK_RECORDED_CAR extpoliceheli_f1 ENDIF HELI_GOTO_COORDS extpoliceheli_f1 2217.58 -1167.67 34.61 10.0 10.0 ENDIF TIMERA = 0 moteldeal_f1flag = 20 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF moteldeal_f1flag = 20 IF TIMERA > 2000 CREATE_CAR ENFORCER 2217.236 -1019.97 30.7 extpolicevan1_f1 SET_CAR_HEADING extpolicevan1_f1 176.5 SWITCH_CAR_SIREN extpolicevan1_f1 ON START_PLAYBACK_RECORDED_CAR extpolicevan1_f1 354 CREATE_CHAR_INSIDE_CAR extpolicevan1_f1 PEDTYPE_MISSION4 SWAT extvan1driver_f1 GIVE_WEAPON_TO_CHAR extvan1driver_f1 WEAPONTYPE_MP5 3000 SET_CHAR_ACCURACY extvan1driver_f1 30 CREATE_CHAR_AS_PASSENGER extpolicevan1_f1 PEDTYPE_MISSION4 SWAT 1 swat1_f1 GIVE_WEAPON_TO_CHAR swat1_f1 WEAPONTYPE_MP5 3000 SET_CHAR_ACCURACY swat1_f1 30 CREATE_CAR ENFORCER 2253.89 -1144.77 26.47 extpolicevan2_f1 SET_CAR_HEADING extpolicevan2_f1 89.947 SWITCH_CAR_SIREN extpolicevan2_f1 ON START_PLAYBACK_RECORDED_CAR extpolicevan2_f1 355 CREATE_CHAR_INSIDE_CAR extpolicevan2_f1 PEDTYPE_MISSION4 SWAT extvan2driver_f1 SET_CHAR_ACCURACY extvan2driver_f1 30 GIVE_WEAPON_TO_CHAR extvan2driver_f1 WEAPONTYPE_MP5 3000 CREATE_CHAR_AS_PASSENGER extpolicevan2_f1 PEDTYPE_MISSION4 SWAT 1 swat3_f1 SET_CHAR_ACCURACY swat3_f1 30 GIVE_WEAPON_TO_CHAR swat3_f1 WEAPONTYPE_MP5 3000 IF NOT IS_CHAR_DEAD grove1_f1 SET_CHAR_RELATIONSHIP grove1_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION4 SET_CHAR_DECISION_MAKER grove1_f1 extmotel_DM ENDIF IF NOT IS_CHAR_DEAD grove2_f1 SET_CHAR_RELATIONSHIP grove2_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION4 SET_CHAR_DECISION_MAKER grove2_f1 extmotel_DM ENDIF IF NOT IS_CHAR_DEAD grove3_f1 SET_CHAR_RELATIONSHIP grove3_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION4 SET_CHAR_DECISION_MAKER grove3_f1 extmotel_DM ENDIF IF NOT IS_CHAR_DEAD grove4_f1 SET_CHAR_RELATIONSHIP grove4_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION4 SET_CHAR_DECISION_MAKER grove4_f1 extmotel_DM ENDIF IF NOT IS_CHAR_DEAD swatrope1_f1 SET_CHAR_RELATIONSHIP swatrope1_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 SET_CHAR_RELATIONSHIP swatrope1_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER swatrope1_f1 extmotel_DM ENDIF IF NOT IS_CHAR_DEAD swatrope2_f1 SET_CHAR_RELATIONSHIP swatrope2_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 SET_CHAR_RELATIONSHIP swatrope2_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER swatrope2_f1 extmotel_DM ENDIF IF NOT IS_CHAR_DEAD swatrope3_f1 SET_CHAR_RELATIONSHIP swatrope3_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 SET_CHAR_RELATIONSHIP swatrope3_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER swatrope3_f1 extmotel_DM ENDIF IF NOT IS_CHAR_DEAD swatrope4_f1 SET_CHAR_RELATIONSHIP swatrope4_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 SET_CHAR_DECISION_MAKER swatrope4_f1 extmotel_DM ENDIF SET_FIXED_CAMERA_POSITION 2203.1633 -1178.8915 31.8778 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2203.8975 -1178.2249 31.7493 JUMP_CUT TASK_TOGGLE_DUCK scplayer TRUE TASK_GO_STRAIGHT_TO_COORD scplayer 2231.569 -1155.75 25.85 PEDMOVE_WALK -1 IF NOT IS_CHAR_DEAD grove1_f1 GIVE_WEAPON_TO_CHAR grove1_f1 WEAPONTYPE_PISTOL 9999 TASK_GO_STRAIGHT_TO_COORD grove1_f1 2228.421 -1164.66 25.766 PEDMOVE_RUN 5000 ENDIF IF NOT IS_CHAR_DEAD grove2_f1 GIVE_WEAPON_TO_CHAR grove2_f1 WEAPONTYPE_PISTOL 9999 TASK_GO_STRAIGHT_TO_COORD grove2_f1 2221.47 -1164.66 25.766 PEDMOVE_RUN 5000 ENDIF TIMERB = 0 moteldeal_f1flag = 21 ENDIF ENDIF IF moteldeal_f1flag = 21 IF NOT IS_CAR_DEAD extpolicevan1_f1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR extpolicevan1_f1 IF NOT IS_CHAR_DEAD swat1_f1 IF IS_CHAR_IN_CAR swat1_f1 extpolicevan1_f1 TASK_LEAVE_CAR swat1_f1 extpolicevan1_f1 ENDIF ENDIF IF NOT IS_CHAR_DEAD extvan1driver_f1 IF IS_CHAR_IN_CAR extvan1driver_f1 extpolicevan1_f1 TASK_LEAVE_CAR extvan1driver_f1 extpolicevan1_f1 ENDIF ENDIF moteldeal_f1flag = 22 ENDIF ENDIF ENDIF IF moteldeal_f1flag = 22 IF NOT IS_CAR_DEAD extpolicevan2_f1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR extpolicevan2_f1 IF NOT IS_CHAR_DEAD swat3_f1 IF IS_CHAR_IN_CAR swat3_f1 extpolicevan2_f1 TASK_LEAVE_CAR swat3_f1 extpolicevan2_f1 ENDIF ENDIF IF NOT IS_CHAR_DEAD extvan2driver_f1 IF IS_CHAR_IN_CAR extvan2driver_f1 extpolicevan2_f1 TASK_LEAVE_CAR extvan2driver_f1 extpolicevan2_f1 ENDIF ENDIF IF NOT IS_CHAR_DEAD extvan1driver_f1 SET_CHAR_RELATIONSHIP extvan1driver_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 SET_CHAR_RELATIONSHIP extvan1driver_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER extvan1driver_f1 extmotel_DM ENDIF IF NOT IS_CHAR_DEAD extvan2driver_f1 SET_CHAR_RELATIONSHIP extvan2driver_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 SET_CHAR_RELATIONSHIP extvan2driver_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER extvan2driver_f1 extmotel_DM ENDIF IF NOT IS_CHAR_DEAD swat1_f1 SET_CHAR_RELATIONSHIP swat1_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 SET_CHAR_RELATIONSHIP swat1_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER swat1_f1 extmotel_DM ENDIF IF NOT IS_CHAR_DEAD swat3_f1 SET_CHAR_RELATIONSHIP swat3_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 SET_CHAR_RELATIONSHIP swat3_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER swat3_f1 extmotel_DM ENDIF SET_CHAR_HEADING scplayer 150.0 TIMERA = 0 moteldeal_f1flag = 23 ENDIF ENDIF ENDIF IF moteldeal_f1flag = 23 IF extvan1driver_f1flag = 0 IF NOT IS_CHAR_DEAD extvan1driver_f1 IF NOT IS_CHAR_IN_ANY_CAR extvan1driver_f1 TASK_DUCK extvan1driver_f1 5000 extvan1driver_f1flag = 1 ENDIF ENDIF ENDIF IF swat1_f1flag = 0 IF NOT IS_CHAR_DEAD swat1_f1 IF NOT IS_CHAR_IN_ANY_CAR swat1_f1 TASK_GO_STRAIGHT_TO_COORD swat1_f1 2203.77 -1156.44 25.31 PEDMOVE_RUN 5000 swat1_f1flag = 1 ENDIF ENDIF ENDIF IF extvan2driver_f1flag = 0 IF NOT IS_CHAR_DEAD extvan2driver_f1 IF NOT IS_CHAR_IN_ANY_CAR extvan2driver_f1 FLUSH_ROUTE EXTEND_ROUTE 2215.4 -1146.19 25.85 EXTEND_ROUTE 2214.67 -1149.71 25.47 EXTEND_ROUTE 2204.83 -1157.04 25.88 EXTEND_ROUTE 2209.01 -1166.46 25.89 TASK_FOLLOW_POINT_ROUTE extvan2driver_f1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE extvan2driver_f1flag = 1 ENDIF ENDIF ENDIF IF swat3_f1flag = 0 IF NOT IS_CHAR_DEAD swat3_f1 IF NOT IS_CHAR_IN_ANY_CAR swat3_f1 FLUSH_ROUTE EXTEND_ROUTE 2222.47 -1146.52 25.43 EXTEND_ROUTE 2215.4 -1146.19 25.85 EXTEND_ROUTE 2204.83 -1157.04 25.88 EXTEND_ROUTE 2206.61 -1168.51 25.89 EXTEND_ROUTE 2211.00 -1171.72 25.55 TASK_FOLLOW_POINT_ROUTE swat3_f1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE swat3_f1flag = 1 ENDIF ENDIF ENDIF ENDIF IF moteldeal_f1flag = 23 IF TIMERA > 1000 ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// skipcutscene_f1flag = 1 SKIP_CUTSCENE_END ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// //PLAYER HAS SKIPPED CUTSCENE IF skipcutscene_f1flag = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CAMERA_RESET_NEW_SCRIPTABLES //set char coordinates and location IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2231.569 -1155.75 24.85 SET_CHAR_HEADING scplayer 150.0 ELSE SET_CHAR_COORDINATES scplayer 2231.569 -1155.75 24.85 SET_CHAR_HEADING scplayer 150.0 ENDIF //delete cars and chars DELETE_CHAR sweet DELETE_CHAR big_smoke DELETE_CHAR ryder UNLOAD_SPECIAL_CHARACTER 2 UNLOAD_SPECIAL_CHARACTER 3 REQUEST_MODEL GREENWOO REQUEST_MODEL FAM3 REQUEST_MODEL FAM2 REQUEST_MODEL MP5LNG REQUEST_MODEL COLT45 REQUEST_MODEL SWAT REQUEST_MODEL POLMAV REQUEST_MODEL ENFORCER LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED GREENWOO OR NOT HAS_MODEL_LOADED FAM3 OR NOT HAS_MODEL_LOADED FAM2 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED MP5LNG OR NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED SWAT OR NOT HAS_MODEL_LOADED POLMAV OR NOT HAS_MODEL_LOADED ENFORCER WAIT 0 ENDWHILE DELETE_CHAR exthelidriver_f1 DELETE_CHAR extvan1driver_f1 DELETE_CHAR extvan2driver_f1 DELETE_CHAR swatrope1_f1 DELETE_CHAR swatrope2_f1 DELETE_CHAR swatrope3_f1 DELETE_CHAR swatrope4_f1 DELETE_CHAR swat1_f1 // DELETE_CHAR swat2_f1 DELETE_CHAR swat3_f1 // DELETE_CHAR swat4_f1 DELETE_CHAR grove1_f1 DELETE_CHAR grove2_f1 DELETE_CHAR grove3_f1 DELETE_CHAR grove4_f1 // DELETE_CHAR grove5_f1 // DELETE_CHAR grove6_f1 IF NOT IS_CAR_DEAD extpoliceheli_f1 IF IS_PLAYBACK_GOING_ON_FOR_CAR extpoliceheli_f1 STOP_PLAYBACK_RECORDED_CAR extpoliceheli_f1 ENDIF ENDIF IF NOT IS_CAR_DEAD extpolicevan1_f1 IF IS_PLAYBACK_GOING_ON_FOR_CAR extpolicevan1_f1 STOP_PLAYBACK_RECORDED_CAR extpolicevan1_f1 ENDIF ENDIF IF NOT IS_CAR_DEAD extpolicevan2_f1 IF IS_PLAYBACK_GOING_ON_FOR_CAR extpolicevan2_f1 STOP_PLAYBACK_RECORDED_CAR extpolicevan2_f1 ENDIF ENDIF IF NOT IS_CAR_DEAD sweet_car IF IS_PLAYBACK_GOING_ON_FOR_CAR sweet_car STOP_PLAYBACK_RECORDED_CAR sweet_car ENDIF ENDIF DELETE_CAR extpoliceheli_f1 DELETE_CAR extpolicevan1_f1 DELETE_CAR extpolicevan2_f1 DELETE_CAR sweet_car DELETE_SEARCHLIGHT helispotlight_f1 //create chars, set their decision makers and give them weapons CREATE_CAR ENFORCER 2210.2400 -1159.9757 24.7265 extpolicevan1_f1 SET_CAR_HEADING extpolicevan1_f1 191.9611 SWITCH_CAR_SIREN extpolicevan1_f1 ON CREATE_CAR ENFORCER 2218.7881 -1140.9927 24.7814 extpolicevan2_f1 SET_CAR_HEADING extpolicevan2_f1 78.1047 SWITCH_CAR_SIREN extpolicevan2_f1 ON CREATE_CAR POLMAV 2276.22 -1140.87 60.0 extpoliceheli_f1 CREATE_CHAR_INSIDE_CAR extpoliceheli_f1 PEDTYPE_MISSION4 SWAT exthelidriver_f1 SET_CHAR_CAN_BE_SHOT_IN_VEHICLE exthelidriver_f1 FALSE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE exthelidriver_f1 FALSE LOCK_CAR_DOORS extpoliceheli_f1 CARLOCK_LOCKED SET_CHAR_CANT_BE_DRAGGED_OUT exthelidriver_f1 TRUE SET_HELI_BLADES_FULL_SPEED extpoliceheli_f1 SET_CAR_FORWARD_SPEED extpoliceheli_f1 10.0 HELI_GOTO_COORDS extpoliceheli_f1 2217.58 -1167.67 34.61 10.0 10.0 SET_CAR_COORDINATES extpoliceheli_f1 2217.58 -1167.67 34.61 CREATE_SEARCHLIGHT_ON_VEHICLE extpoliceheli_f1 0.0 1.0 -0.5 2228.36 -1171.48 25.82 5.0 0.4 helispotlight_f1 MOVE_SEARCHLIGHT_BETWEEN_COORDS helispotlight_f1 2228.36 -1171.48 25.82 2215.41 -1142.51 25.5 0.5 //swat CREATE_CHAR PEDTYPE_MISSION4 SWAT 2209.01 -1166.46 24.89 extvan2driver_f1 GIVE_WEAPON_TO_CHAR extvan2driver_f1 WEAPONTYPE_MP5 3000 TASK_TURN_CHAR_TO_FACE_COORD extvan2driver_f1 2217.87 -1162.6 25.33 SET_CHAR_ACCURACY extvan2driver_f1 30 CREATE_CHAR PEDTYPE_MISSION4 SWAT 2213.52 -1161.97 24.77 extvan1driver_f1 GIVE_WEAPON_TO_CHAR extvan1driver_f1 WEAPONTYPE_MP5 3000 TASK_TURN_CHAR_TO_FACE_COORD extvan1driver_f1 2217.87 -1162.6 25.33 SET_CHAR_ACCURACY extvan1driver_f1 30 CREATE_CHAR PEDTYPE_MISSION4 SWAT 2203.77 -1156.44 24.31 swat1_f1 GIVE_WEAPON_TO_CHAR swat1_f1 WEAPONTYPE_MP5 3000 TASK_TURN_CHAR_TO_FACE_COORD swat1_f1 2217.87 -1162.6 25.33 SET_CHAR_ACCURACY swat1_f1 30 CREATE_CHAR PEDTYPE_MISSION4 SWAT 2212.95 -1179.16 24.31 swat3_f1 GIVE_WEAPON_TO_CHAR swat3_f1 WEAPONTYPE_MP5 3000 TASK_TURN_CHAR_TO_FACE_COORD swat3_f1 2217.87 -1162.6 25.33 SET_CHAR_ACCURACY swat3_f1 30 CREATE_CHAR PEDTYPE_MISSION4 SWAT 2226.43 -1155.37 24.33 swatrope1_f1 GIVE_WEAPON_TO_CHAR swatrope1_f1 WEAPONTYPE_MP5 3000 TASK_TURN_CHAR_TO_FACE_COORD swatrope1_f1 2217.87 -1162.6 25.33 SET_CHAR_ACCURACY swatrope1_f1 30 CREATE_CHAR PEDTYPE_MISSION4 SWAT 2230.52 -1165.15 24.63 swatrope2_f1 GIVE_WEAPON_TO_CHAR swatrope2_f1 WEAPONTYPE_MP5 3000 TASK_TURN_CHAR_TO_FACE_COORD swatrope2_f1 2217.87 -1162.6 25.33 SET_CHAR_ACCURACY swatrope2_f1 30 CREATE_CHAR PEDTYPE_MISSION4 SWAT 2217.53 -1163.18 24.27 swatrope3_f1 GIVE_WEAPON_TO_CHAR swatrope3_f1 WEAPONTYPE_MP5 3000 TASK_TURN_CHAR_TO_FACE_COORD swatrope3_f1 2217.87 -1162.6 25.33 SET_CHAR_ACCURACY swatrope3_f1 30 CREATE_CHAR PEDTYPE_MISSION4 SWAT 2226.25 -1167.00 24.04 swatrope4_f1 GIVE_WEAPON_TO_CHAR swatrope4_f1 WEAPONTYPE_MP5 3000 TASK_TURN_CHAR_TO_FACE_COORD swatrope4_f1 2217.87 -1162.6 25.33 SET_CHAR_ACCURACY swatrope4_f1 30 //groves CREATE_CHAR PEDTYPE_MISSION3 FAM3 2228.421 -1164.66 24.766 grove1_f1 TASK_TURN_CHAR_TO_FACE_COORD grove1_f1 2217.87 -1162.6 25.33 SET_CHAR_DECISION_MAKER grove1_f1 extmotel_DM GIVE_WEAPON_TO_CHAR grove1_f1 WEAPONTYPE_PISTOL 9999 SET_CHAR_ACCURACY grove1_f1 30 SET_CHAR_NEVER_TARGETTED grove1_f1 TRUE CREATE_CHAR PEDTYPE_MISSION3 FAM3 2221.47 -1164.66 24.766 grove2_f1 TASK_TURN_CHAR_TO_FACE_COORD grove2_f1 2217.87 -1162.6 25.33 SET_CHAR_DECISION_MAKER grove2_f1 extmotel_DM GIVE_WEAPON_TO_CHAR grove2_f1 WEAPONTYPE_PISTOL 9999 SET_CHAR_ACCURACY grove2_f1 40 SET_CHAR_NEVER_TARGETTED grove2_f1 TRUE CREATE_CHAR PEDTYPE_MISSION3 FAM2 2227.2244 -1172.0699 24.7265 grove3_f1 TASK_TURN_CHAR_TO_FACE_COORD grove3_f1 2217.87 -1162.6 25.33 SET_CHAR_DECISION_MAKER grove3_f1 extmotel_DM GIVE_WEAPON_TO_CHAR grove3_f1 WEAPONTYPE_PISTOL 9999 SET_CHAR_ACCURACY grove3_f1 30 SET_CHAR_NEVER_TARGETTED grove3_f1 TRUE CREATE_CHAR PEDTYPE_MISSION3 FAM2 2221.179 -1177.662 24.767 grove4_f1 TASK_TURN_CHAR_TO_FACE_COORD grove4_f1 2217.87 -1162.6 25.33 SET_CHAR_DECISION_MAKER grove4_f1 extmotel_DM GIVE_WEAPON_TO_CHAR grove4_f1 WEAPONTYPE_PISTOL 9999 SET_CHAR_ACCURACY grove4_f1 40 SET_CHAR_NEVER_TARGETTED grove4_f1 TRUE SET_CHAR_RELATIONSHIP grove1_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION4 SET_CHAR_DECISION_MAKER grove1_f1 extmotel_DM SET_CHAR_RELATIONSHIP grove2_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION4 SET_CHAR_DECISION_MAKER grove2_f1 extmotel_DM SET_CHAR_RELATIONSHIP grove3_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION4 SET_CHAR_DECISION_MAKER grove3_f1 extmotel_DM SET_CHAR_RELATIONSHIP grove4_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION4 SET_CHAR_DECISION_MAKER grove4_f1 extmotel_DM SET_CHAR_RELATIONSHIP extvan1driver_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 SET_CHAR_RELATIONSHIP extvan1driver_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER extvan1driver_f1 extmotel_DM SET_CHAR_RELATIONSHIP extvan2driver_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 SET_CHAR_RELATIONSHIP extvan2driver_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER extvan2driver_f1 extmotel_DM SET_CHAR_RELATIONSHIP swatrope1_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 SET_CHAR_RELATIONSHIP swatrope1_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER swatrope1_f1 extmotel_DM SET_CHAR_RELATIONSHIP swatrope2_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 SET_CHAR_RELATIONSHIP swatrope2_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER swatrope2_f1 extmotel_DM SET_CHAR_RELATIONSHIP swatrope3_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 SET_CHAR_RELATIONSHIP swatrope3_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER swatrope3_f1 extmotel_DM SET_CHAR_RELATIONSHIP swatrope4_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 SET_CHAR_RELATIONSHIP swatrope4_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER swatrope4_f1 extmotel_DM SET_CHAR_RELATIONSHIP swat1_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 SET_CHAR_DECISION_MAKER swat1_f1 extmotel_DM SET_CHAR_RELATIONSHIP swat3_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 SET_CHAR_DECISION_MAKER swat3_f1 extmotel_DM CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 SET_TIME_SCALE 1.0 RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_SHOTGUN 60 SET_CHAR_HEADING scplayer 192.0 SET_PLAYER_CONTROL PLAYER1 ON DO_FADE 1500 FADE_IN ENDIF IF NOT IS_CAR_DEAD extpoliceheli_f1 SET_CAR_HEALTH extpoliceheli_f1 700 ENDIF DELETE_CHAR big_smoke DELETE_CHAR ryder DELETE_CAR sweet_car MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO UNLOAD_SPECIAL_CHARACTER 2 UNLOAD_SPECIAL_CHARACTER 3 REMOVE_ANIMATION CAR_CHAT CLEAR_PRINTS RESTORE_CAMERA_JUMPCUT REMOVE_BLIP motel_f1blip REMOVE_BLIP sweet_f1blip ADD_BLIP_FOR_COORD 2235.3 -1159.67 25.94 motel_f1blip SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL PLAYER1 ON PRINT_NOW LAF1_17 10000 1 //Go inside the motel and get Sweet out of there safely! moteldeal_f1flag = 24 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////// Inside Motel //////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF moteldeal_f1flag = 24 //marking cars as no longer needed if player destroys them outside the motel //heli and spotlight IF extpoliceheli_f1flag = 0 IF IS_CAR_DEAD extpoliceheli_f1 MARK_MODEL_AS_NO_LONGER_NEEDED POLMAV DELETE_SEARCHLIGHT helispotlight_f1 extpoliceheli_f1flag = 1 ENDIF ENDIF // IF familycar2_f1flag = 0 // IF IS_CAR_DEAD familycar2_f1 // MARK_CAR_AS_NO_LONGER_NEEDED familycar2_f1 // familycar2_f1flag = 1 // ENDIF // ENDIF // // IF familycar3_f1flag = 0 // IF IS_CAR_DEAD familycar3_f1 // MARK_CAR_AS_NO_LONGER_NEEDED familycar3_f1 // familycar3_f1flag = 1 // ENDIF // ENDIF // // IF familycar2_f1flag = 0 // IF familycar3_f1flag = 0 // MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO // familycar2_f1flag = 1 // familycar3_f1flag = 1 // ENDIF // ENDIF IF extpolicevan1_f1flag = 0 IF IS_CAR_DEAD extpolicevan1_f1 MARK_CAR_AS_NO_LONGER_NEEDED extpolicevan1_f1 extpolicevan1_f1flag = 1 ENDIF ENDIF IF extpolicevan2_f1flag = 0 IF IS_CAR_DEAD extpolicevan2_f1 MARK_CAR_AS_NO_LONGER_NEEDED extpolicevan2_f1 extpolicevan2_f1flag = 1 ENDIF ENDIF IF extpolicevan1_f1flag = 1 IF extpolicevan2_f1flag = 1 MARK_MODEL_AS_NO_LONGER_NEEDED ENFORCER extpolicevan1_f1flag = 2 extpolicevan2_f1flag = 2 ENDIF ENDIF GET_CHAR_AREA_VISIBLE scplayer motel_interior IF motel_interior = 15 //player is inside motel DELETE_CHAR exthelidriver_f1 DELETE_CHAR extvan1driver_f1 DELETE_CHAR extvan2driver_f1 DELETE_CHAR swatrope1_f1 DELETE_CHAR swatrope2_f1 DELETE_CHAR swatrope3_f1 DELETE_CHAR swatrope4_f1 DELETE_CHAR swat1_f1 DELETE_CHAR swat3_f1 DELETE_CHAR grove1_f1 DELETE_CHAR grove2_f1 DELETE_CHAR grove3_f1 DELETE_CHAR grove4_f1 DELETE_CAR extpoliceheli_f1 DELETE_CAR extpolicevan1_f1 DELETE_CAR extpolicevan2_f1 DELETE_SEARCHLIGHT helispotlight_f1 MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO MARK_MODEL_AS_NO_LONGER_NEEDED POLMAV MARK_MODEL_AS_NO_LONGER_NEEDED ENFORCER swat1_f1flag = 0 swat2_f1flag = 0 swat3_f1flag = 0 swat4_f1flag = 0 swatrope1_f1flag = 0 swatrope1_f1flag = 0 SET_PLAYER_CONTROL PLAYER1 OFF REMOVE_BLIP motel_f1blip REMOVE_ANIMATION CAR_CHAT CREATE_CHAR PEDTYPE_MISSION1 FAM2 2229.566 -1150.495 1029.0 grove1_f1 //grove guy that will fall off railings //.366 SET_CHAR_HAS_USED_ENTRY_EXIT grove1_f1 2232.41 -1160.04 20.0 SET_CHAR_HEADING grove1_f1 86.6836 SET_CHAR_NEVER_TARGETTED grove1_f1 TRUE SET_CHAR_DECISION_MAKER grove1_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER grove1_f1 motel_DM LOAD_MISSION_AUDIO 1 SOUND_FIN1_JC //Where the OG’s at – I gotta go get my brother, Sweet. LOAD_MISSION_AUDIO 2 SOUND_FIN1_AS // Go Go Go! LOAD_MISSION_AUDIO 3 SOUND_CEILING_VENT_OPEN REQUEST_ANIMATION SWAT REQUEST_MODEL BFYPRO REQUEST_MODEL imy_skylight REQUEST_MODEL kmb_trolley REQUEST_ANIMATION KISSING LOAD_ALL_MODELS_NOW //LOAD_SCENE 2229.5913 -1150.6475 1028.7981 WHILE NOT HAS_ANIMATION_LOADED SWAT OR NOT HAS_MODEL_LOADED BFYPRO OR NOT HAS_MODEL_LOADED imy_skylight OR NOT HAS_ANIMATION_LOADED KISSING OR NOT HAS_MODEL_LOADED kmb_trolley WAIT 0 ENDWHILE WHILE NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 OR NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE //pickups CREATE_PICKUP BODYARMOUR PICKUP_ONCE 2240.686 -1187.269 1033.836 armour1_f1 CREATE_OBJECT_NO_OFFSET imy_skylight 2246.07 -1191.242 1037.234 skylite_f1 CREATE_OBJECT_NO_OFFSET lxr_motel_doorsim 2239.432 -1170.749 1029.997 breachdoor_f1 SET_OBJECT_HEADING breachdoor_f1 270.0 CREATE_OBJECT_NO_OFFSET lxr_motelvent 2217.072 -1188.664 1032.276 vent1_f1 SET_OBJECT_HEADING vent1_f1 180.0 CREATE_OBJECT lxr_motelvent 2193.188 -1164.511 1032.276 vent2_f1 SET_OBJECT_HEADING vent2_f1 90.0 FREEZE_OBJECT_POSITION vent1_f1 TRUE FREEZE_OBJECT_POSITION vent2_f1 TRUE CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 2227.16 -1148.02 1029.0 hoochie1_f1 //hoochie running downstairs SET_CHAR_HAS_USED_ENTRY_EXIT hoochie1_f1 2232.41 -1160.04 20.0 SET_CHAR_NEVER_TARGETTED hoochie1_f1 TRUE SET_CHAR_DECISION_MAKER hoochie1_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER hoochie1_f1 TRUE //sweet CREATE_CHAR PEDTYPE_SPECIAL SPECIAL01 2202.23 -1156.914 1029.852 sweet SET_CHAR_HAS_USED_ENTRY_EXIT sweet 2232.41 -1160.04 3.0 SET_CHAR_AREA_VISIBLE sweet 15 SET_CHAR_SUFFERS_CRITICAL_HITS sweet FALSE SET_CHAR_HEADING sweet 62.083 SET_CHAR_NEVER_TARGETTED sweet TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER sweet TRUE SET_CHAR_DECISION_MAKER sweet motel_DM ADD_BLIP_FOR_CHAR sweet sweet_f1blip SET_BLIP_AS_FRIENDLY sweet_f1blip TRUE SET_CHAR_HEALTH sweet 1000 GIVE_WEAPON_TO_CHAR sweet WEAPONTYPE_MP5 9999 SET_CHAR_PROOFS sweet FALSE TRUE TRUE TRUE TRUE //entrance CREATE_CHAR PEDTYPE_MISSION1 FAM2 2220.5242 -1137.8256 1026.7981 woundedgrove1_f1 //wounded guy that tells player where sweet is SET_CHAR_HAS_USED_ENTRY_EXIT woundedgrove1_f1 2232.41 -1160.04 20.0 SET_CHAR_HEADING woundedgrove1_f1 181.8677 TASK_PLAY_ANIM_NON_INTERRUPTABLE woundedgrove1_f1 gnstwall_injurd SWAT 8.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_PROOFS woundedgrove1_f1 TRUE TRUE TRUE TRUE TRUE SET_CHAR_NEVER_TARGETTED woundedgrove1_f1 TRUE SET_CHAR_DECISION_MAKER woundedgrove1_f1 motel_DM SET_CHAR_BLEEDING woundedgrove1_f1 TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER woundedgrove1_f1 TRUE CREATE_CHAR PEDTYPE_MISSION1 FAM2 2234.92 -1149.63 1029.0 grove2_f1 //explode this guys head as soon as created SET_CHAR_DECISION_MAKER grove2_f1 motel_DM SET_CHAR_HAS_USED_ENTRY_EXIT grove2_f1 2232.41 -1160.04 20.0 CREATE_CHAR PEDTYPE_MISSION2 SWAT 2239.309 -1151.724 1028.779 swat2_f1 //swat that is peeking around first corner and shooting SET_CHAR_HEADING swat2_f1 177.9528 GIVE_WEAPON_TO_CHAR swat2_f1 WEAPONTYPE_MP5 9999 SET_CHAR_DECISION_MAKER swat2_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat2_f1 TRUE SET_CHAR_HEALTH swat2_f1 100 SET_CHAR_HAS_USED_ENTRY_EXIT swat2_f1 2232.41 -1160.04 20.0 CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 2234.99 -1159.55 1029.84 hoochie2_f1 //hoochie running through doors SET_CHAR_HEADING hoochie2_f1 267.0618 SET_CHAR_NEVER_TARGETTED hoochie2_f1 TRUE SET_CHAR_DECISION_MAKER hoochie2_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER hoochie2_f1 TRUE SET_CHAR_HAS_USED_ENTRY_EXIT hoochie2_f1 2232.41 -1160.04 20.0 SET_CHAR_PROOFS hoochie2_f1 FALSE TRUE FALSE FALSE FALSE //set piece for swat breaching the door //swat3 swat4 swat5 CREATE_CHAR PEDTYPE_MISSION2 SWAT 2238.817 -1170.598 1028.8125 swat3_f1 SET_CHAR_HEADING swat3_f1 272.0738 GIVE_WEAPON_TO_CHAR swat3_f1 WEAPONTYPE_MP5 9999 SET_CHAR_DECISION_MAKER swat3_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat3_f1 TRUE SET_CHAR_HEALTH swat3_f1 150 SET_CHAR_SHOOT_RATE swat3_f1 80 SET_CHAR_HAS_USED_ENTRY_EXIT swat3_f1 2232.41 -1160.04 20.0 //grove controlled corner CREATE_CHAR PEDTYPE_MISSION3 FAM2 2244.5 -1189.627 1028.8 grove3_f1 //grove behind table SET_CHAR_HEADING grove3_f1 88.196 SET_CHAR_ONLY_DAMAGED_BY_PLAYER grove3_f1 TRUE GIVE_WEAPON_TO_CHAR grove3_f1 WEAPONTYPE_PISTOL 9999 SET_CHAR_NEVER_TARGETTED grove3_f1 TRUE SET_CHAR_ACCURACY grove3_f1 10 SET_CHAR_RELATIONSHIP grove3_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION4 SET_CHAR_DECISION_MAKER grove3_f1 motel_DM SET_CHAR_HAS_USED_ENTRY_EXIT grove3_f1 2232.41 -1160.04 20.0 CREATE_CHAR PEDTYPE_MISSION3 FAM3 2241.0503 -1192.3729 1028.7981 grove4_f1 //grove behind sofa facing first corridor SET_CHAR_HEADING grove4_f1 358.2577 SET_CHAR_ONLY_DAMAGED_BY_PLAYER grove4_f1 TRUE GIVE_WEAPON_TO_CHAR grove4_f1 WEAPONTYPE_PISTOL 9999 SET_CHAR_ACCURACY grove4_f1 10 SET_CHAR_NEVER_TARGETTED grove4_f1 TRUE SET_CHAR_DECISION_MAKER grove4_f1 motel_DM SET_CHAR_HAS_USED_ENTRY_EXIT grove4_f1 2232.41 -1160.04 20.0 CREATE_CHAR PEDTYPE_MISSION1 FAM2 2240.156 -1186.704 1028.7981 grove5_f1 //grove peeking around wall shooting //dies when pops out SET_CHAR_HEADING grove5_f1 90.1792 SET_CHAR_ONLY_DAMAGED_BY_PLAYER grove5_f1 TRUE GIVE_WEAPON_TO_CHAR grove5_f1 WEAPONTYPE_MP5 9999 SET_CHAR_NEVER_TARGETTED grove5_f1 TRUE SET_CHAR_DECISION_MAKER grove5_f1 motel_DM SET_CHAR_HAS_USED_ENTRY_EXIT grove5_f1 2232.41 -1160.04 20.0 CREATE_CHAR PEDTYPE_MISSION1 FAM3 2234.84 -1191.202 1029.845 woundedgrove2_f1 //grove against wall near other grove guys SET_CHAR_HEADING woundedgrove2_f1 272.171 SET_CHAR_ONLY_DAMAGED_BY_PLAYER woundedgrove2_f1 TRUE SET_CHAR_NEVER_TARGETTED woundedgrove2_f1 TRUE TASK_PLAY_ANIM_NON_INTERRUPTABLE woundedgrove2_f1 gnstwall_injurd SWAT 8.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_BLEEDING woundedgrove2_f1 TRUE SET_CHAR_DECISION_MAKER woundedgrove2_f1 motel_DM SET_CHAR_HAS_USED_ENTRY_EXIT woundedgrove2_f1 2232.41 -1160.04 20.0 //explosion_door CREATE_FX_SYSTEM explosion_door 2239.51 -1170.77 1029.84 TRUE breachfx_f1 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2232.41 -1160.04 20.0 SET_CHAR_COORDINATES scplayer 2216.34 -1150.509 1024.85 SET_PLAYER_CONTROL PLAYER1 ON SET_CAMERA_BEHIND_PLAYER SWITCH_ENTRY_EXIT motel1 FALSE PRINT_HELP LAF1_7 //You can purchase drinks at ~h~vending machines ~w~this will replenish your health. PRINT_NOW LAF1_6 5000 1 //~s~Make your way through the motel and find ~b~Sweet~s~. progressaudio_f1flag = 0 handlingaudio_f1flag = 0 moteldeal_f1flag = 25 insidemotel_f1flag = 1 CHECKPOINT_SAVE 99 ENDIF ENDIF IF roofmotel_f1flag = 0 IF insidemotel_f1flag = 1 ///Motel entrance /////////////////////////////////////////////////////////////////// IF motelentrance_f1flag = 0 CLEAR_PRINTS //create trolleys CREATE_OBJECT_NO_OFFSET KMB_TROLLEY 2242.433 -1166.712 1029.304 trolley1_f1 SET_OBJECT_HEALTH trolley1_f1 150 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER trolley1_f1 TRUE CREATE_OBJECT_NO_OFFSET KMB_TROLLEY 2240.11 -1174.919 1029.304 trolley2_f1 SET_OBJECT_HEALTH trolley2_f1 250 CREATE_OBJECT_NO_OFFSET KMB_TROLLEY 2229.87 -1189.845 1029.304 trolley3_f1 SET_OBJECT_HEADING trolley3_f1 90.0 SET_OBJECT_HEALTH trolley3_f1 150 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER trolley3_f1 TRUE CREATE_OBJECT_NO_OFFSET KMB_TROLLEY 2217.569 -1187.528 1029.304 trolley4_f1 SET_OBJECT_HEADING trolley4_f1 90.0 SET_OBJECT_HEALTH trolley4_f1 250 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER trolley4_f1 TRUE CREATE_OBJECT_NO_OFFSET KMB_TROLLEY 2204.649 -1187.544 1029.304 trolley5_f1 SET_OBJECT_HEADING trolley5_f1 90.0 SET_OBJECT_HEALTH trolley5_f1 150 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER trolley5_f1 TRUE CREATE_OBJECT_NO_OFFSET KMB_TROLLEY 2194.345 -1171.269 1029.304 trolley6_f1 SET_OBJECT_HEALTH trolley6_f1 250 CREATE_OBJECT_NO_OFFSET KMB_TROLLEY 2192.079 -1166.364 1029.304 trolley7_f1 SET_OBJECT_HEALTH trolley7_f1 150 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER trolley7_f1 TRUE //hoochie running IF NOT IS_CHAR_DEAD hoochie1_f1 SET_CHAR_HEALTH hoochie1_f1 1 OPEN_SEQUENCE_TASK hoochieflee_f1seq FLUSH_ROUTE EXTEND_ROUTE 2227.25 -1139.12 1029.84 EXTEND_ROUTE 2221.17 -1139.09 1027.84 EXTEND_ROUTE 2221.64 -1145.11 1025.84 EXTEND_ROUTE 2224.556 -1145.901 1025.85 EXTEND_ROUTE 2224.465 -1142.276 1025.85 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_SPRINT FOLLOW_ROUTE_ONCE TASK_PLAY_ANIM -1 COWER PED 8.0 TRUE FALSE FALSE FALSE -1 TASK_SET_CHAR_DECISION_MAKER -1 coward_DM CLOSE_SEQUENCE_TASK hoochieflee_f1seq PERFORM_SEQUENCE_TASK hoochie1_f1 hoochieflee_f1seq CLEAR_SEQUENCE_TASK hoochieflee_f1seq ENDIF //guy falling off railings IF NOT IS_CHAR_DEAD grove1_f1 //TASK_PLAY_ANIM_NON_INTERRUPTABLE grove1_f1 Rail_fall SWAT 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_WITH_FLAGS grove1_f1 Rail_fall SWAT 8.0 FALSE FALSE FALSE TRUE -1 FALSE TRUE ENDIF //peeking is shooting at him IF NOT IS_CHAR_DEAD grove1_f1 IF NOT IS_CHAR_DEAD swat2_f1 enemy_f1 = swat2_f1 enemytarget_f1 = grove1_f1 enemytarget2_f1 = scplayer GOSUB stay2shoot_f1label ENDIF ENDIF motelentrance_f1flag = 1 ENDIF IF motelentrance_f1flag = 1 IF NOT IS_CHAR_DEAD grove1_f1 IF IS_CHAR_PLAYING_ANIM grove1_f1 Rail_fall GET_CHAR_ANIM_CURRENT_TIME grove1_f1 Rail_fall playeranim_f1 IF playeranim_f1 = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE grove1_f1 Rail_fall_crawl SWAT 1000.0 FALSE FALSE FALSE TRUE -1 //TASK_PLAY_ANIM_WITH_FLAGS grove1_f1 Rail_fall_crawl SWAT 8.0 FALSE FALSE FALSE TRUE -1 FALSE TRUE motelentrance_f1flag = 2 ENDIF ENDIF ENDIF ENDIF //wounded guy chatting to the player IF woundedgrove1_f1flag = 0 IF NOT IS_CHAR_DEAD woundedgrove1_f1 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D woundedgrove1_f1 scplayer 4.5 4.5 3.5 FALSE CREATE_CHAR PEDTYPE_MISSION2 SWAT 2229.462 -1150.524 1028.845 swat1_f1 //swat that rolls out SET_CHAR_HAS_USED_ENTRY_EXIT swat1_f1 2232.41 -1160.04 20.0 SET_CHAR_HEADING swat1_f1 358.795 GIVE_WEAPON_TO_CHAR swat1_f1 WEAPONTYPE_MP5 9999 SET_CHAR_DECISION_MAKER swat1_f1 motel_DM SET_CHAR_ACCURACY swat1_f1 50 SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat1_f1 TRUE SET_CHAR_HEALTH swat1_f1 150 SET_CHAR_MAX_HEALTH swat1_f1 150 DELETE_CHAR swat2_f1 CREATE_CHAR PEDTYPE_MISSION2 SWAT 2239.309 -1151.724 1029.279 swat2_f1 //swat that is peeking around first corner and shooting SET_CHAR_HAS_USED_ENTRY_EXIT swat2_f1 2232.41 -1160.04 20.0 SET_CHAR_HEADING swat2_f1 177.9528 GIVE_WEAPON_TO_CHAR swat2_f1 WEAPONTYPE_MP5 9999 SET_CHAR_DECISION_MAKER swat2_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat2_f1 TRUE SET_CHAR_ACCURACY swat2_f1 80 //peeking around corner swat IF swat2_f1flag = 0 IF NOT IS_CHAR_DEAD swat2_f1 enemy_f1 = swat2_f1 IF NOT IS_CHAR_DEAD grove5_f1 enemytarget_f1 = grove5_f1 coordshoot_f1flag = 1 enemyx_f1 = 2241.78 enemyy_f1 = -1194.52 enemyz_f1 = 1031.38 GOSUB peekright_f1label coordshoot_f1flag = 0 swat2_f1flag = 1 ENDIF ENDIF ENDIF woundedgrove1_f1flag = 1 ENDIF ENDIF ENDIF ///First corridor /////////////////////////////////////////////////////////////////// IF firstcorridor_f1flag = 0 //dead body IF grove2_f1flag = 0 IF NOT IS_CHAR_DEAD grove2_f1 EXPLODE_CHAR_HEAD grove2_f1 grove2_f1flag = 1 ENDIF ENDIF //rollout swat IF swat1_f1flag = 0 IF NOT IS_CHAR_DEAD swat1_f1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2229.5913 -1150.6475 1028.7981 7.2 7.2 1.5 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR swat1_f1 scplayer enemy_f1 = swat1_f1 GOSUB rolloutl_f1label swat1_f1flag = 1 ENDIF ENDIF ENDIF //if player gets close shoot him instead IF swat2_f1flag = 1 IF NOT IS_CHAR_DEAD swat2_f1 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR swat2_f1 scplayer OR LOCATE_CHAR_ANY_MEANS_CHAR_3D swat2_f1 scplayer 4.0 4.0 3.0 FALSE SET_CHAR_ACCURACY swat2_f1 50 TASK_KILL_CHAR_ON_FOOT swat2_f1 scplayer swat2_f1flag = 2 ENDIF ENDIF ENDIF //hoochie running and breach set piece IF breach_f1flag = 0 IF IS_CHAR_IN_AREA_3D scplayer 2243.8 -1147.93 1025.16 2238.74 -1162.62 1033.79 FALSE //grove corner starts shooting grovecorner_f1flag = 1 //hoochie running from one side to the other IF hoochie2_f1flag = 0 IF NOT IS_CHAR_DEAD hoochie2_f1 SET_CHAR_HEALTH hoochie2_f1 150 OPEN_SEQUENCE_TASK hoochie2_f1seq TASK_GO_STRAIGHT_TO_COORD -1 2249.355 -1159.683 1029.797 PEDMOVE_SPRINT 10000 TASK_ACHIEVE_HEADING -1 87.888 TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK hoochie2_f1seq PERFORM_SEQUENCE_TASK hoochie2_f1 hoochie2_f1seq CLEAR_SEQUENCE_TASK hoochie2_f1seq hoochie2_f1flag = 1 ENDIF ENDIF //2nd corridor CREATE_CHAR PEDTYPE_MISSION1 SWAT 2228.6072 -1189.7207 1028.7981 swat6_f1 //first trolley SET_CHAR_HAS_USED_ENTRY_EXIT swat6_f1 2232.41 -1160.04 20.0 SET_CHAR_HEADING swat6_f1 266.5963 GIVE_WEAPON_TO_CHAR swat6_f1 WEAPONTYPE_MP5 9999 SET_CHAR_DECISION_MAKER swat6_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat6_f1 TRUE SET_CHAR_HEALTH swat6_f1 150 SET_CHAR_MAX_HEALTH swat6_f1 150 SET_CHAR_USES_UPPERBODY_DAMAGE_ANIMS_ONLY swat6_f1 TRUE CREATE_CHAR PEDTYPE_MISSION1 SWAT 2225.796 -1186.783 1028.7981 swat7_f1 //right door peek and shoot SET_CHAR_HAS_USED_ENTRY_EXIT swat7_f1 2232.41 -1160.04 20.0 SET_CHAR_HEADING swat7_f1 273.6395 GIVE_WEAPON_TO_CHAR swat7_f1 WEAPONTYPE_MP5 9999 SET_CHAR_DECISION_MAKER swat7_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat7_f1 TRUE SET_CHAR_ACCURACY swat7_f1 80 SET_CHAR_HEALTH swat7_f1 150 SET_CHAR_MAX_HEALTH swat7_f1 150 TIMERB = 0 breach_f1flag = 1 ENDIF ENDIF IF breach_f1flag = 1 IF IS_CHAR_IN_AREA_3D scplayer 2243.0 -1154.3 1025.16 2238.74 -1170.62 1033.79 FALSE //2243.0 -1155.5 1025.16 2238.74 -1170.62 1033.79 breach_f1flag = 2 ENDIF ENDIF //breach set piece IF breach_f1flag = 2 // IF TIMERB > 100 //500 //DELAY FROM WHEN PLAYER ENTERS LOCATE TO WHEN THEY COME OUT //swat controlled corner CREATE_CHAR PEDTYPE_MISSION1 SWAT 2187.48 -1186.9 1033.3 swat8_f1 //up on stairs shoot stay in same place SET_CHAR_HAS_USED_ENTRY_EXIT swat8_f1 2232.41 -1160.04 20.0 SET_CHAR_HEADING swat8_f1 274.247 GIVE_WEAPON_TO_CHAR swat8_f1 WEAPONTYPE_MP5 99999 SET_CHAR_DECISION_MAKER swat8_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat8_f1 TRUE SET_CHAR_ACCURACY swat8_f1 80 SET_CHAR_HEALTH swat8_f1 150 SET_CHAR_MAX_HEALTH swat8_f1 150 CREATE_CHAR PEDTYPE_MISSION1 SWAT 2186.611 -1183.962 1033.837 swat9_f1 //runs down stairs SET_CHAR_HAS_USED_ENTRY_EXIT swat9_f1 2232.41 -1160.04 20.0 SET_CHAR_HEADING swat9_f1 286.2857 GIVE_WEAPON_TO_CHAR swat9_f1 WEAPONTYPE_MP5 99999 SET_CHAR_DECISION_MAKER swat9_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat9_f1 TRUE SET_CHAR_HEALTH swat9_f1 150 SET_CHAR_MAX_HEALTH swat9_f1 150 SET_CHAR_USES_UPPERBODY_DAMAGE_ANIMS_ONLY swat9_f1 TRUE CREATE_CHAR PEDTYPE_MISSION1 SWAT 2190.157 -1182.068 1033.829 swat10_f1 //up on stairs shoot stay in same place SET_CHAR_HAS_USED_ENTRY_EXIT swat10_f1 2232.41 -1160.04 20.0 SET_CHAR_HEADING swat10_f1 183.88771 GIVE_WEAPON_TO_CHAR swat10_f1 WEAPONTYPE_MP5 99999 SET_CHAR_DECISION_MAKER swat10_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat10_f1 TRUE SET_CHAR_HEALTH swat10_f1 150 SET_CHAR_MAX_HEALTH swat10_f1 150 CREATE_CHAR PEDTYPE_MISSION1 SWAT 2188.5791 -1184.7800 1028.7981 swat11_f1 //duck and shoot behind the sofa SET_CHAR_HAS_USED_ENTRY_EXIT swat11_f1 2232.41 -1160.04 20.0 SET_CHAR_HEADING swat11_f1 246.3679 GIVE_WEAPON_TO_CHAR swat11_f1 WEAPONTYPE_MP5 99999 SET_CHAR_DECISION_MAKER swat11_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat11_f1 TRUE SET_CHAR_HEALTH swat11_f1 150 SET_CHAR_USES_UPPERBODY_DAMAGE_ANIMS_ONLY swat11_f1 TRUE breach_f1flag = 3 // ENDIF ENDIF IF breach_f1flag = 3 IF swat3_f1flag = 0 IF NOT IS_CHAR_DEAD swat3_f1 IF DOES_OBJECT_EXIST breachdoor_f1 SET_OBJECT_COLLISION breachdoor_f1 FALSE BREAK_OBJECT breachdoor_f1 TRUE ENDIF IF missionaudio2_f1flag = 0 PLAY_MISSION_AUDIO 2 missionaudio2_f1flag = 1 ENDIF PLAY_AND_KILL_FX_SYSTEM breachfx_f1 TASK_PLAY_ANIM swat3_f1 SWT_BREACH_01 SWAT 1000.0 FALSE TRUE TRUE FALSE -1 swat3_f1flag = 1 TIMERB = 0 breach_f1flag = 4 ENDIF ENDIF ENDIF IF breach_f1flag = 4 IF swat4_f1flag = 0 IF TIMERB > 667 CREATE_CHAR PEDTYPE_MISSION2 SWAT 2238.317 -1170.598 1028.8125 swat4_f1 SET_CHAR_HEADING swat4_f1 272.0738 GIVE_WEAPON_TO_CHAR swat4_f1 WEAPONTYPE_MP5 9999 SET_CHAR_DECISION_MAKER swat4_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat4_f1 TRUE SET_CHAR_HEALTH swat4_f1 150 SET_CHAR_SHOOT_RATE swat4_f1 80 SET_CHAR_HAS_USED_ENTRY_EXIT swat4_f1 2232.41 -1160.04 20.0 TASK_PLAY_ANIM swat4_f1 SWT_BREACH_02 SWAT 1000.0 FALSE TRUE TRUE FALSE -1 TIMERB = 0 swat4_f1flag = 1 breach_f1flag = 5 ENDIF ENDIF ENDIF IF breach_f1flag = 5 IF swat5_f1flag = 0 IF TIMERB > 333 CREATE_CHAR PEDTYPE_MISSION2 SWAT 2237.818 -1170.598 1028.8125 swat5_f1 SET_CHAR_HEADING swat5_f1 272.0738 GIVE_WEAPON_TO_CHAR swat5_f1 WEAPONTYPE_MP5 9999 SET_CHAR_DECISION_MAKER swat5_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat5_f1 TRUE SET_CHAR_HEALTH swat5_f1 150 SET_CHAR_SHOOT_RATE swat5_f1 80 SET_CHAR_HAS_USED_ENTRY_EXIT swat5_f1 2232.41 -1160.04 20.0 TASK_PLAY_ANIM swat5_f1 SWT_BREACH_03 SWAT 1000.0 FALSE TRUE TRUE FALSE -1 swat5_f1flag = 1 breach_f1flag = 6 ENDIF ENDIF ENDIF IF swat3_f1flag = 1 IF NOT IS_CHAR_DEAD swat3_f1 GET_SCRIPT_TASK_STATUS swat3_f1 TASK_PLAY_ANIM swtbreach01_f1 IF swtbreach01_f1 = FINISHED_TASK OR LOCATE_CHAR_ANY_MEANS_CHAR_2D swat3_f1 scplayer 6.0 6.0 FALSE SET_CHAR_USES_UPPERBODY_DAMAGE_ANIMS_ONLY swat3_f1 TRUE enemy_f1 = swat3_f1 enemytarget_f1 = scplayer GOSUB stayshoot_f1label swat3_f1flag = 2 ENDIF ENDIF ENDIF IF swat4_f1flag = 1 IF NOT IS_CHAR_DEAD swat4_f1 GET_SCRIPT_TASK_STATUS swat4_f1 TASK_PLAY_ANIM swtbreach02_f1 IF swtbreach02_f1 = FINISHED_TASK OR LOCATE_CHAR_ANY_MEANS_CHAR_2D swat4_f1 scplayer 4.5 4.5 FALSE IF NOT IS_CHAR_DEAD grove4_f1 enemy_f1 = swat4_f1 enemytarget_f1 = scplayer GOSUB stayshoot_f1label ENDIF swat4_f1flag = 2 ENDIF ENDIF ENDIF IF swat5_f1flag = 1 IF NOT IS_CHAR_DEAD swat5_f1 GET_SCRIPT_TASK_STATUS swat5_f1 TASK_PLAY_ANIM swtbreach03_f1 IF swtbreach03_f1 = FINISHED_TASK OR LOCATE_CHAR_ANY_MEANS_CHAR_2D swat5_f1 scplayer 3.5 3.5 FALSE enemy_f1 = swat5_f1 enemytarget_f1 = scplayer GOSUB stayshoot_f1label swat5_f1flag = 2 ENDIF ENDIF ENDIF IF hoochie2_f1flag = 1 IF NOT IS_CHAR_DEAD hoochie2_f1 IF LOCATE_STOPPED_CHAR_ON_FOOT_3D hoochie2_f1 2249.35 -1159.683 1028.79 3.0 3.0 3.0 FALSE IF NOT HAS_CHAR_BEEN_DAMAGED_BY_CHAR hoochie2_f1 scplayer IF LOCATE_CHAR_ON_FOOT_3D scplayer 2248.35 -1159.683 1028.79 3.0 3.0 3.0 FALSE CLEAR_AREA 2248.35 -1159.683 20.0 20.0 FALSE SET_PLAYER_CONTROL PLAYER1 OFF SET_EVERYONE_IGNORE_PLAYER PLAYER1 FALSE SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 2247.0474 -1157.2809 1030.5811 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2247.6182 -1158.0294 1030.2440 JUMP_CUT CLEAR_CHAR_TASKS_IMMEDIATELY hoochie2_f1 SET_CHAR_COORDINATES hoochie2_f1 2249.35 -1159.683 1028.79 SET_CHAR_HEADING hoochie2_f1 87.888 SET_CHAR_COORDINATES scplayer 2248.35 -1159.683 1028.79 SET_CHAR_HEADING scplayer 267.888 CLEAR_MISSION_AUDIO 1 IF NOT handlingaudio_f1flag = 0 handlingaudio_f1flag = 0 progressaudio_f1flag++ ENDIF LOAD_MISSION_AUDIO 1 SOUND_FIN1_DC //Oh baby, you're hurt! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW FIN1_DC 3000 1 //Oh baby, you're hurt! TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer PLAYA_KISS_03 KISSING 4.0 FALSE FALSE FALSE FALSE -1 IF NOT IS_CHAR_DEAD hoochie2_f1 TASK_PLAY_ANIM_NON_INTERRUPTABLE hoochie2_f1 GRLFRD_KISS_03 KISSING 4.0 FALSE FALSE FALSE FALSE -1 ENDIF LVAR_INT nHealth nHealth = 100 GET_INT_STAT MAX_HEALTH nHealth SET_CHAR_HEALTH scplayer nHealth //SET_CHAR_HEALTH scplayer 100 hoochie2_f1flag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF IF hoochie2_f1flag = 2 IF NOT IS_CHAR_DEAD hoochie2_f1 IF IS_CHAR_PLAYING_ANIM scplayer PLAYA_KISS_03 IF IS_CHAR_PLAYING_ANIM hoochie2_f1 GRLFRD_KISS_03 hoochie2_f1flag = 3 ENDIF ENDIF ENDIF ENDIF IF hoochie2_f1flag = 3 IF NOT IS_CHAR_DEAD hoochie2_f1 IF NOT IS_CHAR_PLAYING_ANIM scplayer PLAYA_KISS_03 IF NOT IS_CHAR_PLAYING_ANIM hoochie2_f1 GRLFRD_KISS_03 SET_CHAR_HEALTH hoochie2_f1 5 SET_PLAYER_CONTROL PLAYER1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER CLEAR_PRINTS hoochie2_f1flag = 4 ENDIF ENDIF ENDIF ENDIF ENDIF /// Grove controlled corner /////////////////////////////////////////////////////////////////// IF grovecorner_f1flag = 1 //grove behind table IF NOT IS_CHAR_DEAD grove3_f1 enemy_f1 = grove3_f1 enemyx_f1 = 2232.41 enemyy_f1 = -1188.66 enemyz_f1 = 1030.26 GOSUB shootatcoords_f1label ENDIF //grove behind sofa facing first corridor IF NOT IS_CHAR_DEAD grove4_f1 enemy_f1 = grove4_f1 enemyx_f1 = 2233.35 enemyy_f1 = -1187.99 enemyz_f1 = 1030.4 GOSUB shootatcoords_f1label ENDIF //grove peeking around wall shooting //dies when pops out IF NOT IS_CHAR_DEAD grove5_f1 enemy_f1 = grove5_f1 IF NOT IS_CHAR_DEAD swat6_f1 enemytarget_f1 = swat6_f1 enemyx_f1 = 2186.49 enemyy_f1 = -1189.18 enemyz_f1 = 1030.97 coordshoot_f1flag = 1 GOSUB peekright_f1label coordshoot_f1flag = 0 ENDIF ENDIF //first trolley swat IF NOT IS_CHAR_DEAD swat6_f1 enemy_f1 = swat6_f1 enemytarget_f1 = scplayer GOSUB stayshoot_f1label ENDIF grovecorner_f1flag = 2 ENDIF //once player is in grove corner get the swat corner reacting IF grovecorner_f1flag = 2 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2235.48 -1188.77 10.0 10.0 FALSE //peeking around door IF NOT IS_CHAR_DEAD swat7_f1 enemy_f1 = swat7_f1 GOSUB peekleft_f1label ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED woundedgrove1_f1 MARK_CHAR_AS_NO_LONGER_NEEDED hoochie1_f1 MARK_CHAR_AS_NO_LONGER_NEEDED grove1_f1 MARK_CHAR_AS_NO_LONGER_NEEDED swat1_f1 MARK_CHAR_AS_NO_LONGER_NEEDED grove2_f1 MARK_CHAR_AS_NO_LONGER_NEEDED swat2_f1 REMOVE_CHAR_ELEGANTLY hoochie2_f1 IF IS_CHAR_DEAD swat3_f1 MARK_CHAR_AS_NO_LONGER_NEEDED swat3_f1 ENDIF IF IS_CHAR_DEAD swat4_f1 MARK_CHAR_AS_NO_LONGER_NEEDED swat4_f1 ENDIF IF IS_CHAR_DEAD swat5_f1 MARK_CHAR_AS_NO_LONGER_NEEDED swat5_f1 ENDIF //create 1st vent setpiece guys CREATE_CHAR PEDTYPE_MISSION1 SWAT 2216.605 -1188.611 1032.27 swat12_f1 SET_CHAR_HAS_USED_ENTRY_EXIT swat12_f1 2232.41 -1160.04 20.0 SET_CHAR_HEADING swat12_f1 264.4329 GIVE_WEAPON_TO_CHAR swat12_f1 WEAPONTYPE_MP5 9999 SET_CHAR_DECISION_MAKER swat12_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat12_f1 TRUE SET_CHAR_HEALTH swat12_f1 150 SET_CHAR_ACCURACY swat12_f1 80 // SET_CHAR_COLLISION swat12_f1 FALSE // SET_CHAR_NEVER_TARGETTED swat12_f1 TRUE CREATE_CHAR PEDTYPE_MISSION1 SWAT 2216.131 -1188.611 1032.27 swat13_f1 SET_CHAR_HAS_USED_ENTRY_EXIT swat13_f1 2232.41 -1160.04 20.0 SET_CHAR_HEADING swat13_f1 264.4329 GIVE_WEAPON_TO_CHAR swat13_f1 WEAPONTYPE_MP5 9999 SET_CHAR_DECISION_MAKER swat13_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat13_f1 TRUE SET_CHAR_HEALTH swat13_f1 150 SET_CHAR_ACCURACY swat13_f1 80 // SET_CHAR_COLLISION swat13_f1 FALSE // SET_CHAR_NEVER_TARGETTED swat13_f1 TRUE //vent guy upside down shooting CREATE_CHAR PEDTYPE_MISSION1 SWAT 2193.129 -1164.661 1032.269 swat14_f1 SET_CHAR_HAS_USED_ENTRY_EXIT swat14_f1 2232.41 -1160.04 20.0 SET_CHAR_HEADING swat14_f1 4.98 GIVE_WEAPON_TO_CHAR swat14_f1 WEAPONTYPE_MP5 9999 SET_CHAR_DECISION_MAKER swat14_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat14_f1 TRUE SET_CHAR_NEVER_TARGETTED swat14_f1 TRUE SET_CHAR_HEALTH swat14_f1 1000 //right rollout guy in the final corridor CREATE_CHAR PEDTYPE_MISSION1 SWAT 2195.489 -1172.941 1029.859 swat15_f1 SET_CHAR_HAS_USED_ENTRY_EXIT swat15_f1 2232.41 -1160.04 20.0 SET_CHAR_HEADING swat15_f1 181.323 GIVE_WEAPON_TO_CHAR swat15_f1 WEAPONTYPE_MP5 9999 SET_CHAR_DECISION_MAKER swat15_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat15_f1 TRUE SET_CHAR_HEALTH swat15_f1 120 //crouch behind trolley CREATE_CHAR PEDTYPE_MISSION1 SWAT 2191.987 -1165.214 1029.852 swat16_f1 SET_CHAR_HAS_USED_ENTRY_EXIT swat16_f1 2232.41 -1160.04 20.0 SET_CHAR_HEADING swat16_f1 181.323 GIVE_WEAPON_TO_CHAR swat16_f1 WEAPONTYPE_MP5 9999 SET_CHAR_DECISION_MAKER swat16_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat16_f1 TRUE SET_CHAR_HEALTH swat16_f1 150 SET_CHAR_MAX_HEALTH swat16_f1 150 //roll left CREATE_CHAR PEDTYPE_MISSION1 SWAT 2190.6977 -1156.633 1029.859 swat17_f1 SET_CHAR_HAS_USED_ENTRY_EXIT swat17_f1 2232.41 -1160.04 20.0 SET_CHAR_HEADING swat17_f1 189.575 GIVE_WEAPON_TO_CHAR swat17_f1 WEAPONTYPE_MP5 9999 SET_CHAR_DECISION_MAKER swat17_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat17_f1 TRUE SET_CHAR_ACCURACY swat17_f1 30 //guy shooting sweet CREATE_CHAR PEDTYPE_MISSION1 SWAT 2194.593 -1156.995 1029.852 swat18_f1 SET_CHAR_HAS_USED_ENTRY_EXIT swat18_f1 2232.41 -1160.04 20.0 SET_CHAR_HEADING swat18_f1 275.754 GIVE_WEAPON_TO_CHAR swat18_f1 WEAPONTYPE_MP5 9999 SET_CHAR_DECISION_MAKER swat18_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat18_f1 TRUE CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 2192.91 -1182.15 1029.35 hoochie1_f1 //hoochie running into player then getting shot SET_CHAR_HAS_USED_ENTRY_EXIT hoochie1_f1 2232.41 -1160.04 20.0 SET_CHAR_NEVER_TARGETTED hoochie1_f1 TRUE SET_CHAR_DECISION_MAKER hoochie1_f1 motel_DM SET_CHAR_PROOFS hoochie1_f1 FALSE TRUE FALSE FALSE FALSE grovecorner_f1flag = 3 swatcorner_f1flag = 1 ENDIF ENDIF //interior abseil set piece IF swatwindosmash_f1flag = 0 IF LOCATE_CHAR_ON_FOOT_3D scplayer 2241.34 -1186.11 1029.76 6.6 6.6 3.0 FALSE IF DOES_OBJECT_EXIST skylite_f1 BREAK_OBJECT skylite_f1 TRUE ENDIF SHUT_CHAR_UP scplayer TRUE swatwindosmash_f1flag = 1 ENDIF ENDIF IF swatwindosmash_f1flag = 1 CREATE_SWAT_ROPE PEDTYPE_MISSION4 SWAT 2246.42 -1192.88 1039.5 swatrope1_f1 GIVE_WEAPON_TO_CHAR swatrope1_f1 WEAPONTYPE_MP5 9999 SET_CHAR_RELATIONSHIP swatrope1_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP swatrope1_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 SET_CHAR_DECISION_MAKER swatrope1_f1 extmotel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swatrope1_f1 TRUE SET_CHAR_HEALTH swatrope1_f1 150 SET_CHAR_MAX_HEALTH swatrope1_f1 150 SET_CHAR_ACCURACY swatrope1_f1 80 IF NOT IS_CHAR_DEAD grove4_f1 IF NOT IS_CHAR_DEAD swatrope1_f1 TASK_KILL_CHAR_ON_FOOT grove4_f1 swatrope1_f1 ENDIF ENDIF IF NOT IS_CHAR_DEAD grove3_f1 IF NOT IS_CHAR_DEAD swatrope1_f1 enemy_f1 = grove3_f1 enemytarget_f1 = swatrope1_f1 GOSUB stayshoot_f1label ENDIF ENDIF TIMERA = 0 swatwindosmash_f1flag = 2 ENDIF IF swatwindosmash_f1flag = 2 IF TIMERA > 1000 CREATE_SWAT_ROPE PEDTYPE_MISSION4 SWAT 2246.11 -1189.55 1038.09 swatrope2_f1 GIVE_WEAPON_TO_CHAR swatrope2_f1 WEAPONTYPE_MP5 9999 SET_CHAR_RELATIONSHIP swatrope2_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP swatrope2_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 SET_CHAR_DECISION_MAKER swatrope2_f1 extmotel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER swatrope2_f1 TRUE SET_CHAR_HEALTH swatrope2_f1 125 SET_CHAR_MAX_HEALTH swatrope2_f1 125 SET_CHAR_ACCURACY swatrope2_f1 80 IF NOT IS_CHAR_DEAD grove3_f1 IF NOT IS_CHAR_DEAD swatrope1_f1 IF NOT IS_CHAR_DEAD swatrope2_f1 enemy_f1 = grove3_f1 enemytarget_f1 = swatrope1_f1 enemytarget2_f1 = swatrope2_f1 GOSUB stay2shoot_f1label ENDIF ELSE IF NOT IS_CHAR_DEAD swatrope2_f1 enemy_f1 = grove3_f1 enemytarget_f1 = swatrope2_f1 GOSUB stayshoot_f1label ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD grove4_f1 TASK_DIE grove4_f1 ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED imy_skylight swatwindosmash_f1flag = 3 ENDIF ENDIF IF swatwindosmash_f1flag > 2 IF swatrope1_f1flag = 0 IF NOT IS_CHAR_DEAD swatrope1_f1 GET_SCRIPT_TASK_STATUS swatrope1_f1 CREATE_SWAT_ROPE swatrope1_f1status IF swatrope1_f1status = FINISHED_TASK OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR swatrope1_f1 scplayer TASK_KILL_CHAR_ON_FOOT swatrope1_f1 scplayer IF NOT IS_CHAR_DEAD grove4_f1 EXPLODE_CHAR_HEAD grove4_f1 ENDIF swatrope1_f1flag = 1 ENDIF ENDIF ENDIF IF swatrope2_f1flag = 0 IF NOT IS_CHAR_DEAD swatrope2_f1 GET_SCRIPT_TASK_STATUS swatrope2_f1 CREATE_SWAT_ROPE swatrope2_f1status IF swatrope2_f1status = FINISHED_TASK OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR swatrope2_f1 scplayer TASK_KILL_CHAR_ON_FOOT swatrope2_f1 scplayer SET_CHAR_ONLY_DAMAGED_BY_PLAYER swatrope2_f1 FALSE swatrope2_f1flag = 1 ENDIF ENDIF ENDIF ENDIF // /// Swat controlled corner /////////////////////////////////////////////////////////////////// IF swatcorner_f1flag = 1 //1st vent set piece IF vent1a_f1flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2232.7 -1188.84 1029.4 5.0 5.0 3.5 FALSE OR IS_CHAR_DEAD swat6_f1 OR IS_CHAR_DEAD swat7_f1 SHUT_CHAR_UP scplayer FALSE IF DOES_OBJECT_EXIST vent1_f1 FREEZE_OBJECT_POSITION vent1_f1 FALSE SET_OBJECT_ROTATION_VELOCITY vent1_f1 0.0 0.6 0.0 ATTACH_MISSION_AUDIO_TO_OBJECT 3 vent1_f1 PLAY_MISSION_AUDIO 3 ENDIF IF NOT IS_CHAR_DEAD grove3_f1 CLEAR_CHAR_TASKS grove3_f1 ENDIF IF missionaudio2_f1flag = 3 PLAY_MISSION_AUDIO 2 //get into positions ENDIF vent1a_f1flag = 1 ENDIF ENDIF IF vent1a_f1flag = 1 IF NOT IS_CHAR_DEAD swat12_f1 TASK_PLAY_ANIM_NON_INTERRUPTABLE swat12_f1 swt_vent_01 SWAT 1000.0 FALSE FALSE FALSE FALSE -1 // SET_CHAR_NEVER_TARGETTED swat12_f1 FALSE // SET_CHAR_HEALTH swat12_f1 20 TIMERB = 0 vent1a_f1flag = 2 vent1b_f1flag = 1 ENDIF ENDIF IF vent1a_f1flag = 2 IF NOT IS_CHAR_DEAD swat12_f1 IF IS_CHAR_PLAYING_ANIM swat12_f1 swt_vent_01 GET_CHAR_ANIM_CURRENT_TIME swat12_f1 swt_vent_01 swtvent01_f1 IF swtvent01_f1 = 1.0 //SET_CHAR_COLLISION swat12_f1 TRUE //SET_CHAR_NEVER_TARGETTED swat12_f1 FALSE SET_CHAR_COORDINATES swat12_f1 2217.85 -1188.86 1028.93 //1029.15 enemy_f1 = swat12_f1 enemyx_f1 = 2220.538 enemyy_f1 = -1189.594 enemyz_f1 = 1029.845 enemytarget_f1 = scplayer GOSUB runstay_f1label vent1a_f1flag = 3 ENDIF ENDIF ENDIF ENDIF IF vent1b_f1flag = 1 IF TIMERB > 3166 IF NOT IS_CHAR_DEAD swat13_f1 TASK_PLAY_ANIM_NON_INTERRUPTABLE swat13_f1 swt_vent_02 SWAT 1000.0 FALSE FALSE FALSE FALSE -1 // SET_CHAR_NEVER_TARGETTED swat13_f1 FALSE vent1b_f1flag = 2 ENDIF ENDIF ENDIF IF vent1b_f1flag = 2 IF NOT IS_CHAR_DEAD swat13_f1 IF IS_CHAR_PLAYING_ANIM swat13_f1 swt_vent_02 GET_CHAR_ANIM_CURRENT_TIME swat13_f1 swt_vent_02 swtvent02_f1 IF swtvent02_f1 = 1.0 // SET_CHAR_COLLISION swat13_f1 TRUE // SET_CHAR_NEVER_TARGETTED swat13_f1 FALSE SET_CHAR_COORDINATES swat13_f1 2217.85 -1188.86 1028.93 //1029.15 TASK_KILL_CHAR_ON_FOOT swat13_f1 scplayer vent1b_f1flag = 3 ENDIF ENDIF ENDIF ENDIF //hoochie running around IF hoochie1_f1flag = 1 IF NOT IS_CHAR_DEAD hoochie1_f1 SET_CHAR_HEALTH hoochie1_f1 150 OPEN_SEQUENCE_TASK hoochieescape_f1seq TASK_GO_STRAIGHT_TO_COORD -1 2193.064 -1188.77 1029.845 PEDMOVE_SPRINT 10000 TASK_GO_STRAIGHT_TO_COORD -1 2206.833 -1188.83 1029.845 PEDMOVE_SPRINT 10000 TASK_GO_STRAIGHT_TO_COORD -1 2209.588 -1190.20 1029.845 PEDMOVE_SPRINT 10000 //() TASK_GO_STRAIGHT_TO_COORD -1 2209.7 -1197.323 1029.845 PEDMOVE_SPRINT 10000 TASK_ACHIEVE_HEADING -1 358.428 TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK hoochieescape_f1seq PERFORM_SEQUENCE_TASK hoochie1_f1 hoochieescape_f1seq CLEAR_SEQUENCE_TASK hoochieescape_f1seq hoochie1_f1flag = 2 ENDIF ENDIF //hoochie gives player kiss and health and armour for saving her IF hoochie1_f1flag = 2 IF NOT IS_CHAR_DEAD hoochie1_f1 IF LOCATE_STOPPED_CHAR_ON_FOOT_3D hoochie1_f1 2209.7 -1197.323 1029.845 3.0 3.0 3.0 FALSE IF NOT HAS_CHAR_BEEN_DAMAGED_BY_CHAR hoochie1_f1 scplayer IF LOCATE_CHAR_ON_FOOT_3D scplayer 2209.7 -1197.323 1029.845 3.0 3.0 3.0 FALSE CLEAR_AREA 2209.7 -1197.323 10.0 10.0 FALSE IF NOT IS_CHAR_DEAD grove3_f1 REMOVE_CHAR_ELEGANTLY grove3_f1 ELSE MARK_CHAR_AS_NO_LONGER_NEEDED grove3_f1 ENDIF SET_PLAYER_CONTROL PLAYER1 OFF SET_EVERYONE_IGNORE_PLAYER PLAYER1 FALSE SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 2207.5286 -1195.7255 1031.2731 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2208.2734 -1196.1141 1030.7311 JUMP_CUT CLEAR_CHAR_TASKS_IMMEDIATELY hoochie1_f1 SET_CHAR_COORDINATES hoochie1_f1 2209.8 -1197.338 1028.845 SET_CHAR_HEADING hoochie1_f1 359.354 SET_CHAR_COORDINATES scplayer 2209.8 -1196.338 1028.845 SET_CHAR_HEADING scplayer 178.62 CLEAR_MISSION_AUDIO 1 IF NOT handlingaudio_f1flag = 0 handlingaudio_f1flag = 0 progressaudio_f1flag++ ENDIF LOAD_MISSION_AUDIO 1 SOUND_FIN1_DA //You saved me, have some sugar! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW FIN1_DA 3000 1 //You saved me, have some sugar! TASK_PLAY_ANIM scplayer PLAYA_KISS_03 KISSING 4.0 FALSE FALSE FALSE FALSE -1 IF NOT IS_CHAR_DEAD hoochie1_f1 TASK_PLAY_ANIM hoochie1_f1 GRLFRD_KISS_03 KISSING 4.0 FALSE FALSE FALSE FALSE -1 ENDIF nHealth = 100 GET_INT_STAT MAX_HEALTH nHealth SET_CHAR_HEALTH scplayer nHealth //SET_CHAR_HEALTH scplayer 100 hoochie1_f1flag = 3 ENDIF ENDIF ENDIF ENDIF ENDIF IF hoochie1_f1flag = 3 IF NOT IS_CHAR_DEAD hoochie1_f1 IF IS_CHAR_PLAYING_ANIM scplayer PLAYA_KISS_03 IF IS_CHAR_PLAYING_ANIM hoochie1_f1 GRLFRD_KISS_03 hoochie1_f1flag = 4 ENDIF ENDIF ENDIF ENDIF IF hoochie1_f1flag = 4 IF NOT IS_CHAR_DEAD hoochie1_f1 IF NOT IS_CHAR_PLAYING_ANIM scplayer PLAYA_KISS_03 IF NOT IS_CHAR_PLAYING_ANIM hoochie1_f1 GRLFRD_KISS_03 SET_CHAR_HEALTH hoochie1_f1 5 SET_PLAYER_CONTROL PLAYER1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER CLEAR_PRINTS hoochie1_f1flag = 5 ENDIF ENDIF ENDIF ENDIF //kill char when player gets close IF grove5_f1flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2240.8 -1182.4 1029.41 4.0 4.0 2.5 FALSE IF NOT IS_CHAR_DEAD grove5_f1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER grove5_f1 FALSE EXPLODE_CHAR_HEAD grove5_f1 ENDIF grove5_f1flag = 1 ENDIF ENDIF //if player gets close shoot him instead IF swat7_f1flag = 0 IF NOT IS_CHAR_DEAD swat7_f1 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR swat7_f1 scplayer OR LOCATE_CHAR_ANY_MEANS_CHAR_3D swat7_f1 scplayer 2.5 2.5 3.0 FALSE SET_CHAR_ACCURACY swat7_f1 30 TASK_KILL_CHAR_ON_FOOT swat7_f1 scplayer swat7_f1flag = 1 ENDIF ENDIF ENDIF //trigger stair runners IF swat8_f1flag = 0 IF swat9_f1flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2204.65 -1188.62 1029.44 5.0 5.0 3.5 FALSE swat8_f1flag = 1 swat9_f1flag = 1 hoochie1_f1flag = 1 ENDIF ENDIF ENDIF //runs up stairs IF swat8_f1flag = 1 IF NOT IS_CHAR_DEAD swat8_f1 enemy_f1 = swat8_f1 enemytarget_f1 = scplayer GOSUB stayshootnoduck_f1label swat8_f1flag = 2 ENDIF ENDIF //run down to behind the table IF swat9_f1flag = 1 IF NOT IS_CHAR_DEAD swat9_f1 FLUSH_ROUTE EXTEND_ROUTE 2186.67 -1192.4 1031.867 EXTEND_ROUTE 2188.44 -1193.95 1031.27 EXTEND_ROUTE 2193.31 -1193.57 1030.34 EXTEND_ROUTE 2196.239 -1191.459 1029.85 TASK_FOLLOW_POINT_ROUTE swat9_f1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE swat9_f1flag = 2 ENDIF ENDIF IF swat9_f1flag = 2 IF NOT IS_CHAR_DEAD swat9_f1 IF LOCATE_STOPPED_CHAR_ANY_MEANS_2D swat9_f1 2196.239 -1191.459 2.0 2.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR swat9_f1 scplayer enemy_f1 = swat9_f1 enemytarget_f1 = scplayer GOSUB stayshootnoduck_f1label swat9_f1flag = 3 ENDIF ENDIF ENDIF //duck and shoot behind the sofa IF swat10_f1flag = 0 IF NOT IS_CHAR_DEAD swat10_f1 enemy_f1 = swat10_f1 enemytarget_f1 = scplayer GOSUB stayshootnoduck_f1label swat10_f1flag = 1 ENDIF ENDIF //other table IF swat11_f1flag = 0 IF NOT IS_CHAR_DEAD swat11_f1 enemy_f1 = swat11_f1 enemytarget_f1 = scplayer GOSUB stayshootnoduck_f1label swat11_f1flag = 1 ENDIF ENDIF //right rollout guy in the final corridor IF swat15_f1flag = 0 IF NOT IS_CHAR_DEAD swat15_f1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2193.41 -1176.12 1029.42 4.0 4.0 3.5 FALSE enemy_f1 = swat15_f1 GOSUB rolloutr_f1label swat15_f1flag = 1 ENDIF ENDIF ENDIF //crouch behind trolley IF swat16_f1flag = 0 IF NOT IS_CHAR_DEAD swat16_f1 enemy_f1 = swat16_f1 enemytarget_f1 = scplayer GOSUB stayshoot_f1label swat16_f1flag = 1 ENDIF ENDIF //vent guy upside down shooting set piece IF swat14_f1flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2193.4 -1173.53 1029.69 3.0 3.0 3.0 FALSE OR IS_CHAR_DEAD swat16_f1 REMOVE_CHAR_ELEGANTLY grove3_f1 //remove grove's from their corner REMOVE_CHAR_ELEGANTLY grove4_f1 REMOVE_CHAR_ELEGANTLY grove5_f1 REMOVE_CHAR_ELEGANTLY woundedgrove2_f1 REMOVE_CHAR_ELEGANTLY swatrope1_f1 REMOVE_CHAR_ELEGANTLY swatrope2_f1 IF DOES_OBJECT_EXIST vent2_f1 FREEZE_OBJECT_POSITION vent2_f1 FALSE SET_OBJECT_ROTATION_VELOCITY vent2_f1 0.0 0.8 0.0 ATTACH_MISSION_AUDIO_TO_OBJECT 3 vent2_f1 PLAY_MISSION_AUDIO 3 ENDIF swat14_f1flag = 1 ENDIF ENDIF IF swat14_f1flag = 1 IF NOT IS_CHAR_DEAD swat14_f1 TASK_PLAY_ANIM_NON_INTERRUPTABLE swat14_f1 swt_vnt_sht_in SWAT 1000.0 FALSE FALSE FALSE TRUE -1 swat14_f1flag = 2 ENDIF ENDIF IF swat14_f1flag = 2 IF NOT IS_CHAR_DEAD swat14_f1 IF IS_CHAR_PLAYING_ANIM swat14_f1 swt_vnt_sht_in GET_CHAR_ANIM_CURRENT_TIME swat14_f1 swt_vnt_sht_in upsidedownswat_f1 IF upsidedownswat_f1 = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE swat14_f1 swt_vnt_sht_loop SWAT 1000.0 FALSE FALSE FALSE TRUE -1 GET_CHAR_COORDINATES scplayer player_x player_y player_z FIRE_SINGLE_BULLET 2193.268 -1165.441 1031.124 player_x player_y player_z 1 REPORT_MISSION_AUDIO_EVENT_AT_CHAR swat14_f1 SOUND_MINITANK_FIRE ADD_BIG_GUN_FLASH 2193.268 -1165.441 1031.124 player_x player_y player_z SET_CHAR_NEVER_TARGETTED swat14_f1 FALSE SET_CHAR_IS_TARGET_PRIORITY swat14_f1 TRUE TIMERB = 1000 //0 swat14_f1flag = 3 ENDIF ENDIF ENDIF ENDIF IF swat14_f1flag = 3 IF TIMERB > 1000 IF NOT IS_CHAR_DEAD swat14_f1 IF IS_CHAR_PLAYING_ANIM swat14_f1 swt_vnt_sht_loop GET_CHAR_ANIM_CURRENT_TIME swat14_f1 swt_vnt_sht_loop upsidedownswat_f1 IF upsidedownswat_f1 = 1.0 //= 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE swat14_f1 swt_vnt_sht_loop SWAT 1000.0 FALSE FALSE FALSE TRUE -1 //old line //TASK_PLAY_ANIM_WITH_FLAGS swat14_f1 swt_vnt_sht_loop SWAT 8.0 FALSE FALSE FALSE TRUE -1 FALSE TRUE //new line GET_CHAR_COORDINATES scplayer player_x player_y player_z player_z = player_z + 0.5 //player_y = player_y + 0.0 FIRE_SINGLE_BULLET 2193.46 -1165.83 1031.55 player_x player_y player_z 3 REPORT_MISSION_AUDIO_EVENT_AT_CHAR swat14_f1 SOUND_MINITANK_FIRE ADD_BIG_GUN_FLASH 2193.268 -1165.441 1031.124 player_x player_y player_z TIMERB = 0 ENDIF ENDIF ENDIF ENDIF ENDIF //dies if player walks past him IF swat14_f1flag < 4 IF NOT IS_CHAR_DEAD swat14_f1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2193.12 -1161.86 1029.61 2.8 2.8 3.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR swat14_f1 scplayer IF DOES_CHAR_EXIST swat14_f1 SET_CHAR_COLLISION swat14_f1 FALSE SET_CHAR_COORDINATES swat14_f1 2193.129 -1164.661 1032.269 TASK_PLAY_ANIM_NON_INTERRUPTABLE swat14_f1 swt_vnt_sht_die SWAT 1000.0 FALSE FALSE FALSE TRUE -1 SET_CHAR_NEVER_TARGETTED swat14_f1 TRUE ENDIF swat14_f1flag = 4 ENDIF ENDIF ENDIF IF swat14_f1flag = 4 IF NOT IS_CHAR_DEAD swat14_f1 IF IS_CHAR_PLAYING_ANIM swat14_f1 swt_vnt_sht_die GET_CHAR_ANIM_CURRENT_TIME swat14_f1 swt_vnt_sht_die upsidedownswat_f1 IF upsidedownswat_f1 = 1.0 swat14_f1flag = 5 ENDIF ENDIF ENDIF ENDIF IF swat14_f1flag = 5 IF NOT IS_CHAR_DEAD swat14_f1 IF NOT IS_CHAR_ON_SCREEN swat14_f1 OR LOCATE_CHAR_ANY_MEANS_CHAR_2D swat14_f1 scplayer 5.0 5.0 FALSE REMOVE_CHAR_ELEGANTLY swat14_f1 swat14_f1flag = 6 ENDIF ENDIF ENDIF //roll left IF swat17_f1flag = 0 IF NOT IS_CHAR_DEAD swat17_f1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2193.19 -1160.67 1029.54 4.0 4.0 3.5 FALSE enemy_f1 = swat17_f1 GOSUB rolloutl_f1label //DELETE_OBJECT vent2_f1 swat17_f1flag = 1 ENDIF ENDIF ENDIF //guy shooting sweet IF swat18_f1flag = 0 IF NOT IS_CHAR_DEAD swat18_f1 IF NOT IS_CHAR_DEAD sweet enemy_f1 = swat18_f1 enemytarget_f1 = sweet GOSUB stayshoot_f1label swat18_f1flag = 1 ENDIF ENDIF ENDIF //sweet shooting back IF sweet_f1flag = 0 IF NOT IS_CHAR_DEAD sweet IF NOT IS_CHAR_DEAD swat18_f1 enemy_f1 = sweet enemytarget_f1 = swat18_f1 GOSUB stayshootnoduck_f1label sweet_f1flag = 1 ENDIF ENDIF ENDIF IF vent1a_f1flag = 3 IF IS_CHAR_DEAD swat12_f1 MARK_CHAR_AS_NO_LONGER_NEEDED swat12_f1 vent1a_f1flag = 4 ENDIF ENDIF IF vent1b_f1flag = 3 IF IS_CHAR_DEAD swat13_f1 MARK_CHAR_AS_NO_LONGER_NEEDED swat13_f1 vent1a_f1flag = 4 ENDIF ENDIF IF grove5_f1flag = 1 IF IS_CHAR_DEAD grove5_f1 MARK_CHAR_AS_NO_LONGER_NEEDED grove5_f1 grove5_f1flag = 2 ENDIF ENDIF IF swat7_f1flag = 1 IF IS_CHAR_DEAD swat7_f1 MARK_CHAR_AS_NO_LONGER_NEEDED swat7_f1 swat7_f1flag = 2 ENDIF ENDIF IF swat8_f1flag = 2 IF IS_CHAR_DEAD swat8_f1 MARK_CHAR_AS_NO_LONGER_NEEDED swat8_f1 swat8_f1flag = 3 ENDIF ENDIF IF swat9_f1flag = 2 IF IS_CHAR_DEAD swat9_f1 MARK_CHAR_AS_NO_LONGER_NEEDED swat9_f1 swat9_f1flag = 4 ENDIF ENDIF IF swat10_f1flag = 1 IF IS_CHAR_DEAD swat10_f1 MARK_CHAR_AS_NO_LONGER_NEEDED swat10_f1 swat10_f1flag = 2 ENDIF ENDIF IF swat11_f1flag = 1 IF IS_CHAR_DEAD swat11_f1 MARK_CHAR_AS_NO_LONGER_NEEDED swat11_f1 swat11_f1flag = 2 ENDIF ENDIF IF swat15_f1flag = 1 IF IS_CHAR_DEAD swat15_f1 MARK_CHAR_AS_NO_LONGER_NEEDED swat15_f1 swat15_f1flag = 2 ENDIF ENDIF IF swat16_f1flag = 1 IF IS_CHAR_DEAD swat16_f1 MARK_CHAR_AS_NO_LONGER_NEEDED swat16_f1 swat16_f1flag = 2 ENDIF ENDIF IF swat14_f1flag = 4 IF IS_CHAR_DEAD swat14_f1 MARK_CHAR_AS_NO_LONGER_NEEDED swat14_f1 swat14_f1flag = 5 ENDIF ENDIF IF swat17_f1flag = 1 IF IS_CHAR_DEAD swat17_f1 MARK_CHAR_AS_NO_LONGER_NEEDED swat17_f1 swat17_f1flag = 2 ENDIF ENDIF IF swat18_f1flag = 1 IF IS_CHAR_DEAD swat18_f1 MARK_CHAR_AS_NO_LONGER_NEEDED swat18_f1 swat18_f1flag = 2 ENDIF ENDIF IF hoochie1_f1flag > 5 IF NOT IS_CHAR_DEAD hoochie1_f1 MARK_CHAR_AS_NO_LONGER_NEEDED hoochie1_f1 REMOVE_ANIMATION KISSING hoochie1_f1flag = 6 ENDIF ENDIF // IF sweetexit_f1flag = 0 // IF swat17_f1flag = 2 // IF swat18_f1flag = 2 // sweetexit_f1flag = 1 //player has killed two nearby swat // ENDIF // ENDIF // ENDIF //sweet and player leaving the motel IF sweetexit_f1flag = 0 IF NOT IS_CHAR_DEAD sweet IF LOCATE_CHAR_ANY_MEANS_CHAR_3D sweet scplayer 3.5 3.5 3.5 FALSE //used to be 7.5 IF IS_CHAR_DEAD swat17_f1 IF IS_CHAR_DEAD swat18_f1 GET_CURRENT_CHAR_WEAPON scplayer playerweapon_f1 DO_FADE 250 FADE_OUT SET_PLAYER_CONTROL PLAYER1 OFF SET_CHAR_ONLY_DAMAGED_BY_PLAYER sweet FALSE //mark loads of stuff as no longer needed REMOVE_ANIMATION KISSING MARK_MODEL_AS_NO_LONGER_NEEDED FAM3 MARK_MODEL_AS_NO_LONGER_NEEDED FAM2 MARK_MODEL_AS_NO_LONGER_NEEDED lxr_motel_doorsim MARK_MODEL_AS_NO_LONGER_NEEDED lxr_motelvent MARK_MODEL_AS_NO_LONGER_NEEDED imy_skylight MARK_MODEL_AS_NO_LONGER_NEEDED KMB_TROLLEY MARK_MODEL_AS_NO_LONGER_NEEDED BFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 REMOVE_CHAR_ELEGANTLY grove1_f1 REMOVE_CHAR_ELEGANTLY grove2_f1 REMOVE_CHAR_ELEGANTLY grove3_f1 REMOVE_CHAR_ELEGANTLY grove4_f1 REMOVE_CHAR_ELEGANTLY grove5_f1 REMOVE_CHAR_ELEGANTLY swatrope1_f1 REMOVE_CHAR_ELEGANTLY swatrope2_f1 REMOVE_CHAR_ELEGANTLY swat1_f1 REMOVE_CHAR_ELEGANTLY swat2_f1 REMOVE_CHAR_ELEGANTLY swat3_f1 REMOVE_CHAR_ELEGANTLY swat4_f1 REMOVE_CHAR_ELEGANTLY woundedgrove1_f1 REMOVE_CHAR_ELEGANTLY woundedgrove2_f1 REMOVE_CHAR_ELEGANTLY swat5_f1 REMOVE_CHAR_ELEGANTLY swat6_f1 REMOVE_CHAR_ELEGANTLY swat7_f1 REMOVE_CHAR_ELEGANTLY swat8_f1 REMOVE_CHAR_ELEGANTLY swat9_f1 REMOVE_CHAR_ELEGANTLY swat10_f1 REMOVE_CHAR_ELEGANTLY swat11_f1 REMOVE_CHAR_ELEGANTLY swat12_f1 REMOVE_CHAR_ELEGANTLY swat13_f1 REMOVE_CHAR_ELEGANTLY swat14_f1 REMOVE_CHAR_ELEGANTLY swat15_f1 REMOVE_CHAR_ELEGANTLY swat16_f1 REMOVE_CHAR_ELEGANTLY swat17_f1 REMOVE_CHAR_ELEGANTLY swat18_f1 REMOVE_CHAR_ELEGANTLY hoochie1_f1 REMOVE_CHAR_ELEGANTLY hoochie2_f1 DELETE_OBJECT breachdoor_f1 DELETE_OBJECT vent1_f1 DELETE_OBJECT vent2_f1 KILL_FX_SYSTEM breachfx_f1 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 1 SOUND_FIN1_JH //What took you? Where’s Smoke and Ryder? LOAD_MISSION_AUDIO 2 SOUND_FIN1_JI //They shook on us! REQUEST_ANIMATION GANGS LOAD_ALL_MODELS_NOW WHILE NOT HAS_ANIMATION_LOADED GANGS OR NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE sweetexit_f1flag = 2 ELSE PRINT_NOW LAF1_21 1000 1 //Take all the nearby SWAT out. Then we can get out of here. ENDIF ELSE PRINT_NOW LAF1_21 1000 1 //Take all the nearby SWAT out. Then we can get out of here. ENDIF ENDIF ENDIF ENDIF IF sweetexit_f1flag = 2 IF NOT IS_CHAR_DEAD sweet SWITCH_WIDESCREEN ON CLEAR_AREA 2223.971 -1149.75 200.0 200.0 FALSE SET_NEAR_CLIP 0.1 DO_FADE 500 FADE_IN CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY sweet SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED SET_CURRENT_CHAR_WEAPON sweet WEAPONTYPE_UNARMED REMOVE_WEAPON_FROM_CHAR sweet WEAPONTYPE_PISTOL SET_FIXED_CAMERA_POSITION 2197.4873 -1157.6752 1030.3558 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2198.3828 -1157.2404 1030.2614 JUMP_CUT SET_CHAR_COORDINATES sweet 2202.1877 -1156.93 1028.844 //2202.23 -1156.914 1028.84 SET_CHAR_HEADING sweet 85.6456 TASK_PLAY_ANIM sweet prtial_gngtlkH GANGS 8.0 FALSE FALSE FALSE FALSE -1 SET_CHAR_COORDINATES scplayer 2197.2 -1156.929 1028.844 //2202.23 -1156.914 1028.84 SET_CHAR_HEADING scplayer 269.764 TASK_GO_STRAIGHT_TO_COORD scplayer 2201.1877 -1156.93 1028.844 PEDMOVE_WALK -1 PLAY_MISSION_AUDIO 1 PRINT_NOW FIN1_JH 5000 1 //What took you? Where’s Smoke and Ryder? START_CHAR_FACIAL_TALK sweet 10000 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 IF NOT IS_CHAR_DEAD sweet STOP_CHAR_FACIAL_TALK sweet ENDIF LOAD_MISSION_AUDIO 1 SOUND_FIN1_JK //Fuck it, let’s get out of here! //close up SET_FIXED_CAMERA_POSITION 2201.2344 -1157.5446 1030.3730 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2201.8037 -1156.7233 1030.4058 JUMP_CUT //imran IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY sweet SET_CHAR_COORDINATES scplayer 2201.1877 -1156.93 1028.844 SET_CHAR_HEADING scplayer 270.0 // SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED TASK_PLAY_ANIM sweet hndshkfa_swt GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM scplayer hndshkfa GANGS 4.0 FALSE FALSE FALSE FALSE -1 TIMERA = 0 ENDIF PLAY_MISSION_AUDIO 2 PRINT_NOW FIN1_JI 2000 1 //They shook on us! START_CHAR_FACIAL_TALK scplayer 2000 ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// SKIP_CUTSCENE_START ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// sweetexit_f1flag = 3 ENDIF ENDIF IF sweetexit_f1flag > 2 IF sweetexit_f1flag < 6 IF audiosweet_f1flag = 0 IF HAS_MISSION_AUDIO_FINISHED 2 IF HAS_MISSION_AUDIO_LOADED 1 CLEAR_PRINTS STOP_CHAR_FACIAL_TALK scplayer PLAY_MISSION_AUDIO 1 IF NOT IS_CHAR_DEAD sweet START_CHAR_FACIAL_TALK sweet 10000 ENDIF PRINT_NOW FIN1_JK 2000 1//Fuck it, let’s get out of here! audiosweet_f1flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF audiosweet_f1flag = 1 IF NOT IS_CHAR_DEAD sweet IF HAS_MISSION_AUDIO_FINISHED 1 STOP_CHAR_FACIAL_TALK sweet audiosweet_f1flag = 2 ENDIF ENDIF ENDIF IF sweetexit_f1flag = 3 IF NOT IS_CHAR_DEAD sweet GET_SCRIPT_TASK_STATUS sweet TASK_PLAY_ANIM sweetstatus_f1 IF sweetstatus_f1 = FINISHED_TASK GET_SCRIPT_TASK_STATUS scplayer TASK_PLAY_ANIM playerstatus_f1 IF playerstatus_f1 = FINISHED_TASK IF HAS_MISSION_AUDIO_FINISHED 2 IF HAS_MISSION_AUDIO_LOADED 1 TIMERA = 0 SET_FIXED_CAMERA_POSITION 2202.4089 -1157.1904 1030.5150 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2201.4138 -1157.1287 1030.4376 JUMP_CUT FLUSH_ROUTE EXTEND_ROUTE 2193.09 -1157.16 1029.84 EXTEND_ROUTE 2193.379 -1145.899 1029.84 TASK_FOLLOW_POINT_ROUTE scplayer PEDMOVE_WALK FOLLOW_ROUTE_ONCE TASK_FOLLOW_POINT_ROUTE sweet PEDMOVE_WALK FOLLOW_ROUTE_ONCE sweetexit_f1flag = 4 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF sweetexit_f1flag = 4 sweetexit_f1flag = 5 ENDIF IF sweetexit_f1flag = 5 IF HAS_MISSION_AUDIO_FINISHED 1 IF TIMERA > 1500 ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// SKIP_CUTSCENE_END ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 IF NOT IS_CHAR_DEAD sweet STOP_CHAR_FACIAL_TALK sweet ENDIF DO_FADE 250 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CURRENT_CHAR_WEAPON scplayer playerweapon_f1 CLEAR_AREA 2192.1936 -1153.241 100.0 100.0 TRUE IF NOT IS_CHAR_DEAD sweet STOP_CHAR_FACIAL_TALK sweet STOP_CHAR_FACIAL_TALK scplayer SWITCH_ENTRY_EXIT motel1 TRUE SET_CHAR_HAS_USED_ENTRY_EXIT sweet 2214.41 -1150.48 3.0 SET_CHAR_PROOFS sweet TRUE TRUE TRUE TRUE TRUE CLEAR_CHAR_TASKS_IMMEDIATELY sweet CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES sweet 2192.1936 -1153.241 32.56 SET_CHAR_HEADING sweet 180.359 SET_CHAR_COORDINATES scplayer 2193.99 -1153.14 33.56 SET_CHAR_HEADING scplayer 180.359 SET_CHAR_AREA_VISIBLE scplayer 0 SET_CHAR_AREA_VISIBLE sweet 0 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2214.38 -1150.45 1.0 SET_CHAR_HAS_USED_ENTRY_EXIT sweet 2214.38 -1150.45 1.0 SET_AREA_VISIBLE 0 SET_FIXED_CAMERA_POSITION 2201.6438 -1164.3506 38.3367 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2201.0083 -1163.6409 38.0327 JUMP_CUT SWITCH_ENTRY_EXIT motel1 FALSE ENDIF REMOVE_ANIMATION GANGS REQUEST_MODEL POLMAV REQUEST_CAR_RECORDING 349 LOAD_MISSION_AUDIO 1 SOUND_FIN1_AA //This is the Los Santos Police Department; LOAD_MISSION_AUDIO 2 SOUND_FIN1_JL //CJ, that chopper’s all over us! Hit it! LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED POLMAV OR NOT HAS_CAR_RECORDING_BEEN_LOADED 349 OR NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE TASK_GO_STRAIGHT_TO_COORD scplayer 2193.86 -1157.682 33.563 PEDMOVE_WALK -1 WAIT 500 IF NOT IS_CHAR_DEAD sweet TASK_GO_STRAIGHT_TO_COORD sweet 2192.25 -1158.078 33.56 PEDMOVE_WALK -1 ENDIF CREATE_CAR POLMAV 2249.51 -1111.52 56.1 extpoliceheli_f1 SET_PETROL_TANK_WEAKPOINT extpoliceheli_f1 FALSE SET_CAR_ONLY_DAMAGED_BY_PLAYER extpoliceheli_f1 TRUE SET_CAR_HEALTH extpoliceheli_f1 2000 CREATE_CHAR_INSIDE_CAR extpoliceheli_f1 PEDTYPE_MISSION2 SWAT exthelidriver_f1 SET_CHAR_CAN_BE_SHOT_IN_VEHICLE exthelidriver_f1 FALSE LOCK_CAR_DOORS extpoliceheli_f1 CARLOCK_LOCKED SET_CHAR_CANT_BE_DRAGGED_OUT exthelidriver_f1 TRUE SET_CAR_FORWARD_SPEED extpoliceheli_f1 30.0 SET_CHAR_DECISION_MAKER exthelidriver_f1 motel_DM SET_HELI_BLADES_FULL_SPEED extpoliceheli_f1 CREATE_CHAR PEDTYPE_MISSION4 SWAT 2161.84 -1154.26 25.09 swat1_f1 SET_CHAR_RELATIONSHIP swat1_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_SPECIAL SET_CHAR_RELATIONSHIP swat1_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER swat1_f1 extmotel_DM CREATE_CHAR PEDTYPE_MISSION4 SWAT 2159.84 -1154.26 25.09 swat2_f1 SET_CHAR_RELATIONSHIP swat2_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_SPECIAL SET_CHAR_DECISION_MAKER swat2_f1 extmotel_DM CREATE_CHAR PEDTYPE_MISSION4 SWAT 2159.84 -1154.26 -5.09 swat3_f1 SET_CHAR_RELATIONSHIP swat3_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_SPECIAL SET_CHAR_RELATIONSHIP swat3_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER swat3_f1 extmotel_DM CREATE_CHAR PEDTYPE_MISSION4 SWAT 2159.84 -1154.26 -8.09 swat4_f1 SET_CHAR_RELATIONSHIP swat4_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_SPECIAL SET_CHAR_DECISION_MAKER swat4_f1 extmotel_DM swat1_f1flag = 0 swat2_f1flag = 0 swat3_f1flag = 0 swat4_f1flag = 0 ATTACH_CHAR_TO_CAR swat1_f1 extpoliceheli_f1 1.4 1.3 -0.1 FACING_RIGHT 190.0 WEAPONTYPE_MP5 SET_CHAR_HEALTH swat1_f1 150 SET_CHAR_SHOOT_RATE swat1_f1 70 ATTACH_CHAR_TO_CAR swat2_f1 extpoliceheli_f1 1.4 -0.8 -0.1 FACING_RIGHT 190.0 WEAPONTYPE_MP5 SET_CHAR_HEALTH swat2_f1 150 SET_CHAR_SHOOT_RATE swat2_f1 70 ATTACH_CHAR_TO_CAR swat3_f1 extpoliceheli_f1 -1.4 1.3 -0.1 FACING_LEFT 190.0 WEAPONTYPE_MP5 SET_CHAR_HEALTH swat3_f1 150 SET_CHAR_SHOOT_RATE swat3_f1 70 ATTACH_CHAR_TO_CAR swat4_f1 extpoliceheli_f1 -1.4 -0.8 -0.1 FACING_LEFT 190.0 WEAPONTYPE_MP5 SET_CHAR_HEALTH swat4_f1 150 SET_AREA_VISIBLE 0 LOAD_SCENE 2193.86 -1157.682 33.563 SET_TIME_OF_DAY 2 30 CLEAR_EXTRA_COLOURS FALSE DO_FADE 500 FADE_IN TIMERB = 0 sweetexit_f1flag = 6 roofmotel_f1flag = 1 ENDIF ENDIF ENDIF ENDIF //If sweet dies IF IS_CHAR_DEAD sweet PRINT_NOW LAF1_70 5000 1 //Sweet died! GOTO mission_drugs4_failed //sweet died ENDIF //dialogue IF sweetexit_f1flag = 0 GOSUB process_audio_f1 //play mission audio IF progressaudio_f1flag = 0 IF handlingaudio_f1flag = 0 IF woundedgrove1_f1flag = 1 audio_label_f1 = SOUND_FIN1_JC //Where the OG’s at – I gotta go get my brother, Sweet. $input_text_f1 = FIN1_JC //Where the OG’s at – I gotta go get my brother, Sweet. GOSUB load_audio_f1 ENDIF ENDIF ENDIF IF progressaudio_f1flag = 1 IF handlingaudio_f1flag = 0 IF woundedgrove1_f1flag = 1 attachaudio_f1flag = 1 audio_label_f1 = SOUND_FIN1_JD //They were meeting in the back of the motel someplace… $input_text_f1 = FIN1_JD //They were meeting in the back of the motel someplace… GOSUB load_audio_f1 ENDIF ENDIF ENDIF IF swatwindosmash_f1flag > 0 IF progressaudio_f1flag = 2 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_JF //Families! Cops comin’ in behind! $input_text_f1 = FIN1_JF //Families! Cops comin’ in behind! GOSUB load_audio_f1 ENDIF ENDIF ENDIF //corner where swat run down stairs IF swat8_f1flag > 0 IF progressaudio_f1flag = 3 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_BD //Get some suppressing fire in there! $input_text_f1 = FIN1_BD //Get some suppressing fire in there! GOSUB load_audio_f1 ENDIF ENDIF ENDIF //upside down guy IF swat14_f1flag > 0 IF progressaudio_f1flag = 4 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_CK //Unit down, repeat, unit down! $input_text_f1 = FIN1_CK //Unit down, repeat, unit down! GOSUB load_audio_f1 ENDIF ENDIF ENDIF IF progressaudio_f1flag = 5 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_BE //Gimme some fucking covering fire! $input_text_f1 = FIN1_BE //Gimme some fucking covering fire! GOSUB load_audio_f1 ENDIF ENDIF IF missionaudio2_f1flag = 1 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_FIN1_AE //Get into positions! missionaudio2_f1flag = 2 ENDIF ENDIF IF missionaudio2_f1flag = 2 IF HAS_MISSION_AUDIO_LOADED 2 missionaudio2_f1flag = 3 ENDIF ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////// On Roof //////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF roofmotel_f1flag = 1 //change camera angle and get heli to come up IF sweetexit_f1flag = 6 IF TIMERB > 2000 IF NOT IS_CAR_DEAD extpoliceheli_f1 START_PLAYBACK_RECORDED_CAR extpoliceheli_f1 349 ENDIF SET_FIXED_CAMERA_POSITION 2195.0986 -1157.9208 34.0291 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2194.1025 -1157.9785 33.9628 JUMP_CUT IF NOT IS_CHAR_DEAD sweet IF NOT IS_CHAR_DEAD exthelidriver_f1 WAIT 200 IF NOT IS_CHAR_DEAD exthelidriver_f1 TASK_LOOK_AT_CHAR scplayer exthelidriver_f1 3000 ENDIF WAIT 100 IF NOT IS_CHAR_DEAD exthelidriver_f1 IF NOT IS_CHAR_DEAD sweet TASK_LOOK_AT_CHAR sweet exthelidriver_f1 3000 ENDIF ENDIF PLAY_MISSION_AUDIO 1 //FIN1_AA //This is the Los Santos Police Department; PRINT_NOW FIN1_AA 3000 1 TIMERB = 0 sweetexit_f1flag = 7 ENDIF ENDIF ENDIF ENDIF IF sweetexit_f1flag = 7 IF TIMERB > 2500 IF NOT IS_CHAR_DEAD sweet IF NOT IS_CAR_DEAD extpoliceheli_f1 ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// skiphelicutscene_f1flag = 0 SKIP_CUTSCENE_START ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// SET_FIXED_CAMERA_POSITION 2176.6411 -1179.4252 38.9175 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2177.1365 -1178.5883 38.6847 JUMP_CUT IF NOT IS_CHAR_DEAD swat1_f1 IF swat1_f1flag = 0 enemy_f1 = swat1_f1 enemytarget_f1 = scplayer GOSUB stayshoot_f1label swat1_f1flag = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD swat2_f1 IF swat2_f1flag = 0 enemy_f1 = swat2_f1 IF NOT IS_CHAR_DEAD sweet enemytarget_f1 = sweet ENDIF GOSUB stayshootnoduck_f1label swat2_f1flag = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD swat3_f1 IF swat3_f1flag = 0 enemy_f1 = swat3_f1 IF NOT IS_CHAR_DEAD sweet enemytarget_f1 = sweet ENDIF GOSUB stayshootnoduck_f1label swat3_f1flag = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD swat4_f1 IF swat4_f1flag = 0 enemy_f1 = swat4_f1 enemytarget_f1 = scplayer GOSUB stayshootnoduck_f1label swat4_f1flag = 1 ENDIF ENDIF TASK_GO_STRAIGHT_TO_COORD sweet 2192.683 -1168.586 33.56 PEDMOVE_RUN 5000 TASK_GO_STRAIGHT_TO_COORD scplayer 2198.424 -1158.32 33.56 PEDMOVE_RUN 5000 //2193.91 -1164.24 32.86 PEDMOVE_RUN 5000 TIMERB = 0 sweetexit_f1flag = 8 ENDIF ENDIF ENDIF ENDIF IF sweetexit_f1flag = 8 IF TIMERB > 1500 IF NOT IS_CAR_DEAD extpoliceheli_f1 IF NOT IS_CHAR_DEAD sweet IF IS_PLAYBACK_GOING_ON_FOR_CAR extpoliceheli_f1 STOP_PLAYBACK_RECORDED_CAR extpoliceheli_f1 ENDIF SET_FIXED_CAMERA_POSITION 2196.3381 -1157.2228 32.9594 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2195.7617 -1158.0323 33.0705 JUMP_CUT CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 2195.914 -1159.764 32.563 SET_CHAR_HEADING scplayer 181.0915 TASK_PLAY_ANIM scplayer swt_wllpk_L SWAT 8.0 FALSE FALSE FALSE TRUE -1 PLAY_MISSION_AUDIO 2 //FIN1_JL CJ, that chopper’s all over us! Hit it! PRINT_NOW FIN1_JL 3000 1 //CJ, that chopper’s all over us! Hit it! SET_CAR_COORDINATES extpoliceheli_f1 2185.43 -1172.69 37.05 HELI_GOTO_COORDS extpoliceheli_f1 2194.97 -1182.27 37.0 7.0 7.0 TIMERB = 0 sweetexit_f1flag = 9 ENDIF ENDIF ENDIF ENDIF IF sweetexit_f1flag = 9 IF NOT IS_CHAR_DEAD sweet IF IS_CHAR_PLAYING_ANIM scplayer swt_wllpk_L GET_CHAR_ANIM_CURRENT_TIME scplayer swt_wllpk_L playeranim_f1 IF playeranim_f1 = 1.0 TASK_PLAY_ANIM scplayer swt_wllshoot_in_L SWAT 8.0 FALSE TRUE TRUE FALSE -1 IF NOT IS_CHAR_DEAD exthelidriver_f1 enemy_f1 = sweet enemytarget_f1 = exthelidriver_f1 GOSUB stayshootnoduck_f1label ENDIF sweetexit_f1flag = 10 ENDIF ENDIF ENDIF ENDIF IF sweetexit_f1flag = 10 IF NOT IS_CHAR_DEAD sweet IF IS_CHAR_PLAYING_ANIM scplayer swt_wllshoot_in_L GET_CHAR_ANIM_CURRENT_TIME scplayer swt_wllshoot_in_L playeranim_f1 IF playeranim_f1 = 1.0 IF NOT IS_CAR_DEAD extpoliceheli_f1 CREATE_SEARCHLIGHT_ON_VEHICLE extpoliceheli_f1 0.0 1.0 -0.5 2193.73 -1166.85 34.06 4.0 0.4 helispotlight_f1 POINT_SEARCHLIGHT_AT_CHAR helispotlight_f1 sweet 0.2 ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// skiphelicutscene_f1flag = 1 SKIP_CUTSCENE_END ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// IF skiphelicutscene_f1flag = 0 CLEAR_PRINTS DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 //delete everything IF NOT IS_CAR_DEAD extpoliceheli_f1 IF IS_PLAYBACK_GOING_ON_FOR_CAR extpoliceheli_f1 STOP_PLAYBACK_RECORDED_CAR extpoliceheli_f1 ENDIF ENDIF DELETE_CAR extpoliceheli_f1 DELETE_CHAR swat1_f1 DELETE_CHAR swat2_f1 DELETE_CHAR swat3_f1 DELETE_CHAR swat4_f1 //creating everything REQUEST_MODEL POLMAV REQUEST_MODEL SWAT REQUEST_MODEL MP5LNG LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED POLMAV OR NOT HAS_MODEL_LOADED SWAT OR NOT HAS_MODEL_LOADED MP5LNG WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY sweet SET_CHAR_ONLY_DAMAGED_BY_PLAYER sweet FALSE ENDIF CREATE_CAR POLMAV 2249.51 -1111.52 56.1 extpoliceheli_f1 SET_PETROL_TANK_WEAKPOINT extpoliceheli_f1 FALSE SET_CAR_ONLY_DAMAGED_BY_PLAYER extpoliceheli_f1 TRUE SET_CAR_FORWARD_SPEED extpoliceheli_f1 30.0 SET_CAR_HEALTH extpoliceheli_f1 2000 CREATE_SEARCHLIGHT_ON_VEHICLE extpoliceheli_f1 0.0 1.0 -0.5 2193.73 -1166.85 34.06 3.0 0.4 helispotlight_f1 POINT_SEARCHLIGHT_AT_CHAR helispotlight_f1 sweet 0.2 CREATE_CHAR_INSIDE_CAR extpoliceheli_f1 PEDTYPE_MISSION2 SWAT exthelidriver_f1 SET_CHAR_CAN_BE_SHOT_IN_VEHICLE exthelidriver_f1 FALSE LOCK_CAR_DOORS extpoliceheli_f1 CARLOCK_LOCKED SET_CHAR_CANT_BE_DRAGGED_OUT exthelidriver_f1 TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE exthelidriver_f1 FALSE SET_CHAR_DECISION_MAKER exthelidriver_f1 motel_DM SET_HELI_BLADES_FULL_SPEED extpoliceheli_f1 SET_CAR_COORDINATES extpoliceheli_f1 2188.28 -1176.54 39.54 SET_CAR_HEADING extpoliceheli_f1 210.0 CREATE_CHAR PEDTYPE_MISSION4 SWAT 2161.84 -1154.26 25.09 swat1_f1 SET_CHAR_RELATIONSHIP swat1_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_SPECIAL SET_CHAR_RELATIONSHIP swat1_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER swat1_f1 extmotel_DM CREATE_CHAR PEDTYPE_MISSION4 SWAT 2159.84 -1154.26 25.09 swat2_f1 SET_CHAR_RELATIONSHIP swat2_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_SPECIAL SET_CHAR_DECISION_MAKER swat2_f1 extmotel_DM CREATE_CHAR PEDTYPE_MISSION4 SWAT 2159.84 -1154.26 -5.09 swat3_f1 SET_CHAR_RELATIONSHIP swat3_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_SPECIAL SET_CHAR_RELATIONSHIP swat3_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER swat3_f1 extmotel_DM CREATE_CHAR PEDTYPE_MISSION4 SWAT 2159.84 -1154.26 -8.09 swat4_f1 SET_CHAR_RELATIONSHIP swat4_f1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_SPECIAL SET_CHAR_DECISION_MAKER swat4_f1 extmotel_DM swat1_f1flag = 0 swat2_f1flag = 0 swat3_f1flag = 0 swat4_f1flag = 0 ATTACH_CHAR_TO_CAR swat1_f1 extpoliceheli_f1 1.4 1.3 -0.1 FACING_RIGHT 190.0 WEAPONTYPE_MP5 SET_CHAR_HEALTH swat1_f1 150 SET_CHAR_SHOOT_RATE swat1_f1 70 ATTACH_CHAR_TO_CAR swat2_f1 extpoliceheli_f1 1.4 -0.8 -0.1 FACING_RIGHT 190.0 WEAPONTYPE_MP5 SET_CHAR_HEALTH swat2_f1 150 SET_CHAR_SHOOT_RATE swat2_f1 70 ATTACH_CHAR_TO_CAR swat3_f1 extpoliceheli_f1 -1.4 1.3 -0.1 FACING_LEFT 190.0 WEAPONTYPE_MP5 SET_CHAR_HEALTH swat3_f1 150 SET_CHAR_SHOOT_RATE swat3_f1 70 ATTACH_CHAR_TO_CAR swat4_f1 extpoliceheli_f1 -1.4 -0.8 -0.1 FACING_LEFT 190.0 WEAPONTYPE_MP5 SET_CHAR_HEALTH swat4_f1 150 LOAD_SCENE 2193.86 -1157.682 33.563 SET_CHAR_COORDINATES scplayer 2194.53 -1159.24 32.563 SET_CHAR_HEADING scplayer 173.208 SET_CHAR_COORDINATES sweet 2192.638 -1169.202 32.563 SET_CHAR_HEADING sweet 180.668 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER DO_FADE 750 FADE_IN ENDIF swat1_f1flag = 0 swat2_f1flag = 0 swat3_f1flag = 0 swat4_f1flag = 0 ////////////////////////////////////////////////////////////////////////////////////// IF NOT IS_CHAR_DEAD sweet IF NOT IS_CHAR_DEAD exthelidriver_f1 SET_CHAR_PROOFS sweet FALSE TRUE TRUE TRUE FALSE GIVE_WEAPON_TO_CHAR sweet WEAPONTYPE_MP5 99999 enemy_f1 = sweet enemytarget_f1 = exthelidriver_f1 GOSUB stayshootnoduck_f1label ENDIF ENDIF IF NOT IS_CAR_DEAD extpoliceheli_f1 SET_HELI_REACHED_TARGET_DISTANCE extpoliceheli_f1 3 ADD_BLIP_FOR_CAR extpoliceheli_f1 heli_f1blip ENDIF nHealth = 100 GET_INT_STAT MAX_HEALTH nHealth SET_CHAR_HEALTH scplayer nHealth //SET_CHAR_HEALTH scplayer 100 REMOVE_DECISION_MAKER coward_DM TIMERA = 0 SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON IF NOT IS_CHAR_DEAD sweet SET_CHAR_ONLY_DAMAGED_BY_PLAYER sweet FALSE SET_CHAR_HEALTH sweet 500 sweethealth_f1 = 100 ENDIF REMOVE_ANIMATION SWAT RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER DISPLAY_ONSCREEN_COUNTER_WITH_STRING sweethealth_f1 COUNTER_DISPLAY_BAR LAF1_20 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 1 SOUND_FIN1_JM //CJ, dump on that helicopter! LOAD_MISSION_AUDIO 2 SOUND_FIN1_CL //Mayday, mayday! Buzzard 1 is going down! progressaudio_f1flag = 0 handlingaudio_f1flag = 0 PRINT_NOW LAF1_5 5000 1 //~s~Protect ~b~Sweet ~s~and destroy the ~r~SWAT helicopter~s~. roofmotel_f1flag = 2 sweetexit_f1flag = 11 ENDIF ENDIF ENDIF ENDIF IF sweetexit_f1flag < 11 IF IS_CHAR_DEAD sweet PRINT_NOW LAF1_70 5000 1//Sweet died! GOTO mission_drugs4_failed //sweet died ENDIF ENDIF ENDIF IF roofmotel_f1flag = 2 //display health bar IF NOT IS_CHAR_DEAD sweet GET_CHAR_HEALTH sweet sweethealth_f1 sweethealth_f1 = sweethealth_f1 / 5 ELSE PRINT_NOW LAF1_70 5000 1//Sweet died! GOTO mission_drugs4_failed //sweet died ENDIF //sweet moves across the roof and heli starts movement IF NOT IS_CHAR_DEAD sweet IF sweetexit_f1flag = 11 IF TIMERA > 4000 TASK_GO_STRAIGHT_TO_COORD sweet 2193.199 -1179.67 33.56 PEDMOVE_RUN -1 sweetexit_f1flag = 12 ENDIF ENDIF IF sweetexit_f1flag = 12 IF LOCATE_CHAR_ANY_MEANS_3D sweet 2193.199 -1179.67 33.56 1.5 1.5 2.5 FALSE IF NOT IS_CHAR_DEAD exthelidriver_f1 enemy_f1 = sweet enemytarget_f1 = exthelidriver_f1 GOSUB stayshootnoduck_f1label ENDIF TIMERA = 0 IF NOT IS_CAR_DEAD extpoliceheli_f1 HELI_GOTO_COORDS extpoliceheli_f1 2193.199 -1179.67 40.5 10.0 10.0 IF DOES_SEARCHLIGHT_EXIST helispotlight_f1 POINT_SEARCHLIGHT_AT_CHAR helispotlight_f1 scplayer 0.2 ENDIF ENDIF sweetexit_f1flag = 13 ENDIF ENDIF IF sweetexit_f1flag = 13 IF TIMERA > 10000 TASK_GO_STRAIGHT_TO_COORD sweet 2200.652 -1188.776 32.563 PEDMOVE_RUN -1 IF DOES_SEARCHLIGHT_EXIST helispotlight_f1 POINT_SEARCHLIGHT_AT_CHAR helispotlight_f1 sweet 0.2 ENDIF IF NOT IS_CAR_DEAD extpoliceheli_f1 SET_CAR_ONLY_DAMAGED_BY_PLAYER extpoliceheli_f1 FALSE ENDIF sweetexit_f1flag = 14 ENDIF ENDIF IF sweetexit_f1flag = 14 IF LOCATE_CHAR_ANY_MEANS_3D sweet 2200.652 -1188.776 32.563 1.5 1.5 3.5 FALSE IF NOT IS_CHAR_DEAD exthelidriver_f1 enemy_f1 = sweet enemytarget_f1 = exthelidriver_f1 GOSUB stayshootnoduck_f1label ENDIF TIMERA = 0 IF NOT IS_CAR_DEAD extpoliceheli_f1 HELI_GOTO_COORDS extpoliceheli_f1 2212.41 -1168.54 42.0 20.0 20.0 //2205.24 -1170.36 ENDIF sweetexit_f1flag = 15 ENDIF ENDIF IF sweetexit_f1flag = 15 IF TIMERA > 12000 TASK_GO_STRAIGHT_TO_COORD sweet 2209.474 -1185.644 33.56 PEDMOVE_RUN -1 // IF NOT IS_CAR_DEAD extpoliceheli_f1 // SET_CAR_HEALTH extpoliceheli_f1 1500 // ENDIF IF DOES_SEARCHLIGHT_EXIST helispotlight_f1 POINT_SEARCHLIGHT_AT_CHAR helispotlight_f1 scplayer 0.2 ENDIF sweetexit_f1flag = 16 ENDIF ENDIF IF sweetexit_f1flag = 16 IF LOCATE_CHAR_ANY_MEANS_3D sweet 2209.474 -1185.644 33.56 1.5 1.5 3.5 FALSE IF NOT IS_CHAR_DEAD exthelidriver_f1 enemy_f1 = sweet enemytarget_f1 = exthelidriver_f1 GOSUB stayshootnoduck_f1label ENDIF TIMERA = 0 IF NOT IS_CAR_DEAD extpoliceheli_f1 HELI_GOTO_COORDS extpoliceheli_f1 2223.66 -1169.4 42.83 20.0 20.0 //2209.36 -1199.03 42.66 ENDIF sweetexit_f1flag = 17 ENDIF ENDIF IF sweetexit_f1flag = 17 IF TIMERA > 5000 TASK_GO_STRAIGHT_TO_COORD sweet 2219.186 -1188.8 33.563 PEDMOVE_RUN -1 IF DOES_SEARCHLIGHT_EXIST helispotlight_f1 POINT_SEARCHLIGHT_AT_CHAR helispotlight_f1 sweet 0.2 ENDIF sweetexit_f1flag = 18 ENDIF ENDIF IF sweetexit_f1flag = 18 IF LOCATE_CHAR_ANY_MEANS_3D sweet 2219.186 -1188.8 33.563 1.5 1.5 3.5 FALSE IF NOT IS_CHAR_DEAD exthelidriver_f1 enemy_f1 = sweet enemytarget_f1 = exthelidriver_f1 GOSUB stayshootnoduck_f1label ENDIF TIMERA = 0 IF NOT IS_CAR_DEAD extpoliceheli_f1 HELI_GOTO_COORDS extpoliceheli_f1 2242.91 -1178.87 42.0 10.0 10.0 //2236.59 -1175.8 ENDIF sweetexit_f1flag = 19 ENDIF ENDIF //sweet runs to bottom of stairs when heli is shot down IF swat1_f1flag = 0 IF IS_CHAR_DEAD swat1_f1 DETACH_CHAR_FROM_CAR swat1_f1 swat1_f1flag = 1 ENDIF ENDIF IF swat2_f1flag = 0 IF IS_CHAR_DEAD swat2_f1 DETACH_CHAR_FROM_CAR swat2_f1 swat2_f1flag = 1 ENDIF ENDIF IF swat3_f1flag = 0 IF IS_CHAR_DEAD swat3_f1 DETACH_CHAR_FROM_CAR swat3_f1 swat3_f1flag = 1 ENDIF ENDIF IF swat4_f1flag = 0 IF IS_CHAR_DEAD swat4_f1 DETACH_CHAR_FROM_CAR swat4_f1 swat4_f1flag = 1 ENDIF ENDIF IF sweetexit_f1flag > 10 IF NOT IS_CAR_DEAD extpoliceheli_f1 GET_CAR_HEALTH extpoliceheli_f1 extpoliceheli_f1health IF extpoliceheli_f1health < 1250 SET_CHAR_PROOFS scplayer FALSE FALSE TRUE FALSE FALSE REMOVE_BLIP heli_f1blip HELI_GOTO_COORDS extpoliceheli_f1 2220.44 -1128.29 43.31 30.0 30.0 IF HAS_MISSION_AUDIO_LOADED 2 PLAY_MISSION_AUDIO 2 //SOUND_FIN1_CL //Mayday, mayday! Buzzard 1 is going down! ENDIF DELETE_SEARCHLIGHT helispotlight_f1 TIMERA = 0 helicrash_f1flag = 1 PRINT_NOW LAF1_69 5000 1//Follow Sweet. roofmotel_f1flag = 3 sweetexit_f1flag = 20 ENDIF ELSE PRINT_NOW LAF1_69 1000 1//Follow Sweet. DELETE_SEARCHLIGHT helispotlight_f1 roofmotel_f1flag = 3 sweetexit_f1flag = 20 ENDIF ENDIF ENDIF ENDIF IF roofmotel_f1flag = 3 IF sweetexit_f1flag < 23 //display health bar IF NOT IS_CHAR_DEAD sweet GET_CHAR_HEALTH sweet sweethealth_f1 sweethealth_f1 = sweethealth_f1 / 5 ELSE PRINT_NOW LAF1_70 5000 1//Sweet died! GOTO mission_drugs4_failed //sweet died ENDIF IF sweetexit_f1flag = 20 IF NOT IS_CHAR_DEAD sweet TASK_FOLLOW_PATH_NODES_TO_COORD sweet 2235.36 -1188.68 33.82 PEDMOVE_RUN 35000 TIMERB = 0 progressaudio_f1flag = 0 handlingaudio_f1flag = 0 CLEAR_MISSION_AUDIO 1 CLEAR_AREA 2197.78 -1194.00 30.0 30.0 TRUE sweetexit_f1flag = 21 ENDIF ENDIF IF sweetexit_f1flag = 21 IF NOT IS_CHAR_DEAD sweet IF LOCATE_CHAR_ANY_MEANS_CHAR_3D sweet scplayer 4.0 4.0 3.5 FALSE IF IS_CHAR_ON_SCREEN sweet SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE TASK_FOLLOW_PATH_NODES_TO_COORD sweet 2197.78 -1194.00 26.17 PEDMOVE_RUN 35000 CLEAR_AREA 2197.78 -1194.00 100.0 100.0 FALSE sweetexit_f1flag = 22 ENDIF ELSE IF TIMERB > 3500 //follow sweet PRINT_NOW LAF1_69 1000 1//Follow Sweet. CLEAR_AREA 2197.78 -1194.00 100.0 100.0 FALSE ENDIF ENDIF ENDIF ENDIF IF helicrash_f1flag = 1 IF NOT IS_CAR_DEAD extpoliceheli_f1 IF LOCATE_CAR_3D extpoliceheli_f1 2220.44 -1128.29 43.31 15.0 15.0 15.0 FALSE EXPLODE_CAR extpoliceheli_f1 EXPLODE_CAR extpoliceheli_f1 TIMERA = 0 helicrash_f1flag = 2 ENDIF ENDIF ENDIF IF helicrash_f1flag = 2 IF TIMERA > 3000 MARK_CAR_AS_NO_LONGER_NEEDED extpoliceheli_f1 DELETE_CAR extpoliceheli_f1 helicrash_f1flag = 3 ENDIF ENDIF IF sweetexit_f1flag = 22 IF NOT IS_CHAR_DEAD sweet IF LOCATE_CHAR_ON_FOOT_3D scplayer 2197.78 -1194.00 26.17 5.0 5.0 3.5 FALSE DO_FADE 250 FADE_OUT SET_PLAYER_CONTROL PLAYER1 OFF SET_CHAR_PROOFS sweet TRUE TRUE TRUE TRUE TRUE WHILE GET_FADING_STATUS //added WAIT 0 //added ENDWHILE //added MARK_CAR_AS_NO_LONGER_NEEDED extpoliceheli_f1 CLEAR_AREA 2197.78 -1194.00 100.0 100.0 TRUE IF NOT IS_CHAR_DEAD sweet SET_CHAR_COORDINATES sweet 2197.78 -1194.00 25.0 ENDIF sweetexit_f1flag = 23 ELSE IF LOCATE_CHAR_ON_FOOT_3D sweet 2197.78 -1194.00 26.17 5.0 5.0 3.5 FALSE MARK_CAR_AS_NO_LONGER_NEEDED extpoliceheli_f1 CLEAR_AREA 2197.78 -1194.00 100.0 100.0 TRUE DO_FADE 250 FADE_OUT SET_PLAYER_CONTROL PLAYER1 OFF SET_CHAR_PROOFS sweet TRUE TRUE TRUE TRUE TRUE WHILE GET_FADING_STATUS //added WAIT 0 //added ENDWHILE //added sweetexit_f1flag = 23 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF roofmotel_f1flag > 1 IF roofmotel_f1flag < 4 IF sweetexit_f1flag < 23 GOSUB process_audio_f1 //play mission audio IF roofmotel_f1flag = 2 IF NOT IS_CAR_DEAD extpoliceheli_f1 IF progressaudio_f1flag = 0 IF handlingaudio_f1flag = 0 IF sweetexit_f1flag > 11 audio_label_f1 = SOUND_FIN1_JM //CJ, dump on that helicopter! $input_text_f1 = FIN1_JM //CJ, dump on that helicopter! GOSUB load_audio_f1 ENDIF ENDIF ENDIF IF progressaudio_f1flag = 1 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_BY //This is Buzzard 1, we are taking ground fire! $input_text_f1 = FIN1_BY //This is Buzzard 1, we are taking ground fire! GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 2 IF handlingaudio_f1flag = 0 IF sweetexit_f1flag > 14 audio_label_f1 = SOUND_FIN1_JL //CJ, that chopper’s all over us! Hit it! $input_text_f1 = FIN1_JL //CJ, that chopper’s all over us! Hit it! GOSUB load_audio_f1 ENDIF ENDIF ENDIF ENDIF ENDIF IF roofmotel_f1flag = 3 IF sweetexit_f1flag > 21 IF progressaudio_f1flag = 0 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_JN //C’mon, CJ, let’s go! $input_text_f1 = FIN1_JN //C’mon, CJ, let’s go! GOSUB load_audio_f1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// Rails Section //////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //VIEW_INTEGER_VARIABLE rails_f1flag rails_f1flag IF sweetexit_f1flag = 23 IF rails_f1flag = 0 IF NOT IS_CHAR_DEAD sweet DISPLAY_RADAR 2 // PATHING OFF SET_TIME_OF_DAY 03 15 SET_CURRENT_CHAR_WEAPON sweet WEAPONTYPE_UNARMED //mark models as no longer needed MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED SWITCH_WIDESCREEN ON CLEAR_AREA 2223.971 -1149.75 200.0 200.0 FALSE SET_PLAYER_CONTROL PLAYER1 OFF SET_NEAR_CLIP 0.1 //remember to set this back next cut SET_FIXED_CAMERA_POSITION 2190.3247 -1194.5623 25.4553 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2189.3760 -1194.5400 25.1403 JUMP_CUT CLEAR_CHAR_TASKS_IMMEDIATELY sweet CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES sweet 2192.65 -1194.78 24.2//2188.2019 -1194.1411 23.4756 SET_CHAR_HEADING sweet 78.5405 SET_CHAR_COORDINATES scplayer 2192.00 -1193.78 24.2 //2189.7297 -1195.3049 23.6239 SET_CHAR_HEADING scplayer 85.0874 //reset any flags that will be used extpoliceheli_f1flag = 0 REMOVE_DECISION_MAKER extmotel_DM //request stuff here MARK_MODEL_AS_NO_LONGER_NEEDED SWAT CLEAR_ONSCREEN_COUNTER sweethealth_f1 REQUEST_MODEL COPCARLA REQUEST_MODEL LAPD1 REQUEST_MODEL AK47 REQUEST_MODEL STREAK REQUEST_MODEL GREENWOO REQUEST_MODEL POLMAV REQUEST_ANIMATION GANGS REQUEST_ANIMATION CAR_CHAT LOAD_SPECIAL_CHARACTER 2 SMOKE LOAD_SPECIAL_CHARACTER 3 RYDER2 REQUEST_CAR_RECORDING 330 //sweet car arriving REQUEST_CAR_RECORDING 332 //sweet car REQUEST_CAR_RECORDING 333 //1st police car REQUEST_CAR_RECORDING 334 //2nd police car REQUEST_CAR_RECORDING 335 //3rd police car REQUEST_CAR_RECORDING 336 //4th police car REQUEST_CAR_RECORDING 337 //5th police car REQUEST_CAR_RECORDING 338 //7th police car LOAD_MISSION_AUDIO 1 SOUND_FIN1_KA //Ah shit, what now? LOAD_MISSION_AUDIO 2 SOUND_FIN1_KB //It’s Smoke and Ryder! LOAD_ALL_MODELS_NOW WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_SPECIAL_CHARACTER_LOADED 2 OR NOT HAS_SPECIAL_CHARACTER_LOADED 3 OR NOT HAS_ANIMATION_LOADED GANGS OR NOT HAS_ANIMATION_LOADED CAR_CHAT WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED COPCARLA OR NOT HAS_MODEL_LOADED LAPD1 OR NOT HAS_MODEL_LOADED AK47 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED STREAK OR NOT HAS_MODEL_LOADED GREENWOO OR NOT HAS_MODEL_LOADED POLMAV WAIT 0 ENDWHILE WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 330 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 332 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 333 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 334 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 335 WAIT 0 ENDWHILE WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 336 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 337 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 338 OR NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE DELETE_CAR extpoliceheli_f1 DELETE_CHAR exthelidriver_f1 DELETE_CHAR swat1_f1 DELETE_CHAR swat2_f1 DELETE_CHAR swat3_f1 DELETE_CHAR swat4_f1 CLEAR_AREA 2192.65 -1194.78 100.0 100.0 TRUE CREATE_CAR POLMAV 2130.004 -1196.324 28.198 extpoliceheli_f1 SET_PETROL_TANK_WEAKPOINT extpoliceheli_f1 FALSE SET_CAR_HEADING extpoliceheli_f1 336.905 CREATE_CHAR_INSIDE_CAR extpoliceheli_f1 PEDTYPE_MISSION1 LAPD1 exthelidriver_f1 SET_CHAR_DECISION_MAKER exthelidriver_f1 motel_DM SET_CHAR_SUFFERS_CRITICAL_HITS exthelidriver_f1 FALSE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE exthelidriver_f1 FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER exthelidriver_f1 TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER extpoliceheli_f1 TRUE SET_CAR_PROOFS extpoliceheli_f1 FALSE TRUE TRUE FALSE FALSE SET_HELI_BLADES_FULL_SPEED extpoliceheli_f1 SET_CAR_VISIBLE extpoliceheli_f1 FALSE CREATE_CAR GREENWOO 2203.498 -1217.624 23.579 sweet_car SET_RADIO_CHANNEL RS_MODERN_HIP_HOP SET_CAR_CAN_BE_VISIBLY_DAMAGED sweet_car FALSE SET_CAR_HEADING sweet_car 90.386 CREATE_CHAR_INSIDE_CAR sweet_car PEDTYPE_SPECIAL SPECIAL02 big_smoke SET_CHAR_DECISION_MAKER big_smoke motel_DM CREATE_CHAR_AS_PASSENGER sweet_car PEDTYPE_SPECIAL SPECIAL03 0 ryder SET_CHAR_DECISION_MAKER ryder motel_DM CHANGE_CAR_COLOUR sweet_car 59 34 SET_CAR_PROOFS sweet_car FALSE TRUE TRUE TRUE TRUE SET_CAR_HEALTH sweet_car 6000 SET_CAN_BURST_CAR_TYRES sweet_car FALSE CREATE_CAR COPCARLA 2169.1943 -1270.0591 22.8203 policecar1_f1 //1st car chasing player SET_PETROL_TANK_WEAKPOINT policecar1_f1 FALSE SET_CAR_HEADING policecar1_f1 357.0326 SET_CAR_ONLY_DAMAGED_BY_PLAYER policecar1_f1 TRUE SET_CAR_HEALTH policecar1_f1 750 CREATE_CHAR_INSIDE_CAR policecar1_f1 PEDTYPE_MISSION1 LAPD1 cop1_f1 SET_CHAR_DECISION_MAKER cop1_f1 motel_DM SET_CHAR_HEALTH cop1_f1 100 SET_CHAR_SUFFERS_CRITICAL_HITS cop1_f1 FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop1_f1 TRUE CREATE_CHAR_AS_PASSENGER policecar1_f1 PEDTYPE_MISSION1 LAPD1 0 cop2_f1 SET_CHAR_DECISION_MAKER cop2_f1 motel_dm SET_CHAR_HEALTH cop2_f1 200 SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop2_f1 TRUE GIVE_WEAPON_TO_CHAR cop2_f1 WEAPONTYPE_MP5 99999 SET_CHAR_SUFFERS_CRITICAL_HITS cop2_f1 FALSE CAR_SET_IDLE policecar1_f1 SET_CAR_VISIBLE policecar1_f1 FALSE CREATE_CAR COPCARLA 2172.5264 -1280.7343 22.9766 policecar2_f1 //2nd car chasing player SET_PETROL_TANK_WEAKPOINT policecar2_f1 FALSE SET_CAR_HEADING policecar2_f1 0.9448 SET_CAR_ONLY_DAMAGED_BY_PLAYER policecar2_f1 TRUE SET_CAR_HEALTH policecar2_f1 500 CREATE_CHAR_INSIDE_CAR policecar2_f1 PEDTYPE_MISSION1 LAPD1 cop3_f1 SET_CAR_PROOFS policecar2_f1 FALSE TRUE TRUE TRUE TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop3_f1 TRUE SET_CHAR_HEALTH cop3_f1 100 SET_CHAR_DECISION_MAKER cop3_f1 motel_DM //SET_CHAR_SUFFERS_CRITICAL_HITS cop3_f1 FALSE CREATE_CHAR_AS_PASSENGER policecar2_f1 PEDTYPE_MISSION1 LAPD1 0 cop4_f1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop4_f1 TRUE SET_CHAR_DECISION_MAKER cop4_f1 motel_dm SET_CHAR_HEALTH cop4_f1 200 SET_CHAR_SUFFERS_CRITICAL_HITS cop4_f1 FALSE GIVE_WEAPON_TO_CHAR cop4_f1 WEAPONTYPE_MP5 99999 CAR_SET_IDLE policecar2_f1 SET_CAR_VISIBLE policecar2_f1 FALSE CREATE_CAR COPCARLA 2223.11 -1150.118 24.92 policecar3_f1 //3rd, hits train SET_PETROL_TANK_WEAKPOINT policecar3_f1 FALSE CREATE_CHAR_INSIDE_CAR policecar3_f1 PEDTYPE_MISSION1 LAPD1 cop5_f1 SET_CHAR_CAN_BE_SHOT_IN_VEHICLE cop5_f1 FALSE SET_CAR_ONLY_DAMAGED_BY_PLAYER policecar3_f1 TRUE SET_CAR_HEALTH policecar3_f1 1000 SET_CHAR_DECISION_MAKER cop5_f1 motel_DM SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop5_f1 TRUE SET_CHAR_SUFFERS_CRITICAL_HITS cop5_f1 FALSE CREATE_CHAR_AS_PASSENGER policecar3_f1 PEDTYPE_MISSION1 LAPD1 0 cop6_f1 SET_CHAR_DECISION_MAKER cop6_f1 motel_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop6_f1 TRUE SET_CHAR_HEALTH cop6_f1 200 SET_CHAR_SUFFERS_CRITICAL_HITS cop6_f1 FALSE GIVE_WEAPON_TO_CHAR cop6_f1 WEAPONTYPE_MP5 99999 CAR_SET_IDLE policecar3_f1 CREATE_CAR COPCARLA 2388.808 -1259.431 22.94 policecar4_f1 //waiting outside garage SET_CAR_HEADING policecar4_f1 89.36 SET_PETROL_TANK_WEAKPOINT policecar4_f1 FALSE SET_CAR_ONLY_DAMAGED_BY_PLAYER policecar4_f1 TRUE SET_CAR_HEALTH policecar4_f1 900 CREATE_CHAR_INSIDE_CAR policecar4_f1 PEDTYPE_MISSION1 LAPD1 cop7_f1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop7_f1 TRUE SET_CHAR_DECISION_MAKER cop7_f1 motel_DM SET_CHAR_SUFFERS_CRITICAL_HITS cop7_f1 FALSE SET_CHAR_HEALTH cop7_f1 100 CREATE_CHAR_AS_PASSENGER policecar4_f1 PEDTYPE_MISSION1 LAPD1 0 cop8_f1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop8_f1 TRUE SET_CHAR_HEALTH cop8_f1 150 SET_CHAR_DECISION_MAKER cop8_f1 motel_dm GIVE_WEAPON_TO_CHAR cop8_f1 WEAPONTYPE_MP5 9999 SET_CHAR_SUFFERS_CRITICAL_HITS cop8_f1 FALSE CAR_SET_IDLE policecar4_f1 SWITCH_RANDOM_TRAINS OFF DELETE_ALL_TRAINS CREATE_MISSION_TRAIN 15 2284.991 -1186.053 24.756 FALSE train_f1 SET_TRAIN_SPEED train_f1 0.0 SET_TRAIN_CRUISE_SPEED train_f1 0.0 SET_CAR_PROOFS train_f1 TRUE TRUE TRUE TRUE TRUE TASK_GO_STRAIGHT_TO_COORD scplayer 2183.5667 -1193.8510 23.2419 PEDMOVE_RUN 5000 IF NOT IS_CHAR_DEAD sweet TASK_GO_STRAIGHT_TO_COORD sweet 2183.5315 -1195.0739 23.2266 PEDMOVE_RUN 5000 ENDIF DO_FADE 250 FADE_IN rails_f1flag = 1 ENDIF ENDIF ENDIF //camera looking down stairs, player and sweet run past it IF rails_f1flag = 1 IF NOT IS_CHAR_DEAD sweet IF LOCATE_CHAR_ANY_MEANS_2D sweet 2183.5315 -1195.0739 1.5 1.5 FALSE IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2183.5667 -1193.8510 2.0 2.0 FALSE SET_FIXED_CAMERA_POSITION 2183.6172 -1193.0881 24.8301 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2183.5400 -1194.0851 24.8217 JUMP_CUT TIMERA = 0 rails_f1flag = 2 ENDIF ENDIF ENDIF ENDIF //sweet and player now down the stairs looking at sweet's car IF rails_f1flag = 2 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD sweet IF TIMERA > 1500 TASK_LOOK_AT_CHAR scplayer big_smoke 3000 START_PLAYBACK_RECORDED_CAR sweet_car 330 TASK_PLAY_ANIM sweet prtial_gngtlkE GANGS 1000.0 FALSE TRUE TRUE TRUE -1 PLAY_MISSION_AUDIO 1 //Ah shit, what now? PRINT_NOW FIN1_KA 2500 1 //Ah shit, what now? START_CHAR_FACIAL_TALK sweet 2000 TIMERA = 0 rails_f1flag = 3 ENDIF ENDIF ENDIF ENDIF ENDIF IF rails_f1flag = 3 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD sweet IF TIMERA > 500 TASK_PLAY_ANIM scplayer prtial_gngtlkH GANGS 4.0 FALSE TRUE TRUE FALSE -1 rails_f1flag = 4 ENDIF ENDIF ENDIF ENDIF ENDIF IF rails_f1flag = 4 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD sweet IF HAS_MISSION_AUDIO_FINISHED 1 TASK_LOOK_AT_CHAR sweet big_smoke 5000 CLEAR_PRINTS PLAY_MISSION_AUDIO 2 //FIN1_KB It’s Smoke and Ryder! START_CHAR_FACIAL_TALK scplayer 2000 PRINT_NOW FIN1_KB 3000 1 STOP_CHAR_FACIAL_TALK sweet CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FIN1_KC //Get in! TASK_GO_STRAIGHT_TO_COORD scplayer 2181.53 -1193.81 23.67 PEDMOVE_WALK 5000 TASK_GO_STRAIGHT_TO_COORD sweet 2181.41 -1195.67 23.74 PEDMOVE_WALK 5000 SET_FIXED_CAMERA_POSITION 2177.9189 -1190.9521 24.4917 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2178.3723 -1191.8152 24.2692 JUMP_CUT rails_f1flag = 5 ENDIF ENDIF ENDIF ENDIF ENDIF IF rails_f1flag = 5 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD ryder IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD sweet IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR sweet_car IF HAS_MISSION_AUDIO_LOADED 1 IF HAS_MISSION_AUDIO_FINISHED 2 STOP_CHAR_FACIAL_TALK scplayer CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS LOAD_MISSION_AUDIO 2 SOUND_FIN1_KE //Hit the gas! PLAY_MISSION_AUDIO 1 //FIN1_KC //Get in! START_CHAR_FACIAL_TALK big_smoke 1000 PRINT_NOW FIN1_KC 2000 1//Get in! SET_FIXED_CAMERA_POSITION 2177.9189 -1190.9521 24.4917 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2178.3723 -1191.8152 24.2692 JUMP_CUT TASK_LOOK_AT_CHAR scplayer big_smoke 5000 CAR_SET_IDLE sweet_car TASK_PLAY_ANIM big_smoke CAR_Sc4_FL CAR_CHAT 1000.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM ryder CAR_Sc4_FR CAR_CHAT 1000.0 FALSE FALSE FALSE FALSE -1 TASK_ENTER_CAR_AS_PASSENGER scplayer sweet_car 5000 2 TASK_GO_STRAIGHT_TO_COORD sweet 2181.51 -1201.97 24.0 PEDMOVE_RUN 5000 IF NOT IS_CAR_DEAD policecar1_f1 SWITCH_CAR_SIREN policecar1_f1 ON ENDIF IF NOT IS_CAR_DEAD policecar2_f1 SWITCH_CAR_SIREN policecar2_f1 ON ENDIF TIMERA = 0 rails_f1flag = 6 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF rails_f1flag = 6 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD ryder IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD sweet IF TIMERA > 2000 SET_CHAR_COORDINATES sweet 2176.78 -1196.64 23.18 TASK_ENTER_CAR_AS_PASSENGER sweet sweet_car 6000 1 STOP_CHAR_FACIAL_TALK big_smoke POP_CAR_PANEL sweet_car WINDSCREEN_PANEL FALSE SET_FIXED_CAMERA_POSITION 2178.8811 -1194.1964 24.3172 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2178.8660 -1195.1960 24.2959 JUMP_CUT rails_f1flag = 7 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF rails_f1flag = 7 IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_SITTING_IN_ANY_CAR scplayer TASK_PLAY_ANIM scplayer CAR_Sc4_BR CAR_CHAT 6.0 FALSE FALSE FALSE FALSE -1 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED rails_f1flag = 8 ENDIF ENDIF ENDIF IF rails_f1flag = 8 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD ryder IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD sweet IF HAS_MISSION_AUDIO_FINISHED 1 IF HAS_MISSION_AUDIO_LOADED 2 IF IS_CHAR_SITTING_IN_CAR sweet sweet_car TASK_PLAY_ANIM sweet CAR_Sc4_BL CAR_CHAT 8.0 FALSE FALSE FALSE FALSE -1 PLAY_MISSION_AUDIO 2 //SOUND_FIN1_KE //Hit the gas! START_CHAR_FACIAL_TALK sweet 1000 PRINT_NOW FIN1_KE 2000 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FIN1_KF //(for on rails section) Eh man, I’m running low. //heli follows player IF NOT IS_CAR_DEAD extpoliceheli_f1 SET_CAR_VISIBLE extpoliceheli_f1 TRUE HELI_FOLLOW_ENTITY extpoliceheli_f1 scplayer -1 20.0 ENDIF //start playing two recorded chasing police cars IF NOT IS_CAR_DEAD policecar1_f1 SET_CAR_VISIBLE policecar1_f1 TRUE START_PLAYBACK_RECORDED_CAR policecar1_f1 333 ADD_BLIP_FOR_CAR policecar1_f1 policecar1_f1blip CHANGE_BLIP_DISPLAY policecar1_f1blip BLIP_ONLY SET_CAR_HEALTH policecar1_f1 1000 policecar1_f1flag = 1 //car started policecar1swap_f1flag = 1 ENDIF IF NOT IS_CAR_DEAD policecar2_f1 SET_CAR_VISIBLE policecar2_f1 TRUE START_PLAYBACK_RECORDED_CAR policecar2_f1 334 ADD_BLIP_FOR_CAR policecar2_f1 policecar2_f1blip CHANGE_BLIP_DISPLAY policecar2_f1blip BLIP_ONLY policecar2_f1flag = 1 //car started policecar2swap_f1flag = 1 ENDIF TIMERA = 0 TIMERB = 0 rails_f1flag = 9 ELSE IF TIMERA > 5000 WARP_CHAR_INTO_CAR_AS_PASSENGER sweet sweet_car 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF rails_f1flag = 9 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD ryder IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD sweet IF TIMERA > 500 TIMERA = 0 rails_f1flag = 10 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF rails_f1flag = 10 IF NOT IS_CAR_DEAD sweet_car IF TIMERB > 2800 START_PLAYBACK_RECORDED_CAR sweet_car 332 IF NOT IS_CAR_DEAD extpoliceheli_f1 CREATE_SEARCHLIGHT_ON_VEHICLE extpoliceheli_f1 0.0 1.0 -0.5 2193.73 -1166.85 34.06 3.0 0.5 helispotlight_f1 POINT_SEARCHLIGHT_AT_CHAR helispotlight_f1 scplayer 0.8 ENDIF TIMERB = 0 rails_f1flag = 11 ENDIF ENDIF ENDIF IF rails_f1flag = 11 IF NOT IS_CAR_DEAD sweet_car IF TIMERB > 3500 SET_FIXED_CAMERA_POSITION 2178.9871 -1140.6434 25.9020 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2178.9512 -1141.6425 25.8765 JUMP_CUT textrails_f1flag = 1 progressaudio_f1flag = 0 handlingaudio_f1flag = 0 TIMERB = 0 rails_f1flag = 12 ENDIF ENDIF ENDIF IF rails_f1flag = 12 IF NOT IS_CAR_DEAD sweet_car IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2178.9871 -1140.6434 1.3 1.3 FALSE OR TIMERB > 2250 //2500 WARP_CHAR_FROM_CAR_TO_COORD scplayer 2178.7998 -1161.1873 10.0 ATTACH_CHAR_TO_CAR scplayer sweet_car 0.0 -0.5 0.8 FACING_BACK 360.0 WEAPONTYPE_AK47 SET_HEADING_FOR_ATTACHED_PLAYER PLAYER1 90.0 180.0 RESTORE_CAMERA SET_CHAR_PROOFS scplayer FALSE TRUE TRUE FALSE FALSE SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON TIMERA = 0 TIMERB = 0 DELETE_CHAR sweet DELETE_CHAR big_smoke DELETE_CHAR ryder REMOVE_ANIMATION GANGS REMOVE_ANIMATION CAR_CHAT UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 UNLOAD_SPECIAL_CHARACTER 3 difficulty_f1flag++ IF NOT IS_CHAR_DEAD cop2_f1 IF difficulty_f1flag > 1 TASK_DRIVE_BY cop2_f1 -1 sweet_car 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 40 ELSE TASK_DRIVE_BY cop2_f1 -1 sweet_car 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 75 //60 ENDIF ENDIF IF NOT IS_CHAR_DEAD cop4_f1 TASK_DRIVE_BY cop4_f1 -1 sweet_car 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 60 ENDIF SET_CAR_HEALTH sweet_car 6000 //5000 GET_CAR_HEALTH sweet_car carhealth_f1 carhealth_f1 = carhealth_f1 / 60 DISPLAY_ONSCREEN_COUNTER_WITH_STRING carhealth_f1 COUNTER_DISPLAY_BAR LAF1_38 SET_PLAYER_DUCK_BUTTON PLAYER1 FALSE //SET_PLAYER_FAST_RELOAD PLAYER1 TRUE PRINT_HELP LAF1_50 // To look around the car use the camera movement controls. To fire press ~m~~widget_attack~. SET_CAR_PROOFS sweet_car FALSE TRUE TRUE TRUE TRUE SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE helpshoottext_f1flag = 1 chasetext_f1flag = 1 motelchase_f1flag = 1 copcars_f1flag = 1 rails_f1flag = 13 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////// Chase begins //////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF motelchase_f1flag > 0 IF helisetpiece_f1flag < 5 IF NOT IS_CAR_DEAD sweet_car GET_CAR_HEALTH sweet_car carhealth_f1 carhealth_f1 = carhealth_f1 - 1000 IF carhealth_f1 <= 0 carhealth_f1 = 0 SET_CAR_PROOFS sweet_car FALSE FALSE FALSE FALSE FALSE SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE EXPLODE_CAR sweet_car PRINT_NOW LAF1_4 5000 1 //~r~You wrecked the car! GOTO mission_drugs4_failed ELSE carhealth_f1 = carhealth_f1 / 50 ENDIF ENDIF ENDIF ENDIF IF motelchase_f1flag = 1 //help text IF helpshoottext_f1flag = 1 IF IS_HELP_MESSAGE_BEING_DISPLAYED helpshoottext_f1flag = 2 ENDIF ENDIF IF helpshoottext_f1flag = 2 IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED helpshoottext_f1flag = 3 ENDIF ENDIF //car going into train IF rails_f1flag = 13 IF NOT IS_CAR_DEAD sweet_car IF LOCATE_CAR_2D sweet_car 2261.95 -1142.2 5.0 5.0 FALSE //5.5 5.5 IF NOT IS_CAR_DEAD train_f1 SET_TRAIN_SPEED train_f1 10.0 SET_TRAIN_CRUISE_SPEED train_f1 10.0 rails_f1flag = 14 ENDIF ENDIF ENDIF ENDIF IF rails_f1flag = 14 IF NOT IS_CAR_DEAD policecar3_f1 IF LOCATE_CAR_2D policecar3_f1 2284.98 -1146.61 3.0 3.0 FALSE TIMERB = 0 actiontext_f1flag = 1 SET_CAR_HEALTH policecar3_f1 750 rails_f1flag = 15 ENDIF ENDIF ENDIF IF rails_f1flag = 15 IF NOT IS_CAR_DEAD policecar3_f1 IF TIMERB > 1100 EXPLODE_CAR policecar3_f1 rails_f1flag = 16 ENDIF ENDIF ENDIF //car starts that goes into train IF copcars_f1flag = 1 IF NOT IS_CAR_DEAD sweet_car IF LOCATE_CAR_2D sweet_car 2223.11 -1150.118 20.0 20.0 FALSE IF NOT IS_CAR_DEAD policecar3_f1 START_PLAYBACK_RECORDED_CAR policecar3_f1 335 ADD_BLIP_FOR_CAR policecar3_f1 policecar3_f1blip CHANGE_BLIP_DISPLAY policecar3_f1blip BLIP_ONLY policecar3swap_f1flag = 1 policecar3_f1flag = 1 //car started IF NOT IS_CHAR_DEAD cop6_f1 TASK_DRIVE_BY cop6_f1 -1 sweet_car 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 40 ENDIF ENDIF copcars_f1flag = 2 ENDIF ENDIF ENDIF //waiting for the player outside the garage IF copcars_f1flag = 2 IF NOT IS_CAR_DEAD sweet_car IF LOCATE_CAR_2D sweet_car 2352.54 -1271.86 10.1 10.1 FALSE IF NOT IS_CAR_DEAD policecar4_f1 START_PLAYBACK_RECORDED_CAR policecar4_f1 336 ADD_BLIP_FOR_CAR policecar4_f1 policecar4_f1blip CHANGE_BLIP_DISPLAY policecar4_f1blip BLIP_ONLY policecar4_f1flag = 1 //car started policecar4swap_f1flag = 1 IF NOT IS_CHAR_DEAD cop8_f1 TASK_DRIVE_BY cop8_f1 -1 sweet_car 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 75 ENDIF DELETE_MISSION_TRAIN train_f1 DELETE_MISSION_TRAINS MARK_MODEL_AS_NO_LONGER_NEEDED STREAK CREATE_CAR COPCARLA 2500.697 -1443.776 28.28 policecar5_f1 //comes in front of the player smacks into players bumper SET_PETROL_TANK_WEAKPOINT policecar5_f1 FALSE SET_CAR_HEADING policecar5_f1 90.4588 SET_CAR_ONLY_DAMAGED_BY_PLAYER policecar5_f1 TRUE SET_CAR_HEALTH policecar5_f1 750 CREATE_CHAR_INSIDE_CAR policecar5_f1 PEDTYPE_MISSION1 LAPD1 cop9_f1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop9_f1 TRUE SET_CHAR_DECISION_MAKER cop9_f1 motel_DM SET_CHAR_SUFFERS_CRITICAL_HITS cop9_f1 FALSE SET_CHAR_HEALTH cop9_f1 200 CREATE_CHAR_AS_PASSENGER policecar5_f1 PEDTYPE_MISSION1 LAPD1 0 cop10_f1 SET_CHAR_DECISION_MAKER cop10_f1 motel_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop10_f1 TRUE SET_CHAR_HEALTH cop10_f1 100 GIVE_WEAPON_TO_CHAR cop10_f1 WEAPONTYPE_MP5 9999 SET_CHAR_SUFFERS_CRITICAL_HITS cop10_f1 FALSE CAR_SET_IDLE policecar5_f1 CREATE_CAR COPCARLA 2478.223 -1321.966 28.252 policecar7_f1 //comes out of side SET_CAR_HEADING policecar7_f1 356.585 SET_CAR_ONLY_DAMAGED_BY_PLAYER policecar7_f1 TRUE SET_CAR_HEALTH policecar7_f1 280 CAR_SET_IDLE policecar7_f1 CREATE_CHAR_INSIDE_CAR policecar7_f1 PEDTYPE_MISSION1 LAPD1 cop11_f1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop11_f1 TRUE SET_CHAR_DECISION_MAKER cop11_f1 motel_DM //SET_CHAR_SUFFERS_CRITICAL_HITS cop11_f1 FALSE CREATE_CHAR_AS_PASSENGER policecar7_f1 PEDTYPE_MISSION1 LAPD1 0 cop12_f1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop12_f1 TRUE SET_CHAR_DECISION_MAKER cop12_f1 motel_dm SET_CHAR_SUFFERS_CRITICAL_HITS cop12_f1 FALSE GIVE_WEAPON_TO_CHAR cop12_f1 WEAPONTYPE_MP5 9999 CAR_SET_IDLE policecar7_f1 ENDIF copcars_f1flag = 3 ENDIF ENDIF ENDIF //infront of player IF copcars_f1flag = 3 IF NOT IS_CAR_DEAD sweet_car IF LOCATE_CAR_2D sweet_car 2394.67 -1442.43 10.1 10.1 FALSE IF NOT IS_CAR_DEAD policecar5_f1 policecar5_f1flag = 1 //car started policecar5swap_f1flag = 1 START_PLAYBACK_RECORDED_CAR policecar5_f1 337 ADD_BLIP_FOR_CAR policecar5_f1 policecar5_f1blip CHANGE_BLIP_DISPLAY policecar5_f1blip BLIP_ONLY SWITCH_CAR_SIREN policecar5_f1 ON IF NOT IS_CHAR_DEAD cop10_f1 IF difficulty_f1flag > 1 TASK_DRIVE_BY cop10_f1 -1 sweet_car 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 30 ELSE TASK_DRIVE_BY cop10_f1 -1 sweet_car 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 75 ENDIF ENDIF DELETE_ALL_TRAINS CREATE_CAR COPCARLA 2447.036 -1370.772 22.64 policecar6_f1 //stationary SET_CAR_HEADING policecar6_f1 270.267 CAR_SET_IDLE policecar6_f1 SET_CAR_HEALTH policecar6_f1 250 SET_CAR_ONLY_DAMAGED_BY_PLAYER policecar6_f1 TRUE ADD_BLIP_FOR_CAR policecar6_f1 policecar6_f1blip CHANGE_BLIP_DISPLAY policecar6_f1blip BLIP_ONLY CREATE_CHAR PEDTYPE_MISSION1 LAPD1 2448.77 -1368.898 23.60 cop13_f1 SET_CHAR_DECISION_MAKER cop13_f1 motel_DM GIVE_WEAPON_TO_CHAR cop13_f1 WEAPONTYPE_MP5 999 enemy_f1 = cop13_f1 enemytarget_f1 = scplayer GOSUB stayshootnoduck_f1label CREATE_CHAR PEDTYPE_MISSION1 LAPD1 2444.387 -1369.356 24.02 cop14_f1 SET_CHAR_DECISION_MAKER cop14_f1 motel_DM GIVE_WEAPON_TO_CHAR cop14_f1 WEAPONTYPE_MP5 999 enemy_f1 = cop14_f1 enemytarget_f1 = scplayer GOSUB stayshootnoduck_f1label policecar6_f1flag = 1 //car started ENDIF copcars_f1flag = 4 ENDIF ENDIF ENDIF //suprise car out of alley IF copcars_f1flag = 4 IF NOT IS_CAR_DEAD sweet_car IF LOCATE_CAR_2D sweet_car 2448.94 -1311.15 30.1 30.1 FALSE IF NOT IS_CAR_DEAD policecar7_f1 START_PLAYBACK_RECORDED_CAR policecar7_f1 338 SWITCH_CAR_SIREN policecar7_f1 ON policecar7_f1flag = 1// car started policecar7swap_f1flag = 1 IF NOT IS_CHAR_DEAD cop11_f1 TASK_DRIVE_BY cop11_f1 -1 sweet_car 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 60 ENDIF ADD_BLIP_FOR_CAR policecar7_f1 policecar7_f1blip CHANGE_BLIP_DISPLAY policecar7_f1blip BLIP_ONLY ENDIF copcars_f1flag = 5 ENDIF ENDIF ENDIF ////////////////////////////////////////////if cars are dead mark as no longer needed //swap seat IF policecar1swap_f1flag = 1 IF NOT IS_CAR_DEAD policecar1_f1 IF NOT IS_CHAR_DEAD cop1_f1 ELSE IF NOT IS_CHAR_DEAD cop2_f1 IF IS_CHAR_IN_CAR cop2_f1 policecar1_f1 GET_DRIVER_OF_CAR policecar1_f1 driverofcar_f1 IF driverofcar_f1 = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT cop2_f1 policecar1_f1 policecar1swap_f1flag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar1_f1 policecar1swap_f1flag = 2 ENDIF ENDIF ENDIF ENDIF IF policecar1swap_f1flag = 2 IF IS_CHAR_DEAD cop2_f1 STOP_PLAYBACK_RECORDED_CAR policecar1_f1 policecar1swap_f1flag = 3 ENDIF ENDIF IF policecar1_f1flag = 1 IF NOT IS_CAR_DEAD policecar1_f1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR policecar1_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar1_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop1_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop2_f1 REMOVE_BLIP policecar1_f1blip policecar1_f1flag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar1_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop1_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop2_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar1_f1 REMOVE_BLIP policecar1_f1blip policecar1_f1flag = 2 ENDIF ENDIF //swap seat IF policecar2swap_f1flag = 1 IF NOT IS_CAR_DEAD policecar2_f1 IF NOT IS_CHAR_DEAD cop3_f1 ELSE IF NOT IS_CHAR_DEAD cop4_f1 IF IS_CHAR_IN_CAR cop4_f1 policecar2_f1 GET_DRIVER_OF_CAR policecar2_f1 driverofcar_f1 IF driverofcar_f1 = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT cop4_f1 policecar2_f1 policecar2swap_f1flag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar2_f1 policecar2swap_f1flag = 2 ENDIF ENDIF ENDIF ENDIF IF policecar2swap_f1flag = 2 IF IS_CHAR_DEAD cop4_f1 STOP_PLAYBACK_RECORDED_CAR policecar2_f1 policecar2swap_f1flag = 3 ENDIF ENDIF IF policecar2_f1flag = 1 IF NOT IS_CAR_DEAD policecar2_f1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR policecar2_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar2_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop3_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop4_f1 REMOVE_BLIP policecar2_f1blip policecar2_f1flag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar2_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop3_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop4_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar2_f1 REMOVE_BLIP policecar2_f1blip policecar2_f1flag = 2 ENDIF ENDIF IF policecar3_f1flag = 1 IF NOT IS_CAR_DEAD policecar3_f1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR policecar3_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar3_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop5_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop6_f1 REMOVE_BLIP policecar3_f1blip MARK_CAR_AS_NO_LONGER_NEEDED train_f1 MARK_MODEL_AS_NO_LONGER_NEEDED STREAK policecar3_f1flag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar3_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop5_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop6_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar3_f1 MARK_CAR_AS_NO_LONGER_NEEDED train_f1 MARK_MODEL_AS_NO_LONGER_NEEDED STREAK REMOVE_BLIP policecar3_f1blip policecar3_f1flag = 2 ENDIF ENDIF //swap seat IF policecar4swap_f1flag = 1 IF NOT IS_CAR_DEAD policecar4_f1 IF NOT IS_CHAR_DEAD cop7_f1 ELSE IF NOT IS_CHAR_DEAD cop8_f1 IF IS_CHAR_IN_CAR cop8_f1 policecar4_f1 GET_DRIVER_OF_CAR policecar4_f1 driverofcar_f1 IF driverofcar_f1 = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT cop8_f1 policecar4_f1 policecar4swap_f1flag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar4_f1 policecar4swap_f1flag = 2 ENDIF ENDIF ENDIF ENDIF IF policecar4swap_f1flag = 2 IF IS_CHAR_DEAD cop8_f1 STOP_PLAYBACK_RECORDED_CAR policecar4_f1 policecar4swap_f1flag = 3 ENDIF ENDIF IF policecar4_f1flag = 1 IF NOT IS_CAR_DEAD policecar4_f1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR policecar4_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar4_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop7_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop8_f1 REMOVE_BLIP policecar4_f1blip policecar4_f1flag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar4_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop7_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop8_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar4_f1 REMOVE_BLIP policecar4_f1blip policecar4_f1flag = 2 ENDIF ENDIF //swap seat IF policecar5swap_f1flag = 1 IF NOT IS_CAR_DEAD policecar5_f1 IF NOT IS_CHAR_DEAD cop9_f1 ELSE IF NOT IS_CHAR_DEAD cop10_f1 IF IS_CHAR_IN_CAR cop10_f1 policecar5_f1 GET_DRIVER_OF_CAR policecar5_f1 driverofcar_f1 IF driverofcar_f1 = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT cop10_f1 policecar5_f1 policecar5swap_f1flag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar5_f1 policecar5swap_f1flag = 2 ENDIF ENDIF ENDIF ENDIF IF policecar5swap_f1flag = 2 IF IS_CHAR_DEAD cop10_f1 STOP_PLAYBACK_RECORDED_CAR policecar5_f1 policecar5swap_f1flag = 3 ENDIF ENDIF IF policecar5_f1flag = 1 IF NOT IS_CAR_DEAD policecar5_f1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR policecar5_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar5_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop9_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop10_f1 REMOVE_BLIP policecar5_f1blip policecar5_f1flag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar5_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop9_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop10_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar5_f1 REMOVE_BLIP policecar5_f1blip policecar5_f1flag = 2 ENDIF ENDIF IF policecar6_f1flag = 1 IF IS_CAR_DEAD policecar6_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop13_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop14_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar6_f1 REMOVE_BLIP policecar6_f1blip policecar6_f1flag = 2 ENDIF ENDIF IF policecar7swap_f1flag = 1 IF NOT IS_CAR_DEAD policecar7_f1 IF NOT IS_CHAR_DEAD cop11_f1 ELSE IF NOT IS_CHAR_DEAD cop12_f1 IF IS_CHAR_IN_CAR cop12_f1 policecar7_f1 GET_DRIVER_OF_CAR policecar7_f1 driverofcar_f1 IF driverofcar_f1 = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT cop12_f1 policecar7_f1 policecar7swap_f1flag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar7_f1 policecar7swap_f1flag = 2 ENDIF ENDIF ENDIF ENDIF IF policecar7swap_f1flag = 2 IF IS_CHAR_DEAD cop12_f1 STOP_PLAYBACK_RECORDED_CAR policecar7_f1 policecar7swap_f1flag = 3 ENDIF ENDIF IF policecar7_f1flag = 1 IF NOT IS_CAR_DEAD policecar7_f1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR policecar7_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar7_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop11_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop12_f1 REMOVE_BLIP policecar7_f1blip policecar7_f1flag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar7_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop11_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop12_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar7_f1 REMOVE_BLIP policecar7_f1blip policecar7_f1flag = 2 ENDIF ENDIF IF extpoliceheli_f1flag = 0 IF IS_CAR_DEAD extpoliceheli_f1 MARK_CAR_AS_NO_LONGER_NEEDED extpoliceheli_f1 MARK_CHAR_AS_NO_LONGER_NEEDED exthelidriver_f1 DELETE_SEARCHLIGHT helispotlight_f1 extpoliceheli_f1flag = 1 ENDIF ENDIF //motor bike cut scene IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2555.85 -1257.43.18 5.0 5.0 FALSE textrails_f1flag = 2 DO_FADE 100 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL PLAYER1 OFF IF NOT IS_CAR_DEAD sweet_car SET_CAR_PROOFS sweet_car TRUE TRUE TRUE TRUE TRUE ENDIF motelchase_f1flag = 2 ENDIF ENDIF //dialogue IF textrails_f1flag = 1 //dialogue GOSUB process_audio_f1 IF progressaudio_f1flag = 0 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_KF //Eh man, I’m running low. $input_text_f1 = FIN1_KF //Eh man, I’m running low. GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 1 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_KG //I got a ‘K here! $input_text_f1 = FIN1_KG //I got a ‘K here! GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 2 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_KH //This is a fucking antique! $input_text_f1 = FIN1_KH //This is a fucking antique! GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 3 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_KI //Yeah, well… Emmet ain’t the Pentagon! $input_text_f1 = FIN1_KI //Yeah, well… Emmet ain’t the Pentagon! GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 4 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_KJ //You got it off Emmet? Shit… $input_text_f1 = FIN1_KJ //You got it off Emmet? Shit… GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 5 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_ZC //CJ, cover the rear! $input_text_f1 = FIN1_ZC //CJ, cover the rear! GOSUB load_audio_f1 ENDIF ENDIF //car hit by train IF progressaudio_f1flag = 6 IF handlingaudio_f1flag = 0 IF actiontext_f1flag = 1 audio_label_f1 = SOUND_FIN1_KM //Man, they’s got smoked! Did you see that? $input_text_f1 = FIN1_KM //Man, they’s got smoked! Did you see that? GOSUB load_audio_f1 ENDIF ENDIF ENDIF IF progressaudio_f1flag = 7 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_KL //Damn! That was close! $input_text_f1 = FIN1_KL //Damn! That was close! GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 8 IF handlingaudio_f1flag = 0 IF DOES_SEARCHLIGHT_EXIST helispotlight_f1 SET_SEARCHLIGHT_CLIP_IF_COLLIDING helispotlight_f1 TRUE ENDIF audio_label_f1 = SOUND_FIN1_KO //Man, it’s getting intense! It’s getting worse out here! $input_text_f1 = FIN1_KO //Man, it’s getting intense! It’s getting worse out here! GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 9 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_KP //It’s like World War VIII! $input_text_f1 = FIN1_KP //It’s like World War VIII! GOSUB load_audio_f1 ENDIF ENDIF //out of the garage IF actiontext_f1flag = 1 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2372.35 -1283.33 15.0 15.0 FALSE actiontext_f1flag = 2 ENDIF ENDIF IF progressaudio_f1flag = 10 IF actiontext_f1flag = 2 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_KS //Hey, CJ, watch to the left! $input_text_f1 = FIN1_KS //Hey, CJ, watch to the left! GOSUB load_audio_f1 ENDIF ENDIF ENDIF IF progressaudio_f1flag = 11 IF handlingaudio_f1flag = 0 IF DOES_SEARCHLIGHT_EXIST helispotlight_f1 SET_SEARCHLIGHT_CLIP_IF_COLLIDING helispotlight_f1 FALSE ENDIF audio_label_f1 = SOUND_FIN1_KT //Your left or my left? $input_text_f1 = FIN1_KT //Your left or my left? GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 12 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_KU //Hell, I don’t know, just shoot everybody, motherfucker! $input_text_f1 = FIN1_KU //Hell, I don’t know, just shoot everybody, motherfucker! GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 13 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_CB //Four bangers in blue 4door heading back into South Central. $input_text_f1 = FIN1_CB //Four bangers in blue 4door heading back into South Central. GOSUB load_audio_f1 ENDIF ENDIF //car in front IF actiontext_f1flag = 2 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2424.42 -1446.57 15.0 15.0 FALSE actiontext_f1flag = 3 ENDIF ENDIF IF progressaudio_f1flag = 14 IF actiontext_f1flag = 3 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_LD //Trouble up ahead! $input_text_f1 = FIN1_LD //Trouble up ahead! GOSUB load_audio_f1 ENDIF ENDIF ENDIF //car behind and to the right side IF actiontext_f1flag = 3 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2453.78 -1333.3 10.0 10.0 FALSE actiontext_f1flag = 4 ENDIF ENDIF IF progressaudio_f1flag = 15 IF actiontext_f1flag = 3 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_ZD //Carl, they all over our ass, baby! $input_text_f1 = FIN1_ZD //Carl, they all over our ass, baby! GOSUB load_audio_f1 ENDIF ENDIF ENDIF IF actiontext_f1flag = 4 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2454.1 -1313.02 10.0 10.0 FALSE actiontext_f1flag = 5 ENDIF ENDIF IF progressaudio_f1flag = 16 IF handlingaudio_f1flag = 0 IF actiontext_f1flag = 5 audio_label_f1 = SOUND_FIN1_KX //CJ, watch our right! $input_text_f1 = FIN1_KX //CJ, watch our right! GOSUB load_audio_f1 ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////// Chase begins //////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF motelchase_f1flag = 2 SET_PLAYER_CONTROL PLAYER1 OFF IF NOT IS_CAR_DEAD sweet_car SET_CAR_PROOFS sweet_car TRUE TRUE TRUE TRUE TRUE ENDIF SWITCH_WIDESCREEN ON SET_NEAR_CLIP 0.1 //remove all cars and peds STOP_PLAYBACK_RECORDED_CAR policecar1_f1 DELETE_CAR policecar1_f1 REMOVE_BLIP policecar1_f1blip STOP_PLAYBACK_RECORDED_CAR policecar2_f1 DELETE_CAR policecar2_f1 REMOVE_BLIP policecar2_f1blip STOP_PLAYBACK_RECORDED_CAR policecar3_f1 DELETE_CAR policecar3_f1 REMOVE_BLIP policecar3_f1blip STOP_PLAYBACK_RECORDED_CAR policecar4_f1 DELETE_CAR policecar4_f1 REMOVE_BLIP policecar4_f1blip STOP_PLAYBACK_RECORDED_CAR policecar5_f1 DELETE_CAR policecar5_f1 REMOVE_BLIP policecar5_f1blip DELETE_CAR policecar6_f1 REMOVE_BLIP policecar6_f1blip STOP_PLAYBACK_RECORDED_CAR policecar7_f1 DELETE_CAR policecar7_f1 REMOVE_BLIP policecar7_f1blip DELETE_CHAR cop1_f1 DELETE_CHAR cop2_f1 DELETE_CHAR cop3_f1 DELETE_CHAR cop4_f1 DELETE_CHAR cop5_f1 DELETE_CHAR cop6_f1 DELETE_CHAR cop7_f1 DELETE_CHAR cop8_f1 DELETE_CHAR cop9_f1 DELETE_CHAR cop10_f1 DELETE_CHAR cop11_f1 DELETE_CHAR cop12_f1 DELETE_CHAR cop13_f1 DELETE_CHAR cop14_f1 //reset flags that I am going to use again copcars_f1flag = 0 policecar1_f1flag = 0 policecar2_f1flag = 0 policecar3_f1flag = 0 policecar4_f1flag = 0 policecar5_f1flag = 0 policecar6_f1flag = 0 policecar7_f1flag = 0 policecar8_f1flag = 0 policecar1swap_f1flag = 0 policecar2swap_f1flag = 0 policecar3swap_f1flag = 0 policecar4swap_f1flag = 0 policecar5swap_f1flag = 0 policecar6swap_f1flag = 0 policecar7swap_f1flag = 0 policecar8swap_f1flag = 0 REQUEST_CAR_RECORDING 331 REQUEST_MODEL DYN_SCAFFOLD_4b REQUEST_CAR_RECORDING 339 REQUEST_ANIMATION MD_CHASE REQUEST_CAR_RECORDING 373 REQUEST_CAR_RECORDING 374 REQUEST_CAR_RECORDING 375 REQUEST_CAR_RECORDING 376 REQUEST_CAR_RECORDING 377 REQUEST_CAR_RECORDING 371 REQUEST_CAR_RECORDING 372 REQUEST_CAR_RECORDING 378 REQUEST_CAR_RECORDING 380 REQUEST_CAR_RECORDING 381 REQUEST_MODEL munch_donut LOAD_SPECIAL_CHARACTER 2 SMOKE LOAD_SPECIAL_CHARACTER 3 RYDER2 REQUEST_MODEL chopcop_armr REQUEST_MODEL chopcop_legr REQUEST_MODEL chopcop_head REQUEST_MODEL chopcop_torso REQUEST_MODEL Wd_Fence_Anim REQUEST_MODEL LAPDM1 REQUEST_MODEL COPBIKE LOAD_MISSION_AUDIO 1 SOUND_FIN1_LE //Waste of good doughnuts. LOAD_MISSION_AUDIO 2 SOUND_FIN1_LF //Let’s roll REQUEST_MODEL md_poster LOAD_ALL_MODELS_NOW WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 331 //sweet car OR NOT HAS_MODEL_LOADED DYN_SCAFFOLD_4b OR NOT HAS_CAR_RECORDING_BEEN_LOADED 339 OR NOT HAS_ANIMATION_LOADED MD_CHASE OR NOT HAS_MODEL_LOADED LAPDM1 OR NOT HAS_MODEL_LOADED COPBIKE WAIT 0 ENDWHILE WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 373 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 374 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 375 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 376 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 377 WAIT 0 ENDWHILE WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 371 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 372 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 378 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 380 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED munch_donut OR NOT HAS_CAR_RECORDING_BEEN_LOADED 381 OR NOT HAS_SPECIAL_CHARACTER_LOADED 2 OR NOT HAS_SPECIAL_CHARACTER_LOADED 3 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED chopcop_armr OR NOT HAS_MODEL_LOADED chopcop_legr OR NOT HAS_MODEL_LOADED chopcop_head OR NOT HAS_MODEL_LOADED Wd_Fence_Anim OR NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE CREATE_CAR COPBIKE 2571.39 -1248.083 45.2 copbike1_f1 //bike that goes off to the left goto 2604.02 -1256.38 48.84 SET_PETROL_TANK_WEAKPOINT copbike1_f1 FALSE SET_CAR_HEADING copbike1_f1 181.089 CREATE_CAR COPBIKE 2569.95 -1248.083 45.2 copbike2_f1 //bike that chases the player SET_PETROL_TANK_WEAKPOINT copbike2_f1 FALSE SET_CAR_HEADING copbike2_f1 181.089 CREATE_CAR COPBIKE 2586.339 -1351.697 35.174 copbike3_f1 //bike jumper SET_PETROL_TANK_WEAKPOINT copbike3_f1 FALSE SET_CAR_HEADING copbike3_f1 87.221 FORCE_CAR_LIGHTS copbike3_f1 FORCE_CAR_LIGHTS_ON FORCE_CAR_LIGHTS copbike1_f1 FORCE_CAR_LIGHTS_OFF FORCE_CAR_LIGHTS copbike2_f1 FORCE_CAR_LIGHTS_OFF CREATE_CHAR_INSIDE_CAR copbike1_f1 PEDTYPE_MISSION1 LAPDM1 biker1_f1 SET_CHAR_DECISION_MAKER biker1_f1 motel_DM CREATE_CHAR_INSIDE_CAR copbike2_f1 PEDTYPE_MISSION1 LAPDM1 biker2_f1 SET_CHAR_DECISION_MAKER biker2_f1 motel_DM CREATE_CAR COPCARLA 2505.736 -1256.742 33.64 policecar1_f1 //police car that crashes into scaffolding SET_PETROL_TANK_WEAKPOINT policecar1_f1 FALSE SET_CAR_HEADING policecar1_f1 268.42 CREATE_CHAR_INSIDE_CAR policecar1_f1 PEDTYPE_MISSION1 LAPD1 cop1_f1 SET_CHAR_DECISION_MAKER cop1_f1 motel_DM SET_CHAR_SUFFERS_CRITICAL_HITS cop1_f1 FALSE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE cop1_f1 FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop1_f1 TRUE CREATE_OBJECT munch_donut 2570.59 -1247.66 44.88 donut_f1 //45.07 //47.4 SET_FIXED_CAMERA_POSITION 2570.6357 -1245.9398 45.3765 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2570.6248 -1246.9307 45.2422 JUMP_CUT DO_FADE 250 FADE_IN IF NOT IS_CAR_DEAD sweet_car IF IS_PLAYBACK_GOING_ON_FOR_CAR sweet_car STOP_PLAYBACK_RECORDED_CAR sweet_car CAR_SET_IDLE sweet_car FREEZE_CAR_POSITION sweet_car TRUE ELSE CAR_SET_IDLE sweet_car FREEZE_CAR_POSITION sweet_car TRUE ENDIF ENDIF CREATE_FX_SYSTEM carwashspray 2451.04 -1460.79 23.0 TRUE jetwashfx1_f1 IF NOT IS_CAR_DEAD sweet_car DETACH_CHAR_FROM_CAR scplayer SET_CHAR_COORDINATES scplayer 2585.74 -1264.16 46.2 CREATE_CHAR_INSIDE_CAR sweet_car PEDTYPE_SPECIAL SPECIAL02 big_smoke SET_CHAR_DECISION_MAKER big_smoke motel_DM CREATE_CHAR_AS_PASSENGER sweet_car PEDTYPE_SPECIAL SPECIAL03 0 ryder SET_CHAR_DECISION_MAKER ryder motel_DM ENDIF CREATE_CHAR PEDTYPE_MISSION1 LAPDM1 0.0 0.0 0.0 bikerjumper3_f1 SET_CHAR_DECISION_MAKER bikerjumper3_f1 motel_DM SET_CHAR_SUFFERS_CRITICAL_HITS bikerjumper3_f1 FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER bikerjumper3_f1 TRUE SET_CAR_PROOFS copbike3_f1 TRUE TRUE TRUE TRUE TRUE TASK_PLAY_ANIM_NON_INTERRUPTABLE bikerjumper3_f1 MD_BIKE_Jmp_F MD_CHASE 4.0 FALSE FALSE FALSE TRUE -1 ATTACH_CHAR_TO_CAR bikerjumper3_f1 copbike3_f1 0.0 -0.401 0.47 FACING_FORWARD 360.0 WEAPONTYPE_UNARMED SET_CHAR_HEALTH bikerjumper3_f1 1000 bikerjumper3_f1flag = 1 CREATE_OBJECT DYN_SCAFFOLD_4b 2563.232 -1322.392 40.3 sca1_f1 SET_OBJECT_HEADING sca1_f1 170.0 CREATE_OBJECT DYN_SCAFFOLD_4b 2563.232 -1322.392 42.5 sca2_f1 SET_OBJECT_HEADING sca2_f1 170.0 CREATE_OBJECT DYN_SCAFFOLD_4b 2563.232 -1322.392 44.7 sca3_f1 SET_OBJECT_HEADING sca3_f1 170.0 CREATE_OBJECT DYN_SCAFFOLD_4b 2565.882 -1322.392 40.3 sca4_f1 SET_OBJECT_HEADING sca4_f1 170.0 CREATE_OBJECT DYN_SCAFFOLD_4b 2565.882 -1322.392 42.5 sca5_f1 SET_OBJECT_HEADING sca5_f1 170.0 CREATE_OBJECT DYN_SCAFFOLD_4b 2565.882 -1322.392 44.7 sca6_f1 SET_OBJECT_HEADING sca6_f1 170.0 sca_f1flag = 1 CREATE_CAR COPCARLA 2520.49 -1485.04 22.84 policecar2_f1 //first chaser through car wash SET_PETROL_TANK_WEAKPOINT policecar2_f1 FALSE SET_CAR_HEADING policecar2_f1 1.33 SET_CAR_HEALTH policecar2_f1 750 SET_CAR_ONLY_DAMAGED_BY_PLAYER policecar2_f1 TRUE CREATE_CHAR_INSIDE_CAR policecar2_f1 PEDTYPE_MISSION1 LAPD1 cop2_f1 SET_CHAR_DECISION_MAKER cop2_f1 motel_DM // SET_CHAR_SUFFERS_CRITICAL_HITS cop2_f1 FALSE SET_CHAR_HEALTH cop2_f1 100 SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop2_f1 TRUE CREATE_CHAR_AS_PASSENGER policecar2_f1 PEDTYPE_MISSION1 LAPD1 0 cop3_f1 SET_CHAR_DECISION_MAKER cop3_f1 motel_dm SET_CHAR_HEALTH cop3_f1 100 SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop3_f1 TRUE GIVE_WEAPON_TO_CHAR cop3_f1 WEAPONTYPE_MP5 9999 SET_CHAR_SUFFERS_CRITICAL_HITS cop3_f1 FALSE CAR_SET_IDLE policecar2_f1 CREATE_CAR COPCARLA 2532.98 -1502.372 23.67 policecar3_f1 //2nd chaser thru car wash SET_PETROL_TANK_WEAKPOINT policecar3_f1 FALSE SET_CAR_HEADING policecar3_f1 266.9 SET_CAR_HEALTH policecar3_f1 600 //800 SET_CAR_ONLY_DAMAGED_BY_PLAYER policecar3_f1 TRUE CREATE_CHAR_INSIDE_CAR policecar3_f1 PEDTYPE_MISSION1 LAPD1 cop4_f1 SET_CHAR_DECISION_MAKER cop4_f1 motel_DM SET_CHAR_SUFFERS_CRITICAL_HITS cop4_f1 FALSE SET_CHAR_HEALTH cop4_f1 100 SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop4_f1 TRUE CREATE_CHAR_AS_PASSENGER policecar3_f1 PEDTYPE_MISSION1 LAPD1 0 cop5_f1 SET_CHAR_DECISION_MAKER cop5_f1 motel_dm SET_CHAR_HEALTH cop5_f1 100 SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop5_f1 TRUE GIVE_WEAPON_TO_CHAR cop5_f1 WEAPONTYPE_MP5 9999 SET_CHAR_SUFFERS_CRITICAL_HITS cop5_f1 FALSE CAR_SET_IDLE policecar3_f1 CREATE_CAR COPCARLA 2510.967 -1448.138 28.398 policecar8_f1 //chase that goes away after car wash SET_PETROL_TANK_WEAKPOINT policecar8_f1 FALSE SET_CAR_HEADING policecar8_f1 72.49 SET_CAR_HEALTH policecar8_f1 325 SET_CAR_ONLY_DAMAGED_BY_PLAYER policecar8_f1 TRUE CREATE_CHAR_INSIDE_CAR policecar8_f1 PEDTYPE_MISSION1 LAPD1 cop7_f1 SET_CHAR_DECISION_MAKER cop7_f1 motel_DM SET_CHAR_SUFFERS_CRITICAL_HITS cop7_f1 FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop7_f1 TRUE CREATE_CHAR_AS_PASSENGER policecar8_f1 PEDTYPE_MISSION1 LAPD1 0 cop8_f1 SET_CHAR_DECISION_MAKER cop8_f1 motel_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop8_f1 TRUE GIVE_WEAPON_TO_CHAR cop8_f1 WEAPONTYPE_MP5 9999 SET_CHAR_SUFFERS_CRITICAL_HITS cop8_f1 FALSE CAR_SET_IDLE policecar8_f1 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CAR_DEAD policecar1_f1 IF NOT IS_CAR_DEAD copbike2_f1 IF NOT IS_CAR_DEAD copbike3_f1 FREEZE_CAR_POSITION sweet_car FALSE START_PLAYBACK_RECORDED_CAR sweet_car 331 START_PLAYBACK_RECORDED_CAR policecar1_f1 339 START_PLAYBACK_RECORDED_CAR copbike2_f1 371 START_PLAYBACK_RECORDED_CAR copbike3_f1 372 SWITCH_CAR_SIREN copbike3_f1 ON bikerjumper3_f1flag = 2 ADD_BLIP_FOR_CAR policecar1_f1 policecar1_f1blip CHANGE_BLIP_DISPLAY policecar1_f1blip BLIP_ONLY policecar1_f1flag = 1 SWITCH_CAR_SIREN policecar1_f1 ON TIMERA = 0 ENDIF ENDIF ENDIF ENDIF motelchase_f1flag = 3 ENDIF IF motelchase_f1flag = 3 IF TIMERA > 1100 //drop the donut IF DOES_OBJECT_EXIST donut_f1 PLAY_OBJECT_ANIM donut_f1 donutdrop MD_CHASE 4.0 FALSE TRUE ENDIF PLAY_MISSION_AUDIO 1 //Waste of good doughnuts. PRINT_NOW FIN1_LE 2250 1 //Waste of good doughnuts. motelchase_f1flag = 4 ENDIF ENDIF IF motelchase_f1flag = 4 IF TIMERA > 3800 IF NOT IS_CAR_DEAD copbike1_f1 //script bike moves PLAY_MISSION_AUDIO 2 PRINT_NOW FIN1_LF 2000 1//Let’s roll CAR_GOTO_COORDINATES copbike1_f1 2604.02 -1256.38 48.84 SET_CAR_CRUISE_SPEED copbike1_f1 25.0 SET_CAR_DRIVING_STYLE copbike1_f1 DRIVINGMODE_AVOIDCARS IF NOT IS_CAR_DEAD copbike1_f1 FORCE_CAR_LIGHTS copbike1_f1 FORCE_CAR_LIGHTS_ON SWITCH_CAR_SIREN copbike1_f1 ON ENDIF IF NOT IS_CAR_DEAD copbike2_f1 FORCE_CAR_LIGHTS copbike2_f1 FORCE_CAR_LIGHTS_ON SWITCH_CAR_SIREN copbike2_f1 ON ENDIF motelchase_f1flag = 5 ENDIF ENDIF ENDIF IF motelchase_f1flag = 5 IF TIMERA > 4500 //switch to chase view SET_FIXED_CAMERA_POSITION 2569.7429 -1287.6459 46.8949 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2569.8252 -1286.6519 46.8238 JUMP_CUT SET_CHAR_HEADING scplayer 180.0 motelchase_f1flag = 6 ENDIF ENDIF IF motelchase_f1flag = 6 IF NOT IS_CAR_DEAD sweet_car IF LOCATE_CAR_2D sweet_car 2569.7429 -1287.6459 1.2 1.2 FALSE OR TIMERB > 50800//50500 //switch to chase view DELETE_CAR copbike1_f1 DELETE_CHAR biker1_f1 DELETE_OBJECT donut_f1 DELETE_CHAR big_smoke DELETE_CHAR ryder UNLOAD_SPECIAL_CHARACTER 2 UNLOAD_SPECIAL_CHARACTER 3 IF NOT IS_CAR_DEAD sweet_car//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ATTACH_CHAR_TO_CAR scplayer sweet_car 0.0 -0.5 0.8 FACING_BACK 360.0 WEAPONTYPE_AK47//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// SET_HEADING_FOR_ATTACHED_PLAYER PLAYER1 75.0 75.0 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ENDIF RESTORE_CAMERA////////////////////////////////////////////////////////////////////////////////////////////////////// SWITCH_WIDESCREEN OFF/////////////////////////////////////////////////////////////////////////////////////////////// SET_PLAYER_CONTROL PLAYER1 ON SET_CAR_PROOFS sweet_car FALSE TRUE TRUE TRUE TRUE SET_CHAR_PROOFS scplayer FALSE TRUE TRUE FALSE FALSE SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE IF NOT IS_CHAR_DEAD biker2_f1 SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE biker2_f1 KNOCKOFFBIKE_EASY ENDIF policecarexplode_f1flag = 3 actiontext_f1flag = 0 progressaudio_f1flag = 0 handlingaudio_f1flag = 0 copcars_f1flag = 1 motelchase_f1flag = 7 ENDIF ENDIF ENDIF //chase begins IF NOT IS_CAR_DEAD sweet_car IF motelchase_f1flag > 2 /////////////////////////////////////////////////// 1st Biker jumping /////////////////////////////////////////////////// 1st Biker jumping /////////////////////////////////////////////////// 1st Biker jumping /////////////////////////////////////////////////// 1st Biker jumping /////////////////////////////////////////////////// 1st Biker jumping IF bikerjumper3_f1flag = 2 IF NOT IS_CHAR_DEAD bikerjumper3_f1 IF IS_CHAR_PLAYING_ANIM bikerjumper3_f1 MD_BIKE_Jmp_F GET_CHAR_ANIM_CURRENT_TIME bikerjumper3_f1 MD_BIKE_Jmp_F animframebk_jmp IF animframebk_jmp > 0.0 SET_CHAR_ANIM_SPEED bikerjumper3_f1 MD_BIKE_Jmp_F 0.0 bikerjumper3_f1flag = 3 ENDIF ENDIF ENDIF ENDIF //bike jumps IF bikerjumper3_f1flag = 3 IF TIMERA > 12600 //12500 IF NOT IS_CHAR_DEAD bikerjumper3_f1 TASK_PLAY_ANIM_NON_INTERRUPTABLE bikerjumper3_f1 MD_BIKE_Jmp_F MD_CHASE 1000.0 FALSE FALSE FALSE TRUE -1 SET_CHAR_ANIM_SPEED bikerjumper3_f1 MD_BIKE_Jmp_F 1.0 actiontext_f1flag = 1 bikerjumper3_f1flag = 4 ENDIF ENDIF ENDIF //attach to the car IF bikerjumper3_f1flag = 4 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD bikerjumper3_f1 IF IS_CHAR_PLAYING_ANIM bikerjumper3_f1 MD_BIKE_Jmp_F GET_CHAR_ANIM_CURRENT_TIME bikerjumper3_f1 MD_BIKE_Jmp_F animframebk_jmp IF animframebk_jmp = 1.0 IF playdeathanim_f1flag = 1 TASK_PLAY_ANIM bikerjumper3_f1 MD_BIKE_Lnd_Die_F MD_CHASE 1000.0 FALSE FALSE FALSE TRUE -1 bikerjumper3_f1flag = 100 ELSE TASK_PLAY_ANIM_NON_INTERRUPTABLE bikerjumper3_f1 MD_BIKE_Lnd_F MD_CHASE 1000.0 FALSE FALSE FALSE TRUE -1 TIMERA = 0 bikerjumper3_f1flag = 5 ENDIF WAIT 0 IF NOT IS_CHAR_DEAD bikerjumper3_f1 IF NOT IS_CAR_DEAD sweet_car DETACH_CHAR_FROM_CAR bikerjumper3_f1 ATTACH_CHAR_TO_CAR bikerjumper3_f1 sweet_car 0.0 3.0 0.3 FACING_BACK 360.0 WEAPONTYPE_UNARMED ENDIF ENDIF IF NOT IS_CAR_DEAD copbike3_f1 STOP_PLAYBACK_RECORDED_CAR copbike3_f1 SET_CAR_ROTATION_VELOCITY copbike3_f1 -3.0 -2.0 0.2003 MARK_CAR_AS_NO_LONGER_NEEDED copbike3_f1 MARK_CAR_AS_NO_LONGER_NEEDED copbike2_f1 MARK_CHAR_AS_NO_LONGER_NEEDED biker2_f1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //punch player IF bikerjumper3_f1flag = 5 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD bikerjumper3_f1 IF IS_CHAR_PLAYING_ANIM bikerjumper3_f1 MD_BIKE_Lnd_F GET_CHAR_ANIM_CURRENT_TIME bikerjumper3_f1 MD_BIKE_Lnd_F animframebk_jmp IF animframebk_jmp = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE bikerjumper3_f1 MD_BIKE_Punch_F MD_CHASE 8.0 TRUE FALSE FALSE FALSE -1 bikerjumper3_f1flag = 6 ENDIF ENDIF ENDIF ENDIF ENDIF //set peds heading when on bike IF bikerjumper3_f1flag > 0 IF bikerjumper3_f1flag < 5 IF NOT IS_CAR_DEAD copbike3_f1 IF NOT IS_CHAR_DEAD bikerjumper3_f1 GET_CAR_HEADING copbike3_f1 bikerjumper3_f1heading SET_CHAR_HEADING bikerjumper3_f1 bikerjumper3_f1heading ENDIF ENDIF ENDIF ENDIF //set peds heading when on car IF bikerjumper3_f1flag > 4 IF bikerjumper3_f1flag < 101 IF NOT IS_CHAR_DEAD bikerjumper3_f1 GET_CAR_HEADING sweet_car bikerjumper3_f1heading SET_CHAR_HEADING bikerjumper3_f1 bikerjumper3_f1heading ENDIF ENDIF ENDIF //camera bump IF NOT IS_CHAR_DEAD bikerjumper3_f1 IF IS_CHAR_PLAYING_ANIM bikerjumper3_f1 MD_BIKE_Punch_F GET_CHAR_ANIM_CURRENT_TIME bikerjumper3_f1 MD_BIKE_Punch_F animframebk_punch IF animframebk_punch > 0.2 IF bikerjumper3_f1flag = 6 DO_CAMERA_BUMP -2.2 1.7 DAMAGE_CHAR scplayer 10 TRUE bikerjumper3_f1flag = 7 ENDIF ELSE bikerjumper3_f1flag = 6 ENDIF ENDIF ENDIF //if is char dead IF NOT IS_CHAR_DEAD bikerjumper3_f1 GET_CHAR_HEALTH bikerjumper3_f1 bikerjumper3_f1health IF bikerjumper3_f1health < 901 SET_CHAR_PROOFS bikerjumper3_f1 TRUE TRUE TRUE TRUE TRUE playdeathanim_f1flag = 1 ENDIF ENDIF //before he lands IF bikerjumper3_f1flag = 100 IF IS_CHAR_PLAYING_ANIM bikerjumper3_f1 MD_BIKE_Lnd_Die_F GET_CHAR_ANIM_CURRENT_TIME bikerjumper3_f1 MD_BIKE_Lnd_Die_F animframebk_jmp IF animframebk_jmp = 1.0 DETACH_CHAR_FROM_CAR bikerjumper3_f1 GET_CAR_COORDINATES sweet_car player_x player_y player_z player_x = player_x + 1.433 player_y = player_y + 1.763 player_z = player_z + 0.0 SET_CHAR_COORDINATES bikerjumper3_f1 player_x player_y player_z TASK_PLAY_ANIM_NON_INTERRUPTABLE bikerjumper3_f1 MD_BIKE_Lnd_Roll_F MD_CHASE 1000.0 FALSE FALSE FALSE TRUE -1 bikerjumper3_f1flag = 101 ENDIF ENDIF ENDIF IF bikerjumper3_f1flag = 101 IF IS_CHAR_PLAYING_ANIM bikerjumper3_f1 MD_BIKE_Lnd_Roll_F GET_CHAR_ANIM_CURRENT_TIME bikerjumper3_f1 MD_BIKE_Lnd_Roll_F animframebk_jmp IF animframebk_jmp = 1.0 REMOVE_CHAR_ELEGANTLY bikerjumper3_f1 bikerjumper3_f1flag = 102 ENDIF ENDIF ENDIF //after he lands, char killed IF bikerjumper3_f1flag > 4 IF bikerjumper3_f1flag < 8 IF playdeathanim_f1flag = 1 OR TIMERA > 15000 bikerjumper3_f1flag = 200 ENDIF ENDIF ENDIF IF bikerjumper3_f1flag = 200 IF NOT IS_CHAR_DEAD bikerjumper3_f1 TASK_PLAY_ANIM_NON_INTERRUPTABLE bikerjumper3_f1 MD_BIKE_Shot_F MD_CHASE 1000.0 FALSE FALSE FALSE TRUE -1 bikerjumper3_f1flag = 201 ENDIF ENDIF IF bikerjumper3_f1flag = 201 IF IS_CHAR_PLAYING_ANIM bikerjumper3_f1 MD_BIKE_Shot_F GET_CHAR_ANIM_CURRENT_TIME bikerjumper3_f1 MD_BIKE_Shot_F animframebk_jmp IF animframebk_jmp = 1.0 DETACH_CHAR_FROM_CAR bikerjumper3_f1 GET_CAR_COORDINATES sweet_car player_x player_y player_z player_x = player_x + 1.433 player_y = player_y + 1.763 player_z = player_z + 0.0 SET_CHAR_COORDINATES bikerjumper3_f1 player_x player_y player_z TASK_PLAY_ANIM_NON_INTERRUPTABLE bikerjumper3_f1 MD_BIKE_Lnd_Roll_F MD_CHASE 1000.0 FALSE FALSE FALSE TRUE -1 bikerjumper3_f1flag = 202 ENDIF ENDIF ENDIF IF bikerjumper3_f1flag = 201 IF IS_CHAR_PLAYING_ANIM bikerjumper3_f1 MD_BIKE_Lnd_Roll_F GET_CHAR_ANIM_CURRENT_TIME bikerjumper3_f1 MD_BIKE_Lnd_Roll_F animframebk_jmp IF animframebk_jmp = 1.0 DELETE_CHAR bikerjumper3_f1 bikerjumper3_f1flag = 202 ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD sweet_car IF motelchase_f1flag = 7 ///////////////////////////////////////////////////////////////////// audio //dialogue GOSUB process_audio_f1 IF progressaudio_f1flag = 0 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_LA //Eyes front, CJ! $input_text_f1 = FIN1_LA //Eyes front, CJ! GOSUB load_audio_f1 ENDIF ENDIF IF policecarexplode_f1flag = 0 IF TIMERB > 53000 IF NOT IS_CHAR_DEAD biker2_f1 TASK_DIE biker2_f1 policecarexplode_f1flag = 1 ELSE policecarexplode_f1flag = 1 ENDIF ENDIF ENDIF IF policecarexplode_f1flag = 3 IF TIMERB > 58900 IF NOT IS_CAR_DEAD policecar1_f1 EXPLODE_CAR policecar1_f1 policecarexplode_f1flag = 4 ELSE policecarexplode_f1flag = 4 ENDIF ENDIF ENDIF IF policecarexplode_f1flag = 4 IF TIMERB > 85200 IF NOT IS_CAR_DEAD policecar2_f1 EXPLODE_CAR policecar2_f1 policecarexplode_f1flag = 5 ELSE policecarexplode_f1flag = 5 ENDIF ENDIF ENDIF IF actiontext_f1flag = 1 IF progressaudio_f1flag = 1 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_BK //Surprise, homeboy! $input_text_f1 = FIN1_BK //Surprise, homeboy! GOSUB load_audio_f1 ENDIF ENDIF ENDIF IF progressaudio_f1flag = 2 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_KK //Holy shit! Look at that! $input_text_f1 = FIN1_KK //Holy shit! Look at that! GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 3 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_KR //Wish I’d stayed at home and watched the game! $input_text_f1 = FIN1_KR //Wish I’d stayed at home and watched the game! GOSUB load_audio_f1 ENDIF ENDIF IF actiontext_f1flag = 1 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2545.15 -1460.3 15.0 15.0 FALSE actiontext_f1flag = 2 ENDIF ENDIF IF actiontext_f1flag = 2 IF progressaudio_f1flag = 4 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_ZB //Carl, behind us! Behind us! $input_text_f1 = FIN1_ZB //Carl, behind us! Behind us! GOSUB load_audio_f1 ENDIF ENDIF ENDIF IF progressaudio_f1flag = 5 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_LL //Put up your windows! $input_text_f1 = FIN1_LL//Put up your windows! GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 6 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_LI //Smoke, what the FUCK are you doin’? $input_text_f1 = FIN1_LI //Smoke, what the FUCK are you doin’? GOSUB load_audio_f1 ENDIF ENDIF //soap in eyes IF actiontext_f1flag = 2//3 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2451.92 -1461.5 12.0 12.0 FALSE actiontext_f1flag = 4 ENDIF ENDIF IF actiontext_f1flag = 4 IF progressaudio_f1flag = 7 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_LP //Dammit, Smoke, I got soap in my eyes! $input_text_f1 = FIN1_LP//Dammit, Smoke, I got soap in my eyes! GOSUB load_audio_f1 ENDIF ENDIF ENDIF IF progressaudio_f1flag = 8 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_MK //Smoke, you’re insane! $input_text_f1 = FIN1_MK //Smoke, you’re insane! GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 9 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_LJ //I like things clean! $input_text_f1 = FIN1_LJ //I like things clean! GOSUB load_audio_f1 ENDIF ENDIF //after the car wash IF actiontext_f1flag = 4 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2344.98 -1382.22 18.0 18.0 FALSE actiontext_f1flag = 5 ENDIF ENDIF IF actiontext_f1flag = 5 IF progressaudio_f1flag = 10 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_KS //Hey, CJ, watch to the left! $input_text_f1 = FIN1_KS //Hey, CJ, watch to the left! GOSUB load_audio_f1 ENDIF ENDIF ENDIF //going around in circles IF actiontext_f1flag = 5 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2305.51 -1370.01 18.0 18.0 FALSE actiontext_f1flag = 6 ENDIF ENDIF IF progressaudio_f1flag = 11 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_LQ //Hey, ain’t we been here before? $input_text_f1 = FIN1_LQ //Hey, ain’t we been here before? GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 12 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_LT //Hey, I’m taking what options I have, a’ight? $input_text_f1 = FIN1_LT //Hey, I’m taking what options I have, a’ight? GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 13 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_LV //Maybe if you have a nice word with these officers they’ll let us on our way! $input_text_f1 = FIN1_LV //Maybe if you have a nice word with these officers they’ll let us on our way! GOSUB load_audio_f1 ENDIF ENDIF //2nd bike jumper IF actiontext_f1flag = 7 IF progressaudio_f1flag = 14 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_BL //Heads up, brother! $input_text_f1 = FIN1_BL //Heads up, brother! GOSUB load_audio_f1 ENDIF ENDIF ENDIF IF progressaudio_f1flag = 15 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_LW //Hey, man, some idiot’s hanging off the back of the car! $input_text_f1 = FIN1_LW //Hey, man, some idiot’s hanging off the back of the car! GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 16 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_LX //Somebody shoot him! $input_text_f1 = FIN1_LX //Somebody shoot him! GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 17 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_ZA //Oh shit! All I got in my rearview is bad guys! $input_text_f1 = FIN1_ZA //Oh shit! All I got in my rearview is bad guys! GOSUB load_audio_f1 ENDIF ENDIF IF progressaudio_f1flag = 18 IF handlingaudio_f1flag = 0 audio_label_f1 = SOUND_FIN1_ZC //CJ, cover the rear! $input_text_f1 = FIN1_ZC //CJ, cover the rear! GOSUB load_audio_f1 ENDIF ENDIF //from the road block to just before the cut of the car bursting through the advertising sign IF actiontext_f1flag = 8 IF handlingaudio_f1flag = 0 IF progressaudio_f1flag = 20 audio_label_f1 = SOUND_FIN1_MA //OH SHIT! Roadblock up ahead! $input_text_f1 = FIN1_MA //OH SHIT! Roadblock up ahead! GOSUB load_audio_f1 ENDIF ENDIF ENDIF IF handlingaudio_f1flag = 0 IF progressaudio_f1flag = 21 audio_label_f1 = SOUND_FIN1_MB //The K's jammed! $input_text_f1 = FIN1_MB //The K's jammed! GOSUB load_audio_f1 ENDIF ENDIF IF handlingaudio_f1flag = 0 IF progressaudio_f1flag = 22 audio_label_f1 = SOUND_FIN1_MD //Fuckit, I’m going through! $input_text_f1 = FIN1_MD //Fuckit, I’m going through! GOSUB load_audio_f1 ENDIF ENDIF IF handlingaudio_f1flag = 0 IF progressaudio_f1flag = 23 audio_label_f1 = SOUND_FIN1_ME //CJ, we got the ghetto bird up ahead! $input_text_f1 = FIN1_ME //CJ, we got the ghetto bird up ahead! GOSUB load_audio_f1 ENDIF ENDIF IF handlingaudio_f1flag = 0 IF progressaudio_f1flag = 24 audio_label_f1 = SOUND_FIN1_EA //This is the LSPD do not – HEY! WHAT THE FUCK? TOO LOW!! $input_text_f1 = FIN1_EA //This is the LSPD do not – HEY! WHAT THE FUCK? TOO LOW!! GOSUB load_audio_f1 ENDIF ENDIF IF handlingaudio_f1flag = 0 IF progressaudio_f1flag = 25 audio_label_f1 = SOUND_FIN1_MH //Back up, Smoke, Back up! $input_text_f1 = FIN1_MH //Back up, Smoke, Back up! GOSUB load_audio_f1 ENDIF ENDIF IF handlingaudio_f1flag = 0 IF progressaudio_f1flag = 26 audio_label_f1 = SOUND_FIN1_MI //Hell no, I’m going through! $input_text_f1 = FIN1_MI //Hell no, I’m going through! GOSUB load_audio_f1 ENDIF ENDIF IF handlingaudio_f1flag = 0 IF progressaudio_f1flag = 27 audio_label_f1 = SOUND_FIN1_MT //Oh man we gonna diiie! $input_text_f1 = FIN1_MT //Oh man we gonna diiie! GOSUB load_audio_f1 ENDIF ENDIF IF handlingaudio_f1flag = 0 IF progressaudio_f1flag = 28 audio_label_f1 = SOUND_FIN1_ML //Oooooooh SHIIIIIIIT! $input_text_f1 = FIN1_ML //Oooooooh SHIIIIIIIT! GOSUB load_audio_f1 ENDIF ENDIF IF handlingaudio_f1flag = 0 IF progressaudio_f1flag = 29 audio_label_f1 = SOUND_FIN1_MR //Slow down, Smoke, SLOW DOWN! $input_text_f1 = FIN1_MR //Slow down, Smoke, SLOW DOWN! GOSUB load_audio_f1 ENDIF ENDIF IF handlingaudio_f1flag = 0 IF progressaudio_f1flag = 30 audio_label_f1 = SOUND_FIN1_MS //Oh shit, the brakes is out! $input_text_f1 = FIN1_MS //Oh shit, the brakes is out! GOSUB load_audio_f1 ENDIF ENDIF ///////////////////////////////////////////////////////////////////////////// //imran IF sca_f1flag = 1 IF NOT IS_CAR_DEAD policecar1_f1 IF LOCATE_CAR_2D policecar1_f1 2566.12 -1322.35 1.5 1.5 FALSE IF DOES_OBJECT_EXIST sca2_f1 BREAK_OBJECT sca2_f1 TRUE ENDIF IF DOES_OBJECT_EXIST sca3_f1 BREAK_OBJECT sca3_f1 TRUE ENDIF sca_f1flag = 2 ENDIF ENDIF ENDIF IF copcars_f1flag = 1 IF LOCATE_CAR_2D sweet_car 2564.68 -1442.47 15.0 15.0 FALSE IF NOT IS_CAR_DEAD policecar2_f1 START_PLAYBACK_RECORDED_CAR policecar2_f1 373 ADD_BLIP_FOR_CAR policecar2_f1 policecar2_f1blip CHANGE_BLIP_DISPLAY policecar2_f1blip BLIP_ONLY SWITCH_CAR_SIREN policecar2_f1 ON policecar2_f1flag = 1 policecar2swap_f1flag = 1 ENDIF IF NOT IS_CAR_DEAD policecar3_f1 START_PLAYBACK_RECORDED_CAR policecar3_f1 374 ADD_BLIP_FOR_CAR policecar3_f1 policecar3_f1blip CHANGE_BLIP_DISPLAY policecar3_f1blip BLIP_ONLY SWITCH_CAR_SIREN policecar3_f1 ON policecar3_f1flag = 1 policecar3swap_f1flag = 1 ENDIF IF NOT IS_CAR_DEAD policecar8_f1 START_PLAYBACK_RECORDED_CAR policecar8_f1 380 ADD_BLIP_FOR_CAR policecar8_f1 policecar8_f1blip CHANGE_BLIP_DISPLAY policecar8_f1blip BLIP_ONLY SWITCH_CAR_SIREN policecar8_f1 ON policecar8_f1flag = 1 policecar8swap_f1flag = 1 ENDIF IF NOT IS_CHAR_DEAD cop3_f1 TASK_DRIVE_BY cop3_f1 scplayer -1 0.0 0.0 0.0 500.0 DRIVEBY_AI_ALL_DIRN TRUE 40 ENDIF IF NOT IS_CHAR_DEAD cop5_f1 IF difficulty_f1flag > 1 TASK_DRIVE_BY cop5_f1 -1 sweet_car 0.0 0.0 0.0 500.0 DRIVEBY_AI_ALL_DIRN TRUE 30 ELSE TASK_DRIVE_BY cop5_f1 -1 sweet_car 0.0 0.0 0.0 500.0 DRIVEBY_AI_ALL_DIRN TRUE 75 ENDIF ENDIF IF NOT IS_CHAR_DEAD cop8_f1 TASK_DRIVE_BY cop8_f1 -1 sweet_car 0.0 0.0 0.0 500.0 DRIVEBY_AI_ALL_DIRN TRUE 40 ENDIF PLAY_FX_SYSTEM jetwashfx1_f1 DELETE_OBJECT sca1_f1 DELETE_OBJECT sca2_f1 DELETE_OBJECT sca3_f1 DELETE_OBJECT sca4_f1 DELETE_OBJECT sca5_f1 DELETE_OBJECT sca6_f1 MARK_MODEL_AS_NO_LONGER_NEEDED DYN_SCAFFOLD_4b MARK_MODEL_AS_NO_LONGER_NEEDED munch_donut copcars_f1flag = 2 ENDIF ENDIF IF copcars_f1flag = 2 IF LOCATE_CAR_2D sweet_car 2344.12 -1384.48 12.0 12.0 FALSE CREATE_CAR COPBIKE 2254.042 -1308.15 23.02 copbike4_f1 //bike jumper 2253.642 -1223.56 23.657 SET_PETROL_TANK_WEAKPOINT copbike4_f1 FALSE SET_CAR_HEADING copbike4_f1 261.999 FORCE_CAR_LIGHTS copbike4_f1 FORCE_CAR_LIGHTS_ON SWITCH_CAR_SIREN copbike4_f1 ON playdeathanim2_f1flag = 0 CREATE_CHAR PEDTYPE_MISSION1 LAPDM1 0.0 0.0 0.0 bikerjumper4_f1 //bike jumper // SET_CHAR_PROOFS bikerjumper4_f1 TRUE TRUE TRUE TRUE TRUE TASK_PLAY_ANIM_NON_INTERRUPTABLE bikerjumper4_f1 MD_BIKE_Jmp_BL MD_CHASE 4.0 FALSE FALSE FALSE TRUE -1 ATTACH_CHAR_TO_CAR bikerjumper4_f1 copbike4_f1 0.0 -0.401 0.47 FACING_FORWARD 360.0 WEAPONTYPE_UNARMED SET_CHAR_HEALTH bikerjumper4_f1 1000 bikerjumper4_f1flag = 1 SET_CHAR_DECISION_MAKER bikerjumper4_f1 motel_DM SET_CHAR_SUFFERS_CRITICAL_HITS bikerjumper4_f1 FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER bikerjumper4_f1 TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER copbike4_f1 TRUE SET_CAR_PROOFS copbike4_f1 TRUE TRUE TRUE TRUE TRUE CREATE_CAR COPCARLA 2222.98 -1303.52 22.654 policecar5_f1 //car that comes out with the bike SET_PETROL_TANK_WEAKPOINT policecar5_f1 FALSE SET_CAR_HEADING policecar5_f1 269.409 SET_CAR_HEALTH policecar5_f1 850 SET_CAR_ONLY_DAMAGED_BY_PLAYER policecar5_f1 TRUE CREATE_CHAR_INSIDE_CAR policecar5_f1 PEDTYPE_MISSION1 LAPD1 cop9_f1 SET_CHAR_DECISION_MAKER cop9_f1 motel_DM SET_CHAR_SUFFERS_CRITICAL_HITS cop9_f1 FALSE SET_CHAR_HEALTH cop9_f1 100 SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop9_f1 TRUE CREATE_CHAR_AS_PASSENGER policecar5_f1 PEDTYPE_MISSION1 LAPD1 0 cop10_f1 SET_CHAR_DECISION_MAKER cop10_f1 motel_dm SET_CHAR_HEALTH cop10_f1 100 SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop10_f1 TRUE GIVE_WEAPON_TO_CHAR cop10_f1 WEAPONTYPE_MP5 9999 SET_CHAR_SUFFERS_CRITICAL_HITS cop10_f1 FALSE CAR_SET_IDLE policecar5_f1 CREATE_CAR COPCARLA 2250.63 -1380.995 22.65 policecar6_f1 //at the bottom of the road SET_PETROL_TANK_WEAKPOINT policecar6_f1 FALSE SET_CAR_HEADING policecar6_f1 268.1 SET_CAR_HEALTH policecar6_f1 800 SET_CAR_PROOFS policecar6_f1 FALSE FALSE TRUE FALSE FALSE SET_CAR_ONLY_DAMAGED_BY_PLAYER policecar6_f1 TRUE CREATE_CHAR_INSIDE_CAR policecar6_f1 PEDTYPE_MISSION1 LAPD1 cop12_f1 SET_CHAR_DECISION_MAKER cop12_f1 motel_DM SET_CHAR_SUFFERS_CRITICAL_HITS cop12_f1 FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop12_f1 TRUE CREATE_CHAR_AS_PASSENGER policecar6_f1 PEDTYPE_MISSION1 LAPD1 0 cop13_f1 SET_CHAR_DECISION_MAKER cop13_f1 motel_dm SET_CHAR_HEALTH cop13_f1 200 SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop13_f1 TRUE GIVE_WEAPON_TO_CHAR cop13_f1 WEAPONTYPE_MP5 9999 SET_CHAR_SUFFERS_CRITICAL_HITS cop13_f1 FALSE CAR_SET_IDLE policecar6_f1 // CREATE_CAR COPCARLA 2330.692 -1304.53 23.9 policecar7_f1 // opposite the alley entrance // SET_CAR_HEADING policecar7_f1 87.107 // SET_CAR_HEALTH policecar7_f1 750 // SET_CAR_ONLY_DAMAGED_BY_PLAYER policecar7_f1 TRUE // CREATE_CHAR_INSIDE_CAR policecar7_f1 PEDTYPE_MISSION1 LAPD1 cop14_f1 // SET_CHAR_DECISION_MAKER cop14_f1 motel_DM // SET_CHAR_SUFFERS_CRITICAL_HITS cop14_f1 FALSE // SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop14_f1 TRUE // CREATE_CHAR_AS_PASSENGER policecar7_f1 PEDTYPE_MISSION1 LAPD1 0 cop15_f1 // SET_CHAR_DECISION_MAKER cop15_f1 motel_dm // SET_CHAR_HEALTH cop15_f1 200 // SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop15_f1 TRUE // GIVE_WEAPON_TO_CHAR cop15_f1 WEAPONTYPE_MP5 9999 // SET_CHAR_SUFFERS_CRITICAL_HITS cop15_f1 FALSE // CAR_SET_IDLE policecar7_f1 copcars_f1flag = 3 ENDIF ENDIF IF copcars_f1flag = 3 IF LOCATE_CAR_2D sweet_car 2304.185 -1364.711 20.0 20.0 FALSE IF NOT IS_CAR_DEAD policecar6_f1 START_PLAYBACK_RECORDED_CAR policecar6_f1 377 ADD_BLIP_FOR_CAR policecar6_f1 policecar6_f1blip CHANGE_BLIP_DISPLAY policecar6_f1blip BLIP_ONLY SWITCH_CAR_SIREN policecar6_f1 ON policecar6_f1flag = 1 policecar6swap_f1flag = 1 ENDIF IF NOT IS_CHAR_DEAD cop13_f1 TASK_DRIVE_BY cop13_f1 -1 sweet_car 0.0 0.0 0.0 500.0 DRIVEBY_AI_ALL_DIRN TRUE 30 ENDIF KILL_FX_SYSTEM jetwashfx1_f1 copcars_f1flag = 4 ENDIF ENDIF IF copcars_f1flag = 4 IF LOCATE_CAR_2D sweet_car 2289.817 -1319.51 25.0 25.0 FALSE IF NOT IS_CAR_DEAD copbike4_f1 IF NOT IS_CHAR_DEAD bikerjumper4_f1 START_PLAYBACK_RECORDED_CAR copbike4_f1 375 TIMERA = 0 bikerjumper4_f1flag = 3 ENDIF ENDIF IF NOT IS_CAR_DEAD policecar5_f1 START_PLAYBACK_RECORDED_CAR policecar5_f1 376 ADD_BLIP_FOR_CAR policecar5_f1 policecar5_f1blip CHANGE_BLIP_DISPLAY policecar5_f1blip BLIP_ONLY SWITCH_CAR_SIREN policecar5_f1 ON policecar5_f1flag = 1 policecar5swap_f1flag = 1 ENDIF // IF NOT IS_CAR_DEAD policecar7_f1 // START_PLAYBACK_RECORDED_CAR policecar7_f1 379 // ADD_BLIP_FOR_CAR policecar7_f1 policecar7_f1blip // CHANGE_BLIP_DISPLAY policecar7_f1blip BLIP_ONLY // SWITCH_CAR_SIREN policecar7_f1 ON // policecar7_f1flag = 1 // policecar7swap_f1flag = 1 // ENDIF IF NOT IS_CHAR_DEAD cop10_f1 TASK_DRIVE_BY cop10_f1 -1 sweet_car 0.0 0.0 0.0 500.0 DRIVEBY_AI_ALL_DIRN TRUE 40 ENDIF // IF NOT IS_CHAR_DEAD cop15_f1 // TASK_DRIVE_BY cop15_f1 -1 sweet_car 0.0 0.0 0.0 500.0 DRIVEBY_AI_ALL_DIRN TRUE 40 // ENDIF DELETE_CHAR bikerjumper3_f1 copcars_f1flag = 5 ENDIF ENDIF IF copcars_f1flag = 5 IF LOCATE_CAR_2D sweet_car 2221.81 -1260.26 5.5 5.5 FALSE //create two guys to get run over CREATE_CHAR PEDTYPE_MISSION1 LAPD1 2127.116 -1381.61 23.88 copleft_f1 SET_CHAR_HEADING copleft_f1 84.93 SET_CHAR_DECISION_MAKER copleft_f1 motel_dm SET_CHAR_PROOFS copleft_f1 TRUE TRUE TRUE TRUE TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER copleft_f1 TRUE GIVE_WEAPON_TO_CHAR copleft_f1 WEAPONTYPE_MP5 9999 SET_CHAR_SUFFERS_CRITICAL_HITS copleft_f1 FALSE SET_CHAR_ACCURACY copleft_f1 5 enemy_f1 = copleft_f1 enemytarget_f1 = scplayer GOSUB stayshootnoduck_f1label CREATE_CHAR PEDTYPE_MISSION1 LAPDM1 2127.09 -1382.81 23.32 copright_f1 SET_CHAR_DECISION_MAKER copright_f1 motel_dm SET_CHAR_PROOFS copright_f1 TRUE TRUE TRUE TRUE TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER copright_f1 TRUE GIVE_WEAPON_TO_CHAR copright_f1 WEAPONTYPE_MP5 9999 SET_CHAR_SUFFERS_CRITICAL_HITS copright_f1 FALSE SET_CHAR_ACCURACY copright_f1 5 enemy_f1 = copright_f1 enemytarget_f1 = scplayer GOSUB stayshootnoduck_f1label CREATE_CAR COPCARLA 2129.865 -1386.89 22.65 policecarblock2_f1 SET_CAR_HEADING policecarblock2_f1 7.63 CAR_SET_IDLE policecarblock2_f1 CAR_SET_IDLE policecarblock2_f1 TIMERB = 0 IF helileave_f1flag = 0 IF NOT IS_CAR_DEAD extpoliceheli_f1 HELI_GOTO_COORDS extpoliceheli_f1 2168.0 -1508.0 33.29 30.0 30.0 helileave_f1flag = 1 ENDIF ENDIF //right CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2167.763 -1470.354 25.328 fence_f1 SET_OBJECT_HEADING fence_f1 90.0 CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2167.763 -1465.688 25.328 fence2_f1 SET_OBJECT_HEADING fence2_f1 90.0 CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2167.763 -1461.021 25.328 fence3_f1 SET_OBJECT_HEADING fence3_f1 90.0 // CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2167.763 -1456.353 25.328 fence4_f1 // SET_OBJECT_HEADING fence4_f1 90.0 // CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2167.763 -1451.713 25.328 fence5_f1 // SET_OBJECT_HEADING fence5_f1 90.0 // CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2167.763 -1447.041 25.328 fence6_f1 // SET_OBJECT_HEADING fence6_f1 90.0 // CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2167.763 -1442.374 25.328 fence7_f1 // SET_OBJECT_HEADING fence7_f1 90.0 // CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2167.763 -1437.707 25.328 fence8_f1 // SET_OBJECT_HEADING fence8_f1 90.0 // CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2167.763 -1433.04 25.328 fence9_f1 // SET_OBJECT_HEADING fence9_f1 90.0 // CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2167.763 -1428.399 25.328 fence10_f1 // SET_OBJECT_HEADING fence10_f1 90.0 // CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2167.763 -1423.737 25.328 fence11_f1 // SET_OBJECT_HEADING fence11_f1 90.0 // CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2167.763 -1419.096 25.328 fence12_f1 // SET_OBJECT_HEADING fence12_f1 90.0 //left CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2174.328 -1470.354 25.328 fencel_f1 SET_OBJECT_HEADING fencel_f1 270.0 CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2174.328 -1465.688 25.328 fence2l_f1 SET_OBJECT_HEADING fence2l_f1 270.0 CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2174.328 -1461.021 25.328 fence3l_f1 SET_OBJECT_HEADING fence3l_f1 270.0 // CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2174.328 -1456.353 25.328 fence4l_f1 // SET_OBJECT_HEADING fence4l_f1 270.0 // CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2174.328 -1451.713 25.328 fence5l_f1 // SET_OBJECT_HEADING fence5l_f1 270.0 // CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2174.328 -1447.041 25.328 fence6l_f1 // SET_OBJECT_HEADING fence6l_f1 270.0 // CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2174.328 -1442.374 25.328 fence7l_f1 // SET_OBJECT_HEADING fence7l_f1 270.0 // CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2174.328 -1437.707 25.328 fence8l_f1 // SET_OBJECT_HEADING fence8l_f1 270.0 // CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2174.328 -1433.04 25.328 fence9l_f1 // SET_OBJECT_HEADING fence9l_f1 270.0 // CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2174.328 -1428.399 25.328 fence10l_f1 // SET_OBJECT_HEADING fence10l_f1 270.0 // CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2174.328 -1423.737 25.328 fence11l_f1 // SET_OBJECT_HEADING fence11l_f1 270.0 // CREATE_OBJECT_NO_OFFSET Wd_Fence_Anim 2174.328 -1419.096 25.328 fence12l_f1 // SET_OBJECT_HEADING fence12l_f1 270.0 // copcars_f1flag = 6 ENDIF ENDIF IF copcars_f1flag = 6 IF LOCATE_CAR_2D sweet_car 2081.93 -1261.68 6.0 6.0 FALSE IF NOT IS_CAR_DEAD policecar6_f1 SET_CAR_HEALTH policecar6_f1 249 ENDIF copcars_f1flag = 7 ENDIF ENDIF IF copcars_f1flag = 7 IF TIMERB > 3000 IF NOT IS_CHAR_DEAD copleft_f1 IF NOT IS_CHAR_DEAD copright_f1 FREEZE_CHAR_POSITION copleft_f1 TRUE FREEZE_CHAR_POSITION copright_f1 TRUE copcars_f1flag = 8 ENDIF ENDIF ENDIF ENDIF //turn camera around IF turncamera_f1flag = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2074.18 -1372.28 7.0 7.0 FALSE CLEAR_MISSION_AUDIO 3 LOAD_MISSION_AUDIO 3 SOUND_HELI_SLASH_PED //request heli slash audio SET_HEADING_FOR_ATTACHED_PLAYER PLAYER1 174.0 8.0 //want 184.0 //was 90.0 DELETE_CAR copbike4_f1 MARK_MODEL_AS_NO_LONGER_NEEDED COPBIKE SET_PLAYER_FIRE_BUTTON PLAYER1 FALSE actiontext_f1flag = 8 handlingaudio_f1flag = 0 progressaudio_f1flag = 20 turncamera_f1flag = 1 ENDIF ENDIF IF turncamera_f1flag = 1 IF IS_ATTACHED_PLAYER_HEADING_ACHIEVED PLAYER1 // SET_HEADING_FOR_ATTACHED_PLAYER PLAYER1 0.0 360.0 SET_HEADING_LIMIT_FOR_ATTACHED_CHAR scplayer FACING_FORWARD 60.0 IF NOT IS_CAR_DEAD sweet_car SET_CAR_PROOFS sweet_car TRUE TRUE TRUE TRUE TRUE ENDIF SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE DELETE_OBJECT advert_f1 CREATE_OBJECT_NO_OFFSET md_poster 2167.82 -1518.193 20.237 advert_f1 SET_OBJECT_HEADING advert_f1 0.0 SET_OBJECT_COLLISION_DAMAGE_EFFECT advert_f1 FALSE FREEZE_OBJECT_POSITION advert_f1 TRUE turncamera_f1flag = 2 ENDIF ENDIF //imran //heli setpiece IF copcars_f1flag = 8 IF NOT IS_CHAR_DEAD copleft_f1 IF NOT IS_CHAR_DEAD copright_f1 IF IS_CHAR_TOUCHING_VEHICLE copleft_f1 sweet_car OR IS_CHAR_TOUCHING_VEHICLE copright_f1 sweet_car copleft_f1flag = 1 copright_f1flag = 1 copcars_f1flag = 9 DELETE_CAR extpoliceheli_f1 MARK_CHAR_AS_NO_LONGER_NEEDED exthelidriver_f1 DELETE_SEARCHLIGHT helispotlight_f1 CREATE_CAR POLMAV 2170.27 -1523.73 24.76 extpoliceheli_f1 CREATE_CHAR_INSIDE_CAR extpoliceheli_f1 PEDTYPE_MISSION1 LAPD1 exthelidriver_f1 SET_HELI_BLADES_FULL_SPEED extpoliceheli_f1 START_PLAYBACK_RECORDED_CAR extpoliceheli_f1 381 TIMERA = 0 TIMERB = 0 SET_CHAR_DECISION_MAKER exthelidriver_f1 motel_DM SET_CHAR_SUFFERS_CRITICAL_HITS exthelidriver_f1 FALSE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE exthelidriver_f1 FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER exthelidriver_f1 TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER extpoliceheli_f1 TRUE SET_CAR_PROOFS extpoliceheli_f1 TRUE TRUE TRUE TRUE TRUE CREATE_FX_SYSTEM blood_heli 2170.74 -1445.63 25.12 TRUE bloodfx1_f1 CREATE_FX_SYSTEM blood_heli 2170.92 -1450.5 25.0 TRUE bloodfx2_f1 CREATE_FX_SYSTEM blood_heli 2171.11 -1447.04 25.13 TRUE bloodfx3_f1 ENDIF ENDIF ENDIF ENDIF IF copcars_f1flag = 9 IF fence_f1flag = 0 IF TIMERA > 14099 PLAY_OBJECT_ANIM fence_f1 Fen_Choppa_R1 MD_CHASE 1000.0 FALSE TRUE PLAY_OBJECT_ANIM fencel_f1 Fen_Choppa_L2 MD_CHASE 1000.0 FALSE TRUE fence_f1flag = 1 ENDIF ENDIF IF fence_f1flag = 1 IF TIMERA > 14899 PLAY_OBJECT_ANIM fence2_f1 Fen_Choppa_R2 MD_CHASE 1000.0 FALSE TRUE PLAY_OBJECT_ANIM fence2l_f1 Fen_Choppa_L3 MD_CHASE 1000.0 FALSE TRUE fence_f1flag = 2 ENDIF ENDIF IF fence_f1flag = 2 IF TIMERA > 15532 PLAY_OBJECT_ANIM fence3_f1 Fen_Choppa_R3 MD_CHASE 1000.0 FALSE TRUE PLAY_OBJECT_ANIM fence3l_f1 Fen_Choppa_L1 MD_CHASE 1000.0 FALSE TRUE fence_f1flag = 3 ENDIF ENDIF // IF fence_f1flag = 3 // IF TIMERA > 16099 //// PLAY_OBJECT_ANIM fence4_f1 Fen_Choppa_R2 MD_CHASE 1000.0 FALSE TRUE //// PLAY_OBJECT_ANIM fence4l_f1 Fen_Choppa_L2 MD_CHASE 1000.0 FALSE TRUE // fence_f1flag = 4 // ENDIF // ENDIF // // IF fence_f1flag = 4 // IF TIMERA > 16666 //// PLAY_OBJECT_ANIM fence5_f1 Fen_Choppa_R1 MD_CHASE 1000.0 FALSE TRUE //// PLAY_OBJECT_ANIM fence5l_f1 Fen_Choppa_L3 MD_CHASE 1000.0 FALSE TRUE // fence_f1flag = 5 // ENDIF // ENDIF // // IF fence_f1flag = 5 // IF TIMERA > 17466 //// PLAY_OBJECT_ANIM fence6_f1 Fen_Choppa_R3 MD_CHASE 1000.0 FALSE TRUE //// PLAY_OBJECT_ANIM fence6l_f1 Fen_Choppa_L1 MD_CHASE 1000.0 FALSE TRUE // fence_f1flag = 6 // ENDIF // ENDIF // // IF fence_f1flag = 6 // IF TIMERA > 18266 //// PLAY_OBJECT_ANIM fence7_f1 Fen_Choppa_R1 MD_CHASE 1000.0 FALSE TRUE //// PLAY_OBJECT_ANIM fence7l_f1 Fen_Choppa_L2 MD_CHASE 1000.0 FALSE TRUE // fence_f1flag = 7 // ENDIF // ENDIF // // IF fence_f1flag = 7 // IF TIMERA > 18899 //// PLAY_OBJECT_ANIM fence8_f1 Fen_Choppa_R2 MD_CHASE 1000.0 FALSE TRUE //// PLAY_OBJECT_ANIM fence8l_f1 Fen_Choppa_L3 MD_CHASE 1000.0 FALSE TRUE // fence_f1flag = 8 // ENDIF // ENDIF // // IF fence_f1flag = 8 // IF TIMERA > 19467 //// PLAY_OBJECT_ANIM fence9_f1 Fen_Choppa_R3 MD_CHASE 1000.0 FALSE TRUE //// PLAY_OBJECT_ANIM fence9l_f1 Fen_Choppa_L1 MD_CHASE 1000.0 FALSE TRUE // fence_f1flag = 9 // ENDIF // ENDIF // // IF fence_f1flag = 9 // IF TIMERA > 20032 //// PLAY_OBJECT_ANIM fence10_f1 Fen_Choppa_R1 MD_CHASE 1000.0 FALSE TRUE //// PLAY_OBJECT_ANIM fence10l_f1 Fen_Choppa_L3 MD_CHASE 1000.0 FALSE TRUE // fence_f1flag = 10 // ENDIF // ENDIF // // IF fence_f1flag = 10 // IF TIMERA > 20866 //// PLAY_OBJECT_ANIM fence11_f1 Fen_Choppa_R3 MD_CHASE 1000.0 FALSE TRUE //// PLAY_OBJECT_ANIM fence11l_f1 Fen_Choppa_L2 MD_CHASE 1000.0 FALSE TRUE // fence_f1flag = 11 // ENDIF // ENDIF // // IF fence_f1flag = 11 // IF TIMERA > 21432 //// PLAY_OBJECT_ANIM fence12_f1 Fen_Choppa_R2 MD_CHASE 1000.0 FALSE TRUE //// PLAY_OBJECT_ANIM fence12l_f1 Fen_Choppa_L1 MD_CHASE 1000.0 FALSE TRUE // fence_f1flag = 12 // ENDIF // ENDIF //tumble guy IF copleft_f1flag = 1 IF NOT IS_CHAR_DEAD copleft_f1 FREEZE_CHAR_POSITION copleft_f1 FALSE ATTACH_CHAR_TO_CAR copleft_f1 sweet_car -0.5 3.0 0.3 FACING_FORWARD 360.0 WEAPONTYPE_UNARMED TASK_PLAY_ANIM_NON_INTERRUPTABLE copleft_f1 Carhit_Tumble MD_CHASE 1000.0 FALSE FALSE FALSE TRUE -1 copleft_f1flag = 2 ENDIF ENDIF IF copleft_f1flag = 2 IF NOT IS_CHAR_DEAD copleft_f1 IF IS_CHAR_PLAYING_ANIM copleft_f1 Carhit_Tumble GET_CHAR_ANIM_CURRENT_TIME copleft_f1 Carhit_Tumble animframebk_jmp IF animframebk_jmp > 0.7 IF NOT IS_CAR_DEAD sweet_car DETACH_CHAR_FROM_CAR copleft_f1 GET_CAR_COORDINATES sweet_car player_x player_y player_z player_x = player_x + 0.0 player_y = player_y + -1.763 player_z = player_z + -0.05 SET_CHAR_COORDINATES copleft_f1 player_x player_y player_z REMOVE_CHAR_ELEGANTLY copleft_f1 copleft_f1flag = 3 ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD copleft_f1 //heading GET_CAR_HEADING sweet_car copleft_f1heading SET_CHAR_HEADING copleft_f1 copleft_f1heading ENDIF //heli guy IF copright_f1flag = 1 IF NOT IS_CHAR_DEAD copright_f1 FREEZE_CHAR_POSITION copright_f1 FALSE ATTACH_CHAR_TO_CAR copright_f1 sweet_car 0.5 3.0 0.3 FACING_FORWARD 360.0 WEAPONTYPE_UNARMED TASK_PLAY_ANIM_NON_INTERRUPTABLE copright_f1 Carhit_Hangon MD_CHASE 1000.0 FALSE FALSE FALSE TRUE -1 copright_f1flag = 2 ENDIF ENDIF IF copright_f1flag = 2 IF NOT IS_CHAR_DEAD copright_f1 IF IS_CHAR_PLAYING_ANIM copright_f1 Carhit_Hangon GET_CHAR_ANIM_CURRENT_TIME copright_f1 Carhit_Hangon animframebk_jmp IF animframebk_jmp = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE copright_f1 Hangon_Stun_loop MD_CHASE 1000.0 TRUE FALSE FALSE FALSE -1 copright_f1flag = 3 ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD copright_f1 //heading GET_CAR_HEADING sweet_car copright_f1heading SET_CHAR_HEADING copright_f1 copright_f1heading ENDIF IF helisetpiece_f1flag = 0 //pause the heli IF TIMERB > 10499 IF NOT IS_CAR_DEAD sweet_car IF IS_PLAYBACK_GOING_ON_FOR_CAR sweet_car PAUSE_PLAYBACK_RECORDED_CAR sweet_car TIMERB = 0 helisetpiece_f1flag = 1 ENDIF ENDIF ENDIF ENDIF IF helisetpiece_f1flag = 1 //play the turn around animation IF TIMERB > 3000 IF copright_f1flag = 3 //turn around to see heli IF NOT IS_CHAR_DEAD copright_f1 //heading TASK_PLAY_ANIM_NON_INTERRUPTABLE copright_f1 Hangon_Stun_Turn MD_CHASE 1000.0 FALSE FALSE FALSE TRUE -1 TIMERB = 0 copright_f1flag = 4 ENDIF ENDIF helisetpiece_f1flag = 2 ENDIF ENDIF IF helisetpiece_f1flag = 2 //play the turn around animation IF TIMERB > 2000 IF IS_PLAYBACK_GOING_ON_FOR_CAR sweet_car UNPAUSE_PLAYBACK_RECORDED_CAR sweet_car DELETE_CAR policecarblock2_f1 MARK_MODEL_AS_NO_LONGER_NEEDED COPCARLA MARK_MODEL_AS_NO_LONGER_NEEDED LAPD1 MARK_MODEL_AS_NO_LONGER_NEEDED LAPDM1 MARK_MODEL_AS_NO_LONGER_NEEDED COPBIKE MARK_MODEL_AS_NO_LONGER_NEEDED POLMAV MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG DELETE_CHAR copleft_f1 helisetpiece_f1flag = 3 ENDIF ENDIF ENDIF IF helisetpiece_f1flag = 3 IF TIMERB > 4300 DO_CAMERA_BUMP 0.0 -1.0///////////////////////////////////////////////////// E3 IF HAS_MISSION_AUDIO_LOADED 3 PLAY_MISSION_AUDIO 3 //SOUND_HELI_SLASH_PED ENDIF PLAY_AND_KILL_FX_SYSTEM bloodfx1_f1 CREATE_OBJECT chopcop_torso 2170.35 -1445.99 25.49 torso_f1 SET_OBJECT_DYNAMIC torso_f1 TRUE CREATE_OBJECT chopcop_legr 2170.50 -1447.65 25.06 legr_f1 SET_OBJECT_DYNAMIC legr_f1 TRUE DELETE_CHAR copright_f1 DELETE_OBJECT fence_f1 DELETE_OBJECT fence2l_f1 DELETE_OBJECT fence3l_f1 // DELETE_OBJECT fence4l_f1 // DELETE_OBJECT fence5l_f1 DELETE_OBJECT fencel_f1 DELETE_OBJECT fence2l_f1 DELETE_OBJECT fence3l_f1 // DELETE_OBJECT fence4l_f1 // DELETE_OBJECT fence5l_f1 helisetpiece_f1flag = 4 ENDIF ENDIF IF helisetpiece_f1flag = 4 IF TIMERB > 4800 actiontext_f1flag = 9 PLAY_AND_KILL_FX_SYSTEM bloodfx2_f1 CREATE_OBJECT chopcop_legr 2170.99 -1448.51 25.08 legl_f1 SET_OBJECT_DYNAMIC legl_f1 TRUE CREATE_OBJECT chopcop_armr 2170.96 -1450.36 25.2 armr_f1 SET_OBJECT_DYNAMIC armr_f1 TRUE SET_OBJECT_ROTATION armr_f1 0.2 0.2 0.2 CREATE_OBJECT chopcop_armr 2171.16 -1451.11 25.12 arml_f1 SET_OBJECT_DYNAMIC arml_f1 TRUE SET_OBJECT_ROTATION arml_f1 -0.1 0.05 0.1 CREATE_OBJECT chopcop_head 2171.1 -1453.09 25.4 head_f1 SET_OBJECT_DYNAMIC head_f1 TRUE SET_OBJECT_ROTATION head_f1 0.5 0.2 -0.1 PLAY_AND_KILL_FX_SYSTEM bloodfx3_f1 IF NOT IS_CAR_DEAD extpoliceheli_f1 STOP_PLAYBACK_RECORDED_CAR extpoliceheli_f1 ENDIF helisetpiece_f1flag = 5 ENDIF ENDIF IF helisetpiece_f1flag = 5 IF TIMERB > 5800 SET_FIXED_CAMERA_POSITION 2169.8989 -1543.4972 38.7440 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2169.8938 -1542.5510 38.4204 JUMP_CUT SWITCH_WIDESCREEN ON DETACH_CHAR_FROM_CAR scplayer SET_CHAR_COORDINATES scplayer 2184.87 -1500.83 23.55 SET_PLAYER_CONTROL PLAYER1 OFF IF NOT IS_CAR_DEAD extpoliceheli_f1 SET_CAR_COORDINATES extpoliceheli_f1 2172.56 -1420.69 30.0 EXPLODE_CAR extpoliceheli_f1 IF NOT IS_CAR_DEAD extpoliceheli_f1 EXPLODE_CAR extpoliceheli_f1 ENDIF DELETE_CHAR exthelidriver_f1 ENDIF TIMERB = 0 helisetpiece_f1flag = 6 ENDIF ENDIF ENDIF //clear up cars IF helileave_f1flag = 1 IF NOT IS_CAR_DEAD extpoliceheli_f1 MARK_CAR_AS_NO_LONGER_NEEDED extpoliceheli_f1 MARK_CHAR_AS_NO_LONGER_NEEDED exthelidriver_f1 DELETE_SEARCHLIGHT helispotlight_f1 helileave_f1flag = 2 ENDIF ENDIF IF policecar1_f1flag = 1 IF NOT IS_CAR_DEAD policecar1_f1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR policecar1_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar1_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop1_f1 REMOVE_BLIP policecar1_f1blip policecar1_f1flag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar1_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop1_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar1_f1 REMOVE_BLIP policecar1_f1blip policecar1_f1flag = 2 ENDIF ENDIF //swap seat IF policecar2swap_f1flag = 1 IF NOT IS_CAR_DEAD policecar2_f1 IF NOT IS_CHAR_DEAD cop2_f1 ELSE IF NOT IS_CHAR_DEAD cop3_f1 IF IS_CHAR_IN_CAR cop3_f1 policecar2_f1 GET_DRIVER_OF_CAR policecar2_f1 driverofcar_f1 IF driverofcar_f1 = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT cop3_f1 policecar2_f1 policecar2swap_f1flag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar2_f1 policecar2swap_f1flag = 2 ENDIF ENDIF ENDIF ENDIF IF policecar2swap_f1flag = 2 IF IS_CHAR_DEAD cop3_f1 STOP_PLAYBACK_RECORDED_CAR policecar2_f1 policecar2swap_f1flag = 3 ENDIF ENDIF IF policecar2_f1flag = 1 IF NOT IS_CAR_DEAD policecar2_f1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR policecar2_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar2_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop2_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop3_f1 REMOVE_BLIP policecar2_f1blip policecar2_f1flag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar2_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop2_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop3_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar2_f1 REMOVE_BLIP policecar2_f1blip policecar2_f1flag = 2 ENDIF ENDIF //swap seat IF policecar3swap_f1flag = 1 IF NOT IS_CAR_DEAD policecar3_f1 IF NOT IS_CHAR_DEAD cop4_f1 ELSE IF NOT IS_CHAR_DEAD cop5_f1 IF IS_CHAR_IN_CAR cop5_f1 policecar3_f1 GET_DRIVER_OF_CAR policecar3_f1 driverofcar_f1 IF driverofcar_f1 = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT cop5_f1 policecar3_f1 policecar3swap_f1flag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar3_f1 policecar3swap_f1flag = 2 ENDIF ENDIF ENDIF ENDIF IF policecar3swap_f1flag = 2 IF IS_CHAR_DEAD cop5_f1 STOP_PLAYBACK_RECORDED_CAR policecar3_f1 policecar3swap_f1flag = 3 ENDIF ENDIF IF policecar3_f1flag = 1 IF NOT IS_CAR_DEAD policecar3_f1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR policecar3_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar3_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop4_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop5_f1 REMOVE_BLIP policecar3_f1blip policecar3_f1flag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar3_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop4_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop5_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar3_f1 REMOVE_BLIP policecar3_f1blip policecar3_f1flag = 2 ENDIF ENDIF IF policecar4_f1flag = 1 IF IS_CAR_DEAD policecar4_f1 REMOVE_BLIP policecar4_f1blip MARK_CHAR_AS_NO_LONGER_NEEDED cop6_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar4_f1 policecar4_f1flag = 2 ENDIF ENDIF //swap seat IF policecar5swap_f1flag = 1 IF NOT IS_CAR_DEAD policecar5_f1 IF NOT IS_CHAR_DEAD cop9_f1 ELSE IF NOT IS_CHAR_DEAD cop10_f1 IF IS_CHAR_IN_CAR cop10_f1 policecar5_f1 GET_DRIVER_OF_CAR policecar5_f1 driverofcar_f1 IF driverofcar_f1 = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT cop10_f1 policecar5_f1 policecar5swap_f1flag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar5_f1 policecar5swap_f1flag = 2 ENDIF ENDIF ENDIF ENDIF IF policecar5swap_f1flag = 2 IF IS_CHAR_DEAD cop10_f1 STOP_PLAYBACK_RECORDED_CAR policecar5_f1 policecar5swap_f1flag = 3 ENDIF ENDIF IF policecar5_f1flag = 1 IF NOT IS_CAR_DEAD policecar5_f1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR policecar5_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar5_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop9_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop10_f1 REMOVE_BLIP policecar5_f1blip policecar5_f1flag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar5_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop9_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop10_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar5_f1 REMOVE_BLIP policecar5_f1blip policecar5_f1flag = 2 ENDIF ENDIF //swap seat IF policecar6swap_f1flag = 1 IF NOT IS_CAR_DEAD policecar6_f1 IF NOT IS_CHAR_DEAD cop12_f1 ELSE IF NOT IS_CHAR_DEAD cop13_f1 IF IS_CHAR_IN_CAR cop13_f1 policecar6_f1 GET_DRIVER_OF_CAR policecar6_f1 driverofcar_f1 IF driverofcar_f1 = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT cop13_f1 policecar6_f1 policecar6swap_f1flag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar6_f1 policecar6swap_f1flag = 2 ENDIF ENDIF ENDIF ENDIF IF policecar6swap_f1flag = 2 IF IS_CHAR_DEAD cop13_f1 STOP_PLAYBACK_RECORDED_CAR policecar6_f1 policecar6swap_f1flag = 3 ENDIF ENDIF IF policecar6_f1flag = 1 IF NOT IS_CAR_DEAD policecar6_f1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR policecar6_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar6_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop12_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop13_f1 REMOVE_BLIP policecar6_f1blip policecar6_f1flag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar6_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop12_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop13_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar6_f1 REMOVE_BLIP policecar6_f1blip policecar6_f1flag = 2 ENDIF ENDIF //swap seat // IF policecar7swap_f1flag = 1 // IF NOT IS_CAR_DEAD policecar7_f1 // IF NOT IS_CHAR_DEAD cop14_f1 // ELSE // IF NOT IS_CHAR_DEAD cop15_f1 // IF IS_CHAR_IN_CAR cop15_f1 policecar7_f1 // GET_DRIVER_OF_CAR policecar7_f1 driverofcar_f1 // IF driverofcar_f1 = -1 // TASK_SHUFFLE_TO_NEXT_CAR_SEAT cop15_f1 policecar7_f1 // policecar7swap_f1flag = 2 // ENDIF // ENDIF // ELSE // STOP_PLAYBACK_RECORDED_CAR policecar7_f1 // policecar7swap_f1flag = 2 // ENDIF // ENDIF // ENDIF // ENDIF // IF policecar7swap_f1flag = 2 // IF IS_CHAR_DEAD cop15_f1 // STOP_PLAYBACK_RECORDED_CAR policecar7_f1 // policecar7swap_f1flag = 3 // ENDIF // ENDIF // // IF policecar7_f1flag = 1 // IF NOT IS_CAR_DEAD policecar7_f1 // IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR policecar7_f1 // MARK_CAR_AS_NO_LONGER_NEEDED policecar7_f1 // MARK_CHAR_AS_NO_LONGER_NEEDED cop14_f1 // MARK_CHAR_AS_NO_LONGER_NEEDED cop15_f1 // REMOVE_BLIP policecar7_f1blip // policecar7_f1flag = 2 // ENDIF // ELSE // STOP_PLAYBACK_RECORDED_CAR policecar7_f1 // MARK_CHAR_AS_NO_LONGER_NEEDED cop14_f1 // MARK_CHAR_AS_NO_LONGER_NEEDED cop15_f1 // MARK_CAR_AS_NO_LONGER_NEEDED policecar7_f1 // REMOVE_BLIP policecar7_f1blip // policecar7_f1flag = 2 // ENDIF // ENDIF //swap seat IF policecar8swap_f1flag = 1 IF NOT IS_CAR_DEAD policecar8_f1 IF NOT IS_CHAR_DEAD cop7_f1 ELSE IF NOT IS_CHAR_DEAD cop8_f1 IF IS_CHAR_IN_CAR cop8_f1 policecar8_f1 GET_DRIVER_OF_CAR policecar8_f1 driverofcar_f1 IF driverofcar_f1 = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT cop8_f1 policecar8_f1 policecar8swap_f1flag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar8_f1 policecar8swap_f1flag = 2 ENDIF ENDIF ENDIF ENDIF IF policecar8swap_f1flag = 2 IF IS_CHAR_DEAD cop8_f1 STOP_PLAYBACK_RECORDED_CAR policecar8_f1 policecar8swap_f1flag = 3 ENDIF ENDIF IF policecar8_f1flag = 1 IF NOT IS_CAR_DEAD policecar8_f1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR policecar8_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar8_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop7_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop8_f1 REMOVE_BLIP policecar8_f1blip IF policecar4_f1flag = 1 IF IS_CAR_DEAD policecar4_f1 REMOVE_BLIP policecar4_f1blip MARK_CHAR_AS_NO_LONGER_NEEDED cop6_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar8_f1 policecar4_f1flag = 2 ENDIF ENDIF policecar8_f1flag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR policecar8_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop7_f1 MARK_CHAR_AS_NO_LONGER_NEEDED cop8_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar8_f1 REMOVE_BLIP policecar8_f1blip IF policecar4_f1flag = 1 IF IS_CAR_DEAD policecar4_f1 REMOVE_BLIP policecar4_f1blip MARK_CHAR_AS_NO_LONGER_NEEDED cop6_f1 MARK_CAR_AS_NO_LONGER_NEEDED policecar8_f1 policecar4_f1flag = 2 ENDIF ENDIF policecar8_f1flag = 2 ENDIF ENDIF /////////////////////////////////////////////////// Second Biker jumping /////////////////////////////////////////////////// Second Biker jumping /////////////////////////////////////////////////// Second Biker jumping /////////////////////////////////////////////////// Second Biker jumping //keep him in the seated anim IF bikerjumper4_f1flag = 1 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD bikerjumper4_f1 IF IS_CHAR_PLAYING_ANIM bikerjumper4_f1 MD_BIKE_Jmp_BL GET_CHAR_ANIM_CURRENT_TIME bikerjumper4_f1 MD_BIKE_Jmp_BL animframebk_jmp IF animframebk_jmp = 0.0 SET_CHAR_ANIM_SPEED bikerjumper4_f1 MD_BIKE_Jmp_BL 0.0 bikerjumper4_f1flag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF //biker jumps IF bikerjumper4_f1flag = 3 IF TIMERA > 3200 //3400 IF NOT IS_CHAR_DEAD bikerjumper4_f1 TASK_PLAY_ANIM_NON_INTERRUPTABLE bikerjumper4_f1 MD_BIKE_Jmp_BL MD_CHASE 1.0 FALSE FALSE FALSE TRUE -1 SET_CHAR_ANIM_SPEED bikerjumper4_f1 MD_BIKE_Jmp_BL 1.0 actiontext_f1flag = 7 bikerjumper4_f1flag = 4 ENDIF ENDIF ENDIF //attach to the car IF bikerjumper4_f1flag = 4 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD bikerjumper4_f1 IF IS_CHAR_PLAYING_ANIM bikerjumper4_f1 MD_BIKE_Jmp_BL GET_CHAR_ANIM_CURRENT_TIME bikerjumper4_f1 MD_BIKE_Jmp_BL animframebk_jmp IF animframebk_jmp = 1.0 DETACH_CHAR_FROM_CAR bikerjumper4_f1 IF playdeathanim2_f1flag = 1 ATTACH_CHAR_TO_CAR bikerjumper4_f1 sweet_car -0.23 -4.0 0.3 FACING_BACK 360.0 WEAPONTYPE_UNARMED TASK_PLAY_ANIM bikerjumper4_f1 MD_BIKE_Lnd_Die_BL MD_CHASE 8.0 FALSE FALSE FALSE TRUE -1 bikerjumper4_f1flag = 100 ELSE TASK_PLAY_ANIM_NON_INTERRUPTABLE bikerjumper4_f1 MD_BIKE_Lnd_BL MD_CHASE 1000.0 FALSE FALSE FALSE TRUE -1 ATTACH_CHAR_TO_CAR bikerjumper4_f1 sweet_car -0.23 -4.0 0.3 FACING_FORWARD 360.0 WEAPONTYPE_UNARMED TIMERA = 0 bikerjumper4_f1flag = 5 ENDIF IF NOT IS_CAR_DEAD copbike4_f1 STOP_PLAYBACK_RECORDED_CAR copbike4_f1 SET_CAR_ROTATION_VELOCITY copbike4_f1 -2.0 3.0 0.2003 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //punch player IF bikerjumper4_f1flag = 5 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD bikerjumper4_f1 IF IS_CHAR_PLAYING_ANIM bikerjumper4_f1 MD_BIKE_Lnd_BL GET_CHAR_ANIM_CURRENT_TIME bikerjumper4_f1 MD_BIKE_Lnd_BL animframebk_jmp IF animframebk_jmp > 0.037 TASK_PLAY_ANIM_NON_INTERRUPTABLE bikerjumper4_f1 MD_BIKE_Punch MD_CHASE 8.0 TRUE FALSE FALSE FALSE -1 bikerjumper4_f1flag = 6 ENDIF ENDIF ENDIF ENDIF ENDIF //set peds heading when on bike IF bikerjumper4_f1flag > 0 IF bikerjumper4_f1flag < 4 IF NOT IS_CAR_DEAD copbike4_f1 IF NOT IS_CHAR_DEAD bikerjumper4_f1 GET_CAR_HEADING copbike4_f1 bikerjumper4_f1heading SET_CHAR_HEADING bikerjumper4_f1 bikerjumper4_f1heading ENDIF ENDIF ENDIF ENDIF //set peds heading when on bike IF bikerjumper4_f1flag = 4 IF NOT IS_CHAR_DEAD bikerjumper4_f1 IF IS_CHAR_PLAYING_ANIM bikerjumper4_f1 MD_BIKE_Jmp_BL GET_CHAR_ANIM_CURRENT_TIME bikerjumper4_f1 MD_BIKE_Jmp_BL animframebk_jmp IF animframebk_jmp > 0.66 IF NOT IS_CAR_DEAD sweet_car GET_CAR_HEADING sweet_car bikerjumper4_f1heading SET_CHAR_HEADING bikerjumper4_f1 bikerjumper4_f1heading ENDIF ELSE IF NOT IS_CAR_DEAD copbike4_f1 GET_CAR_HEADING copbike4_f1 bikerjumper4_f1heading SET_CHAR_HEADING bikerjumper4_f1 bikerjumper4_f1heading ENDIF ENDIF ENDIF ENDIF ENDIF //set peds heading when on bike IF bikerjumper4_f1flag > 4 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD bikerjumper4_f1 GET_CAR_HEADING sweet_car bikerjumper4_f1heading SET_CHAR_HEADING bikerjumper4_f1 bikerjumper4_f1heading ENDIF ENDIF ENDIF //camera bump IF NOT IS_CHAR_DEAD bikerjumper4_f1 IF IS_CHAR_PLAYING_ANIM bikerjumper4_f1 MD_BIKE_Punch GET_CHAR_ANIM_CURRENT_TIME bikerjumper4_f1 MD_BIKE_Punch animframebk_punch IF animframebk_punch > 0.2 IF bikerjumper4_f1flag = 6 DO_CAMERA_BUMP -2.2 1.7 DAMAGE_CHAR scplayer 10 TRUE bikerjumper4_f1flag = 7 ENDIF ELSE bikerjumper4_f1flag = 6 ENDIF ENDIF ENDIF //if is char dead IF NOT IS_CHAR_DEAD bikerjumper4_f1 GET_CHAR_HEALTH bikerjumper4_f1 bikerjumper4_f1health IF bikerjumper4_f1health < 901 SET_CHAR_PROOFS bikerjumper4_f1 TRUE TRUE TRUE TRUE TRUE playdeathanim2_f1flag = 1 ENDIF ENDIF //char killed before landing IF bikerjumper4_f1flag = 100 IF IS_CHAR_PLAYING_ANIM bikerjumper4_f1 MD_BIKE_Lnd_Die_BL GET_CHAR_ANIM_CURRENT_TIME bikerjumper4_f1 MD_BIKE_Lnd_Die_BL animframebk_jmp IF animframebk_jmp = 1.0 DETACH_CHAR_FROM_CAR bikerjumper4_f1 TASK_PLAY_ANIM_NON_INTERRUPTABLE bikerjumper4_f1 MD_BIKE_Lnd_Roll MD_CHASE 8.0 FALSE FALSE FALSE TRUE -1 bikerjumper4_f1flag = 101 ENDIF ENDIF ENDIF IF bikerjumper4_f1flag = 101 IF IS_CHAR_PLAYING_ANIM bikerjumper4_f1 MD_BIKE_Lnd_Roll GET_CHAR_ANIM_CURRENT_TIME bikerjumper4_f1 MD_BIKE_Lnd_Roll animframebk_jmp IF animframebk_jmp = 1.0 REMOVE_CHAR_ELEGANTLY bikerjumper4_f1 bikerjumper4_f1flag = 102 ENDIF ENDIF ENDIF //char killed by hanging onto car IF bikerjumper4_f1flag > 4 IF bikerjumper4_f1flag < 8 IF playdeathanim2_f1flag = 1 OR TIMERA > 12000 bikerjumper4_f1flag = 200 ENDIF ENDIF ENDIF //char killed before landing IF bikerjumper4_f1flag = 200 IF NOT IS_CHAR_DEAD bikerjumper4_f1 TASK_PLAY_ANIM_NON_INTERRUPTABLE bikerjumper4_f1 MD_BIKE_2_HANG MD_CHASE 8.0 FALSE FALSE FALSE TRUE -1 TIMERA = 0 bikerjumper4_f1flag = 201 ENDIF ENDIF IF bikerjumper4_f1flag = 201 IF NOT IS_CHAR_DEAD bikerjumper4_f1 IF IS_CHAR_PLAYING_ANIM bikerjumper4_f1 MD_BIKE_2_HANG GET_CHAR_ANIM_CURRENT_TIME bikerjumper4_f1 MD_BIKE_2_HANG animframebk_jmp IF animframebk_jmp = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE bikerjumper4_f1 MD_HANG_LOOP MD_CHASE 8.0 TRUE FALSE FALSE FALSE -1 bikerjumper4_f1flag = 202 ENDIF ENDIF ENDIF ENDIF IF bikerjumper4_f1flag= 202 IF NOT IS_CHAR_DEAD bikerjumper4_f1 IF IS_CHAR_PLAYING_ANIM bikerjumper4_f1 MD_BIKE_2_HANG SET_CHAR_PROOFS bikerjumper4_f1 FALSE FALSE FALSE FALSE FALSE CLEAR_CHAR_LAST_DAMAGE_ENTITY bikerjumper4_f1 bikerjumper4_f1flag= 203 ENDIF ENDIF ENDIF IF bikerjumper4_f1flag= 203 IF NOT IS_CHAR_DEAD bikerjumper4_f1 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR bikerjumper4_f1 scplayer OR TIMERA > 5000 DETACH_CHAR_FROM_CAR bikerjumper4_f1 TASK_PLAY_ANIM_NON_INTERRUPTABLE bikerjumper4_f1 MD_HANG_LND_ROLL MD_CHASE 8.0 FALSE FALSE FALSE TRUE -1 bikerjumper4_f1flag= 204 ENDIF ENDIF ENDIF IF bikerjumper4_f1flag = 204 IF NOT IS_CHAR_DEAD bikerjumper4_f1 IF IS_CHAR_PLAYING_ANIM bikerjumper4_f1 MD_HANG_LND_ROLL GET_CHAR_ANIM_CURRENT_TIME bikerjumper4_f1 MD_HANG_LND_ROLL animframebk_jmp IF animframebk_jmp = 1.0 DELETE_CHAR bikerjumper4_f1 bikerjumper4_f1flag = 205 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //ending IF helisetpiece_f1flag = 6 IF TIMERB > 3000 IF NOT IS_CAR_DEAD sweet_car DELETE_CAR extpoliceheli_f1 MARK_MODEL_AS_NO_LONGER_NEEDED COPCARLA MARK_MODEL_AS_NO_LONGER_NEEDED LAPD1 MARK_MODEL_AS_NO_LONGER_NEEDED LAPDM1 MARK_MODEL_AS_NO_LONGER_NEEDED COPBIKE MARK_MODEL_AS_NO_LONGER_NEEDED POLMAV MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED chopcop_arml MARK_MODEL_AS_NO_LONGER_NEEDED chopcop_armr MARK_MODEL_AS_NO_LONGER_NEEDED chopcop_legl MARK_MODEL_AS_NO_LONGER_NEEDED chopcop_legr MARK_MODEL_AS_NO_LONGER_NEEDED chopcop_head MARK_MODEL_AS_NO_LONGER_NEEDED chopcop_torso DELETE_OBJECT torso_f1 DELETE_OBJECT legr_f1 DELETE_OBJECT legl_f1 DELETE_OBJECT armr_f1 DELETE_OBJECT arml_f1 DELETE_OBJECT head_f1 DELETE_OBJECT fence_f1 DELETE_OBJECT fence2l_f1 DELETE_OBJECT fence3l_f1 DELETE_OBJECT fencel_f1 DELETE_OBJECT fence2l_f1 DELETE_OBJECT fence3l_f1 DELETE_CAR extpoliceheli_f1 KILL_FX_SYSTEM jetwashfx1_f1 KILL_FX_SYSTEM bloodfx1_f1 KILL_FX_SYSTEM bloodfx2_f1 KILL_FX_SYSTEM bloodfx3_f1 REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_AK47 MARK_MODEL_AS_NO_LONGER_NEEDED AK47 REMOVE_ANIMATION MD_CHASE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_MISSION_AUDIO 3 CLEAR_PRINTS REQUEST_CAR_RECORDING 351 REQUEST_CAR_RECORDING 382 REQUEST_CAR_RECORDING 383 REQUEST_CAR_RECORDING 384 REQUEST_MODEL petro REQUEST_MODEL PETROTR LOAD_SPECIAL_CHARACTER 1 SWEET LOAD_SPECIAL_CHARACTER 2 SMOKE LOAD_SPECIAL_CHARACTER 3 RYDER2 REQUEST_ANIMATION MD_END LOAD_MISSION_AUDIO 1 SOUND_FIN1_MU //Shit! That’s gonna be one hell of a story to tell when we passin’ the blunt! LOAD_MISSION_AUDIO 2 SOUND_FIN1_MV //Man, that was some serious shit! Woo! LOAD_MISSION_AUDIO 3 SOUND_CAR_SMASH_SIGN LOAD_ALL_MODELS_NOW SET_FIXED_CAMERA_POSITION 2177.3069 -1535.9014 17.7635 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2176.8547 -1535.1426 18.2324 JUMP_CUT WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_SPECIAL_CHARACTER_LOADED 2 OR NOT HAS_SPECIAL_CHARACTER_LOADED 3 OR NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED petro OR NOT HAS_MODEL_LOADED PETROTR OR NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 351 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 382 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 383 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 384 OR NOT HAS_ANIMATION_LOADED MD_END WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD sweet_car STOP_PLAYBACK_RECORDED_CAR sweet_car ENDIF CREATE_CAR PETRO 2078.002 -1524.3489 2.49 truck_f1 SET_CAR_HEADING truck_f1 254.103 SET_CAR_HEALTH truck_f1 5000 SET_CAR_PROOFS truck_f1 TRUE TRUE TRUE TRUE TRUE CREATE_CAR PETROTR 2070.05 -1522.059 3.668 trailer_f1 SET_CAR_HEADING trailer_f1 254.0 SET_CAR_HEALTH trailer_f1 5000 SET_CAR_PROOFS trailer_f1 TRUE TRUE TRUE TRUE TRUE CREATE_CAR GREENWOO 2060.05 -1520.059 3.668 car_f1 SET_CAR_HEALTH car_f1 5000 SET_CAR_PROOFS car_f1 TRUE TRUE TRUE TRUE TRUE CHANGE_CAR_COLOUR car_f1 CARCOLOUR_TEMPLECURTAINPURPLE CARCOLOUR_TEMPLECURTAINPURPLE SWITCH_PED_ROADS_OFF 2184.44 -1557.18 -5.481 2169.22 -1560.63 5.91 SET_CAR_DENSITY_MULTIPLIER 1.0 CLEAR_ONSCREEN_COUNTER carhealth_f1 TIMERB = 0 helisetpiece_f1flag = 7 ENDIF ENDIF ENDIF IF helisetpiece_f1flag > 6 IF breakposter_f1flag = 0 IF TIMERB > 1989 IF DOES_OBJECT_EXIST advert_f1 FREEZE_OBJECT_POSITION advert_f1 FALSE SET_OBJECT_COLLISION_DAMAGE_EFFECT advert_f1 TRUE BREAK_OBJECT advert_f1 TRUE PLAY_MISSION_AUDIO 3 //SOUND_CAR_SMASH_SIGN ENDIF breakposter_f1flag = 1 ENDIF ENDIF ENDIF IF helisetpiece_f1flag = 7 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CAR_DEAD truck_f1 IF NOT IS_CAR_DEAD trailer_f1 START_PLAYBACK_RECORDED_CAR sweet_car 351 START_PLAYBACK_RECORDED_CAR truck_f1 382 START_PLAYBACK_RECORDED_CAR trailer_f1 383 IF NOT IS_CAR_DEAD car_f1 START_PLAYBACK_RECORDED_CAR car_f1 384 ENDIF helisetpiece_f1flag = 8 ENDIF ENDIF ENDIF ENDIF IF helisetpiece_f1flag = 8 IF NOT IS_CAR_DEAD sweet_car IF LOCATE_CAR_2D sweet_car 2170.2 -1518.04 5.0 5.0 FALSE SET_TIME_SCALE 0.3 POINT_CAMERA_AT_CAR sweet_car FIXED INTERPOLATION OPEN_CAR_DOOR sweet_car FRONT_LEFT_DOOR OPEN_CAR_DOOR sweet_car REAR_LEFT_DOOR OPEN_CAR_DOOR sweet_car REAR_RIGHT_DOOR OPEN_CAR_DOOR sweet_car BONNET TIMERA = 0 helisetpiece_f1flag = 9 ENDIF ENDIF ENDIF IF helisetpiece_f1flag = 9 IF TIMERA > 500 IF NOT IS_CAR_DEAD sweet_car // POP_CAR_PANEL sweet_car FRONT_RIGHT_PANEL TRUE POP_CAR_PANEL sweet_car REAR_BUMPER TRUE SET_CAR_PROOFS sweet_car TRUE TRUE TRUE TRUE TRUE IF NOT IS_CAR_DEAD trailer_f1 SET_CAR_PROOFS trailer_f1 TRUE TRUE TRUE TRUE TRUE ENDIF IF NOT IS_CAR_DEAD truck_f1 SET_CAR_PROOFS truck_f1 TRUE TRUE TRUE TRUE TRUE ENDIF TIMERA = 0 helisetpiece_f1flag = 10 ENDIF ENDIF ENDIF IF helisetpiece_f1flag = 10 IF NOT IS_CAR_DEAD sweet_car IF LOCATE_CAR_3D sweet_car 2169.24 -1553.91 2.5 10.0 10.0 6.0 FALSE OR TIMERA > 4000 SET_CAR_HEALTH sweet_car 300 SET_TIME_SCALE 0.7 POP_CAR_PANEL sweet_car FRONT_BUMPER TRUE SET_TIME_OF_DAY 07 15 SET_FIXED_CAMERA_POSITION 2204.8037 -1568.2760 1.9452 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2203.8606 -1567.9508 1.8744 JUMP_CUT SET_NEAR_CLIP 0.1 CREATE_CHAR PEDTYPE_SPECIAL SPECIAL01 2168.479 -1506.067 24.0 sweet SET_CHAR_HEADING sweet 135.0 SET_CHAR_DECISION_MAKER sweet motel_DM SET_CHAR_PROOFS sweet TRUE TRUE TRUE TRUE TRUE CREATE_CHAR PEDTYPE_SPECIAL SPECIAL02 2168.992 -1508.601 24.0 big_smoke SET_CHAR_HEADING big_smoke 45.0 SET_CHAR_DECISION_MAKER big_smoke motel_DM SET_CHAR_PROOFS big_smoke TRUE TRUE TRUE TRUE TRUE CREATE_CHAR PEDTYPE_SPECIAL SPECIAL03 2167.054 -1507.7 24.0 ryder SET_CHAR_HEADING ryder 290.0 SET_CHAR_DECISION_MAKER ryder motel_DM SET_CHAR_PROOFS ryder TRUE TRUE TRUE TRUE TRUE SET_CHAR_COORDINATES scplayer 2166.952 -1506.237 24.0 SET_CHAR_HEADING scplayer 225.0 TIMERA = 0 helisetpiece_f1flag = 11 ENDIF ENDIF ENDIF IF helisetpiece_f1flag = 11 IF NOT IS_CAR_DEAD trailer_f1 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CAR_DEAD truck_f1 IF IS_CAR_TOUCHING_CAR sweet_car truck_f1 OR TIMERB > 4350 // IF NOT IS_CAR_DEAD trailer_f1 // SET_CAR_PROOFS trailer_f1 FALSE FALSE FALSE FALSE FALSE // ENDIF // IF NOT IS_CAR_DEAD truck_f1 // SET_CAR_PROOFS truck_f1 FALSE FALSE FALSE FALSE FALSE // ENDIF // IF NOT IS_CAR_DEAD sweet_car // SET_CAR_PROOFS sweet_car FALSE FALSE FALSE FALSE FALSE // ENDIF GET_CAR_COORDINATES sweet_car player_x player_y player_z ADD_EXPLOSION player_x player_y player_z EXPLOSION_GRENADE EXPLODE_CAR sweet_car EXPLODE_CAR trailer_f1 SET_CAR_PROOFS truck_f1 TRUE TRUE TRUE TRUE TRUE ADD_EXPLOSION 2180.27 -1564.66 3.23 EXPLOSION_CAR ADD_EXPLOSION 2182.25 -1565.23 2.88 EXPLOSION_GRENADE ADD_EXPLOSION 2166.34 -1559.97 6.28 EXPLOSION_ROCKET ADD_EXPLOSION 2173.52 -1560.03 5.0 EXPLOSION_CAR ADD_EXPLOSION 2182.65 -1565.14 4.01 EXPLOSION_ROCKET ADD_EXPLOSION 2183.8 -1564.48 4.05 EXPLOSION_GRENADE TIMERA = 0 helisetpiece_f1flag = 12 ENDIF ENDIF ENDIF ENDIF ENDIF IF helisetpiece_f1flag = 12 IF TIMERA > 250 ADD_EXPLOSION 2187.94 -1562.73 2.85 EXPLOSION_GRENADE ADD_EXPLOSION 2172.99 -1561.51 4.88 EXPLOSION_GRENADE ADD_EXPLOSION 2172.9 -1561.64 2.7 EXPLOSION_CAR helisetpiece_f1flag = 13 ENDIF ENDIF IF helisetpiece_f1flag = 13 IF TIMERA > 750 START_SCRIPT_FIRE 2180.27 -1564.66 1.93 1 3 fire4_f1 START_SCRIPT_FIRE 2182.25 -1565.23 1.88 1 3 fire5_f1 START_SCRIPT_FIRE 2187.94 -1562.73 1.36 1 3 fire6_f1 START_SCRIPT_FIRE 2204.8037 -1568.4760 1.95 1 1 fire_f1 START_SCRIPT_FIRE 2201.11 -1565.77 1.36 1 1 fire2_f1 START_SCRIPT_FIRE 2202.82 -1565.01 1.35 1 3 fire3_f1 ADD_EXPLOSION 2175.12 -1562.63 5.93 EXPLOSION_CAR ADD_EXPLOSION 2179.24 -1563.66 6.42 EXPLOSION_GRENADE ADD_EXPLOSION 2170.39 -1560.61 5.91 EXPLOSION_CAR ADD_EXPLOSION 2187.94 -1562.73 2.85 EXPLOSION_CAR ADD_EXPLOSION 2180.27 -1564.66 3.23 EXPLOSION_CAR ADD_EXPLOSION 2172.9 -1561.64 2.7 EXPLOSION_CAR ADD_EXPLOSION 2171.73 -1562.22 5.92 EXPLOSION_CAR ADD_EXPLOSION 2179.3 -1563.32 6.12 EXPLOSION_ROCKET ADD_EXPLOSION 2177.35 -1562.66 5.73 EXPLOSION_GRENADE ADD_EXPLOSION 2174.04 -1562.21 6.56 EXPLOSION_GRENADE ADD_EXPLOSION 2178.27 -1564.89 6.58 EXPLOSION_ROCKET ADD_EXPLOSION 2177.53 -1564.16 6.96 EXPLOSION_CAR helisetpiece_f1flag = 14 ENDIF ENDIF IF helisetpiece_f1flag = 14 IF TIMERA > 1250 ADD_EXPLOSION 2166.34 -1559.97 6.28 EXPLOSION_ROCKET ADD_EXPLOSION 2173.52 -1560.03 5.0 EXPLOSION_CAR ADD_EXPLOSION 2182.65 -1565.14 4.01 EXPLOSION_ROCKET ADD_EXPLOSION 2183.8 -1564.48 4.05 EXPLOSION_GRENADE helisetpiece_f1flag = 15 ENDIF ENDIF IF helisetpiece_f1flag = 15 IF TIMERA > 1750 ADD_EXPLOSION 2175.12 -1562.63 5.93 EXPLOSION_CAR ADD_EXPLOSION 2179.24 -1563.66 6.42 EXPLOSION_GRENADE ADD_EXPLOSION 2170.39 -1560.61 5.91 EXPLOSION_CAR IF NOT IS_CAR_DEAD trailer_f1 SET_CAR_PROOFS trailer_f1 FALSE FALSE FALSE FALSE FALSE EXPLODE_CAR trailer_f1 ENDIF IF NOT IS_CAR_DEAD truck_f1 SET_CAR_PROOFS truck_f1 FALSE FALSE FALSE FALSE FALSE STOP_PLAYBACK_RECORDED_CAR truck_f1 EXPLODE_CAR truck_f1 ENDIF IF NOT IS_CAR_DEAD sweet_car SET_CAR_PROOFS sweet_car FALSE FALSE FALSE FALSE FALSE STOP_PLAYBACK_RECORDED_CAR sweet_car SET_CAR_HEALTH sweet_car 100 EXPLODE_CAR sweet_car ENDIF ADD_EXPLOSION 2187.94 -1562.73 2.85 EXPLOSION_CAR ADD_EXPLOSION 2180.27 -1564.66 3.23 EXPLOSION_CAR ADD_EXPLOSION 2172.9 -1561.64 2.7 EXPLOSION_CAR helisetpiece_f1flag = 16 ENDIF ENDIF //imran IF helisetpiece_f1flag = 16 IF TIMERA > 4500 START_SCRIPT_FIRE 2201.11 -1565.77 1.36 1 1 fire2_f1 REMOVE_ANIMATION MD_CHASE MARK_MODEL_AS_NO_LONGER_NEEDED petro MARK_MODEL_AS_NO_LONGER_NEEDED PETROTR MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO MARK_MODEL_AS_NO_LONGER_NEEDED POLMAV SET_TIME_SCALE 1.0 // DO_FADE 250 FADE_OUT // // WHILE GET_FADING_STATUS // WAIT 0 // ENDWHILE IF NOT IS_CHAR_DEAD sweet TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet END_SC1_SWE MD_END 1000.0 FALSE FALSE FALSE TRUE -1 ENDIF IF NOT IS_CHAR_DEAD ryder TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder END_SC1_RYD MD_END 1000.0 FALSE FALSE FALSE TRUE -1 ENDIF TASK_PLAY_ANIM scplayer END_SC1_PLY MD_END 1000.0 FALSE FALSE FALSE TRUE -1 IF NOT IS_CHAR_DEAD big_smoke TASK_PLAY_ANIM big_smoke END_SC1_SMO MD_END 1000.0 FALSE FALSE FALSE TRUE -1 START_CHAR_FACIAL_TALK big_smoke 5000 ENDIF WAIT 100 SET_FIXED_CAMERA_POSITION 2171.5188 -1521.4374 23.7949 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2171.2869 -1520.4653 23.8322 JUMP_CUT PLAY_MISSION_AUDIO 1 //Shit! That’s gonna be one hell of a story to tell when we passin’ the blunt! PRINT_NOW FIN1_MU 5000 1 DELETE_CAR car_f1 STOP_PLAYBACK_RECORDED_CAR trailer_f1 STOP_PLAYBACK_RECORDED_CAR car_f1 DELETE_CAR trailer_f1 DELETE_CAR sweet_car DELETE_CAR truck_f1 DELETE_CAR extpoliceheli_f1 // DO_FADE 250 FADE_IN finalcut_f1flag = 1 helisetpiece_f1flag = 17 ENDIF ENDIF IF helisetpiece_f1flag > 16 IF finalcut_f1flag = 1 IF HAS_MISSION_AUDIO_FINISHED 1 IF NOT IS_CHAR_DEAD big_smoke SET_FIXED_CAMERA_POSITION 2171.5188 -1521.4374 23.7949 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2171.2869 -1520.4653 23.8322 JUMP_CUT CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 STOP_CHAR_FACIAL_TALK big_smoke LOAD_MISSION_AUDIO 1 SOUND_FIN1_MW //Fuck this! We gotta get outta here! PLAY_MISSION_AUDIO 2 //Man, that was some serious shit! Woo! PRINT_NOW FIN1_MV 4000 1 IF NOT IS_CHAR_DEAD sweet START_CHAR_FACIAL_TALK sweet 5000 ENDIF finalcut_f1flag = 2 ENDIF ENDIF ENDIF ENDIF IF finalcut_f1flag = 2 IF HAS_MISSION_AUDIO_FINISHED 2 IF HAS_MISSION_AUDIO_LOADED 1 IF NOT IS_CHAR_DEAD ryder IF NOT IS_CHAR_DEAD sweet CLEAR_PRINTS STOP_CHAR_FACIAL_TALK sweet PLAY_MISSION_AUDIO 1 //Fuck this! We gotta get outta here! PRINT_NOW FIN1_MW 5000 1 START_CHAR_FACIAL_TALK ryder 5000 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_FIN1_MX //Ryder’s right, everybody split up – we’ll meet up later. finalcut_f1flag = 3 ENDIF ENDIF ENDIF ENDIF ENDIF IF finalcut_f1flag = 3 IF HAS_MISSION_AUDIO_LOADED 2 IF HAS_MISSION_AUDIO_FINISHED 1 IF NOT IS_CHAR_DEAD ryder IF NOT IS_CHAR_DEAD sweet STOP_CHAR_FACIAL_TALK ryder START_CHAR_FACIAL_TALK sweet 5000 PLAY_MISSION_AUDIO 2 //Ryder’s right, everybody split up – we’ll meet up later. PRINT_NOW FIN1_MX 5000 1 finalcut_f1flag = 4 ENDIF ENDIF ENDIF ENDIF ENDIF IF finalcut_f1flag = 4 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_PRINTS IF NOT IS_CHAR_DEAD sweet STOP_CHAR_FACIAL_TALK sweet ENDIF finalcut_f1flag = 5 ENDIF ENDIF IF helisetpiece_f1flag = 17 IF NOT IS_CHAR_DEAD sweet IF NOT IS_CHAR_DEAD big_smoke IF NOT IS_CHAR_DEAD ryder IF IS_CHAR_PLAYING_ANIM big_smoke END_SC1_SMO GET_CHAR_ANIM_CURRENT_TIME big_smoke END_SC1_SMO animstate_f1 IF animstate_f1 = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet END_SC2_SWE MD_END 1000.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE big_smoke END_SC2_SMO MD_END 1000.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE ryder END_SC2_RYD MD_END 1000.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer END_SC2_PLY MD_END 1000.0 FALSE FALSE FALSE FALSE -1 SET_FIXED_CAMERA_POSITION 2168.1172 -1510.1654 24.3268 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2168.1240 -1509.1660 24.2940 JUMP_CUT helisetpiece_f1flag = 18 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF helisetpiece_f1flag = 18 IF NOT IS_CHAR_DEAD big_smoke IF finalcut_f1flag = 5 SET_FIXED_CAMERA_POSITION 2175.2705 -1537.7728 24.5856 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2175.0784 -1536.7964 24.6842 JUMP_CUT TASK_GO_STRAIGHT_TO_COORD big_smoke 2172.19 -1498.48 23.55 PEDMOVE_WALK -1 SET_FOLLOW_NODE_THRESHOLD_DISTANCE big_smoke 100.0 WAIT 150 IF NOT IS_CHAR_DEAD sweet TASK_GO_STRAIGHT_TO_COORD sweet 2170.77 -1492.05 23.65 PEDMOVE_WALK -1 SET_FOLLOW_NODE_THRESHOLD_DISTANCE sweet 100.0 ENDIF WAIT 100 IF NOT IS_CHAR_DEAD ryder TASK_GO_STRAIGHT_TO_COORD ryder 2163.65 -1506.92 23.01 PEDMOVE_WALK -1 SET_FOLLOW_NODE_THRESHOLD_DISTANCE ryder 100.0 ENDIF DO_FADE 4000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DELETE_CAR extpoliceheli_f1 helisetpiece_f1flag = 19 ENDIF ENDIF ENDIF IF helisetpiece_f1flag = 19 DELETE_CHAR big_smoke DELETE_CHAR ryder DELETE_CHAR sweet CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 2170.935 -1500.675 22.9 SET_CHAR_HEADING scplayer 355.56 SET_CHAR_COORDINATES scplayer 2170.596 -1515.468 22.89//2170.935 -1500.675 22.9 SET_CHAR_HEADING scplayer 356.495//355.56 RESTORE_CAMERA_JUMPCUT SET_CAMERA_IN_FRONT_OF_PLAYER // SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF DO_FADE 2000 FADE_IN GOTO mission_drugs4_passed helisetpiece_f1flag = 20 ENDIF GOTO moteldeal_mainloop load_audio_f1: IF handlingaudio_f1flag = 0 LOAD_MISSION_AUDIO 1 audio_label_f1 $text_label_f1 = $input_text_f1 handlingaudio_f1flag = 1 ENDIF RETURN process_audio_f1: IF handlingaudio_f1flag = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW $text_label_f1 4000 1 //Dummy message" /* //Why are these being cleared before the player can read them? CLEAR_THIS_PRINT FIN1_BD // Get some suppressing fire in there! CLEAR_THIS_PRINT FIN1_CK // Unit down, repeat, unit down! CLEAR_THIS_PRINT FIN1_BE // imme some fucking covering fire! CLEAR_THIS_PRINT FIN1_BY // This is Buzzard 1, we are taking ground fire! CLEAR_THIS_PRINT FIN1_CB // Four bangers in blue 4door heading back into South Central. CLEAR_THIS_PRINT FIN1_BK // Surprise, homeboy! CLEAR_THIS_PRINT FIN1_BL // Heads up, brother! */ IF attachaudio_f1flag = 1 IF NOT IS_CHAR_DEAD woundedgrove1_f1 ATTACH_MISSION_AUDIO_TO_CHAR 1 woundedgrove1_f1 attachaudio_f1flag = 2 ENDIF ENDIF PLAY_MISSION_AUDIO 1 handlingaudio_f1flag = 2 ENDIF ENDIF IF handlingaudio_f1flag = 2 IF HAS_MISSION_AUDIO_FINISHED 1 progressaudio_f1flag++ CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS handlingaudio_f1flag = 0 ENDIF ENDIF RETURN shootatcoords_f1label: OPEN_SEQUENCE_TASK shootatcoords_f1seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_TOGGLE_DUCK -1 TRUE TASK_SHOOT_AT_COORD -1 enemyx_f1 enemyy_f1 enemyz_f1 15000 SET_SEQUENCE_TO_REPEAT shootatcoords_f1seq 1 CLOSE_SEQUENCE_TASK shootatcoords_f1seq PERFORM_SEQUENCE_TASK enemy_f1 shootatcoords_f1seq CLEAR_SEQUENCE_TASK shootatcoords_f1seq RETURN runstay_f1label: OPEN_SEQUENCE_TASK runstay_f1seq TASK_GO_STRAIGHT_TO_COORD -1 enemyx_f1 enemyy_f1 enemyz_f1 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE //TASK_KILL_CHAR_ON_FOOT -1 enemytarget_f1 TASK_TOGGLE_DUCK -1 TRUE TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 enemytarget_f1 DUCK_RANDOMLY 5000 80 CLOSE_SEQUENCE_TASK runstay_f1seq PERFORM_SEQUENCE_TASK enemy_f1 runstay_f1seq CLEAR_SEQUENCE_TASK runstay_f1seq RETURN stayshoot_f1label: OPEN_SEQUENCE_TASK stayshoot_f1seq TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE //TASK_KILL_CHAR_ON_FOOT -1 enemytarget_f1 TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 enemytarget_f1 DUCK_WHEN_PLAYER_SHOOTING 5000 50 CLOSE_SEQUENCE_TASK stayshoot_f1seq PERFORM_SEQUENCE_TASK enemy_f1 stayshoot_f1seq CLEAR_SEQUENCE_TASK stayshoot_f1seq RETURN stayshootnoduck_f1label: OPEN_SEQUENCE_TASK stayshootnoduck_f1seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 enemytarget_f1 CLOSE_SEQUENCE_TASK stayshootnoduck_f1seq PERFORM_SEQUENCE_TASK enemy_f1 stayshootnoduck_f1seq CLEAR_SEQUENCE_TASK stayshootnoduck_f1seq RETURN stay2shoot_f1label: OPEN_SEQUENCE_TASK stay2shoot_f1seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 enemytarget_f1 TASK_KILL_CHAR_ON_FOOT -1 enemytarget2_f1 //TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 enemytarget2_f1 DUCK_RANDOMLY 1500 90 CLOSE_SEQUENCE_TASK stay2shoot_f1seq PERFORM_SEQUENCE_TASK enemy_f1 stay2shoot_f1seq CLEAR_SEQUENCE_TASK stay2shoot_f1seq RETURN rolloutr_f1label: OPEN_SEQUENCE_TASK rolloutr_f1seq TASK_TOGGLE_DUCK -1 TRUE TASK_PLAY_ANIM -1 Crouch_Roll_R PED 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer //TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK rolloutr_f1seq PERFORM_SEQUENCE_TASK enemy_f1 rolloutr_f1seq CLEAR_SEQUENCE_TASK rolloutr_f1seq RETURN rolloutl_f1label: OPEN_SEQUENCE_TASK rolloutl_f1seq TASK_TOGGLE_DUCK -1 TRUE TASK_PLAY_ANIM -1 Crouch_Roll_L PED 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE //TASK_KILL_CHAR_ON_FOOT -1 scplayer TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK rolloutl_f1seq PERFORM_SEQUENCE_TASK enemy_f1 rolloutl_f1seq CLEAR_SEQUENCE_TASK rolloutl_f1seq RETURN peekright_f1label: OPEN_SEQUENCE_TASK peekright_f1seq TASK_PLAY_ANIM -1 swt_wllpk_R SWAT 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 swt_wllshoot_in_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE IF coordshoot_f1flag = 0 TASK_KILL_CHAR_ON_FOOT_TIMED -1 enemytarget_f1 1500 ELSE TASK_SHOOT_AT_COORD -1 enemyx_f1 enemyy_f1 enemyz_f1 1500 ENDIF TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_PLAY_ANIM -1 swt_wllshoot_out_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM -1 swt_wllpk_R_back SWAT 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT peekright_f1seq 1 CLOSE_SEQUENCE_TASK peekright_f1seq PERFORM_SEQUENCE_TASK enemy_f1 peekright_f1seq CLEAR_SEQUENCE_TASK peekright_f1seq RETURN peekleft_f1label: OPEN_SEQUENCE_TASK peekleft_f1seq TASK_PLAY_ANIM -1 swt_wllpk_L SWAT 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 swt_wllshoot_in_L SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer 1500 TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_PLAY_ANIM -1 swt_wllshoot_out_L SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM -1 swt_wllpk_L_back SWAT 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT peekleft_f1seq 1 CLOSE_SEQUENCE_TASK peekleft_f1seq PERFORM_SEQUENCE_TASK enemy_f1 peekleft_f1seq CLEAR_SEQUENCE_TASK peekleft_f1seq RETURN // **************************************** Mission drugs4 failed ************************ mission_drugs4_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" DELETE_OBJECT advert_f1 CREATE_OBJECT_NO_OFFSET md_poster 2167.82 -1518.193 20.237 advert_f1 SET_OBJECT_HEADING advert_f1 0.0 DONT_REMOVE_OBJECT advert_f1 RETURN // **************************************** mission drugs4 passed ************************ mission_drugs4_passed: REGISTER_MISSION_PASSED ( LA1FIN1 ) SET_INT_STAT PASSED_LAFIN1 1 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 15 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 15//amount of respect PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL player1 PLAYER_MADE_PROGRESS 1 flag_la1fin1_mission_counter ++ RETURN // ********************************** mission cleanup ************************************** mission_cleanup_drugs4: DISPLAY_RADAR 3 // PATHING ON flag_player_on_mission = 0 //counters CLEAR_ONSCREEN_COUNTER carhealth_f1 SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 //roads on SWITCH_ROADS_ON 2180.18 -1130.28 21.2 2276.82 -1151.26 28.0 SWITCH_PED_ROADS_ON 2180.18 -1130.28 21.2 2276.82 -1151.26 28.0 SWITCH_PED_ROADS_ON 2184.44 -1557.18 -5.481 2169.22 -1560.63 5.91 ////////////////////////////////////////////// interior section //models UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 UNLOAD_SPECIAL_CHARACTER 3 REMOVE_CHAR_ELEGANTLY sweet REMOVE_CHAR_ELEGANTLY ryder REMOVE_CHAR_ELEGANTLY big_smoke MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO MARK_MODEL_AS_NO_LONGER_NEEDED FAM3 MARK_MODEL_AS_NO_LONGER_NEEDED FAM2 MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED SWAT MARK_MODEL_AS_NO_LONGER_NEEDED POLMAV MARK_MODEL_AS_NO_LONGER_NEEDED ENFORCER MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN REMOVE_ANIMATION SWAT MARK_MODEL_AS_NO_LONGER_NEEDED BFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED imy_skylight MARK_MODEL_AS_NO_LONGER_NEEDED kmb_trolley REMOVE_ANIMATION KISSING REMOVE_ANIMATION GANGS //blips REMOVE_BLIP heli_f1blip REMOVE_BLIP sweet_f1blip REMOVE_BLIP motel_f1blip CLEAR_ONSCREEN_COUNTER sweethealth_f1 //particle fx KILL_FX_SYSTEM breachfx_f1 //pickups REMOVE_PICKUP armour1_f1 //route FLUSH_ROUTE ////////////////////////////////////////////// rails section MARK_MODEL_AS_NO_LONGER_NEEDED md_poster MARK_MODEL_AS_NO_LONGER_NEEDED COPCARLA MARK_MODEL_AS_NO_LONGER_NEEDED LAPD1 MARK_MODEL_AS_NO_LONGER_NEEDED LAPDM1 MARK_MODEL_AS_NO_LONGER_NEEDED COPBIKE MARK_MODEL_AS_NO_LONGER_NEEDED AK47 MARK_MODEL_AS_NO_LONGER_NEEDED STREAK REMOVE_ANIMATION GANGS MARK_MODEL_AS_NO_LONGER_NEEDED DYN_SCAFFOLD_3b MARK_MODEL_AS_NO_LONGER_NEEDED DYN_SCAFFOLD_4b REMOVE_ANIMATION MD_CHASE MARK_MODEL_AS_NO_LONGER_NEEDED munch_donut MARK_MODEL_AS_NO_LONGER_NEEDED chopcop_arml MARK_MODEL_AS_NO_LONGER_NEEDED chopcop_armr MARK_MODEL_AS_NO_LONGER_NEEDED chopcop_legl MARK_MODEL_AS_NO_LONGER_NEEDED chopcop_legr MARK_MODEL_AS_NO_LONGER_NEEDED chopcop_head MARK_MODEL_AS_NO_LONGER_NEEDED chopcop_torso MARK_MODEL_AS_NO_LONGER_NEEDED Wd_Fence_Anim REMOVE_ANIMATION CAR_CHAT REMOVE_ANIMATION MD_END MARK_MODEL_AS_NO_LONGER_NEEDED petro MARK_MODEL_AS_NO_LONGER_NEEDED PETROTR SET_MAX_WANTED_LEVEL 4 /////// WANTED LEVEL ASK FILSHIE ABOUT WHAT IT SHOULD BE SET BACK TO AT THIS POINT DELETE_CAR extpoliceheli_f1 //blips REMOVE_BLIP policecar1_f1blip REMOVE_BLIP policecar2_f1blip REMOVE_BLIP policecar3_f1blip REMOVE_BLIP policecar4_f1blip REMOVE_BLIP policecar5_f1blip REMOVE_BLIP policecar6_f1blip REMOVE_BLIP policecar7_f1blip REMOVE_BLIP policecar8_f1blip //detach IF IS_PLAYER_PLAYING PLAYER1 SET_PLAYER_DUCK_BUTTON PLAYER1 TRUE SET_PLAYER_FIRE_BUTTON PLAYER1 TRUE SHUT_CHAR_UP scplayer FALSE //SET_PLAYER_FAST_RELOAD PLAYER1 FALSE //Interior ENDIF //detach bad guys IF NOT IS_CHAR_DEAD bikerjumper3_f1 REMOVE_CHAR_ELEGANTLY bikerjumper3_f1 ENDIF IF NOT IS_CHAR_DEAD bikerjumper4_f1 REMOVE_CHAR_ELEGANTLY bikerjumper4_f1 ENDIF DETACH_CHAR_FROM_CAR scplayer SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE REMOVE_ALL_SCRIPT_FIRES //fx KILL_FX_SYSTEM jetwashfx1_f1 KILL_FX_SYSTEM bloodfx1_f1 KILL_FX_SYSTEM bloodfx2_f1 KILL_FX_SYSTEM bloodfx3_f1 //entry exit SWITCH_ENTRY_EXIT motel1 TRUE //wanted multipliers SET_WANTED_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 SWITCH_EMERGENCY_SERVICES ON RELEASE_WEATHER GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // *************************************** LA1FIN2 ***************************************** // ************************************** Green Sabre ************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME la1fin2 // Mission start stuff GOSUB mission_start_la1fin2 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_la1fin2_failed ENDIF GOSUB mission_cleanup_la1fin2 MISSION_END { // **************************************** Mission Start ********************************** // **************************************** Declare variables **************************************** LVAR_INT lf2_mission_fail LF2_sweet_alive // chars LVAR_INT lf2_sweet l1f2_driver l1f2_pass1 l1f2_pass2 //cars LVAR_INT l1f2_meet_car lf2_car_id[5] l1f2_flatpony[2] l1f2_driveby_car[2] //blips LVAR_INT l1f2_blip lf2_red_blip[6] //flags LVAR_INT lf2_blue_script_act[5] lf2_red_script_act[6] lf2_player_entered_car[5] LVAR_INT lf2_car_action[2] lf2_red_script_event[6] l1f2_health LVAR_INT lf2_leave_car_check lf2_leave_car_time lf2_alive_for_firt_time //general LVAR_INT lv1 lf2_char_id lf2_players_weapon LVAR_INT lf2_dead_red_counted[6] LVAR_INT lf2_leave_pony l1f2_car_action_time[2] l1f2_car_Action[2] LVAR_INT lf2_dead_reds lf2_flag lf2_scene_flag //time check LVAR_INT lf2_time_check //decision makers LVAR_INT lf2_empty_dec lf2_driveby_dec //sequences LVAR_INT lf2_seq LVAR_INT lf2_car_health[5] LVAR_FLOAT l1f2_cosheading l1f2_sinheading IF lf2_flag = 99 CREATE_CHAR PEDTYPE_GANG_GROVE SPECIAL01 2752.3408 -1948.8669 16.3125 lf2_sweet CREATE_CHAR PEDTYPE_GANG_GROVE SPECIAL01 2752.3408 -1948.8669 16.3125 lf2_blue[0] CREATE_CHAR PEDTYPE_GANG_GROVE SPECIAL01 2752.3408 -1948.8669 16.3125 lf2_red[0] CREATE_CAR BRAVURA 1650.1147 -1055.2426 22.8984 l1f2_grovecar[0] CREATE_CAR SABRE 1643.9830 -1069.0099 22.8984 l1f2_flatcar[0] CREATE_CAR SABRE 1643.9830 -1069.0099 22.8984 lf2_CarID CREATE_CAR SABRE 1643.9830 -1069.0099 22.8984 lf2_Car_ID[0] COPY_CHAR_DECISION_MAKER DM_PED_RANDOM_TOUGH lf2_dec COPY_CHAR_DECISION_MAKER DM_PED_RANDOM_TOUGH lf2_reddec ADD_BLIP_FOR_CHAR lf2_sweet lf2_red_blip[0] ADD_BLIP_FOR_COORD 1648.7145 -1050.0944 22.9141 l1f2_blip CREATE_CAR SABRE 1643.9830 -1069.0099 22.8984 copcar_bust_cut[0] CREATE_CAR COPCARLA 0.0 0.0 0.0 copcar_bust_cut[2] CREATE_CHAR_INSIDE_CAR copcar_bust_cut[0] PEDTYPE_CIVMALE LAPD1 cop_bust_cut[0] ENDIF mission_start_la1fin2: // VIEW_INTEGER_VARIABLE lf2_car_health[0] lf2_car_health[0] // VIEW_INTEGER_VARIABLE lf2_car_health[1] lf2_car_health[1] // VIEW_INTEGER_VARIABLE lf2_car_health[2] lf2_car_health[2] // VIEW_INTEGER_VARIABLE lf2_car_health[3] lf2_car_health[3] // VIEW_INTEGER_VARIABLE lf2_dead_reds lf2_dead_reds // VIEW_INTEGER_VARIABLE lf2_flag lf2_flag // VIEW_INTEGER_VARIABLE lf2_scene_flag lf2_scene_flag REGISTER_MISSION_GIVEN flag_player_on_mission = 1 lf2_alive_for_firt_time = 1 force_audio = 1 SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 // DO_FADE 1000 FADE_IN // REQUEST_MODEL SENTINEL // WHILE NOT HAS_MODEL_LOADED SENTINEL // WAIT 0 // ENDWHILE // CREATE_CAR SENTINEL 2516.0 -1675.0 14.0 sw5_playerscar // WARP_CHAR_INTO_CAR scplayer sw5_playerscar lf2_mission_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_H SAVE_INT_TO_DEBUG_FILE lf2_flag ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_la1fin2_passed ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_F // SET_CHAR_COORDINATES scplayer 1624.5371 -1863.4377 12.5549 SET_CHAR_COORDINATES scplayer 1650.4561 -1039.6135 22.8984 lf2_flag = 4 lf2_scene_flag = 0 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_G lf2_flag = 7 lf2_i = 0 WHILE lf2_i < 6 IF NOT IS_CHAR_DEAD lf2_red[lf2_i] TASK_DIE lf2_red[lf2_i] ENDIF lf2_i ++ ENDWHILE IF NOT IS_CAR_DEAD copcar_bust_cut[0] DELETE_CAR copcar_bust_cut[0] ENDIF IF NOT IS_CAR_DEAD copcar_bust_cut[1] DELETE_CAR copcar_bust_cut[1] ENDIF IF NOT IS_CAR_DEAD copcar_bust_cut[2] DELETE_CAR copcar_bust_cut[2] ENDIF SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_D SET_CHAR_COORDINATES scplayer 1624.5371 -1863.4377 12.5549 ENDIF SWITCH LF2_flag CASE 0 GOSUB LF2_initialise_stuff LF2_flag = 1 BREAK CASE 1 // Mocap scene GOSUB LF2_cutscene_1 LF2_flag = 2 BREAK CASE 2 //Get over to Cesar GOSUB LF2_scene_1 BREAK CASE 3 //Cut of player in car with cesar GOSUB LF2_cutscene_2 BREAK CASE 4 //Get to Sweet GOSUB LF2_scene_2 BREAK CASE 5 //Sweet injured lying on floor GOSUB LF2_cutscene_3 BREAK CASE 6 //Get to Sweet GOSUB LF2_scene_3 BREAK CASE 7 //Cops turn up - CJ gets busted. GOSUB LF2_cutscene_4 BREAK CASE 8 GOTO mission_la1fin2_passed BREAK ENDSWITCH GOSUB LF2_fail_checks GOSUB LF2_mission_checks GOSUB lafin2_audio IF lf2_mission_fail = 1 GOTO mission_la1fin2_failed ENDIF GOTO lf2_mission_loop RETURN LF2_fail_checks: IF LF2_sweet_alive = 1 IF IS_CHAR_DEAD LF2_sweet LF2_mission_fail = 1 PRINT LA1_16 4000 1 ENDIF ENDIF RETURN RETURN LF2_mission_checks: // set ped and car density down if player is near shootout area IF lf2_flag > 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1650.6447 -1059.4348 25.4852 100.0 100.0 100.0 FALSE SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 ELSE SET_PED_DENSITY_MULTIPLIER 0.6 SET_CAR_DENSITY_MULTIPLIER 0.6 ENDIF lf2_carid = l1f2_flatcar[0] lv1 = 0 GOSUB lf2_car_damage lf2_carid = l1f2_flatcar[1] lv1 = 1 GOSUB lf2_car_damage lf2_carid = l1f2_grovecar[2] lv1 = 2 GOSUB lf2_car_damage lf2_carid = l1f2_grovecar[0] lv1 = 3 GOSUB lf2_car_damage lf2_carid = l1f2_grovecar[1] lv1 = 4 GOSUB lf2_car_damage ENDIF RETURN LF2_initialise_stuff: LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY lf2_empty_dec LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY lf2_driveby_dec CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_driveby_dec EVENT_ACQUAINTANCE_PED_HATE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_driveby_dec EVENT_ACQUAINTANCE_PED_HATE TASK_SIMPLE_GANG_DRIVEBY 0.0 100.0 0.0 0.0 TRUE FALSE RETURN // ***************************************************************************************** // ***** DESCRIPTION ******* // ***************************************************************************************** LF2_cutscene_1: LOAD_MISSION_TEXT LAFIN2 SET_AREA_VISIBLE 1 LOAD_CUTSCENE FINAL2A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 LOAD_SCENE 2518.7893 -1677.2203 13.5079 // fades the screen in // l2_skip1: SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_CHAR_COORDINATES scplayer 2519.8254 -1677.7141 13.7425 SET_CHAR_HEADING scplayer 67.0 REQUEST_MODEL BRAVURA REQUEST_MODEL CELLPHONE WHILE NOT HAS_MODEL_LOADED BRAVURA OR NOT HAS_MODEL_LOADED CELLPHONE WAIT 0 ENDWHILE CREATE_CAR BRAVURA 1625.0871 -1857.4377 12.5549 l1f2_meet_car CHANGE_CAR_COLOUR l1f2_meet_car 32 1 FREEZE_CAR_POSITION l1f2_meet_car TRUE SET_CAR_PROOFS l1f2_meet_car TRUE TRUE TRUE TRUE TRUE SET_CAR_HEADING l1f2_meet_car 180.0 WAIT 500 IF lf2_skip_allowed = 1 SET_UP_SKIP 1642.2986 -1869.6426 12.3906 90.0 ENDIF DO_FADE 500 FADE_IN SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 2513.4983 -1671.7406 13.2117 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2513.9429 -1672.6283 13.3312 JUMP_CUT SET_PLAYER_CONTROL player1 OFF OPEN_SEQUENCE_TASK lf2_sequence TASK_GO_STRAIGHT_TO_COORD -1 2514.9888 -1674.0801 12.7225 PEDMOVE_WALK -1 TASK_PAUSE -1 1000 TASK_USE_MOBILE_PHONE -1 TRUE CLOSE_SEQUENCE_TASK lf2_sequence PERFORM_SEQUENCE_TASK scplayer lf2_sequence CLEAR_SEQUENCE_TASK lf2_sequence LVAR_INT using_phone play_audio = 17 phone_wait_time = TIMERA + 3500 // play_audio_for = 11 using_phone = 1 RETURN // ***************************************************************************************** // ********** DESCRIPTION *********** // ***************************************************************************************** LF2_scene_1: IF using_phone = 1 IF TIMERA > phone_wait_time IF play_audio = 0 play_audio = 18 phone_wait_time = TIMERA + 2500 using_phone = 2 // TASK_USE_MOBILE_PHONE scplayer TRUE ENDIF ENDIF ENDIF IF using_phone = 2 IF TIMERA > phone_wait_time CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON audio_flag = 1 play_audio = 19 play_audio_for = 11 using_phone = 3 ENDIF ENDIF IF using_phone = 3 IF NOT play_audio = 0 IF IS_BUTTON_PRESSED PAD1 TRIANGLE play_audio = 0 audio_flag = 5 ENDIF ENDIF IF play_audio = 0 IF audio_flag = 1 TASK_USE_MOBILE_PHONE scplayer FALSE MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE using_phone = 0 PRINT LA1_33 7000 1 REMOVE_BLIP l1f2_blip ADD_BLIP_FOR_COORD 1631.7911 -1867.2876 12.5381 l1f2_blip ENDIF ENDIF ENDIF //get to the car IF lf2_scene_flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1631.7911 -1867.2876 12.5381 4.0 4.0 4.0 TRUE CLEAR_SKIP lf2_skip_allowed = 1 IF IS_CHAR_IN_ANY_CAR scplayer SET_PLAYER_CONTROL player1 OFF LVAR_INT force_player_break force_time force_player_break = 1 force_time = TIMERA + 1500 ENDIF REMOVE_BLIP l1f2_blip IF NOT IS_CAR_DEAD l1f2_meet_car REMOVE_BLIP l1f2_blip ADD_BLIP_FOR_CAR l1f2_meet_car l1f2_blip SET_BLIP_AS_FRIENDLY l1f2_blip TRUE ENDIF PRINT LA1_35 4000 1 lf2_scene_flag = 1 ENDIF ENDIF IF force_player_break = 1 IF TIMERA > force_time TASK_LEAVE_ANY_CAR scplayer SET_PLAYER_CONTROL player1 ON force_player_break = 2 ENDIF ENDIF //get in the car IF lf2_scene_flag = 1 IF NOT IS_CAR_DEAD l1f2_meet_car IF IS_CHAR_IN_CAR scplayer l1f2_meet_car REMOVE_BLIP l1f2_blip CLEAR_PRINTS lf2_flag = 3 ENDIF ENDIF ENDIF RETURN // ***************************************************************************************** // *************** Cutscene of Cesar showing CJ that Smoke set them up ********************* // ***************************************************************************************** LF2_cutscene_2: // GOTO l2_skip2 MARK_MODEL_AS_NO_LONGER_NEEDED BRAVURA SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD l1f2_meet_car SET_CAR_VISIBLE l1f2_meet_car FALSE ENDIF CLEAR_AREA_OF_CARS 1626.6332 -1876.4004 16.8284 1601.1116 -1902.1034 10.6931 CLEAR_AREA_OF_CHARS 1626.6332 -1876.4004 16.8284 1601.1116 -1902.1034 10.6931 REMOVE_BLIP l1f2_blip MAKE_PLAYER_SAFE_FOR_CUTSCENE Player1 SWITCH_STREAMING OFF LOAD_CUTSCENE FINAL2B WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE // l2_skip2: SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON IF NOT IS_CAR_DEAD l1f2_meet_car SET_CAR_VISIBLE l1f2_meet_car TRUE FREEZE_CAR_POSITION l1f2_meet_car FALSE SET_CAR_PROOFS l1f2_meet_Car FALSE FALSE FALSE FALSE FALSE MARK_CAR_AS_NO_LONGER_NEEDED l1f2_meet_car ENDIF // blip for sweet REMOVE_BLIP l1f2_blip ADD_BLIP_FOR_COORD 1648.7145 -1050.0944 22.9141 l1f2_blip PRINT LA1_8 5000 1 // Initialise Sweets health bar LVAR_INT l1f2_check_sweet_health l1f2_sweet_health_drop_time VAR_INT l1f2_sweet_health l1f2_sweet_health = 100 l1f2_check_sweet_health = 1 GENERATE_RANDOM_INT_IN_RANGE 4000 8000 l1f2_sweet_health_drop_time l1f2_sweet_health_drop_time += TIMERA DISPLAY_ONSCREEN_COUNTER_WITH_STRING l1f2_sweet_health COUNTER_DISPLAY_BAR LA1_4 GENERATE_RANDOM_INT_IN_RANGE 4000 8000 l1f2_sweet_health_drop_time l1f2_sweet_health_drop_time += TIMERA DO_FADE 500 FADE_IN IF NOT IS_CAR_DEAD l1f2_meet_car IF NOT IS_CHAR_IN_CAR scplayer l1f2_meet_car LVAR_INT lf2_DriverCharID GET_DRIVER_OF_CAR l1f2_meet_car lf2_DriverCharID IF NOT lf2_DriverCharID = scplayer IF NOT IS_CHAR_DEAD lf2_DriverCharID DELETE_CHAR lf2_DriverCharID ENDIF ENDIF WARP_CHAR_INTO_CAR scplayer l1f2_meet_car MARK_CAR_AS_NO_LONGER_NEEDED l1f2_meet_car MARK_MODEL_AS_NO_LONGER_NEEDED BRAVURA ENDIF ENDIF TASK_LEAVE_ANY_CAR scplayer SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT lf2_flag = 4 lf2_scene_flag = 0 SWITCH_EMERGENCY_SERVICES OFF CHECKPOINT_SAVE 1 RETURN // ***************************************************************************************** // ********** DESCRIPTION *********** // ***************************************************************************************** LF2_scene_2: //if shootout scene not created then check player within 150m and create GOSUB lf2_shootout_creation //do some AI stuff GOSUB lf2_gang_AI //sweet health LVAR_INT cj_phones_sweet IF cj_phones_sweet = 0 GET_CHAR_COORDINATES scplayer player_x player_y player_z IF player_y > -1800.0 IF IS_CHAR_IN_ANY_CAR scplayer play_audio = 10 play_audio_for = 2 cj_phones_sweet = 1 LVAR_INT phone_wait_time phone_wait_time = TIMERA + 6000 ENDIF ENDIF ENDIF IF cj_phones_sweet = 1 IF IS_CHAR_IN_ANY_CAR scplayer IF TIMERA > phone_wait_time play_audio = 12 play_audio_for = 5 cj_phones_sweet = 2 ENDIF ENDIF ENDIF IF cj_phones_sweet > 0 AND cj_phones_sweet < 3 IF NOT IS_CHAR_IN_ANY_CAR scplayer force_audio = 0 play_audio = 0 play_audio_for = 0 cj_phones_sweet = 3 ENDIF ENDIF LVAR_INT l1f2_health_drop IF TIMERA > l1f2_sweet_health_drop_time IF NOT IS_CHAR_DEAD lf2_blue[0] IF lf2_alive_for_firt_time = 1 SET_CHAR_HEALTH lf2_blue[0] l1f2_sweet_health lf2_alive_for_firt_time = 0 ENDIF GET_CHAR_HEALTH lf2_blue[0] l1f2_sweet_health ENDIF GENERATE_RANDOM_INT_IN_RANGE 4000 8000 l1f2_sweet_health_drop_time l1f2_sweet_health_drop_time += TIMERA GENERATE_RANDOM_INT_IN_RANGE 4 8 l1f2_health_drop l1f2_sweet_health -= l1f2_health_drop IF l1f2_sweet_health <= 0 l1f2_sweet_health = 0 PRINT LA1_16 4000 1 lf2_mission_fail = 1 ENDIF IF NOT IS_CHAR_DEAD lf2_blue[0] SET_CHAR_HEALTH lf2_blue[0] l1f2_sweet_health ENDIF ENDIF IF lf2_scene_flag = 0 IF lf2_shootout_created = 2 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1648.7145 -1050.0944 22.9141 4.0 4.0 4.0 TRUE IF NOT IS_CHAR_DEAD lf2_blue[0] SET_CHAR_PROOFS lf2_blue[0] TRUE TRUE TRUE TRUE TRUE SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE ENDIF lf2_scene_flag = 1 ENDIF IF lf2_dead_reds = 6 IF NOT IS_CHAR_DEAD lf2_blue[0] SET_CHAR_PROOFS lf2_blue[0] TRUE TRUE TRUE TRUE TRUE SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE ENDIF lf2_scene_flag = 1 lf2_time_check = TIMERA + 2000 ENDIF ENDIF ENDIF IF lf2_scene_flag = 1 IF TIMERA > lf2_time_check REMOVE_BLIP l1f2_blip SET_PLAYER_CONTROL player1 OFF DO_FADE 800 FADE_OUT lf2_scene_flag = 2 ENDIF ENDIF IF lf2_scene_flag = 2 IF NOT GET_FADING_STATUS lf2_flag = 5 lf2_scene_flag = 0 // audio for next cut audio_actor[2] = lf2_blue[0] play_timed_audio = 1 play_timed_audio_for = 9 audio_time[0] = 2440 audio_time[1] = 5629 audio_time[2] = 7974 audio_time[3] = 10516 audio_time[4] = 13463 audio_time[5] = 16047 audio_time[6] = 19236 audio_time[7] = 21747 audio_time[8] = 24483 audio_to_play[0] = 1 audio_to_play[1] = 2 audio_to_play[2] = 3 audio_to_play[3] = 4 audio_to_play[4] = 5 audio_to_play[5] = 6 audio_to_play[6] = 7 audio_to_play[7] = 8 audio_to_play[8] = 9 ENDIF ENDIF RETURN // ***************************************************************************************** // *********** Sweet is injured and falls to floor - more Flats turn up. ******************* // ******** Huge vortex opens up and spews forth beasts from another dimension ************* // ***************************************************************************************** LF2_cutscene_3: //do some AI stuff GOSUB lf2_gang_AI IF lf2_scene_flag > 2 IF NOT GET_FADING_STATUS IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOSUB make_cut_wave_red lf2_scene_flag = 10 lf2_time_check = 0 audio_flag = 5 ENDIF ENDIF ENDIF IF lf2_scene_flag = 0 lf2_scene_flag = 1 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 1646.7035 -1046.7438 25.6308 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1646.6207 -1047.7106 25.3892 JUMP_CUT REQUEST_ANIMATION SWEET SET_NEAR_CLIP 0.1 // set car and ped positions for any guys left alive. IF NOT IS_CAR_DEAD l1f2_grovecar[0] IF LOCATE_CAR_3D l1f2_grovecar[0] 1647.2491 -1053.4819 23.8804 10.0 10.0 10.0 FALSE SET_CAR_COORDINATES l1f2_grovecar[0] 1649.5554 -1055.7670 22.8984 SET_CAR_HEADING l1f2_grovecar[0] 329.5791 FREEZE_CAR_POSITION l1f2_grovecar[0] TRUE ENDIF ENDIF IF NOT IS_CAR_DEAD l1f2_grovecar[1] IF LOCATE_CAR_3D l1f2_grovecar[1] 1647.2491 -1053.4819 23.8804 10.0 10.0 10.0 FALSE SET_CAR_COORDINATES l1f2_grovecar[1] 1644.4198 -1057.8428 22.9062 SET_CAR_HEADING l1f2_grovecar[1] 227.8 FREEZE_CAR_POSITION l1f2_grovecar[1] TRUE ENDIF ENDIF IF NOT IS_CAR_DEAD l1f2_grovecar[2] IF LOCATE_CAR_3D l1f2_grovecar[2] 1647.2491 -1053.4819 23.8804 10.0 10.0 10.0 FALSE SET_CAR_COORDINATES l1f2_grovecar[2] 1643.8448 -1051.7357 22.9219 SET_CAR_HEADING l1f2_grovecar[2] 149.9008 FREEZE_CAR_POSITION l1f2_grovecar[2] TRUE ENDIF ENDIF IF NOT IS_CAR_DEAD l1f2_flatcar[0] IF LOCATE_CAR_3D l1f2_flatcar[0] 1647.2491 -1053.4819 23.8804 10.0 10.0 10.0 FALSE SET_CAR_COORDINATES l1f2_flatcar[0] 1640.6031 -1071.5366 22.9141 SET_CAR_HEADING l1f2_flatcar[0] 61.7966 ENDIF ENDIF IF NOT IS_CAR_DEAD l1f2_flatcar[1] IF LOCATE_CAR_3D l1f2_flatcar[1] 1647.2491 -1053.4819 23.8804 10.0 10.0 10.0 FALSE SET_CAR_COORDINATES l1f2_flatcar[1] 1660.9432 -1059.2008 22.9141 SET_CAR_HEADING l1f2_flatcar[1] 148.6633 ENDIF ENDIF IF NOT IS_CHAR_DEAD lf2_blue[0] SET_CHAR_DECISION_MAKER lf2_blue[0] lf2_empty_dec ENDIF IF NOT IS_CHAR_DEAD lf2_blue[1] SET_CHAR_DECISION_MAKER lf2_blue[1] lf2_dec SET_CHAR_COORDINATES lf2_blue[1] 1646.2834 -1057.2091 22.8984 SET_CHAR_HEADING lf2_blue[1] 147.1870 SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_blue[1] FALSE SET_CHAR_STAY_IN_SAME_PLACE lf2_blue[1] TRUE TASK_TOGGLE_DUCK lf2_blue[1] TRUE ENDIF IF NOT IS_CHAR_DEAD lf2_blue[2] SET_CHAR_DECISION_MAKER lf2_blue[2] lf2_dec SET_CHAR_COORDINATES lf2_blue[2] 1644.1022 -1055.3192 22.9062 SET_CHAR_HEADING lf2_blue[2] 117.4901 SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_blue[2] FALSE SET_CHAR_STAY_IN_SAME_PLACE lf2_blue[2] TRUE TASK_TOGGLE_DUCK lf2_blue[2] TRUE ENDIF IF NOT IS_CHAR_DEAD lf2_blue[3] SET_CHAR_DECISION_MAKER lf2_blue[3] lf2_dec SET_CHAR_COORDINATES lf2_blue[3] 1646.2288 -1051.1819 23.9257 SET_CHAR_HEADING lf2_blue[3] 90.0187 SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_blue[3] FALSE SET_CHAR_STAY_IN_SAME_PLACE lf2_blue[3] TRUE ENDIF IF NOT IS_CHAR_DEAD lf2_red[0] SET_CHAR_COORDINATES lf2_red[0] 1622.2764 -1044.6786 22.8984 TASK_TURN_CHAR_TO_FACE_CHAR lf2_red[0] scplayer ENDIF IF NOT IS_CHAR_DEAD lf2_red[1] SET_CHAR_COORDINATES lf2_red[1] 1631.5227 -1060.4169 23.0110 TASK_TURN_CHAR_TO_FACE_CHAR lf2_red[1] scplayer ENDIF IF NOT IS_CHAR_DEAD lf2_red[2] SET_CHAR_COORDINATES lf2_red[2] 1638.7595 -1072.3597 22.8984 TASK_TURN_CHAR_TO_FACE_CHAR lf2_red[2] scplayer ENDIF IF NOT IS_CHAR_DEAD lf2_red[3] SET_CHAR_COORDINATES lf2_red[3] 1649.3485 -1077.8683 22.9062 TASK_TURN_CHAR_TO_FACE_CHAR lf2_red[3] scplayer ENDIF IF NOT IS_CHAR_DEAD lf2_red[4] SET_CHAR_COORDINATES lf2_red[4] 1663.6187 -1058.4191 22.8984 TASK_TURN_CHAR_TO_FACE_CHAR lf2_red[4] scplayer ENDIF ENDIF IF lf2_scene_flag = 1 IF HAS_ANIMATION_LOADED SWEET DO_FADE 1000 FADE_IN lf2_scene_flag = 2 ENDIF ENDIF IF lf2_scene_flag = 2 // play_audio = 1 // play_audio_for = 8 // SET_CHAR_COORDINATES scplayer 1646.6677 -1052.2091 22.9641 // SET_CHAR_HEADING scplayer 180.0 IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1648.034 -1053.956 22.9 ELSE SET_CHAR_COORDINATES scplayer 1648.034 -1053.956 22.9 ENDIF SET_CHAR_HEADING scplayer 150.0 SET_CHAR_COLLISION scplayer FALSE GET_CURRENT_CHAR_WEAPON scplayer lf2_players_weapon SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED IF NOT IS_CHAR_DEAD lf2_blue[0] SET_CHAR_COORDINATES lf2_blue[0] 1647.71 -1054.517 22.9 SET_CHAR_HEADING lf2_blue[0] -30.0 REMOVE_ALL_CHAR_WEAPONS lf2_blue[0] SET_CURRENT_CHAR_WEAPON lf2_blue[0] WEAPONTYPE_UNARMED SET_CHAR_COLLISION lf2_blue[0] FALSE // 1648.591 -1054.125 23.862 CLEAR_CHAR_TASKS_IMMEDIATELY lf2_blue[0] TASK_PLAY_ANIM_NON_INTERRUPTABLE lf2_blue[0] LaFin_Sweet SWEET 4.0 FALSE 0 0 1 -2 ENDIF TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer LaFin_Player SWEET 4.0 FALSE 0 0 1 -2 // SET_FIXED_CAMERA_POSITION 1646.3777 -1050.2433 27.0958 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 1646.3544 -1050.9213 26.3611 JUMP_CUT SET_FIXED_CAMERA_POSITION 1647.5774 -1048.1041 25.4666 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1647.2814 -1048.9984 25.1312 JUMP_CUT lf2_time_check = TIMERA + 2500 ///do stuff lf2_scene_flag = 4 ENDIF IF lf2_scene_flag = 4 IF TIMERA > lf2_time_check IF NOT IS_CHAR_DEAD lf2_blue[0] SET_CHAR_BLEEDING lf2_blue[0] TRUE ENDIF SET_FIXED_CAMERA_POSITION 1649.1997 -1053.5917 23.6475 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1648.2789 -1053.9700 23.7426 JUMP_CUT lf2_time_check = TIMERA + 3700 lf2_scene_flag = 5 ENDIF ENDIF IF lf2_scene_flag = 5 IF TIMERA > lf2_time_check // SET_FIXED_CAMERA_POSITION 1647.1965 -1054.5004 23.4234 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 1648.1252 -1054.2666 23.7111 JUMP_CUT lf2_time_check = TIMERA + 7800 lf2_scene_flag = 6 ENDIF ENDIF IF lf2_scene_flag = 6 IF TIMERA > lf2_time_check // SET_FIXED_CAMERA_POSITION 1647.8448 -1053.5388 23.8781 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 1647.8250 -1054.4968 23.5924 JUMP_CUT lf2_time_check = TIMERA + 5000 lf2_scene_flag = 7 ENDIF ENDIF IF lf2_scene_flag = 7 IF TIMERA > lf2_time_check // SET_FIXED_CAMERA_POSITION 1647.0857 -1054.8744 23.2338 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 1647.9115 -1054.3284 23.3744 JUMP_CUT lf2_time_check = TIMERA + 2000 lf2_scene_flag = 8 ENDIF ENDIF IF lf2_scene_flag = 8 //make more reds - remove some to make space GOSUB make_cut_wave_red ENDIF IF lf2_scene_flag = 9 IF TIMERA > lf2_time_check SET_FIXED_CAMERA_POSITION 1651.9958 -1051.2218 26.0610 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1651.0891 -1051.5344 25.7780 JUMP_CUT SET_CURRENT_CHAR_WEAPON scplayer lf2_players_weapon SET_CHAR_HEADING scplayer 90.0 lf2_time_check = TIMERA + 6500 lf2_scene_flag = 10 ENDIF ENDIF IF lf2_scene_flag = 10 IF TIMERA > lf2_time_check SET_CURRENT_CHAR_WEAPON scplayer lf2_players_weapon SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_CHAR_COLLISION scplayer TRUE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_ONSCREEN_COUNTER l1f2_sweet_health IF NOT IS_CHAR_DEAD lf2_blue[0] TASK_PLAY_ANIM_NON_INTERRUPTABLE lf2_blue[0] Sweet_injuredloop SWEET 1000.0 TRUE 0 0 0 -2 SET_CHAR_COLLISION lf2_blue[0] TRUE FREEZE_CHAR_POSITION lf2_blue[0] TRUE ENDIF IF NOT IS_CAR_DEAD l1f2_grovecar[0] FREEZE_CAR_POSITION l1f2_grovecar[0] FALSE ENDIF IF NOT IS_CAR_DEAD l1f2_grovecar[1] FREEZE_CAR_POSITION l1f2_grovecar[1] FALSE ENDIF IF NOT IS_CAR_DEAD l1f2_grovecar[2] FREEZE_CAR_POSITION l1f2_grovecar[2] FALSE ENDIF lf2_flag = 6 lf2_scene_flag = 0 CLEAR_PRINTS PRINT LA1_31 5000 1 ENDIF ENDIF RETURN // ***************************************************************************************** // ********** DESCRIPTION *********** // ***************************************************************************************** LF2_scene_3: //if shootout scene not created then check player within 150m and create GOSUB lf2_shootout_creation //do some AI stuff GOSUB lf2_gang_AI IF lf2_scene_flag = 0 IF lf2_dead_reds = 4 REQUEST_MODEL PONY lf2_scene_flag = 1 ENDIF ENDIF IF lf2_scene_flag = 1 IF HAS_MODEL_LOADED PONY CREATE_CAR PONY 1553.6967 -1046.8296 22.7992 l1f2_flatpony[0] CLEAR_PRINTS PRINT LA1_36 5000 1 lf2_int1 = 0 WHILE NOT IS_CHAR_DEAD lf2_red[lf2_int1] lf2_int1 ++ ENDWHILE CREATE_CHAR_INSIDE_CAR l1f2_flatpony[0] PEDTYPE_MISSION2 BALLAS1 lf2_red[lf2_int1] lf2_char_id = lf2_red[lf2_int1] l1f2_driver = lf2_int1 GOSUB lf2_make_red SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_red[lf2_int1] TRUE SET_CAR_HEADING l1f2_flatpony[0] 270.0 OPEN_SEQUENCE_TASK lf2_seq TASK_CAR_DRIVE_TO_COORD -1 l1f2_flatpony[0] 1614.7554 -1050.4410 22.9141 25.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_DRIVE_TO_COORD -1 l1f2_flatpony[0] 1630.5336 -1067.9246 22.9141 25.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH CLOSE_SEQUENCE_TASK lf2_seq PERFORM_SEQUENCE_TASK lf2_red[lf2_int1] lf2_seq CLEAR_SEQUENCE_TASK lf2_seq SET_CAR_FORWARD_SPEED l1f2_flatpony[0] 20.0 lf2_int1 ++ WHILE NOT IS_CHAR_DEAD lf2_red[lf2_int1] lf2_int1 ++ ENDWHILE CREATE_CHAR_AS_PASSENGER l1f2_flatpony[0] PEDTYPE_MISSION2 BALLAS1 0 lf2_red[lf2_int1] lf2_char_id = lf2_red[lf2_int1] l1f2_pass1 = lf2_int1 GOSUB lf2_make_red SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_red[lf2_int1] TRUE lf2_int1 ++ WHILE NOT IS_CHAR_DEAD lf2_red[lf2_int1] lf2_int1 ++ ENDWHILE CREATE_CHAR_AS_PASSENGER l1f2_flatpony[0] PEDTYPE_MISSION2 BALLAS1 1 lf2_red[lf2_int1] lf2_char_id = lf2_red[lf2_int1] l1f2_pass2 = lf2_int1 GOSUB lf2_make_red lf2_scene_flag = 2 lf2_dead_reds -= 3 ENDIF ENDIF IF lf2_scene_flag = 2 //if van is shot, peds get out IF l1f2_car_Action[0] = 0 IF NOT IS_CAR_DEAD l1f2_flatpony[0] GET_CAR_HEALTH l1f2_flatpony[0] l1f2_health IF l1f2_health < 980 IF HAS_CAR_BEEN_DAMAGED_BY_CHAR l1f2_flatpony[0] scplayer l1f2_car_Action[0] = 1 ENDIF ENDIF ENDIF ENDIF IF l1f2_car_Action[0] = 1 IF TIMERA > l1f2_car_action_time[0] IF NOT IS_CAR_DEAD l1f2_flatpony[0] AND NOT IS_CHAR_DEAD lf2_red[l1f2_driver] GET_CAR_COORDINATES l1f2_flatpony[0] lx ly lz GET_CAR_HEADING l1f2_flatpony[0] lf1 lf2 = lf1 - 20.0 lf1 -= 90.0 COS lf1 l1f2_cosheading SIN lf1 l1f2_sinheading l1f2_cosheading *= 20.0 l1f2_sinheading *= 20.0 lx -= l1f2_sinheading ly += l1f2_cosheading TASK_CAR_DRIVE_TO_COORD lf2_red[l1f2_driver] l1f2_flatpony[0] lx ly lz 30.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH // SET_CAR_TEMP_ACTION l1f2_flatpony[0] TEMPACT_SWERVELEFT 300 l1f2_car_Action[0] = 2 ENDIF ENDIF ENDIF IF l1f2_car_Action[0] = 2 IF NOT IS_CAR_DEAD l1f2_flatpony[0] GET_CAR_HEADING l1f2_flatpony[0] lf1 IF lf1 < lf2 l1f2_car_Action[0] = 3 l1f2_car_action_time[0] = TIMERA + 800 ENDIF ENDIF ENDIF IF l1f2_car_Action[0] = 3 IF NOT IS_CAR_DEAD l1f2_flatpony[0] ADD_TO_CAR_ROTATION_VELOCITY l1f2_flatpony[0] 0.0 -0.35 0.2 ENDIF IF TIMERA > l1f2_car_action_time[0] l1f2_car_Action[0] = 4 l1f2_car_action_time[0] = TIMERA + 1000 ENDIF ENDIF IF l1f2_car_Action[0] = 4 IF TIMERA > l1f2_car_action_time[0] IF NOT IS_CHAR_DEAD lf2_red[l1f2_driver] CLEAR_CHAR_TASKS lf2_red[l1f2_driver] TASK_LEAVE_ANY_CAR lf2_red[l1f2_driver] l1f2_car_Action[0] = 5 ENDIF ENDIF ENDIF // if van stops, peds get out IF lf2_leave_pony = 0 IF NOT IS_CAR_DEAD l1f2_flatpony[0] GET_CAR_SPEED l1f2_flatpony[0] lf1 IF lf1 < 0.5 lf2_leave_pony = 1 ENDIF ENDIF ENDIF IF lf2_leave_pony = 1 IF NOT IS_CAR_DEAD l1f2_flatpony[0] IF NOT IS_CHAR_DEAD lf2_red[l1f2_driver] // TASK_GO_STRAIGHT_TO_COORD lf2_red[l1f2_driver] 1630.8472 -1059.2250 24.0591 PEDMOVE_RUN -2 SET_CHAR_STAY_IN_SAME_PLACE lf2_red[l1f2_driver] FALSE SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_red[l1f2_driver] FALSE TASK_LEAVE_ANY_CAR lf2_red[l1f2_driver] lf2_red_script_event[l1f2_driver] = 0 ENDIF IF NOT IS_CHAR_DEAD lf2_red[l1f2_pass1] // TASK_GO_STRAIGHT_TO_COORD lf2_red[l1f2_pass1] 1634.4745 -1064.4102 24.1564 PEDMOVE_RUN -2 SET_CHAR_STAY_IN_SAME_PLACE lf2_red[l1f2_pass1] FALSE SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_red[l1f2_pass1] FALSE TASK_LEAVE_ANY_CAR lf2_red[l1f2_pass1] lf2_red_script_event[l1f2_pass1] = 0 ENDIF IF NOT IS_CHAR_DEAD lf2_red[l1f2_pass2] // TASK_GO_STRAIGHT_TO_COORD lf2_red[l1f2_pass2] 1637.7507 -1072.4222 24.0349 PEDMOVE_RUN -2 SET_CHAR_STAY_IN_SAME_PLACE lf2_red[l1f2_pass2] FALSE SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_red[l1f2_pass2] FALSE TASK_LEAVE_ANY_CAR lf2_red[l1f2_pass2] lf2_red_script_event[l1f2_pass2] = 0 ENDIF lf2_scene_flag = 3 ENDIF ENDIF IF IS_CAR_DEAD l1f2_flatpony[0] lf2_scene_flag = 3 ENDIF ENDIF IF lf2_scene_flag = 3 IF lf2_red_script_event[l1f2_driver] = 1 IF NOT IS_CHAR_DEAD lf2_red[l1f2_driver] GET_SCRIPT_TASK_STATUS lf2_red[l1f2_driver] TASK_GO_STRAIGHT_TO_COORD lv1 IF lv1 = FINISHED_TASK lf2_red_script_event[l1f2_driver] = 0 SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_red[l1f2_driver] TRUE ENDIF ENDIF ENDIF IF lf2_red_script_event[l1f2_pass1] = 1 IF NOT IS_CHAR_DEAD lf2_red[l1f2_pass1] GET_SCRIPT_TASK_STATUS lf2_red[l1f2_pass1] TASK_GO_STRAIGHT_TO_COORD lv1 IF lv1 = FINISHED_TASK lf2_red_script_event[l1f2_pass1] = 0 SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_red[l1f2_pass1] TRUE ENDIF ENDIF ENDIF IF lf2_red_script_event[l1f2_pass2] = 1 IF NOT IS_CHAR_DEAD lf2_red[l1f2_pass2] GET_SCRIPT_TASK_STATUS lf2_red[l1f2_pass2] TASK_GO_STRAIGHT_TO_COORD lv1 IF lv1 = FINISHED_TASK lf2_red_script_event[l1f2_pass2] = 0 SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_red[l1f2_pass2] TRUE ENDIF ENDIF ENDIF IF lf2_red_script_event[l1f2_pass1] = 0 AND lf2_red_script_event[l1f2_pass2] = 0 AND lf2_red_script_event[l1f2_driver] = 0 lf2_scene_flag = 4 ENDIF ENDIF IF lf2_scene_flag = 4 IF lf2_dead_reds >= 4 CREATE_CAR PONY 1525.3656 -1022.2670 22.9105 l1f2_flatpony[1] CLEAR_PRINTS PRINT LA1_37 5000 1 lf2_int1 = 0 WHILE NOT IS_CHAR_DEAD lf2_red[lf2_int1] lf2_int1 ++ ENDWHILE CREATE_CHAR_INSIDE_CAR l1f2_flatpony[1] PEDTYPE_MISSION2 BALLAS1 lf2_red[lf2_int1] lf2_char_id = lf2_red[lf2_int1] l1f2_driver = lf2_int1 GOSUB lf2_make_red SET_CAR_HEADING l1f2_flatpony[1] 270.0 OPEN_SEQUENCE_TASK lf2_seq TASK_CAR_DRIVE_TO_COORD -1 l1f2_flatpony[1] 1637.6661 -1021.6440 22.9141 25.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_DRIVE_TO_COORD -1 l1f2_flatpony[1] 1651.1274 -1028.5234 22.9141 25.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH CLOSE_SEQUENCE_TASK lf2_seq PERFORM_SEQUENCE_TASK lf2_red[lf2_int1] lf2_seq CLEAR_SEQUENCE_TASK lf2_seq SET_CAR_FORWARD_SPEED l1f2_flatpony[1] 20.0 lf2_int1 ++ WHILE NOT IS_CHAR_DEAD lf2_red[lf2_int1] lf2_int1 ++ ENDWHILE CREATE_CHAR_AS_PASSENGER l1f2_flatpony[1] PEDTYPE_MISSION2 BALLAS1 0 lf2_red[lf2_int1] lf2_char_id = lf2_red[lf2_int1] l1f2_pass1 = lf2_int1 GOSUB lf2_make_red SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_red[lf2_int1] TRUE lf2_int1 ++ WHILE NOT IS_CHAR_DEAD lf2_red[lf2_int1] lf2_int1 ++ ENDWHILE CREATE_CHAR_AS_PASSENGER l1f2_flatpony[1] PEDTYPE_MISSION2 BALLAS1 1 lf2_red[lf2_int1] lf2_char_id = lf2_red[lf2_int1] l1f2_pass2 = lf2_int1 GOSUB lf2_make_red SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_red[lf2_int1] TRUE lf2_leave_pony = 0 lf2_scene_flag = 5 lf2_dead_reds -= 3 ENDIF ENDIF IF lf2_scene_flag = 5 IF lf2_leave_pony = 0 IF NOT IS_CAR_DEAD l1f2_flatpony[1] GET_CAR_SPEED l1f2_flatpony[1] lf1 IF lf1 < 0.5 lf2_leave_pony = 1 ENDIF ENDIF ENDIF IF lf2_leave_pony = 1 IF NOT IS_CAR_DEAD l1f2_flatpony[1] IF NOT IS_CHAR_DEAD lf2_red[l1f2_driver] TASK_GO_STRAIGHT_TO_COORD lf2_red[l1f2_driver] 1654.9678 -1041.3721 22.8984 PEDMOVE_RUN -2 SET_CHAR_STAY_IN_SAME_PLACE lf2_red[l1f2_driver] FALSE SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_red[l1f2_driver] FALSE lf2_red_script_event[l1f2_driver] = 1 ENDIF IF NOT IS_CHAR_DEAD lf2_red[l1f2_pass1] TASK_GO_STRAIGHT_TO_COORD lf2_red[l1f2_pass1] 1650.4686 -1041.5168 22.8984 PEDMOVE_RUN -2 SET_CHAR_STAY_IN_SAME_PLACE lf2_red[l1f2_pass1] FALSE SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_red[l1f2_pass1] FALSE lf2_red_script_event[l1f2_pass1] = 1 ENDIF IF NOT IS_CHAR_DEAD lf2_red[l1f2_pass2] TASK_GO_STRAIGHT_TO_COORD lf2_red[l1f2_pass2] 1640.8055 -1041.5552 22.8984 PEDMOVE_RUN -2 SET_CHAR_STAY_IN_SAME_PLACE lf2_red[l1f2_pass2] FALSE SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_red[l1f2_pass2] FALSE lf2_red_script_event[l1f2_pass2] = 1 ENDIF lf2_scene_flag = 6 ENDIF ENDIF IF IS_CAR_DEAD l1f2_flatpony[1] lf2_scene_flag = 6 ENDIF ENDIF IF lf2_scene_flag = 6 IF lf2_red_script_event[l1f2_driver] = 1 IF NOT IS_CHAR_DEAD lf2_red[l1f2_driver] GET_SCRIPT_TASK_STATUS lf2_red[l1f2_driver] TASK_GO_STRAIGHT_TO_COORD lv1 IF lv1 = FINISHED_TASK lf2_red_script_event[l1f2_driver] = 0 SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_red[l1f2_driver] TRUE ENDIF ENDIF ENDIF IF lf2_red_script_event[l1f2_pass1] = 1 IF NOT IS_CHAR_DEAD lf2_red[l1f2_pass1] GET_SCRIPT_TASK_STATUS lf2_red[l1f2_pass1] TASK_GO_STRAIGHT_TO_COORD lv1 IF lv1 = FINISHED_TASK lf2_red_script_event[l1f2_pass1] = 0 SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_red[l1f2_pass1] TRUE ENDIF ENDIF ENDIF IF lf2_red_script_event[l1f2_pass2] = 1 IF NOT IS_CHAR_DEAD lf2_red[l1f2_pass2] GET_SCRIPT_TASK_STATUS lf2_red[l1f2_pass2] TASK_GO_STRAIGHT_TO_COORD lv1 IF lv1 = FINISHED_TASK lf2_red_script_event[l1f2_pass2] = 0 SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_red[l1f2_pass2] TRUE ENDIF ENDIF ENDIF IF lf2_red_script_event[l1f2_pass1] = 0 AND lf2_red_script_event[l1f2_pass2] = 0 AND lf2_red_script_event[l1f2_driver] = 0 lf2_scene_flag = 8 ENDIF ENDIF IF lf2_scene_flag = 8 IF lf2_dead_reds >= 3 CLEAR_PRINTS PRINT LA1_38 5000 1 GOSUB create_driveby_routes lf2_dead_reds -= 3 lf2_scene_flag = 9 lf2_red_script_event[l1f2_pass1] = 1 lf2_red_script_event[l1f2_pass2] = 1 lf2_red_script_event[l1f2_driver] = 1 ENDIF ENDIF IF lf2_scene_flag = 9 GOSUB run_driveby_cars lf2_int1 = 0 lf2_dead_reds = 0 WHILE lf2_int1 < 6 IF IS_CHAR_DEAD lf2_red[lf2_int1] lf2_dead_reds ++ ENDIF lf2_int1 ++ ENDWHILE IF lf2_dead_reds >= 6 lf2_scene_flag = 10 lf2_time_check = TIMERA + 1500 ENDIF ENDIF IF lf2_scene_flag = 10 IF TIMERA > lf2_time_check lf2_scene_flag = 0 lf2_flag = 7 CLEAR_HELP ENDIF ENDIF RETURN // ***************************************************************************************** // **************************** Cops turn up - CJ gets busted. ***************************** // ***************************************************************************************** LF2_cutscene_4: LVAR_INT copcar_bust_cut[3] cop_bust_cut[3] LVAR_INT cop_given_task[3] lf2_i = 0 WHILE lf2_i < 3 IF cop_given_task[lf2_i] = 1 IF NOT IS_CAR_DEAD copcar_bust_cut[lf2_i] IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR copcar_bust_cut[lf2_i] IF NOT IS_CHAR_DEAD cop_bust_cut[lf2_i] // TASK_PLAY_ANIM_NON_INTERRUPTABLE cop_bust_cut[lf2_i] COP_getoutcar_LHS POLICE 1000.0 FALSE 0 0 0 -2 LVAR_INT lf2_sequence OPEN_SEQUENCE_TASK lf2_sequence TASK_LEAVE_ANY_CAR -1 TASK_AIM_GUN_AT_COORD -1 1646.3318 -1053.7207 23.385 10000 CLOSE_SEQUENCE_TASK lf2_sequence PERFORM_SEQUENCE_TASK cop_bust_cut[lf2_i] lf2_sequence CLEAR_SEQUENCE_TASK lf2_sequence cop_given_task[lf2_i] = 2 GET_SCRIPT_TASK_STATUS scplayer TASK_HANDS_UP lf2_task_status IF lf2_task_Status = FINISHED_TASK TASK_HANDS_UP scplayer 15000 ENDIF ENDIF ENDIF ENDIF ENDIF lf2_i ++ ENDWHILE IF lf2_scene_flag = 0 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 PEDTYPE_MISSION2 // SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 PEDTYPE_MISSION1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION3 PEDTYPE_MISSION1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION3 PEDTYPE_PLAYER1 DO_FADE 500 FADE_OUT REQUEST_CAR_RECORDING 162 REQUEST_CAR_RECORDING 163 REQUEST_CAR_RECORDING 650 REQUEST_MODEL COPCARLA REQUEST_MODEL LAPD1 REQUEST_MODEL COLT45 REQUEST_ANIMATION POLICE lf2_scene_flag = 1 lf2_time_check = TIMERA + 2000 LF2_sweet_alive = 0 ENDIF IF lf2_scene_flag = 1 IF NOT GET_FADING_STATUS IF HAS_CAR_RECORDING_BEEN_LOADED 162 AND HAS_CAR_RECORDING_BEEN_LOADED 163 AND HAS_CAR_RECORDING_BEEN_LOADED 650 IF HAS_MODEL_LOADED COPCARLA AND HAS_MODEL_LOADED LAPD1 AND HAS_MODEL_LOADED COLT45 AND HAS_ANIMATION_LOADED POLICE LOAD_SCENE_IN_DIRECTION 1584.2905 -1143.8766 23.8226 180.0 // REQUEST_MODEL paypark_lan02 // REQUEST_MODEL bevhiltreepv // LOAD_SCENE 1599.7919 -1140.1249 24.6352 lf2_scene_flag = 2 ENDIF ENDIF ENDIF ENDIF IF lf2_scene_flag = 2 IF TIMERA > lf2_time_check lf2_scene_flag = 3 ENDIF ENDIF IF lf2_scene_flag = 3 CREATE_CAR COPCARLA 0.0 0.0 0.0 copcar_bust_cut[0] CREATE_CAR COPCARLA 0.0 0.0 0.0 copcar_bust_cut[1] CREATE_CAR COPCARLA 0.0 0.0 0.0 copcar_bust_cut[2] CREATE_CHAR_INSIDE_CAR copcar_bust_cut[0] PEDTYPE_CIVMALE LAPD1 cop_bust_cut[0] CREATE_CHAR_INSIDE_CAR copcar_bust_cut[1] PEDTYPE_CIVMALE LAPD1 cop_bust_cut[1] CREATE_CHAR_INSIDE_CAR copcar_bust_cut[2] PEDTYPE_CIVMALE LAPD1 cop_bust_cut[2] GIVE_WEAPON_TO_CHAR cop_bust_cut[0] WEAPONTYPE_PISTOL 99999 GIVE_WEAPON_TO_CHAR cop_bust_cut[1] WEAPONTYPE_PISTOL 99999 GIVE_WEAPON_TO_CHAR cop_bust_cut[2] WEAPONTYPE_PISTOL 99999 SWITCH_CAR_SIREN copcar_bust_cut[0] ON SWITCH_CAR_SIREN copcar_bust_cut[1] ON SWITCH_CAR_SIREN copcar_bust_cut[2] ON // SET_FIXED_CAMERA_POSITION 1595.4587 -1165.6266 23.1525 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 1595.4341 -1164.6302 23.2345 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 1584.2905 -1143.8766 23.8226 1584.2905 -1143.8766 23.8226 3000 TRUE CAMERA_SET_VECTOR_TRACK 1583.9041 -1144.7986 23.8020 1585.2281 -1144.2233 23.8020 3000 TRUE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF SET_CHAR_COORDINATES scplayer 1647.2217 -1053.3633 22.9815 START_PLAYBACK_RECORDED_CAR copcar_bust_cut[0] 162 LVAR_INT lf2_task_status lf2_scene_flag = 4 SET_AREA_VISIBLE 0 SET_CHAR_AREA_VISIBLE scplayer 0 lf2_time_check = TIMERA + 300 ENDIF IF lf2_scene_flag = 4 IF TIMERA > lf2_time_check DO_FADE 600 FADE_IN IF NOT IS_CAR_DEAD copcar_bust_cut[1] AND NOT IS_CAR_DEAD copcar_bust_cut[2] IF HAS_CAR_RECORDING_BEEN_LOADED 162 AND HAS_CAR_RECORDING_BEEN_LOADED 163 AND HAS_CAR_RECORDING_BEEN_LOADED 650 START_PLAYBACK_RECORDED_CAR copcar_bust_cut[1] 163 START_PLAYBACK_RECORDED_CAR copcar_bust_cut[2] 650 cop_given_task[0] = 1 cop_given_task[1] = 1 cop_given_task[2] = 1 ELSE REQUEST_CAR_RECORDING 162 REQUEST_CAR_RECORDING 163 REQUEST_CAR_RECORDING 650 ENDIF ENDIF lf2_scene_flag = 5 lf2_time_check = TIMERA + 2700 ENDIF ENDIF IF lf2_scene_flag = 5 IF TIMERA > lf2_time_check LVAR_INT flee_red[4] CREATE_CHAR PEDTYPE_MISSION3 BALLAS1 1648.9066 -1063.1697 22.99 flee_red[0] CREATE_CHAR PEDTYPE_MISSION3 BALLAS1 1639.7555 -1067.9937 22.9478 flee_red[1] CREATE_CHAR PEDTYPE_MISSION3 BALLAS1 1632.4451 -1058.0782 23.0987 flee_red[2] CREATE_CHAR PEDTYPE_MISSION3 BALLAS1 1640.2998 -1069.2991 22.9448 flee_red[3] TASK_FLEE_POINT flee_red[0] 1646.3318 -1053.7207 23.385 100.0 15000 TASK_FLEE_POINT flee_red[1] 1646.3318 -1053.7207 23.385 100.0 15000 TASK_FLEE_POINT flee_red[2] 1646.3318 -1053.7207 23.385 100.0 15000 TASK_FLEE_POINT flee_red[3] 1646.3318 -1053.7207 23.385 100.0 15000 IF NOT IS_CHAR_DEAD lf2_blue[1] CLEAR_CHAR_TASKS_IMMEDIATELY lf2_blue[1] SET_CHAR_STAY_IN_SAME_PLACE lf2_blue[1] FALSE SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_blue[1] FALSE SET_CHAR_COORDINATES lf2_blue[1] 1649.4648 -1059.3076 22.8984 TASK_FLEE_POINT lf2_blue[1] 1646.3318 -1053.7207 23.385 100.0 15000 ENDIF IF NOT IS_CHAR_DEAD lf2_blue[2] CLEAR_CHAR_TASKS_IMMEDIATELY lf2_blue[2] SET_CHAR_STAY_IN_SAME_PLACE lf2_blue[2] FALSE SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_blue[2] FALSE SET_CHAR_COORDINATES lf2_blue[2] 1642.0807 -1057.8817 22.9062 TASK_FLEE_POINT lf2_blue[2] 1646.3318 -1053.7207 23.385 100.0 15000 ENDIF IF NOT IS_CHAR_DEAD lf2_blue[3] CLEAR_CHAR_TASKS_IMMEDIATELY lf2_blue[3] SET_CHAR_STAY_IN_SAME_PLACE lf2_blue[3] FALSE SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_blue[3] FALSE SET_CHAR_COORDINATES lf2_blue[3] 1640.8405 -1051.6309 22.9062 TASK_FLEE_POINT lf2_blue[3] 1646.3318 -1053.7207 23.385 100.0 15000 ENDIF lf2_scene_flag = 6 lf2_time_check = TIMERA + 100 ENDIF ENDIF IF lf2_scene_flag = 6 IF TIMERA > lf2_time_check CAMERA_RESET_NEW_SCRIPTABLES SET_FIXED_CAMERA_POSITION 1648.6445 -1049.3569 26.0388 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1648.5333 -1050.3365 25.8716 JUMP_CUT // LOAD_SCENE_IN_DIRECTION 1648.6445 -1049.3569 26.0388 180.0 lf2_scene_flag = 8 lf2_time_check = TIMERA + 6500 ENDIF ENDIF IF lf2_scene_flag = 8 IF TIMERA > lf2_time_check CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 1648.6445 -1049.3569 26.0388 1662.2574 -1029.2064 46.3953 7500 TRUE CAMERA_SET_VECTOR_TRACK 1648.5333 -1050.3365 25.8716 1661.8802 -1029.8965 45.7777 7500 TRUE lf2_time_check = TIMERA + 6000 lf2_scene_flag = 9 ENDIF ENDIF IF lf2_scene_flag = 9 IF TIMERA > lf2_time_check DO_FADE 1500 FADE_OUT // lf2_flag = 8 lf2_scene_flag = 10 ENDIF ENDIF IF lf2_scene_flag = 10 IF NOT GET_FADING_STATUS lf2_flag = 8 CAMERA_RESET_NEW_SCRIPTABLES ENDIF ENDIF RETURN make_cut_wave_red: DELETE_CHAR lf2_red[0] CREATE_CHAR PEDTYPE_MISSION2 BALLAS1 1613.2314 -1053.6843 22.8984 lf2_red[0] SET_CHAR_HEADING lf2_red[0] 271.7240 lf2_char_id = lf2_red[0] lf2_int1 = 0 GOSUB lf2_make_red SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_red[0] TRUE TASK_TOGGLE_DUCK lf2_red[0] TRUE TASK_GO_STRAIGHT_TO_COORD lf2_red[0] 1622.5411 -1045.0079 22.8984 PEDMOVE_RUN -2 DELETE_CHAR lf2_red[1] CREATE_CHAR PEDTYPE_MISSION2 BALLAS1 1612.7073 -1054.2001 22.8984 lf2_red[1] SET_CHAR_HEADING lf2_red[1] 285.7294 lf2_char_id = lf2_red[1] lf2_int1 = 1 GOSUB lf2_make_red SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_red[1] TRUE TASK_TOGGLE_DUCK lf2_red[1] TRUE TASK_GO_STRAIGHT_TO_COORD lf2_red[1] 1631.4712 -1059.3792 22.9623 PEDMOVE_RUN -2 DELETE_CHAR lf2_red[2] CREATE_CHAR PEDTYPE_MISSION2 BALLAS1 1617.2190 -1057.9731 22.8984 lf2_red[2] SET_CHAR_HEADING lf2_red[2] 265.7294 lf2_char_id = lf2_red[2] lf2_int1 = 2 GOSUB lf2_make_red SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_red[2] TRUE TASK_TOGGLE_DUCK lf2_red[2] TRUE TASK_GO_STRAIGHT_TO_COORD lf2_red[2] 1633.0354 -1064.7161 22.9162 PEDMOVE_RUN -2 IF IS_CHAR_DEAD lf2_red[3] CREATE_CHAR PEDTYPE_MISSION2 BALLAS1 1670.7072 -1082.1794 22.9062 lf2_red[3] SET_CHAR_HEADING lf2_red[3] 25.7294 lf2_char_id = lf2_red[3] lf2_int1 = 3 GOSUB lf2_make_red SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_red[3] TRUE TASK_TOGGLE_DUCK lf2_red[3] TRUE TASK_GO_STRAIGHT_TO_COORD lf2_red[3] 1659.9028 -1067.0936 23.0077 PEDMOVE_RUN -2 ENDIF IF IS_CHAR_DEAD lf2_red[4] CREATE_CHAR PEDTYPE_MISSION2 BALLAS1 1665.2666 -1090.4669 22.9062 lf2_red[4] SET_CHAR_HEADING lf2_red[4] 25.7294 lf2_char_id = lf2_red[4] lf2_int1 = 4 GOSUB lf2_make_red SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_red[4] TRUE TASK_TOGGLE_DUCK lf2_red[4] TRUE TASK_GO_STRAIGHT_TO_COORD lf2_red[4] 1649.4990 -1077.7948 22.9062 PEDMOVE_RUN -2 ENDIF lf2_scene_flag = 9 lf2_int1 = 0 lf2_dead_reds = 0 WHILE lf2_int1 < 6 IF IS_CHAR_DEAD lf2_red[lf2_int1] lf2_dead_reds ++ ENDIF lf2_int1 ++ ENDWHILE RETURN // ***************************************************************************************** // ***** Create driveby car ******* // ***************************************************************************************** create_driveby_routes: LVAR_INT l1f2_route_start[10] l1f2_route_end[10] l1f2_next_route_a[10] l1f2_next_route_b[10] LVAR_INT l1f2_random l1f2_next_route l1f2_driveby_reroute LVAR_FLOAT l1f2_end_driveby_x l1f2_end_driveby_y driveby_x[23] driveby_y[23] driveby_x[0] = 1609.1936 driveby_x[1] = 1619.7217 driveby_x[2] = 1633.4944 driveby_x[3] = 1656.4398 driveby_x[4] = 1665.5096 driveby_x[5] = 1667.7563 driveby_x[6] = 1665.7896 driveby_x[7] = 1654.9766 driveby_x[8] = 1651.2059 driveby_x[9] = 1640.0569 driveby_x[10] = 1623.2560 driveby_x[11] = 1662.5665 driveby_x[12] = 1643.7061 driveby_x[13] = 1627.3936 driveby_x[14] = 1627.0830 driveby_x[15] = 1634.3109 driveby_x[16] = 1650.9629 driveby_x[17] = 1664.3052 driveby_x[18] = 1670.2731 driveby_x[19] = 1625.1440 driveby_x[20] = 1639.7635 driveby_x[21] = 1657.4904 driveby_x[22] = 1672.0071 driveby_y[0] = -1047.4640 driveby_y[1] = -1036.5244 driveby_y[2] = -1031.4369 driveby_y[3] = -1034.0103 driveby_y[4] = -1043.5925 driveby_y[5] = -1045.4957 driveby_y[6] = -1049.2482 driveby_y[7] = -1058.4379 driveby_y[8] = -1068.1687 driveby_y[9] = -1079.3702 driveby_y[10] = -1071.9753 driveby_y[11] = -1048.2865 driveby_y[12] = -1046.5656 driveby_y[13] = -1052.3989 driveby_y[14] = -1051.4459 driveby_y[15] = -1057.1804 driveby_y[16] = -1067.0616 driveby_y[17] = -1071.1169 driveby_y[18] = -1061.6228 driveby_y[19] = -1063.7119 driveby_y[20] = -1066.0299 driveby_y[21] = -1071.2227 driveby_y[22] = -1063.6095 //1657.2800 -1054.3433 23.3597 (7) l1f2_route_start[0] = 0 l1f2_route_end[0] = 5 l1f2_route_start[1] = 6 l1f2_route_end[1] = 10 l1f2_route_start[2] = 11 l1f2_route_end[2] = 13 l1f2_route_start[3] = 14 l1f2_route_end[3] = 18 l1f2_route_start[4] = 19 l1f2_route_end[4] = 22 l1f2_route_start[5] = 5 l1f2_route_end[5] = 0 l1f2_route_start[6] = 10 l1f2_route_end[6] = 6 l1f2_route_start[7] = 13 l1f2_route_end[7] = 11 l1f2_route_start[8] = 18 l1f2_route_end[8] = 14 l1f2_route_start[9] = 22 l1f2_route_end[9] = 19 l1f2_next_route_a[0] = 1 l1f2_next_route_b[0] = 9 l1f2_next_route_a[1] = 0 l1f2_next_route_b[1] = 7 l1f2_next_route_a[2] = 6 l1f2_next_route_b[2] = 4 l1f2_next_route_a[3] = 5 l1f2_next_route_b[3] = 2 l1f2_next_route_a[4] = 2 l1f2_next_route_b[4] = 5 l1f2_next_route_a[5] = 6 l1f2_next_route_b[5] = 3 l1f2_next_route_a[6] = 8 l1f2_next_route_b[6] = 5 l1f2_next_route_a[7] = 5 l1f2_next_route_b[7] = 9 l1f2_next_route_a[8] = 0 l1f2_next_route_b[8] = 6 l1f2_next_route_a[9] = 7 l1f2_next_route_b[9] = 0 CREATE_CAR SENTINEL 1582.1310 -1043.6693 22.9141 l1f2_driveby_car[0] SET_CAR_HEADING l1f2_driveby_car[0] 270.0 SET_CAR_HEAVY l1f2_driveby_car[0] TRUE SET_CAR_FORWARD_SPEED l1f2_driveby_car[0] 20.0 lf2_int1 = 0 WHILE NOT IS_CHAR_DEAD lf2_red[lf2_int1] lf2_int1 ++ ENDWHILE CREATE_CHAR_INSIDE_CAR l1f2_driveby_car[0] PEDTYPE_MISSION3 BALLAS1 lf2_red[lf2_int1] lf2_char_id = lf2_red[lf2_int1] l1f2_driver = lf2_int1 GOSUB lf2_make_red SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_red[lf2_int1] TRUE lf2_int1 ++ WHILE NOT IS_CHAR_DEAD lf2_red[lf2_int1] lf2_int1 ++ ENDWHILE CREATE_CHAR_AS_PASSENGER l1f2_driveby_car[0] PEDTYPE_MISSION3 BALLAS1 0 lf2_red[lf2_int1] lf2_char_id = lf2_red[lf2_int1] l1f2_pass1 = lf2_int1 GOSUB lf2_make_red SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_red[lf2_int1] TRUE lf2_int1 ++ WHILE NOT IS_CHAR_DEAD lf2_red[lf2_int1] lf2_int1 ++ ENDWHILE CREATE_CHAR_AS_PASSENGER l1f2_driveby_car[0] PEDTYPE_MISSION3 BALLAS1 1 lf2_red[lf2_int1] lf2_char_id = lf2_red[lf2_int1] l1f2_pass2 = lf2_int1 GOSUB lf2_make_red SET_CHAR_DECISION_MAKER lf2_red[l1f2_pass1] lf2_driveby_dec SET_CHAR_DECISION_MAKER lf2_red[l1f2_pass2] lf2_driveby_dec l1f2_next_route = 1 l1f2_driveby_reroute = 1 RETURN // ***************************************************************************************** // ***** Run driveby car ******* // ***************************************************************************************** run_driveby_cars: IF NOT IS_CAR_DEAD l1f2_driveby_car[0] AND NOT IS_CHAR_DEAD lf2_red[l1f2_driver] GET_CAR_SPEED l1f2_driveby_car[0] lf1 IF lf1 < 0.5 IF lf2_leave_car_check = 0 lf2_leave_car_check = 1 lf2_leave_car_time = TIMERA + 1500 ENDIF ENDIF IF lf2_leave_car_check = 1 IF lf1 < 0.5 IF TIMERA > lf2_leave_car_time l1f2_driveby_reroute = 2 lf2_leave_car_check = 2 TASK_EVERYONE_LEAVE_CAR l1f2_driveby_car[0] lf2_red_script_event[l1f2_pass1] = 0 lf2_red_script_event[l1f2_pass2] = 0 lf2_red_script_event[l1f2_driver] = 0 ENDIF ELSE lf2_leave_car_check = 0 ENDIF ENDIF IF l1f2_driveby_reroute = 0 IF LOCATE_CAR_3D l1f2_driveby_car[0] l1f2_end_driveby_x l1f2_end_driveby_y 22.0 3.0 3.0 4.0 FALSE l1f2_driveby_reroute = 1 ENDIF ENDIF IF l1f2_driveby_reroute = 1 GENERATE_RANDOM_INT_IN_RANGE 0 2 l1f2_random IF l1f2_random = 0 l1f2_next_route = l1f2_next_route_a[l1f2_next_route] ELSE l1f2_next_route = l1f2_next_route_b[l1f2_next_route] ENDIF lv1 = l1f2_route_start[l1f2_next_route] FLUSH_ROUTE LVAR_FLOAT last_x last_y last_z GET_CAR_COORDINATES l1f2_driveby_car[0] last_x last_y last_z IF l1f2_route_end[l1f2_next_route] > l1f2_route_start[l1f2_next_route] WHILE lv1 <= l1f2_route_end[l1f2_next_route] EXTEND_ROUTE driveby_x[lv1] driveby_y[lv1] 22.0 // LINE last_x last_y last_z driveby_x[lv1] driveby_y[lv1] last_z last_x = driveby_x[lv1] last_y = driveby_y[lv1] lv1 ++ ENDWHILE ELSE WHILE lv1 >= l1f2_route_end[l1f2_next_route] EXTEND_ROUTE driveby_x[lv1] driveby_y[lv1] 22.0 // LINE last_x last_y last_z driveby_x[lv1] driveby_y[lv1] last_z last_x = driveby_x[lv1] last_y = driveby_y[lv1] lv1 -- ENDWHILE ENDIF // imstuckhere = 0 // VAR_INT imstuckhere // VIEW_INTEGER_VARIABLE imstuckhere imstuckhere TASK_DRIVE_POINT_ROUTE_ADVANCED lf2_red[l1f2_driver] l1f2_driveby_car[0] 20.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_AVOIDCARS l1f2_driveby_reroute = 0 lv1 = l1f2_route_end[l1f2_next_route] l1f2_end_driveby_x = driveby_x[lv1] l1f2_end_driveby_y = driveby_y[lv1] ENDIF IF l1f2_driveby_reroute = 2 ENDIF ENDIF RETURN // ***************************************************************************************** // ***** Creating the shootout scene ******* // ***************************************************************************************** lf2_shootout_creation: LVAR_INT lf2_dec lf2_reddec LVAR_INT l1f2_flatcar[2] l1f2_grovecar[3] LVAR_INT lf2_blue[5] lf2_red[6] lf2_char_stop[6] LVAR_INT lf2_shootout_created IF lf2_shootout_created = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1650.6447 -1059.4348 25.4852 250.0 250.0 70.0 FALSE lf2_shootout_created = 1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_MISSION2 // SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 PEDTYPE_MISSION1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 PEDTYPE_MISSION1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 PEDTYPE_PLAYER1 COPY_CHAR_DECISION_MAKER DM_PED_RANDOM_TOUGH lf2_dec COPY_CHAR_DECISION_MAKER DM_PED_RANDOM_TOUGH lf2_reddec // CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_dec EVENT_ACQUAINTANCE_PED_HATE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_dec EVENT_SHOT_FIRED CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_dec EVENT_SHOT_FIRED_WHIZZED_BY CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_dec EVENT_DAMAGE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_dec EVENT_ACQUAINTANCE_PED_HATE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_dec EVENT_SEEN_PANICKED_PED CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_dec EVENT_DEAD_PED CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_reddec EVENT_SHOT_FIRED CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_reddec EVENT_SHOT_FIRED_WHIZZED_BY CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_reddec EVENT_DAMAGE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_reddec EVENT_ACQUAINTANCE_PED_HATE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_reddec EVENT_GUN_AIMED_AT CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_reddec EVENT_DEAD_PED CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_reddec EVENT_VEHICLE_DAMAGE_WEAPON ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_dec EVENT_SHOT_FIRED TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 100.0 1 1 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_dec EVENT_ACQUAINTANCE_PED_HATE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 1 1 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_dec EVENT_DAMAGE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 75.0 0.0 75.0 1 1 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_dec EVENT_DAMAGE TASK_SIMPLE_DUCK 0.0 25.0 0.0 25.0 1 1 // ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE lf2_dec EVENT_SHOT_FIRED_WHIZZED_BY TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 100.0 1 1 REQUEST_MODEL SABRE REQUEST_MODEL SENTINEL REQUEST_MODEL FAM1 REQUEST_MODEL BALLAS1 REQUEST_MODEL MP5LNG LOAD_SPECIAL_CHARACTER 1 SWEET ENDIF ENDIF IF lf2_shootout_created = 1 IF HAS_MODEL_LOADED SABRE AND HAS_MODEL_LOADED FAM1 AND HAS_MODEL_LOADED BALLAS1 AND HAS_MODEL_LOADED MP5LNG AND HAS_MODEL_LOADED SENTINEL IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1650.6447 -1059.4348 25.4852 150.0 150.0 70.0 FALSE AND HAS_SPECIAL_CHARACTER_LOADED 1 // create cars CREATE_CAR SENTINEL 1649.5554 -1055.7670 22.8984 l1f2_grovecar[0] CREATE_CAR SENTINEL 1644.4198 -1057.8428 22.9062 l1f2_grovecar[1] CREATE_CAR SENTINEL 1643.8448 -1051.7357 22.9219 l1f2_grovecar[2] CREATE_CAR SABRE 1640.6031 -1071.5366 22.9141 l1f2_flatcar[0] CREATE_CAR SABRE 1660.9432 -1059.2008 22.9141 l1f2_flatcar[1] // SET_CAR_HEALTH l1f2_grovecar[0] 3000 // SET_CAR_HEALTH l1f2_grovecar[1] 3000 // SET_CAR_HEALTH l1f2_grovecar[2] 3000 // SET_CAR_HEALTH l1f2_flatcar[0] 3000 // SET_CAR_HEALTH l1f2_flatcar[1] 3000 // FREEZE_CAR_POSITION l1f2_grovecar[0] TRUE // FREEZE_CAR_POSITION l1f2_grovecar[1] TRUE // FREEZE_CAR_POSITION l1f2_grovecar[2] TRUE // LOCK_CAR_DOORS l1f2_grovecar[0] CARLOCK_LOCKED // LOCK_CAR_DOORS l1f2_grovecar[1] CARLOCK_LOCKED // LOCK_CAR_DOORS l1f2_grovecar[2] CARLOCK_LOCKED // SET_VEHICLE_AIR_RESISTANCE_MULTIPLIER l1f2_grovecar[0] 100.0 // SET_VEHICLE_AIR_RESISTANCE_MULTIPLIER l1f2_grovecar[1] 100.0 // SET_VEHICLE_AIR_RESISTANCE_MULTIPLIER l1f2_grovecar[2] 100.0 // SET_CAR_HEAVY l1f2_grovecar[0] TRUE // SET_CAR_HEAVY l1f2_grovecar[1] TRUE // SET_CAR_HEAVY l1f2_grovecar[2] TRUE SET_CAR_HEADING l1f2_grovecar[0] 329.5791 SET_CAR_HEADING l1f2_grovecar[1] 227.8 SET_CAR_HEADING l1f2_grovecar[2] 149.9008 SET_CAR_HEADING l1f2_flatcar[0] 61.7966 SET_CAR_HEADING l1f2_flatcar[1] 148.6633 SET_CAR_STRONG l1f2_grovecar[0] TRUE SET_CAR_STRONG l1f2_grovecar[1] TRUE SET_CAR_STRONG l1f2_grovecar[2] TRUE SET_CAR_STRONG l1f2_flatcar[0] TRUE SET_CAR_STRONG l1f2_flatcar[1] TRUE OPEN_CAR_DOOR l1f2_flatcar[0] FRONT_RIGHT_DOOR OPEN_CAR_DOOR l1f2_flatcar[1] FRONT_RIGHT_DOOR OPEN_CAR_DOOR l1f2_flatcar[1] FRONT_LEFT_DOOR // SET_CAR_ONLY_DAMAGED_BY_PLAYER l1f2_grovecar[0] TRUE // SET_CAR_ONLY_DAMAGED_BY_PLAYER l1f2_grovecar[1] TRUE // SET_CAR_ONLY_DAMAGED_BY_PLAYER l1f2_grovecar[2] TRUE // SET_CAR_ONLY_DAMAGED_BY_PLAYER l1f2_flatcar[0] TRUE // SET_CAR_ONLY_DAMAGED_BY_PLAYER l1f2_flatcar[1] TRUE // create chars CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 1648.5559 -1054.4727 22.8984 lf2_blue[0] CREATE_CHAR PEDTYPE_MISSION1 FAM1 1648.5559 -1054.4727 22.8984 lf2_blue[1] CREATE_CHAR PEDTYPE_MISSION1 FAM1 1646.4736 -1057.6423 22.8984 lf2_blue[2] CREATE_CHAR PEDTYPE_MISSION1 FAM1 1644.6101 -1053.3950 22.8984 lf2_blue[3] CREATE_CHAR PEDTYPE_MISSION2 BALLAS1 1622.2764 -1044.6786 22.8984 lf2_red[0] lf2_char_id = lf2_red[0] lf2_int1 = 0 GOSUB lf2_make_red CREATE_CHAR PEDTYPE_MISSION2 BALLAS1 1631.5227 -1060.4169 23.0110 lf2_red[1] lf2_char_id = lf2_red[1] lf2_int1 = 1 GOSUB lf2_make_red CREATE_CHAR PEDTYPE_MISSION2 BALLAS1 1638.7595 -1072.3597 22.8984 lf2_red[2] lf2_char_id = lf2_red[2] lf2_int1 = 2 GOSUB lf2_make_red CREATE_CHAR PEDTYPE_MISSION2 BALLAS1 1649.3485 -1077.8683 22.9062 lf2_red[3] lf2_char_id = lf2_red[3] lf2_int1 = 3 GOSUB lf2_make_red CREATE_CHAR PEDTYPE_MISSION2 BALLAS1 1663.6187 -1058.4191 22.8984 lf2_red[4] lf2_char_id = lf2_red[4] lf2_int1 = 4 GOSUB lf2_make_red lf2_blue[4] = scplayer SET_CHAR_HEADING lf2_blue[0] 216.2367 SET_CHAR_HEADING lf2_blue[1] 149.4687 SET_CHAR_HEADING lf2_blue[2] 100.9368 SET_CHAR_HEADING lf2_blue[3] 270.9368 SET_CHAR_ACCURACY lf2_blue[0] 40 SET_CHAR_ACCURACY lf2_blue[1] 40 SET_CHAR_ACCURACY lf2_blue[2] 40 SET_CHAR_ACCURACY lf2_blue[3] 40 SET_CHAR_NEVER_TARGETTED lf2_blue[0] TRUE SET_CHAR_NEVER_TARGETTED lf2_blue[1] TRUE SET_CHAR_NEVER_TARGETTED lf2_blue[2] TRUE SET_CHAR_NEVER_TARGETTED lf2_blue[3] TRUE SET_SENSE_RANGE lf2_blue[0] 60.0 SET_SENSE_RANGE lf2_blue[1] 60.0 SET_SENSE_RANGE lf2_blue[2] 60.0 SET_SENSE_RANGE lf2_blue[3] 60.0 SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_blue[0] TRUE SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_blue[1] TRUE SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_blue[2] TRUE SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_blue[3] TRUE SET_CHAR_DECISION_MAKER lf2_blue[0] lf2_dec SET_CHAR_DECISION_MAKER lf2_blue[1] lf2_dec SET_CHAR_DECISION_MAKER lf2_blue[2] lf2_dec SET_CHAR_DECISION_MAKER lf2_blue[3] lf2_dec SET_CHAR_SUFFERS_CRITICAL_HITS lf2_blue[0] FALSE SET_CHAR_SUFFERS_CRITICAL_HITS lf2_blue[1] FALSE SET_CHAR_SUFFERS_CRITICAL_HITS lf2_blue[2] FALSE SET_CHAR_SUFFERS_CRITICAL_HITS lf2_blue[3] FALSE GIVE_WEAPON_TO_CHAR lf2_blue[0] WEAPONTYPE_MP5 99999 GIVE_WEAPON_TO_CHAR lf2_blue[1] WEAPONTYPE_MP5 99999 GIVE_WEAPON_TO_CHAR lf2_blue[2] WEAPONTYPE_MP5 99999 GIVE_WEAPON_TO_CHAR lf2_blue[3] WEAPONTYPE_MP5 99999 SET_CHAR_HEALTH lf2_blue[0] 100 SET_CHAR_HEALTH lf2_blue[1] 100 SET_CHAR_HEALTH lf2_blue[2] 100 SET_CHAR_HEALTH lf2_blue[3] 100 SET_CHAR_MAX_HEALTH lf2_blue[0] 100 SET_CHAR_MAX_HEALTH lf2_blue[1] 100 SET_CHAR_MAX_HEALTH lf2_blue[2] 100 SET_CHAR_MAX_HEALTH lf2_blue[3] 100 // SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_red[0] TRUE // SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_red[1] TRUE // SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_red[2] TRUE // SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_red[3] TRUE // SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_red[4] TRUE // // SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_blue[0] TRUE // SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_blue[1] TRUE // SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_blue[2] TRUE // SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_blue[3] TRUE GENERATE_RANDOM_INT_IN_RANGE 0 5 lf2_int1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_red[lf2_int1] TRUE GENERATE_RANDOM_INT_IN_RANGE 0 5 lf2_int1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER lf2_red[lf2_int1] TRUE // create sweet lf2_shootout_created = 2 ENDIF ENDIF ENDIF RETURN lf2_make_red: SET_CHAR_ACCURACY lf2_char_id 40 SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_char_id TRUE SET_CHAR_DECISION_MAKER lf2_char_id lf2_reddec GIVE_WEAPON_TO_CHAR lf2_char_id WEAPONTYPE_MP5 99999 lf2_char_stop[lf2_int1] = 0 lf2_dead_red_counted[lf2_int1] = 0 REMOVE_BLIP lf2_red_blip[lf2_int1] IF lf2_flag > 3 ADD_BLIP_FOR_CHAR lf2_red[lf2_int1] lf2_red_blip[lf2_int1] ENDIF RETURN lf2_gang_AI: LVAR_INT lf2_blue_target[3] lf2_red_target[6] LVAR_INT lf2_this_blue lf2_this_red lf2_i l_target LVAR_INT lf2_int1 LVAR_FLOAT lx ly lz l_distance l_nearest l_heading LVAR_FLOAT lf1 lf2 lf3 IF lf2_shootout_created = 2 lf2_this_red ++ IF lf2_this_red > 5 lf2_this_red = 0 ENDIF IF NOT IS_CHAR_DEAD lf2_red[lf2_this_red] IF NOT lf2_red_script_event[lf2_this_red] = 1 IF NOT IS_CHAR_IN_ANY_CAR lf2_red[lf2_this_red] GET_SCRIPT_TASK_STATUS lf2_red[lf2_this_red] TASK_GO_STRAIGHT_TO_COORD lf2_int1 IF lf2_int1 = FINISHED_TASK // if char has wandered too far make him IF lf2_char_stop[lf2_this_red] = 0 IF LOCATE_CHAR_ANY_MEANS_3D lf2_red[lf2_this_red] 1646.7769 -1054.2567 24.8043 15.0 15.0 15.0 FALSE TASK_TOGGLE_DUCK lf2_red[lf2_this_red] TRUE SET_CHAR_STAY_IN_SAME_PLACE lf2_red[lf2_this_red] TRUE SET_CHAR_KINDA_STAY_IN_SAME_PLACE lf2_red[lf2_this_red] FALSE lf2_char_stop[lf2_this_red] = 1 ENDIF ENDIF //find closest blue GET_CHAR_COORDINATES lf2_red[lf2_this_red] x y z lf2_i = 0 l_nearest = 40.0 WHILE lf2_i < 5 IF NOT IS_CHAR_DEAD lf2_blue[lf2_i] GET_CHAR_COORDINATES lf2_blue[lf2_i] lx ly lz GET_DISTANCE_BETWEEN_COORDS_2D lx ly x y l_distance IF l_distance < l_nearest l_nearest = l_distance l_target = lf2_blue[lf2_i] ENDIF ENDIF lf2_i++ ENDWHILE // set closest blue as target, if target has changed since last check IF NOT l_target = lf2_red_target[lf2_this_red] CLEAR_CHAR_TASKS lf2_red[lf2_this_red] lf2_red_target[lf2_this_red] = l_target ENDIF // if char is not shooting set to do so. GET_SCRIPT_TASK_STATUS lf2_red[lf2_this_red] TASK_KILL_CHAR_ON_FOOT lf2_int1 IF lf2_int1 = FINISHED_TASK IF NOT IS_CHAR_DEAD lf2_red_target[lf2_this_red] TASK_KILL_CHAR_ON_FOOT lf2_red[lf2_this_red] lf2_red_target[lf2_this_red] ENDIF ENDIF ENDIF ENDIF ENDIF ELSE IF lf2_dead_red_counted[lf2_this_red] = 0 MARK_CHAR_AS_NO_LONGER_NEEDED lf2_red[lf2_this_red] lf2_dead_reds ++ lf2_dead_red_counted[lf2_this_red] = 1 lf2_red_script_event[lf2_this_red] = 0 REMOVE_BLIP lf2_red_blip[lf2_this_red] ENDIF ENDIF lf2_this_blue ++ IF lf2_this_blue > 3 lf2_this_blue = 0 ENDIF IF NOT IS_CHAR_DEAD lf2_blue[lf2_this_blue] IF lf2_blue_script_act[lf2_this_blue] = 0 IF NOT LOCATE_CHAR_ANY_MEANS_3D lf2_blue[lf2_this_blue] 1647.2491 -1053.4819 23.8804 5.0 5.0 5.0 FALSE GET_SCRIPT_TASK_STATUS lf2_blue[lf2_this_blue] TASK_GO_STRAIGHT_TO_COORD lf2_int1 IF lf2_int1 = FINISHED_TASK SET_CHAR_DECISION_MAKER lf2_blue[lf2_this_blue] lf2_empty_dec GENERATE_RANDOM_FLOAT_IN_RANGE -1.5 1.5 lf1 x = 1647.2491 + lf1 GENERATE_RANDOM_FLOAT_IN_RANGE -1.5 1.5 lf1 y = -1053.4819 + lf1 TASK_GO_STRAIGHT_TO_COORD lf2_blue[lf2_this_blue] x y 23.8804 PEDMOVE_RUN -1 lf2_blue_script_act[lf2_this_blue] = 1 ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS lf2_blue[lf2_this_blue] TASK_GO_STRAIGHT_TO_COORD lf2_int1 IF lf2_int1 = FINISHED_TASK OR LOCATE_CHAR_ANY_MEANS_3D lf2_blue[lf2_this_blue] 1647.2491 -1053.4819 23.8804 3.0 3.0 3.0 FALSE lf2_blue_script_act[lf2_this_blue] = 0 SET_CHAR_DECISION_MAKER lf2_blue[lf2_this_blue] lf2_dec ENDIF ENDIF ENDIF ENDIF RETURN lf2_car_damage: IF lf2_damage_level[lv1] < 26 IF NOT IS_CAR_DEAD lf2_carid IF lf2_player_entered_car[lv1] = 0 IF NOT IS_CHAR_IN_CAR scplayer lf2_carid GET_CAR_HEALTH lf2_carid lf2_car_health[lv1] IF NOT IS_CAR_HEALTH_GREATER lf2_carid 550 lf2_car_damage = lf2_damage_level[lv1] IF lf2_damage_level[lv1] >= 25 SET_CAR_HEALTH lf2_carid 350 SET_CAR_PROOFS lf2_carid TRUE TRUE TRUE TRUE TRUE ELSE SET_CAR_HEALTH lf2_carid 900 ENDIF GOSUB lf2_damage_car lf2_damage_level[lv1] ++ ENDIF ELSE lf2_player_entered_car[lv1] = 1 SET_CAR_PROOFS lf2_carid FALSE FALSE FALSE FALSE FALSE ENDIF ENDIF ENDIF ENDIF RETURN lf2_damage_car: LVAR_INT lf2_car_damage lf2_carid lf2_damage_level[5] SWITCH lf2_car_damage CASE 0 DAMAGE_CAR_DOOR lf2_CarID BONNET BREAK CASE 1 DAMAGE_CAR_PANEL lf2_CarID FRONT_RIGHT_PANEL BREAK CASE 2 DAMAGE_CAR_DOOR lf2_CarID FRONT_RIGHT_DOOR BREAK CASE 3 DAMAGE_CAR_DOOR lf2_CarID FRONT_RIGHT_DOOR BREAK CASE 4 DAMAGE_CAR_DOOR lf2_CarID REAR_RIGHT_DOOR BREAK CASE 5 BURST_CAR_TYRE lf2_CarID FRONT_RIGHT_WHEEL BREAK CASE 6 DAMAGE_CAR_PANEL lf2_CarID FRONT_BUMPER BREAK CASE 7 DAMAGE_CAR_DOOR lf2_CarID REAR_RIGHT_DOOR BREAK CASE 8 DAMAGE_CAR_PANEL lf2_CarID FRONT_RIGHT_PANEL BREAK CASE 9 DAMAGE_CAR_DOOR lf2_CarID BOOT BREAK CASE 10 BURST_CAR_TYRE lf2_CarID REAR_RIGHT_WHEEL BREAK CASE 11 DAMAGE_CAR_PANEL lf2_CarID REAR_BUMPER BREAK CASE 12 DAMAGE_CAR_DOOR lf2_CarID REAR_RIGHT_DOOR BREAK CASE 13 DAMAGE_CAR_DOOR lf2_CarID BONNET BREAK CASE 14 DAMAGE_CAR_DOOR lf2_CarID REAR_RIGHT_DOOR BREAK CASE 15 DAMAGE_CAR_PANEL lf2_CarID FRONT_RIGHT_PANEL BREAK CASE 16 POP_CAR_DOOR lf2_CarID BOOT TRUE BREAK CASE 17 DAMAGE_CAR_DOOR lf2_CarID FRONT_RIGHT_DOOR BREAK CASE 18 POP_CAR_DOOR lf2_CarID BONNET TRUE BREAK CASE 19 POP_CAR_DOOR lf2_CarID FRONT_RIGHT_DOOR TRUE BREAK CASE 20 DAMAGE_CAR_PANEL lf2_CarID FRONT_BUMPER BREAK CASE 21 POP_CAR_DOOR lf2_CarID BONNET TRUE BREAK CASE 22 DAMAGE_CAR_DOOR lf2_CarID FRONT_RIGHT_DOOR BREAK CASE 23 DAMAGE_CAR_DOOR lf2_CarID FRONT_RIGHT_DOOR BREAK CASE 24 DAMAGE_CAR_DOOR lf2_CarID REAR_RIGHT_DOOR BREAK CASE 25 POP_CAR_DOOR lf2_CarID REAR_RIGHT_DOOR TRUE BREAK ENDSWITCH RETURN lafin2_audio: LVAR_INT play_timed_audio play_timed_audio_flag audio_time_start audio_timer_flag audio_time[10] audio_to_play[10] play_timed_audio_for // play timed audio IF NOT play_timed_audio = 0 IF play_timed_audio_flag = 0 play_timed_audio_flag = 1 audio_time_start = TIMERA audio_timer_flag = 0 play_delay = audio_time_start + audio_time[audio_timer_flag] ENDIF IF play_timed_audio_flag = 1 IF TIMERA > play_delay IF play_audio = 0 play_audio = audio_to_play[audio_timer_flag] audio_timer_flag ++ play_timed_audio_for -- IF play_timed_audio_for = 0 play_timed_audio = 0 play_timed_audio_flag = 0 ELSE play_delay = audio_time_start + audio_time[audio_timer_flag] ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH audio_flag CASE 0 //first time game starts LVAR_TEXT_LABEL audio_text[40] LVAR_INT audio_sound[40] audio_slot[3] play_slot LVAR_INT next_audio LVAR_INT audio_flag play_audio play_audio_for LVAR_INT audio_for_char[40] audio_actor[7] play_audio_now LVAR_INT actor_int this_actor loaded_audio play_delay audio_i audio_char audio_count force_audio IF audio_flag = 1 CREATE_CHAR PEDTYPE_GANG_GROVE SPECIAL01 2752.3408 -1948.8669 16.3125 this_actor CREATE_CHAR PEDTYPE_GANG_GROVE SPECIAL01 2752.3408 -1948.8669 16.3125 audio_char ENDIF $audio_text[1] = &FIN2_BA //Sweet, bro, shit, you’re hit! audio_sound[1] = SOUND_FIN2_BA $audio_text[2] = &FIN2_BB //CJ... Where you been? audio_sound[2] = SOUND_FIN2_BB $audio_text[3] = &FIN2_BC //Cesar called, showed me some shit. audio_sound[3] = SOUND_FIN2_BC $audio_text[4] = &FIN2_BD //It’s Smoke, he’s in deep with Tenpenny and some Ballas! audio_sound[4] = SOUND_FIN2_BD $audio_text[5] = &FIN2_BE //He sold us out! audio_sound[5] = SOUND_FIN2_BE $audio_text[6] = &FIN2_BF //It doesn’t matter, you gotta get out of here, the cops will arrive any second! audio_sound[6] = SOUND_FIN2_BF $audio_text[7] = &FIN2_BG //No way, I’m not running out on my brother! audio_sound[7] = SOUND_FIN2_BG $audio_text[8] = &FIN2_BH //Yo, Ballas! I’m taking you motherfuckers, you hear me? audio_sound[8] = SOUND_FIN2_BH $audio_text[9] = &FIN2_BJ //I’M TAKING YOU ALL DOWN, BITCHES! audio_sound[9] = SOUND_FIN2_BJ $audio_text[10] = &FIN2_AA //I gotta warn Sweet! audio_sound[10] = SOUND_FIN2_AA $audio_text[11] = &FIN2_AB //Dialing tone audio_sound[11] = SOUND_FIN2_AB $audio_text[12] = &FIN2_AB //Dialing tone audio_sound[12] = SOUND_FIN2_AB $audio_text[13] = &FIN2_AC //Dammit, Sweet, pickup! Pickup! audio_sound[13] = SOUND_FIN2_AC $audio_text[14] = &FIN2_AD //Dialoing tone audio_sound[14] = SOUND_FIN2_AD $audio_text[15] = &FIN2_AE //Yo, you called me, but I ain’t picking up, so leave a message after the – audio_sound[15] = SOUND_FIN2_AE $audio_text[16] = &FIN2_AF //Shit! Shit! Shit! audio_sound[16] = SOUND_FIN2_AF // $audio_text[17] = &MOBRING //Dialing tone audio_sound[17] = SOUND_MOBRING // // $audio_text[18] = &MOBRING //Dialing tone audio_sound[18] = SOUND_MOBRING $audio_text[19] = &MCES03A //It doesn’t matter, you gotta get out of here, the cops will arrive any second! audio_sound[19] = SOUND_MCES03A $audio_text[20] = &MCES03B //No way, I’m not running out on my brother! audio_sound[20] = SOUND_MCES03B $audio_text[21] = &MCES03C //Yo, Ballas! I’m taking you motherfuckers, you hear me? audio_sound[21] = SOUND_MCES03C $audio_text[22] = &MCES03D //I’M TAKING YOU ALL DOWN! audio_sound[22] = SOUND_MCES03D $audio_text[23] = &MCES03E //I gotta warn Sweet! audio_sound[23] = SOUND_MCES03E $audio_text[24] = &MCES03F //Dialing tone audio_sound[24] = SOUND_MCES03F $audio_text[25] = &MCES03G //Dammit, Sweet, pickup! Pickup! audio_sound[25] = SOUND_MCES03G $audio_text[26] = &MCES03H //Dialoing tone audio_sound[26] = SOUND_MCES03H $audio_text[27] = &MCES03J //Yo, you called me, but I ain’t picking up, so leave a message after the – audio_sound[27] = SOUND_MCES03J $audio_text[28] = &MCES03L //Shit! Shit! Shit! audio_sound[28] = SOUND_MCES03L $audio_text[29] = &MCES03M //It doesn’t matter, you gotta get out of here, the cops will arrive any second! audio_sound[29] = SOUND_MCES03M audio_for_char[1] = 1 audio_for_char[2] = 1 audio_for_char[3] = 1 audio_for_char[4] = 1 audio_for_char[5] = 1 audio_for_char[6] = 1 audio_for_char[7] = 1 audio_for_char[8] = 1 audio_for_char[9] = 1 audio_for_char[10] = 0 audio_for_char[11] = 0 audio_for_char[12] = 0 audio_for_char[13] = 0 audio_for_char[14] = 0 audio_for_char[15] = 0 audio_for_char[16] = 0 audio_for_char[17] = 0 audio_for_char[18] = 0 audio_for_char[19] = 0 audio_for_char[20] = 0 audio_for_char[21] = 0 audio_for_char[22] = 0 audio_for_char[23] = 0 audio_for_char[24] = 0 audio_for_char[25] = 0 audio_for_char[26] = 0 audio_for_char[27] = 0 audio_for_char[28] = 0 audio_for_char[29] = 0 audio_actor[1] = scplayer audio_actor[2] = lf2_blue[0] //1 = catalina //2 = player audio_flag = 1 // play_audio = 0 LOAD_MISSION_AUDIO 1 audio_sound[1] LOAD_MISSION_AUDIO 2 audio_sound[2] audio_slot[1] = 1 audio_slot[2] = 2 BREAK CASE 1 //waiting to play audio IF NOT play_audio = 0 IF HAS_MISSION_AUDIO_FINISHED 1 AND HAS_MISSION_AUDIO_FINISHED 2 IF audio_slot[1] = play_audio play_slot = 1 ELSE IF audio_slot[2] = play_audio play_slot = 2 ELSE play_slot = 1 audio_slot[1] = play_audio CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 audio_sound[play_audio] //audio hasn't been requested yet ENDIF ENDIF IF HAS_MISSION_AUDIO_LOADED play_slot actor_int = audio_for_char[play_audio] this_actor = audio_actor[actor_int] IF NOT force_audio = 1 //otherwise audio will not play if no mission peds are nearby audio_i = 1 audio_count = 0 WHILE audio_i < 7 audio_char = audio_actor[audio_i] IF NOT audio_char = 0 IF NOT audio_char = this_actor IF NOT IS_CHAR_DEAD this_actor IF NOT IS_CHAR_DEAD audio_char IF LOCATE_CHAR_ANY_MEANS_CHAR_3D this_actor audio_char 10.0 10.0 10.0 FALSE audio_count ++ ENDIF ENDIF ENDIF ENDIF ENDIF audio_i++ ENDWHILE ENDIF IF force_audio = 1 OR audio_count > 0 OR audio_for_char[play_audio] = 0 IF NOT audio_for_char[play_audio] = 0 IF NOT IS_CHAR_DEAD this_actor ATTACH_MISSION_AUDIO_TO_CHAR play_slot this_actor IF NOT IS_CHAR_TALKING this_actor play_audio_now = 1 START_CHAR_FACIAL_TALK this_actor 15000 ELSE DISABLE_CHAR_SPEECH this_actor FALSE ENDIF ENDIF ENDIF IF audio_for_char[play_audio] = 0 play_audio_now = 1 ENDIF IF play_audio_now = 1 PLAY_MISSION_AUDIO play_slot CLEAR_PRINTS IF NOT audio_sound[play_audio] = SOUND_MOBRING PRINT $audio_text[play_audio] 10000 1 ENDIF audio_flag ++ play_audio_now = 0 play_audio ++ next_audio = play_audio // if the other slot doesn't already have the next audio loaded, then load it. IF NOT audio_sound[play_audio] = 0 IF play_slot = 1 IF NOT audio_slot[2] = play_audio LOAD_MISSION_AUDIO 2 audio_sound[play_audio] audio_slot[2] = play_audio ENDIF ELSE IF NOT audio_slot[1] = play_audio LOAD_MISSION_AUDIO 1 audio_sound[play_audio] audio_slot[1] = play_audio ENDIF ENDIF ENDIF ENDIF ENDIF ELSE LOAD_MISSION_AUDIO play_slot audio_sound[play_audio] ENDIF ENDIF ENDIF BREAK CASE 2 // check if audio has/should finish IF HAS_MISSION_AUDIO_FINISHED play_slot audio_flag++ ELSE IF DOES_CHAR_EXIST this_actor IF IS_CHAR_DEAD this_actor audio_flag++ ENDIF ENDIF IF NOT IS_CHAR_DEAD this_actor ENDIF ENDIF BREAK CASE 3 //clear audio CLEAR_MISSION_AUDIO play_slot audio_slot[play_slot] = 0 CLEAR_PRINTS IF NOT IS_CHAR_DEAD this_actor STOP_CHAR_FACIAL_TALK this_actor ENABLE_CHAR_SPEECH this_actor ENDIF audio_flag++ BREAK CASE 4 //request next audio play_audio ++ IF NOT audio_sound[play_audio] = 0 LOAD_MISSION_AUDIO play_slot audio_sound[play_audio] audio_slot[play_slot] = play_audio ENDIF play_audio_for -= 1 IF NOT play_audio_for > 0 play_audio = 0 ELSE play_audio = next_audio ENDIF audio_flag = 1 BREAK CASE 5 // clear all for cut scene skip audio_flag = 1 play_audio = 0 play_audio_for = 0 play_timed_audio = 0 play_timed_audio_for = 0 CLEAR_MISSION_AUDIO play_slot audio_slot[play_slot] = 0 CLEAR_PRINTS IF NOT IS_CHAR_DEAD this_actor ENABLE_CHAR_SPEECH this_actor ENDIF BREAK ENDSWITCH RETURN mission_la1fin2_failed: PRINT_BIG ( M_FAIL ) 50 1 //"Mission Failed" RETURN // **************************************** mission la1fin2 passed ************************* mission_la1fin2_passed: WRITE_LOG "UNLOCK_ACHIEVEMENT ALL_DRESSED_UP_FOR_SAN_FIERRO" // END CUT SCENE AS INTRO TO COUNTRYSIDE IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -2007.5 -2542.4 35.7 ELSE SET_CHAR_COORDINATES scplayer -2007.5 -2542.4 35.7 SET_CHAR_HEADING scplayer 80.0 ENDIF DELETE_CAR l1f2_flatpony[1] DELETE_CAR copcar_bust_cut[0] DELETE_CAR copcar_bust_cut[1] DELETE_CAR copcar_bust_cut[2] DELETE_CAR l1f2_driveby_car[0] DELETE_CAR l1f2_grovecar[0] DELETE_CAR l1f2_grovecar[1] DELETE_CAR l1f2_grovecar[2] DELETE_CAR l1f2_flatcar[0] DELETE_CAR l1f2_flatcar[1] DELETE_CHAR lf2_red[0] DELETE_CHAR lf2_red[1] DELETE_CHAR lf2_red[2] DELETE_CHAR lf2_red[3] DELETE_CHAR lf2_red[4] DELETE_CHAR lf2_red[5] DELETE_CHAR cop_bust_cut[0] DELETE_CHAR cop_bust_cut[1] DELETE_CHAR cop_bust_cut[2] DELETE_CHAR lf2_blue[0] DELETE_CHAR lf2_blue[1] DELETE_CHAR lf2_blue[2] DELETE_CHAR lf2_blue[3] // Mark models as no longer needed MARK_MODEL_AS_NO_LONGER_NEEDED BRAVURA MARK_MODEL_AS_NO_LONGER_NEEDED SABRE MARK_MODEL_AS_NO_LONGER_NEEDED FAM1 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED SENTINEL MARK_MODEL_AS_NO_LONGER_NEEDED PONY // MARK_MODEL_AS_NO_LONGER_NEEDED paypark_lan02 // MARK_MODEL_AS_NO_LONGER_NEEDED bevhiltreepv REMOVE_ANIMATION SWEET // unload special characters UNLOAD_SPECIAL_CHARACTER 1 REMOVE_DECISION_MAKER lf2_empty_dec REMOVE_DECISION_MAKER lf2_driveby_dec // PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL PLAYER1 SET_INT_STAT CITIES_PASSED 1 LOAD_CUTSCENE BCRAS1 SET_CHAR_COORDINATES scplayer -2011.4375 -2501.2871 34.0624 SET_PLAYER_CONTROL player1 OFF LOAD_SCENE -2011.4375 -2501.2871 34.0624 CLEAR_AREA -2011.4375 -2501.2871 34.0624 100.0 TRUE CLEAR_HELP REMOVE_ALL_CHAR_WEAPONS scplayer LOAD_MISSION_TEXT BCRASH1 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE WAIT 1000 START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE LOAD_CUTSCENE BCRAS2 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE REQUEST_MODEL CAMERA WHILE NOT HAS_MODEL_LOADED CAMERA WAIT 0 ENDWHILE DO_FADE 1000 FADE_IN GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_CAMERA 30000 MARK_MODEL_AS_NO_LONGER_NEEDED CAMERA SET_PLAYER_CONTROL player1 ON REMOVE_BLIP bcrash_contact_blip REMOVE_BLIP sweet_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT bcrashX bcrashY bcrashZ crash_blip_icon bcrash_contact_blip REMOVE_BLIP save_house_blip[13] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT save_pickupX[13] save_pickupY[13] save_pickupZ[13] RADAR_SPRITE_SAVEHOUSE save_house_blip[13] CHANGE_BLIP_DISPLAY save_house_blip[13] BLIP_ONLY CLEAR_WANTED_LEVEL player1 SET_INT_STAT PASSED_LAFIN2 1 SET_INT_STAT STARTED_BADLANDS 1 PRINT_WITH_NUMBER_BIG ( M_PASSD ) 4 5000 1 //"Mission Passed!" TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME MOB_CAT START_NEW_SCRIPT cell_phone_cat flag_la1fin1_mission_counter ++ terminted_territory_pickup = 1 REGISTER_MISSION_PASSED ( LA1FIN2 ) //Used in the stats PLAYER_MADE_PROGRESS 1 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 number_of_save_icons = 14 SET_ZONE_GANG_STRENGTH SUN1 GANG_FLAT 30 SET_ZONE_GANG_STRENGTH SUN1 GANG_FLAT 30 SET_ZONE_GANG_STRENGTH SUN3a GANG_FLAT 30 SET_ZONE_GANG_STRENGTH SUN3b GANG_FLAT 30 SET_ZONE_GANG_STRENGTH SUN3c GANG_FLAT 30 SET_ZONE_GANG_STRENGTH SUN4 GANG_FLAT 30 SET_ZONE_GANG_STRENGTH CHC1a GANG_NMEX 40 SET_ZONE_GANG_STRENGTH CHC1b GANG_NMEX 40 SET_ZONE_GANG_STRENGTH CHC2a GANG_NMEX 40 SET_ZONE_GANG_STRENGTH CHC2b GANG_NMEX 40 SET_ZONE_GANG_STRENGTH CHC3 GANG_NMEX 40 SET_ZONE_GANG_STRENGTH CHC4a GANG_NMEX 40 SET_ZONE_GANG_STRENGTH CHC4b GANG_NMEX 40 SET_ZONE_GANG_STRENGTH EBE1 GANG_NMEX 30 SET_ZONE_GANG_STRENGTH EBE2a GANG_NMEX 30 SET_ZONE_GANG_STRENGTH EBE2b GANG_NMEX 30 SET_ZONE_GANG_STRENGTH EBE3c GANG_NMEX 30 SET_ZONE_GANG_STRENGTH ELCO1 GANG_SMEX 40 SET_ZONE_GANG_STRENGTH ELCO2 GANG_SMEX 40 SET_ZONE_GANG_STRENGTH GAN1 GANG_FLAT 10 SET_ZONE_GANG_STRENGTH GAN2 GANG_FLAT 25 SET_ZONE_GANG_STRENGTH GLN1 GANG_FLAT 40 SET_ZONE_GANG_STRENGTH GLN2a GANG_FLAT 40 SET_ZONE_GANG_STRENGTH LIND1a GANG_FLAT 20 SET_ZONE_GANG_STRENGTH LIND1b GANG_FLAT 20 SET_ZONE_GANG_STRENGTH LIND2a GANG_FLAT 20 SET_ZONE_GANG_STRENGTH LIND2b GANG_FLAT 20 SET_ZONE_GANG_STRENGTH LIND3 GANG_FLAT 20 SET_ZONE_GANG_STRENGTH IWD1 GANG_FLAT 20 SET_ZONE_GANG_STRENGTH IWD2 GANG_FLAT 20 SET_ZONE_GANG_STRENGTH IWD3a GANG_FLAT 20 SET_ZONE_GANG_STRENGTH IWD3b GANG_FLAT 20 SET_ZONE_GANG_STRENGTH IWD4 GANG_FLAT 10 SET_ZONE_GANG_STRENGTH IWD5 GANG_FLAT 20 SET_ZONE_GANG_STRENGTH JEF1a GANG_FLAT 40 SET_ZONE_GANG_STRENGTH JEF1b GANG_FLAT 40 SET_ZONE_GANG_STRENGTH JEF2 GANG_FLAT 40 SET_ZONE_GANG_STRENGTH JEF3b GANG_FLAT 40 SET_ZONE_GANG_STRENGTH JEF3c GANG_FLAT 40 SET_ZONE_GANG_STRENGTH LFL1a GANG_NMEX 40 SET_ZONE_GANG_STRENGTH LFL1b GANG_NMEX 40 SET_ZONE_GANG_STRENGTH LMEX1a GANG_SMEX 30 SET_ZONE_GANG_STRENGTH LMEX1b GANG_SMEX 30 SET_ZONE_GANG_STRENGTH ELS1a GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS1b GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS2 GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS3a GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS3b GANG_FLAT 30 SET_ZONE_GANG_STRENGTH ELS4 GANG_FLAT 30 SET_ZONE_GANG_STRENGTH PLS GANG_FLAT 10 SET_ZONE_GANG_STRENGTH SMB1 GANG_FLAT 10 SET_ZONE_GANG_STRENGTH SMB2 GANG_FLAT 10 SET_ZONE_GANG_STRENGTH VIN2 GANG_FLAT 10 SET_ZONE_GANG_STRENGTH VERO1 GANG_FLAT 10 SET_ZONE_GANG_STRENGTH VERO2 GANG_FLAT 10 SET_ZONE_GANG_STRENGTH VERO3 GANG_FLAT 10 SET_ZONE_GANG_STRENGTH VERO4a GANG_FLAT 10 SET_ZONE_GANG_STRENGTH VERO4b GANG_FLAT 10 // Set GROVE to 0 in case player started to gain this territory SET_ZONE_GANG_STRENGTH SUN1 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH SUN1 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH SUN3a GANG_GROVE 0 SET_ZONE_GANG_STRENGTH SUN3b GANG_GROVE 0 SET_ZONE_GANG_STRENGTH SUN3c GANG_GROVE 0 SET_ZONE_GANG_STRENGTH SUN4 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH CHC1a GANG_GROVE 0 SET_ZONE_GANG_STRENGTH CHC1b GANG_GROVE 0 SET_ZONE_GANG_STRENGTH CHC2a GANG_GROVE 0 SET_ZONE_GANG_STRENGTH CHC2b GANG_GROVE 0 SET_ZONE_GANG_STRENGTH CHC3 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH CHC4a GANG_GROVE 0 SET_ZONE_GANG_STRENGTH CHC4b GANG_GROVE 0 SET_ZONE_GANG_STRENGTH EBE1 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH EBE2a GANG_GROVE 0 SET_ZONE_GANG_STRENGTH EBE2b GANG_GROVE 0 SET_ZONE_GANG_STRENGTH EBE3c GANG_GROVE 0 SET_ZONE_GANG_STRENGTH ELCO1 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH ELCO2 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH GAN1 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH GAN2 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH GLN1 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH GLN2a GANG_GROVE 0 SET_ZONE_GANG_STRENGTH LIND1a GANG_GROVE 0 SET_ZONE_GANG_STRENGTH LIND1b GANG_GROVE 0 SET_ZONE_GANG_STRENGTH LIND2a GANG_GROVE 0 SET_ZONE_GANG_STRENGTH LIND2b GANG_GROVE 0 SET_ZONE_GANG_STRENGTH LIND3 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH IWD1 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH IWD2 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH IWD3a GANG_GROVE 0 SET_ZONE_GANG_STRENGTH IWD3b GANG_GROVE 0 SET_ZONE_GANG_STRENGTH IWD4 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH IWD5 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH JEF1a GANG_GROVE 0 SET_ZONE_GANG_STRENGTH JEF1b GANG_GROVE 0 SET_ZONE_GANG_STRENGTH JEF2 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH JEF3a GANG_GROVE 0 SET_ZONE_GANG_STRENGTH JEF3b GANG_GROVE 0 SET_ZONE_GANG_STRENGTH JEF3c GANG_GROVE 0 SET_ZONE_GANG_STRENGTH LFL1a GANG_GROVE 0 SET_ZONE_GANG_STRENGTH LFL1b GANG_GROVE 0 SET_ZONE_GANG_STRENGTH LMEX1a GANG_GROVE 0 SET_ZONE_GANG_STRENGTH LMEX1b GANG_GROVE 0 SET_ZONE_GANG_STRENGTH ELS1a GANG_GROVE 0 SET_ZONE_GANG_STRENGTH ELS1b GANG_GROVE 0 SET_ZONE_GANG_STRENGTH ELS2 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH ELS3a GANG_GROVE 0 SET_ZONE_GANG_STRENGTH ELS3b GANG_GROVE 0 SET_ZONE_GANG_STRENGTH ELS4 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH PLS GANG_GROVE 0 SET_ZONE_GANG_STRENGTH SMB1 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH SMB2 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH VIN2 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH VERO1 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH VERO2 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH VERO3 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH VERO4a GANG_GROVE 0 SET_ZONE_GANG_STRENGTH VERO4b GANG_GROVE 0 SET_GANG_WARS_ACTIVE FALSE START_NEW_SCRIPT bcrash_mission_loop RETURN // ********************************** mission cleanup ************************************ mission_cleanup_la1fin2: flag_player_on_mission = 0 // CLEAR_SKIP IF NOT IS_CHAR_DEAD scplayer TASK_USE_MOBILE_PHONE scplayer FALSE ENDIF // reset gang sizes // SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 // remove animations // REMOVE_ANIMATION SWAT // Mark models as no longer needed MARK_MODEL_AS_NO_LONGER_NEEDED BRAVURA MARK_MODEL_AS_NO_LONGER_NEEDED SABRE MARK_MODEL_AS_NO_LONGER_NEEDED FAM1 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED SENTINEL MARK_MODEL_AS_NO_LONGER_NEEDED PONY REMOVE_ANIMATION SWEET REMOVE_CAR_RECORDING 162 REMOVE_CAR_RECORDING 163 REMOVE_CAR_RECORDING 650 MARK_MODEL_AS_NO_LONGER_NEEDED COPCARLA MARK_MODEL_AS_NO_LONGER_NEEDED LAPD1 REMOVE_ANIMATION POLICE SET_PLAYER_CONTROL player1 ON // unload special characters UNLOAD_SPECIAL_CHARACTER 1 REMOVE_DECISION_MAKER lf2_empty_dec REMOVE_DECISION_MAKER lf2_driveby_dec IF NOT IS_CAR_DEAD l1f2_meet_car MARK_CAR_AS_NO_LONGER_NEEDED l1f2_meet_car ENDIF //remove car recordings // REMOVE_CAR_RECORDING 154 // Remove blips REMOVE_BLIP l1f2_blip lf2_i = 0 WHILE lf2_i < 6 REMOVE_BLIP lf2_red_blip[lf2_i] lf2_i ++ ENDWHILE //remove counters CLEAR_ONSCREEN_COUNTER l1f2_sweet_health REMOVE_IPL Barriers1 // reset multipliers SET_WANTED_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 // set emergency services SWITCH_EMERGENCY_SERVICES ON // remove decision makers REMOVE_DECISION_MAKER lf2_dec SET_CREATE_RANDOM_GANG_MEMBERS ON flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 RETURN } MISSION_START // ------------------------------------------------------------------------------------------------ // Badlands CRASH Mission 1: Witness Protection { SCRIPT_NAME bcrash1 // Begin... GOSUB mission_start_bcrash1 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_bcrash1 ENDIF GOSUB mission_cleanup_bcrash1 MISSION_END // ------------------------------------------------------------------------------------------------ // Variables // ---- Flags VAR_INT bc1_stage bc1_in_water bc1_cut LVAR_INT bc1_wander bc1_incar bc1_status bc1_flee bc1_pressed bc1_perform LVAR_INT bc1_car_attack[5] bc1_onfoot_attack[5] bc1_cur_marshall bc1_onscreen LVAR_INT bc1_target_photo bc1_create bc1_blipped bc1_help LVAR_INT bc1_drive_car bc1_speed_boost bc1_photo_loc bc1_camera_ammo_flag VAR_INT bc1_route bc1_route_nx bc1_final_dest // ---- Check LVAR_FLOAT bc1_distance bc1_distance_check LVAR_INT bc1_closest bc1_route_check // ---- Blips LVAR_INT bc1_hut_blip bc1_check_blip bc1_drop_blip // ---- Coords LVAR_FLOAT bc1_player_x bc1_player_y bc1_player_z LVAR_FLOAT bc1_hut_x bc1_hut_y bc1_hut_z LVAR_FLOAT bc1_cur_marsh_x bc1_cur_marsh_y bc1_cur_marsh_z bc1_z LVAR_FLOAT bc1_point_x[6] bc1_point_y[6] bc1_point_z[6] LVAR_FLOAT bc1_locate_x bc1_locate_y bc1_locate_z LVAR_FLOAT bc1_check_x[3] bc1_check_y[3] bc1_check_z[3] LVAR_FLOAT bc1_route_x[40] bc1_route_y[40] bc1_route_z[40] LVAR_FLOAT bc1_min_x bc1_min_y bc1_min_z bc1_max_x bc1_max_y bc1_max_z LVAR_FLOAT bc1_offset_x bc1_offset_y bc1_offset_z // ---- Cameras LVAR_FLOAT bc1_cam_x[10] bc1_cam_y[10] bc1_cam_z[10] // ---- Timers LVAR_INT bc1_timer_start bc1_timer_end bc1_timer_diff // ---- Entities LVAR_INT bc1_health LVAR_INT bc1_camera_pickup bc1_camera_pickup_blip bc1_player_car LVAR_INT bc1_barrier[3] bc1_camera_ammo // ---- Sequence Vars LVAR_INT bc1_patrol[5] bc1_run_to_car bc1_run_away // ------------------------------------------------------------------------------------------------ // Create Entities bc1_load_all: REQUEST_MODEL WMYBU REQUEST_MODEL FBI REQUEST_MODEL WASHING REQUEST_MODEL SANCHEZ REQUEST_MODEL micro_uzi REQUEST_MODEL CAMERA LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED WMYBU OR NOT HAS_MODEL_LOADED FBI OR NOT HAS_MODEL_LOADED micro_uzi OR NOT HAS_MODEL_LOADED WASHING OR NOT HAS_MODEL_LOADED SANCHEZ OR NOT HAS_MODEL_LOADED CAMERA WAIT 0 ENDWHILE RETURN CREATE_PICKUP_WITH_AMMO CAMERA PICKUP_ONCE 24 -2044.10 -2523.86 31.11 bc1_camera_pickup ADD_BLIP_FOR_PICKUP bc1_camera_pickup bc1_camera_pickup_blip // ---- Target bc1_target_create: LVAR_INT bc1_target bc1_target_blip bc1_dec LVAR_FLOAT bc1_target_x bc1_target_y bc1_target_z bc1_target_x = -2814.84 bc1_target_y = -1522.00 bc1_target_z = 139.33 CREATE_CHAR PEDTYPE_CIVMALE WMYBU bc1_target_x bc1_target_y bc1_target_z bc1_target SET_CHAR_CAN_BE_SHOT_IN_VEHICLE bc1_target FALSE //SET_CHAR_RELATIONSHIP bc1_target ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY bc1_dec SET_CHAR_DECISION_MAKER bc1_target bc1_dec //SET_CHAR_SUFFERS_CRITICAL_HITS bc1_target FALSE //SET_CHAR_PROOFS bc1_target FALSE TRUE TRUE FALSE FALSE RETURN bc1_target_delete: MARK_MODEL_AS_NO_LONGER_NEEDED WMYBU RETURN // ---- US Marshalls bc1_marshall_create: LVAR_INT bc1_marshall[5] bc1_marshall_blip[5] bc1_dec2 LVAR_FLOAT bc1_marshall_x[5] bc1_marshall_y[5] bc1_marshall_z[5] bc1_marshall_h[5] bc1_car_speed bc1_marshall_x[1] = -2800.11 bc1_marshall_y[1] = -1521.49 bc1_marshall_z[1] = 137.37 bc1_marshall_h[1] = 305.1252 bc1_marshall_x[2] = -2799.34 bc1_marshall_y[2] = -1524.66 bc1_marshall_z[2] = 137.38 bc1_marshall_h[2] = 356.2755 bc1_marshall_x[3] = -2789.0469 bc1_marshall_y[3] = -1533.3169 bc1_marshall_z[3] = 138.4778 bc1_marshall_h[3] = 317.5168 bc1_marshall_x[4] = -2801.70 bc1_marshall_y[4] = -1515.16 bc1_marshall_z[4] = 137.33 bc1_marshall_h[4] = 270.3571 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY bc1_dec2 CREATE_CHAR PEDTYPE_MISSION1 FBI bc1_point_x[4] bc1_point_y[4] bc1_point_z[4] bc1_marshall[1] SET_CHAR_HEADING bc1_marshall[1] bc1_marshall_h[1] GIVE_WEAPON_TO_CHAR bc1_marshall[1] WEAPONTYPE_MICRO_UZI 30000 SET_CHAR_RELATIONSHIP bc1_marshall[1] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_KEEP_TASK bc1_marshall[1] TRUE SET_CHAR_DECISION_MAKER bc1_marshall[1] bc1_dec2 CREATE_CHAR PEDTYPE_MISSION1 FBI bc1_point_x[5] bc1_point_y[5] bc1_point_z[5] bc1_marshall[2] SET_CHAR_HEADING bc1_marshall[2] bc1_marshall_h[2] GIVE_WEAPON_TO_CHAR bc1_marshall[2] WEAPONTYPE_MICRO_UZI 30000 SET_CHAR_RELATIONSHIP bc1_marshall[2] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_KEEP_TASK bc1_marshall[2] TRUE SET_CHAR_DECISION_MAKER bc1_marshall[2] bc1_dec2 CREATE_CHAR PEDTYPE_MISSION1 FBI bc1_point_x[3] bc1_point_y[3] bc1_point_z[3] bc1_marshall[3] SET_CHAR_HEADING bc1_marshall[3] bc1_marshall_h[3] GIVE_WEAPON_TO_CHAR bc1_marshall[3] WEAPONTYPE_MICRO_UZI 30000 SET_CHAR_RELATIONSHIP bc1_marshall[3] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_KEEP_TASK bc1_marshall[3] TRUE SET_CHAR_DECISION_MAKER bc1_marshall[3] bc1_dec2 CREATE_CHAR PEDTYPE_MISSION1 FBI bc1_point_x[2] bc1_point_y[2] bc1_point_z[2] bc1_marshall[4] SET_CHAR_HEADING bc1_marshall[4] bc1_marshall_h[4] GIVE_WEAPON_TO_CHAR bc1_marshall[4] WEAPONTYPE_MICRO_UZI 30000 SET_CHAR_RELATIONSHIP bc1_marshall[4] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_KEEP_TASK bc1_marshall[4] TRUE SET_CHAR_DECISION_MAKER bc1_marshall[4] bc1_dec2 SET_CHAR_RELATIONSHIP scplayer ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 RETURN bc1_marshall_delete: MARK_MODEL_AS_NO_LONGER_NEEDED micro_uzi MARK_MODEL_AS_NO_LONGER_NEEDED FBI RETURN // ---- US Marshalls Car bc1_marshall_car_create: LVAR_INT bc1_marshall_car bc1_marshall_car_blip LVAR_FLOAT bc1_marshall_car_x bc1_marshall_car_y bc1_marshall_car_z bc1_marshall_car_h bc1_marshall_car_x = -2815.16 bc1_marshall_car_y = -1512.03 bc1_marshall_car_z = 138.08 bc1_marshall_car_h = 272.57 CUSTOM_PLATE_FOR_NEXT_CAR WASHING &_ASSMAN_ CREATE_CAR WASHING bc1_marshall_car_x bc1_marshall_car_y bc1_marshall_car_z bc1_marshall_car SET_LOAD_COLLISION_FOR_CAR_FLAG bc1_marshall_car FALSE SET_CAR_HEADING bc1_marshall_car bc1_marshall_car_h //SET_CAR_PROOFS bc1_marshall_car TRUE TRUE TRUE TRUE TRUE LOCK_CAR_DOORS bc1_marshall_car CARLOCK_LOCKOUT_PLAYER_ONLY //FREEZE_CAR_POSITION bc1_marshall_car TRUE SET_CAN_BURST_CAR_TYRES bc1_marshall_car FALSE RETURN bc1_marshall_car_delete: MARK_MODEL_AS_NO_LONGER_NEEDED WASHING RETURN // ---- Dirtbike (Not BMX) bc1_bmx_create: // REQUEST_MODEL SANCHEZ // WHILE NOT HAS_MODEL_LOADED SANCHEZ // WAIT 0 // ENDWHILE // LVAR_INT bc1_bmx bc1_bmx_blip // LVAR_FLOAT bc1_bmx_x bc1_bmx_y bc1_bmx_z bc1_bmx_h // bc1_bmx_x = -2047.8842 // bc1_bmx_y = -2516.6404 // bc1_bmx_z = 29.7755 // bc1_bmx_h = 316.2936 // CREATE_CAR SANCHEZ bc1_bmx_x bc1_bmx_y bc1_bmx_z bc1_bmx // SET_LOAD_COLLISION_FOR_CAR_FLAG bc1_bmx FALSE // SET_CAR_HEADING bc1_bmx bc1_bmx_h // SET_CAR_PROOFS bc1_bmx TRUE TRUE TRUE TRUE TRUE RETURN bc1_bmx_new_coords: REQUEST_MODEL SANCHEZ WHILE NOT HAS_MODEL_LOADED SANCHEZ WAIT 0 ENDWHILE LVAR_INT bc1_bmx bc1_bmx_blip LVAR_FLOAT bc1_bmx_x bc1_bmx_y bc1_bmx_z bc1_bmx_h bc1_bmx_x = -2803.1562 bc1_bmx_y = -1519.4596 bc1_bmx_z = 138.2818 bc1_bmx_h = 189.4269 CREATE_CAR SANCHEZ bc1_bmx_x bc1_bmx_y bc1_bmx_z bc1_bmx SET_LOAD_COLLISION_FOR_CAR_FLAG bc1_bmx FALSE SET_CAR_HEADING bc1_bmx bc1_bmx_h SET_CAR_PROOFS bc1_bmx TRUE TRUE TRUE TRUE TRUE RETURN bc1_bmx_delete: //DELETE_CAR bc1_bmx MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ RETURN // ------------------------------------------------------------------------------------------------ // Start Mission mission_start_bcrash1: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 WAIT 0 LOAD_MISSION_TEXT BCRASH1 // ------------------------------------------------------------------------------------------------ // Initialise Variables //VIEW_INTEGER_VARIABLE bc1_route bc1_route // ---- Coords bc1_route_x[0] = -2815.3821 bc1_route_y[0] = -1511.2039 bc1_route_z[0] = 139.1089 bc1_route_x[1] = -2766.9119 bc1_route_y[1] = -1599.0131 bc1_route_z[1] = 141.1248 bc1_route_x[2] = -2778.6113 bc1_route_y[2] = -1698.4384 bc1_route_z[2] = 141.3879 bc1_route_x[3] = -2770.7793 bc1_route_y[3] = -1798.4749 bc1_route_z[3] = 141.5863 bc1_route_x[4] = -2705.2419 bc1_route_y[4] = -1874.1293 bc1_route_z[4] = 137.9205 bc1_route_x[5] = -2651.3994 bc1_route_y[5] = -1958.4800 bc1_route_z[5] = 127.1876 bc1_route_x[6] = -2624.5076 bc1_route_y[6] = -2055.0771 bc1_route_z[6] = 129.1295 bc1_route_x[7] = -2525.1726 bc1_route_y[7] = -2071.4380 bc1_route_z[7] = 126.7572 bc1_route_x[8] = -2426.9585 bc1_route_y[8] = -2090.1919 bc1_route_z[8] = 122.5222 bc1_route_x[9] = -2393.0 bc1_route_y[9] = -2096.0 bc1_route_z[9] = 118.0 bc1_route_x[10] = -2326.8984 bc1_route_y[10] = -2098.7317 bc1_route_z[10] = 114.4895 bc1_route_x[11] = -2257.1584 bc1_route_y[11] = -2073.1099 bc1_route_z[11] = 119.2503 bc1_route_x[12] = -2215.6384 bc1_route_y[12] = -2044.9622 bc1_route_z[12] = 118.7853 bc1_route_x[13] = -2143.4915 bc1_route_y[13] = -1955.6223 bc1_route_z[13] = 117.0468 bc1_route_x[14] = -2123.1479 bc1_route_y[14] = -1897.0499 bc1_route_z[14] = 113.4490 bc1_route_x[15] = -2137.8574 bc1_route_y[15] = -1994.8489 bc1_route_z[15] = 96.0566 bc1_route_x[16] = -2165.0095 bc1_route_y[16] = -2044.6545 bc1_route_z[16] = 90.2613 bc1_route_x[17] = -2266.4578 bc1_route_y[17] = -2142.7351 bc1_route_z[17] = 55.9682 bc1_route_x[18] = -2345.6956 bc1_route_y[18] = -2199.5110 bc1_route_z[18] = 33.1272 bc1_route_x[19] = -2245.3535 bc1_route_y[19] = -2201.1106 bc1_route_z[19] = 35.0159 bc1_route_x[20] = -2164.6462 bc1_route_y[20] = -2143.8171 bc1_route_z[20] = 51.5793 bc1_route_x[21] = -2094.4729 bc1_route_y[21] = -2072.8215 bc1_route_z[21] = 63.6193 bc1_route_x[22] = -2063.8655 bc1_route_y[22] = -1977.4004 bc1_route_z[22] = 57.6244 bc1_route_x[23] = -2014.4531 bc1_route_y[23] = -1890.3556 bc1_route_z[23] = 45.5302 bc1_route_x[24] = -1949.7415 bc1_route_y[24] = -1814.2330 bc1_route_z[24] = 33.7562 bc1_route_x[25] = -1872.9307 bc1_route_y[25] = -1750.0071 bc1_route_z[25] = 29.0840 bc1_route_x[26] = -1783.8834 bc1_route_y[26] = -1701.4440 bc1_route_z[26] = 29.5583 bc1_route_x[27] = -1697.5596 bc1_route_y[27] = -1651.1669 bc1_route_z[27] = 36.0764 bc1_route_x[28] = -1604.9380 bc1_route_y[28] = -1613.3876 bc1_route_z[28] = 36.1148 bc1_route_x[29] = -1587.8641 bc1_route_y[29] = -1514.8492 bc1_route_z[29] = 37.5464 bc1_route_x[30] = -1685.7241 bc1_route_y[30] = -1494.0428 bc1_route_z[30] = 34.7867 bc1_route_x[31] = -1777.0442 bc1_route_y[31] = -1452.4105 bc1_route_z[31] = 34.6646 bc1_route_x[32] = -1862.8461 bc1_route_y[32] = -1400.2253 bc1_route_z[32] = 38.3508 bc1_route_x[33] = -1947.1061 bc1_route_y[33] = -1346.2959 bc1_route_z[33] = 40.5623 bc1_route_x[34] = -2005.1072 bc1_route_y[34] = -1264.5165 bc1_route_z[34] = 36.3458 bc1_route_x[35] = -2055.8374 bc1_route_y[35] = -1177.7612 bc1_route_z[35] = 32.1425 bc1_route_x[36] = -2106.0793 bc1_route_y[36] = -1091.0768 bc1_route_z[36] = 29.9780 bc1_route_x[37] = -2168.3723 bc1_route_y[37] = -1012.4182 bc1_route_z[37] = 33.7818 bc1_route_x[38] = -2210.5234 bc1_route_y[38] = -974.8890 bc1_route_z[38] = 38.5044 // ---- Patrol Paths bc1_point_x[0] = -2797.75 bc1_point_y[0] = -1531.63 bc1_point_z[0] = 138.50 bc1_point_x[1] = -2803.09 bc1_point_y[1] = -1503.01 bc1_point_z[1] = 138.83 bc1_point_x[2] = -2804.69 bc1_point_y[2] = -1506.70 bc1_point_z[2] = 137.83 bc1_point_x[3] = -2818.89 bc1_point_y[3] = -1505.72 bc1_point_z[3] = 139.34 bc1_point_x[4] = -2826.68 bc1_point_y[4] = -1522.23 bc1_point_z[4] = 138.78 bc1_point_x[5] = -2822.90 bc1_point_y[5] = -1536.94 bc1_point_z[5] = 138.86 bc1_hut_x = -2814.84 bc1_hut_y = -1522.00 bc1_hut_z = 139.33 bc1_locate_x = -2777.05 bc1_locate_y = -1568.29 bc1_locate_z = 140.04 bc1_check_x[0] = -2346.70 bc1_check_y[0] = -2240.18 bc1_check_z[0] = 17.29 // --- Mountain Checkpoints bc1_check_x[1] = -2103.0 bc1_check_y[1] = -1885.0 bc1_check_z[1] = 109.0 bc1_check_x[2] = -2602.0 bc1_check_y[2] = -2084.0 bc1_check_z[2] = 131.0 // ---- Cameras bc1_cam_x[0] = -2767.98 bc1_cam_y[0] = -1597.90 bc1_cam_z[0] = 141.46 bc1_cam_x[1] = -2787.39 bc1_cam_y[1] = -1568.11 bc1_cam_z[1] = 147.27 bc1_cam_x[2] = -2796.35 bc1_cam_y[2] = -1537.58 bc1_cam_z[2] = 143.82 bc1_cam_x[3] = -2800.19 bc1_cam_y[3] = -1505.59 bc1_cam_z[3] = 143.89 bc1_cam_x[4] = -2801.43 bc1_cam_y[4] = -1541.87 bc1_cam_z[4] = 140.29 // ---- Entity Subroutines bc1_car_speed = 30.0 // ---- Flags bc1_stage = -1 bc1_wander = 0 bc1_onscreen = 1 bc1_patrol[1] = 1 bc1_patrol[2] = 3 bc1_status = 0 bc1_cut = 0 bc1_create = 0 bc1_blipped = 1 bc1_drive_car = 0 bc1_flee = 0 bc1_speed_boost = 0 bc1_camera_ammo_flag = 1 bc1_in_water = 0 bc1_help = 0 bc1_route = 0 bc1_route_nx = 1 bc1_final_dest = 38 bc1_onfoot_attack[0] = 0 bc1_onfoot_attack[1] = 0 bc1_onfoot_attack[2] = 0 bc1_onfoot_attack[3] = 0 bc1_onfoot_attack[4] = 0 bc1_car_attack[0] = 0 bc1_car_attack[1] = 0 bc1_car_attack[2] = 0 bc1_car_attack[3] = 0 bc1_car_attack[4] = 0 // ---- Sequences OPEN_SEQUENCE_TASK bc1_patrol[1] TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[4] bc1_point_y[4] bc1_point_z[4] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[5] bc1_point_y[5] bc1_point_z[5] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[0] bc1_point_y[0] bc1_point_z[0] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[1] bc1_point_y[1] bc1_point_z[1] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[2] bc1_point_y[2] bc1_point_z[2] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[3] bc1_point_y[3] bc1_point_z[3] PEDMOVE_WALK -1 SET_SEQUENCE_TO_REPEAT bc1_patrol[1] 1 CLOSE_SEQUENCE_TASK bc1_patrol[1] OPEN_SEQUENCE_TASK bc1_patrol[2] TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[5] bc1_point_y[5] bc1_point_z[5] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[4] bc1_point_y[4] bc1_point_z[4] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[3] bc1_point_y[3] bc1_point_z[3] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[2] bc1_point_y[2] bc1_point_z[2] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[1] bc1_point_y[1] bc1_point_z[1] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[0] bc1_point_y[0] bc1_point_z[0] PEDMOVE_WALK -1 SET_SEQUENCE_TO_REPEAT bc1_patrol[2] 1 CLOSE_SEQUENCE_TASK bc1_patrol[2] OPEN_SEQUENCE_TASK bc1_patrol[3] TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[3] bc1_point_y[3] bc1_point_z[3] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[4] bc1_point_y[4] bc1_point_z[4] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[5] bc1_point_y[5] bc1_point_z[5] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[0] bc1_point_y[0] bc1_point_z[0] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[1] bc1_point_y[1] bc1_point_z[1] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[2] bc1_point_y[2] bc1_point_z[2] PEDMOVE_WALK -1 SET_SEQUENCE_TO_REPEAT bc1_patrol[3] 1 CLOSE_SEQUENCE_TASK bc1_patrol[3] OPEN_SEQUENCE_TASK bc1_patrol[4] TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[2] bc1_point_y[2] bc1_point_z[2] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[1] bc1_point_y[1] bc1_point_z[1] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[0] bc1_point_y[0] bc1_point_z[0] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[5] bc1_point_y[5] bc1_point_z[5] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[4] bc1_point_y[4] bc1_point_z[4] PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 bc1_point_x[3] bc1_point_y[3] bc1_point_z[3] PEDMOVE_WALK -1 SET_SEQUENCE_TO_REPEAT bc1_patrol[4] 1 CLOSE_SEQUENCE_TASK bc1_patrol[4] CREATE_OBJECT_NO_OFFSET roadworkbarrier1 -2450.083 -2079.953 125.711 bc1_barrier[0] // Barrier SET_OBJECT_ROTATION bc1_barrier[0] 9.209 7.675 -43.371 CREATE_OBJECT_NO_OFFSET roadworkbarrier1 -2449.15 -2078.21 125.917 bc1_barrier[1] // Barrier SET_OBJECT_ROTATION bc1_barrier[1] 4.992 7.247 -15.069 CREATE_OBJECT_NO_OFFSET roadworkbarrier1 -2447.868 -2076.578 125.975 bc1_barrier[2] // Barrier SET_OBJECT_ROTATION bc1_barrier[2] -1.869 8.724 -44.611 // ------------------------------------------------------------------------------------------------ // ---- Misc Mission Crap //GOSUB bc1_bmx_create // DO_FADE 300 FADE_OUT // WHILE GET_FADING_STATUS // WAIT 0 // ENDWHILE GOSUB bc1_load_all SET_PLAYER_GROUP_RECRUITMENT player1 FALSE GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_CAMERA 30000 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_CHAR_HEADING scplayer 54.0 SET_FIXED_CAMERA_POSITION -2041.0087 -2527.2070 33.9116 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2041.7853 -2526.6025 34.0884 JUMP_CUT DO_FADE 300 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE WAIT 3000 SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER PRINT_NOW ( BCR1_03 ) 5000 1 // Kill the witness and take his photograph... ADD_BLIP_FOR_COORD bc1_check_x[0] bc1_check_y[0] bc1_check_z[0] bc1_check_blip // SET_CAMERA_BEHIND_PLAYER // VIEW_INTEGER_VARIABLE bc1_cut bc1_cut // VIEW_INTEGER_VARIABLE bc1_stage bc1_stage // ------------------------------------------------------------------------------------------------ // Main mission loop mission_loop_bcrash1: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_passed_bcrash1 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_1 flag_bcr1_skip = 1 ENDIF IF main_visible_area = 0 IF bc1_help = 3 IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED // PRINT_HELP ( BCR1_23 ) // Not used in mobile // You can view your Gallery photos in your GTA San Andreas User Files directory. bc1_help = 4 ENDIF ENDIF IF bc1_help = 2 IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED PRINT_HELP ( FEG_HOW ) // To take a photo with a camera press ~m~~widget_vc_shoot~. bc1_help = 3 ENDIF ENDIF IF bc1_help = 1 IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED PRINT_HELP ( BCR1_21 ) // When using the camera, use ~m~~widget_zoom_in~ to zoom in, or use ~m~~widget_zoom_out~ to zoom out. bc1_help = 2 ENDIF ENDIF IF bc1_help = 0 IF NOT IS_MESSAGE_BEING_DISPLAYED PRINT_HELP BCR1HID // Press and hold ~m~~widget_enter_targeting~ to look through the camera viewfinder. bc1_help = 1 ENDIF ENDIF ENDIF // In car check IF bc1_stage < 4 IF bc1_incar = 0 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer bc1_player_car bc1_incar = 1 ENDIF ENDIF IF bc1_incar = 1 IF NOT IS_CHAR_IN_ANY_CAR scplayer bc1_incar = 0 ENDIF ENDIF ENDIF IF bc1_stage = -1 IF NOT IS_CHAR_DEAD scplayer IF LOCATE_CHAR_ANY_MEANS_3D scplayer bc1_check_x[0] bc1_check_y[0] bc1_check_z[0] 4.0 4.0 4.0 TRUE //GOSUB bc1_bmx_delete REMOVE_BLIP bc1_check_blip bc1_locate_x = -2774.9807 bc1_locate_y = -1591.2599 bc1_locate_z = 140.3880 ADD_BLIP_FOR_COORD bc1_locate_x bc1_locate_y bc1_locate_z bc1_hut_blip // SET_COORD_BLIP_APPEARANCE bc1_hut_blip COORD_BLIP_APPEARANCE_ENEMY PRINT_NOW ( BCR1_18 ) 5000 1 // ~g~Make your way up the mountain, find that snitch. IF flag_bcr1_skip = 1 SET_UP_SKIP -2767.8828 -1634.1143 140.3939 0.0569 ENDIF bc1_stage = 0 ENDIF ENDIF ENDIF IF bc1_stage = 0 IF NOT IS_CHAR_DEAD scplayer IF bc1_create = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer bc1_locate_x bc1_locate_y bc1_locate_z 150.0 150.0 150.0 FALSE REMOVE_BLIP bc1_hut_blip bc1_locate_x = -2774.9807 bc1_locate_y = -1591.2599 bc1_locate_z = 140.3880 ADD_BLIP_FOR_COORD bc1_locate_x bc1_locate_y bc1_locate_z bc1_hut_blip //GOSUB bc1_bmx_create bc1_cut = 0 bc1_create = 1 ENDIF ENDIF ENDIF ENDIF IF bc1_stage = 0 IF NOT IS_CHAR_DEAD scplayer IF bc1_cut > 1 IF NOT IS_SKIP_CUTSCENE_BUTTON_PRESSED bc1_pressed = 0 ENDIF IF bc1_pressed = 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED CLEAR_PRINTS bc1_timer_start -= 1000 bc1_cut = 6 ENDIF ENDIF ENDIF IF bc1_cut = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer bc1_locate_x bc1_locate_y bc1_locate_z 100.0 100.0 100.0 FALSE bc1_pressed = 1 SET_PLAYER_CONTROL player1 OFF DO_FADE 300 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB bc1_target_create GOSUB bc1_marshall_create GOSUB bc1_marshall_car_create GOSUB bc1_bmx_new_coords GET_GAME_TIMER bc1_timer_start IF flag_bcr1_skip = 1 CLEAR_SKIP ENDIF IF flag_bcr1_skip = 0 flag_bcr1_skip = 1 ENDIF bc1_cut = 1 ENDIF ENDIF IF bc1_cut = 1 GET_GAME_TIMER bc1_timer_end bc1_timer_diff = bc1_timer_end - bc1_timer_start IF bc1_timer_diff > 250 LOAD_SCENE bc1_hut_x bc1_hut_y bc1_hut_z SET_FIXED_CAMERA_POSITION -2795.8606 -1536.9749 139.3093 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2796.5530 -1536.2822 139.5107 JUMP_CUT CLEAR_AREA bc1_hut_x bc1_hut_y bc1_hut_z 75.0 TRUE SWITCH_WIDESCREEN ON SET_FADING_COLOUR 0 0 0 DO_FADE 300 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PRINT_NOW ( BCR1_04 ) 3000 1 // He's inside. Smoke him out! REMOVE_BLIP bc1_hut_blip IF NOT IS_CHAR_DEAD bc1_marshall[1] PERFORM_SEQUENCE_TASK bc1_marshall[1] bc1_patrol[1] ENDIF IF NOT IS_CHAR_DEAD bc1_marshall[2] PERFORM_SEQUENCE_TASK bc1_marshall[2] bc1_patrol[2] ENDIF IF NOT IS_CHAR_DEAD bc1_marshall[3] PERFORM_SEQUENCE_TASK bc1_marshall[3] bc1_patrol[3] ENDIF IF NOT IS_CHAR_DEAD bc1_marshall[4] PERFORM_SEQUENCE_TASK bc1_marshall[4] bc1_patrol[4] ENDIF GET_GAME_TIMER bc1_timer_start bc1_cut = 2 ENDIF ENDIF IF NOT IS_CHAR_DEAD bc1_target IF bc1_cut = 2 GET_GAME_TIMER bc1_timer_end bc1_timer_diff = bc1_timer_end - bc1_timer_start IF bc1_timer_diff > 3000 PRINT_NOW ( BCR1_19 ) 3000 1 // Be wary of the U.S. Marshalls. GET_GAME_TIMER bc1_timer_start bc1_cut = 3 ENDIF ENDIF IF bc1_cut = 3 GET_GAME_TIMER bc1_timer_end bc1_timer_diff = bc1_timer_end - bc1_timer_start IF bc1_timer_diff > 3000 PRINT_NOW ( BCR1_20 ) 4000 1 // And don't let him escape. SET_FIXED_CAMERA_POSITION -2793.0923 -1510.4733 139.2297 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2793.9470 -1510.9451 139.4455 JUMP_CUT GET_GAME_TIMER bc1_timer_start bc1_cut = 4 CHECKPOINT_SAVE 1 ENDIF ENDIF IF bc1_cut = 4 GET_GAME_TIMER bc1_timer_end bc1_timer_diff = bc1_timer_end - bc1_timer_start IF bc1_timer_diff > 2000 GET_GAME_TIMER bc1_timer_start bc1_cut = 5 ENDIF ENDIF IF bc1_cut = 5 GET_GAME_TIMER bc1_timer_end bc1_timer_diff = bc1_timer_end - bc1_timer_start IF bc1_timer_diff > 1500 GET_GAME_TIMER bc1_timer_start bc1_cut = 6 ENDIF ENDIF IF bc1_cut = 6 GET_GAME_TIMER bc1_timer_end bc1_timer_diff = bc1_timer_end - bc1_timer_start IF bc1_timer_diff > 500 SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER IF NOT IS_CHAR_DEAD bc1_target AND NOT IS_CAR_DEAD bc1_marshall_car ADD_BLIP_FOR_CHAR bc1_target bc1_target_blip bc1_stage = 1 bc1_cut = 7 OPEN_SEQUENCE_TASK bc1_run_to_car TASK_FOLLOW_PATH_NODES_TO_COORD -1 -2822.4700 -1518.5946 139.7656 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD -1 -2822.9700 -1514.2443 138.2893 PEDMOVE_WALK -2 TASK_ENTER_CAR_AS_DRIVER -1 bc1_marshall_car 999999999999 CLOSE_SEQUENCE_TASK bc1_run_to_car ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF bc1_stage = 1 IF IS_CHAR_ON_FOOT scplayer IF IS_CHAR_DEAD bc1_target IF NOT IS_CHAR_DEAD bc1_marshall[1] TASK_KILL_CHAR_ON_FOOT bc1_marshall[1] scplayer ENDIF IF NOT IS_CHAR_DEAD bc1_marshall[2] TASK_KILL_CHAR_ON_FOOT bc1_marshall[2] scplayer ENDIF IF NOT IS_CHAR_DEAD bc1_marshall[3] TASK_KILL_CHAR_ON_FOOT bc1_marshall[3] scplayer ENDIF IF NOT IS_CHAR_DEAD bc1_marshall[4] TASK_KILL_CHAR_ON_FOOT bc1_marshall[4] scplayer ENDIF IF NOT IS_CAR_DEAD bc1_marshall_car SET_CAR_PROOFS bc1_marshall_car FALSE FALSE FALSE FALSE FALSE LOCK_CAR_DOORS bc1_marshall_car CARLOCK_UNLOCKED FREEZE_CAR_POSITION bc1_marshall_car FALSE ENDIF //PRINT_NOW ( BCR1_10 ) 5000 1 // Take the photograph... //bc1_stage = 7 ENDIF IF IS_CHAR_DEAD bc1_marshall[1] OR IS_CHAR_DEAD bc1_marshall[2] OR IS_CHAR_DEAD bc1_marshall[3] OR IS_CHAR_DEAD bc1_marshall[4] IF bc1_onfoot_attack[1] = 0 IF NOT IS_CHAR_DEAD bc1_marshall[1] TASK_KILL_CHAR_ON_FOOT bc1_marshall[1] scplayer bc1_onfoot_attack[1] = 1 ENDIF ENDIF IF bc1_onfoot_attack[2] = 0 IF NOT IS_CHAR_DEAD bc1_marshall[2] TASK_KILL_CHAR_ON_FOOT bc1_marshall[2] scplayer bc1_onfoot_attack[2] = 1 ENDIF ENDIF IF bc1_onfoot_attack[3] = 0 IF NOT IS_CHAR_DEAD bc1_marshall[3] TASK_KILL_CHAR_ON_FOOT bc1_marshall[3] scplayer bc1_onfoot_attack[3] = 1 ENDIF ENDIF IF bc1_onfoot_attack[4] = 0 IF NOT IS_CHAR_DEAD bc1_marshall[4] TASK_KILL_CHAR_ON_FOOT bc1_marshall[4] scplayer bc1_onfoot_attack[4] = 1 ENDIF ENDIF ENDIF ENDIF // locate gosub IF NOT IS_CHAR_DEAD scplayer // marshall 1 IF NOT IS_CHAR_DEAD bc1_marshall[1] bc1_cur_marshall = 1 GOSUB bc1_marshall_locate bc1_marshall_x[1] = bc1_cur_marsh_x bc1_marshall_y[1] = bc1_cur_marsh_y bc1_marshall_z[1] = bc1_cur_marsh_z IF bc1_car_attack[1] = 0 IF LOCATE_CHAR_IN_CAR_3D scplayer bc1_marshall_x[1] bc1_marshall_y[1] bc1_marshall_z[1] 30.0 30.0 30.0 FALSE IF NOT IS_CAR_DEAD bc1_player_car TASK_DESTROY_CAR bc1_marshall[1] bc1_player_car bc1_car_attack[1] = 1 bc1_onfoot_attack[1] = 0 IF bc1_drive_car = 0 IF NOT IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target PERFORM_SEQUENCE_TASK bc1_target bc1_run_to_car bc1_drive_car = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF bc1_onfoot_attack[1] = 0 IF LOCATE_CHAR_ON_FOOT_3D scplayer bc1_marshall_x[1] bc1_marshall_y[1] bc1_marshall_z[1] 5.0 5.0 5.0 FALSE TASK_KILL_CHAR_ON_FOOT bc1_marshall[1] scplayer bc1_onfoot_attack[1] = 1 bc1_car_attack[1] = 0 IF bc1_drive_car = 0 IF NOT IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target PERFORM_SEQUENCE_TASK bc1_target bc1_run_to_car bc1_drive_car = 1 ENDIF ENDIF ENDIF ENDIF IF IS_CHAR_SHOOTING_IN_AREA scplayer -2774.03 -1572.78 -2837.13 -1468.24 FALSE TASK_KILL_CHAR_ON_FOOT bc1_marshall[1] scplayer bc1_onfoot_attack[1] = 1 bc1_car_attack[1] = 0 IF bc1_drive_car = 0 IF NOT IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target PERFORM_SEQUENCE_TASK bc1_target bc1_run_to_car bc1_drive_car = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // marshall 2 IF NOT IS_CHAR_DEAD bc1_marshall[2] bc1_cur_marshall = 2 GOSUB bc1_marshall_locate bc1_marshall_x[2] = bc1_cur_marsh_x bc1_marshall_y[2] = bc1_cur_marsh_y bc1_marshall_z[2] = bc1_cur_marsh_z IF bc1_car_attack[2] = 0 IF LOCATE_CHAR_IN_CAR_3D scplayer bc1_marshall_x[2] bc1_marshall_y[2] bc1_marshall_z[2] 30.0 30.0 30.0 FALSE IF NOT IS_CAR_DEAD bc1_player_car TASK_DESTROY_CAR bc1_marshall[2] bc1_player_car bc1_car_attack[2] = 1 bc1_onfoot_attack[2] = 0 IF bc1_drive_car = 0 IF NOT IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target PERFORM_SEQUENCE_TASK bc1_target bc1_run_to_car bc1_drive_car = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF bc1_onfoot_attack[2] = 0 IF LOCATE_CHAR_ON_FOOT_3D scplayer bc1_marshall_x[2] bc1_marshall_y[2] bc1_marshall_z[2] 5.0 5.0 5.0 FALSE TASK_KILL_CHAR_ON_FOOT bc1_marshall[2] scplayer bc1_onfoot_attack[2] = 1 bc1_car_attack[2] = 0 IF bc1_drive_car = 0 IF NOT IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target PERFORM_SEQUENCE_TASK bc1_target bc1_run_to_car bc1_drive_car = 1 ENDIF ENDIF ENDIF ENDIF IF IS_CHAR_SHOOTING_IN_AREA scplayer -2774.03 -1572.78 -2837.13 -1468.24 FALSE TASK_KILL_CHAR_ON_FOOT bc1_marshall[2] scplayer bc1_onfoot_attack[2] = 1 bc1_car_attack[2] = 0 IF bc1_drive_car = 0 IF NOT IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target PERFORM_SEQUENCE_TASK bc1_target bc1_run_to_car bc1_drive_car = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // marshall 3 IF NOT IS_CHAR_DEAD bc1_marshall[3] bc1_cur_marshall = 3 GOSUB bc1_marshall_locate bc1_marshall_x[3] = bc1_cur_marsh_x bc1_marshall_y[3] = bc1_cur_marsh_y bc1_marshall_z[3] = bc1_cur_marsh_z IF bc1_car_attack[3] = 0 IF LOCATE_CHAR_IN_CAR_3D scplayer bc1_marshall_x[3] bc1_marshall_y[3] bc1_marshall_z[3] 30.0 30.0 30.0 FALSE IF NOT IS_CAR_DEAD bc1_player_car TASK_DESTROY_CAR bc1_marshall[3] bc1_player_car bc1_car_attack[3] = 1 bc1_onfoot_attack[3] = 0 IF bc1_drive_car = 0 IF NOT IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target PERFORM_SEQUENCE_TASK bc1_target bc1_run_to_car bc1_drive_car = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF bc1_onfoot_attack[3] = 0 IF LOCATE_CHAR_ON_FOOT_3D scplayer bc1_marshall_x[3] bc1_marshall_y[3] bc1_marshall_z[3] 5.0 5.0 5.0 FALSE TASK_KILL_CHAR_ON_FOOT bc1_marshall[3] scplayer bc1_onfoot_attack[3] = 1 bc1_car_attack[3] = 0 IF bc1_drive_car = 0 IF NOT IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target PERFORM_SEQUENCE_TASK bc1_target bc1_run_to_car bc1_drive_car = 1 ENDIF ENDIF ENDIF ENDIF IF IS_CHAR_SHOOTING_IN_AREA scplayer -2774.03 -1572.78 -2837.13 -1468.24 FALSE TASK_KILL_CHAR_ON_FOOT bc1_marshall[3] scplayer bc1_onfoot_attack[3] = 1 bc1_car_attack[3] = 0 IF bc1_drive_car = 0 IF NOT IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target PERFORM_SEQUENCE_TASK bc1_target bc1_run_to_car bc1_drive_car = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // marshall 4 IF NOT IS_CHAR_DEAD bc1_marshall[4] bc1_cur_marshall = 4 GOSUB bc1_marshall_locate bc1_marshall_x[4] = bc1_cur_marsh_x bc1_marshall_y[4] = bc1_cur_marsh_y bc1_marshall_z[4] = bc1_cur_marsh_z IF bc1_car_attack[4] = 0 IF LOCATE_CHAR_IN_CAR_3D scplayer bc1_marshall_x[4] bc1_marshall_y[4] bc1_marshall_z[4] 30.0 30.0 30.0 FALSE IF NOT IS_CAR_DEAD bc1_player_car TASK_DESTROY_CAR bc1_marshall[4] bc1_player_car bc1_car_attack[4] = 1 bc1_onfoot_attack[4] = 0 IF bc1_drive_car = 0 IF NOT IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target PERFORM_SEQUENCE_TASK bc1_target bc1_run_to_car bc1_drive_car = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF bc1_onfoot_attack[4] = 0 IF LOCATE_CHAR_ON_FOOT_3D scplayer bc1_marshall_x[4] bc1_marshall_y[4] bc1_marshall_z[4] 5.0 5.0 5.0 FALSE TASK_KILL_CHAR_ON_FOOT bc1_marshall[4] scplayer bc1_onfoot_attack[4] = 1 bc1_car_attack[4] = 0 IF bc1_drive_car = 0 IF NOT IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target PERFORM_SEQUENCE_TASK bc1_target bc1_run_to_car bc1_drive_car = 1 ENDIF ENDIF ENDIF ENDIF IF IS_CHAR_SHOOTING_IN_AREA scplayer -2774.03 -1572.78 -2837.13 -1468.24 FALSE TASK_KILL_CHAR_ON_FOOT bc1_marshall[4] scplayer bc1_onfoot_attack[4] = 1 bc1_car_attack[4] = 0 IF bc1_drive_car = 0 IF NOT IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target PERFORM_SEQUENCE_TASK bc1_target bc1_run_to_car bc1_drive_car = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF bc1_drive_car = 1 IF NOT IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target IF IS_CHAR_SITTING_IN_CAR bc1_target bc1_marshall_car bc1_cut = 0 bc1_stage = 3 ENDIF ENDIF ENDIF ENDIF IF IS_CHAR_DEAD bc1_target IF NOT IS_CHAR_DEAD bc1_marshall[1] TASK_KILL_CHAR_ON_FOOT bc1_marshall[1] scplayer ENDIF IF NOT IS_CHAR_DEAD bc1_marshall[2] TASK_KILL_CHAR_ON_FOOT bc1_marshall[2] scplayer ENDIF IF NOT IS_CHAR_DEAD bc1_marshall[3] TASK_KILL_CHAR_ON_FOOT bc1_marshall[3] scplayer ENDIF IF NOT IS_CHAR_DEAD bc1_marshall[4] TASK_KILL_CHAR_ON_FOOT bc1_marshall[4] scplayer ENDIF //PRINT_NOW ( BCR1_10 ) 5000 1 // Take the photograph... //bc1_stage = 7 IF NOT IS_CAR_DEAD bc1_marshall_car SET_CAR_PROOFS bc1_marshall_car FALSE FALSE FALSE FALSE FALSE LOCK_CAR_DOORS bc1_marshall_car CARLOCK_UNLOCKED FREEZE_CAR_POSITION bc1_marshall_car FALSE ENDIF ENDIF IF IS_CHAR_DEAD bc1_marshall[1] AND IS_CHAR_DEAD bc1_marshall[2] AND IS_CHAR_DEAD bc1_marshall[3] AND IS_CHAR_DEAD bc1_marshall[4] bc1_cut = 0 bc1_stage = 2 ENDIF ENDIF ENDIF // set target to get in car and drive away IF bc1_stage = 2 IF NOT IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target IF bc1_drive_car = 0 PERFORM_SEQUENCE_TASK bc1_target bc1_run_to_car // if car is hidden prior to getaway, teleport instantly bc1_drive_car = 1 bc1_cut = 0 bc1_stage = 3 ELSE bc1_cut = 0 bc1_stage = 3 ENDIF ELSE PRINT_NOW ( BCR1_10 ) 5000 1 // Take the photograph... bc1_stage = 7 ENDIF ENDIF ENDIF // tell player to avoid blowing up the car as he needs remains that can be identified, photographed. // set car properties / mission. tell the target to drive to the nearest police station. that's the time limit. IF bc1_stage = 3 IF NOT IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target IF IS_CHAR_IN_CAR bc1_target bc1_marshall_car IF bc1_cut > 2 bc1_cut = 0 ENDIF IF IS_PLAYBACK_GOING_ON_FOR_CAR bc1_marshall_car GET_OFFSET_FROM_CAR_IN_WORLD_COORDS bc1_marshall_car 0.0 4.0 0.0 bc1_offset_x bc1_offset_y bc1_offset_z bc1_min_x = bc1_offset_x - 1.5 bc1_min_y = bc1_offset_y - 1.5 bc1_min_z = bc1_offset_z - 1.5 bc1_max_x = bc1_offset_x + 1.5 bc1_max_y = bc1_offset_y + 1.5 bc1_max_z = bc1_offset_z + 1.5 IF IS_AREA_OCCUPIED bc1_min_x bc1_min_y bc1_min_z bc1_max_x bc1_max_y bc1_max_z FALSE FALSE TRUE FALSE FALSE STOP_PLAYBACK_RECORDED_CAR bc1_marshall_car ENDIF ENDIF IF IS_PLAYBACK_GOING_ON_FOR_CAR bc1_marshall_car IF LOCATE_CHAR_IN_CAR_3D bc1_target bc1_route_x[bc1_route] bc1_route_y[bc1_route] bc1_route_z[bc1_route] 20.0 20.0 20.0 FALSE bc1_route++ bc1_route_nx++ ENDIF ENDIF IF bc1_cut = 0 SET_CAR_HEALTH bc1_marshall_car 1000 SET_CAR_CRUISE_SPEED bc1_marshall_car 40.0 SET_CAR_DRIVING_STYLE bc1_marshall_car DRIVINGMODE_PLOUGHTHROUGH SET_CAR_ONLY_DAMAGED_BY_PLAYER bc1_marshall_car TRUE SET_CAR_PROOFS bc1_marshall_car FALSE FALSE FALSE FALSE FALSE REQUEST_CAR_RECORDING 170 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 170 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD bc1_marshall_car AND NOT IS_CHAR_DEAD bc1_target IF IS_CHAR_SITTING_IN_CAR bc1_target bc1_marshall_car //SET_CHAR_DECISION_MAKER bc1_target DM_PED_RANDOM_WEAK FREEZE_CAR_POSITION bc1_marshall_car FALSE START_PLAYBACK_RECORDED_CAR bc1_marshall_car 170 SET_PLAYBACK_SPEED bc1_marshall_car 0.65 ADD_STUCK_CAR_CHECK_WITH_WARP bc1_marshall_car 1.0 2000 TRUE TRUE TRUE 1 // ELSE // IF NOT IS_CHAR_IN_CAR bc1_target bc1_marshall_car // SET_CHAR_DECISION_MAKER bc1_target DM_PED_RANDOM_WEAK // WARP_CHAR_INTO_CAR bc1_target bc1_marshall_car // FREEZE_CAR_POSITION bc1_marshall_car FALSE // START_PLAYBACK_RECORDED_CAR bc1_marshall_car 170 // SET_PLAYBACK_SPEED bc1_marshall_car 0.65 // ADD_STUCK_CAR_CHECK_WITH_WARP bc1_marshall_car 1.0 2000 TRUE TRUE TRUE 1 // ENDIF ENDIF ENDIF PRINT_NOW ( BCR1_07 ) 4000 1 // He's getting away" IF NOT IS_CAR_DEAD bc1_bmx IF NOT IS_CHAR_ON_ANY_BIKE scplayer AND NOT IS_CHAR_IN_ANY_CAR scplayer PRINT ( BCR1_14 ) 4000 1 ENDIF ENDIF SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION -2795.2522 -1505.9489 138.8073 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2795.9998 -1506.5857 138.9953 JUMP_CUT GET_GAME_TIMER bc1_timer_start bc1_cut = 1 ENDIF IF bc1_cut = 1 IF IS_CHAR_ON_SCREEN scplayer IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer bc1_player_car SET_CAR_COORDINATES bc1_player_car -2789.6721 -1491.1418 137.1726 SET_CAR_HEADING bc1_player_car 227.9636 ELSE SET_CHAR_COORDINATES scplayer -2789.6721 -1491.1418 137.1726 SET_CHAR_HEADING scplayer 227.9636 ENDIF ENDIF GET_GAME_TIMER bc1_timer_end bc1_timer_diff = bc1_timer_end - bc1_timer_start IF bc1_timer_diff > 4000 GET_GAME_TIMER bc1_timer_start bc1_cut = 2 ENDIF ENDIF ENDIF IF bc1_cut = 2 GET_GAME_TIMER bc1_timer_end bc1_timer_diff = bc1_timer_end - bc1_timer_start IF bc1_timer_diff > 1 //CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER bc1_stage = 4 //bc1_cut = 0 //reactivate the enemy IF NOT IS_CHAR_DEAD bc1_marshall[1] TASK_KILL_CHAR_ON_FOOT bc1_marshall[1] scplayer ENDIF IF NOT IS_CHAR_DEAD bc1_marshall[2] TASK_KILL_CHAR_ON_FOOT bc1_marshall[2] scplayer ENDIF IF NOT IS_CHAR_DEAD bc1_marshall[3] TASK_KILL_CHAR_ON_FOOT bc1_marshall[3] scplayer ENDIF IF NOT IS_CHAR_DEAD bc1_marshall[4] TASK_KILL_CHAR_ON_FOOT bc1_marshall[4] scplayer ENDIF ENDIF ENDIF ELSE SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER PRINT_NOW ( BCR1_10 ) 5000 1 // Take the photograph... bc1_stage = 7 ENDIF ELSE SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER bc1_stage = 4 ENDIF ENDIF // when car is burning - stop car. IF bc1_stage = 4 IF IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target IF NOT IS_CHAR_ON_FOOT bc1_target DELETE_CHAR bc1_target PRINT_NOW ( BCR1_09 ) 5000 1 // He can't be identified! GOTO mission_failed_bcrash1 ELSE bc1_stage = 7 ENDIF ENDIF ENDIF // IF IS_CHAR_DEAD bc1_target // REMOVE_BLIP bc1_target_blip // ADD_BLIP_FOR_DEAD_CHAR bc1_target bc1_target_blip // bc1_stage = 7 // ENDIF IF NOT IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target AND NOT IS_CHAR_DEAD scplayer IF IS_CHAR_SITTING_IN_CAR bc1_target bc1_marshall_car IF IS_PLAYBACK_GOING_ON_FOR_CAR bc1_marshall_car IF LOCATE_CHAR_IN_CAR_3D bc1_target bc1_route_x[bc1_route] bc1_route_y[bc1_route] bc1_route_z[bc1_route] 15.0 15.0 15.0 FALSE bc1_route++ bc1_route_nx++ ENDIF ENDIF IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR bc1_marshall_car // IF bc1_target_z < 40.0 // bc1_route = bc1_final_dest // ENDIF IF bc1_wander = 0 TASK_CAR_DRIVE_TO_COORD bc1_target bc1_marshall_car bc1_route_x[bc1_route] bc1_route_y[bc1_route] bc1_route_z[bc1_route] bc1_car_speed MODE_RACING FALSE DRIVINGMODE_AVOIDCARS bc1_wander = 1 ENDIF IF IS_CAR_ON_FIRE bc1_marshall_car OR IS_CAR_UPSIDEDOWN bc1_marshall_car SET_CAR_CRUISE_SPEED bc1_marshall_car 0.0 IF NOT IS_CHAR_DEAD bc1_target SET_CHAR_RELATIONSHIP bc1_target ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER bc1_target DM_PED_RANDOM_WEAK ENDIF bc1_stage = 5 ENDIF IF bc1_wander = 1 IF bc1_route < bc1_final_dest GOSUB bc1_waypoint_check IF LOCATE_CHAR_IN_CAR_3D bc1_target bc1_route_x[bc1_route] bc1_route_y[bc1_route] bc1_route_z[bc1_route] 5.0 5.0 5.0 FALSE // IF bc1_route = 3 // OR bc1_route = 4 // OR bc1_route = 6 // bc1_car_speed = 30.0 // ELSE // IF bc1_route = 8 // OR bc1_route = 9 // bc1_car_speed = 15.0 // ENDIF IF bc1_route > 7 AND bc1_route < 19 bc1_car_speed = 20.0 ELSE bc1_car_speed = 30.0 ENDIF // ENDIF //SET_CAR_CRUISE_SPEED bc1_marshall_car bc1_car_speed bc1_route++ bc1_route_nx++ TASK_CAR_DRIVE_TO_COORD bc1_target bc1_marshall_car bc1_route_x[bc1_route] bc1_route_y[bc1_route] bc1_route_z[bc1_route] bc1_car_speed MODE_RACING FALSE DRIVINGMODE_AVOIDCARS ENDIF ELSE IF LOCATE_CHAR_IN_CAR_3D bc1_target bc1_route_x[bc1_route] bc1_route_y[bc1_route] bc1_route_z[bc1_route] 8.0 8.0 8.0 FALSE TASK_CAR_DRIVE_WANDER bc1_target bc1_marshall_car 50.0 DRIVINGMODE_AVOIDCARS SET_CAR_CRUISE_SPEED bc1_marshall_car 50.0 bc1_wander = 2 ENDIF ENDIF ENDIF IF bc1_wander = 2 IF NOT IS_CHAR_ON_SCREEN bc1_target IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bc1_target 100.0 100.0 100.0 FALSE PRINT_NOW ( BCR1_12 ) 6000 1 // You let him get away GOTO mission_failed_bcrash1 ENDIF ENDIF ENDIF ENDIF IF bc1_speed_boost = 0 GET_GAME_TIMER bc1_timer_end bc1_timer_diff = bc1_timer_end - bc1_timer_start IF bc1_timer_diff > 6000 IF IS_CHAR_IN_ANY_CAR scplayer IF IS_PLAYBACK_GOING_ON_FOR_CAR bc1_marshall_car IF LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer bc1_marshall_car 30.0 30.0 30.0 FALSE SET_PLAYBACK_SPEED bc1_marshall_car 0.8 PRINT_NOW ( BCR1_15 ) 6000 1 bc1_speed_boost = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_PLAYBACK_GOING_ON_FOR_CAR bc1_marshall_car GET_OFFSET_FROM_CAR_IN_WORLD_COORDS bc1_marshall_car 0.0 4.0 0.0 bc1_offset_x bc1_offset_y bc1_offset_z bc1_min_x = bc1_offset_x - 1.5 bc1_min_y = bc1_offset_y - 1.5 bc1_min_z = bc1_offset_z - 1.5 bc1_max_x = bc1_offset_x + 1.5 bc1_max_y = bc1_offset_y + 1.5 bc1_max_z = bc1_offset_z + 1.5 IF IS_AREA_OCCUPIED bc1_min_x bc1_min_y bc1_min_z bc1_max_x bc1_max_y bc1_max_z FALSE TRUE FALSE FALSE FALSE STOP_PLAYBACK_RECORDED_CAR bc1_marshall_car ENDIF IF IS_CAR_ON_FIRE bc1_marshall_car STOP_PLAYBACK_RECORDED_CAR bc1_marshall_car SET_CAR_CRUISE_SPEED bc1_marshall_car 0.0 bc1_stage = 5 ENDIF GET_CAR_HEALTH bc1_marshall_car bc1_health IF bc1_health < 900 STOP_PLAYBACK_RECORDED_CAR bc1_marshall_car ENDIF ENDIF IF bc1_onscreen = 1 GET_CHAR_COORDINATES scplayer bc1_player_x bc1_player_y bc1_player_z GET_CHAR_COORDINATES bc1_target bc1_target_x bc1_target_y bc1_target_z IF NOT IS_LINE_OF_SIGHT_CLEAR bc1_player_x bc1_player_y bc1_player_z bc1_target_x bc1_target_y bc1_target_z TRUE FALSE FALSE FALSE FALSE GET_GAME_TIMER bc1_timer_start bc1_onscreen = 0 ENDIF ENDIF IF bc1_onscreen = 0 GET_CHAR_COORDINATES scplayer bc1_player_x bc1_player_y bc1_player_z GET_CHAR_COORDINATES bc1_target bc1_target_x bc1_target_y bc1_target_z IF NOT IS_LINE_OF_SIGHT_CLEAR bc1_player_x bc1_player_y bc1_player_z bc1_target_x bc1_target_y bc1_target_z TRUE FALSE FALSE FALSE FALSE GET_GAME_TIMER bc1_timer_end bc1_timer_diff = bc1_timer_end - bc1_timer_start IF bc1_timer_diff > 1000 AND bc1_timer_diff < 6000 PRINT_NOW ( BCR1_07 ) 100 1 ENDIF IF bc1_timer_diff > 30000 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bc1_target 25.0 25.0 25.0 FALSE PRINT_NOW ( BCR1_12 ) 5000 1 // You let him get away! GOTO mission_failed_bcrash1 ENDIF ENDIF ENDIF IF IS_LINE_OF_SIGHT_CLEAR bc1_player_x bc1_player_y bc1_player_z bc1_target_x bc1_target_y bc1_target_z TRUE FALSE FALSE FALSE FALSE bc1_onscreen = 1 ENDIF ENDIF ENDIF IF IS_CAR_IN_WATER bc1_marshall_car IF DOES_CAR_HAVE_STUCK_CAR_CHECK bc1_marshall_car REMOVE_STUCK_CAR_CHECK bc1_marshall_car ENDIF ENDIF ENDIF ENDIF ENDIF // When car is burning - run away from it. IF bc1_stage = 5 IF IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target IF NOT IS_CHAR_ON_FOOT bc1_target DELETE_CHAR bc1_target PRINT_NOW ( BCR1_09 ) 5000 1 // He can't be identified! GOTO mission_failed_bcrash1 ELSE bc1_stage = 6 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target IF IS_CAR_STOPPED bc1_marshall_car IF IS_CHAR_SITTING_IN_CAR bc1_target bc1_marshall_car // SET_CHAR_NEVER_TARGETTED bc1_target FALSE GET_CAR_COORDINATES bc1_marshall_car bc1_marshall_car_x bc1_marshall_car_y bc1_marshall_car_z TASK_LEAVE_CAR_AND_FLEE bc1_target bc1_marshall_car bc1_marshall_car_x bc1_marshall_car_y bc1_marshall_car_z // flee from burning car bc1_stage = 6 ENDIF ENDIF ENDIF ELSE IF NOT IS_CHAR_DEAD bc1_target AND NOT IS_CAR_DEAD bc1_marshall_car IF IS_CHAR_SITTING_IN_CAR bc1_target bc1_marshall_car TASK_LEAVE_CAR_AND_FLEE bc1_target bc1_marshall_car bc1_marshall_car_x bc1_marshall_car_y bc1_marshall_car_z // flee from burning car bc1_stage = 6 ENDIF ENDIF ENDIF ENDIF IF bc1_stage > 0 AND bc1_stage < 7 IF DOES_CHAR_EXIST bc1_target IF IS_CHAR_HEAD_MISSING bc1_target IF NOT IS_CAR_DEAD bc1_marshall_car LOCK_CAR_DOORS bc1_marshall_car CARLOCK_UNLOCKED ENDIF PRINT_NOW ( BCR1_09 ) 5000 1 // He can't be identified! GOTO mission_failed_bcrash1 ENDIF IF IS_CHAR_DEAD bc1_target IF NOT IS_CAR_DEAD bc1_marshall_car LOCK_CAR_DOORS bc1_marshall_car CARLOCK_UNLOCKED ENDIF bc1_stage = 7 ENDIF IF NOT IS_CHAR_DEAD bc1_target IF HAS_CHAR_BEEN_PHOTOGRAPHED bc1_target ENDIF ENDIF // IF bc1_stage < 3 // IF NOT IS_CAR_DEAD bc1_marshall_car // IF NOT IS_CHAR_DEAD bc1_target // IF IS_CHAR_IN_CAR bc1_target bc1_marshall_car // bc1_stage = 3 // ENDIF // ENDIF // ENDIF // ENDIF IF bc1_drive_car = 1 IF NOT bc1_flee = 2 IF IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target OPEN_SEQUENCE_TASK bc1_run_away TASK_FOLLOW_PATH_NODES_TO_COORD -1 -2822.4700 -1518.5946 139.7656 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD -1 -2822.9700 -1514.2443 138.2893 PEDMOVE_RUN -2 TASK_FLEE_CHAR -1 scplayer 1000.0 5000000 CLOSE_SEQUENCE_TASK bc1_run_away PERFORM_SEQUENCE_TASK bc1_target bc1_run_away bc1_flee = 2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // remove car blip and add target blip IF bc1_stage = 6 IF NOT IS_CAR_DEAD bc1_marshall_car IF NOT IS_CHAR_DEAD bc1_target IF NOT IS_CHAR_SITTING_IN_CAR bc1_target bc1_marshall_car REMOVE_BLIP bc1_target_blip ADD_BLIP_FOR_CHAR bc1_target bc1_target_blip PRINT_NOW ( BCR1_08 ) 5000 1 // He's getting away on foot" // PRINT_NOW he's getting away on foot! bc1_stage = 7 ENDIF ENDIF ENDIF ENDIF IF bc1_stage > 3 IF bc1_target_photo = 0 IF NOT DOES_CHAR_EXIST bc1_target PRINT_NOW ( BCR1_09 ) 5000 1 // He can't be identified! GOTO mission_failed_bcrash1 ENDIF ENDIF ENDIF // check that photo has been taken of dead target IF bc1_stage = 7 IF DOES_CHAR_EXIST bc1_target IF IS_CHAR_HEAD_MISSING bc1_target PRINT_NOW ( BCR1_09 ) 5000 1 // He can't be identified! GOTO mission_failed_bcrash1 ENDIF ENDIF IF bc1_target_photo = 0 IF NOT IS_CHAR_DEAD bc1_target IF bc1_flee = 0 GET_CHAR_COORDINATES bc1_target bc1_target_x bc1_target_y bc1_target_z IF NOT IS_CAR_DEAD bc1_marshall_car GET_SCRIPT_TASK_STATUS bc1_target TASK_LEAVE_CAR_AND_FLEE bc1_status ELSE bc1_status = FINISHED_TASK ENDIF IF bc1_status = FINISHED_TASK TASK_FLEE_CHAR bc1_target scplayer 50.0 100000000 bc1_flee = 1 bc1_status = 5 ENDIF ENDIF IF bc1_flee = 1 GET_SCRIPT_TASK_STATUS bc1_target TASK_FLEE_CHAR bc1_status IF bc1_status = FINISHED_TASK TASK_FLEE_CHAR bc1_target scplayer 50.0 100000000 ENDIF ENDIF IF bc1_onscreen = 1 GET_CHAR_COORDINATES scplayer bc1_player_x bc1_player_y bc1_player_z GET_CHAR_COORDINATES bc1_target bc1_target_x bc1_target_y bc1_target_z IF NOT IS_LINE_OF_SIGHT_CLEAR bc1_player_x bc1_player_y bc1_player_z bc1_target_x bc1_target_y bc1_target_z TRUE FALSE FALSE FALSE FALSE GET_GAME_TIMER bc1_timer_start bc1_onscreen = 0 ENDIF ENDIF IF bc1_onscreen = 0 GET_CHAR_COORDINATES scplayer bc1_player_x bc1_player_y bc1_player_z GET_CHAR_COORDINATES bc1_target bc1_target_x bc1_target_y bc1_target_z IF NOT IS_LINE_OF_SIGHT_CLEAR bc1_player_x bc1_player_y bc1_player_z bc1_target_x bc1_target_y bc1_target_z TRUE FALSE FALSE FALSE FALSE GET_GAME_TIMER bc1_timer_end bc1_timer_diff = bc1_timer_end - bc1_timer_start IF bc1_timer_diff > 1000 PRINT_NOW ( BCR1_07 ) 100 1 ENDIF IF bc1_timer_diff > 15000 PRINT_NOW ( BCR1_12 ) 5000 1 // You let him get away! GOTO mission_failed_bcrash1 ENDIF ENDIF IF IS_LINE_OF_SIGHT_CLEAR bc1_player_x bc1_player_y bc1_player_z bc1_target_x bc1_target_y bc1_target_z TRUE FALSE FALSE FALSE FALSE bc1_onscreen = 1 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD scplayer IF DOES_CHAR_EXIST bc1_target IF HAS_CHAR_BEEN_PHOTOGRAPHED bc1_target IF IS_CHAR_DEAD bc1_target REMOVE_BLIP bc1_target_blip bc1_target_photo = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF bc1_target_photo = 1 ADD_BLIP_FOR_COORD -2044.10 -2523.86 31.11 bc1_drop_blip PRINT_NOW ( BCR1_17 ) 5000 1 bc1_stage = 8 ENDIF ENDIF IF bc1_stage = 8 IF NOT IS_CHAR_DEAD scplayer IF LOCATE_CHAR_ON_FOOT_3D scplayer -2044.10 -2523.86 31.11 1.2 1.2 2.0 TRUE SET_CHAR_AMMO scplayer WEAPONTYPE_CAMERA 0 GOTO mission_passed_bcrash1 ENDIF ENDIF ENDIF IF bc1_stage = 7 //IF bc1_flee = 1 IF bc1_target_photo = 0 GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_CAMERA bc1_camera_ammo IF bc1_camera_ammo > 0 IF bc1_camera_ammo_flag = 2 ADD_BLIP_FOR_DEAD_CHAR bc1_target bc1_target_blip REMOVE_BLIP bc1_camera_pickup_blip bc1_camera_ammo_flag = 1 ENDIF IF bc1_camera_ammo_flag = 1 IF IS_CHAR_IN_WATER bc1_target bc1_in_water = 1 ENDIF IF NOT IS_CHAR_DEAD scplayer AND IS_CHAR_DEAD bc1_target PRINT_NOW ( BCR1_10 ) 100 1 // Take the photograph... IF DOES_CHAR_EXIST bc1_target IF IS_CHAR_DEAD bc1_target IF bc1_photo_loc = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer bc1_target_x bc1_target_y bc1_target_z 5.0 5.0 5.0 FALSE bc1_photo_loc = 1 ENDIF ENDIF IF bc1_photo_loc = 1 IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer bc1_target_x bc1_target_y bc1_target_z 100.0 100.0 30.0 FALSE IF bc1_in_water = 1 PRINT_NOW ( BCR1_16 ) 5000 1 // ******Change to: The sharks got him! GOTO mission_failed_bcrash1 ELSE PRINT_NOW ( BCR1_16 ) 5000 1 // The buzzards got him! GOTO mission_failed_bcrash1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ELSE IF IS_CHAR_DEAD bc1_target IF bc1_camera_ammo_flag = 1 IF bc1_camera_ammo = 0 bc1_camera_ammo_flag = 0 ENDIF ENDIF IF bc1_camera_ammo_flag = 0 PRINT_NOW ( BCR1_11 ) 5000 1 // You need a camera, go and pick one up. REMOVE_BLIP bc1_target_blip CREATE_PICKUP_WITH_AMMO CAMERA PICKUP_ONCE 24 -2044.10 -2523.86 31.11 bc1_camera_pickup ADD_BLIP_FOR_PICKUP bc1_camera_pickup bc1_camera_pickup_blip bc1_camera_ammo_flag = 2 ENDIF ENDIF ENDIF ENDIF //ENDIF IF bc1_flee = 0 AND NOT bc1_stage = 4 AND NOT bc1_stage = 5 IF NOT IS_CHAR_DEAD bc1_target AND NOT IS_CHAR_DEAD scplayer IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer bc1_target 10.0 10.0 FALSE TASK_FLEE_CHAR bc1_target scplayer 50.0 100000000 bc1_flee = 1 ENDIF ENDIF ENDIF ENDIF // In car check IF bc1_stage > 3 IF bc1_blipped = 1 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD bc1_bmx AND NOT IS_CHAR_DEAD bc1_target IF IS_CHAR_IN_CAR scplayer bc1_bmx OR NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer bc1_bmx 50.0 50.0 FALSE PRINT ( BCR1_13 ) 5000 1 // Chase and kill bc1_blipped = 0 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer IF NOT IS_CHAR_IN_CAR scplayer bc1_bmx PRINT ( BCR1_13 ) 5000 1 // Chase and kill bc1_blipped = 0 ENDIF ENDIF ENDIF ENDIF ENDIF GOTO mission_loop_bcrash1 WAIT 1500 RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON GOTO mission_passed_bcrash1 // **************************************** Mission bcrash1 failed ************************ mission_failed_bcrash1: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" IF IS_PLAYER_PLAYING player1 IF NOT IS_CHAR_DEAD scplayer IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_CAMERA SET_CHAR_AMMO scplayer WEAPONTYPE_CAMERA 0 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD bc1_target DELETE_CHAR bc1_target ENDIF RETURN // **************************************** mission bcrash1 passed ************************ mission_passed_bcrash1: REGISTER_MISSION_PASSED ( BCRASH1 ) PLAYER_MADE_PROGRESS 1 //PRINT_WITH_NUMBER_BIG ( M_PASS ) 400 5000 1 //"Mission Passed!" PRINT_WITH_NUMBER_BIG ( M_PASSD ) 0 5000 1 //"Mission Passed!" //ADD_SCORE player1 400 CLEAR_WANTED_LEVEL player1 SET_INT_STAT PASSED_BCRASH1 1 PLAY_MISSION_PASSED_TUNE 1 flag_bcrash_mission_counter ++ REMOVE_BLIP bcrash_contact_blip call_delay = 15000 //START_NEW_SCRIPT cat_mission_loop //REMOVE_BLIP catalina_contact_blip[5] //ADD_SPRITE_BLIP_FOR_COORD 681.37 -477.27 15.32 RADAR_SPRITE_CAT catalina_contact_blip[5] //TRUCK STOP RETURN // ********************************** mission cleanup ************************************** mission_cleanup_bcrash1: GOSUB bc1_target_delete GOSUB bc1_marshall_delete GOSUB bc1_marshall_car_delete IF IS_PLAYER_PLAYING player1 IF NOT IS_CHAR_DEAD scplayer IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_CAMERA SET_CHAR_AMMO scplayer WEAPONTYPE_CAMERA 36 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD bc1_bmx SET_CAR_PROOFS bc1_bmx FALSE FALSE FALSE FALSE FALSE ENDIF CLEAR_CHAR_RELATIONSHIP scplayer ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 MARK_MODEL_AS_NO_LONGER_NEEDED CAMERA MARK_MODEL_AS_NO_LONGER_NEEDED micro_uzi MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ REMOVE_BLIP bc1_target_blip REMOVE_BLIP bc1_hut_blip REMOVE_BLIP bc1_check_blip REMOVE_BLIP bc1_drop_blip REMOVE_BLIP bc1_camera_pickup_blip REMOVE_PICKUP bc1_camera_pickup flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED RETURN // gosubs ---------------------------------------------------------------------------------- bc1_marshall_locate: GET_CHAR_COORDINATES bc1_marshall[bc1_cur_marshall] bc1_cur_marsh_x bc1_cur_marsh_y bc1_cur_marsh_z RETURN bc1_waypoint_check: bc1_closest = -1 bc1_distance = 9999999.99 bc1_route_check = 38 WHILE bc1_route_check < 38 IF NOT IS_CHAR_DEAD bc1_target GET_DISTANCE_BETWEEN_COORDS_2D bc1_target_x bc1_target_y bc1_route_x[bc1_route] bc1_route_y[bc1_route] bc1_distance_check IF bc1_distance_check < bc1_distance bc1_distance = bc1_distance_check bc1_closest = bc1_route_check IF bc1_route_z[bc1_closest] < bc1_route_z[bc1_route] bc1_distance_check = bc1_route_z[bc1_route] - bc1_route_z[bc1_closest] IF bc1_distance_check > 3.0 bc1_route = bc1_closest ENDIF ENDIF ENDIF ENDIF bc1_route_check++ ENDWHILE RETURN } /* [BCR1_01:BCRASH1] ~s~You'll need the ~g~camera~s~. [BCR1_02:BCRASH1] ~s~Make your way up the mountain, find that ~r~snitch~s~. [BCR1_03:BCRASH1] ~s~Kill the ~y~witness~s~! ~s~Bring back proof. [BCR1_04:BCRASH1] ~s~He's inside, smoke him out! [BCR1_05:BCRASH1] ~s~Be wary of the U.S. Marshalls. [BCR1_06:BCRASH1] ~s~And don't let him escape! [BCR1_07:BCRASH1] ~s~The ~r~snitch ~s~is getting away! [BCR1_08:BCRASH1] ~s~The ~r~snitch ~s~is getting away on foot! [BCR1_09:BCRASH1] ~r~He can't be identified! [BCR1_10:BCRASH1] ~s~Photograph the ~r~body~s~. [BCR1_11:BCRASH1] ~s~You need a ~g~camera, ~s~go and pick one up. [BCR1_12:BCRASH1] ~r~You let him get away! [BCR1_13:BCRASH1] ~s~Chase ~r~him ~s~down and kill him! [BCR1_14:BCRASH1] ~s~Get on the ~y~bike~s~! [BCR1_15:BCRASH1] ~s~Take ~r~him ~s~out! [BCR1_16:BCRASH1] ~r~The buzzards got him! [BCR1_17:BCRASH1] ~s~Take the camera to the ~y~drop~s~. */ MISSION_START // **************************************************************************************** // *** *** // *** Date: 23/07/2004 Time: 10:27:07 Author: Chris Rothwell *** // *** *** // *** Mission: Catalina - Global Script *** // *** *** // **************************************************************************************** GOSUB mission_cat_start IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_cat_failed ENDIF GOSUB mission_cat_cleanup MISSION_END // ************************************ MISSION START ************************************* { mission_cat_start: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN SCRIPT_NAME catalin WAIT 0 LOAD_MISSION_TEXT CAT LVAR_INT mission_blip mission_flag mission_timer temp_int sequence_task players_car a b c LVAR_FLOAT h x2 y2 z2 x3 y3 z3 temp_float speed lvar_int cat_convo_lines[3] cat_convo_lines[0] = 0 cat_convo_lines[1] = 0 cat_convo_lines[2] = 0 lvar_int carl carl = scplayer MAKE_PLAYER_GANG_DISAPPEAR if cat_counter = 0 SET_AREA_VISIBLE 1 LOAD_CUTSCENE CAT_1 //at the bar guys hold catalina up WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 LOAD_SPECIAL_CHARACTER 5 cat while NOT HAS_SPECIAL_CHARACTER_LOADED 5 wait 0 // LOAD_SPECIAL_CHARACTER 5 cat endwhile CLEAR_AREA 681.1634 -478.1859 15.3281 0.5 0 LOAD_SCENE 681.1634 -478.1859 15.3281 SET_CHAR_COORDINATES scplayer 681.1634 -478.1859 15.3281 SET_CHAR_HEADING scplayer 177.0008 SET_CAMERA_BEHIND_PLAYER CREATE_CHAR PEDTYPE_SPECIAL SPECIAL05 682.8292 -477.8332 15.3359 catalina set_char_heading catalina 149.5317 //Outside the diner lvar_text_label $cat_convo1[20] $cat_convo1[0] = &CAT_AA //CATALINA: Where's your car? $cat_convo1[1] = &CAT_AB //CARL: Where's yours? $cat_convo1[2] = &CAT_AC //CATALINA: Ladies don't drive themselves, that's what men are for! $cat_convo1[3] = &CAT_AD //CARL: Oh my goodness! Thanks Cesar. Appreciate this, homie! lvar_int cat_convo1_sound[20] cat_convo1_sound[0] = SOUND_CAT_AA cat_convo1_sound[1] = SOUND_CAT_AB cat_convo1_sound[2] = SOUND_CAT_AC cat_convo1_sound[3] = SOUND_CAT_AD lvar_int cat_convo1_ped[20] cat_convo1_ped[0] = CATALINA cat_convo1_ped[1] = CARL cat_convo1_ped[2] = CATALINA cat_convo1_ped[3] = CARL cat_convo_lines[0] = 4 //In a car - INSTRUCTION lvar_text_label $cat_convo2[12] $cat_convo2[0] = &CAT_BA //CARL: So, what's your name? Where we going? $cat_convo2[1] = &CAT_BB //CATALINA: My name is Catalina and we gonna take this county for every stinking cent! $cat_convo2[2] = &CAT_BC //CARL: Ok, good plan I guess. $cat_convo2[3] = &CAT_BD //CATALINA: You're damn straight it's a good plan! $cat_convo2[4] = &CAT_BE //CATALINA: I've cased four soft targets; $cat_convo2[5] = &CAT_BH //CATALINA: A liquor store in Blueberry. $cat_convo2[6] = &CAT_BG //CATALINA: A bank in Palomino Creek. $cat_convo2[7] = &CAT_BF //CATALINA: A gas station in Dillimore. $cat_convo2[8] = &CAT_BI //CATALINA: And a betting shop in Montgomery. $cat_convo2[9] = &CAT_BJ //CARL: Hold up. Which one first? $cat_convo2[10] = &CAT_BK //CATALINA: You're the driver, you dumb pig, you choose! lvar_int cat_convo2_sound[12] cat_convo2_sound[0] = SOUND_CAT_BA cat_convo2_sound[1] = SOUND_CAT_BB cat_convo2_sound[2] = SOUND_CAT_BC cat_convo2_sound[3] = SOUND_CAT_BD cat_convo2_sound[4] = SOUND_CAT_BE cat_convo2_sound[5] = SOUND_CAT_BH cat_convo2_sound[6] = SOUND_CAT_BG cat_convo2_sound[7] = SOUND_CAT_BF cat_convo2_sound[8] = SOUND_CAT_BI cat_convo2_sound[9] = SOUND_CAT_BJ cat_convo2_sound[10] = SOUND_CAT_BK lvar_int cat_convo2_ped[12] cat_convo2_ped[0] = CARL cat_convo2_ped[1] = CATALINA cat_convo2_ped[2] = CARL cat_convo2_ped[3] = CATALINA cat_convo2_ped[4] = CATALINA cat_convo2_ped[5] = CATALINA cat_convo2_ped[6] = CATALINA cat_convo2_ped[7] = CATALINA cat_convo2_ped[8] = CATALINA cat_convo2_ped[9] = CARL cat_convo2_ped[10] = CATALINA cat_convo_lines[1] = 11 //Carl & Catalina in car on way to FIRST job - BANTER/INSTRUCTION lvar_text_label $cat_convo3[12] $cat_convo3[0] = &CAT_CA //CARL: You pretty highly strung, huh, lady. $cat_convo3[1] = &CAT_CB //CATALINA: Yeah? And what are you? $cat_convo3[2] = &CAT_CC //CATALINA: Some laid back gang banger dude? $cat_convo3[3] = &CAT_CD //CARL: I keep myself to myself. That's my style. $cat_convo3[4] = &CAT_CE //CATALINA: Cesar says you got a brother in jail, $cat_convo3[5] = &CAT_CF //CATALINA: another brother dead, a mother just killed, $cat_convo3[6] = &CAT_CG //CATALINA: and you got a bent cop on your case. $cat_convo3[7] = &CAT_CH //CARL: I ain't listening to you. $cat_convo3[8] = &CAT_CI //CATALINA: You think that is keeping yourself to yourself, eh amigo? $cat_convo3[9] = &CAT_CJ //CATALINA: Real cool? You just an idiota! $cat_convo3[10] = &CAT_CK //CARL: And you're real charming. A proper lady. lvar_int cat_convo3_sound[12] cat_convo3_sound[0] = SOUND_CAT_CA cat_convo3_sound[1] = SOUND_CAT_CB cat_convo3_sound[2] = SOUND_CAT_CC cat_convo3_sound[3] = SOUND_CAT_CD cat_convo3_sound[4] = SOUND_CAT_CE cat_convo3_sound[5] = SOUND_CAT_CF cat_convo3_sound[6] = SOUND_CAT_CG cat_convo3_sound[7] = SOUND_CAT_CH cat_convo3_sound[8] = SOUND_CAT_CI cat_convo3_sound[9] = SOUND_CAT_CJ cat_convo3_sound[10] = SOUND_CAT_CK lvar_int cat_convo3_ped[12] cat_convo3_ped[0] = CARL cat_convo3_ped[1] = CATALINA cat_convo3_ped[2] = CATALINA cat_convo3_ped[3] = CARL cat_convo3_ped[4] = CATALINA cat_convo3_ped[5] = CATALINA cat_convo3_ped[6] = CATALINA cat_convo3_ped[7] = CARL cat_convo3_ped[8] = CATALINA cat_convo3_ped[9] = CATALINA cat_convo3_ped[10] = CARL cat_convo_lines[2] = 11 else FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_COUNTRYSIDE if cat_counter = 1 LOAD_CUTSCENE CAT_2 //catalina sneaks up on player from behind WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE CLEAR_AREA 868.5210 -30.0862 63.1875 5.8 0 //SET_ALL_CARS_IN_AREA_VISIBLE 868.5210 -30.0862 63.1875 5.8 5.8 5.8 FALSE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 SET_INT_STAT STARTED_CAT2 1 LOAD_SPECIAL_CHARACTER 5 cat while NOT HAS_SPECIAL_CHARACTER_LOADED 5 wait 0 // LOAD_SPECIAL_CHARACTER 5 cat endwhile CLEAR_AREA 868.4825 -29.6753 62.1875 0.5 0 LOAD_SCENE 868.4825 -29.6753 62.1875 SET_CHAR_COORDINATES scplayer 868.4825 -29.6753 62.1875 SET_CHAR_HEADING scplayer 157.9281 SET_CAMERA_BEHIND_PLAYER CREATE_CHAR PEDTYPE_SPECIAL SPECIAL05 867.7455 -29.0865 62.1875 catalina set_char_heading catalina 225.9654 //Carl & Catalina in car on way to second job - INSTRUCTION $cat_convo1[0] = &CAT_FA //CARL: Hey, what we got left? cat_convo1_sound[0] = SOUND_CAT_FA cat_convo1_ped[0] = CARL $cat_convo1[1] = &CAT_FB //CATALINA: Are you stupid? You forget already? cat_convo1_sound[1] = SOUND_CAT_FB cat_convo1_ped[1] = CATALINA temp_int = 2 if flag_cat_mission3_passed = 0 $cat_convo1[temp_int] = &CAT_FC //CATALINA: The gas station in Dillimore. cat_convo1_sound[temp_int] = SOUND_CAT_FC cat_convo1_ped[temp_int] = CATALINA ++ temp_int endif if flag_cat_mission2_passed = 0 $cat_convo1[temp_int] = &CAT_FD //CATALINA: The bank in Palomino Creek. cat_convo1_sound[temp_int] = SOUND_CAT_FD cat_convo1_ped[temp_int] = CATALINA ++ temp_int endif if flag_cat_mission1_passed = 0 if flag_cat_mission4_passed = 0 $cat_convo1[temp_int] = &CAT_FE //CATALINA: The liquor store in Blueberry. cat_convo1_sound[temp_int] = SOUND_CAT_FE cat_convo1_ped[temp_int] = CATALINA else $cat_convo1[temp_int] = &CAT_FG //CATALINA: Or the liquor store in Blueberry. cat_convo1_sound[temp_int] = SOUND_CAT_FG cat_convo1_ped[temp_int] = CATALINA endif ++ temp_int endif if flag_cat_mission4_passed = 0 $cat_convo1[temp_int] = &CAT_FH //CATALINA: Or the betting shop in Montgomery. cat_convo1_sound[temp_int] = SOUND_CAT_FH cat_convo1_ped[temp_int] = CATALINA ++ temp_int endif $cat_convo1[temp_int] = &CAT_FI //CARL: Ok, but this time we're gonna do it real chill, cat_convo1_sound[temp_int] = SOUND_CAT_FI cat_convo1_ped[temp_int] = CARL ++ temp_int $cat_convo1[temp_int] = &CAT_FJ //CARL: no crazy psycho shit, baby. cat_convo1_sound[temp_int] = SOUND_CAT_FJ cat_convo1_ped[temp_int] = CARL ++ temp_int $cat_convo1[temp_int] = &CAT_FK //CATALINA: Speak for yourself, soft boy. cat_convo1_sound[temp_int] = SOUND_CAT_FK cat_convo1_ped[temp_int] = CATALINA ++ temp_int cat_convo_lines[0] = temp_int $cat_convo2[0] = &CAT_FL //CATALINA: Today I feel like killing all the men I meet! $cat_convo2[1] = &CAT_FM //CARL: Ah baby, c'mon, what about me? $cat_convo2[2] = &CAT_FN //CATALINA: Don't worry, I make an exception for some of the men in my life. $cat_convo2[3] = &CAT_FO //CATALINA: Now drive faster - YEEAAARGHH! cat_convo2_sound[0] = SOUND_CAT_FL cat_convo2_sound[1] = SOUND_CAT_FM cat_convo2_sound[2] = SOUND_CAT_FN cat_convo2_sound[3] = SOUND_CAT_FO cat_convo2_ped[0] = CATALINA cat_convo2_ped[1] = CARL cat_convo2_ped[2] = CATALINA cat_convo2_ped[3] = CATALINA cat_convo_lines[1] = 4 endif if cat_counter = 2 LOAD_CUTSCENE CAT_3 //catalina whips carl WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE CLEAR_AREA 868.5210 -30.0862 63.1875 5.8 0 START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 LOAD_SPECIAL_CHARACTER 5 cat while NOT HAS_SPECIAL_CHARACTER_LOADED 5 wait 0 // LOAD_SPECIAL_CHARACTER 5 cat endwhile CLEAR_AREA 868.4825 -29.6753 62.1875 0.5 0 LOAD_SCENE 868.4825 -29.6753 62.1875 SET_CHAR_COORDINATES scplayer 868.4825 -29.6753 62.1875 SET_CHAR_HEADING scplayer 157.9281 SET_CAMERA_BEHIND_PLAYER CREATE_CHAR PEDTYPE_SPECIAL SPECIAL05 867.7455 -29.0865 62.1875 catalina set_char_heading catalina 225.9654 //Carl & Catalina in car on way to third job - BANTER/INSTRUCTION $cat_convo1[0] = &CAT_KA //CATALINA: How was it? $cat_convo1[1] = &CAT_KB //CARL: Different $cat_convo1[2] = &CAT_KC //CATALINA: I knew you would like it! $cat_convo1[3] = &CAT_KD //CARL: Look, baby, I thought we was going to make some serious paper. $cat_convo1[4] = &CAT_KE //CATALINA: I'm starting to get really bored of you. $cat_convo1[5] = &CAT_KF //CARL: I just need the money. $cat_convo1[6] = &CAT_KG //CATALINA: And I'm just a cheap fuck? $cat_convo1[7] = &CAT_KH //CATALINA: A whore you don't even pay? $cat_convo1[8] = &CAT_KI //CARL: No, I didn't say that. $cat_convo1[9] = &CAT_KJ //CATALINA: Carl, I say I'm in love with you, and you act like I'm an idiot. $cat_convo1[10] = &CAT_KK //CATALINA: I see the way you look at other women. $cat_convo1[11] = &CAT_KL //CATALINA: I know your kind. Carl. I am serious. $cat_convo1[12] = &CAT_KM //CATALINA: I will kill you if you ever mess around. $cat_convo1[13] = &CAT_KN //CATALINA: I will castrate you first. $cat_convo1[14] = &CAT_KO //CATALINA: Then I will make you eat them. $cat_convo1[15] = &CAT_KP //CARL: Enough! I need some fucking money! $cat_convo1[16] = &CAT_KQ //CATALINA: Carl, you are really boring me now. $cat_convo1[17] = &CAT_KR //CARL: Please, sweet hear. I've got some real, real deep shit. $cat_convo1[18] = &CAT_KS //CATALINA: Okay. Maybe today we hit it big! cat_convo1_sound[0] = SOUND_CAT_KA cat_convo1_sound[1] = SOUND_CAT_KB cat_convo1_sound[2] = SOUND_CAT_KC cat_convo1_sound[3] = SOUND_CAT_KD cat_convo1_sound[4] = SOUND_CAT_KE cat_convo1_sound[5] = SOUND_CAT_KF cat_convo1_sound[6] = SOUND_CAT_KG cat_convo1_sound[7] = SOUND_CAT_KH cat_convo1_sound[8] = SOUND_CAT_KI cat_convo1_sound[9] = SOUND_CAT_KJ cat_convo1_sound[10] = SOUND_CAT_KK cat_convo1_sound[11] = SOUND_CAT_KL cat_convo1_sound[12] = SOUND_CAT_KM cat_convo1_sound[13] = SOUND_CAT_KN cat_convo1_sound[14] = SOUND_CAT_KO cat_convo1_sound[15] = SOUND_CAT_KP cat_convo1_sound[16] = SOUND_CAT_KQ cat_convo1_sound[17] = SOUND_CAT_KR cat_convo1_sound[18] = SOUND_CAT_KS cat_convo1_ped[0] = CATALINA cat_convo1_ped[1] = CARL cat_convo1_ped[2] = CATALINA cat_convo1_ped[3] = CARL cat_convo1_ped[4] = CATALINA cat_convo1_ped[5] = CARL cat_convo1_ped[6] = CATALINA cat_convo1_ped[7] = CATALINA cat_convo1_ped[8] = CARL cat_convo1_ped[9] = CATALINA cat_convo1_ped[10] = CATALINA cat_convo1_ped[11] = CATALINA cat_convo1_ped[12] = CATALINA cat_convo1_ped[13] = CATALINA cat_convo1_ped[14] = CATALINA cat_convo1_ped[15] = CARL cat_convo1_ped[16] = CATALINA cat_convo1_ped[17] = CARL cat_convo1_ped[18] = CATALINA cat_convo_lines[0] = 19 endif if cat_counter = 3 LOAD_CUTSCENE CAT_4 //catalina has a go at carl - bursts out of the door WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE CLEAR_AREA 868.5210 -30.0862 63.1875 5.8 0 //SET_ALL_CARS_IN_AREA_VISIBLE 868.5210 -30.0862 63.1875 5.8 5.8 5.8 FALSE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 LOAD_SPECIAL_CHARACTER 5 cat while NOT HAS_SPECIAL_CHARACTER_LOADED 5 wait 0 // LOAD_SPECIAL_CHARACTER 5 cat endwhile CLEAR_AREA 868.4825 -29.6753 62.1875 0.5 0 LOAD_SCENE 868.4825 -29.6753 62.1875 SET_CHAR_COORDINATES scplayer 868.4825 -29.6753 62.1875 SET_CHAR_HEADING scplayer 157.9281 SET_CAMERA_BEHIND_PLAYER CREATE_CHAR PEDTYPE_SPECIAL SPECIAL05 867.7455 -29.0865 62.1875 catalina set_char_heading catalina 225.9654 //Carl & Catalina in car on way to job discussing how bank job went - BANTER/INSTRUCTION $cat_convo1[0] = &CAT4_LA //CATALINA: I feel good today, like a woman reborn! $cat_convo1[1] = &CAT4_LB //CARL: Cool, maybe you won't go berserk, eh? $cat_convo1[2] = &CAT4_LC //CATALINA: Oh, I go berserk, but not until I really pissed! $cat_convo1[3] = &CAT4_LD //CARL: Oh, well, that's a relief to hear! $cat_convo1[4] = &CAT4_LE //CATALINA: Perhaps this time no cowboy motherfuckers will get in our way! $cat_convo1[5] = &CAT4_LF //CARL: Amen to that! cat_convo1_sound[0] = SOUND_CAT4_LA cat_convo1_sound[1] = SOUND_CAT4_LB cat_convo1_sound[2] = SOUND_CAT4_LC cat_convo1_sound[3] = SOUND_CAT4_LD cat_convo1_sound[4] = SOUND_CAT4_LE cat_convo1_sound[5] = SOUND_CAT4_LF cat_convo1_ped[0] = CATALINA cat_convo1_ped[1] = CARL cat_convo1_ped[2] = CATALINA cat_convo1_ped[3] = CARL cat_convo1_ped[4] = CATALINA cat_convo1_ped[5] = CARL cat_convo_lines[0] = 6 //Carl & Catalina in car on way to FORTH job - BANTER/INSTRUCTION $cat_convo2[0] = &CAT_NA //CATALINA: Come on, drive! $cat_convo2[1] = &CAT_NB //CARL: What's wrong? $cat_convo2[2] = &CAT_NC //CATALINA: Nothing. I Just hate men. $cat_convo2[3] = &CAT_ND //CARL: Well give me a break. $cat_convo2[4] = &CAT_NE //CATALINA: Here's your break. $cat_convo2[5] = &CAT_NF //CATALINA: Your break is you're not on my barbecue being eaten. $cat_convo2[6] = &CAT_NG //CARL: Well, that's one way of looking at shit, I suppose. $cat_convo2[7] = &CAT_NH //CATALINA: Now, try to be a man this time. $cat_convo2[8] = &CAT_KT //CATALINA: Drive, lover! cat_convo2_sound[0] = SOUND_CAT_NA cat_convo2_sound[1] = SOUND_CAT_NB cat_convo2_sound[2] = SOUND_CAT_NC cat_convo2_sound[3] = SOUND_CAT_ND cat_convo2_sound[4] = SOUND_CAT_NE cat_convo2_sound[5] = SOUND_CAT_NF cat_convo2_sound[6] = SOUND_CAT_NG cat_convo2_sound[7] = SOUND_CAT_NH cat_convo2_sound[8] = SOUND_CAT_KT cat_convo2_ped[0] = CATALINA cat_convo2_ped[1] = CARL cat_convo2_ped[2] = CATALINA cat_convo2_ped[3] = CARL cat_convo2_ped[4] = CATALINA cat_convo2_ped[5] = CATALINA cat_convo2_ped[6] = CARL cat_convo2_ped[7] = CATALINA cat_convo2_ped[8] = CATALINA cat_convo_lines[1] = 9 endif endif SET_ANIM_GROUP_FOR_CHAR catalina WOMAN //DONT_REMOVE_CHAR catalina SET_CHAR_ONLY_DAMAGED_BY_PLAYER catalina TRUE SET_CHAR_NEVER_TARGETTED catalina TRUE SET_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_PLAYER1 SET_CHAR_HEALTH catalina 100 SET_CHAR_SUFFERS_CRITICAL_HITS catalina FALSE //set_char_drowns_in_water catalina true //ENABLE_ENTRY_EXIT_PLAYER_GROUP_WARPING 1291.0 271.0 10.0 TRUE // (added by KEvin) so catalina follows player inside the OTB IF NOT IS_GROUP_MEMBER catalina players_group MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER players_group catalina SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 TRUE LISTEN_TO_PLAYER_GROUP_COMMANDS catalina FALSE ENDIF release_weather MAKE_PLAYER_GANG_REAPPEAR DO_FADE 1000 FADE_IN SET_PLAYER_CONTROL player1 on WHILE GET_FADING_STATUS WAIT 0 ENDWHILE if cat_liquor_banter = 1 cat_liquor_banter = 0 endif if cat_otb_banter = 1 cat_otb_banter = 0 endif if flag_cat_mission1_passed = 1 and cat_liquor_banter = 0 //Carl & Catalina in car on way to job discussing how Liquor store job went - BANTER $cat_convo3[0] = &CAT1_IA //CATALINA: I hope you drive better this time around! $cat_convo3[1] = &CAT1_IB //CARL: You ever driven a quad? It ain't easy. $cat_convo3[2] = &CAT1_IC //CARL: Specially when you got a screaming bitch on the back, $cat_convo3[3] = &CAT1_IE //CATALINA: I like it when you angry at me, Carl. $cat_convo3[4] = &CAT1_IF //CATALINA: I will try to anger you more often. $cat_convo3[5] = &CAT1_IG //CARL: Now that I'm looking forward to cat_convo3_sound[0] = SOUND_CAT1_IA cat_convo3_sound[1] = SOUND_CAT1_IB cat_convo3_sound[2] = SOUND_CAT1_IC cat_convo3_sound[3] = SOUND_CAT1_IE cat_convo3_sound[4] = SOUND_CAT1_IF cat_convo3_sound[5] = SOUND_CAT1_IG cat_convo3_ped[0] = CATALINA cat_convo3_ped[1] = CARL cat_convo3_ped[2] = CARL cat_convo3_ped[3] = CATALINA cat_convo3_ped[4] = CATALINA cat_convo3_ped[5] = CARL cat_convo_lines[2] = 6 cat_liquor_banter = 1 else if flag_cat_mission4_passed = 1 and cat_otb_banter = 0 //Carl & Catalina in car on way to job discussing how OTB job went - BANTER/INSTRUCTION $cat_convo3[0] = &CAT2_HA //CATALINA: Carl, you have to be fast and totally ruthless! $cat_convo3[1] = &CAT2_HB //CATALINA: No fucking about like in the betting shop! $cat_convo3[2] = &CAT2_HC //CARL: What? If you hadn't started bustin', things would have been sweet! $cat_convo3[3] = &CAT2_HE //CATALINA: They had to die because YOU were slow and stupid, $cat_convo3[4] = &CAT2_HF //CATALINA: like a big fat brat that eats chocolates while his $cat_convo3[5] = &CAT2_HG //CATALINA: father gives nothing to his step daughter but stale bread! $cat_convo3[6] = &CAT2_HH //CARL: Wh-what is you talking about? $cat_convo3[7] = &CAT2_HI //CATALINA: Enough! I am not speaking to you any more! cat_convo3_sound[0] = SOUND_CAT2_HA cat_convo3_sound[1] = SOUND_CAT2_HB cat_convo3_sound[2] = SOUND_CAT2_HC cat_convo3_sound[3] = SOUND_CAT2_HE cat_convo3_sound[4] = SOUND_CAT2_HF cat_convo3_sound[5] = SOUND_CAT2_HG cat_convo3_sound[6] = SOUND_CAT2_HH cat_convo3_sound[7] = SOUND_CAT2_HI cat_convo3_ped[0] = CATALINA cat_convo3_ped[1] = CATALINA cat_convo3_ped[2] = CARL cat_convo3_ped[3] = CATALINA cat_convo3_ped[4] = CATALINA cat_convo3_ped[5] = CATALINA cat_convo3_ped[6] = CARL cat_convo3_ped[7] = CATALINA cat_convo_lines[2] = 8 cat_otb_banter = 1 endif endif lvar_int convo_counter convo_counter = 0 lvar_int convo_flag convo_flag = 0 lvar_int convo_timer convo_timer = 0 lvar_int audio_slot audio_slot = 1 lvar_int blip_counter blip_counter = 0 lvar_int cat_in_group_flag cat_in_group_flag = 1 lvar_int blip_on_cat_mission1 blip_on_cat_mission2 blip_on_cat_mission3 blip_on_cat_mission4 blip_on_cat_mission1 = 0 blip_on_cat_mission2 = 0 blip_on_cat_mission3 = 0 blip_on_cat_mission4 = 0 if cat_counter > 0 lvar_int cat_mission1_blip cat_mission2_blip cat_mission3_blip cat_mission4_blip IF flag_cat_mission1_passed = 0 ADD_SPRITE_BLIP_FOR_COORD catX[1] catY[1] catZ[1] RADAR_SPRITE_CASH cat_mission1_blip //CAT1.SC - LIQUOR - Neil blip_on_cat_mission1 = 1 ENDIF IF flag_cat_mission2_passed = 0 ADD_SPRITE_BLIP_FOR_COORD catX[2] catY[2] catZ[2] RADAR_SPRITE_CASH cat_mission2_blip //CAT2.SC - BANK - ChrisR blip_on_cat_mission2 = 1 ENDIF IF flag_cat_mission3_passed = 0 ADD_SPRITE_BLIP_FOR_COORD catX[3] catY[3] catZ[3] RADAR_SPRITE_CASH cat_mission3_blip //CAT3.SC - GAS STATION - ChrisM blip_on_cat_mission3 = 1 ENDIF IF flag_cat_mission4_passed = 0 ADD_SPRITE_BLIP_FOR_COORD catX[4] catY[4] catZ[4] RADAR_SPRITE_CASH cat_mission4_blip //CAT4.SC - OTB - Kev blip_on_cat_mission4 = 1 ENDIF endif lvar_int created_trucks created_trucks = 0 // ************************************* MISSION LOOP ************************************* mission_cat_loop: WAIT 0 get_game_timer game_timer IF NOT IS_CHAR_DEAD catalina IF IS_GROUP_MEMBER catalina players_group if locate_char_any_means_char_2d scplayer catalina 20.0 20.0 0 if convo_flag < 3 if cat_convo_lines[convo_flag] = 0 ++ convo_flag goto skip_dialogue_playing endif if convo_flag = 1 if not is_char_in_any_car catalina if cat_counter = 1 or cat_counter = 3 goto skip_dialogue_playing endif else if convo_counter = 0 convo_timer = game_timer - 10 endif endif endif if convo_timer < game_timer if audio_line_is_active = 0 if convo_flag = 0 $audio_string = $cat_convo1[convo_counter] audio_sound_file = cat_convo1_sound[convo_counter] START_NEW_SCRIPT audio_line cat_convo1_ped[convo_counter] 0 1 audio_slot convo_counter if cat_convo1_ped[convo_counter] = catalina task_look_at_char catalina carl 3000 endif endif if convo_flag = 1 $audio_string = $cat_convo2[convo_counter] audio_sound_file = cat_convo2_sound[convo_counter] START_NEW_SCRIPT audio_line cat_convo2_ped[convo_counter] 0 1 audio_slot convo_counter if cat_convo2_ped[convo_counter] = catalina task_look_at_char catalina carl 3000 endif endif if convo_flag = 2 $audio_string = $cat_convo3[convo_counter] audio_sound_file = cat_convo3_sound[convo_counter] START_NEW_SCRIPT audio_line cat_convo3_ped[convo_counter] 0 1 audio_slot convo_counter if cat_convo3_ped[convo_counter] = catalina task_look_at_char catalina carl 3000 endif endif if audio_slot = 1 audio_slot = 2 else audio_slot = 1 endif convo_timer = game_timer + 500 ++ convo_counter if convo_counter < cat_convo_lines[convo_flag] CLEAR_MISSION_AUDIO audio_slot if convo_flag = 0 LOAD_MISSION_AUDIO audio_slot cat_convo1_sound[convo_counter] endif if convo_flag = 1 LOAD_MISSION_AUDIO audio_slot cat_convo2_sound[convo_counter] endif if convo_flag = 2 LOAD_MISSION_AUDIO audio_slot cat_convo3_sound[convo_counter] endif else convo_counter = 0 convo_timer = game_timer + 10000 ++ convo_flag endif endif endif endif endif skip_dialogue_playing: if cat_counter = 0 if convo_flag = 1 if blip_counter = 0 IF convo_counter > 6//[5] CAT_BH //CATALINA: A liquor store in Blueberry. ADD_SPRITE_BLIP_FOR_COORD catX[1] catY[1] catZ[1] RADAR_SPRITE_CASH cat_mission1_blip //CAT1.SC - LIQUOR - Neil blip_on_cat_mission1 = 1 ++ blip_counter ENDIF endif if blip_counter = 1 IF convo_counter > 7//[6] CAT_BG //CATALINA: A bank in Palomino Creek. ADD_SPRITE_BLIP_FOR_COORD catX[2] catY[2] catZ[2] RADAR_SPRITE_CASH cat_mission2_blip //CAT2.SC - BANK - ChrisR blip_on_cat_mission2 = 1 ++ blip_counter ENDIF endif if blip_counter = 2 IF convo_counter > 8//[7] CAT_BF //CATALINA: A gas station in Dillimore. ADD_SPRITE_BLIP_FOR_COORD catX[3] catY[3] catZ[3] RADAR_SPRITE_CASH cat_mission3_blip //CAT3.SC - GAS STATION - ChrisM blip_on_cat_mission3 = 1 ++ blip_counter ENDIF endif if blip_counter = 3 IF convo_counter > 9//[8] CAT_BI //CATALINA: And a betting shop in Montgomery. ADD_SPRITE_BLIP_FOR_COORD catX[4] catY[4] catZ[4] RADAR_SPRITE_CASH cat_mission4_blip //CAT4.SC - OTB - Kev blip_on_cat_mission4 = 1 ++ blip_counter ENDIF endif endif endif IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S //IS_BUTTON_PRESSED PAD1 RIGHTSHOCK//DEBUG!!!! WARP IF flag_cat_mission_counter = 0 CLEAR_AREA catX[1] catY[1] catZ[1] 0.5 0 SET_CHAR_COORDINATES scplayer catX[1] catY[1] catZ[1] x = catX[1] - 1.0 SET_CHAR_COORDINATES catalina x catY[1] catZ[1] LOAD_SCENE catX[1] catY[1] catZ[1] ENDIF IF flag_cat_mission_counter = 1 CLEAR_AREA catX[2] catY[2] catZ[2] 0.5 0 SET_CHAR_COORDINATES scplayer catX[2] catY[2] catZ[2] x = catX[2] - 1.0 SET_CHAR_COORDINATES catalina x catY[2] catZ[2] LOAD_SCENE catX[2] catY[2] catZ[2] ENDIF IF flag_cat_mission_counter = 2 CLEAR_AREA catX[3] catY[3] catZ[3] 0.5 0 SET_CHAR_COORDINATES scplayer catX[3] catY[3] catZ[3] x = catX[3] - 1.0 SET_CHAR_COORDINATES catalina x catY[3] catZ[3] LOAD_SCENE catX[3] catY[3] catZ[3] ENDIF IF flag_cat_mission_counter = 3 CLEAR_AREA catX[4] catY[4] catZ[4] 0.5 0 SET_CHAR_COORDINATES scplayer catX[4] catY[4] catZ[4] x = catX[4] - 1.0 SET_CHAR_COORDINATES catalina x catY[4] catZ[4] LOAD_SCENE catX[4] catY[4] catZ[4] ENDIF ENDIF IF flag_cat_mission1_passed = 0 if blip_on_cat_mission1 = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer catX[1] catY[1] catZ[1] 3.0 3.0 3.0 1 SET_PLAYER_CONTROL player1 OFF PRINT_BIG CAT_1 1000 2 //"Catalina mission 1" //NEIL //Rob liquor store DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE load_and_launch_catalina_mission = 0 RETURN ENDIF ENDIF ENDIF IF flag_cat_mission2_passed = 0 if blip_on_cat_mission2 = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer catX[2] catY[2] catZ[2] 3.0 3.0 3.0 1 SET_PLAYER_CONTROL player1 OFF PRINT_BIG CAT_2 1000 2 //"Catalina mission 2" //Kev B //Rob bank DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE load_and_launch_catalina_mission = 1 RETURN ENDIF ENDIF ENDIF IF flag_cat_mission3_passed = 0 if blip_on_cat_mission3 = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer catX[3] catY[3] catZ[3] 3.0 3.0 3.0 1 SET_PLAYER_CONTROL player1 OFF PRINT_BIG CAT_3 1000 2 //"Catalina mission 3" //CHRIS M //Rob gas station DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE load_and_launch_catalina_mission = 2 RETURN ENDIF ENDIF ENDIF IF flag_cat_mission4_passed = 0 if blip_on_cat_mission4 = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer catX[4] catY[4] catZ[4] 3.0 3.0 3.0 1 SET_PLAYER_CONTROL player1 OFF PRINT_BIG CAT_4 1000 2 //"Catalina mission 4" //KEVIN W //Rob OTB DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE load_and_launch_catalina_mission = 3 RETURN ENDIF ENDIF ENDIF else if cat_in_group_flag = 1 print_now catleft 5000 1//~s~You left ~b~Catalina~s~ behind. Go back and pick her up. remove_blip cat_mission1_blip remove_blip cat_mission2_blip remove_blip cat_mission3_blip remove_blip cat_mission4_blip add_blip_for_char catalina mission_blip set_blip_as_friendly mission_blip true ++ cat_in_group_flag endif if cat_in_group_flag = 2 if locate_char_any_means_char_2d scplayer catalina 10.0 10.0 0 remove_blip mission_blip IF NOT IS_GROUP_MEMBER catalina players_group SET_GROUP_MEMBER players_group catalina ENDIF if blip_on_cat_mission1 = 1 ADD_SPRITE_BLIP_FOR_COORD catX[1] catY[1] catZ[1] RADAR_SPRITE_CASH cat_mission1_blip //CAT1.SC - LIQUOR - Neil endif if blip_on_cat_mission2 = 1 ADD_SPRITE_BLIP_FOR_COORD catX[2] catY[2] catZ[2] RADAR_SPRITE_CASH cat_mission2_blip //CAT2.SC - BANK - ChrisR endif if blip_on_cat_mission3 = 1 ADD_SPRITE_BLIP_FOR_COORD catX[3] catY[3] catZ[3] RADAR_SPRITE_CASH cat_mission3_blip //CAT3.SC - GAS STATION - ChrisM endif if blip_on_cat_mission4 = 1 ADD_SPRITE_BLIP_FOR_COORD catX[4] catY[4] catZ[4] RADAR_SPRITE_CASH cat_mission4_blip //CAT4.SC - OTB - Kev endif cat_in_group_flag = 1 endif endif ENDIF ELSE print_now catdead 5000 1//~r~Catalina is dead! goto mission_cat_failed ENDIF if locate_char_any_means_2d scplayer 660.0 -585.0 200.0 200.0 0 if created_trucks = 0 request_model PETRO request_model PETROTR if has_model_loaded PETRO and has_model_loaded PETROTR LVAR_INT c3_truck c3_trailer CREATE_CAR PETRO 657.49 -585.13 16.36 c3_truck SET_CAR_HEADING c3_truck 170.66 SET_CAN_BURST_CAR_TYRES c3_truck FALSE SET_CAR_PROOFS c3_truck TRUE FALSE FALSE FALSE FALSE SET_LOAD_COLLISION_FOR_CAR_FLAG c3_truck FALSE lock_car_doors c3_truck carlock_locked CREATE_CAR PETROTR 667.49 -583.13 16.36 c3_trailer SET_CAR_HEADING c3_trailer 184.66 SET_CAR_HEALTH c3_trailer 1250 SET_CAR_PROOFS c3_trailer TRUE TRUE TRUE TRUE TRUE SET_CAN_BURST_CAR_TYRES c3_trailer FALSE SET_LOAD_COLLISION_FOR_CAR_FLAG c3_trailer FALSE lock_car_doors c3_trailer carlock_locked created_trucks = 1 endif endif else if created_trucks = 1 delete_car c3_truck delete_car c3_trailer mark_model_as_no_longer_needed PETRO mark_model_as_no_longer_needed PETROTR created_trucks = 0 endif endif GOTO mission_cat_loop // ************************************ MISSION FAILED ************************************ mission_cat_failed: PRINT_BIG M_FAIL 5000 1 remove_char_elegantly catalina RETURN // *********************************** MISSION CLEANUP ************************************ mission_cat_cleanup: REMOVE_BLIP mission_blip REMOVE_BLIP cat_mission1_blip REMOVE_BLIP cat_mission2_blip REMOVE_BLIP cat_mission3_blip REMOVE_BLIP cat_mission4_blip UNLOAD_SPECIAL_CHARACTER 5 mark_model_as_no_longer_needed PETRO mark_model_as_no_longer_needed PETROTR flag_player_on_mission = 0 MISSION_HAS_FINISHED if load_and_launch_catalina_mission > -1 do_fade 0 fade_out endif RETURN } ////Misc // ////start of mission //CATALINA: CAT1_BC Let's go, yeehaa! //CATALINA: CAT1_BA Carl, you drive, I'll shoot! //CARL: CAT2_GC Whatever, lets roll! // ////player crashes //CATALINA: CAT1_CC You're driving like an old lady! //CATALINA: CAT3_EG I thought you said you could drive! //CATALINA: BCS5_BA Hey, Carl, you drive like a drunken camel! // ////player gets wanted level //CATALINA: CAT1_EC Your pissing around has brought the cops! //CATALINA: CAT4_ED Idiota! // ////player leaves catalina behind //CATALINA: CAT1_GA Don't leave me behind, Carl Johnson! //CATALINA: CAT1_GB You leave me, I CASTRATE YOU! //CATALINA: CAT1_GC Get back here, you useless bastard! //CATALINA: CAT1_GD Carl Johnson, don't you leave me! // // CATALINA: CAT3_EF Where have you been? // ////catalina impressed //CATALINA: CAT2_CA You impress me, Carl Johnson! //CATALINA: CAT2_CC I think I like you! //CATALINA: BCS5_AE I have never felt so satisfied! //CATALINA: BCS5_BE At last I have found a man to satisfy me! // ////player taking too long to get to a job //CATALINA: CAT4_KB You slow bastard! //CATALINA: CAT4_KC Are you afraid of speed, Carl? //CATALINA: CAT4_KD Stop getting lost! //CATALINA: CAT4_KE You're too laid back, you lazy slob! //CATALINA: CAT4_KG More speed, less idiota! //CATALINA: CAT4_KA What's keeping you? //CATALINA: CAT2_EA Move it! //CATALINA: CAT2_EC We haven't got all fucking day! //CATALINA: CAT3_EB What is keeping you? //CATALINA: CAT3_EC C'mon, Carl, move it! //CATALINA: CAT_KQ Carl, you are really boring me now. //CATALINA: CAT_NA Come on, drive! // // CARL: CAT3_BB I'm on it, I got it! // CARL: CAT4_CB Yes'm, Miss Catalina, Miss. // CARL: CAT_CH I ain't listening to you. // //CATALINA: CAT4_KF Pick it up a little, you retarded asshole! // CARL: CAT4_DE Don't push me! // //CATALINA: CAT2_EB Stop playing with your balls and hurry up! // //CATALINA: CAT2_HI Enough! I am not speaking to you any more! // // ////player attacks catalina //CATALINA: CAT2_FC Now I kill you! // // ////player getting close to a location //CATALINA: CAT3_ED Not far now! //CATALINA: CAT3_HB That's the place, up ahead! MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : // AUTHOR : Neil // DESICRIPTION : // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** { // ************************************************************************************************************* // GENERAL INITIALISATION - Every level requires this // ************************************************************************************************************* SCRIPT_NAME CAT1 GOSUB mission_start_CAT1 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_CAT1 ENDIF GOSUB mission_cleanup_CAT1 MISSION_END mission_start_CAT1: //REGISTER_MISSION_GIVEN flag_player_on_mission = 1 DO_FADE 0 FADE_OUT // general variables that are in every mission - DON'T DECLARE MISSION SPECIFIC VARIABLES HERE LVAR_INT m_stage LVAR_INT m_goals LVAR_INT m_passed LVAR_INT m_failed LVAR_INT m_quit LVAR_INT m_frame_num LVAR_INT m_this_frame_time LVAR_INT m_last_frame_time LVAR_INT m_time_diff // commonly used temporary variables LVAR_INT temp_int temp_int2 temp_int3 LVAR_FLOAT temp_float temp_float2 temp_float3 LVAR_INT temp_seq LVAR_FLOAT vec_x vec_y vec_z LVAR_FLOAT vec2_x vec2_y vec2_z LVAR_FLOAT x2 y2 z2 LVAR_FLOAT x3 y3 z3 // commonly used flags LVAR_INT dialogue_flag LVAR_INT help_flag LVAR_INT left_cat_dialogue // commonly used timers LVAR_INT dialogue_timer LVAR_INT help_timer // commonly used decision makers LVAR_INT empty_dm LVAR_INT tough_dm LVAR_INT cat1_driver_temp cat1_reenter_state cat1_driver_temp = 0 cat1_reenter_state = 0 m_stage = 0 m_goals = 0 m_passed = 0 m_failed = 0 m_quit = 0 audio_line_is_active = 0 // set this incase it was left at non-zero left_cat_dialogue = 0 dialogue_flag = 0 help_flag = 0 dialogue_timer = 0 help_timer = 0 TIMERA = 0 TIMERB = 0 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY empty_dm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH tough_dm mission_loop_CAT1: WAIT 0 // switch on debug tools LVAR_INT debug_on IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_X IF debug_on = 0 debug_on = 1 WRITE_DEBUG LEVEL_DEBUG_ON ELSE debug_on = 0 WRITE_DEBUG LEVEL_DEBUG_OFF ENDIF ENDIF // Frame counter m_frame_num++ IF m_frame_num > 9 m_frame_num = 0 ENDIF // Additional Timers GET_GAME_TIMER m_this_frame_time m_time_diff = m_this_frame_time - m_last_frame_time m_last_frame_time = m_this_frame_time dialogue_timer += m_time_diff help_timer += m_time_diff briefcase_text_timer += m_time_diff IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S m_passed = 1 ENDIF IF debug_on = 1 GOSUB cat1_debug_tools ENDIF SWITCH m_stage CASE 0 GOSUB cat1_m_stage_0 BREAK CASE 1 GOSUB cat1_m_stage_1 BREAK CASE 2 GOSUB cat1_m_stage_2 BREAK CASE 3 GOSUB cat1_m_stage_3 BREAK CASE 4 GOSUB cat1_m_stage_4 BREAK ENDSWITCH GOSUB cat1_global_functions // end of main loop *** don't change *** end_of_main_loop_CAT1: IF m_quit = 0 IF m_failed = 0 IF m_passed = 0 GOTO mission_loop_CAT1 ELSE GOSUB mission_passed_CAT1 RETURN ENDIF ELSE GOSUB mission_failed_CAT1 RETURN ENDIF ELSE RETURN // quits out - goes to cleanup ENDIF // ***************************************************** // DEBUG TOOLS // ***************************************************** cat1_debug_tools: // Display mission stage variables for debug LVAR_INT display_debug VAR_INT CAT1_view_debug[8] VAR_FLOAT CAT1_view_debug_f[8] IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_SPACE display_debug++ IF display_debug > 5 display_debug = 0 ENDIF CLEAR_ALL_VIEW_VARIABLES ENDIF IF display_debug = 1 // system variables CAT1_view_debug[0] = m_stage CAT1_view_debug[1] = m_goals CAT1_view_debug[2] = dialogue_flag CAT1_view_debug[3] = dialogue_timer CAT1_view_debug[4] = help_flag CAT1_view_debug[5] = help_timer CAT1_view_debug[6] = TIMERA //CAT1_view_debug[7] = TIMERB VIEW_INTEGER_VARIABLE CAT1_view_debug[0] m_stage VIEW_INTEGER_VARIABLE CAT1_view_debug[1] m_goals VIEW_INTEGER_VARIABLE CAT1_view_debug[2] dialogue_flag VIEW_INTEGER_VARIABLE CAT1_view_debug[3] dialogue_timer VIEW_INTEGER_VARIABLE CAT1_view_debug[4] help_flag VIEW_INTEGER_VARIABLE CAT1_view_debug[5] help_timer VIEW_INTEGER_VARIABLE CAT1_view_debug[6] TIMERA //VIEW_INTEGER_VARIABLE CAT1_view_debug[7] TIMERB ENDIF IF display_debug = 2 // put mission variable for display in here CAT1_view_debug[0] = 0 //disable_group CAT1_view_debug[1] = 0 //in_group CAT1_view_debug[2] = cat1_pickups_collected CAT1_view_debug[3] = paused[0] CAT1_view_debug[4] = paused[1] CAT1_view_debug[5] = paused[2] CAT1_view_debug[6] = paused[3] CAT1_view_debug[7] = skipped_cutscene VIEW_INTEGER_VARIABLE CAT1_view_debug[0] disable_group VIEW_INTEGER_VARIABLE CAT1_view_debug[1] in_group VIEW_INTEGER_VARIABLE CAT1_view_debug[2] cat1_pickups_collected VIEW_INTEGER_VARIABLE CAT1_view_debug[3] paused[0] VIEW_INTEGER_VARIABLE CAT1_view_debug[4] paused[1] VIEW_INTEGER_VARIABLE CAT1_view_debug[5] paused[2] VIEW_INTEGER_VARIABLE CAT1_view_debug[6] paused[3] VIEW_INTEGER_VARIABLE CAT1_view_debug[7] skipped_cutscene ENDIF IF display_debug = 3 // put mission variable for display in here CAT1_view_debug[0] = robber_flag[0] CAT1_view_debug[1] = robber_flag[1] CAT1_view_debug[2] = robber_flag[2] CAT1_view_debug[3] = robber_flag[3] CAT1_view_debug[4] = chase_flag[0] CAT1_view_debug[5] = chase_flag[1] CAT1_view_debug[6] = chase_flag[2] CAT1_view_debug[7] = player_progress VIEW_INTEGER_VARIABLE CAT1_view_debug[0] robber_flag[0] VIEW_INTEGER_VARIABLE CAT1_view_debug[1] robber_flag[1] VIEW_INTEGER_VARIABLE CAT1_view_debug[2] robber_flag[2] VIEW_INTEGER_VARIABLE CAT1_view_debug[3] robber_flag[3] VIEW_INTEGER_VARIABLE CAT1_view_debug[4] chase_flag[0] VIEW_INTEGER_VARIABLE CAT1_view_debug[5] chase_flag[1] VIEW_INTEGER_VARIABLE CAT1_view_debug[6] chase_flag[2] VIEW_INTEGER_VARIABLE CAT1_view_debug[7] player_progress ENDIF IF display_debug = 4 // put mission variable for display in here CAT1_view_debug[0] = playback_paused[0] CAT1_view_debug[1] = playback_paused[1] CAT1_view_debug[2] = playback_paused[2] CAT1_view_debug_f[3] = quad_playback_speed[0] CAT1_view_debug_f[4] = quad_playback_speed[1] CAT1_view_debug_f[5] = quad_playback_speed[2] CAT1_view_debug_f[6] = master_speed CAT1_view_debug[7] = show_gun VIEW_INTEGER_VARIABLE CAT1_view_debug[0] playback_paused[0] VIEW_INTEGER_VARIABLE CAT1_view_debug[1] playback_paused[1] VIEW_INTEGER_VARIABLE CAT1_view_debug[2] playback_paused[2] VIEW_FLOAT_VARIABLE CAT1_view_debug_f[3] quad_playback_speed[0] VIEW_FLOAT_VARIABLE CAT1_view_debug_f[4] quad_playback_speed[1] VIEW_FLOAT_VARIABLE CAT1_view_debug_f[5] quad_playback_speed[2] VIEW_FLOAT_VARIABLE CAT1_view_debug_f[6] master_speed VIEW_INTEGER_VARIABLE CAT1_view_debug[7] show_gun ENDIF IF display_debug = 5 // put mission variable for display in here CAT1_view_debug_f[0] = look_x CAT1_view_debug_f[1] = look_y CAT1_view_debug_f[2] = look_z CAT1_view_debug_f[3] = quad_dist_from_player[0] CAT1_view_debug_f[4] = quad_dist_from_player[1] CAT1_view_debug_f[5] = quad_dist_from_player[2] // CAT1_view_debug_f[6] = master_speed // CAT1_view_debug_f[7] = player_progress VIEW_FLOAT_VARIABLE CAT1_view_debug_f[0] look_x VIEW_FLOAT_VARIABLE CAT1_view_debug_f[1] look_y VIEW_FLOAT_VARIABLE CAT1_view_debug_F[2] look_z VIEW_FLOAT_VARIABLE CAT1_view_debug_f[3] quad_dist_from_player[0] VIEW_FLOAT_VARIABLE CAT1_view_debug_f[4] quad_dist_from_player[1] VIEW_FLOAT_VARIABLE CAT1_view_debug_f[5] quad_dist_from_player[2] // VIEW_FLOAT_VARIABLE CAT1_view_debug_f[6] master_speed // VIEW_FLOAT_VARIABLE CAT1_view_debug_f[7] player_progress ENDIF // Quit level - no mission pass/fail - cleanup only IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ESC m_quit = 1 ENDIF // Pause level LVAR_INT pause_level IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_P IF pause_level = 0 pause_level = 1 WRITE_DEBUG LEVEL_PAUSED ELSE pause_level = 0 WRITE_DEBUG LEVEL_UNPAUSED ENDIF ENDIF IF pause_level = 1 GOTO end_of_main_loop_CAT1 ENDIF // progress m_goals & m_stage IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_PLUS m_goals++ ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_MINUS m_goals-- ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_ASTERISK m_stage++ ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_SLASH m_stage-- ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_9 m_goals = 99 ENDIF RETURN // scripts are .... cat1_get_back_on_bike: IF NOT IS_CHAR_IN_ANY_CAR scplayer RETURN ENDIF IF IS_CHAR_IN_ANY_CAR catalina RETURN ENDIF LVAR_INT car_player_is_in STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car_player_is_in IF car_player_is_in = -1 RETURN ENDIF // 3MASTER - force whoever back on the bike IF IS_CAR_PASSENGER_SEAT_FREE car_player_is_in 0 AND cat1_reenter_state = 0 TASK_ENTER_CAR_AS_PASSENGER catalina car_player_is_in -1 0 cat1_reenter_state = 1 ENDIF IF NOT IS_CAR_PASSENGER_SEAT_FREE car_player_is_in 0 AND cat1_reenter_state = 1 cat1_reenter_state = 0 ENDIF RETURN // ************************************************************************************************************* // INITIALISATION - SPECIFIC TO THIS LEVEL // ************************************************************************************************************* cat1_m_stage_0: // fake creates IF m_goals = -1 CREATE_CAR PONY 0.0 0.0 0.0 pcar CREATE_CAR PONY 0.0 0.0 0.0 robber_quad[0] CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 robber[0] ADD_BLIP_FOR_COORD 0.0 0.0 0.0 catalina_blip CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 catalina CREATE_PICKUP BRIEFCASE PICKUP_ONCE 0.0 0.0 0.0 robber_pickup[0] ENDIF // peds LVAR_INT robber[4] LVAR_INT shop_keeper LVAR_INT customer // cars LVAR_INT pcar LVAR_INT robber_quad[4] // objects LVAR_INT bcase[4] // blips LVAR_INT catalina_blip LVAR_INT robber_blip[3] LVAR_INT briefcase_blip[3] LVAR_INT location_blip // pickups LVAR_INT robber_pickup[3] // flags LVAR_INT disable_group LVAR_INT in_group VAR_INT cat1_pickups_collected LVAR_INT paused[4] LVAR_INT robber_flag[4] LVAR_INT skipped_cutscene LVAR_INT chase_flag[3] LVAR_INT playback_paused[3] LVAR_INT player_progress LVAR_INT show_gun LVAR_INT camera_in_position_pos camera_in_position_look LVAR_INT cat1_cops_dialogue LVAR_INT cat1_take_home_dialogue LVAR_INT robber_pickup_been_created[3] LVAR_INT alarm_sound_flag LVAR_INT is_in_interior LVAR_FLOAT stored_master_speed // floats LVAR_FLOAT quad_playback_speed[3] LVAR_FLOAT quad_dist_from_player[3] LVAR_FLOAT master_speed LVAR_FLOAT cam_x cam_y cam_z LVAR_FLOAT look_x look_y look_z LVAR_FLOAT dest_look_x dest_look_y dest_look_z LVAR_FLOAT camera_speed_pos camera_speed_look // decision makers LVAR_INT group_dm LVAR_INT catalina_dm // timers LVAR_INT briefcase_text_timer disable_group = 0 in_group = 0 cat1_pickups_collected = 0 paused[0] = 0 paused[1] = 0 paused[2] = 0 paused[3] = 0 robber_flag[0] = 0 robber_flag[1] = 0 robber_flag[2] = 0 robber_flag[3] = 0 skipped_cutscene = 0 chase_flag[0] = 0 chase_flag[1] = 0 chase_flag[2] = 0 playback_paused[0] = 0 playback_paused[1] = 0 playback_paused[2] = 0 player_progress = 0 show_gun = 0 camera_in_position_pos = 0 camera_in_position_look = 0 camera_speed_pos = 0.0 camera_speed_look = 0.0 cat1_cops_dialogue = 0 cat1_take_home_dialogue = 0 catalina_stunt_jump_dialogue = 0 catalina_blip = 0 robber_blip[0] = 0 robber_blip[1] = 0 robber_blip[2] = 0 briefcase_blip[0] = 0 briefcase_blip[1] = 0 briefcase_blip[2] = 0 location_blip = 0 robber[0] = 0 robber[1] = 0 robber[2] = 0 robber[3] = 0 shop_keeper = 0 customer = 0 pcar = 0 robber_quad[0] = 0 robber_quad[1] = 0 robber_quad[2] = 0 robber_quad[3] = 0 bcase[0] = 0 bcase[1] = 0 bcase[2] = 0 bcase[3] = 0 robber_pickup[0] = -1 robber_pickup[1] = -1 robber_pickup[2] = -1 robber_pickup_been_created[0] = 0 robber_pickup_been_created[1] = 0 robber_pickup_been_created[2] = 0 alarm_sound_flag = 0 is_in_interior = 0 SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 TRUE START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_TEXT CAT GOSUB CAT1_next_stage RETURN // ************************************************************************************************************* // STAGE 1 - Scripted Cut // ************************************************************************************************************* cat1_m_stage_1: SWITCH m_goals CASE 0 REQUEST_MODEL QUAD REQUEST_MODEL CWMYFR REQUEST_MODEL CWMYHB1 REQUEST_MODEL COLT45 REQUEST_MODEL HMOST REQUEST_MODEL SWMOTR1 LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED QUAD OR NOT HAS_MODEL_LOADED CWMYFR OR NOT HAS_MODEL_LOADED CWMYHB1 OR NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED HMOST OR NOT HAS_MODEL_LOADED SWMOTR1 WAIT 0 ENDWHILE REQUEST_CAR_RECORDING 501 REQUEST_CAR_RECORDING 502 REQUEST_CAR_RECORDING 503 REQUEST_CAR_RECORDING 504 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 501 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 502 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 503 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 504 WAIT 0 ENDWHILE REQUEST_CAR_RECORDING 505 REQUEST_CAR_RECORDING 506 REQUEST_CAR_RECORDING 507 REQUEST_CAR_RECORDING 509 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 505 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 506 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 507 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 509 WAIT 0 ENDWHILE TIMERA = 0 TIMERB = 0 LOAD_SPECIAL_CHARACTER 5 cat WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 5 WAIT 0 //LOAD_SPECIAL_CHARACTER 5 cat ENDWHILE LOAD_MISSION_AUDIO 3 SOUND_SECURITY_ALARM WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE m_goals++ GOTO cat1_global_functions BREAK // initialisation for stage CASE 1 // delete and recreate catalina IF DOES_CHAR_EXIST catalina DELETE_CHAR catalina ENDIF CREATE_CHAR PEDTYPE_SPECIAL SPECIAL05 261.1952 -79.2717 0.4697 catalina SET_CHAR_HEADING catalina 41.0763 SET_CHAR_DROWNS_IN_WATER catalina FALSE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH catalina_dm LOAD_GROUP_DECISION_MAKER DM_GROUP_MISSION_NORM group_dm CLEAR_PRINTS SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 CLEAR_AREA 257.5389 -77.2300 1.3678 300.0 TRUE LOAD_SCENE 261.1952 -79.2717 0.4697 disable_group = 1 IF NOT IS_CHAR_DEAD catalina IF IS_GROUP_MEMBER catalina players_group REMOVE_CHAR_FROM_GROUP catalina in_group = 0 ENDIF ENDIF // set car position IF NOT IS_CAR_DEAD pcar GET_CAR_MODEL pcar temp_int GET_MODEL_DIMENSIONS temp_int x y z x2 y2 z2 temp_float = y2 - y // car length temp_float /= 1.8 x = 259.7206 y = -77.2067 z = 0.5781 x -= temp_float SET_CAR_COORDINATES pcar x y z SET_CAR_HEADING pcar 265.6523 ENDIF // set catalina's starting position IF NOT IS_CHAR_DEAD catalina CLEAR_CHAR_TASKS_IMMEDIATELY catalina IF NOT IS_CHAR_IN_ANY_CAR catalina SET_CHAR_COORDINATES catalina 261.1952 -79.2717 0.4697 SET_CHAR_HEADING catalina 41.0763 SET_CHAR_DECISION_MAKER catalina empty_dm ELSE WARP_CHAR_FROM_CAR_TO_COORD catalina 261.1952 -79.2717 0.4697 SET_CHAR_HEADING catalina 41.0763 SET_CHAR_DECISION_MAKER catalina empty_dm ENDIF // give catalina weapon GET_CURRENT_CHAR_WEAPON catalina temp_int IF NOT temp_int = WEAPONTYPE_MICRO_UZI IF NOT HAS_MODEL_LOADED MICRO_UZI REQUEST_MODEL MICRO_UZI WHILE NOT HAS_MODEL_LOADED MICRO_UZI WAIT 0 ENDWHILE ENDIF IF NOT IS_CHAR_DEAD catalina GIVE_WEAPON_TO_CHAR catalina WEAPONTYPE_MICRO_UZI 99999 SET_CURRENT_CHAR_WEAPON catalina WEAPONTYPE_MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI ENDIF ENDIF ENDIF // set players position CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF NOT IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_COORDINATES scplayer 259.9737 -78.3268 0.6181 SET_CHAR_HEADING scplayer 38.3173 ELSE WARP_CHAR_FROM_CAR_TO_COORD scplayer 259.9737 -78.3268 0.6181 SET_CHAR_HEADING scplayer 38.3173 ENDIF // create robbers & quads CREATE_CAR QUAD 230.6799 -85.1536 0.4296 robber_quad[0] SET_CAR_HEADING robber_quad[0] 17.5494 SET_CAR_CRUISE_SPEED robber_quad[0] 20.0 SET_CAR_DRIVING_STYLE robber_quad[0] DRIVINGMODE_AVOIDCARS SET_UPSIDEDOWN_CAR_NOT_DAMAGED robber_quad[0] TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER robber_quad[0] TRUE CREATE_CAR QUAD 232.2597 -90.1452 0.4297 robber_quad[1] SET_CAR_HEADING robber_quad[1] 17.5685 SET_CAR_CRUISE_SPEED robber_quad[1] 20.0 SET_CAR_DRIVING_STYLE robber_quad[1] DRIVINGMODE_AVOIDCARS SET_UPSIDEDOWN_CAR_NOT_DAMAGED robber_quad[1] TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER robber_quad[1] TRUE CREATE_CAR QUAD 234.0826 -95.9093 0.4375 robber_quad[2] SET_CAR_HEADING robber_quad[2] 17.5565 SET_CAR_CRUISE_SPEED robber_quad[2] 20.0 SET_CAR_DRIVING_STYLE robber_quad[2] DRIVINGMODE_AVOIDCARS SET_UPSIDEDOWN_CAR_NOT_DAMAGED robber_quad[2] TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER robber_quad[2] TRUE CREATE_CAR QUAD 235.3937 -100.0505 0.4375 robber_quad[3] SET_CAR_HEADING robber_quad[3] 17.5591 SET_CAR_CRUISE_SPEED robber_quad[3] 20.0 SET_CAR_DRIVING_STYLE robber_quad[3] DRIVINGMODE_AVOIDCARS SET_UPSIDEDOWN_CAR_NOT_DAMAGED robber_quad[3] TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER robber_quad[3] TRUE temp_int = 0 WHILE temp_int < 4 IF NOT IS_CAR_DEAD robber_quad[temp_int] IF temp_int = 0 CREATE_CHAR_INSIDE_CAR robber_quad[temp_int] PEDTYPE_MISSION1 CWMYFR robber[temp_int] ENDIF IF temp_int = 1 CREATE_CHAR_INSIDE_CAR robber_quad[temp_int] PEDTYPE_MISSION1 CWMYHB1 robber[temp_int] ENDIF IF temp_int = 2 CREATE_CHAR_INSIDE_CAR robber_quad[temp_int] PEDTYPE_MISSION1 CWMYFR robber[temp_int] ENDIF IF temp_int = 3 CREATE_CHAR_INSIDE_CAR robber_quad[temp_int] PEDTYPE_MISSION1 CWMYHB1 robber[temp_int] ENDIF SET_CHAR_ACCURACY robber[temp_int] 60 GIVE_WEAPON_TO_CHAR robber[temp_int] WEAPONTYPE_PISTOL 99999 TASK_TOGGLE_PED_THREAT_SCANNER robber[temp_int] FALSE FALSE FALSE SET_CHAR_DECISION_MAKER robber[temp_int] empty_dm SET_CHAR_PROOFS robber[temp_int] TRUE TRUE TRUE TRUE TRUE SET_ANIM_GROUP_FOR_CHAR robber[temp_int] MAN ENDIF temp_int++ ENDWHILE // pause and immediately pause playbacks START_PLAYBACK_RECORDED_CAR robber_quad[0] 501 START_PLAYBACK_RECORDED_CAR robber_quad[1] 502 START_PLAYBACK_RECORDED_CAR robber_quad[2] 503 START_PLAYBACK_RECORDED_CAR robber_quad[3] 504 temp_int = 0 WHILE temp_int < 4 IF NOT temp_int = 0 IF NOT temp_int = 3 SKIP_IN_PLAYBACK_RECORDED_CAR robber_quad[temp_int] 5.0 ELSE SKIP_IN_PLAYBACK_RECORDED_CAR robber_quad[temp_int] 7.0 ENDIF ENDIF PAUSE_PLAYBACK_RECORDED_CAR robber_quad[temp_int] paused[temp_int] = 1 temp_int++ ENDWHILE // create shopkeeper and customer CREATE_CHAR PEDTYPE_CIVMALE HMOST 251.6866 -54.9554 0.6181 shop_keeper SET_CHAR_HEADING shop_keeper 174.9027 SET_CHAR_DECISION_MAKER shop_keeper empty_dm CREATE_CHAR PEDTYPE_CIVFEMALE SWMOTR1 251.6549 -56.4859 0.6255 customer SET_CHAR_HEADING customer 354.6266 SET_CHAR_DECISION_MAKER customer empty_dm TASK_CHAT_WITH_CHAR shop_keeper customer TRUE TRUE TASK_CHAT_WITH_CHAR customer shop_keeper FALSE TRUE cam_x = 261.8140 cam_y = -79.2233 cam_z = 3.2479 look_x = 261.3385 look_y = -78.3447 look_z = 3.2922 x = look_x - cam_x y = look_y - cam_y z = look_z - cam_z GET_DISTANCE_BETWEEN_COORDS_3D look_x look_y look_z cam_x cam_y cam_z temp_float x /= temp_float y /= temp_float z /= temp_float x *= 15.0 y *= 15.0 z *= 15.0 look_x = cam_x + x look_y = cam_y + y look_z = cam_z + z x = 260.8760 - 261.4119 y = -77.7132 + 78.5511 z = 2.2067 - 2.3102 GET_DISTANCE_BETWEEN_COORDS_3D 261.4119 -78.5511 2.3102 260.8760 -77.7132 2.2067 temp_float x /= temp_float y /= temp_float z /= temp_float x *= 15.0 y *= 15.0 z *= 15.0 dest_look_x = 261.4119 + x dest_look_y = -78.5511 + y dest_look_z = 2.3102 + z SET_FIXED_CAMERA_POSITION cam_x cam_y cam_z 0.0 0.0 0.0 POINT_CAMERA_AT_POINT look_x look_y look_z JUMP_CUT SET_NEAR_CLIP 0.1 WAIT 500 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE TIMERA = 0 TIMERB = 0 m_goals++ BREAK CASE 2 m_goals++ BREAK // stage specific stuff CASE 3 IF NOT IS_CHAR_DEAD catalina CLEAR_CHAR_TASKS_IMMEDIATELY catalina OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 261.2168 -77.1227 0.6181 PEDMOVE_WALK 3000 TASK_ACHIEVE_HEADING -1 41.0763 TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 //TASK_PLAY_ANIM -1 WOMAN_IDLESTANCE PED 4.0 TRUE FALSE FALSE FALSE -1 //TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK catalina temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer OPEN_SEQUENCE_TASK temp_seq TASK_PAUSE -1 2000 TASK_GO_STRAIGHT_TO_COORD -1 260.7615 -77.7368 0.6181 PEDMOVE_WALK 8000 TASK_ACHIEVE_HEADING -1 5.0 IF NOT IS_CHAR_DEAD catalina TASK_LOOK_AT_CHAR -1 catalina 8000 ENDIF TASK_PAUSE -1 3000 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK scplayer temp_seq CLEAR_SEQUENCE_TASK temp_seq TIMERA = 0 TIMERB = 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT1_AA crane_cam_started = 0 //CAMERA_RESET_NEW_SCRIPTABLES //CAMERA_SET_VECTOR_MOVE 261.8140 -79.2233 3.2479 fEndPosX fEndPosY fEndPosZ fTime TRUE/FALSE m_goals++ BREAK // wait a couple of ticks before dialogue CASE 4 IF TIMERA > 1500 //PRINT_NOW CAT101 6000 1 // Catalina - 'Ok, robbing this place should be a peice of piss.' $audio_string = &CAT1_AA audio_sound_file = SOUND_CAT1_AA START_NEW_SCRIPT audio_line catalina 0 1 1 1 CLEAR_MISSION_AUDIO 2 IF cat_counter = 0 LOAD_MISSION_AUDIO 2 SOUND_CAT1_AC ELSE LOAD_MISSION_AUDIO 2 SOUND_CAT1_AB ENDIF TIMERA = 0 m_goals++ TIMERA = 0 ELSE IF TIMERA > 1000 // GOSUB cat1_update_crane_cam_1 // SET_FIXED_CAMERA_POSITION cam_x cam_y cam_z 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT look_x look_y look_z JUMP_CUT LVAR_INT crane_cam_started IF crane_cam_started = 0 CAMERA_RESET_NEW_SCRIPTABLES CAMERA_SET_VECTOR_MOVE 261.8140 -79.2233 3.2479 261.4119 -78.5511 2.3102 3000 TRUE CAMERA_SET_VECTOR_TRACK 261.3385 -78.3447 3.2922 253.3734 -65.9824 0.7577 3000 TRUE CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE crane_cam_started++ ENDIF ENDIF ENDIF TIMERB = 0 BREAK // 'you mean like that last place' CASE 5 IF TIMERA > 1000 IF audio_line_is_active = 0 IF NOT IS_CHAR_DEAD catalina CLEAR_CHAR_TASKS catalina ENDIF IF cat_counter = 0 $audio_string = &CAT1_AC audio_sound_file = SOUND_CAT1_AC ELSE $audio_string = &CAT1_AB audio_sound_file = SOUND_CAT1_AB ENDIF START_NEW_SCRIPT audio_line scplayer 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT1_AD TIMERA = 0 m_goals++ ENDIF ENDIF BREAK // who are these cowboys CASE 6 IF TIMERA > 1000 IF audio_line_is_active = 0 $audio_string = &CAT1_AD audio_sound_file = SOUND_CAT1_AD START_NEW_SCRIPT audio_line catalina 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT1_AE TIMERA = 0 m_goals++ ENDIF ENDIF BREAK // hang back a while CASE 7 IF TIMERA > 1000 IF audio_line_is_active = 0 $audio_string = &CAT1_AE audio_sound_file = SOUND_CAT1_AE START_NEW_SCRIPT audio_line scplayer 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT1_AF TIMERA = 0 m_goals++ ENDIF ENDIF BREAK // wait for all the guys to be off their quads CASE 8 IF robber_flag[0] = 2 IF NOT IS_CHAR_DEAD catalina CAMERA_RESET_NEW_SCRIPTABLES SET_FIXED_CAMERA_POSITION 260.0450 -63.3693 2.4676 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 259.1025 -63.6456 2.2799 JUMP_CUT m_goals++ TIMERA = 0 ENDIF ENDIF BREAK // cut to inside the store CASE 9 IF TIMERA > 2500 // SET_FIXED_CAMERA_POSITION 251.5606 -52.7225 2.6179 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 251.7925 -53.6661 2.3814 JUMP_CUT SET_FIXED_CAMERA_POSITION 250.2375 -53.7657 2.3280 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 250.8728 -54.5222 2.1726 JUMP_CUT IF NOT IS_CHAR_DEAD robber[0] CLEAR_CHAR_TASKS_IMMEDIATELY robber[0] SET_CHAR_COORDINATES robber[0] 252.6819 -56.3618 0.6181 SET_CHAR_HEADING robber[0] 20.1267 IF NOT IS_CHAR_DEAD shop_keeper OPEN_SEQUENCE_TASK temp_seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_AIM_GUN_AT_CHAR -1 shop_keeper 999999 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK robber[0] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF IF NOT IS_CHAR_DEAD robber[1] CLEAR_CHAR_TASKS_IMMEDIATELY robber[1] SET_CHAR_COORDINATES robber[1] 252.1074 -57.8084 0.6181 SET_CHAR_HEADING robber[1] 21.3066 IF NOT IS_CHAR_DEAD customer SET_CHAR_HEALTH customer 1 OPEN_SEQUENCE_TASK temp_seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_LOOK_AT_CHAR -1 customer 5000 TASK_AIM_GUN_AT_CHAR -1 customer 2300 TASK_KILL_CHAR_ON_FOOT -1 customer CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK robber[1] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF IF NOT IS_CHAR_DEAD robber[2] CLEAR_CHAR_TASKS_IMMEDIATELY robber[2] SET_CHAR_COORDINATES robber[2] 254.4398 -57.6653 0.6473 SET_CHAR_HEADING robber[2] 48.9264 ENDIF IF NOT IS_CHAR_DEAD robber[3] CLEAR_CHAR_TASKS_IMMEDIATELY robber[3] SET_CHAR_COORDINATES robber[3] 255.1348 -61.2211 0.6181 SET_CHAR_HEADING robber[3] 170.6080 ENDIF IF NOT IS_CHAR_DEAD customer CLEAR_CHAR_TASKS_IMMEDIATELY customer OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD robber[0] TASK_LOOK_AT_CHAR -1 robber[0] 5000 ENDIF TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM -1 251.1549 -56.4655 0.6255 293.7874 0.02 handscower ped 4.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK customer temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD shop_keeper TASK_HANDS_UP shop_keeper 999999 ENDIF m_goals++ TIMERA = 0 ENDIF BREAK CASE 10 IF TIMERA > 3000 //SET_FIXED_CAMERA_POSITION 260.6280 -64.5171 2.0402 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 259.6584 -64.3497 1.8618 JUMP_CUT //SET_FIXED_CAMERA_POSITION 262.5057 -78.0042 1.9449 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 261.7840 -77.3174 2.0317 JUMP_CUT // SET_FIXED_CAMERA_POSITION 262.9865 -78.5169 2.1154 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 262.2247 -77.8699 2.1485 JUMP_CUT // SET_FIXED_CAMERA_POSITION 260.0617 -70.5637 0.9636 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 259.3957 -69.8361 1.1276 JUMP_CUT SET_PED_DENSITY_MULTIPLIER 0.0 CLEAR_AREA 242.0291 -62.9491 2.3886 50.0 TRUE SET_FIXED_CAMERA_POSITION 242.0291 -62.9491 2.3886 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 242.9384 -63.3287 2.2181 JUMP_CUT // create briefcases CREATE_OBJECT BRIEFCASE 254.2335 -56.9540 0.6181 bcase[0] CREATE_OBJECT BRIEFCASE 254.2335 -56.9540 0.6181 bcase[1] CREATE_OBJECT BRIEFCASE 254.2335 -56.9540 0.6181 bcase[2] CREATE_OBJECT BRIEFCASE 254.2335 -56.9540 0.6181 bcase[3] // set robbers positions IF NOT IS_CHAR_DEAD robber[0] CLEAR_CHAR_TASKS_IMMEDIATELY robber[0] TASK_PICK_UP_OBJECT robber[0] bcase[0] 0.0 0.15 0.0 PED_HANDL HOLD_ORIENTATE_BONE_FULL NULL NULL FALSE SET_CHAR_COORDINATES robber[0] 254.2335 -56.9540 0.6181 SET_CHAR_HEADING robber[0] 190.0 ENDIF IF NOT IS_CHAR_DEAD robber[3] CLEAR_CHAR_TASKS_IMMEDIATELY robber[3] TASK_PICK_UP_OBJECT robber[3] bcase[3] 0.0 0.15 0.0 PED_HANDL HOLD_ORIENTATE_BONE_FULL NULL NULL FALSE SET_CHAR_COORDINATES robber[3] 254.2521 -58.7186 0.6181 SET_CHAR_HEADING robber[3] 190.0 ENDIF IF NOT IS_CHAR_DEAD robber[2] CLEAR_CHAR_TASKS_IMMEDIATELY robber[2] TASK_PICK_UP_OBJECT robber[2] bcase[2] 0.0 0.15 0.0 PED_HANDL HOLD_ORIENTATE_BONE_FULL NULL NULL FALSE SET_CHAR_COORDINATES robber[2] 254.2762 -60.0254 0.6255 SET_CHAR_HEADING robber[2] 190.0 ENDIF IF NOT IS_CHAR_DEAD robber[1] CLEAR_CHAR_TASKS_IMMEDIATELY robber[1] TASK_PICK_UP_OBJECT robber[1] bcase[1] 0.0 0.15 0.0 PED_HANDL HOLD_ORIENTATE_BONE_FULL NULL NULL FALSE SET_CHAR_COORDINATES robber[1] 255.1927 -54.9104 0.6181 SET_CHAR_HEADING robber[1] 190.0 ENDIF TIMERA = 0 m_goals++ ENDIF BREAK // make alarm go off CASE 11 //IF TIMERA > 1000 //ADD_CONTINUOUS_SOUND 251.5757 -62.9454 3.3786 SOUND_BANK_ALARM_LOOP snd_fx SET_MISSION_AUDIO_POSITION 3 251.5757 -62.9454 3.3786 PLAY_MISSION_AUDIO 3 alarm_sound_flag = 1 m_goals++ TIMERA = 0 //ENDIF BREAK CASE 12 temp_int = 0 WHILE temp_int < 4 IF NOT IS_CHAR_DEAD robber[temp_int] //SET_CHAR_COLLISION robber[temp_int] FALSE robber_flag[temp_int]++ ENDIF temp_int++ ENDWHILE //PRINT_NOW CAT105 3000 1 // Catalina - 'They stole our idea!!' TIMERA = 0 m_goals++ BREAK CASE 13 IF TIMERA > 1000 IF audio_line_is_active = 0 $audio_string = &CAT1_AF audio_sound_file = SOUND_CAT1_AF START_NEW_SCRIPT audio_line robber[3] 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT1_AG TIMERA = 0 m_goals++ ENDIF ENDIF BREAK CASE 14 IF TIMERA > 1000 IF audio_line_is_active = 0 $audio_string = &CAT1_AG audio_sound_file = SOUND_CAT1_AG START_NEW_SCRIPT audio_line catalina 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT1_AH TIMERA = 0 m_goals++ ENDIF ENDIF BREAK CASE 15 IF TIMERA < 10000 IF NOT IS_CHAR_DEAD robber[3] IF NOT IS_CAR_DEAD robber_quad[3] IF IS_CHAR_IN_CAR robber[3] robber_quad[3] m_goals++ TIMERA = 0 ENDIF ENDIF ENDIF ELSE m_goals++ ENDIF BREAK CASE 16 IF TIMERA > 500 m_goals++ ENDIF BREAK CASE 17 //IF TIMERA > 5000 // // stop playback for each quad, we are going to restart them // temp_int = 0 // WHILE temp_int < 4 // IF NOT IS_CAR_DEAD robber_quad[temp_int] // IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[temp_int] // STOP_PLAYBACK_RECORDED_CAR robber_quad[temp_int] // ENDIF // ENDIF // temp_int++ // ENDWHILE // // REQUEST_CAR_RECORDING 505 // REQUEST_CAR_RECORDING 506 // REQUEST_CAR_RECORDING 507 // REQUEST_CAR_RECORDING 509 // WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 505 // OR NOT HAS_CAR_RECORDING_BEEN_LOADED 506 // OR NOT HAS_CAR_RECORDING_BEEN_LOADED 507 // OR NOT HAS_CAR_RECORDING_BEEN_LOADED 509 // WAIT 0 // ENDWHILE // delete briefcases temp_int = 0 WHILE temp_int < 4 IF DOES_OBJECT_EXIST bcase[temp_int] DELETE_OBJECT bcase[temp_int] ENDIF temp_int++ ENDWHILE // warp all dudes onto their cars temp_int = 0 WHILE temp_int < 4 IF NOT IS_CHAR_DEAD robber[temp_int] IF NOT IS_CAR_DEAD robber_quad[temp_int] IF NOT IS_CHAR_IN_CAR robber[temp_int] robber_quad[temp_int] WARP_CHAR_INTO_CAR robber[temp_int] robber_quad[temp_int] ENDIF ENDIF ENDIF robber_flag[temp_int] = 6 temp_int++ ENDWHILE // restart playback for each car and skip to the point we want IF NOT IS_CAR_DEAD robber_quad[0] // IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[0] // SKIP_IN_PLAYBACK_RECORDED_CAR robber_quad[0] -999.0 // ENDIF IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[0] IF NOT HAS_CAR_RECORDING_BEEN_LOADED 509 REQUEST_CAR_RECORDING 509 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 509 WAIT 0 ENDWHILE ENDIF IF NOT IS_CAR_DEAD robber_quad[0] START_PLAYBACK_RECORDED_CAR robber_quad[0] 509 SKIP_IN_PLAYBACK_RECORDED_CAR robber_quad[0] 2.0 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD robber_quad[1] // IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[1] // SKIP_IN_PLAYBACK_RECORDED_CAR robber_quad[1] -999.0 // ENDIF IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[1] IF NOT HAS_CAR_RECORDING_BEEN_LOADED 505 REQUEST_CAR_RECORDING 505 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 505 WAIT 0 ENDWHILE ENDIF IF NOT IS_CAR_DEAD robber_quad[1] START_PLAYBACK_RECORDED_CAR robber_quad[1] 505 SKIP_IN_PLAYBACK_RECORDED_CAR robber_quad[1] 0.0 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD robber_quad[2] // IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[2] // SKIP_IN_PLAYBACK_RECORDED_CAR robber_quad[2] -999.0 // ENDIF IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[2] IF NOT HAS_CAR_RECORDING_BEEN_LOADED 506 REQUEST_CAR_RECORDING 506 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 506 WAIT 0 ENDWHILE ENDIF IF NOT IS_CAR_DEAD robber_quad[2] START_PLAYBACK_RECORDED_CAR robber_quad[2] 506 SKIP_IN_PLAYBACK_RECORDED_CAR robber_quad[2] 6.0 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD robber_quad[3] // IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[3] // SKIP_IN_PLAYBACK_RECORDED_CAR robber_quad[3] -999.0 // ENDIF IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[3] IF NOT HAS_CAR_RECORDING_BEEN_LOADED 507 REQUEST_CAR_RECORDING 507 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 507 WAIT 0 ENDWHILE ENDIF IF NOT IS_CAR_DEAD robber_quad[3] START_PLAYBACK_RECORDED_CAR robber_quad[3] 507 SKIP_IN_PLAYBACK_RECORDED_CAR robber_quad[3] 3.0 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD catalina CLEAR_CHAR_TASKS_IMMEDIATELY catalina SET_CHAR_COORDINATES catalina 260.2472 -75.3335 0.4697 ENDIF TIMERA = 0 //ENDIF SET_FIXED_CAMERA_POSITION 261.7350 -75.3817 2.1270 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 260.8360 -74.9604 2.0068 JUMP_CUT m_goals++ BREAK // after a couple of seconds catalina starts shooting CASE 18 //IF TIMERA > 2000 IF NOT IS_CHAR_DEAD catalina SET_CHAR_HEADING catalina 53.9394 SET_CHAR_SHOOT_RATE catalina 100 IF NOT IS_CHAR_DEAD robber[3] OPEN_SEQUENCE_TASK temp_seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_LOOK_AT_CHAR -1 robber[3] 1000 TASK_AIM_GUN_AT_CHAR -1 robber[3] 5000 //TASK_KILL_CHAR_ON_FOOT -1 robber[3] CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK catalina temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF TIMERA = 0 m_goals++ //ENDIF BREAK CASE 19 IF audio_line_is_active = 0 $audio_string = &CAT1_AH audio_sound_file = SOUND_CAT1_AH START_NEW_SCRIPT audio_line catalina 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CATX_TD TIMERA = 0 m_goals++ ENDIF BREAK // show catalina shooting back guy CASE 20 IF TIMERA > 2000 IF NOT IS_CHAR_DEAD catalina IF NOT IS_CHAR_DEAD robber[3] SET_CHAR_SHOOT_RATE catalina 100 TASK_KILL_CHAR_ON_FOOT catalina robber[3] SET_CHAR_PROOFS robber[3] TRUE TRUE TRUE TRUE TRUE ENDIF ENDIF ENDIF IF TIMERA > 2500 SET_FIXED_CAMERA_POSITION 252.0826 -71.4979 1.3761 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 253.0449 -71.7658 1.4225 JUMP_CUT ENDIF IF TIMERA > 2800 IF NOT IS_CHAR_DEAD robber[3] IF NOT IS_CAR_DEAD robber_quad[3] CLEAR_CHAR_TASKS_IMMEDIATELY robber[3] OPEN_SEQUENCE_TASK temp_seq TASK_DIE_NAMED_ANIM -1 BIKE_FALL_OFF PED 4.0 TRUE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK robber[3] temp_seq CLEAR_SEQUENCE_TASK temp_seq $audio_string = &CATX_TD audio_sound_file = SOUND_CATX_TD START_NEW_SCRIPT audio_line catalina 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT1_BA TIMERA = 0 m_goals++ TIMERA = 0 ENDIF ENDIF ENDIF BREAK // pause for a couple of secs CASE 21 IF TIMERA > 1000 m_goals++ ENDIF BREAK // create dropped briefcase CASE 22 IF IS_CHAR_DEAD robber[3] GET_DEAD_CHAR_COORDINATES robber[3] x y z SET_FIXED_CAMERA_POSITION 259.2034 -75.5284 2.0793 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 260.1396 -75.2342 1.8871 JUMP_CUT m_goals++ ENDIF BREAK // make catalina get briefcase, then get on quad, make player get on quad CASE 23 IF NOT IS_CHAR_DEAD catalina CLEAR_CHAR_TASKS catalina OPEN_SEQUENCE_TASK temp_seq //TASK_GO_STRAIGHT_TO_COORD -1 260.7693 -73.6756 1.0906 PEDMOVE_RUN 5000 IF NOT IS_CAR_DEAD robber_quad[3] TASK_ENTER_CAR_AS_PASSENGER -1 robber_quad[3] 5000 0 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK catalina temp_seq CLEAR_SEQUENCE_TASK temp_seq CLEAR_CHAR_TASKS scplayer OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 263.4937 -75.2639 0.4697 PEDMOVE_RUN 5000 IF NOT IS_CAR_DEAD robber_quad[3] TASK_ENTER_CAR_AS_DRIVER -1 robber_quad[3] 10000 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK scplayer temp_seq CLEAR_SEQUENCE_TASK temp_Seq //PRINT_NOW CAT107 4000 1 // CJ - 'Jump on, we can catch the rest of those nob ends.' $audio_string = &CAT1_BA audio_sound_file = SOUND_CAT1_BA START_NEW_SCRIPT audio_line catalina 0 1 1 1 TIMERA = 0 m_goals++ ENDIF BREAK // delete pickup when catalina walks into it CASE 24 // IF NOT IS_CHAR_DEAD catalina // IF LOCATE_CHAR_ON_FOOT_3D catalina 260.7693 -73.6756 1.0906 1.0 1.0 2.0 FALSE //REMOVE_PICKUP robber_pickup[3] m_goals++ // ENDIF // ENDIF BREAK // wait for catalina and player to get on quad CASE 25 IF NOT IS_CAR_DEAD robber_quad[3] IF NOT IS_CHAR_DEAD catalina IF IS_CHAR_IN_CAR catalina robber_quad[3] AND IS_CHAR_IN_CAR scplayer robber_quad[3] m_goals = 99 TIMERA = 0 ENDIF ENDIF ENDIF BREAK ENDSWITCH IF m_goals > 1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED m_goals = 99 skipped_cutscene = 1 ENDIF ENDIF // control playbacks ----------------------------------------------- IF robber_flag[0] = 0 IF paused[0] = 1 IF TIMERB > 1000 IF NOT IS_CAR_DEAD robber_quad[0] IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[0] UNPAUSE_PLAYBACK_RECORDED_CAR robber_quad[0] paused[0] = 0 robber_flag[0]++ ENDIF ENDIF ENDIF ENDIF ENDIF IF robber_flag[1] = 0 IF paused[1] = 1 IF TIMERB > 2000 IF NOT IS_CAR_DEAD robber_quad[1] IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[1] UNPAUSE_PLAYBACK_RECORDED_CAR robber_quad[1] paused[1] = 0 robber_flag[1]++ ENDIF ENDIF ENDIF ENDIF ENDIF IF robber_flag[2] = 0 IF paused[2] = 1 IF TIMERB > 2000 IF NOT IS_CAR_DEAD robber_quad[2] IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[2] UNPAUSE_PLAYBACK_RECORDED_CAR robber_quad[2] paused[2] = 0 robber_flag[2]++ ENDIF ENDIF ENDIF ENDIF ENDIF IF robber_flag[3] = 0 IF paused[3] = 1 IF TIMERB > 3000 IF NOT IS_CAR_DEAD robber_quad[3] IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[3] UNPAUSE_PLAYBACK_RECORDED_CAR robber_quad[3] paused[3] = 0 robber_flag[3]++ ENDIF ENDIF ENDIF ENDIF ENDIF // robbers get off quads and enter shop ---------------------------------- IF robber_flag[0] = 1 IF NOT IS_CAR_DEAD robber_quad[0] IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[0] IF NOT IS_CHAR_DEAD robber[0] FLUSH_ROUTE EXTEND_ROUTE 254.5467 -62.6116 0.5625 EXTEND_ROUTE 254.0845 -57.0229 0.5781 OPEN_SEQUENCE_TASK temp_seq TASK_LEAVE_CAR -1 robber_quad[0] TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK robber[0] temp_seq CLEAR_SEQUENCE_TASK temp_seq robber_flag[0]++ ENDIF ENDIF ENDIF ENDIF IF robber_flag[1] = 1 IF NOT IS_CAR_DEAD robber_quad[1] IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[1] IF NOT IS_CHAR_DEAD robber[1] FLUSH_ROUTE EXTEND_ROUTE 254.5467 -62.6116 0.5625 EXTEND_ROUTE 254.0845 -57.0229 0.5781 OPEN_SEQUENCE_TASK temp_seq TASK_LEAVE_CAR -1 robber_quad[1] TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK robber[1] temp_seq CLEAR_SEQUENCE_TASK temp_seq robber_flag[1]++ ENDIF ENDIF ENDIF ENDIF IF robber_flag[2] = 1 IF NOT IS_CAR_DEAD robber_quad[2] IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[2] IF NOT IS_CHAR_DEAD robber[2] FLUSH_ROUTE EXTEND_ROUTE 254.5467 -62.6116 0.5625 EXTEND_ROUTE 254.0845 -57.0229 0.5781 OPEN_SEQUENCE_TASK temp_seq TASK_LEAVE_CAR -1 robber_quad[2] TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK robber[2] temp_seq CLEAR_SEQUENCE_TASK temp_seq robber_flag[2]++ ENDIF ENDIF ENDIF ENDIF IF robber_flag[3] = 1 IF NOT IS_CAR_DEAD robber_quad[3] IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[3] IF NOT IS_CHAR_DEAD robber[3] FLUSH_ROUTE EXTEND_ROUTE 254.5467 -62.6116 0.5625 EXTEND_ROUTE 254.0845 -57.0229 0.5781 OPEN_SEQUENCE_TASK temp_seq TASK_LEAVE_CAR -1 robber_quad[3] TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK robber[3] temp_seq CLEAR_SEQUENCE_TASK temp_seq robber_flag[3]++ ENDIF ENDIF ENDIF ENDIF // robbers leave shop ---------------------------------------------------- IF robber_flag[0] = 3 IF NOT IS_CHAR_DEAD robber[0] IF NOT IS_CAR_DEAD robber_quad[0] FLUSH_ROUTE EXTEND_ROUTE 254.6638 -62.4099 0.6181 EXTEND_ROUTE 252.90 -64.95 0.6181 //251.7 -70.45 0.6181 OPEN_SEQUENCE_TASK temp_seq TASK_PAUSE -1 2000 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE TASK_ENTER_CAR_AS_DRIVER -1 robber_quad[0] 20000 CLOSE_SEQUENCE_TASK temp_seq SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_RUN PERFORM_SEQUENCE_TASK robber[0] temp_seq CLEAR_SEQUENCE_TASK temp_seq robber_flag[0]++ ENDIF ENDIF ENDIF IF robber_flag[1] = 3 IF NOT IS_CHAR_DEAD robber[1] IF NOT IS_CAR_DEAD robber_quad[1] IF NOT IS_CAR_DEAD robber_quad[1] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS robber_quad[1] 1.0 0.5 0.0 x y z ENDIF FLUSH_ROUTE EXTEND_ROUTE 255.0126 -62.5672 0.6181 EXTEND_ROUTE 255.9082 -64.7079 0.5781 EXTEND_ROUTE x y z OPEN_SEQUENCE_TASK temp_seq TASK_PAUSE -1 3000 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE TASK_ENTER_CAR_AS_DRIVER -1 robber_quad[1] 20000 CLOSE_SEQUENCE_TASK temp_seq SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_RUN PERFORM_SEQUENCE_TASK robber[1] temp_seq CLEAR_SEQUENCE_TASK temp_seq robber_flag[1]++ ENDIF ENDIF ENDIF IF robber_flag[2] = 3 IF NOT IS_CHAR_DEAD robber[2] IF NOT IS_CAR_DEAD robber_quad[2] FLUSH_ROUTE EXTEND_ROUTE 254.3236 -62.2213 0.6181 EXTEND_ROUTE 250.6540 -65.0175 0.6181 //245.0 -67.95 0.6181 OPEN_SEQUENCE_TASK temp_seq TASK_PAUSE -1 0 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE TASK_ENTER_CAR_AS_DRIVER -1 robber_quad[2] 20000 CLOSE_SEQUENCE_TASK temp_seq SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_RUN PERFORM_SEQUENCE_TASK robber[2] temp_seq CLEAR_SEQUENCE_TASK temp_seq robber_flag[2]++ ENDIF ENDIF ENDIF IF robber_flag[3] = 3 IF NOT IS_CHAR_DEAD robber[3] IF NOT IS_CAR_DEAD robber_quad[3] IF NOT IS_CAR_DEAD robber_quad[3] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS robber_quad[3] 1.0 0.5 0.0 x y z ENDIF FLUSH_ROUTE EXTEND_ROUTE 254.0475 -62.7343 0.6181 //EXTEND_ROUTE 242.44 -66.15 0.6181 EXTEND_ROUTE 247.6622 -64.1287 0.5781 EXTEND_ROUTE x y z OPEN_SEQUENCE_TASK temp_seq TASK_PAUSE -1 1000 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE TASK_ENTER_CAR_AS_DRIVER -1 robber_quad[3] 20000 CLOSE_SEQUENCE_TASK temp_seq SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_RUN PERFORM_SEQUENCE_TASK robber[3] temp_seq CLEAR_SEQUENCE_TASK temp_seq robber_flag[3]++ ENDIF ENDIF ENDIF // robbers enter cars IF robber_flag[0] = 4 IF NOT IS_CHAR_DEAD robber[0] IF NOT IS_CAR_DEAD robber_quad[0] IF LOCATE_CHAR_ON_FOOT_CAR_3D robber[0] robber_quad[0] 2.5 2.5 2.5 FALSE SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_RUN TASK_ENTER_CAR_AS_DRIVER robber[0] robber_quad[0] 5000 robber_flag[0]++ ENDIF ENDIF ENDIF ENDIF IF robber_flag[1] = 4 robber_flag[1]++ ENDIF IF robber_flag[2] = 4 IF NOT IS_CHAR_DEAD robber[2] IF NOT IS_CAR_DEAD robber_quad[2] IF LOCATE_CHAR_ON_FOOT_CAR_3D robber[2] robber_quad[2] 2.5 2.5 2.5 FALSE SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_RUN TASK_ENTER_CAR_AS_DRIVER robber[2] robber_quad[2] 5000 robber_flag[2]++ ENDIF ENDIF ENDIF ENDIF IF robber_flag[3] = 4 robber_flag[3]++ ENDIF // playback of robbers leaving store IF robber_flag[0] = 5 IF NOT IS_CHAR_DEAD robber[0] IF NOT IS_CAR_DEAD robber_quad[0] IF IS_CHAR_IN_CAR robber[0] robber_quad[0] IF NOT HAS_CAR_RECORDING_BEEN_LOADED 509 REQUEST_CAR_RECORDING 509 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 509 WAIT 0 ENDWHILE ENDIF IF NOT IS_CAR_DEAD robber_quad[0] START_PLAYBACK_RECORDED_CAR robber_quad[0] 509 ENDIF robber_flag[0]++ ENDIF ENDIF ENDIF ENDIF IF robber_flag[1] = 5 IF NOT IS_CHAR_DEAD robber[1] IF NOT IS_CAR_DEAD robber_quad[1] IF IS_CHAR_IN_CAR robber[1] robber_quad[1] IF NOT HAS_CAR_RECORDING_BEEN_LOADED 505 REQUEST_CAR_RECORDING 505 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 505 WAIT 0 ENDWHILE ENDIF IF NOT IS_CAR_DEAD robber_quad[1] START_PLAYBACK_RECORDED_CAR robber_quad[1] 505 ENDIF robber_flag[1]++ ENDIF ENDIF ENDIF ENDIF IF robber_flag[2] = 5 IF NOT IS_CHAR_DEAD robber[2] IF NOT IS_CAR_DEAD robber_quad[2] IF IS_CHAR_IN_CAR robber[2] robber_quad[2] IF NOT HAS_CAR_RECORDING_BEEN_LOADED 506 REQUEST_CAR_RECORDING 506 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 506 WAIT 0 ENDWHILE ENDIF IF NOT IS_CAR_DEAD robber_quad[2] START_PLAYBACK_RECORDED_CAR robber_quad[2] 506 ENDIF robber_flag[2]++ ENDIF ENDIF ENDIF ENDIF IF robber_flag[3] = 5 IF NOT IS_CHAR_DEAD robber[3] IF NOT IS_CAR_DEAD robber_quad[3] IF IS_CHAR_IN_CAR robber[3] robber_quad[3] IF NOT HAS_CAR_RECORDING_BEEN_LOADED 507 REQUEST_CAR_RECORDING 507 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 507 WAIT 0 ENDWHILE ENDIF IF NOT IS_CAR_DEAD robber_quad[3] START_PLAYBACK_RECORDED_CAR robber_quad[3] 507 ENDIF robber_flag[3]++ ENDIF ENDIF ENDIF ENDIF // set quad bike positions IF robber_flag[0] = 7 IF NOT IS_CAR_DEAD robber_quad[0] IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[0] SET_CAR_COORDINATES robber_quad[0] 376.1397 -94.8354 1.8378 SET_CAR_HEADING robber_quad[0] 285.1002 robber_flag[0]++ ENDIF ENDIF ENDIF IF robber_flag[1] = 7 IF NOT IS_CAR_DEAD robber_quad[1] IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[1] SET_CAR_COORDINATES robber_quad[1] 370.2741 -95.2991 1.3107 SET_CAR_HEADING robber_quad[1] 273.2807 robber_flag[1]++ ENDIF ENDIF ENDIF IF robber_flag[2] = 7 IF NOT IS_CAR_DEAD robber_quad[2] IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[2] SET_CAR_COORDINATES robber_quad[2] 363.1674 -95.3071 0.7736 SET_CAR_HEADING robber_quad[2] 273.2807 robber_flag[2]++ ENDIF ENDIF ENDIF // finish cutscene & exit IF m_goals = 99 CAMERA_RESET_NEW_SCRIPTABLES SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 TRUE // set any flags disable_group = 0 paused[0] = 0 paused[1] = 0 paused[2] = 0 paused[3] = 0 // set everything to where it's meant to be IF NOT IS_CAR_DEAD robber_quad[0] IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[0] STOP_PLAYBACK_RECORDED_CAR robber_quad[0] ENDIF SET_CAR_COORDINATES robber_quad[0] 376.1397 -94.8354 1.8378 SET_CAR_HEADING robber_quad[0] 285.1002 ENDIF IF NOT IS_CAR_DEAD robber_quad[1] IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[1] STOP_PLAYBACK_RECORDED_CAR robber_quad[1] ENDIF SET_CAR_COORDINATES robber_quad[1] 370.2741 -95.2991 1.3107 SET_CAR_HEADING robber_quad[1] 273.2807 ENDIF IF NOT IS_CAR_DEAD robber_quad[2] IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[2] STOP_PLAYBACK_RECORDED_CAR robber_quad[2] ENDIF SET_CAR_COORDINATES robber_quad[2] 363.1674 -95.3071 0.7736 SET_CAR_HEADING robber_quad[2] 273.2807 ENDIF IF skipped_cutscene = 1 IF NOT IS_CAR_DEAD robber_quad[3] IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[3] STOP_PLAYBACK_RECORDED_CAR robber_quad[3] ENDIF SET_CAR_COORDINATES robber_quad[3] 263.8679 -73.6352 0.4297 SET_CAR_HEADING robber_quad[3] 272.3554 SET_CAR_HEALTH robber_quad[3] 1500 ENDIF ENDIF // delete robbers DELETE_CHAR robber[0] DELETE_CHAR robber[1] DELETE_CHAR robber[2] DELETE_CHAR robber[3] // delete briefcases DELETE_OBJECT bcase[0] DELETE_OBJECT bcase[1] DELETE_OBJECT bcase[2] DELETE_OBJECT bcase[3] IF NOT IS_CHAR_DEAD catalina SET_CHAR_DECISION_MAKER catalina tough_dm CLEAR_CHAR_TASKS_IMMEDIATELY catalina IF NOT IS_CAR_DEAD robber_quad[3] WARP_CHAR_INTO_CAR_AS_PASSENGER catalina robber_quad[3] 0 ENDIF ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF NOT IS_CAR_DEAD robber_quad[3] WARP_CHAR_INTO_CAR scplayer robber_quad[3] ENDIF // recreate robbers temp_int = 0 WHILE temp_int < 4 IF NOT IS_CAR_DEAD robber_quad[temp_int] IF temp_int = 0 CREATE_CHAR PEDTYPE_MISSION1 CWMYFR 0.0 0.0 0.0 robber[temp_int] ENDIF IF temp_int = 1 CREATE_CHAR PEDTYPE_MISSION1 CWMYHB1 0.0 0.0 0.0 robber[temp_int] ENDIF IF temp_int = 2 CREATE_CHAR PEDTYPE_MISSION1 CWMYFR 0.0 0.0 0.0 robber[temp_int] ENDIF IF temp_int = 3 CREATE_CHAR PEDTYPE_MISSION1 CWMYHB1 0.0 0.0 0.0 robber[temp_int] ENDIF SET_CHAR_ACCURACY robber[temp_int] 60 GIVE_WEAPON_TO_CHAR robber[temp_int] WEAPONTYPE_PISTOL 99999 TASK_TOGGLE_PED_THREAT_SCANNER robber[temp_int] FALSE FALSE FALSE SET_CHAR_DECISION_MAKER robber[temp_int] tough_dm SET_CHAR_PROOFS robber[temp_int] FALSE FALSE FALSE FALSE FALSE SET_ANIM_GROUP_FOR_CHAR robber[temp_int] MAN SET_CHAR_SUFFERS_CRITICAL_HITS robber[temp_int] FALSE SET_CHAR_MAX_HEALTH robber[temp_int] 100 SET_CHAR_HEALTH robber[temp_int] 100 ENDIF temp_int++ ENDWHILE // put robbers in their quads IF NOT IS_CAR_DEAD robber_quad[0] WARP_CHAR_INTO_CAR robber[0] robber_quad[0] ENDIF IF NOT IS_CAR_DEAD robber_quad[1] WARP_CHAR_INTO_CAR robber[1] robber_quad[1] ENDIF IF NOT IS_CAR_DEAD robber_quad[2] WARP_CHAR_INTO_CAR robber[2] robber_quad[2] ENDIF // set quad settings temp_int = 0 WHILE temp_int < 3 SET_CAR_CRUISE_SPEED robber_quad[temp_int] 20.0 SET_CAR_DRIVING_STYLE robber_quad[temp_int] DRIVINGMODE_AVOIDCARS SET_UPSIDEDOWN_CAR_NOT_DAMAGED robber_quad[temp_int] TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER robber_quad[temp_int] TRUE temp_int++ ENDWHILE // set camera SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT // create dead robber SET_CHAR_COORDINATES robber[3] 257.1983 -72.6410 1.4697 TASK_DEAD robber[3] MARK_CHAR_AS_NO_LONGER_NEEDED shop_keeper MARK_CHAR_AS_NO_LONGER_NEEDED customer MARK_CHAR_AS_NO_LONGER_NEEDED robber[3] MARK_MODEL_AS_NO_LONGER_NEEDED QUAD MARK_MODEL_AS_NO_LONGER_NEEDED CWMYFR MARK_MODEL_AS_NO_LONGER_NEEDED CWMYHB1 MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED HMOST MARK_MODEL_AS_NO_LONGER_NEEDED SWMOTR1 SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 IF NOT alarm_sound_flag = 1 SET_MISSION_AUDIO_POSITION 3 251.5757 -62.9454 3.3786 PLAY_MISSION_AUDIO 3 alarm_sound_flag = 1 ENDIF disable_group = 1 IF NOT IS_GROUP_MEMBER catalina Players_Group IF DOES_BLIP_EXIST catalina_blip REMOVE_BLIP catalina_blip ENDIF MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_Group catalina SET_CHAR_DROWNS_IN_WATER catalina FALSE in_group = 1 left_cat_dialogue = 0 ELSE in_group = 1 ENDIF SET_RADIO_CHANNEL RS_COUNTRY GOSUB CAT1_next_stage ENDIF RETURN // ************************************************************************************************************* // STAGE 2 - Quad bike chase // ************************************************************************************************************* cat1_m_stage_2: // initialisation for stage IF m_goals = 0 SET_CREATE_RANDOM_GANG_MEMBERS FALSE GENERATE_RANDOM_INT_IN_RANGE 0 8 cat_they_are_getting_away_dialogue temp_int = 0 WHILE temp_int < 3 // set robber settings IF NOT IS_CHAR_DEAD robber[temp_int] ADD_BLIP_FOR_CHAR robber[temp_int] robber_blip[temp_int] SET_CHAR_MAX_HEALTH robber[temp_int] 200 SET_CHAR_HEALTH robber[temp_int] 200 SET_CHAR_RELATIONSHIP robber[temp_int] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_SPECIAL SET_CHAR_RELATIONSHIP robber[temp_int] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 TASK_TOGGLE_PED_THREAT_SCANNER robber[temp_int] 1 0 0 SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE robber[temp_int] KNOCKOFFBIKE_DEFAULT ENDIF // set robber car settings IF NOT IS_CAR_DEAD robber_quad[temp_int] SET_CAR_DRIVING_STYLE robber_quad[temp_int] DRIVINGMODE_AVOIDCARS SET_CAR_CRUISE_SPEED robber_quad[temp_int] 25.0 SET_CAR_FORWARD_SPEED robber_quad[temp_int] 5.0 ENDIF temp_int++ ENDWHILE // initialise flags chase_flag[0] = 0 chase_flag[1] = 0 chase_flag[2] = 0 playback_paused[0] = 0 playback_paused[1] = 0 playback_paused[2] = 0 master_speed = 1.05 REQUEST_CAR_RECORDING 553 REQUEST_CAR_RECORDING 554 REQUEST_CAR_RECORDING 555 //LOAD_MISSION_AUDIO 3 SOUND_PART_MISSION_COMPLETE //SOUND_PICKUP_STANDARD WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 553 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 554 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 555 WAIT 0 ENDWHILE // start playback IF NOT IS_CAR_DEAD robber_quad[0] START_PLAYBACK_RECORDED_CAR_USING_AI robber_quad[0] 553 SKIP_IN_PLAYBACK_RECORDED_CAR robber_quad[0] 1.0 ADD_STUCK_CAR_CHECK robber_quad[0] 2.0 2000 ENDIF IF NOT IS_CAR_DEAD robber_quad[1] START_PLAYBACK_RECORDED_CAR_USING_AI robber_quad[1] 554 SKIP_IN_PLAYBACK_RECORDED_CAR robber_quad[1] 1.0 ADD_STUCK_CAR_CHECK robber_quad[1] 2.0 2000 ENDIF IF NOT IS_CAR_DEAD robber_quad[2] START_PLAYBACK_RECORDED_CAR_USING_AI robber_quad[2] 555 SKIP_IN_PLAYBACK_RECORDED_CAR robber_quad[2] 1.0 ADD_STUCK_CAR_CHECK robber_quad[2] 2.0 2000 ENDIF // setup catalina IF NOT IS_CHAR_DEAD catalina CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE group_dm EVENT_ACQUAINTANCE_PED_HATE SET_GROUP_DECISION_MAKER Players_Group group_dm SET_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 SET_CHAR_DECISION_MAKER catalina catalina_dm TASK_TOGGLE_PED_THREAT_SCANNER catalina 1 0 0 ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE group_dm EVENT_ACQUAINTANCE_PED_HATE TASK_GROUP_USE_MEMBER_DECISION 0.0 100.0 0.0 0.0 TRUE FALSE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE catalina_dm EVENT_ACQUAINTANCE_PED_HATE TASK_SIMPLE_GANG_DRIVEBY 0.0 100.0 0.0 0.0 TRUE FALSE SET_CHAR_ACCURACY catalina 35 SET_CHAR_SHOOT_RATE catalina 100 SET_CHAR_DROWNS_IN_WATER catalina FALSE ENDIF //PRINT_NOW CAT136 3000 1 // CAT: 'Get those guys' cat1_pickups_collected = 1 //DISPLAY_ONSCREEN_COUNTER_WITH_STRING cat1_pickups_collected COUNTER_DISPLAY_NUMBER CAT137 // reset robbers flags robber_flag[0] = 0 robber_flag[1] = 0 robber_flag[2] = 0 disable_group = 0 GENERATE_RANDOM_INT_IN_RANGE 1 3 temp_int IF temp_int = 0 $audio_string = &CAT1_BA audio_sound_file = SOUND_CAT1_BA START_NEW_SCRIPT audio_line scplayer 0 1 1 0 ENDIF IF temp_int = 1 $audio_string = &CAT1_BB audio_sound_file = SOUND_CAT1_BB START_NEW_SCRIPT audio_line scplayer 0 1 1 0 ENDIF IF temp_int = 2 $audio_string = &CAT1_BC audio_sound_file = SOUND_CAT1_BC START_NEW_SCRIPT audio_line scplayer 0 1 1 0 ENDIF SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 m_goals++ CHECKPOINT_SAVE 99 ENDIF // stage specific stuff IF m_goals = 1 // ensure the crazy edge case of catalina falling off and CJ staying on is covered .. GOSUB cat1_get_back_on_bike IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_UP master_speed += 0.1 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_DOWN master_speed += -0.1 IF master_speed < 0.0 master_Speed = 0.0 ENDIF ENDIF // show catalinas gun -------------------------------------------------------------- IF NOT IS_CHAR_DEAD catalina IF NOT IS_CAR_DEAD pcar IF IS_CHAR_IN_CAR catalina pcar IF show_gun = 0 SET_CURRENT_CHAR_WEAPON catalina WEAPONTYPE_MICRO_UZI show_gun = 1 ENDIF ELSE show_gun = 0 ENDIF ELSE show_gun = 0 ENDIF ENDIF // update chase ai ----------------------------------------------------------------- temp_int = 0 WHILE temp_int < 3 check_int = temp_int GOSUB cat1_adjust_playback_speed quad_playback_speed[temp_int] = playback_speed temp_int++ ENDWHILE // check if robber has finished chase --------------------------------------------- temp_int = 0 WHILE temp_int < 3 IF NOT IS_CHAR_DEAD robber[temp_int] IF robber_flag[temp_int] = 0 IF NOT IS_CAR_DEAD robber_quad[temp_int] IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[temp_int] robber_flag[temp_int]++ // give char some behaviour FLUSH_ROUTE EXTEND_ROUTE 2346.2715 -1044.4469 52.6699 EXTEND_ROUTE 2349.3369 -1043.6219 52.9884 EXTEND_ROUTE 2354.3530 -1041.7982 53.1360 EXTEND_ROUTE 2355.8435 -1039.7972 53.1562 EXTEND_ROUTE 2355.5593 -1038.5750 53.3358 OPEN_SEQUENCE_TASK temp_seq IF IS_CHAR_IN_CAR robber[temp_int] robber_quad[temp_int] TASK_LEAVE_CAR -1 robber_quad[temp_int] ENDIF TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK robber[temp_int] temp_seq CLEAR_SEQUENCE_TASK temp_seq SET_CHAR_ACCURACY robber[temp_int] 90 ENDIF ENDIF ENDIF IF robber_flag[temp_int] = 1 IF LOCATE_CHAR_ON_FOOT_3D robber[temp_int] 2355.5593 -1038.5750 53.3358 1.0 1.0 2.0 FALSE REMOVE_CHAR_ELEGANTLY robber[temp_int] robber_flag[temp_int] += 1 GOSUB CAT1_next_stage // you fail! ENDIF ENDIF ENDIF temp_int++ ENDWHILE // if robber falls off ------------------------------------------------------------- temp_int = 0 WHILE temp_int < 3 IF NOT IS_CHAR_DEAD robber[temp_int] IF robber_flag[temp_int] = 0 IF NOT IS_CHAR_IN_ANY_CAR robber[temp_int] GET_SCRIPT_TASK_STATUS robber[temp_int] PERFORM_SEQUENCE_TASK temp_int2 IF temp_int2 = FINISHED_TASK // if the car is still alive IF NOT IS_CAR_DEAD robber_quad[temp_int] OPEN_SEQUENCE_TASK temp_seq TASK_GOTO_CAR -1 robber_quad[temp_int] 60000 5.0 TASK_ENTER_CAR_AS_DRIVER -1 robber_quad[temp_int] 60000 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK robber[temp_int] temp_seq CLEAR_SEQUENCE_TASK temp_seq ELSE ENDIF ELSE // warp char onto car if off screen IF NOT IS_CAR_DEAD robber_quad[temp_int] IF NOT IS_CAR_ON_SCREEN robber_quad[temp_int] IF NOT IS_CHAR_ON_SCREEN robber[temp_int] IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer robber[temp_int] 20.0 20.0 5.0 FALSE GET_DRIVER_OF_CAR robber_quad[temp_int] temp_int2 IF temp_int2 = -1 CLEAR_CHAR_TASKS_IMMEDIATELY robber[temp_int] WARP_CHAR_INTO_CAR robber[temp_int] robber_quad[temp_int] ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF temp_int++ ENDWHILE IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F IF NOT IS_CHAR_DEAD robber[1] IF NOT IS_CAR_DEAD robber_quad[1] IF IS_CHAR_IN_CAR robber[1] robber_quad[1] TASK_LEAVE_CAR_IMMEDIATELY robber[1] robber_quad[1] ENDIF ENDIF ENDIF ENDIF // check player progress and adjust master speed ---------------------------------- IF LOCATE_CHAR_ANY_MEANS_2D scplayer 1397.2400 216.0877 50.0 50.0 FALSE IF NOT player_progress = 1 master_speed += -0.05 player_progress = 1 IF NOT IS_CHAR_DEAD catalina SET_CHAR_ACCURACY catalina 50 ENDIF ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2711.1191 -53.5082 50.0 50.0 FALSE IF NOT player_progress = 2 master_speed += 0.25 player_progress = 2 IF NOT IS_CHAR_DEAD catalina SET_CHAR_ACCURACY catalina 70 ENDIF ENDIF ENDIF // create suitcase pickup if char dies ------------------------------------------- temp_int = 0 WHILE temp_int < 3 IF IS_CHAR_DEAD robber[temp_int] IF robber_pickup_been_created[temp_int] = 0 IF robber_pickup[temp_int] = -1 REMOVE_BLIP robber_blip[temp_int] robber_blip[temp_int] = 0 GET_DEAD_CHAR_PICKUP_COORDS robber[temp_int] x y z CREATE_PICKUP BRIEFCASE PICKUP_ONCE x y z robber_pickup[temp_int] ADD_BLIP_FOR_COORD x y z briefcase_blip[temp_int] CHANGE_BLIP_COLOUR briefcase_blip[temp_int] GREEN briefcase_text_timer = 29000 robber_pickup_been_created[temp_int] = 1 MARK_CHAR_AS_NO_LONGER_NEEDED robber[temp_int] MARK_CAR_AS_NO_LONGER_NEEDED robber_quad[temp_int] ENDIF ENDIF ENDIF temp_int++ ENDWHILE // check if pickups have been picked up ------------------------------------------- temp_int = 0 WHILE temp_int < 3 IF DOES_PICKUP_EXIST robber_pickup[temp_int] //WRITE_DEBUG_WITH_INT pickup_exists temp_int IF briefcase_text_timer > 30000 PRINT_NOW CAT108 7000 1 // pick up briefcase briefcase_text_timer = 0 ENDIF GET_PICKUP_COORDINATES robber_pickup[temp_int] X Y Z IF LOCATE_CHAR_ANY_MEANS_3D scplayer x y z 1.0 1.0 2.0 FALSE REMOVE_BLIP briefcase_blip[temp_int] REMOVE_PICKUP robber_pickup[temp_int] robber_pickup[temp_int] = -1 CLEAR_PRINTS REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE //PLAY_MISSION_AUDIO 3 //WRITE_DEBUG pickup_collected1 cat1_pickups_collected++ ELSE IF HAS_PICKUP_BEEN_COLLECTED robber_pickup[temp_int] REMOVE_BLIP briefcase_blip[temp_int] REMOVE_PICKUP robber_pickup[temp_int] robber_pickup[temp_int] = -1 CLEAR_PRINTS REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE //PLAY_MISSION_AUDIO 3 //WRITE_DEBUG pickup_collected2 cat1_pickups_collected++ ENDIF ENDIF ENDIF temp_int++ ENDWHILE // if catalina is dead mission fail ----------------------------------------------- IF IS_CHAR_DEAD catalina PRINT_NOW LOSE2 5000 1 // catalina is history m_failed = 1 ENDIF // check if player has lost all the robbers --------------------------------------- temp_int = 0 IF NOT IS_CHAR_DEAD robber[0] IF quad_dist_from_player[0] < 300.0 OR IS_CHAR_ON_SCREEN robber[0] temp_int = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD robber[1] IF quad_dist_from_player[1] < 300.0 OR IS_CHAR_ON_SCREEN robber[1] temp_int = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD robber[2] IF quad_dist_from_player[2] < 300.0 OR IS_CHAR_ON_SCREEN robber[2] temp_int = 1 ENDIF ENDIF IF IS_CHAR_DEAD robber[0] AND IS_CHAR_DEAD robber[1] AND IS_CHAR_DEAD robber[2] temp_int = 1 ENDIF IF temp_int = 0 IF is_in_interior = 0 GOSUB CAT1_next_stage ENDIF //m_failed = 1 ENDIF GOSUB cat1_chase_dialogue // if player has collected all the money ------------------------------------------- IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_J cat1_pickups_collected = 4 ENDIF IF cat1_pickups_collected = 4 //m_passed = 1 //CLEAR_MISSION_AUDIO 3 GOSUB CAT1_next_stage GOSUB CAT1_next_stage //m_goals = 99 ENDIF ENDIF // // exit // IF m_goals = 99 // GOSUB CAT1_next_stage // ENDIF RETURN // ************************************************************************************************************* // STAGE 3 - Mission Fail - show catalina pissed off // ************************************************************************************************************* cat1_m_stage_3: LVAR_INT cat1_visible_area SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON GET_AREA_VISIBLE cat1_visible_area SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 IF NOT cat1_visible_area = 0 DO_FADE 250 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD catalina SET_AREA_VISIBLE 0 FREEZE_CHAR_POSITION scplayer TRUE GET_CHAR_COORDINATES catalina x y z SET_CHAR_PROOFS catalina TRUE TRUE TRUE TRUE TRUE LOAD_SCENE x y z DO_FADE 250 FADE_IN ENDIF ENDIF ////////// IF NOT IS_CHAR_DEAD catalina SET_CAMERA_IN_FRONT_OF_CHAR catalina TASK_WANDER_STANDARD catalina GET_CHAR_COORDINATES catalina x y z CLEAR_AREA x y 100.0 100.0 FALSE ENDIF ////////// GENERATE_RANDOM_INT_IN_RANGE 0 10 temp_int SWITCH temp_int CASE 0 $audio_string = &CATX_UA audio_sound_file = SOUND_CATX_UA START_NEW_SCRIPT audio_line catalina 0 1 1 0 BREAK CASE 1 $audio_string = &CATX_UB audio_sound_file = SOUND_CATX_UB START_NEW_SCRIPT audio_line catalina 0 1 1 0 BREAK CASE 2 $audio_string = &CATX_UC audio_sound_file = SOUND_CATX_UC START_NEW_SCRIPT audio_line catalina 0 1 1 0 BREAK CASE 3 $audio_string = &CATX_UD audio_sound_file = SOUND_CATX_UD START_NEW_SCRIPT audio_line catalina 0 1 1 0 BREAK CASE 4 $audio_string = &CATX_UE audio_sound_file = SOUND_CATX_UE START_NEW_SCRIPT audio_line catalina 0 1 1 0 BREAK CASE 5 $audio_string = &CATX_UF audio_sound_file = SOUND_CATX_UF START_NEW_SCRIPT audio_line catalina 0 1 1 0 BREAK CASE 6 $audio_string = &CATX_UG audio_sound_file = SOUND_CATX_UG START_NEW_SCRIPT audio_line catalina 0 1 1 0 BREAK CASE 7 $audio_string = &CATX_UH audio_sound_file = SOUND_CATX_UH START_NEW_SCRIPT audio_line catalina 0 1 1 0 BREAK CASE 8 $audio_string = &CATX_UJ audio_sound_file = SOUND_CATX_UJ START_NEW_SCRIPT audio_line catalina 0 1 1 0 BREAK CASE 9 $audio_string = &CATX_UK audio_sound_file = SOUND_CATX_UK START_NEW_SCRIPT audio_line catalina 0 1 1 0 BREAK ENDSWITCH WAIT 100 WHILE NOT audio_line_is_active = 0 WAIT 0 ENDWHILE WAIT 500 ///////// IF NOT cat1_visible_area = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE cat1_visible_area FREEZE_CHAR_POSITION scplayer FALSE GET_CHAR_COORDINATES scplayer x y z LOAD_SCENE x y z DO_FADE 250 FADE_IN ENDIF ///////// SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER DELETE_CHAR catalina PRINT_NOW LOSE 5000 1 // you lost the robbers! m_failed = 1 RETURN // ************************************************************************************************************* // STAGE 4 - Mission has passed take catalina back to hideout // ************************************************************************************************************* cat1_m_stage_4: // print mission failed message IF m_goals = 0 SET_CREATE_RANDOM_GANG_MEMBERS TRUE ADD_BLIP_FOR_COORD catX[0] catY[0] catZ[0] location_blip PRINT_NOW CAT112 7000 1 //~s~Take ~b~Catalina~s~ back to the ~y~hideout~s~. SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 //TIMERA = 6000 conversation_home = 0 cat1_take_home_dialogue = 0 m_goals++ ENDIF // wait for player to arrive at hideout IF m_goals = 1 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED //AND TIMERA > 7000 IF cat1_take_home_dialogue = 0 GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int IF temp_int = 0 $audio_string = &CAT1_FA audio_sound_file = SOUND_CAT1_FA START_NEW_SCRIPT audio_line catalina 0 0 1 0 ELSE $audio_string = &CAT1_FB audio_sound_file = SOUND_CAT1_FB START_NEW_SCRIPT audio_line catalina 0 0 1 0 ENDIF dialogue_flag = 0 conversation_home = 1 cat1_take_home_dialogue++ TIMERA = -5000 ENDIF ENDIF // WRITE_DEBUG_WITH_INT cat1_take_home_dialogue cat1_take_home_dialogue // WRITE_DEBUG_WITH_INT audio_line_is_active audio_line_is_active LVAR_INT conversation_home IF conversation_home = 1 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND TIMERA > 1000 IF NOT IS_CHAR_DEAD catalina IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer catalina 10.0 10.0 5.0 FALSE IF audio_line_is_active = 0 IF cat_getaway_dialogue = 0 SWITCH dialogue_flag CASE 0 IF cat_counter = 0 $audio_string = &CAT_DA audio_sound_file = SOUND_CAT_DA START_NEW_SCRIPT audio_line catalina 0 1 1 0 // I have a hideout on Fern Ridge. ENDIF BREAK CASE 1 IF cat_counter = 0 // figure out what to say next (north, west , east) IF NOT IS_CHAR_DEAD catalina GET_CHAR_COORDINATES catalina x y z ENDIF // what dist is biggest temp_float = catY[0] - y // north distance temp_float2 = catX[0] - x // east/west distance (+ve east, -ve west) // is north the biggest IF temp_float2 < 0.0 temp_float3 = -1.0 * temp_float2 ELSE temp_float3 = temp_float2 ENDIF IF temp_float > temp_float3 $audio_string = &CAT_DD audio_sound_file = SOUND_CAT_DD START_NEW_SCRIPT audio_line catalina 0 1 1 0 // it's north of here ELSE IF temp_float2 > 0.0 $audio_string = &CAT_DC audio_sound_file = SOUND_CAT_DC START_NEW_SCRIPT audio_line catalina 0 1 1 0 // it's east of here ELSE $audio_string = &CAT_DB audio_sound_file = SOUND_CAT_DB START_NEW_SCRIPT audio_line catalina 0 1 1 0 // it's west of here ENDIF ENDIF //CLEAR_MISSION_AUDIO 2 //LOAD_MISSION_AUDIO 2 SOUND_CAT_DE ENDIF BREAK CASE 2 IF cat_counter = 0 $audio_string = &CAT_DE audio_sound_file = SOUND_CAT_DE START_NEW_SCRIPT audio_line catalina 0 1 2 0 // now drive CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_DF ENDIF BREAK CASE 3 $audio_string = &CAT_DF audio_sound_file = SOUND_CAT_DF START_NEW_SCRIPT audio_line scplayer 0 1 1 0 // You’re fucking psycho! CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_DG BREAK CASE 4 $audio_string = &CAT_DG audio_sound_file = SOUND_CAT_DG START_NEW_SCRIPT audio_line catalina 0 1 2 1 // All you little men are scared of strong women! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_DH BREAK CASE 5 $audio_string = &CAT_DH audio_sound_file = SOUND_CAT_DH START_NEW_SCRIPT audio_line catalina 0 1 1 1 // If we’re passionate you say we crazy. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_DI BREAK CASE 6 $audio_string = &CAT_DI audio_sound_file = SOUND_CAT_DI START_NEW_SCRIPT audio_line catalina 0 1 2 1 // If we’re upset you say we hysterical. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_DJ BREAK CASE 8 $audio_string = &CAT_DJ audio_sound_file = SOUND_CAT_DJ START_NEW_SCRIPT audio_line catalina 0 1 1 1 // We sleep with men, we’re sluts. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_DK BREAK CASE 9 $audio_string = &CAT_DK audio_sound_file = SOUND_CAT_DK START_NEW_SCRIPT audio_line catalina 0 1 2 1 // If we don’t put out we’re frigid bitches. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_DL BREAK CASE 10 $audio_string = &CAT_DL audio_sound_file = SOUND_CAT_DL START_NEW_SCRIPT audio_line scplayer 0 1 1 1 // Who you calling little men? You went berserk back there! CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_DM BREAK CASE 11 $audio_string = &CAT_DM audio_sound_file = SOUND_CAT_DM START_NEW_SCRIPT audio_line catalina 0 1 2 1 // That? That was just another day at the office! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_DN BREAK CASE 12 $audio_string = &CAT_DN audio_sound_file = SOUND_CAT_DN START_NEW_SCRIPT audio_line catalina 0 1 1 1 // You can’t stand the heat, go put your tiny balls in the freezer! CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_DO BREAK CASE 13 $audio_string = &CAT_DO audio_sound_file = SOUND_CAT_DO START_NEW_SCRIPT audio_line scplayer 0 1 2 1 // Tiny balls? Now just wait a minute- CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_DP BREAK CASE 14 $audio_string = &CAT_DP audio_sound_file = SOUND_CAT_DP START_NEW_SCRIPT audio_line catalina 0 1 1 1 // Enough! Just shut up and drive, I’m counting the fucking money! BREAK CASE 15 conversation_home = 0 BREAK ENDSWITCH dialogue_flag++ TIMERA = 0 ENDIF IF cat_getaway_dialogue = 1 SWITCH dialogue_flag CASE 0 $audio_string = &CAT_GA audio_sound_file = SOUND_CAT_GA START_NEW_SCRIPT audio_line catalina 0 1 2 0 // Take me home, Carl. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_GB BREAK CASE 1 $audio_string = &CAT_GB audio_sound_file = SOUND_CAT_GB START_NEW_SCRIPT audio_line scplayer 0 1 1 1 // Okay. Look, but we gotta talk about something. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_GC BREAK CASE 2 $audio_string = &CAT_GC audio_sound_file = SOUND_CAT_GC START_NEW_SCRIPT audio_line catalina 0 1 2 1 // What? What do I have to say to you? CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_GD BREAK CASE 3 $audio_string = &CAT_GD audio_sound_file = SOUND_CAT_GD START_NEW_SCRIPT audio_line scplayer 0 1 1 1 // You’re a great girl, and all, but you gotta calm down. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_GE BREAK CASE 4 $audio_string = &CAT_GE audio_sound_file = SOUND_CAT_GE START_NEW_SCRIPT audio_line scplayer 0 1 2 1 // I know some cold blooded cats wouldn’t act like you. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_GF BREAK CASE 5 $audio_string = &CAT_GF audio_sound_file = SOUND_CAT_GF START_NEW_SCRIPT audio_line catalina 0 1 1 1 // Oh, you get given a lioness and you want a pussy cat? Wimp! CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_GG BREAK CASE 6 $audio_string = &CAT_GG audio_sound_file = SOUND_CAT_GG START_NEW_SCRIPT audio_line scplayer 0 1 2 1 // Nah, I just wanna easy life CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_GH BREAK CASE 7 $audio_string = &CAT_GH audio_sound_file = SOUND_CAT_GH START_NEW_SCRIPT audio_line catalina 0 1 1 1 // You know why I act like this. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_GI BREAK CASE 8 $audio_string = &CAT_GI audio_sound_file = SOUND_CAT_GI START_NEW_SCRIPT audio_line scplayer 0 1 2 1 // NO CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_GJ BREAK CASE 9 $audio_string = &CAT_GJ audio_sound_file = SOUND_CAT_GJ START_NEW_SCRIPT audio_line catalina 0 1 1 1 // I’m in love, Carl. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_GK BREAK CASE 10 $audio_string = &CAT_GK audio_sound_file = SOUND_CAT_GK START_NEW_SCRIPT audio_line catalina 0 1 2 1 // A woman’s heart is a tempestuous place, CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_GL BREAK CASE 11 $audio_string = &CAT_GL audio_sound_file = SOUND_CAT_GL START_NEW_SCRIPT audio_line catalina 0 1 1 1 // and you will break my heart. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_GM BREAK CASE 12 $audio_string = &CAT_GM audio_sound_file = SOUND_CAT_GM START_NEW_SCRIPT audio_line catalina 0 1 2 1 // Sometimes I want to kill us both! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_GN BREAK CASE 13 $audio_string = &CAT_GN audio_sound_file = SOUND_CAT_GN START_NEW_SCRIPT audio_line scplayer 0 1 1 1 // Please, don’t do that. Just relax a little.- BREAK CASE 14 conversation_home = 0 BREAK ENDSWITCH dialogue_flag++ TIMERA = 0 ENDIF // IF cat_getaway_dialogue = 2 // SWITCH dialogue_flag // CASE 0 // $audio_string = &CAT_LA // audio_sound_file = SOUND_CAT_LA // START_NEW_SCRIPT audio_line scplayer 0 1 2 0 // You a lunatic, bitch? // CLEAR_MISSION_AUDIO 1 // LOAD_MISSION_AUDIO 1 SOUND_CAT_LB // BREAK // CASE 1 // $audio_string = &CAT_LB // audio_sound_file = SOUND_CAT_LB // START_NEW_SCRIPT audio_line catalina 0 1 1 1 // Shut the fuck up. Home! Wimp! // BREAK // CASE 3 // conversation_home = 0 // BREAK // ENDSWITCH // dialogue_flag++ // TIMERA = 0 // ENDIF // IF cat_getaway_dialogue = 2 SWITCH dialogue_flag CASE 0 $audio_string = &CAT_OA audio_sound_file = SOUND_CAT_OA START_NEW_SCRIPT audio_line catalina 0 1 2 0 // Take me home now, big man. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_OB BREAK CASE 1 $audio_string = &CAT_OB audio_sound_file = SOUND_CAT_OB START_NEW_SCRIPT audio_line scplayer 0 1 1 1 // How we do? CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_OC BREAK CASE 2 $audio_string = &CAT_OC audio_sound_file = SOUND_CAT_OC START_NEW_SCRIPT audio_line catalina 0 1 2 1 // Is that all you care about? Money? CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_OD BREAK CASE 3 $audio_string = &CAT_OD audio_sound_file = SOUND_CAT_OD START_NEW_SCRIPT audio_line scplayer 0 1 1 1 // No, but I really need the paper--. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_OE BREAK CASE 4 $audio_string = &CAT_OE audio_sound_file = SOUND_CAT_OE START_NEW_SCRIPT audio_line catalina 0 1 2 1 // You revolt me. You make my skin crawl. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_OF BREAK CASE 5 $audio_string = &CAT_OF audio_sound_file = SOUND_CAT_OF START_NEW_SCRIPT audio_line scplayer 0 1 1 1 // Well I ain’t crazy about you, either! CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_OG BREAK CASE 6 $audio_string = &CAT_OG audio_sound_file = SOUND_CAT_OG START_NEW_SCRIPT audio_line catalina 0 1 2 1 // That’s just it. How little you know. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_OH BREAK CASE 7 $audio_string = &CAT_OH audio_sound_file = SOUND_CAT_OH START_NEW_SCRIPT audio_line catalina 0 1 1 1 // Don’t talk. Let us enjoy the peace and quiet. BREAK CASE 14 conversation_home = 0 BREAK ENDSWITCH dialogue_flag++ TIMERA = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF conversation_home = 0 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND TIMERA > 30000 GENERATE_RANDOM_INT_IN_RANGE 0 16 temp_int SWITCH temp_int CASE 0 $audio_string = &CATX_VA audio_sound_file = SOUND_CATX_VA BREAK CASE 1 $audio_string = &CATX_VB audio_sound_file = SOUND_CATX_VB BREAK CASE 2 $audio_string = &CATX_VC audio_sound_file = SOUND_CATX_VC BREAK CASE 3 $audio_string = &CATX_VD audio_sound_file = SOUND_CATX_VD BREAK CASE 4 $audio_string = &CATX_VE audio_sound_file = SOUND_CATX_VE BREAK CASE 5 $audio_string = &CATX_VF audio_sound_file = SOUND_CATX_VF BREAK CASE 6 $audio_string = &CATX_VG audio_sound_file = SOUND_CATX_VG BREAK CASE 7 $audio_string = &CATX_VH audio_sound_file = SOUND_CATX_VH BREAK CASE 8 $audio_string = &CATX_VJ audio_sound_file = SOUND_CATX_VJ BREAK CASE 9 $audio_string = &CATX_VK audio_sound_file = SOUND_CATX_VK BREAK CASE 10 IF NOT IS_CHAR_IN_ANY_CAR scplayer $audio_string = &CATX_VK audio_sound_file = SOUND_CATX_VK ELSE $audio_string = &CATX_VL audio_sound_file = SOUND_CATX_VL ENDIF BREAK CASE 11 $audio_string = &CATX_VM audio_sound_file = SOUND_CATX_VM BREAK CASE 12 $audio_string = &CATX_VN audio_sound_file = SOUND_CATX_VN BREAK CASE 13 $audio_string = &CATX_VO audio_sound_file = SOUND_CATX_VO BREAK CASE 14 IF NOT IS_CHAR_IN_ANY_CAR scplayer $audio_string = &CATX_VO audio_sound_file = SOUND_CATX_VO ELSE $audio_string = &CATX_VP audio_sound_file = SOUND_CATX_VP ENDIF BREAK CASE 15 $audio_string = &CATX_VQ audio_sound_file = SOUND_CATX_VQ BREAK ENDSWITCH START_NEW_SCRIPT audio_line catalina 0 0 1 0 TIMERA = 0 ENDIF ENDIF IF in_group = 1 IF NOT DOES_BLIP_EXIST location_blip m_goals = 0 ELSE IF LOCATE_CHAR_ANY_MEANS_3D scplayer catX[0] catY[0] catZ[0] 3.0 3.0 3.0 TRUE IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF IS_VEHICLE_ON_ALL_WHEELS car //TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 2000000 SET_PLAYER_CONTROL player1 OFF m_goals++ ENDIF ELSE m_goals++ ENDIF ENDIF ENDIF ELSE REMOVE_BLIP location_blip ENDIF ENDIF // wait for car to stop IF m_goals = 2 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF IS_CAR_STOPPED car m_goals++ ENDIF ELSE m_goals++ ENDIF ENDIF // small cut of catalina walking into cabin IF m_goals = 3 SET_PLAYER_CONTROL player1 FALSE SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 SWITCH_WIDESCREEN ON CLEAR_AREA catX[0] catY[0] catZ[0] 20.0 TRUE SET_FIXED_CAMERA_POSITION 856.0245 -29.9962 63.9179 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 856.9926 -29.7496 63.8739 JUMP_CUT IF NOT IS_CHAR_DEAD catalina IF NOT IS_CHAR_IN_ANY_CAR catalina IF NOT LOCATE_CHAR_ANY_MEANS_3D catalina catX[0] catY[0] catZ[0] 5.0 5.0 5.0 FALSE SET_CHAR_COORDINATES catalina 868.8380 -28.2257 62.1875 SET_CHAR_HEADING catalina 161.4460 ENDIF ENDIF OPEN_SEQUENCE_TASK temp_seq IF IS_CHAR_IN_ANY_CAR catalina STORE_CAR_CHAR_IS_IN_NO_SAVE catalina car TASK_LEAVE_CAR -1 car ENDIF TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_LOOK_AT_CHAR -1 scplayer 99999 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK catalina temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 10 temp_int TIMERA = 0 LVAR_INT last_cutscene last_cutscene = 0 dialogue_flag = 0 dont_give_catalina_end_bit = 0 m_goals++ ENDIF // do last bit of dialogue IF m_goals = 4 IF last_cutscene = 0 IF audio_line_is_active = 0 AND TIMERA > 1000 IF cat_counter = 0 SWITCH dialogue_flag CASE 0 $audio_string = &CAT_EA audio_sound_file = SOUND_CAT_EA START_NEW_SCRIPT audio_line catalina 0 1 2 0 // That was fun, homeboy. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_EB BREAK CASE 1 $audio_string = &CAT_EB audio_sound_file = SOUND_CAT_EB START_NEW_SCRIPT audio_line catalina 0 1 1 1 // You wanna play again tomorrow? CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_EC BREAK CASE 2 $audio_string = &CAT_EC audio_sound_file = SOUND_CAT_EC START_NEW_SCRIPT audio_line catalina 0 1 2 1 // Here. This is your cut. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_ED BREAK CASE 3 $audio_string = &CAT_ED audio_sound_file = SOUND_CAT_ED START_NEW_SCRIPT audio_line scplayer 0 1 1 1 // Lady, I gotta take it easy. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_EE BREAK CASE 4 $audio_string = &CAT_EE audio_sound_file = SOUND_CAT_EE START_NEW_SCRIPT audio_line scplayer 0 1 2 1 // Like you said, I got some other shit going on. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_EF BREAK CASE 5 $audio_string = &CAT_EF audio_sound_file = SOUND_CAT_EF START_NEW_SCRIPT audio_line catalina 0 1 1 1 // Whatever, baby. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_EG BREAK CASE 6 $audio_string = &CAT_EG audio_sound_file = SOUND_CAT_EG START_NEW_SCRIPT audio_line catalina 0 1 2 1 // If I play too rough, you do whatever makes you feel safe. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_EH BREAK CASE 7 $audio_string = &CAT_EH audio_sound_file = SOUND_CAT_EH START_NEW_SCRIPT audio_line catalina 0 1 1 1 // (maracon). See you around. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_EI BREAK CASE 8 $audio_string = &CAT_EI audio_sound_file = SOUND_CAT_EI START_NEW_SCRIPT audio_line scplayer 0 1 2 1 // Thanks and everything bitch, but you crazy. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_EJ BREAK CASE 9 $audio_string = &CAT_EJ audio_sound_file = SOUND_CAT_EJ START_NEW_SCRIPT audio_line scplayer 0 1 1 1 // If you was the last bitch on earth, CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_EK BREAK CASE 10 $audio_string = &CAT_EK audio_sound_file = SOUND_CAT_EK START_NEW_SCRIPT audio_line scplayer 0 1 2 1 // I’d start going out with an animal. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_EL BREAK CASE 11 $audio_string = &CAT_EL audio_sound_file = SOUND_CAT_EL START_NEW_SCRIPT audio_line scplayer 0 1 1 1 // You’re too fucking loco, senorita. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_EM // make catalina walk into cabin dont_give_catalina_end_bit = 1 IF NOT IS_CHAR_DEAD catalina CLEAR_LOOK_AT catalina OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 869.0271 -28.2591 62.1893 PEDMOVE_WALK 20000 TASK_GO_STRAIGHT_TO_COORD -1 870.2891 -25.0424 62.9858 PEDMOVE_WALK 5000 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK catalina temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF BREAK // --- voice over bit --- CASE 12 //WAIT 2000 // SET_CAMERA_IN_FRONT_OF_PLAYER // RESTORE_CAMERA_JUMPCUT // IF DOES_CHAR_EXIST catalina // DELETE_CHAR catalina // ENDIF dialogue_flag = 16 last_cutscene = 1 // $audio_string = &CAT_EM // audio_sound_file = SOUND_CAT_EM // START_NEW_SCRIPT audio_line -1 0 1 2 1 // Whatever else went down, // CLEAR_MISSION_AUDIO 1 // LOAD_MISSION_AUDIO 1 SOUND_CAT_EN BREAK CASE 13 // $audio_string = &CAT_EN // audio_sound_file = SOUND_CAT_EN // START_NEW_SCRIPT audio_line -1 0 1 1 1 // I knew I would do anything I could to avoid // CLEAR_MISSION_AUDIO 2 // LOAD_MISSION_AUDIO 2 SOUND_CAT_EO BREAK CASE 14 // $audio_string = &CAT_EO // audio_sound_file = SOUND_CAT_EO // START_NEW_SCRIPT audio_line scplayer 0 1 2 1 // hanging out with that crazy bitch. BREAK CASE 15 last_cutscene = 1 BREAK ENDSWITCH dialogue_flag++ TIMERA = 0 ENDIF IF cat_counter = 1 SWITCH dialogue_flag CASE 0 $audio_string = &CAT_HA audio_sound_file = SOUND_CAT_HA START_NEW_SCRIPT audio_line catalina 0 1 2 0 // See you soon, handsome. Next time, we play REALLY rough. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_HB BREAK CASE 1 $audio_string = &CAT_HB audio_sound_file = SOUND_CAT_HB START_NEW_SCRIPT audio_line scplayer 0 1 1 1 // Yeah, that's cool. But we can also play for some real money CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_HC BREAK CASE 2 $audio_string = &CAT_HC audio_sound_file = SOUND_CAT_HC START_NEW_SCRIPT audio_line scplayer 0 1 2 1 // I gotta get some money to… well CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_HD BREAK CASE 3 $audio_string = &CAT_HD audio_sound_file = SOUND_CAT_HD START_NEW_SCRIPT audio_line scplayer 0 1 1 1 // it’s a long story,but I need some serious paper, fast. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_HE BREAK CASE 4 $audio_string = &CAT_HE audio_sound_file = SOUND_CAT_HE START_NEW_SCRIPT audio_line catalina 0 1 2 1 // You come and see me again soon. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_HF BREAK CASE 5 $audio_string = &CAT_HF audio_sound_file = SOUND_CAT_HF START_NEW_SCRIPT audio_line catalina 0 1 1 1 // We rob a real bank. BREAK CASE 6 last_cutscene = 1 BREAK ENDSWITCH dialogue_flag++ TIMERA = 0 ENDIF IF cat_counter = 2 SWITCH dialogue_flag CASE 0 $audio_string = &CAT_MA audio_sound_file = SOUND_CAT_MA START_NEW_SCRIPT audio_line catalina 0 1 2 0 // Carl, you have much to learn about the female heart. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_MB BREAK CASE 1 $audio_string = &CAT_MB audio_sound_file = SOUND_CAT_MB START_NEW_SCRIPT audio_line catalina 0 1 1 1 // Come and see me again when you think you understand it. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_MC BREAK CASE 2 $audio_string = &CAT_MC audio_sound_file = SOUND_CAT_MC START_NEW_SCRIPT audio_line catalina 0 1 2 1 // Goodbye! BREAK CASE 3 last_cutscene = 1 BREAK ENDSWITCH dialogue_flag++ TIMERA = 0 ENDIF IF cat_counter = 3 SWITCH dialogue_flag CASE 0 $audio_string = &CAT_PA audio_sound_file = SOUND_CAT_PA START_NEW_SCRIPT audio_line catalina 0 1 2 0 // There you go. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_PB BREAK CASE 1 $audio_string = &CAT_PB audio_sound_file = SOUND_CAT_PB START_NEW_SCRIPT audio_line scplayer 0 1 1 1 // Thanks CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_PC BREAK CASE 2 $audio_string = &CAT_PC audio_sound_file = SOUND_CAT_PC START_NEW_SCRIPT audio_line scplayer 0 1 2 1 // One day, Carl Johnson, you will realise. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_PD BREAK CASE 3 $audio_string = &CAT_PD audio_sound_file = SOUND_CAT_PD START_NEW_SCRIPT audio_line catalina 0 1 1 1 // She, she truly loved me, and your heart will break in two. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_CAT_PE BREAK CASE 4 $audio_string = &CAT_PE audio_sound_file = SOUND_CAT_PE START_NEW_SCRIPT audio_line catalina 0 1 2 1 // But you are more like the spiney lizard than a man. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT_PF BREAK CASE 5 $audio_string = &CAT_PF audio_sound_file = SOUND_CAT_PF START_NEW_SCRIPT audio_line catalina 0 1 1 1 // Goodbye! BREAK CASE 6 last_cutscene = 1 BREAK ENDSWITCH dialogue_flag++ TIMERA = 0 ENDIF ENDIF ELSE IF NOT IS_CHAR_DEAD catalina LVAR_INT dont_give_catalina_end_bit IF dont_give_catalina_end_bit = 0 CLEAR_LOOK_AT catalina OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 869.0271 -28.2591 62.1893 PEDMOVE_WALK 20000 TASK_GO_STRAIGHT_TO_COORD -1 870.2891 -25.0424 62.9858 PEDMOVE_WALK 5000 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK catalina temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF m_goals++ ENDIF ENDIF // wait to finish IF m_goals = 5 IF NOT IS_CHAR_DEAD catalina GET_SCRIPT_TASK_STATUS catalina PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK temp_int = 1 ELSE temp_int = 0 ENDIF ENDIF IF TIMERA > 10000 temp_int = 1 ENDIF IF temp_int = 1 // DO_FADE 500 FADE_OUT // WHILE GET_FADING_STATUS // WAIT 0 // ENDWHILE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT IF DOES_CHAR_EXIST catalina DELETE_CHAR catalina ENDIF SET_PLAYER_CONTROL player1 TRUE SWITCH_WIDESCREEN OFF // DO_FADE 500 FADE_IN // WHILE GET_FADING_STATUS // WAIT 0 // ENDWHILE m_passed = 1 ENDIF ENDIF RETURN // ************************************************************************************************************* // GLOBAL FUNCTIONS - run continuously throughout lifetime of level // ************************************************************************************************************* cat1_global_functions: // if player goes into an interior pause the robbers ------ GET_AREA_VISIBLE temp_int IF NOT temp_int = 0 IF is_in_interior = 0 stored_master_speed = master_speed master_speed = 0.0 is_in_interior = 1 ENDIF ELSE IF is_in_interior = 1 master_speed = stored_master_speed is_in_interior = 0 ENDIF ENDIF // store players car ---------------------------------- IF IS_CHAR_IN_ANY_CAR scplayer IF NOT IS_CAR_DEAD pcar IF NOT IS_CHAR_IN_CAR scplayer pcar // check the last pcar is not a mission car before marking it as no longer needed temp_int = 0 temp_int2 = 0 WHILE temp_int < 4 IF pcar = robber_quad[temp_int] temp_int2 = 1 temp_int = 4 ENDIF temp_int++ ENDWHILE IF temp_int2 = 1 MARK_CAR_AS_NO_LONGER_NEEDED pcar ENDIF STORE_CAR_CHAR_IS_IN scplayer pcar ENDIF ELSE STORE_CAR_CHAR_IS_IN scplayer pcar ENDIF ELSE // pcar = 0 // will clear pcar (variable only) if player leaves ENDIF // check if catalina is separated from group ---------- IF NOT IS_CHAR_DEAD catalina IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND is_in_interior = 0 IF disable_group = 0 IF in_group = 1 IF NOT IS_GROUP_MEMBER catalina Players_Group PRINT LEFTC 4000 1 // you've left catalina! IF NOT DOES_BLIP_EXIST catalina_blip ADD_BLIP_FOR_CHAR catalina catalina_blip SET_BLIP_AS_FRIENDLY catalina_blip TRUE ENDIF left_cat_dialogue = 1 dialogue_timer = 0 in_group = 0 ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D catalina scplayer 10.0 10.0 10.0 FALSE IF NOT IS_GROUP_MEMBER catalina Players_Group IF DOES_BLIP_EXIST catalina_blip REMOVE_BLIP catalina_blip ENDIF MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_Group catalina SET_CHAR_DROWNS_IN_WATER catalina FALSE in_group = 1 left_cat_dialogue = 0 ELSE in_group = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD catalina IF NOT IS_CHAR_IN_ANY_CAR catalina IF NOT DOES_BLIP_EXIST catalina_blip ADD_BLIP_FOR_CHAR catalina catalina_blip SET_BLIP_AS_FRIENDLY catalina_blip TRUE ENDIF ELSE IF DOES_BLIP_EXIST catalina_blip STORE_CAR_CHAR_IS_IN_NO_SAVE catalina car IF IS_CHAR_IN_CAR scplayer car REMOVE_BLIP catalina_blip ENDIF ENDIF ENDIF ENDIF IF DOES_CHAR_EXIST catalina IF IS_CHAR_DEAD catalina PRINT_NOW LOSE2 5000 1 // catalina is history m_failed = 1 ENDIF ENDIF // check if catalina is damaged by player LVAR_INT hit_catalina_dialogue IF is_in_interior = 0 IF NOT IS_CHAR_DEAD catalina IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR catalina scplayer AND audio_line_is_active = 0 hit_catalina_dialogue++ IF hit_catalina_dialogue > 9 hit_catalina_dialogue = 0 ENDIF SWITCH hit_catalina_dialogue CASE 0 $audio_string = &CATX_UA audio_sound_file = SOUND_CATX_UA BREAK CASE 1 $audio_string = &CATX_UB audio_sound_file = SOUND_CATX_UB BREAK CASE 2 $audio_string = &CATX_UC audio_sound_file = SOUND_CATX_UC BREAK CASE 3 $audio_string = &CATX_UD audio_sound_file = SOUND_CATX_UD BREAK CASE 4 $audio_string = &CATX_UE audio_sound_file = SOUND_CATX_UE BREAK CASE 5 $audio_string = &CATX_UF audio_sound_file = SOUND_CATX_UF BREAK CASE 6 $audio_string = &CATX_UG audio_sound_file = SOUND_CATX_UG BREAK CASE 7 $audio_string = &CATX_UH audio_sound_file = SOUND_CATX_UH BREAK CASE 8 $audio_string = &CATX_UJ audio_sound_file = SOUND_CATX_UJ BREAK CASE 9 $audio_string = &CATX_UK audio_sound_file = SOUND_CATX_UK BREAK ENDSWITCH START_NEW_SCRIPT audio_line catalina 0 0 1 0 CLEAR_CHAR_LAST_DAMAGE_ENTITY catalina ENDIF ENDIF ENDIF // if player's car is on fire LVAR_INT catalina_car_on_fire_dialogue // IF IS_CHAR_IN_ANY_CAR scplayer // STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car // IF NOT IS_CHAR_DEAD catalina // IF IS_CHAR_IN_CAR catalina car // IF IS_CAR_ON_FIRE car // IF NOT IS_MESSAGE_BEING_DISPLAYED // AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED // AND audio_line_is_active = 0 // // catalina_car_on_fire_dialogue++ // IF catalina_car_on_fire_dialogue > 3 // catalina_car_on_fire_dialogue = 0 // ENDIF // // SWITCH catalina_car_on_fire_dialogue // CASE 0 // $audio_string = &CATX_GA // audio_sound_file = SOUND_CATX_GA // BREAK // CASE 1 // $audio_string = &CATX_GB // audio_sound_file = SOUND_CATX_GB // BREAK // CASE 2 // $audio_string = &CATX_GC // audio_sound_file = SOUND_CATX_GC // BREAK // CASE 3 // $audio_string = &CATX_GD // audio_sound_file = SOUND_CATX_GD // BREAK // ENDSWITCH // // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // if player goes over a unique stunt jump LVAR_INT catalina_stunt_jump_dialogue // IF catalina_stunt_jump_dialogue = 0 // IF IS_CHAR_IN_ANY_CAR scplayer // STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car // IF NOT IS_CHAR_DEAD catalina // IF IS_CHAR_IN_CAR catalina car // IF NOT HAS_STUNT_ENDED // // IF NOT IS_MESSAGE_BEING_DISPLAYED // AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED // AND audio_line_is_active = 0 // // GENERATE_RANDOM_INT_IN_RANGE 1 7 catalina_stunt_jump_dialogue // // SWITCH catalina_stunt_jump_dialogue // CASE 1 // $audio_string = &CATX_HA // audio_sound_file = SOUND_CATX_HA // BREAK // CASE 2 // $audio_string = &CATX_HB // audio_sound_file = SOUND_CATX_HB // BREAK // CASE 3 // $audio_string = &CATX_HC // audio_sound_file = SOUND_CATX_HC // BREAK // CASE 4 // $audio_string = &CATX_HD // audio_sound_file = SOUND_CATX_HD // BREAK // CASE 5 // $audio_string = &CATX_HD // audio_sound_file = SOUND_CATX_HE // BREAK // CASE 6 // $audio_string = &CATX_HD // audio_sound_file = SOUND_CATX_HF // BREAK // ENDSWITCH // // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // LVAR_INT player_is_in_water // IF IS_CHAR_IN_WATER scplayer // IF player_is_in_water = 0 // IF NOT IS_CHAR_DEAD catalina // TASK_STAND_STILL catalina 9999999 // ENDIF // player_is_in_water = 1 // ENDIF // ELSE // IF player_is_in_water = 1 // IF NOT IS_CHAR_DEAD catalina // TASK_STAND_STILL catalina 0 // ENDIF // player_is_in_water = 0 // ENDIF // ENDIF // IF cat1_pickups_collected = 4 // m_passed = 1 // ENDIF RETURN // ************************************************************************************************************* // MISSION SPECIFIC GOSUBS // ************************************************************************************************************* cat1_update_crane_cam_1: IF camera_in_position_pos = 0 camera_speed_pos += 0.001 IF camera_speed_pos > 0.03 camera_speed_pos = 0.03 ENDIF ELSE camera_speed_pos += -0.001 IF camera_speed_pos < 0.0 camera_speed_pos = 0.0 ENDIF ENDIF // IF camera_in_position_look = 0 camera_speed_look += 0.005 IF camera_speed_look > 0.1 camera_speed_look = 0.1 ENDIF // ELSE // camera_speed_look += -0.001 // IF camera_speed_look < 0.0 // camera_speed_look = 0.0 // ENDIF // ENDIF cat1_intrp_dest_x = 261.4119 cat1_intrp_dest_y = -78.5511 cat1_intrp_dest_z = 2.3102 cat1_intrp_start_x = cam_x cat1_intrp_start_y = cam_y cat1_intrp_start_z = cam_z cat1_intrp_speed = camera_speed_pos GOSUB cat1_interpolate_to_coord IF temp_float2 = 99.9 IF camera_in_position_pos = 0 camera_in_position_pos = 1 ENDIF ENDIF cam_x = cat1_intrp_start_x cam_y = cat1_intrp_start_y cam_z = cat1_intrp_start_z cat1_intrp_dest_x = dest_look_x cat1_intrp_dest_y = dest_look_y cat1_intrp_dest_z = dest_look_z cat1_intrp_start_x = look_x cat1_intrp_start_y = look_y cat1_intrp_start_z = look_z cat1_intrp_speed = camera_speed_look GOSUB cat1_interpolate_to_coord IF temp_float2 = 99.9 IF camera_in_position_look = 0 camera_in_position_look = 1 ENDIF ENDIF look_x = cat1_intrp_start_x look_y = cat1_intrp_start_y look_z = cat1_intrp_start_z IF debug_on = 1 x2 = look_x - 0.5 x3 = look_x + 0.5 y2 = look_y - 0.5 y3 = look_y + 0.5 z2 = look_z - 0.5 z3 = look_z + 0.5 LINE x2 look_y look_z x3 look_y look_z LINE look_x y2 look_z look_x y3 look_z LINE look_x look_y z2 look_x look_y z3 ENDIF RETURN LVAR_FLOAT cat1_intrp_dest_x cat1_intrp_dest_y cat1_intrp_dest_z LVAR_FLOAT cat1_intrp_start_x cat1_intrp_start_y cat1_intrp_start_z LVAR_FLOAT cat1_intrp_speed cat1_interpolate_to_coord: x = cat1_intrp_dest_x - cat1_intrp_start_x y = cat1_intrp_dest_y - cat1_intrp_start_y z = cat1_intrp_dest_z - cat1_intrp_start_z GET_DISTANCE_BETWEEN_COORDS_3D cat1_intrp_start_x cat1_intrp_start_y cat1_intrp_start_z cat1_intrp_dest_x cat1_intrp_dest_y cat1_intrp_dest_z temp_float temp_float2 = cat1_intrp_speed * 20.0 IF temp_float < temp_float2 temp_float2 = 99.9 ENDIF IF temp_float > cat1_intrp_speed x /= temp_float y /= temp_float z /= temp_float x *= cat1_intrp_speed y *= cat1_intrp_speed z *= cat1_intrp_speed cat1_intrp_start_x += x cat1_intrp_start_y += y cat1_intrp_start_z += z // ELSE // // cat1_intrp_start_x = cat1_intrp_dest_x // cat1_intrp_start_y = cat1_intrp_dest_y // cat1_intrp_start_z = cat1_intrp_dest_z // ELSE // // WRITE_DEBUG camera_in_position // WRITE_DEBUG_WITH_FLOAT temp_float temp_float // // camera_in_position = 1 ENDIF RETURN // ================================================================= // GOSUB: adjust_playback_speed - of robber's quads // ================================================================= // input parameters LVAR_INT check_int // workings LVAR_FLOAT debug_float LVAR_FLOAT playback_speed cat1_adjust_playback_speed: IF NOT IS_CAR_DEAD robber_quad[check_int] IF NOT IS_CHAR_DEAD robber[check_int] IF IS_CHAR_IN_CAR robber[check_int] robber_quad[check_int] IF playback_paused[check_int] = 1 IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[check_int] UNPAUSE_PLAYBACK_RECORDED_CAR robber_quad[check_int] playback_paused[check_int] = 0 ENDIF ENDIF playback_speed = 0.0 GET_CAR_COORDINATES robber_quad[check_int] x y z GET_CHAR_COORDINATES scplayer x2 y2 z2 // check if quad has reached the checkpoint (switching from travelling east to south) IF chase_flag[check_int] = 0 IF LOCATE_CAR_3D robber_quad[check_int] 2711.1191 -53.5082 39.4695 20.0 20.0 5.0 FALSE chase_flag[check_int] = 1 ENDIF ENDIF GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 quad_dist_from_player[check_int] IF chase_flag[check_int] = 0 IF x2 > x // ai car is behind, so speed up playback_speed = 1.5 // check if miles away IF quad_dist_from_player[check_int] > 100.0 IF NOT IS_CAR_ON_SCREEN robber_quad[check_int] IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[check_int] SKIP_IN_PLAYBACK_RECORDED_CAR robber_quad[check_int] 1.0 ENDIF ENDIF ENDIF ENDIF ELSE IF y2 < y // ai car is behind, so speed up playback_speed = 1.5 // check if miles away IF quad_dist_from_player[check_int] > 100.0 IF NOT IS_CAR_ON_SCREEN robber_quad[check_int] IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[check_int] SKIP_IN_PLAYBACK_RECORDED_CAR robber_quad[check_int] 1.0 ENDIF ENDIF ENDIF ENDIF ENDIF IF playback_speed = 0.0 // ai car is in front, so slow down IF quad_dist_from_player[check_int] < 30.0 playback_speed = 1.0 ELSE temp_float = quad_dist_from_player[check_int] IF temp_float > 200.0 temp_float = 200.0 ENDIF temp_float -= 30.0 temp_float /= 170.0 playback_speed = 1.0 - temp_float playback_speed *= 0.8 playback_speed += 0.2 ENDIF ENDIF // master slowdown / speed up playback_speed *= master_speed // speed up when approaching bridge IF IS_CAR_IN_AREA_2D robber_quad[check_int] 1940.8201 72.1365 2145.4385 140.5141 FALSE playback_speed = 2.5 ENDIF // set minimum speed IF playback_speed < 0.1 playback_speed = 0.1 ENDIF // apply the new speed IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[check_int] SET_PLAYBACK_SPEED robber_quad[check_int] playback_speed ENDIF // check if car is stuck IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[check_int] IF DOES_CAR_HAVE_STUCK_CAR_CHECK robber_quad[check_int] IF IS_CAR_STUCK robber_quad[check_int] IF NOT IS_CAR_ON_SCREEN robber_quad[check_int] IF NOT LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer robber_quad[check_int] 40.0 40.0 5.0 FALSE SKIP_IN_PLAYBACK_RECORDED_CAR robber_quad[check_int] 0.1 ENDIF ENDIF ENDIF ENDIF ENDIF ELSE // is char in car IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[check_int] IF playback_paused[check_int] = 0 PAUSE_PLAYBACK_RECORDED_CAR robber_quad[check_int] playback_paused[check_int] = 1 ENDIF ENDIF ENDIF ELSE // is char dead IF IS_PLAYBACK_GOING_ON_FOR_CAR robber_quad[check_int] STOP_PLAYBACK_RECORDED_CAR robber_quad[check_int] ENDIF quad_dist_from_player[check_int] = 0.0 ENDIF ENDIF // is car dead RETURN // ================================================================= // GOSUB: chase_dialogue (makes catalina say stuff during chase) // ================================================================= LVAR_INT cat_they_are_getting_away_dialogue cat1_chase_dialogue: IF dialogue_timer > 10000 // they're getting away! IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND is_in_interior = 0 IF NOT IS_CHAR_DEAD catalina IF NOT IS_CHAR_SHOOTING catalina IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF IS_CHAR_IN_CAR catalina car LVAR_INT last_cat_dialogue1 LVAR_INT this_cat_dialogue1 temp_int = 0 temp_int2 = 0 WHILE temp_int < 3 IF NOT IS_CHAR_DEAD robber[temp_int] temp_int2++ ENDIF temp_int++ ENDWHILE temp_int = 0 IF NOT IS_CHAR_DEAD robber[0] IF quad_dist_from_player[0] < 50.0 temp_int++ ENDIF ENDIF IF NOT IS_CHAR_DEAD robber[1] IF quad_dist_from_player[1] < 50.0 temp_int++ ENDIF ENDIF IF NOT IS_CHAR_DEAD robber[2] IF quad_dist_from_player[2] < 50.0 temp_int++ ENDIF ENDIF IF IS_CHAR_DEAD robber[0] AND IS_CHAR_DEAD robber[1] AND IS_CHAR_DEAD robber[2] temp_int++ ENDIF IF temp_int = 0 IF audio_line_is_active = 0 // GENERATE_RANDOM_INT_IN_RANGE 0 9 this_cat_dialogue1 // IF this_cat_dialogue1 = last_cat_dialogue1 // this_cat_dialogue1++ // IF this_cat_dialogue1 > 8 // this_cat_dialogue1 = 0 // ENDIF // ENDIF cat_they_are_getting_away_dialogue++ IF cat_they_are_getting_away_dialogue > 8 cat_they_are_getting_away_dialogue = 0 ENDIF // last_cat_dialogue1 = this_cat_dialogue1 SWITCH cat_they_are_getting_away_dialogue CASE 0 IF temp_int2 > 1 $audio_string = &CAT1_CA audio_sound_file = SOUND_CAT1_CA ELSE $audio_string = &CATX_AA audio_sound_file = SOUND_CATX_AA ENDIF START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 1 $audio_string = &CAT1_CB audio_sound_file = SOUND_CAT1_CB START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 2 $audio_string = &CAT1_CC audio_sound_file = SOUND_CAT1_CC START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 3 IF temp_int2 > 1 $audio_string = &CAT1_CD audio_sound_file = SOUND_CAT1_CD ELSE $audio_string = &CATX_AD audio_sound_file = SOUND_CATX_AD ENDIF START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 4 IF temp_int2 > 1 $audio_string = &CAT1_CE audio_sound_file = SOUND_CAT1_CE ELSE $audio_string = &CATX_AG audio_sound_file = SOUND_CATX_AG ENDIF START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 5 IF temp_int2 > 1 $audio_string = &CAT1_DA audio_sound_file = SOUND_CAT1_DA ELSE $audio_string = &CATX_AH audio_sound_file = SOUND_CATX_AH ENDIF START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 6 IF temp_int2 > 1 $audio_string = &CAT1_DB audio_sound_file = SOUND_CAT1_DB ELSE $audio_string = &CATX_AC audio_sound_file = SOUND_CATX_AC ENDIF START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 7 IF temp_int2 > 1 $audio_string = &CAT1_DC audio_sound_file = SOUND_CAT1_DC ELSE $audio_string = &CATX_AB audio_sound_file = SOUND_CATX_AB ENDIF START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 8 $audio_string = &CAT1_DD audio_sound_file = SOUND_CAT1_DD START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK ENDSWITCH dialogue_timer = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // don't leave me - player or catalina is on foot and more than 10m away IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND is_in_interior = 0 IF audio_line_is_active = 0 IF NOT IS_CHAR_DEAD catalina IF NOT IS_CHAR_SHOOTING catalina IF NOT IS_CHAR_IN_ANY_CAR scplayer OR NOT IS_CHAR_IN_ANY_CAR catalina IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D catalina scplayer 15.0 15.0 5.0 FALSE LVAR_INT last_cat_dialogue3 GENERATE_RANDOM_INT_IN_RANGE 0 8 temp_int IF temp_int = last_cat_dialogue3 temp_int++ IF temp_int > 7 temp_int = 0 ENDIF ENDIF last_cat_dialogue3 = temp_int SWITCH temp_int CASE 0 $audio_string = &CATX_JA audio_sound_file = SOUND_CATX_JA START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 1 $audio_string = &CATX_JB audio_sound_file = SOUND_CATX_JB START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 2 $audio_string = &CATX_JC audio_sound_file = SOUND_CATX_JC START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 3 $audio_string = &CATX_JD audio_sound_file = SOUND_CATX_JD START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 4 $audio_string = &CATX_JE audio_sound_file = SOUND_CATX_JE START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 5 $audio_string = &CATX_JF audio_sound_file = SOUND_CATX_JF START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 6 $audio_string = &CATX_JG audio_sound_file = SOUND_CATX_JG START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 7 $audio_string = &CATX_JH audio_sound_file = SOUND_CATX_JH START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK ENDSWITCH dialogue_timer = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // carl moans at catalina for shooting beside his ear-drum LVAR_INT this_cat_dialogue2 LVAR_INT last_cat_dialogue2 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND is_in_interior = 0 IF audio_line_is_active = 0 IF NOT IS_CHAR_DEAD catalina IF IS_CHAR_SHOOTING catalina IF LOCATE_CHAR_ANY_MEANS_CHAR_3D catalina scplayer 2.0 2.0 2.0 FALSE temp_int = 0 WHILE temp_int < 4 GENERATE_RANDOM_INT_IN_RANGE 0 25 this_cat_dialogue2 IF this_cat_dialogue2 < 5 temp_int = 4 ENDIF temp_int++ ENDWHILE IF this_cat_dialogue2 = last_cat_dialogue2 this_cat_dialogue2++ IF this_cat_dialogue2 > 24 this_cat_dialogue2 = 0 ENDIF ENDIF last_cat_dialogue2 = this_cat_dialogue2 SWITCH this_cat_dialogue2 CASE 0 CASE 1 $audio_string = &CAT1_HA audio_sound_file = SOUND_CAT1_HA START_NEW_SCRIPT audio_line scplayer 0 0 1 0 BREAK // CASE 1 // $audio_string = &CAT1_HB // audio_sound_file = SOUND_CAT1_HB // START_NEW_SCRIPT audio_line scplayer 0 0 1 0 // BREAK CASE 2 $audio_string = &CAT1_HC audio_sound_file = SOUND_CAT1_HC START_NEW_SCRIPT audio_line scplayer 0 0 1 0 BREAK CASE 3 $audio_string = &CAT1_HD audio_sound_file = SOUND_CAT1_HD START_NEW_SCRIPT audio_line scplayer 0 0 1 0 BREAK CASE 4 $audio_string = &CAT1_HE audio_sound_file = SOUND_CAT1_HE START_NEW_SCRIPT audio_line scplayer 0 0 1 0 BREAK CASE 5 $audio_string = &CATX_TA audio_sound_file = SOUND_CATX_TA START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 6 $audio_string = &CATX_TB audio_sound_file = SOUND_CATX_TB START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 7 $audio_string = &CATX_TC audio_sound_file = SOUND_CATX_TC START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 8 $audio_string = &CATX_TD audio_sound_file = SOUND_CATX_TD START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 9 $audio_string = &CATX_TE audio_sound_file = SOUND_CATX_TE START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 10 $audio_string = &CATX_TF audio_sound_file = SOUND_CATX_TF START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 11 $audio_string = &CATX_TG audio_sound_file = SOUND_CATX_TG START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 12 $audio_string = &CATX_TH audio_sound_file = SOUND_CATX_TH START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 13 $audio_string = &CATX_TJ audio_sound_file = SOUND_CATX_TJ START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 14 $audio_string = &CATX_TK audio_sound_file = SOUND_CATX_TK START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 15 $audio_string = &CATX_TL audio_sound_file = SOUND_CATX_TL START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 16 $audio_string = &CATX_TM audio_sound_file = SOUND_CATX_TM START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 17 $audio_string = &CATX_TN audio_sound_file = SOUND_CATX_TN START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 18 $audio_string = &CATX_TO audio_sound_file = SOUND_CATX_TO START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 19 $audio_string = &CATX_TP audio_sound_file = SOUND_CATX_TP START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 20 $audio_string = &CATX_TQ audio_sound_file = SOUND_CATX_TQ START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 21 $audio_string = &CATX_TR audio_sound_file = SOUND_CATX_TR START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 22 $audio_string = &CATX_TS audio_sound_file = SOUND_CATX_TS START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 23 $audio_string = &CATX_TT audio_sound_file = SOUND_CATX_TT START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 24 $audio_string = &CATX_TU audio_sound_file = SOUND_CATX_TU START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK ENDSWITCH dialogue_timer = 0 ENDIF ENDIF ENDIF ENDIF ENDIF // // cops dialogue // IF cat1_cops_dialogue = 0 // IF IS_COPS_IN_PURSUIT // IF audio_line_is_active = 0 // GENERATE_RANDOM_INT_IN_RANGE 0 4 temp_int // SWITCH temp_int // CASE 0 // $audio_string = &CAT1_EA // audio_sound_file = SOUND_CAT1_EA // START_NEW_SCRIPT audio_line scplayer 0 0 1 0 // BREAK // CASE 1 // $audio_string = &CAT1_EB // audio_sound_file = SOUND_CAT1_EB // START_NEW_SCRIPT audio_line scplayer 0 0 1 0 // BREAK // CASE 2 // $audio_string = &CAT1_EC // audio_sound_file = SOUND_CAT1_EC // START_NEW_SCRIPT audio_line scplayer 0 0 1 0 // BREAK // CASE 3 // $audio_string = &CAT1_ED // audio_sound_file = SOUND_CAT1_ED // START_NEW_SCRIPT audio_line scplayer 0 0 1 0 // BREAK // ENDSWITCH // cat1_cops_dialogue++ // ENDIF // ENDIF // ENDIF ENDIF // left catalina IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND is_in_interior = 0 IF left_cat_dialogue = 1 IF dialogue_timer > 4000 IF audio_line_is_active = 0 GENERATE_RANDOM_INT_IN_RANGE 0 4 temp_int SWITCH temp_int CASE 0 $audio_string = &CAT1_GA audio_sound_file = SOUND_CAT1_GA START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 1 $audio_string = &CAT1_GB audio_sound_file = SOUND_CAT1_GB START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 2 $audio_string = &CAT1_GC audio_sound_file = SOUND_CAT1_GC START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK CASE 3 $audio_string = &CAT1_GD audio_sound_file = SOUND_CAT1_GD START_NEW_SCRIPT audio_line catalina 0 0 1 0 BREAK ENDSWITCH left_cat_dialogue = 2 ENDIF ENDIF ENDIF ENDIF // // filler // IF audio_line_is_active = 0 // IF dialogue_timer > 10000 // // LVAR_INT last_filler_dialogue // // GENERATE_RANDOM_INT_IN_RANGE 0 20 temp_int // IF temp_int = last_filler_dialogue // temp_int++ // IF temp_int > 19 // temp_int = 0 // ENDIF // ENDIF // SWITCH temp_int // CASE 0 // $audio_string = &CATX_TA // audio_sound_file = SOUND_CATX_TA // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // CASE 1 // $audio_string = &CATX_TB // audio_sound_file = SOUND_CATX_TB // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // CASE 2 // $audio_string = &CATX_TC // audio_sound_file = SOUND_CATX_TC // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // CASE 3 // $audio_string = &CATX_TD // audio_sound_file = SOUND_CATX_TD // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // CASE 4 // $audio_string = &CATX_TE // audio_sound_file = SOUND_CATX_TE // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // CASE 5 // $audio_string = &CATX_TF // audio_sound_file = SOUND_CATX_TF // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // CASE 6 // $audio_string = &CATX_TG // audio_sound_file = SOUND_CATX_TG // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // CASE 7 // $audio_string = &CATX_TH // audio_sound_file = SOUND_CATX_TH // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // CASE 8 // $audio_string = &CATX_TJ // audio_sound_file = SOUND_CATX_TJ // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // CASE 9 // $audio_string = &CATX_TK // audio_sound_file = SOUND_CATX_TK // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // CASE 10 // $audio_string = &CATX_TL // audio_sound_file = SOUND_CATX_TL // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // CASE 11 // $audio_string = &CATX_TM // audio_sound_file = SOUND_CATX_TM // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // CASE 12 // $audio_string = &CATX_TN // audio_sound_file = SOUND_CATX_TN // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // CASE 13 // $audio_string = &CATX_TO // audio_sound_file = SOUND_CATX_TO // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // CASE 14 // $audio_string = &CATX_TP // audio_sound_file = SOUND_CATX_TP // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // CASE 15 // $audio_string = &CATX_TQ // audio_sound_file = SOUND_CATX_TQ // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // CASE 16 // $audio_string = &CATX_TR // audio_sound_file = SOUND_CATX_TR // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // CASE 17 // $audio_string = &CATX_TS // audio_sound_file = SOUND_CATX_TS // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // CASE 18 // $audio_string = &CATX_TT // audio_sound_file = SOUND_CATX_TT // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // CASE 19 // $audio_string = &CATX_TU // audio_sound_file = SOUND_CATX_TU // START_NEW_SCRIPT audio_line catalina 0 0 1 0 // BREAK // ENDSWITCH // dialogue_timer = 0 // ENDIF // ENDIF RETURN // ================================================================= // GOSUB: Next_Stage (sets flags and timers for next mission stage) // ================================================================= CAT1_next_stage: m_stage++ m_goals = 0 dialogue_flag = 0 help_flag = 0 dialogue_timer = 0 help_timer = 0 TIMERA = 0 TIMERB = 0 RETURN // ************************************************************************************************************* // END OF LEVEL GOSUBS - fail, pass, cleanup // ************************************************************************************************************* // FAIL mission_failed_CAT1: PRINT_BIG M_FAIL 5000 1 RETURN // PASS mission_passed_CAT1: flag_cat_mission1_passed = 1 PRINT_WITH_NUMBER_BIG ( M_PASS ) 1000 5000 1 //"Mission Passed!" ADD_SCORE player1 1000 PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL PLAYER1 REGISTER_MISSION_PASSED CAT_1 PLAYER_MADE_PROGRESS 1 // stuff for rothwell IF cat_otb_banter = 1 cat_otb_banter = 2 ENDIF IF cat_liquor_banter = 1 cat_liquor_banter = 2 ENDIF cat_getaway_dialogue++ SET_INT_STAT PASSED_CAT1 1 // stuff for filshie cat_counter++ RETURN // CLEANUP mission_cleanup_CAT1: SWITCH_WIDESCREEN OFF IF IS_PLAYER_PLAYING player1 SET_PLAYER_GROUP_RECRUITMENT player1 TRUE SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 FALSE ENDIF SET_CREATE_RANDOM_GANG_MEMBERS TRUE //CLEAR_ONSCREEN_COUNTER cat1_pickups_collected START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_MISSION_AUDIO 3 REMOVE_BLIP catalina_blip REMOVE_BLIP robber_blip[0] REMOVE_BLIP robber_blip[1] REMOVE_BLIP robber_blip[2] REMOVE_BLIP briefcase_blip[0] REMOVE_BLIP briefcase_blip[1] REMOVE_BLIP briefcase_blip[2] REMOVE_BLIP location_blip REMOVE_PICKUP robber_pickup[0] REMOVE_PICKUP robber_pickup[1] REMOVE_PICKUP robber_pickup[2] // remove decision makers REMOVE_DECISION_MAKER empty_dm REMOVE_DECISION_MAKER tough_dm REMOVE_DECISION_MAKER catalina_dm REMOVE_DECISION_MAKER group_dm UNLOAD_SPECIAL_CHARACTER 5 // === RESTORE ENVIRONMENT SETTINGS === SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } // IF cat_counter = 2 // SWITCH dialogue_flag // CASE 0 // $audio_string = &CAT_KA // audio_sound_file = SOUND_CAT_KA // START_NEW_SCRIPT audio_line catalina 0 1 2 0 // CATALINA [CAT_KA] How was it? // CLEAR_MISSION_AUDIO 1 // LOAD_MISSION_AUDIO 1 SOUND_CAT_KB // BREAK // CASE 1 // $audio_string = &CAT_KB // audio_sound_file = SOUND_CAT_KB // START_NEW_SCRIPT audio_line scplayer 0 1 1 1 // CARL [CAT_KB] Different… // CLEAR_MISSION_AUDIO 2 // LOAD_MISSION_AUDIO 2 SOUND_CAT_KC // BREAK // CASE 2 // $audio_string = &CAT_KC // audio_sound_file = SOUND_CAT_KC // START_NEW_SCRIPT audio_line catalina 0 1 2 1 // CATALINA [CAT_KC] I knew you would like it! // CLEAR_MISSION_AUDIO 1 // LOAD_MISSION_AUDIO 1 SOUND_CAT_KD // BREAK // CASE 3 // $audio_string = &CAT_KD // audio_sound_file = SOUND_CAT_KD // START_NEW_SCRIPT audio_line scplayer 0 1 1 1 // CARL [CAT_KD] Look, baby, I thought we was going to make some serious paper. // CLEAR_MISSION_AUDIO 2 // LOAD_MISSION_AUDIO 2 SOUND_CAT_KE // BREAK // CASE 4 // $audio_string = &CAT_KE // audio_sound_file = SOUND_CAT_KE // START_NEW_SCRIPT audio_line catalina 0 1 2 1 // CATALINA [CAT_KE] I’m starting to get really bored of you. // CLEAR_MISSION_AUDIO 1 // LOAD_MISSION_AUDIO 1 SOUND_CAT_KF // BREAK // CASE 5 // $audio_string = &CAT_KF // audio_sound_file = SOUND_CAT_KF // START_NEW_SCRIPT audio_line scplayer 0 1 1 1 // CARL [CAT_KF] I just need the money. // CLEAR_MISSION_AUDIO 2 // LOAD_MISSION_AUDIO 2 SOUND_CAT_KG // BREAK // CASE 6 // $audio_string = &CAT_KG // audio_sound_file = SOUND_CAT_KG // START_NEW_SCRIPT audio_line catalina 0 1 2 1 // CATALINA [CAT_KG] And I’m just a cheap fuck? // CLEAR_MISSION_AUDIO 1 // LOAD_MISSION_AUDIO 1 SOUND_CAT_KH // BREAK // CASE 7 // $audio_string = &CAT_KH // audio_sound_file = SOUND_CAT_KH // START_NEW_SCRIPT audio_line catalina 0 1 1 1 // [CAT_KH] A whore you don’t even pay? // CLEAR_MISSION_AUDIO 2 // LOAD_MISSION_AUDIO 2 SOUND_CAT_KI // BREAK // CASE 8 // $audio_string = &CAT_KI // audio_sound_file = SOUND_CAT_KI // START_NEW_SCRIPT audio_line scplayer 0 1 2 1 // CARL [CAT_KI] No, I didn’t say that. // CLEAR_MISSION_AUDIO 1 // LOAD_MISSION_AUDIO 1 SOUND_CAT_KJ // BREAK // CASE 9 // $audio_string = &CAT_KJ // audio_sound_file = SOUND_CAT_KJ // START_NEW_SCRIPT audio_line catalina 0 1 1 1 // CATALINA [CAT_KJ] Carl, I say I’m in love with you, and you act like I’m an idiot. // CLEAR_MISSION_AUDIO 2 // LOAD_MISSION_AUDIO 2 SOUND_CAT_KK // BREAK // CASE 10 // $audio_string = &CAT_KK // audio_sound_file = SOUND_CAT_KK // START_NEW_SCRIPT audio_line catalina 0 1 2 1 // [CAT_KK] I see the way you look at other women. // CLEAR_MISSION_AUDIO 1 // LOAD_MISSION_AUDIO 1 SOUND_CAT_KL // BREAK // CASE 11 // $audio_string = &CAT_KL // audio_sound_file = SOUND_CAT_KL // START_NEW_SCRIPT audio_line catalina 0 1 1 1 // [CAT_KL] I know your kind. Carl. I am serious. // CLEAR_MISSION_AUDIO 2 // LOAD_MISSION_AUDIO 2 SOUND_CAT_KM // BREAK // CASE 12 // $audio_string = &CAT_KM // audio_sound_file = SOUND_CAT_KM // START_NEW_SCRIPT audio_line catalina 0 1 2 1 // [CAT_KM] I will kill you if you ever mess around. // CLEAR_MISSION_AUDIO 1 // LOAD_MISSION_AUDIO 1 SOUND_CAT_KN // BREAK // CASE 13 // $audio_string = &CAT_KN // audio_sound_file = SOUND_CAT_KN // START_NEW_SCRIPT audio_line catalina 0 1 1 1 // [CAT_KN] I will castrate you first. // CLEAR_MISSION_AUDIO 2 // LOAD_MISSION_AUDIO 2 SOUND_CAT_KN // BREAK // CASE 14 // $audio_string = &CAT_KO // audio_sound_file = SOUND_CAT_KO // START_NEW_SCRIPT audio_line catalina 0 1 2 1 // [CAT_KO] Then I will make you eat them. // CLEAR_MISSION_AUDIO 1 // LOAD_MISSION_AUDIO 1 SOUND_CAT_KP // BREAK // CASE 15 // $audio_string = &CAT_KP // audio_sound_file = SOUND_CAT_KP // START_NEW_SCRIPT audio_line catalina 0 1 1 1 // CARL [CAT_KP] Enough! I need some fucking money! // CLEAR_MISSION_AUDIO 2 // LOAD_MISSION_AUDIO 2 SOUND_CAT_KQ // BREAK // CASE 16 // $audio_string = &CAT_KQ // audio_sound_file = SOUND_CAT_KQ // START_NEW_SCRIPT audio_line catalina 0 1 2 1 // CATALINA [CAT_KQ] Carl, you are really boring me now. // CLEAR_MISSION_AUDIO 1 // LOAD_MISSION_AUDIO 1 SOUND_CAT_KR // BREAK // CASE 17 // $audio_string = &CAT_KR // audio_sound_file = SOUND_CAT_KR // START_NEW_SCRIPT audio_line scplayer 0 1 1 1 // CARL [CAT_KR] Please, sweet hear. I’ve got some real, real deep shit. // BREAK // CASE 18 // conversation_home = 0 // BREAK // ENDSWITCH // dialogue_flag++ // TIMERA = 0 // ENDIF MISSION_START // ***************************************************************************************** // *** *** // *** Date: 19/08/2003 Time: 11:06:45 Name: Chris Rothwell *** // *** *** // *** Mission: cat2 *** // *** *** // *** Brief: Pishy bank job *** // *** *** // ***************************************************************************************** GOSUB mission_cat2_start IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_cat2_failed ENDIF GOSUB mission_cat2_cleanup MISSION_END // ************************************ MISSION START ************************************** { LVAR_INT ct2_door_destroyed print_god_text cat_comment cat_decisions mission_cat2_start: force_audio = 1 LOAD_GROUP_DECISION_MAKER DM_GROUP_MISSION_NORM cat_decisions CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_DAMAGE CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_VEHICLE_DAMAGE_WEAPON CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_GUN_AIMED_AT CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_VEHICLE_DAMAGE_COLLISION CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_SEEN_COP CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_ACQUAINTANCE_PED_HATE ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_ACQUAINTANCE_PED_HATE TASK_GROUP_DRIVEBY 0.0 100.0 0.0 0.0 TRUE FALSE LVAR_INT cat_own_dec LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY cat_own_dec //newline ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE cat_own_dec EVENT_ACQUAINTANCE_PED_HATE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 TRUE TRUE //newline //ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE cat_own_dec EVENT_DAMAGE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 TRUE TRUE //newline cat_comment = 32 flag_player_on_mission = 1 ALTER_WANTED_LEVEL Player1 0 IF flag_player_on_mission = 69 ADD_CONTINUOUS_SOUND 2320.0427 -8.5501 27.2047 SOUND_BANK_ALARM_LOOP bank_alarm CREATE_CHAR PEDTYPE_SPECIAL SPECIAL05 682.8292 -477.8332 15.3359 c2_alley_cop[0] ENDIF //REGISTER_MISSION_GIVEN SCRIPT_NAME cat2 DO_FADE 800 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 IF DOES_CHAR_EXIST catalina DELETE_CHAR catalina ENDIF LOAD_SPECIAL_CHARACTER 5 cat while NOT HAS_SPECIAL_CHARACTER_LOADED 5 wait 0 //LOAD_SPECIAL_CHARACTER 5 cat endwhile CREATE_CHAR PEDTYPE_SPECIAL SPECIAL05 682.8292 -477.8332 15.3359 catalina UNLOAD_SPECIAL_CHARACTER 5 SET_ANIM_GROUP_FOR_CHAR catalina WOMAN //DONT_REMOVE_CHAR catalina SET_CHAR_ONLY_DAMAGED_BY_PLAYER catalina TRUE SET_CHAR_NEVER_TARGETTED catalina TRUE SET_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_PLAYER1 SET_CHAR_HEALTH catalina 100 SET_CHAR_SUFFERS_CRITICAL_HITS catalina FALSE CLEAR_AREA 2297.7864 -16.8313 26.2964 20.0 TRUE IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR catalina LVAR_INT temp_car STORE_CAR_CHAR_IS_IN_NO_SAVE catalina temp_car IF IS_CHAR_IN_CAR scplayer temp_car SET_CAR_COORDINATES temp_car 2297.9861 -14.0735 25.3495 SET_CAR_HEADING temp_car 180.0 ELSE IF IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_COORDINATES scplayer 2297.7864 -15.5166 26.2964 SET_CHAR_HEADING scplayer 180.0 ENDIF ENDIF ELSE IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer temp_car IF IS_CHAR_IN_CAR scplayer temp_car SET_CAR_COORDINATES temp_car 2297.9861 -14.0735 25.3495 SET_CAR_HEADING temp_car 180.0 ENDIF SET_CHAR_COORDINATES scplayer 2297.7864 -15.5166 26.2964 SET_CHAR_HEADING scplayer 180.0 ENDIF ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2297.7864 -15.5166 26.2964 ELSE SET_CHAR_COORDINATES scplayer 2297.7864 -15.5166 26.2964 ENDIF SET_CHAR_HEADING scplayer 162.2290 REQUEST_MODEL CSHER REQUEST_MODEL COLT45 REQUEST_MODEL CHROMEGUN REQUEST_CAR_RECORDING 123 REQUEST_CAR_RECORDING 124 REQUEST_MODEL KMB_ATM1 REQUEST_MODEL KMB_ATM2 REQUEST_MODEL KMB_ATM3 REQUEST_MODEL MTSAFE REQUEST_MODEL CR_DOOR_01 REQUEST_MODEL CR_DOOR_03 WHILE NOT HAS_MODEL_LOADED CSHER OR NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED CHROMEGUN OR NOT HAS_MODEL_LOADED KMB_ATM1 OR NOT HAS_MODEL_LOADED KMB_ATM2 OR NOT HAS_MODEL_LOADED KMB_ATM3 WAIT 0 ENDWHILE WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 124 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 123 OR NOT HAS_MODEL_LOADED MTSAFE OR NOT HAS_MODEL_LOADED CR_DOOR_01 OR NOT HAS_MODEL_LOADED CR_DOOR_03 WAIT 0 ENDWHILE LVAR_INT mission_blip mission_flag mission_timer sequence_task temp_int a LVAR_FLOAT h x2 y2 z2 x3 y3 z3 speed temp_float LVAR_INT ct2_objects_created //VIEW_INTEGER_VARIABLE debug_var debug_var LOAD_MISSION_TEXT cat //REQUEST_MODEL PCJ600 REQUEST_MODEL WMYSGRD REQUEST_MODEL SWMYRI REQUEST_MODEL WFYSTEW REQUEST_ANIMATION ROB_BANK LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED WMYSGRD OR NOT HAS_MODEL_LOADED SWMYRI OR NOT HAS_MODEL_LOADED WFYSTEW WAIT 0 ENDWHILE WHILE NOT HAS_ANIMATION_LOADED ROB_BANK WAIT 0 ENDWHILE WHILE NOT IS_PLAYER_PLAYING player1 WAIT 0 ENDWHILE LOAD_MISSION_AUDIO 3 SOUND_BANK_CAT2_BANK LVAR_INT catalina_flag catalina_flag = 0 LVAR_FLOAT security1_scared worker1_scared worker2_scared worker3_scared security1_scared = 85.0 worker1_scared = 100.0 worker2_scared = 90.0 worker3_scared = 95.0 // //LVAR_INT goto_bankroof_from_pizzashop //OPEN_SEQUENCE_TASK goto_bankroof_from_pizzashop // TASK_GO_STRAIGHT_TO_COORD -1 2324.6196 -3.2737 30.1564 PEDMOVE_WALK -2 // TASK_ACHIEVE_HEADING -1 184.3031 // TASK_JUMP -1 TRUE // TASK_GO_STRAIGHT_TO_COORD -1 2322.5469 -9.3704 28.9834 PEDMOVE_WALK -2 // TASK_ACHIEVE_HEADING -1 94.6195 // TASK_CLIMB -1 TRUE // TASK_GO_STRAIGHT_TO_COORD -1 2315.1860 -9.9396 31.5313 PEDMOVE_WALK -2 // TASK_GO_STRAIGHT_TO_COORD -1 2315.5491 -2.1481 31.5313 PEDMOVE_WALK -2 //CLOSE_SEQUENCE_TASK goto_bankroof_from_pizzashop // //LVAR_INT goto_lazershop_from_bankroof //OPEN_SEQUENCE_TASK goto_lazershop_from_bankroof // TASK_GO_STRAIGHT_TO_COORD -1 2311.3611 0.2392 31.5313 PEDMOVE_WALK -2 // TASK_ACHIEVE_HEADING -1 0.0 // TASK_JUMP -1 TRUE // TASK_GO_STRAIGHT_TO_COORD -1 2311.4788 3.4769 32.1951 PEDMOVE_WALK -2 // TASK_ACHIEVE_HEADING -1 0.0 // TASK_JUMP -1 TRUE // TASK_GO_STRAIGHT_TO_COORD -1 2309.7012 11.3982 28.9834 PEDMOVE_WALK -2 // TASK_GO_STRAIGHT_TO_COORD -1 2309.7012 14.2735 28.9834 PEDMOVE_WALK -2 //CLOSE_SEQUENCE_TASK goto_lazershop_from_bankroof // //LVAR_INT goto_drycleaner_from_lazershop //OPEN_SEQUENCE_TASK goto_drycleaner_from_lazershop // TASK_GO_STRAIGHT_TO_COORD -1 2309.5288 17.3576 28.9834 PEDMOVE_WALK -2 // TASK_GO_STRAIGHT_TO_COORD -1 2312.1909 19.8714 28.5834 PEDMOVE_WALK -2 // TASK_ACHIEVE_HEADING -1 9.0 // TASK_JUMP -1 TRUE // TASK_GO_STRAIGHT_TO_COORD -1 2311.8774 27.2978 28.4834 PEDMOVE_WALK -2 // TASK_ACHIEVE_HEADING -1 0.0 // TASK_CLIMB -1 TRUE // TASK_GO_STRAIGHT_TO_COORD -1 2311.8621 30.3306 29.8072 PEDMOVE_WALK -2 //CLOSE_SEQUENCE_TASK goto_drycleaner_from_lazershop // //LVAR_INT goto_furnitureshop_from_drycleaner //OPEN_SEQUENCE_TASK goto_furnitureshop_from_drycleaner // TASK_GO_STRAIGHT_TO_COORD -1 2311.7368 31.1751 29.8072 PEDMOVE_WALK -2 // TASK_ACHIEVE_HEADING -1 0.0 // TASK_JUMP -1 TRUE // TASK_GO_STRAIGHT_TO_COORD -1 2311.5356 41.0045 30.3072 PEDMOVE_WALK -2 // TASK_ACHIEVE_HEADING -1 10.0 // TASK_JUMP -1 TRUE // TASK_GO_STRAIGHT_TO_COORD -1 2309.7646 49.7877 29.4834 PEDMOVE_WALK -2 //CLOSE_SEQUENCE_TASK goto_furnitureshop_from_drycleaner // //LVAR_INT goto_recordshop_from_furnitureshop //OPEN_SEQUENCE_TASK goto_recordshop_from_furnitureshop // TASK_GO_STRAIGHT_TO_COORD -1 2311.1519 68.0 29.4834 PEDMOVE_WALK -2 // TASK_ACHIEVE_HEADING -1 0.0 // TASK_JUMP -1 TRUE // TASK_GO_STRAIGHT_TO_COORD -1 2313.4077 75.1751 28.6413 PEDMOVE_WALK -2 //CLOSE_SEQUENCE_TASK goto_recordshop_from_furnitureshop // //LVAR_INT goto_furnitureshop_from_recordshop //OPEN_SEQUENCE_TASK goto_furnitureshop_from_recordshop // TASK_SCRATCH_HEAD -1 // TASK_GO_STRAIGHT_TO_COORD -1 2315.8765 69.0288 25.4762 PEDMOVE_WALK -2//DROP OFF THE ROOF, CATALINA CANT MAKE THE JUMP //CLOSE_SEQUENCE_TASK goto_furnitureshop_from_recordshop // //LVAR_INT goto_drycleaner_from_furnitureshop //OPEN_SEQUENCE_TASK goto_drycleaner_from_furnitureshop // TASK_GO_STRAIGHT_TO_COORD -1 2309.8958 44.6904 29.4834 PEDMOVE_WALK -2 // TASK_ACHIEVE_HEADING -1 174.6394 // TASK_JUMP -1 TRUE // TASK_GO_STRAIGHT_TO_COORD -1 2309.9290 30.3306 29.8072 PEDMOVE_WALK -2 // TASK_GO_STRAIGHT_TO_COORD -1 2311.8621 30.3306 29.8072 PEDMOVE_WALK -2 //CLOSE_SEQUENCE_TASK goto_drycleaner_from_furnitureshop // //LVAR_INT goto_lasershop_from_drycleaner //OPEN_SEQUENCE_TASK goto_lasershop_from_drycleaner // TASK_GO_STRAIGHT_TO_COORD -1 2311.2166 18.7016 28.5834 PEDMOVE_WALK -2 // TASK_ACHIEVE_HEADING -1 90.0 // TASK_JUMP -1 TRUE // TASK_GO_STRAIGHT_TO_COORD -1 2309.7012 14.2735 28.9834 PEDMOVE_WALK -2 //CLOSE_SEQUENCE_TASK goto_lasershop_from_drycleaner // //LVAR_INT goto_bankroof_from_lasershop //OPEN_SEQUENCE_TASK goto_bankroof_from_lasershop // TASK_GO_STRAIGHT_TO_COORD -1 2309.4966 10.8862 28.9834 PEDMOVE_WALK -2 // TASK_GO_STRAIGHT_TO_COORD -1 2313.0020 8.2174 28.5834 PEDMOVE_WALK -2 // TASK_ACHIEVE_HEADING -1 180.0000 // TASK_CLIMB -1 TRUE // TASK_GO_STRAIGHT_TO_COORD -1 2313.0051 2.4411 30.2345 PEDMOVE_WALK -2 // TASK_ACHIEVE_HEADING -1 180.0000 // TASK_CLIMB -1 TRUE // TASK_GO_STRAIGHT_TO_COORD -1 2315.5012 -2.4998 31.5313 PEDMOVE_WALK -2 //CLOSE_SEQUENCE_TASK goto_bankroof_from_lasershop // //LVAR_INT goto_pizzashop_from_bankroof //OPEN_SEQUENCE_TASK goto_pizzashop_from_bankroof // TASK_FOLLOW_PATH_NODES_TO_COORD -1 2321.6851 -2.2579 32.2969 PEDMOVE_WALK -2 // TASK_ACHIEVE_HEADING -1 270.0 // TASK_CLIMB -1 TRUE //CLOSE_SEQUENCE_TASK goto_pizzashop_from_bankroof // //LVAR_INT routefind_to_bankroof //OPEN_SEQUENCE_TASK routefind_to_bankroof // TASK_SCRATCH_HEAD -1 // TASK_FOLLOW_PATH_NODES_TO_COORD -1 2315.5491 -2.1481 31.5313 PEDMOVE_WALK -2 // //TASK_GO_STRAIGHT_TO_COORD -1 2315.5491 -2.1481 31.5313 PEDMOVE_WALK 1000 //CLOSE_SEQUENCE_TASK routefind_to_bankroof LVAR_INT shoot_at_cops OPEN_SEQUENCE_TASK shoot_at_cops TASK_SCRATCH_HEAD -1 TASK_SCRATCH_HEAD -1 CLOSE_SEQUENCE_TASK shoot_at_cops //IF mission_flag = 28 // IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2317.4285 2.9314 26.7164 3.0 2.0 1.2 0//OUTSIDE BANKS BACK DOOR LOCATE // IF NOT IS_CHAR_DEAD alley_cop1 // IF NOT IS_CHAR_DEAD alley_cop2 // //IF mission_flag = 29 // IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2318.7502 15.8125 31.3712 15.0 11.2 5.8 0//MIDDLE AREA 2 & 3 // IF NOT IS_CHAR_DEAD alley_cop3 // IF NOT IS_CHAR_DEAD alley_cop4 // IF NOT IS_CHAR_DEAD alley_cop5 // IF NOT IS_CHAR_DEAD alley_cop6 // //IF mission_flag = 30 // IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2318.7502 54.3324 31.3712 15.0 11.2 5.8 0//BIKE END OF ALLEY AREA 4 // IF NOT IS_CHAR_DEAD alley_cop7 // IF NOT IS_CHAR_DEAD alley_cop8 LVAR_INT bank_peds_decision_maker COPY_CHAR_DECISION_MAKER -1 bank_peds_decision_maker CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE bank_peds_decision_maker EVENT_GUN_AIMED_AT LVAR_INT worker1 worker2 worker3 security1 granny CREATE_CHAR PEDTYPE_CIVFEMALE WFYSTEW 2318.4919 -15.5635 25.6913 worker1//BEHIND COUNTER TO RIGHT SET_CHAR_HEADING worker1 95.2069 SET_CHAR_DECISION_MAKER worker1 bank_peds_decision_maker CREATE_CHAR PEDTYPE_CIVFEMALE WFYSTEW 2318.4727 -7.4565 25.6913 worker2//BEHIND COUNTER TO LEFT MARK_MODEL_AS_NO_LONGER_NEEDED WFYSTEW SET_CHAR_HEADING worker2 95.2069 SET_CHAR_DECISION_MAKER worker2 bank_peds_decision_maker CREATE_CHAR PEDTYPE_CIVMALE SWMYRI 2311.5093 -11.1779 25.6987 worker3//BEHIND RECEPTION DESK SET_CHAR_HEADING worker3 176.6813 SET_CHAR_DECISION_MAKER worker3 bank_peds_decision_maker CREATE_CHAR PEDTYPE_CIVMALE WMYSGRD 2316.618 -12.83 25.75 security1//SECURITY GUARD BACK WALL MARK_MODEL_AS_NO_LONGER_NEEDED WMYSGRD SET_CHAR_HEADING security1 90.0 SET_CHAR_DECISION_MAKER security1 bank_peds_decision_maker GIVE_WEAPON_TO_CHAR security1 WEAPONTYPE_PISTOL 9999 //CREATE_CHAR PEDTYPE_CIVFEMALE OFOST 2316.7742 -7.4783 25.6913 granny//GRANNY BEING SERVED AT LEFT HAND COUNTER //SET_CHAR_HEADING granny 272.6767 SET_PLAYER_CONTROL player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON //SET_ALL_CARS_CAN_BE_DAMAGED FALSE SET_FIXED_CAMERA_POSITION 2299.8948 -7.9983 26.6055 0.0 0.0 0.0//OUTSIDE BANK POINT_CAMERA_AT_POINT 2299.9976 -8.9930 26.6023 JUMP_CUT mission_timer = game_timer + 3000 CREATE_OBJECT_NO_OFFSET KMB_ATM2 2310.3669 -17.0 20.414 broken_atm[0] //BROKEN ATM MODEL HERE CREATE_OBJECT_NO_OFFSET KMB_ATM2 2313.6890 -17.0 20.414 broken_atm[1] //BROKEN ATM MODEL HERE CREATE_OBJECT_NO_OFFSET KMB_ATM2 2313.3184 -0.1206 20.414 broken_atm[2] //BROKEN ATM MODEL HERE // //SET_OBJECT_VISIBLE broken_atm[0] FALSE //SET_OBJECT_VISIBLE broken_atm[1] FALSE //SET_OBJECT_VISIBLE broken_atm[2] FALSE IF NOT IS_CHAR_DEAD catalina REMOVE_CHAR_FROM_GROUP catalina IF IS_CHAR_IN_ANY_CAR catalina WARP_CHAR_FROM_CAR_TO_COORD catalina 2300.7429 -15.5274 25.4844 ELSE SET_CHAR_COORDINATES catalina 2301.7429 -17.1274 25.4844 ENDIF GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_SHOTGUN cat2_ReturnedAmmo IF cat2_ReturnedAmmo = 0 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_SHOTGUN 48 ELSE IF cat2_ReturnedAmmo < 48 SET_CHAR_AMMO scplayer WEAPONTYPE_SHOTGUN 48 ENDIF ENDIF SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_SHOTGUN GIVE_WEAPON_TO_CHAR catalina WEAPONTYPE_SHOTGUN 9999 SET_CHAR_HEADING catalina 329.4303 TASK_GO_STRAIGHT_TO_COORD scplayer 2307.8022 -17.2210 25.7574 PEDMOVE_WALK 10000 TASK_GO_STRAIGHT_TO_COORD catalina 2312.4260 -15.4762 25.7500 PEDMOVE_WALK 10000 ENDIF DO_FADE 500 FADE_IN DELETE_OBJECT pc_door[2] DELETE_OBJECT pc_door[3] //PRINT_NOW CAT2_01 3500 1 //When we're inside I'll get the cash, your on crowd control. Don't kill anyone. play_audio = 1 //DO_FADE 500 FADE_IN GET_GAME_TIMER game_timer mission_timer = game_timer + 3500 mission_flag = 1 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 //GET_GAME_TIMER game_timer //timer = game_timer + 5000 //WHILE timer > game_timer // WAIT 0 // GET_GAME_TIMER game_timer //ENDWHILE LVAR_INT skip_buttons_pressed skip_buttons_pressed = -1 //VIEW_INTEGER_VARIABLE mission_flag mission_flag //VIEW_INTEGER_VARIABLE catalina_flag catalina_flag SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 // ************************************* MISSION LOOP ************************************** mission_cat2_loop: //VAR_INT checky checkx check1 check2 //checky = play_audio //checkx = audio_flag //check1 = mission_flag //check2 = catalina_flag // //VIEW_INTEGER_VARIABLE checky play_audio //VIEW_INTEGER_VARIABLE checkx audio_flag //VIEW_INTEGER_VARIABLE check1 mission_flag //VIEW_INTEGER_VARIABLE check2 catalina_flag IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_cat2_passed ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_W cat_counter = 2 catalina_flag = 9 ct2_door_destroyed = 1 mission_flag = 462 SET_CHAR_COORDINATES scplayer 857.4263 -29.5418 62.1858 IF NOT IS_CHAR_DEAD catalina SET_CHAR_COORDINATES catalina 858.4263 -29.5418 62.1858 ENDIF REQUEST_MODEL BUFFALO WHILE NOT HAS_MODEL_LOADED BUFFALO WAIT 0 ENDWHILE LVAR_INT debugy_Car CREATE_CAR BUFFALO 857.4263 -29.5418 62.1858 debugy_Car WARP_CHAR_INTO_CAR scplayer debugy_Car IF NOT IS_CHAR_DEAD catalina WARP_CHAR_INTO_CAR_AS_PASSENGER catalina debugy_Car 0 ENDIF ENDIF WAIT 0 IF IS_CHAR_DEAD catalina CLEAR_PRINTS PRINT CAT2_A1 5000 1 GOTO mission_cat2_failed ENDIF GOSUB players_group GOSUB cat2_audio GET_GAME_TIMER game_timer IF NOT IS_PLAYER_PLAYING player1 GOTO mission_cat2_failed ENDIF IF IS_CHAR_DEAD catalina GOTO mission_cat2_failed ENDIF IF mission_flag < 9 AND mission_flag > -1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED IF skip_buttons_pressed = 0 //SKIP CUTSCENE HERE DO_FADE 500 FADE_OUT mission_flag = 0 ++ skip_buttons_pressed ENDIF ELSE IF skip_buttons_pressed = -1 ++ skip_buttons_pressed ENDIF ENDIF IF skip_buttons_pressed = 1 IF NOT GET_FADING_STATUS IF mission_flag < 2 AND ct2_objects_created = 0 CREATE_OBJECT_NO_OFFSET KMB_ATM1 2310.3669 -17.0 26.414 atm[0] SET_OBJECT_HEADING atm[0] 180.0 set_object_collision_damage_effect atm[0] FALSE CREATE_OBJECT_NO_OFFSET KMB_ATM1 2313.6890 -17.0 26.414 atm[1] SET_OBJECT_HEADING atm[1] 180.0 set_object_collision_damage_effect atm[1] FALSE CREATE_OBJECT_NO_OFFSET KMB_ATM1 2313.3184 -0.1206 26.414 atm[2] set_object_collision_damage_effect atm[2] FALSE CREATE_OBJECT_NO_OFFSET MTSafe 2305.6655 -4.7944 25.65 atm[3] SET_OBJECT_HEADING atm[3] 90.0 set_object_collision_damage_effect atm[3] FALSE CREATE_OBJECT_NO_OFFSET KMB_ATM3 2310.3669 -17.0 26.414 atm_static[0] set_object_collision_damage_effect atm_static[0] FALSE SET_OBJECT_HEADING atm[0] 180.0 CREATE_OBJECT_NO_OFFSET KMB_ATM3 2313.6890 -17.0 26.414 atm_static[1] set_object_collision_damage_effect atm_static[1] FALSE SET_OBJECT_HEADING atm[1] 180.0 CREATE_OBJECT_NO_OFFSET KMB_ATM3 2313.3184 -0.1206 26.414 atm_static[2] set_object_collision_damage_effect atm_static[2] FALSE // CREATE_OBJECT_NO_OFFSET man_safenew 2306.1655 -4.7944 26.414 atm_static[3] LVAR_INT safe_col CREATE_OBJECT_NO_OFFSET cat2_safe_col 2305.6655 -4.7944 25.65 safe_col SET_OBJECT_HEADING safe_col 90.0 SET_OBJECT_HEADING atm[3] 90.0 SET_OBJECT_HEADING atm_static[0] 180.0 SET_OBJECT_HEADING atm_static[1] 180.0 // SET_OBJECT_HEADING atm_static[3] 90.0 SET_OBJECT_COLLISION atm[0] FALSE SET_OBJECT_COLLISION atm[1] FALSE SET_OBJECT_COLLISION atm[2] FALSE // SET_OBJECT_COLLISION atm[3] FALSE // SET_OBJECT_VISIBLE atm_static[3] TRUE // DELETE_OBJECT atm[3] ct2_objects_created = 1 ENDIF LVAR_INT cat2_ReturnedAmmo GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_SHOTGUN cat2_ReturnedAmmo IF cat2_ReturnedAmmo = 0 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_SHOTGUN 48 ELSE IF cat2_ReturnedAmmo < 48 SET_CHAR_AMMO scplayer WEAPONTYPE_SHOTGUN 48 ENDIF ENDIF SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_SHOTGUN GIVE_WEAPON_TO_CHAR catalina WEAPONTYPE_SHOTGUN 9999 CLEAR_CHAR_TASKS scplayer SET_CHAR_COORDINATES scplayer 2312.5779 -7.4347 25.7500 SET_CHAR_HEADING scplayer 126.7479 SET_CHAR_COORDINATES catalina 2306.6655 -4.7944 25.75 SET_CHAR_HEADING catalina 90.0 CLEAR_CHAR_TASKS catalina CLEAR_CHAR_TASKS_IMMEDIATELY catalina TASK_PLAY_ANIM catalina CAT_SAFE_ROB ROB_BANK 1000.0 TRUE FALSE FALSE FALSE -2 // PLAY_OBJECT_ANIM atm[3] CAT_Safe_Open_O ROB_BANK 1000.0 FALSE TRUE PLAY_OBJECT_ANIM atm[3] CAT_SAFE_OPEN_O ROB_BANK 1000.0 FALSE TRUE // SET_OBJECT_ANIM_CURRENT_TIME atm[3] CAT_Safe_Open_O 1.0 // SET_CHAR_COORDINATES catalina 2307.1655 -4.7944 26.414 // SET_CHAR_HEADING catalina 90.0 // IF NOT IS_CHAR_DEAD catalina //// TASK_TOGGLE_DUCK catalina TRUE // TASK_PLAY_ANIM catalina CAT_SAFE_OPEN ROB_BANK 1000.0 FALSE FALSE FALSE FALSE -2 // PLAY_OBJECT_ANIM atm[3] CAT_SAFE_OPEN_O ROB_BANK 1000.0 FALSE TRUE // ENDIF IF NOT IS_CHAR_DEAD security1 CLEAR_CHAR_TASKS_IMMEDIATELY security1 SET_CHAR_COORDINATES security1 2310.5461 -7.7439 25.7422 SET_CHAR_HEADING security1 281.4267 TASK_TURN_CHAR_TO_FACE_CHAR security1 scplayer FREEZE_CHAR_POSITION security1 TRUE ENDIF IF NOT IS_CHAR_DEAD worker1 CLEAR_CHAR_TASKS_IMMEDIATELY worker1 SET_CHAR_COORDINATES worker1 2311.5972 -9.1847 25.7422 SET_CHAR_HEADING worker1 314.5010 TASK_TURN_CHAR_TO_FACE_CHAR worker1 scplayer FREEZE_CHAR_POSITION worker1 TRUE ENDIF IF NOT IS_CHAR_DEAD worker2 CLEAR_CHAR_TASKS_IMMEDIATELY worker2 SET_CHAR_COORDINATES worker2 2310.5906 -9.3749 25.7422 SET_CHAR_HEADING worker2 323.1424 TASK_TURN_CHAR_TO_FACE_CHAR worker2 scplayer FREEZE_CHAR_POSITION worker2 TRUE ENDIF IF NOT IS_CHAR_DEAD worker3 CLEAR_CHAR_TASKS_IMMEDIATELY worker3 SET_CHAR_COORDINATES worker3 2309.6101 -8.5556 25.7422 SET_CHAR_HEADING worker3 309.2547 //BY THE ALARM TASK_TURN_CHAR_TO_FACE_CHAR worker3 scplayer FREEZE_CHAR_POSITION worker3 TRUE ENDIF DO_FADE 500 FADE_IN mission_timer = game_timer - 555 mission_flag = 9 audio_flag = 5 ++ skip_buttons_pressed ENDIF ENDIF ENDIF IF mission_flag = 1 IF mission_timer < game_timer AND ct2_objects_created = 0 AND play_audio = 0 //1ST SHOT INSIDE BANK play_audio = 2 CLEAR_SMALL_PRINTS CLEAR_AREA 2307.8022 -17.2210 25.7574 100.0 TRUE SET_FIXED_CAMERA_POSITION 2308.3958 -15.8240 27.6660 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2309.2732 -15.3600 27.5448 JUMP_CUT LVAR_INT atm[4] atm_static[4] CREATE_OBJECT_NO_OFFSET KMB_ATM1 2310.3669 -17.0 26.414 atm[0] SET_OBJECT_HEADING atm[0] 180.0 set_object_collision_damage_effect atm[0] FALSE CREATE_OBJECT_NO_OFFSET KMB_ATM1 2313.6890 -17.0 26.414 atm[1] SET_OBJECT_HEADING atm[1] 180.0 set_object_collision_damage_effect atm[1] FALSE CREATE_OBJECT_NO_OFFSET KMB_ATM1 2313.3184 -0.1206 26.414 atm[2] set_object_collision_damage_effect atm[2] FALSE CREATE_OBJECT_NO_OFFSET MTSafe 2305.7655 -4.7944 25.75 atm[3] SET_OBJECT_HEADING atm[3] 90.0 CREATE_OBJECT_NO_OFFSET cat2_safe_col 2305.7655 -4.7944 25.75 safe_col SET_OBJECT_HEADING safe_col 90.0 set_object_collision_damage_effect atm[3] FALSE IF NOT DOES_OBJECT_EXIST pc_door[0] CREATE_OBJECT_NO_OFFSET CR_DOOR_01 2322.845 8.304 25.483 pc_door[0] DONT_REMOVE_OBJECT pc_door[0] set_object_collision_damage_effect pc_door[0] FALSE FREEZE_OBJECT_POSITION pc_door[0] TRUE ENDIF IF NOT DOES_OBJECT_EXIST pc_door[1] CREATE_OBJECT_NO_OFFSET CR_DOOR_01 2316.233 0.712 25.742 pc_door[1] DONT_REMOVE_OBJECT pc_door[1] SET_OBJECT_HEADING pc_door[1] 270.0 FREEZE_OBJECT_POSITION pc_door[1] TRUE set_object_collision_damage_effect pc_door[1] FALSE ENDIF IF NOT DOES_OBJECT_EXIST pc_door[2] CREATE_OBJECT_NO_OFFSET CR_DOOR_03 2304.257 -17.744 25.742 pc_door[2] DONT_REMOVE_OBJECT pc_door[2] FREEZE_OBJECT_POSITION pc_door[2] TRUE set_object_collision_damage_effect pc_door[2] FALSE ENDIF IF NOT DOES_OBJECT_EXIST pc_door[3] CREATE_OBJECT_NO_OFFSET CR_DOOR_03 2304.257 -14.583 25.742 pc_door[3] DONT_REMOVE_OBJECT pc_door[3] FREEZE_OBJECT_POSITION pc_door[3] TRUE SET_OBJECT_HEADING pc_door[3] 180.0 set_object_collision_damage_effect pc_door[3] FALSE ENDIF CREATE_OBJECT_NO_OFFSET KMB_ATM3 2310.3669 -17.0 26.414 atm_static[0] set_object_collision_damage_effect atm_static[0] FALSE SET_OBJECT_HEADING atm[0] 180.0 CREATE_OBJECT_NO_OFFSET KMB_ATM3 2313.6890 -17.0 26.414 atm_static[1] set_object_collision_damage_effect atm_static[1] FALSE SET_OBJECT_HEADING atm[1] 180.0 CREATE_OBJECT_NO_OFFSET KMB_ATM3 2313.3184 -0.1206 26.414 atm_static[2] set_object_collision_damage_effect atm_static[2] FALSE // CREATE_OBJECT_NO_OFFSET man_safenew 2306.1655 -4.7944 26.414 atm_static[3] SET_OBJECT_HEADING atm[3] 90.0 SET_OBJECT_HEADING atm_static[0] 180.0 SET_OBJECT_HEADING atm_static[1] 180.0 // SET_OBJECT_HEADING atm_static[3] 90.0 // SET_OBJECT_VISIBLE atm_static[3] TRUE // DELETE_OBJECT ATM[3] SET_OBJECT_COLLISION atm[0] FALSE SET_OBJECT_COLLISION atm[1] FALSE SET_OBJECT_COLLISION atm[2] FALSE //cr_door_01 (breakable single door) occurs at: //2322.845 8.304 25.483 at 0 heading //2316.233 0.712 25.742 at 90 heading // ////cr_door_02 (makes up double doors) at: ////2333.781 7.194 25.488 at 0 heading ////2333.781 5.243 25.488 at 180 heading // //cr_door_03 (makes up double doors) at: //2304.257 -17.744 25.742 at 0 heading //2304.257 -14.583 25.742 at 180 heading CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 2309.2888 -14.3987 25.7500 SET_CHAR_HEADING scplayer 287.3674 CLEAR_CHAR_TASKS_IMMEDIATELY catalina SET_CHAR_COORDINATES catalina 2310.2058 -15.8887 25.7574 SET_CHAR_HEADING catalina 287.3674 TASK_GO_STRAIGHT_TO_COORD scplayer 2315.4119 -13.1812 25.7500 PEDMOVE_WALK 10000 TASK_GO_STRAIGHT_TO_COORD catalina 2316.6191 -15.1198 25.7500 PEDMOVE_WALK 10000 mission_timer = game_timer + 3000 ct2_objects_created = 1 SET_WANTED_MULTIPLIER 0.2 ++ mission_flag ENDIF ENDIF IF mission_flag = 2 IF mission_timer < game_timer AND play_audio = 0 //TARGETTING SECURITTY GUARD - player CLEAR_SMALL_PRINTS SET_FIXED_CAMERA_POSITION 2315.3115 -13.8451 27.6696 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2315.7708 -12.9906 27.4270 JUMP_CUT CLEAR_CHAR_TASKS scplayer SET_CHAR_COORDINATES scplayer 2315.4119 -12.1812 25.7500 SET_CHAR_HEADING scplayer 236.5262 FREEZE_CHAR_POSITION scplayer TRUE//DEBUG!!! CLEAR_CHAR_TASKS catalina SET_CHAR_COORDINATES catalina 2316.6191 -15.1198 25.7500 SET_CHAR_HEADING catalina 242.0258 FREEZE_CHAR_POSITION catalina TRUE//DEBUG!!! IF NOT IS_CHAR_DEAD security1 GET_CHAR_COORDINATES security1 x y z //put the coord back a bit x += 2.7 GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_SHOTGUN cat2_ReturnedAmmo IF cat2_ReturnedAmmo = 0 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_SHOTGUN 48 ELSE IF cat2_ReturnedAmmo < 48 SET_CHAR_AMMO scplayer WEAPONTYPE_SHOTGUN 48 ENDIF ENDIF TASK_AIM_GUN_AT_COORD scplayer x y z 10000 TASK_HANDS_UP security1 8000 FREEZE_CHAR_POSITION security1 TRUE ENDIF play_audio = 3 mission_timer = game_timer + 2000 ++ mission_flag ENDIF ENDIF IF mission_flag = 3 // IF mission_timer < game_timer IF play_audio = 0 //TARGETTING CASHIER - catalina IF NOT IS_CHAR_DEAD worker1 GET_CHAR_COORDINATES worker1 x y z //put the coord back a bit x += 2.7 z += 0.5 GIVE_WEAPON_TO_CHAR catalina WEAPONTYPE_SHOTGUN 9999 TASK_AIM_GUN_AT_COORD catalina x y z 10000 FREEZE_CHAR_POSITION worker1 TRUE TASK_HANDS_UP worker1 8000 ENDIF CLEAR_SMALL_PRINTS SET_FIXED_CAMERA_POSITION 2317.0112 -17.3945 27.4246 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2317.2483 -16.4244 27.3736 JUMP_CUT // PRINT_NOW CAT2_03 2500 1 //I'd like to make a withdrawal bitch....NOW! play_audio = 4 mission_timer = game_timer + 2500 ++ mission_flag ENDIF ENDIF IF mission_flag = 4 IF skip_buttons_pressed < 1 IF mission_timer < game_timer DO_FADE 500 FADE_OUT ++ mission_flag ENDIF ENDIF ENDIF IF mission_flag = 5 IF skip_buttons_pressed < 1 IF NOT GET_FADING_STATUS //STAFF STAND AND BE SCARED CLEAR_SMALL_PRINTS SET_FIXED_CAMERA_POSITION 2316.3770 -11.0151 28.6019 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2315.6130 -10.6059 28.1029 JUMP_CUT CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 2312.5779 -7.4347 25.7500 SET_CHAR_HEADING scplayer 126.7479 CLEAR_CHAR_TASKS_IMMEDIATELY catalina SET_CHAR_COORDINATES catalina 2308.5022 -3.9120 25.7422 SET_CHAR_HEADING catalina 81.0 IF NOT IS_CHAR_DEAD catalina FREEZE_CHAR_POSITION catalina FALSE // TASK_TOGGLE_DUCK catalina TRUE TASK_GO_STRAIGHT_TO_COORD catalina 2306.7678 -4.5085 25.7422 PEDMOVE_WALK -2 ENDIF // SET_OBJECT_VISIBLE atm_static[3] TRUE // DELETE_OBJECT atm[3] IF NOT IS_CHAR_DEAD security1 CLEAR_CHAR_TASKS security1 SET_CHAR_COORDINATES security1 2310.5461 -7.7439 25.7422 SET_CHAR_HEADING security1 281.4267 TASK_TURN_CHAR_TO_FACE_CHAR security1 scplayer FREEZE_CHAR_POSITION security1 TRUE ENDIF IF NOT IS_CHAR_DEAD worker1 CLEAR_CHAR_TASKS worker1 SET_CHAR_COORDINATES worker1 2311.5972 -9.1847 25.7422 SET_CHAR_HEADING worker1 314.5010 TASK_TURN_CHAR_TO_FACE_CHAR worker1 scplayer FREEZE_CHAR_POSITION worker1 TRUE ENDIF IF NOT IS_CHAR_DEAD worker2 CLEAR_CHAR_TASKS worker2 SET_CHAR_COORDINATES worker2 2310.5906 -9.3749 25.7422 SET_CHAR_HEADING worker2 323.1424 TASK_TURN_CHAR_TO_FACE_CHAR worker2 scplayer FREEZE_CHAR_POSITION worker2 TRUE ENDIF IF NOT IS_CHAR_DEAD worker3 CLEAR_CHAR_TASKS worker3 SET_CHAR_COORDINATES worker3 2309.6101 -8.5556 25.7422 SET_CHAR_HEADING worker3 309.2547 //BY THE ALARM TASK_TURN_CHAR_TO_FACE_CHAR worker3 scplayer FREEZE_CHAR_POSITION worker3 TRUE ENDIF REQUEST_ANIMATION OTB DO_FADE 500 FADE_IN ++ mission_flag ENDIF ENDIF ENDIF IF mission_flag = 6 IF NOT GET_FADING_STATUS SET_USES_COLLISION_OF_CLOSEST_OBJECT_OF_TYPE 2312.5779 -7.4347 25.7500 4.5 man_safenew FALSE SET_USES_COLLISION_OF_CLOSEST_OBJECT_OF_TYPE 2312.5779 -7.4347 25.7500 4.5 kev_safe FALSE play_audio = 5 play_audio_for = 3 // PRINT CAT2_04 4000 1//I'm going to empty the safe. mission_timer = game_timer + 800 ++ mission_flag ENDIF ENDIF IF mission_flag = 7 IF mission_timer < game_timer IF NOT IS_CHAR_DEAD worker1 GET_CHAR_COORDINATES worker1 x y z z += 0.7 // TASK_AIM_GUN_AT_COORD scplayer x y z 1500 ENDIF mission_timer = game_timer + 800 ++ mission_flag new_flag = 0 ENDIF ENDIF LVAR_INT new_flag IF mission_flag = 8 IF new_flag = 0 IF mission_timer < game_timer SET_FIXED_CAMERA_POSITION 2314.6023 -4.9551 28.3779 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2313.7793 -5.3630 27.9827 JUMP_CUT IF NOT IS_CHAR_DEAD catalina SET_CHAR_COORDINATES catalina 2306.6655 -4.7944 25.75 SET_CHAR_HEADING catalina 90.0 SET_CURRENT_CHAR_WEAPON catalina WEAPONTYPE_UNARMED OPEN_SEQUENCE_TASK cat2_seq TASK_PLAY_ANIM -1 CAT_SAFE_OPEN ROB_BANK 1000.0 FALSE FALSE FALSE FALSE -2 TASK_PLAY_ANIM -1 CAT_SAFE_ROB ROB_BANK 1000.0 FALSE FALSE FALSE FALSE -2 CLOSE_SEQUENCE_TASK cat2_seq PERFORM_SEQUENCE_TASK catalina cat2_seq CLEAR_SEQUENCE_TASK cat2_Seq PLAY_OBJECT_ANIM atm[3] CAT_SAFE_OPEN_O ROB_BANK 1000.0 FALSE TRUE ENDIF new_flag = 1 FREEZE_CHAR_POSITION scplayer FALSE IF NOT IS_CHAR_DEAD worker1 TASK_AIM_GUN_AT_CHAR scplayer worker1 5500 ENDIF mission_timer = game_timer + 800 ENDIF ENDIF IF new_flag = 1 IF mission_timer < game_timer // SET_FIXED_CAMERA_POSITION 2315.5745 -7.7408 27.9122 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 2314.6243 -7.5849 27.6423 JUMP_CUT // IF NOT IS_CHAR_DEAD catalina // ENDIF IF NOT IS_CHAR_DEAD security1 TASK_HANDS_UP security1 8000 ENDIF IF NOT IS_CHAR_DEAD worker1 OPEN_SEQUENCE_TASK cat2_seq TASK_PAUSE -1 250 TASK_HANDS_UP -1 8000 CLOSE_SEQUENCE_TASK cat2_seq PERFORM_SEQUENCE_TASK worker1 cat2_seq CLEAR_SEQUENCE_TASK cat2_seq ENDIF IF NOT IS_CHAR_DEAD worker2 OPEN_SEQUENCE_TASK cat2_seq TASK_PAUSE -1 350 TASK_HANDS_UP -1 8000 CLOSE_SEQUENCE_TASK cat2_seq PERFORM_SEQUENCE_TASK worker2 cat2_seq CLEAR_SEQUENCE_TASK cat2_seq ENDIF IF NOT IS_CHAR_DEAD worker3 OPEN_SEQUENCE_TASK cat2_seq TASK_PAUSE -1 850 TASK_HANDS_UP -1 8000 CLOSE_SEQUENCE_TASK cat2_seq PERFORM_SEQUENCE_TASK worker3 cat2_seq CLEAR_SEQUENCE_TASK cat2_seq ENDIF mission_timer = game_timer + 2000 ++ mission_flag ENDIF ENDIF ENDIF IF mission_flag = 9 IF mission_timer < game_timer AND play_audio = 0 AND audio_flag = 1 IF NOT DOES_OBJECT_EXIST pc_door[0] CREATE_OBJECT_NO_OFFSET CR_DOOR_01 2322.845 8.304 25.483 pc_door[0] DONT_REMOVE_OBJECT pc_door[0] set_object_collision_damage_effect pc_door[0] FALSE FREEZE_OBJECT_POSITION pc_door[0] TRUE ENDIF IF NOT DOES_OBJECT_EXIST pc_door[1] CREATE_OBJECT_NO_OFFSET CR_DOOR_01 2316.233 0.712 25.742 pc_door[1] DONT_REMOVE_OBJECT pc_door[1] SET_OBJECT_HEADING pc_door[1] 270.0 FREEZE_OBJECT_POSITION pc_door[1] TRUE set_object_collision_damage_effect pc_door[1] FALSE ENDIF IF NOT DOES_OBJECT_EXIST pc_door[2] CREATE_OBJECT_NO_OFFSET CR_DOOR_03 2304.257 -17.744 25.742 pc_door[2] DONT_REMOVE_OBJECT pc_door[2] FREEZE_OBJECT_POSITION pc_door[2] TRUE set_object_collision_damage_effect pc_door[2] FALSE ENDIF IF NOT DOES_OBJECT_EXIST pc_door[3] CREATE_OBJECT_NO_OFFSET CR_DOOR_03 2304.257 -14.583 25.742 pc_door[3] DONT_REMOVE_OBJECT pc_door[3] FREEZE_OBJECT_POSITION pc_door[3] TRUE SET_OBJECT_HEADING pc_door[3] 180.0 set_object_collision_damage_effect pc_door[3] FALSE ENDIF FREEZE_CHAR_POSITION scplayer FALSE FREEZE_CHAR_POSITION catalina FALSE SET_PLAYER_CONTROL player1 ON CLEAR_PRINTS PRINT CAT2_05 4000 1//Point your gun at the staff to keep them scared and under control. PRINT CAT2_06 8000 1//Don't let them put their hands down or they may set off an alarm. HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT CLEAR_CHAR_TASKS_IMMEDIATELY catalina SET_CURRENT_CHAR_WEAPON catalina WEAPONTYPE_UNARMED TASK_PLAY_ANIM catalina CAT_SAFE_ROB ROB_BANK 1000.0 TRUE FALSE FALSE FALSE -2 mission_timer = game_timer + 2000 ++ mission_flag LVAR_FLOAT hand_drop_speed hand_drop_speed = 0.0015 SET_USES_COLLISION_OF_CLOSEST_OBJECT_OF_TYPE 2312.5779 -7.4347 25.7500 4.5 man_safenew TRUE SET_USES_COLLISION_OF_CLOSEST_OBJECT_OF_TYPE 2312.5779 -7.4347 25.7500 4.5 kev_safe TRUE CHECKPOINT_SAVE 99 ENDIF ENDIF IF mission_flag > 9 hand_drop_speed += 0.000025 IF NOT IS_CHAR_DEAD security1 IF mission_flag > 10 GET_SCRIPT_TASK_STATUS security1 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK FREEZE_CHAR_POSITION security1 FALSE TASK_KILL_CHAR_ON_FOOT security1 scplayer ENDIF ELSE IF IS_PLAYER_TARGETTING_CHAR player1 security1 AND NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED security1_scared +=@ 0.02 ELSE security1_scared -=@ hand_drop_speed ENDIF IF security1_scared > 1.0 security1_scared = 1.0 ENDIF IF security1_scared < 0.0 security1_scared = 0.0 IF mission_flag = 10 LVAR_INT bank_alarm GOSUB alarm_off mission_flag = 11 ENDIF ENDIF GET_SCRIPT_TASK_STATUS security1 TASK_PLAY_ANIM task_status IF task_status = FINISHED_TASK //security1_scared += 10.0 //TASK_HANDS_UP security1 100000 TASK_PLAY_ANIM security1 SHP_HANDSUP_SCR ROB_BANK 4.0 FALSE FALSE FALSE FALSE 0 ELSE IF IS_CHAR_PLAYING_ANIM security1 SHP_HANDSUP_SCR SET_CHAR_ANIM_PLAYING_FLAG security1 SHP_HANDSUP_SCR FALSE SET_CHAR_ANIM_CURRENT_TIME security1 SHP_HANDSUP_SCR security1_scared ENDIF ENDIF ENDIF ELSE IF mission_flag = 10 GOSUB alarm_off mission_flag = 11 ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED security1 ENDIF IF NOT IS_CHAR_DEAD worker1 IF mission_flag > 10 GET_SCRIPT_TASK_STATUS worker1 TASK_DUCK task_status IF task_status = FINISHED_TASK FREEZE_CHAR_POSITION worker1 FALSE TASK_DUCK worker1 9999999999 ENDIF ELSE IF IS_PLAYER_TARGETTING_CHAR player1 worker1 AND NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED worker1_scared +=@ 0.023 ELSE worker1_scared -=@ hand_drop_speed ENDIF IF worker1_scared > 1.0 worker1_scared = 1.0 ENDIF IF worker1_scared < 0.0 worker1_scared = 0.0 IF mission_flag = 10 GOSUB alarm_off mission_flag = 11 ENDIF ENDIF GET_SCRIPT_TASK_STATUS worker1 TASK_PLAY_ANIM task_status IF task_status = FINISHED_TASK //worker1_scared += 10.0 //TASK_HANDS_UP worker1 100000 TASK_PLAY_ANIM worker1 SHP_HANDSUP_SCR ROB_BANK 4.0 FALSE FALSE FALSE FALSE 0 ELSE IF IS_CHAR_PLAYING_ANIM worker1 SHP_HANDSUP_SCR SET_CHAR_ANIM_PLAYING_FLAG worker1 SHP_HANDSUP_SCR FALSE SET_CHAR_ANIM_CURRENT_TIME worker1 SHP_HANDSUP_SCR worker1_scared ENDIF ENDIF ENDIF ELSE IF mission_flag = 10 GOSUB alarm_off mission_flag = 11 ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED worker1 ENDIF IF NOT IS_CHAR_DEAD worker2 IF mission_flag > 10 GET_SCRIPT_TASK_STATUS worker2 TASK_DUCK task_status IF task_status = FINISHED_TASK FREEZE_CHAR_POSITION worker2 FALSE TASK_DUCK worker2 9999999999 ENDIF ELSE IF IS_PLAYER_TARGETTING_CHAR player1 worker2 AND NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED worker2_scared +=@ 0.026 ELSE worker2_scared -=@ hand_drop_speed ENDIF IF worker2_scared > 1.0 worker2_scared = 1.0 ENDIF IF worker2_scared < 0.0 worker2_scared = 0.0 IF mission_flag = 10 GOSUB alarm_off mission_flag = 11 ENDIF ENDIF GET_SCRIPT_TASK_STATUS worker2 TASK_PLAY_ANIM task_status IF task_status = FINISHED_TASK //worker2_scared += 10.0 //TASK_HANDS_UP worker2 100000 TASK_PLAY_ANIM worker2 SHP_HANDSUP_SCR ROB_BANK 4.0 FALSE FALSE FALSE FALSE 0 ELSE IF IS_CHAR_PLAYING_ANIM worker2 SHP_HANDSUP_SCR SET_CHAR_ANIM_PLAYING_FLAG worker2 SHP_HANDSUP_SCR FALSE SET_CHAR_ANIM_CURRENT_TIME worker2 SHP_HANDSUP_SCR worker2_scared ENDIF ENDIF ENDIF ELSE IF mission_flag = 10 GOSUB alarm_off mission_flag = 11 ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED worker2 ENDIF IF NOT IS_CHAR_DEAD worker3 IF mission_flag > 10 GET_SCRIPT_TASK_STATUS worker3 TASK_DUCK task_status IF task_status = FINISHED_TASK FREEZE_CHAR_POSITION worker3 FALSE TASK_DUCK worker3 9999999999 ENDIF ELSE IF IS_PLAYER_TARGETTING_CHAR player1 worker3 AND NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED worker3_scared +=@ 0.025 ELSE worker3_scared -=@ hand_drop_speed ENDIF IF worker3_scared > 1.0 worker3_scared = 1.0 ENDIF IF worker3_scared < 0.0 worker3_scared = 0.0 IF mission_flag = 10 GOSUB alarm_off mission_flag = 11 ENDIF ENDIF GET_SCRIPT_TASK_STATUS worker3 TASK_PLAY_ANIM task_status IF task_status = FINISHED_TASK //worker3_scared += 10.0 //TASK_HANDS_UP worker3 100000 TASK_PLAY_ANIM worker3 SHP_HANDSUP_SCR ROB_BANK 4.0 FALSE FALSE FALSE FALSE 0 ELSE IF IS_CHAR_PLAYING_ANIM worker3 SHP_HANDSUP_SCR SET_CHAR_ANIM_PLAYING_FLAG worker3 SHP_HANDSUP_SCR FALSE SET_CHAR_ANIM_CURRENT_TIME worker3 SHP_HANDSUP_SCR worker3_scared ENDIF ENDIF ENDIF ELSE IF mission_flag = 10 GOSUB alarm_off LVAR_INT cat_anim_time cat_anim_time = TIMERA + 500 mission_flag = 11 ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED worker3 ENDIF ENDIF IF play_audio = 9 IF NOT IS_CHAR_DEAD catalina IF HAS_ANIMATION_LOADED OTB LVAR_INT cat2_seq GET_SCRIPT_TASK_STATUS catalina PERFORM_SEQUENCE_TASK task_status IF task_Status = FINISHED_TASK CLEAR_CHAR_TASKS catalina OPEN_SEQUENCE_TASK cat2_seq TASK_TOGGLE_DUCK -1 FALSE TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_PLAY_ANIM -1 wtchrace_cmon OTB 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM -1 wtchrace_lose OTB 4.0 FALSE FALSE FALSE FALSE 0 CLOSE_SEQUENCE_TASK cat2_seq PERFORM_SEQUENCE_TASK catalina cat2_seq CLEAR_SEQUENCE_TASK cat2_seq ENDIF ELSE REQUEST_ANIMATION OTB ENDIF ENDIF ENDIF IF mission_flag = 11 REMOVE_ANIMATION ROB_BANK IF catalina_flag = 4 IF IS_CHAR_DEAD security1 mission_timer = game_timer + 2000 ++ mission_flag ENDIF ENDIF ENDIF IF mission_flag = 12 AND play_audio = 0 IF mission_timer < game_timer DO_FADE 500 FADE_OUT REQUEST_MODEL COPCARRU REQUEST_MODEL COPBIKE ++ mission_flag ENDIF ENDIF IF mission_flag = 13 IF HAS_CAR_RECORDING_BEEN_LOADED 116 AND HAS_CAR_RECORDING_BEEN_LOADED 117 AND HAS_CAR_RECORDING_BEEN_LOADED 118 AND HAS_CAR_RECORDING_BEEN_LOADED 119 AND HAS_ANIMATION_LOADED MISC IF NOT GET_FADING_STATUS AND HAS_MODEL_LOADED COPCARRU AND HAS_MODEL_LOADED COPBIKE REMOVE_ANIMATION OTB REMOVE_ANIMATION SHOP CLEAR_SMALL_PRINTS SET_PLAYER_CONTROL player1 OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE SET_NEAR_CLIP 0.1 REMOVE_SOUND bank_alarm LVAR_INT copcar1 //cop1 cop2 CREATE_CAR COPCARRU 2302.1809 6.6 25.4766 copcar1 SET_CAR_HEADING copcar1 90.0 LOCK_CAR_DOORS copcar1 CARLOCK_LOCKOUT_PLAYER_ONLY START_PLAYBACK_RECORDED_CAR copcar1 116 SET_PLAYBACK_SPEED copcar1 0.0 //LVAR_INT blip1 blip2 blip3 blip4 //ADD_BLIP_FOR_CAR copcar1 blip1 LVAR_INT copcar2 copcar2_cop1 CREATE_CAR COPBIKE 2348.6582 5.9060 25.3359 copcar2 SET_CAR_HEADING copcar2 359.5453 START_PLAYBACK_RECORDED_CAR copcar2 117 SET_PLAYBACK_SPEED copcar2 0.0 CREATE_CHAR_INSIDE_CAR copcar2 PEDTYPE_CIVMALE CSHER copcar2_cop1 SET_CHAR_DECISION_MAKER copcar2_cop1 bank_peds_decision_maker //SWITCH_CAR_SIREN copcar2 ON //ADD_BLIP_FOR_CAR copcar2 blip2 //WARP_CHAR_INTO_CAR scplayer copcar2 //START_RECORDING_CAR copcar2 117 LVAR_INT copcar3 copcar3_cop1 CREATE_CAR COPBIKE 2264.9182 37.5190 25.3359 copcar3 SET_CAR_HEADING copcar3 268.8078 START_PLAYBACK_RECORDED_CAR copcar3 118 SET_PLAYBACK_SPEED copcar3 0.0 CREATE_CHAR_INSIDE_CAR copcar3 PEDTYPE_CIVMALE CSHER copcar3_cop1 SET_CHAR_DECISION_MAKER copcar3_cop1 bank_peds_decision_maker //SWITCH_CAR_SIREN copcar3 ON //ADD_BLIP_FOR_CAR copcar3 blip3 //WARP_CHAR_INTO_CAR scplayer copcar3 //START_RECORDING_CAR copcar3 118 LVAR_INT copcar4 copcar4_cop1 CREATE_CAR COPCARRU 2278.4771 89.2844 25.3378 copcar4 SET_CAR_HEADING copcar4 269.8063 START_PLAYBACK_RECORDED_CAR copcar4 119 SET_PLAYBACK_SPEED copcar4 0.0 CREATE_CHAR_INSIDE_CAR copcar4 PEDTYPE_CIVMALE CSHER copcar4_cop1 SET_CHAR_DECISION_MAKER copcar4_cop1 bank_peds_decision_maker SWITCH_CAR_SIREN copcar4 ON // LOCK_CAR_DOORS copcar4 CARLOCK_UNLOCKED //ADD_BLIP_FOR_CAR copcar4 blip4 //WARP_CHAR_INTO_CAR scplayer copcar4 //START_RECORDING_CAR copcar4 119 LVAR_INT copcar1_cop1 copcar1_cop2 CREATE_CHAR PEDTYPE_CIVMALE CSHER 2328.5645 1.8673 25.5693 copcar1_cop1//ON RIGHT SET_CHAR_HEADING copcar1_cop1 0.0 OPEN_SEQUENCE_TASK sequence_task TASK_PLAY_ANIM -1 SEAT_IDLE PED 1000.0 TRUE FALSE FALSE TRUE 5000//3000 TASK_PLAY_ANIM -1 Seat_talk_01 MISC 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM -1 SEAT_IDLE PED 4.0 TRUE FALSE FALSE FALSE 10000 CLOSE_SEQUENCE_TASK sequence_task PERFORM_SEQUENCE_TASK copcar1_cop1 sequence_task CLEAR_SEQUENCE_TASK sequence_task // fleeing ped LVAR_INT c2_fleeing_ped CREATE_CHAR PEDTYPE_CIVMALE SWMYRI 2336.6794 -8.2464 25.4766 c2_fleeing_ped MARK_MODEL_AS_NO_LONGER_NEEDED SWMYRI TASK_SMART_FLEE_POINT c2_fleeing_ped 2336.3994 -18.3093 25.4766 30.0 8000 CREATE_CHAR PEDTYPE_CIVMALE CSHER 2328.4763 2.3077 25.5693 copcar1_cop2 SET_CHAR_DECISION_MAKER copcar1_cop2 bank_peds_decision_maker SET_CHAR_HEADING copcar1_cop2 180.0 //TASK_PLAY_ANIM copcar1_cop2 SEAT_WATCH MISC 4.0 TRUE FALSE FALSE TRUE 60000 OPEN_SEQUENCE_TASK sequence_task TASK_PLAY_ANIM -1 SEAT_IDLE PED 4.0 TRUE FALSE FALSE TRUE 9200 TASK_PLAY_ANIM -1 Seat_talk_02 MISC 1000.0 FALSE FALSE FALSE TRUE 0 TASK_PLAY_ANIM -1 SEAT_WATCH MISC 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM -1 SEAT_IDLE PED 4.0 TRUE FALSE FALSE FALSE 10000 CLOSE_SEQUENCE_TASK sequence_task PERFORM_SEQUENCE_TASK copcar1_cop2 sequence_task CLEAR_SEQUENCE_TASK sequence_task mission_timer = TIMERA + 1000 ++ mission_flag ELSE REQUEST_MODEL COPCARRU REQUEST_MODEL COPBIKE ENDIF ELSE REQUEST_CAR_RECORDING 116 REQUEST_CAR_RECORDING 117 REQUEST_CAR_RECORDING 118 REQUEST_CAR_RECORDING 119 REQUEST_ANIMATION MISC ENDIF ELSE IF mission_flag = 15 IF TIMERA > mission_timer SET_FIXED_CAMERA_POSITION 2327.5833 1.7960 26.5414 0.0 0.0 0.0 //cut of cops in pizza shop POINT_CAMERA_AT_POINT 2328.5378 2.0688 26.6612 JUMP_CUT LOAD_SCENE_IN_DIRECTION 2328.5378 2.0688 26.6612 270.0 DO_FADE 500 FADE_IN skip_buttons_pressed = -1 ++ mission_flag ENDIF ENDIF IF mission_flag = 14 //LET THE INITIAL SITTING ANIMATION HAVE A COUPLE OF FRAMES TO GET INTO POSITION ++ mission_flag ENDIF ENDIF IF mission_flag < 25 IF mission_flag > 15 OR mission_flag = -1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED IF skip_buttons_pressed = 0 DO_FADE 500 FADE_OUT mission_flag = -1 ++ skip_buttons_pressed ENDIF ELSE IF skip_buttons_pressed = -1 ++ skip_buttons_pressed ENDIF ENDIF IF skip_buttons_pressed = 1 IF NOT GET_FADING_STATUS audio_flag = 5 // clear audio for cut skip //SET COPS POSITIONS IF NOT IS_CHAR_DEAD copcar1_cop1 CLEAR_CHAR_TASKS copcar1_cop1 GIVE_WEAPON_TO_CHAR copcar1_cop1 WEAPONTYPE_SHOTGUN 9999 IF IS_CHAR_IN_ANY_CAR copcar1_cop1 WARP_CHAR_FROM_CAR_TO_COORD copcar1_cop1 2292.5305 -19.1915 25.3437 ELSE SET_CHAR_COORDINATES copcar1_cop1 2292.5305 -19.1915 25.3437 ENDIF TASK_AIM_GUN_AT_COORD copcar1_cop1 2304.1372 -16.5910 27.2760 15000 ENDIF IF NOT IS_CHAR_DEAD copcar1_cop2 CLEAR_CHAR_TASKS copcar1_cop2 GIVE_WEAPON_TO_CHAR copcar1_cop2 WEAPONTYPE_SHOTGUN 9999 IF IS_CHAR_IN_ANY_CAR copcar1_cop2 WARP_CHAR_FROM_CAR_TO_COORD copcar1_cop2 2297.0220 -19.6483 25.3359 ELSE SET_CHAR_COORDINATES copcar1_cop2 2297.0220 -19.6483 25.3359 //PASSENGER IN COPCAR1 GOTO AND AIMS ENDIF TASK_AIM_GUN_AT_COORD copcar1_cop2 2304.1372 -16.5910 27.2760 15000 ENDIF IF NOT IS_CHAR_DEAD copcar2_cop1 CLEAR_CHAR_TASKS copcar2_cop1 GIVE_WEAPON_TO_CHAR copcar2_cop1 WEAPONTYPE_SHOTGUN 9999 IF IS_CHAR_IN_ANY_CAR copcar2_cop1 WARP_CHAR_FROM_CAR_TO_COORD copcar2_cop1 2303.1191 -13.7964 25.4766 ELSE SET_CHAR_COORDINATES copcar2_cop1 2303.1191 -13.7964 25.4766 //GUY ON BIKE BY BANK COVERS THE DOOR ENDIF SET_CHAR_HEADING copcar2_cop1 119.4845 ENDIF IF NOT IS_CHAR_DEAD copcar3_cop1 CLEAR_CHAR_TASKS copcar3_cop1 GIVE_WEAPON_TO_CHAR copcar3_cop1 WEAPONTYPE_SHOTGUN 9999 IF IS_CHAR_IN_ANY_CAR copcar3_cop1 WARP_CHAR_FROM_CAR_TO_COORD copcar3_cop1 2297.2437 -16.8148 25.3328 ELSE SET_CHAR_COORDINATES copcar3_cop1 2297.2437 -16.8148 25.3328 //GUY ON BIKE BY CAR GOTO AND DUCK AND AIM ENDIF TASK_AIM_GUN_AT_COORD copcar3_cop1 2304.1372 -16.5910 27.2760 15000 ENDIF IF NOT IS_CAR_DEAD copcar1 SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_CAR copcar1 // SET_PLAYBACK_SPEED copcar1 1.0 // STOP_PLAYBACK_RECORDED_CAR copcar1 // FREEZE_CAR_POSITION copcar1 FALSE // DELETE_CAR copcar1 ENDIF IF NOT IS_CAR_DEAD copcar2 SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_CAR copcar2 // SET_PLAYBACK_SPEED copcar2 1.0 // STOP_PLAYBACK_RECORDED_CAR copcar2 // FREEZE_CAR_POSITION copcar2 FALSE // DELETE_CAR copcar2 ENDIF IF NOT IS_CAR_DEAD copcar3 SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_CAR copcar3 // SET_PLAYBACK_SPEED copcar3 1.0 // STOP_PLAYBACK_RECORDED_CAR copcar3 // FREEZE_CAR_POSITION copcar3 FALSE ENDIF IF NOT IS_CAR_DEAD copcar4 // ############################## Something odd happening to this car causing it to spin violently when the cutscene has skipped. // ############################## Following measures prevent it. SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_CAR copcar4 // SET_PLAYBACK_SPEED copcar4 1.0 // STOP_PLAYBACK_RECORDED_CAR copcar4 // FREEZE_CAR_POSITION copcar4 FALSE SET_CAR_COORDINATES copcar4 2288.7573 -11.9521 25.4766 SET_CAR_HEADING copcar4 142.4622 SET_CAR_FORWARD_SPEED copcar4 0.0 SET_CAR_ROTATION_VELOCITY copcar4 0.0 0.0 0.0 ENDIF ++ skip_buttons_pressed mission_flag = 25 ENDIF ENDIF ENDIF ENDIF IF mission_flag = 16 IF mission_timer < game_timer AND play_audio = 0 // PRINT CAT2_07 5000 1//POLICE RADIO: Attention all cars. Bank robbery in progress on Soandso street. play_audio = 39 mission_timer = game_timer + 4000 ++ mission_flag ENDIF ENDIF IF mission_flag = 17 IF mission_timer < game_timer // PRINT_NOW CAT2_08 5000 1//Shit, I just bought another donut! Don't criminals have any consideration? IF play_audio = 0 audio_actor[3] = copcar1_cop1 audio_actor[4] = copcar1_cop2 play_audio_global = 1 play_audio = 11 mission_timer = game_timer + 2800 ++ mission_flag ENDIF ENDIF ENDIF IF mission_flag = 18 AND play_audio = 0 IF mission_timer < game_timer // PRINT_NOW CAT2_09 5000 1//We have a few hours before we need to collect that bribe, we may as well take a look. play_audio = 12 mission_timer = game_timer + 3500 ++ mission_flag ENDIF ENDIF IF mission_flag = 19 AND play_audio = 0 IF mission_timer < game_timer IF NOT IS_CAR_DEAD copcar1 IF NOT IS_CHAR_DEAD copcar1_cop1 CLEAR_CHAR_TASKS copcar1_cop1 SET_CHAR_COORDINATES copcar1_cop1 2345.9895 5.6379 25.3359 SET_CHAR_HEADING copcar1_cop1 276.5795 TASK_ENTER_CAR_AS_DRIVER copcar1_cop1 copcar1 5000 ENDIF ENDIF IF NOT IS_CAR_DEAD copcar1 IF NOT IS_CHAR_DEAD copcar1_cop2 CLEAR_CHAR_TASKS copcar1_cop2 SET_CHAR_COORDINATES copcar1_cop2 2349.0730 9.3357 25.4766 SET_CHAR_HEADING copcar1_cop2 282.9661 TASK_ENTER_CAR_AS_PASSENGER copcar1_cop2 copcar1 5000 0 ENDIF ENDIF CLEAR_SMALL_PRINTS // SWITCH_STREAMING OFF SET_FIXED_CAMERA_POSITION 2353.4939 10.2912 29.0217 0.0 0.0 0.0 //CUT OF COPS GETTING INTO THEIR VAN POINT_CAMERA_AT_POINT 2352.7229 9.7997 28.6169 JUMP_CUT // SET_FIXED_CAMERA_POSITION 2353.0544 12.1400 28.0091 0.0 0.0 0.0 //CUT OF COPS GETTING INTO THEIR VAN // POINT_CAMERA_AT_POINT 2352.2913 11.5119 27.8575 JUMP_CUT DELETE_CHAR c2_fleeing_ped mission_timer = game_timer + 1000 ++ mission_flag ENDIF ENDIF IF mission_flag = 20 IF mission_timer < game_timer IF NOT IS_CAR_DEAD copcar2 SET_PLAYBACK_SPEED copcar2 1.0 ENDIF IF NOT IS_CAR_DEAD copcar3 SET_PLAYBACK_SPEED copcar3 1.0 ENDIF mission_timer = game_timer + 2500 ++ mission_flag ENDIF ENDIF IF mission_flag = 21 IF NOT IS_CAR_DEAD copcar1 IF mission_timer < game_timer SET_PLAYBACK_SPEED copcar1 1.0 SET_INTERPOLATION_PARAMETERS 0.0 5500 SET_FIXED_CAMERA_POSITION 2353.0544 12.1400 28.0091 0.0 0.0 0.0 //CUT OF COPS GETTING INTO THEIR VAN POINT_CAMERA_AT_CAR copcar1 FIXED INTERPOLATION SWITCH_CAR_SIREN copcar1 ON mission_timer = game_timer + 5500 mission_flag = 23 ENDIF ELSE mission_timer = game_timer + 5500 mission_flag = 23 ENDIF ENDIF IF mission_flag = 22 IF mission_timer < game_timer SET_FIXED_CAMERA_POSITION 2297.5618 11.3784 29.2857 0.0 0.0 0.0 //CUT OF COP BIKES IF NOT IS_CAR_DEAD copcar4 POINT_CAMERA_AT_CAR copcar4 FIXED JUMP_CUT ELSE POINT_CAMERA_AT_POINT 2297.3772 12.3375 29.0710 JUMP_CUT ENDIF mission_timer = game_timer + 6500 ++ mission_flag ENDIF ENDIF IF mission_flag = 23 IF mission_timer < game_timer play_audio = 13 play_audio_for = 3 IF NOT IS_CAR_DEAD copcar1 IF IS_PLAYBACK_GOING_ON_FOR_CAR copcar1 STOP_PLAYBACK_RECORDED_CAR copcar1 SET_CAR_COORDINATES copcar1 2297.2664 -27.4791 25.3359 SET_CAR_HEADING copcar1 23.0 SET_CAR_FORWARD_SPEED copcar1 17.0 IF NOT IS_CHAR_DEAD copcar1_cop1 GIVE_WEAPON_TO_CHAR copcar1_cop1 WEAPONTYPE_PISTOL 9999 OPEN_SEQUENCE_TASK sequence_task TASK_CAR_DRIVE_TO_COORD -1 copcar1 2295.6117 -23.6996 25.3437 17.0 MODE_ACCURATE 0 DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_TEMP_ACTION -1 copcar1 TEMPACT_HANDBRAKESTRAIGHT 1000 TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 2292.5305 -19.1915 25.3437 PEDMOVE_RUN 10000 //COPCAR1 DRIVER GOTO AND AIM TASK_AIM_GUN_AT_COORD -1 2304.1372 -16.5910 27.2760 5000 CLOSE_SEQUENCE_TASK sequence_task PERFORM_SEQUENCE_TASK copcar1_cop1 sequence_task CLEAR_SEQUENCE_TASK sequence_task ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD copcar1_cop2 GIVE_WEAPON_TO_CHAR copcar1_cop2 WEAPONTYPE_PISTOL 9999 OPEN_SEQUENCE_TASK sequence_task TASK_PAUSE -1 1000 TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 2296.7065 -15.3321 25.3279 PEDMOVE_RUN 10000 //COPCAR1 DRIVER GOTO AND AIM TASK_TOGGLE_DUCK -1 TRUE TASK_AIM_GUN_AT_COORD -1 2304.1372 -16.5910 27.2760 5000 CLOSE_SEQUENCE_TASK sequence_task PERFORM_SEQUENCE_TASK copcar1_cop2 sequence_task CLEAR_SEQUENCE_TASK sequence_task ENDIF IF NOT IS_CAR_DEAD copcar2 IF IS_PLAYBACK_GOING_ON_FOR_CAR copcar2 STOP_PLAYBACK_RECORDED_CAR copcar2 SET_CAR_COORDINATES copcar2 2305.8347 -30.7209 25.3382 SET_CAR_HEADING copcar2 33.0 SET_CAR_FORWARD_SPEED copcar2 17.0 IF NOT IS_CHAR_DEAD copcar2_cop1 GIVE_WEAPON_TO_CHAR copcar2_cop1 WEAPONTYPE_PISTOL 9999 OPEN_SEQUENCE_TASK sequence_task TASK_CAR_DRIVE_TO_COORD -1 copcar2 2302.1902 -21.2635 25.4844 17.0 MODE_ACCURATE 0 DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_TEMP_ACTION -1 copcar2 TEMPACT_HANDBRAKESTRAIGHT 1000 TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 2297.2437 -16.8148 25.3328 PEDMOVE_RUN 10000 //GUY ON BIKE BY BANK COVERS THE DOOR TASK_ACHIEVE_HEADING -1 291.4845 CLOSE_SEQUENCE_TASK sequence_task PERFORM_SEQUENCE_TASK copcar2_cop1 sequence_task CLEAR_SEQUENCE_TASK sequence_task ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD copcar3 IF IS_PLAYBACK_GOING_ON_FOR_CAR copcar3 STOP_PLAYBACK_RECORDED_CAR copcar3 SET_CAR_COORDINATES copcar3 2294.4912 -2.6373 25.3359 SET_CAR_HEADING copcar3 186.0 SET_CAR_FORWARD_SPEED copcar3 17.0 IF NOT IS_CHAR_DEAD copcar3_cop1 GIVE_WEAPON_TO_CHAR copcar3_cop1 WEAPONTYPE_PISTOL 9999 OPEN_SEQUENCE_TASK sequence_task TASK_CAR_DRIVE_TO_COORD -1 copcar3 2298.0938 -10.0818 25.3285 17.0 MODE_ACCURATE 0 DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_TEMP_ACTION -1 copcar3 TEMPACT_HANDBRAKESTRAIGHT 1000 TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 2303.1191 -13.7964 25.4766 PEDMOVE_RUN 10000 //GUY ON BIKE BY CAR GOTO AND DUCK AND AIM TASK_AIM_GUN_AT_COORD -1 2304.1372 -16.5910 27.2760 5000 CLOSE_SEQUENCE_TASK sequence_task PERFORM_SEQUENCE_TASK copcar3_cop1 sequence_task CLEAR_SEQUENCE_TASK sequence_task ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD copcar4 SET_PLAYBACK_SPEED copcar4 1.0 ENDIF SET_FIXED_CAMERA_POSITION 2288.5771 -15.1784 27.8832 0.0 0.0 0.0 //CUT OF COPS GETTING OUT OF THIR VEHICLES POINT_CAMERA_AT_POINT 2289.5530 -15.2742 27.6869 JUMP_CUT mission_timer = game_timer + 6000 ++ mission_flag ENDIF ENDIF IF mission_flag = 24 AND play_audio = 0 IF mission_timer < game_timer DO_FADE 500 FADE_OUT REQUEST_MODEL ENFORCER ++ mission_flag ENDIF ENDIF IF mission_flag = 25 IF NOT GET_FADING_STATUS AND HAS_MODEL_LOADED ENFORCER SWITCH_ROADS_OFF 2344.5178 36.1468 36.0359 2269.7183 -44.3760 23.0569 REMOVE_ANIMATION MISC REQUEST_ANIMATION GANGS LVAR_INT alley_copcar1 CREATE_CAR ENFORCER 2302.1809 6.6 25.4766 alley_copcar1 SET_CAR_HEADING alley_copcar1 90.0 FREEZE_CAR_POSITION alley_copcar1 TRUE LVAR_INT alley_copcar2 CREATE_CAR ENFORCER 2337.9 23.4 25.4766 alley_copcar2 SET_CAR_HEADING alley_copcar2 270.0 FREEZE_CAR_POSITION alley_copcar2 TRUE LVAR_INT atm_flag[4] LVAR_INT c c = 0 WHILE c < 3 atm_flag[c] = 0 LVAR_INT atm_blip[4] IF DOES_OBJECT_EXIST atm[c] ADD_BLIP_FOR_OBJECT atm[c] atm_blip[c] MAKE_OBJECT_TARGETTABLE atm_static[c] TRUE SET_OBJECT_HEALTH atm_static[c] 1000 ENDIF ++ c ENDWHILE IF NOT IS_CHAR_DEAD c2_fleeing_ped MARK_CHAR_AS_NO_LONGER_NEEDED c2_fleeing_ped ENDIF // SWITCH_STREAMING ON SET_PLAYER_CONTROL player1 ON HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT // ADD_CONTINUOUS_SOUND 2320.0427 -8.5501 27.2047 SOUND_BANK_ALARM_LOOP bank_alarm DO_FADE 500 FADE_IN IF NOT IS_CHAR_DEAD copcar1_cop1 // SET_CHAR_RELATIONSHIP copcar1_cop1 ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_PLAYER1 DELETE_CHAR copcar1_cop1 ENDIF IF NOT IS_CHAR_DEAD copcar1_cop2 // SET_CHAR_RELATIONSHIP copcar1_cop2 ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_PLAYER1 DELETE_CHAR copcar1_cop2 ENDIF IF NOT IS_CHAR_DEAD copcar2_cop1 // SET_CHAR_RELATIONSHIP copcar2_cop1 ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_PLAYER1 DELETE_CHAR copcar2_cop1 ENDIF IF NOT IS_CHAR_DEAD copcar3_cop1 // SET_CHAR_RELATIONSHIP copcar3_cop1 ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_PLAYER1 DELETE_CHAR copcar3_cop1 ENDIF DELETE_CAR copcar1 DELETE_CAR copcar2 DELETE_CAR copcar3 DELETE_CAR copcar4 SET_CURRENT_CHAR_WEAPON catalina WEAPONTYPE_SHOTGUN SET_CHAR_COORDINATES catalina 2312.2083 -1.9564 25.7422 SET_CHAR_HEADING catalina 199.0 ++ mission_flag ELSE REQUEST_MODEL ENFORCER ENDIF ENDIF IF mission_flag = 26 IF NOT GET_FADING_STATUS AND audio_flag = 1 AND HAS_ANIMATION_LOADED GANGS // PRINT_NOW CAT2_10 5000 1 //I need you to help me smash the ATMs to get the last of the cash. play_audio = 16 play_audio_for = 3 IF NOT IS_CHAR_DEAD catalina TASK_PLAY_ANIM catalina prtial_gngtlkB GANGS 4.0 FALSE FALSE FALSE FALSE 0 ENDIF //MAKE CATALINA COLLECT CASH TOO // set_object_collision_damage_effect atm[0] true // set_object_collision_damage_effect atm[1] true // set_object_collision_damage_effect atm[2] true set_object_collision_damage_effect atm_static[0] FALSE set_object_collision_damage_effect atm_static[1] TRUE set_object_collision_damage_effect atm_static[2] TRUE // set_object_collision_damage_effect atm[3] true ++ mission_flag ENDIF ENDIF IF mission_flag = 27 LVAR_INT cat_task_progress GET_SCRIPT_TASK_STATUS catalina TASK_PLAY_ANIM cat_task_progress IF cat_task_progress = FINISHED_TASK IF HAS_ANIMATION_LOADED gangs REMOVE_ANIMATION gangs ENDIF ENDIF c = 0 WHILE c < 3 IF DOES_OBJECT_EXIST atm[c] IF atm_flag[c] = 0 GET_OBJECT_HEALTH atm_static[c] temp_int // IF c = 0 // VAR_INT thisone // VIEW_INTEGER_VARIABLE thisone thisone // thisone = temp_int // ENDIF GET_OBJECT_COORDINATES atm[c] x y z LVAR_FLOAT bx1 by1 bz1 bx2 by2 bz2 bx1 = x - 1.0 bx2 = x + 1.0 by1 = y - 1.0 by2 = y + 1.0 bz1 = z - 1.0 bz2 = z + 1.0 IF IS_EXPLOSION_IN_AREA -1 bx1 by1 bz1 bx2 by2 bz2 SET_OBJECT_HEALTH broken_atm[c] 0 temp_int = 0 ENDIF IF temp_int < 500 GET_OBJECT_HEADING atm[c] h BREAK_OBJECT atm[c] TRUE LVAR_INT broken_atm[4] SET_OBJECT_COORDINATES broken_atm[c] x y z SET_OBJECT_VISIBLE broken_atm[c] TRUE SET_OBJECT_HEADING broken_atm[c] h SET_OBJECT_COLLISION broken_atm[c] FALSE SET_OBJECT_HEALTH broken_atm[c] 150 ++ atm_flag[c] ENDIF ENDIF ENDIF IF DOES_OBJECT_EXIST broken_atm[c] IF atm_flag[c] = 1 GET_OBJECT_HEALTH atm_static[c] temp_int IF temp_int < 1 REMOVE_BLIP atm_blip[c] DELETE_OBJECT atm_static[c] IF c = 0 CREATE_OBJECT_NO_OFFSET KMB_ATM3 2310.3669 -17.0 26.414 atm_static[0] set_object_collision_damage_effect atm_static[0] FALSE SET_OBJECT_HEADING atm_static[0] 180.0 ENDIF IF c = 1 CREATE_OBJECT_NO_OFFSET KMB_ATM3 2313.6890 -17.0 26.414 atm_static[1] set_object_collision_damage_effect atm_static[1] FALSE SET_OBJECT_HEADING atm_static[1] 180.0 ENDIF IF c = 2 CREATE_OBJECT_NO_OFFSET KMB_ATM3 2313.3184 -0.1206 26.414 atm_static[2] set_object_collision_damage_effect atm_static[2] FALSE ENDIF MARK_OBJECT_AS_NO_LONGER_NEEDED atm[c] GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS broken_atm[c] 0.0 -1.0 0.0 x y z MAKE_OBJECT_TARGETTABLE atm_static[c] FALSE SET_OBJECT_VISIBLE atm_static[c] TRUE BREAK_OBJECT broken_atm[c] FALSE LVAR_INT atm_cash[4] //CREATE_PICKUP MONEY PICKUP_ONCE x y z atm_cash[c] CREATE_MONEY_PICKUP X Y Z 0 TRUE atm_cash[c] //CREATE_MONEY_PICKUP x y z 10000 atm_cash[c] ADD_BLIP_FOR_PICKUP atm_cash[c] atm_blip[c] ++ atm_flag[c] ENDIF ENDIF ENDIF IF atm_flag[c] = 2 IF HAS_PICKUP_BEEN_COLLECTED atm_cash[c] MARK_OBJECT_AS_NO_LONGER_NEEDED broken_atm[c] // ADD_SCORE player1 10000 REMOVE_BLIP atm_blip[c] ++ atm_flag[c] ENDIF ENDIF ++ c ENDWHILE IF atm_flag[0] = 3 AND atm_flag[1] = 3 AND atm_flag[2] = 3 // set_object_collision_damage_effect door[0] true MAKE_OBJECT_TARGETTABLE pc_door[1] TRUE set_object_collision_damage_effect pc_door[1] true // set_object_collision_damage_effect door[2] true // set_object_collision_damage_effect door[3] true ++ mission_flag IF NOT IS_CHAR_DEAD copcar1_cop1 SET_CHAR_RELATIONSHIP copcar1_cop1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 ENDIF IF NOT IS_CHAR_DEAD copcar1_cop2 SET_CHAR_RELATIONSHIP copcar1_cop2 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 ENDIF IF NOT IS_CHAR_DEAD copcar2_cop1 SET_CHAR_RELATIONSHIP copcar2_cop1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 ENDIF IF NOT IS_CHAR_DEAD copcar3_cop1 SET_CHAR_RELATIONSHIP copcar3_cop1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 ENDIF // DELETE_CHAR alley_cop1 // DELETE_CHAR alley_cop2 SWITCH_ROADS_ON 2344.5178 36.1468 36.0359 2269.7183 -44.3760 23.0569 SET_CHAR_DECISION_MAKER catalina cat_own_dec //newline ENDIF ENDIF IF mission_flag = 28 MARK_MODEL_AS_NO_LONGER_NEEDED KMB_ATM1 MARK_MODEL_AS_NO_LONGER_NEEDED KMB_ATM2 MARK_MODEL_AS_NO_LONGER_NEEDED KMB_ATM3 MARK_MODEL_AS_NO_LONGER_NEEDED MTSAFE MARK_MODEL_AS_NO_LONGER_NEEDED CR_DOOR_01 MARK_MODEL_AS_NO_LONGER_NEEDED CR_DOOR_03 mission_flag = 29 ENDIF IF mission_flag = 31 IF HAS_CAR_RECORDING_BEEN_LOADED 123 AND HAS_CAR_RECORDING_BEEN_LOADED 124 IF catalina_advance_flag = 10 IF NOT IS_CHAR_DEAD scplayer IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2315.5576 70.7181 31.4998 11.4 8.4 6.0 0//LOCATE FOR PLAYER AND CATALINA TO TRIGGER COPS ARRIVING ON BIKES AT END OF ALLEY CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE cat_own_dec EVENT_ACQUAINTANCE_PED_HATE //TRIGGER CUT SCENE OF BIKES ARRIVING SET_PLAYER_CONTROL player1 OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE CLEAR_AREA 2321.2180 69.1035 26.7314 25.0 TRUE SET_FIXED_CAMERA_POSITION 2324.8989 66.4572 25.8911 0.0 0.0 0.0 //CAMERA CUT OF THE COPBIKES ARRIVING AT THE END OF THE ALLEY POINT_CAMERA_AT_POINT 2324.1917 67.1570 25.9911 JUMP_CUT DELETE_CAR copcar2 DELETE_CAR copcar3 DELETE_CHAR copcar2_cop1 DELETE_CHAR copcar3_cop1 IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2319.7930 61.6571 25.4769 ELSE SET_CHAR_COORDINATES scplayer 2319.7930 61.6571 25.4769 ENDIF SET_CHAR_HEADING scplayer 5.0 REMOVE_CHAR_FROM_GROUP catalina IF IS_CHAR_IN_ANY_CAR catalina WARP_CHAR_FROM_CAR_TO_COORD catalina 2318.2424 61.3145 25.4759 ELSE SET_CHAR_COORDINATES catalina 2318.2424 61.3145 25.4759 ENDIF SET_CHAR_HEADING catalina 350.0 CREATE_CAR COPBIKE 2287.1562 61.9821 25.4766 copcar2 SET_CAR_HEADING copcar2 322.7361 CREATE_CHAR_INSIDE_CAR copcar2 PEDTYPE_CIVMALE CSHER copcar2_cop1 SET_CHAR_DECISION_MAKER copcar2_cop1 bank_peds_decision_maker START_PLAYBACK_RECORDED_CAR copcar2 123 SET_CAR_PROOFS copcar2 TRUE TRUE TRUE TRUE TRUE CREATE_CAR COPBIKE 2289.6289 58.0551 25.3359 copcar3 SET_CAR_HEADING copcar3 330.5475 SET_CAR_PROOFS copcar3 TRUE TRUE TRUE TRUE TRUE CREATE_CHAR_INSIDE_CAR copcar3 PEDTYPE_CIVMALE CSHER copcar3_cop1 SET_CHAR_DECISION_MAKER copcar3_cop1 bank_peds_decision_maker START_PLAYBACK_RECORDED_CAR copcar3 124 ++ mission_flag ENDIF ENDIF ENDIF ELSE REQUEST_CAR_RECORDING 123 REQUEST_CAR_RECORDING 124 ENDIF ENDIF IF mission_flag = 32 IF NOT IS_CAR_DEAD copcar2 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR copcar2 IF NOT IS_CHAR_DEAD copcar2_cop1 SET_CAR_ENGINE_ON copcar2 FALSE TASK_LEAVE_ANY_CAR copcar2_cop1 FREEZE_CAR_POSITION copcar2 TRUE ++ mission_flag ENDIF ENDIF ENDIF ENDIF IF mission_flag = 33 AND play_audio = 0 IF NOT IS_CAR_DEAD copcar3 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR copcar3 IF NOT IS_CHAR_DEAD copcar3_cop1 TASK_LEAVE_ANY_CAR copcar3_cop1 SET_CAR_ENGINE_ON copcar3 FALSE FREEZE_CAR_POSITION copcar3 TRUE DO_FADE 500 FADE_OUT ++ mission_flag ENDIF ENDIF ENDIF ENDIF IF mission_flag = 34 IF NOT GET_FADING_STATUS play_audio = 29 SET_PLAYER_CONTROL player1 ON HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 500 FADE_IN ++ mission_flag ENDIF ENDIF IF mission_flag = 35 IF NOT GET_FADING_STATUS IF NOT IS_CHAR_DEAD copcar2_cop1 GIVE_WEAPON_TO_CHAR copcar2_cop1 WEAPONTYPE_PISTOL 9999 TASK_KILL_CHAR_ON_FOOT copcar2_cop1 scplayer SET_CHAR_ONLY_DAMAGED_BY_PLAYER copcar2_cop1 TRUE ENDIF IF NOT IS_CHAR_DEAD copcar3_cop1 GIVE_WEAPON_TO_CHAR copcar3_cop1 WEAPONTYPE_SHOTGUN 9999 TASK_KILL_CHAR_ON_FOOT copcar3_cop1 scplayer SET_CHAR_ONLY_DAMAGED_BY_PLAYER copcar3_cop1 TRUE ENDIF IF NOT IS_CHAR_DEAD catalina TASK_SHOOT_AT_COORD catalina 2322.1826 71.2342 26.5490 -2 ENDIF // PRINT_NOW CAT2_13 5000 1// Kill the cops on the bikes or somesuch ++ mission_flag ENDIF ENDIF IF mission_flag = 36 AND play_audio = 0 IF NOT GET_FADING_STATUS IF IS_CHAR_DEAD copcar2_cop1 AND IS_CHAR_DEAD copcar3_cop1 // IF NOT IS_CAR_DEAD copcar2 // GET_CAR_COORDINATES copcar2 x y z // GET_CAR_HEADING copcar2 h // ENDIF // SAVE_NEWLINE_TO_DEBUG_FILE // SAVE_FLOAT_TO_DEBUG_FILE x // SAVE_FLOAT_TO_DEBUG_FILE y // SAVE_FLOAT_TO_DEBUG_FILE z // SAVE_FLOAT_TO_DEBUG_FILE h // SAVE_NEWLINE_TO_DEBUG_FILE // IF NOT IS_CAR_DEAD copcar3 // GET_CAR_COORDINATES copcar3 x y z // GET_CAR_HEADING copcar3 h // ENDIF // SAVE_NEWLINE_TO_DEBUG_FILE // SAVE_FLOAT_TO_DEBUG_FILE x // SAVE_FLOAT_TO_DEBUG_FILE y // SAVE_FLOAT_TO_DEBUG_FILE z // SAVE_FLOAT_TO_DEBUG_FILE h // SAVE_NEWLINE_TO_DEBUG_FILE // PRINT_NOW CAT2_15 5000 1//Lets take their bikes. mission_timer = game_timer + 750 ++ mission_flag ENDIF ENDIF ENDIF IF mission_flag = 37 IF mission_timer < game_timer // ELSE DO_FADE 500 FADE_OUT ++ mission_flag ENDIF ENDIF IF mission_flag < 38 // IF NOT LOCATE_CHAR_ANY_MEANS_2D SCPLAYER 2318.7539 33.2110 22.0 57.0 0 // IF go_get_catalina = 0 // go_get_catalina = 1 // PRINT CAT2_14 5000 1//You have left catalina behind, go back and get her. // ENDIF // ELSE // IF go_get_catalina = 1 // // ENDIF // ENDIF ENDIF somewhere_else: IF mission_flag = 38 IF NOT GET_FADING_STATUS SET_PLAYER_CONTROL player1 OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE CLEAR_AREA 2321.2180 69.1035 26.7314 25.0 TRUE SET_FIXED_CAMERA_POSITION 2325.2913 70.4759 26.8236 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2324.3533 70.7834 26.6641 JUMP_CUT CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY catalina IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2322.0752 69.6739 25.4784 ELSE SET_CHAR_COORDINATES scplayer 2322.0752 69.6739 25.4784 ENDIF SET_CHAR_HEADING scplayer 325.1885 REMOVE_CHAR_FROM_GROUP catalina IF IS_CHAR_IN_ANY_CAR catalina WARP_CHAR_FROM_CAR_TO_COORD catalina 2321.6304 71.6478 25.4724 ELSE SET_CHAR_COORDINATES catalina 2321.6304 71.6478 25.4724 ENDIF SET_CHAR_HEADING catalina 295.8968 DELETE_CAR copcar2 DELETE_CAR copcar3 DELETE_CHAR copcar2_cop1 DELETE_CHAR copcar3_cop1 IF NOT IS_CAR_DEAD alley_copcar1 MARK_CAR_AS_NO_LONGER_NEEDED alley_copcar1 ENDIF IF NOT IS_CAR_DEAD alley_copcar2 MARK_CAR_AS_NO_LONGER_NEEDED alley_copcar2 ENDIF IF NOT IS_CAR_DEAD copcar1 MARK_CAR_AS_NO_LONGER_NEEDED copcar1 ENDIF IF NOT IS_CAR_DEAD copcar2 MARK_CAR_AS_NO_LONGER_NEEDED copcar2 ENDIF CLEAR_AREA 2320.6343 79.9329 27.9897 100.0 TRUE CREATE_CAR COPBIKE 2322.8628 73.0477 26.0378 copcar2 SET_CAR_HEADING copcar2 34.6853 CREATE_CAR COPBIKE 2323.1655 70.1374 26.0405 copcar3 SET_CAR_HEADING copcar3 345.7562 OPEN_SEQUENCE_TASK sequence_task TASK_STAND_STILL -1 750 TASK_ENTER_CAR_AS_DRIVER -1 copcar2 -2 CLOSE_SEQUENCE_TASK sequence_task PERFORM_SEQUENCE_TASK catalina sequence_task CLEAR_SEQUENCE_TASK sequence_task OPEN_SEQUENCE_TASK sequence_task TASK_STAND_STILL -1 500 TASK_ENTER_CAR_AS_DRIVER -1 copcar3 -2 CLOSE_SEQUENCE_TASK sequence_task PERFORM_SEQUENCE_TASK scplayer sequence_task CLEAR_SEQUENCE_TASK sequence_task MARK_OBJECT_AS_NO_LONGER_NEEDED broken_atm[0] MARK_OBJECT_AS_NO_LONGER_NEEDED broken_atm[1] MARK_OBJECT_AS_NO_LONGER_NEEDED broken_atm[2] MARK_OBJECT_AS_NO_LONGER_NEEDED atm[0] MARK_OBJECT_AS_NO_LONGER_NEEDED atm[1] MARK_OBJECT_AS_NO_LONGER_NEEDED atm[2] MARK_OBJECT_AS_NO_LONGER_NEEDED atm[3] MARK_OBJECT_AS_NO_LONGER_NEEDED atm_static[0] MARK_OBJECT_AS_NO_LONGER_NEEDED atm_static[1] MARK_OBJECT_AS_NO_LONGER_NEEDED atm_static[2] MARK_OBJECT_AS_NO_LONGER_NEEDED safe_col MARK_CHAR_AS_NO_LONGER_NEEDED worker1 MARK_CHAR_AS_NO_LONGER_NEEDED worker2 MARK_CHAR_AS_NO_LONGER_NEEDED worker3 MARK_CHAR_AS_NO_LONGER_NEEDED security1 MARK_CHAR_AS_NO_LONGER_NEEDED c2_alley_cop[0] MARK_CHAR_AS_NO_LONGER_NEEDED c2_alley_cop[1] MARK_CHAR_AS_NO_LONGER_NEEDED c2_alley_cop[2] MARK_CHAR_AS_NO_LONGER_NEEDED c2_alley_cop[3] MARK_CHAR_AS_NO_LONGER_NEEDED c2_alley_cop[4] MARK_CHAR_AS_NO_LONGER_NEEDED c2_alley_cop[5] MARK_CHAR_AS_NO_LONGER_NEEDED c2_alley_cop[6] MARK_CHAR_AS_NO_LONGER_NEEDED c2_alley_cop[7] MARK_CHAR_AS_NO_LONGER_NEEDED c2_alley_cop[8] DO_FADE 500 FADE_IN mission_timer = game_timer + 2500 ++ mission_flag play_audio = 30 play_audio_for = 2 play_delay = TIMERA + 400 ENDIF ENDIF IF mission_flag = 39 IF NOT IS_CAR_DEAD copcar2 IF IS_CHAR_SITTING_IN_CAR catalina copcar2 IF mission_timer < game_timer AND play_audio = 0 DO_FADE 500 FADE_OUT ++ mission_flag ENDIF ENDIF ELSE DO_FADE 500 FADE_OUT ++ mission_flag ENDIF ENDIF IF mission_flag = 40 IF HAS_CAR_RECORDING_BEEN_LOADED 156 AND HAS_CAR_RECORDING_BEEN_LOADED 157 AND HAS_CAR_RECORDING_BEEN_LOADED 158 AND HAS_CAR_RECORDING_BEEN_LOADED 159 IF HAS_CAR_RECORDING_BEEN_LOADED 160 AND HAS_CAR_RECORDING_BEEN_LOADED 161 IF NOT GET_FADING_STATUS // IF NOT IS_CAR_DEAD copcar2 // START_PLAYBACK_RECORDED_CAR copcar2 157 // SET_PLAYBACK_SPEED copcar2 0.0 // ENDIF SET_PLAYER_CONTROL player1 ON HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT LVAR_INT trigger_car_recc ambush_cop_car ambush_cop_car2 ambush_cop_car3 recording_going_on playback_cat_drive LVAR_INT cat_fall_off_time cat_ambush_seq ambush_cop[8] cop_i leave_time1 leave_time2 leave_time3 do_cop_task catalina_pickup_blip LVAR_INT players_car cops_shoot_time cat_entering_players_car chase_cop_bike1 chase_cop_bike2 LVAR_FLOAT ambush_point_x[6] ambush_point_y[6] ambush_point_z[6] //SET_CHAR_COORDINATES scplayer 2319.5288 61.1502 25.4769 CREATE_CAR COPCARRU 1307.0953 280.2934 18.4062 ambush_cop_car CREATE_CAR COPCARRU 1307.0953 290.2934 18.4062 ambush_cop_car2 CREATE_CAR COPCARRU 1307.0953 300.2934 18.4062 ambush_cop_car3 FREEZE_CAR_POSITION ambush_cop_car TRUE FREEZE_CAR_POSITION ambush_cop_car2 TRUE FREEZE_CAR_POSITION ambush_cop_car3 TRUE CREATE_CAR COPBIKE 2346.5232 62.9803 25.3359 chase_cop_bike1 CREATE_CAR COPBIKE 2346.6821 45.9405 25.3359 chase_cop_bike2 CREATE_CHAR_INSIDE_CAR ambush_cop_car PEDTYPE_MISSION1 CSHER ambush_cop[0] CREATE_CHAR_AS_PASSENGER ambush_cop_car PEDTYPE_MISSION1 CSHER 0 ambush_cop[1] CREATE_CHAR_INSIDE_CAR ambush_cop_car2 PEDTYPE_MISSION1 CSHER ambush_cop[2] CREATE_CHAR_AS_PASSENGER ambush_cop_car2 PEDTYPE_MISSION1 CSHER 0 ambush_cop[3] CREATE_CHAR_INSIDE_CAR ambush_cop_car3 PEDTYPE_MISSION1 CSHER ambush_cop[4] CREATE_CHAR_AS_PASSENGER ambush_cop_car3 PEDTYPE_MISSION1 CSHER 0 ambush_cop[5] CREATE_CHAR_INSIDE_CAR chase_cop_bike1 PEDTYPE_MISSION2 CSHER ambush_cop[6] CREATE_CHAR_INSIDE_CAR chase_cop_bike2 PEDTYPE_MISSION2 CSHER ambush_cop[7] SET_CHAR_RELATIONSHIP ambush_cop[6] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP ambush_cop[7] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 LVAR_INT ambush_dec COPY_CHAR_DECISION_MAKER DM_PED_RANDOM_TOUGH ambush_dec COPY_CHAR_DECISION_MAKER DM_PED_EMPTY empty_dec CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE ambush_dec EVENT_SHOT_FIRED CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE ambush_dec EVENT_SHOT_FIRED_WHIZZED_BY CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE ambush_dec EVENT_DAMAGE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE ambush_dec EVENT_ACQUAINTANCE_PED_HATE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE ambush_dec EVENT_GUN_AIMED_AT CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE ambush_dec EVENT_DEAD_PED CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE ambush_dec EVENT_VEHICLE_DAMAGE_WEAPON ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE ambush_dec EVENT_SHOT_FIRED TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 100.0 1 1 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE ambush_dec EVENT_ACQUAINTANCE_PED_HATE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 1 1 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE ambush_dec EVENT_DAMAGE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 75.0 0.0 75.0 1 1 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE ambush_dec EVENT_DAMAGE TASK_SIMPLE_DUCK 0.0 25.0 0.0 25.0 1 1 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE ambush_dec EVENT_GUN_AIMED_AT TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 1 1 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE ambush_dec EVENT_ACQUAINTANCE_PED_HATE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 1 1 SET_CHAR_DECISION_MAKER ambush_cop[0] empty_dec SET_CHAR_DECISION_MAKER ambush_cop[1] empty_dec SET_CHAR_DECISION_MAKER ambush_cop[2] empty_dec SET_CHAR_DECISION_MAKER ambush_cop[3] empty_dec SET_CHAR_DECISION_MAKER ambush_cop[4] empty_dec SET_CHAR_DECISION_MAKER ambush_cop[5] empty_dec SET_CHAR_DECISION_MAKER ambush_cop[6] empty_dec SET_CHAR_DECISION_MAKER ambush_cop[7] empty_dec SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE ambush_cop[6] KNOCKOFFBIKE_ALWAYSNORMAL SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE ambush_cop[7] KNOCKOFFBIKE_ALWAYSNORMAL GIVE_WEAPON_TO_CHAR ambush_cop[0] WEAPONTYPE_PISTOL 9999 GIVE_WEAPON_TO_CHAR ambush_cop[1] WEAPONTYPE_PISTOL 9999 GIVE_WEAPON_TO_CHAR ambush_cop[2] WEAPONTYPE_PISTOL 9999 GIVE_WEAPON_TO_CHAR ambush_cop[3] WEAPONTYPE_PISTOL 9999 GIVE_WEAPON_TO_CHAR ambush_cop[4] WEAPONTYPE_PISTOL 9999 GIVE_WEAPON_TO_CHAR ambush_cop[5] WEAPONTYPE_PISTOL 9999 GIVE_WEAPON_TO_CHAR ambush_cop[6] WEAPONTYPE_PISTOL 9999 GIVE_WEAPON_TO_CHAR ambush_cop[7] WEAPONTYPE_PISTOL 9999 IF NOT IS_CHAR_DEAD catalina GIVE_WEAPON_TO_CHAR catalina WEAPONTYPE_SHOTGUN 9999 ENDIF ambush_point_x[0] = 1290.0247 ambush_point_x[1] = 1294.2424 ambush_point_x[2] = 1282.6812 ambush_point_x[3] = 1285.5846 ambush_point_x[4] = 1289.3892 ambush_point_x[5] = 1285.5931 ambush_point_y[0] = 252.8313 ambush_point_y[1] = 249.3508 ambush_point_y[2] = 250.9628 ambush_point_y[3] = 253.8959 ambush_point_y[4] = 241.5564 ambush_point_y[5] = 240.6378 ambush_point_z[0] = 18.4062 ambush_point_z[1] = 18.4062 ambush_point_z[2] = 18.4062 ambush_point_z[3] = 18.4062 ambush_point_z[4] = 18.4062 ambush_point_z[5] = 18.4062 trigger_car_recc = 0 recording_going_on = 0 playback_cat_drive = 0 DO_FADE 500 FADE_IN ++ mission_flag ENDIF ELSE REQUEST_CAR_RECORDING 160 REQUEST_CAR_RECORDING 161 ENDIF ELSE REQUEST_CAR_RECORDING 156 REQUEST_CAR_RECORDING 157 REQUEST_CAR_RECORDING 158 REQUEST_CAR_RECORDING 159 ENDIF ENDIF IF mission_flag = 41 IF NOT GET_FADING_STATUS catalina_flag = 8 SET_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_COP ++ mission_flag ENDIF ENDIF //IF catalina_flag = 6 // IF NOT IS_CAR_DEAD catalina_pcj600 //WARNING!!! (will break if player gets on bike or it gets destroyed) // IF IS_CHAR_SITTING_IN_CAR catalina catalina_pcj600 // START_PLAYBACK_RECORDED_CAR catalina_pcj600 115 // ++ catalina_flag // ENDIF // ENDIF //ENDIF //IF NOT IS_CAR_DEAD copcar2 // IF NOT IS_CAR_DEAD copcar3 // IF mission_flag = 31 // mission_flag = 28 // ENDIF // IF mission_flag = 30 // SET_CAR_COORDINATES copcar2 2287.1562 61.9821 25.4766 // SET_CAR_HEADING copcar2 322.7361 // SET_CAR_COORDINATES copcar3 2289.6289 58.0551 25.3359 // SET_CAR_HEADING copcar3 330.5475 // //CLEAR_CHAR_TASKS_IMMEDIATELY scplayer // //WARP_CHAR_INTO_CAR scplayer copcar3//copcar2 // ++ mission_flag // ENDIF // IF mission_flag = 29 // IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR copcar2 // IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR copcar3 // //STOP_RECORDING_CAR copcar2 // STOP_PLAYBACK_RECORDED_CAR copcar2 // //STOP_RECORDING_CAR copcar3 // STOP_PLAYBACK_RECORDED_CAR copcar3 // ++ mission_flag // ENDIF // ENDIF // ENDIF // IF mission_flag = 28 // //START_RECORDING_CAR copcar2 123 // START_PLAYBACK_RECORDED_CAR copcar2 123 // //START_RECORDING_CAR copcar3 124 // START_PLAYBACK_RECORDED_CAR copcar3 124 // ++ mission_flag // ENDIF // ENDIF //ENDIF //OUTSIDE BANKS BACK DOOR LOCATE //2317.4285 2.9314 26.7164 3.0 2.0 1.2 //BANK END OF BLOCK AREA 1 //2318.7502 -6.5675 31.3712 15.0 11.2 5.8 //MIDDLE AREA 2 & 3 //2318.7502 15.8125 31.3712 15.0 11.2 5.8 //BIKE END OF ALLEY AREA 4 //2318.7502 54.3324 31.3712 15.0 11.2 5.8 //ROOF OF PIZZA SHOP //2328.3840 2.0130 35.4040 5.6 7.6 5.4 //ROOF OF BANK //2313.1731 -6.9870 35.4040 9.2 12.0 5.0 //LAZER SHOP ROOF //2310.1777 14.5224 31.3712 6.6 7.2 2.8 //DRY CLEANER ROOF //2309.4468 32.0223 31.3712 5.2 10.0 2.8 //FURNITURE SHOP //2308.6724 56.5422 31.9712 5.6 12.8 3.0 //BACK ROOF OF RECORD SHOP //2311.6362 74.2422 30.7711 6.0 2.4 2.2 //LOCATE FOR PLAYER AND CATALINA TO TRIGGER COPS ARRIVING ON BIKES AT END OF ALLEY //2315.5576 70.7181 31.4998 11.4 8.4 6.0 //END OF PED NODES ON BANK ROOF //2317.0110 -2.2289 31.5313 //PLAYERS Z VALUE > IF HES ON THE ROOFS. //28.65 // CATALINA STUFF /////////////////////////// IF mission_flag > 9 IF catalina_flag = 0 IF mission_timer < game_timer // TASK_GO_STRAIGHT_TO_COORD catalina 2314.8865 -16.2812 25.7574 PEDMOVE_WALK 10000//CATALINA GOTO TO STEAL MONEY ++ catalina_flag ENDIF ENDIF ENDIF IF catalina_flag = 1 GET_SCRIPT_TASK_STATUS catalina TASK_GO_STRAIGHT_TO_COORD task_status IF task_status = FINISHED_TASK // TASK_ACHIEVE_HEADING catalina 173.6441 ++ catalina_flag ENDIF ENDIF IF catalina_flag = 2 GET_SCRIPT_TASK_STATUS catalina TASK_ACHIEVE_HEADING task_status IF task_status = FINISHED_TASK // TASK_PLAY_ANIM catalina FUCKU PED 4.0 TRUE FALSE FALSE FALSE 120000 LVAR_INT catalina_timer catalina_timer = game_timer + 20000 ++ catalina_flag ENDIF ENDIF IF catalina_flag = 3 LVAR_INT cat_money_collected cat_money_collected += 15 IF catalina_timer < game_timer OR mission_flag > 10 // OPEN_SEQUENCE_TASK sequence_task // TASK_STAND_STILL -1 2000 // TASK_STAND_STILL -1 2000 // TASK_GOTO_CHAR -1 scplayer 5000 3.0 // TASK_LOOK_AT_CHAR -1 scplayer 2500 // CLOSE_SEQUENCE_TASK sequence_task // PERFORM_SEQUENCE_TASK catalina sequence_task // CLEAR_SEQUENCE_TASK sequence_task IF mission_flag = 10 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 2312.0940 -9.6433 28.6790 SOUND_CAT2_SECURITY_ALARM GOSUB alarm_off mission_flag = 11 ENDIF ++ catalina_flag ENDIF ENDIF IF catalina_flag = 4 IF mission_flag > 27 LVAR_INT cat_shooting_door_flag IF NOT IS_CHAR_DEAD catalina IF cat_shooting_door_flag = 0 AND play_audio = 0 // CATALINA SHOOTS THE BACK DOOR // PRINT_NOW CAT2_11 4000 1 //Follow me. play_audio = 19 play_audio_for = 2 ADD_BLIP_FOR_CHAR catalina catalina_blip SET_BLIP_AS_FRIENDLY catalina_blip TRUE TASK_GO_STRAIGHT_TO_COORD catalina 2315.3909 -1.6768 25.7500 PEDMOVE_RUN -2//INSIDE BACK DOOR cat_shooting_door_flag = 1 ENDIF IF cat_shooting_door_flag = 1 GET_SCRIPT_TASK_STATUS catalina -1 task_status IF task_status = FINISHED_TASK IF NOT HAS_OBJECT_BEEN_DAMAGED pc_door[1] cat_shooting_door_flag = 2 TASK_SHOOT_AT_COORD catalina 2315.4749 1.0941 26.8796 1000//SHOOT THROUGH BACK DOOR // REPORT_MISSION_AUDIO_EVENT_AT_POSITION 2315.4749 1.0941 26.8796 SOUND_CAT2_SECURITY_ALARM LVAR_INT shoot_count shoot_count ++ ELSE cat_shooting_door_flag = 2 ENDIF ENDIF ENDIF IF cat_shooting_door_flag = 2 GET_SCRIPT_TASK_STATUS catalina TASK_SHOOT_AT_COORD task_status IF task_status = FINISHED_TASK IF HAS_OBJECT_BEEN_DAMAGED pc_door[1] OR shoot_count > 2 TASK_FOLLOW_PATH_NODES_TO_COORD catalina 2315.5095 3.1256 25.4844 PEDMOVE_RUN -2//OUTSIDE THE BACK OF THE BANK cat_shooting_door_flag = 3 ++ catalina_flag ELSE cat_shooting_door_flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF ct2_door_destroyed = 0 IF catalina_flag > 4 IF print_god_text = 0 AND play_audio = 0 PRINT CAT2_19 4000 1 print_god_text = 1 ENDIF IF HAS_OBJECT_BEEN_DAMAGED pc_door[1] // REPORT_MISSION_AUDIO_EVENT_AT_POSITION 2315.4749 1.0941 26.8796 SOUND_CAT2_WOODEN_DOOR_BREACH ct2_door_destroyed = 1 play_audio = 21 play_audio_delay = TIMERA + 2500 play_audio_for = 3 ENDIF ENDIF ENDIF IF catalina_flag = 5 // set up the escape through alley section of the mission. //The alley leading away from the bank to the point where Cat and CJ get on the cop bikes will be split in to three sections. // Each section will host three cops placed randomly from a possible six locations. So each play of the mission can be different. // For cop_initial_task..... //each location will have a specific task assigned to it, as such: // 0 = duck and shoot // 1 = toggle duck/stand and shoot // 2 = advance and shoot // 3 = roll out and shoot - uses a default locate range of 6 meters - if already shot then ped will do "toggle duck/shoot" // Need to ensure Cat can get line of sight for all of the cops. LVAR_FLOAT cop_create_x[18] cop_create_y[18] cop_create_z[18] cop_create_h[18] c2_float c2_x c2_y c2_z c2_x_offset c2_y_offset LVAR_FLOAT c2_sin c2_cos LVAR_INT cop_initial_task[18] c2_duck_time[9] // guy behind crates cop_create_x[0] = 2328.6377 cop_create_y[0] = 9.9046 cop_create_z[0] = 25.4766 cop_create_h[0] = 82.0 cop_initial_task[0] = 1 // guy behind crates (higher) cop_create_x[1] = 2328.6304 cop_create_y[1] = 12.0793 cop_create_z[1] = 26.4366 cop_create_h[1] = 102.1560 cop_initial_task[1] = 1 // cop on stairs - now moved on to roof cop_create_x[2] = 2323.5391 cop_create_y[2] = 8.1573 cop_create_z[2] = 30.1564 cop_create_h[2] = 119.8251 cop_initial_task[2] = 0 // cop behind wall cop_create_x[3] = 2313.9192 cop_create_y[3] = 5.5612 cop_create_z[3] = 25.4766 cop_create_h[3] = 179.0108 cop_initial_task[3] = 3 // cop behind crates immediately in front of player cop_create_x[4] = 2319.2803 cop_create_y[4] = 10.1457 cop_create_z[4] = 25.4766 cop_create_h[4] = 173.7026 cop_initial_task[4] = 1 // cop on tall roof cop_create_x[5] = 2322.4219 cop_create_y[5] = 14.3559 cop_create_z[5] = 33.4834 cop_create_h[5] = 131.5315 cop_initial_task[5] = 0 // cop behind wall cop_create_x[6] = 2322.5669 cop_create_y[6] = 22.3196 cop_create_z[6] = 25.4766 cop_create_h[6] = 191.9916 cop_initial_task[6] = 5 // cop behind bins cop_create_x[7] = 2317.4221 cop_create_y[7] = 31.4408 cop_create_z[7] = 25.4688 cop_create_h[7] = 170.5408 cop_initial_task[7] = 1 // cop comes down stairs cop_create_x[8] = 2323.3474 cop_create_y[8] = 32.5086 cop_create_z[8] = 30.3438 cop_create_h[8] = 167.5312 cop_initial_task[8] = 2 // crouched on roof cop_create_x[9] = 2314.0598 cop_create_y[9] = 27.4771 cop_create_z[9] = 28.4834 cop_create_h[9] = 211.9221 cop_initial_task[9] = 0 // crouched on roof cop_create_x[10] = 2314.1458 cop_create_y[10] = 32.6897 cop_create_z[10] = 30.3072 cop_create_h[10] = 218.8303 cop_initial_task[10] = 0 // crouched on roof cop_create_x[11] = 2324.3235 cop_create_y[11] = 25.9529 cop_create_z[11] = 30.4834 cop_create_h[11] = 146.7435 cop_initial_task[11] = 0 // crouched behind crates cop_create_x[12] = 2315.2354 cop_create_y[12] = 44.7149 cop_create_z[12] = 27.6529 cop_create_h[12] = 177.4772 cop_initial_task[12] = 1 // behind wall cop_create_x[13] = 2322.1423 cop_create_y[13] = 38.0272 cop_create_z[13] = 25.4698 cop_create_h[13] = 165.0420 cop_initial_task[13] = 5 // behind rubble to roll cop_create_x[14] = 2316.2810 cop_create_y[14] = 53.2450 cop_create_z[14] = 25.4745 cop_create_h[14] = 211.6924 cop_initial_task[14] = 3 // duck behind rubble cop_create_x[15] = 2316.9771 cop_create_y[15] = 60.9693 cop_create_z[15] = 26.9906 cop_create_h[15] = 217.9312 cop_initial_task[15] = 0 // on roof cop_create_x[16] = 2322.6902 cop_create_y[16] = 57.5449 cop_create_z[16] = 31.9884 cop_create_h[16] = 174.0596 cop_initial_task[16] = 0 // on roof cop_create_x[17] = 2313.3901 cop_create_y[17] = 51.5349 cop_create_z[17] = 29.4834 cop_create_h[17] = 196.6579 cop_initial_task[17] = 0 LVAR_INT c2_i c2_int c2_location_in_use[18] c2_alley_cop[9] LVAR_INT cop_type[9] cop_location_occupier[18] cop_location[9] c2_i = 0 WHILE c2_i < 9 IF c2_i < 3 GENERATE_RANDOM_INT_IN_RANGE 0 6 c2_int WHILE c2_location_in_use[c2_int] = 1 c2_int ++ IF c2_int = 6 c2_int = 0 ENDIF ENDWHILE ENDIF IF c2_i > 2 AND c2_i < 6 GENERATE_RANDOM_INT_IN_RANGE 6 12 c2_int WHILE c2_location_in_use[c2_int] = 1 c2_int ++ IF c2_int = 12 c2_int = 6 ENDIF ENDWHILE ENDIF IF c2_i > 5 AND c2_i < 9 GENERATE_RANDOM_INT_IN_RANGE 12 18 c2_int WHILE c2_location_in_use[c2_int] = 1 c2_int ++ IF c2_int = 18 c2_int = 12 ENDIF ENDWHILE ENDIF c2_location_in_use[c2_int] = 1 cop_location_occupier[c2_int] = c2_i CREATE_CHAR PEDTYPE_CIVMALE CSHER cop_create_x[c2_int] cop_create_y[c2_int] cop_create_z[c2_int] c2_alley_cop[c2_i] SET_CHAR_SHOOT_RATE c2_alley_cop[c2_i] 40 SET_CHAR_ACCURACY c2_alley_cop[c2_i] 60 cop_type[c2_i] = cop_initial_task[c2_int] cop_location[c2_i] = c2_int // SET_CHAR_DECISION_MAKER alley_cop1 bank_peds_decision_maker SET_CHAR_HEADING c2_alley_cop[c2_i] cop_create_h[c2_int] GENERATE_RANDOM_INT_IN_RANGE 0 3 c2_int LVAR_INT shotguns_given IF c2_int < 3 OR shotguns_given > 0 GIVE_WEAPON_TO_CHAR c2_alley_cop[c2_i] WEAPONTYPE_PISTOL 9999 ELSE IF cop_location[c2_i] < 6 GIVE_WEAPON_TO_CHAR c2_alley_cop[c2_i] WEAPONTYPE_PISTOL 9999 ELSE GIVE_WEAPON_TO_CHAR c2_alley_cop[c2_i] WEAPONTYPE_SHOTGUN 9999 SET_CHAR_SHOOT_RATE c2_alley_cop[c2_i] 10 shotguns_given = 1 ENDIF ENDIF SET_CHAR_RELATIONSHIP c2_alley_cop[c2_i] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP c2_alley_cop[c2_i] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_SPECIAL IF cop_initial_task[c2_int] = 0 OPEN_SEQUENCE_TASK sequence_task TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK sequence_task PERFORM_SEQUENCE_TASK c2_alley_cop[c2_i] sequence_task CLEAR_SEQUENCE_TASK sequence_task SET_CHAR_STAY_IN_SAME_PLACE c2_alley_cop[c2_i] TRUE // FREEZE_CHAR_POSITION c2_alley_cop[c2_i] TRUE ENDIF IF cop_initial_task[c2_int] = 1 OPEN_SEQUENCE_TASK sequence_task TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK sequence_task PERFORM_SEQUENCE_TASK c2_alley_cop[c2_i] sequence_task CLEAR_SEQUENCE_TASK sequence_task // FREEZE_CHAR_POSITION c2_alley_cop[c2_i] TRUE SET_CHAR_STAY_IN_SAME_PLACE c2_alley_cop[c2_i] TRUE ENDIF IF cop_initial_task[c2_int] = 2 OPEN_SEQUENCE_TASK sequence_task TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK sequence_task PERFORM_SEQUENCE_TASK c2_alley_cop[c2_i] sequence_task CLEAR_SEQUENCE_TASK sequence_task ENDIF IF cop_initial_task[c2_int] = 3 OPEN_SEQUENCE_TASK sequence_task TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK sequence_task PERFORM_SEQUENCE_TASK c2_alley_cop[c2_i] sequence_task CLEAR_SEQUENCE_TASK sequence_task ENDIF IF cop_initial_task[c2_int] = 5 OPEN_SEQUENCE_TASK sequence_task TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK sequence_task PERFORM_SEQUENCE_TASK c2_alley_cop[c2_i] sequence_task CLEAR_SEQUENCE_TASK sequence_task ENDIF c2_i ++ ENDWHILE c2_catalina_target = 99 force_cat_advance_time = TIMERA + 30000 catalina_flag = 6 // VIEW_INTEGER_VARIABLE cop_type[0] cop_type[0] // VIEW_INTEGER_VARIABLE cop_type[1] cop_type[1] // VIEW_INTEGER_VARIABLE cop_type[2] cop_type[2] // VIEW_INTEGER_VARIABLE cop_type[3] cop_type[3] // VIEW_INTEGER_VARIABLE cop_type[4] cop_type[4] // VIEW_INTEGER_VARIABLE cop_type[5] cop_type[5] // VIEW_INTEGER_VARIABLE cop_type[6] cop_type[6] // VIEW_INTEGER_VARIABLE cop_type[7] cop_type[7] // VIEW_INTEGER_VARIABLE cop_type[8] cop_type[8] ENDIF IF catalina_flag = 6 LVAR_INT catalina_advance_flag c2_task_status c2_catalina_target //VIEW_INTEGER_VARIABLE catalina_Advance_flag catalina_Advance_flag //VIEW_INTEGER_VARIABLE c2_catalina_target c2_catalina_target IF NOT IS_CHAR_DEAD catalina // IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_UP // bad_flag ++ // IF bad_flag > 17 // bad_flag = 0 // ENDIF // SET_CHAR_COORDINATES scplayer cop_create_x[bad_flag] cop_create_y[bad_flag] cop_create_z[bad_flag] // SET_CHAR_HEADING scplayer cop_create_h[bad_flag] // ENDIF // // IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_DOWN // bad_flag -- // IF bad_flag < 0 // bad_flag = 17 // ENDIF // SET_CHAR_COORDINATES scplayer cop_create_x[bad_flag] cop_create_y[bad_flag] cop_create_z[bad_flag] // SET_CHAR_HEADING scplayer cop_create_h[bad_flag] // ENDIF IF NOT c2_catalina_target = 99 IF IS_CHAR_DEAD c2_alley_cop[c2_catalina_target] c2_i = cop_location[c2_catalina_target] c2_location_in_use[c2_i] = 0 c2_catalina_target = 99 ENDIF IF TIMERA > force_cat_advance_time IF NOT c2_catalina_target = 99 force_cat_advance_time = TIMERA + 30000 make_catalina_advance = 1 c2_i = cop_location[c2_catalina_target] c2_location_in_use[c2_i] = 0 c2_catalina_target = 99 ENDIF ENDIF ENDIF IF c2_catalina_target = 99 //This bit of script will prevent Catalina getting stuck if she can not see any enemies to target. IF catalina_advance_flag > 0 AND catalina_advance_flag < 10 LVAR_INT make_catalina_advance catalina_advance_timer GET_SCRIPT_TASK_STATUS catalina -1 cat_task_status IF cat_task_status = PERFORMING_TASK catalina_advance_timer = TIMERA + 8000 ENDIF IF cat_task_status = FINISHED_TASK IF TIMERA > catalina_advance_timer make_catalina_advance = 1 ENDIF ENDIF ENDIF IF catalina_advance_flag = 0 LVAR_INT cat_task_status GET_SCRIPT_TASK_STATUS catalina -1 cat_task_status IF cat_task_status = FINISHED_TASK // AND play_audio = 0 // CLEAR_PRINTS // PRINT CAT2_20 4000 1 catalina_advance_flag = 1 ENDIF ENDIF IF catalina_advance_flag = 1 IF c2_location_in_use[3] = 1 c2_catalina_target = cop_location_occupier[3] ELSE IF c2_location_in_use[2] = 1 c2_catalina_target = cop_location_occupier[2] ELSE IF c2_location_in_use[4] = 1 c2_catalina_target = cop_location_occupier[4] ELSE IF c2_location_in_use[5] = 1 c2_catalina_target = cop_location_occupier[5] ELSE catalina_advance_flag = 2 play_audio = 24 TASK_FOLLOW_PATH_NODES_TO_COORD catalina 2321.7400 10.5486 25.4688 PEDMOVE_RUN -2 ENDIF ENDIF ENDIF ENDIF IF make_catalina_advance = 1 make_catalina_advance = 0 catalina_advance_flag = 2 play_audio = 24 TASK_FOLLOW_PATH_NODES_TO_COORD catalina 2321.7400 10.5486 25.4688 PEDMOVE_RUN -2 ENDIF ENDIF IF catalina_advance_flag = 2 IF NOT IS_CHAR_DEAD catalina GET_SCRIPT_TASK_STATUS catalina TASK_FOLLOW_PATH_NODES_TO_COORD cat_task_status IF cat_task_status = FINISHED_TASK IF LOCATE_CHAR_ANY_MEANS_3D catalina 2321.7400 10.5486 25.4688 3.0 3.0 3.0 FALSE catalina_advance_flag = 3 ELSE TASK_FOLLOW_PATH_NODES_TO_COORD catalina 2321.7400 10.5486 25.4688 PEDMOVE_RUN -2 ENDIF ENDIF ENDIF ENDIF IF catalina_advance_flag = 3 AND play_audio = 0 IF c2_location_in_use[0] = 1 c2_catalina_target = cop_location_occupier[0] ELSE IF c2_location_in_use[1] = 1 c2_catalina_target = cop_location_occupier[1] ELSE catalina_advance_flag = 4 play_audio = 25 TASK_FOLLOW_PATH_NODES_TO_COORD catalina 2318.2805 18.5403 25.4766 PEDMOVE_RUN -2 ENDIF ENDIF IF make_catalina_advance = 1 make_catalina_advance = 0 catalina_advance_flag = 4 play_audio = 25 TASK_FOLLOW_PATH_NODES_TO_COORD catalina 2318.2805 18.5403 25.4766 PEDMOVE_RUN -2 ENDIF ENDIF IF catalina_advance_flag = 4 IF NOT IS_CHAR_DEAD catalina GET_SCRIPT_TASK_STATUS catalina TASK_FOLLOW_PATH_NODES_TO_COORD cat_task_status IF cat_task_status = FINISHED_TASK IF LOCATE_CHAR_ANY_MEANS_3D catalina 2318.2805 18.5403 25.4766 3.0 3.0 3.0 FALSE catalina_advance_flag = 5 ELSE TASK_FOLLOW_PATH_NODES_TO_COORD catalina 2318.2805 18.5403 25.4766 PEDMOVE_RUN -2 ENDIF ENDIF ENDIF ENDIF IF catalina_advance_flag = 5 IF c2_location_in_use[6] = 1 c2_catalina_target = cop_location_occupier[6] ELSE IF c2_location_in_use[7] = 1 c2_catalina_target = cop_location_occupier[7] ELSE IF c2_location_in_use[8] = 1 c2_catalina_target = cop_location_occupier[8] ELSE IF c2_location_in_use[9] = 1 c2_catalina_target = cop_location_occupier[9] ELSE IF c2_location_in_use[10] = 1 c2_catalina_target = cop_location_occupier[10] ELSE IF c2_location_in_use[11] = 1 c2_catalina_target = cop_location_occupier[11] ELSE catalina_advance_flag = 6 play_audio = 26 TASK_FOLLOW_PATH_NODES_TO_COORD catalina 2319.2278 34.5650 25.468 PEDMOVE_RUN -2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF make_catalina_advance = 1 make_catalina_advance = 0 catalina_advance_flag = 6 play_audio = 26 TASK_FOLLOW_PATH_NODES_TO_COORD catalina 2319.2278 34.5650 25.468 PEDMOVE_RUN -2 ENDIF ENDIF IF catalina_advance_flag = 6 IF NOT IS_CHAR_DEAD catalina GET_SCRIPT_TASK_STATUS catalina TASK_FOLLOW_PATH_NODES_TO_COORD cat_task_status IF cat_task_status = FINISHED_TASK IF LOCATE_CHAR_ANY_MEANS_3D catalina 2319.2278 34.5650 25.468 3.0 3.0 3.0 FALSE catalina_advance_flag = 7 ELSE TASK_FOLLOW_PATH_NODES_TO_COORD catalina 2319.2278 34.5650 25.468 PEDMOVE_RUN -2 ENDIF ENDIF ENDIF ENDIF IF catalina_advance_flag = 7 AND play_audio = 0 IF c2_location_in_use[12] = 1 c2_catalina_target = cop_location_occupier[12] ELSE IF c2_location_in_use[13] = 1 c2_catalina_target = cop_location_occupier[13] ELSE catalina_advance_flag = 8 TASK_FOLLOW_PATH_NODES_TO_COORD catalina 2318.6216 45.0292 25.4762 PEDMOVE_RUN -2 ENDIF ENDIF IF make_catalina_advance = 1 make_catalina_advance = 0 catalina_advance_flag = 8 TASK_FOLLOW_PATH_NODES_TO_COORD catalina 2318.6216 45.0292 25.4762 PEDMOVE_RUN -2 ENDIF ENDIF IF catalina_advance_flag = 8 IF NOT IS_CHAR_DEAD catalina GET_SCRIPT_TASK_STATUS catalina -1 cat_task_status IF cat_task_status = FINISHED_TASK catalina_advance_flag = 9 ENDIF ENDIF ENDIF IF catalina_advance_flag = 9 AND play_audio = 0 IF c2_location_in_use[14] = 1 c2_catalina_target = cop_location_occupier[14] ELSE IF c2_location_in_use[15] = 1 c2_catalina_target = cop_location_occupier[15] ELSE IF c2_location_in_use[16] = 1 c2_catalina_target = cop_location_occupier[16] ELSE IF c2_location_in_use[17] = 1 c2_catalina_target = cop_location_occupier[17] ELSE catalina_advance_flag = 10 play_audio = 28 TASK_FOLLOW_PATH_NODES_TO_COORD catalina 2319.2373 64.4156 25.4766 PEDMOVE_RUN -2 ENDIF ENDIF ENDIF ENDIF IF make_catalina_advance = 1 make_catalina_advance = 0 catalina_advance_flag = 10 play_audio = 28 TASK_FOLLOW_PATH_NODES_TO_COORD catalina 2319.2373 64.4156 25.4766 PEDMOVE_RUN -2 ENDIF ENDIF IF catalina_advance_flag = 10 IF NOT IS_CHAR_DEAD catalina GET_SCRIPT_TASK_STATUS catalina -1 cat_task_status IF cat_task_status = FINISHED_TASK IF LOCATE_CHAR_ANY_MEANS_3D catalina 2319.2373 64.4156 25.4766 4.0 4.0 4.0 FALSE catalina_flag = 7 mission_flag = 31 ELSE TASK_FOLLOW_PATH_NODES_TO_COORD catalina 2319.2373 64.4156 25.4766 PEDMOVE_RUN -2 ENDIF ENDIF ENDIF ENDIF IF NOT c2_catalina_target = 99 IF NOT IS_CHAR_DEAD catalina IF NOT IS_CHAR_DEAD c2_alley_cop[c2_catalina_target] TASK_KILL_CHAR_ON_FOOT catalina c2_alley_cop[c2_catalina_target] LVAR_INT force_cat_advance_time force_cat_advance_time = TIMERA + 15000 ENDIF ENDIF ENDIF ENDIF c2_i = 0 WHILE c2_i < 9 IF NOT IS_CHAR_DEAD c2_alley_cop[c2_i] IF cop_type[c2_i] = 1 // make cop duck and shoot IF TIMERA > c2_duck_time[c2_i] GET_SCRIPT_TASK_STATUS c2_alley_cop[c2_i] TASK_TOGGLE_DUCK c2_task_status IF c2_task_status = FINISHED_TASK GENERATE_RANDOM_INT_IN_RANGE 4000 8000 c2_int c2_duck_time[c2_i] = TIMERA + c2_int IF IS_CHAR_DUCKING c2_alley_cop[c2_i] TASK_TOGGLE_DUCK c2_alley_cop[c2_i] FALSE ELSE TASK_TOGGLE_DUCK c2_alley_cop[c2_i] TRUE ENDIF ENDIF ENDIF ENDIF IF cop_type[c2_i] = 2 // make cop kill char on foot IF NOT IS_CHAR_RESPONDING_TO_EVENT c2_alley_cop[c2_i] EVENT_ACQUAINTANCE_PED_HATE TASK_STAY_IN_SAME_PLACE c2_alley_cop[c2_i] FALSE TASK_KILL_CHAR_ON_FOOT c2_alley_cop[c2_i] scplayer cop_type[c2_i] = 4 ENDIF ENDIF IF cop_type[c2_i] = 3 // make cop duck and shoot // IF NOT IS_CHAR_RESPONDING_TO_EVENT c2_alley_cop[c2_i] EVENT_ACQUAINTANCE_PED_HATE // IF NOT HAS_CHAR_SPOTTED_CHAR c2_alley_cop[c2_i] scplayer // AND NOT HAS_CHAR_SPOTTED_CHAR c2_alley_cop[c2_i] catalina GET_CHAR_HEADING c2_alley_cop[c2_i] c2_float GET_CHAR_COORDINATES c2_alley_cop[c2_i] c2_x c2_y c2_z SIN c2_float c2_sin COS c2_float c2_cos c2_x_offset = c2_sin * -2.5 c2_x_offset += c2_x c2_y_offset = c2_cos * 2.5 c2_y_offset += c2_y IF NOT IS_CHAR_DEAD catalina IF LOCATE_CHAR_ANY_MEANS_3D scplayer c2_x_offset c2_y_offset 25.7 5.0 5.0 3.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D catalina c2_x_offset c2_y_offset 25.7 5.0 5.0 3.0 FALSE TASK_STAY_IN_SAME_PLACE c2_alley_cop[c2_i] FALSE TASK_PLAY_ANIM_NON_INTERRUPTABLE c2_alley_cop[c2_i] Crouch_Roll_L PED 8.0 FALSE TRUE TRUE FALSE -1 cop_type[c2_i] = 0 ENDIF ENDIF // ENDIF ENDIF IF cop_type[c2_i] = 5 // make cop duck and shoot // IF NOT IS_CHAR_RESPONDING_TO_EVENT c2_alley_cop[c2_i] EVENT_ACQUAINTANCE_PED_HATE // IF NOT HAS_CHAR_SPOTTED_CHAR c2_alley_cop[c2_i] scplayer // AND NOT HAS_CHAR_SPOTTED_CHAR c2_alley_cop[c2_i] catalina GET_CHAR_HEADING c2_alley_cop[c2_i] c2_float GET_CHAR_COORDINATES c2_alley_cop[c2_i] c2_x c2_y c2_z SIN c2_float c2_sin COS c2_float c2_cos c2_x_offset = c2_sin * -2.5 c2_x_offset += c2_x c2_y_offset = c2_cos * 2.5 c2_y_offset += c2_y IF NOT IS_CHAR_DEAD catalina IF LOCATE_CHAR_ANY_MEANS_3D scplayer c2_x_offset c2_y_offset 25.7 5.0 5.0 3.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D catalina c2_x_offset c2_y_offset 25.7 5.0 5.0 3.0 FALSE IF play_audio = 0 play_audio = 27 ENDIF TASK_STAY_IN_SAME_PLACE c2_alley_cop[c2_i] FALSE TASK_PLAY_ANIM_NON_INTERRUPTABLE c2_alley_cop[c2_i] Crouch_Roll_R PED 8.0 FALSE TRUE TRUE FALSE -1 cop_type[c2_i] = 0 ENDIF ENDIF // ENDIF ENDIF ENDIF c2_i ++ ALTER_WANTED_LEVEL Player1 3 ENDWHILE ENDIF ENDIF // Cat gets on bike and drives off IF catalina_flag = 8 IF mission_flag > 40 LVAR_INT beach_ped_Created beach_ped IF beach_ped_Created = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2130.6890 149.1074 0.3268 30.0 30.0 30.0 FALSE REQUEST_MODEL COPBIKE REQUEST_MODEL CSHER REQUEST_MODEL COLT45 IF HAS_MODEL_LOADED COPBIKE AND HAS_MODEL_LOADED CSHER AND HAS_MODEL_LOADED COLT45 beach_ped_Created = 1 LVAR_INT beach_cop_car beach_cop beach_seq CREATE_CAR COPBIKE 2048.1565 195.1577 15.8884 beach_cop_car SWITCH_CAR_SIREN beach_cop_car ON SET_CAR_HEADING beach_cop_car 270.0 CREATE_CHAR_INSIDE_CAR beach_cop_car PEDTYPE_MISSION1 CSHER beach_cop GIVE_WEAPON_TO_CHAR beach_cop WEAPONTYPE_PISTOL 9999 OPEN_SEQUENCE_TASK beach_seq TASK_CAR_DRIVE_TO_COORD -1 beach_cop_car 2105.2363 179.1932 0.5812 15.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_STOPFORCARS TASK_CAR_TEMP_ACTION -1 beach_cop_car TEMPACT_HANDBRAKETURNRIGHT 1000 TASK_LEAVE_ANY_CAR -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK beach_seq PERFORM_SEQUENCE_TASK beach_cop beach_seq CLEAR_SEQUENCE_TASK beach_seq ENDIF ENDIF ENDIF IF playback_cat_drive = 0 IF NOT IS_CAR_DEAD copcar3 AND NOT IS_CAR_DEAD copcar2 AND NOT IS_CHAR_DEAD catalina AND NOT IS_CAR_DEAD chase_cop_bike1 AND NOT IS_CAR_DEAD chase_cop_bike2 IF IS_CHAR_IN_CAR catalina copcar2 IF NOT IS_CHAR_DEAD catalina SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE catalina KNOCKOFFBIKE_ALWAYSNORMAL ENDIF playback_cat_drive = 1 // recording_going_on = 1 START_PLAYBACK_RECORDED_CAR copcar2 157 START_PLAYBACK_RECORDED_CAR chase_cop_bike1 160 START_PLAYBACK_RECORDED_CAR chase_cop_bike2 161 SWITCH_CAR_SIREN chase_cop_bike1 ON SWITCH_CAR_SIREN chase_cop_bike2 ON GET_CAR_CHAR_IS_USING scplayer players_car // START_RECORDING_CAR players_car 161 // ADD_BLIP_FOR_CHAR catalina catalina_pickup_blip // SET_BLIP_AS_FRIENDLY catalina_pickup_blip TRUE ENDIF ENDIF ENDIF IF playback_cat_drive > 0 LVAR_INT c2_driver bike1_empty bike2_empty IF NOT IS_CAR_DEAD chase_cop_bike1 IF IS_PLAYBACK_GOING_ON_FOR_CAR chase_cop_bike1 GET_DRIVER_OF_CAR chase_cop_bike1 c2_driver IF c2_driver = -1 STOP_PLAYBACK_RECORDED_CAR chase_cop_bike1 ENDIF // ELSE // IF bike1_empty = 0 // GET_DRIVER_OF_CAR chase_cop_bike1 c2_driver // IF NOT c2_driver = -1 // TASK_EVERYONE_LEAVE_CAR chase_cop_bike1 // bike1_empty = 1 // ENDIF // ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD chase_cop_bike2 IF IS_PLAYBACK_GOING_ON_FOR_CAR chase_cop_bike2 GET_DRIVER_OF_CAR chase_cop_bike2 c2_driver IF c2_driver = -1 STOP_PLAYBACK_RECORDED_CAR chase_cop_bike2 ELSE IF bike2_empty = 0 GET_CAR_COORDINATES chase_cop_bike2 x y z IF x < 1570.0 IF IS_CAR_IN_AIR_PROPER chase_cop_bike2 IF NOT IS_CHAR_DEAD c2_driver TASK_LEAVE_CAR_IMMEDIATELY c2_driver chase_cop_bike2 bike2_empty = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF playback_cat_drive = 1 IF NOT IS_CHAR_DEAD catalina AND NOT IS_CAR_DEAD copcar2 // prevent recording speed changing if cat is entering the ambush area. IF trigger_car_recc = 0 GET_CHAR_COORDINATES catalina x y z GET_CHAR_COORDINATES scplayer x2 y2 z2 // GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 distance distance = x2 - x IF distance < 0.0 distance = 0.0 ENDIF speed = 2000.0 / distance//INCREASE NUMBER TO MAKE CAR GO FASTER speed /= 100.0 IF speed > 1.5 speed = 1.5 ENDIF IF speed < 0.3 speed = 0.3 ENDIF LVAR_INT check_cat_comment_time IF TIMERA > check_cat_comment_time AND cat_comment < 37 IF distance > 10.0 AND distance < 50.0 IF play_audio = 0 play_audio = cat_comment play_audio_global = 1 check_cat_comment_time = TIMERA + 8000 cat_comment ++ ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD chase_cop_bike1 IF IS_CAR_IN_AIR_PROPER chase_cop_bike1 speed= 1.0 ENDIF ENDIF IF NOT IS_CAR_DEAD chase_cop_bike2 IF IS_CAR_IN_AIR_PROPER chase_cop_bike2 speed= 1.0 ENDIF IF NOT IS_CHAR_DEAD ambush_cop[7] IF NOT IS_CHAR_IN_ANY_CAR ambush_cop[7] IF give_cop_Task = 0 LVAR_INT give_cop_task GIVE_WEAPON_TO_CHAR ambush_cop[7] WEAPONTYPE_PISTOL 9999 TASK_KILL_CHAR_ON_FOOT ambush_cop[7] scplayer SET_CHAR_RELATIONSHIP ambush_cop[7] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER ambush_cop[7] ambush_dec give_cop_task = 1 ENDIF ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD copcar2 IF IS_CAR_IN_AIR_PROPER copcar2 speed= 1.0 ENDIF ENDIF SET_PLAYBACK_SPEED copcar2 speed IF NOT IS_CAR_DEAD chase_cop_bike1 SET_PLAYBACK_SPEED chase_cop_bike1 speed ENDIF IF NOT IS_CAR_DEAD chase_cop_bike2 SET_PLAYBACK_SPEED chase_cop_bike2 speed ENDIF // IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR copcar2 // //MAKE CATALINA DO SOMETHING // GOTO mission_cat2_passed // ENDIF ELSE SET_PLAYBACK_SPEED copcar2 1.0 IF NOT IS_CAR_DEAD chase_cop_bike1 SET_PLAYBACK_SPEED chase_cop_bike1 1.0 ENDIF IF NOT IS_CAR_DEAD chase_cop_bike2 SET_PLAYBACK_SPEED chase_cop_bike2 1.0 ENDIF ENDIF IF IS_CHAR_IN_AREA_2D catalina 1304.9573 252.9172 1275.8398 241.8114 FALSE // STOP_PLAYBACK_RECORDED_CAR copcar2 // SET_CAR_FORWARD_SPEED copcar2 25.0 playback_cat_drive = 2 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE cat_own_dec EVENT_ACQUAINTANCE_PED_HATE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 TRUE TRUE //newline cat_fall_off_time = TIMERA + 900 ENDIF ENDIF ENDIF IF playback_cat_drive = 2 IF TIMERA > cat_fall_off_time IF NOT IS_CAR_DEAD copcar2 AND NOT IS_CHAR_DEAD catalina LVAR_INT print_time_for_catalina print_time_for_catalina = TIMERA + 1000 // OPEN_SEQUENCE_TASK cat_ambush_seq TASK_LEAVE_CAR_IMMEDIATELY -1 copcar2 TASK_GO_STRAIGHT_TO_COORD -1 1286.9689 247.1966 18.4062 PEDMOVE_RUN -2 TASK_HANDS_UP -1 40000 CLOSE_SEQUENCE_TASK cat_ambush_seq PERFORM_SEQUENCE_TASK catalina cat_ambush_seq CLEAR_SEQUENCE_TASK cat_ambush_seq playback_cat_drive = 3 ENDIF ENDIF ENDIF IF print_time_for_catalina > 0 IF TIMERA > print_time_for_catalina CLEAR_PRINTS PRINT CAT2_16 6000 1 // REMOVE_BLIP mission_blip ADD_BLIP_FOR_COORD 867.6723 -30.3543 62.1893 mission_blip print_time_for_catalina = 0 playback_cat_drive = 4 ENDIF ENDIF IF playback_cat_drive = 4 IF NOT IS_CHAR_DEAD catalina IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer catalina 15.0 15.0 15.0 FALSE OR IS_CHAR_SHOOTING_IN_AREA scplayer 1389.0215 67.2039 1232.6281 407.0970 FALSE MARK_CHAR_AS_NO_LONGER_NEEDED ambush_cop[6] MARK_CHAR_AS_NO_LONGER_NEEDED ambush_cop[7] MARK_CAR_AS_NO_LONGER_NEEDED ambush_cop_car MARK_CAR_AS_NO_LONGER_NEEDED ambush_cop_car2 MARK_CAR_AS_NO_LONGER_NEEDED ambush_cop_car3 IF DOES_CHAR_EXIST beach_cop MARK_CHAR_AS_NO_LONGER_NEEDED beach_cop ENDIF IF NOT IS_CAR_DEAD beach_cop_car IF NOT IS_CHAR_IN_CAR scplayer beach_cop_car MARK_CAR_AS_NO_LONGER_NEEDED beach_cop_car ENDIF ELSE MARK_CAR_AS_NO_LONGER_NEEDED chase_cop_bike2 ENDIF IF NOT IS_CAR_DEAD chase_cop_bike1 IF NOT IS_CHAR_IN_CAR scplayer chase_cop_bike1 MARK_CAR_AS_NO_LONGER_NEEDED chase_cop_bike1 ENDIF ELSE MARK_CAR_AS_NO_LONGER_NEEDED chase_cop_bike1 ENDIF IF NOT IS_CAR_DEAD chase_cop_bike2 IF NOT IS_CHAR_IN_CAR scplayer chase_cop_bike2 MARK_CAR_AS_NO_LONGER_NEEDED chase_cop_bike2 ENDIF ELSE MARK_CAR_AS_NO_LONGER_NEEDED chase_cop_bike2 ENDIF IF NOT IS_CAR_DEAD copcar3 IF NOT IS_CHAR_IN_CAR scplayer copcar3 MARK_CAR_AS_NO_LONGER_NEEDED copcar3 ENDIF ELSE MARK_CAR_AS_NO_LONGER_NEEDED copcar3 ENDIF IF NOT IS_CAR_DEAD copcar2 IF NOT IS_CHAR_IN_CAR scplayer copcar2 MARK_CAR_AS_NO_LONGER_NEEDED copcar2 ENDIF ELSE MARK_CAR_AS_NO_LONGER_NEEDED copcar2 ENDIF LVAR_INT cat2_i empty_dec cat2_i = 0 WHILE cat2_i < 8 IF NOT IS_CHAR_DEAD ambush_cop[cat2_i] CLEAR_CHAR_TASKS ambush_cop[cat2_i] MARK_CHAR_AS_NO_LONGER_NEEDED ambush_cop[cat2_i] SET_CHAR_RELATIONSHIP ambush_cop[cat2_i] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP ambush_cop[cat2_i] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_SPECIAL ENDIF cat2_i ++ ENDWHILE // SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 // SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_SPECIAL // SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_SPECIAL PEDTYPE_MISSION1 print_god_text = 0 // PRINT CAT2_18 7000 1 // REMOVE_BLIP catalina_pickup_blip // REMOVE_BLIP mission_blip IF NOT IS_GROUP_MEMBER catalina players_group MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER players_group catalina SET_GROUP_DECISION_MAKER players_group cat_decisions // ADD_BLIP_FOR_CHAR catalina catalina_blip ENDIF LVAR_INT cat_in_players_group cat_in_players_group = 1 REMOVE_BLIP catalina_blip // TASK_ENTER_CAR_AS_PASSENGER catalina players_car -2 0 playback_cat_drive = 5 // cops_shoot_time = TIMERA + 4000 ENDIF ENDIF ENDIF IF playback_cat_drive = 5 LVAR_INT cops_shoot IF cops_shoot = 0 IF TIMERA > cops_shoot_time cat2_i = 0 WHILE cat2_i < 8 IF NOT IS_CHAR_DEAD ambush_cop[cat2_i] TASK_SET_CHAR_DECISION_MAKER ambush_cop[cat2_i] ambush_dec ENDIF cat2_i ++ ENDWHILE cops_shoot = 1 ENDIF ENDIF LVAR_INT cat2_play_getaway_dialogue IF NOT IS_CHAR_DEAD catalina IF IS_CHAR_IN_ANY_CAR catalina IF cat2_play_getaway_dialogue = 0 cat2_play_getaway_dialogue = 1 only_play_audio_if_player_in_car = 1 play_audio_global = 1 IF cat_getaway_dialogue = 0 IF cat_counter = 0 // getaway dialogue 1 audio_for_char[40] = 2 //CARL audio_for_char[41] = 1 //CATALINA audio_for_char[42] = 1 audio_for_char[43] = 1 audio_for_char[44] = 1 audio_for_char[45] = 1 audio_for_char[46] = 2 //CARL audio_for_char[47] = 1 //CATALINA audio_for_char[48] = 1 audio_for_char[49] = 2 //CARL audio_for_char[50] = 1 //CATALINA $audio_text[40] = &CAT_DF $audio_text[41] = &CAT_DG $audio_text[42] = &CAT_DH $audio_text[43] = &CAT_DI $audio_text[44] = &CAT_DJ $audio_text[45] = &CAT_DK $audio_text[46] = &CAT_DL $audio_text[47] = &CAT_DM $audio_text[48] = &CAT_DN $audio_text[49] = &CAT_DO $audio_text[50] = &CAT_DP audio_sound[40] = SOUND_CAT_DF audio_sound[41] = SOUND_CAT_DG audio_sound[42] = SOUND_CAT_DH audio_sound[43] = SOUND_CAT_DI audio_sound[44] = SOUND_CAT_DJ audio_sound[45] = SOUND_CAT_DK audio_sound[46] = SOUND_CAT_DL audio_sound[47] = SOUND_CAT_DM audio_sound[48] = SOUND_CAT_DN audio_sound[49] = SOUND_CAT_DO audio_sound[50] = SOUND_CAT_DP play_audio = 40 play_audio_for = 11 ELSE // getaway dialogue 1 audio_for_char[40] = 1 audio_for_char[41] = 2 //CARL audio_for_char[42] = 1 //CATALINA audio_for_char[43] = 1 audio_for_char[44] = 1 audio_for_char[45] = 1 audio_for_char[46] = 1 audio_for_char[47] = 2 //CARL audio_for_char[48] = 1 //CATALINA audio_for_char[49] = 1 audio_for_char[50] = 2 //CARL audio_for_char[51] = 1 //CATALINA $audio_text[40] = &CAT_DA $audio_text[41] = &CAT_DF $audio_text[42] = &CAT_DG $audio_text[43] = &CAT_DH $audio_text[44] = &CAT_DI $audio_text[45] = &CAT_DJ $audio_text[46] = &CAT_DK $audio_text[47] = &CAT_DL $audio_text[48] = &CAT_DM $audio_text[49] = &CAT_DN $audio_text[50] = &CAT_DO $audio_text[51] = &CAT_DP audio_sound[40] = SOUND_CAT_DA audio_sound[41] = SOUND_CAT_DF audio_sound[42] = SOUND_CAT_DG audio_sound[43] = SOUND_CAT_DH audio_sound[44] = SOUND_CAT_DI audio_sound[45] = SOUND_CAT_DJ audio_sound[46] = SOUND_CAT_DK audio_sound[47] = SOUND_CAT_DL audio_sound[48] = SOUND_CAT_DM audio_sound[49] = SOUND_CAT_DN audio_sound[50] = SOUND_CAT_DO audio_sound[51] = SOUND_CAT_DP play_audio = 40 play_audio_for = 12 ENDIF ENDIF IF cat_getaway_dialogue = 1 audio_for_char[40] = 1 //CATALINA audio_for_char[41] = 2 //CARL audio_for_char[42] = 1 //CATALINA audio_for_char[43] = 2 //CARL audio_for_char[44] = 2 audio_for_char[45] = 1 //CATALINA audio_for_char[46] = 2 //CARL audio_for_char[47] = 1 //CATALINA audio_for_char[48] = 2 //CARL audio_for_char[49] = 1 //CATALINA audio_for_char[50] = 1 audio_for_char[51] = 1 audio_for_char[52] = 1 audio_for_char[53] = 2 //CARL // getaway dialogue 2 $audio_text[40] = &CAT_GA $audio_text[41] = &CAT_GB $audio_text[42] = &CAT_GC $audio_text[43] = &CAT_GD $audio_text[44] = &CAT_GE $audio_text[45] = &CAT_GF $audio_text[46] = &CAT_GG $audio_text[47] = &CAT_GH $audio_text[48] = &CAT_GI $audio_text[49] = &CAT_GJ $audio_text[50] = &CAT_GK $audio_text[51] = &CAT_GL $audio_text[52] = &CAT_GM $audio_text[53] = &CAT_GN audio_sound[40] = SOUND_CAT_GA audio_sound[41] = SOUND_CAT_GB audio_sound[42] = SOUND_CAT_GC audio_sound[43] = SOUND_CAT_GD audio_sound[44] = SOUND_CAT_GE audio_sound[45] = SOUND_CAT_GF audio_sound[46] = SOUND_CAT_GG audio_sound[47] = SOUND_CAT_GH audio_sound[48] = SOUND_CAT_GI audio_sound[49] = SOUND_CAT_GJ audio_sound[50] = SOUND_CAT_GK audio_sound[51] = SOUND_CAT_GL audio_sound[52] = SOUND_CAT_GM audio_sound[53] = SOUND_CAT_GN play_audio = 40 play_audio_for = 14 ENDIF IF cat_getaway_dialogue = 2 audio_for_char[40] = 1 //CATALINA audio_for_char[41] = 2 //CARL audio_for_char[42] = 1 //CATALINA audio_for_char[43] = 2 //CARL audio_for_char[44] = 1 //CATALINA audio_for_char[45] = 2 //CARL audio_for_char[46] = 1 //CATALINA audio_for_char[47] = 1 // // getaway dialogue 3 $audio_text[40] = &CAT_OA $audio_text[41] = &CAT_OB $audio_text[42] = &CAT_OC $audio_text[43] = &CAT_OD $audio_text[44] = &CAT_OE $audio_text[45] = &CAT_OF $audio_text[46] = &CAT_OG $audio_text[47] = &CAT_OH audio_sound[40] = SOUND_CAT_OA audio_sound[41] = SOUND_CAT_OB audio_sound[42] = SOUND_CAT_OC audio_sound[43] = SOUND_CAT_OD audio_sound[44] = SOUND_CAT_OE audio_sound[45] = SOUND_CAT_OF audio_sound[46] = SOUND_CAT_OG audio_sound[47] = SOUND_CAT_OH play_audio = 40 play_audio_for = 8 ENDIF ENDIF ENDIF // IF NOT cat_loves_you_time = -1 // IF IS_CHAR_IN_ANY_CAR catalina // AND IS_CHAR_IN_ANY_CAR scplayer // IF play_audio = 0 // IF cat_loves_you_time = 0 // cat_loves_you_time = TIMERA + 8000 // ENDIF // IF NOT cat_loves_you_time = 0 // IF TIMERA > cat_loves_you_time // play_audio = 38 // cat_loves_you_time = -1 // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 863.6693 -30.8520 62.1615 4.0 4.0 4.0 TRUE AND LOCATE_CHAR_ANY_MEANS_3D catalina 863.6693 -30.8520 62.1615 4.0 4.0 4.0 FALSE REMOVE_BLIP mission_blip SET_PLAYER_CONTROL player1 OFF catalina_flag = 9 ENDIF IF print_god_text = 0 IF NOT IS_MESSAGE_BEING_DISPLAYED IF play_audio = 0 play_audio = 37 print_god_text = 1 ENDIF ENDIF ENDIF ENDIF ENDIF // WONT DO THIS BIT NOW IF cat_entering_players_car = 2 IF NOT IS_CHAR_DEAD catalina IF NOT LOCATE_CHAR_ANY_MEANS_3D catalina 1287.5 249.2 19.22 60.0 60.0 60.0 FALSE cat_entering_players_car = 3 IF NOT IS_CAR_DEAD ambush_cop_car MARK_CAR_AS_NO_LONGER_NEEDED ambush_cop_car ENDIF IF NOT IS_CAR_DEAD ambush_cop_car2 MARK_CAR_AS_NO_LONGER_NEEDED ambush_cop_car2 ENDIF IF NOT IS_CAR_DEAD ambush_cop_car3 MARK_CAR_AS_NO_LONGER_NEEDED ambush_cop_car3 ENDIF cop_i = 0 WHILE cop_i < 6 MARK_CHAR_AS_NO_LONGER_NEEDED ambush_cop[cop_i] cop_i ++ ENDWHILE ENDIF ENDIF ENDIF IF trigger_car_recc = 0 IF NOT IS_CHAR_DEAD catalina IF IS_CHAR_IN_AREA_2D catalina 1393.2465 233.1637 1325.0726 190.1405 FALSE trigger_car_recc = 1 IF NOT IS_CAR_DEAD ambush_cop_car AND NOT IS_CAR_DEAD ambush_cop_car2 AND NOT IS_CAR_DEAD ambush_cop_car3 START_PLAYBACK_RECORDED_CAR ambush_cop_car 156 START_PLAYBACK_RECORDED_CAR ambush_cop_car2 158 START_PLAYBACK_RECORDED_CAR ambush_cop_car3 159 FREEZE_CAR_POSITION ambush_cop_car FALSE FREEZE_CAR_POSITION ambush_cop_car2 FALSE FREEZE_CAR_POSITION ambush_cop_car3 FALSE SWITCH_CAR_SIREN ambush_cop_car ON SWITCH_CAR_SIREN ambush_cop_car2 ON SWITCH_CAR_SIREN ambush_cop_car3 ON leave_time1 = TIMERA + 4000 leave_time2 = TIMERA + 4000 leave_time3 = TIMERA + 4000 ENDIF ENDIF ENDIF ENDIF IF trigger_car_recc = 1 IF NOT IS_CAR_DEAD ambush_cop_car AND NOT IS_CAR_DEAD ambush_cop_car2 AND NOT IS_CAR_DEAD ambush_cop_car3 AND NOT IS_CHAR_DEAD catalina cop_i = 0 WHILE cop_i < 6 do_cop_task = 0 IF NOT IS_CHAR_DEAD ambush_cop[cop_i] IF IS_CHAR_SITTING_IN_ANY_CAR ambush_cop[cop_i] IF cop_i < 2 IF TIMERA > leave_time1 do_cop_task = 1 ENDIF ENDIF IF cop_i < 4 AND cop_i > 1 IF TIMERA > leave_time2 do_cop_task = 1 ENDIF ENDIF IF cop_i > 3 IF TIMERA > leave_time3 do_cop_task = 1 ENDIF ENDIF IF do_cop_task = 1 OPEN_SEQUENCE_TASK cat_ambush_seq IF cop_i = 0 OR cop_i = 3 OR cop_i = 4 TASK_TOGGLE_DUCK -1 TRUE ENDIF TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 ambush_point_x[cop_i] ambush_point_y[cop_i] ambush_point_z[cop_i] PEDMOVE_RUN -2 TASK_AIM_GUN_AT_CHAR -1 catalina -2 CLOSE_SEQUENCE_TASK cat_ambush_seq PERFORM_SEQUENCE_TASK ambush_cop[cop_i] cat_ambush_seq CLEAR_SEQUENCE_TASK cat_ambush_Seq ENDIF ENDIF ENDIF cop_i ++ ENDWHILE ENDIF ENDIF ENDIF ENDIF IF catalina_flag = 9 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED cat_mini_flag = 3 audio_flag = 5 ENDIF // small cut of catalina walking into cabin IF cat_mini_flag = 0 ALTER_WANTED_LEVEL player1 0 audio_flag = 5 audio_slot[1] = 0 audio_slot[2] = 0 play_audio_global = 1 cat_mini_flag = 1 ENDIF IF cat_mini_flag = 1 IF play_audio = 0 IF audio_flag = 1 only_play_audio_if_player_in_car = 0 IF cat_counter = 0 audio_for_char[1] = 1 audio_for_char[2] = 1 audio_for_char[3] = 1 audio_for_char[4] = 2 audio_for_char[5] = 2 audio_for_char[6] = 1 audio_for_char[7] = 1 audio_for_char[8] = 1 audio_for_char[9] = 2 audio_for_char[10] = 2 audio_for_char[11] = 2 audio_for_char[12] = 2 audio_sound[1] = SOUND_CAT_EA audio_sound[2] = SOUND_CAT_EB audio_sound[3] = SOUND_CAT_EC audio_sound[4] = SOUND_CAT_ED audio_sound[5] = SOUND_CAT_EE audio_sound[6] = SOUND_CAT_EF audio_sound[7] = SOUND_CAT_EG audio_sound[8] = SOUND_CAT_EH audio_sound[9] = SOUND_CAT_EI audio_sound[10] = SOUND_CAT_EJ audio_sound[11] = SOUND_CAT_EK audio_sound[12] = SOUND_CAT_EL $audio_text[1] = &CAT_EA $audio_text[2] = &CAT_EB $audio_text[3] = &CAT_EC $audio_text[4] = &CAT_ED $audio_text[5] = &CAT_EE $audio_text[6] = &CAT_EF $audio_text[7] = &CAT_EG $audio_text[8] = &CAT_EH $audio_text[9] = &CAT_EI $audio_text[10] = &CAT_EJ $audio_text[11] = &CAT_EK $audio_text[12] = &CAT_EL play_audio = 1 play_audio_for = 12 ENDIF IF cat_counter = 1 audio_for_char[1] = 1 audio_for_char[2] = 2 audio_for_char[3] = 2 audio_for_char[4] = 2 audio_for_char[5] = 1 audio_for_char[6] = 1 audio_sound[1] = SOUND_CAT_HA audio_sound[2] = SOUND_CAT_HB audio_sound[3] = SOUND_CAT_HC audio_sound[4] = SOUND_CAT_HD audio_sound[5] = SOUND_CAT_HE audio_sound[6] = SOUND_CAT_HF $audio_text[1] = &CAT_HA $audio_text[2] = &CAT_HB $audio_text[3] = &CAT_HC $audio_text[4] = &CAT_HD $audio_text[5] = &CAT_HE $audio_text[6] = &CAT_HF play_audio = 1 play_audio_for = 6 ENDIF IF cat_counter = 2 audio_for_char[1] = 1 audio_for_char[2] = 1 audio_for_char[3] = 1 audio_sound[1] = SOUND_CAT_MA audio_sound[2] = SOUND_CAT_MB audio_sound[3] = SOUND_CAT_MC $audio_text[1] = &CAT_MA $audio_text[2] = &CAT_MB $audio_text[3] = &CAT_MC play_audio = 1 play_audio_for = 3 ENDIF IF cat_counter = 3 audio_for_char[1] = 1 audio_for_char[2] = 2 audio_for_char[3] = 1 audio_for_char[4] = 1 audio_for_char[5] = 1 audio_for_char[6] = 1 audio_sound[1] = SOUND_CAT_PA audio_sound[2] = SOUND_CAT_PB audio_sound[3] = SOUND_CAT_PC audio_sound[4] = SOUND_CAT_PD audio_sound[5] = SOUND_CAT_PE audio_sound[6] = SOUND_CAT_PF $audio_text[1] = &CAT_PA $audio_text[2] = &CAT_PB $audio_text[3] = &CAT_PC $audio_text[4] = &CAT_PD $audio_text[5] = &CAT_PE $audio_text[6] = &CAT_PF play_audio = 1 play_audio_for = 6 ENDIF LVAR_INT cat_mini_flag temp_seq cat_seq cat_time IF NOT IS_CHAR_DEAD catalina GET_CHAR_COORDINATES catalina x y z ENDIF CLEAR_AREA x y z 20.0 TRUE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL PLAYER1 OFF SET_FIXED_CAMERA_POSITION 854.5403 -22.1425 64.3802 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 855.2749 -22.7951 64.1942 JUMP_CUT IF IS_CHAR_IN_ANY_CAR scplayer IF NOT IS_CHAR_DEAD catalina IF NOT IS_CHAR_IN_ANY_CAR catalina STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car WARP_CHAR_INTO_CAR catalina car ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD catalina IF NOT IS_CHAR_IN_ANY_CAR catalina // IF NOT LOCATE_CHAR_ANY_MEANS_3D catalina x y z 5.0 5.0 5.0 FALSE SET_CHAR_COORDINATES scplayer 857.4263 -29.5418 62.1858 SET_CHAR_COORDINATES catalina 858.4263 -29.5418 62.1858 SET_CHAR_HEADING catalina 161.4460 SET_CHAR_HEADING catalina 340.4460 cat_in_players_group = 0 REMOVE_CHAR_FROM_GROUP catalina // ENDIF ENDIF OPEN_SEQUENCE_TASK temp_seq IF IS_CHAR_IN_ANY_CAR catalina STORE_CAR_CHAR_IS_IN_NO_SAVE catalina car TASK_LEAVE_CAR -1 car ENDIF TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_LOOK_AT_CHAR -1 scplayer 99999 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK catalina temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF cat_mini_flag = 2 ENDIF ENDIF ENDIF IF cat_mini_flag = 2 IF play_audio = 0 IF audio_flag = 1 IF NOT IS_CHAR_DEAD catalina OPEN_SEQUENCE_TASK cat_seq IF IS_CHAR_IN_ANY_CAR catalina STORE_CAR_CHAR_IS_IN_NO_SAVE catalina car TASK_LEAVE_CAR -1 car ENDIF TASK_GO_STRAIGHT_TO_COORD -1 869.0271 -28.2591 62.1893 PEDMOVE_WALK 20000 TASK_GO_STRAIGHT_TO_COORD -1 870.2891 -25.0424 62.9858 PEDMOVE_WALK 5000 CLOSE_SEQUENCE_TASK cat_seq PERFORM_SEQUENCE_TASK catalina cat_seq CLEAR_SEQUENCE_TASK cat_seq ENDIF cat_mini_flag = 3 cat_time = TIMERA + 5000 ENDIF ENDIF ENDIF // wait to finish IF cat_mini_flag = 3 IF NOT IS_CHAR_DEAD catalina GET_SCRIPT_TASK_STATUS catalina PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK OR TIMERA > cat_time SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT IF DOES_CHAR_EXIST catalina DELETE_CHAR catalina ENDIF SET_PLAYER_CONTROL player1 TRUE SWITCH_WIDESCREEN OFF CLEAR_PRINTS GOTO mission_cat2_passed ENDIF ENDIF ENDIF ENDIF //IF catalina_flag = 9 // IF NOT IS_CAR_DEAD copcar2//WARNING!!! (if bike is too far away or destroyed - make her get on players bike or steal a vehicle or try and create another) // IF IS_CHAR_SITTING_IN_CAR catalina copcar2 // START_PLAYBACK_RECORDED_CAR_USING_AI copcar2 115 // -- catalina_flag // ENDIF // ENDIF //ENDIF //OUTSIDE BANKS BACK DOOR LOCATE //2317.4285 2.9314 26.7164 3.0 2.0 1.2 //BANK END OF BLOCK AREA 1 //2318.7502 -6.5675 31.3712 15.0 11.2 5.8 //MIDDLE AREA 2 & 3 //2318.7502 15.8125 31.3712 15.0 11.2 5.8 //BIKE END OF ALLEY AREA 4 //2318.7502 54.3324 31.3712 15.0 11.2 5.8 //ROOF OF PIZZA SHOP //2328.3840 2.0130 35.4040 5.6 7.6 5.4 //ROOF OF BANK //2313.1731 -6.9870 35.4040 9.2 12.0 5.0 //LAZER SHOP ROOF //2310.1777 14.5224 31.3712 6.6 7.2 2.8 //DRY CLEANER ROOF //2309.4468 32.0223 31.3712 5.2 10.0 2.8 //FURNITURE SHOP //2308.6724 56.5422 31.9712 5.6 12.8 3.0 //BACK ROOF OF RECORD SHOP //2311.6362 74.2422 30.7711 6.0 2.4 2.2 //LOCATE FOR PLAYER AND CATALINA TO TRIGGER COPS ARRIVING ON BIKES AT END OF ALLEY //2315.5576 70.7181 31.4998 11.4 8.4 6.0 //END OF PED NODES ON BANK ROOF //2317.0110 -2.2289 31.5313 //PLAYERS Z VALUE > IF HES ON THE ROOFS. //28.65 GOTO mission_cat2_loop alarm_off: ALTER_WANTED_LEVEL_NO_DROP player1 3 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 2312.0940 -9.6433 28.6790 SOUND_CAT2_SECURITY_ALARM play_audio = 8 play_audio_for = 3 IF NOT IS_CHAR_DEAD catalina TASK_TURN_CHAR_TO_FACE_CHAR catalina scplayer ENDIF // CLEAR_PRINTS // PRINT_NOW CAT2_12 5000 1 //Shit, the alarm has been set off. RETURN // ************************************ MISSION FAILED ************************************* mission_cat2_failed: PRINT_BIG M_FAIL 5000 1 WAIT 2000 IF NOT IS_CHAR_DEAD scplayer // IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2312.5610 -9.0629 27.1588 40.0 40.0 20.0 FALSE IF IS_CHAR_IN_AREA_3D scplayer 2303.9031 -18.2879 25.5416 2321.1470 0.7716 30.8122 FALSE IF NOT IS_CHAR_DEAD scplayer DO_FADE 800 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE WAIT 700 IF IS_CHAR_IN_AREA_3D scplayer 2303.9031 -18.2879 25.5416 2321.1470 0.7716 30.8122 FALSE SET_CHAR_COORDINATES scplayer 2300.1116 -16.5618 25.4844 SET_CHAR_HEADING scplayer 90.0 ENDIF DO_FADE 600 FADE_IN ENDIF ENDIF ENDIF RETURN // ************************************ MISSION PASSED ************************************* mission_cat2_passed: cat_counter ++ ++ cat_getaway_dialogue SET_INT_STAT PASSED_CAT2 1 cat_money_collected += 10000 PRINT_WITH_NUMBER_BIG ( M_PASS ) 10000 5000 1 //"Mission Passed!" ADD_SCORE player1 10000 //amount of cash reward CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 //REGISTER_MISSION_PASSED cat2 PLAYER_MADE_PROGRESS 1 REGISTER_MISSION_PASSED ( CAT_2 ) //Used in the stats flag_cat_mission2_passed = 1 // IF cat_otb_banter = 1 cat_otb_banter = 2 ENDIF IF cat_liquor_banter = 1 cat_liquor_banter = 2 ENDIF // RETURN // *********************************** MISSION CLEANUP ************************************* mission_cat2_cleanup: CLEAR_MISSION_AUDIO 3 IF DOES_OBJECT_EXIST pc_door[0] DELETE_OBJECT pc_door[0] ENDIF CREATE_OBJECT_NO_OFFSET CR_DOOR_01 2322.845 8.304 25.483 pc_door[0] DONT_REMOVE_OBJECT pc_door[0] set_object_collision_damage_effect pc_door[0] FALSE FREEZE_OBJECT_POSITION pc_door[0] TRUE IF DOES_OBJECT_EXIST pc_door[1] DELETE_OBJECT pc_door[1] ENDIF CREATE_OBJECT_NO_OFFSET CR_DOOR_01 2316.233 0.712 25.742 pc_door[1] DONT_REMOVE_OBJECT pc_door[1] SET_OBJECT_HEADING pc_door[1] 270.0 FREEZE_OBJECT_POSITION pc_door[1] TRUE set_object_collision_damage_effect pc_door[1] FALSE IF DOES_OBJECT_EXIST pc_door[2] DELETE_OBJECT pc_door[2] ENDIF CREATE_OBJECT_NO_OFFSET CR_DOOR_03 2304.257 -17.744 25.742 pc_door[2] DONT_REMOVE_OBJECT pc_door[2] FREEZE_OBJECT_POSITION pc_door[2] TRUE set_object_collision_damage_effect pc_door[2] FALSE IF DOES_OBJECT_EXIST pc_door[3] DELETE_OBJECT pc_door[3] ENDIF CREATE_OBJECT_NO_OFFSET CR_DOOR_03 2304.257 -14.583 25.742 pc_door[3] DONT_REMOVE_OBJECT pc_door[3] FREEZE_OBJECT_POSITION pc_door[3] TRUE SET_OBJECT_HEADING pc_door[3] 180.0 set_object_collision_damage_effect pc_door[3] FALSE SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 MARK_MODEL_AS_NO_LONGER_NEEDED COPCARRU MARK_MODEL_AS_NO_LONGER_NEEDED COPBIKE MARK_MODEL_AS_NO_LONGER_NEEDED CSHER MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 //MARK_MODEL_AS_NO_LONGER_NEEDED PCJ600 MARK_MODEL_AS_NO_LONGER_NEEDED CSHER MARK_MODEL_AS_NO_LONGER_NEEDED COPCARRU MARK_MODEL_AS_NO_LONGER_NEEDED WMYSGRD MARK_MODEL_AS_NO_LONGER_NEEDED SWMYRI MARK_MODEL_AS_NO_LONGER_NEEDED WFYSTEW MARK_MODEL_AS_NO_LONGER_NEEDED ENFORCER MARK_MODEL_AS_NO_LONGER_NEEDED COPBIKE MARK_MODEL_AS_NO_LONGER_NEEDED KMB_ATM1 MARK_MODEL_AS_NO_LONGER_NEEDED KMB_ATM2 MARK_MODEL_AS_NO_LONGER_NEEDED KMB_ATM3 MARK_MODEL_AS_NO_LONGER_NEEDED MTSAFE MARK_MODEL_AS_NO_LONGER_NEEDED CR_DOOR_01 MARK_MODEL_AS_NO_LONGER_NEEDED CR_DOOR_03 REMOVE_CAR_RECORDING 156 REMOVE_CAR_RECORDING 157 REMOVE_CAR_RECORDING 123 REMOVE_CAR_RECORDING 124 REMOVE_CAR_RECORDING 158 REMOVE_CAR_RECORDING 159 REMOVE_CAR_RECORDING 160 REMOVE_CAR_RECORDING 161 REMOVE_CAR_RECORDING 116 REMOVE_CAR_RECORDING 117 REMOVE_CAR_RECORDING 118 REMOVE_CAR_RECORDING 119 REMOVE_CAR_RECORDING 123 REMOVE_CAR_RECORDING 124 REMOVE_CAR_RECORDING 160 REMOVE_CAR_RECORDING 161 REMOVE_CAR_RECORDING 156 REMOVE_CAR_RECORDING 157 REMOVE_CAR_RECORDING 158 REMOVE_CAR_RECORDING 159 REMOVE_ANIMATION SHOP REMOVE_ANIMATION MISC REMOVE_ANIMATION OTB REMOVE_ANIMATION GANGS REMOVE_ANIMATION ROB_BANK SWITCH_ROADS_ON 2344.5178 36.1468 36.0359 2269.7183 -44.3760 23.0569 REMOVE_BLIP catalina_blip REMOVE_BLIP mission_blip REMOVE_BLIP atm_blip[0] REMOVE_BLIP atm_blip[1] REMOVE_BLIP atm_blip[2] REMOVE_BLIP atm_blip[3] MARK_OBJECT_AS_NO_LONGER_NEEDED atm_static[0] MARK_OBJECT_AS_NO_LONGER_NEEDED atm_static[1] MARK_OBJECT_AS_NO_LONGER_NEEDED atm_static[2] //MARK_OBJECT_AS_NO_LONGER_NEEDED atm_static[3] //MARK_OBJECT_AS_NO_LONGER_NEEDED door[0] //MARK_OBJECT_AS_NO_LONGER_NEEDED door[1] //MARK_OBJECT_AS_NO_LONGER_NEEDED door[2] //MARK_OBJECT_AS_NO_LONGER_NEEDED door[3] //IF DOES_OBJECT_EXIST pc_door[0] // set_object_collision_damage_effect pc_door[0] true //ENDIF //IF DOES_OBJECT_EXIST pc_door[1] // set_object_collision_damage_effect pc_door[1] true //ENDIF //IF DOES_OBJECT_EXIST pc_door[2] // set_object_collision_damage_effect pc_door[2] true //ENDIF //IF DOES_OBJECT_EXIST pc_door[3] // set_object_collision_damage_effect pc_door[3] true //ENDIF IF NOT IS_CAR_DEAD copcar1 MARK_CAR_AS_NO_LONGER_NEEDED copcar1 ENDIF IF NOT IS_CAR_DEAD copcar2 MARK_CAR_AS_NO_LONGER_NEEDED copcar2 ENDIF IF NOT IS_CAR_DEAD copcar3 MARK_CAR_AS_NO_LONGER_NEEDED copcar3 ENDIF IF NOT IS_CAR_DEAD copcar4 MARK_CAR_AS_NO_LONGER_NEEDED copcar4 ENDIF //IF NOT IS_CHAR_DEAD alley_cop1 // FREEZE_CHAR_POSITION alley_cop1 FALSE // MARK_CHAR_AS_NO_LONGER_NEEDED alley_cop1 // //ENDIF // //IF NOT IS_CHAR_DEAD alley_cop2 // FREEZE_CHAR_POSITION alley_cop2 FALSE // MARK_CHAR_AS_NO_LONGER_NEEDED alley_cop2 //ENDIF IF NOT IS_CHAR_DEAD copcar1_cop1 FREEZE_CHAR_POSITION copcar1_cop1 FALSE MARK_CHAR_AS_NO_LONGER_NEEDED copcar1_cop1 ENDIF IF NOT IS_CHAR_DEAD copcar1_cop2 FREEZE_CHAR_POSITION copcar1_cop2 FALSE MARK_CHAR_AS_NO_LONGER_NEEDED copcar1_cop2 ENDIF IF NOT IS_CHAR_DEAD copcar2_cop1 FREEZE_CHAR_POSITION copcar2_cop1 FALSE MARK_CHAR_AS_NO_LONGER_NEEDED copcar2_cop1 ENDIF IF NOT IS_CHAR_DEAD copcar3_cop1 FREEZE_CHAR_POSITION copcar3_cop1 FALSE MARK_CHAR_AS_NO_LONGER_NEEDED copcar3_cop1 ENDIF IF NOT IS_CHAR_DEAD copcar4_cop1 FREEZE_CHAR_POSITION copcar4_cop1 FALSE MARK_CHAR_AS_NO_LONGER_NEEDED copcar4_cop1 ENDIF IF NOT IS_CHAR_DEAD c2_fleeing_ped MARK_CHAR_AS_NO_LONGER_NEEDED c2_fleeing_ped ENDIF REMOVE_SOUND bank_alarm flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start //ALTER_WANTED_LEVEL Player1 0 SET_WANTED_MULTIPLIER 1.0 MISSION_HAS_FINISHED RETURN players_group: LVAR_INT cat_in_group catalina_blip cat_hates IF cat_in_players_group = 1 IF cat_in_group = 1 IF NOT IS_CHAR_DEAD catalina IF NOT IS_GROUP_MEMBER catalina players_group cat_in_group = 0 ADD_BLIP_FOR_CHAR catalina catalina_blip SET_BLIP_AS_FRIENDLY catalina_blip TRUE CHANGE_BLIP_DISPLAY mission_blip NEITHER CLEAR_PRINTS PRINT CAT2_14 4000 1 ENDIF ENDIF ENDIF IF cat_in_group = 0 IF NOT IS_CHAR_DEAD catalina IF IS_GROUP_MEMBER catalina players_group cat_in_group = 1 ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer catalina 10.0 10.0 FALSE MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER players_group catalina REMOVE_BLIP catalina_blip CHANGE_BLIP_DISPLAY mission_blip BOTH cat_in_group = 1 ENDIF ENDIF ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer IF cat_hates = 0 CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_ACQUAINTANCE_PED_HATE CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_DAMAGE CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_VEHICLE_DAMAGE_WEAPON CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_GUN_AIMED_AT CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_VEHICLE_DAMAGE_COLLISION CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_SEEN_COP ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_ACQUAINTANCE_PED_HATE TASK_GROUP_DRIVEBY 0.0 100.0 0.0 0.0 TRUE FALSE // ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_VEHICLE_DAMAGE_WEAPON TASK_GROUP_DRIVEBY 0.0 100.0 0.0 0.0 TRUE FALSE SET_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 cat_hates = 1 ENDIF ELSE IF cat_hates = 1 CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_ACQUAINTANCE_PED_HATE CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_DAMAGE CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_VEHICLE_DAMAGE_WEAPON CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_GUN_AIMED_AT CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_VEHICLE_DAMAGE_COLLISION CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_SEEN_COP CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_ACQUAINTANCE_PED_HATE ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_ACQUAINTANCE_PED_HATE TASK_GROUP_KILL_THREATS_BASIC 0.0 100.0 0.0 0.0 FALSE TRUE ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_DAMAGE TASK_GROUP_KILL_THREATS_BASIC 0.0 100.0 0.0 0.0 FALSE TRUE ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_GUN_AIMED_AT TASK_GROUP_KILL_THREATS_BASIC 0.0 100.0 0.0 0.0 FALSE TRUE ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE cat_decisions EVENT_SEEN_COP TASK_GROUP_KILL_THREATS_BASIC 0.0 100.0 0.0 0.0 FALSE TRUE SET_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 cat_hates = 0 ENDIF ENDIF // // IF NOT IS_CHAR_DEAD catalina // IF IS_CHAR_IN_ANY_CAR scplayer // AND IS_CHAR_IN_ANY_CAR catalina // IF cat_hates = 1 // CLEAR_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 // SET_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 // cat_hates = 0 // ENDIF // ELSE // IF cat_hates = 0 // CLEAR_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 // SET_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 // cat_hates = 1 // ENDIF // ENDIF // ENDIF ENDIF RETURN cat2_audio: SWITCH audio_flag CASE 0 //first time game starts LVAR_TEXT_LABEL audio_text[60] LVAR_INT audio_sound[60] audio_slot[3] play_slot LVAR_INT next_audio LVAR_INT audio_flag play_audio play_audio_for only_play_audio_if_player_in_car // VAR_INT play_audio_global // make sounds not attached to char LVAR_INT audio_for_char[60] audio_actor[7] play_audio_now LVAR_INT actor_int this_actor loaded_audio play_delay audio_i audio_char audio_count force_audio play_audio_delay // VIEW_INTEGER_VARIABLE play_audio play_audio // VIEW_INTEGER_VARIABLE audio_slot[1] slot1 // VIEW_INTEGER_VARIABLE audio_slot[2] slot2 $audio_text[0] = &CAT4_BI $audio_text[1] = &CAT4_CA //You're on crowd control so don't take any shit! audio_sound[1] = SOUND_CAT4_CA $audio_text[2] = &CAT4_CB //Yes’m, Miss Catalina, Miss. audio_sound[2] = SOUND_CAT4_CB $audio_text[3] = &CAT4_CD //Don’t even think about doin’ anything, motherfucker! audio_sound[3] = SOUND_CAT4_CD $audio_text[4] = &CAT4_CE //Hand over every last dollar – NOW, BITCH! audio_sound[4] = SOUND_CAT4_CE $audio_text[5] = &CAT4_CF //I’m going to empty the safe. audio_sound[5] = SOUND_CAT4_CF $audio_text[6] = &CAT4_CG //Keep these idiots covered! audio_sound[6] = SOUND_CAT4_CG $audio_text[7] = &CAT4_CH //Aigh’t, you heard the lady, no heroic shit! audio_sound[7] = SOUND_CAT4_CH $audio_text[8] = &CAT4_EA //Oh shit! audio_sound[8] = SOUND_CAT4_EA $audio_text[9] = &CAT4_EC //Shit! I give you one simple job! audio_sound[9] = SOUND_CAT4_EC $audio_text[10] = &CAT4_ED //Idiota! audio_sound[10] = SOUND_CAT4_ED $audio_text[11] = &CAT4_BA //Shit, I just bought another donut! Don't criminals have any consideration? audio_sound[11] = SOUND_CAT4_BA $audio_text[12] = &CAT4_AB //We can collect that bribe later. Might as well go and take a look. audio_sound[12] = SOUND_CAT4_AB $audio_text[13] = &CAT4_AC //We know you’re in there! audio_sound[13] = SOUND_CAT4_AC $audio_text[14] = &CAT4_AD //The game’s up! Come on out! audio_sound[14] = SOUND_CAT4_AD $audio_text[15] = &CAT4_AE //Come out real peacable, like! audio_sound[15] = SOUND_CAT4_AE $audio_text[16] = &CAT4_FB //Smash the ATM’s and get as much cash as possible! audio_sound[16] = SOUND_CAT4_FB $audio_text[17] = &CAT4_AF //Give up, you’re surrounded! audio_sound[17] = SOUND_CAT4_AF $audio_text[18] = &CAT4_FD //Quick, we haven’t much time! audio_sound[18] = SOUND_CAT4_FD $audio_text[19] = &CAT4_GB //Better take the back door! audio_sound[19] = SOUND_CAT4_GB $audio_text[20] = &CAT4_HH //Follow me! audio_sound[20] = SOUND_CAT4_HH $audio_text[21] = &CAT4_HF //Cops, take cover! audio_sound[21] = SOUND_CAT4_HF $audio_text[22] = &CAT4_AG //Thought you might try the back way! audio_sound[22] = SOUND_CAT4_AG $audio_text[23] = &CAT4_AH //We were waiting for yer! audio_sound[23] = SOUND_CAT4_AH $audio_text[24] = &CAT4_HI //Cover me! audio_sound[24] = SOUND_CAT4_HI $audio_text[25] = &CAT4_BF //Give up, you're surrounded audio_sound[25] = SOUND_CAT4_BF $audio_text[26] = &CAT4_KF //pick it up a little you retard audio_sound[26] = SOUND_CAT4_KF $audio_text[27] = &CAT4_HB //Look out carl audio_sound[27] = SOUND_CAT4_HB $audio_text[28] = &CAT4_HG //keep going! audio_sound[28] = SOUND_CAT4_HG $audio_text[29] = &CAT4_AJ //You two; FREEZE! audio_sound[29] = SOUND_CAT4_AJ $audio_text[30] = &CAT4_JA //Grab a bike and follow me! audio_sound[30] = SOUND_CAT4_JA $audio_text[31] = &CAT4_JB //You think you can keep up with a real woman? audio_sound[31] = SOUND_CAT4_JB $audio_text[32] = &CAT4_KA //You think you can keep up with a real woman? audio_sound[32] = SOUND_CAT4_KA $audio_text[33] = &CAT4_KB //You think you can keep up with a real woman? audio_sound[33] = SOUND_CAT4_KB $audio_text[34] = &CAT4_KC //You think you can keep up with a real woman? audio_sound[34] = SOUND_CAT4_KC $audio_text[35] = &CAT4_KD //You think you can keep up with a real woman? audio_sound[35] = SOUND_CAT4_KD $audio_text[36] = &CAT4_KE //You think you can keep up with a real woman? audio_sound[36] = SOUND_CAT4_KE $audio_text[37] = &CAT3_EC //C’mon, Carl, move it! audio_sound[37] = SOUND_CAT3_EC $audio_text[38] = &CAT_GJ //C’mon, Carl, move it! audio_sound[38] = SOUND_CAT_GJ $audio_text[39] = &CAT4_BK //Attention all units audio_sound[39] = SOUND_CAT4_BK audio_for_char[1] = 1 audio_for_char[2] = 2 audio_for_char[3] = 2 audio_for_char[4] = 1 audio_for_char[5] = 1 audio_for_char[6] = 1 audio_for_char[7] = 2 audio_for_char[8] = 2 audio_for_char[9] = 1 audio_for_char[10] = 1 audio_for_char[11] = 3 audio_for_char[12] = 4 audio_for_char[13] = 3 audio_for_char[14] = 4 audio_for_char[15] = 3 audio_for_char[16] = 1 audio_for_char[17] = 0 audio_for_char[18] = 1 audio_for_char[19] = 1 audio_for_char[20] = 1 audio_for_char[21] = 5 audio_for_char[22] = 5 audio_for_char[23] = 1 audio_for_char[24] = 1 audio_for_char[25] = 6 audio_for_char[26] = 1 audio_for_char[27] = 1 audio_for_char[28] = 1 audio_for_char[29] = 6 audio_for_char[30] = 1 audio_for_char[31] = 1 audio_for_char[32] = 0 audio_for_char[33] = 0 audio_for_char[34] = 0 audio_for_char[35] = 0 audio_for_char[36] = 0 audio_for_char[37] = 1 audio_for_char[38] = 1 audio_for_char[39] = 0 audio_actor[1] = catalina audio_actor[2] = scplayer audio_actor[5] = scplayer //alley cop1 audio_actor[6] = scplayer //alley cop2 //1 = catalina //2 = player audio_flag = 1 // play_audio = 0 LOAD_MISSION_AUDIO 1 audio_sound[1] LOAD_MISSION_AUDIO 2 audio_sound[2] audio_slot[1] = 1 audio_slot[2] = 2 BREAK CASE 1 //waiting to play audio IF NOT play_audio = 0 IF TIMERA > play_audio_delay IF HAS_MISSION_AUDIO_FINISHED 1 AND HAS_MISSION_AUDIO_FINISHED 2 IF audio_slot[1] = play_audio play_slot = 1 ELSE IF audio_slot[2] = play_audio play_slot = 2 ELSE play_slot = 1 audio_slot[1] = play_audio CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 audio_sound[play_audio] //audio hasn't been requested yet ENDIF ENDIF IF HAS_MISSION_AUDIO_LOADED play_slot actor_int = audio_for_char[play_audio] this_actor = audio_actor[actor_int] IF NOT force_audio = 1 //otherwise audio will not play if no mission peds are nearby audio_i = 1 audio_count = 0 WHILE audio_i < 7 audio_char = audio_actor[audio_i] IF NOT audio_char = 0 IF NOT audio_char = this_actor IF NOT IS_CHAR_DEAD this_actor IF NOT IS_CHAR_DEAD audio_char IF LOCATE_CHAR_ANY_MEANS_CHAR_3D this_actor audio_char 10.0 10.0 10.0 FALSE audio_count ++ ENDIF ENDIF ENDIF ENDIF ENDIF audio_i++ ENDWHILE ENDIF IF force_audio = 1 OR audio_count > 0 OR audio_for_char[play_audio] = 0 IF NOT audio_for_char[play_audio] = 0 IF NOT IS_CHAR_DEAD this_actor IF play_audio_global = 0 ATTACH_MISSION_AUDIO_TO_CHAR play_slot this_actor ENDIF IF NOT IS_CHAR_TALKING this_actor play_audio_now = 1 START_CHAR_FACIAL_TALK this_actor 15000 ELSE DISABLE_CHAR_SPEECH this_actor FALSE ENDIF IF NOT this_actor = 0 IF NOT IS_CHAR_DEAD this_Actor SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH this_actor TRUE ENDIF ENDIF ENDIF ENDIF IF audio_for_char[play_audio] = 0 play_audio_now = 1 ENDIF IF only_play_audio_if_player_in_car = 1 IF NOT IS_CHAR_IN_ANY_CAR scplayer play_audio_now = 0 ENDIF ENDIF IF play_audio_now = 1 PLAY_MISSION_AUDIO play_slot CLEAR_PRINTS PRINT $audio_text[play_audio] 10000 1 audio_flag ++ play_audio_now = 0 play_audio ++ next_audio = play_audio // if the other slot doesn't already have the next audio loaded, then load it. IF NOT audio_sound[play_audio] = 0 IF play_slot = 1 IF NOT audio_slot[2] = play_audio LOAD_MISSION_AUDIO 2 audio_sound[play_audio] audio_slot[2] = play_audio ENDIF ELSE IF NOT audio_slot[1] = play_audio LOAD_MISSION_AUDIO 1 audio_sound[play_audio] audio_slot[1] = play_audio ENDIF ENDIF ENDIF ENDIF ELSE audio_flag = 6 ENDIF ELSE LOAD_MISSION_AUDIO play_slot audio_sound[play_audio] ENDIF ENDIF ENDIF ENDIF BREAK CASE 2 // check if audio has/should finish // fake_flag = 13 IF HAS_MISSION_AUDIO_FINISHED play_slot IF NOT IS_CHAR_DEAD this_actor SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH this_actor FALSE ENDIF audio_flag++ ELSE IF DOES_CHAR_EXIST this_actor IF IS_CHAR_DEAD this_actor audio_flag++ ENDIF ENDIF ENDIF BREAK CASE 3 //clear audio IF NOT IS_CHAR_DEAD this_actor SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH this_actor FALSE ENDIF // fake_flag = 14 CLEAR_MISSION_AUDIO play_slot audio_slot[play_slot] = 0 CLEAR_PRINTS IF NOT IS_CHAR_DEAD this_actor ENABLE_CHAR_SPEECH this_actor ENDIF audio_flag++ BREAK CASE 4 //request next audio // fake_flag = 15 IF NOT IS_CHAR_DEAD this_actor SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH this_actor FALSE ENDIF play_audio ++ IF NOT audio_sound[play_audio] = 0 LOAD_MISSION_AUDIO play_slot audio_sound[play_audio] audio_slot[play_slot] = play_audio ENDIF play_audio_for -= 1 IF NOT play_audio_for > 0 play_audio = 0 ELSE play_audio = next_audio ENDIF audio_flag = 1 BREAK CASE 5 // clear all for cut scene skip IF NOT IS_CHAR_DEAD this_actor SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH this_actor FALSE ENDIF audio_flag = 1 play_audio = 0 play_audio_for = 0 CLEAR_MISSION_AUDIO play_slot audio_slot[play_slot] = 0 CLEAR_PRINTS IF NOT IS_CHAR_DEAD this_actor ENABLE_CHAR_SPEECH this_actor ENDIF BREAK ENDSWITCH RETURN /* CASE 1 //waiting to play audio IF NOT play_audio = 0 fake_flag = 1 IF TIMERA > play_delay fake_flag = 2 IF HAS_MISSION_AUDIO_FINISHED 1 AND HAS_MISSION_AUDIO_FINISHED 2 fake_flag = 3 IF audio_slot[1] = play_audio play_slot = 1 ELSE IF audio_slot[2] = play_audio play_slot = 2 ELSE play_slot = 1 audio_slot[1] = play_audio CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 audio_sound[play_audio] //audio hasn't been requested yet fake_flag = 4 ENDIF ENDIF IF HAS_MISSION_AUDIO_LOADED play_slot fake_flag = 5 IF NOT audio_for_char[play_audio] = 0 fake_flag = 6 actor_int = audio_for_char[play_audio] this_actor = audio_actor[actor_int] IF NOT IS_CHAR_DEAD this_actor fake_flag = 7 IF NOT IS_CHAR_TALKING this_actor fake_flag = 8 ATTACH_MISSION_AUDIO_TO_CHAR play_slot this_actor PLAY_MISSION_AUDIO play_slot CLEAR_PRINTS PRINT $audio_text[play_audio] 10000 1 audio_flag ++ play_audio ++ next_audio = play_audio // if the other slot doesn't already have the next audio loaded, then load it. IF NOT audio_sound[play_audio] = 0 fake_flag = 9 IF play_slot = 1 fake_flag = 10 IF NOT audio_slot[2] = play_audio fake_flag = 11 LOAD_MISSION_AUDIO 2 audio_sound[play_audio] audio_slot[2] = play_audio ENDIF ELSE IF NOT audio_slot[1] = play_audio fake_flag = 12 LOAD_MISSION_AUDIO 1 audio_sound[play_audio] audio_slot[1] = play_audio ENDIF ENDIF ENDIF ELSE DISABLE_CHAR_SPEECH this_actor FALSE ENDIF ENDIF ENDIF ELSE LOAD_MISSION_AUDIO play_slot audio_sound[play_audio] ENDIF ENDIF ENDIF ENDIF BREAK */ } MISSION_START // ------------------------------------------------------------------------------------------------ // Catalina Mission 3: Gas Station Robbery { SCRIPT_NAME cat3 // Begin... GOSUB mission_start_cat3 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_cat3 ENDIF GOSUB mission_cleanup_cat3 MISSION_END // ------------------------------------------------------------------------------------------------ // Variables // ---- Mission Pass Score LVAR_INT c3_pass // ---- Flags LVAR_INT c3_stage c3_in_car c3_cut LVAR_INT c3_help_text_flag LVAR_INT c3_cut_delay c3_end_brake // ---- Blips LVAR_INT c3_gas_loc_blip // ---- Timers / Counters LVAR_INT c3_timer_diff c3_timer_end c3_timer_start // ---- Sequences LVAR_INT c3_clerk_cut_seq_1 c3_cat_seq_1 LVAR_INT c3_task_status LVAR_INT c3_end_cut_1 // ---- Groups LVAR_INT c3_grouped // ---- Coords LVAR_FLOAT c3_gas_loc_x c3_gas_loc_y c3_gas_loc_z LVAR_FLOAT c3_cat_gas_x c3_cat_gas_y c3_cat_gas_z // ---- Cutscene Check LVAR_FLOAT c3_min_x c3_min_y c3_min_z c3_max_x c3_max_y c3_max_z LVAR_FLOAT c3_offset_x c3_offset_y c3_offset_z // ---- Cameras LVAR_FLOAT c3_cam_x[10] c3_cam_y[10] c3_cam_z[10] LVAR_FLOAT c3_cam_look_x[10] c3_cam_look_y[10] c3_cam_look_z[10] // ---- Dialogue LVAR_INT c3_random_dialogue c3_random_dialogue_last[2] c3_dialogue_playing LVAR_INT c3_text_timer_diff c3_text_timer_end c3_text_timer_start LVAR_TEXT_LABEL c3_text[56] LVAR_INT c3_audio_char LVAR_INT c3_audio[56] c3_counter c3_audio_playing c3_audio_slot c3_alt_slot c3_ahead_counter // ---- Misc VAR_INT c3_trailer_health_display c3_rand_escort LVAR_INT c3_trailer_health c3_trailer_health_old //c3_trailer_health // ---- Entities LVAR_INT c3_player_car // ------------------------------------------------------------------------------------------------ // -------- Create Characters c3_load_all: REQUEST_MODEL BMYPOL2 REQUEST_MODEL WMOST REQUEST_MODEL PETRO REQUEST_MODEL PETROTR REQUEST_MODEL SABRE LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED BMYPOL2 OR NOT HAS_MODEL_LOADED WMOST OR NOT HAS_MODEL_LOADED PETRO OR NOT HAS_MODEL_LOADED PETROTR OR NOT HAS_MODEL_LOADED SABRE WAIT 0 ENDWHILE RETURN // ------------ Catalina c3_cat_create: LVAR_INT catalina_blip REQUEST_ANIMATION MISC REQUEST_MODEL MICRO_UZI REQUEST_MODEL CHROMEGUN LOAD_MISSION_AUDIO 3 SOUND_TRAILER_HOOKUP LOAD_SPECIAL_CHARACTER 1 cat LOAD_ALL_MODELS_NOW WHILE NOT HAS_ANIMATION_LOADED MISC OR NOT HAS_MODEL_LOADED MICRO_UZI OR NOT HAS_MODEL_LOADED CHROMEGUN OR NOT HAS_MISSION_AUDIO_LOADED 3 OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 WAIT 0 ENDWHILE IF NOT DOES_CHAR_EXIST catalina CREATE_CHAR PEDTYPE_CIVFEMALE SPECIAL01 c3_cat_gas_x c3_cat_gas_y c3_cat_gas_z catalina ELSE DELETE_CHAR catalina CREATE_CHAR PEDTYPE_CIVFEMALE SPECIAL01 c3_cat_gas_x c3_cat_gas_y c3_cat_gas_z catalina ENDIF IF NOT IS_CHAR_DEAD catalina GIVE_WEAPON_TO_CHAR catalina WEAPONTYPE_SHOTGUN 30000 ENDIF //SET_CHAR_DROWNS_IN_WATER catalina TRUE RETURN ADD_BLIP_FOR_CHAR catalina catalina_blip ADD_BLIP_FOR_COORD c3_gas_loc_x c3_gas_loc_y c3_gas_loc_z c3_gas_loc_blip c3_cat_delete: MARK_MODEL_AS_NO_LONGER_NEEDED desert_eagle RETURN // ------------ Trucker // ------------ Clerk c3_clerk_create: LVAR_INT c3_clerk[2] c3_clerk_status LVAR_FLOAT c3_clerk_x[2] c3_clerk_y[2] c3_clerk_z[2] c3_clerk_h[2] c3_clerk_cruise c3_clerk_x[0] = 664.21 c3_clerk_y[0] = -569.54 c3_clerk_z[0] = 15.37 c3_clerk_h[0] = 165.23 CLEAR_AREA c3_clerk_x[0] c3_clerk_y[0] c3_clerk_z[0] 3.0 TRUE CREATE_CHAR PEDTYPE_CIVMALE BMYPOL2 c3_clerk_x[0] c3_clerk_y[0] c3_clerk_z[0] c3_clerk[0] GIVE_WEAPON_TO_CHAR c3_clerk[0] WEAPONTYPE_MICRO_UZI 30000 SET_CHAR_HEADING c3_clerk[0] c3_clerk_h[0] SET_CHAR_HEALTH c3_clerk[0] 2000 SET_CHAR_CAN_BE_SHOT_IN_VEHICLE c3_clerk[0] FALSE SET_CHAR_PROOFS c3_clerk[0] FALSE TRUE TRUE FALSE TRUE c3_clerk_x[1] = 664.9634 c3_clerk_y[1] = -566.7849 c3_clerk_z[1] = 15.3359 c3_clerk_h[1] = 139.1057 CLEAR_AREA c3_clerk_x[1] c3_clerk_y[1] c3_clerk_z[1] 3.0 TRUE CREATE_CHAR PEDTYPE_CIVMALE WMOST c3_clerk_x[1] c3_clerk_y[1] c3_clerk_z[1] c3_clerk[1] SET_CHAR_HEADING c3_clerk[1] c3_clerk_h[1] SET_CHAR_HEALTH c3_clerk[1] 2000 SET_CHAR_CAN_BE_SHOT_IN_VEHICLE c3_clerk[1] FALSE SET_CHAR_PROOFS c3_clerk[1] FALSE TRUE TRUE FALSE TRUE RETURN c3_clerk_delete: MARK_MODEL_AS_NO_LONGER_NEEDED BMYPOL2 RETURN // ---- Catalina's Friend LVAR_INT c3_buyer LVAR_FLOAT c3_buyer_x c3_buyer_y c3_buyer_z c3_buyer_h c3_buyer_create: REQUEST_MODEL BMOST WHILE NOT HAS_MODEL_LOADED BMOST WAIT 0 ENDWHILE c3_buyer_x = -78.4672 c3_buyer_y = -1134.7391 c3_buyer_z = 0.0733 c3_buyer_h = 326.2953 CLEAR_AREA c3_buyer_x c3_buyer_y c3_buyer_z 3.0 TRUE CREATE_CHAR PEDTYPE_CIVMALE BMOST c3_buyer_x c3_buyer_y c3_buyer_z c3_buyer SET_CHAR_HEADING c3_buyer c3_buyer_h RETURN CREATE_CHAR PEDTYPE_CIVMALE BMOST c3_buyer_x c3_buyer_y c3_buyer_z c3_audio_char // ------------------------------------------------------------------------------------------------ // -------- Vehicles // ------------ Truck c3_truck_create: LVAR_INT c3_truck c3_truck_blip LVAR_FLOAT c3_truck_x c3_truck_y c3_truck_z c3_truck_h c3_truck_speed c3_truck_x = 657.49 c3_truck_y = -585.13 c3_truck_z = 16.36 c3_truck_h = 170.66 CLEAR_AREA c3_truck_x c3_truck_y c3_truck_z 15.0 TRUE CREATE_CAR PETRO c3_truck_x c3_truck_y c3_truck_z c3_truck SET_CAR_HEADING c3_truck c3_truck_h SET_CAN_BURST_CAR_TYRES c3_truck FALSE SUPPRESS_CAR_MODEL PETRO SUPPRESS_CAR_MODEL LINERUN SET_CAR_PROOFS c3_truck TRUE FALSE FALSE FALSE FALSE SET_LOAD_COLLISION_FOR_CAR_FLAG c3_truck FALSE RETURN CREATE_CAR LINERUN c3_truck_x c3_truck_y c3_truck_z c3_player_car // ------------ Escape Car c3_trailer_create: LVAR_INT c3_trailer c3_trailer_blip LVAR_FLOAT c3_trailer_x c3_trailer_y c3_trailer_z c3_trailer_h c3_trailer_x = 667.49 c3_trailer_y = -583.13 c3_trailer_z = 16.36 c3_trailer_h = 184.66 CLEAR_AREA c3_trailer_x c3_trailer_y c3_trailer_z 15.0 TRUE CREATE_CAR PETROTR c3_trailer_x c3_trailer_y c3_trailer_z c3_trailer SET_CAR_HEADING c3_trailer c3_trailer_h SET_CAR_HEALTH c3_trailer 1250 SET_CAR_PROOFS c3_trailer TRUE TRUE TRUE TRUE TRUE SET_CAN_BURST_CAR_TYRES c3_trailer FALSE SET_LOAD_COLLISION_FOR_CAR_FLAG c3_trailer FALSE RETURN ADD_BLIP_FOR_CAR c3_trailer c3_trailer_blip // ------------ Chase Car c3_chase_create: LVAR_INT c3_chase c3_chase_blip LVAR_FLOAT c3_chase_x c3_chase_y c3_chase_z c3_chase_h c3_chase_x = 667.54 c3_chase_y = -545.97 c3_chase_z = 15.09 c3_chase_h = 96.19 CLEAR_AREA c3_chase_x c3_chase_y c3_chase_z 3.0 TRUE CREATE_CAR SABRE c3_chase_x c3_chase_y c3_chase_z c3_chase SET_CAR_HEADING c3_chase c3_chase_h SET_CAR_CRUISE_SPEED c3_chase 50.0 SET_CAR_PROOFS c3_chase TRUE TRUE TRUE TRUE TRUE LOCK_CAR_DOORS c3_chase CARLOCK_LOCKED SET_CAN_BURST_CAR_TYRES c3_chase FALSE SET_LOAD_COLLISION_FOR_CAR_FLAG c3_chase FALSE FREEZE_CAR_POSITION c3_chase TRUE RETURN c3_exp_car_create: LVAR_INT c3_exp_car c3_exp_car_blip LVAR_FLOAT c3_exp_car_x c3_exp_car_y c3_exp_car_z c3_exp_car_h REQUEST_MODEL SADLER WHILE NOT HAS_MODEL_LOADED SADLER WAIT 0 ENDWHILE c3_exp_car_x = -87.9239 c3_exp_car_y = -1160.5974 c3_exp_car_z = 1.1091 c3_exp_car_h = 170.4884 CLEAR_AREA c3_exp_car_x c3_exp_car_y c3_exp_car_z 3.0 TRUE CREATE_CAR SADLER c3_exp_car_x c3_exp_car_y c3_exp_car_z c3_exp_car SET_CAR_HEADING c3_exp_car c3_exp_car_h SET_CAR_PROOFS c3_exp_car TRUE TRUE TRUE TRUE TRUE RETURN // ---- Catalina's Bike c3_cat_bike_create: LVAR_INT c3_cat_bike LVAR_FLOAT c3_cat_bike_x c3_cat_bike_y c3_cat_bike_z c3_cat_bike_h REQUEST_MODEL SANCHEZ REQUEST_CAR_RECORDING 189 WHILE NOT HAS_MODEL_LOADED SANCHEZ OR NOT HAS_CAR_RECORDING_BEEN_LOADED 189 WAIT 0 ENDWHILE c3_cat_bike_x = -88.1347 c3_cat_bike_y = -1127.3966 c3_cat_bike_z = 0.0847 c3_cat_bike_h = 348.4666 CLEAR_AREA c3_cat_bike_x c3_cat_bike_y c3_cat_bike_z 3.0 TRUE CREATE_CAR SANCHEZ c3_cat_bike_x c3_cat_bike_y c3_cat_bike_z c3_cat_bike SET_CAR_HEADING c3_cat_bike c3_cat_bike_h IF NOT IS_CHAR_DEAD catalina WARP_CHAR_INTO_CAR catalina c3_cat_bike TASK_LOOK_AT_CHAR catalina scplayer -1 SET_CHAR_COORDINATES scplayer -86.3344 -1127.3159 0.0781 SET_CHAR_HEADING scplayer 6.8740 TASK_LOOK_AT_CHAR scplayer catalina -1 ENDIF RETURN // ------------------------------------------------------------------------------------------------ // Start Mission mission_start_cat3: //REGISTER_MISSION_GIVEN flag_player_on_mission = 1 WAIT 0 LOAD_MISSION_TEXT CAT // ------------------------------------------------------------------------------------------------ // Initialize Variables // ---- Mission Pass Score c3_pass = 5000 // ---- Flags c3_stage = 0 c3_in_car = 1 c3_cut = 0 c3_help_text_flag = 0 c3_cut_delay = 0 c3_trailer_health_old = 1500 c3_end_brake = 0 c3_counter = 0 c3_ahead_counter = 1 c3_audio_slot = 1 c3_alt_slot = 2 c3_audio_playing = 0 // ---- Dialogue Text $c3_text[1] = CAT3_AA // CATALINA: Hand over the takings, or I blow your fucking balls off! $c3_text[2] = CAT3_AB // CLERK 1: This here’s bulletproof glass! $c3_text[3] = CAT3_AC // CLERK 1: So you can just fuck off, bitch, before I call the sheriff! $c3_text[4] = CAT3_AD // CLERK 2: What you doing, man, just give her the cash! $c3_text[5] = CAT3_AE // CATALINA: Suit yourself, macaron. $c3_text[6] = CAT3_AF // CATALINA: Change of plan, Carl, we’re taking the tanker! $c3_text[7] = CAT3_AG // CLERK 1: Hey! What you doing? $c3_text[8] = CAT3_BA // CATALINA: Move it, you lazy bastard, get that tanker hooked up! $c3_text[9] = CAT3_BB // CARL: Yo, I’m on it, I’m on it! $c3_text[10] = CAT3_BC // CLERK 1: You won’t get away with this! $c3_text[11] = CAT3_BD // CATALINA: Shut your spotty little mouth! $c3_text[12] = CAT3_CA // CATALINA: Drive! I know a guy who’ll pay for this rig and its cargo! $c3_text[13] = CAT3_CB // CLERK 1: I ain’t losing another crappy job because of some crazy bitch! $c3_text[14] = CAT3_CC // CLERK 1: C’mon, Derek, we’re going to stop those bastards! $c3_text[15] = CAT3_CD // CLERK 2: But I don’t wanna! $c3_text[16] = CAT3_DA // CATALINA: Follow me! $c3_text[17] = CAT3_DB // CLERK 1: Oh no you don’t, bitch! $c3_text[18] = CAT3_DC // CLERK 1: C’mon, Derek, we’re going to be local heroes! $c3_text[19] = CAT3_DD // CLERK 2: I’d be happier staying here and stacking shelves! $c3_text[20] = CAT3_EA // CATALINA: Follow me! $c3_text[21] = CAT3_EB // CATALINA: What is keeping you? $c3_text[22] = CAT3_EC // CATALINA: C’mon, Carl, move it! $c3_text[23] = CAT3_ED // CATALINA: Not far now! $c3_text[24] = CAT3_EE // CATALINA: This way! $c3_text[25] = CAT3_EF // CATALINA: Where have you been? $c3_text[26] = CAT3_EG // CATALINA: I thought you said you could drive! $c3_text[27] = CAT3_FA // CLERK 1: Keep her steady so I can get a good shot! $c3_text[28] = CAT3_FB // CLERK 1: Pull alongside! $c3_text[29] = CAT3_FC // CLERK 1: Keep up with them! $c3_text[30] = CAT3_FD // CLERK 1: Get ahead of them! $c3_text[31] = CAT3_FE // CLERK 1: Block their route! $c3_text[32] = CAT3_FF // CLERK 1: Steady... steady... $c3_text[33] = CAT3_GA // CLERK 2: It ain't worth it! $c3_text[34] = CAT3_GB // CLERK 2: I'm scared! $c3_text[35] = CAT3_GC // CLERK 2: This ain't my fight! $c3_text[36] = CAT3_GD // CLERK 2: We'll get ourselves killed! $c3_text[37] = CAT3_GE // CLERK 2: I don't wanna do this! $c3_text[38] = CAT3_GF // CLERK 2: Oh my god, I'm gonnna die! $c3_text[39] = CAT3_GG // CLERK 2: That rig will crush us! $c3_text[40] = CAT3_HA // CATALINA: Pull up in that depot up ahead! $c3_text[41] = CAT3_HB // CATALINA: That's the place, up ahead! $c3_text[42] = CAT3_HC // CATALINA: Yeehaa, that's the place, go, Carl, go! $c3_text[43] = CAT3_JA // CATALINA: Hello, Mr. Whittaker! $c3_text[44] = CAT3_JB // MR WHITTAKER: Catalina! What have you brought me today? $c3_text[45] = CAT3_JC // CATALINA: A rig and tanker, full to the brim with premium gas! $c3_text[46] = CAT3_JD // MR WHITTAKER: Never seen it, never saw you, never gave you this wad of cash! $c3_text[47] = CAT3_JE // CATALINA: Nice not doing business! $c3_text[48] = CAT3_JF // MR WHITTAKER: Likewise. Now get out of here, before the cops come snooping. $c3_text[49] = CAT3_JG // MR WHITTAKER: You ever get hold of another rig, just drop it in, $c3_text[50] = CAT3_JH // MR WHITTAKER: I'll always give a good price! $c3_text[51] = CAT3_JJ // MR WHITTAKER: You ever want to run some freight for me just drop in. $c3_text[52] = CAT3_JK // MR WHITTAKER: I've always got shit needs moving! $c3_text[53] = CATX_UJ $c3_text[54] = CATX_UK $c3_text[55] = CAT_PF // ---- Dialogue Audio c3_audio[1] = SOUND_CAT3_AA // CATALINA: Hand over the takings, or I blow your fucking balls off! c3_audio[2] = SOUND_CAT3_AB // CLERK 1: This here’s bulletproof glass! c3_audio[3] = SOUND_CAT3_AC // CLERK 1: So you can just fuck off, bitch, before I call the sheriff! c3_audio[4] = SOUND_CAT3_AD // CLERK 2: What you doing, man, just give her the cash! c3_audio[5] = SOUND_CAT3_AE // CATALINA: Suit yourself, macaron. c3_audio[6] = SOUND_CAT3_AF // CATALINA: Change of plan, Carl, we’re taking the tanker! c3_audio[7] = SOUND_CAT3_AG // CLERK 1: Hey! What you doing? c3_audio[8] = SOUND_CAT3_BA // CATALINA: Move it, you lazy bastard, get that tanker hooked up! c3_audio[9] = SOUND_CAT3_BB // CARL: Yo, I’m on it, I’m on it! c3_audio[10] = SOUND_CAT3_BC // CLERK 1: You won’t get away with this! c3_audio[11] = SOUND_CAT3_BD // CATALINA: Shut your spotty little mouth! c3_audio[12] = SOUND_CAT3_CA // CATALINA: Drive! I know a guy who’ll pay for this rig and its cargo! c3_audio[13] = SOUND_CAT3_CB // CLERK 1: I ain’t losing another crappy job because of some crazy bitch! c3_audio[14] = SOUND_CAT3_CC // CLERK 1: C’mon, Derek, we’re going to stop those bastards! c3_audio[15] = SOUND_CAT3_CD // CLERK 2: But I don’t wanna! c3_audio[16] = SOUND_CAT3_DA // CATALINA: Follow me! c3_audio[17] = SOUND_CAT3_DB // CLERK 1: Oh no you don’t, bitch! c3_audio[18] = SOUND_CAT3_DC // CLERK 1: C’mon, Derek, we’re going to be local heroes! c3_audio[19] = SOUND_CAT3_DD // CLERK 2: I’d be happier staying here and stacking shelves! c3_audio[20] = SOUND_CAT3_EA // CATALINA: Follow me! c3_audio[21] = SOUND_CAT3_EB // CATALINA: What is keeping you? c3_audio[22] = SOUND_CAT3_EC // CATALINA: C’mon, Carl, move it! c3_audio[23] = SOUND_CAT3_ED // CATALINA: Not far now! c3_audio[24] = SOUND_CAT3_EE // CATALINA: This way! c3_audio[25] = SOUND_CAT3_EF // CATALINA: Where have you been? c3_audio[26] = SOUND_CAT3_EG // CATALINA: I thought you said you could drive! c3_audio[27] = SOUND_CAT3_FA // Keep her steady so I can get a good shot! c3_audio[28] = SOUND_CAT3_FB // Pull alongside! c3_audio[29] = SOUND_CAT3_FC // Keep up with them! c3_audio[30] = SOUND_CAT3_FD // Get ahead of them! c3_audio[31] = SOUND_CAT3_FE // Block their route! c3_audio[32] = SOUND_CAT3_FF // Steady... steady... c3_audio[33] = SOUND_CAT3_GA // It ain't worth it! c3_audio[34] = SOUND_CAT3_GB // I'm scared! c3_audio[35] = SOUND_CAT3_GC // This ain't my fight! c3_audio[36] = SOUND_CAT3_GD // We'll get ourselves killed! c3_audio[37] = SOUND_CAT3_GE // I don't wanna do this! c3_audio[38] = SOUND_CAT3_GF // Oh my god, I'm gonnna die! c3_audio[39] = SOUND_CAT3_GG // That rig will crush us! c3_audio[40] = SOUND_CAT3_HA // Pull up in that depot up ahead! c3_audio[41] = SOUND_CAT3_HB // That's the place, up ahead! c3_audio[42] = SOUND_CAT3_HC // Yeehaa, that's the place, go, Carl, go! c3_audio[43] = SOUND_CAT3_JA // Hello, Mr. Whittaker! c3_audio[44] = SOUND_CAT3_JB // Catalina! What have you brought me today? c3_audio[45] = SOUND_CAT3_JC // A rig and tanker, full to the brim with premium gas! c3_audio[46] = SOUND_CAT3_JD // Never seen it, never saw you, never gave you this wad of cash! c3_audio[47] = SOUND_CAT3_JE // Nice not doing business! c3_audio[48] = SOUND_CAT3_JF // Likewise. Now get out of here, before the cops come snooping. c3_audio[49] = SOUND_CAT3_JG // You ever get hold of another rig, just drop it in, c3_audio[50] = SOUND_CAT3_JH // I'll always give a good price! c3_audio[51] = SOUND_CAT3_JJ // You ever want to run some freight for me just drop in. c3_audio[52] = SOUND_CAT3_JK // I've always got shit needs moving! c3_audio[53] = SOUND_CATX_UJ c3_audio[54] = SOUND_CATX_UK c3_audio[55] = SOUND_CAT_PF // ---- Coords c3_gas_loc_x = -43.7625 c3_gas_loc_y = -1141.8047 c3_gas_loc_z = 0.0781 c3_cat_gas_x = 660.3846 c3_cat_gas_y = -571.9213 c3_cat_gas_z = 15.3465 // ---- Camera Coords c3_cam_x[0] = 659.5142 c3_cam_y[0] = -571.6500 c3_cam_z[0] = 17.0104 c3_cam_look_x[0] = 660.4576 c3_cam_look_y[0] = -571.3304 c3_cam_look_z[0] = 16.9229 c3_cam_x[1] = 661.7569 c3_cam_y[1] = -570.6351 c3_cam_z[1] = 17.1184 c3_cam_look_x[1] = 662.4741 c3_cam_look_y[1] = -569.9394 c3_cam_look_z[1] = 17.0783 c3_cam_x[2] = 658.7903 c3_cam_y[2] = -568.8011 c3_cam_z[2] = 17.1657 c3_cam_look_x[2] = 659.5721 c3_cam_look_y[2] = -569.3959 c3_cam_look_z[2] = 16.9783 c3_cam_x[3] = 659.4771 c3_cam_y[3] = -568.5789 c3_cam_z[3] = 17.0879 c3_cam_look_x[3] = 660.1776 c3_cam_look_y[3] = -569.2756 c3_cam_look_z[3] = 16.9335 c3_cam_x[4] = 655.2368 c3_cam_y[4] = -601.8433 c3_cam_z[4] = 16.4703 c3_cam_look_x[4] = 654.2847 c3_cam_look_y[4] = -601.6681 c3_cam_look_z[4] = 16.2199 c3_cam_x[5] = -73.4246 c3_cam_y[5] = -1132.7161 c3_cam_z[5] = 1.4933 c3_cam_look_x[5] = -74.3653 c3_cam_look_y[5] = -1133.0492 c3_cam_look_z[5] = 1.5579 c3_cam_x[6] = -80.0272 c3_cam_y[6] = -1133.9542 c3_cam_z[6] = 1.2517 c3_cam_look_x[6] = -79.0308 c3_cam_look_y[6] = -1133.9556 c3_cam_look_z[6] = 1.3367 c3_cam_x[7] = -76.5131 c3_cam_y[7] = -1135.4342 c3_cam_z[7] = 1.6855 c3_cam_look_x[7] = -75.8151 c3_cam_look_y[7] = -1134.7186 c3_cam_look_z[7] = 1.7110 c3_clerk_cruise = 35.0 // ------------------------------------------------------------------------------------------------ // Entity GoSubs / Create GOSUB c3_cat_create GOSUB c3_load_all GOSUB c3_clerk_create GOSUB c3_truck_create GOSUB c3_trailer_create GOSUB c3_chase_create SET_PLAYER_GROUP_RECRUITMENT player1 FALSE LOAD_SCENE_IN_DIRECTION c3_cat_gas_x c3_cat_gas_y c3_cat_gas_z 295.0 // ------------------------------------------------------------------------------------------------ // ---- Groups // ------------------------------------------------------------------------------------------------ // Task Sequences // ------------------------------------------------------------------------------------------------ // Starting blip... SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 659.6722 -569.2720 15.3465 ELSE SET_CHAR_COORDINATES scplayer 659.6722 -569.2720 15.3465 ENDIF IF NOT IS_CHAR_DEAD catalina AND NOT IS_CHAR_DEAD c3_clerk[0] IF IS_CHAR_IN_ANY_CAR catalina WARP_CHAR_FROM_CAR_TO_COORD catalina c3_cat_gas_x c3_cat_gas_y c3_cat_gas_z ELSE SET_CHAR_COORDINATES catalina c3_cat_gas_x c3_cat_gas_y c3_cat_gas_z ENDIF TASK_TURN_CHAR_TO_FACE_CHAR scplayer c3_clerk[0] TASK_TURN_CHAR_TO_FACE_CHAR c3_clerk[0] catalina SET_CHAR_HEADING scplayer 177.1965 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE c3_clerk[0] TRUE SET_FIXED_CAMERA_POSITION c3_cam_x[0] c3_cam_y[0] c3_cam_z[0] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT c3_cam_look_x[0] c3_cam_look_y[0] c3_cam_look_z[0] JUMP_CUT GET_GAME_TIMER c3_timer_start REMOVE_CHAR_FROM_GROUP catalina c3_cut = 1 TASK_AIM_GUN_AT_CHAR catalina c3_clerk[0] 20000 TASK_STAY_IN_SAME_PLACE catalina TRUE TASK_STAY_IN_SAME_PLACE c3_clerk[0] TRUE c3_counter = 1 //CATALINA: Hand over the takings, or I blow your fucking balls off! //GOSUB c3_play_dialogue //PRINT_NOW ( CAT3_AA ) 5000 1 //CATALINA: Hand over the takings, or I blow your fucking balls off! ENDIF SET_FADING_COLOUR 0 0 0 SET_FADING_COLOUR 0 0 0 DO_FADE 500 FADE_IN DO_FADE 500 FADE_IN SET_CAR_DENSITY_MULTIPLIER 0.5 // ------------------------------------------------------------------------------------------------ // Main Loop c3_main_loop: WAIT 0 // ---- Load & Play Dialogue... IF NOT c3_counter = 0 IF c3_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED c3_alt_slot CLEAR_MISSION_AUDIO c3_alt_slot ENDIF c3_audio_playing = 1 ENDIF IF c3_audio_playing = 1 LOAD_MISSION_AUDIO c3_audio_slot c3_audio[c3_counter] GOSUB c3_dialogue_pos c3_audio_playing = 2 ENDIF IF c3_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED c3_audio_slot IF NOT c3_audio_char = 0 IF NOT IS_CHAR_DEAD c3_audio_char START_CHAR_FACIAL_TALK c3_audio_char 10000 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH c3_audio_char TRUE //ATTACH_MISSION_AUDIO_TO_CHAR c3_audio_slot c3_audio_char ENDIF ENDIF PLAY_MISSION_AUDIO c3_audio_slot PRINT_NOW $c3_text[c3_counter] 10000 1 c3_audio_playing = 3 ENDIF ENDIF IF c3_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED c3_audio_slot CLEAR_THIS_PRINT $c3_text[c3_counter] IF NOT c3_audio_char = 0 IF NOT IS_CHAR_DEAD c3_audio_char STOP_CHAR_FACIAL_TALK c3_audio_char SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH c3_audio_char FALSE ENDIF ENDIF IF c3_audio_slot = 1 c3_audio_slot = 2 c3_alt_slot = 1 ELSE c3_audio_slot = 1 c3_alt_slot = 2 ENDIF c3_counter = 0 c3_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED c3_alt_slot IF c3_counter < 60 c3_ahead_counter = c3_counter + 1 LOAD_MISSION_AUDIO c3_alt_slot c3_audio[c3_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF // ----------------- IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_passed_cat3 ENDIF IF c3_stage = 0 IF c3_cut < 6 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED c3_timer_start -= 10000 //CLEAR_PRINTS c3_cut = 7 ENDIF ENDIF IF c3_cut = 1 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 2000 IF c3_audio_playing = 0 IF NOT IS_CHAR_DEAD catalina AND NOT IS_CHAR_DEAD c3_clerk[0] OPEN_SEQUENCE_TASK c3_clerk_cut_seq_1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 662.8280 -570.1751 15.3359 PEDMOVE_WALK -2 TASK_LOOK_AT_CHAR -1 catalina 30000 TASK_TURN_CHAR_TO_FACE_CHAR -1 catalina CLOSE_SEQUENCE_TASK c3_clerk_cut_seq_1 PERFORM_SEQUENCE_TASK c3_clerk[0] c3_clerk_cut_seq_1 GET_GAME_TIMER c3_timer_start //PRINT_NOW ( CAT3_AB ) 5000 1 c3_counter = 2 // CLERK 1: This here’s bulletproof glass! c3_cut = 2 ENDIF ENDIF ENDIF ENDIF IF c3_cut = 2 IF NOT IS_CHAR_DEAD c3_clerk[0] IF NOT IS_CHAR_PLAYING_ANIM c3_clerk[0] bng_wndw_02 GET_SCRIPT_TASK_STATUS c3_clerk[0] PERFORM_SEQUENCE_TASK c3_clerk_status IF c3_clerk_status = FINISHED_TASK TASK_PLAY_ANIM c3_clerk[0] bng_wndw_02 MISC 4.0 FALSE FALSE FALSE FALSE -1 ENDIF ENDIF ENDIF GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 2000 IF c3_audio_playing = 0 IF NOT IS_CHAR_DEAD catalina AND NOT IS_CHAR_DEAD c3_clerk[0] SET_FIXED_CAMERA_POSITION c3_cam_x[1] c3_cam_y[1] c3_cam_z[1] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT c3_cam_look_x[1] c3_cam_look_y[1] c3_cam_look_z[1] JUMP_CUT GET_GAME_TIMER c3_timer_start c3_counter = 3 // CLERK 1: So you can just fuck off, bitch, before I call the sheriff! //PRINT_NOW ( CAT3_AC ) 5000 1 // CLERK 1: So you can just fuck off, bitch, before I call the sheriff! c3_cut = 3 ENDIF ENDIF ENDIF ENDIF IF c3_cut = 3 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 2000 IF c3_audio_playing = 0 IF NOT IS_CHAR_DEAD catalina AND NOT IS_CHAR_DEAD c3_clerk[0] AND NOT IS_CHAR_DEAD c3_clerk[1] TASK_SHAKE_FIST c3_clerk[1] //TASK_COWER c3_clerk[1] GET_GAME_TIMER c3_timer_start c3_counter = 4 //CLERK 2: What you doing, man, just give her the cash! //PRINT_NOW ( CAT3_AD ) 5000 1 //CLERK 2: What you doing, man, just give her the cash! c3_cut = 4 ENDIF ENDIF ENDIF ENDIF IF c3_cut = 4 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 2000 IF c3_audio_playing = 0 IF NOT IS_CAR_DEAD c3_truck SET_FIXED_CAMERA_POSITION c3_cam_x[2] c3_cam_y[2] c3_cam_z[2] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT c3_cam_look_x[2] c3_cam_look_y[2] c3_cam_look_z[2] JUMP_CUT GET_GAME_TIMER c3_timer_start c3_counter = 5 //CATALINA: Suit yourself, macaron. //PRINT_NOW ( CAT3_AE ) 3000 1 //CATALINA: Suit yourself, macaron. c3_cut = 5 ENDIF ENDIF ENDIF ENDIF IF c3_cut = 5 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 2000 IF c3_audio_playing = 0 IF NOT IS_CAR_DEAD c3_truck AND NOT IS_CHAR_DEAD catalina AND NOT IS_CHAR_DEAD scplayer POINT_CAMERA_AT_CAR c3_truck FIXED JUMP_CUT GET_GAME_TIMER c3_timer_start TASK_LOOK_AT_CHAR scplayer catalina 8000 //PRINT_NOW ( CAT3_AF ) 5000 1 //CATALINA: Change of plan, Carl, we’re taking the tanker! OPEN_SEQUENCE_TASK c3_cat_seq_1 TASK_LOOK_AT_CHAR -1 scplayer 1000 TASK_GO_STRAIGHT_TO_COORD -1 657.7125 -576.2346 15.3359 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 654.6555 -585.0117 15.3359 PEDMOVE_RUN -1 TASK_ENTER_CAR_AS_PASSENGER -1 c3_truck 30000 0 CLOSE_SEQUENCE_TASK c3_cat_seq_1 PERFORM_SEQUENCE_TASK catalina c3_cat_seq_1 c3_counter = 6 //CATALINA: Change of plan, Carl, we’re taking the tanker! c3_cut = 6 ENDIF ENDIF ENDIF ENDIF IF c3_cut = 6 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 2000 IF c3_audio_playing = 0 IF NOT IS_CHAR_DEAD catalina AND NOT IS_CHAR_DEAD c3_clerk[0] SET_FIXED_CAMERA_POSITION c3_cam_x[3] c3_cam_y[3] c3_cam_z[3] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT c3_cam_look_x[3] c3_cam_look_y[3] c3_cam_look_z[3] JUMP_CUT TASK_FOLLOW_PATH_NODES_TO_COORD scplayer 659.8791 -573.4293 15.3465 PEDMOVE_WALK -2 //PRINT ( CAT3_AG ) 5000 1 //CLERK 1: Hey! What you doing? c3_counter = 7 //CLERK 1: Hey! What you doing? GET_GAME_TIMER c3_timer_start //TASK_SHAKE_FIST c3_clerk[0] c3_cut = 7 ENDIF ENDIF ENDIF ENDIF IF c3_cut = 7 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 2500 IF c3_audio_playing = 0 IF NOT IS_CHAR_DEAD catalina AND NOT IS_CHAR_DEAD c3_clerk[0] AND NOT IS_CAR_DEAD c3_truck DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD c3_truck ADD_BLIP_FOR_CAR c3_truck c3_truck_blip SET_BLIP_AS_FRIENDLY c3_truck_blip TRUE IF NOT IS_CHAR_DEAD catalina IF NOT IS_CHAR_IN_CAR catalina c3_truck TASK_ENTER_CAR_AS_PASSENGER catalina c3_truck 30000 0 ENDIF ENDIF IF NOT IS_CAR_DEAD c3_trailer FREEZE_CAR_POSITION c3_trailer TRUE ENDIF ENDIF REMOVE_ANIMATION MISC CLEAR_AREA catX[3] catY[3] catZ[3] 200.0 TRUE SET_CHAR_HEADING scplayer c3_truck_h SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_FADING_COLOUR 0 0 0 DO_FADE 500 FADE_IN DO_FADE 500 FADE_IN DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE c3_stage = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF c3_stage = 1 IF NOT IS_CAR_DEAD c3_truck AND NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD c3_trailer PRINT_NOW ( CAT3_02 ) 5000 1 IF IS_CHAR_IN_CAR scplayer c3_truck REMOVE_BLIP c3_truck_blip PRINT_HELP ( CAT3_03 ) REQUEST_ANIMATION CAR_CHAT WHILE NOT HAS_ANIMATION_LOADED CAR_CHAT WAIT 0 ENDWHILE c3_stage = 2 CHECKPOINT_SAVE 99 ENDIF ENDIF ENDIF IF c3_stage = 2 IF NOT IS_CAR_DEAD c3_truck AND NOT IS_CAR_DEAD c3_trailer AND NOT IS_CHAR_DEAD catalina IF LOCATE_CHAR_IN_CAR_CAR_3D scplayer c3_trailer 15.0 15.0 15.0 FALSE IF c3_help_text_flag = 0 PRINT_HELP_FOREVER CAT3_12 // Look behind by pressing and holding ~m~~widget_look_left~ and ~m~~widget_look_right~ together, or use the camera movement controls to maneuver the camera for a better view. GET_GAME_TIMER c3_timer_start c3_help_text_flag = 1 ENDIF ENDIF IF c3_help_text_flag = 1 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 8000 PRINT_HELP ( CAT3_13 ) c3_help_text_flag = 2 ENDIF ENDIF IF c3_cut_delay = 0 IF IS_TRAILER_ATTACHED_TO_CAB c3_trailer c3_truck IF NOT IS_CAR_DEAD c3_trailer FREEZE_CAR_POSITION c3_trailer FALSE ENDIF //PRINT_NOW ( CAT3_14 ) 5000 1 // You're hooked up! PLAY_MISSION_AUDIO 3 //SOUND_TRAILER_HOOKUP GET_GAME_TIMER c3_timer_start REMOVE_BLIP c3_trailer_blip CLEAR_HELP c3_cut_delay = 1 ENDIF ENDIF IF c3_cut_delay = 1 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 1500 CLEAR_PRINTS LOCK_CAR_DOORS c3_truck CARLOCK_LOCKED_PLAYER_INSIDE DO_FADE 150 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF CLEAR_PRINTS IF HAS_MISSION_AUDIO_FINISHED 3 CLEAR_MISSION_AUDIO 3 ENDIF IF NOT IS_CAR_DEAD c3_truck LOCK_CAR_DOORS c3_truck CARLOCK_UNLOCKED ENDIF //IF c3_grouped = 0 IF NOT IS_CHAR_DEAD catalina AND NOT IS_CAR_DEAD c3_truck IF NOT IS_CHAR_IN_CAR catalina c3_truck // CLEAR_CHAR_TASKS_IMMEDIATELY catalina // //WARP_CHAR_INTO_CAR_AS_PASSENGER catalina c3_truck 0 // IF NOT IS_GROUP_MEMBER catalina players_group // SET_GROUP_MEMBER players_group catalina // REMOVE_BLIP catalina_blip // REMOVE_BLIP c3_gas_loc_blip // ADD_BLIP_FOR_COORD c3_gas_loc_x c3_gas_loc_y c3_gas_loc_z c3_gas_loc_blip // CLEAR_ONSCREEN_COUNTER c3_trailer_health_display // DISPLAY_ONSCREEN_COUNTER_WITH_STRING c3_trailer_health_display COUNTER_DISPLAY_BAR CAT3_11 // //SET_ONSCREEN_COUNTER_COLOUR c3_trailer_health_display HUD_COLOUR_RED // WARP_CHAR_INTO_CAR_AS_PASSENGER catalina c3_truck 0 // //c3_grouped = 1 // ELSE REMOVE_CHAR_FROM_GROUP catalina REMOVE_BLIP catalina_blip REMOVE_BLIP c3_gas_loc_blip ADD_BLIP_FOR_COORD c3_gas_loc_x c3_gas_loc_y c3_gas_loc_z c3_gas_loc_blip CLEAR_ONSCREEN_COUNTER c3_trailer_health_display DISPLAY_ONSCREEN_COUNTER_WITH_STRING c3_trailer_health_display COUNTER_DISPLAY_BAR CAT3_11 WARP_CHAR_INTO_CAR_AS_PASSENGER catalina c3_truck 0 //SET_ONSCREEN_COUNTER_COLOUR c3_trailer_health_display HUD_COLOUR_RED //c3_grouped = 1 //ENDIF ELSE REMOVE_BLIP c3_gas_loc_blip ADD_BLIP_FOR_COORD c3_gas_loc_x c3_gas_loc_y c3_gas_loc_z c3_gas_loc_blip CLEAR_ONSCREEN_COUNTER c3_trailer_health_display DISPLAY_ONSCREEN_COUNTER_WITH_STRING c3_trailer_health_display COUNTER_DISPLAY_BAR CAT3_11 //SET_ONSCREEN_COUNTER_COLOUR c3_trailer_health_display HUD_COLOUR_RED ENDIF ENDIF IF NOT IS_CAR_DEAD c3_trailer SET_CAR_PROOFS c3_trailer FALSE FALSE FALSE FALSE FALSE ENDIF REQUEST_CAR_RECORDING 188 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 188 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD c3_chase AND NOT IS_CHAR_DEAD c3_clerk[0] AND NOT IS_CHAR_DEAD c3_clerk[1] AND NOT IS_CHAR_DEAD catalina AND NOT IS_CAR_DEAD c3_truck // IF NOT IS_CHAR_IN_CAR catalina c3_truck // WARP_CHAR_INTO_CAR_AS_PASSENGER catalina c3_truck 0 // ENDIF // IF IS_GROUP_MEMBER catalina players_group // REMOVE_CHAR_FROM_GROUP catalina // ENDIF FREEZE_CAR_POSITION c3_chase FALSE CLEAR_AREA 658.6589 -567.5756 15.3465 25.0 TRUE SET_CAR_COORDINATES c3_chase 658.6589 -567.5756 15.3465 SET_CAR_HEADING c3_chase 180.0 WARP_CHAR_INTO_CAR c3_clerk[1] c3_chase WARP_CHAR_INTO_CAR_AS_PASSENGER c3_clerk[0] c3_chase 0 SET_FIXED_CAMERA_POSITION 651.9285 -575.1257 16.2766 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 652.3163 -576.0270 16.4698 JUMP_CUT GET_GAME_TIMER c3_timer_start c3_cut = 1 c3_stage = 3 ENDIF ENDIF ENDIF ENDIF ENDIF IF c3_stage = 3 IF NOT IS_CHAR_DEAD c3_clerk[0] AND NOT IS_CHAR_DEAD c3_clerk[1] AND NOT IS_CAR_DEAD c3_chase AND NOT IS_CAR_DEAD c3_truck IF c3_cut < 4 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 1000 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED c3_timer_start -= 5000 c3_cut = 4 ENDIF ENDIF ENDIF IF c3_cut = 1 IF NOT IS_CAR_DEAD c3_chase DO_FADE 150 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD c3_chase START_PLAYBACK_RECORDED_CAR c3_chase 188 ENDIF //PRINT_NOW ( CAT3_CB ) 5000 1 // CLERK 1: I ain’t losing another crappy job because of some crazy bitch! IF c3_audio_playing = 0 c3_counter = 13 // CLERK 1: I ain’t losing another crappy job because of some crazy bitch! ENDIF GET_GAME_TIMER c3_timer_start c3_cut = 2 ENDIF ENDIF IF c3_cut = 2 IF NOT IS_CAR_DEAD c3_chase IF IS_PLAYBACK_GOING_ON_FOR_CAR c3_chase GET_OFFSET_FROM_CAR_IN_WORLD_COORDS c3_chase 0.0 5.5 0.0 c3_offset_x c3_offset_y c3_offset_z c3_min_x = c3_offset_x - 0.25 c3_min_y = c3_offset_y - 0.25 c3_min_z = c3_offset_z - 0.25 c3_max_x = c3_offset_x + 0.25 c3_max_y = c3_offset_y + 0.25 c3_max_z = c3_offset_z + 0.25 IF IS_AREA_OCCUPIED c3_min_x c3_min_y c3_min_z c3_max_x c3_max_y c3_max_z FALSE TRUE FALSE FALSE FALSE STOP_PLAYBACK_RECORDED_CAR c3_chase ENDIF ENDIF ENDIF GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 2000 IF c3_audio_playing = 0 IF NOT IS_CHAR_DEAD c3_clerk[0] TASK_PLAY_ANIM c3_clerk[0] CAR_Sc3_BR CAR_CHAT 4.0 FALSE FALSE FALSE FALSE -1 //for the passenger speaking ENDIF GET_OFFSET_FROM_CAR_IN_WORLD_COORDS c3_chase 0.9 1.0 0.5 c3_cam_x[4] c3_cam_y[4] c3_cam_z[4] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS c3_chase 0.15 0.0 0.3 c3_cam_look_x[4] c3_cam_look_y[4] c3_cam_look_z[4] SET_FIXED_CAMERA_POSITION c3_cam_x[4] c3_cam_y[4] c3_cam_z[4] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT c3_cam_look_x[4] c3_cam_look_y[4] c3_cam_look_z[4] JUMP_CUT SET_NEAR_CLIP 0.1 // PRINT_NOW ( CAT3_CC ) 3500 1 // CLERK 1: C’mon, Derek, we’re going to stop those bastards! c3_counter = 14 // CLERK 1: C’mon, Derek, we’re going to stop those bastards! GET_GAME_TIMER c3_timer_start c3_cut = 3 ENDIF ENDIF ENDIF IF c3_cut = 3 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 2000 IF c3_audio_playing = 0 c3_counter = 15 // CLERK 2: But I don’t wanna! //PRINT_NOW ( CAT3_CD ) 3500 1 // CLERK 2: But I don’t wanna! TASK_PLAY_ANIM c3_clerk[1] CAR_Sc4_BL CAR_CHAT 2.0 TRUE FALSE FALSE FALSE 3500 // for the driver speaking GET_GAME_TIMER c3_timer_start c3_cut = 4 ENDIF ENDIF ENDIF IF c3_cut = 4 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_audio_playing = 0 AND c3_counter = 0 CLEAR_PRINTS DO_FADE 150 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT IF NOT IS_CAR_DEAD c3_chase AND NOT IS_CHAR_DEAD c3_clerk[0] IF IS_CHAR_IN_CAR c3_clerk[0] c3_chase IF NOT IS_CAR_DEAD c3_trailer FREEZE_CAR_POSITION c3_trailer FALSE ENDIF SET_CAR_PROOFS c3_chase FALSE FALSE FALSE FALSE FALSE REMOVE_ANIMATION CAR_CHAT ADD_STUCK_CAR_CHECK_WITH_WARP c3_chase 1.0 2000 TRUE TRUE TRUE 2 ADD_BLIP_FOR_CAR_OLD c3_chase RED MARKER_ONLY c3_chase_blip c3_dialogue_playing = 4 GET_GAME_TIMER c3_text_timer_start IF c3_audio_playing = 0 c3_counter = 12 // CATALINA: Drive! I know a guy who’ll pay for this rig and its cargo ENDIF //PRINT_NOW ( CAT3_CA ) 5000 1 // CATALINA: Drive! I know a guy who’ll pay for this rig and its cargo c3_stage = 4 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF c3_stage = 4 IF NOT IS_CAR_DEAD c3_truck AND NOT IS_CAR_DEAD c3_trailer AND NOT IS_CHAR_DEAD catalina IF c3_audio_playing = 0 IF c3_counter = 0 IF c3_cut = 4 PRINT ( CAT3_05 ) 5000 1 // Don't jacknife c3_cut = -4 ENDIF ENDIF ENDIF GET_CAR_HEALTH c3_trailer c3_trailer_health_display IF c3_trailer_health_display > 250 c3_trailer_health_display -= 250 c3_trailer_health_display /= 100 c3_trailer_health_display *= 10 ELSE CLEAR_ONSCREEN_COUNTER c3_trailer_health_display ENDIF // Dialogue IF c3_in_car = 1 IF NOT IS_CAR_DEAD c3_chase AND NOT IS_CHAR_DEAD c3_clerk[0] AND NOT IS_CHAR_DEAD c3_clerk[1] IF c3_dialogue_playing = 0 GENERATE_RANDOM_INT_IN_RANGE 0 6 c3_random_dialogue GET_GAME_TIMER c3_text_timer_start c3_dialogue_playing = 1 IF c3_random_dialogue = c3_random_dialogue_last[0] IF c3_random_dialogue < 5 c3_random_dialogue ++ ELSE IF c3_random_dialogue > 0 c3_random_dialogue -- ENDIF ENDIF ENDIF ENDIF IF c3_dialogue_playing = 1 IF c3_random_dialogue = 0 IF c3_audio_playing = 0 AND c3_counter = 0 c3_counter = 27 //CLERK 1: Keep her steady so I can get a good shot! IF IS_CHAR_IN_CAR scplayer c3_truck SET_CHAR_ACCURACY c3_clerk[0] 20 TASK_DRIVE_BY c3_clerk[0] catalina -1 0.0 -5.0 0.0 30.0 DRIVEBY_AI_ALL_DIRN TRUE 50 SET_CURRENT_CHAR_WEAPON c3_clerk[0] WEAPONTYPE_MICRO_UZI TASK_DRIVE_BY catalina c3_clerk[0] -1 0.0 0.0 0.0 30.0 DRIVEBY_FIXED_RHS TRUE 90 SET_CURRENT_CHAR_WEAPON catalina WEAPONTYPE_SHOTGUN ELSE SET_CHAR_ACCURACY c3_clerk[0] 50 TASK_DRIVE_BY c3_clerk[0] scplayer -1 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 15 ENDIF c3_random_dialogue_last[0] = c3_random_dialogue GET_GAME_TIMER c3_text_timer_start c3_dialogue_playing = 2 ENDIF ENDIF IF c3_random_dialogue = 1 IF c3_audio_playing = 0 AND c3_counter = 0 c3_counter = 28 // CLERK 1: Pull alongside! IF IS_CHAR_IN_CAR scplayer c3_truck SET_CHAR_ACCURACY c3_clerk[0] 20 TASK_DRIVE_BY c3_clerk[0] catalina -1 0.0 -5.0 0.0 30.0 DRIVEBY_AI_ALL_DIRN TRUE 50 SET_CURRENT_CHAR_WEAPON c3_clerk[0] WEAPONTYPE_MICRO_UZI TASK_DRIVE_BY catalina c3_clerk[0] -1 0.0 0.0 0.0 30.0 DRIVEBY_FIXED_RHS TRUE 90 SET_CURRENT_CHAR_WEAPON catalina WEAPONTYPE_SHOTGUN ELSE SET_CHAR_ACCURACY c3_clerk[0] 50 TASK_DRIVE_BY c3_clerk[0] scplayer -1 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 15 ENDIF c3_random_dialogue_last[0] = c3_random_dialogue GET_GAME_TIMER c3_text_timer_start c3_dialogue_playing = 2 ENDIF ENDIF IF c3_random_dialogue = 2 IF c3_audio_playing = 0 AND c3_counter = 0 c3_counter = 29 // CLERK 1: Keep up with them! IF IS_CHAR_IN_CAR scplayer c3_truck SET_CHAR_ACCURACY c3_clerk[0] 20 TASK_DRIVE_BY c3_clerk[0] catalina -1 0.0 -5.0 0.0 30.0 DRIVEBY_AI_ALL_DIRN TRUE 50 SET_CURRENT_CHAR_WEAPON c3_clerk[0] WEAPONTYPE_MICRO_UZI TASK_DRIVE_BY catalina c3_clerk[0] -1 0.0 0.0 0.0 30.0 DRIVEBY_FIXED_RHS TRUE 90 SET_CURRENT_CHAR_WEAPON catalina WEAPONTYPE_SHOTGUN ELSE SET_CHAR_ACCURACY c3_clerk[0] 50 TASK_DRIVE_BY c3_clerk[0] scplayer -1 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 15 ENDIF c3_random_dialogue_last[0] = c3_random_dialogue GET_GAME_TIMER c3_text_timer_start c3_dialogue_playing = 2 ENDIF ENDIF IF c3_random_dialogue = 3 IF c3_audio_playing = 0 AND c3_counter = 0 c3_counter = 30 //CLERK 1: Get ahead of them! IF IS_CHAR_IN_CAR scplayer c3_truck SET_CHAR_ACCURACY c3_clerk[0] 20 TASK_DRIVE_BY c3_clerk[0] catalina -1 0.0 -5.0 0.0 30.0 DRIVEBY_AI_ALL_DIRN TRUE 50 SET_CURRENT_CHAR_WEAPON c3_clerk[0] WEAPONTYPE_MICRO_UZI TASK_DRIVE_BY catalina c3_clerk[0] -1 0.0 0.0 0.0 30.0 DRIVEBY_FIXED_RHS TRUE 90 SET_CURRENT_CHAR_WEAPON catalina WEAPONTYPE_SHOTGUN ELSE SET_CHAR_ACCURACY c3_clerk[0] 50 TASK_DRIVE_BY c3_clerk[0] scplayer -1 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 15 ENDIF c3_random_dialogue_last[0] = c3_random_dialogue GET_GAME_TIMER c3_text_timer_start c3_dialogue_playing = 2 ENDIF ENDIF IF c3_random_dialogue = 4 IF c3_audio_playing = 0 AND c3_counter = 0 c3_counter = 31 //CLERK 1: Block their route! IF IS_CHAR_IN_CAR scplayer c3_truck SET_CHAR_ACCURACY c3_clerk[0] 20 TASK_DRIVE_BY c3_clerk[0] catalina -1 0.0 -5.0 0.0 30.0 DRIVEBY_AI_ALL_DIRN TRUE 50 SET_CURRENT_CHAR_WEAPON c3_clerk[0] WEAPONTYPE_MICRO_UZI TASK_DRIVE_BY catalina c3_clerk[0] -1 0.0 0.0 0.0 30.0 DRIVEBY_FIXED_RHS TRUE 90 SET_CURRENT_CHAR_WEAPON catalina WEAPONTYPE_SHOTGUN ELSE SET_CHAR_ACCURACY c3_clerk[0] 50 TASK_DRIVE_BY c3_clerk[0] scplayer -1 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 15 ENDIF c3_random_dialogue_last[0] = c3_random_dialogue c3_dialogue_playing = 2 ENDIF ENDIF IF c3_random_dialogue = 5 IF c3_audio_playing = 0 AND c3_counter = 0 c3_counter = 32 // CLERK 1: Steady… steady… IF IS_CHAR_IN_CAR scplayer c3_truck SET_CHAR_ACCURACY c3_clerk[0] 20 TASK_DRIVE_BY c3_clerk[0] catalina -1 0.0 -5.0 0.0 30.0 DRIVEBY_AI_ALL_DIRN TRUE 50 SET_CURRENT_CHAR_WEAPON c3_clerk[0] WEAPONTYPE_MICRO_UZI TASK_DRIVE_BY catalina c3_clerk[0] -1 0.0 0.0 0.0 30.0 DRIVEBY_FIXED_RHS TRUE 90 SET_CURRENT_CHAR_WEAPON catalina WEAPONTYPE_SHOTGUN ELSE SET_CHAR_ACCURACY c3_clerk[0] 50 TASK_DRIVE_BY c3_clerk[0] scplayer -1 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 15 ENDIF c3_random_dialogue_last[0] = c3_random_dialogue GET_GAME_TIMER c3_text_timer_start c3_dialogue_playing = 2 ENDIF ENDIF ENDIF // Clerk... IF c3_dialogue_playing = 2 GENERATE_RANDOM_INT_IN_RANGE 6 13 c3_random_dialogue GET_GAME_TIMER c3_text_timer_start c3_dialogue_playing = 3 IF c3_random_dialogue = c3_random_dialogue_last[1] IF c3_random_dialogue < 12 c3_random_dialogue ++ ELSE IF c3_random_dialogue > 6 c3_random_dialogue -- ENDIF ENDIF ENDIF ENDIF IF c3_dialogue_playing = 3 IF c3_random_dialogue = 6 IF c3_audio_playing = 0 AND c3_counter = 0 c3_counter = 33 //CLERK 2: It ain’t worth it! c3_dialogue_playing = 4 c3_random_dialogue_last[1] = c3_random_dialogue ENDIF ENDIF IF c3_random_dialogue = 7 IF c3_audio_playing = 0 AND c3_counter = 0 c3_counter = 34 //CLERK 2: I’m scared, man! c3_dialogue_playing = 4 c3_random_dialogue_last[1] = c3_random_dialogue ENDIF ENDIF IF c3_random_dialogue = 8 IF c3_audio_playing = 0 AND c3_counter = 0 c3_counter = 35 //CLERK 2: This ain’t my fight! c3_dialogue_playing = 4 c3_random_dialogue_last[1] = c3_random_dialogue ENDIF ENDIF IF c3_random_dialogue = 9 IF c3_audio_playing = 0 AND c3_counter = 0 c3_counter = 36 //CLERK 2: We’ll get ourselves killed! c3_dialogue_playing = 4 c3_random_dialogue_last[1] = c3_random_dialogue ENDIF ENDIF IF c3_random_dialogue = 10 IF c3_audio_playing = 0 AND c3_counter = 0 c3_counter = 37 //CLERK 2: I don’t wanna do this! c3_dialogue_playing = 4 c3_random_dialogue_last[1] = c3_random_dialogue ENDIF ENDIF IF c3_random_dialogue = 11 IF c3_audio_playing = 0 AND c3_counter = 0 c3_counter = 38 //CLERK 2: Oh my god, I’m gonnna die! c3_dialogue_playing = 4 c3_random_dialogue_last[1] = c3_random_dialogue ENDIF ENDIF IF c3_random_dialogue = 12 IF c3_audio_playing = 0 AND c3_counter = 0 c3_counter = 39 //CLERK 2: That rig will crush us! c3_dialogue_playing = 4 c3_random_dialogue_last[1] = c3_random_dialogue ENDIF ENDIF ENDIF IF c3_dialogue_playing = 4 GET_GAME_TIMER c3_text_timer_end c3_text_timer_diff = c3_text_timer_end - c3_text_timer_start IF c3_text_timer_diff > 12000 c3_dialogue_playing = 5 ENDIF ENDIF ENDIF ELSE IF NOT IS_CAR_DEAD c3_chase AND NOT IS_CHAR_DEAD c3_clerk[0] GET_SCRIPT_TASK_STATUS c3_clerk[0] TASK_DRIVE_BY c3_clerk_status IF c3_clerk_status = FINISHED_TASK SET_CHAR_ACCURACY c3_clerk[0] 50 TASK_DRIVE_BY c3_clerk[0] scplayer -1 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 60 ENDIF ENDIF ENDIF IF IS_CAR_DEAD c3_chase IF NOT IS_CHAR_DEAD c3_clerk[0] IF NOT IS_CHAR_ON_SCREEN c3_clerk[0] REMOVE_CHAR_ELEGANTLY c3_clerk[0] ENDIF ENDIF IF NOT IS_CHAR_DEAD c3_clerk[1] IF NOT IS_CHAR_ON_SCREEN c3_clerk[1] REMOVE_CHAR_ELEGANTLY c3_clerk[1] ENDIF ENDIF REMOVE_BLIP c3_chase_blip ENDIF //SET_CAR_HEALTH c3_chase 1000 // Speed Up & Slow Down... IF NOT IS_CHAR_DEAD c3_clerk[0] AND NOT IS_CAR_DEAD c3_chase IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer c3_clerk[0] 15.0 15.0 15.0 FALSE IF c3_clerk_cruise < 60.0 c3_clerk_cruise += 0.2 ENDIF ELSE IF c3_clerk_cruise > 40.0 c3_clerk_cruise -= 0.1 ENDIF ENDIF // Catch up... IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer c3_gas_loc_x c3_gas_loc_y c3_gas_loc_z 120.0 120.0 120.0 FALSE IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer c3_clerk[0] 100.0 100.0 100.0 FALSE GET_OFFSET_FROM_CAR_IN_WORLD_COORDS c3_trailer 0.0 -40.0 0.0 c3_offset_x c3_offset_y c3_offset_z //GET_CAR_COORDINATES c3_trailer c3_trailer_x c3_trailer_y c3_trailer_z GET_NTH_CLOSEST_CAR_NODE_WITH_HEADING c3_offset_x c3_offset_y c3_offset_z 1 c3_chase_x c3_chase_y c3_chase_z c3_chase_h IF NOT IS_POINT_ON_SCREEN c3_chase_x c3_chase_y c3_chase_z 15.0 SET_CAR_COORDINATES c3_chase c3_chase_x c3_chase_y c3_chase_z SET_CAR_HEADING c3_chase c3_chase_h ENDIF ELSE IF c3_dialogue_playing = 5 c3_dialogue_playing = 0 ENDIF ENDIF ENDIF ENDIF // Update gas display... GET_CAR_HEALTH c3_trailer c3_trailer_health // Create oil patch on trailer damage... // IF c3_trailer_health < c3_trailer_health_old // c3_trailer_health_old = c3_trailer_health // GET_CAR_COORDINATES c3_trailer c3_trailer_x c3_trailer_y c3_trailer_z // GET_GROUND_Z_FOR_3D_COORD c3_trailer_x c3_trailer_y c3_trailer_z c3_trailer_z // CREATE_OIL_PUDDLE c3_trailer_x c3_trailer_y c3_trailer_z // ENDIF // Attack the Trailer... IF c3_end_brake = 0 IF NOT IS_CHAR_DEAD c3_clerk[0] IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer c3_gas_loc_x c3_gas_loc_y c3_gas_loc_z 120.0 120.0 120.0 FALSE IF NOT IS_CHAR_DEAD c3_clerk[1] IF NOT IS_CAR_DEAD c3_trailer IF NOT IS_CAR_DEAD c3_chase GET_SCRIPT_TASK_STATUS c3_clerk[1] TASK_CAR_MISSION c3_task_status IF c3_task_status = FINISHED_TASK TASK_CAR_MISSION c3_clerk[1] c3_chase c3_truck MISSION_BLOCKCAR_FARAWAY c3_clerk_cruise DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF ENDIF ELSE IF NOT IS_CAR_DEAD c3_chase IF NOT IS_CHAR_DEAD c3_clerk[1] TASK_CAR_TEMP_ACTION c3_clerk[1] c3_chase TEMPACT_HANDBRAKESTRAIGHT 2000 GET_GAME_TIMER c3_timer_start IF DOES_CAR_HAVE_STUCK_CAR_CHECK c3_chase REMOVE_STUCK_CAR_CHECK c3_chase ENDIF c3_end_brake = 1 ENDIF ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer c3_clerk[0] 30.0 30.0 30.0 FALSE IF NOT IS_CHAR_DEAD c3_clerk[1] IF NOT IS_CAR_DEAD c3_trailer IF NOT IS_CAR_DEAD c3_chase GENERATE_RANDOM_INT_IN_RANGE 0 4 c3_rand_escort // GET_SCRIPT_TASK_STATUS c3_clerk[1] TASK_CAR_MISSION c3_task_status // IF c3_task_status = FINISHED_TASK c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff = 5000 IF c3_rand_escort = 0 TASK_CAR_MISSION c3_clerk[1] c3_chase c3_truck MISSION_ESCORT_LEFT c3_clerk_cruise DRIVINGMODE_AVOIDCARS GET_GAME_TIMER c3_timer_start ENDIF IF c3_rand_escort = 1 TASK_CAR_MISSION c3_clerk[1] c3_chase c3_truck MISSION_ESCORT_RIGHT c3_clerk_cruise DRIVINGMODE_AVOIDCARS GET_GAME_TIMER c3_timer_start ENDIF IF c3_rand_escort = 2 TASK_CAR_MISSION c3_clerk[1] c3_chase c3_truck MISSION_ESCORT_REAR c3_clerk_cruise DRIVINGMODE_AVOIDCARS GET_GAME_TIMER c3_timer_start ENDIF IF c3_rand_escort = 3 TASK_CAR_MISSION c3_clerk[1] c3_chase c3_truck MISSION_ESCORT_FRONT c3_clerk_cruise DRIVINGMODE_AVOIDCARS GET_GAME_TIMER c3_timer_start ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD c3_truck AND NOT IS_CHAR_DEAD c3_clerk[0] GET_CAR_SPEED c3_truck c3_truck_speed IF c3_truck_speed < 3.0 GET_SCRIPT_TASK_STATUS c3_clerk[0] TASK_DRIVE_BY c3_task_status IF c3_task_status = FINISHED_TASK SET_CHAR_ACCURACY c3_clerk[0] 40 TASK_DRIVE_BY c3_clerk[0] catalina -1 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 100 SET_CURRENT_CHAR_WEAPON c3_clerk[0] WEAPONTYPE_MICRO_UZI ENDIF ENDIF ENDIF // Fail if Trailer is detached... IF NOT IS_TRAILER_ATTACHED_TO_CAB c3_trailer c3_truck IF IS_CHAR_IN_CAR catalina c3_truck IF NOT IS_CAR_UPSIDEDOWN c3_truck DO_FADE 50 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD c3_truck SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_CAR_TEMP_ACTION c3_truck TEMPACT_HANDBRAKESTRAIGHT 2000 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS c3_truck 2.5 4.0 0.0 c3_cam_x[8] c3_cam_y[8] c3_cam_z[8] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS c3_truck 2.2 3.0 0.0 c3_cam_look_x[8] c3_cam_look_y[8] c3_cam_look_z[8] SET_FIXED_CAMERA_POSITION c3_cam_x[8] c3_cam_y[8] c3_cam_z[8] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT c3_cam_look_x[8] c3_cam_look_y[8] c3_cam_look_z[8] JUMP_CUT IF NOT IS_CAR_DEAD c3_chase IF NOT IS_CAR_ON_SCREEN c3_chase DELETE_CAR c3_chase ENDIF ENDIF GET_GAME_TIMER c3_timer_start c3_cut = 0 GOTO c3_cat_fail_cut ENDIF ELSE DO_FADE 300 FADE_IN CLEAR_PRINTS PRINT_NOW ( CAT3_08 ) 5000 1 GOTO mission_failed_cat3 ENDIF ELSE PRINT_NOW ( CAT3_08 ) 5000 1 GOTO mission_failed_cat3 ENDIF ENDIF // Check that Player has made it intact to the destination... IF IS_CHAR_IN_CAR catalina c3_truck AND IS_CHAR_IN_CAR scplayer c3_truck IF LOCATE_CAR_3D c3_truck c3_gas_loc_x c3_gas_loc_y c3_gas_loc_z 5.0 5.0 5.0 TRUE OR LOCATE_CAR_3D c3_trailer c3_gas_loc_x c3_gas_loc_y c3_gas_loc_z 5.0 5.0 5.0 FALSE SET_PLAYER_CONTROL player1 OFF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB c3_exp_car_create // IF IS_CAR_DEAD c3_chase // IF NOT IS // DELETE_CHAR c3_clerk[0] // DELETE_CHAR c3_clerk[1] // ENDIF LOAD_SCENE -76.1314 -1131.4170 0.0782 SWITCH_WIDESCREEN ON REMOVE_BLIP c3_gas_loc_blip CLEAR_PRINTS REQUEST_CAR_RECORDING 199 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 199 WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION -81.2678 -1141.7351 3.8990 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -81.7168 -1140.8417 3.8854 JUMP_CUT IF NOT IS_CHAR_DEAD catalina AND NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD c3_truck FREEZE_CAR_POSITION c3_truck TRUE LOCK_CAR_DOORS c3_truck CARLOCK_LOCKOUT_PLAYER_ONLY WARP_CHAR_FROM_CAR_TO_COORD catalina -71.5991 -1134.9524 0.0781 SET_CHAR_HEADING catalina 63.1513 WARP_CHAR_FROM_CAR_TO_COORD scplayer -74.2582 -1130.5261 0.0781 SET_CHAR_HEADING scplayer 135.9294 ENDIF GOSUB c3_buyer_create CLEAR_PRINTS GET_GAME_TIMER c3_timer_start c3_cut = -4 c3_stage = 5 ENDIF ENDIF ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_SPACE SET_PLAYER_CONTROL player1 OFF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB c3_exp_car_create LOAD_SCENE -76.1314 -1131.4170 0.0782 SWITCH_WIDESCREEN ON REMOVE_BLIP c3_gas_loc_blip CLEAR_PRINTS REQUEST_CAR_RECORDING 199 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 199 WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION -81.2678 -1141.7351 3.8990 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -81.7168 -1140.8417 3.8854 JUMP_CUT IF NOT IS_CHAR_DEAD catalina AND NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD c3_truck SET_CAR_COORDINATES c3_truck c3_gas_loc_x c3_gas_loc_y c3_gas_loc_z WARP_CHAR_FROM_CAR_TO_COORD catalina -71.5991 -1134.9524 0.0781 SET_CHAR_HEADING catalina 63.1513 WARP_CHAR_FROM_CAR_TO_COORD scplayer -74.2582 -1130.5261 0.0781 SET_CHAR_HEADING scplayer 135.9294 ENDIF GOSUB c3_buyer_create CLEAR_HELP CLEAR_PRINTS GET_GAME_TIMER c3_timer_start c3_cut = -4 c3_stage = 5 ENDIF // End Cutscene IF c3_stage = 5 IF NOT IS_CHAR_DEAD catalina AND NOT IS_CHAR_DEAD c3_buyer AND NOT IS_CAR_DEAD c3_truck IF IS_GROUP_MEMBER catalina players_group REMOVE_CHAR_FROM_GROUP catalina ENDIF IF c3_cut = -4 IF NOT IS_CAR_DEAD c3_chase SET_CAR_PROOFS c3_chase FALSE FALSE FALSE FALSE FALSE START_PLAYBACK_RECORDED_CAR c3_chase 199 GET_GAME_TIMER c3_timer_start DO_FADE 250 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE c3_cut = -3 ELSE c3_cut = -1 // Skip this section if clerks are dead. ENDIF ENDIF IF c3_cut = -3 IF NOT IS_CAR_DEAD c3_chase GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 2000 SET_FIXED_CAMERA_POSITION -107.3115 -1128.8082 2.6543 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -106.7880 -1129.6519 2.7731 JUMP_CUT SET_CAR_HEALTH c3_chase 5 c3_cut = -21 ENDIF ENDIF ENDIF IF c3_cut = -21 IF NOT IS_CAR_DEAD c3_chase IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR c3_chase SET_FIXED_CAMERA_POSITION -108.8537 -1168.3424 3.0287 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -108.0611 -1167.7360 3.0908 JUMP_CUT ADD_EXPLOSION -92.24 -1161.46 2.5 EXPLOSION_CAR //1.0 EXPLODE_CAR_IN_CUTSCENE c3_chase GET_GAME_TIMER c3_timer_start c3_cut = -22 ENDIF ENDIF ENDIF IF c3_cut = -22 IF c3_timer_diff > 1000 IF NOT IS_CAR_DEAD c3_exp_car SET_CAR_PROOFS c3_exp_car FALSE FALSE FALSE FALSE FALSE EXPLODE_CAR_IN_CUTSCENE c3_exp_car c3_cut = -2 ENDIF ENDIF ENDIF IF c3_cut = -2 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 3000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE c3_cut = -1 ENDIF ENDIF IF c3_cut = -1 SET_FIXED_CAMERA_POSITION c3_cam_x[5] c3_cam_y[5] c3_cam_z[5] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT c3_cam_look_x[5] c3_cam_look_y[5] c3_cam_look_z[5] JUMP_CUT IF NOT IS_CHAR_DEAD c3_clerk[0] AND NOT IS_CHAR_DEAD c3_clerk[1] AND NOT IS_CAR_DEAD c3_Chase DELETE_CHAR c3_clerk[0] DELETE_CHAR c3_clerk[1] DELETE_CAR c3_chase ENDIF //GOSUB c3_buyer_create LOAD_SCENE_IN_DIRECTION c3_cam_x[5] c3_cam_y[5] c3_cam_z[5] 100.0 CLEAR_PRINTS GET_GAME_TIMER c3_timer_start DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE c3_cut = 0 ENDIF IF c3_cut = 0 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 300 IF c3_audio_playing = 0 IF NOT IS_CHAR_DEAD catalina AND NOT IS_CHAR_DEAD c3_buyer OPEN_SEQUENCE_TASK c3_end_cut_1 TASK_TURN_CHAR_TO_FACE_CHAR -1 c3_buyer TASK_GO_STRAIGHT_TO_COORD -1 -74.8954 -1133.7789 0.0781 PEDMOVE_WALK -1 TASK_LOOK_AT_CHAR -1 c3_buyer -2 CLOSE_SEQUENCE_TASK c3_end_cut_1 PERFORM_SEQUENCE_TASK catalina c3_end_cut_1 //PRINT_NOW ( CAT3_JA ) 3000 1 // CATALINA: Hello, Mr. Whittaker! c3_counter = 43 // CATALINA: Hello, Mr. Whittaker! GET_GAME_TIMER c3_timer_start c3_cut = 1 ENDIF ENDIF ENDIF ENDIF IF c3_cut = 1 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 2000 IF c3_audio_playing = 0 DO_FADE 50 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD c3_buyer AND NOT IS_CHAR_DEAD catalina TASK_LOOK_AT_CHAR c3_buyer catalina -2 TASK_SCRATCH_HEAD c3_buyer ENDIF c3_counter = 44 // MR. WHITTAKER: Catalina! What have you brought me today? //PRINT_NOW ( CAT3_JB ) 4500 1 // MR. WHITTAKER: Catalina! What have you brought me today? GET_GAME_TIMER c3_timer_start LOAD_SCENE_IN_DIRECTION c3_cam_x[6] c3_cam_y[6] c3_cam_z[6] 270.0 SET_FIXED_CAMERA_POSITION c3_cam_x[6] c3_cam_y[6] c3_cam_z[6] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT c3_cam_look_x[6] c3_cam_look_y[6] c3_cam_look_z[6] JUMP_CUT DO_FADE 50 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE c3_cut = 2 ENDIF ENDIF ENDIF IF c3_cut = 2 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 2000 IF c3_audio_playing = 0 IF NOT IS_CAR_DEAD c3_truck AND NOT IS_CHAR_DEAD c3_buyer AND NOT IS_CHAR_DEAD catalina CLEAR_LOOK_AT c3_buyer TASK_TURN_CHAR_TO_FACE_COORD catalina c3_gas_loc_x c3_gas_loc_y c3_gas_loc_z TASK_TURN_CHAR_TO_FACE_COORD c3_buyer c3_gas_loc_x c3_gas_loc_y c3_gas_loc_z TASK_LOOK_AT_VEHICLE catalina c3_truck -2 TASK_LOOK_AT_VEHICLE c3_buyer c3_truck -2 TASK_GO_STRAIGHT_TO_COORD c3_buyer -75.1023 -1134.8713 0.0781 PEDMOVE_WALK -1 c3_counter = 45 // CATALINA: A rig and tanker, full to the brim with premium gas! //PRINT_NOW ( CAT3_JC ) 5000 1 // CATALINA: A rig and tanker, full to the brim with premium gas! GET_GAME_TIMER c3_timer_start c3_cut = 3 ENDIF ENDIF ENDIF ENDIF IF c3_cut = 3 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 2000 IF c3_audio_playing = 0 IF NOT IS_CHAR_DEAD c3_buyer SET_FIXED_CAMERA_POSITION c3_cam_x[7] c3_cam_y[7] c3_cam_z[7] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT c3_cam_look_x[7] c3_cam_look_y[7] c3_cam_look_z[7] JUMP_CUT TASK_TURN_CHAR_TO_FACE_CHAR c3_buyer catalina TASK_LOOK_AT_CHAR c3_buyer catalina -2 TASK_SCRATCH_HEAD c3_buyer TASK_TURN_CHAR_TO_FACE_CHAR catalina c3_buyer TASK_LOOK_AT_CHAR catalina c3_buyer -2 ENDIF c3_counter = 46 // MR. WHITTAKER: Never seen it, never saw you, never gave you this wad of cash! //PRINT_NOW ( CAT3_JD ) 6000 1 // MR. WHITTAKER: Never seen it, never saw you, never gave you this wad of cash! GET_GAME_TIMER c3_timer_start c3_cut = 4 ENDIF ENDIF ENDIF IF c3_cut = 4 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 2000 IF c3_audio_playing = 0 c3_counter = 47 // CATALINA: Nice not doing business! //PRINT_NOW ( CAT3_JE ) 4000 1 // CATALINA: Nice not doing business! GET_GAME_TIMER c3_timer_start c3_cut = 5 ENDIF ENDIF ENDIF IF c3_cut = 5 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 2000 IF c3_audio_playing = 0 IF NOT IS_CHAR_DEAD catalina CLEAR_LOOK_AT catalina TASK_GO_STRAIGHT_TO_COORD catalina -83.1314 -1129.4170 0.0782 PEDMOVE_WALK -1 c3_counter = 48 // MR. WHITTAKER: Likewise. Now get out of here, before the cops come snooping. //PRINT_NOW ( CAT3_JF ) 6000 1 // MR. WHITTAKER: Likewise. Now get out of here, before the cops come snooping. GET_GAME_TIMER c3_timer_start c3_cut = 6 ENDIF ENDIF ENDIF ENDIF IF c3_cut = 6 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 2000 IF c3_audio_playing = 0 IF NOT IS_CHAR_DEAD c3_buyer CLEAR_LOOK_AT c3_buyer TASK_TURN_CHAR_TO_FACE_CHAR c3_buyer scplayer WAIT 100 TASK_GO_STRAIGHT_TO_COORD scplayer -84.1314 -1128.4170 0.0782 PEDMOVE_WALK -1 c3_counter = 51 // MR. WHITTAKER: You ever get hold of another rig, just drop it in – //PRINT_NOW ( CAT3_JG ) 4000 1 // MR. WHITTAKER: You ever get hold of another rig, just drop it in – GET_GAME_TIMER c3_timer_start c3_cut = 7 ENDIF ENDIF ENDIF ENDIF IF c3_cut = 7 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 2000 IF c3_audio_playing = 0 c3_counter = 52 // MR. WHITTAKER: I’ll always give a good price! //PRINT_NOW ( CAT3_JH ) 3000 1 // MR. WHITTAKER: I’ll always give a good price! GET_GAME_TIMER c3_timer_start c3_cut = 8 ENDIF ENDIF ENDIF IF c3_cut = 8 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 3000 DO_FADE 100 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GET_GAME_TIMER c3_timer_start IF NOT IS_CHAR_DEAD catalina IF IS_GROUP_MEMBER catalina players_group REMOVE_CHAR_FROM_GROUP catalina ENDIF ENDIF GOSUB c3_cat_bike_create CLEAR_CHAR_TASKS scplayer // SET_FIXED_CAMERA_POSITION -86.1477 -1130.4454 0.9157 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -86.5058 -1129.5203 1.0417 JUMP_CUT // SET_PLAYER_CONTROL player1 ON // SWITCH_WIDESCREEN OFF // RESTORE_CAMERA_JUMPCUT // SET_CAMERA_BEHIND_PLAYER //GOTO mission_passed_cat3 c3_cut = 9 ENDIF ENDIF IF c3_cut = 9 DO_FADE 100 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF c3_audio_playing = 0 c3_counter = 55 c3_cut = 10 ENDIF ENDIF IF c3_cut = 10 IF c3_counter = 0 IF NOT IS_CAR_DEAD c3_cat_bike AND NOT IS_CHAR_DEAD catalina IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR c3_cat_bike CLEAR_LOOK_AT catalina START_PLAYBACK_RECORDED_CAR c3_cat_bike 189 c3_cut = 11 ENDIF ENDIF ENDIF ENDIF IF c3_cut = 11 IF NOT IS_CAR_DEAD c3_cat_bike IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR c3_cat_bike DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CHAR_TASKS scplayer DELETE_CHAR catalina SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER GOTO mission_passed_cat3 ENDIF ENDIF ENDIF IF c3_cut > 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD catalina IF NOT IS_GROUP_MEMBER catalina players_group MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER players_group catalina ENDIF ENDIF CLEAR_CHAR_TASKS scplayer DELETE_CHAR catalina SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER GOTO mission_passed_cat3 ENDIF ENDIF ENDIF ENDIF // ---- Checks IF c3_stage > 0 AND c3_stage < 5 GOSUB c3_player_group_check ENDIF IF c3_stage > 1 AND c3_stage < 5 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD c3_truck IF c3_in_car = 0 IF c3_grouped = 1 IF NOT c3_stage = 1 AND NOT c3_stage = 3 PRINT_NOW ( CAT3_10 ) 100 1 ENDIF IF IS_CHAR_IN_CAR scplayer c3_truck IF NOT c3_stage = 1 AND NOT c3_stage = 3 CLEAR_PRINTS ENDIF REMOVE_BLIP c3_truck_blip IF c3_stage = 2 IF NOT IS_CAR_DEAD c3_trailer ADD_BLIP_FOR_CAR c3_trailer c3_trailer_blip SET_BLIP_AS_FRIENDLY c3_trailer_blip TRUE ENDIF ENDIF IF c3_stage = 3 OR c3_stage = 4 REMOVE_BLIP c3_gas_loc_blip ADD_BLIP_FOR_COORD c3_gas_loc_x c3_gas_loc_y c3_gas_loc_z c3_gas_loc_blip SET_BLIP_AS_FRIENDLY c3_gas_loc_blip TRUE CLEAR_ONSCREEN_COUNTER c3_trailer_health_display DISPLAY_ONSCREEN_COUNTER_WITH_STRING c3_trailer_health_display COUNTER_DISPLAY_BAR CAT3_11 //SET_ONSCREEN_COUNTER_COLOUR c3_trailer_health_display HUD_COLOUR_RED ENDIF c3_in_car = 1 ENDIF ENDIF ENDIF IF c3_in_car = 1 IF NOT IS_CHAR_IN_CAR scplayer c3_truck IF c3_grouped = 1 ADD_BLIP_FOR_CAR c3_truck c3_truck_blip SET_BLIP_AS_FRIENDLY c3_truck_blip TRUE ENDIF IF c3_stage = 2 REMOVE_BLIP c3_trailer_blip ENDIF IF c3_stage = 3 OR c3_stage = 4 REMOVE_BLIP c3_gas_loc_blip CLEAR_ONSCREEN_COUNTER c3_trailer_health_display ENDIF IF c3_stage = 4 IF NOT IS_CHAR_DEAD c3_clerk[0] SET_CHAR_ACCURACY c3_clerk[0] 50 TASK_DRIVE_BY c3_clerk[0] scplayer -1 0.0 0.0 0.0 150.0 DRIVEBY_AI_ALL_DIRN TRUE 60 ENDIF ENDIF c3_in_car = 0 ENDIF ENDIF ENDIF ENDIF IF IS_CHAR_DEAD catalina OR IS_CHAR_IN_WATER catalina CLEAR_PRINTS PRINT_NOW ( CAT3_06 ) 10000 1 // Catalina didn't make it. GOTO mission_failed_cat3 ENDIF IF c3_stage < 5 IF IS_CAR_DEAD c3_trailer CLEAR_PRINTS PRINT_NOW ( CAT3_07 ) 5000 1 GOTO mission_failed_cat3 ENDIF ENDIF IF c3_stage < 5 IF IS_CAR_DEAD c3_truck CLEAR_PRINTS PRINT_NOW ( CAT3_09 ) 5000 1 GOTO mission_failed_cat3 ENDIF ENDIF GOTO c3_main_loop // ------------------------------------------------------------------------------------------------ // Tanker disconnected cutscene... c3_cat_fail_cut: WAIT 0 // ---- Load & Play Dialogue... IF NOT c3_counter = 0 IF c3_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED c3_alt_slot CLEAR_MISSION_AUDIO c3_alt_slot ENDIF c3_audio_playing = 1 ENDIF IF c3_audio_playing = 1 LOAD_MISSION_AUDIO c3_audio_slot c3_audio[c3_counter] GOSUB c3_dialogue_pos c3_audio_playing = 2 ENDIF IF c3_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED c3_audio_slot IF NOT c3_audio_char = 0 IF NOT IS_CHAR_DEAD c3_audio_char START_CHAR_FACIAL_TALK c3_audio_char 10000 //ATTACH_MISSION_AUDIO_TO_CHAR c3_audio_slot c3_audio_char ENDIF ENDIF PLAY_MISSION_AUDIO c3_audio_slot PRINT_NOW $c3_text[c3_counter] 10000 1 c3_audio_playing = 3 ENDIF ENDIF IF c3_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED c3_audio_slot CLEAR_THIS_PRINT $c3_text[c3_counter] IF NOT c3_audio_char = 0 IF NOT IS_CHAR_DEAD c3_audio_char STOP_CHAR_FACIAL_TALK c3_audio_char ENDIF ENDIF IF c3_audio_slot = 1 c3_audio_slot = 2 c3_alt_slot = 1 ELSE c3_audio_slot = 1 c3_alt_slot = 2 ENDIF c3_counter = 0 c3_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED c3_alt_slot IF c3_counter < 54 c3_ahead_counter = c3_counter + 1 LOAD_MISSION_AUDIO c3_alt_slot c3_audio[c3_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF IF c3_cut = 0 DO_FADE 50 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE c3_counter = 53 //PRINT_NOW ( CATX_UJ ) 5000 1 // Carl Johnson, you are shit! GET_GAME_TIMER c3_timer_start IF NOT IS_CAR_DEAD c3_truck AND NOT IS_CHAR_DEAD catalina ATTACH_CAMERA_TO_VEHICLE c3_truck 1.0 8.0 1.5 0.0 0.0 1.0 0.0 JUMP_CUT CLEAR_ONSCREEN_COUNTER c3_trailer_health_display c3_cut = 1 ENDIF ENDIF IF c3_cut = 1 IF NOT IS_CAR_DEAD c3_truck AND NOT IS_CHAR_DEAD catalina //IF NOT IS_CHAR_IN_CAR catalina c3_truck GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 1000 IF c3_audio_playing = 0 c3_counter = 54 //PRINT_NOW ( CATX_UK ) 5000 1 // I cannot love a stupid man! ATTACH_CAMERA_TO_VEHICLE c3_truck 1.0 8.0 1.5 0.0 0.0 1.0 0.0 JUMP_CUT GET_OFFSET_FROM_CAR_IN_WORLD_COORDS c3_truck 4.5 10.0 0.0 c3_cam_x[8] c3_cam_y[8] c3_cam_z[8] TASK_LEAVE_CAR catalina c3_truck GET_GAME_TIMER c3_timer_start c3_cut = 2 ENDIF ENDIF ENDIF ENDIF IF c3_cut = 2 IF c3_audio_playing = 0 GET_GAME_TIMER c3_timer_end c3_timer_diff = c3_timer_end - c3_timer_start IF c3_timer_diff > 1000 IF NOT IS_CHAR_DEAD catalina IF NOT IS_CAR_DEAD c3_truck IF NOT IS_CHAR_IN_CAR catalina c3_truck TASK_GO_STRAIGHT_TO_COORD catalina c3_cam_x[8] c3_cam_y[8] c3_cam_z[8] PEDMOVE_WALK -1 IF c3_audio_playing = 0 DO_FADE 50 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD catalina IF IS_GROUP_MEMBER catalina players_group REMOVE_CHAR_FROM_GROUP catalina DELETE_CHAR catalina CLEAR_PRINTS c3_cut = 3 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF c3_cut < 3 IF IS_CAR_IN_WATER c3_truck c3_cut = 3 ENDIF ENDIF IF c3_cut = 3 OR IS_CHAR_DEAD catalina //may fix a issue where SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER DO_FADE 50 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PRINT_NOW ( CAT3_08 ) 5000 1 SET_PLAYER_CONTROL player1 ON GOTO mission_failed_cat3 ENDIF //-88.1347 -1127.3966 0.0847 348.4666 //-86.1477 -1130.4454 0.9157 -86.5058 -1129.5203 1.0417 GOTO c3_cat_fail_cut // ------------------------------------------------------------------------------------------------ // Mission Failed mission_failed_cat3: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // ------------------------------------------------------------------------------------------------ // Mission Passed mission_passed_cat3: cat_counter ++ IF NOT IS_CAR_DEAD c3_truck AND NOT IS_CAR_DEAD c3_trailer FREEZE_CAR_POSITION c3_truck FALSE DELETE_CAR c3_truck DELETE_CAR c3_trailer ENDIF START_NEW_SCRIPT trucking_loop //IF cat_counter = 2 //AND bcesar_tiggered = 0 // 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 // bcesar_tiggered = 1 //ENDIF IF cat_otb_banter = 1 cat_otb_banter = 2 ENDIF IF cat_liquor_banter = 1 cat_liquor_banter = 2 ENDIF REMOVE_BLIP tucking_contact_blip ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT truckX truckY truckZ RADAR_SPRITE_TRUCK tucking_contact_blip PLAY_MISSION_PASSED_TUNE 1 REGISTER_MISSION_PASSED ( CAT_3 ) PLAYER_MADE_PROGRESS 1 PRINT_WITH_NUMBER_BIG ( M_PASS ) c3_pass 5000 1 //"Mission Passed!" ADD_SCORE player1 c3_pass CLEAR_WANTED_LEVEL player1 flag_cat_mission3_passed = 1 RETURN // ------------------------------------------------------------------------------------------------ // Mission Cleanup mission_cleanup_cat3: // ---- Blips REMOVE_BLIP c3_truck_blip REMOVE_BLIP c3_trailer_blip REMOVE_BLIP c3_chase_blip REMOVE_BLIP c3_gas_loc_blip REMOVE_BLIP catalina_blip CLEAR_ONSCREEN_COUNTER c3_trailer_health_display CLEAR_MISSION_AUDIO 3 // ---- Models DELETE_CHAR c3_buyer DELETE_CAR c3_cat_bike //DELETE_CHAR catalina MARK_MODEL_AS_NO_LONGER_NEEDED HFYST MARK_MODEL_AS_NO_LONGER_NEEDED WMOST MARK_MODEL_AS_NO_LONGER_NEEDED BMYPOL2 MARK_MODEL_AS_NO_LONGER_NEEDED PETRO MARK_MODEL_AS_NO_LONGER_NEEDED PETROTR MARK_MODEL_AS_NO_LONGER_NEEDED SABRE MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_MODEL_AS_NO_LONGER_NEEDED BMOST MARK_MODEL_AS_NO_LONGER_NEEDED SADLER MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ IF NOT IS_CHAR_DEAD catalina REMOVE_CHAR_ELEGANTLY catalina ENDIF UNLOAD_SPECIAL_CHARACTER 1 REMOVE_ANIMATION CAR_CHAT REMOVE_ANIMATION MISC REMOVE_CAR_RECORDING 188 REMOVE_CAR_RECORDING 189 REMOVE_CAR_RECORDING 199 // ---- Clear Script Stuff flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE MISSION_HAS_FINISHED RETURN // ------------------------------------------------------------------------------------------------ // ---- Sub-routines c3_dialogue_pos: IF c3_counter = 1 // CATALINA: Hand over the takings, or I blow your fucking balls off! OR c3_counter = 5 // CATALINA: Suit yourself, macaron. OR c3_counter = 6 // CATALINA: Change of plan, Carl, we’re taking the tanker! OR c3_counter = 8 // CATALINA: Move it, you lazy bastard, get that tanker hooked up! OR c3_counter = 11 // CATALINA: Shut your spotty little mouth! OR c3_counter = 12 // CATALINA: Drive! I know a guy who’ll pay for this rig and its cargo! c3_audio_char = catalina ENDIF IF c3_counter = 16 // CATALINA: Follow me! OR c3_counter = 20 // CATALINA: Follow me! OR c3_counter = 21 // CATALINA: What is keeping you? OR c3_counter = 22 // CATALINA: C’mon, Carl, move it! OR c3_counter = 23 // CATALINA: Not far now! OR c3_counter = 24 // CATALINA: This way! c3_audio_char = catalina ENDIF IF c3_counter = 25 // CATALINA: Where have you been? OR c3_counter = 26 // CATALINA: I thought you said you could drive! OR c3_counter = 40 // CATALINA: Pull up in that depot up ahead! OR c3_counter = 41 // CATALINA: That's the place, up ahead! OR c3_counter = 42 // CATALINA: Yeehaa, that's the place, go, Carl, go! OR c3_counter = 43 // CATALINA: Hello, Mr. Whittaker! c3_audio_char = catalina ENDIF IF c3_counter = 45 // CATALINA: A rig and tanker, full to the brim with premium gas! OR c3_counter = 47 // CATALINA: Nice not doing business! c3_audio_char = catalina ENDIF IF c3_counter = 2 // CLERK 1: This here’s bulletproof glass! OR c3_counter = 3 // CLERK 1: So you can just fuck off, bitch, before I call the sheriff! OR c3_counter = 7 // CLERK 1: Hey! What you doing? OR c3_counter = 10 // CLERK 1: You won’t get away with this! OR c3_counter = 13 // CLERK 1: I ain’t losing another crappy job because of some crazy bitch! OR c3_counter = 14 // CLERK 1: C’mon, Derek, we’re going to stop those bastards! c3_audio_char = c3_clerk[0] ENDIF IF c3_counter = 17 // CLERK 1: Oh no you don’t, bitch! OR c3_counter = 18 // CLERK 1: C’mon, Derek, we’re going to be local heroes! c3_audio_char = c3_clerk[0] ENDIF IF c3_counter = 27 // CLERK 1: Keep her steady so I can get a good shot! OR c3_counter = 28 // CLERK 1: Pull alongside! OR c3_counter = 29 // CLERK 1: Keep up with them! OR c3_counter = 30 // CLERK 1: Get ahead of them! c3_audio_char = 0 ENDIF IF c3_counter = 31 // CLERK 1: Block their route! OR c3_counter = 32 // CLERK 1: Steady... steady... OR c3_counter = 15 // CLERK 2: But I don’t wanna! c3_audio_char = 0 ENDIF IF c3_counter = 4 // CLERK 2: What you doing, man, just give her the cash! OR c3_counter = 19 // CLERK 2: I’d be happier staying here and stacking shelves! c3_audio_char = c3_clerk[1] ENDIF IF c3_counter = 33 // CLERK 2: It ain't worth it! OR c3_counter = 34 // CLERK 2: I'm scared! OR c3_counter = 35 // CLERK 2: This ain't my fight! c3_audio_char = 0 ENDIF IF c3_counter = 36 // CLERK 2: We'll get ourselves killed! OR c3_counter = 37 // CLERK 2: I don't wanna do this! OR c3_counter = 38 // CLERK 2: Oh my god, I'm gonnna die! OR c3_counter = 39 // CLERK 2: That rig will crush us! c3_audio_char = 0 ENDIF IF c3_counter = 44 // MR WHITTAKER: Catalina! What have you brought me today? OR c3_counter = 46 // MR WHITTAKER: Never seen it, never saw you, never gave you this wad of cash! OR c3_counter = 48 // MR WHITTAKER: Likewise. Now get out of here, before the cops come snooping. OR c3_counter = 49 // MR WHITTAKER: You ever get hold of another rig, just drop it in, OR c3_counter = 50 // MR WHITTAKER: I'll always give a good price! OR c3_counter = 51 // MR WHITTAKER: You ever want to run some freight for me just drop in. c3_audio_char = c3_buyer ENDIF IF c3_counter = 52 // MR WHITTAKER: I've always got shit needs moving! c3_audio_char = c3_buyer ENDIF IF c3_counter = 9 // CARL: Yo, I’m on it, I’m on it! c3_audio_char = scplayer ENDIF RETURN c3_player_car_check: // Get Player's car... IF NOT IS_CHAR_DEAD scplayer IF c3_in_car = 0 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer c3_player_car c3_in_car = 1 ENDIF ENDIF IF c3_in_car = 1 IF NOT IS_CHAR_IN_ANY_CAR scplayer c3_in_car = 0 ENDIF ENDIF ENDIF RETURN c3_player_group_check: IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD catalina IF c3_grouped = 0 IF c3_stage > 1 AND c3_stage < 5 IF NOT IS_GROUP_MEMBER catalina players_group IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer catalina 8.0 8.0 8.0 FALSE IF c3_stage = 2 IF c3_in_car = 1 IF NOT IS_CAR_DEAD c3_trailer REMOVE_BLIP c3_trailer_blip ADD_BLIP_FOR_CAR c3_trailer c3_trailer_blip SET_BLIP_AS_FRIENDLY c3_trailer_blip TRUE ENDIF ENDIF IF c3_in_car = 0 IF NOT IS_CAR_DEAD c3_truck REMOVE_BLIP c3_truck_blip ADD_BLIP_FOR_CAR c3_truck c3_truck_blip SET_BLIP_AS_FRIENDLY c3_truck_blip TRUE ENDIF ENDIF ENDIF IF c3_stage = 4 IF c3_in_car = 1 c3_dialogue_playing = 4 REMOVE_BLIP c3_gas_loc_blip ADD_BLIP_FOR_COORD c3_gas_loc_x c3_gas_loc_y c3_gas_loc_z c3_gas_loc_blip CLEAR_ONSCREEN_COUNTER c3_trailer_health_display DISPLAY_ONSCREEN_COUNTER_WITH_STRING c3_trailer_health_display COUNTER_DISPLAY_BAR CAT3_11 //SET_ONSCREEN_COUNTER_COLOUR c3_trailer_health_display HUD_COLOUR_RED ENDIF IF c3_in_car = 0 IF NOT IS_CAR_DEAD c3_truck c3_dialogue_playing = 4 REMOVE_BLIP c3_truck_blip ADD_BLIP_FOR_CAR c3_truck c3_truck_blip SET_BLIP_AS_FRIENDLY c3_truck_blip TRUE ENDIF ENDIF ENDIF MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER players_group catalina REMOVE_BLIP catalina_blip IF NOT c3_stage = 1 AND NOT c3_stage = 3 CLEAR_PRINTS ENDIF c3_grouped = 1 ENDIF ENDIF ENDIF ENDIF IF c3_grouped = 1 IF NOT IS_GROUP_MEMBER catalina players_group IF c3_stage = 2 REMOVE_BLIP c3_trailer_blip IF c3_in_car = 0 REMOVE_BLIP c3_truck_blip ENDIF ENDIF IF c3_stage = 4 CLEAR_ONSCREEN_COUNTER c3_trailer_health_display REMOVE_BLIP c3_gas_loc_blip c3_dialogue_playing = 10 IF c3_in_car = 0 REMOVE_BLIP c3_truck_blip ENDIF ENDIF ADD_BLIP_FOR_CHAR catalina catalina_blip SET_BLIP_AS_FRIENDLY catalina_blip TRUE IF NOT c3_stage = 3 PRINT_NOW ( CAT3_01 ) 5000 1 ENDIF c3_grouped = 0 ENDIF ENDIF ENDIF RETURN } /* [SOUND_CAT3_01:CAT3] ~s~Go and pick up ~b~Catalina~s~. [SOUND_CAT3_02:CAT3] ~s~Get into the ~b~rig~s~! [SOUND_CAT3_03:CAT3] Position the cab in front of the trailer. [SOUND_CAT3_04:CAT3] Look behind by pressing L2 and R2 together, or use the right thumbstick to manoeuvre the camera for a better view. To attach to a trailer, slowly back the cab into the front of the trailer. [SOUND_CAT3_05:CAT3] ~s~Drive the rig out to Catalina's ~y~buyer~s~. Be careful not to disconnect the trailer. [SOUND_CAT3_06:CAT3] ~r~Catalina didn't make it. [SOUND_CAT3_07:CAT3] ~r~The tanker was destroyed! [SOUND_CAT3_08:CAT3] ~r~The tanker disconnected! [SOUND_CAT3_09:CAT3] ~r~The rig was destroyed! [SOUND_CAT3_10:CAT3] ~s~Get back in the ~b~cab~s~! [SOUND_CAT3_11:CAT3] TANKER~N~HEALTH~N~ [SOUND_CAT3_AA:CAT3] Hand over the takings, or I blow your fucking balls off! [SOUND_CAT3_AB:CAT3] This here's bulletproof glass! [SOUND_CAT3_AC:CAT3] So you can just fuck off, bitch, before I call the sheriff! [SOUND_CAT3_AD:CAT3] What you doing, man, just give her the cash! [SOUND_CAT3_AE:CAT3] Suit yourself, maricon. [SOUND_CAT3_AF:CAT3] Change of plan, Carl, we're taking the tanker! [SOUND_CAT3_AG:CAT3] Hey! What you doing? [SOUND_CAT3_CA:CAT3] Drive! I know a guy who'll pay for this rig and its cargo! [SOUND_CAT3_CB:CAT3] I ain't losing another crappy job because of some crazy bitch! [SOUND_CAT3_CC:CAT3] C'mon, Derek, we're going to stop those bastards! [SOUND_CAT3_CD:CAT3] But I don't wanna! [SOUND_CAT3_FA:CAT3] Keep her steady so I can get a good shot! [SOUND_CAT3_FB:CAT3] Pull alongside! [SOUND_CAT3_FC:CAT3] Keep up with them! [SOUND_CAT3_FD:CAT3] Get ahead of them! [SOUND_CAT3_FE:CAT3] Block their route! [SOUND_CAT3_FF:CAT3] Steady... steady... [SOUND_CAT3_GA:CAT3] It ain't worth it! [SOUND_CAT3_GB:CAT3] I'm scared, man! [SOUND_CAT3_GC:CAT3] This ain't my fight! [SOUND_CAT3_GD:CAT3] We'll get ourselves killed! [SOUND_CAT3_GE:CAT3] I don't wanna do this! [SOUND_CAT3_GF:CAT3] Oh my god, I'm gonnna die! [SOUND_CAT3_GG:CAT3] That rig will crush us! [SOUND_CAT3_JA:CAT3] Hello, Mr. Whittaker! [SOUND_CAT3_JB:CAT3] Catalina! What have you brought me today? [SOUND_CAT3_JC:CAT3] A rig and tanker, full to the brim with premium gas! [SOUND_CAT3_JD:CAT3] Never seen it, never saw you, never gave you this wad of cash! [SOUND_CAT3_JE:CAT3] Nice not doing business! [SOUND_CAT3_JF:CAT3] Likewise. Now get out of here, before the cops come snooping. [SOUND_CAT3_JG:CAT3] You ever want to run some freight for me just drop in [SOUND_CAT3_JH:CAT3] I've always got shit needs moving! [SOUND_CAT3_XA:CAT3] Carl Johnson, you are shit! [SOUND_CAT3_XB:CAT3] I cannot love a stupid man! {Carl & Catalina hold up gas station} – SCRIPTED CUT [SOUND_CAT3_AA] CATALINA: Hand over the takings, or I blow your fucking balls off! [SOUND_CAT3_AB] CLERK 1: This here’s bulletproof glass! [SOUND_CAT3_AC] CLERK 1: So you can just fuck off, bitch, before I call the sheriff! [SOUND_CAT3_AD] CLERK 2: What you doing, man, just give her the cash! [SOUND_CAT3_AE] CATALINA: Suit yourself, macaron. [SOUND_CAT3_AF] CATALINA: Change of plan, Carl, we’re taking the tanker! [SOUND_CAT3_AG] CLERK 1: Hey! What you doing? {Player has to hook-up tanker – Cashier shouts threats} – INSTRUCTIONS [SOUND_CAT3_BA] CATALINA: Move it, you lazy bastard, get that tanker hooked up! [SOUND_CAT3_BB] CARL: Yo, I’m on it, I’m on it! [SOUND_CAT3_BC] CASHIER 1: You won’t get away with this! [SOUND_CAT3_BD] CATALINA: Shut your spotty little mouth! {Player has hooked up Tanker – Catalina gets in the cab} – INSTRUCTIONS [SOUND_CAT3_CA] CATALINA: Drive! I know a guy who’ll pay for this rig and its cargo! [SOUND_CAT3_CB] CLERK 1: I ain’t losing another crappy job because of some crazy bitch! [SOUND_CAT3_CC] CLERK 1: C’mon, Derek, we’re going to stop those bastards! [SOUND_CAT3_CD] CLERK 2: But I don’t wanna! {Player has hooked up Tanker – Catalina grabs a bike to lead the way} – INSTRUCTIONS {Catalina waiting for Player on bike – ‘hurry up/this way’} – variations [SOUND_CAT3_EA] CATALINA: Follow me! [SOUND_CAT3_EB] CATALINA: What is keeping you? [SOUND_CAT3_EC] CATALINA: C’mon, Carl, move it! [SOUND_CAT3_ED] CATALINA: Not far now! [SOUND_CAT3_EE] CATALINA: This way! [SOUND_CAT3_EF] CATALINA: Where have you been? [SOUND_CAT3_EG] CATALINA: I thought you said you could drive! {Clerk 1 & 2 give chase in a car.} – variations [SOUND_CAT3_FA] CLERK 1: Keep her steady so I can get a good shot! [SOUND_CAT3_FB] CLERK 1: Pull alongside! [SOUND_CAT3_FC] CLERK 1: Keep up with them! [SOUND_CAT3_FD] CLERK 1: Get ahead of them! [SOUND_CAT3_FE] CLERK 1: Block their route! [SOUND_CAT3_FF] CLERK 1: Steady… steady… [SOUND_CAT3_GA] CLERK 2: It ain’t worth it! [SOUND_CAT3_GB] CLERK 2: I’m scared, man! [SOUND_CAT3_GC] CLERK 2: This ain’t my fight! [SOUND_CAT3_GD] CLERK 2: We’ll get ourselves killed! [SOUND_CAT3_GE] CLERK 2: I don’t wanna do this! [SOUND_CAT3_GF] CLERK 2: Oh my god, I’m gonnna die! [SOUND_CAT3_GG] CLERK 2: That rig will crush us! {Player is approaching drop-off location} – INSTRUCTIONS - variations [SOUND_CAT3_HA] CATALINA: Pull up in that depot up ahead! [SOUND_CAT3_HB] CATALINA: That’s the place, up ahead! [SOUND_CAT3_HC] CATALINA: Yeehaa, that’s the place – go, Carl, go! {Rig is accepted by depot owner} – SCRIPTED CUT [SOUND_CAT3_JA] CATALINA: Hello, Mr. Whittaker! [SOUND_CAT3_JB] MR. WHITTAKER: Catalina! What have you brought me today? [SOUND_CAT3_JC] CATALINA: A rig and tanker, full to the brim with premium gas! [SOUND_CAT3_JD] MR. WHITTAKER: Never seen it, never saw you, never gave you this wad of cash! [SOUND_CAT3_JE] CATALINA: Nice not doing business! [SOUND_CAT3_JF] MR. WHITTAKER: Likewise. Now get out of here, before the cops come snooping. [SOUND_CAT3_JG] MR. WHITTAKER: You ever get hold of another rig, just drop it in – [SOUND_CAT3_JH] MR. WHITTAKER: I’ll always give a good price! [C3_0:CAT3] ~s~Go and pick up Catalina [C3_1:CAT3] Catalina: Go and get a car! [C3_2:CAT3] Catalina: About time you showed up. [C3_3:CAT3] Catalina: There's a gas station I know with a safe in the back room. [C3_4:CAT3] Catalina: We can rob it if we get the clerk out of the store. [C3_4A:CAT3] Catalina: He only leaves the store for truckers. And I know where we can find a truck. [C3_5:CAT3] Catalina: This will do nicely. [C3_6:CAT3] ~s~Wait for Catalina. [C3_7:CAT3] Catalina: We have business to take care of, let's go. [C3_8:CAT3] Catalina: I need you to distract the clerk while I rob the place. [C3_9:CAT3] Catalina: Be careful, he's got an itchy trigger finger. [C3_10:CAT3] ~s~Distract the clerk, don't let Catalina get caught. [C3_11:CAT3] CATALINA: Give me all the money in the till or I shoot. [C3_12:CAT3] CLERK: Not a chance! And this glass is bulletproof. How you like them apples? [C3_13:CAT3] CATALINA: Ok, keep the cash, there's been a change of plan. [C3_14:CAT3] CLERK: You give up pretty easy, amateur! [C3_15:CAT3] CATALINA: Carl! Hook up that rig and see how badly this punk wants to keep his gas. [C3_15A:CAT3] CLERK: Damn you! I want my gas back! [C3_15B:CAT3] CLERK: If I can't have it, no-one can! [C3_15C:CAT3] ~s~Get into the rig! [C3_15H:CAT3] To connect to the tanker line up the rig directly in front of it. [C3_15I:CAT3] Reverse the rig until the connection is made. [C3_16:CAT3] CATALINA: I know a guy who'll buy the whole rig. [C3_17:CAT3] ~s~Drive the rig out to Catalina's buyer. Be careful not to jacknife it. [C3_18:CAT3] ~s~Catalina didn't make it. [C3_19:CAT3] ~s~Catalina has all the cash. Head back and pick her up. [C3_20:CAT3] ~s~Head back to the hideout! [C3_21:CAT3] ~s~The tanker was destroyed! [C3_22:CAT3] ~s~The tanker disconnected! [C3_23:CAT3] ~s~The rig was destroyed! [C3_24:CAT3] ~s~Get back in the cab! [C3_H:CAT3] GAS: */ MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // *************************************** CAT 4 ******************************************* // ********************************* Mission Description *********************************** // ***************************************************************************************** // **************************************************************************************** // ***************************************************************************************** SCRIPT_NAME CAT4 // Mission start stuff GOSUB mission_start_cat4 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_cat4 ENDIF GOSUB mission_cleanup_cat4 MISSION_END { // Variables for mission // Cars LVAR_INT car_police1_cat4 car_police2_cat4 car_police3_cat4 LVAR_INT getaway_car_car4 LVAR_INT player_in_otb_flag_cat4_local_var LVAR_INT object_door_cat4 LVAR_INT small_safe_cat4 LVAR_INT players_car_cat4 LVAR_INT players_car_model_cat4 // Chars LVAR_INT char_pol1_cat4 char_pol2_cat4 char_pol3_cat4 LVAR_INT char_random_ped_cat4[6] LVAR_INT index_random_char LVAR_INT index_cat4 // DECISION MAKERS LVAR_INT dm_cops_cat4 LVAR_INT dm_catalina_cat4 //LVAR_INT dm_owner_of_cat_cat4 // seq LVAR_INT seq_cat_stealing_car // objects LVAR_INT object_cutscene_satchel_cat4 LVAR_INT players_ammo_cat4 players_ammo_2_cat4 players_ammo_3_cat4 //Coords LVAR_FLOAT coord_otb_x_cat4 coord_otb_y_cat4 coord_otb_z_cat4 LVAR_FLOAT coord_otb_clerk_x_cat4 coord_otb_clerk_y_cat4 coord_otb_clerk_z_cat4 LVAR_FLOAT coord_spray_shop_x coord_spray_shop_y coord_spray_shop_z LVAR_FLOAT coord_random_char_x[6] coord_random_char_y[6] coord_random_char_z[6] // flags LVAR_INT flag_holdup_cat4 VAR_INT flag_has_safe_been_robbed_cat4 LVAR_INT flag_getaway_cat4 LVAR_INT flag_mission_passed_cat4 LVAR_INT flag_mission_failed_cat4 LVAR_INT flag_police_arrive LVAR_INT flag_are_cops_pissed LVAR_INT flag_text_otb flag_text_cat_police_killing_cat4 LVAR_INT flag_robbery_cutscene_otb LVAR_INT flag_cutscene1_cat4 LVAR_INT flag_create_car_cat_enters LVAR_INT flag_cat_shoot_cops LVAR_INT flag_help_text_spary_cat4 LVAR_INT flag_has_catalina_chocolate_rant_been_done LVAR_INT cat_coment_counter LVAR_INT flag_has_otb_door_been_open LVAR_INT flag_display_help_cat4 LVAR_INT flag_set_cat_as_group_member LVAR_INT flag_dont_make_cat_leave_car LVAR_INT play_audio_flag_cat4 LVAR_INT help_text_cat4 LVAR_INT set_audio_to_be_played LVAR_INT number_of_conversation_samples_cat4 LVAR_INT max_number_in_players_group // blips LVAR_INT blip_otb_cat4 LVAR_INT blip_cat_cat4 LVAR_INT blip_getaway_car LVAR_INT blip_hiding_spot LVAR_INT blip_paint_and_spray_cat4 // VARIABLES FOR HOLDUP LVAR_INT flag_has_cat_got_the_loot_cat4 VAR_INT game_timer1_cat4 game_timer2_cat4 // text and audio LVAR_TEXT_LABEL $cat4_text[52] LVAR_INT cat4_audio[52] LVAR_INT index_dialogue_cat4 LVAR_INT flag_safe_explosion_delay LVAR_INT dm_players_group_cat4 // FX SYSTEM // **************************************** Mission Start ********************************** mission_start_cat4: //REGISTER_MISSION_GIVEN flag_player_on_mission = 1 SWITCH_ENTRY_EXIT genOTB FALSE IF IS_PLAYER_PLAYING Player1 SET_PLAYER_CONTROL player1 OFF ENDIF // ****************************************START OF CUTSCENE******************************** //SET_PLAYER_CONTROL Player1 OFF // ****************************************END OF CUTSCENE********************************** // fades the screen in SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT SWITCH_WIDESCREEN ON WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF IS_PLAYER_PLAYING player1 SET_CHAR_HEADING scplayer 64.0 SET_CAMERA_BEHIND_PLAYER ENDIF FIND_MAX_NUMBER_OF_GROUP_MEMBERS max_number_in_players_group max_number_in_players_group -= 1 IF max_number_in_players_group <= 0 SET_SCRIPT_LIMIT_TO_GANG_SIZE 1 ELSE SET_SCRIPT_LIMIT_TO_GANG_SIZE max_number_in_players_group //GET_INT_STAT CYCLE_SKILL stat_read_skill_temp ENDIF MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 // request models REQUEST_MODEL DESERT_EAGLE REQUEST_MODEL BOMB REQUEST_MODEL SATCHEL REQUEST_MODEL rider1_door REQUEST_MODEL kev_safe REQUEST_MODEL man_safenew REQUEST_ANIMATION misc WHILE NOT HAS_MODEL_LOADED SATCHEL OR NOT HAS_MODEL_LOADED BOMB WAIT 0 ENDWHILE //LOAD_MISSION_TEXT CAT2 LOAD_MISSION_TEXT CAT //RESTORE_CAMERA_JUMPCUT //WAIT 1500 // **************************************** Initialising variables ********************************** // Main Loop Flags play_audio_flag_cat4 = 1 flag_holdup_cat4 = 1 flag_getaway_cat4 = 0 flag_mission_passed_cat4 = 0 flag_mission_failed_cat4 = 0 flag_robbery_cutscene_otb = 0 flag_has_safe_been_robbed_cat4 = 0 // resets otb safe flag_cat_shoot_cops = 0 flag_otb_robbing_peds_panic = 0 flag_police_arrive = 0 flag_create_car_cat_enters = 0 flag_help_text_spary_cat4 = 0 flag_safe_explosion_delay = 0 flag_display_help_cat4 = 0 set_audio_to_be_played = 0 play_audio_flag_cat4 = 0 cat_coment_counter = 0 help_text_cat4 = 0 flag_dont_make_cat_leave_car = 1 flag_text_otb = 0 flag_text_cat_police_killing_cat4 = 0 flag_has_otb_door_been_open = 0 //player_in_otb_flag = 0 player_in_otb_flag_cat4_local_var = 0 flag_cutscene1_cat4 = 0 flag_are_cops_pissed = 0 flag_has_catalina_chocolate_rant_been_done = 0 flag_has_cat_got_the_loot_cat4 = 0 counter_robbery_cat4 = 0 index_dialogue_cat4 = 0 flag_set_cat_as_group_member = 0 coord_otb_x_cat4 = 1289.8507 coord_otb_y_cat4 = 269.8778 coord_otb_z_cat4 = 19.5888 coord_otb_clerk_x_cat4 = 820.2197 coord_otb_clerk_y_cat4 = 4.2019 coord_otb_clerk_z_cat4 = 1004.6614 coord_spray_shop_x = 719.17 coord_spray_shop_y = -457.68 coord_spray_shop_z = 16.92 coord_random_char_x[0] = 822.4665 coord_random_char_y[0] = 1.7837 coord_random_char_z[0] = 1003.1 coord_random_char_x[1] = 822.0091 coord_random_char_y[1] = 6.0787 coord_random_char_z[1] = 1003.17 coord_random_char_x[2] = 832.8624 coord_random_char_y[2] = 0.7513 coord_random_char_z[2] = 1003.18 coord_random_char_x[3] = 830.9443 coord_random_char_y[3] = 0.3996 coord_random_char_z[3] = 1003.17 coord_random_char_x[4] = 827.8390 coord_random_char_y[4] = -0.2443 coord_random_char_z[4] = 1003.1 coord_random_char_x[5] = 829.2125 coord_random_char_y[5] = 2.0354 coord_random_char_z[5] = 1003.17 // AUDIO AND TEXT // conversation in the car after cat and carl lose the police /* $cat4_text[0] = &CAT2_HA //CATALINA Carl, you have to be fast and totally ruthless! $cat4_text[1] = &CAT2_HB //CATALINA No fucking about like in the betting shop! $cat4_text[2] = &CAT2_HC //carl What? If you hadn’t started blasting, $cat4_text[3] = &CAT2_HE //CATALINA They had to die because YOU were slow and stupid, $cat4_text[4] = &CAT2_HF //CATALINA like a big fat brat that eats chocolates while his $cat4_text[5] = &CAT2_HG //CATALINA father gives nothing to his step daughter but stale bread! $cat4_text[6] = &CAT2_HH //carl What? Where’d that come from? $cat4_text[7] = &CAT2_HI //CATALINA Enough! I am not speaking to you any more! cat4_audio[0] = _CAT2_HA //CATALINA Carl, you have to be fast and totally ruthless! cat4_audio[1] = SOUND_CAT2_HB //CATALINA No fucking about like in the betting shop! cat4_audio[2] = SOUND_CAT2_HC //carl What? If you hadn’t started blasting, things would have been sweet! cat4_audio[3] = SOUND_CAT2_HE //CATALINA They had to die because YOU were slow and stupid, cat4_audio[4] = SOUND_CAT2_HF //CATALINA like a big fat brat that eats chocolates while his cat4_audio[5] = SOUND_CAT2_HG //CATALINA father gives nothing to his step daughter but stale bread! cat4_audio[6] = SOUND_CAT2_HH //carl What? Where’d that come from? cat4_audio[7] = SOUND_CAT2_HI //CATALINA Enough! I am not speaking to you any more! */ IF cat_getaway_dialogue = 0 IF cat_counter = 0 $cat4_text[0] = &CAT_DA // I have a hideout on Fern Ridge. $cat4_text[1] = &CAT_DE //Now drive! $cat4_text[2] = &CAT_DF //You’re fucking psycho! $cat4_text[3] = &CAT_DG //All you little men are scared of strong women! $cat4_text[4] = &CAT_DH //If we’re passionate you say we crazy. $cat4_text[5] = &CAT_DI //If we’re upset you say we hysterical. $cat4_text[6] = &CAT_DJ //We sleep with men, we’re sluts. $cat4_text[7] = &CAT_DK //If we don’t put out we’re frigid bitches. $cat4_text[8] = &CAT_DL // Who you calling little men? You went berserk back there! $cat4_text[9] = &CAT_DM // That? That was just another day at the office! $cat4_text[10] = &CAT_DN // You can’t stand the heat, go put your tiny balls in the freezer! $cat4_text[11] = &CAT_DO // Tiny balls? Now just wait a minute- $cat4_text[12] = &CAT_DP //Enough! Just shut up and drive, I’m counting the fucking money! cat4_audio[0] = SOUND_CAT_DA // I have a hideout on Fern Ridge. cat4_audio[1] = SOUND_CAT_DE //Now drive! cat4_audio[2] = SOUND_CAT_DF //You’re fucking psycho! cat4_audio[3] = SOUND_CAT_DG //All you little men are scared of strong women! cat4_audio[4] = SOUND_CAT_DH //If we’re passionate you say we crazy. cat4_audio[5] = SOUND_CAT_DI //If we’re upset you say we hysterical. cat4_audio[6] = SOUND_CAT_DJ //We sleep with men, we’re sluts. cat4_audio[7] = SOUND_CAT_DK //If we don’t put out we’re frigid bitches. cat4_audio[8] = SOUND_CAT_DL // Who you calling little men? You went berserk back there! cat4_audio[9] = SOUND_CAT_DM // That? That was just another day at the office! cat4_audio[10] = SOUND_CAT_DN // You can’t stand the heat, go put your tiny balls in the freezer! cat4_audio[11] = SOUND_CAT_DO // Tiny balls? Now just wait a minute- cat4_audio[12] = SOUND_CAT_DP //Enough! Just shut up and drive, I’m counting the fucking money! number_of_conversation_samples_cat4 = 16 // Have to add 4 samples that play prior ELSE $cat4_text[0] = &CAT_DF //You’re fucking psycho! $cat4_text[1] = &CAT_DG //All you little men are scared of strong women! $cat4_text[2] = &CAT_DH //If we’re passionate you say we crazy. $cat4_text[3] = &CAT_DI //If we’re upset you say we hysterical. $cat4_text[4] = &CAT_DJ //We sleep with men, we’re sluts. $cat4_text[5] = &CAT_DK //If we don’t put out we’re frigid bitches. $cat4_text[6] = &CAT_DL // Who you calling little men? You went berserk back there! $cat4_text[7] = &CAT_DM // That? That was just another day at the office! $cat4_text[8] = &CAT_DN // You can’t stand the heat, go put your tiny balls in the freezer! $cat4_text[9] = &CAT_DO // Tiny balls? Now just wait a minute- $cat4_text[10] = &CAT_DP //Enough! Just shut up and drive, I’m counting the fucking money! cat4_audio[0] = SOUND_CAT_DF //You’re fucking psycho! cat4_audio[1] = SOUND_CAT_DG //All you little men are scared of strong women! cat4_audio[2] = SOUND_CAT_DH //If we’re passionate you say we crazy. cat4_audio[3] = SOUND_CAT_DI //If we’re upset you say we hysterical. cat4_audio[4] = SOUND_CAT_DJ //We sleep with men, we’re sluts. cat4_audio[5] = SOUND_CAT_DK //If we don’t put out we’re frigid bitches. cat4_audio[6] = SOUND_CAT_DL // Who you calling little men? You went berserk back there! cat4_audio[7] = SOUND_CAT_DM // That? That was just another day at the office! cat4_audio[8] = SOUND_CAT_DN // You can’t stand the heat, go put your tiny balls in the freezer! cat4_audio[9] = SOUND_CAT_DO // Tiny balls? Now just wait a minute- cat4_audio[10] = SOUND_CAT_DP //Enough! Just shut up and drive, I’m counting the fucking money! number_of_conversation_samples_cat4 = 14 // Have to add 4 samples that play prior ENDIF ENDIF IF cat_getaway_dialogue = 1 $cat4_text[0] = &CAT_GA // Take me home, Carl. $cat4_text[1] = &CAT_GB // Okay. Look, but we gotta talk about something. $cat4_text[2] = &CAT_GC //What? What do I have to say to you? $cat4_text[3] = &CAT_GD //You’re a great girl, and all, but you gotta calm down. $cat4_text[4] = &CAT_GE // I know some cold blooded cats wouldn’t act like you. $cat4_text[5] = &CAT_GF //Oh, you get given a lioness and you want a pussy cat? Wimp! $cat4_text[6] = &CAT_GG //No, I just want… $cat4_text[7] = &CAT_GH //You know why I act like this. $cat4_text[8] = &CAT_GI //I ain't got a fuckin' clue. $cat4_text[9] = &CAT_GJ //I’m in love, Carl. $cat4_text[10] = &CAT_GK // A woman’s heart is a tempestuous place, $cat4_text[11] = &CAT_GL //and you will break my heart. $cat4_text[12] = &CAT_GM // Sometimes I want to kill us both! $cat4_text[13] = &CAT_GN //Please, don’t do that. Just relax a little. cat4_audio[0] = SOUND_CAT_GA // Take me home, Carl. cat4_audio[1] = SOUND_CAT_GB // Okay. Look, but we gotta talk about something. cat4_audio[2] = SOUND_CAT_GC //What? What do I have to say to you? cat4_audio[3] = SOUND_CAT_GD //You’re a great girl, and all, but you gotta calm down. cat4_audio[4] = SOUND_CAT_GE // I know some cold blooded cats wouldn’t act like you. cat4_audio[5] = SOUND_CAT_GF //Oh, you get given a lioness and you want a pussy cat? Wimp! cat4_audio[6] = SOUND_CAT_GG //No, I just want… cat4_audio[7] = SOUND_CAT_GH //You know why I act like this. cat4_audio[8] = SOUND_CAT_GI //I ain't got a fuckin' clue. cat4_audio[9] = SOUND_CAT_GJ //I’m in love, Carl. cat4_audio[10] = SOUND_CAT_GK // A woman’s heart is a tempestuous place, cat4_audio[11] = SOUND_CAT_GL //and you will break my heart. cat4_audio[12] = SOUND_CAT_GM // Sometimes I want to kill us both! cat4_audio[13] = SOUND_CAT_GN //Please, don’t do that. Just relax a little. number_of_conversation_samples_cat4 = 17 // Have to add 4 samples that play prior ENDIF IF cat_getaway_dialogue = 2 $cat4_text[0] = &CAT_OA ///Take me home now, big man. $cat4_text[1] = &CAT_OB //How we do? $cat4_text[2] = &CAT_OC //Is that all you care about? Money? $cat4_text[3] = &CAT_OD //No, but I really need the paper--. $cat4_text[4] = &CAT_OE //You revolt me. You make my skin crawl. $cat4_text[5] = &CAT_OF //Well I ain’t crazy about you, either! $cat4_text[6] = &CAT_OG // That’s just it. How little you know. $cat4_text[7] = &CAT_OH //Don’t talk. Let us enjoy the peace and quiet. cat4_audio[0] = SOUND_CAT_OA ///Take me home now, big man. cat4_audio[1] = SOUND_CAT_OB //How we do? cat4_audio[2] = SOUND_CAT_OC //Is that all you care about? Money? cat4_audio[3] = SOUND_CAT_OD //No, but I really need the paper--. cat4_audio[4] = SOUND_CAT_OE //You revolt me. You make my skin crawl. cat4_audio[5] = SOUND_CAT_OF //Well I ain’t crazy about you, either! cat4_audio[6] = SOUND_CAT_OG // That’s just it. How little you know. cat4_audio[7] = SOUND_CAT_OH //Don’t talk. Let us enjoy the peace and quiet. number_of_conversation_samples_cat4 = 11 // Have to add 4 samples that play prior ENDIF index_random_char = 0 ADD_BLIP_FOR_COORD coord_otb_x_cat4 coord_otb_y_cat4 coord_otb_z_cat4 blip_otb_cat4 ADD_BLIP_FOR_COORD coord_hiding_spot_x_cat4 coord_hiding_spot_y_cat4 coord_hiding_spot_z_cat4 blip_hiding_spot ADD_BLIP_FOR_COORD coord_hiding_spot_x_cat4 coord_hiding_spot_y_cat4 coord_hiding_spot_z_cat4 blip_paint_and_spray_cat4 IF NOT IS_CHAR_DEAD catalina ADD_BLIP_FOR_CHAR catalina blip_cat_cat4 REMOVE_BLIP blip_cat_cat4 ENDIF REMOVE_BLIP blip_otb_cat4 REMOVE_BLIP blip_hiding_spot REMOVE_BLIP blip_paint_and_spray_cat4 REMOVE_BLIP blip_cat_cat4 REMOVE_BLIP spray_shop4 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH dm_cops_cat4 ENABLE_ENTRY_EXIT_PLAYER_GROUP_WARPING 833.0 9.0 10.0 FALSE // inside otb ENABLE_ENTRY_EXIT_PLAYER_GROUP_WARPING 1291.0 271.0 10.0 TRUE // outside // ///////////////////////////////////// Main Loop /////////////////////////////////////// main_loop_cat4: WAIT 0 IF flag_holdup_cat4 = 1 GOSUB holdup_cat4 ENDIF IF flag_getaway_cat4 = 1 GOSUB getaway_cat4 ENDIF IF flag_mission_passed_cat4 = 1 GOTO mission_passed_cat4 ENDIF IF flag_mission_failed_cat4 = 1 GOTO mission_failed_cat4 ENDIF RETURN // **************************************** MAIN FUNCTIONS ********************************** //////////////////////////////////////////////////////////////////////////////////////////////// streaming_otb_clerk: // VIEW_INTEGER_VARIABLE flag_dont_make_cat_leave_car flag_dont_make_cat_leave_car // check for a wanted level IF flag_getaway_cat4 = 1 IF flag_are_cops_pissed = 0 IF NOT IS_CHAR_DEAD catalina //IF IS_GROUP_MEMBER catalina Players_Group IF IS_WANTED_LEVEL_GREATER player1 0 flag_are_cops_pissed = 1 IF flag_has_catalina_chocolate_rant_been_done = 1 flag_text_otb = 1000 ENDIF IF NOT DOES_BLIP_EXIST blip_paint_and_spray_cat4 ADD_SPRITE_BLIP_FOR_COORD coord_spray_shop_x coord_spray_shop_y coord_spray_shop_z RADAR_SPRITE_SPRAY blip_paint_and_spray_cat4 ENDIF IF flag_dont_make_cat_leave_car = 0 IF flag_display_text_cat4 = 1 IF cat_coment_counter > 2 cat_coment_counter = 0 ENDIF IF cat_coment_counter = 2 LOAD_MISSION_AUDIO 1 SOUND_CATX_UA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( CATX_UA ) 10000 1 // Carl, you are a fucking idiota! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_UA cat_coment_counter++ ENDIF IF cat_coment_counter = 1 LOAD_MISSION_AUDIO 1 SOUND_CATX_UB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( CATX_UB ) 10000 1 //Idiota, Carl, idiota! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_UB cat_coment_counter++ ENDIF IF cat_coment_counter = 0 LOAD_MISSION_AUDIO 1 SOUND_CATX_UF WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( CATX_UF ) 10000 1 // Carl Johnson, you are shit! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_UF cat_coment_counter++ ENDIF ENDIF IF flag_dont_make_cat_leave_car = 0 IF flag_cat_shoot_cops = 0 IF NOT IS_CHAR_DEAD catalina IF NOT LOCATE_CHAR_ANY_MEANS_3D catalina coord_spray_shop_x coord_spray_shop_y coord_spray_shop_z 30.0 30.0 30.0 FALSE // CLEAR_CHAR_TASKS catalina CLEAR_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_COP flag_cat_shoot_cops = 1 SET_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_COP /* IF NOT IS_GROUP_MEMBER catalina Players_Group SET_GROUP_MEMBER Players_Group catalina ENDIF */ ENDIF ENDIF ENDIF ENDIF PRINT CAT4_32 5000 1 // GET TO THE PAINT AND SPRAY ENDIF IF DOES_BLIP_EXIST blip_hiding_spot REMOVE_BLIP blip_hiding_spot ENDIF ENDIF // ENDIF ENDIF ELSE // corona outside pay and spray IF NOT IS_CHAR_DEAD catalina IF flag_help_text_spary_cat4 = 0 IF LOCATE_CHAR_ANY_MEANS_3D catalina 720.5 -466.73 15.72 4.0 4.0 4.0 TRUE IF flag_help_text_spary_cat4 = 0 PRINT_NOW CAT4_37 5000 1 //GOD: PARK CAR INT PAY N SPRAY IF flag_cat_shoot_cops = 1 IF NOT IS_CHAR_DEAD catalina CLEAR_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_COP IF IS_GROUP_MEMBER catalina Players_Group REMOVE_CHAR_FROM_GROUP catalina ENDIF CLEAR_CHAR_TASKS catalina IF NOT IS_GROUP_MEMBER catalina Players_Group SET_GROUP_MEMBER Players_Group catalina SET_GROUP_FOLLOW_STATUS Players_Group TRUE ENDIF SET_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_COP flag_cat_shoot_cops = 0 ENDIF ENDIF flag_help_text_spary_cat4 = 1 ENDIF ENDIF ENDIF IF flag_help_text_spary_cat4 = 1 IF NOT LOCATE_CHAR_ANY_MEANS_3D catalina 720.5 -460.73 15.72 15.0 15.0 15.0 FALSE IF flag_help_text_spary_cat4 = 1 flag_help_text_spary_cat4 = 0 ENDIF ENDIF ENDIF IF flag_dont_make_cat_leave_car = 0 IF flag_cat_shoot_cops = 0 IF IS_WANTED_LEVEL_GREATER player1 0 IF NOT LOCATE_CHAR_ANY_MEANS_3D catalina coord_spray_shop_x coord_spray_shop_y coord_spray_shop_z 30.0 30.0 30.0 FALSE CLEAR_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_COP SET_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_COP /* IF NOT IS_GROUP_MEMBER catalina Players_Group SET_GROUP_MEMBER Players_Group catalina ENDIF */ flag_cat_shoot_cops = 1 ENDIF ENDIF ENDIF ENDIF ENDIF //////////////////// IF NOT IS_WANTED_LEVEL_GREATER player1 0 flag_are_cops_pissed = 0 GET_GAME_TIMER game_timer2_cat4 IF NOT DOES_BLIP_EXIST blip_hiding_spot ADD_BLIP_FOR_COORD coord_hiding_spot_x_cat4 coord_hiding_spot_y_cat4 coord_hiding_spot_z_cat4 blip_hiding_spot CHANGE_BLIP_COLOUR blip_hiding_spot YELLOW LOAD_MISSION_AUDIO 1 SOUND_CATX_DE WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( CATX_DE ) 10000 1 // [] Get us back to the hideout! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_DE ENDIF IF DOES_BLIP_EXIST blip_paint_and_spray_cat4 REMOVE_BLIP blip_paint_and_spray_cat4 ENDIF IF flag_cat_shoot_cops = 1 IF NOT IS_CHAR_DEAD catalina CLEAR_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_COP IF IS_GROUP_MEMBER catalina Players_Group REMOVE_CHAR_FROM_GROUP catalina ENDIF CLEAR_CHAR_TASKS catalina IF NOT IS_GROUP_MEMBER catalina Players_Group SET_GROUP_MEMBER Players_Group catalina SET_GROUP_FOLLOW_STATUS Players_Group TRUE ENDIF SET_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_COP /* IF NOT IS_GROUP_MEMBER catalina Players_Group SET_GROUP_MEMBER Players_Group catalina ENDIF */ flag_cat_shoot_cops = 0 ENDIF ENDIF TIMERA = 0 ENDIF ENDIF ENDIF // check if player is inside OTB IF IS_PLAYER_PLAYING player1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer coord_otb_clerk_x_cat4 coord_otb_clerk_y_cat4 coord_otb_clerk_z_cat4 50.0 50.0 50.0 FALSE IF player_in_otb_flag_cat4_local_var = 0 CLEAR_THIS_PRINT CAT4_01 // CREATE_OBJECT rider1_door 824.4123 10.80 1003.2004 object_door_cat4 IF flag_has_otb_door_been_open = 0 CREATE_OBJECT rider1_door 824.4123 10.85 1003.2004 object_door_cat4 SET_OBJECT_HEADING object_door_cat4 175.0 FREEZE_OBJECT_POSITION object_door_cat4 TRUE SET_OBJECT_COLLISION_DAMAGE_EFFECT object_door_cat4 FALSE ENDIF IF flag_has_otb_door_been_open = 1 // SET_OBJECT_HEADING object_door_cat4 270.0 ENDIF IF flag_has_safe_been_robbed_cat4 = 0 CREATE_OBJECT kev_safe 820.5 9.7 1003.2164 small_safe_cat4 // closed safe ELSE CREATE_OBJECT man_safenew 820.5 9.7 1003.2164 small_safe_cat4 // opened safe // MARK_MODEL_AS_NO_LONGER_NEEDED man_safenew ENDIF SET_OBJECT_HEADING small_safe_cat4 90.0 IF flag_getaway_cat4 = 1 IF DOES_BLIP_EXIST blip_hiding_spot REMOVE_BLIP blip_hiding_spot ENDIF ENDIF // IF player_in_otb_flag_cat4_local_var = 1 IF NOT flag_robbery_cutscene_otb = 0 IF flag_holdup_cat4 = 1 IF DOES_BLIP_EXIST blip_otb_cat4 REMOVE_BLIP blip_otb_cat4 CLEAR_PRINTS ENDIF IF NOT IS_CHAR_DEAD catalina // CLEAR_AREA 823.13 2.2 1003.1797 1.0 TRUE CLEAR_CHAR_TASKS catalina SET_CHAR_COORDINATES catalina 823.13 2.2 1003.1797 SET_CHAR_HEADING catalina 107.0 SET_CHAR_AREA_VISIBLE catalina 3 // SET_CHAR_HAS_USED_ENTRY_EXIT catalina 1291.0 271.0 30.0 TASK_AIM_GUN_AT_COORD catalina coord_otb_clerk_x_cat4 coord_otb_clerk_y_cat4 coord_otb_clerk_z_cat4 900000 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION catalina FALSE /* LOAD_MISSION_AUDIO 3 SOUND_CAT2_SECURITY_ALARM WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 3 */ REPORT_MISSION_AUDIO_EVENT_AT_POSITION coord_otb_clerk_x_cat4 coord_otb_clerk_y_cat4 coord_otb_clerk_z_cat4 SOUND_CAT2_SECURITY_ALARM LOAD_MISSION_AUDIO 1 SOUND_CATX_JE WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( CATX_JE ) 10000 1 // Dont try and dump me CARL! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_JE ENDIF ENDIF ENDIF ENDIF player_in_otb_flag_cat4_local_var = 1 ELSE IF player_in_otb_flag_cat4_local_var = 1 IF DOES_OBJECT_EXIST object_door_cat4 DELETE_OBJECT object_door_cat4 ENDIF IF DOES_OBJECT_EXIST small_safe_cat4 DELETE_OBJECT small_safe_cat4 ENDIF CLEAR_AREA coord_otb_x_cat4 coord_otb_y_cat4 coord_otb_z_cat4 1000.0 TRUE IF flag_holdup_cat4 = 1 IF NOT DOES_BLIP_EXIST blip_otb_cat4 ADD_BLIP_FOR_COORD coord_otb_x_cat4 coord_otb_y_cat4 coord_otb_z_cat4 blip_otb_cat4 SET_COORD_BLIP_APPEARANCE blip_otb_cat4 COORD_BLIP_APPEARANCE_FRIEND // CLEAR_MISSION_AUDIO 3 PRINT_NOW CAT4_16 10000 1 // get back to cat CLEAR_HELP IF NOT IS_CHAR_DEAD catalina FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION catalina TRUE ENDIF // iSetOTBPanic = 0 // CHANGE_BLIP_COLOUR blip_otb_cat4 BLUE ENDIF ENDIF player_in_otb_flag_cat4_local_var = 0 ENDIF ENDIF ENDIF RETURN //////////////////////////////////////////////////////////////////////////////////////////// // *********************************************************************** // ////////////////////////// HOLDUP //////////////////////////////////// // *********************************************************************** //LVAR_INT counter_blaze_cat4 holdup_cat4: // WAITING FOR PLAYER TO GET INSIDE THE OTB IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer players_car_cat4 WARP_CHAR_FROM_CAR_TO_COORD scplayer 1291.5752 269.5648 18.5469 ELSE SET_CHAR_COORDINATES scplayer 1291.5752 269.5648 18.5469 ENDIF SET_CHAR_HEADING scplayer 60.0 CREATE_OBJECT SATCHEL 1288.1412 267.9079 18.5469 object_cutscene_satchel_cat4 IF NOT IS_CHAR_DEAD catalina DELETE_CHAR catalina ENDIF /* IF IS_CHAR_IN_ANY_CAR catalina WARP_CHAR_FROM_CAR_TO_COORD catalina 1288.2772 268.9509 18.5469 ELSE SET_CHAR_COORDINATES catalina 1288.2772 268.9509 18.5469 ENDIF */ LOAD_SPECIAL_CHARACTER 5 cat WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 5 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_SPECIAL SPECIAL05 1288.2772 268.9509 18.9469 catalina SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR catalina FALSE SET_CHAR_HEADING catalina 321.0 SET_CHAR_ONLY_DAMAGED_BY_PLAYER catalina TRUE // SET_CHAR_DROWNS_IN_WATER catalina TRUE SET_CHAR_NEVER_TARGETTED catalina TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH catalina TRUE IF IS_GROUP_MEMBER catalina Players_Group REMOVE_CHAR_FROM_GROUP catalina ENDIF IF NOT IS_CAR_DEAD players_car_cat4 SET_CAR_COORDINATES players_car_cat4 1297.0 278.0 18.0 SET_CAR_HEADING players_car_cat4 150.0 ENDIF LOAD_GROUP_DECISION_MAKER DM_GROUP_MISSION_NORM dm_players_group_cat4 SET_GROUP_DECISION_MAKER Players_Group dm_players_group_cat4 CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE dm_players_group_cat4 EVENT_DAMAGE CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE dm_players_group_cat4 EVENT_VEHICLE_DAMAGE_WEAPON LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY dm_catalina_cat4 SET_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 SET_CHAR_DECISION_MAKER catalina dm_catalina_cat4 TASK_TOGGLE_PED_THREAT_SCANNER catalina 1 1 1 CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_catalina_cat4 EVENT_ACQUAINTANCE_PED_HATE // ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE smoke3_DM EVENT_ACQUAINTANCE_PED_HATE TASK_SIMPLE_GANG_DRIVEBY 0.0 100.0 0.0 0.0 TRUE FALSE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_catalina_cat4 EVENT_ACQUAINTANCE_PED_HATE TASK_SIMPLE_GANG_DRIVEBY 0.0 100.0 0.0 0.0 TRUE FALSE // ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_catalina_cat4 EVENT_ACQUAINTANCE_PED_HATE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 FALSE TRUE SET_CHAR_SHOOT_RATE catalina 100 IF DOES_OBJECT_EXIST object_cutscene_satchel_cat4 TASK_PICK_UP_OBJECT catalina object_cutscene_satchel_cat4 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL FALSE ENDIF WHILE NOT HAS_ANIMATION_LOADED misc WAIT 0 ENDWHILE SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED SET_FIXED_CAMERA_POSITION 1284.6248 257.5731 23.8334 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1284.5079 258.5662 23.8240 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 1284.6248 257.5731 23.8334 1287.0680 258.5688 22.8720 4500 TRUE // two sets of coord for cam start point and end point + time for pan CAMERA_SET_VECTOR_TRACK 1284.5079 258.5662 23.8240 1287.1801 259.5328 22.6311 4500 TRUE // two sets of coords for cam aim at start and end point + time for pan IF NOT IS_CHAR_DEAD catalina SET_CHAR_COORDINATES catalina 1288.2772 268.9509 18.546 SET_CHAR_HEADING catalina 321.0 ENDIF // SWITCH_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 // SWITCH_PED_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 //SET_CAR_DENSITY_MULTIPLIER 1.0 //SET_PED_DENSITY_MULTIPLIER 1.0 // LOAD_SCENE 1288.2772 268.9509 25.546 LOAD_SCENE_IN_DIRECTION 1284.6248 257.5731 23.8334 45.0 CLEAR_AREA 1287.3625 257.5327 23.0934 1000.0 TRUE DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE TIMERA = 0 TIMERB = 0 flag_cutscene1_cat4 = 0 WHILE NOT flag_cutscene1_cat4 = 10 WAIT 0 IF flag_cutscene1_cat4 = 0 START_CHAR_FACIAL_TALK scplayer 10000 LOAD_MISSION_AUDIO 1 SOUND_CAT2_AB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( CAT2_AB ) 10000 1 // yOU wanna rob a betting shop? PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CAT2_AB STOP_CHAR_FACIAL_TALK scplayer flag_cutscene1_cat4 = 1 ENDIF IF flag_cutscene1_cat4 = 1 IF NOT IS_CHAR_DEAD catalina // CLEAR_CHAR_TASKS catalina // TASK_GOTO_CHAR catalina scplayer -1 0.5 // TASK_GO_STRAIGHT_TO_COORD catalina 1290.00 269.55 19.1870 PEDMOVE_WALK 5000 // OPEN_SEQUENCE_TASK seq_cat_stealing_car TASK_GO_STRAIGHT_TO_COORD catalina 1290.93 269.75 18.5469 PEDMOVE_WALK 3000 // TASK_GOTO_CHAR -1 scplayer -1 0.5 // CLOSE_SEQUENCE_TASK seq_cat_stealing_car // PERFORM_SEQUENCE_TASK catalina seq_cat_stealing_car // CLEAR_SEQUENCE_TASK seq_cat_stealing_car ENDIF flag_cutscene1_cat4 = 2 ENDIF IF TIMERB > 3000 IF flag_cutscene1_cat4 = 2 CAMERA_RESET_NEW_SCRIPTABLES SET_FIXED_CAMERA_POSITION 1292.4452 266.8836 19.0157 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1291.7562 267.5977 19.1396 JUMP_CUT LOAD_MISSION_AUDIO 1 SOUND_CAT2_AC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD catalina PRINT_NOW ( CAT2_AC ) 10000 1 // yOU man enough? PLAY_MISSION_AUDIO 1 START_CHAR_FACIAL_TALK scplayer 10000 ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD catalina STOP_CHAR_FACIAL_TALK catalina ENDIF CLEAR_THIS_PRINT CAT2_AC flag_cutscene1_cat4 = 3 ENDIF ENDIF IF flag_cutscene1_cat4 = 3 SET_FIXED_CAMERA_POSITION 1300.1182 272.2002 20.6733 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1299.1564 271.9637 20.5352 JUMP_CUT IF NOT IS_CHAR_DEAD catalina // CLEAR_CHAR_TASKS catalina TASK_PLAY_ANIM catalina PASS_Rifle_Ped misc 4.0 FALSE FALSE FALSE FALSE -1 ENDIF LOAD_MISSION_AUDIO 1 SOUND_CATX_RB // carl, here WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD catalina CLEAR_CHAR_TASKS catalina ENDIF TASK_PLAY_ANIM scplayer PASS_Rifle_Ply misc 4.0 FALSE FALSE FALSE FALSE -1 IF DOES_OBJECT_EXIST object_cutscene_satchel_cat4 TASK_PICK_UP_OBJECT scplayer object_cutscene_satchel_cat4 0.0 0.0 0.0 PED_HANDL HOLD_ORIENTATE_BONE_FULL NULL NULL FALSE ENDIF IF NOT IS_CHAR_DEAD catalina START_CHAR_FACIAL_TALK catalina 10000 ENDIF PRINT_NOW ( CATX_RB ) 10000 1 // carl, here PLAY_MISSION_AUDIO 1 // SET_FIXED_CAMERA_POSITION 1289.3167 268.4893 20.0960 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 1290.1132 269.0416 19.8500 JUMP_CUT WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_RB IF NOT IS_CHAR_DEAD catalina STOP_CHAR_FACIAL_TALK catalina ENDIF flag_cutscene1_cat4 = 4 TIMERA = 0 ENDIF IF flag_cutscene1_cat4 = 4 IF NOT IS_CHAR_DEAD catalina TASK_GO_STRAIGHT_TO_COORD catalina 1292.81 269.01 18.5469 PEDMOVE_WALK -1 ENDIF flag_cutscene1_cat4 = 5 LOAD_MISSION_AUDIO 1 SOUND_CAT2_JA //Satchel charges?! Where the hell’d you get them? WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( CAT2_JA ) 10000 1 //Satchel charges?! Where the hell’d you get them? PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CAT2_JA ENDIF IF flag_cutscene1_cat4 = 5 IF TIMERA > 1500 flag_cutscene1_cat4 = 10 ENDIF ENDIF IF TIMERB > 10000 flag_cutscene1_cat4 = 10 ENDIF IF IS_SKIP_CUTSCENE_BUTTON_PRESSED CLEAR_MISSION_AUDIO 1 flag_cutscene1_cat4 = 10 ENDIF ENDWHILE SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER IF DOES_OBJECT_EXIST object_cutscene_satchel_cat4 DELETE_OBJECT object_cutscene_satchel_cat4 ENDIF CAMERA_RESET_NEW_SCRIPTABLES SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 SWITCH_ENTRY_EXIT genOTB TRUE IF NOT IS_CHAR_DEAD catalina STOP_CHAR_FACIAL_TALK catalina ENDIF STOP_CHAR_FACIAL_TALK scplayer // MARK_CAR_AS_NO_LONGER_NEEDED players_car_cat4 IF NOT IS_CAR_DEAD players_car_cat4 // SET_CAR_COORDINATES players_car_cat4 1297.0 278.0 40.0 // SET_CAR_HEADING players_car_cat4 150.0 // FREEZE_CAR_POSITION players_car_cat4 TRUE // SET_CAR_VISIBLE players_car_cat4 FALSE //SET_CAR_PROOFS players_car_cat4 TRUE TRUE TRUE TRUE TRUE SET_CAR_HEALTH players_car_cat4 1000 SET_CAN_BURST_CAR_TYRES players_car_cat4 FALSE ENDIF GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_REMOTE_SATCHEL_CHARGE 10 IF NOT IS_CHAR_DEAD catalina IF NOT IS_GROUP_MEMBER catalina Players_Group SET_GROUP_MEMBER Players_Group catalina SET_GROUP_FOLLOW_STATUS Players_Group FALSE ENDIF ENDIF ADD_SPRITE_BLIP_FOR_COORD coord_otb_x_cat4 coord_otb_y_cat4 coord_otb_z_cat4 RADAR_SPRITE_CAT_PINK blip_otb_cat4 PRINT_NOW CAT4_01 10000 1 // get inside the OTB CHECKPOINT_SAVE 99 // ADD_BLIP_FOR_COORD coord_otb_x_cat4 coord_otb_y_cat4 coord_otb_z_cat4 blip_otb_cat4 /* IF set_audio_to_be_played = 0 index_dialogue_cat4 = 0 set_audio_to_be_played = 1 ENDIF IF index_dialogue_cat4 = 0 GOSUB load_and_play_audio_cat4 ENDIF */ WHILE NOT HAS_MODEL_LOADED kev_safe WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED man_safenew WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED DESERT_EAGLE OR NOT HAS_MODEL_LOADED rider1_door WAIT 0 ENDWHILE WHILE NOT player_in_otb_flag_cat4_local_var = 1 WAIT 0 GOSUB streaming_otb_clerk IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer coord_otb_clerk_x_cat4 coord_otb_clerk_y_cat4 coord_otb_clerk_z_cat4 50.0 50.0 50.0 FALSE // fix to prevent flash of text appearing GOSUB check_cat_cat4 ENDIF IF flag_mission_failed_cat4 = 1 RETURN ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S flag_holdup_cat4 = 0 flag_getaway_cat4 = 0 flag_mission_passed_cat4 = 1 RETURN ENDIF GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_REMOTE_SATCHEL_CHARGE players_ammo_cat4 GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_DETONATOR players_ammo_2_cat4 IF players_ammo_cat4 <= 0 // if player runs out of satchels, mission failed AND players_ammo_2_cat4 <=0 IF NOT flag_safe_explosion_delay = 1 IF NOT IS_EXPLOSION_IN_AREA EXPLOSION_GRENADE 819.55 8.09 1003.4 822.27 10.98 1005.72 /// AND NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_DETONATOR // AND NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_REMOTE_SATCHEL_CHARGE // flag_holdup_cat4 = 0 flag_mission_failed_cat4 = 1 PRINT_NOW ( CAT4_2 ) 10000 1 // you ran out of satchels! RETURN ENDIF ENDIF ENDIF /* IF flag_set_cat_as_group_member = 0 IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 1288.1781 269.8612 18.5469 15.0 15.0 15.0 FALSE SET_GROUP_FOLLOW_STATUS Players_Group TRUE ENDIF ENDIF */ ENDWHILE REMOVE_BLIP blip_otb_cat4 // counter_blaze_cat4 = counter_blaze_cat4 - 1 IF flag_robbery_cutscene_otb = 0 IF player_in_otb_flag_cat4_local_var = 1 REMOVE_ANIMATION misc CLEAR_SMALL_PRINTS // //////////////////Cutscene of player and cat entering the otb. Cat hold gun to clerk SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON CLEAR_PRINTS // SET_GROUP_FOLLOW_STATUS Players_Group TRUE // SET_FIXED_CAMERA_POSITION 833.6932 10.2776 1003.8510 0.0 0.0 0.0 // POINT_CAMERA_AT_CHAR scplayer FIXED JUMP_CUT SET_FIXED_CAMERA_POSITION 833.5528 9.9425 1003.91 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 832.7419 9.3669 1004.01 JUMP_CUT LOAD_MISSION_AUDIO 3 SOUND_BANK_CAT2_BANK // creating the peds that get shot index_cat4 = 0 WHILE index_cat4 < 6 CREATE_RANDOM_CHAR coord_random_char_x[index_cat4] coord_random_char_y[index_cat4] coord_random_char_z[index_cat4] char_random_ped_cat4[index_cat4] index_cat4++ ENDWHILE flag_robbery_cutscene_otb = 1 TIMERA = 0 TIMERB = 0 flag_cutscene1_cat4 = 0 WHILE NOT flag_cutscene1_cat4 = 10 WAIT 0 //CLEAR_AREA coord_otb_clerk_x_cat4 coord_otb_clerk_y_cat4 coord_otb_clerk_z_cat4 1000.0 TRUE IF flag_cutscene1_cat4 >= 2 IF HAS_MISSION_AUDIO_FINISHED 3 PLAY_MISSION_AUDIO 3 ENDIF ENDIF IF flag_cutscene1_cat4 = 0 SET_CHAR_COORDINATES scplayer 832.4548 7.0794 1003.1870 TASK_GO_STRAIGHT_TO_COORD scplayer 828.2866 8.2237 1003.1870 PEDMOVE_WALK 5000 CLEAR_AREA 828.2866 8.2237 1003.1870 2.0 TRUE IF NOT IS_CHAR_DEAD catalina SET_CHAR_PROOFS catalina FALSE FALSE TRUE FALSE FALSE SET_CHAR_ACCURACY catalina 90 CLEAR_CHAR_TASKS catalina SET_CHAR_AREA_VISIBLE catalina 3 // ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE dm_catalina_cat4 EVENT_ACQUAINTANCE_PED_HATE TASK_SIMPLE_GANG_DRIVEBY 0.0 100.0 0.0 0.0 TRUE FALSE // IF NOT IS_CHAR_DEAD char_otb_clerk_cat4 IF IS_GROUP_MEMBER catalina Players_Group REMOVE_CHAR_FROM_GROUP catalina ENDIF IF IS_CHAR_IN_ANY_CAR catalina WARP_CHAR_FROM_CAR_TO_COORD catalina 833.5104 4.3569 1003.5870 ELSE SET_CHAR_COORDINATES catalina 833.5104 4.3569 1003.1870 ENDIF SET_CHAR_HAS_USED_ENTRY_EXIT catalina 1290.0 270.0 10.0 SET_CHAR_HEADING catalina 107.0 GIVE_WEAPON_TO_CHAR catalina WEAPONTYPE_DESERT_EAGLE 10000 TASK_GO_STRAIGHT_TO_COORD catalina 824.3764 3.4945 1003.1797 PEDMOVE_RUN -1 CLEAR_AREA 824.3764 3.4945 1003.1797 2.0 TRUE ENDIF flag_cutscene1_cat4 = 1 ENDIF IF flag_cutscene1_cat4 = 1 IF TIMERA > 2000 IF NOT IS_CHAR_DEAD catalina CLEAR_CHAR_TASKS catalina OPEN_SEQUENCE_TASK seq_cat_stealing_car TASK_GO_STRAIGHT_TO_COORD -1 824.3764 3.4945 1003.1797 PEDMOVE_RUN 3000 TASK_AIM_GUN_AT_COORD -1 coord_otb_clerk_x_cat4 coord_otb_clerk_y_cat4 coord_otb_clerk_z_cat4 5000 CLOSE_SEQUENCE_TASK seq_cat_stealing_car PERFORM_SEQUENCE_TASK catalina seq_cat_stealing_car CLEAR_SEQUENCE_TASK seq_cat_stealing_car iSetOTBPanic = 1 LOAD_MISSION_AUDIO 1 SOUND_CAT2_DA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( CAT2_DA ) 10000 1 // Open the backroom door or I blow your fucking face off! PLAY_MISSION_AUDIO 1 IF NOT IS_CHAR_DEAD catalina START_CHAR_FACIAL_TALK catalina 10000 ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CAT2_DA IF NOT IS_CHAR_DEAD catalina STOP_CHAR_FACIAL_TALK catalina ENDIF SET_FIXED_CAMERA_POSITION 829.9543 8.6043 1004.8922 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 829.2075 7.9448 1004.8064 JUMP_CUT TASK_LOOK_AT_COORD scplayer 824.17 3.95 1007.0 3000 IF NOT IS_CHAR_DEAD catalina CLEAR_CHAR_TASKS catalina SET_CHAR_COORDINATES catalina 824.3764 3.4945 1003.1797 SET_CHAR_HEADING catalina 107.0 TASK_AIM_GUN_AT_COORD catalina coord_otb_clerk_x_cat4 coord_otb_clerk_y_cat4 coord_otb_clerk_z_cat4 5000 ENDIF index_cat4 = 0 WHILE index_cat4 < 6 IF NOT IS_CHAR_DEAD char_random_ped_cat4[index_cat4] IF index_cat4 = 0 OR index_cat4 = 3 OR index_cat4 = 5 TASK_HANDS_UP char_random_ped_cat4[index_cat4] 900000 ELSE TASK_DUCK char_random_ped_cat4[index_cat4] 900000 ENDIF ENDIF index_cat4++ ENDWHILE LOAD_MISSION_AUDIO 1 SOUND_CAT2_DB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( CAT2_DB ) 10000 1 // Leave the panic button or I'll kill your children too! PLAY_MISSION_AUDIO 1 IF NOT IS_CHAR_DEAD catalina START_CHAR_FACIAL_TALK catalina 10000 ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CAT2_DB IF NOT IS_CHAR_DEAD catalina STOP_CHAR_FACIAL_TALK catalina ENDIF // iSetOTBPanic = 1 TIMERA = 0 ENDIF flag_cutscene1_cat4 = 2 ENDIF ENDIF IF flag_cutscene1_cat4 = 2 IF TIMERA > 500 IF NOT IS_CHAR_DEAD catalina CLEAR_CHAR_TASKS catalina TASK_STAND_STILL catalina 900000 // TASK_AIM_GUN_AT_COORD catalina coord_otb_clerk_x_cat4 coord_otb_clerk_y_cat4 coord_otb_clerk_z_cat4 900000 SET_FIXED_CAMERA_POSITION 821.8057 3.2657 1005.0901 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 822.7056 3.6678 1004.921 JUMP_CUT // TASK_LOOK_ABOUT catalina 3000 // TASK_LOOK_ABOUT scplayer 3000 // TASK_LOOK_AT_COORD scplayer LookAtX LookAtY LookAtZ LookTime // TASK_LOOK_AT_COORD scplayer LookAtX LookAtY LookAtZ LookTime // IF IS_PLAYER_PLAYING player1 TASK_LOOK_AT_COORD scplayer 824.17 3.95 1007.0 3000 // ENDIF TASK_LOOK_AT_COORD CATALINA 824.17 3.95 1007.0 2000 TASK_AIM_GUN_AT_COORD catalina 819.55 5.55 1005.59 5000 // REPORT_MISSION_AUDIO_EVENT_AT_POSITION 824.17 3.95 1007.0 SOUND_SECURITY_ALARM REPORT_MISSION_AUDIO_EVENT_AT_POSITION coord_otb_clerk_x_cat4 coord_otb_clerk_y_cat4 coord_otb_clerk_z_cat4 SOUND_CAT2_SECURITY_ALARM PRINT_NOW CAT4_3 5000 1 /* LOAD_MISSION_AUDIO 3 SOUND_CAT2_SECURITY_ALARM WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 3 */ // ALARM GOES OFF HERE // SOUND_BANK_ALARM_LOOP TIMERA = 0 ENDIF flag_cutscene1_cat4 = 3 ENDIF ENDIF IF flag_cutscene1_cat4 = 3 IF TIMERA > 2000 IF NOT IS_CHAR_DEAD catalina TASK_AIM_GUN_AT_COORD catalina coord_otb_clerk_x_cat4 coord_otb_clerk_y_cat4 coord_otb_clerk_z_cat4 5000 ENDIF CLEAR_THIS_PRINT CAT4_3 LOAD_MISSION_AUDIO 1 SOUND_CAT2_FA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( CAT2_FA ) 10000 1 // I warned you, you stupid bitch! IF NOT IS_CHAR_DEAD catalina START_CHAR_FACIAL_TALK catalina 10000 ENDIF PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CAT2_FA IF NOT IS_CHAR_DEAD catalina STOP_CHAR_FACIAL_TALK catalina ENDIF IF IS_PLAYER_PLAYING player1 TASK_ACHIEVE_HEADING scplayer 112.0 ENDIF flag_otb_robbing_peds_panic = 1 flag_cutscene1_cat4 = 4 TIMERA = 0 ENDIF ENDIF IF flag_cutscene1_cat4 = 4 IF TIMERA > 1000 IF NOT IS_CHAR_DEAD catalina CLEAR_CHAR_TASKS catalina SET_FIXED_CAMERA_POSITION 829.9543 8.6043 1004.8922 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 829.2075 7.9448 1004.8064 JUMP_CUT IF NOT IS_CHAR_DEAD catalina IF NOT IS_CHAR_DEAD char_random_ped_cat4[index_random_char] TASK_KILL_CHAR_ON_FOOT catalina char_random_ped_cat4[index_random_char] ENDIF ENDIF LOAD_MISSION_AUDIO 1 SOUND_CAT2_FB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT ( CAT2_FB ) 10000 1 // Stupid fucking bitch! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CAT2_FB ENDIF flag_cutscene1_cat4 = 5 ENDIF ENDIF IF TIMERB > 17000 flag_cutscene1_cat4 = 10 ENDIF ENDWHILE //GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_DETONATOR 1 IF IS_PLAYER_PLAYING player1 SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER IF NOT IS_CHAR_DEAD catalina TASK_AIM_GUN_AT_COORD catalina coord_otb_clerk_x_cat4 coord_otb_clerk_y_cat4 coord_otb_clerk_z_cat4 900000 ENDIF GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_REMOTE_SATCHEL_CHARGE players_ammo_2_cat4 GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_REMOTE_SATCHEL_CHARGE players_ammo_3_cat4 flag_robbery_cutscene_otb = 1 flag_otb_robbing_peds_panic = 1 TIMERA = 0 TIMERB = 0 GET_GAME_TIMER game_timer2_cat4 ENDIF ENDIF ENDIF // END CUTSCENE TIMERB= 0 WHILE NOT flag_has_cat_got_the_loot_cat4 = 1 WAIT 0 // IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_REMOTE_SATCHEL_CHARGE GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_REMOTE_SATCHEL_CHARGE players_ammo_cat4 GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_DETONATOR players_ammo_2_cat4 IF players_ammo_cat4 <= 0 // if player runs out of satchels, mission failed AND players_ammo_2_cat4 <=0 IF NOT flag_safe_explosion_delay = 1 IF NOT IS_EXPLOSION_IN_AREA EXPLOSION_GRENADE 819.55 8.09 1003.4 822.27 10.98 1005.72 flag_holdup_cat4 = 0 flag_mission_failed_cat4 = 1 PRINT_NOW ( CAT4_2 ) 5000 1 // you ran out of satchels! RETURN ENDIF ENDIF ENDIF IF IS_CHAR_DEAD catalina flag_holdup_cat4 = 0 flag_mission_failed_cat4 = 1 PRINT_NOW ( CAT4_15 ) 5000 1 // GOD: CATS DEAD! RETURN ENDIF IF help_text_cat4 = 0 PRINT_HELP CAT4_43 // Press ~m~~widget_explicit_throw~ to throw the ~h~satchel~w~. Hold ~m~~widget_explicit_throw~ for longer to increase the distance of the throw. help_text_cat4 = 1 // GOD plant satchel TIMERB = 0 ENDIF IF help_text_cat4 = 1 IF TIMERB > 6000 PRINT_NOW CAT4_42 6000 1 help_text_cat4 = 2 //HELP press o to throw TIMERB = 0 ENDIF ENDIF IF help_text_cat4 <= 2 IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_REMOTE_SATCHEL_CHARGE IF players_ammo_cat4 < players_ammo_3_cat4 CLEAR_HELP help_text_cat4 = 3 // HELP get a safe distance away TIMERB = 0 ENDIF ENDIF ENDIF IF help_text_cat4 = 3 IF TIMERB > 1500 PRINT_NOW CAT4_44 6000 1 PRINT_HELP CAT4_45 // When the ~h~satchel~w~ is attached, select the ~h~detonator~w~ weapon and press ~m~~widget_explicit_detonator~ to detonate. help_text_cat4 = 4 TIMERB = 0 ENDIF ENDIF IF help_text_cat4 <= 4 IF DOES_OBJECT_EXIST object_door_cat4 // IF HAS_OBJECT_BEEN_DAMAGED object_door_cat4 IF HAS_OBJECT_OF_TYPE_BEEN_SMASHED 824.4123 10.80 1003.2004 10.0 rider1_door IF TIMERB > 500 CLEAR_SMALL_PRINTS CLEAR_HELP help_text_cat4 = 5 //HELP press cicle to detonate TIMERB = 0 ENDIF ENDIF ENDIF ENDIF IF help_text_cat4 = 5 CLEAR_HELP LOAD_MISSION_AUDIO 1 SOUND_CAT2_DC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT ( CAT2_DC ) 10000 1 // CAT carl, get in there PLAY_MISSION_AUDIO 1 IF NOT IS_CHAR_DEAD catalina START_CHAR_FACIAL_TALK catalina 10000 ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CAT2_DC IF NOT IS_CHAR_DEAD catalina STOP_CHAR_FACIAL_TALK catalina ENDIF PRINT_NOW CAT4_46 10000 1 //use satchel to open safe help_text_cat4 = 6 TIMERB = 0 // ENDIF ENDIF IF player_in_otb_flag_cat4_local_var = 1 GET_GAME_TIMER game_timer1_cat4 game_timer1_cat4 -= game_timer2_cat4 IF flag_text_otb = 0 flag_text_otb = 1 GET_GAME_TIMER game_timer2_cat4 ENDIF GET_GAME_TIMER game_timer1_cat4 game_timer1_cat4 -= game_timer2_cat4 IF flag_text_otb = 1 flag_text_otb = 2 LOAD_MISSION_AUDIO 1 SOUND_CAT2_FC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE // PRINT CAT2_FC 10000 1 // cat starts killing people "now i kill you" PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE // CLEAR_THIS_PRINT CAT2_FC IF NOT IS_CHAR_DEAD catalina CLEAR_CHAR_TASKS catalina // GET_RANDOM_CHAR_IN_SPHERE 826.9793 1.7226 1003.1797 30.0 TRUE TRUE TRUE char_random_ped_cat4[index_random_char] // MARK_CHAR_AS_NO_LONGER_NEEDED char_random_ped_cat4[index_random_char] IF NOT IS_CHAR_DEAD char_random_ped_cat4[index_random_char] TASK_KILL_CHAR_ON_FOOT catalina char_random_ped_cat4[index_random_char] ENDIF // index_random_char++ //SET_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 ENDIF // TIMERB = 0 GET_GAME_TIMER game_timer2_cat4 // ENDIF ENDIF GET_GAME_TIMER game_timer1_cat4 game_timer1_cat4 -= game_timer2_cat4 IF flag_text_otb = 2 // IF game_timer1_cat4 > 5000 flag_text_otb = 3 // LOAD_MISSION_AUDIO 1 SOUND_CATX_TU // you’re all dead, assholes! LOAD_MISSION_AUDIO 1 SOUND_CATX_TJ // eat my shit WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE // PRINT_NOW ( CATX_TU ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE // CLEAR_THIS_PRINT CATX_TU GET_GAME_TIMER game_timer2_cat4 // ENDIF // TIMERB = 0 ENDIF GET_GAME_TIMER game_timer1_cat4 game_timer1_cat4 -= game_timer2_cat4 IF flag_text_otb = 3 IF game_timer1_cat4 > 5000 flag_text_otb = 4 LOAD_MISSION_AUDIO 1 SOUND_CAT2_EB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE // PRINT ( CAT2_EB ) 10000 1 // Stop playing with your balls and hurry up! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE // CLEAR_THIS_PRINT CAT2_EB GET_GAME_TIMER game_timer2_cat4 ENDIF //TIMERB = 0 ENDIF GET_GAME_TIMER game_timer1_cat4 game_timer1_cat4 -= game_timer2_cat4 IF flag_text_otb = 4 IF game_timer1_cat4 > 10000 flag_text_otb = 5 LOAD_MISSION_AUDIO 1 SOUND_CAT2_EA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE // PRINT ( CAT2_EA ) 10000 1 // MOVE IT! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE // CLEAR_THIS_PRINT CAT2_EA GET_GAME_TIMER game_timer2_cat4 ENDIF // TIMERB = 0 ENDIF GET_GAME_TIMER game_timer1_cat4 game_timer1_cat4 -= game_timer2_cat4 IF flag_text_otb = 5 IF game_timer1_cat4 > 10000 flag_text_otb = 6 GET_GAME_TIMER game_timer2_cat4 ENDIF // TIMERB = 0 ENDIF GET_GAME_TIMER game_timer1_cat4 game_timer1_cat4 -= game_timer2_cat4 // cat goes mental and starts to shoot everyone IF flag_text_otb > 1 IF index_random_char < 2 IF IS_CHAR_DEAD char_random_ped_cat4[index_random_char] MARK_CHAR_AS_NO_LONGER_NEEDED char_random_ped_cat4[index_random_char] IF NOT IS_CHAR_DEAD catalina IF NOT IS_CHAR_SHOOTING catalina index_random_char++ IF index_random_char < 2 CLEAR_CHAR_TASKS catalina IF NOT IS_CHAR_DEAD char_random_ped_cat4[index_random_char] TASK_KILL_CHAR_ON_FOOT catalina char_random_ped_cat4[index_random_char] ENDIF // cats comments IF index_random_char = 2 LOAD_MISSION_AUDIO 1 SOUND_CATX_TD WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE // PRINT_NOW ( CATX_TD ) 10000 1 // BLEED STUPID MOTHER FUCKER PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE // CLEAR_THIS_PRINT CATX_TD ENDIF // cats comments IF index_random_char = 4 LOAD_MISSION_AUDIO 1 SOUND_CATX_TJ WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE //PRINT_NOW ( CATX_TJ ) 10000 1 // EAT MY SHIT PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE // CLEAR_THIS_PRINT CATX_TJ ENDIF // cats comments IF index_random_char = 5 LOAD_MISSION_AUDIO 1 SOUND_CATX_TQ // WHILE NOT HAS_MISSION_AUDIO_LOADED 1 // WAIT 0 // ENDWHILE PRINT_NOW ( CATX_TQ ) 100 1 // who wants me now? // PLAY_MISSION_AUDIO 1 // WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 // WAIT 0 // ENDWHILE // CLEAR_THIS_PRINT CATX_TQ ENDIF ELSE CLEAR_CHAR_TASKS catalina TASK_AIM_GUN_AT_COORD catalina coord_otb_clerk_x_cat4 coord_otb_clerk_y_cat4 coord_otb_clerk_z_cat4 900000 ENDIF // index_random_char++ ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // ENDIF GOSUB streaming_otb_clerk IF IS_EXPLOSION_IN_AREA EXPLOSION_GRENADE 820.3084 -1.6925 1003.2775 828.8 4.7199 1008.0789 IF NOT IS_CHAR_DEAD catalina SET_CHAR_HEALTH catalina 0 ENDIF ENDIF IF flag_has_otb_door_been_open = 0 // kill catalina if satchel is too close to her IF IS_EXPLOSION_IN_AREA EXPLOSION_GRENADE 823.89 8.99 1000.4 826.18 11.98 1009.72 SET_OBJECT_COLLISION_DAMAGE_EFFECT object_door_cat4 TRUE FREEZE_OBJECT_POSITION object_door_cat4 FALSE BREAK_OBJECT object_door_cat4 TRUE SET_OBJECT_HEALTH object_door_cat4 0 // IF HAS_OBJECT_OF_TYPE_BEEN_SMASHED 824.4123 10.80 1003.2004 10.0 rider1_door // ROTATE_OBJECT object_door_cat4 270.0 3.0 FALSE flag_has_otb_door_been_open = 1 ADD_EXPLOSION 820.5 9.7 1003.2164 EXPLOSION_GRENADE ENDIF IF DOES_OBJECT_EXIST object_door_cat4 // IF HAS_OBJECT_BEEN_DAMAGED object_door_cat4 IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_REMOTE_SATCHEL_CHARGE IF IS_EXPLOSION_IN_AREA EXPLOSION_GRENADE 823.89 8.99 1000.4 826.18 11.98 1009.72 SET_OBJECT_COLLISION_DAMAGE_EFFECT object_door_cat4 TRUE FREEZE_OBJECT_POSITION object_door_cat4 FALSE BREAK_OBJECT object_door_cat4 TRUE SET_OBJECT_HEALTH object_door_cat4 0 // IF HAS_OBJECT_OF_TYPE_BEEN_SMASHED 824.4123 10.80 1003.2004 10.0 rider1_door // ROTATE_OBJECT object_door_cat4 270.0 3.0 FALSE flag_has_otb_door_been_open = 1 ADD_EXPLOSION 820.5 9.7 1003.2164 EXPLOSION_GRENADE ENDIF ENDIF ENDIF ENDIF IF flag_has_otb_door_been_open = 1 IF IS_EXPLOSION_IN_AREA EXPLOSION_GRENADE 819.55 8.09 1003.4 822.27 10.98 1005.72 CLEAR_HELP CLEAR_PRINTS flag_has_safe_been_robbed_cat4 = 1 MARK_MODEL_AS_NO_LONGER_NEEDED rider1_door SWITCH_ENTRY_EXIT genOTB FALSE IF flag_safe_explosion_delay =0 flag_safe_explosion_delay = 1 TIMERA= 0 ENDIF DELETE_OBJECT small_safe_cat4 CREATE_OBJECT man_safenew 820.5 9.7 1003.2164 small_safe_cat4 SET_OBJECT_HEADING small_safe_cat4 90.0 IF NOT IS_CHAR_DEAD catalina FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION catalina FALSE ENDIF ENDIF ENDIF IF flag_safe_explosion_delay = 1 IF TIMERA > 500 ADD_EXPLOSION 820.5 9.7 1003.2164 EXPLOSION_GRENADE index_cat4 = 4 WHILE index_cat4 < 6 MARK_CHAR_AS_NO_LONGER_NEEDED char_random_ped_cat4[index_cat4] index_cat4++ ENDWHILE IF DOES_OBJECT_EXIST object_door_cat4 DELETE_OBJECT object_door_cat4 ENDIF SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED // SWITCH_PED_ROADS_OFF 816.5276 4.4624 1001.8299 847.5276 22.4624 1009.82993 // SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 SET_FIXED_CAMERA_POSITION 823.9662 11.5153 1005.8105 0.0 0.0 0.0 //establishing shot POINT_CAMERA_AT_POINT 823.2487 11.0891 1005.2598 JUMP_CUT SET_CHAR_COORDINATES scplayer 824.8268 10.0672 1003.1870 SET_CHAR_HEADING scplayer 100.0 SET_CHAR_AREA_VISIBLE scplayer 3 SET_AREA_VISIBLE 3 IF NOT IS_CHAR_DEAD catalina CLEAR_CHAR_TASKS catalina SET_CHAR_COORDINATES catalina 827.95 9.21 1003.13 SET_CHAR_HEADING catalina 93.0 // TASK_CHAT_WITH_CHAR catalina scplayer TRUE FALSE // TASK_DUCK catalina 4000 // IF flag_cat_shoot_cops = 1 SET_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_COP CLEAR_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_COP flag_cat_shoot_cops = 0 // ENDIF ENDIF SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR CLEAR_AREA 824.8268 10.0672 1003.1870 1000.0 TRUE REQUEST_ANIMATION bomber WHILE NOT HAS_ANIMATION_LOADED bomber WAIT 0 ENDWHILE TASK_DUCK scplayer 3000 TIMERA = 0 TIMERB = 0 flag_cutscene1_cat4 = 0 WHILE NOT flag_cutscene1_cat4 = 10 WAIT 0 //CLEAR_AREA coord_otb_clerk_x_cat4 coord_otb_clerk_y_cat4 coord_otb_clerk_z_cat4 1000.0 TRUE IF flag_cutscene1_cat4 = 0 IF TIMERA > 2000 // SET_FIXED_CAMERA_POSITION 819.6043 10.3457 1004.4273 0.0 0.0 0.0 //establishing shot // POINT_CAMERA_AT_POINT 820.5945 10.2527 1004.3235 JUMP_CUT flag_cutscene1_cat4 = 1 ENDIF ENDIF IF flag_cutscene1_cat4 = 1 IF TIMERA > 2000 // SET_FIXED_CAMERA_POSITION 823.9662 11.5153 1005.8105 0.0 0.0 0.0 //establishing shot // POINT_CAMERA_AT_POINT 823.2487 11.0891 1005.2598 JUMP_CUT SET_CHAR_COORDINATES scplayer 824.8268 10.0672 1003.1870 SET_CHAR_HEADING scplayer 100.0 SET_CHAR_AREA_VISIBLE scplayer 3 SET_AREA_VISIBLE 3 flag_cutscene1_cat4 = 2 TASK_GO_STRAIGHT_TO_COORD scplayer 821.3832 9.7296 1003.1951 PEDMOVE_WALK -1 // CREATE_CAR BOBCAT 1297.0 278.0 18.0 getaway_car_car4 /* SET_CAR_HEADING getaway_car_car4 150.0 SET_CAR_HEALTH getaway_car_car4 800 SET_CAR_PROOFS getaway_car_car4 TRUE TRUE TRUE TRUE FALSE FREEZE_CAR_POSITION getaway_car_car4 TRUE SET_CAN_BURST_CAR_TYRES getaway_car_car4 FALSE */ IF NOT IS_CAR_DEAD players_car_cat4 FREEZE_CAR_POSITION players_car_cat4 TRUE SET_CAR_VISIBLE players_car_cat4 TRUE SET_CAR_PROOFS players_car_cat4 FALSE FALSE FALSE FALSE FALSE SET_CAR_HEALTH players_car_cat4 1500 SET_CAR_COORDINATES players_car_cat4 1297.0 278.0 18.0 SET_CAR_HEADING players_car_cat4 150.0 ENDIF REQUEST_MODEL copcarru REQUEST_MODEL csher REQUEST_MODEL colt45 WHILE NOT HAS_MODEL_LOADED copcarru OR NOT HAS_MODEL_LOADED csher OR NOT HAS_MODEL_LOADED colt45 WAIT 0 ENDWHILE CREATE_CAR copcarru 1296.0380 251.8959 18.4002 car_police1_cat4 CREATE_CAR copcarru 1301.3264 265.0127 18.4007 car_police2_cat4 CREATE_CAR copcarru 1308.3976 278.7967 18.546 car_police3_cat4 SET_CAR_HEADING car_police1_cat4 11.7173 SET_CAR_HEADING car_police2_cat4 70.3422 SET_CAR_HEADING car_police3_cat4 119.5617 CREATE_CHAR_INSIDE_CAR car_police1_cat4 PEDTYPE_COP csher char_pol1_cat4 GIVE_WEAPON_TO_CHAR char_pol1_cat4 WEAPONTYPE_PISTOL 1000 CREATE_CHAR_INSIDE_CAR car_police2_cat4 PEDTYPE_COP csher char_pol2_cat4 GIVE_WEAPON_TO_CHAR char_pol2_cat4 WEAPONTYPE_PISTOL 1000 CREATE_CHAR_INSIDE_CAR car_police3_cat4 PEDTYPE_COP csher char_pol3_cat4 GIVE_WEAPON_TO_CHAR char_pol3_cat4 WEAPONTYPE_PISTOL 1000 TIMERA = 0 ENDIF ENDIF IF flag_cutscene1_cat4 = 2 IF TIMERA > 2000 SET_FIXED_CAMERA_POSITION 819.5102 10.5367 1004.4390 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 820.4842 10.3240 1004.3616 JUMP_CUT OPEN_SEQUENCE_TASK seq_cat_stealing_car //TASK_DUCK -1 3000 TASK_PLAY_ANIM -1 BOM_Plant_In BOMBER 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM -1 BOM_Plant_Loop BOMBER 4.0 FALSE FALSE FALSE FALSE 5000 CLOSE_SEQUENCE_TASK seq_cat_stealing_car PERFORM_SEQUENCE_TASK scplayer seq_cat_stealing_car CLEAR_SEQUENCE_TASK seq_cat_stealing_car IF NOT IS_CHAR_DEAD scplayer START_CHAR_FACIAL_TALK scplayer 100000 ENDIF LOAD_MISSION_AUDIO 1 SOUND_CAT2_GA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( CAT2_GA ) 10000 1 // player, ok , i got it PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CAT2_GA IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF LOAD_MISSION_AUDIO 1 SOUND_CAT2_GB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD catalina START_CHAR_FACIAL_TALK catalina 10000 ENDIF PRINT_NOW CAT2_GB 10000 1 // cat About fucking time, you’re a fucking sloth! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CAT2_GB IF NOT IS_CHAR_DEAD catalina STOP_CHAR_FACIAL_TALK catalina ENDIF TIMERA = 0 flag_cutscene1_cat4 = 3 ENDIF ENDIF IF flag_cutscene1_cat4 = 3 IF TIMERA > 1000 SET_FIXED_CAMERA_POSITION 832.2155 11.3956 1003.3882 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 831.3511 10.9217 1003.5567 JUMP_CUT LOAD_MISSION_AUDIO 1 SOUND_CAT2_GC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE OPEN_SEQUENCE_TASK seq_cat_stealing_car TASK_ACHIEVE_HEADING -1 10.0 TASK_GO_STRAIGHT_TO_COORD -1 833.0 10.0 1003.0 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK seq_cat_stealing_car PERFORM_SEQUENCE_TASK scplayer seq_cat_stealing_car CLEAR_SEQUENCE_TASK seq_cat_stealing_car IF NOT IS_CHAR_DEAD catalina CLEAR_CHAR_TASKS catalina TASK_GO_STRAIGHT_TO_COORD catalina 834.0 7.0 1003.0 PEDMOVE_RUN -1 ENDIF IF NOT IS_CHAR_DEAD scplayer START_CHAR_FACIAL_TALK scplayer 10000 ENDIF PRINT_NOW CAT2_GC 10000 1 // lets go PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF CLEAR_THIS_PRINT CAT2_GC TIMERA = 0 flag_cutscene1_cat4 = 4 ENDIF ENDIF IF flag_cutscene1_cat4 = 4 // IF TIMERA > 1000 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE MAKE_PLAYER_GANG_REAPPEAR TIMERA = 0 flag_cutscene1_cat4 = 5 // ENDIF ENDIF IF TIMERB > 14800 flag_cutscene1_cat4 = 10 ENDIF ENDWHILE SET_AREA_VISIBLE 0 SET_CHAR_COORDINATES scplayer 1292.7206 271.0581 18.5469 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 833.0 9.0 10.0 LOAD_SCENE 1292.7206 271.0581 18.5469 SET_CHAR_HEADING scplayer 333.0 IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_DETONATOR SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_DETONATOR ENDIF IF NOT IS_CHAR_DEAD catalina // TASK_WARP_CHAR_INTO_CAR_AS_PASSENGER catalina players_car_cat4 0 SET_CHAR_COORDINATES catalina 1292.6598 275.2182 18.5547 SET_CHAR_HEADING catalina 340.1134 SET_CHAR_CANT_BE_DRAGGED_OUT catalina TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED catalina TRUE SET_CHAR_PROOFS catalina FALSE FALSE FALSE FALSE FALSE SET_CHAR_HAS_USED_ENTRY_EXIT catalina 833.0 9.0 10.0 SET_CHAR_AREA_VISIBLE catalina 0 ENDIF CLEAR_AREA 1292.7206 271.0581 18.5469 1000.0 TRUE DO_FADE 1000 FADE_IN IF NOT IS_CAR_DEAD players_car_cat4 IF IS_CAR_PASSENGER_SEAT_FREE players_car_cat4 0 IF NOT IS_CHAR_DEAD catalina // TASK_WARP_CHAR_INTO_CAR_AS_PASSENGER catalina players_car_cat4 0 TASK_ENTER_CAR_AS_PASSENGER catalina players_car_cat4 -1 0 IF IS_GROUP_MEMBER catalina Players_Group SET_GROUP_FOLLOW_STATUS Players_Group FALSE ENDIF flag_dont_make_cat_leave_car = 1 ENDIF ELSE IF NOT IS_GROUP_MEMBER catalina Players_Group SET_GROUP_MEMBER Players_Group catalina SET_GROUP_FOLLOW_STATUS Players_Group TRUE ENDIF flag_dont_make_cat_leave_car = 0 ENDIF ELSE IF NOT IS_GROUP_MEMBER catalina Players_Group SET_GROUP_MEMBER Players_Group catalina SET_GROUP_FOLLOW_STATUS Players_Group TRUE ENDIF ENDIF //flag_are_cops_pissed = 1 SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER REMOVE_ANIMATION bomber DELETE_OBJECT object_door_cat4 DELETE_OBJECT small_safe_cat4 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 MARK_MODEL_AS_NO_LONGER_NEEDED man_safenew MARK_MODEL_AS_NO_LONGER_NEEDED kev_safe SET_RADIO_CHANNEL RS_COUNTRY flag_has_cat_got_the_loot_cat4 = 1 REMOVE_BLIP blip_otb_cat4 flag_holdup_cat4 = 0 flag_getaway_cat4 = 1 //RETURN ENDIF ENDIF ENDWHILE // Next step flag_holdup_cat4 = 0 flag_getaway_cat4 = 1 RETURN // *********************************************************************** // ////////////////////////// GETAWAY //////////////////////////////////// // *********************************************************************** LVAR_FLOAT coord_hiding_spot_x_cat4 coord_hiding_spot_y_cat4 coord_hiding_spot_z_cat4 LVAR_INT temp_cop_cat4 LVAR_INT flag_display_text_cat4 getaway_cat4: flag_display_text_cat4 = 0 coord_hiding_spot_x_cat4 = 872.9051 coord_hiding_spot_y_cat4 = -30.3161 coord_hiding_spot_z_cat4 = 62.1893 // SWITCH_ROADS_OFF 1140.9072 213.5046 1.7728 1585.8451 382.9843 43.8501 SET_CAR_DENSITY_MULTIPLIER 0.0 //SET_PED_DENSITY_MULTIPLIER 0.0 GOSUB streaming_otb_clerk WHILE NOT flag_mission_passed_cat4 = 1 // Cat checks WAIT 0 GOSUB streaming_otb_clerk // catalina getting into car IF flag_create_car_cat_enters = 0 IF player_in_otb_flag_cat4_local_var = 0 // if player is outside of OTBI ALTER_WANTED_LEVEL player1 4 flag_text_otb = 4 SET_CHAR_HEADING scplayer 333.0 SET_CAMERA_BEHIND_PLAYER IF NOT IS_CHAR_DEAD catalina // TASK_GO_STRAIGHT_TO_COORD catalina 1298.40 275.65 19.5 PEDMOVE_RUN SET_CHAR_ACCURACY catalina 100 IF NOT IS_CAR_DEAD players_car_cat4 GET_CAR_MODEL players_car_cat4 players_car_model_cat4 IF IS_CAR_PASSENGER_SEAT_FREE players_car_cat4 0 AND IS_THIS_MODEL_A_CAR players_car_model_cat4 // TASK_ENTER_CAR_AS_PASSENGER catalina players_car_cat4 -1 0 SET_CHAR_CANT_BE_DRAGGED_OUT catalina TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED catalina TRUE ADD_BLIP_FOR_CAR players_car_cat4 blip_getaway_car SET_BLIP_AS_FRIENDLY blip_getaway_car TRUE LOAD_MISSION_AUDIO 1 SOUND_CATX_BF WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW CATX_BF 10000 1 // cat get in the car PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_BF ELSE LOAD_MISSION_AUDIO 1 SOUND_CATX_NA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW CATX_NA 10000 1 // Carl, get us some fucking wheels! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_NA ENDIF ELSE LOAD_MISSION_AUDIO 1 SOUND_CATX_NA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW CATX_NA 10000 1 // Carl, get us some fucking wheels! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_NA ENDIF ENDIF IF NOT IS_CHAR_DEAD char_pol1_cat4 IF NOT IS_CAR_DEAD car_police1_cat4 OPEN_SEQUENCE_TASK seq_cat_stealing_car TASK_LEAVE_CAR -1 car_police1_cat4 TASK_AIM_GUN_AT_CHAR -1 scplayer 20000 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK seq_cat_stealing_car PERFORM_SEQUENCE_TASK char_pol1_cat4 seq_cat_stealing_car CLEAR_SEQUENCE_TASK seq_cat_stealing_car SET_CHAR_DECISION_MAKER char_pol1_cat4 dm_cops_cat4 ENDIF ENDIF IF NOT IS_CHAR_DEAD char_pol2_cat4 IF NOT IS_CAR_DEAD car_police2_cat4 OPEN_SEQUENCE_TASK seq_cat_stealing_car TASK_LEAVE_CAR -1 car_police2_cat4 TASK_AIM_GUN_AT_CHAR -1 scplayer 20000 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK seq_cat_stealing_car PERFORM_SEQUENCE_TASK char_pol2_cat4 seq_cat_stealing_car CLEAR_SEQUENCE_TASK seq_cat_stealing_car SET_CHAR_DECISION_MAKER char_pol2_cat4 dm_cops_cat4 ENDIF ENDIF IF NOT IS_CHAR_DEAD char_pol3_cat4 IF NOT IS_CAR_DEAD car_police3_cat4 OPEN_SEQUENCE_TASK seq_cat_stealing_car TASK_LEAVE_CAR -1 car_police3_cat4 TASK_AIM_GUN_AT_CHAR -1 scplayer 20000 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK seq_cat_stealing_car PERFORM_SEQUENCE_TASK char_pol3_cat4 seq_cat_stealing_car CLEAR_SEQUENCE_TASK seq_cat_stealing_car SET_CHAR_DECISION_MAKER char_pol3_cat4 dm_cops_cat4 ENDIF ENDIF flag_create_car_cat_enters = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD catalina IF flag_create_car_cat_enters = 1 MARK_CAR_AS_NO_LONGER_NEEDED car_police1_cat4 MARK_CAR_AS_NO_LONGER_NEEDED car_police2_cat4 MARK_CAR_AS_NO_LONGER_NEEDED car_police3_cat4 MARK_CHAR_AS_NO_LONGER_NEEDED char_pol1_cat4 MARK_CHAR_AS_NO_LONGER_NEEDED char_pol2_cat4 MARK_CHAR_AS_NO_LONGER_NEEDED char_pol3_cat4 MARK_CAR_AS_NO_LONGER_NEEDED players_car_cat4 flag_create_car_cat_enters = 2 IF DOES_BLIP_EXIST blip_hiding_spot REMOVE_BLIP blip_hiding_spot ENDIF IF DOES_BLIP_EXIST blip_paint_and_spray_cat4 REMOVE_BLIP blip_paint_and_spray_cat4 ENDIF //SWITCH_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 flag_create_car_cat_enters = 2 // ENDIF ENDIF IF flag_create_car_cat_enters = 2 IF IS_CHAR_IN_ANY_CAR scplayer // AND IS_CHAR_IN_ANY_CAR catalina flag_create_car_cat_enters = 3 flag_display_text_cat4 = 1 /* CLEAR_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_COP flag_cat_shoot_cops = 1 SET_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_COP */ // SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 TRUE IF DOES_BLIP_EXIST blip_getaway_car REMOVE_BLIP blip_getaway_car ENDIF IF NOT IS_GROUP_MEMBER catalina Players_Group SET_GROUP_MEMBER Players_Group catalina SET_GROUP_FOLLOW_STATUS Players_Group TRUE ENDIF // CLEAR_CHAR_TASKS catalina IF NOT IS_CAR_DEAD players_car_cat4 FREEZE_CAR_POSITION players_car_cat4 FALSE SET_CAR_PROOFS players_car_cat4 FALSE FALSE FALSE FALSE FALSE ENDIF IF flag_are_cops_pissed = 0 IF NOT DOES_BLIP_EXIST blip_hiding_spot ADD_BLIP_FOR_COORD coord_hiding_spot_x_cat4 coord_hiding_spot_y_cat4 coord_hiding_spot_z_cat4 blip_hiding_spot CHANGE_BLIP_COLOUR blip_hiding_spot YELLOW ENDIF ENDIF IF flag_are_cops_pissed = 1 IF NOT IS_CHAR_DEAD catalina IF IS_GROUP_MEMBER catalina Players_Group IF NOT DOES_BLIP_EXIST blip_paint_and_spray_cat4 // ADD_SPRITE_BLIP_FOR_CONTACT_POINT coord_spray_shop_x coord_spray_shop_y coord_spray_shop_z RADAR_SPRITE_SPRAY blip_paint_and_spray_cat4 // ADD_BLIP_FOR_COORD coord_spray_shop_x coord_spray_shop_y coord_spray_shop_z blip_paint_and_spray_cat4 ADD_SPRITE_BLIP_FOR_COORD coord_spray_shop_x coord_spray_shop_y coord_spray_shop_z RADAR_SPRITE_SPRAY blip_paint_and_spray_cat4 PRINT_NOW CAT4_32 5000 1 // GET TO THE PAINT AND SPRAY ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF flag_create_car_cat_enters = 3 GOSUB check_cat_cat4 IF flag_mission_failed_cat4 = 1 RETURN ENDIF IF NOT IS_CHAR_DEAD catalina IF IS_CHAR_IN_ANY_CAR catalina CLEAR_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_COP flag_cat_shoot_cops = 1 SET_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_COP flag_dont_make_cat_leave_car = 0 flag_create_car_cat_enters = 4 ENDIF ENDIF ENDIF IF flag_create_car_cat_enters = 4 GOSUB check_cat_cat4 IF flag_mission_failed_cat4 = 1 RETURN ENDIF ENDIF ELSE flag_getaway_cat4 = 0 flag_mission_failed_cat4 = 1 PRINT_NOW ( CAT4_15 ) 5000 1 // CATS DEAD! RETURN ENDIF ///////////////////////////////////////////// // checking if player is back at the hideout ////////////////////////////////////////////// //CAT2_HA IF flag_are_cops_pissed = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer coord_hiding_spot_x_cat4 coord_hiding_spot_y_cat4 coord_hiding_spot_z_cat4 4.0 4.0 4.0 TRUE ENDIF IF IS_CHAR_DEAD catalina flag_getaway_cat4 = 0 flag_mission_failed_cat4 = 1 flag_mission_passed_cat4 = 0 PRINT_NOW ( CAT4_15 ) 5000 1 // CATS DEAD! RETURN ENDIF IF NOT IS_CHAR_DEAD catalina IF IS_CHAR_IN_ANY_CAR scplayer IF IS_CHAR_IN_ANY_CAR catalina ////////////////////////////// /// CATS rant /////////////////////////////// /* IF set_audio_to_be_played = 0 index_dialogue_cat4 = 0 set_audio_to_be_played = 1 ENDIF */ IF flag_text_otb >= 4 AND flag_text_otb <= number_of_conversation_samples_cat4 IF flag_text_otb = 4 SHUT_PLAYER_UP player1 TRUE IF TIMERA > 10000 GOSUB load_and_play_audio_cat4 ENDIF ELSE GOSUB load_and_play_audio_cat4 ENDIF ENDIF ENDIF ////////////////////////////// /// END CATS RANT /////////////////////////////// ENDIF ENDIF IF NOT IS_CHAR_DEAD catalina IF LOCATE_CHAR_ANY_MEANS_3D scplayer coord_hiding_spot_x_cat4 coord_hiding_spot_y_cat4 coord_hiding_spot_z_cat4 4.0 4.0 4.0 FALSE AND LOCATE_CHAR_ANY_MEANS_3D catalina coord_hiding_spot_x_cat4 coord_hiding_spot_y_cat4 coord_hiding_spot_z_cat4 10.0 10.0 10.0 FALSE // IF temp_cop_cat4 = -1 flag_mission_passed_cat4 = 1 flag_mission_failed_cat4 = 0 IF LOCATE_CHAR_IN_CAR_3D scplayer coord_hiding_spot_x_cat4 coord_hiding_spot_y_cat4 coord_hiding_spot_z_cat4 10.0 10.0 10.0 TRUE SET_PLAYER_CONTROL player1 OFF STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF // cutscene of cat leaving the group SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON TIMERA = 0 TIMERB = 0 flag_cutscene1_cat4 = 0 WHILE NOT flag_cutscene1_cat4 = 10 WAIT 0 // [CAT2_CA] You impress me, Carl Johnson! // prints to use [CATX_RC] "Here's you cut, big man" CLEAR_AREA 866.7373 -24.0333 64.9955 1000.0 TRUE IF flag_cutscene1_cat4 = 0 flag_cutscene1_cat4 = 1 SET_FIXED_CAMERA_POSITION 866.3945 -23.1135 65.1866 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 866.7373 -24.0333 64.9955 JUMP_CUT CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAT2_CA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( CAT2_CA ) 10000 1 // You impress me, Carl Johnson! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CAT2_CA ENDIF IF flag_cutscene1_cat4 = 1 flag_cutscene1_cat4 = 2 LOAD_MISSION_AUDIO 1 SOUND_CATX_RC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( CATX_RC ) 10000 1 // heres your cut. PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_RC ENDIF IF flag_cutscene1_cat4 = 2 flag_cutscene1_cat4 = 3 TIMERA = 0 IF NOT IS_CHAR_DEAD catalina IF IS_GROUP_MEMBER catalina Players_Group REMOVE_CHAR_FROM_GROUP catalina ENDIF IF IS_CHAR_IN_ANY_CAR catalina TASK_LEAVE_ANY_CAR catalina ENDIF ENDIF ENDIF IF flag_cutscene1_cat4 = 3 IF TIMERA < 1500 flag_cutscene1_cat4 = 4 IF NOT IS_CHAR_DEAD catalina TASK_GO_STRAIGHT_TO_COORD catalina 869.84 -26.24 63.1797 PEDMOVE_WALK -1 ENDIF ENDIF ENDIF IF TIMERB > 7000 flag_cutscene1_cat4 = 10 ENDIF ENDWHILE DELETE_CHAR catalina SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER // end cutscene ENDIF ENDIF ENDIF ENDWHILE REMOVE_BLIP blip_hiding_spot flag_mission_passed_cat4 = 1 flag_getaway_cat4 = 0 RETURN ////////////////////////////////////////////// // GOSUB FUNCTIONS ////////////////////////////////////////////// ////////////////////////////////////////// // Check if cat is stilll in players group ////////////////////////////////////////// check_cat_cat4: IF NOT IS_CHAR_DEAD catalina // IF player leaves cat behind /* IF IS_CHAR_PLAYING_ANIM catalina woman_run SET_CHAR_ANIM_SPEED catalina woman_run 10.0 ENDIF */ // comments when cat is shooting cops IF flag_are_cops_pissed = 1 IF IS_CHAR_SHOOTING catalina // IF TIMERB > 10000 GOSUB cat_talks_nasty_to_cops_cat4 ENDIF ENDIF // IF player_in_otb_flag_cat4_local_var = 1 IF NOT IS_GROUP_MEMBER catalina Players_Group PRINT_NOW CAT4_16 4000 1 //"WHERE ARE U GOING?" IF flag_getaway_cat4 = 1 IF DOES_BLIP_EXIST blip_paint_and_spray_cat4 REMOVE_BLIP blip_paint_and_spray_cat4 ENDIF IF DOES_BLIP_EXIST blip_hiding_spot REMOVE_BLIP blip_hiding_spot ENDIF ENDIF IF NOT DOES_BLIP_EXIST blip_cat_cat4 IF NOT IS_CHAR_DEAD catalina ADD_BLIP_FOR_CHAR catalina blip_cat_cat4 SET_BLIP_AS_FRIENDLY blip_cat_cat4 TRUE ENDIF ENDIF WHILE NOT IS_GROUP_MEMBER catalina Players_Group WAIT 0 IF NOT IS_CHAR_DEAD catalina IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer catalina 200.0 200.0 200.0 FALSE flag_holdup_cat4 = 0 flag_getaway_cat4 = 0 flag_mission_failed_cat4 = 1 PRINT_NOW ( CAT4_14 ) 5000 1 // you abandoned cat RETURN ENDIF IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer catalina 8.0 8.0 8.0 FALSE SET_GROUP_MEMBER Players_Group catalina SET_GROUP_FOLLOW_STATUS Players_Group TRUE REMOVE_BLIP blip_cat_cat4 IF flag_getaway_cat4 = 1 IF flag_are_cops_pissed = 0 IF NOT DOES_BLIP_EXIST blip_hiding_spot ADD_BLIP_FOR_COORD coord_hiding_spot_x_cat4 coord_hiding_spot_y_cat4 coord_hiding_spot_z_cat4 blip_hiding_spot CHANGE_BLIP_COLOUR blip_hiding_spot YELLOW PRINT_NOW ( CAT4_13 ) 10000 1 // Get back to the hideout ENDIF ENDIF IF flag_are_cops_pissed = 1 IF NOT DOES_BLIP_EXIST blip_paint_and_spray_cat4 ADD_SPRITE_BLIP_FOR_COORD coord_spray_shop_x coord_spray_shop_y coord_spray_shop_z RADAR_SPRITE_SPRAY blip_paint_and_spray_cat4 PRINT_NOW CAT4_32 5000 1 // GET TO THE PAINT AND SPRAY ENDIF ENDIF ENDIF ENDIF ELSE REMOVE_BLIP blip_otb_cat4 flag_holdup_cat4 = 0 flag_getaway_cat4 = 0 flag_mission_failed_cat4 = 1 PRINT_NOW ( CAT4_15 ) 5000 1 // CATS DEAD! RETURN ENDIF ENDWHILE ENDIF ELSE REMOVE_BLIP blip_otb_cat4 flag_holdup_cat4 = 0 flag_getaway_cat4 = 0 flag_mission_failed_cat4 = 1 PRINT_NOW ( CAT4_15 ) 5000 1 // CATS DEAD! RETURN ENDIF RETURN // *********************************** audio****************************** load_and_play_audio_cat4: IF play_audio_flag_cat4 = 0 IF NOT IS_CHAR_DEAD catalina SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH catalina TRUE ENDIF CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 cat4_audio[index_dialogue_cat4] play_audio_flag_cat4 = 1 ENDIF IF play_audio_flag_cat4 = 1 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW $cat4_text[index_dialogue_cat4] 10000 1 play_audio_flag_cat4 = 2 ENDIF ENDIF IF play_audio_flag_cat4 = 2 IF HAS_MISSION_AUDIO_FINISHED 1 // temp_int = c3_counter - 1 play_audio_flag_cat4 = 0 CLEAR_THIS_PRINT $cat4_text[index_dialogue_cat4] IF NOT IS_CHAR_DEAD catalina SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH catalina FALSE ENDIF index_dialogue_cat4++ flag_text_otb++ ENDIF ENDIF RETURN cat_talks_nasty_to_cops_cat4: IF flag_text_cat_police_killing_cat4 = 0 flag_text_cat_police_killing_cat4 = 1 LOAD_MISSION_AUDIO 1 SOUND_CATX_SA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW CATX_SA 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_SA RETURN ENDIF IF flag_text_cat_police_killing_cat4 = 1 LOAD_MISSION_AUDIO 1 SOUND_CATX_SB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW CATX_SB 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_SB flag_text_cat_police_killing_cat4 = 2 RETURN ENDIF IF flag_text_cat_police_killing_cat4 = 2 LOAD_MISSION_AUDIO 1 SOUND_CATX_SC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW CATX_SC 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_SC flag_text_cat_police_killing_cat4 = 3 RETURN ENDIF IF flag_text_cat_police_killing_cat4 = 3 flag_text_cat_police_killing_cat4 = 4 LOAD_MISSION_AUDIO 1 SOUND_CATX_SD WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW CATX_SD 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_SD RETURN ENDIF IF flag_text_cat_police_killing_cat4 = 4 flag_text_cat_police_killing_cat4 = 5 LOAD_MISSION_AUDIO 1 SOUND_CATX_SE WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW CATX_SE 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_SE RETURN ENDIF IF flag_text_cat_police_killing_cat4 = 5 flag_text_cat_police_killing_cat4 = 6 LOAD_MISSION_AUDIO 1 SOUND_CATX_SF WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW CATX_SF 10000 1 // cat get in the car PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_SF RETURN ENDIF IF flag_text_cat_police_killing_cat4 = 6 flag_text_cat_police_killing_cat4 = 7 LOAD_MISSION_AUDIO 1 SOUND_CATX_SG WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW CATX_SG 10000 1 // cat get in the car PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_SG RETURN ENDIF IF flag_text_cat_police_killing_cat4 = 7 flag_text_cat_police_killing_cat4 = 8 LOAD_MISSION_AUDIO 1 SOUND_CATX_SH WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW CATX_SH 10000 1 // cat get in the car PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_SH RETURN ENDIF IF flag_text_cat_police_killing_cat4 = 8 flag_text_cat_police_killing_cat4 = 9 LOAD_MISSION_AUDIO 1 SOUND_CATX_TD WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW CATX_TD 10000 1 // cat get in the car PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_TD RETURN ENDIF IF flag_text_cat_police_killing_cat4 = 9 flag_text_cat_police_killing_cat4 = 10 LOAD_MISSION_AUDIO 1 SOUND_CATX_TJ WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW CATX_TJ 10000 1 // cat get in the car PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_TJ RETURN ENDIF IF flag_text_cat_police_killing_cat4 = 10 flag_text_cat_police_killing_cat4 = 0 LOAD_MISSION_AUDIO 1 SOUND_CATX_TQ WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW CATX_TQ 10000 1 // cat get in the car PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT CATX_TQ RETURN ENDIF // **************************************** Mission cat4 failed *********************** mission_failed_cat4: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" // this happens in the cleanup function, why here? It looks odd //DELETE_CHAR catalina // SET_OBJECT_HEADING object_door_cat4 175.0 flag_has_otb_door_been_open = 0 RETURN // **************************************** mission cat4 passed ************************ mission_passed_cat4: //REGISTER_MISSION_PASSED ( CAT_1 ) //Used in the stats PRINT_WITH_NUMBER_BIG ( M_PASS ) 2000 5000 1 //"Mission Passed!" ADD_SCORE player1 2000 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 cat_counter ++ //Used to terminate this mission loop in the main script. These varibles will be set up in the main.sc //REMOVE_BLIP cat_contact_blip ++ cat_getaway_dialogue REGISTER_MISSION_PASSED ( CAT_4 ) PLAYER_MADE_PROGRESS 1 // TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME CAT IF cat_liquor_banter = 1 cat_liquor_banter = 2 ENDIF flag_cat_mission4_passed = 1 RETURN // ********************************** mission cleanup *********************************** mission_cleanup_cat4: // DO_FADE 0 FADE_IN CLEAR_HELP flag_player_on_mission = 0 SWITCH_ENTRY_EXIT genOTB TRUE IF IS_PLAYER_PLAYING player1 SHUT_PLAYER_UP player1 FALSE ENDIF IF NOT IS_CHAR_DEAD catalina SET_CHAR_PROOFS catalina FALSE FALSE FALSE FALSE FALSE ENDIF IF NOT IS_CAR_DEAD players_car_cat4 FREEZE_CAR_POSITION players_car_cat4 FALSE SET_CAR_PROOFS players_car_cat4 FALSE FALSE FALSE FALSE FALSE SET_CAN_BURST_CAR_TYRES players_car_cat4 TRUE ENDIF REMOVE_CHAR_ELEGANTLY catalina index_cat4 = 4 WHILE index_cat4 < 6 MARK_CHAR_AS_NO_LONGER_NEEDED char_random_ped_cat4[index_cat4] index_cat4++ ENDWHILE REMOVE_ANIMATION misc MARK_MODEL_AS_NO_LONGER_NEEDED csher MARK_MODEL_AS_NO_LONGER_NEEDED firetruk MARK_MODEL_AS_NO_LONGER_NEEDED copcarla MARK_MODEL_AS_NO_LONGER_NEEDED ambulan MARK_MODEL_AS_NO_LONGER_NEEDED lafd1 MARK_MODEL_AS_NO_LONGER_NEEDED roadworkbarrier1 MARK_MODEL_AS_NO_LONGER_NEEDED colt45 MARK_MODEL_AS_NO_LONGER_NEEDED cellphone // MARK_MODEL_AS_NO_LONGER_NEEDED BOBCAT MARK_MODEL_AS_NO_LONGER_NEEDED copcarru MARK_MODEL_AS_NO_LONGER_NEEDED DESERT_EAGLE MARK_MODEL_AS_NO_LONGER_NEEDED BOMB MARK_MODEL_AS_NO_LONGER_NEEDED SATCHEL MARK_CAR_AS_NO_LONGER_NEEDED car_police1_cat4 MARK_CAR_AS_NO_LONGER_NEEDED car_police2_cat4 MARK_CAR_AS_NO_LONGER_NEEDED car_police3_cat4 MARK_CAR_AS_NO_LONGER_NEEDED players_car_cat4 MARK_CHAR_AS_NO_LONGER_NEEDED char_pol1_cat4 MARK_CHAR_AS_NO_LONGER_NEEDED char_pol2_cat4 MARK_CHAR_AS_NO_LONGER_NEEDED char_pol3_cat4 MARK_OBJECT_AS_NO_LONGER_NEEDED object_door_cat4 MARK_OBJECT_AS_NO_LONGER_NEEDED small_safe_cat4 MARK_MODEL_AS_NO_LONGER_NEEDED rider1_door MARK_MODEL_AS_NO_LONGER_NEEDED KEV_SAFE MARK_MODEL_AS_NO_LONGER_NEEDED man_safenew MARK_CAR_AS_NO_LONGER_NEEDED players_car_cat4 // CLEAR_MISSION_AUDIO 3 iSetOTBPanic = 0 IF NOT IS_CHAR_DEAD catalina CLEAR_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_COP CLEAR_CHAR_RELATIONSHIP catalina ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_COP ENDIF REMOVE_ANIMATION bomber flag_otb_robbing_peds_panic = 0 GET_GAME_TIMER timer_mobile_start REMOVE_BLIP blip_otb_cat4 REMOVE_BLIP blip_cat_cat4 REMOVE_BLIP blip_getaway_car REMOVE_BLIP blip_hiding_spot REMOVE_BLIP blip_paint_and_spray_cat4 ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 720.016 -454.625 15.328 RADAR_SPRITE_SPRAY spray_shop4 //Badlands Countryeast // CLEAR_ONSCREEN_COUNTER counter_sprunk_detonate_cat4 // SWITCH_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 // SWITCH_PED_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 REMOVE_DECISION_MAKER dm_cops_cat4 REMOVE_DECISION_MAKER dm_catalina_cat4 REMOVE_ALL_SCRIPT_FIRES //SWITCH_ROADS_BACK_TO_ORIGINAL 1140.9072 213.5046 1.7728 1585.8451 382.9843 43.8501 MISSION_HAS_FINISHED SET_EVERYONE_IGNORE_PLAYER Player1 OFF // ENABLE_ENTRY_EXIT_PLAYER_GROUP_WARPING 833.0 9.0 10.0 FALSE // inside otb // ENABLE_ENTRY_EXIT_PLAYER_GROUP_WARPING 1291.0 271.0 10.0 FALSE // outside SET_GROUP_SEPARATION_RANGE Players_Group 30.0 // **************************************** Initialising variables ********************************** flag_holdup_cat4 = 1 flag_getaway_cat4 = 0 flag_mission_passed_cat4 = 0 flag_mission_failed_cat4 = 0 flag_robbery_cutscene_otb = 0 flag_has_safe_been_robbed_cat4 = 0 // resets otb safe flag_cat_shoot_cops = 0 flag_otb_robbing_peds_panic = 0 flag_police_arrive = 0 flag_create_car_cat_enters = 0 flag_help_text_spary_cat4 = 0 flag_display_help_cat4 = 0 cat_coment_counter = 0 flag_text_otb = 0 flag_text_cat_police_killing_cat4 = 0 flag_has_otb_door_been_open = 0 player_in_otb_flag_cat4_local_var = 0 flag_cutscene1_cat4 = 0 flag_are_cops_pissed = 0 flag_has_catalina_chocolate_rant_been_done = 0 flag_has_cat_got_the_loot_cat4 = 0 counter_robbery_cat4 = 0 RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ********************************** Catalina Cut Scenes ********************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME CATCUT // Mission start stuff GOSUB mission_start_catcut IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_catcut_failed ENDIF GOSUB mission_cleanup_catcut MISSION_END // Variables for mission { LVAR_INT catcut_chat_switch catcut_index catcut_audio_is_playing catcut_cutscene_flag catcut_cell_index_end catcut_audio_chat[8] VAR_TEXT_LABEL $catcut_chat[8] catcut_chat_switch: SWITCH catcut_chat_switch CONST_INT CATCUT_CHAT1 0 CASE CATCUT_CHAT1 $catcut_chat[0] = &MCAT01A // Hello? $catcut_chat[1] = &MCAT01B // Where you been, you asshole? $catcut_chat[2] = &MCAT01C // Why don't you call, eh? $catcut_chat[3] = &MCAT01D // Well I was just abou- $catcut_chat[4] = &MCAT01E // LIAR! You've been hanging out with stinking putas! $catcut_chat[5] = &MCAT01F // No! No, if you'd just let me- $catcut_chat[6] = &MCAT01G // Silence! Get up here, we've got places to rob! $catcut_chat[7] = &MCAT01H // Look, I'm in the middle of- //AUDIO LABELS catcut_audio_chat[0] = SOUND_MCAT01A // Hello? catcut_audio_chat[1] = SOUND_MCAT01B // Where you been, you asshole? catcut_audio_chat[2] = SOUND_MCAT01C // Why don't you call, eh? catcut_audio_chat[3] = SOUND_MCAT01D // Well I was just abou- catcut_audio_chat[4] = SOUND_MCAT01E // LIAR! You've been hanging out with stinking putas! catcut_audio_chat[5] = SOUND_MCAT01F // No! No, if you'd just let me- catcut_audio_chat[6] = SOUND_MCAT01G // Silence! Get up here, we've got places to rob! catcut_audio_chat[7] = SOUND_MCAT01H // Look, I'm in the middle of- catcut_cell_index_end = 7 BREAK ENDSWITCH RETURN // **************************************** Mission Start ********************************** mission_start_catcut: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 LOAD_MISSION_TEXT BCESAR2 WAIT 0 // ****************************************CESAR IN TRAILOR******************************** SET_AREA_VISIBLE 2 LOAD_CUTSCENE BCESAR2 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 // *****************************************END OF CUTSCENE********************************* REQUEST_MODEL cellphone WHILE NOT HAS_MODEL_LOADED cellphone WAIT 0 ENDWHILE LOAD_MISSION_AUDIO 3 SOUND_MOBRING catcut_index = 0 catcut_audio_is_playing = 0 catcut_cutscene_flag = 0 catcut_chat_switch = CATCUT_CHAT1 GOSUB catcut_chat_switch SET_CHAR_COORDINATES scplayer -2042.1294 -2528.7905 29.6250 SET_CHAR_HEADING scplayer 284.27 LOAD_SCENE -2042.1294 -2528.7905 29.6250 RESTORE_CAMERA_JUMPCUT DO_FADE 1000 FADE_IN WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 3 TIMERA = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 3 WAIT 0 IF TIMERA < 1500 GOTO task_use_the_phone ENDIf ENDWHILE task_use_the_phone: TASK_USE_MOBILE_PHONE scplayer TRUE timera = 0 WHILE timera < 1500 WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON WHILE NOT catcut_index = 8 WAIT 0 GOSUB load_and_play_audio_catcut IF IS_BUTTON_PRESSED PAD1 TRIANGLE GOTO skip_catcut_mobile_call ENDIF ENDWHILE skip_catcut_mobile_call: CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS TASK_USE_MOBILE_PHONE scplayer FALSE GOTO mission_catcut_passed // **************************************** Mission catcut failed ************************ mission_catcut_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // **************************************** mission catcut passed ************************* mission_catcut_passed: REMOVE_BLIP bcrash_contact_blip CLEAR_WANTED_LEVEL player1 flag_trailor_cutscene = 1 REMOVE_BLIP cat_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT catX[0] catY[0] catZ[0] cat_blip_icon cat_contact_blip //LODGE REMOVE_BLIP save_house_blip[14] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT save_pickupX[14] save_pickupY[14] save_pickupZ[14] RADAR_SPRITE_SAVEHOUSE save_house_blip[14] CHANGE_BLIP_DISPLAY save_house_blip[14] BLIP_ONLY REMOVE_PICKUP grove_save_pickup[14] CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[14] save_pickupY[14] save_pickupZ[14] grove_save_pickup[14] //CATS LODGE//remove number_of_save_icons = 15 RETURN // ********************************** mission cleanup ************************************ mission_cleanup_catcut: flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED MARK_MODEL_AS_NO_LONGER_NEEDED cellphone RETURN load_and_play_audio_catcut: IF catcut_audio_is_playing = 0 OR catcut_audio_is_playing = 1 IF catcut_index <= catcut_cell_index_end //IF TIMERA > 1000 GOSUB play_catcut_audio //ENDIF ENDIF ENDIF IF catcut_audio_is_playing = 2 IF HAS_MISSION_AUDIO_FINISHED 1 catcut_audio_is_playing = 0 catcut_index ++ catcut_cutscene_flag = 0 CLEAR_PRINTS //TIMERA = 0 ENDIF ENDIF RETURN play_catcut_audio: IF catcut_audio_is_playing = 0 LOAD_MISSION_AUDIO 1 catcut_audio_chat[catcut_index] catcut_audio_is_playing = 1 ENDIF IF catcut_audio_is_playing = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW ( $catcut_chat[catcut_index] ) 4000 1 //Let's head over to B-Dup's crib. PLAY_MISSION_AUDIO 1 catcut_audio_is_playing = 2 ENDIF ENDIF RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // *********************************** Truth 1 **************************************** // *********************************** Body Harvest **************************************** // ***** Player has to steal a combine harvester for thr truth from a rival drugs farm ***** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME truth1 // Mission start stuff GOSUB mission_start_truth1 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_truth1_failed ENDIF GOSUB mission_cleanup_truth1 MISSION_END { // ********************************** Variables for mission ******************************** //variables LVAR_INT combine_t1 LVAR_INT tractor_t1 LVAR_INT bike_t1 LVAR_INT quad_t1 LVAR_INT combinedriver_t1 LVAR_INT tractordriver_t1 LVAR_FLOAT pipex_t1 LVAR_FLOAT pipey_t1 LVAR_FLOAT pipez_t1 LVAR_INT bail1_t1 LVAR_INT bail2_t1 LVAR_INT bail3_t1 LVAR_INT bail4_t1 LVAR_INT bail5_t1 LVAR_INT bail6_t1 LVAR_INT worker1_t1 LVAR_INT worker2_t1 LVAR_INT worker3_t1 LVAR_INT worker4_t1 LVAR_INT worker5_t1 LVAR_INT worker6_t1 LVAR_INT worker7_t1 LVAR_INT tractorchase1_t1 LVAR_INT tractorchasedriver1_t1 LVAR_INT tractorchase2_t1 LVAR_INT tractorchasedriver2_t1 LVAR_INT haystack1_t1 LVAR_INT haystack2_t1 LVAR_INT haystack3_t1 LVAR_INT haystack4_t1 LVAR_INT haystack5_t1 LVAR_INT haystack6_t1 LVAR_INT haystack7_t1 LVAR_INT chaser1_t1 LVAR_INT chaser2_t1 LVAR_INT chaser3_t1 LVAR_INT chaser4_t1 LVAR_INT chaser5_t1 LVAR_INT chaser6_t1 LVAR_INT chaser7_t1 LVAR_INT chaser8_t1 LVAR_INT chaser9_t1 LVAR_INT chaser10_t1 LVAR_INT chaser11_t1 LVAR_INT chaser12_t1 LVAR_INT chaser13_t1 LVAR_INT chaser14_t1 LVAR_INT chaser15_t1 LVAR_INT chaser16_t1 LVAR_INT chaser17_t1 LVAR_INT chaser18_t1 LVAR_INT chaser19_t1 LVAR_INT chaser20_t1 LVAR_INT walton1_t1 LVAR_INT walton2_t1 LVAR_INT truth_t1 LVAR_INT tractorforplayer_t1 LVAR_INT fieldguard1_t1 LVAR_INT fieldguard2_t1 LVAR_INT fieldguard3_t1 LVAR_INT fieldguard4_t1 LVAR_INT fieldguard5_t1 LVAR_INT fieldguard6_t1 //decision maker LVAR_INT truth1_DM LVAR_INT truth1tough_DM //sequences LVAR_INT combine_t1seq LVAR_INT chase_t1seq LVAR_INT enemycar_t1 LVAR_INT enemy_t1 LVAR_FLOAT enemyx_t1 enemyy_t1 enemyz_t1 LVAR_INT driver_t1 LVAR_INT escapecombine_t1seq LVAR_INT runfromcombine_t1seq LVAR_INT attackcombine_t1seq LVAR_INT sequencetask_t1 //text LVAR_TEXT_LABEL $text_label_t1 LVAR_INT audio_label_t1 LVAR_TEXT_LABEL $input_text_t1 //blips LVAR_INT combineblip_t1 //flags LVAR_INT truth1_flag LVAR_INT triggeredaction_tflag LVAR_INT combinedriver_t1flag LVAR_INT createbail_t1flag LVAR_INT skipcutscene_t1flag LVAR_INT foolcompiler_t1flag LVAR_INT worker1_t1flag LVAR_INT tractorchase1_t1flag LVAR_INT tractorchase2_t1flag LVAR_INT farmerchase1_t1flag LVAR_INT farmerchase2_t1flag LVAR_INT combinedriverattack_t1flag LVAR_INT playerincombine_t1flag LVAR_INT blipswap_t1flag LVAR_INT createguyswayback_t1flag LVAR_INT chaser1_t1flag LVAR_INT chaser2_t1flag LVAR_INT chaser3_t1flag LVAR_INT chaser4_t1flag LVAR_INT chaser5_t1flag LVAR_INT chaser6_t1flag LVAR_INT chaser7_t1flag LVAR_INT chaser8_t1flag LVAR_INT chaser9_t1flag LVAR_INT createguyswayback2_t1flag LVAR_INT walton2_t1flag LVAR_INT audio_t1flag VAR_INT tripskip_t2flag //do not reset this variable LVAR_INT progressaudio_t1flag LVAR_INT handlingudio_t1flag LVAR_INT skipphonecall_t1flag // ***************************************************************************************** // **************************************** Mission Start ********************************** mission_start_truth1: REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT TRU1 flag_player_on_mission = 1 WAIT 0 SET_AREA_VISIBLE 12 LOAD_CUTSCENE TRUTH_1 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 // ****************************************START OF CUTSCENE******************************** // ****************************************END OF CUTSCENE********************************** // fades the screen in SET_FADING_COLOUR 0 0 0 // request models REQUEST_MODEL COMBINE REQUEST_MODEL TRACTOR REQUEST_MODEL KMB_MARIJUANA REQUEST_CAR_RECORDING 348 REQUEST_MODEL sw_haybreak02 REQUEST_MODEL CUNTGUN REQUEST_MODEL WALTON REQUEST_MODEL SHOVEL REQUEST_MODEL CWFYHB REQUEST_MODEL CWMOHB2 REQUEST_MODEL CWMYHB1 LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED COMBINE OR NOT HAS_MODEL_LOADED TRACTOR OR NOT HAS_MODEL_LOADED KMB_MARIJUANA OR NOT HAS_MODEL_LOADED CWFYHB OR NOT HAS_MODEL_LOADED CWMOHB2 WAIT 0 ENDWHILE WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 348 OR NOT HAS_MODEL_LOADED sw_haybreak02 OR NOT HAS_MODEL_LOADED CUNTGUN OR NOT HAS_MODEL_LOADED CWMYHB1 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED WALTON OR NOT HAS_MODEL_LOADED SHOVEL WAIT 0 ENDWHILE RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF ADD_BLIP_FOR_COORD -1047.593 -1347.254 129.216 combineblip_t1 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY truth1_DM CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE truth1_DM EVENT_DRAGGED_OUT_CAR ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE truth1_DM EVENT_DRAGGED_OUT_CAR TASK_COMPLEX_KILL_PED_ON_FOOT 50.0 50.0 50.0 50.0 1 1 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH truth1tough_DM SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 PEDTYPE_MISSION1 SET_CHAR_COORDINATES scplayer -2195.9 -2258.029 30.0 SET_CHAR_HEADING scplayer 141.0 LOAD_SCENE_IN_DIRECTION -2196.46 -2256.96 31.43 141.0 DO_FADE 500 FADE_IN // ************************************ Declare Variables ********************************* //flags truth1_flag = 0 combinedriver_t1flag = 0 createbail_t1flag = 0 skipcutscene_t1flag = 0 foolcompiler_t1flag = 0 worker1_t1flag = 0 tractorchase1_t1flag = 0 tractorchase2_t1flag = 0 farmerchase1_t1flag = 0 farmerchase2_t1flag = 0 combinedriverattack_t1flag = 0 playerincombine_t1flag = 0 blipswap_t1flag = 0 createguyswayback_t1flag = 0 chaser1_t1flag = 0 chaser2_t1flag = 0 chaser3_t1flag = 0 chaser4_t1flag = 0 chaser5_t1flag = 0 chaser6_t1flag = 0 chaser7_t1flag = 0 chaser8_t1flag = 0 chaser9_t1flag = 0 createguyswayback2_t1flag = 0 walton2_t1flag = 0 triggeredaction_tflag = 0 audio_t1flag = 0 progressaudio_t1flag = 0 handlingudio_t1flag = 0 skipphonecall_t1flag = 0 // **************************************************************************************** //debug set player coordinates //SET_CHAR_COORDINATES scplayer -1054.05 -1345.78 133.3 PRINT_NOW TRU1_1 10000 1 //~s~Get to the farm where the combine harvester is located. IF foolcompiler_t1flag = 100 CREATE_OBJECT KMB_MARIJUANA pipex_t1 pipey_t1 pipez_t1 bail1_t1 CREATE_OBJECT KMB_MARIJUANA pipex_t1 pipey_t1 pipez_t1 bail2_t1 CREATE_OBJECT KMB_MARIJUANA pipex_t1 pipey_t1 pipez_t1 bail3_t1 CREATE_OBJECT KMB_MARIJUANA pipex_t1 pipey_t1 pipez_t1 bail4_t1 CREATE_OBJECT KMB_MARIJUANA pipex_t1 pipey_t1 pipez_t1 bail5_t1 CREATE_OBJECT KMB_MARIJUANA pipex_t1 pipey_t1 pipez_t1 bail6_t1 foolcompiler_t1flag = 101 ENDIF SET_WANTED_MULTIPLIER 0.3 IF tripskip_t2flag > 0 SET_UP_SKIP -1084.219 -1341.156 128.365 257.771 ENDIF var_int recordflag truth1_main_mission_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_truth1_passed ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////// Player has to get the combine harvester //////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //IF recordflag = 0 // IF IS_CHAR_IN_ANY_CAR scplayer // STORE_CAR_CHAR_IS_IN scplayer car // SET_CAR_COORDINATES car -1029.287 -1183.826 128.184 // SET_CAR_HEADING car 90.725 // recordflag = 1 // ENDIF //ENDIF //IF recordflag = 1 // IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_CTRL // IF NOT IS_CAR_DEAD car // SET_CAR_FORWARD_SPEED car 10.0 // recordflag = 2 // ENDIF // ENDIF //ENDIF //VIEW_INTEGER_VARIABLE tractorchase2_t1flag tractorchase2_t1flag //VIEW_INTEGER_VARIABLE tractorchase1_t1flag tractorchase1_t1flag IF triggeredaction_tflag = 0 //player in locate IF truth1_flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1047.593 -1347.254 129.39 4.0 4.0 4.0 TRUE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL PLAYER1 OFF REMOVE_BLIP combineblip_t1 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF tripskip_t2flag = 0 tripskip_t2flag = 1 ENDIF CLEAR_SKIP IF IS_CHAR_SITTING_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car ENDIF //create car CREATE_CAR COMBINE -1060.2495 -1044.2095 128.2188 combine_t1 //-1063.2495 SET_CAR_HEADING combine_t1 84.2638 SET_CAR_STRAIGHT_LINE_DISTANCE combine_t1 100 CAR_GOTO_COORDINATES combine_t1 -1136.78 -1044.2095 128.2188 SET_CAR_CRUISE_SPEED combine_t1 7.0 CREATE_CHAR_INSIDE_CAR combine_t1 PEDTYPE_MISSION1 CWMOHB2 combinedriver_t1 WAIT 500 DO_FADE 1000 FADE_IN SET_FIXED_CAMERA_POSITION -1073.8022 -1038.2028 128.4920 0.0 0.0 0.0 IF NOT IS_CAR_DEAD combine_t1 POINT_CAMERA_AT_CAR combine_t1 FIXED JUMP_CUT ENDIF IF IS_CHAR_SITTING_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car SET_CAR_HEADING car 355.69 ELSE SET_CHAR_HEADING scplayer 355.73 ENDIF CREATE_CAR TRACTOR -1043.989 -1312.677 128.772 tractorforplayer_t1 SET_CAR_HEADING tractorforplayer_t1 1.243 SET_CAN_BURST_CAR_TYRES tractorforplayer_t1 FALSE SET_CAR_HEALTH tractorforplayer_t1 4000 //create hay stack CREATE_OBJECT_NO_OFFSET sw_haybreak02 -1053.7919 -1187.6237 129.396 haystack1_t1 //129.196 CREATE_OBJECT_NO_OFFSET sw_haybreak02 -1038.5063 -1154.7223 129.699 haystack2_t1 CREATE_OBJECT_NO_OFFSET sw_haybreak02 -1105.4194 -1112.4508 128.864 haystack3_t1 CREATE_OBJECT_NO_OFFSET sw_haybreak02 -1182.3462 -1043.7972 129.699 haystack4_t1 CREATE_OBJECT_NO_OFFSET sw_haybreak02 -1141.3888 -1008.2543 129.735 haystack5_t1 CREATE_OBJECT_NO_OFFSET sw_haybreak02 -1197.3849 -1084.9507 129.743 haystack6_t1 CREATE_OBJECT_NO_OFFSET sw_haybreak02 -1161.3527 -1117.1976 129.049 haystack7_t1 //create tractor CREATE_CAR TRACTOR -1115.569 -1115.231 128.366 tractor_t1 CREATE_CHAR_INSIDE_CAR tractor_t1 PEDTYPE_MISSION1 CWMOHB2 tractordriver_t1 SET_CAR_HEADING tractor_t1 274.604 //create everything else CREATE_CHAR PEDTYPE_MISSION1 CWMOHB2 -1064.341 -1283.63 128.247 worker1_t1 //farmer leaning next to the farm SET_CHAR_HEADING worker1_t1 116.09 TASK_PLAY_ANIM worker1_t1 ATM PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER worker1_t1 truth1_DM SET_CHAR_HEALTH worker1_t1 50 SET_FOLLOW_NODE_THRESHOLD_DISTANCE worker1_t1 100.0 GIVE_WEAPON_TO_CHAR worker1_t1 WEAPONTYPE_COUNTRYRIFLE 99999 CREATE_CHAR PEDTYPE_MISSION1 CWFYHB -1074.646 -1095.812 128.245 worker2_t1 SET_CHAR_HEADING worker2_t1 96.069 TASK_PLAY_ANIM worker2_t1 ATM PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER worker2_t1 truth1_DM SET_CHAR_HEALTH worker2_t1 50 SET_FOLLOW_NODE_THRESHOLD_DISTANCE worker2_t1 100.0 CREATE_CHAR PEDTYPE_MISSION1 CWFYHB -1135.339 -1134.299 128.259 worker4_t1 SET_CHAR_HEADING worker4_t1 90.157 TASK_PLAY_ANIM worker4_t1 ATM PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER worker4_t1 truth1_DM SET_CHAR_HEALTH worker4_t1 50 SET_FOLLOW_NODE_THRESHOLD_DISTANCE worker4_t1 100.0 CREATE_CHAR PEDTYPE_MISSION1 CWMYHB1 -1121.739 -1095.64 128.247 worker5_t1 SET_CHAR_HEADING worker5_t1 94.64 TASK_PLAY_ANIM worker5_t1 ATM PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER worker5_t1 truth1_DM SET_CHAR_HEALTH worker5_t1 50 CREATE_CHAR PEDTYPE_MISSION1 CWFYHB -1121.713 -1084.165 128.247 worker6_t1 SET_CHAR_HEADING worker6_t1 79.746 TASK_PLAY_ANIM worker6_t1 ATM PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER worker6_t1 truth1_DM SET_CHAR_HEALTH worker6_t1 50 SET_FOLLOW_NODE_THRESHOLD_DISTANCE worker6_t1 100.0 CREATE_CHAR PEDTYPE_MISSION1 CWMYHB1 -1159.367 -1134.375 128.259 worker7_t1 SET_CHAR_HEADING worker7_t1 270.749 TASK_PLAY_ANIM worker7_t1 ATM PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER worker7_t1 truth1_DM SET_CHAR_HEALTH worker7_t1 50 SET_FOLLOW_NODE_THRESHOLD_DISTANCE worker7_t1 100.0 //combine harvester shot // SET_FIXED_CAMERA_POSITION -1073.8022 -1038.2028 128.4920 0.0 0.0 0.0 // POINT_CAMERA_AT_CAR combine_t1 FIXED JUMP_CUT PRINT_NOW TRU1_2 7000 1 //The combine harvester is located at the field towards the back of the farm. WAIT 200 CREATE_CHAR PEDTYPE_MISSION1 CWMYHB1 -1074.332 -1084.388 128.244 worker3_t1 SET_CHAR_HEADING worker3_t1 60.659 TASK_PLAY_ANIM worker3_t1 ATM PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER worker3_t1 truth1_DM SET_CHAR_HEALTH worker3_t1 50 SET_FOLLOW_NODE_THRESHOLD_DISTANCE worker3_t1 30.0 TIMERA = 0 TIMERB = 0 truth1_flag = 1 ENDIF ENDIF IF TIMERB > 1800 IF truth1_flag = 1 ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// skipcutscene_t1flag = 0 SKIP_CUTSCENE_START ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD tractor_t1 SET_CAR_STRAIGHT_LINE_DISTANCE tractor_t1 100 CAR_GOTO_COORDINATES tractor_t1 -1061.0586 -1116.129 128.366 SET_CAR_CRUISE_SPEED tractor_t1 10.0 ENDIF TIMERB = 0 truth1_flag = 2 ENDIF ENDIF //second shot showing workers IF truth1_flag = 2 IF TIMERB > 5000 SET_FIXED_CAMERA_POSITION -1057.8749 -1120.5917 136.4117 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1058.7036 -1120.0885 136.1667 JUMP_CUT IF NOT IS_CAR_DEAD combine_t1 SET_CAR_COORDINATES combine_t1 -1082.138 -1046.893 129.29 SET_CAR_HEADING combine_t1 84.2638 CAR_GOTO_COORDINATES combine_t1 -1195.58 -1045.87 129.1 SET_CAR_CRUISE_SPEED combine_t1 7.0 ENDIF PRINT_NOW TRU1_3 7000 1 //There are several groups of survivalists working, they will not take kindly to any strangers. TIMERB = 0 truth1_flag = 3 ENDIF ENDIF //third shot showing the entrance IF truth1_flag = 3 IF TIMERB > 7000 SET_FIXED_CAMERA_POSITION -1035.7823 -1331.0408 134.0494 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1036.1844 -1330.1340 133.9223 JUMP_CUT PRINT_NOW TRU1_4 10000 1 //Get into the farm and steal the combine harvester. TIMERB = 0 truth1_flag = 4 ENDIF ENDIF IF truth1_flag = 4 IF TIMERB > 5000 ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// skipcutscene_t1flag = 1 SKIP_CUTSCENE_END ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// //PLAYER HAS SKIPPED CUTSCENE IF skipcutscene_t1flag = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DELETE_CAR combine_t1 DELETE_CAR tractor_t1 DELETE_OBJECT bail1_t1 DELETE_OBJECT bail2_t1 DELETE_OBJECT bail3_t1 DELETE_OBJECT bail4_t1 DELETE_OBJECT bail5_t1 DELETE_OBJECT bail6_t1 DELETE_CHAR combinedriver_t1 DELETE_CHAR worker1_t1 DELETE_CHAR worker2_t1 DELETE_CHAR worker3_t1 DELETE_CHAR worker4_t1 DELETE_CHAR worker5_t1 DELETE_CHAR worker6_t1 DELETE_CHAR worker7_t1 CREATE_CHAR PEDTYPE_MISSION1 CWMOHB2 -1064.341 -1283.63 128.247 worker1_t1 //farmer leaning next to the farm SET_CHAR_HEADING worker1_t1 116.09 TASK_PLAY_ANIM worker1_t1 ATM PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER worker1_t1 truth1_DM SET_CHAR_HEALTH worker1_t1 50 SET_FOLLOW_NODE_THRESHOLD_DISTANCE worker1_t1 100.0 GIVE_WEAPON_TO_CHAR worker1_t1 WEAPONTYPE_COUNTRYRIFLE 99999 CREATE_CHAR PEDTYPE_MISSION1 CWFYHB -1074.646 -1095.812 128.245 worker2_t1 SET_CHAR_HEADING worker2_t1 96.069 TASK_PLAY_ANIM worker2_t1 ATM PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER worker2_t1 truth1_DM SET_CHAR_HEALTH worker2_t1 50 SET_FOLLOW_NODE_THRESHOLD_DISTANCE worker2_t1 100.0 CREATE_CHAR PEDTYPE_MISSION1 CWMYHB1 -1074.332 -1084.388 128.244 worker3_t1 //on road SET_CHAR_HEADING worker3_t1 60.659 TASK_PLAY_ANIM worker3_t1 ATM PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER worker3_t1 truth1_DM SET_CHAR_HEALTH worker3_t1 50 SET_FOLLOW_NODE_THRESHOLD_DISTANCE worker3_t1 100.0 CREATE_CHAR PEDTYPE_MISSION1 CWFYHB -1135.339 -1134.299 128.259 worker4_t1 SET_CHAR_HEADING worker4_t1 90.157 TASK_PLAY_ANIM worker4_t1 ATM PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER worker4_t1 truth1_DM SET_CHAR_HEALTH worker4_t1 50 SET_FOLLOW_NODE_THRESHOLD_DISTANCE worker4_t1 100.0 CREATE_CHAR PEDTYPE_MISSION1 CWMYHB1 -1121.739 -1095.64 128.247 worker5_t1 SET_CHAR_HEADING worker5_t1 94.64 TASK_PLAY_ANIM worker5_t1 ATM PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER worker5_t1 truth1_DM SET_CHAR_HEALTH worker5_t1 50 CREATE_CHAR PEDTYPE_MISSION1 CWFYHB -1121.713 -1084.165 128.247 worker6_t1 //on road SET_CHAR_HEADING worker6_t1 79.746 TASK_PLAY_ANIM worker6_t1 ATM PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER worker6_t1 truth1_DM SET_CHAR_HEALTH worker6_t1 50 SET_FOLLOW_NODE_THRESHOLD_DISTANCE worker6_t1 100.0 CREATE_CHAR PEDTYPE_MISSION1 CWMYHB1 -1159.367 -1134.375 128.259 worker7_t1 //on road SET_CHAR_HEADING worker7_t1 270.749 TASK_PLAY_ANIM worker7_t1 ATM PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER worker7_t1 truth1_DM SET_CHAR_HEALTH worker7_t1 50 SET_FOLLOW_NODE_THRESHOLD_DISTANCE worker7_t1 100.0 LOAD_SCENE -1049.08 -1268.08 127.81 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF CLEAR_PRINTS DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON PRINT_NOW TRU1_4 7000 1 //Get into the farm and steal the combine harvester. DELETE_CAR combine_t1 DELETE_CHAR combinedriver_t1 DELETE_CHAR tractordriver_t1 DELETE_CAR tractor_t1 CREATE_CAR COMBINE -1023.706 -933.357 129.292 combine_t1 SET_CAR_HEADING combine_t1 177.348 SET_CAR_STRAIGHT_LINE_DISTANCE combine_t1 20 CREATE_CHAR_INSIDE_CAR combine_t1 PEDTYPE_MISSION1 CWMOHB2 combinedriver_t1 SET_CHAR_DECISION_MAKER combinedriver_t1 truth1_DM SET_CHAR_ACCURACY combinedriver_t1 30 SET_CAR_HEALTH combine_t1 10350 ADD_BLIP_FOR_CAR combine_t1 combineblip_t1 SET_BLIP_AS_FRIENDLY combineblip_t1 TRUE SET_CAN_BURST_CAR_TYRES combine_t1 FALSE //chase tractors CREATE_CAR TRACTOR -1029.287 -1183.826 128.184 tractorchase1_t1 //this is the recorded car SET_CAR_HEADING tractorchase1_t1 90.725 CREATE_CHAR_INSIDE_CAR tractorchase1_t1 PEDTYPE_MISSION1 CWMYHB1 tractorchasedriver1_t1 SET_CHAR_DECISION_MAKER tractorchasedriver1_t1 truth1_DM GIVE_WEAPON_TO_CHAR tractorchasedriver1_t1 WEAPONTYPE_SHOVEL 1 SET_CHAR_ACCURACY tractorchasedriver1_t1 50 CREATE_CAR TRACTOR -1067.1282 -1153.5743 128.2188 tractorchase2_t1 //script controlled -> -1045.1467 -1152.7241 127.5258 275.8103 SET_CAR_HEADING tractorchase2_t1 272.1696 CREATE_CHAR_INSIDE_CAR tractorchase2_t1 PEDTYPE_MISSION1 CWFYHB tractorchasedriver2_t1 SET_CHAR_DECISION_MAKER tractorchasedriver2_t1 truth1_DM GIVE_WEAPON_TO_CHAR tractorchasedriver2_t1 WEAPONTYPE_SHOVEL 1 SET_CHAR_ACCURACY tractorchasedriver2_t1 50 triggeredaction_tflag = 1 IF NOT IS_CHAR_DEAD worker2_t1 GIVE_WEAPON_TO_CHAR worker2_t1 WEAPONTYPE_COUNTRYRIFLE 99999 ENDIF IF NOT IS_CHAR_DEAD worker4_t1 GIVE_WEAPON_TO_CHAR worker4_t1 WEAPONTYPE_SHOVEL 1 ENDIF IF NOT IS_CHAR_DEAD worker5_t1 GIVE_WEAPON_TO_CHAR worker5_t1 WEAPONTYPE_SHOVEL 1 ENDIF IF NOT IS_CHAR_DEAD worker3_t1 SET_CHAR_COORDINATES worker3_t1 -1070.71 -1126.36 128.23 SET_CHAR_HEADING worker3_t1 345.592 GIVE_WEAPON_TO_CHAR worker3_t1 WEAPONTYPE_COUNTRYRIFLE 99999 ENDIF IF NOT IS_CHAR_DEAD worker6_t1 SET_CHAR_COORDINATES worker6_t1 -1111.92 -1107.797 127.892 SET_CHAR_HEADING worker6_t1 212.87 GIVE_WEAPON_TO_CHAR worker6_t1 WEAPONTYPE_COUNTRYRIFLE 99999 ENDIF IF NOT IS_CHAR_DEAD worker7_t1 SET_CHAR_COORDINATES worker7_t1 -1154.72 -1116.097 127.27 SET_CHAR_HEADING worker7_t1 238.5 GIVE_WEAPON_TO_CHAR worker7_t1 WEAPONTYPE_COUNTRYRIFLE 99999 ENDIF CREATE_CHAR PEDTYPE_MISSION1 CWMYHB1 -1043.28 -1055.5 128.22 fieldguard1_t1 //bottom right SET_CHAR_HEADING fieldguard1_t1 175.56 GIVE_WEAPON_TO_CHAR fieldguard1_t1 WEAPONTYPE_COUNTRYRIFLE 99999 SET_CHAR_DECISION_MAKER fieldguard1_t1 truth1tough_DM SET_SENSE_RANGE fieldguard1_t1 80.0 CREATE_CHAR PEDTYPE_MISSION1 CWFYHB -1147.91 -1023.34 128.22 fieldguard2_t1 //bottom left GIVE_WEAPON_TO_CHAR fieldguard2_t1 WEAPONTYPE_SHOVEL 1 SET_CHAR_DECISION_MAKER fieldguard2_t1 truth1tough_DM SET_SENSE_RANGE fieldguard2_t1 80.0 CREATE_CHAR PEDTYPE_MISSION1 CWMOHB2 -1094.89 -999.528 128.21 fieldguard3_t1 //middle SET_CHAR_HEADING fieldguard3_t1 175.56 GIVE_WEAPON_TO_CHAR fieldguard3_t1 WEAPONTYPE_SHOVEL 1 SET_CHAR_ACCURACY fieldguard3_t1 50 SET_CHAR_DECISION_MAKER fieldguard3_t1 truth1tough_DM SET_SENSE_RANGE fieldguard3_t1 150.0 CREATE_CHAR PEDTYPE_MISSION1 CWMOHB2 -1181.3696 -992.4972 128.2188 fieldguard4_t1 //middle SET_CHAR_HEADING fieldguard4_t1 170.5759 GIVE_WEAPON_TO_CHAR fieldguard4_t1 WEAPONTYPE_COUNTRYRIFLE 1 SET_CHAR_ACCURACY fieldguard4_t1 50 SET_CHAR_DECISION_MAKER fieldguard4_t1 truth1tough_DM SET_SENSE_RANGE fieldguard4_t1 150.0 CREATE_CHAR PEDTYPE_MISSION1 CWMOHB2 -1008.9893 -998.6920 128.2188 fieldguard5_t1 //middle SET_CHAR_HEADING fieldguard5_t1 170.5759 GIVE_WEAPON_TO_CHAR fieldguard5_t1 WEAPONTYPE_SHOVEL 1 SET_CHAR_ACCURACY fieldguard5_t1 50 SET_CHAR_DECISION_MAKER fieldguard5_t1 truth1tough_DM SET_SENSE_RANGE fieldguard5_t1 150.0 CREATE_CHAR PEDTYPE_MISSION1 CWMOHB2 -1151.0012 -1011.5167 128.2188 fieldguard6_t1 //middle SET_CHAR_HEADING fieldguard6_t1 170.5759 GIVE_WEAPON_TO_CHAR fieldguard6_t1 WEAPONTYPE_COUNTRYRIFLE 1 SET_CHAR_ACCURACY fieldguard6_t1 50 SET_CHAR_DECISION_MAKER fieldguard6_t1 truth1tough_DM SET_SENSE_RANGE fieldguard6_t1 150.0 truth1_flag = 5 CHECKPOINT_SAVE 1 ENDIF ENDIF ENDIF IF triggeredaction_tflag = 1 ///////////////////////////////////////////// hassling farmer ////////////////////////////////////////////////// IF worker1_t1flag = 0 IF NOT IS_CHAR_DEAD worker1_t1 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D worker1_t1 scplayer 15.0 15.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR worker1_t1 scplayer OR IS_CHAR_IN_AREA_2D scplayer -1074.33 -1321.1 -1022.5 -1271.43 FALSE audio_t1flag = 1 TASK_KILL_CHAR_ON_FOOT worker1_t1 scplayer worker1_t1flag = 1 ENDIF ENDIF ENDIF ///////////////////////////////////////////// chasing tractors ////////////////////////////////////////////// IF IS_CHAR_IN_AREA_2D scplayer -1096.488 -1170.56 -1032.682 -1249.599 FALSE IF tractorchase1_t1flag = 0 IF NOT IS_CAR_DEAD tractorchase1_t1 IF NOT IS_CHAR_DEAD tractorchasedriver1_t1 IF IS_CHAR_SITTING_IN_CAR tractorchasedriver1_t1 tractorchase1_t1 START_PLAYBACK_RECORDED_CAR tractorchase1_t1 348 tractorchase1_t1flag = 1 ENDIF ENDIF ENDIF ENDIF IF tractorchase2_t1flag = 0 IF NOT IS_CAR_DEAD tractorchase2_t1 IF NOT IS_CHAR_DEAD tractorchasedriver2_t1 IF IS_CHAR_SITTING_IN_CAR tractorchasedriver2_t1 tractorchase2_t1 SET_CAR_FORWARD_SPEED tractorchase2_t1 12.0 TASK_CAR_DRIVE_TO_COORD tractorchasedriver2_t1 tractorchase2_t1 -1045.1467 -1152.7241 127.5258 20.0 MODE_NORMAL FALSE DRIVINGMODE_STOPFORCARS tractorchase2_t1flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF tractorchase1_t1flag = 1 IF NOT IS_CAR_DEAD tractorchase1_t1 IF NOT IS_CHAR_DEAD tractorchasedriver1_t1 IF IS_CHAR_SITTING_IN_CAR tractorchasedriver1_t1 tractorchase1_t1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR tractorchase1_t1 audio_t1flag = 8 enemy_t1 = tractorchasedriver1_t1 enemycar_t1 = tractorchase1_t1 GOSUB chase_t1label tractorchase1_t1flag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF IF tractorchase2_t1flag = 1 IF NOT IS_CAR_DEAD tractorchase2_t1 IF NOT IS_CHAR_DEAD tractorchasedriver2_t1 IF IS_CHAR_SITTING_IN_CAR tractorchasedriver2_t1 tractorchase2_t1 IF LOCATE_CAR_2D tractorchase2_t1 -1045.1467 -1152.7241 6.0 6.0 FALSE enemy_t1 = tractorchasedriver2_t1 enemycar_t1 = tractorchase2_t1 GOSUB chase_t1label tractorchase2_t1flag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF ///////////////////////////////////////////// chasing tractor AI ///////////////////////////////////////////// IF tractorchase1_t1flag = 2 IF NOT IS_CAR_DEAD tractorchase1_t1 IF NOT IS_CHAR_DEAD tractorchasedriver1_t1 IF IS_CHAR_SITTING_IN_CAR tractorchasedriver1_t1 tractorchase1_t1 IF IS_CHAR_TOUCHING_CHAR tractorchasedriver1_t1 scplayer TASK_CAR_TEMP_ACTION tractorchasedriver1_t1 tractorchase1_t1 TEMPACT_REVERSE 3000 tractorchase1_t1flag = 3 ENDIF ENDIF ENDIF ENDIF ENDIF IF tractorchase1_t1flag = 3 IF NOT IS_CAR_DEAD tractorchase1_t1 IF NOT IS_CHAR_DEAD tractorchasedriver1_t1 IF IS_CHAR_SITTING_IN_CAR tractorchasedriver1_t1 tractorchase1_t1 GET_SCRIPT_TASK_STATUS tractorchasedriver1_t1 TASK_CAR_TEMP_ACTION sequencetask_t1 IF sequencetask_t1 = FINISHED_TASK enemy_t1 = tractorchasedriver1_t1 enemycar_t1 = tractorchase1_t1 GOSUB chase_t1label tractorchase1_t1flag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF IF tractorchase2_t1flag = 2 IF NOT IS_CAR_DEAD tractorchase2_t1 IF NOT IS_CHAR_DEAD tractorchasedriver2_t1 IF IS_CHAR_SITTING_IN_CAR tractorchasedriver2_t1 tractorchase2_t1 IF IS_CHAR_TOUCHING_CHAR tractorchasedriver2_t1 scplayer TASK_CAR_TEMP_ACTION tractorchasedriver2_t1 tractorchase2_t1 TEMPACT_REVERSE 3000 tractorchase2_t1flag = 3 ENDIF ENDIF ENDIF ENDIF ENDIF IF tractorchase2_t1flag = 3 IF NOT IS_CAR_DEAD tractorchase2_t1 IF NOT IS_CHAR_DEAD tractorchasedriver2_t1 IF IS_CHAR_SITTING_IN_CAR tractorchasedriver2_t1 tractorchase2_t1 GET_SCRIPT_TASK_STATUS tractorchasedriver2_t1 TASK_CAR_TEMP_ACTION sequencetask_t1 IF sequencetask_t1 = FINISHED_TASK enemy_t1 = tractorchasedriver2_t1 enemycar_t1 = tractorchase2_t1 GOSUB chase_t1label tractorchase2_t1flag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF ///////////////////////////////////////////// chasing farmers ////////////////////////////////////////////// IF farmerchase1_t1flag = 0 IF IS_CHAR_IN_AREA_2D scplayer -1033.47 -1067.18 -1202.46 -1149.65 FALSE IF IS_CHAR_SHOOTING scplayer farmerchase1_t1flag = 1 ENDIF IF IS_PLAYER_TARGETTING_ANYTHING PLAYER1 farmerchase1_t1flag = 1 ENDIF ENDIF IF IS_CHAR_IN_AREA_2D scplayer -1033.47 -1067.18 -1202.46 -1149.65 FALSE //-1063.7 -1064.75 -1202.46 -1149.65 farmerchase1_t1flag = 1 ENDIF IF DOES_CHAR_EXIST worker2_t1 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR worker2_t1 scplayer farmerchase1_t1flag = 1 ENDIF ENDIF IF DOES_CHAR_EXIST worker2_t1 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR worker2_t1 scplayer farmerchase1_t1flag = 1 ENDIF ENDIF IF DOES_CHAR_EXIST worker3_t1 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR worker3_t1 scplayer farmerchase1_t1flag = 1 ENDIF ENDIF IF DOES_CHAR_EXIST worker4_t1 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR worker4_t1 scplayer farmerchase1_t1flag = 1 ENDIF ENDIF IF DOES_CHAR_EXIST worker5_t1 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR worker5_t1 scplayer farmerchase1_t1flag = 1 ENDIF ENDIF IF DOES_CHAR_EXIST worker6_t1 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR worker6_t1 scplayer farmerchase1_t1flag = 1 ENDIF ENDIF IF DOES_CHAR_EXIST worker7_t1 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR worker7_t1 scplayer farmerchase1_t1flag = 1 ENDIF ENDIF ENDIF IF farmerchase1_t1flag = 1 audio_t1flag = 12 IF NOT IS_CHAR_DEAD worker2_t1 TASK_KILL_CHAR_ON_FOOT worker2_t1 scplayer ENDIF IF NOT IS_CHAR_DEAD worker3_t1 TASK_KILL_CHAR_ON_FOOT worker3_t1 scplayer SET_CHAR_ACCURACY worker3_t1 50 ENDIF IF NOT IS_CHAR_DEAD worker4_t1 TASK_KILL_CHAR_ON_FOOT worker4_t1 scplayer ENDIF IF NOT IS_CHAR_DEAD worker5_t1 TASK_KILL_CHAR_ON_FOOT worker5_t1 scplayer ENDIF IF NOT IS_CHAR_DEAD worker6_t1 TASK_KILL_CHAR_ON_FOOT worker6_t1 scplayer SET_CHAR_ACCURACY worker6_t1 60 ENDIF IF NOT IS_CHAR_DEAD worker7_t1 TASK_KILL_CHAR_ON_FOOT worker7_t1 scplayer SET_CHAR_ACCURACY worker7_t1 70 ENDIF farmerchase1_t1flag = 2 ENDIF //////////////////////////////////////// combine harvester driver ////////////////////////////////////////// IF combinedriverattack_t1flag = 0 IF NOT IS_CHAR_DEAD combinedriver_t1 IF NOT IS_CAR_DEAD combine_t1 IF IS_CHAR_SITTING_IN_CAR combinedriver_t1 combine_t1 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS combinedriver_t1 0.0 10.0 0.0 player_x player_y player_z IF LOCATE_STOPPED_CHAR_ANY_MEANS_2D scplayer player_x player_y 12.0 12.0 FALSE OR LOCATE_CHAR_ANY_MEANS_2D scplayer player_x player_y 12.0 12.0 FALSE GIVE_WEAPON_TO_CHAR combinedriver_t1 WEAPONTYPE_COUNTRYRIFLE 50 SET_CHAR_ACCURACY combinedriver_t1 20 TASK_KILL_CHAR_ON_FOOT combinedriver_t1 scplayer audio_t1flag = 23 combinedriverattack_t1flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////// combine harvester movement ////////////////////////////////////////// IF truth1_flag > 4 IF combinedriver_t1flag = 0 IF combinedriverattack_t1flag = 0 IF NOT IS_CHAR_DEAD combinedriver_t1 IF NOT IS_CAR_DEAD combine_t1 IF IS_CHAR_SITTING_IN_CAR combinedriver_t1 combine_t1 GOSUB combine_t1label combinedriver_t1flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF combinedriver_t1flag = 1 IF NOT IS_CHAR_DEAD combinedriver_t1 IF NOT IS_CAR_DEAD combine_t1 IF IS_CHAR_SITTING_IN_CAR combinedriver_t1 combine_t1 IF LOCATE_CAR_2D combine_t1 -1031.46 -935.51 10.0 10.0 FALSE combinedriver_t1flag = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF combinedriver_t1flag >= 0 IF NOT IS_CAR_DEAD combine_t1 IF IS_CAR_IN_AREA_2D combine_t1 -1201.518 -926.777 -1016.98 -1052.652 FALSE GET_DRIVER_OF_CAR combine_t1 driver_t1 IF NOT driver_t1 = -1 IF createbail_t1flag = 100 CREATE_OBJECT KMB_MARIJUANA 1.1 2.2 3.3 bail1_t1 //fool compiler CREATE_OBJECT KMB_MARIJUANA 1.1 2.2 3.3 bail2_t1 //fool compiler CREATE_OBJECT KMB_MARIJUANA 1.1 2.2 3.3 bail3_t1 //fool compiler CREATE_OBJECT KMB_MARIJUANA 1.1 2.2 3.3 bail4_t1 //fool compiler CREATE_OBJECT KMB_MARIJUANA 1.1 2.2 3.3 bail5_t1 //fool compiler CREATE_OBJECT KMB_MARIJUANA 1.1 2.2 3.3 bail6_t1 //fool compiler ENDIF IF createbail_t1flag = 0 IF TIMERA > 1250 IF DOES_OBJECT_EXIST bail1_t1 DELETE_OBJECT bail1_t1 ENDIF GET_OFFSET_FROM_CAR_IN_WORLD_COORDS combine_t1 -1.3 -3.3.9 1.3 pipex_t1 pipey_t1 pipez_t1 CREATE_OBJECT KMB_MARIJUANA pipex_t1 pipey_t1 pipez_t1 bail1_t1 SET_OBJECT_DYNAMIC bail1_t1 TRUE SET_OBJECT_VELOCITY bail1_t1 0.0 0.0 -1.0 ROTATE_OBJECT bail1_t1 68.0 10.0 FALSE SORT_OUT_OBJECT_COLLISION_WITH_CAR bail1_t1 combine_t1 TIMERA = 0 createbail_t1flag = 1 ENDIF ENDIF IF createbail_t1flag = 1 IF TIMERA > 2250 IF DOES_OBJECT_EXIST bail2_t1 DELETE_OBJECT bail2_t1 ENDIF GET_OFFSET_FROM_CAR_IN_WORLD_COORDS combine_t1 -1.3 -3.3 1.3 pipex_t1 pipey_t1 pipez_t1 CREATE_OBJECT KMB_MARIJUANA pipex_t1 pipey_t1 pipez_t1 bail2_t1 SET_OBJECT_DYNAMIC bail2_t1 TRUE SET_OBJECT_VELOCITY bail2_t1 0.0 0.0 -1.0 ROTATE_OBJECT bail2_t1 73.0 10.0 FALSE SORT_OUT_OBJECT_COLLISION_WITH_CAR bail2_t1 combine_t1 createbail_t1flag = 2 ENDIF ENDIF IF createbail_t1flag = 2 IF TIMERA > 4250 IF DOES_OBJECT_EXIST bail3_t1 DELETE_OBJECT bail3_t1 ENDIF GET_OFFSET_FROM_CAR_IN_WORLD_COORDS combine_t1 -1.3 -3.3 1.3 pipex_t1 pipey_t1 pipez_t1 CREATE_OBJECT KMB_MARIJUANA pipex_t1 pipey_t1 pipez_t1 bail3_t1 SET_OBJECT_DYNAMIC bail3_t1 TRUE SET_OBJECT_VELOCITY bail3_t1 0.0 0.0 -1.0 ROTATE_OBJECT bail3_t1 90.0 10.0 FALSE SORT_OUT_OBJECT_COLLISION_WITH_CAR bail3_t1 combine_t1 createbail_t1flag = 3 ENDIF ENDIF IF createbail_t1flag = 3 IF TIMERA > 6250 IF DOES_OBJECT_EXIST bail4_t1 DELETE_OBJECT bail4_t1 ENDIF GET_OFFSET_FROM_CAR_IN_WORLD_COORDS combine_t1 -1.3 -3.3 1.3 pipex_t1 pipey_t1 pipez_t1 CREATE_OBJECT KMB_MARIJUANA pipex_t1 pipey_t1 pipez_t1 bail4_t1 SET_OBJECT_DYNAMIC bail4_t1 TRUE SET_OBJECT_VELOCITY bail4_t1 0.0 0.0 -1.0 ROTATE_OBJECT bail4_t1 180.0 10.0 FALSE SORT_OUT_OBJECT_COLLISION_WITH_CAR bail4_t1 combine_t1 createbail_t1flag = 4 ENDIF ENDIF IF createbail_t1flag = 4 IF TIMERA > 8250 IF DOES_OBJECT_EXIST bail5_t1 DELETE_OBJECT bail5_t1 ENDIF GET_OFFSET_FROM_CAR_IN_WORLD_COORDS combine_t1 -1.3 -3.3 1.3 pipex_t1 pipey_t1 pipez_t1 CREATE_OBJECT KMB_MARIJUANA pipex_t1 pipey_t1 pipez_t1 bail5_t1 SET_OBJECT_DYNAMIC bail5_t1 TRUE SET_OBJECT_VELOCITY bail5_t1 0.0 0.0 -1.0 ROTATE_OBJECT bail5_t1 80.0 10.0 FALSE SORT_OUT_OBJECT_COLLISION_WITH_CAR bail5_t1 combine_t1 createbail_t1flag = 5 ENDIF ENDIF IF createbail_t1flag = 5 IF TIMERA > 10250 IF DOES_OBJECT_EXIST bail6_t1 DELETE_OBJECT bail6_t1 ENDIF GET_OFFSET_FROM_CAR_IN_WORLD_COORDS combine_t1 -1.3 -3.3 1.3 pipex_t1 pipey_t1 pipez_t1 CREATE_OBJECT KMB_MARIJUANA pipex_t1 pipey_t1 pipez_t1 bail6_t1 SET_OBJECT_DYNAMIC bail6_t1 TRUE SET_OBJECT_VELOCITY bail6_t1 0.0 0.0 -1.0 ROTATE_OBJECT bail6_t1 180.0 10.0 FALSE SORT_OUT_OBJECT_COLLISION_WITH_CAR bail6_t1 combine_t1 TIMERA = 0 createbail_t1flag = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////// Create guys for the chase on the way back /////////////////////////////////////// IF createguyswayback_t1flag = 0 IF playerincombine_t1flag = 1 DELETE_CHAR worker1_t1 DELETE_CHAR worker2_t1 DELETE_CHAR worker3_t1 DELETE_CHAR worker4_t1 DELETE_CHAR worker5_t1 OPEN_SEQUENCE_TASK attackcombine_t1seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK attackcombine_t1seq CREATE_CHAR PEDTYPE_MISSION1 CWMOHB2 -1205.8123 -1092.7255 127.2578 chaser1_t1 SET_CHAR_HEADING chaser1_t1 359.4852 GIVE_WEAPON_TO_CHAR chaser1_t1 WEAPONTYPE_COUNTRYRIFLE 9999 SET_CHAR_DECISION_MAKER chaser1_t1 truth1_DM SET_CHAR_HEALTH chaser1_t1 50 PERFORM_SEQUENCE_TASK chaser1_t1 attackcombine_t1seq CREATE_CHAR PEDTYPE_MISSION1 CWMYHB1 -1205.8123 -1090.7255 127.2578 chaser2_t1 SET_CHAR_HEADING chaser2_t1 359.4852 GIVE_WEAPON_TO_CHAR chaser2_t1 WEAPONTYPE_COUNTRYRIFLE 9999 SET_CHAR_DECISION_MAKER chaser2_t1 truth1_DM SET_CHAR_HEALTH chaser2_t1 50 PERFORM_SEQUENCE_TASK chaser2_t1 attackcombine_t1seq CREATE_CHAR PEDTYPE_MISSION1 CWFYHB -1181.8000 -1116.7347 127.2578 chaser3_t1 SET_CHAR_HEADING chaser3_t1 79.3899 GIVE_WEAPON_TO_CHAR chaser3_t1 WEAPONTYPE_COUNTRYRIFLE 9999 SET_CHAR_DECISION_MAKER chaser3_t1 truth1_DM SET_CHAR_HEALTH chaser3_t1 50 PERFORM_SEQUENCE_TASK chaser3_t1 attackcombine_t1seq CREATE_CHAR PEDTYPE_MISSION1 CWMOHB2 -1211.4215 -1090.9771 127.2578 chaser4_t1 SET_CHAR_HEADING chaser4_t1 2.4516 GIVE_WEAPON_TO_CHAR chaser4_t1 WEAPONTYPE_COUNTRYRIFLE 9999 SET_CHAR_DECISION_MAKER chaser4_t1 truth1_DM SET_CHAR_HEALTH chaser4_t1 50 PERFORM_SEQUENCE_TASK chaser4_t1 attackcombine_t1seq CREATE_CHAR PEDTYPE_MISSION1 CWMYHB1 -1179.2832 -1113.8230 127.2578 chaser5_t1 SET_CHAR_HEADING chaser5_t1 74.1823 GIVE_WEAPON_TO_CHAR chaser5_t1 WEAPONTYPE_COUNTRYRIFLE 9999 SET_CHAR_DECISION_MAKER chaser5_t1 truth1_DM SET_CHAR_HEALTH chaser5_t1 50 PERFORM_SEQUENCE_TASK chaser5_t1 attackcombine_t1seq CREATE_CHAR PEDTYPE_MISSION1 CWFYHB -1145.6510 -1111.6699 127.2595 chaser6_t1 //-1113.777 1108.22 128.22 SET_CHAR_HEADING chaser6_t1 90.0989 GIVE_WEAPON_TO_CHAR chaser6_t1 WEAPONTYPE_COUNTRYRIFLE 9999 SET_CHAR_DECISION_MAKER chaser6_t1 truth1_DM SET_CHAR_HEALTH chaser6_t1 50 PERFORM_SEQUENCE_TASK chaser6_t1 attackcombine_t1seq CREATE_CHAR PEDTYPE_MISSION1 CWMYHB1 -1146.6011 -1114.9557 127.2595 chaser7_t1 //-1055.94 -1120.62 128.56 SET_CHAR_HEADING chaser7_t1 102.0699 GIVE_WEAPON_TO_CHAR chaser7_t1 WEAPONTYPE_COUNTRYRIFLE 9999 SET_CHAR_DECISION_MAKER chaser7_t1 truth1_DM SET_CHAR_HEALTH chaser7_t1 50 PERFORM_SEQUENCE_TASK chaser7_t1 attackcombine_t1seq CREATE_CHAR PEDTYPE_MISSION1 CWMOHB2 -1051.4973 -1133.6509 127.2669 chaser8_t1 SET_CHAR_HEADING chaser8_t1 10.9064 GIVE_WEAPON_TO_CHAR chaser8_t1 WEAPONTYPE_COUNTRYRIFLE 9999 SET_CHAR_DECISION_MAKER chaser8_t1 truth1_DM SET_CHAR_HEALTH chaser8_t1 50 PERFORM_SEQUENCE_TASK chaser8_t1 attackcombine_t1seq CREATE_CHAR PEDTYPE_MISSION1 CWFYHB -1048.5880 -1131.9415 127.2595 chaser9_t1 SET_CHAR_HEADING chaser9_t1 57.544 GIVE_WEAPON_TO_CHAR chaser9_t1 WEAPONTYPE_COUNTRYRIFLE 9999 SET_CHAR_DECISION_MAKER chaser9_t1 truth1_DM SET_CHAR_HEALTH chaser9_t1 50 PERFORM_SEQUENCE_TASK chaser9_t1 attackcombine_t1seq CREATE_CHAR PEDTYPE_MISSION1 CWMYHB1 -1118.8184 -1116.1959 127.2595 chaser10_t1 SET_CHAR_HEADING chaser10_t1 90.5502 GIVE_WEAPON_TO_CHAR chaser10_t1 WEAPONTYPE_COUNTRYRIFLE 9999 SET_CHAR_DECISION_MAKER chaser10_t1 truth1_DM SET_CHAR_HEALTH chaser10_t1 50 PERFORM_SEQUENCE_TASK chaser10_t1 attackcombine_t1seq CREATE_CHAR PEDTYPE_MISSION1 CWMYHB1 -1120.9978 -1112.7286 127.2595 chaser11_t1 SET_CHAR_HEADING chaser11_t1 57.544 GIVE_WEAPON_TO_CHAR chaser11_t1 WEAPONTYPE_COUNTRYRIFLE 9999 SET_CHAR_DECISION_MAKER chaser11_t1 truth1_DM SET_CHAR_HEALTH chaser11_t1 50 PERFORM_SEQUENCE_TASK chaser11_t1 attackcombine_t1seq CREATE_CHAR PEDTYPE_MISSION1 CWMOHB2 -1115.5956 -1115.5242 127.2595 chaser12_t1 SET_CHAR_HEADING chaser12_t1 57.544 GIVE_WEAPON_TO_CHAR chaser12_t1 WEAPONTYPE_COUNTRYRIFLE 9999 SET_CHAR_DECISION_MAKER chaser12_t1 truth1_DM SET_CHAR_HEALTH chaser12_t1 50 PERFORM_SEQUENCE_TASK chaser12_t1 attackcombine_t1seq CREATE_CHAR PEDTYPE_MISSION1 CWMOHB2 -1117.8945 -1111.2660 127.2595 chaser13_t1 SET_CHAR_HEADING chaser13_t1 57.544 GIVE_WEAPON_TO_CHAR chaser13_t1 WEAPONTYPE_COUNTRYRIFLE 9999 SET_CHAR_DECISION_MAKER chaser13_t1 truth1_DM SET_CHAR_HEALTH chaser13_t1 50 PERFORM_SEQUENCE_TASK chaser13_t1 attackcombine_t1seq CLEAR_SEQUENCE_TASK attackcombine_t1seq createguyswayback_t1flag = 1 ENDIF ENDIF IF createguyswayback_t1flag = 1 IF NOT IS_CAR_DEAD combine_t1 IF chaser1_t1flag = 0 IF LOCATE_CAR_2D combine_t1 -1205.8123 -1090.7255 20.0 20.0 FALSE OPEN_SEQUENCE_TASK escapecombine_t1seq TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_SMART_FLEE_CHAR -1 scplayer 30.0 30000 CLOSE_SEQUENCE_TASK escapecombine_t1seq IF NOT IS_CHAR_DEAD chaser1_t1 PERFORM_SEQUENCE_TASK chaser1_t1 escapecombine_t1seq ENDIF IF NOT IS_CHAR_DEAD chaser2_t1 PERFORM_SEQUENCE_TASK chaser2_t1 escapecombine_t1seq ENDIF audio_t1flag = 28 CLEAR_SEQUENCE_TASK escapecombine_t1seq chaser1_t1flag = 1 ENDIF ENDIF IF chaser2_t1flag = 0 IF LOCATE_CAR_2D combine_t1 -1181.8000 -1116.7347 20.0 20.0 FALSE OPEN_SEQUENCE_TASK escapecombine_t1seq TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_SMART_FLEE_CHAR -1 scplayer 30.0 30000 CLOSE_SEQUENCE_TASK escapecombine_t1seq IF NOT IS_CHAR_DEAD chaser3_t1 PERFORM_SEQUENCE_TASK chaser3_t1 escapecombine_t1seq ENDIF IF NOT IS_CHAR_DEAD chaser5_t1 PERFORM_SEQUENCE_TASK chaser5_t1 escapecombine_t1seq ENDIF CLEAR_SEQUENCE_TASK escapecombine_t1seq chaser2_t1flag = 1 ENDIF ENDIF IF chaser3_t1flag = 0 IF LOCATE_CAR_2D combine_t1 -1211.4215 -1090.9771 25.0 25.0 FALSE OPEN_SEQUENCE_TASK escapecombine_t1seq TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_SMART_FLEE_CHAR -1 scplayer 30.0 30000 CLOSE_SEQUENCE_TASK escapecombine_t1seq IF NOT IS_CHAR_DEAD chaser4_t1 PERFORM_SEQUENCE_TASK chaser4_t1 escapecombine_t1seq ENDIF CLEAR_SEQUENCE_TASK escapecombine_t1seq chaser3_t1flag = 1 ENDIF ENDIF IF chaser4_t1flag = 0 IF LOCATE_CAR_2D combine_t1 -1145.6510 -1111.6699 20.0 20.0 FALSE IF NOT IS_CHAR_DEAD chaser6_t1 enemy_t1 = chaser6_t1 enemyx_t1 = -1113.777 enemyy_t1 = 1128.22 enemyz_t1 = 128.22 GOSUB runfromcombine_t1lable ENDIF IF NOT IS_CHAR_DEAD chaser7_t1 enemy_t1 = chaser7_t1 enemyx_t1 = -1055.94 enemyy_t1 = -1120.62 enemyz_t1 = 128.56 GOSUB runfromcombine_t1lable ENDIF chaser4_t1flag = 1 ENDIF ENDIF IF chaser5_t1flag = 0 IF IS_CAR_IN_AREA_2D combine_t1 -1224.06 -1135.61 -999.06 -1063.3 FALSE OPEN_SEQUENCE_TASK escapecombine_t1seq TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_SMART_FLEE_CHAR -1 scplayer 30.0 30000 CLOSE_SEQUENCE_TASK escapecombine_t1seq IF NOT IS_CHAR_DEAD chaser10_t1 PERFORM_SEQUENCE_TASK chaser10_t1 escapecombine_t1seq ENDIF IF NOT IS_CHAR_DEAD chaser11_t1 PERFORM_SEQUENCE_TASK chaser11_t1 escapecombine_t1seq ENDIF IF NOT IS_CHAR_DEAD chaser12_t1 PERFORM_SEQUENCE_TASK chaser12_t1 escapecombine_t1seq ENDIF IF NOT IS_CHAR_DEAD chaser13_t1 PERFORM_SEQUENCE_TASK chaser13_t1 escapecombine_t1seq ENDIF CLEAR_SEQUENCE_TASK escapecombine_t1seq createguyswayback2_t1flag = 1 chaser5_t1flag = 1 ENDIF ENDIF ENDIF ENDIF //second group of guys IF createguyswayback2_t1flag = 1 IF NOT IS_CHAR_DEAD worker6_t1 IF NOT IS_CHAR_ON_SCREEN worker6_t1 DELETE_CHAR worker6_t1 ENDIF ENDIF IF NOT IS_CHAR_DEAD worker7_t1 IF NOT IS_CHAR_ON_SCREEN worker7_t1 DELETE_CHAR worker7_t1 ENDIF ENDIF IF NOT IS_CHAR_DEAD worker1_t1 IF NOT IS_CHAR_ON_SCREEN worker1_t1 DELETE_CHAR chaser1_t1 ENDIF ENDIF IF NOT IS_CHAR_DEAD worker2_t1 IF NOT IS_CHAR_ON_SCREEN worker2_t1 DELETE_CHAR chaser2_t1 ENDIF ENDIF IF NOT IS_CHAR_DEAD worker3_t1 IF NOT IS_CHAR_ON_SCREEN worker3_t1 DELETE_CHAR chaser3_t1 ENDIF ENDIF IF NOT IS_CHAR_DEAD worker4_t1 IF NOT IS_CHAR_ON_SCREEN worker4_t1 DELETE_CHAR chaser4_t1 ENDIF ENDIF OPEN_SEQUENCE_TASK attackcombine_t1seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK attackcombine_t1seq CREATE_CHAR PEDTYPE_MISSION1 CWMYHB1 -1050.9415 -1171.5502 127.4132 chaser14_t1 SET_CHAR_HEADING chaser14_t1 57.544 GIVE_WEAPON_TO_CHAR chaser14_t1 WEAPONTYPE_COUNTRYRIFLE 9999 SET_CHAR_DECISION_MAKER chaser14_t1 truth1_DM SET_CHAR_HEALTH chaser14_t1 50 PERFORM_SEQUENCE_TASK chaser14_t1 attackcombine_t1seq CREATE_CHAR PEDTYPE_MISSION1 CWMOHB2 -1048.3793 -1172.3512 127.4308 chaser15_t1 SET_CHAR_HEADING chaser15_t1 57.544 GIVE_WEAPON_TO_CHAR chaser15_t1 WEAPONTYPE_COUNTRYRIFLE 9999 SET_CHAR_DECISION_MAKER chaser15_t1 truth1_DM SET_CHAR_HEALTH chaser15_t1 50 PERFORM_SEQUENCE_TASK chaser15_t1 attackcombine_t1seq CREATE_CHAR PEDTYPE_MISSION1 CWMYHB1 -1047.9266 -1177.5592 127.5070 chaser16_t1 SET_CHAR_HEADING chaser16_t1 57.544 GIVE_WEAPON_TO_CHAR chaser16_t1 WEAPONTYPE_COUNTRYRIFLE 9999 SET_CHAR_DECISION_MAKER chaser16_t1 truth1_DM SET_CHAR_HEALTH chaser16_t1 50 PERFORM_SEQUENCE_TASK chaser16_t1 attackcombine_t1seq CREATE_CHAR PEDTYPE_MISSION1 CWFYHB -1051.1592 -1180.1293 127.5367 chaser17_t1 SET_CHAR_HEADING chaser17_t1 57.544 GIVE_WEAPON_TO_CHAR chaser17_t1 WEAPONTYPE_COUNTRYRIFLE 9999 SET_CHAR_DECISION_MAKER chaser17_t1 truth1_DM SET_CHAR_HEALTH chaser17_t1 50 PERFORM_SEQUENCE_TASK chaser17_t1 attackcombine_t1seq CUSTOM_PLATE_FOR_NEXT_CAR WALTON &__HOM__ CREATE_CAR WALTON -1049.0 -1296.0 128.3 walton1_t1 SET_CAR_HEADING walton1_t1 277.3820 CREATE_CHAR PEDTYPE_MISSION1 CWMYHB1 -1049.1896 -1291.9401 127.7206 chaser18_t1 SET_CHAR_HEADING chaser18_t1 57.544 GIVE_WEAPON_TO_CHAR chaser18_t1 WEAPONTYPE_COUNTRYRIFLE 9999 SET_CHAR_DECISION_MAKER chaser18_t1 truth1_DM SET_CHAR_HEALTH chaser18_t1 50 PERFORM_SEQUENCE_TASK chaser18_t1 attackcombine_t1seq CUSTOM_PLATE_FOR_NEXT_CAR WALTON &__HOM__ CREATE_CAR WALTON -1154.086 -1339.716 126.61 walton2_t1 //-1166.521 -1333.421 125.99 SET_CAR_HEADING walton2_t1 272.428 CREATE_CHAR_INSIDE_CAR walton2_t1 PEDTYPE_MISSION1 CWFYHB chaser20_t1 CREATE_CHAR PEDTYPE_MISSION1 CWMYHB1 -1049.1896 -1295.9401 0.0 chaser19_t1 SET_CHAR_DECISION_MAKER chaser19_t1 truth1_DM ATTACH_CHAR_TO_CAR chaser19_t1 walton2_t1 0.0 -1.0 0.9 FACING_FORWARD 360.0 WEAPONTYPE_COUNTRYRIFLE TASK_STAY_IN_SAME_PLACE chaser19_t1 TRUE CLEAR_SEQUENCE_TASK attackcombine_t1seq createguyswayback2_t1flag = 2 ENDIF IF createguyswayback2_t1flag = 2 IF NOT IS_CAR_DEAD combine_t1 IF LOCATE_CAR_2D combine_t1 -1050.9415 -1171.5502 15.0 15.0 FALSE OPEN_SEQUENCE_TASK escapecombine_t1seq TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_SMART_FLEE_CHAR -1 scplayer 30.0 30000 CLOSE_SEQUENCE_TASK escapecombine_t1seq IF NOT IS_CHAR_DEAD chaser14_t1 PERFORM_SEQUENCE_TASK chaser14_t1 escapecombine_t1seq ENDIF IF NOT IS_CHAR_DEAD chaser15_t1 PERFORM_SEQUENCE_TASK chaser15_t1 escapecombine_t1seq ENDIF IF NOT IS_CHAR_DEAD chaser16_t1 PERFORM_SEQUENCE_TASK chaser16_t1 escapecombine_t1seq ENDIF IF NOT IS_CHAR_DEAD chaser17_t1 PERFORM_SEQUENCE_TASK chaser17_t1 escapecombine_t1seq ENDIF CLEAR_SEQUENCE_TASK escapecombine_t1seq createguyswayback2_t1flag = 3 ENDIF ENDIF ENDIF IF createguyswayback2_t1flag > 1 IF walton2_t1flag = 0 IF IS_CHAR_IN_AREA_2D scplayer -974.32 -1287.37 -1129.14 -1330.41 FALSE IF NOT IS_CAR_DEAD walton2_t1 IF NOT IS_CHAR_DEAD chaser20_t1 SET_CAR_FORWARD_SPEED walton2_t1 30.0 IF NOT IS_CHAR_DEAD chaser19_t1 TASK_KILL_CHAR_ON_FOOT chaser19_t1 scplayer ENDIF TASK_CAR_MISSION chaser20_t1 walton2_t1 walton2_t1 MISSION_BLOCKPLAYER_FARAWAY 30.0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF audio_t1flag = 100 MARK_MODEL_AS_NO_LONGER_NEEDED KMB_MARIJUANA MARK_MODEL_AS_NO_LONGER_NEEDED sw_haybreak02 MARK_OBJECT_AS_NO_LONGER_NEEDED haystack1_t1 MARK_OBJECT_AS_NO_LONGER_NEEDED haystack2_t1 MARK_OBJECT_AS_NO_LONGER_NEEDED haystack3_t1 MARK_OBJECT_AS_NO_LONGER_NEEDED haystack4_t1 MARK_OBJECT_AS_NO_LONGER_NEEDED haystack5_t1 MARK_OBJECT_AS_NO_LONGER_NEEDED haystack6_t1 MARK_OBJECT_AS_NO_LONGER_NEEDED haystack7_t1 MARK_OBJECT_AS_NO_LONGER_NEEDED bail1_t1 MARK_OBJECT_AS_NO_LONGER_NEEDED bail2_t1 MARK_OBJECT_AS_NO_LONGER_NEEDED bail3_t1 MARK_OBJECT_AS_NO_LONGER_NEEDED bail4_t1 MARK_OBJECT_AS_NO_LONGER_NEEDED bail5_t1 MARK_OBJECT_AS_NO_LONGER_NEEDED bail6_t1 MARK_CHAR_AS_NO_LONGER_NEEDED chaser1_t1 MARK_CHAR_AS_NO_LONGER_NEEDED chaser2_t1 MARK_CHAR_AS_NO_LONGER_NEEDED chaser3_t1 MARK_CHAR_AS_NO_LONGER_NEEDED chaser4_t1 MARK_CHAR_AS_NO_LONGER_NEEDED chaser5_t1 MARK_CHAR_AS_NO_LONGER_NEEDED chaser6_t1 MARK_CHAR_AS_NO_LONGER_NEEDED chaser7_t1 MARK_CHAR_AS_NO_LONGER_NEEDED chaser8_t1 MARK_CHAR_AS_NO_LONGER_NEEDED chaser9_t1 MARK_CHAR_AS_NO_LONGER_NEEDED chaser10_t1 MARK_CHAR_AS_NO_LONGER_NEEDED chaser11_t1 MARK_CHAR_AS_NO_LONGER_NEEDED chaser12_t1 MARK_CHAR_AS_NO_LONGER_NEEDED chaser13_t1 MARK_CAR_AS_NO_LONGER_NEEDED tractorforplayer_t1 MARK_CHAR_AS_NO_LONGER_NEEDED fieldguard1_t1 MARK_CHAR_AS_NO_LONGER_NEEDED fieldguard2_t1 MARK_CHAR_AS_NO_LONGER_NEEDED fieldguard3_t1 MARK_CHAR_AS_NO_LONGER_NEEDED fieldguard4_t1 MARK_CHAR_AS_NO_LONGER_NEEDED fieldguard5_t1 MARK_CHAR_AS_NO_LONGER_NEEDED fieldguard6_t1 walton2_t1flag = 1 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// Player has the harvester //////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //blip swapping if player is in or out of combine harvester IF NOT IS_CAR_DEAD combine_t1 IF blipswap_t1flag = 0 IF IS_CHAR_SITTING_IN_CAR scplayer combine_t1 MARK_CAR_AS_NO_LONGER_NEEDED tractorforplayer_t1 playerincombine_t1flag = 1 PRINT_NOW TRU1_5 5000 1 //Take the combine harvester back to The Truths farm. REMOVE_BLIP combineblip_t1 ADD_BLIP_FOR_COORD -1114.25 -1619.96 76.68 combineblip_t1 blipswap_t1flag = 1 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD combine_t1 IF blipswap_t1flag = 1 IF NOT IS_CHAR_IN_CAR scplayer combine_t1 IF NOT playerincombine_t1flag > 1 PRINT_NOW TRU1_7 5000 1 //Get back in the combine harvester and get it back to The Truth! REMOVE_BLIP combineblip_t1 ADD_BLIP_FOR_CAR combine_t1 combineblip_t1 SET_BLIP_AS_FRIENDLY combineblip_t1 TRUE blipswap_t1flag = 0 ENDIF ENDIF ENDIF ENDIF //player passes if they get it to the location IF playerincombine_t1flag = 1 IF blipswap_t1flag = 1 IF NOT IS_CAR_DEAD combine_t1 IF LOCATE_CAR_3D combine_t1 -1100.0071 -1620.9491 75.3750 5.0 5.0 5.0 TRUE IF IS_CHAR_SITTING_IN_CAR scplayer combine_t1 IF IS_CHAR_SITTING_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car ENDIF SET_PLAYER_CONTROL PLAYER1 OFF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_WIDESCREEN ON playerincombine_t1flag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF IF playerincombine_t1flag = 2 IF NOT IS_CAR_DEAD combine_t1 MARK_CAR_AS_NO_LONGER_NEEDED tractorchase1_t1 DELETE_CAR tractorchase1_t1 MARK_CHAR_AS_NO_LONGER_NEEDED tractorchasedriver1_t1 MARK_CAR_AS_NO_LONGER_NEEDED tractorchase2_t1 DELETE_CAR tractorchase2_t1 MARK_CHAR_AS_NO_LONGER_NEEDED tractorchasedriver2_t1 MARK_CAR_AS_NO_LONGER_NEEDED walton2_t1 MARK_CHAR_AS_NO_LONGER_NEEDED chaser19_t1 MARK_CHAR_AS_NO_LONGER_NEEDED chaser20_t1 MARK_MODEL_AS_NO_LONGER_NEEDED TRACTOR MARK_MODEL_AS_NO_LONGER_NEEDED KMB_MARIJUANA MARK_MODEL_AS_NO_LONGER_NEEDED sw_haybreak02 MARK_MODEL_AS_NO_LONGER_NEEDED CUNTGUN MARK_MODEL_AS_NO_LONGER_NEEDED WALTON MARK_MODEL_AS_NO_LONGER_NEEDED SHOVEL LOAD_SPECIAL_CHARACTER 1 TRUTH REQUEST_MODEL BFINJECT CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 1 SOUND_TRU1_ZA LOAD_MISSION_AUDIO 2 SOUND_TRU1_ZB LOAD_ALL_MODELS_NOW WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 OR NOT HAS_MODEL_LOADED BFINJECT WAIT 0 ENDWHILE TIMERA = 0 TIMERB = 0 CLEAR_AREA -1100.0071 -1620.9491 200.0 200.0 TRUE IF NOT IS_CAR_DEAD combine_t1 SET_CAR_COORDINATES combine_t1 -1102.21 -1620.017 77.345 //-1100.0071 -1620.9491 75.3750 SET_CAR_HEADING combine_t1 90.738 //88.2983 ENDIF WHILE NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE CREATE_CAR BFINJECT -1074.53 -1643.624 75.066 tractorchase1_t1 SET_CAR_HEADING tractorchase1_t1 84.918 CREATE_CHAR PEDTYPE_MISSION2 SPECIAL01 -1088.84 -1623.997 75.375 truth_t1 SET_CHAR_HEADING truth_t1 91.269 SHUT_CHAR_UP truth_t1 TRUE SET_CHAR_PROOFS truth_t1 TRUE TRUE TRUE TRUE TRUE SET_CHAR_DECISION_MAKER truth_t1 truth1_DM IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -1098.84 -1623.997 75.375 SET_CHAR_HEADING scplayer 264.123 ELSE SET_CHAR_COORDINATES scplayer -1098.84 -1623.997 75.375 SET_CHAR_HEADING scplayer 264.123 ENDIF SET_FIXED_CAMERA_POSITION -1087.7332 -1625.1243 76.7194 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1088.6616 -1624.7576 76.6608 JUMP_CUT REMOVE_BLIP combineblip_t1 DO_FADE 1000 FADE_IN IF NOT IS_CHAR_DEAD truth_t1 TASK_GO_STRAIGHT_TO_COORD truth_t1 -1093.1890 -1624.0206 75.3750 PEDMOVE_WALK 5000 ENDIF TASK_GO_STRAIGHT_TO_COORD scplayer -1094.931 -1623.946 75.375 PEDMOVE_WALK 5000 TIMERA = 0 playerincombine_t1flag = 3 ENDIF ENDIF IF playerincombine_t1flag = 3 IF NOT IS_CHAR_DEAD truth_t1 IF TIMERA > 2500 OR LOCATE_STOPPED_CHAR_ON_FOOT_2D truth_t1 -1093.1890 -1624.0206 1.5 1.5 FALSE SET_FIXED_CAMERA_POSITION -1092.2964 -1624.9174 76.9985 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1093.1168 -1624.3716 76.8283 JUMP_CUT CLEAR_CHAR_TASKS_IMMEDIATELY truth_t1 SET_CHAR_COORDINATES truth_t1 -1093.1890 -1624.0206 75.3750 SET_CHAR_HEADING truth_t1 88.0345 SET_CHAR_COORDINATES scplayer -1094.931 -1623.946 75.375 SET_CHAR_HEADING scplayer 264.123 TASK_PLAY_ANIM truth_t1 IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 playerincombine_t1flag = 4 ENDIF ENDIF ENDIF IF playerincombine_t1flag = 4 PRINT_NOW ( TRU1_ZA ) 4000 1 PLAY_MISSION_AUDIO 1 playerincombine_t1flag = 5 ENDIF IF playerincombine_t1flag = 5 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_TRU1_ZC PRINT_NOW ( TRU1_ZB ) 4000 1 PLAY_MISSION_AUDIO 2 playerincombine_t1flag = 6 ENDIF ENDIF IF playerincombine_t1flag = 6 IF HAS_MISSION_AUDIO_FINISHED 2 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW ( TRU1_ZC ) 4000 1 PLAY_MISSION_AUDIO 1 playerincombine_t1flag = 7 ENDIF ENDIF ENDIF IF playerincombine_t1flag = 7 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS TASK_GO_STRAIGHT_TO_COORD scplayer -1092.25 -1629.82 76.0 PEDMOVE_WALK 5000 WAIT 250 IF NOT IS_CHAR_DEAD truth_t1 TASK_GO_STRAIGHT_TO_COORD truth_t1 -1099.96 -1623.7 76.4 PEDMOVE_WALK 5000 ENDIF TIMERA = 0 playerincombine_t1flag = 8 ENDIF ENDIF IF playerincombine_t1flag = 8 IF TIMERA > 1000 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REQUEST_MODEL CELLPHONE LOAD_MISSION_AUDIO 3 SOUND_MOBRING LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED CELLPHONE OR NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE DELETE_CAR combine_t1 DELETE_CHAR truth_t1 SWITCH_WIDESCREEN OFF SET_CHAR_COORDINATES scplayer -1092.561 -1633.628 75.37 SET_CHAR_HEADING scplayer 273.438 DO_FADE 1000 FADE_IN SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT PLAY_MISSION_AUDIO 3 SET_PLAYER_CONTROL PLAYER1 ON TIMERA = 0 //GOTO mission_truth1_passed playerincombine_t1flag = 9 ENDIF ENDIF IF playerincombine_t1flag = 9 IF TIMERA > 1000 TASK_USE_MOBILE_PHONE scplayer TRUE CLEAR_MISSION_AUDIO 3 TIMERA = 0 playerincombine_t1flag = 10 ENDIF ENDIF IF playerincombine_t1flag = 10 IF TIMERA > 2000 progressaudio_t1flag = 1 handlingudio_t1flag = 0 playerincombine_t1flag = 11 ENDIF ENDIF IF playerincombine_t1flag = 11 GOSUB process_audio_t1 IF progressaudio_t1flag = 1 IF handlingudio_t1flag = 0 audio_label_t1 = SOUND_MCES05A // Eh. $input_text_t1 = MCES05A // Eh. GOSUB load_audio_t1 ENDIF ENDIF IF progressaudio_t1flag = 2 IF handlingudio_t1flag = 0 audio_label_t1 = SOUND_MCES05B // Carl, is Cesar. $input_text_t1 = MCES05B // Carl, is Cesar. GOSUB load_audio_t1 ENDIF ENDIF IF progressaudio_t1flag = 3 IF handlingudio_t1flag = 0 audio_label_t1 = SOUND_MCES05C // Whassup? $input_text_t1 = MCES05C // Whassup? GOSUB load_audio_t1 ENDIF ENDIF IF progressaudio_t1flag = 4 IF handlingudio_t1flag = 0 audio_label_t1 = SOUND_MCES05D // Bad stinking shit, that’s wassup, holmes. $input_text_t1 = MCES05D // Bad stinking shit, that’s wassup, holmes. GOSUB load_audio_t1 ENDIF ENDIF IF progressaudio_t1flag = 5 IF handlingudio_t1flag = 0 audio_label_t1 = SOUND_MCES05E // What’s wrong – where’s Kendl, is she ok? $input_text_t1 = MCES05E // What’s wrong – where’s Kendl, is she ok? GOSUB load_audio_t1 ENDIF ENDIF IF progressaudio_t1flag = 6 IF handlingudio_t1flag = 0 audio_label_t1 = SOUND_MCES05F // She’s with me – she ok for now. $input_text_t1 = MCES05F // She’s with me – she ok for now. GOSUB load_audio_t1 ENDIF ENDIF IF progressaudio_t1flag = 7 IF handlingudio_t1flag = 0 audio_label_t1 = SOUND_MCES05G // The Varrios Los Aztecas; it’s over, all gone. $input_text_t1 = MCES05G // The Varrios Los Aztecas; it’s over, all gone. GOSUB load_audio_t1 ENDIF ENDIF IF progressaudio_t1flag = 8 IF handlingudio_t1flag = 0 audio_label_t1 = SOUND_MCES05H // There’s a price on my head – maybe Kendl’s too $input_text_t1 = MCES05H // There’s a price on my head – maybe Kendl’s too GOSUB load_audio_t1 ENDIF ENDIF IF progressaudio_t1flag = 9 IF handlingudio_t1flag = 0 audio_label_t1 = SOUND_MCES05J // What happened? $input_text_t1 = MCES05J // What happened? GOSUB load_audio_t1 ENDIF ENDIF IF progressaudio_t1flag = 10 IF handlingudio_t1flag = 0 audio_label_t1 = SOUND_MCES05K // Trust and respect, honor; they don’t mean jack in Los Santos now. $input_text_t1 = MCES05K // Trust and respect, honor; they don’t mean jack in Los Santos now. GOSUB load_audio_t1 ENDIF ENDIF IF progressaudio_t1flag = 11 IF handlingudio_t1flag = 0 audio_label_t1 = SOUND_MCES05L // My OG’s, my esse’s – all dead or in hiding, eh. $input_text_t1 = MCES05L // My OG’s, my esse’s – all dead or in hiding, eh. GOSUB load_audio_t1 ENDIF ENDIF IF progressaudio_t1flag = 12 IF handlingudio_t1flag = 0 audio_label_t1 = SOUND_MCES05M // Get out of town. $input_text_t1 = MCES05M // Get out of town. GOSUB load_audio_t1 ENDIF ENDIF IF progressaudio_t1flag = 13 IF handlingudio_t1flag = 0 audio_label_t1 = SOUND_MCES05N // Head over to Angel Pine, rent you and Kendl a trailer I’ll meet you there. $input_text_t1 = MCES05N // Head over to Angel Pine, rent you and Kendl a trailer I’ll meet you there. GOSUB load_audio_t1 ENDIF ENDIF IF progressaudio_t1flag = 14 IF handlingudio_t1flag = 0 audio_label_t1 = SOUND_MCES05O // Ok, I just got some shit to take of and – $input_text_t1 = MCES05O // Ok, I just got some shit to take of and – GOSUB load_audio_t1 ENDIF ENDIF IF progressaudio_t1flag = 15 IF handlingudio_t1flag = 0 audio_label_t1 = SOUND_MCES05P // No! Just get my sister out of town and someplace safe! $input_text_t1 = MCES05P // No! Just get my sister out of town and someplace safe! GOSUB load_audio_t1 ENDIF ENDIF IF progressaudio_t1flag = 16 IF handlingudio_t1flag = 0 audio_label_t1 = SOUND_MCES05Q // Please don’t shit with me on this one, I can’t lose her, man! $input_text_t1 = MCES05Q // Please don’t shit with me on this one, I can’t lose her, man! GOSUB load_audio_t1 ENDIF ENDIF IF progressaudio_t1flag = 17 IF handlingudio_t1flag = 0 audio_label_t1 = SOUND_MCES05R // Sure thing, holmes, We’ll see you in Angel Pine. $input_text_t1 = MCES05R // Sure thing, holmes, We’ll see you in Angel Pine. GOSUB load_audio_t1 ENDIF ENDIF IF progressaudio_t1flag = 18 TASK_USE_MOBILE_PHONE scplayer FALSE TIMERA = 0 progressaudio_t1flag = 19 ENDIF IF progressaudio_t1flag = 19 IF TIMERA > 2000 GOTO mission_truth1_passed progressaudio_t1flag = 20 ENDIF ENDIF IF skipphonecall_t1flag = 0 IF IS_BUTTON_PRESSED PAD1 TRIANGLE CLEAR_MISSION_AUDIO 1 handlingudio_t1flag = 0 progressaudio_t1flag = 18 skipphonecall_t1flag = 1 ENDIF ENDIF ENDIF IF truth1_flag > 4 IF IS_CAR_DEAD combine_t1 IF playerincombine_t1flag < 8 PRINT_NOW TRU1_16 5000 1 //The combine harvester is wrecked! GOTO mission_truth1_failed ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////// audio //1st guy at fence IF audio_t1flag < 100 IF audio_t1flag = 1 IF NOT IS_CHAR_DEAD worker1_t1 //CWMOHB2 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_TRU1_DF audio_t1flag = 2 ENDIF ENDIF IF audio_t1flag = 2 IF NOT IS_CHAR_DEAD worker1_t1 //CWMOHB2 IF HAS_MISSION_AUDIO_LOADED 1 SHUT_CHAR_UP worker1_t1 TRUE PRINT_NOW ( TRU1_DF ) 4000 1 //You come to the wrong farm, boy. PLAY_MISSION_AUDIO 1 audio_t1flag = 3 ENDIF ENDIF ENDIF IF audio_t1flag = 3 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS audio_t1flag = 4 ENDIF ENDIF IF audio_t1flag = 4 IF NOT IS_CHAR_DEAD worker1_t1 //CWMOHB2 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_TRU1_DG audio_t1flag = 5 ENDIF ENDIF IF audio_t1flag = 5 IF NOT IS_CHAR_DEAD worker1_t1 //CWMOHB2 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW ( TRU1_DG ) 4000 1 //This ain’t no country club, fella! ATTACH_MISSION_AUDIO_TO_CHAR 1 worker1_t1 PLAY_MISSION_AUDIO 1 audio_t1flag = 6 ENDIF ENDIF ENDIF IF audio_t1flag = 6 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS IF NOT IS_CHAR_DEAD worker1_t1 SHUT_CHAR_UP worker1_t1 FALSE ENDIF audio_t1flag = 7 ENDIF ENDIF //tractor IF audio_t1flag = 8 IF NOT IS_CHAR_DEAD tractorchasedriver2_t1 //CWFYHB CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_TRU1_FD audio_t1flag = 9 ENDIF ENDIF IF audio_t1flag = 9 IF NOT IS_CHAR_DEAD tractorchasedriver2_t1 //CWFYHB IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW ( TRU1_FD ) 4000 1 //Beat him down, it’s all he’s good for! PLAY_MISSION_AUDIO 1 SHUT_CHAR_UP tractorchasedriver2_t1 TRUE audio_t1flag = 10 ENDIF ENDIF ENDIF IF audio_t1flag = 10 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS IF NOT IS_CHAR_DEAD tractorchasedriver2_t1 SHUT_CHAR_UP tractorchasedriver2_t1 FALSE ENDIF audio_t1flag = 11 ENDIF ENDIF //near glass bits //tractor IF audio_t1flag = 12 IF NOT IS_CHAR_DEAD worker4_t1 //CWFYHB IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_TRU1_FA //Hey, who’s this guy? audio_t1flag = 13 ENDIF ENDIF ENDIF IF audio_t1flag = 13 IF NOT IS_CHAR_DEAD worker4_t1 //CWFYHB IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW ( TRU1_FA ) 4000 1 //Hey, who’s this guy? PLAY_MISSION_AUDIO 1 audio_t1flag = 14 ENDIF ENDIF ENDIF IF audio_t1flag = 14 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS audio_t1flag = 15 ENDIF ENDIF IF audio_t1flag = 15 IF NOT IS_CHAR_DEAD worker5_t1 //CWMYHB1 SHUT_CHAR_UP worker5_t1 TRUE CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_TRU1_AB //Dunno but he looks kinda shifty! audio_t1flag = 16 ENDIF ENDIF IF audio_t1flag = 16 IF NOT IS_CHAR_DEAD worker5_t1 //CWMYHB1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW ( TRU1_AB ) 4000 1 //Dunno but he looks kinda shifty! PLAY_MISSION_AUDIO 1 audio_t1flag = 17 ENDIF ENDIF ENDIF IF audio_t1flag = 17 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS audio_t1flag = 18 ENDIF ENDIF IF audio_t1flag = 18 IF NOT IS_CHAR_DEAD worker5_t1 //CWMYHB1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_TRU1_AD //Roll him in the pig shit! audio_t1flag = 19 ENDIF ENDIF IF audio_t1flag = 19 IF NOT IS_CHAR_DEAD worker5_t1 //CWMYHB1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW TRU1_AD 4000 1 //Roll him in the pig shit! PLAY_MISSION_AUDIO 1 audio_t1flag = 20 ENDIF ENDIF ENDIF IF audio_t1flag = 21 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS IF NOT IS_CHAR_DEAD worker5_t1 SHUT_CHAR_UP worker5_t1 FALSE ENDIF audio_t1flag = 22 ENDIF ENDIF IF audio_t1flag = 23 IF NOT IS_CHAR_DEAD combinedriver_t1 //CWMYHB1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_TRU1_DE //He’s a combine rustler!! audio_t1flag = 24 ENDIF ENDIF IF audio_t1flag = 24 IF NOT IS_CHAR_DEAD combinedriver_t1 //CWMYHB1 IF HAS_MISSION_AUDIO_LOADED 1 SHUT_CHAR_UP combinedriver_t1 TRUE PRINT_NOW TRU1_DE 4000 1 //He’s a combine rustler!! PLAY_MISSION_AUDIO 1 audio_t1flag = 25 ENDIF ENDIF ENDIF IF audio_t1flag = 26 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS IF NOT IS_CHAR_DEAD combinedriver_t1 SHUT_CHAR_UP combinedriver_t1 FALSE ENDIF audio_t1flag = 27 ENDIF ENDIF IF audio_t1flag = 28 IF NOT IS_CHAR_DEAD chaser2_t1 //CWMYHB1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_TRU1_AC //Stop the dang varmint!! audio_t1flag = 29 ENDIF ENDIF IF audio_t1flag = 29 IF NOT IS_CHAR_DEAD chaser2_t1 //CWMYHB1 IF HAS_MISSION_AUDIO_LOADED 1 SHUT_CHAR_UP chaser2_t1 TRUE PRINT_NOW TRU1_AC 4000 1 //Stop the dang varmint!! PLAY_MISSION_AUDIO 1 audio_t1flag = 30 ENDIF ENDIF ENDIF IF audio_t1flag = 30 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_PRINTS IF NOT IS_CHAR_DEAD chaser2_t1 SHUT_CHAR_UP chaser2_t1 FALSE ENDIF audio_t1flag = 31 ENDIF ENDIF ENDIF ENDIF //triggeredaction_tflag = 1 GOTO truth1_main_mission_loop ////////////////////////////// GOSUBS load_audio_t1: IF handlingudio_t1flag = 0 LOAD_MISSION_AUDIO 1 audio_label_t1 $text_label_t1 = $input_text_t1 handlingudio_t1flag = 1 ENDIF RETURN process_audio_t1: IF handlingudio_t1flag = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW $text_label_t1 4000 1 //Dummy message" PLAY_MISSION_AUDIO 1 handlingudio_t1flag = 2 ENDIF ENDIF IF handlingudio_t1flag = 2 IF HAS_MISSION_AUDIO_FINISHED 1 progressaudio_t1flag++ CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS handlingudio_t1flag = 0 ENDIF ENDIF RETURN runfromcombine_t1lable: OPEN_SEQUENCE_TASK runfromcombine_t1seq TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_GO_STRAIGHT_TO_COORD -1 enemyx_t1 enemyy_t1 enemyz_t1 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK runfromcombine_t1seq PERFORM_SEQUENCE_TASK enemy_t1 runfromcombine_t1seq CLEAR_SEQUENCE_TASK runfromcombine_t1seq RETURN combine_t1label: OPEN_SEQUENCE_TASK combine_t1seq TASK_CAR_DRIVE_TO_COORD -1 combine_t1 -1025.67 -1029.39 130.5 6.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_DRIVE_TO_COORD -1 combine_t1 -1154.06 -1041.32 130.5 6.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_DRIVE_TO_COORD -1 combine_t1 -1166.82 -941.32 130.21 6.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_DRIVE_TO_COORD -1 combine_t1 -1031.46 -935.51 130.19 6.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH CLOSE_SEQUENCE_TASK combine_t1seq PERFORM_SEQUENCE_TASK combinedriver_t1 combine_t1seq CLEAR_SEQUENCE_TASK combine_t1seq RETURN chase_t1label: OPEN_SEQUENCE_TASK chase_t1seq TASK_CAR_MISSION -1 enemycar_t1 enemycar_t1 MISSION_RAMPLAYER_FARAWAY 20.0 DRIVINGMODE_PLOUGHTHROUGH CLOSE_SEQUENCE_TASK chase_t1seq PERFORM_SEQUENCE_TASK enemy_t1 chase_t1seq CLEAR_SEQUENCE_TASK chase_t1seq RETURN // **************************************** Mission truth1 failed ************************ mission_truth1_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // **************************************** mission truth1 passed ************************ mission_truth1_passed: REMOVE_BLIP bcrash_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT bcrashX bcrashY bcrashZ cesar_blip_icon bcrash_contact_blip //TRAILOR SWITCH_CAR_GENERATOR iFieldHarvester[0] 101 SWITCH_CAR_GENERATOR iFieldHarvester[1] 101 SWITCH_CAR_GENERATOR iFieldHarvester[2] 101 SWITCH_CAR_GENERATOR iFieldHarvester[3] 101 SWITCH_CAR_GENERATOR iFieldHarvester[4] 101 SWITCH_CAR_GENERATOR iFieldHarvester[5] 101 SWITCH_CAR_GENERATOR iFieldHarvester[6] 101 SWITCH_CAR_GENERATOR iFieldHarvester[7] 101 REGISTER_MISSION_PASSED ( TRUTH_1 ) PLAYER_MADE_PROGRESS 1 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 5 5000 1 //"Mission Passed!" PLAY_MISSION_PASSED_TUNE 1 AWARD_PLAYER_MISSION_RESPECT 5//amount of respect CLEAR_WANTED_LEVEL player1 flag_truth_mission_counter ++ REMOVE_BLIP truth_contact_blip RETURN // ********************************** mission cleanup ************************************** mission_cleanup_truth1: flag_player_on_mission = 0 MARK_MODEL_AS_NO_LONGER_NEEDED COMBINE MARK_MODEL_AS_NO_LONGER_NEEDED TRACTOR MARK_MODEL_AS_NO_LONGER_NEEDED KMB_MARIJUANA MARK_MODEL_AS_NO_LONGER_NEEDED sw_haybreak02 MARK_MODEL_AS_NO_LONGER_NEEDED CUNTGUN MARK_MODEL_AS_NO_LONGER_NEEDED WALTON MARK_MODEL_AS_NO_LONGER_NEEDED CWFYHB MARK_MODEL_AS_NO_LONGER_NEEDED CWMOHB2 MARK_MODEL_AS_NO_LONGER_NEEDED CWMYHB1 MARK_MODEL_AS_NO_LONGER_NEEDED BFINJECT MARK_MODEL_AS_NO_LONGER_NEEDED SHOVEL UNLOAD_SPECIAL_CHARACTER 1 REMOVE_BLIP combineblip_t1 MARK_CAR_AS_NO_LONGER_NEEDED tractorchase1_t1 SET_WANTED_MULTIPLIER 1.0 GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ************************************** truth2 ******************************************* // ***************************************************************************************** // ********************************Full Head of Green*************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME truth2 // Mission start stuff GOSUB mission_start_truth2 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_truth2_failed ENDIF GOSUB mission_cleanup_truth2 MISSION_END { // Variables for mission //people LVAR_INT t2_mothership t2_chopper t2_pilot t2_cop t2_helilight LVAR_INT t2_sadler t2_flame_pickup t2_rocket_pickup //blips LVAR_INT t2_truths_farm_blip t2_weed_blips[44] //flags LVAR_INT t2_goals t2_control_flag t2_skip_cutscene_flag t2_deathcheck_flag LVAR_INT t2_weed_burnt[44] LVAR_INT t2_one_cop_alive_in_area LVAR_INT t2_car_check_flag LVAR_INT t2_city LVAR_FLOAT t2_x t2_y t2_z t2_x2 t2_y2 t2_z2 LVAR_INT t2_faded_flag t2_drunkeness t2_beer_goggles t2_weed_check VAR_INT t2_total_weed_burnt t2_cop_timer LVAR_INT t2_flamethrower_control_flag t2_flame_ammo t2_rocketlauncher_control_flag //speech LVAR_INT t2_speech_goals t2_speech_control_flag t2_speech_flag LVAR_TEXT_LABEL t2_print_label[16] LVAR_INT t2_audio_label[16] LVAR_INT t2_played_random_speech[5] t2_last_label LVAR_INT t2_slot1 t2_slot2 t2_slot_load t2_play_which_slot LVAR_INT t2_random_last_label LVAR_INT t2_storing_speech_control_number t2_storing_speech_goals_number //coords //sequences/decision makers/threat lists/attractors/groups LVAR_INT t2_seq t2_empty_ped_decision_maker //debug // ****************************************Mission Start************************************ mission_start_truth2: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT TRU2 IF flag_player_on_mission = 0 ADD_BLIP_FOR_COORD -1111.7 -1622.7 76.4 t2_truths_farm_blip CREATE_PICKUP_WITH_AMMO ROCKETLA PICKUP_ONCE 10 -1100.3 -1640.4 76.4 t2_rocket_pickup CREATE_PICKUP_WITH_AMMO ROCKETLA PICKUP_ONCE 10 -1100.3 -1640.4 76.4 t2_flame_pickup ENDIF CLEAR_PRINTS WAIT 0 // *************************************Set Flags/variables********************************* t2_cop_timer = 331000 //5 and a half minutes t2_goals = 0 t2_control_flag = 0 t2_skip_cutscene_flag = 0 t2_deathcheck_flag = 0 t2_weed_burnt[0] = 0 t2_weed_burnt[1] = 0 t2_weed_burnt[2] = 0 t2_weed_burnt[3] = 0 t2_weed_burnt[4] = 0 t2_weed_burnt[5] = 0 t2_weed_burnt[6] = 0 t2_weed_burnt[7] = 0 t2_weed_burnt[8] = 0 t2_weed_burnt[9] = 0 t2_weed_burnt[10] = 0 t2_weed_burnt[11] = 0 t2_weed_burnt[12] = 0 t2_weed_burnt[13] = 0 t2_weed_burnt[14] = 0 t2_weed_burnt[15] = 0 t2_weed_burnt[16] = 0 t2_weed_burnt[17] = 0 t2_weed_burnt[18] = 0 t2_weed_burnt[19] = 0 t2_weed_burnt[20] = 0 t2_weed_burnt[21] = 0 t2_weed_burnt[22] = 0 t2_weed_burnt[23] = 0 t2_weed_burnt[24] = 0 t2_weed_burnt[25] = 0 t2_weed_burnt[26] = 0 t2_weed_burnt[27] = 0 t2_weed_burnt[28] = 0 t2_weed_burnt[29] = 0 t2_weed_burnt[30] = 0 t2_weed_burnt[31] = 0 t2_weed_burnt[32] = 0 t2_weed_burnt[33] = 0 t2_weed_burnt[34] = 0 t2_weed_burnt[35] = 0 t2_weed_burnt[36] = 0 t2_weed_burnt[37] = 0 t2_weed_burnt[38] = 0 t2_weed_burnt[39] = 0 t2_weed_burnt[40] = 0 t2_weed_burnt[41] = 0 t2_weed_burnt[42] = 0 t2_weed_burnt[43] = 0 t2_total_weed_burnt = 44 t2_one_cop_alive_in_area = 0 t2_car_check_flag = 0 t2_flamethrower_control_flag = 0 t2_flame_ammo = 0 t2_city = 0 t2_x = 0.0 t2_y = 0.0 t2_z = 0.0 t2_x2 = 0.0 t2_y2 = 0.0 t2_z2 = 0.0 t2_faded_flag = 0 t2_drunkeness = 0 t2_beer_goggles = 0 t2_weed_check = 44 t2_speech_goals = 0 t2_speech_control_flag = 0 t2_speech_flag = 0 t2_played_random_speech[0] = 0 t2_played_random_speech[1] = 0 t2_played_random_speech[2] = 0 t2_played_random_speech[3] = 0 t2_played_random_speech[4] = 0 t2_last_label = 0 t2_slot1 = 0 t2_slot2 = 0 t2_slot_load = 0 t2_play_which_slot = 0 t2_rocketlauncher_control_flag = 0 t2_storing_speech_control_number = 0 t2_storing_speech_goals_number = 0 t2_random_last_label = 0 // ****************************************START OF CUTSCENE******************************** MAKE_PLAYER_GANG_DISAPPEAR CLEAR_AREA -1110.2 -1638.5 76.0 20.0 TRUE LOAD_CUTSCENE TRUTH_2 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF MAKE_PLAYER_GANG_REAPPEAR // ****************************************END OF CUTSCENE********************************** SET_FADING_COLOUR 0 0 0 WAIT 0 //------------------REQUEST_MODELS ------------------------------ REQUEST_MODEL CAMPER REQUEST_MODEL SADLER REQUEST_MODEL POLMAV REQUEST_MODEL CSHER REQUEST_MODEL FLAME REQUEST_MODEL COLT45 LOAD_SPECIAL_CHARACTER 1 truth REMOVE_IPL truthsfarm REQUEST_IPL truthsfarm LOAD_ALL_MODELS_NOW SET_MAX_FIRE_GENERATIONS 2 CLEAR_AREA -913.3 -1720.5 76.6 300.0 TRUE /////debug COPY_CHAR_DECISION_MAKER DM_PED_EMPTY t2_empty_ped_decision_maker CLEAR_AREA -913.3 -1720.5 76.6 1.0 TRUE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -913.3 -1720.5 76.6 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_FLAMETHROWER 3000 CLEAR_AREA -1079.4043 -1640.6936 75.3750 20.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 -1079.4043 -1640.6936 75.3750 truth SET_CHAR_DROPS_WEAPONS_WHEN_DEAD truth FALSE SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR truth FALSE SET_CHAR_DECISION_MAKER truth t2_empty_ped_decision_maker SET_CHAR_HEADING truth 299.7411 GIVE_WEAPON_TO_CHAR truth WEAPONTYPE_FLAMETHROWER 3000 SET_CHAR_NEVER_TARGETTED truth TRUE SET_CHAR_CANT_BE_DRAGGED_OUT truth TRUE OPEN_SEQUENCE_TASK t2_seq TASK_GO_STRAIGHT_TO_COORD -1 -1070.1 -1636.5 75.4 PEDMOVE_RUN -1 TASK_SHOOT_AT_COORD -1 -1062.2 -1631.1 75.3 -1 CLOSE_SEQUENCE_TASK t2_seq PERFORM_SEQUENCE_TASK truth t2_seq CLEAR_SEQUENCE_TASK t2_seq CLEAR_AREA -1077.6 -1650.2 75.3 20.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR CAMPER OUTTHERE CREATE_CAR CAMPER -1077.6 -1650.2 75.3 t2_mothership CHANGE_CAR_COLOUR t2_mothership 1 1 GIVE_VEHICLE_PAINTJOB t2_mothership 0 SET_CAN_RESPRAY_CAR t2_mothership FALSE LOCK_CAR_DOORS t2_mothership CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_TRACTION t2_mothership 2.0 SET_CAR_HEADING t2_mothership 256.4 FREEZE_CAR_POSITION t2_mothership TRUE SET_CAR_PROOFS t2_mothership FALSE FALSE TRUE FALSE FALSE CLEAR_AREA -946.6 -1735.0 76.9 5.0 TRUE CREATE_CAR SADLER -946.6 -1735.0 76.9 t2_sadler SET_CAR_HEADING t2_sadler 1.4 SET_CAR_PROOFS t2_sadler FALSE FALSE TRUE FALSE FALSE CLEAR_AREA -918.5 -1751.1 97.3 5.0 TRUE CREATE_CAR POLMAV -918.5 -1751.1 97.3 t2_chopper SET_HELI_BLADES_FULL_SPEED t2_chopper CREATE_CHAR_INSIDE_CAR t2_chopper PEDTYPE_MISSION1 CSHER t2_pilot CREATE_SEARCHLIGHT_ON_VEHICLE t2_chopper 0.0 0.0 -1.0 -936.6 -1723.2 76.8 6.0 1.0 t2_helilight POINT_SEARCHLIGHT_AT_CHAR t2_helilight truth 10.0 HELI_FOLLOW_ENTITY t2_chopper truth -1 20.0 //ACTIVATE_HELI_SPEED_CHEAT t2_chopper 10 LOCK_CAR_DOORS t2_chopper CARLOCK_LOCKED SET_CHAR_CAN_BE_SHOT_IN_VEHICLE t2_pilot FALSE SET_CHAR_DECISION_MAKER t2_pilot t2_empty_ped_decision_maker ADD_BLIP_FOR_COORD -1062.1 -1631.7 75.3 t2_weed_blips[0] CHANGE_BLIP_SCALE t2_weed_blips[0] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[0] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1052.3 -1631.7 75.3 t2_weed_blips[1] CHANGE_BLIP_SCALE t2_weed_blips[1] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[1] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1042.4 -1631.7 75.3 t2_weed_blips[2] CHANGE_BLIP_SCALE t2_weed_blips[2] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[2] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1032.6 -1631.7 75.3 t2_weed_blips[3] CHANGE_BLIP_SCALE t2_weed_blips[3] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[3] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1023.1 -1631.7 75.3 t2_weed_blips[4] CHANGE_BLIP_SCALE t2_weed_blips[4] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[4] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1062.1 -1622.2 75.3 t2_weed_blips[5] CHANGE_BLIP_SCALE t2_weed_blips[5] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[5] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1052.3 -1622.2 75.3 t2_weed_blips[6] CHANGE_BLIP_SCALE t2_weed_blips[6] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[6] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1042.4 -1622.2 75.3 t2_weed_blips[7] CHANGE_BLIP_SCALE t2_weed_blips[7] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[7] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1032.6 -1622.2 75.3 t2_weed_blips[8] CHANGE_BLIP_SCALE t2_weed_blips[8] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[8] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1023.1 -1622.2 75.3 t2_weed_blips[9] CHANGE_BLIP_SCALE t2_weed_blips[9] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[9] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -991.92 -1703.1 75.3 t2_weed_blips[10] CHANGE_BLIP_SCALE t2_weed_blips[10] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[10] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -982.38 -1703.1 75.3 t2_weed_blips[11] CHANGE_BLIP_SCALE t2_weed_blips[11] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[11] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -991.92 -1693.6 75.3 t2_weed_blips[12] CHANGE_BLIP_SCALE t2_weed_blips[12] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[12] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -982.38 -1693.6 75.3 t2_weed_blips[13] CHANGE_BLIP_SCALE t2_weed_blips[13] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[13] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -991.92 -1684.1 75.3 t2_weed_blips[14] CHANGE_BLIP_SCALE t2_weed_blips[14] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[14] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -982.38 -1684.1 75.3 t2_weed_blips[15] CHANGE_BLIP_SCALE t2_weed_blips[15] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[15] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1011.8 -1667.6 75.3 t2_weed_blips[16] CHANGE_BLIP_SCALE t2_weed_blips[16] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[16] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1011.8 -1658.1 75.3 t2_weed_blips[17] CHANGE_BLIP_SCALE t2_weed_blips[17] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[17] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1011.8 -1648.7 75.3 t2_weed_blips[18] CHANGE_BLIP_SCALE t2_weed_blips[18] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[18] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1000.7 -1667.6 75.3 t2_weed_blips[19] CHANGE_BLIP_SCALE t2_weed_blips[19] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[19] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1000.7 -1658.1 75.3 t2_weed_blips[20] CHANGE_BLIP_SCALE t2_weed_blips[20] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[20] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1000.7 -1648.7 75.3 t2_weed_blips[21] CHANGE_BLIP_SCALE t2_weed_blips[21] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[21] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1011.8 -1672.3 75.3 t2_weed_blips[22] CHANGE_BLIP_SCALE t2_weed_blips[22] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[22] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -991.92 -1688.8 75.3 t2_weed_blips[23] CHANGE_BLIP_SCALE t2_weed_blips[23] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[23] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -982.38 -1688.8 75.3 t2_weed_blips[24] CHANGE_BLIP_SCALE t2_weed_blips[24] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[24] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -982.38 -1698.2 75.3 t2_weed_blips[25] CHANGE_BLIP_SCALE t2_weed_blips[25] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[25] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -991.92 -1698.2 75.3 t2_weed_blips[26] CHANGE_BLIP_SCALE t2_weed_blips[26] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[26] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -982.38 -1707.7 75.3 t2_weed_blips[27] CHANGE_BLIP_SCALE t2_weed_blips[27] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[27] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1011.8 -1662.8 75.3 t2_weed_blips[28] CHANGE_BLIP_SCALE t2_weed_blips[28] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[28] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1000.7 -1672.3 75.3 t2_weed_blips[29] CHANGE_BLIP_SCALE t2_weed_blips[29] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[29] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1011.8 -1653.4 75.3 t2_weed_blips[30] CHANGE_BLIP_SCALE t2_weed_blips[30] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[30] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1032.6 -1636.3 75.3 t2_weed_blips[31] CHANGE_BLIP_SCALE t2_weed_blips[31] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[31] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1052.3 -1636.3 75.3 t2_weed_blips[32] CHANGE_BLIP_SCALE t2_weed_blips[32] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[32] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1042.4 -1636.3 75.3 t2_weed_blips[33] CHANGE_BLIP_SCALE t2_weed_blips[33] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[33] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1062.1 -1626.8 75.3 t2_weed_blips[34] CHANGE_BLIP_SCALE t2_weed_blips[34] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[34] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -991.92 -1707.7 75.3 t2_weed_blips[35] CHANGE_BLIP_SCALE t2_weed_blips[35] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[35] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1023.1 -1626.8 75.3 t2_weed_blips[36] CHANGE_BLIP_SCALE t2_weed_blips[36] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[36] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1000.7 -1662.8 75.3 t2_weed_blips[37] CHANGE_BLIP_SCALE t2_weed_blips[37] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[37] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1000.7 -1653.4 75.3 t2_weed_blips[38] CHANGE_BLIP_SCALE t2_weed_blips[38] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[38] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1032.6 -1626.8 75.3 t2_weed_blips[39] CHANGE_BLIP_SCALE t2_weed_blips[39] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[39] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1042.4 -1626.8 75.3 t2_weed_blips[40] CHANGE_BLIP_SCALE t2_weed_blips[40] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[40] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1052.3 -1626.8 75.3 t2_weed_blips[41] CHANGE_BLIP_SCALE t2_weed_blips[41] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[41] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1062.1 -1636.3 75.3 t2_weed_blips[42] CHANGE_BLIP_SCALE t2_weed_blips[42] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[42] COORD_BLIP_APPEARANCE_ENEMY ADD_BLIP_FOR_COORD -1023.1 -1636.3 75.3 t2_weed_blips[43] CHANGE_BLIP_SCALE t2_weed_blips[43] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[43] COORD_BLIP_APPEARANCE_ENEMY //DISPLAY_ONSCREEN_COUNTER_WITH_STRING t2_total_weed_burnt COUNTER_DISPLAY_NUMBER TRU2_05 DISPLAY_ONSCREEN_TIMER_WITH_STRING t2_cop_timer TIMER_DOWN TRU2_06 // Cops arrival SET_CHAR_COORDINATES scplayer -1089.9 -1644.1 75.4 SET_CHAR_HEADING scplayer 283.3 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON DO_FADE 500 FADE_IN PRINT ( TRU2_01 ) 7000 1 //Go and help The Truth destroy the weed. PRINT ( TRU2_02 ) 7000 1 //To burn a weed field, cover it in flames. /* VIEW_INTEGER_VARIABLE t2_speech_goals t2_speech_goals VIEW_INTEGER_VARIABLE t2_speech_control_flag t2_speech_control_flag VIEW_INTEGER_VARIABLE t2_storing_speech_goals_number t2_storing_speech_goals_number VIEW_INTEGER_VARIABLE t2_storing_speech_control_number t2_storing_speech_control_number VIEW_INTEGER_VARIABLE t2_last_label t2_last_label VIEW_INTEGER_VARIABLE t2_slot1 t2_slot1 VIEW_INTEGER_VARIABLE t2_slot2 t2_slot2 */ timera = 0 timerb = 0 mission_truth2_loop: WAIT 0 GOSUB t2_drunken_filter //clear the wanted level on our way to san fierro, slow ride.... CLEAR_WANTED_LEVEL player1 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_truth2_passed ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// DEATHCHECKS /////////////////////////////////////////////////////////////////////////////////// GOSUB t2_death_checks IF t2_deathcheck_flag = 1 GOTO mission_truth2_failed ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////// WAITING FOR PLAYER TO BURN WEED //////////////////////////////////////// IF t2_goals = 0 //////////////////DEBUG//////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q t2_speech_goals = 0 IF t2_control_flag = 0 CLEAR_PRINTS t2_control_flag = 1 ENDIF SET_CHAR_COORDINATES scplayer -1104.7 -1648.0 75.4 t2_total_weed_burnt = 0 ENDIF IF t2_control_flag = 0 IF t2_total_weed_burnt < 20 CLEAR_PRINTS t2_speech_goals = 1 t2_speech_control_flag = 0 GOSUB t2_dialogue_setup t2_control_flag = 1 timera = 0 ENDIF ENDIF IF t2_control_flag = 1 IF t2_speech_goals = 0 TASK_ENTER_CAR_AS_DRIVER truth t2_mothership -1 t2_control_flag = 2 ENDIF ENDIF ////////checking if player has used up all his flamethrower//////////////// GOSUB t2_flamethrower IF t2_weed_burnt[0] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1062.1 -1631.7 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[0] t2_total_weed_burnt -- t2_weed_burnt[0] = 1 ENDIF ENDIF IF t2_weed_burnt[1] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1052.3 -1631.7 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[1] t2_total_weed_burnt -- t2_weed_burnt[1] = 1 ENDIF ENDIF IF t2_weed_burnt[2] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1042.4 -1631.7 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[2] t2_total_weed_burnt -- t2_weed_burnt[2] = 1 ENDIF ENDIF IF t2_weed_burnt[3] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1032.6 -1631.7 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[3] t2_total_weed_burnt -- t2_weed_burnt[3] = 1 ENDIF ENDIF IF t2_weed_burnt[4] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1023.1 -1631.7 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[4] t2_total_weed_burnt -- t2_weed_burnt[4] = 1 ENDIF ENDIF IF t2_weed_burnt[5] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1062.1 -1622.2 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[5] t2_total_weed_burnt -- t2_weed_burnt[5] = 1 ENDIF ENDIF IF t2_weed_burnt[6] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1052.3 -1622.2 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[6] t2_total_weed_burnt -- t2_weed_burnt[6] = 1 ENDIF ENDIF IF t2_weed_burnt[7] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1042.4 -1622.2 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[7] t2_total_weed_burnt -- t2_weed_burnt[7] = 1 ENDIF ENDIF IF t2_weed_burnt[8] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1032.6 -1622.2 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[8] t2_total_weed_burnt -- t2_weed_burnt[8] = 1 ENDIF ENDIF IF t2_weed_burnt[9] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1023.1 -1622.2 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[9] t2_total_weed_burnt -- t2_weed_burnt[9] = 1 ENDIF ENDIF IF t2_weed_burnt[10] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -991.92 -1703.1 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[10] t2_total_weed_burnt -- t2_weed_burnt[10] = 1 ENDIF ENDIF IF t2_weed_burnt[11] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -982.38 -1703.1 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[11] t2_total_weed_burnt -- t2_weed_burnt[11] = 1 ENDIF ENDIF IF t2_weed_burnt[12] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -991.92 -1693.6 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[12] t2_total_weed_burnt -- t2_weed_burnt[12] = 1 ENDIF ENDIF IF t2_weed_burnt[13] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -982.38 -1693.6 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[13] t2_total_weed_burnt -- t2_weed_burnt[13] = 1 ENDIF ENDIF IF t2_weed_burnt[14] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -991.92 -1684.1 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[14] t2_total_weed_burnt -- t2_weed_burnt[14] = 1 ENDIF ENDIF IF t2_weed_burnt[15] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -982.38 -1684.1 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[15] t2_total_weed_burnt -- t2_weed_burnt[15] = 1 ENDIF ENDIF IF t2_weed_burnt[16] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1011.8 -1667.6 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[16] t2_total_weed_burnt -- t2_weed_burnt[16] = 1 ENDIF ENDIF IF t2_weed_burnt[17] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1011.8 -1658.1 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[17] t2_total_weed_burnt -- t2_weed_burnt[17] = 1 ENDIF ENDIF IF t2_weed_burnt[18] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1011.8 -1648.7 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[18] t2_total_weed_burnt -- t2_weed_burnt[18] = 1 ENDIF ENDIF IF t2_weed_burnt[19] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1000.7 -1667.6 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[19] t2_total_weed_burnt -- t2_weed_burnt[19] = 1 ENDIF ENDIF IF t2_weed_burnt[20] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1000.7 -1658.1 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[20] t2_total_weed_burnt -- t2_weed_burnt[20] = 1 ENDIF ENDIF IF t2_weed_burnt[21] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1000.7 -1648.7 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[21] t2_total_weed_burnt -- t2_weed_burnt[21] = 1 ENDIF ENDIF IF t2_weed_burnt[22] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1011.8 -1672.3 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[22] t2_total_weed_burnt -- t2_weed_burnt[22] = 1 ENDIF ENDIF IF t2_weed_burnt[23] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -991.92 -1688.8 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[23] t2_total_weed_burnt -- t2_weed_burnt[23] = 1 ENDIF ENDIF IF t2_weed_burnt[24] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -982.38 -1688.8 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[24] t2_total_weed_burnt -- t2_weed_burnt[24] = 1 ENDIF ENDIF IF t2_weed_burnt[25] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -982.38 -1698.2 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[25] t2_total_weed_burnt -- t2_weed_burnt[25] = 1 ENDIF ENDIF IF t2_weed_burnt[26] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -991.92 -1698.2 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[26] t2_total_weed_burnt -- t2_weed_burnt[26] = 1 ENDIF ENDIF IF t2_weed_burnt[27] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -982.38 -1707.7 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[27] t2_total_weed_burnt -- t2_weed_burnt[27] = 1 ENDIF ENDIF IF t2_weed_burnt[28] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1011.8 -1662.8 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[28] t2_total_weed_burnt -- t2_weed_burnt[28] = 1 ENDIF ENDIF IF t2_weed_burnt[29] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1000.7 -1672.3 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[29] t2_total_weed_burnt -- t2_weed_burnt[29] = 1 ENDIF ENDIF IF t2_weed_burnt[30] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1011.8 -1653.4 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[30] t2_total_weed_burnt -- t2_weed_burnt[30] = 1 ENDIF ENDIF IF t2_weed_burnt[31] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1032.6 -1636.3 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[31] t2_total_weed_burnt -- t2_weed_burnt[31] = 1 ENDIF ENDIF IF t2_weed_burnt[32] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1052.3 -1636.3 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[32] t2_total_weed_burnt -- t2_weed_burnt[32] = 1 ENDIF ENDIF IF t2_weed_burnt[33] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1042.4 -1636.3 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[33] t2_total_weed_burnt -- t2_weed_burnt[33] = 1 ENDIF ENDIF IF t2_weed_burnt[34] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1062.1 -1626.8 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[34] t2_total_weed_burnt -- t2_weed_burnt[34] = 1 ENDIF ENDIF IF t2_weed_burnt[35] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -991.92 -1707.7 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[35] t2_total_weed_burnt -- t2_weed_burnt[35] = 1 ENDIF ENDIF IF t2_weed_burnt[36] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1023.1 -1626.8 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[36] t2_total_weed_burnt -- t2_weed_burnt[36] = 1 ENDIF ENDIF IF t2_weed_burnt[37] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1000.7 -1662.8 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[37] t2_total_weed_burnt -- t2_weed_burnt[37] = 1 ENDIF ENDIF IF t2_weed_burnt[38] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1000.7 -1653.4 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[38] t2_total_weed_burnt -- t2_weed_burnt[38] = 1 ENDIF ENDIF IF t2_weed_burnt[39] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1032.6 -1626.8 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[39] t2_total_weed_burnt -- t2_weed_burnt[39] = 1 ENDIF ENDIF IF t2_weed_burnt[40] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1042.4 -1626.8 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[40] t2_total_weed_burnt -- t2_weed_burnt[40] = 1 ENDIF ENDIF IF t2_weed_burnt[41] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1052.3 -1626.8 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[41] t2_total_weed_burnt -- t2_weed_burnt[41] = 1 ENDIF ENDIF IF t2_weed_burnt[42] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1062.1 -1636.3 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[42] t2_total_weed_burnt -- t2_weed_burnt[42] = 1 ENDIF ENDIF IF t2_weed_burnt[43] = 0 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED -1023.1 -1636.3 75.3 1.0 GRASSPLANT FALSE TRUE ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP t2_weed_blips[43] t2_total_weed_burnt -- t2_weed_burnt[43] = 1 ENDIF ENDIF IF t2_total_weed_burnt = 0 MARK_MODEL_AS_NO_LONGER_NEEDED FLAME //CLEAR_ONSCREEN_COUNTER t2_total_weed_burnt REMOVE_BLIP t2_truths_farm_blip ADD_BLIP_FOR_COORD -1075.5 -1648.5 75.1 t2_truths_farm_blip SET_COORD_BLIP_APPEARANCE t2_truths_farm_blip COORD_BLIP_APPEARANCE_FRIEND PRINT ( TRU2_14 ) 11000 1 // Go and speak to the Truth. t2_faded_flag = 0 t2_control_flag = 0 t2_goals = 1 ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////// Blowing up the cop helicopter ////////////////////////////////////////// IF t2_goals = 1 //waiting for the player to get the rocket launcher from the mothership in cutscene IF t2_control_flag = 0 IF NOT IS_CAR_DEAD t2_chopper IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer -1075.5 -1648.0 75.1 1.2 1.2 2.0 TRUE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 t2_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR //HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SHUT_ALL_CHARS_UP TRUE SET_PLAYER_DRUNKENNESS player1 0 REMOVE_PICKUP t2_flame_pickup FREEZE_ONSCREEN_TIMER TRUE REQUEST_MODEL ROCKETLA LOAD_ALL_MODELS_NOW CLEAR_AREA -1075.5 -1648.0 75.1 5.0 TRUE SET_CHAR_COORDINATES scplayer -1075.5 -1648.0 75.1 SET_CHAR_HEADING scplayer 157.1 TASK_PLAY_ANIM scplayer idle_chat PED 6.0 TRUE FALSE FALSE FALSE 4000 SET_FIXED_CAMERA_POSITION -1071.3 -1647.8 75.4 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1078.8 -1648.8 76.3 JUMP_CUT CLEAR_PRINTS t2_skip_cutscene_flag = 1 SKIP_CUTSCENE_START t2_speech_goals = 8 t2_speech_control_flag = 0 GOSUB t2_dialogue_setup t2_control_flag = 1 ENDIF ELSE FREEZE_CAR_POSITION t2_mothership FALSE TASK_CAR_DRIVE_TO_COORD truth t2_mothership -939.5 -1718.8 76.7 10.0 MODE_NORMAL 0 DRIVINGMODE_AVOIDCARS //at gate t2_control_flag = 5 ENDIF ENDIF IF t2_control_flag = 1 IF t2_speech_goals = 0 CLEAR_CHAR_TASKS scplayer TASK_GO_STRAIGHT_TO_COORD scplayer -1081.4 -1650.3 75.4 PEDMOVE_WALK -1 t2_control_flag = 2 ENDIF ENDIF IF t2_control_flag = 2 GET_SCRIPT_TASK_STATUS scplayer TASK_GO_STRAIGHT_TO_COORD task_status IF task_status = FINISHED_TASK GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_ROCKETLAUNCHER 10 t2_speech_goals = 9 t2_speech_control_flag = 0 GOSUB t2_dialogue_setup t2_control_flag = 3 ENDIF ENDIF IF t2_control_flag = 3 IF t2_speech_control_flag = 1 TASK_GO_STRAIGHT_TO_COORD scplayer -1075.5 -1648.0 75.1 PEDMOVE_WALK -1 t2_control_flag = 4 ENDIF ENDIF IF t2_control_flag = 4 IF t2_speech_goals = 0 t2_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB t2_death_checks IF t2_deathcheck_flag = 1 GOTO mission_truth2_failed ENDIF //skipping cutscene IF t2_skip_cutscene_flag = 1 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 t2_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB t2_death_checks IF t2_deathcheck_flag = 1 GOTO mission_truth2_failed ENDIF GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_ROCKETLAUNCHER 10 CLEAR_AREA -1075.5 -1648.0 75.1 1.0 TRUE SET_CHAR_COORDINATES scplayer -1075.5 -1648.0 75.1 SET_CHAR_HEADING scplayer 268.0 ENDIF SHUT_ALL_CHARS_UP FALSE FREEZE_ONSCREEN_TIMER FALSE FREEZE_CAR_POSITION t2_mothership FALSE SET_DRUNK_INPUT_DELAY player1 t2_drunkeness SET_PLAYER_DRUNKENNESS player1 t2_beer_goggles SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT TASK_CAR_DRIVE_TO_COORD truth t2_mothership -939.5 -1718.8 76.7 10.0 MODE_NORMAL 0 DRIVINGMODE_AVOIDCARS //at gate REMOVE_BLIP t2_truths_farm_blip ADD_BLIP_FOR_CAR t2_chopper t2_truths_farm_blip IF NOT IS_CAR_DEAD t2_chopper PRINT_NOW ( TRU2_15 ) 7000 1 // Take out the chopper! ENDIF //skipping cutscene IF t2_skip_cutscene_flag = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB t2_death_checks IF t2_deathcheck_flag = 1 GOTO mission_truth2_failed ENDIF ENDIF timerb = 0 t2_control_flag = 5 ENDIF ENDIF //Waiting for player to destroy chopper IF t2_control_flag = 5 //////////////////DEBUG//////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q IF NOT IS_CAR_DEAD t2_chopper EXPLODE_CAR t2_chopper ENDIF SET_CHAR_COORDINATES scplayer -946.8 -1733.5 76.8 ENDIF IF t2_speech_flag = 2 IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED SYN3_23 PRINT_HELP ( SYN3_24 ) // Use the camera movement controls to move the target position. t2_speech_flag = 3 ENDIF ENDIF IF t2_speech_flag = 1 IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED SYN3_22 // Tap ~m~~widget_enter_targeting~ to target using the rocket launcher. PRINT_HELP ( SYN3_23 ) // When you're targeting, press ~m~~widget_attack~ to fire a rocket. t2_speech_flag = 2 ENDIF ENDIF IF t2_speech_flag = 0 IF timerb > 7000 PRINT_HELP_FOREVER SYN3_22 // Tap ~m~~widget_enter_targeting~ to target using the rocket launcher. t2_speech_flag = 1 ENDIF ENDIF IF IS_CAR_DEAD t2_chopper CLEAR_ONSCREEN_TIMER t2_cop_timer CLEAR_PRINTS SET_RADIO_CHANNEL RS_CLASSIC_ROCK PRINT ( TRU2_17 ) 11000 1 // Get inside the mothership. SET_CAR_STATUS t2_mothership STATUS_PHYSICS SET_CAR_CRUISE_SPEED t2_mothership 0.0 SET_CAR_TEMP_ACTION t2_mothership TEMPACT_HANDBRAKESTRAIGHT 1000 IF IS_CHAR_IN_ANY_CAR truth WARP_CHAR_FROM_CAR_TO_COORD truth -1516.4 -1596.9 41.0 ENDIF WARP_CHAR_INTO_CAR_AS_PASSENGER truth t2_mothership -1 LOCK_CAR_DOORS t2_mothership CARLOCK_UNLOCKED REMOVE_BLIP t2_truths_farm_blip ADD_BLIP_FOR_CAR t2_mothership t2_truths_farm_blip SET_BLIP_AS_FRIENDLY t2_truths_farm_blip TRUE t2_control_flag = 0 t2_goals = 2 CHECKPOINT_SAVE 99 ELSE GOSUB t2_rocket_ammo ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////// WAITING FOR PLAYER TO GET INSIDE COPCAR ///////////////////////////////////// IF t2_goals = 2 ////WAITING for player to get into mothership IF t2_control_flag = 0 IF IS_CHAR_IN_CAR scplayer t2_mothership SET_CAR_STATUS t2_mothership STATUS_PLAYER CLEAR_THIS_PRINT TRU2_17 PRINT_NOW ( TRU2_12 ) 7000 1 // Drive the Mothership to San Fran. SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH truth TRUE REMOVE_BLIP t2_truths_farm_blip ADD_BLIP_FOR_COORD -2031.3 178.5 27.9 t2_truths_farm_blip SET_BLIP_AS_FRIENDLY t2_truths_farm_blip FALSE //ALTER_WANTED_LEVEL_NO_DROP player1 2 timerb = 0 t2_car_check_flag = 1 t2_control_flag = 0 t2_goals = 3 ENDIF ENDIF //failing mission if player gets too far away IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer t2_mothership 200.0 200.0 FALSE t2_control_flag = 0 t2_goals = 4 ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////// PLAYER DRIVING MOTHERSHIP ////////////////////////////////////////////// IF t2_goals = 3 //cancelling phone call IF t2_speech_goals = 3 IF t2_speech_control_flag = 6 IF IS_BUTTON_PRESSED PAD1 TRIANGLE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 t2_speech_goals = 0 ENDIF ENDIF ENDIF IF t2_control_flag = 0 IF timerb > 7000 IF t2_speech_goals = 0 t2_speech_goals = 3 t2_speech_control_flag = 0 GOSUB t2_dialogue_setup timerb = 0 t2_control_flag = 1 ENDIF ENDIF ENDIF IF t2_control_flag = 1 //playing random speech IF t2_speech_goals = 0 IF timerb > 7000 GENERATE_RANDOM_INT_IN_RANGE 4 8 t2_speech_goals IF t2_speech_goals = 4 IF t2_played_random_speech[0] = 1 t2_speech_goals = 0 ENDIF t2_played_random_speech[0] = 1 ENDIF IF t2_speech_goals = 5 IF t2_played_random_speech[1] = 1 t2_speech_goals = 0 ENDIF t2_played_random_speech[1] = 1 ENDIF IF t2_speech_goals = 6 IF t2_played_random_speech[2] = 1 t2_speech_goals = 0 ENDIF t2_played_random_speech[2] = 1 ENDIF IF t2_speech_goals = 7 IF t2_played_random_speech[3] = 1 t2_speech_goals = 0 ENDIF t2_played_random_speech[3] = 1 ENDIF IF t2_played_random_speech[4] = 0 GET_CITY_PLAYER_IS_IN player1 t2_city IF t2_city = LEVEL_SANFRANCISCO t2_played_random_speech[4] = 1 t2_speech_goals = 10 ENDIF ENDIF t2_speech_control_flag = 0 GOSUB t2_dialogue_setup ENDIF ENDIF ENDIF IF t2_control_flag < 2 //waiting for player to reach the hub IF IS_CHAR_IN_CAR scplayer t2_mothership //////////////////DEBUG//////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q SET_CAR_COORDINATES t2_mothership -2009.3 145.2 26.7 SET_CAR_HEADING t2_mothership 359.8 ENDIF IF LOCATE_CHAR_IN_CAR_3D scplayer -2031.3 178.5 27.9 4.0 4.0 4.0 TRUE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 t2_speech_goals = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH truth FALSE SET_PLAYER_CONTROL player1 OFF MARK_MODEL_AS_NO_LONGER_NEEDED CSHER /* OPEN_SEQUENCE_TASK t2_seq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 -2028.9 172.3 27.8 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK t2_seq PERFORM_SEQUENCE_TASK scplayer t2_seq CLEAR_SEQUENCE_TASK t2_seq OPEN_SEQUENCE_TASK t2_seq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 -2030.9 172.3 27.8 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK t2_seq PERFORM_SEQUENCE_TASK truth t2_seq CLEAR_SEQUENCE_TASK t2_seq */ t2_control_flag = 0 t2_goals = 5 ENDIF ENDIF ENDIF GOSUB t2_blippage ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////// Cutscene showing truth getting arrested //////////////////////////////// IF t2_goals = 4 GOSUB check_player_is_safe IF player_is_completely_safe = 1 IF t2_control_flag = 0 CLEAR_PRINTS DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB t2_death_checks IF t2_deathcheck_flag = 1 GOTO mission_truth2_failed ENDIF CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 t2_speech_goals = 0 SET_PLAYER_DRUNKENNESS player1 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER truth TRUE GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS truth 0.0 -10.0 5.0 t2_x t2_y t2_z REQUEST_MODEL NITESTICK LOAD_SCENE t2_x t2_y t2_z CLEAR_AREA t2_x t2_y t2_z 30.0 TRUE SET_FIXED_CAMERA_POSITION t2_x t2_y t2_z 0.0 0.0 0.0 POINT_CAMERA_AT_CHAR truth FIXED JUMP_CUT CLEAR_CHAR_TASKS truth IF IS_CHAR_IN_CAR truth t2_mothership TASK_CAR_TEMP_ACTION truth t2_mothership TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF GET_NTH_CLOSEST_CAR_NODE t2_x t2_y t2_z 1 t2_x2 t2_y2 t2_z2 CREATE_CHAR PEDTYPE_MISSION1 CSHER t2_x2 t2_y2 t2_z2 t2_cop IF IS_CHAR_IN_ANY_CAR truth GIVE_WEAPON_TO_CHAR t2_cop WEAPONTYPE_NIGHTSTICK 1 ENDIF TASK_CHAR_ARREST_CHAR t2_cop truth PRINT_NOW ( TRU2_10 ) 7000 1 //The Truth has been arrested! DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB t2_death_checks IF t2_deathcheck_flag = 1 GOTO mission_truth2_failed ENDIF timera = 0 t2_control_flag = 1 ENDIF ENDIF IF t2_control_flag = 1 IF timera > 7000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF DOES_SEARCHLIGHT_EXIST t2_helilight DELETE_SEARCHLIGHT t2_helilight ENDIF DELETE_CHAR truth UNLOAD_SPECIAL_CHARACTER 1 DELETE_CAR t2_mothership DELETE_CHAR t2_cop SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //CLEAR_PRINTS PRINT_BIG M_FAIL 5000 1 PRINT_NOW ( TRU2_10 ) 5500 1 //The Truth has been arrested! DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_truth2_failed ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////// Completion cutscene //////////////////////////////////////////////////// IF t2_goals = 5 IF t2_control_flag = 0 IF timera > 1500 t2_control_flag = 1 ENDIF ENDIF IF t2_control_flag = 1 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB t2_death_checks IF t2_deathcheck_flag = 1 GOTO mission_truth2_failed ENDIF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_PLAYER_DRUNKENNESS player1 0 SET_FIXED_CAMERA_POSITION -2025.0 172.3 28.0 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2032.9 163.0 30.88 JUMP_CUT SHUT_ALL_CHARS_UP TRUE CLEAR_AREA -2028.9 172.3 27.8 30.0 TRUE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -2028.9 172.3 27.8 SET_CHAR_HEADING scplayer 167.6 OPEN_SEQUENCE_TASK t2_seq TASK_GO_STRAIGHT_TO_COORD -1 -2029.9 167.7 27.8 PEDMOVE_WALK -1 TASK_PAUSE -1 2000 //TASK_PLAY_ANIM -1 kick_floor PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 idle_tired PED 4.0 FALSE FALSE FALSE FALSE 4000 TASK_GO_STRAIGHT_TO_COORD -1 -2033.0 161.4 28.0 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK t2_seq PERFORM_SEQUENCE_TASK scplayer t2_seq CLEAR_SEQUENCE_TASK t2_seq SET_PLAYER_DRUNKENNESS player1 0 CLEAR_AREA -2030.9 172.3 27.8 30.0 TRUE CLEAR_CHAR_TASKS_IMMEDIATELY truth SET_CHAR_COORDINATES truth -2030.9 172.3 27.8 SET_CHAR_HEADING truth 167.6 OPEN_SEQUENCE_TASK t2_seq TASK_GO_STRAIGHT_TO_COORD -1 -2030.9 167.7 27.8 PEDMOVE_WALK -1 TASK_PAUSE -1 1000 TASK_GO_STRAIGHT_TO_COORD -1 -2033.0 161.4 28.0 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 115.2 CLOSE_SEQUENCE_TASK t2_seq PERFORM_SEQUENCE_TASK truth t2_seq CLEAR_SEQUENCE_TASK t2_seq DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB t2_death_checks IF t2_deathcheck_flag = 1 GOTO mission_truth2_failed ENDIF CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 t2_speech_goals = 11 t2_speech_control_flag = 0 GOSUB t2_dialogue_setup t2_control_flag = 2 ENDIF IF t2_control_flag = 2 IF t2_speech_goals = 0 t2_control_flag = 3 timera = 0 ENDIF ENDIF IF t2_control_flag = 3 IF timera > 1000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF DOES_SEARCHLIGHT_EXIST t2_helilight DELETE_SEARCHLIGHT t2_helilight ENDIF DELETE_CHAR truth UNLOAD_SPECIAL_CHARACTER 1 DELETE_CAR t2_mothership DELETE_CHAR t2_cop CLEAR_CHAR_TASKS_IMMEDIATELY scplayer //SET_CHAR_HEADING scplayer 276.1 SHUT_ALL_CHARS_UP FALSE SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_truth2_passed ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////// MISC /////////////////////////////////////////////////////////////////// //checking time has run out IF t2_goals < 2 IF t2_cop_timer = 0 t2_goals = 4 t2_control_flag = 0 SET_CHAR_HEALTH truth 10 //GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS truth 0.0 -12.0 0.0 t2_x t2_y t2_z //CREATE_CHAR PEDTYPE_MISSION1 CSHER t2_x t2_y t2_z t2_cop ENDIF ENDIF ///ingame dialogue/// GOSUB t2_overall_dialogue GOTO mission_truth2_loop // Mission truth2 failed mission_truth2_failed: REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_FLAMETHROWER REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_ROCKETLAUNCHER PRINT_BIG M_FAIL 5000 1 RETURN // mission truth2 passed mission_truth2_passed: //flag_truth2_mission1_passed = 1 SET_INT_STAT PASSED_TRUTH2 1 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 15 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 15//amount of respect PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL PLAYER1 REGISTER_MISSION_PASSED TRUTH_2 PLAYER_MADE_PROGRESS 1 flag_truth_mission_counter ++ REMOVE_BLIP truth_contact_blip TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME MOB_SF START_NEW_SCRIPT cell_phone_sanfran REMOVE_BLIP save_house_blip[15] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT save_pickupX[15] save_pickupY[15] save_pickupZ[15] RADAR_SPRITE_SAVEHOUSE save_house_blip[15] CHANGE_BLIP_DISPLAY save_house_blip[15] BLIP_ONLY START_NEW_SCRIPT garage_mission_loop REMOVE_BLIP garage_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ RADAR_SPRITE_CJ garage_contact_blip 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 number_of_save_icons = 16 ACTIVATE_GARAGE mdsSFSe REMOVE_BLIP mod_garage_blips[1] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -1941.0, 251.7, 33.4 RADAR_SPRITE_MOD_GARAGE mod_garage_blips[1] RETURN // mission cleanup mission_cleanup_truth2: //SET_CAMERA_BEHIND_PLAYER IF IS_PLAYER_PLAYING player1 SET_DRUNK_INPUT_DELAY player1 0 SET_PLAYER_DRUNKENNESS player1 0 ENDIF IF IS_STRING_EMPTY $shop_name RESTORE_CAMERA_JUMPCUT ENDIF REMOVE_IPL_DISCREETLY truthsfarm REMOVE_BLIP t2_truths_farm_blip IF NOT IS_CAR_DEAD t2_chopper HELI_GOTO_COORDS t2_chopper 0.0 0.0 200.0 0.0 200.0 ENDIF IF NOT IS_CHAR_DEAD truth DETACH_CHAR_FROM_CAR truth ENDIF IF NOT IS_CAR_DEAD t2_sadler SET_CAR_PROOFS t2_sadler FALSE FALSE FALSE FALSE FALSE ENDIF IF NOT IS_CAR_DEAD t2_mothership LOCK_CAR_DOORS t2_mothership CARLOCK_UNLOCKED ENDIF REMOVE_PICKUP t2_flame_pickup REMOVE_PICKUP t2_rocket_pickup MARK_MODEL_AS_NO_LONGER_NEEDED CAMPER MARK_MODEL_AS_NO_LONGER_NEEDED SADLER MARK_MODEL_AS_NO_LONGER_NEEDED POLMAV MARK_MODEL_AS_NO_LONGER_NEEDED CSHER MARK_MODEL_AS_NO_LONGER_NEEDED FLAME MARK_MODEL_AS_NO_LONGER_NEEDED ROCKETLA MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED NITESTICK REMOVE_CHAR_ELEGANTLY truth UNLOAD_SPECIAL_CHARACTER 1 //CLEAR_ONSCREEN_COUNTER t2_total_weed_burnt CLEAR_ONSCREEN_TIMER t2_cop_timer IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF SHUT_ALL_CHARS_UP FALSE REMOVE_BLIP t2_weed_blips[0] REMOVE_BLIP t2_weed_blips[1] REMOVE_BLIP t2_weed_blips[2] REMOVE_BLIP t2_weed_blips[3] REMOVE_BLIP t2_weed_blips[4] REMOVE_BLIP t2_weed_blips[5] REMOVE_BLIP t2_weed_blips[6] REMOVE_BLIP t2_weed_blips[7] REMOVE_BLIP t2_weed_blips[8] REMOVE_BLIP t2_weed_blips[9] REMOVE_BLIP t2_weed_blips[10] REMOVE_BLIP t2_weed_blips[11] REMOVE_BLIP t2_weed_blips[12] REMOVE_BLIP t2_weed_blips[13] REMOVE_BLIP t2_weed_blips[14] REMOVE_BLIP t2_weed_blips[15] REMOVE_BLIP t2_weed_blips[16] REMOVE_BLIP t2_weed_blips[17] REMOVE_BLIP t2_weed_blips[18] REMOVE_BLIP t2_weed_blips[19] REMOVE_BLIP t2_weed_blips[20] REMOVE_BLIP t2_weed_blips[21] REMOVE_BLIP t2_weed_blips[22] REMOVE_BLIP t2_weed_blips[23] REMOVE_BLIP t2_weed_blips[24] REMOVE_BLIP t2_weed_blips[25] REMOVE_BLIP t2_weed_blips[26] REMOVE_BLIP t2_weed_blips[27] REMOVE_BLIP t2_weed_blips[28] REMOVE_BLIP t2_weed_blips[29] REMOVE_BLIP t2_weed_blips[30] REMOVE_BLIP t2_weed_blips[31] REMOVE_BLIP t2_weed_blips[32] REMOVE_BLIP t2_weed_blips[33] REMOVE_BLIP t2_weed_blips[34] REMOVE_BLIP t2_weed_blips[35] REMOVE_BLIP t2_weed_blips[36] REMOVE_BLIP t2_weed_blips[37] REMOVE_BLIP t2_weed_blips[38] REMOVE_BLIP t2_weed_blips[39] REMOVE_BLIP t2_weed_blips[40] REMOVE_BLIP t2_weed_blips[41] REMOVE_BLIP t2_weed_blips[42] REMOVE_BLIP t2_weed_blips[43] GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////// GOSUBS /////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// t2_death_checks://///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF IS_CHAR_DEAD truth CLEAR_PRINTS PRINT_NOW ( TRU2_08 ) 7000 1 //The Truth has been killed! t2_deathcheck_flag = 1 ENDIF IF IS_CAR_DEAD t2_mothership CLEAR_PRINTS PRINT_NOW ( TRU2_09 ) 7000 1 //The Mothership has been destroyed! t2_deathcheck_flag = 1 ENDIF IF IS_CAR_DEAD t2_chopper IF DOES_SEARCHLIGHT_EXIST t2_helilight DELETE_SEARCHLIGHT t2_helilight ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// t2_flamethrower://////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF t2_flamethrower_control_flag = 0 GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_FLAMETHROWER t2_flame_ammo IF t2_flame_ammo = 0 REMOVE_BLIP t2_weed_blips[0] REMOVE_BLIP t2_weed_blips[1] REMOVE_BLIP t2_weed_blips[2] REMOVE_BLIP t2_weed_blips[3] REMOVE_BLIP t2_weed_blips[4] REMOVE_BLIP t2_weed_blips[5] REMOVE_BLIP t2_weed_blips[6] REMOVE_BLIP t2_weed_blips[7] REMOVE_BLIP t2_weed_blips[8] REMOVE_BLIP t2_weed_blips[9] REMOVE_BLIP t2_weed_blips[10] REMOVE_BLIP t2_weed_blips[11] REMOVE_BLIP t2_weed_blips[12] REMOVE_BLIP t2_weed_blips[13] REMOVE_BLIP t2_weed_blips[14] REMOVE_BLIP t2_weed_blips[15] REMOVE_BLIP t2_weed_blips[16] REMOVE_BLIP t2_weed_blips[17] REMOVE_BLIP t2_weed_blips[18] REMOVE_BLIP t2_weed_blips[19] REMOVE_BLIP t2_weed_blips[20] REMOVE_BLIP t2_weed_blips[21] REMOVE_BLIP t2_truths_farm_blip CREATE_PICKUP_WITH_AMMO flame PICKUP_ONCE 3000 -1100.3 -1640.4 76.4 t2_flame_pickup ADD_BLIP_FOR_PICKUP t2_flame_pickup t2_truths_farm_blip SET_BLIP_AS_FRIENDLY t2_truths_farm_blip FALSE PRINT_NOW ( TRU2_13 ) 7000 1 //There is more ammo near the shed. t2_flamethrower_control_flag = 1 ENDIF ENDIF IF t2_flamethrower_control_flag = 1 IF HAS_PICKUP_BEEN_COLLECTED t2_flame_pickup REMOVE_BLIP t2_truths_farm_blip IF t2_weed_burnt[0] = 0 ADD_BLIP_FOR_COORD -1061.9 -1630.7 75.3 t2_weed_blips[0] //1st row, 1st part CHANGE_BLIP_SCALE t2_weed_blips[0] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[0] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[1] = 0 ADD_BLIP_FOR_COORD -1062.3 -1621.4 75.3 t2_weed_blips[1] //1st row, 2st part CHANGE_BLIP_SCALE t2_weed_blips[1] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[1] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[2] = 0 ADD_BLIP_FOR_COORD -1052.8 -1630.8 75.3 t2_weed_blips[2] //2st row, 1st part CHANGE_BLIP_SCALE t2_weed_blips[2] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[2] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[3] = 0 ADD_BLIP_FOR_COORD -1052.8 -1621.4 75.3 t2_weed_blips[3] //2st row, 2st part CHANGE_BLIP_SCALE t2_weed_blips[3] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[3] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[4] = 0 ADD_BLIP_FOR_COORD -1042.8 -1630.8 75.3 t2_weed_blips[4] //3st row, 1st part CHANGE_BLIP_SCALE t2_weed_blips[4] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[4] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[5] = 0 ADD_BLIP_FOR_COORD -1042.8 -1621.4 75.3 t2_weed_blips[5] //3st row, 2st part CHANGE_BLIP_SCALE t2_weed_blips[5] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[5] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[6] = 0 ADD_BLIP_FOR_COORD -1032.8 -1630.8 75.3 t2_weed_blips[6] //4st row, 1st part CHANGE_BLIP_SCALE t2_weed_blips[6] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[6] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[7] = 0 ADD_BLIP_FOR_COORD -1032.8 -1621.4 75.3 t2_weed_blips[7] //4st row, 2st part CHANGE_BLIP_SCALE t2_weed_blips[7] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[7] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[8] = 0 ADD_BLIP_FOR_COORD -1022.8 -1630.8 75.3 t2_weed_blips[8] //5st row, 1st part CHANGE_BLIP_SCALE t2_weed_blips[8] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[8] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[9] = 0 ADD_BLIP_FOR_COORD -1022.8 -1621.4 75.3 t2_weed_blips[9] //5st row, 2st part CHANGE_BLIP_SCALE t2_weed_blips[9] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[9] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[10] = 0 ADD_BLIP_FOR_COORD -1012.1 -1666.8 75.3 t2_weed_blips[10] //6st row, 1st part CHANGE_BLIP_SCALE t2_weed_blips[10] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[10] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[11] = 0 ADD_BLIP_FOR_COORD -1012.8 -1657.4 75.3 t2_weed_blips[11] //6st row, 2st part CHANGE_BLIP_SCALE t2_weed_blips[11] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[11] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[12] = 0 ADD_BLIP_FOR_COORD -1012.8 -1648.4 75.3 t2_weed_blips[12] //6st row, 3st part CHANGE_BLIP_SCALE t2_weed_blips[12] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[12] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[13] = 0 ADD_BLIP_FOR_COORD -1000.1 -1666.8 75.3 t2_weed_blips[13] //7st row, 1st part CHANGE_BLIP_SCALE t2_weed_blips[13] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[13] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[14] = 0 ADD_BLIP_FOR_COORD -1000.8 -1657.4 75.3 t2_weed_blips[14] //7st row, 2st part CHANGE_BLIP_SCALE t2_weed_blips[14] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[14] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[15] = 0 ADD_BLIP_FOR_COORD -1000.8 -1648.4 75.3 t2_weed_blips[15] //7st row, 3st part CHANGE_BLIP_SCALE t2_weed_blips[15] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[15] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[16] = 0 ADD_BLIP_FOR_COORD -992.1 -1702.8 75.3 t2_weed_blips[16] //8st row, 1st part CHANGE_BLIP_SCALE t2_weed_blips[16] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[16] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[17] = 0 ADD_BLIP_FOR_COORD -992.8 -1693.4 75.3 t2_weed_blips[17] //8st row, 2st part CHANGE_BLIP_SCALE t2_weed_blips[17] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[17] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[18] = 0 ADD_BLIP_FOR_COORD -992.8 -1684.4 75.3 t2_weed_blips[18] //8st row, 3st part CHANGE_BLIP_SCALE t2_weed_blips[18] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[18] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[19] = 0 ADD_BLIP_FOR_COORD -982.1 -1702.8 75.3 t2_weed_blips[19] //9st row, 1st part CHANGE_BLIP_SCALE t2_weed_blips[19] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[19] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[20] = 0 ADD_BLIP_FOR_COORD -982.8 -1693.4 75.3 t2_weed_blips[20] //9st row, 2st part CHANGE_BLIP_SCALE t2_weed_blips[20] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[20] COORD_BLIP_APPEARANCE_ENEMY ENDIF IF t2_weed_burnt[21] = 0 ADD_BLIP_FOR_COORD -982.8 -1684.4 75.3 t2_weed_blips[21] //9st row, 3st part CHANGE_BLIP_SCALE t2_weed_blips[21] 1 SET_COORD_BLIP_APPEARANCE t2_weed_blips[21] COORD_BLIP_APPEARANCE_ENEMY ENDIF PRINT_NOW ( TRU2_01 ) 11000 1 //Go and help The Truth destroy the weed. t2_flamethrower_control_flag = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// t2_rocket_ammo://////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF t2_rocketlauncher_control_flag = 0 GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_ROCKETLAUNCHER t2_flame_ammo IF t2_flame_ammo = 0 REMOVE_BLIP t2_truths_farm_blip CREATE_PICKUP_WITH_AMMO ROCKETLA PICKUP_ONCE 10 -1100.3 -1640.4 76.4 t2_rocket_pickup ADD_BLIP_FOR_PICKUP t2_rocket_pickup t2_truths_farm_blip SET_BLIP_AS_FRIENDLY t2_truths_farm_blip FALSE PRINT_NOW ( TRU2_13 ) 7000 1 //There is more ammo near the shed. t2_rocketlauncher_control_flag = 1 ENDIF ENDIF IF t2_rocketlauncher_control_flag = 1 IF HAS_PICKUP_BEEN_COLLECTED t2_rocket_pickup REMOVE_BLIP t2_truths_farm_blip IF NOT IS_CAR_DEAD t2_chopper ADD_BLIP_FOR_CAR t2_chopper t2_truths_farm_blip PRINT_NOW ( TRU2_15 ) 11000 1 // Take out the chopper! ENDIF t2_rocketlauncher_control_flag = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// t2_blippage://////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //sorting the blippage IF t2_car_check_flag = 0 IF IS_CHAR_IN_CAR scplayer t2_mothership REMOVE_BLIP t2_truths_farm_blip ADD_BLIP_FOR_COORD -2031.3 178.5 27.9 t2_truths_farm_blip SET_BLIP_AS_FRIENDLY t2_truths_farm_blip FALSE t2_car_check_flag = 1 ENDIF ENDIF IF t2_car_check_flag = 1 IF NOT IS_CHAR_IN_CAR scplayer t2_mothership REMOVE_BLIP t2_truths_farm_blip ADD_BLIP_FOR_CAR t2_mothership t2_truths_farm_blip SET_BLIP_AS_FRIENDLY t2_truths_farm_blip TRUE t2_car_check_flag = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// t2_drunken_filter:////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF t2_goals = 0 //increasing the motion blur IF t2_total_weed_burnt > 0 IF t2_total_weed_burnt < t2_weed_check IF t2_beer_goggles < 200 t2_beer_goggles ++ t2_beer_goggles ++ ENDIF t2_weed_check -- ENDIF ENDIF //increasing the drunkenness factor IF t2_faded_flag = 0 IF t2_total_weed_burnt < 40 t2_drunkeness ++ t2_faded_flag = 1 ENDIF ENDIF IF t2_faded_flag = 1 IF t2_total_weed_burnt < 30 t2_drunkeness ++ t2_faded_flag = 2 ENDIF ENDIF IF t2_faded_flag = 2 IF t2_total_weed_burnt < 20 t2_drunkeness ++ t2_faded_flag = 3 ENDIF ENDIF IF t2_faded_flag = 3 IF t2_total_weed_burnt < 10 t2_drunkeness ++ t2_faded_flag = 4 ENDIF ENDIF SET_DRUNK_INPUT_DELAY player1 t2_drunkeness SET_PLAYER_DRUNKENNESS player1 t2_beer_goggles ENDIF IF t2_goals = 2 OR t2_goals = 3 IF timera > 660 IF t2_beer_goggles > 1 t2_beer_goggles -= 1 ENDIF SET_DRUNK_INPUT_DELAY player1 t2_drunkeness SET_PLAYER_DRUNKENNESS player1 t2_beer_goggles timera = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// t2_dialogue_setup:////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF t2_speech_goals = 1 $t2_print_label[0] = &TRU2_AA // Assholes! Republican assholes! $t2_print_label[1] = &TRU2_AB // I don't feel too good.. $t2_print_label[2] = &TRU2_AC // It's a crying shame, ain't it. $t2_print_label[3] = &TRU2_AD // No I mean I think I'm gonna black out! $t2_print_label[4] = &TRU2_AE // Fight the ocean and you will drown, brother! $t2_print_label[5] = &TRU2_BA // Carl, we'll take the mothership and get our shit out of here! $t2_print_label[6] = &TRU2_BB // Go get her fired up! $t2_print_label[7] = &TRU2_BC // I'll finish burning and follow you! t2_audio_label[0] = SOUND_TRU2_AA t2_audio_label[1] = SOUND_TRU2_AB t2_audio_label[2] = SOUND_TRU2_AC t2_audio_label[3] = SOUND_TRU2_AD t2_audio_label[4] = SOUND_TRU2_AE t2_audio_label[5] = SOUND_TRU2_BA t2_audio_label[6] = SOUND_TRU2_BB t2_audio_label[7] = SOUND_TRU2_BC t2_last_label = 8 ENDIF IF t2_speech_goals = 2 $t2_print_label[0] = &TRU2_CA // Hey, I'm kinda busy, lemme get back at you. $t2_print_label[1] = &TRU2_CB // Carl, it's me! Get those cops off my damned tail! t2_audio_label[0] = SOUND_TRU2_CA t2_audio_label[1] = SOUND_TRU2_CB t2_last_label = 2 ENDIF IF t2_speech_goals = 3 $t2_print_label[0] = &TRU2_DA // What you pulled over for? $t2_print_label[1] = &TRU2_DB // You better drive. I haven't driven in 15 years. $t2_print_label[2] = &TRU2_DC // You were doing alright! $t2_print_label[3] = &TRU2_DD // Yeah, then the fear hit me. $t2_print_label[4] = &TRU2_DE // Now I'm rolling a number to calm the waves! $t2_print_label[5] = &TRU2_OA // Shit, I better call Cesar! $t2_print_label[6] = &TRU2_OB // (Dialing number) $t2_print_label[7] = &TRU2_OC // Yo, Cesar, no time to talk, dude! $t2_print_label[8] = &TRU2_OD // I'm on my way to San Fierro, ok, $t2_print_label[9] = &TRU2_OE // I'll meet you and Kendl at that garage I won in that race! $t2_print_label[10] = &TRU2_OF // Ok, gotta go, bye! t2_audio_label[0] = SOUND_TRU2_DA t2_audio_label[1] = SOUND_TRU2_DB t2_audio_label[2] = SOUND_TRU2_DC t2_audio_label[3] = SOUND_TRU2_DD t2_audio_label[4] = SOUND_TRU2_DE t2_audio_label[5] = SOUND_TRU2_OA t2_audio_label[6] = SOUND_MOBILE_DIALING t2_audio_label[7] = SOUND_TRU2_OC t2_audio_label[8] = SOUND_TRU2_OD t2_audio_label[9] = SOUND_TRU2_OE t2_audio_label[10] = SOUND_TRU2_OF t2_last_label = 11 ENDIF IF t2_speech_goals = 4 $t2_print_label[0] = &TRU2_EA // Jesus, we're screwed, when did you get this? $t2_print_label[1] = &TRU2_EB // 1967 $t2_print_label[2] = &TRU2_EC // How do you get around if you don't drive? $t2_print_label[3] = &TRU2_ED // I have an astral goat called 'Herbie'. $t2_print_label[4] = &TRU2_EF // Faster than most, but she's getting old.. $t2_print_label[5] = &TRU2_EG // Yeah whatever man, you're talking shit. t2_audio_label[0] = SOUND_TRU2_EA t2_audio_label[1] = SOUND_TRU2_EB t2_audio_label[2] = SOUND_TRU2_EC t2_audio_label[3] = SOUND_TRU2_ED t2_audio_label[4] = SOUND_TRU2_EF t2_audio_label[5] = SOUND_TRU2_EG t2_last_label = 6 ENDIF IF t2_speech_goals = 5 $t2_print_label[0] = &TRU2_FA // Hey, you want a hit on this? A little Temple Charis $t2_print_label[1] = &TRU2_FB // in a cocktail with some Nepalese munga munga. $t2_print_label[2] = &TRU2_FC // Put that thing out, I can't see. $t2_print_label[3] = &TRU2_FD // Mellow out, brother. Its good shit. $t2_print_label[4] = &TRU2_FE // Put it out, motherfucker. I'm warning you. $t2_print_label[5] = &TRU2_FF // Wooah, chill the fuck out. $t2_print_label[6] = &TRU2_FG // Firstly, you are a real buzz kill, amigo. $t2_print_label[7] = &TRU2_FH // Secondly, I never made love to my mother. She wouldn't. $t2_print_label[8] = &TRU2_FJ // And thirdly, we're in this together, so be cool. $t2_print_label[9] = &TRU2_FK // Sorry. I just don't like driving when I'm faded. t2_audio_label[0] = SOUND_TRU2_FA t2_audio_label[1] = SOUND_TRU2_FB t2_audio_label[2] = SOUND_TRU2_FC t2_audio_label[3] = SOUND_TRU2_FD t2_audio_label[4] = SOUND_TRU2_FE t2_audio_label[5] = SOUND_TRU2_FF t2_audio_label[6] = SOUND_TRU2_FG t2_audio_label[7] = SOUND_TRU2_FH t2_audio_label[8] = SOUND_TRU2_FJ t2_audio_label[9] = SOUND_TRU2_FK t2_last_label = 10 ENDIF IF t2_speech_goals = 6 $t2_print_label[0] = &TRU2_GA // Hey, does this thing go any faster? $t2_print_label[1] = &TRU2_GB // Man, we got 3 tonnes of grass on board, $t2_print_label[2] = &TRU2_GC // the engine block is held together with a macrame hammock and it's running on 15-year-old cooking oil. $t2_print_label[3] = &TRU2_GE // Shit. Can you shoot? $t2_print_label[4] = &TRU2_GF // Shoot? I'm a hippy! $t2_print_label[5] = &TRU2_GG // The only thing I've shot is acid. $t2_print_label[6] = &TRU2_GH // I heard about a guy snorting it once. $t2_print_label[7] = &TRU2_GJ // Thought his nose was a kangaroo and the moon was a dog! t2_audio_label[0] = SOUND_TRU2_GA t2_audio_label[1] = SOUND_TRU2_GB t2_audio_label[2] = SOUND_TRU2_GC t2_audio_label[3] = SOUND_TRU2_GE t2_audio_label[4] = SOUND_TRU2_GF t2_audio_label[5] = SOUND_TRU2_GG t2_audio_label[6] = SOUND_TRU2_GH t2_audio_label[7] = SOUND_TRU2_GJ t2_last_label = 8 ENDIF IF t2_speech_goals = 7 $t2_print_label[0] = &TRU2_HA // What's with all the aluminium foil, man? $t2_print_label[1] = &TRU2_HB // Protection from mind control, dude. $t2_print_label[2] = &TRU2_HC // Mind control? $t2_print_label[3] = &TRU2_HD // Induction of images, sound or emotion using microwave radiation. $t2_print_label[4] = &TRU2_HE // D'you know how many government satellites $t2_print_label[5] = &TRU2_HF // are watching any citizen at any one moment? $t2_print_label[6] = &TRU2_HG // No. $t2_print_label[7] = &TRU2_HH // Twenty-three. $t2_print_label[8] = &TRU2_HJ // Do you know how many religious relics are kept at the Pentagon? $t2_print_label[9] = &TRU2_HK // No I don't. $t2_print_label[10] = &TRU2_HL // Twenty-three. $t2_print_label[11] = &TRU2_HM // You see a pattern emerging here? $t2_print_label[12] = &TRU2_HN // Dude, I'm seeing patterns all over the place! $t2_print_label[13] = &TRU2_HO // Get that smoke outta my face! t2_audio_label[0] = SOUND_TRU2_HA t2_audio_label[1] = SOUND_TRU2_HB t2_audio_label[2] = SOUND_TRU2_HC t2_audio_label[3] = SOUND_TRU2_HD t2_audio_label[4] = SOUND_TRU2_HE t2_audio_label[5] = SOUND_TRU2_HF t2_audio_label[6] = SOUND_TRU2_HG t2_audio_label[7] = SOUND_TRU2_HH t2_audio_label[8] = SOUND_TRU2_HJ t2_audio_label[9] = SOUND_TRU2_HK t2_audio_label[10] = SOUND_TRU2_HL t2_audio_label[11] = SOUND_TRU2_HM t2_audio_label[12] = SOUND_TRU2_HN t2_audio_label[13] = SOUND_TRU2_HO t2_last_label = 14 ENDIF IF t2_speech_goals = 8 $t2_print_label[0] = &TRU2_JA // We got a chopper on our tail, we'll never shake 'em now. $t2_print_label[1] = &TRU2_JB // Hold on, I got a little something back here I was saving for a rainy day.. t2_audio_label[0] = SOUND_TRU2_JA t2_audio_label[1] = SOUND_TRU2_JB t2_last_label = 2 ENDIF IF t2_speech_goals = 9 $t2_print_label[0] = &TRU2_KA // Holy motherfucker! $t2_print_label[1] = &TRU2_KB // Where'd you get this? $t2_print_label[2] = &TRU2_KC // Found it in a bail of Thai Sticks. $t2_print_label[3] = &TRU2_KD // Shame really, I was going to make it into a lamp. t2_audio_label[0] = SOUND_TRU2_KA t2_audio_label[1] = SOUND_TRU2_KB t2_audio_label[2] = SOUND_TRU2_KC t2_audio_label[3] = SOUND_TRU2_KD t2_last_label = 4 ENDIF IF t2_speech_goals = 10 $t2_print_label[0] = &TRU2_LA // There she is, brother; San Fierro: the City of Psychadelic Wonders! $t2_print_label[1] = &TRU2_LB // I'm amazed I've never been before. $t2_print_label[2] = &TRU2_LC // There ain't a better place to escape the man, man. $t2_print_label[3] = &TRU2_MA // Ok, Mr. San Fierro, where's the spot at? $t2_print_label[4] = &TRU2_MB // It's in Doherty on the East side of Fierro, $t2_print_label[5] = &TRU2_MC // between Garcia and Easter Basin. t2_audio_label[0] = SOUND_TRU2_LA t2_audio_label[1] = SOUND_TRU2_LB t2_audio_label[2] = SOUND_TRU2_LC t2_audio_label[3] = SOUND_TRU2_MA t2_audio_label[4] = SOUND_TRU2_MB t2_audio_label[5] = SOUND_TRU2_MC t2_last_label = 6 ENDIF IF t2_speech_goals = 11 $t2_print_label[0] = &TRU2_NA // This is the place. $t2_print_label[1] = &TRU2_NB // Jesus, dude, you've been fed a bummer! t2_audio_label[0] = SOUND_TRU2_NA t2_audio_label[1] = SOUND_TRU2_NB t2_last_label = 2 ENDIF IF t2_speech_goals = 12 $t2_print_label[0] = &TRUX_AA // Get in the car, quick! $t2_print_label[1] = &TRUX_AB // Get in the car, it's a Faraday cage! $t2_print_label[2] = &TRUX_AC // C'mon, Carl, get in! t2_audio_label[0] = SOUND_TRUX_AA t2_audio_label[1] = SOUND_TRUX_AB t2_audio_label[2] = SOUND_TRUX_AC t2_last_label = t2_random_last_label ENDIF t2_slot_load = t2_speech_control_flag t2_slot1 = 0 t2_slot2 = 0 t2_play_which_slot = 1 //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// t2_overall_dialogue://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF t2_speech_goals = 1 //While the truth and the player are burning the weed OR t2_speech_goals = 2 //telling player that he needs to get the cops off his tail OR t2_speech_goals = 8 //telling player a chopper is following OR t2_speech_goals = 9 //telling player where truth got the rocketlauncher from OR t2_speech_goals = 11 //final piece of text IF t2_speech_control_flag < t2_last_label GOSUB t2_loading_dialogue GOSUB t2_playing_dialogue IF NOT IS_CHAR_DEAD truth GOSUB t2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $t2_print_label[t2_speech_control_flag] t2_slot1 = 0 t2_slot2 = 0 ENDIF ELSE t2_speech_goals = 0 ENDIF ENDIF IF t2_goals = 3 OR t2_goals = 4 IF IS_CHAR_SITTING_IN_CAR scplayer t2_mothership IF t2_speech_goals = 3 //telling player why truth has stopped driving IF t2_speech_control_flag < t2_last_label GOSUB t2_loading_dialogue GOSUB t2_playing_dialogue IF NOT IS_CHAR_DEAD truth GOSUB t2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $t2_print_label[t2_speech_control_flag] t2_slot1 = 0 t2_slot2 = 0 ENDIF ELSE timerb = 0 t2_speech_goals = 0 ENDIF ENDIF IF t2_speech_goals = 4 //random banter 1 OR t2_speech_goals = 5 //random banter 2 OR t2_speech_goals = 6 //random banter 3 OR t2_speech_goals = 7 //random banter 4 OR t2_speech_goals = 10 //telling player about san fran IF t2_speech_control_flag < t2_last_label GOSUB t2_loading_dialogue GOSUB t2_playing_dialogue IF NOT IS_CHAR_DEAD truth GOSUB t2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $t2_print_label[t2_speech_control_flag] t2_slot1 = 0 t2_slot2 = 0 ENDIF ELSE IF t2_drunkeness > 0 t2_drunkeness -= 1 ENDIF timerb = 0 t2_speech_goals = 0 ENDIF ENDIF ENDIF IF NOT IS_CHAR_IN_CAR scplayer t2_mothership IF t2_speech_goals < 12 IF t2_speech_control_flag < t2_last_label t2_speech_control_flag ++ ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $t2_print_label[t2_speech_control_flag] CLEAR_PRINTS t2_storing_speech_goals_number = t2_speech_goals t2_storing_speech_control_number = t2_speech_control_flag t2_speech_goals = 12 GENERATE_RANDOM_INT_IN_RANGE 0 3 t2_speech_control_flag t2_random_last_label = t2_speech_control_flag + 1 GOSUB t2_dialogue_setup ENDIF ENDIF ENDIF IF t2_goals < 4 IF t2_speech_goals = 12 //carl is out of car IF NOT IS_CHAR_IN_CAR scplayer t2_mothership IF t2_speech_control_flag < t2_last_label GOSUB t2_loading_dialogue GOSUB t2_playing_dialogue IF NOT IS_CHAR_DEAD truth GOSUB t2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $t2_print_label[t2_speech_control_flag] t2_slot1 = 0 t2_slot2 = 0 ENDIF ELSE PRINT ( TRU2_17 ) 11000 1 // Get inside the mothership. t2_speech_goals = 13 ENDIF ENDIF IF IS_CHAR_SITTING_IN_CAR scplayer t2_mothership CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $t2_print_label[t2_speech_control_flag] t2_speech_goals = 14 t2_speech_control_flag = 0 CLEAR_PRINTS //GOSUB t2_dialogue_setup ENDIF ENDIF IF t2_speech_goals = 13 //carl has been out of car and has returned IF IS_CHAR_SITTING_IN_CAR scplayer t2_mothership t2_speech_goals = 14 t2_speech_control_flag = 0 CLEAR_PRINTS //GOSUB t2_dialogue_setup ENDIF ENDIF IF t2_speech_goals = 14 //where player has returned to the car IF IS_CHAR_SITTING_IN_CAR scplayer t2_mothership timerb = 0 t2_speech_goals = t2_storing_speech_goals_number t2_speech_control_flag = t2_storing_speech_control_number GOSUB t2_dialogue_setup IF t2_storing_speech_goals_number = 0 PRINT ( TRU2_12 ) 7000 1 // Drive the Mothership to San Fran. ENDIF ENDIF IF NOT IS_CHAR_IN_CAR scplayer t2_mothership CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $t2_print_label[t2_speech_control_flag] t2_speech_goals = 12 GENERATE_RANDOM_INT_IN_RANGE 0 3 t2_speech_control_flag t2_random_last_label = t2_speech_control_flag + 1 GOSUB t2_dialogue_setup ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// t2_loading_dialogue://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF t2_slot_load < t2_last_label //slot 1 IF t2_slot1 = 0 LOAD_MISSION_AUDIO 1 t2_audio_label[t2_slot_load] t2_slot_load ++ t2_slot1 = 1 ENDIF //slot 2 IF t2_slot2 = 0 LOAD_MISSION_AUDIO 2 t2_audio_label[t2_slot_load] t2_slot_load ++ t2_slot2 = 1 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// t2_playing_dialogue://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //slot 1 IF t2_play_which_slot = 1 IF t2_slot1 = 1 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $t2_print_label[t2_speech_control_flag] ) 4500 1 // t2_slot1 = 2 ENDIF ENDIF ENDIF //slot 2 IF t2_play_which_slot = 2 IF t2_slot2 = 1 IF HAS_MISSION_AUDIO_LOADED 2 PLAY_MISSION_AUDIO 2 PRINT_NOW ( $t2_print_label[t2_speech_control_flag] ) 4500 1 // t2_slot2 = 2 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// t2_finishing_dialogue:////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //slot 1 IF t2_slot1 = 2 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_THIS_PRINT $t2_print_label[t2_speech_control_flag] t2_speech_control_flag ++ t2_play_which_slot = 2 t2_slot1 = 0 ENDIF ENDIF //slot 2 IF t2_slot2 = 2 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT $t2_print_label[t2_speech_control_flag] t2_speech_control_flag ++ t2_play_which_slot = 1 t2_slot2 = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// } MISSION_START // ******************************************************************************************* // ********************************** Race Tournament **************************************** // ******************************************************************************************* // Mission start stuff SCRIPT_NAME bcesar4 GOSUB mission_start_bc4 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_bc4_failed ENDIF GOSUB mission_cleanup_bc4 MISSION_END // ***************************************Mission Start************************************* { mission_start_bc4: flag_player_on_mission = 1 LVAR_INT bc4_players_car mission_bc4_loop: WAIT 0 // race 1***************************************************************** IF flag_bcesar_mission_counter = 0 //START LOAD_MISSION_TEXT BCESAR4 IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer bc4_players_car SET_CAR_AS_MISSION_CAR bc4_players_car GET_CAR_COORDINATES bc4_players_car x y z z += 1000.0 SET_CAR_COORDINATES bc4_players_car x y z FREEZE_CAR_POSITION bc4_players_car TRUE ELSE bc4_players_car = -1 ENDIF CLEAR_AREA 1557.1616 24.3050 22.7313 100.0 TRUE MAKE_PLAYER_SAFE_FOR_CUTSCENE Player1 SWITCH_STREAMING OFF LOAD_CUTSCENE BCESAR4 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE flag_stage_of_bcesar_race = 1 start_the_bcesar_race = 1 IF NOT bc4_players_car = -1 IF NOT IS_CAR_DEAD bc4_players_car FREEZE_CAR_POSITION bc4_players_car FALSE z -= 1000.0 SET_CAR_COORDINATES bc4_players_car x y z ENDIF ENDIF GOTO mission_bc4_passed ENDIF IF flag_bcesar_mission_counter = 2 // player failed Wu Zi Mu race IF IS_CHAR_IN_AREA_3D scplayer -782.3699 -147.9480 19.5518 -405.0757 -237.5195 91.1306 FALSE flag_player_on_mission = 1 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REQUEST_MODEL STALLION REQUEST_MODEL SABRE REQUEST_MODEL FORTUNE REQUEST_MODEL WMYST REQUEST_MODEL WMYBMX REQUEST_MODEL SPECIAL01 REQUEST_ANIMATION KISSING CLEAR_AREA -518.0490 -189.3775 79.3468 100.0 FALSE SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION -535.8186 -198.0116 80.8647 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -535.5711 -197.1029 80.5285 JUMP_CUT IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer car IF car > 0 IF NOT IS_CAR_DEAD car SET_CAR_VISIBLE car FALSE FREEZE_CAR_POSITION car TRUE SET_CAR_COLLISION car FALSE SET_CHAR_VISIBLE scplayer FALSE ENDIF ENDIF ENDIF ENDIF WAIT 1000 WHILE NOT HAS_MODEL_LOADED STALLION AND NOT HAS_MODEL_LOADED SABRE AND NOT HAS_MODEL_LOADED FORTUNE AND NOT HAS_MODEL_LOADED WMYST AND NOT HAS_MODEL_LOADED WMYBMX AND NOT HAS_MODEL_LOADED SPECIAL01 WAIT 0 ENDWHILE WHILE NOT HAS_ANIMATION_LOADED KISSING WAIT 0 ENDWHILE LVAR_INT a_car1 a_car2 a_car3 a_char1 a_char2 a_char3 a_seq CREATE_CAR STALLION -536.7188 -192.5453 77.404 a_car1 CREATE_CHAR PEDTYPE_MISSION1 WMYST -530.4067 -188.8082 77.3986 a_char1 SET_CAR_HEADING a_car1 287.0 OPEN_SEQUENCE_TASK a_seq TASK_PLAY_ANIM -1 GIFT_GIVE KISSING 1000.0 FALSE FALSE FALSE FALSE -2 TASK_ENTER_CAR_AS_DRIVER -1 a_car1 -2 TASK_CAR_DRIVE_TO_COORD -1 a_car1 -507.5502 -99.2875 61.825 10.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH CLOSE_SEQUENCE_TASK a_seq PERFORM_SEQUENCE_TASK a_char1 a_Seq CLEAR_SEQUENCE_TASK a_seq CREATE_CAR SABRE -536.1580 -185.2865 77.398 a_car2 CREATE_CHAR PEDTYPE_MISSION1 WMYBMX -530.4067 -187.8082 77.3986 a_char2 SET_CHAR_HEADING a_char2 180.0 SET_CAR_HEADING a_car2 243.0 OPEN_SEQUENCE_TASK a_seq TASK_PLAY_ANIM -1 GIFT_GET KISSING 1000.0 FALSE FALSE FALSE FALSE -2 TASK_ENTER_CAR_AS_DRIVER -1 a_car2 -2 TASK_CAR_DRIVE_TO_COORD -1 a_car2 -507.5502 -99.2875 61.825 10.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH CLOSE_SEQUENCE_TASK a_seq PERFORM_SEQUENCE_TASK a_char2 a_Seq CLEAR_SEQUENCE_TASK a_seq CREATE_CAR FORTUNE -524.9425 -184.2080 77.2766 a_car3 CREATE_CHAR_INSIDE_CAR a_car3 PEDTYPE_MISSION1 SPECIAL01 a_char3 SET_CAR_HEADING a_car3 239.0 OPEN_SEQUENCE_TASK a_seq TASK_PAUSE -1 7000 TASK_CAR_DRIVE_TO_COORD -1 a_car3 -507.5502 -99.2875 61.825 10.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH CLOSE_SEQUENCE_TASK a_seq PERFORM_SEQUENCE_TASK a_char3 a_Seq CLEAR_SEQUENCE_TASK a_seq DO_FADE 800 FADE_IN SKIP_CUTSCENE_START WAIT 10000 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SKIP_CUTSCENE_END IF NOT IS_CAR_DEAD a_car1 DELETE_CAR a_car1 ENDIF IF NOT IS_CAR_DEAD a_car2 DELETE_CAR a_car2 ENDIF IF NOT IS_CAR_DEAD a_car3 DELETE_CAR a_car3 ENDIF IF NOT IS_CHAR_DEAD a_char1 DELETE_CHAR a_char1 ENDIF IF NOT IS_CHAR_DEAD a_char2 DELETE_CHAR a_char2 ENDIF IF NOT IS_CHAR_DEAD a_char3 DELETE_CHAR a_char3 ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED STALLION MARK_MODEL_AS_NO_LONGER_NEEDED SABRE MARK_MODEL_AS_NO_LONGER_NEEDED FORTUNE MARK_MODEL_AS_NO_LONGER_NEEDED WMYST MARK_MODEL_AS_NO_LONGER_NEEDED WMYBMX MARK_MODEL_AS_NO_LONGER_NEEDED SPECIAL01 REMOVE_ANIMATION KISSING IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer car IF car > 0 IF NOT IS_CAR_DEAD car SET_CAR_VISIBLE car TRUE FREEZE_CAR_POSITION car FALSE SET_CAR_COLLISION car TRUE SET_CHAR_VISIBLE scplayer TRUE ENDIF ENDIF ENDIF ENDIF SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 800 FADE_IN ENDIF flag_bcesar_mission_counter = -1 flag_player_on_mission = 0 bc4_players_car = 0 GOTO mission_bc4_passed ENDIF IF flag_bcesar_mission_counter = 4 //END LOAD_MISSION_TEXT BCESAR4 // Race 13 cut scene end IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer bc4_players_car FREEZE_CAR_POSITION bc4_players_car TRUE SET_CAR_VISIBLE bc4_players_Car FALSE SET_CAR_COLLISION bc4_players_car FALSE ELSE bc4_players_car = -1 ENDIF CLEAR_AREA -526.7778 -189.0571 76.9917 100.0 TRUE MAKE_PLAYER_SAFE_FOR_CUTSCENE Player1 SWITCH_STREAMING OFF LOAD_CUTSCENE BCESA4W WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE IF NOT bc4_players_car = -1 IF NOT IS_CAR_DEAD bc4_players_car FREEZE_CAR_POSITION bc4_players_car FALSE SET_CAR_VISIBLE bc4_players_car TRUE SET_CAR_COLLISION bc4_players_car TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT ENDIF ELSE SET_CHAR_COORDINATES scplayer -503.3945 -186.0599 76.6103 SET_CHAR_HEADING scplayer 53.0 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT ENDIF DO_FADE 1000 FADE_IN REMOVE_BLIP bcesar_contact_blip REGISTER_MISSION_PASSED ( BCESAR4 ) PRINT_WITH_NUMBER_BIG ( M_PASSD ) 3 5000 1 //"Mission Passed!" flag_stage_of_bcesar_race = 0 start_the_bcesar_race = 0 GOTO mission_bc4_passed ENDIF // race 2***************************************************************** IF flag_bcesar_mission_counter = 5 //START LOAD_MISSION_TEXT BCESAR4 CLEAR_AREA -526.7778 -189.0571 76.9917 100.0 TRUE SET_CHAR_COORDINATES scplayer -495.9034 -196.2218 77.3986 MAKE_PLAYER_SAFE_FOR_CUTSCENE Player1 SWITCH_STREAMING OFF LOAD_CUTSCENE BCESAR5 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE //REMOVE_BLIP catalina_contact_blip[0] start_the_bcesar_race = 1 GOTO mission_bc4_passed ENDIF IF flag_bcesar_mission_counter = 9 //END LOAD_MISSION_TEXT BCESAR4 IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer bc4_players_car SET_CAR_AS_MISSION_CAR bc4_players_car GET_CAR_COORDINATES bc4_players_car x y z z += 1000.0 SET_CAR_COORDINATES bc4_players_car x y z FREEZE_CAR_POSITION bc4_players_car TRUE ELSE bc4_players_car = -1 ENDIF // Race 14 cut scene end CLEAR_AREA 1557.1616 24.3050 22.7313 100.0 TRUE MAKE_PLAYER_SAFE_FOR_CUTSCENE Player1 SWITCH_STREAMING OFF LOAD_CUTSCENE BCESA5W WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE IF NOT bc4_players_car = -1 IF NOT IS_CAR_DEAD bc4_players_car FREEZE_CAR_POSITION bc4_players_car FALSE SET_CAR_VISIBLE bc4_players_car TRUE SET_CAR_COLLISION bc4_players_car TRUE SET_CAR_COORDINATES bc4_players_car 1557.6938 17.4472 23.1641 SET_CAR_HEADING bc4_players_car 9.0 WARP_CHAR_INTO_CAR scplayer bc4_players_car SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT ENDIF ELSE SET_CHAR_COORDINATES scplayer 1559.7679 14.4176 23.1641 SET_CHAR_HEADING scplayer 10.0 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT ENDIF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 1000 FADE_IN REMOVE_BLIP bcesar_contact_blip REGISTER_MISSION_PASSED ( BCES4_2 ) PRINT_WITH_NUMBER_BIG ( M_PASSD ) 3 5000 1 //"Mission Passed!" start_the_bcesar_race = 0 GOTO mission_bc4_passed ENDIF GOTO mission_bc4_loop // Mission cprace failed mission_bc4_failed: RETURN // mission cprace passed mission_bc4_passed: IF flag_bcesar_mission_counter < 5 IF NOT IS_CAR_DEAD bc4_players_car WARP_CHAR_INTO_CAR scplayer bc4_players_car FREEZE_CAR_POSITION bc4_players_car FALSE ENDIF ENDIF RETURN // mission cleanup mission_cleanup_bc4: flag_bcesar_mission_counter ++ GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED IF flag_bcesar_mission_counter = 1 DO_FADE 0 FADE_OUT ENDIF IF flag_bcesar_mission_counter = 6 DO_FADE 0 FADE_OUT ENDIF RETURN } MISSION_START // ***************************************************************************************** // ************************************* GARAGE 1 *********************************** // ************************************* WELCOME TO SAN FRAN ***************************** // ***************************************************************************************** // ***************************************************************************************** // Mission start stuff SCRIPT_NAME garag1 GOSUB mission_start_garag1 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_garag1_failed ENDIF GOSUB mission_cleanup_garag1 MISSION_END // Variables for mission { //RC VEHICLES LVAR_INT car_player_garag1 LVAR_INT car_mech2_garag1 LVAR_INT car_mech1_garag1 LVAR_INT rc_heli_garage1 LVAR_INT car_zombietech_garage1 LVAR_INT car_mech3_garag1 LVAR_FLOAT heading_car_player_garage1 LVAR_INT object_zeros_bench dwaynes_blunt LVAR_FLOAT heading_players_car LVAR_INT noise_of_board_rolling // COORDS LVAR_FLOAT coords_hospital_x coords_hospital_y coords_hospital_z LVAR_FLOAT coords_police_x coords_police_y coords_police_z LVAR_FLOAT mech_offset_x mech_offset_y mech_offset_z LVAR_FLOAT coords_garage_garag1_x[5] coords_garage_garag1_y[5] coords_garage_garag1_z[5] LVAR_FLOAT coords_hub_garag1_x coords_hub_garag1_y coords_hub_garag1_z LVAR_FLOAT coord_mech_garage1_x[5] coord_mech_garage1_y[5] coord_mech_garage1_z[5] LVAR_FLOAT offset_players_car_x offset_players_car_y offset_players_car_z LVAR_FLOAT offset_players_car2_x offset_players_car2_y offset_players_car2_z // CHARS LVAR_INT char_truth_garag1 LVAR_INT char_mech_garag1[4] LVAR_INT driver_of_car_mech3_garag1 LVAR_INT pony_driver_garage1 LVAR_INT temp_passenger_to_be_deleted_garage1 // FLAGS LVAR_INT flag_go_to_mechanic1_garag1 LVAR_INT flag_go_to_mechanic2_garag1 LVAR_INT flag_go_to_mechanic3_garag1 LVAR_INT flag_go_to_mechanic4_garag1 LVAR_INT flag_go_to_hospital_garag1 LVAR_INT flag_go_to_police_station_garag1 LVAR_INT flag_go_to_hub_garag1 LVAR_INT flag_loose_mech3_garag1 LVAR_INT flag_mission_garag1_passed LVAR_INT flag_mission_garag1_failed LVAR_INT flag_is_mech3_off_bike_garag1 LVAR_INT flag_player_out_of_car_garag1 LVAR_INT flag_garage_doors LVAR_INT flag_cutscene_garage1 VAR_INT flag_is_zero_on_bike LVAR_INT flag_is_truth_in_car LVAR_INT flag_is_mechanic2_in_car LVAR_INT flag_is_mechanic1_in_car LVAR_INT flag_help_text_garage1 LVAR_INT flag_mech_summoned_garage1 LVAR_INT flag_lod_close_to_desstination LVAR_INT flag_text_garage1 // BLIP LVAR_INT blip_mech_garag1[5] LVAR_INT blip_players_car_garag1 LVAR_INT blip_hospital blip_police // SEQUENCES LVAR_INT seq_truth_talking_to_mech1_garag1 //jethro LVAR_INT seq_truth_talking_to_mech2_garag1 LVAR_INT seq_truth_talking_to_mech4_garag1 //zero LVAR_INT seq_mech1_garage1 LVAR_INT index_garag1 // DECISION MAKERS LVAR_INT dm_buddies_garage1 // AUDIO LVAR_INT garage1_audio[106] VAR_TEXT_LABEL $garage1_text[106] LVAR_INT char_who_is_talking[106] LVAR_INT index_dialogue_garage1 LVAR_INT play_audio_flag_garage1 // SMoke effects LVAR_INT exhale_smoke_effect // ****************************************Mission Start************************************ mission_start_garag1: flag_player_on_mission = 1 FORCE_WEATHER_NOW WEATHER_SUNNY_SF // can be wither sunny, foggy or extra sunny REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT GARAGE1 SET_PLAYER_CONTROL player1 OFF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // CUTSCENE SET_AREA_VISIBLE 1 LOAD_CUTSCENE GARAG1B WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WAIT 1000 WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 // end cutscene LOAD_SPECIAL_CHARACTER 3 jethro WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 3 WAIT 0 ENDWHILE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY dm_buddies_garage1 CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_buddies_garage1 EVENT_POTENTIAL_GET_RUN_OVER CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_buddies_garage1 EVENT_POTENTIAL_WALK_INTO_PED CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_buddies_garage1 EVENT_POTENTIAL_WALK_INTO_VEHICLE SET_SCRIPT_LIMIT_TO_GANG_SIZE 3 MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 3 // INITIALISING VARIABLES coords_garage_garag1_x[0] = -1669.0 // GARAGE IN VIETNAM coords_garage_garag1_y[0] = 439.773 coords_garage_garag1_z[0] = 6.219 heading_players_car = 80.0 coords_garage_garag1_x[1] = -2230.1680 // in china town coords_garage_garag1_y[1] = 544.7148 coords_garage_garag1_z[1] = 34.2219 coords_garage_garag1_x[2] = -2248.1006 // zeros toyshop coords_garage_garag1_y[2] = 132.8547 coords_garage_garag1_z[2] = 35.3302 coords_garage_garag1_x[3] = -2052.1006 coords_garage_garag1_y[3] = -147.8547 coords_garage_garag1_z[3] = 28.3302 coords_garage_garag1_x[4] = -2059.5530 coords_garage_garag1_y[4] = -22.1661 coords_garage_garag1_z[4] = 34.3050 coords_hospital_x = -2584.0 coords_hospital_y = 585.0 coords_hospital_z = 14.0 coords_police_x = -1624.41 coords_police_y = 725.25 coords_police_z = 14.11 coords_hub_garag1_x = -2042.03 coords_hub_garag1_y = 178.11 coords_hub_garag1_z = 28.15 flag_go_to_mechanic1_garag1 = 1 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_go_to_hospital_garag1 = 0 flag_go_to_police_station_garag1 = 0 flag_cutscene_garage1 = 0 flag_lod_close_to_desstination = 0 flag_text_garage1 = 0 flag_garage_doors = 0 flag_mission_garag1_passed = 0 flag_mission_garag1_failed = 0 flag_player_out_of_car_garag1 = 0 flag_loose_mech3_garag1 = 0 flag_is_mech3_off_bike_garag1 = 0 flag_is_zero_on_bike = 0 flag_is_truth_in_car = 0 flag_is_mechanic2_in_car = 0 flag_is_mechanic1_in_car = 0 flag_help_text_garage1 = 0 coord_mech_garage1_x[0] = -1674.21 // viet garage coord_mech_garage1_y[0] = 438.50 coord_mech_garage1_z[0] = 6.2 coord_mech_garage1_x[1] = -2237.0 // triad garage coord_mech_garage1_y[1] = 542.0782 coord_mech_garage1_z[1] = 33.901 coord_mech_garage1_x[2] = -2243.1006 // zero's toyshop coord_mech_garage1_y[2] = 128.8547 coord_mech_garage1_z[2] = 34.3302 coord_mech_garage1_x[3] = -2052.1006 //hub coord_mech_garage1_y[3] = -147.8547 coord_mech_garage1_z[3] = 28.3302 flag_mech_summoned_garage1 = 0 index_dialogue_garage1 = 0 index_garag1 = 0 play_audio_flag_garage1 = 0 IF play_audio_flag_garage1 = 1 CREATE_CHAR PEDTYPE_CIVMALE 0 0.0 0.0 0.0 char_who_is_talking[0] CREATE_CHAR PEDTYPE_CIVMALE SPECIAL02 -2031.2517 164.0169 27.8429 char_truth_garag1 CREATE_CHAR PEDTYPE_CIVMALE SPECIAL03 coord_mech_garage1_x[index_garag1] coord_mech_garage1_y[index_garag1] coord_mech_garage1_z[index_garag1] char_mech_garag1[0] ENDIF // intro $garage1_text[0] = GAR1_AA//C’mon. there’s these two guys I know – used to work on marine engines, $garage1_text[1] = GAR1_AB//until the mob bought their business over in Vice. $garage1_text[2] = GAR1_AC//Now they try and make ends meet taking any old job. $garage1_text[3] = GAR1_AD//They’re a little dulled by their habit, $garage1_text[4] = GAR1_AE//but the smoke don’t get in the way of their skills with an engine. $garage1_text[5] = GAR1_AF//We’ll pick up Jethro first. $garage1_text[6] = GAR1_AG//Last I heard he was working at a garage over Easter Basin way. // not needed $garage1_text[7] = GAR1_AH//Last I heard he was working at a garage over East Esplanade way. $garage1_text[8] = GAR1_AJ//Last I heard he was working at a garage over North Esplanade way. // driving to mech 1 $garage1_text[9] = GAR1_BA// How’d you meet these dudes? $garage1_text[10] = GAR1_BB// I met them at the ’89 Fierro Love-in, apparently. $garage1_text[11] = GAR1_BC// Apparently? $garage1_text[12] = GAR1_BD// You know how it is; $garage1_text[13] = GAR1_BE// a field of tents, crazy-assed music, $garage1_text[14] = GAR1_BF// a quart of mescaline vodka, polar bears… $garage1_text[15] = GAR1_BG// Polar bears? $garage1_text[16] = GAR1_BH// Yeah. Go figure. But they were funny guys – great sense of humour. // entering vietnam $garage1_text[17] = GAR1_CA//This here’s Vietnamese gang territory. $garage1_text[18] = GAR1_CB//Da Nang Boys, Shining Razors, Butterfly Children. $garage1_text[19] = GAR1_CC//Watch yourself, these cats are real serious. //picking up mech 1 $garage1_text[20] = GAR1_DA//Hey, Jethro! $garage1_text[21] = GAR1_DF//Hop in. I’ve landed you a real job. $garage1_text[22] = GAR1_DB//Hey there Truth dude! $garage1_text[23] = GAR1_DC//Oh man, do I owe you? $garage1_text[24] = GAR1_DD//Coz I swear I paid for that weed, dude! $garage1_text[25] = GAR1_DE//No, man, we’re good – I think. $garage1_text[26] = GAR1_EA//Jethro, Carl. Carl, jethro. $garage1_text[27] = GAR1_EB//Yo, man. $garage1_text[28] = GAR1_EC//Can we swing by the hospital, it’s over in Santa Flora district, West of here. $garage1_text[29] = GAR1_ED//Yeah sure, you ill? $garage1_text[30] = GAR1_EE// No. The government is, but that’s a long story. // driving to hospitl $garage1_text[31] = GAR1_FA// So, like, y’know, what’s the deal, dudes? $garage1_text[32] = GAR1_FB// I’m opening a garage in Doherty by that derelict ground. $garage1_text[33] = GAR1_FC// We’re gonna do car mods, lowriders, all that shit. $garage1_text[34] = GAR1_FD// You down? $garage1_text[35] = GAR1_FE// Do polar bears shit in the woods? $garage1_text[36] = GAR1_FF// No, but they’ve been known to shit in the liquor tent, if I remember rightly. $garage1_text[37] = GAR1_FG// Yeah, that was, like, so far gone, man. // at the hospital $garage1_text[38] = GAR1_GA// What we here for? $garage1_text[39] = GAR1_GB// Nothin’. $garage1_text[40] = GAR1_GC// Don’t look. $garage1_text[41] = GAR1_GD// Cover your faces. $garage1_text[42] = GAR1_GE// Think about a yellow rubber duck. $garage1_text[43] = GAR1_GF// You tripping again? $garage1_text[44] = GAR1_GG// Sshhh! $garage1_text[45] = GAR1_GH// Ok, I’ve seen enough. $garage1_text[46] = GAR1_GI// Let’s go see if we can find Dwaine. $garage1_text[47] = GAR1_GJ// He’s working a hotdog van at the tram terminal in King’s //driving to mech 2 $garage1_text[48] = GAR1_HA// C’mon, dude, what was all that about? $garage1_text[49] = GAR1_HB// You don’t want to know. $garage1_text[50] = GAR1_HC// Why? $garage1_text[51] = GAR1_HD// Do you know what a sub-dermal neurophone is? $garage1_text[52] = GAR1_HE// A what? $garage1_text[53] = GAR1_HF// Exactly. $garage1_text[54] = GAR1_HG// Sometimes it’s best to stay in the dark, kid. // talking to mech2 $garage1_text[55] = GAR1_JA// Yo, Dwaine, how’s the noodle business. $garage1_text[56] = GAR1_JB// Utterly shit. What’s happenin’? $garage1_text[57] = GAR1_JC// My friend Carl here is opening a chop shop. $garage1_text[58] = GAR1_JD// Jethro’s in, how about you? $garage1_text[59] = GAR1_JE// Sure thing, $garage1_text[60] = GAR1_JF// I’ve, like, got some some shit to deal with first. $garage1_text[61] = GAR1_JG// Where is it, I’ll, like, meet you dudes there. $garage1_text[62] = GAR1_JH// The old garage on the waste ground in Doherty. $garage1_text[63] = GAR1_JJ// See you later. $garage1_text[64] = GAR1_KA// Ok, next stop the cop station downtown. $garage1_text[65] = GAR1_KB// What? Are you off your mind? Why? $garage1_text[66] = GAR1_KC// If I told you, the likelihood is you’d get a probe up your ass within a month. $garage1_text[67] = GAR1_KD// Like, listen to the man, dude, he’s real serious about that shit. $garage1_text[68] = GAR1_KE// Whuh? Oh, ok. But you’re starting to freak me a little. // arriving at cop sation $garage1_text[69] = GAR1_LA// Ok, you know the drill. $garage1_text[70] = GAR1_LB// Don’t look interested in anything. $garage1_text[71] = GAR1_LC// Picture a pink golfball in your mind. $garage1_text[72] = GAR1_LD// Ok, we’re good to go. $garage1_text[73] = GAR1_MA// Where to next, El Kozmo? $garage1_text[74] = GAR1_MB// There’s an electronics guy I’ve had dealings with, $garage1_text[75] = GAR1_MC// goes by the name of ZERO. $garage1_text[76] = GAR1_MD// He could fix a supercomputer with a paperclip. $garage1_text[77] = GAR1_ME// He’s got his own shop, $garage1_text[78] = GAR1_MF// but he’s always ready to help fellow travellers along the path. $garage1_text[79] = GAR1_MG// Let’s go introduce you to him // picking up zero mch3 $garage1_text[80] = GAR1_NA// Look, what’s goin’ on, Truth? $garage1_text[81] = GAR1_NB// Who were those guys? $garage1_text[82] = GAR1_NC// Don’t go there, man. $garage1_text[83] = GAR1_ND// Listen to Jethro. $garage1_text[84] = GAR1_NE// What if I told you we never went to the moon, $garage1_text[85] = GAR1_NF// JFK lives in Scotland with Janis Joplin $garage1_text[86] = GAR1_NG// and the only reason we’ve been in a cold war for the last fortyfive years $garage1_text[87] = GAR1_NH// was because snake-headed aliens run the oil business? $garage1_text[88] = GAR1_NJ// I’d say you’d dropped another microdot. $garage1_text[89] = GAR1_NK// Good. Keep it that way. $garage1_text[91] = GAR1_OA// Blow the horn. // arriving at zeros $garage1_text[92] = GAR1_OB// Leave me alone Berkley! $garage1_text[93] = GAR1_OC// This is stalking! $garage1_text[94] = GAR1_OD// Oh, hi! $garage1_text[95] = GAR1_OE// Get in, I’ll fill you in as we drive. $garage1_text[96] = GAR1_OF// Home, James! // on the way back to garage $garage1_text[97] = GAR1_PA// Carl, Zero, Zero, Carl. $garage1_text[98] = GAR1_PB// Yo. $garage1_text[99] = GAR1_PC// Carl here is opening a garage around the corner here. $garage1_text[100] = GAR1_PD// I told him you’re the man to speak to when it comes to electronics. $garage1_text[101] = GAR1_PE// I’m the ONLY man to talk to. $garage1_text[102] = GAR1_PJ//Grade A fuckin’ genius, that’s me. $garage1_text[103] = GAR1_PF// You should drop by the shop sometime, see some of my shit. $garage1_text[104] = GAR1_PG// I’ll do just that. $garage1_text[105] = GAR1_PH// Yo, we’re here. // intro garage1_audio[0] = SOUND_GAR1_AA//C’mon. there’s these two guys I know – used to work on marine engines, garage1_audio[1] = SOUND_GAR1_AB//until the mob bought their business over in Vice. garage1_audio[2] = SOUND_GAR1_AC//Now they try and make ends meet taking any old job. garage1_audio[3] = SOUND_GAR1_AD//They’re a little dulled by their habit, garage1_audio[4] = SOUND_GAR1_AE//but the smoke don’t get in the way of their skills with an engine. garage1_audio[5] = SOUND_GAR1_AF//We’ll pick up Jethro first. garage1_audio[6] = SOUND_GAR1_AG//Last I heard he was working at a garage over Easter Basin way. // not needed garage1_audio[7] = SOUND_GAR1_AH//Last I heard he was working at a garage over East Esplanade way. garage1_audio[8] = SOUND_GAR1_AJ//Last I heard he was working at a garage over North Esplanade way. // driving to mech 1 garage1_audio[9] = SOUND_GAR1_BA // How’d you meet these dudes? garage1_audio[10] = SOUND_GAR1_BB// I met them at the ’89 Fierro Love-in, apparently. garage1_audio[11] = SOUND_GAR1_BC// Apparently? garage1_audio[12] = SOUND_GAR1_BD// You know how it is; garage1_audio[13] = SOUND_GAR1_BE// a field of tents, crazy-assed music, garage1_audio[14] = SOUND_GAR1_BF// a quart of mescaline vodka, polar bears… garage1_audio[15] = SOUND_GAR1_BG// Polar bears? garage1_audio[16] = SOUND_GAR1_BH// Yeah. Go figure. But they were funny guys – great sense of humour. // entering vietnam garage1_audio[17] = SOUND_GAR1_CA//This here’s Vietnamese gang territory. garage1_audio[18] = SOUND_GAR1_CB//Da Nang Boys, Shining Razors, Butterfly Children. garage1_audio[19] = SOUND_GAR1_CC//Watch yourself, these cats are real serious. //picking up mech 1 garage1_audio[20] = SOUND_GAR1_DA//Hey, Jethro! garage1_audio[21] = SOUND_GAR1_DF//Hop in. I’ve landed you a real job. garage1_audio[22] = SOUND_GAR1_DB//Hey there Truth dude! garage1_audio[23] = SOUND_GAR1_DC//Oh man, do I owe you? garage1_audio[24] = SOUND_GAR1_DD//Coz I swear I paid for that weed, dude! garage1_audio[25] = SOUND_GAR1_DE//No, man, we’re good – I think. garage1_audio[26] = SOUND_GAR1_EA//Jethro, Carl. Carl, jethro. garage1_audio[27] = SOUND_GAR1_EB//Yo, man. garage1_audio[28] = SOUND_GAR1_EC//Can we swing by the hospital, it’s over in Santa Flora district, West of here. garage1_audio[29] = SOUND_GAR1_ED//Yeah sure, you ill? garage1_audio[30] = SOUND_GAR1_EE// No. The government is, but that’s a long story. // driving to hospitl garage1_audio[31] = SOUND_GAR1_FA// So, like, y’know, what’s the deal, dudes? garage1_audio[32] = SOUND_GAR1_FB// I’m opening a garage in Doherty by that derelict ground. garage1_audio[33] = SOUND_GAR1_FC// We’re gonna do car mods, lowriders, all that shit. garage1_audio[34] = SOUND_GAR1_FD// You down? garage1_audio[35] = SOUND_GAR1_FE// Do polar bears shit in the woods? garage1_audio[36] = SOUND_GAR1_FF// No, but they’ve been known to shit in the liquor tent, if I remember rightly. garage1_audio[37] = SOUND_GAR1_FG// Yeah, that was, like, so far gone, man. // at the hospital garage1_audio[38] = SOUND_GAR1_GA// What we here for? garage1_audio[39] = SOUND_GAR1_GB// Nothin’. garage1_audio[40] = SOUND_GAR1_GC// Don’t look. garage1_audio[41] = SOUND_GAR1_GD// Cover your faces. garage1_audio[42] = SOUND_GAR1_GE// Think about a yellow rubber duck. garage1_audio[43] = SOUND_GAR1_GF// You tripping again? garage1_audio[44] = SOUND_GAR1_GG// Sshhh! garage1_audio[45] = SOUND_GAR1_GH// Ok, I’ve seen enough. garage1_audio[46] = SOUND_GAR1_GI// Let’s go see if we can find Dwaine. garage1_audio[47] = SOUND_GAR1_GJ// He’s working a hotdog van at the tram terminal in King’s //driving to mech 2 garage1_audio[48] = SOUND_GAR1_HA// C’mon, dude, what was all that about? garage1_audio[49] = SOUND_GAR1_HB// You don’t want to know. garage1_audio[50] = SOUND_GAR1_HC// Why? garage1_audio[51] = SOUND_GAR1_HD// Do you know what a sub-dermal neurophone is? garage1_audio[52] = SOUND_GAR1_HE// A what? garage1_audio[53] = SOUND_GAR1_HF// Exactly. garage1_audio[54] = SOUND_GAR1_HG// Sometimes it’s best to stay in the dark, kid. // talking to mech2 garage1_audio[55] = SOUND_GAR1_JA// Yo, Dwaine, how’s the noodle business. garage1_audio[56] = SOUND_GAR1_JB// Utterly shit. What’s happenin’? garage1_audio[57] = SOUND_GAR1_JC// My friend Carl here is opening a chop shop. garage1_audio[58] = SOUND_GAR1_JD// Jethro’s in, how about you? garage1_audio[59] = SOUND_GAR1_JE// Sure thing, garage1_audio[60] = SOUND_GAR1_JF// I’ve, like, got some some shit to deal with first. garage1_audio[61] = SOUND_GAR1_JG// Where is it, I’ll, like, meet you dudes there. garage1_audio[62] = SOUND_GAR1_JH// The old garage on the waste ground in Doherty. garage1_audio[63] = SOUND_GAR1_JJ// See you later. garage1_audio[64] = SOUND_GAR1_KA// Ok, next stop the cop station downtown. garage1_audio[65] = SOUND_GAR1_KB// What? Are you off your mind? Why? garage1_audio[66] = SOUND_GAR1_KC// If I told you, the likelihood is you’d get a probe up your ass within a month. garage1_audio[67] = SOUND_GAR1_KD// Like, listen to the man, dude, he’s real serious about that shit. garage1_audio[68] = SOUND_GAR1_KE// Whuh? Oh, ok. But you’re starting to freak me a little. // arriving at cop sation garage1_audio[69] = SOUND_GAR1_LA// Ok, you know the drill. garage1_audio[70] = SOUND_GAR1_LB// Don’t look interested in anything. garage1_audio[71] = SOUND_GAR1_LC// Picture a pink golfball in your mind. garage1_audio[72] = SOUND_GAR1_LD// Ok, we’re good to go. garage1_audio[73] = SOUND_GAR1_MA// Where to next, El Kozmo? garage1_audio[74] = SOUND_GAR1_MB// There’s an electronics guy I’ve had dealings with, garage1_audio[75] = SOUND_GAR1_MC// goes by the name of ZERO. garage1_audio[76] = SOUND_GAR1_MD// He could fix a supercomputer with a paperclip. garage1_audio[77] = SOUND_GAR1_ME// He’s got his own shop, garage1_audio[78] = SOUND_GAR1_MF// but he’s always ready to help fellow travellers along the path. garage1_audio[79] = SOUND_GAR1_MG// Let’s go introduce you to him // picking up zero mch3 garage1_audio[80] = SOUND_GAR1_NA// Look, what’s goin’ on, Truth? garage1_audio[81] = SOUND_GAR1_NB// Who were those guys? garage1_audio[82] = SOUND_GAR1_NC// Don’t go there, man. garage1_audio[83] = SOUND_GAR1_ND// Listen to Jethro. garage1_audio[84] = SOUND_GAR1_NE// What if I told you we never went to the moon, garage1_audio[85] = SOUND_GAR1_NF// JFK lives in Scotland with Janis Joplin garage1_audio[86] = SOUND_GAR1_NG// and the only reason we’ve been in a cold war for the last fortyfive years garage1_audio[87] = SOUND_GAR1_NH// was because snake-headed aliens run the oil business? garage1_audio[88] = SOUND_GAR1_NJ// I’d say you’d dropped another microdot. garage1_audio[89] = SOUND_GAR1_NK// Good. Keep it that way. garage1_audio[91] = SOUND_GAR1_OA// Blow the horn. // arriving at zeros garage1_audio[92] = SOUND_GAR1_OB// Leave me alone Berkley! garage1_audio[93] = SOUND_GAR1_OC// This is stalking! garage1_audio[94] = SOUND_GAR1_OD// Oh, hi! garage1_audio[95] = SOUND_GAR1_OE// Get in, I’ll fill you in as we drive. garage1_audio[96] = SOUND_GAR1_OF// Home, James! // on the way back t garag garage1_audio[97] = SOUND_GAR1_PA// Carl, Zero, Zero, Carl. garage1_audio[98] = SOUND_GAR1_PB// Yo. garage1_audio[99] = SOUND_GAR1_PC// Carl here is opening a garage around the corner here. garage1_audio[100] = SOUND_GAR1_PD// I told him you’re the man to speak to when it comes to electronics. garage1_audio[101] = SOUND_GAR1_PE// I’m the ONLY man to talk to. garage1_audio[102] = SOUND_GAR1_PJ// Grade A fuckin’ genius, that’s me. garage1_audio[103] = SOUND_GAR1_PF// You should drop by the shop sometime, see some of my shit. garage1_audio[104] = SOUND_GAR1_PG// I’ll do just that. garage1_audio[105] = SOUND_GAR1_PH// Yo, we’re here. TIMERA = 0 //LOAD_SCENE -2028.7728 154.0429 27.2416 CLEAR_AREA -2028.7728 154.0429 27.2416 10000.0 TRUE DISABLE_ALL_ENTRY_EXITS TRUE // LOAD MODELS REQUEST_MODEL emperor WHILE NOT HAS_MODEL_LOADED emperor WAIT 0 ENDWHILE CREATE_CAR emperor -2030.6282 170.7956 27.8359 car_player_garag1 SET_CAR_HEALTH car_player_garag1 3000 //SET_TARGET_CAR_FOR_MISSION_GARAGE hbgdsfs car_player_garag1 //MARK_MODEL_AS_NO_LONGER_NEEDED emperor SET_CHAR_COORDINATES scplayer -2031.0 162.0 27.83 SET_CAR_HEADING car_player_garag1 270.0 //CREATE_CHAR_AS_PASSENGER car_player_garag1 PEDTYPE_CIVMALE truth 0 char_truth_garag1 LOAD_SPECIAL_CHARACTER 2 truth WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 2 WAIT 0 ENDWHILE //CREATE_CHAR PEDTYPE_CIVMALE truth -2031.2517 164.0169 27.8429 char_truth_garag1 CREATE_CHAR PEDTYPE_CIVMALE SPECIAL02 -2031.2517 164.0169 27.8429 char_truth_garag1 SET_CHAR_NEVER_TARGETTED char_truth_garag1 TRUE SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR char_truth_garag1 FALSE //MARK_MODEL_AS_NO_LONGER_NEEDED truth SET_CHAR_RELATIONSHIP char_truth_garag1 ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER char_truth_garag1 dm_buddies_garage1 SET_CHAR_HEADING char_truth_garag1 180.0 SET_CHAR_PROOFS char_truth_garag1 FALSE FALSE FALSE TRUE FALSE SET_CHAR_HEALTH char_truth_garag1 200 SET_CHAR_SUFFERS_CRITICAL_HITS char_truth_garag1 FALSE //WARP_CHAR_INTO_CAR scplayer car_player_garag1 SET_CHAR_HEADING scplayer 0.0 SET_CAMERA_BEHIND_PLAYER // ******************************************** START MAIN LOOP ********************************** main_garag1_loop: WAIT 0 IF flag_go_to_mechanic1_garag1 = 1 GOSUB go_to_mechanic1_garag1 ENDIF IF flag_go_to_mechanic2_garag1 = 1 GOSUB go_to_mechanic2_garag1 ENDIF IF flag_go_to_mechanic3_garag1 = 1 GOSUB go_to_mechanic3_garag1 ENDIF /* IF flag_go_to_mechanic4_garag1 = 1 GOSUB go_to_mechanic4_garage ENDIF */ IF flag_go_to_hospital_garag1 = 1 GOSUB go_to_hospital_garag1 ENDIF IF flag_go_to_police_station_garag1 = 1 GOSUB go_to_police_station_garag1 ENDIF IF flag_go_to_hub_garag1 = 1 GOSUB go_to_hub_garag1 ENDIF IF flag_mission_garag1_passed = 1 GOTO mission_garag1_passed ENDIF IF flag_mission_garag1_failed = 1 GOTO mission_garag1_failed ENDIF GOTO main_garag1_loop // ////////////////////////////////// ////////////////////////////////// //////////////////////////////// // ************************************ Sub Functions ***************************************** // ////////////////////////////////// ////////////////////////////////// //////////////////////////////// // //////////////////////////////// // go_to_mechanic1_garag1 // //////////////////////////////// go_to_mechanic1_garag1: // ASSIGNING A TALKING FOR LIP MOVING char_who_is_talking[0] = char_truth_garag1 //C’mon. there’s these two guys I know – used to work on marine engines, char_who_is_talking[1] = char_truth_garag1 //until the mob bought their business over in Vice. char_who_is_talking[2] = char_truth_garag1 //Now they try and make ends meet taking any old job. char_who_is_talking[3] = char_truth_garag1 //They’re a little dulled by their habit, char_who_is_talking[4] = char_truth_garag1 //but the smoke don’t get in the way of their skills with an engine. char_who_is_talking[5] = char_truth_garag1 //We’ll pick up Jethro first. char_who_is_talking[6] = char_truth_garag1 //Last I heard he was working at a garage over Easter Basin way. char_who_is_talking[9] = scplayer // How’d you meet these dudes? char_who_is_talking[10] = char_truth_garag1 // I met them at the ’89 Fierro Love-in, apparently. char_who_is_talking[11] = scplayer // Apparently? char_who_is_talking[12] = char_truth_garag1 // You know how it is; char_who_is_talking[13] = char_truth_garag1 // a field of tents, crazy-assed music, char_who_is_talking[14] = char_truth_garag1 // a quart of mescaline vodka, polar bears… char_who_is_talking[15] = scplayer // Polar bears? char_who_is_talking[16] = char_truth_garag1 // Yeah. Go figure. But they were funny guys – great sense of humour. char_who_is_talking[17] = char_truth_garag1 //This here’s Vietnamese gang territory. char_who_is_talking[18] = char_truth_garag1 //Da Nang Boys, Shining Razors, Butterfly Children. char_who_is_talking[19] = char_truth_garag1 //Watch yourself, these cats are real serious. REQUEST_ANIMATION GANGS WHILE NOT HAS_ANIMATION_LOADED GANGS WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION -2021.4834 159.1135 30.5880 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2022.1533 159.8494 30.4897 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE -2019.9155 157.5772 33.4490 -2019.9509 157.5985 31.8268 4500 TRUE // two sets of coord for cam start point and end point + time for pan CAMERA_SET_VECTOR_TRACK -2020.7695 158.0734 33.2929 -2020.7866 158.0842 31.5706 4500 TRUE // two sets of coords for cam aim at start and end point + time for pan // SWITCH_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 /// SWITCH_PED_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 CLEAR_AREA -2031.77 161.21 29.42 1000.0 TRUE SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED DO_FADE 1000 FADE_IN SWITCH_WIDESCREEN ON WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // Neeed a cutscene here. Of truth giving player instructions flag_cutscene_garage1 = 0 TIMERA = 0 TIMERB = 0 WHILE NOT flag_cutscene_garage1 = 10 WAIT 0 IF flag_cutscene_garage1 = 0 SKIP_CUTSCENE_START GOSUB load_and_play_audio_garage1 ENDIF IF flag_cutscene_garage1 = 1 IF NOT IS_CHAR_DEAD char_truth_garag1 OPEN_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 // truth speaking to the mechanics TASK_PLAY_ANIM -1 prtial_gngtlkH GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 prtial_gngtlkA GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 prtial_gngtlkD GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 prtial_gngtlkH GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 prtial_gngtlkD GANGS 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 PERFORM_SEQUENCE_TASK char_truth_garag1 seq_truth_talking_to_mech1_garag1 CLEAR_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 ENDIF GOSUB load_and_play_audio_garage1 TIMERA = 0 ENDIF IF flag_cutscene_garage1 >= 2 AND flag_cutscene_garage1 <= 3 GOSUB load_and_play_audio_garage1 ENDIF IF flag_cutscene_garage1 = 4 CAMERA_RESET_NEW_SCRIPTABLES // do another of these once your camera pan has finished. SET_FIXED_CAMERA_POSITION -2030.0735 161.3698 28.8915 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2030.5933 162.2026 29.0817 JUMP_CUT // IF IS_PLAYER_PLAYING player1 //ENDIF GOSUB load_and_play_audio_garage1 ENDIF IF flag_cutscene_garage1 >= 5 OR flag_cutscene_garage1 <= 6 GOSUB load_and_play_audio_garage1 ENDIF IF flag_cutscene_garage1 = 7 GOSUB load_and_play_audio_garage1 flag_cutscene_garage1 = 10 ENDIF IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flag_cutscene_garage1 = 10 CLEAR_MISSION_AUDIO 1 ENDIF IF TIMERB > 23500 flag_cutscene_garage1 = 10 ENDIF ENDWHILE SKIP_CUTSCENE_END CLEAR_MISSION_AUDIO 1 SET_PLAYER_CONTROL player1 ON CAMERA_RESET_NEW_SCRIPTABLES RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF CLEAR_PRINTS IF IS_PLAYER_PLAYING player1 // SHUT_CHAR_UP scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF SET_RADIO_CHANNEL RS_CLASSIC_ROCK // SWITCH_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 // SWITCH_PED_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 index_dialogue_garage1 = 9 play_audio_flag_garage1 = 0 flag_cutscene_garage1 = 0 IF NOT IS_CHAR_DEAD char_truth_garag1 IF NOT IS_CAR_DEAD car_player_garag1 TASK_ENTER_CAR_AS_PASSENGER char_truth_garag1 car_player_garag1 -2 0 SET_CHAR_CANT_BE_DRAGGED_OUT char_truth_garag1 TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED char_truth_garag1 TRUE ENDIF ENDIF REMOVE_ANIMATION GANGS // ADD_BLIP_FOR_COORD coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] blip_mech_garag1[index_garag1] //////////////////////////////////// // WAITING FOR PLAYER TO ENTER CAR /////////////////////////////////// IF NOT IS_CAR_DEAD car_player_garag1 ADD_BLIP_FOR_CAR car_player_garag1 blip_players_car_garag1 // CHANGE_BLIP_COLOUR blip_players_car_garag1 BLUE SET_BLIP_AS_FRIENDLY blip_players_car_garag1 TRUE PRINT_NOW GAR1_22 5000 1 // get inside the car WHILE NOT IS_CHAR_IN_CAR scplayer car_player_garag1 WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_hospital_garag1 = 0 flag_go_to_police_station_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_passed = 1 flag_mission_garag1_failed = 0 RETURN ENDIF IF IS_CAR_DEAD car_player_garag1 PRINT_NOW (GAR1_07) 5000 1 //the cars blown up! flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_hospital_garag1 = 0 flag_go_to_police_station_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_passed = 0 flag_mission_garag1_failed = 1 RETURN ENDIF IF IS_CHAR_DEAD char_truth_garag1 PRINT_NOW (GAR1_17) 5000 1 //TRUTH DIED flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_hospital_garag1 = 0 flag_go_to_police_station_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_passed = 0 flag_mission_garag1_failed = 1 RETURN ENDIF IF IS_CAR_ON_FIRE car_player_garag1 // MAKE CAR EXPLODE IF ON FIRE EXPLODE_CAR car_player_garag1 PRINT_NOW (GAR1_07) 5000 1 //the cars blown up! flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_failed = 1 RETURN ENDIF // IF IS_CHAR_IN_AREA_3D scplayer -2056.86 150.93 23.16 -2039.3 182.7 32.87 FALSE // ENDIF ENDWHILE REMOVE_BLIP blip_players_car_garag1 ADD_BLIP_FOR_COORD coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] blip_mech_garag1[index_garag1] // CHANGE_BLIP_COLOUR blip_mech_garag1[index_garag1] BLUE SET_COORD_BLIP_APPEARANCE blip_mech_garag1[index_garag1] COORD_BLIP_APPEARANCE_FRIEND // SET_BLIP_AS_FRIENDLY blip_mech_garag1[index_garag1] TRUE // PRINT_NOW (GAR1_01) 5000 1 //lets go pick up mech 1 ELSE PRINT_NOW (GAR1_07) 5000 1 //the cars blown up! flag_go_to_mechanic1_garag1 = 0 flag_mission_garag1_failed = 1 RETURN ENDIF REQUEST_MODEL towtruck REQUEST_ANIMATION CAR WHILE NOT HAS_MODEL_LOADED towtruck OR NOT HAS_ANIMATION_LOADED CAR WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE SPECIAL03 coord_mech_garage1_x[index_garag1] coord_mech_garage1_y[index_garag1] coord_mech_garage1_z[index_garag1] char_mech_garag1[index_garag1] SET_CHAR_NEVER_TARGETTED char_mech_garag1[index_garag1] TRUE SET_CHAR_HEADING char_mech_garag1[index_garag1] 120.0 SET_CHAR_PROOFS char_mech_garag1[index_garag1] FALSE FALSE FALSE TRUE FALSE // SET_CHAR_COLLISION char_mech_garag1[index_garag1] FALSE CREATE_CAR towtruck -1676.0 440.0 6.7 car_mech1_garag1 SET_CAR_HEADING car_mech1_garag1 229.0 SET_CHAR_RELATIONSHIP char_mech_garag1[index_garag1] ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER char_mech_garag1[index_garag1] dm_buddies_garage1 DELETE_CAR car_mech1_garag1 DELETE_CHAR char_mech_garag1[index_garag1] GOSUB going_to_destinations_garage1 IF flag_mission_garag1_failed = 1 RETURN ENDIF TIMERA = 0 REQUEST_ANIMATION CAR_CHAT WHILE NOT HAS_ANIMATION_LOADED CAR_CHAT WAIT 0 ENDWHILE char_who_is_talking[20] = char_truth_garag1 //Hey, Jethro! char_who_is_talking[21] = char_truth_garag1 //Hop in. I’ve landed you a real job. char_who_is_talking[22] = char_mech_garag1[0] //Hey there Truth dude! char_who_is_talking[23] = char_mech_garag1[0] //Oh man, do I owe you? char_who_is_talking[24] = char_truth_garag1 //Coz I swear I paid for that weed, dude! char_who_is_talking[25] = char_truth_garag1 //No, man, we’re good – I think. char_who_is_talking[26] = char_truth_garag1 //Jethro, Carl. Carl, jethro. char_who_is_talking[27] = scplayer //Yo, man. char_who_is_talking[28] = char_truth_garag1 //Can we swing by the hospital, it’s over in Santa Flora district, West of here. char_who_is_talking[29] = char_truth_garag1 //Yeah sure, you ill? char_who_is_talking[30] = char_truth_garag1 // No. The government is, but that’s a long story. char_who_is_talking[31] = char_mech_garag1[0] // So, like, y’know, what’s the deal, dudes? char_who_is_talking[32] = scplayer // I’m opening a garage in Doherty by that derelict ground. char_who_is_talking[33] = scplayer // We’re gonna do car mods, lowriders, all that shit. char_who_is_talking[34] = scplayer // You down? char_who_is_talking[35] = char_mech_garag1[0] // Do polar bears shit in the woods? char_who_is_talking[36] = char_truth_garag1 // No, but they’ve been known to shit in the liquor tent, if I remember rightly. char_who_is_talking[37] = char_mech_garag1[0] // Yeah, that was, like, so far gone, man. SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON // SWITCH_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 // SWITCH_PED_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 CLEAR_AREA -2031.77 161.21 29.42 1000.0 TRUE CLEAR_MISSION_AUDIO 1 //CLEAR_AREA coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] 1000.0 TRUE /////////////////////////////////////////// // Setting players car position for cutscene ////////////////////////////////////////////// // CAR_GOTO_COORDINATES car_player_garag1 coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] // SET_CAR_CRUISE_SPEED car_player_garag1 30.0 // SET_CAR_HEADING car_player_garag1 55.0 flag_cutscene_garage1 = 0 TIMERA = 0 TIMERB = 0 CLEAR_AREA coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] 1000.0 TRUE IF NOT IS_CAR_DEAD car_player_garag1 IF NOT IS_CAR_PASSENGER_SEAT_FREE car_player_garag1 2 GET_CHAR_IN_CAR_PASSENGER_SEAT car_player_garag1 2 temp_passenger_to_be_deleted_garage1 DELETE_CHAR temp_passenger_to_be_deleted_garage1 ENDIF ENDIF WHILE NOT flag_cutscene_garage1 = 20 WAIT 0 IF flag_cutscene_garage1 = 0 // /////////////////////////////////////// // STOP CAR // /////////////////////////////////////// SKIP_CUTSCENE_START IF NOT IS_CAR_DEAD car_player_garag1 IF NOT IS_CHAR_DEAD char_truth_garag1 SET_FIXED_CAMERA_POSITION -1674.2632 438.2627 11.0956 0.0 0.0 0.0 // close up of mech fixing car POINT_CAMERA_AT_POINT -1674.2458 438.3686 10.1014 JUMP_CUT IF NOT IS_CHAR_IN_CAR scplayer car_player_garag1 WARP_CHAR_INTO_CAR scplayer car_player_garag1 ENDIF SET_CAR_COORDINATES car_player_garag1 coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] SET_CAR_HEADING car_player_garag1 heading_players_car SET_CAR_CRUISE_SPEED car_player_garag1 0.0 index_dialogue_garage1 = 20 GOSUB cutscene_audio ELSE flag_go_to_mechanic1_garag1 = 0 flag_mission_garag1_failed = 1 RETURN ENDIF ELSE PRINT_NOW (GAR1_07) 5000 1 //the cars blown up! flag_go_to_mechanic1_garag1 = 0 flag_mission_garag1_failed = 1 RETURN ENDIF ENDIF IF flag_cutscene_garage1 = 1 IF TIMERA > 2000 IF NOT IS_CHAR_DEAD char_mech_garag1[index_garag1] IF NOT IS_CAR_DEAD car_player_garag1 SET_FIXED_CAMERA_POSITION -1672.6583 431.5702 7.2947 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1672.7198 432.5628 7.3989 JUMP_CUT OPEN_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 // truth speaking to the mechanics TASK_PLAY_ANIM -1 Fixn_Car_Out CAR 4.0 FALSE FALSE FALSE FALSE 0 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer // TASK GOTO -1669.653 440.619 6.219 TASK_GO_STRAIGHT_TO_COORD -1 -1668.853 442.619 6.219 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 193.0 // TASK_PLAY_ANIM -1 prtial_gngtlkD PED 4.0 FALSE FALSE FALSE FALSE 0 TASK_ENTER_CAR_AS_PASSENGER -1 car_player_garag1 -1 2 CLOSE_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 PERFORM_SEQUENCE_TASK char_mech_garag1[index_garag1] seq_truth_talking_to_mech1_garag1 CLEAR_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 flag_cutscene_garage1 = 2 LOAD_MISSION_AUDIO 3 SOUND_BANK_MECHANIC WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE REPORT_MISSION_AUDIO_EVENT_AT_CHAR char_mech_garag1[index_garag1] SOUND_MECHANIC_SLIDE_OUT // ADD_ONE_OFF_SOUND -1672.6583 431.5702 7.2947 SOUND_MECHANIC_SLIDE_OUT // REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1672.6583 431.5702 7.2947 SOUND_MECHANIC_SLIDE_OUT /* LOAD_MISSION_AUDIO 3 SOUND_MECHANIC_SLIDE_OUT WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 3 */ // ADD_CONTINUOUS_SOUND -1672.6583 431.5702 7.2947 SOUND_BANK_MECHANIC noise_of_board_rolling TIMERA = 0 ENDIF ENDIF ENDIF ENDIF // Make guys enter car IF flag_cutscene_garage1 = 2 // REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1672.6583 431.5702 7.2947 SOUND_BANK_MECHANIC IF TIMERA > 2000 // REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1672.6583 431.5702 7.2947 SOUND_BANK_MECHANIC SET_FIXED_CAMERA_POSITION -1665.5226 443.0056 7.5433 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1666.4623 442.6743 7.4596 JUMP_CUT IF NOT IS_CHAR_DEAD char_mech_garag1[index_garag1] // SET_CHAR_COORDINATES char_mech_garag1[index_garag1] -1673.16 440.31 6.68 IF NOT IS_CAR_DEAD car_player_garag1 /* OPEN_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 // truth speaking to the mechanics // TASK GOTO -1669.653 440.619 6.219 TASK_GO_STRAIGHT_TO_COORD -1 -1668.853 442.619 6.219 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 193.0 // TASK_PLAY_ANIM -1 prtial_gngtlkD PED 4.0 FALSE FALSE FALSE FALSE 0 TASK_ENTER_CAR_AS_PASSENGER -1 car_player_garag1 -1 2 CLOSE_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 PERFORM_SEQUENCE_TASK char_mech_garag1[index_garag1] seq_truth_talking_to_mech1_garag1 CLEAR_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 */ ENDIF ENDIF // flag_cutscene_garage1 = 3 IF NOT IS_CHAR_DEAD char_mech_garag1[index_garag1] SET_CHAR_HEADING char_mech_garag1[index_garag1] 228.0 SET_CHAR_COLLISION char_mech_garag1[index_garag1] TRUE ENDIF GOSUB cutscene_audio TIMERA = 0 ENDIF ENDIF // Make guys enter car IF flag_cutscene_garage1 = 3 GOSUB cutscene_audio // PRINT_NOW GAR1_DC 1500 1 // JETHRO Do i owe you? ENDIF IF flag_cutscene_garage1 = 4 GOSUB cutscene_audio // PRINT_NOW GAR1_DC 1500 1 // JETHRO Do i owe you? ENDIF IF flag_cutscene_garage1 = 5 IF TIMERA > 1500 IF NOT IS_CHAR_DEAD char_truth_garag1 TASK_PLAY_ANIM char_truth_garag1 CAR_Sc4_FR CAR_CHAT 4.0 TRUE FALSE FALSE FALSE 9000 ENDIF GOSUB cutscene_audio // PRINT_NOW GAR1_DC 1500 1 // JETHRO Do i owe you? ENDIF ENDIF IF flag_cutscene_garage1 = 6 IF NOT IS_CAR_DEAD car_player_garag1 SET_FIXED_CAMERA_POSITION -1670.6049 442.2138 7.3642 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1669.8915 441.5237 7.2424 JUMP_CUT ENDIF TASK_PLAY_ANIM scplayer CAR_Sc1_FL CAR_CHAT 4.0 FALSE FALSE FALSE FALSE -1 GOSUB cutscene_audio // PRINT_NOW GAR1_DC 1500 1 // JETHRO Do i owe you? ENDIF IF flag_cutscene_garage1 = 7 GOSUB cutscene_audio // PRINT_NOW GAR1_DC 1500 1 // JETHRO Do i owe you? TIMERA = 0 ENDIF IF flag_cutscene_garage1 = 8 GOSUB cutscene_audio // PRINT_NOW GAR1_DC 1500 1 // JETHRO Do i owe you? ENDIF ENDIF IF flag_cutscene_garage1 = 9 IF TIMERA > 1500 SET_FIXED_CAMERA_POSITION -1648.6838 411.5628 18.7936 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1649.0903 412.4462 18.5605 JUMP_CUT GOSUB cutscene_audio // PRINT_NOW GAR1_DC 1500 1 // JETHRO Do i owe you? ENDIF ENDIF IF flag_cutscene_garage1 = 10 IF TIMERA > 1500 GOSUB cutscene_audio // PRINT_NOW GAR1_DC 1500 1 // JETHRO Do i owe you? ENDIF ENDIF IF flag_cutscene_garage1 = 11 IF TIMERA > 1500 GOSUB cutscene_audio // PRINT_NOW GAR1_DC 1500 1 // JETHRO Do i owe you? ENDIF ENDIF IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flag_cutscene_garage1 = 20 CLEAR_MISSION_AUDIO 1 ENDIF IF TIMERB > 21500 flag_cutscene_garage1 = 20 ENDIF ENDWHILE SKIP_CUTSCENE_END GOSUB checking_buddies_garage1 IF flag_mission_garag1_failed = 1 RETURN ENDIF REMOVE_ANIMATION CAR MARK_MODEL_AS_NO_LONGER_NEEDED towtruck IF NOT IS_CAR_DEAD car_mech1_garag1 FREEZE_CAR_POSITION car_mech1_garag1 FALSE ENDIF MARK_CAR_AS_NO_LONGER_NEEDED car_mech1_garag1 //SET_CAMERA_IN_FRONT_OF_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF REMOVE_ANIMATION CAR_CHAT IF IS_PLAYER_PLAYING player1 // SHUT_CHAR_UP scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF //SWITCH_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 // SWITCH_PED_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 CLEAR_PRINTS flag_cutscene_garage1 = 0 index_dialogue_garage1 = 31 play_audio_flag_garage1 = 0 // ///////// WARP TRUTH AND MECHANIC INTO CAR /////////////////////// IF NOT IS_CAR_DEAD car_player_garag1 SET_CAR_STATUS car_player_garag1 STATUS_PLAYER IF NOT IS_CHAR_DEAD char_truth_garag1 IF NOT IS_CHAR_IN_CAR char_truth_garag1 car_player_garag1 IF IS_CAR_PASSENGER_SEAT_FREE car_player_garag1 0 WARP_CHAR_INTO_CAR_AS_PASSENGER char_truth_garag1 car_player_garag1 0 ELSE GET_CHAR_IN_CAR_PASSENGER_SEAT car_player_garag1 0 temp_passenger_to_be_deleted_garage1 DELETE_CHAR temp_passenger_to_be_deleted_garage1 WARP_CHAR_INTO_CAR_AS_PASSENGER char_truth_garag1 car_player_garag1 0 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD char_mech_garag1[index_garag1] IF NOT IS_CHAR_IN_CAR char_mech_garag1[index_garag1] car_player_garag1 IF IS_CAR_PASSENGER_SEAT_FREE car_player_garag1 2 WARP_CHAR_INTO_CAR_AS_PASSENGER char_mech_garag1[index_garag1] car_player_garag1 2 ELSE GET_CHAR_IN_CAR_PASSENGER_SEAT car_player_garag1 2 temp_passenger_to_be_deleted_garage1 DELETE_CHAR temp_passenger_to_be_deleted_garage1 WARP_CHAR_INTO_CAR_AS_PASSENGER char_mech_garag1[index_garag1] car_player_garag1 2 ENDIF ENDIF ENDIF ENDIF /////////////////////////////////////////////////////////////////////// index_garag1 = 1 flag_go_to_mechanic1_garag1 = 0 flag_go_to_hospital_garag1 = 1 RETURN // Go to the hospital go_to_hospital_garag1: // ADD_BLIP_FOR_COORD coords_hospital_x coords_hospital_y coords_hospital_z blip_hospital REQUEST_MODEL pony WHILE NOT HAS_MODEL_LOADED pony WAIT 0 ENDWHILE CREATE_CAR pony -2607.11 623.91 14.66 car_zombietech_garage1 MARK_MODEL_AS_NO_LONGER_NEEDED pony SET_CAR_HEADING car_zombietech_garage1 277.0 DELETE_CAR car_zombietech_garage1 ADD_SPRITE_BLIP_FOR_COORD coords_hospital_x coords_hospital_y coords_hospital_z RADAR_SPRITE_HOSPITAL blip_hospital GOSUB going_to_destinations_garage1 IF flag_mission_garag1_failed = 1 RETURN ENDIF char_who_is_talking[38] = scplayer // What we here for? char_who_is_talking[39] = char_truth_garag1 // Nothin’. char_who_is_talking[40] = char_truth_garag1 // Don’t look. char_who_is_talking[41] = char_truth_garag1 // Cover your faces. char_who_is_talking[42] = char_truth_garag1 // Think about a yellow rubber duck. char_who_is_talking[43] = scplayer // You tripping again? char_who_is_talking[44] = char_truth_garag1 // Sshhh! char_who_is_talking[45] = char_truth_garag1 // Ok, I’ve seen enough. char_who_is_talking[46] = char_truth_garag1 // Let’s go see if we can find Dwaine. char_who_is_talking[47] = char_truth_garag1 // He’s working a hotdog van at the tram terminal in King’s char_who_is_talking[48] = scplayer // C’mon, dude, what was all that about? char_who_is_talking[49] = char_truth_garag1 // You don’t want to know. char_who_is_talking[50] = scplayer // Why? char_who_is_talking[51] = char_truth_garag1 // Do you know what a sub-dermal neurophone is? char_who_is_talking[52] = scplayer // A what? char_who_is_talking[53] = char_truth_garag1 // Exactly. char_who_is_talking[54] = char_truth_garag1 // Sometimes it’s best to stay in the dark, kid. REMOVE_BLIP blip_hospital REQUEST_MODEL pony WHILE NOT HAS_MODEL_LOADED pony WAIT 0 ENDWHILE REQUEST_ANIMATION CAR_CHAT WHILE NOT HAS_ANIMATION_LOADED CAR_CHAT WAIT 0 ENDWHILE CREATE_CAR pony -2607.11 623.91 14.66 car_zombietech_garage1 MARK_MODEL_AS_NO_LONGER_NEEDED pony LOCK_CAR_DOORS car_zombietech_garage1 CARLOCK_LOCKED SET_CAR_HEADING car_zombietech_garage1 180.0 FREEZE_CAR_POSITION car_zombietech_garage1 TRUE index_dialogue_garage1 = 38 // what are we doing here? // cutscene of strange goings on SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON CLEAR_MISSION_AUDIO 1 //SWITCH_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 // SWITCH_PED_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 // PRINT_NOW (GAR1_GA) 1500 1 // SET_NEAR_CLIP 0.1 flag_cutscene_garage1 = 0 TIMERA = 0 TIMERB = 0 IF NOT IS_CAR_DEAD car_player_garag1 SET_CAR_COORDINATES car_player_garag1 coords_hospital_x coords_hospital_y coords_hospital_z GET_CAR_HEADING car_player_garag1 heading_car_player_garage1 IF heading_car_player_garage1 > 0.0 AND heading_car_player_garage1 < 180.0 // SET_CAR_COORDINATES car_player_garag1 -2690.0598 894.6722 78.5344 SET_CAR_HEADING car_player_garag1 90.0 /* CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE -2588.1543 589.8139 23.1815 -2583.6855 582.2637 14.6789 4500 TRUE // two sets of coord for cam start point and end point + time for pan CAMERA_SET_VECTOR_TRACK -2588.6619 590.5887 23.5580 -2583.8630 583.2451 14.7525 4500 TRUE // two sets of coords for cam aim at start and end point + time for pan */ ELSE // SET_CAR_COORDINATES car_player_garag1 -2674.3975 890.5623 78.6200 SET_CAR_HEADING car_player_garag1 270.0 /* CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE -2578.2324 584.9357 18.1784 -2581.8386 585.5460 14.9879 4500 TRUE // two sets of coord for cam start point and end point + time for pan CAMERA_SET_VECTOR_TRACK -2578.9768 585.4704 18.5781 -2582.8013 585.4057 14.7572 4500 TRUE // two sets of coords for cam aim at start and end point + time for pan */ // SET_FIXED_CAMERA_POSITION -2582.32 582.00 15.33 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -2628.64 631.49 -2.14 JUMP_CUT ENDIF IF NOT IS_CHAR_IN_CAR scplayer car_player_garag1 WARP_CHAR_INTO_CAR scplayer car_player_garag1 ENDIF SET_FIXED_CAMERA_POSITION -2581.9397 580.4200 17.8189 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2582.4910 581.1530 18.2173 JUMP_CUT GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_player_garag1 0.8 2.2 0.8 offset_players_car_x offset_players_car_y offset_players_car_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_player_garag1 0.0 -1.5 0.5 offset_players_car2_x offset_players_car2_y offset_players_car2_z // SET_FIXED_CAMERA_POSITION offset_players_car_x offset_players_car_y offset_players_car_z 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT offset_players_car2_x offset_players_car2_y offset_players_car2_z JUMP_CUT CLEAR_AREA -2607.11 623.91 14.66 1000.0 TRUE ENDIF IF NOT IS_CHAR_DEAD char_truth_garag1 TASK_PLAY_ANIM char_truth_garag1 CAR_Sc3_FR CAR_CHAT 4.0 TRUE FALSE FALSE FALSE 9000 ENDIF GOSUB cutscene_audio CLEAR_AREA coords_hospital_x coords_hospital_y coords_hospital_z 1000.0 TRUE flag_cutscene_garage1 = 0 WHILE NOT flag_cutscene_garage1 = 10 WAIT 0 GOSUB checking_buddies_garage1 IF flag_mission_garag1_failed = 1 RETURN ENDIF IF flag_cutscene_garage1 = 0 IF TIMERA > 1500 SKIP_CUTSCENE_START IF NOT IS_CHAR_DEAD char_mech_garag1[0] TASK_PLAY_ANIM char_mech_garag1[0] CAR_Sc3_BR CAR_CHAT 4.0 TRUE FALSE FALSE FALSE 9000 ENDIF // SET_CAR_COORDINATES car_player_garag1 -2690.0598 894.6722 78.5344 // SET_CAR_HEADING car_player_garag1 90.0 // SET_FIXED_CAMERA_POSITION -2581.9397 580.4200 17.8189 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -2582.4910 581.1530 18.2173 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE -2581.9397 580.4200 17.8189 -2583.32 581.73 15.39 5000 TRUE // two sets of coord for cam start point and end point + time for pan CAMERA_SET_VECTOR_TRACK -2582.4910 581.1530 18.2173 -2607.11 623.91 14.66 5000 TRUE // two sets of coords for cam aim at start and end point + time for pan TASK_PLAY_ANIM scplayer CAR_Sc1_FL CAR_CHAT 4.0 FALSE FALSE FALSE FALSE -1 GOSUB cutscene_audio TIMERA = 0 ENDIF ENDIF IF flag_cutscene_garage1 = 1 IF TIMERA > 1500 GOSUB cutscene_audio IF NOT IS_CAR_DEAD car_zombietech_garage1 CREATE_CHAR_INSIDE_CAR car_zombietech_garage1 PEDTYPE_CIVMALE male01 pony_driver_garage1 ENDIF ENDIF ENDIF IF flag_cutscene_garage1 = 2 IF TIMERA > 1500 GOSUB cutscene_audio CAMERA_RESET_NEW_SCRIPTABLES SET_FIXED_CAMERA_POSITION -2583.32 581.73 15.39 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2607.11 623.91 14.66 JUMP_CUT ENDIF ENDIF IF flag_cutscene_garage1 = 3 IF TIMERA > 1500 GOSUB cutscene_audio ENDIF ENDIF IF flag_cutscene_garage1 = 4 IF TIMERA > 1500 IF NOT IS_CAR_DEAD car_zombietech_garage1 FREEZE_CAR_POSITION car_zombietech_garage1 FALSE // POINT_CAMERA_AT_CAR car_zombietech_garage1 FIXED INTERPOLATION IF NOT IS_CHAR_DEAD pony_driver_garage1 // CAR_GOTO_COORDINATES car_zombietech_garage1 -1564.43 728.96 6.0 IF IS_CHAR_IN_CAR pony_driver_garage1 car_zombietech_garage1 TASK_CAR_DRIVE_TO_COORD pony_driver_garage1 car_zombietech_garage1 -2607.95 528.47 13.98 25.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_AVOIDCARS ENDIF // SET_CAR_CRUISE_SPEED car_zombietech_garage1 30.0 ENDIF ENDIF GOSUB cutscene_audio ENDIF ENDIF IF flag_cutscene_garage1 = 5 IF TIMERA > 1500 GOSUB cutscene_audio ///sheeeeesh SET_FIXED_CAMERA_POSITION -2614.4614 573.4770 16.9766 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2613.7998 574.2240 16.9110 JUMP_CUT TIMERA = 0 ENDIF ENDIF IF flag_cutscene_garage1 = 6 IF TIMERA > 2500 GOSUB cutscene_audio IF NOT IS_CHAR_DEAD char_truth_garag1 TASK_PLAY_ANIM char_truth_garag1 CAR_Sc3_FR CAR_CHAT 4.0 TRUE FALSE FALSE FALSE 9000 ENDIF IF NOT IS_CHAR_DEAD char_mech_garag1[0] TASK_PLAY_ANIM char_mech_garag1[0] CAR_Sc3_BR CAR_CHAT 4.0 TRUE FALSE FALSE FALSE 9000 ENDIF TASK_PLAY_ANIM scplayer CAR_Sc1_FL CAR_CHAT 4.0 FALSE FALSE FALSE FALSE -1 /* IF heading_car_player_garage1 > 0.0 AND heading_car_player_garage1 < 180.0 // POINT_CAMERA_AT_POINT -2556.56 725.64 -8.84 INTERPOLATION POINT_CAMERA_AT_POINT -2533.64 683.49 -11.14 INTERPOLATION SET_INTERPOLATION_PARAMETERS 5.0 2000 ELSE // POINT_CAMERA_AT_POINT -2780.23 739.21 -28.12 INTERPOLATION POINT_CAMERA_AT_POINT -2628.64 631.49 -2.14 INTERPOLATION SET_INTERPOLATION_PARAMETERS 5.0 2000 ENDIF */ SET_FIXED_CAMERA_POSITION offset_players_car_x offset_players_car_y offset_players_car_z 0.0 0.0 0.0 POINT_CAMERA_AT_POINT offset_players_car2_x offset_players_car2_y offset_players_car2_z JUMP_CUT ENDIF ENDIF IF flag_cutscene_garage1 = 7 IF TIMERA > 1500 GOSUB cutscene_audio ENDIF ENDIF IF flag_cutscene_garage1 = 8 IF TIMERA > 1500 GOSUB cutscene_audio flag_cutscene_garage1 = 10 ENDIF ENDIF IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flag_cutscene_garage1 = 10 CLEAR_MISSION_AUDIO 1 ENDIF IF TIMERB > 20500 flag_cutscene_garage1 = 10 ENDIF ENDWHILE SKIP_CUTSCENE_END //SET_CAMERA_IN_FRONT_OF_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF CLEAR_PRINTS CAMERA_RESET_NEW_SCRIPTABLES REMOVE_ANIMATION CAR_CHAT IF IS_PLAYER_PLAYING player1 // SHUT_CHAR_UP scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF // SWITCH_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 // SWITCH_PED_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 flag_cutscene_garage1 = 0 index_dialogue_garage1 = 48 play_audio_flag_garage1 = 0 DELETE_CHAR pony_driver_garage1 DELETE_CAR car_zombietech_garage1 flag_go_to_hospital_garag1 = 0 flag_go_to_mechanic2_garag1 = 1 CHECKPOINT_SAVE 99 RETURN // //////////////////////////////// // go_to_mechanic2_garag2 // //////////////////////////////// go_to_mechanic2_garag1: REQUEST_MODEL HOTDOG WHILE NOT HAS_MODEL_LOADED HOTDOG WAIT 0 ENDWHILE REQUEST_ANIMATION SMOKING WHILE NOT HAS_ANIMATION_LOADED SMOKING WAIT 0 ENDWHILE LOAD_SPECIAL_CHARACTER 4 Dwayne WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 4 WAIT 0 ENDWHILE REQUEST_MODEL cigar WHILE NOT HAS_MODEL_LOADED cigar WAIT 0 ENDWHILE ADD_BLIP_FOR_COORD coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] blip_mech_garag1[index_garag1] // CHANGE_BLIP_COLOUR blip_mech_garag1[index_garag1] BLUE SET_COORD_BLIP_APPEARANCE blip_mech_garag1[index_garag1] COORD_BLIP_APPEARANCE_FRIEND // SET_BLIP_AS_FRIENDLY blip_mech_garag1[index_garag1] TRUE //PRINT_NOW (GAR1_02) 5000 1 //lets go pick up mech 1 IF flag_mission_garag1_failed = 14 // to fool the compiler CREATE_CHAR PEDTYPE_CIVMALE SPECIAL04 coord_mech_garage1_x[index_garag1] coord_mech_garage1_y[index_garag1] coord_mech_garage1_z[index_garag1] char_mech_garag1[index_garag1] CREATE_CAR HOTDOG -2238.8884 541.5267 34.3750 car_mech2_garag1 CREATE_OBJECT cigar coord_mech_garage1_x[index_garag1] coord_mech_garage1_y[index_garag1] coord_mech_garage1_z[index_garag1] dwaynes_blunt DELETE_CAR car_mech2_garag1 DELETE_CHAR char_mech_garag1[index_garag1] DELETE_OBJECT dwaynes_blunt ENDIF GOSUB going_to_destinations_garage1 IF flag_mission_garag1_failed = 1 RETURN ENDIF IF DOES_OBJECT_EXIST dwaynes_blunt DELETE_OBJECT dwaynes_blunt // TASK_PICK_UP_OBJECT char_mech_garag1[index_garag1] dwaynes_blunt 0.04 0.1 -0.02 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL FALSE ENDIF REQUEST_ANIMATION CAR_CHAT WHILE NOT HAS_ANIMATION_LOADED CAR_CHAT WAIT 0 ENDWHILE char_who_is_talking[55] = char_truth_garag1// Yo, Dwaine, how’s the noodle business. char_who_is_talking[56] = char_mech_garag1[1]// Utterly shit. What’s happenin’? char_who_is_talking[57] = char_truth_garag1// My friend Carl here is opening a chop shop. char_who_is_talking[58] = char_truth_garag1// Jethro’s in, how about you? char_who_is_talking[59] = char_mech_garag1[1]// Sure thing, char_who_is_talking[60] = char_mech_garag1[1]// I’ve, like, got some some shit to deal with first. char_who_is_talking[61] = char_mech_garag1[1]// Where is it, I’ll, like, meet you dudes there. char_who_is_talking[62] = scplayer // The old garage on the waste ground in Doherty. char_who_is_talking[63] = char_mech_garag1[1]// See you later. char_who_is_talking[64] = char_truth_garag1// Ok, next stop the cop station downtown. char_who_is_talking[65] = scplayer // What? Are you off your mind? Why? char_who_is_talking[66] = char_truth_garag1// If I told you, the likelihood is you’d get a probe up your ass within a month. char_who_is_talking[67] = char_mech_garag1[0]// Like, listen to the man, dude, he’s real serious about that shit. char_who_is_talking[68] = scplayer// Whuh? Oh, ok. But you’re starting to freak me a little. IF NOT IS_CHAR_DEAD char_mech_garag1[index_garag1] IF NOT DOES_OBJECT_EXIST dwaynes_blunt // DROP_OBJECT char_mech_garag1[index_garag1] FALSE CREATE_OBJECT cigar coord_mech_garage1_x[index_garag1] coord_mech_garage1_y[index_garag1] coord_mech_garage1_z[index_garag1] dwaynes_blunt TASK_PICK_UP_OBJECT char_mech_garag1[index_garag1] dwaynes_blunt 0.04 0.1 0.05 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL FALSE CREATE_FX_SYSTEM_ON_CHAR exhale char_mech_garag1[index_garag1] 0.05 0.12 0.0 TRUE exhale_smoke_effect ATTACH_FX_SYSTEM_TO_CHAR_BONE exhale_smoke_effect char_mech_garag1[index_garag1] BONE_HEAD // PLAY_FX_SYSTEM exhale_smoke_effect ENDIF ENDIF // /////////////////////////////////////// // Make truth run out and fetch mechanic // /////////////////////////////////////// /////////////////////////////////////////// // Setting players car position for cutscene ////////////////////////////////////////////// IF NOT IS_CAR_DEAD car_player_garag1 GET_CAR_HEADING car_player_garag1 heading_car_player_garage1 SET_CAR_COORDINATES car_player_garag1 coords_garage_garag1_x[1] coords_garage_garag1_y[1] coords_garage_garag1_z[1] IF NOT IS_CHAR_IN_CAR scplayer car_player_garag1 WARP_CHAR_INTO_CAR scplayer car_player_garag1 ENDIF SET_FIXED_CAMERA_POSITION -2235.8147 541.4094 35.7451 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2236.5208 542.1174 35.7312 JUMP_CUT CLEAR_AREA coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] 1000.0 TRUE IF NOT IS_CHAR_DEAD char_mech_garag1[index_garag1] TASK_PLAY_ANIM_NON_INTERRUPTABLE char_mech_garag1[index_garag1] M_smk_out SMOKING 4.0 FALSE FALSE FALSE FALSE 0 ENDIF IF heading_car_player_garage1 > 90.0 AND heading_car_player_garage1 < 270.0 // SET_CAR_COORDINATES car_player_garag1 -2690.0598 894.6722 78.5344 SET_CAR_HEADING car_player_garag1 180.0 IF NOT IS_CHAR_DEAD char_truth_garag1 TASK_PLAY_ANIM char_truth_garag1 CAR_Sc4_FR CAR_CHAT 4.0 TRUE FALSE FALSE FALSE -1 ENDIF TASK_PLAY_ANIM scplayer CAR_Sc4_FL CAR_CHAT 4.0 FALSE FALSE FALSE FALSE -1 ELSE // SET_CAR_COORDINATES car_player_garag1 -2674.3975 890.5623 78.6200 SET_CAR_HEADING car_player_garag1 0.0 IF NOT IS_CHAR_DEAD char_truth_garag1 TASK_PLAY_ANIM char_truth_garag1 CAR_Sc3_FR CAR_CHAT 4.0 TRUE FALSE FALSE FALSE 9000 ENDIF TASK_PLAY_ANIM scplayer CAR_Sc2_FL CAR_CHAT 4.0 FALSE FALSE FALSE FALSE -1 ENDIF ENDIF index_dialogue_garage1 = 55 GOSUB cutscene_audio SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON CLEAR_MISSION_AUDIO 1 // SWITCH_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 // SWITCH_PED_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 /* OPEN_SEQUENCE_TASK seq_truth_talking_to_mech2_garag1 // truth speaking to the mechanics TASK_LEAVE_CAR -1 car_player_garag1 // TASK_GOTO_CHAR -1 char_mech_garag1[1] 6000 0.5 TASK_GOTO_CHAR_OFFSET -1 char_mech_garag1[1] 6000 1.0 0.0 TASK_CHAT_WITH_CHAR -1 char_mech_garag1[1] TRUE FALSE TASK_ENTER_CAR_AS_PASSENGER -1 car_player_garag1 5000 0 // SET_SEQUENCE_TO_REPEAT seq_preachers_reading_sweet7 1 CLOSE_SEQUENCE_TASK seq_truth_talking_to_mech2_garag1 */ flag_cutscene_garage1 = 0 TIMERA = 0 TIMERB = 0 WHILE NOT flag_cutscene_garage1 = 20 WAIT 0 // CLEAR_AREA coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] 1000.0 TRUE GOSUB checking_buddies_garage1 IF flag_mission_garag1_failed = 1 RETURN ENDIF IF flag_cutscene_garage1 = 0 SKIP_CUTSCENE_START IF TIMERA > 2000 // PRINT_NOW GAR1_JB 2000 1 PLAY_FX_SYSTEM exhale_smoke_effect IF NOT IS_CHAR_DEAD char_mech_garag1[index_garag1] START_CHAR_FACIAL_TALK char_mech_garag1[index_garag1] 4000 ENDIF GOSUB cutscene_audio IF NOT IS_CHAR_DEAD char_mech_garag1[index_garag1] TASK_PLAY_ANIM_NON_INTERRUPTABLE char_mech_garag1[index_garag1] M_smk_out SMOKING 4.0 FALSE FALSE FALSE FALSE 0 FREEZE_CHAR_POSITION char_mech_garag1[index_garag1] FALSE ENDIF IF heading_car_player_garage1 > 90.0 AND heading_car_player_garage1 < 270.0 // SET_CAR_COORDINATES car_player_garag1 -2690.0598 894.6722 78.5344 IF NOT IS_CHAR_DEAD char_truth_garag1 TASK_PLAY_ANIM char_truth_garag1 CAR_Sc4_FR CAR_CHAT 4.0 TRUE FALSE FALSE FALSE -1 ENDIF TASK_PLAY_ANIM scplayer CAR_Sc4_FL CAR_CHAT 4.0 FALSE FALSE FALSE FALSE -1 /* SET_FIXED_CAMERA_POSITION -2227.35 541.37 35.61 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2398.33 634.21 18.66 JUMP_CUT */ ELSE // SET_CAR_COORDINATES car_player_garag1 -2674.3975 890.5623 78.6200 IF NOT IS_CHAR_DEAD char_truth_garag1 TASK_PLAY_ANIM char_truth_garag1 CAR_Sc3_FR CAR_CHAT 4.0 TRUE FALSE FALSE FALSE 9000 ENDIF TASK_PLAY_ANIM scplayer CAR_Sc2_FL CAR_CHAT 4.0 FALSE FALSE FALSE FALSE -1 /* SET_FIXED_CAMERA_POSITION -2228.18 547.44 35.75 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2372.61 445.56 20.49 JUMP_CUT */ ENDIF ENDIF ENDIF IF flag_cutscene_garage1 = 1 IF TIMERA > 2000 IF NOT IS_CAR_DEAD car_mech2_garag1 LOCK_CAR_DOORS car_mech2_garag1 CARLOCK_UNLOCKED IF NOT IS_CHAR_DEAD char_mech_garag1[1] TASK_GO_STRAIGHT_TO_COORD char_mech_garag1[1] -2232.07 545.04 34.39 PEDMOVE_WALK -1 REMOVE_ANIMATION SMOKING // REMOVE_ANIMATION PARK // TASK_LEAVE_CAR char_truth_garag1 car_player_garag1 // PERFORM_SEQUENCE_TASK char_truth_garag1 seq_truth_talking_to_mech2_garag1 IF heading_car_player_garage1 > 90.0 AND heading_car_player_garage1 < 270.0 SET_FIXED_CAMERA_POSITION -2233.6887 541.4159 35.2249 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2233.1394 542.2441 35.1142 JUMP_CUT ELSE SET_FIXED_CAMERA_POSITION -2228.6204 540.7846 35.5936 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2229.1992 541.5954 35.5075 JUMP_CUT ENDIF ELSE PRINT_NOW (GAR1_07) 5000 1 //the cars blown up! flag_go_to_mechanic2_garag1 = 0 flag_mission_garag1_failed = 1 RETURN ENDIF IF NOT IS_CHAR_DEAD char_mech_garag1[index_garag1] FREEZE_CAR_POSITION car_mech2_garag1 FALSE // TASK_ENTER_CAR_AS_DRIVER char_mech_garag1[index_garag1] car_mech2_garag1 5000 GOSUB cutscene_audio ELSE flag_go_to_mechanic2_garag1 = 0 flag_mission_garag1_failed = 1 RETURN ENDIF ELSE PRINT_NOW (GAR1_07) 5000 1 //the cars blown up! flag_go_to_mechanic2_garag1 = 0 flag_mission_garag1_failed = 1 RETURN ENDIF ENDIF ENDIF IF TIMERA > 1500 IF flag_cutscene_garage1 = 2 GOSUB cutscene_audio IF NOT IS_CHAR_DEAD char_mech_garag1[index_garag1] // SET_CHAR_COORDINATES char_mech_garag1[index_garag1] -2232.84 543.99 34.1 SET_CHAR_HEADING char_mech_garag1[index_garag1] 270.0 OPEN_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 // truth speaking to the mechanics TASK_GO_STRAIGHT_TO_COORD -1 -2232.07 545.04 34.39 PEDMOVE_WALK -1 TASK_PLAY_ANIM -1 car_talkm_in CAR_CHAT 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM -1 car_talkm_loop CAR_CHAT 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM -1 car_talkm_out CAR_CHAT 4.0 FALSE FALSE FALSE FALSE 0 // TASK_TURN_CHAR_TO_FACE_COORD -1 coords_garage_garag1_x[0] coords_garage_garag1_y[0] coords_garage_garag1_z[0] // TASK_ACHIEVE_HEADING -1 246.0 // TASK_PLAY_ANIM -1 wave_loop ON_LOOKERS 4.0 FALSE FALSE FALSE FALSE 1500 CLOSE_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 PERFORM_SEQUENCE_TASK char_mech_garag1[1] seq_truth_talking_to_mech1_garag1 CLEAR_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 // TASK_CHAT_WITH_CHAR char_mech_garag1[index_garag1] scplayer FALSE TRUE // TASK_CHAT_WITH_CHAR scplayer char_mech_garag1[index_garag1] TRUE FALSE ENDIF ENDIF ENDIF IF flag_cutscene_garage1 = 3 GOSUB cutscene_audio ENDIF IF flag_cutscene_garage1 = 4 GOSUB cutscene_audio ENDIF IF flag_cutscene_garage1 = 5 GOSUB cutscene_audio ENDIF IF flag_cutscene_garage1 = 6 GOSUB cutscene_audio TIMERA = 0 IF NOT IS_CAR_DEAD car_mech2_garag1 IF NOT IS_CHAR_DEAD char_mech_garag1[1] OPEN_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 // truth speaking to the mechanics TASK_GO_STRAIGHT_TO_COORD -1 -2241.66 547.19 34.49 PEDMOVE_RUN -1 /* TASK_PLAY_ANIM -1 car_talkm_in CAR_CHAT 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM -1 car_talkm_loop CAR_CHAT 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM -1 car_talkm_out CAR_CHAT 4.0 FALSE FALSE FALSE FALSE 0 */ TASK_ENTER_CAR_AS_DRIVER -1 car_mech2_garag1 -1 // TASK_TURN_CHAR_TO_FACE_COORD -1 coords_garage_garag1_x[0] coords_garage_garag1_y[0] coords_garage_garag1_z[0] // TASK_ACHIEVE_HEADING -1 246.0 // TASK_PLAY_ANIM -1 wave_loop ON_LOOKERS 4.0 FALSE FALSE FALSE FALSE 1500 CLOSE_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 PERFORM_SEQUENCE_TASK char_mech_garag1[1] seq_truth_talking_to_mech1_garag1 CLEAR_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 ENDIF ENDIF ENDIF IF flag_cutscene_garage1 = 7 GOSUB cutscene_audio SET_FIXED_CAMERA_POSITION -2229.1545 533.4247 41.4992 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2229.6589 534.1230 40.9914 JUMP_CUT IF NOT IS_CAR_DEAD car_mech2_garag1 IF NOT IS_CHAR_DEAD char_mech_garag1[index_garag1] WARP_CHAR_INTO_CAR char_mech_garag1[index_garag1] car_mech2_garag1 IF IS_CHAR_IN_CAR char_mech_garag1[index_garag1] car_mech2_garag1 OPEN_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 // truth speaking to the mechanics TASK_CAR_DRIVE_TO_COORD -1 car_mech2_garag1 -2240.43 557.96 34.0 10.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_DRIVE_TO_COORD -1 car_mech2_garag1 -2185.43 567.96 34.0 50.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH CLOSE_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 PERFORM_SEQUENCE_TASK char_mech_garag1[1] seq_truth_talking_to_mech1_garag1 CLEAR_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 ENDIF ENDIF ENDIF ENDIF IF TIMERA > 4000 IF flag_cutscene_garage1 = 8 GOSUB cutscene_audio IF NOT IS_CAR_DEAD car_player_garag1 /* GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_player_garag1 0.5 1.5 0.8 offset_players_car_x offset_players_car_y offset_players_car_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_player_garag1 0.0 -1.5 0.5 offset_players_car2_x offset_players_car2_y offset_players_car2_z SET_FIXED_CAMERA_POSITION offset_players_car_x offset_players_car_y offset_players_car_z 0.0 0.0 0.0 POINT_CAMERA_AT_POINT offset_players_car2_x offset_players_car2_y offset_players_car2_z JUMP_CUT */ SET_FIXED_CAMERA_POSITION -2235.0105 538.8505 34.3478 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2234.1826 539.4094 34.3942 JUMP_CUT IF NOT IS_CHAR_DEAD char_truth_garag1 TASK_PLAY_ANIM char_truth_garag1 CAR_Sc3_FR CAR_CHAT 4.0 TRUE FALSE FALSE FALSE 9000 ENDIF ENDIF STOP_FX_SYSTEM exhale_smoke_effect IF NOT IS_CHAR_DEAD char_mech_garag1[index_garag1] DELETE_CHAR char_mech_garag1[index_garag1] ENDIF IF NOT IS_CAR_DEAD car_mech2_garag1 DELETE_CAR car_mech2_garag1 ENDIF IF DOES_OBJECT_EXIST dwaynes_blunt DELETE_OBJECT dwaynes_blunt ENDIF ENDIF ENDIF IF TIMERA > 1500 IF flag_cutscene_garage1 = 9 GOSUB cutscene_audio ENDIF ENDIF IF TIMERA > 1500 IF flag_cutscene_garage1 = 10 GOSUB cutscene_audio ENDIF ENDIF IF TIMERA > 1500 IF flag_cutscene_garage1 = 11 GOSUB cutscene_audio ENDIF ENDIF IF TIMERA > 1500 IF flag_cutscene_garage1 = 12 GOSUB cutscene_audio flag_cutscene_garage1 = 20 ENDIF ENDIF IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flag_cutscene_garage1 = 20 STOP_FX_SYSTEM exhale_smoke_effect IF NOT IS_CHAR_DEAD char_mech_garag1[index_garag1] DELETE_CHAR char_mech_garag1[index_garag1] ENDIF IF NOT IS_CAR_DEAD car_mech2_garag1 DELETE_CAR car_mech2_garag1 ENDIF IF DOES_OBJECT_EXIST dwaynes_blunt DELETE_OBJECT dwaynes_blunt ENDIF CLEAR_MISSION_AUDIO 1 ENDIF IF TIMERB > 40000 flag_cutscene_garage1 = 20 ENDIF ENDWHILE SKIP_CUTSCENE_END //SET_CAMERA_IN_FRONT_OF_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF REMOVE_ANIMATION CAR_CHAT IF IS_PLAYER_PLAYING player1 // SHUT_CHAR_UP scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF // SWITCH_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 // SWITCH_PED_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 flag_cutscene_garage1 = 0 play_audio_flag_garage1 = 0 CLEAR_PRINTS // ///////// WARP TRUTH AND MECHANIC INTO CAR /////////////////////// IF NOT IS_CAR_DEAD car_player_garag1 SET_CAR_STATUS car_player_garag1 STATUS_PLAYER IF NOT IS_CHAR_DEAD char_truth_garag1 IF NOT IS_CHAR_IN_CAR char_truth_garag1 car_player_garag1 IF IS_CAR_PASSENGER_SEAT_FREE car_player_garag1 0 WARP_CHAR_INTO_CAR_AS_PASSENGER char_truth_garag1 car_player_garag1 0 ELSE GET_CHAR_IN_CAR_PASSENGER_SEAT car_player_garag1 0 temp_passenger_to_be_deleted_garage1 DELETE_CHAR temp_passenger_to_be_deleted_garage1 WARP_CHAR_INTO_CAR_AS_PASSENGER char_truth_garag1 car_player_garag1 0 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD char_mech_garag1[index_garag1] IF NOT IS_CAR_DEAD car_mech2_garag1 IF NOT IS_CHAR_IN_CAR char_mech_garag1[index_garag1] car_mech2_garag1 WARP_CHAR_INTO_CAR char_mech_garag1[index_garag1] car_mech2_garag1 ENDIF ENDIF ENDIF ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED HOTDOG MARK_MODEL_AS_NO_LONGER_NEEDED cigar UNLOAD_SPECIAL_CHARACTER 4 // unloading zero IF NOT IS_CHAR_DEAD char_mech_garag1[index_garag1] DELETE_CHAR char_mech_garag1[index_garag1] ENDIF IF NOT IS_CAR_DEAD car_mech2_garag1 DELETE_CAR car_mech2_garag1 ENDIF IF DOES_OBJECT_EXIST dwaynes_blunt DELETE_OBJECT dwaynes_blunt ENDIF index_garag1 = 2 flag_go_to_mechanic2_garag1 = 0 flag_go_to_police_station_garag1 = 1 RETURN // Goto police station go_to_police_station_garag1: //ADD_BLIP_FOR_COORD coords_police_x coords_police_y coords_police_z blip_police ADD_SPRITE_BLIP_FOR_COORD coords_police_x coords_police_y coords_police_z RADAR_SPRITE_POLICE blip_police GOSUB going_to_destinations_garage1 IF flag_mission_garag1_failed = 1 RETURN ENDIF REQUEST_MODEL pony REQUEST_ANIMATION CAR_CHAT WHILE NOT HAS_MODEL_LOADED pony OR NOT HAS_ANIMATION_LOADED CAR_CHAT WAIT 0 ENDWHILE CREATE_CAR pony -1659.92 751.31 17.29 car_zombietech_garage1 LOCK_CAR_DOORS car_zombietech_garage1 CARLOCK_LOCKED SET_CAR_HEADING car_zombietech_garage1 180.0 FREEZE_CAR_POSITION car_zombietech_garage1 TRUE IF NOT IS_CAR_DEAD car_zombietech_garage1 CREATE_CHAR_INSIDE_CAR car_zombietech_garage1 PEDTYPE_CIVMALE male01 pony_driver_garage1 FREEZE_CAR_POSITION car_zombietech_garage1 FALSE SET_CAR_CRUISE_SPEED car_zombietech_garage1 30.0 ENDIF char_who_is_talking[69] = char_truth_garag1// Ok, you know the drill. char_who_is_talking[70] = char_truth_garag1// Don’t look interested in anything. char_who_is_talking[71] = char_truth_garag1// Picture a pink golfball in your mind. char_who_is_talking[72] = char_truth_garag1// Ok, we’re good to go. char_who_is_talking[73] = scplayer // Where to next, El Kozmo? char_who_is_talking[74] = char_truth_garag1// There’s an electronics guy I’ve had dealings with, char_who_is_talking[75] = char_truth_garag1// goes by the name of ZERO. char_who_is_talking[76] = char_truth_garag1// He could fix a supercomputer with a paperclip. char_who_is_talking[77] = char_truth_garag1// He’s got his own shop, char_who_is_talking[78] = char_truth_garag1// but he’s always ready to help fellow travellers along the path. char_who_is_talking[79] = char_truth_garag1// Let’s go introduce you to him char_who_is_talking[80] = scplayer // Look, what’s goin’ on, Truth? char_who_is_talking[81] = scplayer // Who were those guys? char_who_is_talking[82] = char_mech_garag1[0] // Don’t go there, man. char_who_is_talking[83] = char_truth_garag1// Listen to Jethro. char_who_is_talking[84] = char_truth_garag1// What if I told you we never went to the moon, char_who_is_talking[85] = char_truth_garag1// JFK lives in Scotland with Janis Joplin char_who_is_talking[86] = char_truth_garag1// and the only reason we’ve been in a cold war for the last fortyfive years char_who_is_talking[87] = char_truth_garag1// was because snake-headed aliens run the oil business? char_who_is_talking[88] = scplayer// I’d say you’d dropped another microdot. char_who_is_talking[89] = char_truth_garag1// Good. Keep it that way. char_who_is_talking[91] = char_truth_garag1// Blow the horn. // cutscene of strange goings on SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON CLEAR_MISSION_AUDIO 1 // SWITCH_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 // SWITCH_PED_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 IF NOT IS_CAR_DEAD car_player_garag1 IF NOT IS_CHAR_IN_CAR scplayer car_player_garag1 WARP_CHAR_INTO_CAR scplayer car_player_garag1 ENDIF GET_CAR_HEADING car_player_garag1 heading_car_player_garage1 SET_CAR_COORDINATES car_player_garag1 -1626.1670 725.0057 13.4609 IF heading_car_player_garage1 > 0.0 AND heading_car_player_garage1 < 180.0 SET_CAR_HEADING car_player_garag1 90.0 ELSE SET_CAR_HEADING car_player_garag1 270.0 ENDIF GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_player_garag1 1.0 1.5 0.8 offset_players_car_x offset_players_car_y offset_players_car_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_player_garag1 0.0 -1.5 0.5 offset_players_car2_x offset_players_car2_y offset_players_car2_z SET_FIXED_CAMERA_POSITION offset_players_car_x offset_players_car_y offset_players_car_z 0.0 0.0 0.0 POINT_CAMERA_AT_POINT offset_players_car2_x offset_players_car2_y offset_players_car2_z JUMP_CUT CLEAR_AREA -1659.92 751.31 17.29 1000.0 TRUE ENDIF IF NOT IS_CHAR_DEAD char_truth_garag1 TASK_PLAY_ANIM char_truth_garag1 CAR_Sc1_FR CAR_CHAT 4.0 TRUE FALSE FALSE FALSE 9000 //START_CHAR_FACIAL_TALK char_truth_garag1 29000 ENDIF /* IF NOT IS_CAR_DEAD car_player_garag1 POINT_CAMERA_AT_CAR car_player_garag1 FIXED JUMP_CUT ENDIF */ flag_cutscene_garage1 = 0 index_dialogue_garage1 = 69 TIMERA = 0 TIMERB = 0 WHILE NOT flag_cutscene_garage1 = 20 WAIT 0 //CLEAR_AREA coords_police_x coords_police_y coords_police_z 1000.0 TRUE GOSUB checking_buddies_garage1 IF flag_mission_garag1_failed = 1 RETURN ENDIF IF flag_cutscene_garage1 = 0 SKIP_CUTSCENE_START IF TIMERA > 1500 IF NOT IS_CHAR_DEAD char_truth_garag1 START_CHAR_FACIAL_TALK char_truth_garag1 29000 ENDIF GOSUB cutscene_audio ENDIF ENDIF IF flag_cutscene_garage1 = 1 IF TIMERA > 2000 GOSUB cutscene_audio // SET_FIXED_CAMERA_POSITION -1675.4844 717.8833 37.3235 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -1674.8118 718.2260 36.6677 JUMP_CUT IF NOT IS_CAR_DEAD car_zombietech_garage1 IF NOT IS_CHAR_DEAD pony_driver_garage1 // CAR_GOTO_COORDINATES car_zombietech_garage1 -1564.43 728.96 6.0 IF IS_CHAR_IN_CAR pony_driver_garage1 car_zombietech_garage1 TASK_CAR_DRIVE_TO_COORD pony_driver_garage1 car_zombietech_garage1 -1716.03 732.96 24.9 15.0 MODE_NORMAL 0 DRIVINGMODE_AVOIDCARS ENDIF // SET_CAR_CRUISE_SPEED car_zombietech_garage1 30.0 ENDIF ENDIF SET_FIXED_CAMERA_POSITION -1671.5474 729.8510 18.6107 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1670.6207 730.2037 18.7409 JUMP_CUT TIMERA = 0 ENDIF ENDIF IF flag_cutscene_garage1 = 2 IF TIMERA > 2000 // PRINT_NOW GAR1_LC 2000 1 // Picture a pink golfball in your mind. GOSUB cutscene_audio ENDIF ENDIF IF flag_cutscene_garage1 = 3 IF TIMERA > 6000 // SET_FIXED_CAMERA_POSITION -1615.4164 722.5748 13.7408 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -1616.2449 723.0778 13.9868 JUMP_CUT SET_FIXED_CAMERA_POSITION -1624.6388 723.3417 14.5936 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1625.4730 723.8466 14.8151 JUMP_CUT TASK_PLAY_ANIM scplayer CAR_Sc1_FL CAR_CHAT 4.0 FALSE FALSE FALSE FALSE -1 START_CHAR_FACIAL_TALK scplayer 3000 IF NOT IS_CHAR_DEAD char_truth_garag1 TASK_PLAY_ANIM char_truth_garag1 CAR_Sc1_FR CAR_CHAT 4.0 TRUE FALSE FALSE FALSE 9000 ENDIF GOSUB cutscene_audio IF NOT IS_CHAR_DEAD char_truth_garag1 START_CHAR_FACIAL_TALK char_truth_garag1 20000 ENDIF ENDIF ENDIF IF flag_cutscene_garage1 >= 4 AND flag_cutscene_garage1 <= 7 GOSUB cutscene_audio ENDIF IF flag_cutscene_garage1 = 8 IF TIMERA > 2000 SET_FIXED_CAMERA_POSITION -1628.7999 727.3613 14.7421 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1627.8439 727.0695 14.7728 JUMP_CUT GOSUB cutscene_audio /* GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_player_garag1 1.0 1.5 0.8 offset_players_car_x offset_players_car_y offset_players_car_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_player_garag1 0.0 -1.5 0.5 offset_players_car2_x offset_players_car2_y offset_players_car2_z SET_FIXED_CAMERA_POSITION offset_players_car_x offset_players_car_y offset_players_car_z 0.0 0.0 0.0 POINT_CAMERA_AT_POINT offset_players_car2_x offset_players_car2_y offset_players_car2_z JUMP_CUT */ TIMERA = 0 ENDIF ENDIF IF flag_cutscene_garage1 >= 9 AND flag_cutscene_garage1 <= 11 GOSUB cutscene_audio ENDIF IF flag_cutscene_garage1 >= 12 flag_cutscene_garage1 = 20 ENDIF // IF flag_cutscene_garage1 > 1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flag_cutscene_garage1 = 20 CLEAR_MISSION_AUDIO 1 ENDIF IF TIMERB > 29000 flag_cutscene_garage1 = 20 ENDIF ENDWHILE SKIP_CUTSCENE_END IF NOT IS_CHAR_DEAD char_truth_garag1 STOP_CHAR_FACIAL_TALK char_truth_garag1 ENDIF //SET_CAMERA_IN_FRONT_OF_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF IF IS_PLAYER_PLAYING player1 // SHUT_CHAR_UP scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF REMOVE_ANIMATION CAR_CHAT MARK_MODEL_AS_NO_LONGER_NEEDED pony // SWITCH_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 // SWITCH_PED_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 flag_cutscene_garage1 = 0 index_dialogue_garage1 = 80 play_audio_flag_garage1 = 0 CLEAR_PRINTS REMOVE_BLIP blip_police DELETE_CHAR pony_driver_garage1 DELETE_CAR car_zombietech_garage1 REMOVE_ANIMATION CAR_CHAT flag_go_to_police_station_garag1 = 0 //only save the first pass through IF flag_go_to_mechanic3_garag1 = 0 CHECKPOINT_SAVE 99 ENDIF flag_go_to_mechanic3_garag1 = 1 RETURN // //////////////////////////////// // go_to_mechanic3 ZERO // //////////////////////////////// go_to_mechanic3_garag1: ADD_BLIP_FOR_COORD coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] blip_mech_garag1[index_garag1] // CHANGE_BLIP_COLOUR blip_mech_garag1[index_garag1] BLUE SET_COORD_BLIP_APPEARANCE blip_mech_garag1[index_garag1] COORD_BLIP_APPEARANCE_FRIEND //SET_BLIP_AS_FRIENDLY blip_mech_garag1[index_garag1] TRUE // PRINT_NOW (GAR1_13) 5000 1 //lets go pick up zero REQUEST_ANIMATION CRIB REQUEST_MODEL rcraider WHILE NOT HAS_ANIMATION_LOADED CRIB OR NOT HAS_MODEL_LOADED rcraider WAIT 0 ENDWHILE CREATE_OBJECT parkbench1 -2242.6 136.91 34.65 object_zeros_bench DELETE_OBJECT object_zeros_bench CREATE_CAR rcraider -2250.33 139.91 44.66 rc_heli_garage1 DELETE_CAR rc_heli_garage1 LOAD_SPECIAL_CHARACTER 1 zero WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 WAIT 0 ENDWHILE REQUEST_MODEL bomb REQUEST_MODEL SATCHEL WHILE NOT HAS_MODEL_LOADED bomb OR NOT HAS_MODEL_LOADED SATCHEL WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE SPECIAL01 coord_mech_garage1_x[2] coord_mech_garage1_y[2] coord_mech_garage1_z[2] char_mech_garag1[2] SET_CHAR_ONLY_DAMAGED_BY_PLAYER char_mech_garag1[2] TRUE GIVE_WEAPON_TO_CHAR char_mech_garag1[2] WEAPONTYPE_REMOTE_SATCHEL_CHARGE 10 SET_CHAR_NEVER_TARGETTED char_mech_garag1[2] TRUE GIVE_WEAPON_TO_CHAR char_mech_garag1[2] WEAPONTYPE_DETONATOR 1 SET_CHAR_RELATIONSHIP char_mech_garag1[2] ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER char_mech_garag1[2] dm_buddies_garage1 SET_CURRENT_CHAR_WEAPON char_mech_garag1[2] WEAPONTYPE_DETONATOR DELETE_CHAR char_mech_garag1[2] GOSUB going_to_destinations_garage1 REQUEST_ANIMATION CAR_CHAT WHILE NOT HAS_ANIMATION_LOADED CAR_CHAT WAIT 0 ENDWHILE IF flag_mission_garag1_failed = 1 RETURN ENDIF char_who_is_talking[92] = char_mech_garag1[2]// Leave me alone Berkley! char_who_is_talking[93] = char_mech_garag1[2]// This is stalking! char_who_is_talking[94] = char_mech_garag1[2]// Oh, hi! char_who_is_talking[95] = char_truth_garag1// Get in, I’ll fill you in as we drive. char_who_is_talking[96] = char_truth_garag1// Home, James! char_who_is_talking[97] = char_truth_garag1// Carl, Zero, Zero, Carl. char_who_is_talking[98] = scplayer // Yo. char_who_is_talking[99] = char_truth_garag1// Carl here is opening a garage around the corner here. char_who_is_talking[100] = char_truth_garag1// I told him you’re the man to speak to when it comes to electronics. char_who_is_talking[101] = char_mech_garag1[2]// I’m the ONLY man to talk to. char_who_is_talking[102] = char_mech_garag1[2]// Grade A fuckin’ genius, that’s me. char_who_is_talking[103] = char_mech_garag1[2]// You should drop by the shop sometime, see some of my shit. char_who_is_talking[104] = scplayer// I’ll do just that. char_who_is_talking[105] = scplayer// Yo, we’re here. // CUTSCENE HERE:- SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON CLEAR_MISSION_AUDIO 1 // SWITCH_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 // SWITCH_PED_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 SWITCH_RANDOM_TRAINS OFF //CLEAR_AREA coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] 1000.0 TRUE //Setting Up The Camera Positioning // SET_FIXED_CAMERA_POSITION -2251.1777 123.6392 37.5361 0.0 0.0 0.0 IF NOT IS_CAR_DEAD rc_heli_garage1 SET_CAR_COORDINATES rc_heli_garage1 -2244.56 127.11 40.0 HELI_LAND_AT_COORDS rc_heli_garage1 -2244.48 129.14 34.56 0.0 0.0 SET_CAR_CRUISE_SPEED rc_heli_garage1 21.0 // SET_HELI_STABILISER rc_heli_garage1 FALSE ENDIF SET_FIXED_CAMERA_POSITION -2250.3059 140.9439 41.7533 0.0 0.0 0.0 //1st POINT_CAMERA_AT_POINT -2249.8042 140.3430 41.1311 JUMP_CUT CLEAR_AREA coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] 1000.0 TRUE IF NOT IS_CAR_DEAD car_player_garag1 IF NOT IS_CHAR_IN_CAR scplayer car_player_garag1 WARP_CHAR_INTO_CAR scplayer car_player_garag1 ENDIF GET_CAR_HEADING car_player_garag1 heading_car_player_garage1 IF heading_car_player_garage1 > 90.0 AND heading_car_player_garage1 < 270.0 SET_CAR_HEADING car_player_garag1 180.0 ELSE SET_CAR_HEADING car_player_garag1 0.0 ENDIF IF NOT IS_CAR_PASSENGER_SEAT_FREE car_player_garag1 1 GET_CHAR_IN_CAR_PASSENGER_SEAT car_player_garag1 1 temp_passenger_to_be_deleted_garage1 DELETE_CHAR temp_passenger_to_be_deleted_garage1 ENDIF ENDIF IF NOT IS_CHAR_DEAD char_mech_garag1[2] // POINT_CAMERA_AT_CHAR char_mech_garag1[2] FIXED JUMP_CUT SET_CHAR_HEALTH char_mech_garag1[2] 200 SET_CHAR_SUFFERS_CRITICAL_HITS char_mech_garag1[2] FALSE SET_CHAR_PROOFS char_mech_garag1[2] TRUE TRUE TRUE TRUE TRUE ENDIF index_dialogue_garage1 = 92 flag_cutscene_garage1 = 0 TIMERA = 0 TIMERB = 0 WHILE NOT flag_cutscene_garage1 = 10 WAIT 0 // CLEAR_AREA coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] 1000.0 TRUE /* GOSUB checking_buddies_garage1 IF flag_mission_garag1_failed = 1 RETURN ENDIF */ IF flag_cutscene_garage1 = 0 IF TIMERA > 1500 SKIP_CUTSCENE_START GOSUB cutscene_audio ENDIF ENDIF IF flag_cutscene_garage1 = 1 IF TIMERA > 2000 GOSUB cutscene_audio /* SET_FIXED_CAMERA_POSITION -2246.42 136.7 35.55 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2069.62 137.41 27.17 JUMP_CUT */ // SET_FIXED_CAMERA_POSITION -2242.4797 139.2066 35.0826 0.0 0.0 0.0 //2nd // POINT_CAMERA_AT_POINT -2242.8848 138.2930 35.0484 JUMP_CUT SET_FIXED_CAMERA_POSITION -2244.4487 135.8613 34.9713 0.0 0.0 0.0 //2nd POINT_CAMERA_AT_POINT -2244.8445 134.9551 35.1198 JUMP_CUT ENDIF ENDIF IF flag_cutscene_garage1 = 2 IF TIMERA > 3000 GOSUB cutscene_audio IF NOT IS_CHAR_DEAD char_mech_garag1[2] IF NOT IS_CAR_DEAD car_player_garag1 IF NOT IS_CHAR_IN_ANY_CAR char_mech_garag1[2] SET_CHAR_COLLISION char_mech_garag1[2] TRUE ENDIF SET_CHAR_COORDINATES char_mech_garag1[2] -2245.34 134.11 34.5 // SET_CHAR_HEADING char_mech_garag1[2] 90.0 // SET_CURRENT_CHAR_WEAPON char_mech_garag1[2] WEAPONTYPE_UNARMED IF heading_car_player_garage1 > 90.0 AND heading_car_player_garage1 < 270.0 OPEN_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 TASK_ACHIEVE_HEADING -1 93.0 // TASK_GO_STRAIGHT_TO_COORD -1 -2252.853 138.619 34.219 PEDMOVE_RUN -1 TASK_ENTER_CAR_AS_PASSENGER -1 car_player_garag1 6000 1 CLOSE_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 PERFORM_SEQUENCE_TASK char_mech_garag1[2] seq_truth_talking_to_mech1_garag1 CLEAR_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 ELSE OPEN_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 TASK_ACHIEVE_HEADING -1 93.0 TASK_GO_STRAIGHT_TO_COORD -1 -2252.853 138.619 34.219 PEDMOVE_RUN -1 TASK_ENTER_CAR_AS_PASSENGER -1 car_player_garag1 6000 1 CLOSE_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 PERFORM_SEQUENCE_TASK char_mech_garag1[2] seq_truth_talking_to_mech1_garag1 CLEAR_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 ENDIF ELSE PRINT_NOW (GAR1_07) 5000 1 //the cars blown up! flag_go_to_mechanic3_garag1 = 0 flag_mission_garag1_failed = 1 RETURN ENDIF /* SET_FIXED_CAMERA_POSITION -2242.1472 139.2691 34.9073 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2242.6929 138.4313 34.8864 JUMP_CUT */ SET_FIXED_CAMERA_POSITION -2251.4207 130.1502 35.5076 0.0 0.0 0.0 //3rd POINT_CAMERA_AT_POINT -2250.7454 130.8858 35.4549 JUMP_CUT ENDIF ENDIF ENDIF IF flag_cutscene_garage1 = 3 IF TIMERA > 3000 SET_FIXED_CAMERA_POSITION -2253.4512 139.6341 38.4909 0.0 0.0 0.0 //4th POINT_CAMERA_AT_POINT -2252.7021 139.0740 38.1371 JUMP_CUT GOSUB cutscene_audio ENDIF ENDIF IF flag_cutscene_garage1 = 4 IF TIMERA > 3000 GOSUB cutscene_audio flag_cutscene_garage1 = 5 TIMERA = 0 ENDIF ENDIF IF flag_cutscene_garage1 = 5 IF TIMERA > 2000 // GOSUB cutscene_audio flag_cutscene_garage1 = 10 ENDIF ENDIF IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flag_cutscene_garage1 = 10 CLEAR_MISSION_AUDIO 1 ENDIF IF TIMERB > 13500 flag_cutscene_garage1 = 10 ENDIF ENDWHILE SKIP_CUTSCENE_END IF NOT IS_CHAR_DEAD char_mech_garag1[2] SET_CURRENT_CHAR_WEAPON char_mech_garag1[2] WEAPONTYPE_UNARMED IF NOT IS_CAR_DEAD car_player_garag1 IF NOT IS_CHAR_IN_CAR char_mech_garag1[2] car_player_garag1 IF IS_CAR_PASSENGER_SEAT_FREE car_player_garag1 1 WARP_CHAR_INTO_CAR_AS_PASSENGER char_mech_garag1[2] car_player_garag1 1 ELSE GET_CHAR_IN_CAR_PASSENGER_SEAT car_player_garag1 1 temp_passenger_to_be_deleted_garage1 DELETE_CHAR temp_passenger_to_be_deleted_garage1 WARP_CHAR_INTO_CAR_AS_PASSENGER char_mech_garag1[index_garag1] car_player_garag1 1 ENDIF SET_CURRENT_CHAR_WEAPON char_mech_garag1[2] WEAPONTYPE_UNARMED SET_CHAR_ONLY_DAMAGED_BY_PLAYER char_mech_garag1[2] FALSE ENDIF ENDIF SET_CHAR_PROOFS char_mech_garag1[2] FALSE FALSE FALSE FALSE FALSE ENDIF IF NOT IS_CAR_DEAD rc_heli_garage1 SET_CAR_COORDINATES rc_heli_garage1 -2242.34 128.00 34.2 SET_CAR_PROOFS rc_heli_garage1 FALSE FALSE FALSE FALSE FALSE SET_CAR_CRUISE_SPEED rc_heli_garage1 0.0 SET_CAR_HEALTH rc_heli_garage1 400 FREEZE_CAR_POSITION rc_heli_garage1 TRUE // SET_HELI_STABILISER rc_heli_garage1 FALSE ENDIF //SET_CAMERA_IN_FRONT_OF_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF IF IS_PLAYER_PLAYING player1 // SHUT_CHAR_UP scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF SWITCH_RANDOM_TRAINS ON //SWITCH_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 // SWITCH_PED_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 index_dialogue_garage1 = 97 flag_cutscene_garage1 = 0 play_audio_flag_garage1 = 0 CLEAR_PRINTS MARK_OBJECT_AS_NO_LONGER_NEEDED object_zeros_bench MARK_MODEL_AS_NO_LONGER_NEEDED bomb MARK_MODEL_AS_NO_LONGER_NEEDED SATCHEL REMOVE_ANIMATION CRIB // DELETE_CAR rc_heli_garage1 MARK_CAR_AS_NO_LONGER_NEEDED rc_heli_garage1 REMOVE_ANIMATION CAR_CHAT /* IF NOT IS_CAR_DEAD car_player_garag1 OPEN_GARAGE hbgdsfs ENDIF */ index_garag1 = 3 flag_go_to_mechanic3_garag1 = 0 flag_go_to_hub_garag1 = 1 // MARK_CAR_AS_NO_LONGER_NEEDED rc_heli_garage1 MARK_MODEL_AS_NO_LONGER_NEEDED rcraider // flag_go_to_mechanic4_garag1 = 1 RETURN /// RETURN TO HUB WITH GIRL FOLLOWING PLAYER ON SPORTS BIKE go_to_hub_garag1: ADD_BLIP_FOR_COORD coords_hub_garag1_x coords_hub_garag1_y coords_hub_garag1_z blip_mech_garag1[index_garag1] // CHANGE_BLIP_COLOUR blip_mech_garag1[index_garag1] BLUE // SET_COORD_BLIP_APPEARANCE blip_mech_garag1[index_garag1] COORD_BLIP_APPEARANCE_FRIEND //SET_BLIP_AS_FRIENDLY blip_mech_garag1[index_garag1] TRUE REQUEST_MODEL hotdog WHILE NOT HAS_MODEL_LOADED hotdog WAIT 0 ENDWHILE GOSUB going_to_destinations_garage1 IF flag_mission_garag1_failed = 1 RETURN ENDIF SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON CLEAR_MISSION_AUDIO 1 //SET_AREA_VISIBLE 1 // SWITCH_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 // SWITCH_PED_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 TIMERA = 0 //Setting Up The Camera Positioning //SET_FIXED_CAMERA_POSITION -2053.05 175.81 28.81 0.0 0.0 0.0 // SET_FIXED_CAMERA_POSITION -2018.3113 155.8209 31.0081 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -2018.9553 156.5835 30.9495 JUMP_CUT SET_FIXED_CAMERA_POSITION -2040.6302 180.9374 29.2617 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2039.7999 180.3834 29.3231 JUMP_CUT CLEAR_AREA coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] 1000.0 TRUE IF NOT IS_CAR_DEAD car_player_garag1 SET_CAR_COORDINATES car_player_garag1 -2033.9316 178.5836 27.6359 SET_CAR_HEADING car_player_garag1 86.5989 IF NOT IS_CHAR_IN_CAR scplayer car_player_garag1 WARP_CHAR_INTO_CAR scplayer car_player_garag1 ENDIF TASK_CAR_DRIVE_TO_COORD scplayer car_player_garag1 -2039.97 179.98 28.08 20.0 MODE_STRAIGHTLINE 1 DRIVINGMODE_PLOUGHTHROUGH ENDIF LOAD_MISSION_AUDIO 1 SOUND_GAR1_PH WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( GAR1_PH ) 10000 1 // we'rehere PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT GAR1_PH flag_cutscene_garage1 = 0 WHILE TIMERA < 4000 WAIT 0 IF flag_cutscene_garage1 = 0 IF TIMERA > 1000 IF NOT IS_CAR_DEAD car_player_garag1 IF NOT IS_CHAR_DEAD char_mech_garag1[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS char_mech_garag1[0] 1.0 5.0 0.0 mech_offset_x mech_offset_y mech_offset_z OPEN_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 TASK_LEAVE_CAR -1 car_player_garag1 TASK_GO_STRAIGHT_TO_COORD -1 mech_offset_x mech_offset_y mech_offset_z PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 PERFORM_SEQUENCE_TASK char_mech_garag1[0] seq_truth_talking_to_mech1_garag1 CLEAR_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 ENDIF ENDIF WAIT 1000 IF NOT IS_CAR_DEAD car_player_garag1 IF NOT IS_CHAR_DEAD char_mech_garag1[2] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS char_mech_garag1[2] -5.0 0.0 0.0 mech_offset_x mech_offset_y mech_offset_z OPEN_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 TASK_LEAVE_CAR -1 car_player_garag1 TASK_GO_STRAIGHT_TO_COORD -1 mech_offset_x mech_offset_y mech_offset_z PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 PERFORM_SEQUENCE_TASK char_mech_garag1[2] seq_truth_talking_to_mech1_garag1 CLEAR_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 ENDIF ENDIF WAIT 500 IF NOT IS_CAR_DEAD car_player_garag1 IF NOT IS_CHAR_DEAD char_truth_garag1 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS char_truth_garag1 1.0 5.0 0.0 mech_offset_x mech_offset_y mech_offset_z OPEN_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 TASK_LEAVE_CAR -1 car_player_garag1 TASK_GO_STRAIGHT_TO_COORD -1 mech_offset_x mech_offset_y mech_offset_z PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 PERFORM_SEQUENCE_TASK char_truth_garag1 seq_truth_talking_to_mech1_garag1 CLEAR_SEQUENCE_TASK seq_truth_talking_to_mech1_garag1 ENDIF ENDIF flag_cutscene_garage1 = 1 ENDIF ENDIF IF flag_cutscene_garage1 = 1 IF TIMERA > 2500 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT flag_cutscene_garage1 = 2 ENDIF ENDIF IF flag_mission_garag1_failed = 1 RETURN ENDIF ENDWHILE IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -2028.0 177.0 28.2 ENDIF REMOVE_ANIMATION smoking REMOVE_ANIMATION PARK REMOVE_ANIMATION CAR REMOVE_ANIMATION CRIB REMOVE_ANIMATION GANGS REMOVE_ANIMATION CAR_CHAT MARK_MODEL_AS_NO_LONGER_NEEDED bomb MARK_MODEL_AS_NO_LONGER_NEEDED SATCHEL MARK_MODEL_AS_NO_LONGER_NEEDED emperor MARK_MODEL_AS_NO_LONGER_NEEDED HOTDOG MARK_MODEL_AS_NO_LONGER_NEEDED pony MARK_MODEL_AS_NO_LONGER_NEEDED rcraider MARK_MODEL_AS_NO_LONGER_NEEDED towtruck UNLOAD_SPECIAL_CHARACTER 1 // unloading zero UNLOAD_SPECIAL_CHARACTER 2 // unloading zero UNLOAD_SPECIAL_CHARACTER 3 // unloading zero WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer -2028.0 177.0 28.2 SET_CHAR_HEADING scplayer 267.0 DELETE_CHAR char_truth_garag1 DELETE_CHAR char_mech_garag1[0] DELETE_CHAR char_mech_garag1[1] DELETE_CHAR char_mech_garag1[2] DELETE_CHAR char_mech_garag1[3] DELETE_CHAR pony_driver_garage1 DELETE_CAR car_mech2_garag1 DELETE_CAR car_player_garag1 LOAD_CUTSCENE GARAG1C SET_AREA_VISIBLE 1 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE WAIT 1500 START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF 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 play_audio_flag_garage1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_passed = 1 RETURN ///////////////////////////////////// GOSUBS ///////////////////////////////////// //////////////////////////////////////////////// // going_to_destinations_garage1: //////////////////////////////////////////////// going_to_destinations_garage1: IF NOT IS_CAR_DEAD car_player_garag1 WHILE NOT flag_mech_summoned_garage1 = 1 WAIT 0 GOSUB checking_buddies_garage1 IF flag_mission_garag1_failed = 1 RETURN ENDIF // LOD stuff IF flag_go_to_mechanic1_garag1 = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] 200.0 200.0 200.0 FALSE IF flag_lod_close_to_desstination = 0 CREATE_CHAR PEDTYPE_CIVMALE SPECIAL03 coord_mech_garage1_x[index_garag1] coord_mech_garage1_y[index_garag1] coord_mech_garage1_z[index_garag1] char_mech_garag1[index_garag1] SET_CHAR_NEVER_TARGETTED char_mech_garag1[index_garag1] TRUE SET_CHAR_COLLISION char_mech_garag1[index_garag1] FALSE SET_CHAR_HEADING char_mech_garag1[index_garag1] 228.0 SET_CHAR_PROOFS char_mech_garag1[index_garag1] FALSE FALSE FALSE TRUE FALSE SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR char_mech_garag1[index_garag1] FALSE SET_CHAR_RELATIONSHIP char_mech_garag1[index_garag1] ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER char_mech_garag1[index_garag1] dm_buddies_garage1 SET_CHAR_NEVER_TARGETTED char_mech_garag1[index_garag1] TRUE CREATE_CAR towtruck -1676.0 440.0 6.7 car_mech1_garag1 LOCK_CAR_DOORS car_mech1_garag1 CARLOCK_LOCKED // FORCE_CAR_LIGHTS car_mech1_garag1 FORCE_CAR_LIGHTS_ON SET_CAR_ENGINE_ON car_mech1_garag1 TRUE SET_CAR_LIGHTS_ON car_mech1_garag1 TRUE SET_CAR_HEADING car_mech1_garag1 313.0 SET_CAR_HEALTH car_mech1_garag1 500 FREEZE_CAR_POSITION car_mech1_garag1 TRUE POP_CAR_DOOR car_mech1_garag1 BONNET FALSE // TASK_PLAY_ANIM char_mech_garag1[index_garag1] Fixn_Car_Loop CAR 4.0 TRUE FALSE FALSE TRUE 0 TASK_PLAY_ANIM_NON_INTERRUPTABLE char_mech_garag1[index_garag1] Fixn_Car_Loop CAR 4.0 TRUE FALSE FALSE TRUE 0 flag_lod_close_to_desstination = 1 ENDIF ELSE IF flag_lod_close_to_desstination = 1 IF NOT IS_CHAR_DEAD char_mech_garag1[index_garag1] DELETE_CHAR char_mech_garag1[index_garag1] ENDIF IF NOT IS_CAR_DEAD car_mech1_garag1 DELETE_CAR car_mech1_garag1 ENDIF flag_lod_close_to_desstination = 0 ENDIF ENDIF ENDIF IF flag_go_to_mechanic2_garag1 = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] 200.0 200.0 200.0 FALSE IF flag_lod_close_to_desstination = 0 CREATE_CAR HOTDOG -2238.8884 541.5267 34.3750 car_mech2_garag1 LOCK_CAR_DOORS car_mech2_garag1 CARLOCK_LOCKED // FORCE_CAR_LIGHTS car_mech2_garag1 FORCE_CAR_LIGHTS_ON SET_CAR_ENGINE_ON car_mech2_garag1 TRUE SET_CAR_LIGHTS_ON car_mech2_garag1 TRUE SET_CAR_HEADING car_mech2_garag1 0.0 FREEZE_CAR_POSITION car_mech2_garag1 TRUE // ADD_STUCK_CAR_CHECK_WITH_WARP car_mech2_garag1 1.0 2000 TRUE TRUE TRUE 1 CREATE_CHAR PEDTYPE_CIVMALE SPECIAL04 coord_mech_garage1_x[index_garag1] coord_mech_garage1_y[index_garag1] coord_mech_garage1_z[index_garag1] char_mech_garag1[index_garag1] SET_CHAR_NEVER_TARGETTED char_mech_garag1[index_garag1] TRUE SET_CHAR_HEADING char_mech_garag1[index_garag1] 270.0 CREATE_OBJECT cigar coord_mech_garage1_x[index_garag1] coord_mech_garage1_y[index_garag1] coord_mech_garage1_z[index_garag1] dwaynes_blunt TASK_PICK_UP_OBJECT char_mech_garag1[index_garag1] dwaynes_blunt 0.04 0.1 0.05 PED_HANDL HOLD_ORIENTATE_BONE_FULL NULL NULL FALSE // TASK_PICK_UP_OBJECT ryder ryders_ciggy 0.04 0.1 -0.02 PED_HANDL HOLD_ORIENTATE_BONE_FULL NULL NULL -1 // SET_CHAR_COLLISION char_mech_garag1[index_garag1] FALSE FREEZE_CHAR_POSITION char_mech_garag1[index_garag1] TRUE SET_CHAR_RELATIONSHIP char_mech_garag1[index_garag1] ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER char_mech_garag1[index_garag1] dm_buddies_garage1 SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR char_mech_garag1[index_garag1] FALSE TASK_PLAY_ANIM char_mech_garag1[index_garag1] M_smklean_loop SMOKING 4.0 TRUE FALSE FALSE TRUE 0 flag_lod_close_to_desstination = 1 ENDIF // check hotdog van ELSE IF flag_lod_close_to_desstination = 1 IF NOT IS_CHAR_DEAD char_mech_garag1[index_garag1] DELETE_CHAR char_mech_garag1[index_garag1] ENDIF IF NOT IS_CAR_DEAD car_mech2_garag1 DELETE_CAR car_mech2_garag1 ENDIF IF DOES_OBJECT_EXIST dwaynes_blunt DELETE_OBJECT dwaynes_blunt ENDIF flag_lod_close_to_desstination = 0 ENDIF ENDIF ENDIF IF flag_go_to_mechanic3_garag1 = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] 200.0 200.0 200.0 FALSE IF flag_lod_close_to_desstination = 0 CREATE_OBJECT parkbench1 -2244.55 133.91 34.4 object_zeros_bench SET_OBJECT_HEADING object_zeros_bench 0.0 FREEZE_OBJECT_POSITION object_zeros_bench TRUE CREATE_CHAR PEDTYPE_CIVMALE SPECIAL01 -2244.7 133.91 33.82 char_mech_garag1[2] SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR char_mech_garag1[2] FALSE SET_CHAR_NEVER_TARGETTED char_mech_garag1[2] TRUE TASK_PLAY_ANIM_NON_INTERRUPTABLE char_mech_garag1[2] CRIB_Console_Loop CRIB 4.0 TRUE FALSE FALSE TRUE 0 SET_CHAR_COLLISION char_mech_garag1[2] FALSE SET_CHAR_RELATIONSHIP char_mech_garag1[2] ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER char_mech_garag1[2] dm_buddies_garage1 SET_CHAR_HEADING char_mech_garag1[2] 280.0 SET_CHAR_ONLY_DAMAGED_BY_PLAYER char_mech_garag1[2] TRUE GIVE_WEAPON_TO_CHAR char_mech_garag1[2] WEAPONTYPE_REMOTE_SATCHEL_CHARGE 10 SET_CHAR_NEVER_TARGETTED char_mech_garag1[2] TRUE GIVE_WEAPON_TO_CHAR char_mech_garag1[2] WEAPONTYPE_DETONATOR 1 SET_CHAR_RELATIONSHIP char_mech_garag1[2] ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER char_mech_garag1[2] dm_buddies_garage1 SET_CURRENT_CHAR_WEAPON char_mech_garag1[2] WEAPONTYPE_DETONATOR CREATE_CAR rcraider -2250.33 139.91 44.66 rc_heli_garage1 SET_CAR_PROOFS rc_heli_garage1 TRUE TRUE TRUE TRUE TRUE SET_CAR_CRUISE_SPEED rc_heli_garage1 30.0 SET_HELI_BLADES_FULL_SPEED rc_heli_garage1 HELI_GOTO_COORDS rc_heli_garage1 -2258.7 132.54 37.72 5.0 35.0 flag_lod_close_to_desstination = 1 ENDIF ELSE IF flag_lod_close_to_desstination = 1 IF DOES_OBJECT_EXIST object_zeros_bench DELETE_OBJECT object_zeros_bench ENDIF IF NOT IS_CHAR_DEAD char_mech_garag1[2] DELETE_CHAR char_mech_garag1[2] ENDIF IF NOT IS_CAR_DEAD rc_heli_garage1 DELETE_CAR rc_heli_garage1 ENDIF flag_lod_close_to_desstination = 0 ENDIF ENDIF ENDIF IF flag_go_to_hub_garag1 = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer coords_hub_garag1_x coords_hub_garag1_y coords_hub_garag1_z 300.0 300.0 300.0 FALSE IF flag_lod_close_to_desstination = 0 CREATE_CAR HOTDOG -2026.0 169.0 28.2 car_mech2_garag1 LOCK_CAR_DOORS car_mech2_garag1 CARLOCK_LOCKED SET_CAR_HEADING car_mech2_garag1 120.0 flag_lod_close_to_desstination = 1 ENDIF ELSE IF flag_lod_close_to_desstination = 1 IF NOT IS_CAR_DEAD car_mech2_garag1 DELETE_CAR car_mech2_garag1 ENDIF flag_lod_close_to_desstination = 0 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD car_player_garag1 /////////////////////////////////////////////////////////////////// // The honking horns pickups /////////////////////////////////////////////////////////////////// IF flag_go_to_mechanic1_garag1 = 1 OR flag_go_to_mechanic2_garag1 = 1 OR flag_go_to_mechanic3_garag1 = 1 IF LOCATE_STOPPED_CAR_3D car_player_garag1 coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] 4.0 4.0 4.0 TRUE IF LOCATE_STOPPED_CAR_3D car_player_garag1 coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] 2.5 2.5 2.5 FALSE IF flag_help_text_garage1 = 0 PRINT_HELP GAR1_23 flag_help_text_garage1 = 1 ENDIF IF IS_PLAYER_PRESSING_HORN player1 IF IS_CHAR_SITTING_IN_ANY_CAR scplayer SET_CHAR_CANT_BE_DRAGGED_OUT scplayer TRUE IF NOT IS_CAR_DEAD car_player_garag1 LOCK_CAR_DOORS car_player_garag1 CARLOCK_LOCKED_PLAYER_INSIDE ENDIF WAIT 500 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON CLEAR_MISSION_AUDIO 1 CLEAR_HELP WAIT 1000 // SWITCH_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 // SWITCH_PED_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 IF NOT IS_CAR_DEAD car_player_garag1 IF NOT IS_CHAR_IN_CAR scplayer car_player_garag1 WARP_CHAR_INTO_CAR scplayer car_player_garag1 ENDIF ENDIF IF NOT IS_CAR_DEAD car_player_garag1 LOCK_CAR_DOORS car_player_garag1 CARLOCK_UNLOCKED ENDIF flag_mech_summoned_garage1 = 1 ENDIF ENDIF ELSE CLEAR_HELP flag_help_text_garage1 = 0 ENDIF ENDIF ENDIF /////////////////////////////////////////////////////////////////// // going to the hospital /////////////////////////////////////////////////////////////////// IF flag_go_to_hospital_garag1 = 1 // IF LOCATE_STOPPED_CAR_3D car_player_garag1 coords_hospital_x coords_hospital_y coords_hospital_z 4.0 4.0 4.0 TRUE IF LOCATE_CHAR_IN_CAR_3D scplayer coords_hospital_x coords_hospital_y coords_hospital_z 4.0 4.0 4.0 TRUE flag_mech_summoned_garage1 = 1 SET_PLAYER_CONTROL player1 OFF STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF ENDIF //////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////// // going to the police station /////////////////////////////////////////////////////////////////// IF flag_go_to_police_station_garag1 = 1 // IF LOCATE_STOPPED_CAR_3D car_player_garag1 coords_police_x coords_police_y coords_police_z 4.0 4.0 4.0 TRUE IF LOCATE_CHAR_IN_CAR_3D scplayer coords_police_x coords_police_y coords_police_z 4.0 4.0 4.0 TRUE flag_mech_summoned_garage1 = 1 SET_PLAYER_CONTROL player1 OFF STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF ENDIF //////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////// // Stopping at the hub (mission end) /////////////////////////////////////////////////////////////////// IF flag_go_to_hub_garag1 = 1 IF NOT IS_CAR_DEAD car_player_garag1 IF flag_garage_doors = 0 GET_CAR_HEADING car_player_garag1 heading_car_player_garage1 // IF LOCATE_CHAR_IN_CAR_3D scplayer -2034.59 180.23 28.43 4.0 4.0 4.0 TRUE IF LOCATE_CAR_3D car_player_garag1 -2034.59 180.23 28.43 4.0 4.0 4.0 TRUE IF heading_car_player_garage1 > 0.0 AND heading_car_player_garage1 < 180.0 OPEN_GARAGE hbgdsfs flag_garage_doors = 1 SET_PLAYER_CONTROL player1 OFF STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 2000000 flag_mech_summoned_garage1 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////// // BAnter and text // Starting the journey with truth and player IF flag_go_to_mechanic1_garag1 = 1 IF flag_is_truth_in_car = 0 IF flag_cutscene_garage1 >= 0 AND flag_cutscene_garage1 <= 7 GOSUB load_and_play_audio_garage1 ENDIF // IS char in vietnam area IF IS_CHAR_IN_ZONE scplayer EASB IF flag_cutscene_garage1 = 8 GOSUB load_and_play_audio_garage1 ENDIF ENDIF IF flag_cutscene_garage1 = 9 OR flag_cutscene_garage1 = 10 GOSUB load_and_play_audio_garage1 ENDIF ENDIF ENDIF // going to the hospital IF flag_go_to_hospital_garag1 = 1 IF flag_cutscene_garage1 >= 0 AND flag_cutscene_garage1 <= 6 GOSUB load_and_play_audio_garage1 ENDIF ENDIF // Picking up 2nd mech IF flag_go_to_mechanic2_garag1 = 1 IF flag_cutscene_garage1 >= 0 AND flag_cutscene_garage1 <= 6 GOSUB load_and_play_audio_garage1 ENDIF ENDIF // Picking up zero IF flag_go_to_mechanic3_garag1 = 1 IF flag_cutscene_garage1 >= 0 AND flag_cutscene_garage1 <= 9 GOSUB load_and_play_audio_garage1 ENDIF ENDIF IF flag_go_to_hub_garag1 = 1 IF flag_cutscene_garage1 >= 0 AND flag_cutscene_garage1 <= 7 GOSUB load_and_play_audio_garage1 ENDIF ENDIF // checking if player is in car IF NOT IS_CAR_DEAD car_player_garag1 IF NOT IS_CHAR_IN_CAR scplayer car_player_garag1 REMOVE_BLIP blip_mech_garag1[index_garag1] REMOVE_BLIP blip_hospital REMOVE_BLIP blip_police ADD_BLIP_FOR_CAR car_player_garag1 blip_players_car_garag1 SET_BLIP_AS_FRIENDLY blip_players_car_garag1 TRUE CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_TRUX_AC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( TRUX_AC ) 10000 1 // Dont try and dump me CARL! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT TRUX_AC //PRINT_NOW ( GAR1_10 ) 5000 1 //get back in here IF NOT IS_CAR_DEAD car_player_garag1 WHILE NOT IS_CHAR_IN_CAR scplayer car_player_garag1 WAIT 0 IF flag_player_out_of_car_garag1 = 0 flag_player_out_of_car_garag1 = 1 ENDIF IF NOT IS_CAR_DEAD car_player_garag1 ELSE PRINT_NOW (GAR1_07) 5000 1 //the cars blown up! flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_failed = 1 RETURN ENDIF IF IS_CAR_ON_FIRE car_player_garag1 // MAKE CAR EXPLODE IF ON FIRE EXPLODE_CAR car_player_garag1 PRINT_NOW (GAR1_07) 5000 1 //the cars blown up! flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_failed = 1 RETURN ENDIF GOSUB checking_buddies_garage1 IF flag_mission_garag1_failed = 1 RETURN ENDIF ENDWHILE ENDIF flag_player_out_of_car_garag1 = 0 REMOVE_BLIP blip_players_car_garag1 // REMOVE_BLIP blip_mech_garag1[index_garag1] IF flag_go_to_mechanic1_garag1 = 1 OR flag_go_to_mechanic2_garag1 = 1 OR flag_go_to_mechanic3_garag1 = 1 ADD_BLIP_FOR_COORD coords_garage_garag1_x[index_garag1] coords_garage_garag1_y[index_garag1] coords_garage_garag1_z[index_garag1] blip_mech_garag1[index_garag1] SET_COORD_BLIP_APPEARANCE blip_mech_garag1[index_garag1] COORD_BLIP_APPEARANCE_FRIEND ENDIF IF flag_go_to_hospital_garag1 = 1 ADD_SPRITE_BLIP_FOR_COORD coords_hospital_x coords_hospital_y coords_hospital_z RADAR_SPRITE_HOSPITAL blip_hospital ENDIF IF flag_go_to_police_station_garag1 = 1 ADD_SPRITE_BLIP_FOR_COORD coords_police_x coords_police_y coords_police_z RADAR_SPRITE_POLICE blip_police /* ADD_BLIP_FOR_COORD coords_hub_garag1_x coords_hub_garag1_y coords_hub_garag1_z blip_mech_garag1[index_garag1] SET_COORD_BLIP_APPEARANCE blip_mech_garag1[index_garag1] COORD_BLIP_APPEARANCE_FRIEND */ ENDIF IF flag_go_to_hub_garag1 = 1 // GOSUB go_to_hub_garag1 ADD_BLIP_FOR_COORD coords_hub_garag1_x coords_hub_garag1_y coords_hub_garag1_z blip_mech_garag1[index_garag1] ENDIF ENDIF // if player is not in car ENDIF ELSE PRINT_NOW (GAR1_07) 5000 1 //the cars blown up! flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_failed = 1 RETURN ENDIF ENDWHILE ELSE PRINT_NOW (GAR1_07) 5000 1 //the cars blown up! flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_mission_garag1_failed = 1 RETURN ENDIF flag_mech_summoned_garage1 = 0 REMOVE_BLIP blip_mech_garag1[index_garag1] flag_help_text_garage1 = 0 flag_lod_close_to_desstination = 0 flag_cutscene_garage1 = 0 // make char fix a car? CLEAR_HELP RETURN checking_buddies_garage1: ////////////////////////////////////////////////////////// // If buddies are out of the car, make them run back in. ////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD car_player_garag1 IF NOT LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer car_player_garag1 300.0 300.0 300.0 FALSE flag_go_to_hub_garag1 = 0 flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_failed = 1 PRINT_NOW GAR1_18 5000 1 // You abandoned the car ENDIF // truth IF NOT IS_CHAR_DEAD char_truth_garag1 IF NOT IS_CHAR_IN_CAR char_truth_garag1 car_player_garag1 IF flag_is_truth_in_car = 0 TASK_ENTER_CAR_AS_PASSENGER char_truth_garag1 car_player_garag1 -1 0 flag_is_truth_in_car = 1 ENDIF IF flag_is_truth_in_car = 1 IF NOT LOCATE_CHAR_ON_FOOT_CHAR_3D char_truth_garag1 scplayer 150.0 150.0 150.0 FALSE flag_go_to_hub_garag1 = 0 flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_failed = 1 PRINT_NOW GAR1_19 5000 1 // You abandoned truth ENDIF ENDIF ELSE IF flag_is_truth_in_car = 1 flag_is_truth_in_car = 0 ENDIF ENDIF ENDIF // mechanics 1 IF NOT flag_go_to_mechanic1_garag1 = 1 IF NOT IS_CHAR_DEAD char_mech_garag1[0] IF NOT IS_CHAR_IN_CAR char_mech_garag1[0] car_player_garag1 IF flag_is_mechanic1_in_car = 0 TASK_ENTER_CAR_AS_PASSENGER char_mech_garag1[0] car_player_garag1 -1 2 flag_is_mechanic1_in_car = 1 ENDIF IF flag_is_mechanic1_in_car = 1 IF NOT LOCATE_CHAR_ON_FOOT_CHAR_3D char_mech_garag1[0] scplayer 300.0 300.0 300.0 FALSE flag_go_to_hub_garag1 = 0 flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_failed = 1 PRINT_NOW GAR1_20 5000 1 // You abandoned jethro ENDIF ENDIF ELSE IF flag_is_mechanic1_in_car = 1 flag_is_mechanic1_in_car = 0 ENDIF ENDIF ENDIF ENDIF // mechanics 2 IF NOT flag_go_to_mechanic2_garag1 = 1 IF NOT IS_CHAR_DEAD char_mech_garag1[1] IF NOT IS_CHAR_IN_CAR char_mech_garag1[1] car_player_garag1 IF flag_is_mechanic2_in_car = 0 TASK_ENTER_CAR_AS_PASSENGER char_mech_garag1[1] car_player_garag1 -1 0 // SET_CHAR_CANT_BE_DRAGGED_OUT char_mech_garag1[1] TRUE // SET_CHAR_STAY_IN_CAR_WHEN_JACKED char_mech_garag1[1] TRUE flag_is_mechanic2_in_car = 1 ENDIF IF NOT flag_is_mechanic2_in_car = 1 IF NOT LOCATE_CHAR_ON_FOOT_CHAR_3D char_mech_garag1[1] scplayer 300.0 300.0 300.0 FALSE flag_go_to_hub_garag1 = 0 flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_failed = 1 PRINT_NOW GAR1_21 5000 1 // You abandoned Dwayne ENDIF ENDIF ELSE IF flag_is_mechanic2_in_car = 1 flag_is_mechanic2_in_car = 0 ENDIF ENDIF ENDIF ENDIF ENDIF // Checking if characters are deed IF IS_CHAR_DEAD char_truth_garag1 flag_go_to_hub_garag1 = 0 flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_failed = 1 PRINT_NOW GAR1_17 5000 1 // Truth died RETURN ENDIF IF flag_go_to_mechanic1_garag1 = 1 IF flag_lod_close_to_desstination = 1 IF IS_CAR_DEAD car_mech1_garag1 flag_go_to_hub_garag1 = 0 flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_failed = 1 PRINT_NOW GAR1_14 5000 1 // jethros dead RETURN ENDIF IF IS_CHAR_DEAD char_mech_garag1[0] flag_go_to_hub_garag1 = 0 flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_failed = 1 PRINT_NOW GAR1_14 5000 1 // jethros dead RETURN ENDIF ENDIF ENDIF IF flag_go_to_mechanic2_garag1 = 1 // OR flag_go_to_hospital_garag1 = 1 // OR flag_go_to_police_station_garag1 = 1 IF IS_CHAR_DEAD char_mech_garag1[0] flag_go_to_hub_garag1 = 0 flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_failed = 1 PRINT_NOW GAR1_14 5000 1 // jethros dead RETURN ENDIF IF flag_lod_close_to_desstination = 1 IF IS_CHAR_DEAD char_mech_garag1[1] flag_go_to_hub_garag1 = 0 flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_failed = 1 PRINT_NOW GAR1_15 5000 1 // dwaign dead RETURN ENDIF IF IS_CAR_DEAD car_mech2_garag1 flag_go_to_hub_garag1 = 0 flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_failed = 1 PRINT_NOW GAR1_15 5000 1 // dwaign dead RETURN ENDIF ENDIF ENDIF IF flag_go_to_mechanic3_garag1 = 1 IF IS_CHAR_DEAD char_mech_garag1[0] flag_go_to_hub_garag1 = 0 flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_failed = 1 PRINT_NOW GAR1_14 5000 1 // jethros dead RETURN ENDIF IF flag_lod_close_to_desstination = 1 IF IS_CHAR_DEAD char_mech_garag1[2] flag_go_to_hub_garag1 = 0 flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_failed = 1 PRINT_NOW GAR1_16 5000 1 // zeros dead RETURN ENDIF IF NOT IS_CHAR_DEAD char_mech_garag1[2] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR char_mech_garag1[2] scplayer IF NOT IS_CHAR_IN_ANY_CAR char_mech_garag1[2] SET_CHAR_COLLISION char_mech_garag1[2] TRUE ENDIF SET_CHAR_HEALTH char_mech_garag1[2] 0 flag_mission_garag1_failed = 1 PRINT_NOW GAR1_16 5000 1 // zeros dead RETURN ENDIF IF DOES_OBJECT_EXIST object_zeros_bench IF HAS_OBJECT_BEEN_DAMAGED object_zeros_bench IF NOT IS_CHAR_IN_ANY_CAR char_mech_garag1[2] SET_CHAR_COLLISION char_mech_garag1[2] TRUE ENDIF SET_CHAR_HEALTH char_mech_garag1[2] 0 flag_mission_garag1_failed = 1 PRINT_NOW GAR1_16 5000 1 // zeros dead RETURN ENDIF ENDIF ENDIF ENDIF ENDIF IF flag_go_to_hub_garag1 = 1 IF IS_CHAR_DEAD char_mech_garag1[0] flag_go_to_hub_garag1 = 0 flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_failed = 1 PRINT_NOW GAR1_14 5000 1 // jethros dead RETURN ENDIF IF IS_CHAR_DEAD char_mech_garag1[2] flag_go_to_hub_garag1 = 0 flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_failed = 1 PRINT_NOW GAR1_16 5000 1 // zeros dead RETURN ENDIF ENDIF IF flag_go_to_hospital_garag1 = 1 OR flag_go_to_police_station_garag1 = 1 IF IS_CHAR_DEAD char_mech_garag1[0] flag_go_to_hub_garag1 = 0 flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_mission_garag1_failed = 1 PRINT_NOW GAR1_14 5000 1 // jethros dead RETURN ENDIF ENDIF RETURN /////////////////////////////////////// // AUDIO /////////////////////////////////////// load_and_play_audio_garage1: IF play_audio_flag_garage1 = 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 garage1_audio[index_dialogue_garage1] play_audio_flag_garage1 = 1 ENDIF IF play_audio_flag_garage1 = 1 IF HAS_MISSION_AUDIO_LOADED 1 IF NOT IS_CHAR_DEAD char_who_is_talking[index_dialogue_garage1] START_CHAR_FACIAL_TALK char_who_is_talking[index_dialogue_garage1] 10000 ENDIF PLAY_MISSION_AUDIO 1 PRINT_NOW $garage1_text[index_dialogue_garage1] 10000 1 // adding blips during conversations////////////////////// //////////////////////////////////////////////////////////// play_audio_flag_garage1 = 2 ENDIF ENDIF IF play_audio_flag_garage1 = 2 IF HAS_MISSION_AUDIO_FINISHED 1 // temp_int = c3_counter - 1 IF NOT IS_CHAR_DEAD char_who_is_talking[index_dialogue_garage1] STOP_CHAR_FACIAL_TALK char_who_is_talking[index_dialogue_garage1] ENDIF TIMERA = 0 play_audio_flag_garage1 = 0 CLEAR_THIS_PRINT $garage1_text[index_dialogue_garage1] index_dialogue_garage1++ flag_cutscene_garage1++ ENDIF ENDIF RETURN cutscene_audio: LOAD_MISSION_AUDIO 1 garage1_audio[index_dialogue_garage1] WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW $garage1_text[index_dialogue_garage1] 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT $garage1_text[index_dialogue_garage1] index_dialogue_garage1++ flag_cutscene_garage1++ RETURN // ***************************** // MISSION PASSED // ***************************** mission_garag1_passed: //flag_pp1_mission1_passed = 1 // PRINT_WITH_NUMBER_BIG M_PASS 100 5000 1 // ADD_SCORE player1 100 // PRINT_BIG M_PASS 5000 1 PRINT_WITH_NUMBER_BIG( M_PASSD ) 0 5000 1 //"Mission Passed!" CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 // REGISTER_MISSION_PASSED ( GARAGE1 ) REGISTER_MISSION_PASSED ( GAR_1 ) PLAYER_MADE_PROGRESS 1 SET_INT_STAT PASSED_GARAGE1 1 /* START_NEW_SCRIPT steal_mission_loop REMOVE_BLIP steal_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT stealX stealY stealZ steal_blip_icon steal_contact_blip */ START_NEW_SCRIPT scrash_mission_loop //REMOVE_BLIP scrash_contact_blip //ADD_SPRITE_BLIP_FOR_CONTACT_POINT scrashX scrashY scrashZ crash_blip_icon scrash_contact_blip flag_garage_mission_counter ++ //REMOVE_BLIP garage_contact_blip /* START_NEW_SCRIPT trace_mission_loop REMOVE_BLIP dschool_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT -2031.2 -118.0 34.3 RADAR_SPRITE_SCHOOL dschool_contact_blip CHANGE_BLIP_DISPLAY dschool_contact_blip BLIP_ONLY */ RETURN // ***************************** // mission failed // ***************************** mission_garag1_failed: PRINT_BIG M_FAIL 5000 1 RETURN // ***************************** // mission cleanup // ***************************** mission_cleanup_garag1: CAMERA_RESET_NEW_SCRIPTABLES DISABLE_ALL_ENTRY_EXITS FALSE IF IS_PLAYER_PLAYING player1 // SHUT_CHAR_UP scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF SWITCH_RANDOM_TRAINS ON /* IF NOT IS_CHAR_DEAD scplayer // IF flag_garage_doors = 0 // IF flag_mission_garag1_failed = 1 IF IS_CHAR_IN_AREA_3D scplayer -2056.86 150.93 23.16 -2039.3 182.7 32.87 FALSE SET_PLAYER_CONTROL player1 OFF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -2028.0 177.0 28.2 ENDIF SET_CHAR_COORDINATES scplayer -2028.0 177.0 28.2 SET_CHAR_HEADING scplayer 267.0 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON ENDIF // ENDIF ENDIF */ CLEAR_HELP index_garag1 = 0 WHILE index_garag1 < 5 REMOVE_BLIP blip_mech_garag1[index_garag1] index_garag1++ ENDWHILE REMOVE_ANIMATION PARK REMOVE_ANIMATION CAR REMOVE_ANIMATION CRIB REMOVE_ANIMATION GANGS REMOVE_ANIMATION CAR_CHAT REMOVE_ANIMATION smoking // REMOVE_BLIP blip_hub_garag1 REMOVE_BLIP blip_players_car_garag1 REMOVE_BLIP blip_hospital REMOVE_BLIP blip_police IF NOT IS_CAR_DEAD car_player_garag1 SET_CAR_HEALTH car_player_garag1 600 ENDIF MARK_CAR_AS_NO_LONGER_NEEDED car_player_garag1 MARK_CAR_AS_NO_LONGER_NEEDED car_mech2_garag1 MARK_CAR_AS_NO_LONGER_NEEDED car_mech1_garag1 MARK_CAR_AS_NO_LONGER_NEEDED car_mech2_garag1 DELETE_CAR rc_heli_garage1 // MARK_CHAR_AS_NO_LONGER_NEEDED char_truth_garag1 // MARK_CHAR_AS_NO_LONGER_NEEDED char_mech_garag1[0] // MARK_CHAR_AS_NO_LONGER_NEEDED char_mech_garag1[1] // MARK_CHAR_AS_NO_LONGER_NEEDED char_mech_garag1[2] // MARK_CHAR_AS_NO_LONGER_NEEDED char_mech_garag1[3] REMOVE_CHAR_ELEGANTLY char_truth_garag1 REMOVE_CHAR_ELEGANTLY char_mech_garag1[0] REMOVE_CHAR_ELEGANTLY char_mech_garag1[1] REMOVE_CHAR_ELEGANTLY char_mech_garag1[2] REMOVE_CHAR_ELEGANTLY char_mech_garag1[3] REMOVE_CHAR_ELEGANTLY pony_driver_garage1 // SWITCH_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 // SWITCH_PED_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 DELETE_OBJECT object_zeros_bench MARK_MODEL_AS_NO_LONGER_NEEDED bomb MARK_MODEL_AS_NO_LONGER_NEEDED SATCHEL MARK_MODEL_AS_NO_LONGER_NEEDED emperor MARK_MODEL_AS_NO_LONGER_NEEDED HOTDOG MARK_MODEL_AS_NO_LONGER_NEEDED pony MARK_MODEL_AS_NO_LONGER_NEEDED rcraider MARK_MODEL_AS_NO_LONGER_NEEDED towtruck MARK_MODEL_AS_NO_LONGER_NEEDED HOTDOG MARK_MODEL_AS_NO_LONGER_NEEDED cigar DELETE_OBJECT dwaynes_blunt SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 RELEASE_WEATHER UNLOAD_SPECIAL_CHARACTER 1 // unloading zero UNLOAD_SPECIAL_CHARACTER 2 // unloading zero UNLOAD_SPECIAL_CHARACTER 3 // unloading zero UNLOAD_SPECIAL_CHARACTER 4 // unloading zero GET_GAME_TIMER timer_mobile_start IF IS_GARAGE_OPEN hbgdsfs CLOSE_GARAGE hbgdsfs ENDIF /* IF LOCATE_CHAR_ANY_MEANS_3D scplayer ENDIF */ flag_go_to_mechanic1_garag1 = 0 flag_go_to_mechanic2_garag1 = 0 flag_go_to_mechanic3_garag1 = 0 flag_go_to_mechanic4_garag1 = 0 flag_go_to_hub_garag1 = 0 flag_go_to_hospital_garag1 = 0 flag_go_to_police_station_garag1 = 0 flag_cutscene_garage1 = 0 flag_lod_close_to_desstination = 0 flag_text_garage1 = 0 flag_garage_doors = 0 flag_mission_garag1_passed = 0 flag_mission_garag1_failed = 0 flag_player_out_of_car_garag1 = 0 flag_loose_mech3_garag1 = 0 flag_is_mech3_off_bike_garag1 = 0 flag_is_zero_on_bike = 0 flag_is_truth_in_car = 0 flag_is_mechanic2_in_car = 0 flag_is_mechanic1_in_car = 0 flag_help_text_garage1 = 0 STOP_FX_SYSTEM exhale_smoke_effect flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : Deconstruction // AUTHOR : Neil // DESICRIPTION : // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** { // ************************************************************************************************************* // GENERAL INITIALISATION - Every level requires this // ************************************************************************************************************* SCRIPT_NAME garag2 GOSUB mission_start_DECON IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_DECON ENDIF GOSUB mission_cleanup_DECON MISSION_END mission_start_DECON: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 // general variables that are in every mission - DON'T DECLARE MISSION SPECIFIC VARIABLES HERE LVAR_INT m_stage LVAR_INT m_goals LVAR_INT m_passed LVAR_INT m_failed LVAR_INT m_quit LVAR_INT m_frame_num LVAR_INT m_this_frame_time LVAR_INT m_last_frame_time LVAR_INT m_time_diff // commonly used temporary variables LVAR_INT temp_int temp_int2 temp_int3 LVAR_FLOAT temp_float temp_float2 temp_float3 LVAR_INT temp_seq LVAR_FLOAT vec_x vec_y vec_z LVAR_FLOAT vec2_x vec2_y vec2_z LVAR_FLOAT x2 y2 z2 LVAR_FLOAT x3 y3 z3 LVAR_INT vis_area // commonly used flags LVAR_INT dialogue_flag LVAR_INT help_flag // commonly used timers LVAR_INT dialogue_timer LVAR_INT help_timer m_stage = 0 m_goals = 0 m_passed = 0 m_failed = 0 m_quit = 0 dialogue_flag = 0 help_flag = 0 dialogue_timer = 0 help_timer = 0 TIMERA = 0 TIMERB = 0 mission_loop_DECON: WAIT 0 // stuff for filshie IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S m_passed = 1 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F m_failed = 1 ENDIF // Frame count m_frame_num++ IF m_frame_num > 9 m_frame_num = 0 ENDIF // Timer GET_GAME_TIMER m_this_frame_time m_time_diff = m_this_frame_time - m_last_frame_time m_last_frame_time = m_this_frame_time dialogue_timer += m_time_diff help_timer += m_time_diff baddie_spawn_timer += m_time_diff portaloo_timer += m_time_diff IF pause_level = 1 GOTO end_of_main_loop_DECON ENDIF GOSUB DECON_debug_tools SWITCH m_stage CASE 0 GOSUB DECON_m_stage_0 BREAK CASE 1 GOSUB DECON_m_stage_1 BREAK CASE 2 GOSUB DECON_m_stage_2 BREAK CASE 3 GOSUB DECON_m_stage_3 BREAK CASE 4 GOSUB DECON_m_stage_4 BREAK CASE 5 GOSUB DECON_m_stage_5 BREAK ENDSWITCH GOSUB DECON_global_functions // end of main loop *** don't change *** end_of_main_loop_DECON: IF m_quit = 0 IF m_failed = 0 IF m_passed = 0 GOTO mission_loop_DECON ELSE GOSUB mission_passed_DECON RETURN ENDIF ELSE GOSUB mission_failed_DECON RETURN ENDIF ELSE RETURN // quits out - goes to cleanup ENDIF // ************************************************************************************************************* // DEBUG TOOLS // ************************************************************************************************************* DECON_debug_tools: LVAR_INT debug_on IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_X IF debug_on = 0 debug_on = 1 WRITE_DEBUG LEVEL_DEBUG_ON ELSE debug_on = 0 WRITE_DEBUG LEVEL_DEBUG_OFF ENDIF ENDIF IF debug_on = 1 // Display mission stage variables for debug LVAR_INT display_debug VAR_INT DECON_view_debug[8] IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_SPACE display_debug++ IF display_debug > 4 display_debug = 0 ENDIF CLEAR_ALL_VIEW_VARIABLES ENDIF IF display_debug = 1 temp_int = 0 WHILE temp_int < 6 IF DOES_OBJECT_EXIST init_portakabin[temp_int] GET_OBJECT_HEALTH init_portakabin[temp_int] DECON_view_debug[temp_int] ENDIF temp_int++ ENDWHILE VIEW_INTEGER_VARIABLE DECON_view_debug[0] cabin_0_health VIEW_INTEGER_VARIABLE DECON_view_debug[1] cabin_1_health VIEW_INTEGER_VARIABLE DECON_view_debug[2] cabin_2_health VIEW_INTEGER_VARIABLE DECON_view_debug[3] cabin_3_health VIEW_INTEGER_VARIABLE DECON_view_debug[4] cabin_4_health VIEW_INTEGER_VARIABLE DECON_view_debug[5] cabin_5_health ENDIF IF display_debug = 2 DECON_view_debug[0] = m_stage DECON_view_debug[1] = m_goals DECON_view_debug[2] = dialogue_flag DECON_view_debug[3] = dialogue_timer DECON_view_debug[4] = help_flag DECON_view_debug[5] = help_timer DECON_view_debug[6] = TIMERA DECON_view_debug[7] = TIMERB VIEW_INTEGER_VARIABLE DECON_view_debug[0] m_stage VIEW_INTEGER_VARIABLE DECON_view_debug[1] m_goals VIEW_INTEGER_VARIABLE DECON_view_debug[2] dialogue_flag VIEW_INTEGER_VARIABLE DECON_view_debug[3] dialogue_timer VIEW_INTEGER_VARIABLE DECON_view_debug[4] help_flag VIEW_INTEGER_VARIABLE DECON_view_debug[5] help_timer VIEW_INTEGER_VARIABLE DECON_view_debug[6] TIMERA VIEW_INTEGER_VARIABLE DECON_view_debug[7] TIMERB ENDIF IF display_debug = 3 DECON_view_debug[0] = cabin_this_health[0] DECON_view_debug[1] = cabin_last_health[0] DECON_view_debug[2] = cabin_this_health[1] DECON_view_debug[3] = cabin_last_health[1] DECON_view_debug[4] = cabin_this_health[2] DECON_view_debug[5] = cabin_last_health[2] DECON_view_debug[6] = cabin_this_health[3] DECON_view_debug[7] = cabin_last_health[3] VIEW_INTEGER_VARIABLE DECON_view_debug[0] cabin_this_health[0] VIEW_INTEGER_VARIABLE DECON_view_debug[1] cabin_last_health[0] VIEW_INTEGER_VARIABLE DECON_view_debug[2] cabin_this_health[1] VIEW_INTEGER_VARIABLE DECON_view_debug[3] cabin_last_health[1] VIEW_INTEGER_VARIABLE DECON_view_debug[4] cabin_this_health[2] VIEW_INTEGER_VARIABLE DECON_view_debug[5] cabin_last_health[2] VIEW_INTEGER_VARIABLE DECON_view_debug[6] cabin_this_health[3] VIEW_INTEGER_VARIABLE DECON_view_debug[7] cabin_last_health[3] ENDIF IF display_debug = 4 DECON_view_debug[0] = player_is_in_crane // DECON_view_debug[1] = // DECON_view_debug[2] = // DECON_view_debug[3] = // DECON_view_debug[4] = // DECON_view_debug[5] = // DECON_view_debug[6] = // DECON_view_debug[7] = VIEW_INTEGER_VARIABLE DECON_view_debug[0] player_is_in_crane // VIEW_INTEGER_VARIABLE DECON_view_debug[1] // VIEW_INTEGER_VARIABLE DECON_view_debug[2] // VIEW_INTEGER_VARIABLE DECON_view_debug[3] // VIEW_INTEGER_VARIABLE DECON_view_debug[4] // VIEW_INTEGER_VARIABLE DECON_view_debug[5] // VIEW_INTEGER_VARIABLE DECON_view_debug[6] // VIEW_INTEGER_VARIABLE DECON_view_debug[7] ENDIF // Quit level - no mission pass/fail - cleanup only IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ESC m_quit = 1 ENDIF // Pause level LVAR_INT pause_level IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_P IF pause_level = 0 pause_level = 1 WRITE_DEBUG LEVEL_PAUSED ELSE pause_level = 0 WRITE_DEBUG LEVEL_UNPAUSED ENDIF ENDIF ENDIF RETURN // ************************************************************************************************************* // INITIALISATION - SPECIFIC TO THIS LEVEL // ************************************************************************************************************* DECON_m_stage_0: // fake creates IF m_goals = -1 CREATE_CAR PONY 0.0 0.0 0.0 mission_vehicle[0] CREATE_CAR PONY 0.0 0.0 0.0 pcar CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 mission_ped[0] CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 ped_to_add CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 spawned_ped ADD_BLIP_FOR_COORD 0.0 0.0 0.0 cement_truck1_blip ADD_BLIP_FOR_COORD 0.0 0.0 0.0 cement_truck2_blip ADD_BLIP_FOR_COORD 0.0 0.0 0.0 location_blip ENDIF // fade out SET_PLAYER_CONTROL player1 OFF SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // VARIABLES // objects LVAR_INT loo[6] LVAR_INT exploding_barrel[5] LVAR_INT cement_hole LVAR_INT new_hole_in_ground // vehicles LVAR_INT bull LVAR_INT bull2 LVAR_INT cement_truck LVAR_INT truck[2] LVAR_INT dumper_truck LVAR_INT cement_truck2 LVAR_INT pcar LVAR_INT mission_vehicle[7] // peds LVAR_INT worker[6] LVAR_INT mission_ped[10] LVAR_INT boss LVAR_INT bull_driver LVAR_INT spawned_ped LVAR_INT suit_guy // blips LVAR_INT cabin_blip[6] LVAR_INT location_blip LVAR_INT object_blip LVAR_INT cement_truck1_blip LVAR_INT cement_truck2_blip // flags LVAR_INT cabin_fucked[6] LVAR_INT cabin_peds_generated[6] LVAR_INT cabins_destroyed LVAR_INT alarm_raised LVAR_INT mission_ped_flag[10] LVAR_INT available_mission_peds LVAR_INT cabin_last_health[6] LVAR_INT cabin_this_health[6] LVAR_INT fix_portaloo_in_hole LVAR_INT hit_portacabin_first_time LVAR_INT destroyed_dozers VAR_INT portacabin_timer LVAR_INT cement_hole_flag LVAR_INT exlosive_barrel_help // floats LVAR_FLOAT last_pcar_speed LVAR_FLOAT last_car_inertia // timers LVAR_INT baddie_spawn_timer LVAR_INT portaloo_timer // decision maker LVAR_INT worker_dm LVAR_INT suit_guy_dm // sequences LVAR_INT observer_seq1 LVAR_INT observer_seq2 LVAR_INT observer_seq3 // particle fx LVAR_INT particle_fx // set flags cabin_fucked[0] = 0 cabin_fucked[1] = 0 cabin_fucked[2] = 0 cabin_fucked[3] = 0 cabin_fucked[4] = 0 cabin_fucked[5] = 0 cabins_destroyed = 0 alarm_raised = 0 mission_ped_flag[0] = 0 mission_ped_flag[1] = 0 mission_ped_flag[2] = 0 mission_ped_flag[3] = 0 mission_ped_flag[4] = 0 mission_ped_flag[5] = 0 mission_ped_flag[6] = 0 mission_ped_flag[7] = 0 mission_ped_flag[8] = 0 mission_ped_flag[9] = 0 available_mission_peds = 0 cabin_peds_generated[0] = 0 cabin_peds_generated[1] = 0 cabin_peds_generated[2] = 0 cabin_peds_generated[3] = 0 cabin_peds_generated[4] = 0 cabin_peds_generated[5] = 0 fix_portaloo_in_hole = 0 hit_portacabin_first_time =0 destroyed_dozers = 0 cement_hole_flag = 0 exlosive_barrel_help = 0 GOSUB next_stage RETURN // ************************************************************************************************************* // STAGE 1 - Scripted Cutscene // ************************************************************************************************************* DECON_m_stage_1: CLEAR_HELP // animated cutscene IF m_goals = 0 LOAD_MISSION_TEXT GARAGE2 LOAD_CUTSCENE GARAG3A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE SET_AREA_VISIBLE 1 SET_CHAR_AREA_VISIBLE scplayer 1 LOAD_SCENE -2031.0 149.0 29.0 START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CHAR_AREA_VISIBLE scplayer 0 SET_AREA_VISIBLE 0 m_goals++ ENDIF // stage specific stuff IF m_goals = 1 // REQUESTS REQUEST_MODEL PORTALOO REQUEST_MODEL PORTAKABIN REQUEST_MODEL BARREL4 REQUEST_MODEL DOZER REQUEST_MODEL CEMENT REQUEST_MODEL DUMPER REQUEST_MODEL BOBCAT REQUEST_MODEL WMYCON REQUEST_MODEL SHOVEL REQUEST_MODEL COLT45 //REQUEST_ANIMATION ON_LOOKERS //REQUEST_MODEL CEMENT_IN_HOLE REQUEST_MODEL BMYAP LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED PORTALOO OR NOT HAS_MODEL_LOADED PORTAKABIN OR NOT HAS_MODEL_LOADED BARREL4 OR NOT HAS_MODEL_LOADED DOZER OR NOT HAS_MODEL_LOADED CEMENT OR NOT HAS_MODEL_LOADED BMYAP WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED DUMPER OR NOT HAS_MODEL_LOADED BOBCAT OR NOT HAS_MODEL_LOADED WMYCON OR NOT HAS_MODEL_LOADED SHOVEL OR NOT HAS_MODEL_LOADED COLT45 WAIT 0 ENDWHILE // setup cement hole SWAP_NEAREST_BUILDING_MODEL -2049.1714 250.3193 34.4770 20.0 Hubhole1_SFSe Hubhole2_SFSe //SWAP_NEAREST_BUILDING_MODEL -2049.1714 250.3193 34.4770 20.0 Hubhole1_SFSe Hubhole4_SFSe //SWAP_NEAREST_BUILDING_MODEL -2049.1714 250.3193 34.4770 20.0 Hubhole1_SFSe hunhole4_SFSe // IF DOES_OBJECT_EXIST san_fran_hub_hole // DELETE_OBJECT san_fran_hub_hole // CREATE_OBJECT_NO_OFFSET Hubhole2_SFSe -2049.1714 250.3193 33.0784 new_hole_in_ground // ENDIF // rebuild portacabins temp_int = 0 WHILE temp_int < 6 IF DOES_OBJECT_EXIST init_portakabin[temp_int] DELETE_OBJECT init_portakabin[temp_int] ENDIF CREATE_OBJECT PORTAKABIN init_portakabin_x[temp_int] init_portakabin_y[temp_int] init_portakabin_z[temp_int] init_portakabin[temp_int] SET_OBJECT_HEADING init_portakabin[temp_int] init_portakabin_h[temp_int] SET_OBJECT_DYNAMIC init_portakabin[temp_int] FALSE DONT_REMOVE_OBJECT init_portakabin[temp_int] ADD_BLIP_FOR_OBJECT init_portakabin[temp_int] cabin_blip[temp_int] // SET_OBJECT_HEALTH init_portakabin[temp_int] 10000 temp_int++ ENDWHILE // create portaloos CREATE_OBJECT_NO_OFFSET PORTALOO -2087.8606 178.2922 35.3947 loo[0] SET_OBJECT_HEADING loo[0] 3.3302 CREATE_OBJECT_NO_OFFSET PORTALOO -2114.9026 156.9329 35.4667 loo[1] SET_OBJECT_HEADING loo[1] 271.6719 CREATE_OBJECT_NO_OFFSET PORTALOO -2116.4248 157.4618 35.7225 loo[2] SET_OBJECT_HEADING loo[2] 269.1095 // CREATE_OBJECT_NO_OFFSET PORTALOO -2060.4109 228.8140 35.9767 loo[3] // SET_OBJECT_HEADING loo[3] 4.7 CREATE_OBJECT_NO_OFFSET PORTALOO -2054.4736 222.6438 35.8767 loo[3] SET_OBJECT_HEADING loo[3] 0.0 FREEZE_OBJECT_POSITION loo[3] TRUE CREATE_OBJECT_NO_OFFSET PORTALOO -2069.2620 285.8519 35.8543 loo[4] SET_OBJECT_HEADING loo[4] 51.0305 CREATE_OBJECT_NO_OFFSET PORTALOO -2134.8726 293.1065 35.4117 loo[5] SET_OBJECT_HEADING loo[5] 175.9489 // create exploding barrels CREATE_OBJECT_NO_OFFSET BARREL4 -2109.3970 157.8976 34.4311 exploding_barrel[0] CREATE_OBJECT_NO_OFFSET BARREL4 -2108.4932 157.8779 34.4523 exploding_barrel[1] CREATE_OBJECT_NO_OFFSET BARREL4 -2091.6829 172.1051 34.4430 exploding_barrel[2] CREATE_OBJECT_NO_OFFSET BARREL4 -2128.9502 303.4010 33.8880 exploding_barrel[3] CREATE_OBJECT_NO_OFFSET BARREL4 -2129.9233 303.4470 33.8842 exploding_barrel[4] temp_int = 0 WHILE temp_int < 5 MAKE_OBJECT_TARGETTABLE exploding_barrel[temp_int] TRUE temp_int++ ENDWHILE // set crane height of wrecker ball IF DOES_OBJECT_EXIST sf_crane1_trolley SET_ROPE_HEIGHT_FOR_OBJECT sf_crane1_trolley 0.3 ENDIF IF DOES_OBJECT_EXIST sf_crane1_arm SET_OBJECT_HEADING sf_crane1_arm 78.0 IF DOES_OBJECT_EXIST sf_crane1_arm_LOD SET_OBJECT_HEADING sf_crane1_arm_LOD 78.0 ENDIF IF DOES_OBJECT_EXIST sf_crane1_trolley GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS sf_crane1_arm 0.0 15.0 3.453 x y z // was -1.8 SET_OBJECT_COORDINATES_AND_VELOCITY sf_crane1_trolley x y z SET_OBJECT_HEADING sf_crane1_trolley 78.0 ENDIF ENDIF // bulldozers CREATE_CAR DOZER -2098.7263 278.5271 34.8743 bull SET_CAR_HEADING bull 15.4537 SET_CAR_HEALTH bull 5000 SET_CAN_BURST_CAR_TYRES bull FALSE CREATE_CAR DOZER -2088.8015 188.5362 34.0469 bull2 SET_CAR_HEADING bull2 182.8425 SET_CAR_HEALTH bull2 5000 SET_CAN_BURST_CAR_TYRES bull2 FALSE REQUEST_CAR_RECORDING 551 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 551 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD bull START_PLAYBACK_RECORDED_CAR_LOOPED bull 551 ENDIF // cement truck CREATE_CAR CEMENT -2112.6028 193.7894 33.6684 cement_truck SET_CAR_HEADING cement_truck 276.2221 // // dumper truck // CREATE_CAR DUMPER -2114.8062 179.4597 34.2970 dumper_truck // SET_CAR_HEADING dumper_truck 269.4381 // SET_CAN_BURST_CAR_TYRES dumper_truck FALSE // trucks CREATE_CAR BOBCAT -2102.4607 160.2542 34.8444 truck[0] SET_CAR_HEADING truck[0] 66.4396 CREATE_CAR BOBCAT -2121.6694 302.7410 34.4590 truck[1] SET_CAR_HEADING truck[1] 160.6221 // store all the mission vehicles in a single array mission_vehicle[0] = bull mission_vehicle[1] = bull2 mission_vehicle[2] = cement_truck // mission_vehicle[3] = dumper_truck mission_vehicle[4] = truck[0] mission_vehicle[5] = truck[1] temp_int = 0 WHILE temp_int < 6 IF NOT IS_CAR_DEAD mission_vehicle[temp_int] SET_CAR_STRAIGHT_LINE_DISTANCE mission_vehicle[temp_int] 50 ENDIF temp_int++ ENDWHILE // intial peds LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH worker_dm CREATE_CHAR PEDTYPE_MISSION1 WMYCON -2098.7581 168.5889 34.0869 worker[0] CREATE_CHAR PEDTYPE_MISSION1 WMYCON -2099.9744 169.3999 34.0947 worker[1] CREATE_CHAR PEDTYPE_MISSION1 WMYCON -2090.9546 265.4674 34.6686 worker[2] CREATE_CHAR PEDTYPE_MISSION1 WMYCON -2089.7610 264.5739 34.6557 worker[3] CREATE_CHAR PEDTYPE_MISSION1 WMYCON -2085.7532 269.4974 34.5456 worker[4] CREATE_CHAR PEDTYPE_MISSION1 WMYCON -2125.7480 303.8916 33.5532 worker[5] SET_CHAR_HEADING worker[0] 47.9799 SET_CHAR_HEADING worker[1] 229.2811 SET_CHAR_HEADING worker[2] 229.2811 SET_CHAR_HEADING worker[3] 51.1609 SET_CHAR_HEADING worker[4] 177.1601 SET_CHAR_HEADING worker[5] 177.1601 GIVE_WEAPON_TO_CHAR worker[4] WEAPONTYPE_SHOVEL 9999 GIVE_WEAPON_TO_CHAR worker[5] WEAPONTYPE_SHOVEL 9999 temp_int = 0 WHILE temp_int < 6 SET_CHAR_DECISION_MAKER worker[temp_int] worker_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER worker[temp_int] TRUE SET_CHAR_HEALTH worker[temp_int] 50 mission_ped[temp_int] = worker[temp_int] temp_int++ ENDWHILE TASK_CHAT_WITH_CHAR worker[0] worker[1] TRUE TRUE TASK_CHAT_WITH_CHAR worker[1] worker[0] FALSE TRUE TASK_CHAT_WITH_CHAR worker[2] worker[3] TRUE TRUE TASK_CHAT_WITH_CHAR worker[3] worker[2] FALSE TRUE // bull driver IF NOT IS_CAR_DEAD bull CREATE_CHAR_INSIDE_CAR bull PEDTYPE_MISSION1 WMYCON bull_driver SET_CHAR_DECISION_MAKER bull_driver worker_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER bull_driver TRUE SET_CHAR_HEALTH bull_driver 50 mission_ped[6] = bull_driver ENDIF // suit guys CREATE_CHAR PEDTYPE_MISSION1 BMYAP -2089.7090 266.1128 34.6455 suit_guy SET_CHAR_HEADING suit_guy 170.2217 SET_CHAR_HEALTH suit_guy 40 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY suit_guy_dm SET_CHAR_DECISION_MAKER suit_guy suit_guy_dm mission_ped[7] = suit_guy // remove car parked at garage //SWITCH_CAR_GENERATOR gen_car11 0 CLEAR_AREA -2036.1797 179.2597 27.8359 5.0 TRUE //SET_WANTED_MULTIPLIER 0.1 SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 CLEAR_WANTED_LEVEL player1 START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF SET_FIXED_CAMERA_POSITION -2010.4608 171.3564 41.8495 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2011.3015 171.8702 41.6786 JUMP_CUT SET_CHAR_COORDINATES scplayer -2030.9873 148.5787 27.8359 SET_CHAR_HEADING scplayer 359.4339 vec_x = -2011.3015 + 2010.4608 vec_y = 171.8702 - 171.3564 vec_z = 41.6786 - 41.8495 vec_x *= 10.0 vec_y *= 10.0 vec_z *= 10.0 x = -2010.4608 + vec_x y = 171.3564 + vec_y z = 41.8495 + vec_z GET_HEADING_FROM_VECTOR_2D vec_x vec_y heading LOAD_SCENE_IN_DIRECTION x y z heading LOAD_ALL_MODELS_NOW // REQUEST_MODEL SHOPPIE4_SFS // REQUEST_MODEL SCAFFOLDING_SFS // REQUEST_MODEL MALL_01_SFS // REQUEST_MODEL SHOPPIE6_SFS // LOAD_ALL_MODELS_NOW DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PRINT_NOW GAR2_01 5000 1 // Scare off the current construction firm TIMERA = 0 m_goals++ ENDIF IF m_goals = 2 IF TIMERA > 5000 // DO_FADE 250 FADE_OUT // WHILE GET_FADING_STATUS // WAIT 0 // ENDWHILE SET_FIXED_CAMERA_POSITION -2076.3936 263.7876 35.7185 0.0 0.0 0.0 //-2082.9609 259.4915 40.8476 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2077.2866 264.2365 35.6941 JUMP_CUT //-2083.7207 260.0294 40.4827 JUMP_CUT vec_x = -2077.2866 + 2076.3936 vec_y = 264.2365 - 263.7876 vec_z = 35.6941 - 35.7185 vec_x *= 10.0 vec_y *= 10.0 vec_z *= 10.0 x = -2076.3936 + vec_x y = 263.7876 + vec_y z = 35.7185 + vec_z GET_HEADING_FROM_VECTOR_2D vec_x vec_y heading LOAD_SCENE_IN_DIRECTION x y z heading LOAD_ALL_MODELS_NOW IF NOT IS_CHAR_DEAD worker[4] OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 -2099.1619 171.1465 34.0869 PEDMOVE_WALK 60000 TASK_SCRATCH_HEAD -1 TASK_GO_STRAIGHT_TO_COORD -1 -2090.8005 263.5923 34.7131 PEDMOVE_WALK 60000 TASK_SCRATCH_HEAD -1 SET_SEQUENCE_TO_REPEAT temp_seq 1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK worker[4] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD suit_guy OPEN_SEQUENCE_TASK temp_seq TASK_SCRATCH_HEAD -1 TASK_LOOK_ABOUT -1 5000 TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT temp_seq 1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK suit_guy temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF // DO_FADE 250 FADE_IN // WHILE GET_FADING_STATUS // WAIT 0 // ENDWHILE PRINT_NOW GAR2_02 5000 1 // Destroy all the portakabins and kill the foreman. TIMERA = 0 m_goals++ ENDIF ENDIF IF m_goals = 3 IF TIMERA > 5500 DO_FADE 150 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD worker[4] SET_CHAR_COORDINATES worker[4] -2098.8330 191.0430 34.2113 SET_CHAR_HEADING worker[4] 150.0 ENDIF SET_FIXED_CAMERA_POSITION -2084.9932 195.2235 39.2186 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2085.4658 194.3752 38.9801 JUMP_CUT vec_x = -2085.4658 + 2084.9932 vec_y = 194.3752 - 195.2235 vec_z = 38.9801 - 39.2186 vec_x *= 10.0 vec_y *= 10.0 vec_z *= 10.0 x = -2084.9932 + vec_x y = 195.2235 + vec_y z = 39.2186 + vec_z GET_HEADING_FROM_VECTOR_2D vec_x vec_y heading LOAD_SCENE_IN_DIRECTION x y z heading LOAD_ALL_MODELS_NOW DO_FADE 150 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PRINT GAR2_05 5000 1 // Construction machinery will help demolish portakabins. m_goals++ TIMERA = 0 ENDIF ENDIF IF m_goals = 4 IF TIMERA > 5000 m_goals = 99 ENDIF ENDIF // skip IF m_goals > 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED m_goals = 99 ENDIF ENDIF // exit IF m_goals = 99 // DO_FADE 250 FADE_OUT // WHILE GET_FADING_STATUS // WAIT 0 // ENDWHILE IF NOT IS_CHAR_DEAD worker[4] SET_CHAR_COORDINATES worker[4] -2092.2520 252.5526 34.4575 CLEAR_CHAR_TASKS worker[4] OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 -2099.1619 171.1465 34.0869 PEDMOVE_WALK 60000 TASK_SCRATCH_HEAD -1 TASK_GO_STRAIGHT_TO_COORD -1 -2090.8005 263.5923 34.7131 PEDMOVE_WALK 60000 TASK_SCRATCH_HEAD -1 SET_SEQUENCE_TO_REPEAT temp_seq 1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK worker[4] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD suit_guy OPEN_SEQUENCE_TASK temp_seq TASK_SCRATCH_HEAD -1 TASK_LOOK_ABOUT -1 5000 TASK_PLAY_ANIM -1 IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT temp_seq 1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK suit_guy temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF DOES_OBJECT_EXIST init_portakabin[3] SET_OBJECT_COORDINATES init_portakabin[3] -2077.0400 280.395 35.817 SET_OBJECT_HEADING init_portakabin[3] 0.0 ENDIF CLEAR_PRINTS SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 0 FADE_IN // DO_FADE 250 FADE_IN // WHILE GET_FADING_STATUS // WAIT 0 // ENDWHILE GOSUB next_stage ENDIF RETURN // ************************************************************************************************************* // STAGE 2 - Wait for portacabins to get destroyed // ************************************************************************************************************* DECON_m_stage_2: // // adjust portacabin z // IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_UP // IF DOES_OBJECT_EXIST init_portakabin[3] // GET_OBJECT_COORDINATES init_portakabin[3] x y z // z += 0.01 // SET_OBJECT_COORDINATES init_portakabin[3] x y z // WRITE_DEBUG_WITH_FLOAT z z // ENDIF // ENDIF // IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_DOWN // IF DOES_OBJECT_EXIST init_portakabin[3] // GET_OBJECT_COORDINATES init_portakabin[3] x y z // z += -0.01 // SET_OBJECT_COORDINATES init_portakabin[3] x y z // WRITE_DEBUG_WITH_FLOAT z z // ENDIF // ENDIF // IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_8 // IF DOES_OBJECT_EXIST init_portakabin[3] // GET_OBJECT_COORDINATES init_portakabin[3] x y z // y += 0.01 // SET_OBJECT_COORDINATES init_portakabin[3] x y z // WRITE_DEBUG_WITH_FLOAT y y // ENDIF // ENDIF // IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_2 // IF DOES_OBJECT_EXIST init_portakabin[3] // GET_OBJECT_COORDINATES init_portakabin[3] x y z // y += -0.01 // SET_OBJECT_COORDINATES init_portakabin[3] x y z // WRITE_DEBUG_WITH_FLOAT y y // ENDIF // ENDIF // IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_4 // IF DOES_OBJECT_EXIST init_portakabin[3] // GET_OBJECT_COORDINATES init_portakabin[3] x y z // x += 0.01 // SET_OBJECT_COORDINATES init_portakabin[3] x y z // WRITE_DEBUG_WITH_FLOAT x x // ENDIF // ENDIF // IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_6 // IF DOES_OBJECT_EXIST init_portakabin[3] // GET_OBJECT_COORDINATES init_portakabin[3] x y z // x += -0.01 // SET_OBJECT_COORDINATES init_portakabin[3] x y z // WRITE_DEBUG_WITH_FLOAT x x // ENDIF // ENDIF // sort out wanted level IF IS_PLAYER_PLAYING player1 IF IS_CHAR_IN_AREA_2D scplayer -2053.2258 139.1389 -2135.4492 309.5472 FALSE SET_WANTED_MULTIPLIER 0.0 ELSE SET_WANTED_MULTIPLIER 1.0 ENDIF ENDIF // initialisation for stage IF m_goals = 0 IF TIMERA > 0 PRINT_NOW GAR2_19 10000 1 // destroy all the builders cabins m_goals++ TIMERB = 30000 dialogue_flag = 0 START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 3 SOUND_SMASH_PORTACABIN WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE ENDIF ENDIF // wait for portacabins to get destroyed IF m_goals = 1 // // text prompt reminder // IF NOT IS_MESSAGE_BEING_DISPLAYED // IF TIMERA > 40000 // IF cabins_destroyed = 0 // PRINT_NOW GAR2_19 7000 1 // destroy all the builders cabins // ENDIF // IF cabins_destroyed = 1 // PRINT_NOW GAR2_29 7000 1 // ENDIF // IF cabins_destroyed = 2 // PRINT_NOW GAR2_30 7000 1 // ENDIF // IF cabins_destroyed = 3 // PRINT_NOW GAR2_31 7000 1 // ENDIF // IF cabins_destroyed = 4 // PRINT_NOW GAR2_32 7000 1 // ENDIF // IF cabins_destroyed = 5 // PRINT_NOW GAR2_33 7000 1 // ENDIF // TIMERA = 0 // ENDIF // ENDIF IF TIMERB > 30000 IF DOES_OBJECT_EXIST loo[3] IF IS_CHAR_TOUCHING_OBJECT scplayer loo[3] IF audio_line_is_active = 0 //WRITE_DEBUG dialog1 SWITCH dialogue_flag CASE 0 $audio_string = &GAR2_AK // Shouldn’t have had that curry! audio_sound_file = SOUND_GAR2_AK START_NEW_SCRIPT audio_line -1 0 0 1 0 BREAK CASE 1 $audio_string = &GAR2_AF // Oh god the stench! audio_sound_file = SOUND_GAR2_AF START_NEW_SCRIPT audio_line -1 0 0 1 0 BREAK ENDSWITCH dialogue_flag++ IF dialogue_flag > 1 dialogue_flag = 0 ENDIF TIMERB = 0 ENDIF ENDIF ENDIF ENDIF // IF portacabin_timer > 0 // CLEAR_WANTED_LEVEL player1 // ENDIF IF cabins_destroyed = 6 TIMERA = 0 m_goals++ ENDIF ENDIF IF m_goals = 2 IF TIMERA > 1000 m_goals = 99 ENDIF ENDIF IF alarm_raised = 1 AND portacabin_timer <= 0 AND cabins_destroyed < 6 IF NOT IS_WANTED_LEVEL_GREATER player1 1 ALTER_WANTED_LEVEL player1 2 ENDIF CREATE_EMERGENCY_SERVICES_CAR COPCARSF -2039.2551 232.4810 33.9528 CREATE_EMERGENCY_SERVICES_CAR COPCARSF -2038.1851 254.2709 34.0893 m_failed = 1 PRINT_NOW GAR2_40 5000 1 ENDIF // exit IF m_goals = 99 CLEAR_MISSION_AUDIO 3 CLEAR_ONSCREEN_TIMER portacabin_timer GOSUB next_stage ENDIF // count cabins that have been destroyed temp_int = 0 WHILE temp_int < 6 IF DOES_OBJECT_EXIST init_portakabin[temp_int] IF HAS_OBJECT_BEEN_DAMAGED init_portakabin[temp_int] IF cabin_fucked[temp_int] = 0 REMOVE_BLIP cabin_blip[temp_int] cabins_destroyed++ cabin_fucked[temp_int] = 1 IF cabins_destroyed = 1 PRINT_NOW GAR2_29 7000 1 ENDIF IF cabins_destroyed = 2 PRINT_NOW GAR2_30 7000 1 ENDIF IF cabins_destroyed = 3 PRINT_NOW GAR2_31 7000 1 ENDIF IF cabins_destroyed = 4 PRINT_NOW GAR2_32 7000 1 ENDIF IF cabins_destroyed = 5 PRINT_NOW GAR2_33 7000 1 ENDIF TIMERA = 0 ENDIF ENDIF ENDIF temp_int++ ENDWHILE // if portacabin is being hit by a vehicle - not the bulldozer don't take off as much health // debug skip IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_RETURN temp_int = 0 WHILE temp_int < 6 IF DOES_OBJECT_EXIST init_portakabin[temp_int] IF NOT HAS_OBJECT_BEEN_DAMAGED init_portakabin[temp_int] BREAK_OBJECT init_portakabin[temp_int] FALSE ENDIF ENDIF temp_int++ ENDWHILE ENDIF RETURN // ************************************************************************************************************* // STAGE 3 - cutscene of foreman // ************************************************************************************************************* DECON_m_stage_3: CLEAR_HELP IF m_goals = 0 CLEAR_PRINTS // setup SET_PLAYER_CONTROL player1 OFF SET_FADING_COLOUR 0 0 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_WIDESCREEN ON // set visible area GET_AREA_VISIBLE vis_area SET_AREA_VISIBLE 0 // set player's position IF NOT player_is_in_crane = 1 IF IS_CHAR_IN_AREA_3D scplayer -2066.8386 209.6444 28.4030 -2040.1006 262.7024 34.9146 FALSE SET_CHAR_COORDINATES scplayer -2090.0444 209.4996 33.9509 SET_CHAR_HEADING scplayer 250.8130 ENDIF ELSE do_not_update_camera_crane1 = 1 ENDIF LOAD_MISSION_AUDIO 3 SOUND_TOILET_FLUSH WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE // re-create foreman's toilet CLEAR_AREA -2054.4736 222.6438 35.8767 3.0 TRUE // remove any mission cars or peds from location temp_int = 0 WHILE temp_int < 10 IF DOES_CHAR_EXIST mission_ped[temp_int] IF NOT IS_CHAR_DEAD mission_ped[temp_int] IF LOCATE_CHAR_ANY_MEANS_3D mission_ped[temp_int] -2054.4736 222.6438 35.8767 5.0 5.0 3.0 FALSE DELETE_CHAR mission_ped[temp_int] ENDIF ELSE DELETE_CHAR mission_ped[temp_int] ENDIF ENDIF temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 7 IF DOES_VEHICLE_EXIST mission_vehicle[temp_int] IF NOT IS_CAR_DEAD mission_vehicle[temp_int] IF LOCATE_CAR_3D mission_vehicle[temp_int] -2054.4736 222.6438 35.8767 6.0 6.0 3.0 mission_vehicle[temp_int] DELETE_CAR mission_vehicle[temp_int] ENDIF ELSE DELETE_CAR mission_vehicle[temp_int] ENDIF ENDIF temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 6 IF DOES_OBJECT_EXIST loo[temp_int] IF LOCATE_OBJECT_3D loo[temp_int] -2054.4736 222.6438 35.8767 3.0 3.0 3.0 loo[temp_int] DELETE_OBJECT loo[temp_int] ENDIF ENDIF temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 5 IF DOES_OBJECT_EXIST exploding_barrel[temp_int] IF LOCATE_OBJECT_3D exploding_barrel[temp_int] -2054.4736 222.6438 35.8767 3.0 3.0 3.0 exploding_barrel[temp_int] DELETE_OBJECT exploding_barrel[temp_int] ENDIF ENDIF temp_int++ ENDWHILE // make sure wrecker ball isn't there either IF DOES_OBJECT_EXIST sf_crane1_trolley SET_ROPE_HEIGHT_FOR_OBJECT sf_crane1_trolley 0.5 ENDIF IF DOES_OBJECT_EXIST loo[3] DELETE_OBJECT loo[3] ENDIF CREATE_OBJECT_NO_OFFSET PORTALOO -2054.4736 222.6438 35.8767 loo[3] SET_OBJECT_HEADING loo[3] 0.0 SET_OBJECT_COLLISION loo[3] FALSE // cut to view behind toilet // SET_FIXED_CAMERA_POSITION -2063.9299 226.6998 36.8442 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -2063.1084 227.2301 36.6345 JUMP_CUT SET_FIXED_CAMERA_POSITION -2058.0498 218.8743 35.7489 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2057.4229 219.6530 35.7245 JUMP_CUT // re-create portacabin IF DOES_OBJECT_EXIST init_portakabin[2] DELETE_OBJECT init_portakabin[2] ENDIF CREATE_OBJECT PORTAKABIN init_portakabin_x[2] init_portakabin_y[2] init_portakabin_z[2] init_portakabin[2] SET_OBJECT_HEADING init_portakabin[2] init_portakabin_h[2] SET_OBJECT_DYNAMIC init_portakabin[2] FALSE DONT_REMOVE_OBJECT init_portakabin[2] // create boss CREATE_CHAR PEDTYPE_CIVMALE BMYAP -2054.4736 222.6438 34.8767 boss SET_CHAR_HEADING boss 90.0 // create cement truck 2 CREATE_CAR CEMENT -2037.1759 269.7917 34.9191 cement_truck2 SET_CAR_HEADING cement_truck2 179.5245 mission_vehicle[6] = cement_truck2 // freeze any remaining workers that are alive temp_int = 0 WHILE temp_int < 10 IF DOES_CHAR_EXIST mission_ped[temp_int] IF NOT IS_CHAR_DEAD mission_ped[temp_int] IF NOT IS_CHAR_IN_ANY_CAR mission_ped[temp_int] FREEZE_CHAR_POSITION mission_ped[temp_int] TRUE SET_CHAR_COLLISION mission_ped[temp_int] FALSE SET_CHAR_VISIBLE mission_ped[temp_int] FALSE ELSE STORE_CAR_CHAR_IS_IN_NO_SAVE mission_ped[temp_int] car FREEZE_CAR_POSITION car TRUE SET_CAR_VISIBLE car FALSE ENDIF ENDIF ENDIF temp_int++ ENDWHILE DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE m_goals++ ENDIF // skip IF m_goals > 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED m_goals = 99 ENDIF ENDIF // flush noise IF m_goals = 1 //PRINT_NOW GAR2_06 4000 1 // flush IF DOES_OBJECT_EXIST loo[3] ATTACH_MISSION_AUDIO_TO_OBJECT 3 loo[3] PLAY_MISSION_AUDIO 3 ENDIF TIMERA = 0 m_goals++ ENDIF // break portacabin IF m_goals = 2 IF TIMERA > 3000 IF DOES_OBJECT_EXIST init_portakabin[2] BREAK_OBJECT init_portakabin[2] FALSE m_goals++ ENDIF ENDIF ENDIF // dude walk out of loo IF m_goals = 3 IF TIMERA > 4000 IF NOT IS_CHAR_DEAD boss SET_FIXED_CAMERA_POSITION -2051.7214 225.4406 36.5865 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2052.5605 224.9327 36.3922 JUMP_CUT OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 -2057.1367 223.541 34.5820 PEDMOVE_WALK 5000 IF DOES_OBJECT_EXIST init_portakabin[2] TASK_LOOK_AT_OBJECT -1 init_portakabin[2] 100 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK boss temp_seq CLEAR_SEQUENCE_TASK temp_seq //PRINT_NOW GAR2_07 5000 1 // FOREMAN - 'What the hell was all the noise out here?' $audio_string = &GAR2_AA audio_sound_file = SOUND_GAR2_AA START_NEW_SCRIPT audio_line boss 0 1 1 0 m_goals++ TIMERA = 0 ENDIF ENDIF ENDIF IF m_goals = 4 IF TIMERA > 3000 AND audio_line_is_active = 0 m_goals++ ENDIF ENDIF // wait for dude to finish IF m_goals = 5 IF NOT IS_CHAR_DEAD boss GET_SCRIPT_TASK_STATUS boss PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK SET_CHAR_COORDINATES boss -2057.1367 223.541 34.5820 SET_CHAR_HEADING boss 97.4598 SET_FIXED_CAMERA_POSITION -2056.0564 222.2135 36.2036 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2056.9387 222.6817 36.1606 JUMP_CUT TASK_LOOK_AT_COORD boss -2069.0 229.0 36.0 2000 //PRINT_NOW GAR2_08 5000 1 // FOREMAN - 'What the f....' TIMERA = 0 m_goals++ ENDIF ENDIF ENDIF // wait for text to finish IF m_goals = 6 IF TIMERA > 2000 TIMERA = 0 SET_FIXED_CAMERA_POSITION -2051.7214 225.4406 36.5865 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2052.5605 224.9327 36.3922 JUMP_CUT m_goals++ ENDIF ENDIF // run back into toilet IF m_goals = 7 IF NOT IS_CHAR_DEAD boss //PRINT_NOW GAR2_09 5000 1 // FOREMAN - 'Arrghhhh! A nutter!' $audio_string = &GAR2_AB audio_sound_file = SOUND_GAR2_AB START_NEW_SCRIPT audio_line boss 0 1 1 0 TASK_GO_STRAIGHT_TO_COORD boss -2054.4736 222.6438 35.8767 PEDMOVE_RUN 5000 TIMERA = 0 m_goals++ ENDIF ENDIF // change camera angle back IF m_goals = 8 IF TIMERA > 1500 m_goals++ ENDIF ENDIF // delete boss IF m_goals = 9 IF NOT IS_CHAR_DEAD boss GET_SCRIPT_TASK_STATUS boss TASK_GO_STRAIGHT_TO_COORD temp_int IF temp_int = FINISHED_TASK DELETE_CHAR boss TIMERA = 0 m_goals++ ENDIF ENDIF ENDIF // show hole IF m_goals = 10 IF TIMERA > 2000 CLEAR_PRINTS SET_FIXED_CAMERA_POSITION -2037.4390 244.0506 43.8289 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2038.1473 244.4092 43.2209 JUMP_CUT PRINT GAR2_11 5000 1 // push guy into ditch m_goals++ ENDIF ENDIF // wait a few secs IF m_goals = 11 IF TIMERA > 5000 m_goals++ ENDIF ENDIF // show cement truck IF m_goals = 12 CLEAR_PRINTS SET_FIXED_CAMERA_POSITION -2031.7805 262.1947 36.3181 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2032.4756 262.9132 36.3398 JUMP_CUT PRINT GAR2_12 5000 1 // bury the fucker TIMERA = 0 m_goals++ ENDIF // wait a couple of secs IF m_goals = 13 IF TIMERA > 5000 m_goals = 99 ENDIF ENDIF // finish IF m_goals = 99 START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 IF DOES_OBJECT_EXIST loo[3] SET_OBJECT_COLLISION loo[3] TRUE ENDIF CLEAR_PRINTS IF player_is_in_crane = 0 SET_PLAYER_CONTROL player1 ON ELSE do_not_update_camera_crane1 = 0 ENDIF SET_AREA_VISIBLE vis_area RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF IF DOES_OBJECT_EXIST init_portakabin[2] DELETE_OBJECT init_portakabin[2] ENDIF IF DOES_CHAR_EXIST boss DELETE_CHAR boss ENDIF // defrost any mission peds that are alive temp_int = 0 WHILE temp_int < 10 IF DOES_CHAR_EXIST mission_ped[temp_int] IF NOT IS_CHAR_DEAD mission_ped[temp_int] IF NOT IS_CHAR_IN_ANY_CAR mission_ped[temp_int] FREEZE_CHAR_POSITION mission_ped[temp_int] FALSE SET_CHAR_COLLISION mission_ped[temp_int] TRUE SET_CHAR_VISIBLE mission_ped[temp_int] TRUE ELSE STORE_CAR_CHAR_IS_IN_NO_SAVE mission_ped[temp_int] car FREEZE_CAR_POSITION car FALSE SET_CAR_VISIBLE car TRUE ENDIF ENDIF ENDIF temp_int++ ENDWHILE IF player_is_in_crane = 1 reset_crane_camera = 1 ENDIF CLEAR_MISSION_AUDIO 3 GOSUB next_stage ENDIF RETURN // ************************************************************************************************************* // STAGE 4 - deal with foreman // ************************************************************************************************************* DECON_m_stage_4: // sort out wanted level IF IS_PLAYER_PLAYING player1 IF IS_CHAR_IN_AREA_2D scplayer -2053.2258 139.1389 -2135.4492 309.5472 FALSE SET_WANTED_MULTIPLIER 0.0 ELSE SET_WANTED_MULTIPLIER 1.0 ENDIF ENDIF IF m_goals = 0 START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 // add blip for toilet IF DOES_OBJECT_EXIST loo[3] ADD_BLIP_FOR_OBJECT loo[3] object_blip CHANGE_BLIP_COLOUR object_blip RED ENDIF // add marker for hole ADD_BLIP_FOR_COORD -2048.6436 250.1341 35.5400 location_blip PRINT GAR2_10 7000 1 // bury the foreman and his toilet TIMERA = 0 dialogue_flag = 0 dialogue_timer = 4000 portaloo_timer = 0 cement_hole_flag = -1 m_goals++ ENDIF // wait for portaloo to get put in hole IF m_goals = 1 // print dialogue if portacabin is hit or moved IF dialogue_timer > 5000 IF NOT IS_MESSAGE_BEING_DISPLAYED IF DOES_OBJECT_EXIST loo[3] GET_OBJECT_SPEED loo[3] temp_float IF temp_float > 2.0 OR IS_CHAR_TOUCHING_OBJECT scplayer loo[3] IF audio_line_is_active = 0 //WRITE_DEBUG dialog2 SWITCH dialogue_flag CASE 0 $audio_string = &GAR2_AC audio_sound_file = SOUND_GAR2_AC BREAK CASE 1 $audio_string = &GAR2_AD audio_sound_file = SOUND_GAR2_AD BREAK CASE 2 $audio_string = &GAR2_AE audio_sound_file = SOUND_GAR2_AE BREAK CASE 3 $audio_string = &GAR2_AF audio_sound_file = SOUND_GAR2_AF BREAK CASE 4 $audio_string = &GAR2_AG audio_sound_file = SOUND_GAR2_AG BREAK CASE 5 $audio_string = &GAR2_AH audio_sound_file = SOUND_GAR2_AH BREAK CASE 6 $audio_string = &GAR2_AJ audio_sound_file = SOUND_GAR2_AJ BREAK CASE 7 $audio_string = &GAR2_AK audio_sound_file = SOUND_GAR2_AK BREAK CASE 8 $audio_string = &GAR2_AL audio_sound_file = SOUND_GAR2_AL BREAK CASE 9 $audio_string = &GAR2_AM audio_sound_file = SOUND_GAR2_AM BREAK ENDSWITCH START_NEW_SCRIPT audio_line -1 0 0 1 0 dialogue_flag++ IF dialogue_flag > 7 dialogue_flag = 0 ENDIF dialogue_timer = 0 WAIT 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF portaloo_timer > 150000 AND portaloo_timer < 151000 CLEAR_PRINTS PRINT_NOW GAR2_34 7000 1 // ~s~Hurry up! The cops will be here soon! portaloo_timer = 151001 dialogue_timer = 0 ENDIF IF portaloo_timer > 200000 IF NOT IS_WANTED_LEVEL_GREATER player1 1 ALTER_WANTED_LEVEL player1 2 ENDIF CREATE_EMERGENCY_SERVICES_CAR COPCARSF -2039.2551 232.4810 33.9528 CREATE_EMERGENCY_SERVICES_CAR COPCARSF -2038.1851 254.2709 34.0893 m_failed = 1 PRINT_NOW GAR2_35 5000 1 // ~r~You took too long to bury the foreman. ENDIF IF DOES_OBJECT_EXIST loo[3] IF LOCATE_OBJECT_3D loo[3] -2048.8862 250.6607 32.5177 2.8980 5.0500 2.000 FALSE IF NOT IS_MESSAGE_BEING_DISPLAYED AND audio_line_is_active = 0 START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS PRINT_NOW GAR2_36 7000 1 //get a cement truck. REMOVE_BLIP location_blip REMOVE_BLIP object_blip //ADD_BLIP_FOR_COORD -2049.7065 240.5694 34.7620 location_blip m_goals++ TIMERA = 0 TIMERB = 0 ENDIF ENDIF ENDIF GOSUB decon_empty_hole_of_cement_trucks ENDIF // look after behaviour of cement truck for this small section. IF m_goals > 1 AND m_goals < 4 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF IS_CAR_MODEL car CEMENT IF NOT cement_hole_flag = 1 PRINT_NOW GAR2_37 7000 1 // back truck into position IF DOES_BLIP_EXIST cement_truck1_blip REMOVE_BLIP cement_truck1_blip ENDIF IF DOES_BLIP_EXIST cement_truck2_blip REMOVE_BLIP cement_truck2_blip ENDIF IF DOES_BLIP_EXIST location_blip REMOVE_BLIP location_blip ENDIF ADD_BLIP_FOR_COORD -2049.7065 240.5694 34.7620 location_blip cement_hole_flag = 1 ENDIF ELSE IF NOT cement_hole_flag = 0 GOSUB decon_cement_hole_blips cement_hole_flag = 0 ENDIF ENDIF ELSE IF NOT cement_hole_flag = 0 GOSUB decon_cement_hole_blips cement_hole_flag = 0 ENDIF ENDIF GOSUB decon_empty_hole_of_cement_trucks ENDIF // wait a couple of secs for player to read text IF m_goals = 2 //IF NOT IS_MESSAGE_BEING_DISPLAYED TIMERA = 0 TIMERB = 0 m_goals++ //ENDIF // fix portaloo IF fix_portaloo_in_hole = 0 IF DOES_OBJECT_EXIST loo[3] IF NOT IS_OBJECT_ON_SCREEN loo[3] SET_OBJECT_COORDINATES loo[3] -2048.9568 250.2059 32.6542 SET_OBJECT_HEADING loo[3] 158.5600 SET_OBJECT_ROTATION loo[3] -170.1394 -88.8094 -21.4400 fix_portaloo_in_hole = 1 ENDIF ENDIF ENDIF ENDIF // wait for player to back cement truck into position IF m_goals = 3 // fix portaloo IF fix_portaloo_in_hole = 0 IF DOES_OBJECT_EXIST loo[3] IF NOT IS_OBJECT_ON_SCREEN loo[3] SET_OBJECT_COORDINATES loo[3] -2048.9568 250.2059 32.6542 SET_OBJECT_HEADING loo[3] 158.5600 SET_OBJECT_ROTATION loo[3] -170.1394 -88.8094 -21.4400 fix_portaloo_in_hole = 1 ENDIF ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2049.7065 240.5694 34.7620 3.0 3.0 3.0 TRUE IF IS_CHAR_IN_MODEL scplayer CEMENT IF IS_CAR_STOPPED pcar IF NOT IS_CAR_DEAD pcar GET_CAR_HEADING pcar heading IF heading < 190.0 AND heading >170.0 REMOVE_BLIP location_blip m_goals = 99 ELSE PRINT_NOW GAR2_14 1000 1 // straighten up! ENDIF ENDIF ENDIF ELSE IF TIMERA > 30000 PRINT_NOW GAR2_20 7000 1 // you need a cement truck TIMERA = 0 ENDIF ENDIF ELSE // IF TIMERA < 7000 // CLEAR_PRINTS // TIMERA = 7000 // ENDIF ENDIF // // text prompt reminder // IF TIMERB > 30000 // PRINT GAR2_13 10000 1 //Back a cement mixer into position in front of the hole. // TIMERB = 0 // ENDIF ENDIF IF m_goals = 99 GOSUB next_stage ENDIF RETURN decon_cement_hole_blips: IF DOES_BLIP_EXIST location_blip REMOVE_BLIP location_blip ENDIF // blip behaviour - truck1 IF NOT IS_CAR_DEAD cement_truck IF NOT DOES_BLIP_EXIST cement_truck1_blip ADD_BLIP_FOR_CAR cement_truck cement_truck1_blip SET_BLIP_AS_FRIENDLY cement_truck1_blip TRUE PRINT_NOW GAR2_36 7000 1 //get a cement truck. ENDIF ENDIF // truck 2 IF NOT IS_CAR_DEAD cement_truck2 IF NOT DOES_BLIP_EXIST cement_truck2_blip ADD_BLIP_FOR_CAR cement_truck2 cement_truck2_blip SET_BLIP_AS_FRIENDLY cement_truck2_blip TRUE PRINT_NOW GAR2_36 7000 1 //get a cement truck. ENDIF ENDIF RETURN decon_empty_hole_of_cement_trucks: // if cement trucks get stuck in hole, delete them when offscreen IF DOES_VEHICLE_EXIST cement_truck IF NOT IS_CAR_DEAD cement_truck IF LOCATE_CAR_3D cement_truck -2049.1990 250.3882 32.9084 2.4540 5.0420 2.3 FALSE IF NOT IS_CAR_ON_SCREEN cement_truck DELETE_CAR cement_truck REMOVE_BLIP cement_truck1_blip ENDIF ENDIF ELSE MARK_CAR_AS_NO_LONGER_NEEDED cement_truck REMOVE_BLIP cement_truck1_blip ENDIF ELSE IF NOT IS_POINT_ON_SCREEN -2112.6028 193.7894 33.6684 5.0 IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY -2112.6028 193.7894 33.6684 3.0 3.0 3.0 CREATE_CAR CEMENT -2112.6028 193.7894 33.6684 cement_truck SET_CAR_HEADING cement_truck 276.2221 IF DOES_BLIP_EXIST cement_truck1_blip REMOVE_BLIP cement_truck1_blip ENDIF ADD_BLIP_FOR_CAR cement_truck cement_truck1_blip SET_BLIP_AS_FRIENDLY cement_truck1_blip TRUE ENDIF ENDIF ENDIF IF DOES_VEHICLE_EXIST cement_truck2 IF NOT IS_CAR_DEAD cement_truck2 IF LOCATE_CAR_3D cement_truck2 -2049.1990 250.3882 32.9084 2.4540 5.0420 2.3 FALSE IF NOT IS_CAR_ON_SCREEN cement_truck2 DELETE_CAR cement_truck2 REMOVE_BLIP cement_truck2_blip ENDIF ENDIF ELSE MARK_CAR_AS_NO_LONGER_NEEDED cement_truck2 REMOVE_BLIP cement_truck2_blip ENDIF ELSE IF NOT IS_POINT_ON_SCREEN -2037.1759 269.7917 34.9191 5.0 IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY -2037.1759 269.7917 34.9191 3.0 3.0 3.0 CREATE_CAR CEMENT -2037.1759 269.7917 34.9191 cement_truck2 SET_CAR_HEADING cement_truck2 179.5245 IF DOES_BLIP_EXIST cement_truck2_blip REMOVE_BLIP cement_truck2_blip ENDIF ADD_BLIP_FOR_CAR cement_truck2 cement_truck2_blip SET_BLIP_AS_FRIENDLY cement_truck2_blip TRUE ENDIF ENDIF ENDIF RETURN // ************************************************************************************************************* // STAGE 5 - scripted cut of cement mixer filling hole // ************************************************************************************************************* DECON_m_stage_5: // pour cement IF m_goals = 0 CLEAR_PRINTS SET_PLAYER_CONTROL player1 OFF DO_FADE 250 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_MISSION_AUDIO 3 SOUND_CEMENT_POUR WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE IF DOES_OBJECT_EXIST loo[3] IF NOT IS_OBJECT_ON_SCREEN loo[3] SET_OBJECT_COORDINATES loo[3] -2048.9568 250.2059 32.6542 SET_OBJECT_HEADING loo[3] 158.5600 SET_OBJECT_ROTATION loo[3] -170.1394 -88.8094 -21.4400 //fix_portaloo_in_hole = 1 ENDIF ENDIF SWITCH_WIDESCREEN ON // SET_FIXED_CAMERA_POSITION -2043.7852 251.9825 36.4564 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -2044.5497 251.3475 36.3463 JUMP_CUT SET_FIXED_CAMERA_POSITION -2046.3302 255.5639 35.1158 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2046.6879 254.6398 34.9808 JUMP_CUT // remove any remaining builders temp_int = 0 WHILE temp_int < 10 IF DOES_CHAR_EXIST mission_ped[temp_int] DELETE_CHAR mission_ped[temp_int] mission_ped[temp_int] = 0 ENDIF temp_int++ ENDWHILE // get this vehicle out of the way before performing test SET_CHAR_COORDINATES scplayer -2049.7344 241.7195 70.7037 SET_CHAR_HEADING scplayer 176.8350 // check if any vehicles are in the way temp_int = 0 WHILE temp_int < 7 IF NOT IS_CAR_DEAD mission_vehicle[temp_int] IF LOCATE_CAR_3D mission_vehicle[temp_int] -2049.7344 241.7195 34.7037 7.0 7.0 5.0 FALSE DELETE_CAR mission_vehicle[temp_int] ENDIF ENDIF temp_int++ ENDWHILE // delete any cars in the hole temp_int = 0 WHILE temp_int < 7 IF NOT IS_CAR_DEAD mission_vehicle[temp_int] IF LOCATE_CAR_3D mission_vehicle[temp_int] -2048.8862 250.6607 32.5177 2.8980 5.0500 2.000 FALSE DELETE_CAR mission_vehicle[temp_int] ENDIF ELSE DELETE_CAR mission_vehicle[temp_int] ENDIF temp_int++ ENDWHILE CLEAR_AREA -2049.7344 241.7195 34.7037 10.0 TRUE // set truck back in correct position SET_CHAR_COORDINATES scplayer -2049.7344 241.7195 34.7037 SET_CHAR_HEADING scplayer 176.8350 IF NOT IS_CAR_DEAD pcar SET_VEHICLE_QUATERNION pcar -0.0448 0.0178 1.0030 -0.0611 //FREEZE_CAR_POSITION pcar TRUE CREATE_OBJECT_NO_OFFSET Hubhole3_SFSe -2049.1714 250.3193 30.8784 cement_hole //SET_OBJECT_VISIBLE cement_hole FALSE //DONT_REMOVE_OBJECT cement_hole CREATE_FX_SYSTEM_ON_CAR_WITH_DIRECTION cement pcar 0.0 -4.4 0.0 0.0 -1.0 0.0 TRUE particle_fx ENDIF WAIT 500 DO_FADE 250 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // SET_FIXED_CAMERA_POSITION -2043.4509 251.4274 36.2142 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -2044.1686 250.7310 36.2195 JUMP_CUT TIMERA = 0 m_goals++ ENDIF IF m_goals = 1 temp_float = 0.0 WHILE temp_float < 1.0 WAIT 0 IF NOT IS_CAR_DEAD pcar CONTROL_MOVABLE_VEHICLE_PART pcar temp_float ENDIF temp_float +=@ 0.01 ENDWHILE m_goals++ ENDIF IF m_goals = 2 IF TIMERA > 2000 PLAY_FX_SYSTEM particle_fx IF NOT IS_CAR_DEAD pcar GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pcar 0.0 -4.4 0.0 x y z SET_MISSION_AUDIO_POSITION 3 X Y Z PLAY_MISSION_AUDIO 3 ENDIF TIMERA = 0 m_goals++ ENDIF ENDIF IF m_goals = 3 IF TIMERA > 1000 // IF DOES_OBJECT_EXIST cement_hole // SET_OBJECT_VISIBLE cement_hole TRUE // ENDIF m_goals++ ENDIF ENDIF IF m_goals = 4 IF SLIDE_OBJECT cement_hole -2049.1714 250.3193 34.1770 0.01 0.01 0.009 FALSE TIMERA = 0 CLEAR_MISSION_AUDIO 3 STOP_FX_SYSTEM particle_fx m_goals++ ENDIF ENDIF IF m_goals = 5 IF TIMERA > 2000 m_goals = 99 ENDIF ENDIF IF m_goals = 99 IF NOT IS_CAR_DEAD pcar //FREEZE_CAR_POSITION pcar FALSE ENDIF SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT CLEAR_MISSION_AUDIO 3 m_passed = 1 ENDIF RETURN // ************************************************************************************************************* // GLOBAL FUNCTIONS - run continuously throughout lifetime of level // ************************************************************************************************************* DECON_global_functions: // check if alarm has been raised IF m_frame_num = 1 AND alarm_raised = 0 // check if any of the initial peds have been attacked temp_int = 0 WHILE temp_int < 6 IF DOES_CHAR_EXIST worker[temp_int] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR worker[temp_int] scplayer OR IS_CHAR_DEAD worker[temp_int] alarm_raised = 1 ENDIF ENDIF temp_int++ ENDWHILE // suit guy IF DOES_CHAR_EXIST suit_guy IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR suit_guy scplayer OR IS_CHAR_DEAD suit_guy alarm_raised = 1 ENDIF ENDIF // bull driver IF DOES_CHAR_EXIST bull_driver IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR bull_driver scplayer OR IS_CHAR_DEAD bull_driver alarm_raised = 1 ENDIF ENDIF // check if portabins have been attacked temp_int = 0 WHILE temp_int < 6 IF DOES_OBJECT_EXIST init_portakabin[temp_int] GET_OBJECT_HEALTH init_portakabin[temp_int] temp_int2 IF temp_int2 < 900 alarm_raised = 1 ENDIF ENDIF temp_int++ ENDWHILE // check if any of the building site vehicles have been stolen or damaged temp_int = 0 WHILE temp_int < 7 IF DOES_VEHICLE_EXIST mission_vehicle[temp_int] IF NOT IS_CAR_DEAD mission_vehicle[temp_int] IF IS_CHAR_IN_CAR scplayer mission_vehicle[temp_int] alarm_raised = 1 ENDIF IF HAS_CAR_BEEN_DAMAGED_BY_CHAR mission_vehicle[temp_int] scplayer alarm_raised = 1 ENDIF ENDIF ENDIF temp_int++ ENDWHILE // if alarm has been raised clear all the current ped task IF alarm_raised = 1 temp_int = 0 WHILE temp_int < 10 IF NOT IS_CHAR_DEAD mission_ped[temp_int] CLEAR_CHAR_TASKS mission_ped[temp_int] ENDIF temp_int++ ENDWHILE ENDIF // switch on timer IF alarm_raised = 1 portacabin_timer = 180000 DISPLAY_ONSCREEN_TIMER_WITH_STRING portacabin_timer TIMER_DOWN BB_19 // Time PRINT GAR2_41 7000 1 // destroy all the portables before the cops arrive! ENDIF ELSE IF exlosive_barrel_help = 0 IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND NOT IS_MESSAGE_BEING_DISPLAYED IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF IS_CAR_MODEL car DOZER PRINT_HELP GAR2_42 exlosive_barrel_help++ ENDIF ENDIF ENDIF ENDIF ENDIF // put up message if player destroys both bulldozers IF destroyed_dozers = 0 AND m_stage <= 2 IF IS_CAR_DEAD bull AND IS_CAR_DEAD bull2 IF NOT IS_MESSAGE_BEING_DISPLAYED PRINT_NOW GAR2_39 7000 1 // other heavy vehicle destroyed_dozers++ ENDIF ENDIF ENDIF // baddie ai if alarm has been triggered IF alarm_raised = 1 // suit guy - make him run towards player then flee char IF NOT IS_CHAR_DEAD suit_guy GET_SCRIPT_TASK_STATUS suit_guy PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_GOTO_CHAR -1 scplayer 60000 20.0 TASK_SMART_FLEE_CHAR -1 scplayer 300.0 60000 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK suit_guy temp_seq CLEAR_SEQUENCE_TASK temp_seq MARK_CHAR_AS_NO_LONGER_NEEDED suit_guy mission_ped[7] = 0 ENDIF ENDIF // 2 observer sequences - for all the peds that don't have task_kill_char_on_foot OPEN_SEQUENCE_TASK observer_seq1 IF NOT IS_CHAR_IN_ANY_CAR scplayer TASK_GOTO_CHAR -1 scplayer 60000 5.0 ELSE TASK_GOTO_CHAR -1 scplayer 60000 15.0 ENDIF IF NOT IS_CHAR_IN_ANY_CAR scplayer TASK_PLAY_ANIM -1 FIGHTIDLE PED 4.0 FALSE FALSE FALSE TRUE -1 ELSE //TASK_PLAY_ANIM -1 panic_point ON_LOOKERS 4.0 FALSE FALSE FALSE FALSE -1 ENDIF CLOSE_SEQUENCE_TASK observer_seq1 OPEN_SEQUENCE_TASK observer_seq2 IF NOT IS_CHAR_IN_ANY_CAR scplayer TASK_GOTO_CHAR -1 scplayer 60000 7.5 ELSE TASK_GOTO_CHAR -1 scplayer 60000 10.0 ENDIF IF NOT IS_CHAR_IN_ANY_CAR scplayer TASK_PLAY_ANIM -1 FIGHTIDLE PED 4.0 FALSE FALSE FALSE TRUE -1 ELSE //TASK_PLAY_ANIM -1 panic_shout ON_LOOKERS 4.0 FALSE FALSE FALSE FALSE -1 ENDIF CLOSE_SEQUENCE_TASK observer_seq2 OPEN_SEQUENCE_TASK observer_seq3 IF NOT IS_CHAR_IN_ANY_CAR scplayer TASK_GOTO_CHAR -1 scplayer 60000 10.0 ELSE TASK_GOTO_CHAR -1 scplayer 60000 20.0 ENDIF TASK_FLEE_CHAR -1 scplayer 20.0 3000 CLOSE_SEQUENCE_TASK observer_seq3 // find 5 nearest peds to player LVAR_INT closest_ped[2] LVAR_FLOAT closest_dist[2] temp_int = 0 WHILE temp_int < 2 closest_ped[temp_int] = -1 closest_dist[temp_int] = 9999.0 temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 10 IF NOT IS_CHAR_DEAD mission_ped[temp_int] GET_CHAR_COORDINATES mission_ped[temp_int] x y z GET_CHAR_COORDINATES scplayer x2 y2 z2 GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 distance IF distance < closest_dist[0] closest_dist[1] = closest_dist[0] closest_dist[0] = distance closest_ped[1] = closest_ped[0] closest_ped[0] = temp_int ELSE IF distance < closest_dist[1] closest_dist[1] = distance closest_ped[1] = temp_int ENDIF ENDIF // if the distance is quite large and the ped is off screen - delete ped IF distance > 500.0 AND NOT IS_CHAR_ON_SCREEN mission_ped[temp_int] DELETE_CHAR mission_ped[temp_int] mission_ped[temp_int] = 0 ENDIF ENDIF temp_int++ ENDWHILE // make nearest 2 peds fight the player temp_int = 0 WHILE temp_int < 10 IF NOT IS_CHAR_DEAD mission_ped[temp_int] IF NOT IS_CHAR_IN_ANY_CAR mission_ped[temp_int] // if the ped has a shotgun - make him attack all the time IF IS_CURRENT_CHAR_WEAPON mission_ped[temp_int] WEAPONTYPE_PISTOL GET_SCRIPT_TASK_STATUS mission_ped[temp_int] TASK_KILL_CHAR_ON_FOOT temp_int2 IF temp_int2 = FINISHED_TASK CLEAR_CHAR_TASKS mission_ped[temp_int] TASK_KILL_CHAR_ON_FOOT mission_ped[temp_int] scplayer ENDIF ELSE // if it is one of the nearest 2 IF temp_int = closest_ped[0] OR temp_int = closest_ped[1] GET_SCRIPT_TASK_STATUS mission_ped[temp_int] TASK_KILL_CHAR_ON_FOOT temp_int2 IF temp_int2 = FINISHED_TASK CLEAR_CHAR_TASKS mission_ped[temp_int] TASK_KILL_CHAR_ON_FOOT mission_ped[temp_int] scplayer ENDIF //GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS mission_ped[temp_int] 0.0 0.0 1.0 x y z //DRAW_CORONA x y z 0.25 CORONATYPE_MOON FLARETYPE_NONE 0 255 0 ELSE // else they are observers or flee-ers GET_SCRIPT_TASK_STATUS mission_ped[temp_int] PERFORM_SEQUENCE_TASK temp_int2 IF temp_int2 = FINISHED_TASK GENERATE_RANDOM_INT_IN_RANGE 0 9 temp_int2 IF temp_int2 < 4 CLEAR_CHAR_TASKS mission_ped[temp_int] PERFORM_SEQUENCE_TASK mission_ped[temp_int] observer_seq1 ELSE IF temp_int2 < 8 CLEAR_CHAR_TASKS mission_ped[temp_int] PERFORM_SEQUENCE_TASK mission_ped[temp_int] observer_seq2 ELSE CLEAR_CHAR_TASKS mission_ped[temp_int] PERFORM_SEQUENCE_TASK mission_ped[temp_int] observer_seq3 ENDIF ENDIF ELSE IF IS_CHAR_PLAYING_ANIM mission_ped[temp_int] panic_point OR IS_CHAR_PLAYING_ANIM mission_ped[temp_int] panic_shout GET_CHAR_COORDINATES mission_ped[temp_int] x y z GET_CHAR_COORDINATES scplayer x2 y2 z2 vec_x = x2 - x vec_y = y2 - y GET_HEADING_FROM_VECTOR_2D vec_x vec_y heading SET_CHAR_HEADING mission_ped[temp_int] heading ENDIF ENDIF ENDIF ENDIF ELSE // if the ped is in a car make him ram the player STORE_CAR_CHAR_IS_IN_NO_SAVE mission_ped[temp_int] car SET_CAR_STRAIGHT_LINE_DISTANCE car 255 IF NOT IS_CAR_DEAD car IF IS_PLAYBACK_GOING_ON_FOR_CAR car STOP_PLAYBACK_RECORDED_CAR car ENDIF ENDIF GET_SCRIPT_TASK_STATUS mission_ped[temp_int] PERFORM_SEQUENCE_TASK temp_int2 IF temp_int2 = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_CAR_MISSION -1 car -1 MISSION_RAMPLAYER_CLOSE 40.0 DRIVINGMODE_PLOUGHTHROUGH CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK mission_ped[temp_int] temp_seq CLEAR_SEQUENCE_TASK temp_seq IF NOT touching_dozer = 0 touching_dozer = 0 ENDIF ELSE IF NOT IS_CHAR_IN_ANY_CAR scplayer IF IS_CHAR_TOUCHING_VEHICLE scplayer car LVAR_INT touching_dozer //LVAR_INT raise_shovel IF touching_dozer = 0 //WRITE_DEBUG touching_car OPEN_SEQUENCE_TASK temp_seq TASK_CAR_TEMP_ACTION -1 car TEMPACT_REVERSE 2500 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK mission_ped[temp_int] temp_seq CLEAR_SEQUENCE_TASK temp_seq touching_dozer = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF temp_int++ ENDWHILE CLEAR_SEQUENCE_TASK observer_seq1 CLEAR_SEQUENCE_TASK observer_seq2 CLEAR_SEQUENCE_TASK observer_seq3 ENDIF // make dude walk up to player and ask him what he's doing IF alarm_raised = 0 IF NOT IS_CHAR_DEAD worker[4] IF mission_ped_flag[4] = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2074.2637 222.3900 34.7395 30.0 30.0 4.0 FALSE //IF LOCATE_CHAR_ON_FOOT_CHAR_3D worker[4] scplayer 40.0 40.0 10.0 FALSE CLEAR_CHAR_TASKS worker[4] OPEN_SEQUENCE_TASK temp_seq TASK_GOTO_CHAR -1 scplayer 50000 3.0 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_SCRATCH_HEAD -1 CLOSE_SEQUENCE_TASK temp_Seq PERFORM_SEQUENCE_TASK worker[4] temp_seq CLEAR_SEQUENCE_TASK temp_seq mission_ped_flag[4]++ //ENDIF ENDIF ENDIF IF mission_ped_flag[4] = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2074.2637 222.3900 34.7395 30.0 30.0 4.0 FALSE IF NOT IS_MESSAGE_BEING_DISPLAYED IF audio_line_is_active = 0 IF LOCATE_CHAR_ON_FOOT_CHAR_3D worker[4] scplayer 3.0 3.0 2.0 FALSE GENERATE_RANDOM_INT_IN_RANGE 0 3 temp_int IF temp_int = 0 $audio_string = &GAR2_BA audio_sound_file = SOUND_GAR2_BA START_NEW_SCRIPT audio_line worker[4] 1 0 1 0 ENDIF IF temp_int = 1 $audio_string = &GAR2_BB audio_sound_file = SOUND_GAR2_BB START_NEW_SCRIPT audio_line worker[4] 1 0 1 0 ENDIF IF temp_int = 2 $audio_string = &GAR2_BC audio_sound_file = SOUND_GAR2_BC START_NEW_SCRIPT audio_line worker[4] 1 0 1 0 ENDIF mission_ped_flag[4]++ ENDIF TIMERB = 0 ENDIF ENDIF ELSE OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 -2099.1619 171.1465 34.0869 PEDMOVE_WALK 60000 TASK_SCRATCH_HEAD -1 TASK_GO_STRAIGHT_TO_COORD -1 -2090.8005 263.5923 34.7131 PEDMOVE_WALK 60000 TASK_SCRATCH_HEAD -1 SET_SEQUENCE_TO_REPEAT temp_seq 1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK worker[4] temp_seq CLEAR_SEQUENCE_TASK temp_seq mission_ped_flag[4] = 0 ENDIF ENDIF IF mission_ped_flag[4] = 2 GET_SCRIPT_TASK_STATUS worker[4] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 -2099.1619 171.1465 34.0869 PEDMOVE_WALK 60000 TASK_SCRATCH_HEAD -1 TASK_GO_STRAIGHT_TO_COORD -1 -2090.8005 263.5923 34.7131 PEDMOVE_WALK 60000 TASK_SCRATCH_HEAD -1 SET_SEQUENCE_TO_REPEAT temp_seq 1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK worker[4] temp_seq CLEAR_SEQUENCE_TASK temp_seq mission_ped_flag[4]++ ENDIF ENDIF ENDIF ENDIF // stop recording of bull dozer IF NOT IS_CHAR_DEAD bull_driver IF NOT IS_CAR_DEAD bull IF IS_PLAYBACK_GOING_ON_FOR_CAR bull IF NOT IS_CHAR_IN_CAR bull_driver bull STOP_PLAYBACK_RECORDED_CAR bull ENDIF ENDIF ENDIF ELSE IF NOT IS_CAR_DEAD bull IF IS_PLAYBACK_GOING_ON_FOR_CAR bull STOP_PLAYBACK_RECORDED_CAR bull ENDIF ENDIF ENDIF // store car player is in IF IS_CHAR_IN_ANY_CAR scplayer IF NOT IS_CAR_DEAD pcar IF NOT IS_CHAR_IN_CAR scplayer pcar pcar = 0 STORE_CAR_CHAR_IS_IN scplayer pcar ENDIF ELSE pcar = 0 STORE_CAR_CHAR_IS_IN scplayer pcar ENDIF ENDIF // // check if portacabins have been damaged by players vehicle, if so make sure it was the bulldozer // temp_int = 0 // WHILE temp_int < 6 // IF DOES_OBJECT_EXIST init_portakabin[temp_int] // IF NOT HAS_OBJECT_BEEN_DAMAGED init_portakabin[temp_int] // GET_OBJECT_HEALTH init_portakabin[temp_int] cabin_this_health[temp_int] // // IF cabin_this_health[temp_int] < cabin_last_health[temp_int] // IF cabin_this_health[temp_int] > 0 // // IF NOT IS_CAR_DEAD pcar // IF IS_CHAR_IN_CAR scplayer pcar // IF NOT IS_CAR_MODEL pcar DOZER // temp_int2 = cabin_last_health[temp_int] - cabin_this_health[temp_int] // temp_float =# temp_int2 // temp_float *= 0.5 // we'll add half the damage caused back onto the cabins health // temp_int2 =# temp_float // cabin_this_health[temp_int] += temp_int2 // SET_OBJECT_HEALTH init_portakabin[temp_int] cabin_this_health[temp_int] // ELSE // temp_int2 = cabin_last_health[temp_int] - cabin_this_health[temp_int] // temp_int2 *= -30 // cabin_this_health[temp_int] += temp_int2 // IF cabin_this_health[temp_int] < 0 // cabin_this_health[temp_int] = 0 // ENDIF // SET_OBJECT_HEALTH init_portakabin[temp_int] cabin_this_health[temp_int] // ENDIF // ENDIF // ENDIF // // IF player_is_in_crane = 1 // SET_OBJECT_HEALTH init_portakabin[temp_int] 0 // BREAK_OBJECT init_portakabin[temp_int] FALSE // ENDIF // // IF cabin_this_health[temp_int] = 0 // BREAK_OBJECT init_portakabin[temp_int] FALSE // // IF NOT IS_CAR_DEAD pcar // IF IS_CHAR_IN_CAR scplayer pcar // SET_CAR_FORWARD_SPEED pcar last_pcar_speed // WRITE_DEBUG DESTROYED1 // ENDIF // ENDIF // // ENDIF // // // ENDIF // ENDIF // // cabin_last_health[temp_int] = cabin_this_health[temp_int] // ENDIF // ENDIF // temp_int++ // ENDWHILE //WRITE_DEBUG_WITH_FLOAT last_pcar_speed last_pcar_speed // if player hits portakabin first time travelling about a certain speed - destroy it temp_int = 0 WHILE temp_int < 6 // write debug text IF debug_on = 1 IF DOES_OBJECT_EXIST init_portakabin[temp_int] IF HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON init_portakabin[temp_int] WEAPONTYPE_EXPLOSION OR HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON init_portakabin[temp_int] WEAPONTYPE_ROCKETLAUNCHER OR HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON init_portakabin[temp_int] WEAPONTYPE_GRENADE OR HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON init_portakabin[temp_int] WEAPONTYPE_ROCKET_HS OR HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON init_portakabin[temp_int] WEAPONTYPE_REMOTE_SATCHEL_CHARGE WRITE_DEBUG damaged_by_explosion ENDIF IF HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON init_portakabin[temp_int] WEAPONTYPE_ANYWEAPON WRITE_DEBUG damaged_by_any ENDIF ENDIF ENDIF // check if cabin has been damaged by explosion / rocket IF DOES_OBJECT_EXIST init_portakabin[temp_int] IF HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON init_portakabin[temp_int] WEAPONTYPE_EXPLOSION OR HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON init_portakabin[temp_int] WEAPONTYPE_ROCKETLAUNCHER OR HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON init_portakabin[temp_int] WEAPONTYPE_GRENADE OR HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON init_portakabin[temp_int] WEAPONTYPE_ROCKET_HS OR HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON init_portakabin[temp_int] WEAPONTYPE_REMOTE_SATCHEL_CHARGE CLEAR_OBJECT_LAST_WEAPON_DAMAGE init_portakabin[temp_int] GET_OBJECT_HEALTH init_portakabin[temp_int] temp_int2 temp_int2 += -500 IF temp_int2 < 1 SET_OBJECT_HEALTH init_portakabin[temp_int] 0 ATTACH_MISSION_AUDIO_TO_OBJECT 3 init_portakabin[temp_int] PLAY_MISSION_AUDIO 3 BREAK_OBJECT init_portakabin[temp_int] FALSE ELSE SET_OBJECT_HEALTH init_portakabin[temp_int] temp_int2 ENDIF ENDIF ENDIF IF DOES_OBJECT_EXIST init_portakabin[temp_int] IF NOT HAS_OBJECT_BEEN_DAMAGED init_portakabin[temp_int] IF NOT IS_CAR_DEAD pcar IF IS_CHAR_IN_CAR scplayer pcar IF IS_VEHICLE_TOUCHING_OBJECT pcar init_portakabin[temp_int] IF last_car_inertia > 65000.0 SET_OBJECT_HEALTH init_portakabin[temp_int] 0 ATTACH_MISSION_AUDIO_TO_OBJECT 3 init_portakabin[temp_int] PLAY_MISSION_AUDIO 3 BREAK_OBJECT init_portakabin[temp_int] FALSE IF NOT IS_CAR_DEAD pcar IF IS_CHAR_IN_CAR scplayer pcar SET_CAR_FORWARD_SPEED pcar last_pcar_speed //WRITE_DEBUG DESTROYED1 ENDIF ENDIF //WRITE_DEBUG_WITH_FLOAT last_car_inertia last_car_inertia ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF DOES_OBJECT_EXIST init_portakabin[temp_int] IF NOT HAS_OBJECT_BEEN_DAMAGED init_portakabin[temp_int] GET_OBJECT_HEALTH init_portakabin[temp_int] cabin_this_health[temp_int] IF cabin_this_health[temp_int] < cabin_last_health[temp_int] IF cabin_this_health[temp_int] > 0 IF NOT IS_CAR_DEAD pcar IF IS_CHAR_IN_CAR scplayer pcar IF IS_VEHICLE_TOUCHING_OBJECT pcar init_portakabin[temp_int] IF last_pcar_speed > 5.0 IF NOT IS_CAR_MODEL pcar DOZER temp_int2 = cabin_last_health[temp_int] - cabin_this_health[temp_int] temp_float =# temp_int2 temp_float *= 0.5 // we'll add half the damage caused back onto the cabins health temp_int2 =# temp_float cabin_this_health[temp_int] += temp_int2 SET_OBJECT_HEALTH init_portakabin[temp_int] cabin_this_health[temp_int] ELSE temp_int2 = cabin_last_health[temp_int] - cabin_this_health[temp_int] temp_int2 *= -30 cabin_this_health[temp_int] += temp_int2 IF cabin_this_health[temp_int] < 0 cabin_this_health[temp_int] = 0 ENDIF IF hit_portacabin_first_time = 0 IF cabin_this_health[temp_int] > 10 IF NOT IS_MESSAGE_BEING_DISPLAYED PRINT_NOW GAR2_38 5000 1 // ram it again hit_portacabin_first_time = 1 ENDIF ENDIF ENDIF SET_OBJECT_HEALTH init_portakabin[temp_int] cabin_this_health[temp_int] ENDIF ELSE SET_OBJECT_HEALTH init_portakabin[temp_int] cabin_last_health[temp_int] ENDIF ENDIF ENDIF ENDIF IF player_is_in_crane = 1 SET_OBJECT_HEALTH init_portakabin[temp_int] 0 ATTACH_MISSION_AUDIO_TO_OBJECT 3 init_portakabin[temp_int] PLAY_MISSION_AUDIO 3 BREAK_OBJECT init_portakabin[temp_int] FALSE ENDIF IF cabin_this_health[temp_int] = 0 ATTACH_MISSION_AUDIO_TO_OBJECT 3 init_portakabin[temp_int] PLAY_MISSION_AUDIO 3 BREAK_OBJECT init_portakabin[temp_int] FALSE IF NOT IS_CAR_DEAD pcar IF IS_CHAR_IN_CAR scplayer pcar SET_CAR_FORWARD_SPEED pcar last_pcar_speed //WRITE_DEBUG DESTROYED1 ENDIF ENDIF ENDIF ENDIF ENDIF cabin_last_health[temp_int] = cabin_this_health[temp_int] ENDIF ENDIF IF DOES_OBJECT_EXIST init_portakabin[temp_int] IF NOT HAS_OBJECT_BEEN_DAMAGED init_portakabin[temp_int] IF NOT IS_CAR_DEAD pcar IF IS_CHAR_IN_CAR scplayer pcar IF IS_CAR_MODEL pcar DOZER IF IS_VEHICLE_TOUCHING_OBJECT pcar init_portakabin[temp_int] GET_OBJECT_HEALTH init_portakabin[temp_int] temp_int2 IF temp_int2 < 10 SET_OBJECT_HEALTH init_portakabin[temp_int] 0 ATTACH_MISSION_AUDIO_TO_OBJECT 3 init_portakabin[temp_int] PLAY_MISSION_AUDIO 3 BREAK_OBJECT init_portakabin[temp_int] FALSE IF NOT IS_CAR_DEAD pcar IF IS_CHAR_IN_CAR scplayer pcar SET_CAR_FORWARD_SPEED pcar last_pcar_speed //WRITE_DEBUG DESTROYED1 ENDIF ENDIF //WRITE_DEBUG DESTROYED2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF temp_int++ ENDWHILE // spawn more baddies if portacabin gets damaged temp_int = 0 WHILE temp_int < 6 IF available_mission_peds > 0 IF DOES_OBJECT_EXIST init_portakabin[temp_int] GET_OBJECT_HEALTH init_portakabin[temp_int] temp_int2 IF temp_int2 < 995 IF temp_int2 > 500 IF cabin_peds_generated[temp_int] = 0 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS init_portakabin[temp_int] 3.252 -2.1084 0.0 x y z GOSUB is_mission_ped_in_area IF is_mission_ped_in_area_result = 0 GET_GROUND_Z_FOR_3D_COORD x y z z GET_OBJECT_HEADING init_portakabin[temp_int] heading heading += 180.0 CREATE_CHAR PEDTYPE_MISSION1 WMYCON x y z spawned_ped SET_CHAR_HEADING spawned_ped heading SET_CHAR_HEALTH spawned_ped 50 cabin_peds_generated[temp_int]++ temp_int = 6 ENDIF ENDIF ELSE IF NOT HAS_OBJECT_BEEN_DAMAGED init_portakabin[temp_int] // IF cabin_peds_generated[temp_int] < 2 // GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS init_portakabin[temp_int] 3.252 -2.1084 0.0 x y z // GOSUB is_mission_ped_in_area // IF is_mission_ped_in_area_result = 0 // GET_OBJECT_HEADING init_portakabin[temp_int] heading // GET_GROUND_Z_FOR_3D_COORD x y z z // heading += 180.0 // CREATE_CHAR PEDTYPE_MISSION1 WMYCON x y z spawned_ped // SET_CHAR_HEADING spawned_ped heading // SET_CHAR_HEALTH spawned_ped 50 // cabin_peds_generated[temp_int]++ // temp_int = 6 // ENDIF // ENDIF ELSE IF NOT cabin_peds_generated[temp_int] = 99 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS init_portakabin[temp_int] 0.0 0.0 0.0 x y z GET_OBJECT_HEADING init_portakabin[temp_int] heading GET_GROUND_Z_FOR_3D_COORD x y z z heading += 180.0 CREATE_CHAR PEDTYPE_MISSION1 WMYCON x y z spawned_ped SET_CHAR_HEADING spawned_ped heading SET_CHAR_HEALTH spawned_ped 50 cabin_peds_generated[temp_int] = 99 temp_int = 6 // dive GET_CHAR_COORDINATES scplayer x2 y2 z2 vec_x = x - x2 vec_y = y - y2 GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int2 IF NOT temp_int2 = 0 vec_y *= -1.0 ENDIF vec2_x = vec_y vec2_y = vec_x * -1.0 TASK_DIVE_AND_GET_UP spawned_ped vec2_x vec2_y 1000 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF DOES_CHAR_EXIST spawned_ped IF NOT IS_CHAR_DEAD spawned_ped // give weapon depending on how many portacabins have been destroyed IF cabins_destroyed > 0 IF cabins_destroyed < 2 GIVE_WEAPON_TO_CHAR spawned_ped WEAPONTYPE_SHOVEL 99999 ELSE GIVE_WEAPON_TO_CHAR spawned_ped WEAPONTYPE_PISTOL 99999 ENDIF ENDIF SET_CHAR_SHOOT_RATE spawned_ped 30 SET_CHAR_ACCURACY spawned_ped 30 SET_CHAR_DECISION_MAKER spawned_ped worker_dm ped_to_add = spawned_ped GOSUB add_ped_to_mission_peds baddie_spawn_timer = 0 ENDIF ENDIF spawned_ped = 0 temp_int++ ENDWHILE // if there are no construction worker peds about then spawn a couple IF alarm_raised = 1 IF available_mission_peds <= 4 baddie_spawn_timer = 0 ENDIF IF baddie_spawn_timer > 20000 IF available_mission_peds > 4 temp_float2 = 200.0 temp_int2 = -1 // find closest available portacabin temp_int = 0 WHILE temp_int < 6 IF DOES_OBJECT_EXIST init_portakabin[temp_int] IF NOT HAS_OBJECT_BEEN_DAMAGED init_portakabin[temp_int] GET_OBJECT_COORDINATES init_portakabin[temp_int] x y z GET_CHAR_COORDINATES scplayer x2 y2 z2 GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 temp_float IF temp_float < temp_float2 temp_float2 = temp_float temp_int2 = temp_int ENDIF ENDIF ENDIF temp_int++ ENDWHILE // if we found a spawn point then create the ped IF NOT temp_int2 = -1 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS init_portakabin[temp_int2] 3.252 -2.1084 0.0 x y z GOSUB is_mission_ped_in_area IF is_mission_ped_in_area_result = 0 GET_GROUND_Z_FOR_3D_COORD x y z z GET_OBJECT_HEADING init_portakabin[temp_int2] heading heading += 180.0 CREATE_CHAR PEDTYPE_MISSION1 WMYCON x y z spawned_ped SET_CHAR_HEADING spawned_ped heading SET_CHAR_HEALTH spawned_ped 50 IF cabins_destroyed > 2 IF cabins_destroyed < 5 GIVE_WEAPON_TO_CHAR spawned_ped WEAPONTYPE_SHOVEL 99999 ELSE GIVE_WEAPON_TO_CHAR spawned_ped WEAPONTYPE_PISTOL 99999 ENDIF ENDIF SET_CHAR_SHOOT_RATE spawned_ped 30 SET_CHAR_ACCURACY spawned_ped 30 SET_CHAR_DECISION_MAKER spawned_ped worker_dm ped_to_add = spawned_ped spawned_ped = 0 baddie_spawn_timer = 0 GOSUB add_ped_to_mission_peds ENDIF ENDIF ENDIF ENDIF ENDIF // clear mission ped array if the ped is dead temp_int = 0 WHILE temp_int < 10 IF DOES_CHAR_EXIST mission_ped[temp_int] IF IS_CHAR_DEAD mission_ped[temp_int] MARK_CHAR_AS_NO_LONGER_NEEDED mission_ped[temp_int] mission_ped[temp_int] = 0 mission_ped_flag[temp_int] = 0 ENDIF ENDIF temp_int++ ENDWHILE GOSUB count_available_peds IF NOT IS_CAR_DEAD pcar GET_CAR_SPEED pcar last_pcar_speed GET_CAR_MASS pcar temp_float last_car_inertia = last_pcar_speed * temp_float //WRITE_DEBUG_WITH_FLOAT last_car_inertia last_car_inertia ENDIF // remove blips on dead cement mixers IF DOES_BLIP_EXIST cement_truck1_blip IF IS_CAR_DEAD cement_truck REMOVE_BLIP cement_truck1_blip ENDIF ENDIF IF DOES_BLIP_EXIST cement_truck2_blip IF IS_CAR_DEAD cement_truck2 REMOVE_BLIP cement_truck2_blip ENDIF ENDIF RETURN // ************************************************************************************************************* // MISSION SPECIFIC GOSUBS // ************************************************************************************************************* LVAR_INT ped_to_add LVAR_INT temp_int_g1 add_ped_to_mission_peds: temp_int_g1 = 0 WHILE temp_int_g1 < 4 IF mission_ped[temp_int_g1] = 0 mission_ped[temp_int_g1] = ped_to_add mission_ped_flag[temp_int_g1] = 0 temp_int_g1 = 6 ENDIF temp_int_g1++ ENDWHILE GOSUB count_available_peds //GOSUB debug_print_mission_peds RETURN LVAR_INT ap_temp_int count_available_peds: available_mission_peds = 4 ap_temp_int = 0 WHILE ap_temp_int < 4 IF DOES_CHAR_EXIST mission_ped[ap_temp_int] available_mission_peds-- ENDIF ap_temp_int++ ENDWHILE RETURN LVAR_INT debug_temp_int debug_print_mission_peds: SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "available peds" SAVE_NEWLINE_TO_DEBUG_FILE debug_temp_int = 0 WHILE debug_temp_int < 10 SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "mission ped " SAVE_INT_TO_DEBUG_FILE debug_temp_int SAVE_STRING_TO_DEBUG_FILE " = " SAVE_INT_TO_DEBUG_FILE mission_ped[debug_temp_int] debug_temp_int++ ENDWHILE SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "available_mission_peds = " SAVE_INT_TO_DEBUG_FILE available_mission_peds SAVE_NEWLINE_TO_DEBUG_FILE RETURN LVAR_INT impia_int LVAR_INT is_mission_ped_in_area_result is_mission_ped_in_area: is_mission_ped_in_area_result = 0 impia_int = 0 WHILE impia_int < 10 IF NOT IS_CHAR_DEAD mission_ped[impia_int] IF LOCATE_CHAR_ON_FOOT_3D mission_ped[impia_int] x y z 1.5 1.5 3.0 FALSE is_mission_ped_in_area_result = 1 ENDIF ENDIF impia_int++ ENDWHILE RETURN // ================================================================= // GOSUB: Next_Stage (sets flags and timers for next mission stage) // ================================================================= next_stage: m_stage++ m_goals = 0 dialogue_flag = 0 help_flag = 0 dialogue_timer = 0 help_timer = 0 TIMERA = 0 TIMERB = 0 RETURN // ************************************************************************************************************* // END OF LEVEL GOSUBS - fail, pass, cleanup // ************************************************************************************************************* // FAIL mission_failed_DECON: IF IS_PLAYER_PLAYING player1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2049.1990 250.3882 32.9084 2.4540 5.0420 2.3 FALSE SET_CHAR_COORDINATES scplayer -2045.1887 241.7544 34.9462 SET_CHAR_HEADING scplayer 186.3532 ENDIF ENDIF SWAP_NEAREST_BUILDING_MODEL -2049.1714 250.3193 34.4770 20.0 Hubhole2_SFSe Hubhole1_SFSe // CREATE_OBJECT_NO_OFFSET Hubhole1_SFSe -2049.1714 250.3193 34.4770 san_fran_hub_hole // DONT_REMOVE_OBJECT san_fran_hub_hole PRINT_BIG M_FAIL 5000 1 RETURN // PASS mission_passed_DECON: IF DOES_OBJECT_EXIST cement_hole DELETE_OBJECT cement_hole ENDIF // CREATE_OBJECT_NO_OFFSET Hubhole3_SFSe -2049.1714 250.3193 34.4770 cement_hole // DONT_REMOVE_OBJECT cement_hole // IF DOES_OBJECT_EXIST new_hole_in_ground // DELETE_OBJECT new_hole_in_ground // ENDIF // CREATE_OBJECT_NO_OFFSET Hubhole2_SFSe -2049.1714 250.3193 33.0784 new_hole_in_ground // DONT_REMOVE_OBJECT new_hole_in_ground //SWAP_NEAREST_BUILDING_MODEL -2049.1714 250.3193 34.4770 20.0 Hubhole2_SFSe Hubhole1_SFSe SWAP_NEAREST_BUILDING_MODEL -2049.1714 250.3193 34.4770 20.0 Hubhole2_SFSe Hubhole4_SFSe REGISTER_MISSION_PASSED GAR_2 // PRINT_WITH_NUMBER_BIG ( M_PASS ) 10000 5000 1 //"Mission Passed!" // ADD_SCORE player1 10000 START_NEW_SCRIPT synd_mission_loop REMOVE_BLIP garage_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ garage_blip_icon garage_contact_blip PLAYER_MADE_PROGRESS 1 SET_INT_STAT PASSED_GARAGE2 1 PRINT_BIG M_PASSD 5000 1 PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL player1 flag_garage_mission_counter ++ RETURN // CLEANUP mission_cleanup_DECON: START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_MISSION_AUDIO 3 do_not_update_camera_crane1 = 0 MARK_MODEL_AS_NO_LONGER_NEEDED PORTALOO MARK_MODEL_AS_NO_LONGER_NEEDED PORTAKABIN MARK_MODEL_AS_NO_LONGER_NEEDED BARREL4 MARK_MODEL_AS_NO_LONGER_NEEDED DOZER MARK_MODEL_AS_NO_LONGER_NEEDED CEMENT MARK_MODEL_AS_NO_LONGER_NEEDED DUMPER MARK_MODEL_AS_NO_LONGER_NEEDED BOBCAT MARK_MODEL_AS_NO_LONGER_NEEDED BMYAP MARK_MODEL_AS_NO_LONGER_NEEDED WMYCON MARK_MODEL_AS_NO_LONGER_NEEDED SHOVEL MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 //MARK_MODEL_AS_NO_LONGER_NEEDED CEMENT_IN_HOLE //REMOVE_ANIMATION ON_LOOKERS REMOVE_BLIP cabin_blip[0] REMOVE_BLIP cabin_blip[1] REMOVE_BLIP cabin_blip[2] REMOVE_BLIP cabin_blip[3] REMOVE_BLIP cabin_blip[4] REMOVE_BLIP cabin_blip[5] REMOVE_BLIP location_blip REMOVE_BLIP object_blip REMOVE_BLIP cement_truck1_blip REMOVE_BLIP cement_truck2_blip // from load scene // MARK_MODEL_AS_NO_LONGER_NEEDED SHOPPIE4_SFS // MARK_MODEL_AS_NO_LONGER_NEEDED SCAFFOLDING_SFS // MARK_MODEL_AS_NO_LONGER_NEEDED MALL_01_SFS // MARK_MODEL_AS_NO_LONGER_NEEDED SHOPPIE6_SFS // MARK_MODEL_AS_NO_LONGER_NEEDED SHOPPIE6_SFS01 // MARK_MODEL_AS_NO_LONGER_NEEDED MISSION_01_SFS // MARK_MODEL_AS_NO_LONGER_NEEDED MISSION_02_SFS CLEAR_ONSCREEN_TIMER portacabin_timer // === RESTORE ENVIRONMENT SETTINGS === //SWITCH_CAR_GENERATOR gen_car11 101 SET_WANTED_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // **************************************** scrash1 **************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME scrash1 GOSUB mission_start_scrash3 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_scrash3_failed ENDIF GOSUB mission_cleanup_scrash3 MISSION_END { // Variables for mission //people LVAR_INT garage_saved LVAR_INT sc3_valet sc3_valet1 sc3_valet2 sc3_missionchar LVAR_FLOAT sc3_valetX sc3_valetY sc3_valetZ sc3_x sc3_y sc3_z LVAR_FLOAT sc3_player_X sc3_player_Y sc3_player_Z sc3_carX sc3_carY sc3_carZ sc3_h // vehicles LVAR_INT sc3_bike sc3_car1 sc3_playerscar sc3_copcar1 sc3_copcar2 LVAR_INT sc3_here_comes_the_prosecutor //blips LVAR_INT sc3_valet_blip sc3_hotel_blip sc3_drug_plant_blip sc3_missioncar_blip LVAR_INT sc3_blip[3] val_uniform_blip //flags LVAR_INT sc3_flag sc3_vehicle_warning timer_running sc3_missionchar_alive LVAR_INT sc3_player_straying sc3_mini_flag timer_running = 0 LVAR_INT sc3_cut_time LVAR_INT sc3_cut_flag sc3_uniform_given // objects //clothes pickup LVAR_INT val_uniform_pickup //groups //colours LVAR_INT sc3_col1 sc3_col2 //coords // route nodes array // Other LVAR_INT sc3_var1 sc3_var2 sc3_var3 LVAR_INT sc3_alive sc3_driving sc3_warning LVAR_INT sc3_carhealth sc3_valet_cycle_fast sc3_player_in_car VAR_INT sc3_countdown sc3_countdown = 150000 // temp // hiding areas // sequences LVAR_INT sc3_seq1 sc3_missioncar_seq //decisions LVAR_INT sc3_dec //debug // ****************************************Mission Start************************************ mission_start_scrash3: CLEAR_THIS_PRINT M_FAIL flag_player_on_mission = 1 playing_scrash1 = 1 REGISTER_MISSION_GIVEN //LOAD_MISSION_TEXT wuzi1 //DO_FADE 0 FADE_IN //WAIT 0 // *************************************Set Flags/variables********************************* garage_saved = 0 sc3_alive = 1 sc3_driving = 0 sc3_warning = 0 sc3_flag = 0 sc3_vehicle_warning = 0 sc3_valet_cycle_fast = 0 sc3_player_in_car = 0 SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 LOAD_MISSION_TEXT VALET1 SET_FADING_COLOUR 0 0 0 TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME valet IF IS_PLAYER_WEARING Player1 CLOTHES_TEX_EXTRA1 valet GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 ENDIF //WAIT 0 //PRINT wz1_1 3000 1 SET_AREA_VISIBLE 1 //------------------REQUEST_MODELS ------------------------------ LOAD_CUTSCENE SCRASH1 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 SET_CHAR_HEADING scplayer 270.0 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT REQUEST_MODEL CHEETAH REQUEST_MODEL SWMYRI WHILE NOT HAS_MODEL_LOADED CHEETAH OR NOT HAS_MODEL_LOADED SWMYRI WAIT 0 ENDWHILE // ****************************************START OF CUTSCENE******************************** // ******************************************END OF CUTSCENE******************************** SET_CAR_DENSITY_MULTIPLIER 1.0 sc3_flag = 0 //GOTO blah //VIEW_INTEGER_VARIABLE sc3_missioncar sc3_missioncar IF sc3_flag = 20 ADD_BLIP_FOR_COORD -1748.4017 909.7514 23.8906 sc3_valet_blip ADD_BLIP_FOR_COORD -1748.4017 909.7514 23.8906 sc3_missioncar_blip ADD_BLIP_FOR_COORD -1748.4017 909.7514 23.8906 sc3_drug_plant_blip CREATE_CHAR PEDTYPE_MISSION1 wmyva 0.0 0.0 0.0 sc3_missionchar //IF checks_time_A = 99 CREATE_CHAR PEDTYPE_CIVMALE wmyva 0.0 0.0 0.0 valet[0] // CREATE_CHAR PEDTYPE_CIVMALE wmyva valet_la_x[valet_i] valet_la_y[valet_i] valet_la_z[valet_i] a_thief CREATE_CAR CHEETAH 0.0 0.0 0.0 valet_pickup_car // CREATE_CAR CHEETAH 0.0 0.0 0.0 valet_car[1] CREATE_CAR CHEETAH 0.0 0.0 0.0 drop_off_car // CREATE_CAR CHEETAH 0.0 0.0 0.0 valet_mission_car CREATE_CAR CHEETAH 0.0 0.0 0.0 sc3_missioncar // CREATE_CAR CHEETAH 0.0 0.0 0.0 mission_drop_off_car // CREATE_CAR CHEETAH 0.0 0.0 0.0 a_pickup_car // ADD_BLIP_FOR_CAR valet_pickup_car pickup_car_blip // ADD_BLIP_FOR_COORD target_x target_y target_z parking_space_blip // COPY_CHAR_DECISION_MAKER DM_PED_EMPTY valet_empty_dec // ADD_BLIP_FOR_COORD target_x target_y target_z drop_off_car_blip //ENDIF ENDIF ADD_BLIP_FOR_COORD -1748.4017 909.7514 23.8906 sc3_valet_blip WAIT 500 DO_FADE 1000 FADE_IN play_audio = 0 PRINT VAL_5 10000 1 // ~s~The D.A. is on his way to the ~y~Vank Hoff Hotel~s~ in downtown San Fierro. Get over there now. //VIEW_INTEGER_VARIABLE sc3_here_comes_the_prosecutor sc3_here_comes_the_prosecutor mission_scrash3_loop: WAIT 0 IF IS_WANTED_LEVEL_GREATER Player1 0 player_has_wanted_level = 1 ELSE player_has_wanted_level = 0 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOSUB cleanup_uniform GOTO mission_scrash3_passed ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_D SET_CHAR_COORDINATES scplayer -1755.0876 910.0911 23.8906 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_F SET_CHAR_COORDINATES scplayer -1712.6528 985.0446 16.5859 IF NOT IS_CHAR_DEAD valet[2] SET_CHAR_COORDINATES valet[2] -1700.7703 984.3545 16.5936 SET_CHAR_SUFFERS_CRITICAL_HITS valet[2] FALSE ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_G SET_CHAR_COORDINATES scplayer -1753.8409 960.2274 23.8828 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_H IF IS_CHAR_DEAD sc3_missionchar CREATE_CHAR PEDTYPE_CIVMALE SWMYRI -1611.4540 714.3873 12.4715 sc3_missionchar ENDIF // REQUEST_MODEL MERIT WHILE NOT HAS_MODEL_LOADED MERIT WAIT 0 ENDWHILE IF IS_CAR_DEAD sc3_missioncar CREATE_CAR MERIT -1753.9613 951.9568 23.7422 sc3_missioncar ENDIF IF NOT IS_CAR_DEAD sc3_missioncar SET_CAR_COORDINATES sc3_missioncar -1753.9613 951.9568 23.7422 SET_CAR_HEADING sc3_missioncar 90.0 ENDIF IF NOT IS_CHAR_DEAD sc3_missionchar // TASK_LEAVE_ANY_CAR sc3_missionchar da_left_car = 1 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_J IF NOT IS_CAR_DEAD sc3_missioncar SET_CAR_COORDINATES sc3_missioncar -2031.8279 179.5876 27.8359 SET_CAR_HEADING sc3_missioncar 90.0 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_K IF NOT IS_CAR_DEAD sc3_missioncar SET_CAR_COORDINATES sc3_missioncar -1779.7593 971.5197 23.7344 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_R sc3_flag = 10 sc3_cut_flag = 90 ENDIF IF sc3_uniform_given = 1 IF NOT IS_PLAYER_WEARING Player1 CLOTHES_TEX_EXTRA1 valet // GOSUB cleanup_uniform PRINT VAL_B1 4000 1 GOTO mission_scrash3_failed ENDIF ENDIF GOSUB scrash1_audio LVAR_INT scr_i scr_i = 0 IF sc3_flag > 1 WHILE scr_i < 2 IF valet_task[scr_I] = VALET_DEAD IF DOES_CHAR_EXIST valet[scr_i] GET_DEAD_CHAR_PICKUP_COORDS valet[scr_i] x y z IF x > -1760.1785 AND y > 972.2405 AND z > 16.1633 AND x < -1679.6055 AND y < 1064.2927 AND z < 24.8629 ELSE GOSUB cleanup_uniform PRINT VAL_9 3000 1 GOTO mission_scrash3_failed ENDIF ENDIF ENDIF scr_i ++ ENDWHILE ENDIF IF sc3_missioncar_alive = 1 IF sc3_missionchar_alive = 1 IF NOT IS_CAR_DEAD sc3_missioncar GET_CAR_BLOCKING_CAR sc3_missioncar a_car steal_this_car = a_car // IF IS_CHAR_DEAD a_thief // GET_CAR_COORDINATES sc3_missioncar x y z // GET_RANDOM_CHAR_IN_SPHERE x y z 20.0 TRUE FALSE FALSE a_thief // IF NOT IS_CHAR_DEAD a_thief // IF NOT IS_CHAR_IN_ANY_CAR a_thief // IF NOT IS_CHAR_DEAD a_thief // AND NOT IS_CAR_DEAD a_car // MARK_CHAR_AS_NO_LONGER_NEEDED a_thief // MARK_CAR_AS_NO_LONGER_NEEDED a_car // TASK_STEAL_CAR a_thief a_car // a_car = 0 // ENDIF // ENDIF // ENDIF LVAR_INT sc3_colour1 sc3_colour2 ENDIF ENDIF IF NOT IS_CAR_DEAD sc3_missioncar GET_CAR_COLOURS sc3_missioncar sc3_colour1 sc3_colour2 IF NOT sc3_colour1 = CARCOLOUR_MIDNIGHTBLUE OR NOT sc3_colour2 = CARCOLOUR_MIDNIGHTBLUE CLEAR_PRINTS GOSUB cleanup_uniform PRINT VAL_A35 4000 1 GOTO mission_scrash3_failed ENDIF ENDIF ENDIF IF sc3_flag = 0 sc3_flag = 1 sc3_mini_flag = 0 // when the player gets within range of the valets, they will remain idle until this variable is set to 2. // when set to 2, A car will be created specifically for the mission cut-scene. // valet_force_car_scene = 1 force_valet_on_mission = 1 SUPPRESS_CAR_MODEL MERIT ENDIF IF sc3_flag = 1 IF sc3_mini_flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1748.4017 909.7514 23.8906 3.0 3.0 3.0 TRUE SET_PLAYER_CONTROL Player1 OFF sc3_mini_flag = 1 ENDIF ENDIF IF sc3_mini_flag = 1 DO_FADE 1000 FADE_OUT REQUEST_MODEL ZR350 sc3_mini_flag = 2 ENDIF IF sc3_mini_flag = 2 IF NOT GET_FADING_STATUS AND HAS_MODEL_LOADED ZR350 DELETE_CHAR valet[0] DELETE_CHAR valet[1] DELETE_CHAR valet[2] valet_unlocked = 1 STREAM_SCRIPT valet.sc GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT valet.sc number_of_instances_of_streamed_script IF number_of_instances_of_streamed_script > 0 force_valet_cleanup = 1 WHILE number_of_instances_of_streamed_script > 0 WAIT 0 GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT valet.sc number_of_instances_of_streamed_script ENDWHILE force_valet_cleanup = 0 ENDIF WHILE NOT HAS_STREAMED_SCRIPT_LOADED valet.sc WAIT 0 ENDWHILE START_NEW_STREAMED_SCRIPT valet.sc force_valet_on_mission = 2 freeze_creating_drop_off_cars = 1 SWITCH_PED_ROADS_OFF -1729.5487 942.8860 40.3585 -1742.7734 937.7814 10.1928 SWITCH_PED_ROADS_OFF -1768.5243 938.8870 40.7496 -1780.7653 943.4574 10.0929 LVAR_INT car_for_valet char_for_valet CLEAR_AREA -1722.6754 935.2790 23.7500 55.0 FALSE CREATE_CAR ZR350 -1736.9607 946.0503 23.7487 car_for_Valet SET_CAR_CAN_GO_AGAINST_TRAFFIC car_for_Valet FALSE SET_CAR_HEADING car_for_Valet 19.0 CREATE_RANDOM_CHAR_AS_DRIVER car_for_valet char_for_valet MARK_CHAR_AS_NO_LONGER_NEEDED char_for_valet MARK_CAR_AS_NO_LONGER_NEEDED car_for_valet MARK_MODEL_AS_NO_LONGER_NEEDED ZR350 IF NOT IS_CAR_DEAD car_for_valet OPEN_SEQUENCE_TASK sc3_seq1 TASK_CAR_DRIVE_TO_COORD -1 car_for_valet -1753.9678 952.9821 23.7500 15.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH TASK_LEAVE_CAR -1 car_for_valet TASK_SAY -1 CONTEXT_GLOBAL_VALET_PARK_CAR TASK_WANDER_STANDARD -1 CLOSE_SEQUENCE_TASK sc3_seq1 PERFORM_SEQUENCE_TASK char_for_Valet sc3_seq1 CLEAR_SEQUENCE_TASK sc3_seq1 ENDIF REMOVE_BLIP sc3_valet_blip SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION -1763.4816 959.9526 25.8866 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1762.6008 959.5414 25.6518 JUMP_CUT sc3_mini_flag = 3 sc3_cut_time = TIMERA + 3000 ENDIF ENDIF IF sc3_mini_flag = 3 IF valet_task[0] = WAITING_FOR_CAR AND valet_task[1] = WAITING_FOR_CAR AND valet_task[2] = WAITING_FOR_CAR valet_task[0] = CHATTING valet_task[1] = CHATTING sc3_cut_time = TIMERA + 700 sc3_mini_flag = 4 ENDIF IF TIMERA > sc3_cut_time valet_task[0] = CHATTING valet_task[1] = CHATTING sc3_cut_time = TIMERA + 700 sc3_mini_flag = 4 ENDIF ENDIF IF sc3_mini_flag = 4 IF TIMERA > sc3_cut_time DO_FADE 700 FADE_IN sc3_mini_flag = 5 ENDIF ENDIF IF sc3_mini_flag = 5 IF NOT GET_FADING_STATUS PRINT_NOW VAL_6 6000 1 sc3_cut_time = TIMERA + 6000 sc3_mini_flag = 6 ENDIF ENDIF IF sc3_mini_flag = 6 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED sc3_mini_flag = 7 ENDIF IF TIMERA > sc3_cut_time sc3_mini_flag = 7 ENDIF ENDIF IF sc3_mini_flag = 7 IF NOT IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_COORDINATES scplayer -1747.1979 909.9226 23.8906 SET_CHAR_HEADING scplayer 5.6727 ELSE GET_CAR_CHAR_IS_USING scplayer a_car IF NOT IS_CAR_DEAD a_car SET_CAR_HEADING a_car 0.0 ENDIF ENDIF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL Player1 ON PRINT_NOW VAL_A25 6000 1 sc3_flag = 2 dont_clear_valets = 1 // valet_uniform_dropped = 0 IF NOT IS_CHAR_DEAD valet[2] ADD_BLIP_FOR_CHAR valet[2] sc3_blip[2] IF NOT IS_CAR_DEAD car_for_Valet IF NOT IS_CHAR_IN_CAR valet[2] car_for_valet IF NOT IS_CHAR_DEAD char_for_valet DELETE_CHAR char_for_valet WARP_CHAR_INTO_CAR valet[2] car_for_valet GET_PARKING_NODE_IN_AREA -1760.1785 972.2405 16.1633 -1679.6055 1064.2927 24.8629 x y z parking_x = x parking_y = y parking_z = z TASK_CAR_DRIVE_TO_COORD valet[2] car_for_Valet x y z 15.0 MODE_ACCURATE 0 DRIVINGMODE_STOPFORCARS valet_task[2] = DRIVE_TO_CAR_PARK // valet_last_task[2] = PICKING_UP_CAR ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF sc3_flag = 2 IF last_player_wanted_level = 0 AND player_has_wanted_level = 1 PRINT VAL_B3 5000 1 // the cops are on to you. Clear the heat before killing the valet ENDIF IF player_has_wanted_level = 1 GET_CHAR_COORDINATES scplayer x y z IF x > -1760.1785 AND y > 972.2405 AND z > 16.1633 AND x < -1679.6055 AND y < 1064.2927 AND z < 24.8629 CLEAR_PRINTS PRINT VAL_B4 5000 1 // The cops saw you entering the car park. GOTO mission_scrash3_failed ENDIF ENDIF last_player_wanted_level = player_has_wanted_level IF DOES_CHAR_EXIST valet[2] LVAR_INT player_has_wanted_level last_player_wanted_level IF NOT IS_CHAR_DEAD valet[2] GET_CHAR_COORDINATES valet[2] x y z IF valet_task[2] = WAITING_FOR_CAR IF drop_off_car = 0 force_a_one_off_car = 1 ENDIF ENDIF IF tell_player_to_kill_valet = 0 IF player_has_wanted_level = 0 IF x > -1760.1785 AND y > 972.2405 AND z > 16.1633 AND x < -1679.6055 AND y < 1064.2927 AND z < 24.8629 PRINT VAL_A22 5000 1 // take out the valet now while no one is watching. tell_player_to_kill_valet = 1 SET_WANTED_MULTIPLIER -1.0 ENDIF ENDIF ELSE IF x < -1760.1785 OR y < 972.2405 OR z < 16.1633 OR x > -1679.6055 OR y > 1064.2927 OR z > 24.8629 PRINT VAL_A23 4000 1 // the valet's leaving the car park. PRINT VAL_A24 5000 1 // Kill him when he gets back down with another car. tell_player_to_kill_valet = 0 SET_WANTED_MULTIPLIER 1.0 ENDIF ENDIF ENDIF LVAR_FLOAT pu_x pu_y pu_z IF IS_CHAR_DEAD valet[2] REMOVE_BLIP sc3_blip[2] GET_DEAD_CHAR_PICKUP_COORDS valet[2] pu_x pu_y pu_z SET_WANTED_MULTIPLIER 1.0 IF pu_x > -1760.1785 AND pu_y > 972.2405 AND pu_z > 16.1633 AND pu_x < -1679.6055 AND pu_y < 1064.2927 AND pu_z < 24.8629 // CREATE_CLOTHES_PICKUP pu_x pu_y pu_z Valet val_uniform_pickup CREATE_PICKUP clothesp PICKUP_ONCE pu_x pu_y pu_z val_uniform_pickup ADD_BLIP_FOR_PICKUP val_uniform_pickup val_uniform_blip PRINT_NOW VAL_8 5000 1 // Pick up the ~g~valet's uniform. sc3_flag = 3 ELSE REMOVE_BLIP sc3_blip[0] REMOVE_BLIP sc3_blip[1] REMOVE_BLIP sc3_blip[2] CLEAR_PRINTS GOSUB cleanup_uniform PRINT_NOW VAL_9 5000 1 GOTO mission_scrash3_failed ENDIF ENDIF ENDIF ENDIF IF sc3_flag = 3 IF HAS_PICKUP_BEEN_COLLECTED val_uniform_pickup // IF valet_uniform_dropped = 3 head_missing = 1 SET_MUSIC_DOES_FADE FALSE DO_FADE 1000 FADE_OUT REMOVE_PICKUP val_uniform_pickup REMOVE_BLIP val_uniform_blip REQUEST_MODEL WMYVA2 sc3_flag = 41 sc3_cut_time = TIMERA + 2000 LVAR_INT play_dressing_sound play_dressing_sound = 0 ENDIF ENDIF IF sc3_flag = 41 IF NOT GET_FADING_STATUS IF play_dressing_sound = 0 effect_to_play[0] = SOUND_DRESSING effect_time_to_play[0] = TIMERA + 500 play_dressing_sound = 1 ENDIF IF HAS_MODEL_LOADED WMYVA2 IF DOES_CHAR_EXIST valet[2] GET_DEAD_CHAR_COORDINATES valet[2] pu_x pu_y pu_z GET_DEAD_CHAR_PICKUP_COORDS valet[2] pu_x pu_y pu_z IF IS_CHAR_HEAD_MISSING valet[2] LVAR_INT head_missing head_missing = 1 ENDIF DELETE_CHAR valet[2] ENDIF LVAR_INT valet_dead_name CREATE_CHAR PEDTYPE_CIVMALE WMYVA2 pu_x pu_y pu_z valet_dead_name // SET_CHAR_COLLISION valet_dead_name FALSE SET_CHAR_COORDINATES valet_dead_name pu_x pu_y pu_z // FREEZE_CHAR_POSITION valet_dead_name TRUE MARK_CHAR_AS_NO_LONGER_NEEDED valet_dead_name SHUT_CHAR_UP valet_dead_name TRUE IF head_missing = 1 EXPLODE_CHAR_HEAD valet_dead_name ENDIF TASK_DIE valet_dead_name SET_PLAYER_CONTROL player1 OFF GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP Player1 valet valet CLOTHES_TEX_EXTRA1 sc3_uniform_given = 1 BUILD_PLAYER_MODEL player1 SET_PLAYER_CONTROL player1 ON sc3_cut_time = TIMERA + 700 sc3_flag = 40 ENDIF ENDIF ENDIF IF sc3_uniform_given = 1 IF player_has_wanted_level = 1 CLEAR_PRINTS GOSUB cleanup_uniform PRINT_NOW VAL_B5 5000 1 GOTO mission_scrash3_failed ENDIF ENDIF IF sc3_flag = 40 IF TIMERA > sc3_cut_time IF effect_to_play[0] = 0 // IF NOT IS_CHAR_DEAD valet[2] // SET_CHAR_SUFFERS_CRITICAL_HITS valet[2] FALSE // ENDIF DO_FADE 600 FADE_IN sc3_flag = 42 ENDIF ENDIF ENDIF IF sc3_flag = 42 IF NOT GET_FADING_STATUS SET_MUSIC_DOES_FADE TRUE // valet_scene_created = 0 CLEAR_PRINTS PRINT_NOW VAL_A32 5000 1 REMOVE_BLIP sc3_valet_blip ADD_BLIP_FOR_COORD -1759.0265 960.4122 23.8905 sc3_valet_blip sc3_flag = 4 ENDIF ENDIF IF sc3_flag = 4 LVAR_INT its_the_new_guy IF its_the_new_guy = 0 IF LOCATE_CHAR_ON_FOOT_3D scplayer -1759.0265 960.4122 23.8905 10.0 10.0 10.0 FALSE its_the_new_guy = 1 play_audio = 13 // PRINT VAL_A26 4000 1 ENDIF ENDIF IF LOCATE_CHAR_ON_FOOT_3D scplayer -1757.0537 960.1191 23.8906 2.0 2.0 2.0 TRUE sc3_flag = 5 sc3_cut_flag = 0 ENDIF ENDIF // cutscene showing prosecutor and his car IF sc3_flag = 5 IF sc3_cut_flag = 0 DO_FADE 1000 FADE_OUT REQUEST_MODEL MERIT REQUEST_MODEL BUFFALO REQUEST_CAR_RECORDING 155 sc3_cut_flag = 1 ENDIF IF sc3_cut_flag = 1 IF NOT GET_FADING_STATUS SET_PLAYER_CONTROL Player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION -1584.3715 727.5854 28.9622 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1585.1138 727.2239 28.3981 JUMP_CUT REQUEST_COLLISION -1585.1138 727.2239 LOAD_SCENE_IN_DIRECTION -1584.3715 727.5854 28.9622 270.0 sc3_cut_flag = 2 sc3_cut_time = TIMERA + 1000 ENDIF ENDIF IF sc3_cut_flag = 2 IF HAS_MODEL_LOADED MERIT AND HAS_CAR_RECORDING_BEEN_LOADED 155 REMOVE_BLIP sc3_valet_blip sc3_cut_flag = 3 ENDIF ENDIF IF sc3_cut_flag = 3 IF TIMERA > sc3_cut_time AND HAS_MODEL_LOADED BUFFALO AND HAS_MODEL_LOADED MERIT // SWITCH_ROADS_OFF 2793.8140 -1987.9346 15.3045 2754.3240 -1900.3694 9.8752 // CLEAR_AREA_OF_CARS 2793.8140 -1987.9346 15.3045 2754.3240 -1900.3694 9.8752 SET_FIXED_CAMERA_POSITION -1621.4814 738.7783 14.2930 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1620.6378 738.2501 14.3895 JUMP_CUT CREATE_CAR MERIT -1611.3792 725.2400 11.8774 sc3_missioncar CHANGE_CAR_COLOUR sc3_missioncar CARCOLOUR_MIDNIGHTBLUE CARCOLOUR_MIDNIGHTBLUE START_PLAYBACK_RECORDED_CAR sc3_missioncar 155 // CHANGE_GARAGE_TYPE hbgdSFS GARAGE_MISSION SET_CAR_CAN_GO_AGAINST_TRAFFIC sc3_missioncar FALSE LVAR_INT sc3_randomchar CREATE_CHAR PEDTYPE_CIVMALE SWMYRI -1611.4540 714.3873 12.4715 sc3_missionchar SET_CHAR_HEALTH sc3_missionchar 200 SET_CHAR_MAX_HEALTH sc3_missionchar 200 SET_CHAR_HEADING sc3_missionchar 0.0 OPEN_SEQUENCE_TASK sc3_seq1 IF NOT IS_CAR_DEAD sc3_missioncar TASK_GO_STRAIGHT_TO_COORD -1 -1611.5964 723.0802 12.2361 PEDMOVE_WALK -2 TASK_ENTER_CAR_AS_DRIVER -1 sc3_missioncar -2 ENDIF CLOSE_SEQUENCE_TASK sc3_seq1 PERFORM_SEQUENCE_TASK sc3_missionchar sc3_seq1 CLEAR_SEQUENCE_TASK sc3_seq1 CLEAR_AREA -1779.8044 915.7557 23.7487 25.0 FALSE CREATE_CAR BUFFALO -1779.8044 915.7557 23.7487 car_for_Valet SET_CAR_CAN_GO_AGAINST_TRAFFIC car_for_Valet FALSE SET_CAR_HEADING car_for_Valet 270.0 CREATE_RANDOM_CHAR_AS_DRIVER car_for_valet char_for_valet MARK_CHAR_AS_NO_LONGER_NEEDED char_for_valet MARK_CAR_AS_NO_LONGER_NEEDED car_for_valet MARK_MODEL_AS_NO_LONGER_NEEDED BUFFALO IF NOT IS_CAR_DEAD car_for_Valet OPEN_SEQUENCE_TASK sc3_seq1 TASK_CAR_DRIVE_TO_COORD -1 car_for_valet -1753.9678 952.9821 23.7500 15.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH TASK_LEAVE_CAR -1 car_for_valet TASK_SAY -1 CONTEXT_GLOBAL_VALET_PARK_CAR TASK_WANDER_STANDARD -1 CLOSE_SEQUENCE_TASK sc3_seq1 PERFORM_SEQUENCE_TASK char_for_Valet sc3_seq1 CLEAR_SEQUENCE_TASK sc3_seq1 ENDIF DO_FADE 1000 FADE_IN sc3_cut_flag = 4 ELSE REQUEST_MODEL BUFFALO REQUEST_MODEL MERIT ENDIF ENDIF IF sc3_cut_flag = 4 IF NOT GET_FADING_STATUS SKIP_CUTSCENE_START PRINT_NOW VAL_12 4000 1 PRINT VAL_13 4000 1 LVAR_INT sc3_change_cut_time sc3_cut_time = TIMERA + 3500 sc3_cut_flag = 5 ENDIF ENDIF IF sc3_cut_flag = 5 IF TIMERA > sc3_cut_time // SET_FIXED_CAMERA_POSITION -1621.4814 738.7783 14.2930 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -1620.6378 738.2501 14.3895 JUMP_CUT // SET_FIXED_CAMERA_POSITION -1607.1012 722.6023 12.4166 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -1607.9513 723.1281 12.3872 JUMP_CUT sc3_cut_flag = 6 ENDIF ENDIF IF sc3_cut_flag = 6 IF NOT IS_CHAR_DEAD sc3_missionchar IF IS_CHAR_IN_ANY_CAR sc3_missionchar STOP_PLAYBACK_RECORDED_CAR sc3_missioncar IF NOT IS_CHAR_DEAD sc3_missionchar AND NOT IS_CAR_DEAD sc3_missioncar OPEN_SEQUENCE_TASK sc3_seq1 TASK_PAUSE -1 800 TASK_CAR_DRIVE_TO_COORD -1 sc3_missioncar -1571.4248 725.7955 6.0391 7.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH CLOSE_SEQUENCE_TASK sc3_seq1 PERFORM_SEQUENCE_TASK sc3_missionchar sc3_seq1 CLEAR_SEQUENCE_TASK sc3_seq1 ENDIF sc3_cut_flag = 7 sc3_cut_time = TIMERA + 2000 ENDIF ENDIF ENDIF IF sc3_cut_flag = 7 IF TIMERA > sc3_cut_time SET_FIXED_CAMERA_POSITION -1587.9736 725.1835 7.7383 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1588.8909 725.1658 8.1361 JUMP_CUT sc3_cut_flag = 8 sc3_cut_time = TIMERA + 3000 ENDIF ENDIF IF sc3_cut_flag = 8 IF TIMERA > sc3_cut_time SKIP_CUTSCENE_END DO_FADE 900 FADE_OUT sc3_cut_flag = 9 ENDIF ENDIF IF sc3_cut_flag = 9 IF NOT GET_FADING_STATUS REMOVE_CAR_RECORDING 155 SWITCH_ROADS_ON 2793.8140 -1987.9346 15.3045 2754.3240 -1900.3694 9.8752 IF NOT IS_CAR_DEAD sc3_missioncar AND NOT IS_CHAR_DEAD sc3_missionchar IF IS_PLAYBACK_GOING_ON_FOR_CAR sc3_missioncar STOP_PLAYBACK_RECORDED_CAR sc3_missioncar DELETE_CAR sc3_missioncar DELETE_CHAR sc3_missionchar ENDIF ENDIF SET_CHAR_COORDINATES scplayer -1759.6311 960.4594 23.8905 SET_CHAR_HEADING scplayer 194.1832 REQUEST_COLLISION -1748.4017 909.7514 LOAD_SCENE -1748.4017 909.7514 23.8906 sc3_cut_time = TIMERA + 1000 sc3_cut_flag = 10 // valet_scene_created = 0 ENDIF ENDIF IF sc3_cut_flag = 10 IF TIMERA > sc3_cut_time DO_FADE 900 FADE_IN SET_PLAYER_CONTROL Player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF CLEAR_PRINTS PRINT VAL_A27 7000 1 valet_task[0] = WAITING_FOR_CAR valet_task[1] = WAITING_FOR_CAR GENERATE_RANDOM_INT_IN_RANGE 1 3 force_a_one_off_Car sc3_here_comes_the_prosecutor = 1 // force_a_one_off_car = 1 sc3_flag = 6 ENDIF ENDIF ENDIF IF sc3_missioncar_alive = 1 IF IS_CAR_DEAD sc3_missioncar CLEAR_PRINTS GOSUB cleanup_uniform PRINT VAL_40 4000 1 GOTO mission_scrash3_failed ENDIF ENDIF LVAR_INT sc3_task_Status da_left_car create_the_prosecutor // VIEW_INTEGER_VARIABLE drop_off_Car drop_off_car // VIEW_INTEGER_VARIABLE force_a_one_off_car force_a_one_off_car // VIEW_INTEGER_VARIABLE create_drop_off_car_now create_drop_off_car_now // VIEW_INTEGER_VARIABLE sc3_here_comes_the_prosecutor sc3_here_comes_the_prosecutor // VIEW_INTEGER_VARIABLE create_the_prosecutor create_the_prosecutor IF sc3_here_comes_the_prosecutor = 1 IF NOT create_the_prosecutor = 2 IF NOT valet_task[0] = WAITING_FOR_CAR AND NOT valet_task[1] = WAITING_FOR_CAR force_a_one_off_car = 0 ENDIF IF sc3_here_comes_the_prosecutor = 1 IF force_a_one_off_car = 0 IF create_drop_off_car_now = 0 IF drop_off_Car = 0 IF create_the_prosecutor = 0 IF NOT IS_POINT_ON_SCREEN -1709.8862 899.3372 23.7422 5.0 IF NOT IS_CHAR_IN_AREA_3D scplayer -1709.8862 899.3372 23.7422 20.0 20.0 20.0 FALSE CLEAR_AREA -1709.8862 899.3372 23.7422 5.0 FALSE CREATE_CAR MERIT -1611.3792 725.2400 11.8774 sc3_missioncar SET_CAR_HEADING sc3_missioncar 0.0 create_the_prosecutor = 1 ENDIF ENDIF ENDIF IF create_the_prosecutor = 0 IF NOT IS_POINT_ON_SCREEN -1674.7253 933.5232 23.7365 5.0 IF NOT IS_CHAR_IN_AREA_3D scplayer -1674.7253 933.5232 23.7365 20.0 20.0 20.0 FALSE CLEAR_AREA -1674.7253 933.5232 23.7365 5.0 FALSE CREATE_CAR MERIT -1674.7253 933.5232 23.7365 sc3_missioncar SET_CAR_HEADING sc3_missioncar 90.0 create_the_prosecutor = 1 ENDIF ENDIF ENDIF IF create_the_prosecutor = 0 IF NOT IS_POINT_ON_SCREEN -1791.1580 877.2700 23.7500 5.0 IF NOT IS_CHAR_IN_AREA_3D scplayer -1791.1580 877.2700 23.7500 20.0 20.0 20.0 FALSE CLEAR_AREA -1791.1580 877.2700 23.7500 5.0 FALSE CREATE_CAR MERIT -1791.1580 877.2700 23.7500 sc3_missioncar SET_CAR_HEADING sc3_missioncar 0.0 create_the_prosecutor = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF create_the_prosecutor = 1 IF NOT IS_CAR_DEAD sc3_missioncar CHANGE_CAR_COLOUR sc3_missioncar CARCOLOUR_MIDNIGHTBLUE CARCOLOUR_MIDNIGHTBLUE // CHANGE_GARAGE_TYPE hbgdSFS GARAGE_MISSION SET_CAR_CAN_GO_AGAINST_TRAFFIC sc3_missioncar FALSE CREATE_CHAR PEDTYPE_CIVMALE SWMYRI -1611.4540 714.3873 12.4715 sc3_missionchar SET_CHAR_HEALTH sc3_missionchar 200 SET_CHAR_MAX_HEALTH sc3_missionchar 200 IF NOT IS_CHAR_IN_ANY_CAR sc3_missionchar CLEAR_CHAR_TASKS_IMMEDIATELY sc3_missionchar WARP_CHAR_INTO_CAR sc3_missionchar sc3_missioncar ENDIF IF NOT IS_CAR_DEAD sc3_missioncar OPEN_SEQUENCE_TASK sc3_seq1 TASK_PAUSE -1 10000 TASK_CAR_DRIVE_TO_COORD -1 sc3_missioncar -1758.8767 952.7440 23.7487 15.0 MODE_NORMAL FALSE DRIVINGMODE_STOPFORCARS TASK_LEAVE_CAR -1 sc3_missioncar TASK_SAY -1 CONTEXT_GLOBAL_VALET_PARK_CAR TASK_WANDER_STANDARD -1 CLOSE_SEQUENCE_TASK sc3_seq1 PERFORM_SEQUENCE_TASK sc3_missionchar sc3_seq1 CLEAR_SEQUENCE_TASK sc3_seq1 ENDIF sc3_missionchar_alive = 1 sc3_missioncar_alive = 1 create_the_prosecutor = 2 ENDIF ENDIF ENDIF ENDIF ENDIF IF sc3_missionchar_alive = 1 IF NOT IS_CHAR_DEAD sc3_missionchar IF IS_CHAR_IN_CAR sc3_missionchar sc3_missioncar GET_SCRIPT_TASK_STATUS sc3_missionchar PERFORM_SEQUENCE_TASK sc3_task_status IF sc3_task_Status = PERFORMING_TASK GET_SEQUENCE_PROGRESS sc3_missionchar sc3_task_status IF sc3_task_Status = 2 da_left_car = 1 ENDIF ENDIF ELSE IF NOT da_left_car = 1 // CLEAR_PRINTS GOSUB cleanup_uniform PRINT VAL_A1 4000 1 GOTO mission_scrash3_failed ENDIF ENDIF ENDIF IF IS_CHAR_DEAD sc3_missionchar CLEAR_PRINTS GOSUB cleanup_uniform PRINT VAL_34 4000 1 GOTO mission_scrash3_failed ENDIF ENDIF IF sc3_flag > 6 IF NOT IS_CHAR_DEAD sc3_missionchar IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sc3_missionchar 80.0 80.0 FALSE DELETE_CHAR sc3_missionchar sc3_missionchar_alive = 0 ENDIF ENDIF ENDIF IF sc3_flag > 5 IF valet_picked_up_prosecutors_car = 0 AND valet_taking_car_to_da = 0 IF NOT IS_CAR_DEAD sc3_missioncar GET_DRIVER_OF_CAR sc3_missioncar sc3_var3 IF NOT sc3_var3 = sc3_missionchar AND NOT sc3_var3 = scplayer AND NOT sc3_var3 = -1 PRINT VAL_A28 4000 1 REMOVE_BLIP sc3_missioncar_blip ADD_BLIP_FOR_CAR sc3_missioncar sc3_missioncar_blip REMOVE_BLIP sc3_valet_blip sc3_here_comes_the_prosecutor = 0 valet_picked_up_prosecutors_car = 1 valet_parking_x = parking_x valet_parking_y = parking_y valet_parking_z = parking_z // VIEW_INTEGER_VARIABLE valet_picked_up_prosecutors_car valet_picked_up_prosecutors_car LVAR_INT valet_picked_up_prosecutors_car LVAR_FLOAT valet_parking_x valet_parking_y valet_parking_z ENDIF ENDIF ENDIF ENDIF IF valet_picked_up_prosecutors_car = 1 IF NOT IS_CAR_DEAD sc3_missioncar IF LOCATE_CAR_3D sc3_missioncar valet_parking_x valet_parking_y valet_parking_z 4.0 4.0 4.0 FALSE GOSUB cleanup_uniform PRINT VAL_A29 4000 1 GOTO mission_scrash3_failed ENDIF IF IS_CHAR_IN_CAR scplayer sc3_missioncar valet_picked_up_prosecutors_car = 2 REMOVE_BLIP sc3_missioncar_blip ENDIF ENDIF ENDIF // player is waiting for Prosecutor's car IF sc3_flag = 6 // If player strays too far from the valet area... IF sc3_here_comes_the_prosecutor = 1 IF sc3_player_straying = 0 IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer -1759.0265 960.4122 23.8905 15.0 15.0 15.0 FALSE CLEAR_PRINTS IF NOT IS_CHAR_DEAD valet[1] OR NOT IS_CHAR_DEAD valet[0] PRINT_NOW VAL_49 5000 1 ENDIF REMOVE_BLIP sc3_valet_blip ADD_BLIP_FOR_COORD -1759.0265 960.4122 23.8905 sc3_valet_blip sc3_player_straying = 1 ENDIF ENDIF IF sc3_player_straying = 1 IF LOCATE_CHAR_ON_FOOT_3D scplayer -1759.0265 960.4122 23.8905 2.0 2.0 2.0 TRUE REMOVE_BLIP sc3_valet_blip sc3_player_straying = 0 ENDIF ENDIF ENDIF IF sc3_here_comes_the_prosecutor = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1759.0265 960.4122 23.8905 15.0 15.0 15.0 FALSE IF NOT IS_CAR_DEAD sc3_missioncar IF LOCATE_CAR_3D sc3_missioncar -1757.9069 952.8868 25.9104 20.0 20.0 15.0 FALSE IF NOT IS_CHAR_DEAD sc3_missionchar IF IS_CHAR_IN_CAR sc3_missionchar sc3_missioncar IF NOT IS_CHAR_DEAD valet[1] IF LOCATE_CHAR_ANY_MEANS_3D valet[1] -1759.0265 960.4122 23.8905 10.0 10.0 10.0 FALSE sc3_here_comes_the_prosecutor = 2 ENDIF ENDIF IF NOT IS_CHAR_DEAD valet[0] IF LOCATE_CHAR_ANY_MEANS_3D valet[0] -1759.0265 960.4122 23.8905 10.0 10.0 10.0 FALSE sc3_here_comes_the_prosecutor = 2 ENDIF ENDIF REMOVE_BLIP sc3_valet_blip ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF sc3_here_comes_the_prosecutor = 2 sc3_here_comes_the_prosecutor = 3 CLEAR_PRINTS play_audio = 14 ENDIF IF da_left_car = 1 GET_CAR_CHAR_IS_USING scplayer sc3_var1 IF NOT IS_CHAR_DEAD sc3_missionchar GET_CAR_CHAR_IS_USING sc3_missionchar sc3_var2 IF NOT sc3_var1 = sc3_var2 IF NOT IS_CAR_DEAD sc3_missioncar IF IS_CHAR_IN_CAR scplayer sc3_missioncar CLEAR_PRINTS PRINT VAL_15 7000 1 sc3_flag = 7 REMOVE_BLIP sc3_valet_blip REMOVE_BLIP sc3_drug_plant_blip ADD_BLIP_FOR_COORD -2045.2523 178.7994 27.8359 sc3_drug_plant_blip SET_CAR_HEALTH sc3_missioncar 1000 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF sc3_flag > 6 IF sc3_flag < 10 OR sc3_flag = 13 OR sc3_flag = 20 LVAR_INT valet_taking_car_to_da IF NOT valet_taking_car_to_da = 1 IF NOT IS_CAR_DEAD sc3_missioncar IF NOT IS_CHAR_IN_CAR scplayer sc3_missioncar IF sc3_player_in_car = 1 sc3_player_in_car = 0 REMOVE_BLIP sc3_missioncar_blip ADD_BLIP_FOR_CAR sc3_missioncar sc3_missioncar_blip SET_BLIP_AS_FRIENDLY sc3_missioncar_blip TRUE CHANGE_BLIP_DISPLAY sc3_drug_plant_blip NEITHER CLEAR_PRINTS PRINT VAL_29 5000 1 ENDIF ENDIF IF IS_CHAR_IN_CAR scplayer sc3_missioncar IF sc3_player_in_car = 0 sc3_player_in_car = 1 REMOVE_BLIP sc3_missioncar_blip CHANGE_BLIP_DISPLAY sc3_drug_plant_blip BLIP_ONLY ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // player arrives at hub IF sc3_flag = 7 // IF LOCATE_STOPPED_CHAR_IN_CAR_3D scplayer -2179.1973 715.6656 52.9098 3.0 3.0 3.0 TRUE IF LOCATE_CHAR_IN_CAR_3D scplayer -2033.6256 178.8560 27.8359 3.0 3.0 3.0 TRUE IF NOT IS_CAR_DEAD sc3_missioncar IF IS_CHAR_IN_CAR scplayer sc3_missioncar REMOVE_BLIP sc3_drug_plant_blip ADD_BLIP_FOR_COORD -2045.9474 178.5964 28.1397 sc3_drug_plant_blip CHANGE_BLIP_DISPLAY sc3_drug_plant_blip BLIP_ONLY CLEAR_PRINTS OPEN_GARAGE hbgdSFS sc3_flag = 80 ENDIF ENDIF ENDIF ENDIF IF sc3_flag = 80 IF NOT IS_CAR_DEAD sc3_missioncar SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION -2038.0552 186.7164 31.0085 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2037.7037 185.8301 30.7068 JUMP_CUT SET_CAR_COORDINATES sc3_missioncar -2033.6256 178.8560 27.8359 SET_CAR_HEADING sc3_missioncar 90.0 OPEN_SEQUENCE_TASK sc3_sequence TASK_PAUSE -1 1000 TASK_CAR_DRIVE_TO_COORD -1 sc3_missioncar -2047.5168 178.5924 27.8359 7.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH TASK_LEAVE_ANY_CAR -1 CLOSE_SEQUENCE_TASK sc3_sequence PERFORM_SEQUENCE_TASK scplayer sc3_sequence CLEAR_SEQUENCE_TASK sc3_sequence sc3_flag = 81 ENDIF ENDIF IF sc3_flag = 81 GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK sc3_task_status IF sc3_Task_Status = FINISHED_TASK DO_FADE 700 FADE_OUT sc3_flag = 82 ENDIF ENDIF IF sc3_flag = 82 IF NOT GET_FADING_STATUS CLOSE_GARAGE hbgdSFS sc3_cut_time = TIMERA + 1000 sc3_flag = 83 ENDIF ENDIF IF sc3_flag = 83 IF TIMERA > sc3_cut_time IF IS_GARAGE_CLOSED hbgdSFS CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF NOT IS_CAR_DEAD sc3_missioncar GET_CAR_COORDINATES sc3_missioncar sc3_x sc3_y sc3_z GET_CAR_HEADING sc3_missioncar sc3_h GET_CAR_COLOURS sc3_missioncar sc3_col1 sc3_col2 DELETE_CAR sc3_missioncar ENDIF REQUEST_MODEL MERIT WHILE NOT HAS_MODEL_LOADED MERIT WAIT 0 ENDWHILE CREATE_CAR MERIT -2031.5023 178.6435 27.8516 sc3_missioncar CHANGE_CAR_COLOUR sc3_missioncar sc3_col1 sc3_col2 SET_CAR_HEADING sc3_missioncar 270.0 IF NOT IS_CAR_DEAD sc3_missioncar WARP_CHAR_INTO_CAR scplayer sc3_missioncar ENDIF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF DO_FADE 500 FADE_IN REMOVE_BLIP sc3_drug_plant_blip ADD_BLIP_FOR_COORD -1780.0695 970.9553 23.7500 sc3_drug_plant_blip CHANGE_BLIP_DISPLAY sc3_drug_plant_blip BLIP_ONLY sc3_flag = 8 CLEAR_PRINTS PRINT VAL_20 5000 1 // ~s~The drugs are planted. Take the car to the valet's ~y~car park~s~. PRINT VAL_A31 5000 1 SET_PLAYER_CONTROL player1 ON // Don't reset the timer just because they went back to the garage to fix the car. IF timer_running = 0 sc3_countdown = 150000 //was 3 minutes DISPLAY_ONSCREEN_TIMER_WITH_STRING sc3_countdown TIMER_DOWN VAL_21 timer_running = 1 ENDIF IF garage_saved = 0 CHECKPOINT_SAVE 99 garage_saved = 1 ENDIF ENDIF ENDIF ENDIF IF sc3_flag = 20 IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer -2037.2389 179.5294 28.316 10.0 10.0 10.0 FALSE sc3_flag = 7 REMOVE_BLIP sc3_drug_plant_blip ADD_BLIP_FOR_COORD -2033.6256 178.8560 27.8359 sc3_drug_plant_blip CLEAR_PRINTS PRINT VAL_51 5000 1 ENDIF IF LOCATE_CHAR_IN_CAR_3D scplayer -2045.9474 178.5964 28.1397 4.0 4.0 4.0 TRUE IF NOT IS_CAR_DEAD sc3_missioncar IF IS_CHAR_IN_CAR scplayer sc3_missioncar SET_PLAYER_CONTROL player1 OFF TASK_CAR_TEMP_ACTION scplayer sc3_missioncar TEMPACT_HANDBRAKESTRAIGHT 2000000 IF NOT IS_CAR_DEAD sc3_missioncar IF IS_CHAR_IN_CAR scplayer sc3_missioncar DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF NOT IS_CAR_DEAD sc3_missioncar GET_CAR_COORDINATES sc3_missioncar sc3_x sc3_y sc3_z GET_CAR_HEADING sc3_missioncar sc3_h GET_CAR_COLOURS sc3_missioncar sc3_col1 sc3_col2 DELETE_CAR sc3_missioncar ENDIF REQUEST_MODEL MERIT WHILE NOT HAS_MODEL_LOADED MERIT WAIT 0 ENDWHILE CREATE_CAR MERIT -2031.5023 178.6435 27.8516 sc3_missioncar CHANGE_CAR_COLOUR sc3_missioncar sc3_col1 sc3_col2 SET_CAR_HEADING sc3_missioncar 270.0 SET_TARGET_CAR_FOR_MISSION_GARAGE hbgdSFS sc3_missioncar IF NOT IS_CAR_DEAD sc3_missioncar WARP_CHAR_INTO_CAR scplayer sc3_missioncar ENDIF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT WAIT 1000 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REMOVE_BLIP sc3_drug_plant_blip ADD_BLIP_FOR_COORD -1780.0695 970.9553 23.7500 sc3_drug_plant_blip CHANGE_BLIP_DISPLAY sc3_drug_plant_blip BLIP_ONLY sc3_flag = 8 CLEAR_PRINTS PRINT VAL_20 5000 1 // ~s~The drugs are planted. Take the car to the valet's ~y~car park~s~. PRINT VAL_A31 5000 1 SET_PLAYER_CONTROL player1 ON CLEAR_ONSCREEN_TIMER sc3_countdown sc3_countdown = 150000 //was 3 minutes DISPLAY_ONSCREEN_TIMER_WITH_STRING sc3_countdown TIMER_DOWN VAL_21 timer_running = 1 CHECKPOINT_SAVE 99 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // player arrives at car park entrance IF sc3_flag = 8 IF NOT IS_CAR_DEAD sc3_missioncar IF LOCATE_CAR_3D sc3_missioncar -1780.0695 970.9553 23.7500 3.0 3.0 3.0 TRUE PRINT VAL_32 5000 1 REMOVE_BLIP sc3_drug_plant_blip ADD_BLIP_FOR_COORD -1688.2136 987.1218 16.5855 sc3_drug_plant_blip sc3_flag = 9 ENDIF ENDIF ENDIF // Do check to see if timer has run out. IF timer_running = 1 IF sc3_countdown = 0 CLEAR_PRINTS GOSUB cleanup_uniform PRINT VAL_47 5000 1 GOTO mission_scrash3_failed timer_running = 0 ENDIF ENDIF // player arrives at parking space. IF sc3_flag = 9 IF sc3_player_in_car = 1 IF NOT IS_CAR_DEAD sc3_missioncar IF LOCATE_STOPPED_CAR_3D sc3_missioncar -1688.2136 987.1218 16.5855 3.0 3.0 3.0 TRUE SET_PLAYER_CONTROL player1 OFF TASK_LEAVE_ANY_CAR scplayer LOCK_CAR_DOORS sc3_missioncar CARLOCK_LOCKOUT_PLAYER_ONLY REMOVE_BLIP sc3_drug_plant_blip REMOVE_BLIP sc3_missioncar_blip ADD_BLIP_FOR_COORD -1742.3003 940.8106 23.8972 sc3_drug_plant_blip CHANGE_BLIP_DISPLAY sc3_drug_plant_blip BLIP_ONLY CLEAR_ONSCREEN_TIMER sc3_countdown //Print get outside to call the cops. CLEAR_PRINTS PRINT VAL_A30 6000 1 sc3_flag = 30 LVAR_INT script_valet sc3_sequence CREATE_CHAR PEDTYPE_MISSION1 wmyva -1772.8086 977.8892 22.6614 script_valet SET_CHAR_ONLY_DAMAGED_BY_PLAYER script_Valet TRUE OPEN_SEQUENCE_TASK sc3_sequence TASK_FOLLOW_PATH_NODES_TO_COORD -1 -1710.6670 985.5689 16.5936 PEDMOVE_RUN -2 TASK_ENTER_CAR_AS_DRIVER -1 sc3_missioncar -2 TASK_CAR_TEMP_ACTION -1 sc3_missioncar TEMPACT_REVERSE_RIGHT 1400 TASK_CAR_DRIVE_TO_COORD -1 sc3_missioncar -1764.0815 982.5382 21.1042 15.0 MODE_NORMAL FALSE DRIVINGMODE_STOPFORCARS TASK_CAR_DRIVE_TO_COORD -1 sc3_missioncar -1754.8885 952.3113 23.7422 15.0 MODE_NORMAL FALSE DRIVINGMODE_STOPFORCARS TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 -1754.1168 959.0662 23.8828 PEDMOVE_WALK -2 TASK_ACHIEVE_HEADING -1 147.0 CLOSE_SEQUENCE_TASK sc3_sequence SET_CAR_CAN_GO_AGAINST_TRAFFIC sc3_missioncar FALSE CREATE_CHAR PEDTYPE_MISSION1 SWMYRI -1755.3920 946.9804 23.8906 sc3_missionchar SET_CHAR_HEADING sc3_missionchar 0.0 PERFORM_SEQUENCE_TASK script_valet sc3_sequence CLEAR_SEQUENCE_TASK sc3_sequence ENDIF ENDIF ENDIF ENDIF IF sc3_flag = 30 // put player's clothes back on at some point. IF NOT IS_CAR_DEAD sc3_missioncar IF NOT IS_CHAR_IN_CAR scplayer sc3_missioncar IF valet_taking_car_to_da = 0 SET_PLAYER_CONTROL player1 ON valet_taking_car_to_da = 1 SET_CAR_PROOFS sc3_missioncar TRUE TRUE TRUE TRUE TRUE ENDIF ENDIF IF IS_CAR_IN_AREA_3D sc3_missioncar -1764.1991 946.5950 28.3546 -1744.0857 957.8790 22.6221 FALSE IF NOT IS_CHAR_DEAD sc3_missionchar GET_SCRIPT_TASK_STATUS sc3_missionchar PERFORM_SEQUENCE_TASK sc3_task_status IF sc3_task_Status = FINISHED_TASK OPEN_SEQUENCE_TASK sc3_sequence TASK_ENTER_CAR_AS_DRIVER -1 sc3_missioncar -2 TASK_CAR_DRIVE_WANDER -1 sc3_missioncar 15.0 DRIVINGMODE_STOPFORCARS CLOSE_SEQUENCE_TASK sc3_sequence PERFORM_SEQUENCE_TASK sc3_missionchar sc3_sequence CLEAR_SEQUENCE_TASK sc3_sequence ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD sc3_missionchar IF IS_CHAR_IN_CAR sc3_missionchar sc3_missioncar CLEAR_PRINTS GOSUB cleanup_uniform PRINT VAL_A34 5000 1 GOTO mission_scrash3_failed ENDIF ENDIF IF LOCATE_CHAR_ON_FOOT_3D scplayer -1742.3003 940.8106 23.8972 2.0 2.0 3.0 TRUE SET_PLAYER_CONTROL player1 OFF REMOVE_BLIP sc3_drug_plant_blip sc3_flag = 10 sc3_cut_flag = 90 ENDIF IF IS_CAR_VISIBLY_DAMAGED sc3_missioncar IF NOT IS_CHAR_DEAD script_valet IF NOT IS_CHAR_IN_CAR script_valet sc3_missioncar GOSUB cleanup_uniform PRINT VAL_B2 4000 1 //The car's visibly damaged. It's too late to get it fixed. GOTO mission_scrash3_failed ENDIF ENDIF ENDIF ENDIF ENDIF IF sc3_flag > 7 IF sc3_flag < 10 IF NOT IS_CAR_DEAD sc3_missioncar IF IS_CAR_VISIBLY_DAMAGED sc3_missioncar sc3_flag = 7 PRINT VAL_31 5000 1 REMOVE_BLIP sc3_drug_plant_blip ADD_BLIP_FOR_COORD -2045.2523 178.7994 27.8359 sc3_drug_plant_blip ENDIF ENDIF ENDIF ENDIF IF sc3_flag = 10 SET_USES_COLLISION_OF_CLOSEST_OBJECT_OF_TYPE -1741.7917 939.7310 23.8906 2.5 lamppost3 FALSE IF sc3_cut_flag = 90 REQUEST_MODEL CELLPHONE force_audio = 1 sc3_cut_flag = 91 ENDIF IF sc3_cut_flag = 91 IF HAS_MODEL_LOADED CELLPHONE SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION -1738.0826 938.6749 25.0378 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1738.9598 939.1542 25.0127 JUMP_CUT CLEAR_AREA -1741.7917 939.7310 23.8906 20.0 FALSE IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -1741.7917 939.7310 23.8906 ELSE SET_CHAR_COORDINATES scplayer -1741.7917 939.7310 23.8906 ENDIF SET_CHAR_HEADING scplayer 270.0 TASK_USE_MOBILE_PHONE scplayer TRUE cut_time_change = TIMERA + 2500 sc3_cut_flag = 89 ENDIF ENDIF IF sc3_cut_flag = 89 IF TIMERA > cut_time_change play_audio = 1 play_audio_for = 2 sc3_cut_flag = 88 ENDIF ENDIF IF sc3_cut_flag = 88 IF play_audio = 0 AND play_audio_for = 0 TASK_USE_MOBILE_PHONE scplayer FALSE DO_FADE 1000 FADE_OUT sc3_missioncar_alive = 0 sc3_cut_flag = 87 ENDIF ENDIF IF sc3_cut_flag = 87 IF NOT GET_FADING_STATUS IF NOT IS_CHAR_DEAD sc3_missionchar DELETE_CHAR sc3_missionchar ENDIF sc3_cut_flag = 99 freeze_creating_drop_off_cars = 1 IF NOT IS_CAR_DEAD drop_off_car DELETE_CAR drop_off_car ENDIF IF NOT IS_CAR_DEAD valet_pickup_car DELETE_CAR valet_pickup_car ENDIF CLEAR_AREA -1741.7917 939.7310 23.0 80.0 FALSE ENDIF ENDIF IF sc3_cut_flag = 99 SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 pause_valet_script = 1 REQUEST_COLLISION -1759.4489 954.4333 LOAD_SCENE -1759.4489 954.4333 23.7200 // valet_scene_created = 2 // sc3_flag = 11 IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -1741.7917 939.7310 23.8906 ELSE SET_CHAR_COORDINATES scplayer -1741.7917 939.7310 23.8906 ENDIF SET_CHAR_HEADING scplayer 40.0 SET_PLAYER_CONTROL Player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION -1738.0826 938.6749 25.0378 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1738.9598 939.1542 25.0127 JUMP_CUT IF NOT IS_CAR_DEAD sc3_missioncar DELETE_CAR sc3_missioncar ENDIF sc3_cut_flag = 98 ENDIF IF sc3_cut_flag = 98 IF HAS_MODEL_LOADED MERIT AND HAS_MODEL_LOADED COLT45 AND HAS_MODEL_LOADED SWMYRI AND HAS_ANIMATION_LOADED POLICE AND HAS_ANIMATION_LOADED MISC IF HAS_MODEL_LOADED SFPD1 AND HAS_CAR_RECORDING_BEEN_LOADED 165 AND HAS_CAR_RECORDING_BEEN_LOADED 166 AND HAS_MODEL_LOADED COPCARSF sc3_cut_flag = 0 MARK_MODEL_AS_NO_LONGER_NEEDED CHEETAH MARK_MODEL_AS_NO_LONGER_NEEDED WMYVA2 ELSE REQUEST_MODEL COPCARSF REQUEST_CAR_RECORDING 166 REQUEST_CAR_RECORDING 165 REQUEST_MODEL SFPD1 ENDIF ELSE REQUEST_ANIMATION MISC REQUEST_ANIMATION POLICE REQUEST_MODEL SWMYRI REQUEST_MODEL COLT45 REQUEST_MODEL MERIT ENDIF ENDIF IF sc3_cut_flag = 0 DO_FADE 800 FADE_IN HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE LVAR_INT sc3_end_copcar1 sc3_end_copcar2 CLEAR_AREA -1759.4489 954.4333 23.7200 50.0 FALSE SET_CAR_DENSITY_MULTIPLIER 0.0 CREATE_CAR MERIT -1759.4489 954.4333 23.7200 sc3_missioncar CHANGE_CAR_COLOUR sc3_missioncar CARCOLOUR_MIDNIGHTBLUE CARCOLOUR_MIDNIGHTBLUE CREATE_CAR COPCARSF -1711.3990 903.0281 24.1296 sc3_end_copcar1 CREATE_CAR COPCARSF -1711.0159 893.7642 24.0975 sc3_end_copcar2 SWITCH_CAR_SIREN sc3_end_copcar1 TRUE SWITCH_CAR_SIREN sc3_end_copcar2 TRUE CREATE_CHAR_INSIDE_CAR sc3_end_copcar1 PEDTYPE_CIVMALE SFPD1 sc3_cop1 CREATE_CHAR_INSIDE_CAR sc3_end_copcar2 PEDTYPE_CIVMALE SFPD1 sc3_cop2 GIVE_WEAPON_TO_CHAR sc3_cop1 WEAPONTYPE_PISTOL 99999 GIVE_WEAPON_TO_CHAR sc3_cop2 WEAPONTYPE_PISTOL 99999 CREATE_CHAR PEDTYPE_CIVMALE SWMYRI -1763.2758 946.1676 23.8905 sc3_missionchar IF NOT IS_CHAR_DEAD sc3_missionchar WARP_CHAR_INTO_CAR sc3_missionchar sc3_missioncar ENDIF OPEN_SEQUENCE_TASK sc3_seq TASK_PAUSE -1 6500 TASK_LEAVE_ANY_CAR -1 TASK_HANDS_UP -1 3000 CLOSE_SEQUENCE_TASK sc3_seq PERFORM_SEQUENCE_TASK sc3_missionchar sc3_seq CLEAR_SEQUENCE_TASK sc3_seq SET_CAR_HEADING sc3_missioncar 90.0 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer plyrlean_loop MISC 1.0 TRUE 0 0 0 -2 VAR_FLOAT cunt_x cunt_y // VAR_INT task_statt LVAR_INT sc3_seq // VIEW_FLOAT_VARIABLE cunt_x cunt_x // VIEW_FLOAT_VARIABLE cunt_y cunt_y // VIEW_INTEGER_VARIABLE task_statt task_Statt GET_CHAR_COORDINATES scplayer cunt_x cunt_y player_z // CREATE_CAR COPCARSF SET_FIXED_CAMERA_POSITION -1740.3453 939.6078 25.3651 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1741.2230 940.0797 25.2814 JUMP_CUT audio_actor[2] = sc3_missionchar audio_actor[3] = sc3_cop1 audio_actor[4] = sc3_cop2 cut_time_change = TIMERA + 1000 sc3_cut_flag = 1 ENDIF IF sc3_cut_flag = 1 IF TIMERA > cut_time_change sc3_cut_flag = 2 ENDIF ENDIF IF sc3_cut_flag = 2 // Play cop cars IF NOT IS_CAR_DEAD sc3_end_copcar1 AND NOT IS_CAR_DEAD sc3_end_copcar2 IF HAS_CAR_RECORDING_BEEN_LOADED 165 AND HAS_CAR_RECORDING_BEEN_LOADED 166 START_PLAYBACK_RECORDED_CAR sc3_end_copcar1 165 START_PLAYBACK_RECORDED_CAR sc3_end_copcar2 166 SET_PLAYBACK_SPEED sc3_end_copcar1 0.8 SET_PLAYBACK_SPEED sc3_end_copcar2 0.8 ELSE REQUEST_CAR_RECORDING 165 REQUEST_CAR_RECORDING 166 ENDIF ENDIF cut_time_change = TIMERA + 3000 sc3_cut_flag = 3 ENDIF IF sc3_cut_flag = 3 IF TIMERA > cut_time_change sc3_cut_flag = 4 ENDIF ENDIF IF sc3_cut_flag = 4 // Cops leave cop cars CLEAR_PRINTS play_audio = 3 play_audio_for = 2 IF NOT IS_CHAR_DEAD sc3_missionchar IF NOT IS_CHAR_DEAD sc3_cop1 OPEN_SEQUENCE_TASK sc3_seq TASK_LEAVE_ANY_CAR -1 TASK_AIM_GUN_AT_CHAR -1 sc3_missionchar 3000 CLOSE_SEQUENCE_TASK sc3_seq PERFORM_SEQUENCE_TASK sc3_cop1 sc3_seq CLEAR_SEQUENCE_TASK sc3_seq ENDIF IF NOT IS_CHAR_DEAD sc3_cop2 OPEN_SEQUENCE_TASK sc3_seq TASK_LEAVE_ANY_CAR -1 TASK_GO_TO_COORD_WHILE_AIMING -1 -1762.3694 951.1278 23.7487 PEDMOVE_WALK 1.0 1.0 sc3_missionchar 0.0 0.0 0.0 CLOSE_SEQUENCE_TASK sc3_seq PERFORM_SEQUENCE_TASK sc3_cop2 sc3_seq CLEAR_SEQUENCE_TASK sc3_seq ENDIF ENDIF cut_time_change = TIMERA + 6200 sc3_cut_flag = 5 ENDIF IF sc3_cut_flag = 5 IF TIMERA > cut_time_change IF play_audio = 0 sc3_cut_flag = 6 LVAR_INT hit_bonnet_time ENDIF ENDIF ENDIF IF sc3_cut_flag = 6 play_audio = 5 play_audio_for = 3 LVAR_INT play_audio_dent_time play_audio_hit_time play_audio_hit_time = TIMERA + 17333 play_audio_dent_time = TIMERA + 17633 hit_bonnet_time = TIMERA + 4313 // Prosecutor gets busted IF NOT IS_CHAR_DEAD sc3_cop1 AND NOT IS_CHAR_DEAD sc3_cop2 SET_CURRENT_CHAR_WEAPON sc3_cop1 WEAPONTYPE_UNARMED SET_CURRENT_CHAR_WEAPON sc3_cop2 WEAPONTYPE_UNARMED SET_CHAR_HEADING sc3_cop1 0.0 ENDIF // SAVE_NEWLINE_TO_DEBUG_FILE // SAVE_INT_TO_DEBUG_FILE TIMERA // sucky = 2 // SAVE_NEWLINE_TO_DEBUG_FILE // SAVE_INT_TO_DEBUG_FILE sucky // Cut at front of car SET_FIXED_CAMERA_POSITION -1768.0479 955.8058 25.1327 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1767.2375 955.2321 25.0132 JUMP_CUT // IF NOT IS_CAR_DEAD sc3_missioncar POP_CAR_BOOT sc3_missioncar ENDIF // IF NOT IS_CHAR_DEAD sc3_missionchar // DELETE_CHAR sc3_missionchar // ENDIF IF NOT IS_CHAR_DEAD sc3_missionchar CLEAR_CHAR_TASKS_IMMEDIATELY sc3_missionchar SET_CHAR_COLLISION sc3_missionchar FALSE SET_CHAR_COORDINATES sc3_missionchar -1761.71 952.9333 23.7900 SET_CHAR_HEADING sc3_missionchar 0.0 FREEZE_CHAR_POSITION sc3_missionchar TRUE TASK_PLAY_ANIM_NON_INTERRUPTABLE sc3_missionchar Crm_drgbst_01 POLICE 1.0 FALSE 0 0 TRUE -1 ENDIF // LVAR_INT sc3_cop1 sc3_cop2 SET_CHAR_COORDINATES sc3_cop1 -1761.7236 952.4515 23.7200 CLEAR_CHAR_TASKS_IMMEDIATELY sc3_cop2 SET_CHAR_COORDINATES sc3_cop2 -1755.7499 953.9333 23.7200 // SET_CHAR_HEADING sc3_cop2 90.0 // CREATE_CAR COPCARSF -1761.4489 952.4333 23.7500 sc3_copcar1 // SET_CAR_HEADING sc3_copcar1 209.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE sc3_cop1 Plc_drgbst_01 POLICE 1.0 TRUE 0 0 0 25000 LVAR_INT cut_time_change // effect_to_play = SOUND_CAR_BOOT_OPEN // CLEAR_MISSION_AUDIO 3 cut_time_change = TIMERA + 7606 sc3_cut_flag = 7 ENDIF IF sc3_cut_flag = 7 IF NOT hit_bonnet_time = 0 IF TIMERA > hit_bonnet_time REPORT_MISSION_AUDIO_EVENT_AT_CHAR sc3_missionchar SOUND_BONNET_DENT hit_bonnet_time = 0 ENDIF ENDIF IF TIMERA > cut_time_change IF play_audio = 0 sc3_cut_flag = 8 ENDIF ENDIF ENDIF IF sc3_cut_flag = 8 // cut at reat of car play_audio = 8 play_audio_for = 2 SET_FIXED_CAMERA_POSITION -1757.7467 952.7751 24.8666 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1756.9093 953.3010 25.0154 JUMP_CUT // SAVE_NEWLINE_TO_DEBUG_FILE // SAVE_INT_TO_DEBUG_FILE TIMERA // sucky = 3 // SAVE_NEWLINE_TO_DEBUG_FILE // SAVE_INT_TO_DEBUG_FILE sucky IF NOT IS_CHAR_DEAD sc3_cop2 SET_CHAR_HEADING sc3_cop2 90.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE sc3_cop2 Plc_drgbst_02 POLICE 1.0 FALSE 0 0 0 -1 ENDIF cut_time_change = TIMERA + 3267 sc3_cut_flag = 9 ENDIF IF sc3_cut_flag = 9 IF TIMERA > cut_time_change IF play_audio = 0 sc3_cut_flag = 10 ENDIF ENDIF ENDIF IF sc3_cut_flag = 10 // End cut back at front of car play_audio = 10 play_audio_for = 2 SET_FIXED_CAMERA_POSITION -1768.0479 955.8058 25.1327 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1767.2375 955.2321 25.0132 JUMP_CUT // SAVE_NEWLINE_TO_DEBUG_FILE // SAVE_INT_TO_DEBUG_FILE TIMERA // sucky = 4 // SAVE_NEWLINE_TO_DEBUG_FILE // SAVE_INT_TO_DEBUG_FILE sucky cut_time_change = TIMERA + 750 sc3_cut_flag = 80 // effect_to_play[0] = SOUND_PUNCH_PED // effect_time_to_play[0] = TIMERA + 500 // effect_time_to_play[1] = TIMERA + 1000 ENDIF IF sc3_cut_flag = 80 IF TIMERA > play_audio_hit_time REPORT_MISSION_AUDIO_EVENT_AT_CHAR sc3_missionchar SOUND_PUNCH_PED cut_time_change = TIMERA + 500 sc3_cut_flag = 81 ENDIF ENDIF IF sc3_cut_flag = 81 IF TIMERA > play_audio_dent_time REPORT_MISSION_AUDIO_EVENT_AT_CHAR sc3_missionchar SOUND_BONNET_DENT cut_time_change = TIMERA + 1900 sc3_cut_flag = 11 ENDIF ENDIF IF sc3_cut_flag = 11 AND play_audio = 0 IF TIMERA > cut_time_change SET_FIXED_CAMERA_POSITION -1738.0826 938.6749 25.0378 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1738.9598 939.1542 25.0127 JUMP_CUT // SAVE_NEWLINE_TO_DEBUG_FILE // SAVE_INT_TO_DEBUG_FILE TIMERA // sucky = 5 // SAVE_NEWLINE_TO_DEBUG_FILE // SAVE_INT_TO_DEBUG_FILE sucky IF NOT IS_CHAR_DEAD sc3_cop1 AND NOT IS_CHAR_DEAD sc3_cop2 AND NOT IS_CAR_DEAD sc3_end_copcar1 AND NOT IS_CAR_DEAD sc3_end_copcar2 AND NOT IS_CHAR_DEAD sc3_missionchar WARP_CHAR_INTO_CAR sc3_cop1 sc3_end_copcar1 WARP_CHAR_INTO_CAR sc3_cop2 sc3_end_copcar2 FREEZE_CHAR_POSITION sc3_missionchar FALSE WARP_CHAR_INTO_CAR_AS_PASSENGER sc3_missionchar sc3_end_copcar2 1 TASK_CAR_DRIVE_TO_COORD sc3_cop2 sc3_end_copcar2 -1790.4049 905.0311 25.0203 20.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH OPEN_SEQUENCE_TASK sc3_seq TASK_CAR_TEMP_ACTION -1 sc3_end_copcar1 TEMPACT_REVERSE_RIGHT 800 TASK_CAR_DRIVE_TO_COORD -1 sc3_end_copcar1 -1790.4049 905.0311 25.0203 20.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH CLOSE_SEQUENCE_TASK sc3_seq PERFORM_SEQUENCE_TASK sc3_cop1 sc3_seq CLEAR_SEQUENCE_TASK sc3_seq ENDIF cut_time_change = TIMERA + 4000 sc3_cut_flag = 12 // GOTO mission_scrash3_passed ENDIF ENDIF IF sc3_cut_flag = 12 IF TIMERA > cut_time_change sc3_cut_flag = 13 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF DOES_CHAR_EXIST script_valet DELETE_CHAR script_valet ENDIF IF NOT IS_CAR_DEAD sc3_missioncar MARK_CAR_AS_NO_LONGER_NEEDED sc3_missioncar ENDIF IF NOT IS_CHAR_DEAD sc3_cop1 AND NOT IS_CHAR_DEAD sc3_cop2 AND NOT IS_CAR_DEAD sc3_end_copcar1 AND NOT IS_CAR_DEAD sc3_end_copcar2 AND NOT IS_CHAR_DEAD sc3_missionchar DELETE_CHAR sc3_cop1 DELETE_CHAR sc3_cop2 DELETE_CAR sc3_end_copcar1 DELETE_CAR sc3_end_copcar2 DELETE_CHAR sc3_missionchar ENDIF IF NOT IS_CAR_DEAD sc3_missioncar DELETE_CAR sc3_missioncar ENDIF IF IS_PLAYER_WEARING Player1 CLOTHES_TEX_EXTRA1 valet GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 ENDIF WAIT 1000 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_PLAYER_CONTROL player1 ON DO_FADE 1000 FADE_IN HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE GOTO mission_scrash3_passed ENDIF ENDIF // // // fuckit: // // WAIT 0 // // // // // // // // GOTO fuckit // CREATE_CAR COPCARSF -1729.5880 1048.5339 44.3116 sc3_copcar2 // SET_CAR_HEADING sc3_copcar2 98.0 // MARK_MODEL_AS_NO_LONGER_NEEDED MERIT // MARK_MODEL_AS_NO_LONGER_NEEDED COPCARSF //-1728.8507 1061.3982 44.3496 // IF NOT IS_CHAR_DEAD sc3_cop1 // GET_CHAR_COORDINATES sc3_cop1 cunt_x cunt_y player_z //// SET_USES_COLLISION_OF_CLOSEST_OBJECT_OF_TYPE cunt_x cunt_y player_z 2.5 lamppost3 FALSE // // player_z = 23.898 // // IF IS_BUTTON_PRESSED PAD1 SQUARE // cunt_x -= 0.01 // SET_CHAR_COORDINATES sc3_cop1 cunt_x cunt_y player_z // ENDIF // IF IS_BUTTON_PRESSED PAD1 CIRCLE // cunt_x += 0.01 // SET_CHAR_COORDINATES sc3_cop1 cunt_x cunt_y player_z // ENDIF // IF IS_BUTTON_PRESSED PAD1 CROSS // cunt_y -= 0.01 // SET_CHAR_COORDINATES sc3_cop1 cunt_x cunt_y player_z // ENDIF // IF IS_BUTTON_PRESSED PAD1 TRIANGLE // cunt_y += 0.01 // SET_CHAR_COORDINATES sc3_cop1 cunt_x cunt_y player_z // ENDIF // // IF IS_BUTTON_PRESSED PAD1 RIGHTSHOULDER1 // GET_SCRIPT_TASK_STATUS sc3_cop1 -1 task_Statt // IF task_statt = FINISHED_TASK // OR task_statt = WAITING_TO_START_TASK // CLEAR_CHAR_TASKS_IMMEDIATELY sc3_cop1 // TASK_PLAY_ANIM_NON_INTERRUPTABLE sc3_cop1 Plc_drgbst_01 POLICE 1.0 TRUE 0 0 0 25000 // ENDIF // ENDIF // // ENDIF // // ENDIF IF sc3_flag = 13 // IF LOCATE_STOPPED_CHAR_IN_CAR_3D scplayer -2179.1973 715.6656 52.9098 3.0 3.0 3.0 TRUE IF LOCATE_STOPPED_CHAR_IN_CAR_3D scplayer -2045.2523 178.7994 27.8359 3.0 3.0 3.0 TRUE ENDIF IF IS_CHAR_IN_AREA_IN_CAR_3D scplayer -2042.9429 167.5841 26.7590 -2055.2017 180.1328 32.3919 FALSE IF NOT IS_CAR_DEAD sc3_missioncar IF IS_CHAR_IN_CAR scplayer sc3_missioncar SET_PLAYER_CONTROL player1 OFF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer // IF IS_PLAYER_WEARING Player1 CLOTHES_TEX_EXTRA1 valet // GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 // BUILD_PLAYER_MODEL player1 // ENDIF IF NOT IS_CAR_DEAD sc3_missioncar GET_CAR_COORDINATES sc3_missioncar sc3_x sc3_y sc3_z GET_CAR_HEADING sc3_missioncar sc3_h GET_CAR_COLOURS sc3_missioncar sc3_col1 sc3_col2 DELETE_CAR sc3_missioncar ENDIF REQUEST_MODEL MERIT WHILE NOT HAS_MODEL_LOADED MERIT WAIT 0 ENDWHILE CREATE_CAR MERIT -2031.5023 178.6435 27.8516 sc3_missioncar CHANGE_CAR_COLOUR sc3_missioncar sc3_col1 sc3_col2 SET_CAR_HEADING sc3_missioncar 270.0 SET_TARGET_CAR_FOR_MISSION_GARAGE hbgdSFS sc3_missioncar IF NOT IS_CAR_DEAD sc3_missioncar WARP_CHAR_INTO_CAR scplayer sc3_missioncar ENDIF WAIT 1000 SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REMOVE_BLIP sc3_drug_plant_blip ADD_BLIP_FOR_COORD -1780.0695 970.9553 23.7500 sc3_drug_plant_blip CHANGE_BLIP_DISPLAY sc3_drug_plant_blip BLIP_ONLY sc3_flag = 8 CLEAR_PRINTS PRINT VAL_33 5000 1 ENDIF ENDIF ENDIF ENDIF IF sc3_flag = 11 ENDIF //GOTO mission_scrash3_passed GOTO mission_scrash3_loop scrash1_audio: LVAR_INT play_timed_audio play_timed_audio_flag audio_time_start audio_timer_flag audio_time[10] audio_to_play[10] play_timed_audio_for LVAR_INT audio_fading // SOUND EFFECTS WORK HERE IF NOT effect_to_play[0] = 0 IF effect_flag = 0 CLEAR_MISSION_AUDIO 3 LOAD_MISSION_AUDIO 3 effect_to_play[0] effect_Flag = 1 ENDIF IF effect_flag = 1 IF HAS_MISSION_AUDIO_LOADED 3 IF TIMERA > effect_time_to_play[0] PLAY_MISSION_AUDIO 3 effect_flag = 2 ENDIF ENDIF ENDIF IF effect_flag = 2 IF HAS_MISSION_AUDIO_FINISHED 3 CLEAR_MISSION_AUDIO 3 effect_to_play[0] = effect_to_play[1] effect_to_play[1] = 0 effect_time_to_play[0] = effect_time_to_play[1] effect_time_to_play[1] = 0 effect_flag = 0 ENDIF ENDIF ENDIF LVAR_INT effect_flag effect_to_play[2] effect_time_to_play[2] // DIALOGUE AUDIO WORKS HERE // play timed audio IF NOT play_timed_audio = 0 IF play_timed_audio_flag = 0 play_timed_audio_flag = 1 audio_time_start = TIMERA audio_timer_flag = 0 play_delay = audio_time_start + audio_time[audio_timer_flag] ENDIF IF play_timed_audio_flag = 1 IF TIMERA > play_delay play_audio = audio_to_play[audio_timer_flag] audio_timer_flag ++ play_timed_audio_for -- IF play_timed_audio_for = 0 play_timed_audio = 0 play_timed_audio_flag = 0 ELSE play_delay = audio_time_start + audio_time[audio_timer_flag] ENDIF ENDIF ENDIF ENDIF // IF GET_FADING_STATUS // play_audio = 0 // play_audio_for = 0 // audio_fading = 1 // ENDIF IF audio_fading = 1 IF NOT GET_FADING_STATUS IF NOT HAS_MISSION_AUDIO_FINISHED 1 OR NOT HAS_MISSION_AUDIO_FINISHED 2 audio_fading = 0 audio_flag = 5 ENDIF ENDIF ENDIF SWITCH audio_flag CASE 0 //first time game starts LVAR_TEXT_LABEL audio_text[40] LVAR_INT audio_sound[40] audio_slot[3] play_slot LVAR_INT next_audio LVAR_INT audio_flag play_audio play_audio_for LVAR_INT audio_for_char[40] audio_actor[7] play_audio_now LVAR_INT actor_int this_actor loaded_audio play_delay audio_i audio_char audio_count force_audio IF audio_flag = 1 CREATE_CHAR PEDTYPE_GANG_GROVE SPECIAL01 2752.3408 -1948.8669 16.3125 this_actor CREATE_CHAR PEDTYPE_GANG_GROVE SPECIAL01 2752.3408 -1948.8669 16.3125 audio_char ENDIF $audio_text[1] = &SCR1_AA $audio_text[2] = &SCR1_AB $audio_text[3] = &SCR1_AC $audio_text[4] = &SCR1_AD $audio_text[5] = &SCR1_AE $audio_text[6] = &SCR1_AF $audio_text[7] = &SCR1_AG $audio_text[8] = &SCR1_AH $audio_text[9] = &SCR1_AJ $audio_text[10] = &SCR1_AK $audio_text[11] = &SCR1_AL $audio_text[12] = &SCR1_AM $audio_text[13] = &SCR1_BB $audio_text[14] = &SCR1_BA audio_sound[1] = SOUND_SCR1_AA audio_sound[2] = SOUND_SCR1_AB audio_sound[3] = SOUND_SCR1_AC audio_sound[4] = SOUND_SCR1_AD audio_sound[5] = SOUND_SCR1_AE audio_sound[6] = SOUND_SCR1_AF audio_sound[7] = SOUND_SCR1_AG audio_sound[8] = SOUND_SCR1_AH audio_sound[9] = SOUND_SCR1_AJ audio_sound[10] = SOUND_SCR1_AK audio_sound[11] = SOUND_SCR1_AL audio_sound[12] = SOUND_SCR1_AM audio_sound[13] = SOUND_SCR1_BB audio_sound[14] = SOUND_SCR1_BA audio_for_char[1] = 1 audio_for_char[2] = 1 audio_for_char[3] = 3 audio_for_char[4] = 3 audio_for_char[5] = 2 audio_for_char[6] = 2 audio_for_char[7] = 3 audio_for_char[8] = 4 audio_for_char[9] = 4 audio_for_char[10] = 2 audio_for_char[11] = 3 audio_for_char[12] = 3 audio_for_char[13] = 0 audio_for_char[14] = 0 audio_actor[1] = scplayer //1 = catalina //2 = player audio_flag = 1 // play_audio = 0 LOAD_MISSION_AUDIO 1 audio_sound[1] LOAD_MISSION_AUDIO 2 audio_sound[2] audio_slot[1] = 1 audio_slot[2] = 2 BREAK CASE 1 //waiting to play audio IF NOT play_audio = 0 IF HAS_MISSION_AUDIO_FINISHED 1 AND HAS_MISSION_AUDIO_FINISHED 2 IF audio_slot[1] = play_audio play_slot = 1 ELSE IF audio_slot[2] = play_audio play_slot = 2 ELSE play_slot = 1 audio_slot[1] = play_audio CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 audio_sound[play_audio] //audio hasn't been requested yet ENDIF ENDIF IF HAS_MISSION_AUDIO_LOADED play_slot actor_int = audio_for_char[play_audio] this_actor = audio_actor[actor_int] IF NOT force_audio = 1 //otherwise audio will not play if no mission peds are nearby audio_i = 1 audio_count = 0 WHILE audio_i < 7 audio_char = audio_actor[audio_i] IF NOT audio_char = 0 IF NOT audio_char = this_actor IF NOT IS_CHAR_DEAD this_actor IF NOT IS_CHAR_DEAD audio_char IF LOCATE_CHAR_ANY_MEANS_CHAR_3D this_actor audio_char 10.0 10.0 10.0 FALSE audio_count ++ ENDIF ENDIF ENDIF ENDIF ENDIF audio_i++ ENDWHILE ENDIF IF force_audio = 1 OR audio_count > 0 OR audio_for_char[play_audio] = 0 IF NOT audio_for_char[play_audio] = 0 IF NOT IS_CHAR_DEAD this_actor ATTACH_MISSION_AUDIO_TO_CHAR play_slot this_actor IF NOT IS_CHAR_TALKING this_actor play_audio_now = 1 START_CHAR_FACIAL_TALK this_actor 15000 ELSE DISABLE_CHAR_SPEECH this_actor FALSE ENDIF ENDIF ENDIF IF audio_for_char[play_audio] = 0 play_audio_now = 1 ENDIF IF play_audio_now = 1 PLAY_MISSION_AUDIO play_slot // SAVE_NEWLINE_TO_DEBUG_FILE // SAVE_INT_TO_DEBUG_FILE TIMERA // LVAR_INT sucky // sucky = 1 // SAVE_NEWLINE_TO_DEBUG_FILE // SAVE_INT_TO_DEBUG_FILE sucky CLEAR_PRINTS PRINT $audio_text[play_audio] 10000 1 audio_flag ++ play_audio_now = 0 play_audio ++ next_audio = play_audio // if the other slot doesn't already have the next audio loaded, then load it. IF NOT audio_sound[play_audio] = 0 IF play_slot = 1 IF NOT audio_slot[2] = play_audio LOAD_MISSION_AUDIO 2 audio_sound[play_audio] audio_slot[2] = play_audio ENDIF ELSE IF NOT audio_slot[1] = play_audio LOAD_MISSION_AUDIO 1 audio_sound[play_audio] audio_slot[1] = play_audio ENDIF ENDIF ENDIF ENDIF ENDIF ELSE LOAD_MISSION_AUDIO play_slot audio_sound[play_audio] ENDIF ENDIF ENDIF BREAK CASE 2 // check if audio has/should finish IF HAS_MISSION_AUDIO_FINISHED play_slot audio_flag++ ELSE IF DOES_CHAR_EXIST this_actor IF IS_CHAR_DEAD this_actor audio_flag++ ENDIF ENDIF IF NOT IS_CHAR_DEAD this_actor ENDIF ENDIF BREAK CASE 3 //clear audio CLEAR_MISSION_AUDIO play_slot audio_slot[play_slot] = 0 CLEAR_PRINTS IF NOT IS_CHAR_DEAD this_actor STOP_CHAR_FACIAL_TALK this_actor ENABLE_CHAR_SPEECH this_actor ENDIF audio_flag++ BREAK CASE 4 //request next audio play_audio ++ IF NOT audio_sound[play_audio] = 0 LOAD_MISSION_AUDIO play_slot audio_sound[play_audio] audio_slot[play_slot] = play_audio ENDIF play_audio_for -= 1 IF NOT play_audio_for > 0 play_audio = 0 ELSE play_audio = next_audio ENDIF audio_flag = 1 BREAK CASE 5 // clear all for cut scene skip audio_flag = 1 play_audio = 0 play_audio_for = 0 play_timed_audio = 0 play_timed_audio_for = 0 CLEAR_MISSION_AUDIO play_slot audio_slot[play_slot] = 0 CLEAR_PRINTS IF NOT IS_CHAR_DEAD this_actor ENABLE_CHAR_SPEECH this_actor ENDIF BREAK ENDSWITCH RETURN cleanup_uniform: CLEAR_PRINTS IF NOT IS_MINIGAME_IN_PROGRESS SET_PLAYER_CONTROL player1 OFF ENDIF IF IS_CHAR_IN_AREA_3D scplayer -2039.1527 182.7238 20.8154 -2057.0874 150.6935 34.1252 FALSE IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 valet DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE car = 0 IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer car WARP_CHAR_FROM_CAR_TO_COORD scplayer 0.0 0.0 0.0 ENDIF CLEAR_AREA_OF_CARS -2039.0558 182.7439 32.4018 -2057.3413 150.5405 27.7805 CLEAR_AREA_OF_CHARS -2039.0558 182.7439 32.4018 -2057.3413 150.5405 27.7805 SET_CHAR_COORDINATES_NO_OFFSET scplayer -2037.8862 178.9478 27.8359 SET_CHAR_HEADING scplayer 270.0 IF NOT IS_CHAR_DEAD sc3_missionchar IF NOT IS_CHAR_IN_ANY_CAR sc3_missionchar DELETE_CHAR sc3_missionchar ENDIF ENDIF SET_PLAYER_CONTROL player1 OFF SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE PRINT_BIG M_FAIL 5000 1 valet_mission_terminate = 1 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL PLAYER1 ON GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF ELSE IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 valet DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE car = 0 IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer car WARP_CHAR_FROM_CAR_TO_COORD scplayer 0.0 0.0 0.0 ENDIF CLEAR_AREA_OF_CARS -2039.0558 182.7439 32.4018 -2057.3413 150.5405 27.7805 CLEAR_AREA_OF_CHARS -2039.0558 182.7439 32.4018 -2057.3413 150.5405 27.7805 IF NOT IS_CAR_DEAD car WARP_CHAR_INTO_CAR scplayer car ELSE IF NOT car = 0 SET_CHAR_COORDINATES_NO_OFFSET scplayer -2037.8862 178.9478 27.8359 SET_CHAR_HEADING scplayer 270.0 ENDIF ENDIF IF NOT IS_CHAR_DEAD sc3_missionchar IF NOT IS_CHAR_IN_ANY_CAR sc3_missionchar DELETE_CHAR sc3_missionchar ENDIF ENDIF GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF ENDIF RETURN // Mission wuzi1 failed mission_scrash3_failed: PRINT_BIG M_FAIL 5000 1 valet_mission_terminate = 1 valet_unlocked = 0 RETURN // mission wuzi1 passed mission_scrash3_passed: //flag_wuzi1_mission1_passed = 1 SET_INT_STAT PASSED_ZERO1 1 valet_unlocked = 1 valet_oddjob_opened = 1 PRINT_WITH_NUMBER_BIG ( M_PASSD ) 0 5000 1 //"Mission Passed!" SET_INT_STAT PASSED_SCRASH1 1 //ADD_SCORE player1 30000 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 PLAYER_MADE_PROGRESS 1 flag_scrash_mission_counter ++ flag_player_got_valet_uniform = 1 REGISTER_MISSION_PASSED ( SCRA_1 ) //Used in the stats REMOVE_BLIP garage_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ RADAR_SPRITE_CJ garage_contact_blip REMOVE_BLIP scrash_contact_blip //REGISTER_MISSION_PASSED wuzi1 //START_NEW_SCRIPT wuzi1_mission_loop RETURN // mission cleanup mission_cleanup_scrash3: SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 playing_scrash1 = 0 freeze_creating_drop_off_cars = 0 force_valet_on_mission = 0 SET_WANTED_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 SWITCH_ROADS_ON 2793.8140 -1987.9346 15.3045 2754.3240 -1900.3694 9.8752 CLEAR_ONSCREEN_TIMER sc3_countdown REMOVE_BLIP sc3_drug_plant_blip REMOVE_BLIP sc3_missioncar_blip REMOVE_BLIP sc3_valet_blip REMOVE_BLIP sc3_blip[0] REMOVE_BLIP sc3_blip[1] REMOVE_BLIP sc3_blip[2] REMOVE_BLIP val_uniform_blip //CHANGE_GARAGE_TYPE hbgdSFS GARAGE_FOR_SCRIPT_TO_OPEN_AND_CLOSE SET_USES_COLLISION_OF_CLOSEST_OBJECT_OF_TYPE -1741.7917 939.7310 23.8906 2.5 lamppost3 TRUE DONT_SUPPRESS_CAR_MODEL MERIT SWITCH_PED_ROADS_BACK_TO_ORIGINAL -1729.5487 942.8860 40.3585 -1742.7734 937.7814 10.1928 SWITCH_PED_ROADS_BACK_TO_ORIGINAL -1768.5243 938.8870 40.7496 -1780.7653 943.4574 10.0929 MARK_MODEL_AS_NO_LONGER_NEEDED MTBIKE //MARK_MODEL_AS_NO_LONGER_NEEDED wmyplt MARK_MODEL_AS_NO_LONGER_NEEDED BANSHEE MARK_MODEL_AS_NO_LONGER_NEEDED CHEETAH MARK_MODEL_AS_NO_LONGER_NEEDED MERIT MARK_MODEL_AS_NO_LONGER_NEEDED SWMYRI MARK_MODEL_AS_NO_LONGER_NEEDED WMYVA2 MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE REMOVE_CAR_RECORDING 155 MARK_MODEL_AS_NO_LONGER_NEEDED COPCARSF MARK_MODEL_AS_NO_LONGER_NEEDED SWMYRI MARK_MODEL_AS_NO_LONGER_NEEDED SFPD1 MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 REMOVE_ANIMATION POLICE REMOVE_ANIMATION MISC REMOVE_CAR_RECORDING 165 REMOVE_CAR_RECORDING 166 IF NOT IS_CAR_DEAD sc3_missioncar SET_CAR_PROOFS sc3_missioncar FALSE FALSE FALSE FALSE FALSE ENDIF GET_GAME_TIMER timer_mobile_start //REMOVE_BLIP wz1_meet1_blip pause_valet_script = 0 flag_player_on_mission = 0 freeze_creating_drop_off_cars = 0 sc3_missioncar_alive = 0 dont_clear_valets = 0 tell_player_to_kill_valet = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : SCrash2 // AUTHOR : Keith // DESCRIPTION : An AWOL officer in LA is going to dish the dirt to a // reporter. Follow the reporter to the AWOL officer // and take them both out. // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** { // ************************************************************************************************************* // GENERAL INITIALISATION - Every level requires this // ************************************************************************************************************* SCRIPT_NAME SCrash2 // Global Variables // REMOVE TRAIN PROGRESS BAR //VAR_INT g_SCrash2_distanceKM // END REMOVE TRAIN PROGRESS BAR VAR_INT g_SCrash2_spookKM // Initialise Global Variables g_SCrash2_spookKM = 0 // Mission Start stuff GOSUB mission_start_SCrash2 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_SCrash2 ENDIF GOSUB mission_cleanup_SCrash2 MISSION_END // Global Setup mission_start_SCrash2: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 // general variables that are in every mission - DON'T DECLARE MISSION SPECIFIC VARIABLES HERE LVAR_INT m_stage LVAR_INT m_goals LVAR_INT m_passed LVAR_INT m_failed LVAR_INT m_quit LVAR_INT m_pause LVAR_INT m_status LVAR_INT m_frame_num LVAR_INT m_this_frame_time LVAR_INT m_last_frame_time LVAR_INT m_time_diff LVAR_INT m_fail_reason // commonly used timers LVAR_INT m_mission_timer // Debug variables LVAR_INT display_debug VAR_INT SCrash2_view_debug[8] // GLOBAL (for output) // useful int variables LVAR_INT nLoop LVAR_INT nLoop2 LVAR_INT nTempInt LVAR_INT nTempInt2 LVAR_INT nTempPed LVAR_INT nTempObject LVAR_INT nTempAmmo LVAR_INT nTempTimer LVAR_INT nSeqTask // useful float variables LVAR_FLOAT xposTemp yposTemp zposTemp LVAR_FLOAT xposTemp2 yposTemp2 zposTemp2 LVAR_FLOAT headTemp LVAR_FLOAT xloTemp yloTemp zloTemp LVAR_FLOAT xhiTemp yhiTemp zhiTemp LVAR_FLOAT fTempFloat LVAR_FLOAT fTempFloat2 LVAR_FLOAT fTempDistance // useful flag variables LVAR_INT flagTempFlag LVAR_INT flagTempFlag2 LVAR_INT flagCutscenePlaying LVAR_INT flagCleaningUpSkippedCutscene LVAR_INT flagSkipCutscene // Clear cutscene flags flagCutscenePlaying = 0 flagCleaningUpSkippedCutscene = 0 flagSkipCutscene = 0 m_stage = 0 m_goals = 0 m_passed = 0 m_failed = 0 m_quit = 0 m_pause = 0 m_status = 0 m_fail_reason = 0 m_mission_timer = 0 display_debug = 0 TIMERA = 0 TIMERB = 0 // Consts // ...reasons for failure CONST_INT SCRASH2_FAILED_UNKNOWN 0 CONST_INT SCRASH2_FAILED_TRAIN_GONE 1 CONST_INT SCRASH2_FAILED_REPORTER_DEAD 2 CONST_INT SCRASH2_FAILED_LOST_THE_REPORTER 3 CONST_INT SCRASH2_FAILED_MEETING_OVER 4 CONST_INT SCRASH2_FAILED_REPORTER_ESCAPED 5 CONST_INT SCRASH2_FAILED_TARGET_ESCAPED 6 CONST_INT SCRASH2_FAILED_REPORTER_SPOOKED 7 // ...number of other trains CONST_INT SCRASH2_NUMBER_OF_OTHER_TRAINS 3 // ...player arsing around distance (used to finish the mission quickly) CONST_INT SCRASH2_FAILURE_DISTANCE 2500 // ...reporter on pier AI CONST_INT SCRASH2_AI_REPORTER_ON_PIER_NOT_INITIALISED 0 //CONST_INT SCRASH2_AI_REPORTER_ON_PIER_COWER 1 //CONST_INT SCRASH2_AI_REPORTER_ON_PIER_COWERING 2 CONST_INT SCRASH2_AI_REPORTER_ON_PIER_FLEE 3 CONST_INT SCRASH2_AI_REPORTER_ON_PIER_FLEEING 4 // ...target AI CONST_INT SCRASH2_AI_TARGET_NOT_INITIALISED 0 CONST_INT SCRASH2_AI_TARGET_KILL_PLAYER 3 CONST_INT SCRASH2_AI_TARGET_KILLING_PLAYER 4 //CONST_INT SCRASH2_AI_TARGET_FLEE 5 //CONST_INT SCRASH2_AI_TARGET_FLEEING 6 // ...suspicion status CONST_INT SCRASH2_SUSPICION_STATUS_NONE 0 CONST_INT SCRASH2_SUSPICION_STATUS_TOO_CLOSE 1 CONST_INT SCRASH2_SUSPICION_STATUS_TOO_FAR_AWAY 2 CONST_INT SCRASH2_SUSPICION_STATUS_PLAYER_AHEAD 3 // ...suspicion areas CONST_INT SCRASH2_SUSPICION_AREA_NONE 0 CONST_INT SCRASH2_SUSPICION_AREA_PLATFORM 1 CONST_INT SCRASH2_SUSPICION_AREA_LOW_STEPS 2 CONST_INT SCRASH2_SUSPICION_AREA_HIGH_STEPS 3 CONST_INT SCRASH2_SUSPICION_AREA_ENTRANCE 4 CONST_INT SCRASH2_SUSPICION_AREA_KERB 5 // ...suspicion distances when reporter walking // NOTE: The lo/hi distances prevent constant switching between two states when the reporter is on the distance boundary CONST_FLOAT SCRASH2_SUSPICION_WALK_MAX_DISTANCE_LO 8.0 CONST_FLOAT SCRASH2_SUSPICION_WALK_MAX_DISTANCE_HI 10.0 // ...safe distances when reporter in car // REMOVE OLD-STYLE SPOOK-O-METER //CONST_FLOAT SCRASH2_TOO_CLOSE_INSTANT 25.0 // END REMOVE OLD-STYLE SPOOK-O-METER CONST_FLOAT SCRASH2_TOO_CLOSE 40.0 CONST_FLOAT SCRASH2_TOO_FAR_AWAY 100.0 CONST_FLOAT SCRASH2_TOO_FAR_AWAY_INSTANT 140.0 // ...Taxi enroute locations CONST_INT SCRASH2_TAXI_WAYPOINT_NONE 0 CONST_INT SCRASH2_TAXI_WAYPOINT_A 1 CONST_INT SCRASH2_TAXI_WAYPOINT_B 2 CONST_INT SCRASH2_TAXI_WAYPOINT_C 3 CONST_INT SCRASH2_TAXI_WAYPOINT_D 4 CONST_INT SCRASH2_TAXI_WAYPOINT_E 5 CONST_INT SCRASH2_TAXI_WAYPOINT_F 6 CONST_INT SCRASH2_TAXI_WAYPOINT_G 7 CONST_INT SCRASH2_TAXI_WAYPOINT_H 8 CONST_INT SCRASH2_TAXI_WAYPOINT_I 9 CONST_INT SCRASH2_TAXI_WAYPOINT_J 10 CONST_INT SCRASH2_TAXI_WAYPOINT_K 11 CONST_INT SCRASH2_TAXI_WAYPOINT_L 12 CONST_INT SCRASH2_TAXI_WAYPOINT_PIER 13 // REMOVE TAXI ENFORCED STOPS // ...Taxi stopped status //CONST_INT SCRASH2_TAXI_STOPPED_STATUS_NO_STOP 0 //CONST_INT SCRASH2_TAXI_STOPPED_STATUS_TO_STOP 1 //CONST_INT SCRASH2_TAXI_STOPPED_STATUS_STOPPED 2 // END REMOVE TAXI ENFORCED STOPS // ...Station Walk status CONST_INT SCRASH2_STATION_WALK_NOT_STARTED 0 CONST_INT SCRASH2_STATION_WALK_TOP_OF_STAIRS_INIT 1 CONST_INT SCRASH2_STATION_WALK_TOP_OF_STAIRS_LOCATE 2 CONST_INT SCRASH2_STATION_WALK_MID_LEVEL_INIT 3 CONST_INT SCRASH2_STATION_WALK_MID_LEVEL_LOCATE 4 CONST_INT SCRASH2_STATION_WALK_FOOT_OF_STAIRS_INIT 5 CONST_INT SCRASH2_STATION_WALK_FOOT_OF_STAIRS_LOCATE 6 CONST_INT SCRASH2_STATION_WALK_READY_TO_LOOK_AROUND 7 CONST_INT SCRASH2_STATION_WALK_KERB_INIT 8 CONST_INT SCRASH2_STATION_WALK_KERB_LOCATE 9 CONST_INT SCRASH2_STATION_WALK_WAIT_FOR_TAXI 10 // ...train speed CONST_FLOAT SCRASH2_MAX_TRAIN_SPEED_mps 25.0 // ADD NEW-STYLE SPOOK-O-METER CONST_INT SCRASH2_SPOOKOMETER_INCREASE_msec 60 CONST_INT SCRASH2_SPOOKOMETER_DECREASE_msec 40 // END ADD NEW-STYLE SPOOK-O-METER // ...General CONST_INT SCRASH2_PERSIST -2 // Mission Specific Variables // Integer Variables // ...chars (char) LVAR_INT charReporter LVAR_INT charTaxiDriverLS LVAR_INT charTarget // ...cars (car) LVAR_INT carTrain LVAR_INT carCarriage LVAR_INT carCarriage2 LVAR_INT carOtherTrain[SCRASH2_NUMBER_OF_OTHER_TRAINS] LVAR_INT carTaxiLS LVAR_INT carReporter LVAR_INT carMotorbike // ...objects (object) // ...blips (blip) LVAR_INT blipDestination LVAR_INT blipTrain LVAR_INT blipReporter LVAR_INT blipTarget LVAR_INT blipSniperRifle // ...pickups (pickup) LVAR_INT pickupSniperRifle // ...fx systems (fx) // ...decision makers (dm) LVAR_INT dmEmpty LVAR_INT dmTough // ...AI Status (ai) LVAR_INT aiReporterOnPier LVAR_INT aiTarget // ...general status (status) LVAR_INT statusSuspicion // REMOVE TAXI ENFORCED STOPS //LVAR_INT statusTaxiStopped // END REMOVE TAXI ENFORCED STOPS LVAR_INT statusStationWalk LVAR_INT statusStationWalkInit // ...Timers (timer) LVAR_INT timerTrain LVAR_INT timerReporter LVAR_INT timerTaxiLS LVAR_INT timerMeeting LVAR_INT timerShootingOnPierReactionDelay LVAR_INT timerReporterAI LVAR_INT timerReporterAnim LVAR_INT timerTargetAI LVAR_INT timerText LVAR_INT timerHelpText // REMOVE OLD-STYLE SPOOK-O-METER //LVAR_INT timerSuspicionNextUpdate //LVAR_INT timerFailureConditions // END REMOVE OLD-STYLE SPOOK-O-METER // ADD NEW-STYLE SPOOK-O-METER LVAR_INT timerTooFarAway LVAR_INT timerTooClose // END ADD NEW-STYLE SPOOK-O-METER LVAR_INT timerTaxiStopped LVAR_INT timerJustStartedDrivingLeeway LVAR_INT timerLookAtAnim LVAR_INT timerReporterSpookedAndFleeing // ...Counters (count) // ...mission specific (n) LVAR_INT nTrainDistanceFromPlayer LVAR_INT nTrainDistanceFromLS LVAR_INT nPlayerDistanceFromLS LVAR_INT nDistanceSFtoLS LVAR_INT nOtherTrainPosition[SCRASH2_NUMBER_OF_OTHER_TRAINS] LVAR_INT nSuspicionWalkArea LVAR_INT nTaxiWaypointID LVAR_INT nTaxiChanceOfBurstOfSpeed // REMOVE TAXI ENFORCED STOPS //LVAR_INT nTaxiChanceOfStopping // END REMOVE TAXI ENFORCED STOPS LVAR_INT nTaxiNumberOfWaypoints LVAR_INT nFailure LVAR_INT nSniperAmmoAtStartOfMission // Text Label Variables // Float Variables // ...area variables (xlo, ylo, zlo, xhi, yhi, zhi) // ...position variables (xpos, ypos, zpos) LVAR_FLOAT xposDestination yposDestination zposDestination LVAR_FLOAT xposWaypoint yposWaypoint zposWaypoint // Boolean Variables // ...flags (flag) LVAR_INT flagTrainArrivedAtLS LVAR_INT flagTriggerReporter LVAR_INT flagCheckForPlayerNearLS LVAR_INT flagTaxiApproachingReporter LVAR_INT flagTriggerTaxiLS LVAR_INT flagAllowTaxiLS LVAR_INT flagReporterAssassinated LVAR_INT flagTargetAssassinated LVAR_INT flagPlayerDetectedOnPier LVAR_INT flagMeetingOver LVAR_INT flagPerformingShootingOnPierReactionDelay LVAR_INT flagReporterOnPier LVAR_INT flagPlayerOnPier LVAR_INT flagDisplayedAssassinationText LVAR_INT flagJustStartedDriving LVAR_INT flagReporterSpooked LVAR_INT flagReporterGettingIntoCab LVAR_INT flagRemoveSniperRifle LVAR_INT flagPlayerShootingNearWalkingReporter LVAR_INT flagReporterSpookedAndFleeing LVAR_INT flagTaxiLSCreationPositionAlpha LVAR_INT flagPlayerAheadOfReporterOnPier LVAR_INT flagDisplayedTooClose LVAR_INT flagCheckForRemoveMotorbike LVAR_INT flagPreviouslySuspicious LVAR_INT flagAllowTurnTowardsPlayer LVAR_INT flagDisplayedSniperRifleHelp LVAR_INT flagDisplayedSniperRifleHelp2 // ...exists (exists) LVAR_INT existsTrain LVAR_INT existsReporter LVAR_INT existsTaxiLS LVAR_INT existsTarget // Clear Exists existsTrain = 0 existsReporter = 0 existsTaxiLS = FALSE existsTarget = FALSE // ...loaded (loaded) LVAR_INT loadedTaxiLS // Clear Loaded loadedTaxiLS = FALSE // Clear timers // Clear important flags flagReporterAssassinated = FALSE flagTargetAssassinated = FALSE flagPlayerDetectedOnPier = FALSE flagReporterOnPier = FALSE flagReporterSpooked = FALSE flagRemoveSniperRifle = TRUE flagCheckForRemoveMotorbike = FALSE flagDisplayedSniperRifleHelp = FALSE flagDisplayedSniperRifleHelp2 = FALSE // ***** FAKE ENTITY CREATION TO FOOL THE COMPILER ***** // The compiler just needs to verify there is a CREATE_ before usage IF m_stage = -99 WRITE_DEBUG SHOULD_NEVER_BE_IN_FAKE_ENTITY_CREATION // Cars CREATE_MISSION_TRAIN 11 0.0 0.0 0.0 FALSE carTrain CREATE_CAR TAXI 0.0 0.0 0.0 carTaxiLS CREATE_CAR SANCHEZ 0.0 0.0 0.0 carMotorbike REPEAT SCRASH2_NUMBER_OF_OTHER_TRAINS nLoop CREATE_MISSION_TRAIN 10 0.0 0.0 0.0 FALSE carOtherTrain[nLoop] ENDREPEAT // Peds CREATE_CHAR PEDTYPE_CIVMALE WMYBU 0.0 0.0 0.0 charReporter CREATE_CHAR PEDTYPE_CIVMALE BMYBE 0.0 0.0 0.0 charTaxiDriverLS CREATE_CHAR PEDTYPE_CIVMALE HMYRI 0.0 0.0 0.0 charTarget // Pickups CREATE_PICKUP_WITH_AMMO SNIPER PICKUP_ONCE 0 0.0 0.0 0.0 pickupSniperRifle // Blips ADD_BLIP_FOR_COORD 0.0 0.0 0.0 blipDestination ADD_BLIP_FOR_CAR carTrain blipTrain ADD_BLIP_FOR_CHAR charReporter blipReporter ADD_BLIP_FOR_CHAR charTarget blipTarget ADD_BLIP_FOR_PICKUP pickupSniperRifle blipSniperRifle ENDIF // Mission Text LOAD_MISSION_TEXT SCrash2 // Intro Cutscene GOSUB SCrash2_Intro_Cutscene // Load Char Mission Decision Makers LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY dmEmpty LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH dmTough // Mission Initialisation GOSUB SCrash2_Initialisation // Special: check how much sniper ammo (if any) the player has at the start of the mission. This is to // ensure that the player doesn't lose his sniper rifle at the end if he already had one at the start. GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_SNIPERRIFLE nSniperAmmoAtStartOfMission flagRemoveSniperRifle = TRUE // ************************************************************************************************************* // MISSION LOOP // ************************************************************************************************************* mission_loop_SCrash2: WAIT 0 // Special shortcut for Craig F to test all missions in order IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S m_passed = 1 GOTO end_of_main_loop_SCrash2 ENDIF // Debug Stuff GOSUB SCrash2_Debug_Tools GOSUB SCrash2_Debug_Shortcuts IF m_quit = 1 OR m_pause = 1 GOTO end_of_main_loop_SCrash2 ENDIF // Housekeeping GOSUB SCrash2_Frame_Counter GOSUB SCrash2_Additional_Timers // Special conditions IF IS_CHAR_DEAD scplayer m_failed = 1 GOTO end_of_main_loop_SCrash2 ENDIF // Mission Stage processing // *** INITIALISATION NOW TAKES PLACE BEFORE THE MAIN LOOP *** IF m_stage = 0 WRITE_DEBUG STAGE_SHOULD_NEVER_BE_0_IN_MAIN_LOOP ENDIF // ...Stage 1: Get the sniper rifle IF m_stage = 1 GOSUB SCrash2_Stage_GetTheSniperRifle ENDIF // ...Stage 2: Get to the Train Station IF m_stage = 2 GOSUB SCrash2_Stage_GetToTheTrainStation ENDIF // ...Stage 3: Follow the Train IF m_stage = 3 GOSUB SCrash2_Stage_FollowTheTrain ENDIF // ...Stage 4: Reporter Hails a Taxi IF m_stage = 4 GOSUB SCrash2_Stage_ReporterHailsATaxi ENDIF // ...Stage 5: Reporter Goes To Meeting Place IF m_stage = 5 GOSUB SCrash2_Stage_ReporterGoesToMeetingPlace ENDIF // ...Stage 6: Reporter and Target meet IF m_stage = 6 GOSUB SCrash2_Stage_ReporterMeetsTheTarget ENDIF // ...final stage IF m_stage = 7 m_passed = 1 ENDIF // Continuous update methods and event checking // End of Main Loop // ***** DON'T CHANGE ***** end_of_main_loop_SCrash2: IF m_quit = 0 IF m_failed = 0 IF m_passed = 0 // Restart main loop GOTO mission_loop_SCrash2 ELSE // Mission passed GOSUB mission_passed_SCrash2 RETURN ENDIF ELSE // Mission failed GOSUB mission_failed_SCrash2 RETURN ENDIF ELSE RETURN // quits out - goes to cleanup ENDIF WRITE_DEBUG SHOULD_NEVER_BE_HERE_IN_END_OF_MAIN_LOOP RETURN // Should never reach here // ************************************************************************************************************* // MISSION STAGE GOSUBS // ************************************************************************************************************* // **************************************** // STAGE 1: Get the Sniper Rifle SCrash2_Stage_GetTheSniperRifle: // Initialisation for this stage IF m_goals = 0 GOSUB SCrash2_Create_SniperRifle // Instructions: Pick up the sniper rifle PRINT_NOW SCR2_21 7000 1 m_goals++ ENDIF // FOR NOW: Give the player the sniper rifle and quit IF m_goals = 1 IF HAS_PICKUP_BEEN_COLLECTED pickupSniperRifle REMOVE_BLIP blipSniperRifle m_goals = 99 ENDIF ENDIF // Continuous updates for stage // exit IF m_goals = 99 GOSUB SCrash2_next_stage ENDIF RETURN // **************************************** // STAGE 2: Get to the Train Station SCrash2_Stage_GetToTheTrainStation: // turn off pathing when following the train DISPLAY_RADAR 2 // PATHING OFF // This should never happen, but I still need to do these checks. // If it should happen, then just fail the mission IF m_goals > 0 AND IS_CHAR_DEAD charReporter m_failed = 1 RETURN ENDIF IF m_goals > 1 AND IS_CAR_DEAD carTrain m_failed = 1 RETURN ENDIF // Initialisation for this stage IF m_goals = 0 GOSUB SCrash2_Create_Reporter_SF xposDestination = -1952.7909 yposDestination = 136.5608 zposDestination = 25.2734 ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination CHANGE_BLIP_DISPLAY blipDestination BLIP_ONLY // Instruction: reach station PRINT_NOW SCR2_00 8000 1 timerTrain = m_mission_timer + 6000 m_goals++ ENDIF // Create Train IF m_goals = 1 IF timerTrain < m_mission_timer GOSUB SCrash2_Create_Train SET_TRAIN_SPEED carTrain 20.0 SET_TRAIN_CRUISE_SPEED carTrain 20.0 // Message: Train arriving PRINT SCR2_01 10000 1 m_goals++ ENDIF ENDIF // Make the train stop (instantly make it go slow, then let it roll to a stop from there) IF m_goals = 2 IF LOCATE_CAR_2D carTrain -1944.5453 130.8166 5.0 5.0 FALSE SET_TRAIN_SPEED carTrain 4.0 SET_TRAIN_CRUISE_SPEED carTrain 0.0 m_goals++ ENDIF ENDIF // Reporter enters train IF m_goals = 3 IF IS_CAR_STOPPED carTrain GET_TRAIN_CARRIAGE carTrain 1 carCarriage TASK_ENTER_CAR_AS_PASSENGER charReporter carCarriage 500 -1 // Give the player a period of time (quite generous) for the player to reach the station timerTrain = m_mission_timer + 60000 m_goals++ ENDIF ENDIF // Wait for the player to reach the station IF m_goals = 4 xloTemp = -1978.1010 yloTemp = 78.2240 xhiTemp = -1922.0023 yhiTemp = 203.4028 IF IS_CHAR_IN_AREA_2D scplayer xloTemp yloTemp xhiTemp yhiTemp FALSE // ...player in station, so set the train moving LOCK_CAR_DOORS carTrain CARLOCK_LOCKOUT_PLAYER_ONLY SET_TRAIN_CRUISE_SPEED carTrain 40.0 REMOVE_BLIP blipDestination ADD_BLIP_FOR_CAR carTrain blipTrain // Remove the reporter after it has boarded the train REMOVE_CHAR_ELEGANTLY charReporter existsReporter = 0 // Instruction: Train leaving for LS PRINT_NOW SCR2_02 10000 1 m_goals = 99 ELSE IF timerTrain < m_mission_timer // ...player hasn't made it to the station in decent time, so make the train pull away slowly LOCK_CAR_DOORS carTrain CARLOCK_LOCKOUT_PLAYER_ONLY SET_TRAIN_CRUISE_SPEED carTrain 5.0 // Give the player a bit more time to arrive before failure timerTrain = m_mission_timer + 60000 m_goals++ ENDIF ENDIF ENDIF // Wait for the player to reach the station platform IF m_goals = 5 xloTemp = -1978.1010 yloTemp = 78.2240 xhiTemp = -1922.0023 yhiTemp = 203.4028 IF IS_CHAR_IN_AREA_2D scplayer xloTemp yloTemp xhiTemp yhiTemp FALSE REMOVE_BLIP blipDestination ADD_BLIP_FOR_CAR carTrain blipTrain // Instruction: Train leaving for LS PRINT_NOW SCR2_02 10000 1 SET_TRAIN_CRUISE_SPEED carTrain 10.0 m_goals = 99 ELSE IF timerTrain < m_mission_timer // ...player never made it in time m_failed = 1 m_fail_reason = SCRASH2_FAILED_TRAIN_GONE ENDIF ENDIF ENDIF // Continuous updates for stage // ---------------------------- // exit IF m_goals = 99 GOSUB SCrash2_next_stage ENDIF RETURN // **************************************** // STAGE 3: Follow the train to LA SCrash2_Stage_FollowTheTrain: // This should never happen, but I still need to do these checks. // If it should happen, then just fail the mission IF IS_CAR_DEAD carTrain m_failed = 1 RETURN ENDIF // Initialisation for this stage IF m_goals = 0 nTrainDistanceFromPlayer = 0 nTrainDistanceFromLS = 0 nPlayerDistanceFromLS = 0 nDistanceSFtoLS = 0 flagTrainArrivedAtLS = 0 flagTriggerReporter = 0 flagCheckForPlayerNearLS = 0 // Coordinates of destination xposDestination = 833.7101 yposDestination = -1383.6434 zposDestination = -2.6352 // Indicate that other train positions haven't been calculated yet REPEAT SCRASH2_NUMBER_OF_OTHER_TRAINS nLoop nOtherTrainPosition[nLoop] = -1 ENDREPEAT // Set a blip at the LS train station entrance // ADD_BLIP_FOR_COORD 812.4495 -1343.4883 12.5320 blipDestination // REMOVE TRAIN PROGRESS BAR // // Display the train's distance from LS // DISPLAY_ONSCREEN_COUNTER_WITH_STRING g_SCrash2_distanceKM COUNTER_DISPLAY_BAR SCR2_50 // END REMOVE TRAIN PROGRESS BAR // Don't let the player's wanted level increase so quickly SET_WANTED_MULTIPLIER 0.3 m_goals++ ENDIF // Has the train reached it's destination? IF m_goals = 1 IF LOCATE_CAR_2D carTrain xposDestination yposDestination 5.0 5.0 FALSE // Train at station, so instantly slow it down then let it roll to a stop SET_TRAIN_SPEED carTrain 16.0 SET_TRAIN_CRUISE_SPEED carTrain 0.0 // Info: The train is arriving PRINT_NOW SCR2_03 11000 1 timerText = m_mission_timer + 10000 flagTrainArrivedAtLS = 1 m_goals++ ENDIF ENDIF // Has the arrival text timed out? IF m_goals = 2 IF timerText < m_mission_timer // ...display the spook-o-meter and the explanation text GOSUB SCrash2_Initialise_Spook_Meter PRINT_NOW SCR2_09 9000 1 timerText = m_mission_timer + 8000 m_goals++ ENDIF ENDIF // Has the spook-o-meter text timed out? IF m_goals = 3 IF timerText < m_mission_timer m_goals++ ENDIF ENDIF // Has the train stopped? IF m_goals = 4 IF IS_CAR_STOPPED carTrain // Give the player a period of time to trigger the next stage before it is automatically triggered flagCheckForPlayerNearLS = 1 timerTrain = m_mission_timer + 120000 REMOVE_BLIP blipTrain // REMOVE TRAIN PROGRESS BAR // CLEAR_ONSCREEN_COUNTER g_SCrash2_distanceKM // END REMOVE TRAIN PROGRESS BAR m_goals++ ENDIF ENDIF // Is it time to trigger the reporter? IF m_goals = 5 IF flagTriggerReporter = 1 m_goals = 99 ENDIF ENDIF // Continuous updates for stage GOSUB SCrash2_Calculate_Train_Distance_From_Player GOSUB SCrash2_Calculate_Train_Distance_From_LS GOSUB SCrash2_Calculate_Player_Distance_From_LS GOSUB SCrash2_Update_Train_Cruise_Speed GOSUB SCrash2_Update_Train_Distance_To_LS GOSUB SCrash2_Update_Other_Trains // Check for trigger reporter conditions // ...timer elapsed IF flagTriggerReporter = 0 AND flagCheckForPlayerNearLS = 1 IF timerTrain < m_mission_timer flagTriggerReporter = 1 ENDIF ENDIF // ...player nearby IF flagTriggerReporter = 0 AND flagCheckForPlayerNearLS = 1 IF nPlayerDistanceFromLS < 300 flagTriggerReporter = 1 ENDIF ENDIF // USE A CONSTANT SPEED (so just let the level play out as normal until it naturally fails) /* // ...if the player is too far away, then put him out of his misery IF flagTriggerReporter = 0 AND flagCheckForPlayerNearLS = 1 IF nPlayerDistanceFromLS > SCRASH2_FAILURE_DISTANCE m_failed = 1 m_fail_reason = SCRASH2_FAILED_LOST_THE_REPORTER RETURN ENDIF ENDIF */ // END USE A CONSTANT SPEED // ...get rid of the optional motorbike? IF flagCheckForRemoveMotorbike = TRUE IF NOT IS_CHAR_IN_ZONE scplayer SF IF IS_CAR_DEAD carMotorbike flagCheckForRemoveMotorbike = FALSE ENDIF IF nPlayerDistanceFromLS < 2800 GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp GET_CAR_COORDINATES carMotorbike xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance IF fTempDistance < 100.0 // ...player may be using the motorbike, so don't check for removal any longer flagCheckForRemoveMotorbike = FALSE ELSE // ...player far away from motorbike, so clear it up flagCheckForRemoveMotorbike = FALSE MARK_CAR_AS_NO_LONGER_NEEDED carMotorbike MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ ENDIF ENDIF ENDIF ENDIF // exit IF m_goals = 99 GOSUB SCrash2_next_stage ENDIF RETURN // **************************************** // STAGE 4: Reporter Hails a Taxi SCrash2_Stage_ReporterHailsATaxi: // turn back on pathing when trying to follow the taxi DISPLAY_RADAR 3 // PATHING ON // Initialisation for this stage IF m_goals = 0 // Instructions: The reporter is leaving. Follow without being seen. PRINT SCR2_04 5000 1 // Set up suspicion level variables GOSUB SCrash2_Initialise_Suspicion_Level // Create the reporter on the platform GOSUB SCrash2_Create_Reporter_LS ADD_BLIP_FOR_CHAR charReporter blipReporter // REMOVE_BLIP blipDestination // Get rid of the train timerTrain = m_mission_timer + 10000 timerReporterAnim = 0 timerReporterSpookedAndFleeing = 0 // Clear any flags used in this stage flagAllowTaxiLS = FALSE flagTriggerTaxiLS = FALSE flagTaxiApproachingReporter = FALSE flagReporterGettingIntoCab = FALSE flagReporterSpookedAndFleeing = FALSE flagDisplayedTooClose = FALSE flagAllowTurnTowardsPlayer = FALSE // Switch off the roads the taxi will travel on SWITCH_ROADS_OFF 789.5950 -1387.9701 11.5469 807.2843 -1334.5457 13.7250 SWITCH_ROADS_OFF 804.9978 -1414.0320 11.3801 908.0844 -1386.6179 13.5524 SWITCH_ROADS_OFF 802.1913 -1335.0664 11.1828 911.4662 -1313.0450 13.7469 // Reset the station walk status statusStationWalk = SCRASH2_STATION_WALK_NOT_STARTED statusStationWalkInit = SCRASH2_STATION_WALK_NOT_STARTED m_goals++ CHECKPOINT_SAVE 99 ENDIF // Failure Conditions // ------------------ IF existsReporter = TRUE // ...reporter dead IF IS_CHAR_DEAD charReporter m_failed = TRUE m_fail_reason = SCRASH2_FAILED_REPORTER_DEAD RETURN ENDIF // ...reporter damaged IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR charReporter scplayer m_failed = TRUE m_fail_reason = SCRASH2_FAILED_REPORTER_SPOOKED TASK_SMART_FLEE_CHAR charReporter scplayer 9999.0 10000 RETURN ENDIF ENDIF // If the player has been shooting near the reporter, check if the timeout has occurred so that the 'spooked' message can be displayed IF flagPlayerShootingNearWalkingReporter = TRUE IF timerReporterSpookedAndFleeing < m_mission_timer m_failed = TRUE m_fail_reason = SCRASH2_FAILED_REPORTER_SPOOKED ENDIF RETURN ENDIF // If the player has attacked the taxi close to the reporter, check for the timeout before mission failed IF flagReporterSpookedAndFleeing = TRUE IF timerReporterSpookedAndFleeing < m_mission_timer m_failed = TRUE m_fail_reason = SCRASH2_FAILED_REPORTER_SPOOKED ENDIF RETURN ENDIF // Taxi checks when taxi approaching reporter IF existsTaxiLS = TRUE AND flagTaxiApproachingReporter = TRUE // Taxi is close to reporter, so any damage now will spook the reporter IF NOT IS_CAR_DEAD carTaxiLS // Car not dead, so check various types of damage // ...check for driver dead IF IS_CHAR_DEAD charTaxiDriverLS flagReporterSpookedAndFleeing = TRUE ENDIF // ...check for driver not in car IF NOT IS_CHAR_IN_CAR charTaxiDriverLS carTaxiLS flagReporterSpookedAndFleeing = TRUE ENDIF // ...check for taxi damaged by player IF HAS_CAR_BEEN_DAMAGED_BY_CHAR carTaxiLS scplayer // ...taxi has been damaged, but if the player is in a car at low speed, treat the // damage as accidental and ignore it flagTempFlag = TRUE IF IS_CHAR_IN_ANY_CAR scplayer GET_CHAR_SPEED scplayer fTempFloat IF fTempFloat < 13.0000 // ...low speed, so treat the damage as accidental flagTempFlag = FALSE CLEAR_CAR_LAST_DAMAGE_ENTITY carTaxiLS ENDIF ENDIF flagReporterSpookedAndFleeing = flagTempFlag ENDIF // ...check for player in taxi IF IS_CHAR_IN_CAR scplayer carTaxiLS flagReporterSpookedAndFleeing = TRUE ENDIF // If now spooked, set up the timer IF flagReporterSpookedAndFleeing = TRUE IF NOT IS_CHAR_IN_ANY_CAR charReporter // ...if reporter not in the taxi, let him flee a bit before failing TASK_SMART_FLEE_CHAR charReporter scplayer 9999.0 10000 ENDIF // ...allow the reporter to flee a while before failing // NOTE: This also allows the 'is reporter dead' check to take place and display a better failure message timerReporterSpookedAndFleeing = m_mission_timer + 1000 RETURN ENDIF ELSE // Car dead, so make reporter flee flagReporterSpookedAndFleeing = TRUE IF NOT IS_CHAR_IN_ANY_CAR charReporter // ...if reporter not in the taxi, let him flee a bit before failing TASK_SMART_FLEE_CHAR charReporter scplayer 9999.0 10000 ENDIF // ...allow the reporter to flee a while before failing // NOTE: This also allows the 'is reporter dead' check to take place and display a better failure message timerReporterSpookedAndFleeing = m_mission_timer + 1000 RETURN ENDIF ENDIF // Taxi checks before taxi approaching reporter // NOTE: Only applies to taxi created in the alpha position, because the beta position is always approaching reporter IF existsTaxiLS = TRUE AND flagTaxiApproachingReporter = FALSE // Taxi is close to reporter, so any damage now will require a replacement cab IF NOT IS_CAR_DEAD carTaxiLS // Car not dead, so check various types of damage flagTempFlag = FALSE // ...check for driver dead IF IS_CHAR_DEAD charTaxiDriverLS flagTempFlag = TRUE ENDIF // ...check for driver not in car IF NOT IS_CHAR_IN_CAR charTaxiDriverLS carTaxiLS flagTempFlag = TRUE ENDIF // ...check for taxi damaged by player IF HAS_CAR_BEEN_DAMAGED_BY_CHAR carTaxiLS scplayer flagTempFlag = TRUE ENDIF // ...check for player in taxi IF IS_CHAR_IN_CAR scplayer carTaxiLS flagTempFlag = TRUE ENDIF // If player has attacked the taxi, then create the second one instead at the beta position IF flagTempFlag = TRUE MARK_CAR_AS_NO_LONGER_NEEDED carTaxiLS MARK_CHAR_AS_NO_LONGER_NEEDED charTaxiDriverLS existsTaxiLS = FALSE flagTaxiLSCreationPositionAlpha = FALSE GOSUB SCrash2_Create_Taxi_LS ENDIF ELSE // ...car dead, so mark it as no longer needed and create a new one at the beta position MARK_CAR_AS_NO_LONGER_NEEDED carTaxiLS MARK_CHAR_AS_NO_LONGER_NEEDED charTaxiDriverLS existsTaxiLS = FALSE flagTaxiLSCreationPositionAlpha = FALSE GOSUB SCrash2_Create_Taxi_LS ENDIF ENDIF // IF existsTaxiLS = TRUE // IF IS_CAR_DEAD carTaxiLS // OR IS_CHAR_DEAD charTaxiDriverLS // MARK_CAR_AS_NO_LONGER_NEEDED carTaxiLS // MARK_CHAR_AS_NO_LONGER_NEEDED charTaxiDriverLS // existsTaxiLS = FALSE // flagTriggerTaxiLS = FALSE // ENDIF // ENDIF // Subgoals // -------- // Make the reporter step forward IF m_goals = 1 TASK_GO_STRAIGHT_TO_COORD charReporter 833.4493 -1374.2609 -1.5078 PEDMOVE_WALK -1 m_goals++ ENDIF // If the reporter has stepped forward then play a look-around anim IF m_goals = 2 GET_SCRIPT_TASK_STATUS charReporter TASK_GO_STRAIGHT_TO_COORD m_status IF m_status = FINISHED_TASK // Play look-around anim (wait briefly to ensure it starts before checking if it has finished) TASK_PLAY_ANIM charReporter roadcross PED 4.0 FALSE FALSE FALSE FALSE -1 timerReporter = m_mission_timer + 250 m_goals++ ENDIF ENDIF /* // Check if the look-around anim has ended IF m_goals = 3 IF timerReporter < m_mission_timer IF NOT IS_CHAR_PLAYING_ANIM charReporter roadcross // Make the ped walk up the stairs OPEN_SEQUENCE_TASK nSeqTask TASK_GO_STRAIGHT_TO_COORD -1 829.4084 -1359.6791 -1.5006 PEDMOVE_WALK -2 // Foot of stairs TASK_GO_STRAIGHT_TO_COORD -1 836.5355 -1345.2378 6.1866 PEDMOVE_WALK -2 // Mid-stairs part 1 TASK_GO_STRAIGHT_TO_COORD -1 835.9343 -1344.0736 6.1875 PEDMOVE_WALK -2 // Mid-stairs part 2 TASK_GO_STRAIGHT_TO_COORD -1 824.1583 -1343.3123 12.5000 PEDMOVE_WALK -2 // Top of stairs CLOSE_SEQUENCE_TASK nSeqTask PERFORM_SEQUENCE_TASK charReporter nSeqTask CLEAR_SEQUENCE_TASK nSeqTask m_goals++ ENDIF ENDIF ENDIF // Check if the ped is performing the sequence IF m_goals = 4 GET_SCRIPT_TASK_STATUS charReporter -1 m_status IF m_status = PERFORMING_TASK // ...task being performed m_goals++ ENDIF ENDIF */ // Check if the look-around anim has ended IF m_goals = 3 IF timerReporter < m_mission_timer IF NOT IS_CHAR_PLAYING_ANIM charReporter roadcross m_goals++ ENDIF ENDIF ENDIF // Maintain the walking sequence IF m_goals = 4 GOSUB SCrash2_Update_Station_Walk IF statusStationWalk = SCRASH2_STATION_WALK_READY_TO_LOOK_AROUND m_goals++ ENDIF ENDIF // Look-around IF m_goals = 5 // Trigger the look-around anim TASK_PLAY_ANIM charReporter roadcross PED 4.0 FALSE FALSE FALSE FALSE -1 timerReporter = m_mission_timer + 250 m_goals++ ENDIF /* // Check if the look-around anim has finished IF m_goals = 6 IF timerReporter < m_mission_timer IF NOT IS_CHAR_PLAYING_ANIM charReporter roadcross // Make the ped walk to the kerb TASK_GO_STRAIGHT_TO_COORD charReporter 803.7784 -1342.9255 12.5469 PEDMOVE_WALK -2 m_goals++ ENDIF ENDIF ENDIF // Check if the reporter is at the kerb IF m_goals = 7 GET_SCRIPT_TASK_STATUS charReporter TASK_GO_STRAIGHT_TO_COORD m_status IF m_status = FINISHED_TASK // Allow the taxi to be triggered (give the player some time to arrive) flagAllowTaxiLS = TRUE timerTaxiLS = m_mission_timer + 60000 // Info: reporter is hailing a cab IF IS_CHAR_IN_ANY_CAR scplayer PRINT_NOW SCR2_20 10000 1 ELSE PRINT_NOW SCR2_06 10000 1 ENDIF m_goals++ ENDIF ENDIF */ // Check if the look-around anim has finished IF m_goals = 6 IF timerReporter < m_mission_timer IF NOT IS_CHAR_PLAYING_ANIM charReporter roadcross statusStationWalk = SCRASH2_STATION_WALK_KERB_INIT statusStationWalkInit = SCRASH2_STATION_WALK_KERB_INIT m_goals++ ENDIF ENDIF ENDIF // Maintain the walking sequence IF m_goals = 7 GOSUB SCrash2_Update_Station_Walk IF statusStationWalk = SCRASH2_STATION_WALK_WAIT_FOR_TAXI // Allow the taxi to be triggered (give the player some time to arrive) flagAllowTaxiLS = TRUE timerTaxiLS = m_mission_timer + 60000 // Info: reporter is hailing a cab IF IS_CHAR_IN_ANY_CAR scplayer PRINT_NOW SCR2_20 10000 1 ELSE PRINT_NOW SCR2_06 10000 1 ENDIF // Allow the reporter to look at the player if suspicious flagAllowTurnTowardsPlayer = TRUE m_goals++ ENDIF ENDIF // Play the look-around anim IF m_goals = 8 GOSUB SCrash2_Update_Station_Walk IF flagReporterSpooked = FALSE OPEN_SEQUENCE_TASK nSeqTask TASK_ACHIEVE_HEADING -1 90.0000 TASK_PLAY_ANIM -1 roadcross PED 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK nSeqTask PERFORM_SEQUENCE_TASK charReporter nSeqTask CLEAR_SEQUENCE_TASK nSeqTask timerReporter = m_mission_timer + 250 m_goals++ ENDIF ENDIF // Check if the look-around anim has finished and either trigger it again, or hail a taxi IF m_goals = 9 GOSUB SCrash2_Update_Station_Walk IF flagReporterSpooked = FALSE IF timerReporter < m_mission_timer GET_SCRIPT_TASK_STATUS charReporter -1 m_status IF m_status = FINISHED_TASK // Is there a taxi approaching? IF flagTaxiApproachingReporter = TRUE // ...yes m_goals++ ELSE // ...no, so look around again m_goals-- ENDIF ENDIF ENDIF ENDIF ENDIF // Orientate, then hail cab // NOTE: If taxi approaching from secondary position then run to new position instead IF m_goals = 10 IF flagTaxiLSCreationPositionAlpha = TRUE // ...approaching at alpha position, so turn and hail it OPEN_SEQUENCE_TASK nSeqTask TASK_ACHIEVE_HEADING -1 180.0000 TASK_PLAY_ANIM -1 Hiker_Pose MISC 4.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK nSeqTask PERFORM_SEQUENCE_TASK charReporter nSeqTask CLEAR_SEQUENCE_TASK nSeqTask ELSE // ...approaching from beta position, so run to the other side of the station TASK_GO_STRAIGHT_TO_COORD charReporter 821.7603 -1334.6827 12.5391 PEDMOVE_RUN -2 ENDIF m_goals++ ENDIF // Wait for the cab to arrive IF m_goals = 11 GOSUB SCrash2_Update_Station_Walk IF flagReporterSpooked = FALSE flagTempFlag = FALSE // ...check if taxi stopped at alpha position IF flagTaxiLSCreationPositionAlpha = TRUE AND LOCATE_CAR_3D carTaxiLS 803.7784 -1342.9255 12.5469 7.0 7.0 2.0 FALSE flagTempFlag = TRUE ENDIF // ...check if taxi stopped at beta position IF flagTaxiLSCreationPositionAlpha = FALSE AND LOCATE_CAR_3D carTaxiLS 824.4391 -1330.7069 12.4174 7.0 7.0 2.0 FALSE flagTempFlag = TRUE ENDIF IF flagTempFlag = TRUE AND IS_CAR_STOPPED carTaxiLS // Reporter gets into car TASK_ENTER_CAR_AS_PASSENGER charReporter carTaxiLS -2 2 flagReporterGettingIntoCab = TRUE m_goals++ ENDIF ELSE // Cancel the hiker pose by playing the Idle stance IF IS_CHAR_PLAYING_ANIM charReporter Hiker_Pose IF timerReporterAnim < m_mission_timer TASK_PLAY_ANIM charReporter roadcross PED 4.0 FALSE FALSE FALSE FALSE 100 timerReporterAnim = m_mission_timer + 250 ENDIF ENDIF ENDIF ENDIF // Wait for the reporter to get in the taxi IF m_goals = 12 GET_SCRIPT_TASK_STATUS charReporter TASK_ENTER_CAR_AS_PASSENGER m_status IF m_status = FINISHED_TASK SET_TAXI_LIGHTS carTaxiLS OFF // Stop updating the walking suspicion areas nSuspicionWalkArea = SCRASH2_SUSPICION_AREA_NONE // Mark this as the Reporter's car carReporter = carTaxiLS m_goals = 99 ENDIF ENDIF // Continuous updates for stage // ---------------------------- // Load the taxi IF loadedTaxiLS = FALSE REQUEST_MODEL TAXI LOAD_ALL_MODELS_NOW IF HAS_MODEL_LOADED TAXI loadedTaxiLS = TRUE ENDIF ENDIF // Check if it is time to get rid of the train IF existsTrain = 1 IF timerTrain < m_mission_timer IF NOT IS_CAR_DEAD carTrain SET_TRAIN_CRUISE_SPEED carTrain 30.0 ENDIF MARK_MISSION_TRAINS_AS_NO_LONGER_NEEDED existsTrain = 0 ENDIF ENDIF // Check if it is time to trigger the taxi IF flagAllowTaxiLS = TRUE AND flagTriggerTaxiLS = FALSE IF LOCATE_CHAR_ANY_MEANS_3D scplayer 812.4495 -1343.4883 12.5320 80.0 80.0 20.0 FALSE // ...trigger the taxi flagTriggerTaxiLS = TRUE GOSUB SCrash2_Choose_Taxi_LS_Creation_Position GOSUB SCrash2_Create_Taxi_LS SET_TAXI_LIGHTS carTaxiLS ON ELSE IF timerTaxiLS < m_mission_timer m_failed = 1 m_fail_reason = SCRASH2_FAILED_LOST_THE_REPORTER RETURN ENDIF ENDIF ENDIF // Check if the taxi is approaching the reporter IF flagTaxiApproachingReporter = FALSE AND existsTaxiLS = TRUE IF LOCATE_CAR_3D carTaxiLS 796.9285 -1374.8674 12.3949 10.0 10.0 2.0 FALSE flagTaxiApproachingReporter = TRUE ENDIF ENDIF // Maintain Suspicion Level GOSUB SCrash2_Update_Walking_Suspicion_Area GOSUB SCrash2_Update_Walking_Spook_Meter IF m_failed = TRUE RETURN ENDIF // exit IF m_goals = 99 GOSUB SCrash2_next_stage ENDIF RETURN // **************************************** // STAGE 5: Reporter Goes To Meeting Place SCrash2_Stage_ReporterGoesToMeetingPlace: // Initialisation for this stage IF m_goals = 0 // Make the taxi drive to the destination // Set up the destination on the pier xposDestination = 366.4698 yposDestination = -2030.6428 zposDestination = 6.6582 // Choose the first waypoint destination nTaxiChanceOfBurstOfSpeed = 0 // REMOVE TAXI ENFORCED STOPS // nTaxiChanceOfStopping = 1 // END REMOVE TAXI ENFORCED STOPS nTaxiNumberOfWaypoints = 0 nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_NONE GOSUB SCrash2_Choose_Taxi_Waypoint // Don't allow the car to drive on the wrong side of the road SET_CAR_CAN_GO_AGAINST_TRAFFIC cartaxiLS FALSE // Spook-o-meter leeway timerJustStartedDrivingLeeway = m_mission_timer + 4000 flagJustStartedDriving = TRUE flagReporterOnPier = FALSE flagPlayerOnPier = FALSE flagPlayerAheadOfReporterOnPier = FALSE flagDisplayedTooClose = FALSE // Allow the taxi to warp if it becomes stuck ADD_STUCK_CAR_CHECK_WITH_WARP carTaxiLS 2.0 30000 TRUE TRUE TRUE 20 // Instructions: Follow the taxi PRINT_NOW SCR2_07 5000 1 // PRINT SCR2_17 5000 1 m_goals++ ENDIF // Failure conditions // ------------------ // ...reporter dead IF IS_CHAR_DEAD charReporter m_failed = 1 m_fail_reason = SCRASH2_FAILED_REPORTER_DEAD RETURN ENDIF // ...reporter damaged IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR charReporter scplayer m_failed = 1 m_fail_reason = SCRASH2_FAILED_REPORTER_SPOOKED RETURN ENDIF // If the player has attacked the taxi close to the reporter, check for the timeout before mission failed IF flagReporterSpookedAndFleeing = TRUE IF timerReporterSpookedAndFleeing < m_mission_timer m_failed = TRUE m_fail_reason = SCRASH2_FAILED_REPORTER_SPOOKED ENDIF RETURN ENDIF // Taxi checks IF NOT IS_CAR_DEAD carTaxiLS // Car not dead, so check various types of damage // ...check for driver dead IF IS_CHAR_DEAD charTaxiDriverLS flagReporterSpookedAndFleeing = TRUE ENDIF // ...check for driver not in car IF NOT IS_CHAR_IN_CAR charTaxiDriverLS carTaxiLS flagReporterSpookedAndFleeing = TRUE ENDIF // ...check for taxi damaged by player IF HAS_CAR_BEEN_DAMAGED_BY_CHAR carTaxiLS scplayer // ...taxi has been damaged, but if the player is in a car at low speed, treat the // damage as accidental and ignore it flagTempFlag = TRUE IF IS_CHAR_IN_ANY_CAR scplayer GET_CHAR_SPEED scplayer fTempFloat IF fTempFloat < 13.0000 // ...low speed, so treat the damage as accidental flagTempFlag = FALSE CLEAR_CAR_LAST_DAMAGE_ENTITY carTaxiLS ENDIF ENDIF flagReporterSpookedAndFleeing = flagTempFlag ENDIF // ...check for player in taxi IF IS_CHAR_IN_CAR scplayer carTaxiLS flagReporterSpookedAndFleeing = TRUE ENDIF // If now spooked, set up the timer IF flagReporterSpookedAndFleeing = TRUE IF IS_CHAR_IN_ANY_CAR charReporter // ...if reporter is in the taxi, fail immediately m_failed = TRUE m_fail_reason = SCRASH2_FAILED_REPORTER_SPOOKED ELSE // ...if reporter not in the taxi, let him flee a bit before failing timerReporterSpookedAndFleeing = m_mission_timer + 1000 TASK_SMART_FLEE_CHAR charReporter scplayer 9999.0 10000 ENDIF RETURN ENDIF ELSE // Car dead, so make reporter flee flagReporterSpookedAndFleeing = TRUE timerReporterSpookedAndFleeing = m_mission_timer + 1000 TASK_SMART_FLEE_CHAR charReporter scplayer 9999.0 10000 RETURN ENDIF // IF existsTaxiLS = TRUE // AND m_goals > 0 // IF IS_CAR_DEAD carTaxiLS // ...the taxi is dead, so make the reporter go to his destination using any means // existsTaxiLS = FALSE // TASK_CAR_DRIVE_TO_COORD charReporter -1 xposDestination yposDestination zposDestination 20.0 MODE_ACCURATE 0 DRIVINGMODE_AVOIDCARS // ENDIF // ENDIF // Subgoals // -------- // Check if the reporter has arrived at the destination, but only if the player isn't ahead of the reporter IF m_goals = 1 IF NOT statusSuspicion = SCRASH2_SUSPICION_STATUS_TOO_CLOSE AND NOT statusSuspicion = SCRASH2_SUSPICION_STATUS_PLAYER_AHEAD IF LOCATE_CHAR_ANY_MEANS_3D charReporter xposDestination yposDestination zposDestination 4.0 4.0 4.0 FALSE // Don't need the suspicion level anymore CLEAR_ONSCREEN_COUNTER g_SCrash2_spookKM m_goals = 99 ENDIF ENDIF ENDIF // Continuous updates for stage // ---------------------------- // Check if the reporter is on the pier IF flagReporterOnPier = FALSE IF LOCATE_CHAR_ANY_MEANS_3D charReporter 369.3609 -1671.8887 31.8110 14.0 6.0 4.0 FALSE flagReporterOnPier = TRUE SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 ENDIF ENDIF // Maintain the player's 'on pier' status IF flagPlayerOnPier = FALSE // ...player not on pier, so check if he is now IF LOCATE_CHAR_ANY_MEANS_3D scplayer 369.3609 -1671.8887 31.8110 14.0 4.0 4.0 FALSE flagPlayerOnPier = TRUE ENDIF ELSE // ...player on pier, so check if he has left it IF LOCATE_CHAR_ANY_MEANS_3D scplayer 370.2572 -1656.7902 31.7201 14.0 4.0 4.0 FALSE flagPlayerOnPier = FALSE ENDIF ENDIF // Maintain Suspicion Level GOSUB SCrash2_Update_Driving_Spook_Meter IF m_failed = TRUE RETURN ENDIF // Display assassination text IF flagDisplayedAssassinationText = FALSE AND flagReporterOnPier = TRUE AND flagPlayerOnPier = TRUE flagDisplayedAssassinationText = TRUE PRINT_NOW SCR2_18 10000 1 ENDIF // Keep tabs on the taxi's progress through the waypoints GOSUB SCrash2_Update_Taxi_Waypoint // exit IF m_goals = 99 GOSUB SCrash2_next_stage ENDIF RETURN // **************************************** // STAGE 6: Reporter Meets the Target SCrash2_Stage_ReporterMeetsTheTarget: IF IS_CHAR_DEAD charReporter flagReporterAssassinated = TRUE REMOVE_BLIP blipReporter ENDIF IF existsTarget = TRUE IF IS_CHAR_DEAD charTarget flagTargetAssassinated = TRUE REMOVE_BLIP blipTarget ENDIF ENDIF // Check to see if both Reporter and Target are dead IF flagReporterAssassinated = TRUE AND flagTargetAssassinated = TRUE m_goals = 99 ENDIF // Initialisation for this stage IF m_goals = 0 GOSUB SCrash2_Create_Target ADD_BLIP_FOR_CHAR charTarget blipTarget // Make the Target move to meet the reporter OPEN_SEQUENCE_TASK nSeqTask TASK_GO_STRAIGHT_TO_COORD -1 359.4136 -2036.9431 6.8360 PEDMOVE_WALK -2 // Midpoint TASK_GO_STRAIGHT_TO_COORD -1 362.2674 -2035.8441 6.8360 PEDMOVE_WALK -2 // Front of Kiosk TASK_ACHIEVE_HEADING -1 270.0000 CLOSE_SEQUENCE_TASK nSeqTask PERFORM_SEQUENCE_TASK charTarget nSeqTask CLEAR_SEQUENCE_TASK nSeqTask // Make the reporter move to meet the target OPEN_SEQUENCE_TASK nSeqTask TASK_GO_STRAIGHT_TO_COORD -1 363.1874 -2035.8441 6.8360 PEDMOVE_WALK -2 // Front of Kiosk TASK_ACHIEVE_HEADING -1 90.0000 CLOSE_SEQUENCE_TASK nSeqTask PERFORM_SEQUENCE_TASK charReporter nSeqTask CLEAR_SEQUENCE_TASK nSeqTask // Let the meeting take place for some time before quitting timerMeeting = m_mission_timer + 180000 // Clear any flags and states for this stage flagPlayerDetectedOnPier = FALSE flagMeetingOver = FALSE aiReporterOnPier = SCRASH2_AI_REPORTER_ON_PIER_NOT_INITIALISED aiTarget = SCRASH2_AI_TARGET_NOT_INITIALISED // Need a shooting delay because the code registers the player shooting before it registers target or reporter death timerShootingOnPierReactionDelay = 0 flagPerformingShootingOnPierReactionDelay = FALSE // Instructions: Assassinate them both PRINT_NOW SCR2_19 10000 1 IF displayed_sniper_help_text = FALSE // ...sniper rifle text not previously displayed flagDisplayedSniperRifleHelp = FALSE flagDisplayedSniperRifleHelp2 = FALSE timerHelpText = m_mission_timer + 10000 displayed_sniper_help_text = TRUE ELSE // ...sniper rifle text already displayed in another mission flagDisplayedSniperRifleHelp = TRUE flagDisplayedSniperRifleHelp2 = TRUE timerHelpText = 0 ENDIF m_goals++ CHECKPOINT_SAVE 1 ENDIF // Make sure both sequences have started IF m_goals = 1 IF NOT IS_CHAR_DEAD charReporter AND NOT IS_CHAR_DEAD charTarget GET_SCRIPT_TASK_STATUS charReporter -1 m_status IF m_status = PERFORMING_TASK // ...reporter performing task GET_SCRIPT_TASK_STATUS charTarget -1 m_status IF m_status = PERFORMING_TASK // ...target performing task m_goals++ ENDIF ENDIF ENDIF ENDIF // Wait for both sequences to stop IF m_goals = 2 IF NOT IS_CHAR_DEAD charReporter AND NOT IS_CHAR_DEAD charTarget GET_SCRIPT_TASK_STATUS charReporter -1 m_status IF m_status = FINISHED_TASK // ...reporter finished task GET_SCRIPT_TASK_STATUS charTarget -1 m_status IF m_status = FINISHED_TASK // ...target finished task // Switch off their collisions and get them in place for the anim // SET_CHAR_COLLISION charReporter FALSE // SET_CHAR_COLLISION charTarget FALSE TASK_CHAR_SLIDE_TO_COORD charTarget 362.2674 -2035.8441 6.8360 270.0000 4.0 TASK_CHAR_SLIDE_TO_COORD charReporter 363.1874 -2035.8441 6.8360 90.0000 4.0 // Wait a short period of time before checking if the tasks have finished timerReporter = m_mission_timer + 250 m_goals++ ENDIF ENDIF ENDIF ENDIF // Make them shake hands IF m_goals = 3 IF NOT IS_CHAR_DEAD charReporter AND NOT IS_CHAR_DEAD charTarget IF timerReporter < m_mission_timer // Make them shake hands TASK_PLAY_ANIM charReporter prtial_hndshk_biz_01 GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM charTarget prtial_hndshk_biz_01 GANGS 4.0 FALSE FALSE FALSE FALSE -1 // Wait a short period to make sure the anims start timerReporter = m_mission_timer + 250 // Get rid of the taxi MARK_CHAR_AS_NO_LONGER_NEEDED charTaxiDriverLS MARK_CAR_AS_NO_LONGER_NEEDED carTaxiLS m_goals++ ENDIF ENDIF ENDIF // Wait for them to stop shaking hands IF m_goals = 4 IF NOT IS_CHAR_DEAD charReporter AND NOT IS_CHAR_DEAD charTarget IF timerReporter < m_mission_timer IF NOT IS_CHAR_PLAYING_ANIM charReporter prtial_hndshk_biz_01 AND NOT IS_CHAR_PLAYING_ANIM charTarget prtial_hndshk_biz_01 // Switch on their collisions again // SET_CHAR_COLLISION charReporter TRUE // SET_CHAR_COLLISION charTarget TRUE m_goals++ ENDIF ENDIF ENDIF ENDIF // Make the reporter talk for a short random period of time IF m_goals = 5 IF NOT IS_CHAR_DEAD charReporter AND NOT IS_CHAR_DEAD charTarget TASK_PLAY_ANIM charReporter IDLE_chat PED 4.0 TRUE FALSE FALSE FALSE -1 GENERATE_RANDOM_INT_IN_RANGE 2000 5000 nTempInt timerReporter = m_mission_timer + nTempInt m_goals++ ENDIF ENDIF // Check if the reporter should stop talking IF m_goals = 6 IF NOT IS_CHAR_DEAD charReporter AND NOT IS_CHAR_DEAD charTarget IF timerReporter < m_mission_timer CLEAR_CHAR_TASKS charReporter m_goals++ ENDIF ENDIF ENDIF // Make the Target talk for a longer period of time IF m_goals = 7 IF NOT IS_CHAR_DEAD charReporter AND NOT IS_CHAR_DEAD charTarget TASK_PLAY_ANIM charTarget IDLE_chat PED 4.0 TRUE FALSE FALSE FALSE -1 GENERATE_RANDOM_INT_IN_RANGE 5000 10000 nTempInt timerReporter = m_mission_timer + nTempInt m_goals++ ENDIF ENDIF // Check if the Target should stop talking IF m_goals = 8 IF NOT IS_CHAR_DEAD charReporter AND NOT IS_CHAR_DEAD charTarget IF timerReporter < m_mission_timer CLEAR_CHAR_TASKS charTarget // Repeat from goal 5 (Reporter talking) m_goals = 5 ENDIF ENDIF ENDIF // Quit the meeting IF m_goals = 20 // Make the Target walk out of sight IF NOT IS_CHAR_DEAD charTarget OPEN_SEQUENCE_TASK nSeqTask TASK_GO_STRAIGHT_TO_COORD -1 361.2376 -2047.8412 6.8360 PEDMOVE_WALK -2 // Near Grill TASK_GO_STRAIGHT_TO_COORD -1 354.2802 -2049.6958 6.8360 PEDMOVE_WALK -2 // Corner of Grill TASK_GO_STRAIGHT_TO_COORD -1 354.8605 -2057.5879 6.8360 PEDMOVE_WALK -2 // Out of sight CLOSE_SEQUENCE_TASK nSeqTask PERFORM_SEQUENCE_TASK charTarget nSeqTask CLEAR_SEQUENCE_TASK nSeqTask ENDIF // Make the reporter move to meet the target IF NOT IS_CHAR_DEAD charReporter OPEN_SEQUENCE_TASK nSeqTask TASK_GO_STRAIGHT_TO_COORD -1 361.2376 -2047.8412 6.8360 PEDMOVE_WALK -2 // Near Grill TASK_GO_STRAIGHT_TO_COORD -1 354.2802 -2049.6958 6.8360 PEDMOVE_WALK -2 // Corner of Grill TASK_GO_STRAIGHT_TO_COORD -1 354.8630 -2060.0498 6.8360 PEDMOVE_WALK -2 // Out of sight CLOSE_SEQUENCE_TASK nSeqTask PERFORM_SEQUENCE_TASK charReporter nSeqTask CLEAR_SEQUENCE_TASK nSeqTask ENDIF // Info: The Meeting is over PRINT_NOW SCR2_05 10000 1 m_goals++ ENDIF // Make sure both sequences have started IF m_goals = 21 IF NOT IS_CHAR_DEAD charReporter AND NOT IS_CHAR_DEAD charTarget GET_SCRIPT_TASK_STATUS charReporter -1 m_status IF m_status = PERFORMING_TASK // ...reporter performing task GET_SCRIPT_TASK_STATUS charTarget -1 m_status IF m_status = PERFORMING_TASK // ...target performing task m_goals++ ENDIF ENDIF ENDIF ENDIF // Wait for both sequences to stop then fail mission IF m_goals = 22 IF NOT IS_CHAR_DEAD charReporter AND NOT IS_CHAR_DEAD charTarget GET_SCRIPT_TASK_STATUS charReporter -1 m_status IF m_status = FINISHED_TASK // ...reporter finished task GET_SCRIPT_TASK_STATUS charTarget -1 m_status IF m_status = FINISHED_TASK // ...target finished task m_failed = TRUE m_fail_reason = SCRASH2_FAILED_MEETING_OVER REMOVE_CHAR_ELEGANTLY charReporter REMOVE_CHAR_ELEGANTLY charTarget RETURN ENDIF ENDIF ENDIF ENDIF // Activate Reporter and Target AI IF m_goals = 30 // aiReporterOnPier = SCRASH2_AI_REPORTER_ON_PIER_COWER aiReporterOnPier = SCRASH2_AI_REPORTER_ON_PIER_FLEE aiTarget = SCRASH2_AI_TARGET_KILL_PLAYER // Clear Reporter and Target current tasks IF NOT IS_CHAR_DEAD charReporter CLEAR_CHAR_TASKS charReporter ENDIF IF NOT IS_CHAR_DEAD charTarget CLEAR_CHAR_TASKS charTarget ENDIF // Get rid of the taxi MARK_CHAR_AS_NO_LONGER_NEEDED charTaxiDriverLS MARK_CAR_AS_NO_LONGER_NEEDED carTaxiLS m_goals++ ENDIF // Update Reporter and Target AI // NOTE: Never leave this action. Continuous checks will test for success or failure. IF m_goals = 31 GOSUB SCrash2_Update_AI_ReporterOnPier GOSUB SCrash2_Update_AI_Target ENDIF // Continuous updates for stage // ---------------------------- // Check to see if the player has been detected IF flagPlayerDetectedOnPier = FALSE // ...check if the reporter has been assassinated IF flagReporterAssassinated = TRUE flagPlayerDetectedOnPier = TRUE PRINT_NOW SCR2_10 10000 1 ENDIF // ...check if the target has been assassinated IF flagPlayerDetectedOnPier = FALSE IF flagTargetAssassinated = TRUE flagPlayerDetectedOnPier = TRUE PRINT_NOW SCR2_11 10000 1 ENDIF ENDIF // ...check if the reporter was damaged by the player IF flagPlayerDetectedOnPier = FALSE IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR charReporter scplayer flagPlayerDetectedOnPier = TRUE PRINT_NOW SCR2_14 10000 1 ENDIF ENDIF // ...check if the target was damaged by the player IF flagPlayerDetectedOnPier = FALSE IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR charTarget scplayer flagPlayerDetectedOnPier = TRUE PRINT_NOW SCR2_15 10000 1 ENDIF ENDIF // ...check if the player has fired a gun on the pier IF flagPlayerDetectedOnPier = FALSE AND flagPerformingShootingOnPierReactionDelay = FALSE IF IS_CHAR_SHOOTING_IN_AREA scplayer 349.8409 -2088.7983 409.7505 -1869.8873 FALSE // ...the shot registers before the result of the shot, so delay this reaction // to allow the result (ie: ped death) to register firsrt flagPerformingShootingOnPierReactionDelay = TRUE timerShootingOnPierReactionDelay = m_mission_timer + 1000 ENDIF ENDIF // ...check if the shooting delay has timed out IF flagPlayerDetectedOnPier = FALSE AND flagPerformingShootingOnPierReactionDelay = TRUE IF timerShootingOnPierReactionDelay < m_mission_timer // ...register the shot flagPlayerDetectedOnPier = TRUE PRINT_NOW SCR2_12 10000 1 ENDIF ENDIF // ...check if the player is very close to the target IF flagPlayerDetectedOnPier = FALSE GET_CHAR_COORDINATES charTarget xposTemp yposTemp zposTemp GET_CHAR_COORDINATES scplayer xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempFloat IF fTempFloat < 30.0 flagPlayerDetectedOnPier = TRUE PRINT_NOW SCR2_13 10000 1 ENDIF ENDIF // If the player was detected on this frame, display a message IF flagPlayerDetectedOnPier = TRUE m_goals = 30 ENDIF ENDIF // Check to see if the meeting time is over IF flagPlayerDetectedOnPier = FALSE AND flagMeetingOver = FALSE IF timerMeeting < m_mission_timer flagMeetingOver = TRUE m_goals = 20 ENDIF ENDIF // Check to see if the conditions for failure have been met IF flagPlayerDetectedOnPier = TRUE // ...is the reporter too far away? IF flagReporterAssassinated = FALSE // AND aiReporterOnPier = SCRASH2_AI_REPORTER_ON_PIER_FLEEING // ...has the Reporter been lost // NOTE: Don't let the reporter be lost until he is much closer to the pier entrance IF NOT IS_CHAR_IN_AREA_2D charReporter 349.8409 -2088.7983 409.7505 -1869.8873 FALSE GET_CHAR_COORDINATES charReporter xposTemp yposTemp zposTemp GET_CHAR_COORDINATES scplayer xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempFloat IF fTempFloat > 200.0 m_failed = TRUE m_fail_reason = SCRASH2_FAILED_REPORTER_ESCAPED RETURN ENDIF ENDIF ENDIF // ...is the target too far away? IF flagTargetAssassinated = FALSE // AND aiTarget = SCRASH2_AI_TARGET_FLEEING // ...has the Target been lost // NOTE: Don't let the Target be lost until he is much closer to the pier entrance IF NOT IS_CHAR_IN_AREA_2D charTarget 349.8409 -2088.7983 409.7505 -1869.8873 FALSE GET_CHAR_COORDINATES charTarget xposTemp yposTemp zposTemp GET_CHAR_COORDINATES scplayer xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempFloat IF fTempFloat > 200.0 m_failed = TRUE m_fail_reason = SCRASH2_FAILED_TARGET_ESCAPED RETURN ENDIF ENDIF ENDIF ENDIF // Sniper Help Text IF flagDisplayedSniperRifleHelp = FALSE IF timerHelpText < m_mission_timer PRINT_HELP_FOREVER SNIPERH // To use the sniper rifle's scope tap ~m~~widget_enter_targeting~. Hold ~m~~widget_zoom_in~ and ~m~~widget_zoom_out~ to zoom. flagDisplayedSniperRifleHelp = TRUE timerHelpText = m_mission_timer + 15000 ENDIF ENDIF IF flagDisplayedSniperRifleHelp = TRUE IF flagDisplayedSniperRifleHelp2 = FALSE IF timerHelpText < m_mission_timer CLEAR_HELP PRINT_HELP_FOREVER SNIPER2 // Press ~m~~widget_vc_shoot~ to fire. flagDisplayedSniperRifleHelp2 = TRUE timerHelpText = m_mission_timer + 10000 ENDIF ENDIF ENDIF IF flagDisplayedSniperRifleHelp2 = TRUE IF timerHelpText > 0 IF timerHelpText < m_mission_timer CLEAR_HELP timerHelpText = 0 ENDIF ENDIF ENDIF // exit IF m_goals = 99 GOSUB SCrash2_next_stage ENDIF RETURN // ************************************************************************************************************* // MISSION SPECIFIC GOSUBS // ************************************************************************************************************* // ************************************************************************************************************* // SNIPER RIFLE PICKUP // ************************************************************************************************************* // **************************************** // Create Sniper Rifle SCrash2_Create_SniperRifle: // Generate Sniper Rifle pickup xposTemp = -2063.2250 yposTemp = 258.3273 zposTemp = 35.3958 CREATE_PICKUP_WITH_AMMO SNIPER PICKUP_ONCE 5 xposTemp yposTemp zposTemp pickupSniperRifle ADD_BLIP_FOR_PICKUP pickupSniperRifle blipSniperRifle RETURN // ************************************************************************************************************* // Get to the Train Station // ************************************************************************************************************* // **************************************** // Create Train SCrash2_Create_Train: // xposTemp = -1942.3918 // yposTemp = 175.7647 // zposTemp = 24.7109 xposTemp = -1937.3115 yposTemp = 221.1162 zposTemp = 23.8414 // FALSE is for the direction of travel - clockwise or anti-clockwise CLEAR_AREA xposTemp yposTemp zposTemp 60.0 TRUE CREATE_MISSION_TRAIN 11 xposTemp yposTemp zposTemp FALSE carTrain existsTrain = 1 RETURN // **************************************** // Create Reporter in SF SCrash2_Create_Reporter_SF: xposTemp = -1939.5200 yposTemp = 132.8362 zposTemp = 25.2734 headTemp = 90.4279 CLEAR_AREA xposTemp yposTemp zposTemp 1.0 TRUE CREATE_CHAR PEDTYPE_CIVMALE WMYBU xposTemp yposTemp zposTemp charReporter SET_CHAR_HEADING charReporter headTemp SET_CHAR_IS_TARGET_PRIORITY charReporter TRUE existsReporter = 1 RETURN // ************************************************************************************************************* // Follow the Train // ************************************************************************************************************* // **************************************** // Calculate Train Distance From Player SCrash2_Calculate_Train_Distance_From_Player: IF flagTrainArrivedAtLS = 1 RETURN ENDIF // Only do this every 10 frames IF NOT m_frame_num = 5 RETURN ENDIF // Calculate the straight -line distance between the train and the player GET_CAR_COORDINATES carTrain xposTemp yposTemp zposTemp GET_CHAR_COORDINATES scplayer xposTemp2 yposTemp2 zposTemp2 xloTemp = xposTemp - xposTemp2 yloTemp = yposTemp - yposTemp2 xhiTemp = xloTemp * xloTemp yhiTemp = yloTemp * yloTemp fTempFloat = xhiTemp + yhiTemp SQRT fTempFloat fTempFloat2 // Convert the distance to an int nTrainDistanceFromPlayer =# fTempFloat2 RETURN // **************************************** // Calculate Train Distance From LS Station SCrash2_Calculate_Train_Distance_From_LS: IF flagTrainArrivedAtLS = 1 nTrainDistanceFromLS = 0 RETURN ENDIF // Only do this every 10 frames IF NOT m_frame_num = 3 RETURN ENDIF // Calculate the straight -line distance between the train and the station GET_CAR_COORDINATES carTrain xposTemp yposTemp zposTemp xloTemp = xposTemp - xposDestination yloTemp = yposTemp - yposDestination xhiTemp = xloTemp * xloTemp yhiTemp = yloTemp * yloTemp fTempFloat = xhiTemp + yhiTemp SQRT fTempFloat fTempFloat2 // Convert the distance to an int nTrainDistanceFromLS =# fTempFloat2 RETURN // **************************************** // Calculate Player Distance From LS SCrash2_Calculate_Player_Distance_From_LS: // Only do this every 10 frames IF NOT m_frame_num = 1 RETURN ENDIF // Calculate the straight -line distance between the train and the station GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp xloTemp = xposTemp - xposDestination yloTemp = yposTemp - yposDestination xhiTemp = xloTemp * xloTemp yhiTemp = yloTemp * yloTemp fTempFloat = xhiTemp + yhiTemp SQRT fTempFloat fTempFloat2 // Convert the distance to an int nPlayerDistanceFromLS =# fTempFloat2 RETURN // **************************************** // Update Train Cruise Speed SCrash2_Update_Train_Cruise_Speed: IF flagTrainArrivedAtLS = 1 RETURN ENDIF // Only do this every 10 frames IF NOT m_frame_num = 7 RETURN ENDIF // REMOVE VARIABLE TRAIN SPEED /* // Set the cruise speed based on the current train/player information // Only slow the train down if it is closer to LS than the Player IF nTrainDistanceFromLS <= nPlayerDistanceFromLS // If the train is really far in front and the player is still in SF, // then let it move at a decent speed to get the mission finished IF nTrainDistanceFromPlayer > SCRASH2_FAILURE_DISTANCE AND IS_CHAR_IN_ZONE scplayer SF // ...give it a decent speed and a speed boost fTempFloat = 100.0 GOTO SCRASH2_SPEED_BOOST ENDIF // Try to keep the train about 700m away IF nTrainDistanceFromPlayer > 700 // ...really far away, so slow the train right down fTempFloat = 5.0 GOTO SCRASH2_SET_SPEED ENDIF IF nTrainDistanceFromPlayer > 500 fTempFloat = 15.0 GOTO SCRASH2_SET_SPEED ENDIF IF nTrainDistanceFromPlayer > 300 fTempFloat = 30.0 GOTO SCRASH2_SET_SPEED ENDIF IF nTrainDistanceFromPlayer > 200 fTempFloat = 40.0 GOTO SCRASH2_SPEED_BOOST ENDIF IF nTrainDistanceFromPlayer > 140 fTempFloat = 50.0 GOTO SCRASH2_SPEED_BOOST ENDIF IF nTrainDistanceFromPlayer > 80 fTempFloat = 60.0 GOTO SCRASH2_SPEED_BOOST ENDIF // Player is really close, so let the train go really fast fTempFloat = 100.0 // Jump to here if the train may get a speed boost SCRASH2_SPEED_BOOST: // If the player is this close behind, then give the train a boost of speed GET_CAR_SPEED carTrain fTempFloat2 IF fTempFloat2 < fTempFloat fTempFloat2 += 2.0 SET_TRAIN_SPEED carTrain fTempFloat2 ENDIF ELSE // The player is ahead of the train, so give the train a boost of speed GET_CAR_SPEED carTrain fTempFloat2 fTempFloat2 += 2.0 SET_TRAIN_SPEED carTrain fTempFloat2 // Let the train move really fast fTempFloat = 100.0 ENDIF */ // END REMOVE VARIABLE TRAIN SPEED // USE A CONSTANT SPEED fTempFloat = SCRASH2_MAX_TRAIN_SPEED_mps IF nTrainDistanceFromLS <= nPlayerDistanceFromLS // ...train closer to LS than Player IF nTrainDistanceFromPlayer < 80 // ...the player is close behind the train, so give the train a speed boost until it is at full speed GET_CAR_SPEED carTrain fTempFloat2 fTempFloat2 += 2.0 IF fTempFloat2 > SCRASH2_MAX_TRAIN_SPEED_mps fTempFloat2 = SCRASH2_MAX_TRAIN_SPEED_mps ENDIF SET_TRAIN_SPEED carTrain fTempFloat2 ENDIF ELSE // ...the train is behind the player, so give it a speed boost if it is not moving at full speed GET_CAR_SPEED carTrain fTempFloat2 fTempFloat2 += 2.0 IF fTempFloat2 > SCRASH2_MAX_TRAIN_SPEED_mps fTempFloat2 = SCRASH2_MAX_TRAIN_SPEED_mps ENDIF SET_TRAIN_SPEED carTrain fTempFloat2 ENDIF // END USE A CONSTANT SPEED // Jump to here after calculating speed based on distance from LS SCRASH2_SET_SPEED: // Set the speed SET_TRAIN_CRUISE_SPEED carTrain fTempFloat RETURN // **************************************** // Update Train Distance to LS SCrash2_Update_Train_Distance_To_LS: IF nDistanceSFtoLS = 0 IF nTrainDistanceFromLS = 0 // ...no distance calculated yet // REMOVE TRAIN PROGRESS BAR // g_SCrash2_distanceKM = 0 // END REMOVE TRAIN PROGRESS BAR ELSE // ...initial distance has now been calculated, so store it nDistanceSFtoLS = nTrainDistanceFromLS // REMOVE TRAIN PROGRESS BAR // g_SCrash2_distanceKM = 0 // END REMOVE TRAIN PROGRESS BAR ENDIF RETURN ENDIF IF nTrainDistanceFromLS < 5 // REMOVE TRAIN PROGRESS BAR // g_SCrash2_distanceKM = 100 // END REMOVE TRAIN PROGRESS BAR RETURN ENDIF // REMOVE TRAIN PROGRESS BAR // g_SCrash2_distanceKM = nDistanceSFtoLS - nTrainDistanceFromLS // g_SCrash2_distanceKM = g_SCrash2_distanceKM * 100 // g_SCrash2_distanceKM = g_SCrash2_distanceKM / nDistanceSFtoLS // END REMOVE TRAIN PROGRESS BAR RETURN // **************************************** // Update Other Trains SCrash2_Update_Other_Trains: // POSITION MEANINGS // -2: Train has been used // -1: Train has not been initialised // 1 - 5: The position where the train will be created // These other trains are a way of keeping the player on his toes if he is chasing the train along the train tracks // If all trains have been used, then do nothing else flagTempFlag = 1 REPEAT SCRASH2_NUMBER_OF_OTHER_TRAINS nLoop IF NOT nOtherTrainPosition[nLoop] = -2 flagTempFlag = 0 ENDIF ENDREPEAT IF flagTempFlag = 1 RETURN ENDIF // If the trains are not initialised, then randomly choose a position where they will appear REPEAT SCRASH2_NUMBER_OF_OTHER_TRAINS nLoop IF nOtherTrainPosition[nLoop] = -1 // Jump to here if the position is a duplicate SCRASH2_RECHOOSE_OTHER_TRAIN_POSITION: // Randomly choose a position for the train to appear at GENERATE_RANDOM_INT_IN_RANGE 0 5 nOtherTrainPosition[nLoop] // Check for duplicates flagTempFlag = 0 nLoop2 = 0 WHILE nLoop2 < nLoop IF flagTempFlag = 0 IF nOtherTrainPosition[nLoop] = nOtherTrainPosition[nLoop2] flagTempFlag = 1 ENDIF ENDIF nLoop2++ ENDWHILE IF flagTempFlag = 1 GOTO SCRASH2_RECHOOSE_OTHER_TRAIN_POSITION ENDIF ENDIF ENDREPEAT // Check if it is time to trigger one of the trains REPEAT SCRASH2_NUMBER_OF_OTHER_TRAINS nLoop flagTempFlag = 0 SWITCH nOtherTrainPosition[nLoop] CASE 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1982.4420 -598.0178 24.7266 8.0 8.0 2.0 FALSE flagTempFlag = 1 ENDIF BREAK CASE 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1827.1726 -1332.3062 12.9453 8.0 8.0 2.0 FALSE flagTempFlag = 1 ENDIF BREAK CASE 2 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -946.4463 -1497.6177 89.28716 8.0 8.0 2.0 FALSE flagTempFlag = 1 ENDIF BREAK CASE 3 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -620.5595 -1144.5725 42.0616 8.0 8.0 2.0 FALSE flagTempFlag = 1 ENDIF BREAK CASE 4 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 98.3887 -1021.7949 21.2188 8.0 8.0 2.0 FALSE flagTempFlag = 1 ENDIF BREAK ENDSWITCH IF flagTempFlag = 1 // Create a train // ...choose a random train config GENERATE_RANDOM_INT_IN_RANGE 10 14 nTempInt // ...choose a random speed GENERATE_RANDOM_INT_IN_RANGE 10 20 nTempInt2 fTempFloat =# nTempInt2 // ...generate the train SWITCH nOtherTrainPosition[nLoop] CASE 0 CLEAR_AREA -1875.7197 -1267.0587 12.9511 100.0 TRUE // TRUE is for the direction of travel - clockwise or anti-clockwise CREATE_MISSION_TRAIN nTempInt -1875.7197 -1267.0587 12.9511 TRUE carOtherTrain[nLoop] SET_TRAIN_SPEED carOtherTrain[nLoop] fTempFloat SET_TRAIN_CRUISE_SPEED carOtherTrain[nLoop] fTempFloat BREAK CASE 1 CLEAR_AREA -1332.7209 -1514.8876 22.7265 100.0 TRUE // TRUE is for the direction of travel - clockwise or anti-clockwise CREATE_MISSION_TRAIN nTempInt -1332.7209 -1514.8876 22.7265 TRUE carOtherTrain[nLoop] SET_TRAIN_SPEED carOtherTrain[nLoop] fTempFloat SET_TRAIN_CRUISE_SPEED carOtherTrain[nLoop] fTempFloat BREAK CASE 2 CLEAR_AREA -673.6719 -1127.8745 48.8875 100.0 TRUE // TRUE is for the direction of travel - clockwise or anti-clockwise CREATE_MISSION_TRAIN nTempInt -673.6719 -1127.8745 48.8875 TRUE carOtherTrain[nLoop] SET_TRAIN_SPEED carOtherTrain[nLoop] fTempFloat SET_TRAIN_CRUISE_SPEED carOtherTrain[nLoop] fTempFloat BREAK CASE 3 // CLEAR_AREA -321.4720 -1184.0577 34.8293 100.0 TRUE // TRUE is for the direction of travel - clockwise or anti-clockwise // CREATE_MISSION_TRAIN nTempInt -321.4720 -1184.0577 34.8293 TRUE carOtherTrain[nLoop] CLEAR_AREA -321.8627 -1191.6473 35.5265 100.0 TRUE // TRUE is for the direction of travel - clockwise or anti-clockwise CREATE_MISSION_TRAIN nTempInt -321.8627 -1191.6473 35.5265 TRUE carOtherTrain[nLoop] SET_TRAIN_SPEED carOtherTrain[nLoop] fTempFloat SET_TRAIN_CRUISE_SPEED carOtherTrain[nLoop] fTempFloat BREAK CASE 4 CLEAR_AREA 802.3020 -1362.6608 -2.6302 100.0 TRUE // TRUE is for the direction of travel - clockwise or anti-clockwise CREATE_MISSION_TRAIN nTempInt 802.3020 -1362.6608 -2.6302 TRUE carOtherTrain[nLoop] SET_TRAIN_SPEED carOtherTrain[nLoop] fTempFloat SET_TRAIN_CRUISE_SPEED carOtherTrain[nLoop] fTempFloat BREAK ENDSWITCH // Make sure this train isn't generated again nOtherTrainPosition[nLoop] = -2 ENDIF ENDREPEAT RETURN // ************************************************************************************************************* // Reporter Hails a Taxi // ************************************************************************************************************* // **************************************** // Create Reporter LS SCrash2_Create_Reporter_LS: // xposTemp = 832.1662 // yposTemp = -1376.1748 // zposTemp = -1.5078 // headTemp = 324.4522 // CLEAR_AREA xposTemp yposTemp zposTemp 1.0 TRUE // CREATE_CHAR PEDTYPE_CIVMALE WMYBU xposTemp yposTemp zposTemp charReporter // SET_CHAR_HEADING charReporter headTemp // SET_CHAR_DECISION_MAKER charReporter dmEmpty GET_TRAIN_CARRIAGE carTrain 2 carCarriage2 CREATE_CHAR_INSIDE_CAR carCarriage2 PEDTYPE_CIVMALE WMYBU charReporter SET_CHAR_DECISION_MAKER charReporter dmEmpty TASK_LEAVE_CAR charReporter carCarriage2 existsReporter = 1 RETURN // **************************************** // Choose Taxi Creation Position SCrash2_Choose_Taxi_LS_Creation_Position: flagTaxiLSCreationPositionAlpha = TRUE // If the player is in a position to see the taxi being created at the alpha position, then change to the alternative IF IS_CHAR_IN_AREA_3D scplayer 685.9716 -1433.5227 11.0857 965.9512 -1379.3861 14.9731 FALSE flagTaxiLSCreationPositionAlpha = FALSE ENDIF RETURN // **************************************** // Create Taxi LS SCrash2_Create_Taxi_LS: IF flagTaxiLSCreationPositionAlpha = TRUE // ...primary position xposTemp = 850.1132 yposTemp = -1391.7085 zposTemp = 12.4161 headTemp = 101.5280 ELSE // ...secondary position xposTemp = 847.1364 yposTemp = -1331.1277 zposTemp = 12.5097 headTemp = 91.6504 ENDIF CLEAR_AREA xposTemp yposTemp zposTemp 10.0 TRUE CREATE_CAR TAXI xposTemp yposTemp zposTemp carTaxiLS SET_CAR_HEADING carTaxiLS headTemp CREATE_CHAR_INSIDE_CAR carTaxiLS PEDTYPE_CIVMALE BMYBE charTaxiDriverLS // ...make the taxi drive to the required coordinates IF flagTaxiLSCreationPositionAlpha = TRUE // ...drive to alpha position // TASK_CAR_DRIVE_TO_COORD charTaxiDriverLS carTaxiLS 800.5493 -1342.9694 12.3906 12.0 MODE_NORMAL 0 DRIVINGMODE_STOPFORCARS_IGNORELIGHTS TASK_CAR_DRIVE_TO_COORD charTaxiDriverLS carTaxiLS 801.0299 -1337.9287 12.3906 12.0 MODE_NORMAL 0 DRIVINGMODE_STOPFORCARS_IGNORELIGHTS ELSE // ...drive to beta position TASK_CAR_DRIVE_TO_COORD charTaxiDriverLS carTaxiLS 824.4391 -1330.7069 12.4174 12.0 MODE_NORMAL 0 DRIVINGMODE_STOPFORCARS_IGNORELIGHTS flagTaxiApproachingReporter = TRUE ENDIF existsTaxiLS = TRUE RETURN // **************************************** // Update Station Walk SCrash2_Update_Station_Walk: // If the reporter is spooked then stop and look at the player IF flagReporterSpooked = TRUE IF flagAllowTurnTowardsPlayer = TRUE GET_SCRIPT_TASK_STATUS charReporter TASK_ACHIEVE_HEADING m_status ELSE GET_SCRIPT_TASK_STATUS charReporter TASK_LOOK_AT_CHAR m_status ENDIF IF timerLookAtAnim < m_mission_timer IF NOT m_status = PERFORMING_TASK AND NOT m_status = WAITING_TO_START_TASK IF flagAllowTurnTowardsPlayer = TRUE // Get the Required Heading // ...get player coords GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp xloTemp = xposTemp yloTemp = yposTemp // ...get Gang Member coords GET_CHAR_COORDINATES charReporter xposTemp yposTemp zposTemp xhiTemp = xposTemp yhiTemp = yposTemp // Calculate Vector xposTemp = xloTemp - xhiTemp yposTemp = yloTemp - yhiTemp GET_HEADING_FROM_VECTOR_2D xposTemp yposTemp headTemp ENDIF // Look at TASK_LOOK_AT_CHAR charReporter scplayer SCRASH2_PERSIST // Orientate IF flagAllowTurnTowardsPlayer = TRUE TASK_ACHIEVE_HEADING charReporter headTemp timerLookAtAnim = m_mission_timer + 250 ENDIF ENDIF ENDIF RETURN ENDIF SWITCH statusStationWalk CASE SCRASH2_STATION_WALK_NOT_STARTED statusStationWalk = SCRASH2_STATION_WALK_FOOT_OF_STAIRS_INIT statusStationWalkInit = SCRASH2_STATION_WALK_FOOT_OF_STAIRS_INIT BREAK CASE SCRASH2_STATION_WALK_FOOT_OF_STAIRS_INIT TASK_GO_STRAIGHT_TO_COORD charReporter 828.2594 -1358.9948 -1.5078 PEDMOVE_WALK -2 // Foot of stairs statusStationWalk = SCRASH2_STATION_WALK_FOOT_OF_STAIRS_LOCATE BREAK CASE SCRASH2_STATION_WALK_FOOT_OF_STAIRS_LOCATE IF LOCATE_CHAR_ANY_MEANS_3D charReporter 828.2594 -1358.9948 -1.5078 1.2 1.2 1.2 FALSE statusStationWalk = SCRASH2_STATION_WALK_MID_LEVEL_INIT statusStationWalkInit = SCRASH2_STATION_WALK_MID_LEVEL_INIT // Update the player detection area now that the reporter is at the foot of the stairs nSuspicionWalkArea = SCRASH2_SUSPICION_AREA_LOW_STEPS ENDIF BREAK CASE SCRASH2_STATION_WALK_MID_LEVEL_INIT OPEN_SEQUENCE_TASK nSeqTask TASK_GO_STRAIGHT_TO_COORD -1 837.3880 -1346.2332 6.1719 PEDMOVE_WALK -2 // Mid-stairs part 1 TASK_GO_STRAIGHT_TO_COORD -1 836.6295 -1342.9258 6.1719 PEDMOVE_WALK -2 // Mid-stairs part 2 CLOSE_SEQUENCE_TASK nSeqTask PERFORM_SEQUENCE_TASK charReporter nSeqTask CLEAR_SEQUENCE_TASK nSeqTask statusStationWalk = SCRASH2_STATION_WALK_MID_LEVEL_LOCATE BREAK CASE SCRASH2_STATION_WALK_MID_LEVEL_LOCATE IF LOCATE_CHAR_ANY_MEANS_3D charReporter 836.6295 -1342.9258 6.1719 1.2 1.2 1.2 FALSE statusStationWalk = SCRASH2_STATION_WALK_TOP_OF_STAIRS_INIT statusStationWalkInit = SCRASH2_STATION_WALK_TOP_OF_STAIRS_INIT // Update the player detection area now that the reporter is at the stairs mid_level nSuspicionWalkArea = SCRASH2_SUSPICION_AREA_HIGH_STEPS ENDIF BREAK CASE SCRASH2_STATION_WALK_TOP_OF_STAIRS_INIT TASK_GO_STRAIGHT_TO_COORD charReporter 822.0569 -1342.3020 12.5190 PEDMOVE_WALK -2 // Top of stairs statusStationWalk = SCRASH2_STATION_WALK_TOP_OF_STAIRS_LOCATE BREAK CASE SCRASH2_STATION_WALK_TOP_OF_STAIRS_LOCATE IF LOCATE_CHAR_ANY_MEANS_3D charReporter 822.0569 -1342.3020 12.5190 1.2 1.2 1.2 FALSE statusStationWalk = SCRASH2_STATION_WALK_READY_TO_LOOK_AROUND statusStationWalkInit = SCRASH2_STATION_WALK_READY_TO_LOOK_AROUND // Update the player detection area now that the reporter is at the station entrance nSuspicionWalkArea = SCRASH2_SUSPICION_AREA_ENTRANCE ENDIF BREAK CASE SCRASH2_STATION_WALK_READY_TO_LOOK_AROUND // Nothing to do here (the main stage sequence takes over) BREAK CASE SCRASH2_STATION_WALK_KERB_INIT TASK_GO_STRAIGHT_TO_COORD charReporter 803.7784 -1340.5349 12.5469 PEDMOVE_WALK -2 // Kerb statusStationWalk = SCRASH2_STATION_WALK_KERB_LOCATE BREAK CASE SCRASH2_STATION_WALK_KERB_LOCATE IF LOCATE_CHAR_ANY_MEANS_3D charReporter 803.7784 -1340.5349 12.5469 1.2 1.2 1.2 FALSE statusStationWalk = SCRASH2_STATION_WALK_WAIT_FOR_TAXI statusStationWalkInit = SCRASH2_STATION_WALK_WAIT_FOR_TAXI // Update the player detection area now that the reporter is at the kerb nSuspicionWalkArea = SCRASH2_SUSPICION_AREA_KERB ENDIF BREAK CASE SCRASH2_STATION_WALK_WAIT_FOR_TAXI // Nothing to do here (the main stage sequence takes over) BREAK DEFAULT WRITE_DEBUG UNKNOWN_STATION_WALK_STATUS ENDSWITCH RETURN // ************************************************************************************************************* // Reporter Goes To Meeting Place // ************************************************************************************************************* // **************************************** // Choose Taxi Waypoint SCrash2_Choose_Taxi_Waypoint: // flagTempFlag is used to decide if a burst of speed is allowed to this waypoint // flagTempFlag2 is used to decide if the taxi is allowed to stop at the waypoint for a moment flagTempFlag = TRUE flagTempFlag2 = TRUE // REMOVE TAXI ENFORCED STOPS // statusTaxiStopped = SCRASH2_TAXI_STOPPED_STATUS_NO_STOP // END REMOVE TAXI ENFORCED STOPS IF nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_NONE // ...don't allow a burst of speed to the first waypoint flagTempFlag = FALSE ENDIF // Choose the next waypoint SWITCH nTaxiWaypointID CASE SCRASH2_TAXI_WAYPOINT_NONE GENERATE_RANDOM_INT_IN_RANGE 0 3 nTempInt IF nTempInt = 0 nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_A ENDIF IF nTempInt = 1 nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_B ENDIF IF nTempInt = 2 nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_C ENDIF BREAK CASE SCRASH2_TAXI_WAYPOINT_A nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_D BREAK CASE SCRASH2_TAXI_WAYPOINT_B nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_F BREAK CASE SCRASH2_TAXI_WAYPOINT_C nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_G BREAK CASE SCRASH2_TAXI_WAYPOINT_D nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_I BREAK CASE SCRASH2_TAXI_WAYPOINT_E nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_J BREAK CASE SCRASH2_TAXI_WAYPOINT_F nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_E BREAK CASE SCRASH2_TAXI_WAYPOINT_G nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_L BREAK CASE SCRASH2_TAXI_WAYPOINT_H nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_PIER BREAK CASE SCRASH2_TAXI_WAYPOINT_I nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_H BREAK CASE SCRASH2_TAXI_WAYPOINT_J nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_PIER BREAK CASE SCRASH2_TAXI_WAYPOINT_K nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_PIER BREAK CASE SCRASH2_TAXI_WAYPOINT_L nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_K BREAK CASE SCRASH2_TAXI_WAYPOINT_PIER // Should only enter here if the player is trying to cheat by going to the pier first // It will cause the taxi to drive past the pier GENERATE_RANDOM_INT_IN_RANGE 0 3 nTempInt IF nTempInt = 0 nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_I ENDIF IF nTempInt = 1 nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_E ENDIF IF nTempInt = 2 nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_L ENDIF BREAK DEFAULT WRITE_DEBUG Unknown_Current_Taxi_waypoint ENDSWITCH // Don't allow a burst of speed or stopping if going to the pier IF nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_PIER flagTempFlag = FALSE flagTempFlag2 = FALSE ENDIF // A new waypoint will have been chosen, so get the coordinates SWITCH nTaxiWaypointID CASE SCRASH2_TAXI_WAYPOINT_NONE WRITE_DEBUG TAXI_WAYPOINT_STILL_NONE BREAK CASE SCRASH2_TAXI_WAYPOINT_A xposWaypoint = 728.2346 yposWaypoint = -1068.5289 zposWaypoint = 21.3149 BREAK CASE SCRASH2_TAXI_WAYPOINT_B xposWaypoint = 885.8015 yposWaypoint = -1152.0475 zposWaypoint = 22.7156 BREAK CASE SCRASH2_TAXI_WAYPOINT_C xposWaypoint = 623.9262 yposWaypoint = -1356.3359 zposWaypoint = 12.4009 BREAK CASE SCRASH2_TAXI_WAYPOINT_D xposWaypoint = 554.1271 yposWaypoint = -1327.2174 zposWaypoint = 12.3984 BREAK CASE SCRASH2_TAXI_WAYPOINT_E xposWaypoint = 552.7402 yposWaypoint = -1401.8484 zposWaypoint = 14.0907 BREAK CASE SCRASH2_TAXI_WAYPOINT_F xposWaypoint = 913.4064 yposWaypoint = -1381.0392 zposWaypoint = 12.3208 BREAK CASE SCRASH2_TAXI_WAYPOINT_G // xposWaypoint = 806.1024 // yposWaypoint = -1704.4703 // zposWaypoint = 12.3828 xposWaypoint = 807.6411 yposWaypoint = -1737.3925 zposWaypoint = 12.3906 BREAK CASE SCRASH2_TAXI_WAYPOINT_H xposWaypoint = 318.3799 yposWaypoint = -1464.9255 zposWaypoint = 33.0030 BREAK CASE SCRASH2_TAXI_WAYPOINT_I xposWaypoint = 461.6126 yposWaypoint = -1433.6710 zposWaypoint = 23.2117 BREAK CASE SCRASH2_TAXI_WAYPOINT_J xposWaypoint = 484.8509 yposWaypoint = -1579.2202 zposWaypoint = 20.2086 BREAK CASE SCRASH2_TAXI_WAYPOINT_K xposWaypoint = 570.8074 yposWaypoint = -1580.0520 zposWaypoint = 15.0078 BREAK CASE SCRASH2_TAXI_WAYPOINT_L xposWaypoint = 673.4271 yposWaypoint = -1737.3396 zposWaypoint = 12.4441 BREAK CASE SCRASH2_TAXI_WAYPOINT_PIER xposWaypoint = xposDestination yposWaypoint = yposDestination zposWaypoint = zposDestination BREAK ENDSWITCH // Decide if a burst of speed will happen IF flagTempFlag = TRUE // Don't allow an immediate burst of speed after leaving the station, or a previous burst of speed IF nTaxiChanceOfBurstOfSpeed = 0 // ...no chance this time flagTempFlag = 0 ELSE GENERATE_RANDOM_INT_IN_RANGE 0 3 nTempInt IF nTempInt > nTaxiChanceOfBurstOfSpeed // ...no chance this time flagTempFlag = FALSE ENDIF ENDIF ENDIF IF flagTempFlag = TRUE // ...burst of speed will happen, so reset variables nTaxiChanceOfBurstOfSpeed = 0 ELSE // ...burst of speed won't happen, so increase chance for next time nTaxiChanceOfBurstOfSpeed++ ENDIF // REMOVE TAXI ENFORCED STOPS /* // Decide if the taxi will stop at the next waypoint IF flagTempFlag2 = TRUE // Don't allow a stop immediately after a previous stop or if going to the Pier IF nTaxiChanceOfStopping = 0 // ...no chance this time flagTempFlag2 = 0 ELSE GENERATE_RANDOM_INT_IN_RANGE 0 4 nTempInt IF nTempInt > nTaxiChanceOfStopping // ...no chance this time flagTempFlag2 = FALSE ENDIF ENDIF ENDIF IF flagTempFlag2 = TRUE // ...stopping will happen, so reset variables nTaxiChanceOfStopping = 0 statusTaxiStopped = SCRASH2_TAXI_STOPPED_STATUS_TO_STOP ELSE // ...stopping won't happen, so increase chance for next time nTaxiChanceOfStopping++ ENDIF */ // END REMOVE TAXI ENFORCED STOPS // Make the taxi go to the waypoint IF NOT IS_CHAR_DEAD charTaxiDriverLS IF flagTempFlag = TRUE // ...burst of speed TASK_CAR_DRIVE_TO_COORD charTaxiDriverLS -1 xposWaypoint yposWaypoint zposWaypoint 25.0 MODE_ACCURATE 0 DRIVINGMODE_AVOIDCARS ELSE // ...normal driving speed (make the taxi speed up with each waypoint) IF nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_PIER // ...heading for the pier, so use a sedate pace nTempInt = 15 ELSE // ...gradually increase the pace at each waypoint nTempInt = nTaxiNumberOfWaypoints * 3 nTempInt += 18 IF nTempInt > 25 nTempInt = 25 ENDIF ENDIF fTempFloat =# nTempInt IF nTaxiNumberOfWaypoints < 2 // ...stop for lights in first couple of sections TASK_CAR_DRIVE_TO_COORD charTaxiDriverLS -1 xposWaypoint yposWaypoint zposWaypoint fTempFloat MODE_ACCURATE 0 DRIVINGMODE_AVOIDCARS_OBEYLIGHTS ELSE // ...don't stop for lights in later sections TASK_CAR_DRIVE_TO_COORD charTaxiDriverLS -1 xposWaypoint yposWaypoint zposWaypoint fTempFloat MODE_ACCURATE 0 DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF // Increase number of waypoints nTaxiNumberOfWaypoints++ RETURN // **************************************** // Update Taxi Waypoint SCrash2_Update_Taxi_Waypoint: IF IS_CHAR_DEAD charReporter RETURN ENDIF IF NOT IS_CHAR_IN_CAR charReporter carTaxiLS RETURN ENDIF IF IS_CAR_DEAD carTaxiLS RETURN ENDIF // Check if the taxi has reached the waypoint (and decide if it is stopping or not) IF NOT nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_PIER // REMOVE TAXI ENFORCED STOPS /* SWITCH statusTaxiStopped CASE SCRASH2_TAXI_STOPPED_STATUS_NO_STOP // ...taxi is not going to stop IF LOCATE_CAR_3D carTaxiLS xposWaypoint yposWaypoint zposWaypoint 18.0 18.0 4.0 FALSE GOSUB SCrash2_Choose_Taxi_Waypoint ENDIF BREAK CASE SCRASH2_TAXI_STOPPED_STATUS_TO_STOP // ...taxi is going to stop IF LOCATE_CAR_3D carTaxiLS xposWaypoint yposWaypoint zposWaypoint 4.0 4.0 4.0 FALSE // ...reached stop location statusTaxiStopped = SCRASH2_TAXI_STOPPED_STATUS_STOPPED GENERATE_RANDOM_INT_IN_RANGE 5 10 nTempInt nTempInt *= 1000 timerTaxiStopped = m_mission_timer + nTempInt ENDIF BREAK CASE SCRASH2_TAXI_STOPPED_STATUS_STOPPED // ...taxi has stopped, so check if it is time to go again IF timerTaxiStopped < m_mission_timer // ...yes GOSUB SCrash2_Choose_Taxi_Waypoint ENDIF BREAK ENDSWITCH */ // END REMOVE TAXI ENFORCED STOPS // NEW CODE TO REPLACE REMOVED TAXI ENFORCED STOPS IF LOCATE_CAR_3D carTaxiLS xposWaypoint yposWaypoint zposWaypoint 18.0 18.0 4.0 FALSE GOSUB SCrash2_Choose_Taxi_Waypoint ENDIF // END NEW CODE TO REPLACE REMOVED TAXI ENFORCED STOPS ENDIF // Check if the taxi is going to the pier but the player has sneaked onto the pier first IF nTaxiWaypointID = SCRASH2_TAXI_WAYPOINT_PIER IF LOCATE_CAR_3D carTaxiLS 370.0204 -1647.6471 31.7173 14.0 14.0 4.0 FALSE IF flagPlayerOnPier = TRUE // ...don't go there yet because the player is trying to cheat GOSUB SCrash2_Choose_Taxi_Waypoint ENDIF ENDIF ENDIF RETURN // ************************************************************************************************************* // Reporter Meets the Target // ************************************************************************************************************* // **************************************** // Create Target SCrash2_Create_Target: xposTemp = 355.6180 yposTemp = -2037.0068 zposTemp = 6.8360 headTemp = 271.1917 CLEAR_AREA xposTemp yposTemp zposTemp 10.0 TRUE CREATE_CHAR PEDTYPE_CIVMALE HMYRI xposTemp yposTemp zposTemp charTarget SET_CHAR_HEADING charTarget headTemp SET_CHAR_IS_TARGET_PRIORITY charTarget TRUE existsTarget = TRUE RETURN // **************************************** // Update AI Reporter on Pier SCrash2_Update_AI_ReporterOnPier: IF flagReporterAssassinated = TRUE RETURN ENDIF SWITCH aiReporterOnPier /* // Make the Reporter Cower for quite a long period of time CASE SCRASH2_AI_REPORTER_ON_PIER_COWER SET_CHAR_DECISION_MAKER charReporter dmEmpty TASK_PLAY_ANIM charReporter DUCK_cower PED 4.0 true false false false -1 timerReporterAI = m_mission_timer + 15000 timerReporterAnim = m_mission_timer + 500 aiReporterOnPier = SCRASH2_AI_REPORTER_ON_PIER_COWERING BREAK // Keep the reporter cowering until timeout CASE SCRASH2_AI_REPORTER_ON_PIER_COWERING IF timerReporterAI < m_mission_timer // ...timeout, so make the reporter flee aiReporterOnPier = SCRASH2_AI_REPORTER_ON_PIER_FLEE ELSE // ...should still be cowering, so make sure it is IF timerReporterAnim < m_mission_timer IF NOT IS_CHAR_PLAYING_ANIM charReporter DUCK_cower TASK_PLAY_ANIM charReporter DUCK_cower PED 4.0 true false false false -1 timerReporterAnim = m_mission_timer + 500 ENDIF ENDIF ENDIF BREAK */ // Make the reporter flee CASE SCRASH2_AI_REPORTER_ON_PIER_FLEE TASK_SMART_FLEE_CHAR charReporter scplayer 4000.0 3600000 aiReporterOnPier = SCRASH2_AI_REPORTER_ON_PIER_FLEEING timerReporterAI = m_mission_timer + 250 BREAK // Keep the reporter fleeing CASE SCRASH2_AI_REPORTER_ON_PIER_FLEEING IF timerReporterAI < m_mission_timer GET_SCRIPT_TASK_STATUS charReporter TASK_SMART_FLEE_CHAR m_status IF m_status = FINISHED_TASK TASK_SMART_FLEE_CHAR charReporter scplayer 4000.0 3600000 timerReporterAI = m_mission_timer + 250 ENDIF ENDIF BREAK ENDSWITCH RETURN // **************************************** // Update AI Target SCrash2_Update_AI_Target: IF flagTargetAssassinated = TRUE RETURN ENDIF SWITCH aiTarget // Make the Target Kill Player CASE SCRASH2_AI_TARGET_KILL_PLAYER GIVE_WEAPON_TO_CHAR charTarget WEAPONTYPE_PISTOL 99 SET_CHAR_DECISION_MAKER charTarget dmTough TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING charTarget scplayer DUCK_RANDOMLY 4000 34 aiTarget = SCRASH2_AI_TARGET_KILLING_PLAYER timerTargetAI = m_mission_timer + 250 BREAK // Keep the Target killing the player CASE SCRASH2_AI_TARGET_KILLING_PLAYER IF timerTargetAI < m_mission_timer /* // Check if the Target should flee instead GET_CHAR_COORDINATES charTarget xposTemp yposTemp zposTemp GET_CHAR_COORDINATES scplayer xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempFloat IF fTempFloat > 100.0 aiTarget = SCRASH2_AI_TARGET_FLEE ELSE */ // ...target shouldn't flee, so make sure it is still killing player GET_SCRIPT_TASK_STATUS charTarget TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING m_status IF m_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING charTarget scplayer DUCK_RANDOMLY 4000 34 timerTargetAI = m_mission_timer + 250 ENDIF // ENDIF ENDIF BREAK /* // Make the Target Flee CASE SCRASH2_AI_TARGET_FLEE SET_CHAR_DECISION_MAKER charTarget dmEmpty TASK_SMART_FLEE_CHAR charTarget scplayer 4000.0 3600000 aiTarget = SCRASH2_AI_TARGET_FLEEING timerTargetAI = m_mission_timer + 250 BREAK // Keep the Target fleeing CASE SCRASH2_AI_TARGET_FLEEING IF timerTargetAI < m_mission_timer // Check if the Target should kill player instead GET_CHAR_COORDINATES charTarget xposTemp yposTemp zposTemp GET_CHAR_COORDINATES scplayer xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempFloat IF fTempFloat < 60.0 aiTarget = SCRASH2_AI_TARGET_KILL_PLAYER ELSE // ...target shouldn't kill player, so make sure it is still fleeing GET_SCRIPT_TASK_STATUS charTarget TASK_SMART_FLEE_CHAR m_status IF m_status = FINISHED_TASK TASK_SMART_FLEE_CHAR charTarget scplayer 4000.0 3600000 timerTargetAI = m_mission_timer + 250 ENDIF ENDIF ENDIF BREAK */ ENDSWITCH RETURN // ************************************************************************************************************* // Suspicion Level // ************************************************************************************************************* // **************************************** // Initialise Suspicion Level SCrash2_Initialise_Suspicion_Level: // Reset suspicion variables nSuspicionWalkArea = SCRASH2_SUSPICION_AREA_NONE // REMOVE OLD-STYLE SPOOK-O-METER // timerSuspicionNextUpdate = m_mission_timer + 500 // END REMOVE OLD-STYLE SPOOK-O-METER statusSuspicion = SCRASH2_SUSPICION_STATUS_NONE flagReporterSpooked = FALSE RETURN // **************************************** // Update Walking Suspicion Area SCrash2_Update_Walking_Suspicion_Area: // Check if the suspicion area needs to change based on the reporter's current position SWITCH nSuspicionWalkArea // ...no suspicion area, so check if on platform CASE SCRASH2_SUSPICION_AREA_NONE IF LOCATE_CHAR_ANY_MEANS_3D charReporter 833.4493 -1374.2609 -1.5078 1.2 1.2 1.2 FALSE nSuspicionWalkArea = SCRASH2_SUSPICION_AREA_PLATFORM ENDIF BREAK // ...on platform, so check if reached foot of steps CASE SCRASH2_SUSPICION_AREA_PLATFORM // Updated during the 'Station_Walk' routine // IF LOCATE_CHAR_ANY_MEANS_3D charReporter 828.2594 -1358.9948 -1.5078 1.2 1.2 1.2 FALSE // nSuspicionWalkArea = SCRASH2_SUSPICION_AREA_LOW_STEPS // ENDIF BREAK // ...on lower station steps, so check if reached mid-level CASE SCRASH2_SUSPICION_AREA_LOW_STEPS // Updated during the 'Station_Walk' routine // IF LOCATE_CHAR_ANY_MEANS_3D charReporter 836.6295 -1342.9258 6.1719 1.2 1.2 1.2 FALSE // nSuspicionWalkArea = SCRASH2_SUSPICION_AREA_HIGH_STEPS // ENDIF BREAK // ...on higher station steps, so check if reached top of steps CASE SCRASH2_SUSPICION_AREA_HIGH_STEPS // Updated during the 'Station_Walk' routine // IF LOCATE_CHAR_ANY_MEANS_3D charReporter 822.0569 -1342.3020 12.5190 1.2 1.2 1.2 FALSE // nSuspicionWalkArea = SCRASH2_SUSPICION_AREA_ENTRANCE // ENDIF BREAK // ...at top of steps (station entrance), so check if at kerb CASE SCRASH2_SUSPICION_AREA_ENTRANCE // Updated during the 'Station_Walk' routine // IF LOCATE_CHAR_ANY_MEANS_3D charReporter 803.7784 -1342.9255 12.5469 1.2 1.2 1.2 FALSE // nSuspicionWalkArea = SCRASH2_SUSPICION_AREA_KERB // ENDIF BREAK // ...at kerb CASE SCRASH2_SUSPICION_AREA_KERB BREAK DEFAULT WRITE_DEBUG Unknown_Suspicion_area ENDSWITCH RETURN // **************************************** // Update Walking Spook Meter SCrash2_Update_Walking_Spook_Meter: // Check if it is time to do a suspicion check // NOTE: If the player is shooting, do the check immediately IF flagPlayerShootingNearWalkingReporter = TRUE RETURN ENDIF IF IS_CHAR_SHOOTING scplayer flagPlayerShootingNearWalkingReporter = TRUE ENDIF // REMOVE OLD-STYLE SPOOK-O-METER // IF flagPlayerShootingNearWalkingReporter = FALSE // AND timerSuspicionNextUpdate > m_mission_timer // RETURN // ENDIF // END REMOVE OLD-STYLE SPOOK-O-METER // Check if the player is in the area // flagTempFlag used to indicate if the reporter is suspicious on this update flagTempFlag = FALSE SWITCH nSuspicionWalkArea // ...no suspicion area CASE SCRASH2_SUSPICION_AREA_NONE BREAK // ...reporter on platform CASE SCRASH2_SUSPICION_AREA_PLATFORM IF IS_CHAR_IN_AREA_3D scplayer 783.9064 -1393.1558 -2.7078 858.4905 -1322.6401 -0.3006 FALSE // ...player is in the area flagTempFlag = TRUE ENDIF BREAK // ...reporter on lower station steps CASE SCRASH2_SUSPICION_AREA_LOW_STEPS IF IS_CHAR_IN_AREA_3D scplayer 825.3654 -1359.6663 -2.7078 842.8153 -1338.8934 7.3875 FALSE OR IS_CHAR_IN_AREA_3D scplayer 820.1507 -1365.7661 -2.7078 831.2700 -1354.9083 -0.3078 FALSE // ...player is in the area flagTempFlag = TRUE ENDIF BREAK // ...reporter on higher station steps CASE SCRASH2_SUSPICION_AREA_HIGH_STEPS IF IS_CHAR_IN_AREA_3D scplayer 819.6318 -1344.2576 4.9875 842.2764 -1338.7423 13.7162 FALSE OR IS_CHAR_IN_AREA_3D scplayer 816.7490 -1345.1163 8.8156 829.4735 -1338.8949 13.7281 FALSE // ...player is in the area flagTempFlag = TRUE ENDIF BREAK // ...reporter at top of steps (station entrance) CASE SCRASH2_SUSPICION_AREA_ENTRANCE IF IS_CHAR_IN_AREA_3D scplayer 787.7994 -1357.3230 11.3391 827.1069 -1309.4060 13.7625 FALSE OR IS_CHAR_IN_AREA_3D scplayer 816.7490 -1345.1163 8.8156 829.4735 -1338.8949 13.7281 FALSE // ...player is in the area flagTempFlag = TRUE ENDIF BREAK // ...reporter at kerb CASE SCRASH2_SUSPICION_AREA_KERB IF flagReporterGettingIntoCab = FALSE IF IS_CHAR_IN_AREA_3D scplayer 787.0083 -1376.2400 11.3391 809.9620 -1310.5059 13.8144 FALSE // ...player is in the area flagTempFlag = TRUE ENDIF ENDIF BREAK DEFAULT WRITE_DEBUG Unknown_Suspicion_area ENDSWITCH // If the player is shooting, check if he is in the area IF flagPlayerShootingNearWalkingReporter = TRUE flagPlayerShootingNearWalkingReporter = flagTempFlag ENDIF IF flagPlayerShootingNearWalkingReporter = TRUE // ...set a timer in case the reporter dies in the meantime so that the appropriate death message is displayed timerReporterSpookedAndFleeing = m_mission_timer + 1000 TASK_SMART_FLEE_CHAR charReporter scplayer 9999.0 10000 ENDIF // If the player is in the area, check distance IF flagTempFlag = TRUE GET_CHAR_COORDINATES charReporter xposTemp yposTemp zposTemp GET_CHAR_COORDINATES scplayer xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance // If previously suspicious, then the player needs to be the HI distance away to release suspicion, // but if not previously suspicious then the player needs to be the LO distance away to cause suspicion IF statusSuspicion = SCRASH2_SUSPICION_STATUS_TOO_CLOSE // ...was previously suspicious IF fTempDistance > SCRASH2_SUSPICION_WALK_MAX_DISTANCE_HI // ...too far away, so not suspicious flagTempFlag = FALSE ENDIF ELSE // ...was not previously suspicious IF fTempDistance > SCRASH2_SUSPICION_WALK_MAX_DISTANCE_LO // ...too far away, so not suspicious flagTempFlag = FALSE ENDIF ENDIF ENDIF // Update the suspicion timer // Is the reporter suspicious now? IF flagTempFlag = TRUE // ...the reporter is suspicious IF statusSuspicion = SCRASH2_SUSPICION_STATUS_NONE // ...the reporter was not previously suspicious, so set up the timer // REMOVE OLD-STYLE SPOOK-O-METER // // NOTE: The timer will only display when there are 10 seconds left. // // This is to prevent it flashing on and off at the boundaries. // nFailure = 12 // timerFailureConditions = m_mission_timer + 1000 // END REMOVE OLD-STYLE SPOOK-O-METER // ADD NEW-STYLE SPOOK-O-METER timerTooClose = m_mission_timer + SCRASH2_SPOOKOMETER_INCREASE_msec // Display message (first time only) IF flagDisplayedTooClose = FALSE PRINT_NOW SCR2_08 30000 1 flagDisplayedTooClose = TRUE ENDIF flagReporterSpooked = TRUE // END ADD NEW-STYLE SPOOK-O-METER statusSuspicion = SCRASH2_SUSPICION_STATUS_TOO_CLOSE ELSE // ...the reporter was previously suspicious, so maintain the timer // REMOVE OLD-STYLE SPOOK-O-METER /* IF timerFailureConditions < m_mission_timer // ...timer elapsed nFailure-- IF nFailure < 0 // ...time up nFailure = 0 m_failed = TRUE m_fail_reason = SCRASH2_FAILED_REPORTER_SPOOKED CLEAR_SMALL_PRINTS RETURN ELSE // set up the timer again timerFailureConditions = m_mission_timer + 1000 ENDIF ENDIF // Check for an instant message IF nFailure > 10 AND fTempDistance <= SCRASH2_TOO_CLOSE_INSTANT nFailure = 10 timerFailureConditions = m_mission_timer + 1000 ENDIF IF nFailure = 10 // Display message? (First time only) IF flagDisplayedTooClose = FALSE PRINT_NOW SCR2_08 30000 1 flagDisplayedTooClose = TRUE ENDIF flagReporterSpooked = TRUE ENDIF */ // END REMOVE OLD-STYLE SPOOK-O-METER // ADD NEW-STYLE SPOOK-O-METER IF timerTooClose < m_mission_timer // ...timer elapsed g_SCrash2_spookKM++ IF g_SCrash2_spookKM > 100 g_SCrash2_spookKM = 100 m_failed = TRUE m_fail_reason = SCRASH2_FAILED_REPORTER_SPOOKED CLEAR_SMALL_PRINTS RETURN ELSE // Set up the timer again timerTooClose = m_mission_timer + SCRASH2_SPOOKOMETER_INCREASE_msec ENDIF ENDIF // END ADD NEW-STYLE SPOOK-O-METER // REMOVE OLD-STYLE SPOOK-O-METER // // Display (but only if there are 10 seconds left) // IF nFailure <= 10 // g_SCrash2_spookKM = 10 - nFailure // g_SCrash2_spookKM *= 10 // ENDIF // END REMOVE OLD-STYLE SPOOK-O-METER ENDIF ELSE // ...the reporter is not suspicious IF statusSuspicion = SCRASH2_SUSPICION_STATUS_TOO_CLOSE // ...the reporter was previously suspicious, so clear the timers CLEAR_SMALL_PRINTS statusSuspicion = SCRASH2_SUSPICION_STATUS_NONE // Go back to previous 'goto' command and issue it again flagReporterSpooked = FALSE statusStationWalk = statusStationWalkInit CLEAR_LOOK_AT charReporter // ADD NEW-STYLE SPOOK-O-METER timerTooClose = m_mission_timer + SCRASH2_SPOOKOMETER_DECREASE_msec ELSE // ...the reporter was not previously suspicious, so check if there is still some spookometer value to clearup IF g_SCrash2_spookKM > 0 // ...yes, so maintain it until it reaches 0 IF timerTooClose > 0 AND timerTooClose < m_mission_timer // ...decrease it g_SCrash2_spookKM-- IF g_SCrash2_spookKM < 0 g_SCrash2_spookKM = 0 timerTooClose = 0 ENDIF ENDIF ENDIF // END ADD NEW-STYLE SPOOK-O-METER ENDIF // REMOVE OLD-STYLE SPOOK-O-METER // g_SCrash2_spookKM = 0 // END REMOVE OLD-STYLE SPOOK-O-METER ENDIF /* MODIFIED DISPLAY // Update the suspicion timer // Is the reporter suspicious now? IF flagTempFlag = TRUE // ...the reporter is suspicious IF statusSuspicion = SCRASH2_SUSPICION_STATUS_NONE // ...the reporter was not previously suspicious, so set up the timer // NOTE: The timer will only display when there are 10 seconds left. // This is to prevent it flashing on and off at the boundaries. g_SCrash2_failureKM = 12 timerFailureConditions = m_mission_timer + 1000 statusSuspicion = SCRASH2_SUSPICION_STATUS_TOO_CLOSE ELSE // ...the reporter was previously suspicious, so maintain the timer IF timerFailureConditions < m_mission_timer // ...timer elapsed g_SCrash2_failureKM-- IF g_SCrash2_failureKM < 0 // ...time up g_SCrash2_failureKM = 0 m_failed = TRUE m_fail_reason = SCRASH2_FAILED_REPORTER_SPOOKED CLEAR_SMALL_PRINTS RETURN ELSE // set up the timer again timerFailureConditions = m_mission_timer + 1000 ENDIF ENDIF // Display (but only if there are 10 seconds left) IF g_SCrash2_failureKM = 1 // ...singular CLEAR_SMALL_PRINTS PRINT_WITH_NUMBER SCR2_09 g_SCrash2_failureKM 1000 1 ELSE IF g_SCrash2_failureKM <= 10 // ...plural CLEAR_SMALL_PRINTS PRINT_WITH_NUMBER SCR2_08 g_SCrash2_failureKM 1000 1 ENDIF ENDIF ENDIF ELSE // ...the reporter is not suspicious IF NOT statusSuspicion = SCRASH2_SUSPICION_STATUS_NONE // ...the reporter was previously suspicious, so clear the timers CLEAR_SMALL_PRINTS statusSuspicion = SCRASH2_SUSPICION_STATUS_NONE ENDIF ENDIF // Set up the timer for the next update timerSuspicionNextUpdate = m_mission_timer + 500 */ RETURN // **************************************** // Update Driving Spook Meter SCrash2_Update_Driving_Spook_Meter: // REMOVE OLD-STYLE SPOOK-O-METER // // Check if it is time to do a suspicion check // IF timerSuspicionNextUpdate > m_mission_timer // RETURN // ENDIF // END REMOVE OLD-STYLE SPOOK-O-METER // There is a bit of leeway when the reporter first gets in the car so that he doesn't immediately become // suspicious of the player. so maintain this leeway time IF flagJustStartedDriving = TRUE IF timerJustStartedDrivingLeeway < m_mission_timer flagJustStartedDriving = FALSE timerJustStartedDrivingLeeway = 0 ENDIF ENDIF // Storage to help decide if the 'decrease spookometer' timer should be started flagPreviouslySuspicious = FALSE IF statusSuspicion = SCRASH2_SUSPICION_STATUS_PLAYER_AHEAD OR statusSuspicion = SCRASH2_SUSPICION_STATUS_TOO_CLOSE flagPreviouslySuspicious = TRUE ENDIF // Always update the spook meter // NOTE: flag1 indicates too close; flag2 indicates too far away flagTempFlag = FALSE flagTempFlag2 = FALSE // NOTE: Special check to see if the player has overtaken the reporter on the pier flagPlayerAheadOfReporterOnPier = FALSE IF flagPlayerOnPier = TRUE AND flagReporterOnPier = TRUE // Check if the player is closer to the end of the pier than the reporter GET_CHAR_COORDINATES charReporter xposTemp yposTemp zposTemp GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp 372.6610 -2088.7900 6.8360 fTempDistance GET_CHAR_COORDINATES scplayer xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp2 yposTemp2 zposTemp2 372.6610 -2088.7900 6.8360 fTempFloat IF fTempFloat < fTempDistance // ...player closer to end of pier than reporter flagPlayerAheadOfReporterOnPier = TRUE ENDIF ENDIF // Is the player ahead of the reporter on the pier? IF flagPlayerAheadOfReporterOnPier = TRUE // ...the reporter is suspicious IF NOT statusSuspicion = SCRASH2_SUSPICION_STATUS_PLAYER_AHEAD // ...the reporter was not previously suspicious, so set up the timer // REMOVE OLD-STYLE SPOOK-O-METER // // NOTE: The timer will only display when there are 10 seconds left. // // This is to prevent it flashing on and off at the boundaries. // END REMOVE OLD-STYLE SPOOK-O-METER IF NOT statusSuspicion = SCRASH2_SUSPICION_STATUS_TOO_CLOSE // REMOVE OLD-STYLE SPOOK-O-METER // AND NOT statusSuspicion = SCRASH2_SUSPICION_STATUS_TOO_FAR_AWAY // nFailure = 10 // timerFailureConditions = m_mission_timer + 1000 // END REMOVE OLD-STYLE SPOOK-O-METER // ADD NEW-STYLE SPOOK-O-METER timerTooClose = m_mission_timer + SCRASH2_SPOOKOMETER_INCREASE_msec // END ADD NEW-STYLE SPOOK-O-METER ENDIF statusSuspicion = SCRASH2_SUSPICION_STATUS_PLAYER_AHEAD PRINT_NOW SCR2_23 30000 1 ELSE // ...the reporter was previously suspicious, so maintain the timer // REMOVE OLD-STYLE SPOOK-O-METER /* IF timerFailureConditions < m_mission_timer // ...timer elapsed nFailure-- IF nFailure < 0 // ...time up nFailure = 0 m_failed = TRUE m_fail_reason = SCRASH2_FAILED_REPORTER_SPOOKED CLEAR_SMALL_PRINTS RETURN ELSE // set up the timer again timerFailureConditions = m_mission_timer + 1000 ENDIF ENDIF // Display (but only if there are 10 seconds left) IF nFailure <= 10 g_SCrash2_spookKM = 10 - nFailure g_SCrash2_spookKM *= 10 ENDIF */ // END REMOVE OLD-STYLE SPOOK-O-METER // ADD NEW-STYLE SPOOK-O-METER IF timerTooClose < m_mission_timer // ...timer elapsed g_SCrash2_spookKM++ IF g_SCrash2_spookKM > 100 g_SCrash2_spookKM = 100 m_failed = TRUE m_fail_reason = SCRASH2_FAILED_REPORTER_SPOOKED CLEAR_SMALL_PRINTS RETURN ELSE // Set up the timer again timerTooClose = m_mission_timer + SCRASH2_SPOOKOMETER_INCREASE_msec ENDIF ENDIF // END ADD NEW-STYLE SPOOK-O-METER ENDIF RETURN ENDIF IF flagPlayerAheadOfReporterOnPier = FALSE GET_CHAR_COORDINATES charReporter xposTemp yposTemp zposTemp GET_CHAR_COORDINATES scplayer xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance IF fTempDistance <= SCRASH2_TOO_CLOSE // ...when the reporter has just started driving, don't update the spook bar so that the // changeover from walking to driving is less messy IF flagJustStartedDriving = FALSE flagTempFlag = TRUE ENDIF ELSE IF fTempDistance >= SCRASH2_TOO_FAR_AWAY // ...too far away flagTempFlag2 = TRUE ENDIF ENDIF ENDIF IF flagPlayerAheadOfReporterOnPier = FALSE // ...the player is not ahead of the reporter, so check if he was IF statusSuspicion = SCRASH2_SUSPICION_STATUS_PLAYER_AHEAD // ...the reporter was previously suspicious, so clear some variables IF flagTempFlag = FALSE AND flagTempFlag2 = FALSE CLEAR_SMALL_PRINTS statusSuspicion = SCRASH2_SUSPICION_STATUS_NONE ENDIF ENDIF ENDIF // Is the player too close? IF flagTempFlag = TRUE // ...too close IF NOT statusSuspicion = SCRASH2_SUSPICION_STATUS_TOO_CLOSE // REMOVE OLD-STYLE SPOOK-O-METER /* // ...the reporter was not previously suspicious, so set up the timer // NOTE: The timer will only display when there are 10 seconds left. // This is to prevent it flashing on and off at the boundaries. IF NOT statusSuspicion = SCRASH2_SUSPICION_STATUS_PLAYER_AHEAD nFailure = 12 timerFailureConditions = m_mission_timer + 1000 ELSE IF nFailure <= 10 // ...display 'Too Close' message // NOTE: Always in this case, because the player was previously ahead of the reporter on the pier // so the player needs to know he is still in danger of failing the mission PRINT_NOW SCR2_08 30000 1 ENDIF ENDIF */ // END REMOVE OLD-STYLE SPOOK-O-METER // ADD NEW-STYLE SPOOK-O-METER timerTooClose = m_mission_timer + SCRASH2_SPOOKOMETER_INCREASE_msec IF NOT statusSuspicion = SCRASH2_SUSPICION_STATUS_PLAYER_AHEAD // ...not previously ahead of player, so display 'too close' message (first time only) IF flagDisplayedTooClose = FALSE PRINT_NOW SCR2_08 30000 1 flagDisplayedTooClose = TRUE ENDIF ELSE // ...previously player ahead of reporter, so display 'too close' message (always, in this case) PRINT_NOW SCR2_08 30000 1 flagDisplayedTooClose = TRUE ENDIF flagReporterSpooked = TRUE // END ADD NEW-STYLE SPOOK-O-METER statusSuspicion = SCRASH2_SUSPICION_STATUS_TOO_CLOSE ELSE // REMOVE OLD-STYLE SPOOK-O-METER /* // ...the reporter was previously suspicious, so maintain the timer IF timerFailureConditions < m_mission_timer // ...timer elapsed nFailure-- IF nFailure < 0 // ...time up nFailure = 0 m_failed = TRUE m_fail_reason = SCRASH2_FAILED_REPORTER_SPOOKED CLEAR_SMALL_PRINTS RETURN ELSE // set up the timer again timerFailureConditions = m_mission_timer + 1000 ENDIF ENDIF // Check for an instant message IF nFailure > 10 AND fTempDistance <= SCRASH2_TOO_CLOSE_INSTANT nFailure = 10 timerFailureConditions = m_mission_timer + 1000 ENDIF IF nFailure = 10 AND flagDisplayedTooClose = FALSE // ...display 'too close' (once only) PRINT_NOW SCR2_08 30000 1 flagDisplayedTooClose = TRUE ENDIF // Display (but only if there are 10 seconds left) IF nFailure <= 10 g_SCrash2_spookKM = 10 - nFailure g_SCrash2_spookKM *= 10 ENDIF */ // END REMOVE OLD-STYLE SPOOK-O-METER // ADD NEW-STYLE SPOOK-O-METER // ...the reporter was previously suspicious, so maintain the timer IF timerTooClose < m_mission_timer // ...timer elapsed g_SCrash2_spookKM++ IF g_SCrash2_spookKM > 100 g_SCrash2_spookKM = 100 m_failed = TRUE m_fail_reason = SCRASH2_FAILED_REPORTER_SPOOKED CLEAR_SMALL_PRINTS RETURN ELSE // Set up the timer again timerTooClose = m_mission_timer + SCRASH2_SPOOKOMETER_INCREASE_msec ENDIF ENDIF // END ADD NEW-STYLE SPOOK-O-METER ENDIF ELSE // ...the reporter is not suspicious IF statusSuspicion = SCRASH2_SUSPICION_STATUS_TOO_CLOSE // ...the reporter was previously suspicious, so clear some variables CLEAR_SMALL_PRINTS statusSuspicion = SCRASH2_SUSPICION_STATUS_NONE ENDIF // REMOVE OLD-STYLE SPOOK-O-METER // g_SCrash2_spookKM = 0 // END REMOVE OLD-STYLE SPOOK-O-METER ENDIF // Is the player too far away? // Only display this until the player is on the pier IF flagTempFlag2 = TRUE IF flagReporterOnPier = TRUE AND flagPlayerOnPier = TRUE flagTempFlag2 = FALSE ENDIF ENDIF IF flagTempFlag2 = TRUE // ...the reporter is suspicious IF statusSuspicion = SCRASH2_SUSPICION_STATUS_NONE // ...the player was not previously too far away, so set up the timer unless the reporter is on the pier // NOTE: The timer will only display when there are 10 seconds left. // This is to prevent it flashing on and off at the boundaries. nFailure = 21 // REMOVE OLD-STYLE SPOOK-O-METER // timerFailureConditions = m_mission_timer + 1000 // END REMOVE OLD-STYLE SPOOK-O-METER // ADD NEW-STYLE SPOOK-O-METER timerTooFarAway = m_mission_timer + 1000 // END ADD NEW-STYLE SPOOK-O-METER statusSuspicion = SCRASH2_SUSPICION_STATUS_TOO_FAR_AWAY ELSE // ...the player was previously too far away, so maintain the timer // REMOVE OLD-STYLE SPOOK-O-METER // IF timerFailureConditions < m_mission_timer // END REMOVE OLD-STYLE SPOOK-O-METER // ADD NEW-STYLE SPOOK-O-METER IF timerTooFarAway < m_mission_timer // END ADD NEW-STYLE SPOOK-O-METER // ...timer elapsed nFailure-- IF nFailure < 0 // ...time up nFailure = 0 m_failed = TRUE m_fail_reason = SCRASH2_FAILED_LOST_THE_REPORTER CLEAR_SMALL_PRINTS RETURN ELSE // set up the timer again // REMOVE OLD-STYLE SPOOK-O-METER // timerFailureConditions = m_mission_timer + 1000 // END REMOVE OLD-STYLE SPOOK-O-METER // ADD NEW-STYLE SPOOK-O-METER timerTooFarAway = m_mission_timer + 1000 // END ADD NEW-STYLE SPOOK-O-METER ENDIF ENDIF // Check for an instant message display IF nFailure > 10 AND fTempDistance >= SCRASH2_TOO_FAR_AWAY_INSTANT PRINT_NOW SCR2_16 30000 1 ENDIF // Display (but only if there are 10 seconds left) IF nFailure = 10 PRINT_NOW SCR2_16 30000 1 ENDIF ENDIF ELSE // ...the player is not too far away IF statusSuspicion = SCRASH2_SUSPICION_STATUS_TOO_FAR_AWAY // ...the player was previously too far away, so clear the timers CLEAR_THIS_PRINT SCR2_16 statusSuspicion = SCRASH2_SUSPICION_STATUS_NONE ENDIF ENDIF // REMOVE OLD-STYLE SPOOK-O-METER // // Set up the timer for the next update // timerSuspicionNextUpdate = m_mission_timer + 500 // END REMOVE OLD-STYLE SPOOK-O-METER // ADD NEW-STYLE SPOOK-O-METER IF NOT statusSuspicion = SCRASH2_SUSPICION_STATUS_TOO_CLOSE AND NOT statusSuspicion = SCRASH2_SUSPICION_STATUS_PLAYER_AHEAD IF flagPreviouslySuspicious = TRUE // ...start the 'decrease' timer timerTooClose = m_mission_timer + SCRASH2_SPOOKOMETER_DECREASE_msec ELSE // ...decrease the spook-o-meter if it still holds a value IF g_SCrash2_spookKM > 0 IF timerTooClose < m_mission_timer g_SCrash2_spookKM-- IF g_SCrash2_spookKM < 0 g_SCrash2_spookKM = 0 timerTooClose = 0 ELSE timerTooClose = m_mission_timer + SCRASH2_SPOOKOMETER_DECREASE_msec ENDIF ENDIF ENDIF ENDIF ENDIF // END ADD NEW-STYLE SPOOK-O-METER /* MODIFIED THE DISPLAY // Always update the safe distance bar // NOTE: flag1 indicates too close; flag2 indicates too far away flagTempFlag = FALSE flagTempFlag2 = FALSE GET_CHAR_COORDINATES charReporter xposTemp yposTemp zposTemp GET_CHAR_COORDINATES scplayer xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance IF fTempDistance <= SCRASH2_SAFE_DISTANCE_LOW // ...too close g_SCrash2_safedistanceKM = 100 // ...when the reporter has just started driving, don't display the 'too close' timer to allow the // changeover from walking to driving to be less messy IF flagJustStartedDriving = FALSE flagTempFlag = TRUE ENDIF ELSE IF fTempDistance >= SCRASH2_SAFE_DISTANCE_HIGH // ...too far away g_SCrash2_safedistanceKM = 0 flagTempFlag2 = TRUE ELSE // ...safe distance, so work out the bar display fTempFloat = fTempDistance - SCRASH2_SAFE_DISTANCE_LOW fTempFloat = fTempFloat * 100.0 fTempFloat2 = SCRASH2_SAFE_DISTANCE_HIGH - SCRASH2_SAFE_DISTANCE_LOW fTempFloat = fTempFloat / fTempFloat2 fTempFloat2 = 100.0 - fTempFloat g_SCrash2_safedistanceKM =# fTempFloat2 ENDIF ENDIF // Check if it is time to do a suspicion check IF timerSuspicionNextUpdate > m_mission_timer RETURN ENDIF // Update the suspicion timers // Is the player too close? IF flagTempFlag = TRUE // ...the reporter is suspicious IF statusSuspicion = SCRASH2_SUSPICION_STATUS_NONE // ...the reporter was not previously suspicious, so set up the timer // NOTE: The timer will only display when there are 10 seconds left. // This is to prevent it flashing on and off at the boundaries. g_SCrash2_failureKM = 12 timerFailureConditions = m_mission_timer + 1000 statusSuspicion = SCRASH2_SUSPICION_STATUS_TOO_CLOSE ELSE // ...the reporter was previously suspicious, so maintain the timer IF timerFailureConditions < m_mission_timer // ...timer elapsed g_SCrash2_failureKM-- IF g_SCrash2_failureKM < 0 // ...time up g_SCrash2_failureKM = 0 m_failed = TRUE m_fail_reason = SCRASH2_FAILED_REPORTER_SPOOKED CLEAR_SMALL_PRINTS RETURN ELSE // set up the timer again timerFailureConditions = m_mission_timer + 1000 ENDIF ENDIF // Display (but only if there are 10 seconds left) IF g_SCrash2_failureKM = 1 // ...singular CLEAR_SMALL_PRINTS PRINT_WITH_NUMBER SCR2_09 g_SCrash2_failureKM 1000 1 ELSE IF g_SCrash2_failureKM <= 10 // ...plural CLEAR_SMALL_PRINTS PRINT_WITH_NUMBER SCR2_08 g_SCrash2_failureKM 1000 1 ENDIF ENDIF ENDIF ELSE // ...the reporter is not suspicious IF statusSuspicion = SCRASH2_SUSPICION_STATUS_TOO_CLOSE // ...the reporter was previously suspicious, so clear the timers CLEAR_SMALL_PRINTS statusSuspicion = SCRASH2_SUSPICION_STATUS_NONE ENDIF ENDIF // Is the player too far away? // Only display this until the player is on the pier IF flagTempFlag2 = TRUE IF flagReporterOnPier = TRUE AND flagPlayerOnPier = TRUE flagTempFlag2 = FALSE ENDIF ENDIF IF flagTempFlag2 = TRUE // ...the reporter is suspicious IF statusSuspicion = SCRASH2_SUSPICION_STATUS_NONE // ...the player was not previously too far away, so set up the timer unless the reporter is on the pier // NOTE: The timer will only display when there are 10 seconds left. // This is to prevent it flashing on and off at the boundaries. g_SCrash2_failureKM = 21 timerFailureConditions = m_mission_timer + 1000 statusSuspicion = SCRASH2_SUSPICION_STATUS_TOO_FAR_AWAY ELSE // ...the player was previously too far away, so maintain the timer IF timerFailureConditions < m_mission_timer // ...timer elapsed g_SCrash2_failureKM-- IF g_SCrash2_failureKM < 0 // ...time up g_SCrash2_failureKM = 0 m_failed = TRUE m_fail_reason = SCRASH2_FAILED_LOST_THE_REPORTER CLEAR_SMALL_PRINTS RETURN ELSE // set up the timer again timerFailureConditions = m_mission_timer + 1000 ENDIF ENDIF // Display (but only if there are 20 seconds left) IF g_SCrash2_failureKM = 1 // ...singular CLEAR_SMALL_PRINTS PRINT_WITH_NUMBER SCR2_17 g_SCrash2_failureKM 1000 1 ELSE IF g_SCrash2_failureKM <= 20 // ...plural CLEAR_SMALL_PRINTS PRINT_WITH_NUMBER SCR2_16 g_SCrash2_failureKM 1000 1 ENDIF ENDIF ENDIF ELSE // ...the player is not too far away IF statusSuspicion = SCRASH2_SUSPICION_STATUS_TOO_FAR_AWAY // ...the player was previously too far away, so clear the timers CLEAR_THIS_PRINT SCR2_17 CLEAR_THIS_PRINT SCR2_16 statusSuspicion = SCRASH2_SUSPICION_STATUS_NONE ENDIF ENDIF // Set up the timer for the next update timerSuspicionNextUpdate = m_mission_timer + 500 */ RETURN // **************************************** // Initialise Spook Meter SCrash2_Initialise_Spook_Meter: // Display the Safe Distance bar DISPLAY_ONSCREEN_COUNTER_WITH_STRING g_SCrash2_spookKM COUNTER_DISPLAY_BAR SCR2_52 RETURN // ************************************************************************************************************* // HOUSEKEEPING GOSUBS // ************************************************************************************************************* // **************************************** // DEBUG TOOLS SCrash2_Debug_Tools: // Display mission stage variables for debug IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_SPACE display_debug++ IF display_debug > 2 display_debug = 0 ENDIF CLEAR_ALL_VIEW_VARIABLES ENDIF IF display_debug = 1 IF NOT IS_CAR_DEAD carTrain GET_CAR_SPEED CarTrain fTempFloat SCrash2_view_debug[6] =# fTempFloat ENDIF // system variables SCrash2_view_debug[0] = m_stage SCrash2_view_debug[1] = m_goals SCrash2_view_debug[2] = TIMERA SCrash2_view_debug[3] = TIMERB SCrash2_view_debug[4] = m_mission_timer SCrash2_view_debug[5] = nTrainDistanceFromPlayer // SCrash2_view_debug[6] = 0 SCrash2_view_debug[7] = nPlayerDistanceFromLS // First two lines are so that the important data displayed is not hidden by other text VIEW_INTEGER_VARIABLE SCrash2_view_debug[0] m_stage VIEW_INTEGER_VARIABLE SCrash2_view_debug[1] m_goals VIEW_INTEGER_VARIABLE SCrash2_view_debug[4] m_mission_timer VIEW_INTEGER_VARIABLE SCrash2_view_debug[5] Train_distance IF NOT IS_CAR_DEAD carTrain VIEW_INTEGER_VARIABLE SCrash2_view_debug[6] Train_speed ENDIF VIEW_INTEGER_VARIABLE SCrash2_view_debug[7] Player_from_LS ENDIF IF display_debug = 2 // A second page of variable output (if required - just copy format above) ENDIF // Quit level - no mission pass/fail - cleanup only IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ESC m_quit = 1 ENDIF // Pause level IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_P IF m_pause = 0 m_pause = 1 WRITE_DEBUG LEVEL_PAUSED ELSE m_pause = 0 WRITE_DEBUG LEVEL_UNPAUSED ENDIF ENDIF RETURN // **************************************** // DEBUG SHORTCUTS SCrash2_Debug_Shortcuts: IF NOT IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_J RETURN ENDIF // Stage 1 jump IF m_stage = 1 // Warp the player to the sniper rifle CLEAR_AREA -2063.5474 253.2754 34.3043 0.5 TRUE SET_CHAR_COORDINATES scplayer -2063.5474 253.2754 34.3043 SET_CHAR_HEADING scplayer 0.0000 ENDIF // Stage 2 jump IF m_stage = 2 AND m_goals < 4 IF existsTrain = 0 // ...create the train CLEAR_AREA -1944.0250 135.5236 24.7109 100.0 TRUE CREATE_MISSION_TRAIN 11 -1944.0250 135.5236 24.7109 FALSE carTrain SET_TRAIN_SPEED carTrain 0.0 SET_TRAIN_CRUISE_SPEED carTrain 0.0 existsTrain = 1 ENDIF // Make the passenger enter the train (warping almost immediately) IF NOT IS_CAR_DEAD carTrain GET_TRAIN_CARRIAGE carTrain 1 carCarriage ENDIF IF NOT IS_CHAR_DEAD charReporter TASK_ENTER_CAR_AS_PASSENGER charReporter carCarriage 100 -1 ENDIF // Warp the player to the station CLEAR_AREA -1989.1611 208.5921 26.6797 0.5 TRUE SET_CHAR_COORDINATES scplayer -1989.1611 208.5921 26.6797 SET_CHAR_HEADING scplayer 221.8946 // Set the 'arrival' timer timerTrain = m_mission_timer + 60000 m_goals = 4 ENDIF // Stage 3 jump IF m_stage = 3 AND m_goals < 4 IF m_goals = 1 // Warp the train IF NOT IS_CAR_DEAD carTrain SET_MISSION_TRAIN_COORDINATES carTrain 779.9327 -1334.1549 -2.5340 ENDIF ELSE m_goals = 4 ENDIF // Warp the player CLEAR_AREA 815.0453 -1323.0974 12.5036 5.0 TRUE SET_CHAR_COORDINATES scplayer 815.0453 -1323.0974 12.5036 SET_CHAR_HEADING scplayer 187.1420 ENDIF // Stage 4 jump IF m_stage = 4 AND m_goals < 11 // Warp the reporter IF NOT IS_CHAR_DEAD charReporter SET_CHAR_COORDINATES charReporter 803.7784 -1342.9255 12.5469 SET_CHAR_HEADING charReporter 92.3748 ENDIF // Warp the taxi IF existsTaxiLS = TRUE IF NOT IS_CAR_DEAD carTaxiLS SET_CAR_COORDINATES carTaxiLS 799.7784 -1342.9255 12.5469 SET_CAR_HEADING carTaxiLS 7.9128 ENDIF ELSE CLEAR_AREA 799.7784 -1342.9255 12.5469 10.0 TRUE CREATE_CAR TAXI 799.7784 -1342.9255 12.5469 carTaxiLS SET_CAR_HEADING carTaxiLS 7.9128 CREATE_CHAR_INSIDE_CAR carTaxiLS PEDTYPE_CIVMALE BMYBE charTaxiDriverLS existsTaxiLS = TRUE ENDIF // No longer need the trains IF NOT IS_CAR_DEAD carTrain AND existsTrain = TRUE SET_TRAIN_CRUISE_SPEED carTrain 30.0 MARK_MISSION_TRAIN_AS_NO_LONGER_NEEDED carTrain existsTrain = FALSE ENDIF // Various flags flagPlayerShootingNearWalkingReporter = FALSE flagReporterSpookedAndFleeing = FALSE flagTaxiLSCreationPositionAlpha = TRUE // Remove Market Station blip REMOVE_BLIP blipDestination m_goals = 11 ENDIF // Stage 5 jump IF m_stage = 5 xposDestination = 366.4698 yposDestination = -2030.6428 zposDestination = 6.6582 // Warp reporter IF NOT IS_CHAR_DEAD charReporter CLEAR_AREA 366.4698 -2030.6428 6.6582 5.0 TRUE SET_CHAR_COORDINATES charReporter 366.4698 -2030.6428 6.6582 SET_CHAR_HEADING charReporter 179.2269 ENDIF // Warp player CLEAR_AREA 383.3648 -1930.4478 6.8301 5.0 TRUE SET_CHAR_COORDINATES scplayer 383.3648 -1930.4478 6.8301 SET_CHAR_HEADING scplayer 88.4042 m_goals = 1 ENDIF RETURN // **************************************** // FRAME COUNTER (Useful if processor scheduling is needed) SCrash2_Frame_Counter: m_frame_num++ IF m_frame_num > 9 m_frame_num = 0 ENDIF RETURN // **************************************** // ADDITIONAL TIMERS SCrash2_Additional_Timers: GET_GAME_TIMER m_this_frame_time m_time_diff = m_this_frame_time - m_last_frame_time m_last_frame_time = m_this_frame_time m_mission_timer += m_time_diff RETURN // ================================================================= // GOSUB: Next_Stage (sets flags and timers for next mission stage) // ================================================================= SCrash2_next_stage: m_stage++ m_goals = 0 TIMERA = 0 TIMERB = 0 RETURN // ************************************************************************************************************* // INTRO CUTSCENE GOSUB // ************************************************************************************************************* SCrash2_Intro_Cutscene: SET_PLAYER_CONTROL player1 OFF LOAD_CUTSCENE SCRASH2 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE SET_AREA_VISIBLE 1 SET_CHAR_AREA_VISIBLE scplayer 1 LOAD_SCENE -2031.0 149.0 29.0 START_CUTSCENE SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_FADING_COLOUR 0 0 0 DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 SET_CHAR_AREA_VISIBLE scplayer 0 RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RETURN // ************************************************************************************************************* // INITIALISATION GOSUBS // ************************************************************************************************************* SCrash2_Initialisation: WHILE NOT IS_PLAYER_PLAYING player1 WAIT 0 ENDWHILE GOSUB SCrash2_Load_All_Models GOSUB SCrash2_Load_All_Anims // Create the motorbike outside the station CLEAR_AREA -1978.8496 169.6607 26.6953 3.0 FALSE CREATE_CAR SANCHEZ -1978.8496 169.6607 26.6953 carMotorbike SET_CAR_HEADING carMotorbike 90.1127 flagCheckForRemoveMotorbike = TRUE // Position the player // CLEAR_AREA -2612.7029 828.8597 48.9688 0.5 0 // LOAD_SCENE -2612.7029 828.8597 48.9688 // SET_CHAR_COORDINATES scplayer -2612.7029 828.8597 48.9688 // SET_CHAR_HEADING scplayer 270.0 // CLEAR_AREA -2036.2223 169.9600 27.8359 0.5 0 // LOAD_SCENE -2036.2223 169.9600 27.8359 // SET_CHAR_COORDINATES scplayer -2036.2223 169.9600 27.8359 // SET_CHAR_HEADING scplayer 270.0 CLEAR_AREA -2033.3392 148.6139 27.8359 0.5 0 LOAD_SCENE -2033.3392 148.6139 27.8359 SET_CHAR_COORDINATES scplayer -2033.3392 148.6139 27.8359 SET_CHAR_HEADING scplayer 270.0 SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 ON // Other stuff SWITCH_RANDOM_TRAINS OFF // Respawn point SET_RESPAWN_POINT_FOR_DURATION_OF_MISSION -2026.0613 148.8280 27.8359 // Reduce the resistance of the railroad tracks so that the bike moves a bit faster SET_RAILTRACK_RESISTANCE_MULT 0.4 // Fade in WAIT 1000 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN GOSUB SCrash2_next_stage RETURN // *********************************** // LOAD ALL MODELS SCrash2_Load_All_Models: // CARS REQUEST_MODEL STREAK // Train engine REQUEST_MODEL STREAKC // Train carriage REQUEST_MODEL FREIGHT // Other train engines REQUEST_MODEL FREIFLAT // Other train carriages REQUEST_MODEL SANCHEZ // Motorbike available for player to use // REQUEST_MODEL TAXI // Taxi (NOW REQUESTED JUST PRIOR TO IT BEING REQUIRED) // PEDS REQUEST_MODEL WMYBU // Reporter REQUEST_MODEL BMYBE // Taxi driver REQUEST_MODEL HMYRI // Target // GUNS REQUEST_MODEL SNIPER // Sniper rifle REQUEST_MODEL COLT45 // Police Handgun // OBJECTS LOAD_ALL_MODELS_NOW // Are Cars Loaded? WHILE NOT HAS_MODEL_LOADED STREAK OR NOT HAS_MODEL_LOADED STREAKC OR NOT HAS_MODEL_LOADED FREIGHT OR NOT HAS_MODEL_LOADED FREIFLAT OR NOT HAS_MODEL_LOADED SANCHEZ // OR NOT HAS_MODEL_LOADED TAXI // (NOW REQUESTED JUST PRIOR TO IT BEING REQUIRED) WAIT 0 ENDWHILE // Are Peds Loaded? WHILE NOT HAS_MODEL_LOADED WMYBU OR NOT HAS_MODEL_LOADED BMYBE OR NOT HAS_MODEL_LOADED HMYRI WAIT 0 ENDWHILE // Are weapons loaded? WHILE NOT HAS_MODEL_LOADED SNIPER OR NOT HAS_MODEL_LOADED COLT45 WAIT 0 ENDWHILE // Are the Objects loaded? RETURN // *********************************** // LOAD ALL ANIMS SCrash2_Load_All_Anims: REQUEST_ANIMATION MISC // for hailing a taxi REQUEST_ANIMATION GANGS // for shaking hands // Are anims loaded? WHILE NOT HAS_ANIMATION_LOADED MISC OR NOT HAS_ANIMATION_LOADED GANGS WAIT 0 ENDWHILE RETURN // ************************************************************************************************************* // ENTITY CREATION GOSUBS // ************************************************************************************************************* // ************************************************************************************************************* // END OF LEVEL GOSUBS - fail, pass, cleanup // ************************************************************************************************************* // FAIL mission_failed_SCrash2: PRINT_BIG M_FAIL 5000 1 // Display reason for failure (if there is a reason) CLEAR_SMALL_PRINTS SWITCH m_fail_reason CASE SCRASH2_FAILED_TRAIN_GONE PRINT_NOW SCR2_80 5000 1 BREAK CASE SCRASH2_FAILED_REPORTER_DEAD PRINT_NOW SCR2_81 5000 1 BREAK CASE SCRASH2_FAILED_LOST_THE_REPORTER PRINT_NOW SCR2_82 5000 1 BREAK CASE SCRASH2_FAILED_MEETING_OVER PRINT_NOW SCR2_83 5000 1 BREAK CASE SCRASH2_FAILED_REPORTER_ESCAPED PRINT_NOW SCR2_84 5000 1 BREAK CASE SCRASH2_FAILED_TARGET_ESCAPED PRINT_NOW SCR2_85 5000 1 BREAK CASE SCRASH2_FAILED_REPORTER_SPOOKED PRINT_NOW SCR2_86 5000 1 BREAK ENDSWITCH flagRemoveSniperRifle = TRUE RETURN // PASS mission_passed_SCrash2: CLEAR_SMALL_PRINTS // PRINT_WITH_NUMBER_BIG M_PASS 30000 5000 1 // ADD_SCORE player1 30000 // This mission gives no cash or respect reward, so use M_PASSD label PRINT_WITH_NUMBER_BIG M_PASSD 0 5000 1 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 REGISTER_MISSION_PASSED SCRA_2 PLAYER_MADE_PROGRESS 1 flag_scrash_mission_counter++ REMOVE_BLIP scrash_contact_blip REMOVE_BLIP garage_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ garage_blip_icon garage_contact_blip flagRemoveSniperRifle = FALSE RETURN // CLEANUP mission_cleanup_SCrash2: DISPLAY_RADAR 3 // PATHING ON // Get rid of the Player's mission specific weapons // ...if the player already had a sniper rifle then only remove additional ammo IF IS_PLAYER_PLAYING player1 IF flagRemoveSniperRifle = TRUE IF nSniperAmmoAtStartOfMission = 0 REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_SNIPERRIFLE ELSE GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_SNIPERRIFLE nTempInt IF nSniperAmmoAtStartOfMission < nTempInt // ...sniper ammo now is more than at the start of the mission, so remove the excess SET_CHAR_AMMO scplayer WEAPONTYPE_SNIPERRIFLE nSniperAmmoAtStartOfMission ENDIF ENDIF ENDIF ENDIF IF existsTaxiLS = TRUE AND NOT IS_CAR_DEAD carTaxiLS SET_TAXI_LIGHTS carTaxiLS OFF ENDIF IF NOT IS_CHAR_DEAD charTaxiDriverLS CLEAR_CHAR_TASKS charTaxiDriverLS ENDIF IF NOT IS_CHAR_DEAD charReporter CLEAR_LOOK_AT charReporter ENDIF // Pickups REMOVE_PICKUP pickupSniperRifle // Entity Clearup MARK_CHAR_AS_NO_LONGER_NEEDED charReporter MARK_CAR_AS_NO_LONGER_NEEDED cartaxiLS MARK_CHAR_AS_NO_LONGER_NEEDED charTaxiDriverLS MARK_CHAR_AS_NO_LONGER_NEEDED charTarget MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED SNIPER REPEAT SCRASH2_NUMBER_OF_OTHER_TRAINS nLoop MARK_MISSION_TRAIN_AS_NO_LONGER_NEEDED carOtherTrain[nLoop] ENDREPEAT IF existsTrain = TRUE IF NOT IS_CAR_DEAD carTrain SET_TRAIN_CRUISE_SPEED carTrain 30.0 MARK_MISSION_TRAIN_AS_NO_LONGER_NEEDED carTrain ENDIF ENDIF // Blips REMOVE_BLIP blipDestination REMOVE_BLIP blipTrain REMOVE_BLIP blipReporter REMOVE_BLIP blipTarget REMOVE_BLIP blipSniperRifle // Counters // REMOVE TRAIN PROGRESS BAR // CLEAR_ONSCREEN_COUNTER g_SCrash2_distanceKM // END REMOVE TRAIN PROGRESS BAR CLEAR_ONSCREEN_COUNTER g_SCrash2_spookKM // Animation Clearup REMOVE_ANIMATION MISC REMOVE_ANIMATION GANGS // Help Text CLEAR_HELP // Models // ...cars MARK_MODEL_AS_NO_LONGER_NEEDED STREAK MARK_MODEL_AS_NO_LONGER_NEEDED STREAKC MARK_MODEL_AS_NO_LONGER_NEEDED FREIGHT MARK_MODEL_AS_NO_LONGER_NEEDED FREIFLAT MARK_MODEL_AS_NO_LONGER_NEEDED TAXI MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ // ...peds MARK_MODEL_AS_NO_LONGER_NEEDED WMYBU MARK_MODEL_AS_NO_LONGER_NEEDED BMYBE MARK_MODEL_AS_NO_LONGER_NEEDED HMYRI // ...guns MARK_MODEL_AS_NO_LONGER_NEEDED SNIPER MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 // === RESTORE ENVIRONMENT SETTINGS === SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_WANTED_MULTIPLIER 1.0 // Switch on emergency services SWITCH_EMERGENCY_SERVICES ON SWITCH_RANDOM_TRAINS ON // Make sure the mobile phone doesn't ring immediately after a mission GET_GAME_TIMER timer_mobile_start // Reactivate roads SWITCH_ROADS_BACK_TO_ORIGINAL 789.5950 -1387.9701 11.5469 807.2843 -1334.5457 13.7250 SWITCH_ROADS_BACK_TO_ORIGINAL 804.9978 -1414.0320 11.3801 908.0844 -1386.6179 13.5524 SWITCH_ROADS_BACK_TO_ORIGINAL 802.1913 -1335.0664 11.1828 911.4662 -1313.0450 13.7469 // Reset the railroad tracks resistance multiplier (negative means use default) SET_RAILTRACK_RESISTANCE_MULT -1.0 flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // **************************************** wuzi1 ****************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME wuzi1 // Mission start stuff GOSUB mission_start_wuzi1 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_wuzi1_failed ENDIF GOSUB mission_cleanup_wuzi1 MISSION_END { // Variables for mission LVAR_INT wz1_ped_decisions wz1_wuzi wz1_mission_fail wz1_wuzi_alive wz1_scene_flag wz1_enter_cut wz1_button_pressed wz1_time LVAR_INT wz1_cut_flag LVAR_INT journey_audio_flag //objects LVAR_INT wz1_keypad wz1_bin[4] wz1_chinaGar[2] wz1_lanterns[5] wz1_table[7] wz1_stalls[6] wz1_vent[2] //flags LVAR_INT wz1_flag wuzi_in_group check_wuzi_in_group wz1_cutscene_flag wz1_mini_flag LVAR_INT wz1_cutscene_skipped wz1_escape_flag wz1_add_blip wz1_trigger_rollers wz1_dead_tongs LVAR_INT wz1_car_alive[2] wz1_sniper_flag wz1_player_in_car wz1_advance_flag wz1_advance_time wz1_tong_advanced[4] LVAR_INT wz1_exit wz1_door_opens wz1_tong_rolls_out wz1_create_tong_wave3 wz1_dead_tong_wave3 wz1_calculate_wuzi_health LVAR_INT wz1_next_tong_time wz1_r //vehicles LVAR_INT wz1_burncar1 wz1_burncar2 wz1_tongcar[3] wz1_getaway_car wz1_carattack[2] //blips LVAR_INT wz1_goto_blip wz1_wuzi_blip wz1_car_blip[2] wz1_tong_blip[18] // generic vars LVAR_INT wz1_var1 wz1_i wz1_int //sequences LVAR_INT wz1_seq wz1_seq2 //chars LVAR_INT wz1_triad[4] wz1_tong[18] wz1_mediator //groups LVAR_INT wz1_tong_group //other LVAR_INT wz1_task_progress wz1_cut_time wz1_escape_timer wz1_health wz1_random LVAR_INT wz1_tong_group_attack_time wz1_this_tong_attack_time[8] wz_i wz1_tong_target[18] VAR_INT wz1_health_bar LVAR_INT wz1_upper_check wz1_threats_in_area wz1_timer wz1_dead_tong wz1_task_status wz1_players_weapon //wz1_sniper_aim_time //groups LVAR_INT wz1_tonggroup //decisions LVAR_INT wz1_group_dec //events LVAR_INT wz1_event wz1_tong_event //coords LVAR_FLOAT wz1_tong_node_x[4] wz1_tong_node_y[4] wz1_tong_node_z[4] wz1_tong_advance_x[4] wz1_tong_advance_y[4] wz1_tong_advance_z[4] LVAR_FLOAT wz1_float1 wz1_float2 wz1_float3 wuzi_x wuzi_y wuzi_z LVAR_INT temp_audio wuzi_insult[6] // ****************************************Mission Start************************************ mission_start_wuzi1: temp_audio = 15 wuzi_insult[0] = 33 wuzi_insult[1] = 38 wuzi_insult[2] = 39 wuzi_insult[3] = 40 wuzi_insult[4] = 41 wuzi_insult[5] = 42 lose_face_message_printed = 0 //SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 TRUE LOAD_MISSION_TEXT wuzi1 CLEAR_THIS_PRINT M_FAIL flag_player_on_mission = 1 REGISTER_MISSION_GIVEN IF wz1_flag = 99 CREATE_CHAR PEDTYPE_GANG_GROVE SPECIAL01 2752.3408 -1948.8669 16.3125 wz1_wuzi CREATE_CAR ESPERANT 0.0 0.0 0.0 wz1_getaway_car CREATE_GROUP DEFAULT_TASK_ALLOCATOR_STAND_STILL wz1_tong_group ADD_BLIP_FOR_CHAR wz1_wuzi wz1_goto_blip ADD_BLIP_FOR_CHAR wz1_wuzi wz1_car_blip[0] ADD_BLIP_FOR_CHAR wz1_wuzi wz1_wuzi_blip ENDIF wz1_mission_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_wuzi1_passed ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_X SET_CHAR_COORDINATES scplayer -2175.7351 653.6188 48.4453 IF NOT IS_CHAR_DEAD wz1_wuzi SET_CHAR_COORDINATES wz1_wuzi -2176.7351 653.6188 48.4453 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Z SET_CHAR_COORDINATES scplayer -2247.7490 649.4075 48.4375 IF NOT IS_CHAR_DEAD wz1_wuzi SET_CHAR_COORDINATES wz1_wuzi -2246.7490 649.4075 48.4375 ENDIF ENDIF SWITCH wz1_flag CASE 0 // Mocap cut scene for Wuzi GOSUB wz1_cutscene_1 wz1_flag = 1 BREAK CASE 1 GOSUB wz1_initialise_stuff wz1_flag = 2 BREAK CASE 2 //Take Wuzi to China Town meet GOSUB wz1_scene1 BREAK CASE 3 //Wuzi and player discover the meet has been ambushed GOSUB wz1_cutscene_2 BREAK CASE 4 //Get the car GOSUB wz1_scene2 BREAK CASE 5 //Sniper and more Tong turn up. GOSUB wz1_cutscene_3 BREAK // CASE 6 //Drive back to hub GOSUB wz1_Scene3 BREAK // CASE 7 //Player enters car with Wuzi and rams attacking Tong cars. GOSUB wz1_cutscene_4 BREAK // // destroy attacking Tong cars CASE 8 GOSUB wz1_Scene4 BREAK CASE 9 //Wuzi leaves car - fade - mission passed GOSUB wz1_cutscene_5 BREAK CASE 10 GOTO mission_wuzi1_passed BREAK ENDSWITCH GOSUB wz1_fail_checks GOSUB wz1_mission_checks GOSUB wuzi1_audio // controls the attacking tongs GET_CHAR_COORDINATES scplayer player_x player_y player_z GET_CHAR_COORDINATES scplayer wuzi_x wuzi_y wuzi_z IF wz1_flag = 2 OR wz1_flag = 4 OR wz1_flag = 6 GOSUB tong_events GOSUB wuzi_comments GOSUB wuzi_health GOSUB tong_threat_scan ENDIF IF wz1_mission_fail = 1 GOTO mission_wuzi1_failed ENDIF GOTO wz1_mission_loop RETURN wz1_fail_checks: IF wz1_wuzi_alive = 1 IF IS_CHAR_DEAD wz1_wuzi CLEAR_PRINTS PRINT WZ1_40 5000 1 wz1_mission_fail = 1 GOTO mission_wuzi1_failed ENDIF ENDIF RETURN wz1_mission_checks: IF check_wuzi_in_group = 1 IF wuzi_in_group = 1 IF NOT IS_CHAR_DEAD wz1_wuzi IF NOT IS_GROUP_MEMBER wz1_wuzi players_group wuzi_in_group = 0 REMOVE_BLIP wz1_wuzi_blip ADD_BLIP_FOR_CHAR wz1_wuzi wz1_wuzi_blip SET_BLIP_AS_FRIENDLY wz1_wuzi_blip TRUE CHANGE_BLIP_DISPLAY wz1_goto_blip NEITHER CLEAR_PRINTS PRINT WZ1_41 4000 1 ENDIF ENDIF ENDIF IF wuzi_in_group = 0 IF NOT IS_CHAR_DEAD wz1_wuzi IF IS_GROUP_MEMBER wz1_wuzi players_group wuzi_in_group = 1 ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer wz1_wuzi 6.0 6.0 FALSE MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER players_group wz1_wuzi LISTEN_TO_PLAYER_GROUP_COMMANDS wz1_wuzi FALSE REMOVE_BLIP wz1_wuzi_blip CHANGE_BLIP_DISPLAY wz1_goto_blip BOTH wuzi_in_group = 1 ENDIF ENDIF ENDIF ENDIF ENDIF RETURN wz1_initialise_stuff: wz1_upper_check = 4 LOAD_SPECIAL_CHARACTER 1 WUZIMU REQUEST_MODEL MICRO_UZI REQUEST_MODEL DNB1 REQUEST_MODEL DNB2 REQUEST_MODEL DNB3 REQUEST_MODEL TRIADA REQUEST_MODEL TRIADB REQUEST_MODEL SNIPER REQUEST_MODEL SENTINEL REQUEST_MODEL SANCHEZ REQUEST_MODEL OMOST REQUEST_ANIMATION wuzi REQUEST_CAR_RECORDING 169 REQUEST_CAR_RECORDING 139 WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_MODEL_LOADED MICRO_UZI OR NOT HAS_MODEL_LOADED SNIPER OR NOT HAS_MODEL_LOADED DNB1 OR NOT HAS_MODEL_LOADED DNB2 OR NOT HAS_MODEL_LOADED DNB3 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED SENTINEL OR NOT HAS_MODEL_LOADED SANCHEZ OR NOT HAS_MODEL_LOADED TRIADA OR NOT HAS_MODEL_LOADED TRIADB OR NOT HAS_MODEL_LOADED OMOST WAIT 0 ENDWHILE WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 169 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 139 WAIT 0 ENDWHILE SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION2 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_MISSION2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 PEDTYPE_MISSION1 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH wz1_ped_decisions CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE wz1_ped_decisions EVENT_GUN_AIMED_AT CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE wz1_ped_decisions EVENT_DAMAGE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE wz1_ped_decisions EVENT_SHOT_FIRED_WHIZZED_BY CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE wz1_ped_decisions EVENT_SHOT_FIRED ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE wz1_ped_decisions EVENT_GUN_AIMED_AT TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 0 1 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE wz1_ped_decisions EVENT_DAMAGE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 0 1 IF DOES_OBJECT_EXIST china_town_gate DELETE_OBJECT china_town_gate ENDIF CREATE_OBJECT_NO_OFFSET ct_gatexr -2179.353 661.232 50.214 china_town_gate SET_OBJECT_COLLISION_DAMAGE_EFFECT china_town_gate FALSE MARK_MODEL_AS_NO_LONGER_NEEDED ct_gatexr CREATE_OBJECT_NO_OFFSET ct_stall1 -2213.413 640.908 48.43 wz1_stalls[5] SET_OBJECT_HEADING wz1_stalls[5] 90.0 CREATE_OBJECT_NO_OFFSET ct_table -2201.436 647.109 48.413 wz1_table[2] /* CREATE_OBJECT_NO_OFFSET ct_lanterns -2195.99 643.712 57.0 wz1_lanterns[0] CREATE_OBJECT_NO_OFFSET ct_lanterns -2214.6907 642.7629 57.0581 wz1_lanterns[1] CREATE_OBJECT_NO_OFFSET ct_lanterns -2202.0398 643.3145 56.2913 wz1_lanterns[2] CREATE_OBJECT_NO_OFFSET ct_lanterns -2192.4521 643.5444 57.7205 wz1_lanterns[3] CREATE_OBJECT_NO_OFFSET ct_lanterns -2184.5847 643.5825 58.0148 wz1_lanterns[4] CREATE_OBJECT_NO_OFFSET ct_stall2 -2185.327 638.335 50.874 wz1_stalls[0] SET_OBJECT_HEADING wz1_stalls[0] 90.0 CREATE_OBJECT_NO_OFFSET ct_stall2 -2201.121 638.335 50.874 wz1_stalls[1] SET_OBJECT_HEADING wz1_stalls[1] 90.0 CREATE_OBJECT_NO_OFFSET ct_stall2 -2208.512 632.216 50.874 wz1_stalls[2] CREATE_OBJECT_NO_OFFSET ct_stall1 -2193.073 638.112 48.43 wz1_stalls[3] SET_OBJECT_HEADING wz1_stalls[3] 90.0 CREATE_OBJECT_NO_OFFSET ct_stall1 -2193.073 646.033 48.43 wz1_stalls[4] CREATE_OBJECT_NO_OFFSET ct_table -2208.478 629.487 48.413 wz1_table[0] CREATE_OBJECT_NO_OFFSET ct_table -2208.478 634.959 48.413 wz1_table[1] CREATE_OBJECT_NO_OFFSET ct_table -2203.851 638.328 48.413 wz1_table[3] SET_OBJECT_HEADING wz1_table[3] 270.0 CREATE_OBJECT_NO_OFFSET ct_table -2198.379 638.328 48.413 wz1_table[4] SET_OBJECT_HEADING wz1_table[4] 90.0 CREATE_OBJECT_NO_OFFSET ct_table -2188.038 638.328 48.413 wz1_table[5] SET_OBJECT_HEADING wz1_table[5] 270.0 CREATE_OBJECT_NO_OFFSET ct_table -2182.566 638.328 48.413 wz1_table[6] SET_OBJECT_HEADING wz1_table[6] 90.0 CREATE_OBJECT_NO_OFFSET ct_vent -2172.085 638.053 53.117 wz1_vent[0] SET_OBJECT_HEADING wz1_vent[0] 90.0 CREATE_OBJECT_NO_OFFSET ct_vent -2220.204 638.053 53.117 wz1_vent[1] */ CREATE_OBJECT_NO_OFFSET chinaTgarageDoor -2184.415 711.556 54.523 wz1_chinaGar[0] CREATE_OBJECT_NO_OFFSET chinaTgarageDoor -2178.87 711.556 54.523 wz1_chinaGar[1] CREATE_OBJECT_NO_OFFSET tmp_bin -2183.968 647.055 49.185 wz1_bin[0] CREATE_OBJECT_NO_OFFSET tmp_bin -2172.813 654.019 49.185 wz1_bin[1] CREATE_OBJECT_NO_OFFSET tmp_bin -2172.813 649.293 49.185 wz1_bin[2] SET_OBJECT_HEADING wz1_bin[1] 270.0 SET_OBJECT_HEADING wz1_bin[2] 270.0 // CREATE_OBJECT_NO_OFFSET kmb_keypad -2172.099 660.187 49.784 wz1_keypad // SET_OBJECT_HEADING wz1_keypad 90.0 SET_OBJECT_HEADING china_town_gate 0.0 SET_WANTED_MULTIPLIER 0.2 ALTER_WANTED_LEVEL Player1 0 check_wuzi_in_group = 1 SWITCH_EMERGENCY_SERVICES OFF wz1_escape_flag = 99 wz1_tong_node_x[0] = -2199.0 wz1_tong_node_y[0] = 645.4869 wz1_tong_node_z[0] = 48.4453 wz1_tong_advance_x[0] = -2194.6797 wz1_tong_advance_y[0] = 646.1572 wz1_tong_advance_z[0] = 48.4453 wz1_tong_node_x[1] = -2199.0 wz1_tong_node_y[1] = 640.8279 wz1_tong_node_z[1] = 48.4453 wz1_tong_advance_x[1] = -2194.0432 wz1_tong_advance_y[1] = 638.7194 wz1_tong_advance_z[1] = 48.4453 wz1_tong_node_x[2] = -2195.8389 wz1_tong_node_y[2] = 635.4390 wz1_tong_node_z[2] = 48.4453 wz1_tong_advance_x[2] = -2189.3674 wz1_tong_advance_y[2] = 636.7801 wz1_tong_advance_z[2] = 48.4453 wz1_tong_node_x[3] = -2213.0051 wz1_tong_node_y[3] = 638.9453 wz1_tong_node_z[3] = 48.4459 wz1_tong_advance_x[3] = -2204.7781 wz1_tong_advance_y[3] = 639.4221 wz1_tong_advance_z[3] = 48.4453 CREATE_CHAR PEDTYPE_MISSION2 SPECIAL01 -2155.4622 645.8904 51.3516 wz1_wuzi // LISTEN_TO_PLAYER_GROUP_COMMANDS wz1_wuzi FALSE audio_actor[2] = wz1_wuzi wz1_wuzi_alive = 1 GIVE_WEAPON_TO_CHAR wz1_wuzi WEAPONTYPE_MICRO_UZI 5000 SET_CURRENT_CHAR_WEAPON wz1_wuzi WEAPONTYPE_UNARMED SET_CHAR_HEADING wz1_wuzi 180.0 SET_CHAR_HEALTH wz1_wuzi 250 SET_CHAR_MAX_HEALTH wz1_wuzi 250 wz1_health = 250 SET_CHAR_SUFFERS_CRITICAL_HITS wz1_wuzi FALSE UNLOAD_SPECIAL_CHARACTER 1 ADD_BLIP_FOR_COORD -2244.9954 642.8972 48.4077 wz1_goto_blip IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer -2155.2659 645.0895 51.3516 SET_CHAR_HEADING scplayer 270.0 ENDIF IF NOT IS_CHAR_DEAD wz1_wuzi SET_ANIM_GROUP_FOR_CHAR wz1_wuzi blindman SET_CHAR_DECISION_MAKER wz1_wuzi wz1_ped_decisions SET_CHAR_NEVER_TARGETTED wz1_wuzi TRUE MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER players_group wz1_wuzi // LISTEN_TO_PLAYER_GROUP_COMMANDS wz1_wuzi FALSE wuzi_in_group = 1 ENDIF SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT LOAD_SCENE_IN_DIRECTION -2155.2659 645.0895 51.3516 270.0 REQUEST_COLLISION -2155.0 645.0 DO_FADE 1000 FADE_IN LOAD_SCENE -2155.2659 645.0895 51.3 wz1_flag = 2 wz1_cut_flag = 0 // CLEAR_MISSION_AUDIO 1 // LOAD_MISSION_AUDIO 1 SOUND_FAR4_AA RETURN // ***************************************************************************************** // ******************************** MOCAP cutscene ***************************************** // ***************************************************************************************** wz1_cutscene_1: LOAD_MISSION_TEXT WUZI1 SET_PLAYER_CONTROL player1 OFF SET_AREA_VISIBLE 1 LOAD_CUTSCENE WOOZI1A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE IF IS_SKIP_CUTSCENE_BUTTON_PRESSED LVAR_INT skip_it skip_it = 1 ENDIF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE IF skip_it = 0 LOAD_CUTSCENE WOOZI1B WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE ENDIF SET_AREA_VISIBLE 0 // ******************************************END OF CUTSCENE******************************** SET_FADING_COLOUR 0 0 0 WAIT 0 RETURN // ***************************************************************************************** // ************************* Take wuzi to the Tong/Triad meet ****************************** // ***************************************************************************************** wz1_scene1: //LVAR_INT audio_slot_played // IF audio_slot_played = 0 // IF HAS_MISSION_AUDIO_LOADED 1 // PLAY_MISSION_AUDIO 1 // audio_slot_played = 1 // ENDIF // ENDIF IF wz1_scene_flag = 0 IF wz1_mini_flag = 0 play_audio = 1 play_audio_for = 2 wz1_mini_flag = 1 IF DOES_OBJECT_EXIST china_town_gate SET_OBJECT_ROTATION china_town_gate 0.0 0.0 330.0 ENDIF ENDIF IF wz1_mini_flag = 1 IF play_audio = 0 PRINT WZ1_1 8000 1 wz1_mini_flag = 2 ENDIF ENDIF IF wz1_mini_flag = 2 GET_CHAR_COORDINATES scplayer player_x player_y player_z IF journey_audio_flag = 0 IF player_y < 627.0 OR player_y > 657.0 journey_audio_flag = 1 ENDIF ENDIF IF journey_audio_flag = 1 IF play_audio = 0 // IF NOT IS_CHAR_DEAD wz1_wuzi // IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer wz1_wuzi 8.0 8.0 8.0 FALSE play_audio = 3 play_audio_for = 2 journey_audio_flag = 2 // ENDIF // ENDIF ENDIF ENDIF IF journey_audio_flag = 2 IF player_x < -2164.0 journey_audio_flag = 3 ENDIF ENDIF IF journey_audio_flag = 3 IF play_audio = 0 // IF NOT IS_CHAR_DEAD wz1_wuzi // IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer wz1_wuzi 8.0 8.0 8.0 FALSE play_audio = 5 play_audio_for = 3 journey_audio_flag = 4 // ENDIF // ENDIF ENDIF ENDIF IF journey_audio_flag = 4 IF player_y < 707.0 AND player_y > 587.0 journey_audio_flag = 5 ENDIF ENDIF IF journey_audio_flag = 5 IF play_audio = 0 // IF NOT IS_CHAR_DEAD wz1_wuzi // IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer wz1_wuzi 8.0 8.0 8.0 FALSE play_audio = 9 play_audio_for = 2 journey_audio_flag = 6 // ENDIF // ENDIF ENDIF ENDIF IF journey_audio_flag = 7 IF TIMERA > wz1_cut_time TASK_LEAVE_ANY_CAR scplayer journey_audio_flag = 8 ENDIF ENDIF IF journey_audio_flag = 8 IF NOT IS_CHAR_IN_ANY_CAR scplayer SET_PLAYER_CONTROL player1 ON journey_audio_flag = 11 IF NOT IS_CHAR_DEAD wz1_wuzi REMOVE_CHAR_FROM_GROUP wz1_wuzi ENDIF ELSE GET_SCRIPT_TASK_STATUS scplayer TASK_LEAVE_ANY_CAR wz1_task_Status IF wz1_task_status = FINISHED_TASK TASK_LEAVE_ANY_CAR scplayer ENDIF ENDIF ENDIF LVAR_INT play_wuzi_arrive_message IF play_wuzi_arrive_message = 1 IF audio_flag = 1 AND play_audio = 0 play_audio = 11 play_audio_for = 2 play_wuzi_arrive_message = 2 ENDIF ENDIF IF play_wuzi_arrive_message = 2 IF audio_flag = 1 AND play_audio = 0 PRINT WZ1_B4 5000 1 wz1_scene_flag = 1 play_wuzi_arrive_message = 3 ENDIF ENDIF IF journey_audio_flag < 7 IF wuzi_in_group = 1 IF NOT IS_CHAR_DEAD wz1_wuzi IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2248.0771 651.3163 48.3815 4.0 4.0 4.0 TRUE IF NOT LOCATE_CHAR_ANY_MEANS_3D wz1_wuzi -2248.0771 651.3163 48.3815 6.0 6.0 6.0 FALSE PRINT_NOW WZ1_2 1000 1 ELSE play_wuzi_arrive_message = 1 IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer car SET_PLAYER_CONTROL player1 OFF // OPEN_SEQUENCE_TASK wz1_seq TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 600 // TASK_LEAVE_ANY_CAR -1 // CLOSE_SEQUENCE_TASK wz1_seq // PERFORM_SEQUENCE_TASK scplayer wz1_seq // CLEAR_SEQUENCE_TASK wz1_seq wz1_cut_time = TIMERA + 600 IF IS_CHAR_IN_ANY_CAR wz1_wuzi OPEN_SEQUENCE_TASK wz1_seq TASK_PAUSE -1 1000 TASK_LEAVE_ANY_CAR -1 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq ENDIF ENDIF // play_audio_for = 0 audio_flag = 6 REMOVE_BLIP wz1_goto_blip journey_audio_flag = 7 check_wuzi_in_group = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF wz1_scene_flag = 1 IF NOT IS_CHAR_IN_ANY_CAR scplayer IF NOT IS_CHAR_DEAD wz1_wuzi OPEN_SEQUENCE_TASK wz1_seq TASK_PAUSE -1 300 TASK_FOLLOW_PATH_NODES_TO_COORD -1 -2244.4392 643.4277 48.4375 PEDMOVE_WALK -2 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq wz1_walk_comment = 20 // was 1 wz1_scene_flag = 2 ENDIF ENDIF ENDIF IF wz1_scene_flag = 2 LVAR_INT play_laundry_comment player_leaves_Car LVAR_FLOAT wz1_float IF play_laundry_comment = 0 GET_CHAR_COORDINATES scplayer player_x player_y player_z LVAR_INT run_ped[7] IF player_y < 646.0 CREATE_RANDOM_CHAR -2182.9692 645.0695 48.4453 run_ped[0] CREATE_RANDOM_CHAR -2183.6428 642.2832 48.4453 run_ped[1] CREATE_RANDOM_CHAR -2190.5073 636.5036 48.4429 run_ped[2] CREATE_RANDOM_CHAR -2200.6467 641.6252 48.4429 run_ped[3] CREATE_RANDOM_CHAR -2200.6218 642.8997 48.4429 run_ped[4] CREATE_RANDOM_CHAR -2223.2432 644.5712 48.4448 run_ped[5] CREATE_RANDOM_CHAR -2235.8137 642.5659 48.4472 run_ped[6] flee_time_start = TIMERA OPEN_SEQUENCE_TASK wz1_seq TASK_PAUSE -1 2000 TASK_SMART_FLEE_POINT -1 -2181.9692 645.0695 48.4453 80.0 30000 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK run_ped[0] wz1_seq CLEAR_SEQUENCE_TASK wz1_seq TASK_GO_STRAIGHT_TO_COORD run_ped[1] -2190.9778 646.0287 48.4453 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD run_ped[2] -2192.9639 644.2189 48.4453 PEDMOVE_WALK -2 OPEN_SEQUENCE_TASK wz1_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 run_ped[4] TASK_PLAY_ANIM -1 IDLE_chat PED 8.0 FALSE FALSE FALSE FALSE 6000 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK run_ped[3] wz1_seq CLEAR_SEQUENCE_TASK wz1_seq OPEN_SEQUENCE_TASK wz1_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 run_ped[3] TASK_PLAY_ANIM -1 IDLE_chat PED 8.0 FALSE FALSE FALSE FALSE 6000 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK run_ped[4] wz1_seq CLEAR_SEQUENCE_TASK wz1_seq TASK_GO_STRAIGHT_TO_COORD run_ped[5] -2200.9414 644.4352 48.4429 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD run_ped[6] -2213.1707 638.7413 48.4496 PEDMOVE_WALK -2 play_laundry_comment = 1 ENDIF ENDIF IF play_laundry_comment > 0 LVAR_INT flee_time_start flee_time_passed flee_trigger flee_time_passed = TIMERA - flee_time_start IF flee_trigger = 0 IF flee_time_passed > 3500 IF NOT IS_CHAR_DEAD run_ped[1] TASK_SMART_FLEE_POINT run_ped[1] -2181.9692 645.0695 48.4453 80.0 30000 ENDIF flee_trigger = 1 ENDIF ENDIF IF flee_trigger = 1 IF flee_time_passed > 6000 IF NOT IS_CHAR_DEAD run_ped[2] OPEN_SEQUENCE_TASK wz1_seq TASK_SMART_FLEE_POINT -1 -2181.9692 645.0695 48.4453 80.0 5000 TASK_FALL_AND_GET_UP -1 0 500 TASK_SMART_FLEE_POINT -1 -2181.9692 645.0695 48.4453 80.0 30000 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK run_ped[2] wz1_seq CLEAR_SEQUENCE_TASK wz1_seq ENDIF flee_trigger = 2 ENDIF ENDIF IF flee_trigger = 2 IF flee_time_passed > 9000 IF NOT IS_CHAR_DEAD run_ped[3] TASK_SMART_FLEE_POINT run_ped[3] -2181.9692 645.0695 48.4453 80.0 30000 ENDIF flee_trigger = 3 ENDIF ENDIF IF flee_trigger = 3 IF flee_time_passed > 8000 IF NOT IS_CHAR_DEAD run_ped[4] OPEN_SEQUENCE_TASK wz1_seq TASK_SMART_FLEE_POINT -1 -2181.9692 645.0695 48.4453 80.0 3000 TASK_FALL_AND_GET_UP -1 0 500 TASK_SMART_FLEE_POINT -1 -2181.9692 645.0695 48.4453 80.0 30000 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK run_ped[4] wz1_seq CLEAR_SEQUENCE_TASK wz1_seq ENDIF flee_trigger = 4 ENDIF ENDIF IF flee_trigger = 4 IF flee_time_passed > 10000 IF NOT IS_CHAR_DEAD run_ped[5] TASK_SMART_FLEE_POINT run_ped[5] -2181.9692 645.0695 48.4453 80.0 30000 ENDIF flee_trigger = 5 ENDIF ENDIF IF flee_trigger = 5 IF flee_time_passed > 12000 IF NOT IS_CHAR_DEAD run_ped[6] TASK_SMART_FLEE_POINT run_ped[6] -2181.9692 645.0695 48.4453 80.0 30000 ENDIF flee_trigger = 6 ENDIF ENDIF IF flee_trigger = 6 IF flee_time_passed > 52000 wz1_i = 0 WHILE wz1_i < 7 IF NOT IS_CHAR_DEAD run_ped[wz1_i] TASK_PAUSE run_ped[wz1_i] 1 MARK_CHAR_AS_NO_LONGER_NEEDED run_ped[wz1_i] TASK_WANDER_STANDARD run_ped[wz1_i] SWITCH_PED_ROADS_OFF -2239.2510 636.6675 53.1933 -2165.0466 720.0577 49.5456 ENDIF wz1_i ++ ENDWHILE flee_trigger = 7 ENDIF ENDIF ENDIF IF play_laundry_comment = 1 IF flee_time_passed > 12000 AND flee_time_passed < 22000 IF NOT IS_CHAR_DEAD wz1_wuzi GET_CHAR_COORDINATES wz1_wuzi x y z IF x > -2240.2764 AND x < -2227.0 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D wz1_wuzi scplayer 8.0 8.0 8.0 FALSE CLEAR_CHAR_TASKS wz1_wuzi TASK_PAUSE wz1_wuzi 1 FLUSH_ROUTE EXTEND_ROUTE -2232.9993 643.0717 48.4466 EXTEND_ROUTE -2213.8877 643.3788 48.4462 EXTEND_ROUTE -2172.9575 644.4861 48.4453 OPEN_SEQUENCE_TASK wz1_seq TASK_SCRATCH_HEAD -1 TASK_LOOK_AT_CHAR -1 scplayer 5000 TASK_PAUSE -1 1000 TASK_PAUSE -1 0 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE TASK_FALL_AND_GET_UP -1 0 500 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq //TASK_GO_STRAIGHT_TO_COORD -1 -2214.0289 640.9926 48.4491 PEDMOVE_WALK -2 play_audio = 69 play_audio_for = 4 play_laundry_comment = 2 wz1_walk_comment = 21 //was 3 ENDIF ENDIF ENDIF ENDIF ENDIF LVAR_INT wz1_walk_comment // VIEW_INTEGER_VARIABLE wz1_walk_comment wz1_walk_comment // VIEW_FLOAT_VARIABLE x x IF wz1_walk_comment = 1 IF NOT IS_CHAR_DEAD wz1_wuzi GET_SCRIPT_TASK_STATUS wz1_wuzi -1 wz1_task_progress IF wz1_task_progress = FINISHED_TASK IF play_audio = 0 AND audio_flag = 1 OPEN_SEQUENCE_TASK wz1_seq TASK_PLAY_ANIM -1 Wuzi_grnd_chk wuzi 4.0 FALSE 0 0 0 -1 TASK_PAUSE -1 1000 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_PLAY_ANIM -1 IDLE_chat ped 4.0 FALSE 0 0 0 4000 TASK_GO_STRAIGHT_TO_COORD -1 -2214.0831 641.1605 48.4489 PEDMOVE_WALK -2 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE wz1_ped_decisions EVENT_POTENTIAL_WALK_INTO_OBJECT play_audio = 73 play_audio_for = 3 wz1_walk_comment = 20 ENDIF ENDIF ENDIF ENDIF // alternative run down alley IF wz1_walk_comment = 20 IF NOT IS_CHAR_DEAD wz1_wuzi GET_SCRIPT_TASK_STATUS wz1_wuzi -1 wz1_task_progress IF wz1_task_progress = FINISHED_TASK IF play_audio = 0 AND audio_flag = 1 FLUSH_ROUTE EXTEND_ROUTE -2232.9993 643.0717 48.4466 EXTEND_ROUTE -2213.8877 643.3788 48.4462 EXTEND_ROUTE -2172.9575 644.4861 48.4453 LVAR_INT wz1_player_near IF LOCATE_CHAR_ANY_MEANS_CHAR_3D wz1_wuzi scplayer 13.0 13.0 10.0 FALSE wz1_player_near = 1 ELSE wz1_player_near = 0 ENDIF OPEN_SEQUENCE_TASK wz1_seq TASK_PLAY_ANIM -1 Wuzi_grnd_chk wuzi 4.0 FALSE 0 0 0 -1 TASK_PAUSE -1 1000 IF wz1_player_near = 1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_PLAY_ANIM -1 IDLE_chat ped 4.0 FALSE 0 0 0 3500 ENDIF TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE wz1_ped_decisions EVENT_POTENTIAL_WALK_INTO_OBJECT play_audio = 73 play_audio_for = 3 wz1_walk_comment = 21 ENDIF ENDIF ENDIF ENDIF IF wz1_walk_comment = 21 IF NOT IS_CHAR_DEAD wz1_wuzi LVAR_INT hits_wall sample_wuzi // VIEW_INTEGER_VARIABLE hits_wall hits_wall GET_SCRIPT_TASK_STATUS wz1_wuzi PERFORM_SEQUENCE_TASK wz1_task_progress // IF wz1_task_progress = PERFORMING_TASK // IF hits_wall = 0 // GET_SEQUENCE_PROGRESS wz1_wuzi wz1_task_progress //wuzi1: GET_SEQUENCE_PROGRESS- Ped doesn't have a primary task // IF wz1_task_progress = 5 // hits_wall = 1 // SET_CHAR_SAY_CONTEXT wz1_wuzi CONTEXT_GLOBAL_PAIN_HIGH sample_wuzi // ENDIF // ENDIF // ENDIF GET_CHAR_COORDINATES wz1_wuzi x y z IF x > -2181.2764 OPEN_SEQUENCE_TASK wz1_seq TASK_GO_STRAIGHT_TO_COORD -1 -2172.9575 644.4861 48.4453 PEDMOVE_RUN -2 TASK_FALL_AND_GET_UP -1 0 500 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq wz1_walk_comment = 22 ENDIF IF x < -2243.0 AND wz1_wuzi_got_lost = 1 // stopp wuzi getting lost at end of alleyway - gets stuck in alcoves LVAR_INT wz1_wuzi_got_lost wz1_wuzi_got_lost = 2 FLUSH_ROUTE EXTEND_ROUTE -2244.8306 643.3638 48.439 EXTEND_ROUTE -2232.9993 643.0717 48.4466 EXTEND_ROUTE -2213.8877 643.3788 48.4462 EXTEND_ROUTE -2172.9575 644.4861 48.4453 OPEN_SEQUENCE_TASK wz1_seq TASK_PAUSE -1 1000 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq ENDIF IF x > -2240.0 IF wz1_wuzi_got_lost = 0 OR wz1_wuzi_got_lost = 2 wz1_wuzi_got_lost = 1 ENDIF ENDIF ENDIF ENDIF IF wz1_walk_comment = 22 IF NOT IS_CHAR_DEAD wz1_wuzi GET_SCRIPT_TASK_STATUS wz1_wuzi PERFORM_SEQUENCE_TASK wz1_task_progress IF wz1_task_progress = PERFORMING_TASK IF hits_wall = 0 GET_SEQUENCE_PROGRESS wz1_wuzi wz1_seq //wuzi1: GET_SEQUENCE_PROGRESS- Ped doesn't have a primary task IF wz1_seq = 1 OR wz1_task_progress = FINISHED_TASK SET_CHAR_SAY_CONTEXT_IMPORTANT wz1_wuzi CONTEXT_GLOBAL_PAIN_LOW TRUE FALSE FALSE sample_wuzi wz1_walk_comment = 23 hits_wall = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF wz1_walk_comment = 23 IF NOT IS_CHAR_DEAD wz1_wuzi GET_SCRIPT_TASK_STATUS wz1_wuzi PERFORM_SEQUENCE_TASK wz1_task_progress IF wz1_task_progress = FINISHED_TASK OPEN_SEQUENCE_TASK wz1_seq TASK_SCRATCH_HEAD -1 TASK_LOOK_AT_CHAR -1 scplayer 5000 TASK_PAUSE -1 4000 TASK_GO_STRAIGHT_TO_COORD -1 -2176.1836 653.9911 48.4453 PEDMOVE_WALK -2 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq play_audio = 78 play_audio_for = 4 wz1_walk_comment = 10 ENDIF ENDIF ENDIF /* // IF wz1_walk_comment = 2 // IF NOT IS_CHAR_DEAD wz1_wuzi // GET_SCRIPT_TASK_STATUS wz1_wuzi PERFORM_SEQUENCE_TASK wz1_task_progress // IF wz1_task_progress = FINISHED_TASK // IF flee_time_passed > 12000 // IF flee_time_passed < 22000 // IF NOT IS_CHAR_DEAD wz1_wuzi // IF LOCATE_CHAR_ANY_MEANS_CHAR_3D wz1_wuzi scplayer 8.0 8.0 8.0 FALSE // CLEAR_CHAR_TASKS wz1_wuzi // TASK_PAUSE wz1_wuzi 1 // OPEN_SEQUENCE_TASK wz1_seq // TASK_SCRATCH_HEAD -1 // TASK_LOOK_AT_CHAR -1 scplayer 5000 // TASK_PAUSE -1 3000 // TASK_GO_STRAIGHT_TO_COORD -1 -2214.0289 640.9926 48.4491 PEDMOVE_WALK -2 // CLOSE_SEQUENCE_TASK wz1_seq // PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq // CLEAR_SEQUENCE_TASK wz1_seq // // // play_audio = 69 // play_audio_for = 4 // play_laundry_comment = 2 // wz1_walk_comment = 3 // ENDIF // ENDIF // ELSE // OPEN_SEQUENCE_TASK wz1_seq // TASK_GO_STRAIGHT_TO_COORD -1 -2214.0289 640.9926 48.4491 PEDMOVE_WALK -2 // CLOSE_SEQUENCE_TASK wz1_seq // PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq // CLEAR_SEQUENCE_TASK wz1_seq // wz1_walk_comment = 3 // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF IF wz1_walk_comment = 3 IF NOT IS_CHAR_DEAD wz1_wuzi GET_CHAR_COORDINATES WZ1_WUZI x y z // IF LOCATE_CHAR_ANY_MEANS_3D wz1_wuzi -2214.3831 641.1605 48.4489 1.4 1.4 2.0 FALSE GET_SCRIPT_TASK_STATUS wz1_wuzi PERFORM_SEQUENCE_TASK wz1_task_progress IF wz1_task_progress = FINISHED_TASK OR x > -2214.5051 IF play_audio = 0 OPEN_SEQUENCE_TASK wz1_seq TASK_PLAY_ANIM -1 HIT_wall ped 4.0 FALSE 1 1 0 -1 TASK_SCRATCH_HEAD -1 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq play_audio = 77 play_audio_delay = TIMERA + 700 wz1_walk_comment = 4 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE wz1_ped_decisions EVENT_POTENTIAL_WALK_INTO_OBJECT TASK_COMPLEX_WALK_ROUND_OBJECT 100.0 100.0 100.0 100.0 0 1 ENDIF ELSE GET_SCRIPT_TASK_STATUS wz1_wuzi PERFORM_SEQUENCE_TASK wz1_task_progress IF wz1_task_progress = FINISHED_TASK OPEN_SEQUENCE_TASK wz1_seq TASK_GO_STRAIGHT_TO_COORD -1 -2214.0831 641.1605 48.4489 PEDMOVE_WALK -2 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq ENDIF ENDIF ENDIF ENDIF IF wz1_walk_comment = 4 IF play_audio = 0 IF NOT IS_CHAR_DEAD wz1_wuzi OPEN_SEQUENCE_TASK wz1_seq TASK_GO_STRAIGHT_TO_COORD -1 -2214.8560 636.1031 48.4528 PEDMOVE_WALK -2 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq wz1_walk_comment = 5 ENDIF ENDIF ENDIF IF wz1_walk_comment = 5 IF NOT IS_CHAR_DEAD wz1_wuzi IF LOCATE_CHAR_ANY_MEANS_3D wz1_wuzi -2214.8560 636.1031 48.4528 1.4 1.4 2.0 FALSE GET_SCRIPT_TASK_STATUS wz1_wuzi PERFORM_SEQUENCE_TASK wz1_task_progress IF wz1_task_progress = FINISHED_TASK IF play_audio = 0 OPEN_SEQUENCE_TASK wz1_seq TASK_PLAY_ANIM -1 Wuzi_Greet_Wuzi wuzi 4.0 FALSE 1 1 0 -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_PLAY_ANIM -1 IDLE_chat ped 4.0 FALSE 1 1 0 1500 TASK_GO_STRAIGHT_TO_COORD -1 -2192.6733 643.7750 48.4453 PEDMOVE_WALK -2 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq //-2201.9026 646.1537 48.4429 play_audio = 78 play_audio_for = 4 wz1_walk_comment = 8 ENDIF ENDIF ENDIF ENDIF ENDIF IF wz1_walk_comment = 6 IF NOT IS_CHAR_DEAD wz1_wuzi IF LOCATE_CHAR_ANY_MEANS_3D wz1_wuzi -2203.4272 644.2248 48.4429 3.0 3.0 2.0 FALSE play_audio = 82 wz1_walk_comment = 7 ENDIF ENDIF ENDIF IF wz1_walk_comment = 7 IF NOT IS_CHAR_DEAD wz1_wuzi IF play_audio = 0 GET_SCRIPT_TASK_STATUS wz1_wuzi PERFORM_SEQUENCE_TASK wz1_task_progress IF wz1_task_progress = FINISHED_TASK OPEN_SEQUENCE_TASK wz1_seq TASK_ACHIEVE_HEADING -1 0.0 TASK_PLAY_ANIM -1 walkstart_idle_01 wuzi 4.0 TRUE 1 1 0 2500 TASK_LOOK_AT_CHAR -1 scplayer 2000 TASK_STAND_STILL -1 1500 TASK_GO_STRAIGHT_TO_COORD -1 -2192.6733 643.7750 48.4453 PEDMOVE_WALK -2 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq play_audio = 83 play_audio_delay = TIMERA + 1500 wz1_walk_comment = 8 ENDIF ENDIF ENDIF ENDIF IF wz1_walk_comment = 8 IF NOT IS_CHAR_DEAD wz1_wuzi GET_SCRIPT_TASK_STATUS wz1_wuzi PERFORM_SEQUENCE_TASK wz1_task_progress IF wz1_task_progress = FINISHED_TASK OPEN_SEQUENCE_TASK wz1_seq TASK_LOOK_AT_CHAR -1 scplayer 5000 TASK_LOOK_ABOUT -1 5000 TASK_PLAY_ANIM -1 wuzi_follow wuzi 4.0 FALSE 1 1 0 -1 TASK_GO_STRAIGHT_TO_COORD -1 -2178.9399 643.2767 48.4453 PEDMOVE_WALK -2 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq play_audio = 84 play_audio_for = 5 wz1_walk_comment = 9 ENDIF ENDIF ENDIF IF wz1_walk_comment = 9 IF NOT IS_CHAR_DEAD wz1_wuzi GET_SCRIPT_TASK_STATUS wz1_wuzi PERFORM_SEQUENCE_TASK wz1_task_progress IF wz1_task_progress = FINISHED_TASK OPEN_SEQUENCE_TASK wz1_seq TASK_SCRATCH_HEAD -1 TASK_LOOK_AT_CHAR -1 scplayer 5000 TASK_PAUSE -1 5000 TASK_GO_STRAIGHT_TO_COORD -1 -2175.8721 659.7667 49.4793 PEDMOVE_WALK -2 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq play_audio = 89 play_audio_for = 3 wz1_walk_comment = 10 ENDIF ENDIF ENDIF */ // IF player_x > -2238.0 // AND player_x < -2220.0 // IF NOT IS_CHAR_DEAD wz1_wuzi // IF LOCATE_CHAR_ANY_MEANS_CHAR_3D wz1_wuzi scplayer 8.0 8.0 8.0 FALSE // play_audio = 13 // play_audio_for = 2 // play_laundry_comment = 1 // ENDIF // ENDIF // ENDIF // IF play_laundry_comment = 1 // GET_CHAR_COORDINATES scplayer player_x player_y player_z // IF player_x > -2210.0 // AND player_x < -2190.0 // IF NOT IS_CHAR_DEAD wz1_wuzi // IF LOCATE_CHAR_ANY_MEANS_CHAR_3D wz1_wuzi scplayer 8.0 8.0 8.0 FALSE // play_audio = 69 // play_audio_for = 5 // play_laundry_comment = 2 // ENDIF // ENDIF // ENDIF // ENDIF IF NOT IS_CHAR_DEAD wz1_wuzi IF wz1_add_blip = 0 IF NOT IS_CHAR_IN_ANY_CAR wz1_wuzi ADD_BLIP_FOR_CHAR wz1_wuzi wz1_wuzi_blip SET_BLIP_AS_FRIENDLY wz1_wuzi_blip TRUE wz1_add_blip = 1 ENDIF ENDIF IF play_audio = 0 AND audio_flag = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2175.8721 659.7667 49.4793 6.0 6.0 6.0 FALSE OR IS_CHAR_IN_AREA_3D scplayer -2191.5132 711.8201 63.4591 -2171.8594 648.7307 48.1132 FALSE wz1_flag = 3 wz1_cut_flag = 0 wz1_skip_time = TIMERA + 1500 REMOVE_CHAR_FROM_GROUP wz1_wuzi REMOVE_BLIP wz1_wuzi_blip wz1_i = 0 WHILE wz1_i < 7 IF DOES_CHAR_EXIST run_ped[wz1_i] DELETE_CHAR run_ped[wz1_i] ENDIF wz1_i ++ ENDWHILE ENDIF ENDIF ENDIF ENDIF RETURN // ***************************************************************************************** // ************************* Cut of Wuzi and player discovering ambush ********************* // ***************************************************************************************** wz1_cutscene_2: SET_WANTED_MULTIPLIER 0.1 SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_POLICE_IGNORE_PLAYER Player1 ON IF wz1_door_opens = 1 // IF ROTATE_OBJECT china_town_gate 300.0 0.8 FALSE // ENDIF ENDIF IF wz1_enter_cut = 0 wz1_enter_cut = 1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED wz1_button_pressed = 1 ENDIF ENDIF IF IS_SKIP_CUTSCENE_BUTTON_PRESSED IF wz1_button_pressed = 0 IF TIMERA > wz1_skip_time wz1_cut_flag = 13 wz1_cut_time = 0 audio_flag = 6 ENDIF ENDIF ELSE IF wz1_button_pressed = 1 wz1_button_pressed = 0 ENDIF ENDIF IF wz1_cut_flag = 0 SET_NEAR_CLIP 0.1 SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_USES_COLLISION_OF_CLOSEST_OBJECT_OF_TYPE -2175.2129 662.7180 50.8582 10.5 ct_gatexr FALSE // SET_USES_COLLISION_OF_CLOSEST_OBJECT_OF_TYPE -2175.2129 662.7180 50.8582 10.5 china_town_gateb FALSE GET_CURRENT_CHAR_WEAPON scplayer wz1_players_weapon SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF SET_FIXED_CAMERA_POSITION -2172.2515 660.9875 48.5695 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2173.0393 660.4017 48.7593 JUMP_CUT SET_OBJECT_COLLISION_DAMAGE_EFFECT china_town_gate TRUE SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED REQUEST_CAR_RECORDING 169 CREATE_CAR SENTINEL -2183.5747 705.0761 52.8984 wz1_burncar2 CREATE_CAR SENTINEL -2174.4292 703.2332 52.8918 wz1_burncar1 SET_CAR_HEADING wz1_burncar1 218.7637 SET_CAR_HEADING wz1_burncar2 347.2325 FREEZE_CAR_POSITION wz1_burncar1 TRUE FREEZE_CAR_POSITION wz1_burncar2 TRUE // SET_CAR_HEALTH wz1_burncar1 100 // SET_CAR_HEALTH wz1_burncar2 100 DAMAGE_CAR_DOOR wz1_burncar1 BONNET DAMAGE_CAR_DOOR wz1_burncar1 BONNET DAMAGE_CAR_DOOR wz1_burncar1 BONNET DAMAGE_CAR_DOOR wz1_burncar1 FRONT_RIGHT_DOOR DAMAGE_CAR_DOOR wz1_burncar1 FRONT_RIGHT_DOOR DAMAGE_CAR_DOOR wz1_burncar1 FRONT_RIGHT_DOOR DAMAGE_CAR_DOOR wz1_burncar1 REAR_RIGHT_DOOR DAMAGE_CAR_DOOR wz1_burncar1 BOOT DAMAGE_CAR_DOOR wz1_burncar1 BOOT DAMAGE_CAR_DOOR wz1_burncar1 BOOT DAMAGE_CAR_DOOR wz1_burncar1 FRONT_LEFT_DOOR DAMAGE_CAR_DOOR wz1_burncar1 FRONT_LEFT_DOOR DAMAGE_CAR_PANEL wz1_burncar1 FRONT_RIGHT_PANEL DAMAGE_CAR_PANEL wz1_burncar1 FRONT_RIGHT_PANEL DAMAGE_CAR_PANEL wz1_burncar1 FRONT_BUMPER DAMAGE_CAR_PANEL wz1_burncar1 WINDSCREEN_PANEL DAMAGE_CAR_PANEL wz1_burncar1 WINDSCREEN_PANEL DAMAGE_CAR_PANEL wz1_burncar1 FRONT_RIGHT_PANEL DAMAGE_CAR_PANEL wz1_burncar1 FRONT_RIGHT_PANEL DAMAGE_CAR_PANEL wz1_burncar1 FRONT_BUMPER DAMAGE_CAR_DOOR wz1_burncar2 BONNET DAMAGE_CAR_DOOR wz1_burncar2 BONNET DAMAGE_CAR_DOOR wz1_burncar2 FRONT_RIGHT_DOOR DAMAGE_CAR_DOOR wz1_burncar2 FRONT_RIGHT_DOOR DAMAGE_CAR_DOOR wz1_burncar2 REAR_RIGHT_DOOR DAMAGE_CAR_PANEL wz1_burncar2 FRONT_RIGHT_PANEL DAMAGE_CAR_PANEL wz1_burncar2 FRONT_RIGHT_PANEL DAMAGE_CAR_PANEL wz1_burncar2 FRONT_BUMPER DAMAGE_CAR_DOOR wz1_burncar2 BOOT DAMAGE_CAR_DOOR wz1_burncar2 BOOT DAMAGE_CAR_DOOR wz1_burncar2 BONNET DAMAGE_CAR_DOOR wz1_burncar2 BONNET DAMAGE_CAR_DOOR wz1_burncar2 FRONT_LEFT_DOOR DAMAGE_CAR_DOOR wz1_burncar2 FRONT_LEFT_DOOR DAMAGE_CAR_PANEL wz1_burncar2 FRONT_RIGHT_PANEL DAMAGE_CAR_PANEL wz1_burncar2 FRONT_RIGHT_PANEL DAMAGE_CAR_PANEL wz1_burncar2 FRONT_BUMPER OPEN_CAR_DOOR wz1_burncar1 FRONT_RIGHT_DOOR OPEN_CAR_DOOR wz1_burncar1 REAR_RIGHT_DOOR OPEN_CAR_DOOR wz1_burncar2 FRONT_RIGHT_DOOR BURST_CAR_TYRE wz1_burncar2 1 POP_CAR_BOOT wz1_burncar2 FORCE_CAR_LIGHTS wz1_burncar1 2 EXPLODE_CAR_IN_CUTSCENE_SHAKE_AND_BITS wz1_burncar1 FALSE FALSE FALSE EXPLODE_CAR_IN_CUTSCENE_SHAKE_AND_BITS wz1_burncar2 FALSE FALSE FALSE CLEAR_AREA -2180.4426 703.3992 55.7186 20.0 FALSE CLEAR_AREA -2175.9473 660.2386 49.7032 10.0 FALSE LVAR_INT wz1_Fire1 wz1_fire2 START_SCRIPT_FIRE -2183.5747 705.0761 52.8984 3 2 wz1_Fire1 START_SCRIPT_FIRE -2174.4292 703.2332 52.8918 5 2 wz1_Fire2 SET_MAX_FIRE_GENERATIONS 0 IF NOT IS_CHAR_DEAD wz1_wuzi CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY wz1_wuzi SET_CHAR_COORDINATES wz1_wuzi -2176.3301 654.2678 48.4453 SET_CHAR_COORDINATES scplayer -2175.3301 653.2678 48.4453 SET_CHAR_HEADING scplayer 280.0 SET_CHAR_HEADING wz1_wuzi 270.0 TASK_GO_STRAIGHT_TO_COORD scplayer -2173.9517 657.6135 49.8762 PEDMOVE_WALK -2 OPEN_SEQUENCE_TASK wz1_seq TASK_GO_STRAIGHT_TO_COORD -1 -2174.4684 658.3790 48.4453 PEDMOVE_WALK -2 TASK_ACHIEVE_HEADING -1 72.0 TASK_PLAY_ANIM -1 Wuzi_Greet_Wuzi wuzi 4.0 FALSE 1 1 0 -1 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq // TASK_PLAY_ANIM -1 HIT_wall ped 4.0 FALSE 1 1 0 -1 force_audio = 1 play_audio_global = 1 play_timed_audio = 15 play_timed_audio_for = 12 audio_time[0] = 395 audio_time[1] = 4202 audio_time[2] = 7380 audio_time[3] = 13000 audio_time[4] = 14516 audio_time[5] = 17352 audio_time[6] = 19617 audio_time[7] = 21861 audio_time[8] = 23540 audio_time[9] = 26894 audio_time[10] = 28934 audio_time[11] = 33619 audio_to_play[0] = 15 audio_to_play[1] = 16 audio_to_play[2] = 17 audio_to_play[3] = 18 audio_to_play[4] = 19 audio_to_play[5] = 20 audio_to_play[6] = 21 audio_to_play[7] = 22 audio_to_play[8] = 23 audio_to_play[9] = 24 audio_to_play[10] = 25 audio_to_play[11] = 26 ENDIF CLEAR_AREA_OF_CARS -2168.5305 717.8694 68.3455 -2254.3792 608.9255 44.7364 wz1_cut_time = TIMERA + 7880 wz1_cut_flag = 1 ENDIF IF wz1_cut_flag = 1 // IF NOT IS_CHAR_DEAD wz1_wuzi // GET_SCRIPT_TASK_STATUS wz1_wuzi PERFORM_SEQUENCE_TASK wz1_task_progress // IF wz1_task_progress = FINISHED_TASK // GET_SCRIPT_TASK_STATUS wz1_wuzi TASK_SCRATCH_HEAD wz1_task_progress // IF wz1_task_progress = FINISHED_TASK // TASK_SCRATCH_HEAD wz1_wuzi // ENDIF // ENDIF // ENDIF IF TIMERA > wz1_cut_time // IF play_audio = 18 // // SET_FIXED_CAMERA_POSITION -2172.8328 660.8203 50.5007 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -2173.6914 660.5081 50.0946 JUMP_CUT FLUSH_ROUTE // SET_CHAR_COORDINATES scplayer -2173.5269 659.7289 48.4453 // SET_CHAR_HEADING scplayer 27.427 IF NOT IS_CHAR_DEAD wz1_wuzi // CLEAR_CHAR_TASKS_IMMEDIATELY wz1_wuzi // SET_CHAR_COORDINATES wz1_wuzi -2174.6211 658.9733 48.4453 // SET_CHAR_HEADING wz1_wuzi 20.1793 EXTEND_ROUTE -2175.9392 662.5935 48.7831 EXTEND_ROUTE -2175.3887 658.0797 48.4453 OPEN_SEQUENCE_TASK wz1_seq TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_WALK 0 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq ENDIF FLUSH_ROUTE // CLEAR_CHAR_TASKS_IMMEDIATELY scplayer EXTEND_ROUTE -2174.7104 658.7460 48.4453 EXTEND_ROUTE -2175.9392 662.5935 48.7831 OPEN_SEQUENCE_TASK wz1_seq TASK_PAUSE -1 1200 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_WALK 0 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK scplayer wz1_seq CLEAR_SEQUENCE_TASK wz1_seq // PRINT WZ1_6 4000 1 wz1_cut_time = TIMERA + 3000 wz1_cut_flag = 2 wz1_door_opens = 1 ENDIF ENDIF IF wz1_cut_flag = 2 IF TIMERA > wz1_cut_time wz1_cut_flag = 3 ENDIF ENDIF IF wz1_cut_flag = 3 IF NOT IS_CHAR_DEAD wz1_wuzi SET_FIXED_CAMERA_POSITION -2176.838 696.095 53.828 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2178.171 693.774 54.725 JUMP_CUT // PRINT WZ1_7 3766 1 // PRINT WZ1_8 3000 1 // PRINT WZ1_9 3000 1 // PRINT WZ1_10 3000 1 CREATE_CHAR PEDTYPE_CIVMALE TRIADA -2177.462 698.151 52.923 wz1_triad[0] CREATE_CHAR PEDTYPE_CIVMALE TRIADB -2182.4417 704.3199 52.8984 wz1_triad[1] CREATE_CHAR PEDTYPE_CIVMALE TRIADA -2176.5515 702.9572 52.8984 wz1_triad[2] CREATE_CHAR PEDTYPE_CIVMALE TRIADB -2178.4675 707.6988 52.8971 wz1_triad[3] SET_CHAR_HEADING wz1_triad[0] 77.5 SET_CHAR_HEADING wz1_triad[1] 229.9210 SET_CHAR_HEADING wz1_triad[2] 148.6859 SET_CHAR_HEADING wz1_triad[3] 12.4516 MARK_MODEL_AS_NO_LONGER_NEEDED TRIADA MARK_MODEL_AS_NO_LONGER_NEEDED TRIADB TASK_DIE wz1_triad[1] TASK_DIE wz1_triad[2] TASK_DIE wz1_triad[3] //-2180.9851 701.2921 54.7007 -2171.5364 693.7770 51.6882 IF NOT IS_CHAR_DEAD wz1_wuzi CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY wz1_wuzi SET_CHAR_COORDINATES scplayer -2177.034 690.892 52.90 SET_CHAR_COORDINATES wz1_wuzi -2177.995 690.775 52.90 SET_CHAR_HEADING wz1_wuzi 0.0 SET_CHAR_HEADING scplayer 0.0 TASK_PLAY_ANIM scplayer CS_Plyr_pt1 wuzi 1000.0 FALSE 1 1 0 -2 TASK_PLAY_ANIM wz1_wuzi CS_Wuzi_pt1 wuzi 1000.0 FALSE 1 1 0 -2 ENDIF wz1_cut_flag = 4 wz1_cut_time = TIMERA + 3000 ENDIF ENDIF IF wz1_cut_flag = 4 IF TIMERA > wz1_cut_time IF NOT IS_CHAR_DEAD wz1_triad[0] SET_CHAR_COORDINATES wz1_triad[0] -2177.602 698.151 53.0 SET_CHAR_HEADING wz1_triad[0] 77.5 TASK_PLAY_ANIM_NON_INTERRUPTABLE wz1_triad[0] CS_Dead_Guy wuzi 1000.0 FALSE 0 0 1 -2 FREEZE_CHAR_POSITION wz1_triad[0] TRUE SET_CHAR_COLLISION wz1_triad[0] FALSE wz1_cut_time = TIMERA + 766 wz1_cut_flag = 5 ENDIF ENDIF ENDIF IF wz1_cut_flag = 5 IF TIMERA > wz1_cut_time IF NOT IS_CHAR_DEAD wz1_wuzi wz1_cut_flag = 6 // SET_FIXED_CAMERA_POSITION -2177.008 700.78 53.343 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -2177.917 695.802 53.209 JUMP_CUT SET_FIXED_CAMERA_POSITION -2178.1331 693.2726 54.0799 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2178.1304 694.2693 54.0000 JUMP_CUT SET_CHAR_COORDINATES scplayer -2177.034 694.913 52.87 SET_CHAR_COORDINATES wz1_wuzi -2177.994 696.476 52.87 SET_CHAR_HEADING wz1_wuzi 0.0 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY wz1_wuzi TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer CS_Plyr_pt2 wuzi 1000.0 FALSE 1 1 0 -2 TASK_PLAY_ANIM_NON_INTERRUPTABLE wz1_wuzi CS_Wuzi_pt2 wuzi 1000.0 FALSE 1 1 0 -2 wz1_cut_time = TIMERA + 2234 ENDIF ENDIF ENDIF IF wz1_cut_flag = 6 IF TIMERA > wz1_cut_time IF NOT IS_CHAR_DEAD wz1_triad[0] SET_CHAR_COORDINATES wz1_triad[0] -2177.602 698.151 53.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE wz1_triad[0] CS_Dead_Guy wuzi 1000.0 FALSE 0 0 1 -2 FREEZE_CHAR_POSITION wz1_triad[0] TRUE SET_CHAR_COLLISION wz1_triad[0] FALSE wz1_cut_time = TIMERA + 3833 wz1_cut_flag = 7 ENDIF ENDIF ENDIF IF wz1_cut_flag = 7 IF TIMERA > wz1_cut_time IF NOT IS_CHAR_DEAD wz1_wuzi SET_FIXED_CAMERA_POSITION -2177.7976 695.7769 54.2318 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2177.6267 696.7596 54.3015 JUMP_CUT wz1_cut_time = TIMERA + 3000 wz1_cut_flag = 8 IF NOT IS_CHAR_DEAD wz1_wuzi GIVE_WEAPON_TO_CHAR wz1_wuzi WEAPONTYPE_MICRO_UZI 5000 ENDIF CREATE_CAR SENTINEL -2177.5242 642.8537 48.4453 wz1_tongcar[0] // MARK_MODEL_AS_NO_LONGER_NEEDED SENTINEL wz1_door_opens = 0 SET_OBJECT_HEADING china_town_gate 0.0 CREATE_CHAR_INSIDE_CAR wz1_tongcar[0] PEDTYPE_MISSION1 DNB1 wz1_tong[0] CREATE_CHAR_AS_PASSENGER wz1_tongcar[0] PEDTYPE_MISSION1 DNB2 0 wz1_tong[1] CREATE_CHAR_AS_PASSENGER wz1_tongcar[0] PEDTYPE_MISSION1 DNB3 1 wz1_tong[2] CREATE_CHAR_AS_PASSENGER wz1_tongcar[0] PEDTYPE_MISSION1 DNB2 2 wz1_tong[3] GIVE_WEAPON_TO_CHAR wz1_tong[0] WEAPONTYPE_MICRO_UZI 500 GIVE_WEAPON_TO_CHAR wz1_tong[1] WEAPONTYPE_MICRO_UZI 500 GIVE_WEAPON_TO_CHAR wz1_tong[2] WEAPONTYPE_MICRO_UZI 500 GIVE_WEAPON_TO_CHAR wz1_tong[3] WEAPONTYPE_MICRO_UZI 500 SET_CHAR_ACCURACY wz1_tong[0] 60 SET_CHAR_ACCURACY wz1_tong[1] 60 SET_CHAR_ACCURACY wz1_tong[2] 60 SET_CHAR_ACCURACY wz1_tong[3] 60 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_MISSION2 //try car_goto_coord SET_CAR_FORWARD_SPEED wz1_tongcar[0] 20.0 // CREATE_GROUP DEFAULT_TASK_ALLOCATOR_STAND_STILL wz1_tongGroup // SET_GROUP_SEPARATION_RANGE wz1_tongGroup 1000.0 // SET_GROUP_LEADER wz1_tongGroup wz1_tong[0] // SET_GROUP_MEMBER wz1_tongGroup wz1_tong[1] // SET_GROUP_MEMBER wz1_tongGroup wz1_tong[2] // SET_GROUP_MEMBER wz1_tongGroup wz1_tong[3] // LOAD_GROUP_DECISION_MAKER DM_GROUP_MISSION_NORM wz1_group_dec // SET_GROUP_DECISION_MAKER wz1_tongGroup wz1_group_dec SET_CHAR_DECISION_MAKER wz1_tong[0] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[1] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[2] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[3] wz1_ped_decisions // CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE wz1_group_dec EVENT_ACQUAINTANCE_PED_HATE // ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE wz1_group_dec EVENT_ACQUAINTANCE_PED_HATE TASK_GROUP_KILL_THREATS_BASIC 0.0 100.0 0.0 0.0 1 1 CREATE_CHAR PEDTYPE_CIVMALE TRIADA -2180.2654 712.9368 52.9050 wz1_mediator audio_actor[3] = wz1_mediator SET_CHAR_HEADING wz1_mediator 180.0 ENDIF ENDIF ENDIF IF wz1_cut_flag = 8 IF TIMERA > wz1_cut_time IF NOT IS_CHAR_DEAD wz1_mediator IF NOT IS_CHAR_DEAD wz1_wuzi SET_CURRENT_CHAR_WEAPON wz1_wuzi WEAPONTYPE_MICRO_UZI TASK_AIM_GUN_AT_CHAR wz1_wuzi wz1_mediator 4000 ENDIF TASK_AIM_GUN_AT_CHAR scplayer wz1_mediator 4000 // CLEAR_PRINTS // PRINT WZ1_12 3000 1 // PRINT WZ1_13 5000 1 wz1_cut_time = TIMERA + 2000 wz1_cut_flag = 9 open_gate_now = 1 ENDIF ENDIF ENDIF LVAR_INT open_Gate_now close_gate_now // VIEW_INTEGER_VARIABLE open_sound_started open_sound_started IF wz1_cut_flag = 9 IF TIMERA > wz1_cut_time IF NOT IS_CHAR_DEAD wz1_mediator TASK_HANDS_UP wz1_mediator 5000 // player looks around when car screeches OPEN_SEQUENCE_TASK wz1_seq TASK_PAUSE -1 6000 TASK_PLAY_ANIM -1 flee_lkaround_01 PED 8.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK scplayer wz1_seq CLEAR_SEQUENCE_TASK wz1_seq wz1_cut_time = TIMERA + 8000 wz1_cut_flag = 10 open_sound_started = 3 LVAR_INT close_gate_time close_gate_time = TIMERA + 8500 close_Gate_now = 1 ENDIF effect_to_play[0] = SOUND_REVERB_CAR_SCREECH effect_time_to_play[0] = TIMERA + 6000 ENDIF ENDIF IF open_gate_now = 1 IF open_sound_started = 0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -2178.5544 704.7785 54.2349 SOUND_GARAGE_DOOR_START open_sound_started = 1 ENDIF IF SLIDE_OBJECT wz1_chinaGar[1] -2178.87 711.556 57.523 0.0 0.0 0.08 FALSE LVAR_INT open_sound_started IF open_sound_started = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -2178.5544 704.7785 54.2349 SOUND_GARAGE_DOOR_STOP open_sound_started = 2 open_gate_now = 2 ENDIF ENDIF ENDIF IF close_gate_now = 1 IF TIMERA > close_gate_time close_gate_now = 2 ENDIF ENDIF IF close_gate_now = 2 IF open_sound_started = 3 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -2178.5544 704.7785 54.2349 SOUND_GARAGE_DOOR_START open_sound_started = 4 ENDIF IF SLIDE_OBJECT wz1_chinaGar[1] -2178.87 711.556 54.523 0.0 0.0 0.08 FALSE IF open_sound_started = 4 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -2178.5544 704.7785 54.2349 SOUND_GARAGE_DOOR_STOP open_sound_started = 5 ENDIF ENDIF ENDIF IF wz1_cut_flag = 10 IF TIMERA > wz1_cut_time // PRINT WZ1_15 4000 1 wz1_cut_time = TIMERA + 1000 wz1_cut_flag = 11 ENDIF ENDIF IF wz1_cut_flag = 11 IF TIMERA > wz1_cut_time SET_FIXED_CAMERA_POSITION -2172.6741 674.1689 53.0772 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2173.2683 673.4052 52.8255 JUMP_CUT // REPORT_MISSION_AUDIO_EVENT_AT_POSITION -2178.5544 704.7785 54.2349 SOUND_GARAGE_DOOR_STOP IF NOT IS_CHAR_DEAD wz1_triad[0] SET_CHAR_HEALTH wz1_triad[0] 0 ENDIF IF NOT IS_CAR_DEAD wz1_tongcar[0] AND NOT IS_CHAR_DEAD wz1_tong[0] START_PLAYBACK_RECORDED_CAR wz1_tongcar[0] 169 // OPEN_SEQUENCE_TASK wz1_seq // TASK_CAR_DRIVE_TO_COORD -1 wz1_tongcar[0] -2176.9468 668.3360 50.3436 20.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH // TASK_CAR_TEMP_ACTION -1 wz1_tongcar[0] TEMPACT_SWERVERIGHT 1000 // CLOSE_SEQUENCE_TASK wz1_seq // PERFORM_SEQUENCE_TASK wz1_tong[0] wz1_seq // CLEAR_SEQUENCE_TASK wz1_seq ENDIF SET_OBJECT_COLLISION_DAMAGE_EFFECT china_town_gate TRUE wz1_cut_flag = 14 wz1_cut_time = TIMERA + 600 ENDIF ENDIF IF wz1_cut_flag = 14 IF TIMERA > wz1_cut_time BREAK_OBJECT china_town_gate FALSE REPORT_MISSION_AUDIO_EVENT_AT_POSITION -2177.4216 662.1031 51.0185 SOUND_CAR_SMASH_GATE wz1_cut_flag = 12 wz1_cut_time = TIMERA + 2800 ENDIF ENDIF IF wz1_cut_flag = 12 IF TIMERA > wz1_cut_time IF NOT IS_CHAR_DEAD wz1_tong[0] IF NOT IS_CAR_DEAD wz1_tongcar[0] TASK_EVERYONE_LEAVE_CAR wz1_tongcar[0] wz1_cut_flag = 13 wz1_cut_time = TIMERA + 2000 FLUSH_ROUTE EXTEND_ROUTE -2178.4717 676.4617 48.8898 EXTEND_ROUTE -2178.4717 695.4617 52.8898 ENDIF ENDIF ENDIF ENDIF IF wz1_cut_flag = 13 IF NOT IS_CHAR_DEAD wz1_tong[0] IF NOT IS_CHAR_IN_ANY_CAR wz1_tong[0] GET_SCRIPT_TASK_STATUS wz1_tong[0] PERFORM_SEQUENCE_TASK wz1_task_progress IF wz1_task_progress = FINISHED_TASK OPEN_SEQUENCE_TASK wz1_seq TASK_TOGGLE_DUCK -1 TRUE TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_WALK 0 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_tong[0] wz1_seq CLEAR_SEQUENCE_TASK wz1_seq ENDIF ENDIF ENDIF IF TIMERA > wz1_cut_time wz1_cut_flag = 15 DO_FADE 1000 FADE_OUT wz1_cut_time = TIMERA + 1000 ENDIF ENDIF IF wz1_cut_flag = 15 IF TIMERA > wz1_cut_time wz1_door_opens = 0 IF DOES_OBJECT_EXIST china_town_Gate DELETE_OBJECT china_town_gate ENDIF IF NOT IS_CAR_DEAD wz1_tongcar[0] SET_CAR_COORDINATES wz1_tongcar[0] -2174.7273 673.9934 51.8769 SET_CAR_HEADING wz1_tongcar[0] 337.6978 ENDIF REQUEST_MODEL TRIADA REQUEST_MODEL TRIADB REQUEST_CAR_RECORDING 169 WHILE NOT HAS_MODEL_LOADED TRIADA OR NOT HAS_MODEL_LOADED TRIADB OR NOT HAS_CAR_RECORDING_BEEN_LOADED 169 WAIT 0 ENDWHILE // GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_MICRO_UZI 5000 IF IS_CAR_DEAD wz1_tongcar[0] CREATE_CAR SENTINEL -2174.7273 673.9934 51.8769 wz1_tongcar[0] ENDIF IF NOT IS_CAR_DEAD wz1_tongcar[0] IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR wz1_tongcar[0] START_PLAYBACK_RECORDED_CAR wz1_tongcar[0] 169 ENDIF SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_CAR wz1_tongcar[0] ENDIF DELETE_CHAR wz1_tong[0] DELETE_CHAR wz1_tong[1] DELETE_CHAR wz1_tong[2] DELETE_CHAR wz1_tong[3] IF NOT IS_CHAR_DEAD wz1_tong[0] IF IS_CHAR_IN_ANY_CAR wz1_tong[0] WARP_CHAR_FROM_CAR_TO_COORD wz1_tong[0] -2176.6494 669.7497 50.7274 ELSE SET_CHAR_COORDINATES wz1_tong[0] -2176.6494 669.7497 50.7274 ENDIF ELSE CREATE_CHAR PEDTYPE_MISSION1 DNB1 -2176.6494 669.7497 50.7274 wz1_tong[0] ENDIF SET_CHAR_HEADING wz1_tong[0] 34.4985 IF NOT IS_CHAR_DEAD wz1_tong[1] IF IS_CHAR_IN_ANY_CAR wz1_tong[1] WARP_CHAR_FROM_CAR_TO_COORD wz1_tong[1] -2172.7710 671.1902 51.1101 ELSE SET_CHAR_COORDINATES wz1_tong[1] -2172.7710 671.1902 51.1101 ENDIF ELSE CREATE_CHAR PEDTYPE_MISSION1 DNB2 -2172.7710 671.1902 51.1101 wz1_tong[1] ENDIF SET_CHAR_HEADING wz1_tong[1] 28.6454 IF NOT IS_CHAR_DEAD wz1_tong[2] IF IS_CHAR_IN_ANY_CAR wz1_tong[2] WARP_CHAR_FROM_CAR_TO_COORD wz1_tong[2] -2176.1431 676.2279 52.4792 ELSE SET_CHAR_COORDINATES wz1_tong[2] -2176.1431 676.2279 52.4792 ENDIF ELSE CREATE_CHAR PEDTYPE_MISSION1 DNB3 -2176.1431 676.2279 52.4792 wz1_tong[2] ENDIF SET_CHAR_HEADING wz1_tong[2] 6.8518 IF NOT IS_CHAR_DEAD wz1_tong[3] IF IS_CHAR_IN_ANY_CAR wz1_tong[3] WARP_CHAR_FROM_CAR_TO_COORD wz1_tong[3] -2177.8198 675.7360 52.3458 ELSE SET_CHAR_COORDINATES wz1_tong[3] -2177.8198 675.7360 52.3458 ENDIF ELSE CREATE_CHAR PEDTYPE_MISSION1 DNB2 -2177.8198 675.7360 52.3458 wz1_tong[3] ENDIF SET_CHAR_HEADING wz1_tong[3] 6.2257 GIVE_WEAPON_TO_CHAR wz1_tong[0] WEAPONTYPE_MICRO_UZI 5000 GIVE_WEAPON_TO_CHAR wz1_tong[1] WEAPONTYPE_MICRO_UZI 5000 GIVE_WEAPON_TO_CHAR wz1_tong[2] WEAPONTYPE_MICRO_UZI 5000 GIVE_WEAPON_TO_CHAR wz1_tong[3] WEAPONTYPE_MICRO_UZI 5000 SET_CHAR_ACCURACY wz1_tong[0] 60 SET_CHAR_ACCURACY wz1_tong[1] 60 SET_CHAR_ACCURACY wz1_tong[2] 60 SET_CHAR_ACCURACY wz1_tong[3] 60 SET_INFORM_RESPECTED_FRIENDS wz1_tong[0] 30.0 8 SET_INFORM_RESPECTED_FRIENDS wz1_tong[1] 30.0 8 SET_INFORM_RESPECTED_FRIENDS wz1_tong[2] 30.0 8 SET_INFORM_RESPECTED_FRIENDS wz1_tong[3] 30.0 8 FLUSH_ROUTE EXTEND_ROUTE -2178.0042 685.6806 52.8942 TASK_FOLLOW_POINT_ROUTE wz1_tong[3] PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE EXTEND_ROUTE -2176.0042 685.6806 52.8942 TASK_FOLLOW_POINT_ROUTE wz1_tong[2] PEDMOVE_RUN FOLLOW_ROUTE_ONCE SET_SENSE_RANGE wz1_tong[0] 40.0 SET_SENSE_RANGE wz1_tong[1] 40.0 SET_SENSE_RANGE wz1_tong[2] 40.0 SET_SENSE_RANGE wz1_tong[3] 40.0 DELETE_CHAR wz1_triad[0] DELETE_CHAR wz1_triad[1] DELETE_CHAR wz1_triad[2] DELETE_CHAR wz1_triad[3] ADD_BLIP_FOR_CHAR wz1_tong[0] wz1_tong_blip[0] ADD_BLIP_FOR_CHAR wz1_tong[1] wz1_tong_blip[1] ADD_BLIP_FOR_CHAR wz1_tong[2] wz1_tong_blip[2] ADD_BLIP_FOR_CHAR wz1_tong[3] wz1_tong_blip[3] CREATE_CHAR PEDTYPE_CIVMALE TRIADA -2177.9463 670.3361 50.8814 wz1_triad[0] CREATE_CHAR PEDTYPE_CIVMALE TRIADB -2182.4417 704.3199 52.8984 wz1_triad[1] CREATE_CHAR PEDTYPE_CIVMALE TRIADA -2176.5515 702.9572 52.8984 wz1_triad[2] CREATE_CHAR PEDTYPE_CIVMALE TRIADB -2178.4675 707.6988 52.8971 wz1_triad[3] SET_CHAR_HEADING wz1_triad[0] 77.5 SET_CHAR_HEADING wz1_triad[1] 229.9210 SET_CHAR_HEADING wz1_triad[2] 148.6859 SET_CHAR_HEADING wz1_triad[3] 12.4516 MARK_MODEL_AS_NO_LONGER_NEEDED TRIADA MARK_MODEL_AS_NO_LONGER_NEEDED TRIADB TASK_DIE wz1_triad[0] TASK_DIE wz1_triad[1] TASK_DIE wz1_triad[2] TASK_DIE wz1_triad[3] SET_CHAR_DECISION_MAKER wz1_tong[0] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[1] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[2] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[3] wz1_ped_decisions SET_CHAR_ALLOWED_TO_DUCK wz1_tong[0] FALSE SET_CHAR_ALLOWED_TO_DUCK wz1_tong[1] FALSE SET_CHAR_STAY_IN_SAME_PLACE wz1_tong[0] TRUE SET_CHAR_STAY_IN_SAME_PLACE wz1_tong[1] TRUE // CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE wz1_group_dec EVENT_ACQUAINTANCE_PED_HATE // ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE wz1_group_dec EVENT_ACQUAINTANCE_PED_HATE TASK_GROUP_KILL_THREATS_BASIC 0.0 100.0 0.0 0.0 1 1 IF NOT IS_CAR_DEAD wz1_burncar1 CREATE_CAR SENTINEL -2174.4292 703.2332 52.8918 wz1_burncar1 SET_CAR_HEADING wz1_burncar1 218.7637 EXPLODE_CAR_IN_CUTSCENE wz1_burncar1 ENDIF IF NOT IS_CAR_DEAD wz1_burncar2 CREATE_CAR SENTINEL -2183.5747 705.0761 52.8984 wz1_burncar2 SET_CAR_HEADING wz1_burncar2 347.2325 EXPLODE_CAR_IN_CUTSCENE wz1_burncar2 ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED DNB1 MARK_MODEL_AS_NO_LONGER_NEEDED DNB3 IF DOES_OBJECT_EXIST wz1_chinaGar[1] SET_OBJECT_COORDINATES wz1_chinaGar[1] -2178.87 711.556 54.523 ENDIF WAIT 1000 CLEAR_PRINTS // PRINT wz1_B1 3000 1 SET_USES_COLLISION_OF_CLOSEST_OBJECT_OF_TYPE -2175.2129 662.7180 50.8582 10.5 ct_gatexr TRUE SET_USES_COLLISION_OF_CLOSEST_OBJECT_OF_TYPE -2175.2129 662.7180 50.8582 10.5 china_town_gateb TRUE wz1_flag = 4 wz1_scene_flag = 0 wz1_tong_event = 1 wz1_escape_flag = 0 wz1_calculate_wuzi_health = 1 play_audio_global = 0 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF IF NOT IS_CHAR_DEAD wz1_wuzi CLEAR_CHAR_TASKS_IMMEDIATELY wz1_wuzi CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -2178.9717 704.3181 52.8971 SET_CHAR_COORDINATES wz1_wuzi -2180.4231 703.6827 52.8971 SET_CHAR_HEADING scplayer 190.0 SET_CHAR_HEADING wz1_wuzi 196.0 SET_CHAR_HEALTH wz1_wuzi 250 SET_CURRENT_CHAR_WEAPON wz1_wuzi WEAPONTYPE_MICRO_UZI ENDIF wz1_health_bar = 100 DISPLAY_ONSCREEN_COUNTER_WITH_STRING wz1_health_bar COUNTER_DISPLAY_BAR wz1_19 IF NOT IS_CHAR_DEAD wz1_wuzi ADD_BLIP_FOR_CHAR wz1_wuzi wz1_wuzi_blip SET_BLIP_AS_FRIENDLY wz1_wuzi_blip TRUE MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER players_group wz1_wuzi // LISTEN_TO_PLAYER_GROUP_COMMANDS wz1_wuzi FALSE ENDIF SET_CURRENT_CHAR_WEAPON scplayer wz1_players_weapon last_wuzi_insult_time = TIMERA + 3000 force_audio = 0 REMOVE_ANIMATION wuzi DO_FADE 1000 FADE_IN WAIT 1000 ENDIF ENDIF RETURN // ***************************************************************************************** // ************************* Get wuzi out of the ambush area ******************************* // ***************************************************************************************** wz1_scene2: LVAR_INT play_instructions IF play_instructions = 0 IF play_audio = 0 play_audio = 30 play_instructions = 1 check_wuzi_in_group = 1 ENDIF CHECKPOINT_SAVE 99 ENDIF IF play_instructions = 1 IF play_audio = 0 PRINT wz1_b1 4000 1 play_instructions = 2 ENDIF ENDIF // IF DOES_CHAR_EXIST wz1_tong[5] // wz1_dead_tong = 0 // wz1_i = 0 // WHILE wz1_i < 8 // IF IS_CHAR_DEAD wz1_tong[wz1_i] // wz1_dead_tong ++ // ENDIF // IF NOT IS_CHAR_DEAD wz1_tong[wz1_i] // IF IS_CHAR_STUCK_UNDER_CAR wz1_tong[wz1_i] // TASK_DIE wz1_tong[wz1_i] // ENDIF // ENDIF // wz1_i ++ // ENDWHILE // ENDIF LVAR_INT lose_face_message_printed // VIEW_INTEGER_VARIABLE lose_face_message_printed lose_face_message_printed IF wuzi_in_group = 1 IF audio_flag = 1 IF NOT IS_CHAR_DEAD wz1_wuzi IF lose_face_message_printed = 0 IF NOT IS_CHAR_IN_AREA_3D scplayer -2170.1848 719.1667 63.8637 -2239.2356 594.3701 37.2048 FALSE AND NOT IS_CHAR_IN_AREA_3D wz1_wuzi -2170.1848 719.1667 63.8637 -2239.2356 594.3701 37.2048 FALSE PRINT WZ1_B3 5000 1 lose_face_message_printed = 1 ENDIF //get back to kill the bad guys or Qoozie will lose face. ENDIF IF lose_face_message_printed = 1 IF IS_CHAR_IN_AREA_3D scplayer -2170.1848 719.1667 63.8637 -2239.2356 594.3701 37.2048 FALSE AND IS_CHAR_IN_AREA_3D wz1_wuzi -2170.1848 719.1667 63.8637 -2239.2356 594.3701 37.2048 FALSE lose_face_message_printed = 0 ENDIF IF NOT IS_CHAR_IN_AREA_3D scplayer -2100.1848 779.1667 93.8637 -2279.2356 534.3701 7.2048 FALSE AND NOT IS_CHAR_IN_AREA_3D wz1_wuzi -2100.1848 779.1667 93.8637 -2279.2356 534.3701 7.2048 FALSE PRINT VAL_A9 4000 1 wz1_mission_fail = 1 ENDIF ENDIF ENDIF ENDIF ENDIF // IF wz1_dead_tong = 8 IF IS_CHAR_IN_AREA_3D scplayer -2179.7759 654.5721 51.7195 -2172.2871 632.6477 48.3312 FALSE wz1_flag = 5 wz1_cut_flag = 8 wz1_escape_flag = 7 wz1_time = TIMERA + 2000 wz1_enter_cut = 0 wz1_button_pressed = 0 force_audio = 1 LVAR_INT wz1_skip_time wz1_skip_time = TIMERA + 2500 ENDIF RETURN // ***************************************************************************************** // ************************* Cutscene of more tongs turning up ***************************** // ***************************************************************************************** wz1_cutscene_3: IF wz1_enter_cut = 0 wz1_enter_cut = 1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED wz1_button_pressed = 1 ENDIF ENDIF IF IS_SKIP_CUTSCENE_BUTTON_PRESSED IF wz1_button_pressed = 0 IF TIMERA > wz1_skip_time wz1_cut_flag = 8 wz1_cut_time = 0 audio_flag = 6 ENDIF ENDIF ELSE IF wz1_button_pressed = 1 wz1_button_pressed = 0 ENDIF ENDIF IF wz1_cut_flag = 0 IF TIMERA > wz1_time wz1_cut_flag = 1 play_audio = 47 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION -2176.9365 641.8041 49.2832 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2177.2947 642.7374 49.3052 JUMP_CUT CLEAR_AREA_OF_CARS -2179.2488 659.2075 50.1335 -2172.2627 641.8954 50.377 IF NOT IS_CAR_DEAD wz1_tongcar[0] IF IS_CAR_IN_AREA_3D wz1_tongcar[0] -2182.0940 653.1942 50.6565 -2173.9512 636.2528 47.0812 FALSE SET_CAR_COORDINATES wz1_tongcar[0] -2175.7152 636.0 48.445 SET_CAR_HEADING wz1_tongcar[0] 306.9228 ENDIF ENDIF CREATE_CHAR PEDTYPE_MISSION1 DNB1 -2218.2251 636.9910 53.9509 wz1_tong[8] SET_INFORM_RESPECTED_FRIENDS wz1_tong[8] 30.0 8 SET_CHAR_STAY_IN_SAME_PLACE wz1_tong[8] TRUE SET_CHAR_ACCURACY wz1_tong[8] 100 SET_CHAR_DECISION_MAKER wz1_tong[8] wz1_ped_decisions GIVE_WEAPON_TO_CHAR wz1_tong[8] WEAPONTYPE_SNIPERRIFLE 9999 SET_CHAR_SHOOT_RATE wz1_tong[8] 20 TASK_AIM_GUN_AT_COORD wz1_tong[8] -2182.9172 645.9363 48.9215 -2 SET_CHAR_HEADING wz1_tong[8] 289.0 TASK_TOGGLE_DUCK wz1_tong[8] TRUE IF NOT IS_CAR_DEAD wz1_tongcar[1] IF IS_CAR_IN_AREA_2D wz1_tongcar[1] -2187.0344 633.1110 -2172.2617 660.5647 FALSE SET_CAR_COORDINATES wz1_tongcar[1] -2176.3875 641.4572 50.5019 SET_CAR_HEADING wz1_tongcar[1] 320.0 ENDIF ENDIF IF NOT IS_CAR_DEAD wz1_tongcar[2] IF IS_CAR_IN_AREA_2D wz1_tongcar[2] -2187.0344 633.1110 -2172.2617 660.5647 FALSE SET_CAR_COORDINATES wz1_tongcar[2] -2175.3831 640.9232 50.5734 SET_CAR_HEADING wz1_tongcar[2] 320.0 ENDIF ENDIF ENDIF ENDIF IF wz1_cut_flag = 1 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_FIXED_CAMERA_POSITION -2176.9365 641.8041 49.2832 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2177.2947 642.7374 49.3052 JUMP_CUT IF NOT IS_CHAR_DEAD wz1_wuzi CLEAR_CHAR_TASKS_IMMEDIATELY wz1_wuzi SET_CHAR_COORDINATES wz1_wuzi -2175.6972 650.9794 48.4429 TASK_GO_STRAIGHT_TO_COORD wz1_wuzi -2179.9583 641.7931 48.4453 PEDMOVE_WALK -2 ENDIF SET_CHAR_COORDINATES scplayer -2176.8972 650.9794 48.4429 TASK_GO_STRAIGHT_TO_COORD scplayer -2180.9583 641.7931 48.4453 PEDMOVE_WALK -2 wz1_cut_flag = 2 wz1_time = TIMERA + 2500 ENDIF IF wz1_cut_flag = 2 IF TIMERA > wz1_time IF NOT IS_CHAR_DEAD wz1_tong[8] TASK_SHOOT_AT_COORD wz1_tong[8] -2179.9246 646.6900 48.4548 200 ENDIF wz1_time = TIMERA + 300 wz1_cut_flag = 3 wz1_mini_flag = 0 ENDIF ENDIF IF wz1_cut_flag = 3 // GET_SCRIPT_TASK_STATUS scplayer TASK_GO_STRAIGHT_TO_COORD wz1_task_status // IF wz1_task_status = FINISHED_TASK IF wz1_mini_flag = 0 IF TIMERA > wz1_time // SET_FIXED_CAMERA_POSITION -2183.6958 643.2665 48.6687 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -2182.8809 643.8264 48.8182 JUMP_CUT TASK_DIVE_AND_GET_UP scplayer -1.0 -1.0 1000 IF NOT IS_CHAR_DEAD wz1_wuzi TASK_COWER wz1_wuzi ENDIF wz1_time = TIMERA + 400 wz1_mini_flag = 1 ENDIF ENDIF IF wz1_mini_flag = 1 IF TIMERA > wz1_time wz1_cut_flag = 4 play_audio = 36 wz1_time = TIMERA + 1000 ENDIF ENDIF ENDIF IF wz1_cut_flag = 4 IF TIMERA > wz1_time SET_FIXED_CAMERA_POSITION -2220.5515 639.9709 53.7095 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2219.6382 639.5733 53.7963 JUMP_CUT SET_CHAR_COORDINATES scplayer -2178.2976 648.3584 48.4429 SET_CHAR_HEADING scplayer 133.2868 IF NOT IS_CHAR_DEAD wz1_tong[8] TASK_AIM_GUN_AT_COORD wz1_tong[8] -2184.7087 635.0774 49.4781 -2 ENDIF wz1_time = TIMERA + 2500 wz1_cut_flag = 5 // GET_SCRIPT_TASK_STATUS scplayer TASK_DIVE_AND_GET_UP wz1_task_status // IF wz1_task_status = FINISHED_TASK // wz1_cut_flag = 1 // ENDIF ENDIF ENDIF IF wz1_cut_flag = 5 IF TIMERA > wz1_time CREATE_CHAR PEDTYPE_MISSION1 DNB2 -2219.5867 643.4511 48.4472 wz1_tong[9] CREATE_CHAR PEDTYPE_MISSION1 DNB3 -2223.5867 642.4511 48.4472 wz1_tong[10] CREATE_CHAR PEDTYPE_MISSION1 DNB2 -2227.5867 644.4511 48.4472 wz1_tong[11] CREATE_CHAR PEDTYPE_MISSION1 DNB3 -2230.5867 643.4511 48.4472 wz1_tong[12] SET_INFORM_RESPECTED_FRIENDS wz1_tong[9] 30.0 8 SET_INFORM_RESPECTED_FRIENDS wz1_tong[10] 30.0 8 SET_INFORM_RESPECTED_FRIENDS wz1_tong[11] 30.0 8 SET_INFORM_RESPECTED_FRIENDS wz1_tong[12] 30.0 8 SET_CHAR_ACCURACY wz1_tong[9] 80 SET_CHAR_ACCURACY wz1_tong[10] 80 SET_CHAR_ACCURACY wz1_tong[11] 80 SET_CHAR_ACCURACY wz1_tong[12] 85 SET_CHAR_DECISION_MAKER wz1_tong[9] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[10] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[11] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[12] wz1_ped_decisions TASK_GO_STRAIGHT_TO_COORD wz1_tong[9] -2194.9016 645.9846 48.4453 PEDMOVE_RUN -2 FLUSH_ROUTE EXTEND_ROUTE -2200.2095 644.2397 48.4429 EXTEND_ROUTE -2199.9395 641.5246 48.4429 SET_CHAR_STAY_IN_SAME_PLACE wz1_tong[9] TRUE SET_CHAR_STAY_IN_SAME_PLACE wz1_tong[10] TRUE SET_CHAR_STAY_IN_SAME_PLACE wz1_tong[11] TRUE SET_CHAR_STAY_IN_SAME_PLACE wz1_tong[12] TRUE GIVE_WEAPON_TO_CHAR wz1_tong[9] WEAPONTYPE_MICRO_UZI 5000 GIVE_WEAPON_TO_CHAR wz1_tong[10] WEAPONTYPE_MICRO_UZI 5000 GIVE_WEAPON_TO_CHAR wz1_tong[11] WEAPONTYPE_MICRO_UZI 5000 GIVE_WEAPON_TO_CHAR wz1_tong[12] WEAPONTYPE_MICRO_UZI 5000 OPEN_SEQUENCE_TASK wz1_seq TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN 0 TASK_ACHIEVE_HEADING -1 270.0 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_tong[10] wz1_seq CLEAR_SEQUENCE_TASK wz1_seq TASK_GO_STRAIGHT_TO_COORD wz1_tong[11] -2204.8511 641.7612 48.4429 PEDMOVE_RUN -2 TASK_GO_STRAIGHT_TO_COORD wz1_tong[12] -2214.3706 641.3669 48.4515 PEDMOVE_RUN -2 wz1_time = TIMERA + 500 wz1_cut_flag = 6 ENDIF ENDIF IF wz1_cut_flag = 6 IF TIMERA > wz1_time SET_FIXED_CAMERA_POSITION -2229.4363 644.2267 48.4907 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2228.4866 643.9835 48.6883 JUMP_CUT play_audio = 46 wz1_time = TIMERA + 3000 wz1_cut_flag = 7 ENDIF ENDIF IF wz1_cut_flag = 7 IF TIMERA > wz1_time wz1_cut_flag = 8 ENDIF ENDIF IF wz1_cut_flag = 8 IF NOT DOES_CHAR_EXIST wz1_tong[8] CREATE_CHAR PEDTYPE_MISSION1 DNB3 -2218.2251 636.9910 53.9509 wz1_tong[8] SET_CHAR_STAY_IN_SAME_PLACE wz1_tong[8] TRUE SET_CHAR_DECISION_MAKER wz1_tong[8] wz1_ped_decisions GIVE_WEAPON_TO_CHAR wz1_tong[8] WEAPONTYPE_SNIPERRIFLE 9999 SET_CHAR_SHOOT_RATE wz1_tong[8] 20 SET_CHAR_HEADING wz1_tong[8] 289.0 TASK_TOGGLE_DUCK wz1_tong[8] TRUE ENDIF IF NOT IS_CHAR_DEAD wz1_tong[8] SET_CHAR_ACCURACY wz1_tong[8] 50 ENDIF DELETE_CHAR wz1_tong[9] DELETE_CHAR wz1_tong[10] DELETE_CHAR wz1_tong[11] DELETE_CHAR wz1_tong[12] CREATE_CHAR PEDTYPE_MISSION1 DNB1 -2203.4910 647.0372 48.4453 wz1_tong[9] CREATE_CHAR PEDTYPE_MISSION1 DNB2 -2200.6946 637.1932 48.4429 wz1_tong[10] CREATE_CHAR PEDTYPE_MISSION1 DNB3 -2196.9429 635.1917 48.4429 wz1_tong[11] CREATE_CHAR PEDTYPE_MISSION1 DNB1 -2214.3779 641.6099 48.4484 wz1_tong[12] SET_CHAR_HEADING wz1_tong[9] 255.1494 SET_CHAR_HEADING wz1_tong[10] 285.6451 SET_CHAR_HEADING wz1_tong[11] 295.4749 SET_CHAR_HEADING wz1_tong[12] 277.3081 SET_CHAR_ACCURACY wz1_tong[9] 60 SET_CHAR_ACCURACY wz1_tong[10] 60 SET_CHAR_ACCURACY wz1_tong[11] 60 SET_CHAR_ACCURACY wz1_tong[12] 60 SET_CHAR_SHOOT_RATE wz1_tong[9] 85 SET_CHAR_SHOOT_RATE wz1_tong[10] 85 SET_CHAR_SHOOT_RATE wz1_tong[11] 85 SET_CHAR_SHOOT_RATE wz1_tong[12] 85 TASK_DUCK wz1_tong[9] 1000 TASK_DUCK wz1_tong[11] 3000 SET_CHAR_STAY_IN_SAME_PLACE wz1_tong[9] TRUE SET_CHAR_STAY_IN_SAME_PLACE wz1_tong[10] TRUE SET_CHAR_STAY_IN_SAME_PLACE wz1_tong[11] TRUE SET_CHAR_STAY_IN_SAME_PLACE wz1_tong[12] TRUE SET_SENSE_RANGE wz1_tong[9] 40.0 SET_SENSE_RANGE wz1_tong[10] 40.0 SET_SENSE_RANGE wz1_tong[11] 40.0 SET_SENSE_RANGE wz1_tong[12] 40.0 GIVE_WEAPON_TO_CHAR wz1_tong[9] WEAPONTYPE_MICRO_UZI 5000 GIVE_WEAPON_TO_CHAR wz1_tong[10] WEAPONTYPE_MICRO_UZI 5000 GIVE_WEAPON_TO_CHAR wz1_tong[11] WEAPONTYPE_MICRO_UZI 5000 GIVE_WEAPON_TO_CHAR wz1_tong[12] WEAPONTYPE_MICRO_UZI 5000 CREATE_CHAR PEDTYPE_MISSION1 DNB1 -2205.3440 648.4099 48.4429 wz1_tong[13] SET_INFORM_RESPECTED_FRIENDS wz1_tong[13] 30.0 8 GIVE_WEAPON_TO_CHAR wz1_tong[13] WEAPONTYPE_MICRO_UZI 500 SET_CHAR_HEADING wz1_tong[13] 270.0 SET_CHAR_STAY_IN_SAME_PLACE wz1_tong[13] TRUE // SET_CHAR_COORDINATES scplayer -2181.3103 639.2708 48.4453 // SET_CHAR_HEADING scplayer 61.1766 ADD_BLIP_FOR_CHAR wz1_tong[9] wz1_tong_blip[9] ADD_BLIP_FOR_CHAR wz1_tong[10] wz1_tong_blip[10] ADD_BLIP_FOR_CHAR wz1_tong[11] wz1_tong_blip[11] ADD_BLIP_FOR_CHAR wz1_tong[12] wz1_tong_blip[12] ADD_BLIP_FOR_CHAR wz1_tong[13] wz1_tong_blip[13] IF NOT IS_CHAR_DEAD wz1_tong[8] REMOVE_BLIP wz1_tong_blip[8] ADD_BLIP_FOR_CHAR wz1_tong[8] wz1_tong_blip[8] ENDIF SET_CHAR_DECISION_MAKER wz1_tong[9] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[10] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[11] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[12] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[13] wz1_ped_decisions // IF NOT IS_CHAR_DEAD wz1_wuzi // SET_CHAR_COORDINATES wz1_wuzi -2178.2976 648.3584 48.4429 // SET_CHAR_HEADING wz1_wuzi 133.2868 // TASK_TOGGLE_DUCK wz1_wuzi TRUE // ENDIF // SET_CAMERA_BEHIND_PLAYER // RESTORE_CAMERA_JUMPCUT // SWITCH_WIDESCREEN OFF // SET_PLAYER_CONTROL player1 ON wz1_flag = 6 wz1_tong_event = 4 wz1_advance_time = TIMERA + 4000 wz1_escape_flag = 8 wz1_scene_flag = 0 lose_face_message_printed = 0 force_audio = 0 ENDIF RETURN // ***************************************************************************************** // ****************************** Get Wuzi to getaway car ********************************** // ***************************************************************************************** wz1_scene3: IF wuzi_in_group = 1 IF audio_flag = 1 IF NOT IS_CHAR_DEAD wz1_wuzi IF lose_face_message_printed = 0 IF NOT IS_CHAR_IN_AREA_3D scplayer -2170.1848 719.1667 63.8637 -2239.2356 594.3701 37.2048 FALSE AND NOT IS_CHAR_IN_AREA_3D wz1_wuzi -2170.1848 719.1667 63.8637 -2239.2356 594.3701 37.2048 FALSE PRINT WZ1_B3 5000 1 lose_face_message_printed = 1 ENDIF //get back to kill the bad guys or Qoozie will lose face. ENDIF IF lose_face_message_printed = 1 IF IS_CHAR_IN_AREA_3D scplayer -2170.1848 719.1667 63.8637 -2239.2356 594.3701 37.2048 FALSE AND IS_CHAR_IN_AREA_3D wz1_wuzi -2170.1848 719.1667 63.8637 -2239.2356 594.3701 37.2048 FALSE lose_face_message_printed = 0 ENDIF IF NOT IS_CHAR_IN_AREA_3D scplayer -2100.1848 779.1667 93.8637 -2279.2356 534.3701 7.2048 FALSE AND NOT IS_CHAR_IN_AREA_3D wz1_wuzi -2100.1848 779.1667 93.8637 -2279.2356 534.3701 7.2048 FALSE PRINT VAL_A9 4000 1 wz1_mission_fail = 1 ENDIF ENDIF ENDIF ENDIF ENDIF LVAR_INT watch_sniper IF watch_sniper = 0 IF NOT IS_CHAR_DEAD wz1_tong[8] IF IS_CHAR_SHOOTING wz1_tong[8] IF play_audio = 0 play_audio = 36 watch_sniper = 1 ENDIF ENDIF ENDIF ENDIF IF watch_sniper = 1 IF NOT IS_CHAR_DEAD wz1_tong[8] IF IS_CHAR_SHOOTING wz1_tong[8] IF play_audio = 0 play_audio = 43 watch_sniper = 2 ENDIF ENDIF ENDIF ENDIF IF wz1_dead_tong_wave3 = 10 wz1_flag = 7 wz1_cut_flag = 0 wz1_cut_time = TIMERA + 2500 MARK_MODEL_AS_NO_LONGER_NEEDED TRIADA MARK_MODEL_AS_NO_LONGER_NEEDED TRIADB MARK_MODEL_AS_NO_LONGER_NEEDED SNIPER MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ REMOVE_ANIMATION wuzi REMOVE_CAR_RECORDING 169 REMOVE_CAR_RECORDING 139 lose_face_message_printed = 0 ENDIF RETURN // ***************************************************************************************** // ************* Player enters car with Wuzi and rams attacking Tong cars ****************** // ***************************************************************************************** wz1_cutscene_4: // SET_USES_COLLISION_OF_CLOSEST_OBJECT_OF_TYPE -2248.2129 643.7180 50.8582 2.5 Tramstop_SF FALSE IF wz1_cut_flag = 0 IF audio_flag = 1 IF play_audio = 0 IF NOT IS_CHAR_DEAD wz1_wuzi REMOVE_CHAR_FROM_GROUP wz1_wuzi ENDIF CLEAR_ONSCREEN_COUNTER wz1_health_bar REQUEST_ANIMATION GANGS REQUEST_ANIMATION CAR_CHAT REQUEST_CAR_RECORDING 136 REQUEST_CAR_RECORDING 137 REQUEST_CAR_RECORDING 138 play_audio = 55 play_audio_global = 1 force_audio = 1 wz1_cut_flag = 6 wuzi_in_group = 0 ENDIF ENDIF // IF NOT IS_CHAR_DEAD wz1_wuzi // CLEAR_CHAR_TASKS_IMMEDIATELY wz1_wuzi // SET_CHAR_COORDINATES wz1_wuzi -2191.6741 642.7552 48.4453 // SET_CHAR_HEADING wz1_wuzi 90.0 // TASK_GO_STRAIGHT_TO_COORD wz1_wuzi -2211.0906 643.0065 48.44 PEDMOVE_WALK -2 // ENDIF ENDIF // IF wz1_cut_flag = 1 // IF TIMERA > wz1_cut_time // SET_PLAYER_CONTROL player1 OFF // SWITCH_WIDESCREEN ON // SET_FIXED_CAMERA_POSITION -2194.4580 645.8234 49.4058 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -2195.4114 645.5325 49.4835 JUMP_CUT // // IF NOT IS_CAR_DEAD wz1_getaway_car // LOCK_CAR_DOORS wz1_getaway_car CARLOCK_UNLOCKED // FREEZE_CAR_POSITION wz1_getaway_car FALSE // SET_CAR_COORDINATES wz1_getaway_car -2218.9304 642.3626 48.4475 // SET_CAR_HEADING wz1_getaway_car 267.1711 // ENDIF // // // // IF IS_CHAR_IN_ANY_CAR scplayer // GET_CAR_CHAR_IS_USING scplayer car // ENDIF // // CLEAR_CHAR_TASKS_IMMEDIATELY scplayer // // SET_CHAR_COORDINATES scplayer -2196.1609 644.3362 48.4453 // SET_CHAR_HEADING scplayer 90.0 // GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_MICRO_UZI 20 // // TASK_TIRED scplayer 3000 // IF NOT IS_CHAR_DEAD wz1_wuzi // CLEAR_CHAR_TASKS_IMMEDIATELY wz1_wuzi // TASK_TOGGLE_DUCK wz1_wuzi FALSE // SET_CHAR_COORDINATES wz1_wuzi -2191.6741 642.7552 48.4453 // SET_CHAR_HEADING wz1_wuzi 90.0 // TASK_GO_STRAIGHT_TO_COORD wz1_wuzi -2211.0906 643.0065 48.44 PEDMOVE_WALK -2 // ENDIF // // IF NOT IS_CAR_DEAD car // DELETE_CAR car // ENDIF // //LVAR_INT wz1_ped0 // // CREATE_CHAR PEDTYPE_MISSION4 OMOST -2206.2307 651.4228 48.4453 wz1_ped0 // TASK_GO_STRAIGHT_TO_COORD wz1_ped0 -2205.4429 642.3512 48.4453 PEDMOVE_RUN -1 // // wz1_cut_flag = 2 // wz1_cut_time = TIMERA + 2300 // ENDIF // ENDIF // IF wz1_cut_flag = 2 // IF TIMERA > wz1_cut_time // IF NOT IS_CHAR_DEAD wz1_ped0 // TASK_AIM_GUN_AT_CHAR scplayer wz1_ped0 3000 // TASK_HANDS_UP wz1_ped0 3000 // wz1_cut_flag = 3 // wz1_cut_time = TIMERA + 1500 // ENDIF // ENDIF // ENDIF // // IF wz1_cut_flag = 3 // IF TIMERA > wz1_cut_time // // print "Relax CJ...come let's take that Tong car and get out of here." // wz1_cut_flag = 4 // wz1_cut_time = TIMERA + 1800 // ENDIF // ENDIF // // IF wz1_cut_flag = 4 // IF TIMERA > wz1_cut_time // TASK_GO_STRAIGHT_TO_COORD scplayer -2197.5609 644.3362 48.4453 PEDMOVE_WALK -2 // wz1_cut_flag = 5 // wz1_cut_time = TIMERA + 1000 // ENDIF // ENDIF // // IF wz1_cut_flag = 5 // IF TIMERA > wz1_cut_time // TASK_PLAY_ANIM scplayer prtial_gngtlkA GANGS 4.0 FALSE 0 0 0 -1 // IF NOT IS_CHAR_DEAD wz1_ped0 // TASK_SMART_FLEE_POINT wz1_ped0 -2203.8962 642.1242 49.7291 30.0 8000 // ENDIF // // wz1_cut_flag = 6 // wz1_cut_time = TIMERA + 4000 // REQUEST_CAR_RECORDING 136 // REQUEST_CAR_RECORDING 137 // REQUEST_CAR_RECORDING 138 // ENDIF // ENDIF IF wz1_cut_flag = 6 IF audio_flag = 1 IF play_audio = 0 IF TIMERA > wz1_cut_time AND HAS_CAR_RECORDING_BEEN_LOADED 136 AND HAS_CAR_RECORDING_BEEN_LOADED 137 AND HAS_CAR_RECORDING_BEEN_LOADED 138 force_audio = 0 IF NOT IS_CAR_DEAD wz1_getaway_car LOCK_CAR_DOORS wz1_getaway_car CARLOCK_UNLOCKED FREEZE_CAR_POSITION wz1_getaway_car FALSE SET_CAR_COORDINATES wz1_getaway_car -2218.9304 642.3626 48.4475 SET_CAR_HEADING wz1_getaway_car 267.1711 ENDIF SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer car ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF NOT IS_CHAR_DEAD wz1_wuzi CLEAR_CHAR_TASKS_IMMEDIATELY wz1_wuzi TASK_TOGGLE_DUCK wz1_wuzi FALSE ENDIF IF NOT IS_CAR_DEAD car DELETE_CAR car ENDIF SET_FIXED_CAMERA_POSITION -2212.1252 644.6052 51.6509 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2213.0623 644.5379 51.3082 JUMP_CUT IF NOT IS_CAR_DEAD wz1_getaway_car SET_CHAR_COORDINATES scplayer -2212.3801 643.0919 48.4466 SET_CHAR_HEADING scplayer 180.0 TASK_ENTER_CAR_AS_DRIVER scplayer wz1_getaway_car -2 SET_CAR_PROOFS wz1_getaway_car TRUE TRUE TRUE TRUE TRUE IF NOT IS_CHAR_DEAD wz1_wuzi SET_CHAR_SHOOT_RATE wz1_wuzi 80 SET_CHAR_RELATIONSHIP wz1_wuzi ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 SET_CHAR_COORDINATES wz1_wuzi -2217.7805 640.9980 48.4549 SET_CHAR_HEADING wz1_wuzi 77.0 TASK_ENTER_CAR_AS_PASSENGER wz1_wuzi wz1_getaway_car 2600 0 ENDIF ENDIF wz1_i = 0 WHILE wz1_i < 18 MARK_CHAR_AS_NO_LONGER_NEEDED wz1_tong[wz1_i] wz1_i ++ ENDWHILE CREATE_CAR SENTINEL -2245.3433 715.4953 48.4375 wz1_carattack[0] SET_CAR_HEADING wz1_carattack[0] 180.0 CREATE_CHAR_INSIDE_CAR wz1_carattack[0] PEDTYPE_MISSION1 DNB2 wz1_tong[0] CREATE_CHAR_AS_PASSENGER wz1_carattack[0] PEDTYPE_MISSION1 DNB3 0 wz1_tong[1] GIVE_WEAPON_TO_CHAR wz1_tong[1] WEAPONTYPE_MICRO_UZI 5000 START_PLAYBACK_RECORDED_CAR wz1_carattack[0] 136 // SET_CAR_FORWARD_SPEED wz1_carattack[0] 25.0 // TASK_CAR_DRIVE_TO_COORD wz1_tong[0] wz1_carattack[0] -2245.4707 630.0079 48.4375 25.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH // TASK_PLAY_ANIM scplayer CAR_Sc1_FL CAR_CHAT 4.0 FALSE FALSE FALSE FALSE -1 // TASK_TOGGLE_PED_THREAT_SCANNER wz1_tong[15] 1 1 1 CREATE_CAR SENTINEL -2251.6763 612.6026 42.2590 wz1_carattack[1] SET_CAR_HEADING wz1_carattack[1] 0.0 CREATE_CHAR_INSIDE_CAR wz1_carattack[1] PEDTYPE_MISSION1 DNB1 wz1_tong[2] CREATE_CHAR_AS_PASSENGER wz1_carattack[1] PEDTYPE_MISSION1 DNB2 0 wz1_tong[3] GIVE_WEAPON_TO_CHAR wz1_tong[3] WEAPONTYPE_MICRO_UZI 5000 // TASK_TOGGLE_PED_THREAT_SCANNER wz1_tong[17] 1 1 1 SET_CHAR_DECISION_MAKER wz1_tong[0] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[1] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[2] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[3] wz1_ped_decisions CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE wz1_ped_decisions EVENT_ACQUAINTANCE_PED_HATE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE wz1_ped_decisions EVENT_VEHICLE_ON_FIRE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE wz1_ped_decisions EVENT_ACQUAINTANCE_PED_HATE TASK_SIMPLE_GANG_DRIVEBY 0.0 100.0 0.0 0.0 TRUE FALSE wz1_cut_flag = 7 wz1_cut_time = TIMERA + 2600 ENDIF ENDIF ENDIF ENDIF IF wz1_cut_flag = 7 IF TIMERA > wz1_cut_time SET_FIXED_CAMERA_POSITION -2217.8694 642.1810 49.7208 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2218.8203 642.4485 49.5654 JUMP_CUT wz1_cut_flag = 8 ENDIF ENDIF IF wz1_cut_flag = 8 IF NOT IS_CAR_DEAD wz1_carattack[0] AND NOT IS_CHAR_DEAD wz1_tong[0] GET_CAR_COORDINATES wz1_carattack[0] x y z IF y < 653.8901 // TASK_CAR_TEMP_ACTION wz1_tong[0] wz1_carattack[0] TEMPACT_HANDBRAKESTRAIGHT 3000 wz1_cut_flag = 9 ENDIF ENDIF ENDIF IF wz1_cut_flag = 9 IF IS_CHAR_IN_ANY_CAR scplayer IF NOT IS_CAR_DEAD wz1_getaway_car // SET_CAR_TEMP_ACTION wz1_getaway_car TEMPACT_REVERSE 20000 ENDIF TASK_PLAY_ANIM scplayer CAR_Sc1_FL CAR_CHAT 4.0 FALSE FALSE FALSE FALSE 3000 play_audio = 60 wz1_cut_flag = 10 wz1_cut_time = TIMERA + 3200 ENDIF ENDIF IF wz1_cut_flag = 10 IF TIMERA > wz1_cut_time IF NOT IS_CAR_DEAD wz1_getaway_car SET_CAR_HEAVY wz1_getaway_car TRUE START_PLAYBACK_RECORDED_CAR wz1_getaway_car 138 IF NOT IS_CAR_DEAD wz1_carattack[0] // STOP_RECORDING_CAR wz1_carattack[0] STOP_PLAYBACK_RECORDED_CAR wz1_carattack[0] START_PLAYBACK_RECORDED_CAR wz1_carattack[0] 137 ENDIF // TASK_CAR_TEMP_ACTION scplayer wz1_getaway_car TEMPACT_REVERSE 20000 wz1_cut_flag = 11 wz1_cut_time = TIMERA + 2000 ENDIF ENDIF ENDIF IF wz1_cut_flag = 11 IF TIMERA > wz1_cut_time SET_FIXED_CAMERA_POSITION -2251.0203 649.9792 52.2440 0.0 0.0 0.0 IF NOT IS_CAR_DEAD wz1_carattack[0] GET_CAR_COORDINATES wz1_carattack[0] x y z POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF REPORT_MISSION_AUDIO_EVENT_AT_POSITION -2243.9182 642.9590 49.6897 SOUND_CAR_SMASH_CAR wz1_cut_flag = 12 wz1_cut_time = TIMERA + 800 ENDIF ENDIF IF wz1_cut_flag = 12 IF TIMERA > wz1_cut_time wz1_cam_time_start = TIMERA wz1_cut_flag = 13 LVAR_FLOAT gap_x gap_y LVAR_INT wz1_cam_time_start wz1_time_change wz1_cut_time = TIMERA + 2500 ENDIF ENDIF IF wz1_cut_flag = 13 wz1_time_change = TIMERA - wz1_cam_time_start wz1_float1 =# wz1_time_change wz1_float2 = wz1_float1 / 2500.0 IF NOT IS_CAR_DEAD wz1_getaway_car AND NOT IS_CAR_DEAD wz1_carattack[0] GET_CAR_COORDINATES wz1_carattack[0] x y z GET_CAR_COORDINATES wz1_getaway_car wuzi_x wuzi_y wuzi_z gap_x = wuzi_x - x gap_y = wuzi_y - y gap_x *= wz1_float2 gap_y *= wz1_float2 gap_x /= 2.0 gap_y /= 2.0 gap_x += x gap_y += y POINT_CAMERA_AT_POINT gap_x gap_y z JUMP_CUT ENDIF IF TIMERA > wz1_cut_time wz1_cut_flag = 14 ENDIF ENDIF IF wz1_cut_flag = 14 SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT IF NOT IS_CAR_DEAD wz1_getaway_car SET_CAR_HEAVY wz1_getaway_car FALSE SET_CAR_PROOFS wz1_getaway_car FALSE FALSE FALSE FALSE FALSE ENDIF wz1_flag = 8 wz1_scene_flag = 0 play_audio = 63 REMOVE_BLIP wz1_wuzi_blip // IF NOT IS_CHAR_DEAD wz1_wuzi // MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 // SET_GROUP_MEMBER players_group wz1_wuzi // LISTEN_TO_PLAYER_GROUP_COMMANDS wz1_wuzi FALSE // ENDIF // wuzi_in_group = 1 ENDIF RETURN // ***************************************************************************************** // ****************************** Destroy attacking Tong cars ****************************** // ***************************************************************************************** wz1_scene4: IF wz1_scene_flag = 0 SET_POLICE_IGNORE_PLAYER Player1 OFF SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 IF NOT IS_CHAR_DEAD wz1_wuzi SET_CHAR_RELATIONSHIP wz1_wuzi ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 SET_CHAR_SHOOT_RATE wz1_wuzi 80 GIVE_WEAPON_TO_CHAR wz1_wuzi WEAPONTYPE_MICRO_UZI 99999 ENDIF IF NOT IS_CAR_DEAD wz1_getaway_car IF NOT IS_CAR_DEAD wz1_carattack[0] AND NOT IS_CHAR_DEAD wz1_tong[0] TASK_CAR_MISSION wz1_tong[0] wz1_carattack[0] wz1_getaway_car MISSION_RAMPLAYER_FARAWAY 20.0 DRIVINGMODE_PLOUGHTHROUGH // SET_CAR_CRUISE_SPEED wz1_carattack[0] 20.0 // SET_CAR_MISSION wz1_carattack[0] MISSION_RAMPLAYER_FARAWAY SET_CAR_HEALTH wz1_carattack[0] 800 ADD_BLIP_FOR_CHAR wz1_tong[0] wz1_car_blip[0] ENDIF IF NOT IS_CAR_DEAD wz1_carattack[1] AND NOT IS_CHAR_DEAD wz1_tong[2] TASK_CAR_MISSION wz1_tong[2] wz1_carattack[1] wz1_getaway_car MISSION_RAMPLAYER_FARAWAY 20.0 DRIVINGMODE_PLOUGHTHROUGH // SET_CAR_CRUISE_SPEED wz1_carattack[1] 20.0 // SET_CAR_MISSION wz1_carattack[1] MISSION_RAMPLAYER_FARAWAY SET_CAR_HEALTH wz1_carattack[1] 800 ADD_BLIP_FOR_CHAR wz1_tong[2] wz1_car_blip[1] ENDIF ENDIF IF NOT IS_CAR_DEAD wz1_getaway_car SET_CAR_HEALTH wz1_getaway_car 3000 SET_CAN_BURST_CAR_TYRES wz1_getaway_car FALSE ENDIF wz1_car_alive[0] = 1 wz1_car_alive[1] = 1 check_wuzi_in_group = 1 wuzi_in_group = 0 wz1_scene_flag = 1 SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 ENDIF // Checks while Wuzi attempts to blow up attacking enemy cars. IF wz1_scene_flag = 1 //If player gets out car make Wuzi follow LVAR_INT wuzi_command wz1_thats_one_down IF wuzi_command = 0 IF play_audio = 0 wuzi_command = 1 PRINT WZ1_37 4000 1 ENDIF ENDIF IF wz1_car_alive[0] = 1 IF IS_CHAR_DEAD wz1_tong[0] IF wz1_thats_one_down = 0 wz1_thats_one_down = 1 play_audio = 64 ENDIF REMOVE_BLIP wz1_car_blip[0] wz1_car_alive[0] = 0 ENDIF ENDIF IF wz1_car_alive[1] = 1 IF IS_CHAR_DEAD wz1_tong[2] IF wz1_thats_one_down = 0 wz1_thats_one_down = 1 play_audio = 64 ENDIF REMOVE_BLIP wz1_car_blip[1] wz1_car_alive[1] = 0 ENDIF ENDIF IF wz1_car_alive[0] = 0 AND wz1_car_alive[1] = 0 IF NOT IS_CHAR_DEAD wz1_wuzi IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer wz1_wuzi 5.0 5.0 5.0 FALSE play_audio = 65 play_audio_for = 3 wz1_scene_flag = 2 REMOVE_BLIP wz1_goto_blip ADD_BLIP_FOR_COORD -2151.5891 639.5962 51.218 wz1_goto_blip check_wuzi_in_group = 1 wuzi_in_group = 0 ENDIF ENDIF ENDIF ENDIF IF wz1_scene_flag = 2 IF play_audio = 0 LVAR_INT wz1_instructions IF wz1_instructions = 0 wz1_instructions = 1 PRINT WZ1_39 4000 1 ENDIF ENDIF IF wuzi_in_group = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2150.1650 642.3364 51.2188 4.0 4.0 4.0 TRUE IF NOT IS_CHAR_DEAD wz1_wuzi IF LOCATE_CHAR_ANY_MEANS_3D wz1_wuzi -2150.1650 642.3364 51.2188 8.0 8.0 8.0 FALSE wz1_flag = 9 wz1_cut_flag = 0 play_audio = 68 ENDIF ENDIF ENDIF ENDIF ENDIF RETURN // ***************************************************************************************** // ************* Wuzi gets out car - fade - game over ************************************** // ***************************************************************************************** wz1_cutscene_5: IF wz1_cut_flag = 0 check_wuzi_in_group = 0 SET_PLAYER_CONTROL player1 OFF IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer car TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF wz1_cut_time = TIMERA + 3000 wz1_cut_flag = 1 ENDIF IF wz1_cut_flag = 1 IF play_audio = 0 SET_FIXED_CAMERA_POSITION -2156.8723 649.7653 51.6094 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2156.3618 648.9217 51.7758 JUMP_CUT SWITCH_WIDESCREEN ON IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer car SET_CAR_COORDINATES car -2150.1650 642.3364 51.2188 SET_CAR_HEADING car 0.0 ENDIF IF NOT IS_CHAR_DEAD wz1_wuzi FLUSH_ROUTE EXTEND_ROUTE -2155.1499 645.1982 51.2293 EXTEND_ROUTE -2162.0232 645.1555 51.7499 IF IS_CHAR_IN_ANY_CAR wz1_wuzi REMOVE_CHAR_FROM_GROUP wz1_wuzi OPEN_SEQUENCE_TASK wz1_seq TASK_LEAVE_ANY_CAR -1 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN 0 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq ELSE TASK_FOLLOW_POINT_ROUTE wz1_wuzi PEDMOVE_RUN 0 ENDIF ENDIF wz1_cut_flag = 2 wz1_cut_time = TIMERA + 5000 ENDIF ENDIF IF wz1_cut_flag = 2 IF TIMERA > wz1_cut_time SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF IF NOT IS_CHAR_DEAD wz1_wuzi DELETE_CHAR wz1_wuzi ENDIF wz1_wuzi_alive = 0 SET_PLAYER_CONTROL PLAYER1 ON wz1_flag = 10 ENDIF ENDIF RETURN tong_events: IF wz1_tong_event > 0 wz1_i = 0 wz1_dead_tong_wave3 = 0 WHILE wz1_i < 18 IF DOES_CHAR_EXIST wz1_tong[wz1_i] IF IS_CHAR_DEAD wz1_tong[wz1_i] REMOVE_BLIP wz1_tong_blip[wz1_i] IF wz1_i > 7 wz1_dead_tong_wave3 ++ ENDIF ENDIF ENDIF wz1_i ++ ENDWHILE ENDIF IF wz1_tong_event = 1 IF player_y < 676.0 OR wuzi_y < 676.0 CREATE_CAR SANCHEZ -2191.2742 644.4189 48.4453 wz1_tongcar[1] CREATE_CAR SANCHEZ -2200.2051 644.3219 48.4429 wz1_tongcar[2] SET_CAR_HEADING wz1_tongcar[1] 270.0 SET_CAR_HEADING wz1_tongcar[2] 270.0 MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ REQUEST_CAR_RECORDING 139 CREATE_CHAR_INSIDE_CAR wz1_tongcar[1] PEDTYPE_MISSION1 DNB3 wz1_tong[4] CREATE_CHAR_AS_PASSENGER wz1_tongcar[1] PEDTYPE_MISSION1 DNB1 0 wz1_tong[5] CREATE_CHAR_INSIDE_CAR wz1_tongcar[2] PEDTYPE_MISSION1 DNB2 wz1_tong[6] CREATE_CHAR_AS_PASSENGER wz1_tongcar[2] PEDTYPE_MISSION1 DNB3 0 wz1_tong[7] MARK_MODEL_AS_NO_LONGER_NEEDED DNB1 MARK_MODEL_AS_NO_LONGER_NEEDED DNB2 GIVE_WEAPON_TO_CHAR wz1_tong[4] WEAPONTYPE_MICRO_UZI 500 GIVE_WEAPON_TO_CHAR wz1_tong[5] WEAPONTYPE_MICRO_UZI 500 GIVE_WEAPON_TO_CHAR wz1_tong[6] WEAPONTYPE_MICRO_UZI 500 GIVE_WEAPON_TO_CHAR wz1_tong[7] WEAPONTYPE_MICRO_UZI 500 SET_CHAR_ACCURACY wz1_tong[4] 80 SET_CHAR_ACCURACY wz1_tong[5] 85 SET_CHAR_ACCURACY wz1_tong[6] 90 SET_CHAR_ACCURACY wz1_tong[7] 85 ADD_BLIP_FOR_CHAR wz1_tong[4] wz1_tong_blip[4] ADD_BLIP_FOR_CHAR wz1_tong[5] wz1_tong_blip[5] ADD_BLIP_FOR_CHAR wz1_tong[6] wz1_tong_blip[6] ADD_BLIP_FOR_CHAR wz1_tong[7] wz1_tong_blip[7] SET_CHAR_DROPS_WEAPONS_WHEN_DEAD wz1_tong[4] FALSE SET_CHAR_DROPS_WEAPONS_WHEN_DEAD wz1_tong[5] FALSE SET_CHAR_DROPS_WEAPONS_WHEN_DEAD wz1_tong[6] FALSE SET_CHAR_DROPS_WEAPONS_WHEN_DEAD wz1_tong[7] FALSE SET_CAR_FORWARD_SPEED wz1_tongcar[1] 20.0 SET_CAR_FORWARD_SPEED wz1_tongcar[2] 20.0 SET_CHAR_DECISION_MAKER wz1_tong[4] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[5] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[6] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[7] wz1_ped_decisions SET_SENSE_RANGE wz1_tong[4] 40.0 SET_SENSE_RANGE wz1_tong[5] 40.0 SET_SENSE_RANGE wz1_tong[6] 40.0 SET_SENSE_RANGE wz1_tong[7] 40.0 SET_INFORM_RESPECTED_FRIENDS wz1_tong[4] 30.0 8 SET_INFORM_RESPECTED_FRIENDS wz1_tong[5] 30.0 8 SET_INFORM_RESPECTED_FRIENDS wz1_tong[6] 30.0 8 SET_INFORM_RESPECTED_FRIENDS wz1_tong[7] 30.0 8 TASK_KINDA_STAY_IN_SAME_PLACE wz1_tong[4] TRUE TASK_KINDA_STAY_IN_SAME_PLACE wz1_tong[5] TRUE TASK_KINDA_STAY_IN_SAME_PLACE wz1_tong[6] TRUE TASK_KINDA_STAY_IN_SAME_PLACE wz1_tong[7] TRUE // CREATE_GROUP DEFAULT_TASK_ALLOCATOR_STAND_STILL wz1_tong_group // SET_GROUP_LEADER wz1_tong_group wz1_tong[4] // SET_GROUP_MEMBER wz1_tong_group wz1_tong[5] // SET_GROUP_MEMBER wz1_tong_group wz1_tong[6] // SET_GROUP_MEMBER wz1_tong_group wz1_tong[7] OPEN_SEQUENCE_TASK wz1_seq TASK_CAR_DRIVE_TO_COORD -1 wz1_tongcar[1] -2177.1646 645.6417 48.4453 15.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_TEMP_ACTION -1 wz1_tongcar[1] TEMPACT_HANDBRAKETURNLEFT 2000 TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 -2172.8650 652.5621 48.4429 PEDMOVE_RUN 4000 TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_tong[4] wz1_seq CLEAR_SEQUENCE_TASK wz1_seq OPEN_SEQUENCE_TASK wz1_seq TASK_CAR_DRIVE_TO_COORD -1 wz1_tongcar[2] -2174.8108 644.3727 48.4453 15.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_TEMP_ACTION -1 wz1_tongcar[2] TEMPACT_HANDBRAKETURNLEFT 2000 TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 -2176.9900 650.9326 48.4429 PEDMOVE_RUN 3000 TASK_TOGGLE_DUCK -1 TRUE CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_tong[6] wz1_seq CLEAR_SEQUENCE_TASK wz1_seq wz1_tong_event = 2 ENDIF ENDIF IF wz1_tong_event = 2 wz1_var1 = 0 IF NOT IS_CHAR_DEAD wz1_tong[4] GET_CAR_CHAR_IS_USING wz1_tong[4] wz1_var1 ENDIF IF wz1_var1 = -1 OR IS_CHAR_DEAD wz1_tong[4] IF NOT IS_CHAR_DEAD wz1_tong[5] IF IS_CHAR_IN_ANY_CAR wz1_tong[5] TASK_LEAVE_ANY_CAR wz1_tong[5] ENDIF ENDIF IF NOT IS_CHAR_DEAD wz1_tong[6] IF IS_CHAR_IN_ANY_CAR wz1_tong[6] TASK_LEAVE_ANY_CAR wz1_tong[6] ENDIF ENDIF IF NOT IS_CHAR_DEAD wz1_tong[7] IF IS_CHAR_IN_ANY_CAR wz1_tong[7] TASK_LEAVE_ANY_CAR wz1_tong[7] ENDIF ENDIF wz1_tong_event = 3 ENDIF ENDIF IF wz1_tong_event = 4 // tong hiding behind corner rolls out IF wz1_tong_rolls_out = 0 IF NOT IS_CHAR_DEAD wz1_tong[13] IF player_x < -2193.0 OR wuzi_x < -2193.0 wz1_tong_rolls_out = 1 OPEN_SEQUENCE_TASK wz1_seq TASK_PLAY_ANIM -1 Crouch_Roll_R PED 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_TOGGLE_DUCK -1 TRUE CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_tong[13] wz1_seq CLEAR_SEQUENCE_TASK wz1_seq ENDIF ENDIF ENDIF // tong attack player hard if he gets in a vehicle IF IS_CHAR_IN_AREA_3D scplayer -2171.8572 658.2869 52.1667 -2240.3035 631.7034 48.0251 FALSE IF IS_CHAR_IN_ANY_CAR scplayer IF wz1_player_in_car = 0 wz1_player_in_car = 1 wz1_i = 9 WHILE wz1_i < 13 IF NOT IS_CHAR_DEAD wz1_tong[wz1_i] SET_CHAR_ACCURACY wz1_tong[wz1_i] 100 TASK_SHOOT_AT_CHAR wz1_tong[wz1_i] scplayer -2 ENDIF wz1_i ++ ENDWHILE ENDIF ELSE IF wz1_player_in_car = 1 wz1_player_in_car = 0 wz1_i = 9 WHILE wz1_i < 13 IF NOT IS_CHAR_DEAD wz1_tong[wz1_i] SET_CHAR_ACCURACY wz1_tong[wz1_i] 80 CLEAR_CHAR_TASKS wz1_tong[wz1_i] ENDIF wz1_i ++ ENDWHILE ENDIF ENDIF ENDIF // tong slowly advance down the alley IF wz1_advance_flag = 0 IF TIMERA > wz1_advance_time GENERATE_RANDOM_INT_IN_RANGE 9 13 wz1_i wz1_exit = 0 WHILE wz1_exit < 4 wz1_int = wz1_i - 9 IF NOT IS_CHAR_DEAD wz1_tong[wz1_i] AND wz1_tong_advanced[wz1_int] = 0 wz1_tong_advanced[wz1_int] = 1 FLUSH_ROUTE EXTEND_ROUTE wz1_tong_node_x[wz1_int] wz1_tong_node_y[wz1_int] wz1_tong_node_z[wz1_int] EXTEND_ROUTE wz1_tong_advance_x[wz1_int] wz1_tong_advance_y[wz1_int] wz1_tong_advance_z[wz1_int] TASK_FOLLOW_POINT_ROUTE wz1_tong[wz1_i] PEDMOVE_RUN FOLLOW_ROUTE_ONCE wz1_exit = 4 ELSE wz1_i ++ IF wz1_i > 12 wz1_i = 9 ENDIF ENDIF wz1_exit ++ ENDWHILE wz1_advance_time = TIMERA + 10000 ENDIF ENDIF // more tong turn up when player runs beyond a certain point or has killed a certain number of existing tong IF wz1_create_tong_wave3 = 0 IF player_x < -2197.0 OR wz1_dead_tong_wave3 > 1 wz1_create_tong_wave3 = 1 CREATE_CHAR PEDTYPE_MISSION1 DNB3 -2205.8611 625.2820 48.4396 wz1_tong[14] CREATE_CHAR PEDTYPE_MISSION1 DNB1 -2207.0764 627.3953 48.4384 wz1_tong[15] GIVE_WEAPON_TO_CHAR wz1_tong[14] WEAPONTYPE_MICRO_UZI 500 GIVE_WEAPON_TO_CHAR wz1_tong[15] WEAPONTYPE_MICRO_UZI 500 FLUSH_ROUTE EXTEND_ROUTE -2205.8076 626.6268 48.4429 EXTEND_ROUTE -2205.8489 635.5339 48.4453 TASK_FOLLOW_POINT_ROUTE wz1_tong[14] PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE EXTEND_ROUTE -2205.8076 626.6268 48.4429 EXTEND_ROUTE -2204.5803 634.2507 48.4453 TASK_FOLLOW_POINT_ROUTE wz1_tong[15] PEDMOVE_RUN FOLLOW_ROUTE_ONCE CREATE_CAR SENTINEL -2267.3218 659.5334 48.2969 wz1_getaway_car SET_CAR_PROOFS wz1_getaway_car TRUE TRUE TRUE TRUE TRUE SET_CAR_HEADING wz1_getaway_car 344.0 LOCK_CAR_DOORS wz1_getaway_car CARLOCK_LOCKOUT_PLAYER_ONLY CREATE_CHAR_INSIDE_CAR wz1_getaway_car PEDTYPE_MISSION1 DNB1 wz1_tong[16] CREATE_CHAR_AS_PASSENGER wz1_getaway_car PEDTYPE_MISSION1 DNB2 0 wz1_tong[17] GIVE_WEAPON_TO_CHAR wz1_tong[16] WEAPONTYPE_MICRO_UZI 500 GIVE_WEAPON_TO_CHAR wz1_tong[17] WEAPONTYPE_MICRO_UZI 500 SET_CHAR_DECISION_MAKER wz1_tong[14] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[15] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[16] wz1_ped_decisions SET_CHAR_DECISION_MAKER wz1_tong[17] wz1_ped_decisions ADD_BLIP_FOR_CHAR wz1_tong[14] wz1_tong_blip[14] ADD_BLIP_FOR_CHAR wz1_tong[15] wz1_tong_blip[15] ADD_BLIP_FOR_CHAR wz1_tong[16] wz1_tong_blip[16] ADD_BLIP_FOR_CHAR wz1_tong[17] wz1_tong_blip[17] SET_SENSE_RANGE wz1_tong[14] 40.0 SET_SENSE_RANGE wz1_tong[15] 40.0 SET_SENSE_RANGE wz1_tong[16] 40.0 SET_SENSE_RANGE wz1_tong[17] 40.0 SET_INFORM_RESPECTED_FRIENDS wz1_tong[14] 30.0 8 SET_INFORM_RESPECTED_FRIENDS wz1_tong[15] 30.0 8 SET_INFORM_RESPECTED_FRIENDS wz1_tong[16] 30.0 8 SET_INFORM_RESPECTED_FRIENDS wz1_tong[17] 30.0 8 START_PLAYBACK_RECORDED_CAR wz1_getaway_car 139 ENDIF ENDIF IF wz1_create_tong_wave3 = 1 IF NOT IS_CAR_DEAD wz1_getaway_car GET_CAR_COORDINATES wz1_getaway_car x y z IF x > -2227.0 wz1_create_tong_wave3 = 2 IF NOT IS_CHAR_DEAD wz1_tong[16] FLUSH_ROUTE EXTEND_ROUTE -2214.6328 642.2872 48.447 OPEN_SEQUENCE_TASK wz1_seq TASK_LEAVE_ANY_CAR -1 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_tong[16] wz1_seq CLEAR_SEQUENCE_TASK wz1_seq ENDIF IF NOT IS_CHAR_DEAD wz1_tong[16] FLUSH_ROUTE EXTEND_ROUTE -2214.3730 639.3536 48.4511 OPEN_SEQUENCE_TASK wz1_seq TASK_LEAVE_ANY_CAR -1 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_tong[17] wz1_seq CLEAR_SEQUENCE_TASK wz1_seq ENDIF ENDIF ENDIF ENDIF IF wz1_create_tong_wave3 = 2 IF NOT IS_CAR_DEAD wz1_getaway_car IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR wz1_getaway_car wz1_create_tong_wave3 = 3 FREEZE_CAR_POSITION wz1_getaway_car TRUE ENDIF ENDIF ENDIF ENDIF RETURN wuzi_comments: IF NOT IS_CHAR_DEAD wz1_wuzi LVAR_INT insults_given wuzi_i last_wuzi_insult_time IF IS_CHAR_SHOOTING wz1_wuzi // OR wuzi_been_hit = 1 IF TIMERA > last_wuzi_insult_time IF play_audio = 0 IF insults_given < 6 GENERATE_RANDOM_INT_IN_RANGE 0 6 wuzi_i WHILE wuzi_insult[wuzi_i] = 0 wuzi_i ++ IF wuzi_i > 5 wuzi_i = 0 ENDIF ENDWHILE insults_given ++ play_audio = wuzi_insult[wuzi_i] wuzi_insult[wuzi_i] = 0 wuzi_been_hit = 0 last_wuzi_insult_time = TIMERA + 8000 ENDIF ENDIF ENDIF ENDIF ENDIF RETURN wuzi_events: /* IF NOT IS_CHAR_DEAD wz1_wuzi // LVAR_INT insults_given wuzi_i last_wuzi_insult_time IF IS_CHAR_SHOOTING wz1_wuzi OR wuzi_been_hit = 1 IF TIMERA > last_wuzi_insult_time IF play_audio = 0 IF insults_given < 6 GENERATE_RANDOM_INT_IN_RANGE 0 6 wuzi_i WHILE wuzi_insult[wuzi_i] = 0 wuzi_i ++ IF wuzi_i > 5 wuzi_i = 0 ENDIF ENDWHILE insults_given ++ play_audio = wuzi_insult[wuzi_i] wuzi_insult[wuzi_i] = 0 wuzi_been_hit = 0 last_wuzi_insult_time = TIMERA + 8000 ENDIF ENDIF ENDIF ENDIF IF wz1_escape_flag = 0 REQUEST_ANIMATION SWAT wz1_escape_flag = 1 ENDIF IF wz1_escape_flag = 1 IF HAS_ANIMATION_LOADED SWAT wz1_escape_flag = 2 ENDIF ENDIF IF wz1_escape_flag = 2 AND NOT IS_MESSAGE_BEING_DISPLAYED play_audio = 30 play_audio_for = 2 OPEN_SEQUENCE_TASK wz1_seq TASK_GO_STRAIGHT_TO_COORD -1 -2179.8970 695.2466 52.8984 PEDMOVE_RUN -2 TASK_ACHIEVE_HEADING -1 180.0 TASK_PLAY_ANIM -1 swt_wllpk_R SWAT 8.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq wz1_escape_flag = 3 ENDIF IF wz1_escape_flag = 3 GET_SCRIPT_TASK_STATUS wz1_wuzi PERFORM_SEQUENCE_TASK wz1_task_progress IF wz1_task_progress = FINISHED_TASK AND play_audio = 0 play_audio = 34 SET_SENSE_RANGE wz1_wuzi 15.0 // PRINT wz1_18 3000 1 OPEN_SEQUENCE_TASK wz1_seq TASK_GO_STRAIGHT_TO_COORD -1 -2173.8037 686.5518 52.8963 PEDMOVE_RUN -2 TASK_TOGGLE_DUCK -1 TRUE TASK_SHOOT_AT_COORD -1 -2177.3369 678.3412 54.594 3000 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq wz1_escape_flag = 4 wz1_escape_timer = TIMERA + 8000 ENDIF ENDIF IF wz1_escape_flag = 4 IF TIMERA > wz1_escape_timer FLUSH_ROUTE EXTEND_ROUTE -2175.0884 686.2910 52.8953 EXTEND_ROUTE -2176.9126 672.3929 51.4392 OPEN_SEQUENCE_TASK wz1_seq TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_WALK 0 TASK_SHOOT_AT_COORD -1 -2174.8970 648.7093 50.2127 3000 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_Seq wz1_escape_timer = TIMERA + 10000 wz1_escape_flag = 5 ENDIF ENDIF IF wz1_escape_flag = 5 IF TIMERA > wz1_escape_timer OPEN_SEQUENCE_TASK wz1_seq TASK_GO_STRAIGHT_TO_COORD -1 -2178.0400 662.1946 48.6751 PEDMOVE_RUN -2 TASK_SHOOT_AT_COORD -1 -2174.5613 642.6210 50.3702 3000 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_Seq wz1_escape_timer = TIMERA + 10000 wz1_escape_flag = 6 ENDIF ENDIF IF wz1_escape_flag = 6 IF TIMERA > wz1_escape_timer OPEN_SEQUENCE_TASK wz1_seq TASK_GO_STRAIGHT_TO_COORD -1 -2178.7188 649.5121 48.4429 PEDMOVE_RUN -2 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_Seq wz1_escape_flag = 7 ENDIF ENDIF IF wz1_escape_flag = 8 wz1_escape_timer = TIMERA + 5000 wz1_escape_flag = 9 ENDIF IF wz1_escape_flag = 9 IF TIMERA > wz1_escape_timer wz1_escape_flag = 11 wz1_escape_timer = TIMERA + 3000 ENDIF ENDIF IF wz1_escape_flag = 11 IF TIMERA > wz1_escape_timer wz1_escape_flag = 12 ENDIF ENDIF IF wz1_escape_flag = 12 IF NOT IS_CHAR_DEAD wz1_wuzi AND play_audio = 0 play_audio = 44 OPEN_SEQUENCE_TASK wz1_seq2 TASK_TOGGLE_DUCK -1 FALSE TASK_SHOOT_AT_COORD -1 -2210.0557 640.7878 49.6149 3000 TASK_TOGGLE_DUCK -1 TRUE TASK_PAUSE -1 2000 SET_SEQUENCE_TO_REPEAT wz1_seq2 2 CLOSE_SEQUENCE_TASK wz1_seq2 OPEN_SEQUENCE_TASK wz1_seq TASK_FOLLOW_PATH_NODES_TO_COORD -1 -2191.2148 645.9471 48.445 PEDMOVE_WALK -2 PERFORM_SEQUENCE_TASK -1 wz1_seq2 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq CLEAR_SEQUENCE_TASK wz1_seq2 wz1_escape_flag = 13 ENDIF ENDIF IF wz1_escape_flag = 13 IF NOT IS_CHAR_DEAD wz1_wuzi GET_SCRIPT_TASK_STATUS wz1_wuzi PERFORM_SEQUENCE_TASK wz1_task_status IF wz1_task_status = FINISHED_TASK wz1_escape_timer = TIMERA + 5000 wz1_escape_flag = 14 ENDIF ENDIF ENDIF IF wz1_escape_flag = 14 IF TIMERA > wz1_escape_timer wz1_escape_flag = 16 ENDIF ENDIF IF wz1_escape_flag = 15 IF TIMERA > wz1_escape_timer wz1_escape_flag = 16 ENDIF ENDIF IF wz1_escape_flag = 16 IF NOT IS_CHAR_DEAD wz1_wuzi AND play_audio = 0 CLEAR_HELP play_audio = 45 OPEN_SEQUENCE_TASK wz1_seq2 TASK_TOGGLE_DUCK -1 FALSE TASK_SHOOT_AT_COORD -1 -2212.8311 641.2944 50.2922 3000 TASK_TOGGLE_DUCK -1 TRUE TASK_PAUSE -1 2000 SET_SEQUENCE_TO_REPEAT wz1_seq2 2 CLOSE_SEQUENCE_TASK wz1_seq2 OPEN_SEQUENCE_TASK wz1_seq TASK_FOLLOW_PATH_NODES_TO_COORD -1 -2200.2542 639.6259 48.4453 PEDMOVE_WALK -2 PERFORM_SEQUENCE_TASK -1 wz1_seq2 CLOSE_SEQUENCE_TASK wz1_seq PERFORM_SEQUENCE_TASK wz1_wuzi wz1_seq CLEAR_SEQUENCE_TASK wz1_seq CLEAR_SEQUENCE_TASK wz1_seq2 wz1_escape_flag = 17 ENDIF ENDIF ENDIF */ RETURN wuzi_health: IF wz1_calculate_wuzi_health = 1 IF NOT IS_CHAR_DEAD wz1_wuzi LVAR_INT old_health wuzi_been_hit old_health = wz1_health GET_CHAR_HEALTH wz1_wuzi wz1_health IF NOT wz1_health = old_health old_health = wz1_health wuzi_been_hit = 1 ENDIF wz1_health_bar = wz1_health * 100 wz1_health_bar /= 250 ENDIF ENDIF RETURN tong_threat_scan: /* IF TIMERA > wz1_next_tong_time wz1_next_tong_time = TIMERA + 100 wz1_r ++ IF wz1_r > 17 wz1_r = 0 ENDIF IF DOES_CHAR_EXIST wz1_tong[wz1_r] IF NOT IS_CHAR_DEAD wz1_tong[wz1_r] // CLEAR_CHAR_TASKS wz1_tong[wz1_r] GET_SCRIPT_TASK_STATUS wz1_tong[wz1_r] -1 wz1_task_Status wz1_i = 0 IF wz1_task_Status = FINISHED_TASK wz1_i = 1 ENDIF IF IS_CHAR_DUCKING wz1_tong[wz1_r] wz1_i = 1 ENDIF IF wz1_i = 1 IF NOT IS_CHAR_IN_ANY_CAR wz1_tong[wz1_r] IF NOT IS_CHAR_DEAD wz1_wuzi GET_CHAR_COORDINATES wz1_tong[wz1_r] x y z GET_DISTANCE_BETWEEN_COORDS_2D x y wuzi_x wuzi_y wz1_float1 GET_DISTANCE_BETWEEN_COORDS_2D x y player_X player_Y wz1_float2 wz1_float3 = wz1_float1 - wz1_float2 ABS wz1_float3 IF wz1_float3 < 4.0 GENERATE_RANDOM_INT_IN_RANGE 0 2 wz1_i IF wz1_i = 0 wz1_float1 += 5.0 ELSE wz1_float1 -= 5.0 ENDIF ENDIF IF NOT IS_CHAR_RESPONDING_TO_EVENT wz1_tong[wz1_r] EVENT_ACQUAINTANCE_PED_HATE wz1_tong_target[wz1_r] = 0 ENDIF IF wz1_float1 > wz1_float2 IF wz1_tong_target[wz1_r] = 1 OR wz1_tong_target[wz1_r] = 0 wz1_tong_target[wz1_r] = 2 //player CLEAR_ALL_CHAR_RELATIONSHIPS wz1_tong[wz1_r] ACQUAINTANCE_TYPE_PED_HATE CLEAR_ALL_CHAR_RELATIONSHIPS wz1_tong[wz1_r] ACQUAINTANCE_TYPE_PED_HATE //was like CLEAR_CHAR_TASKS wz1_tong[wz1_r] SET_CHAR_RELATIONSHIP wz1_tong[wz1_r] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP wz1_tong[wz1_r] ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION2 ENDIF ELSE IF wz1_tong_target[wz1_r] = 2 OR wz1_tong_target[wz1_r] = 0 wz1_tong_target[wz1_r] = 1 //player CLEAR_ALL_CHAR_RELATIONSHIPS wz1_tong[wz1_r] ACQUAINTANCE_TYPE_PED_HATE CLEAR_ALL_CHAR_RELATIONSHIPS wz1_tong[wz1_r] ACQUAINTANCE_TYPE_PED_HATE //was like CLEAR_CHAR_TASKS wz1_tong[wz1_r] SET_CHAR_RELATIONSHIP wz1_tong[wz1_r] ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP wz1_tong[wz1_r] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF */ RETURN // //tong_attack: // // // // IF TIMERA > wz1_tong_group_attack_time // IF NOT IS_CHAR_DEAD wz1_wuzi // wz1_tong_group_attack_time = TIMERA + 300 // wz_i = 0 // WHILE wz_i < wz1_upper_check // // IF NOT IS_CHAR_DEAD wz1_tong[wz_i] // IF TIMERA > wz1_this_tong_attack_time[wz_i] // GENERATE_RANDOM_INT_IN_RANGE 0 3000 wz1_random // wz1_this_tong_attack_time[wz_i] = 3000 + wz1_random // wz1_this_tong_attack_time[wz_i] += TIMERA // GENERATE_RANDOM_INT_IN_RANGE 0 2 wz1_random // IF wz1_random = 0 // IF HAS_CHAR_SPOTTED_CHAR wz1_tong[wz_i] scplayer // IF NOT wz1_tong_target[wz_i] = 1 // TASK_KILL_CHAR_ON_FOOT wz1_tong[wz_i] scplayer // wz1_tong_target[wz_i] = 1 // ENDIF // ELSE // IF NOT wz1_tong_target[wz_i] = 1 // TASK_KILL_CHAR_ON_FOOT wz1_tong[wz_i] wz1_wuzi // wz1_tong_target[wz_i] = 1 // ENDIF // ENDIF // ELSE // IF HAS_CHAR_SPOTTED_CHAR wz1_tong[wz_i] wz1_wuzi // IF NOT wz1_tong_target[wz_i] = 1 // TASK_KILL_CHAR_ON_FOOT wz1_tong[wz_i] wz1_wuzi // wz1_tong_target[wz_i] = 1 // ENDIF // ELSE // IF NOT wz1_tong_target[wz_i] = 1 // TASK_KILL_CHAR_ON_FOOT wz1_tong[wz_i] scplayer // wz1_tong_target[wz_i] = 1 // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // wz_i ++ // ENDWHILE // ENDIF // ENDIF // //RETURN wuzi1_audio: // SOUND EFFECTS WORK HERE IF NOT effect_to_play[0] = 0 IF effect_flag = 0 CLEAR_MISSION_AUDIO 3 LOAD_MISSION_AUDIO 3 effect_to_play[0] effect_flag = 1 ENDIF IF effect_flag = 1 IF HAS_MISSION_AUDIO_LOADED 3 IF TIMERA > effect_time_to_play[0] PLAY_MISSION_AUDIO 3 effect_flag = 2 ENDIF ENDIF ENDIF IF HAS_MISSION_AUDIO_FINISHED 3 IF effect_flag = 2 OR IS_SKIP_CUTSCENE_BUTTON_PRESSED CLEAR_MISSION_AUDIO 3 effect_to_play[0] = effect_to_play[1] effect_to_play[1] = 0 effect_time_to_play[0] = effect_time_to_play[1] effect_time_to_play[1] = 0 effect_flag = 0 ENDIF ENDIF ENDIF LVAR_INT effect_flag effect_to_play[2] effect_time_to_play[2] LVAR_INT play_timed_audio play_timed_audio_flag audio_time_start audio_timer_flag audio_time[20] audio_to_play[20] play_timed_audio_for LVAR_INT audio_plays_global // flag for peds do speech anims but dialogue not attached to ped. // play timed audio IF NOT play_timed_audio = 0 IF play_timed_audio_flag = 0 play_timed_audio_flag = 1 audio_time_start = TIMERA audio_timer_flag = 0 play_delay = audio_time_start + audio_time[audio_timer_flag] ENDIF IF play_timed_audio_flag = 1 IF TIMERA > play_delay AND play_audio = 0 play_audio = audio_to_play[audio_timer_flag] audio_timer_flag ++ play_timed_audio_for -- IF play_timed_audio_for = 0 play_timed_audio = 0 play_timed_audio_flag = 0 ELSE play_delay = audio_time_start + audio_time[audio_timer_flag] ENDIF ENDIF ENDIF ENDIF SWITCH audio_flag CASE 0 //first time game starts LVAR_TEXT_LABEL audio_text[100] LVAR_INT audio_sound[100] audio_slot[3] play_slot LVAR_INT next_audio LVAR_INT audio_flag play_audio play_audio_for VAR_INT play_audio_global // make sounds not attached to char LVAR_INT audio_for_char[100] audio_actor[7] play_audio_now LVAR_INT actor_int this_actor loaded_audio play_delay audio_i audio_char audio_count force_audio play_audio_delay // $audio_text[0] = &CAT4_BI IF audio_flag = 1 CREATE_CHAR PEDTYPE_GANG_GROVE SPECIAL01 2752.3408 -1948.8669 16.3125 this_actor CREATE_CHAR PEDTYPE_GANG_GROVE SPECIAL01 2752.3408 -1948.8669 16.3125 audio_char ENDIF audio_sound[1] = SOUND_WUZ1_AA audio_sound[2] = SOUND_WUZ1_AB audio_sound[3] = SOUND_WUZ1_CA audio_sound[4] = SOUND_WUZ1_CB audio_sound[5] = SOUND_WUZ1_CC audio_sound[6] = SOUND_WUZ1_CD audio_sound[7] = SOUND_WUZ1_CE audio_sound[8] = SOUND_WUZ1_CF audio_sound[9] = SOUND_WUZ1_CG audio_sound[10] = SOUND_WUZ1_CH audio_sound[11] = SOUND_WUZ1_DA audio_sound[12] = SOUND_WUZ1_DD audio_sound[13] = SOUND_WUZ1_DB audio_sound[14] = SOUND_WUZ1_DC audio_sound[15] = SOUND_WUZ1_LA audio_sound[16] = SOUND_WUZ1_LC audio_sound[17] = SOUND_WUZ1_KD audio_sound[18] = SOUND_WUZ1_MA audio_sound[19] = SOUND_WUZ1_MB audio_sound[20] = SOUND_WUZ1_MC audio_sound[21] = SOUND_WUZ1_MD audio_sound[22] = SOUND_WUZ1_ME audio_sound[23] = SOUND_WUZ1_MF audio_sound[24] = SOUND_WUZ1_MG audio_sound[25] = SOUND_WUZ1_MH audio_sound[26] = SOUND_WUZ1_MJ audio_sound[27] = SOUND_WUZ1_ audio_sound[28] = SOUND_WUZ1_ audio_sound[29] = SOUND_WUZ1_ audio_sound[30] = SOUND_WUZ1_NA audio_sound[31] = SOUND_WUZ1_NB audio_sound[32] = SOUND_WUZ1_NC audio_sound[33] = SOUND_WUZ1_ND audio_sound[34] = SOUND_WUZ1_NE audio_sound[35] = SOUND_WUZ1_NF audio_sound[36] = SOUND_WUZ1_NG audio_sound[37] = SOUND_WUZ1_NH audio_sound[38] = SOUND_WUZ1_NJ audio_sound[39] = SOUND_WUZ1_NK audio_sound[40] = SOUND_WUZ1_NL audio_sound[41] = SOUND_WUZ1_NM audio_sound[42] = SOUND_WUZ1_NN audio_sound[43] = SOUND_WUZ1_NO audio_sound[44] = SOUND_WUZ1_NP audio_sound[45] = SOUND_WUZ1_NQ audio_sound[46] = SOUND_WUZ1_OA audio_sound[47] = SOUND_WUZ1_OB audio_sound[48] = SOUND_WUZ1_OC audio_sound[49] = SOUND_WUZ1_OD audio_sound[50] = SOUND_WUZ1_OE audio_sound[51] = SOUND_WUZ1_OF audio_sound[52] = SOUND_WUZ1_OG audio_sound[53] = SOUND_WUZ1_OH audio_sound[54] = SOUND_WUZ1_OJ audio_sound[55] = SOUND_WUZ1_OK audio_sound[56] = SOUND_WUZ1_OL audio_sound[57] = SOUND_WUZ1_OM audio_sound[58] = SOUND_WUZ1_ON audio_sound[59] = SOUND_WUZ1_OO audio_sound[60] = SOUND_WUZ1_OP audio_sound[61] = SOUND_WUZ1_OQ audio_sound[62] = SOUND_WUZ1_OR audio_sound[63] = SOUND_WUZ1_PA audio_sound[64] = SOUND_WUZ1_PB audio_sound[65] = SOUND_WUZ1_QA audio_sound[66] = SOUND_WUZ1_RA audio_sound[67] = SOUND_WUZ1_QB audio_sound[68] = SOUND_WUZ1_RD audio_sound[69] = SOUND_WUZ1_EA audio_sound[70] = SOUND_WUZ1_EB audio_sound[71] = SOUND_WUZ1_EC audio_sound[72] = SOUND_WUZ1_EE audio_sound[73] = SOUND_WUZ1_GJ audio_sound[74] = SOUND_WUZ1_JA audio_sound[75] = SOUND_WUZ1_JB audio_sound[76] = SOUND_WUZ1_JC audio_sound[77] = SOUND_WUZ1_GC audio_sound[78] = SOUND_WUZ1_KA audio_sound[79] = SOUND_WUZ1_KB audio_sound[80] = SOUND_WUZ1_KC audio_sound[81] = SOUND_WUZ1_KD audio_sound[82] = SOUND_WUZ1_GE audio_sound[83] = SOUND_WUZ1_GF audio_sound[84] = SOUND_WUZ1_FA audio_sound[85] = SOUND_WUZ1_FB audio_sound[86] = SOUND_WUZ1_FC audio_sound[87] = SOUND_WUZ1_FD audio_sound[88] = SOUND_WUZ1_FE audio_sound[89] = SOUND_WUZ1_HA audio_sound[90] = SOUND_WUZ1_HB audio_sound[91] = SOUND_WUZ1_HC audio_sound[92] = SOUND_WUZ1_OM audio_sound[93] = SOUND_WUZ1_OK $audio_text[1] = &WUZ1_AA //We’ll need a ride – mine’s getting some bodywork done to it. $audio_text[2] = &WUZ1_AB //Ok, not a problem $audio_text[3] = &WUZ1_CA //The Blood Feather Triad have a storehouse around the block. $audio_text[4] = &WUZ1_CB //We shall see what excuses they have to offer. $audio_text[5] = &WUZ1_CC //Ok. So what’s all this talk of business? $audio_text[6] = &WUZ1_CD //Some small time Vietnamese gangs have been making trouble lately. $audio_text[7] = &WUZ1_CE //We’re not sure why they are gaining any courage now, but I’m nervous about the situation. $audio_text[9] = &WUZ1_CG //How do I fit in all of this? $audio_text[10] = &WUZ1_CH //You’re an outsider. $audio_text[11] = &WUZ1_DA //This is the place! $audio_text[12] = &WUZ1_DD //Come on, it’s this way. $audio_text[13] = &WUZ1_DB //What’s that smell? $audio_text[14] = &WUZ1_DC //Laundry. $audio_text[15] = &WUZ1_LA //Ah, we’re here! This way! $audio_text[16] = &WUZ1_LC //Drop by Emmet’s and get strapped! $audio_text[17] = &WUZ1_KD //Drop by Emmet’s and get strapped! $audio_text[18] = &WUZ1_MA //Drop by Emmet’s and get strapped! $audio_text[19] = &WUZ1_MB //Drop by Emmet’s and get strapped! $audio_text[20] = &WUZ1_MC //Drop by Emmet’s and get strapped! $audio_text[21] = &WUZ1_MD //Drop by Emmet’s and get strapped! $audio_text[22] = &WUZ1_ME //Drop by Emmet’s and get strapped! $audio_text[23] = &WUZ1_MF //Drop by Emmet’s and get strapped $audio_text[24] = &WUZ1_MG //Drop by Emmet’s and get strapped $audio_text[25] = &WUZ1_MH //Drop by Emmet’s and get strapped $audio_text[26] = &WUZ1_MJ //Drop by Emmet’s and get strapped $audio_text[28] = &WUZ1_MH //Drop by Emmet’s and get strapped! $audio_text[29] = &WUZ1_MJ //Drop by Emmet’s and get strapped! $audio_text[30] = &WUZ1_NA //The Triads must have vengeance! $audio_text[31] = &WUZ1_NB //CJ, follow me and stick close! $audio_text[32] = &WUZ1_NC //Ready? $audio_text[33] = &WUZ1_ND //DIE YOU MOTHERFUCKING SONS OF WHORES! $audio_text[34] = &WUZ1_NE //Looks clear to me, go! Go! $audio_text[35] = &WUZ1_NF //I think I got them all! $audio_text[36] = &WUZ1_NG //Hell’s sewers, that was a sniper bullet! $audio_text[37] = &WUZ1_NH //Damn, I err, got something in my eyes, is it safe to move? $audio_text[38] = &WUZ1_NJ //YOUR MOTHERS WERE DEMON SLUTS! $audio_text[39] = &WUZ1_NK //YOUR BLOOD WILL RUN LIKE WINE! $audio_text[40] = &WUZ1_NL //EAT THIS HOT LEADEN SHIT! $audio_text[41] = &WUZ1_NM //YOU WILL WANDER AS GHOSTS! $audio_text[42] = &WUZ1_NN //CURSED ASSHOLES! $audio_text[43] = &WUZ1_NO //CJ, Take out that sniper! $audio_text[44] = &WUZ1_NP //Cover me, CJ, I’m moving up! $audio_text[45] = &WUZ1_NQ //I’m breaking cover, CJ, spray ‘em! $audio_text[46] = &WUZ1_OA //Oh fuck, man, more up ahead! $audio_text[47] = &WUZ1_OB //Shit, man, they really want you dead! $audio_text[48] = &WUZ1_OC //I see him. He on the roof! $audio_text[49] = &WUZ1_OD //Ok, clear, Woozie, GO! $audio_text[50] = &WUZ1_OE //Break for it, Woozie! $audio_text[51] = &WUZ1_OF //I got your back, go! $audio_text[52] = &WUZ1_OG //Hold up, Woozie, we still got trouble! $audio_text[53] = &WUZ1_OH //Lay low! $audio_text[54] = &WUZ1_OJ //Woozie, keep it down, we still got trouble! $audio_text[55] = &WUZ1_OK //In the car, quick! $audio_text[56] = &WUZ1_OL //Get on the back of the bike! $audio_text[57] = &WUZ1_OM //On the bike, quick! $audio_text[58] = &WUZ1_ON //Let’s get the fuck out of here! $audio_text[59] = &WUZ1_OO //Let’s get the hell out of here! $audio_text[60] = &WUZ1_OP //We got more company! $audio_text[61] = &WUZ1_OQ //Cars on our tail! $audio_text[62] = &WUZ1_OR //More of them, in cars! $audio_text[63] = &WUZ1_PA //You drive, I’ll send them back to the sewers! $audio_text[64] = &WUZ1_PB //You drive, I’ll send them back to the sewers! $audio_text[65] = &WUZ1_QA //You drive, I’ll send them back to the sewers! $audio_text[66] = &WUZ1_RA //You drive, I’ll send them back to the sewers! $audio_text[67] = &WUZ1_QB //You drive, I’ll send them back to the sewers! $audio_text[68] = &WUZ1_RD //You drive, I’ll send them back to the sewers! $audio_text[69] = &WUZ1_EA //Hey, what’s with all these people? $audio_text[70] = &WUZ1_EB //Where are they going? $audio_text[71] = &WUZ1_EC //Something isn’t right here. We should be careful… $audio_text[72] = &WUZ1_EE //Follow me. $audio_text[73] = &WUZ1_GJ //Now where’s that loose cobble? $audio_text[74] = &WUZ1_JA //What you doing? $audio_text[75] = &WUZ1_JB //Just, eerr, checking the, um, y’know. $audio_text[77] = &WUZ1_GC //Hmmm, yes, intriguing... $audio_text[78] = &WUZ1_KA //What’s wrong? You lost? Need a hand? $audio_text[79] = &WUZ1_KB //NO! $audio_text[80] = &WUZ1_KC //No, I was just, you know, getting the feel of the place. $audio_text[81] = &WUZ1_KD //Stick Close! $audio_text[82] = &WUZ1_GE //Stick Close! $audio_text[83] = &WUZ1_GF //Stick Close! $audio_text[84] = &WUZ1_FA //Stick Close! $audio_text[85] = &WUZ1_FB //Stick Close! $audio_text[86] = &WUZ1_FC //Stick Close! $audio_text[87] = &WUZ1_FD //Stick Close! $audio_text[88] = &WUZ1_FE //Stick Close! $audio_text[89] = &WUZ1_HA //Stick Close! $audio_text[90] = &WUZ1_HB //Stick Close! $audio_text[91] = &WUZ1_HC //Stick Close! $audio_text[92] = &WUZ1_OM //Stick Close! $audio_text[93] = &WUZ1_OK //Stick Close! audio_for_char[1] = 2 audio_for_char[2] = 1 audio_for_char[3] = 2 audio_for_char[4] = 2 audio_for_char[5] = 1 audio_for_char[6] = 2 audio_for_char[7] = 2 audio_for_char[8] = 2 audio_for_char[9] = 1 audio_for_char[10] = 2 audio_for_char[11] = 2 audio_for_char[12] = 2 audio_for_char[13] = 1 audio_for_char[14] = 2 audio_for_char[15] = 2 audio_for_char[16] = 2 audio_for_char[17] = 2 audio_for_char[18] = 1 audio_for_char[19] = 2 audio_for_char[20] = 2 audio_for_char[21] = 1 audio_for_char[22] = 2 audio_for_char[23] = 3 audio_for_char[24] = 2 audio_for_char[25] = 3 audio_for_char[26] = 3 audio_for_char[27] = 2 audio_for_char[28] = 2 audio_for_char[29] = 2 audio_for_char[30] = 2 audio_for_char[31] = 2 audio_for_char[32] = 2 audio_for_char[33] = 1 audio_for_char[34] = 2 audio_for_char[35] = 2 audio_for_char[36] = 0 audio_for_char[37] = 2 audio_for_char[38] = 1 audio_for_char[39] = 2 audio_for_char[40] = 2 audio_for_char[41] = 2 audio_for_char[42] = 2 audio_for_char[43] = 2 audio_for_char[44] = 2 audio_for_char[45] = 2 audio_for_char[46] = 0 audio_for_char[47] = 2 audio_for_char[48] = 2 audio_for_char[49] = 2 audio_for_char[50] = 2 audio_for_char[51] = 2 audio_for_char[52] = 2 audio_for_char[53] = 1 audio_for_char[54] = 2 audio_for_char[55] = 2 audio_for_char[56] = 1 audio_for_char[57] = 1 audio_for_char[58] = 1 audio_for_char[59] = 2 audio_for_char[60] = 1 audio_for_char[61] = 2 audio_for_char[62] = 2 audio_for_char[63] = 1 audio_for_char[64] = 2 audio_for_char[65] = 2 audio_for_char[66] = 1 audio_for_char[67] = 1 audio_for_char[68] = 1 audio_for_char[69] = 2 audio_for_char[70] = 1 audio_for_char[71] = 2 audio_for_char[72] = 2 audio_for_char[73] = 2 audio_for_char[74] = 1 audio_for_char[75] = 2 audio_for_char[76] = 2 audio_for_char[77] = 2 audio_for_char[78] = 1 audio_for_char[79] = 2 audio_for_char[80] = 2 audio_for_char[81] = 2 audio_for_char[82] = 2 audio_for_char[83] = 2 audio_for_char[84] = 2 audio_for_char[85] = 1 audio_for_char[86] = 2 audio_for_char[87] = 2 audio_for_char[88] = 2 audio_for_char[89] = 2 audio_for_char[90] = 1 audio_for_char[91] = 2 audio_for_char[92] = 1 audio_for_char[93] = 1 audio_actor[1] = scplayer //1 = catalina //2 = player audio_flag = 1 // play_audio = 0 LOAD_MISSION_AUDIO 1 audio_sound[1] LOAD_MISSION_AUDIO 2 audio_sound[2] audio_slot[1] = 1 audio_slot[2] = 2 BREAK CASE 1 //waiting to play audio IF NOT play_audio = 0 IF lose_face_message_printed = 0 IF TIMERA > play_audio_delay IF HAS_MISSION_AUDIO_FINISHED 1 AND HAS_MISSION_AUDIO_FINISHED 2 IF audio_slot[1] = play_audio play_slot = 1 ELSE IF audio_slot[2] = play_audio play_slot = 2 ELSE play_slot = 1 audio_slot[1] = play_audio CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 audio_sound[play_audio] //audio hasn't been requested yet ENDIF ENDIF IF HAS_MISSION_AUDIO_LOADED play_slot actor_int = audio_for_char[play_audio] this_actor = audio_actor[actor_int] IF NOT force_audio = 1 //otherwise audio will not play if no mission peds are nearby audio_i = 1 audio_count = 0 WHILE audio_i < 7 audio_char = audio_actor[audio_i] IF NOT audio_char = 0 IF NOT audio_char = this_actor IF NOT IS_CHAR_DEAD this_actor IF NOT IS_CHAR_DEAD audio_char IF LOCATE_CHAR_ANY_MEANS_CHAR_3D this_actor audio_char 10.0 10.0 10.0 FALSE audio_count ++ ENDIF ENDIF ENDIF ENDIF ENDIF audio_i++ ENDWHILE ENDIF IF force_audio = 1 OR audio_count > 0 OR audio_for_char[play_audio] = 0 IF NOT audio_for_char[play_audio] = 0 IF NOT IS_CHAR_DEAD this_actor IF play_audio_global = 0 ATTACH_MISSION_AUDIO_TO_CHAR play_slot this_actor ENDIF IF NOT IS_CHAR_TALKING this_actor play_audio_now = 1 START_CHAR_FACIAL_TALK this_actor 15000 ELSE DISABLE_CHAR_SPEECH this_actor FALSE ENDIF ENDIF ENDIF IF audio_for_char[play_audio] = 0 play_audio_now = 1 ENDIF IF play_audio_now = 1 IF NOT this_actor = 0 IF NOT IS_CHAR_DEAD this_Actor SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH this_actor TRUE ENDIF // VAR_INT cuntyy // cuntyy = this_actor // VIEW_INTEGER_VARIABLE cuntyy cuntyy // VIEW_INTEGER_VARIABLE scplayer scplayer ENDIF PLAY_MISSION_AUDIO play_slot CLEAR_PRINTS PRINT $audio_text[play_audio] 10000 1 audio_flag ++ play_audio_now = 0 play_audio ++ next_audio = play_audio // if the other slot doesn't already have the next audio loaded, then load it. IF NOT audio_sound[play_audio] = 0 IF play_slot = 1 IF NOT audio_slot[2] = play_audio LOAD_MISSION_AUDIO 2 audio_sound[play_audio] audio_slot[2] = play_audio ENDIF ELSE IF NOT audio_slot[1] = play_audio LOAD_MISSION_AUDIO 1 audio_sound[play_audio] audio_slot[1] = play_audio ENDIF ENDIF ENDIF ENDIF ELSE audio_flag = 6 ENDIF ELSE LOAD_MISSION_AUDIO play_slot audio_sound[play_audio] ENDIF ENDIF ENDIF ENDIF ENDIF BREAK CASE 2 // check if audio has/should finish IF HAS_MISSION_AUDIO_FINISHED play_slot IF NOT IS_CHAR_DEAD this_actor SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH this_actor FALSE ENDIF audio_flag++ ELSE IF DOES_CHAR_EXIST this_actor IF IS_CHAR_DEAD this_actor audio_flag++ ENDIF ENDIF ENDIF BREAK CASE 3 //clear audio IF NOT IS_CHAR_DEAD this_actor SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH this_actor FALSE ENDIF CLEAR_MISSION_AUDIO play_slot audio_slot[play_slot] = 0 CLEAR_PRINTS IF NOT IS_CHAR_DEAD this_actor STOP_CHAR_FACIAL_TALK this_actor ENABLE_CHAR_SPEECH this_actor ENDIF audio_flag++ BREAK CASE 4 //request next audio IF NOT IS_CHAR_DEAD this_actor SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH this_actor FALSE ENDIF play_audio ++ IF NOT audio_sound[play_audio] = 0 LOAD_MISSION_AUDIO play_slot audio_sound[play_audio] audio_slot[play_slot] = play_audio ENDIF play_audio_for -= 1 IF NOT play_audio_for > 0 play_audio = 0 play_audio_for = 0 ELSE play_audio = next_audio ENDIF audio_flag = 1 BREAK CASE 5 // clear all for cut scene skip IF NOT IS_CHAR_DEAD this_actor SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH this_actor FALSE ENDIF audio_flag = 1 play_audio = 0 play_audio_for = 0 play_timed_audio = 0 play_timed_audio_for = 0 play_audio_global = 0 CLEAR_MISSION_AUDIO play_slot audio_slot[play_slot] = 0 CLEAR_PRINTS IF NOT IS_CHAR_DEAD this_actor ENABLE_CHAR_SPEECH this_actor ENDIF BREAK CASE 6 // clear all for cut scene skip (fade) IF NOT IS_CHAR_DEAD this_actor SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH this_actor FALSE ENDIF audio_flag = 2 play_audio = 0 play_audio_for = 0 play_timed_audio = 0 play_timed_audio_for = 0 play_audio_global = 0 audio_slot[play_slot] = 0 CLEAR_PRINTS IF NOT IS_CHAR_DEAD this_actor ENABLE_CHAR_SPEECH this_actor ENDIF BREAK ENDSWITCH RETURN // Mission wuzi1 failed mission_wuzi1_failed: PRINT_BIG M_FAIL 5000 1 RETURN // mission wuzi1 passed mission_wuzi1_passed: PRINT_WITH_NUMBER_BIG ( M_PASSS ) 5000 5000 1 //"Mission Passed!" ADD_SCORE Player1 5000 //amount of cash reward AWARD_PLAYER_MISSION_RESPECT 10 //amount of respect CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 PLAYER_MADE_PROGRESS 1 REGISTER_MISSION_PASSED ( WUZI_1 ) //Used in the stats flag_wuzi_mission_counter ++ RETURN // mission cleanup mission_cleanup_wuzi1: wz1_i = 0 WHILE wz1_i < 18 REMOVE_BLIP wz1_tong_blip[wz1_i] IF NOT IS_CHAR_DEAD wz1_tong[wz1_i] TASK_KILL_CHAR_ON_FOOT wz1_tong[wz1_i] scplayer SET_CHAR_KEEP_TASK wz1_tong[wz1_i] TRUE MARK_CHAR_AS_NO_LONGER_NEEDED wz1_tong[wz1_i] ENDIF wz1_i ++ ENDWHILE CLEAR_HELP IF NOT IS_CAR_DEAD wz1_getaway_car SET_CAR_HEAVY wz1_getaway_car FALSE SET_CAR_PROOFS wz1_getaway_car FALSE FALSE FALSE FALSE FALSE LOCK_CAR_DOORS wz1_getaway_car CARLOCK_UNLOCKED ENDIF IF IS_PLAYER_PLAYING player1 SET_PLAYER_CONTROL player1 ON ENDIF // SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 FALSE SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 UNLOAD_SPECIAL_CHARACTER 1 MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED DNB1 MARK_MODEL_AS_NO_LONGER_NEEDED DNB2 MARK_MODEL_AS_NO_LONGER_NEEDED DNB3 MARK_MODEL_AS_NO_LONGER_NEEDED SNIPER MARK_MODEL_AS_NO_LONGER_NEEDED SENTINEL MARK_MODEL_AS_NO_LONGER_NEEDED TRIADA MARK_MODEL_AS_NO_LONGER_NEEDED TRIADB MARK_MODEL_AS_NO_LONGER_NEEDED OMOST MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ REMOVE_ANIMATION SWAT REMOVE_ANIMATION wuzi REMOVE_ANIMATION GANGS REMOVE_ANIMATION CAR_CHAT REMOVE_CAR_RECORDING 136 REMOVE_CAR_RECORDING 137 REMOVE_CAR_RECORDING 138 REMOVE_CAR_RECORDING 139 REMOVE_CAR_RECORDING 169 SWITCH_PED_ROADS_BACK_TO_ORIGINAL -2239.2510 636.6675 53.1933 -2165.0466 720.0577 49.5456 CLEAR_ONSCREEN_COUNTER wz1_health_bar SWITCH_RANDOM_TRAINS ON SET_WANTED_MULTIPLIER 1.0 IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF IF NOT IS_CHAR_DEAD wz1_wuzi // MARK_CHAR_AS_NO_LONGER_NEEDED wz1_wuzi REMOVE_CHAR_ELEGANTLY wz1_wuzi ENDIF REMOVE_BLIP wz1_goto_blip REMOVE_BLIP wz1_wuzi_blip REMOVE_BLIP wz1_car_blip[0] REMOVE_BLIP wz1_car_blip[1] SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 REMOVE_SCRIPT_FIRE wz1_Fire1 REMOVE_SCRIPT_FIRE wz1_Fire2 REMOVE_DECISION_MAKER wz1_ped_decisions SWITCH_EMERGENCY_SERVICES ON flag_player_on_mission = 0 SET_USES_COLLISION_OF_CLOSEST_OBJECT_OF_TYPE -2175.2129 662.7180 50.8582 10.5 ct_gatexr TRUE SET_USES_COLLISION_OF_CLOSEST_OBJECT_OF_TYPE -2175.2129 662.7180 50.8582 10.5 china_town_gateb TRUE MISSION_HAS_FINISHED RETURN } MISSION_START // ************************************************************************************************** // // Farlie Mission 1: Airport Pickup // // ************************************************************************************************** SCRIPT_NAME FARLIE4 // Begin... GOSUB mission_start_farlie4 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_farlie4 ENDIF GOSUB mission_cleanup_farlie4 MISSION_END { // ************************************************************************************************** // // // // ************************************************************************************************** // Integers VAR_INT f4_rnd f4_car_damage LVAR_INT f4_objective_car f4_objective_blip v LVAR_INT f4_home_blip f4_sequence_task LVAR_INT f4_cp f4_inside_car f4_outside LVAR_INT f4_garage_open LVAR_INT f4_heal LVAR_INT f4_roll_out_1 LVAR_INT f4_roll_out_2 LVAR_INT f4_decision LVAR_INT f4_ply_ride LVAR_INT ReturnStatus // Arrays LVAR_INT f4_mule[10] LVAR_INT f4_van_man[10] LVAR_INT f4_entrance[10] LVAR_INT f4_trigger[20] LVAR_INT f4_road_block[10] LVAR_INT f4_motorbike[10] LVAR_INT f4_biker[10] LVAR_INT f4_bike_blip[10] LVAR_INT f4_audio LVAR_INT f4_playing LVAR_INT f4_car_has_been_created LVAR_INT f4_mule_seq[4] LVAR_INT f4_decision_empty LVAR_INT f4_driver[10] LVAR_INT f4_trigger_car[5] LVAR_INT f4_car[5] f4_car_blip[5] LVAR_INT f4_ply_in_car[5] LVAR_TEXT_LABEL f4_print // Floats LVAR_FLOAT f4_temp_X f4_temp_Y f4_temp_Z // ************************************************************************************************** // * * // * Start Mission * // * * // ************************************************************************************************** mission_start_farlie4: // Cutscene LOAD_MISSION_TEXT FARLIE4 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 1 LOAD_CUTSCENE FARL_4A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_FADING_COLOUR 0 0 0 DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 // ***************************************************************************************** IF NOT IS_CHAR_DEAD scplayer LOAD_SCENE -2154.9983 645.5436 51.3516 SET_CHAR_COORDINATES scplayer -2154.9983 645.5436 51.3516 SET_CHAR_HEADING scplayer 271.1130 SET_CAMERA_BEHIND_PLAYER ENDIF // ***************************************************************************************** SWITCH_WIDESCREEN OFF SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN REGISTER_MISSION_GIVEN flag_player_on_mission = 1 SWITCH_ROADS_OFF -1478.2944 -65.4014 0.0000 -1395.4229 2.7054 10.0000 // ***************************************************************************************** SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 PEDTYPE_MISSION1 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH f4_decision LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY f4_decision_empty ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE f4_decision_empty EVENT_PED_ENTERED_MY_VEHICLE TASK_COMPLEX_LEAVE_CAR 0.0 0.0 100.0 0.0 TRUE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE f4_decision EVENT_PED_ENTERED_MY_VEHICLE TASK_COMPLEX_LEAVE_CAR 0.0 0.0 100.0 0.0 TRUE TRUE // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** ADD_BLIP_FOR_COORD -1742.2732 1422.6310 6.1842 f4_home_blip CHANGE_BLIP_DISPLAY f4_home_blip NEITHER ADD_BLIP_FOR_COORD -1409.9000 -303.4000 4.5000 f4_outside CHANGE_GARAGE_TYPE fdorsfe GARAGE_FOR_SCRIPT_TO_OPEN_AND_CLOSE REQUEST_MODEL MICRO_UZI WHILE NOT HAS_MODEL_LOADED MICRO_UZI WAIT 0 ENDWHILE IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_MICRO_UZI AND NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_MP5 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_MICRO_UZI 150 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_MICRO_UZI ENDIF // **************************************************************************************************** // // MAIN LOOP // // **************************************************************************************************** TIMERA = 0 f4_playing = 2 PRINT_NOW ( F4_T0 ) 9000 1 // ~s~Pick up the car from the airport ~y~car park~s~! WHILE NOT IS_CHAR_DEAD scplayer WAIT 0 IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S GOTO mission_passed_farlie4 ENDIF GOSUB f4_keys GOSUB f4_play_sample IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1409.9000 -303.4000 4.5000 4.0 4.0 4.0 TRUE CHECKPOINT_SAVE 99 REQUEST_MODEL sabre REQUEST_MODEL MANANA WHILE NOT HAS_MODEL_LOADED sabre OR NOT HAS_MODEL_LOADED MANANA WAIT 0 ENDWHILE f4_car_has_been_created = 1 REMOVE_BLIP f4_outside CREATE_CAR MANANA -1425.5125 -21.2813 5.0078 f4_objective_car SET_CAR_HEADING f4_objective_car 88.7848 FREEZE_CAR_POSITION f4_objective_car TRUE ADD_BLIP_FOR_CAR f4_objective_car f4_objective_blip SET_BLIP_AS_FRIENDLY f4_objective_blip TRUE SET_CAN_BURST_CAR_TYRES f4_objective_car FALSE SET_CAR_HEALTH f4_objective_car 3000 CHANGE_CAR_COLOUR f4_objective_car CARCOLOUR_CHERRYRED CARCOLOUR_CHERRYRED PRINT_NOW ( F4_T7 ) 4000 1 // ~s~Get the ~b~car~s~! GOTO f4_main_loop1a ENDIF ENDWHILE GOTO mission_failed_farlie4 // **************************************************************************************************** // // MAIN LOOP // // **************************************************************************************************** f4_main_loop1a: WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD f4_objective_car WAIT 0 GOSUB f4_keys GOSUB f4_play_sample IF IS_CHAR_IN_ANY_CAR scplayer AND NOT IS_CAR_DEAD f4_objective_car IF NOT IS_CHAR_IN_CAR scplayer f4_objective_car STORE_CAR_CHAR_IS_IN scplayer car ENDIF ENDIF IF NOT IS_CAR_DEAD f4_objective_car IF IS_CHAR_IN_CAR scplayer f4_objective_car CHANGE_BLIP_DISPLAY f4_objective_blip NEITHER CHANGE_BLIP_DISPLAY f4_home_blip BOTH FREEZE_CAR_POSITION f4_objective_car FALSE GOTO f4_main_loop2 ENDIF ENDIF ENDWHILE GOTO mission_failed_farlie4 // **************************************************************************************************** // // MAIN LOOP 2 // // **************************************************************************************************** f4_main_loop2: SET_PLAYER_CONTROL player1 FALSE REQUEST_MODEL dnb1 REQUEST_MODEL dnb2 REQUEST_MODEL FCR900 REQUEST_MODEL micro_uzi REQUEST_MODEL mule REQUEST_MODEL cellphone REQUEST_MODEL sabre REQUEST_MODEL SADLER WHILE NOT HAS_MODEL_LOADED dnb1 OR NOT HAS_MODEL_LOADED dnb2 OR NOT HAS_MODEL_LOADED FCR900 OR NOT HAS_MODEL_LOADED micro_uzi OR NOT HAS_MODEL_LOADED mule OR NOT HAS_MODEL_LOADED cellphone WAIT 0 ENDWHILE CLEAR_MISSION_AUDIO 3 LOAD_MISSION_AUDIO 3 SOUND_REVERB_CAR_SCREECH WHILE NOT HAS_MISSION_AUDIO_LOADED 3 OR NOT HAS_MODEL_LOADED sabre OR NOT HAS_MODEL_LOADED SADLER WAIT 0 ENDWHILE SET_CAR_DENSITY_MULTIPLIER 0.0 // ************************************************************************************************** quick_test: GOSUB f4_fade_out IF NOT IS_CAR_DEAD car IF LOCATE_CAR_3D car -1429.6185 -21.2788 5.0078 10.0 10.0 10.0 FALSE SET_CAR_AS_MISSION_CAR car SET_CAR_COORDINATES car -1425.6151 -16.4956 5.0078 SET_CAR_HEADING car 271.5388 ENDIF WAIT 500 ENDIF CLEAR_AREA -1412.5598 -138.0878 5.0000 200.0 TRUE GOSUB f4_set_camera SET_FIXED_CAMERA_POSITION -1430.3612 -18.6971 6.1910 0.0 0.0 0.0 // Bike from front POINT_CAMERA_AT_POINT -1429.6552 -19.4032 6.1376 JUMP_CUT // Cutscene Van CREATE_CAR mule -1414.1731 -50.4918 5.0000 f4_mule[0] SET_CAR_HEADING f4_mule[0] 0.0000 CREATE_CHAR_INSIDE_CAR f4_mule[0] PEDTYPE_MISSION1 dnb1 f4_van_man[0] GIVE_WEAPON_TO_CHAR f4_van_man[0] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_van_man[0] WEAPONTYPE_MICRO_UZI // Drive out for cutscene IF NOT IS_CAR_DEAD f4_mule[0] AND NOT IS_CHAR_DEAD f4_van_man[0] AND NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK f4_mule_seq[0] TASK_CAR_DRIVE_TO_COORD -1 f4_mule[0] -1414.4281 -32.5711 5.0069 15.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS TASK_LEAVE_CAR -1 f4_mule[0] TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK f4_mule_seq[0] PERFORM_SEQUENCE_TASK f4_van_man[0] f4_mule_seq[0] ENDIF IF NOT IS_CAR_DEAD f4_objective_car GET_CAR_HEALTH f4_objective_car f4_heal ENDIF f4_car_damage = f4_heal / 30 DISPLAY_ONSCREEN_COUNTER_WITH_STRING f4_car_damage COUNTER_DISPLAY_BAR F4_D GOSUB f4_fade_in PRINT_NOW ( F4_T5 ) 5000 1 // It's an ambush, the Vietnamese gang are covering the exits! TIMERB = 0 WHILE TIMERB < 2000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO f4_skip_the_cut ENDIF ENDWHILE IF HAS_MISSION_AUDIO_LOADED 3 PLAY_MISSION_AUDIO 3 ENDIF TIMERB = 0 WHILE TIMERB < 2000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO f4_skip_the_cut ENDIF ENDWHILE f4_skip_the_cut: GOSUB f4_restore_camera PRINT_NOW ( F4_T8 ) 4000 1 // ~s~Get the car back in one piece! IF NOT IS_CAR_DEAD f4_objective_car FREEZE_CAR_POSITION f4_objective_car FALSE ENDIF WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD f4_objective_car WAIT 0 GOSUB f4_keys GOSUB f4_play_sample // ************************************************************************************************** // * * // * Respray Check * // * * // ************************************************************************************************** IF NOT IS_CAR_DEAD f4_objective_car IF HAS_CAR_BEEN_RESPRAYED f4_objective_car SET_CAR_HEALTH f4_objective_car 3000 ENDIF ENDIF // ************************************************************************************************** // * * // * Blip for getting out of car * // * * // ************************************************************************************************** IF NOT IS_CAR_DEAD f4_objective_car IF IS_CHAR_IN_CAR scplayer f4_objective_car IF f4_inside_car = 0 CHANGE_BLIP_DISPLAY f4_objective_blip NEITHER CHANGE_BLIP_DISPLAY f4_home_blip BOTH f4_inside_car = 1 ENDIF ELSE IF f4_inside_car = 1 CHANGE_BLIP_DISPLAY f4_objective_blip BOTH CHANGE_BLIP_DISPLAY f4_home_blip NEITHER PRINT_NOW ( F4_T4 ) 4000 1 // ~s~Get back in the ~b~car! f4_inside_car = 0 ENDIF ENDIF GET_CAR_HEALTH f4_objective_car f4_heal f4_car_damage = f4_heal / 30 ENDIF // ************************************************************************************************** // * * // * Vans move to block player * // * * // ************************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1467.0321 -133.7941 5.0078 60.0 60.0 10.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1347.1105 -49.7249 5.0078 20.0 20.0 10.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1421.3441 -238.9247 5.0000 20.0 20.0 10.0 FALSE IF f4_trigger[0] = 0 CLEAR_AREA -1474.4658 -162.8309 5.0234 10.0 TRUE CREATE_CAR mule -1474.4658 -162.8309 5.0234 f4_mule[2] SET_CAR_HEADING f4_mule[2] 272.5542 CREATE_CHAR_INSIDE_CAR f4_mule[2] PEDTYPE_MISSION1 dnb1 f4_van_man[2] GIVE_WEAPON_TO_CHAR f4_van_man[2] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_van_man[2] WEAPONTYPE_MICRO_UZI IF NOT IS_CAR_DEAD f4_mule[2] AND NOT IS_CHAR_DEAD f4_van_man[2] AND NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK f4_mule_seq[2] TASK_CAR_DRIVE_TO_COORD -1 f4_mule[2] -1464.8624 -162.4026 5.0226 25.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS TASK_LEAVE_CAR -1 f4_mule[2] TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK f4_mule_seq[2] PERFORM_SEQUENCE_TASK f4_van_man[2] f4_mule_seq[2] ENDIF f4_trigger[0] = 1 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1423.8495 -135.7411 5.0078 20.0 20.0 10.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1347.1105 -49.7249 5.0078 20.0 20.0 10.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1421.3441 -238.9247 5.0000 20.0 20.0 10.0 FALSE IF f4_trigger[1] = 0 CLEAR_AREA -1387.2682 -126.9234 5.0078 10.0 TRUE CREATE_CAR mule -1387.2682 -126.9234 5.0078 f4_mule[1] SET_CAR_HEADING f4_mule[1] 180.2388 CREATE_CHAR_INSIDE_CAR f4_mule[1] PEDTYPE_MISSION1 dnb1 f4_van_man[1] GIVE_WEAPON_TO_CHAR f4_van_man[1] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_van_man[1] WEAPONTYPE_MICRO_UZI IF NOT IS_CAR_DEAD f4_mule[1] AND NOT IS_CHAR_DEAD f4_van_man[1] AND NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK f4_mule_seq[1] TASK_CAR_DRIVE_TO_COORD -1 f4_mule[1] -1387.2255 -135.6199 5.0078 25.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS TASK_LEAVE_CAR -1 f4_mule[1] TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK f4_mule_seq[1] PERFORM_SEQUENCE_TASK f4_van_man[1] f4_mule_seq[1] ENDIF f4_trigger[1] = 1 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1427.2694 -238.5722 5.0234 20.0 20.0 10.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1347.1105 -49.7249 5.0078 20.0 20.0 10.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1421.3441 -238.9247 5.0000 20.0 20.0 10.0 FALSE IF f4_trigger[10] = 0 CLEAR_AREA -1387.7921 -230.1776 5.0078 10.0 TRUE CREATE_CAR mule -1387.7921 -230.1776 5.0078 f4_mule[3] SET_CAR_HEADING f4_mule[3] 179.5878 CREATE_CHAR_INSIDE_CAR f4_mule[3] PEDTYPE_MISSION1 dnb1 f4_van_man[3] GIVE_WEAPON_TO_CHAR f4_van_man[3] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_van_man[3] WEAPONTYPE_MICRO_UZI IF NOT IS_CAR_DEAD f4_mule[3] AND NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK f4_mule_seq[3] TASK_CAR_DRIVE_TO_COORD -1 f4_mule[3] -1387.8624 -240.3811 5.0078 25.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS TASK_LEAVE_CAR -1 f4_mule[3] TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK f4_mule_seq[3] PERFORM_SEQUENCE_TASK f4_van_man[3] f4_mule_seq[3] ENDIF f4_trigger[10] = 1 ENDIF ENDIF // ************************************************************************************************** // * * // * Scripted guys who roll out * // * * // ************************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1399.6862 -184.7570 5.3047 5.0 5.0 10.0 FALSE AND f4_trigger[2] = 0 CREATE_CHAR PEDTYPE_MISSION1 dnb2 -1404.0490 -234.7071 5.3047 f4_roll_out_1 SET_CHAR_HEADING f4_roll_out_1 353.8535 GIVE_WEAPON_TO_CHAR f4_roll_out_1 WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_roll_out_1 WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_roll_out_1 80 SET_CHAR_DECISION_MAKER f4_roll_out_1 f4_decision TASK_WEAPON_ROLL f4_roll_out_1 TRUE f4_trigger[2] = 1 ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1400.1842 -205.7361 5.3047 5.0 5.0 10.0 FALSE AND f4_trigger[3] = 0 CREATE_CHAR PEDTYPE_MISSION1 dnb1 -1394.2347 -234.7350 5.3047 f4_roll_out_2 SET_CHAR_HEADING f4_roll_out_2 1.5813 GIVE_WEAPON_TO_CHAR f4_roll_out_2 WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_roll_out_2 WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_roll_out_2 80 SET_CHAR_DECISION_MAKER f4_roll_out_2 f4_decision TASK_WEAPON_ROLL f4_roll_out_2 FALSE f4_trigger[3] = 1 ENDIF // ************************************************************************************************** // * * // * Scripted guys talking outside * // * * // ************************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1407.1873 -239.4782 5.3047 20.0 20.0 10.0 FALSE AND f4_trigger[4] = 0 // Guys at Car park entrance CREATE_CHAR PEDTYPE_MISSION1 dnb2 -1407.0764 -358.3559 8.3099 f4_entrance[0] SET_CHAR_HEADING f4_entrance[0] 9.5994 CREATE_CHAR PEDTYPE_MISSION1 dnb1 -1476.8867 -291.5300 8.7087 f4_entrance[1] SET_CHAR_HEADING f4_entrance[1] 258.9856 REPEAT 2 v GIVE_WEAPON_TO_CHAR f4_entrance[v] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_entrance[v] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_entrance[v] 80 SET_CHAR_DECISION_MAKER f4_entrance[v] f4_decision TASK_STAY_IN_SAME_PLACE f4_entrance[v] TRUE TASK_KILL_CHAR_ON_FOOT f4_entrance[v] scplayer TASK_TOGGLE_DUCK f4_entrance[v] TRUE ENDREPEAT // Small roadblock CREATE_CAR mule -1478.8958 -470.3535 10.9926 f4_mule[3] SET_CAR_HEADING f4_mule[3] 11.1921 CREATE_CHAR PEDTYPE_MISSION1 dnb2 -1478.1881 -476.1086 11.1411 f4_road_block[0] SET_CHAR_HEADING f4_road_block[0] 277.8792 CREATE_CHAR PEDTYPE_MISSION1 dnb2 -1479.5347 -466.4356 11.0000 f4_road_block[1] SET_CHAR_HEADING f4_road_block[1] 263.3237 // Small roadblock CREATE_CAR mule -1586.0226 -359.7679 10.9926 f4_mule[4] SET_CAR_HEADING f4_mule[4] 248.7342 CREATE_CHAR PEDTYPE_MISSION1 dnb2 -1582.2249 -362.0264 11.0000 f4_road_block[2] SET_CHAR_HEADING f4_road_block[2] 356.2877 CREATE_CHAR PEDTYPE_MISSION1 dnb2 -1590.6940 -357.4667 11.1411 f4_road_block[3] SET_CHAR_HEADING f4_road_block[3] 323.3828 REPEAT 4 v GIVE_WEAPON_TO_CHAR f4_road_block[v] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_road_block[v] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_road_block[v] 80 SET_CHAR_DECISION_MAKER f4_road_block[v] f4_decision TASK_STAY_IN_SAME_PLACE f4_road_block[v] TRUE TASK_KILL_CHAR_ON_FOOT f4_road_block[v] scplayer ENDREPEAT f4_trigger[4] = 1 ENDIF // ************************************************************************************************** // * * // * Turn back on random cars * // * * // ************************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1570.8882 -455.6748 5.0000 25.0 25.0 10.0 FALSE AND f4_trigger[5] = 0 SET_CAR_DENSITY_MULTIPLIER 1.0 DELETE_CHAR f4_roll_out_1 DELETE_CHAR f4_roll_out_2 REPEAT 3 v DELETE_CHAR f4_van_man[v] IF NOT IS_CAR_DEAD f4_mule[v] IF NOT IS_CHAR_IN_CAR scplayer f4_mule[v] DELETE_CAR f4_mule[v] ENDIF ENDIF DELETE_CHAR f4_entrance[v] ENDREPEAT f4_trigger[5] = 1 ENDIF // ************************************************************************************************** // * * // * Guys on Motorcycles * // * * // ************************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2258.5188 124.3485 34.3125 150.0 150.0 10.0 FALSE AND f4_trigger[6] = 0 CLEAR_AREA -2258.5188 124.3485 34.3125 10.0 TRUE CREATE_CAR FCR900 -2258.5188 124.3485 34.3125 f4_motorbike[0] ADD_BLIP_FOR_CAR f4_motorbike[0] f4_bike_blip[0] SET_CAR_DRIVING_STYLE f4_motorbike[0] DRIVINGMODE_AVOIDCARS SET_CAR_HEADING f4_motorbike[0] 179.5562 CREATE_CHAR_INSIDE_CAR f4_motorbike[0] PEDTYPE_MISSION1 dnb1 f4_biker[0] CREATE_CHAR_AS_PASSENGER f4_motorbike[0] PEDTYPE_MISSION1 dnb2 0 f4_biker[1] SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE f4_biker[0] KNOCKOFFBIKE_DEFAULT SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE f4_biker[1] KNOCKOFFBIKE_DEFAULT GIVE_WEAPON_TO_CHAR f4_biker[0] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_biker[0] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_biker[0] 30 GIVE_WEAPON_TO_CHAR f4_biker[1] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_biker[1] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_biker[1] 30 SET_CHAR_DECISION_MAKER f4_biker[0] f4_decision SET_CHAR_DECISION_MAKER f4_biker[1] f4_decision TASK_DRIVE_BY f4_biker[1] scplayer -1 0.0 0.0 0.0 999.0 DRIVEBY_AI_ALL_DIRN FALSE 50 IF NOT IS_CAR_DEAD f4_objective_car TASK_CAR_MISSION f4_biker[0] f4_motorbike[0] f4_objective_car MISSION_ESCORT_LEFT 100.0 DRIVINGMODE_AVOIDCARS ENDIF f4_trigger[6] = 1 ENDIF // ************************************************************************************************** // * * // * Guys on Motorcycles * // * * // ************************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1817.8049 -552.1889 15.0039 150.0 150.0 10.0 FALSE AND f4_trigger[7] = 0 CLEAR_AREA -1817.8049 -552.1889 15.0039 10.0 TRUE CREATE_CAR FCR900 -1817.8049 -552.1889 15.0039 f4_motorbike[1] ADD_BLIP_FOR_CAR f4_motorbike[1] f4_bike_blip[1] SET_CAR_HEADING f4_motorbike[1] 174.0251 SET_CAR_DRIVING_STYLE f4_motorbike[1] DRIVINGMODE_AVOIDCARS CREATE_CHAR_INSIDE_CAR f4_motorbike[1] PEDTYPE_MISSION1 dnb1 f4_biker[2] CREATE_CHAR_AS_PASSENGER f4_motorbike[1] PEDTYPE_MISSION1 dnb2 0 f4_biker[3] SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE f4_biker[2] KNOCKOFFBIKE_DEFAULT SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE f4_biker[3] KNOCKOFFBIKE_DEFAULT GIVE_WEAPON_TO_CHAR f4_biker[2] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_biker[2] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_biker[2] 30 GIVE_WEAPON_TO_CHAR f4_biker[3] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_biker[3] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_biker[3] 30 TASK_DRIVE_BY f4_biker[3] scplayer -1 0.0 0.0 0.0 999.0 DRIVEBY_AI_ALL_DIRN FALSE 50 SET_CHAR_DECISION_MAKER f4_biker[3] f4_decision SET_CHAR_DECISION_MAKER f4_biker[2] f4_decision IF NOT IS_CAR_DEAD f4_objective_car OPEN_SEQUENCE_TASK f4_sequence_task TASK_PAUSE -1 5000 TASK_CAR_MISSION -1 f4_motorbike[1] f4_objective_car MISSION_ESCORT_RIGHT 100.0 DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK f4_sequence_task PERFORM_SEQUENCE_TASK f4_biker[2] f4_sequence_task CLEAR_SEQUENCE_TASK f4_sequence_task ENDIF f4_trigger[7] = 1 ENDIF // ************************************************************************************************** // * * // * Guys on Motorcycles * // * * // ************************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1818.3853 -621.8912 15.3120 150.0 150.0 10.0 FALSE AND f4_trigger[8] = 0 CLEAR_AREA -1818.3853 -621.8912 15.3120 10.0 TRUE CREATE_CAR FCR900 -1818.3853 -621.8912 15.3120 f4_motorbike[2] ADD_BLIP_FOR_CAR f4_motorbike[2] f4_bike_blip[2] SET_CAR_HEADING f4_motorbike[2] 1.7010 SET_CAR_DRIVING_STYLE f4_motorbike[2] DRIVINGMODE_AVOIDCARS CREATE_CHAR_INSIDE_CAR f4_motorbike[2] PEDTYPE_MISSION1 dnb1 f4_biker[4] CREATE_CHAR_AS_PASSENGER f4_motorbike[2] PEDTYPE_MISSION1 dnb2 0 f4_biker[5] SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE f4_biker[4] KNOCKOFFBIKE_DEFAULT SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE f4_biker[5] KNOCKOFFBIKE_DEFAULT GIVE_WEAPON_TO_CHAR f4_biker[4] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_biker[4] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_biker[4] 30 GIVE_WEAPON_TO_CHAR f4_biker[5] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_biker[5] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_biker[5] 30 TASK_DRIVE_BY f4_biker[5] scplayer -1 0.0 0.0 0.0 999.0 DRIVEBY_AI_ALL_DIRN FALSE 50 SET_CHAR_DECISION_MAKER f4_biker[5] f4_decision SET_CHAR_DECISION_MAKER f4_biker[4] f4_decision IF NOT IS_CAR_DEAD f4_objective_car OPEN_SEQUENCE_TASK f4_sequence_task TASK_PAUSE -1 5000 TASK_CAR_MISSION -1 f4_motorbike[2] f4_objective_car MISSION_ESCORT_LEFT 100.0 DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK f4_sequence_task PERFORM_SEQUENCE_TASK f4_biker[4] f4_sequence_task CLEAR_SEQUENCE_TASK f4_sequence_task ENDIF f4_trigger[8] = 1 ENDIF // ************************************************************************************************** // * * // * Car to ambush player * // * * // ************************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2211.6204 580.9911 34.1691 300.0 300.0 10.0 FALSE AND f4_trigger_car[0] = 0 CLEAR_AREA -2211.6204 580.9911 34.1691 10.0 TRUE CREATE_CAR MANANA -2211.6204 580.9911 34.1691 f4_car[0] ADD_BLIP_FOR_CAR f4_car[0] f4_car_blip[0] SET_CAR_HEADING f4_car[0] 176.7102 SET_CAR_DRIVING_STYLE f4_car[0] DRIVINGMODE_AVOIDCARS CREATE_CHAR_INSIDE_CAR f4_car[0] PEDTYPE_MISSION1 dnb1 f4_driver[0] CREATE_CHAR_AS_PASSENGER f4_car[0] PEDTYPE_MISSION1 dnb2 0 f4_driver[1] SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE f4_driver[1] KNOCKOFFBIKE_ALWAYSNORMAL GIVE_WEAPON_TO_CHAR f4_driver[0] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_driver[0] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_driver[0] 30 GIVE_WEAPON_TO_CHAR f4_driver[1] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_driver[1] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_driver[1] 30 TASK_DRIVE_BY f4_driver[1] scplayer -1 0.0 0.0 0.0 999.0 DRIVEBY_AI_ALL_DIRN FALSE 50 SET_CHAR_DECISION_MAKER f4_driver[1] f4_decision SET_CHAR_DECISION_MAKER f4_driver[0] f4_decision IF NOT IS_CAR_DEAD f4_objective_car TASK_CAR_MISSION f4_driver[0] f4_car[0] f4_objective_car MISSION_ESCORT_RIGHT 100.0 DRIVINGMODE_AVOIDCARS ENDIF f4_trigger_car[0] = 1 ENDIF // ************************************************************************************************** // * * // * Car to ambush player * // * * // ************************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1850.1274 1096.3236 44.2969 300.0 300.0 10.0 FALSE AND f4_trigger_car[1] = 0 CLEAR_AREA -1850.1274 1096.3236 44.2969 10.0 TRUE CREATE_CAR sabre -1850.1274 1096.3236 44.2969 f4_car[1] ADD_BLIP_FOR_CAR f4_car[1] f4_car_blip[1] SET_CAR_HEADING f4_car[1] 81.5282 SET_CAR_DRIVING_STYLE f4_car[1] DRIVINGMODE_AVOIDCARS CREATE_CHAR_INSIDE_CAR f4_car[1] PEDTYPE_MISSION1 dnb1 f4_driver[2] CREATE_CHAR_AS_PASSENGER f4_car[1] PEDTYPE_MISSION1 dnb2 0 f4_driver[3] GIVE_WEAPON_TO_CHAR f4_driver[2] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_driver[2] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_driver[2] 30 GIVE_WEAPON_TO_CHAR f4_driver[3] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_driver[3] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_driver[3] 30 TASK_DRIVE_BY f4_driver[3] scplayer -1 0.0 0.0 0.0 999.0 DRIVEBY_AI_ALL_DIRN FALSE 50 SET_CHAR_DECISION_MAKER f4_driver[3] f4_decision SET_CHAR_DECISION_MAKER f4_driver[2] f4_decision IF NOT IS_CAR_DEAD f4_objective_car TASK_CAR_MISSION f4_driver[2] f4_car[1] f4_objective_car MISSION_ESCORT_LEFT 100.0 DRIVINGMODE_AVOIDCARS ENDIF f4_trigger_car[1] = 1 ENDIF // ************************************************************************************************** // * * // * Car to ambush player * // * * // ************************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1740.3693 1404.4607 6.1875 300.0 300.0 10.0 FALSE AND f4_trigger_car[2] = 0 CLEAR_AREA -1740.3693 1404.4607 6.1875 10.0 TRUE CREATE_CAR SADLER -1740.3693 1404.4607 6.1875 f4_car[2] ADD_BLIP_FOR_CAR f4_car[2] f4_car_blip[2] SET_CAR_HEADING f4_car[2] 172.1585 SET_CAR_DRIVING_STYLE f4_car[2] DRIVINGMODE_AVOIDCARS CREATE_CHAR_INSIDE_CAR f4_car[2] PEDTYPE_MISSION1 dnb1 f4_driver[4] CREATE_CHAR_AS_PASSENGER f4_car[2] PEDTYPE_MISSION1 dnb2 0 f4_driver[5] GIVE_WEAPON_TO_CHAR f4_driver[4] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_driver[4] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_driver[4] 30 GIVE_WEAPON_TO_CHAR f4_driver[5] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_driver[5] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_driver[5] 30 TASK_DRIVE_BY f4_driver[5] scplayer -1 0.0 0.0 0.0 999.0 DRIVEBY_AI_ALL_DIRN FALSE 50 SET_CHAR_DECISION_MAKER f4_driver[5] f4_decision SET_CHAR_DECISION_MAKER f4_driver[4] f4_decision IF NOT IS_CAR_DEAD f4_objective_car TASK_CAR_MISSION f4_driver[4] f4_car[2] f4_objective_car MISSION_ESCORT_RIGHT 100.0 DRIVINGMODE_AVOIDCARS ENDIF f4_trigger_car[2] = 1 ENDIF // ************************************************************************************************** // * * // * Car to ambush player * // * * // ************************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1892.6516 745.0367 44.2969 300.0 300.0 10.0 FALSE AND f4_trigger_car[3] = 0 CLEAR_AREA -1892.6516 745.0367 44.2969 10.0 TRUE CREATE_CAR sabre -1892.6516 745.0367 44.2969 f4_car[3] ADD_BLIP_FOR_CAR f4_car[3] f4_car_blip[3] SET_CAR_HEADING f4_car[3] 167.9494 SET_CAR_DRIVING_STYLE f4_car[3] DRIVINGMODE_AVOIDCARS SET_CAR_MISSION f4_car[3] MISSION_BLOCKPLAYER_CLOSE CREATE_CHAR_INSIDE_CAR f4_car[3] PEDTYPE_MISSION1 dnb1 f4_driver[6] CREATE_CHAR_AS_PASSENGER f4_car[3] PEDTYPE_MISSION1 dnb2 0 f4_driver[7] GIVE_WEAPON_TO_CHAR f4_driver[6] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_driver[6] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_driver[6] 30 GIVE_WEAPON_TO_CHAR f4_driver[7] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_driver[7] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_driver[7] 30 TASK_DRIVE_BY f4_driver[6] scplayer -1 0.0 0.0 0.0 999.0 DRIVEBY_AI_ALL_DIRN FALSE 50 SET_CHAR_DECISION_MAKER f4_driver[7] f4_decision SET_CHAR_DECISION_MAKER f4_driver[6] f4_decision IF NOT IS_CAR_DEAD f4_objective_car TASK_CAR_MISSION f4_driver[7] f4_car[3] f4_objective_car MISSION_ESCORT_LEFT 100.0 DRIVINGMODE_AVOIDCARS ENDIF f4_trigger_car[3] = 1 ENDIF // ************************************************************************************************** // * * // * Guy waiting at end * // * * // ************************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2154.2065 576.4759 34.1719 150.0 150.0 10.0 FALSE AND f4_trigger[9] = 0 LVAR_INT f4_roll_out_bike LVAR_INT f4_roll_out_3 CLEAR_AREA -1818.3853 -621.8912 15.3120 10.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 dnb1 -2154.2065 576.4759 34.1719 f4_roll_out_3 CREATE_CAR FCR900 -2154.3816 577.5017 34.1719 f4_roll_out_bike SET_CAR_HEADING f4_roll_out_bike 114.1029 SET_CHAR_HEADING f4_roll_out_3 211.0992 GIVE_WEAPON_TO_CHAR f4_roll_out_3 WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_roll_out_3 WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_roll_out_3 90 SET_CHAR_DECISION_MAKER f4_roll_out_3 f4_decision TASK_STAY_IN_SAME_PLACE f4_roll_out_3 TRUE f4_trigger[9] = 1 ENDIF // ************************************************************************************************** // * * // * Guy waiting at end * // * * // ************************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2245.6750 303.3215 34.3203 150.0 150.0 10.0 FALSE AND f4_trigger[9] = 0 LVAR_INT f4_roll_out_bike_a LVAR_INT f4_roll_out_4 CLEAR_AREA -2245.6750 303.3215 34.3203 10.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 dnb1 -2245.6750 303.3215 34.3203 f4_roll_out_4 CREATE_CAR FCR900 -2244.7817 304.8253 34.3203 f4_roll_out_bike_a SET_CAR_HEADING f4_roll_out_bike_a 191.9683 SET_CHAR_HEADING f4_roll_out_4 165.1429 GIVE_WEAPON_TO_CHAR f4_roll_out_4 WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON f4_roll_out_4 WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY f4_roll_out_4 90 SET_CHAR_DECISION_MAKER f4_roll_out_4 f4_decision TASK_STAY_IN_SAME_PLACE f4_roll_out_4 TRUE f4_trigger[9] = 1 ENDIF // ************************************************************************************************** // * * // * Remove blips if guys are dead * // * * // ************************************************************************************************** IF NOT IS_CHAR_DEAD f4_biker[0] IF NOT IS_CHAR_IN_ANY_CAR f4_biker[0] TASK_DIE f4_biker[0] IF DOES_BLIP_EXIST f4_bike_blip[0] REMOVE_BLIP f4_bike_blip[0] ENDIF ENDIF ELSE IF DOES_BLIP_EXIST f4_bike_blip[0] REMOVE_BLIP f4_bike_blip[0] ENDIF ENDIF // ------------------------------------------------------------------------------- IF NOT IS_CHAR_DEAD f4_biker[2] IF NOT IS_CHAR_IN_ANY_CAR f4_biker[2] IF DOES_BLIP_EXIST f4_bike_blip[1] REMOVE_BLIP f4_bike_blip[1] ENDIF ENDIF ELSE IF DOES_BLIP_EXIST f4_bike_blip[1] REMOVE_BLIP f4_bike_blip[1] ENDIF ENDIF // ------------------------------------------------------------------------------- IF NOT IS_CHAR_DEAD f4_biker[4] IF NOT IS_CHAR_IN_ANY_CAR f4_biker[4] IF DOES_BLIP_EXIST f4_bike_blip[2] REMOVE_BLIP f4_bike_blip[2] ENDIF ENDIF ELSE IF DOES_BLIP_EXIST f4_bike_blip[2] REMOVE_BLIP f4_bike_blip[2] ENDIF ENDIF // ------------------------------------------------------------------------------- IF NOT IS_CHAR_DEAD f4_driver[0] IF NOT IS_CHAR_IN_ANY_CAR f4_driver[0] IF DOES_BLIP_EXIST f4_car_blip[0] REMOVE_BLIP f4_car_blip[0] ENDIF ENDIF ELSE IF DOES_BLIP_EXIST f4_car_blip[0] REMOVE_BLIP f4_car_blip[0] ENDIF ENDIF // ------------------------------------------------------------------------------- IF NOT IS_CHAR_DEAD f4_driver[2] IF NOT IS_CHAR_IN_ANY_CAR f4_driver[2] IF DOES_BLIP_EXIST f4_car_blip[1] REMOVE_BLIP f4_car_blip[1] ENDIF ENDIF ELSE IF DOES_BLIP_EXIST f4_car_blip[1] REMOVE_BLIP f4_car_blip[1] ENDIF ENDIF // ------------------------------------------------------------------------------- IF NOT IS_CHAR_DEAD f4_driver[4] IF NOT IS_CHAR_IN_ANY_CAR f4_driver[4] IF DOES_BLIP_EXIST f4_car_blip[2] REMOVE_BLIP f4_car_blip[2] ENDIF ENDIF ELSE IF DOES_BLIP_EXIST f4_car_blip[2] REMOVE_BLIP f4_car_blip[2] ENDIF ENDIF // ------------------------------------------------------------------------------- IF NOT IS_CHAR_DEAD f4_driver[6] IF NOT IS_CHAR_IN_ANY_CAR f4_driver[6] IF DOES_BLIP_EXIST f4_car_blip[3] REMOVE_BLIP f4_car_blip[3] ENDIF ENDIF ELSE IF DOES_BLIP_EXIST f4_car_blip[3] REMOVE_BLIP f4_car_blip[3] ENDIF ENDIF // ************************************************************************************************** // * * // * Enemy speech * // * * // ************************************************************************************************** IF NOT IS_CHAR_DEAD scplayer REPEAT 4 v IF NOT IS_CHAR_DEAD f4_biker[v] IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer f4_biker[v] 10.0 10.0 FALSE GOSUB f4_shout ENDIF ENDIF IF NOT IS_CHAR_DEAD f4_road_block[v] IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer f4_road_block[v] 10.0 10.0 FALSE GOSUB f4_shout ENDIF ENDIF ENDREPEAT REPEAT 2 v IF NOT IS_CHAR_DEAD f4_entrance[v] IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer f4_entrance[v] 10.0 10.0 FALSE GOSUB f4_shout ENDIF ENDIF ENDREPEAT IF NOT IS_CHAR_DEAD f4_roll_out_1 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer f4_roll_out_1 10.0 10.0 FALSE GOSUB f4_shout ENDIF ENDIF IF NOT IS_CHAR_DEAD f4_roll_out_2 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer f4_roll_out_2 10.0 10.0 FALSE GOSUB f4_shout ENDIF ENDIF ENDIF // ************************************************************************************************** // * * // * Enters garage * // * * // ************************************************************************************************** IF NOT IS_CAR_DEAD f4_objective_car IF IS_CHAR_IN_CAR scplayer f4_objective_car IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1742.2732 1422.6310 6.1842 4.0 4.0 4.0 TRUE SET_PLAYER_CONTROL player1 FALSE GOSUB f4_fade_out IF NOT IS_CAR_DEAD f4_motorbike[0] DELETE_CAR f4_motorbike[0] ENDIF IF NOT IS_CAR_DEAD f4_motorbike[1] DELETE_CAR f4_motorbike[1] ENDIF IF NOT IS_CAR_DEAD f4_motorbike[2] DELETE_CAR f4_motorbike[2] ENDIF IF NOT IS_CAR_DEAD f4_car[0] DELETE_CAR f4_car[0] ENDIF IF NOT IS_CAR_DEAD f4_car[1] DELETE_CAR f4_car[1] ENDIF IF NOT IS_CAR_DEAD f4_car[2] DELETE_CAR f4_car[2] ENDIF IF NOT IS_CAR_DEAD f4_car[3] DELETE_CAR f4_car[3] ENDIF IF NOT IS_CHAR_DEAD scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -1741.7063 1425.3844 6.1842 SET_CHAR_HEADING scplayer 179.2136 ENDIF CLEAR_ONSCREEN_COUNTER f4_car_damage DELETE_CAR f4_objective_car SET_PLAYER_CONTROL player1 TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT WAIT 2000 GOSUB f4_fade_in GOTO mission_passed_farlie4 ENDIF ENDIF ENDIF ENDWHILE GOTO mission_failed_farlie4 // ************************************************************************************************** // * * // * Mission Failed * // * * // ************************************************************************************************** mission_failed_farlie4: IF DOES_BLIP_EXIST f4_home_blip REMOVE_BLIP f4_home_blip ENDIF IF DOES_BLIP_EXIST f4_objective_blip REMOVE_BLIP f4_objective_blip ENDIF IF DOES_BLIP_EXIST f4_bike_blip[0] REMOVE_BLIP f4_bike_blip[0] ENDIF IF DOES_BLIP_EXIST f4_bike_blip[1] REMOVE_BLIP f4_bike_blip[1] ENDIF IF DOES_BLIP_EXIST f4_bike_blip[2] REMOVE_BLIP f4_bike_blip[2] ENDIF PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" IF IS_CAR_DEAD f4_objective_car AND f4_car_has_been_created = 1 PRINT_NOW ( F4_F ) 4000 1 // ~r~The car has been destroyed! ENDIF RETURN // ************************************************************************************************** // // Mission Passed // // ************************************************************************************************** mission_passed_farlie4: flag_wuzi_mission_counter ++ IF DOES_BLIP_EXIST f4_home_blip REMOVE_BLIP f4_home_blip ENDIF IF DOES_BLIP_EXIST f4_objective_blip REMOVE_BLIP f4_objective_blip ENDIF REGISTER_MISSION_PASSED ( FAR_4 ) PLAYER_MADE_PROGRESS 1 PLAY_MISSION_PASSED_TUNE 1 PRINT_WITH_NUMBER_BIG ( M_PASSS ) 6000 5000 1 //"Mission Passed!" //100 being the amount of cash ADD_SCORE player1 6000//amount of cash AWARD_PLAYER_MISSION_RESPECT 15 //amount of respect CLEAR_WANTED_LEVEL player1 IF DOES_BLIP_EXIST f4_bike_blip[0] REMOVE_BLIP f4_bike_blip[0] ENDIF IF DOES_BLIP_EXIST f4_bike_blip[1] REMOVE_BLIP f4_bike_blip[1] ENDIF IF DOES_BLIP_EXIST f4_bike_blip[2] REMOVE_BLIP f4_bike_blip[2] ENDIF IF NOT IS_CAR_DEAD f4_motorbike[0] DELETE_CAR f4_motorbike[0] ENDIF IF NOT IS_CAR_DEAD f4_motorbike[1] DELETE_CAR f4_motorbike[1] ENDIF IF NOT IS_CAR_DEAD f4_motorbike[2] DELETE_CAR f4_motorbike[2] ENDIF GOSUB f4_fade_in RETURN // ************************************************************************************************** f4_set_camera: CLEAR_PRINTS SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF RETURN // ************************************************************************************************** f4_restore_camera: CLEAR_PRINTS SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT RETURN // ************************************************************************************************** f4_fade_out: DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN // ************************************************************************************************** f4_fade_in: DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN // ************************************************************************************************** // // Mission Cleanup // // ************************************************************************************************** mission_cleanup_farlie4: flag_player_on_mission = 0 CLEAR_ONSCREEN_COUNTER f4_car_damage SWITCH_ROADS_BACK_TO_ORIGINAL -1478.2944 -65.4014 0.0000 -1395.4229 2.7054 10.0000 MARK_MODEL_AS_NO_LONGER_NEEDED dnb1 MARK_MODEL_AS_NO_LONGER_NEEDED dnb2 MARK_MODEL_AS_NO_LONGER_NEEDED FCR900 MARK_MODEL_AS_NO_LONGER_NEEDED micro_uzi MARK_MODEL_AS_NO_LONGER_NEEDED MULE MARK_MODEL_AS_NO_LONGER_NEEDED sabre MARK_MODEL_AS_NO_LONGER_NEEDED cellphone MARK_MODEL_AS_NO_LONGER_NEEDED MANANA MARK_MODEL_AS_NO_LONGER_NEEDED SADLER GET_GAME_TIMER timer_mobile_start IF DOES_BLIP_EXIST f4_home_blip REMOVE_BLIP f4_home_blip ENDIF IF DOES_BLIP_EXIST f4_objective_blip REMOVE_BLIP f4_objective_blip ENDIF IF DOES_BLIP_EXIST f4_outside REMOVE_BLIP f4_outside ENDIF IF DOES_BLIP_EXIST f4_bike_blip[0] REMOVE_BLIP f4_bike_blip[0] ENDIF IF DOES_BLIP_EXIST f4_bike_blip[1] REMOVE_BLIP f4_bike_blip[1] ENDIF IF DOES_BLIP_EXIST f4_bike_blip[2] REMOVE_BLIP f4_bike_blip[2] ENDIF IF DOES_BLIP_EXIST f4_car_blip[0] REMOVE_BLIP f4_car_blip[0] ENDIF IF DOES_BLIP_EXIST f4_car_blip[1] REMOVE_BLIP f4_car_blip[1] ENDIF IF DOES_BLIP_EXIST f4_car_blip[2] REMOVE_BLIP f4_car_blip[2] ENDIF IF DOES_BLIP_EXIST f4_car_blip[3] REMOVE_BLIP f4_car_blip[3] ENDIF IF NOT IS_CHAR_DEAD scplayer IF IS_GARAGE_OPEN fdorsfe AND NOT LOCATE_CHAR_ANY_MEANS_3D scplayer -2161.6282 654.6520 51.3706 10.0 10.0 10.0 FALSE CLOSE_GARAGE fdorsfe ENDIF ENDIF MISSION_HAS_FINISHED RETURN // ************************************************************************************************** // // Keyboard Shortcuts // // ************************************************************************************************** f4_keys: LVAR_INT doc2_dummy_car IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer -1403.2834 -395.7443 11.0000 SET_CHAR_HEADING scplayer 343.9661 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer doc2_dummy_car POP_CAR_BOOT doc2_dummy_car ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F GOTO f4_main_loop2 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H IF NOT IS_CHAR_DEAD scplayer ADD_ARMOUR_TO_CHAR scplayer 100 INCREASE_PLAYER_MAX_HEALTH player1 100 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_Z GOTO quick_test ENDIF RETURN f4_shout: IF TIMERB > 15000 IF NOT IS_MESSAGE_BEING_DISPLAYED SWITCH f4_rnd CASE 0 $f4_print = &FAR4_AA // You won't get far! f4_audio = SOUND_FAR4_AA GOSUB f4_load_sample TIMERB = 0 BREAK CASE 1 $f4_print = &FAR4_AB // Stop that car! f4_audio = SOUND_FAR4_AB GOSUB f4_load_sample TIMERB = 0 BREAK CASE 2 $f4_print = &FAR4_AC // He's getting away! f4_audio = SOUND_FAR4_AC GOSUB f4_load_sample TIMERB = 0 BREAK CASE 3 $f4_print = &FAR4_AD // Stop that car at all costs! f4_audio = SOUND_FAR4_AD GOSUB f4_load_sample TIMERB = 0 BREAK CASE 4 $f4_print = &FAR4_AE // Get after him! f4_audio = SOUND_FAR4_AE GOSUB f4_load_sample TIMERB = 0 BREAK CASE 5 $f4_print = &FAR4_AG // Give up the car and we'll spare you! f4_audio = SOUND_FAR4_AG GOSUB f4_load_sample TIMERB = 0 BREAK CASE 6 $f4_print = &FAR4_AH // That's our property! f4_audio = SOUND_FAR4_AH GOSUB f4_load_sample TIMERB = 0 BREAK CASE 7 $f4_print = &FAR4_AJ // After him, no quarter! f4_audio = SOUND_FAR4_AJ GOSUB f4_load_sample TIMERB = 0 BREAK ENDSWITCH f4_rnd ++ IF f4_rnd = 8 f4_rnd = 0 ENDIF ENDIF ENDIF RETURN f4_load_sample: CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 f4_audio f4_playing = 0 RETURN f4_play_sample: IF HAS_MISSION_AUDIO_LOADED 1 AND f4_playing = 0 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $f4_print ) 10000 1 f4_playing = 1 ENDIF IF HAS_MISSION_AUDIO_FINISHED 1 AND f4_playing = 1 CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT $f4_print f4_playing = 2 ENDIF RETURN // ************************************************************************************************** } /* {-------------------------- FARLIE 4 ---------------------------} [F4_T0:FARLIE4] ~s~Pick up the car from the airport ~y~car park~s~. [F4_T2:FARLIE4] ~s~Get the car back in one piece! [F4_D:FARLIE4] Damage: [F4_F:FARLIE4] ~r~The car has been destroyed! [F4_T4:FARLIE4] ~s~Get back in the ~b~car! [F4_T5:FARLIE4] It's an ambush, the Vietnamese gang are covering the exits! [F4_T7:FARLIE4] ~s~Get the ~b~car~s~! [F4_T8:FARLIE4] ~s~Take the car back to the ~y~garage~s~. [F4_T9:FARLIE4] ~s~Dodge the enemy ~r~bikes~s~! */ MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* DRIVER 6 ****************************************** // ********************************* Mission Description *********************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME farlie5 // Mission start stuff GOSUB mission_start_driv6 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_driv6_failed ENDIF GOSUB mission_cleanup_driv6 MISSION_END { // Variables for mission LVAR_INT d6_player_car LVAR_FLOAT d6_chase_start_x d6_chase_start_y d6_chase_start_z LVAR_FLOAT d6_destination_x d6_destination_y d6_destination_z LVAR_INT d6_next_checkpoint LVAR_FLOAT d6_left_offset_x d6_left_offset_y d6_left_offset_z LVAR_FLOAT d6_right_offset_x d6_right_offset_y d6_right_offset_z LVAR_INT d6_temp_driver LVAR_INT d6_cur_num_of_chase_bikes_created d6_total_num_of_chase_bikes LVAR_INT d6_num_of_chase_bikes_close LVAR_INT d6_chase_bikes[14] d6_chase_bike_drivers[14] d6_chase_bike_passengers[14] LVAR_FLOAT d6_chase_bike_x d6_chase_bike_y d6_chase_bike_z d6_chase_bike_heading LVAR_INT d6_num_of_chase_bike_groups_created LVAR_INT d6_player_car_health d6_door_damage LVAR_INT d6_car_chat_seq LVAR_INT d6_task_status d6_seq_progress LVAR_INT d6_index d6_one_past_end_of_group d6_index_within_group // for mission passed cutscene LVAR_FLOAT d6_camera_x d6_camera_y d6_camera_z // mission audio LVAR_TEXT_LABEL d6_audio_text[7] LVAR_INT d6_audio_sound[7] LVAR_INT d6_audio_is_playing d6_audio_index d6_total_audio_to_play d6_started_talking LVAR_INT d6_current_audio_needed CONST_INT D6_MISSION_FAILED_AUDIO 0 CONST_INT D6_MISSION_PASSED_AUDIO 1 // flags LVAR_INT d6_fake_creates LVAR_INT d6_player_picked_up_decoy_car d6_countryside_print_cleared d6_bike_chase_started //LVAR_INT d6_triangle_pressed_last_frame d6_player_already_tried_to_leave_car LVAR_INT d6_driver_getting_back_on_bike[14] d6_passenger_getting_back_on_bike[14] LVAR_INT d6_chase_bike_driver_dead_flag[14] d6_chase_bike_passenger_dead_flag[14] LVAR_INT d6_driver_mission_changed_to_ram[14] d6_passenger_mission_changed_to_ram[14] LVAR_INT d6_driver_sent_to_bike_to_ram_player[14] d6_passenger_sent_to_bike_to_ram_player[14] LVAR_INT d6_player_car_armoured //d6_left_door_smashed d6_right_door_smashed d6_boot_smashed //LVAR_INT d6_player_reached_bridge d6_player_passed_bridge // temp for view_integer_variable VAR_INT d6_player_in_ravine d6_player_in_tunnel LVAR_INT d6_player_reached_zeroth_checkpoint // temp for view_integer_variable VAR_INT d6_player_reached_first_creation_pt d6_player_reached_second_creation_pt LVAR_INT d6_player_reached_third_creation_pt d6_player_reached_fourth_creation_pt // temp for view_integer_variable VAR_INT d6_player_reached_fifth_creation_pt d6_player_reached_sixth_creation_pt LVAR_INT d6_first_warning_given d6_second_warning_given LVAR_INT d6_reset_timer_flag LVAR_INT d6_cutscene_skipped d6_first_chase_bike_near_player_car d6_first_bikes_started_driveby // blips LVAR_INT d6_player_car_blip d6_countryside_blip d6_next_checkpoint_blip d6_destination_blip // **************************************** Mission Start ********************************** mission_start_driv6: REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT FARLIE5 flag_player_on_mission = 1 WAIT 0 // ************************************ Initialise variables ******************************* d6_chase_start_x = -1957.67 d6_chase_start_y = -2443.7 d6_chase_start_z = 30.83 d6_destination_x = -1571.4 d6_destination_y = -2742.09 d6_destination_z = 47.57 d6_cur_num_of_chase_bikes_created = 0 d6_total_num_of_chase_bikes = 14 d6_index = 0 WHILE d6_index < d6_total_num_of_chase_bikes d6_driver_getting_back_on_bike[d6_index] = 0 d6_passenger_getting_back_on_bike[d6_index] = 0 d6_chase_bike_driver_dead_flag[d6_index] = 0 d6_chase_bike_passenger_dead_flag[d6_index] = 0 d6_driver_mission_changed_to_ram[d6_index] = 0 d6_passenger_mission_changed_to_ram[d6_index] = 0 d6_driver_sent_to_bike_to_ram_player[d6_index] = 0 d6_passenger_sent_to_bike_to_ram_player[d6_index] = 0 d6_index++ ENDWHILE //d6_triangle_pressed_last_frame = 0 //d6_player_already_tried_to_leave_car = 0 d6_player_picked_up_decoy_car = 0 d6_countryside_print_cleared = 0 d6_bike_chase_started = 0 //d6_player_reached_bridge = 0 //d6_player_passed_bridge = 0 d6_player_in_ravine = 0 d6_player_in_tunnel = 0 d6_player_reached_zeroth_checkpoint = 0 d6_player_reached_first_creation_pt = 0 d6_player_reached_second_creation_pt = 0 d6_player_reached_third_creation_pt = 0 d6_player_reached_fourth_creation_pt = 0 d6_player_reached_fifth_creation_pt = 0 d6_player_reached_sixth_creation_pt = 0 d6_num_of_chase_bike_groups_created = 0 d6_player_car_armoured = 0 //d6_left_door_smashed = 0 //d6_right_door_smashed = 0 //d6_boot_smashed = 0 d6_first_warning_given = 0 d6_second_warning_given = 0 d6_first_chase_bike_near_player_car = 0 d6_first_bikes_started_driveby = 0 d6_audio_is_playing = 0 d6_audio_index = 0 d6_started_talking = 0 d6_fake_creates = 0 // ****************************************START OF CUTSCENE******************************* SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 1 LOAD_CUTSCENE FARL_5a WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF SET_AREA_VISIBLE 0 // ****************************************END OF CUTSCENE********************************* // CREATE statements to keep the compiler happy IF d6_fake_creates = 1 CREATE_CAR RANCHER 0.0 0.0 -100.0 d6_player_car d6_index = 0 WHILE d6_index < d6_total_num_of_chase_bikes CREATE_CAR SANCHEZ d6_chase_bike_x d6_chase_bike_y -100.0 d6_chase_bikes[d6_index] CREATE_CHAR_INSIDE_CAR d6_chase_bikes[d6_index] PEDTYPE_MISSION1 DNB3 d6_chase_bike_drivers[d6_index] CREATE_CHAR_AS_PASSENGER d6_chase_bikes[d6_index] PEDTYPE_MISSION1 DNB2 0 d6_chase_bike_passengers[d6_index] d6_index++ ENDWHILE ENDIF //SET_UP_TAXI_SHORTCUT -2149.61 642.9 52.0 180.0 -2023.98 -2512.47 32.94 235.3 REQUEST_MODEL SANCHEZ REQUEST_MODEL DNB3 REQUEST_MODEL DNB2 REQUEST_MODEL MP5LNG WHILE NOT HAS_MODEL_LOADED SANCHEZ OR NOT HAS_MODEL_LOADED DNB3 OR NOT HAS_MODEL_LOADED DNB2 OR NOT HAS_MODEL_LOADED MP5LNG WAIT 0 ENDWHILE SWITCH_CAR_GENERATOR car_gen_pine[3] 0 SWITCH_CAR_GENERATOR car_gen_pine[4] 0 SWITCH_CAR_GENERATOR car_gen_pine[5] 0 SET_CHAR_COORDINATES scplayer -2154.20 645.31 51.39 SET_CHAR_HEADING scplayer 270.0 GOSUB d6_create_player_car ADD_BLIP_FOR_CAR d6_player_car d6_player_car_blip SET_BLIP_AS_FRIENDLY d6_player_car_blip TRUE // fades the screen in SET_FADING_COLOUR 0 0 0 WAIT 500 DO_FADE 1500 FADE_IN // request models //WAIT 1500 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON PRINT_NOW ( DRV6_8 ) 10000 0 // debug //SET_CHAR_COORDINATES scplayer -1958.36 -2447.92 30.67 //SET_CHAR_HEADING scplayer 340.51 //SET_CAMERA_BEHIND_PLAYER // temp //VAR_INT num_of_chase_bike_groups_created cur_num_of_chase_bikes player_car_health //VIEW_INTEGER_VARIABLE num_of_chase_bike_groups_created num_of_chase_bike_groups_created //VIEW_INTEGER_VARIABLE cur_num_of_chase_bikes cur_num_of_chase_bikes //VIEW_INTEGER_VARIABLE d6_player_car_health player_car_health //VIEW_INTEGER_VARIABLE d6_player_in_ravine d6_player_in_ravine //VIEW_INTEGER_VARIABLE d6_player_reached_second_creation_pt d6_player_reached_second_creation_pt //VIEW_INTEGER_VARIABLE d6_player_in_tunnel d6_player_in_tunnel //VIEW_INTEGER_VARIABLE d6_player_reached_fifth_creation_pt d6_player_reached_fifth_creation_pt // Mission loop driv6_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_driv6_passed ENDIF // temp //cur_num_of_chase_bikes = d6_cur_num_of_chase_bikes_created //num_of_chase_bike_groups_created = d6_num_of_chase_bike_groups_created //player_car_health = d6_player_car_health IF NOT d6_player_picked_up_decoy_car = 1 IF NOT IS_CAR_DEAD d6_player_car IF IS_CHAR_IN_CAR scplayer d6_player_car REMOVE_BLIP d6_player_car_blip d6_player_picked_up_decoy_car = 1 ADD_BLIP_FOR_COORD -1963.84 -2441.49 30.78 d6_countryside_blip PRINT_NOW ( DRV6_19 ) 10000 0 // Drive out to the countryside. PRINT ( DRV6_17 ) 7000 0 // Do not leave the decoy car. IF d6_trip_skips_available = 1 SET_UP_SKIP -1990.65 -2428.65 30.77 225.0 ENDIF ENDIF ENDIF ENDIF IF d6_player_picked_up_decoy_car = 1 AND NOT d6_bike_chase_started = 1 IF NOT IS_CAR_DEAD d6_player_car IF NOT d6_countryside_print_cleared = 1 AND LOCATE_CHAR_ANY_MEANS_2D scplayer -1990.65 -2428.65 50.0 50.0 FALSE CLEAR_THIS_PRINT DRV6_19 d6_countryside_print_cleared = 1 ENDIF IF NOT d6_trip_skips_available = 1 AND LOCATE_CHAR_ANY_MEANS_2D scplayer -1963.84 -2441.49 25.0 25.0 FALSE d6_trip_skips_available = 1 ENDIF IF LOCATE_CHAR_IN_CAR_3D scplayer -1963.84 -2441.49 30.78 4.0 4.0 2.0 TRUE // IF NOT IS_CAR_DEAD d6_player_car // LOCK_CAR_DOORS d6_player_car CARLOCK_LOCKED_PLAYER_INSIDE // ENDIF // // SET_CAMERA_BEHIND_PLAYER // PRINT_NOW ( DRV6_14 ) 10000 0 // Drive to the first checkpoint. SET_PLAYER_CONTROL player1 OFF CLEAR_SKIP REMOVE_BLIP d6_countryside_blip GOSUB d6_play_first_cutscene CHECKPOINT_SAVE 1 ADD_BLIP_FOR_COORD -1867.14 -2442.39 31.24 d6_next_checkpoint_blip CHANGE_BLIP_COLOUR d6_next_checkpoint_blip RED CREATE_CHECKPOINT CHECKPOINT_TUBE -1867.14 -2442.39 31.24 -1178.32 -2638.85 10.8 4.0 d6_next_checkpoint DISPLAY_ONSCREEN_COUNTER_WITH_STRING d6_door_health COUNTER_DISPLAY_BAR ( DRV6_18 ) //SET_ONSCREEN_COUNTER_COLOUR d6_door_health HUD_COLOUR_RED d6_door_damage = 0 d6_door_health = 100 SET_CAR_HEALTH d6_player_car 9000 PRINT_NOW ( DRV6_2 ) 10000 0 //PRINT ( DRV6_3 ) 7000 0 PRINT ( DRV6_17 ) 7000 0 PRINT ( DRV6_4 ) 10000 0 PRINT ( DRV6_15 ) 10000 0 d6_bike_chase_started = 1 TIMERB = 0 ENDIF ENDIF ENDIF IF d6_bike_chase_started = 1 IF IS_WANTED_LEVEL_GREATER player1 0 CLEAR_WANTED_LEVEL player1 ENDIF IF NOT IS_CAR_DEAD d6_player_car IF NOT d6_first_bikes_started_driveby = 1 AND TIMERB > 2000 IF NOT IS_CHAR_DEAD d6_chase_bike_passengers[0] AND NOT IS_CHAR_DEAD d6_chase_bike_passengers[1] TASK_DRIVE_BY d6_chase_bike_passengers[0] scplayer -1 0.0 0.0 0.0 999999.0 DRIVEBY_AI_ALL_DIRN FALSE 60 TASK_DRIVE_BY d6_chase_bike_passengers[1] scplayer -1 0.0 0.0 0.0 999999.0 DRIVEBY_AI_ALL_DIRN FALSE 60 d6_first_bikes_started_driveby = 1 ENDIF ENDIF // car only damaged when hit by bullets or flipped IF IS_CAR_UPSIDEDOWN d6_player_car IF d6_player_car_armoured = 1 SET_CAR_PROOFS d6_player_car FALSE FALSE FALSE FALSE FALSE d6_player_car_armoured = 0 ENDIF ELSE IF NOT d6_player_car_armoured = 1 SET_CAR_PROOFS d6_player_car FALSE TRUE TRUE TRUE TRUE d6_player_car_armoured = 1 ENDIF ENDIF GOSUB d6_keep_bikers_on_bikes // bikes escort at rear while in ravine or in tunnel // (easy to make them drive into walls otherwise) IF NOT d6_player_reached_second_creation_pt = 1 IF NOT d6_player_in_ravine = 1 IF LOCATE_CAR_2D d6_player_car -1181.93 -2642.33 300.0 300.0 FALSE // bikes escort at rear while player's in ravine GOSUB d6_set_occupied_bikes_escort_rear d6_player_in_ravine = 1 ENDIF ELSE IF NOT LOCATE_CAR_2D d6_player_car -1181.93 -2642.33 300.0 300.0 FALSE // set bikes back to usual type of escort after ravine GOSUB d6_set_occupied_bikes_escort_normal d6_player_in_ravine = 0 ENDIF ENDIF ELSE IF d6_player_in_ravine = 1 d6_player_in_ravine = 0 ENDIF ENDIF IF d6_player_reached_fifth_creation_pt = 1 IF NOT d6_player_in_tunnel = 1 IF LOCATE_CAR_2D d6_player_car -519.74 -2782.11 214.0 214.0 FALSE // bikes escort at rear while player's in tunnel GOSUB d6_set_occupied_bikes_escort_rear d6_player_in_tunnel = 1 ENDIF ELSE IF NOT LOCATE_CAR_2D d6_player_car -519.74 -2782.11 214.0 214.0 FALSE // set bikes back to usual type of escort after tunnel GOSUB d6_set_occupied_bikes_escort_normal d6_player_in_tunnel = 0 ENDIF ENDIF ELSE IF d6_player_in_tunnel = 1 d6_player_in_tunnel = 0 ENDIF ENDIF IF NOT d6_player_reached_zeroth_checkpoint = 1 IF LOCATE_CAR_3D d6_player_car -1867.14 -2442.39 31.24 6.0 6.0 3.0 FALSE REMOVE_BLIP d6_next_checkpoint_blip DELETE_CHECKPOINT d6_next_checkpoint d6_player_reached_zeroth_checkpoint = 1 ADD_BLIP_FOR_COORD -1178.32 -2638.85 10.8 d6_next_checkpoint_blip CHANGE_BLIP_COLOUR d6_next_checkpoint_blip RED CREATE_CHECKPOINT CHECKPOINT_TUBE -1178.32 -2638.85 10.8 -654.95 -2469.35 33.30 4.0 d6_next_checkpoint ENDIF ENDIF IF d6_player_reached_zeroth_checkpoint = 1 AND NOT d6_player_reached_first_creation_pt = 1 IF LOCATE_CAR_3D d6_player_car -1178.32 -2638.85 10.8 6.0 6.0 3.0 FALSE REMOVE_BLIP d6_next_checkpoint_blip DELETE_CHECKPOINT d6_next_checkpoint GOSUB d6_create_next_chase_bike_group d6_player_reached_first_creation_pt = 1 ADD_BLIP_FOR_COORD -654.95 -2469.35 33.30 d6_next_checkpoint_blip CHANGE_BLIP_COLOUR d6_next_checkpoint_blip RED CREATE_CHECKPOINT CHECKPOINT_TUBE -654.95 -2469.35 33.30 -309.54 -2248.81 29.59 4.0 d6_next_checkpoint ENDIF ENDIF IF d6_player_reached_first_creation_pt = 1 AND NOT d6_player_reached_second_creation_pt = 1 IF LOCATE_CAR_3D d6_player_car -654.95 -2469.35 33.30 6.0 6.0 3.0 FALSE REMOVE_BLIP d6_next_checkpoint_blip DELETE_CHECKPOINT d6_next_checkpoint GOSUB d6_create_next_chase_bike_group d6_player_reached_second_creation_pt = 1 ADD_BLIP_FOR_COORD -309.54 -2248.81 29.59 d6_next_checkpoint_blip CHANGE_BLIP_COLOUR d6_next_checkpoint_blip RED CREATE_CHECKPOINT CHECKPOINT_TUBE -309.54 -2248.81 29.59 -165.70 -2421.71 35.10 4.0 d6_next_checkpoint ENDIF ENDIF IF d6_player_reached_second_creation_pt = 1 AND NOT d6_player_reached_third_creation_pt = 1 IF LOCATE_CAR_3D d6_player_car -309.54 -2248.81 29.59 6.0 6.0 3.0 FALSE REMOVE_BLIP d6_next_checkpoint_blip DELETE_CHECKPOINT d6_next_checkpoint GOSUB d6_create_next_chase_bike_group d6_player_reached_third_creation_pt = 1 ADD_BLIP_FOR_COORD -165.70 -2421.71 35.10 d6_next_checkpoint_blip CHANGE_BLIP_COLOUR d6_next_checkpoint_blip RED CREATE_CHECKPOINT CHECKPOINT_TUBE -165.70 -2421.71 35.10 -191.26 -2822.52 42.09 4.0 d6_next_checkpoint ENDIF ENDIF IF d6_player_reached_third_creation_pt = 1 AND NOT d6_player_reached_fourth_creation_pt = 1 IF LOCATE_CAR_3D d6_player_car -165.70 -2421.71 35.10 6.0 6.0 3.0 FALSE REMOVE_BLIP d6_next_checkpoint_blip DELETE_CHECKPOINT d6_next_checkpoint GOSUB d6_create_next_chase_bike_group d6_player_reached_fourth_creation_pt = 1 ADD_BLIP_FOR_COORD -191.26 -2822.52 42.09 d6_next_checkpoint_blip CHANGE_BLIP_COLOUR d6_next_checkpoint_blip RED CREATE_CHECKPOINT CHECKPOINT_TUBE -191.26 -2822.52 42.09 -946.91 -2844.84 67.36 4.0 d6_next_checkpoint ENDIF ENDIF IF d6_player_reached_fourth_creation_pt = 1 AND NOT d6_player_reached_fifth_creation_pt = 1 IF LOCATE_CAR_3D d6_player_car -191.26 -2822.52 42.09 6.0 6.0 3.0 FALSE REMOVE_BLIP d6_next_checkpoint_blip DELETE_CHECKPOINT d6_next_checkpoint GOSUB d6_create_next_chase_bike_group d6_player_reached_fifth_creation_pt = 1 ADD_BLIP_FOR_COORD -946.91 -2844.84 67.36 d6_next_checkpoint_blip CHANGE_BLIP_COLOUR d6_next_checkpoint_blip RED CREATE_CHECKPOINT CHECKPOINT_TUBE -946.91 -2844.84 67.36 d6_destination_x d6_destination_y d6_destination_z 4.0 d6_next_checkpoint ENDIF ENDIF IF d6_player_reached_fifth_creation_pt = 1 AND NOT d6_player_reached_sixth_creation_pt = 1 IF LOCATE_CAR_3D d6_player_car -946.91 -2844.84 67.36 6.0 6.0 3.0 FALSE REMOVE_BLIP d6_next_checkpoint_blip DELETE_CHECKPOINT d6_next_checkpoint GOSUB d6_create_next_chase_bike_group d6_player_reached_sixth_creation_pt = 1 ADD_BLIP_FOR_COORD d6_destination_x d6_destination_y d6_destination_z d6_destination_blip CHANGE_BLIP_COLOUR d6_destination_blip RED CREATE_CHECKPOINT CHECKPOINT_EMPTYTUBE d6_destination_x d6_destination_y d6_destination_z 0.0 0.0 0.0 4.0 d6_next_checkpoint ENDIF ENDIF IF d6_door_damage < 100 GET_CAR_HEALTH d6_player_car d6_player_car_health // as car health decreases from 9000 to 3000, door damage increases from 0 to 100 d6_door_damage = d6_player_car_health - 3000 d6_door_damage /= 60 d6_door_health = d6_door_damage d6_door_damage *= -1 d6_door_damage += 100 ENDIF // change appearance of doors as the damage meter increases IF d6_door_damage <= 45 IF IS_CHAR_SITTING_IN_CAR scplayer d6_player_car OPEN_CAR_DOOR_A_BIT d6_player_car FRONT_LEFT_DOOR 0.0 OPEN_CAR_DOOR_A_BIT d6_player_car FRONT_RIGHT_DOOR 0.0 ENDIF CONTROL_CAR_DOOR d6_player_car FRONT_LEFT_DOOR DT_DOOR_INTACT 0.0 CONTROL_CAR_DOOR d6_player_car FRONT_RIGHT_DOOR DT_DOOR_INTACT 0.0 ENDIF IF d6_door_damage > 45 AND d6_door_damage <= 80 IF IS_CHAR_SITTING_IN_CAR scplayer d6_player_car OPEN_CAR_DOOR_A_BIT d6_player_car FRONT_LEFT_DOOR 0.0 OPEN_CAR_DOOR_A_BIT d6_player_car FRONT_RIGHT_DOOR 0.0 ENDIF CONTROL_CAR_DOOR d6_player_car FRONT_LEFT_DOOR DT_DOOR_BASHED 0.0 CONTROL_CAR_DOOR d6_player_car FRONT_RIGHT_DOOR DT_DOOR_BASHED 0.0 ENDIF IF d6_door_damage > 80 AND d6_door_damage < 100 CONTROL_CAR_DOOR d6_player_car FRONT_LEFT_DOOR DT_DOOR_BASHED_AND_SWINGING_FREE -1.0 CONTROL_CAR_DOOR d6_player_car FRONT_RIGHT_DOOR DT_DOOR_BASHED_AND_SWINGING_FREE -1.0 ENDIF IF d6_door_damage >= 100 CONTROL_CAR_DOOR d6_player_car FRONT_LEFT_DOOR DT_DOOR_MISSING -1.0 CONTROL_CAR_DOOR d6_player_car FRONT_RIGHT_DOOR DT_DOOR_MISSING -1.0 ENDIF IF d6_door_damage > 80 AND NOT d6_first_warning_given = 1 PRINT_NOW ( DRV6_6 ) 7000 0 d6_first_warning_given = 1 ENDIF IF d6_door_damage >= 100 AND NOT d6_second_warning_given = 1 CLEAR_ONSCREEN_COUNTER d6_door_health PRINT_NOW ( DRV6_16 ) 5000 0 TIMERA = 0 d6_second_warning_given = 1 ENDIF IF d6_second_warning_given = 1 // if no bikers near either of the doors, reset timer GOSUB d6_reset_timer_check ENDIF ENDIF ENDIF // mission pass/fail conditions IF NOT d6_player_picked_up_decoy_car = 1 IF IS_CAR_DEAD d6_player_car CLEAR_PRINTS PRINT_NOW ( DRV6_11 ) 5000 0 GOTO mission_driv6_failed ENDIF ENDIF IF d6_player_picked_up_decoy_car = 1 IF NOT IS_CHAR_IN_ANY_CAR scplayer IF d6_bike_chase_started = 1 GOSUB d6_bikes_stop_and_look // only play audio if anyone's near the player LVAR_INT d6_any_chars_near_player d6_any_chars_near_player = 0 d6_index = 0 WHILE d6_index < d6_cur_num_of_chase_bikes_created AND NOT d6_any_chars_near_player = 1 IF NOT IS_CHAR_DEAD d6_chase_bike_drivers[d6_index] IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer d6_chase_bike_drivers[d6_index] 20.0 20.0 20.0 FALSE d6_any_chars_near_player = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD d6_chase_bike_passengers[d6_index] IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer d6_chase_bike_passengers[d6_index] 20.0 20.0 20.0 FALSE d6_any_chars_near_player = 1 ENDIF ENDIF d6_index++ ENDWHILE IF d6_any_chars_near_player = 1 d6_current_audio_needed = D6_MISSION_FAILED_AUDIO GOSUB d6_setup_audio_data d6_audio_index = 1 WHILE d6_audio_index < d6_total_audio_to_play WAIT 0 GOSUB d6_load_and_play_audio ENDWHILE ENDIF GOSUB d6_disengage_bikes ENDIF CLEAR_PRINTS PRINT_NOW ( DRV6_7 ) 5000 0 GOTO mission_driv6_failed ENDIF ENDIF IF d6_bike_chase_started = 1 IF d6_second_warning_given = 1 AND TIMERA > 10000 d6_current_audio_needed = D6_MISSION_FAILED_AUDIO GOSUB d6_setup_audio_data WHILE d6_audio_index < 1 WAIT 0 GOSUB d6_load_and_play_audio ENDWHILE WHILE d6_audio_index < d6_total_audio_to_play WAIT 0 GOSUB d6_load_and_play_audio ENDWHILE GOSUB d6_disengage_bikes CLEAR_PRINTS PRINT_NOW ( DRV6_7 ) 5000 0 GOTO mission_driv6_failed ENDIF IF d6_player_reached_sixth_creation_pt = 1 IF LOCATE_CHAR_IN_CAR_3D scplayer d6_destination_x d6_destination_y d6_destination_z 6.0 6.0 3.0 TRUE SET_PLAYER_CONTROL player1 OFF REMOVE_BLIP d6_destination_blip DELETE_CHECKPOINT d6_next_checkpoint GOSUB d6_play_mission_passed_cutscene GOTO mission_driv6_passed ENDIF ENDIF ENDIF GOTO driv6_loop // ********************************** Mission GOSUBS ************************************ // ************************************************************ // Create player's car // ************************************************************ d6_create_player_car: REQUEST_MODEL RANCHER WHILE NOT HAS_MODEL_LOADED RANCHER WAIT 0 ENDWHILE CLEAR_AREA -2149.95 644.31 52.35 100.0 FALSE CREATE_CAR RANCHER -2149.95 644.31 52.35 d6_player_car SET_CAR_HEADING d6_player_car 180.0 SET_CAR_STRONG d6_player_car TRUE SET_CAN_BURST_CAR_TYRES d6_player_car FALSE SET_CAR_HEALTH d6_player_car 9000 SET_CAR_CAN_BE_VISIBLY_DAMAGED d6_player_car FALSE //SET_CAR_PROOFS d6_player_car TRUE TRUE TRUE TRUE TRUE RETURN // ************************************************************ // Create first two chase bikes for cutscene // ************************************************************ d6_create_first_chase_bikes: // CREATE_CAR SANCHEZ -2013.89 -2404.18 30.29 d6_chase_bikes[0] // SET_CAR_HEADING d6_chase_bikes[0] 221.95 // CREATE_CAR SANCHEZ -2016.9 -2404.14 30.3 d6_chase_bikes[1] // SET_CAR_HEADING d6_chase_bikes[1] 224.23 // CREATE_CAR SANCHEZ -2010.39 -2410.84 30.3 d6_chase_bikes[0] // SET_CAR_HEADING d6_chase_bikes[0] 230.57 // CREATE_CAR SANCHEZ -2011.75 -2413.4 30.3 d6_chase_bikes[1] // SET_CAR_HEADING d6_chase_bikes[1] 233.07 CREATE_CAR SANCHEZ -2015.66 -2408.82 30.28 d6_chase_bikes[0] SET_CAR_HEADING d6_chase_bikes[0] 229.35 CREATE_CAR SANCHEZ -2017.07 -2410.37 30.3 d6_chase_bikes[1] SET_CAR_HEADING d6_chase_bikes[1] 225.81 d6_index = 0 WHILE d6_index < 2 CREATE_CHAR_INSIDE_CAR d6_chase_bikes[d6_index] PEDTYPE_MISSION1 DNB3 d6_chase_bike_drivers[d6_index] CREATE_CHAR_AS_PASSENGER d6_chase_bikes[d6_index] PEDTYPE_MISSION1 DNB2 0 d6_chase_bike_passengers[d6_index] GIVE_WEAPON_TO_CHAR d6_chase_bike_passengers[d6_index] WEAPONTYPE_MP5 99999 SET_CAR_ONLY_DAMAGED_BY_PLAYER d6_chase_bikes[d6_index] TRUE SET_CAR_TRACTION d6_chase_bikes[d6_index] 2.0 SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE d6_chase_bike_drivers[d6_index] KNOCKOFFBIKE_ALWAYSNORMAL SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE d6_chase_bike_passengers[d6_index] KNOCKOFFBIKE_ALWAYSNORMAL d6_cur_num_of_chase_bikes_created++ d6_index++ ENDWHILE d6_num_of_chase_bike_groups_created++ RETURN // ************************************************************ // Show bikes first closing in on player // ************************************************************ d6_play_first_cutscene: DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_AREA d6_chase_start_x d6_chase_start_y d6_chase_start_z 300.0 FALSE CLEAR_PRINTS SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON IF NOT IS_CAR_DEAD d6_player_car SET_CAR_COORDINATES d6_player_car d6_chase_start_x d6_chase_start_y d6_chase_start_z SET_CAR_HEADING d6_player_car 241.85 ENDIF // // preload audio // LOAD_MISSION_AUDIO 1 SOUND_FAR5_BB // WHILE NOT HAS_MISSION_AUDIO_LOADED 1 // WAIT 0 // ENDWHILE GOSUB d6_create_first_chase_bikes SET_FIXED_CAMERA_POSITION -1955.92 -2447.69 30.78 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1962.83 -2441.79 30.44 JUMP_CUT DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE d6_cutscene_skipped = 1 SKIP_CUTSCENE_START IF NOT IS_CAR_DEAD d6_player_car IF NOT IS_CHAR_DEAD d6_chase_bike_drivers[0] AND NOT IS_CAR_DEAD d6_chase_bikes[0] // TASK_CAR_DRIVE_TO_COORD d6_chase_bike_drivers[0] d6_chase_bikes[0] -1989.59 -2428.97 30.29 30.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD d6_chase_bike_drivers[0] d6_chase_bikes[0] -1977.97 -2435.05 30.3 30.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_AVOIDCARS ENDIF IF NOT IS_CHAR_DEAD d6_chase_bike_drivers[1] AND NOT IS_CAR_DEAD d6_chase_bikes[1] // TASK_CAR_DRIVE_TO_COORD d6_chase_bike_drivers[1] d6_chase_bikes[1] -1990.75 -2430.89 30.29 30.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD d6_chase_bike_drivers[1] d6_chase_bikes[1] -1979.45 -2437.47 30.3 30.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_AVOIDCARS ENDIF ENDIF // PRINT_NOW FAR5_BB 10000 1 // PLAY_MISSION_AUDIO 1 // d6_audio_is_playing = 2 TIMERB = 0 WHILE TIMERB < 2500 WAIT 0 // IF HAS_MISSION_AUDIO_FINISHED 1 // AND NOT d6_audio_is_playing = 0 // CLEAR_PRINTS // d6_audio_is_playing = 0 // ENDIF ENDWHILE IF NOT IS_CAR_DEAD d6_chase_bikes[0] // SET_FIXED_CAMERA_POSITION -1953.61 -2453.81 34.47 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -1961.58 -2442.97 32.5 JUMP_CUT SET_FIXED_CAMERA_POSITION -1989.91 -2435.33 30.68 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1987.22 -2436.07 30.82 JUMP_CUT ENDIF IF NOT IS_CAR_DEAD d6_chase_bikes[0] // SET_CAR_COORDINATES d6_chase_bikes[0] -1990.59 -2429.97 30.29 // SET_CAR_HEADING d6_chase_bikes[0] 228.93 SET_CAR_COORDINATES d6_chase_bikes[0] -1985.6 -2435.14 30.3 SET_CAR_HEADING d6_chase_bikes[0] 254.67 ENDIF IF NOT IS_CAR_DEAD d6_chase_bikes[1] // SET_CAR_COORDINATES d6_chase_bikes[1] -1991.75 -2431.89 30.29 // SET_CAR_HEADING d6_chase_bikes[1] 239.99 SET_CAR_COORDINATES d6_chase_bikes[1] -1986.37 -2437.8 30.3 SET_CAR_HEADING d6_chase_bikes[1] 250.82 ENDIF IF NOT IS_CAR_DEAD d6_player_car IF NOT IS_CHAR_DEAD d6_chase_bike_drivers[0] AND NOT IS_CHAR_DEAD d6_chase_bike_passengers[0] AND NOT IS_CAR_DEAD d6_chase_bikes[0] SET_CAR_STRAIGHT_LINE_DISTANCE d6_chase_bikes[0] 250 TASK_CAR_MISSION d6_chase_bike_drivers[0] d6_chase_bikes[0] d6_player_car MISSION_ESCORT_LEFT 10.0 DRIVINGMODE_AVOIDCARS //TASK_DRIVE_BY d6_chase_bike_passengers[0] scplayer -1 0.0 0.0 0.0 999999.0 DRIVEBY_AI_ALL_DIRN FALSE 60 ENDIF IF NOT IS_CHAR_DEAD d6_chase_bike_drivers[1] AND NOT IS_CHAR_DEAD d6_chase_bike_passengers[1] AND NOT IS_CAR_DEAD d6_chase_bikes[1] SET_CAR_STRAIGHT_LINE_DISTANCE d6_chase_bikes[1] 250 TASK_CAR_MISSION d6_chase_bike_drivers[1] d6_chase_bikes[1] d6_player_car MISSION_ESCORT_RIGHT 10.0 DRIVINGMODE_AVOIDCARS //TASK_DRIVE_BY d6_chase_bike_passengers[1] scplayer -1 0.0 0.0 0.0 999999.0 DRIVEBY_AI_ALL_DIRN FALSE 60 ENDIF ENDIF WHILE NOT d6_first_chase_bike_near_player_car = 1 AND NOT IS_CHAR_DEAD d6_chase_bike_drivers[0] AND NOT IS_CAR_DEAD d6_chase_bikes[0] AND NOT IS_CAR_DEAD d6_player_car IF IS_CHAR_IN_CAR d6_chase_bike_drivers[0] d6_chase_bikes[0] IF LOCATE_CHAR_IN_CAR_CAR_2D d6_chase_bike_drivers[0] d6_player_car 15.0 15.0 FALSE d6_first_chase_bike_near_player_car = 1 ENDIF ELSE // break out of loop d6_first_chase_bike_near_player_car = 1 ENDIF WAIT 0 // IF HAS_MISSION_AUDIO_FINISHED 1 // AND NOT d6_audio_is_playing = 0 // CLEAR_PRINTS // d6_audio_is_playing = 0 // ENDIF ENDWHILE d6_cutscene_skipped = 0 SKIP_CUTSCENE_END IF d6_cutscene_skipped = 1 IF NOT IS_CAR_DEAD d6_player_car IF NOT IS_CHAR_DEAD d6_chase_bike_drivers[0] AND NOT IS_CHAR_DEAD d6_chase_bike_passengers[0] AND NOT IS_CAR_DEAD d6_chase_bikes[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -1.0 -14.0 0.0 d6_chase_bike_x d6_chase_bike_y d6_chase_bike_z d6_chase_bike_z = -100.0 SET_CAR_COORDINATES d6_chase_bikes[0] d6_chase_bike_x d6_chase_bike_y d6_chase_bike_z // TASK_CAR_MISSION d6_chase_bike_drivers[0] d6_chase_bikes[0] d6_player_car MISSION_ESCORT_LEFT 30.0 DRIVINGMODE_AVOIDCARS //TASK_DRIVE_BY d6_chase_bike_passengers[0] scplayer -1 0.0 0.0 0.0 999999.0 DRIVEBY_AI_ALL_DIRN FALSE 60 ENDIF IF NOT IS_CHAR_DEAD d6_chase_bike_drivers[1] AND NOT IS_CHAR_DEAD d6_chase_bike_passengers[1] AND NOT IS_CAR_DEAD d6_chase_bikes[1] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 1.0 -14.0 0.0 d6_chase_bike_x d6_chase_bike_y d6_chase_bike_z d6_chase_bike_z = -100.0 SET_CAR_COORDINATES d6_chase_bikes[1] d6_chase_bike_x d6_chase_bike_y d6_chase_bike_z // TASK_CAR_MISSION d6_chase_bike_drivers[1] d6_chase_bikes[1] d6_player_car MISSION_ESCORT_RIGHT 30.0 DRIVINGMODE_AVOIDCARS //TASK_DRIVE_BY d6_chase_bike_passengers[1] scplayer -1 0.0 0.0 0.0 999999.0 DRIVEBY_AI_ALL_DIRN FALSE 60 ENDIF ENDIF ENDIF // CLEAR_MISSION_AUDIO 1 // CLEAR_PRINTS // set straight line distance of bikes back to default IF NOT IS_CAR_DEAD d6_chase_bikes[0] SET_CAR_STRAIGHT_LINE_DISTANCE d6_chase_bikes[0] 20 ENDIF IF NOT IS_CAR_DEAD d6_chase_bikes[1] SET_CAR_STRAIGHT_LINE_DISTANCE d6_chase_bikes[1] 20 ENDIF IF NOT IS_CAR_DEAD d6_player_car IF NOT IS_CHAR_DEAD d6_chase_bike_drivers[0] AND NOT IS_CHAR_DEAD d6_chase_bike_passengers[0] AND NOT IS_CAR_DEAD d6_chase_bikes[0] TASK_CAR_MISSION d6_chase_bike_drivers[0] d6_chase_bikes[0] d6_player_car MISSION_ESCORT_LEFT 30.0 DRIVINGMODE_AVOIDCARS ENDIF IF NOT IS_CHAR_DEAD d6_chase_bike_drivers[1] AND NOT IS_CHAR_DEAD d6_chase_bike_passengers[1] AND NOT IS_CAR_DEAD d6_chase_bikes[1] TASK_CAR_MISSION d6_chase_bike_drivers[1] d6_chase_bikes[1] d6_player_car MISSION_ESCORT_RIGHT 30.0 DRIVINGMODE_AVOIDCARS ENDIF ENDIF SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON RETURN // ************************************************************ // Create groups of chasing bikes throughout the mission // ************************************************************ d6_create_next_chase_bike_group: IF NOT IS_CAR_DEAD d6_player_car // find number of bikes close to player and delete bikes not close enough d6_num_of_chase_bikes_close = 0 d6_index = 0 WHILE d6_index < d6_cur_num_of_chase_bikes_created IF NOT IS_CAR_DEAD d6_chase_bikes[d6_index] IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer d6_chase_bikes[d6_index] 100.0 100.0 FALSE d6_num_of_chase_bikes_close++ ELSE DELETE_CAR d6_chase_bikes[d6_index] DELETE_CHAR d6_chase_bike_drivers[d6_index] DELETE_CHAR d6_chase_bike_passengers[d6_index] ENDIF ENDIF d6_index++ ENDWHILE // don't have more than four bikes chasing the player at once IF NOT d6_num_of_chase_bikes_close > 2 d6_index = d6_num_of_chase_bike_groups_created * 2 d6_one_past_end_of_group = d6_index + 2 d6_index_within_group = 0 WHILE d6_index < d6_one_past_end_of_group IF d6_player_reached_zeroth_checkpoint = 1 AND NOT d6_player_reached_first_creation_pt = 1 IF d6_index_within_group = 0 d6_chase_bike_x = -1342.94 d6_chase_bike_y = -2624.45 d6_chase_bike_z = 19.58 d6_chase_bike_heading = 261.04 ENDIF IF d6_index_within_group = 1 d6_chase_bike_x = -1344.02 d6_chase_bike_y = -2628.07 d6_chase_bike_z = 19.82 d6_chase_bike_heading = 260.5 ENDIF ENDIF IF d6_player_reached_first_creation_pt = 1 AND NOT d6_player_reached_second_creation_pt = 1 IF d6_index_within_group = 0 d6_chase_bike_x = -708.68 d6_chase_bike_y = -2601.46 d6_chase_bike_z = 69.83 d6_chase_bike_heading = 338.56 ENDIF IF d6_index_within_group = 1 d6_chase_bike_x = -704.89 d6_chase_bike_y = -2602.92 d6_chase_bike_z = 69.9 d6_chase_bike_heading = 340.64 ENDIF ENDIF IF d6_player_reached_second_creation_pt = 1 AND NOT d6_player_reached_third_creation_pt = 1 IF d6_index_within_group = 0 d6_chase_bike_x = -420.89 d6_chase_bike_y = -2258.87 d6_chase_bike_z = 47.37 d6_chase_bike_heading = 278.1 ENDIF IF d6_index_within_group = 1 d6_chase_bike_x = -420.64 d6_chase_bike_y = -2261.39 d6_chase_bike_z = 47.79 d6_chase_bike_heading = 279.7 ENDIF ENDIF IF d6_player_reached_third_creation_pt = 1 AND NOT d6_player_reached_fourth_creation_pt = 1 IF d6_index_within_group = 0 d6_chase_bike_x = -260.22 d6_chase_bike_y = -2323.12 d6_chase_bike_z = 30.42 d6_chase_bike_heading = 222.63 ENDIF IF d6_index_within_group = 1 d6_chase_bike_x = -262.81 d6_chase_bike_y = -2326.8 d6_chase_bike_z = 30.43 d6_chase_bike_heading = 220.93 ENDIF ENDIF IF d6_player_reached_fourth_creation_pt = 1 AND NOT d6_player_reached_fifth_creation_pt = 1 IF d6_index_within_group = 0 d6_chase_bike_x = -179.45 d6_chase_bike_y = -2708.91 d6_chase_bike_z = 35.82 d6_chase_bike_heading = 177.36 ENDIF IF d6_index_within_group = 1 d6_chase_bike_x = -182.07 d6_chase_bike_y = -2709.06 d6_chase_bike_z = 35.77 d6_chase_bike_heading = 176.56 ENDIF ENDIF IF d6_player_reached_fifth_creation_pt = 1 AND NOT d6_player_reached_sixth_creation_pt = 1 IF d6_index_within_group = 0 d6_chase_bike_x = -846.18 d6_chase_bike_y = -2809.6 d6_chase_bike_z = 70.32 d6_chase_bike_heading = 112.41 ENDIF IF d6_index_within_group = 1 d6_chase_bike_x = -848.6 d6_chase_bike_y = -2806.3 d6_chase_bike_z = 70.29 d6_chase_bike_heading = 111.76 ENDIF ENDIF CLEAR_AREA d6_chase_bike_x d6_chase_bike_y d6_chase_bike_z 5.0 TRUE CREATE_CAR SANCHEZ d6_chase_bike_x d6_chase_bike_y d6_chase_bike_z d6_chase_bikes[d6_index] CREATE_CHAR_INSIDE_CAR d6_chase_bikes[d6_index] PEDTYPE_MISSION1 DNB3 d6_chase_bike_drivers[d6_index] CREATE_CHAR_AS_PASSENGER d6_chase_bikes[d6_index] PEDTYPE_MISSION1 DNB2 0 d6_chase_bike_passengers[d6_index] SET_CAR_HEADING d6_chase_bikes[d6_index] d6_chase_bike_heading SET_CAR_ONLY_DAMAGED_BY_PLAYER d6_chase_bikes[d6_index] TRUE SET_CAR_TRACTION d6_chase_bikes[d6_index] 2.0 SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE d6_chase_bike_drivers[d6_index] KNOCKOFFBIKE_ALWAYSNORMAL SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE d6_chase_bike_passengers[d6_index] KNOCKOFFBIKE_ALWAYSNORMAL IF d6_player_in_ravine = 1 OR d6_player_in_tunnel = 1 TASK_CAR_MISSION d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] d6_player_car MISSION_ESCORT_REAR 30.0 DRIVINGMODE_AVOIDCARS ELSE IF d6_index_within_group = 0 TASK_CAR_MISSION d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] d6_player_car MISSION_ESCORT_LEFT 30.0 DRIVINGMODE_AVOIDCARS ENDIF IF d6_index_within_group = 1 TASK_CAR_MISSION d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] d6_player_car MISSION_ESCORT_RIGHT 30.0 DRIVINGMODE_AVOIDCARS ENDIF // IF d6_index_within_group = 2 // TASK_CAR_MISSION d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] d6_player_car MISSION_ESCORT_REAR 30.0 DRIVINGMODE_AVOIDCARS // ENDIF ENDIF GIVE_WEAPON_TO_CHAR d6_chase_bike_passengers[d6_index] WEAPONTYPE_MP5 99999 TASK_DRIVE_BY d6_chase_bike_passengers[d6_index] scplayer -1 0.0 0.0 0.0 999999.0 DRIVEBY_AI_ALL_DIRN FALSE 60 IF d6_player_reached_second_creation_pt = 1 AND NOT d6_player_reached_third_creation_pt = 1 SET_CAR_FORWARD_SPEED d6_chase_bikes[d6_index] 30.0 ELSE SET_CAR_FORWARD_SPEED d6_chase_bikes[d6_index] 70.0 ENDIF d6_cur_num_of_chase_bikes_created++ d6_index++ d6_index_within_group++ ENDWHILE d6_num_of_chase_bike_groups_created++ ENDIF ENDIF RETURN // ************************************************************ // Check if anyone's fallen off their bike // ************************************************************ d6_keep_bikers_on_bikes: IF NOT IS_CAR_DEAD d6_player_car d6_index = 0 WHILE d6_index < d6_cur_num_of_chase_bikes_created IF NOT IS_CAR_DEAD d6_chase_bikes[d6_index] IF IS_CHAR_DEAD d6_chase_bike_drivers[d6_index] AND NOT d6_chase_bike_driver_dead_flag[d6_index] = 1 d6_chase_bike_driver_dead_flag[d6_index] = 1 ENDIF IF IS_CHAR_DEAD d6_chase_bike_passengers[d6_index] AND NOT d6_chase_bike_passenger_dead_flag[d6_index] = 1 d6_chase_bike_passenger_dead_flag[d6_index] = 1 ENDIF IF NOT IS_CHAR_DEAD d6_chase_bike_drivers[d6_index] AND d6_chase_bike_passenger_dead_flag[d6_index] = 1 AND NOT d6_driver_mission_changed_to_ram[d6_index] = 1 TASK_CAR_MISSION d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] d6_player_car MISSION_BLOCKCAR_FARAWAY 30.0 DRIVINGMODE_AVOIDCARS d6_driver_sent_to_bike_to_ram_player[d6_index] = 1 d6_driver_mission_changed_to_ram[d6_index] = 1 ENDIF IF NOT IS_CHAR_DEAD d6_chase_bike_passengers[d6_index] AND d6_chase_bike_driver_dead_flag[d6_index] = 1 AND NOT d6_passenger_mission_changed_to_ram[d6_index] = 1 IF IS_CHAR_IN_CAR d6_chase_bike_passengers[d6_index] d6_chase_bikes[d6_index] // put passenger into driver's seat GET_CAR_COORDINATES d6_chase_bikes[d6_index] d6_chase_bike_x d6_chase_bike_y d6_chase_bike_z WARP_CHAR_FROM_CAR_TO_COORD d6_chase_bike_passengers[d6_index] d6_chase_bike_x d6_chase_bike_y -10.0 WARP_CHAR_INTO_CAR d6_chase_bike_passengers[d6_index] d6_chase_bikes[d6_index] TASK_CAR_MISSION d6_chase_bike_passengers[d6_index] d6_chase_bikes[d6_index] d6_player_car MISSION_BLOCKCAR_FARAWAY 30.0 DRIVINGMODE_AVOIDCARS ENDIF // TASK_CAR_MISSION d6_chase_bike_passengers[d6_index] d6_chase_bikes[d6_index] d6_player_car MISSION_BLOCKCAR_FARAWAY 30.0 DRIVINGMODE_AVOIDCARS // d6_passenger_sent_to_bike_to_ram_player[d6_index] = 1 d6_passenger_mission_changed_to_ram[d6_index] = 1 ENDIF IF NOT IS_CHAR_DEAD d6_chase_bike_drivers[d6_index] AND d6_driver_mission_changed_to_ram[d6_index] = 1 IF NOT IS_CHAR_IN_CAR d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] IF d6_driver_sent_to_bike_to_ram_player[d6_index] = 0 TASK_CAR_MISSION d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] d6_player_car MISSION_BLOCKCAR_FARAWAY 30.0 DRIVINGMODE_AVOIDCARS d6_driver_sent_to_bike_to_ram_player[d6_index] = 1 ENDIF ELSE IF d6_driver_sent_to_bike_to_ram_player[d6_index] = 1 d6_driver_sent_to_bike_to_ram_player[d6_index] = 0 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD d6_chase_bike_passengers[d6_index] AND d6_passenger_mission_changed_to_ram[d6_index] = 1 IF NOT IS_CHAR_IN_CAR d6_chase_bike_passengers[d6_index] d6_chase_bikes[d6_index] IF d6_passenger_sent_to_bike_to_ram_player[d6_index] = 0 TASK_CAR_MISSION d6_chase_bike_passengers[d6_index] d6_chase_bikes[d6_index] d6_player_car MISSION_BLOCKCAR_FARAWAY 30.0 DRIVINGMODE_AVOIDCARS d6_passenger_sent_to_bike_to_ram_player[d6_index] = 1 ENDIF ELSE IF d6_passenger_sent_to_bike_to_ram_player[d6_index] = 1 d6_passenger_sent_to_bike_to_ram_player[d6_index] = 0 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD d6_chase_bike_drivers[d6_index] AND NOT IS_CHAR_DEAD d6_chase_bike_passengers[d6_index] IF NOT IS_CHAR_IN_CAR d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] AND d6_driver_getting_back_on_bike[d6_index] = 0 TASK_ENTER_CAR_AS_DRIVER d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] 10000 d6_driver_getting_back_on_bike[d6_index] = 1 ENDIF IF NOT IS_CHAR_IN_CAR d6_chase_bike_passengers[d6_index] d6_chase_bikes[d6_index] AND d6_passenger_getting_back_on_bike[d6_index] = 0 TASK_ENTER_CAR_AS_PASSENGER d6_chase_bike_passengers[d6_index] d6_chase_bikes[d6_index] 10000 0 d6_passenger_getting_back_on_bike[d6_index] = 1 ENDIF IF IS_CHAR_IN_CAR d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] AND IS_CHAR_IN_CAR d6_chase_bike_passengers[d6_index] d6_chase_bikes[d6_index] IF d6_driver_getting_back_on_bike[d6_index] = 1 OR d6_passenger_getting_back_on_bike[d6_index] = 1 IF d6_player_in_ravine = 1 OR d6_player_in_tunnel = 1 TASK_CAR_MISSION d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] d6_player_car MISSION_ESCORT_REAR 30.0 DRIVINGMODE_AVOIDCARS ELSE // 0 or 1 within each group of two bikes created d6_index_within_group = d6_index WHILE d6_index_within_group >= 2 d6_index_within_group -= 2 ENDWHILE IF d6_index_within_group = 0 TASK_CAR_MISSION d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] d6_player_car MISSION_ESCORT_LEFT 30.0 DRIVINGMODE_AVOIDCARS ENDIF IF d6_index_within_group = 1 TASK_CAR_MISSION d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] d6_player_car MISSION_ESCORT_RIGHT 30.0 DRIVINGMODE_AVOIDCARS ENDIF // IF d6_index_within_group = 2 // TASK_CAR_MISSION d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] d6_player_car MISSION_ESCORT_REAR 30.0 DRIVINGMODE_AVOIDCARS // ENDIF ENDIF TASK_DRIVE_BY d6_chase_bike_passengers[d6_index] scplayer -1 0.0 0.0 0.0 999999.0 DRIVEBY_AI_ALL_DIRN FALSE 60 d6_driver_getting_back_on_bike[d6_index] = 0 d6_passenger_getting_back_on_bike[d6_index] = 0 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD d6_chase_bike_drivers[d6_index] AND IS_CHAR_DEAD d6_chase_bike_passengers[d6_index] SET_CAR_MISSION d6_chase_bikes[d6_index] MISSION_NONE ENDIF ENDIF d6_index++ ENDWHILE ENDIF RETURN // ************************************************************* // All bikes escort at rear (player reached bridge) // ************************************************************* d6_set_occupied_bikes_escort_rear: IF NOT IS_CAR_DEAD d6_player_car d6_index = 0 WHILE d6_index < d6_cur_num_of_chase_bikes_created IF NOT IS_CAR_DEAD d6_chase_bikes[d6_index] AND NOT IS_CHAR_DEAD d6_chase_bike_drivers[d6_index] AND NOT IS_CHAR_DEAD d6_chase_bike_passengers[d6_index] IF IS_CHAR_IN_CAR d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] AND IS_CHAR_IN_CAR d6_chase_bike_passengers[d6_index] d6_chase_bikes[d6_index] TASK_CAR_MISSION d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] d6_player_car MISSION_ESCORT_REAR 30.0 DRIVINGMODE_AVOIDCARS ENDIF ENDIF d6_index++ ENDWHILE ENDIF RETURN // ************************************************************* // All bikes return to normal escort (player passed bridge) // ************************************************************* d6_set_occupied_bikes_escort_normal: IF NOT IS_CAR_DEAD d6_player_car d6_index = 0 WHILE d6_index < d6_cur_num_of_chase_bikes_created IF NOT IS_CAR_DEAD d6_chase_bikes[d6_index] AND NOT IS_CHAR_DEAD d6_chase_bike_drivers[d6_index] AND NOT IS_CHAR_DEAD d6_chase_bike_passengers[d6_index] IF IS_CHAR_IN_CAR d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] AND IS_CHAR_IN_CAR d6_chase_bike_passengers[d6_index] d6_chase_bikes[d6_index] // 0 or 1 within each group of two bikes created d6_index_within_group = d6_index WHILE d6_index_within_group >= 2 d6_index_within_group -= 2 ENDWHILE IF d6_index_within_group = 0 TASK_CAR_MISSION d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] d6_player_car MISSION_ESCORT_LEFT 30.0 DRIVINGMODE_AVOIDCARS ENDIF IF d6_index_within_group = 1 TASK_CAR_MISSION d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] d6_player_car MISSION_ESCORT_RIGHT 30.0 DRIVINGMODE_AVOIDCARS ENDIF // IF d6_index_within_group = 2 // TASK_CAR_MISSION d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] d6_player_car MISSION_ESCORT_REAR 30.0 DRIVINGMODE_AVOIDCARS // ENDIF ENDIF ENDIF d6_index++ ENDWHILE ENDIF RETURN // ************************************************************* // Reset timer if no bikers near doors // ************************************************************* d6_reset_timer_check: IF NOT IS_CAR_DEAD d6_player_car d6_reset_timer_flag = 1 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS d6_player_car -1.0 0.0 0.0 d6_left_offset_x d6_left_offset_y d6_left_offset_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS d6_player_car 1.0 0.0 0.0 d6_right_offset_x d6_right_offset_y d6_right_offset_z d6_index = 0 WHILE d6_index < d6_cur_num_of_chase_bikes_created AND d6_reset_timer_flag = 1 IF NOT IS_CAR_DEAD d6_chase_bikes[d6_index] // IF NOT IS_CHAR_DEAD d6_chase_bike_drivers[d6_index] GET_DRIVER_OF_CAR d6_chase_bikes[d6_index] d6_temp_driver IF NOT d6_temp_driver = -1 IF LOCATE_CAR_3D d6_chase_bikes[d6_index] d6_left_offset_x d6_left_offset_y d6_left_offset_z 5.0 5.0 5.0 FALSE OR LOCATE_CAR_3D d6_chase_bikes[d6_index] d6_right_offset_x d6_right_offset_y d6_right_offset_z 5.0 5.0 5.0 FALSE // don't reset timer (bike with driver close enough to see into car) d6_reset_timer_flag = 0 ENDIF ENDIF ENDIF d6_index++ ENDWHILE IF d6_reset_timer_flag = 1 TIMERA = 0 ENDIF ENDIF RETURN // ************************************************************* // Bikes disengage at end of mission // ************************************************************* d6_disengage_bikes: d6_index = 0 WHILE d6_index < d6_cur_num_of_chase_bikes_created IF NOT IS_CAR_DEAD d6_chase_bikes[d6_index] IF NOT IS_CHAR_DEAD d6_chase_bike_drivers[d6_index] TASK_CAR_DRIVE_TO_COORD d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] -2148.62 1063.98 79.73 20.0 MODE_NORMAL 0 DRIVINGMODE_AVOIDCARS SET_CHAR_KEEP_TASK d6_chase_bike_drivers[d6_index] TRUE ELSE IF NOT IS_CHAR_DEAD d6_chase_bike_passengers[d6_index] IF IS_CHAR_IN_CAR d6_chase_bike_passengers[d6_index] d6_chase_bikes[d6_index] // put passenger into driver's seat GET_CAR_COORDINATES d6_chase_bikes[d6_index] d6_chase_bike_x d6_chase_bike_y d6_chase_bike_z WARP_CHAR_FROM_CAR_TO_COORD d6_chase_bike_passengers[d6_index] d6_chase_bike_x d6_chase_bike_y -10.0 WARP_CHAR_INTO_CAR d6_chase_bike_passengers[d6_index] d6_chase_bikes[d6_index] ENDIF TASK_CAR_DRIVE_TO_COORD d6_chase_bike_passengers[d6_index] d6_chase_bikes[d6_index] -2148.62 1063.98 79.73 20.0 MODE_NORMAL 0 DRIVINGMODE_AVOIDCARS ENDIF ENDIF IF NOT IS_CHAR_DEAD d6_chase_bike_passengers[d6_index] SET_CHAR_KEEP_TASK d6_chase_bike_passengers[d6_index] TRUE ENDIF ENDIF d6_index++ ENDWHILE RETURN // ************************************************************ // If player leaves car, bikers stop and look // ************************************************************ d6_bikes_stop_and_look: d6_index = 0 WHILE d6_index < d6_cur_num_of_chase_bikes_created IF NOT IS_CAR_DEAD d6_chase_bikes[d6_index] IF NOT IS_CHAR_DEAD d6_chase_bike_drivers[d6_index] TASK_LOOK_AT_CHAR d6_chase_bike_drivers[d6_index] scplayer 5000 IF IS_CHAR_IN_CAR d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] TASK_CAR_TEMP_ACTION d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] TEMPACT_HANDBRAKESTRAIGHT 2000000 ELSE TASK_ENTER_CAR_AS_DRIVER d6_chase_bike_drivers[d6_index] d6_chase_bikes[d6_index] -1 ENDIF ENDIF IF NOT IS_CHAR_DEAD d6_chase_bike_passengers[d6_index] TASK_LOOK_AT_CHAR d6_chase_bike_passengers[d6_index] scplayer 5000 IF d6_passenger_mission_changed_to_ram[d6_index] = 1 IF IS_CHAR_IN_CAR d6_chase_bike_passengers[d6_index] d6_chase_bikes[d6_index] TASK_CAR_TEMP_ACTION d6_chase_bike_passengers[d6_index] d6_chase_bikes[d6_index] TEMPACT_HANDBRAKESTRAIGHT 2000000 ELSE TASK_ENTER_CAR_AS_DRIVER d6_chase_bike_passengers[d6_index] d6_chase_bikes[d6_index] -1 ENDIF ELSE IF NOT IS_CHAR_IN_CAR d6_chase_bike_passengers[d6_index] d6_chase_bikes[d6_index] TASK_ENTER_CAR_AS_PASSENGER d6_chase_bike_passengers[d6_index] d6_chase_bikes[d6_index] -1 0 ENDIF ENDIF ENDIF ENDIF d6_index++ ENDWHILE RETURN // ************************************************************* // Bikes disengage so not in final cutscene // ************************************************************* d6_disengage_bikes_for_mission_passed_cutscene: d6_index = 0 WHILE d6_index < d6_cur_num_of_chase_bikes_created DELETE_CHAR d6_chase_bike_drivers[d6_index] DELETE_CHAR d6_chase_bike_passengers[d6_index] DELETE_CAR d6_chase_bikes[d6_index] d6_index++ ENDWHILE RETURN // ************************************************************ // Player gets phone call when near destination // ************************************************************ d6_play_mission_passed_cutscene: IF NOT IS_CAR_DEAD d6_player_car LOCK_CAR_DOORS d6_player_car CARLOCK_LOCKED ENDIF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_AREA d6_destination_x d6_destination_y d6_destination_z 100.0 FALSE GOSUB d6_disengage_bikes_for_mission_passed_cutscene SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE LVAR_INT d6_mobile_phone REQUEST_MODEL cellphone WHILE NOT HAS_MODEL_LOADED cellphone WAIT 0 ENDWHILE CREATE_OBJECT_NO_OFFSET cellphone -1561.4 -2721.1 47.57 d6_mobile_phone SET_OBJECT_VISIBLE d6_mobile_phone FALSE TASK_PICK_UP_OBJECT scplayer d6_mobile_phone 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL FALSE IF NOT IS_CAR_DEAD d6_player_car CAR_SET_IDLE d6_player_car SET_CAR_COORDINATES d6_player_car d6_destination_x d6_destination_y -100.0 SET_CAR_HEADING d6_player_car 55.5 // make sure door's closed so it's not in the way of the camera OPEN_CAR_DOOR_A_BIT d6_player_car FRONT_LEFT_DOOR 0.0 OPEN_CAR_DOOR_A_BIT d6_player_car FRONT_RIGHT_DOOR 0.0 ENDIF REQUEST_ANIMATION CAR_CHAT LOAD_MISSION_AUDIO 3 SOUND_MOBRING WHILE NOT HAS_ANIMATION_LOADED CAR_CHAT OR NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION -1573.6 -2743.74 49.12 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1573.0 -2743.39 49.05 JUMP_CUT DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS IF DOES_OBJECT_EXIST d6_mobile_phone SET_OBJECT_VISIBLE d6_mobile_phone FALSE ENDIF WAIT 0 ENDWHILE d6_cutscene_skipped = 1 SKIP_CUTSCENE_START OPEN_SEQUENCE_TASK d6_car_chat_seq TASK_PLAY_ANIM -1 carfone_in CAR_CHAT 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 carfone_loopA_to_B CAR_CHAT 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 carfone_loopB CAR_CHAT 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK d6_car_chat_seq PERFORM_SEQUENCE_TASK scplayer d6_car_chat_seq CLEAR_SEQUENCE_TASK d6_car_chat_seq PLAY_MISSION_AUDIO 3 TIMERA = 0 WHILE TIMERA < 3000 IF DOES_OBJECT_EXIST d6_mobile_phone SET_OBJECT_VISIBLE d6_mobile_phone FALSE ENDIF WAIT 0 ENDWHILE SET_OBJECT_VISIBLE d6_mobile_phone TRUE CLEAR_MISSION_AUDIO 3 d6_current_audio_needed = D6_MISSION_PASSED_AUDIO GOSUB d6_setup_audio_data TIMERA = 0 GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK d6_task_status IF NOT d6_task_status = FINISHED_TASK GET_SEQUENCE_PROGRESS scplayer d6_seq_progress ELSE d6_seq_progress = 2 ENDIF WHILE d6_seq_progress < 2 OR d6_audio_index = 0 WAIT 0 IF TIMERA > 1000 GOSUB d6_load_and_play_audio ENDIF GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK d6_task_status IF NOT d6_task_status = FINISHED_TASK GET_SEQUENCE_PROGRESS scplayer d6_seq_progress ELSE d6_seq_progress = 2 ENDIF ENDWHILE IF NOT IS_CAR_DEAD d6_player_car GET_OFFSET_FROM_CAR_IN_WORLD_COORDS d6_player_car 0.4 0.51 0.65 d6_camera_x d6_camera_y d6_camera_z SET_FIXED_CAMERA_POSITION d6_camera_x d6_camera_y d6_camera_z 0.0 0.0 0.0 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS d6_player_car -0.13 0.22 0.54 d6_camera_x d6_camera_y d6_camera_z POINT_CAMERA_AT_POINT d6_camera_x d6_camera_y d6_camera_z JUMP_CUT ENDIF TASK_PLAY_ANIM scplayer carfone_loopB CAR_CHAT 4.0 TRUE FALSE FALSE FALSE -1 WHILE d6_audio_index <= 1 WAIT 0 GOSUB d6_load_and_play_audio ENDWHILE OPEN_SEQUENCE_TASK d6_car_chat_seq TASK_PLAY_ANIM -1 carfone_loopB_to_A CAR_CHAT 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 carfone_loopA CAR_CHAT 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK d6_car_chat_seq PERFORM_SEQUENCE_TASK scplayer d6_car_chat_seq CLEAR_SEQUENCE_TASK d6_car_chat_seq WHILE d6_audio_index <= 4 WAIT 0 GOSUB d6_load_and_play_audio ENDWHILE OPEN_SEQUENCE_TASK d6_car_chat_seq TASK_PLAY_ANIM -1 carfone_loopA_to_B CAR_CHAT 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 carfone_loopB CAR_CHAT 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK d6_car_chat_seq PERFORM_SEQUENCE_TASK scplayer d6_car_chat_seq CLEAR_SEQUENCE_TASK d6_car_chat_seq WHILE d6_audio_index <= 5 WAIT 0 GOSUB d6_load_and_play_audio IF d6_audio_is_playing = 2 AND NOT d6_started_talking = 1 START_CHAR_FACIAL_TALK scplayer 4000 d6_started_talking = 1 ENDIF ENDWHILE LVAR_INT d6_cutscene_bike d6_cutscene_biker CREATE_CAR SANCHEZ -1565.89 -2748.32 48.21 d6_cutscene_bike SET_CAR_HEADING d6_cutscene_bike 58.42 CREATE_CHAR_INSIDE_CAR d6_cutscene_bike PEDTYPE_MISSION1 DNB3 d6_cutscene_biker WAIT 1000 IF NOT IS_CHAR_DEAD d6_cutscene_biker AND NOT IS_CAR_DEAD d6_cutscene_bike TASK_CAR_DRIVE_TO_COORD d6_cutscene_biker d6_cutscene_bike -1574.23 -2742.62 48.2 20.0 MODE_ACCURATE 0 DRIVINGMODE_PLOUGHTHROUGH ENDIF SET_FIXED_CAMERA_POSITION -1570.65 -2748.39 48.35 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1571.99 -2745.26 48.29 JUMP_CUT IF NOT IS_CHAR_DEAD d6_cutscene_biker GET_SCRIPT_TASK_STATUS d6_cutscene_biker TASK_CAR_DRIVE_TO_COORD d6_task_status WHILE NOT d6_task_status = FINISHED_TASK WAIT 0 IF NOT IS_CHAR_DEAD d6_cutscene_biker GET_SCRIPT_TASK_STATUS d6_cutscene_biker TASK_CAR_DRIVE_TO_COORD d6_task_status ELSE d6_task_status = FINISHED_TASK ENDIF ENDWHILE ENDIF IF NOT IS_CHAR_DEAD d6_cutscene_biker TASK_LOOK_AT_CHAR d6_cutscene_biker scplayer 3000 WAIT 3000 ENDIF IF NOT IS_CHAR_DEAD d6_cutscene_biker TASK_LOOK_AT_COORD d6_cutscene_biker -1572.73 -2747.12 48.2 -2 ENDIF WHILE d6_audio_index < d6_total_audio_to_play WAIT 0 IF NOT IS_CHAR_DEAD d6_cutscene_biker GOSUB d6_load_and_play_audio IF d6_audio_is_playing = 2 AND NOT d6_started_talking = 1 START_CHAR_FACIAL_TALK d6_cutscene_biker 10000 d6_started_talking = 1 ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS d6_audio_index = d6_total_audio_to_play ENDIF ENDWHILE IF NOT IS_CHAR_DEAD d6_cutscene_biker AND NOT IS_CAR_DEAD d6_cutscene_bike STOP_CHAR_FACIAL_TALK d6_cutscene_biker CLEAR_LOOK_AT d6_cutscene_biker TASK_CAR_DRIVE_TO_COORD d6_cutscene_biker d6_cutscene_bike -1630.35 -2721.17 48.62 20.0 MODE_NORMAL 0 DRIVINGMODE_AVOIDCARS ENDIF WAIT 3000 d6_cutscene_skipped = 0 SKIP_CUTSCENE_END IF d6_cutscene_skipped = 1 ENDIF CLEAR_CHAR_TASKS scplayer STOP_CHAR_FACIAL_TALK scplayer CLEAR_MISSION_AUDIO 3 CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS DELETE_CHAR d6_cutscene_biker DELETE_CAR d6_cutscene_bike DELETE_OBJECT d6_mobile_phone HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE IF NOT IS_CAR_DEAD d6_player_car LOCK_CAR_DOORS d6_player_car CARLOCK_UNLOCKED ENDIF SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON RETURN // *************************************************************** // Mission audio (bikers spotting decoy/phone call at destination) // *************************************************************** d6_setup_audio_data: SWITCH d6_current_audio_needed CASE D6_MISSION_FAILED_AUDIO $d6_audio_text[0] = &FAR5_AB $d6_audio_text[1] = &FAR5_AA d6_audio_sound[0] = SOUND_FAR5_AB d6_audio_sound[1] = SOUND_FAR5_AA d6_total_audio_to_play = 2 BREAK CASE D6_MISSION_PASSED_AUDIO $d6_audio_text[0] = &MTG02A $d6_audio_text[1] = &MTG02B $d6_audio_text[2] = &MTG02C $d6_audio_text[3] = &MTG02D $d6_audio_text[4] = &MTG02E $d6_audio_text[5] = &MTG02F $d6_audio_text[6] = &FAR5_AA d6_audio_sound[0] = SOUND_MTG02A d6_audio_sound[1] = SOUND_MTG02B d6_audio_sound[2] = SOUND_MTG02C d6_audio_sound[3] = SOUND_MTG02D d6_audio_sound[4] = SOUND_MTG02E d6_audio_sound[5] = SOUND_MTG02F d6_audio_sound[6] = SOUND_FAR5_AA d6_total_audio_to_play = 7 BREAK DEFAULT BREAK ENDSWITCH d6_audio_is_playing = 0 d6_audio_index = 0 d6_started_talking = 0 RETURN d6_load_and_play_audio: IF d6_audio_is_playing = 0 OR d6_audio_is_playing = 1 IF d6_audio_index < d6_total_audio_to_play IF TIMERB > 1000 GOSUB d6_play_audio ENDIF ENDIF ENDIF IF d6_audio_is_playing = 2 IF HAS_MISSION_AUDIO_FINISHED 1 d6_audio_is_playing = 0 d6_audio_index++ d6_started_talking = 0 CLEAR_PRINTS TIMERB = 0 ENDIF ENDIF RETURN d6_play_audio: IF d6_audio_is_playing = 0 LOAD_MISSION_AUDIO 1 d6_audio_sound[d6_audio_index] d6_audio_is_playing = 1 ENDIF IF d6_audio_is_playing = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW $d6_audio_text[d6_audio_index] 10000 1 PLAY_MISSION_AUDIO 1 d6_audio_is_playing = 2 ENDIF ENDIF RETURN // ******************************** Mission driv6 failed ********************************** mission_driv6_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // ******************************** Mission driv6 passed ********************************** mission_driv6_passed: flag_wuzi_mission_counter++ REGISTER_MISSION_PASSED ( FAR_5 ) PLAYER_MADE_PROGRESS 1 PRINT_WITH_NUMBER_BIG ( M_PASSS ) 8000 5000 1 //"Mission Passed!" ADD_SCORE player1 8000 AWARD_PLAYER_MISSION_RESPECT 20 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 RETURN // *********************************** Mission cleanup ************************************* mission_cleanup_driv6: IF NOT IS_CAR_DEAD d6_player_car SET_CAR_PROOFS d6_player_car FALSE FALSE FALSE FALSE FALSE SET_CAR_CAN_BE_VISIBLY_DAMAGED d6_player_car TRUE ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED RANCHER MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ MARK_MODEL_AS_NO_LONGER_NEEDED DNB3 MARK_MODEL_AS_NO_LONGER_NEEDED DNB2 MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED cellphone REMOVE_ANIMATION CAR_CHAT REMOVE_BLIP d6_player_car_blip REMOVE_BLIP d6_countryside_blip REMOVE_BLIP d6_next_checkpoint_blip REMOVE_BLIP d6_destination_blip // temp (stops crash when use debug to restart mission after scripted cut's played) GOSUB d6_disengage_bikes DELETE_CHECKPOINT d6_next_checkpoint //IF NOT IS_CAR_DEAD d6_player_car // LOCK_CAR_DOORS d6_player_car CARLOCK_UNLOCKED //ENDIF CLEAR_ONSCREEN_COUNTER d6_door_health CLEAR_SEQUENCE_TASK d6_car_chat_seq SWITCH_CAR_GENERATOR car_gen_pine[3] 101 SWITCH_CAR_GENERATOR car_gen_pine[4] 101 SWITCH_CAR_GENERATOR car_gen_pine[5] 101 GET_GAME_TIMER timer_mobile_start SET_CAR_DENSITY_MULTIPLIER 1.0 flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ######################## // ## // ## Wuzi2.sc // ## // ## Amphibious Assault // ## // ## Simon Lashley // ## // ######################## SCRIPT_NAME wuzi2 GOSUB mission_wuzi2_START IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_wuzi2_FAILED ENDIF GOSUB mission_wuzi2_CLEANUP MISSION_END { // decision makers LVAR_INT stealth_dm_W2 empty_dm_W2 // blips LVAR_INT goto_blip_W2 // timers LVAR_INT this_frame_time_W2 time_diff_W2 last_frame_time_W2 // fail text LVAR_INT fail_text_flag_W2 LVAR_TEXT_LABEL fail_text_W2 // pointers VAR_INT pointer_W2 pointer2_W2 pointer3_W2 pointer4_W2 guard_pointer_W2 guard_limit_W2 // general LVAR_INT sequence_W2 progress_W2 random_W2 random2_W2 // flags LVAR_INT skipped_cutscene_W2 player_planted_bug_W2 player_been_on_main_boat_W2 player_section_W2 // camera stuff LVAR_FLOAT camera_pos_X_W2 camera_pos_Y_W2 camera_pos_Z_W2 camera_look_X_W2 camera_look_Y_W2 camera_look_Z_W2 // audio stuff LVAR_INT audio_pointer_W2 audio_sound_label_W2[63] LVAR_INT speech_ped_W2 speech_sample_W2 speech_context_W2 speech_priority_W2 boat_lost_W2 boat_found_W2 LVAR_TEXT_LABEL $audio_text_label_W2[63] // MISSION START############################################################################################# MISSION START mission_wuzi2_START: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 GET_MAX_WANTED_LEVEL max_wanted_level_W2 // text LOAD_MISSION_TEXT WUZI2 VAR_INT swim_stamina_check GET_INT_STAT UNDERWATER_BREATH_STAMINA swim_stamina_check IF NOT IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q IF swim_stamina_check <= 50 swim_stamina_check = 1 // CUTSCENE START ##################################### CUTSCENE START SET_AREA_VISIBLE 1 LOAD_CUTSCENE W2_ALT WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 // CUTSCENE END ####################################### CUTSCENE END GOTO mission_wuzi2_CLEANUP ENDIF ENDIF swim_stamina_check = 0 SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 // CUTSCENE START ##################################### CUTSCENE START SET_AREA_VISIBLE 1 LOAD_CUTSCENE WOOZIE2 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 // CUTSCENE END ####################################### CUTSCENE END SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 // audio controller START_NEW_SCRIPT start_audio_controller // chars REQUEST_MODEL DNB1 REQUEST_MODEL DNB2 REQUEST_MODEL DNB3 // cars REQUEST_MODEL TROPIC // weapons REQUEST_MODEL AK47 REQUEST_MODEL KNIFECUR // objects REQUEST_MODEL a51_spotbase REQUEST_MODEL a51_spothousing REQUEST_MODEL a51_spotbulb REQUEST_ANIMATION DAM_JUMP WHILE NOT HAS_MODEL_LOADED DNB1 OR NOT HAS_MODEL_LOADED DNB2 OR NOT HAS_MODEL_LOADED DNB3 OR NOT HAS_MODEL_LOADED TROPIC OR NOT HAS_MODEL_LOADED AK47 OR NOT HAS_MODEL_LOADED KNIFECUR WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED a51_spotbase OR NOT HAS_MODEL_LOADED a51_spothousing OR NOT HAS_MODEL_LOADED a51_spotbulb OR NOT HAS_ANIMATION_LOADED DAM_JUMP WAIT 0 ENDWHILE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_STEAL stealth_dm_W2 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY empty_dm_W2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 PEDTYPE_PLAYER1 FORCE_WEATHER_NOW WEATHER_FOGGY_SF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 ON SET_CHAR_COORDINATES scplayer -2153.6111 645.3100 51.3516 SET_CHAR_HEADING scplayer 270.0 DO_FADE 1500 FADE_IN ADD_BLIP_FOR_COORD -1641.9952 1309.2168 6.1764 goto_blip_W2 PRINT_NOW WZI2_1 8000 1 fail_text_flag_W2 = 0 LVAR_INT never_run_this_W2 never_run_this_W2 = 0 IF never_run_this_W2 = 1 CREATE_CAR TROPIC 0.0 0.0 0.0 boat_W2[pointer_W2] CREATE_CHAR PEDTYPE_CIVMALE DNB1 0.0 0.0 0.0 guard_W2[pointer_W2] ADD_BLIP_FOR_CHAR guard_W2[pointer_W2] guard_blip_W2[pointer_W2] CREATE_CAR TROPIC 0.0 0.0 0.0 s_boat_W2[pointer_W2] CREATE_CHAR PEDTYPE_CIVMALE DNB1 0.0 0.0 0.0 s_boat_guard_W2[pointer_W2] ADD_BLIP_FOR_CHAR s_boat_guard_W2[pointer_W2] stealth_knife_blip_W2 CREATE_SEARCHLIGHT 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 searchlight_W2[pointer_W2] CREATE_CHECKPOINT CHECKPOINT_TORUS 0.0 0.0 0.0 0.0 0.0 0.0 0.0 corona_W2 ENDIF // audio stuff // player seen in water $audio_text_label_W2[0] = &WUZ2_AA audio_sound_label_W2[0] = SOUND_WUZ2_AA $audio_text_label_W2[1] = &WUZ2_NA audio_sound_label_W2[1] = SOUND_WUZ2_NA $audio_text_label_W2[2] = &WUZ2_ZA audio_sound_label_W2[2] = SOUND_WUZ2_ZA $audio_text_label_W2[3] = &WUZ2_AB audio_sound_label_W2[3] = SOUND_WUZ2_AB $audio_text_label_W2[4] = &WUZ2_NB audio_sound_label_W2[4] = SOUND_WUZ2_NB $audio_text_label_W2[5] = &WUZ2_ZB audio_sound_label_W2[5] = SOUND_WUZ2_ZB $audio_text_label_W2[6] = &WUZ2_AC audio_sound_label_W2[6] = SOUND_WUZ2_AC $audio_text_label_W2[7] = &WUZ2_NC audio_sound_label_W2[7] = SOUND_WUZ2_NC $audio_text_label_W2[8] = &WUZ2_ZC audio_sound_label_W2[8] = SOUND_WUZ2_ZC // player goes underwater non positive $audio_text_label_W2[9] = &WUZ2_BA audio_sound_label_W2[9] = SOUND_WUZ2_BA $audio_text_label_W2[10] = &WUZ2_OA audio_sound_label_W2[10] = SOUND_WUZ2_OA $audio_text_label_W2[11] = &WUZ2_ZD audio_sound_label_W2[11] = SOUND_WUZ2_ZD $audio_text_label_W2[12] = &WUZ2_BB audio_sound_label_W2[12] = SOUND_WUZ2_BB $audio_text_label_W2[13] = &WUZ2_OB audio_sound_label_W2[13] = SOUND_WUZ2_OB $audio_text_label_W2[14] = &WUZ2_ZE audio_sound_label_W2[14] = SOUND_WUZ2_ZE $audio_text_label_W2[15] = &WUZ2_BC audio_sound_label_W2[15] = SOUND_WUZ2_BC $audio_text_label_W2[16] = &WUZ2_OC audio_sound_label_W2[16] = SOUND_WUZ2_OC $audio_text_label_W2[17] = &WUZ2_ZF audio_sound_label_W2[17] = SOUND_WUZ2_ZF // player in water definate sighting $audio_text_label_W2[18] = &WUZ2_CA audio_sound_label_W2[18] = SOUND_WUZ2_CA $audio_text_label_W2[19] = &WUZ2_PA audio_sound_label_W2[19] = SOUND_WUZ2_PA $audio_text_label_W2[20] = &WUZ2_ZG audio_sound_label_W2[20] = SOUND_WUZ2_ZG $audio_text_label_W2[21] = &WUZ2_CB audio_sound_label_W2[21] = SOUND_WUZ2_CB $audio_text_label_W2[22] = &WUZ2_PB audio_sound_label_W2[22] = SOUND_WUZ2_PB $audio_text_label_W2[23] = &WUZ2_ZH audio_sound_label_W2[23] = SOUND_WUZ2_ZH $audio_text_label_W2[24] = &WUZ2_CC audio_sound_label_W2[24] = SOUND_WUZ2_CC $audio_text_label_W2[25] = &WUZ2_PC audio_sound_label_W2[25] = SOUND_WUZ2_PC $audio_text_label_W2[26] = &WUZ2_ZJ audio_sound_label_W2[26] = SOUND_WUZ2_ZJ // player goes underwater after a definate sighting $audio_text_label_W2[27] = &WUZ2_DA audio_sound_label_W2[27] = SOUND_WUZ2_DA $audio_text_label_W2[28] = &WUZ2_QA audio_sound_label_W2[28] = SOUND_WUZ2_QA $audio_text_label_W2[29] = &WUZ2_ZK audio_sound_label_W2[29] = SOUND_WUZ2_ZK $audio_text_label_W2[30] = &WUZ2_DB audio_sound_label_W2[30] = SOUND_WUZ2_DB $audio_text_label_W2[31] = &WUZ2_QB audio_sound_label_W2[31] = SOUND_WUZ2_QB $audio_text_label_W2[32] = &WUZ2_ZL audio_sound_label_W2[32] = SOUND_WUZ2_ZL $audio_text_label_W2[33] = &WUZ2_DC audio_sound_label_W2[33] = SOUND_WUZ2_DC $audio_text_label_W2[34] = &WUZ2_QC audio_sound_label_W2[34] = SOUND_WUZ2_QC $audio_text_label_W2[35] = &WUZ2_ZM audio_sound_label_W2[35] = SOUND_WUZ2_ZM // player has hidden for long enough after a positive sighting $audio_text_label_W2[36] = &WUZ2_EA audio_sound_label_W2[36] = SOUND_WUZ2_EA $audio_text_label_W2[37] = &WUZ2_RA audio_sound_label_W2[37] = SOUND_WUZ2_RA $audio_text_label_W2[38] = &WUZ2_ZN audio_sound_label_W2[38] = SOUND_WUZ2_ZN $audio_text_label_W2[39] = &WUZ2_EB audio_sound_label_W2[39] = SOUND_WUZ2_EB $audio_text_label_W2[40] = &WUZ2_RB audio_sound_label_W2[40] = SOUND_WUZ2_RB $audio_text_label_W2[41] = &WUZ2_ZO audio_sound_label_W2[41] = SOUND_WUZ2_ZO $audio_text_label_W2[42] = &WUZ2_EC audio_sound_label_W2[42] = SOUND_WUZ2_EC $audio_text_label_W2[43] = &WUZ2_RC audio_sound_label_W2[43] = SOUND_WUZ2_RC $audio_text_label_W2[44] = &WUZ2_ZP audio_sound_label_W2[44] = SOUND_WUZ2_ZP // player has been sighted again by same boat $audio_text_label_W2[45] = &WUZ2_FA audio_sound_label_W2[45] = SOUND_WUZ2_FA $audio_text_label_W2[46] = &WUZ2_SA audio_sound_label_W2[46] = SOUND_WUZ2_SA $audio_text_label_W2[47] = &WUZ2_ZQ audio_sound_label_W2[47] = SOUND_WUZ2_ZQ $audio_text_label_W2[48] = &WUZ2_FB audio_sound_label_W2[48] = SOUND_WUZ2_FB $audio_text_label_W2[49] = &WUZ2_SB audio_sound_label_W2[49] = SOUND_WUZ2_SB $audio_text_label_W2[50] = &WUZ2_ZR audio_sound_label_W2[50] = SOUND_WUZ2_ZR $audio_text_label_W2[51] = &WUZ2_FC audio_sound_label_W2[51] = SOUND_WUZ2_FC $audio_text_label_W2[52] = &WUZ2_SC audio_sound_label_W2[52] = SOUND_WUZ2_SC $audio_text_label_W2[53] = &WUZ2_ZS audio_sound_label_W2[53] = SOUND_WUZ2_ZS // player has been sighted again by another boat $audio_text_label_W2[54] = &WUZ2_GA audio_sound_label_W2[54] = SOUND_WUZ2_GA $audio_text_label_W2[55] = &WUZ2_TA audio_sound_label_W2[55] = SOUND_WUZ2_TA $audio_text_label_W2[56] = &WUZ2_ZT audio_sound_label_W2[56] = SOUND_WUZ2_ZT $audio_text_label_W2[57] = &WUZ2_GB audio_sound_label_W2[57] = SOUND_WUZ2_GB $audio_text_label_W2[58] = &WUZ2_TB audio_sound_label_W2[58] = SOUND_WUZ2_TB $audio_text_label_W2[59] = &WUZ2_ZU audio_sound_label_W2[59] = SOUND_WUZ2_ZU $audio_text_label_W2[60] = &WUZ2_GC audio_sound_label_W2[60] = SOUND_WUZ2_GC $audio_text_label_W2[61] = &WUZ2_TC audio_sound_label_W2[61] = SOUND_WUZ2_TC $audio_text_label_W2[62] = &WUZ2_ZV audio_sound_label_W2[62] = SOUND_WUZ2_ZV GENERATE_RANDOM_INT_IN_RANGE 0 3 speech_ped_W2 GENERATE_RANDOM_INT_IN_RANGE 0 3 speech_sample_W2 speech_context_W2 = 0 speech_priority_W2 = 10 mission_wuzi2_MAIN_get_to_docks: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_wuzi2_PASSED ENDIF IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer -1641.9952 1309.2168 6.1764 1.2 1.2 2.0 TRUE SET_PLAYER_CONTROL player1 OFF REMOVE_BLIP goto_blip_W2 GOTO mission_wuzi2_CUT_jump_into_water ENDIF GOTO mission_wuzi2_MAIN_get_to_docks LVAR_INT fx_status_W2 water_splash_W2 water_ripple_W2 mission_wuzi2_CUT_jump_into_water: DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LVAR_INT max_wanted_level_W2 CLEAR_WANTED_LEVEL player1 SET_MAX_WANTED_LEVEL 0 CLEAR_AREA_OF_CARS -1648.8752 1319.2418 6.0 -1636.3673 1297.5399 9.0 CLEAR_AREA_OF_CHARS -1648.8752 1319.2418 6.0 -1636.3673 1297.5399 9.0 GOSUB mission_wuzi2_SUB_create_boats GOSUB mission_wuzi2_sub_create_searchlights IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -1640.90 1310.60 6.1797 ELSE SET_CHAR_COORDINATES scplayer -1640.90 1310.60 6.1797 ENDIF SET_CHAR_HEADING scplayer 315.0 SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF skipped_cutscene_W2 = 0 LOAD_SCENE -1455.9989 1529.1436 19.1790 SET_FIXED_CAMERA_POSITION -1358.4844 1468.9941 18.4397 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1359.3120 1469.5398 18.3092 JUMP_CUT // SET_FIXED_CAMERA_POSITION -1455.9611 1530.0610 19.5749 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -1455.9989 1529.1436 19.1790 JUMP_CUT // TEMP TEMP TEMP //GOSUB mission_wuzi2_SUB_store_players_weapons //REMOVE_ALL_CHAR_WEAPONS scplayer GOSUB mission_wuzi2_SUB_knife_status HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SKIP_CUTSCENE_START PRINT_NOW WZI2_2 6500 1 TIMERA = 0 WHILE TIMERA < 6500 WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION -1511.4271 1374.0748 5.9802 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1511.2897 1373.1028 5.7898 JUMP_CUT // SET_FIXED_CAMERA_POSITION -1461.3271 1364.4674 20.4951 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -1461.0702 1365.3855 20.1934 JUMP_CUT PRINT_NOW WZI2_3 6500 1 TIMERA = 0 WHILE TIMERA < 6500 WAIT 0 ENDWHILE SKIP_CUTSCENE_END CLEAR_PRINTS SKIP_CUTSCENE_START SET_FIXED_CAMERA_POSITION -1642.4387 1308.8817 11.1649 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1641.9141 1309.4020 10.4912 JUMP_CUT TIMERA = 0 WHILE TIMERA < 500 WAIT 0 ENDWHILE TASK_PLAY_ANIM scplayer SF_JumpWall DAM_JUMP 1000.0 FALSE FALSE FALSE FALSE 0 TIMERA = 0 WHILE TIMERA < 1000 WAIT 0 ENDWHILE SET_TIME_SCALE 0.20 SET_FIXED_CAMERA_POSITION -1636.6643 1316.3539 -3.7183 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1636.7286 1315.7485 -2.9250 JUMP_CUT z = -2.9250 TIMERA = 0 fx_status_W2 = 0 // move camera lookat down to follow player in water WHILE z > -3.2406 WAIT 0 z -= 0.003 IF z < -3.2406 z = -3.2406 ENDIF POINT_CAMERA_AT_POINT -1636.7286 1315.7485 z JUMP_CUT IF TIMERA > 200 AND fx_status_W2 < 2 IF fx_status_W2 = 0 GET_WATER_HEIGHT_AT_COORDS -1637.3536 1314.1102 TRUE x CREATE_FX_SYSTEM water_splash -1637.3536 1314.1102 x TRUE water_splash_W2 CREATE_FX_SYSTEM water_ripples -1637.3536 1314.1102 x TRUE water_ripple_W2 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1637.3536 1314.1102 x SOUND_PED_HIT_WATER_SPLASH fx_status_W2 ++ ELSE PLAY_FX_SYSTEM water_splash_W2 PLAY_FX_SYSTEM water_ripple_W2 fx_status_W2 ++ ENDIF ENDIF ENDWHILE // slowly speed time back up to 0.5 when player starts to go back to the surface z = 0.20 WHILE z < 0.5 WAIT 0 z+= 0.014 IF z > 0.5 z = 0.5 ENDIF SET_TIME_SCALE z ENDWHILE KILL_FX_SYSTEM water_splash_W2 KILL_FX_SYSTEM water_ripple_W2 WHILE IS_CHAR_PLAYING_ANIM scplayer SF_JumpWall WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer -1636.33 1315.36 -1.0 SET_CHAR_HEADING scplayer 285.0 TIMERA = 0 WHILE TIMERA < 500 WAIT 0 ENDWHILE SET_TIME_SCALE 1.0 SET_FIXED_CAMERA_POSITION -1641.3987 1314.4135 1.3246 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1640.4224 1314.5736 1.1792 JUMP_CUT skipped_cutscene_W2 = 1 TIMERA = 0 WHILE TIMERA < 1500 WAIT 0 ENDWHILE SKIP_CUTSCENE_END HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE KILL_FX_SYSTEM water_splash_W2 KILL_FX_SYSTEM water_ripple_W2 SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_ALWAYS_DRAW_3D_MARKERS TRUE // first corona current_corona_W2 = 0 corona_status_W2 = 0 corona_X_W2 = -1625.6505 corona_Y_W2 = 1317.9204 //CREATE_CHECKPOINT CHECKPOINT_TORUS corona_X_W2 corona_Y_W2 0.0 -1626.6500 1317.9476 0.0 1.9067 corona_W2 bounce_W2 = 1 IF skipped_cutscene_W2 = 0 SET_CHAR_COORDINATES scplayer -1636.33 1315.36 -1.0 SET_CHAR_HEADING scplayer 285.0 SET_TIME_SCALE 1.0 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER ELSE RESTORE_CAMERA ENDIF REMOVE_ANIMATION DAM_JUMP skipped_cutscene_W2 = 0 CLEAR_PRINTS PRINT_NOW WZI2_8 8000 1 ADD_BLIP_FOR_COORD -1449.6420 1501.1354 0.7366 goto_blip_W2 // swimming tutorial stuff LVAR_INT stealth_knife_W2 stealth_knife_blip_W2 VAR_INT help_text_switch_W2 help_text_flag_W2 LVAR_TEXT_LABEL help_text_W2[8] LVAR_TEXT_LABEL help_text_W2Apt[8] help_text_switch_W2 = 0 help_text_flag_W2 = 0 // swimming tutorial text for classic and HID controls $help_text_W2[0] = WZI2_A0 $help_text_W2[1] = WZI2_A1 $help_text_W2[2] = WZI2_A2 $help_text_W2[3] = WZI2_A3 $help_text_W2[4] = WZI2_A4 $help_text_W2[5] = WZI2_A5 $help_text_W2[6] = WZI2_A6 $help_text_W2[7] = WZI2_A7 // swimming tutorial text for adapted controls $help_text_W2Apt[0] = WZI2_A0 // same $help_text_W2Apt[1] = WZI2_AQ $help_text_W2Apt[2] = WZI2_A2 // same $help_text_W2Apt[3] = WZI2_A3 // same $help_text_W2Apt[4] = WZI2_A4 // same $help_text_W2Apt[5] = WZI2_A5 // same $help_text_W2Apt[6] = WZI2_AR $help_text_W2Apt[7] = WZI2_A7 // same // knife in underwater cave IF knife_status_W2 = 0 CREATE_PICKUP_WITH_AMMO KNIFECUR PICKUP_ONCE 1 -1595.0 1345.0 -7.5 stealth_knife_W2 ENDIF TIMERB = 0 CHECKPOINT_SAVE 99 mission_wuzi2_MAIN_reef: WAIT 0 GOSUB mission_wuzi2_SUB_gun_check IF stop_and_attack_W2 = 2 REMOVE_BLIP stealth_knife_blip_W2 //ADD_BLIP_FOR_COORD -1449.6420 1501.1354 0.7366 goto_blip_W2 //PRINT_NOW WZI2_8 6000 1 GOTO mission_wuzi2_MAIN_in_open_water ENDIF GOSUB mission_wuzi2_SUB_player_swimming_status IF reef_status_W2 = 2 GOTO mission_wuzi2_MAIN_cut_open_water ENDIF SWITCH help_text_switch_W2 CASE 0 IF IS_CHAR_IN_AREA_3D scplayer -1602.7825 1320.6877 -8.0 -1606.1187 1331.5096 1.0 FALSE AND player_underwater_W2 = 0 SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF CLEAR_HELP CLEAR_PRINTS CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_TRACK -1600.9977 1323.0409 1.9093 -1600.3146 1322.4142 -2.0672 6000 TRUE CAMERA_SET_VECTOR_MOVE -1598.5248 1318.5944 2.3701 -1598.5248 1318.5944 -2.3701 6000 TRUE PRINT_NOW WZI2_5 8000 1 // the route ahead is blocked TIMERA = 0 WHILE TIMERA < 800 WAIT 0 ENDWHILE SKIP_CUTSCENE_START WHILE CAMERA_IS_VECTOR_TRACK_RUNNING WAIT 0 ENDWHILE TIMERA = 0 WHILE TIMERA < 1500 WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION -1598.5248 1318.5944 1.3701 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1599.1813 1319.2881 1.0744 JUMP_CUT SKIP_CUTSCENE_END CLEAR_PRINTS CAMERA_RESET_NEW_SCRIPTABLES RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON help_text_switch_W2 ++ TIMERB = 0 ELSE IF IS_CHAR_IN_AREA_3D scplayer -1611.8329 1334.3130 0.8012 -1615.8120 1329.3939 -7.9862 FALSE help_text_switch_W2 = 3 ELSE // in open water IF LOCATE_CHAR_ON_FOOT_2D scplayer -1549.1251 1339.9611 3.5 3.5 FALSE exit_status_W2 = 0 GOTO mission_wuzi2_MAIN_enter_open_water ENDIF ENDIF ENDIF BREAK CASE 1 IF IS_CHAR_IN_ANGLED_AREA_ON_FOOT_3D scplayer -1611.8329 1334.3130 0.8012 -1615.8120 1329.3939 -7.9862 2.0 FALSE IF player_underwater_W2 = 1 PRINT_NOW WZI2_6 5000 1 // you can now resurface ENDIF help_text_switch_W2 ++ ELSE IF LOCATE_CHAR_ON_FOOT_2D scplayer -1549.1251 1339.9611 3.5 3.5 FALSE exit_status_W2 = 0 GOTO mission_wuzi2_MAIN_enter_open_water ENDIF ENDIF BREAK CASE 2 IF LOCATE_CHAR_ON_FOOT_2D scplayer -1612.2080 1349.5525 3.5 3.5 FALSE CLEAR_HELP IF knife_status_W2 = 0 PRINT_NOW WZI2_7 6000 1 // hint about the knife ADD_BLIP_FOR_PICKUP stealth_knife_W2 stealth_knife_blip_W2 TIMERB = 0 ELSE TIMERB = 6001 ENDIF help_text_switch_W2 ++ ELSE IF LOCATE_CHAR_ON_FOOT_2D scplayer -1549.1251 1339.9611 3.5 3.5 FALSE exit_status_W2 = 0 GOTO mission_wuzi2_MAIN_enter_open_water ENDIF ENDIF BREAK CASE 3 IF LOCATE_CHAR_ON_FOOT_2D scplayer -1549.1251 1339.9611 3.5 3.5 FALSE exit_status_W2 = 0 GOTO mission_wuzi2_MAIN_enter_open_water ENDIF BREAK ENDSWITCH GOSUB mission_wuzi2_SUB_swimming_coronas // debug grid GOSUB mission_wuzi2_DEBUG_draw_grid GOTO mission_wuzi2_MAIN_reef LVAR_INT corona_W2 current_corona_W2 corona_status_W2 bounce_W2 LVAR_FLOAT corona_X_W2 corona_Y_W2 mission_wuzi2_SUB_swimming_coronas: SWITCH corona_status_W2 CASE 0 // locate player to remove (bounce) IF LOCATE_CHAR_ON_FOOT_2D scplayer corona_X_W2 corona_Y_W2 4.0 4.0 bounce_W2 DELETE_CHECKPOINT corona_W2 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE IF current_corona_W2 < 6 corona_status_W2 ++ ELSE corona_status_W2 = -1 ENDIF // ELSE // IF bounce_W2 = 1 // GET_WATER_HEIGHT_AT_COORDS corona_X_W2 corona_Y_W2 TRUE water_W2 // SET_CHECKPOINT_COORDS corona_W2 corona_X_W2 corona_Y_W2 water_W2 // ENDIF ENDIF BREAK CASE 1 GOSUB mission_wuzi2_SUB_create_new_swimming_corona corona_status_W2 -- BREAK ENDSWITCH RETURN mission_wuzi2_SUB_create_new_swimming_corona: current_corona_W2 ++ SWITCH current_corona_W2 CASE 1 corona_X_W2 = -1604.5222 corona_Y_W2 = 1312.6744 //CREATE_CHECKPOINT CHECKPOINT_TORUS corona_X_W2 corona_Y_W2 0.0 -1605.5205 1312.6179 0.0 2.4133 corona_W2 bounce_W2 = 1 BREAK CASE 2 corona_X_W2 = -1611.5571 corona_Y_W2 = 1330.7891 CREATE_CHECKPOINT CHECKPOINT_TORUS corona_X_W2 corona_Y_W2 -2.2294 -1610.6716 1330.3246 -2.2294 0.8/*1.6533*/ corona_W2 bounce_W2 = 0 BREAK CASE 3 corona_X_W2 = -1626.0983 corona_Y_W2 = 1343.8113 //CREATE_CHECKPOINT CHECKPOINT_TORUS corona_X_W2 corona_Y_W2 0.0 -1626.2007 1342.8165 0.0 2.0267 corona_W2 bounce_W2 = 1 BREAK CASE 4 IF knife_status_W2 > 0 corona_X_W2 = -1596.3333 corona_Y_W2 = 1345.0532 CREATE_CHECKPOINT CHECKPOINT_TORUS corona_X_W2 corona_Y_W2 -6.2933 -1597.2726 1345.3959 -6.2933 0.8/*1.6667*/ corona_W2 bounce_W2 = 0 BREAK ELSE current_corona_W2 ++ ENDIF CASE 5 corona_X_W2 = -1576.7216 corona_Y_W2 = 1338.4773 //CREATE_CHECKPOINT CHECKPOINT_TORUS corona_X_W2 corona_Y_W2 0.0 -1577.6342 1338.8859 0.0 1.9067 corona_W2 bounce_W2 = 1 BREAK CASE 6 corona_X_W2 = -1559.1379 corona_Y_W2 = 1333.9536 CREATE_CHECKPOINT CHECKPOINT_TORUS corona_X_W2 corona_Y_W2 -5.3882 -1560.1190 1334.1466 -5.3819 1.2/*2.5600*/ corona_W2 bounce_W2 = 0 BREAK CASE 7 corona_X_W2 = -1548.2164 corona_Y_W2 = 1342.1975 CREATE_CHECKPOINT CHECKPOINT_TORUS corona_X_W2 corona_Y_W2 -7.0752 -1548.6078 1341.2772 -7.0752 1.2/*2.5600*/ corona_W2 bounce_W2 = 0 BREAK ENDSWITCH RETURN LVAR_INT exit_status_W2 mission_wuzi2_MAIN_enter_open_water: WAIT 0 // check players current position/square GOSUB mission_wuzi2_SUB_player_swimming_status IF reef_status_W2 = 2 GOTO mission_wuzi2_MAIN_cut_open_water ENDIF IF player_underwater_W2 = 0 IF exit_status_W2 = 0 IF NOT IS_CHAR_IN_ANGLED_AREA_ON_FOOT_3D scplayer -1558.9320 1338.2853 -5.0 -1563.0785 1329.2897 5.0 10.0 FALSE IF reef_status_W2 = 0 GOTO mission_wuzi2_MAIN_cut_open_water ENDIF ELSE exit_status_W2 = 1 ENDIF ENDIF ELSE IF exit_status_W2 = 1 IF LOCATE_CHAR_ON_FOOT_2D scplayer -1549.1251 1339.9611 3.5 3.5 FALSE exit_status_W2 = 0 ENDIF ENDIF ENDIF GOTO mission_wuzi2_MAIN_enter_open_water mission_wuzi2_MAIN_cut_open_water: player_status_W2 = -2 CLEAR_HELP CLEAR_PRINTS REMOVE_BLIP stealth_knife_blip_W2 DELETE_CHECKPOINT corona_W2 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON // normal cutscene IF NOT reef_status_W2 = 2 SET_CAMERA_BEHIND_PLAYER TIMERA = 0 WHILE TIMERA < 500 WAIT 0 ENDWHILE GET_ACTIVE_CAMERA_COORDINATES camera_pos_X_W2 camera_pos_Y_W2 camera_pos_Z_W2 GET_ACTIVE_CAMERA_POINT_AT camera_look_X_W2 camera_look_Y_W2 camera_look_Z_W2 IF NOT IS_CAR_DEAD boat_W2[1] GET_CAR_COORDINATES boat_W2[1] x y z ENDIF CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_TRACK camera_look_X_W2 camera_look_Y_W2 camera_look_Z_W2 x y z 3500 TRUE CAMERA_SET_VECTOR_MOVE camera_pos_X_W2 camera_pos_Y_W2 camera_pos_Z_W2 camera_pos_X_W2 camera_pos_Y_W2 camera_pos_Z_W2 3500 TRUE PRINT_NOW WZI2_40 8000 1 TIMERA = 0 WHILE TIMERA < 1000 WAIT 0 ENDWHILE SKIP_CUTSCENE_START WAIT 0 WHILE CAMERA_IS_VECTOR_TRACK_RUNNING WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD boat_W2[0] GET_CAR_COORDINATES boat_W2[0] player_x player_y player_z ENDIF CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_TRACK x y z player_x player_y player_z 3000 FALSE CAMERA_SET_VECTOR_MOVE camera_pos_X_W2 camera_pos_Y_W2 camera_pos_Z_W2 camera_pos_X_W2 camera_pos_Y_W2 camera_pos_Z_W2 3000 FALSE WAIT 0 WHILE CAMERA_IS_VECTOR_TRACK_RUNNING WAIT 0 GOSUB mission_wuzi2_SUB_player_grid_square GOSUB mission_wuzi2_SUB_boat_status ENDWHILE PRINT_NOW WZI2_41 8000 1 CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_TRACK player_x player_y player_z camera_look_X_W2 camera_look_Y_W2 camera_look_Z_W2 4500 TRUE CAMERA_SET_VECTOR_MOVE camera_pos_X_W2 camera_pos_Y_W2 camera_pos_Z_W2 camera_pos_X_W2 camera_pos_Y_W2 camera_pos_Z_W2 4500 TRUE WAIT 0 WHILE CAMERA_IS_VECTOR_TRACK_RUNNING WAIT 0 GOSUB mission_wuzi2_SUB_player_grid_square GOSUB mission_wuzi2_SUB_boat_status ENDWHILE TIMERA = 0 WHILE TIMERA < 1000 WAIT 0 GOSUB mission_wuzi2_SUB_player_grid_square GOSUB mission_wuzi2_SUB_boat_status ENDWHILE SKIP_CUTSCENE_END ELSE SKIP_CUTSCENE_START // jumped out of reef cutscene SET_FIXED_CAMERA_POSITION -1568.7422 1385.3656 5.9871 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1569.7065 1385.1256 5.8767 JUMP_CUT PRINT_NOW WZI2_40 6000 1 TIMERA = 0 WHILE TIMERA < 6000 WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION -1494.6490 1350.3582 6.0727 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1495.1637 1349.5155 5.9146 JUMP_CUT PRINT_NOW WZI2_41 6000 1 TIMERA = 0 WHILE TIMERA < 6000 WAIT 0 ENDWHILE SKIP_CUTSCENE_END ENDIF PRINT_NOW WZI2_8 6000 1 IF NOT IS_CAR_DEAD boat_W2[0] ADD_BLIP_FOR_CAR boat_W2[0] boat_blip_W2[0] CHANGE_BLIP_DISPLAY boat_blip_W2[0] BLIP_ONLY ENDIF IF NOT IS_CAR_DEAD boat_W2[1] ADD_BLIP_FOR_CAR boat_W2[1] boat_blip_W2[1] CHANGE_BLIP_DISPLAY boat_blip_W2[1] BLIP_ONLY ENDIF ADD_BLIP_FOR_SEARCHLIGHT searchlight_W2[0] searchlight_blip_W2[0] ADD_BLIP_FOR_SEARCHLIGHT searchlight_W2[1] searchlight_blip_W2[1] ADD_BLIP_FOR_SEARCHLIGHT searchlight_W2[2] searchlight_blip_W2[2] ADD_BLIP_FOR_SEARCHLIGHT searchlight_W2[3] searchlight_blip_W2[3] // ADD_BLIP_FOR_SEARCHLIGHT searchlight_W2[4] searchlight_blip_W2[4] // ADD_BLIP_FOR_SEARCHLIGHT searchlight_W2[5] searchlight_blip_W2[5] IF NOT IS_CAR_DEAD s_boat_W2[0] ADD_BLIP_FOR_CAR s_boat_W2[0] s_boat_blip_W2[0] CHANGE_BLIP_DISPLAY s_boat_blip_W2[0] BLIP_ONLY ENDIF IF NOT IS_CAR_DEAD s_boat_W2[1] ADD_BLIP_FOR_CAR s_boat_W2[1] s_boat_blip_W2[1] CHANGE_BLIP_DISPLAY s_boat_blip_W2[1] BLIP_ONLY ENDIF // main boat //ADD_BLIP_FOR_COORD -1449.6420 1501.1354 0.7366 goto_blip_W2 PRINT_NOW WZI2_8 6000 1 player_breath_W2 = 1 player_timer_W2 = 0 player_first_spot_W2 = 0 CAMERA_RESET_NEW_SCRIPTABLES RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER CLEAR_CHAR_TASKS scplayer SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF stealth_active_W2 = 0 LVAR_INT stealth_active_W2 explain_searchlights_W2 mission_wuzi2_MAIN_in_open_water: WAIT 0 GET_GAME_TIMER this_frame_time_W2 time_diff_W2 = this_frame_time_W2 - last_frame_time_W2 last_frame_time_W2 = this_frame_time_W2 // player timer player_timer_W2 += time_diff_W2 // guard timers guard_timer_W2[0] += time_diff_W2 guard_timer_W2[1] += time_diff_W2 IF NOT stop_and_attack_W2 = 2 // get status of player underwater/crawling GOSUB mission_wuzi2_SUB_player_swimming_status // check players current position/square GOSUB mission_wuzi2_SUB_player_grid_square // controls moving of the boat GOSUB mission_wuzi2_SUB_boat_status // controls guards on the boat GOSUB mission_wuzi2_SUB_guard_status // controls text for guys on the boat GOSUB mission_wuzi2_sub_player_status // check searchlights if player is near big boat IF p_current_square > 35 IF explain_searchlights_W2 = 0 explain_searchlights_W2 = 1 ENDIF GOSUB mission_wuzi2_SUB_check_spotlights ENDIF // debug grid GOSUB mission_wuzi2_DEBUG_draw_grid GOSUB mission_wuzi2_SUB_gun_check ELSE GOSUB mission_wuzi2_SUB_stop_and_attack ENDIF // check is player has shot bulbs GOSUB mission_wuzi2_SUB_check_bulbs // stealth guys on boat IF stealth_active_W2 = 0 IF IS_CHAR_IN_WATER scplayer IF player_underwater_W2 = 0 IF LOCATE_CHAR_ON_FOOT_2D scplayer -1447.1284 1501.2410 6.0 6.0 FALSE CLEAR_HELP PRINT_HELP_FOREVER WZI2_C0 // Double tap ~m~~widget_button_swim~ to jump and climb out of the water. TIMERB = 0 stealth_active_W2 ++ ENDIF ENDIF ENDIF ELSE IF stealth_active_W2 = 1 IF TIMERB > 8000 CLEAR_HELP ENDIF IF NOT IS_CHAR_IN_WATER scplayer IF LOCATE_CHAR_ON_FOOT_3D scplayer -1449.6420 1501.1354 0.7366 2.0 2.0 2.0 FALSE CLEAR_HELP GOSUB mission_wuzi2_SUB_start_boat stealth_active_W2 ++ ENDIF ENDIF ELSE // stealth guards GOSUB mission_wuzi2_sub_guard_stealth_status GOSUB mission_wuzi2_SUB_idle_guards_still GOSUB mission_wuzi2_SUB_idle_guards_patrol IF player_planted_bug_W2 = 0 IF LOCATE_CHAR_ON_FOOT_3D scplayer -1372.7328 1495.5503 0.8578 1.2 1.2 2.0 TRUE IF NOT p_stealth_status_W2 = 2 PRINT_HELP_FOREVER WZI2_30 // Press ~m~~widget_mission_start~ to plant the bug. WRITE_LOG "FANCYCONTEXT WIDGET_MISSION_START PLNTBUG" // "Plant Bug". Button prompts for a shared buttons need to present context-specific strings. IF IS_WIDGET_RELEASED WIDGET_MISSION_START CLEAR_PRINTS PRINT_NOW WZI2_32 6000 1 REMOVE_BLIP goto_blip_W2 ADD_BLIP_FOR_COORD -1508.5582 1296.0671 0.3970 goto_blip_W2 player_planted_bug_W2 = 1 GOSUB mission_wuzi2_SUB_reduce_guard_accuracy ENDIF ELSE PRINT_NOW WZI2_31 3000 1 ENDIF ENDIF ELSE IF LOCATE_CHAR_ON_FOOT_3D scplayer -1508.5582 1296.0671 0.3970 1.2 1.2 2.0 TRUE GOTO mission_wuzi2_PASSED ENDIF ENDIF ENDIF ENDIF GOSUB mission_wuzi2_SUB_control_radar GOTO mission_wuzi2_MAIN_in_open_water LVAR_INT player_swimstate_W2 player_crawling_W2 player_underwater_W2 player_timer_W2 reef_status_W2 // MAIN CONTROLLER FOR SWIMMING SECTION mission_wuzi2_SUB_player_swimming_status: player_underwater_W2 = 0 player_crawling_W2 = 0 IF IS_CHAR_SWIMMING scplayer GET_CHAR_SWIM_STATE scplayer player_swimstate_W2 IF player_swimstate_W2 = SWIM_UNDERWATER player_underwater_W2 = 1 IF player_status_W2 <= 0 player_breath_W2 = 1 player_status_W2 = -2 ENDIF ELSE IF player_swimstate_W2 = SWIM_CRAWL player_crawling_W2 = 1 ENDIF ENDIF // check to make sure player hasnt climbed out of the reef IF reef_status_W2 = 1 IF IS_CHAR_IN_ANGLED_AREA_2D scplayer -1559.2874 1337.1991 -1562.5834 1327.2573 -62.9096 FALSE OR IS_CHAR_IN_ANGLED_AREA_2D scplayer -1590.3267 1336.8811 -1607.2059 1307.5653 -37.0915 FALSE OR IS_CHAR_IN_ANGLED_AREA_2D scplayer -1616.5742 1319.3361 -1632.8600 1303.4518 -23.9075 FALSE OR IS_CHAR_IN_ANGLED_AREA_2D scplayer -1595.1842 1316.6805 -1603.4827 1308.8937 -8.3514 FALSE reef_status_W2 = 0 ELSE reef_status_W2 = 2 ENDIF ENDIF ELSE IF reef_status_W2 = 0 reef_status_W2 = 1 // out of water ENDIF IF IS_CHAR_IN_ANY_CAR scplayer player_crawling_W2 = 1 ENDIF ENDIF RETURN // ########## // ## // ## BOATS // ## // ########################################################################################################## LVAR_INT boat_W2[2] boat_blip_W2[2] boat_status_W2[2] boat_position_W2[2] boat_attack_W2[2] LVAR_INT boat_driver_W2[2] boat_guard1_W2[2] boat_guard2_W2[2] boat_guard3_W2[2] LVAR_INT boat_guards_W2[6] VAR_INT guard_status_W2[2] guard_timer_W2[2] square_attack_status_W2 attack_status_W2 LVAR_FLOAT boat_speed_W2[2] boat_X_W2[2] boat_Y_W2[2] boat_heading_W2[2] guard_heading_W2[6] guard1_heading_W2 guard2_heading_W2 guard3_heading_W2 LVAR_FLOAT swim_grid_X_W2[7] swim_grid_Y_W2[5] boat_square_X_W2[6] boat_square_Y_W2[4] LVAR_INT boat_goto_X_W2[2] boat_goto_Y_W2[2] LVAR_FLOAT max_speed_W2 acceleration_W2 turn_factor_W2 mission_wuzi2_SUB_create_boats: SWITCH_ROADS_OFF -1328.9994 1239.9972 -5.0 -1655.8684 1638.7549 10.0 CLEAR_AREA_OF_CARS -1328.9994 1239.9972 -5.0 -1655.8684 1638.7549 10.0 swim_grid_X_W2[0] = -1605.0 swim_grid_X_W2[1] = -1565.0 swim_grid_X_W2[2] = -1525.0 swim_grid_X_W2[3] = -1485.0 swim_grid_X_W2[4] = -1445.0 swim_grid_X_W2[5] = -1405.0 swim_grid_X_W2[6] = -1365.0 swim_grid_Y_W2[0] = 1315.0 swim_grid_Y_W2[1] = 1355.0 swim_grid_Y_W2[2] = 1395.0 swim_grid_Y_W2[3] = 1435.0 swim_grid_Y_W2[4] = 1475.0 boat_square_X_W2[0] = -1585.0 boat_square_X_W2[1] = -1545.0 boat_square_X_W2[2] = -1505.0 boat_square_X_W2[3] = -1465.0 boat_square_X_W2[4] = -1425.0 boat_square_X_W2[5] = -1385.0 boat_square_Y_W2[0] = 1335.0 boat_square_Y_W2[1] = 1375.0 boat_square_Y_W2[2] = 1415.0 boat_square_Y_W2[3] = 1455.0 p_current_square = 0 p_last_square = -1 turn_factor_W2 = 40.0 max_speed_W2 = 3.0 acceleration_W2 = 0.1 // boat 0 CREATE_CAR TROPIC -1585.0 1375.0 1.0 boat_W2[0] ANCHOR_BOAT boat_W2[0] TRUE CREATE_CHAR_INSIDE_CAR boat_W2[0] PEDTYPE_MISSION1 DNB1 boat_driver_W2[0] CREATE_CHAR PEDTYPE_MISSION1 DNB1 -1585.0 1375.0 4.0 boat_guards_W2[0] ATTACH_CHAR_TO_CAR boat_guards_W2[0] boat_W2[0] 0.0 9.0 2.1 FACING_FORWARD 360.0 WEAPONTYPE_AK47 TASK_STAY_IN_SAME_PLACE boat_guards_W2[0] TRUE SET_CHAR_ACCURACY boat_guards_W2[0] 80 SET_CHAR_SHOOT_RATE boat_guards_W2[0] 20 guard_heading_W2[0] = 0.0 CREATE_CHAR PEDTYPE_MISSION1 DNB2 -1585.0 1375.0 4.0 boat_guards_W2[1] ATTACH_CHAR_TO_CAR boat_guards_W2[1] boat_W2[0] -1.0 -1.0 3.70 FACING_FORWARD 360.0 WEAPONTYPE_AK47 TASK_STAY_IN_SAME_PLACE boat_guards_W2[1] TRUE SET_CHAR_ACCURACY boat_guards_W2[1] 80 SET_CHAR_SHOOT_RATE boat_guards_W2[1] 20 guard_heading_W2[1] = -90.0 CREATE_CHAR PEDTYPE_MISSION1 DNB3 -1585.0 1375.0 4.0 boat_guards_W2[2] ATTACH_CHAR_TO_CAR boat_guards_W2[2] boat_W2[0] 1.0 -4.0 1.15 FACING_FORWARD 360.0 WEAPONTYPE_AK47 TASK_STAY_IN_SAME_PLACE boat_guards_W2[2] TRUE SET_CHAR_ACCURACY boat_guards_W2[2] 80 SET_CHAR_SHOOT_RATE boat_guards_W2[2] 20 guard_heading_W2[2] = 140.0 boat_status_W2[0] = 0 boat_position_W2[0] = 17 guard_status_W2[0] = 0 // boat 1 CREATE_CAR TROPIC -1505.0 1335.0 1.0 boat_W2[1] ANCHOR_BOAT boat_W2[1] TRUE CREATE_CHAR_INSIDE_CAR boat_W2[1] PEDTYPE_MISSION1 DNB1 boat_driver_W2[1] CREATE_CHAR PEDTYPE_MISSION1 DNB1 -1585.0 1375.0 4.0 boat_guards_W2[3] ATTACH_CHAR_TO_CAR boat_guards_W2[3] boat_W2[1] 0.0 9.0 2.1 FACING_FORWARD 360.0 WEAPONTYPE_AK47 TASK_STAY_IN_SAME_PLACE boat_guards_W2[3] TRUE SET_CHAR_ACCURACY boat_guards_W2[3] 80 SET_CHAR_SHOOT_RATE boat_guards_W2[3] 20 guard_heading_W2[3] = 0.0 CREATE_CHAR PEDTYPE_MISSION1 DNB2 -1585.0 1375.0 4.0 boat_guards_W2[4] ATTACH_CHAR_TO_CAR boat_guards_W2[4] boat_W2[1] -1.0 -1.0 3.70 FACING_FORWARD 360.0 WEAPONTYPE_AK47 TASK_STAY_IN_SAME_PLACE boat_guards_W2[4] TRUE SET_CHAR_ACCURACY boat_guards_W2[4] 80 SET_CHAR_SHOOT_RATE boat_guards_W2[4] 20 guard_heading_W2[4] = -90.0 CREATE_CHAR PEDTYPE_MISSION1 DNB3 -1585.0 1375.0 4.0 boat_guards_W2[5] ATTACH_CHAR_TO_CAR boat_guards_W2[5] boat_W2[1] 1.0 -4.0 1.15 FACING_FORWARD 360.0 WEAPONTYPE_AK47 TASK_STAY_IN_SAME_PLACE boat_guards_W2[5] TRUE SET_CHAR_ACCURACY boat_guards_W2[5] 80 SET_CHAR_SHOOT_RATE boat_guards_W2[5] 20 guard_heading_W2[5] = 140.0 boat_status_W2[1] = 0 boat_position_W2[1] = 11 guard_status_W2[1] = 0 attack_status_W2 = 0 RETURN VAR_INT p_current_square p_last_square x_grid_pos_W2 y_grid_pos_W2 mission_wuzi2_SUB_player_grid_square: GET_CHAR_COORDINATES scplayer x y z x_grid_pos_W2 = -1 y_grid_pos_W2 = -1 // x grid position pointer_W2 = 0 WHILE pointer_W2 < 7 IF x < swim_grid_X_W2[pointer_W2] x_grid_pos_W2 = pointer_W2 pointer_W2 = 7 ENDIF pointer_W2++ ENDWHILE IF x_grid_pos_W2 = -1 x_grid_pos_W2 = 7 ENDIF // y grid position pointer_W2 = 0 WHILE pointer_W2 < 5 IF y < swim_grid_Y_W2[pointer_W2] y_grid_pos_W2 = pointer_W2 pointer_W2 = 5 ENDIF pointer_W2++ ENDWHILE IF y_grid_pos_W2 = -1 y_grid_pos_W2 = 5 ENDIF // calculate square number y_grid_pos_W2 *= 8 p_current_square = x_grid_pos_W2 + y_grid_pos_W2 // if players in a new square move the boats IF NOT p_current_square = p_last_square GOSUB mission_wuzi2_SUB_grid_controller p_last_square = p_current_square ENDIF RETURN LVAR_INT boat_pos_temp_W2[2] boat_goto_X_temp_W2[2] boat_goto_Y_temp_W2[2] mission_wuzi2_SUB_grid_controller: SWITCH p_current_square CASE 0 CASE 1 boat_pos_temp_W2[0] = 17 boat_goto_X_temp_W2[0] = 0 boat_goto_Y_temp_W2[0] = 1 boat_pos_temp_W2[1] = 11 boat_goto_X_temp_W2[1] = 2 boat_goto_Y_temp_W2[1] = 0 square_attack_status_W2 = -1 BREAK CASE 2 CASE 3 boat_pos_temp_W2[0] = 18 boat_goto_X_temp_W2[0] = 1 boat_goto_Y_temp_W2[0] = 1 boat_pos_temp_W2[1] = 11 boat_goto_X_temp_W2[1] = 2 boat_goto_Y_temp_W2[1] = 0 square_attack_status_W2 = 4 BREAK CASE 4 boat_pos_temp_W2[0] = 18 boat_goto_X_temp_W2[0] = 1 boat_goto_Y_temp_W2[0] = 1 boat_pos_temp_W2[1] = 12 boat_goto_X_temp_W2[1] = 3 boat_goto_Y_temp_W2[1] = 0 square_attack_status_W2 = 4 BREAK CASE 5 boat_pos_temp_W2[0] = 18 boat_goto_X_temp_W2[0] = 1 boat_goto_Y_temp_W2[0] = 1 boat_pos_temp_W2[1] = 13 boat_goto_X_temp_W2[1] = 4 boat_goto_Y_temp_W2[1] = 0 square_attack_status_W2 = 4 BREAK CASE 6 CASE 7 CASE 15 boat_pos_temp_W2[0] = 18 boat_goto_X_temp_W2[0] = 1 boat_goto_Y_temp_W2[0] = 1 boat_pos_temp_W2[1] = 14 boat_goto_X_temp_W2[1] = 5 boat_goto_Y_temp_W2[1] = 0 square_attack_status_W2 = 4 BREAK CASE 8 boat_pos_temp_W2[0] = 17 boat_goto_X_temp_W2[0] = 0 boat_goto_Y_temp_W2[0] = 1 boat_pos_temp_W2[1] = 11 boat_goto_X_temp_W2[1] = 2 boat_goto_Y_temp_W2[1] = 0 square_attack_status_W2 = 3 BREAK CASE 9 CASE 10 boat_pos_temp_W2[0] = 18 boat_goto_X_temp_W2[0] = 1 boat_goto_Y_temp_W2[0] = 1 boat_pos_temp_W2[1] = 11 boat_goto_X_temp_W2[1] = 2 boat_goto_Y_temp_W2[1] = 0 square_attack_status_W2 = 5 BREAK CASE 11 boat_pos_temp_W2[0] = 18 boat_goto_X_temp_W2[0] = 1 boat_goto_Y_temp_W2[0] = 1 boat_pos_temp_W2[1] = 12 boat_goto_X_temp_W2[1] = 3 boat_goto_Y_temp_W2[1] = 0 square_attack_status_W2 = 2 BREAK CASE 12 boat_pos_temp_W2[0] = 18 boat_goto_X_temp_W2[0] = 1 boat_goto_Y_temp_W2[0] = 1 boat_pos_temp_W2[1] = 20 boat_goto_X_temp_W2[1] = 3 boat_goto_Y_temp_W2[1] = 1 square_attack_status_W2 = 1 BREAK CASE 13 boat_pos_temp_W2[0] = 18 boat_goto_X_temp_W2[0] = 1 boat_goto_Y_temp_W2[0] = 1 boat_pos_temp_W2[1] = 21 boat_goto_X_temp_W2[1] = 4 boat_goto_Y_temp_W2[1] = 1 square_attack_status_W2 = 1 BREAK CASE 14 boat_pos_temp_W2[0] = 18 boat_goto_X_temp_W2[0] = 1 boat_goto_Y_temp_W2[0] = 1 boat_pos_temp_W2[1] = 22 boat_goto_X_temp_W2[1] = 5 boat_goto_Y_temp_W2[1] = 1 square_attack_status_W2 = 1 BREAK CASE 16 boat_pos_temp_W2[0] = 17 boat_goto_X_temp_W2[0] = 0 boat_goto_Y_temp_W2[0] = 1 boat_pos_temp_W2[1] = 20 boat_goto_X_temp_W2[1] = 3 boat_goto_Y_temp_W2[1] = 1 square_attack_status_W2 = 3 BREAK CASE 17 boat_pos_temp_W2[0] = 25 boat_goto_X_temp_W2[0] = 0 boat_goto_Y_temp_W2[0] = 2 boat_pos_temp_W2[1] = 20 boat_goto_X_temp_W2[1] = 3 boat_goto_Y_temp_W2[1] = 1 square_attack_status_W2 = 0 BREAK CASE 18 boat_pos_temp_W2[0] = 26 boat_goto_X_temp_W2[0] = 1 boat_goto_Y_temp_W2[0] = 2 boat_pos_temp_W2[1] = 20 boat_goto_X_temp_W2[1] = 3 boat_goto_Y_temp_W2[1] = 1 square_attack_status_W2 = 0 BREAK CASE 19 boat_pos_temp_W2[0] = 27 boat_goto_X_temp_W2[0] = 2 boat_goto_Y_temp_W2[0] = 2 boat_pos_temp_W2[1] = 20 boat_goto_X_temp_W2[1] = 3 boat_goto_Y_temp_W2[1] = 1 square_attack_status_W2 = 2 BREAK CASE 20 boat_pos_temp_W2[0] = 27 boat_goto_X_temp_W2[0] = 2 boat_goto_Y_temp_W2[0] = 2 boat_pos_temp_W2[1] = 28 boat_goto_X_temp_W2[1] = 3 boat_goto_Y_temp_W2[1] = 2 square_attack_status_W2 = 1 BREAK CASE 21 CASE 30 boat_pos_temp_W2[0] = 27 boat_goto_X_temp_W2[0] = 2 boat_goto_Y_temp_W2[0] = 2 IF p_last_square = 29 boat_pos_temp_W2[1] = 22 boat_goto_X_temp_W2[1] = 5 boat_goto_Y_temp_W2[1] = 1 ELSE boat_pos_temp_W2[1] = 29 boat_goto_X_temp_W2[1] = 4 boat_goto_Y_temp_W2[1] = 2 ENDIF square_attack_status_W2 = 1 BREAK CASE 22 CASE 29 boat_pos_temp_W2[0] = 27 boat_goto_X_temp_W2[0] = 2 boat_goto_Y_temp_W2[0] = 2 IF p_last_square = 30 boat_pos_temp_W2[1] = 21 boat_goto_X_temp_W2[1] = 4 boat_goto_Y_temp_W2[1] = 1 ELSE boat_pos_temp_W2[1] = 30 boat_goto_X_temp_W2[1] = 5 boat_goto_Y_temp_W2[1] = 2 ENDIF square_attack_status_W2 = 1 BREAK CASE 23 boat_pos_temp_W2[0] = 27 boat_goto_X_temp_W2[0] = 2 boat_goto_Y_temp_W2[0] = 2 boat_pos_temp_W2[1] = 22 boat_goto_X_temp_W2[1] = 5 boat_goto_Y_temp_W2[1] = 1 square_attack_status_W2 = 4 BREAK CASE 24 boat_pos_temp_W2[0] = 25 boat_goto_X_temp_W2[0] = 0 boat_goto_Y_temp_W2[0] = 2 boat_pos_temp_W2[1] = 28 boat_goto_X_temp_W2[1] = 3 boat_goto_Y_temp_W2[1] = 2 square_attack_status_W2 = 3 BREAK CASE 25 boat_pos_temp_W2[0] = 33 boat_goto_X_temp_W2[0] = 0 boat_goto_Y_temp_W2[0] = 3 boat_pos_temp_W2[1] = 28 boat_goto_X_temp_W2[1] = 3 boat_goto_Y_temp_W2[1] = 2 square_attack_status_W2 = 0 BREAK CASE 26 CASE 35 IF p_last_square = 34 boat_pos_temp_W2[0] = 27 boat_goto_X_temp_W2[0] = 2 boat_goto_Y_temp_W2[0] = 2 ELSE boat_pos_temp_W2[0] = 34 boat_goto_X_temp_W2[0] = 1 boat_goto_Y_temp_W2[0] = 3 ENDIF boat_pos_temp_W2[1] = 28 boat_goto_X_temp_W2[1] = 3 boat_goto_Y_temp_W2[1] = 2 square_attack_status_W2 = 0 BREAK CASE 27 CASE 34 IF p_last_square = 35 boat_pos_temp_W2[0] = 26 boat_goto_X_temp_W2[0] = 1 boat_goto_Y_temp_W2[0] = 2 ELSE boat_pos_temp_W2[0] = 35 boat_goto_X_temp_W2[0] = 2 boat_goto_Y_temp_W2[0] = 3 ENDIF boat_pos_temp_W2[1] = 28 boat_goto_X_temp_W2[1] = 3 boat_goto_Y_temp_W2[1] = 2 IF p_current_square = 27 square_attack_status_W2 = 2 ELSE square_attack_status_W2 = 0 ENDIF BREAK CASE 28 boat_pos_temp_W2[0] = 27 boat_goto_X_temp_W2[0] = 2 boat_goto_Y_temp_W2[0] = 2 boat_pos_temp_W2[1] = 29 boat_goto_X_temp_W2[1] = 4 boat_goto_Y_temp_W2[1] = 2 square_attack_status_W2 = 2 BREAK CASE 31 boat_pos_temp_W2[0] = 27 boat_goto_X_temp_W2[0] = 2 boat_goto_Y_temp_W2[0] = 2 boat_pos_temp_W2[1] = 30 boat_goto_X_temp_W2[1] = 5 boat_goto_Y_temp_W2[1] = 2 square_attack_status_W2 = 4 BREAK CASE 32 CASE 40 CASE 41 boat_pos_temp_W2[0] = 33 boat_goto_X_temp_W2[0] = 0 boat_goto_Y_temp_W2[0] = 3 boat_pos_temp_W2[1] = 28 boat_goto_X_temp_W2[1] = 3 boat_goto_Y_temp_W2[1] = 2 square_attack_status_W2 = 3 BREAK CASE 33 CASE 42 boat_pos_temp_W2[0] = 34 boat_goto_X_temp_W2[0] = 1 boat_goto_Y_temp_W2[0] = 3 boat_pos_temp_W2[1] = 28 boat_goto_X_temp_W2[1] = 3 boat_goto_Y_temp_W2[1] = 2 IF square_attack_status_W2 = 33 square_attack_status_W2 = 0 ELSE square_attack_status_W2 = 3 ENDIF BREAK CASE 36 CASE 43 CASE 44 boat_pos_temp_W2[0] = 35 boat_goto_X_temp_W2[0] = 2 boat_goto_Y_temp_W2[0] = 3 boat_pos_temp_W2[1] = 28 boat_goto_X_temp_W2[1] = 3 boat_goto_Y_temp_W2[1] = 2 IF square_attack_status_W2 = 36 square_attack_status_W2 = 5 ELSE square_attack_status_W2 = 3 ENDIF BREAK CASE 37 CASE 45 boat_pos_temp_W2[0] = 35 boat_goto_X_temp_W2[0] = 2 boat_goto_Y_temp_W2[0] = 3 boat_pos_temp_W2[1] = 29 boat_goto_X_temp_W2[1] = 4 boat_goto_Y_temp_W2[1] = 2 IF square_attack_status_W2 = 37 square_attack_status_W2 = 4 ELSE square_attack_status_W2 = -1 ENDIF BREAK CASE 38 CASE 39 CASE 46 CASE 47 boat_pos_temp_W2[0] = 35 boat_goto_X_temp_W2[0] = 2 boat_goto_Y_temp_W2[0] = 3 boat_pos_temp_W2[1] = 30 boat_goto_X_temp_W2[1] = 5 boat_goto_Y_temp_W2[1] = 2 IF square_attack_status_W2 < 40 square_attack_status_W2 = 4 ELSE square_attack_status_W2 = -1 ENDIF BREAK ENDSWITCH pointer_W2 = 0 WHILE pointer_W2 < 2 IF NOT boat_position_W2[pointer_W2] = boat_pos_temp_W2[pointer_W2] boat_goto_X_W2[pointer_W2] = boat_goto_X_temp_W2[pointer_W2] boat_goto_Y_W2[pointer_W2] = boat_goto_Y_temp_W2[pointer_W2] boat_status_W2[pointer_W2] = 1 boat_position_W2[pointer_W2] = boat_pos_temp_W2[pointer_W2] ENDIF pointer_W2 ++ ENDWHILE RETURN LVAR_INT x_pointer_W2 y_pointer_W2 mission_wuzi2_SUB_boat_status: pointer_W2 = 0 WHILE pointer_W2 < 2 IF NOT IS_CAR_DEAD boat_W2[pointer_W2] SWITCH boat_status_W2[pointer_W2] // goto coord CASE 1 x_pointer_W2 = boat_goto_X_W2[pointer_W2] y_pointer_W2 = boat_goto_Y_W2[pointer_W2] ANCHOR_BOAT boat_W2[pointer_W2] FALSE BOAT_GOTO_COORDS boat_W2[pointer_W2] boat_square_X_W2[x_pointer_W2] boat_square_Y_W2[y_pointer_W2] 0.0 SET_BOAT_CRUISE_SPEED boat_W2[pointer_W2] 7.0 GET_CAR_SPEED boat_W2[pointer_W2] boat_speed_W2[pointer_W2] boat_status_W2[pointer_W2] ++ BREAK // check if the boat is in the middle of the square CASE 2 x_pointer_W2 = boat_goto_X_W2[pointer_W2] y_pointer_W2 = boat_goto_Y_W2[pointer_W2] IF LOCATE_CAR_2D boat_W2[pointer_W2] boat_square_X_W2[x_pointer_W2] boat_square_Y_W2[y_pointer_W2] 8.0 8.0 FALSE GET_CAR_SPEED boat_W2[pointer_W2] boat_speed_W2[pointer_W2] boat_status_W2[pointer_W2] ++ ELSE // set boats speed IF boat_speed_W2[pointer_W2] < max_speed_W2 boat_speed_W2[pointer_W2] += acceleration_W2 SET_CAR_FORWARD_SPEED boat_W2[pointer_W2] boat_speed_W2[pointer_W2] ENDIF // set boat heading GET_CAR_COORDINATES boat_W2[pointer_W2] boat_X_W2[pointer_W2] boat_Y_W2[pointer_W2] z GET_CAR_HEADING boat_W2[pointer_W2] boat_heading_W2[pointer_W2] x = boat_square_X_W2[x_pointer_W2] - boat_X_W2[pointer_W2] y = boat_square_Y_W2[y_pointer_W2] - boat_Y_W2[pointer_W2] WHILE boat_heading_W2[pointer_W2] >= 180.0 boat_heading_W2[pointer_W2] += -360.0 ENDWHILE // get desired heading GET_HEADING_FROM_VECTOR_2D x y heading WHILE heading >= 180.0 heading += -360.0 ENDWHILE z = heading - boat_heading_W2[pointer_W2] IF z <= -180.0 z += 360.0 ENDIF IF z >= 180.0 z += -360.0 ENDIF // divide by factor z /= turn_factor_W2 boat_heading_W2[pointer_W2] += z SET_CAR_HEADING boat_W2[pointer_W2] boat_heading_W2[pointer_W2] ENDIF BREAK CASE 3 boat_speed_W2[pointer_W2] -= acceleration_W2 SET_CAR_FORWARD_SPEED boat_W2[pointer_W2] boat_speed_W2[pointer_W2] IF boat_speed_W2[pointer_W2] < 2.5 SET_CAR_FORWARD_SPEED boat_W2[pointer_W2] 1.0 BOAT_STOP boat_W2[pointer_W2] ANCHOR_BOAT boat_W2[pointer_W2] TRUE boat_status_W2[pointer_W2] = 0 ENDIF BREAK ENDSWITCH ENDIF pointer_W2 ++ ENDWHILE RETURN LVAR_INT boat_can_attack_W2[2] mission_wuzi2_SUB_guard_status: pointer_W2 = 0 GET_CHAR_COORDINATES scplayer player_x player_y player_z WHILE pointer_W2 < 2 IF NOT IS_CAR_DEAD boat_W2[pointer_W2] boat_can_attack_W2[pointer_W2] = 0 SWITCH pointer_W2 CASE 0 IF square_attack_status_W2 = 0 OR square_attack_status_W2 = 2 boat_can_attack_W2[pointer_W2] = 1 ELSE IF square_attack_status_W2 = 3 OR square_attack_status_W2 = 5 GET_CAR_COORDINATES boat_W2[pointer_W2] x y z GET_DISTANCE_BETWEEN_COORDS_2D player_x player_y x y distance IF distance < 29.0 boat_can_attack_W2[pointer_W2] = 1 ENDIF ENDIF ENDIF BREAK CASE 1 IF square_attack_status_W2 = 1 OR square_attack_status_W2 = 2 boat_can_attack_W2[pointer_W2] = 1 ELSE IF square_attack_status_W2 = 4 OR square_attack_status_W2 = 5 IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer boat_W2[pointer_W2] 30.0 30.0 FALSE boat_can_attack_W2[pointer_W2] = 1 ENDIF ENDIF ENDIF BREAK ENDSWITCH SWITCH guard_status_W2[pointer_W2] CASE 0 // guards just moving with boat IF player_breath_W2 = 0 IF boat_can_attack_W2[pointer_W2] = 0 OR player_underwater_W2 = 1 guard_pointer_W2 = pointer_W2 * 3 guard_limit_W2 = guard_pointer_W2 + 3 WHILE guard_pointer_W2 < guard_limit_W2 IF NOT IS_CHAR_DEAD boat_guards_W2[guard_pointer_W2] heading = boat_heading_W2[pointer_W2] - guard_heading_W2[guard_pointer_W2] SET_CHAR_HEADING boat_guards_W2[guard_pointer_W2] heading ENDIF guard_pointer_W2 ++ ENDWHILE ELSE IF player_crawling_W2 = 1 OR player_status_W2 >= 3 GOSUB mission_wuzi2_SUB_guard_attack guard_status_W2[pointer_W2] = 3 ELSE IF player_status_W2 <= 0 player_timer_W2 = 0 ENDIF guard_status_W2[pointer_W2] ++ ENDIF ENDIF ENDIF BREAK CASE 1 // boat has spotted player but no identified him IF boat_can_attack_W2[pointer_W2] = 0 OR player_underwater_W2 = 1 guard_timer_W2[pointer_W2] = 0 guard_status_W2[pointer_W2] ++ ELSE IF player_timer_W2 > 6000 OR player_crawling_W2 = 1 GOSUB mission_wuzi2_SUB_guard_attack guard_status_W2[pointer_W2] = 3 ENDIF ENDIF BREAK CASE 2 // boat has lost player after spotting him IF boat_can_attack_W2[pointer_W2] = 0 OR player_underwater_W2 = 1 IF guard_timer_W2[pointer_W2] > 3000 guard_status_W2[pointer_W2] = 0 ENDIF ELSE IF player_status_W2 < 3 AND player_crawling_W2 = 0 player_timer_W2 = 0 guard_status_W2[pointer_W2] -- ELSE GOSUB mission_wuzi2_SUB_guard_attack guard_status_W2[pointer_W2] = 3 ENDIF ENDIF BREAK CASE 3 // guard has identified player either by timer or player crawling to close to boat IF boat_can_attack_W2[pointer_W2] = 0 OR player_underwater_W2 = 1 guard_pointer_W2 = pointer_W2 * 3 guard_limit_W2 = guard_pointer_W2 + 3 WHILE guard_pointer_W2 < guard_limit_W2 IF NOT IS_CHAR_DEAD boat_guards_W2[guard_pointer_W2] CLEAR_CHAR_TASKS boat_guards_W2[guard_pointer_W2] ENDIF guard_pointer_W2 ++ ENDWHILE guard_timer_W2[pointer_W2] = 0 guard_status_W2[pointer_W2] ++ ENDIF BREAK CASE 4 // guard has lost player after he was identified IF boat_can_attack_W2[pointer_W2] = 0 OR player_underwater_W2 = 1 IF guard_timer_W2[pointer_W2] > 5000 guard_status_W2[pointer_W2] = 0 ENDIF ELSE GOSUB mission_wuzi2_SUB_guard_attack guard_status_W2[pointer_W2] = 3 ENDIF BREAK ENDSWITCH ELSE IF DOES_BLIP_EXIST boat_blip_W2[pointer_W2] REMOVE_BLIP boat_blip_W2[pointer_W2] ENDIF IF NOT guard_status_W2[pointer_W2] = 0 guard_status_W2[pointer_W2] = 0 ENDIF ENDIF pointer_W2 ++ ENDWHILE RETURN mission_wuzi2_SUB_guard_attack: guard_pointer_W2 = pointer_W2 * 3 guard_limit_W2 = guard_pointer_W2 + 3 WHILE guard_pointer_W2 < guard_limit_W2 IF NOT IS_CHAR_DEAD boat_guards_W2[guard_pointer_W2] CLEAR_CHAR_TASKS boat_guards_W2[guard_pointer_W2] TASK_KILL_CHAR_ON_FOOT boat_guards_W2[guard_pointer_W2] scplayer ENDIF guard_pointer_W2 ++ ENDWHILE RETURN VAR_INT player_status_W2 player_breath_W2 player_first_spot_W2 LVAR_FLOAT player_breath_X_W2 player_breath_Y_W2 mission_wuzi2_SUB_player_status: SWITCH player_status_W2 CASE -2 IF player_underwater_W2 = 0 GET_CHAR_COORDINATES scplayer player_breath_X_W2 player_breath_Y_W2 z player_status_W2 = -1 ENDIF BREAK CASE -1 IF NOT LOCATE_CHAR_ON_FOOT_2D scplayer player_breath_X_W2 player_breath_Y_W2 2.5 2.5 FALSE player_breath_W2 = 0 player_status_W2 = 0 ENDIF BREAK // player has not been spotted or boats have gone back to a normal patrol after spotting player CASE 0 IF guard_status_W2[0] > 0 OR guard_status_W2[1] > 0 // player spotted IF guard_status_W2[0] < 3 AND guard_status_W2[1] < 3 speech_context_W2 = 0 GOSUB mission_wuzi2_SUB_play_dialogue player_status_W2 = 1 IF player_first_spot_W2 = 0 player_first_spot_W2 = 1 ENDIF ELSE speech_context_W2 = 18 GOSUB mission_wuzi2_SUB_play_dialogue player_status_W2 = 3 IF player_first_spot_W2 = 0 player_first_spot_W2 = 1 ENDIF ENDIF ENDIF BREAK // boats have spotted player but not identified him CASE 1 IF guard_status_W2[0] >= 3 OR guard_status_W2[1] >= 3 speech_context_W2 = 18 GOSUB mission_wuzi2_SUB_play_dialogue player_status_W2 = 3 ELSE IF NOT guard_status_W2[0] = 1 AND NOT guard_status_W2[1] = 1 IF guard_status_W2[0] = 2 OR guard_status_W2[1] = 2 player_status_W2 = 2 ELSE IF guard_status_W2[0] = 0 OR guard_status_W2[1] = 0 speech_context_W2 = 9 GOSUB mission_wuzi2_SUB_play_dialogue player_breath_W2 = 1 player_status_W2 = -2 ENDIF ENDIF ENDIF ENDIF BREAK // player has lost the attencion of the boats CASE 2 IF guard_status_W2[0] >= 3 OR guard_status_W2[1] >= 3 speech_context_W2 = 18 GOSUB mission_wuzi2_SUB_play_dialogue player_status_W2 = 3 ELSE IF NOT guard_status_W2[0] = 2 AND NOT guard_status_W2[1] = 2 IF guard_status_W2[0] = 1 OR guard_status_W2[1] = 1 speech_context_W2 = 0 GOSUB mission_wuzi2_SUB_next_speaker GOSUB mission_wuzi2_SUB_play_dialogue player_status_W2 = 1 ELSE IF guard_status_W2[0] = 0 OR guard_status_W2[1] = 0 speech_context_W2 = 9 GOSUB mission_wuzi2_SUB_play_dialogue GOSUB mission_wuzi2_SUB_next_speaker player_breath_W2 = 1 player_status_W2 = -2 ENDIF ENDIF ENDIF ENDIF BREAK // boats are attacking the player CASE 3 IF NOT guard_status_W2[0] = 3 AND NOT guard_status_W2[1] = 3 IF guard_status_W2[0] = 4 OR guard_status_W2[1] = 4 speech_context_W2 = 27 IF guard_status_W2[0] = 4 boat_lost_W2 = 0 ELSE boat_lost_W2 = 1 ENDIF GOSUB mission_wuzi2_SUB_play_dialogue player_status_W2 = 4 GOSUB mission_wuzi2_SUB_next_speaker ENDIF ENDIF BREAK // player has lost the attencion of the boats CASE 4 IF NOT guard_status_W2[0] = 4 AND NOT guard_status_W2[1] = 4 IF guard_status_W2[0] = 3 OR guard_status_W2[1] = 3 IF guard_status_W2[0] = 3 IF boat_lost_W2 = 0 speech_context_W2 = 45 ELSE speech_context_W2 = 45 ENDIF ELSE IF boat_lost_W2 = 1 speech_context_W2 = 45 ELSE speech_context_W2 = 45 ENDIF ENDIF GOSUB mission_wuzi2_SUB_next_speaker GOSUB mission_wuzi2_SUB_play_dialogue player_status_W2 = 3 ELSE IF guard_status_W2[0] = 0 AND guard_status_W2[1] = 0 speech_context_W2 = 36 GOSUB mission_wuzi2_SUB_play_dialogue player_breath_W2 = 1 player_status_W2 = -2 ENDIF ENDIF ENDIF BREAK ENDSWITCH SWITCH player_first_spot_W2 CASE 0 IF explain_searchlights_W2 = 1 PRINT_HELP_FOREVER WZI2_42 TIMERB = 0 explain_searchlights_W2 ++ ENDIF BREAK CASE 1 PRINT_HELP_FOREVER WZI2_36 TIMERB = 0 player_first_spot_W2 ++ BREAK CASE 2 IF TIMERB > 6000 CLEAR_HELP IF explain_searchlights_W2 = 1 PRINT_HELP_FOREVER WZI2_42 TIMERB = 0 explain_searchlights_W2 ++ ELSE PRINT_HELP_FOREVER WZI2_37 TIMERB = 0 player_first_spot_W2 ++ ENDIF ENDIF BREAK CASE 3 IF TIMERB > 6000 CLEAR_HELP IF explain_searchlights_W2 = 1 PRINT_HELP_FOREVER WZI2_42 TIMERB = 0 explain_searchlights_W2 ++ ELSE PRINT_HELP_FOREVER WZI2_38 TIMERB = 0 player_first_spot_W2 ++ ENDIF ENDIF BREAK CASE 4 IF TIMERB > 6000 CLEAR_HELP IF explain_searchlights_W2 = 1 PRINT_HELP_FOREVER WZI2_42 TIMERB = 0 explain_searchlights_W2 ++ ELSE PRINT_HELP_FOREVER WZI2_39 TIMERB = 0 player_first_spot_W2 ++ ENDIF ENDIF BREAK CASE 5 IF TIMERB > 6000 CLEAR_HELP IF explain_searchlights_W2 = 1 PRINT_HELP_FOREVER WZI2_42 TIMERB = 0 explain_searchlights_W2 ++ player_first_spot_W2 ++ ELSE IF explain_searchlights_W2 = 2 player_first_spot_W2 ++ ENDIF ENDIF ENDIF BREAK ENDSWITCH RETURN // ########################################################################################################## // ########################################################################################################## // ########################################################################################################## // ########################################################################################################## //boat_W2 //boat_guards_W2 LVAR_INT gun_pointer_W2 stop_and_attack_W2 mission_wuzi2_SUB_gun_check: gun_pointer_W2 = 0 WHILE gun_pointer_W2 < 6 IF NOT IS_CHAR_DEAD boat_guards_W2[gun_pointer_W2] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR boat_guards_W2[gun_pointer_W2] scplayer stop_and_attack_W2 = 1 gun_pointer_W2 = 6 ELSE gun_pointer_W2 ++ ENDIF ELSE stop_and_attack_W2 = 1 gun_pointer_W2 = 6 ENDIF ENDWHILE IF stop_and_attack_W2 = 0 gun_pointer_W2 = 0 WHILE gun_pointer_W2 < 6 IF NOT IS_CHAR_DEAD s_boat_guard_W2[gun_pointer_W2] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR s_boat_guard_W2[gun_pointer_W2] scplayer stop_and_attack_W2 = 1 gun_pointer_W2 = 6 ELSE gun_pointer_W2 ++ ENDIF ELSE stop_and_attack_W2 = 1 gun_pointer_W2 = 6 ENDIF ENDWHILE ENDIF IF stop_and_attack_W2 = 1 GOSUB mission_wuzi2_SUB_stop_and_attack_setup stop_and_attack_W2 = 2 ENDIF RETURN LVAR_INT s_and_a_status_W2[4] mission_wuzi2_SUB_stop_and_attack_setup: CLEAR_HELP CLEAR_PRINTS IF NOT IS_CAR_DEAD boat_W2[0] //FREEZE_CAR_POSITION boat_W2[0] TRUE IF NOT DOES_BLIP_EXIST boat_blip_W2[0] ADD_BLIP_FOR_CAR boat_W2[0] boat_blip_W2[0] CHANGE_BLIP_DISPLAY boat_blip_W2[0] BLIP_ONLY ENDIF ENDIF IF NOT IS_CAR_DEAD boat_W2[1] //FREEZE_CAR_POSITION boat_W2[1] TRUE IF NOT DOES_BLIP_EXIST boat_blip_W2[1] ADD_BLIP_FOR_CAR boat_W2[1] boat_blip_W2[1] CHANGE_BLIP_DISPLAY boat_blip_W2[1] BLIP_ONLY ENDIF ENDIF IF NOT IS_CAR_DEAD s_boat_W2[0] //FREEZE_CAR_POSITION s_boat_W2[0] TRUE IF NOT DOES_BLIP_EXIST s_boat_blip_W2[0] ADD_BLIP_FOR_CAR s_boat_W2[0] s_boat_blip_W2[0] CHANGE_BLIP_DISPLAY s_boat_blip_W2[0] BLIP_ONLY ENDIF ENDIF IF NOT IS_CAR_DEAD s_boat_W2[1] //FREEZE_CAR_POSITION s_boat_W2[1] TRUE IF NOT DOES_BLIP_EXIST s_boat_blip_W2[1] ADD_BLIP_FOR_CAR s_boat_W2[1] s_boat_blip_W2[1] CHANGE_BLIP_DISPLAY s_boat_blip_W2[1] BLIP_ONLY ENDIF ENDIF gun_pointer_W2 = 0 WHILE gun_pointer_W2 < 6 IF NOT IS_CHAR_DEAD boat_guards_W2[gun_pointer_W2] SET_CHAR_ACCURACY boat_guards_W2[gun_pointer_W2] 80 SET_CHAR_SHOOT_RATE boat_guards_W2[gun_pointer_W2] 50 ENDIF IF NOT IS_CHAR_DEAD s_boat_guard_W2[gun_pointer_W2] SET_CHAR_ACCURACY s_boat_guard_W2[gun_pointer_W2] 80 SET_CHAR_SHOOT_RATE s_boat_guard_W2[gun_pointer_W2] 50 ENDIF gun_pointer_W2 ++ ENDWHILE s_and_a_status_W2[0] = 0 s_and_a_status_W2[1] = 0 s_and_a_status_W2[2] = 0 s_and_a_status_W2[3] = 0 RETURN mission_wuzi2_SUB_stop_and_attack: GET_CHAR_COORDINATES scplayer player_x player_y player_z IF NOT IS_CAR_DEAD boat_W2[0] IF s_and_a_status_W2[0] = 0 IF LOCATE_CAR_2D boat_W2[0] player_x player_y 75.0 75.0 FALSE IF NOT IS_CHAR_DEAD boat_guards_W2[0] CLEAR_CHAR_TASKS boat_guards_W2[0] TASK_KILL_CHAR_ON_FOOT boat_guards_W2[0] scplayer ENDIF IF NOT IS_CHAR_DEAD boat_guards_W2[1] CLEAR_CHAR_TASKS boat_guards_W2[1] TASK_KILL_CHAR_ON_FOOT boat_guards_W2[1] scplayer ENDIF IF NOT IS_CHAR_DEAD boat_guards_W2[2] CLEAR_CHAR_TASKS boat_guards_W2[2] TASK_KILL_CHAR_ON_FOOT boat_guards_W2[2] scplayer ENDIF s_and_a_status_W2[0] = 1 //write_debug boat_0_shooting ENDIF ELSE IF NOT LOCATE_CAR_2D boat_W2[0] player_x player_y 85.0 85.0 FALSE IF NOT IS_CHAR_DEAD boat_guards_W2[0] CLEAR_CHAR_TASKS boat_guards_W2[0] ENDIF IF NOT IS_CHAR_DEAD boat_guards_W2[1] CLEAR_CHAR_TASKS boat_guards_W2[1] ENDIF IF NOT IS_CHAR_DEAD boat_guards_W2[2] CLEAR_CHAR_TASKS boat_guards_W2[2] ENDIF s_and_a_status_W2[0] = 0 //write_debug boat_0_stopped_shooting ENDIF ENDIF ELSE IF DOES_BLIP_EXIST boat_blip_W2[0] REMOVE_BLIP boat_blip_W2[0] ENDIF ENDIF IF NOT IS_CAR_DEAD boat_W2[1] IF s_and_a_status_W2[1] = 0 IF LOCATE_CAR_2D boat_W2[1] player_x player_y 75.0 75.0 FALSE IF NOT IS_CHAR_DEAD boat_guards_W2[3] CLEAR_CHAR_TASKS boat_guards_W2[3] TASK_KILL_CHAR_ON_FOOT boat_guards_W2[3] scplayer ENDIF IF NOT IS_CHAR_DEAD boat_guards_W2[4] CLEAR_CHAR_TASKS boat_guards_W2[4] TASK_KILL_CHAR_ON_FOOT boat_guards_W2[4] scplayer ENDIF IF NOT IS_CHAR_DEAD boat_guards_W2[5] CLEAR_CHAR_TASKS boat_guards_W2[5] TASK_KILL_CHAR_ON_FOOT boat_guards_W2[5] scplayer ENDIF s_and_a_status_W2[1] = 1 //write_debug boat_1_stopped_shooting ENDIF ELSE IF NOT LOCATE_CAR_2D boat_W2[1] player_x player_y 85.0 85.0 FALSE IF NOT IS_CHAR_DEAD boat_guards_W2[3] CLEAR_CHAR_TASKS boat_guards_W2[3] ENDIF IF NOT IS_CHAR_DEAD boat_guards_W2[4] CLEAR_CHAR_TASKS boat_guards_W2[4] ENDIF IF NOT IS_CHAR_DEAD boat_guards_W2[5] CLEAR_CHAR_TASKS boat_guards_W2[5] ENDIF s_and_a_status_W2[1] = 0 //write_debug boat_1_stopped_shooting ENDIF ENDIF ELSE IF DOES_BLIP_EXIST boat_blip_W2[1] REMOVE_BLIP boat_blip_W2[1] ENDIF ENDIF // spotlight boats IF NOT IS_CAR_DEAD s_boat_W2[0] IF s_and_a_status_W2[2] = 0 IF LOCATE_CAR_2D s_boat_W2[0] player_x player_y 75.0 75.0 FALSE IF NOT IS_CHAR_DEAD s_boat_guard_W2[0] CLEAR_CHAR_TASKS s_boat_guard_W2[0] TASK_KILL_CHAR_ON_FOOT s_boat_guard_W2[0] scplayer ENDIF IF NOT IS_CHAR_DEAD s_boat_guard_W2[1] CLEAR_CHAR_TASKS s_boat_guard_W2[1] TASK_KILL_CHAR_ON_FOOT s_boat_guard_W2[1] scplayer ENDIF IF NOT IS_CHAR_DEAD s_boat_guard_W2[2] CLEAR_CHAR_TASKS s_boat_guard_W2[2] TASK_KILL_CHAR_ON_FOOT s_boat_guard_W2[2] scplayer ENDIF s_and_a_status_W2[2] = 1 ENDIF ELSE IF NOT LOCATE_CAR_2D s_boat_W2[0] player_x player_y 85.0 85.0 FALSE IF NOT IS_CHAR_DEAD s_boat_guard_W2[0] CLEAR_CHAR_TASKS s_boat_guard_W2[0] ENDIF IF NOT IS_CHAR_DEAD s_boat_guard_W2[1] CLEAR_CHAR_TASKS s_boat_guard_W2[1] ENDIF IF NOT IS_CHAR_DEAD s_boat_guard_W2[2] CLEAR_CHAR_TASKS s_boat_guard_W2[2] ENDIF s_and_a_status_W2[2] = 0 ENDIF ENDIF ELSE IF DOES_BLIP_EXIST s_boat_blip_W2[0] REMOVE_BLIP s_boat_blip_W2[0] ENDIF ENDIF IF NOT IS_CAR_DEAD s_boat_W2[1] IF s_and_a_status_W2[3] = 0 IF LOCATE_CAR_2D s_boat_W2[1] player_x player_y 75.0 75.0 FALSE IF NOT IS_CHAR_DEAD s_boat_guard_W2[3] CLEAR_CHAR_TASKS s_boat_guard_W2[3] TASK_KILL_CHAR_ON_FOOT s_boat_guard_W2[3] scplayer ENDIF IF NOT IS_CHAR_DEAD s_boat_guard_W2[4] CLEAR_CHAR_TASKS s_boat_guard_W2[4] TASK_KILL_CHAR_ON_FOOT s_boat_guard_W2[4] scplayer ENDIF IF NOT IS_CHAR_DEAD s_boat_guard_W2[5] CLEAR_CHAR_TASKS s_boat_guard_W2[5] TASK_KILL_CHAR_ON_FOOT s_boat_guard_W2[5] scplayer ENDIF s_and_a_status_W2[3] = 1 ENDIF ELSE IF NOT LOCATE_CAR_2D s_boat_W2[1] player_x player_y 85.0 85.0 FALSE IF NOT IS_CHAR_DEAD s_boat_guard_W2[3] CLEAR_CHAR_TASKS s_boat_guard_W2[3] ENDIF IF NOT IS_CHAR_DEAD s_boat_guard_W2[4] CLEAR_CHAR_TASKS s_boat_guard_W2[4] ENDIF IF NOT IS_CHAR_DEAD s_boat_guard_W2[5] CLEAR_CHAR_TASKS s_boat_guard_W2[5] ENDIF s_and_a_status_W2[3] = 0 ENDIF ENDIF ELSE IF DOES_BLIP_EXIST s_boat_blip_W2[1] REMOVE_BLIP s_boat_blip_W2[1] ENDIF ENDIF RETURN // ########################################################################################################## // ########################################################################################################## // ########################################################################################################## // ########################################################################################################## LVAR_INT speaker_W2 mission_wuzi2_SUB_play_dialogue: audio_pointer_W2 = speech_sample_W2 * 3 audio_pointer_W2 += speech_ped_W2 audio_pointer_W2 += speech_context_W2 IF boat_can_attack_W2[0] = 1 speaker_W2 = speech_ped_W2 ELSE speaker_W2 = speech_ped_W2+3 ENDIF load_sample = audio_sound_label_W2[audio_pointer_W2] $load_text = $audio_text_label_W2[audio_pointer_W2] // audio now played through front end START_NEW_SCRIPT audio_load_and_play 2 speech_priority_W2 boat_guards_W2[speaker_W2] //START_NEW_SCRIPT audio_load_and_play 1 speech_priority_W2 boat_guards_W2[speaker_W2] speech_priority_W2 ++ RETURN mission_wuzi2_SUB_next_speaker: speech_ped_W2 ++ IF speech_ped_W2 = 3 speech_ped_W2 = 0 speech_sample_W2 ++ IF speech_sample_W2 = 3 speech_sample_W2 = 0 ENDIF ENDIF RETURN LVAR_INT knife_status_W2 weapon_type_W2 void_W2 mission_wuzi2_SUB_knife_status: GET_CHAR_WEAPON_IN_SLOT scplayer 2 weapon_type_W2 void_W2 void_W2 IF weapon_type_W2 = WEAPONTYPE_UNARMED knife_status_W2 = 0 ELSE IF weapon_type_W2 = WEAPONTYPE_KNIFE knife_status_W2 = 1 ELSE knife_status_W2 = 2 ENDIF ENDIF RETURN mission_wuzi2_SUB_reduce_guard_accuracy: guard_pointer_W2 = 0 WHILE guard_pointer_W2 < 6 IF NOT IS_CHAR_DEAD boat_guards_W2[guard_pointer_W2] SET_CHAR_ACCURACY boat_guards_W2[guard_pointer_W2] 30 SET_CHAR_SHOOT_RATE boat_guards_W2[guard_pointer_W2] 30 ENDIF guard_pointer_W2 ++ ENDWHILE RETURN LVAR_INT grid_status_W2 mission_wuzi2_DEBUG_draw_grid: IF grid_status_W2 = 1 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_G AND TIMERB > 200 TIMERB = 0 grid_status_W2 = 0 ENDIF LINE swim_grid_X_W2[0] swim_grid_Y_W2[0] 2.0 swim_grid_X_W2[6] swim_grid_Y_W2[0] 2.0 LINE swim_grid_X_W2[0] swim_grid_Y_W2[1] 2.0 swim_grid_X_W2[6] swim_grid_Y_W2[1] 2.0 LINE swim_grid_X_W2[0] swim_grid_Y_W2[2] 2.0 swim_grid_X_W2[6] swim_grid_Y_W2[2] 2.0 LINE swim_grid_X_W2[0] swim_grid_Y_W2[3] 2.0 swim_grid_X_W2[6] swim_grid_Y_W2[3] 2.0 LINE swim_grid_X_W2[0] swim_grid_Y_W2[4] 2.0 swim_grid_X_W2[6] swim_grid_Y_W2[4] 2.0 LINE swim_grid_X_W2[0] swim_grid_Y_W2[0] 2.0 swim_grid_X_W2[0] swim_grid_Y_W2[4] 2.0 LINE swim_grid_X_W2[1] swim_grid_Y_W2[0] 2.0 swim_grid_X_W2[1] swim_grid_Y_W2[4] 2.0 LINE swim_grid_X_W2[2] swim_grid_Y_W2[0] 2.0 swim_grid_X_W2[2] swim_grid_Y_W2[4] 2.0 LINE swim_grid_X_W2[3] swim_grid_Y_W2[0] 2.0 swim_grid_X_W2[3] swim_grid_Y_W2[4] 2.0 LINE swim_grid_X_W2[4] swim_grid_Y_W2[0] 2.0 swim_grid_X_W2[4] swim_grid_Y_W2[4] 2.0 LINE swim_grid_X_W2[5] swim_grid_Y_W2[0] 2.0 swim_grid_X_W2[5] swim_grid_Y_W2[4] 2.0 LINE swim_grid_X_W2[6] swim_grid_Y_W2[0] 2.0 swim_grid_X_W2[6] swim_grid_Y_W2[4] 2.0 ELSE IF grid_status_W2 = 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_G AND TIMERB > 200 TIMERB = 0 grid_status_W2 = 1 ENDIF ENDIF ENDIF RETURN // ########## // ## // ## SEARCHLIGHTS // ## // ########################################################################################################## LVAR_INT searchlight_W2[6] searchlight_base_W2[6] searchlight_housing_W2[6] searchlight_bulb_W2[6] searchlight_blip_W2[6] LVAR_INT s_boat_W2[2] s_boat_blip_W2[2] s_boat_guard_W2[6] mission_wuzi2_SUB_create_searchlights: CREATE_SEARCHLIGHT -1474.1450 1484.0377 11.3824 -1465.1536 1463.0044 -0.5 25.0 1.0 searchlight_W2[0] CREATE_OBJECT_NO_OFFSET A51_SPOTBASE -1474.1450 1484.0377 10.8824 searchlight_base_W2[0] SET_OBJECT_HEADING searchlight_base_W2[0] 326.1907 CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING -1474.1450 1484.0377 10.8824 searchlight_housing_W2[0] CREATE_OBJECT_NO_OFFSET A51_SPOTBULB -1474.1450 1484.0377 10.8824 searchlight_bulb_W2[0] ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT searchlight_W2[0] searchlight_base_W2[0] searchlight_housing_W2[0] searchlight_bulb_W2[0] 0.0 1.181 0.768 SET_OBJECT_HEALTH searchlight_bulb_W2[0] 1000 MOVE_SEARCHLIGHT_BETWEEN_COORDS searchlight_W2[0] -1465.1536 1463.0044 -0.5 -1489.6720 1472.1106 -0.5 0.1 SET_SEARCHLIGHT_CLIP_IF_COLLIDING searchlight_W2[0] FALSE bulb_status_W2[0] = 0 CREATE_SEARCHLIGHT -1474.1984 1494.9270 11.6265 -1459.3628 1514.4128 -0.5 25.0 1.0 searchlight_W2[1] CREATE_OBJECT_NO_OFFSET A51_SPOTBASE -1474.1984 1494.9270 10.8824 searchlight_base_W2[1] SET_OBJECT_HEADING searchlight_base_W2[1] 34.4591 CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING -1474.1984 1494.9270 10.8824 searchlight_housing_W2[1] CREATE_OBJECT_NO_OFFSET A51_SPOTBULB -1474.1984 1494.9270 10.8824 searchlight_bulb_W2[1] ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT searchlight_W2[1] searchlight_base_W2[1] searchlight_housing_W2[1] searchlight_bulb_W2[1] 0.0 1.181 0.768 SET_OBJECT_HEALTH searchlight_bulb_W2[1] 1000 MOVE_SEARCHLIGHT_BETWEEN_COORDS searchlight_W2[1] -1459.3628 1514.4128 -0.5 -1491.3789 1501.3086 -0.5 0.08 SET_SEARCHLIGHT_CLIP_IF_COLLIDING searchlight_W2[1] FALSE bulb_status_W2[1] = 0 CREATE_SEARCHLIGHT -1369.2788 1484.2191 14.3425 -1351.9365 1504.4353 -0.5 25.0 1.0 searchlight_W2[2] CREATE_OBJECT_NO_OFFSET A51_SPOTBASE -1369.2788 1484.2191 13.8425 searchlight_base_W2[2] SET_OBJECT_HEADING searchlight_base_W2[2] 32.5701 CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING -1369.2788 1484.2191 13.8425 searchlight_housing_W2[2] CREATE_OBJECT_NO_OFFSET A51_SPOTBULB -1369.2788 1484.2191 13.8425 searchlight_bulb_W2[2] ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT searchlight_W2[2] searchlight_base_W2[2] searchlight_housing_W2[2] searchlight_bulb_W2[2] 0.0 1.181 0.768 SET_OBJECT_HEALTH searchlight_bulb_W2[2] 1000 MOVE_SEARCHLIGHT_BETWEEN_COORDS searchlight_W2[2] -1347.1427 1476.6301 -0.5 -1370.4989 1465.4791 -0.5 0.08 SET_SEARCHLIGHT_CLIP_IF_COLLIDING searchlight_W2[2] FALSE bulb_status_W2[2] = 0 CREATE_SEARCHLIGHT -1368.4672 1494.2252 14.3425 -1347.1427 1476.6301 -0.5 25.0 1.0 searchlight_W2[3] CREATE_OBJECT_NO_OFFSET A51_SPOTBASE -1368.4672 1494.2252 13.8425 searchlight_base_W2[3] SET_OBJECT_HEADING searchlight_base_W2[3] 327.3304 CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING -1368.4672 1494.2252 13.8425 searchlight_housing_W2[3] CREATE_OBJECT_NO_OFFSET A51_SPOTBULB -1368.4672 1494.2252 13.8425 searchlight_bulb_W2[3] ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT searchlight_W2[3] searchlight_base_W2[3] searchlight_housing_W2[3] searchlight_bulb_W2[3] 0.0 1.181 0.768 SET_OBJECT_HEALTH searchlight_bulb_W2[3] 1000 MOVE_SEARCHLIGHT_BETWEEN_COORDS searchlight_W2[3] -1351.9365 1504.4353 -0.5 -1377.0283 1515.7286 -0.5 0.1 SET_SEARCHLIGHT_CLIP_IF_COLLIDING searchlight_W2[3] FALSE bulb_status_W2[3] = 0 // boats for shooting player in searchlight // boat 0 CREATE_CAR TROPIC -1491.6624 1488.5 1.0 s_boat_W2[0] SET_CAR_HEADING s_boat_W2[0] 180.0 ANCHOR_BOAT s_boat_W2[0] TRUE CREATE_CHAR PEDTYPE_MISSION1 DNB3 -1521.0 1492.0 5.0 s_boat_guard_W2[0] ATTACH_CHAR_TO_CAR s_boat_guard_W2[0] s_boat_W2[0] 0.0 9.0 2.1 FACING_FORWARD 360.0 WEAPONTYPE_AK47 TASK_STAY_IN_SAME_PLACE s_boat_guard_W2[0] TRUE SET_CHAR_ACCURACY s_boat_guard_W2[0] 80 SET_CHAR_SHOOT_RATE s_boat_guard_W2[0] 20 CREATE_CHAR PEDTYPE_MISSION1 DNB2 -1521.0 1492.0 5.0 s_boat_guard_W2[1] ATTACH_CHAR_TO_CAR s_boat_guard_W2[1] s_boat_W2[0] -1.0 -1.0 3.70 FACING_FORWARD 360.0 WEAPONTYPE_AK47 TASK_STAY_IN_SAME_PLACE s_boat_guard_W2[1] TRUE SET_CHAR_ACCURACY s_boat_guard_W2[1] 80 SET_CHAR_SHOOT_RATE s_boat_guard_W2[1] 20 CREATE_CHAR PEDTYPE_MISSION1 DNB1 -1521.0 1492.0 5.0 s_boat_guard_W2[2] ATTACH_CHAR_TO_CAR s_boat_guard_W2[2] s_boat_W2[0] 1.0 -4.0 1.15 FACING_FORWARD 360.0 WEAPONTYPE_AK47 TASK_STAY_IN_SAME_PLACE s_boat_guard_W2[2] TRUE SET_CHAR_ACCURACY s_boat_guard_W2[2] 80 SET_CHAR_SHOOT_RATE s_boat_guard_W2[2] 20 // boat 1 CREATE_CAR TROPIC -1350.1204 1488.5 1.0 s_boat_W2[1] SET_CAR_HEADING s_boat_W2[1] 0.0 ANCHOR_BOAT s_boat_W2[1] TRUE CREATE_CHAR PEDTYPE_MISSION1 DNB3 -1322.0 1489.5 5.0 s_boat_guard_W2[3] ATTACH_CHAR_TO_CAR s_boat_guard_W2[3] s_boat_W2[1] 0.0 9.0 2.1 FACING_FORWARD 360.0 WEAPONTYPE_AK47 TASK_STAY_IN_SAME_PLACE s_boat_guard_W2[3] TRUE SET_CHAR_ACCURACY s_boat_guard_W2[3] 80 SET_CHAR_SHOOT_RATE s_boat_guard_W2[3] 20 CREATE_CHAR PEDTYPE_MISSION1 DNB2 -1322.0 1489.5 5.0 s_boat_guard_W2[4] ATTACH_CHAR_TO_CAR s_boat_guard_W2[4] s_boat_W2[1] -1.0 -1.0 3.70 FACING_FORWARD 360.0 WEAPONTYPE_AK47 TASK_STAY_IN_SAME_PLACE s_boat_guard_W2[4] TRUE SET_CHAR_ACCURACY s_boat_guard_W2[4] 80 SET_CHAR_SHOOT_RATE s_boat_guard_W2[4] 20 CREATE_CHAR PEDTYPE_MISSION1 DNB1 -1322.0 1489.5 5.0 s_boat_guard_W2[5] ATTACH_CHAR_TO_CAR s_boat_guard_W2[5] s_boat_W2[1] 1.0 -4.0 1.15 FACING_FORWARD 360.0 WEAPONTYPE_AK47 TASK_STAY_IN_SAME_PLACE s_boat_guard_W2[5] TRUE SET_CHAR_ACCURACY s_boat_guard_W2[5] 80 SET_CHAR_SHOOT_RATE s_boat_guard_W2[5] 20 spotlight_status_W2 = 0 RETURN LVAR_INT spotlight_status_W2 in_searchlight_W2 active_boat_W2 mission_wuzi2_SUB_check_spotlights: SWITCH spotlight_status_W2 CASE 0 // player not in any searchlight or gone out of range? IF player_underwater_W2 = 0 IF NOT IS_CHAR_IN_ANY_SEARCHLIGHT scplayer in_searchlight_W2 IF NOT IS_CHAR_IN_WATER scplayer IF NOT IS_CAR_DEAD s_boat_W2[0] IF IS_CHAR_TOUCHING_VEHICLE scplayer s_boat_W2[0] speech_context_W2 = 18 GOSUB mission_wuzi2_SUB_play_dialogue active_boat_W2 = 0 GOSUB mission_wuzi2_SUB_searchlight_guard_tasks spotlight_status_W2 = 1 // climbed on boat 0 BREAK ENDIF ENDIF IF NOT IS_CAR_DEAD s_boat_W2[1] IF IS_CHAR_TOUCHING_VEHICLE scplayer s_boat_W2[1] speech_context_W2 = 18 GOSUB mission_wuzi2_SUB_play_dialogue active_boat_W2 = 1 GOSUB mission_wuzi2_SUB_searchlight_guard_tasks spotlight_status_W2 = 1 // climbed on boat 1 ENDIF ENDIF ELSE BREAK ENDIF ELSE speech_context_W2 = 18 GOSUB mission_wuzi2_SUB_play_dialogue GET_CHAR_COORDINATES scplayer player_x player_y player_z IF player_x < -1430.0 active_boat_W2 = 0 ELSE active_boat_W2 = 1 ENDIF GOSUB mission_wuzi2_SUB_searchlight_guard_tasks spotlight_status_W2 = 1 ENDIF ENDIF BREAK CASE 1 IF NOT IS_CAR_DEAD s_boat_W2[active_boat_W2] IF player_underwater_W2 = 0 GET_CAR_COORDINATES s_boat_W2[active_boat_W2] x y z GET_CHAR_COORDINATES scplayer player_x player_y player_z GET_DISTANCE_BETWEEN_COORDS_2D x y player_x player_y distance IF distance < 55.0 BREAK ENDIF speech_context_W2 = 36 ELSE speech_context_W2 = 27 ENDIF GOSUB mission_wuzi2_SUB_play_dialogue active_boat_W2 += 2 GOSUB mission_wuzi2_SUB_searchlight_guard_tasks GOSUB mission_wuzi2_SUB_next_speaker spotlight_status_W2 = 0 ELSE active_boat_W2 += 2 GOSUB mission_wuzi2_SUB_searchlight_guard_tasks spotlight_status_W2 = 0 ENDIF BREAK ENDSWITCH RETURN LVAR_INT search_pointer_W2 alive_total_W2 mission_wuzi2_SUB_searchlight_guard_tasks: alive_total_W2 = 0 SWITCH active_boat_W2 CASE 0 // boat 0 attack CASE 2 // boat 0 reset search_pointer_W2 = 0 WHILE search_pointer_W2 < 3 IF NOT IS_CHAR_DEAD s_boat_guard_W2[search_pointer_W2] CLEAR_CHAR_TASKS s_boat_guard_W2[search_pointer_W2] IF active_boat_W2 = 0 TASK_KILL_CHAR_ON_FOOT s_boat_guard_W2[search_pointer_W2] scplayer ENDIF alive_total_W2 ++ ENDIF search_pointer_W2 ++ ENDWHILE BREAK CASE 1 // boat 1 attack CASE 3 // boat 1 reset search_pointer_W2 = 3 WHILE search_pointer_W2 < 6 IF NOT IS_CHAR_DEAD s_boat_guard_W2[search_pointer_W2] CLEAR_CHAR_TASKS s_boat_guard_W2[search_pointer_W2] IF active_boat_W2 = 1 TASK_KILL_CHAR_ON_FOOT s_boat_guard_W2[search_pointer_W2] scplayer ENDIF alive_total_W2 ++ ENDIF search_pointer_W2 ++ ENDWHILE BREAK ENDSWITCH RETURN LVAR_INT bulb_status_W2[6] health_W2 mission_wuzi2_SUB_check_bulbs: pointer_W2 = 0 WHILE pointer_W2 < 4 IF bulb_status_W2[pointer_W2] = 0 AND DOES_OBJECT_EXIST searchlight_bulb_W2[pointer_W2] GET_OBJECT_HEALTH searchlight_bulb_W2[pointer_W2] health_W2 IF health_W2 < 1000 DELETE_SEARCHLIGHT searchlight_W2[pointer_W2] REMOVE_BLIP searchlight_blip_W2[pointer_W2] bulb_status_W2[pointer_W2] ++ ENDIF ENDIF pointer_W2 ++ ENDWHILE RETURN mission_wuzi2_SUB_player_swimming_help: IF help_text_flag_W2 > 0 IF help_text_flag_W2 = 1 AND player_status_W2 > 0 IF TIMERB > 6500 AND help_text_switch_W2 < 4 help_text_switch_W2 ++ ENDIF CLEAR_HELP PRINT_HELP_FOREVER WZI2_B4 TIMERB = 0 help_text_flag_W2 ++ ELSE IF help_text_switch_W2 < 5 SWITCH help_text_switch_W2 CASE -2 PRINT_NOW WZI2_8 7000 1 TIMERB = 0 help_text_switch_W2 ++ BREAK CASE -1 IF TIMERB > 7000 PRINT_NOW WZI2_9 8000 1 TIMERB = 6500 help_text_switch_W2 ++ ENDIF BREAK CASE 4 IF TIMERB > 8000 CLEAR_HELP help_text_switch_W2 ++ ENDIF BREAK DEFAULT IF TIMERB > 8000 CLEAR_HELP PRINT_HELP_FOREVER $help_text_W2[help_text_switch_W2] TIMERB = 0 help_text_switch_W2 ++ ENDIF BREAK ENDSWITCH ENDIF ENDIF ELSE IF player_underwater_W2 = FALSE help_text_flag_W2 = 1 ENDIF ENDIF RETURN LVAR_INT radar_status_W2 mission_wuzi2_SUB_control_radar: SWITCH radar_status_W2 CASE 0 IF NOT IS_CHAR_IN_WATER scplayer IF IS_CHAR_IN_AREA_3D scplayer -1491.3191 1505.3339 0.0 -1352.4364 1475.7378 15.0 FALSE GOSUB mission_wuzi2_SUB_add_boat_guard_blips radar_status_W2 ++ BREAK ENDIF ENDIF BREAK CASE 1 IF IS_CHAR_IN_WATER scplayer GOSUB mission_wuzi2_SUB_add_boat_and_search_blips radar_status_W2 -- BREAK ENDIF BREAK ENDSWITCH RETURN mission_wuzi2_SUB_add_boat_and_search_blips: // remove blips pointer_W2 = 0 WHILE pointer_W2 < 5 REMOVE_BLIP guard_blip_W2[pointer_W2] pointer_W2 ++ ENDWHILE // add blips SET_RADAR_ZOOM 0 IF NOT IS_CAR_DEAD boat_W2[0] IF NOT DOES_BLIP_EXIST boat_blip_W2[0] ADD_BLIP_FOR_CAR boat_W2[0] boat_blip_W2[0] CHANGE_BLIP_DISPLAY boat_blip_W2[0] BLIP_ONLY ENDIF ENDIF IF NOT IS_CAR_DEAD boat_W2[1] IF NOT DOES_BLIP_EXIST boat_blip_W2[1] ADD_BLIP_FOR_CAR boat_W2[1] boat_blip_W2[1] CHANGE_BLIP_DISPLAY boat_blip_W2[1] BLIP_ONLY ENDIF ENDIF IF NOT IS_CAR_DEAD s_boat_W2[0] IF NOT DOES_BLIP_EXIST s_boat_blip_W2[0] ADD_BLIP_FOR_CAR s_boat_W2[0] s_boat_blip_W2[0] CHANGE_BLIP_DISPLAY s_boat_blip_W2[0] BLIP_ONLY ENDIF ENDIF IF NOT IS_CAR_DEAD s_boat_W2[1] IF NOT DOES_BLIP_EXIST s_boat_blip_W2[1] ADD_BLIP_FOR_CAR s_boat_W2[1] s_boat_blip_W2[1] CHANGE_BLIP_DISPLAY s_boat_blip_W2[1] BLIP_ONLY ENDIF ENDIF pointer_W2 = 0 WHILE pointer_W2 < 4 IF bulb_status_W2[pointer_W2] = 0 IF NOT DOES_BLIP_EXIST searchlight_blip_W2[pointer_W2] ADD_BLIP_FOR_SEARCHLIGHT searchlight_W2[pointer_W2] searchlight_blip_W2[pointer_W2] ENDIF ENDIF pointer_W2 ++ ENDWHILE RETURN mission_wuzi2_SUB_add_boat_guard_blips: // remove blips IF NOT IS_CAR_DEAD boat_W2[0] REMOVE_BLIP boat_blip_W2[0] ENDIF IF NOT IS_CAR_DEAD boat_W2[1] REMOVE_BLIP boat_blip_W2[1] ENDIF IF NOT IS_CAR_DEAD s_boat_W2[0] REMOVE_BLIP s_boat_blip_W2[0] ENDIF IF NOT IS_CAR_DEAD s_boat_W2[1] REMOVE_BLIP s_boat_blip_W2[1] ENDIF pointer_W2 = 0 WHILE pointer_W2 < 4 REMOVE_BLIP searchlight_blip_W2[pointer_W2] pointer_W2 ++ ENDWHILE // add blips SET_RADAR_ZOOM 90 pointer_W2 = 0 WHILE pointer_W2 < 5 IF NOT IS_CHAR_DEAD guard_W2[pointer_W2] IF NOT DOES_BLIP_EXIST guard_blip_W2[pointer_W2] ADD_BLIP_FOR_CHAR guard_W2[pointer_W2] guard_blip_W2[pointer_W2] CHANGE_BLIP_DISPLAY guard_blip_W2[pointer_W2] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR guard_blip_W2[pointer_W2] TRUE ENDIF ENDIF pointer_W2 ++ ENDWHILE RETURN // GUARDS ON THE MAIN BOAT ################################################################################################################ LVAR_INT guard_W2[7] guard_blip_W2[8] idle_status_W2[7] patrol_start_W2[4] patrol_stop_W2[4] LVAR_FLOAT idle_X_W2[4] idle_Y_W2[4] idle_Z_W2[4] idle_heading_W2[4] patrol_X_W2[10] patrol_Y_W2[10] patrol_Z_W2[10] patrol_heading_W2[10] mission_wuzi2_SUB_start_boat: CLEAR_HELP CLEAR_PRINTS IF knife_status_W2 = 0 REMOVE_PICKUP stealth_knife_W2 ENDIF GOSUB mission_wuzi2_SUB_knife_status IF NOT knife_status_W2 = 1 CREATE_PICKUP_WITH_AMMO KNIFECUR PICKUP_ONCE 1 -1456.2894 1497.9050 6.7 stealth_knife_W2 ENDIF REMOVE_BLIP goto_blip_W2 ADD_BLIP_FOR_COORD -1372.7328 1495.5503 0.8578 goto_blip_W2 idle_X_W2[0] = -1442.2070 idle_Y_W2[0] = 1489.4618 idle_Z_W2[0] = 6.1016 idle_heading_W2[0] = 270.0 idle_X_W2[1] = -1402.3083 idle_Y_W2[1] = 1486.7195 idle_Z_W2[1] = 6.0938 idle_heading_W2[1] = 301.3607 idle_X_W2[2] = -1382.6575 idle_Y_W2[2] = 1480.4457 idle_Z_W2[2] = 7.5625 idle_heading_W2[2] = 180.0 idle_X_W2[3] = -1370.5841 idle_Y_W2[3] = 1486.7400 idle_Z_W2[3] = 10.0313 idle_heading_W2[3] = 347.1257 // boat guards CREATE_CHAR PEDTYPE_MISSION2 DNB1 idle_X_W2[0] idle_Y_W2[0] idle_Z_W2[0] guard_W2[0] SET_CHAR_HEADING guard_W2[0] idle_heading_W2[0] GIVE_WEAPON_TO_CHAR guard_W2[0] WEAPONTYPE_KNIFE 1 SET_CURRENT_CHAR_WEAPON guard_W2[0] WEAPONTYPE_KNIFE SET_CHAR_DECISION_MAKER guard_W2[0] stealth_dm_W2 ADD_BLIP_FOR_CHAR guard_W2[0] guard_blip_W2[0] CHANGE_BLIP_DISPLAY guard_blip_W2[0] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR guard_blip_W2[0] TRUE SET_CHAR_SHOOT_RATE guard_W2[0] 80 SET_SENSE_RANGE guard_W2[0] 80.0 idle_status_W2[0] = 0 CREATE_CHAR PEDTYPE_MISSION2 DNB2 idle_X_W2[1] idle_Y_W2[1] idle_Z_W2[1] guard_W2[1] SET_CHAR_HEADING guard_W2[1] idle_heading_W2[1] GIVE_WEAPON_TO_CHAR guard_W2[1] WEAPONTYPE_KNIFE 1 SET_CURRENT_CHAR_WEAPON guard_W2[1] WEAPONTYPE_KNIFE SET_CHAR_DECISION_MAKER guard_W2[1] stealth_dm_W2 ADD_BLIP_FOR_CHAR guard_W2[1] guard_blip_W2[1] CHANGE_BLIP_DISPLAY guard_blip_W2[1] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR guard_blip_W2[1] TRUE SET_CHAR_SHOOT_RATE guard_W2[1] 80 SET_SENSE_RANGE guard_W2[1] 80.0 idle_status_W2[1] = 0 CREATE_CHAR PEDTYPE_MISSION2 DNB3 idle_X_W2[2] idle_Y_W2[2] idle_Z_W2[2] guard_W2[2] SET_CHAR_HEADING guard_W2[2] idle_heading_W2[2] GIVE_WEAPON_TO_CHAR guard_W2[2] WEAPONTYPE_KNIFE 1 SET_CURRENT_CHAR_WEAPON guard_W2[2] WEAPONTYPE_KNIFE SET_CHAR_DECISION_MAKER guard_W2[2] stealth_dm_W2 ADD_BLIP_FOR_CHAR guard_W2[2] guard_blip_W2[2] CHANGE_BLIP_DISPLAY guard_blip_W2[2] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR guard_blip_W2[2] TRUE SET_CHAR_SHOOT_RATE guard_W2[2] 80 SET_SENSE_RANGE guard_W2[2] 80.0 idle_status_W2[2] = 0 CREATE_CHAR PEDTYPE_MISSION2 DNB1 idle_X_W2[3] idle_Y_W2[3] idle_Z_W2[3] guard_W2[3] SET_CHAR_HEADING guard_W2[3] idle_heading_W2[3] GIVE_WEAPON_TO_CHAR guard_W2[3] WEAPONTYPE_KNIFE 1 SET_CURRENT_CHAR_WEAPON guard_W2[3] WEAPONTYPE_KNIFE SET_CHAR_DECISION_MAKER guard_W2[3] stealth_dm_W2 ADD_BLIP_FOR_CHAR guard_W2[3] guard_blip_W2[3] CHANGE_BLIP_DISPLAY guard_blip_W2[3] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR guard_blip_W2[3] TRUE SET_CHAR_SHOOT_RATE guard_W2[3] 80 SET_SENSE_RANGE guard_W2[3] 80.0 idle_status_W2[3] = 0 // patrol patrol_X_W2[0] = -1415.1495 patrol_Y_W2[0] = 1489.3296 patrol_Z_W2[0] = 6.1092 patrol_heading_W2[0] = 274.6376 patrol_X_W2[1] = -1393.0498 patrol_Y_W2[1] = 1490.0347 patrol_Z_W2[1] = 6.1016 patrol_heading_W2[1] = 273.1324 patrol_X_W2[2] = -1377.6937 patrol_Y_W2[2] = 1494.0095 patrol_Z_W2[2] = 0.8594 patrol_heading_W2[2] = 268.1749 patrol_X_W2[3] = -1384.8552 patrol_Y_W2[3] = 1493.9037 patrol_Z_W2[3] = 0.8594 patrol_heading_W2[3] = 86.0142 patrol_X_W2[4] = -1433.3796 patrol_Y_W2[4] = 1483.4484 patrol_Z_W2[4] = 0.6250 patrol_heading_W2[4] = 272.9424 patrol_X_W2[5] = -1393.0223 patrol_Y_W2[5] = 1483.6252 patrol_Z_W2[5] = 0.6250 patrol_heading_W2[5] = 266.0800 patrol_X_W2[6] = -1392.5673 patrol_Y_W2[6] = 1496.2734 patrol_Z_W2[6] = 0.6312 patrol_heading_W2[6] = 163.7750 patrol_X_W2[7] = -1423.0598 patrol_Y_W2[7] = 1496.2892 patrol_Z_W2[7] = 0.6250 patrol_heading_W2[7] = 134.2810 patrol_X_W2[8] = -1423.2905 patrol_Y_W2[8] = 1491.6144 patrol_Z_W2[8] = 0.6250 patrol_heading_W2[8] = 172.1411 patrol_X_W2[9] = -1433.2311 patrol_Y_W2[9] = 1488.7184 patrol_Z_W2[9] = 0.6250 patrol_heading_W2[9] = 106.1638 patrol_start_W2[0] = 0 patrol_stop_W2[0] = 1 pointer2_W2 = patrol_start_W2[0] CREATE_CHAR PEDTYPE_MISSION2 DNB3 patrol_X_W2[pointer2_W2] patrol_Y_W2[pointer2_W2] patrol_Z_W2[pointer2_W2] guard_W2[4] SET_CHAR_HEADING guard_W2[4] patrol_heading_W2[pointer2_W2] GIVE_WEAPON_TO_CHAR guard_W2[4] WEAPONTYPE_KNIFE 1 SET_CURRENT_CHAR_WEAPON guard_W2[4] WEAPONTYPE_KNIFE SET_CHAR_DECISION_MAKER guard_W2[4] stealth_dm_W2 ADD_BLIP_FOR_CHAR guard_W2[4] guard_blip_W2[4] CHANGE_BLIP_DISPLAY guard_blip_W2[4] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR guard_blip_W2[4] TRUE SET_CHAR_SHOOT_RATE guard_W2[4] 80 SET_SENSE_RANGE guard_W2[4] 80.0 idle_status_W2[4] = 0 patrol_start_W2[1] = 2 patrol_stop_W2[1] = 3 pointer2_W2 = patrol_start_W2[1] CREATE_CHAR PEDTYPE_MISSION2 DNB2 patrol_X_W2[pointer2_W2] patrol_Y_W2[pointer2_W2] patrol_Z_W2[pointer2_W2] guard_W2[5] SET_CHAR_HEADING guard_W2[5] patrol_heading_W2[pointer2_W2] GIVE_WEAPON_TO_CHAR guard_W2[5] WEAPONTYPE_KNIFE 1 SET_CURRENT_CHAR_WEAPON guard_W2[5] WEAPONTYPE_KNIFE SET_CHAR_DECISION_MAKER guard_W2[5] stealth_dm_W2 ADD_BLIP_FOR_CHAR guard_W2[5] guard_blip_W2[5] CHANGE_BLIP_DISPLAY guard_blip_W2[5] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR guard_blip_W2[5] TRUE SET_CHAR_SHOOT_RATE guard_W2[5] 80 SET_SENSE_RANGE guard_W2[5] 80.0 idle_status_W2[5] = 0 patrol_start_W2[2] = 4 patrol_stop_W2[2] = 9 pointer2_W2 = patrol_start_W2[2] CREATE_CHAR PEDTYPE_MISSION2 DNB1 patrol_X_W2[pointer2_W2] patrol_Y_W2[pointer2_W2] patrol_Z_W2[pointer2_W2] guard_W2[6] SET_CHAR_HEADING guard_W2[6] patrol_heading_W2[pointer2_W2] GIVE_WEAPON_TO_CHAR guard_W2[6] WEAPONTYPE_KNIFE 1 SET_CURRENT_CHAR_WEAPON guard_W2[6] WEAPONTYPE_KNIFE SET_CHAR_DECISION_MAKER guard_W2[6] stealth_dm_W2 ADD_BLIP_FOR_CHAR guard_W2[6] guard_blip_W2[6] CHANGE_BLIP_DISPLAY guard_blip_W2[6] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR guard_blip_W2[6] TRUE SET_CHAR_SHOOT_RATE guard_W2[6] 80 SET_SENSE_RANGE guard_W2[6] 80.0 idle_status_W2[6] = 0 PRINT_NOW WZI2_35 7000 1 p_stealth_status_W2 = 0 pointer_W2 = 0 WHILE pointer_W2 < 4 IF NOT IS_CHAR_DEAD guard_W2[pointer_W2] SET_CHAR_DECISION_MAKER guard_W2[pointer_W2] stealth_dm_W2 ENDIF pointer_W2 ++ ENDWHILE stealth_active_W2 = 1 CHECKPOINT_SAVE 99 RETURN LVAR_INT p_stealth_status_W2 g_stealth_status_W2[7] t_stealth_status_W2[2] guard_active_W2 mission_wuzi2_SUB_guard_stealth_status: pointer_W2 = 0 t_stealth_status_W2[0] = 0 t_stealth_status_W2[1] = 0 t_stealth_status_W2[1] = 0 WHILE pointer_W2 < 7 IF NOT IS_CHAR_DEAD guard_W2[pointer_W2] SWITCH g_stealth_status_W2[pointer_W2] CASE 0 IF IS_CHAR_RESPONDING_TO_EVENT guard_W2[pointer_W2] EVENT_SOUND_QUIET OR IS_CHAR_RESPONDING_TO_EVENT guard_W2[pointer_W2] EVENT_ACQUAINTANCE_PED_HATE_BADLY_LIT IF NOT IS_CHAR_RESPONDING_TO_EVENT guard_W2[pointer_W2] EVENT_ACQUAINTANCE_PED_HATE g_stealth_status_W2[pointer_W2] = 1 idle_status_W2[pointer_W2] = -1 t_stealth_status_W2[1] ++ ELSE g_stealth_status_W2[pointer_W2] = 2 idle_status_W2[pointer_W2] = -1 t_stealth_status_W2[1] ++ ENDIF ELSE IF IS_CHAR_RESPONDING_TO_EVENT guard_W2[pointer_W2] EVENT_ACQUAINTANCE_PED_HATE OR IS_CHAR_RESPONDING_TO_EVENT guard_W2[pointer_W2] EVENT_SHOT_FIRED OR IS_CHAR_RESPONDING_TO_EVENT guard_W2[pointer_W2] EVENT_DAMAGE OR IS_CHAR_RESPONDING_TO_EVENT guard_W2[pointer_W2] EVENT_GUN_AIMED_AT g_stealth_status_W2[pointer_W2] = 2 idle_status_W2[pointer_W2] = -1 t_stealth_status_W2[1] ++ ELSE t_stealth_status_W2[0] ++ ENDIF ENDIF BREAK CASE 1 IF IS_CHAR_RESPONDING_TO_EVENT guard_W2[pointer_W2] EVENT_ACQUAINTANCE_PED_HATE OR IS_CHAR_RESPONDING_TO_EVENT guard_W2[pointer_W2] EVENT_SHOT_FIRED OR IS_CHAR_RESPONDING_TO_EVENT guard_W2[pointer_W2] EVENT_DAMAGE OR IS_CHAR_RESPONDING_TO_EVENT guard_W2[pointer_W2] EVENT_GUN_AIMED_AT g_stealth_status_W2[pointer_W2] = 2 idle_status_W2[pointer_W2] = -1 guard_active_W2 = pointer_W2 t_stealth_status_W2[1] ++ ELSE IF IS_CHAR_RESPONDING_TO_EVENT guard_W2[pointer_W2] EVENT_ACQUAINTANCE_PED_HATE_BADLY_LIT OR IS_CHAR_RESPONDING_TO_EVENT guard_W2[pointer_W2] EVENT_SOUND_QUIET t_stealth_status_W2[1] ++ ELSE g_stealth_status_W2[pointer_W2] = 0 idle_status_W2[pointer_W2] = 0 t_stealth_status_W2[0] ++ ENDIF ENDIF BREAK CASE 2 IF IS_CHAR_RESPONDING_TO_EVENT guard_W2[pointer_W2] EVENT_ACQUAINTANCE_PED_HATE OR IS_CHAR_RESPONDING_TO_EVENT guard_W2[pointer_W2] EVENT_ACQUAINTANCE_PED_HATE_BADLY_LIT OR IS_CHAR_RESPONDING_TO_EVENT guard_W2[pointer_W2] EVENT_SHOT_FIRED OR IS_CHAR_RESPONDING_TO_EVENT guard_W2[pointer_W2] EVENT_DAMAGE OR IS_CHAR_RESPONDING_TO_EVENT guard_W2[pointer_W2] EVENT_GUN_AIMED_AT OR IS_CHAR_RESPONDING_TO_EVENT guard_W2[pointer_W2] EVENT_SOUND_QUIET guard_active_W2 = pointer_W2 t_stealth_status_W2[1] ++ ELSE g_stealth_status_W2[pointer_W2] = 0 idle_status_W2[pointer_W2] = 0 t_stealth_status_W2[0] ++ ENDIF BREAK ENDSWITCH ELSE IF NOT g_stealth_status_W2[pointer_W2] = -1 REMOVE_BLIP guard_blip_W2[pointer_W2] g_stealth_status_W2[pointer_W2] = -1 ENDIF ENDIF pointer_W2 ++ ENDWHILE SWITCH p_stealth_status_W2 CASE 0 IF t_stealth_status_W2[1] > 0 p_stealth_status_W2 = 2 //PRINT_NOW WZI2_22 3000 1 //GUARD: Theres an intruder on the boat. ELSE IF t_stealth_status_W2[1] > 0 p_stealth_status_W2 = 1 //PRINT_NOW WZI2_20 3000 1 //GUARD: What was that? ENDIF ENDIF BREAK CASE 1 IF t_stealth_status_W2[1] > 0 p_stealth_status_W2 = 2 //PRINT_NOW WZI2_22 3000 1 //GUARD: Theres an intruder on the boat. ELSE IF t_stealth_status_W2[1] = 0 p_stealth_status_W2 = 0 //PRINT_NOW WZI2_21 3000 1 //GUARD: Hmm..must have been my imagination. ENDIF ENDIF BREAK CASE 2 IF t_stealth_status_W2[1] = 0 AND t_stealth_status_W2[1] = 0 p_stealth_status_W2 = 0 IF NOT IS_CHAR_DEAD guard_W2[guard_active_W2] AND NOT IS_CHAR_DEAD scplayer //PRINT_NOW WZI2_23 3000 1 //GUARD: Shit i've lost him. ENDIF ENDIF BREAK ENDSWITCH RETURN // guard idle controllers // stand still guard mission_wuzi2_SUB_idle_guards_still: pointer_W2 = 0 WHILE pointer_W2 < 4 IF NOT idle_status_W2[pointer_W2] = -1 // currently in stealth decision maker IF NOT IS_CHAR_DEAD guard_W2[pointer_W2] SWITCH idle_status_W2[pointer_W2] CASE 0 // go to idle stand point OPEN_SEQUENCE_TASK sequence_W2 TASK_GO_TO_COORD_ANY_MEANS -1 idle_X_W2[pointer_W2] idle_Y_W2[pointer_W2] idle_Z_W2[pointer_W2] PEDMOVE_WALK -2 TASK_ACHIEVE_HEADING -1 idle_heading_W2[pointer_W2] TASK_STAND_STILL -1 5000 CLOSE_SEQUENCE_TASK sequence_W2 PERFORM_SEQUENCE_TASK guard_W2[pointer_W2] sequence_W2 CLEAR_SEQUENCE_TASK sequence_W2 idle_status_W2[pointer_W2] ++ BREAK CASE 1 // check sequence to see if hes arrived GET_SEQUENCE_PROGRESS guard_W2[pointer_W2] progress_W2 IF progress_W2 = 2 IF LOCATE_CHAR_ON_FOOT_2D guard_W2[pointer_W2] idle_X_W2[pointer_W2] idle_Y_W2[pointer_W2] 2.0 2.0 FALSE idle_status_W2[pointer_W2] ++ ELSE CLEAR_CHAR_TASKS guard_W2[pointer_W2] idle_status_W2[pointer_W2] -- ENDIF ENDIF BREAK CASE 2 // do some idle stuff GENERATE_RANDOM_INT_IN_RANGE 7000 15000 random_W2 GENERATE_RANDOM_INT_IN_RANGE 0 500 random2_W2 CLEAR_CHAR_TASKS guard_W2[pointer_W2] OPEN_SEQUENCE_TASK sequence_W2 TASK_STAND_STILL -1 random_W2 IF random2_W2 < 250 TASK_LOOK_ABOUT -1 8000 ELSE TASK_SCRATCH_HEAD -1 ENDIF TASK_STAND_STILL -1 5000 CLOSE_SEQUENCE_TASK sequence_W2 PERFORM_SEQUENCE_TASK guard_W2[pointer_W2] sequence_W2 CLEAR_SEQUENCE_TASK sequence_W2 idle_status_W2[pointer_W2] ++ BREAK CASE 3 GET_SEQUENCE_PROGRESS guard_W2[pointer_W2] progress_W2 IF progress_W2 = 2 CLEAR_CHAR_TASKS guard_W2[pointer_W2] idle_status_W2[pointer_W2] -- ENDIF BREAK CASE 4 BREAK ENDSWITCH ENDIF ENDIF pointer_W2 ++ ENDWHILE RETURN // patrol guard LVAR_INT patrol_progress_W2 mission_wuzi2_SUB_idle_guards_patrol: pointer_W2 = 4 pointer2_W2 = 0 WHILE pointer_W2 < 7 IF NOT idle_status_W2[pointer_W2] = -1 // currently in stealth decision maker IF NOT IS_CHAR_DEAD guard_W2[pointer_W2] pointer3_W2 = patrol_start_W2[pointer2_W2] pointer4_W2 = patrol_stop_W2[pointer2_W2] SWITCH idle_status_W2[pointer_W2] CASE 0 // go to idle stand point OPEN_SEQUENCE_TASK sequence_W2 WHILE pointer3_W2 <= pointer4_W2 TASK_GO_TO_COORD_ANY_MEANS -1 patrol_X_W2[pointer3_W2] patrol_Y_W2[pointer3_W2] patrol_Z_W2[pointer3_W2] PEDMOVE_WALK -2 pointer3_W2 ++ ENDWHILE IF pointer_W2 = 6 SET_SEQUENCE_TO_REPEAT sequence_W2 1 idle_status_W2[pointer_W2] = 90 ELSE TASK_ACHIEVE_HEADING -1 patrol_heading_W2[pointer4_W2] TASK_STAND_STILL -1 5000 TASK_STAND_STILL -1 5000 idle_status_W2[pointer_W2] ++ ENDIF CLOSE_SEQUENCE_TASK sequence_W2 PERFORM_SEQUENCE_TASK guard_W2[pointer_W2] sequence_W2 CLEAR_SEQUENCE_TASK sequence_W2 BREAK CASE 1 // check sequence to see if hes arrived patrol_progress_W2 = pointer4_W2 - pointer3_W2 patrol_progress_W2 += 3 GET_SEQUENCE_PROGRESS guard_W2[pointer_W2] progress_W2 IF progress_W2 = patrol_progress_W2 IF pointer_W2 = 4 // do greet? ENDIF idle_status_W2[pointer_W2] ++ ENDIF BREAK CASE 2 // do some idle stuff OPEN_SEQUENCE_TASK sequence_W2 WHILE pointer4_W2 >= pointer3_W2 TASK_GO_TO_COORD_ANY_MEANS -1 patrol_X_W2[pointer4_W2] patrol_Y_W2[pointer4_W2] patrol_Z_W2[pointer4_W2] PEDMOVE_WALK -2 pointer4_W2 -- ENDWHILE TASK_ACHIEVE_HEADING -1 patrol_heading_W2[pointer3_W2] TASK_STAND_STILL -1 5000 TASK_STAND_STILL -1 5000 idle_status_W2[pointer_W2] ++ CLOSE_SEQUENCE_TASK sequence_W2 PERFORM_SEQUENCE_TASK guard_W2[pointer_W2] sequence_W2 CLEAR_SEQUENCE_TASK sequence_W2 BREAK CASE 3 patrol_progress_W2 = pointer4_W2 - pointer3_W2 patrol_progress_W2 += 3 GET_SEQUENCE_PROGRESS guard_W2[pointer_W2] progress_W2 IF progress_W2 = patrol_progress_W2 idle_status_W2[pointer_W2] = 0 ENDIF BREAK CASE 4 BREAK ENDSWITCH ENDIF ENDIF pointer_W2 ++ pointer2_W2 ++ ENDWHILE RETURN LVAR_INT weapontype_W2[13] weapon_ammo_W2[13] weapon_model_W2[13] current_weapon_W2 weapon_slot_W2 weapon_totals_W2 weapon_loaded_W2 mission_wuzi2_SUB_store_players_weapons: pointer_W2 = 0 weapon_slot_W2 = 1 GET_CURRENT_CHAR_WEAPON scplayer current_weapon_W2 WHILE pointer_W2 < 13 GET_CHAR_WEAPON_IN_SLOT scplayer weapon_slot_W2 weapontype_W2[pointer_W2] weapon_ammo_W2[pointer_W2] weapon_model_W2[pointer_W2] pointer_W2 ++ weapon_slot_W2 ++ ENDWHILE RETURN mission_wuzi2_SUB_return_players_weapons: // request any models for weapons the player had pointer_W2 = 0 WHILE pointer_W2 < 13 IF NOT weapontype_W2[pointer_W2] = 0 //WEAPONTYPE_UNARMED REQUEST_MODEL weapon_model_W2[pointer_W2] weapon_totals_W2 ++ ENDIF pointer_W2 ++ ENDWHILE // wait for the weapon models to load WHILE NOT weapon_loaded_W2 = weapon_totals_W2 WAIT 0 weapon_loaded_W2 = 0 pointer_W2 = 0 WHILE pointer_W2 < 13 IF NOT weapontype_W2[pointer_W2] = 0 //WEAPONTYPE_UNARMED IF HAS_MODEL_LOADED weapon_model_W2[pointer_W2] weapon_loaded_W2 ++ ENDIF ENDIF pointer_W2 ++ ENDWHILE ENDWHILE REMOVE_ALL_CHAR_WEAPONS scplayer pointer_W2 = 0 weapon_slot_W2 = 1 WHILE pointer_W2 < 13 GIVE_WEAPON_TO_CHAR scplayer weapontype_W2[pointer_W2] weapon_ammo_W2[pointer_W2] pointer_W2 ++ weapon_slot_W2 ++ ENDWHILE SET_CURRENT_CHAR_WEAPON scplayer current_weapon_W2 // mark the models as no longer needed so they dont stay in script memory? pointer_W2 = 0 WHILE pointer_W2 < 13 IF NOT weapontype_W2[pointer_W2] = 0 //WEAPONTYPE_UNARMED MARK_MODEL_AS_NO_LONGER_NEEDED weapon_model_W2[pointer_W2] ENDIF pointer_W2 ++ ENDWHILE RETURN // MISSION FAILED ########################################################################################### MISSION FAILED mission_wuzi2_FAILED: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" IF fail_text_flag_W2 = 1 PRINT_NOW $fail_text_W2 5000 1 ENDIF RETURN // MISSION PASSED ########################################################################################### MISSION PASSED mission_wuzi2_PASSED: //GOSUB mission_wuzi2_SUB_return_players_weapons flag_wuzi_mission_counter++ REGISTER_MISSION_PASSED ( WUZI_2 ) //Used in the stats PLAYER_MADE_PROGRESS 1 // imy stuff PRINT_WITH_NUMBER_BIG ( M_PASSS ) 11000 5000 1 //"Mission Passed!" //100 being the amount of cash ADD_SCORE player1 11000//amount of cash AWARD_PLAYER_MISSION_RESPECT 25//amount of respect CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 RETURN // MISSION CLEANUP ########################################################################################### MISSION CLEANUP mission_wuzi2_CLEANUP: IF swim_stamina_check = 0 SET_MAX_WANTED_LEVEL max_wanted_level_W2 IF IS_PLAYER_PLAYING player1 SET_PLAYER_GROUP_RECRUITMENT player1 TRUE SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 ENDIF START_NEW_SCRIPT terminate_audio_controller REMOVE_BLIP stealth_knife_blip_W2 REMOVE_PICKUP stealth_knife_W2 GET_GAME_TIMER timer_mobile_start SWITCH_ROADS_BACK_TO_ORIGINAL -1328.9994 1239.9972 -5.0 -1655.8684 1638.7549 10.0 MARK_MODEL_AS_NO_LONGER_NEEDED DNB1 MARK_MODEL_AS_NO_LONGER_NEEDED DNB2 MARK_MODEL_AS_NO_LONGER_NEEDED DNB3 // cars MARK_MODEL_AS_NO_LONGER_NEEDED TROPIC // weapons MARK_MODEL_AS_NO_LONGER_NEEDED AK47 MARK_MODEL_AS_NO_LONGER_NEEDED KNIFECUR // objects MARK_MODEL_AS_NO_LONGER_NEEDED a51_spotbase MARK_MODEL_AS_NO_LONGER_NEEDED a51_spothousing MARK_MODEL_AS_NO_LONGER_NEEDED a51_spotbulb REMOVE_ANIMATION DAM_JUMP REMOVE_BLIP goto_blip_W2 pointer_W2 = 0 WHILE pointer_W2 < 5 REMOVE_BLIP guard_blip_W2[pointer_W2] MARK_CHAR_AS_NO_LONGER_NEEDED guard_W2[pointer_W2] pointer_W2 ++ ENDWHILE pointer_W2 = 0 WHILE pointer_W2 < 4 REMOVE_BLIP searchlight_blip_W2[pointer_W2] MARK_OBJECT_AS_NO_LONGER_NEEDED searchlight_base_W2[pointer_W2] MARK_OBJECT_AS_NO_LONGER_NEEDED searchlight_housing_W2[pointer_W2] MARK_OBJECT_AS_NO_LONGER_NEEDED searchlight_bulb_W2[pointer_W2] pointer_W2 ++ ENDWHILE pointer_W2 = 0 WHILE pointer_W2 < 6 MARK_CHAR_AS_NO_LONGER_NEEDED boat_guards_W2[pointer_W2] MARK_CHAR_AS_NO_LONGER_NEEDED s_boat_guard_W2[pointer_W2] pointer_W2 ++ ENDWHILE pointer_W2 = 0 WHILE pointer_W2 < 2 REMOVE_BLIP boat_blip_W2[pointer_W2] MARK_CHAR_AS_NO_LONGER_NEEDED boat_driver_W2[pointer_W2] MARK_CAR_AS_NO_LONGER_NEEDED boat_W2[pointer_W2] REMOVE_BLIP s_boat_blip_W2[0] MARK_CHAR_AS_NO_LONGER_NEEDED s_boat_guard_W2[pointer_W2] MARK_CAR_AS_NO_LONGER_NEEDED s_boat_W2[pointer_W2] pointer_W2 ++ ENDWHILE RELEASE_WEATHER ELSE IF IS_PLAYER_PLAYING player1 SET_PLAYER_CONTROL player1 OFF ENDIF SET_CHAR_COORDINATES scplayer -2154.8154 641.3157 51.3594 SET_CHAR_HEADING scplayer 268.4865 LOAD_SCENE -2154.8154 641.3157 51.3594 TIMERA = 0 WHILE TIMERA < 500 WAIT 0 ENDWHILE DO_FADE 0 FADE_IN IF IS_PLAYER_PLAYING player1 SET_PLAYER_CONTROL player1 ON ENDIF PRINT_NOW WZI2_60 8000 1 ENDIF flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } /* [WZI2_8:WUZI2] ~s~Swim to the ~y~tanker~s~ and get aboard. [WZI2_30:WUZI2] ~s~Press the ~t~ button to plant the bug. [WZI2_31:WUZI2] ~s~Lose the attention of the guards before you plant the bug. [WZI2_32:WUZI2] ~s~Well done you have planted the bug, get off the tanker and back to the ~y~docks~s~. [WZI2_35:WUZI2] ~s~Sneak to the back of the tanker and plant the ~y~bug~s~, be as quiet as possible to avoid the attention of the ~r~guards~s~ onboard. [WZI2_36:WUZI2] You have been spotted by one of the ~r~guards~w~ dive underwater to lose their attention. [WZI2_37:WUZI2] If the ~r~guards~w~ spot you swimming fast or you dont dive quick enough they will start shooting. [WZI2_38:WUZI2] Once you have lost the attention of the ~r~guards~w~ return to the surface to get your breath back. [WZI2_39:WUZI2] When you return to the surface the ~r~guards~w~ will not spot you until you move. [WZI2_42:WUZI2] If one of the searchlights spot you on the surface of the water the ~r~guards~w~ will shoot at you. [WZI2_40:WUZI2] The main route across the water is guarded by two patrol boats, if they spot you dive underwater to lose their attention. [WZI2_41:WUZI2] Don't swim on the surface of the water or you will be spotted. [WZI2_C0:WUZI2] Press the ~q~ button to jump and climb out of the water. */ MISSION_START // ***************************************************************************************** // ***************************** wuzi4 ************************************ // ***************************************************************************************** // ***************************************************************************************** // *** *** // ***************************************************************************************** SCRIPT_NAME wuzi4 // Mission start stuff GOSUB mission_start_wuzi5 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_wuzi5_failed ENDIF GOSUB mission_cleanup_wuzi5 MISSION_END { // Variables for mission //people LVAR_INT w5_chopper w5_chopper_pilot w5_goons[17] w5_dinghys[4] w5_smoke w5_rocket_launcher w5_refugees[4] w5_grenades w5_health LVAR_INT w5_head_honcho w5_cabin_crew[5] w5_box LVAR_INT w5_armour w5_gun LVAR_INT w5_kat_anim w5_kat_lh LVAR_INT w5_refugee_container LVAR_INT w5_refugee_container_LD LVAR_INT w5_refugee_container_RD LVAR_INT w5_refugee_container_padlock //blips LVAR_INT w5_blip w5_goons_blip[9] //w5_blip2 //flags LVAR_INT w5_goals w5_control_flag w5_skip_cutscene_flag w5_deathcheck_flag LVAR_INT w5_creating_goons_flag w5_has_goons_been_created LVAR_INT w5_refugees_flag LVAR_INT w5_char_select[2] w5_char_select_flag w5_player_health LVAR_INT w5_where_player_control_flag w5_random_number LVAR_INT w5_water_flag LVAR_INT w5_goons_AI_flag[9] //speech LVAR_INT w5_speech_goals w5_speech_flag w5_speech_control_flag w5_random_last_label LVAR_TEXT_LABEL w5_print_label[6] LVAR_INT w5_audio_label[6] LVAR_INT w5_last_label LVAR_INT w5_slot1 w5_slot2 w5_slot_load w5_play_which_slot //coords LVAR_FLOAT w5_x w5_y w5_z LVAR_FLOAT w5_anim_time LVAR_FLOAT w5_fXPos w5_fYPos w5_fZPos w5_fXVel w5_fYVel w5_fZVel w5_fRed w5_fGreen w5_fBlue w5_fAlpha w5_fSize w5_fLife //for the chopper particles //sequences/decision makers/threat lists/attractors/groups LVAR_INT w5_seq w5_ped_decisions w5_empty_decisions w5_stealth_decisions //debug LVAR_INT w5_debug_health // ****************************************Mission Start************************************ mission_start_wuzi5: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT WUZI4 IF flag_player_on_mission = 0 CREATE_CHAR PEDTYPE_MISSION5 TRIADB -2433.5 1536.3 16.4 w5_goons[w5_creating_goons_flag] CREATE_CHAR PEDTYPE_MISSION5 TRIADB -2433.5 1536.3 16.4 w5_rocket_launcher CREATE_CHAR PEDTYPE_MISSION5 TRIADB -2389.2 1537.1 1.1 w5_refugees[w5_refugees_flag] CREATE_PICKUP_WITH_AMMO grenade PICKUP_ON_STREET_SLOW 6 -2412.4 1547.9 25.0 w5_grenades CREATE_PICKUP health PICKUP_ON_STREET_SLOW -2427.8 1547.6 22.1 w5_health ADD_BLIP_FOR_CHAR w5_goons[w5_creating_goons_flag] w5_goons_blip[w5_creating_goons_flag] CREATE_CAR DINGHY -2430.7 1563.6 0.0 w5_dinghys[0] CREATE_CAR DINGHY -2442.4 1564.6 0.0 w5_dinghys[1] CREATE_CAR DINGHY -2426.9 1570.6 0.0 w5_dinghys[2] ENDIF CLEAR_PRINTS WAIT 0 // *************************************Set Flags/variables********************************* w5_goals = 0 w5_control_flag = 0 w5_skip_cutscene_flag = 0 w5_deathcheck_flag = 0 w5_speech_flag = 0 w5_creating_goons_flag = 0 w5_has_goons_been_created = 0 w5_refugees_flag = 0 w5_char_select[0] = DNB1 w5_char_select[1] = DNB2 //w5_char_select[2] = DNB2OS w5_char_select_flag = 0 w5_player_health = 0 w5_where_player_control_flag = 0 w5_random_number = 0 w5_water_flag = 0 w5_goons_AI_flag[0] = 0 w5_goons_AI_flag[1] = 0 w5_goons_AI_flag[2] = 0 w5_goons_AI_flag[3] = 0 w5_goons_AI_flag[4] = 0 w5_goons_AI_flag[5] = 0 w5_goons_AI_flag[6] = 0 w5_goons_AI_flag[7] = 0 w5_goons_AI_flag[8] = 0 w5_fXPos = 0.0 w5_fYPos = 0.0 w5_fZPos = 0.0 w5_fXVel = 0.0 w5_fYVel = 0.0 w5_fZVel = 0.0 w5_fRed = 0.0 w5_fGreen = 0.0 w5_fBlue = 0.0 w5_fAlpha = 0.0 w5_fSize = 0.0 w5_fLife = 0.0 // ****************************************START OF CUTSCENE******************************** MAKE_PLAYER_GANG_DISAPPEAR SET_AREA_VISIBLE 1 LOAD_CUTSCENE WOOZIE4 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF MAKE_PLAYER_GANG_REAPPEAR // ****************************************END OF CUTSCENE********************************** SET_FADING_COLOUR 0 0 0 FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_SF WAIT 0 //------------------REQUEST_MODELS ------------------------------ REQUEST_MODEL TRIADB REQUEST_MODEL MAVERICK REQUEST_ANIMATION CAR_CHAT LOAD_ALL_MODELS_NOW REMOVE_GROUP Players_Group SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 PEDTYPE_PLAYER1 COPY_CHAR_DECISION_MAKER DM_PED_EMPTY w5_empty_decisions LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH w5_ped_decisions LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_STEAL w5_stealth_decisions CLEAR_AREA -2167.8 634.9 69.7 5.0 TRUE CREATE_CAR MAVERICK -2167.8 634.9 69.7 w5_chopper SET_CAR_HEADING w5_chopper 92.3 SET_CAR_PROOFS w5_chopper TRUE TRUE TRUE TRUE TRUE CREATE_CHAR_INSIDE_CAR w5_chopper PEDTYPE_MISSION5 TRIADB w5_chopper_pilot SET_CHAR_NEVER_TARGETTED w5_chopper_pilot TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG w5_chopper_pilot TRUE SET_CHAR_DECISION_MAKER w5_chopper_pilot w5_empty_decisions CLEAR_AREA -2168.4 639.0 69.9 1.0 TRUE SET_CHAR_COORDINATES scplayer -2168.4 639.0 69.9 SET_CHAR_HEADING scplayer 189.4 LOAD_SCENE -2168.4 639.0 69.9 //FREEZE_CAR_POSITION w5_chopper TRUE //LOCK_CAR_DOORS w5_chopper CARLOCK_LOCKED //PRINT_NOW ( WUZ4_01 ) 7000 1 //Go and meet the pilot at the airport. /* ///////////////debug//////////////// w5_goals = 3 REQUEST_MODEL ROCKETLA REQUEST_MODEL TEC9 REQUEST_MODEL DNB1 REQUEST_MODEL DNB2 //REQUEST_MODEL DNB2OS REQUEST_MODEL GRENADE REQUEST_MODEL KNIFECUR REQUEST_MODEL CHROMEGUN REQUEST_MODEL OMOST LOAD_ALL_MODELS_NOW SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER DO_FADE 0 FADE_IN ///////////////debug//////////////// */ /* ///////////////debug//////////////// w5_goals = 2 REQUEST_MODEL ROCKETLA REQUEST_MODEL TEC9 REQUEST_MODEL DNB1 REQUEST_MODEL DNB2 REQUEST_MODEL DNB2OS REQUEST_MODEL GRENADE REQUEST_MODEL KNIFECUR REQUEST_MODEL CHROMEGUN REQUEST_MODEL OMOST LOAD_ALL_MODELS_NOW SET_CHAR_COORDINATES scplayer -2330.6 1518.3 1.0 WHILE w5_has_goons_been_created < 2 GOSUB w5_creating_goons ENDWHILE //GOSUB w5_creating_refugees */ //SET_CHAR_COORDINATES scplayer -2371.9 1547.2 3.0 /* /////////////DEBUG//////////// VAR_INT w5_where_player_control_flag VIEW_INTEGER_VARIABLE w5_where_player_control_flag w5_where_player_control_flag /////////////DEBUG//////////// */ /* /////////////DEBUG//////////// w5_goals = 7 CREATE_CHAR PEDTYPE_MISSION5 TRIADB -2373.5 1555.8 1.1 w5_refugees[0] CREATE_CHAR PEDTYPE_MISSION5 TRIADB -2373.4 1553.1 1.1 w5_refugees[1] CREATE_CHAR PEDTYPE_MISSION5 TRIADB -2373.4 1553.1 1.1 w5_refugees[2] CREATE_CHAR PEDTYPE_MISSION5 TRIADB -2367.5 1552.2 1.1 w5_refugees[3] /////////////DEBUG//////////// */ mission_wuzi5_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_wuzi5_passed ENDIF ALTER_WANTED_LEVEL player1 0 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// DEATHCHECKS /////////////////////////////////////////////////////////////////////////////////// GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// Initial Cutscene on roof ////////////////////////////////////////////////////////////////////// IF w5_goals = 0 IF w5_control_flag = 0 //IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer -1246.1 -36.4 13.1 1.2 1.2 2.0 TRUE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 w5_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_FIXED_CAMERA_POSITION -2172.7 636.0 71.2 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2161.7 631.4 72.4 JUMP_CUT SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE //LOCK_CAR_DOORS w5_chopper CARLOCK_UNLOCKED //FREEZE_CAR_POSITION w5_chopper FALSE OPEN_SEQUENCE_TASK w5_seq TASK_ENTER_CAR_AS_PASSENGER -1 w5_chopper -1 0 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK scplayer w5_seq CLEAR_SEQUENCE_TASK w5_seq LOAD_SCENE_IN_DIRECTION -2168.7 634.9 70.3 248.0 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF w5_skip_cutscene_flag = 1 SKIP_CUTSCENE_START w5_control_flag = 1 //ENDIF ENDIF IF w5_control_flag = 1 IF IS_CHAR_IN_ANY_CAR scplayer TASK_PLAY_ANIM w5_chopper_pilot CAR_Sc1_FL CAR_CHAT 8.0 FALSE FALSE FALSE FALSE 8000 //driver speaking TASK_PLAY_ANIM scplayer CAR_Sc1_FR CAR_CHAT 6.0 FALSE FALSE FALSE FALSE 8500 //passenger speaking //cutscene dialogue between pilot and player w5_speech_goals = 1 w5_speech_control_flag = 0 GOSUB w5_dialogue_setup timera = 0 w5_control_flag = 2 ENDIF ENDIF IF w5_control_flag = 2 IF timera > 9000 HELI_GOTO_COORDS w5_chopper -2167.8 634.9 80.7 0.0 80.7 timera = 0 w5_control_flag = 3 ENDIF ENDIF IF w5_control_flag = 3 IF w5_speech_goals = 0 w5_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF IF w5_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 w5_speech_goals = 0 ENDIF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 REQUEST_CAR_RECORDING 25 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF REQUEST_MODEL MINIGUN REQUEST_MODEL ROCKETLA REQUEST_MODEL TEC9 REQUEST_MODEL DNB1 REQUEST_MODEL DNB2 //REQUEST_MODEL DNB2OS REQUEST_CAR_RECORDING 25 LOAD_ALL_MODELS_NOW CLEAR_PRINTS CLEAR_CHAR_TASKS scplayer HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer ATTACH_CHAR_TO_CAR scplayer w5_chopper -1.4 1.0 -0.1 FACING_LEFT 90.0 WEAPONTYPE_MINIGUN START_PLAYBACK_RECORDED_CAR w5_chopper 25 SKIP_IN_PLAYBACK_RECORDED_CAR w5_chopper 750.0 SET_HELI_BLADES_FULL_SPEED w5_chopper REMOVE_ANIMATION CAR_CHAT SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE IF NOT IS_CAR_DEAD w5_chopper SET_CAR_PROOFS w5_chopper TRUE TRUE TRUE TRUE TRUE ENDIF LOAD_SCENE_IN_DIRECTION -1735.7 1303.5 7.1 120.8 //ADD_BLIP_FOR_COORD -2437.6 1541.5 6.4 w5_blip DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 REQUEST_CAR_RECORDING 25 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF timera = 0 w5_control_flag = 0 w5_goals = 1 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// Heli flying around freighter ////////////////////////////////////////////////////////////////// IF w5_goals = 1 //////////////DEBUG/////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q IF w5_has_goons_been_created < 2 GOSUB w5_creating_goons_part1 ELSE IF NOT IS_CAR_DEAD w5_chopper IF IS_PLAYBACK_GOING_ON_FOR_CAR w5_chopper STOP_PLAYBACK_RECORDED_CAR w5_chopper MAKE_HELI_COME_CRASHING_DOWN w5_chopper ENDIF w5_control_flag = 3 ENDIF ENDIF ENDIF //////////////DEBUG/////////////// // SPEECH FOR THIS SECTION IF w5_speech_flag = 0 IF timera > 6000 //2nd convo between pilot and player w5_speech_goals = 2 w5_speech_control_flag = 0 GOSUB w5_dialogue_setup w5_speech_flag = 1 ENDIF ENDIF //creating crowd IF w5_has_goons_been_created < 2 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2409.1 1541.0 200.0 200.0 FALSE GOSUB w5_creating_goons_part1 ENDIF ELSE //controlling goons ai GOSUB w5_goons_ai //blippage GOSUB w5_death_kills ENDIF ////////////////////////////////////////////////////////////////////////////////////// ////// blowing up the helicopter when it is in the correct place ///////////////////// IF NOT IS_CAR_DEAD w5_chopper IF w5_control_flag = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2287.1 1582.8 3.0 3.0 FALSE //Pilot telling player he is getting shot at w5_speech_goals = 3 w5_speech_control_flag = 0 GOSUB w5_dialogue_setup SET_PLAYBACK_SPEED w5_chopper 0.6 w5_control_flag = 1 ENDIF ENDIF IF w5_control_flag = 1 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2483.3 1509.6 3.0 3.0 FALSE GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2429.5 1536.8 30.8 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION5 w5_char_select[w5_char_select_flag] -2429.5 1536.8 30.8 w5_rocket_launcher GIVE_WEAPON_TO_CHAR w5_rocket_launcher WEAPONTYPE_ROCKETLAUNCHER 12 SET_CHAR_STAY_IN_SAME_PLACE w5_rocket_launcher TRUE SET_CHAR_PROOFS w5_rocket_launcher TRUE TRUE TRUE TRUE TRUE OPEN_SEQUENCE_TASK w5_seq TASK_GO_STRAIGHT_TO_COORD -1 -2431.0 1530.4 30.8 PEDMOVE_RUN -1 TASK_DESTROY_CAR -1 w5_chopper CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_rocket_launcher w5_seq CLEAR_SEQUENCE_TASK w5_seq timera = 0 w5_control_flag = 2 ENDIF ENDIF IF w5_control_flag = 2 //IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2462. 3.0 3.0 FALSE IF timera > 1800 //RPG RPG w5_speech_goals = 4 w5_speech_control_flag = 0 w5_random_last_label = 2 GOSUB w5_dialogue_setup w5_control_flag = 3 ENDIF ENDIF IF w5_control_flag = 3 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2401.0 1499.1 3.0 3.0 FALSE SHAKE_PAD PAD1 10000 200 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS w5_chopper 0.0 4.0 0.0 w5_x w5_y w5_z ADD_EXPLOSION w5_x w5_y w5_z EXPLOSION_HELI SET_CAR_HEALTH w5_chopper 300 w5_control_flag = 4 ENDIF ENDIF //add smoke particle effect every frame IF w5_control_flag > 3 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS w5_chopper 0.0 0.0 0.0 w5_x w5_y w5_z //x GENERATE_RANDOM_FLOAT_IN_RANGE -2.0 2.0 w5_fXPos w5_fXPos += w5_x //y GENERATE_RANDOM_FLOAT_IN_RANGE -2.0 2.0 w5_fyPos w5_fYPos += w5_y //z w5_fZPos = w5_z //x velocity GENERATE_RANDOM_FLOAT_IN_RANGE -1.5 1.5 w5_fXVel //y velocity GENERATE_RANDOM_FLOAT_IN_RANGE -1.5 1.5 w5_fYVel //z velocity GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 1.0 w5_fZVel w5_fRed = 0.0 w5_fGreen = 0.0 w5_fBlue = 0.0 w5_fAlpha = 0.2 w5_fSize = 1.0 w5_fLife = 1.0 ADD_SMOKE_PARTICLE w5_fXPos w5_fYPos w5_fZPos w5_fXVel w5_fYVel w5_fZVel w5_fRed w5_fGreen w5_fBlue w5_fAlpha w5_fSize w5_fLife ENDIF IF w5_control_flag = 4 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2381.0 1489.0 3.0 3.0 FALSE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 w5_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE DETACH_CHAR_FROM_CAR scplayer CLEAR_AREA -2351.7 1487.4 1.0 1.0 TRUE SET_CHAR_COORDINATES scplayer -2351.7 1487.4 1.0 //We're hit! We're going down! Brace for impact! w5_speech_goals = 4 w5_speech_control_flag = 2 w5_random_last_label = 5 GOSUB w5_dialogue_setup SET_PLAYBACK_SPEED w5_chopper 1.0 SET_FIXED_CAMERA_POSITION -2353.5 1450.2 82.3 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2365.3 1471.5 64.7 JUMP_CUT w5_skip_cutscene_flag = 1 SKIP_CUTSCENE_START w5_control_flag = 5 ENDIF ENDIF IF w5_control_flag = 5 IF LOCATE_CAR_2D w5_chopper -2360.0 1481.5 5.0 5.0 FALSE //STOP_PLAYBACK_RECORDED_CAR w5_chopper //MAKE_HELI_COME_CRASHING_DOWN w5_chopper w5_control_flag = 6 ENDIF ENDIF ENDIF IF w5_control_flag < 7 IF IS_CAR_IN_WATER w5_chopper w5_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF //skipping cutscene IF w5_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 w5_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD w5_chopper SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_CAR w5_chopper ENDIF ENDIF SHAKE_PAD PAD1 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 w5_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR //HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SHUT_ALL_CHARS_UP TRUE DETACH_CHAR_FROM_CAR scplayer MARK_CHAR_AS_NO_LONGER_NEEDED w5_chopper_pilot MARK_MODEL_AS_NO_LONGER_NEEDED MINIGUN MARK_MODEL_AS_NO_LONGER_NEEDED ROCKETLA MARK_MODEL_AS_NO_LONGER_NEEDED MAVERICK MARK_MODEL_AS_NO_LONGER_NEEDED TRIADB REQUEST_MODEL GRENADE REQUEST_MODEL KNIFECUR REQUEST_MODEL CHROMEGUN LOAD_ALL_MODELS_NOW REMOVE_ALL_CHAR_WEAPONS scplayer GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_KNIFE 1 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_KNIFE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_AREA -2351.7 1487.4 0.0 1.0 TRUE SET_CHAR_COORDINATES scplayer -2351.7 1487.4 -1.0 SET_CHAR_HEADING scplayer 318.0 IF NOT IS_CHAR_DEAD w5_goons[0] CLEAR_CHAR_TASKS w5_goons[0] ENDIF IF NOT IS_CHAR_DEAD w5_goons[1] CLEAR_CHAR_TASKS w5_goons[1] //SET_CHAR_STAY_IN_SAME_PLACE w5_goons[1] FALSE //SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[1] TRUE ENDIF IF NOT IS_CHAR_DEAD w5_goons[2] CLEAR_CHAR_TASKS w5_goons[2] //SET_CHAR_STAY_IN_SAME_PLACE w5_goons[2] FALSE //SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[2] TRUE ENDIF IF NOT IS_CHAR_DEAD w5_goons[3] CLEAR_CHAR_TASKS w5_goons[3] //SET_CHAR_STAY_IN_SAME_PLACE w5_goons[3] FALSE //SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[3] TRUE ENDIF IF NOT IS_CHAR_DEAD w5_goons[4] CLEAR_CHAR_TASKS w5_goons[4] //SET_CHAR_STAY_IN_SAME_PLACE w5_goons[4] FALSE //SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[4] TRUE ENDIF IF NOT IS_CHAR_DEAD w5_goons[5] CLEAR_CHAR_TASKS w5_goons[5] TASK_TOGGLE_DUCK w5_goons[5] TRUE ENDIF IF NOT IS_CHAR_DEAD w5_goons[7] CLEAR_CHAR_TASKS w5_goons[7] ENDIF REMOVE_BLIP w5_goons_blip[0] REMOVE_BLIP w5_goons_blip[1] REMOVE_BLIP w5_goons_blip[2] REMOVE_BLIP w5_goons_blip[3] REMOVE_BLIP w5_goons_blip[4] REMOVE_BLIP w5_goons_blip[5] REMOVE_BLIP w5_goons_blip[6] REMOVE_BLIP w5_goons_blip[7] REMOVE_BLIP w5_goons_blip[8] ADD_BLIP_FOR_COORD -2329.1 1528.7 0.0 w5_blip DELETE_CHAR w5_rocket_launcher GET_CHAR_HEALTH scplayer w5_player_health IF w5_player_health > 25 w5_player_health /= 4 w5_player_health *= 3 IF w5_player_health < 25 w5_player_health = 25 ENDIF SET_CHAR_HEALTH scplayer w5_player_health ENDIF //SET_FIXED_CAMERA_POSITION -2347.6 1489.3 1.0 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT -2360.6 1486.1 -1.6 JUMP_CUT HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON CLEAR_CHAR_TASKS scplayer CLEAR_PRINTS DRAW_SPHERE -2329.1 1528.7 0.0 4.0 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS DRAW_SPHERE -2329.1 1528.7 0.0 4.0 WAIT 0 DRAW_SPHERE -2329.1 1528.7 0.0 4.0 ENDWHILE //Oh, man, I hurt! | Shit, lost all my weapons! w5_speech_goals = 12 w5_speech_control_flag = 0 GOSUB w5_dialogue_setup w5_speech_flag = 0 w5_control_flag = 0 w5_goals = 2 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////Player has to swim to the boat ///////////////////////////////////////////////////////////////// IF w5_goals = 2 IF w5_control_flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2329.1 1528.7 0.0 4.0 4.0 4.0 TRUE DO_FADE 500 FADE_OUT timera = 0 w5_control_flag = 1 ELSE IF w5_speech_flag = 0 IF w5_speech_goals = 0 PRINT_NOW ( WUZ4_02 ) 7000 1 //Swim over to the freighter. w5_speech_flag = 1 ENDIF ENDIF ENDIF ENDIF IF w5_control_flag = 1 IF timera > 500 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 w5_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR //HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE REQUEST_MODEL kmb_container_red LOAD_ALL_MODELS_NOW REQUEST_ANIMATION SWAT WHILE NOT HAS_ANIMATION_LOADED SWAT WAIT 0 ENDWHILE //creating dummy collision to stand on CREATE_OBJECT kmb_container_red -2323.9 1527.3 14.0 w5_box //was 13.0 height before railing were added SET_OBJECT_COLLISION w5_box TRUE SET_OBJECT_DYNAMIC w5_box FALSE SET_OBJECT_VISIBLE w5_box FALSE WAIT 0 GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_AREA -2323.2 1530.2 16.9 1.0 TRUE SET_CHAR_COORDINATES scplayer -2323.2 1530.2 16.9 SET_CHAR_HEADING scplayer 3.3 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer //right hand side of first bit of boxes IF NOT IS_CHAR_DEAD w5_goons[0] CLEAR_AREA -2350.6 1561.2 22.1 1.0 TRUE SET_CHAR_COORDINATES w5_goons[0] -2350.6 1561.2 22.1 SET_CHAR_HEADING w5_goons[0] 4.7 TASK_PLAY_ANIM w5_goons[0] WEAPON_crouch PED 4.0 TRUE FALSE FALSE FALSE -1 ENDIF //left hand side of first bit of boxes IF NOT IS_CHAR_DEAD w5_goons[1] CLEAR_AREA -2357.1 1529.2 25.0 1.0 TRUE SET_CHAR_COORDINATES w5_goons[1] -2357.1 1529.2 25.0 SET_CHAR_HEADING w5_goons[1] 180.9 TASK_LOOK_ABOUT w5_goons[1] -2 ENDIF //left hand side of boat, start of mazey bit DELETE_CHAR w5_goons[2] GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2388.3 1553.1 25.0 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2388.3 1553.1 25.0 w5_goons[2] SET_CHAR_HEADING w5_goons[2] 0.0 SET_CHAR_DECISION_MAKER w5_goons[2] w5_ped_decisions //SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[2] TRUE GIVE_WEAPON_TO_CHAR w5_goons[2] WEAPONTYPE_TEC9 30000 //right hand side of boat, start of mazey bit DELETE_CHAR w5_goons[3] GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2390.9 1552.6 25.0 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2390.9 1552.6 25.0 w5_goons[3] SET_CHAR_HEADING w5_goons[3] 0.0 SET_CHAR_DECISION_MAKER w5_goons[3] w5_ped_decisions //SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[3] TRUE GIVE_WEAPON_TO_CHAR w5_goons[3] WEAPONTYPE_TEC9 30000 //middle of maze - guy who is going to inform everyone DELETE_CHAR w5_goons[4] GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2389.8 1554.9 25.0 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2389.8 1554.9 25.0 w5_goons[4] SET_CHAR_HEADING w5_goons[4] 220.6 SET_CHAR_DECISION_MAKER w5_goons[4] w5_ped_decisions //SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[4] TRUE GIVE_WEAPON_TO_CHAR w5_goons[4] WEAPONTYPE_TEC9 30000 //Getting these two to chat to each other IF NOT IS_CHAR_DEAD w5_goons[3] IF NOT IS_CHAR_DEAD w5_goons[4] TASK_CHAT_WITH_CHAR w5_goons[4] w5_goons[3] TRUE TRUE TASK_CHAT_WITH_CHAR w5_goons[3] w5_goons[4] FALSE TRUE ENDIF ENDIF //hiding next to the grenades DELETE_CHAR w5_goons[5] GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2407.3 1547.6 25.0 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2407.3 1547.6 25.0 w5_goons[5] SET_CHAR_HEADING w5_goons[5] 319.2 SET_CHAR_DECISION_MAKER w5_goons[5] w5_ped_decisions //SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[5] TRUE GIVE_WEAPON_TO_CHAR w5_goons[5] WEAPONTYPE_TEC9 30000 //left hand side of last bit of maze popping in/out DELETE_CHAR w5_goons[6] GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2420.4 1553.4 25.0 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2420.4 1553.4 25.0 w5_goons[6] SET_CHAR_HEADING w5_goons[6] 180.0 SET_CHAR_DECISION_MAKER w5_goons[6] w5_empty_decisions //SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[6] TRUE GIVE_WEAPON_TO_CHAR w5_goons[6] WEAPONTYPE_TEC9 30000 //at end of long bit at start of last bit of maze DELETE_CHAR w5_goons[7] GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2427.6 1532.3 25.0 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2427.6 1532.3 25.0 w5_goons[7] SET_CHAR_HEADING w5_goons[7] 275.0 SET_CHAR_DECISION_MAKER w5_goons[7] w5_ped_decisions //SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[7] TRUE GIVE_WEAPON_TO_CHAR w5_goons[7] WEAPONTYPE_TEC9 30000 //right hand side of last bit of maze DELETE_CHAR w5_goons[8] GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2427.9 1553.9 25.0 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2427.9 1553.9 25.0 w5_goons[8] SET_CHAR_HEADING w5_goons[8] 183.8 SET_CHAR_DECISION_MAKER w5_goons[8] w5_ped_decisions //SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[8] TRUE GIVE_WEAPON_TO_CHAR w5_goons[8] WEAPONTYPE_TEC9 30000 //w5_goons[9] is the warden //first guy you have to kill CLEAR_AREA -2334.5 1533.3 16.3 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 DNB1 -2334.5 1533.3 16.3 w5_goons[10] SET_CHAR_HEADING w5_goons[10] 116.3 GIVE_WEAPON_TO_CHAR w5_goons[10] WEAPONTYPE_SHOTGUN 3000 SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[10] TRUE SET_CHAR_DECISION_MAKER w5_goons[10] w5_ped_decisions //guy on top of the boxes that won't move GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2401.8 1530.3 30.8 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2401.8 1530.3 30.8 w5_goons[11] SET_CHAR_HEADING w5_goons[11] 0.0 SET_CHAR_DECISION_MAKER w5_goons[11] w5_ped_decisions GIVE_WEAPON_TO_CHAR w5_goons[11] WEAPONTYPE_TEC9 30000 //SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[11] TRUE //guy on top of the box that will move GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2405.5 1530.3 30.8 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2405.5 1530.3 30.8 w5_goons[12] SET_CHAR_HEADING w5_goons[12] 0.0 SET_CHAR_DECISION_MAKER w5_goons[12] w5_empty_decisions TASK_PLAY_ANIM w5_goons[12] weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 GIVE_WEAPON_TO_CHAR w5_goons[12] WEAPONTYPE_TEC9 30000 //first guy hiding in hole at end of maze GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2426.5 1548.8 22.2 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2426.5 1548.8 22.2 w5_goons[13] SET_CHAR_HEADING w5_goons[13] 180.0 SET_CHAR_DECISION_MAKER w5_goons[13] w5_empty_decisions SET_CHAR_STAY_IN_SAME_PLACE w5_goons[13] TRUE GIVE_WEAPON_TO_CHAR w5_goons[13] WEAPONTYPE_TEC9 30000 //second guy hiding in hole at end of maze GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2422.5 1548.8 22.2 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2422.5 1548.8 22.2 w5_goons[14] SET_CHAR_HEADING w5_goons[14] 180.0 SET_CHAR_DECISION_MAKER w5_goons[14] w5_empty_decisions SET_CHAR_STAY_IN_SAME_PLACE w5_goons[14] TRUE GIVE_WEAPON_TO_CHAR w5_goons[14] WEAPONTYPE_TEC9 30000 //guy standing on the small boxes at front righthandside of the first bit of boxes GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2339.2 1555.5 24.7 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2339.2 1555.5 24.7 w5_goons[15] SET_CHAR_HEADING w5_goons[15] 348.3 SET_CHAR_DECISION_MAKER w5_goons[15] w5_ped_decisions SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[15] TRUE GIVE_WEAPON_TO_CHAR w5_goons[15] WEAPONTYPE_TEC9 30000 TASK_LOOK_ABOUT w5_goons[15] -2 //guy standing at far righthandside of the first bit of boxes GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2360.0 1560.3 25.0 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2360.0 1560.3 25.0 w5_goons[16] SET_CHAR_HEADING w5_goons[16] 26.4 SET_CHAR_DECISION_MAKER w5_goons[16] w5_ped_decisions SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[16] TRUE GIVE_WEAPON_TO_CHAR w5_goons[16] WEAPONTYPE_TEC9 30000 TASK_LOOK_ABOUT w5_goons[16] -2 OPEN_SEQUENCE_TASK w5_seq TASK_GO_STRAIGHT_TO_COORD -1 -2334.7 1529.8 16.3 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 126.8 TASK_LOOK_ABOUT -1 -2 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[10] w5_seq CLEAR_SEQUENCE_TASK w5_seq SET_FIXED_CAMERA_POSITION -2332.5 1534.4 18.1 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2342.5 1513.7 15.33 JUMP_CUT DO_FADE 500 FADE_IN //Can you see any survivors? w5_speech_goals = 5 w5_speech_control_flag = 0 w5_random_last_label = 1 GOSUB w5_dialogue_setup timera = 0 w5_control_flag = 2 ENDIF ENDIF IF w5_control_flag = 2 IF timera > 2000 w5_skip_cutscene_flag = 1 SKIP_CUTSCENE_START w5_control_flag = 3 ENDIF ENDIF IF w5_control_flag = 3 IF w5_speech_goals = 0 IF timera > 3200 //No. Nobody's getting out of that alive! w5_speech_goals = 5 w5_speech_control_flag = 1 w5_random_last_label = 2 GOSUB w5_dialogue_setup w5_control_flag = 4 ENDIF ENDIF ENDIF IF w5_control_flag = 4 IF timera > 6000 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer OPEN_SEQUENCE_TASK w5_seq //TASK_PAUSE -1 500 TASK_CLIMB -1 TRUE TASK_ACHIEVE_HEADING -1 85.1 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK scplayer w5_seq CLEAR_SEQUENCE_TASK w5_seq SET_FIXED_CAMERA_POSITION -2320.4 1535.2 18.8 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2354.4 1508.1 18.9 JUMP_CUT w5_control_flag = 5 ENDIF ENDIF IF w5_control_flag = 5 IF timera > 8500 w5_skip_cutscene_flag = 0 SKIP_CUTSCENE_END IF w5_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 w5_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF ENDIF IF NOT IS_CHAR_DEAD w5_goons[10] SET_CHAR_DECISION_MAKER w5_goons[10] w5_stealth_decisions ENDIF IF NOT IS_CHAR_DEAD w5_goons[15] SET_CHAR_DECISION_MAKER w5_goons[15] w5_stealth_decisions ENDIF IF NOT IS_CHAR_DEAD w5_goons[16] SET_CHAR_DECISION_MAKER w5_goons[16] w5_stealth_decisions ENDIF IF NOT IS_CHAR_DEAD w5_goons[0] SET_CHAR_DECISION_MAKER w5_goons[0] w5_stealth_decisions ENDIF IF NOT IS_CHAR_DEAD w5_goons[1] SET_CHAR_DECISION_MAKER w5_goons[1] w5_stealth_decisions ENDIF CLEAR_CHAR_TASKS scplayer DELETE_OBJECT w5_box MARK_MODEL_AS_NO_LONGER_NEEDED kmb_container_red CLEAR_AREA -2323.1 1531.7 16.3 1.0 TRUE SET_CHAR_COORDINATES scplayer -2323.1 1531.7 16.3 SET_CHAR_HEADING scplayer 85.2 CLEAR_PRINTS PRINT_NOW ( WUZ4_10 ) 7000 1 //Make your way down into the hull of the ship. Be quiet for as long as possible! REMOVE_BLIP w5_blip ADD_BLIP_FOR_COORD -2437.6 1541.5 6.4 w5_blip MARK_CAR_AS_NO_LONGER_NEEDED w5_chopper SHUT_ALL_CHARS_UP FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE //HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON //skipping cutscene IF w5_skip_cutscene_flag = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF ENDIF w5_speech_flag = 0 w5_control_flag = 0 w5_goals = 3 CHECKPOINT_SAVE 99 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////Going down to see the hull////////////////////////////////////////////////////////////////////// IF w5_goals = 3 //////////DEBUG////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q SET_CHAR_COORDINATES scplayer -2437.5 1538.4 10.7 ENDIF //////////DEBUG////////// //waiting for player to reach hull IF w5_control_flag = 0 IF IS_CHAR_IN_AREA_3D scplayer -2428.6 1532.6 12.2 -2441.3 1549.9 8.0 FALSE //drawing fake locate IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2437.6 1541.5 6.4 1.2 1.2 1.2 TRUE ENDIF IF NOT IS_PLAYER_CLIMBING player1 SET_PLAYER_CONTROL player1 OFF w5_control_flag = 1 ENDIF ELSE //////// WAITING FOR THE PLAYER TO ALERT THE REST OF THE BOAT /// GOSUB w5_guys_at_start_of_maze //drawing fake locate IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2437.6 1541.5 6.4 1.2 1.2 1.2 TRUE ENDIF ENDIF ENDIF IF w5_control_flag = 1 //drawing fake locate IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2437.6 1541.5 6.4 1.2 1.2 1.2 TRUE ENDIF IF IS_CHAR_STOPPED scplayer DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF SHUT_ALL_CHARS_UP TRUE //warden down in with refugees CLEAR_AREA -2374.4 1548.5 1.1 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 DNB2 -2374.4 1548.5 1.1 w5_goons[9] SET_CHAR_HEADING w5_goons[9] 299.2 SET_CHAR_DECISION_MAKER w5_goons[9] w5_empty_decisions //SET_CHAR_STAY_IN_SAME_PLACE w5_goons[9] TRUE GIVE_WEAPON_TO_CHAR w5_goons[9] WEAPONTYPE_GRENADE 1 ADD_ARMOUR_TO_CHAR w5_goons[9] 100 REMOVE_ANIMATION SWAT MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_MODEL_AS_NO_LONGER_NEEDED KNIFECUR DELETE_OBJECT w5_box MARK_MODEL_AS_NO_LONGER_NEEDED kmb_container_red //creating the refugees REQUEST_ANIMATION PARK WHILE NOT HAS_ANIMATION_LOADED PARK WAIT 0 ENDWHILE //placing pick-ups for the player CREATE_PICKUP_WITH_AMMO TEC9 PICKUP_ON_STREET_SLOW 48 -2428.4 1536.3 2.1 w5_gun CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW -2425.3 1536.4 2.1 w5_armour //deleting all the old guys from upstairs w5_creating_goons_flag = 0 w5_delete_goons2: WAIT 0 IF w5_creating_goons_flag < 15 IF NOT w5_creating_goons_flag = 9 DELETE_CHAR w5_goons[w5_creating_goons_flag] ENDIF w5_creating_goons_flag ++ GOTO w5_delete_goons2 ENDIF CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 w5_speech_goals = 0 REQUEST_MODEL CJ_CHRIS_CRATE REQUEST_MODEL CJ_CHRIS_CRATE_LD REQUEST_MODEL CJ_CHRIS_CRATE_RD REQUEST_MODEL CJ_Padlock REQUEST_MODEL OMOBOAT LOAD_ALL_MODELS_NOW //creating container for refugees CLEAR_AREA -2368.9 1551.9 1.1 10.0 TRUE CREATE_OBJECT CJ_CHRIS_CRATE -2368.9 1551.9 1.1 w5_refugee_container SET_OBJECT_HEADING w5_refugee_container 270.0 CREATE_OBJECT CJ_CHRIS_CRATE_LD -2371.55 1552.66 1.245 w5_refugee_container_LD SET_OBJECT_HEADING w5_refugee_container_LD 270.0 CREATE_OBJECT CJ_CHRIS_CRATE_RD -2371.55 1551.14 1.245 w5_refugee_container_RD SET_OBJECT_HEADING w5_refugee_container_RD 270.0 CREATE_OBJECT CJ_Padlock -2371.75 1551.9 2.1 w5_refugee_container_padlock SET_OBJECT_HEADING w5_refugee_container_padlock 270.0 //first guy with box who goes after player CLEAR_AREA -2408.4 1553.1 1.1 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 DNB1 -2408.4 1553.1 1.1 w5_goons[0] SET_CHAR_HEADING w5_goons[0] 151.3 SET_CHAR_DECISION_MAKER w5_goons[0] w5_empty_decisions TASK_SET_IGNORE_WEAPON_RANGE_FLAG w5_goons[0] TRUE //SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[0] TRUE GIVE_WEAPON_TO_CHAR w5_goons[0] WEAPONTYPE_TEC9 30000 //second guy with box who runs to hide behind the boxes GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2404.8 1555.1 1.1 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2404.8 1555.1 1.1 w5_goons[1] SET_ANIM_GROUP_FOR_CHAR w5_goons[1] gang2 SET_CHAR_HEADING w5_goons[1] 102.0 SET_CHAR_DECISION_MAKER w5_goons[1] w5_empty_decisions //SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[1] TRUE GIVE_WEAPON_TO_CHAR w5_goons[1] WEAPONTYPE_TEC9 30000 //third guy with box who runs to tell the warden GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2401.3 1555.1 1.1 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2401.3 1555.1 1.1 w5_goons[2] SET_ANIM_GROUP_FOR_CHAR w5_goons[2] gang1 SET_CHAR_HEADING w5_goons[2] 90.0 SET_CHAR_DECISION_MAKER w5_goons[2] w5_empty_decisions //SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[2] TRUE GIVE_WEAPON_TO_CHAR w5_goons[2] WEAPONTYPE_TEC9 30000 //guy hiding in the middle of the maze by himself GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2389.4 1553.4 1.1 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2389.4 1553.4 1.1 w5_goons[3] SET_CHAR_HEADING w5_goons[3] 180.0 SET_CHAR_DECISION_MAKER w5_goons[3] w5_empty_decisions //SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[3] TRUE GIVE_WEAPON_TO_CHAR w5_goons[3] WEAPONTYPE_TEC9 30000 //2 guys who are going to blow up the box and come through GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2404.7 1545.5 1.1 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2404.7 1545.5 1.1 w5_goons[4] SET_CHAR_HEADING w5_goons[4] 266.2 SET_CHAR_DECISION_MAKER w5_goons[4] w5_empty_decisions //SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[4] TRUE GIVE_WEAPON_TO_CHAR w5_goons[4] WEAPONTYPE_TEC9 30000 GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2406.4 1544.7 1.1 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2406.4 1544.7 1.1 w5_goons[5] SET_CHAR_HEADING w5_goons[5] 256.3 SET_CHAR_DECISION_MAKER w5_goons[5] w5_empty_decisions //SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_goons[5] TRUE GIVE_WEAPON_TO_CHAR w5_goons[5] WEAPONTYPE_TEC9 30000 IF NOT IS_CHAR_DEAD w5_goons[9] OPEN_SEQUENCE_TASK w5_seq TASK_GO_STRAIGHT_TO_COORD -1 -2372.5 1551.0 1.1 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[9] w5_seq CLEAR_SEQUENCE_TASK w5_seq REMOVE_BLIP w5_blip ADD_BLIP_FOR_CHAR w5_goons[9] w5_blip ENDIF //create refugee leader guy - this guy needs to be in the box to make sure player isn't throwing grenades at it CLEAR_AREA -2370.3 1551.9 1.2 30.0 TRUE CREATE_CHAR PEDTYPE_MISSION5 OMOBOAT -2370.3 1551.9 1.2 w5_refugees[3] SET_CHAR_HEADING w5_refugees[3] 96.2 SET_CHAR_DECISION_MAKER w5_refugees[3] w5_empty_decisions SET_CHAR_ONLY_DAMAGED_BY_PLAYER w5_refugees[3] TRUE SET_CHAR_NEVER_TARGETTED w5_refugees[3] TRUE SET_FIXED_CAMERA_POSITION -2375.2 1555.9 1.6 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2368.9 1547.7 3.8 JUMP_CUT SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE //setting player in place CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_AREA -2435.6 1551.1 4.0 1.0 TRUE SET_CHAR_COORDINATES scplayer -2435.6 1551.1 4.0 SET_CHAR_HEADING scplayer 280.8 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE w5_skip_cutscene_flag = 1 SKIP_CUTSCENE_START timera = 0 w5_control_flag = 2 ENDIF ENDIF IF w5_control_flag = 2 IF NOT IS_CHAR_DEAD w5_goons[9] IF LOCATE_CHAR_ANY_MEANS_2D w5_goons[9] -2372.5 1551.0 1.0 1.0 FALSE //Keep it down, you want to bring the snakehead down here? w5_speech_goals = 6 w5_speech_control_flag = 0 GOSUB w5_dialogue_setup w5_control_flag = 3 ENDIF ENDIF ENDIF IF w5_control_flag = 3 IF w5_speech_goals = 0 IF NOT IS_CHAR_DEAD w5_goons[9] OPEN_SEQUENCE_TASK w5_seq TASK_GO_STRAIGHT_TO_COORD -1 -2376.8 1546.7 1.1 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[9] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_control_flag = 4 ENDIF ENDIF ENDIF IF w5_control_flag = 4 IF timera > 6000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF IF NOT IS_CHAR_DEAD w5_goons[0] OPEN_SEQUENCE_TASK w5_seq TASK_GO_STRAIGHT_TO_COORD -1 -2410.7 1548.2 1.1 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 90.0 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[0] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF IF NOT IS_CHAR_DEAD w5_goons[1] OPEN_SEQUENCE_TASK w5_seq TASK_PAUSE -1 10 TASK_GO_STRAIGHT_TO_COORD -1 -2409.9 1551.0 1.1 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 181.1 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[1] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF IF NOT IS_CHAR_DEAD w5_goons[2] OPEN_SEQUENCE_TASK w5_seq TASK_PAUSE -1 15 TASK_GO_STRAIGHT_TO_COORD -1 -2406.3 1554.0 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2406.7 1553.8 1.1 PEDMOVE_WALK -1 //TASK_ACHIEVE_HEADING -1 90.0 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[2] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF SET_FIXED_CAMERA_POSITION -2414.9 1547.8 2.3 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2409.7 1549.5 1.9 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF //Not long until we're drinking cola in the free West, eh w5_speech_goals = 7 w5_speech_control_flag = 0 w5_random_last_label = 1 GOSUB w5_dialogue_setup timera = 0 w5_control_flag = 5 ENDIF ENDIF IF w5_control_flag = 5 IF NOT IS_CHAR_DEAD w5_goons[0] GET_SCRIPT_TASK_STATUS w5_goons[0] PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK IF NOT IS_CHAR_DEAD w5_goons[0] OPEN_SEQUENCE_TASK w5_seq TASK_AIM_GUN_AT_COORD -1 -2417.5 1548.2 2.1 5000 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[0] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF IF NOT IS_CHAR_DEAD w5_goons[1] OPEN_SEQUENCE_TASK w5_seq TASK_GO_STRAIGHT_TO_COORD -1 -2405.0 1551.0 1.1 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 261.2 TASK_CLIMB -1 TRUE TASK_ACHIEVE_HEADING -1 90.0 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[1] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF IF NOT IS_CHAR_DEAD w5_goons[2] OPEN_SEQUENCE_TASK w5_seq TASK_GO_STRAIGHT_TO_COORD -1 -2394.0 1554.4 1.1 PEDMOVE_SPRINT -1 TASK_GO_STRAIGHT_TO_COORD -1 -2393.5 1545.1 1.1 PEDMOVE_SPRINT -1 TASK_ACHIEVE_HEADING -1 0.0 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[2] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF //Hey, who the fuck are you? w5_speech_goals = 7 w5_speech_control_flag = 1 w5_random_last_label = 2 GOSUB w5_dialogue_setup w5_control_flag = 6 ENDIF ENDIF ENDIF IF w5_control_flag = 6 IF w5_speech_goals = 0 timera = 0 w5_control_flag = 7 ENDIF ENDIF IF w5_control_flag = 7 IF timera > 800 w5_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF //if cutscene is skipped IF w5_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 w5_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF IF NOT IS_CHAR_DEAD w5_goons[0] CLEAR_CHAR_TASKS_IMMEDIATELY w5_goons[0] CLEAR_AREA -2410.7 1548.2 1.1 1.0 TRUE SET_CHAR_COORDINATES w5_goons[0] -2410.7 1548.2 1.1 SET_CHAR_HEADING w5_goons[0] 90.0 ENDIF IF NOT IS_CHAR_DEAD w5_goons[1] CLEAR_CHAR_TASKS_IMMEDIATELY w5_goons[1] CLEAR_AREA -2405.0 1551.0 1.1 1.0 TRUE SET_CHAR_COORDINATES w5_goons[1] -2405.0 1551.0 1.1 SET_CHAR_HEADING w5_goons[1] 90.0 ENDIF IF NOT IS_CHAR_DEAD w5_goons[2] CLEAR_CHAR_TASKS_IMMEDIATELY w5_goons[2] CLEAR_AREA -2393.5 1545.1 1.1 1.0 TRUE SET_CHAR_COORDINATES w5_goons[2] -2393.5 1545.1 1.1 SET_CHAR_HEADING w5_goons[2] 0.0 ENDIF ENDIF CLEAR_MISSION_AUDIO 3 IF NOT IS_CHAR_DEAD w5_goons[0] SET_CHAR_DECISION_MAKER w5_goons[0] w5_ped_decisions ENDIF IF NOT IS_CHAR_DEAD w5_goons[1] SET_CHAR_DECISION_MAKER w5_goons[1] w5_ped_decisions ENDIF IF NOT IS_CHAR_DEAD w5_goons[2] SET_CHAR_DECISION_MAKER w5_goons[2] w5_ped_decisions ENDIF IF NOT IS_CHAR_DEAD w5_goons[3] SET_CHAR_DECISION_MAKER w5_goons[3] w5_ped_decisions ENDIF IF NOT IS_CHAR_DEAD w5_goons[4] SET_CHAR_DECISION_MAKER w5_goons[4] w5_ped_decisions ENDIF IF NOT IS_CHAR_DEAD w5_goons[5] SET_CHAR_DECISION_MAKER w5_goons[5] w5_ped_decisions ENDIF IF NOT IS_CHAR_DEAD w5_goons[9] CLEAR_CHAR_TASKS w5_goons[9] CLEAR_AREA -2377.0 1535.6 1.1 1.0 TRUE SET_CHAR_COORDINATES w5_goons[9] -2377.0 1535.6 1.1 SET_CHAR_HEADING w5_goons[9] 90.0 ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_AREA -2435.6 1551.1 4.0 1.0 TRUE SET_CHAR_COORDINATES scplayer -2435.6 1551.1 4.0 SET_CHAR_HEADING scplayer 280.8 SHUT_ALL_CHARS_UP FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON CLEAR_PRINTS PRINT_NOW ( WUZ4_05 ) 4000 1 //Take out the refugees guard. //skipping cutscene IF w5_skip_cutscene_flag = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF ENDIF w5_speech_flag = 0 w5_control_flag = 0 w5_goals = 4 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////Going down to see the refugees////////////////////////////////////////////////////////////////// IF w5_goals = 4 ///////////////////// SPEECH FOR THIS SECTION ////////////////////////// IF w5_control_flag < 5 IF IS_CHAR_IN_AREA_3D scplayer -2381.7 1546.2 0.0 -2365.1 1556.1 6.5 FALSE IF w5_speech_goals = 0 IF w5_speech_flag = 0 // Hey you, help us! w5_speech_goals = 9 w5_speech_control_flag = 0 w5_random_last_label = 1 GOSUB w5_dialogue_setup w5_speech_flag = 1 ENDIF ENDIF IF w5_speech_goals = 0 IF w5_speech_flag = 1 //Hey, please, help us! w5_speech_goals = 9 w5_speech_control_flag = 1 w5_random_last_label = 2 GOSUB w5_dialogue_setup w5_speech_flag = 2 ENDIF ENDIF ENDIF ENDIF ///////////////////// REFUGEE DEATH CHECK ////////////////////////// IF IS_CHAR_DEAD w5_refugees[3] CLEAR_PRINTS PRINT_NOW ( WUZ4_03 ) 4000 1 //One of the refugees died! GOTO mission_wuzi5_failed ENDIF //////////////////// MAIN BIT OF THE MISSION //////////////////////////// IF w5_control_flag = 0 ///////////////DEBUG//////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q IF NOT IS_CHAR_DEAD w5_goons[9] EXPLODE_CHAR_HEAD w5_goons[9] ENDIF SET_CHAR_COORDINATES scplayer -2374.0 1551.0 2.0 ENDIF ///////////////DEBUG//////////////////// IF NOT IS_CHAR_DEAD w5_goons[9] IF IS_CHAR_IN_AREA_3D scplayer -2370.4 1533.6 1.1 -2408.5 1537.4 5.2 FALSE //CLEAR_CHAR_LAST_DAMAGE_ENTITY w5_goons[9] TASK_SHOOT_AT_COORD w5_goons[9] -2400.1 1535.3 1.1 500 //Stick this up your ass! w5_speech_goals = 8 w5_speech_control_flag = 0 GOSUB w5_dialogue_setup w5_control_flag = 1 ENDIF IF IS_CHAR_IN_AREA_3D scplayer -2375.1 1556.2 1.1 -2379.2 1537.3 5.2 FALSE //CLEAR_CHAR_LAST_DAMAGE_ENTITY w5_goons[9] TASK_SHOOT_AT_COORD w5_goons[9] -2377.0 1552.4 1.1 500 //Stick this up your ass! w5_speech_goals = 8 w5_speech_control_flag = 0 GOSUB w5_dialogue_setup w5_control_flag = 1 ENDIF IF NOT IS_CHAR_IN_AREA_3D scplayer -2375.1 1556.2 1.1 -2379.2 1537.3 5.2 FALSE IF NOT IS_CHAR_IN_AREA_3D scplayer -2370.4 1533.6 1.1 -2408.5 1537.4 5.2 FALSE IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR w5_goons[9] scplayer REMOVE_WEAPON_FROM_CHAR w5_goons[9] WEAPONTYPE_GRENADE GIVE_WEAPON_TO_CHAR w5_goons[9] WEAPONTYPE_TEC9 30000 SET_CURRENT_CHAR_WEAPON w5_goons[9] WEAPONTYPE_TEC9 TASK_KILL_CHAR_ON_FOOT w5_goons[9] scplayer w5_control_flag = 3 ENDIF ENDIF ENDIF ELSE w5_control_flag = 3 ENDIF ENDIF IF w5_control_flag = 1 IF NOT IS_CHAR_DEAD w5_goons[9] GET_SCRIPT_TASK_STATUS w5_goons[9] TASK_SHOOT_AT_COORD task_status IF task_status = FINISHED_TASK GIVE_WEAPON_TO_CHAR w5_goons[9] WEAPONTYPE_TEC9 30000 OPEN_SEQUENCE_TASK w5_seq TASK_GO_STRAIGHT_TO_COORD -1 -2377.4 1539.1 1.1 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 90.0 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[9] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_control_flag = 2 ENDIF ELSE w5_control_flag = 3 ENDIF ENDIF IF w5_control_flag = 2 IF NOT IS_CHAR_DEAD w5_goons[9] GET_SCRIPT_TASK_STATUS w5_goons[9] PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK IF IS_CHAR_IN_AREA_3D scplayer -2370.4 1533.6 0.0 -2408.5 1537.4 4.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR scplayer w5_goons[9] OPEN_SEQUENCE_TASK w5_seq TASK_WEAPON_ROLL -1 FALSE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[9] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_control_flag = 3 ENDIF IF IS_CHAR_IN_AREA_3D scplayer -2375.1 1556.2 1.1 -2379.2 1537.3 5.2 FALSE OPEN_SEQUENCE_TASK w5_seq TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[9] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_control_flag = 3 ENDIF ENDIF ELSE w5_control_flag = 3 ENDIF ENDIF IF w5_control_flag = 3 IF IS_CHAR_DEAD w5_goons[9] MAKE_OBJECT_TARGETTABLE w5_refugee_container_padlock TRUE REMOVE_BLIP w5_blip ADD_BLIP_FOR_OBJECT w5_refugee_container_padlock w5_blip IF DOES_OBJECT_EXIST w5_refugee_container_padlock ///debug GET_OBJECT_HEALTH w5_refugee_container_padlock w5_debug_health IF NOT w5_debug_health < 999 PRINT_NOW ( WUZ4_09 ) 11000 1 //Shoot the padlock on the front of the container. ENDIF ENDIF w5_control_flag = 4 ENDIF ENDIF //waiting for player to destroy padlock IF w5_control_flag = 4 IF DOES_OBJECT_EXIST w5_refugee_container_padlock ///debug GET_OBJECT_HEALTH w5_refugee_container_padlock w5_debug_health IF w5_debug_health < 999 BREAK_OBJECT w5_refugee_container_padlock FALSE timera = 0 w5_control_flag = 5 ENDIF ELSE timera = 0 w5_control_flag = 5 ENDIF ENDIF IF w5_control_flag = 5 IF timera > 1000 /* DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF */ CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 w5_speech_goals = 0 CLEAR_PRINTS SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR SHUT_ALL_CHARS_UP TRUE DELETE_OBJECT w5_refugee_container_padlock CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE w5_empty_decisions EVENT_POTENTIAL_WALK_INTO_PED CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE w5_empty_decisions EVENT_POTENTIAL_WALK_INTO_OBJECT MARK_MODEL_AS_NO_LONGER_NEEDED grenade LOAD_MISSION_AUDIO 3 SOUND_BANK_DA_NANG WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE REQUEST_MODEL KATANA REQUEST_MODEL OMOKUNG REQUEST_MODEL OMOST REQUEST_ANIMATION GANGS LOAD_ALL_MODELS_NOW GOSUB w5_creating_refugees CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_AREA -2373.9 1552.1 1.1 1.0 TRUE SET_CHAR_COORDINATES scplayer -2373.9 1552.1 1.1 SET_CHAR_HEADING scplayer 267.0 SET_FIXED_CAMERA_POSITION -2375.0 1547.2 2.0 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2370.9 1555.3 2.7 JUMP_CUT //creating last guys /* //bodyguard 1 in cabin leaning against the wall GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2477.0 1550.6 32.2 w5_cabin_crew[0] SET_CHAR_HEADING w5_cabin_crew[0] 162.8 SET_CHAR_DECISION_MAKER w5_cabin_crew[0] w5_empty_decisions GIVE_WEAPON_TO_CHAR w5_cabin_crew[0] WEAPONTYPE_TEC9 3000 SET_CHAR_STAY_IN_SAME_PLACE w5_cabin_crew[0] TRUE //bodyguard 2 in cabin next to head honcho GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2470.8 1544.8 32.2 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2470.8 1544.8 32.2 w5_cabin_crew[1] SET_CHAR_HEADING w5_cabin_crew[1] 270.0 SET_CHAR_DECISION_MAKER w5_cabin_crew[1] w5_ped_decisions GIVE_WEAPON_TO_CHAR w5_cabin_crew[1] WEAPONTYPE_TEC9 3000 SET_CHAR_STAY_IN_SAME_PLACE w5_cabin_crew[1] TRUE ADD_BLIP_FOR_CHAR w5_cabin_crew[1] w5_blip2 CHANGE_BLIP_SCALE w5_blip2 1 */ //bodyguard 3 on stairs right GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2473.3 1536.3 27.8 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2473.3 1536.3 27.8 w5_cabin_crew[2] SET_CHAR_HEADING w5_cabin_crew[2] 12.6 SET_CHAR_DECISION_MAKER w5_cabin_crew[2] w5_ped_decisions GIVE_WEAPON_TO_CHAR w5_cabin_crew[2] WEAPONTYPE_TEC9 3000 SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_cabin_crew[2] TRUE //bodyguard 4 on stairs left GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2476.3 1536.3 27.8 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2476.3 1536.3 27.8 w5_cabin_crew[3] SET_CHAR_HEADING w5_cabin_crew[3] 321.5 SET_CHAR_DECISION_MAKER w5_cabin_crew[3] w5_ped_decisions GIVE_WEAPON_TO_CHAR w5_cabin_crew[3] WEAPONTYPE_TEC9 3000 SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_cabin_crew[3] TRUE //bodyguard 5 on walkway GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CLEAR_AREA -2470.3 1546.9 22.6 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2470.3 1546.9 22.6 w5_cabin_crew[4] SET_CHAR_HEADING w5_cabin_crew[4] 265.4 SET_CHAR_DECISION_MAKER w5_cabin_crew[4] w5_ped_decisions GIVE_WEAPON_TO_CHAR w5_cabin_crew[4] WEAPONTYPE_TEC9 3000 SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_cabin_crew[4] TRUE //head honcho with katana CLEAR_AREA -2471.5 1548.2 32.2 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 OMOKUNG -2471.5 1548.2 32.2 w5_head_honcho SET_CHAR_HEADING w5_head_honcho 130.0 GIVE_WEAPON_TO_CHAR w5_head_honcho WEAPONTYPE_KATANA 1 SET_CHAR_SHOOT_RATE w5_head_honcho 70 //SET_CHAR_KINDA_STAY_IN_SAME_PLACE w5_head_honcho TRUE REMOVE_BLIP w5_blip ADD_BLIP_FOR_CHAR w5_head_honcho w5_blip CHANGE_BLIP_SCALE w5_blip 1 SET_CHAR_DECISION_MAKER w5_head_honcho w5_empty_decisions TASK_PLAY_ANIM_NON_INTERRUPTABLE w5_head_honcho Tai_Chi_Loop PARK 4.0 TRUE FALSE FALSE FALSE -1 /* DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF */ w5_skip_cutscene_flag = 1 SKIP_CUTSCENE_START //playing the doors opening sound REPORT_MISSION_AUDIO_EVENT_AT_POSITION -2371.55 1552.66 1.245 SOUND_DA_NANG_CONTAINER_OPEN timera = 0 w5_control_flag = 6 ENDIF ENDIF IF w5_control_flag = 6 //OPENING doors IF DOES_OBJECT_EXIST w5_refugee_container_LD ROTATE_OBJECT w5_refugee_container_LD 180.0 2.0 FALSE ENDIF IF DOES_OBJECT_EXIST w5_refugee_container_RD ROTATE_OBJECT w5_refugee_container_RD 360.0 2.0 FALSE ENDIF IF NOT IS_CHAR_DEAD w5_refugees[3] OPEN_SEQUENCE_TASK w5_seq TASK_PAUSE -1 1000 TASK_GO_STRAIGHT_TO_COORD -1 -2372.8 1551.8 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2374.4 1551.9 1.1 PEDMOVE_WALK -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_refugees[3] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF IF timera > 2000 IF NOT IS_CHAR_DEAD w5_refugees[0] OPEN_SEQUENCE_TASK w5_seq TASK_PAUSE -1 900 TASK_GO_STRAIGHT_TO_COORD -1 -2372.8 1552.1 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2373.4 1553.3 1.1 PEDMOVE_WALK -1 TASK_PLAY_ANIM -1 idle_tired PED 4.0 FALSE FALSE FALSE FALSE 4000 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_refugees[0] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF IF NOT IS_CHAR_DEAD w5_refugees[1] OPEN_SEQUENCE_TASK w5_seq TASK_PAUSE -1 2000 TASK_GO_STRAIGHT_TO_COORD -1 -2372.8 1552.1 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2374.1 1550.6 1.1 PEDMOVE_WALK -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_refugees[1] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF IF NOT IS_CHAR_DEAD w5_refugees[2] OPEN_SEQUENCE_TASK w5_seq TASK_PAUSE -1 2500 TASK_GO_STRAIGHT_TO_COORD -1 -2372.8 1552.1 1.1 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 6.7 //TASK_PLAY_ANIM -1 idle_tired PED 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_refugees[2] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF CLEAR_AREA -2376.1 1552.5 1.1 1.0 TRUE SET_CHAR_COORDINATES scplayer -2376.1 1552.5 1.1 SET_CHAR_HEADING scplayer 264.4 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_FIXED_CAMERA_POSITION -2376.9 1554.3 2.0 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2370.6 1549.7 2.7 JUMP_CUT timera = 0 w5_control_flag = 7 ENDIF ENDIF IF w5_control_flag = 7 IF NOT IS_CHAR_DEAD w5_refugees[3] GET_SCRIPT_TASK_STATUS w5_refugees[3] PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK OPEN_SEQUENCE_TASK w5_seq TASK_PLAY_ANIM -1 prtial_gngtlkE GANGS 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_refugees[3] w5_seq CLEAR_SEQUENCE_TASK w5_seq //refugees talking to player w5_speech_goals = 10 w5_speech_control_flag = 0 w5_random_last_label = 2 GOSUB w5_dialogue_setup w5_control_flag = 8 ENDIF ENDIF ENDIF IF w5_control_flag = 8 IF timera > 6000 IF w5_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF LOAD_SCENE -2465.5 1547.1 22.7 IF NOT IS_CHAR_DEAD w5_cabin_crew[4] OPEN_SEQUENCE_TASK w5_seq TASK_GO_STRAIGHT_TO_COORD -1 -2468.9 1547.2 22.7 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2465.5 1547.1 22.7 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_cabin_crew[4] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF SET_FIXED_CAMERA_POSITION -2460.0 1552.1 22.9 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2468.1 1543.8 25.9 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF //playing doors opening sound. REPORT_MISSION_AUDIO_EVENT_AT_POSITION -2468.0 1547.3 22.8 SOUND_DA_NANG_HEAVY_DOOR_OPEN timera = 0 w5_control_flag = 9 ENDIF ENDIF ENDIF IF w5_control_flag = 9 IF DOES_OBJECT_EXIST w5_storm_freighter_door ROTATE_OBJECT w5_storm_freighter_door 90.0 2.0 FALSE ENDIF IF timera > 6000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF LOAD_SCENE -2471.5 1548.2 32.2 SET_FIXED_CAMERA_POSITION -2476.5 1546.5 33.8 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2462.6 1546.8 32.7 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF //The Snakehead is up on the bridge... w5_speech_goals = 10 w5_speech_control_flag = 2 w5_random_last_label = 3 GOSUB w5_dialogue_setup timera = 0 w5_control_flag = 10 ENDIF ENDIF IF w5_control_flag = 10 IF timera > 7000 w5_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF IF w5_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 w5_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF ENDIF CLEAR_MISSION_AUDIO 3 IF NOT IS_CHAR_DEAD w5_refugees[0] CLEAR_CHAR_TASKS_IMMEDIATELY w5_refugees[0] CLEAR_AREA -2373.4 1553.3 1.1 1.0 TRUE SET_CHAR_COORDINATES w5_refugees[0] -2373.4 1553.3 1.1 SET_CHAR_HEADING w5_refugees[0] 120.0 OPEN_SEQUENCE_TASK w5_seq TASK_GO_STRAIGHT_TO_COORD -1 -2377.1 1546.4 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2377.2 1535.3 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2404.0 1534.8 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2407.6 1544.3 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2393.1 1546.5 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2393.4 1554.2 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2405.2 1554.5 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2432.3 1544.7 1.1 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_refugees[0] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF IF NOT IS_CHAR_DEAD w5_refugees[1] CLEAR_CHAR_TASKS_IMMEDIATELY w5_refugees[1] CLEAR_AREA -2374.1 1550.6 1.1 1.0 TRUE SET_CHAR_COORDINATES w5_refugees[1] -2374.1 1550.6 1.1 SET_CHAR_HEADING w5_refugees[1] 63.1 OPEN_SEQUENCE_TASK w5_seq TASK_GO_STRAIGHT_TO_COORD -1 -2377.1 1546.4 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2377.2 1535.3 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2404.0 1534.8 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2407.6 1544.3 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2393.1 1546.5 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2393.4 1554.2 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2405.2 1554.5 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2430.6 1543.7 1.1 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_refugees[1] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF IF NOT IS_CHAR_DEAD w5_refugees[2] CLEAR_CHAR_TASKS_IMMEDIATELY w5_refugees[2] CLEAR_AREA -2372.8 1552.1 1.1 1.0 TRUE SET_CHAR_COORDINATES w5_refugees[2] -2372.8 1552.1 1.1 SET_CHAR_HEADING w5_refugees[2] 90.0 OPEN_SEQUENCE_TASK w5_seq TASK_GO_STRAIGHT_TO_COORD -1 -2377.1 1546.4 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2377.2 1535.3 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2404.0 1534.8 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2407.6 1544.3 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2393.1 1546.5 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2393.4 1554.2 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2405.2 1554.5 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2430.4 1545.8 1.1 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_refugees[2] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF IF NOT IS_CHAR_DEAD w5_refugees[3] CLEAR_CHAR_TASKS_IMMEDIATELY w5_refugees[3] CLEAR_AREA -2374.4 1551.9 1.1 1.0 TRUE SET_CHAR_COORDINATES w5_refugees[3] -2374.4 1551.9 1.1 SET_CHAR_HEADING w5_refugees[3] 90.0 OPEN_SEQUENCE_TASK w5_seq TASK_GO_STRAIGHT_TO_COORD -1 -2377.1 1546.4 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2377.2 1535.3 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2404.0 1534.8 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2407.6 1544.3 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2393.1 1546.5 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2393.4 1554.2 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2405.2 1554.5 1.1 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -2428.4 1544.6 1.1 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_refugees[3] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF IF DOES_OBJECT_EXIST w5_refugee_container_LD ROTATE_OBJECT w5_refugee_container_LD 180.0 360.0 FALSE ENDIF IF DOES_OBJECT_EXIST w5_refugee_container_RD ROTATE_OBJECT w5_refugee_container_RD 360.0 360.0 FALSE ENDIF IF DOES_OBJECT_EXIST w5_storm_freighter_door ROTATE_OBJECT w5_storm_freighter_door 90.0 100.0 FALSE ENDIF IF NOT IS_CHAR_DEAD w5_cabin_crew[4] CLEAR_AREA -2466.9 1546.9 22.7 30.0 TRUE SET_CHAR_COORDINATES w5_cabin_crew[4] -2466.9 1546.9 22.7 ENDIF IF NOT IS_CHAR_DEAD w5_head_honcho CLEAR_CHAR_TASKS w5_head_honcho ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED CJ_Padlock ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE w5_empty_decisions EVENT_POTENTIAL_WALK_INTO_OBJECT TASK_COMPLEX_WALK_ROUND_OBJECT 0.0 100.0 0.0 0.0 FALSE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE w5_empty_decisions EVENT_POTENTIAL_WALK_INTO_PED TASK_COMPLEX_AVOID_OTHER_PED_WHILE_WANDERING 0.0 100.0 0.0 0.0 FALSE TRUE SHUT_ALL_CHARS_UP FALSE LVAR_INT nHealth nHealth = 100 GET_INT_STAT MAX_HEALTH nHealth SET_CHAR_HEALTH scplayer nHealth //SET_CHAR_HEALTH scplayer 100 REMOVE_ANIMATION PARK REMOVE_ANIMATION GANGS CLEAR_PRINTS HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON PRINT_NOW ( BRIDGE ) 7000 1 //Leave no one alive on the bridge! //skipping cutscene IF w5_skip_cutscene_flag = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF ENDIF w5_control_flag = 0 w5_goals = 5 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////Player has to make his way up to kill the katanaboss//////////////////////////////////////////// IF w5_goals = 5 // REFUGEE DEATH CHECKS IF w5_goals = 5 IF w5_refugees_flag < 4 IF IS_CHAR_DEAD w5_refugees[w5_refugees_flag] CLEAR_PRINTS PRINT_NOW ( WUZ4_03 ) 4000 1 //One of the refugees died! GOTO mission_wuzi5_failed ENDIF w5_refugees_flag ++ ELSE w5_refugees_flag = 0 ENDIF ENDIF // MAIN BIT IF w5_control_flag = 0 ///////////////DEBUG//////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q SET_CHAR_COORDINATES scplayer -2477.4 1537.0 27.8 ENDIF ///////////////DEBUG//////////////////// IF IS_CHAR_IN_AREA_3D scplayer -2476.4 1538.0 29.8 -2479.2 1550.5 35.2 FALSE DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 w5_speech_goals = 0 /* IF NOT IS_CHAR_DEAD w5_cabin_crew[1] CLEAR_CHAR_TASKS_IMMEDIATELY w5_cabin_crew[1] CLEAR_AREA -2472.3 1552.6 32.2 1.0 TRUE SET_CHAR_COORDINATES w5_cabin_crew[1] -2472.3 1552.6 32.2 SET_CHAR_HEADING w5_cabin_crew[1] 145.8 SET_CHAR_DECISION_MAKER w5_cabin_crew[1] w5_empty_decisions ENDIF */ CLEAR_AREA -2466.9 1546.9 22.7 30.0 TRUE CLEAR_AREA -2478.4 1539.0 29.5 1.0 TRUE SET_CHAR_COORDINATES scplayer -2478.4 1539.0 29.5 SET_CHAR_HEADING scplayer 0.0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SHUT_ALL_CHARS_UP TRUE REQUEST_MODEL Katana_Anim REQUEST_MODEL Katana_LHand REQUEST_ANIMATION MISC LOAD_ALL_MODELS_NOW CREATE_OBJECT Katana_Anim -2472.6 1538.5 32.3 w5_kat_anim IF NOT IS_CHAR_DEAD w5_head_honcho CLEAR_CHAR_TASKS_IMMEDIATELY w5_head_honcho CLEAR_AREA -2472.3 1551.5 32.2 1.0 TRUE SET_CHAR_COORDINATES w5_head_honcho -2472.3 1551.5 32.2 SET_CHAR_HEADING w5_head_honcho 135.0 CREATE_OBJECT Katana_LHand -2117.0 654.0 59.7 w5_kat_lh TASK_PICK_UP_OBJECT w5_head_honcho w5_kat_lh 0.0 0.0 0.0 PED_HANDL HOLD_ORIENTATE_BONE_FULL NULL NULL FALSE ENDIF IF NOT IS_CHAR_DEAD w5_cabin_crew[2] SET_CHAR_DECISION_MAKER w5_cabin_crew[2] w5_empty_decisions CLEAR_CHAR_TASKS_IMMEDIATELY w5_cabin_crew[2] ENDIF IF NOT IS_CHAR_DEAD w5_cabin_crew[3] SET_CHAR_DECISION_MAKER w5_cabin_crew[3] w5_empty_decisions CLEAR_CHAR_TASKS_IMMEDIATELY w5_cabin_crew[3] ENDIF IF NOT IS_CHAR_DEAD w5_cabin_crew[4] SET_CHAR_DECISION_MAKER w5_cabin_crew[4] w5_empty_decisions CLEAR_CHAR_TASKS_IMMEDIATELY w5_cabin_crew[4] ENDIF IF NOT IS_CHAR_DEAD w5_head_honcho GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS w5_head_honcho 0.0 4.0 -1.0 w5_x w5_y w5_z ENDIF OPEN_SEQUENCE_TASK w5_seq TASK_GO_STRAIGHT_TO_COORD -1 -2477.9 1543.7 31.7 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 w5_x w5_y w5_z PEDMOVE_WALK -1 IF NOT IS_CHAR_DEAD w5_head_honcho TASK_TURN_CHAR_TO_FACE_CHAR -1 w5_head_honcho ENDIF CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK scplayer w5_seq CLEAR_SEQUENCE_TASK w5_seq SET_FIXED_CAMERA_POSITION -2472.8 1554.0 33.5 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2474.5 1542.2 33.2 JUMP_CUT DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF timera = 0 w5_skip_cutscene_flag = 1 SKIP_CUTSCENE_START w5_control_flag = 1 ENDIF ENDIF IF w5_control_flag = 1 GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK //Enough! We settle this here! w5_speech_goals = 13 w5_speech_control_flag = 0 GOSUB w5_dialogue_setup CLEAR_AREA w5_x w5_y w5_z 1.0 TRUE SET_CHAR_COORDINATES scplayer w5_x w5_y w5_z SET_CHAR_HEADING scplayer 315.0 IF NOT IS_CHAR_DEAD w5_head_honcho IF DOES_OBJECT_EXIST w5_kat_lh DELETE_OBJECT w5_kat_lh GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS w5_head_honcho 0.0 2.0 -1.0 w5_x w5_y w5_z SET_OBJECT_COORDINATES w5_kat_anim w5_x w5_y w5_z SET_OBJECT_HEADING w5_kat_anim 315.0 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS w5_head_honcho 0.0 4.0 0.0 w5_x w5_y w5_z CLEAR_CHAR_TASKS_IMMEDIATELY w5_head_honcho TASK_PLAY_ANIM w5_head_honcho KAT_Throw_K MISC 1000.0 FALSE FALSE FALSE FALSE -1 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_PLAY_ANIM scplayer KAT_Throw_P MISC 1000.0 FALSE FALSE FALSE FALSE -1 SET_FIXED_CAMERA_POSITION -2475.1 1547.1 33.3 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2472.2 1553.0 33.7 JUMP_CUT w5_control_flag = 3 ENDIF ENDIF ENDIF ENDIF IF w5_control_flag = 3 IF DOES_OBJECT_EXIST w5_kat_anim IF NOT IS_CHAR_DEAD w5_head_honcho IF IS_CHAR_PLAYING_ANIM scplayer KAT_Throw_P GET_CHAR_ANIM_CURRENT_TIME scplayer KAT_Throw_P w5_anim_time IF IS_OBJECT_PLAYING_ANIM w5_kat_anim KAT_Throw_O SET_OBJECT_ANIM_CURRENT_TIME w5_kat_anim KAT_Throw_O w5_anim_time ELSE IF PLAY_OBJECT_ANIM w5_kat_anim KAT_Throw_O MISC 10000.0 FALSE FALSE SET_OBJECT_ANIM_SPEED w5_kat_anim KAT_Throw_O 0.0 ENDIF ENDIF ENDIF IF IS_CHAR_PLAYING_ANIM scplayer KAT_Throw_P GET_CHAR_ANIM_CURRENT_TIME scplayer KAT_Throw_P w5_anim_time IF w5_anim_time = 1.0 DELETE_OBJECT w5_kat_anim w5_control_flag = 4 ENDIF ENDIF ENDIF ENDIF ENDIF IF w5_control_flag = 4 IF w5_speech_goals = 0 IF timera > 8000 w5_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF IF w5_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 w5_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF DELETE_OBJECT w5_kat_lh DELETE_OBJECT w5_kat_anim IF NOT IS_CHAR_DEAD w5_head_honcho CLEAR_CHAR_TASKS_IMMEDIATELY w5_head_honcho ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_AREA -2475.5 1546.7 32.2 1.0 TRUE SET_CHAR_COORDINATES scplayer -2475.5 1546.7 32.2 SET_CHAR_HEADING scplayer 315.0 ENDIF IF NOT IS_CHAR_DEAD w5_refugees[0] CLEAR_CHAR_TASKS_IMMEDIATELY w5_refugees[0] CLEAR_AREA -2439.5 1561.3 16.3 1.0 TRUE SET_CHAR_COORDINATES w5_refugees[0] -2439.5 1561.3 16.3 SET_CHAR_HEADING w5_refugees[0] 11.0 ENDIF IF NOT IS_CHAR_DEAD w5_refugees[1] CLEAR_CHAR_TASKS_IMMEDIATELY w5_refugees[1] CLEAR_AREA -2437.7 1561.5 16.3 1.0 TRUE SET_CHAR_COORDINATES w5_refugees[1] -2437.7 1561.5 16.3 SET_CHAR_HEADING w5_refugees[1] 177.5 ENDIF IF NOT IS_CHAR_DEAD w5_refugees[2] CLEAR_CHAR_TASKS_IMMEDIATELY w5_refugees[2] CLEAR_AREA -2438.8 1560.0 16.3 1.0 TRUE SET_CHAR_COORDINATES w5_refugees[2] -2438.8 1560.0 16.3 SET_CHAR_HEADING w5_refugees[2] 183.9 ENDIF IF NOT IS_CHAR_DEAD w5_refugees[3] CLEAR_CHAR_TASKS_IMMEDIATELY w5_refugees[3] CLEAR_AREA -2436.6 1561.8 16.3 1.0 TRUE SET_CHAR_COORDINATES w5_refugees[3] -2436.6 1561.8 16.3 SET_CHAR_HEADING w5_refugees[3] 9.5 ENDIF IF NOT IS_CHAR_DEAD w5_head_honcho CLEAR_AREA -2472.7 1551.4 32.2 1.0 TRUE SET_CHAR_COORDINATES w5_head_honcho -2472.7 1551.4 32.2 TASK_KILL_CHAR_ON_FOOT w5_head_honcho scplayer SET_CHAR_DECISION_MAKER w5_head_honcho w5_ped_decisions ENDIF /* IF NOT IS_CHAR_DEAD w5_cabin_crew[1] //SET_CHAR_COORDINATES w5_cabin_crew[1] -24472.2 1553.6 32.2 //SET_CHAR_HEADING w5_cabin_crew[1] 137.7 SET_CHAR_HEALTH w5_cabin_crew[1] 25 ENDIF */ IF NOT IS_CHAR_DEAD w5_cabin_crew[2] SET_CHAR_DECISION_MAKER w5_cabin_crew[2] w5_ped_decisions CLEAR_CHAR_TASKS_IMMEDIATELY w5_cabin_crew[2] ENDIF IF NOT IS_CHAR_DEAD w5_cabin_crew[3] SET_CHAR_DECISION_MAKER w5_cabin_crew[3] w5_ped_decisions CLEAR_CHAR_TASKS_IMMEDIATELY w5_cabin_crew[3] ENDIF IF NOT IS_CHAR_DEAD w5_cabin_crew[4] SET_CHAR_DECISION_MAKER w5_cabin_crew[4] w5_ped_decisions CLEAR_CHAR_TASKS_IMMEDIATELY w5_cabin_crew[4] ENDIF SHUT_ALL_CHARS_UP FALSE GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_KATANA 1 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_KATANA //skipping cutscene IF w5_skip_cutscene_flag = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF ENDIF w5_control_flag = 5 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD w5_head_honcho REMOVE_BLIP w5_blip ENDIF /* IF IS_CHAR_DEAD w5_cabin_crew[1] REMOVE_BLIP w5_blip2 ENDIF */ IF IS_CHAR_DEAD w5_head_honcho CLEAR_PRINTS // REMOVE_BLIP w5_blip IF NOT IS_CHAR_DEAD w5_refugees[3] ADD_BLIP_FOR_CHAR w5_refugees[3] w5_blip SET_BLIP_AS_FRIENDLY w5_blip TRUE ENDIF PRINT_NOW ( WUZ4_11 ) 4000 1 //Go back and meet the refugees. They will lower some dinghys into the water. w5_control_flag = 0 timera = 0 w5_goals = 6 /* IF IS_CHAR_DEAD w5_cabin_crew[1] CLEAR_PRINTS SET_PLAYER_CONTROL player1 OFF w5_control_flag = 0 timera = 0 w5_goals = 6 ELSE GET_SCRIPT_TASK_STATUS w5_cabin_crew[1] TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT w5_cabin_crew[1] scplayer ENDIF ENDIF */ ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////Final Cutscene showing player and refugees escaping //////////////////////////////////////////// IF w5_goals = 6 IF w5_control_flag = 0 IF w5_refugees_flag < 4 IF IS_CHAR_DEAD w5_refugees[w5_refugees_flag] CLEAR_PRINTS PRINT_NOW ( WUZ4_03 ) 4000 1 //One of the refugees died! GOTO mission_wuzi5_failed ENDIF w5_refugees_flag ++ ELSE w5_refugees_flag = 0 ENDIF IF NOT IS_CHAR_DEAD w5_refugees[3] IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer w5_refugees[3] 4.0 4.0 4.0 FALSE REMOVE_BLIP w5_blip SET_PLAYER_CONTROL player1 OFF w5_control_flag = 1 ENDIF ENDIF ENDIF IF w5_control_flag = 1 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE w5_control_flag = 2 ENDIF IF w5_control_flag = 2 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 w5_speech_goals = 0 SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SHUT_ALL_CHARS_UP TRUE SET_FIXED_CAMERA_POSITION -2425.8 1562.4 1.3 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2451.2 1582.3 3.4 JUMP_CUT REQUEST_MODEL DINGHY LOAD_ALL_MODELS_NOW CLEAR_AREA -2430.7 1563.6 0.0 5.0 TRUE CREATE_CAR DINGHY -2430.7 1563.6 0.0 w5_dinghys[0] CLEAR_AREA -2442.4 1564.6 0.0 5.0 TRUE CREATE_CAR DINGHY -2442.4 1564.6 0.0 w5_dinghys[1] CLEAR_AREA -2426.9 1570.6 0.0 5.0 TRUE CREATE_CAR DINGHY -2426.9 1570.6 0.0 w5_dinghys[2] IF NOT IS_CHAR_DEAD w5_refugees[0] ATTACH_CHAR_TO_CAR w5_refugees[0] w5_dinghys[1] 0.5 -1.0 1.0 FACING_FORWARD 360.0 WEAPONTYPE_UNARMED ENDIF IF NOT IS_CHAR_DEAD w5_refugees[1] ATTACH_CHAR_TO_CAR w5_refugees[1] w5_dinghys[1] -0.5 -1.0 1.0 FACING_FORWARD 360.0 WEAPONTYPE_UNARMED ENDIF IF NOT IS_CHAR_DEAD w5_refugees[2] WARP_CHAR_INTO_CAR w5_refugees[2] w5_dinghys[1] ENDIF IF NOT IS_CHAR_DEAD w5_refugees[3] WARP_CHAR_INTO_CAR w5_refugees[3] w5_dinghys[2] ENDIF WARP_CHAR_INTO_CAR scplayer w5_dinghys[0] //Thank you for everything! w5_speech_goals = 11 w5_speech_control_flag = 0 GOSUB w5_dialogue_setup DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE timera = 0 w5_control_flag = 3 ENDIF IF w5_control_flag = 3 IF timera > 2000 IF NOT IS_CAR_DEAD w5_dinghys[1] SET_CAR_TEMP_ACTION w5_dinghys[1] TEMPACT_GOFORWARD 5000 ENDIF IF NOT IS_CAR_DEAD w5_dinghys[2] SET_CAR_TEMP_ACTION w5_dinghys[2] TEMPACT_GOFORWARD 5000 ENDIF w5_control_flag = 4 ENDIF ENDIF IF w5_control_flag = 4 IF timera > 6000 DELETE_CAR w5_dinghys[1] DELETE_CAR w5_dinghys[2] DELETE_CHAR w5_refugees[0] DELETE_CHAR w5_refugees[1] DELETE_CHAR w5_refugees[2] DELETE_CHAR w5_refugees[3] GOTO mission_wuzi5_passed ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// What happens when player falls in water /////////////////////////////////////////////////////// IF w5_goals > 2 IF w5_water_flag = 0 IF IS_CHAR_IN_WATER scplayer REMOVE_BLIP w5_blip //REMOVE_BLIP w5_blip2 ADD_BLIP_FOR_COORD -2329.1 1528.7 0.0 w5_blip CLEAR_PRINTS PRINT_NOW ( WUZ4_02 ) 7000 1 //Swim over to the freighter. w5_water_flag = 1 ENDIF ENDIF IF w5_water_flag = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2329.1 1528.7 0.0 4.0 4.0 4.0 TRUE CLEAR_PRINTS DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 w5_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE /* MARK_MODEL_AS_NO_LONGER_NEEDED KATANA MARK_MODEL_AS_NO_LONGER_NEEDED KNIFECUR MARK_MODEL_AS_NO_LONGER_NEEDED OMOKUNG MARK_MODEL_AS_NO_LONGER_NEEDED DNB1 MARK_MODEL_AS_NO_LONGER_NEEDED DNB2 */ //creating dummy collision to stand on CREATE_OBJECT kmb_container_red -2323.9 1527.3 14.0 w5_box SET_OBJECT_COLLISION w5_box TRUE SET_OBJECT_DYNAMIC w5_box FALSE SET_OBJECT_VISIBLE w5_box FALSE WAIT 0 GOSUB w5_death_checks IF w5_deathcheck_flag = 1 GOTO mission_wuzi5_failed ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_AREA -2323.2 1530.2 16.9 1.0 TRUE SET_CHAR_COORDINATES scplayer -2323.2 1530.2 16.9 SET_CHAR_HEADING scplayer 3.3 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer OPEN_SEQUENCE_TASK w5_seq //TASK_PAUSE -1 500 TASK_CLIMB -1 TRUE TASK_ACHIEVE_HEADING -1 90.0 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK scplayer w5_seq CLEAR_SEQUENCE_TASK w5_seq SET_FIXED_CAMERA_POSITION -2320.7 1529.8 17.6 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2339.6 1537.4 22.5 JUMP_CUT DO_FADE 500 FADE_IN w5_water_flag = 2 ENDIF ENDIF IF w5_water_flag = 2 GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK CLEAR_AREA -2323.6 1531.9 16.3 1.0 TRUE SET_CHAR_COORDINATES scplayer -2323.6 1531.9 16.3 SET_CHAR_HEADING scplayer 95.3 DELETE_OBJECT w5_box REMOVE_BLIP w5_blip IF w5_goals = 3 IF w5_control_flag = 0 ADD_BLIP_FOR_COORD -2437.9 1551.9 16.3 w5_blip PRINT_NOW ( WUZ4_01 ) 7000 1 //Make your way down into the hull of the ship. ENDIF ENDIF IF w5_goals = 4 IF w5_control_flag < 4 IF NOT IS_CHAR_DEAD w5_goons[9] ADD_BLIP_FOR_CHAR w5_goons[9] w5_blip PRINT_NOW ( WUZ4_05 ) 4000 1 //Take out the refugees guard. ENDIF ELSE IF DOES_OBJECT_EXIST w5_refugee_container_padlock ADD_BLIP_FOR_OBJECT w5_refugee_container_padlock w5_blip PRINT_NOW ( WUZ4_09 ) 11000 1 //Shoot the padlock on the front of the container. ENDIF ENDIF ENDIF IF w5_goals = 5 IF NOT IS_CHAR_DEAD w5_head_honcho ADD_BLIP_FOR_CHAR w5_head_honcho w5_blip CHANGE_BLIP_SCALE w5_blip 1 ENDIF /* IF NOT IS_CHAR_DEAD w5_cabin_crew[1] ADD_BLIP_FOR_CHAR w5_cabin_crew[1] w5_blip2 CHANGE_BLIP_SCALE w5_blip2 1 ENDIF */ PRINT_NOW ( BRIDGE ) 7000 1 //Leave no one alive on the bridge! ENDIF IF w5_goals = 6 IF NOT IS_CHAR_DEAD w5_refugees[3] ADD_BLIP_FOR_CHAR w5_refugees[3] w5_blip SET_BLIP_AS_FRIENDLY w5_blip TRUE ENDIF PRINT_NOW ( WUZ4_11 ) 4000 1 //Go back and meet the refugees. They will lower some dinghys into the water. ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED kmb_container_red HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 ON w5_water_flag = 0 ENDIF ENDIF ENDIF ///ingame dialogue/// GOSUB w5_overall_dialogue GOTO mission_wuzi5_loop // Mission wuzi5 failed mission_wuzi5_failed: PRINT_BIG M_FAIL 5000 1 RETURN // mission wuzi5 passed mission_wuzi5_passed: flag_wuzi_mission_counter ++ REMOVE_BLIP wuzi_contact_blip //flag_wuzi5_mission1_passed = 1 PRINT_WITH_NUMBER_BIG ( M_PASSS ) 15000 5000 1 //"Mission Passed!" //100 being the amount of cash ADD_SCORE player1 15000//amount of cash AWARD_PLAYER_MISSION_RESPECT 30//amount of respect PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL PLAYER1 REGISTER_MISSION_PASSED WUZI_4 PLAYER_MADE_PROGRESS 1 //START_NEW_SCRIPT wuzi5_mission_loop RETURN // mission cleanup mission_cleanup_wuzi5: //SET_CAMERA_BEHIND_PLAYER IF IS_STRING_EMPTY $shop_name RESTORE_CAMERA_JUMPCUT ENDIF CLEAR_MISSION_AUDIO 3 REMOVE_BLIP w5_blip //REMOVE_BLIP w5_blip2 REMOVE_BLIP w5_goons_blip[0] REMOVE_BLIP w5_goons_blip[1] REMOVE_BLIP w5_goons_blip[2] REMOVE_BLIP w5_goons_blip[3] REMOVE_BLIP w5_goons_blip[4] REMOVE_BLIP w5_goons_blip[5] REMOVE_BLIP w5_goons_blip[6] REMOVE_BLIP w5_goons_blip[7] REMOVE_BLIP w5_goons_blip[8] MARK_MODEL_AS_NO_LONGER_NEEDED MINIGUN MARK_MODEL_AS_NO_LONGER_NEEDED TEC9 MARK_MODEL_AS_NO_LONGER_NEEDED ROCKETLA MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_MODEL_AS_NO_LONGER_NEEDED KNIFECUR MARK_MODEL_AS_NO_LONGER_NEEDED KATANA MARK_MODEL_AS_NO_LONGER_NEEDED GRENADE MARK_MODEL_AS_NO_LONGER_NEEDED MAVERICK MARK_MODEL_AS_NO_LONGER_NEEDED DINGHY MARK_MODEL_AS_NO_LONGER_NEEDED TRIADB MARK_MODEL_AS_NO_LONGER_NEEDED OMOST MARK_MODEL_AS_NO_LONGER_NEEDED OMOKUNG MARK_MODEL_AS_NO_LONGER_NEEDED OMOBOAT MARK_MODEL_AS_NO_LONGER_NEEDED DNB1 MARK_MODEL_AS_NO_LONGER_NEEDED DNB2 //MARK_MODEL_AS_NO_LONGER_NEEDED DNB2OS MARK_MODEL_AS_NO_LONGER_NEEDED kmb_container_red MARK_MODEL_AS_NO_LONGER_NEEDED Katana_Anim MARK_MODEL_AS_NO_LONGER_NEEDED Katana_LHand MARK_MODEL_AS_NO_LONGER_NEEDED CJ_CHRIS_CRATE MARK_MODEL_AS_NO_LONGER_NEEDED CJ_CHRIS_CRATE_LD MARK_MODEL_AS_NO_LONGER_NEEDED CJ_CHRIS_CRATE_RD MARK_MODEL_AS_NO_LONGER_NEEDED CJ_Padlock RELEASE_WEATHER IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF SHUT_ALL_CHARS_UP FALSE REMOVE_ANIMATION CAR_CHAT REMOVE_ANIMATION SWAT REMOVE_ANIMATION PARK REMOVE_ANIMATION MISC REMOVE_ANIMATION GANGS DETACH_CHAR_FROM_CAR scplayer REMOVE_PICKUP w5_grenades REMOVE_PICKUP w5_health REMOVE_PICKUP w5_armour REMOVE_PICKUP w5_gun GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////// GOSUBS /////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// w5_death_checks://////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF w5_goals = 0 IF IS_CHAR_DEAD w5_chopper_pilot CLEAR_PRINTS PRINT_NOW ( WUZ4_07 ) 7000 1 //You killed the helicopter pilot! w5_deathcheck_flag = 1 ENDIF IF IS_CAR_DEAD w5_chopper CLEAR_PRINTS PRINT_NOW ( WUZ4_08 ) 7000 1 //You destoyed the helicopter! w5_deathcheck_flag = 1 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// w5_creating_goons_part1://///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF w5_has_goons_been_created = 0 CREATE_PICKUP_WITH_AMMO TEC9 PICKUP_ON_STREET_SLOW 48 -2414.9 1538.7 26.0 w5_grenades CREATE_PICKUP health PICKUP_ON_STREET_SLOW -2412.4 1547.9 26.0 w5_health //guy who runs to the left side of first bit of boxes CLEAR_AREA -2355.2 1547.0 25.0 1.0 TRUE GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2355.2 1547.0 25.0 w5_goons[0] SET_CHAR_HEADING w5_goons[0] 198.7 SET_CHAR_DECISION_MAKER w5_goons[0] w5_ped_decisions SET_CHAR_STAY_IN_SAME_PLACE w5_goons[0] TRUE //guy who runs to the right side of first bit of boxes CLEAR_AREA -2355.1 1545.0 25.0 1.0 TRUE GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2355.1 1545.0 25.0 w5_goons[1] SET_CHAR_HEADING w5_goons[1] 0.6 SET_CHAR_DECISION_MAKER w5_goons[1] w5_ped_decisions SET_CHAR_STAY_IN_SAME_PLACE w5_goons[1] TRUE //making them chat with each other TASK_CHAT_WITH_CHAR w5_goons[0] w5_goons[1] TRUE TRUE TASK_CHAT_WITH_CHAR w5_goons[1] w5_goons[0] FALSE TRUE //first guy on second set of crates CLEAR_AREA -2373.0 1549.3 30.8 1.0 TRUE GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2373.0 1549.3 30.8 w5_goons[2] SET_CHAR_HEADING w5_goons[2] 355.7 SET_CHAR_DECISION_MAKER w5_goons[2] w5_ped_decisions SET_CHAR_STAY_IN_SAME_PLACE w5_goons[2] TRUE //second guy on second set of crates CLEAR_AREA -2396.3 1560.26 30.8 1.0 TRUE GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2396.3 1560.26 30.8 w5_goons[3] SET_CHAR_HEADING w5_goons[3] 356.2 SET_CHAR_DECISION_MAKER w5_goons[3] w5_ped_decisions SET_CHAR_STAY_IN_SAME_PLACE w5_goons[3] TRUE //First guy next to cabins CLEAR_AREA -2478.2 1560.9 16.3 1.0 TRUE GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2478.2 1560.9 16.3 w5_goons[4] SET_CHAR_HEADING w5_goons[4] 11.0 SET_CHAR_DECISION_MAKER w5_goons[4] w5_ped_decisions SET_CHAR_STAY_IN_SAME_PLACE w5_goons[4] TRUE //standing on the platform at the back of the boat CLEAR_AREA -2500.5 1551.0 23.2 1.0 TRUE GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2500.5 1551.0 23.2 w5_goons[5] SET_CHAR_HEADING w5_goons[5] 339.2 SET_CHAR_DECISION_MAKER w5_goons[5] w5_ped_decisions SET_CHAR_STAY_IN_SAME_PLACE w5_goons[5] TRUE //lead guy of last two on platform coming out to shoot at player CLEAR_AREA -2493.7 1537.4 23.2 1.0 TRUE GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2493.7 1537.4 23.2 w5_goons[6] SET_CHAR_HEADING w5_goons[6] 82.5 SET_CHAR_DECISION_MAKER w5_goons[6] w5_empty_decisions SET_CHAR_STAY_IN_SAME_PLACE w5_goons[6] TRUE //rear guy of last two on platform coming out to shoot at player CLEAR_AREA -2492.2 1537.3 23.2 1.0 TRUE GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2492.2 1537.3 23.2 w5_goons[7] SET_CHAR_HEADING w5_goons[7] 78.2 SET_CHAR_DECISION_MAKER w5_goons[7] w5_ped_decisions SET_CHAR_STAY_IN_SAME_PLACE w5_goons[7] TRUE //last guy before the Rocket Launcher dude CLEAR_AREA -2453.8 1529.6 27.9 1.0 TRUE GENERATE_RANDOM_INT_IN_RANGE 0 2 w5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 w5_char_select[w5_char_select_flag] -2453.8 1529.6 27.9 w5_goons[8] SET_CHAR_HEADING w5_goons[8] 174.6 SET_CHAR_DECISION_MAKER w5_goons[8] w5_ped_decisions SET_CHAR_STAY_IN_SAME_PLACE w5_goons[8] TRUE w5_has_goons_been_created = 1 ENDIF IF w5_has_goons_been_created = 1 IF w5_creating_goons_flag < 9 IF NOT IS_CHAR_DEAD w5_goons[w5_creating_goons_flag] GIVE_WEAPON_TO_CHAR w5_goons[w5_creating_goons_flag] WEAPONTYPE_TEC9 3000 ADD_BLIP_FOR_CHAR w5_goons[w5_creating_goons_flag] w5_goons_blip[w5_creating_goons_flag] CHANGE_BLIP_SCALE w5_goons_blip[w5_creating_goons_flag] 1 ENDIF w5_creating_goons_flag ++ ELSE w5_has_goons_been_created = 2 ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// w5_goons_ai://///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// //guy who runs to the left side of first bit of boxes IF NOT IS_CHAR_DEAD w5_goons[0] IF w5_goons_AI_flag[0] = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2283.6 1582.6 3.0 3.0 FALSE OPEN_SEQUENCE_TASK w5_seq TASK_SET_IGNORE_WEAPON_RANGE_FLAG -1 TRUE TASK_GO_TO_COORD_WHILE_SHOOTING -1 -2355.1 1560.0 25.0 PEDMOVE_RUN 0.5 1.0 scplayer TASK_ACHIEVE_HEADING -1 360.0 IF NOT IS_CAR_DEAD w5_chopper TASK_DESTROY_CAR -1 w5_chopper ENDIF CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[0] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_goons_AI_flag[0] = 1 ENDIF ENDIF IF w5_goons_AI_flag[0] = 1 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2392.0 1588.0 3.0 3.0 FALSE OPEN_SEQUENCE_TASK w5_seq TASK_PAUSE -1 500 TASK_GO_STRAIGHT_TO_COORD -1 -2357.6 1529.6 25.0 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 183.9 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[0] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_goons_AI_flag[0] = 2 ENDIF ENDIF IF w5_goons_AI_flag[0] = 2 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2402.6 1499.2 3.0 3.0 FALSE OPEN_SEQUENCE_TASK w5_seq IF NOT IS_CAR_DEAD w5_chopper TASK_DESTROY_CAR -1 w5_chopper ENDIF CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[0] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_goons_AI_flag[0] = 3 ENDIF ENDIF ENDIF //guy who runs to the right side of first bit of boxes IF NOT IS_CHAR_DEAD w5_goons[1] IF w5_goons_AI_flag[1] = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2283.6 1582.6 3.0 3.0 FALSE OPEN_SEQUENCE_TASK w5_seq TASK_SET_IGNORE_WEAPON_RANGE_FLAG -1 TRUE TASK_GO_TO_COORD_WHILE_SHOOTING -1 -2348.2 1546.4 25.0 PEDMOVE_RUN 0.5 1.0 scplayer TASK_GO_TO_COORD_WHILE_SHOOTING -1 -2344.1 1555.8 25.0 PEDMOVE_RUN 0.5 1.0 scplayer TASK_ACHIEVE_HEADING -1 360.0 IF NOT IS_CAR_DEAD w5_chopper TASK_DESTROY_CAR -1 w5_chopper ENDIF CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[1] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_goons_AI_flag[1] = 1 ENDIF ENDIF IF w5_goons_AI_flag[1] = 1 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2392.0 1588.0 3.0 3.0 FALSE OPEN_SEQUENCE_TASK w5_seq TASK_GO_STRAIGHT_TO_COORD -1 -2350.5 1531.5 25.0 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 155.6 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[1] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_goons_AI_flag[1] = 2 ENDIF ENDIF IF w5_goons_AI_flag[1] = 2 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2402.6 1499.2 3.0 3.0 FALSE OPEN_SEQUENCE_TASK w5_seq IF NOT IS_CAR_DEAD w5_chopper TASK_DESTROY_CAR -1 w5_chopper ENDIF CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[1] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_goons_AI_flag[1] = 3 ENDIF ENDIF ENDIF //first guy on second set of crates IF NOT IS_CHAR_DEAD w5_goons[2] IF w5_goons_AI_flag[2] = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2283.6 1582.6 3.0 3.0 FALSE OPEN_SEQUENCE_TASK w5_seq TASK_SET_IGNORE_WEAPON_RANGE_FLAG -1 TRUE TASK_GO_TO_COORD_WHILE_SHOOTING -1 -2372.1 1557.4 31.8 PEDMOVE_RUN 0.5 1.0 scplayer TASK_ACHIEVE_HEADING -1 360.0 IF NOT IS_CAR_DEAD w5_chopper TASK_DESTROY_CAR -1 w5_chopper ENDIF CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[2] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_goons_AI_flag[2] = 1 ENDIF ENDIF IF w5_goons_AI_flag[2] = 1 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2365.4 1586.9 3.0 3.0 FALSE OPEN_SEQUENCE_TASK w5_seq TASK_GO_TO_COORD_WHILE_SHOOTING -1 -2394.4 1558.4 31.8 PEDMOVE_RUN 0.5 1.0 scplayer TASK_ACHIEVE_HEADING -1 66.2 TASK_JUMP -1 TRUE TASK_GO_TO_COORD_WHILE_SHOOTING -1 -2423.0 1561.0 31.8 PEDMOVE_RUN 0.5 1.0 scplayer CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[2] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_goons_AI_flag[2] = 2 ENDIF ENDIF IF w5_goons_AI_flag[2] = 2 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2473.8 1585.5 3.0 3.0 FALSE OPEN_SEQUENCE_TASK w5_seq TASK_ACHIEVE_HEADING -1 177.3 TASK_JUMP -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 -2422.1 1547.9 22.1 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[2] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_goons_AI_flag[2] = 3 ENDIF ENDIF ENDIF //second guy on second set of crates IF NOT IS_CHAR_DEAD w5_goons[3] IF w5_goons_AI_flag[3] = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2351.3 1586.2 3.0 3.0 FALSE OPEN_SEQUENCE_TASK w5_seq TASK_SET_IGNORE_WEAPON_RANGE_FLAG -1 TRUE TASK_GO_TO_COORD_WHILE_SHOOTING -1 -2426.7 1560.3 31.8 PEDMOVE_RUN 0.5 1.0 scplayer IF NOT IS_CAR_DEAD w5_chopper TASK_DESTROY_CAR -1 w5_chopper ENDIF CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[3] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_goons_AI_flag[3] = 1 ENDIF ENDIF IF w5_goons_AI_flag[3] = 1 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2504.6 .8 3.0 3.0 FALSE OPEN_SEQUENCE_TASK w5_seq TASK_GO_STRAIGHT_TO_COORD -1 -2437.7 1560.7 16.3 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 -2435.9 1550.9 16.3 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 180.0 TASK_GO_STRAIGHT_TO_COORD -1 -2435.9 1532.3 16.3 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 -2437.5 1528.7 16.3 PEDMOVE_RUN -1 IF NOT IS_CAR_DEAD w5_chopper TASK_DESTROY_CAR -1 w5_chopper ENDIF CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[3] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_goons_AI_flag[3] = 2 ENDIF ENDIF ENDIF //First guy next to cabins IF NOT IS_CHAR_DEAD w5_goons[4] IF w5_goons_AI_flag[4] = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2448.6 1590.3 3.0 3.0 FALSE OPEN_SEQUENCE_TASK w5_seq TASK_SET_IGNORE_WEAPON_RANGE_FLAG -1 TRUE TASK_GO_TO_COORD_WHILE_SHOOTING -1 -2494.1 1560.7 16.3 PEDMOVE_RUN 0.5 1.0 scplayer TASK_GO_TO_COORD_WHILE_SHOOTING -1 -2505.2 1557.4 16.3 PEDMOVE_RUN 0.5 1.0 scplayer TASK_GO_TO_COORD_WHILE_SHOOTING -1 -2505.5 1532.1 16.3 PEDMOVE_RUN 0.5 1.0 scplayer IF NOT IS_CAR_DEAD w5_chopper TASK_DESTROY_CAR -1 w5_chopper ENDIF CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[4] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_goons_AI_flag[4] = 1 ENDIF ENDIF ENDIF //standing on the platform at the back of the boat IF NOT IS_CHAR_DEAD w5_goons[5] IF w5_goons_AI_flag[5] = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2448.6 1590.3 3.0 3.0 FALSE OPEN_SEQUENCE_TASK w5_seq TASK_SET_IGNORE_WEAPON_RANGE_FLAG -1 TRUE IF NOT IS_CAR_DEAD w5_chopper TASK_DESTROY_CAR -1 w5_chopper ENDIF CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[5] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_goons_AI_flag[5] = 1 ENDIF ENDIF ENDIF //lead guy of last two on platform coming out to shoot at player IF NOT IS_CHAR_DEAD w5_goons[6] IF w5_goons_AI_flag[6] = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2493.5 1571.8 3.0 3.0 FALSE OPEN_SEQUENCE_TASK w5_seq TASK_SET_IGNORE_WEAPON_RANGE_FLAG -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 -2501.4 1539.5 23.2 PEDMOVE_RUN -1 IF NOT IS_CAR_DEAD w5_chopper TASK_DESTROY_CAR -1 w5_chopper ENDIF CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[6] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_goons_AI_flag[6] = 1 ENDIF ENDIF ENDIF //rear guy of last two on platform coming out to shoot at player IF NOT IS_CHAR_DEAD w5_goons[7] IF w5_goons_AI_flag[7] = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2493.5 1571.8 3.0 3.0 FALSE OPEN_SEQUENCE_TASK w5_seq TASK_SET_IGNORE_WEAPON_RANGE_FLAG -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 -2500.9 1535.4 23.2 PEDMOVE_RUN -1 IF NOT IS_CAR_DEAD w5_chopper TASK_DESTROY_CAR -1 w5_chopper ENDIF CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[7] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_goons_AI_flag[7] = 1 ENDIF ENDIF ENDIF //last guy before the Rocket Launcher dude IF NOT IS_CHAR_DEAD w5_goons[8] IF w5_goons_AI_flag[8] = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2493.5 1571.8 3.0 3.0 FALSE OPEN_SEQUENCE_TASK w5_seq TASK_SET_IGNORE_WEAPON_RANGE_FLAG -1 TRUE IF NOT IS_CAR_DEAD w5_chopper TASK_DESTROY_CAR -1 w5_chopper ENDIF CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[8] w5_seq CLEAR_SEQUENCE_TASK w5_seq w5_goons_AI_flag[8] = 1 ENDIF ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// w5_death_kills://////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF w5_creating_goons_flag < 9 IF IS_CHAR_DEAD w5_goons[w5_creating_goons_flag] REMOVE_BLIP w5_goons_blip[w5_creating_goons_flag] ENDIF w5_creating_goons_flag ++ ELSE w5_creating_goons_flag = 0 ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// w5_creating_refugees:////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// CLEAR_AREA -2369.3 1551.9 1.2 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION5 OMOST -2369.3 1551.9 1.2 w5_refugees[0] SET_CHAR_HEADING w5_refugees[0] 96.2 SET_CHAR_STAY_IN_SAME_PLACE w5_refugees[0] TRUE SET_CHAR_NEVER_TARGETTED w5_refugees[0] TRUE //TASK_PLAY_ANIM_NON_INTERRUPTABLE w5_refugees[0] crckidle4 CRACK 8.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER w5_refugees[0] w5_empty_decisions CLEAR_AREA -2368.3 1551.9 1.2 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION5 OMOST -2368.3 1551.9 1.2 w5_refugees[1] SET_CHAR_HEADING w5_refugees[1] 96.2 SET_CHAR_STAY_IN_SAME_PLACE w5_refugees[1] TRUE SET_CHAR_NEVER_TARGETTED w5_refugees[1] TRUE //TASK_PLAY_ANIM_NON_INTERRUPTABLE w5_refugees[1] weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 SET_CHAR_DECISION_MAKER w5_refugees[1] w5_empty_decisions CLEAR_AREA -2367.3 1551.9 1.2 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION5 OMOBOAT -2367.3 1551.9 1.2 w5_refugees[2] SET_CHAR_HEADING w5_refugees[2] 96.2 SET_CHAR_STAY_IN_SAME_PLACE w5_refugees[2] TRUE SET_CHAR_NEVER_TARGETTED w5_refugees[2] TRUE //TASK_PLAY_ANIM_NON_INTERRUPTABLE w5_refugees[2] M_smklean_loop SMOKING 4.0 TRUE FALSE FALSE TRUE -1 SET_CHAR_DECISION_MAKER w5_refugees[2] w5_empty_decisions /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// w5_guys_at_start_of_maze:////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF w5_where_player_control_flag = 0 IF IS_CHAR_IN_AREA_3D scplayer -2282.4 1510.9 50.0 -2534.6 1578.5 15.0 FALSE IF IS_CHAR_SHOOTING scplayer IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PISTOL_SILENCED w5_where_player_control_flag = 1 ENDIF ENDIF ENDIF IF IS_CHAR_IN_AREA_2D scplayer -2385.2 1539.7 -2393.0 1558.9 FALSE w5_where_player_control_flag = 1 ENDIF IF NOT IS_CHAR_DEAD w5_goons[10] IF IS_CHAR_SHOOTING w5_goons[10] w5_where_player_control_flag = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD w5_goons[15] IF IS_CHAR_SHOOTING w5_goons[15] w5_where_player_control_flag = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD w5_goons[16] IF IS_CHAR_SHOOTING w5_goons[16] w5_where_player_control_flag = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD w5_goons[0] IF IS_CHAR_SHOOTING w5_goons[0] w5_where_player_control_flag = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD w5_goons[1] IF IS_CHAR_SHOOTING w5_goons[1] w5_where_player_control_flag = 1 ENDIF ENDIF ENDIF IF w5_where_player_control_flag = 1 IF NOT IS_CHAR_DEAD w5_goons[10] TASK_TURN_CHAR_TO_FACE_CHAR w5_goons[10] scplayer ENDIF IF NOT IS_CHAR_DEAD w5_goons[15] TASK_TURN_CHAR_TO_FACE_CHAR w5_goons[15] scplayer ENDIF IF NOT IS_CHAR_DEAD w5_goons[16] TASK_TURN_CHAR_TO_FACE_CHAR w5_goons[16] scplayer ENDIF IF NOT IS_CHAR_DEAD w5_goons[0] OPEN_SEQUENCE_TASK w5_seq TASK_SET_CHAR_DECISION_MAKER -1 w5_empty_decisions TASK_GO_STRAIGHT_TO_COORD -1 -2351.0 1549.4 22.2 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 180.0 TASK_CLIMB -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 -2351.2 1547.1 25.0 PEDMOVE_RUN -1 TASK_SET_CHAR_DECISION_MAKER -1 w5_ped_decisions TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[0] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF IF NOT IS_CHAR_DEAD w5_goons[1] TASK_TURN_CHAR_TO_FACE_CHAR w5_goons[1] scplayer ENDIF IF NOT IS_CHAR_DEAD w5_goons[2] OPEN_SEQUENCE_TASK w5_seq TASK_GO_STRAIGHT_TO_COORD -1 -2385.5 1543.1 25.0 PEDMOVE_RUN -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[2] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF IF NOT IS_CHAR_DEAD w5_goons[3] OPEN_SEQUENCE_TASK w5_seq TASK_GO_STRAIGHT_TO_COORD -1 -2385.8 1540.6 25.0 PEDMOVE_RUN -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[3] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF IF NOT IS_CHAR_DEAD w5_goons[4] OPEN_SEQUENCE_TASK w5_seq TASK_GO_STRAIGHT_TO_COORD -1 -2392.1 1556.0 25.0 PEDMOVE_RUN -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[4] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF //PRINT_NOW ( WUZ4_25 ) 3000 1 //ENEMY: There he is, get him! w5_where_player_control_flag = 2 ENDIF //waiting to be able to trigger next bit IF w5_where_player_control_flag = 2 IF NOT IS_CHAR_DEAD w5_goons[12] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR w5_goons[12] scplayer w5_where_player_control_flag = 3 ENDIF ELSE w5_where_player_control_flag = 3 ENDIF IF IS_CHAR_IN_AREA_2D scplayer -2400.0 1561.0 -2409.8 1540.0 FALSE w5_where_player_control_flag = 3 ENDIF ENDIF IF w5_where_player_control_flag = 3 IF NOT IS_CHAR_DEAD w5_goons[12] OPEN_SEQUENCE_TASK w5_seq TASK_TOGGLE_DUCK -1 TRUE TASK_PAUSE -1 500 TASK_GO_STRAIGHT_TO_COORD -1 -2401.1 1539.8 25.0 PEDMOVE_RUN -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[12] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF w5_where_player_control_flag = 4 ENDIF //triggering last bit of maze IF w5_where_player_control_flag = 4 IF IS_CHAR_IN_AREA_2D scplayer -2416.4 1535.3 -2431.6 1542.1 FALSE IF NOT IS_CHAR_DEAD w5_goons[6] OPEN_SEQUENCE_TASK w5_seq TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_L SWAT 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_in_L SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE GENERATE_RANDOM_INT_IN_RANGE 1500 4000 w5_random_number TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer w5_random_number TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM -1 -2420.4 1553.4 25.0 180.0 -0.1 swt_wllshoot_out_L SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_L_back SWAT 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT w5_seq 1 CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[6] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF IF NOT IS_CHAR_DEAD w5_goons[13] OPEN_SEQUENCE_TASK w5_seq TASK_CLIMB -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 w5_ped_decisions TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[13] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF IF NOT IS_CHAR_DEAD w5_goons[14] OPEN_SEQUENCE_TASK w5_seq TASK_PAUSE -1 1500 TASK_CLIMB -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 w5_ped_decisions TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK w5_seq PERFORM_SEQUENCE_TASK w5_goons[14] w5_seq CLEAR_SEQUENCE_TASK w5_seq ENDIF w5_where_player_control_flag = 5 ENDIF ENDIF IF w5_where_player_control_flag = 5 IF IS_CHAR_IN_AREA_2D scplayer -2418.9 1546.4 -2435.6 1559.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR w5_goons[6] scplayer IF NOT IS_CHAR_DEAD w5_goons[6] TASK_KILL_CHAR_ON_FOOT w5_goons[6] scplayer w5_where_player_control_flag = 6 ENDIF ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// w5_dialogue_setup:///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF w5_speech_goals = 1 $w5_print_label[0] = &WUZ4_KA // Hey CJ, what you doing here? $w5_print_label[1] = &WUZ4_KB // Just bumped into Woozie on his way out. $w5_print_label[2] = &WUZ4_KC // He filled me in, thought I'd roll along with you! $w5_print_label[3] = &WUZ4_KD // Well we ain't rollin', we're whirling! $w5_print_label[4] = &WUZ4_KE // Strap in and strap up! w5_audio_label[0] = SOUND_WUZ4_KA w5_audio_label[1] = SOUND_WUZ4_KB w5_audio_label[2] = SOUND_WUZ4_KC w5_audio_label[3] = SOUND_WUZ4_KD w5_audio_label[4] = SOUND_WUZ4_KE w5_last_label = 5 ENDIF IF w5_speech_goals = 2 $w5_print_label[0] = &WUZ4_LA // Where we headed? $w5_print_label[1] = &WUZ4_LB // It's moored out in the bay! $w5_print_label[2] = &WUZ4_LC // Oh yeah, I see it! $w5_print_label[3] = &WUZ4_LD // You better lock and load, they'll be on their guard! $w5_print_label[4] = &WUZ4_LE // Locked and loaded! w5_audio_label[0] = SOUND_WUZ4_LA w5_audio_label[1] = SOUND_WUZ4_LB w5_audio_label[2] = SOUND_WUZ4_LC w5_audio_label[3] = SOUND_WUZ4_LD w5_audio_label[4] = SOUND_WUZ4_LE w5_last_label = 5 ENDIF IF w5_speech_goals = 3 $w5_print_label[0] = &WUZ4_MA // Holy fuck, they're gunning for us already! $w5_print_label[1] = &WUZ4_MB // I see 'em! $w5_print_label[2] = &WUZ4_MC // They're all over the containers! $w5_print_label[3] = &WUZ4_MD // I see 'em, dude, I see 'em! $w5_print_label[4] = &WUZ4_ME // Hit those Da Nang bastards! w5_audio_label[0] = SOUND_WUZ4_MA w5_audio_label[1] = SOUND_WUZ4_MB w5_audio_label[2] = SOUND_WUZ4_MC w5_audio_label[3] = SOUND_WUZ4_MD w5_audio_label[4] = SOUND_WUZ4_ME w5_last_label = 5 ENDIF IF w5_speech_goals = 4 $w5_print_label[0] = &WUZ4_NA // RPG! RPG! $w5_print_label[1] = &WUZ4_NB // Where? Which side? //debug - doesn't print atm... check when dialogue is in $w5_print_label[2] = &WUZ4_NC // We're hit! $w5_print_label[3] = &WUZ4_NE // We're going down! $w5_print_label[4] = &WUZ4_NF // Brace for impact! w5_audio_label[0] = SOUND_WUZ4_NA w5_audio_label[1] = SOUND_WUZ4_NB w5_audio_label[2] = SOUND_WUZ4_NC w5_audio_label[3] = SOUND_WUZ4_NE w5_audio_label[4] = SOUND_WUZ4_NF w5_last_label = w5_random_last_label ENDIF IF w5_speech_goals = 5 $w5_print_label[0] = &WUZ4_AA // Can you see any survivors? $w5_print_label[1] = &WUZ4_AB // No. Nobody's getting out of that alive! w5_audio_label[0] = SOUND_WUZ4_AA w5_audio_label[1] = SOUND_WUZ4_AB w5_last_label = w5_random_last_label ENDIF IF w5_speech_goals = 6 $w5_print_label[0] = &WUZ4_FA // Keep it down, you want to bring the snakehead down here? w5_audio_label[0] = SOUND_WUZ4_FA w5_last_label = 1 ENDIF IF w5_speech_goals = 7 $w5_print_label[0] = &WUZ4_CA // Not long until we're drinking cola in the free West, eh! $w5_print_label[1] = &WUZ4_CB // Hey, who the fuck are you? w5_audio_label[0] = SOUND_WUZ4_CA w5_audio_label[1] = SOUND_WUZ4_CB w5_last_label = w5_random_last_label ENDIF IF w5_speech_goals = 8 $w5_print_label[0] = &WUZ4_HA // Stick this up your ass! w5_audio_label[0] = SOUND_WUZ4_HA w5_last_label = 1 ENDIF IF w5_speech_goals = 9 $w5_print_label[0] = &WUZ4_JA // Hey you, help us! $w5_print_label[1] = &WUZ4_JB // Hey, please, help us! w5_audio_label[0] = SOUND_WUZ4_JA w5_audio_label[1] = SOUND_WUZ4_JB w5_last_label = w5_random_last_label ENDIF IF w5_speech_goals = 10 $w5_print_label[0] = &WUZ4_JC // Please, the snakehead tricked us, we're virtual prisoners. $w5_print_label[1] = &WUZ4_JD // Please help us escape! $w5_print_label[2] = &WUZ4_JE // The Snakehead is up on the bridge... w5_audio_label[0] = SOUND_WUZ4_JC w5_audio_label[1] = SOUND_WUZ4_JD w5_audio_label[2] = SOUND_WUZ4_JE w5_last_label = w5_random_last_label ENDIF IF w5_speech_goals = 11 $w5_print_label[0] = &WUZ4_JF // Thank you for everything! w5_audio_label[0] = SOUND_WUZ4_JF w5_last_label = 1 ENDIF IF w5_speech_goals = 12 $w5_print_label[0] = &WUZ4_OA // Oh, man, I hurt! $w5_print_label[1] = &WUZ4_ZA // Damn, lost everything but my blade! w5_audio_label[0] = SOUND_WUZ4_OA w5_audio_label[1] = SOUND_WUZ4_ZA w5_last_label = 2 ENDIF IF w5_speech_goals = 13 $w5_print_label[0] = &WUZ4_PA // Enough! We settle this here! w5_audio_label[0] = SOUND_WUZ4_PA w5_last_label = 1 ENDIF //REMOVED DIALOGUE //[WUZ4_BA:WUZI4]Keep it down, you want to bring the snakehead down here? //[WUZ4_CC:WUZI4]Go get the snakehead! //[WUZ4_GA:WUZI4]Not long until we're drinking cola in the free West, eh! //[WUZ4_GB:WUZI4]Hey, who the fuck are you? //[WUZ4_GC:WUZI4]Go get the snakehead! //[WUZ4_DA:WUZI4]Stick this up your ass! //[WUZ4_ND:WUZI4] // (Sirens, whines, clattering gears etc.) w5_slot_load = w5_speech_control_flag w5_slot1 = 0 w5_slot2 = 0 w5_play_which_slot = 1 /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// w5_overall_dialogue://///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF w5_speech_goals = 1 //cutscene dialogue between pilot and player OR w5_speech_goals = 2 //2nd convo between pilot and player OR w5_speech_goals = 3 //Pilot telling player he is getting shot at OR w5_speech_goals = 4 //Pilot telling player about the missile and that the heli is going down. OR w5_speech_goals = 5 //Two guards checking the wreckage IF w5_speech_control_flag < w5_last_label GOSUB w5_loading_dialogue GOSUB w5_playing_dialogue GOSUB w5_finishing_dialogue ELSE w5_speech_goals = 0 ENDIF ENDIF IF w5_speech_goals = 6 //Keep it down, you want to bring the snakehead down here? OR w5_speech_goals = 7 //3 guards talking to each other it the cutscene. OR w5_speech_goals = 10 //refugees talking to player in cutscene after being released. OR w5_speech_goals = 11 //Thank you for everything! OR w5_speech_goals = 12 //Oh, man, I hurt! | Shit, lost all my weapons! IF w5_speech_control_flag < w5_last_label GOSUB w5_loading_dialogue GOSUB w5_playing_dialogue GOSUB w5_finishing_dialogue ELSE w5_speech_goals = 0 ENDIF ENDIF IF w5_speech_goals = 8 //Stick this up your ass! IF w5_speech_control_flag < w5_last_label GOSUB w5_loading_dialogue GOSUB w5_playing_dialogue IF NOT IS_CHAR_DEAD w5_goons[9] GOSUB w5_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $w5_print_label[w5_speech_control_flag] w5_slot1 = 0 w5_slot2 = 0 ENDIF ELSE w5_speech_goals = 0 ENDIF ENDIF IF w5_speech_goals = 9 //Refugees pleading with player. IF w5_speech_control_flag < w5_last_label GOSUB w5_loading_dialogue GOSUB w5_playing_dialogue IF NOT IS_CHAR_DEAD w5_refugees[3] GOSUB w5_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $w5_print_label[w5_speech_control_flag] w5_slot1 = 0 w5_slot2 = 0 ENDIF ELSE w5_speech_goals = 0 ENDIF ENDIF IF w5_speech_goals = 13 //Snakehead talking IF w5_speech_control_flag < w5_last_label GOSUB w5_loading_dialogue GOSUB w5_playing_dialogue IF NOT IS_CHAR_DEAD w5_head_honcho GOSUB w5_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $w5_print_label[w5_speech_control_flag] w5_slot1 = 0 w5_slot2 = 0 ENDIF ELSE w5_speech_goals = 0 ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// w5_loading_dialogue://///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF w5_slot_load < w5_last_label //slot 1 IF w5_slot1 = 0 LOAD_MISSION_AUDIO 1 w5_audio_label[w5_slot_load] w5_slot_load ++ w5_slot1 = 1 ENDIF //slot 2 IF w5_slot2 = 0 LOAD_MISSION_AUDIO 2 w5_audio_label[w5_slot_load] w5_slot_load ++ w5_slot2 = 1 ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// w5_playing_dialogue://///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// //slot 1 IF w5_play_which_slot = 1 IF w5_slot1 = 1 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $w5_print_label[w5_speech_control_flag] ) 4500 1 // w5_slot1 = 2 ENDIF ENDIF ENDIF //slot 2 IF w5_play_which_slot = 2 IF w5_slot2 = 1 IF HAS_MISSION_AUDIO_LOADED 2 PLAY_MISSION_AUDIO 2 PRINT_NOW ( $w5_print_label[w5_speech_control_flag] ) 4500 1 // w5_slot2 = 2 ENDIF ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// w5_finishing_dialogue:///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// //slot 1 IF w5_slot1 = 2 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_THIS_PRINT $w5_print_label[w5_speech_control_flag] w5_speech_control_flag ++ w5_play_which_slot = 2 w5_slot1 = 0 ENDIF ENDIF //slot 2 IF w5_slot2 = 2 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT $w5_print_label[w5_speech_control_flag] w5_speech_control_flag ++ w5_play_which_slot = 1 w5_slot2 = 0 ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// } MISSION_START // ------------------------------------------------------------------------------------------------ // Syndicate Mission 1: Recon - Photograph Syndicate Members : T-Bone, Jizzy, Toreno, Ryder { SCRIPT_NAME syn1 // Begin... GOSUB mission_start_syn1 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_syn1 ENDIF GOSUB mission_cleanup_syn1 MISSION_END // ------------------------------------------------------------------------------------------------ // Variables // ---- Flags LVAR_INT sy1_stage sy1_cut sy1_temp_flag sy1_fx_flag sy1_skip LVAR_INT sy1_mobile sy1_photo_targets sy1_anim_flag sy1_meet // ---- Blips // ---- Timers / Counters LVAR_INT syn1_timer LVAR_INT sy1_timer_diff sy1_timer_end sy1_timer_start LVAR_FLOAT sy1_anim_time // ---- Coords LVAR_FLOAT sy1_park_x sy1_park_y sy1_park_z LVAR_INT sy1_park_blip sy1_vantage_blip // ---- Cameras LVAR_FLOAT sy1_cam_x[15] sy1_cam_y[15] sy1_cam_z[15] LVAR_FLOAT sy1_cam_look_x[15] sy1_cam_look_y[15] sy1_cam_look_z[15] LVAR_FLOAT sy1_fail_cam_x sy1_fail_cam_y sy1_fail_cam_z LVAR_FLOAT sy1_fov CONST_FLOAT sy1_ideal_fov 20.0 // ---- Objects // ---- Dialogue LVAR_INT sy1_dialogue sy1_audio_char LVAR_INT sy1_text_timer_diff sy1_text_timer_end sy1_text_timer_start LVAR_TEXT_LABEL sy1_text[60] LVAR_INT sy1_audio[60] sy1_audio_slot sy1_alt_slot sy1_counter sy1_ahead_counter sy1_audio_playing LVAR_INT sy1_audio_seq // ---- Photo Stuff LVAR_FLOAT sy1_lower_heading sy1_upper_heading // ---- Sequences LVAR_INT sy1_down_stairs sy1_player_confront sy1_cesar_enter_heli sy1_dec LVAR_INT sy1_ryder_exit_car sy1_balla_1_meet sy1_jizzy_leave_car LVAR_FLOAT sy1_pilot_confront_x[3] sy1_pilot_confront_y[3] sy1_pilot_confront_z[3] // ---- Offsets LVAR_FLOAT sy1_min_x sy1_min_y sy1_min_z sy1_offset_x sy1_offset_y sy1_offset_z LVAR_FLOAT sy1_max_x sy1_max_y sy1_max_z // ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------ // -------- Entities // ---- Player LVAR_INT sy1_player_status sy1_player_car sy1_in_car sy1_grouped sy1_smoke_fx[2] sy1_player_car_class LVAR_FLOAT sy1_player_x sy1_player_y sy1_player_z sy1_player_h // ---- Cesar LVAR_INT sy1_cesar sy1_cesar_car sy1_cesar_car_health sy1_cesar_blip sy1_cesar_status sy1_cesar_car_blip LVAR_FLOAT sy1_cesar_x sy1_cesar_y sy1_cesar_z VAR_FLOAT sy1_cesar_car_x sy1_cesar_car_y sy1_cesar_car_z sy1_cesar_car_h LVAR_INT sy1_cesar_stairs sy1_cesar_model_load: REQUEST_MODEL SAVANNA LOAD_SPECIAL_CHARACTER 1 cesar REQUEST_ANIMATION BOMBER LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED SAVANNA OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_ANIMATION_LOADED BOMBER WAIT 0 ENDWHILE RETURN ADD_BLIP_FOR_COORD sy1_cesar_car_x sy1_cesar_car_y sy1_cesar_car_z sy1_cesar_blip ADD_BLIP_FOR_COORD sy1_park_x sy1_park_y sy1_park_z sy1_park_blip sy1_cesar_car_create: sy1_cesar_car_x = -54.0 sy1_cesar_car_y = -432.0 sy1_cesar_car_z = 1.0 sy1_cesar_car_h = 259.0 CLEAR_AREA sy1_cesar_car_x sy1_cesar_car_y sy1_cesar_car_z 100.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR SAVANNA &_LVA4L__ CREATE_CAR SAVANNA sy1_cesar_car_x sy1_cesar_car_y sy1_cesar_car_z sy1_cesar_car CREATE_CHAR PEDTYPE_CIVMALE SPECIAL01 -51.6293 -430.5620 0.5721 sy1_cesar //CREATE_CHAR_INSIDE_CAR sy1_cesar_car PEDTYPE_CIVMALE SPECIAL01 sy1_cesar SET_CAR_HEADING sy1_cesar_car sy1_cesar_car_h SET_CHAR_HEADING sy1_cesar 154.6720 SET_CHAR_NEVER_TARGETTED sy1_cesar TRUE //SET_LOAD_COLLISION_FOR_CAR_FLAG sy1_cesar_car FALSE SUPPRESS_CAR_MODEL SAVANNA CHANGE_CAR_COLOUR sy1_cesar_car 3 3 REMOVE_BLIP sy1_cesar_blip ADD_BLIP_FOR_CHAR sy1_cesar sy1_cesar_blip SET_BLIP_AS_FRIENDLY sy1_cesar_blip TRUE RETURN CREATE_CHAR_INSIDE_CAR sy1_cesar_car PEDTYPE_CIVMALE SPECIAL01 sy1_audio_char ADD_BLIP_FOR_CAR sy1_cesar_car sy1_cesar_car_blip // Dummy car LVAR_INT sy1_dummy_car LVAR_FLOAT sy1_dummy_car_x sy1_dummy_car_y sy1_dummy_car_z sy1_dummy_car_h sy1_dummy_car_create: REQUEST_MODEL MTBIKE LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED MTBIKE WAIT 0 ENDWHILE CREATE_CAR MTBIKE sy1_dummy_car_x sy1_dummy_car_y sy1_dummy_car_z sy1_dummy_car SET_CAR_HEADING sy1_dummy_car sy1_dummy_car_h FREEZE_CAR_POSITION sy1_dummy_car TRUE SET_CAR_VISIBLE sy1_dummy_car FALSE SET_HEADING_FOR_ATTACHED_PLAYER player1 135.0 135.0 ATTACH_CHAR_TO_BIKE scplayer sy1_dummy_car -0.2 0.5 0.0 FACING_LEFT 110.0 70.0 WEAPONTYPE_CAMERA SET_HEADING_FOR_ATTACHED_PLAYER player1 135.0 135.0 SET_RADIO_CHANNEL RS_OFF SET_CAR_ENGINE_ON sy1_dummy_car FALSE RETURN // ---- Ryder and some Ballas LVAR_INT sy1_ryder sy1_ryder_car sy1_ryder_blip sy1_balla LVAR_INT sy1_ryder_status sy1_ryder_progress sy1_ryder_walk LVAR_FLOAT sy1_ryder_x sy1_ryder_y sy1_ryder_z sy1_ryder_h LVAR_FLOAT sy1_ryder_car_x sy1_ryder_car_y sy1_ryder_car_z sy1_ryder_car_h sy1_ryder_car_create: REQUEST_MODEL PICADOR REQUEST_CAR_RECORDING 190 LOAD_SPECIAL_CHARACTER 2 ryder2 REQUEST_MODEL BALLAS1 LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED PICADOR OR NOT HAS_MODEL_LOADED BALLAS1 OR NOT HAS_SPECIAL_CHARACTER_LOADED 2 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 190 WAIT 0 ENDWHILE sy1_ryder_car_x = -2120.3997 sy1_ryder_car_y = -2448.4578 sy1_ryder_car_z = 29.4688 sy1_ryder_car_h = 137.4828 CUSTOM_PLATE_FOR_NEXT_CAR PICADOR &_SHERM__ CLEAR_AREA sy1_ryder_car_x sy1_ryder_car_y sy1_ryder_car_z 5.0 TRUE CREATE_CAR PICADOR sy1_ryder_car_x sy1_ryder_car_y sy1_ryder_car_z sy1_ryder_car CHANGE_CAR_COLOUR sy1_ryder_car 84 84 SET_CAR_PROOFS sy1_ryder_car TRUE TRUE TRUE TRUE TRUE SET_CAR_HEADING sy1_ryder_car sy1_ryder_car_h CREATE_CHAR_INSIDE_CAR sy1_ryder_car PEDTYPE_CIVMALE SPECIAL02 sy1_ryder CREATE_CHAR_AS_PASSENGER sy1_ryder_car PEDTYPE_CIVMALE BALLAS1 0 sy1_balla LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY sy1_dec SET_CHAR_DECISION_MAKER sy1_ryder sy1_dec RETURN // ---- T-Bone & Van LVAR_INT sy1_tbone sy1_tbone_car sy1_tbone_blip LVAR_INT sy1_tbone_status sy1_tbone_progress sy1_tbone_walk LVAR_FLOAT sy1_tbone_x sy1_tbone_y sy1_tbone_z sy1_tbone_h LVAR_FLOAT sy1_tbone_car_x sy1_tbone_car_y sy1_tbone_car_z sy1_tbone_car_h sy1_tbone_car_create: REQUEST_MODEL ZR350 REQUEST_CAR_RECORDING 191 LOAD_SPECIAL_CHARACTER 3 tbone LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED ZR350 OR NOT HAS_SPECIAL_CHARACTER_LOADED 3 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 191 WAIT 0 ENDWHILE sy1_tbone_car_x = -2141.4009 sy1_tbone_car_y = -2481.5747 sy1_tbone_car_z = 29.4688 sy1_tbone_car_h = 317.0930 CLEAR_AREA sy1_tbone_car_x sy1_tbone_car_y sy1_tbone_car_z 5.0 TRUE CREATE_CAR ZR350 sy1_tbone_car_x sy1_tbone_car_y sy1_tbone_car_z sy1_tbone_car CHANGE_CAR_COLOUR sy1_tbone_car 84 84 SET_CAR_PROOFS sy1_tbone_car TRUE TRUE TRUE TRUE TRUE SET_CAR_HEADING sy1_tbone_car sy1_tbone_car_h CREATE_CHAR_INSIDE_CAR sy1_tbone_car PEDTYPE_CIVMALE SPECIAL03 sy1_tbone START_PLAYBACK_RECORDED_CAR sy1_tbone_car 191 SET_PLAYBACK_SPEED sy1_tbone_car 0.6 RETURN // ---- Jizzy in his car LVAR_INT sy1_jizzy sy1_jizzy_car sy1_jizzy_blip sy1_pro sy1_end_car LVAR_INT sy1_jizzy_status sy1_jizzy_progress sy1_jizzy_walk LVAR_FLOAT sy1_jizzy_x sy1_jizzy_y sy1_jizzy_z sy1_jizzy_h LVAR_FLOAT sy1_jizzy_car_x sy1_jizzy_car_y sy1_jizzy_car_z sy1_jizzy_car_h sy1_jizzy_car_create: REQUEST_MODEL BROADWAY REQUEST_MODEL WALTON REQUEST_CAR_RECORDING 193 REQUEST_CAR_RECORDING 194 LOAD_SPECIAL_CHARACTER 5 jizzy REQUEST_MODEL SHFYPRO LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED BROADWAY OR NOT HAS_MODEL_LOADED SHFYPRO OR NOT HAS_MODEL_LOADED WALTON OR NOT HAS_SPECIAL_CHARACTER_LOADED 5 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 193 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 194 WAIT 0 ENDWHILE sy1_jizzy_car_x = -2141.4009 sy1_jizzy_car_y = -2481.5747 sy1_jizzy_car_z = 29.4688 sy1_jizzy_car_h = 317.0930 CLEAR_AREA sy1_jizzy_car_x sy1_jizzy_car_y sy1_jizzy_car_z 5.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR BROADWAY HO_2_HO_ CREATE_CAR BROADWAY sy1_jizzy_car_x sy1_jizzy_car_y sy1_jizzy_car_z sy1_jizzy_car CREATE_CAR WALTON -2235.7273 -2572.8728 30.9296 sy1_end_car SET_CAR_PROOFS sy1_jizzy_car TRUE TRUE TRUE TRUE TRUE SET_CAR_HEADING sy1_end_car 44.9335 CHANGE_CAR_COLOUR sy1_jizzy_car 123 5 SET_CAR_HEADING sy1_jizzy_car sy1_jizzy_car_h CREATE_CHAR_INSIDE_CAR sy1_jizzy_car PEDTYPE_CIVFEMALE SHFYPRO sy1_pro CREATE_CHAR_AS_PASSENGER sy1_jizzy_car PEDTYPE_CIVMALE SPECIAL05 0 sy1_jizzy START_PLAYBACK_RECORDED_CAR sy1_jizzy_car 193 RETURN // ---- Toreno comes out LVAR_INT sy1_toreno sy1_toreno_car sy1_toreno_blip LVAR_INT sy1_toreno_status sy1_toreno_progress sy1_toreno_walk LVAR_FLOAT sy1_toreno_x sy1_toreno_y sy1_toreno_z sy1_toreno_h LVAR_FLOAT sy1_toreno_car_x sy1_toreno_car_y sy1_toreno_car_z sy1_toreno_car_h sy1_toreno_car_create: REQUEST_MODEL WASHING REQUEST_CAR_RECORDING 192 LOAD_SPECIAL_CHARACTER 4 torino LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED WASHING OR NOT HAS_SPECIAL_CHARACTER_LOADED 4 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 192 WAIT 0 ENDWHILE sy1_toreno_car_x = -2214.2754 sy1_toreno_car_y = -2475.1125 sy1_toreno_car_z = 29.4688 sy1_toreno_car_h = 232.2762 CUSTOM_PLATE_FOR_NEXT_CAR WASHING &_OMEGA__ CLEAR_AREA sy1_toreno_car_x sy1_toreno_car_y sy1_toreno_car_z 5.0 TRUE CREATE_CAR WASHING sy1_toreno_car_x sy1_toreno_car_y sy1_toreno_car_z sy1_toreno_car CHANGE_CAR_COLOUR sy1_toreno_car 84 84 SET_CAR_PROOFS sy1_toreno_car TRUE TRUE TRUE TRUE TRUE SET_CAR_HEADING sy1_toreno_car sy1_toreno_car_h CREATE_CHAR_INSIDE_CAR sy1_toreno_car PEDTYPE_CIVMALE SPECIAL04 sy1_toreno START_PLAYBACK_RECORDED_CAR sy1_toreno_car 192 RETURN // ------------------------------------------------------------------------------------------------ // -------- Vehicles // ------------------------------------------------------------------------------------------------ // Start Mission mission_start_syn1: LOAD_MISSION_TEXT SYN1 REGISTER_MISSION_GIVEN DISPLAY_RADAR 5 // PATHING IGNORE SWITCHED OFF flag_player_on_mission = 1 WAIT 0 // ------------------------------------------------------------------------------------------------ // Initialize Variables // ---- Flags sy1_stage = 0 sy1_cut = 0 sy1_temp_flag = 0 sy1_dialogue = 0 sy1_in_car = 0 sy1_fx_flag = 0 sy1_anim_flag = 0 sy1_skip = 0 sy1_grouped = 0 sy1_meet = 0 sy1_photo_targets = 0 // ---- Dialogue Flags sy1_audio_slot = 1 sy1_alt_slot = 2 sy1_counter = 0 sy1_ahead_counter = 1 sy1_audio_playing = 0 // ---- Sequences sy1_player_confront = 1 // -------- Sequence Coords sy1_pilot_confront_x[0] = -2413.0 sy1_pilot_confront_y[0] = -580.0 sy1_pilot_confront_z[0] = 133.0 sy1_pilot_confront_x[1] = -2410.0 sy1_pilot_confront_y[1] = -582.0 sy1_pilot_confront_z[1] = 133.0 sy1_pilot_confront_x[2] = -2406.0 sy1_pilot_confront_y[2] = -584.0 sy1_pilot_confront_z[2] = 133.0 sy1_ryder_car_x = -2141.1526 sy1_ryder_car_y = -2448.8711 sy1_ryder_car_z = 29.6250 sy1_ryder_car_h = 107.1964 // ---- Phot STuff sy1_lower_heading = 120.0 sy1_upper_heading = 240.0 // ---- Counter Var // ---- Cesar // ---- Coords sy1_player_x = -2407.0 sy1_player_y = -586.0 sy1_player_z = 131.0 sy1_player_h = 4.0 sy1_park_x = -2163.4893 sy1_park_y = -2404.1592 sy1_park_z = 29.6172 sy1_cesar_car_x = -54.0 sy1_cesar_car_y = -432.0 sy1_cesar_car_z = 1.0 sy1_cesar_car_h = 259.0 sy1_dummy_car_x = -2171.1733 sy1_dummy_car_y = -2422.8206 sy1_dummy_car_z = 33.2969 sy1_dummy_car_h = 141.2754 // ---- Camera Coords // -------- Initial Heli Cut sy1_cam_x[0] = -2408.4370 sy1_cam_y[0] = -585.0820 sy1_cam_z[0] = 133.2022 sy1_cam_look_x[0] = -2408.3367 sy1_cam_look_y[0] = -584.0877 sy1_cam_look_z[0] = 133.1662 // -------- Pick Up Cesar Heli Cut sy1_cam_x[1] = -60.0461 sy1_cam_y[1] = -433.1644 sy1_cam_z[1] = 1.4904 sy1_cam_look_x[1] = -59.0698 sy1_cam_look_y[1] = -432.9484 sy1_cam_look_z[1] = 1.5005 sy1_cam_x[2] = -58.7976 sy1_cam_y[2] = -433.3285 sy1_cam_z[2] = 3.0796 sy1_cam_look_x[2] = -57.8850 sy1_cam_look_y[2] = -432.9940 sy1_cam_look_z[2] = 2.8444 sy1_cam_x[3] = -46.1629 sy1_cam_y[3] = -427.8859 sy1_cam_z[3] = 1.5902 sy1_cam_look_x[3] = -45.8006 sy1_cam_look_y[3] = -428.8180 sy1_cam_look_z[3] = 1.3937 sy1_cam_x[4] = -2407.1704 sy1_cam_y[4] = -583.5895 sy1_cam_z[4] = 133.3550 sy1_cam_look_x[4] = -2407.7656 sy1_cam_look_y[4] = -582.7864 sy1_cam_look_z[4] = 133.3749 sy1_cam_x[5] = -2407.1704 sy1_cam_y[5] = -583.5895 sy1_cam_z[5] = 133.3550 sy1_cam_look_x[5] = -2407.9668 sy1_cam_look_y[5] = -584.1938 sy1_cam_look_z[5] = 133.3749 sy1_cam_x[6] = -2172.5522 sy1_cam_y[6] = -2427.4873 sy1_cam_z[6] = 30.5334 sy1_cam_look_x[6] = -2171.9856 sy1_cam_look_y[6] = -2428.3042 sy1_cam_look_z[6] = 30.6400 sy1_cam_x[7] = -2139.5693 sy1_cam_y[7] = -2452.2385 sy1_cam_z[7] = 31.2226 sy1_cam_look_x[7] = -2140.2920 sy1_cam_look_y[7] = -2451.5486 sy1_cam_look_z[7] = 31.1829 sy1_cam_x[8] = -2175.6719 sy1_cam_y[8] = -2437.2302 sy1_cam_z[8] = 30.7446 sy1_cam_look_x[8] = -2174.6836 sy1_cam_look_y[8] = -2437.1333 sy1_cam_look_z[8] = 30.8619 sy1_cam_x[9] = -2170.4121 sy1_cam_y[9] = -2429.4302 sy1_cam_z[9] = 31.7580 sy1_cam_look_x[9] = -2170.4998 sy1_cam_look_y[9] = -2430.4231 sy1_cam_look_z[9] = 31.8365 sy1_cam_x[10] = -2246.8511 sy1_cam_y[10] = -2571.0310 sy1_cam_z[10] = 32.7468 sy1_cam_look_x[10] = -2246.1604 sy1_cam_look_y[10] = -2570.3110 sy1_cam_look_z[10] = 32.6781 sy1_cam_x[11] = -2241.5188 sy1_cam_y[11] = -2568.2810 sy1_cam_z[11] = 32.2372 sy1_cam_look_x[11] = -2242.2859 sy1_cam_look_y[11] = -2567.6418 sy1_cam_look_z[11] = 32.2906 // ---- Dialogue Text $sy1_text[1] = MCES10A // CJ. $sy1_text[2] = MCES10B // You got it. $sy1_text[3] = MCES10C // My cousin in Los Santos called me. $sy1_text[4] = MCES10D // He gave me a tip about a Ballas car going San Fierro way to score yay. $sy1_text[5] = MCES10E // Shit, we gotta find out who's supplyin' those cats. $sy1_text[6] = MCES10F // Read your mind, holmes, $sy1_text[7] = MCES10G // I picked them up at the Mulholland Intersection and I'm tailing them now. $sy1_text[8] = MCES10H // Ok, I'm coming out to meet you. $sy1_text[9] = MCES10J // Better make it fast, holmes, these boys aren't hanging around! $sy1_text[10] = CESX_AB // Hop in, holmes! // $sy1_text[11] = SYN1_BA // Hey, Cesar, I'm coming your way, where are you? // $sy1_text[12] = SYN1_BB // Sitting by the damn road just South of Blueberry! // $sy1_text[13] = SYN1_BC // They spotted me and shot out my tyres! // $sy1_text[14] = SYN1_BD // Hang on, I'll be there any minute! $sy1_text[15] = SYN1_FC // Where to? $sy1_text[16] = SYN1_FD // They were headed over Angel Pine way. Follow the road and maybe we can pick them up! $sy1_text[17] = SYN1_IA // There it is, holmes! $sy1_text[18] = SYN1_ZA // That's our ballas car alright. //$sy1_text[19] = SYN1_ZB // Who's that in the back? $sy1_text[20] = SYN1_ZC // Ryder, you sherm-head! $sy1_text[21] = SYN1_ZD // What's he rolling with Ballas for? $sy1_text[22] = SYN1_ZE // This business is bigger than any gang, esse. //$sy1_text[23] = SYN1_ZF // Someone's coming out of the diner's back door! $sy1_text[24] = SYN1_ZG // Who's this guy, Aztecas? Vagos? //$sy1_text[25] = SYN1_ZH // Neither, holmes, he's San Fierro Rifa! //$sy1_text[26] = SYN1_ZJ // Ryder's getting out of the car! $sy1_text[27] = SYN1_ZK // Ryder, you lap dog! $sy1_text[28] = SYN1_ZL // That must be the cash... $sy1_text[29] = SYN1_ZM // They're being clever about this, there's no exchange, nothing incriminating. $sy1_text[30] = SYN1_ZN // What now? Was that it? //$sy1_text[31] = SYN1_ZO // Hey, holmes, check the van! $sy1_text[32] = SYN1_ZP // This guy takes himself real serious! $sy1_text[33] = SYN1_ZQ // Oh, esse, that's T-Bone Mendez. $sy1_text[34] = SYN1_ZR // There's the courier with a fresh load of yay for Ryder and his new friends. //$sy1_text[35] = SYN1_ZS // Who are all these guys? $sy1_text[36] = SYN1_ZT // More San Fierro Rifa, by the looks of things. $sy1_text[37] = SYN1_ZU // They sure keep their security tight! //$sy1_text[38] = SYN1_ZV // I didn't scope those guys, did you? $sy1_text[39] = SYN1_ZW // No. This is more than just a few thugs pushing product, this is seriously organised! $sy1_text[40] = SYN1_ZX // How many of these clowns are there? $sy1_text[41] = SYN1_ZY // I know a pimp when I see one! $sy1_text[42] = SYN1_ZZ // Who's the gringo? $sy1_text[43] = SYN1_YA // I don't like the look of that guy. $sy1_text[44] = SYN1_YB // Uh-oh, I think he's clocked us! //$sy1_text[45] = SYN1_YC // Well we're not exactly inconspicuous up here. //$sy1_text[46] = SYN1_YD // Besides, what's he going to do, huh, throw stones at us? $sy1_text[47] = SYN1_YE // Oh fuck! OH FUCK! $sy1_text[48] = SYN1_YF // Get us out of here! //$sy1_text[49] = SYN1_YG // Pope crap! $sy1_text[50] = SYN1_YH // That was some heavy shit! $sy1_text[51] = SYN1_YJ // We better split up and get outta here. I'll meet you back at the garage! $sy1_text[52] = SYN1_YK // Coolio, dude. We got what we came for // ---- Dialogue Audio sy1_audio[1] = SOUND_MCES10A // CJ. sy1_audio[2] = SOUND_MCES10B // You got it. sy1_audio[3] = SOUND_MCES10C // My cousin in Los Santos called me. sy1_audio[4] = SOUND_MCES10D // He gave me a tip about a Ballas car going San Fierro way to score yay. sy1_audio[5] = SOUND_MCES10E // Damn, we gotta find out who's supplyin' those cats. sy1_audio[6] = SOUND_MCES10F // Read your mind, holmes, sy1_audio[7] = SOUND_MCES10G // I picked them up at the Mulholland Intersection and I'm tailing them now. sy1_audio[8] = SOUND_MCES10H // Ok, I'm coming out to meet you. sy1_audio[9] = SOUND_MCES10J // Better make it fast, holmes, these boys aren't hanging around! sy1_audio[10] = SOUND_CESX_AB // Hop in, holmes! // sy1_audio[11] = SOUND_SYN1_BA // Hey, Cesar, I'm coming your way, where are you? // sy1_audio[12] = SOUND_SYN1_BB // Sitting by the damn road just South of Blueberry! // sy1_audio[13] = SOUND_SYN1_BC // They spotted me and shot out my tyres! // sy1_audio[14] = SOUND_SYN1_BD // Hang on, I'll be there any minute! sy1_audio[15] = SOUND_SYN1_FC // Where to? sy1_audio[16] = SOUND_SYN1_FD // They were headed over Angel Pine way. Follow the road and maybe we can pick them up! sy1_audio[17] = SOUND_SYN1_IA // There it is, holmes! //sy1_audio[18] = SOUND_SYN1_ZA // That's our ballas car alright. //sy1_audio[19] = SOUND_SYN1_ZB // Who's that in the back? sy1_audio[20] = SOUND_SYN1_ZC // Ryder, you sherm-head! sy1_audio[21] = SOUND_SYN1_ZD // What's he rolling with Ballas for? sy1_audio[22] = SOUND_SYN1_ZE // This business is bigger than any gang, esse. //sy1_audio[23] = SOUND_SYN1_ZF // Someone's coming out of the diner's back door! sy1_audio[24] = SOUND_SYN1_ZG // Who's this guy, Aztecas? Vagos? //sy1_audio[25] = SOUND_SYN1_ZH // Neither, holmes, he's San Fierro Rifa! //sy1_audio[26] = SOUND_SYN1_ZJ // Ryder's getting out of the car! sy1_audio[27] = SOUND_SYN1_ZK // Ryder, you lap dog! sy1_audio[28] = SOUND_SYN1_ZL // That must be the cash... sy1_audio[29] = SOUND_SYN1_ZM // They're being clever about this, there's no exchange, nothing incriminating. sy1_audio[30] = SOUND_SYN1_ZN // What now? Was that it? //sy1_audio[31] = SOUND_SYN1_ZO // Hey, holmes, check the van! sy1_audio[32] = SOUND_SYN1_ZP // This guy takes himself real serious! sy1_audio[33] = SOUND_SYN1_ZQ // Oh, esse, that's T-Bone Mendez. sy1_audio[34] = SOUND_SYN1_ZR // There's the courier with a fresh load of yay for Ryder and his new friends. //sy1_audio[35] = SOUND_SYN1_ZS // Who are all these guys? sy1_audio[36] = SOUND_SYN1_ZT // More San Fierro Rifa, by the looks of things. sy1_audio[37] = SOUND_SYN1_ZU // They sure keep their security tight! //sy1_audio[38] = SOUND_SYN1_ZV // I didn't scope those guys, did you? sy1_audio[39] = SOUND_SYN1_ZW // No. This is more than just a few thugs pushing product, this is seriously organised! sy1_audio[40] = SOUND_SYN1_ZX // How many of these clowns are there? sy1_audio[41] = SOUND_SYN1_ZY // I know a pimp when I see one! sy1_audio[42] = SOUND_SYN1_ZZ // Who's the gringo? sy1_audio[43] = SOUND_SYN1_YA // I don't like the look of that guy. sy1_audio[44] = SOUND_SYN1_YB // Uh-oh, I think he's clocked us! //sy1_audio[45] = SOUND_SYN1_YC // Well we're not exactly inconspicuous up here. //sy1_audio[46] = SOUND_SYN1_YD // Besides, what's he going to do, huh, throw stones at us? sy1_audio[47] = SOUND_SYN1_YE // Oh fuck! OH FUCK! sy1_audio[48] = SOUND_SYN1_YF // Get us out of here! //sy1_audio[49] = SOUND_SYN1_YG // Pope crap! sy1_audio[50] = SOUND_SYN1_YH // That was some heavy shit! sy1_audio[51] = SOUND_SYN1_YJ // We better split up and get outta here. I'll meet you back at the garage! sy1_audio[52] = SOUND_SYN1_YK // Coolio, dude. We got what we came for // ------------------------------------------------------------------------------------------------ // Request Models // ------------------------------------------------------------------------------------------------ // Entity GoSubs IF flag_syn1_passed_1stime = 0 flag_syn1_passed_1stime = 1 ENDIF //VIEW_INTEGER_VARIABLE sy1_cut sy1_cut // ------------------------------------------------------------------------------------------------ // Task Sequences // Starting Crap... //// -------- Pickups // DO_FADE 300 FADE_OUT // WHILE GET_FADING_STATUS // WAIT 0 // ENDWHILE REQUEST_MODEL CELLPHONE REQUEST_MODEL CAMERA LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED CAMERA OR NOT HAS_MODEL_LOADED CELLPHONE WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer -2030.3121 148.0136 27.8359 SET_CHAR_HEADING scplayer 293.7756 SET_PLAYER_CONTROL player1 OFF TASK_USE_MOBILE_PHONE scplayer TRUE SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION -2024.4692 136.6788 39.4814 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2025.1348 137.4221 39.5473 JUMP_CUT SWITCH_CAR_GENERATOR car_gen_pine[0] 0 SWITCH_CAR_GENERATOR car_gen_pine[1] 0 SWITCH_CAR_GENERATOR car_gen_pine[2] 0 GOSUB sy1_cesar_model_load // Mobile camera DO_FADE 300 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE -2024.4692 136.6788 39.4814 -2030.3987 144.5236 29.1601 3500 TRUE CAMERA_SET_VECTOR_TRACK -2025.1348 137.4221 39.5473 -2030.7972 145.4357 29.0639 3500 TRUE // ---- Initial Mobile Call from Cesar... syn1_mobile_loop: WAIT 0 // ---- Load & Play Dialogue... IF NOT sy1_counter = 0 IF sy1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED sy1_alt_slot CLEAR_MISSION_AUDIO sy1_alt_slot ENDIF sy1_audio_playing = 1 ENDIF IF sy1_audio_playing = 1 LOAD_MISSION_AUDIO sy1_audio_slot sy1_audio[sy1_counter] GOSUB sy1_dialogue_pos sy1_audio_playing = 2 ENDIF IF sy1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED sy1_audio_slot IF NOT sy1_audio_char = 0 IF NOT IS_CHAR_DEAD sy1_audio_char START_CHAR_FACIAL_TALK sy1_audio_char 10000 //ATTACH_MISSION_AUDIO_TO_CHAR sy1_audio_slot sy1_audio_char ENDIF ENDIF PLAY_MISSION_AUDIO sy1_audio_slot PRINT_NOW $sy1_text[sy1_counter] 10000 1 sy1_audio_playing = 3 ENDIF ENDIF IF sy1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED sy1_audio_slot CLEAR_THIS_PRINT $sy1_text[sy1_counter] IF NOT sy1_audio_char = 0 IF NOT IS_CHAR_DEAD sy1_audio_char STOP_CHAR_FACIAL_TALK sy1_audio_char ENDIF ENDIF IF sy1_audio_slot = 1 sy1_audio_slot = 2 sy1_alt_slot = 1 ELSE sy1_audio_slot = 1 sy1_alt_slot = 2 ENDIF sy1_counter = 0 sy1_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED sy1_alt_slot IF sy1_counter < 60 sy1_ahead_counter = sy1_counter + 1 LOAD_MISSION_AUDIO sy1_alt_slot sy1_audio[sy1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF IF sy1_mobile = 0 IF sy1_audio_playing = 0 sy1_counter = 1 // CESAR: CJ. sy1_mobile = 1 GET_GAME_TIMER sy1_text_timer_start ENDIF ENDIF IF sy1_mobile = 1 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 1000 IF sy1_audio_playing = 0 sy1_counter = 2 // CARL: You got it. sy1_mobile = 2 GET_GAME_TIMER sy1_text_timer_start ENDIF ENDIF ENDIF IF sy1_mobile = 2 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 1000 IF sy1_audio_playing = 0 sy1_counter = 3 // CESAR: My cousin in Los Santos called me. sy1_mobile = 3 GET_GAME_TIMER sy1_text_timer_start ENDIF ENDIF ENDIF IF sy1_mobile = 3 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 1000 IF sy1_audio_playing = 0 sy1_counter = 4 // He gave me a tip about a Ballas car going San Fierro way to score yay. sy1_mobile = 4 GET_GAME_TIMER sy1_text_timer_start ENDIF ENDIF ENDIF IF sy1_mobile = 4 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 1000 IF sy1_audio_playing = 0 CAMERA_RESET_NEW_SCRIPTABLES RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON sy1_counter = 5 // CARL: Shit, we gotta find out who's supplyin' those cats. sy1_mobile = 5 GET_GAME_TIMER sy1_text_timer_start ENDIF ENDIF ENDIF IF sy1_mobile = 5 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 1000 IF sy1_audio_playing = 0 sy1_counter = 6 // CESAR: Read your mind, holmes, sy1_mobile = 6 GET_GAME_TIMER sy1_text_timer_start ENDIF ENDIF ENDIF IF sy1_mobile = 6 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 1000 IF sy1_audio_playing = 0 sy1_counter = 7 // I picked them up at the Mulholland Intersection and I'm tailing them now. sy1_mobile = 7 GET_GAME_TIMER sy1_text_timer_start ENDIF ENDIF ENDIF IF sy1_mobile = 7 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 1000 IF sy1_audio_playing = 0 sy1_counter = 8 // CARL: Ok, I'm coming out to meet you. sy1_mobile = 8 GET_GAME_TIMER sy1_text_timer_start ENDIF ENDIF ENDIF IF sy1_mobile = 8 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 1000 IF sy1_audio_playing = 0 sy1_counter = 9 // Better make it fast, holmes, these boys aren't hanging around! sy1_mobile = 9 GET_GAME_TIMER sy1_text_timer_start ENDIF ENDIF ENDIF IF sy1_mobile = 9 OR sy1_mobile = 10 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 1000 IF sy1_audio_playing = 0 SET_PLAYER_CONTROL player1 ON GET_SCRIPT_TASK_STATUS scplayer TASK_USE_MOBILE_PHONE sy1_player_status IF NOT sy1_player_status = FINISHED_TASK TASK_USE_MOBILE_PHONE scplayer FALSE ENDIF GOTO syn1_main_loop ENDIF ENDIF ENDIF IF IS_BUTTON_PRESSED PAD1 TRIANGLE OR IS_BUTTON_PRESSED PAD1 CROSS CAMERA_RESET_NEW_SCRIPTABLES RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF sy1_mobile = 10 ENDIF GOTO syn1_mobile_loop // ------------------------------------------------------------------------------------------------ // Main Loop syn1_main_loop: WAIT 0 // ---- Debug Skips IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_passed_syn1 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_1 flag_syn1_skip1 = 1 flag_syn1_skip2 = 1 ENDIF IF sy1_stage = 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_SPACE DO_FADE 100 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer sy1_dummy_car_x sy1_dummy_car_y sy1_dummy_car_z GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_CAMERA 30000 LOAD_SCENE sy1_dummy_car_x sy1_dummy_car_y sy1_dummy_car_z LOAD_SCENE sy1_ryder_car_x sy1_ryder_car_y sy1_ryder_car_z GOSUB sy1_dummy_car_create GOSUB sy1_ryder_car_create DO_FADE 100 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE sy1_stage = 5 sy1_cut = 1 ENDIF ENDIF IF NOT sy1_counter = 0 IF sy1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED sy1_alt_slot CLEAR_MISSION_AUDIO sy1_alt_slot ENDIF sy1_audio_playing = 1 ENDIF IF sy1_audio_playing = 1 LOAD_MISSION_AUDIO sy1_audio_slot sy1_audio[sy1_counter] GOSUB sy1_dialogue_pos sy1_audio_playing = 2 ENDIF IF sy1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED sy1_audio_slot IF NOT sy1_audio_char = 0 IF NOT IS_CHAR_DEAD sy1_audio_char START_CHAR_FACIAL_TALK sy1_audio_char 10000 //ATTACH_MISSION_AUDIO_TO_CHAR sy1_audio_slot sy1_audio_char ENDIF ENDIF PLAY_MISSION_AUDIO sy1_audio_slot PRINT_NOW $sy1_text[sy1_counter] 10000 1 sy1_audio_playing = 3 ENDIF ENDIF IF sy1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED sy1_audio_slot CLEAR_THIS_PRINT $sy1_text[sy1_counter] IF NOT sy1_audio_char = 0 IF NOT IS_CHAR_DEAD sy1_audio_char STOP_CHAR_FACIAL_TALK sy1_audio_char ENDIF ENDIF IF sy1_audio_slot = 1 sy1_audio_slot = 2 sy1_alt_slot = 1 ELSE sy1_audio_slot = 1 sy1_alt_slot = 2 ENDIF IF sy1_counter = 10 AND sy1_temp_flag = 2 sy1_counter = 0 sy1_audio_playing = 0 sy1_temp_flag = 3 ELSE sy1_counter = 0 sy1_audio_playing = 0 ENDIF IF sy1_audio_seq = 1 sy1_audio_seq = 2 ENDIF IF sy1_audio_seq = 0 sy1_audio_seq = 1 ENDIF IF sy1_stage = 6 IF sy1_cut = 13 sy1_cut = 0 ENDIF ENDIF ELSE IF NOT HAS_MISSION_AUDIO_LOADED sy1_alt_slot IF sy1_counter < 60 sy1_ahead_counter = sy1_counter + 1 LOAD_MISSION_AUDIO sy1_alt_slot sy1_audio[sy1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF IF sy1_stage = 0 ADD_BLIP_FOR_COORD sy1_cesar_car_x sy1_cesar_car_y sy1_cesar_car_z sy1_cesar_blip SET_COORD_BLIP_APPEARANCE sy1_cesar_blip COORD_BLIP_APPEARANCE_FRIEND GET_GAME_TIMER sy1_text_timer_start PRINT ( SYN1_02 ) 10000 1 // Go and pick up Cesar. sy1_dialogue = 11 sy1_stage = 1 ENDIF IF sy1_stage = 2 IF NOT LOCATE_CHAR_IN_CAR_3D scplayer sy1_park_x sy1_park_y sy1_park_z 4.0 4.0 4.0 FALSE GOSUB sy1_player_car_check GOSUB sy1_player_group_check ENDIF ENDIF // Go pick up Cesar... IF sy1_stage = 1 IF sy1_cut = 0 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer sy1_player_car IF sy1_audio_playing = 0 // IF sy1_dialogue = 7 // GET_GAME_TIMER sy1_text_timer_end // sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start // IF sy1_text_timer_diff > 3000 // //IF flag_syn1_passed_1stime = 1 // IF flag_syn1_skip1 = 1 // SET_UP_SKIP -85.5180 -413.1554 0.4297 240.0212 // ENDIF // IF NOT IS_CHAR_ON_ANY_BIKE scplayer // GET_SCRIPT_TASK_STATUS scplayer TASK_USE_MOBILE_PHONE sy1_player_status // IF sy1_player_status = FINISHED_TASK // TASK_USE_MOBILE_PHONE scplayer TRUE // ENDIF // IF NOT IS_CAR_DEAD sy1_player_car // IF IS_CAR_PASSENGER_SEAT_FREE sy1_player_car 1 // LOCK_CAR_DOORS sy1_player_car CARLOCK_LOCKED // ENDIF // ENDIF // sy1_counter = 11 // CARL: Hey, Cesar, I'm coming your way, where are you? // GET_GAME_TIMER sy1_text_timer_start // sy1_dialogue = 8 // ELSE // sy1_dialogue = 11 // ENDIF // ENDIF // ENDIF // // IF sy1_dialogue = 8 // GET_GAME_TIMER sy1_text_timer_end // sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start // IF sy1_text_timer_diff > 3000 // GET_SCRIPT_TASK_STATUS scplayer TASK_USE_MOBILE_PHONE sy1_player_status // IF sy1_player_status = FINISHED_TASK // TASK_USE_MOBILE_PHONE scplayer TRUE // ENDIF // IF NOT IS_CHAR_ON_ANY_BIKE scplayer // sy1_counter = 12 // CESAR: Sitting by the damn road just South of Blueberry! // ENDIF // GET_GAME_TIMER sy1_text_timer_start // sy1_dialogue = 9 // ENDIF // ENDIF // IF sy1_dialogue = 9 // GET_GAME_TIMER sy1_text_timer_end // sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start // IF sy1_text_timer_diff > 3000 // GET_SCRIPT_TASK_STATUS scplayer TASK_USE_MOBILE_PHONE sy1_player_status // IF sy1_player_status = FINISHED_TASK // TASK_USE_MOBILE_PHONE scplayer TRUE // ENDIF // IF NOT IS_CHAR_ON_ANY_BIKE scplayer // sy1_counter = 13 // They spotted me and shot out my tyres. // ENDIF // GET_GAME_TIMER sy1_text_timer_start // sy1_dialogue = 10 // ENDIF // ENDIF // IF sy1_dialogue = 10 // GET_GAME_TIMER sy1_text_timer_end // sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start // IF sy1_text_timer_diff > 3000 // GET_SCRIPT_TASK_STATUS scplayer TASK_USE_MOBILE_PHONE sy1_player_status // IF sy1_player_status = FINISHED_TASK // TASK_USE_MOBILE_PHONE scplayer TRUE // ENDIF // IF NOT IS_CHAR_ON_ANY_BIKE scplayer // sy1_counter = 14 // CARL: Hang on, I'll be there any minute! // ENDIF // GET_GAME_TIMER sy1_text_timer_start // sy1_dialogue = 11 // ENDIF // ENDIF IF sy1_dialogue = 11 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 1 IF flag_syn1_skip1 = 1 SET_UP_SKIP -85.5180 -413.1554 0.4297 240.0212 ENDIF // TASK_USE_MOBILE_PHONE scplayer FALSE // IF NOT IS_CAR_DEAD sy1_player_car // LOCK_CAR_DOORS sy1_player_car CARLOCK_UNLOCKED // ENDIF IF NOT IS_MESSAGE_BEING_DISPLAYED PRINT ( SYN1_02 ) 10000 1 // Go and pick up Cesar. ENDIF GET_GAME_TIMER sy1_text_timer_start sy1_dialogue = 12 sy1_cut = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF sy1_temp_flag = 0 IF IS_BUTTON_PRESSED PAD1 DPADRIGHT TASK_USE_MOBILE_PHONE scplayer FALSE IF NOT IS_CAR_DEAD sy1_player_car LOCK_CAR_DOORS sy1_player_car CARLOCK_UNLOCKED ENDIF sy1_dialogue = 12 sy1_cut = 1 GOSUB sy1_cesar_car_create IF NOT IS_CHAR_DEAD sy1_cesar TASK_PLAY_ANIM sy1_cesar BOM_plant_Loop BOMBER 4.0 1 0 0 0 -1 ENDIF sy1_temp_flag = 1 ENDIF ENDIF IF sy1_temp_flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer sy1_cesar_car_x sy1_cesar_car_y sy1_cesar_car_z 150.0 150.0 150.0 TRUE TASK_USE_MOBILE_PHONE scplayer FALSE IF NOT IS_CAR_DEAD sy1_player_car LOCK_CAR_DOORS sy1_player_car CARLOCK_UNLOCKED ENDIF GOSUB sy1_cesar_car_create IF NOT IS_CHAR_DEAD sy1_cesar TASK_PLAY_ANIM sy1_cesar BOM_plant_Loop BOMBER 4.0 1 0 0 0 -1 ENDIF sy1_dialogue = 12 sy1_temp_flag = 1 ENDIF ENDIF IF sy1_temp_flag = 1 IF NOT IS_CHAR_DEAD sy1_cesar AND NOT IS_CAR_DEAD sy1_cesar_car IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer sy1_cesar 30.0 30.0 30.0 FALSE AND NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer sy1_cesar 8.0 8.0 8.0 FALSE PRINT_NOW ( SYN1_15 ) 100 1 // Get in the car. IF sy1_anim_flag = 0 IF NOT IS_CHAR_DEAD sy1_cesar GET_SCRIPT_TASK_STATUS sy1_cesar TASK_PLAY_ANIM sy1_cesar_status IF sy1_cesar_status = FINISHED_TASK TASK_PLAY_ANIM sy1_cesar BOM_plant_Loop BOMBER 4.0 1 0 0 0 -1 ENDIF ENDIF ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer sy1_cesar 8.0 8.0 8.0 FALSE CLEAR_CHAR_TASKS sy1_cesar IF sy1_anim_flag = 0 sy1_anim_flag = 1 ENDIF IF NOT IS_CHAR_IN_ANY_CAR scplayer IF NOT IS_GROUP_MEMBER sy1_cesar players_group IF flag_syn1_skip1 = 0 flag_syn1_skip1 = 1 ENDIF MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER players_group sy1_cesar REMOVE_BLIP sy1_cesar_blip //BURST_CAR_TYRE sy1_cesar_car 0 ADD_BLIP_FOR_CAR sy1_cesar_car sy1_cesar_car_blip SET_BLIP_AS_FRIENDLY sy1_cesar_car_blip TRUE // Get in the fucking car GET_GAME_TIMER sy1_text_timer_start sy1_text_timer_start -= 3000 //sy1_dialogue = 0 sy1_stage = 2 sy1_cut = 4 sy1_meet = 1 sy1_in_car = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // ---- Cesar dies IF sy1_stage = 1 IF sy1_temp_flag = 1 IF IS_CHAR_DEAD sy1_cesar CLEAR_PRINTS PRINT ( SYN1_06 ) 5000 1 // Cesar didn't make it. GOTO mission_failed_syn1 ENDIF ENDIF ENDIF IF sy1_stage = 2 OR sy1_stage = 3 IF IS_CHAR_DEAD sy1_cesar CLEAR_PRINTS PRINT ( SYN1_06 ) 5000 1 // Cesar didn't make it. GOTO mission_failed_syn1 ENDIF IF IS_CAR_DEAD sy1_cesar_car CLEAR_PRINTS PRINT ( SYN1_08 ) 5000 1 // You destroyed the car! GOTO mission_failed_syn1 ENDIF ENDIF IF sy1_stage = 2 IF sy1_in_car = 1 AND sy1_grouped = 1 AND sy1_dialogue = 12 sy1_dialogue = 2 ELSE IF sy1_dialogue > 5 IF sy1_grouped = 1 IF sy1_temp_flag = 1 IF sy1_audio_playing = 0 AND sy1_counter = 0 sy1_counter = 10 sy1_temp_flag = 2 ENDIF ENDIF ENDIF IF sy1_temp_flag = 1 IF sy1_grouped = 0 AND sy1_counter = 0 AND sy1_audio_playing = 0 PRINT_NOW ( SYN1_15 ) 100 1 // Get in Cesars car. SET_RADIO_CHANNEL RS_CLASSIC_HIP_HOP ENDIF ENDIF IF sy1_temp_flag = 3 IF sy1_grouped = 1 AND sy1_counter = 0 AND sy1_audio_playing = 0 PRINT_NOW ( SYN1_07 ) 100 1 // Get in the car. SET_RADIO_CHANNEL RS_CLASSIC_HIP_HOP ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD sy1_cesar AND NOT IS_CAR_DEAD sy1_cesar_car IF IS_CHAR_IN_CAR sy1_cesar sy1_cesar_car IF sy1_dialogue = 2 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 3500 IF sy1_audio_playing = 0 sy1_counter = 15 // CARL: Where to? GET_GAME_TIMER sy1_text_timer_start sy1_dialogue = 3 CHECKPOINT_SAVE 1 ENDIF ENDIF ENDIF IF sy1_dialogue = 3 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 1000 IF sy1_audio_playing = 0 sy1_counter = 16 // CESAR: They were headed over Angel Pine way. Follow the road and maybe we can pick them up! GET_GAME_TIMER sy1_text_timer_start sy1_dialogue = 4 ENDIF ENDIF ENDIF IF sy1_dialogue = 4 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 1000 IF sy1_audio_playing = 0 PRINT ( SYN1_13 ) 10000 1 // Track the car GET_GAME_TIMER sy1_text_timer_start sy1_dialogue = 5 ENDIF ENDIF ENDIF ENDIF ENDIF IF sy1_cut = 4 IF NOT IS_CHAR_DEAD sy1_cesar AND NOT IS_CAR_DEAD sy1_cesar_car IF IS_CHAR_IN_CAR sy1_cesar sy1_cesar_car IF IS_CHAR_IN_CAR scplayer sy1_cesar_car IF LOCATE_CHAR_IN_CAR_3D scplayer sy1_park_x sy1_park_y sy1_park_z 4.0 4.0 4.0 TRUE IF flag_syn1_skip2 = 0 flag_syn1_skip2 = 1 ENDIF SET_PLAYER_CONTROL player1 OFF GET_GAME_TIMER sy1_text_timer_start REMOVE_BLIP sy1_park_blip ADD_BLIP_FOR_COORD sy1_dummy_car_x sy1_dummy_car_y sy1_dummy_car_z sy1_vantage_blip PRINT_NOW ( SYN1_14 ) 5000 1 // Get on the roof sy1_stage = 3 IF IS_GROUP_MEMBER sy1_cesar players_group REMOVE_CHAR_FROM_GROUP sy1_cesar OPEN_SEQUENCE_TASK sy1_cesar_stairs TASK_LEAVE_CAR -1 sy1_cesar_car TASK_GO_STRAIGHT_TO_COORD -1 -2160.5149 -2413.4492 29.6250 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2162.4524 -2414.2295 29.6328 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2165.8843 -2411.8853 31.6250 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2168.9573 -2409.1177 33.6180 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2170.8401 -2414.2397 33.2969 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2167.7407 -2416.9531 33.2969 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2168.3616 -2419.4397 33.2969 PEDMOVE_WALK -2 CLOSE_SEQUENCE_TASK sy1_cesar_stairs PERFORM_SEQUENCE_TASK sy1_cesar sy1_cesar_stairs ENDIF CHECKPOINT_SAVE 99 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF sy1_stage = 3 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 500 SET_PLAYER_CONTROL player1 ON ENDIF IF LOCATE_CHAR_ON_FOOT_3D scplayer sy1_dummy_car_x sy1_dummy_car_y sy1_dummy_car_z 1.2 1.2 2.0 TRUE DO_FADE 100 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD sy1_cesar_car SET_CAR_PROOFS sy1_cesar_car TRUE TRUE TRUE TRUE TRUE SET_CAR_HEALTH sy1_cesar_car 1000 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_COORDINATES sy1_cesar_car -2160.0603 -2409.6306 29.6172 SET_CAR_HEADING sy1_cesar_car 191.1948 ENDIF IF NOT IS_CHAR_DEAD sy1_cesar SET_CHAR_PROOFS sy1_cesar TRUE TRUE TRUE TRUE TRUE ENDIF ALTER_WANTED_LEVEL player1 0 REMOVE_BLIP sy1_vantage_blip SET_CHAR_COORDINATES scplayer sy1_dummy_car_x sy1_dummy_car_y sy1_dummy_car_z GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_CAMERA 30000 LOAD_SCENE sy1_dummy_car_x sy1_dummy_car_y sy1_dummy_car_z LOAD_SCENE sy1_ryder_car_x sy1_ryder_car_y sy1_ryder_car_z PRINT_HELP_FOREVER ( SYN1_44 ) // ~m~~widget_zoom_in~ Zoom in. ~m~~widget_zoom_out~ Zoom out. GOSUB sy1_dummy_car_create GOSUB sy1_ryder_car_create DO_FADE 100 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE sy1_stage = 5 sy1_cut = 0 GET_GAME_TIMER sy1_text_timer_start PRINT_NOW ( SYN1_12 ) 10000 1 // Get them quick ENDIF ENDIF IF sy1_stage = 5 GET_CAMERA_FOV sy1_fov IF sy1_cut = 0 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 8000 IF NOT IS_CAR_DEAD sy1_ryder_car IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR sy1_ryder_car START_PLAYBACK_RECORDED_CAR sy1_ryder_car 190 ENDIF ENDIF ENDIF IF sy1_text_timer_diff > 10000 IF sy1_audio_playing = 0 sy1_counter = 17 sy1_cut = 1 ENDIF ENDIF ENDIF // ---- Ryder IF sy1_cut = 1 IF NOT IS_CAR_DEAD sy1_ryder_car AND NOT IS_CHAR_DEAD sy1_ryder IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR sy1_ryder_car OPEN_SEQUENCE_TASK sy1_ryder_walk TASK_LEAVE_CAR -1 sy1_ryder_car TASK_GO_STRAIGHT_TO_COORD -1 -2151.4746 -2442.0647 29.6328 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2157.3882 -2441.6162 29.6250 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2162.4712 -2444.5745 29.6250 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2167.3086 -2451.8782 29.6250 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2166.5168 -2456.9656 29.6250 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2160.4199 -2461.4680 29.6328 PEDMOVE_WALK -2 CLOSE_SEQUENCE_TASK sy1_ryder_walk PERFORM_SEQUENCE_TASK sy1_ryder sy1_ryder_walk sy1_cut = 2 ENDIF ENDIF ENDIF IF sy1_cut = 2 IF NOT IS_CAR_DEAD sy1_ryder_car AND NOT IS_CHAR_DEAD sy1_ryder IF NOT IS_CHAR_IN_CAR sy1_ryder sy1_ryder_car ADD_BLIP_FOR_CHAR sy1_ryder sy1_ryder_blip IF HAS_CHAR_BEEN_PHOTOGRAPHED sy1_ryder ENDIF PRINT_NOW ( SYN1_04 ) 5000 1 // Take the photograph // Take the photo sy1_cut = 3 ENDIF ENDIF ENDIF IF sy1_cut = 3 IF NOT IS_CHAR_DEAD sy1_ryder GET_SCRIPT_TASK_STATUS sy1_ryder PERFORM_SEQUENCE_TASK sy1_ryder_status IF sy1_ryder_status = FINISHED_TASK DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD sy1_dummy_car DETACH_CHAR_FROM_CAR scplayer DELETE_CAR sy1_dummy_car SET_CHAR_COORDINATES scplayer sy1_dummy_car_x sy1_dummy_car_y sy1_dummy_car_z SET_CHAR_HEADING scplayer 210.0 PRINT_NOW ( SYN1_09 ) 7500 1 // ~r~You didn't get the photo! GOTO mission_failed_syn1 ENDIF ENDIF ENDIF ENDIF IF sy1_cut = 3 IF sy1_photo_targets = 0 IF NOT IS_CHAR_DEAD sy1_ryder IF HAS_CHAR_BEEN_PHOTOGRAPHED sy1_ryder IF sy1_fov < sy1_ideal_fov GET_CHAR_HEADING sy1_ryder sy1_ryder_h IF sy1_ryder_h > sy1_upper_heading OR sy1_ryder_h < sy1_lower_heading IF sy1_audio_playing = 0 CLEAR_PRINTS //PRINT ( SYN1_11 ) 3000 1 // Got him! //ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP sy1_ryder_blip GOSUB sy1_tbone_car_create sy1_audio_seq = 0 sy1_cut = 4 ENDIF ELSE PRINT ( SYN1_10 ) 3000 1 // Get a photo of his face! IF HAS_CHAR_BEEN_PHOTOGRAPHED sy1_ryder ENDIF ENDIF ELSE PRINT ( SYN1_05 ) 3000 1 // Zoom in further IF HAS_CHAR_BEEN_PHOTOGRAPHED sy1_ryder ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF sy1_cut > 3 AND sy1_cut < 7 IF sy1_photo_targets = 0 IF sy1_audio_playing = 0 IF sy1_audio_seq = 0 sy1_counter = 20 ENDIF IF sy1_audio_seq = 1 sy1_counter = 22 ENDIF IF sy1_audio_seq = 2 sy1_counter = 27 sy1_photo_targets = 1 ENDIF ENDIF ENDIF ENDIF // ---- TBone IF sy1_cut = 4 IF NOT IS_CAR_DEAD sy1_tbone_car AND NOT IS_CHAR_DEAD sy1_tbone IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR sy1_tbone_car OPEN_SEQUENCE_TASK sy1_tbone_walk TASK_LEAVE_CAR -1 sy1_tbone_car TASK_GO_STRAIGHT_TO_COORD -1 -2156.6895 -2441.7119 29.6250 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2161.1423 -2444.1865 29.6250 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2165.8298 -2449.4763 29.6250 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2167.1379 -2454.5098 29.6328 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2164.0945 -2458.8633 29.6250 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2161.3364 -2460.5225 29.6328 PEDMOVE_WALK -2 CLOSE_SEQUENCE_TASK sy1_tbone_walk PERFORM_SEQUENCE_TASK sy1_tbone sy1_tbone_walk sy1_cut = 5 ENDIF ENDIF ENDIF IF sy1_cut = 5 IF NOT IS_CAR_DEAD sy1_tbone_car AND NOT IS_CHAR_DEAD sy1_tbone IF NOT IS_CHAR_IN_CAR sy1_tbone sy1_tbone_car ADD_BLIP_FOR_CHAR sy1_tbone sy1_tbone_blip IF HAS_CHAR_BEEN_PHOTOGRAPHED sy1_tbone ENDIF PRINT_NOW ( SYN1_04 ) 5000 1 // Take the photograph // Take the photo sy1_cut = 6 ENDIF ENDIF ENDIF IF sy1_cut = 6 IF NOT IS_CHAR_DEAD sy1_tbone GET_SCRIPT_TASK_STATUS sy1_tbone PERFORM_SEQUENCE_TASK sy1_tbone_status IF sy1_tbone_status = FINISHED_TASK DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD sy1_dummy_car DETACH_CHAR_FROM_CAR scplayer DELETE_CAR sy1_dummy_car SET_CHAR_COORDINATES scplayer sy1_dummy_car_x sy1_dummy_car_y sy1_dummy_car_z SET_CHAR_HEADING scplayer 210.0 PRINT_NOW ( SYN1_09 ) 7500 1 // ~r~You didn't get the photo! GOTO mission_failed_syn1 ENDIF ENDIF ENDIF ENDIF IF sy1_cut = 6 IF sy1_photo_targets = 1 IF NOT IS_CHAR_DEAD sy1_tbone IF HAS_CHAR_BEEN_PHOTOGRAPHED sy1_tbone IF sy1_fov < sy1_ideal_fov GET_CHAR_HEADING sy1_tbone sy1_tbone_h IF sy1_tbone_h > sy1_upper_heading OR sy1_tbone_h < sy1_lower_heading IF sy1_audio_playing = 0 CLEAR_PRINTS //PRINT ( SYN1_11 ) 3000 1 // Got him! //ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP sy1_tbone_blip GOSUB sy1_toreno_car_create sy1_audio_seq = 0 sy1_cut = 7 ENDIF ELSE PRINT ( SYN1_10 ) 3000 1 // Get a photo of his face! IF HAS_CHAR_BEEN_PHOTOGRAPHED sy1_tbone ENDIF ENDIF ELSE PRINT ( SYN1_05 ) 3000 1 // Zoom in further IF HAS_CHAR_BEEN_PHOTOGRAPHED sy1_tbone ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF sy1_cut > 6 AND sy1_cut < 10 IF sy1_photo_targets = 1 IF sy1_audio_playing = 0 IF sy1_audio_seq = 0 sy1_counter = 32 ENDIF IF sy1_audio_seq = 1 sy1_counter = 33 ENDIF IF sy1_audio_seq = 2 sy1_counter = 30 sy1_photo_targets = 2 ENDIF ENDIF ENDIF ENDIF // ---- toreno IF sy1_cut = 7 IF NOT IS_CAR_DEAD sy1_toreno_car AND NOT IS_CHAR_DEAD sy1_toreno IF IS_PLAYBACK_GOING_ON_FOR_CAR sy1_toreno_car GET_OFFSET_FROM_CAR_IN_WORLD_COORDS sy1_toreno_car 0.0 4.0 0.0 sy1_offset_x sy1_offset_y sy1_offset_z sy1_min_x = sy1_offset_x - 1.0 sy1_min_y = sy1_offset_y - 1.0 sy1_min_z = sy1_offset_z - 1.0 sy1_max_x = sy1_offset_x + 1.0 sy1_max_y = sy1_offset_y + 1.0 sy1_max_z = sy1_offset_z + 1.0 IF IS_AREA_OCCUPIED sy1_min_x sy1_min_y sy1_min_z sy1_max_x sy1_max_y sy1_max_z FALSE FALSE TRUE FALSE FALSE STOP_PLAYBACK_RECORDED_CAR sy1_toreno_car ENDIF ENDIF IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR sy1_toreno_car OPEN_SEQUENCE_TASK sy1_toreno_walk TASK_LEAVE_CAR -1 sy1_toreno_car TASK_GO_STRAIGHT_TO_COORD -1 -2176.8550 -2453.5398 29.4688 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2172.5171 -2453.8345 29.6250 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2169.3833 -2456.0796 29.6250 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2162.8123 -2459.8394 29.6328 PEDMOVE_WALK -2 CLOSE_SEQUENCE_TASK sy1_toreno_walk PERFORM_SEQUENCE_TASK sy1_toreno sy1_toreno_walk sy1_cut = 8 ENDIF ENDIF ENDIF IF sy1_cut = 8 IF NOT IS_CAR_DEAD sy1_toreno_car AND NOT IS_CHAR_DEAD sy1_toreno IF NOT IS_CHAR_IN_CAR sy1_toreno sy1_toreno_car ADD_BLIP_FOR_CHAR sy1_toreno sy1_toreno_blip IF HAS_CHAR_BEEN_PHOTOGRAPHED sy1_toreno ENDIF PRINT_NOW ( SYN1_04 ) 5000 1 // Take the photograph // Take the photo sy1_cut = 9 ENDIF ENDIF ENDIF IF sy1_cut = 9 IF NOT IS_CHAR_DEAD sy1_toreno GET_SCRIPT_TASK_STATUS sy1_toreno PERFORM_SEQUENCE_TASK sy1_toreno_status IF sy1_toreno_status = FINISHED_TASK DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD sy1_dummy_car DETACH_CHAR_FROM_CAR scplayer DELETE_CAR sy1_dummy_car SET_CHAR_COORDINATES scplayer sy1_dummy_car_x sy1_dummy_car_y sy1_dummy_car_z SET_CHAR_HEADING scplayer 210.0 PRINT_NOW ( SYN1_09 ) 7500 1 // ~r~You didn't get the photo! GOTO mission_failed_syn1 ENDIF ENDIF ENDIF ENDIF IF sy1_cut = 9 IF sy1_photo_targets = 2 IF NOT IS_CHAR_DEAD sy1_toreno IF HAS_CHAR_BEEN_PHOTOGRAPHED sy1_toreno IF sy1_fov < sy1_ideal_fov GET_CHAR_HEADING sy1_toreno sy1_toreno_h IF sy1_toreno_h > sy1_upper_heading OR sy1_toreno_h < sy1_lower_heading IF sy1_audio_playing = 0 CLEAR_PRINTS //PRINT ( SYN1_11 ) 3000 1 // Got him! //ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP sy1_toreno_blip GOSUB sy1_jizzy_car_create sy1_audio_seq = 0 sy1_cut = 10 ENDIF ELSE PRINT ( SYN1_10 ) 3000 1 // Get a photo of his face! IF HAS_CHAR_BEEN_PHOTOGRAPHED sy1_toreno ENDIF ENDIF ELSE PRINT ( SYN1_05 ) 3000 1 // Zoom in further IF HAS_CHAR_BEEN_PHOTOGRAPHED sy1_toreno ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF sy1_cut > 9 AND sy1_cut < 13 IF sy1_photo_targets = 2 IF sy1_audio_playing = 0 IF sy1_audio_seq = 0 sy1_counter = 42 ENDIF IF sy1_audio_seq = 1 sy1_counter = 43 ENDIF IF sy1_audio_seq = 2 sy1_counter = 39 sy1_photo_targets = 3 ENDIF ENDIF ENDIF ENDIF // ---- jizzy IF sy1_cut = 10 IF NOT IS_CAR_DEAD sy1_jizzy_car AND NOT IS_CHAR_DEAD sy1_jizzy IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR sy1_jizzy_car OPEN_SEQUENCE_TASK sy1_jizzy_walk TASK_LEAVE_CAR -1 sy1_jizzy_car TASK_GO_STRAIGHT_TO_COORD -1 -2173.3906 -2445.9854 29.4688 PEDMOVE_WALK -2 TASK_STAND_STILL -1 1500 TASK_GO_STRAIGHT_TO_COORD -1 -2170.4680 -2449.1865 29.4688 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2167.9741 -2454.9741 29.6250 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2163.5393 -2458.7529 29.6250 PEDMOVE_WALK -2 CLOSE_SEQUENCE_TASK sy1_jizzy_walk PERFORM_SEQUENCE_TASK sy1_jizzy sy1_jizzy_walk sy1_cut = 11 ENDIF ENDIF ENDIF IF sy1_cut = 11 IF NOT IS_CAR_DEAD sy1_jizzy_car AND NOT IS_CHAR_DEAD sy1_jizzy IF NOT IS_CHAR_IN_CAR sy1_jizzy sy1_jizzy_car ADD_BLIP_FOR_CHAR sy1_jizzy sy1_jizzy_blip IF HAS_CHAR_BEEN_PHOTOGRAPHED sy1_jizzy ENDIF PRINT_NOW ( SYN1_04 ) 5000 1 // Take the photograph // Take the photo sy1_cut = 12 ENDIF ENDIF ENDIF IF sy1_cut = 12 IF NOT IS_CHAR_DEAD sy1_jizzy GET_SCRIPT_TASK_STATUS sy1_jizzy PERFORM_SEQUENCE_TASK sy1_jizzy_status IF NOT sy1_jizzy_status = FINISHED_TASK GET_SEQUENCE_PROGRESS sy1_jizzy sy1_jizzy_progress IF sy1_jizzy_progress = 1 IF NOT IS_CAR_DEAD sy1_jizzy_car IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR sy1_jizzy_car START_PLAYBACK_RECORDED_CAR sy1_jizzy_car 194 ENDIF ENDIF ENDIF ENDIF IF sy1_jizzy_status = FINISHED_TASK DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD sy1_dummy_car DETACH_CHAR_FROM_CAR scplayer DELETE_CAR sy1_dummy_car SET_CHAR_COORDINATES scplayer sy1_dummy_car_x sy1_dummy_car_y sy1_dummy_car_z SET_CHAR_HEADING scplayer 210.0 PRINT_NOW ( SYN1_09 ) 7500 1 // ~r~You didn't get the photo! GOTO mission_failed_syn1 ENDIF ENDIF ENDIF ENDIF IF sy1_cut = 12 IF sy1_photo_targets = 3 IF NOT IS_CHAR_DEAD sy1_jizzy IF HAS_CHAR_BEEN_PHOTOGRAPHED sy1_jizzy IF sy1_fov < sy1_ideal_fov GET_CHAR_HEADING sy1_jizzy sy1_jizzy_h IF sy1_jizzy_h > sy1_upper_heading OR sy1_jizzy_h < sy1_lower_heading IF sy1_audio_playing = 0 CLEAR_PRINTS //ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP sy1_jizzy_blip sy1_audio_seq = 0 sy1_cut = 13 ENDIF ELSE PRINT ( SYN1_10 ) 3000 1 // Get a photo of his face! IF HAS_CHAR_BEEN_PHOTOGRAPHED sy1_jizzy ENDIF ENDIF ELSE PRINT ( SYN1_05 ) 3000 1 // Zoom in further IF HAS_CHAR_BEEN_PHOTOGRAPHED sy1_jizzy ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF sy1_cut = 13 IF sy1_photo_targets = 3 IF sy1_audio_playing = 0 IF sy1_audio_seq = 0 sy1_counter = 40 ENDIF IF sy1_audio_seq = 1 sy1_counter = 41 ENDIF IF sy1_audio_seq = 2 sy1_counter = 29 sy1_photo_targets = 4 sy1_stage = 6 sy1_cut = -3 ENDIF ENDIF ENDIF ENDIF ENDIF //-2170.2451 -2410.9556 33.2969 //-2169.0303 -2409.3274 33.6180 //-2165.3877 -2411.7463 31.6250 //-2161.8145 -2414.8108 29.6250 IF sy1_stage = 6 IF sy1_cut = -3 IF sy1_counter = 0 DO_FADE 150 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_HELP SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON IF NOT IS_CHAR_DEAD sy1_cesar DETACH_CHAR_FROM_CAR scplayer IF NOT IS_CAR_DEAD sy1_dummy_car DELETE_CAR sy1_dummy_car ENDIF SET_FIXED_CAMERA_POSITION -2161.7197 -2411.5823 31.9003 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2162.6575 -2411.3965 32.1930 JUMP_CUT SET_CHAR_COORDINATES sy1_cesar -2169.0303 -2409.3274 33.6180 SET_CHAR_HEADING sy1_cesar 232.4401 SET_CHAR_COORDINATES scplayer -2170.2451 -2410.9556 33.2969 SET_CHAR_HEADING scplayer 322.3848 OPEN_SEQUENCE_TASK sy1_down_stairs TASK_GO_STRAIGHT_TO_COORD -1 -2169.0303 -2409.3274 33.6180 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2165.3877 -2411.7463 31.6250 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 -2161.8145 -2414.8108 29.6250 PEDMOVE_RUN -2 CLOSE_SEQUENCE_TASK sy1_down_stairs sy1_cut = -2 ENDIF ENDIF ENDIF IF sy1_cut = -2 IF NOT IS_CHAR_DEAD sy1_cesar PERFORM_SEQUENCE_TASK sy1_cesar sy1_down_stairs PERFORM_SEQUENCE_TASK scplayer sy1_down_stairs DO_FADE 150 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GET_GAME_TIMER sy1_text_timer_start sy1_cut = -1 ENDIF ENDIF IF sy1_cut = -1 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 4500 sy1_cut = 0 ENDIF ENDIF IF sy1_cut = 0 DO_FADE 250 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD sy1_cesar_car AND NOT IS_CHAR_DEAD sy1_cesar CLEAR_PRINTS WARP_CHAR_INTO_CAR scplayer sy1_cesar_car WARP_CHAR_INTO_CAR_AS_PASSENGER sy1_cesar sy1_cesar_car 0 // SET_CHAR_COORDINATES scplayer sy1_dummy_car_x sy1_dummy_car_y sy1_dummy_car_z // SET_CHAR_HEADING scplayer 210.0 // GOTO mission_passed_syn1 //LOAD_SCENE sy1_cam_x[10] sy1_cam_y[10] sy1_cam_z[10] MARK_MODEL_AS_NO_LONGER_NEEDED BROADWAY UNLOAD_SPECIAL_CHARACTER 4 UNLOAD_SPECIAL_CHARACTER 5 SET_FIXED_CAMERA_POSITION -2152.2551 -2416.0493 30.2724 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2153.1738 -2415.7009 30.4581 JUMP_CUT REQUEST_CAR_RECORDING 197 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 197 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD sy1_cesar_car START_PLAYBACK_RECORDED_CAR sy1_cesar_car 197 GET_GAME_TIMER sy1_text_timer_start ENDIF DO_FADE 100 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD sy1_cesar IF IS_GROUP_MEMBER sy1_cesar players_group REMOVE_CHAR_FROM_GROUP sy1_cesar ENDIF ENDIF sy1_cut = 1 sy1_temp_flag = 1 ENDIF ENDIF IF sy1_cut = 1 IF NOT IS_CAR_DEAD sy1_cesar_car GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_temp_flag = 1 IF sy1_text_timer_diff > 1000 POINT_CAMERA_AT_POINT -2152.8691 -2416.8384 30.2850 INTERPOLATION sy1_temp_flag = 2 ENDIF ENDIF IF sy1_temp_flag = 2 IF sy1_text_timer_diff > 6000 SET_FIXED_CAMERA_POSITION -2267.2942 -2565.4023 31.7381 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2266.4109 -2564.9900 31.9617 JUMP_CUT sy1_temp_flag = 3 ENDIF ENDIF IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR sy1_cesar_car IF NOT IS_CAR_DEAD sy1_cesar_car AND NOT IS_CHAR_DEAD sy1_cesar TASK_LEAVE_CAR scplayer sy1_cesar_car TASK_LOOK_AT_CHAR sy1_cesar scplayer -2 CLEAR_AREA sy1_cam_x[10] sy1_cam_y[10] sy1_cam_z[10] 50.0 TRUE // SET_FIXED_CAMERA_POSITION sy1_cam_x[10] sy1_cam_y[10] sy1_cam_z[10] 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT sy1_cam_look_x[10] sy1_cam_look_y[10] sy1_cam_look_z[10] JUMP_CUT REQUEST_CAR_RECORDING 198 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 198 WAIT 0 ENDWHILE GET_GAME_TIMER sy1_text_timer_start sy1_cut = 2 ENDIF ENDIF ENDIF ENDIF IF sy1_cut = 2 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 2000 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD sy1_cesar AND NOT IS_CAR_DEAD sy1_cesar_car IF sy1_audio_playing = 0 TASK_SHUFFLE_TO_NEXT_CAR_SEAT sy1_cesar sy1_cesar_car sy1_counter = 50 // That was some heavy shit! TASK_LOOK_AT_CHAR scplayer sy1_cesar -2 TASK_TURN_CHAR_TO_FACE_CHAR scplayer sy1_cesar SET_FIXED_CAMERA_POSITION sy1_cam_x[11] sy1_cam_y[11] sy1_cam_z[11] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT sy1_cam_look_x[11] sy1_cam_look_y[11] sy1_cam_look_z[11] JUMP_CUT GET_GAME_TIMER sy1_text_timer_start sy1_cut = 3 ENDIF ENDIF ENDIF ENDIF IF sy1_cut = 3 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 1000 IF NOT IS_CHAR_DEAD sy1_cesar AND NOT IS_CAR_DEAD sy1_cesar_car IF sy1_audio_playing = 0 sy1_counter = 51 // We'd better split up and get out of here. TASK_LOOK_AT_CHAR sy1_cesar scplayer -2 sy1_cut = 4 GET_GAME_TIMER sy1_text_timer_start ENDIF ENDIF ENDIF ENDIF IF sy1_cut = 4 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 1 sy1_cut = 5 GET_GAME_TIMER sy1_text_timer_start ENDIF ENDIF IF sy1_cut = 5 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 1000 IF NOT IS_CHAR_DEAD sy1_cesar AND NOT IS_CAR_DEAD sy1_cesar_car IF sy1_audio_playing = 0 sy1_counter = 52 // Coolio, dude. We got what we came for. CLEAR_LOOK_AT scplayer CLEAR_LOOK_AT sy1_cesar SET_FIXED_CAMERA_POSITION -2243.2078 -2568.7312 32.6032 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2243.9453 -2568.0559 32.6050 JUMP_CUT START_PLAYBACK_RECORDED_CAR sy1_cesar_car 198 TASK_GO_STRAIGHT_TO_COORD scplayer -2249.5090 -2562.9563 30.9255 PEDMOVE_WALK -2 sy1_cut = 6 GET_GAME_TIMER sy1_text_timer_start ENDIF ENDIF ENDIF ENDIF IF sy1_cut = 6 GET_GAME_TIMER sy1_text_timer_end sy1_text_timer_diff = sy1_text_timer_end - sy1_text_timer_start IF sy1_text_timer_diff > 3000 IF NOT IS_CHAR_DEAD sy1_cesar AND NOT IS_CAR_DEAD sy1_cesar_car IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR sy1_cesar_car CLEAR_CHAR_TASKS scplayer DELETE_CAR sy1_cesar_car DELETE_CHAR sy1_cesar RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF GOTO mission_passed_syn1 sy1_cut = 7 ENDIF ENDIF ENDIF ENDIF ENDIF GOTO syn1_main_loop // ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------ // Mission Failed mission_failed_syn1: DO_FADE 500 FADE_IN PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // ------------------------------------------------------------------------------------------------ // Mission Passed mission_passed_syn1: DO_FADE 500 FADE_IN flag_synd_mission_counter ++ REGISTER_MISSION_PASSED ( SYND_1 ) PLAYER_MADE_PROGRESS 1 IF IS_PLAYER_PLAYING player1 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_CAMERA 24 ENDIF PLAY_MISSION_PASSED_TUNE 1 //PRINT_BIG ( M_PASSD ) 5000 1 //"Mission Passed!" ////ADD_SCORE player1 200 //AWARD_PLAYER_MISSION_RESPECT 15 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 15 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 15 //amount of respect CLEAR_WANTED_LEVEL player1 SET_INT_STAT PASSED_SYNDICATE1 1 RETURN // ------------------------------------------------------------------------------------------------ // Mission Cleanup mission_cleanup_syn1: DISPLAY_RADAR 3 // PATHING ON // ---- Entities + IF NOT IS_CHAR_DEAD scplayer SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE ENDIF IF NOT IS_CHAR_DEAD sy1_cesar SET_CHAR_PROOFS sy1_cesar FALSE FALSE FALSE FALSE FALSE ENDIF CLEAR_HELP REMOVE_BLIP sy1_ryder_blip REMOVE_BLIP sy1_tbone_blip REMOVE_BLIP sy1_toreno_blip REMOVE_BLIP sy1_jizzy_blip REMOVE_BLIP sy1_park_blip REMOVE_BLIP sy1_vantage_blip REMOVE_BLIP sy1_cesar_car_blip REMOVE_BLIP sy1_cesar_blip DELETE_CHAR sy1_ryder DELETE_CHAR sy1_tbone DELETE_CHAR sy1_toreno DELETE_CHAR sy1_jizzy DELETE_CAR sy1_ryder_car DELETE_CAR sy1_tbone_car DELETE_CAR sy1_toreno_car DELETE_CAR sy1_jizzy_car IF NOT IS_CAR_DEAD sy1_cesar_car IF NOT IS_CHAR_IN_CAR scplayer sy1_cesar_car DELETE_CAR sy1_cesar_car ENDIF ENDIF UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 UNLOAD_SPECIAL_CHARACTER 3 UNLOAD_SPECIAL_CHARACTER 4 UNLOAD_SPECIAL_CHARACTER 5 REMOVE_CHAR_ELEGANTLY sy1_cesar REMOVE_ANIMATION BOMBER MARK_MODEL_AS_NO_LONGER_NEEDED PICADOR MARK_MODEL_AS_NO_LONGER_NEEDED ZR350 MARK_MODEL_AS_NO_LONGER_NEEDED WASHING MARK_MODEL_AS_NO_LONGER_NEEDED BROADWAY MARK_MODEL_AS_NO_LONGER_NEEDED SHFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED CAMERA MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE MARK_MODEL_AS_NO_LONGER_NEEDED SAVANNA MARK_MODEL_AS_NO_LONGER_NEEDED MTBIKE MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED WALTON SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 SWITCH_CAR_GENERATOR car_gen_pine[0] 101 SWITCH_CAR_GENERATOR car_gen_pine[1] 101 SWITCH_CAR_GENERATOR car_gen_pine[2] 101 // ---- Models // ---- Clear Script Stuff flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED RETURN // ------------------------------------------------------------------------------------------------ // ---- SubRoutines sy1_player_car_check: // Get Player's car... IF NOT IS_CHAR_DEAD scplayer IF sy1_in_car = 0 IF sy1_grouped = 1 IF sy1_meet = 1 IF sy1_counter = 0 AND sy1_audio_playing = 0 PRINT_NOW ( SYN1_07 ) 100 1 // Get in the car. ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD sy1_cesar_car IF IS_CHAR_IN_CAR scplayer sy1_cesar_car REMOVE_BLIP sy1_cesar_car_blip STORE_CAR_CHAR_IS_IN scplayer sy1_player_car // Destination blip IF sy1_grouped = 1 // Destination blip ADD_BLIP_FOR_COORD sy1_park_x sy1_park_y sy1_park_z sy1_park_blip ENDIF IF sy1_dialogue = 5 PRINT ( SYN1_13 ) 10000 1 // Track the car ENDIF sy1_in_car = 1 ENDIF ENDIF ENDIF IF sy1_in_car = 1 IF NOT IS_CAR_DEAD sy1_cesar_car AND NOT IS_CHAR_DEAD sy1_cesar IF sy1_grouped = 1 IF sy1_skip = 0 IF IS_CHAR_IN_CAR sy1_cesar sy1_cesar_car IF flag_syn1_skip2 = 1 SET_UP_SKIP_FOR_SPECIFIC_VEHICLE -2201.9124 -2279.0356 29.4688 230.5228 sy1_cesar_car ENDIF sy1_skip = 1 ELSE CLEAR_SKIP ENDIF ENDIF ELSE sy1_skip = 0 CLEAR_SKIP ENDIF IF NOT IS_CHAR_IN_CAR scplayer sy1_cesar_car IF sy1_grouped = 1 // Destination blip REMOVE_BLIP sy1_park_blip REMOVE_BLIP sy1_cesar_car_blip ADD_BLIP_FOR_CAR sy1_cesar_car sy1_cesar_car_blip SET_BLIP_AS_FRIENDLY sy1_cesar_car_blip TRUE ENDIF sy1_in_car = 0 ENDIF ENDIF ENDIF ENDIF RETURN sy1_player_group_check: IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD sy1_cesar IF sy1_grouped = 0 IF NOT IS_GROUP_MEMBER sy1_cesar players_group IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer sy1_cesar 8.0 8.0 8.0 FALSE IF sy1_in_car = 1 REMOVE_BLIP sy1_park_blip ADD_BLIP_FOR_COORD sy1_park_x sy1_park_y sy1_park_z sy1_park_blip ELSE REMOVE_BLIP sy1_cesar_car_blip ADD_BLIP_FOR_CAR sy1_cesar_car sy1_cesar_car_blip SET_BLIP_AS_FRIENDLY sy1_cesar_car_blip TRUE ENDIF MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER players_group sy1_cesar REMOVE_BLIP sy1_cesar_blip sy1_meet = 1 sy1_grouped = 1 ENDIF ELSE sy1_grouped = 1 ENDIF ENDIF IF sy1_grouped = 1 IF NOT IS_GROUP_MEMBER sy1_cesar players_group IF sy1_in_car = 1 // Destination blip REMOVE_BLIP sy1_park_blip ELSE REMOVE_BLIP sy1_cesar_car_blip ENDIF CLEAR_SKIP CLEAR_PRINTS ADD_BLIP_FOR_CHAR sy1_cesar sy1_cesar_blip SET_BLIP_AS_FRIENDLY sy1_cesar_blip TRUE IF sy1_meet = 1 PRINT_NOW ( SYN1_02 ) 10000 1 // ~s~Go and pick up ~y~Cesar~s~. ENDIF sy1_grouped = 0 ENDIF ENDIF ENDIF RETURN sy1_dialogue_pos: IF sy1_counter = 1 // CJ. OR sy1_counter = 3 // My cousin in Los Santos called me. OR sy1_counter = 4 // He gave me a tip about a Ballas car going San Fierro way to score yay. OR sy1_counter = 6 // Read your mind, holmes, OR sy1_counter = 7 // I picked them up at the Mulholland Intersection and I'm tailing them now. OR sy1_counter = 9 // Better make it fast, holmes, these boys aren't hanging around! sy1_audio_char = 0 ENDIF IF sy1_counter = 2 // You got it. OR sy1_counter = 5 // Damn, we gotta find out who's supplyin' those cats. OR sy1_counter = 8 // Ok, I'm coming out to meet you. OR sy1_counter = 10 // I've got an idea - I'll be there in a minute. sy1_audio_char = scplayer ENDIF IF sy1_counter = 11 // Hey, Cesar, I'm coming your way, where are you? OR sy1_counter = 14 // Hang on, I'll be there any minute! sy1_audio_char = scplayer ENDIF IF sy1_counter = 12 // Sitting by the damn road just South of Blueberry! OR sy1_counter = 13 // They spotted me and shot out my tyres! sy1_audio_char = 0 ENDIF IF sy1_counter = 15 // Where to? sy1_audio_char = scplayer ENDIF IF sy1_counter = 16 // They were headed over Angel Pine way. Follow the road and maybe we can pick them up! sy1_audio_char = sy1_cesar ENDIF IF sy1_counter = 17 // There it is, holmes! OR sy1_counter = 19 // Who's that in the back? OR sy1_counter = 22 // This business is bigger than any gang, esse. OR sy1_counter = 23 // Someone's coming out of the diner's back door! OR sy1_counter = 25 // Neither, holmes, he's San Fierro Rifa! OR sy1_counter = 26 // Ryder's getting out of the car! sy1_audio_char = sy1_cesar ENDIF IF sy1_counter = 18 // That's our ballas car alright. OR sy1_counter = 20 // Ryder, you sherm-head! OR sy1_counter = 21 // What's he rolling with Ballas for? OR sy1_counter = 24 // Who's this guy, Aztecas? Vagos? OR sy1_counter = 27 // Ryder, you lap dog! OR sy1_counter = 28 // That must be the cash... sy1_audio_char = scplayer ENDIF IF sy1_counter = 29 // They're being clever about this, there's no exchange, nothing incriminating. OR sy1_counter = 30 // What now? Was that it? OR sy1_counter = 32 // This guy takes himself real serious! OR sy1_counter = 34 // There's the courier with a fresh load of yay for Ryder and his new friends. sy1_audio_char = scplayer ENDIF IF sy1_counter = 31 // Hey, holmes, check the van! OR sy1_counter = 33 // Oh, esse, that's T-Bone Mendez. OR sy1_counter = 35 // Who are all these guys? sy1_audio_char = sy1_cesar ENDIF IF sy1_counter = 36 // More San Fierro Rifa, by the looks of things. OR sy1_counter = 37 // They sure keep their security tight! OR sy1_counter = 38 // I didn't scope those guys, did you? OR sy1_counter = 39 // No. This is more than just a few thugs pushing product, this is seriously organised! OR sy1_counter = 40 // How many of these clowns are there? OR sy1_counter = 41 // I know a pimp when I see one! sy1_audio_char = 0 ENDIF IF sy1_counter = 42 // Who's the gringo? OR sy1_counter = 43 // I don't like the look of that guy. OR sy1_counter = 44 // Uh-oh, I think he's clocked us! OR sy1_counter = 45 // Well we're not exactly inconspicuous up here. OR sy1_counter = 46 // Besides, what's he going to do, huh, throw stones at us? sy1_audio_char = 0 ENDIF IF sy1_counter = 47 // Oh fuck! OH FUCK! OR sy1_counter = 48 // Get us out of here! OR sy1_counter = 50 // That was some heavy shit! OR sy1_counter = 52 // Coolio, dude. We got what we came for sy1_audio_char = scplayer ENDIF IF sy1_counter = 49 // Pope crap! OR sy1_counter = 51 // We better split up and get outta here. I'll meet you back at the garage! sy1_audio_char = sy1_cesar ENDIF RETURN //sy1_smoke_a_blunt: // IF NOT IS_CHAR_DEAD sy1_ryder // IF IS_CHAR_PLAYING_ANIM sy1_ryder m_smk_in // GET_CHAR_ANIM_CURRENT_TIME sy1_ryder m_smk_in sy1_anim_time // // IF sy1_anim_flag = 0 // IF sy1_anim_time >= 0.32499 // CREATE_OBJECT cigar_glow sy1_ryder_car_x sy1_ryder_car_y sy1_ryder_car_z sy1_cigar_glow_object // ATTACH_OBJECT_TO_OBJECT sy1_cigar_glow_object sy1_cigar_object 0.0 0.0 0.0 0.0 0.0 0.0 // sy1_anim_flag = 1 // ENDIF // ENDIF // IF sy1_anim_flag = 1 // IF sy1_anim_time >= 0.42999 // AND sy1_anim_time < 0.8 // PLAY_FX_SYSTEM sy1_ryder_exhale // DELETE_OBJECT sy1_cigar_glow_object // sy1_anim_flag = 2 // ENDIF // ENDIF // IF sy1_anim_flag = 2 // IF sy1_anim_time >= 0.8 // OR sy1_anim_time < 0.42999 // STOP_FX_SYSTEM sy1_ryder_exhale // sy1_anim_flag = 0 // ENDIF // ENDIF // // ELSE // STOP_FX_SYSTEM sy1_ryder_exhale // ENDIF // ENDIF // // IF NOT IS_CHAR_DEAD sy1_ryder // IF IS_CHAR_PLAYING_ANIM sy1_ryder m_smk_drag // GET_CHAR_ANIM_CURRENT_TIME sy1_ryder m_smk_drag sy1_anim_time // // IF sy1_anim_flag = 0 // IF sy1_anim_time >= 0.27273 // CREATE_OBJECT cigar_glow sy1_ryder_car_x sy1_ryder_car_y sy1_ryder_car_z sy1_cigar_glow_object // ATTACH_OBJECT_TO_OBJECT sy1_cigar_glow_object sy1_cigar_object 0.0 0.0 0.0 0.0 0.0 0.0 // sy1_anim_flag = 1 // ENDIF // ENDIF // IF sy1_anim_flag = 1 // IF sy1_anim_time >= 0.46364 // AND sy1_anim_time < 0.8 // PLAY_FX_SYSTEM sy1_ryder_exhale // DELETE_OBJECT sy1_cigar_glow_object // sy1_anim_flag = 2 // ENDIF // ENDIF // IF sy1_anim_flag = 2 // IF sy1_anim_time >= 0.8 // OR sy1_anim_time < 0.46364 // STOP_FX_SYSTEM sy1_ryder_exhale // sy1_anim_flag = 0 // ENDIF // ENDIF // // ELSE // STOP_FX_SYSTEM sy1_ryder_exhale // ENDIF // ENDIF // // IF NOT IS_CHAR_DEAD sy1_ryder // IF IS_CHAR_PLAYING_ANIM sy1_ryder m_smk_out // GET_CHAR_ANIM_CURRENT_TIME sy1_ryder m_smk_out sy1_anim_time // // IF sy1_anim_flag = 0 // IF sy1_anim_time >= 0.27778 // CREATE_OBJECT cigar_glow sy1_ryder_car_x sy1_ryder_car_y sy1_ryder_car_z sy1_cigar_glow_object // ATTACH_OBJECT_TO_OBJECT sy1_cigar_glow_object sy1_cigar_object 0.0 0.0 0.0 0.0 0.0 0.0 // sy1_anim_flag = 1 // ENDIF // ENDIF // IF sy1_anim_flag = 1 // IF sy1_anim_time >= 0.51111 // AND sy1_anim_time < 0.86667 // PLAY_FX_SYSTEM sy1_ryder_exhale // DELETE_OBJECT sy1_cigar_glow_object // sy1_anim_flag = 2 // ENDIF // ENDIF // IF sy1_anim_flag = 2 // IF sy1_anim_time >= 0.8667 // OR sy1_anim_time < 0.27778 // STOP_FX_SYSTEM sy1_ryder_exhale // DROP_OBJECT sy1_ryder TRUE // sy1_anim_flag = 0 // ENDIF // ENDIF // // ELSE // STOP_FX_SYSTEM sy1_ryder_exhale // ENDIF // ENDIF // //RETURN } /* (MOB_40) CESAR calls CARL [PHO_A_1:SYN1] CESAR: CJ. [PHO_A_2:SYN1] CARL: You got it. [PHO_A_3:SYN1] CESAR: My cousin in Los Santos called me. He gave me a tip about a Ballas car going San Fierro way to score yay. [PHO_A_4:SYN1] CARL: Damn, we gotta find out who's supplyin' those cats. [PHO_A_5:SYN1] CESAR: Read your mind, holmes, I picked them up at the Mulholland Intersection and I'm tailing them now. [PHO_A_6:SYN1] CARL: Ok, I'm coming out to meet you. [PHO_A_7:SYN1] CESAR: Better make it fast, holmes, these boys aren't hanging around! [PHO_A_8:SYN1] CARL: I've got an idea - I'll be there in a minute. [PHO_B_1:SYN1] PILOT: Hey, who are you? [PHO_B_2:SYN1] CARL: Eerr, Helmet Inspection Officer? [PHO_B_3:SYN1] CARL: Oh, look over there! [PHO_B_4:SYN1] PILOT: Where? [PHO_B_5:SYN1] CARL: There! [PHO_B_6:SYN1] PILOT: Ow! Ooomph! [PHO_C_1:SYN1] CARL: Hey, Cesar, I'm coming your way, where are you? [PHO_C_2:SYN1] CESAR: Sitting by the damn road just South of Blueberry! [PHO_C_3:SYN1] CESAR: They spotted me and shot out my tyres! [PHO_C_4:SYN1] CARL: Hang on, I'll be there any minute! [PHO_D_1:SYN1] PILOT: Ok, sucker, the game's up! [PHO_D_2:SYN1] CARL: Is that a gun at the back of my head? [PHO_D_3:SYN1] PILOT: No, I'm just fucking pleased to see you! [PHO_D_4:SYN1] PILOT: Land this thing! [PHO_D_5:SYN1] PILOT: Enjoy the walk, asshole! [PHO_D_6:SYN1] CESAR: Shit, I'm outta here! [PHO_E_1:SYN1] CESAR: Wow! Holmes! I didn't know you could fly! [PHO_E_2:SYN1] CARL: I can't. I'm learning - get in. [PHO_E_3:SYN1] CESAR: There's somebody sleeping back here, eh. [PHO_E_4:SYN1] CARL: Yeah. Leave him, he should be ok. [PHO_E_5:SYN1] CARL: Where to? [PHO_E_6:SYN1] CESAR: They were headed over Angel Pine way. Follow the road and maybe we can pick them up! [PHO_F_1:SYN1] CESAR: Holmes, this dude's waking up! [PHO_F_2:SYN1] PILOT: I've been awake for ages - land this thing! [PHO_F_3:SYN1] CESAR: Dude, he's got a gun, we better land. [PHO_F_4:SYN1] PILOT: Screw you guys! [PHO_F_5:SYN1] CESAR: Shit, I'm outta here! [PHO_G_1:SYN1] CESAR: There it is, holmes, parked behind that diner! [PHO_G_2:SYN1] CARL: I brought a camera, take that stick and keep her steady! [PHO_G_3:SYN1] CESAR: Sweet Mother of Mary! [PHO_G_4:SYN1] CESAR: CJ, I can't fly this thing! [PHO_G_5:SYN1] CESAR: Hey you! Wake up, I know you're just pretending! [PHO_G_6:SYN1] PILOT: Ok, ok! Just don't shoot me! [PHO_G_7:SYN1] CARL: Keep her steady! [PHO_H_1:SYN1] CARL: That's our Balla car alright. [PHO_H_2:SYN1] CESAR: Who's that in the back? [PHO_H_3:SYN1] CARL: Ryder, you sherm-head! What's he rolling with Ballas for? [PHO_H_4:SYN1] CESAR: This business is bigger than any gang, esse. [PHO_H_5:SYN1] CESAR: Someone's coming out of the diner's back door. [PHO_H_6:SYN1] CARL: Who's this guy - Aztecas? Vagos? [PHO_H_7:SYN1] CESAR: Neither, holmes, he's San Fierro Rifa. [PHO_H_8:SYN1] CESAR: Ryder's getting out of the car. [PHO_H_9:SYN1] CARL: Ryder, you lap dog! That must be the cash... [PHO_H10:SYN1] CARL: They're being clever about this -~n~there's no exchange, nothing incriminating. [PHO_H11:SYN1] CARL: What now? Was that it? [PHO_H12:SYN1] CESAR: Hey, holmes, check the van! [PHO_H13:SYN1] CARL: This guy takes himself real serious! [PHO_H14:SYN1] CESAR: Oh, esse, that's T-Bone Mendez. [PHO_H15:SYN1] CESAR: He did time for running black tar out of Mexico. [PHO_H16:SYN1] CESAR: Killed two Aztecas inside - real bad blood with my esse's. [PHO_H17:SYN1] CESAR: He's a fucking psycho, man. [PHO_H18:SYN1] CARL: There's the courier with a fresh load of yay for Ryder and his new friends. [PHO_H19:SYN1] CARL: Who are all these guys? [PHO_H20:SYN1] CARL: More San Fierro Rifa, by the looks of things. [PHO_H21:SYN1] CARL: They sure keep their security tight! [PHO_H22:SYN1] CESAR: I didn't scope those guys, did you? [PHO_H23:SYN1] CARL: No, this is more than just a few thugs pushing product, ~n~this is seriously organised! [PHO_H24:SYN1] CESAR: How many of these clowns are there? [PHO_H25:SYN1] CARL: I know a pimp when I see one! [PHO_H26:SYN1] CESAR: Who's the gringo? [PHO_H27:SYN1] CARL: I don't like the look of that guy. [PHO_H28:SYN1] CARL: Uh-oh, I think he's clocked us! [PHO_H29:SYN1] CESAR: Well, we're not exactly inconspicuous up here. [PHO_H30:SYN1] CESAR: Besides, what's he going to do, huh, throw stones at us? [PHO_H31:SYN1] CARL: Oh fuck! OH FUCK! Get us out of here! [PHO_I_1:SYN1] CESAR: Pope crap! [PHO_I_2:SYN1] CARL: That was some heavy shit! [PHO_I_3:SYN1] CESAR: We better split up and get out of here. I'll meet you back at the garage! [PHO_I_4:SYN1] CARL: Coolio, dude. We got what we came for. [SYN1_01:SYN1] ~s~Go and steal a car. [SYN1_02:SYN1] ~s~Go and pick up ~y~Cesar~s~. [SYN1_03:SYN1] ~s~Track down that ~y~Balla car~s~. [SYN1_04:SYN1] ~s~Take the ~r~photograph~s~. [SYN1_05:SYN1] ~s~Zoom in further. [SYN1_06:SYN1] ~r~Cesar didn't make it. */ MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION MISSNAM : Blonde Ambition (syn2.sc) // AUTHOR : Neil // DESICRIPTION : Meet up with jizzy and do some pimping // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** { // ************************************************************************************************************* // GENERAL INITIALISATION - Every level requires this // ************************************************************************************************************* SCRIPT_NAME SYN2 GOSUB mission_start_SYN2 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_SYN2 ENDIF GOSUB mission_cleanup_SYN2 MISSION_END mission_start_SYN2: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 // general variables that are in every mission - DON'T DECLARE MISSION SPECIFIC VARIABLES HERE LVAR_INT m_stage LVAR_INT m_goals LVAR_INT m_passed LVAR_INT m_failed LVAR_INT m_this_frame_time LVAR_INT m_last_frame_time LVAR_INT m_time_diff // commonly used temporary variables LVAR_INT temp_int temp_int2 temp_int3 LVAR_FLOAT temp_float temp_float2 temp_float3 LVAR_FLOAT x2 y2 z2 LVAR_FLOAT vec_x vec_y vec_z LVAR_INT temp_seq LVAR_INT dialogue_timer hippy_away_from_kicking m_stage = 0 m_goals = 0 m_passed = 0 m_failed = 0 mission_loop_SYN2: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S m_passed = 1 ENDIF // timer LVAR_INT hippy_timer GET_GAME_TIMER m_this_frame_time m_time_diff = m_this_frame_time - m_last_frame_time m_last_frame_time = m_this_frame_time get_back_in_car_reminder_timer += m_time_diff convoy_stopped_timer += m_time_diff rich_backup_timer += m_time_diff dialogue_timer += m_time_diff //rich_chase_car_timer[0] += m_time_diff //rich_chase_car_timer[1] += m_time_diff //rich_chase_car_timer[2] += m_time_diff //rich_chase_car_timer[3] += m_time_diff rich_car_timer += m_time_diff suspicion_timer += m_time_diff hippy_timer += m_time_diff damaged_preacher_timer += m_time_diff WAIT 0 GOSUB SYN2_debug_shit SWITCH m_stage CASE 0 GOSUB SYN2_m_stage_0 BREAK CASE 1 GOSUB SYN2_m_stage_1 BREAK CASE 2 GOSUB SYN2_m_stage_2 BREAK CASE 3 GOSUB SYN2_m_stage_3 BREAK CASE 4 GOSUB SYN2_m_stage_4 BREAK CASE 5 GOSUB SYN2_m_stage_5 BREAK CASE 6 GOSUB SYN2_m_stage_6 BREAK CASE 7 GOSUB SYN2_m_stage_7 BREAK CASE 8 GOSUB SYN2_m_stage_8 BREAK ENDSWITCH GOSUB SYN2_GLOBAL_SHIT // temp_int = 0 // temp_int2 = 1 // WHILE temp_int2 < 38 // LINE convoy_route_x[temp_int] convoy_route_y[temp_int] convoy_route_z[temp_int] convoy_route_x[temp_int2] convoy_route_y[temp_int2] convoy_route_z[temp_int2] // IF IS_POINT_ON_SCREEN convoy_route_x[temp_int2] convoy_route_y[temp_int2] convoy_route_z[temp_int2] 5.0 // DRAW_CORONA convoy_route_x[temp_int] convoy_route_y[temp_int] convoy_route_z[temp_int] 1.0 CORONATYPE_MOON FLARETYPE_NONE 255 0 0 // ENDIF // temp_int++ // temp_int2++ // ENDWHILE // end of main loop IF m_failed = 0 IF m_passed = 0 GOTO mission_loop_SYN2 ELSE GOSUB mission_passed_SYN2 RETURN ENDIF ELSE GOSUB mission_failed_SYN2 RETURN ENDIF SYN2_debug_shit: LVAR_INT debug_on IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_X IF debug_on = 0 debug_on = 1 WRITE_DEBUG LEVEL_DEBUG_ON ELSE debug_on = 0 WRITE_DEBUG LEVEL_DEBUG_OFF ENDIF ENDIF IF debug_on = 1 // display mission stage variables for debug LVAR_INT display_debug VAR_FLOAT syn2_view_debug_f[8] VAR_INT syn2_view_debug[8] IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_SPACE CLEAR_ALL_VIEW_VARIABLES display_debug++ IF display_debug > 3 display_debug = 0 ENDIF ENDIF IF display_debug = 1 syn2_view_debug[0] = m_stage syn2_view_debug[1] = m_goals syn2_view_debug[2] = convoy_progress syn2_view_debug[3] = TIMERA syn2_view_debug[4] = on_cutscene_duty syn2_view_debug[5] = audio_line_is_active syn2_view_debug[6] = dialogue_timer syn2_view_debug[7] = dialogue_flag VIEW_INTEGER_VARIABLE syn2_view_debug[0] m_stage VIEW_INTEGER_VARIABLE syn2_view_debug[1] m_goals VIEW_INTEGER_VARIABLE syn2_view_debug[2] convoy_progress VIEW_INTEGER_VARIABLE syn2_view_debug[3] TIMERA VIEW_INTEGER_VARIABLE syn2_view_debug[4] on_cutscene_duty VIEW_INTEGER_VARIABLE syn2_view_debug[5] audio_line_is_active VIEW_INTEGER_VARIABLE syn2_view_debug[6] dialogue_timer VIEW_INTEGER_VARIABLE syn2_view_debug[7] dialogue_flag ENDIF IF display_debug = 2 syn2_view_debug[0] = syn2_mission_attempts syn2_view_debug[1] = this_Car_health syn2_view_debug[2] = last_car_health syn2_view_debug[3] = player_has_attacked_convoy syn2_view_debug[4] = syn2_time_until_backup syn2_view_debug[5] = TIMERB // syn2_view_debug[6] = backup_call_dialogue //syn2_view_debug[7] = drop_phone_text VIEW_INTEGER_VARIABLE syn2_view_debug[0] syn2_mission_attempts VIEW_INTEGER_VARIABLE syn2_view_debug[1] this_Car_health VIEW_INTEGER_VARIABLE syn2_view_debug[2] last_car_health VIEW_INTEGER_VARIABLE syn2_view_debug[3] player_has_attacked_convoy VIEW_INTEGER_VARIABLE syn2_view_debug[4] syn2_time_until_backup VIEW_INTEGER_VARIABLE syn2_view_debug[5] TIMERB // VIEW_INTEGER_VARIABLE syn2_view_debug[6] backup_call_dialogue //VIEW_INTEGER_VARIABLE syn2_view_debug[7] drop_phone_text ENDIF IF display_debug = 3 syn2_view_debug[0] = rich_backup_timer //syn2_view_debug[1] = car_has_been_rammed // syn2_view_debug[2] = mib_car_task[0] // syn2_view_debug[3] = mib_car_task[1] // syn2_view_debug[4] = mib_car_task[2] syn2_view_debug_f[5] = limo_playback_speed //syn2_view_debug_f[6] = mib_car_playback_speed[1] // syn2_view_debug[7] = VIEW_INTEGER_VARIABLE syn2_view_debug[0] rich_backup_timer //VIEW_INTEGER_VARIABLE syn2_view_debug[1] car_has_been_rammed // VIEW_INTEGER_VARIABLE syn2_view_debug[2] mib_car_task[0] // VIEW_INTEGER_VARIABLE syn2_view_debug[3] mib_car_task[1] // VIEW_INTEGER_VARIABLE syn2_view_debug[4] mib_car_task[2] VIEW_FLOAT_VARIABLE syn2_view_debug_f[5] limo_playback_speed //VIEW_FLOAT_VARIABLE syn2_view_debug_f[6] mib_car_playback_speed[1] // VIEW_INTEGER_VARIABLE syn2_view_debug[7] ENDIF ENDIF RETURN // ************************************************************************************************************* // INITIALISATION - SPECIFIC TO THIS LEVEL // ************************************************************************************************************* SYN2_m_stage_0: // Specific mission variables // Fake create IF m_goals = -1 LVAR_INT jizzy LVAR_INT jizzy_car //VAR_INT syn2_mission_attempts // global variable - moved to initial.sc // blips LVAR_INT location_blip LVAR_INT jizzy_car_blip LVAR_INT hippy1_blip LVAR_INT hippy2_blip LVAR_INT rival_pimp_blip LVAR_INT text_flag clear_text_flag LVAR_INT girl1 LVAR_INT girl2 LVAR_INT girl3 LVAR_INT girl2_dm LVAR_INT rival_pimp rival_pimp_dm LVAR_INT get_back_in_car_reminder_timer VAR_INT syn2_timer LVAR_INT hippy_van LVAR_INT hippy_1 hippy_2 LVAR_INT rival_pimp_car LVAR_INT girl_is_with_rival LVAR_INT fix_rival_pimp_health LVAR_INT convoy_stopped_timer LVAR_INT rich_backup_timer LVAR_INT rich_car_health LVAR_INT next_rich_car_stop_health LVAR_INT pimp_attack_player LVAR_INT jizzy_phone VAR_INT syn2_time_until_backup LVAR_INT pimp_is_waiting LVAR_INT rich_car_timer LVAR_INT girl3_flag LVAR_INT suspicion_timer LVAR_INT phone_ringing ENDIF // Initialise any variables IF m_goals = 0 LVAR_FLOAT convoy_route_x[38] convoy_route_y[38] convoy_route_z[38] LVAR_INT convoy_progress convoy_progress = 0 convoy_route_X[0] = -1863.8798 convoy_route_Y[0] = 727.8510 convoy_route_Z[0] = 44.0619 convoy_route_X[1] = -1816.7933 convoy_route_Y[1] = 727.1199 convoy_route_Z[1] = 36.4934 convoy_route_X[2] = -1717.4587 convoy_route_Y[2] = 729.5344 convoy_route_Z[2] = 24.6517 convoy_route_X[3] = -1709.8418 convoy_route_Y[3] = 829.3579 convoy_route_Z[3] = 24.6505 convoy_route_X[4] = -1663.0173 convoy_route_Y[4] = 917.9272 convoy_route_Z[4] = 24.5226 convoy_route_X[5] = -1563.8864 convoy_route_Y[5] = 916.7482 convoy_route_Z[5] = 6.9176 convoy_route_X[6] = -1573.6129 convoy_route_Y[6] = 1016.9177 convoy_route_Z[6] = 6.9562 convoy_route_X[7] = -1585.4546 convoy_route_Y[7] = 1116.8708 convoy_route_Z[7] = 6.9488 convoy_route_X[8] = -1608.5723 convoy_route_Y[8] = 1214.6409 convoy_route_Z[8] = 6.9488 convoy_route_X[9] = -1678.0173 convoy_route_Y[9] = 1287.1173 convoy_route_Z[9] = 6.9487 convoy_route_X[10] = -1752.3992 convoy_route_Y[10] = 1354.9885 convoy_route_Z[10] = 6.9473 convoy_route_X[11] = -1852.1379 convoy_route_Y[11] = 1364.5398 convoy_route_Z[11] = 6.9488 convoy_route_X[12] = -1938.2400 convoy_route_Y[12] = 1312.3474 convoy_route_Z[12] = 6.9538 convoy_route_X[13] = -2037.6919 convoy_route_Y[13] = 1298.7739 convoy_route_Z[13] = 7.1712 convoy_route_X[14] = -2135.2407 convoy_route_Y[14] = 1279.3173 convoy_route_Z[14] = 22.4081 convoy_route_X[15] = -2234.5024 convoy_route_Y[15] = 1276.2395 convoy_route_Z[15] = 39.3992 convoy_route_X[16] = -2265.7432 convoy_route_Y[16] = 1182.4407 convoy_route_Z[16] = 55.4933 convoy_route_X[17] = -2266.2886 convoy_route_Y[17] = 1085.1447 convoy_route_Z[17] = 79.7480 convoy_route_X[18] = -2267.6042 convoy_route_Y[18] = 984.6959 convoy_route_Z[18] = 73.0856 convoy_route_X[19] = -2268.9946 convoy_route_Y[19] = 884.5173 convoy_route_Z[19] = 66.4014 convoy_route_X[20] = -2333.2935 convoy_route_Y[20] = 811.5989 convoy_route_Z[20] = 42.8954 convoy_route_X[21] = -2390.3655 convoy_route_Y[21] = 729.2283 convoy_route_Z[21] = 34.9301 convoy_route_X[22] = -2489.3591 convoy_route_Y[22] = 711.0146 convoy_route_Z[22] = 34.9302 convoy_route_X[23] = -2589.5073 convoy_route_Y[23] = 712.4084 convoy_route_Z[23] = 27.7727 convoy_route_X[24] = -2689.8579 convoy_route_Y[24] = 710.8961 convoy_route_Z[24] = 32.4395 convoy_route_X[25] = -2753.0542 convoy_route_Y[25] = 633.0150 convoy_route_Z[25] = 27.6617 convoy_route_X[26] = -2744.7925 convoy_route_Y[26] = 534.2344 convoy_route_Z[26] = 11.9062 convoy_route_X[27] = -2707.7407 convoy_route_Y[27] = 441.3501 convoy_route_Z[27] = 4.0892 convoy_route_X[28] = -2751.3872 convoy_route_Y[28] = 351.2291 convoy_route_Z[28] = 4.0969 convoy_route_X[29] = -2707.8999 convoy_route_Y[29] = 261.1717 convoy_route_Z[29] = 4.0968 convoy_route_X[30] = -2711.8862 convoy_route_Y[30] = 161.0435 convoy_route_Z[30] = 4.0971 convoy_route_X[31] = -2809.1890 convoy_route_Y[31] = 137.7394 convoy_route_Z[31] = 6.9555 convoy_route_X[32] = -2811.9087 convoy_route_Y[32] = 36.8614 convoy_route_Z[32] = 6.9488 convoy_route_X[33] = -2811.4033 convoy_route_Y[33] = -63.2554 convoy_route_Z[33] = 6.9488 convoy_route_X[34] = -2811.2791 convoy_route_Y[34] = -164.2748 convoy_route_Z[34] = 6.9381 convoy_route_X[35] = -2811.6013 convoy_route_Y[35] = -264.5668 convoy_route_Z[35] = 6.9488 convoy_route_X[36] = -2820.2043 convoy_route_Y[36] = -364.2359 convoy_route_Z[36] = 6.9488 convoy_route_X[37] = -2818.2666 convoy_route_Y[37] = -465.0786 convoy_route_Z[37] = 6.9941 LVAR_FLOAT pimp_route_x[8] pimp_route_y[8] pimp_route_z[8] LVAR_INT pimp_route_progress pimp_route_x[0] = -2428.2322 pimp_route_y[0] = -164.7728 pimp_route_z[0] = 34.3085 pimp_route_x[1] = -2433.5598 pimp_route_y[1] = -164.5040 pimp_route_z[1] = 34.3446 pimp_route_x[2] = -2452.7532 pimp_route_y[2] = -165.8061 pimp_route_z[2] = 34.3047 pimp_route_x[3] = -2469.1365 pimp_route_y[3] = -165.8884 pimp_route_z[3] = 24.9573 pimp_route_x[4] = -2469.6162 pimp_route_y[4] = -162.4438 pimp_route_z[4] = 24.6236 pimp_route_x[5] = -2463.0063 pimp_route_y[5] = -162.4879 pimp_route_z[5] = 24.9077 pimp_route_x[6] = -2460.3743 pimp_route_y[6] = -134.7403 pimp_route_z[6] = 24.8394 pimp_route_x[7] = -2478.1147 pimp_route_y[7] = -129.3914 pimp_route_z[7] = 24.6250 girl_is_with_rival = 0 fix_rival_pimp_health = 0 convoy_stopped_timer = 0 pimp_attack_player = 0 pimp_is_waiting = 0 phone_ringing = 0 m_goals++ ENDIF // Load any text / textures etc. IF m_goals = 1 LOAD_MISSION_TEXT SYN2 START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 m_goals++ ENDIF // Environment Settings IF m_goals = 2 //SET_PED_DENSITY_MULTIPLIER 1.0 //SET_CAR_DENSITY_MULTIPLIER 0.3 //SET_TIME_OF_DAY 23 1 SET_WANTED_MULTIPLIER 0.5 SUPPRESS_CAR_MODEL BROADWAY SUPPRESS_CAR_MODEL HUSTLER m_goals = 99 ENDIF // End of stage IF m_goals = 99 m_stage++ //m_stage = 6 m_goals = 0 ENDIF RETURN // ************************************************************************************************************* // STAGE 1 - Trigger - at garage - play cutscene then mission passed // ************************************************************************************************************* SYN2_m_stage_1: IF m_goals = 0 // choose whether to show first cutscene or not IF NOT syn2_mission_attempts = 0 m_stage++ m_goals = 0 ELSE m_goals++ ENDIF ENDIF // play first cutscene IF m_goals = 1 SET_PLAYER_CONTROL player1 OFF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 1 LOAD_CUTSCENE SYND_2A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 SET_CHAR_COORDINATES scplayer -2031.2542 161.4080 28.0391 SET_CHAR_HEADING scplayer 270.0 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON m_goals = 99 ENDIF // mission passed IF m_goals = 99 m_passed = 1 // also add a pathing blip for jizzy's club // trigger this blip through c++.. because there's two missions here and managing the blip between them is a bad recipe //ADD_BLIP_FOR_COORD syndX syndY syndZ stage1_pathing_blip ENDIF RETURN // ************************************************************************************************************* // STAGE 2 - Trigger - at pleasure dome - play 2nd cutscene // ************************************************************************************************************* SYN2_m_stage_2: // cutscene IF m_goals = 0 SET_PLAYER_CONTROL player1 OFF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 SET_AREA_VISIBLE 3 LOAD_CUTSCENE SYND_2B WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 SET_PLAYER_CONTROL player1 OFF m_goals++ ENDIF // create girl1 sitting in car IF m_goals = 1 REQUEST_MODEL BROADWAY REQUEST_MODEL HFYPRO LOAD_SPECIAL_CHARACTER 1 JIZZY REQUEST_ANIMATION GANGS LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED BROADWAY OR NOT HAS_MODEL_LOADED HFYPRO OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_ANIMATION_LOADED GANGS WAIT 0 ENDWHILE REQUEST_MODEL CELLPHONE REQUEST_ANIMATION CAR_CHAT WHILE NOT HAS_MODEL_LOADED CELLPHONE OR NOT HAS_ANIMATION_LOADED CAR_CHAT WAIT 0 ENDWHILE LVAR_INT empty_dm LVAR_INT tough_dm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY empty_dm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH tough_dm CLEAR_AREA -2623.3591 1410.7860 6.1629 20.0 TRUE CREATE_CHAR PEDTYPE_CIVMALE SPECIAL01 -2623.3591 1410.7860 6.1629 jizzy SET_CHAR_HEADING jizzy 192.3576 SET_CHAR_COORDINATES scplayer -2622.5464 1410.9503 6.1702 SET_CHAR_HEADING scplayer 199.6292 CUSTOM_PLATE_FOR_NEXT_CAR BROADWAY HO_2_HO_ CREATE_CAR BROADWAY -2625.4495 1401.6807 6.0877 jizzy_car SET_CAR_HEADING jizzy_car 188.0679 SET_CAR_HEALTH jizzy_car 3000 CHANGE_CAR_COLOUR jizzy_car 123 5 SET_CAR_HYDRAULICS jizzy_car FALSE CREATE_CHAR_AS_PASSENGER jizzy_car PEDTYPE_PROSTITUTE HFYPRO 0 girl1 SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR girl1 FALSE SET_CHAR_CANT_BE_DRAGGED_OUT girl1 TRUE SET_CHAR_SUFFERS_CRITICAL_HITS girl1 FALSE SET_CHAR_NEVER_TARGETTED girl1 TRUE SET_CHAR_DECISION_MAKER girl1 empty_dm MARK_MODEL_AS_NO_LONGER_NEEDED HFYPRO SET_CAN_BURST_CAR_TYRES jizzy_car FALSE ADD_BLIP_FOR_CAR jizzy_car jizzy_car_blip SET_BLIP_AS_FRIENDLY jizzy_car_blip TRUE SET_NEAR_CLIP 0.1 SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION -2622.9182 1410.8909 7.0207 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2622.9207 1409.8911 6.9998 JUMP_CUT //LOAD_SCENE -2622.9207 1409.8911 6.9998 LOAD_SCENE_IN_DIRECTION -2618.0 1396.0 7.0 211.0 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE m_goals++ TIMERB = 0 // PRINT_NOW SYN2_31 3000 1 // JIZZY - 'There a ho sitting in my car.' // PRINT SYN2_32 3000 1 //JIZZY - 'Take her to the hotel downtown.' // PRINT SYN2_33 3000 1 // JIZZY - 'I'll keep in touch on the car phone.' // PRINT SYN2_34 3000 1 //JIZZY - 'And mind the body work.' ENDIF IF m_goals > 1 AND m_goals < 7 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED m_goals = 7 ENDIF ENDIF IF m_goals = 2 IF NOT IS_CHAR_DEAD jizzy TASK_GO_STRAIGHT_TO_COORD jizzy -2623.4216 1404.9100 6.1537 PEDMOVE_WALK 15000 ENDIF TASK_GO_STRAIGHT_TO_COORD scplayer -2622.1274 1405.6326 6.1587 PEDMOVE_WALK 15000 m_goals++ ENDIF IF m_goals = 3 IF NOT IS_CHAR_DEAD jizzy GET_SCRIPT_TASK_STATUS jizzy TASK_GO_STRAIGHT_TO_COORD temp_int IF temp_int = FINISHED_TASK TIMERA = 0 m_goals++ ENDIF ENDIF ENDIF IF m_goals = 4 //IF TIMERA > 400 SET_FIXED_CAMERA_POSITION -2621.6973 1403.4926 7.8087 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2622.5742 1403.0470 7.6296 JUMP_CUT IF NOT IS_CHAR_DEAD jizzy SET_CHAR_COORDINATES jizzy -2624.0493 1402.8881 6.1406 SET_CHAR_HEADING jizzy 248.4552 ENDIF SET_CHAR_COORDINATES scplayer -2622.9736 1402.1765 6.1322 SET_CHAR_HEADING scplayer 86.0103 IF NOT IS_CHAR_DEAD jizzy OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 prtial_gngtlkC GANGS 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 prtial_gngtlkB GANGS 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 prtial_gngtlkA GANGS 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 prtial_gngtlkD GANGS 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 prtial_gngtlkE GANGS 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 prtial_gngtlkG GANGS 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 prtial_gngtlkH GANGS 4.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK jizzy temp_Seq CLEAR_SEQUENCE_TASK temp_Seq ENDIF TIMERA = 0 m_goals++ //ENDIF ENDIF IF m_goals = 5 IF dialogue_flag > 6 IF NOT IS_CHAR_DEAD jizzy TASK_GO_STRAIGHT_TO_COORD jizzy -2623.3591 1410.7860 6.1629 PEDMOVE_WALK 15000 TIMERA = 0 m_goals++ ENDIF ENDIF ENDIF IF m_goals = 6 IF TIMERA > 1500 AND dialogue_flag > 6 m_goals++ ENDIF ENDIF IF m_goals > 1 AND m_goals < 7 IF audio_line_is_active = 0 IF dialogue_timer > 1000 SWITCH dialogue_flag CASE 0 $audio_string = &SYN2_BA audio_sound_file = SOUND_SYN2_BA START_NEW_SCRIPT audio_line jizzy 0 1 1 0 dialogue_flag++ BREAK CASE 1 $audio_string = &SYN2_BB audio_sound_file = SOUND_SYN2_BB START_NEW_SCRIPT audio_line jizzy 0 1 1 0 dialogue_flag++ BREAK CASE 2 $audio_string = &SYN2_BC audio_sound_file = SOUND_SYN2_BC START_NEW_SCRIPT audio_line jizzy 0 1 1 0 dialogue_flag++ BREAK CASE 3 $audio_string = &SYN2_BD audio_sound_file = SOUND_SYN2_BD START_NEW_SCRIPT audio_line jizzy 0 1 1 0 dialogue_flag++ BREAK CASE 4 $audio_string = &SYN2_BE audio_sound_file = SOUND_SYN2_BE START_NEW_SCRIPT audio_line jizzy 0 1 1 0 dialogue_flag++ BREAK CASE 5 $audio_string = &SYN2_BF audio_sound_file = SOUND_SYN2_BF START_NEW_SCRIPT audio_line jizzy 0 1 1 0 dialogue_flag++ BREAK CASE 6 dialogue_flag++ BREAK ENDSWITCH dialogue_timer = 0 ENDIF ENDIF ENDIF IF m_goals = 7 START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS IF NOT IS_CHAR_DEAD jizzy DELETE_CHAR jizzy ENDIF REMOVE_ANIMATION GANGS UNLOAD_SPECIAL_CHARACTER 1 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -2622.9736 1402.1765 6.1322 SET_CHAR_HEADING scplayer 86.0103 SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON m_goals = 99 ENDIF // exit IF m_goals = 99 m_goals = 0 m_stage++ ENDIF RETURN // ************************************************************************************************************* // STAGE 3 - Take girl to hotel // ************************************************************************************************************* SYN2_m_stage_3: IF m_goals = -1 ADD_BLIP_FOR_COORD 0.0 0.0 0.0 location_blip ENDIF // initialisation IF m_goals = 0 text_flag = 0 clear_text_flag = 0 syn2_timer = 540000 //DISPLAY_ONSCREEN_TIMER_WITH_STRING syn2_timer TIMER_DOWN SYN_T_1 PRINT_NOW SYN2_37 7000 1 // get in the car with the ho. TIMERA = 0 m_goals++ ENDIF // wait for player to get in car with jizzy and girl IF m_goals = 1 IF NOT IS_CAR_DEAD jizzy_car IF IS_CHAR_IN_CAR scplayer jizzy_car REMOVE_BLIP jizzy_car_blip ADD_BLIP_FOR_COORD -1929.9542 724.0631 44.3047 location_blip PRINT_NOW SYN2_01 7000 1 // drive jizzy's girl down town REQUEST_MODEL MICRO_UZI WHILE NOT HAS_MODEL_LOADED MICRO_UZI WAIT 0 ENDWHILE ENSURE_PLAYER_HAS_DRIVE_BY_WEAPON player1 250 MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI on_cutscene_duty = -1 TIMERA = 0 text_flag = 0 m_goals++ ENDIF ENDIF IF TIMERA > 60000 PRINT_NOW SYN2_37 7000 1 // get in the car with the ho. TIMERA = 0 ENDIF ENDIF IF m_goals > 1 IF DOES_BLIP_EXIST jizzy_car_blip IF DOES_BLIP_EXIST location_blip REMOVE_BLIP location_blip ENDIF ELSE IF NOT DOES_BLIP_EXIST location_blip ADD_BLIP_FOR_COORD -1929.9542 724.0631 44.3047 location_blip CHANGE_BLIP_COLOUR location_blip YELLOW ENDIF ENDIF ENDIF // wait for player to arrive IF m_goals = 2 IF DOES_BLIP_EXIST location_blip IF NOT IS_CAR_DEAD jizzy_car IF LOCATE_CAR_3D jizzy_car -1929.9542 724.0631 44.3047 4.0 4.0 4.0 TRUE IF IS_CHAR_IN_CAR scplayer jizzy_car IF IS_VEHICLE_ON_ALL_WHEELS jizzy_car STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 2000000 SET_PLAYER_CONTROL player1 OFF REMOVE_BLIP location_blip m_goals++ ENDIF ENDIF ENDIF ENDIF ENDIF IF debug_on = 1 IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK SET_CHAR_COORDINATES scplayer -1929.9542 724.0631 44.3047 ENDIF ENDIF IF text_flag < 8 IF NOT IS_MESSAGE_BEING_DISPLAYED IF NOT IS_CHAR_DEAD girl1 IF NOT IS_CAR_DEAD jizzy_car IF IS_CHAR_IN_CAR scplayer jizzy_car IF audio_line_is_active = 0 IF dialogue_timer > 1000 SWITCH text_flag CASE 0 $audio_string = &SYN2_LM audio_sound_file = SOUND_SYN2_LM START_NEW_SCRIPT audio_line girl1 0 1 1 0 dialogue_timer = -4000 text_flag++ BREAK CASE 1 $audio_string = &SYN2_LN audio_sound_file = SOUND_SYN2_LN START_NEW_SCRIPT audio_line girl1 0 1 1 0 dialogue_timer = -2000 text_flag++ BREAK CASE 2 $audio_string = &SYN2_LO audio_sound_file = SOUND_SYN2_LO START_NEW_SCRIPT audio_line scplayer 0 1 1 0 dialogue_timer = 0 text_flag++ BREAK CASE 3 $audio_string = &SYN2_LP audio_sound_file = SOUND_SYN2_LP START_NEW_SCRIPT audio_line girl1 0 1 1 0 dialogue_timer = 0 text_flag++ BREAK CASE 4 $audio_string = &SYN2_LQ audio_sound_file = SOUND_SYN2_LQ START_NEW_SCRIPT audio_line scplayer 0 1 1 0 dialogue_timer = 0 text_flag++ BREAK CASE 5 $audio_string = &SYN2_LR audio_sound_file = SOUND_SYN2_LR START_NEW_SCRIPT audio_line girl1 0 1 1 0 dialogue_timer = 0 text_flag++ BREAK CASE 6 $audio_string = &SYN2_LS audio_sound_file = SOUND_SYN2_LS START_NEW_SCRIPT audio_line scplayer 0 1 1 0 dialogue_timer = 0 text_flag++ BREAK CASE 7 $audio_string = &SYN2_LT audio_sound_file = SOUND_SYN2_LT START_NEW_SCRIPT audio_line girl1 0 1 1 0 dialogue_timer = 0 text_flag++ BREAK ENDSWITCH ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF on_cutscene_duty = -1 IF TIMERA > 7000 on_cutscene_duty = 0 get_back_in_car_reminder_timer = 30000 ENDIF ENDIF IF on_cutscene_duty = 0 // if player gets out car - tell him to get back in IF NOT IS_CAR_DEAD jizzy_car IF NOT IS_CHAR_IN_CAR scplayer jizzy_car IF get_back_in_car_reminder_timer > 30000 PRINT_NOW SYN_M_1 5000 1 // get back in the pimpmobile get_back_in_car_reminder_timer = 0 ENDIF ELSE IF get_back_in_car_reminder_timer < 30000 CLEAR_PRINTS get_back_in_car_reminder_timer = 30000 ENDIF ENDIF ENDIF ENDIF ENDIF // waif for car to stop IF m_goals = 3 IF NOT IS_CAR_DEAD jizzy_car IF IS_CAR_STOPPED jizzy_car m_goals++ // DO_FADE 500 FADE_OUT // WHILE GET_FADING_STATUS // WAIT 0 // ENDWHILE ENDIF ENDIF ENDIF // show girl1 leaving car IF m_goals = 4 stored_weapon_model = -1 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON //FREEZE_ONSCREEN_TIMER TRUE CLEAR_PRINTS SET_FIXED_CAMERA_POSITION -1941.8452 731.7922 45.4219 0.0 0.0 0.0 //-1929.8002 728.8456 46.5413 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1940.9730 731.3325 45.5894 JUMP_CUT //-1929.0494 728.1935 46.4354 JUMP_CUT CLEAR_AREA -1924.9542 724.0631 44.3047 20.0 TRUE SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 // DO_FADE 500 FADE_IN // WHILE GET_FADING_STATUS // WAIT 0 // ENDWHILE IF NOT IS_CHAR_DEAD girl1 OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CAR_DEAD jizzy_car TASK_LEAVE_CAR -1 jizzy_car ENDIF TASK_GO_STRAIGHT_TO_COORD -1 -1921.5046 719.3201 44.4375 PEDMOVE_WALK 20000 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK girl1 temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF TIMERA = 0 TIMERB = 0 $audio_string = &SYN2_LU audio_sound_file = SOUND_SYN2_LU START_NEW_SCRIPT audio_line girl1 0 1 1 0 m_goals++ ENDIF // wait a couple of tics before starting phone coversation IF m_goals = 5 IF TIMERA > 1000 AND audio_line_is_active = 0 dialogue_flag = 0 dialogue_timer = 0 TIMERB = 0 TIMERA = 0 m_goals++ ENDIF ENDIF IF m_goals > 5 AND m_goals < 99 IF audio_line_is_active = 0 IF dialogue_timer > 1000 SWITCH dialogue_flag CASE 0 $audio_string = &SYN2_CA audio_sound_file = SOUND_SYN2_CA START_NEW_SCRIPT audio_line scplayer 0 1 1 0 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SYN2_CB dialogue_flag++ BREAK CASE 1 $audio_string = &SYN2_CB audio_sound_file = SOUND_SYN2_CB START_NEW_SCRIPT audio_line -1 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN2_CC dialogue_flag++ BREAK CASE 2 $audio_string = &SYN2_CC audio_sound_file = SOUND_SYN2_CC START_NEW_SCRIPT audio_line -1 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SYN2_CD dialogue_flag++ BREAK CASE 3 $audio_string = &SYN2_CD audio_sound_file = SOUND_SYN2_CD START_NEW_SCRIPT audio_line -1 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN2_CE dialogue_flag++ BREAK CASE 4 $audio_string = &SYN2_CE audio_sound_file = SOUND_SYN2_CE START_NEW_SCRIPT audio_line -1 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SYN2_CF dialogue_flag++ BREAK CASE 5 $audio_string = &SYN2_CF audio_sound_file = SOUND_SYN2_CF START_NEW_SCRIPT audio_line -1 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN2_CG dialogue_flag++ BREAK CASE 6 $audio_string = &SYN2_CG audio_sound_file = SOUND_SYN2_CG START_NEW_SCRIPT audio_line -1 0 1 1 1 dialogue_flag++ BREAK CASE 7 dialogue_flag++ BREAK ENDSWITCH dialogue_timer = 0 ENDIF ENDIF ENDIF // wait to shift camera view IF m_goals = 6 IF TIMERA > 4000 m_goals++ ELSE IF NOT IS_CHAR_DEAD girl1 GET_SCRIPT_TASK_STATUS girl1 PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK m_goals++ ENDIF ENDIF ENDIF ENDIF IF m_goals = 7 SET_FIXED_CAMERA_POSITION -1919.1353 714.1419 46.9459 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1919.6941 714.9576 46.7967 JUMP_CUT SET_NEAR_CLIP 0.01 IF NOT IS_CHAR_DEAD girl1 CLEAR_CHAR_TASKS_IMMEDIATELY girl1 SET_CHAR_COORDINATES girl1 -1920.4792 716.6052 45.6103 SET_CHAR_HEADING girl1 190.5830 TASK_GO_STRAIGHT_TO_COORD girl1 -1919.6058 712.0557 45.6103 PEDMOVE_WALK 20000 ENDIF TIMERA = 0 m_goals++ ENDIF // skip IF m_goals > 4 AND TIMERB > 3000 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED m_goals = 99 ENDIF ENDIF // final cut IF m_goals = 8 IF TIMERA > 3000 car_phone_cam_int = 0 GOSUB setup_car_phone_cam TIMERA = 0 m_goals++ ENDIF ENDIF IF m_goals = 9 IF TIMERA > 4000 AND dialogue_flag > 7 m_goals = 99 ENDIF ENDIF IF m_goals = 99 GOSUB cleanup_car_phone_cam REMOVE_BLIP jizzy_car_blip REMOVE_BLIP location_blip DELETE_CHAR girl1 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 m_stage++ m_goals = 0 ENDIF // FUNCTIONS GLOBAL FOR STAGE ------------------------- RETURN // ************************************************************************************************************* // STAGE 4 - Go pickup girl 2 // ************************************************************************************************************* SYN2_m_stage_4: IF m_goals = 0 VAR_INT girl2_timer girl2_timer = 120000 ADD_BLIP_FOR_COORD -2427.9185 -133.4192 34.3525 location_blip CHANGE_BLIP_COLOUR location_blip YELLOW PRINT_NOW SYN2_06 10000 1 // ~s~Waste the pimp in ~y~Hashbury~s~. DISPLAY_ONSCREEN_TIMER_WITH_STRING girl2_timer TIMER_DOWN BB_19 // Time // set up REQUEST_MODEL SHFYPRO REQUEST_MODEL BMYPIMP REQUEST_MODEL HUSTLER REQUEST_MODEL COLT45 WHILE NOT HAS_MODEL_LOADED SHFYPRO OR NOT HAS_MODEL_LOADED BMYPIMP OR NOT HAS_MODEL_LOADED HUSTLER OR NOT HAS_MODEL_LOADED COLT45 WAIT 0 ENDWHILE LOAD_MISSION_AUDIO 3 SOUND_CAR_PHONE_RING WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE // create pimp CREATE_CHAR PEDTYPE_CIVMALE BMYPIMP -2427.9185 -133.4192 34.3525 rival_pimp SET_CHAR_HEADING rival_pimp 143.0822 //LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY rival_pimp_dm SET_CHAR_DECISION_MAKER rival_pimp empty_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER rival_pimp TRUE SET_CHAR_MAX_HEALTH rival_pimp 300 SET_CHAR_HEALTH rival_pimp 300 // create girl CREATE_CHAR PEDTYPE_CIVFEMALE SHFYPRO -2428.9536 -134.2400 34.3525 girl2 SET_CHAR_HEADING girl2 359.5201 SET_CHAR_ONLY_DAMAGED_BY_PLAYER girl2 TRUE //LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY girl2_dm SET_CHAR_DECISION_MAKER girl2 empty_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER girl2 TRUE SET_CHAR_NEVER_TARGETTED girl2 TRUE // pimp car CREATE_CAR HUSTLER -2481.0593 -126.9303 24.6250 rival_pimp_car SET_CAR_HEADING rival_pimp_car 102.8779 //SET_CAR_ONLY_DAMAGED_BY_PLAYER rival_pimp_car TRUE SET_CAR_HEALTH rival_pimp_car 600 // make pimp walk round girl TASK_LOOK_AT_CHAR rival_pimp girl2 -2 OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 -2430.0437 -133.1959 34.3525 PEDMOVE_WALK 10000 TASK_TURN_CHAR_TO_FACE_CHAR -1 girl2 TASK_PLAY_ANIM -1 idle_chat PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 -2429.9761 -135.4876 34.3525 PEDMOVE_WALK 10000 TASK_GO_STRAIGHT_TO_COORD -1 -2428.1619 -135.4792 34.3525 PEDMOVE_WALK 10000 TASK_GO_STRAIGHT_TO_COORD -1 -2427.9185 -133.4192 34.3525 PEDMOVE_WALK 10000 SET_SEQUENCE_TO_REPEAT temp_seq 1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK rival_pimp temp_seq CLEAR_SEQUENCE_TASK temp_seq // switch peds off around area SWITCH_PED_ROADS_OFF -2431.1145 -169.4874 33.0 -2426.5127 -117.2969 36.0 // make girl stand still TASK_STAY_IN_SAME_PLACE girl2 TRUE TASK_LOOK_AT_CHAR girl2 rival_pimp -2 // play pimp dialogue LVAR_INT pimp_dialogue pimp_dialogue = 0 m_goals++ CHECKPOINT_SAVE 1 ENDIF // wait for player to get near IF m_goals = 1 IF NOT IS_CHAR_DEAD rival_pimp IF audio_line_is_active = 0 IF dialogue_timer > 1000 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer rival_pimp 15.0 15.0 15.0 FALSE SWITCH pimp_dialogue CASE 0 $audio_string = &DUMMY audio_sound_file = SOUND_SYN2_LF START_NEW_SCRIPT audio_line rival_pimp 1 1 1 0 pimp_dialogue++ BREAK CASE 1 $audio_string = &DUMMY audio_sound_file = SOUND_SYN2_LG START_NEW_SCRIPT audio_line rival_pimp 1 1 1 0 pimp_dialogue++ BREAK CASE 2 $audio_string = &DUMMY audio_sound_file = SOUND_SYN2_LH START_NEW_SCRIPT audio_line rival_pimp 1 1 1 0 pimp_dialogue++ BREAK CASE 3 $audio_string = &DUMMY audio_sound_file = SOUND_SYN2_LI START_NEW_SCRIPT audio_line rival_pimp 1 1 1 0 pimp_dialogue++ BREAK CASE 4 $audio_string = &DUMMY audio_sound_file = SOUND_SYN2_LJ START_NEW_SCRIPT audio_line rival_pimp 1 1 1 0 pimp_dialogue++ BREAK CASE 5 $audio_string = &DUMMY audio_sound_file = SOUND_SYN2_LK START_NEW_SCRIPT audio_line rival_pimp 1 1 1 0 pimp_dialogue = 0 BREAK ENDSWITCH dialogue_timer = -4000 ELSE SWITCH pimp_dialogue CASE 0 $audio_string = &SYN2_LF audio_sound_file = SOUND_SYN2_LF START_NEW_SCRIPT audio_line rival_pimp 1 1 1 0 pimp_dialogue++ BREAK CASE 1 $audio_string = &SYN2_LG audio_sound_file = SOUND_SYN2_LG START_NEW_SCRIPT audio_line rival_pimp 1 1 1 0 pimp_dialogue++ BREAK CASE 2 $audio_string = &SYN2_LH audio_sound_file = SOUND_SYN2_LH START_NEW_SCRIPT audio_line rival_pimp 1 1 1 0 pimp_dialogue++ BREAK CASE 3 $audio_string = &SYN2_LI audio_sound_file = SOUND_SYN2_LI START_NEW_SCRIPT audio_line rival_pimp 1 1 1 0 pimp_dialogue++ BREAK CASE 4 $audio_string = &SYN2_LJ audio_sound_file = SOUND_SYN2_LJ START_NEW_SCRIPT audio_line rival_pimp 1 1 1 0 pimp_dialogue++ BREAK CASE 5 $audio_string = &SYN2_LK audio_sound_file = SOUND_SYN2_LK START_NEW_SCRIPT audio_line rival_pimp 1 1 1 0 pimp_dialogue = 0 BREAK ENDSWITCH dialogue_timer = -4000 ENDIF ENDIF ENDIF ENDIF IF debug_on = 1 IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK SET_CHAR_COORDINATES scplayer -2421.1816 -15.8972 34.1601 ENDIF ENDIF IF IS_CHAR_ON_FOOT scplayer IF NOT IS_CHAR_DEAD rival_pimp IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer rival_pimp 10.0 10.0 10.0 FALSE m_goals++ CLEAR_ONSCREEN_TIMER girl2_timer GOTO wait_for_player_to_get_near_end ENDIF ENDIF ELSE IF NOT IS_CHAR_DEAD rival_pimp IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer rival_pimp 20.0 20.0 20.0 FALSE m_goals++ CLEAR_ONSCREEN_TIMER girl2_timer GOTO wait_for_player_to_get_near_end ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD rival_pimp IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR rival_pimp scplayer m_goals++ CLEAR_ONSCREEN_TIMER girl2_timer GOTO wait_for_player_to_get_near_end ENDIF ENDIF IF NOT IS_CHAR_DEAD rival_pimp IF IS_PLAYER_TARGETTING_CHAR player1 rival_pimp m_goals++ CLEAR_ONSCREEN_TIMER girl2_timer GOTO wait_for_player_to_get_near_end ENDIF ENDIF IF IS_CHAR_DEAD rival_pimp m_goals++ CLEAR_ONSCREEN_TIMER girl2_timer GOTO wait_for_player_to_get_near_end ENDIF IF girl2_timer <= 0 CLEAR_ONSCREEN_TIMER girl2_timer GOSUB cleanup_car_phone_cam PRINT_NOW SYN_F_6 5000 1 m_failed = 1 ENDIF wait_for_player_to_get_near_end: ENDIF // make pimp do a bolt IF m_goals = 2 // girl says something IF NOT IS_CHAR_DEAD girl2 $audio_string = &SYN2_LA audio_sound_file = SOUND_SYN2_LA START_NEW_SCRIPT audio_line girl2 0 1 1 0 ENDIF REMOVE_BLIP location_blip IF NOT IS_CHAR_DEAD rival_pimp GIVE_WEAPON_TO_CHAR rival_pimp WEAPONTYPE_PISTOL 9999 ADD_BLIP_FOR_CHAR rival_pimp rival_pimp_blip TASK_LOOK_AT_CHAR rival_pimp scplayer 3000 ENDIF IF NOT IS_CHAR_DEAD rival_pimp TIMERA = 0 m_goals++ ELSE m_goals++ ENDIF ENDIF // wait for dialogue to finish before bolting IF m_goals = 3 IF NOT IS_CHAR_DEAD rival_pimp IF TIMERA > 1000 AND audio_line_is_active = 0 IF NOT IS_CHAR_DEAD girl2 CLEAR_CHAR_TASKS rival_pimp CLEAR_CHAR_TASKS girl2 CLEAR_LOOK_AT girl2 pimp_route_progress = 0 GENERATE_RANDOM_INT_IN_RANGE 0 4 temp_int SWITCH temp_int CASE 0 $audio_string = &SYN2_LB audio_sound_file = SOUND_SYN2_LB START_NEW_SCRIPT audio_line rival_pimp 0 1 1 0 BREAK CASE 1 $audio_string = &SYN2_LC audio_sound_file = SOUND_SYN2_LC START_NEW_SCRIPT audio_line rival_pimp 0 1 1 0 BREAK CASE 2 $audio_string = &SYN2_LD audio_sound_file = SOUND_SYN2_LD START_NEW_SCRIPT audio_line rival_pimp 0 1 1 0 BREAK CASE 3 $audio_string = &SYN2_LE audio_sound_file = SOUND_SYN2_LE START_NEW_SCRIPT audio_line rival_pimp 0 1 1 0 BREAK ENDSWITCH SET_CHAR_ACCURACY rival_pimp 90 SET_CHAR_SHOOT_RATE rival_pimp 100 OPEN_SEQUENCE_TASK temp_seq TASK_SHOOT_AT_CHAR -1 scplayer 3000 TASK_GO_STRAIGHT_TO_COORD -1 pimp_route_x[pimp_route_progress] pimp_route_y[pimp_route_progress] pimp_route_z[pimp_route_progress] PEDMOVE_SPRINT 9999999 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK rival_pimp temp_seq CLEAR_SEQUENCE_TASK temp_seq LVAR_INT pimp_damage_flag pimp_damage_flag = 0 GOSUB pimp_ditches_girl LVAR_INT kill_pimp_text kill_pimp_text = 0 TIMERA = 0 m_goals++ ENDIF ENDIF ELSE GOSUB pimp_ditches_girl m_goals++ ENDIF ENDIF // run along route IF m_goals = 4 IF kill_pimp_text = 0 IF TIMERA > 1000 IF audio_line_is_active = 0 PRINT SYN2_38 7000 1 // kill the pimp kill_pimp_text++ ENDIF ENDIF ENDIF // pimp ai ---------------------------------------------- IF NOT IS_CHAR_DEAD rival_pimp IF LOCATE_CHAR_ON_FOOT_3D rival_pimp pimp_route_x[pimp_route_progress] pimp_route_y[pimp_route_progress] pimp_route_z[pimp_route_progress] 1.5 1.5 2.0 FALSE pimp_route_progress++ IF pimp_route_progress < 8 // IF pimp_attack_player = 0 // CLEAR_CHAR_TASKS rival_pimp // TASK_KILL_CHAR_ON_FOOT rival_pimp scplayer // pimp_attack_player++ // ELSE // run from player IF pimp_route_progress = 1 OR pimp_route_progress = 5 OR pimp_route_progress = 7 TASK_GO_TO_COORD_WHILE_SHOOTING rival_pimp pimp_route_x[pimp_route_progress] pimp_route_y[pimp_route_progress] pimp_route_z[pimp_route_progress] PEDMOVE_SPRINT 0.0 0.0 scplayer ELSE TASK_GO_STRAIGHT_TO_COORD rival_pimp pimp_route_x[pimp_route_progress] pimp_route_y[pimp_route_progress] pimp_route_z[pimp_route_progress] PEDMOVE_SPRINT 99999 ENDIF // ENDIF ELSE IF NOT IS_CAR_DEAD rival_pimp_car GET_CHAR_COORDINATES rival_pimp x y z IF LOCATE_CAR_3D rival_pimp_car x y z 10.0 10.0 4.0 FALSE CLEAR_CHAR_TASKS rival_pimp OPEN_SEQUENCE_TASK temp_seq TASK_ENTER_CAR_AS_DRIVER -1 rival_pimp_car 20000 TASK_CAR_DRIVE_TO_COORD -1 rival_pimp_car -2599.2866 -127.2555 3.1797 15.0 MODE_NORMAL 0 DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_DRIVE_WANDER -1 rival_pimp_car 15.0 DRIVINGMODE_PLOUGHTHROUGH CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK rival_pimp temp_seq CLEAR_SEQUENCE_TASK temp_seq m_goals++ ELSE TASK_FLEE_CHAR_ANY_MEANS rival_pimp scplayer 100000.0 999999 TRUE 3000 5000 50.0 m_goals++ ENDIF ELSE TASK_FLEE_CHAR_ANY_MEANS rival_pimp scplayer 100000.0 999999 TRUE 3000 5000 50.0 m_goals++ ENDIF ENDIF ELSE IF pimp_route_progress = 0 IF IS_CHAR_IN_AREA_3D scplayer -2430.8787 -167.3782 32.3125 -2426.9165 -143.2979 36.3125 FALSE GET_CHAR_COORDINATES scplayer x y z GET_CHAR_COORDINATES rival_pimp x2 y2 z2 IF y < y2 OPEN_SEQUENCE_TASK temp_seq TASK_SHOOT_AT_CHAR -1 scplayer 3000 TASK_FLEE_CHAR_ANY_MEANS -1 scplayer 100000.0 999999 TRUE 3000 5000 50.0 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK rival_pimp temp_seq CLEAR_SEQUENCE_TASK temp_seq m_goals++ ENDIF ELSE IF pimp_damage_flag = 0 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR scplayer rival_pimp TASK_GO_STRAIGHT_TO_COORD rival_pimp pimp_route_x[0] pimp_route_y[0] pimp_route_z[0] PEDMOVE_SPRINT 99999 pimp_damage_flag++ ENDIF ENDIF ENDIF ENDIF ENDIF ELSE m_goals++ ENDIF ENDIF // wait for pimp to get killed IF m_goals = 5 IF fix_rival_pimp_health = 0 IF NOT IS_CHAR_DEAD rival_pimp IF NOT IS_CAR_DEAD rival_pimp_car IF IS_CHAR_IN_CAR rival_pimp rival_pimp_car GET_CHAR_HEALTH rival_pimp temp_int IF temp_int > 100 SET_CHAR_HEALTH rival_pimp 100 ENDIF fix_rival_pimp_health = 1 ENDIF ENDIF ENDIF ENDIF IF IS_CHAR_DEAD rival_pimp TIMERA = 0 m_goals++ ELSE IF NOT IS_CAR_DEAD rival_pimp_car IF IS_CHAR_IN_CAR rival_pimp rival_pimp_car IF LOCATE_CHAR_IN_CAR_CHAR_3D scplayer rival_pimp 15.0 15.0 15.0 FALSE SET_CAR_CRUISE_SPEED rival_pimp_car 25.0 ELSE SET_CAR_CRUISE_SPEED rival_pimp_car 15.0 ENDIF ENDIF ENDIF // if pimp is not in any car IF NOT IS_CHAR_IN_ANY_CAR rival_pimp GET_SCRIPT_TASK_STATUS rival_pimp PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK GET_SCRIPT_TASK_STATUS rival_pimp TASK_FLEE_CHAR_ANY_MEANS temp_int IF temp_int = FINISHED_TASK TASK_FLEE_CHAR_ANY_MEANS rival_pimp scplayer 100000.0 999999 FALSE 0 0 50.0 ENDIF ENDIF ENDIF ENDIF IF debug_on = 1 IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK IF NOT IS_CHAR_DEAD rival_pimp TASK_DIE rival_pimp ENDIF ENDIF ENDIF ENDIF // pimp is dead - get back in car IF m_goals = 6 CLEAR_PRINTS REMOVE_BLIP rival_pimp_blip IF TIMERA > 1000 IF NOT IS_CAR_DEAD jizzy_car IF NOT IS_CHAR_IN_CAR scplayer jizzy_car IF on_cutscene_duty = 0 PRINT_NOW SYN_M_1 7000 1 // get back in car ATTACH_MISSION_AUDIO_TO_CAR 3 jizzy_car PLAY_MISSION_AUDIO 3 phone_ringing = 1 //WRITE_DEBUG phone_told_to_ring1 ENDIF TIMERA = 0 m_goals++ ELSE ATTACH_MISSION_AUDIO_TO_CAR 3 jizzy_car PLAY_MISSION_AUDIO 3 phone_ringing = 1 //WRITE_DEBUG phone_told_to_ring2 TIMERA = 0 m_goals++ ENDIF ENDIF ELSE IF NOT IS_CAR_DEAD jizzy_car IF IS_CHAR_IN_CAR scplayer jizzy_car TIMERA = 0 ATTACH_MISSION_AUDIO_TO_CAR 3 jizzy_car PLAY_MISSION_AUDIO 3 phone_ringing = 1 //WRITE_DEBUG phone_told_to_ring3 m_goals++ ENDIF ENDIF ENDIF ENDIF // start phone ringing IF m_goals = 7 IF TIMERA > 3000 // // start phone sound // IF NOT IS_CAR_DEAD jizzy_car // GET_CAR_COORDINATES jizzy_car x y z // ATTACH_MISSION_AUDIO_TO_CAR 3 jizzy_car // PLAY_MISSION_AUDIO 3 // ENDIF TIMERA = 0 //PRINT_NOW SYN_M_2 4000 1 m_goals++ ENDIF ENDIF // wait for player to get in car IF m_goals = 8 IF TIMERA > 500 IF NOT IS_CAR_DEAD jizzy_car IF IS_CHAR_IN_CAR scplayer jizzy_car SET_PLAYER_CONTROL player1 OFF TIMERA = 0 m_goals++ ENDIF ENDIF ENDIF ENDIF // wait a couple of rings before player answers phone IF m_goals = 9 //IF TIMERA > 2000 IF NOT IS_CAR_DEAD jizzy_car IF IS_CHAR_IN_CAR scplayer jizzy_car CLEAR_MISSION_AUDIO 3 phone_ringing = 0 CLEAR_PRINTS m_goals++ ENDIF ENDIF //ENDIF ENDIF // cutscene - what next? IF m_goals = 10 stored_weapon_model = -1 car_phone_cam_int = 1 CLEAR_PRINTS DO_FADE 150 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB setup_car_phone_cam DO_FADE 150 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE m_goals++ ENDIF // wait a tic before starting text IF m_goals = 11 IF TIMERA > 1000 // PRINT SYN2_10 3000 1 // CJ - 'Ok, what next?' // PRINT SYN2_11 3000 1 // JIZZY ON PHONE - 'Theres a girl in trouble at xxxx' // PRINT SYN2_12 3000 1 // JIZZY ON PHONE - 'Get there fast!' // PRINT SYN2_13 3000 1 // JIZZY ON PHONE - 'Kill the mutherfuckers who mess with my bitches' dialogue_flag = 0 TIMERA = 0 m_goals++ ENDIF ENDIF IF m_goals > 11 AND m_goals < 99 IF audio_line_is_active = 0 IF dialogue_timer > 1000 SWITCH dialogue_flag CASE 0 $audio_string = &SYN2_DA audio_sound_file = SOUND_SYN2_DA START_NEW_SCRIPT audio_line scplayer 0 1 1 0 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SYN2_DB dialogue_flag++ BREAK CASE 1 $audio_string = &SYN2_DB audio_sound_file = SOUND_SYN2_DB START_NEW_SCRIPT audio_line scplayer 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN2_DC dialogue_flag++ BREAK CASE 2 $audio_string = &SYN2_DC audio_sound_file = SOUND_SYN2_DC START_NEW_SCRIPT audio_line -1 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SYN2_DD dialogue_flag++ BREAK CASE 3 $audio_string = &SYN2_DD audio_sound_file = SOUND_SYN2_DD START_NEW_SCRIPT audio_line -1 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN2_DE dialogue_flag++ BREAK CASE 4 $audio_string = &SYN2_DE audio_sound_file = SOUND_SYN2_DE START_NEW_SCRIPT audio_line -1 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SYN2_DF dialogue_flag++ BREAK CASE 5 $audio_string = &SYN2_DF audio_sound_file = SOUND_SYN2_DF START_NEW_SCRIPT audio_line -1 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN2_DG dialogue_flag++ BREAK CASE 6 $audio_string = &SYN2_DG audio_sound_file = SOUND_SYN2_DG START_NEW_SCRIPT audio_line -1 0 1 1 1 dialogue_flag++ BREAK CASE 7 dialogue_flag++ BREAK ENDSWITCH dialogue_timer = 0 ENDIF ENDIF ENDIF // wait for cutscene to finish IF m_goals = 12 IF dialogue_flag > 7 OR IS_SKIP_CUTSCENE_BUTTON_PRESSED m_goals = 99 ENDIF ENDIF // end of cutscene - move to next stage IF m_goals = 99 GOSUB cleanup_car_phone_cam MARK_CAR_AS_NO_LONGER_NEEDED rival_pimp_car MARK_CHAR_AS_NO_LONGER_NEEDED rival_pimp MARK_CHAR_AS_NO_LONGER_NEEDED girl2 MARK_MODEL_AS_NO_LONGER_NEEDED SHFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED BMYPIMP MARK_MODEL_AS_NO_LONGER_NEEDED HUSTLER m_goals = 0 m_stage++ ENDIF RETURN SYN2_seq_beat_up_ho: OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM -1 FIGHTA_G PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 FIGHTA_G PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 FIGHTA_G PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 FIGHTA_G PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 FIGHTA_G PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 BITCHSLAP MISC 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 BITCHSLAP MISC 4.0 FALSE FALSE FALSE TRUE -1 SET_SEQUENCE_TO_REPEAT temp_seq 1 CLOSE_SEQUENCE_TASK temp_seq RETURN // ************************************************************************************************************* // STAGE 8 - go back to the docks // ************************************************************************************************************* SYN2_m_stage_5: IF m_goals = 0 ADD_BLIP_FOR_COORD -1911.9188 -629.9120 23.6093 location_blip CHANGE_BLIP_COLOUR location_blip YELLOW PRINT_NOW SYN2_14 10000 1 // save jizzy's girl girl3_flag = 0 m_goals++ ENDIF IF m_goals = 1 // create punters REQUEST_MODEL CAMPER REQUEST_MODEL SWMYHP1 REQUEST_MODEL SWMYHP2 REQUEST_MODEL VBFYPRO REQUEST_MODEL COLT45 WHILE NOT HAS_MODEL_LOADED CAMPER OR NOT HAS_MODEL_LOADED SWMYHP1 OR NOT HAS_MODEL_LOADED SWMYHP2 OR NOT HAS_MODEL_LOADED VBFYPRO OR NOT HAS_MODEL_LOADED COLT45 WAIT 0 ENDWHILE LOAD_MISSION_AUDIO 3 SOUND_CAR_PHONE_RING WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE SWMYHP1 -1911.9188 -629.2120 23.6093 hippy_1 SET_CHAR_HEADING hippy_1 180.0 CREATE_CHAR PEDTYPE_CIVMALE SWMYHP1 -1907.6439 -623.0884 23.6093 hippy_2 SET_CHAR_HEADING hippy_2 350.5407 GIVE_WEAPON_TO_CHAR hippy_2 WEAPONTYPE_PISTOL 99999 CREATE_CHAR PEDTYPE_PROSTITUTE VBFYPRO -1911.9188 -629.9120 23.6093 girl3 SET_CHAR_HEADING girl3 331.4920 SET_CHAR_ONLY_DAMAGED_BY_PLAYER girl3 TRUE SET_CHAR_NEVER_TARGETTED girl3 TRUE SET_CHAR_MAX_HEALTH girl3 120 SET_CHAR_HEALTH girl3 120 CREATE_CAR CAMPER -1911.9517 -624.4892 23.6093 hippy_van SET_CAR_HEADING hippy_van 304.9144 CHANGE_CAR_COLOUR hippy_van 104 61 FORCE_CAR_LIGHTS hippy_van FORCE_CAR_LIGHTS_ON OPEN_CAR_DOOR hippy_van FRONT_RIGHT_DOOR OPEN_CAR_DOOR hippy_van REAR_RIGHT_DOOR // load decision makers LVAR_INT hippy_dm LVAR_INT girl3_dm //LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH hippy_dm SET_CHAR_DECISION_MAKER hippy_1 tough_dm SET_CHAR_DECISION_MAKER hippy_2 tough_dm //LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY girl3_dm SET_CHAR_DECISION_MAKER girl3 empty_dm SET_CHAR_RELATIONSHIP hippy_2 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 // set char behaviour SET_CHAR_STAY_IN_SAME_PLACE hippy_2 TRUE SET_CHAR_STAY_IN_SAME_PLACE girl3 TRUE VAR_INT girl_health GET_CHAR_HEALTH girl3 girl_health DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING girl_health COUNTER_DISPLAY_BAR 1 SYN2_63 // make girl lie on ground - taking a beating (she probably deserves) REQUEST_ANIMATION CRACK REQUEST_ANIMATION MISC WHILE NOT HAS_ANIMATION_LOADED CRACK OR NOT HAS_ANIMATION_LOADED MISC WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD girl3 TASK_PLAY_ANIM_NON_INTERRUPTABLE girl3 crckdeth2 CRACK 4.0 TRUE FALSE FALSE FALSE -1 ENDIF // make hippy beat up girl IF NOT IS_CHAR_DEAD hippy_1 GOSUB SYN2_seq_beat_up_ho PERFORM_SEQUENCE_TASK hippy_1 temp_seq CLEAR_SEQUENCE_TASK temp_seq hippy_away_from_kicking = 0 ENDIF m_goals++ ENDIF IF NOT IS_CHAR_DEAD hippy_1 GET_SCRIPT_TASK_STATUS hippy_1 PERFORM_SEQUENCE_TASK temp_int IF NOT temp_int = FINISHED_TASK IF hippy_timer > 3000 SET_CHAR_SAY_CONTEXT hippy_1 CONTEXT_GLOBAL_FIGHT temp_int hippy_timer = 0 //WRITE_DEBUG hippy1_context_speech ENDIF ENDIF ENDIF // wait for player to get close IF m_goals = 2 IF debug_on = 1 IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK SET_CHAR_COORDINATES scplayer -1904.0409 -602.5592 23.6067 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1911.9188 -629.9120 23.6093 40.0 40.0 5.0 FALSE REMOVE_BLIP location_blip PRINT_NOW SYN2_15 10000 1 // kill both punters IF NOT IS_CHAR_DEAD hippy_1 ADD_BLIP_FOR_CHAR hippy_1 hippy1_blip ENDIF IF NOT IS_CHAR_DEAD hippy_2 ADD_BLIP_FOR_CHAR hippy_2 hippy2_blip ENDIF m_goals++ ENDIF ENDIF // wait for player to kill hippies IF m_goals = 3 // detect when the ped is away from the spot he should be kicking IF NOT LOCATE_CHAR_ANY_MEANS_3D hippy_1 -1911.9188 -629.2120 23.6093 1.0 1.0 5.0 FALSE AND hippy_away_from_kicking = 0 OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 -1911.9188 -629.2120 23.6093 PEDMOVE_RUN 99999 TASK_TURN_CHAR_TO_FACE_COORD -1 -1911.9188 -629.9120 23.6093 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK hippy_1 temp_seq CLEAR_SEQUENCE_TASK temp_seq hippy_away_from_kicking = 1 ENDIF IF LOCATE_CHAR_ANY_MEANS_3D hippy_1 -1911.9188 -629.2120 23.6093 1.0 1.0 5.0 FALSE AND hippy_away_from_kicking = 1 // make hippy beat up girl can IF NOT IS_CHAR_DEAD hippy_1 GOSUB SYN2_seq_beat_up_ho PERFORM_SEQUENCE_TASK hippy_1 temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF hippy_away_from_kicking = 0 ENDIF IF IS_CHAR_DEAD hippy_1 IF DOES_BLIP_EXIST hippy1_blip REMOVE_BLIP hippy1_blip ENDIF ENDIF IF IS_CHAR_DEAD hippy_2 IF DOES_BLIP_EXIST hippy2_blip REMOVE_BLIP hippy2_blip ENDIF ENDIF IF IS_CHAR_DEAD hippy_1 AND IS_CHAR_DEAD hippy_2 m_goals++ TIMERA = 0 ENDIF ENDIF // wait a couple of tics before ho gets up IF m_goals = 4 IF TIMERA > 1000 // get hippies last living coordinates LVAR_FLOAT hip_x hip_y hip_z LVAR_FLOAT hip_off_x hip_off_y hip_off_z IF IS_CHAR_DEAD hippy_1 //GET_CHAR_COORDINATES hippy_1 hip_x hip_y hip_z GET_DEAD_CHAR_COORDINATES hippy_1 hip_x hip_y hip_z IF NOT IS_CHAR_DEAD girl3 GET_CHAR_COORDINATES girl3 x y z ENDIF vec_x = hip_x - x vec_y = hip_y - y vec_z = hip_z - z GET_DISTANCE_BETWEEN_COORDS_2D hip_x hip_y x y temp_float IF temp_float > 0.01 vec_x /= temp_float vec_y /= temp_float ENDIF vec_x *= -0.5 vec_y *= -0.5 hip_off_x = hip_x + vec_x hip_off_y = hip_y + vec_y hip_off_z = hip_z //GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS hippy_1 0.0 -0.5 0.0 hip_off_x hip_off_y hip_off_z ENDIF // make prossie get up and start kicking hippy OPEN_SEQUENCE_TASK temp_seq TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 getup PED 6.0 FALSE FALSE FALSE TRUE 0 //TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 getup PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_GO_STRAIGHT_TO_COORD -1 hip_off_x hip_off_y hip_off_z PEDMOVE_RUN 99999 TASK_TURN_CHAR_TO_FACE_COORD -1 hip_x hip_y hip_z TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 FIGHTA_G PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 FIGHTA_G PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 FIGHTA_G PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 FIGHTA_G PED 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD girl3 SET_CHAR_BLEEDING girl3 FALSE SET_CHAR_STAY_IN_SAME_PLACE girl3 FALSE PERFORM_SEQUENCE_TASK girl3 temp_seq girl3_flag = 1 ENDIF CLEAR_SEQUENCE_TASK temp_seq CLEAR_ONSCREEN_COUNTER girl_health m_goals++ dialogue_flag = 0 TIMERA = 0 TIMERB = 2000 ENDIF ENDIF // yo ok ho? dialogue IF m_goals > 4 IF NOT IS_CHAR_DEAD girl3 IF girl3_flag = 1 // IF LOCATE_CHAR_ON_FOOT_CHAR_3D scplayer girl3 5.0 5.0 3.0 FALSE // IF IS_CHAR_PLAYING_ANIM girl3 FIGHTA_G // IF dialogue_flag = 0 // IF TIMERA > 4000 // PRINT_NOW SYN2_48 4000 1 //You ok ho? // TIMERA = 0 // dialogue_flag++ // ENDIF // ENDIF // IF dialogue_flag = 1 // IF TIMERA > 4000 // PRINT_NOW SYN2_49 4000 1 //Prosse - 'Motherfucking hippy' // dialogue_flag++ // TIMERA = 0 // ENDIF // ENDIF // IF dialogue_flag = 2 // IF TIMERA > 4000 // PRINT_NOW SYN2_50 4000 1 //Prosse - 'Put this in your pipe and smoke it' // dialogue_flag++ // TIMERA = 0 // ENDIF // ENDIF // IF dialogue_flag = 3 // IF TIMERA > 4000 // PRINT_NOW SYN2_51 4000 1 //Prosse - 'Not so tough now! // dialogue_flag++ // TIMERA = 0 // ENDIF // ENDIF // ENDIF // ENDIF IF TIMERB > 3000 SET_CHAR_SAY_CONTEXT girl3 CONTEXT_GLOBAL_FIGHT temp_int TIMERB = 0 ENDIF GET_SCRIPT_TASK_STATUS girl3 PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK girl3_flag++ ENDIF ENDIF IF girl3_flag = 2 IF NOT IS_CAR_DEAD hippy_van IF LOCATE_CHAR_ANY_MEANS_CAR_3D girl3 hippy_van 30.0 30.0 10.0 FALSE OPEN_SEQUENCE_TASK temp_seq TASK_GOTO_CAR -1 hippy_van 20000 5.0 TASK_ENTER_CAR_AS_DRIVER -1 hippy_van 999999 TASK_CAR_DRIVE_WANDER -1 hippy_van 30.0 DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK temp_seq ELSE OPEN_SEQUENCE_TASK temp_seq TASK_WANDER_STANDARD -1 CLOSE_SEQUENCE_TASK temp_seq ENDIF ELSE OPEN_SEQUENCE_TASK temp_seq TASK_WANDER_STANDARD -1 CLOSE_SEQUENCE_TASK temp_seq ENDIF PERFORM_SEQUENCE_TASK girl3 temp_seq CLEAR_SEQUENCE_TASK temp_seq girl3_flag++ ENDIF ENDIF ENDIF // pimp is dead - get back in car IF m_goals = 5 IF TIMERA > 1000 IF NOT IS_CAR_DEAD jizzy_car IF NOT IS_CHAR_IN_CAR scplayer jizzy_car IF on_cutscene_duty = 0 PRINT_NOW SYN_M_1 999999 1 // get back in car ENDIF TIMERA = 0 m_goals++ ELSE TIMERA = 0 m_goals++ ENDIF ENDIF ELSE IF NOT IS_CAR_DEAD jizzy_car IF IS_CHAR_IN_CAR scplayer jizzy_car TIMERA = 0 m_goals++ ENDIF ENDIF ENDIF ENDIF // start phone ringing IF m_goals = 6 IF NOT IS_CAR_DEAD jizzy_car IF IS_CHAR_IN_CAR scplayer jizzy_car CLEAR_THIS_PRINT SYN_M_1 ENDIF ENDIF IF TIMERA > 6000 // start phone sound IF NOT IS_CAR_DEAD jizzy_car GET_CAR_COORDINATES jizzy_car x y z ATTACH_MISSION_AUDIO_TO_CAR 3 jizzy_car PLAY_MISSION_AUDIO 3 phone_ringing = 1 ENDIF TIMERA = 0 //PRINT_NOW SYN_M_2 4000 1 m_goals++ ENDIF ENDIF // wait for player to get in car IF m_goals = 7 IF NOT IS_CAR_DEAD jizzy_car IF IS_CHAR_IN_CAR scplayer jizzy_car CLEAR_THIS_PRINT SYN_M_1 ENDIF ENDIF IF TIMERA > 500 IF NOT IS_CAR_DEAD jizzy_car IF IS_CHAR_IN_CAR scplayer jizzy_car SET_PLAYER_CONTROL player1 OFF stored_weapon_model = -1 TIMERA = 0 m_goals++ ENDIF ENDIF ENDIF ENDIF // wait a couple of rings before player answers phone IF m_goals = 8 //IF TIMERA > 2000 IF NOT IS_CAR_DEAD jizzy_car IF IS_CHAR_IN_CAR scplayer jizzy_car CLEAR_MISSION_AUDIO 3 phone_ringing = 0 CLEAR_PRINTS m_goals++ ENDIF ENDIF //ENDIF ENDIF // phone cutscene IF m_goals = 9 stored_weapon_model = -1 car_phone_cam_int = 2 CLEAR_PRINTS DO_FADE 150 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB setup_car_phone_cam DO_FADE 150 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE m_goals++ ENDIF // wait a tic before starting text IF m_goals = 10 IF TIMERA > 1000 // PRINT SYN2_16 3000 1 // JIZZY ON PHONE - 'The girl you dropped off in Downtown has decided she's out the game.' // PRINT SYN2_17 3000 1 // JIZZY ON PHONE - 'Her rich punter wants to take her off the streets. I'm not having it!!' // PRINT SYN2_18 3000 1 // JIZZY ON PHONE - 'Get to the hotel and sort out the punter.' dialogue_flag = 0 TIMERA = 0 m_goals++ ENDIF ENDIF IF m_goals > 10 AND m_goals < 99 IF audio_line_is_active = 0 IF dialogue_timer > 1000 SWITCH dialogue_flag CASE 0 $audio_string = &SYN2_FA audio_sound_file = SOUND_SYN2_FA START_NEW_SCRIPT audio_line scplayer 0 1 1 0 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SYN2_FB dialogue_flag++ BREAK CASE 1 $audio_string = &SYN2_FB audio_sound_file = SOUND_SYN2_FB START_NEW_SCRIPT audio_line -1 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN2_FC dialogue_flag++ BREAK CASE 2 $audio_string = &SYN2_FC audio_sound_file = SOUND_SYN2_FC START_NEW_SCRIPT audio_line -1 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SYN2_FD dialogue_flag++ BREAK CASE 3 $audio_string = &SYN2_FD audio_sound_file = SOUND_SYN2_FD START_NEW_SCRIPT audio_line -1 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN2_FE dialogue_flag++ BREAK CASE 4 $audio_string = &SYN2_FE audio_sound_file = SOUND_SYN2_FE START_NEW_SCRIPT audio_line -1 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SYN2_FF dialogue_flag++ BREAK CASE 5 $audio_string = &SYN2_FF audio_sound_file = SOUND_SYN2_FF START_NEW_SCRIPT audio_line -1 0 1 2 1 dialogue_flag++ BREAK CASE 6 dialogue_flag++ BREAK ENDSWITCH dialogue_timer = 0 ENDIF ENDIF ENDIF // wait for cutscene to finish IF m_goals = 11 IF dialogue_flag > 6 OR IS_SKIP_CUTSCENE_BUTTON_PRESSED m_goals = 99 ENDIF ENDIF // end of cutscene - move to next stage IF m_goals = 99 GOSUB cleanup_car_phone_cam MARK_CHAR_AS_NO_LONGER_NEEDED hippy_1 MARK_CHAR_AS_NO_LONGER_NEEDED hippy_2 MARK_CHAR_AS_NO_LONGER_NEEDED girl3 MARK_CAR_AS_NO_LONGER_NEEDED hippy_van MARK_MODEL_AS_NO_LONGER_NEEDED CAMPER MARK_MODEL_AS_NO_LONGER_NEEDED SWMYHP1 MARK_MODEL_AS_NO_LONGER_NEEDED SWMYHP2 MARK_MODEL_AS_NO_LONGER_NEEDED VBFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 REMOVE_ANIMATION CRACK REMOVE_ANIMATION MISC REMOVE_BLIP jizzy_car_blip m_goals = 0 m_stage++ ENDIF // get girl health IF DOES_CHAR_EXIST girl3 IF NOT IS_CHAR_DEAD girl3 IF NOT IS_CHAR_DEAD hippy_1 //GET_SCRIPT_TASK_STATUS hippy_1 PERFORM_SEQUENCE_TASK temp_int //IF NOT temp_int = FINISHED_TASK IF IS_CHAR_PLAYING_ANIM hippy_1 FIGHTA_G OR IS_CHAR_PLAYING_ANIM hippy_1 BITCHSLAP GET_CHAR_HEALTH girl3 girl_health IF TIMERB > 1000 girl_health += -1 TIMERB = 0 ENDIF ENDIF // GET_SCRIPT_TASK_STATUS girl3 TASK_PLAY_ANIM temp_int // IF temp_int = FINISHED_TASK // TASK_PLAY_ANIM girl3 crckdeth2 CRACK 4.0 TRUE FALSE FALSE FALSE -1 // ENDIF //ENDIF ENDIF IF girl_health <= 1 girl_health = 1 TASK_DIE girl3 ELSE SET_CHAR_HEALTH girl3 girl_health ENDIF ENDIF ENDIF // cleanup from previous stage // fail if player kills girl 2 IF DOES_CHAR_EXIST girl2 // cleanup girl2 IF NOT IS_CHAR_DEAD girl2 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer girl3 50.0 50.0 FALSE IF NOT IS_CHAR_ON_SCREEN girl2 DELETE_CHAR girl2 ENDIF ENDIF ENDIF ENDIF RETURN // ************************************************************************************************************* // STAGE 9 - go back to hotel and stop girl from leaving jizzy // ************************************************************************************************************* SYN2_m_stage_6: // fake create IF m_goals = -1 CREATE_CAR PONY 0.0 0.0 0.0 mib_car[0] CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 mib_driver[0] //CREATE_CAR BUFFALO 0.0 0.0 0.0 pcar CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 rich_dude CREATE_CAR PONY 0.0 0.0 0.0 rich_car CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 girl1 ENDIF IF m_goals = 0 // debug only IF NOT DOES_VEHICLE_EXIST jizzy_car // create jizzy's car if it doesn't exist IF NOT HAS_MODEL_LOADED BROADWAY REQUEST_MODEL BROADWAY WHILE NOT HAS_MODEL_LOADED BROADWAY WAIT 0 ENDWHILE ENDIF CREATE_CAR BROADWAY -1894.3076 712.9404 44.2969 jizzy_car SET_CAR_HEADING jizzy_car 0.0 IF IS_PLAYER_PLAYING player1 WARP_CHAR_INTO_CAR scplayer jizzy_car ENDIF LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY empty_dm LOAD_SCENE -1900.7535 645.3122 35.4401 SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON DO_FADE 0 FADE_IN ENDIF // add location blip ADD_BLIP_FOR_COORD -1964.3716 724.4017 44.2969 location_blip CHANGE_BLIP_COLOUR location_blip YELLOW PRINT_NOW SYN2_19 10000 1 // go to the hotel downtown m_goals++ CHECKPOINT_SAVE 99 ENDIF // wait for player to arrive IF m_goals = 1 IF DOES_BLIP_EXIST location_blip IF NOT IS_CAR_DEAD jizzy_car IF IS_CHAR_IN_CAR scplayer jizzy_car IF LOCATE_CAR_3D jizzy_car -1964.3716 724.4017 44.2969 4.0 4.0 4.0 TRUE IF IS_VEHICLE_ON_ALL_WHEELS jizzy_car CLEAR_PRINTS SET_PLAYER_CONTROL player1 OFF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REMOVE_BLIP location_blip START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 m_goals++ ENDIF ENDIF ELSE REMOVE_BLIP location_blip PRINT SYN_M_1 7000 1 // get back in the pimpmobile ENDIF ENDIF ELSE IF NOT IS_CAR_DEAD jizzy_car IF IS_CHAR_IN_CAR scplayer jizzy_car ADD_BLIP_FOR_COORD -1964.3716 724.4017 44.2969 location_blip CHANGE_BLIP_COLOUR location_blip YELLOW CLEAR_THIS_PRINT SYN_M_1 PRINT SYN2_19 7000 1 // go to the hotel downtown ENDIF ENDIF ENDIF ENDIF // do cutscene of cars arriving - load stuff IF m_goals = 2 //SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 CLEAR_AREA -1964.3716 724.4017 44.2969 100.0 TRUE LVAR_INT rich_car LVAR_INT rich_car_driver LVAR_INT rich_dude LVAR_INT dialogue_flag REQUEST_MODEL STRETCH REQUEST_MODEL HUNTLEY REQUEST_MODEL HFYPRO REQUEST_MODEL BMYMIB REQUEST_MODEL WMOPREA REQUEST_MODEL COLT45 REQUEST_MODEL MP5LNG REQUEST_CAR_RECORDING 539 REQUEST_CAR_RECORDING 540 REQUEST_CAR_RECORDING 541 WHILE NOT HAS_MODEL_LOADED STRETCH OR NOT HAS_MODEL_LOADED HFYPRO // prossie OR NOT HAS_MODEL_LOADED HUNTLEY OR NOT HAS_MODEL_LOADED BMYMIB // driver/guard OR NOT HAS_MODEL_LOADED WMOPREA // rich dude WAIT 0 ENDWHILE WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 539 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 540 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 541 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED MP5LNG WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD jizzy_car SET_CAR_COORDINATES jizzy_car -1964.3716 724.4017 44.2969 SET_CAR_HEADING jizzy_car 266.5514 ENDIF CREATE_CAR STRETCH -1973.8113 728.3975 44.2969 rich_car SET_CAR_HEADING rich_car 269.8438 CREATE_CHAR_INSIDE_CAR rich_car PEDTYPE_CIVMALE BMYMIB rich_car_driver SET_CHAR_DECISION_MAKER rich_car_driver empty_dm SET_CAR_CRUISE_SPEED rich_car 15.0 CHANGE_CAR_COLOUR rich_car 1 0 START_PLAYBACK_RECORDED_CAR rich_car 540 SKIP_IN_PLAYBACK_RECORDED_CAR rich_car 3.0 SET_CAR_ONLY_DAMAGED_BY_PLAYER rich_car TRUE CREATE_CAR HUNTLEY -1987.8113 728.3975 44.2969 mib_car[0] SET_CAR_HEADING mib_car[0] 269.8438 CREATE_CHAR_INSIDE_CAR mib_car[0] PEDTYPE_CIVMALE BMYMIB mib_driver[0] GIVE_WEAPON_TO_CHAR mib_driver[0] WEAPONTYPE_PISTOL 99999 SET_CHAR_DECISION_MAKER mib_driver[0] empty_dm SET_CAR_CRUISE_SPEED mib_car[0] 15.0 CHANGE_CAR_COLOUR mib_car[0] 0 0 START_PLAYBACK_RECORDED_CAR mib_car[0] 541 SKIP_IN_PLAYBACK_RECORDED_CAR mib_car[0] 3.0 LVAR_INT mib_passenger CREATE_CHAR_AS_PASSENGER mib_car[0] PEDTYPE_CIVMALE BMYMIB 0 mib_passenger GIVE_WEAPON_TO_CHAR mib_passenger WEAPONTYPE_MP5 99999 SET_CHAR_DECISION_MAKER mib_passenger empty_dm SWITCH_WIDESCREEN ON CLEAR_HELP CLEAR_PRINTS SET_FIXED_CAMERA_POSITION -1968.5795 721.6734 47.3198 0.0 0.0 0.0 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS rich_car -5.0 -2.0 0.0 x y z POINT_CAMERA_AT_POINT x y z JUMP_CUT DO_FADE 500 FADE_IN TIMERA = 0 m_goals++ ENDIF LVAR_INT reset_timerb IF m_goals > 2 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED IF reset_timerb = 0 TIMERB = 0 reset_timerb = 1 ENDIF m_goals = 99 ENDIF ENDIF IF m_goals = 3 IF NOT IS_CAR_DEAD rich_car GET_OFFSET_FROM_CAR_IN_WORLD_COORDS rich_car -5.0 -2.0 0.0 x y z POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF IF TIMERA > 4000 SET_FIXED_CAMERA_POSITION -1929.4021 738.0927 44.7662 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1929.3257 737.1227 44.9969 JUMP_CUT m_goals++ ENDIF ENDIF IF m_goals = 4 IF NOT IS_CAR_DEAD rich_car IF NOT IS_CAR_DEAD mib_car[0] IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR rich_car AND NOT IS_PLAYBACK_GOING_ON_FOR_CAR mib_car[0] WAIT 1500 dialogue_flag = 0 TIMERB = 0 m_goals++ ENDIF ENDIF ENDIF ENDIF // dialogue IF m_goals >= 5 IF TIMERB > 2000 IF audio_line_is_active = 0 SWITCH dialogue_flag CASE 0 $audio_string = &SYN2_HA audio_sound_file = SOUND_SYN2_HA START_NEW_SCRIPT audio_line rich_dude 0 1 1 0 // The Lord sent me to save your thread-bear soul, harlot! CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SYN2_HB dialogue_flag++ BREAK CASE 1 $audio_string = &SYN2_HB audio_sound_file = SOUND_SYN2_HB START_NEW_SCRIPT audio_line rich_dude 0 1 2 1 // Get in the car and remove your filthy vestments CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN2_HC dialogue_flag++ BREAK CASE 2 $audio_string = &SYN2_HC audio_sound_file = SOUND_SYN2_HC START_NEW_SCRIPT audio_line rich_dude 0 1 1 1 // so I my better gaze upon thine corruption! CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SYN2_HD dialogue_flag++ BREAK CASE 3 $audio_string = &SYN2_HD audio_sound_file = SOUND_SYN2_HD START_NEW_SCRIPT audio_line rich_dude 0 1 2 1 // Driver, get us out of here, CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN2_HE dialogue_flag++ BREAK CASE 4 $audio_string = &SYN2_HE audio_sound_file = SOUND_SYN2_HE START_NEW_SCRIPT audio_line rich_dude 0 1 1 1 // before the devil’s right hand snatches this po’girl from salvation! CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SYN2_HF dialogue_flag++ BREAK CASE 5 $audio_string = &SYN2_HF audio_sound_file = SOUND_SYN2_HF START_NEW_SCRIPT audio_line rich_car_driver 0 1 2 1 // Right away, your evangelical holiness! dialogue_flag++ BREAK ENDSWITCH TIMERB = 0 ENDIF ENDIF ENDIF IF m_goals = 5 CLEAR_AREA -1924.4874 724.8195 45.1340 100.0 TRUE SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 IF NOT IS_CAR_DEAD rich_car SET_CAR_COORDINATES rich_car -1924.4874 725.2195 45.1340 SET_CAR_HEADING rich_car 270.0 OPEN_CAR_DOOR rich_car REAR_RIGHT_DOOR FREEZE_CAR_POSITION rich_car TRUE ENDIF IF NOT IS_CAR_DEAD mib_car[0] SET_CAR_COORDINATES mib_car[0] -1932.3870 725.1635 45.2749 SET_CAR_HEADING mib_car[0] 270.0 FREEZE_CAR_POSITION mib_car[0] TRUE ENDIF IF NOT IS_CHAR_DEAD rich_car_driver CLEAR_CHAR_TASKS_IMMEDIATELY rich_car_driver SET_CHAR_COORDINATES rich_car_driver -1924.2238 723.2358 44.4453 SET_CHAR_HEADING rich_car_driver 159.4748 ENDIF // create prossie bitch CREATE_CHAR PEDTYPE_CIVFEMALE HFYPRO -1920.8837 718.9793 44.4453 girl1 SET_CHAR_HEADING girl1 0.0 FLUSH_ROUTE EXTEND_ROUTE -1921.8186 720.5550 44.4453 EXTEND_ROUTE -1926.2904 722.7397 44.4453 OPEN_SEQUENCE_TASK temp_seq TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_WALK FOLLOW_ROUTE_ONCE IF NOT IS_CAR_DEAD rich_car TASK_ENTER_CAR_AS_PASSENGER -1 rich_car 20000 2 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK girl1 temp_seq CLEAR_SEQUENCE_TASK temp_seq SET_CHAR_NEVER_TARGETTED girl1 TRUE SET_CHAR_DECISION_MAKER girl1 empty_dm // create preacher CREATE_CHAR PEDTYPE_CIVMALE WMOPREA -1923.5192 718.0508 44.9828 rich_dude SET_CHAR_HEADING rich_dude 0.0 SET_CHAR_DECISION_MAKER rich_dude empty_dm FLUSH_ROUTE EXTEND_ROUTE -1922.7072 719.7217 45.4453 EXTEND_ROUTE -1924.6691 720.7556 45.4453 EXTEND_ROUTE -1925.0269 720.9464 45.4453 EXTEND_ROUTE -1926.1879 721.5566 45.4453 EXTEND_ROUTE -1927.0065 722.2399 45.4453 OPEN_SEQUENCE_TASK temp_seq TASK_PAUSE -1 500 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_WALK FOLLOW_ROUTE_ONCE IF NOT IS_CHAR_DEAD girl1 TASK_TURN_CHAR_TO_FACE_CHAR -1 girl1 ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK rich_dude temp_seq CLEAR_SEQUENCE_TASK temp_seq TIMERA = 0 SET_FIXED_CAMERA_POSITION -1918.2228 720.1056 46.0226 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1919.1565 720.4551 45.9459 JUMP_CUT m_goals++ ENDIF IF m_goals = 6 IF TIMERA > 7050 SET_FIXED_CAMERA_POSITION -1933.5402 728.0091 46.4366 0.0 0.0 0.0 IF NOT IS_CAR_DEAD rich_car POINT_CAMERA_AT_CAR rich_car FIXED JUMP_CUT IF NOT IS_CAR_DEAD mib_car[0] FREEZE_CAR_POSITION mib_car[0] FALSE ENDIF FREEZE_CAR_POSITION rich_car FALSE IF NOT IS_CHAR_DEAD girl1 CLEAR_CHAR_TASKS_IMMEDIATELY girl1 WARP_CHAR_INTO_CAR_AS_PASSENGER girl1 rich_car 1 ENDIF OPEN_CAR_DOOR rich_car REAR_RIGHT_DOOR IF NOT IS_CHAR_DEAD rich_dude CLEAR_CHAR_TASKS_IMMEDIATELY rich_dude SET_CHAR_COORDINATES rich_dude -1927.0804 723.2823 44.4453 SET_CHAR_HEADING rich_dude 299.9935 TASK_ENTER_CAR_AS_PASSENGER rich_dude rich_car 20000 2 ENDIF IF NOT IS_CHAR_DEAD rich_car_driver CLEAR_CHAR_TASKS_IMMEDIATELY rich_car_driver CLEAR_LOOK_AT rich_car_driver IF NOT IS_CAR_DEAD rich_car TASK_ENTER_CAR_AS_DRIVER rich_car_driver rich_car 5000 ENDIF ENDIF m_goals++ ENDIF ENDIF ENDIF // wait for everyone to get in car IF m_goals = 7 IF NOT IS_CAR_DEAD rich_car IF NOT IS_CHAR_DEAD rich_car_driver IF IS_CHAR_IN_CAR rich_car_driver rich_car IF NOT IS_CHAR_DEAD rich_dude IF IS_CHAR_IN_CAR rich_dude rich_car IF dialogue_flag > 5 TASK_CAR_DRIVE_TO_COORD rich_car_driver rich_car -1902.0270 726.5126 45.2216 20.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH TIMERA = 0 m_goals++ ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // IF NOT IS_CAR_DEAD mib_car[0] // SET_CAR_ESCORT_CAR_REAR mib_car[0] rich_car // ENDIF // wait for cars to drive off IF m_goals = 8 IF TIMERA > 500 IF NOT IS_CHAR_DEAD mib_driver[0] IF NOT IS_CAR_DEAD mib_car[0] TASK_CAR_DRIVE_TO_COORD mib_driver[0] mib_car[0] -1902.0270 726.5126 45.2216 18.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF TIMERA = 0 m_goals++ ENDIF ENDIF IF m_goals = 9 IF TIMERA > 2000 m_goals = 99 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_O IF NOT IS_CHAR_DEAD girl1 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS girl1 -1.0 0.0 0.0 x y z GET_CHAR_HEADING girl1 heading SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "preacher point = " SAVE_FLOAT_TO_DEBUG_FILE x SAVE_FLOAT_TO_DEBUG_FILE y SAVE_FLOAT_TO_DEBUG_FILE z SAVE_FLOAT_TO_DEBUG_FILE heading ENDIF ENDIF IF m_goals = 888 IF TIMERA > 1000 IF NOT IS_CAR_DEAD rich_car IF IS_CAR_STOPPED rich_car IF IS_RECORDING_GOING_ON_FOR_CAR rich_car STOP_RECORDING_CAR rich_car GET_CAR_COORDINATES rich_car x y z GET_CAR_HEADING rich_car heading SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "rich car stopped at " SAVE_FLOAT_TO_DEBUG_FILE x SAVE_FLOAT_TO_DEBUG_FILE y SAVE_FLOAT_TO_DEBUG_FILE z SAVE_FLOAT_TO_DEBUG_FILE heading ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD mib_car[0] IF IS_CAR_STOPPED mib_car[0] IF IS_RECORDING_GOING_ON_FOR_CAR mib_car[0] STOP_RECORDING_CAR mib_car[0] GET_CAR_COORDINATES mib_car[0] x y z GET_CAR_HEADING mib_car[0] heading SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "mib_car stopped at " SAVE_FLOAT_TO_DEBUG_FILE x SAVE_FLOAT_TO_DEBUG_FILE y SAVE_FLOAT_TO_DEBUG_FILE z SAVE_FLOAT_TO_DEBUG_FILE heading ENDIF ENDIF ENDIF ENDIF ENDIF // cleanup cutscene IF m_goals = 99 IF NOT DOES_CHAR_EXIST rich_dude CREATE_CHAR PEDTYPE_CIVMALE WMOPREA 0.0 0.0 0.0 rich_dude SET_CHAR_DECISION_MAKER rich_dude empty_dm ENDIF IF NOT DOES_CHAR_EXIST girl1 CREATE_CHAR PEDTYPE_CIVFEMALE HFYPRO 0.0 0.0 0.0 girl1 SET_CHAR_DECISION_MAKER girl1 empty_dm ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED STRETCH MARK_MODEL_AS_NO_LONGER_NEEDED HUNTLEY MARK_MODEL_AS_NO_LONGER_NEEDED HFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED BMYMIB MARK_MODEL_AS_NO_LONGER_NEEDED WMOPREA MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG //GOSUB cleanup_car_phone_cam START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF IF NOT IS_CAR_DEAD mib_car[0] IF IS_PLAYBACK_GOING_ON_FOR_CAR mib_car[0] STOP_PLAYBACK_RECORDED_CAR mib_car[0] ENDIF FREEZE_CAR_POSITION mib_car[0] FALSE IF NOT IS_CHAR_DEAD mib_driver[0] CLEAR_CHAR_TASKS_IMMEDIATELY mib_driver[0] WARP_CHAR_INTO_CAR mib_driver[0] mib_car[0] ENDIF ENDIF IF NOT IS_CAR_DEAD rich_car IF IS_PLAYBACK_GOING_ON_FOR_CAR rich_car STOP_PLAYBACK_RECORDED_CAR rich_car ENDIF FREEZE_CAR_POSITION rich_car FALSE ENDIF IF NOT IS_CAR_DEAD rich_car IF NOT IS_CHAR_DEAD rich_car_driver CLEAR_CHAR_TASKS_IMMEDIATELY rich_car_driver WARP_CHAR_INTO_CAR rich_car_driver rich_car ENDIF IF NOT IS_CHAR_DEAD girl1 CLEAR_CHAR_TASKS_IMMEDIATELY girl1 WARP_CHAR_INTO_CAR_AS_PASSENGER girl1 rich_car 1 ENDIF IF NOT IS_CHAR_DEAD rich_dude CLEAR_CHAR_TASKS_IMMEDIATELY rich_dude WARP_CHAR_INTO_CAR_AS_PASSENGER rich_dude rich_car 2 ENDIF CLOSE_ALL_CAR_DOORS rich_car ENDIF IF NOT IS_CAR_DEAD mib_car[0] IF NOT IS_CAR_DEAD rich_car IF NOT IS_CHAR_DEAD mib_driver[0] START_PLAYBACK_RECORDED_CAR_USING_AI mib_car[0] 539 SKIP_IN_PLAYBACK_RECORDED_CAR mib_car[0] 0.0 SET_CAR_DRIVING_STYLE mib_car[0] DRIVINGMODE_AVOIDCARS_OBEYLIGHTS SET_CAR_PROOFS mib_car[0] FALSE FALSE FALSE FALSE FALSE LOCK_CAR_DOORS mib_car[0] CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_HEAVY mib_car[0] TRUE SET_CAR_TRACTION mib_car[0] 2.0 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD rich_car CLEAR_AREA -1908.7855 726.1257 45.0970 5.0 TRUE SET_CAR_COORDINATES rich_car -1908.7855 726.1257 45.0970 SET_CAR_HEADING rich_car 273.1095 FREEZE_CAR_POSITION rich_car FALSE SET_CAR_FORWARD_SPEED rich_car 10.0 SET_CAR_PROOFS rich_car FALSE FALSE FALSE FALSE FALSE LOCK_CAR_DOORS rich_car CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_HEAVY rich_car TRUE SET_CAR_TRACTION rich_car 2.0 SET_CAR_HEALTH rich_car 1850 START_PLAYBACK_RECORDED_CAR_USING_AI rich_Car 539 SKIP_IN_PLAYBACK_RECORDED_CAR rich_Car 5.0 SET_CAR_DRIVING_STYLE rich_Car DRIVINGMODE_AVOIDCARS_OBEYLIGHTS ADD_UPSIDEDOWN_CAR_CHECK rich_Car ADD_STUCK_CAR_CHECK rich_car 2.0 3000 ENDIF SWITCH_PED_ROADS_ON -1950.0 718.0 44.0 -1912.0 731.0 48.0 SWITCH_ROADS_ON -1950.0 718.0 44.0 -1912.0 731.0 48.0 CLEAR_PRINTS SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 m_stage++ m_goals = 0 ENDIF RETURN // ************************************************************************************************************* // STAGE 10 - End chase // ************************************************************************************************************* SYN2_m_stage_7: LVAR_INT rich_dude_blip LVAR_INT player_has_attacked_convoy LVAR_INT rich_help LVAR_FLOAT car_speed LVAR_INT last_car_health LVAR_INT this_car_health LVAR_INT mib_car[4] LVAR_INT mib_driver[4] LVAR_INT mib_driver_blip LVAR_INT mib_passenger_blip // LVAR_INT test_car1 // LVAR_INT test_driver1 // initialise chase section IF m_goals = 0 SUPPRESS_CAR_MODEL STRETCH SUPPRESS_CAR_MODEL HUNTLEY car_speed = 15.0 IF NOT IS_CHAR_DEAD rich_dude ADD_BLIP_FOR_CHAR rich_dude rich_dude_blip SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR rich_dude FALSE ENDIF IF NOT IS_CHAR_DEAD girl1 SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR girl1 FALSE ENDIF IF NOT IS_CHAR_DEAD rich_car_driver SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR rich_car_driver FALSE ENDIF IF NOT IS_CHAR_DEAD mib_driver[0] ADD_BLIP_FOR_CHAR mib_driver[0] mib_driver_blip ENDIF IF NOT IS_CHAR_DEAD mib_passenger ADD_BLIP_FOR_CHAR mib_passenger mib_passenger_blip ENDIF player_has_attacked_convoy = 0 rich_help = 0 syn2_time_until_backup = 30000 //backup_call_state = 0 player_has_attacked_convoy = 0 rich_car_timer = 0 CLEAR_PRINTS PRINT_NOW SYN2_70 10000 1 // kill the rich punter IF NOT IS_CAR_DEAD rich_car LOCK_CAR_DOORS rich_car CARLOCK_LOCKED ENDIF SET_CAR_DENSITY_MULTIPLIER 0.65 SET_PED_DENSITY_MULTIPLIER 1.0 LVAR_INT tell_player_to_kill_punter tell_player_to_kill_punter = 0 m_goals++ ENDIF IF tell_player_to_kill_punter = 0 IF DOES_BLIP_EXIST jizzy_car_blip PRINT SYN_M_1 5000 1 // get back in the pimpmobile tell_player_to_kill_punter = 1 ENDIF ELSE IF NOT DOES_BLIP_EXIST jizzy_car_blip CLEAR_THIS_PRINT SYN_M_1 PRINT SYN2_70 5000 1 // kill the rich punter tell_player_to_kill_punter = 0 ENDIF ENDIF IF m_goals = 1 // ******* CONTROL SPEED OF LIMO **************** LVAR_FLOAT limo_playback_speed LVAR_FLOAT last_limo_distance LVAR_INT limo_flag IF NOT IS_CAR_DEAD rich_car IF player_has_attacked_convoy = 0 IF IS_PLAYBACK_GOING_ON_FOR_CAR rich_car limo_playback_speed = 0.3 ELSE IF NOT limo_flag = 1 IF NOT IS_CHAR_DEAD rich_car_driver TASK_CAR_DRIVE_WANDER rich_car_driver rich_car 42.0 DRIVINGMODE_AVOIDCARS limo_flag = 1 ENDIF ENDIF ENDIF ELSE IF IS_PLAYBACK_GOING_ON_FOR_CAR rich_car // determine if player is ahead of or behind limo GET_OFFSET_FROM_CAR_IN_WORLD_COORDS rich_car 0.0 10.0 0.0 x y z GET_CHAR_COORDINATES scplayer x2 y2 z2 GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 temp_float GET_OFFSET_FROM_CAR_IN_WORLD_COORDS rich_car 0.0 -10.0 0.0 x y z GET_CHAR_COORDINATES scplayer x2 y2 z2 GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 temp_float2 // ahead of limo IF temp_float < temp_float2 limo_playback_speed +=@ 0.1 ELSE // behind limo GET_CAR_COORDINATES rich_car x y z GET_CHAR_COORDINATES scplayer x2 y2 z2 GET_DISTANCE_BETWEEN_COORDS_3D x y z x2 y2 z2 temp_float IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer rich_car 20.0 20.0 FALSE limo_playback_speed +=@ 0.05 ELSE IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer rich_car 25.0 25.0 FALSE limo_playback_speed +=@ -0.01 ENDIF ENDIF IF limo_playback_speed < 0.6 limo_playback_speed = 0.6 ENDIF last_limo_distance = temp_float ENDIF ELSE IF NOT limo_flag = 1 IF NOT IS_CHAR_DEAD rich_car_driver TASK_CAR_DRIVE_WANDER rich_car_driver rich_car 42.0 DRIVINGMODE_AVOIDCARS limo_flag = 1 ENDIF ENDIF ENDIF ENDIF IF limo_playback_speed > 1.5 limo_playback_speed = 1.5 ENDIF IF IS_PLAYBACK_GOING_ON_FOR_CAR rich_car //WRITE_DEBUG_WITH_FLOAT limo_playback_speed limo_playback_speed SET_PLAYBACK_SPEED rich_car limo_playback_speed ENDIF // **** check if it's stuck on roof **** IF IS_CAR_STUCK_ON_ROOF rich_car IF NOT IS_CAR_ON_SCREEN rich_Car GET_CAR_COORDINATES rich_Car x y z GET_CAR_HEADING rich_car heading z += 1.0 SET_CAR_COORDINATES rich_car x y z SET_CAR_HEADING rich_car heading ENDIF ENDIF // *** check if it's stuck *** IF IS_CAR_STUCK rich_car IF NOT IS_CAR_ON_SCREEN rich_car IF NOT LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer rich_car 20.0 20.0 20.0 FALSE GET_CAR_COORDINATES rich_car x y z temp_int = 1 WHILE temp_int < 20 GET_NTH_CLOSEST_CAR_NODE x y z temp_int x2 y2 z2 IF NOT IS_POINT_ON_SCREEN x2 y2 z2 5.0 IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY x2 y2 z2 5.0 5.0 5.0 temp_int = 25 ELSE temp_int++ ENDIF ELSE temp_int++ ENDIF ENDWHILE IF temp_int = 25 SET_CAR_COORDINATES rich_car x y z ENDIF ELSE IF NOT IS_CHAR_DEAD rich_car_driver TASK_CAR_TEMP_ACTION rich_car_driver rich_car TEMPACT_REVERSE 1000 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED rich_car -10.0 ENDIF ENDIF ENDIF // ******* SLOW DOWN / SPEED UP BACK CAR ************************ LVAR_FLOAT mib_car_playback_speed[2] LVAR_INT mib_car_flag[2] IF NOT IS_CAR_DEAD mib_Car[0] IF IS_PLAYBACK_GOING_ON_FOR_CAR mib_car[0] IF NOT IS_CAR_DEAD rich_car // work out if car is behind or infront of limo GET_OFFSET_FROM_CAR_IN_WORLD_COORDS rich_car 0.0 -10.0 0.0 x y z GET_CAR_COORDINATES mib_car[0] x2 y2 z2 GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 temp_float GET_OFFSET_FROM_CAR_IN_WORLD_COORDS rich_car 0.0 -20.0 0.0 x y z GET_CAR_COORDINATES mib_car[0] x2 y2 z2 GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 temp_float2 // ahead of limo offset IF temp_float < temp_float2 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS rich_car 0.0 -15.0 0.0 x y z IF NOT LOCATE_CAR_3D mib_car[0] x y z 5.0 5.0 5.0 FALSE mib_car_playback_speed[0] +=@ -0.2 ELSE mib_car_playback_speed[0] = limo_playback_speed ENDIF ELSE // behind limo offset IF NOT mib_car_flag[0] = 2 SET_CAR_DRIVING_STYLE mib_car[0] DRIVINGMODE_PLOUGHTHROUGH mib_car_flag[0] = 2 ENDIF mib_car_playback_speed[0] = limo_playback_speed + 3.0 ENDIF SET_PLAYBACK_SPEED mib_car[0] mib_car_playback_speed[0] LVAR_FLOAT rich_car_x rich_car_y rich_car_z GET_CAR_COORDINATES rich_car rich_car_x rich_car_y rich_car_z ELSE STOP_PLAYBACK_RECORDED_CAR mib_car[0] ENDIF ELSE IF NOT IS_CAR_DEAD rich_car IF NOT mib_car_flag[0] = 99 IF NOT IS_CHAR_DEAD mib_driver[0] TASK_CAR_MISSION mib_driver[0] mib_car[0] rich_Car MISSION_ESCORT_REAR 100.0 DRIVINGMODE_PLOUGHTHROUGH mib_car_flag[0] = 99 ENDIF ENDIF GET_CAR_COORDINATES rich_car rich_car_x rich_car_y rich_car_z ELSE IF mib_car_flag[0] < 100 IF NOT IS_CHAR_DEAD mib_driver[0] TASK_CAR_DRIVE_TO_COORD mib_driver[0] mib_car[0] rich_car_x rich_car_y rich_car_z 40.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS mib_car_flag[0] = 100 ENDIF ELSE IF LOCATE_CAR_3D mib_car[0] rich_car_x rich_car_y rich_car_z 20.0 20.0 10.0 FALSE IF NOT mib_car_flag[0] = 101 IF NOT IS_CHAR_DEAD mib_driver[0] OPEN_SEQUENCE_TASK temp_seq TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK mib_driver[0] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD mib_passenger OPEN_SEQUENCE_TASK temp_seq TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK mib_passenger temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF mib_car_flag[0] = 101 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // ******* WAIT FOR PLAYER TO ATTACK LIMO ********************** IF player_has_attacked_convoy = 0 IF NOT IS_CAR_DEAD rich_car IF HAS_CAR_BEEN_DAMAGED_BY_CHAR rich_car scplayer //CLEAR_PRINTS //PRINT_NOW SYN2_21 4000 1 // RICH PUNTER - 'Ahhh, we're being attacked!' player_has_attacked_convoy = 1 attack_conversation = 1 TIMERA = 0 ENDIF ENDIF IF NOT IS_CAR_DEAD mib_car[0] IF HAS_CAR_BEEN_DAMAGED_BY_CHAR mib_car[0] scplayer //CLEAR_PRINTS //PRINT_NOW SYN2_21 4000 1 // RICH PUNTER - 'Ahhh, we're being attacked!' player_has_attacked_convoy = 1 attack_conversation = 1 ENDIF ENDIF IF NOT IS_CAR_DEAD rich_car IF LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer rich_car 30.0 30.0 30.0 FALSE IF suspicion_timer > 5000 //CLEAR_PRINTS attack_conversation = 1 player_has_attacked_convoy = 1 ENDIF ELSE suspicion_timer = 0 ENDIF ENDIF IF player_has_attacked_convoy = 1 IF NOT IS_CAR_DEAD rich_car SET_CAR_DRIVING_STYLE rich_car DRIVINGMODE_AVOIDCARS ENDIF IF NOT IS_CAR_DEAD rich_car GET_CAR_HEALTH rich_car rich_car_health next_rich_car_stop_health = rich_car_health - 100 rich_backup_timer = 0 ENDIF ENDIF ENDIF // **************** DIALOGUE WHEN PLAYER FIRST ATTACKS CONVOY **************** LVAR_INT attack_conversation IF attack_conversation > 0 AND attack_conversation < 7 IF TIMERB > 1000 IF NOT IS_CHAR_DEAD rich_dude IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer rich_dude 20.0 20.0 20.0 FALSE IF audio_line_is_active = 0 SWITCH attack_conversation CASE 1 //[SYN2_JA] The Devil comes to claim his own, Godspeed, driver, Godspeed! $audio_string = &SYN2_JA audio_sound_file = SOUND_SYN2_JA START_NEW_SCRIPT audio_line rich_dude 0 1 1 0 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SYN2_JB attack_conversation++ TIMERB = 0 BREAK CASE 2 // [SYN2_JB] We need more than just the Lord’s benifaction! $audio_string = &SYN2_JB audio_sound_file = SOUND_SYN2_JB START_NEW_SCRIPT audio_line rich_dude 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN2_JE attack_conversation++ TIMERB = 0 BREAK CASE 3 // [SYN2_JE] Don’t worry, girl, the Lord’s army will come to our aid! $audio_string = &SYN2_JE audio_sound_file = SOUND_SYN2_JE START_NEW_SCRIPT audio_line rich_dude 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SYN2_JF attack_conversation++ TIMERB = 0 BREAK CASE 4 // [SYN2_JF] Now just keep undressing... $audio_string = &SYN2_JF audio_sound_file = SOUND_SYN2_JF START_NEW_SCRIPT audio_line rich_dude 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN2_JG attack_conversation++ TIMERB = 0 BREAK CASE 5 // [SYN2_JF] That’s right, put your hand there... $audio_string = &SYN2_JG audio_sound_file = SOUND_SYN2_JG START_NEW_SCRIPT audio_line rich_dude 0 1 1 1 attack_conversation++ TIMERB = 0 BREAK CASE 6 attack_conversation++ IF NOT IS_CAR_DEAD rich_car CLEAR_CAR_LAST_DAMAGE_ENTITY rich_car ENDIF BREAK ENDSWITCH ENDIF ENDIF ENDIF ENDIF ENDIF // ************* DIALOGUE IF PLAYER HITS CAR ******************** LVAR_INT damaged_preacher_dialogue LVAR_INT damaged_preacher_timer IF attack_conversation = 7 AND damaged_preacher_timer > 10000 IF NOT IS_CAR_DEAD rich_car IF HAS_CAR_BEEN_DAMAGED_BY_CHAR rich_car scplayer IF NOT IS_MESSAGE_BEING_DISPLAYED damaged_preacher_dialogue++ IF damaged_preacher_dialogue > 4 damaged_preacher_dialogue = 0 ENDIF SWITCH damaged_preacher_dialogue CASE 0 // Be gone, foul abomination! $audio_string = &SYN2_KA audio_sound_file = SOUND_SYN2_KA START_NEW_SCRIPT audio_line rich_dude 0 1 1 0 BREAK CASE 1 // Argh, he comes for us! $audio_string = &SYN2_KB audio_sound_file = SOUND_SYN2_KB START_NEW_SCRIPT audio_line rich_dude 0 1 1 0 BREAK CASE 2 // Faster, driver, faster! $audio_string = &SYN2_KC audio_sound_file = SOUND_SYN2_KC START_NEW_SCRIPT audio_line rich_dude 0 1 1 0 BREAK CASE 3 // Ow! Watch those teeth, girl! $audio_string = &SYN2_KD audio_sound_file = SOUND_SYN2_KD START_NEW_SCRIPT audio_line rich_dude 0 1 1 0 BREAK CASE 4 // Argh! Careful with the ‘little bishop’, whore! $audio_string = &SYN2_KE audio_sound_file = SOUND_SYN2_KE START_NEW_SCRIPT audio_line rich_dude 0 1 1 0 BREAK ENDSWITCH damaged_preacher_timer = 0 CLEAR_CAR_LAST_DAMAGE_ENTITY rich_car ELSE CLEAR_CAR_LAST_DAMAGE_ENTITY rich_car ENDIF ENDIF ENDIF ENDIF // // **************** UPDATE BACK CAR AI ****************** IF player_has_attacked_convoy = 1 IF NOT IS_CHAR_DEAD mib_passenger IF NOT IS_CAR_DEAD mib_car[0] IF NOT IS_CHAR_DEAD mib_driver[0] IF IS_CHAR_IN_CAR mib_passenger mib_car[0] // GET_SCRIPT_TASK_STATUS mib_passenger TASK_DRIVE_BY temp_int // IF temp_int = FINISHED_TASK // TASK_DRIVE_BY mib_passenger scplayer -1 0.0 0.0 0.0 20.0 DRIVEBY_AI_ALL_DIRN FALSE 20 // ENDIF ELSE GET_SCRIPT_TASK_STATUS mib_passenger PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK mib_passenger temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS mib_passenger PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK mib_passenger temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF ENDIF ENDIF ENDIF // ************ warp landrovers if they get stuck ************* // if car is no where near player or rich car warp closer to rich car temp_int = 0 WHILE temp_int < 2 IF DOES_VEHICLE_EXIST mib_car[temp_int] IF NOT IS_CAR_DEAD mib_car[temp_int] IF NOT IS_CAR_DEAD rich_car GET_CAR_COORDINATES rich_car x y z IF NOT LOCATE_CAR_3D mib_car[temp_int] x y z 80.0 80.0 80.0 FALSE GET_CHAR_COORDINATES scplayer x y z IF NOT LOCATE_CAR_3D mib_car[temp_int] x y z 40.0 40.0 40.0 FALSE IF NOT IS_CAR_ON_SCREEN mib_car[temp_int] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS rich_car 0.0 -15.0 0.0 x y z temp_int2 = 1 WHILE temp_int2 < 20 GET_NTH_CLOSEST_CAR_NODE x y z temp_int2 x2 y2 z2 IF NOT IS_POINT_ON_SCREEN x2 y2 z2 5.0 IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY x2 y2 z2 5.0 5.0 5.0 temp_int2 = 25 ELSE temp_int2++ ENDIF ELSE temp_int2++ ENDIF ENDWHILE IF temp_int2 = 25 SET_CAR_COORDINATES mib_car[temp_int] x2 y2 z2 IF NOT IS_CAR_DEAD rich_car GET_CAR_COORDINATES rich_car x y z ENDIF vec_x = x - x2 vec_y = y - y2 GET_HEADING_FROM_VECTOR_2D vec_x vec_y heading SET_CAR_HEADING mib_car[temp_int] heading ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF temp_int++ ENDWHILE IF debug_on = 1 IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK IF NOT IS_CAR_DEAD rich_car SET_CAR_HEALTH rich_Car 499 ENDIF ENDIF ENDIF // if all guys are dead goto next stage temp_int = 0 IF IS_CHAR_DEAD rich_dude IF DOES_BLIP_EXIST rich_dude_blip REMOVE_BLIP rich_dude_blip ENDIF temp_int++ ENDIF IF IS_CHAR_DEAD mib_driver[0] IF DOES_BLIP_EXIST mib_driver_blip REMOVE_BLIP mib_driver_blip ENDIF temp_int++ ENDIF IF IS_CHAR_DEAD mib_passenger IF DOES_BLIP_EXIST mib_passenger_blip REMOVE_BLIP mib_passenger_blip ENDIF temp_int++ ENDIF IF temp_int = 3 //WRITE_DEBUG stage_passed m_goals = 99 ENDIF // check if player loses limo IF NOT IS_CHAR_DEAD rich_dude IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer rich_dude 150.0 150.0 FALSE IF rich_car_timer > 20000 GOSUB cleanup_car_phone_cam PRINT_NOW SYN2_71 5000 1 // you lost the preacher m_failed = 1 ENDIF ELSE rich_car_timer = 0 ENDIF ENDIF //GOSUB update_rich_chasers ENDIF IF m_goals = 99 //CLEAR_ONSCREEN_TIMER syn2_time_until_backup m_stage++ m_goals = 0 TIMERA = 0 LOAD_MISSION_AUDIO 3 SOUND_CAR_PHONE_RING WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE ENDIF RETURN // ************************************************************************************************************* // STAGE 11 - Final Phone call from Jizzy // ************************************************************************************************************* SYN2_m_stage_8: // make phone ring IF m_goals = 0 IF TIMERA > 3000 // start phone sound IF NOT IS_CAR_DEAD jizzy_car IF NOT IS_CHAR_IN_CAR scplayer jizzy_car PRINT SYN_M_1 7000 1 // get back in the pimpmobile ENDIF GET_CAR_COORDINATES jizzy_car x y z ATTACH_MISSION_AUDIO_TO_CAR 3 jizzy_car PLAY_MISSION_AUDIO 3 phone_ringing = 1 ENDIF TIMERA = 0 //PRINT_NOW SYN_M_2 4000 1 m_goals++ ENDIF ENDIF // wait for player to get in car IF m_goals = 1 IF NOT IS_CAR_DEAD jizzy_car IF IS_CHAR_IN_CAR scplayer jizzy_car IF TIMERA > 2000 SET_PLAYER_CONTROL player1 OFF stored_weapon_model = -1 TIMERA = 0 m_goals++ ENDIF CLEAR_THIS_PRINT SYN_M_1 ENDIF ENDIF ENDIF // wait a couple of rings before player answers phone IF m_goals = 2 IF NOT IS_CAR_DEAD jizzy_car IF IS_CHAR_IN_CAR scplayer jizzy_car CLEAR_PRINTS CLEAR_MISSION_AUDIO 3 phone_ringing = 0 m_goals++ ENDIF ENDIF ENDIF // phone cutscene IF m_goals = 3 car_phone_cam_int = 0 stored_weapon_model = -1 CLEAR_PRINTS DO_FADE 150 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB setup_car_phone_cam DO_FADE 150 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD mib_car[0] DELETE_CAR mib_car[0] ENDIF IF NOT IS_CAR_DEAD mib_car[1] DELETE_CAR mib_car[1] ENDIF m_goals++ ENDIF // wait a tic before starting text IF m_goals = 4 IF TIMERA > 1000 dialogue_flag = 0 TIMERA = 0 m_goals++ ENDIF ENDIF IF m_goals > 4 AND m_goals < 99 IF audio_line_is_active = 0 IF dialogue_timer > 1000 SWITCH dialogue_flag CASE 0 $audio_string = &SYN2_GA audio_sound_file = SOUND_SYN2_GA START_NEW_SCRIPT audio_line scplayer 0 1 1 0 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SYN2_GB dialogue_flag++ BREAK CASE 1 $audio_string = &SYN2_GB audio_sound_file = SOUND_SYN2_GB START_NEW_SCRIPT audio_line -1 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN2_GC dialogue_flag++ BREAK CASE 2 $audio_string = &SYN2_GC audio_sound_file = SOUND_SYN2_GC START_NEW_SCRIPT audio_line -1 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SYN2_GD dialogue_flag++ BREAK CASE 3 $audio_string = &SYN2_GD audio_sound_file = SOUND_SYN2_GD START_NEW_SCRIPT audio_line -1 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN2_GF dialogue_flag++ BREAK CASE 4 $audio_string = &SYN2_GF audio_sound_file = SOUND_SYN2_GF START_NEW_SCRIPT audio_line -1 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_SYN2_GE dialogue_flag++ BREAK CASE 5 $audio_string = &SYN2_GE audio_sound_file = SOUND_SYN2_GE START_NEW_SCRIPT audio_line scplayer 0 1 2 1 dialogue_flag++ BREAK CASE 6 dialogue_flag++ BREAK ENDSWITCH dialogue_timer = 0 ENDIF ENDIF ENDIF // wait for cutscene to finish IF m_goals = 5 IF dialogue_flag > 6 OR IS_SKIP_CUTSCENE_BUTTON_PRESSED m_goals = 99 ENDIF ENDIF IF m_goals = 99 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB cleanup_car_phone_cam IF NOT IS_CAR_DEAD jizzy_car GET_CAR_COORDINATES jizzy_car x y z CLEAR_AREA x y z 15.0 TRUE ENDIF DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE audio_line_is_active = 0 IF NOT IS_WANTED_LEVEL_GREATER player1 1 ALTER_WANTED_LEVEL player1 2 ENDIF m_passed = 1 m_stage++ ENDIF RETURN // ************************************************************************************************************* // GLOBAL FUNCTIONS - run continuously throughout lifetime of level // ************************************************************************************************************* SYN2_GLOBAL_SHIT: IF phone_ringing = 1 IF HAS_MISSION_AUDIO_FINISHED 3 PLAY_MISSION_AUDIO 3 ENDIF ENDIF IF m_stage < 7 IF DOES_CHAR_EXIST girl1 IF IS_CHAR_DEAD girl1 GOSUB cleanup_car_phone_cam PRINT_NOW SYN_F_5 5000 1 // Jizzy's girl is history m_failed = 1 ENDIF ENDIF ENDIF IF DOES_CHAR_EXIST girl2 IF IS_CHAR_DEAD girl2 GOSUB cleanup_car_phone_cam PRINT_NOW SYN_F_5 5000 1 // Jizzy's girl is history m_failed = 1 ENDIF ENDIF IF DOES_CHAR_EXIST girl3 IF IS_CHAR_DEAD girl3 GOSUB cleanup_car_phone_cam PRINT_NOW SYN_F_5 5000 1 // Jizzy's girl is history m_failed = 1 ENDIF ENDIF // fail conditions IF DOES_VEHICLE_EXIST jizzy_car IF IS_CAR_DEAD jizzy_car GOSUB cleanup_car_phone_cam PRINT_NOW SYN_F_2 5000 1 // ~s~You destroyed Jizzy's car. m_failed = 1 ENDIF ENDIF // // run out of time // IF m_stage > 2 // IF syn2_timer = 0 // PRINT_NOW SYN_F_6 5000 1 // you took too long // m_failed = 1 // ENDIF // ENDIF // remove / create blip for jizzy's car IF m_stage > 2 IF NOT IS_CAR_DEAD jizzy_car IF NOT IS_CHAR_IN_CAR scplayer jizzy_car IF NOT DOES_BLIP_EXIST jizzy_car_blip ADD_BLIP_FOR_CAR jizzy_car jizzy_car_blip SET_BLIP_AS_FRIENDLY jizzy_car_blip TRUE ENDIF ELSE IF DOES_BLIP_EXIST jizzy_car_blip REMOVE_BLIP jizzy_car_blip ENDIF ENDIF ENDIF ENDIF RETURN // ************************************************************************************************************* // MISSION SPECIFIC GOSUBS // ************************************************************************************************************* pimp_ditches_girl: //IF girl_is_with_rival = 1 IF NOT IS_CHAR_DEAD girl2 CLEAR_CHAR_TASKS girl2 OPEN_SEQUENCE_TASK temp_seq //TASK_FALL_AND_GET_UP -1 1 3000 TASK_DUCK -1 2000 IF NOT IS_CHAR_DEAD rival_pimp TASK_SMART_FLEE_CHAR -1 rival_pimp 100.0 60000 ENDIF TASK_WANDER_STANDARD -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK girl2 temp_seq CLEAR_SEQUENCE_TASK temp_seq //PRINT_NOW SYN_D07 5000 1 // your not worth the trouble bitch girl_is_with_rival = 0 pimp_is_waiting = 99 ENDIF //ENDIF RETURN LVAR_INT car_phone_cam_int LVAR_INT on_cutscene_duty LVAR_INT stored_weapontype LVAR_INT stored_ammo LVAR_INT stored_weapon_model LVAR_INT player_has_brassknuckle LVAR_INT current_char_weapontype setup_car_phone_cam: on_cutscene_duty = 1 // weapon stuff //////////////////////////// // store current weapon GET_CURRENT_CHAR_WEAPON scplayer current_char_weapontype // remove brassknuckle IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_BRASSKNUCKLE REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_BRASSKNUCKLE player_has_brassknuckle = 1 REQUEST_MODEL BRASSKNUCKLE WHILE NOT HAS_MODEL_LOADED BRASSKNUCKLE WAIT 0 ENDWHILE ELSE player_has_brassknuckle = 0 ENDIF SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED ///////////////////////////////////////////// // INCAR CUTSCENE ------------------ IF NOT HAS_ANIMATION_LOADED CAR_CHAT REQUEST_ANIMATION CAR_CHAT WHILE NOT HAS_ANIMATION_LOADED CAR_CHAT WAIT 0 ENDWHILE ENDIF IF NOT HAS_MODEL_LOADED CELLPHONE REQUEST_MODEL CELLPHONE WHILE NOT HAS_MODEL_LOADED CELLPHONE WAIT 0 ENDWHILE ENDIF // IF NOT HAS_MODEL_LOADED COLT45 // REQUEST_MODEL COLT45 // WHILE NOT HAS_MODEL_LOADED COLT45 // WAIT 0 // ENDWHILE // ENDIF IF NOT IS_CAR_DEAD jizzy_car GET_OFFSET_FROM_CAR_IN_WORLD_COORDS jizzy_car -0.4900 0.0500 0.1830 x y z CLEAR_AREA x y z 2.0 TRUE GET_CAR_COORDINATES jizzy_car x y z GET_CAR_HEADING jizzy_car heading SET_CAR_COORDINATES jizzy_car x y z SET_CAR_HEADING jizzy_car heading ENDIF SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON //FREEZE_ONSCREEN_TIMER TRUE IF NOT IS_CAR_DEAD jizzy_car FREEZE_CAR_POSITION jizzy_car TRUE CLOSE_ALL_CAR_DOORS jizzy_car ENDIF GET_CHAR_COORDINATES scplayer x y z IF car_phone_cam_int = 0 IF NOT IS_CAR_DEAD jizzy_car GET_OFFSET_FROM_CAR_IN_WORLD_COORDS jizzy_car 0.0100 0.7500 0.7700 x y z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS jizzy_car -0.3600 0.1200 0.6600 vec_x vec_y vec_z ENDIF ENDIF IF car_phone_cam_int = 1 IF NOT IS_CAR_DEAD jizzy_car GET_OFFSET_FROM_CAR_IN_WORLD_COORDS jizzy_car -0.0400 0.6800 0.6900 x y z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS jizzy_car -0.5500 -0.2900 0.6400 vec_x vec_y vec_z ENDIF ENDIF IF car_phone_cam_int = 2 IF NOT IS_CAR_DEAD jizzy_car GET_OFFSET_FROM_CAR_IN_WORLD_COORDS jizzy_car 0.5100 -0.9000 0.8400 x y z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS jizzy_car -0.4100 -0.1400 0.6400 vec_x vec_y vec_z ENDIF ENDIF CREATE_OBJECT cellphone x y z jizzy_phone CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF NOT IS_CAR_DEAD jizzy_car ATTACH_CHAR_TO_CAR scplayer jizzy_car -0.4900 0.0500 0.1830 FACING_FORWARD 0.0 WEAPONTYPE_UNARMED ENDIF IF car_phone_cam_int = 0 OPEN_SEQUENCE_TASK temp_seq TASK_PICK_UP_OBJECT -1 jizzy_phone 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL TRUE TASK_PLAY_ANIM -1 carfone_loopA CAR_CHAT 10000.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 carfone_loopA CAR_CHAT 10000.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 carfone_loopA CAR_CHAT 10000.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 carfone_loopA CAR_CHAT 10000.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 carfone_loopA CAR_CHAT 10000.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 carfone_loopA CAR_CHAT 10000.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 carfone_out CAR_CHAT 4.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK temp_seq ENDIF IF car_phone_cam_int = 1 OPEN_SEQUENCE_TASK temp_seq TASK_PICK_UP_OBJECT -1 jizzy_phone 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL TRUE TASK_PLAY_ANIM -1 carfone_loopA CAR_CHAT 10000.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 carfone_loopA CAR_CHAT 10000.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 carfone_loopA_to_B CAR_CHAT 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 carfone_loopB CAR_CHAT 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 carfone_loopB_to_A CAR_CHAT 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 carfone_loopA CAR_CHAT 4.0 TRUE FALSE FALSE TRUE -1 //TASK_PLAY_ANIM -1 carfone_out CAR_CHAT 4.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK temp_seq ENDIF IF car_phone_cam_int = 2 OPEN_SEQUENCE_TASK temp_seq TASK_PICK_UP_OBJECT -1 jizzy_phone 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL TRUE TASK_PLAY_ANIM -1 carfone_loopA CAR_CHAT 10000.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 carfone_loopA_to_B CAR_CHAT 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 carfone_loopB CAR_CHAT 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 carfone_loopB_to_A CAR_CHAT 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 carfone_loopA CAR_CHAT 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 carfone_loopA CAR_CHAT 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 carfone_out CAR_CHAT 4.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK temp_seq ENDIF PERFORM_SEQUENCE_TASK scplayer temp_seq CLEAR_SEQUENCE_TASK temp_seq WAIT 0 SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 POINT_CAMERA_AT_POINT vec_x vec_y vec_z JUMP_CUT SET_NEAR_CLIP 0.01 TIMERA = 0 RETURN cleanup_car_phone_cam: START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 // weapon stuff //////////////////////////// // give smg weapon back to char // give back brassknuckle IF player_has_brassknuckle = 1 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_BRASSKNUCKLE 1 player_has_brassknuckle = 0 MARK_MODEL_AS_NO_LONGER_NEEDED BRASSKNUCKLE ENDIF // give back current weapon SET_CURRENT_CHAR_WEAPON scplayer current_char_weapontype //////////////////////////////////////////// CLEAR_PRINTS SET_PLAYER_CONTROL player1 ON IF NOT IS_CAR_DEAD jizzy_car //SET_CAN_BURST_CAR_TYRES jizzy_car TRUE FREEZE_CAR_POSITION jizzy_car FALSE IF on_cutscene_duty = 1 DETACH_CHAR_FROM_CAR scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer WARP_CHAR_INTO_CAR scplayer jizzy_car DELETE_OBJECT jizzy_phone ENDIF ENDIF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF REMOVE_BLIP mib_driver_blip REMOVE_BLIP mib_passenger_blip // MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE // REMOVE_ANIMATION CAR_CHAT on_cutscene_duty = 0 // // dunno if we need these // RESTORE_CAMERA_JUMPCUT // SET_CAMERA_BEHIND_PLAYER // SET_PLAYER_CONTROL player1 ON // SWITCH_WIDESCREEN OFF // FREEZE_ONSCREEN_TIMER FALSE // CLEAR_PRINTS RETURN // ************************************************************************************************************* // END OF LEVEL GOSUBS - fail, pass, cleanup // ************************************************************************************************************* // FAIL mission_failed_SYN2: PRINT_BIG M_FAIL 5000 1 RETURN // PASS mission_passed_SYN2: IF syn2_mission_attempts = 0 REMOVE_BLIP synd_contact_blip REMOVE_BLIP garage_contact_blip REMOVE_BLIP scrash_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT syndX syndY syndZ synd_blip_icon synd_contact_blip flag_synd_mission_counter ++ syn2_mission_attempts = 1 PRINT_NOW SYN2_60 10000 1 // go to jizzy's club ELSE flag_synd_mission_counter ++ REGISTER_MISSION_PASSED SYND_2 PRINT_WITH_NUMBER_BIG ( M_PASSS ) 3000 5000 1 //"Mission Passed!" ADD_SCORE player1 3000 //amount of cash reward AWARD_PLAYER_MISSION_RESPECT 20 //amount of respect PLAY_MISSION_PASSED_TUNE 1 SET_INT_STAT PASSED_SYNDICATE2 1 PLAYER_MADE_PROGRESS 1 ENDIF RETURN // CLEANUP mission_cleanup_SYN2: IF IS_PLAYER_PLAYING player1 SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 ENDIF START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_MISSION_AUDIO 3 IF NOT IS_CAR_DEAD jizzy_car SET_CAN_BURST_CAR_TYRES jizzy_car TRUE ENDIF IF IS_PLAYER_PLAYING player1 CLEAR_CHAR_TASKS scplayer ENDIF SWITCH_PED_ROADS_ON -2431.1145 -169.4874 33.0 -2426.5127 -117.2969 36.0 SWITCH_PED_ROADS_ON -1950.0 718.0 44.0 -1912.0 731.0 48.0 SWITCH_ROADS_ON -1950.0 718.0 44.0 -1912.0 731.0 48.0 MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE MARK_MODEL_AS_NO_LONGER_NEEDED BROADWAY MARK_MODEL_AS_NO_LONGER_NEEDED HFYPRO UNLOAD_SPECIAL_CHARACTER 1 REMOVE_ANIMATION GANGS MARK_MODEL_AS_NO_LONGER_NEEDED SHFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED BMYPIMP MARK_MODEL_AS_NO_LONGER_NEEDED HUSTLER MARK_MODEL_AS_NO_LONGER_NEEDED CAMPER MARK_MODEL_AS_NO_LONGER_NEEDED SWMYHP1 MARK_MODEL_AS_NO_LONGER_NEEDED SWMYHP2 MARK_MODEL_AS_NO_LONGER_NEEDED VBFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 REMOVE_ANIMATION CRACK REMOVE_ANIMATION FIGHT_D REMOVE_ANIMATION MISC MARK_MODEL_AS_NO_LONGER_NEEDED STRETCH MARK_MODEL_AS_NO_LONGER_NEEDED HUNTLEY MARK_MODEL_AS_NO_LONGER_NEEDED HFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED BMYMIB MARK_MODEL_AS_NO_LONGER_NEEDED WMOPREA MARK_MODEL_AS_NO_LONGER_NEEDED STRETCH MARK_MODEL_AS_NO_LONGER_NEEDED HUNTLEY MARK_MODEL_AS_NO_LONGER_NEEDED HFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED BMYMIB MARK_MODEL_AS_NO_LONGER_NEEDED WMOPREA MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE REMOVE_ANIMATION CAR_CHAT // === MARK ENTITIES AS NO LONGER NEEDED === (cars,peds,objects,blips,attractors) REMOVE_BLIP location_blip REMOVE_BLIP jizzy_car_blip REMOVE_BLIP hippy1_blip REMOVE_BLIP hippy2_blip REMOVE_BLIP rival_pimp_blip // REMOVE_BLIP rich_chase_car_blip[0] // REMOVE_BLIP rich_chase_car_blip[1] // REMOVE_BLIP rich_chase_car_blip[2] // REMOVE_BLIP rich_chase_car_blip[3] REMOVE_BLIP rich_dude_blip // REMOVE_BLIP rich_car_to_create_blip REMOVE_DECISION_MAKER tough_dm REMOVE_DECISION_MAKER empty_dm //CLEAR_ONSCREEN_TIMER syn2_timer CLEAR_ONSCREEN_COUNTER girl_health CLEAR_ONSCREEN_TIMER syn2_time_until_backup CLEAR_ONSCREEN_TIMER girl2_timer // === RESTORE ENVIRONMENT SETTINGS === SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_WANTED_MULTIPLIER 1.0 DONT_SUPPRESS_CAR_MODEL BROADWAY DONT_SUPPRESS_CAR_MODEL HUSTLER GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // *************************************** SYNDICATE 3 ************************************* // ********************************* Mission Description *********************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME syn3 // Mission start stuff GOSUB mission_start_syn3 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_syn3_failed ENDIF GOSUB mission_cleanup_syn3 MISSION_END { // Variables for mission LVAR_INT s3_meet_car LVAR_INT s3_player_bike s3_paste_van s3_paste_van_driver //s3_escorting_bike s3_escorting_bike_driver LVAR_FLOAT s3_paste_van_x s3_paste_van_y s3_paste_van_z s3_paste_van_heading //LVAR_FLOAT s3_escorting_bike_x s3_escorting_bike_y s3_escorting_bike_z LVAR_FLOAT s3_van_location_x s3_van_location_y s3_van_location_z LVAR_FLOAT s3_destination_x s3_destination_y s3_destination_z LVAR_FLOAT s3_player_x s3_player_y s3_player_z LVAR_FLOAT s3_roadblock_ped_x s3_roadblock_ped_y s3_roadblock_ped_z LVAR_FLOAT s3_dist_from_van_to_ped s3_dist_from_player_to_ped LVAR_FLOAT s3_van_speed LVAR_INT s3_current_roadblock LVAR_INT s3_first_roadblock_cars[3] s3_first_roadblock_peds[3] LVAR_INT s3_second_roadblock_cars[3] s3_second_roadblock_peds[6] //s3_bulldozer LVAR_INT s3_third_roadblock_cars[3] s3_third_roadblock_peds[6] LVAR_INT s3_fourth_roadblock_cars[3] s3_fourth_roadblock_peds[3] LVAR_INT s3_roadblock_ped_decisions LVAR_INT s3_rocket s3_sniper LVAR_INT s3_player_rocket_ammo s3_pickup_rocket_ammo LVAR_INT s3_player_sniper_ammo s3_pickup_sniper_ammo LVAR_INT s3_task_status s3_event_type LVAR_INT s3_index LVAR_INT s3_paste_van_route_seq //LVAR_INT s3_help_text_stage LVAR_INT s3_last_player_car_before_van_cutscene LVAR_INT s3_toreno s3_tbone LVAR_INT s3_in_car_decisions LVAR_INT s3_get_in_audio_stage // mission audio LVAR_TEXT_LABEL s3_audio_text[8] LVAR_INT s3_audio_sound[8] LVAR_INT s3_audio_is_playing s3_audio_index s3_total_audio_to_play s3_started_talking LVAR_INT s3_current_audio_needed CONST_INT S3_MOBILE_AUDIO 0 CONST_INT S3_SECOND_CUTSCENE_AUDIO 1 CONST_INT S3_MISSION_PASSED_AUDIO 2 //LVAR_INT s3_escort_decisions // flags LVAR_INT s3_cutscene_skipped LVAR_INT s3_player_reached_meet s3_player_picked_up_rocketlauncher LVAR_INT s3_player_reached_van_location s3_player_in_meet_car LVAR_INT s3_van_route_started s3_van_route_finished LVAR_INT s3_player_bike_has_blip LVAR_INT s3_use_rocket_brief_text_printed LVAR_INT s3_first_roadblock_frozen s3_second_roadblock_frozen LVAR_INT s3_third_roadblock_frozen s3_fourth_roadblock_frozen LVAR_INT s3_first_roadblock_car_blip_flag[3] s3_first_roadblock_ped_blip_flag[3] LVAR_INT s3_second_roadblock_car_blip_flag[3] s3_second_roadblock_ped_blip_flag[6] LVAR_INT s3_third_roadblock_car_blip_flag[3] s3_third_roadblock_ped_blip_flag[6] LVAR_INT s3_fourth_roadblock_car_blip_flag[3] s3_fourth_roadblock_ped_blip_flag[3] LVAR_INT s3_first_roadblock_destroyed s3_second_roadblock_destroyed LVAR_INT s3_third_roadblock_destroyed s3_fourth_roadblock_destroyed // temp for view_integer_variable LVAR_INT s3_first_roadblock_ped_attack_flags[3] s3_second_roadblock_ped_attack_flags[6] LVAR_INT s3_third_roadblock_ped_attack_flags[6] s3_fourth_roadblock_ped_attack_flags[3] // temp for view_integer_variable LVAR_INT s3_roadblock_to_update s3_player_attacked_roadblock[4] LVAR_INT s3_paste_van_heavy s3_paste_van_collisionproof //LVAR_INT s3_escort_getting_back_on_bike LVAR_INT s3_van_stopped_at_current_roadblock s3_van_almost_at_roadblock[4] LVAR_INT s3_player_entered_any_car LVAR_INT s3_fake_creates // blips LVAR_INT s3_meet_car_blip s3_van_location_blip s3_player_bike_blip LVAR_INT s3_paste_van_blip /*s3_destination_blip*/ s3_temp_first_roadblock_blip LVAR_INT s3_first_roadblock_car_blips[3] s3_first_roadblock_ped_blips[3] LVAR_INT s3_second_roadblock_car_blips[3] s3_second_roadblock_ped_blips[6] LVAR_INT s3_third_roadblock_car_blips[3] s3_third_roadblock_ped_blips[6] LVAR_INT s3_fourth_roadblock_car_blips[3] s3_fourth_roadblock_ped_blips[3] LVAR_INT s3_rocket_blip LVAR_INT nCheckPointTwo // **************************************** Mission Start ********************************** mission_start_syn3: REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT SYN3 flag_player_on_mission = 1 WAIT 0 // ************************************ Initialise variables ***************************** s3_paste_van_x = -1832.33 s3_paste_van_y = -14.59 s3_paste_van_z = 15.39 s3_paste_van_heading = 270.0 s3_van_location_x = -1815.04 s3_van_location_y = 2.59 s3_van_location_z = 14.99 s3_destination_x = -2127.42 s3_destination_y = -100.65 s3_destination_z = 34.37 s3_van_speed = 9.5 s3_get_in_audio_stage = 0 s3_player_reached_meet = 0 s3_player_picked_up_rocketlauncher = 0 s3_player_reached_van_location = 0 s3_player_in_meet_car = 0 s3_van_route_started = 0 s3_van_route_finished = 0 s3_current_roadblock = 1 s3_first_roadblock_frozen = 0 s3_second_roadblock_frozen = 0 s3_third_roadblock_frozen = 0 s3_fourth_roadblock_frozen = 0 s3_index = 0 WHILE s3_index < 3 s3_first_roadblock_car_blip_flag[s3_index] = 0 s3_first_roadblock_ped_blip_flag[s3_index] = 0 s3_first_roadblock_ped_attack_flags[s3_index] = 0 s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 6 s3_second_roadblock_ped_blip_flag[s3_index] = 0 s3_second_roadblock_ped_attack_flags[s3_index] = 0 s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 3 s3_second_roadblock_car_blip_flag[s3_index] = 0 s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 6 s3_third_roadblock_ped_blip_flag[s3_index] = 0 s3_third_roadblock_ped_attack_flags[s3_index] = 0 s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 3 s3_third_roadblock_car_blip_flag[s3_index] = 0 s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 3 s3_fourth_roadblock_car_blip_flag[s3_index] = 0 s3_fourth_roadblock_ped_blip_flag[s3_index] = 0 s3_fourth_roadblock_ped_attack_flags[s3_index] = 0 s3_index++ ENDWHILE s3_first_roadblock_destroyed = 0 s3_second_roadblock_destroyed = 0 s3_third_roadblock_destroyed = 0 s3_fourth_roadblock_destroyed = 0 s3_roadblock_to_update = -1 s3_index = 0 WHILE s3_index < 4 s3_player_attacked_roadblock[s3_index] = 0 s3_index++ ENDWHILE //s3_escort_getting_back_on_bike = 0 s3_van_stopped_at_current_roadblock = 0 s3_index = 0 WHILE s3_index < 4 s3_van_almost_at_roadblock[s3_index] = 0 s3_index++ ENDWHILE s3_player_entered_any_car = 0 s3_audio_is_playing = 0 s3_audio_index = 0 s3_started_talking = 0 s3_fake_creates = 0 nCheckPointTwo = 0 // ****************************************START OF CUTSCENE******************************* // ****************************************END OF CUTSCENE********************************* SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_THIS_PRINT_BIG_NOW 1 // CREATE statements to keep the compiler happy IF s3_fake_creates = 1 CREATE_CAR SANCHEZ 0.0 0.0 -100.0 s3_player_bike ADD_BLIP_FOR_CAR s3_player_bike s3_player_bike_blip CREATE_CAR RUMPO 0.0 0.0 -100.0 s3_paste_van CREATE_CHAR_INSIDE_CAR s3_paste_van PEDTYPE_MISSION1 SFR1 s3_paste_van_driver ADD_BLIP_FOR_CAR s3_paste_van s3_paste_van_blip // CREATE_CAR SANCHEZ 0.0 0.0 -100.0 s3_escorting_bike // CREATE_CHAR_INSIDE_CAR s3_escorting_bike PEDTYPE_MISSION1 WBDYG2 s3_escorting_bike_driver ENDIF REQUEST_MODEL WASHING REQUEST_MODEL ROCKETLA REQUEST_MODEL SNIPER REQUEST_MODEL SANCHEZ REQUEST_MODEL cellphone REQUEST_MODEL bodyarmour WHILE NOT HAS_MODEL_LOADED WASHING OR NOT HAS_MODEL_LOADED ROCKETLA OR NOT HAS_MODEL_LOADED SNIPER OR NOT HAS_MODEL_LOADED SANCHEZ OR NOT HAS_MODEL_LOADED cellphone OR NOT HAS_MODEL_LOADED bodyarmour WAIT 0 ENDWHILE LVAR_INT s3_wanted_level_at_start GET_MAX_WANTED_LEVEL s3_wanted_level_at_start SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON CLEAR_AREA -2030.4 148.83 27.84 100.0 FALSE LOAD_SCENE -2030.4 148.83 27.84 SET_CHAR_COORDINATES scplayer -2030.4 148.83 27.84 SET_CHAR_HEADING scplayer 270.0 SET_FIXED_CAMERA_POSITION -2027.45 150.01 29.01 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2028.92 149.37 29.03 JUMP_CUT s3_current_audio_needed = S3_MOBILE_AUDIO GOSUB s3_setup_audio_data TASK_USE_MOBILE_PHONE scplayer TRUE DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE WAIT 1500 WHILE s3_audio_index < 2 WAIT 0 IF IS_PLAYER_PLAYING player1 GOSUB s3_load_and_play_audio IF s3_audio_is_playing = 2 AND s3_audio_index = 1 AND NOT s3_started_talking = 1 START_CHAR_FACIAL_TALK scplayer 10000 s3_started_talking = 1 ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS s3_started_talking = 0 s3_audio_index = s3_total_audio_to_play ENDIF ENDWHILE STOP_CHAR_FACIAL_TALK scplayer SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 ON WHILE s3_audio_index < s3_total_audio_to_play WAIT 0 IF IS_PLAYER_PLAYING player1 AND NOT IS_CHAR_IN_WATER scplayer AND NOT IS_CHAR_IN_AIR scplayer AND NOT IS_BUTTON_PRESSED PAD1 TRIANGLE GOSUB s3_load_and_play_audio IF s3_audio_is_playing = 2 AND s3_audio_index = 7 AND NOT s3_started_talking = 1 START_CHAR_FACIAL_TALK scplayer 10000 s3_started_talking = 1 ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS s3_started_talking = 0 IF IS_PLAYER_PLAYING player1 STOP_CHAR_FACIAL_TALK scplayer ENDIF s3_audio_index = s3_total_audio_to_play ENDIF ENDWHILE STOP_CHAR_FACIAL_TALK scplayer GET_SCRIPT_TASK_STATUS scplayer TASK_USE_MOBILE_PHONE s3_task_status IF NOT s3_task_status = FINISHED_TASK TASK_USE_MOBILE_PHONE scplayer FALSE ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED cellphone SET_EVERYONE_IGNORE_PLAYER player1 OFF WAIT 2500 CUSTOM_PLATE_FOR_NEXT_CAR WASHING &_OMEGA__ CREATE_CAR WASHING -1665.27 412.923 6.192 s3_meet_car SET_CAR_HEADING s3_meet_car 134.44 CHANGE_CAR_COLOUR s3_meet_car 84 84 ADD_BLIP_FOR_CAR s3_meet_car s3_meet_car_blip SET_BLIP_AS_FRIENDLY s3_meet_car_blip TRUE FREEZE_CAR_POSITION s3_meet_car TRUE PRINT_NOW ( SYN3_18 ) 10000 0 // Go to the car. //VIEW_INTEGER_VARIABLE s3_player_attacked_roadblock[3] attacked_roadblock //VIEW_INTEGER_VARIABLE s3_fourth_roadblock_ped_attack_flags[0] s3_ped0_state //VIEW_INTEGER_VARIABLE s3_fourth_roadblock_ped_attack_flags[1] s3_ped1_state //VIEW_INTEGER_VARIABLE s3_fourth_roadblock_ped_attack_flags[2] s3_ped2_state //VIEW_INTEGER_VARIABLE s3_paste_van_heavy s3_paste_van_heavy //VIEW_INTEGER_VARIABLE s3_paste_van_collisionproof s3_paste_van_collisionproof //VIEW_INTEGER_VARIABLE s3_van_stopped_at_current_roadblock s3_van_stopped_at_current_roadblock // Mission loop syn3_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_syn3_passed ENDIF // // temp // IF IS_BUTTON_PRESSED PAD1 LEFTSHOCK // SET_CHAR_COORDINATES scplayer -1824.69 -17.67 14.80 // SET_CHAR_HEADING scplayer 120.0 // ENDIF // // temp // IF IS_BUTTON_PRESSED PAD1 LEFTSHOCK // GOSUB s3_play_van_cutscene // ENDIF IF NOT s3_player_reached_meet = 1 AND NOT IS_CAR_DEAD s3_meet_car IF LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer s3_meet_car 10.0 10.0 10.0 FALSE REMOVE_BLIP s3_meet_car_blip s3_player_reached_meet = 1 // play animated cutscene SET_PLAYER_CONTROL player1 OFF SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -1672.64 404.17 6.18 ENDIF CLEAR_AREA -1665.27 412.923 6.192 50.0 FALSE IF NOT IS_CAR_DEAD s3_meet_car SET_CAR_VISIBLE s3_meet_car FALSE ENDIF MAKE_PLAYER_SAFE_FOR_CUTSCENE Player1 LOAD_CUTSCENE SYND_3A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF // create Toreno and T-Bone in player's car LOAD_SPECIAL_CHARACTER 1 torino LOAD_SPECIAL_CHARACTER 2 tbone WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_SPECIAL_CHARACTER_LOADED 2 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD s3_meet_car SET_CAR_VISIBLE s3_meet_car TRUE IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -1665.27 412.923 -4.192 ENDIF WARP_CHAR_INTO_CAR scplayer s3_meet_car s3_player_in_meet_car = 1 FREEZE_CAR_POSITION s3_meet_car FALSE CREATE_CHAR_AS_PASSENGER s3_meet_car PEDTYPE_MISSION1 SPECIAL01 0 s3_toreno SET_CHAR_HEALTH s3_toreno 500 SET_CHAR_MAX_HEALTH s3_toreno 500 SET_CHAR_NEVER_TARGETTED s3_toreno TRUE SET_CHAR_SUFFERS_CRITICAL_HITS s3_toreno FALSE SET_CHAR_CANT_BE_DRAGGED_OUT s3_toreno TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED s3_toreno TRUE SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR s3_toreno FALSE CREATE_CHAR_AS_PASSENGER s3_meet_car PEDTYPE_MISSION1 SPECIAL02 1 s3_tbone SET_CHAR_HEALTH s3_tbone 500 SET_CHAR_MAX_HEALTH s3_tbone 500 SET_CHAR_NEVER_TARGETTED s3_tbone TRUE SET_CHAR_SUFFERS_CRITICAL_HITS s3_tbone FALSE SET_CHAR_CANT_BE_DRAGGED_OUT s3_tbone TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED s3_tbone TRUE SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR s3_tbone FALSE COPY_CHAR_DECISION_MAKER -1 s3_in_car_decisions CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE s3_in_car_decisions EVENT_VEHICLE_ON_FIRE SET_CHAR_DECISION_MAKER s3_toreno s3_in_car_decisions SET_CHAR_DECISION_MAKER s3_tbone s3_in_car_decisions CLEAR_ALL_CHAR_RELATIONSHIPS s3_toreno ACQUAINTANCE_TYPE_PED_DISLIKE CLEAR_ALL_CHAR_RELATIONSHIPS s3_toreno ACQUAINTANCE_TYPE_PED_HATE CLEAR_ALL_CHAR_RELATIONSHIPS s3_tbone ACQUAINTANCE_TYPE_PED_DISLIKE CLEAR_ALL_CHAR_RELATIONSHIPS s3_tbone ACQUAINTANCE_TYPE_PED_HATE ENDIF GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_ROCKETLAUNCHER s3_player_rocket_ammo IF s3_player_rocket_ammo = 0 GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_ROCKETLAUNCHER_HS s3_player_rocket_ammo ENDIF s3_pickup_rocket_ammo = 20 - s3_player_rocket_ammo IF s3_pickup_rocket_ammo > 0 CREATE_PICKUP_WITH_AMMO ROCKETLA PICKUP_ONCE s3_pickup_rocket_ammo -1831.0 -21.43 15.16 s3_rocket ADD_BLIP_FOR_PICKUP s3_rocket s3_rocket_blip ELSE s3_player_picked_up_rocketlauncher = 1 // set so don't check if rocket's been picked up //s3_help_text_stage = 3 // set rocket help text to never come up since not needed ENDIF GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_SNIPERRIFLE s3_player_sniper_ammo s3_pickup_sniper_ammo = 40 - s3_player_sniper_ammo IF s3_pickup_sniper_ammo > 0 CREATE_PICKUP_WITH_AMMO SNIPER PICKUP_ONCE s3_pickup_sniper_ammo -1837.0 -21.43 15.16 s3_sniper ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED ROCKETLA MARK_MODEL_AS_NO_LONGER_NEEDED SNIPER GOSUB s3_create_paste_van CREATE_CAR SANCHEZ -1830.16 -17.64 14.79 s3_player_bike SET_CAR_HEADING s3_player_bike 268.78 WAIT 500 DO_FADE 1500 FADE_IN SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON ADD_BLIP_FOR_COORD s3_van_location_x s3_van_location_y s3_van_location_z s3_van_location_blip PRINT_NOW ( SYN3_1 ) 10000 0 // Drive to the van's location. IF NOT s3_player_picked_up_rocketlauncher = 1 //PRINT ( SYN3_21 ) 10000 0 // Pick up the rocket launcher when you get there. ENDIF ENDIF ENDIF IF s3_player_reached_meet = 1 AND NOT s3_player_reached_van_location = 1 AND NOT IS_CAR_DEAD s3_meet_car IF s3_player_in_meet_car = 1 AND NOT IS_CHAR_IN_CAR scplayer s3_meet_car REMOVE_BLIP s3_van_location_blip ADD_BLIP_FOR_CAR s3_meet_car s3_meet_car_blip SET_BLIP_AS_FRIENDLY s3_meet_car_blip TRUE GOSUB s3_play_toreno_get_in_audio // check mission failed conditions IF IS_CHAR_DEAD s3_toreno CLEAR_MISSION_AUDIO 2 PRINT_NOW ( SYN3_27 ) 4000 0 GOTO mission_syn3_failed ENDIF IF IS_CHAR_DEAD s3_tbone PRINT_NOW ( SYN3_28 ) 4000 0 GOTO mission_syn3_failed ENDIF IF IS_CAR_DEAD s3_meet_car PRINT_NOW ( SYN3_19 ) 4000 0 GOTO mission_syn3_failed ENDIF IF IS_CAR_DEAD s3_paste_van PRINT_NOW ( SYN3_15 ) 4000 0 GOTO mission_syn3_failed ENDIF IF IS_CHAR_DEAD s3_paste_van_driver PRINT_NOW ( SYN3_16 ) 4000 0 GOTO mission_syn3_failed ENDIF IF IS_CAR_DEAD s3_player_bike PRINT_NOW ( SYN3_14 ) 4000 0 GOTO mission_syn3_failed ENDIF PRINT_NOW ( SYN3_26 ) 7000 0 s3_player_in_meet_car = 0 ENDIF IF s3_player_in_meet_car = 0 AND IS_CHAR_IN_CAR scplayer s3_meet_car REMOVE_BLIP s3_meet_car_blip ADD_BLIP_FOR_COORD s3_van_location_x s3_van_location_y s3_van_location_z s3_van_location_blip PRINT_NOW ( SYN3_1 ) 7000 0 s3_player_in_meet_car = 1 ENDIF IF s3_player_in_meet_car = 1 IF LOCATE_CHAR_IN_CAR_3D scplayer s3_van_location_x s3_van_location_y s3_van_location_z 4.0 4.0 2.0 TRUE REMOVE_BLIP s3_van_location_blip s3_player_reached_van_location = 1 SET_PLAYER_CONTROL player1 OFF GOSUB s3_play_van_location_cutscene // // if player was watching the help text when they triggered the cutscene, // // set the help text to finished so it doesn't appear afterwards // IF s3_player_picked_up_rocketlauncher = 1 // s3_help_text_stage = 3 // ENDIF IF NOT IS_CAR_DEAD s3_player_bike ADD_BLIP_FOR_CAR s3_player_bike s3_player_bike_blip SET_BLIP_AS_FRIENDLY s3_player_bike_blip TRUE ENDIF PRINT_NOW ( SYN3_25 ) 10000 0 // Pick up the escort bike. IF nCheckPointTwo = 0 CHECKPOINT_SAVE 1 nCheckpointTwo = 1 ENDIF ENDIF ENDIF ENDIF // start van on its route when player picks up escort bike IF s3_player_reached_van_location = 1 AND NOT s3_van_route_started = 1 IF NOT IS_CAR_DEAD s3_player_bike IF IS_CHAR_IN_CAR scplayer s3_player_bike REMOVE_BLIP s3_player_bike_blip GOSUB s3_start_van_route s3_van_route_started = 1 //ADD_BLIP_FOR_COORD s3_destination_x s3_destination_y s3_destination_z s3_destination_blip //CHANGE_BLIP_DISPLAY s3_destination_blip BLIP_ONLY //DIM_BLIP s3_destination_blip ON //CHANGE_BLIP_SCALE s3_destination_blip 2 // IF NOT IS_CHAR_DEAD s3_escorting_bike_driver // AND NOT IS_CAR_DEAD s3_escorting_bike // AND NOT IS_CAR_DEAD s3_paste_van // TASK_CAR_MISSION s3_escorting_bike_driver s3_escorting_bike s3_paste_van MISSION_ESCORT_REAR 0.0 DRIVINGMODE_AVOIDCARS // ENDIF IF NOT IS_CAR_DEAD s3_paste_van ADD_BLIP_FOR_CAR s3_paste_van s3_paste_van_blip SET_BLIP_AS_FRIENDLY s3_paste_van_blip TRUE CHANGE_BLIP_DISPLAY s3_paste_van_blip BLIP_ONLY //DIM_BLIP s3_paste_van_blip ON //CHANGE_BLIP_SCALE s3_paste_van_blip 2 ENDIF ADD_BLIP_FOR_COORD -2007.75 533.24 33.91 s3_temp_first_roadblock_blip SET_COORD_BLIP_APPEARANCE s3_temp_first_roadblock_blip COORD_BLIP_APPEARANCE_ENEMY PRINT_NOW ( SYN3_2 ) 10000 0 s3_use_rocket_brief_text_printed = 0 TIMERB = 0 GOSUB s3_create_first_roadblock GOSUB s3_freeze_first_roadblock s3_first_roadblock_frozen = 1 // stop traffic jams at roadblocks SWITCH_ROADS_OFF -2005.23 517.16 33.0 -2002.69 554.12 36.0 SWITCH_ROADS_OFF -2097.80 319.42 33.0 -2035.57 321.05 36.0 SWITCH_ROADS_OFF -2150.18 138.75 33.0 -2145.71 160.84 36.0 SWITCH_ROADS_OFF -2168.24 42.13 33.0 -2165.99 61.70 36.0 SWITCH_RANDOM_TRAINS OFF // create armour pickup LVAR_INT s3_armour_pickup CREATE_PICKUP bodyarmour PICKUP_ONCE -2060.03 304.18 35.81 s3_armour_pickup s3_player_bike_has_blip = 0 GOSUB s3_add_blip_for_player_bike ENDIF ENDIF ENDIF IF NOT s3_van_route_finished = 1 IF s3_player_reached_meet = 1 IF NOT s3_player_picked_up_rocketlauncher = 1 IF HAS_PICKUP_BEEN_COLLECTED s3_rocket REMOVE_BLIP s3_rocket_blip s3_player_picked_up_rocketlauncher = 1 ENDIF ENDIF ENDIF IF s3_van_route_started = 1 AND NOT IS_CAR_DEAD s3_paste_van IF NOT s3_use_rocket_brief_text_printed = 1 AND TIMERB >= 10000 IF DOES_BLIP_EXIST s3_rocket_blip PRINT_NOW ( SYN3_3 ) 7000 0 ELSE PRINT_NOW ( SYN3_4 ) 7000 0 ENDIF s3_use_rocket_brief_text_printed = 1 ENDIF IF s3_current_roadblock >= 1 OR s3_current_roadblock = -1 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -1999.7 527.27 150.0 150.0 FALSE OR LOCATE_CAR_2D s3_paste_van -1999.7 527.27 100.0 100.0 FALSE IF s3_first_roadblock_frozen = 1 GOSUB s3_unfreeze_first_roadblock s3_first_roadblock_frozen = 0 ENDIF ELSE IF s3_first_roadblock_frozen = 0 GOSUB s3_freeze_first_roadblock s3_first_roadblock_frozen = 1 ENDIF ENDIF // if van within 35m (weapon range), peds attack van // if player within 35m but van isn't within 35m, peds attack player // if neither are within 35m, peds stop attacking s3_roadblock_to_update = 0 GOSUB s3_update_roadblock_ped_attacks ENDIF IF s3_current_roadblock >= 2 OR s3_current_roadblock = -1 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2085.74 320.74 150.0 150.0 FALSE OR LOCATE_CAR_2D s3_paste_van -2085.74 320.74 100.0 100.0 FALSE IF s3_second_roadblock_frozen = 1 GOSUB s3_unfreeze_second_roadblock s3_second_roadblock_frozen = 0 ENDIF ELSE IF s3_second_roadblock_frozen = 0 GOSUB s3_freeze_second_roadblock s3_second_roadblock_frozen = 1 ENDIF ENDIF s3_roadblock_to_update = 1 GOSUB s3_update_roadblock_ped_attacks ENDIF IF s3_current_roadblock >= 3 OR s3_current_roadblock = -1 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2146.62 146.06 150.0 150.0 FALSE OR LOCATE_CAR_2D s3_paste_van -2146.62 146.06 100.0 100.0 FALSE IF s3_third_roadblock_frozen = 1 GOSUB s3_unfreeze_third_roadblock s3_third_roadblock_frozen = 0 ENDIF ELSE IF s3_third_roadblock_frozen = 0 GOSUB s3_freeze_third_roadblock s3_third_roadblock_frozen = 1 ENDIF ENDIF s3_roadblock_to_update = 2 GOSUB s3_update_roadblock_ped_attacks ENDIF IF s3_current_roadblock >= 4 OR s3_current_roadblock = -1 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2166.92 48.75 150.0 150.0 FALSE OR LOCATE_CAR_2D s3_paste_van -2166.92 48.75 100.0 100.0 FALSE IF s3_fourth_roadblock_frozen = 1 GOSUB s3_unfreeze_fourth_roadblock s3_fourth_roadblock_frozen = 0 ENDIF ELSE IF s3_fourth_roadblock_frozen = 0 GOSUB s3_freeze_fourth_roadblock s3_fourth_roadblock_frozen = 1 ENDIF ENDIF s3_roadblock_to_update = 3 GOSUB s3_update_roadblock_ped_attacks ENDIF // if roadblock char/car dead, remove blip GOSUB s3_remove_blip_check // needs to be before current roadblock update in loop; // check for current roadblock destroyed in update_vehicle_weights doesn't work otherwise // (as soon as the current roadblock is destroyed, it's not the current roadblock any more.) GOSUB s3_update_vehicle_weights // van stops at each roadblock if the roadblock hasn't been destroyed // and only continues its route when the player's destroyed the roadblock IF NOT s3_van_stopped_at_current_roadblock = 1 SWITCH s3_current_roadblock CASE 1 IF LOCATE_CAR_2D s3_paste_van -2007.75 533.24 10.0 10.0 FALSE s3_van_stopped_at_current_roadblock = 1 ENDIF BREAK CASE 2 IF LOCATE_CAR_2D s3_paste_van -2079.24 323.74 15.0 15.0 FALSE s3_van_stopped_at_current_roadblock = 1 ENDIF BREAK CASE 3 IF LOCATE_CAR_2D s3_paste_van -2149.62 152.06 10.0 10.0 FALSE s3_van_stopped_at_current_roadblock = 1 ENDIF BREAK CASE 4 IF LOCATE_CAR_2D s3_paste_van -2169.42 54.75 10.0 10.0 FALSE s3_van_stopped_at_current_roadblock = 1 ENDIF BREAK DEFAULT BREAK ENDSWITCH ENDIF IF s3_van_stopped_at_current_roadblock = 1 SET_CAR_CRUISE_SPEED s3_paste_van 0.0 ENDIF // warn player when van's getting too close to the current roadblock SWITCH s3_current_roadblock CASE 1 IF NOT s3_van_almost_at_roadblock[0] = 1 AND LOCATE_CAR_2D s3_paste_van -2007.75 533.24 60.0 60.0 FALSE PRINT_NOW ( SYN3_9 ) 10000 0 s3_van_almost_at_roadblock[0] = 1 ENDIF BREAK CASE 2 IF NOT s3_van_almost_at_roadblock[1] = 1 AND LOCATE_CAR_2D s3_paste_van -2079.24 323.74 60.0 60.0 FALSE PRINT_NOW ( SYN3_9 ) 10000 0 s3_van_almost_at_roadblock[1] = 1 ENDIF BREAK CASE 3 IF NOT s3_van_almost_at_roadblock[2] = 1 AND LOCATE_CAR_2D s3_paste_van -2149.62 152.06 60.0 60.0 FALSE PRINT_NOW ( SYN3_9 ) 10000 0 s3_van_almost_at_roadblock[2] = 1 ENDIF BREAK CASE 4 IF NOT s3_van_almost_at_roadblock[3] = 1 AND LOCATE_CAR_2D s3_paste_van -2169.42 54.75 60.0 60.0 FALSE PRINT_NOW ( SYN3_9 ) 10000 0 s3_van_almost_at_roadblock[3] = 1 ENDIF BREAK DEFAULT BREAK ENDSWITCH IF s3_current_roadblock = 1 // if player's destroyed the roadblock or van's managed to get past it by a safe distance, // remove blips for old roadblock and set up next roadblock GOSUB s3_first_roadblock_destroyed_check IF s3_first_roadblock_destroyed = 1 OR IS_CAR_IN_AREA_2D s3_paste_van -2016.30 434.74 -1960.98 454.11 FALSE GOSUB s3_remove_first_roadblock_blips GOSUB s3_create_second_roadblock GOSUB s3_freeze_second_roadblock s3_second_roadblock_frozen = 1 GOSUB s3_add_second_roadblock_blips s3_current_roadblock = 2 IF s3_van_stopped_at_current_roadblock = 1 SET_CAR_CRUISE_SPEED s3_paste_van s3_van_speed s3_van_stopped_at_current_roadblock = 0 ENDIF PRINT_NOW ( SYN3_5 ) 10000 0 GOSUB s3_add_blip_for_player_bike ENDIF ENDIF IF s3_current_roadblock = 2 AND NOT IS_CAR_DEAD s3_paste_van GOSUB s3_second_roadblock_destroyed_check IF s3_second_roadblock_destroyed = 1 OR IS_CAR_IN_AREA_2D s3_paste_van -2133.87 308.44 -2124.45 330.0 FALSE GOSUB s3_remove_second_roadblock_blips GOSUB s3_create_third_roadblock GOSUB s3_freeze_third_roadblock s3_third_roadblock_frozen = 1 GOSUB s3_add_third_roadblock_blips s3_current_roadblock = 3 IF s3_van_stopped_at_current_roadblock = 1 SET_CAR_CRUISE_SPEED s3_paste_van s3_van_speed s3_van_stopped_at_current_roadblock = 0 ENDIF PRINT_NOW ( SYN3_5 ) 10000 0 GOSUB s3_add_blip_for_player_bike ENDIF ENDIF IF s3_current_roadblock = 3 AND NOT IS_CAR_DEAD s3_paste_van GOSUB s3_third_roadblock_destroyed_check IF s3_third_roadblock_destroyed = 1 OR IS_CAR_IN_AREA_2D s3_paste_van -2171.21 90.96 -2151.63 92.36 FALSE GOSUB s3_remove_third_roadblock_blips GOSUB s3_create_fourth_roadblock GOSUB s3_freeze_fourth_roadblock s3_fourth_roadblock_frozen = 1 GOSUB s3_add_fourth_roadblock_blips s3_current_roadblock = 4 IF s3_van_stopped_at_current_roadblock = 1 SET_CAR_CRUISE_SPEED s3_paste_van s3_van_speed s3_van_stopped_at_current_roadblock = 0 ENDIF PRINT_NOW ( SYN3_7 ) 10000 0 GOSUB s3_add_blip_for_player_bike ENDIF ENDIF IF s3_current_roadblock = 4 AND NOT IS_CAR_DEAD s3_paste_van GOSUB s3_fourth_roadblock_destroyed_check IF s3_fourth_roadblock_destroyed = 1 OR IS_CAR_IN_AREA_2D s3_paste_van -2177.54 7.10 -2157.29 19.76 FALSE GOSUB s3_remove_fourth_roadblock_blips s3_current_roadblock = -1 IF s3_van_stopped_at_current_roadblock = 1 SET_CAR_CRUISE_SPEED s3_paste_van s3_van_speed s3_van_stopped_at_current_roadblock = 0 ENDIF PRINT_NOW ( SYN3_8 ) 10000 0 GOSUB s3_add_blip_for_player_bike ENDIF ENDIF IF s3_player_bike_has_blip = 1 IF NOT IS_CAR_DEAD s3_player_bike IF IS_CHAR_IN_CAR scplayer s3_player_bike REMOVE_BLIP s3_player_bike_blip s3_player_bike_has_blip = 0 ENDIF ELSE REMOVE_BLIP s3_player_bike_blip s3_player_bike_has_blip = 0 ENDIF ENDIF // get handle for last car player is in before cutscene at factory IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer s3_last_player_car_before_van_cutscene IF NOT s3_player_entered_any_car = 1 s3_player_entered_any_car = 1 ENDIF ENDIF ENDIF // // keep escorting bike driver on bike // IF NOT IS_CHAR_DEAD s3_escorting_bike_driver // AND NOT IS_CAR_DEAD s3_escorting_bike // AND NOT IS_CAR_DEAD s3_paste_van // IF NOT IS_CHAR_IN_CAR s3_escorting_bike_driver s3_escorting_bike // // IF NOT s3_escort_getting_back_on_bike = 1 // // IF NOT s3_van_route_started = 1 // TASK_ENTER_CAR_AS_DRIVER s3_escorting_bike_driver s3_escorting_bike -1 // ELSE // TASK_CAR_MISSION s3_escorting_bike_driver s3_escorting_bike s3_paste_van MISSION_ESCORT_REAR 0.0 DRIVINGMODE_AVOIDCARS // ENDIF // s3_escort_getting_back_on_bike = 1 // // ENDIF // // ELSE // // IF s3_escort_getting_back_on_bike = 1 // s3_escort_getting_back_on_bike = 0 // ENDIF // // ENDIF // ENDIF IF NOT s3_player_reached_van_location = 1 IF s3_player_reached_meet = 1 IF IS_CHAR_DEAD s3_toreno PRINT_NOW ( SYN3_27 ) 4000 0 GOTO mission_syn3_failed ENDIF IF IS_CHAR_DEAD s3_tbone PRINT_NOW ( SYN3_28 ) 4000 0 GOTO mission_syn3_failed ENDIF ENDIF IF IS_CAR_DEAD s3_meet_car PRINT_NOW ( SYN3_19 ) 4000 0 GOTO mission_syn3_failed ENDIF ENDIF IF s3_player_reached_meet = 1 IF IS_CAR_DEAD s3_paste_van PRINT_NOW ( SYN3_15 ) 4000 0 GOTO mission_syn3_failed ENDIF IF IS_CHAR_DEAD s3_paste_van_driver PRINT_NOW ( SYN3_16 ) 4000 0 GOTO mission_syn3_failed ENDIF IF NOT s3_van_route_started = 1 IF IS_CAR_DEAD s3_player_bike PRINT_NOW ( SYN3_14 ) 4000 0 GOTO mission_syn3_failed ENDIF ENDIF ENDIF // van reached destination successfully IF s3_van_route_started = 1 AND NOT IS_CAR_DEAD s3_paste_van AND NOT IS_CHAR_DEAD s3_paste_van_driver GET_SCRIPT_TASK_STATUS s3_paste_van_driver PERFORM_SEQUENCE_TASK s3_task_status IF s3_task_status = FINISHED_TASK IF LOCATE_CAR_3D s3_paste_van s3_destination_x s3_destination_y s3_destination_z 35.0 35.0 5.0 FALSE AND LOCATE_CHAR_ANY_MEANS_2D scplayer s3_destination_x s3_destination_y 20.0 20.0 FALSE s3_van_route_finished = 1 GOSUB s3_play_van_cutscene GOTO mission_syn3_passed ENDIF ELSE IF LOCATE_CAR_3D s3_paste_van s3_destination_x s3_destination_y s3_destination_z 20.0 20.0 5.0 FALSE AND LOCATE_CHAR_ANY_MEANS_2D scplayer s3_destination_x s3_destination_y 20.0 20.0 FALSE TASK_CAR_DRIVE_TO_COORD s3_paste_van_driver s3_paste_van s3_destination_x s3_destination_y s3_destination_z s3_van_speed MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS s3_van_route_finished = 1 GOSUB s3_play_van_cutscene GOTO mission_syn3_passed ENDIF ENDIF ENDIF ENDIF // // temp // IF IS_BUTTON_PRESSED PAD1 LEFTSHOCK // s3_van_route_finished = 1 // GOSUB s3_play_van_cutscene // ENDIF GOTO syn3_loop // ********************************** Mission GOSUBS ************************************ // ************************************************************ // Create van and escorting bike // ************************************************************ s3_create_paste_van: REQUEST_MODEL RUMPO REQUEST_MODEL SFR1 WHILE NOT HAS_MODEL_LOADED RUMPO OR NOT HAS_MODEL_LOADED SFR1 WAIT 0 ENDWHILE CREATE_CAR RUMPO s3_paste_van_x s3_paste_van_y s3_paste_van_z s3_paste_van CREATE_CHAR_INSIDE_CAR s3_paste_van PEDTYPE_MISSION1 SFR1 s3_paste_van_driver SET_CAR_HEADING s3_paste_van s3_paste_van_heading SET_CAR_HEAVY s3_paste_van TRUE s3_paste_van_heavy = 1 LOCK_CAR_DOORS s3_paste_van CARLOCK_LOCKED SET_CAR_PROOFS s3_paste_van FALSE TRUE FALSE TRUE FALSE s3_paste_van_collisionproof = 1 SET_CAN_BURST_CAR_TYRES s3_paste_van FALSE VEHICLE_CAN_BE_TARGETTED_BY_HS_MISSILE s3_paste_van FALSE MARK_MODEL_AS_NO_LONGER_NEEDED RUMPO MARK_MODEL_AS_NO_LONGER_NEEDED SFR1 MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ RETURN // ************************************************************ // Start van on route through roadblocks // ************************************************************ s3_start_van_route: IF NOT IS_CAR_DEAD s3_paste_van AND NOT IS_CHAR_DEAD s3_paste_van_driver OPEN_SEQUENCE_TASK s3_paste_van_route_seq FLUSH_ROUTE // // on to first road // EXTEND_ROUTE -1800.68 7.40 14.65 // // under flyover // EXTEND_ROUTE -1778.46 341.29 6.59 // // on to first road // EXTEND_ROUTE -1800.37 5.96 14.63 // on to first road EXTEND_ROUTE -1814.77 -0.45 15.38 TASK_DRIVE_POINT_ROUTE_ADVANCED -1 s3_paste_van s3_van_speed MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS FLUSH_ROUTE // before flyover EXTEND_ROUTE -1746.57 306.18 6.08 // after flyover EXTEND_ROUTE -1858.69 418.9 16.06 // top of sloping road EXTEND_ROUTE -1899.05 605.47 34.06 // before first roadblock EXTEND_ROUTE -2004.31 605.61 34.06 // // corner of building site // EXTEND_ROUTE -2007.09 108.48 27.57 // // far corner of building site // EXTEND_ROUTE -2156.05 110.54 34.19 // corner of building site EXTEND_ROUTE -2004.29 320.22 34.04 // far corner of building site EXTEND_ROUTE -2146.68 320.06 34.20 // crossroads EXTEND_ROUTE -2167.13 -70.20 34.21 TASK_DRIVE_POINT_ROUTE_ADVANCED -1 s3_paste_van s3_van_speed MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS FLUSH_ROUTE // EXTEND_ROUTE -2167.10 30.61 35.44 // EXTEND_ROUTE -2085.81 28.04 35.41 // EXTEND_ROUTE -2085.81 68.96 35.41 // TASK_CAR_DRIVE_TO_COORD -1 s3_paste_van -2167.10 30.61 35.44 s3_van_speed MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS // TASK_CAR_DRIVE_TO_COORD -1 s3_paste_van -2085.81 28.04 35.41 s3_van_speed MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS // TASK_CAR_DRIVE_TO_COORD -1 s3_paste_van -2085.81 68.96 35.41 s3_van_speed MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS // road nearest to destination EXTEND_ROUTE s3_destination_x -70.33 34.22 // destination EXTEND_ROUTE s3_destination_x s3_destination_y s3_destination_z TASK_DRIVE_POINT_ROUTE_ADVANCED -1 s3_paste_van s3_van_speed MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS FLUSH_ROUTE CLOSE_SEQUENCE_TASK s3_paste_van_route_seq PERFORM_SEQUENCE_TASK s3_paste_van_driver s3_paste_van_route_seq CLEAR_SEQUENCE_TASK s3_paste_van_route_seq ENDIF RETURN // ************************************************************ // Create roadblocks // ************************************************************ s3_create_first_roadblock: REQUEST_MODEL GREENWOO REQUEST_MODEL DNB3 REQUEST_MODEL DNB2 REQUEST_MODEL MP5LNG WHILE NOT HAS_MODEL_LOADED GREENWOO OR NOT HAS_MODEL_LOADED DNB3 OR NOT HAS_MODEL_LOADED DNB2 OR NOT HAS_MODEL_LOADED MP5LNG WAIT 0 ENDWHILE REMOVE_BLIP s3_temp_first_roadblock_blip // first roadblock CREATE_CHAR PEDTYPE_MISSION2 DNB3 -2000.75 537.24 33.91 s3_first_roadblock_peds[0] CREATE_CHAR PEDTYPE_MISSION2 DNB2 -2007.75 543.24 33.91 s3_first_roadblock_peds[1] CREATE_CHAR PEDTYPE_MISSION2 DNB3 -2012.75 537.24 33.91 s3_first_roadblock_peds[2] // set up decision maker for all roadblock peds COPY_CHAR_DECISION_MAKER -1 s3_roadblock_ped_decisions CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE s3_roadblock_ped_decisions EVENT_GUN_AIMED_AT s3_index = 0 WHILE s3_index < 3 SET_CHAR_DECISION_MAKER s3_first_roadblock_peds[s3_index] s3_roadblock_ped_decisions SET_CHAR_STAY_IN_SAME_PLACE s3_first_roadblock_peds[s3_index] TRUE GIVE_WEAPON_TO_CHAR s3_first_roadblock_peds[s3_index] WEAPONTYPE_MP5 99999 ADD_BLIP_FOR_CHAR s3_first_roadblock_peds[s3_index] s3_first_roadblock_ped_blips[s3_index] SET_CHAR_ONLY_DAMAGED_BY_PLAYER s3_first_roadblock_peds[s3_index] TRUE s3_first_roadblock_ped_blip_flag[s3_index] = 1 s3_index++ ENDWHILE CREATE_CAR GREENWOO -2000.75 527.24 33.91 s3_first_roadblock_cars[0] CREATE_CAR GREENWOO -2007.75 533.24 33.91 s3_first_roadblock_cars[1] CREATE_CAR GREENWOO -2012.75 527.24 33.91 s3_first_roadblock_cars[2] SET_CAR_HEADING s3_first_roadblock_cars[0] 70.0 SET_CAR_HEADING s3_first_roadblock_cars[1] 110.0 SET_CAR_HEADING s3_first_roadblock_cars[2] 250.0 s3_index = 0 WHILE s3_index < 3 CAR_SET_IDLE s3_first_roadblock_cars[s3_index] SET_CAR_HEAVY s3_first_roadblock_cars[s3_index] TRUE LOCK_CAR_DOORS s3_first_roadblock_cars[s3_index] CARLOCK_LOCKED ADD_BLIP_FOR_CAR s3_first_roadblock_cars[s3_index] s3_first_roadblock_car_blips[s3_index] SET_CAR_ONLY_DAMAGED_BY_PLAYER s3_first_roadblock_cars[s3_index] TRUE s3_first_roadblock_car_blip_flag[s3_index] = 1 s3_index++ ENDWHILE // MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO // MARK_MODEL_AS_NO_LONGER_NEEDED DNB3 // MARK_MODEL_AS_NO_LONGER_NEEDED DNB2 // MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG RETURN s3_create_second_roadblock: // REQUEST_MODEL GREENWOO // REQUEST_MODEL DNB3 // REQUEST_MODEL DNB2 // REQUEST_MODEL MP5LNG REQUEST_MODEL AK47 //REQUEST_MODEL DOZER // WHILE NOT HAS_MODEL_LOADED GREENWOO // OR NOT HAS_MODEL_LOADED DNB3 // OR NOT HAS_MODEL_LOADED DNB2 // OR NOT HAS_MODEL_LOADED MP5LNG // OR NOT HAS_MODEL_LOADED AK47 // //OR NOT HAS_MODEL_LOADED DOZER // WAIT 0 // ENDWHILE WHILE NOT HAS_MODEL_LOADED AK47 //OR NOT HAS_MODEL_LOADED DOZER WAIT 0 ENDWHILE // second roadblock CREATE_CAR GREENWOO -2085.74 314.74 33.97 s3_second_roadblock_cars[0] CREATE_CAR GREENWOO -2079.24 323.74 33.97 s3_second_roadblock_cars[1] CREATE_CAR GREENWOO -2085.74 326.74 33.97 s3_second_roadblock_cars[2] SET_CAR_HEADING s3_second_roadblock_cars[0] 340.0 SET_CAR_HEADING s3_second_roadblock_cars[1] 20.0 SET_CAR_HEADING s3_second_roadblock_cars[2] 160.0 s3_index = 0 WHILE s3_index < 3 CAR_SET_IDLE s3_second_roadblock_cars[s3_index] SET_CAR_HEAVY s3_second_roadblock_cars[s3_index] TRUE LOCK_CAR_DOORS s3_second_roadblock_cars[s3_index] CARLOCK_LOCKED SET_CAR_ONLY_DAMAGED_BY_PLAYER s3_second_roadblock_cars[s3_index] TRUE s3_index++ ENDWHILE CREATE_CHAR PEDTYPE_MISSION2 DNB3 -2075.74 314.74 33.97 s3_second_roadblock_peds[0] CREATE_CHAR PEDTYPE_MISSION2 DNB2 -2069.24 323.74 33.97 s3_second_roadblock_peds[1] CREATE_CHAR PEDTYPE_MISSION2 DNB3 -2075.74 326.74 33.97 s3_second_roadblock_peds[2] CREATE_CHAR PEDTYPE_MISSION2 DNB2 -2076.97 309.56 40.99 s3_second_roadblock_peds[3] CREATE_CHAR PEDTYPE_MISSION2 DNB3 -2073.97 309.56 40.99 s3_second_roadblock_peds[4] CREATE_CHAR PEDTYPE_MISSION2 DNB2 -2063.46 309.56 40.99 s3_second_roadblock_peds[5] s3_index = 0 WHILE s3_index < 6 SET_CHAR_DECISION_MAKER s3_second_roadblock_peds[s3_index] s3_roadblock_ped_decisions SET_CHAR_STAY_IN_SAME_PLACE s3_second_roadblock_peds[s3_index] TRUE IF s3_index >= 3 GIVE_WEAPON_TO_CHAR s3_second_roadblock_peds[s3_index] WEAPONTYPE_AK47 99999 ELSE GIVE_WEAPON_TO_CHAR s3_second_roadblock_peds[s3_index] WEAPONTYPE_MP5 99999 SET_CHAR_HEADING s3_second_roadblock_peds[s3_index] 270.0 ENDIF SET_CHAR_ONLY_DAMAGED_BY_PLAYER s3_second_roadblock_peds[s3_index] TRUE s3_index++ ENDWHILE // // bulldozer at building site // CREATE_CAR DOZER -2046.30 297.84 42.40 s3_bulldozer // SET_CAR_HEADING s3_bulldozer 270.0 // MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO // MARK_MODEL_AS_NO_LONGER_NEEDED DNB3 // MARK_MODEL_AS_NO_LONGER_NEEDED DNB2 // MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG // MARK_MODEL_AS_NO_LONGER_NEEDED AK47 // //MARK_MODEL_AS_NO_LONGER_NEEDED DOZER RETURN s3_create_third_roadblock: // REQUEST_MODEL GREENWOO // REQUEST_MODEL DNB3 // REQUEST_MODEL DNB2 // REQUEST_MODEL MP5LNG // REQUEST_MODEL AK47 // WHILE NOT HAS_MODEL_LOADED GREENWOO // OR NOT HAS_MODEL_LOADED DNB3 // OR NOT HAS_MODEL_LOADED DNB2 // OR NOT HAS_MODEL_LOADED MP5LNG // OR NOT HAS_MODEL_LOADED AK47 // WAIT 0 // ENDWHILE // third roadblock CREATE_CAR GREENWOO -2141.12 146.06 34.07 s3_third_roadblock_cars[0] CREATE_CAR GREENWOO -2149.62 152.06 34.07 s3_third_roadblock_cars[1] CREATE_CAR GREENWOO -2153.12 146.06 34.07 s3_third_roadblock_cars[2] SET_CAR_HEADING s3_third_roadblock_cars[0] 290.0 SET_CAR_HEADING s3_third_roadblock_cars[1] 70.0 SET_CAR_HEADING s3_third_roadblock_cars[2] 110.0 s3_index = 0 WHILE s3_index < 3 CAR_SET_IDLE s3_third_roadblock_cars[s3_index] SET_CAR_HEAVY s3_third_roadblock_cars[s3_index] TRUE LOCK_CAR_DOORS s3_third_roadblock_cars[s3_index] CARLOCK_LOCKED SET_CAR_ONLY_DAMAGED_BY_PLAYER s3_third_roadblock_cars[s3_index] TRUE s3_index++ ENDWHILE CREATE_CHAR PEDTYPE_MISSION2 DNB3 -2141.12 156.06 34.07 s3_third_roadblock_peds[0] CREATE_CHAR PEDTYPE_MISSION2 DNB2 -2149.62 162.06 34.07 s3_third_roadblock_peds[1] CREATE_CHAR PEDTYPE_MISSION2 DNB3 -2153.12 156.06 34.07 s3_third_roadblock_peds[2] CREATE_CHAR PEDTYPE_MISSION2 DNB3 -2135.68 164.20 41.29 s3_third_roadblock_peds[3] CREATE_CHAR PEDTYPE_MISSION2 DNB2 -2135.69 160.93 41.29 s3_third_roadblock_peds[4] CREATE_CHAR PEDTYPE_MISSION2 DNB3 -2135.24 153.77 40.72 s3_third_roadblock_peds[5] s3_index = 0 WHILE s3_index < 6 SET_CHAR_DECISION_MAKER s3_third_roadblock_peds[s3_index] s3_roadblock_ped_decisions SET_CHAR_STAY_IN_SAME_PLACE s3_third_roadblock_peds[s3_index] TRUE IF s3_index >= 3 GIVE_WEAPON_TO_CHAR s3_third_roadblock_peds[s3_index] WEAPONTYPE_AK47 99999 SET_CHAR_HEADING s3_third_roadblock_peds[s3_index] 90.0 ELSE GIVE_WEAPON_TO_CHAR s3_third_roadblock_peds[s3_index] WEAPONTYPE_MP5 99999 ENDIF SET_CHAR_ONLY_DAMAGED_BY_PLAYER s3_third_roadblock_peds[s3_index] TRUE s3_index++ ENDWHILE // MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO // MARK_MODEL_AS_NO_LONGER_NEEDED DNB3 // MARK_MODEL_AS_NO_LONGER_NEEDED DNB2 // MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG // MARK_MODEL_AS_NO_LONGER_NEEDED AK47 RETURN s3_create_fourth_roadblock: // REQUEST_MODEL GREENWOO // REQUEST_MODEL DNB3 // REQUEST_MODEL DNB2 // REQUEST_MODEL MP5LNG // WHILE NOT HAS_MODEL_LOADED GREENWOO // OR NOT HAS_MODEL_LOADED DNB3 // OR NOT HAS_MODEL_LOADED DNB2 // OR NOT HAS_MODEL_LOADED MP5LNG // WAIT 0 // ENDWHILE // fourth roadblock CREATE_CAR GREENWOO -2161.42 48.75 35.04 s3_fourth_roadblock_cars[0] CREATE_CAR GREENWOO -2169.42 54.75 35.04 s3_fourth_roadblock_cars[1] CREATE_CAR GREENWOO -2173.42 48.75 35.04 s3_fourth_roadblock_cars[2] SET_CAR_HEADING s3_fourth_roadblock_cars[0] 70.0 SET_CAR_HEADING s3_fourth_roadblock_cars[1] 110.0 SET_CAR_HEADING s3_fourth_roadblock_cars[2] 250.0 s3_index = 0 WHILE s3_index < 3 CAR_SET_IDLE s3_fourth_roadblock_cars[s3_index] SET_CAR_HEAVY s3_fourth_roadblock_cars[s3_index] TRUE LOCK_CAR_DOORS s3_fourth_roadblock_cars[s3_index] CARLOCK_LOCKED SET_CAR_ONLY_DAMAGED_BY_PLAYER s3_fourth_roadblock_cars[s3_index] TRUE s3_index++ ENDWHILE CREATE_CHAR PEDTYPE_MISSION2 DNB3 -2161.42 58.75 35.04 s3_fourth_roadblock_peds[0] CREATE_CHAR PEDTYPE_MISSION2 DNB2 -2169.42 64.75 35.04 s3_fourth_roadblock_peds[1] CREATE_CHAR PEDTYPE_MISSION2 DNB3 -2173.42 58.75 35.04 s3_fourth_roadblock_peds[2] s3_index = 0 WHILE s3_index < 3 SET_CHAR_DECISION_MAKER s3_fourth_roadblock_peds[s3_index] s3_roadblock_ped_decisions SET_CHAR_STAY_IN_SAME_PLACE s3_fourth_roadblock_peds[s3_index] TRUE GIVE_WEAPON_TO_CHAR s3_fourth_roadblock_peds[s3_index] WEAPONTYPE_MP5 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER s3_fourth_roadblock_peds[s3_index] TRUE s3_index++ ENDWHILE // MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO // MARK_MODEL_AS_NO_LONGER_NEEDED DNB3 // MARK_MODEL_AS_NO_LONGER_NEEDED DNB2 // MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG RETURN // ******************************************************************************** // Stop collision from loading around roadblocks if neither player nor van are near // ******************************************************************************** s3_freeze_first_roadblock: s3_index = 0 WHILE s3_index < 3 IF NOT IS_CAR_DEAD s3_first_roadblock_cars[s3_index] FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION s3_first_roadblock_cars[s3_index] TRUE ENDIF s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 3 IF NOT IS_CHAR_DEAD s3_first_roadblock_peds[s3_index] FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION s3_first_roadblock_peds[s3_index] TRUE ENDIF s3_index++ ENDWHILE RETURN s3_freeze_second_roadblock: s3_index = 0 WHILE s3_index < 3 IF NOT IS_CAR_DEAD s3_second_roadblock_cars[s3_index] FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION s3_second_roadblock_cars[s3_index] TRUE ENDIF s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 6 IF NOT IS_CHAR_DEAD s3_second_roadblock_peds[s3_index] FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION s3_second_roadblock_peds[s3_index] TRUE ENDIF s3_index++ ENDWHILE RETURN s3_freeze_third_roadblock: s3_index = 0 WHILE s3_index < 3 IF NOT IS_CAR_DEAD s3_third_roadblock_cars[s3_index] FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION s3_third_roadblock_cars[s3_index] TRUE ENDIF s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 6 IF NOT IS_CHAR_DEAD s3_third_roadblock_peds[s3_index] FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION s3_third_roadblock_peds[s3_index] TRUE ENDIF s3_index++ ENDWHILE RETURN s3_freeze_fourth_roadblock: s3_index = 0 WHILE s3_index < 3 IF NOT IS_CAR_DEAD s3_fourth_roadblock_cars[s3_index] FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION s3_fourth_roadblock_cars[s3_index] TRUE ENDIF s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 3 IF NOT IS_CHAR_DEAD s3_fourth_roadblock_peds[s3_index] FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION s3_fourth_roadblock_peds[s3_index] TRUE ENDIF s3_index++ ENDWHILE RETURN s3_unfreeze_first_roadblock: s3_index = 0 WHILE s3_index < 3 IF NOT IS_CAR_DEAD s3_first_roadblock_cars[s3_index] FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION s3_first_roadblock_cars[s3_index] FALSE ENDIF s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 3 IF NOT IS_CHAR_DEAD s3_first_roadblock_peds[s3_index] FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION s3_first_roadblock_peds[s3_index] FALSE ENDIF s3_index++ ENDWHILE RETURN s3_unfreeze_second_roadblock: s3_index = 0 WHILE s3_index < 3 IF NOT IS_CAR_DEAD s3_second_roadblock_cars[s3_index] FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION s3_second_roadblock_cars[s3_index] FALSE ENDIF s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 6 IF NOT IS_CHAR_DEAD s3_second_roadblock_peds[s3_index] FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION s3_second_roadblock_peds[s3_index] FALSE ENDIF s3_index++ ENDWHILE RETURN s3_unfreeze_third_roadblock: s3_index = 0 WHILE s3_index < 3 IF NOT IS_CAR_DEAD s3_third_roadblock_cars[s3_index] FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION s3_third_roadblock_cars[s3_index] FALSE ENDIF s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 6 IF NOT IS_CHAR_DEAD s3_third_roadblock_peds[s3_index] FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION s3_third_roadblock_peds[s3_index] FALSE ENDIF s3_index++ ENDWHILE RETURN s3_unfreeze_fourth_roadblock: s3_index = 0 WHILE s3_index < 3 IF NOT IS_CAR_DEAD s3_fourth_roadblock_cars[s3_index] FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION s3_fourth_roadblock_cars[s3_index] FALSE ENDIF s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 3 IF NOT IS_CHAR_DEAD s3_fourth_roadblock_peds[s3_index] FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION s3_fourth_roadblock_peds[s3_index] FALSE ENDIF s3_index++ ENDWHILE RETURN // ************************************************************ // Add blips for chars/cars at roadblocks // ************************************************************ s3_add_second_roadblock_blips: s3_index = 0 WHILE s3_index < 3 IF NOT IS_CAR_DEAD s3_second_roadblock_cars[s3_index] ADD_BLIP_FOR_CAR s3_second_roadblock_cars[s3_index] s3_second_roadblock_car_blips[s3_index] s3_second_roadblock_car_blip_flag[s3_index] = 1 ENDIF s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 6 IF NOT IS_CHAR_DEAD s3_second_roadblock_peds[s3_index] ADD_BLIP_FOR_CHAR s3_second_roadblock_peds[s3_index] s3_second_roadblock_ped_blips[s3_index] s3_second_roadblock_ped_blip_flag[s3_index] = 1 ENDIF s3_index++ ENDWHILE RETURN s3_add_third_roadblock_blips: s3_index = 0 WHILE s3_index < 3 IF NOT IS_CAR_DEAD s3_third_roadblock_cars[s3_index] ADD_BLIP_FOR_CAR s3_third_roadblock_cars[s3_index] s3_third_roadblock_car_blips[s3_index] s3_third_roadblock_car_blip_flag[s3_index] = 1 ENDIF s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 6 IF NOT IS_CHAR_DEAD s3_third_roadblock_peds[s3_index] ADD_BLIP_FOR_CHAR s3_third_roadblock_peds[s3_index] s3_third_roadblock_ped_blips[s3_index] s3_third_roadblock_ped_blip_flag[s3_index] = 1 ENDIF s3_index++ ENDWHILE RETURN s3_add_fourth_roadblock_blips: s3_index = 0 WHILE s3_index < 3 IF NOT IS_CAR_DEAD s3_fourth_roadblock_cars[s3_index] ADD_BLIP_FOR_CAR s3_fourth_roadblock_cars[s3_index] s3_fourth_roadblock_car_blips[s3_index] s3_fourth_roadblock_car_blip_flag[s3_index] = 1 ENDIF s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 3 IF NOT IS_CHAR_DEAD s3_fourth_roadblock_peds[s3_index] ADD_BLIP_FOR_CHAR s3_fourth_roadblock_peds[s3_index] s3_fourth_roadblock_ped_blips[s3_index] s3_fourth_roadblock_ped_blip_flag[s3_index] = 1 ENDIF s3_index++ ENDWHILE RETURN // ************************************************************ // Remove roadblock car and ped blips // ************************************************************ s3_remove_blip_check: // first roadblock s3_index = 0 WHILE s3_index < 3 IF s3_first_roadblock_ped_blip_flag[s3_index] = 1 AND IS_CHAR_DEAD s3_first_roadblock_peds[s3_index] REMOVE_BLIP s3_first_roadblock_ped_blips[s3_index] s3_first_roadblock_ped_blip_flag[s3_index] = 0 ENDIF IF s3_first_roadblock_car_blip_flag[s3_index] = 1 AND IS_CAR_DEAD s3_first_roadblock_cars[s3_index] REMOVE_BLIP s3_first_roadblock_car_blips[s3_index] s3_first_roadblock_car_blip_flag[s3_index] = 0 ENDIF s3_index++ ENDWHILE // second roadblock s3_index = 0 WHILE s3_index < 6 IF s3_second_roadblock_ped_blip_flag[s3_index] = 1 AND IS_CHAR_DEAD s3_second_roadblock_peds[s3_index] REMOVE_BLIP s3_second_roadblock_ped_blips[s3_index] s3_second_roadblock_ped_blip_flag[s3_index] = 0 ENDIF s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 3 IF s3_second_roadblock_car_blip_flag[s3_index] = 1 AND IS_CAR_DEAD s3_second_roadblock_cars[s3_index] REMOVE_BLIP s3_second_roadblock_car_blips[s3_index] s3_second_roadblock_car_blip_flag[s3_index] = 0 ENDIF s3_index++ ENDWHILE // third roadblock s3_index = 0 WHILE s3_index < 6 IF s3_third_roadblock_ped_blip_flag[s3_index] = 1 AND IS_CHAR_DEAD s3_third_roadblock_peds[s3_index] REMOVE_BLIP s3_third_roadblock_ped_blips[s3_index] s3_third_roadblock_ped_blip_flag[s3_index] = 0 ENDIF s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 3 IF s3_third_roadblock_car_blip_flag[s3_index] = 1 AND IS_CAR_DEAD s3_third_roadblock_cars[s3_index] REMOVE_BLIP s3_third_roadblock_car_blips[s3_index] s3_third_roadblock_car_blip_flag[s3_index] = 0 ENDIF s3_index++ ENDWHILE // fourth roadblock s3_index = 0 WHILE s3_index < 3 IF s3_fourth_roadblock_ped_blip_flag[s3_index] = 1 AND IS_CHAR_DEAD s3_fourth_roadblock_peds[s3_index] REMOVE_BLIP s3_fourth_roadblock_ped_blips[s3_index] s3_fourth_roadblock_ped_blip_flag[s3_index] = 0 ENDIF IF s3_fourth_roadblock_car_blip_flag[s3_index] = 1 AND IS_CAR_DEAD s3_fourth_roadblock_cars[s3_index] REMOVE_BLIP s3_fourth_roadblock_car_blips[s3_index] s3_fourth_roadblock_car_blip_flag[s3_index] = 0 ENDIF s3_index++ ENDWHILE RETURN // ************************************************************ // Check for destroyed roadblocks // ************************************************************ s3_first_roadblock_destroyed_check: s3_first_roadblock_destroyed = 1 s3_index = 0 WHILE s3_index < 3 AND s3_first_roadblock_destroyed = 1 IF NOT IS_CHAR_DEAD s3_first_roadblock_peds[s3_index] s3_first_roadblock_destroyed = 0 ENDIF IF NOT IS_CAR_DEAD s3_first_roadblock_cars[s3_index] s3_first_roadblock_destroyed = 0 ENDIF s3_index++ ENDWHILE RETURN s3_second_roadblock_destroyed_check: s3_second_roadblock_destroyed = 1 s3_index = 0 WHILE s3_index < 6 AND s3_second_roadblock_destroyed = 1 IF NOT IS_CHAR_DEAD s3_second_roadblock_peds[s3_index] s3_second_roadblock_destroyed = 0 ENDIF s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 3 AND s3_second_roadblock_destroyed = 1 IF NOT IS_CAR_DEAD s3_second_roadblock_cars[s3_index] s3_second_roadblock_destroyed = 0 ENDIF s3_index++ ENDWHILE RETURN s3_third_roadblock_destroyed_check: s3_third_roadblock_destroyed = 1 s3_index = 0 WHILE s3_index < 6 AND s3_third_roadblock_destroyed = 1 IF NOT IS_CHAR_DEAD s3_third_roadblock_peds[s3_index] s3_third_roadblock_destroyed = 0 ENDIF s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 3 AND s3_third_roadblock_destroyed = 1 IF NOT IS_CAR_DEAD s3_third_roadblock_cars[s3_index] s3_third_roadblock_destroyed = 0 ENDIF s3_index++ ENDWHILE RETURN s3_fourth_roadblock_destroyed_check: s3_fourth_roadblock_destroyed = 1 s3_index = 0 WHILE s3_index < 3 AND s3_fourth_roadblock_destroyed = 1 IF NOT IS_CHAR_DEAD s3_fourth_roadblock_peds[s3_index] s3_fourth_roadblock_destroyed = 0 ENDIF IF NOT IS_CAR_DEAD s3_fourth_roadblock_cars[s3_index] s3_fourth_roadblock_destroyed = 0 ENDIF s3_index++ ENDWHILE RETURN // ************************************************************ // Remove all blips at roadblock // ************************************************************ s3_remove_first_roadblock_blips: s3_index = 0 WHILE s3_index < 3 REMOVE_BLIP s3_first_roadblock_ped_blips[s3_index] REMOVE_BLIP s3_first_roadblock_car_blips[s3_index] s3_first_roadblock_ped_blip_flag[s3_index] = 0 s3_first_roadblock_car_blip_flag[s3_index] = 0 s3_index++ ENDWHILE RETURN s3_remove_second_roadblock_blips: s3_index = 0 WHILE s3_index < 6 REMOVE_BLIP s3_second_roadblock_ped_blips[s3_index] s3_second_roadblock_ped_blip_flag[s3_index] = 0 s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 3 REMOVE_BLIP s3_second_roadblock_car_blips[s3_index] s3_second_roadblock_car_blip_flag[s3_index] = 0 s3_index++ ENDWHILE RETURN s3_remove_third_roadblock_blips: s3_index = 0 WHILE s3_index < 6 REMOVE_BLIP s3_third_roadblock_ped_blips[s3_index] s3_third_roadblock_ped_blip_flag[s3_index] = 0 s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < 3 REMOVE_BLIP s3_third_roadblock_car_blips[s3_index] s3_third_roadblock_car_blip_flag[s3_index] = 0 s3_index++ ENDWHILE RETURN s3_remove_fourth_roadblock_blips: s3_index = 0 WHILE s3_index < 3 REMOVE_BLIP s3_fourth_roadblock_ped_blips[s3_index] REMOVE_BLIP s3_fourth_roadblock_car_blips[s3_index] s3_fourth_roadblock_ped_blip_flag[s3_index] = 0 s3_fourth_roadblock_car_blip_flag[s3_index] = 0 s3_index++ ENDWHILE RETURN // ************************************************************ // Update ped attacking states // ************************************************************ s3_update_roadblock_ped_attacks: IF NOT IS_CAR_DEAD s3_paste_van LVAR_INT s3_num_of_roadblock_peds LVAR_INT s3_roadblock_peds[6] s3_roadblock_cars[3] s3_attack_flags[6] SWITCH s3_roadblock_to_update CASE 0 CASE 3 s3_num_of_roadblock_peds = 3 BREAK CASE 1 CASE 2 s3_num_of_roadblock_peds = 6 BREAK DEFAULT s3_roadblock_to_update = -1 BREAK ENDSWITCH IF s3_roadblock_to_update = -1 RETURN ENDIF s3_index = 0 WHILE s3_index < s3_num_of_roadblock_peds SWITCH s3_roadblock_to_update CASE 0 s3_roadblock_peds[s3_index] = s3_first_roadblock_peds[s3_index] s3_attack_flags[s3_index] = s3_first_roadblock_ped_attack_flags[s3_index] IF s3_index < 3 s3_roadblock_cars[s3_index] = s3_first_roadblock_cars[s3_index] ENDIF BREAK CASE 1 s3_roadblock_peds[s3_index] = s3_second_roadblock_peds[s3_index] s3_attack_flags[s3_index] = s3_second_roadblock_ped_attack_flags[s3_index] IF s3_index < 3 s3_roadblock_cars[s3_index] = s3_second_roadblock_cars[s3_index] ENDIF BREAK CASE 2 s3_roadblock_peds[s3_index] = s3_third_roadblock_peds[s3_index] s3_attack_flags[s3_index] = s3_third_roadblock_ped_attack_flags[s3_index] IF s3_index < 3 s3_roadblock_cars[s3_index] = s3_third_roadblock_cars[s3_index] ENDIF BREAK CASE 3 s3_roadblock_peds[s3_index] = s3_fourth_roadblock_peds[s3_index] s3_attack_flags[s3_index] = s3_fourth_roadblock_ped_attack_flags[s3_index] IF s3_index < 3 s3_roadblock_cars[s3_index] = s3_fourth_roadblock_cars[s3_index] ENDIF BREAK DEFAULT BREAK ENDSWITCH s3_index++ ENDWHILE IF NOT s3_player_attacked_roadblock[s3_roadblock_to_update] = 1 GOSUB s3_has_player_attacked_roadblock ENDIF GET_CAR_COORDINATES s3_paste_van s3_paste_van_x s3_paste_van_y s3_paste_van_z GET_CHAR_COORDINATES scplayer s3_player_x s3_player_y s3_player_z s3_index = 0 WHILE s3_index < s3_num_of_roadblock_peds IF NOT IS_CHAR_DEAD s3_roadblock_peds[s3_index] GET_CHAR_COORDINATES s3_roadblock_peds[s3_index] s3_roadblock_ped_x s3_roadblock_ped_y s3_roadblock_ped_z GET_DISTANCE_BETWEEN_COORDS_2D s3_paste_van_x s3_paste_van_y s3_roadblock_ped_x s3_roadblock_ped_y s3_dist_from_van_to_ped IF s3_dist_from_van_to_ped < 35.0 IF NOT s3_attack_flags[s3_index] = 3 SET_CHAR_ACCURACY s3_roadblock_peds[s3_index] 85 GET_SCRIPT_TASK_STATUS s3_roadblock_peds[s3_index] TASK_DESTROY_CAR s3_task_status IF s3_task_status = FINISHED_TASK TASK_DESTROY_CAR s3_roadblock_peds[s3_index] s3_paste_van ENDIF s3_attack_flags[s3_index] = 3 ENDIF ELSE GET_DISTANCE_BETWEEN_COORDS_2D s3_player_x s3_player_y s3_roadblock_ped_x s3_roadblock_ped_y s3_dist_from_player_to_ped IF s3_dist_from_player_to_ped < 35.0 AND s3_player_attacked_roadblock[s3_roadblock_to_update] = 1 IF NOT s3_attack_flags[s3_index] = 2 SET_CHAR_ACCURACY s3_roadblock_peds[s3_index] 60 GET_SCRIPT_TASK_STATUS s3_roadblock_peds[s3_index] TASK_KILL_CHAR_ON_FOOT s3_task_status IF s3_task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT s3_roadblock_peds[s3_index] scplayer ENDIF s3_attack_flags[s3_index] = 2 ENDIF ELSE IF s3_player_attacked_roadblock[s3_roadblock_to_update] = 1 IF NOT s3_attack_flags[s3_index] = 1 SET_CHAR_ACCURACY s3_roadblock_peds[s3_index] 60 s3_attack_flags[s3_index] = 1 ENDIF IF s3_attack_flags[s3_index] = 1 GET_SCRIPT_TASK_STATUS s3_roadblock_peds[s3_index] TASK_SHOOT_AT_COORD s3_task_status IF s3_task_status = FINISHED_TASK TASK_SHOOT_AT_COORD s3_roadblock_peds[s3_index] s3_player_x s3_player_y s3_player_z 10000 ENDIF ENDIF ELSE IF NOT s3_attack_flags[s3_index] = 0 SET_CHAR_ACCURACY s3_roadblock_peds[s3_index] 60 s3_attack_flags[s3_index] = 0 ENDIF IF s3_attack_flags[s3_index] = 0 IF s3_dist_from_player_to_ped < 35.0 GET_SCRIPT_TASK_STATUS s3_roadblock_peds[s3_index] TASK_AIM_GUN_AT_CHAR s3_task_status IF s3_task_status = FINISHED_TASK TASK_AIM_GUN_AT_CHAR s3_roadblock_peds[s3_index] scplayer 9999999 ENDIF ELSE GET_SCRIPT_TASK_STATUS s3_roadblock_peds[s3_index] TASK_AIM_GUN_AT_COORD s3_task_status IF s3_task_status = FINISHED_TASK TASK_AIM_GUN_AT_COORD s3_roadblock_peds[s3_index] s3_player_x s3_player_y s3_player_z 9999999 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF s3_index++ ENDWHILE s3_index = 0 WHILE s3_index < s3_num_of_roadblock_peds SWITCH s3_roadblock_to_update CASE 0 s3_first_roadblock_ped_attack_flags[s3_index] = s3_attack_flags[s3_index] BREAK CASE 1 s3_second_roadblock_ped_attack_flags[s3_index] = s3_attack_flags[s3_index] BREAK CASE 2 s3_third_roadblock_ped_attack_flags[s3_index] = s3_attack_flags[s3_index] BREAK CASE 3 s3_fourth_roadblock_ped_attack_flags[s3_index] = s3_attack_flags[s3_index] BREAK DEFAULT BREAK ENDSWITCH s3_index++ ENDWHILE ENDIF RETURN s3_has_player_attacked_roadblock: LVAR_FLOAT s3_xmin s3_ymin s3_zmin s3_xmax s3_ymax s3_zmax s3_index = 0 WHILE s3_index < s3_num_of_roadblock_peds AND NOT s3_player_attacked_roadblock[s3_roadblock_to_update] = 1 IF NOT IS_CHAR_DEAD s3_roadblock_peds[s3_index] GET_CHAR_HIGHEST_PRIORITY_EVENT s3_roadblock_peds[s3_index] s3_event_type GET_CHAR_COORDINATES s3_roadblock_peds[s3_index] player_x player_y player_z s3_xmin = player_x - 10.0 s3_ymin = player_y - 10.0 s3_zmin = player_z - 10.0 s3_xmax = player_x + 10.0 s3_ymax = player_y + 10.0 s3_zmax = player_z + 10.0 IF s3_event_type = EVENT_SHOT_FIRED_WHIZZED_BY OR IS_PROJECTILE_IN_AREA s3_xmin s3_ymin s3_zmin s3_xmax s3_ymax s3_zmax s3_player_attacked_roadblock[s3_roadblock_to_update] = 1 ENDIF ELSE s3_player_attacked_roadblock[s3_roadblock_to_update] = 1 ENDIF IF s3_index < 3 IF IS_CAR_DEAD s3_roadblock_cars[s3_index] AND NOT s3_player_attacked_roadblock[s3_roadblock_to_update] = 1 s3_player_attacked_roadblock[s3_roadblock_to_update] = 1 ENDIF ENDIF s3_index++ ENDWHILE RETURN // ************************************************************ // Update weights of paste van and cars at each roadblock // ************************************************************ s3_update_vehicle_weights: IF NOT IS_CAR_DEAD s3_paste_van AND NOT IS_CHAR_DEAD s3_paste_van_driver // first roadblock IF s3_current_roadblock = 1 GOSUB s3_first_roadblock_destroyed_check IF s3_first_roadblock_destroyed = 1 // van heavy IF NOT s3_paste_van_heavy = 1 SET_CAR_HEAVY s3_paste_van TRUE s3_paste_van_heavy = 1 ENDIF ELSE // if van near any car at current roadblock, van light; else, van heavy IF NOT s3_paste_van_heavy = 1 SET_CAR_HEAVY s3_paste_van TRUE s3_paste_van_heavy = 1 ENDIF s3_index = 0 WHILE s3_index < 3 AND NOT s3_paste_van_heavy = 0 IF NOT IS_CAR_DEAD s3_first_roadblock_cars[s3_index] IF IS_CHAR_IN_CAR s3_paste_van_driver s3_paste_van AND LOCATE_CHAR_IN_CAR_CAR_2D s3_paste_van_driver s3_first_roadblock_cars[s3_index] 50.0 50.0 FALSE SET_CAR_HEAVY s3_paste_van FALSE s3_paste_van_heavy = 0 ENDIF ENDIF s3_index++ ENDWHILE ENDIF ENDIF // second roadblock IF s3_current_roadblock = 2 GOSUB s3_second_roadblock_destroyed_check IF s3_second_roadblock_destroyed = 1 // van heavy IF NOT s3_paste_van_heavy = 1 SET_CAR_HEAVY s3_paste_van TRUE s3_paste_van_heavy = 1 ENDIF ELSE // if van near any car at current roadblock, van light; else, van heavy IF NOT s3_paste_van_heavy = 1 SET_CAR_HEAVY s3_paste_van TRUE s3_paste_van_heavy = 1 ENDIF s3_index = 0 WHILE s3_index < 3 AND NOT s3_paste_van_heavy = 0 IF NOT IS_CAR_DEAD s3_second_roadblock_cars[s3_index] IF IS_CHAR_IN_CAR s3_paste_van_driver s3_paste_van AND LOCATE_CHAR_IN_CAR_CAR_2D s3_paste_van_driver s3_second_roadblock_cars[s3_index] 50.0 50.0 FALSE SET_CAR_HEAVY s3_paste_van FALSE s3_paste_van_heavy = 0 ENDIF ENDIF s3_index++ ENDWHILE ENDIF ENDIF // third roadblock IF s3_current_roadblock = 3 GOSUB s3_third_roadblock_destroyed_check IF s3_third_roadblock_destroyed = 1 // van heavy IF NOT s3_paste_van_heavy = 1 SET_CAR_HEAVY s3_paste_van TRUE s3_paste_van_heavy = 1 ENDIF ELSE // if van near any car at current roadblock, van light; else, van heavy IF NOT s3_paste_van_heavy = 1 SET_CAR_HEAVY s3_paste_van TRUE s3_paste_van_heavy = 1 ENDIF s3_index = 0 WHILE s3_index < 3 AND NOT s3_paste_van_heavy = 0 IF NOT IS_CAR_DEAD s3_third_roadblock_cars[s3_index] IF IS_CHAR_IN_CAR s3_paste_van_driver s3_paste_van AND LOCATE_CHAR_IN_CAR_CAR_2D s3_paste_van_driver s3_third_roadblock_cars[s3_index] 50.0 50.0 FALSE SET_CAR_HEAVY s3_paste_van FALSE s3_paste_van_heavy = 0 ENDIF ENDIF s3_index++ ENDWHILE ENDIF ENDIF // fourth roadblock IF s3_current_roadblock = 4 GOSUB s3_fourth_roadblock_destroyed_check IF s3_fourth_roadblock_destroyed = 1 // van heavy IF NOT s3_paste_van_heavy = 1 SET_CAR_HEAVY s3_paste_van TRUE s3_paste_van_heavy = 1 ENDIF ELSE // if van near any car at current roadblock, van light; else, van heavy IF NOT s3_paste_van_heavy = 1 SET_CAR_HEAVY s3_paste_van TRUE s3_paste_van_heavy = 1 ENDIF s3_index = 0 WHILE s3_index < 3 AND NOT s3_paste_van_heavy = 0 IF NOT IS_CAR_DEAD s3_fourth_roadblock_cars[s3_index] IF IS_CHAR_IN_CAR s3_paste_van_driver s3_paste_van AND LOCATE_CHAR_IN_CAR_CAR_2D s3_paste_van_driver s3_fourth_roadblock_cars[s3_index] 50.0 50.0 FALSE SET_CAR_HEAVY s3_paste_van FALSE s3_paste_van_heavy = 0 ENDIF ENDIF s3_index++ ENDWHILE ENDIF ENDIF IF s3_current_roadblock = -1 AND NOT s3_paste_van_heavy = 1 SET_CAR_HEAVY s3_paste_van TRUE s3_paste_van_heavy = 1 ENDIF // if van's not near the current roadblock to be destroyed (ie. heavy), // set driving mode to avoid cars; if near (ie. not heavy) set to drive into roadblock. // NB. needs to be set each frame to make sure it's not overwritten by the sequence task. IF s3_paste_van_heavy = 1 SET_CAR_DRIVING_STYLE s3_paste_van DRIVINGMODE_AVOIDCARS IF NOT s3_paste_van_collisionproof = 1 SET_CAR_PROOFS s3_paste_van FALSE TRUE FALSE TRUE FALSE s3_paste_van_collisionproof = 1 ENDIF ELSE SET_CAR_DRIVING_STYLE s3_paste_van DRIVINGMODE_SLOWDOWNFORCARS IF s3_paste_van_collisionproof = 1 SET_CAR_PROOFS s3_paste_van FALSE TRUE FALSE FALSE FALSE s3_paste_van_collisionproof = 0 ENDIF ENDIF ENDIF RETURN // **************************************************************************************** // When heading to next roadblock, add blip for player's bike if player's not already on it // **************************************************************************************** s3_add_blip_for_player_bike: IF NOT IS_CAR_DEAD s3_player_bike IF NOT IS_CHAR_IN_CAR scplayer s3_player_bike AND NOT s3_player_bike_has_blip = 1 ADD_BLIP_FOR_CAR s3_player_bike s3_player_bike_blip SET_BLIP_AS_FRIENDLY s3_player_bike_blip TRUE CHANGE_BLIP_DISPLAY s3_player_bike_blip MARKER_ONLY s3_player_bike_has_blip = 1 ENDIF ENDIF RETURN // ************************************************************** // Show player talking to van driver at factory // ************************************************************** s3_play_van_cutscene: DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF CLEAR_AREA -2170.58 -206.92 34.57 100.0 FALSE REQUEST_COLLISION -2170.58 -206.92 LOAD_SCENE_IN_DIRECTION -2170.58 -206.92 34.57 270.0 CLEAR_PRINTS HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE IF NOT IS_CAR_DEAD s3_paste_van SET_CAR_COORDINATES s3_paste_van -2170.58 -206.92 34.57 SET_CAR_HEADING s3_paste_van 91.13 ENDIF IF NOT IS_CHAR_DEAD s3_paste_van_driver CLEAR_CHAR_TASKS_IMMEDIATELY s3_paste_van_driver IF IS_CHAR_IN_ANY_CAR s3_paste_van_driver WARP_CHAR_FROM_CAR_TO_COORD s3_paste_van_driver -2170.45 -209.19 34.37 ELSE SET_CHAR_COORDINATES s3_paste_van_driver -2170.45 -209.19 34.37 ENDIF SET_CHAR_HEADING s3_paste_van_driver 207.63 ENDIF LVAR_INT s3_player_currently_has_car s3_player_currently_has_car = 0 IF s3_player_entered_any_car = 1 IF NOT IS_CAR_DEAD s3_last_player_car_before_van_cutscene IF IS_CHAR_IN_CAR scplayer s3_last_player_car_before_van_cutscene OR LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer s3_last_player_car_before_van_cutscene 20.0 20.0 FALSE s3_player_currently_has_car = 1 ENDIF ENDIF IF s3_player_currently_has_car = 0 DELETE_CAR s3_last_player_car_before_van_cutscene ENDIF ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -2169.44 -210.34 34.37 ELSE SET_CHAR_COORDINATES scplayer -2169.44 -210.34 34.37 ENDIF SET_CHAR_HEADING scplayer 48.2 // move player's car out of the way of the cutscene temporarily IF s3_player_currently_has_car = 1 AND NOT IS_CAR_DEAD s3_last_player_car_before_van_cutscene IF LOCATE_CAR_2D s3_last_player_car_before_van_cutscene -2170.45 -209.19 20.0 20.0 FALSE SET_CAR_COORDINATES s3_last_player_car_before_van_cutscene -2154.28 -275.18 -100.0 SET_CAR_HEADING s3_last_player_car_before_van_cutscene 270.0 ENDIF ENDIF WAIT 1000 SWITCH_WIDESCREEN ON IF NOT IS_CHAR_DEAD s3_paste_van_driver TASK_LOOK_AT_CHAR scplayer s3_paste_van_driver -2 TASK_LOOK_AT_CHAR s3_paste_van_driver scplayer -2 ENDIF SET_FIXED_CAMERA_POSITION -2172.35 -210.03 35.67 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2170.27 -210.10 35.4 JUMP_CUT DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE s3_cutscene_skipped = 1 SKIP_CUTSCENE_START s3_current_audio_needed = S3_MISSION_PASSED_AUDIO GOSUB s3_setup_audio_data TASK_PLAY_ANIM scplayer IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 WHILE s3_audio_index < 1 WAIT 0 GOSUB s3_load_and_play_audio IF s3_audio_is_playing = 2 AND NOT s3_started_talking = 1 START_CHAR_FACIAL_TALK scplayer 10000 s3_started_talking = 1 ENDIF ENDWHILE STOP_CHAR_FACIAL_TALK scplayer WHILE s3_audio_index < s3_total_audio_to_play WAIT 0 GOSUB s3_load_and_play_audio IF s3_audio_is_playing = 2 AND NOT s3_started_talking = 1 START_CHAR_FACIAL_TALK scplayer 10000 s3_started_talking = 1 ENDIF ENDWHILE STOP_CHAR_FACIAL_TALK scplayer s3_cutscene_skipped = 0 SKIP_CUTSCENE_END DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF s3_cutscene_skipped = 1 ENDIF STOP_CHAR_FACIAL_TALK scplayer CLEAR_LOOK_AT scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_PRINTS DELETE_CAR s3_paste_van DELETE_CHAR s3_paste_van_driver CLEAR_AREA -2127.08 -87.75 35.32 20.0 FALSE REQUEST_COLLISION -2127.08 -87.75 LOAD_SCENE -2127.08 -87.75 35.32 IF s3_player_currently_has_car = 1 AND NOT IS_CAR_DEAD s3_last_player_car_before_van_cutscene SET_CAR_COORDINATES s3_last_player_car_before_van_cutscene -2127.08 -87.75 -100.0 SET_CAR_HEADING s3_last_player_car_before_van_cutscene 0.0 WARP_CHAR_INTO_CAR scplayer s3_last_player_car_before_van_cutscene ELSE SET_CHAR_COORDINATES scplayer -2127.08 -87.75 -100.0 SET_CHAR_HEADING scplayer 0.0 ENDIF REMOVE_BLIP s3_player_bike_blip REMOVE_BLIP s3_rocket_blip REMOVE_BLIP s3_paste_van_blip //REMOVE_BLIP s3_destination_blip MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO MARK_MODEL_AS_NO_LONGER_NEEDED DNB3 MARK_MODEL_AS_NO_LONGER_NEEDED DNB2 MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED RUMPO MARK_MODEL_AS_NO_LONGER_NEEDED SFR1 MARK_MODEL_AS_NO_LONGER_NEEDED AK47 SWITCH_ROADS_BACK_TO_ORIGINAL -2005.23 517.16 33.0 -2002.69 554.12 36.0 SWITCH_ROADS_BACK_TO_ORIGINAL -2097.80 319.42 33.0 -2035.57 321.05 36.0 SWITCH_ROADS_BACK_TO_ORIGINAL -2150.18 138.75 33.0 -2145.71 160.84 36.0 SWITCH_ROADS_BACK_TO_ORIGINAL -2168.24 42.13 33.0 -2165.99 61.70 36.0 SWITCH_RANDOM_TRAINS ON HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE WAIT 1000 SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN // *************************************************************** // Cutscene showing player leaving car to pick up escort bike // *************************************************************** s3_play_van_location_cutscene: DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 CLEAR_AREA s3_van_location_x s3_van_location_y s3_van_location_z 100.0 FALSE CLEAR_HELP CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE IF NOT IS_CAR_DEAD s3_paste_van SET_CAR_COORDINATES s3_paste_van s3_paste_van_x s3_paste_van_y s3_paste_van_z SET_CAR_HEADING s3_paste_van s3_paste_van_heading ENDIF IF NOT IS_CAR_DEAD s3_player_bike SET_CAR_COORDINATES s3_player_bike -1830.16 -17.64 14.79 SET_CAR_HEADING s3_player_bike 268.78 ENDIF IF NOT IS_CAR_DEAD s3_meet_car IF NOT IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_INTO_CAR scplayer s3_meet_car ENDIF SET_CAR_COORDINATES s3_meet_car s3_van_location_x s3_van_location_y s3_van_location_z SET_CAR_HEADING s3_meet_car 90.0 CAR_SET_IDLE s3_meet_car ENDIF REQUEST_ANIMATION CAR_CHAT WHILE NOT HAS_ANIMATION_LOADED CAR_CHAT WAIT 0 ENDWHILE s3_current_audio_needed = S3_SECOND_CUTSCENE_AUDIO GOSUB s3_setup_audio_data IF NOT IS_CHAR_DEAD s3_toreno TASK_PLAY_ANIM s3_toreno CAR_Sc3_FR CAR_CHAT 4.0 FALSE FALSE FALSE FALSE -1 IF NOT IS_CHAR_DEAD s3_tbone TASK_LOOK_AT_CHAR s3_tbone s3_toreno -2 ENDIF ENDIF SET_FIXED_CAMERA_POSITION -1815.98 3.07 15.31 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1815.5 2.94 15.25 JUMP_CUT DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE s3_cutscene_skipped = 1 SKIP_CUTSCENE_START WHILE s3_audio_index < 1 WAIT 0 GOSUB s3_load_and_play_audio IF s3_audio_is_playing = 2 AND NOT s3_started_talking = 1 AND NOT IS_CHAR_DEAD s3_toreno START_CHAR_FACIAL_TALK s3_toreno 10000 s3_started_talking = 1 ENDIF ENDWHILE IF NOT IS_CHAR_DEAD s3_toreno STOP_CHAR_FACIAL_TALK s3_toreno TASK_LOOK_AT_CHAR scplayer s3_toreno -1 ENDIF WHILE s3_audio_index < 2 WAIT 0 GOSUB s3_load_and_play_audio IF s3_audio_is_playing = 2 AND NOT s3_started_talking = 1 AND NOT IS_CHAR_DEAD s3_toreno START_CHAR_FACIAL_TALK s3_toreno 10000 s3_started_talking = 1 ENDIF ENDWHILE IF NOT IS_CHAR_DEAD s3_toreno STOP_CHAR_FACIAL_TALK s3_toreno ENDIF WHILE s3_audio_index < 3 WAIT 0 GOSUB s3_load_and_play_audio IF s3_audio_is_playing = 2 AND NOT s3_started_talking = 1 AND NOT IS_CHAR_DEAD s3_toreno START_CHAR_FACIAL_TALK s3_toreno 10000 s3_started_talking = 1 ENDIF ENDWHILE IF NOT IS_CHAR_DEAD s3_toreno STOP_CHAR_FACIAL_TALK s3_toreno ENDIF CLEAR_LOOK_AT scplayer WAIT 200 //TASK_PLAY_ANIM scplayer CAR_getoutL_LHS PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_LEAVE_ANY_CAR scplayer WAIT 500 IF NOT IS_CHAR_DEAD s3_toreno TASK_LOOK_AT_CHAR s3_toreno scplayer -1 ENDIF WAIT 2000 IF NOT IS_CHAR_DEAD s3_tbone CLEAR_LOOK_AT s3_tbone ENDIF s3_audio_index = 5 WHILE s3_audio_index < 6 WAIT 0 GOSUB s3_load_and_play_audio IF s3_audio_is_playing = 2 AND NOT s3_started_talking = 1 AND NOT IS_CHAR_DEAD s3_toreno START_CHAR_FACIAL_TALK s3_toreno 10000 s3_started_talking = 1 ENDIF ENDWHILE IF NOT IS_CHAR_DEAD s3_toreno STOP_CHAR_FACIAL_TALK s3_toreno ENDIF IF NOT IS_CHAR_DEAD s3_tbone TASK_LOOK_AT_CHAR s3_tbone scplayer -1 ENDIF WAIT 1000 WHILE s3_audio_index < s3_total_audio_to_play WAIT 0 GOSUB s3_load_and_play_audio IF s3_audio_is_playing = 2 AND NOT s3_started_talking = 1 AND NOT IS_CHAR_DEAD s3_tbone START_CHAR_FACIAL_TALK s3_tbone 10000 s3_started_talking = 1 ENDIF ENDWHILE IF NOT IS_CHAR_DEAD s3_tbone STOP_CHAR_FACIAL_TALK s3_tbone ENDIF WAIT 1000 IF NOT IS_CHAR_DEAD s3_toreno CLEAR_LOOK_AT s3_toreno ENDIF s3_cutscene_skipped = 0 SKIP_CUTSCENE_END DO_FADE 700 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF s3_cutscene_skipped = 1 ENDIF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE CLEAR_LOOK_AT scplayer CLEAR_CHAR_TASKS scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -1816.19 -1.19 14.15 ELSE SET_CHAR_COORDINATES scplayer -1816.19 -1.19 14.15 ENDIF SET_CHAR_HEADING scplayer 132.83 DELETE_CAR s3_meet_car DELETE_CHAR s3_toreno DELETE_CHAR s3_tbone UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS REMOVE_ANIMATION CAR_CHAT SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 SET_MAX_WANTED_LEVEL 0 SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN // *************************************************************** // Mission audio // *************************************************************** s3_setup_audio_data: SWITCH s3_current_audio_needed CASE S3_MOBILE_AUDIO $s3_audio_text[0] = &MJIZ01A $s3_audio_text[1] = &MJIZ01B $s3_audio_text[2] = &MJIZ01C $s3_audio_text[3] = &MJIZ01D $s3_audio_text[4] = &MJIZ01E $s3_audio_text[5] = &MJIZ01F $s3_audio_text[6] = &MJIZ01G $s3_audio_text[7] = &MJIZ01H s3_audio_sound[0] = SOUND_MJIZ01A s3_audio_sound[1] = SOUND_MJIZ01B s3_audio_sound[2] = SOUND_MJIZ01C s3_audio_sound[3] = SOUND_MJIZ01D s3_audio_sound[4] = SOUND_MJIZ01E s3_audio_sound[5] = SOUND_MJIZ01F s3_audio_sound[6] = SOUND_MJIZ01G s3_audio_sound[7] = SOUND_MJIZ01H s3_total_audio_to_play = 8 BREAK CASE S3_SECOND_CUTSCENE_AUDIO $s3_audio_text[0] = &SYN3_CA $s3_audio_text[1] = &SYN3_CB $s3_audio_text[2] = &SYN3_CC $s3_audio_text[3] = &SYN3_CD $s3_audio_text[4] = &SYN3_CE $s3_audio_text[5] = &SYN3_CF $s3_audio_text[6] = &SYN3_CG s3_audio_sound[0] = SOUND_SYN3_CA s3_audio_sound[1] = SOUND_SYN3_CB s3_audio_sound[2] = SOUND_SYN3_CC s3_audio_sound[3] = SOUND_SYN3_CD s3_audio_sound[4] = SOUND_SYN3_CE s3_audio_sound[5] = SOUND_SYN3_CF s3_audio_sound[6] = SOUND_SYN3_CG s3_total_audio_to_play = 7 BREAK CASE S3_MISSION_PASSED_AUDIO $s3_audio_text[0] = &SYN3_EA $s3_audio_text[1] = &SYN3_EB s3_audio_sound[0] = SOUND_SYN3_EA s3_audio_sound[1] = SOUND_SYN3_EB s3_total_audio_to_play = 2 BREAK DEFAULT BREAK ENDSWITCH s3_audio_is_playing = 0 s3_audio_index = 0 s3_started_talking = 0 RETURN s3_load_and_play_audio: IF s3_audio_is_playing = 0 OR s3_audio_is_playing = 1 IF s3_audio_index < s3_total_audio_to_play IF TIMERB > 1000 GOSUB s3_play_audio ENDIF ENDIF ENDIF IF s3_audio_is_playing = 2 IF HAS_MISSION_AUDIO_FINISHED 1 s3_audio_is_playing = 0 s3_audio_index++ s3_started_talking = 0 CLEAR_PRINTS TIMERB = 0 ENDIF ENDIF RETURN s3_play_audio: IF s3_audio_is_playing = 0 LOAD_MISSION_AUDIO 1 s3_audio_sound[s3_audio_index] s3_audio_is_playing = 1 ENDIF IF s3_audio_is_playing = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW $s3_audio_text[s3_audio_index] 10000 1 PLAY_MISSION_AUDIO 1 s3_audio_is_playing = 2 ENDIF ENDIF RETURN // *************************************************************** // Play audio for Toreno telling player to get back in the car // *************************************************************** s3_play_toreno_get_in_audio: CLEAR_MISSION_AUDIO 2 SWITCH s3_get_in_audio_stage CASE 0 LOAD_MISSION_AUDIO 2 SOUND_TORX_AC BREAK CASE 1 LOAD_MISSION_AUDIO 2 SOUND_TORX_AB BREAK CASE 2 LOAD_MISSION_AUDIO 2 SOUND_TORX_AD BREAK CASE 3 LOAD_MISSION_AUDIO 2 SOUND_TORX_AA BREAK CASE 4 LOAD_MISSION_AUDIO 2 SOUND_TORX_AE BREAK DEFAULT BREAK ENDSWITCH STOP_CHAR_FACIAL_TALK scplayer CLEAR_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CHAR_DEAD s3_toreno OR IS_CHAR_DEAD s3_tbone OR IS_CAR_DEAD s3_meet_car OR IS_CAR_DEAD s3_paste_van OR IS_CHAR_DEAD s3_paste_van_driver OR IS_CAR_DEAD s3_player_bike RETURN ENDIF IF NOT s3_player_picked_up_rocketlauncher = 1 AND HAS_PICKUP_BEEN_COLLECTED s3_rocket REMOVE_BLIP s3_rocket_blip s3_player_picked_up_rocketlauncher = 1 ENDIF ENDWHILE PLAY_MISSION_AUDIO 2 SWITCH s3_get_in_audio_stage CASE 0 PRINT_NOW ( TORX_AC ) 3000 1 BREAK CASE 1 PRINT_NOW ( TORX_AB ) 3000 1 BREAK CASE 2 PRINT_NOW ( TORX_AD ) 3000 1 BREAK CASE 3 PRINT_NOW ( TORX_AA ) 3000 1 BREAK CASE 4 PRINT_NOW ( TORX_AE ) 3000 1 BREAK DEFAULT BREAK ENDSWITCH WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CHAR_DEAD s3_toreno OR IS_CHAR_DEAD s3_tbone OR IS_CAR_DEAD s3_meet_car OR IS_CAR_DEAD s3_paste_van OR IS_CHAR_DEAD s3_paste_van_driver OR IS_CAR_DEAD s3_player_bike RETURN ENDIF IF NOT s3_player_picked_up_rocketlauncher = 1 AND HAS_PICKUP_BEEN_COLLECTED s3_rocket REMOVE_BLIP s3_rocket_blip s3_player_picked_up_rocketlauncher = 1 ENDIF ENDWHILE s3_get_in_audio_stage++ IF s3_get_in_audio_stage > 4 s3_get_in_audio_stage = 0 ENDIF RETURN // ******************************** Mission syn3 failed ********************************** mission_syn3_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // ******************************** Mission syn3 passed ********************************** mission_syn3_passed: flag_synd_mission_counter++ REGISTER_MISSION_PASSED ( SYND_3 ) PLAYER_MADE_PROGRESS 1 PRINT_WITH_NUMBER_BIG ( M_PASSS ) 9000 5000 1 //"Mission Passed!" ADD_SCORE player1 9000 AWARD_PLAYER_MISSION_RESPECT 25 SET_MAX_WANTED_LEVEL s3_wanted_level_at_start ALTER_WANTED_LEVEL_NO_DROP player1 3 PLAY_MISSION_PASSED_TUNE 1 REMOVE_BLIP synd_contact_blip RETURN // *********************************** Mission cleanup ************************************* mission_cleanup_syn3: MARK_MODEL_AS_NO_LONGER_NEEDED WASHING MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ MARK_MODEL_AS_NO_LONGER_NEEDED RUMPO MARK_MODEL_AS_NO_LONGER_NEEDED SFR1 //MARK_MODEL_AS_NO_LONGER_NEEDED WBDYG2 MARK_MODEL_AS_NO_LONGER_NEEDED ROCKETLA MARK_MODEL_AS_NO_LONGER_NEEDED SNIPER MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO MARK_MODEL_AS_NO_LONGER_NEEDED DNB3 MARK_MODEL_AS_NO_LONGER_NEEDED DNB2 MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED AK47 MARK_MODEL_AS_NO_LONGER_NEEDED cellphone MARK_MODEL_AS_NO_LONGER_NEEDED bodyarmour //MARK_MODEL_AS_NO_LONGER_NEEDED DOZER REMOVE_PICKUP s3_rocket REMOVE_PICKUP s3_sniper REMOVE_PICKUP s3_armour_pickup REMOVE_BLIP s3_meet_car_blip REMOVE_BLIP s3_van_location_blip REMOVE_BLIP s3_player_bike_blip REMOVE_BLIP s3_rocket_blip REMOVE_BLIP s3_paste_van_blip //REMOVE_BLIP s3_destination_blip REMOVE_BLIP s3_temp_first_roadblock_blip GOSUB s3_remove_first_roadblock_blips GOSUB s3_remove_second_roadblock_blips GOSUB s3_remove_third_roadblock_blips GOSUB s3_remove_fourth_roadblock_blips CLEAR_SEQUENCE_TASK s3_paste_van_route_seq IF IS_PLAYER_PLAYING player1 SET_EVERYONE_IGNORE_PLAYER player1 OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE ENDIF UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 REMOVE_CHAR_ELEGANTLY s3_toreno REMOVE_CHAR_ELEGANTLY s3_tbone REMOVE_ANIMATION CAR_CHAT SWITCH_ROADS_BACK_TO_ORIGINAL -2005.23 517.16 33.0 -2002.69 554.12 36.0 SWITCH_ROADS_BACK_TO_ORIGINAL -2097.80 319.42 33.0 -2035.57 321.05 36.0 SWITCH_ROADS_BACK_TO_ORIGINAL -2150.18 138.75 33.0 -2145.71 160.84 36.0 SWITCH_ROADS_BACK_TO_ORIGINAL -2168.24 42.13 33.0 -2165.99 61.70 36.0 SWITCH_RANDOM_TRAINS ON //CLEAR_HELP REMOVE_DECISION_MAKER s3_roadblock_ped_decisions REMOVE_DECISION_MAKER s3_in_car_decisions IF NOT IS_CAR_DEAD s3_meet_car FREEZE_CAR_POSITION s3_meet_car FALSE ENDIF //REMOVE_DECISION_MAKER s3_escort_decisions SET_MAX_WANTED_LEVEL s3_wanted_level_at_start SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ************************************* synd4 ********************************************* // ***************************************************************************************** SCRIPT_NAME synd4 // Mission start stuff GOSUB mission_start_synd4 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_synd4_failed ENDIF GOSUB mission_cleanup_synd4 MISSION_END VAR_FLOAT off1_X off_X off1_Y off_Y syn4_offsetX syn4_offsetY VAR_INT syn4_rnd s4_has_phone s4_j_health s4_limo_hlth { // Variables for mission LVAR_INT s4_guards[5] LVAR_INT syn4_jizzy v LVAR_INT syn4_mission_stat syn4_seq_look //blips LVAR_INT syn4_jizzy_blip syn4_girl LVAR_INT syn4_sniper_blip syn4_ready s4_decision LVAR_INT jizzy_phone_cut s4_body_guard0 s4_body_guard1 s4_barrier LVAR_INT s4_group s4_decision_group the_phone_blip LVAR_INT s4_empty_decision s4_phone_is_spawned s4_seq_run LVAR_INT s4_seq_backup LVAR_INT s4_start_blip LVAR_INT s4_door_blip syn4_skylight LVAR_INT s4_limo[5] LVAR_INT s4_seq_corridor LVAR_INT s4_seq_shoot_at_player LVAR_INT s4_blip_for_the_phone s4_txt_skylight LVAR_INT seq_walk seq_vender s4_seq_club LVAR_INT s4_jizzy_is_outside s4_seq_drive s4_seq_flee s4_jizzy_inside_limo LVAR_INT s4_the_phone s4_sitdown_seq s4_sitdown_seq_1 LVAR_INT s4_seq_flee_1 s4_limo_driver LVAR_INT s4_lost s4_ply_car s4_jizzy_indoors LVAR_INT s4_gotten_ai s4_jizzy_buddy s4_decision_buddy LVAR_INT s4_damaged_goods s4_cars_health LVAR_INT s4_jizzy_fleeing LVAR_INT s4_TIMERC LVAR_INT s4_jumped LVAR_INT s4_leave_car LVAR_INT s4_txt_display LVAR_INT s4_audio LVAR_INT s4_playing LVAR_INT s4_guy_quit_a s4_guy_quit_b LVAR_INT syn4_rnd_txt LVAR_INT s4_bouncers LVAR_INT s4_ambience[10] s4_seq_bar_walk[2] LVAR_INT s4_stopping syn4_in_pdomes LVAR_INT s4_driveby_once LVAR_INT s4_guys_are_attacking LVAR_TEXT_LABEL s4_print VAR_INT s4_event // ****************************************Mission Start********************************************* mission_start_synd4: // ***************************************************************************************** // * * // * Mission Start * // * * // ***************************************************************************************** off1_X = 0.0 off_X = 0.0 off1_Y = 0.0 off_Y = 0.0 syn4_offsetX = 0.0 syn4_offsetY = 0.0 syn4_rnd= 0 s4_has_phone = 0 s4_j_health = 0 s4_limo_hlth = 0 s4_guys_are_attacking = 0 s4_playing = 2 LOAD_MISSION_TEXT SYN4 SWITCH_ENTRY_EXIT PDOMES TRUE SWITCH_ENTRY_EXIT PDOMES2 FALSE // Cutscene SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 1 SET_CHAR_AREA_VISIBLE scplayer 1 LOAD_SCENE -2031.0 149.0 29.0 LOAD_CUTSCENE SYND_4a WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_FADING_COLOUR 0 0 0 DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_CHAR_AREA_VISIBLE scplayer 0 SET_AREA_VISIBLE 0 // ***************************************************************************************** IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer -2031.1965 161.1839 27.8516 SET_CHAR_HEADING scplayer 268.0468 SET_CAMERA_BEHIND_PLAYER ENDIF // ***************************************************************************************** SET_FADING_COLOUR 0 0 0 // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** REQUEST_MODEL silenced REQUEST_MODEL BMYBOUN REQUEST_MODEL WMYBOUN REQUEST_MODEL stretch REQUEST_MODEL micro_uzi REQUEST_MODEL broadway REQUEST_MODEL stretch REQUEST_MODEL WMYSGRD SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_MISSION2 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION2 PEDTYPE_MISSION2 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY s4_empty_decision LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH s4_decision LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH s4_decision_buddy WHILE NOT HAS_MODEL_LOADED silenced OR NOT HAS_MODEL_LOADED BMYBOUN OR NOT HAS_MODEL_LOADED WMYBOUN OR NOT HAS_MODEL_LOADED stretch OR NOT HAS_MODEL_LOADED micro_uzi WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED stretch OR NOT HAS_MODEL_LOADED broadway OR NOT HAS_MODEL_LOADED WMYSGRD WAIT 0 ENDWHILE LOAD_SCENE_IN_DIRECTION -2031.1965 161.1839 27.8359 268.0468 CLEAR_AREA -2624.5486 1412.1306 6.1094 10.0 TRUE CREATE_GROUP DEFAULT_TASK_ALLOCATOR_STAND_STILL s4_group LOAD_GROUP_DECISION_MAKER DM_GROUP_MISSION_NORM s4_decision_group SET_GROUP_DECISION_MAKER s4_group s4_decision_group // ***************************************************************************************** IF NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK s4_seq_backup FLUSH_ROUTE EXTEND_ROUTE -2643.9934 1405.8949 905.2734 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_WALK FOLLOW_ROUTE_ONCE TASK_KILL_CHAR_ON_FOOT -1 scplayer TASK_STAY_IN_SAME_PLACE -1 TRUE FLUSH_ROUTE CLOSE_SEQUENCE_TASK s4_seq_backup ENDIF LVAR_INT s4_seq_table[4] // ********************************************************************************************* IF NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK s4_seq_table[0] TASK_GO_TO_COORD_ANY_MEANS -1 -2664.2856 1420.9042 905.2812 PEDMOVE_WALK -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK s4_seq_table[0] OPEN_SEQUENCE_TASK s4_seq_table[1] TASK_GO_TO_COORD_ANY_MEANS -1 -2662.2415 1418.2222 905.2770 PEDMOVE_WALK -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK s4_seq_table[1] OPEN_SEQUENCE_TASK s4_seq_table[2] TASK_GO_TO_COORD_ANY_MEANS -1 -2671.8579 1420.6029 905.2812 PEDMOVE_WALK -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK s4_seq_table[2] OPEN_SEQUENCE_TASK s4_seq_table[3] TASK_GO_TO_COORD_ANY_MEANS -1 -2667.2207 1421.7740 905.2812 PEDMOVE_WALK -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK s4_seq_table[3] ENDIF // ********************************************************************************************* OPEN_SEQUENCE_TASK seq_vender TASK_GO_TO_COORD_ANY_MEANS -1 -2674.1714 1394.5531 917.3582 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 94.4524 SET_SEQUENCE_TO_REPEAT seq_vender 1 CLOSE_SEQUENCE_TASK seq_vender OPEN_SEQUENCE_TASK s4_seq_flee_1 FLUSH_ROUTE EXTEND_ROUTE -2666.1421 1420.5762 905.2770 EXTEND_ROUTE -2654.3296 1420.0924 905.2812 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_SPRINT FOLLOW_ROUTE_ONCE FLUSH_ROUTE CLOSE_SEQUENCE_TASK s4_seq_flee_1 OPEN_SEQUENCE_TASK s4_seq_club FLUSH_ROUTE EXTEND_ROUTE -2663.8975 1420.5088 905.2812 EXTEND_ROUTE -2655.5420 1418.9049 905.2812 EXTEND_ROUTE -2648.7446 1416.9875 905.2812 EXTEND_ROUTE -2645.2756 1410.5466 905.2812 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE CLOSE_SEQUENCE_TASK s4_seq_club OPEN_SEQUENCE_TASK s4_seq_corridor FLUSH_ROUTE EXTEND_ROUTE -2627.8308 1404.9587 905.4609 EXTEND_ROUTE -2627.5139 1406.6074 905.4609 EXTEND_ROUTE -2635.9236 1408.3064 905.4609 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_WALK FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_PAUSE -1 4000 FLUSH_ROUTE EXTEND_ROUTE -2629.4507 1406.7727 905.4609 EXTEND_ROUTE -2626.7146 1403.4100 905.4609 EXTEND_ROUTE -2629.2236 1402.5852 905.4598 EXTEND_ROUTE -2639.5127 1399.5688 911.4133 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_WALK FOLLOW_ROUTE_ONCE FLUSH_ROUTE CLOSE_SEQUENCE_TASK s4_seq_corridor OPEN_SEQUENCE_TASK s4_seq_run FLUSH_ROUTE EXTEND_ROUTE -2663.0244 1430.2712 911.3984 EXTEND_ROUTE -2677.8413 1429.6632 911.3921 EXTEND_ROUTE -2688.7573 1426.8804 905.4531 EXTEND_ROUTE -2686.4932 1422.2070 905.4531 EXTEND_ROUTE -2677.7693 1421.9478 905.4531 EXTEND_ROUTE -2664.3181 1423.6176 905.2734 EXTEND_ROUTE -2651.4082 1423.6007 905.2734 EXTEND_ROUTE -2642.1011 1416.0978 905.2812 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_SPRINT FOLLOW_ROUTE_ONCE FLUSH_ROUTE EXTEND_ROUTE -2633.1062 1415.7209 905.4531 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_SPRINT FOLLOW_ROUTE_ONCE FLUSH_ROUTE CLOSE_SEQUENCE_TASK s4_seq_run OPEN_SEQUENCE_TASK syn4_seq_look TASK_LOOK_ABOUT -1 4000 TASK_PAUSE -1 1000 TASK_SCRATCH_HEAD -1 SET_SEQUENCE_TO_REPEAT syn4_seq_look 1 CLOSE_SEQUENCE_TASK syn4_seq_look OPEN_SEQUENCE_TASK s4_seq_shoot_at_player TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_SHOOT_AT_CHAR -1 scplayer -1 SET_SEQUENCE_TO_REPEAT s4_seq_shoot_at_player 1 CLOSE_SEQUENCE_TASK s4_seq_shoot_at_player // ** Limo's outside ********************************************************************* CREATE_CAR stretch -2634.0613 1395.4983 6.1186 s4_limo[0] SET_CAR_HEADING s4_limo[0] 3.5285 CHANGE_CAR_COLOUR s4_limo[0] 0 0 SET_CAN_BURST_CAR_TYRES s4_limo[0] FALSE SET_CAR_HEALTH s4_limo[0] 2000 CREATE_CAR stretch -2613.4802 1416.5684 6.1432 s4_limo[1] SET_CAR_HEADING s4_limo[1] 272.3133 CHANGE_CAR_COLOUR s4_limo[1] 0 0 SET_CAN_BURST_CAR_TYRES s4_limo[1] FALSE SET_CAR_HEALTH s4_limo[1] 2000 CUSTOM_PLATE_FOR_NEXT_CAR broadway &HO_2_HO_ CREATE_CAR broadway -2611.4714 1409.0361 6.1335 s4_limo[2] SET_CAR_HEADING s4_limo[2] 274.4727 CHANGE_CAR_COLOUR s4_limo[2] 4 4 SET_CAR_HEALTH s4_limo[2] 1000 LVAR_INT s4_bouncer_a s4_bouncer_b OPEN_SEQUENCE_TASK s4_bouncer_a TASK_GO_TO_COORD_ANY_MEANS -1 -2622.9812 1413.1068 6.1137 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 196.0190 SET_SEQUENCE_TO_REPEAT s4_bouncer_a 1 CLOSE_SEQUENCE_TASK s4_bouncer_a OPEN_SEQUENCE_TASK s4_bouncer_b TASK_GO_TO_COORD_ANY_MEANS -1 -2626.4087 1411.9604 6.1094 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 190.6977 SET_SEQUENCE_TO_REPEAT s4_bouncer_b 1 CLOSE_SEQUENCE_TASK s4_bouncer_b // ** Bouncers ar Door ********************************************************************* CREATE_CHAR PEDTYPE_MISSION2 BMYBOUN -2622.9812 1413.1068 6.1137 s4_body_guard0 SET_CHAR_HEADING s4_body_guard0 196.0190 CREATE_CHAR PEDTYPE_MISSION2 WMYBOUN -2626.4087 1411.9604 6.1094 s4_body_guard1 SET_CHAR_HEADING s4_body_guard1 190.6977 GIVE_WEAPON_TO_CHAR s4_body_guard0 WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON s4_body_guard0 WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY s4_body_guard0 90 GIVE_WEAPON_TO_CHAR s4_body_guard1 WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON s4_body_guard1 WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY s4_body_guard1 90 SET_CHAR_DECISION_MAKER s4_body_guard0 s4_decision SET_CHAR_DECISION_MAKER s4_body_guard1 s4_decision PERFORM_SEQUENCE_TASK s4_body_guard0 s4_bouncer_a PERFORM_SEQUENCE_TASK s4_body_guard1 s4_bouncer_b ADD_BLIP_FOR_COORD -2623.9370 1410.7900 6.1152 s4_start_blip ADD_BLIP_FOR_COORD -2636.3848 1402.4854 905.4609 s4_door_blip SET_BLIP_ENTRY_EXIT s4_door_blip -2661.7397 1423.4828 100.0 CHANGE_BLIP_DISPLAY s4_door_blip NEITHER // ** Peds at bar ************************************************************************** IF NOT IS_CHAR_DEAD scplayer GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_PISTOL_SILENCED 200 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PISTOL_SILENCED ENDIF TIMERA = 0 // ***************************************************************************************** SET_FADING_COLOUR 0 0 0 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN // ***************************************************************************************** PRINT_NOW ( SYN4_20 ) 9000 1 // ~s~Go pay Jizzy a visit at his ~y~private club~s~! // ***************************************************************************************** WHILE NOT IS_CHAR_DEAD scplayer WAIT 0 GOSUB syn4_keys GOSUB s4_play_sample IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_synd4_passed ENDIF IF s4_guys_are_attacking = 0 IF NOT IS_CHAR_DEAD s4_body_guard0 IF IS_PLAYER_TARGETTING_CHAR player1 s4_body_guard0 IF NOT IS_CHAR_DEAD s4_body_guard0 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_KILL_CHAR_ON_FOOT s4_body_guard0 scplayer ENDIF IF NOT IS_CHAR_DEAD s4_body_guard1 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_KILL_CHAR_ON_FOOT s4_body_guard1 scplayer ENDIF s4_guys_are_attacking = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD s4_body_guard1 IF IS_PLAYER_TARGETTING_CHAR player1 s4_body_guard1 IF NOT IS_CHAR_DEAD s4_body_guard0 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_KILL_CHAR_ON_FOOT s4_body_guard0 scplayer ENDIF IF NOT IS_CHAR_DEAD s4_body_guard1 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_KILL_CHAR_ON_FOOT s4_body_guard1 scplayer ENDIF s4_guys_are_attacking = 1 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD scplayer IF LOCATE_CHAR_ON_FOOT_3D scplayer -2623.9370 1410.7900 6.1152 1.2 1.2 1.2 TRUE IF NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 OFF ENDIF APPLY_BRAKES_TO_PLAYERS_CAR player1 ON SET_CHAR_HEADING scplayer 0.0000 REMOVE_BLIP s4_start_blip GOSUB syn4_set_camera IF NOT IS_CHAR_DEAD s4_body_guard0 AND NOT IS_CHAR_DEAD s4_body_guard1 IF NOT HAS_CHAR_BEEN_DAMAGED_BY_CHAR s4_body_guard0 scplayer AND NOT HAS_CHAR_BEEN_DAMAGED_BY_CHAR s4_body_guard1 scplayer TASK_LOOK_AT_CHAR s4_body_guard1 scplayer 6000 GOSUB syn4_set_camera IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer -2624.1123 1410.4727 6.1149 SET_CHAR_HEADING scplayer 13.4662 ENDIF TASK_LOOK_AT_CHAR s4_body_guard0 scplayer 6000 SET_FIXED_CAMERA_POSITION -2623.7146 1409.6417 7.7873 0.0 0.0 0.0 // Bouncers at door POINT_CAMERA_AT_POINT -2623.8706 1410.6276 7.7269 JUMP_CUT WAIT 1000 GENERATE_RANDOM_INT_IN_RANGE 0 3 syn4_rnd //current getting stuck skipping the cutscenes here //SKIP_CUTSCENE_START SWITCH syn4_rnd CASE 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN4_BA // Sorry, man, private function. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SYN4_BA ) 4000 1 // Sorry, man, private function. TIMERB = 0 WHILE TIMERB < 4000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO s4_skip_the_cut ENDIF ENDWHILE BREAK CASE 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN4_BB // Jizzy doesn’t want to be disturbed. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SYN4_BB ) 4000 1 // Jizzy doesn’t want to be disturbed. TIMERB = 0 WHILE TIMERB < 4000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO s4_skip_the_cut ENDIF ENDWHILE BREAK CASE 2 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN4_BC // You ain’t getting in! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SYN4_BC ) 4000 1 // You ain’t getting in! TIMERB = 0 WHILE TIMERB < 4000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO s4_skip_the_cut ENDIF ENDWHILE BREAK ENDSWITCH TIMERB = 0 WHILE TIMERB < 1000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED s4_txt_skylight = 1 GOTO s4_skip_the_cut ENDIF ENDWHILE ENDIF ENDIF SET_FIXED_CAMERA_POSITION -2671.1270 1432.5940 25.4663 0.0 0.0 0.0 // Bouncers on door POINT_CAMERA_AT_POINT -2670.4299 1431.8813 25.3871 JUMP_CUT PRINT_NOW ( SYN4_12 ) 5000 1 // ~s~Use the ~y~skylight ~s~to get into the club! CREATE_BIRDS 2682.4202 1420.2371 28.0000 -2630.3650 1411.6986 28.0000 3 BIRDTYPE_SEAGULL TIMERB = 0 WHILE TIMERB < 5000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO s4_skip_the_cut ENDIF ENDWHILE s4_skip_the_cut: GOSUB syn4_restore_camera ADD_BLIP_FOR_COORD -2661.9243 1424.2776 22.8906 syn4_skylight DISPLAY_RADAR 2 // PATHING OFF // the path looks wrong here just turn it off IF s4_txt_skylight = 1 PRINT_NOW ( SYN4_12 ) 5000 1 // ~s~Use the ~y~skylight ~s~to get into the club! ENDIF //currently getting stuck skipping cutscenes above //SKIP_CUTSCENE_END APPLY_BRAKES_TO_PLAYERS_CAR player1 OFF GOTO s4_pass_go ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2660.1450 1419.2113 22.8906 5.0 5.0 5.0 FALSE GOTO s4_pass_go DISPLAY_RADAR 3 // PATHING ON ENDIF ENDWHILE GOTO mission_synd4_failed s4_pass_go: REQUEST_MODEL bmydrug REQUEST_MODEL hmydrug REQUEST_MODEL HFYRI REQUEST_MODEL BFYPRO REQUEST_MODEL BMYDJ REQUEST_MODEL micro_uzi REQUEST_MODEL VWFYWAI REQUEST_MODEL COLT45 LOAD_SPECIAL_CHARACTER 1 jizzy REQUEST_MODEL VHFYST3 REQUEST_ANIMATION SWAT WHILE NOT HAS_MODEL_LOADED bmydrug OR NOT HAS_MODEL_LOADED hmydrug OR NOT HAS_MODEL_LOADED HFYRI OR NOT HAS_MODEL_LOADED BFYPRO OR NOT HAS_MODEL_LOADED BMYDJ WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED micro_uzi OR NOT HAS_MODEL_LOADED VWFYWAI OR NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_ANIMATION_LOADED SWAT OR NOT HAS_MODEL_LOADED VHFYST3 WAIT 0 ENDWHILE WHILE WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_SPECIAL SPECIAL01 -2669.1270 1426.9191 905.4609 syn4_jizzy SET_CHAR_AREA_VISIBLE syn4_jizzy 3 SET_ANIM_GROUP_FOR_CHAR syn4_jizzy gang1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_SPECIAL PEDTYPE_PLAYER1 SET_CHAR_HEADING syn4_jizzy 238.0256 SET_SENSE_RANGE syn4_jizzy 5.0 SET_CHAR_DECISION_MAKER syn4_jizzy s4_empty_decision CREATE_CHAR PEDTYPE_CIVFEMALE BFYPRO -2667.6562 1425.8542 905.4609 syn4_girl SET_CHAR_AREA_VISIBLE syn4_girl 3 SET_CHAR_HEADING syn4_girl 76.4221 SET_CHAR_NEVER_TARGETTED syn4_girl TRUE TASK_CHAT_WITH_CHAR syn4_jizzy syn4_girl TRUE TRUE TASK_CHAT_WITH_CHAR syn4_girl syn4_jizzy FALSE TRUE ADD_BLIP_FOR_CHAR syn4_jizzy syn4_jizzy_blip CHANGE_BLIP_DISPLAY syn4_jizzy_blip NEITHER // ************************************** Guards ********************************************* OPEN_SEQUENCE_TASK s4_sitdown_seq TASK_SIT_DOWN -1 200000 TASK_LOOK_ABOUT -1 2000 SET_SEQUENCE_TO_REPEAT s4_sitdown_seq 1 CLOSE_SEQUENCE_TASK s4_sitdown_seq OPEN_SEQUENCE_TASK s4_sitdown_seq_1 TASK_PAUSE -1 1000 PERFORM_SEQUENCE_TASK -1 s4_sitdown_seq CLOSE_SEQUENCE_TASK s4_sitdown_seq_1 CREATE_CHAR PEDTYPE_MISSION1 bmydrug -2665.2363 1429.8842 905.4609 s4_guards[0] SET_CHAR_HEADING s4_guards[0] 133.1702 PERFORM_SEQUENCE_TASK s4_guards[0] s4_sitdown_seq_1 CREATE_CHAR PEDTYPE_MISSION1 hmydrug -2667.1021 1430.0244 905.4609 s4_guards[1] SET_CHAR_HEADING s4_guards[1] 180.8760 PERFORM_SEQUENCE_TASK s4_guards[1] s4_sitdown_seq CREATE_CHAR PEDTYPE_MISSION1 bmydrug -2665.0642 1428.4020 905.4609 s4_guards[2] SET_CHAR_HEADING s4_guards[2] 106.0457 PERFORM_SEQUENCE_TASK s4_guards[2] s4_sitdown_seq CREATE_CHAR PEDTYPE_MISSION1 BFYPRO -2668.1174 1429.9332 905.4609 s4_guards[3] SET_CHAR_HEADING s4_guards[3] 180.8760 PERFORM_SEQUENCE_TASK s4_guards[3] s4_sitdown_seq_1 // ******************************************************************************************** OPEN_SEQUENCE_TASK s4_seq_bar_walk[0] TASK_GO_TO_COORD_ANY_MEANS -1 -2655.5076 1410.5660 905.2734 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 263.3926 TASK_PAUSE -1 2000 TASK_GO_TO_COORD_ANY_MEANS -1 -2655.8923 1406.6747 905.2734 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 181.7338 TASK_PAUSE -1 2000 SET_SEQUENCE_TO_REPEAT s4_seq_bar_walk[0] 1 CLOSE_SEQUENCE_TASK s4_seq_bar_walk[0] OPEN_SEQUENCE_TASK s4_seq_bar_walk[1] TASK_GO_TO_COORD_ANY_MEANS -1 -2660.2676 1413.9594 905.2734 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 348.4510 TASK_PAUSE -1 2000 TASK_GO_TO_COORD_ANY_MEANS -1 -2662.8408 1413.7321 905.2808 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 96.5734 TASK_PAUSE -1 2000 SET_SEQUENCE_TO_REPEAT s4_seq_bar_walk[1] 1 CLOSE_SEQUENCE_TASK s4_seq_bar_walk[1] // ******************************************************************************************** CREATE_CHAR PEDTYPE_MISSION3 VWFYWAI -2655.5076 1410.5660 905.2734 s4_ambience[0] SET_CHAR_HEADING s4_ambience[0] 263.3926 CREATE_CHAR PEDTYPE_MISSION3 VWFYWAI -2660.2676 1413.9594 905.2734 s4_ambience[1] SET_CHAR_HEADING s4_ambience[1] 348.4510 PERFORM_SEQUENCE_TASK s4_ambience[0] s4_seq_bar_walk[0] PERFORM_SEQUENCE_TASK s4_ambience[1] s4_seq_bar_walk[1] CREATE_CHAR PEDTYPE_MISSION3 bmydrug -2657.2688 1403.5751 905.2812 s4_ambience[2] SET_CHAR_HEADING s4_ambience[2] 271.0479 CREATE_CHAR PEDTYPE_MISSION3 BFYPRO -2654.6169 1404.6565 905.2812 s4_ambience[3] SET_CHAR_HEADING s4_ambience[3] 87.3589 TASK_CHAT_WITH_CHAR s4_ambience[2] s4_ambience[3] TRUE TRUE TASK_CHAT_WITH_CHAR s4_ambience[3] s4_ambience[2] TRUE TRUE // ******************************************************************************************** REPEAT 4 v IF NOT IS_CHAR_DEAD s4_guards[v] SET_CHAR_AREA_VISIBLE s4_guards[v] 3 SET_CHAR_IS_TARGET_PRIORITY s4_guards[v] TRUE GIVE_WEAPON_TO_CHAR s4_guards[v] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON s4_guards[v] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY s4_guards[v] 70 SET_CHAR_DECISION_MAKER s4_guards[v] s4_empty_decision ENDIF IF NOT IS_CHAR_DEAD s4_ambience[v] SET_CHAR_AREA_VISIBLE s4_ambience[v] 3 ENDIF ENDREPEAT flag_player_on_mission = 1 REGISTER_MISSION_GIVEN ADD_BLIP_FOR_COORD -2655.0752 1431.7887 912.4016 the_phone_blip SET_BLIP_ENTRY_EXIT the_phone_blip -2661.7397 1423.4828 100.0 CHANGE_BLIP_DISPLAY the_phone_blip NEITHER // *************************************Set Flags/variables*********************************** SET_CAMERA_BEHIND_PLAYER FLUSH_ROUTE EXTEND_ROUTE -2653.2170 1424.8674 906.7266 TIMERA = 0 // ******************************************************************************************* // // OUTSIDE THE CLUB // // ******************************************************************************************* WHILE NOT IS_CHAR_DEAD scplayer WAIT 0 IF s4_guys_are_attacking = 0 IF NOT IS_CHAR_DEAD s4_body_guard0 IF IS_PLAYER_TARGETTING_CHAR player1 s4_body_guard0 IF NOT IS_CHAR_DEAD s4_body_guard0 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_KILL_CHAR_ON_FOOT s4_body_guard0 scplayer ENDIF IF NOT IS_CHAR_DEAD s4_body_guard1 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_KILL_CHAR_ON_FOOT s4_body_guard1 scplayer ENDIF s4_guys_are_attacking = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD s4_body_guard1 IF IS_PLAYER_TARGETTING_CHAR player1 s4_body_guard1 IF NOT IS_CHAR_DEAD s4_body_guard0 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_KILL_CHAR_ON_FOOT s4_body_guard0 scplayer ENDIF IF NOT IS_CHAR_DEAD s4_body_guard1 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_KILL_CHAR_ON_FOOT s4_body_guard1 scplayer ENDIF s4_guys_are_attacking = 1 ENDIF ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S GOTO mission_synd4_passed ENDIF GOSUB syn4_keys GOSUB s4_play_sample IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2661.0098 1415.3844 921.1953 20.0 20.0 20.0 FALSE AND jizzy_phone_cut = 0 pussy_galore: SWITCH_ENTRY_EXIT PDOMES FALSE IF DOES_BLIP_EXIST s4_start_blip REMOVE_BLIP s4_start_blip ENDIF REMOVE_BLIP syn4_skylight ADD_BLIP_FOR_COORD -2667.3682 1427.4348 905.4609 syn4_sniper_blip SET_BLIP_ENTRY_EXIT syn4_sniper_blip -2661.7397 1423.4828 100.0 IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer -2661.0549 1416.0194 921.1953 SET_CHAR_HEADING scplayer 180.0000 ENDIF jizzy_phone_cut = 1 IF NOT IS_CHAR_DEAD s4_body_guard0 DELETE_CHAR s4_body_guard0 ENDIF IF NOT IS_CHAR_DEAD s4_body_guard1 DELETE_CHAR s4_body_guard1 ENDIF IF NOT IS_CHAR_DEAD scplayer SET_CHAR_HEADING scplayer 197.6688 ENDIF PRINT_NOW ( SYN4_99 ) 4000 1 // ~s~Sneak up to ~y~Jizzy~s~, you need to get that number. SET_WANTED_MULTIPLIER 0.0 CHECKPOINT_SAVE 1 GOTO s4_main_loop ENDIF ENDWHILE GOTO mission_synd4_failed // ******************************************************************************************* // * * // * INSIDE THE CLUB * // * * // ******************************************************************************************* s4_main_loop: WHILE NOT IS_CHAR_DEAD scplayer WAIT 0 GOSUB syn4_keys GOSUB s4_play_sample IF syn4_ready = 0 IF s4_lost = 1 syn4_in_pdomes = 1 GOTO mission_synd4_failed ENDIF REPEAT 4 v IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR s4_guards[v] scplayer PRINT_NOW ( SYN4_08 ) 4000 1 // ~r~You scared Jizzy before he made the call s4_lost = 1 TIMERA = 0 ENDIF ENDREPEAT IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR syn4_jizzy scplayer PRINT_NOW ( SYN4_06 ) 4000 1 // ~r~You killed Jizzy before he made the call s4_lost = 1 TIMERA = 0 ENDIF IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR syn4_girl scplayer PRINT_NOW ( SYN4_08 ) 4000 1 // ~r~You scared Jizzy before he made the call s4_lost = 1 TIMERA = 0 ENDIF // ******************************************************************************************* // * * // * Player is spotted by group * // * * // ******************************************************************************************* /*IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2668.4612 1427.6218 905.4609 8.0 8.0 8.0 FALSE PRINT_NOW ( SYN4_08 ) 4000 1 // ~r~You scared Jizzy before he made the call s4_lost = 1 TIMERA = 0 ENDIF */ // ******************************************************************************************* // * * // * Jizzy makes the call * // * * // ******************************************************************************************* IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2668.7161 1421.8464 905.2770 15.0 15.0 15.0 FALSE seaman_staines: SWITCH_ENTRY_EXIT PDOMES2 TRUE SET_FADING_COLOUR 0 0 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REPEAT 4 v DELETE_CHAR s4_guards[v] ENDREPEAT IF NOT IS_CHAR_DEAD syn4_girl DELETE_CHAR syn4_girl ENDIF IF DOES_BLIP_EXIST syn4_jizzy_blip REMOVE_BLIP syn4_jizzy_blip ENDIF IF NOT IS_CHAR_DEAD syn4_jizzy DELETE_CHAR syn4_jizzy ENDIF LOAD_CUTSCENE SYND_4B WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB syn4_set_camera CREATE_CHAR PEDTYPE_SPECIAL SPECIAL01 -2669.1270 1426.9191 905.4609 syn4_jizzy SET_CHAR_AREA_VISIBLE syn4_jizzy 3 SET_ANIM_GROUP_FOR_CHAR syn4_jizzy gang1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_SPECIAL PEDTYPE_PLAYER1 SET_CHAR_HEADING syn4_jizzy 238.0256 SET_SENSE_RANGE syn4_jizzy 5.0 SET_CHAR_DECISION_MAKER syn4_jizzy s4_empty_decision CREATE_CHAR PEDTYPE_MISSION1 bmydrug -2665.2363 1429.8842 905.4609 s4_guards[0] SET_CHAR_HEADING s4_guards[0] 133.1702 PERFORM_SEQUENCE_TASK s4_guards[0] s4_sitdown_seq_1 CREATE_CHAR PEDTYPE_MISSION1 hmydrug -2667.1021 1430.0244 905.4609 s4_guards[1] SET_CHAR_HEADING s4_guards[1] 180.8760 PERFORM_SEQUENCE_TASK s4_guards[1] s4_sitdown_seq CREATE_CHAR PEDTYPE_MISSION1 bmydrug -2665.0642 1428.4020 905.4609 s4_guards[2] SET_CHAR_HEADING s4_guards[2] 106.0457 PERFORM_SEQUENCE_TASK s4_guards[2] s4_sitdown_seq CREATE_CHAR PEDTYPE_MISSION1 BFYPRO -2668.1174 1429.9332 905.4609 s4_guards[3] SET_CHAR_HEADING s4_guards[3] 180.8760 PERFORM_SEQUENCE_TASK s4_guards[3] s4_sitdown_seq_1 ADD_BLIP_FOR_CHAR syn4_jizzy syn4_jizzy_blip CHANGE_BLIP_DISPLAY syn4_jizzy_blip NEITHER UNLOAD_SPECIAL_CHARACTER 1 REPEAT 4 v SET_CHAR_AREA_VISIBLE s4_guards[v] 3 GIVE_WEAPON_TO_CHAR s4_guards[v] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON s4_guards[v] WEAPONTYPE_MICRO_UZI ENDREPEAT IF NOT IS_CHAR_DEAD syn4_jizzy SET_FIXED_CAMERA_POSITION -2669.5706 1410.8710 907.8965 0.0 0.0 0.0 POINT_CAMERA_AT_CHAR syn4_jizzy FIXED JUMP_CUT ENDIF CREATE_CHAR PEDTYPE_MISSION1 BMYBOUN -2667.1516 1421.5535 905.2812 s4_jizzy_buddy SET_CHAR_HEADING s4_jizzy_buddy 275.4244 TASK_TOGGLE_PED_THREAT_SCANNER s4_jizzy_buddy FALSE FALSE FALSE SET_CHAR_AREA_VISIBLE s4_jizzy_buddy 3 WAIT 100 DO_FADE 0 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PRINT_NOW ( SYN4_05 ) 4000 1 // ~r~Jizzy's ~s~escaping, Hunt him down! IF NOT IS_CHAR_DEAD s4_jizzy_buddy PERFORM_SEQUENCE_TASK s4_jizzy_buddy s4_seq_club ENDIF REPEAT 4 v IF NOT IS_CHAR_DEAD s4_ambience[v] CLEAR_CHAR_TASKS_IMMEDIATELY s4_ambience[v] TASK_DUCK s4_ambience[v] -2 ENDIF ENDREPEAT IF NOT IS_CHAR_DEAD syn4_jizzy CLEAR_CHAR_TASKS syn4_jizzy SET_CHAR_COORDINATES_DONT_WARP_GANG syn4_jizzy -2664.4619 1421.7664 905.2770 SET_CHAR_HEADING syn4_jizzy 249.6271 PERFORM_SEQUENCE_TASK syn4_jizzy s4_seq_club ADD_ARMOUR_TO_CHAR syn4_jizzy 150 SET_CHAR_HEALTH syn4_jizzy 300 SET_CHAR_MAX_HEALTH syn4_jizzy 300 SET_CHAR_SUFFERS_CRITICAL_HITS syn4_jizzy FALSE ENDIF IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer -2666.6382 1410.3051 905.2812 SET_CHAR_HEADING scplayer 0.0000 SET_CAMERA_BEHIND_PLAYER ENDIF WAIT 1000 TIMERB = 0 WHILE TIMERB < 3000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO s4_the_skip ENDIF ENDWHILE s4_the_skip: GOSUB syn4_restore_camera LVAR_INT s4_peek_pillar s4_peek_pillar_3 s4_peek_pillar_1 s4_peek_pillar_2 LVAR_INT s4_guy_a s4_guy_c OPEN_SEQUENCE_TASK s4_peek_pillar_1 TASK_GO_TO_COORD_ANY_MEANS -1 -2639.2773 1409.0222 905.4646 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 63.4408 CLOSE_SEQUENCE_TASK s4_peek_pillar_1 OPEN_SEQUENCE_TASK s4_peek_pillar PERFORM_SEQUENCE_TASK -1 s4_peek_pillar_1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_R SWAT 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_in_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer 2000 TASK_STAY_IN_SAME_PLACE -1 FALSE //TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM -1 enemyx_fa enemyy_fa enemyz_fa heading_fa -1.0 swt_wllshoot_out_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_out_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_R_back SWAT 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT s4_peek_pillar 1 CLOSE_SEQUENCE_TASK s4_peek_pillar OPEN_SEQUENCE_TASK s4_peek_pillar_3 TASK_GO_TO_COORD_ANY_MEANS -1 -2639.3518 1402.7660 905.4646 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 73.2860 CLOSE_SEQUENCE_TASK s4_peek_pillar_3 OPEN_SEQUENCE_TASK s4_peek_pillar_2 PERFORM_SEQUENCE_TASK -1 s4_peek_pillar_3 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_L SWAT 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_in_L SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer 2000 TASK_STAY_IN_SAME_PLACE -1 FALSE //TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM -1 enemyx_fa enemyy_fa enemyz_fa heading_fa -1.0 swt_wllshoot_out_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_out_L SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_L_back SWAT 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT s4_peek_pillar_2 1 CLOSE_SEQUENCE_TASK s4_peek_pillar_2 CREATE_CHAR PEDTYPE_MISSION1 BMYBOUN -2639.2773 1409.0222 905.4646 s4_guy_a SET_CHAR_AREA_VISIBLE s4_guy_a 1 SET_CHAR_HEADING s4_guy_a 63.4408 SET_CHAR_DECISION_MAKER s4_guy_a s4_empty_decision PERFORM_SEQUENCE_TASK s4_guy_a s4_peek_pillar CREATE_CHAR PEDTYPE_MISSION1 WMYBOUN -2639.3518 1402.7660 905.4646 s4_guy_c SET_CHAR_AREA_VISIBLE s4_guy_c 1 SET_CHAR_HEADING s4_guy_c 73.2860 SET_CHAR_DECISION_MAKER s4_guy_c s4_empty_decision PERFORM_SEQUENCE_TASK s4_guy_c s4_peek_pillar_2 GIVE_WEAPON_TO_CHAR s4_guy_a WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON s4_guy_a WEAPONTYPE_MICRO_UZI GIVE_WEAPON_TO_CHAR s4_guy_c WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON s4_guy_c WEAPONTYPE_MICRO_UZI IF NOT IS_CHAR_DEAD s4_guards[0] SET_CHAR_COORDINATES_DONT_WARP_GANG s4_guards[0] -2671.7615 1420.3030 905.2812 SET_CHAR_HEADING s4_guards[0] 214.6866 ENDIF IF NOT IS_CHAR_DEAD s4_guards[1] SET_CHAR_COORDINATES_DONT_WARP_GANG s4_guards[1] -2665.0955 1421.3395 905.2812 SET_CHAR_HEADING s4_guards[1] 167.6077 ENDIF IF NOT IS_CHAR_DEAD syn4_jizzy CLEAR_CHAR_TASKS_IMMEDIATELY syn4_jizzy CHANGE_BLIP_DISPLAY syn4_jizzy_blip NEITHER SET_CHAR_COORDINATES_DONT_WARP_GANG syn4_jizzy -2621.4648 1411.3376 905.4609 // SET_CHAR_COORDINATES_DONT_WARP_GANG syn4_jizzy -2621.4648 1411.3376 6.1094 FREEZE_CHAR_POSITION syn4_jizzy TRUE SET_CHAR_HEADING syn4_jizzy 277.7340 SET_CHAR_AREA_VISIBLE syn4_jizzy 0 s4_jizzy_is_outside = 1 ENDIF IF NOT IS_CHAR_DEAD s4_jizzy_buddy CLEAR_CHAR_TASKS_IMMEDIATELY s4_jizzy_buddy SET_CHAR_COORDINATES_DONT_WARP_GANG s4_jizzy_buddy -2625.8364 1404.7500 6.0938 SET_CHAR_HEADING s4_jizzy_buddy 279.9147 SET_CHAR_AREA_VISIBLE s4_jizzy_buddy 0 ENDIF SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 REPEAT 4 v IF NOT IS_CHAR_DEAD s4_guards[v] CLEAR_CHAR_TASKS_IMMEDIATELY s4_guards[v] TASK_KILL_CHAR_ON_FOOT s4_guards[v] scplayer SET_CHAR_DECISION_MAKER s4_guards[v] s4_decision // PERFORM_SEQUENCE_TASK s4_guards[v] s4_seq_table[v] ENDIF ENDREPEAT CHANGE_BLIP_DISPLAY s4_door_blip BOTH CHANGE_BLIP_DISPLAY syn4_sniper_blip NEITHER SET_CAMERA_BEHIND_PLAYER syn4_mission_stat = 1 syn4_ready = 1 ENDIF ENDIF // **************************************************************************************************** // * * // * Quit out of wall peeking code * // * * // **************************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2640.9978 1406.2753 905.4609 8.0 8.0 8.0 FALSE IF NOT IS_CHAR_DEAD s4_guy_a AND s4_guy_quit_a = 0 CLEAR_CHAR_TASKS_IMMEDIATELY s4_guy_a TASK_KILL_CHAR_ON_FOOT s4_guy_a scplayer s4_guy_quit_a = 1 ENDIF IF NOT IS_CHAR_DEAD s4_guy_c AND s4_guy_quit_b = 0 CLEAR_CHAR_TASKS_IMMEDIATELY s4_guy_c TASK_KILL_CHAR_ON_FOOT s4_guy_c scplayer s4_guy_quit_b = 1 ENDIF ENDIF IF syn4_ready = 1 // **************************************************************************************************** // * * // * Player exits with the phone * // * * // **************************************************************************************************** IF syn4_mission_stat = 1 IF IS_CHAR_DEAD syn4_jizzy AND s4_jizzy_indoors = 0 IF DOES_BLIP_EXIST s4_door_blip REMOVE_BLIP s4_door_blip ENDIF GOTO mission_synd4_passed ENDIF IF NOT IS_CHAR_DEAD syn4_jizzy IF LOCATE_CHAR_ANY_MEANS_3D syn4_jizzy -2636.3848 1402.4854 905.4609 2.0 2.0 2.0 FALSE AND s4_jizzy_is_outside = 0 IF NOT IS_CHAR_DEAD syn4_jizzy CLEAR_CHAR_TASKS syn4_jizzy CHANGE_BLIP_DISPLAY syn4_jizzy_blip NEITHER SET_CHAR_COORDINATES_DONT_WARP_GANG syn4_jizzy -2621.4648 1411.3376 6.1094 SET_CHAR_HEADING syn4_jizzy 277.7340 SET_CHAR_AREA_VISIBLE syn4_jizzy 0 s4_jizzy_is_outside = 1 ENDIF ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2624.7998 1411.5399 6.1015 4.0 4.0 4.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -2661.8499 1426.3899 22.8985 4.0 4.0 4.0 FALSE GOSUB syn4_fade_out IF NOT IS_CHAR_DEAD syn4_jizzy SET_CHAR_COORDINATES_DONT_WARP_GANG syn4_jizzy -2621.4648 1411.3376 6.1094 FREEZE_CHAR_POSITION syn4_jizzy FALSE ENDIF SWITCH_ENTRY_EXIT PDOMES FALSE SWITCH_ENTRY_EXIT PDOMES2 FALSE MARK_ROAD_NODE_AS_DONT_WANDER -2686.4150 1235.5719 54.4297 MARK_ROAD_NODE_AS_DONT_WANDER -2671.2976 1236.4919 54.4297 // ** Limo's outside ********************************************************************* IF IS_CAR_DEAD s4_limo[2] DELETE_CAR s4_limo[2] CLEAR_AREA -2611.4714 1409.0361 6.1335 20.0 TRUE LVAR_INT s4_pizzaboy REQUEST_MODEL pizzaboy REQUEST_MODEL WMYPIZZ WHILE NOT HAS_MODEL_LOADED pizzaboy OR NOT HAS_MODEL_LOADED WMYPIZZ WAIT 0 ENDWHILE CREATE_CAR pizzaboy -2611.4714 1409.0361 6.1335 s4_limo[2] SET_CAR_HEADING s4_limo[2] 274.4727 CREATE_CHAR_INSIDE_CAR s4_limo[2] PEDTYPE_CIVMALE WMYPIZZ s4_pizzaboy DELETE_CHAR s4_jizzy_buddy IF NOT IS_CHAR_DEAD syn4_jizzy SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE syn4_jizzy KNOCKOFFBIKE_EASY ENDIF ENDIF // ** Driving Sequence ********************************************************************* OPEN_SEQUENCE_TASK s4_seq_drive TASK_ENTER_CAR_AS_DRIVER -1 s4_limo[2] 5000 TASK_PAUSE -1 1000 TASK_CAR_DRIVE_WANDER -1 s4_limo[2] 20.0 DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK s4_seq_drive OPEN_SEQUENCE_TASK s4_seq_flee TASK_LEAVE_CAR -1 s4_limo[2] TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK s4_seq_flee CHANGE_CAR_COLOUR s4_limo[2] 4 4 CLEAR_AREA -2621.8103 1398.7444 6.0860 20.0 TRUE REMOVE_BLIP s4_door_blip IF NOT IS_CHAR_DEAD scplayer SET_CHAR_AREA_VISIBLE scplayer 0 FORCE_WEATHER_NOW WEATHER_FOGGY_SF SET_AREA_VISIBLE 0 SET_CAMERA_BEHIND_PLAYER IF NOT IS_CHAR_DEAD syn4_jizzy SET_CHAR_COORDINATES_DONT_WARP_GANG syn4_jizzy -2624.4846 1411.3527 6.1015 SET_CHAR_HEADING syn4_jizzy 267.9166 ENDIF IF NOT IS_CHAR_DEAD s4_jizzy_buddy CLEAR_CHAR_TASKS_IMMEDIATELY s4_jizzy_buddy SET_CHAR_COORDINATES_DONT_WARP_GANG s4_jizzy_buddy -2620.6042 1406.9703 6.1016 SET_CHAR_HEADING s4_jizzy_buddy 277.7697 GIVE_WEAPON_TO_CHAR s4_jizzy_buddy WEAPONTYPE_PISTOL 30000 SET_CURRENT_CHAR_WEAPON s4_jizzy_buddy WEAPONTYPE_PISTOL SET_CHAR_DECISION_MAKER s4_jizzy_buddy s4_decision_buddy //ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE s4_decision_buddy EVENT_ACQUAINTANCE_PED_HATE TASK_SIMPLE_GANG_DRIVEBY 0.0 50.0 0.0 0.0 TRUE FALSE //ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE s4_decision_buddy EVENT_ACQUAINTANCE_PED_HATE TASK_SIMPLE_LOOK_AT_ENTITY_OR_COORD 0.0 50.0 0.0 0.0 TRUE FALSE SET_CHAR_ACCURACY s4_jizzy_buddy 30 SET_CHAR_SHOOT_RATE s4_jizzy_buddy 30 ENDIF DELETE_CHAR syn4_girl REPEAT 4 v DELETE_CHAR s4_guards[v] ENDREPEAT GOSUB syn4_set_camera IF NOT IS_CHAR_DEAD syn4_jizzy AND NOT IS_CAR_DEAD s4_limo[2] SET_FIXED_CAMERA_POSITION -2626.0188 1411.5022 9.1763 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2625.0586 1411.3501 8.9421 JUMP_CUT CLEAR_CHAR_TASKS_IMMEDIATELY syn4_jizzy PERFORM_SEQUENCE_TASK syn4_jizzy s4_seq_drive ENDIF IF NOT IS_CHAR_DEAD s4_jizzy_buddy CLEAR_CHAR_TASKS_IMMEDIATELY s4_jizzy_buddy TASK_ENTER_CAR_AS_PASSENGER s4_jizzy_buddy s4_limo[2] 5000 0 ENDIF GOSUB syn4_fade_in TIMERB = 0 WHILE TIMERB < 4000 WAIT 0 //IF IS_SKIP_CUTSCENE_BUTTON_PRESSED // WDTOM There is no need to present the skip here; it's 3 seconds long. //AND IS_CHAR_DEAD s4_pizzaboy // GOTO s4_skip_the_cut_5 //ENDIF ENDWHILE s4_skip_the_cut_5: s4_jizzy_indoors = 1 GOSUB syn4_restore_camera IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer -2627.0999 1410.3988 6.1015 SET_CHAR_HEADING scplayer 279.1925 ENDIF LVAR_INT s4_buddy_seq_car OPEN_SEQUENCE_TASK s4_buddy_seq_car TASK_PAUSE -1 4000 TASK_DRIVE_BY -1 scplayer -1 0.0 0.0 0.0 10.0 DRIVEBY_AI_ALL_DIRN FALSE 30 SET_SEQUENCE_TO_REPEAT s4_buddy_seq_car 1 CLOSE_SEQUENCE_TASK s4_buddy_seq_car IF NOT IS_CAR_DEAD s4_limo[2] IF NOT IS_CHAR_DEAD s4_jizzy_buddy AND NOT IS_CHAR_DEAD syn4_jizzy IF NOT IS_CHAR_IN_CAR s4_jizzy_buddy s4_limo[2] WARP_CHAR_INTO_CAR_AS_PASSENGER s4_jizzy_buddy s4_limo[2] 0 ENDIF TASK_TOGGLE_PED_THREAT_SCANNER s4_jizzy_buddy TRUE TRUE TRUE PERFORM_SEQUENCE_TASK s4_jizzy_buddy s4_buddy_seq_car ENDIF IF NOT IS_CHAR_DEAD syn4_jizzy AND NOT IS_CAR_DEAD s4_limo[2] GIVE_WEAPON_TO_CHAR syn4_jizzy WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON syn4_jizzy WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY syn4_jizzy 90 IF NOT IS_CHAR_IN_CAR syn4_jizzy s4_limo[2] IF NOT IS_CHAR_DEAD s4_pizzaboy IF IS_CHAR_IN_ANY_CAR s4_pizzaboy DELETE_CHAR s4_pizzaboy ENDIF ENDIF WARP_CHAR_INTO_CAR syn4_jizzy s4_limo[2] ENDIF ENDIF ENDIF CLEAR_PRINTS CHANGE_BLIP_DISPLAY syn4_jizzy_blip BOTH PRINT_NOW (SYN4_02 ) 10000 1 // ~r~Jizzy's ~s~escaping with the phone, hunt him down! TIMERA = 0 SET_WANTED_MULTIPLIER 1.0 syn4_mission_stat = 2 CHECKPOINT_SAVE 1 ENDIF ENDIF ENDIF // **************************************************************************************************** // * * // * The Car Chase * // * * // **************************************************************************************************** IF NOT IS_CHAR_DEAD syn4_jizzy GET_CHAR_COORDINATES syn4_jizzy off_X off_Y off1_X IF IS_CHAR_IN_ANY_CAR syn4_jizzy STORE_CAR_CHAR_IS_IN_NO_SAVE syn4_jizzy car ENDIF GET_CHAR_HIGHEST_PRIORITY_EVENT syn4_jizzy s4_event IF s4_event = EVENT_DRAGGED_OUT_CAR CLEAR_CHAR_TASKS syn4_jizzy TASK_FLEE_CHAR_ANY_MEANS syn4_jizzy scplayer 200.0 9999999 TRUE 3000 1000 10.0 ENDIF IF s4_event = EVENT_PED_ENTERED_MY_VEHICLE CLEAR_CHAR_TASKS syn4_jizzy TASK_FLEE_CHAR_ANY_MEANS syn4_jizzy scplayer 200.0 9999999 TRUE 3000 1000 10.0 ENDIF ENDIF IF NOT IS_CHAR_DEAD s4_jizzy_buddy GET_CHAR_HIGHEST_PRIORITY_EVENT s4_jizzy_buddy s4_event IF s4_event = EVENT_PED_ENTERED_MY_VEHICLE CLEAR_CHAR_TASKS s4_jizzy_buddy TASK_KILL_CHAR_ON_FOOT s4_jizzy_buddy scplayer ENDIF IF s4_event = EVENT_DRAGGED_OUT_CAR CLEAR_CHAR_TASKS s4_jizzy_buddy TASK_KILL_CHAR_ON_FOOT s4_jizzy_buddy scplayer ENDIF ENDIF IF NOT IS_CAR_DEAD car GET_CAR_HEALTH car s4_cars_health IF s4_cars_health < 200 s4_damaged_goods = 1 IF NOT IS_CHAR_DEAD s4_jizzy_buddy AND s4_jumped = 0 LVAR_INT s4_buddy_seq OPEN_SEQUENCE_TASK s4_buddy_seq TASK_LEAVE_CAR_IMMEDIATELY -1 car TASK_DIE -1 CLOSE_SEQUENCE_TASK s4_buddy_seq PERFORM_SEQUENCE_TASK s4_jizzy_buddy s4_buddy_seq s4_jumped = 1 ENDIF ELSE s4_damaged_goods = 0 ENDIF IF IS_CAR_ON_FIRE car AND s4_leave_car = 0 AND NOT IS_CHAR_DEAD syn4_jizzy LVAR_INT s4_seq_flee_player OPEN_SEQUENCE_TASK s4_seq_flee_player TASK_LEAVE_CAR_IMMEDIATELY -1 car TASK_FLEE_CHAR_ANY_MEANS -1 scplayer 200.0 9999999 TRUE 3000 1000 10.0 SET_SEQUENCE_TO_REPEAT s4_seq_flee_player 1 CLOSE_SEQUENCE_TASK s4_seq_flee_player SET_CHAR_DECISION_MAKER syn4_jizzy s4_empty_decision TIMERB = 0 PERFORM_SEQUENCE_TASK syn4_jizzy s4_seq_flee_player s4_leave_car = 1 ENDIF ENDIF IF syn4_mission_stat = 2 IF IS_CAR_DEAD s4_limo[2] AND s4_jizzy_inside_limo = 0 PRINT_NOW ( SYN4_32 ) 5000 1 // ~r~You blew up the phone GOTO mission_synd4_failed ENDIF IF NOT IS_CAR_DEAD s4_limo[2] AND NOT IS_CHAR_DEAD syn4_jizzy IF IS_CHAR_IN_CAR syn4_jizzy s4_limo[2] s4_jizzy_inside_limo = 0 ELSE s4_jizzy_inside_limo = 1 ENDIF ENDIF // **************************************************************************************************** // * * // * Alter Jizzy's Car Speed * // * * // **************************************************************************************************** IF NOT IS_CHAR_DEAD syn4_jizzy IF LOCATE_CHAR_ANY_MEANS_3D scplayer off_X off_Y off1_X 20.0 20.0 20.0 FALSE IF NOT IS_CAR_DEAD s4_limo[2] AND s4_gotten_ai = 0 IF NOT IS_CAR_ON_FIRE s4_limo[2] IF s4_damaged_goods = 0 TASK_CAR_MISSION syn4_jizzy s4_limo[2] -1 MISSION_CRUISE 25.0 DRIVINGMODE_AVOIDCARS ELSE TASK_CAR_MISSION syn4_jizzy s4_limo[2] -1 MISSION_CRUISE 32.0 DRIVINGMODE_AVOIDCARS ENDIF s4_gotten_ai = 1 ENDIF ENDIF ELSE IF NOT IS_CAR_DEAD s4_limo[2] AND s4_gotten_ai = 1 IF NOT IS_CAR_ON_FIRE s4_limo[2] IF s4_damaged_goods = 0 TASK_CAR_MISSION syn4_jizzy s4_limo[2] -1 MISSION_CRUISE 23.0 DRIVINGMODE_AVOIDCARS ELSE TASK_CAR_MISSION syn4_jizzy s4_limo[2] -1 MISSION_CRUISE 28.0 DRIVINGMODE_AVOIDCARS ENDIF s4_gotten_ai = 0 ENDIF ENDIF ENDIF ENDIF // **************************************************************************************************** // * * // * Jizzy gets away * // * * // **************************************************************************************************** IF NOT IS_CHAR_DEAD syn4_jizzy IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer off_X off_Y off1_X 150.0 150.0 150.0 FALSE PRINT_NOW ( SYN4_29 ) 4000 1 // ~r~You let Jizzy escape with the phone. GOTO mission_synd4_failed ENDIF IF NOT IS_CHAR_IN_ANY_CAR syn4_jizzy AND s4_jizzy_fleeing = 0 s4_jizzy_fleeing = 1 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD syn4_jizzy AND NOT IS_CAR_DEAD s4_limo[2] AND NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer s4_ply_car s4_TIMERC ++ IF s4_TIMERC > 100 CLEAR_CAR_LAST_DAMAGE_ENTITY s4_limo[2] s4_TIMERC = 0 ENDIF IF NOT IS_CAR_DEAD s4_ply_car AND TIMERA > 12000 IF HAS_CAR_BEEN_DAMAGED_BY_CAR s4_limo[2] s4_ply_car IF NOT IS_MESSAGE_BEING_DISPLAYED syn4_rnd_txt ++ IF syn4_rnd_txt = 1 $s4_print = &SYN4_AA // Hey, I thought we was friends! s4_audio = SOUND_SYN4_AA GOSUB s4_load_sample ENDIF IF syn4_rnd_txt = 2 $s4_print = &SYN4_AB // You’re blowing your chance to be a playa! s4_audio = SOUND_SYN4_AB GOSUB s4_load_sample ENDIF IF syn4_rnd_txt = 3 $s4_print = &SYN4_AC // We can talk about this, homie! s4_audio = SOUND_SYN4_AC GOSUB s4_load_sample ENDIF IF syn4_rnd_txt = 4 $s4_print = &SYN4_AD // You're wrecking my ride! s4_audio = SOUND_SYN4_AD GOSUB s4_load_sample ENDIF IF syn4_rnd_txt = 5 $s4_print = &SYN4_AE // CJ, brother, you have to reconsider your position! s4_audio = SOUND_SYN4_AE GOSUB s4_load_sample ENDIF IF syn4_rnd_txt = 6 $s4_print = &SYN4_AF // I can fix anything for you in this town, anything! s4_audio = SOUND_SYN4_AF GOSUB s4_load_sample ENDIF IF syn4_rnd_txt = 7 $s4_print = &SYN4_AG // CJ, you’re a fool, A FOOL! s4_audio = SOUND_SYN4_AG GOSUB s4_load_sample ENDIF IF syn4_rnd_txt = 8 $s4_print = &SYN4_AH // I won’t forget this, CJ, you hear me? s4_audio = SOUND_SYN4_AH GOSUB s4_load_sample ENDIF IF syn4_rnd_txt = 9 $s4_print = &SYN4_AJ // You realise how much this paint job cost? s4_audio = SOUND_SYN4_AJ GOSUB s4_load_sample ENDIF IF syn4_rnd_txt = 10 $s4_print = &SYN4_AK // Back off, fool! s4_audio = SOUND_SYN4_AK GOSUB s4_load_sample ENDIF IF syn4_rnd_txt = 11 $s4_print = &SYN4_AL // I got money, have it! s4_audio = SOUND_SYN4_AL GOSUB s4_load_sample syn4_rnd_txt = 0 ENDIF TIMERA = 0 s4_TIMERC = 0 CLEAR_CAR_LAST_DAMAGE_ENTITY s4_limo[2] ENDIF ENDIF ENDIF ENDIF ENDIF // **************************************************************************************************** // * * // * Spawn the phone * // * * // **************************************************************************************************** IF IS_CHAR_DEAD syn4_jizzy AND s4_phone_is_spawned = 0 IF DOES_BLIP_EXIST syn4_jizzy_blip REMOVE_BLIP syn4_jizzy_blip ENDIF REQUEST_MODEL mobile1993b WHILE NOT HAS_MODEL_LOADED mobile1993b WAIT 0 ENDWHILE LVAR_FLOAT s4_z GET_GROUND_Z_FOR_3D_COORD off_X off_Y off1_X s4_z s4_z = s4_z + 0.5 CREATE_OBJECT_NO_OFFSET mobile1993b off_X off_Y s4_z s4_the_phone ADD_BLIP_FOR_OBJECT s4_the_phone s4_blip_for_the_phone PRINT_NOW ( SYN4_33 ) 4000 1 // ~s~Now collect the phone s4_phone_is_spawned = 1 ENDIF // **************************************************************************************************** // * * // * Draw the phones corona * // * * // **************************************************************************************************** IF s4_phone_is_spawned = 1 DRAW_CORONA off_X off_Y s4_z 0.2 CORONATYPE_TORUS FLARETYPE_NONE 200 200 200 ENDIF // **************************************************************************************************** // * * // * Collecting the phone * // * * // **************************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer off_X off_Y off1_X 1.2 1.2 2.0 FALSE AND s4_phone_is_spawned = 1 AND NOT IS_CHAR_IN_ANY_CAR scplayer CLEAR_PRINTS DELETE_OBJECT s4_the_phone IF DOES_BLIP_EXIST s4_blip_for_the_phone REMOVE_BLIP s4_blip_for_the_phone ENDIF IF DOES_BLIP_EXIST syn4_jizzy_blip REMOVE_BLIP syn4_jizzy_blip ENDIF PRINT_NOW ( SYN4_11 ) 2000 1 // Phone collected! TIMERB = 0 s4_phone_is_spawned = 2 ENDIF IF s4_phone_is_spawned = 2 AND TIMERB > 2000 AND NOT IS_CHAR_STUCK_UNDER_CAR scplayer GOSUB syn4_set_camera s4_use_phone: REQUEST_MODEL cellphone WHILE NOT HAS_MODEL_LOADED cellphone WAIT 0 ENDWHILE CLEAR_WANTED_LEVEL player1 IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS scplayer TASK_USE_MOBILE_PHONE scplayer TRUE ENDIF WAIT 2000 GOSUB syn4_restore_camera syn4_ready = 2 TIMERB = 0 ENDIF ENDIF IF syn4_ready = 2 IF IS_BUTTON_PRESSED PAD1 TRIANGLE s4_txt_display = 6 s4_txt_display = 6 ENDIF IF s4_playing = 2 AND s4_txt_display = 0 IF NOT IS_CHAR_DEAD scplayer START_CHAR_FACIAL_TALK scplayer 10000 ENDIF $s4_print = &MCES11A // Yo Cesar! s4_audio = SOUND_MCES11A GOSUB s4_load_sample s4_txt_display = 1 ENDIF IF s4_playing = 2 AND s4_txt_display = 1 IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF $s4_print = &MCES11B // Hey, dude, whassup? s4_audio = SOUND_MCES11B GOSUB s4_load_sample s4_txt_display = 2 ENDIF IF s4_playing = 2 AND s4_txt_display = 2 IF NOT IS_CHAR_DEAD scplayer START_CHAR_FACIAL_TALK scplayer 10000 ENDIF $s4_print = &MCES11C // Listen; I need you to meet me at Pier 69. s4_audio = SOUND_MCES11C GOSUB s4_load_sample s4_txt_display = 3 ENDIF IF s4_playing = 2 AND s4_txt_display = 3 IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF $s4_print = &MCES11D // We're going to take down the Loco Syndicate. s4_audio = SOUND_MCES11D GOSUB s4_load_sample s4_txt_display = 4 ENDIF IF s4_playing = 2 AND s4_txt_display = 4 $s4_print = &MCES11E // Ok, holmes. You need some help there? s4_audio = SOUND_MCES11E GOSUB s4_load_sample s4_txt_display = 5 ENDIF IF s4_playing = 2 AND s4_txt_display = 5 IF NOT IS_CHAR_DEAD scplayer START_CHAR_FACIAL_TALK scplayer 10000 ENDIF $s4_print = &MCES11F // No, dude, I got it covered! s4_audio = SOUND_MCES11F GOSUB s4_load_sample s4_txt_display = 6 ENDIF IF s4_playing = 2 AND s4_txt_display = 6 IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF IF NOT IS_CHAR_DEAD scplayer TASK_USE_MOBILE_PHONE scplayer FALSE ENDIF GOSUB syn4_restore_camera GOTO mission_synd4_passed ENDIF ENDIF ENDWHILE GOTO mission_synd4_failed // ************************************************************************************************************ // * * // * END MAIN LOOP * // * * // ************************************************************************************************************ // Mission synd4 failed mission_synd4_failed: IF DOES_BLIP_EXIST syn4_jizzy_blip REMOVE_BLIP syn4_jizzy_blip ENDIF IF DOES_BLIP_EXIST syn4_sniper_blip REMOVE_BLIP syn4_sniper_blip ENDIF IF DOES_BLIP_EXIST the_phone_blip REMOVE_BLIP the_phone_blip ENDIF PRINT_BIG M_FAIL 5000 1 IF syn4_mission_stat = 1 OR syn4_in_pdomes = 1 GOSUB syn4_fade_out IF NOT IS_CHAR_DEAD scplayer syn4_mission_stat = 1 SET_AREA_VISIBLE 0 REQUEST_COLLISION -2623.8054 1409.8163 SET_CHAR_AREA_VISIBLE scplayer 0 SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer -2624.4607 1410.7056 6.1015 SET_CHAR_HEADING scplayer 176.8840 LOAD_SCENE -2624.4607 1410.7056 6.1015 ENDIF GOSUB syn4_fade_in ENDIF SET_CAMERA_BEHIND_PLAYER RETURN // ************************************************************************************************************ // * * // * Passed Mission * // * * // ************************************************************************************************************ mission_synd4_passed: CLEAR_PRINTS IF DOES_BLIP_EXIST syn4_jizzy_blip REMOVE_BLIP syn4_jizzy_blip ENDIF IF DOES_BLIP_EXIST syn4_sniper_blip REMOVE_BLIP syn4_sniper_blip ENDIF IF DOES_BLIP_EXIST the_phone_blip REMOVE_BLIP the_phone_blip ENDIF flag_synd_mission_counter ++ PRINT_WITH_NUMBER_BIG ( M_PASSS ) 12000 5000 1 //"Mission Passed!" //100 being the amount of cash ADD_SCORE player1 12000//amount of cash REMOVE_BLIP synd_contact_blip AWARD_PLAYER_MISSION_RESPECT 30 //amount of respect PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL player1 //PLAY_MISSION_PASSED_TUNE 1 REGISTER_MISSION_PASSED ( SYND_4 ) PLAYER_MADE_PROGRESS 1 //START_NEW_SCRIPT synd4_mission_loop REMOVE_BLIP garage_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT -1717.05 1280.91 6.23 garage_blip_icon garage_contact_blip RETURN // ************************************************************************************************************ // * * // * Clean-up Mission * // * * // ************************************************************************************************************ mission_cleanup_synd4: DISPLAY_RADAR 3 // PATHING ON IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF IF NOT IS_CHAR_DEAD syn4_jizzy REMOVE_CHAR_ELEGANTLY syn4_jizzy ENDIF SWITCH_ENTRY_EXIT PDOMES FALSE SWITCH_ENTRY_EXIT PDOMES2 FALSE SET_WANTED_MULTIPLIER 1.0 UNMARK_ALL_ROAD_NODES_AS_DONT_WANDER IF DOES_BLIP_EXIST s4_blip_for_the_phone REMOVE_BLIP s4_blip_for_the_phone ENDIF IF DOES_BLIP_EXIST s4_start_blip REMOVE_BLIP s4_start_blip ENDIF IF DOES_BLIP_EXIST syn4_jizzy_blip REMOVE_BLIP syn4_jizzy_blip ENDIF IF DOES_BLIP_EXIST syn4_sniper_blip REMOVE_BLIP syn4_sniper_blip ENDIF IF DOES_BLIP_EXIST the_phone_blip REMOVE_BLIP the_phone_blip ENDIF IF DOES_BLIP_EXIST s4_door_blip REMOVE_BLIP s4_door_blip ENDIF IF DOES_BLIP_EXIST syn4_skylight REMOVE_BLIP syn4_skylight ENDIF GET_GAME_TIMER timer_mobile_start // Used to reset the mobile phone timer so it doesn't ring immediately after the mission MARK_MODEL_AS_NO_LONGER_NEEDED silenced MARK_MODEL_AS_NO_LONGER_NEEDED bmydrug MARK_MODEL_AS_NO_LONGER_NEEDED hmydrug MARK_MODEL_AS_NO_LONGER_NEEDED BFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED HFYRI MARK_MODEL_AS_NO_LONGER_NEEDED cellphone MARK_MODEL_AS_NO_LONGER_NEEDED micro_uzi MARK_MODEL_AS_NO_LONGER_NEEDED mobile1993b MARK_MODEL_AS_NO_LONGER_NEEDED warehouse_door2b MARK_MODEL_AS_NO_LONGER_NEEDED stretch MARK_MODEL_AS_NO_LONGER_NEEDED BMYDJ MARK_MODEL_AS_NO_LONGER_NEEDED stretch MARK_MODEL_AS_NO_LONGER_NEEDED broadway MARK_MODEL_AS_NO_LONGER_NEEDED BMYBOUN MARK_MODEL_AS_NO_LONGER_NEEDED WMYBOUN MARK_MODEL_AS_NO_LONGER_NEEDED WMYSGRD MARK_MODEL_AS_NO_LONGER_NEEDED VWFYWAI MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED pizzaboy MARK_MODEL_AS_NO_LONGER_NEEDED WMYPIZZ MARK_MODEL_AS_NO_LONGER_NEEDED VHFYST3 IF NOT IS_CHAR_DEAD scplayer CLEAR_WANTED_LEVEL player1 ENDIF REMOVE_ANIMATION SWAT UNLOAD_SPECIAL_CHARACTER 1 flag_player_on_mission = 0 RELEASE_WEATHER MISSION_HAS_FINISHED RETURN syn4_set_camera: IF NOT IS_CHAR_DEAD scplayer CLEAR_PRINTS SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF ENDIF RETURN syn4_restore_camera: IF NOT IS_CHAR_DEAD scplayer CLEAR_PRINTS SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT ENDIF RETURN syn4_fade_out: DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN syn4_fade_in: DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN // ************************************************************************************************************ // * * // * Keyboard Shortcuts * // * * // ************************************************************************************************************ syn4_keys: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer -2623.9771 1404.8123 6.1110 SET_CHAR_HEADING scplayer 352.6280 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_Q IF NOT IS_CAR_DEAD s4_limo[2] FREEZE_CAR_POSITION s4_limo[2] TRUE ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D VAR_INT the_area_name GET_AREA_VISIBLE the_area_name VIEW_INTEGER_VARIABLE the_area_name AREA_NAME ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F CREATE_BIRDS -2616.1086 1408.6289 6.5000 -2618.4976 1415.8663 6.5000 3 BIRDTYPE_SEAGULL ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_G IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer -2661.1917 1426.1277 22.8906 SET_CHAR_HEADING scplayer 188.7666 SET_CAMERA_BEHIND_PLAYER ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_E IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer -2661.4929 1403.0674 905.2770 SET_CHAR_HEADING scplayer 85.1708 SET_CAMERA_BEHIND_PLAYER ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer VIEW_INTEGER_VARIABLE s4_j_health HEALTH ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_Z GOTO s4_use_phone ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_W IF NOT IS_CAR_DEAD s4_limo[2] SET_CAR_HEALTH s4_limo[2] 200 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B IF NOT IS_CHAR_DEAD syn4_jizzy SET_CHAR_HEALTH syn4_jizzy 1 ENDIF GOSUB syn4_set_camera SET_CHAR_COORDINATES_DONT_WARP_GANG syn4_jizzy -2659.3823 1530.2482 53.9453 SET_CHAR_HEADING syn4_jizzy 0.0000 SET_FIXED_CAMERA_POSITION -2655.0933 1543.8457 55.7815 0.0 0.0 0.0 // Jizzy on the phone POINT_CAMERA_AT_POINT -2655.4446 1542.9185 55.6520 JUMP_CUT IF NOT IS_CHAR_DEAD syn4_jizzy CLEAR_CHAR_TASKS_IMMEDIATELY syn4_jizzy TASK_JUMP syn4_jizzy FALSE ENDIF WAIT 1000 SET_TIME_SCALE 0.4 IF NOT IS_CHAR_DEAD syn4_jizzy SET_FIXED_CAMERA_POSITION -2630.0557 1557.2021 18.3729 0.0 0.0 0.0 // Jizzy on the phone POINT_CAMERA_AT_CHAR syn4_jizzy FIXED JUMP_CUT ENDIF TIMERB = 0 WHILE TIMERB < 750 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO s4_save_the_deer2 ENDIF ENDWHILE SET_TIME_SCALE 1.0 TIMERB = 0 WHILE TIMERB < 1500 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO s4_save_the_deer2 ENDIF ENDWHILE s4_save_the_deer2: GOSUB syn4_restore_camera PRINT_NOW ( SYN4_29 ) 4000 1 // ~r~You let Jizzy escape with the phone. ENDIF RETURN s4_load_sample: CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 s4_audio s4_playing = 0 RETURN s4_play_sample: IF HAS_MISSION_AUDIO_LOADED 1 AND s4_playing = 0 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $s4_print ) 10000 1 s4_playing = 1 ENDIF IF HAS_MISSION_AUDIO_FINISHED 1 AND s4_playing = 1 CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT $s4_print s4_playing = 2 ENDIF RETURN } /* {------------------------ SYNDICATE 4 --------------------------} [SYN4_02:SYN4] ~r~Jizzy's ~s~escaping with the phone, hunt him down! [SYN4_04:SYN4] ~s~Sneak down to ~y~Jizzy~s~ silently, you need to get that number. [SYN4_05:SYN4] ~r~Jizzy's ~s~escaping, Hunt him down! [SYN4_06:SYN4] ~r~You killed Jizzy before he made the call. [SYN4_08:SYN4] ~r~You scared Jizzy before he made the call. [SYN4_11:SYN4] Phone collected! [SYN4_12:SYN4] ~s~Use the ~y~Skylight ~s~to get into the club! [SYN4_13:SYN4] We can't let you in man, private function tonight. [SYN4_17:SYN4] ~r~You were spotted. [SYN4_18:SYN4] The guard has raised the alarm, be extra careful! [SYN4_19:SYN4] ~s~Find a way past the ~r~guard~s~! [SYN4_20:SYN4] ~s~Go pay Jizzy a visit at the ~y~Pleasure Domes club~s~! [SYN4_28:SYN4] ~s~If the ~r~guards ~s~spot you, they'll call in back-up. [SYN4_29:SYN4] ~r~You let Jizzy escape with the phone. [SYN4_30:SYN4] ~s~Don't let the patroling guards spot you! [SYN4_31:SYN4] Limo Damage : [SYN4_32:SYN4] ~r~You blew up the phone. [SYN4_33:SYN4] ~s~Now collect the ~g~phone~s~. [SYN4_CA:SYN4] Yo Cesar! [SYN4_CB:SYN4] Hey, dude, whassup? [SYN4_CC:SYN4] Listen; I need you to meet me at Pier 69. [SYN4_CD:SYN4] We're going to take down the Loco Syndicate. [SYN4_CE:SYN4] Ok, holmes. You need some help there? [SYN4_CF:SYN4] No, dude, I got it covered! */ MISSION_START // ***************************************************************************************** // *** *** // *** Date: 01/10/2003 Time: 14:19:33 Name: Steve Taylor *** // *** *** // *** Mission: Syndicate 6 - Toreno's Heli *** // *** *** // *** Brief: Player and Cesar must get to airstrip in time to see Toreno's DC3 taking *** // *** off. Once there Cesar drives whilst player must shoot out the plane from the *** // *** sunroof of the car DC3. Car takes route with DC3 appearing/from behind forest, *** // *** crossing overhead. Car goes under bridges etc. Plane doesn't explode; rather it *** // *** produces smoke and banks into a dive. It crashes in the distance. *** *** // *** *** // ***************************************************************************************** //chopper coords //-1437.0984 -1527.9949 100.7504 93.8061 SCRIPT_NAME syn6 GOSUB mission_syn6_start IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_syn6_failed ENDIF GOSUB mission_syn6_cleanup MISSION_END // ************************************ MISSION START ************************************** { mission_syn6_start: flag_player_on_mission = 1 tlf_underway = 1 REGISTER_MISSION_GIVEN SET_PLAYER_CONTROL player1 OFF LOAD_SCENE -2034.2550 176.5000 27.8359 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 LOAD_MISSION_TEXT SYN6 LVAR_INT mission_blip mission_timer players_car temp_int temp_int2 c r //LVAR_FLOAT x2 y2 z2 x3 y3 z3 speed temp_float //LOAD_MISSION_TEXT syn6 //DO_FADE 1500 FADE_IN REQUEST_MODEL MAVERICK REQUEST_MODEL FCR900 REQUEST_MODEL AK47 REQUEST_MODEL colt45 REQUEST_MODEL WBDYG1 REQUEST_MODEL WBDYG2 REQUEST_MODEL ROCKETLA REQUEST_MODEL PONY REQUEST_MODEL CELLPHONE REQUEST_MODEL desert_eagle LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED MAVERICK OR NOT HAS_MODEL_LOADED FCR900 OR NOT HAS_MODEL_LOADED AK47 OR NOT HAS_MODEL_LOADED colt45 OR NOT HAS_MODEL_LOADED WBDYG1 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED ROCKETLA OR NOT HAS_MODEL_LOADED WBDYG2 OR NOT HAS_MODEL_LOADED PONY OR NOT HAS_MODEL_LOADED CELLPHONE OR NOT HAS_MODEL_LOADED desert_eagle WAIT 0 ENDWHILE //CLEAR_AREA -2623.2590 1404.0876 6.1109 0.5 0 //LOAD_SCENE -2623.2590 1404.0876 6.1109 //SET_CHAR_COORDINATES scplayer -2034.1271 175.6148 27.8359 //SET_CHAR_HEADING scplayer 331.5565 //LOAD_SCENE -2034.2550 176.5000 27.8359 //DO_FADE 1000 FADE_IN //WHILE GET_FADING_STATUS // WAIT 0 //ENDWHILE //SET_CAMERA_BEHIND_PLAYER //RESTORE_CAMERA_JUMPCUT //SET_PLAYER_CONTROL player1 ON WHILE NOT IS_PLAYER_PLAYING player1 WAIT 0 ENDWHILE //PRINT_NOW MWUZ01A 4000 1 //PRINT_NOW SYN6_01 10000 1//Go and kill Toreno. //ADD_BLIP_FOR_COORD -1680.3770 705.4620 30.2209 mission_blip LVAR_INT enemie[6] LVAR_INT padgoon[6] CREATE_CHAR PEDTYPE_CIVMALE WBDYG1 -1691.7203 703.6754 29.6065 padgoon[0] CREATE_CHAR PEDTYPE_CIVMALE WBDYG2 -1701.0607 712.7670 23.8976 padgoon[1] CREATE_CHAR PEDTYPE_CIVMALE WBDYG2 -1688.3717 687.4631 20.6150 padgoon[2] //CREATE_CHAR PEDTYPE_CIVMALE WBDYG2 -1689.1284 695.7116 29.6065 padgoon[3] CREATE_CHAR PEDTYPE_CIVMALE WBDYG2 -1686.1497 701.9777 29.6065 padgoon[3] CREATE_CHAR PEDTYPE_CIVMALE WBDYG1 -1681.6963 680.8264 18.8009 padgoon[4] CREATE_CHAR PEDTYPE_CIVMALE WBDYG2 -1690.1498 716.6064 29.6065 padgoon[5] SET_CHAR_HEADING padgoon[0] 82.1070 SET_CHAR_HEADING padgoon[1] 224.7688 SET_CHAR_HEADING padgoon[2] 118.1096 TASK_KINDA_STAY_IN_SAME_PLACE padgoon[2] TRUE SET_CHAR_HEADING padgoon[3] 239.6//279.9582 TASK_STAY_IN_SAME_PLACE padgoon[3] TRUE TASK_TOGGLE_DUCK padgoon[3] TRUE SET_CHAR_HEADING padgoon[4] 86.9582 TASK_KINDA_STAY_IN_SAME_PLACE padgoon[4] TRUE SET_CHAR_HEADING padgoon[5] 222.9582 a = 0 WHILE a < 5 GIVE_WEAPON_TO_CHAR padgoon[a] WEAPONTYPE_PISTOL 9999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER padgoon[a] TRUE SET_CHAR_RELATIONSHIP padgoon[a] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_IS_TARGET_PRIORITY padgoon[a] TRUE ++ a ENDWHILE GIVE_WEAPON_TO_CHAR padgoon[5] WEAPONTYPE_ROCKETLAUNCHER 9999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER padgoon[5] TRUE SET_CHAR_RELATIONSHIP padgoon[5] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_IS_TARGET_PRIORITY padgoon[5] TRUE SET_CHAR_DROPS_WEAPONS_WHEN_DEAD padgoon[5] FALSE TASK_STAY_IN_SAME_PLACE padgoon[5] TRUE SET_CHAR_ACCURACY padgoon[5] 100 SET_CHAR_SHOOT_RATE padgoon[5] 50 SET_CHAR_WEAPON_SKILL padgoon[5] WEAPONSKILL_POOR CREATE_PICKUP_WITH_AMMO ROCKETLA PICKUP_ONCE 60 -1688.8604 695.3077 30.3452 rocket_pickup //rocketX rocketY rocketZ rocket_pickup CREATE_PICKUP_WITH_AMMO AK47 PICKUP_ONCE 120 -1683.4968 716.2739 30.6452 ak_pickup LVAR_INT syn6_dummychopper syn6_helicrate syn6_crate1 syn6_crate2 CREATE_CAR MAVERICK -1680.5024 705.6951 29.6065 syn6_dummychopper SET_HELI_BLADES_FULL_SPEED syn6_dummychopper SET_CAR_HEADING syn6_dummychopper 90.0 OPEN_CAR_DOOR syn6_dummychopper REAR_RIGHT_DOOR OPEN_CAR_DOOR syn6_dummychopper REAR_LEFT_DOOR // Testing! SET_CAR_PROOFS syn6_dummychopper TRUE TRUE TRUE TRUE TRUE CHANGE_CAR_COLOUR syn6_dummychopper 10 125 //SET_OBJECT_DYNAMIC syn6_crate2 FALSE // SET_OBJECT_ROTATION he1_hintbox2 0.0 0.0 229.0 // // CREATE_OBJECT cardboardbox 379.4728 164.5040 1019.6091 he1_hintbox3 // SET_OBJECT_ROTATION he1_hintbox3 0.0 0.0 123.762 LVAR_INT enemie_bike CREATE_CAR FCR900 -1705.1984 682.3814 23.8906 enemie_bike MARK_MODEL_AS_NO_LONGER_NEEDED FCR900 SET_CAR_HEADING enemie_bike 181.5462 SET_CAN_BURST_CAR_TYRES enemie_bike FALSE LVAR_INT toreno_van toreno_vandriver CREATE_CAR PONY -1665.8002 682.1571 13.8891 toreno_van SET_CAR_HEADING toreno_van 214.5462 CHANGE_CAR_COLOUR toreno_van 7 1 OPEN_CAR_DOOR toreno_van REAR_LEFT_DOOR //CREATE_CHAR_INSIDE_CAR toreno_van PEDTYPE_CIVMALE WBDYG1 toreno_vandriver //LOCK_CAR_DOORS toreno_van CARLOCK_LOCKED MARK_MODEL_AS_NO_LONGER_NEEDED PONY //TASK_DRIVE_BY sweet sw7_kane -1 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 90 LVAR_INT mission_flag mission_flag = -1 LVAR_INT created_goons_at_farm rocket_blip rocket_pickup ak_pickup spawn_rocketflag LVAR_FLOAT rocketx rockety rocketz LVAR_FLOAT playerx playery playerz created_goons_at_farm = 0 spawn_rocketflag = 0 LVAR_INT kill_now_flag rocket_fired kill_now_flag = 0 rocket_fired = 0 LVAR_INT v m e a v = 0 m = 0 e = 0 a = 0 LVAR_INT syn6_ctskip_needed syn6_ctskip_needed = 0 LVAR_INT speed_selected speed_selected = 0 LVAR_INT pauseswap pauseswap = 0 LVAR_INT warningswap warningswap = 0 LVAR_INT fix_pb fix_pb = 0 LVAR_INT syn6_timer syn6_timer = 0 LVAR_INT syn6_phonecut syn6_phonecut = 0 LVAR_INT syn6_phoneskip syn6_phoneskip = 0 LVAR_INT syn6_phonecutskip syn6_phonecutskip = 0 LVAR_INT task0_status task1_status LVAR_INT syn6_camerashake syn6_camerashake = 0 LVAR_INT syn6_anycar syn6_isincar syn6_weird syn6_weird = 0 syn6_isincar = 0 LVAR_INT shooterdead[3] shooterdead[0] = 0 shooterdead[1] = 0 LVAR_FLOAT syn6_explosionx syn6_explosiony syn6_explosionz //Dialogue and audio variables LVAR_INT syn6_dialogue syn6_audio_char LVAR_INT syn6_text_timer_diff syn6_text_timer_end syn6_text_timer_start LVAR_TEXT_LABEL syn6_text[12] LVAR_INT syn6_audio[12] syn6_audio_slot syn6_alt_slot syn6_counter syn6_ahead_counter syn6_audio_playing syn6_audio_underway LVAR_INT syn6_convo_underway syn6_convo_counter syn6_random //syn6_leftcar_counter syn6_backcar_counter syn6_ganghire_counter //LVAR_INT syn6_driveby_counter syn6_cut_counter // ---- Dialogue Flags syn6_audio_slot = 1 syn6_alt_slot = 2 syn6_counter = 0 syn6_ahead_counter = 1 syn6_audio_playing = 0 syn6_audio_underway = 0 //Dialogue text $syn6_text[1] = MWUZ01A//Carl $syn6_text[2] = MWUZ01B//Hey man. What's going on? $syn6_text[3] = MWUZ01C//My man found that van you were looking for, by the helipad downtown. $syn6_text[4] = MWUZ01D//And Toreno? $syn6_text[5] = MWUZ01E//Yeah, he's there, $syn6_text[6] = MWUZ01F//looks like he's about to take some merchandise and dip out by helicopter. $syn6_text[7] = MWUZ01G// They've already started loading boxes. $syn6_text[8] = MWUZ01H//Something about Toreno doesn't add up. $syn6_text[9] = MWUZ01J//I'm going to go and check out this helipad. $syn6_text[10] = MWUZ01K//Call me if you hear anything. //Dialogue audio $syn6_audio[1] = SOUND_MWUZ01A//Carl $syn6_audio[2] = SOUND_MWUZ01B//Hey man. What's going on? $syn6_audio[3] = SOUND_MWUZ01C//My man found that van you were looking for, by the helipad downtown. $syn6_audio[4] = SOUND_MWUZ01D//And Toreno? $syn6_audio[5] = SOUND_MWUZ01E//Yeah, he's there, $syn6_audio[6] = SOUND_MWUZ01F//looks like he's about to take some merchandise and dip out by helicopter. $syn6_audio[7] = SOUND_MWUZ01G// They've already started loading boxes. $syn6_audio[8] = SOUND_MWUZ01H//Something about Toreno doesn't add up. $syn6_audio[9] = SOUND_MWUZ01J//I'm going to go and check out this helipad. $syn6_audio[10] = SOUND_MWUZ01K//Call me if you hear anything. LOAD_MISSION_AUDIO 3 SOUND_PED_MOBRING timera = 0 SWITCH_WIDESCREEN ON SET_CHAR_COORDINATES scplayer -2030.2500 148.8279 27.8359 SET_CHAR_HEADING scplayer 350.0 SET_FIXED_CAMERA_POSITION -2024.2136 147.8178 28.9808 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2025.1592 148.1366 29.0460 JUMP_CUT HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE LOAD_SCENE_IN_DIRECTION -2024.1370 149.9411 27.8359 348.3137 WAIT 0 DO_FADE 2500 FADE_IN LOAD_SCENE_IN_DIRECTION -2024.1370 149.9411 27.8359 348.3137 WAIT 0 TASK_GO_STRAIGHT_TO_COORD scplayer -2026.6746 148.8807 27.8359 PEDMOVE_WALK -2 WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF HAS_MISSION_AUDIO_LOADED 3 //write_debug pish PLAY_MISSION_AUDIO 3 ENDIF //LOAD_SCENE_IN_DIRECTION -2024.1370 149.9411 27.8359 348.3137 WAIT 0 //TASK_USE_MOBILE_PHONE scplayer TRUE timera = 0 //PRINT_NOW MWUZ01A 3000 1 syn6_phonecut = 4 syn6_phoneskip = 0 syn6_phonecutskip = 1 // ************************************* MISSION LOOP ************************************** mission_syn6_loop: WAIT 0 // ---- Load & Play Dialogue... IF NOT syn6_counter = 0 IF syn6_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED syn6_alt_slot CLEAR_MISSION_AUDIO syn6_alt_slot ENDIF syn6_audio_playing = 1 syn6_audio_underway = 1 ENDIF IF syn6_audio_playing = 1 LOAD_MISSION_AUDIO syn6_audio_slot syn6_audio[syn6_counter] //GOSUB syn6_dialogue_pos //ATTACH_MISSION_AUDIO_TO_PED syn6_audio_slot syn6_audio_char syn6_audio_playing = 2 ENDIF IF syn6_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED syn6_audio_slot PLAY_MISSION_AUDIO syn6_audio_slot PRINT_NOW $syn6_text[syn6_counter] 10000 1 syn6_audio_playing = 3 ENDIF ENDIF IF syn6_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED syn6_audio_slot CLEAR_THIS_PRINT $syn6_text[syn6_counter] IF syn6_audio_slot = 1 syn6_audio_slot = 2 syn6_alt_slot = 1 ELSE syn6_audio_slot = 1 syn6_alt_slot = 2 ENDIF syn6_counter = 0 syn6_audio_playing = 0 syn6_audio_underway = 0 // okay to cue up next piece of convo text ELSE IF NOT HAS_MISSION_AUDIO_LOADED syn6_alt_slot IF syn6_counter < 10 syn6_ahead_counter = syn6_counter + 1 LOAD_MISSION_AUDIO syn6_alt_slot syn6_audio[syn6_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF // End of dialogue loader / player IF syn6_camerashake = 1 SHAKE_CAM 20 // SHAKE_PAD PAD1 1000 256 ENDIF IF NOT syn6_phonecut = -13 IF syn6_phonecut > 4 IF syn6_phoneskip = 1 IF IS_BUTTON_PRESSED PAD1 TRIANGLE WHILE IS_BUTTON_PRESSED PAD1 TRIANGLE WAIT 0 ENDWHILE syn6_phonecut = 100 ENDIF ENDIF IF syn6_phonecutskip = 1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED WAIT 0 syn6_phonecut = 10 ENDIF ENDIF ENDIF IF syn6_phonecut = 4 IF timera > 1000 CLEAR_CHAR_TASKS scplayer TASK_USE_MOBILE_PHONE scplayer TRUE syn6_phonecut = 5 ENDIF ENDIF //IF syn6_audio_underway = 0 IF syn6_phonecut = 5 // CLEAR_MISSION_AUDIO 3 IF timera > 5000 //PRINT_NOW MWUZ01A 2500 1 // LOAD_SCENE_IN_DIRECTION -2024.1370 149.9411 27.8359 348.3137 syn6_counter = 1 timera = 0 syn6_phonecut = 7 ENDIF ENDIF IF syn6_phonecut = 7 IF timera > 2500 syn6_phonecut = 10 timera = 0 ENDIF ENDIF IF syn6_phonecut = 10 //IF syn6_audio_underway = 0 // HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE syn6_phonecutskip = 0 SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //syn6_counter = 2 syn6_phonecut = 15 //CLEAR_PRINTS //PRINT_NOW MWUZ01B 2000 1 syn6_phoneskip = 1 timera = 0 //ENDIF ENDIF IF syn6_phonecut > 10 IF syn6_audio_underway = 0 SWITCH syn6_phonecut CASE 15 syn6_counter = 2 syn6_phonecut = 20 BREAK CASE 20 syn6_counter = 3 syn6_phonecut = 30 BREAK CASE 30 syn6_counter = 4 syn6_phonecut = 40 BREAK CASE 40 syn6_counter = 5 syn6_phonecut = 50 BREAK CASE 50 syn6_counter = 6 syn6_phonecut = 60 BREAK CASE 60 syn6_counter = 7 syn6_phonecut = 70 BREAK CASE 70 syn6_counter = 8 // syn6_phonecut = 80 syn6_phonecut = 90 BREAK CASE 80 syn6_counter = 9 syn6_phonecut = 90 BREAK CASE 90 syn6_counter = 10 syn6_phonecut = 100 BREAK CASE 100 syn6_counter = 0 // CLEAR_CHAR_TASKS scplayer TASK_USE_MOBILE_PHONE scplayer FALSE MARK_MODEL_AS_NO_LONGER_NEEDED cellphone HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE PRINT_NOW SYN6_01 6000 1 syn6_phonecut = 110 // finish convo BREAK ENDSWITCH // syn6_audio_underway = 1 ENDIF ENDIF // IF syn6_phonecut = 20 // IF timera > 3500 // CLEAR_PRINTS // PRINT_NOW MWUZ01C 2700 1 // syn6_phonecut = 30 // timera = 0 // ENDIF // ENDIF // // // IF syn6_phonecut = 30 // IF timera > 3500 // CLEAR_PRINTS // PRINT_NOW MWUZ01D 2700 1 // syn6_phonecut = 40 // timera = 0 // ENDIF // ENDIF // // // IF syn6_phonecut = 40 // IF timera > 3500 // CLEAR_PRINTS // PRINT_NOW MWUZ01E 2700 1 // syn6_phonecut = 50 // timera = 0 // ENDIF // ENDIF // // IF syn6_phonecut = 50 // IF timera > 3500 // CLEAR_PRINTS // PRINT_NOW MWUZ01F 3000 1 // syn6_phonecut = 60 // timera = 0 // ENDIF // ENDIF // // IF syn6_phonecut = 60 // IF timera > 3700 // CLEAR_PRINTS // PRINT_NOW MWUZ01G 2700 1 // syn6_phonecut = 70 // timera = 0 // ENDIF // ENDIF // // // IF syn6_phonecut = 70 // IF timera > 3500 // CLEAR_PRINTS // PRINT_NOW MWUZ01H 2700 1 // syn6_phonecut = 80 // timera = 0 // ENDIF // ENDIF // // // IF syn6_phonecut = 80 // IF timera > 3500 // CLEAR_PRINTS // PRINT_NOW MWUZ01J 2700 1 // syn6_phonecut = 90 // timera = 0 // ENDIF // ENDIF // // // IF syn6_phonecut = 90 // IF timera > 3500 // CLEAR_PRINTS // PRINT_NOW MWUZ01K 2700 1 // syn6_phonecut = 100 // timera = 0 // ENDIF // ENDIF // // IF syn6_phonecut = 100 // IF timera > 3000 // syn6_phonecut = 110 // ENDIF // // ENDIF // ENDIF // syn6_phonecut = -13 // // // //IF syn6_phonecut = 1 // SWITCH_WIDESCREEN ON // SET_PLAYER_CONTROL player1 OFF //ENDIF IF syn6_phonecut = 110 //CLEAR_PRINTS CLEAR_CHAR_TASKS scplayer HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE // PRINT_NOW SYN6_01 10000 1//Go and kill Toreno. ADD_BLIP_FOR_COORD -1680.3770 705.4620 30.2209 mission_blip syn6_phonecut = -13 syn6_phoneskip = 0 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_syn6_passed ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_p ALTER_WANTED_LEVEL Player1 2 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_o ALTER_WANTED_LEVEL Player1 0 ENDIF GET_GAME_TIMER game_timer IF NOT IS_PLAYER_PLAYING player1 GOTO mission_syn6_failed ENDIF IF syn6_ctskip_needed = 1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED mission_flag = 6 syn6_ctskip_needed = 0 // Don't want to read PS2 joypad anymore ENDIF ENDIF IF mission_flag = -99 CREATE_CAR MAVERICK -1680.5024 705.6951 29.6065 toreno_plane ENDIF IF mission_flag = -1 IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_w CLEAR_AREA -1704.3240 637.5129 23.8959 0.5 0 LOAD_SCENE -1704.3240 637.5129 23.8959 SET_CHAR_COORDINATES scplayer -1704.3240 637.5129 23.8959 SET_CHAR_HEADING scplayer 0.0 SET_CAMERA_BEHIND_PLAYER ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1699.9908 686.4141 20.0 60.0 60.0 80.0 0 syn6_phonecut = -13 CLEAR_CHAR_TASKS scplayer // PRINT_NOW SYN6_02 10000 1//That is Toreno's men up ahead, kill them. REMOVE_BLIP mission_blip //ADD_BLIP_FOR_CHAR padgoon[5] rocket_blip //CHANGE_BLIP_COLOUR rocket_blip GREEN //CREATE_PICKUP_WITH_AMMO ROCKETLA PICKUP_ONCE 60 -1689.6283 691.6729 30.3452 rocket_pickup //rocketX rocketY rocketZ rocket_pickup ADD_BLIP_FOR_PICKUP rocket_pickup rocket_blip CHANGE_BLIP_COLOUR rocket_blip GREEN kill_now_flag = 1 ++ mission_flag ENDIF IF mission_flag = -1 IF DOES_CHAR_EXIST padgoon[0] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR padgoon[0] scplayer syn6_phonecut = -13 CLEAR_CHAR_TASKS scplayer // PRINT_NOW SYN6_02 10000 1//That is Toreno's men up ahead, kill them. REMOVE_BLIP mission_blip ADD_BLIP_FOR_PICKUP rocket_pickup rocket_blip CHANGE_BLIP_COLOUR rocket_blip GREEN kill_now_flag = 1 ++ mission_flag ENDIF ENDIF ENDIF IF mission_flag = -1 IF DOES_CHAR_EXIST padgoon[1] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR padgoon[1] scplayer syn6_phonecut = -13 CLEAR_CHAR_TASKS scplayer // PRINT_NOW SYN6_02 10000 1//That is Toreno's men up ahead, kill them. REMOVE_BLIP mission_blip ADD_BLIP_FOR_PICKUP rocket_pickup rocket_blip CHANGE_BLIP_COLOUR rocket_blip GREEN kill_now_flag = 1 ++ mission_flag ENDIF ENDIF ENDIF IF mission_flag = -1 IF DOES_CHAR_EXIST padgoon[2] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR padgoon[2] scplayer syn6_phonecut = -13 CLEAR_CHAR_TASKS scplayer // PRINT_NOW SYN6_02 10000 1//That is Toreno's men up ahead, kill them. REMOVE_BLIP mission_blip ADD_BLIP_FOR_PICKUP rocket_pickup rocket_blip CHANGE_BLIP_COLOUR rocket_blip GREEN kill_now_flag = 1 ++ mission_flag ENDIF ENDIF ENDIF IF mission_flag = -1 IF DOES_CHAR_EXIST padgoon[3] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR padgoon[3] scplayer syn6_phonecut = -13 CLEAR_CHAR_TASKS scplayer // PRINT_NOW SYN6_02 10000 1//That is Toreno's men up ahead, kill them. REMOVE_BLIP mission_blip ADD_BLIP_FOR_PICKUP rocket_pickup rocket_blip CHANGE_BLIP_COLOUR rocket_blip GREEN kill_now_flag = 1 ++ mission_flag ENDIF ENDIF ENDIF IF mission_flag = -1 IF DOES_CHAR_EXIST padgoon[4] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR padgoon[4] scplayer syn6_phonecut = -13 CLEAR_CHAR_TASKS scplayer // PRINT_NOW SYN6_02 10000 1//That is Toreno's men up ahead, kill them. REMOVE_BLIP mission_blip ADD_BLIP_FOR_PICKUP rocket_pickup rocket_blip CHANGE_BLIP_COLOUR rocket_blip GREEN kill_now_flag = 1 ++ mission_flag ENDIF ENDIF ENDIF IF mission_flag = -1 IF DOES_CHAR_EXIST padgoon[5] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR padgoon[5] scplayer syn6_phonecut = -13 CLEAR_CHAR_TASKS scplayer // PRINT_NOW SYN6_02 10000 1//That is Toreno's men up ahead, kill them. REMOVE_BLIP mission_blip ADD_BLIP_FOR_PICKUP rocket_pickup rocket_blip CHANGE_BLIP_COLOUR rocket_blip GREEN kill_now_flag = 1 ++ mission_flag ENDIF ENDIF ENDIF ENDIF /* IF mission_flag < 1 m = 0 WHILE m < 5 IF NOT IS_CHAR_DEAD padgoon[m] IF HAS_CHAR_SPOTTED_CHAR padgoon[m] scplayer OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1699.9908 686.4141 20.0 40.0 40.0 40.0 0 OR IS_PLAYER_TARGETTING_CHAR player1 padgoon[m] OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON padgoon[m] WEAPONTYPE_ANYWEAPON OR kill_now_flag = 1 GET_SCRIPT_TASK_STATUS padgoon[m] TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT padgoon[m] scplayer ENDIF kill_now_flag = 1 ENDIF ELSE kill_now_flag = 1 MARK_CHAR_AS_NO_LONGER_NEEDED padgoon[m] //REMOVE_BLIP enemie_blip[m] ENDIF ++ m ENDWHILE ENDIF */ IF kill_now_flag = 1 IF rocket_fired = 0 IF NOT IS_CHAR_DEAD padgoon[5] CLEAR_CHAR_TASKS padgoon[5] GET_CHAR_COORDINATES scplayer playerx playery playerz playerx = playerx + 5.0 playery = playery + 5.0 playerz = playerz + 15.0 CLEAR_CHAR_TASKS padgoon[5] TASK_SHOOT_AT_COORD padgoon[5] playerx playery playerz -1 rocket_fired = 1 timerb = 0 // IF NOT IS_CHAR_DEAD toreno_vandriver // IF NOT IS_CAR_DEAD toreno_van // TASK_CAR_DRIVE_WANDER toreno_vandriver toreno_van 30.0 DRIVINGMODE_AVOIDCARS // ENDIF //ENDIF // WRITE_DEBUG rocketsegment // WRITE_DEBUG_WITH_INT rf rocket_fired ENDIF ENDIF IF NOT IS_CHAR_DEAD padgoon[0] CLEAR_CHAR_TASKS padgoon[0] TASK_KILL_CHAR_ON_FOOT padgoon[0] scplayer ENDIF IF NOT IS_CHAR_DEAD padgoon[1] CLEAR_CHAR_TASKS padgoon[1] TASK_KILL_CHAR_ON_FOOT padgoon[1] scplayer ENDIF IF NOT IS_CHAR_DEAD padgoon[2] CLEAR_CHAR_TASKS padgoon[2] TASK_KILL_CHAR_ON_FOOT padgoon[2] scplayer ENDIF // IF NOT IS_CHAR_DEAD padgoon[3] // CLEAR_CHAR_TASKS padgoon[3] // TASK_KILL_CHAR_ON_FOOT padgoon[3] scplayer // ENDIF IF NOT IS_CHAR_DEAD padgoon[4] CLEAR_CHAR_TASKS padgoon[4] TASK_KILL_CHAR_ON_FOOT padgoon[4] scplayer ENDIF kill_now_flag = 2 ENDIF IF rocket_fired = 1 IF timerb > 4000 IF NOT IS_CHAR_DEAD padgoon[5] CLEAR_CHAR_TASKS padgoon[5] //rocket_fired = 2 rocket_fired = 99 timerb = 0 GIVE_WEAPON_TO_CHAR padgoon[5] WEAPONTYPE_PISTOL 9999 ENDIF ENDIF ENDIF IF rocket_fired = 2 IF timerb > 6000 rocket_fired = 0 ENDIF ENDIF IF spawn_rocketflag = 0 // Keep in, in case it has to change back. //IF IS_CHAR_DEAD padgoon[3] //REMOVE_BLIP rocket_blip //GET_DEAD_CHAR_PICKUP_COORDS padgoon[3] rocketX rocketY rocketZ //CREATE_PICKUP_WITH_AMMO ROCKETLA PICKUP_ONCE 60 -1689.6283 691.6729 30.3452 rocket_pickup //rocketX rocketY rocketZ rocket_pickup //IF IS_ANY_PICKUP_AT_COORDS rocketX rocketY rocketZ // ADD_BLIP_FOR_PICKUP rocket_pickup rocket_blip // CHANGE_BLIP_COLOUR rocket_blip GREEN //ENDIF spawn_rocketflag = 1 //ENDIF ENDIF IF spawn_rocketflag < 2 IF mission_flag > 4 IF pauseswap = 0 IF NOT IS_CAR_DEAD toreno_plane IF NOT LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer toreno_plane 250.0 250.0 100.0 0 PAUSE_PLAYBACK_RECORDED_CAR toreno_plane pauseswap = 1 ENDIF ENDIF ENDIF IF pauseswap = 1 IF NOT IS_CAR_DEAD toreno_plane IF LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer toreno_plane 250.0 250.0 100.0 0 UNPAUSE_PLAYBACK_RECORDED_CAR toreno_plane pauseswap = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF spawn_rocketflag = 1 IF HAS_PICKUP_BEEN_COLLECTED rocket_pickup //IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_ROCKETLAUNCHER //WRITE_DEBUG bliptest CLEAR_PRINTS //PRINT_NOW SYN6_11 6000 1 PRINT_NOW SYN6_20 6000 1 REMOVE_BLIP rocket_blip IF NOT IS_CAR_DEAD toreno_plane DISPLAY_RADAR 2 // PATHING OFF // dont path to his heli ADD_BLIP_FOR_CAR toreno_plane mission_blip DISPLAY_ONSCREEN_COUNTER_WITH_STRING health_counter COUNTER_DISPLAY_BAR SYN6_05 UNPAUSE_PLAYBACK_RECORDED_CAR toreno_plane ENDIF spawn_rocketflag = 2 //PRINT SYN6_11 6000 1 //ENDIF ENDIF //IF syn6_weird = 1 // IF syn6_isincar = 1 // May have check here! ENDIF IF spawn_rocketflag = 2 ENDIF IF mission_flag = 0 // IF mission_flag = 0 // IF IS_CHAR_DEAD padgoon[0] // IF IS_CHAR_DEAD padgoon[1] // IF IS_CHAR_DEAD padgoon[2] // IF IS_CHAR_DEAD padgoon[3] // SET_FADING_COLOUR 1 0 0 // //DO_FADE 500 FADE_OUT // ++ mission_flag // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF IF mission_flag = 0 IF IS_CHAR_IN_ANGLED_AREA_3D scplayer -1695.6678 693.7705 29.5938 -1665.8649 693.7705 59.5943 28.0 FALSE IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer syn6_anycar syn6_isincar = 1 //SET_PLAYER_CONTROL player1 OFF //SET_EVERYONE_IGNORE_PLAYER player1 TRUE //SET_FADING_COLOUR 1 0 0 // DO_FADE 500 FADE_OUT ENDIF syn6_weird = 1 ++ mission_flag ENDIF ENDIF IF mission_flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1683.8203 686.5125 23.9687 2.0 2.0 2.0 FALSE //SET_PLAYER_CONTROL player1 OFF //SET_EVERYONE_IGNORE_PLAYER player1 TRUE //SET_FADING_COLOUR 1 0 0 // DO_FADE 500 FADE_OUT ++ mission_flag ENDIF ENDIF // new bug fix IF mission_flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1683.7972 692.3915 27.5860 5.0 5.0 2.0 FALSE //SET_PLAYER_CONTROL player1 OFF //SET_EVERYONE_IGNORE_PLAYER player1 TRUE //SET_FADING_COLOUR 1 0 0 // DO_FADE 500 FADE_OUT ++ mission_flag ENDIF ENDIF ENDIF IF mission_flag > 1 IF created_goons_at_farm = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -1448.0062 -1533.0359 200.0 200.00 0 //MARK_CAR_AS_NO_LONGER_NEEDED enemie_bike //MARK_CHAR_AS_NO_LONGER_NEEDED enemie[0] //MARK_CHAR_AS_NO_LONGER_NEEDED enemie[1] //MARK_CHAR_AS_NO_LONGER_NEEDED enemie[2] //MARK_CHAR_AS_NO_LONGER_NEEDED enemie[3] CREATE_CHAR PEDTYPE_CIVMALE WBDYG1 -1450.2561 -1543.0123 100.7579 enemie[0] CREATE_CHAR PEDTYPE_CIVMALE WBDYG1 -1422.8545 -1542.1029 100.7514 enemie[1] CREATE_CHAR PEDTYPE_CIVMALE WBDYG1 -1431.0964 -1506.9623 100.7262 enemie[2] CREATE_CHAR PEDTYPE_CIVMALE WBDYG1 -1448.4773 -1511.9182 100.7579 enemie[3] //CREATE_CHAR PEDTYPE_MISSION1 WBDYG1 -1444.2607 -1499.3761 100.7501 enemie[4] //CREATE_CHAR PEDTYPE_MISSION1 WBDYG1 -1443.4293 -1501.7506 100.7501 enemie[5] SET_CHAR_HEADING enemie[0] 269.8948 SET_CHAR_HEADING enemie[1] 26.8258 SET_CHAR_HEADING enemie[2] 223.7033 SET_CHAR_HEADING enemie[3] 266.9233 // SET_CHAR_HEADING enemie[4] 272.0418 // SET_CHAR_HEADING enemie[5] 285.0045 a = 0 WHILE a < 4 GIVE_WEAPON_TO_CHAR enemie[a] WEAPONTYPE_PISTOL 9999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER enemie[a] TRUE SET_CHAR_RELATIONSHIP enemie[a] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_IS_TARGET_PRIORITY enemie[a] TRUE ++ a ENDWHILE //LVAR_INT vehicle //CREATE_CAR colt45 -1439.0107 -1498.6058 100.7445 vehicle //SET_CAR_HEADING vehicle 63.3532 // WRITE_DEBUG created ++ created_goons_at_farm ENDIF //Collision shit in here! ENDIF ENDIF IF mission_flag = 1 IF HAS_CAR_RECORDING_BEEN_LOADED 110 IF NOT GET_FADING_STATUS CLEAR_THIS_PRINT SYN6_02 DELETE_CAR syn6_dummychopper LVAR_INT toreno_plane CREATE_CAR MAVERICK -1680.5024 705.6951 29.6065 toreno_plane SET_HELI_BLADES_FULL_SPEED toreno_plane CHANGE_CAR_COLOUR toreno_plane 10 125 CREATE_OBJECT cardboardbox2 -1680.9305 705.7776 30.6065 syn6_crate2 SET_OBJECT_COLLISION syn6_crate2 FALSE FREEZE_OBJECT_POSITION syn6_crate2 TRUE SET_OBJECT_COLLISION syn6_crate2 FALSE SET_CAR_HEADING toreno_plane 90.0 LOCK_CAR_DOORS toreno_plane CARLOCK_LOCKOUT_PLAYER_ONLY SET_VEHICLE_CAN_BE_TARGETTED toreno_plane TRUE DISPLAY_RADAR 3 // PATHING ON REMOVE_BLIP mission_blip //ADD_BLIP_FOR_CAR toreno_plane mission_blip SET_CAR_ONLY_DAMAGED_BY_PLAYER toreno_plane TRUE SET_CAR_HEALTH toreno_plane 1500 LVAR_INT maverick_pilot CREATE_CHAR_INSIDE_CAR toreno_plane PEDTYPE_CIVMALE WBDYG1 maverick_pilot SET_CHAR_IS_TARGET_PRIORITY maverick_pilot TRUE LVAR_INT shooter[2] CREATE_CHAR_AS_PASSENGER toreno_plane PEDTYPE_CIVMALE WBDYG1 1 shooter[0] CREATE_CHAR_AS_PASSENGER toreno_plane PEDTYPE_CIVMALE WBDYG1 2 shooter[1] OPEN_CAR_DOOR toreno_plane REAR_RIGHT_DOOR OPEN_CAR_DOOR toreno_plane REAR_LEFT_DOOR // Testing! //OPEN_CAR_DOOR toreno_plane FRONT_LEFT_DOOR //syn6_ctskip_needed = 1 // so we can skip cutscene c = 0 // was 0! Testing driveby WHILE c < 2 SET_CHAR_STAY_IN_SAME_PLACE shooter[c] TRUE GIVE_WEAPON_TO_CHAR shooter[1] WEAPONTYPE_AK47 9999 GIVE_WEAPON_TO_CHAR shooter[0] WEAPONTYPE_desert_eagle 9999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER shooter[c] TRUE SET_CHAR_SUFFERS_CRITICAL_HITS shooter[c] FALSE SET_CHAR_HEALTH shooter[c] 300 SET_CHAR_IS_TARGET_PRIORITY shooter[c] TRUE set_char_health shooter[c] 500 ++ c ENDWHILE // Moved segment IF IS_CHAR_IN_CAR shooter[0] toreno_plane GET_CAR_COORDINATES toreno_plane x y z WARP_CHAR_FROM_CAR_TO_COORD shooter[0] x y z DETACH_CHAR_FROM_CAR shooter[0] SET_CHAR_ALLOWED_TO_DUCK shooter[0] TRUE ATTACH_CHAR_TO_CAR shooter[0] toreno_plane -1.0 -0.3 0.0 FACING_LEFT 180.0 WEAPONTYPE_AK47 //TASK_TOGGLE_DUCK shooter[0] TRUE SET_CHAR_HEADING shooter[0] 200.0 // TASK_TURN_CHAR_TO_FACE_CHAR shooter[0] scplayer ENDIF // Moved IF IS_CHAR_IN_CAR shooter[1] toreno_plane GET_CAR_COORDINATES toreno_plane x y z WARP_CHAR_FROM_CAR_TO_COORD shooter[1] x y z DETACH_CHAR_FROM_CAR shooter[1] SET_CHAR_ALLOWED_TO_DUCK shooter[1] TRUE ATTACH_CHAR_TO_CAR shooter[1] toreno_plane 1.2 -0.3 0.0 FACING_RIGHT 180.0 WEAPONTYPE_AK47 TASK_TURN_CHAR_TO_FACE_CHAR shooter[1] scplayer ENDIF SET_PLAYER_CONTROL player1 OFF // DO_FADE 500 FADE_OUT // WHILE GET_FADING_STATUS // WAIT 0 // ENDWHILE // MAKE_PLAYER_SAFE_FOR_CUTSCENE player1 SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE // SET_FIXED_CAMERA_POSITION -1667.2103 689.8309 30.5514 0.0 0.0 0.0 // Old one. Les approved. // POINT_CAMERA_AT_POINT -1668.0150 690.4207 30.6191 JUMP_CUT // New shit! SET_FIXED_CAMERA_POSITION -1675.1948 699.6955 36.8409 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1675.7728 700.2547 36.2466 JUMP_CUT syn6_camerashake = 1 IF syn6_weird = 0 SET_CHAR_COORDINATES scplayer -1683.8489 692.0139 27.5860 SET_CHAR_HEADING scplayer 304.0 ELSE IF syn6_isincar = 1 IF NOT IS_CAR_DEAD syn6_anycar SET_CAR_COORDINATES syn6_anycar -1667.7699 728.9113 49.8973 SET_CAR_HEADING syn6_anycar 135.4521 FREEZE_CAR_POSITION syn6_anycar TRUE ENDIF ELSE FREEZE_CHAR_POSITION scplayer TRUE ENDIF ENDIF // DO_FADE 500 FADE_IN // WHILE GET_FADING_STATUS // WAIT 0 // ENDWHILE SET_FADING_COLOUR 1 0 0 //DO_FADE 500 FADE_IN START_PLAYBACK_RECORDED_CAR toreno_plane 110 TASK_TOGGLE_DUCK shooter[0] TRUE // testing! TASK_TOGGLE_DUCK shooter[1] TRUE IF NOT IS_CHAR_DEAD padgoon[3] // CLEAR_CHAR_TASKS padgoon[3] //TASK_COWER padgoon[3] //TASK_DUCK padgoon[3] 10000 //WRITE_DEBUG test // TASK_PLAY_ANIM padgoon[3] cower PED 8.0 TRUE FALSE FALSE TRUE -1 ENDIF //START_PLAYBACK_RECORDED_CAR toreno_plane 110 SET_PLAYBACK_SPEED toreno_plane 3.0 // was 4.5 // TASK_DRIVE_BY shooter[0] scplayer -1 0.0 0.0 0.0 80.0 DRIVEBY_FIXED_LHS FALSE 90 ++ mission_flag //syn6_ctskip_needed = 1 // so we can skip cutscene ENDIF ELSE REQUEST_CAR_RECORDING 110 ENDIF ENDIF IF NOT IS_CAR_DEAD toreno_plane IF mission_flag = 2 IF NOT GET_FADING_STATUS //PRINT_NOW SYN6_03 5000 1//They are getting away in a helicopter! ++ mission_flag timerb = 0 //syn6_ctskip_needed = 1 ENDIF ENDIF IF mission_flag = 3 ++ mission_flag ENDIF IF mission_flag = 4 IF timerb > 1100 // Taken out deliberately as it fucks up car recording! //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // // //syn6_ctskip_needed = 1 // // //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! IF NOT IS_CAR_DEAD toreno_plane SET_PLAYBACK_SPEED toreno_plane 0.85 ENDIF ++ mission_flag ENDIF ENDIF IF mission_flag = 5 // new section IF timerb > 3000 DELETE_OBJECT syn6_crate2 syn6_camerashake = 0 SET_FIXED_CAMERA_POSITION -1681.2646 685.2078 30.6465 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1681.2633 686.2019 30.5389 JUMP_CUT ENDIF // end of new section IF timerb > 6500 // was 3000 ++ mission_flag ENDIF ENDIF IF mission_flag = 6 IF NOT GET_FADING_STATUS IF IS_CAR_DEAD enemie_bike MARK_CAR_AS_NO_LONGER_NEEDED enemie_bike CREATE_CAR FCR900 -1705.1984 682.3814 23.8906 enemie_bike SET_CAR_HEADING enemie_bike 181.5462 ELSE IF NOT LOCATE_CAR_2D enemie_bike -1703.9486 690.2634 20.0 20.0 0 MARK_CAR_AS_NO_LONGER_NEEDED enemie_bike CREATE_CAR FCR900 -1705.1984 682.3814 23.8906 enemie_bike SET_CAR_HEADING enemie_bike 181.5462 ENDIF ENDIF syn6_ctskip_needed = 0 // so we can skip cutscene CLEAR_THIS_PRINT SYN6_03 SET_FADING_COLOUR 1 0 0 SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF PRINT_NOW SYN6_03 8000 1 CHECKPOINT_SAVE 99 SET_ALL_CARS_CAN_BE_DAMAGED TRUE IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR toreno_plane START_PLAYBACK_RECORDED_CAR toreno_plane 110 ENDIF //CLEAR_CUTSCENE DELETE_OBJECT syn6_crate2 syn6_camerashake = 0 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON IF syn6_weird = 1 IF syn6_isincar = 1 IF NOT IS_CAR_DEAD syn6_anycar FREEZE_CAR_POSITION syn6_anycar FALSE ENDIF ELSE FREEZE_CHAR_POSITION scplayer FALSE ENDIF ENDIF IF NOT IS_CHAR_DEAD padgoon[5] CLEAR_CHAR_TASKS padgoon[5] TASK_KINDA_STAY_IN_SAME_PLACE padgoon[5] TRUE TASK_KILL_CHAR_ON_FOOT padgoon[5] scplayer ENDIF IF NOT IS_CHAR_DEAD padgoon[3] CLEAR_CHAR_TASKS padgoon[3] TASK_TOGGLE_DUCK padgoon[3] FALSE TASK_KINDA_STAY_IN_SAME_PLACE padgoon[3] TRUE TASK_KILL_CHAR_ON_FOOT padgoon[3] scplayer ENDIF SET_PLAYBACK_SPEED toreno_plane 1.0//0.75 IF syn6_weird = 1 IF syn6_isincar = 1 SET_PLAYBACK_SPEED toreno_plane 1.5 IF NOT IS_CHAR_DEAD shooter[0] GIVE_WEAPON_TO_CHAR shooter[0] WEAPONTYPE_ROCKETLAUNCHER 9999 ENDIF SET_CAR_HEALTH toreno_plane 3000 //Dodgy! ENDIF ENDIF VAR_INT health_counter health_counter = 100 //DISPLAY_ONSCREEN_COUNTER_WITH_STRING health_counter COUNTER_DISPLAY_BAR SYN6_05 mission_timer = game_timer + 5000 mission_flag = 8 // skip bike bit. It's dangerous! ENDIF ENDIF IF mission_flag = 9 // need to put in check for helicopter here and detach guys. IF LOCATE_CAR_3D toreno_plane -1437.0984 -1527.9949 100.7504 10.0 10.0 4.0 FALSE STOP_PLAYBACK_RECORDED_CAR toreno_plane ++ mission_flag ENDIF ENDIF IF mission_flag = 10 IF NOT IS_CAR_DEAD toreno_plane IF LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer toreno_plane 40.0 40.0 40.0 FALSE PRINT_NOW SYN6_07 5000 1 ++ mission_flag IF NOT IS_CHAR_DEAD shooter[0] TASK_TOGGLE_DUCK shooter[0] FALSE DETACH_CHAR_FROM_CAR shooter[0] CLEAR_CHAR_TASKS shooter[0] TASK_KILL_CHAR_ON_FOOT shooter[0] scplayer ENDIF IF NOT IS_CHAR_DEAD shooter[1] TASK_TOGGLE_DUCK shooter[1] FALSE CLEAR_CHAR_TASKS shooter[1] DETACH_CHAR_FROM_CAR shooter[1] TASK_KILL_CHAR_ON_FOOT shooter[1] scplayer ENDIF SET_CAR_CRUISE_SPEED toreno_plane 70.0 HELI_GOTO_COORDS toreno_plane -23.2666 1210.6686 100.3528 70.0 70.0 ENDIF ENDIF ENDIF IF mission_flag = 10 IF NOT IS_CAR_DEAD toreno_plane IF HAS_CAR_BEEN_DAMAGED_BY_CHAR toreno_plane scplayer PRINT_NOW SYN6_07 5000 1 ++ mission_flag IF NOT IS_CHAR_DEAD shooter[0] TASK_TOGGLE_DUCK shooter[0] FALSE DETACH_CHAR_FROM_CAR shooter[0] CLEAR_CHAR_TASKS shooter[0] TASK_KILL_CHAR_ON_FOOT shooter[0] scplayer ENDIF IF NOT IS_CHAR_DEAD shooter[1] TASK_TOGGLE_DUCK shooter[1] FALSE CLEAR_CHAR_TASKS shooter[1] DETACH_CHAR_FROM_CAR shooter[1] TASK_KILL_CHAR_ON_FOOT shooter[1] scplayer ENDIF SET_CAR_CRUISE_SPEED toreno_plane 70.0 HELI_GOTO_COORDS toreno_plane -23.2666 1210.6686 100.3528 70.0 70.0 ENDIF ENDIF ENDIF IF mission_flag = 11 IF NOT IS_CHAR_DEAD enemie[0] CLEAR_CHAR_TASKS enemie[0] SET_CHAR_KEEP_TASK enemie[0] TRUE TASK_KILL_CHAR_ON_FOOT enemie[0] scplayer ENDIF IF NOT IS_CHAR_DEAD enemie[1] CLEAR_CHAR_TASKS enemie[1] SET_CHAR_KEEP_TASK enemie[1] TRUE TASK_KILL_CHAR_ON_FOOT enemie[1] scplayer ENDIF IF NOT IS_CHAR_DEAD enemie[2] CLEAR_CHAR_TASKS enemie[2] SET_CHAR_KEEP_TASK enemie[2] TRUE TASK_KILL_CHAR_ON_FOOT enemie[2] scplayer ENDIF IF NOT IS_CHAR_DEAD enemie[3] CLEAR_CHAR_TASKS enemie[3] SET_CHAR_KEEP_TASK enemie[3] TRUE TASK_KILL_CHAR_ON_FOOT enemie[3] scplayer ENDIF // GOTO mission_syn6_failed ++ mission_flag ENDIF //IF mission_flag = 7 IF mission_flag = 8 // MARK_CAR_AS_NO_LONGER_NEEDED enemie_bike // REMOVE_BLIP bike_blip IF HAS_CAR_RECORDING_BEEN_LOADED 111 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR toreno_plane // IF NOT IS_RECORDING_GOING_ON_FOR_CAR toreno_plane IF mission_flag = 8 START_PLAYBACK_RECORDED_CAR toreno_plane 111 //WRITE_DEBUG_WITH_INT missionflag mission_flag ++ mission_flag //WRITE_DEBUG test ELSE PRINT_NOW SYN6_06 5000 1//You failed to destroy the helicopter! GOTO mission_syn6_failed ENDIF // PRINT_NOW WASTED 5000 1 // START_RECORDING_CAR toreno_plane 111 ENDIF ELSE REQUEST_CAR_RECORDING 111 ENDIF ENDIF ENDIF IF mission_flag > 4 IF NOT IS_CAR_DEAD toreno_plane speed_selected = 0 //keep checking speed GET_CAR_HEALTH toreno_plane health_counter health_counter -= 250 health_counter /= 10 IF health_counter > 100 health_counter = 100 ENDIF IF health_counter < 1 IF syn6_timer = 0 IF NOT mission_flag = 99 STOP_PLAYBACK_RECORDED_CAR toreno_plane //GET_CAR_COORDINATES toreno_plane syn6_explosionX syn6_explosionY syn6_explosionZ //ADD_EXPLOSION_VARIABLE_SHAKE syn6_explosionX syn6_explosionY syn6_explosionZ EXPLOSION_HELI 1.0 MAKE_HELI_COME_CRASHING_DOWN toreno_plane mission_flag = 99 syn6_timer = 1 timera = 0 // IF NOT IS_CHAR_DEAD shooter[0] // DETACH_CHAR_FROM_CAR shooter[0] // ENDIF // IF NOT IS_CHAR_DEAD shooter[1] // DETACH_CHAR_FROM_CAR shooter[1] // ENDIF // syn6_timer = 1 // CLEAR_PRINTS // PRINT_NOW SYN6_09 6000 1 // // GOTO mission_syn6_passed ENDIF ENDIF health_counter = 0 ENDIF IF mission_flag > 7 IF NOT syn6_weird = 1 IF NOT syn6_isincar = 1 IF speed_selected = 0 IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer toreno_plane 100.0 100.0 0 SET_PLAYBACK_SPEED toreno_plane 0.75//0.80//1.0//0.75 // WRITE_DEBUG full speed_selected = 1 ENDIF ENDIF IF speed_selected = 0 // if player is within 100 metres we don't want to check again as he would be within 175 too IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer toreno_plane 200.0 200.0 0 SET_PLAYBACK_SPEED toreno_plane 0.5//0.6//0.75 // write_debug twohthirds speed_selected = 1 ELSE SET_PLAYBACK_SPEED toreno_plane 0.3//0.50 // write_debug half speed_selected = 1 // player not within 100 ergot not 200 metres ENDIF ENDIF ENDIF ENDIF ENDIF IF mission_flag < 10 IF warningswap = 0 IF NOT IS_CAR_DEAD toreno_plane IF NOT LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer toreno_plane 560.0 560.0 500.0 0 CLEAR_PRINTS PRINT_NOW SYN6_12 6000 1 warningswap = 1 ENDIF ENDIF ENDIF IF warningswap = 1 IF NOT IS_CAR_DEAD toreno_plane IF LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer toreno_plane 400.0 400.0 400.0 0 CLEAR_PRINTS PRINT_NOW SYN6_13 6000 1 warningswap = 0 ENDIF ENDIF ENDIF IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer toreno_plane 700.0 700.0 0 CLEAR_PRINTS PRINT_NOW SYN6_08 6000 1 GOTO mission_syn6_failed ENDIF ENDIF IF mission_flag > 10 IF NOT mission_flag = 99 IF NOT LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer toreno_plane 100.0 100.0 50.0 0 CLEAR_PRINTS PRINT_NOW SYN6_10 6000 1 GOTO mission_syn6_failed ENDIF ENDIF ENDIF ELSE // Copter dead! This bit keeps getting rechecked! // IF NOT IS_CHAR_DEAD shooter[0] // DETACH_CHAR_FROM_CAR shooter[0] // ENDIF // IF NOT IS_CHAR_DEAD shooter[1] // DETACH_CHAR_FROM_CAR shooter[1] // ENDIF CLEAR_PRINTS //Check tomorrow for heli crashing down! //GOTO mission_syn6_passed IF syn6_timer = 0 mission_flag = 99 STOP_PLAYBACK_RECORDED_CAR toreno_plane //GET_CAR_COORDINATES toreno_plane syn6_explosionX syn6_explosionY syn6_explosionZ //ADD_EXPLOSION_VARIABLE_SHAKE syn6_explosionX syn6_explosionY syn6_explosionZ EXPLOSION_HELI 1.0 MAKE_HELI_COME_CRASHING_DOWN toreno_plane syn6_timer = 1 TIMERA = 0 ENDIF ENDIF IF mission_flag < 10 c = 0 WHILE c < 2 IF NOT IS_CHAR_DEAD shooter[c] GET_CHAR_HEALTH shooter[c] temp_int2 // New section IF shooterdead[c] = 0 IF temp_int2 < 50 TASK_TOGGLE_DUCK shooter[c] FALSE shooterdead[c] = 1 DETACH_CHAR_FROM_CAR shooter[c] ENDIF ENDIF //Reinstate section below if fix turns out to be problematic /* IF temp_int2 < 300 temp_int = 300 - temp_int2 GET_CAR_HEALTH toreno_plane r r -= temp_int IF r > 0 SET_CAR_HEALTH toreno_plane r SET_CHAR_HEALTH shooter[c] 300 ENDIF ENDIF */ IF mission_flag > 6 IF NOT IS_CHAR_DEAD shooter[1] GET_SCRIPT_TASK_STATUS shooter[1] TASK_KILL_CHAR_ON_FOOT_TIMED task1_status //GET_SCRIPT_TASK_STATUS shooter[c] TASK_KILL_CHAR_ON_FOOT_TIMED task_status IF task1_status = FINISHED_TASK IF LOCATE_CHAR_ANY_MEANS_CHAR_2D shooter[1] scplayer 60.0 60.0 0 SET_CURRENT_CHAR_WEAPON shooter[1] WEAPONTYPE_AK47 //TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING shooter[c] scplayer 5 300000 100 TASK_KILL_CHAR_ON_FOOT_TIMED shooter[1] scplayer 4000 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD shooter[0] // GET_SCRIPT_TASK_STATUS shooter[0] TASK_DRIVE_BY task0_status GET_SCRIPT_TASK_STATUS shooter[0] TASK_KILL_CHAR_ON_FOOT_TIMED task0_status IF task0_status = FINISHED_TASK IF syn6_weird = 1 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D shooter[0] scplayer 160.0 160.0 0 // WRITE_DEBUG weir IF NOT syn6_weird = 1 SET_CURRENT_CHAR_WEAPON shooter[0] WEAPONTYPE_desert_eagle ENDIF IF syn6_weird = 1 SET_CURRENT_CHAR_WEAPON shooter[0] WEAPONTYPE_AK47 SET_CHAR_ACCURACY shooter[0] 100 ENDIF //SET_CURRENT_CHAR_WEAPON shooter[0] WEAPONTYPE_AK47 //TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING shooter[c] scplayer 5 300000 100 // TASK_DRIVE_BY shooter[0] scplayer -1 0.0 0.0 0.0 80.0 DRIVEBY_FIXED_LHS FALSE 90 TASK_KILL_CHAR_ON_FOOT_TIMED shooter[0] scplayer 4000 ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_2D shooter[0] scplayer 60.0 60.0 0 // WRITE_DEBUG norm IF NOT syn6_weird = 1 SET_CURRENT_CHAR_WEAPON shooter[0] WEAPONTYPE_desert_eagle ENDIF IF syn6_weird = 1 SET_CURRENT_CHAR_WEAPON shooter[0] WEAPONTYPE_AK47 ENDIF //SET_CURRENT_CHAR_WEAPON shooter[0] WEAPONTYPE_AK47 //TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING shooter[c] scplayer 5 300000 100 // TASK_DRIVE_BY shooter[0] scplayer -1 0.0 0.0 0.0 80.0 DRIVEBY_FIXED_LHS FALSE 90 TASK_KILL_CHAR_ON_FOOT_TIMED shooter[0] scplayer 4000 ENDIF ENDIF ENDIF ENDIF ENDIF ELSE //TASK_TOGGLE_DUCK shooter[c] FALSE DETACH_CHAR_FROM_CAR shooter[c] ENDIF ++ c ENDWHILE ENDIF ENDIF IF syn6_timer = 1 // IF NOT IS_CAR_DEAD toreno_plane // ATTACH_CAMERA_TO_VEHICLE_LOOK_AT_VEHICLE toreno_plane 0.0 0.0 5.0 bike_truck 0.0 JUMP_CUT // ENDIF IF timera > 5000 IF NOT IS_CHAR_DEAD shooter[0] TASK_TOGGLE_DUCK shooter[0] FALSE DETACH_CHAR_FROM_CAR shooter[0] ENDIF IF NOT IS_CHAR_DEAD shooter[1] TASK_TOGGLE_DUCK shooter[1] FALSE DETACH_CHAR_FROM_CAR shooter[1] ENDIF CLEAR_PRINTS PRINT_NOW SYN6_09 6000 1 GOTO mission_syn6_passed ENDIF ENDIF GOTO mission_syn6_loop // ************************************ MISSION FAILED ************************************* mission_syn6_failed: PRINT_BIG M_FAIL 5000 1 RETURN // ************************************ MISSION PASSED ************************************* mission_syn6_passed: REMOVE_BLIP garage_contact_blip ++ flag_synd_mission_counter PRINT_WITH_NUMBER_BIG ( M_PASSS ) 18000 5000 1 ADD_SCORE player1 18000 AWARD_PLAYER_MISSION_RESPECT 50 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 REGISTER_MISSION_PASSED ( SYND_6 ) PLAYER_MADE_PROGRESS 1 //START_NEW_SCRIPT syn6_mission_loop RETURN // *********************************** MISSION CLEANUP ************************************* mission_syn6_cleanup: DISPLAY_RADAR 3 // PATHING ON tlf_underway = 2 CLEAR_MISSION_AUDIO 3 REMOVE_BLIP mission_blip REMOVE_BLIP rocket_blip IF NOT IS_CHAR_DEAD scplayer REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_ROCKETLAUNCHER ENDIF CLEAR_ONSCREEN_COUNTER health_counter MARK_MODEL_AS_NO_LONGER_NEEDED ROCKETLA MARK_MODEL_AS_NO_LONGER_NEEDED MAVERICK MARK_MODEL_AS_NO_LONGER_NEEDED FCR900 MARK_MODEL_AS_NO_LONGER_NEEDED AK47 MARK_MODEL_AS_NO_LONGER_NEEDED colt45 MARK_MODEL_AS_NO_LONGER_NEEDED WBDYG1 MARK_MODEL_AS_NO_LONGER_NEEDED WBDYG2 MARK_MODEL_AS_NO_LONGER_NEEDED PONY MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE MARK_MODEL_AS_NO_LONGER_NEEDED desert_eagle //MARK_MODEL_AS_NO_LONGER_NEEDED ROCKETLA GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } /* [SYN6_01:SYN6] ~s~Toreno's boarding a helicopter at a ~y~helipad~s~ nearby. Get there and stop him. [SYN6_02:SYN6] ~s~Toreno's men have ~g~heavy duty weaponry~s~ at their disposal. Claim it for yourself! [SYN6_03:SYN6] ~s~The helicopter's airborne! Get that ~g~rocket launcher~s~ to bring it down! [SYN6_04:SYN6] ~s~ Follow that ~r~helicopter~s~ and bring it down! Use any means necessary! [SYN6_05:SYN6] Heli Health: [SYN6_06:SYN6] ~r~You failed to destroy the helicopter! [SYN6_07:SYN6] ~s~It's an ambush! Stop that ~r~helicopter~s~ from getting away! [SYN6_08:SYN6] ~r~Too late! Toreno's helicopter is well out of range now! [SYN6_09:SYN6] ~s~Excellent. Toreno can't have survived that fireball. [SYN6_10:SYN6] ~r~Toreno's tricked you! He's left and you've got trouble! [SYN6_11:SYN6] ~s~Chase the ~r~helicopter~s~ and use the rocket launcher to destroy it! [SYN6_12:SYN6] ~s~Toreno's ~r~helicopter~s~ is getting out of range! Keep up! [SYN6_13:SYN6] ~s~Good. Get close to the ~r~helicopter~s~ and shoot it down. */ MISSION_START // ***************************************************************************************** // ************************************* SYNDICATE 7 ***************************** // ************************************* Bomb the crack lab ***************************** // ***************************************************************************************** // ***************************************************************************************** // Mission start stuff SCRIPT_NAME syn7 GOSUB mission_start_syn7 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_syn7_failed ENDIF GOSUB mission_cleanup_syn7 MISSION_END { // ****************************************Mission Start************************************ mission_start_syn7: LVAR_INT s7_dm_weak LVAR_INT s7_dm_empty LVAR_INT s7_dm_tough LVAR_INT s7_buddy LVAR_INT s7_bomb_car LVAR_INT s7_bomb_car_blip LVAR_INT s7_bombshop_blip LVAR_INT s7_gates LVAR_INT s7_gate_guard[3] LVAR_INT s7_front_gate LVAR_INT s7_ramp LVAR_INT v LVAR_INT s7_mission LVAR_INT s7_get_back LVAR_INT s7_gate_inside[10] LVAR_INT s7_cavalry[10] LVAR_INT s7_ramp_blip LVAR_INT s7_plant_car_blip LVAR_INT s7_msg_displayed LVAR_INT s7_red LVAR_INT s7_seq_leave LVAR_INT s7_exit_door_blip LVAR_INT s7_died_in_explosion LVAR_INT s7_door_not_ramp LVAR_INT s7_escape_txt LVAR_INT s7_gate_closing LVAR_INT s7_courtyard_bike LVAR_INT s7_escape_ramp LVAR_INT s7_home_blip LVAR_INT s7_at_gate LVAR_INT s7_gate_guard_blip[2] LVAR_INT s7_workers[8] LVAR_INT s7_desk_guy_txt LVAR_INT s7_exit_guys[10] LVAR_INT s7_bike_1 LVAR_INT s7_bike_2 LVAR_INT s7_truck_blip LVAR_INT s7_backtrack[5] LVAR_INT s7_start_call LVAR_INT s4_guards_are_shooting LVAR_INT s4_guards_are_shooting_2 LVAR_INT s7_sequence VAR_FLOAT s7_rnd VAR_FLOAT s7_velocity VAR_INT s7_timer VAR_INT s7_in_compound VAR_INT s7_rnd_1 LVAR_INT s7_playing LVAR_INT s7_audio LVAR_INT s7_dont_print_again LVAR_INT s7_area LVAR_INT s7_health LVAR_INT s7_gate_stop LVAR_INT s7_drive_in LVAR_INT s7_roll_out LVAR_INT s7_respawned LVAR_INT s7_sequence_task LVAR_TEXT_LABEL s7_print LOAD_MISSION_TEXT SYN7 // Cutscene SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REQUEST_IPL CRACK 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... SET_AREA_VISIBLE 1 SET_CHAR_AREA_VISIBLE scplayer 1 LOAD_SCENE -2031.0 149.0 29.0 LOAD_CUTSCENE SYND_7 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_FADING_COLOUR 0 0 0 DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_CHAR_AREA_VISIBLE scplayer 0 SET_AREA_VISIBLE 0 // ***************************************************************************************** IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer -2031.1965 161.1839 27.8516 SET_CHAR_HEADING scplayer 268.0468 SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 OFF ENDIF // ***************************************************************************************** SET_FADING_COLOUR 0 0 0 flag_player_on_mission = 1 s7_mission = 0 s7_timer = 40000 s7_playing = 2 REGISTER_MISSION_GIVEN LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY s7_dm_empty LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_WEAK s7_dm_weak LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH s7_dm_tough WAIT 0 GOTO compiler_skip s7_spawn_workers: LVAR_INT s7_seq_anim[8] // ---------------------------------------------------------------------------------------------- // Workers Sequences OPEN_SEQUENCE_TASK s7_seq_anim[1] TASK_GO_TO_COORD_ANY_MEANS -1 -2160.5334 -247.0836 35.5234 PEDMOVE_WALK -1 TASK_PLAY_ANIM -1 wash_up INT_HOUSE 1.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT s7_seq_anim[1] 1 CLOSE_SEQUENCE_TASK s7_seq_anim[1] // ---------------------------------------------------------------------------------------------- OPEN_SEQUENCE_TASK s7_seq_anim[2] TASK_GO_TO_COORD_ANY_MEANS -1 -2163.7666 -249.1202 35.5234 PEDMOVE_WALK -1 TASK_PAUSE -1 1000 TASK_PLAY_ANIM -1 wash_up INT_HOUSE 1.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT s7_seq_anim[2] 1 CLOSE_SEQUENCE_TASK s7_seq_anim[2] // ---------------------------------------------------------------------------------------------- OPEN_SEQUENCE_TASK s7_seq_anim[3] TASK_GO_TO_COORD_ANY_MEANS -1 -2167.6311 -249.1143 35.5234 PEDMOVE_WALK -1 TASK_PAUSE -1 500 TASK_PLAY_ANIM -1 wash_up INT_HOUSE 1.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT s7_seq_anim[3] 1 CLOSE_SEQUENCE_TASK s7_seq_anim[3] // ---------------------------------------------------------------------------------------------- OPEN_SEQUENCE_TASK s7_seq_anim[4] TASK_GO_TO_COORD_ANY_MEANS -1 -2157.0000 -248.9899 35.5234 PEDMOVE_WALK -1 TASK_PAUSE -1 250 TASK_PLAY_ANIM -1 wash_up INT_HOUSE 1.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT s7_seq_anim[4] 1 CLOSE_SEQUENCE_TASK s7_seq_anim[4] // ---------------------------------------------------------------------------------------------- // Workers inside the Crack Lab CREATE_CHAR PEDTYPE_MISSION1 BMYCG -2146.0449 -242.5144 35.5234 s7_workers[0] SET_CHAR_HEADING s7_workers[0] 90.4330 SET_CHAR_WEAPON_SKILL s7_workers[0] WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR s7_workers[0] WEAPONTYPE_PISTOL 9999 SET_CHAR_ACCURACY s7_workers[0] 30 SET_CHAR_SHOOT_RATE s7_workers[0] 30 SET_CHAR_DECISION_MAKER s7_workers[0] s7_dm_tough // ---------------------------------------------------------------------------------------------- CREATE_CHAR PEDTYPE_CIVFEMALE WFYCRK -2160.5334 -247.0836 35.5234 s7_workers[1] SET_CHAR_HEADING s7_workers[1] 176.3351 PERFORM_SEQUENCE_TASK s7_workers[1] s7_seq_anim[1] // ---------------------------------------------------------------------------------------------- CREATE_CHAR PEDTYPE_CIVFEMALE WFYCRK -2163.7666 -249.1202 35.5234 s7_workers[2] SET_CHAR_HEADING s7_workers[2] 11.5708 PERFORM_SEQUENCE_TASK s7_workers[2] s7_seq_anim[2] // ---------------------------------------------------------------------------------------------- CREATE_CHAR PEDTYPE_CIVMALE HMYCM -2167.6311 -249.1143 35.5234 s7_workers[3] SET_CHAR_HEADING s7_workers[3] 1.3110 PERFORM_SEQUENCE_TASK s7_workers[3] s7_seq_anim[3] // ---------------------------------------------------------------------------------------------- CREATE_CHAR PEDTYPE_CIVMALE HMYCM -2157.0000 -248.9899 35.5234 s7_workers[4] SET_CHAR_HEADING s7_workers[4] 0.8891 PERFORM_SEQUENCE_TASK s7_workers[4] s7_seq_anim[4] // ---------------------------------------------------------------------------------------------- REPEAT 5 v IF NOT v = 0 IF NOT IS_CHAR_DEAD s7_workers[v] SET_CHAR_IS_TARGET_PRIORITY s7_workers[v] FALSE SET_CHAR_DECISION_MAKER s7_workers[v] s7_dm_weak ENDIF ENDIF ENDREPEAT RETURN compiler_skip: SET_GROUP_SEPARATION_RANGE Players_Group 100.0 SWITCH_PED_ROADS_OFF -2175.8174 -55.8818 27.0000 -2059.2053 -99.4399 37.0000 SWITCH_ROADS_OFF -2175.8174 -55.8818 27.0000 -2059.2053 -99.4399 37.0000 SWITCH_PED_ROADS_OFF -2107.9805 -71.8985 30.0000 -2160.2563 -89.7108 37.0000 TIMERA = 0 SET_CAMERA_BEHIND_PLAYER IF NOT IS_CHAR_DEAD scplayer SET_CHAR_HEADING scplayer 280.0 ENDIF ADD_BLIP_FOR_COORD -1688.9010 1035.95 43.7187 s7_bombshop_blip REQUEST_MODEL tampa REQUEST_MODEL WMYMECH REQUEST_ANIMATION CAR REQUEST_MODEL cellphone REQUEST_MODEL health REQUEST_MODEL COLT45 WHILE NOT HAS_MODEL_LOADED tampa OR NOT HAS_MODEL_LOADED WMYMECH OR NOT HAS_ANIMATION_LOADED CAR OR NOT HAS_MODEL_LOADED cellphone OR NOT HAS_MODEL_LOADED health WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED COLT45 WAIT 0 ENDWHILE // ---------------------------------------------------------------------------------------------- CREATE_PICKUP health PICKUP_ONCE -2182.6523 -247.3813 36.4000 s7_health DO_FADE 1000 FADE_IN SET_PLAYER_CONTROL player1 ON // ---------------------------------------------------------------------------------------------- CREATE_OBJECT wongs_gate -2127.0000 -80.8000 34.3281 s7_front_gate SET_OBJECT_HEADING s7_front_gate 180.0 // ---------------------------------------------------------------------------------------------- CREATE_OBJECT DYN_RAMP -2175.2000 -209.7745 34.3281 s7_ramp SET_OBJECT_HEADING s7_ramp 85.6854 // ---------------------------------------------------------------------------------------------- CUSTOM_PLATE_FOR_NEXT_CAR tampa &TIMEBOMB CREATE_CAR tampa -1688.9010 1035.95 44.6000 s7_bomb_car SET_VEHICLE_DIRT_LEVEL s7_bomb_car 12.0000 FREEZE_CAR_POSITION s7_bomb_car TRUE SET_CAN_BURST_CAR_TYRES s7_bomb_car FALSE SET_CAR_HEADING s7_bomb_car 90.0 SET_CAR_HEALTH s7_bomb_car 1000 // ---------------------------------------------------------------------------------------------- CREATE_CHAR PEDTYPE_CIVMALE WMYMECH -1689.12 1038.2 44.2000 s7_buddy SET_CHAR_HEALTH s7_buddy 800 SET_CHAR_MAX_HEALTH s7_buddy 800 SET_CHAR_NEVER_TARGETTED s7_buddy TRUE SET_CHAR_COLLISION s7_buddy FALSE SET_CHAR_HEADING s7_buddy 0.0 TASK_PLAY_ANIM s7_buddy Fixn_Car_Loop CAR 4.0 TRUE FALSE FALSE TRUE 0 SET_CHAR_ACCURACY s7_buddy 100 SET_CHAR_DECISION_MAKER s7_buddy s7_dm_empty // ---------------------------------------------------------------------------------------------- // Density Multipliers SET_PED_DENSITY_MULTIPLIER 0.5 SET_CAR_DENSITY_MULTIPLIER 1.0 // Relationshipe SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 PEDTYPE_MISSION1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 PEDTYPE_MISSION1 TIMERB = 0 LOAD_MISSION_AUDIO 3 SOUND_MOBRING // Ok, Carl, can you hear me ok? WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 3 GOSUB s7_set_camera SET_FIXED_CAMERA_POSITION -2029.1335 164.0932 29.0052 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2029.7780 163.3323 28.9291 JUMP_CUT IF NOT IS_CHAR_DEAD scplayer TASK_USE_MOBILE_PHONE scplayer TRUE ENDIF WAIT 2000 PRINT_NOW ( MTG01A ) 4000 1 // Ok, Carl, can you hear me ok? CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_MTG01A // Ok, Carl, can you hear me ok? WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE WAIT 500 GOSUB s7_restore_camera // ******************************************** START MAIN LOOP ********************************** WHILE NOT IS_CHAR_DEAD scplayer WAIT 0 GOSUB s7_keys GOSUB s7_play_sample IF IS_BUTTON_PRESSED PAD1 TRIANGLE AND NOT s7_start_call = 8 AND NOT s7_start_call = 0 s7_start_call = 7 ENDIF IF s7_playing = 2 AND s7_start_call = 0 $s7_print = &MTG01B // CJ? s7_audio = SOUND_MTG01B GOSUB s7_load_sample s7_start_call = 1 ENDIF IF s7_playing = 2 AND s7_start_call = 1 IF NOT IS_CHAR_DEAD scplayer START_CHAR_FACIAL_TALK scplayer 5000 ENDIF $s7_print = &MTG01C // Yeah, who's this? s7_audio = SOUND_MTG01C GOSUB s7_load_sample s7_start_call = 2 ENDIF IF s7_playing = 2 AND s7_start_call = 2 IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF $s7_print = &MTG01D // I work for Woozie he told me to call you. s7_audio = SOUND_MTG01D GOSUB s7_load_sample s7_start_call = 3 ENDIF IF s7_playing = 2 AND s7_start_call = 3 IF NOT IS_CHAR_DEAD scplayer START_CHAR_FACIAL_TALK scplayer 5000 ENDIF $s7_print = &MTG01E // Yeah? Whattup? s7_audio = SOUND_MTG01E GOSUB s7_load_sample s7_start_call = 4 ENDIF IF s7_playing = 2 AND s7_start_call = 4 IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF $s7_print = &MTG01F // I'm rigging a car with explosives so you can take out the crack factory! s7_audio = SOUND_MTG01F GOSUB s7_load_sample s7_start_call = 5 ENDIF IF s7_playing = 2 AND s7_start_call = 5 $s7_print = &MTG01G // Drop 'round the garage Downtown. s7_audio = SOUND_MTG01G GOSUB s7_load_sample s7_start_call = 6 ENDIF IF s7_playing = 2 AND s7_start_call = 6 IF NOT IS_CHAR_DEAD scplayer START_CHAR_FACIAL_TALK scplayer 5000 ENDIF $s7_print = &MTG01H // Ok. Be with you any second. s7_audio = SOUND_MTG01H GOSUB s7_load_sample s7_start_call = 7 ENDIF IF s7_playing = 2 AND s7_start_call = 7 IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF IF NOT IS_CHAR_DEAD scplayer TASK_USE_MOBILE_PHONE scplayer FALSE ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED cellphone PRINT_NOW ( SYN7_01 ) 9000 1 // ~s~Go and pick up the wired car from the ~y~Bomb Shop~s~. s7_start_call = 8 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S GOTO mission_syn7_passed ENDIF GET_CHAR_SPEED scplayer s7_velocity // ********************************************************************************************** // * * // * Cutscene in Bomb-Shops * // * * // ********************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2129.3079 -129.0417 34.3203 50.0 50.0 500.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -2149.6243 -244.8758 35.5234 98.0 98.0 500.0 FALSE s7_in_compound = 1 SET_WANTED_MULTIPLIER 0.0 ELSE s7_in_compound = 0 SET_WANTED_MULTIPLIER 1.0 ENDIF IF s7_mission = 0 AND NOT IS_CHAR_DEAD scplayer IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1699.4839 1030.6508 44.2187 4.0 4.0 4.0 TRUE IF NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 OFF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF s7_start_call = 8 GOSUB s7_set_camera // Outside camera of Bomb Shop SET_FIXED_CAMERA_POSITION -1721.0710 1024.8037 49.7941 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1720.1615 1025.1863 49.6318 JUMP_CUT IF IS_CHAR_IN_ANY_CAR scplayer TASK_LEAVE_ANY_CAR scplayer WAIT 2000 ELSE TASK_GO_STRAIGHT_TO_COORD scplayer -1696.49 1034.98 45.11 PEDMOVE_WALK 2000 ENDIF GOSUB s7_fade_out LOAD_MISSION_AUDIO 3 SOUND_BANK_MECHANIC WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE REQUEST_MODEL WFYCRK REQUEST_MODEL HMYCM REQUEST_MODEL BMYCG REQUEST_MODEL hmyst REQUEST_MODEL hmyri REQUEST_MODEL micro_uzi REQUEST_MODEL VOODOO REQUEST_ANIMATION INT_HOUSE WHILE NOT HAS_MODEL_LOADED WFYCRK OR NOT HAS_MODEL_LOADED HMYCM OR NOT HAS_MODEL_LOADED BMYCG OR NOT HAS_MODEL_LOADED hmyst OR NOT HAS_MODEL_LOADED hmyri WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED micro_uzi OR NOT HAS_MODEL_LOADED VOODOO OR NOT HAS_ANIMATION_LOADED INT_HOUSE WAIT 0 ENDWHILE REQUEST_CAR_RECORDING 483 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 483 WAIT 0 ENDWHILE LVAR_INT s7_carl_walk IF NOT IS_CHAR_DEAD s7_buddy OPEN_SEQUENCE_TASK s7_carl_walk TASK_GO_STRAIGHT_TO_COORD -1 -1692.0675 1036.1962 44.2109 PEDMOVE_WALK -2 TASK_TURN_CHAR_TO_FACE_CHAR -1 s7_buddy TASK_TOGGLE_DUCK -1 TRUE CLOSE_SEQUENCE_TASK s7_carl_walk ENDIF // CREATE CAR IF NOT IS_CAR_DEAD s7_bomb_car IF NOT IS_CHAR_IN_CAR scplayer s7_bomb_car IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -1693.3206 1034.3199 44.2109 ENDIF ENDIF SET_CHAR_COORDINATES scplayer -1693.3206 1034.3199 44.2109 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED ARM_CAR_WITH_BOMB s7_bomb_car 1 SET_CHAR_HEADING scplayer 329.4165 PERFORM_SEQUENCE_TASK scplayer s7_carl_walk ENDIF WAIT 1500 CLEAR_PRINTS // Carl walks up and watches guy under car SET_FIXED_CAMERA_POSITION -1694.2156 1036.7203 45.3716 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1693.2362 1036.8014 45.1866 JUMP_CUT DO_FADE 1000 FADE_IN TIMERA = 0 IF NOT IS_CAR_DEAD s7_bomb_car ADD_BLIP_FOR_CAR s7_bomb_car s7_bomb_car_blip CHANGE_BLIP_DISPLAY s7_bomb_car_blip NEITHER SET_BLIP_AS_FRIENDLY s7_bomb_car_blip TRUE ENDIF // *************** Camera showing guy Under car *********************************************** // SET_FIXED_CAMERA_POSITION -1693.4517 1037.2605 44.9357 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -1692.4723 1037.1040 44.8083 JUMP_CUT IF NOT IS_CHAR_DEAD s7_buddy REPORT_MISSION_AUDIO_EVENT_AT_CHAR s7_buddy SOUND_MECHANIC_ATTACH_CAR_BOMB ENDIF CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN7_AA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SYN7_AA ) 3000 1 // Hey, dude, is it ready? TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO s7_skip_the_cutscene ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN7_AB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SYN7_AB ) 2000 1 // She's all set. Get in. TIMERA = 0 WHILE TIMERA < 1000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO s7_skip_the_cutscene ENDIF ENDWHILE LVAR_INT s7_buddy_seq IF NOT IS_CHAR_DEAD scplayer OPEN_SEQUENCE_TASK s7_buddy_seq TASK_PLAY_ANIM -1 Fixn_Car_Out CAR 4.0 FALSE FALSE FALSE TRUE 0 CLOSE_SEQUENCE_TASK s7_buddy_seq ENDIF IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD s7_bomb_car TASK_TOGGLE_DUCK scplayer FALSE TASK_GO_STRAIGHT_TO_COORD scplayer -1690.4226 1034.0026 44.2109 PEDMOVE_WALK 6000 TASK_ENTER_CAR_AS_DRIVER scplayer s7_bomb_car -1 ENDIF TIMERA = 0 WHILE TIMERA < 500 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO s7_skip_the_cutscene ENDIF ENDWHILE IF NOT IS_CHAR_DEAD s7_buddy PERFORM_SEQUENCE_TASK s7_buddy s7_buddy_seq ENDIF IF NOT IS_CHAR_DEAD s7_buddy REPORT_MISSION_AUDIO_EVENT_AT_CHAR s7_buddy SOUND_MECHANIC_SLIDE_OUT ENDIF TIMERA = 0 WHILE TIMERA < 1500 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO s7_skip_the_cutscene ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN7_AC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SYN7_AC ) 3000 1 // She's packing enough to take out that crack lab. IF NOT IS_CHAR_DEAD s7_buddy START_CHAR_FACIAL_TALK s7_buddy 5000 ENDIF // *************** Camera showing Guys in car *********************************************** SET_FIXED_CAMERA_POSITION -1690.1716 1033.2664 45.4626 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1689.6400 1034.1102 45.3904 JUMP_CUT IF NOT IS_CHAR_DEAD s7_buddy SET_CHAR_COLLISION s7_buddy TRUE TASK_TURN_CHAR_TO_FACE_CHAR s7_buddy scplayer ENDIF IF NOT IS_CAR_DEAD s7_bomb_car SET_CAR_COORDINATES s7_bomb_car -1688.9010 1034.95 43.7187 IF NOT IS_CHAR_DEAD s7_buddy TASK_LOOK_AT_CHAR scplayer s7_buddy 5000 TASK_PLAY_ANIM s7_buddy IDLE_chat PED 1.0 FALSE FALSE FALSE FALSE -1 SET_CHAR_COORDINATES s7_buddy -1689.12 1036.9 44.3187 SET_CHAR_HEADING s7_buddy 180.0 ENDIF SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED ENDIF TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO s7_skip_the_cutscene ENDIF ENDWHILE IF NOT IS_CHAR_DEAD s7_buddy STOP_CHAR_FACIAL_TALK s7_buddy ENDIF TIMERA = 0 WHILE TIMERA < 2500 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO s7_skip_the_cutscene ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN7_AD WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SYN7_AD ) 4000 1 // I've wired in a delay timer, to give you time to get out. IF NOT IS_CHAR_DEAD s7_buddy START_CHAR_FACIAL_TALK s7_buddy 5000 ENDIF TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO s7_skip_the_cutscene ENDIF ENDWHILE IF NOT IS_CHAR_DEAD s7_buddy STOP_CHAR_FACIAL_TALK s7_buddy ENDIF CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN7_AE WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD scplayer START_CHAR_FACIAL_TALK scplayer 5000 ENDIF PLAY_MISSION_AUDIO 1 PRINT_NOW ( SYN7_AE ) 4000 1 // Ok, thanks, dude. TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO s7_skip_the_cutscene ENDIF ENDWHILE IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF IF NOT IS_CAR_DEAD s7_bomb_car IF NOT IS_CHAR_DEAD s7_buddy CLEAR_CHAR_TASKS s7_buddy TASK_GO_TO_COORD_ANY_MEANS s7_buddy -1683.1704 1037.3420 45.2173 PEDMOVE_WALK -1 ENDIF ENDIF TIMERA = 0 WHILE TIMERA < 1000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO s7_skip_the_cutscene ENDIF ENDWHILE GOSUB s7_fade_out CLEAR_PRINTS CLEAR_AREA -1704.6931 1027.4761 44.2110 30.0 TRUE LOAD_SCENE_IN_DIRECTION -1696.5847 1038.4976 44.2173 150.0018 IF NOT IS_CAR_DEAD s7_bomb_car FREEZE_CAR_POSITION s7_bomb_car FALSE START_PLAYBACK_RECORDED_CAR s7_bomb_car 483 ENDIF // The car when it's outside the bomb shop SET_FIXED_CAMERA_POSITION -1696.99 1045.54 48.8 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1701.21 1036.55 45.70 JUMP_CUT GOSUB s7_fade_in TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO s7_skip_the_cutscene ENDIF ENDWHILE s7_skip_the_cutscene: IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF DELETE_CHAR s7_buddy REMOVE_ANIMATION CAR IF NOT IS_CAR_DEAD s7_bomb_car FREEZE_CAR_POSITION s7_bomb_car FALSE IF NOT IS_CHAR_IN_CAR scplayer s7_bomb_car WARP_CHAR_INTO_CAR scplayer s7_bomb_car ENDIF ENDIF IF NOT IS_CAR_DEAD s7_bomb_car IF IS_PLAYBACK_GOING_ON_FOR_CAR s7_bomb_car SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_CAR s7_bomb_car ELSE CLEAR_AREA -1704.6150 1026.2019 44.1953 20.0 TRUE SET_CAR_COORDINATES s7_bomb_car -1704.6150 1026.2019 44.1953 SET_CAR_HEADING s7_bomb_car 168.8963 ENDIF ENDIF TIMERA = 0 REMOVE_BLIP s7_bombshop_blip CHANGE_BLIP_DISPLAY s7_bomb_car_blip NEITHER ADD_BLIP_FOR_COORD -2128.1201 -83.3848 34.3140 s7_gates GOSUB s7_restore_camera PRINT_NOW ( SYN7_03 ) 7000 1 // ~s~ Park the car inside the ~y~Crack lab LVAR_INT s4_guard_gate_a s4_guard_gate_b // ---------------------------------------------------------------------------------------------- OPEN_SEQUENCE_TASK s4_guard_gate_a TASK_GO_TO_COORD_ANY_MEANS -1 -2128.8479 -79.3918 34.2565 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 0.0000 SET_SEQUENCE_TO_REPEAT s4_guard_gate_a 1 CLOSE_SEQUENCE_TASK s4_guard_gate_a // ---------------------------------------------------------------------------------------------- OPEN_SEQUENCE_TASK s4_guard_gate_b TASK_GO_TO_COORD_ANY_MEANS -1 -2128.8479 -79.3918 34.2565 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 0.0000 SET_SEQUENCE_TO_REPEAT s4_guard_gate_b 1 CLOSE_SEQUENCE_TASK s4_guard_gate_b // ---------------------------------------------------------------------------------------------- CREATE_CHAR PEDTYPE_MISSION1 BMYCG -2128.8479 -79.3918 34.2565 s7_gate_guard[0] GIVE_WEAPON_TO_CHAR s7_gate_guard[0] WEAPONTYPE_MICRO_UZI 1000 SET_CHAR_HEADING s7_gate_guard[0] 0.0000 // ---------------------------------------------------------------------------------------------- CREATE_CHAR PEDTYPE_MISSION1 hmyst -2128.8479 -79.3918 34.2565 s7_gate_guard[1] GIVE_WEAPON_TO_CHAR s7_gate_guard[1] WEAPONTYPE_MICRO_UZI 1000 SET_CHAR_HEADING s7_gate_guard[1] 0.0000 PERFORM_SEQUENCE_TASK s7_gate_guard[0] s4_guard_gate_a PERFORM_SEQUENCE_TASK s7_gate_guard[1] s4_guard_gate_b // ---------------------------------------------------------------------------------------------- REPEAT 2 v SET_CHAR_ACCURACY s7_gate_guard[v] 40 SET_CHAR_DECISION_MAKER s7_gate_guard[v] s7_dm_tough SET_CHAR_RELATIONSHIP s7_gate_guard[v] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP s7_gate_guard[v] ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 SET_SENSE_RANGE s7_gate_guard[v] 150.0 SET_CHAR_IS_TARGET_PRIORITY s7_gate_guard[v] TRUE ENDREPEAT s7_mission = 1 ENDIF ENDIF // ********************************************************************************************** // * * // * If all the guys are dead * // * * // ********************************************************************************************** IF s7_mission = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2124.5007 -77.7719 34.1719 50.0 50.0 50.0 FALSE AND NOT IS_CHAR_DEAD s7_gate_guard[0] AND NOT IS_CHAR_DEAD s7_gate_guard[1] IF s7_at_gate = 0 GOSUB s7_spawn_workers PRINT_NOW ( SYN7_52 ) 4000 1 // Kill the ~r~Guards, that will get their attention s7_at_gate = 1 IF DOES_BLIP_EXIST s7_gates CHANGE_BLIP_DISPLAY s7_gates NEITHER ENDIF IF NOT IS_CHAR_DEAD s7_gate_guard[0] ADD_BLIP_FOR_CHAR s7_gate_guard[0] s7_gate_guard_blip[0] ENDIF IF NOT IS_CHAR_DEAD s7_gate_guard[1] ADD_BLIP_FOR_CHAR s7_gate_guard[1] s7_gate_guard_blip[1] ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD s7_gate_guard[1] IF LOCATE_CHAR_ANY_MEANS_3D s7_gate_guard[1] -2126.9109 -79.3953 34.2567 10.0 10.0 10.0 FALSE s4_guards_are_shooting_2 = 1 ELSE SWITCH_PED_ROADS_BACK_TO_ORIGINAL -2175.8174 -55.8818 27.0000 -2059.2053 -99.4399 37.0000 SWITCH_PED_ROADS_BACK_TO_ORIGINAL -2107.9805 -71.8985 30.0000 -2160.2563 -89.7108 37.0000 s4_guards_are_shooting_2 = 0 ENDIF ENDIF IF NOT IS_CHAR_DEAD s7_gate_guard[0] IF LOCATE_CHAR_ANY_MEANS_3D s7_gate_guard[0] -2126.9109 -79.3953 34.2567 10.0 10.0 10.0 FALSE s4_guards_are_shooting = 1 ELSE SWITCH_PED_ROADS_BACK_TO_ORIGINAL -2175.8174 -55.8818 27.0000 -2059.2053 -99.4399 37.0000 SWITCH_PED_ROADS_BACK_TO_ORIGINAL -2107.9805 -71.8985 30.0000 -2160.2563 -89.7108 37.0000 s4_guards_are_shooting = 0 ENDIF ENDIF IF s7_at_gate = 1 IF IS_CHAR_DEAD s7_gate_guard[0] IF DOES_BLIP_EXIST s7_gate_guard_blip[0] REMOVE_BLIP s7_gate_guard_blip[0] ENDIF ENDIF IF IS_CHAR_DEAD s7_gate_guard[1] IF DOES_BLIP_EXIST s7_gate_guard_blip[1] REMOVE_BLIP s7_gate_guard_blip[1] ENDIF ENDIF ENDIF GET_AREA_VISIBLE s7_area IF IS_CHAR_DEAD s7_gate_guard[0] AND IS_CHAR_DEAD s7_gate_guard[1] AND s7_area = 0 GOSUB s7_fade_out REQUEST_ANIMATION ON_LOOKERS WHILE NOT HAS_ANIMATION_LOADED ON_LOOKERS WAIT 0 ENDWHILE GOSUB s7_set_camera CREATE_CHAR PEDTYPE_MISSION1 hmyri -2125.8706 -97.1422 34.3281 s7_gate_inside[2] SET_CHAR_WEAPON_SKILL s7_gate_inside[2] WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR s7_gate_inside[2] WEAPONTYPE_PISTOL 9999 TASK_PLAY_ANIM s7_gate_inside[2] point_loop ON_LOOKERS 8.0 TRUE FALSE FALSE TRUE 3000 IF s4_guards_are_shooting_2 = 1 OR s4_guards_are_shooting = 1 SET_FIXED_CAMERA_POSITION -2113.1504 -72.3184 40.9064 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2113.9177 -72.8274 40.5167 JUMP_CUT ELSE SET_FIXED_CAMERA_POSITION -2125.6421 -95.0874 35.6371 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2125.7625 -96.0758 35.7291 JUMP_CUT ENDIF GOSUB s7_fade_in GENERATE_RANDOM_INT_IN_RANGE 0 3 s7_rnd_1 //SKIP_CUTSCENE_START SWITCH s7_rnd_1 CASE 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN7_BA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SYN7_BA ) 4000 1 // Hey, some loco basta blasting on our boys! BREAK CASE 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN7_BB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SYN7_BB ) 4000 1 // It's a hit! BREAK CASE 2 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN7_BC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SYN7_BC ) 4000 1 // We're being hit! BREAK ENDSWITCH WAIT 4000 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD s7_bomb_car IF IS_CHAR_IN_CAR scplayer s7_bomb_car CLEAR_AREA -2127.7991 -68.8104 34.1719 10.0 TRUE SET_CAR_COORDINATES s7_bomb_car -2127.7991 -68.8104 34.1719 SET_CAR_HEADING s7_bomb_car 180.0000 ENDIF ENDIF CLEAR_AREA -2129.2561 -74.4958 34.1719 100.0 TRUE // ---------------------------------------------------------------------------------------------- CREATE_CHAR PEDTYPE_MISSION1 BMYCG -2119.0107 -99.2082 34.3281 s7_gate_inside[0] GIVE_WEAPON_TO_CHAR s7_gate_inside[0] WEAPONTYPE_MICRO_UZI 1000 CREATE_CHAR PEDTYPE_MISSION1 hmyst -2121.1731 -108.9207 34.3281 s7_gate_inside[1] GIVE_WEAPON_TO_CHAR s7_gate_inside[1] WEAPONTYPE_MICRO_UZI 1000 CREATE_CHAR PEDTYPE_MISSION1 hmyst -2104.2000 -162.4759 34.3273 s7_gate_inside[3] GIVE_WEAPON_TO_CHAR s7_gate_inside[3] WEAPONTYPE_MICRO_UZI 1000 CREATE_CHAR PEDTYPE_MISSION1 hmyri -2100.0959 -157.8681 34.3273 s7_gate_inside[4] SET_CHAR_WEAPON_SKILL s7_gate_inside[4] WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR s7_gate_inside[4] WEAPONTYPE_PISTOL 9999 CREATE_CHAR PEDTYPE_MISSION1 BMYCG -2162.6350 -224.1719 35.5156 s7_gate_inside[5] SET_CHAR_HEADING s7_gate_inside[5] 350.5417 GIVE_WEAPON_TO_CHAR s7_gate_inside[5] WEAPONTYPE_MICRO_UZI 1000 // ---------------------------------------------------------------------------------------------- REPEAT 6 v IF NOT IS_CHAR_DEAD s7_gate_inside[v] SET_CHAR_SHOOT_RATE s7_gate_inside[v] 30 SET_CHAR_ACCURACY s7_gate_inside[v] 30 SET_CHAR_IS_TARGET_PRIORITY s7_gate_inside[v] TRUE SET_CHAR_DECISION_MAKER s7_gate_inside[v] s7_dm_tough SET_CHAR_RELATIONSHIP s7_gate_inside[v] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP s7_gate_inside[v] ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 ENDIF ENDREPEAT LVAR_INT s7_seq_gate OPEN_SEQUENCE_TASK s7_seq_gate TASK_GO_STRAIGHT_TO_COORD -1 -2126.1443 -82.2896 34.3203 PEDMOVE_RUN -1 TASK_GOTO_CHAR -1 scplayer -1 5.0 CLOSE_SEQUENCE_TASK s7_seq_gate DISPLAY_RADAR 2 // PATHING OFF PERFORM_SEQUENCE_TASK s7_gate_inside[0] s7_seq_gate PERFORM_SEQUENCE_TASK s7_gate_inside[1] s7_seq_gate IF NOT IS_CHAR_DEAD s7_gate_inside[2] CLEAR_CHAR_TASKS_IMMEDIATELY s7_gate_inside[2] TASK_PLAY_ANIM s7_gate_inside[2] point_loop ON_LOOKERS 8.0 TRUE FALSE FALSE TRUE 3000 ENDIF TASK_GOTO_CHAR s7_gate_inside[3] scplayer -1 5.0 TASK_GOTO_CHAR s7_gate_inside[4] scplayer -1 5.0 SET_FIXED_CAMERA_POSITION -2119.4 -92.22 34.61 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2170.17 -161.04 46.68 JUMP_CUT GENERATE_RANDOM_INT_IN_RANGE 0 3 s7_rnd_1 SWITCH s7_rnd_1 CASE 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN7_CA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SYN7_CA ) 4000 1 // Get out there and kill the fool! BREAK CASE 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN7_CB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SYN7_CB ) 4000 1 // Open the gates and waste the dumb fuck! BREAK CASE 2 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_SYN7_CC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( SYN7_CC ) 4000 1 // Blast the moron, open the gate! BREAK ENDSWITCH WAIT 4000 GOSUB s7_restore_camera REMOVE_BLIP s7_gates ADD_BLIP_FOR_COORD -2175.2434 -209.7745 34.3281 s7_ramp_blip IF NOT IS_CAR_DEAD s7_bomb_car AND NOT IS_CHAR_DEAD scplayer IF NOT IS_CHAR_IN_CAR scplayer s7_bomb_car CHANGE_BLIP_DISPLAY s7_ramp_blip NEITHER ENDIF ENDIF TIMERB = 0 //SKIP_CUTSCENE_END REPORT_MISSION_AUDIO_EVENT_AT_OBJECT s7_front_gate SOUND_MESH_GATE_OPEN_START s7_mission = 2 CHECKPOINT_SAVE 99 ENDIF ENDIF // ********************************************************************************************** // * * // * Open the gate * // * * // ********************************************************************************************** IF s7_mission = 2 AND NOT IS_CAR_DEAD s7_bomb_car AND NOT IS_CHAR_DEAD scplayer IF DOES_OBJECT_EXIST s7_front_gate GET_OBJECT_COORDINATES s7_front_gate x y z IF x < -2117.0000 SLIDE_OBJECT s7_front_gate -2117.0000 -80.8000 34.3281 0.20 0.0 0.0 FALSE ELSE IF s7_gate_stop = 0 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT s7_front_gate SOUND_MESH_GATE_OPEN_STOP s7_gate_stop = 1 ENDIF ENDIF ENDIF // ********************************************************************************************** // * * // * Tell Player to use ramp * // * * // ********************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2138.2124 -201.8113 34.3281 20.0 20.0 20.0 FALSE AND s7_msg_displayed = 0 PRINT_NOW ( SYN7_35 ) 4000 1 // ~s~Use the ~y~Ramp ~s~to get into the crack lab REPEAT 6 v DELETE_CHAR s7_gate_inside[v] ENDREPEAT REPEAT 2 v DELETE_CHAR s7_gate_guard[v] ENDREPEAT s7_msg_displayed = 1 ENDIF // ********************************************************************************************** // * * // * Player hits the Warehoouse ramp * // * * // ********************************************************************************************** IF IS_CHAR_IN_CAR scplayer s7_bomb_car IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2181.7603 -209.4146 35.5234 4.0 4.0 4.0 FALSE PRINT_NOW ( SYN7_34 ) 6000 1 // ~s~Park the car near the ~y~Chemical containers~s~. REMOVE_BLIP s7_ramp_blip ADD_BLIP_FOR_COORD -2184.0588 -263.4215 35.5234 s7_plant_car_blip s7_mission = 3 ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2184.9829 -218.1104 35.5234 4.0 4.0 4.0 FALSE PRINT_NOW ( SYN7_34 ) 6000 1 // ~s~Park the car near the ~y~Chemical containers~s~. REMOVE_BLIP s7_ramp_blip ADD_BLIP_FOR_COORD -2184.0588 -263.4215 35.5234 s7_plant_car_blip s7_mission = 3 ENDIF ENDIF ENDIF // ********************************************************************************************** // * * // * Player is in the bomb zone * // * * // ********************************************************************************************** IF s7_mission = 3 AND NOT IS_CAR_DEAD s7_bomb_car AND NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_CAR scplayer s7_bomb_car IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2150.5271 -241.7461 35.5234 4.0 4.0 4.0 FALSE AND NOT IS_CHAR_DEAD s7_workers[0] AND s7_desk_guy_txt = 0 GENERATE_RANDOM_INT_IN_RANGE 0 5 s7_rnd_1 SWITCH s7_rnd_1 CASE 0 $s7_print = &SYN7_DA // Who the fuck are you! s7_audio = SOUND_SYN7_DA GOSUB s7_load_sample BREAK CASE 1 $s7_print = &SYN7_DB // What the fuck is he doing? s7_audio = SOUND_SYN7_DB GOSUB s7_load_sample BREAK CASE 2 $s7_print = &SYN7_DC // This ain't no carpark! s7_audio = SOUND_SYN7_DC GOSUB s7_load_sample BREAK CASE 3 $s7_print = &SYN7_DD // Shit, I'm so fried I'm seeing shit! s7_audio = SOUND_SYN7_DD GOSUB s7_load_sample BREAK CASE 4 $s7_print = &SYN7_DE // Have I missed something here? s7_audio = SOUND_SYN7_DE GOSUB s7_load_sample BREAK ENDSWITCH s7_desk_guy_txt = 1 ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2184.0588 -263.4215 35.5234 4.0 4.0 4.0 s7_red PRINT_HELP_FOREVER ( SYN7_20 ) // ~m~~widget_vehicle_bomb~ Activate bomb. s7_red = 0 IF IS_BUTTON_PRESSED PAD1 CIRCLE OR IS_WIDGET_RELEASED WIDGET_VEHICLE_BOMB s7_mission = 4 CLEAR_HELP IF NOT IS_CAR_DEAD s7_bomb_car FREEZE_CAR_POSITION s7_bomb_car TRUE SET_CAR_LIGHTS_ON s7_bomb_car FALSE OPEN_SEQUENCE_TASK s7_seq_leave TASK_LEAVE_CAR -1 s7_bomb_car CLOSE_SEQUENCE_TASK s7_seq_leave ENDIF // ********************************************************************************************** // * * // * Create guys inside the lab * // * * // ********************************************************************************************** LVAR_INT s7_seq_balcony OPEN_SEQUENCE_TASK s7_seq_balcony TASK_FOLLOW_PATH_NODES_TO_COORD -1 -2146.0422 -259.7312 39.7195 PEDMOVE_RUN -2 TASK_FOLLOW_PATH_NODES_TO_COORD -1 -2146.2290 -267.7039 39.7195 PEDMOVE_RUN -2 TASK_FOLLOW_PATH_NODES_TO_COORD -1 -2156.5100 -268.1435 39.7195 PEDMOVE_RUN -2 CLOSE_SEQUENCE_TASK s7_seq_balcony // ---------------------------------------------------------------------------------------------- // Guy on the balcony CREATE_CHAR PEDTYPE_MISSION1 BMYCG -2140.9307 -253.9011 39.7195 s7_cavalry[0] SET_CHAR_HEADING s7_cavalry[0] 150.6317 PERFORM_SEQUENCE_TASK s7_cavalry[0] s7_seq_balcony CLEAR_SEQUENCE_TASK s7_seq_balcony // ---------------------------------------------------------------------------------------------- OPEN_SEQUENCE_TASK s7_seq_balcony FLUSH_ROUTE EXTEND_ROUTE -2157.7261 -231.4555 35.5234 EXTEND_ROUTE -2153.7488 -236.6368 35.5234 EXTEND_ROUTE -2153.6233 -246.5058 35.5234 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_FOLLOW_PATH_NODES_TO_COORD -1 -2162.2639 -260.4177 35.5234 PEDMOVE_RUN -2 TASK_FOLLOW_PATH_NODES_TO_COORD -1 -2167.7651 -261.4950 35.5234 PEDMOVE_RUN -2 CLOSE_SEQUENCE_TASK s7_seq_balcony // ---------------------------------------------------------------------------------------------- CREATE_CHAR PEDTYPE_MISSION1 hmyst -2162.2356 -230.9540 35.5220 s7_cavalry[1] SET_CHAR_HEADING s7_cavalry[1] 231.2343 PERFORM_SEQUENCE_TASK s7_cavalry[1] s7_seq_balcony CLEAR_SEQUENCE_TASK s7_seq_balcony // ---------------------------------------------------------------------------------------------- OPEN_SEQUENCE_TASK s7_seq_balcony FLUSH_ROUTE EXTEND_ROUTE -2157.7261 -231.4555 35.5234 EXTEND_ROUTE -2153.7488 -236.6368 35.5234 EXTEND_ROUTE -2153.6233 -246.5058 35.5234 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_FOLLOW_PATH_NODES_TO_COORD -1 -2154.9226 -248.2299 35.5234 PEDMOVE_RUN -2 CLOSE_SEQUENCE_TASK s7_seq_balcony // ---------------------------------------------------------------------------------------------- CREATE_CHAR PEDTYPE_MISSION1 hmyri -2168.3367 -228.4060 35.5220 s7_cavalry[2] SET_CHAR_HEADING s7_cavalry[2] 294.4890 PERFORM_SEQUENCE_TASK s7_cavalry[2] s7_seq_balcony CLEAR_SEQUENCE_TASK s7_seq_balcony // ---------------------------------------------------------------------------------------------- OPEN_SEQUENCE_TASK s7_seq_balcony FLUSH_ROUTE EXTEND_ROUTE -2157.7261 -231.4555 35.5234 EXTEND_ROUTE -2153.7488 -236.6368 35.5234 EXTEND_ROUTE -2153.6233 -246.5058 35.5234 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_FOLLOW_PATH_NODES_TO_COORD -1 -2156.8347 -234.2320 35.5234 PEDMOVE_RUN -2 CLOSE_SEQUENCE_TASK s7_seq_balcony // ---------------------------------------------------------------------------------------------- CREATE_CHAR PEDTYPE_MISSION1 hmyri -2168.7397 -231.3480 35.5234 s7_cavalry[3] SET_CHAR_HEADING s7_cavalry[3] 278.3553 PERFORM_SEQUENCE_TASK s7_cavalry[3] s7_seq_balcony CLEAR_SEQUENCE_TASK s7_seq_balcony // ---------------------------------------------------------------------------------------------- // Guy guarding exit doorway CREATE_CHAR PEDTYPE_MISSION1 hmyri -2162.4172 -227.2437 35.5143 s7_cavalry[4] SET_CHAR_HEADING s7_cavalry[4] 196.0546 TASK_STAY_IN_SAME_PLACE s7_cavalry[4] TRUE // ---------------------------------------------------------------------------------------------- REPEAT 5 v SET_CHAR_SHOOT_RATE s7_cavalry[v] 30 SET_CHAR_ACCURACY s7_cavalry[v] 30 SET_CHAR_IS_TARGET_PRIORITY s7_cavalry[v] TRUE IF v = 4 SET_CHAR_WEAPON_SKILL s7_cavalry[v] WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR s7_cavalry[v] WEAPONTYPE_PISTOL 9999 ELSE GIVE_WEAPON_TO_CHAR s7_cavalry[v] WEAPONTYPE_MICRO_UZI 30000 SET_CURRENT_CHAR_WEAPON s7_cavalry[v] WEAPONTYPE_MICRO_UZI ENDIF SET_CHAR_DECISION_MAKER s7_cavalry[v] s7_dm_tough SET_CHAR_RELATIONSHIP s7_cavalry[v] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP s7_cavalry[v] ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 ENDREPEAT GOSUB s7_set_camera DELETE_CHAR s7_workers[1] DELETE_CHAR s7_workers[2] DELETE_CHAR s7_workers[3] DELETE_CHAR s7_workers[4] LOAD_SCENE_IN_DIRECTION -2150.4399 -239.1755 35.5234 52.2777 //Setting Up The Camera Positioning SET_FIXED_CAMERA_POSITION -2152.8604 -236.6111 37.0321 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2153.6233 -235.9684 36.9637 JUMP_CUT IF NOT IS_CHAR_DEAD s7_cavalry[4] TASK_PLAY_ANIM s7_cavalry[4] point_loop ON_LOOKERS 8.0 FALSE FALSE FALSE FALSE 4000 ENDIF PRINT_NOW ( SYN7_37 ) 4000 1 // ~s~Get out of the warehouse before the timer runs out SET_WANTED_MULTIPLIER 0.0 WAIT 4000 GOSUB s7_restore_camera IF NOT IS_CAR_DEAD s7_bomb_car AND NOT IS_CHAR_DEAD scplayer TASK_LEAVE_CAR scplayer s7_bomb_car ENDIF REMOVE_BLIP s7_plant_car_blip DISPLAY_ONSCREEN_TIMER_WITH_STRING s7_timer TIMER_DOWN SYN7_18 // BOMB : ~1~ ADD_BLIP_FOR_COORD -2162.9644 -225.5678 35.5156 s7_exit_door_blip TIMERA = 0 CLEAR_WANTED_LEVEL player1 ENDIF ELSE CLEAR_HELP s7_red = 1 ENDIF ELSE CLEAR_HELP ENDIF ENDIF // ********************************************************************************************** // * * // * At the warehouse exit door * // * * // ********************************************************************************************** IF s7_mission = 4 IF TIMERA > 4000 AND s7_escape_txt = 0 s7_escape_txt = 1 ENDIF IF s7_timer = 0 s7_died_in_explosion = 1 GOTO explosion ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2162.9644 -225.5678 35.5156 1.2 1.2 1.2 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -2186.1660 -216.9555 35.5143 6.0 6.0 6.0 FALSE GOSUB s7_fade_out GOSUB s7_set_camera LOAD_SCENE -2187.5046 -263.5027 36.5551 LOAD_SCENE_IN_DIRECTION -2157.0593 -262.1108 35.5156 89.9913 REMOVE_BLIP s7_exit_door_blip ADD_BLIP_FOR_COORD -2127.2002 -84.9324 34.3273 s7_gates CLEAR_ONSCREEN_TIMER s7_timer //Setting Up The Camera Positioning SET_FIXED_CAMERA_POSITION -2168.9700 -262.7310 36.3878 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2169.9675 -262.7543 36.4530 JUMP_CUT GOSUB s7_fade_in IF NOT IS_CAR_DEAD s7_bomb_car EXPLODE_CAR_IN_CUTSCENE_SHAKE_AND_BITS s7_bomb_car TRUE TRUE TRUE ENDIF WAIT 100 ADD_EXPLOSION -2187.5046 -263.5027 36.5551 EXPLOSION_GRENADE WAIT 500 ADD_EXPLOSION -2187.1799 -263.8283 39.8421 EXPLOSION_GRENADE WAIT 500 ADD_EXPLOSION -2187.1799 -263.8283 42.8421 EXPLOSION_GRENADE WAIT 500 ADD_EXPLOSION -2187.4321 -259.6525 42.0391 EXPLOSION_GRENADE ADD_EXPLOSION -2188.3992 -266.6203 42.6058 EXPLOSION_GRENADE WAIT 500 ADD_EXPLOSION -2185.5955 -265.3064 47.5696 EXPLOSION_GRENADE WAIT 500 ADD_EXPLOSION -2184.7742 -262.4794 37.4383 EXPLOSION_GRENADE ADD_EXPLOSION -2187.5740 -262.5659 39.7252 EXPLOSION_GRENADE WAIT 500 // *********************************************************************************************** // * * // * Door Cutscene * // * * // *********************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2163.6 -225.62 36.0 10.0 10.0 10.0 FALSE // Door IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer car WARP_CHAR_FROM_CAR_TO_COORD scplayer -2162.7344 -225.3373 35.4984 CLEAR_AREA -2162.7344 -225.3373 35.4984 10.0 TRUE DELETE_CAR car ELSE SET_CHAR_COORDINATES scplayer -2162.7344 -225.3373 35.4984 ENDIF SET_CHAR_HEADING scplayer 0.0000 s7_door_not_ramp = 0 ENDIF // *********************************************************************************************** // * * // * Ramp Cutscene * // * * // *********************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2186.1660 -216.9555 35.5143 10.0 10.0 10.0 FALSE // Ramps IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer car WARP_CHAR_FROM_CAR_TO_COORD scplayer -2162.7344 -225.3373 35.4984 CLEAR_AREA -2162.7344 -225.3373 35.4984 10.0 TRUE DELETE_CAR car ELSE SET_CHAR_COORDINATES scplayer -2162.7344 -225.3373 35.4984 ENDIF SET_CHAR_COORDINATES scplayer -2181.3308 -217.6694 35.5078 SET_CHAR_HEADING scplayer 286.3482 s7_door_not_ramp = 1 ENDIF GOSUB s7_fade_out REMOVE_IPL CRACK SET_VISIBILITY_OF_CLOSEST_OBJECT_OF_TYPE -2166.86 -236.50 40.86 40.0 crackfact_SFS TRUE // Set as damaged now. 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 TRUE // 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 FALSE // 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 TRUE // These commands no longer do anything but break the saves to remove... WAIT 1000 IF s7_door_not_ramp = 0 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer -2160.7290 -220.9850 34.3203 SET_CHAR_HEADING scplayer 336.7796 ENDIF ENDIF IF s7_door_not_ramp = 1 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer -2175.5127 -214.8866 34.3203 SET_CHAR_HEADING scplayer 298.3929 ENDIF ENDIF GOSUB s7_cleanup LOAD_SCENE_IN_DIRECTION -2162.2827 -220.5315 34.3203 324.4546 GOSUB s7_restore_camera CREATE_CHAR PEDTYPE_MISSION1 BMYCG -2132.0437 -168.6656 34.3273 s7_exit_guys[0] SET_CHAR_HEADING s7_exit_guys[0] 168.3635 TASK_GO_STRAIGHT_TO_COORD s7_exit_guys[0] -2141.7656 -206.9254 34.3203 PEDMOVE_RUN -1 CREATE_CHAR PEDTYPE_MISSION1 hmyst -2136.8782 -167.5268 34.3203 s7_exit_guys[1] SET_CHAR_HEADING s7_exit_guys[1] 172.0629 TASK_GO_STRAIGHT_TO_COORD s7_exit_guys[1] -2141.7656 -206.9254 34.3203 PEDMOVE_RUN -1 CREATE_CAR VOODOO -2124.6057 -87.9687 34.3203 s7_bike_1 SET_CAN_BURST_CAR_TYRES s7_bike_1 FALSE SET_CAR_CRUISE_SPEED s7_bike_1 40.0 SET_CAR_HEADING s7_bike_1 231.2455 CREATE_CHAR_INSIDE_CAR s7_bike_1 PEDTYPE_MISSION1 BMYCG s7_exit_guys[2] CREATE_CHAR_AS_PASSENGER s7_bike_1 PEDTYPE_MISSION1 BMYCG 0 s7_exit_guys[3] CREATE_CHAR PEDTYPE_MISSION1 BMYCG -2103.2910 -133.9342 34.3273 s7_exit_guys[4] SET_CHAR_HEADING s7_exit_guys[4] 170.6763 CREATE_CHAR PEDTYPE_MISSION1 hmyst -2107.3704 -146.9669 34.3273 s7_exit_guys[5] SET_CHAR_HEADING s7_exit_guys[5] 174.6227 CREATE_CHAR PEDTYPE_MISSION1 hmyst -2145.1157 -181.3902 37.6913 s7_exit_guys[6] SET_CHAR_HEADING s7_exit_guys[6] 176.6880 TASK_STAY_IN_SAME_PLACE s7_exit_guys[6] TRUE TASK_TOGGLE_DUCK s7_exit_guys[6] TRUE CREATE_CHAR PEDTYPE_MISSION1 hmyst -2111.8081 -159.8649 34.3273 s7_exit_guys[7] SET_CHAR_HEADING s7_exit_guys[7] 138.7297 TASK_STAY_IN_SAME_PLACE s7_exit_guys[7] TRUE REPEAT 8 v GIVE_WEAPON_TO_CHAR s7_exit_guys[v] WEAPONTYPE_MICRO_UZI 1000 SET_CHAR_ACCURACY s7_exit_guys[v] 30 SET_CHAR_SHOOT_RATE s7_exit_guys[v] 30 SET_CHAR_DECISION_MAKER s7_exit_guys[v] s7_dm_tough SET_CHAR_RELATIONSHIP s7_exit_guys[v] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP s7_exit_guys[v] ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 SET_SENSE_RANGE s7_exit_guys[v] 70.0 SET_CHAR_IS_TARGET_PRIORITY s7_exit_guys[v] TRUE ENDREPEAT REQUEST_CAR_RECORDING 485 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 485 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD s7_bike_1 START_PLAYBACK_RECORDED_CAR s7_bike_1 485 PAUSE_PLAYBACK_RECORDED_CAR s7_bike_1 ENDIF GOSUB s7_fade_in IF s7_died_in_explosion = 1 AND NOT IS_CHAR_DEAD scplayer explosion: GET_CHAR_COORDINATES scplayer x y z REPEAT 4 v TASK_DIE scplayer GET_CHAR_COORDINATES scplayer x y z GENERATE_RANDOM_FLOAT_IN_RANGE -3.0 3.0 s7_rnd x = x + s7_rnd y = y + s7_rnd ADD_EXPLOSION x y z EXPLOSION_GRENADE GET_CHAR_COORDINATES scplayer x y z GENERATE_RANDOM_FLOAT_IN_RANGE -3.0 3.0 s7_rnd x = x + s7_rnd y = y + s7_rnd ADD_EXPLOSION x y z EXPLOSION_GRENADE GET_CHAR_COORDINATES scplayer x y z GENERATE_RANDOM_FLOAT_IN_RANGE -3.0 3.0 s7_rnd x = x + s7_rnd y = y + s7_rnd ADD_EXPLOSION x y z EXPLOSION_GRENADE WAIT 500 ENDREPEAT GOTO mission_syn7_failed ENDIF PRINT_NOW ( SYN7_23 ) 4000 1 // ~s~Get safely out of the courtyard s7_mission = 5 ENDIF ENDIF // ********************************************************************************************** // * * // * Leaving the compound * // * * // ********************************************************************************************** IF s7_mission = 5 // ********************************************************************************************** // * * // * Guy rolls out from corner * // * * // ********************************************************************************************** IF s7_roll_out = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2118.5403 -169.3188 34.3273 10.0 10.0 10.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -2118.5403 -169.3188 34.3273 10.0 10.0 10.0 FALSE IF NOT IS_CHAR_DEAD s7_exit_guys[7] OPEN_SEQUENCE_TASK s7_sequence_task TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_TOGGLE_DUCK -1 TRUE TASK_WEAPON_ROLL -1 FALSE TASK_TOGGLE_DUCK -1 TRUE CLOSE_SEQUENCE_TASK s7_sequence_task PERFORM_SEQUENCE_TASK s7_exit_guys[7] s7_sequence_task CLEAR_SEQUENCE_TASK s7_sequence_task ENDIF s7_roll_out = 1 ENDIF ENDIF // ********************************************************************************************** // * * // * Car drives in to compound * // * * // ********************************************************************************************** IF s7_drive_in = 1 IF NOT IS_CAR_DEAD s7_bike_1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR s7_bike_1 IF NOT IS_CHAR_DEAD s7_exit_guys[2] TASK_LEAVE_CAR s7_exit_guys[2] s7_bike_1 ENDIF IF NOT IS_CHAR_DEAD s7_exit_guys[3] TASK_LEAVE_CAR s7_exit_guys[3] s7_bike_1 ENDIF s7_drive_in = 2 ENDIF ENDIF ENDIF IF IS_CHAR_IN_AREA_3D scplayer -2097.7227 -109.9725 30.0000 -2155.9922 -122.7420 40.0000 FALSE AND s7_drive_in = 0 IF NOT IS_CAR_DEAD s7_bike_1 AND IS_PLAYBACK_GOING_ON_FOR_CAR s7_bike_1 IF NOT IS_CAR_DEAD s7_bike_1 UNPAUSE_PLAYBACK_RECORDED_CAR s7_bike_1 ENDIF ENDIF s7_drive_in = 1 ENDIF IF s7_in_compound = 0 AND s7_drive_in = 0 IF NOT IS_CAR_DEAD s7_bike_1 AND IS_PLAYBACK_GOING_ON_FOR_CAR s7_bike_1 IF NOT IS_CAR_DEAD s7_bike_1 UNPAUSE_PLAYBACK_RECORDED_CAR s7_bike_1 ENDIF ENDIF TIMERA = 0 s7_gate_closing = 1 s7_drive_in = 1 ENDIF // ********************************************************************************************** // * * // * Shut the gates * // * * // ********************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2127.3696 -85.4970 35.5234 20.0 20.0 10.0 FALSE AND s7_gate_closing = 0 TIMERA = 0 s7_gate_closing = 1 PRINT_NOW ( SYN7_13 ) 3000 1 // ~s~They've shut the gate! ENDIF IF TIMERA > 4500 AND s7_gate_closing = 1 IF NOT IS_CAR_DEAD s7_bike_1 IF s7_respawned = 0 ADD_BLIP_FOR_CAR s7_bike_1 s7_truck_blip SET_BLIP_AS_FRIENDLY s7_truck_blip TRUE ENDIF ENDIF LVAR_INT s7_temp_gen ADD_BLIP_FOR_COORD -2145.9626 -117.1968 38.1988 s7_escape_ramp CHANGE_BLIP_DISPLAY s7_escape_ramp NEITHER REMOVE_BLIP s7_gates PRINT_NOW ( SYN7_38 ) 5000 1 // ~s~Use the ~b~Car ~s~to ramp over the wall. s7_gate_closing = 2 CREATE_CHAR PEDTYPE_MISSION1 HMYST -2107.3704 -146.9669 34.3273 s7_backtrack[0] SET_CHAR_HEADING s7_backtrack[0] 174.6227 CREATE_CHAR PEDTYPE_MISSION1 BMYCG -2107.3704 -146.9669 34.3273 s7_backtrack[1] SET_CHAR_HEADING s7_backtrack[1] 174.6227 CREATE_CHAR PEDTYPE_MISSION1 HMYST -2136.1091 -180.0674 34.3203 s7_backtrack[2] SET_CHAR_HEADING s7_backtrack[2] 297.2213 CREATE_CHAR PEDTYPE_MISSION1 BMYCG -2140.6001 -169.5873 34.3203 s7_backtrack[3] SET_CHAR_HEADING s7_backtrack[3] 258.2443 CREATE_CHAR PEDTYPE_MISSION1 BMYCG -2143.4626 -147.7724 35.3922 s7_backtrack[4] SET_CHAR_HEADING s7_backtrack[4] 209.4012 REPEAT 5 v GIVE_WEAPON_TO_CHAR s7_backtrack[v] WEAPONTYPE_MICRO_UZI 1000 SET_CHAR_DECISION_MAKER s7_backtrack[v] s7_dm_tough SET_CHAR_RELATIONSHIP s7_backtrack[v] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP s7_backtrack[v] ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 SET_SENSE_RANGE s7_backtrack[v] 70.0 SET_CHAR_IS_TARGET_PRIORITY s7_backtrack[v] TRUE ENDREPEAT ENDIF IF TIMERA > 10000 AND s7_gate_closing = 2 s7_gate_closing = 3 ENDIF IF IS_CAR_DEAD s7_bike_1 IF DOES_BLIP_EXIST s7_truck_blip REMOVE_BLIP s7_truck_blip ENDIF CHANGE_BLIP_DISPLAY s7_escape_ramp BOTH ENDIF IF NOT IS_CAR_DEAD s7_bike_1 IF NOT IS_CHAR_IN_CAR scplayer s7_bike_1 AND s7_gate_closing > 1 CHANGE_BLIP_DISPLAY s7_truck_blip BOTH IF DOES_BLIP_EXIST s7_escape_ramp CHANGE_BLIP_DISPLAY s7_escape_ramp NEITHER ENDIF ELSE CHANGE_BLIP_DISPLAY s7_truck_blip NEITHER IF DOES_BLIP_EXIST s7_escape_ramp CHANGE_BLIP_DISPLAY s7_escape_ramp BOTH ENDIF ENDIF ENDIF IF s7_in_compound = 0 IF DOES_BLIP_EXIST s7_gates REMOVE_BLIP s7_gates ENDIF IF DOES_BLIP_EXIST s7_escape_ramp REMOVE_BLIP s7_escape_ramp ENDIF IF DOES_BLIP_EXIST s7_escape_ramp REMOVE_BLIP s7_truck_blip ENDIF s7_mission = 6 ADD_BLIP_FOR_COORD -2029.6029 156.7249 27.8429 s7_home_blip PRINT_NOW ( SYN7_39 ) 6000 1 // ~s~Get back to the ~y~Garage ENDIF // ********************************************************************************************** // * * // * Ramp over to safety * // * * // ********************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2149.3635 -111.5658 40.9064 3.0 3.0 3.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -2143.4290 -111.1119 41.0391 3.0 3.0 3.0 FALSE IF s7_velocity > 10.0 AND IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer car SET_CAR_FORWARD_SPEED car 25.0 SWITCH_WIDESCREEN ON CLEAR_HELP CLEAR_PRINTS SET_TIME_SCALE 0.4 SET_CHAR_HEADING scplayer 0.6201 SET_FIXED_CAMERA_POSITION -2133.0652 -103.2940 37.6357 0.0 0.0 0.0 POINT_CAMERA_AT_CHAR scplayer FIXED JUMP_CUT WAIT 1700 SET_TIME_SCALE 1.0 SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2146.6755 -90.7008 40.5966 4.0 4.0 6.0 FALSE IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer -2152.4226 -75.3105 34.3203 SET_CHAR_HEADING scplayer 357.8863 ENDIF SET_CAMERA_BEHIND_PLAYER IF NOT IS_CAR_DEAD car SET_CAR_FORWARD_SPEED car 0.0 ENDIF ENDIF ENDIF ENDIF ENDIF // ********************************************************************************************** // * * // * Close the gate * // * * // ********************************************************************************************** IF DOES_OBJECT_EXIST s7_front_gate GET_OBJECT_COORDINATES s7_front_gate x y z IF x > -2127.0000 AND s7_gate_closing = 1 SLIDE_OBJECT s7_front_gate -2127.0000 -80.8000 34.3281 0.20 0.0 0.0 FALSE ENDIF ENDIF // ********************************************************************************************** // * * // * Heading back to the garage * // * * // ********************************************************************************************** IF s7_mission = 6 DISPLAY_RADAR 3 // PATHING ON IF DOES_BLIP_EXIST s7_truck_blip REMOVE_BLIP s7_truck_blip ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer -2029.6029 156.7249 27.8429 4.0 4.0 4.0 TRUE REMOVE_BLIP s7_home_blip GOTO mission_syn7_passed ENDIF ENDIF // ********************************************************************************************** // * * // * In car out of car blips * // * * // ********************************************************************************************** IF NOT IS_CAR_DEAD s7_bomb_car AND NOT s7_mission = 0 AND NOT s7_mission > 3 IF NOT IS_CHAR_IN_CAR scplayer s7_bomb_car PRINT_NOW ( SYN7_32 ) 100 1 // ~s~Get back in the car! IF s7_get_back = 0 CHANGE_BLIP_DISPLAY s7_bomb_car_blip BOTH IF s7_mission = 1 CHANGE_BLIP_DISPLAY s7_gates NEITHER ENDIF IF s7_mission = 2 CHANGE_BLIP_DISPLAY s7_ramp_blip NEITHER ENDIF IF s7_mission = 3 CHANGE_BLIP_DISPLAY s7_plant_car_blip NEITHER ENDIF s7_get_back = 1 ENDIF ELSE IF s7_get_back = 1 CHANGE_BLIP_DISPLAY s7_bomb_car_blip NEITHER IF s7_mission = 1 CHANGE_BLIP_DISPLAY s7_gates BOTH ENDIF IF s7_mission = 2 CHANGE_BLIP_DISPLAY s7_ramp_blip BOTH ENDIF IF s7_mission = 3 CHANGE_BLIP_DISPLAY s7_plant_car_blip BOTH ENDIF s7_get_back = 0 ENDIF ENDIF ENDIF // ********************************************************************************************** // * * // * Car gets destroyed * // * * // ********************************************************************************************** IF IS_CAR_DEAD s7_bomb_car AND s7_mission < 4 PRINT_NOW ( SYN7_36 ) 4000 1 // ~r~The car has been destroyed! GOTO mission_syn7_failed ENDIF // ********************************************************************************************** // * * // * Car gets destroyed * // * * // ********************************************************************************************** IF IS_CAR_DEAD s7_bike_1 AND s7_mission >= 5 AND s7_gate_closing >= 2 IF NOT s7_mission = 6 PRINT_NOW ( SYN7_53 ) 4000 1 // ~s~Find another ~b~car ~s~so you can stunt jump out of the yard! ENDIF IF DOES_BLIP_EXIST s7_truck_blip REMOVE_BLIP s7_truck_blip ENDIF IF s7_in_compound = 1 MARK_CAR_AS_NO_LONGER_NEEDED s7_bike_1 s7_respawned = 1 IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer -2116.2642 -200.0631 34.3273 30.0 30.0 30.0 FALSE CLEAR_AREA -2116.2642 -200.0631 34.3273 10.0 TRUE CREATE_CAR VOODOO -2116.2642 -200.0631 34.3273 s7_bike_1 SET_CAN_BURST_CAR_TYRES s7_bike_1 FALSE SET_CAR_CRUISE_SPEED s7_bike_1 40.0 SET_CAR_HEADING s7_bike_1 352.5713 ADD_BLIP_FOR_CAR s7_bike_1 s7_truck_blip SET_BLIP_AS_FRIENDLY s7_truck_blip TRUE ELSE CLEAR_AREA -2116.2642 -200.0631 34.3273 10.0 TRUE CREATE_CAR VOODOO -2124.6057 -87.9687 34.3203 s7_bike_1 SET_CAN_BURST_CAR_TYRES s7_bike_1 FALSE SET_CAR_CRUISE_SPEED s7_bike_1 40.0 SET_CAR_HEADING s7_bike_1 231.2455 ADD_BLIP_FOR_CAR s7_bike_1 s7_truck_blip SET_BLIP_AS_FRIENDLY s7_truck_blip TRUE ENDIF ENDIF ENDIF ENDWHILE GOTO mission_syn7_failed // ****************************************************************************************************** // * * // * Delete Guards / Workers * // * * // ****************************************************************************************************** s7_cleanup: REPEAT 5 v DELETE_CHAR s7_workers[v] ENDREPEAT REPEAT 5 v DELETE_CHAR s7_cavalry[v] ENDREPEAT RETURN // ****************************************************************************************************** // * * // * MISSION PASSED * // * * // ****************************************************************************************************** mission_syn7_passed: WRITE_LOG "UNLOCK_ACHIEVEMENT WHAT_HAPPENS_IN_LAS_VENTURAS" REMOVE_BLIP garage_contact_blip REMOVE_IPL Barriers2 PRINT_WITH_NUMBER_BIG ( M_PASSS ) 25000 5000 1 //"Mission Passed!" //100 being the amount of cash ADD_SCORE player1 25000//amount of cash AWARD_PLAYER_MISSION_RESPECT 60 //amount of respect CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 PLAYER_MADE_PROGRESS 1 REGISTER_MISSION_PASSED ( SYND_7 ) // Yay Ka-Boom-Boom(syn7-PD) flag_synd_mission_counter++ SET_INT_STAT CITIES_PASSED 2 SET_INT_STAT PASSED_SYNDICATE_AND_WOOZIE 1 //Gant Bridge ( Golden Gate ) SWITCH_ROADS_ON -2696.4641 1239.8665 40.7599 -2665.3591 2190.9604 70.8125 // Main Section. SWITCH_ROADS_ON -2740.6941 2233.6179 40.8431 -2720.9102 2338.2244 80.4822 // Country Section. SWITCH_ROADS_ON -2695.5842 1237.9807 40.7328 -2664.4170 1454.7675 60.8126 // The Panopticon ( Red metal bridge in D6 ) SWITCH_ROADS_ON -995.0013 -416.2032 30.4207 -940.5399 -251.8564 40.6762 //Red County ( E5 Red curved bridge ) SWITCH_ROADS_ON -205.8387 250.7443 7.2472 -131.0039 481.8496 15.9152 //Flint County ( E7 small road bridge ) SWITCH_ROADS_ON -100.7515 -927.8298 18.0 -68.3752 -891.9871 14.0 //Hampton Barns ( F5 Hexagonal Style framing ) SWITCH_ROADS_ON 609.7595 327.3437 15.8783 429.8884 616.0168 20.2890 SWITCH_ROADS_ON 317.1688 707.7672 7.0 437.5726 709.0657 20.5578 SWITCH_ROADS_ON 391.1194 640.0150 7.0 402.2627 664.7980 18.5098 SWITCH_ROADS_ON 289.2904 636.3991 7.8675 409.4943 702.3849 20.0345 SWITCH_ROADS_ON 300.3153 718.7909 7.7846 316.7906 781.0926 14.0795 SWITCH_ROADS_ON 254.9982 837.0290 10.1731 270.7453 929.2404 30.2553 SWITCH_ROADS_ON 210.7811 939.2068 10.9062 249.4799 959.1111 30.2141 SWITCH_ROADS_ON 230.4545 946.0961 20.6674 255.9772 969.2755 30.4776 SWITCH_ROADS_ON 249.4279 899.7975 10.5871 268.6826 933.5995 30.3975 SWITCH_ROADS_ON 312.1081 694.1089 6.0 324.0811 733.0005 10.0 SWITCH_ROADS_ON 324.4526 804.9198 9.6186 332.8747 814.3560 14.3925 //Montgomery Intersection ( I5 potential hotspot! ) SWITCH_ROADS_ON 1690.8192 376.5103 28.1103 1730.2230 445.2955 30.8414 SWITCH_ROADS_ON 1643.5355 227.3723 27.4457 1673.0623 295.5788 30.0815 SWITCH_ROADS_ON 1673.7654 388.1013 40.2331 1815.8619 804.9291 10.0 // Bridge section. SWITCH_ROADS_ON 1705.1558 308.3448 20.0 1710.9475 316.4094 23.5612 // Slip Road. //Wee metal side bridge in E8 near Flint Intersection SWITCH_ROADS_ON -12.7067 -1522.4554 1.0 80.8463 -1517.1113 5.0 SWITCH_ROADS_ON -16.3392 -1532.8817 0.0394 69.3401 -1523.7710 5.9220 //Complicated tunnel bit from F8 to G8 SWITCH_ROADS_ON 618.7253 -1189.6063 18.0 623.5441 -1161.9812 22.0 //Main Section blocker SWITCH_ROADS_ON -33.4208 -1341.8403 9.0 35.3764 -1303.9479 13.0 //Close Southbound traffic SWITCH_ROADS_ON -41.2393 -1385.8701 8.0 -3.5883 -1368.8558 10.5 //Fiddly section to stop northbound traffic but keep ring round open //Garver Bridge ( Forth Road ) SWITCH_ROADS_ON -1690.7048 539.6102 30.3278 -1100.5674 1140.5695 50.7350 SWITCH_ROADS_ON -1799.5405 379.7155 16.0 -1780.1991 392.2779 18.0 SWITCH_ROADS_ON -1092.4293 1286.5054 30.0 -1077.0385 1319.4948 35.0 SWITCH_ROADS_ON -1860.1334 314.7891 38.0 -1638.5630 557.4354 40.0 SWITCH_ROADS_ON -1737.3331 455.9431 30.3573 -1710.3633 500.6261 40.4891 SWITCH_ROADS_ON -1689.2291 513.0995 30.2597 -1679.1241 524.8383 40.2500 SWITCH_ROADS_ON -1742.9060 500.7302 30.4679 -1650.3119 551.8201 40.7455 SWITCH_ROADS_OFF -1761.9504 507.8931 35.0533 -1751.3606 531.5917 41.3335 //SAN FRAN ROAD BACK OFF RETURN // ****************************************************************************************************** // * * // * MISSION FAILED * // * * // ****************************************************************************************************** mission_syn7_failed: PRINT_BIG ( M_FAIL ) 5000 1 IF NOT IS_CHAR_DEAD scplayer IF HAS_CHAR_BEEN_ARRESTED scplayer OVERRIDE_NEXT_RESTART -1605.7917 716.8598 11.0241 355.2978 // Cop Shop ENDIF ELSE OVERRIDE_NEXT_RESTART -2670.2854 616.4364 13.4531 183.1042 // Hospital ENDIF RETURN // ****************************************************************************************************** // * * // * MISSION CLEAN-UP * // * * // ****************************************************************************************************** mission_cleanup_syn7: DISPLAY_RADAR 3 // PATHING ON IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF // Density Multipliers REMOVE_CAR_RECORDING 483 REMOVE_CAR_RECORDING 485 SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 CLEAR_ONSCREEN_TIMER s7_timer SWITCH_ROADS_BACK_TO_ORIGINAL -2175.8174 -55.8818 27.0000 -2059.2053 -99.4399 37.0000 SWITCH_PED_ROADS_BACK_TO_ORIGINAL -2175.8174 -55.8818 27.0000 -2059.2053 -99.4399 37.0000 SWITCH_PED_ROADS_BACK_TO_ORIGINAL -2107.9805 -71.8985 30.0000 -2160.2563 -89.7108 37.0000 IF DOES_BLIP_EXIST s7_bombshop_blip REMOVE_BLIP s7_bombshop_blip ENDIF IF DOES_BLIP_EXIST s7_bomb_car_blip REMOVE_BLIP s7_bomb_car_blip ENDIF IF DOES_BLIP_EXIST s7_gates REMOVE_BLIP s7_gates ENDIF IF DOES_BLIP_EXIST s7_ramp_blip REMOVE_BLIP s7_ramp_blip ENDIF IF DOES_BLIP_EXIST s7_plant_car_blip REMOVE_BLIP s7_plant_car_blip ENDIF IF DOES_BLIP_EXIST s7_exit_door_blip REMOVE_BLIP s7_exit_door_blip ENDIF IF DOES_BLIP_EXIST s7_escape_ramp REMOVE_BLIP s7_escape_ramp ENDIF IF DOES_BLIP_EXIST s7_truck_blip REMOVE_BLIP s7_truck_blip ENDIF REPEAT 2 v IF DOES_BLIP_EXIST s7_gate_guard_blip[v] REMOVE_BLIP s7_gate_guard_blip[v] ENDIF ENDREPEAT IF IS_ANY_PICKUP_AT_COORDS -2182.6523 -247.3813 36.4000 REMOVE_PICKUP s7_health ENDIF flag_player_on_mission = 0 SET_GROUP_SEPARATION_RANGE Players_Group 30.0 GET_GAME_TIMER timer_mobile_start REMOVE_ALL_SCRIPT_FIRES MARK_MODEL_AS_NO_LONGER_NEEDED tampa MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH REMOVE_ANIMATION CAR REMOVE_ANIMATION ON_LOOKERS REMOVE_ANIMATION INT_HOUSE MARK_MODEL_AS_NO_LONGER_NEEDED BMYCG MARK_MODEL_AS_NO_LONGER_NEEDED hmyst MARK_MODEL_AS_NO_LONGER_NEEDED hmyri MARK_MODEL_AS_NO_LONGER_NEEDED micro_uzi MARK_MODEL_AS_NO_LONGER_NEEDED VOODOO MARK_MODEL_AS_NO_LONGER_NEEDED DYN_RAMP MARK_MODEL_AS_NO_LONGER_NEEDED cellphone MARK_MODEL_AS_NO_LONGER_NEEDED WFYCRK MARK_MODEL_AS_NO_LONGER_NEEDED HMYCM MARK_MODEL_AS_NO_LONGER_NEEDED MOLOTOV MARK_MODEL_AS_NO_LONGER_NEEDED health MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MISSION_HAS_FINISHED RETURN s7_set_camera: IF NOT IS_CHAR_DEAD scplayer CLEAR_PRINTS CLEAR_HELP SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF ENDIF RETURN s7_restore_camera: IF NOT IS_CHAR_DEAD scplayer CLEAR_PRINTS CLEAR_HELP SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER ENDIF RETURN s7_fade_out: DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN s7_fade_in: DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN // ***************************************************************************************** // * * // * Keyboard shortcuts * // * * // ***************************************************************************************** s7_keys: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_Y IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer -1705.8823 1028.9674 44.1953 SET_CHAR_HEADING scplayer 299.1340 s7_start_call = 8 ENDIF IF NOT IS_CHAR_DEAD scplayer TASK_USE_MOBILE_PHONE scplayer FALSE ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer -2064.0569 -68.6422 34.1563 SET_CHAR_HEADING scplayer 94.0454 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F REMOVE_IPL CRACK REQUEST_IPL FUKDCRAK ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer -2064.0569 -68.6422 34.1563 SET_CHAR_HEADING scplayer 94.0454 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_L s7_mission = 5 ENDIF RETURN s7_load_sample: CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 s7_audio s7_playing = 0 RETURN s7_play_sample: IF HAS_MISSION_AUDIO_LOADED 1 AND s7_playing = 0 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $s7_print ) 10000 1 s7_playing = 1 ENDIF IF HAS_MISSION_AUDIO_FINISHED 1 AND s7_playing = 1 CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT $s7_print s7_playing = 2 ENDIF RETURN } /* { ---------------- Blow Up Crack Factory "Syndicate 7" -------------} [SYN7_01:SYN7] ~s~Go and pick up the wired car from the ~y~Bomb Shop~s~. [SYN7_03:SYN7] ~s~ Park the car inside the ~y~Crack lab~s~. [SYN7_05:SYN7] ~s~ Bomb activated. [SYN7_6:SYN7] ~o~ = Activate bomb, but only do so when car is in position. [SYN7_8:SYN7] ~s~Get as far away from the crack lab as possible! [SYN7_9:SYN7] ~r~The blast did not destroy the crack lab! [SYN7_13:SYN7] ~s~They've shut the gate! [SYN7_18:SYN7] Bomb : ~1~ [SYN7_20:SYN7] ~o~ = Activate bomb. [SYN7_23:SYN7] ~s~Escape out the ~y~Main gates~s~. [SYN7_24:SYN7] ~r~You got caught in the blast! [SYN7_29:SYN7] ~s~Get back in the ~b~car ~s~and set the bomb! [SYN7_32:SYN7] ~s~Get back in the ~b~car~s~! [SYN7_34:SYN7] ~s~Park the car near the ~y~Chemical containers~s~. [SYN7_35:SYN7] ~s~Use the ~y~Ramp ~s~to get into the crack lab. [SYN7_36:SYN7] ~r~The car has been destroyed! [SYN7_37:SYN7] ~s~Get out of the warehouse before the timer runs out. [SYN7_38:SYN7] ~s~Use the ~b~Car ~s~to ramp over the wall. [SYN7_39:SYN7] ~s~Get back to the ~y~Garage~s~. [SYN7_41:SYN7] Hey, dude, is it ready? [SYN7_42:SYN7] She's all set. Get in. [SYN7_43:SYN7] She's packing enough to take out that crack lab. [SYN7_44:SYN7] I've wired in a delay timer, to give you time to get out. [SYN7_45:SYN7] Ok, thanks, dude. [SYN7_46:SYN7] Hey, some loco basta blasting on our boys! [SYN7_47:SYN7] It's a hit! [SYN7_48:SYN7] We're being hit! [SYN7_49:SYN7] Get out there and kill the fool! [SYN7_50:SYN7] Open the gates and waste the dumb fuck! [SYN7_51:SYN7] Blast the moron, open the gate! [SYN7_52:SYN7] ~s~Kill the ~r~Guards~s~, that will get their attention. [SYN7_53:SYN7] What the fuck is going on! [SYN7_54:SYN7] Hey! you can't drive that in here. [SYN7_55:SYN7] This ain't no car park, get the fuck out! */ MISSION_START // ***************************************************************************************** // ***************************** syn5 ***************************************************** // ***************************************************************************************** // ***************************************************************************************** // **************************PIMP STYLE***************************************************** // ***************************************************************************************** SCRIPT_NAME syn5 // Mission start stuff GOSUB mission_start_syn5 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_syn5_failed ENDIF GOSUB mission_cleanup_syn5 MISSION_END { // Variables for mission //people LVAR_INT syn5_toreno syn5_tbone syn5_wuzi_goons[3] syn5_ryder_goons[6] syn5_tbone_goons[6] syn5_random_goons[4] LVAR_INT syn5_ryders_car syn5_ryder_goon_cars[2] syn5_toreno_chopper LVAR_INT syn5_teargas[6] LVAR_INT syn5_boat[2] LVAR_INT syn5_party_dudes[5] LVAR_INT syn5_fire LVAR_INT syn5_sniper_anim LVAR_INT syn5_random_car LVAR_INT syn5_dummy_car LVAR_INT syn5_tbones_car LVAR_INT syn5_cesars_car LVAR_INT syn5_woodpile //blips LVAR_INT syn5_blip syn5_sniper_blips[6] syn5_boat_blip //flags LVAR_INT syn5_goals syn5_control_flag syn5_skip_cutscene_flag syn5_deathcheck_flag LVAR_INT syn5_ammo_flag syn5_killing_wuzi_men_flag syn5_wuzi_men_count syn5_wuzi_men_killed_flag[3] LVAR_INT syn5_wuzi_number_flag LVAR_INT syn5_killing_sniper_flag syn5_killing_sniper_count syn5_sniper_killed_count_flag[6] LVAR_INT syn5_sniper_number_flag LVAR_INT syn5_char_select_flag syn5_char_select[7] LVAR_INT syn5_sniper_control_flag[6] LVAR_INT syn5_wuzi_control_flag LVAR_INT syn5_wuzi_goons_control_flag[3] LVAR_INT syn5_controlling_tbone LVAR_INT syn5_flag_cesar_in_group LVAR_INT syn5_does_player_have_sniperrifle LVAR_INT syn5_no_plates syn5_no_plates_flag LVAR_INT syn5_accuracy LVAR_FLOAT syn5_anim_time //speech LVAR_INT syn5_speech_goals syn5_speech_flag syn5_speech_control_flag syn5_random_last_label LVAR_TEXT_LABEL syn5_print_label[16] LVAR_INT syn5_audio_label[16] LVAR_INT syn5_last_label LVAR_INT syn5_slot1 syn5_slot2 syn5_slot_load syn5_play_which_slot LVAR_INT syn5_storing_speech_goals_number syn5_storing_speech_control_number //coords LVAR_FLOAT syn5_x syn5_y syn5_z syn5_animtime //sequences/decision makers/threat lists/attractors/groups LVAR_INT syn5_seq syn5_ped_decisions syn5_empty_ped_decision_maker LVAR_INT syn5_ryder_seq2 syn5_ryder_seq3 syn5_ryder_seq5 //debug // ****************************************Mission Start************************************ mission_start_syn5: flag_player_on_mission = 1 CLEAR_BIT iDateReport MEETING_IN_PROGRESS REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT SYN5 IF flag_player_on_mission = 0 CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1686.2 1393.2 20.5 syn5_tbone_goons[0] CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1686.2 1393.2 20.5 syn5_tbone_goons[1] CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1686.2 1393.2 20.5 syn5_tbone_goons[2] CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1686.2 1393.2 20.5 syn5_tbone_goons[3] CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1686.2 1393.2 20.5 syn5_tbone_goons[4] CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1686.2 1393.2 20.5 syn5_tbone_goons[5] CREATE_CHAR PEDTYPE_MISSION1 TRIBOSS -1674.5 1337.0 6.2 wuzi CREATE_CHAR PEDTYPE_MISSION1 syn5_char_select[syn5_char_select_flag] -1675.7 1336.1 6.2 syn5_wuzi_goons[0] CREATE_CHAR PEDTYPE_MISSION1 syn5_char_select[syn5_char_select_flag] -1675.7 1336.1 6.2 syn5_wuzi_goons[1] CREATE_CHAR PEDTYPE_MISSION1 syn5_char_select[syn5_char_select_flag] -1675.7 1336.1 6.2 syn5_wuzi_goons[2] CREATE_CHAR PEDTYPE_MISSION2 SPECIAL04 -1716.0 1349.8 6.2 syn5_tbone CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1716.8 1351.6 6.2 syn5_tbone_goons[0] CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1717.5 1350.7 6.2 syn5_tbone_goons[1] CREATE_CAR PICADOR -1774.2 1376.8 5.7 syn5_ryders_car CREATE_CHAR_INSIDE_CAR syn5_ryders_car PEDTYPE_MISSION2 SPECIAL02 ryder CREATE_CHAR_AS_PASSENGER syn5_ryders_car PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1 syn5_ryder_goons[0] CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1774.2 1376.8 5.7 syn5_ryder_goons[1] CREATE_CAR tahoma -1784.2 1379.8 5.7 syn5_ryder_goon_cars[0] CREATE_CHAR_INSIDE_CAR syn5_ryder_goon_cars[0] PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] syn5_ryder_goons[2] CREATE_CHAR_AS_PASSENGER syn5_ryder_goon_cars[0] PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] 0 syn5_ryder_goons[3] CREATE_CAR tahoma -1795.0 1383.6 5.7 syn5_ryder_goon_cars[1] CREATE_CHAR_INSIDE_CAR syn5_ryder_goon_cars[1] PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] syn5_ryder_goons[4] CREATE_CHAR_AS_PASSENGER syn5_ryder_goon_cars[1] PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] 0 syn5_ryder_goons[5] CREATE_CAR maverick -1583.3 1420.2 25.7 syn5_toreno_chopper CREATE_CHAR_AS_PASSENGER syn5_toreno_chopper PEDTYPE_MISSION2 SPECIAL03 0 syn5_toreno ENDIF CLEAR_PRINTS CLEAR_THIS_PRINT_BIG_NOW 1 WAIT 0 // *************************************Set Flags/variables********************************* syn5_goals = 0 syn5_control_flag = 0 syn5_skip_cutscene_flag = 0 syn5_deathcheck_flag = 0 syn5_speech_flag = 0 syn5_ammo_flag = 0 syn5_killing_wuzi_men_flag = 0 syn5_wuzi_men_count = 3 syn5_wuzi_men_killed_flag[0] = 0 syn5_wuzi_men_killed_flag[1] = 0 syn5_wuzi_men_killed_flag[2] = 0 syn5_killing_sniper_flag = 0 syn5_killing_sniper_count = 6 syn5_wuzi_number_flag = 0 syn5_sniper_number_flag = 0 syn5_sniper_killed_count_flag[0] = 0 syn5_sniper_killed_count_flag[1] = 0 syn5_sniper_killed_count_flag[2] = 0 syn5_sniper_killed_count_flag[3] = 0 syn5_sniper_killed_count_flag[4] = 0 syn5_sniper_killed_count_flag[5] = 0 syn5_char_select_flag = 0 syn5_sniper_number_flag = 0 syn5_char_select[0] = SFR1 syn5_char_select[1] = SFR2 syn5_char_select[3] = BALLAS1 syn5_char_select[4] = BALLAS2 syn5_sniper_control_flag[0] = 0 syn5_sniper_control_flag[1] = 0 syn5_sniper_control_flag[2] = 0 syn5_sniper_control_flag[3] = 0 syn5_sniper_control_flag[4] = 0 syn5_sniper_control_flag[5] = 0 syn5_wuzi_control_flag = 0 syn5_wuzi_goons_control_flag[0] = 0 syn5_wuzi_goons_control_flag[1] = 0 syn5_wuzi_goons_control_flag[2] = 0 syn5_controlling_tbone = 0 syn5_flag_cesar_in_group = 0 syn5_speech_goals = 0 syn5_speech_flag = 0 syn5_speech_control_flag = 0 syn5_random_last_label = 0 syn5_last_label = 0 syn5_slot1 = 0 syn5_slot2 = 0 syn5_slot_load = 0 syn5_play_which_slot = 0 syn5_storing_speech_goals_number = 0 syn5_storing_speech_control_number = 0 syn5_x = 0.0 syn5_y = 0.0 syn5_z = 0.0 syn5_does_player_have_sniperrifle = 0 syn5_no_plates = 0 syn5_no_plates_flag = 0 syn5_accuracy = 80 // ****************************************START OF CUTSCENE******************************** // ****************************************END OF CUTSCENE********************************** SET_FADING_COLOUR 0 0 0 WAIT 0 FORCE_WEATHER WEATHER_SUNNY_SF //------------------REQUEST_MODELS ------------------------------ DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE MAKE_PLAYER_GANG_DISAPPEAR LOAD_SPECIAL_CHARACTER 1 cesar REQUEST_MODEL SNIPER REQUEST_MODEL BANSHEE REQUEST_MODEL SNIPER_anim REQUEST_ANIMATION MISC REQUEST_MODEL SFR1 REQUEST_MODEL SFR2 REQUEST_MODEL CELLPHONE REQUEST_MODEL TEC9 REQUEST_MODEL TRIBOSS REQUEST_MODEL TRIADA REQUEST_MODEL SAVANNA LOAD_ALL_MODELS_NOW REMOVE_GROUP Players_Group SET_PLAYER_GROUP_RECRUITMENT player1 FALSE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH syn5_ped_decisions /////////////////////////////// DECISION MAKER SHIT ////////////////////////////////////////////// SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 PEDTYPE_PLAYER1 ////1 is good GUYS SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_MISSION2 ////1 is good GUYS //SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 PEDTYPE_MISSION1 ////2 is bad GUYS SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 PEDTYPE_PLAYER1 COPY_CHAR_DECISION_MAKER DM_PED_EMPTY syn5_empty_ped_decision_maker //creating cesar's car CLEAR_AREA -1748.3 1263.0 7.0 5.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR SAVANNA &_LVA4L__ CREATE_CAR SAVANNA -1748.3 1263.0 7.0 syn5_cesars_car SET_CAR_HEADING syn5_cesars_car 291.3 CHANGE_CAR_COLOUR syn5_cesars_car 3 3 //creating cesar CLEAR_AREA -1720.7 1277.3 16.9 2.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 -1720.7 1277.3 16.9 cesar SET_CHAR_HEADING cesar 317.9 GIVE_WEAPON_TO_CHAR cesar WEAPONTYPE_SNIPERRIFLE 12 SET_CHAR_NEVER_TARGETTED cesar TRUE SET_CHAR_DECISION_MAKER cesar syn5_empty_ped_decision_maker SET_CHAR_ONLY_DAMAGED_BY_PLAYER cesar TRUE SET_CHAR_STAY_IN_SAME_PLACE cesar TRUE SET_CHAR_HEADING scplayer 0.0 SET_CAMERA_BEHIND_PLAYER ADD_BLIP_FOR_CHAR cesar syn5_blip SET_BLIP_AS_FRIENDLY syn5_blip TRUE CLEAR_AREA -1717.5 1281.6 6.2 1.0 TRUE SET_CHAR_COORDINATES scplayer -1717.5 1281.6 6.2 SET_CHAR_HEADING scplayer 143.8 SWITCH_RANDOM_TRAINS OFF SWITCH_PED_ROADS_OFF -1755.6 1256.6 0.0 -1598.2 1660.1 50.0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE CLEAR_AREA -1716.7 1282.6 6.5 2.0 TRUE SET_FIXED_CAMERA_POSITION -1716.7 1282.6 6.5 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1722.3 1276.0 16.9 JUMP_CUT ENABLE_AMBIENT_CRIME FALSE timera = 0 /* /////////////DEBUG////////////////// syn5_control_flag = 3 SET_CHAR_COORDINATES scplayer -1721.6 1273.8 16.9 /////////////DEBUG////////////////// */ // just disable pathing for this mission, it's pointless DISPLAY_RADAR 2 // PATHING OFF DO_FADE 500 FADE_IN mission_syn5_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_syn5_passed ENDIF ALTER_WANTED_LEVEL player1 0 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// DEATHCHECKS /////////////////////////////////////////////////////////////////////////////////// GOSUB syn5_death_checks IF syn5_goals = 10 GOTO syn_goals10 ENDIF IF syn5_deathcheck_flag = 1 GOTO mission_syn5_failed ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////Waiting for player to reach cesar/////////////////////////////////////////////////////////////// IF syn5_goals = 0 /////////// INITIAL CUTSCENE ///////////////// IF syn5_control_flag = 0 IF timera > 500 //speech of cesar telling player he is above him IF syn5_speech_flag = 0 syn5_speech_goals = 1 syn5_speech_control_flag = 0 GOSUB syn5_dialogue_setup syn5_speech_flag = 1 syn5_skip_cutscene_flag = 1 SKIP_CUTSCENE_START syn5_control_flag = 1 ENDIF ENDIF ENDIF IF syn5_control_flag = 1 IF syn5_speech_goals = 0 timera = 0 syn5_control_flag = 2 ENDIF ENDIF IF syn5_control_flag = 2 IF timera > 1000 syn5_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB syn5_death_checks IF syn5_goals = 10 GOTO syn_goals10 ENDIF IF syn5_deathcheck_flag = 1 GOTO mission_syn5_failed ENDIF //if cutscene has been skipped //////////////////////////////////////////// IF syn5_skip_cutscene_flag = 1 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS syn5_speech_goals = 0 ENDIF CLEAR_AREA -1721.4 1276.2 16.9 1.0 TRUE SET_CHAR_COORDINATES cesar -1721.4 1276.2 16.9 SET_CHAR_HEADING cesar 326.3 //TASK_AIM_GUN_AT_COORD cesar -1715.4 1287.5 16.5 -1 PRINT_NOW ( SYN5_01 ) 7000 1 // Go upstairs and meet Cesar. MAKE_PLAYER_GANG_REAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON syn5_control_flag = 3 ENDIF ENDIF // PLAYER ARRIVING AND WALKING OVER TO CESAR ///////////////// IF syn5_control_flag = 3 //player has reached cesar IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer cesar 4.0 4.0 4.0 FALSE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 syn5_speech_goals = 0 MARK_CAR_AS_NO_LONGER_NEEDED syn5_cesars_car MARK_MODEL_AS_NO_LONGER_NEEDED SAVANNA SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR //HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SHUT_ALL_CHARS_UP TRUE IF IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_COORDINATES scplayer -1728.0 1257.4 16.9 SET_CHAR_HEADING scplayer 42.2 ENDIF CLEAR_AREA -1673.7 1369.0 7.0 150.0 TRUE CLEAR_AREA -1690.0 1318.0 7.0 5.0 TRUE syn5_no_plates = BANSHEE GOSUB syn5_my_number_plates CREATE_CAR BANSHEE -1690.0 1318.0 7.0 syn5_dummy_car SET_CAR_HEADING syn5_dummy_car 57.0 FREEZE_CAR_POSITION syn5_dummy_car TRUE LOCK_CAR_DOORS syn5_dummy_car CARLOCK_LOCKED CLEAR_AREA -1721.4 1276.2 16.9 5.0 TRUE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -1722.8 1272.5 16.9 SET_CHAR_HEADING scplayer 326.3 CLEAR_CHAR_TASKS_IMMEDIATELY cesar SET_CHAR_COORDINATES cesar -1721.4 1276.2 16.9 SET_CHAR_HEADING cesar 326.3 IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_SNIPERRIFLE REMOVE_ALL_CHAR_WEAPONS cesar syn5_does_player_have_sniperrifle = 1 ENDIF syn5_skip_cutscene_flag = 1 SKIP_CUTSCENE_START OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1720.79 1275.4 16.9 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK scplayer syn5_seq CLEAR_SEQUENCE_TASK syn5_seq REMOVE_BLIP syn5_blip //cutscene dialogue where cesar says hi to player syn5_speech_goals = 2 syn5_speech_control_flag = 0 syn5_random_last_label = 2 GOSUB syn5_dialogue_setup SET_FIXED_CAMERA_POSITION -1725.2 1270.5 18.87 0.0 0.0 0.0 ///this is camera BEHIND plyr and cesar POINT_CAMERA_AT_POINT -1702.2 1316.1 22.4 JUMP_CUT syn5_control_flag = 0 syn5_goals = 1 ENDIF //////////////////////////////////DEBUG//////////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q LOAD_SCENE -1725.7 1267.0 17.3 SET_CHAR_COORDINATES scplayer -1725.7 1267.0 17.3 SET_CHAR_HEADING scplayer 308.8 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT ENDIF //////////////////////////////////DEBUG//////////////////////// ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////SECTION 1 - Sniping the guards up top /////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// Cutscene showing guards /////////////////////////////////////////////////////////////////////// IF syn5_goals = 1 //cesar coming to give player the gun IF syn5_control_flag = 0 GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK TASK_TURN_CHAR_TO_FACE_CHAR scplayer cesar //if player didn't have sniper at start of scene IF syn5_does_player_have_sniperrifle = 0 OPEN_SEQUENCE_TASK syn5_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_PLAY_ANIM -1 idle_armed PED 4.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK cesar syn5_seq CLEAR_SEQUENCE_TASK syn5_seq CREATE_OBJECT SNIPER_anim -1714.2 1266.5 18.3 syn5_sniper_anim ELSE OPEN_SEQUENCE_TASK syn5_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK cesar syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF syn5_control_flag = 1 ENDIF ENDIF //Waiting for cesar to finish passing the gun to the player IF syn5_control_flag = 1 IF syn5_speech_goals = 0 GET_SCRIPT_TASK_STATUS cesar PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS cesar 0.0 1.0 -1.0 syn5_x syn5_y syn5_z SET_CHAR_COORDINATES scplayer syn5_x syn5_y syn5_z GET_CHAR_HEADING cesar syn5_x syn5_x += 180.0 SET_CHAR_HEADING scplayer syn5_x //cutscene dialogue where cesar says hi to player syn5_speech_goals = 2 syn5_speech_control_flag = 2 syn5_random_last_label = 4 GOSUB syn5_dialogue_setup SET_FIXED_CAMERA_POSITION -1722.04 1273.2 18.81 0.0 0.0 0.0 ///this is camera BEHIND plyr and cesar POINT_CAMERA_AT_POINT -1708.2 1299.9 17.76 JUMP_CUT syn5_control_flag = 2 ENDIF ENDIF ENDIF IF syn5_control_flag = 2 //if player didn't have sniper at start of scene IF syn5_does_player_have_sniperrifle = 0 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS cesar 0.0 0.5 0.0 syn5_x syn5_y syn5_z REMOVE_ALL_CHAR_WEAPONS cesar SET_OBJECT_COORDINATES syn5_sniper_anim syn5_x syn5_y syn5_z GET_CHAR_HEADING scplayer syn5_x SET_OBJECT_HEADING syn5_sniper_anim syn5_x TASK_PLAY_ANIM cesar PASS_Rifle_Ped MISC 1000.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM scplayer PASS_Rifle_Ply MISC 1000.0 FALSE FALSE FALSE FALSE -1 syn5_control_flag = 3 ELSE IF syn5_speech_goals = 0 syn5_control_flag = 3 ENDIF ENDIF ENDIF IF syn5_control_flag = 3 //if player didn't have sniper at start of scene IF syn5_does_player_have_sniperrifle = 0 IF DOES_OBJECT_EXIST syn5_sniper_anim IF IS_CHAR_PLAYING_ANIM scplayer PASS_Rifle_Ply GET_CHAR_ANIM_CURRENT_TIME scplayer PASS_Rifle_Ply syn5_anim_time IF IS_OBJECT_PLAYING_ANIM syn5_sniper_anim PASS_Rifle_O SET_OBJECT_ANIM_CURRENT_TIME syn5_sniper_anim PASS_Rifle_O syn5_anim_time ELSE IF PLAY_OBJECT_ANIM syn5_sniper_anim PASS_Rifle_O MISC 10000.0 FALSE FALSE SET_OBJECT_ANIM_SPEED syn5_sniper_anim PASS_Rifle_O 0.0 ENDIF ENDIF ENDIF IF IS_CHAR_PLAYING_ANIM scplayer PASS_Rifle_Ply GET_CHAR_ANIM_CURRENT_TIME scplayer PASS_Rifle_Ply syn5_animtime IF syn5_animtime = 1.0 syn5_control_flag = 4 ENDIF ENDIF ENDIF ELSE syn5_control_flag = 4 ENDIF ENDIF IF syn5_control_flag = 4 //if player didn't have sniper at start of scene IF syn5_does_player_have_sniperrifle = 0 DELETE_OBJECT syn5_sniper_anim ENDIF GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_SNIPERRIFLE syn5_ammo_flag IF syn5_ammo_flag < 24 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_SNIPERRIFLE 24 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_SNIPERRIFLE ELSE SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_SNIPERRIFLE ENDIF TASK_AIM_GUN_AT_COORD scplayer -1715.4 1287.5 16.5 -1 TASK_ACHIEVE_HEADING cesar 332.1 GOSUB syn5_creating_snipers timera = 0 syn5_control_flag = 5 ENDIF //showing player roof goons IF syn5_control_flag = 5 IF timera > 2000 IF syn5_speech_goals = 0 IF NOT IS_CHAR_DEAD syn5_tbone_goons[0] OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1711.1 1354.0 16.0 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 200.0 TASK_LOOK_ABOUT -1 -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[0] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[1] OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1686.6 1376.2 13.8 PEDMOVE_WALK -1 //TASK_ACHIEVE_HEADING -1 200.0 TASK_LOOK_ABOUT -1 -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[1] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF SET_FIXED_CAMERA_POSITION -1707.1 1329.7 18.0 0.0 0.0 0.0 ////this is camera cut looking at snipers and name of pier POINT_CAMERA_AT_POINT -1701.8 1360.3 9.0 JUMP_CUT //T-Bone's security got here real early. syn5_speech_goals = 2 syn5_speech_control_flag = 4 syn5_random_last_label = 5 GOSUB syn5_dialogue_setup timera = 0 syn5_control_flag = 6 ENDIF ENDIF ENDIF //showing player more roof goons IF syn5_control_flag = 6 IF timera > 5000 IF NOT IS_CHAR_DEAD syn5_tbone_goons[3] OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1682.7 1343.1 16.2 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1672.7 1342.6 16.2 PEDMOVE_WALK -1 SET_CHAR_HEADING syn5_tbone_goons[3] 4.0 TASK_LOOK_ABOUT -1 -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[3] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF SET_NEAR_CLIP 0.1 SET_FIXED_CAMERA_POSITION -1712.2 1354.2 18.1 0.0 0.0 0.0 ////this is camera cut looking from behind one of the snipers POINT_CAMERA_AT_POINT -1675.7 1338.4 9.9 JUMP_CUT // They've got men on the roofs watching over the pier. syn5_speech_goals = 2 syn5_speech_control_flag = 5 syn5_random_last_label = 6 GOSUB syn5_dialogue_setup GOSUB syn5_creating_wuzi_men timera = 0 syn5_control_flag = 7 ENDIF ENDIF // getting phone call from wuzi (creating wuzi's men) IF syn5_control_flag = 7 IF timera > 4000 IF syn5_speech_goals = 0 IF NOT IS_CHAR_DEAD wuzi SET_CHAR_VISIBLE wuzi TRUE ENDIF SET_NEAR_CLIP 0.9 SET_FIXED_CAMERA_POSITION -1722.2 1271.7 20.1 0.0 0.0 0.0 ///this is camera BEHIND plyr and cesar POINT_CAMERA_AT_POINT -1709.7 1305.0 7.4 JUMP_CUT TASK_USE_MOBILE_PHONE cesar TRUE //phone ringing syn5_speech_goals = 2 syn5_speech_control_flag = 6 syn5_random_last_label = 7 GOSUB syn5_dialogue_setup timera = 0 syn5_control_flag = 8 ENDIF ENDIF ENDIF IF syn5_control_flag = 8 IF timera > 2000 IF syn5_speech_goals = 0 //cutscene dialogue where cesar is on phone to wuzi syn5_speech_goals = 2 syn5_speech_control_flag = 7 syn5_random_last_label = 9 GOSUB syn5_dialogue_setup timera = 0 syn5_control_flag = 9 ENDIF ENDIF ENDIF //cesar to stop using the mobile phone and wuzi's men move in place IF syn5_control_flag = 9 IF syn5_speech_goals = 0 GET_SCRIPT_TASK_STATUS cesar TASK_USE_MOBILE_PHONE task_status IF task_status = PERFORMING_TASK TASK_USE_MOBILE_PHONE cesar FALSE ENDIF // That was Woozie's boys, they're in place. | Look, down by the side entrance. syn5_speech_goals = 2 syn5_speech_control_flag = 9 syn5_random_last_label = 11 GOSUB syn5_dialogue_setup syn5_control_flag = 10 ENDIF ENDIF //cesar to stop using the mobile phone and wuzi's men move in place IF syn5_control_flag = 10 IF syn5_speech_goals = 0 GET_SCRIPT_TASK_STATUS cesar TASK_USE_MOBILE_PHONE task_status IF task_status = PERFORMING_TASK TASK_USE_MOBILE_PHONE cesar FALSE ENDIF IF NOT IS_CHAR_DEAD syn5_wuzi_goons[0] OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1683.4 1326.9 6.0 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1673.4 1335.0 6.2 PEDMOVE_WALK -1 TASK_TOGGLE_DUCK -1 FALSE CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_wuzi_goons[0] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD wuzi OPEN_SEQUENCE_TASK syn5_seq TASK_PAUSE -1 500 TASK_GO_STRAIGHT_TO_COORD -1 -1684.8 1324.7 6.0 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1675.7 1336.1 6.2 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK wuzi syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_wuzi_goons[1] OPEN_SEQUENCE_TASK syn5_seq TASK_PAUSE -1 700 TASK_GO_STRAIGHT_TO_COORD -1 -1687.2 1323.8 6.0 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1676.0 1334.0 6.2 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_wuzi_goons[1] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_wuzi_goons[2] OPEN_SEQUENCE_TASK syn5_seq TASK_PAUSE -1 800 TASK_GO_STRAIGHT_TO_COORD -1 -1689.0 1325.4 6.0 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1678.0 1333.7 6.2 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_wuzi_goons[2] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF SET_FIXED_CAMERA_POSITION -1693.9 1318.9 7.7 0.0 0.0 0.0 ///camera looking at wuzi's men POINT_CAMERA_AT_POINT -1686.1 1320.8 6.6 JUMP_CUT timera = 0 syn5_control_flag = 11 ENDIF ENDIF //looking close cut at wuzi's men IF syn5_control_flag = 11 IF timera > 3000 IF NOT IS_CHAR_DEAD wuzi SET_CHAR_COORDINATES wuzi -1681.4 1326.4 6.2 SET_CHAR_HEADING wuzi 300.1 OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1671.6 1339.0 6.2 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK wuzi syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_wuzi_goons[0] SET_CHAR_COORDINATES syn5_wuzi_goons[0] -1684.1 1324.1 6.2 SET_CHAR_HEADING syn5_wuzi_goons[0] 311.1 OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1671.6 1339.0 6.2 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_wuzi_goons[0] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_wuzi_goons[1] SET_CHAR_COORDINATES syn5_wuzi_goons[1] -1683.0 1321.7 6.2 SET_CHAR_HEADING syn5_wuzi_goons[1] 333.4 OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1671.6 1339.0 6.2 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_wuzi_goons[1] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_wuzi_goons[2] SET_CHAR_COORDINATES syn5_wuzi_goons[2] -1685.4 1323.6 6.2 SET_CHAR_HEADING syn5_wuzi_goons[2] 323.8 OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1671.6 1339.0 6.2 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_wuzi_goons[2] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF SET_FIXED_CAMERA_POSITION -1678.4 1318.3 7.2 0.0 0.0 0.0 ///camera looking at wuzi's men next to the warp up door POINT_CAMERA_AT_POINT -1680.6 1330.0 8.9 JUMP_CUT // Shit, they're heading up to the roof! syn5_speech_goals = 2 syn5_speech_control_flag = 11 syn5_random_last_label = 14 GOSUB syn5_dialogue_setup syn5_control_flag = 12 ENDIF ENDIF //finish up IF syn5_control_flag = 12 IF syn5_speech_goals = 0 syn5_skip_cutscene_flag = 0 SKIP_CUTSCENE_END CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS syn5_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB syn5_death_checks IF syn5_goals = 10 GOTO syn_goals10 ENDIF IF syn5_deathcheck_flag = 1 GOTO mission_syn5_failed ENDIF SET_NEAR_CLIP 0.9 //if cutscene has been skipped //////////////////////////////////////////// IF syn5_skip_cutscene_flag = 1 GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_SNIPERRIFLE syn5_ammo_flag IF syn5_ammo_flag < 24 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_SNIPERRIFLE 24 ENDIF DELETE_OBJECT syn5_sniper_anim REMOVE_ALL_CHAR_WEAPONS cesar CLEAR_PRINTS GET_SCRIPT_TASK_STATUS cesar TASK_USE_MOBILE_PHONE task_status IF task_status = PERFORMING_TASK TASK_USE_MOBILE_PHONE cesar FALSE ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY cesar SET_CHAR_HEADING cesar 332.1 SET_CHAR_HEADING scplayer 332.1 GOSUB syn5_creating_snipers GOSUB syn5_creating_wuzi_men IF NOT IS_CHAR_DEAD wuzi SET_CHAR_VISIBLE wuzi TRUE ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[0] SET_CHAR_COORDINATES syn5_tbone_goons[0] -1711.1 1354.0 16.0 SET_CHAR_HEADING syn5_tbone_goons[0] 200.0 ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[1] SET_CHAR_COORDINATES syn5_tbone_goons[1] -1686.6 1376.2 13.8 SET_CHAR_HEADING syn5_tbone_goons[1] 200.0 ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[3] SET_CHAR_COORDINATES syn5_tbone_goons[3] -1672.7 1342.6 16.2 SET_CHAR_HEADING syn5_tbone_goons[3] 4.0 ENDIF ENDIF //positioning wuzi's men on top of the shops IF NOT IS_CHAR_DEAD wuzi CLEAR_CHAR_TASKS_IMMEDIATELY wuzi SET_CHAR_COORDINATES wuzi -1681.9 1335.8 16.2 SET_CHAR_HEADING wuzi 337.1 OPEN_SEQUENCE_TASK syn5_seq TASK_TOGGLE_DUCK -1 FALSE TASK_GO_STRAIGHT_TO_COORD -1 -1681.7 1335.5 16.2 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 331.0 //TASK_SHOOT_AT_COORD -1 -1662.1 1360.4 20.4 -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK wuzi syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_wuzi_goons[0] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_wuzi_goons[0] SET_CHAR_COORDINATES syn5_wuzi_goons[0] -1688.2 1334.3 16.2 SET_CHAR_HEADING syn5_wuzi_goons[0] 257.0 OPEN_SEQUENCE_TASK syn5_seq TASK_TOGGLE_DUCK -1 FALSE TASK_GO_STRAIGHT_TO_COORD -1 -1686.1 1334.1 16.2 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 294.0 //TASK_SHOOT_AT_COORD -1 -1662.1 1360.4 20.4 -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_wuzi_goons[0] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_wuzi_goons[1] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_wuzi_goons[1] SET_CHAR_COORDINATES syn5_wuzi_goons[1] -1685.8 1336.4 16.2 SET_CHAR_HEADING syn5_wuzi_goons[1] 320.0 OPEN_SEQUENCE_TASK syn5_seq TASK_TOGGLE_DUCK -1 FALSE TASK_GO_STRAIGHT_TO_COORD -1 -1683.9 1338.4 16.2 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 316.8 //TASK_SHOOT_AT_COORD -1 -1662.1 1360.4 20.4 -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_wuzi_goons[1] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_wuzi_goons[2] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_wuzi_goons[2] SET_CHAR_COORDINATES syn5_wuzi_goons[2] -1688.3 1335.6 16.2 SET_CHAR_HEADING syn5_wuzi_goons[2] 312.6 OPEN_SEQUENCE_TASK syn5_seq TASK_TOGGLE_DUCK -1 FALSE TASK_GO_STRAIGHT_TO_COORD -1 -1685.2 1340.5 16.2 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 310.0 //TASK_SHOOT_AT_COORD -1 -1662.1 1360.4 20.4 -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_wuzi_goons[2] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF //setting T-Bone's men to kill Wuzi's IF NOT IS_CHAR_DEAD syn5_tbone_goons[0] ADD_BLIP_FOR_CHAR syn5_tbone_goons[0] syn5_sniper_blips[0] CHANGE_BLIP_SCALE syn5_sniper_blips[0] 1 ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[1] ADD_BLIP_FOR_CHAR syn5_tbone_goons[1] syn5_sniper_blips[1] CHANGE_BLIP_SCALE syn5_sniper_blips[1] 1 ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[2] ADD_BLIP_FOR_CHAR syn5_tbone_goons[2] syn5_sniper_blips[2] CHANGE_BLIP_SCALE syn5_sniper_blips[2] 1 ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[3] ADD_BLIP_FOR_CHAR syn5_tbone_goons[3] syn5_sniper_blips[3] CHANGE_BLIP_SCALE syn5_sniper_blips[3] 1 ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[4] ADD_BLIP_FOR_CHAR syn5_tbone_goons[4] syn5_sniper_blips[4] CHANGE_BLIP_SCALE syn5_sniper_blips[4] 1 ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[5] ADD_BLIP_FOR_CHAR syn5_tbone_goons[5] syn5_sniper_blips[5] CHANGE_BLIP_SCALE syn5_sniper_blips[5] 1 ENDIF //resetting east dude IF NOT IS_CHAR_DEAD syn5_tbone_goons[4] SET_CHAR_COORDINATES syn5_tbone_goons[4] -1669.5 1346.0 15.2 SET_CHAR_HEADING syn5_tbone_goons[4] 142.0 ENDIF //resetting west roof dude IF NOT IS_CHAR_DEAD syn5_tbone_goons[1] SET_CHAR_COORDINATES syn5_tbone_goons[1] -1694.7 1369.7 15.9 SET_CHAR_HEADING syn5_tbone_goons[1] 129.8 ENDIF SET_CHAR_COORDINATES scplayer -1720.4 1275.5 16.9 SET_CHAR_HEADING scplayer 328.4 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_SNIPERRIFLE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer DELETE_OBJECT syn5_sniper_anim MARK_MODEL_AS_NO_LONGER_NEEDED SNIPER_anim REMOVE_ANIMATION MISC MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE MARK_CAR_AS_NO_LONGER_NEEDED syn5_dummy_car MARK_MODEL_AS_NO_LONGER_NEEDED BANSHEE SHUT_ALL_CHARS_UP FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar TRUE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON PRINT_NOW ( SYN5_02 ) 7000 1 // Clear the roof so that the Triads can proceed. DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF syn5_goals = 10 GOTO syn_goals10 ENDIF IF syn5_deathcheck_flag = 1 GOTO mission_syn5_failed ENDIF timera = 0 syn5_control_flag = 0 syn5_goals = 3 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// Player shooting the rest of the guards //////////////////////////////////////////////////////// IF syn5_goals = 3 ///////////////////DEBUG////////////////////////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q IF NOT IS_CHAR_DEAD syn5_tbone_goons[0] SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_tbone_goons[0] FALSE EXPLODE_CHAR_HEAD syn5_tbone_goons[0] ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[1] SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_tbone_goons[1] FALSE EXPLODE_CHAR_HEAD syn5_tbone_goons[1] ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[2] SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_tbone_goons[2] FALSE EXPLODE_CHAR_HEAD syn5_tbone_goons[2] ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[3] SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_tbone_goons[3] FALSE EXPLODE_CHAR_HEAD syn5_tbone_goons[3] ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[4] SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_tbone_goons[4] FALSE EXPLODE_CHAR_HEAD syn5_tbone_goons[4] ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[5] SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_tbone_goons[5] FALSE EXPLODE_CHAR_HEAD syn5_tbone_goons[5] ENDIF ENDIF ///////////////////DEBUG////////////////////////////////////// //waiting for snipers to be killed IF syn5_control_flag = 0 /////// SPEECH FOR THIS SECTION ///////////////// IF syn5_speech_goals = 0 ////// GOOD SPEECH /////////////// IF syn5_killing_wuzi_men_flag = 0 IF timera > 7000 // Shit they've walked right into it! syn5_speech_goals = 3 syn5_speech_control_flag = 1 syn5_random_last_label = 2 GOSUB syn5_dialogue_setup syn5_killing_wuzi_men_flag = 1 ENDIF ENDIF IF syn5_killing_wuzi_men_flag = 1 IF syn5_wuzi_men_count < 3 // One of those Triad boys is down! syn5_speech_goals = 3 syn5_speech_control_flag = 3 syn5_random_last_label = 4 GOSUB syn5_dialogue_setup syn5_killing_wuzi_men_flag = 2 ENDIF ENDIF IF syn5_killing_wuzi_men_flag = 2 IF syn5_wuzi_men_count < 2 // Scratch one more Mountain Cloud Boy! syn5_speech_goals = 3 syn5_speech_control_flag = 4 syn5_random_last_label = 5 GOSUB syn5_dialogue_setup syn5_killing_wuzi_men_flag = 3 ENDIF ENDIF IF syn5_speech_goals = 0 IF syn5_killing_wuzi_men_flag = 3 // Take 'em out, CJ, they're in the thick of it! syn5_speech_goals = 3 syn5_speech_control_flag = 2 syn5_random_last_label = 3 GOSUB syn5_dialogue_setup syn5_killing_wuzi_men_flag = 4 ENDIF ENDIF IF syn5_killing_wuzi_men_flag = 4 IF syn5_wuzi_men_count < 1 // They're getting cut to pieces, CJ, shoot those damn Rifas! syn5_speech_goals = 3 syn5_speech_control_flag = 5 syn5_random_last_label = 6 GOSUB syn5_dialogue_setup syn5_killing_wuzi_men_flag = 5 ENDIF ENDIF ////// BAD SPEECH /////////////// IF syn5_killing_sniper_flag = 0 syn5_killing_sniper_flag = 3 ENDIF /* IF syn5_killing_sniper_count < 6 // One down... syn5_speech_goals = 4 syn5_speech_control_flag = 0 syn5_random_last_label = 1 GOSUB syn5_dialogue_setup syn5_killing_sniper_flag = 1 ENDIF ENDIF IF syn5_killing_sniper_flag = 1 IF syn5_killing_sniper_count < 5 // That's it, CJ, keep icing those Rifa! syn5_speech_goals = 4 syn5_speech_control_flag = 1 syn5_random_last_label = 2 GOSUB syn5_dialogue_setup syn5_killing_sniper_flag = 2 ENDIF ENDIF IF syn5_killing_sniper_flag = 2 IF syn5_killing_sniper_count < 4 // Just a few more, holmes... syn5_speech_goals = 4 syn5_speech_control_flag = 2 syn5_random_last_label = 3 GOSUB syn5_dialogue_setup syn5_killing_sniper_flag = 3 ENDIF ENDIF */ IF syn5_killing_sniper_flag = 3 IF syn5_killing_sniper_count < 3 //EAST DUDES IF NOT IS_CHAR_DEAD syn5_tbone_goons[3] OR NOT IS_CHAR_DEAD syn5_tbone_goons[4] OR NOT IS_CHAR_DEAD syn5_tbone_goons[5] // Some more to the right.. syn5_speech_goals = 4 syn5_speech_control_flag = 3 syn5_random_last_label = 4 GOSUB syn5_dialogue_setup syn5_killing_sniper_flag = 4 ELSE syn5_killing_sniper_flag = 5 ENDIF ENDIF ENDIF IF syn5_speech_goals = 0 //player has been told to kill the remaining dudes on the right IF syn5_killing_sniper_flag = 4 //EAST DUDES IF IS_CHAR_DEAD syn5_tbone_goons[3] AND IS_CHAR_DEAD syn5_tbone_goons[4] AND IS_CHAR_DEAD syn5_tbone_goons[5] // Still some on the left, CJ... syn5_speech_goals = 4 syn5_speech_control_flag = 4 syn5_random_last_label = 5 GOSUB syn5_dialogue_setup syn5_killing_sniper_flag = 6 ENDIF ENDIF ENDIF IF syn5_speech_goals = 0 //player has already killed all the dudes on the right IF syn5_killing_sniper_flag = 5 IF syn5_killing_sniper_count < 3 //WEST DUDES IF NOT IS_CHAR_DEAD syn5_tbone_goons[0] OR NOT IS_CHAR_DEAD syn5_tbone_goons[1] OR NOT IS_CHAR_DEAD syn5_tbone_goons[2] // Still some on the left, CJ... syn5_speech_goals = 4 syn5_speech_control_flag = 4 syn5_random_last_label = 5 GOSUB syn5_dialogue_setup syn5_killing_sniper_flag = 6 ENDIF ENDIF ENDIF ENDIF ENDIF // KILLING WUZI MEN AS TIME TICKS DOWN // IF NOT IS_CHAR_DEAD syn5_wuzi_goons[0] IF timera > 10000 SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_wuzi_goons[0] FALSE EXPLODE_CHAR_HEAD syn5_wuzi_goons[0] ENDIF ENDIF IF NOT IS_CHAR_DEAD syn5_wuzi_goons[1] IF timera > 20000 SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_wuzi_goons[1] FALSE EXPLODE_CHAR_HEAD syn5_wuzi_goons[1] ENDIF ENDIF IF NOT IS_CHAR_DEAD syn5_wuzi_goons[2] IF timera > 30000 SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_wuzi_goons[2] FALSE EXPLODE_CHAR_HEAD syn5_wuzi_goons[2] ENDIF ENDIF IF NOT IS_CHAR_DEAD wuzi IF timera > 40000 SET_CHAR_ONLY_DAMAGED_BY_PLAYER wuzi FALSE syn5_goals = 10 ENDIF ENDIF // REMOVING BLIPS AS EACH CHAR DIES AND MARKING THEM AS DEAD IF syn5_sniper_number_flag < 6 IF syn5_sniper_killed_count_flag[syn5_sniper_number_flag] = 0 IF IS_CHAR_DEAD syn5_tbone_goons[syn5_sniper_number_flag] REMOVE_BLIP syn5_sniper_blips[syn5_sniper_number_flag] syn5_killing_sniper_count -- syn5_sniper_killed_count_flag[syn5_sniper_number_flag] = 1 ENDIF ENDIF syn5_sniper_number_flag ++ ELSE syn5_sniper_number_flag = 0 ENDIF IF syn5_wuzi_number_flag < 3 IF syn5_wuzi_men_killed_flag[syn5_wuzi_number_flag] = 0 IF IS_CHAR_DEAD syn5_wuzi_goons[syn5_wuzi_number_flag] syn5_wuzi_men_count -- syn5_wuzi_men_killed_flag[syn5_wuzi_number_flag] = 1 ENDIF ENDIF syn5_wuzi_number_flag ++ ELSE syn5_wuzi_number_flag = 0 ENDIF ////// CONTROLLING THE AI IN THIS SECTION /////// GOSUB syn5_controlling_sniping_section_ai IF IS_CHAR_DEAD syn5_tbone_goons[0] IF IS_CHAR_DEAD syn5_tbone_goons[1] IF IS_CHAR_DEAD syn5_tbone_goons[2] IF IS_CHAR_DEAD syn5_tbone_goons[3] IF IS_CHAR_DEAD syn5_tbone_goons[4] IF IS_CHAR_DEAD syn5_tbone_goons[5] REMOVE_BLIP syn5_sniper_blips[0] REMOVE_BLIP syn5_sniper_blips[1] REMOVE_BLIP syn5_sniper_blips[2] REMOVE_BLIP syn5_sniper_blips[3] REMOVE_BLIP syn5_sniper_blips[4] REMOVE_BLIP syn5_sniper_blips[5] MARK_CHAR_AS_NO_LONGER_NEEDED syn5_tbone_goons[0] MARK_CHAR_AS_NO_LONGER_NEEDED syn5_tbone_goons[1] MARK_CHAR_AS_NO_LONGER_NEEDED syn5_tbone_goons[2] MARK_CHAR_AS_NO_LONGER_NEEDED syn5_tbone_goons[3] MARK_CHAR_AS_NO_LONGER_NEEDED syn5_tbone_goons[4] MARK_CHAR_AS_NO_LONGER_NEEDED syn5_tbone_goons[5] timera = 0 syn5_control_flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //giving a bit of time between killing all the snipers and triggering the next bit IF syn5_control_flag = 1 IF timera > 2000 CHECKPOINT_SAVE 99 SET_PLAYER_CONTROL player1 OFF CLEAR_PRINTS DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB syn5_death_checks IF syn5_goals = 10 GOTO syn_goals10 ENDIF IF syn5_deathcheck_flag = 1 GOTO mission_syn5_failed ENDIF syn5_control_flag = 0 syn5_goals = 4 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////// CUTSCENE OF WUZI DYING //////////////////////////////////////////////////////////////////////// syn_goals10: IF syn5_goals = 10 GOSUB check_player_is_safe //WRITE_DEBUG_WITH_INT player_is_completely_safe player_is_completely_safe //IF player_is_completely_safe = 1 IF syn5_control_flag = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 syn5_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE DELETE_CHAR wuzi DELETE_CHAR cesar CLEAR_AREA -1673.7 1369.0 7.0 150.0 TRUE CLEAR_AREA -1677.2 1347.8 16.2 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 TRIBOSS -1677.2 1347.8 16.2 wuzi SET_CHAR_HEADING wuzi 356.6 GIVE_WEAPON_TO_CHAR wuzi WEAPONTYPE_TEC9 30000 SET_CHAR_DECISION_MAKER wuzi syn5_empty_ped_decision_maker LOAD_SCENE -1677.2 1347.8 16.2 SET_FIXED_CAMERA_POSITION -1675.3 1349.0 17.0 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1684.1 1343.9 18.5 JUMP_CUT //SET_FIXED_CAMERA_POSITION -1676.7 1349.4 17.3 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT -1678.2 1345.2 17.8 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD wuzi TASK_PLAY_ANIM_NON_INTERRUPTABLE wuzi KO_shot_stom PED 4.0 FALSE FALSE FALSE TRUE -1 ENDIF IF syn5_wuzi_men_count > 0 // You can break the news to Woozie, holmes. syn5_speech_goals = 5 syn5_speech_control_flag = 3 syn5_random_last_label = 4 GOSUB syn5_dialogue_setup ELSE syn5_speech_goals = 5 GENERATE_RANDOM_INT_IN_RANGE 0 4 syn5_speech_control_flag syn5_random_last_label = syn5_speech_control_flag + 1 GOSUB syn5_dialogue_setup ENDIF timerb = 0 syn5_control_flag = 1 ENDIF //ENDIF IF syn5_control_flag = 1 IF syn5_speech_goals = 0 IF timerb > 4000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GET_CHAR_COORDINATES scplayer syn5_x syn5_y syn5_z LOAD_SCENE syn5_x syn5_y syn5_z HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON CLEAR_PRINTS PRINT_BIG M_FAIL 5000 1 PRINT_NOW ( SYN5_05 ) 5500 1 //The Triad Leader has been killed! DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_syn5_failed ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////// CUTSCENE SHOWING MEET TAKING PLACE ///////////////////////////////////////////////////////////// IF syn5_goals = 4 IF syn5_control_flag = 0 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 syn5_speech_goals = 0 REQUEST_CAR_RECORDING 27 REQUEST_CAR_RECORDING 28 REQUEST_MODEL PICADOR REQUEST_MODEL tahoma REQUEST_MODEL maverick REQUEST_MODEL PONY REQUEST_MODEL BALLAS1 REQUEST_MODEL BALLAS2 LOAD_SPECIAL_CHARACTER 2 ryder2 LOAD_SPECIAL_CHARACTER 3 torino LOAD_SPECIAL_CHARACTER 4 tbone REQUEST_MODEL TEARGAS REQUEST_MODEL AK47 //REQUEST_ANIMATION GRENADE LOAD_ALL_MODELS_NOW SHUT_ALL_CHARS_UP TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar FALSE CREATE_CAR PONY -1634.3 1253.4 6.1 syn5_tbones_car SET_CAR_HEADING syn5_tbones_car 44.5 LOCK_CAR_DOORS syn5_tbones_car CARLOCK_LOCKOUT_PLAYER_ONLY START_PLAYBACK_RECORDED_CAR syn5_tbones_car 27 SKIP_IN_PLAYBACK_RECORDED_CAR syn5_tbones_car 35.0 CLEAR_CHAR_TASKS_IMMEDIATELY wuzi SET_CHAR_COORDINATES wuzi -1678.7 1347.5 16.2 SET_CHAR_HEADING wuzi 32.6 SET_CHAR_DECISION_MAKER wuzi syn5_empty_ped_decision_maker TASK_PLAY_ANIM wuzi weapon_crouch PED 4.0 TRUE FALSE FALSE FALSE 30000 IF NOT IS_CHAR_DEAD syn5_wuzi_goons[0] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_wuzi_goons[0] SET_CHAR_COORDINATES syn5_wuzi_goons[0] -1686.1 1348.7 16.2 SET_CHAR_HEADING syn5_wuzi_goons[0] 33.6 SET_CHAR_DECISION_MAKER syn5_wuzi_goons[0] syn5_empty_ped_decision_maker TASK_PLAY_ANIM syn5_wuzi_goons[0] weapon_crouch PED 4.0 TRUE FALSE FALSE FALSE 30000 ENDIF IF NOT IS_CHAR_DEAD syn5_wuzi_goons[1] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_wuzi_goons[1] SET_CHAR_COORDINATES syn5_wuzi_goons[1] -1687.7 1347.7 16.2 SET_CHAR_HEADING syn5_wuzi_goons[1] 60.6 SET_CHAR_DECISION_MAKER syn5_wuzi_goons[1] syn5_empty_ped_decision_maker TASK_PLAY_ANIM syn5_wuzi_goons[1] weapon_crouch PED 4.0 TRUE FALSE FALSE FALSE 30000 ENDIF IF NOT IS_CHAR_DEAD syn5_wuzi_goons[2] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_wuzi_goons[2] SET_CHAR_COORDINATES syn5_wuzi_goons[2] -1688.7 1346.1 16.2 SET_CHAR_HEADING syn5_wuzi_goons[2] 41.8 SET_CHAR_DECISION_MAKER syn5_wuzi_goons[2] syn5_empty_ped_decision_maker TASK_PLAY_ANIM syn5_wuzi_goons[2] weapon_crouch PED 4.0 TRUE FALSE FALSE FALSE 30000 ENDIF CLEAR_AREA -1721.4 1276.2 16.9 5.0 TRUE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -1720.4 1275.5 16.9 SET_CHAR_HEADING scplayer 328.4 CLEAR_CHAR_TASKS_IMMEDIATELY cesar SET_CHAR_COORDINATES cesar -1721.4 1276.2 16.9 SET_CHAR_HEADING cesar 326.3 GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_SNIPERRIFLE syn5_ammo_flag IF syn5_ammo_flag < 24 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_SNIPERRIFLE 24 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_SNIPERRIFLE ELSE SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_SNIPERRIFLE ENDIF //TASK_PLAY_ANIM scplayer RIFLE_FIRE PED 1000.0 FALSE FALSE FALSE TRUE 2500 //TASK_AIM_GUN_AT_COORD scplayer -1715.4 1287.5 16.5 2000 CLEAR_AREA -1706.4 1327.1 6.4 100.0 TRUE SET_CAR_DENSITY_MULTIPLIER 0.0 CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE syn5_ped_decisions EVENT_POTENTIAL_WALK_INTO_PED SET_FIXED_CAMERA_POSITION -1722.2 1271.7 20.1 0.0 0.0 0.0 ///this is camera BEHIND plyr and cesar POINT_CAMERA_AT_POINT -1709.7 1305.0 7.4 JUMP_CUT SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR //HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB syn5_death_checks IF syn5_goals = 10 GOTO syn_goals10 ENDIF IF syn5_deathcheck_flag = 1 GOTO mission_syn5_failed ENDIF // Man, my shooting was fresh! syn5_speech_goals = 7 syn5_speech_control_flag = 0 syn5_random_last_label = 1 GOSUB syn5_dialogue_setup syn5_skip_cutscene_flag = 1 SKIP_CUTSCENE_START timera = 0 syn5_control_flag = 1 ENDIF IF syn5_control_flag = 1 IF syn5_speech_goals = 0 IF timera > 4000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB syn5_death_checks IF syn5_goals = 10 GOTO syn_goals10 ENDIF IF syn5_deathcheck_flag = 1 GOTO mission_syn5_failed ENDIF IF NOT IS_CAR_DEAD syn5_tbones_car OPEN_CAR_DOOR syn5_tbones_car REAR_LEFT_DOOR OPEN_CAR_DOOR syn5_tbones_car REAR_RIGHT_DOOR ENDIF GOSUB syn5_creating_tbone IF NOT IS_CHAR_DEAD syn5_tbone OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1709.4 1345.3 6.2 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1697.7 1349.2 6.2 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1676.1 1360.3 6.2 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[0] OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1709.4 1346.3 6.2 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1697.7 1350.2 6.2 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1676.1 1361.3 6.2 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[0] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[1] OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1709.4 1343.3 6.2 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1697.7 1351.2 6.2 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1676.1 1362.3 6.2 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[1] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[2] OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1709.4 1342.3 6.2 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1697.7 1352.2 6.2 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1676.1 1363.3 6.2 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[2] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[3] OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1709.4 1341.3 6.2 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1697.7 1353.2 6.2 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1676.1 1364.3 6.2 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[3] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF GOSUB syn5_creating_ryder OPEN_SEQUENCE_TASK syn5_seq TASK_CAR_DRIVE_TO_COORD -1 syn5_ryders_car -1704.0 1333.5 5.9 20.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 -1676.9 1360.6 6.2 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK ryder syn5_seq CLEAR_SEQUENCE_TASK syn5_seq OPEN_SEQUENCE_TASK syn5_seq TASK_CAR_DRIVE_TO_COORD -1 syn5_ryder_goon_cars[0] -1706.6 1340.2 5.9 20.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_ryder_goons[2] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq OPEN_SEQUENCE_TASK syn5_seq TASK_CAR_DRIVE_TO_COORD -1 syn5_ryder_goon_cars[1] -1718.4 1345.7 6.2 20.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_ryder_goons[4] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq SET_FIXED_CAMERA_POSITION -1711.0 1343.8 7.2 0.0 0.0 0.0 ///showing tbone and his goons getting the drugs POINT_CAMERA_AT_POINT -1726.7 1357.6 9.9 JUMP_CUT DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB syn5_death_checks IF syn5_goals = 10 GOTO syn_goals10 ENDIF IF syn5_deathcheck_flag = 1 GOTO mission_syn5_failed ENDIF // Here comes T-Bone.... syn5_speech_goals = 7 syn5_speech_control_flag = 2 syn5_random_last_label = 3 GOSUB syn5_dialogue_setup timera = 0 syn5_control_flag = 2 ENDIF ENDIF ENDIF //showing ryder pulling up IF syn5_control_flag = 2 IF timera > 4000 GOSUB syn5_creating_toreno SET_FIXED_CAMERA_POSITION -1698.3 1327.6 7.3 0.0 0.0 0.0 ///camera looking at cars pulling up POINT_CAMERA_AT_POINT -1701.2 1332.3 7.6 JUMP_CUT // And here's that snake Ryder. | Look at that fool, hanging out with Ballas like they was life long pals. syn5_speech_goals = 7 syn5_speech_control_flag = 3 syn5_random_last_label = 5 GOSUB syn5_dialogue_setup timera = 0 syn5_control_flag = 3 ENDIF ENDIF //waiting until ryder has exited the car IF syn5_control_flag = 3 IF syn5_speech_goals = 0 IF NOT IS_CHAR_DEAD ryder IF NOT IS_CHAR_IN_ANY_CAR ryder IF NOT IS_CHAR_DEAD syn5_ryder_goons[0] OPEN_SEQUENCE_TASK syn5_seq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 -1665.0 1370.9 6.2 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_ryder_goons[0] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF timera = 0 syn5_control_flag = 4 ENDIF ENDIF ENDIF ENDIF //fade out, moving everyone to the end of the pier and fade back in and show meet taking place IF syn5_control_flag = 4 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB syn5_death_checks IF syn5_goals = 10 GOTO syn_goals10 ENDIF IF syn5_deathcheck_flag = 1 GOTO mission_syn5_failed ENDIF //setting everyone in place! //////////////////////////////////////////// //TBONE and GOONS //east of trio IF NOT IS_CHAR_DEAD syn5_tbone CLEAR_CHAR_TASKS_IMMEDIATELY syn5_tbone SET_CHAR_COORDINATES syn5_tbone -1629.2 1414.2 6.2 SET_CHAR_HEADING syn5_tbone 87.6 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE syn5_tbone TRUE ENDIF //sitting behind tbone IF NOT IS_CHAR_DEAD syn5_tbone_goons[0] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_tbone_goons[0] SET_CHAR_COORDINATES syn5_tbone_goons[0] -1629.3 1412.4 6.2 SET_CHAR_HEADING syn5_tbone_goons[0] 76.7 TASK_PLAY_ANIM syn5_tbone_goons[0] seat_idle PED 1000.0 FALSE FALSE FALSE TRUE -1 GIVE_WEAPON_TO_CHAR syn5_tbone_goons[0] WEAPONTYPE_TEC9 30000 ENDIF //standing behind tbone IF NOT IS_CHAR_DEAD syn5_tbone_goons[1] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_tbone_goons[1] SET_CHAR_COORDINATES syn5_tbone_goons[1] -1626.5 1414.2 6.2 SET_CHAR_HEADING syn5_tbone_goons[1] 116.9 GIVE_WEAPON_TO_CHAR syn5_tbone_goons[1] WEAPONTYPE_TEC9 30000 ENDIF //standing chatting behind tbone IF NOT IS_CHAR_DEAD syn5_tbone_goons[2] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_tbone_goons[2] SET_CHAR_COORDINATES syn5_tbone_goons[2] -1628.5 1414.9 6.2 SET_CHAR_HEADING syn5_tbone_goons[2] 50.5 GIVE_WEAPON_TO_CHAR syn5_tbone_goons[2] WEAPONTYPE_TEC9 30000 ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[3] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_tbone_goons[3] SET_CHAR_COORDINATES syn5_tbone_goons[3] -1629.7 1416.0 6.2 SET_CHAR_HEADING syn5_tbone_goons[3] 222.8 GIVE_WEAPON_TO_CHAR syn5_tbone_goons[3] WEAPONTYPE_TEC9 30000 ENDIF TASK_CHAT_WITH_CHAR syn5_tbone_goons[2] syn5_tbone_goons[3] TRUE TRUE TASK_CHAT_WITH_CHAR syn5_tbone_goons[3] syn5_tbone_goons[2] FALSE TRUE //RYDER and GANG //west of trio IF NOT IS_CHAR_DEAD ryder CLEAR_CHAR_TASKS_IMMEDIATELY ryder SET_CHAR_COORDINATES ryder -1636.5 1412.5 6.2 SET_CHAR_HEADING ryder 280.9 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE ryder TRUE ENDIF //east on bridge above trio IF NOT IS_CHAR_DEAD syn5_ryder_goons[0] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_ryder_goons[0] SET_CHAR_COORDINATES syn5_ryder_goons[0] -1634.9 1408.3 6.2 SET_CHAR_HEADING syn5_ryder_goons[0] 293.5 OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1629.6 1411.7 6.2 PEDMOVE_WALK -1 TASK_PLAY_ANIM -1 idle_chat PED 1000.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_ryder_goons[0] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF TASK_GREET_PARTNER ryder syn5_tbone 0.5 5 LOAD_SCENE -1629.2 1414.2 6.2 SET_FIXED_CAMERA_POSITION -1637.6 1410.8 8.3 0.0 0.0 0.0 ///looking at the meet POINT_CAMERA_AT_POINT -1626.4 1414.8 6.8 JUMP_CUT DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB syn5_death_checks IF syn5_goals = 10 GOTO syn_goals10 ENDIF IF syn5_deathcheck_flag = 1 GOTO mission_syn5_failed ENDIF // Something ain't right. Where's Toreno? syn5_speech_goals = 7 syn5_speech_control_flag = 7 syn5_random_last_label = 8 GOSUB syn5_dialogue_setup timera = 0 syn5_control_flag = 5 ENDIF IF syn5_control_flag = 5 IF timera > 3500 IF NOT IS_CAR_DEAD syn5_toreno_chopper START_PLAYBACK_RECORDED_CAR syn5_toreno_chopper 28 SKIP_IN_PLAYBACK_RECORDED_CAR syn5_toreno_chopper 10.0 syn5_control_flag = 6 ENDIF ENDIF ENDIF //attaching camera to the helicopter IF syn5_control_flag = 6 IF timera > 6000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB syn5_death_checks IF syn5_goals = 10 GOTO syn_goals10 ENDIF IF syn5_deathcheck_flag = 1 GOTO mission_syn5_failed ENDIF IF NOT IS_CHAR_DEAD ryder SET_CHAR_HEADING ryder 150.0 ENDIF IF NOT IS_CHAR_DEAD syn5_ryder_goons[0] SET_CHAR_HEADING syn5_ryder_goons[0] 150.0 ENDIF CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_POS TRUE CAMERA_PERSIST_TRACK TRUE CAMERA_SET_VECTOR_MOVE -1657.1 1666.8 3.4 -1599.1 1432.0 15.1 11000 TRUE CAMERA_SET_VECTOR_TRACK -1676.2 1618.2 11.4 -1614.1 1428.9 15.4 11000 TRUE LOAD_SCENE -1657.1 1666.8 3.4 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB syn5_death_checks IF syn5_goals = 10 GOTO syn_goals10 ENDIF IF syn5_deathcheck_flag = 1 GOTO mission_syn5_failed ENDIF // Chopper inbound! | That's got to be Toreno. syn5_speech_goals = 7 syn5_speech_control_flag = 8 syn5_random_last_label = 10 GOSUB syn5_dialogue_setup syn5_control_flag = 7 ENDIF ENDIF //setting heli orientation so the chopper fucks off IF syn5_control_flag = 7 IF NOT IS_CAR_DEAD syn5_toreno_chopper IF LOCATE_CAR_2D syn5_toreno_chopper -1629.1 1429.5 3.0 3.0 FALSE IF IS_PLAYBACK_GOING_ON_FOR_CAR syn5_toreno_chopper STOP_PLAYBACK_RECORDED_CAR syn5_toreno_chopper ENDIF HELI_GOTO_COORDS syn5_toreno_chopper -1629.1 1429.5 19.3 0.0 19.3 // Oh shit, he'll see the bodies on the rooftops! syn5_speech_goals = 7 syn5_speech_control_flag = 10 syn5_random_last_label = 11 GOSUB syn5_dialogue_setup syn5_control_flag = 8 ENDIF ENDIF ENDIF IF syn5_control_flag = 8 IF syn5_speech_goals = 0 CAMERA_RESET_NEW_SCRIPTABLES IF NOT IS_CAR_DEAD syn5_toreno_chopper SET_HELI_ORIENTATION syn5_toreno_chopper 270.0 HELI_GOTO_COORDS syn5_toreno_chopper -615.5 1513.9 54.8 0.0 25.5 SET_FIXED_CAMERA_POSITION -1647.6 1409.7 8.0 0.0 0.0 0.0 ///looking at the meet POINT_CAMERA_AT_POINT -1590.8 1426.7 13.8 JUMP_CUT timera = 0 syn5_control_flag = 9 ENDIF ENDIF ENDIF //having guys run off and through tear gas IF syn5_control_flag = 9 IF timera > 1000 IF NOT IS_CHAR_DEAD syn5_tbone CLEAR_CHAR_TASKS syn5_tbone OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1628.8 1421.7 6.2 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[0] CLEAR_CHAR_TASKS syn5_tbone_goons[0] OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1626.8 1419.7 6.2 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[0] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[1] CLEAR_CHAR_TASKS syn5_tbone_goons[1] OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1630.8 1423.7 6.2 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[1] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[2] CLEAR_CHAR_TASKS syn5_tbone_goons[2] OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1632.8 1425.7 6.2 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[2] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[3] CLEAR_CHAR_TASKS syn5_tbone_goons[3] OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1634.0 1423.0 6.2 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[3] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD ryder GIVE_WEAPON_TO_CHAR ryder WEAPONTYPE_TEARGAS 1 SET_CURRENT_CHAR_WEAPON ryder WEAPONTYPE_TEARGAS TASK_SHOOT_AT_COORD ryder -1652.5 1396.0 6.2 500 ENDIF IF NOT IS_CHAR_DEAD syn5_ryder_goons[0] GIVE_WEAPON_TO_CHAR syn5_ryder_goons[0] WEAPONTYPE_TEARGAS 1 SET_CURRENT_CHAR_WEAPON syn5_ryder_goons[0] WEAPONTYPE_TEARGAS OPEN_SEQUENCE_TASK syn5_seq TASK_PAUSE -1 500 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_ryder_goons[0] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF // Too late, man, he's bugging out! syn5_speech_goals = 7 syn5_speech_control_flag = 11 syn5_random_last_label = 12 GOSUB syn5_dialogue_setup timera = 0 syn5_control_flag = 10 ENDIF ENDIF IF syn5_control_flag = 10 //throwing the second canister IF NOT IS_CHAR_DEAD syn5_ryder_goons[0] GET_SCRIPT_TASK_STATUS syn5_ryder_goons[0] PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK TASK_SHOOT_AT_COORD syn5_ryder_goons[0] -1653.1 1400.0 7.0 500 syn5_control_flag = 11 ENDIF ENDIF ENDIF //creating teargas in correct position IF syn5_control_flag = 11 IF syn5_speech_goals = 0 IF timera > 2000 IF NOT IS_CHAR_DEAD ryder GET_SCRIPT_TASK_STATUS ryder PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK OPEN_SEQUENCE_TASK syn5_seq TASK_PAUSE -1 500 TASK_GO_STRAIGHT_TO_COORD -1 -1649.1 1395.0 7.0 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK ryder syn5_seq CLEAR_SEQUENCE_TASK syn5_seq // Lets get those motherfuckers! syn5_speech_goals = 7 syn5_speech_control_flag = 12 syn5_random_last_label = 14 GOSUB syn5_dialogue_setup SET_FIXED_CAMERA_POSITION -1665.9 1386.8 11.0 0.0 0.0 0.0 ///looking at the meet POINT_CAMERA_AT_POINT -1641.2 1407.9 9.9 JUMP_CUT timera = 0 syn5_control_flag = 12 ENDIF ENDIF ENDIF ENDIF ENDIF IF syn5_control_flag = 12 IF timera > 1500 CREATE_FX_SYSTEM teargasAD -1656.5 1398.0 6.2 TRUE syn5_teargas[0] //ryders PLAY_FX_SYSTEM syn5_teargas[0] CREATE_FX_SYSTEM teargasAD -1656.0 1393.0 7.0 TRUE syn5_teargas[1] //ryders mates PLAY_FX_SYSTEM syn5_teargas[1] syn5_control_flag = 13 ENDIF ENDIF //finish IF syn5_control_flag = 13 IF timera > 5000 syn5_skip_cutscene_flag = 0 SKIP_CUTSCENE_END //if cutscene has been skipped //////////////////////////////////////////// IF syn5_skip_cutscene_flag = 1 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS syn5_speech_goals = 0 ENDIF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB syn5_death_checks IF syn5_goals = 10 GOTO syn_goals10 ENDIF IF syn5_deathcheck_flag = 1 GOTO mission_syn5_failed ENDIF //if cutscene has been skipped //////////////////////////////////////////// IF syn5_skip_cutscene_flag = 1 CAMERA_RESET_NEW_SCRIPTABLES GOSUB syn5_creating_tbone GOSUB syn5_creating_ryder IF NOT IS_CAR_DEAD syn5_ryders_car SET_CAR_COORDINATES syn5_ryders_car -1702.9 1335.5 5.9 SET_CAR_HEADING syn5_ryders_car 271.8 ENDIF IF NOT IS_CAR_DEAD syn5_ryder_goon_cars[0] SET_CAR_COORDINATES syn5_ryder_goon_cars[0] -1706.6 1340.2 5.9 SET_CAR_HEADING syn5_ryder_goon_cars[0] 271.8 ENDIF IF NOT IS_CAR_DEAD syn5_ryder_goon_cars[1] SET_CAR_COORDINATES syn5_ryder_goon_cars[1] -1718.4 1345.7 6.2 SET_CAR_HEADING syn5_ryder_goon_cars[1] 231.8 ENDIF IF NOT IS_CAR_DEAD syn5_tbones_car OPEN_CAR_DOOR syn5_tbones_car REAR_LEFT_DOOR OPEN_CAR_DOOR syn5_tbones_car REAR_RIGHT_DOOR IF IS_PLAYBACK_GOING_ON_FOR_CAR syn5_tbones_car STOP_PLAYBACK_RECORDED_CAR syn5_tbones_car ENDIF SET_CAR_COORDINATES syn5_tbones_car -1722.3 1365.6 6.2 SET_CAR_HEADING syn5_tbones_car 325.6 ENDIF REMOVE_CAR_RECORDING 27 KILL_FX_SYSTEM syn5_teargas[0] KILL_FX_SYSTEM syn5_teargas[1] CREATE_FX_SYSTEM teargasAD -1656.5 1398.0 6.2 TRUE syn5_teargas[0] //ryders PLAY_FX_SYSTEM syn5_teargas[0] CREATE_FX_SYSTEM teargasAD -1656.0 1393.0 7.0 TRUE syn5_teargas[1] //ryders mates PLAY_FX_SYSTEM syn5_teargas[1] ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY wuzi CLEAR_CHAR_TASKS_IMMEDIATELY cesar CLEAR_CHAR_TASKS_IMMEDIATELY scplayer //CESAR GIVE_WEAPON_TO_CHAR cesar WEAPONTYPE_TEC9 30000 SET_CHAR_DECISION_MAKER cesar syn5_ped_decisions //WUZI TASK_SHOOT_AT_COORD wuzi -1685.2 1363.1 7.8 -1 //ANY REMAINING MATES OF WUZI IF NOT IS_CHAR_DEAD syn5_wuzi_goons[0] TASK_SHOOT_AT_COORD syn5_wuzi_goons[0] -1682.2 1364.1 7.8 -1 ENDIF IF NOT IS_CHAR_DEAD syn5_wuzi_goons[1] TASK_SHOOT_AT_COORD syn5_wuzi_goons[1] -1694.2 1355.1 7.8 -1 ENDIF IF NOT IS_CHAR_DEAD syn5_wuzi_goons[2] TASK_SHOOT_AT_COORD syn5_wuzi_goons[2] -1704.2 1343.1 7.8 -1 ENDIF //RYDER (NOW T-BONE) IF NOT IS_CHAR_DEAD syn5_tbone CLEAR_CHAR_TASKS_IMMEDIATELY syn5_tbone IF NOT IS_CHAR_IN_ANY_CAR syn5_tbone SET_CHAR_COORDINATES syn5_tbone -1618.9 1401.8 6.2 ELSE WARP_CHAR_FROM_CAR_TO_COORD syn5_tbone -1618.9 1401.8 6.2 ENDIF SET_CHAR_HEADING syn5_tbone 110.5 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE syn5_tbone FALSE /* //bush 1 OPEN_SEQUENCE_TASK syn5_ryder_seq1 TASK_GO_TO_COORD_WHILE_SHOOTING -1 -1618.3 1400.6 6.2 PEDMOVE_RUN 1.0 0.5 scplayer TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer 4000 CLOSE_SEQUENCE_TASK syn5_ryder_seq1 */ //bush 2 OPEN_SEQUENCE_TASK syn5_ryder_seq2 TASK_GO_TO_COORD_WHILE_SHOOTING -1 -1619.3 1412.1 6.2 PEDMOVE_RUN 1.0 0.5 scplayer TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer 4000 CLOSE_SEQUENCE_TASK syn5_ryder_seq2 //bush 3 OPEN_SEQUENCE_TASK syn5_ryder_seq3 TASK_GO_TO_COORD_WHILE_SHOOTING -1 -1635.0 1430.4 6.2 PEDMOVE_RUN 1.0 0.5 scplayer TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer 4000 CLOSE_SEQUENCE_TASK syn5_ryder_seq3 /* //bush 4 OPEN_SEQUENCE_TASK syn5_ryder_seq4 TASK_GO_TO_COORD_WHILE_SHOOTING -1 -1647.3 1431.5 6.2 PEDMOVE_RUN 1.0 0.5 scplayer TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer 4000 CLOSE_SEQUENCE_TASK syn5_ryder_seq4 */ //playing sequences OPEN_SEQUENCE_TASK syn5_ryder_seq5 //PERFORM_SEQUENCE_TASK -1 syn5_ryder_seq1 PERFORM_SEQUENCE_TASK -1 syn5_ryder_seq2 PERFORM_SEQUENCE_TASK -1 syn5_ryder_seq3 //PERFORM_SEQUENCE_TASK -1 syn5_ryder_seq4 PERFORM_SEQUENCE_TASK -1 syn5_ryder_seq3 PERFORM_SEQUENCE_TASK -1 syn5_ryder_seq2 //PERFORM_SEQUENCE_TASK -1 syn5_ryder_seq1 SET_SEQUENCE_TO_REPEAT syn5_ryder_seq5 1 CLOSE_SEQUENCE_TASK syn5_ryder_seq5 PERFORM_SEQUENCE_TASK syn5_tbone syn5_ryder_seq5 //CLEAR_SEQUENCE_TASK syn5_ryder_seq1 CLEAR_SEQUENCE_TASK syn5_ryder_seq2 CLEAR_SEQUENCE_TASK syn5_ryder_seq3 //CLEAR_SEQUENCE_TASK syn5_ryder_seq4 CLEAR_SEQUENCE_TASK syn5_ryder_seq5 ADD_BLIP_FOR_CHAR syn5_tbone syn5_blip ENDIF //ryder's mate IF NOT IS_CHAR_DEAD syn5_ryder_goons[0] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_ryder_goons[0] SET_CHAR_COORDINATES syn5_ryder_goons[0] -1631.2 1410.3 6.2 SET_CHAR_HEADING syn5_ryder_goons[0] 137.6 //SET_CHAR_STAY_IN_SAME_PLACE syn5_ryder_goons[0] TRUE OPEN_SEQUENCE_TASK syn5_seq TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_TOGGLE_DUCK -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_ryder_goons[0] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF //rest of ryders goons CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1697.9 1345.7 6.1 syn5_ryder_goons[1] SET_CHAR_ACCURACY syn5_ryder_goons[1] syn5_accuracy SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_ryder_goons[1] TRUE CLEAR_CHAR_TASKS_IMMEDIATELY syn5_ryder_goons[1] GIVE_WEAPON_TO_CHAR syn5_ryder_goons[1] WEAPONTYPE_TEC9 30000 SET_CHAR_HEADING syn5_ryder_goons[1] 146.8 SET_CHAR_DECISION_MAKER syn5_ryder_goons[1] syn5_ped_decisions //SET_CHAR_STAY_IN_SAME_PLACE syn5_ryder_goons[1] FALSE SET_CHAR_KINDA_STAY_IN_SAME_PLACE syn5_ryder_goons[1] TRUE OPEN_SEQUENCE_TASK syn5_seq //TASK_KILL_CHAR_ON_FOOT -1 scplayer TASK_SHOOT_AT_COORD -1 -1684.9 1353.3 13.6 -2 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_ryder_goons[1] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq IF NOT IS_CHAR_DEAD syn5_ryder_goons[2] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_ryder_goons[2] SET_CHAR_STAY_IN_SAME_PLACE syn5_ryder_goons[2] FALSE SET_CHAR_KINDA_STAY_IN_SAME_PLACE syn5_ryder_goons[2] TRUE OPEN_SEQUENCE_TASK syn5_seq //TASK_GO_STRAIGHT_TO_COORD -1 -1702.6 1347.5 6.2 PEDMOVE_RUN -1 //TASK_GO_TO_COORD_WHILE_SHOOTING -1 -1694.9 1355.9 8.8 PEDMOVE_RUN 0.5 2.0 scplayer //TASK_GO_TO_COORD_WHILE_SHOOTING -1 -1690.9 1360.7 8.8 PEDMOVE_RUN 0.5 2.0 scplayer //TASK_GO_TO_COORD_WHILE_SHOOTING -1 -1690.4 1367.5 8.8 PEDMOVE_RUN 0.5 2.0 scplayer TASK_FOLLOW_PATH_NODES_TO_COORD -1 -1690.4 1367.5 8.8 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 230.5 //TASK_KILL_CHAR_ON_FOOT -1 scplayer TASK_SHOOT_AT_COORD -1 -1684.9 1353.3 13.6 -2 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_ryder_goons[2] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_ryder_goons[3] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_ryder_goons[3] SET_CHAR_STAY_IN_SAME_PLACE syn5_ryder_goons[3] FALSE SET_CHAR_KINDA_STAY_IN_SAME_PLACE syn5_ryder_goons[3] TRUE OPEN_SEQUENCE_TASK syn5_seq //TASK_GO_STRAIGHT_TO_COORD -1 -1702.6 1347.5 6.2 PEDMOVE_RUN -1 //TASK_GO_TO_COORD_WHILE_SHOOTING -1 -1694.9 1355.9 8.8 PEDMOVE_RUN 0.5 2.0 scplayer //TASK_GO_TO_COORD_WHILE_SHOOTING -1 -1690.9 1363.8 8.8 PEDMOVE_RUN 0.5 2.0 scplayer TASK_FOLLOW_PATH_NODES_TO_COORD -1 -1690.9 1363.8 8.8 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 230.5 //TASK_KILL_CHAR_ON_FOOT -1 scplayer TASK_SHOOT_AT_COORD -1 -1684.9 1353.3 13.6 -2 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_ryder_goons[3] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_ryder_goons[4] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_ryder_goons[4] SET_CHAR_STAY_IN_SAME_PLACE syn5_ryder_goons[4] FALSE SET_CHAR_KINDA_STAY_IN_SAME_PLACE syn5_ryder_goons[4] TRUE OPEN_SEQUENCE_TASK syn5_seq TASK_FOLLOW_PATH_NODES_TO_COORD -1 -1698.8 1352.4 6.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 251.5 //TASK_KILL_CHAR_ON_FOOT -1 scplayer TASK_SHOOT_AT_COORD -1 -1684.9 1353.3 13.6 -2 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_ryder_goons[4] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_ryder_goons[5] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_ryder_goons[5] SET_CHAR_STAY_IN_SAME_PLACE syn5_ryder_goons[5] FALSE SET_CHAR_KINDA_STAY_IN_SAME_PLACE syn5_ryder_goons[5] TRUE OPEN_SEQUENCE_TASK syn5_seq TASK_FOLLOW_PATH_NODES_TO_COORD -1 -1682.5 1364.4 6.2 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 182.5 //TASK_KILL_CHAR_ON_FOOT -1 scplayer TASK_SHOOT_AT_COORD -1 -1684.9 1353.3 13.6 -2 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_ryder_goons[5] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF CREATE_FX_SYSTEM teargasAD -1657.8 1405.0 7.0 TRUE syn5_teargas[2] //left of ryder when looking at it from cutscene PLAY_FX_SYSTEM syn5_teargas[2] CREATE_FX_SYSTEM teargasAD -1643.3 1390.7 7.0 TRUE syn5_teargas[3] //right of ryder when looking at it from cutscene PLAY_FX_SYSTEM syn5_teargas[3] /* CREATE_FX_SYSTEM teargasAD -1671.1 1421.7 7.0 TRUE syn5_teargas[4] //left of pier 69 when looking at it from cutscene PLAY_FX_SYSTEM syn5_teargas[4] CREATE_FX_SYSTEM teargasAD -1631.1 1371.6 7.0 TRUE syn5_teargas[5] //right of pier 69 when looking at it from cutscene PLAY_FX_SYSTEM syn5_teargas[5] */ //next to parasols on the right as you look FROM ryder's position IF NOT IS_CHAR_DEAD syn5_tbone_goons[0] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_tbone_goons[0] SET_CHAR_COORDINATES syn5_tbone_goons[0] -1647.7 1421.8 6.2 SET_CHAR_HEADING syn5_tbone_goons[0] 186.5 SET_CHAR_STAY_IN_SAME_PLACE syn5_tbone_goons[0] FALSE SET_CHAR_KINDA_STAY_IN_SAME_PLACE syn5_tbone_goons[0] TRUE GIVE_WEAPON_TO_CHAR syn5_tbone_goons[0] WEAPONTYPE_TEC9 30000 TASK_KILL_CHAR_ON_FOOT syn5_tbone_goons[0] scplayer ENDIF //in the middle of the shops.. IF NOT IS_CHAR_DEAD syn5_tbone_goons[1] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_tbone_goons[1] SET_CHAR_COORDINATES syn5_tbone_goons[1] -1672.6 1373.9 8.8 SET_CHAR_HEADING syn5_tbone_goons[1] 136.4 GIVE_WEAPON_TO_CHAR syn5_tbone_goons[1] WEAPONTYPE_TEC9 30000 TASK_KILL_CHAR_ON_FOOT syn5_tbone_goons[1] scplayer ENDIF //next to parasols on the left as you look from ryders position IF NOT IS_CHAR_DEAD syn5_tbone_goons[2] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_tbone_goons[2] SET_CHAR_COORDINATES syn5_tbone_goons[2] -1631.8 1398.7 6.2 SET_CHAR_HEADING syn5_tbone_goons[2] 105.9 GIVE_WEAPON_TO_CHAR syn5_tbone_goons[2] WEAPONTYPE_TEC9 30000 TASK_KILL_CHAR_ON_FOOT syn5_tbone_goons[2] scplayer ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[3] CLEAR_CHAR_TASKS_IMMEDIATELY syn5_tbone_goons[3] SET_CHAR_COORDINATES syn5_tbone_goons[3] -1658.7 1387.3 6.2 SET_CHAR_HEADING syn5_tbone_goons[3] 144.5 GIVE_WEAPON_TO_CHAR syn5_tbone_goons[3] WEAPONTYPE_TEC9 30000 SET_CHAR_STAY_IN_SAME_PLACE syn5_tbone_goons[3] FALSE SET_CHAR_KINDA_STAY_IN_SAME_PLACE syn5_tbone_goons[3] TRUE TASK_KILL_CHAR_ON_FOOT syn5_tbone_goons[3] scplayer ENDIF //RANDOM GOONS ADDED IN MIDDLE OF PIER 69 //on top of last boardwalk before player reaches ryder GENERATE_RANDOM_INT_IN_RANGE 0 2 syn5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1645.8 1401.5 8.8 syn5_random_goons[0] SET_CHAR_ACCURACY syn5_random_goons[0] syn5_accuracy SET_CHAR_HEADING syn5_random_goons[0] 129.4 SET_CHAR_DECISION_MAKER syn5_random_goons[0] syn5_ped_decisions SET_CHAR_KINDA_STAY_IN_SAME_PLACE syn5_random_goons[0] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_random_goons[0] TRUE GIVE_WEAPON_TO_CHAR syn5_random_goons[0] WEAPONTYPE_TEC9 30000 TASK_KILL_CHAR_ON_FOOT syn5_random_goons[0] scplayer //behind bin on the left as you look towards sniping point GENERATE_RANDOM_INT_IN_RANGE 0 2 syn5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1670.5 1364.8 6.2 syn5_random_goons[1] SET_CHAR_ACCURACY syn5_random_goons[1] syn5_accuracy SET_CHAR_HEADING syn5_random_goons[1] 129.4 SET_CHAR_DECISION_MAKER syn5_random_goons[1] syn5_ped_decisions SET_CHAR_KINDA_STAY_IN_SAME_PLACE syn5_random_goons[1] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_random_goons[1] TRUE GIVE_WEAPON_TO_CHAR syn5_random_goons[1] WEAPONTYPE_TEC9 30000 TASK_KILL_CHAR_ON_FOOT syn5_random_goons[1] scplayer //behind bin on the right as you look towards sniping point GENERATE_RANDOM_INT_IN_RANGE 0 2 syn5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1687.5 1367.8 6.2 syn5_random_goons[2] SET_CHAR_ACCURACY syn5_random_goons[2] syn5_accuracy SET_CHAR_HEADING syn5_random_goons[2] 124.5 SET_CHAR_DECISION_MAKER syn5_random_goons[2] syn5_ped_decisions SET_CHAR_KINDA_STAY_IN_SAME_PLACE syn5_random_goons[2] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_random_goons[2] TRUE GIVE_WEAPON_TO_CHAR syn5_random_goons[2] WEAPONTYPE_TEC9 30000 TASK_KILL_CHAR_ON_FOOT syn5_random_goons[2] scplayer //on top of middle boardwalk GENERATE_RANDOM_INT_IN_RANGE 0 2 syn5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1657.3 1379.8 8.8 syn5_random_goons[3] SET_CHAR_ACCURACY syn5_random_goons[3] syn5_accuracy SET_CHAR_HEADING syn5_random_goons[3] 140.5 SET_CHAR_DECISION_MAKER syn5_random_goons[3] syn5_ped_decisions SET_CHAR_KINDA_STAY_IN_SAME_PLACE syn5_random_goons[3] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_random_goons[3] TRUE GIVE_WEAPON_TO_CHAR syn5_random_goons[3] WEAPONTYPE_TEC9 30000 TASK_KILL_CHAR_ON_FOOT syn5_random_goons[3] scplayer DELETE_CAR syn5_toreno_chopper DELETE_CHAR ryder //DELETE_CHAR syn5_tbone REMOVE_CAR_RECORDING 28 UNLOAD_SPECIAL_CHARACTER 2 UNLOAD_SPECIAL_CHARACTER 3 //UNLOAD_SPECIAL_CHARACTER 4 REMOVE_ANIMATION GRENADE MARK_CAR_AS_NO_LONGER_NEEDED syn5_toreno_chopper MARK_MODEL_AS_NO_LONGER_NEEDED MAVERICK MARK_MODEL_AS_NO_LONGER_NEEDED PICADOR MARK_MODEL_AS_NO_LONGER_NEEDED tahoma MARK_MODEL_AS_NO_LONGER_NEEDED PONY MARK_CAR_AS_NO_LONGER_NEEDED syn5_dummy_car MARK_MODEL_AS_NO_LONGER_NEEDED BANSHEE SET_CAR_DENSITY_MULTIPLIER 1.0 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE syn5_ped_decisions EVENT_POTENTIAL_WALK_INTO_PED TASK_COMPLEX_AVOID_OTHER_PED_WHILE_WANDERING 0.0 100.0 0.0 0.0 FALSE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE syn5_ped_decisions EVENT_DEAD_PED TASK_COMPLEX_INVESTIGATE_DEAD_PED 100.0 0.0 0.0 0.0 FALSE TRUE LOAD_SCENE -1720.4 1275.5 16.9 MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_Group cesar SET_GROUP_DEFAULT_TASK_ALLOCATOR Players_Group DEFAULT_TASK_ALLOCATOR_FOLLOW_LIMITED syn5_flag_cesar_in_group = 1 SHUT_ALL_CHARS_UP FALSE //HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON CLEAR_PRINTS PRINT_NOW ( SYN5_06 ) 4000 1 //Find and kill Ryder! DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB syn5_death_checks IF syn5_goals = 10 GOTO syn_goals10 ENDIF IF syn5_deathcheck_flag = 1 GOTO mission_syn5_failed ENDIF syn5_control_flag = 0 syn5_goals = 5 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////// WAITING FOR THE PLAYER TO KILL RYDER /////////////////////////////////////////////////////////// IF syn5_goals = 5 IF syn5_control_flag = 0 //debug to stop cunting chars getting created for no reason IF LOCATE_CHAR_ANY_MEANS_2D scplayer -1708.6 1331.1 200.0 200.0 FALSE SET_PED_DENSITY_MULTIPLIER 0.0 ELSE SET_PED_DENSITY_MULTIPLIER 1.0 ENDIF GOSUB syn5_cesar_group ///////////////////DEBUG////////////////////////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q IF NOT IS_CHAR_DEAD syn5_tbone SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_tbone FALSE EXPLODE_CHAR_HEAD syn5_tbone ENDIF ENDIF ///////////////////DEBUG////////////////////////////////////// //GOSUB syn5_teargas_effect ----- debug.... switch back on drunken filter IF IS_CHAR_DEAD syn5_tbone GOSUB check_player_is_safe IF player_is_completely_safe = 1 CLEAR_PRINTS REMOVE_BLIP syn5_blip DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB syn5_death_checks IF syn5_goals = 10 GOTO syn_goals10 ENDIF IF syn5_deathcheck_flag = 1 GOTO mission_syn5_failed ENDIF REQUEST_ANIMATION DANCING REQUEST_ANIMATION KISSING REQUEST_ANIMATION MISC REQUEST_ANIMATION RYDER REQUEST_MODEL DYN_WOODPILE2 REQUEST_MODEL SPEEDER LOAD_SPECIAL_CHARACTER 2 ryder2 LOAD_ALL_MODELS_NOW syn5_control_flag = 1 ENDIF ENDIF ENDIF IF syn5_control_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 syn5_speech_goals = 0 SET_PLAYER_DRUNKENNESS player1 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR //HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SHUT_ALL_CHARS_UP TRUE CLEAR_AREA -1629.438 1422.648 6.2 60.0 TRUE LOAD_SCENE -1629.438 1422.648 6.2 //ryder (NOW TBONE) DELETE_CHAR syn5_tbone CREATE_CHAR PEDTYPE_MISSION2 SPECIAL04 -1629.438 1422.648 6.2 syn5_tbone SET_CHAR_HEALTH syn5_tbone 500 ADD_ARMOUR_TO_CHAR syn5_tbone 100 SET_CHAR_ACCURACY syn5_tbone syn5_accuracy SET_CHAR_HEADING syn5_tbone 260.0 //SET_ANIM_GROUP_FOR_CHAR ryder drunkman SET_CHAR_PROOFS syn5_tbone TRUE TRUE TRUE TRUE TRUE SET_CHAR_BLEEDING syn5_tbone TRUE SET_CHAR_DECISION_MAKER syn5_tbone syn5_empty_ped_decision_maker OPEN_SEQUENCE_TASK syn5_seq //TASK_PAUSE -1 150 TASK_PLAY_ANIM -1 RYD_Die_PT1 RYDER 1000.0 FALSE TRUE TRUE FALSE -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone syn5_seq CLEAR_SEQUENCE_TASK syn5_seq //player CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -1639.9 1410.3 6.2 SET_CHAR_HEADING scplayer 325.8 syn5_ammo_flag = 0 GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_MP5 syn5_ammo_flag IF syn5_ammo_flag > 0 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_MP5 ELSE GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_MICRO_UZI syn5_ammo_flag IF syn5_ammo_flag > 0 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_MICRO_UZI ELSE GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_TEC9 syn5_ammo_flag IF syn5_ammo_flag = 0 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_TEC9 300 ENDIF SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_TEC9 ENDIF ENDIF OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1632.2 1419.3 6.2 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK scplayer syn5_seq CLEAR_SEQUENCE_TASK syn5_seq SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA //cesar IF IS_GROUP_MEMBER cesar Players_Group REMOVE_CHAR_FROM_GROUP cesar ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY cesar SET_CHAR_COORDINATES cesar -1638.1 1408.8 6.2 SET_CHAR_HEADING cesar 325.8 SET_CHAR_DECISION_MAKER cesar syn5_empty_ped_decision_maker GIVE_WEAPON_TO_CHAR cesar WEAPONTYPE_TEC9 30000 OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1630.5 1417.9 6.2 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK cesar syn5_seq CLEAR_SEQUENCE_TASK syn5_seq //wuzi CLEAR_CHAR_TASKS_IMMEDIATELY wuzi SET_CHAR_COORDINATES wuzi -1645.7 1409.0 6.2 SET_CHAR_HEADING wuzi 328.5 SET_CHAR_DECISION_MAKER wuzi syn5_empty_ped_decision_maker GIVE_WEAPON_TO_CHAR wuzi WEAPONTYPE_TEC9 30000 OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1640.2 1414.0 6.2 PEDMOVE_WALK -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 syn5_tbone CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK wuzi syn5_seq CLEAR_SEQUENCE_TASK syn5_seq //the goons left alive IF NOT IS_CHAR_DEAD syn5_ryder_goons[0] SET_CHAR_DECISION_MAKER syn5_ryder_goons[0] syn5_empty_ped_decision_maker CLEAR_CHAR_TASKS_IMMEDIATELY syn5_ryder_goons[0] OPEN_SEQUENCE_TASK syn5_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_HANDS_UP -1 50000 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_ryder_goons[0] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF DELETE_CHAR syn5_ryder_goons[1] DELETE_CHAR syn5_ryder_goons[2] DELETE_CHAR syn5_ryder_goons[3] DELETE_CHAR syn5_ryder_goons[4] DELETE_CHAR syn5_ryder_goons[5] IF NOT IS_CHAR_DEAD syn5_tbone_goons[0] SET_CHAR_DECISION_MAKER syn5_tbone_goons[0] syn5_empty_ped_decision_maker CLEAR_CHAR_TASKS_IMMEDIATELY syn5_tbone_goons[0] OPEN_SEQUENCE_TASK syn5_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_HANDS_UP -1 50000 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[0] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF DELETE_CHAR syn5_tbone_goons[1] IF NOT IS_CHAR_DEAD syn5_tbone_goons[2] SET_CHAR_DECISION_MAKER syn5_tbone_goons[2] syn5_empty_ped_decision_maker CLEAR_CHAR_TASKS_IMMEDIATELY syn5_tbone_goons[2] OPEN_SEQUENCE_TASK syn5_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_HANDS_UP -1 50000 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[2] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF NOT IS_CHAR_DEAD syn5_tbone_goons[3] SET_CHAR_DECISION_MAKER syn5_tbone_goons[3] syn5_empty_ped_decision_maker CLEAR_CHAR_TASKS_IMMEDIATELY syn5_tbone_goons[3] OPEN_SEQUENCE_TASK syn5_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_HANDS_UP -1 50000 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[3] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF DELETE_CHAR syn5_wuzi_goons[0] DELETE_CHAR syn5_wuzi_goons[1] DELETE_CHAR syn5_wuzi_goons[2] //t-bone (NOW RYDER) CREATE_CHAR PEDTYPE_MISSION2 SPECIAL02 -1633.1 1394.1 6.2 ryder SET_CHAR_ACCURACY ryder syn5_accuracy SET_CHAR_HEADING ryder 268.0 //SET_CHAR_PROOFS syn5_tbone TRUE TRUE TRUE TRUE TRUE SET_CHAR_DECISION_MAKER ryder syn5_empty_ped_decision_maker SET_CHAR_ONLY_DAMAGED_BY_PLAYER ryder TRUE SET_CHAR_SUFFERS_CRITICAL_HITS ryder FALSE ADD_ARMOUR_TO_CHAR ryder 100 //GIVE_WEAPON_TO_CHAR ryder WEAPONTYPE_AK47 30000 //party go-ers //dancers CREATE_RANDOM_CHAR -1502.8 1379.5 3.1 syn5_party_dudes[0] SET_CHAR_HEADING syn5_party_dudes[0] 123.3 TASK_PLAY_ANIM syn5_party_dudes[0] DAN_Loop_A DANCING 4.0 TRUE FALSE FALSE FALSE -1 CREATE_RANDOM_CHAR -1503.2 1377.3 3.1 syn5_party_dudes[1] SET_CHAR_HEADING syn5_party_dudes[1] 37.1 TASK_PLAY_ANIM syn5_party_dudes[1] DAN_Loop_A DANCING 4.0 TRUE FALSE FALSE FALSE -1 CREATE_RANDOM_CHAR -1506.0 1375.2 3.1 syn5_party_dudes[2] SET_CHAR_HEADING syn5_party_dudes[2] 291.9 TASK_PLAY_ANIM syn5_party_dudes[2] DAN_Loop_A DANCING 4.0 TRUE FALSE FALSE FALSE -1 //snoggers CREATE_RANDOM_CHAR -1509.2 1379.3 2.8 syn5_party_dudes[3] CREATE_RANDOM_CHAR -1510.2 1379.3 2.8 syn5_party_dudes[4] TASK_TURN_CHAR_TO_FACE_CHAR syn5_party_dudes[3] syn5_party_dudes[4] TASK_PLAY_ANIM syn5_party_dudes[3] Grlfrd_Kiss_03 KISSING 4.0 TRUE FALSE FALSE FALSE -1 TASK_TURN_CHAR_TO_FACE_CHAR syn5_party_dudes[4] syn5_party_dudes[3] TASK_PLAY_ANIM syn5_party_dudes[4] Playa_Kiss_03 KISSING 4.0 TRUE FALSE FALSE FALSE -1 START_SCRIPT_FIRE -1505.0 1379.2 2.1 0 1 syn5_fire CREATE_OBJECT_NO_OFFSET DYN_WOODPILE2 -1505.0 1379.2 2.1 syn5_woodpile SET_OBJECT_SCALE syn5_woodpile 0.5 SET_OBJECT_COLLISION_DAMAGE_EFFECT syn5_woodpile FALSE //boats //t-bones CREATE_CAR speeder -1504.0 1388.7 0.0 syn5_boat[0] SET_CAR_HEADING syn5_boat[0] 282.0 ANCHOR_BOAT syn5_boat[0] TRUE SET_CAR_STRAIGHT_LINE_DISTANCE syn5_boat[0] 255 //players CREATE_CAR speeder -1519.9 1382.3 0.0 syn5_boat[1] SET_CAR_HEADING syn5_boat[1] 314.0 ANCHOR_BOAT syn5_boat[1] TRUE SET_FIXED_CAMERA_POSITION -1643.8 1408.3 7.6 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1631.1 1416.7 7.9 JUMP_CUT DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB syn5_death_checks IF syn5_goals = 10 GOTO syn_goals10 ENDIF IF syn5_deathcheck_flag = 1 GOTO mission_syn5_failed ENDIF syn5_skip_cutscene_flag = 1 SKIP_CUTSCENE_START // Mendez, I see you, Rifa motherfucker! syn5_speech_goals = 8 syn5_speech_control_flag = 0 syn5_random_last_label = 1 GOSUB syn5_dialogue_setup timera = 0 syn5_control_flag = 2 ENDIF IF syn5_control_flag = 2 IF NOT IS_CHAR_DEAD syn5_tbone IF LOCATE_CHAR_ANY_MEANS_2D syn5_tbone -1626.6 1421.8 1.0 1.0 FALSE CLEAR_CHAR_TASKS_IMMEDIATELY syn5_tbone SET_CHAR_COORDINATES syn5_tbone -1624.4 1423.8 6.2 SET_CHAR_HEADING syn5_tbone 135.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE syn5_tbone RYD_Die_PT2 RYDER 1000.0 FALSE FALSE FALSE TRUE -1 SET_FIXED_CAMERA_POSITION -1633.2 1416.9 7.6 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1624.2 1424.9 6.8 JUMP_CUT syn5_control_flag = 3 ENDIF ENDIF ENDIF IF syn5_control_flag = 3 IF NOT IS_CHAR_DEAD syn5_tbone IF IS_CHAR_PLAYING_ANIM syn5_tbone RYD_Die_PT2 GET_CHAR_ANIM_CURRENT_TIME syn5_tbone RYD_Die_PT2 syn5_animtime IF syn5_animtime > 0.783 SET_CHAR_ANIM_SPEED syn5_tbone RYD_Die_PT2 0.0 syn5_control_flag = 4 ENDIF ENDIF ENDIF ENDIF IF syn5_control_flag = 4 IF syn5_speech_goals = 0 IF NOT IS_CHAR_DEAD syn5_tbone OPEN_SEQUENCE_TASK syn5_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 syn5_tbone TASK_SHOOT_AT_CHAR -1 syn5_tbone 1000 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK scplayer syn5_seq CLEAR_SEQUENCE_TASK syn5_seq OPEN_SEQUENCE_TASK syn5_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 syn5_tbone TASK_SHOOT_AT_CHAR -1 syn5_tbone 1000 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK cesar syn5_seq CLEAR_SEQUENCE_TASK syn5_seq IF IS_CHAR_PLAYING_ANIM syn5_tbone RYD_Die_PT2 SET_CHAR_ANIM_SPEED syn5_tbone RYD_Die_PT2 1.0 ENDIF syn5_control_flag = 5 ENDIF ENDIF ENDIF IF syn5_control_flag = 5 IF NOT IS_CHAR_DEAD syn5_tbone IF IS_CHAR_PLAYING_ANIM syn5_tbone RYD_Die_PT2 GET_CHAR_ANIM_CURRENT_TIME syn5_tbone RYD_Die_PT2 syn5_animtime IF syn5_animtime > 0.98 SET_CHAR_COORDINATES syn5_tbone -1622.1 1425.5 6.2 //REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1622.1 1425.5 6.2 SOUND_PED_HIT_WATER_SPLASH timera = 0 syn5_control_flag = 6 ENDIF ENDIF ENDIF ENDIF IF syn5_control_flag = 6 IF timera > 2000 IF NOT IS_CHAR_DEAD ryder OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1621.0 1396.0 7.4 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK ryder syn5_seq CLEAR_SEQUENCE_TASK syn5_seq POINT_CAMERA_AT_CHAR ryder FIXED JUMP_CUT // Ryder, you sherm-head assshole syn5_speech_goals = 8 syn5_speech_control_flag = 1 syn5_random_last_label = 4 GOSUB syn5_dialogue_setup ENDIF timera = 0 syn5_control_flag = 7 ENDIF ENDIF IF syn5_control_flag = 7 IF NOT IS_CHAR_DEAD ryder GET_SCRIPT_TASK_STATUS ryder PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1614.82, 1397.204, 7.277 PEDMOVE_RUN -1 TASK_CHAR_SLIDE_TO_COORD -1 -1614.82, 1397.204, 7.277 287.0 0.9 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 run_dive MISC 4.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK ryder syn5_seq CLEAR_SEQUENCE_TASK syn5_seq SET_FIXED_CAMERA_POSITION -1617.8 1398.8 7.2 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1614.2 1396.3 8.0 JUMP_CUT timera = 0 syn5_control_flag = 8 ENDIF ENDIF ENDIF IF syn5_control_flag = 8 IF syn5_speech_goals = 0 // He's headed for those boats and I can't swim. | Don't worry, he's mine! syn5_speech_goals = 8 syn5_speech_control_flag = 4 syn5_random_last_label = 6 GOSUB syn5_dialogue_setup syn5_control_flag = 9 ENDIF ENDIF IF syn5_control_flag = 9 IF NOT IS_CHAR_DEAD ryder IF IS_CHAR_PLAYING_ANIM ryder run_dive GET_CHAR_ANIM_CURRENT_TIME ryder run_dive syn5_animtime IF syn5_animtime > 0.98 timera = 0 syn5_control_flag = 10 ENDIF ENDIF ENDIF ENDIF IF syn5_control_flag = 10 IF timera > 500 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1609.2 1401.7 5.8 SOUND_PED_HIT_WATER_SPLASH timera = 0 syn5_control_flag = 11 ENDIF ENDIF IF syn5_control_flag = 11 IF timera > 1000 syn5_control_flag = 12 ENDIF ENDIF IF syn5_control_flag = 12 syn5_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB syn5_death_checks IF syn5_goals = 10 GOTO syn_goals10 ENDIF IF syn5_deathcheck_flag = 1 GOTO mission_syn5_failed ENDIF //if cutscene has been skipped //////////////////////////////////////////// IF syn5_skip_cutscene_flag = 1 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS syn5_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB syn5_death_checks IF syn5_goals = 10 GOTO syn_goals10 ENDIF IF syn5_deathcheck_flag = 1 GOTO mission_syn5_failed ENDIF DELETE_CHAR syn5_tbone CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY cesar ENDIF IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD syn5_boat[0] SET_CHAR_DROWNS_IN_WATER ryder FALSE CLEAR_CHAR_TASKS_IMMEDIATELY ryder SET_CHAR_COORDINATES ryder -1543.9 1401.6 0.0 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS syn5_boat[0] -1.0 2.0 0.0 syn5_x syn5_y syn5_z TASK_SWIM_TO_COORD ryder syn5_x syn5_y syn5_z SET_SWIM_SPEED ryder 2.3 ADD_BLIP_FOR_CHAR ryder syn5_blip ENDIF ENDIF MARK_CAR_AS_NO_LONGER_NEEDED syn5_ryders_car MARK_CAR_AS_NO_LONGER_NEEDED syn5_ryder_goon_cars[0] MARK_CAR_AS_NO_LONGER_NEEDED syn5_ryder_goon_cars[1] MARK_MODEL_AS_NO_LONGER_NEEDED PICADOR MARK_MODEL_AS_NO_LONGER_NEEDED tahoma MARK_MODEL_AS_NO_LONGER_NEEDED TRIADA MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS2 MARK_MODEL_AS_NO_LONGER_NEEDED SFR1 MARK_MODEL_AS_NO_LONGER_NEEDED SFR2 TASK_GO_STRAIGHT_TO_COORD cesar -1616.5 1402.9 6.2 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD wuzi -1615.5 1398.4 6.2 PEDMOVE_WALK -2 UNLOAD_SPECIAL_CHARACTER 4 REMOVE_ANIMATION MISC REMOVE_ANIMATION RYDER CLEAR_PRINTS PRINT ( SYN5_07 ) 7000 1 //Jump into the water and swim after T-Bone. //HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SHUT_ALL_CHARS_UP FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB syn5_death_checks IF syn5_goals = 10 GOTO syn_goals10 ENDIF IF syn5_deathcheck_flag = 1 GOTO mission_syn5_failed ENDIF syn5_speech_flag = 0 syn5_control_flag = 0 syn5_goals = 6 CHECKPOINT_SAVE 99 ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////// WAITING FOR THE PLAYER TO GET TO BOAT AND KILL T-BONE /////////////////////////////////////////// IF syn5_goals = 6 // help text IF syn5_speech_flag = 0 IF IS_CHAR_IN_WATER scplayer CLEAR_THIS_PRINT SYN5_07 PRINT_NOW ( SYN5_08 ) 7000 1 //Kill T-Bone. syn5_speech_flag = 1 ENDIF ENDIF // telling player to get in the boat IF syn5_speech_flag = 1 IF NOT IS_CAR_DEAD syn5_boat[1] AND NOT IS_CAR_DEAD syn5_boat[0] // also check if the player blew up ryders boat, just direct to kill ryder IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer syn5_boat[1] 10.0 10.0 FALSE ADD_BLIP_FOR_CAR syn5_boat[1] syn5_boat_blip SET_BLIP_AS_FRIENDLY syn5_boat_blip TRUE PRINT_NOW ( SYN5_11 ) 7000 1 //Get in the boat. syn5_speech_flag = 2 ENDIF ENDIF ENDIF // waiting for player to get in the boat IF syn5_speech_flag = 2 IF NOT IS_CAR_DEAD syn5_boat[1] IF IS_CHAR_IN_CAR scplayer syn5_boat[1] IF NOT IS_CHAR_DEAD syn5_party_dudes[0] syn5_speech_goals = 9 GENERATE_RANDOM_INT_IN_RANGE 0 3 syn5_speech_control_flag syn5_random_last_label = syn5_speech_control_flag + 1 GOSUB syn5_dialogue_setup ENDIF syn5_speech_flag = 3 ENDIF ENDIF IF IS_CHAR_IN_ANY_BOAT scplayer REMOVE_BLIP syn5_boat_blip syn5_speech_flag = 3 ENDIF ENDIF IF syn5_speech_flag = 3 IF syn5_speech_goals = 0 IF syn5_speech_goals = 0 PRINT_NOW ( SYN5_12 ) 7000 1 //~s~Kill ~r~Ryder~s~. You can do a drive-by on his boat. syn5_speech_flag = 4 ENDIF ENDIF ENDIF IF syn5_speech_flag = 4 IF syn5_speech_goals = 0 IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD syn5_boat[0] IF IS_CHAR_IN_CAR ryder syn5_boat[0] IF NOT IS_CAR_DEAD syn5_boat[1] IF IS_CHAR_IN_CAR scplayer syn5_boat[1] IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer ryder 15.0 15.0 FALSE IF NOT IS_CHAR_DEAD ryder syn5_speech_goals = 11 syn5_speech_control_flag = 0 GOSUB syn5_dialogue_setup syn5_speech_flag = 5 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // main bit IF syn5_control_flag = 0 IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD syn5_boat[0] IF NOT LOCATE_CHAR_ANY_MEANS_2D ryder syn5_x syn5_y 2.0 2.0 FALSE GET_SCRIPT_TASK_STATUS ryder TASK_SWIM_TO_COORD task_status IF task_status = FINISHED_TASK GET_OFFSET_FROM_CAR_IN_WORLD_COORDS syn5_boat[0] -1.0 2.0 0.0 syn5_x syn5_y syn5_z TASK_SWIM_TO_COORD ryder syn5_x syn5_y syn5_z SET_SWIM_SPEED ryder 2.3 ENDIF ELSE WARP_CHAR_INTO_CAR ryder syn5_boat[0] syn5_control_flag = 1 ENDIF ENDIF ENDIF ENDIF IF syn5_control_flag = 1 IF NOT IS_CHAR_DEAD ryder IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer ryder 20.0 20.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR ryder scplayer syn5_control_flag = 2 ENDIF IF NOT IS_CAR_DEAD syn5_boat[0] IF HAS_CAR_BEEN_DAMAGED_BY_CHAR syn5_boat[0] scplayer syn5_control_flag = 2 ENDIF ENDIF ENDIF ENDIF IF syn5_control_flag = 2 IF syn5_controlling_tbone = 4 IF NOT IS_CHAR_DEAD ryder IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer ryder 250.0 250.0 FALSE IF NOT IS_CHAR_ON_SCREEN ryder CLEAR_PRINTS PRINT_NOW ( SYN5_09 ) 4000 1 //T-Bone has escaped! GOTO mission_syn5_failed ENDIF ENDIF ENDIF ENDIF ENDIF //Boat AI IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD syn5_boat[0] IF IS_CHAR_IN_CAR ryder syn5_boat[0] IF syn5_control_flag > 1 GOSUB syn5_telling_tbone_where_to_go ENDIF ENDIF ELSE //what happens if t-boats boat gets blown up before he gets in IF syn5_controlling_tbone = 0 TASK_SWIM_TO_COORD ryder -1491.2 1387.4 0.0 SET_SWIM_SPEED ryder 2.3 syn5_controlling_tbone = 1 ENDIF IF syn5_controlling_tbone = 1 GET_SCRIPT_TASK_STATUS ryder TASK_SWIM_TO_COORD task_status IF task_status = FINISHED_TASK OPEN_SEQUENCE_TASK syn5_seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 -1497.2 1383.5 1.6 PEDMOVE_RUN 1 /////debug - needs to be -1 TASK_ACHIEVE_HEADING -1 64.5 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK ryder syn5_seq CLEAR_SEQUENCE_TASK syn5_seq syn5_controlling_tbone = 2 ENDIF ENDIF ENDIF ENDIF //removing blip from boat IF IS_CAR_DEAD syn5_boat[1] REMOVE_BLIP syn5_boat_blip ENDIF //passing mission IF IS_CHAR_DEAD ryder timera = 0 syn5_control_flag = 0 syn5_goals = 7 ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////// END CUTSCENE /////////////////////////////////////////////////////////////////////////////////// IF syn5_goals = 7 IF timera > 2000 IF syn5_control_flag = 0 IF IS_CHAR_IN_ANY_BOAT scplayer CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 syn5_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR SHUT_ALL_CHARS_UP TRUE // Cesar congratulating player if he is in a boat syn5_speech_goals = 10 syn5_speech_control_flag = 0 GOSUB syn5_dialogue_setup syn5_control_flag = 1 ELSE GOTO mission_syn5_passed ENDIF ENDIF ENDIF IF syn5_control_flag = 1 IF syn5_speech_goals = 0 SHUT_ALL_CHARS_UP FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_PLAYER_CONTROL player1 ON GOTO mission_syn5_passed ENDIF ENDIF ENDIF //ingame dialogue GOSUB syn5_overall_dialogue GOTO mission_syn5_loop // Mission syn5 failed mission_syn5_failed: PRINT_BIG M_FAIL 5000 1 RETURN // mission syn5 passed mission_syn5_passed: flag_synd_mission_counter ++ //flag_syn5_mission1_passed = 1 PRINT_WITH_NUMBER_BIG ( M_PASSS ) 15000 5000 1 //"Mission Passed!" //100 being the amount of cash ADD_SCORE player1 15000//amount of cash AWARD_PLAYER_MISSION_RESPECT 40//amount of respect REMOVE_BLIP synd_contact_blip PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL PLAYER1 REGISTER_MISSION_PASSED SYND_5 PLAYER_MADE_PROGRESS 1 REMOVE_BLIP garage_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ garage_blip_icon garage_contact_blip //START_NEW_SCRIPT syn5_mission_loop RETURN // mission cleanup mission_cleanup_syn5: DISPLAY_RADAR 3 // PATHING ON //SET_CAMERA_BEHIND_PLAYER IF IS_STRING_EMPTY $shop_name RESTORE_CAMERA_JUMPCUT ENDIF DELETE_OBJECT syn5_sniper_anim REMOVE_BLIP syn5_blip //REMOVE_ANIMATION GRENADE REMOVE_ANIMATION DANCING REMOVE_ANIMATION KISSING REMOVE_ANIMATION MISC REMOVE_ANIMATION RYDER REMOVE_BLIP syn5_sniper_blips[0] REMOVE_BLIP syn5_sniper_blips[1] REMOVE_BLIP syn5_sniper_blips[2] REMOVE_BLIP syn5_sniper_blips[3] REMOVE_BLIP syn5_sniper_blips[4] REMOVE_BLIP syn5_sniper_blips[5] REMOVE_BLIP syn5_blip REMOVE_BLIP syn5_boat_blip KILL_FX_SYSTEM syn5_teargas[0] KILL_FX_SYSTEM syn5_teargas[1] KILL_FX_SYSTEM syn5_teargas[2] KILL_FX_SYSTEM syn5_teargas[3] MARK_MODEL_AS_NO_LONGER_NEEDED PICADOR MARK_MODEL_AS_NO_LONGER_NEEDED tahoma MARK_MODEL_AS_NO_LONGER_NEEDED maverick MARK_MODEL_AS_NO_LONGER_NEEDED SPEEDER MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS2 MARK_MODEL_AS_NO_LONGER_NEEDED TRIBOSS MARK_MODEL_AS_NO_LONGER_NEEDED TRIADA MARK_MODEL_AS_NO_LONGER_NEEDED SFR1 MARK_MODEL_AS_NO_LONGER_NEEDED SFR2 MARK_MODEL_AS_NO_LONGER_NEEDED SNIPER MARK_MODEL_AS_NO_LONGER_NEEDED TEC9 MARK_MODEL_AS_NO_LONGER_NEEDED PONY MARK_MODEL_AS_NO_LONGER_NEEDED cellphone MARK_MODEL_AS_NO_LONGER_NEEDED BANSHEE MARK_MODEL_AS_NO_LONGER_NEEDED SNIPER_anim MARK_MODEL_AS_NO_LONGER_NEEDED TEARGAS MARK_MODEL_AS_NO_LONGER_NEEDED SAVANNA MARK_MODEL_AS_NO_LONGER_NEEDED DYN_WOODPILE2 MARK_MODEL_AS_NO_LONGER_NEEDED AK47 REMOVE_SCRIPT_FIRE SYN5_FIRE IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF SHUT_ALL_CHARS_UP FALSE RELEASE_WEATHER REMOVE_CHAR_ELEGANTLY cesar REMOVE_CHAR_ELEGANTLY ryder REMOVE_CHAR_ELEGANTLY syn5_toreno REMOVE_CHAR_ELEGANTLY syn5_tbone SWITCH_PED_ROADS_BACK_TO_ORIGINAL -1755.6 1256.6 0.0 -1598.2 1660.1 50.0 UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 UNLOAD_SPECIAL_CHARACTER 3 UNLOAD_SPECIAL_CHARACTER 4 ENABLE_AMBIENT_CRIME TRUE GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////// GOSUBS /////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// syn5_death_checks://///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF syn5_goals < 10 IF IS_CHAR_DEAD cesar CLEAR_PRINTS PRINT_NOW ( SYN5_04 ) 7000 1 //Cesar has been killed! syn5_deathcheck_flag = 1 ENDIF ENDIF IF syn5_goals = 3 IF IS_CHAR_DEAD wuzi CLEAR_PRINTS //PRINT_NOW ( SYN5_05 ) 7000 1 //The Triad Leader has been killed! syn5_control_flag = 0 syn5_goals = 10 ENDIF ENDIF IF syn5_goals = 2 OR syn5_goals > 3 IF NOT syn5_goals = 10 IF IS_CHAR_DEAD wuzi CLEAR_PRINTS PRINT_NOW ( SYN5_05 ) 7000 1 //The Triad Leader has been killed! syn5_deathcheck_flag = 1 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// syn5_creating_snipers://///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //TBONE'S ROOFTOP GOONS //southwest roof IF IS_CHAR_DEAD syn5_tbone_goons[0] GENERATE_RANDOM_INT_IN_RANGE 0 2 syn5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1713.16 1356.57 16.2 syn5_tbone_goons[0] SET_CHAR_HEADING syn5_tbone_goons[0] 44.5 GIVE_WEAPON_TO_CHAR syn5_tbone_goons[0] WEAPONTYPE_TEC9 300000 TASK_SET_IGNORE_WEAPON_RANGE_FLAG syn5_tbone_goons[0] TRUE SET_CHAR_DECISION_MAKER syn5_tbone_goons[0] syn5_empty_ped_decision_maker SET_CHAR_STAY_IN_SAME_PLACE syn5_tbone_goons[0] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_tbone_goons[0] TRUE ENDIF //west roof IF IS_CHAR_DEAD syn5_tbone_goons[1] GENERATE_RANDOM_INT_IN_RANGE 0 2 syn5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1682.9 1379.8 13.8 syn5_tbone_goons[1] SET_CHAR_HEADING syn5_tbone_goons[1] 36.8 GIVE_WEAPON_TO_CHAR syn5_tbone_goons[1] WEAPONTYPE_TEC9 300000 TASK_SET_IGNORE_WEAPON_RANGE_FLAG syn5_tbone_goons[1] TRUE SET_CHAR_DECISION_MAKER syn5_tbone_goons[1] syn5_empty_ped_decision_maker SET_CHAR_STAY_IN_SAME_PLACE syn5_tbone_goons[1] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_tbone_goons[1] TRUE ENDIF //northwest roof IF IS_CHAR_DEAD syn5_tbone_goons[2] GENERATE_RANDOM_INT_IN_RANGE 0 2 syn5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1686.2 1393.2 20.5 syn5_tbone_goons[2] SET_CHAR_HEADING syn5_tbone_goons[2] 276.9 GIVE_WEAPON_TO_CHAR syn5_tbone_goons[2] WEAPONTYPE_TEC9 300000 TASK_SET_IGNORE_WEAPON_RANGE_FLAG syn5_tbone_goons[2] TRUE SET_CHAR_DECISION_MAKER syn5_tbone_goons[2] syn5_empty_ped_decision_maker SET_CHAR_STAY_IN_SAME_PLACE syn5_tbone_goons[2] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_tbone_goons[2] TRUE ENDIF //southeast roof IF IS_CHAR_DEAD syn5_tbone_goons[3] GENERATE_RANDOM_INT_IN_RANGE 0 2 syn5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1686.4 1345.6 16.2 syn5_tbone_goons[3] SET_CHAR_HEADING syn5_tbone_goons[3] 4.0 GIVE_WEAPON_TO_CHAR syn5_tbone_goons[3] WEAPONTYPE_TEC9 300000 TASK_SET_IGNORE_WEAPON_RANGE_FLAG syn5_tbone_goons[3] TRUE SET_CHAR_DECISION_MAKER syn5_tbone_goons[3] syn5_empty_ped_decision_maker SET_CHAR_STAY_IN_SAME_PLACE syn5_tbone_goons[3] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_tbone_goons[3] TRUE ENDIF //east roof IF IS_CHAR_DEAD syn5_tbone_goons[4] GENERATE_RANDOM_INT_IN_RANGE 0 2 syn5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1661.0 1362.2 17.4 syn5_tbone_goons[4] SET_CHAR_HEADING syn5_tbone_goons[4] 236.8 GIVE_WEAPON_TO_CHAR syn5_tbone_goons[4] WEAPONTYPE_TEC9 300000 TASK_SET_IGNORE_WEAPON_RANGE_FLAG syn5_tbone_goons[4] TRUE SET_CHAR_DECISION_MAKER syn5_tbone_goons[4] syn5_empty_ped_decision_maker SET_CHAR_STAY_IN_SAME_PLACE syn5_tbone_goons[4] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_tbone_goons[4] TRUE ENDIF //northeast roof IF IS_CHAR_DEAD syn5_tbone_goons[5] GENERATE_RANDOM_INT_IN_RANGE 0 2 syn5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1641.6 1369.9 17.4 syn5_tbone_goons[5] SET_CHAR_HEADING syn5_tbone_goons[5] 211.1 GIVE_WEAPON_TO_CHAR syn5_tbone_goons[5] WEAPONTYPE_TEC9 300000 TASK_SET_IGNORE_WEAPON_RANGE_FLAG syn5_tbone_goons[5] TRUE SET_CHAR_DECISION_MAKER syn5_tbone_goons[5] syn5_empty_ped_decision_maker SET_CHAR_STAY_IN_SAME_PLACE syn5_tbone_goons[5] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_tbone_goons[5] TRUE ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// syn5_creating_wuzi_men:///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF IS_CHAR_DEAD wuzi CREATE_CHAR PEDTYPE_MISSION1 TRIBOSS -1687.4 1321.1 6.2 wuzi SET_CHAR_HEADING wuzi 326.8 SET_CHAR_VISIBLE wuzi FALSE GIVE_WEAPON_TO_CHAR wuzi WEAPONTYPE_TEC9 30000 SET_CHAR_NEVER_TARGETTED wuzi TRUE SET_CHAR_DECISION_MAKER wuzi syn5_empty_ped_decision_maker SET_CHAR_STAY_IN_SAME_PLACE wuzi TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER wuzi TRUE OPEN_SEQUENCE_TASK syn5_seq TASK_SET_IGNORE_WEAPON_RANGE_FLAG -1 TRUE TASK_TOGGLE_DUCK -1 TRUE TASK_PLAY_ANIM -1 weapon_crouch PED 1000.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK wuzi syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF IS_CHAR_DEAD syn5_wuzi_goons[0] CREATE_CHAR PEDTYPE_MISSION1 TRIADA -1689.5 1320.2 6.2 syn5_wuzi_goons[0] SET_CHAR_HEADING syn5_wuzi_goons[0] 312.1 GIVE_WEAPON_TO_CHAR syn5_wuzi_goons[0] WEAPONTYPE_TEC9 30000 TASK_DUCK syn5_wuzi_goons[0] 360000000 SET_CHAR_NEVER_TARGETTED syn5_wuzi_goons[0] TRUE SET_CHAR_DECISION_MAKER syn5_wuzi_goons[0] syn5_empty_ped_decision_maker SET_CHAR_STAY_IN_SAME_PLACE syn5_wuzi_goons[0] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_wuzi_goons[0] TRUE OPEN_SEQUENCE_TASK syn5_seq TASK_SET_IGNORE_WEAPON_RANGE_FLAG -1 TRUE TASK_TOGGLE_DUCK -1 TRUE TASK_PLAY_ANIM -1 weapon_crouch PED 1000.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_wuzi_goons[0] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF IS_CHAR_DEAD syn5_wuzi_goons[1] CREATE_CHAR PEDTYPE_MISSION1 TRIADA -1688.1 1319.3 6.2 syn5_wuzi_goons[1] SET_CHAR_HEADING syn5_wuzi_goons[1] 327.2 GIVE_WEAPON_TO_CHAR syn5_wuzi_goons[1] WEAPONTYPE_TEC9 30000 TASK_DUCK syn5_wuzi_goons[1] 360000000 SET_CHAR_NEVER_TARGETTED syn5_wuzi_goons[1] TRUE SET_CHAR_DECISION_MAKER syn5_wuzi_goons[1] syn5_empty_ped_decision_maker SET_CHAR_STAY_IN_SAME_PLACE syn5_wuzi_goons[1] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_wuzi_goons[1] TRUE OPEN_SEQUENCE_TASK syn5_seq TASK_SET_IGNORE_WEAPON_RANGE_FLAG -1 TRUE TASK_TOGGLE_DUCK -1 TRUE TASK_PLAY_ANIM -1 weapon_crouch PED 1000.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_wuzi_goons[1] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF IF IS_CHAR_DEAD syn5_wuzi_goons[2] CREATE_CHAR PEDTYPE_MISSION1 TRIADA -1686.5 1318.0 6.2 syn5_wuzi_goons[2] SET_CHAR_HEADING syn5_wuzi_goons[2] 346.0 GIVE_WEAPON_TO_CHAR syn5_wuzi_goons[2] WEAPONTYPE_TEC9 30000 TASK_DUCK syn5_wuzi_goons[2] 360000000 SET_CHAR_NEVER_TARGETTED syn5_wuzi_goons[2] TRUE SET_CHAR_DECISION_MAKER syn5_wuzi_goons[2] syn5_empty_ped_decision_maker SET_CHAR_STAY_IN_SAME_PLACE syn5_wuzi_goons[2] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_wuzi_goons[2] TRUE OPEN_SEQUENCE_TASK syn5_seq TASK_SET_IGNORE_WEAPON_RANGE_FLAG -1 TRUE TASK_TOGGLE_DUCK -1 TRUE TASK_PLAY_ANIM -1 weapon_crouch PED 1000.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_wuzi_goons[2] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// syn5_creating_tbone://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //setting t-bone and goons walking //TBONE'S AND GROUND GOONS IF IS_CHAR_DEAD syn5_tbone CREATE_CHAR PEDTYPE_MISSION2 SPECIAL04 -1716.0 1349.8 6.2 syn5_tbone SET_CHAR_ACCURACY syn5_tbone syn5_accuracy SET_ANIM_GROUP_FOR_CHAR syn5_tbone gang2 //SET_ANIM_GROUP_FOR_CHAR syn5_tbone fatman SET_CHAR_HEADING syn5_tbone 229.4 GIVE_WEAPON_TO_CHAR syn5_tbone WEAPONTYPE_AK47 30000 SET_CHAR_DECISION_MAKER syn5_tbone syn5_empty_ped_decision_maker SET_CHAR_STAY_IN_SAME_PLACE syn5_tbone TRUE ENDIF IF IS_CHAR_DEAD syn5_tbone_goons[0] GENERATE_RANDOM_INT_IN_RANGE 0 2 syn5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1716.8 1351.6 6.2 syn5_tbone_goons[0] SET_CHAR_ACCURACY syn5_tbone_goons[0] syn5_accuracy SET_CHAR_HEADING syn5_tbone_goons[0] 229.4 SET_CHAR_DECISION_MAKER syn5_tbone_goons[0] syn5_ped_decisions //SET_CHAR_STAY_IN_SAME_PLACE syn5_tbone_goons[0] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_tbone_goons[0] TRUE ENDIF IF IS_CHAR_DEAD syn5_tbone_goons[1] GENERATE_RANDOM_INT_IN_RANGE 0 2 syn5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1720.5 1353.7 6.2 syn5_tbone_goons[1] //// SET_CHAR_ACCURACY syn5_tbone_goons[1] syn5_accuracy SET_ANIM_GROUP_FOR_CHAR syn5_tbone_goons[1] gang2 SET_CHAR_HEADING syn5_tbone_goons[1] 229.4 SET_CHAR_DECISION_MAKER syn5_tbone_goons[1] syn5_ped_decisions //SET_CHAR_STAY_IN_SAME_PLACE syn5_tbone_goons[1] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_tbone_goons[1] TRUE ENDIF IF IS_CHAR_DEAD syn5_tbone_goons[2] GENERATE_RANDOM_INT_IN_RANGE 0 2 syn5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1718.4 1351.3 6.2 syn5_tbone_goons[2] //// SET_CHAR_ACCURACY syn5_tbone_goons[2] syn5_accuracy SET_CHAR_HEADING syn5_tbone_goons[2] 236.0 GIVE_WEAPON_TO_CHAR syn5_tbone_goons[2] WEAPONTYPE_TEC9 30000 SET_CHAR_DECISION_MAKER syn5_tbone_goons[2] syn5_ped_decisions //SET_CHAR_STAY_IN_SAME_PLACE syn5_tbone_goons[2] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_tbone_goons[2] TRUE ENDIF IF IS_CHAR_DEAD syn5_tbone_goons[3] GENERATE_RANDOM_INT_IN_RANGE 0 2 syn5_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1718.2 1353.3 6.2 syn5_tbone_goons[3] SET_CHAR_ACCURACY syn5_tbone_goons[3] syn5_accuracy SET_ANIM_GROUP_FOR_CHAR syn5_tbone_goons[3] gang1 SET_CHAR_HEADING syn5_tbone_goons[3] 301.0 GIVE_WEAPON_TO_CHAR syn5_tbone_goons[3] WEAPONTYPE_TEC9 30000 SET_CHAR_DECISION_MAKER syn5_tbone_goons[3] syn5_ped_decisions //SET_CHAR_STAY_IN_SAME_PLACE syn5_tbone_goons[3] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_tbone_goons[3] TRUE ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// syn5_creating_ryder://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //ryders car IF IS_CAR_DEAD syn5_ryders_car CUSTOM_PLATE_FOR_NEXT_CAR PICADOR &_SHERM__ CREATE_CAR PICADOR -1774.2 1376.8 5.7 syn5_ryders_car CHANGE_CAR_COLOUR syn5_ryders_car 84 84 SET_CAR_HEADING syn5_ryders_car 251.8 LOCK_CAR_DOORS syn5_ryders_car CARLOCK_LOCKOUT_PLAYER_ONLY ENDIF IF IS_CHAR_DEAD ryder CREATE_CHAR_INSIDE_CAR syn5_ryders_car PEDTYPE_MISSION2 SPECIAL02 ryder SET_CHAR_ACCURACY ryder syn5_accuracy GIVE_WEAPON_TO_CHAR ryder WEAPONTYPE_AK47 30000 SET_CHAR_DECISION_MAKER ryder syn5_empty_ped_decision_maker //SET_CHAR_STAY_IN_SAME_PLACE ryder TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER ryder TRUE SET_CHAR_SUFFERS_CRITICAL_HITS ryder FALSE ADD_ARMOUR_TO_CHAR ryder 100 ENDIF IF IS_CHAR_DEAD syn5_ryder_goons[0] GENERATE_RANDOM_INT_IN_RANGE 3 5 syn5_char_select_flag CREATE_CHAR_AS_PASSENGER syn5_ryders_car PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1 syn5_ryder_goons[0] SET_CHAR_ACCURACY syn5_ryder_goons[0] syn5_accuracy GIVE_WEAPON_TO_CHAR syn5_ryder_goons[0] WEAPONTYPE_TEC9 30000 SET_CHAR_DECISION_MAKER syn5_ryder_goons[0] syn5_ped_decisions //SET_CHAR_STAY_IN_SAME_PLACE syn5_ryder_goons[0] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_ryder_goons[0] TRUE ENDIF /* IF IS_CHAR_DEAD syn5_ryder_goons[1] //guy attached to back of car GENERATE_RANDOM_INT_IN_RANGE 3 5 syn5_char_select_flag CREATE_CHAR_AS_PASSENGER syn5_ryders_car PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] -1 syn5_ryder_goons[1] SET_CHAR_DECISION_MAKER syn5_ryder_goons[1] syn5_empty_ped_decision_maker //SET_CHAR_STAY_IN_SAME_PLACE syn5_ryder_goons[1] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_ryder_goons[1] TRUE ENDIF */ //2nd car IF IS_CAR_DEAD syn5_ryder_goon_cars[0] CREATE_CAR tahoma -1784.2 1379.8 5.7 syn5_ryder_goon_cars[0] SET_CAR_HEADING syn5_ryder_goon_cars[0] 251.8 LOCK_CAR_DOORS syn5_ryder_goon_cars[0] CARLOCK_LOCKOUT_PLAYER_ONLY ENDIF IF IS_CHAR_DEAD syn5_ryder_goons[2] GENERATE_RANDOM_INT_IN_RANGE 3 5 syn5_char_select_flag CREATE_CHAR_INSIDE_CAR syn5_ryder_goon_cars[0] PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] syn5_ryder_goons[2] SET_CHAR_ACCURACY syn5_ryder_goons[2] syn5_accuracy GIVE_WEAPON_TO_CHAR syn5_ryder_goons[2] WEAPONTYPE_TEC9 30000 SET_CHAR_DECISION_MAKER syn5_ryder_goons[2] syn5_ped_decisions //SET_CHAR_STAY_IN_SAME_PLACE syn5_ryder_goons[2] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_ryder_goons[2] TRUE ENDIF IF IS_CHAR_DEAD syn5_ryder_goons[3] GENERATE_RANDOM_INT_IN_RANGE 3 5 syn5_char_select_flag CREATE_CHAR_AS_PASSENGER syn5_ryder_goon_cars[0] PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] 0 syn5_ryder_goons[3] SET_CHAR_ACCURACY syn5_ryder_goons[3] syn5_accuracy GIVE_WEAPON_TO_CHAR syn5_ryder_goons[3] WEAPONTYPE_TEC9 30000 SET_CHAR_DECISION_MAKER syn5_ryder_goons[3] syn5_ped_decisions //SET_CHAR_STAY_IN_SAME_PLACE syn5_ryder_goons[3] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_ryder_goons[3] TRUE ENDIF //3rd car IF IS_CAR_DEAD syn5_ryder_goon_cars[1] CREATE_CAR tahoma -1795.0 1383.6 5.7 syn5_ryder_goon_cars[1] SET_CAR_HEADING syn5_ryder_goon_cars[1] 251.8 LOCK_CAR_DOORS syn5_ryder_goon_cars[1] CARLOCK_LOCKOUT_PLAYER_ONLY ENDIF IF IS_CHAR_DEAD syn5_ryder_goons[4] GENERATE_RANDOM_INT_IN_RANGE 3 5 syn5_char_select_flag CREATE_CHAR_INSIDE_CAR syn5_ryder_goon_cars[1] PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] syn5_ryder_goons[4] SET_CHAR_ACCURACY syn5_ryder_goons[4] syn5_accuracy GIVE_WEAPON_TO_CHAR syn5_ryder_goons[4] WEAPONTYPE_TEC9 30000 SET_CHAR_DECISION_MAKER syn5_ryder_goons[4] syn5_ped_decisions //SET_CHAR_STAY_IN_SAME_PLACE syn5_ryder_goons[4] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_ryder_goons[4] TRUE ENDIF IF IS_CHAR_DEAD syn5_ryder_goons[5] GENERATE_RANDOM_INT_IN_RANGE 3 5 syn5_char_select_flag CREATE_CHAR_AS_PASSENGER syn5_ryder_goon_cars[1] PEDTYPE_MISSION2 syn5_char_select[syn5_char_select_flag] 0 syn5_ryder_goons[5] SET_CHAR_ACCURACY syn5_ryder_goons[5] syn5_accuracy GIVE_WEAPON_TO_CHAR syn5_ryder_goons[5] WEAPONTYPE_TEC9 30000 SET_CHAR_DECISION_MAKER syn5_ryder_goons[5] syn5_ped_decisions //SET_CHAR_STAY_IN_SAME_PLACE syn5_ryder_goons[5] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_ryder_goons[5] TRUE ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// syn5_creating_toreno://///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF IS_CAR_DEAD syn5_toreno_chopper CREATE_CAR maverick -1600.9 1424.6 300.8 syn5_toreno_chopper SET_CAR_HEADING syn5_toreno_chopper 97.2 LOCK_CAR_DOORS syn5_toreno_chopper CARLOCK_LOCKOUT_PLAYER_ONLY SET_HELI_REACHED_TARGET_DISTANCE syn5_toreno_chopper 3 SET_HELI_BLADES_FULL_SPEED syn5_toreno_chopper SET_CAR_FORWARD_SPEED syn5_toreno_chopper 10.0 HELI_GOTO_COORDS syn5_toreno_chopper -1600.9 1424.6 300.0 0.0 300.0 ENDIF IF IS_CHAR_DEAD syn5_toreno CREATE_CHAR_AS_PASSENGER syn5_toreno_chopper PEDTYPE_MISSION2 SPECIAL03 0 syn5_toreno GIVE_WEAPON_TO_CHAR syn5_toreno WEAPONTYPE_TEC9 30000 SET_CHAR_DECISION_MAKER syn5_toreno syn5_empty_ped_decision_maker SET_CHAR_SUFFERS_CRITICAL_HITS syn5_toreno FALSE //SET_CHAR_STAY_IN_SAME_PLACE syn5_toreno TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER syn5_toreno TRUE ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// syn5_controlling_sniping_section_ai://////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //southwest roof IF NOT IS_CHAR_DEAD syn5_tbone_goons[0] IF syn5_sniper_control_flag[0] = 0 OPEN_SEQUENCE_TASK syn5_seq TASK_GO_STRAIGHT_TO_COORD -1 -1705.8 1359.5 16.2 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 -1701.3 1356.7 16.2 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 236.7 TASK_SET_CHAR_DECISION_MAKER -1 syn5_ped_decisions IF NOT IS_CHAR_DEAD wuzi TASK_KILL_CHAR_ON_FOOT -1 wuzi ENDIF CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[0] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq syn5_sniper_control_flag[0] = 1 ENDIF ENDIF //west roof IF NOT IS_CHAR_DEAD syn5_tbone_goons[1] IF syn5_sniper_control_flag[1] = 0 OPEN_SEQUENCE_TASK syn5_seq IF NOT IS_CHAR_DEAD wuzi TASK_GO_STRAIGHT_TO_COORD -1 -1703.3 1361.5 16.2 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 -1699.8 1357.9 16.2 PEDMOVE_RUN -1 //TASK_ACHIEVE_HEADING -1 236.7 TASK_SET_CHAR_DECISION_MAKER -1 syn5_ped_decisions TASK_KILL_CHAR_ON_FOOT -1 wuzi ENDIF CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[1] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq syn5_sniper_control_flag[1] = 1 ENDIF ENDIF //northwest roof IF NOT IS_CHAR_DEAD syn5_tbone_goons[2] IF syn5_sniper_control_flag[2] = 0 OPEN_SEQUENCE_TASK syn5_seq IF NOT IS_CHAR_DEAD wuzi TASK_GO_STRAIGHT_TO_COORD -1 -1689.2 1371.8 14.0 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 202.3 TASK_SET_CHAR_DECISION_MAKER -1 syn5_ped_decisions //TASK_KILL_CHAR_ON_FOOT -1 wuzi TASK_SHOOT_AT_COORD -1 -1687.6 1367.1 15.0 -2 ENDIF CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[2] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq syn5_sniper_control_flag[2] = 1 ENDIF ENDIF //southeast roof IF NOT IS_CHAR_DEAD syn5_tbone_goons[3] IF syn5_sniper_control_flag[3] = 0 OPEN_SEQUENCE_TASK syn5_seq IF NOT IS_CHAR_DEAD wuzi TASK_ACHIEVE_HEADING -1 107.3 TASK_SET_CHAR_DECISION_MAKER -1 syn5_ped_decisions TASK_KILL_CHAR_ON_FOOT -1 wuzi ENDIF CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[3] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq syn5_sniper_control_flag[3] = 1 ENDIF ENDIF //east roof IF NOT IS_CHAR_DEAD syn5_tbone_goons[4] IF syn5_sniper_control_flag[4] = 0 OPEN_SEQUENCE_TASK syn5_seq IF NOT IS_CHAR_DEAD wuzi TASK_GO_STRAIGHT_TO_COORD -1 -1674.2 1345.9 16.2 PEDMOVE_RUN -1 TASK_SET_CHAR_DECISION_MAKER -1 syn5_ped_decisions TASK_KILL_CHAR_ON_FOOT -1 wuzi ENDIF CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[4] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq syn5_sniper_control_flag[4] = 1 ENDIF ENDIF //northeast roof IF NOT IS_CHAR_DEAD syn5_tbone_goons[5] IF syn5_sniper_control_flag[5] = 0 TASK_SET_IGNORE_WEAPON_RANGE_FLAG syn5_tbone_goons[5] TRUE OPEN_SEQUENCE_TASK syn5_seq IF NOT IS_CHAR_DEAD wuzi TASK_GO_STRAIGHT_TO_COORD -1 -1643.6 1368.7 17.8 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 136.5 TASK_JUMP -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 -1661.5 1354.3 15.1 PEDMOVE_RUN -1 TASK_KILL_CHAR_ON_FOOT -1 wuzi ENDIF CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_tbone_goons[5] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq syn5_sniper_control_flag[5] = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD wuzi IF syn5_wuzi_control_flag = 0 OPEN_SEQUENCE_TASK syn5_seq TASK_TOGGLE_DUCK -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 syn5_ped_decisions CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK wuzi syn5_seq CLEAR_SEQUENCE_TASK syn5_seq syn5_wuzi_control_flag = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD syn5_wuzi_goons[0] IF syn5_wuzi_goons_control_flag[0] = 0 OPEN_SEQUENCE_TASK syn5_seq TASK_TOGGLE_DUCK -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 syn5_ped_decisions CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_wuzi_goons[0] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq syn5_wuzi_goons_control_flag[0] = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD syn5_wuzi_goons[1] IF syn5_wuzi_goons_control_flag[1] = 0 OPEN_SEQUENCE_TASK syn5_seq TASK_TOGGLE_DUCK -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 syn5_ped_decisions CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_wuzi_goons[1] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq syn5_wuzi_goons_control_flag[1] = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD syn5_wuzi_goons[2] IF syn5_wuzi_goons_control_flag[2] = 0 OPEN_SEQUENCE_TASK syn5_seq TASK_TOGGLE_DUCK -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 syn5_ped_decisions CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK syn5_wuzi_goons[2] syn5_seq CLEAR_SEQUENCE_TASK syn5_seq syn5_wuzi_goons_control_flag[2] = 1 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// syn5_telling_tbone_where_to_go:///////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF NOT IS_CHAR_DEAD ryder IF NOT IS_CAR_DEAD syn5_boat[0] IF IS_CHAR_IN_CAR ryder syn5_boat[0] IF syn5_controlling_tbone = 0 SET_CHAR_DROWNS_IN_WATER ryder TRUE OPEN_SEQUENCE_TASK syn5_seq TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] -1500.0868 1396.9392 -0.7305 15.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] -1347.7032 1319.2152 0.0282 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] -1250.0698 1178.1776 -0.1243 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] -1158.0005 1033.0165 -0.1089 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] -1054.1752 920.3442 0.0405 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] -1005.5988 787.5093 0.2581 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] -883.1418 608.1723 -0.1191 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] -735.4338 521.1882 -0.1478 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK ryder syn5_seq CLEAR_SEQUENCE_TASK syn5_seq syn5_controlling_tbone = 1 RETURN ENDIF IF syn5_controlling_tbone = 1 GET_SCRIPT_TASK_STATUS ryder PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK OPEN_SEQUENCE_TASK syn5_seq TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] -572.1049 467.9407 0.3352 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] -404.1097 430.3622 0.3394 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] -233.5327 424.5564 0.2022 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] -63.8903 409.6541 0.0351 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] 106.3031 423.1877 -0.0997 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] 274.6070 452.5373 0.0679 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] 442.7346 482.1971 0.2390 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] 611.5419 513.3603 0.1773 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK ryder syn5_seq CLEAR_SEQUENCE_TASK syn5_seq syn5_controlling_tbone = 2 RETURN ENDIF ENDIF IF syn5_controlling_tbone = 2 GET_SCRIPT_TASK_STATUS ryder PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK OPEN_SEQUENCE_TASK syn5_seq TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] 779.7440 547.2416 0.1644 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] 945.0496 589.4660 0.0676 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] 1113.1173 620.2682 -0.0797 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] 1282.4956 600.0090 -0.1302 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] 1451.7389 568.6847 -0.1388 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] 1620.5931 536.4412 -0.0845 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] 1789.8967 510.0630 -0.3449 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] 1959.2064 491.1599 -0.0624 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK ryder syn5_seq CLEAR_SEQUENCE_TASK syn5_seq syn5_controlling_tbone = 3 RETURN ENDIF ENDIF IF syn5_controlling_tbone = 3 GET_SCRIPT_TASK_STATUS ryder PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK OPEN_SEQUENCE_TASK syn5_seq TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] 2130.1274 479.1175 0.1320 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] 2301.9817 467.9901 -0.1513 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] 2471.6638 456.2590 -0.0586 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] 2641.9817 442.9174 0.4767 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] 2812.7485 425.1894 0.0436 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 syn5_boat[0] 2982.4722 401.9557 -0.7104 100.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_TEMP_ACTION -1 syn5_boat[0] TEMPACT_GOFORWARD 860000 CLOSE_SEQUENCE_TASK syn5_seq PERFORM_SEQUENCE_TASK ryder syn5_seq CLEAR_SEQUENCE_TASK syn5_seq syn5_controlling_tbone = 4 ENDIF ENDIF // speed_up_slow_down IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer syn5_boat[0] 50.0 50.0 FALSE SET_BOAT_CRUISE_SPEED syn5_boat[0] 40.0 ELSE IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer syn5_boat[0] 100.0 100.0 FALSE SET_BOAT_CRUISE_SPEED syn5_boat[0] 30.0 ELSE IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer syn5_boat[0] 180.0 180.0 FALSE SET_BOAT_CRUISE_SPEED syn5_boat[0] 20.0 ELSE SET_BOAT_CRUISE_SPEED syn5_boat[0] 10.0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// syn5_cesar_group://////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF syn5_flag_cesar_in_group = 1 IF NOT IS_GROUP_MEMBER cesar Players_Group REMOVE_BLIP syn5_blip ADD_BLIP_FOR_CHAR cesar syn5_blip SET_BLIP_AS_FRIENDLY syn5_blip TRUE syn5_flag_cesar_in_group = 0 ENDIF ENDIF IF syn5_flag_cesar_in_group = 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer cesar 8.0 8.0 8.0 FALSE IF NOT IS_GROUP_MEMBER cesar Players_Group MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_Group cesar ENDIF REMOVE_BLIP syn5_blip IF NOT IS_CHAR_DEAD syn5_tbone ADD_BLIP_FOR_CHAR syn5_tbone syn5_blip ENDIF syn5_flag_cesar_in_group = 1 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// syn5_my_number_plates://///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// GENERATE_RANDOM_INT_IN_RANGE 1 37 syn5_no_plates_flag IF syn5_no_plates_flag = 1 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates got_m00_ ENDIF IF syn5_no_plates_flag = 2 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates m00tv_4u ENDIF IF syn5_no_plates_flag = 3 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates mathew_2 ENDIF IF syn5_no_plates_flag = 4 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates d4_dew0r ENDIF IF syn5_no_plates_flag = 5 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates d0de_777 ENDIF IF syn5_no_plates_flag = 6 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates dam0_666 ENDIF IF syn5_no_plates_flag = 7 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates C0NEY_88 ENDIF IF syn5_no_plates_flag = 8 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates pre4cher ENDIF IF syn5_no_plates_flag = 9 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates dbp_4ndy ENDIF IF syn5_no_plates_flag = 10 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates ev1l_sly ENDIF IF syn5_no_plates_flag = 11 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates n1_r4v3n ENDIF IF syn5_no_plates_flag = 12 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates d1vx_z00 ENDIF IF syn5_no_plates_flag = 13 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates mr_b3nn ENDIF IF syn5_no_plates_flag = 14 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates r3d_r4sp ENDIF IF syn5_no_plates_flag = 15 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates La_B0mba ENDIF IF syn5_no_plates_flag = 16 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates L3337_0g ENDIF IF syn5_no_plates_flag = 17 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates budd4h_X ENDIF IF syn5_no_plates_flag = 18 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates t3h_buck ENDIF IF syn5_no_plates_flag = 19 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates CHUNKY_1 ENDIF IF syn5_no_plates_flag = 20 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates ev1l_bnz ENDIF IF syn5_no_plates_flag = 21 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates S4ND_M4N ENDIF IF syn5_no_plates_flag = 22 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates RKK_DBP1 ENDIF IF syn5_no_plates_flag = 23 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates RE1_K0KU ENDIF IF syn5_no_plates_flag = 24 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates s3xy_jud ENDIF IF syn5_no_plates_flag = 25 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates sunra_93 ENDIF IF syn5_no_plates_flag = 26 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates UG_FuX69 ENDIF IF syn5_no_plates_flag = 27 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates Li0n_Cum ENDIF IF syn5_no_plates_flag = 28 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates rkk_pwnd ENDIF IF syn5_no_plates_flag = 29 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates haze_b0b ENDIF IF syn5_no_plates_flag = 30 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates t3h_fluf ENDIF IF syn5_no_plates_flag = 31 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates BM_4NDY_ ENDIF IF syn5_no_plates_flag = 32 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates BM_D34N_ ENDIF IF syn5_no_plates_flag = 33 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates BM_L4C3Y ENDIF IF syn5_no_plates_flag = 34 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates BM_D3V__ ENDIF IF syn5_no_plates_flag = 35 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates NU_SK00L ENDIF IF syn5_no_plates_flag = 36 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates G4L_AVET ENDIF IF syn5_no_plates_flag = 37 CUSTOM_PLATE_FOR_NEXT_CAR syn5_no_plates M0j0_j0j ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /* //////////////////////////////////////////////////////////////////////////// syn5_teargas_effect://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //20 metres out IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1652.5 1396.0 6.2 30.0 30.0 20.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1653.1 1400.0 7.0 20.0 20.0 20.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1657.8 1405.0 7.0 20.0 20.0 20.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1643.3 1390.7 7.0 20.0 20.0 20.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1671.1 1421.7 7.0 20.0 20.0 20.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1631.1 1371.6 7.0 20.0 20.0 20.0 FALSE SET_PLAYER_DRUNKENNESS player1 50 ENDIF //15 metres out IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1652.5 1396.0 6.2 15.0 15.0 15.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1653.1 1400.0 7.0 15.0 15.0 15.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1657.8 1405.0 7.0 15.0 15.0 15.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1643.3 1390.7 7.0 15.0 15.0 15.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1671.1 1421.7 7.0 15.0 15.0 15.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1631.1 1371.6 7.0 15.0 15.0 15.0 FALSE SET_PLAYER_DRUNKENNESS player1 100 ENDIF //10 metres out in the smoke IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1652.5 1396.0 6.2 10.0 10.0 10.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1653.1 1400.0 7.0 10.0 10.0 10.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1657.8 1405.0 7.0 10.0 10.0 10.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1643.3 1390.7 7.0 10.0 10.0 10.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1671.1 1421.7 7.0 10.0 10.0 10.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1631.1 1371.6 7.0 10.0 10.0 10.0 FALSE SET_PLAYER_DRUNKENNESS player1 150 ENDIF //right in the smoke IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1652.5 1396.0 6.2 5.0 5.0 5.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1653.1 1400.0 7.0 5.0 5.0 5.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1657.8 1405.0 7.0 5.0 5.0 5.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1643.3 1390.7 7.0 5.0 5.0 5.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1671.1 1421.7 7.0 5.0 5.0 5.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer -1631.1 1371.6 7.0 5.0 5.0 5.0 FALSE SET_PLAYER_DRUNKENNESS player1 255 ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// */ //////////////////////////////////////////////////////////////////////////// syn5_dialogue_setup:////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF syn5_speech_goals = 1 $syn5_print_label[0] = &SYN5_AA // Hey, holmes, I'm up here. Go around back! syn5_audio_label[0] = SOUND_SYN5_AA syn5_last_label = 1 ENDIF IF syn5_speech_goals = 2 $syn5_print_label[0] = &SYN5_BA // Hey man. $syn5_print_label[1] = &SYN5_BB // Nice job getting that phone message, man. $syn5_print_label[2] = &SYN5_BC // Jizzy? $syn5_print_label[3] = &SYN5_BD // Dead. So, what's the plan, man? $syn5_print_label[4] = &SYN5_BE // T-Bone's security got here real early. $syn5_print_label[5] = &SYN5_BF // They've got men on the roofs watching over the pier. $syn5_print_label[6] = &MOBRING // Phone ringing $syn5_print_label[7] = &SYN5_BG // Yo. $syn5_print_label[8] = &SYN5_BH // Ok, yeah, I see you. $syn5_print_label[9] = &SYN5_BJ // That was Woozie's boys, they're in place. $syn5_print_label[10] = &SYN5_BK // Look, down by the side entrance. $syn5_print_label[11] = &SYN5_BL // Shit, they're heading up to the roof! $syn5_print_label[12] = &SYN5_BM // Dammit! We'll have to take out T-Bone's men on the rooftops $syn5_print_label[13] = &SYN5_BN // before this whole gig blows wide open! syn5_audio_label[0] = SOUND_SYN5_BA syn5_audio_label[1] = SOUND_SYN5_BB syn5_audio_label[2] = SOUND_SYN5_BC syn5_audio_label[3] = SOUND_SYN5_BD syn5_audio_label[4] = SOUND_SYN5_BE syn5_audio_label[5] = SOUND_SYN5_BF syn5_audio_label[6] = SOUND_PED_MOBRING syn5_audio_label[7] = SOUND_SYN5_BG syn5_audio_label[8] = SOUND_SYN5_BH syn5_audio_label[9] = SOUND_SYN5_BJ syn5_audio_label[10] = SOUND_SYN5_BK syn5_audio_label[11] = SOUND_SYN5_BL syn5_audio_label[12] = SOUND_SYN5_BM syn5_audio_label[13] = SOUND_SYN5_BN syn5_last_label = syn5_random_last_label ENDIF IF syn5_speech_goals = 3 //$syn5_print_label[0] = &SYN5_CA // Take the shot, CJ, they'll be up there any moment! $syn5_print_label[1] = &SYN5_CB // Shit they've walked right into it! $syn5_print_label[2] = &SYN5_CC // Take 'em out, CJ, they're in the thick of it! $syn5_print_label[3] = &SYN5_CD // One of those Triad boys is down! $syn5_print_label[4] = &SYN5_CE // Scratch one more Mountain Cloud Boy! $syn5_print_label[5] = &SYN5_CF // They're getting cut to pieces, CJ, shoot those damn Rifas! //syn5_audio_label[0] = SOUND_SYN5_CA syn5_audio_label[1] = SOUND_SYN5_CB syn5_audio_label[2] = SOUND_SYN5_CC syn5_audio_label[3] = SOUND_SYN5_CD syn5_audio_label[4] = SOUND_SYN5_CE syn5_audio_label[5] = SOUND_SYN5_CF syn5_last_label = syn5_random_last_label ENDIF IF syn5_speech_goals = 4 $syn5_print_label[0] = &SYN5_DA // One down... $syn5_print_label[1] = &SYN5_DB // That's it, CJ, keep icing those Rifa! $syn5_print_label[2] = &SYN5_DC // Just a few more, holmes... $syn5_print_label[3] = &SYN5_DD // Some more to the right.. $syn5_print_label[4] = &SYN5_DE // Still some on the left, CJ... syn5_audio_label[0] = SOUND_SYN5_DA syn5_audio_label[1] = SOUND_SYN5_DB syn5_audio_label[2] = SOUND_SYN5_DC syn5_audio_label[3] = SOUND_SYN5_DD syn5_audio_label[4] = SOUND_SYN5_DE syn5_last_label = syn5_random_last_label ENDIF IF syn5_speech_goals = 5 $syn5_print_label[0] = &SYN5_EA // Oh, man, you let them get wiped out! $syn5_print_label[1] = &SYN5_EB // CJ, what happened? You let them get cut to pieces! $syn5_print_label[2] = &SYN5_EC // We can't do this without Woozie's boys, man... $syn5_print_label[3] = &SYN5_ED // You can break the news to Woozie, holmes. syn5_audio_label[0] = SOUND_SYN5_EA syn5_audio_label[1] = SOUND_SYN5_EB syn5_audio_label[2] = SOUND_SYN5_EC syn5_audio_label[3] = SOUND_SYN5_ED syn5_last_label = syn5_random_last_label ENDIF /* IF syn5_speech_goals = 6 $syn5_print_label[0] = &SYN5_FA // Nice one, CJ! $syn5_print_label[1] = &SYN5_FB // Let's head on over and see what we can see. syn5_audio_label[0] = SOUND_SYN5_FA syn5_audio_label[1] = SOUND_SYN5_FB syn5_last_label = 2 ENDIF */ IF syn5_speech_goals = 7 $syn5_print_label[0] = &SYN5_GZ // Man, my shooting was fresh! //$syn5_print_label[1] = &SYN5_GB // We should be able to see everything from up here. $syn5_print_label[2] = &SYN5_GC // Here comes T-Bone.... $syn5_print_label[3] = &SYN5_GD // And here's that snake Ryder. $syn5_print_label[4] = &SYN5_GE // Look at that fool, hanging out with Ballas like they was life long pals. //$syn5_print_label[5] = &SYN5_GF // CJ, you head down when you're ready, //$syn5_print_label[6] = &SYN5_GG // we'll give you cover from up here. $syn5_print_label[7] = &SYN5_GH // Something ain't right. Where's Toreno? $syn5_print_label[8] = &SYN5_GJ // Chopper inbound! $syn5_print_label[9] = &SYN5_GK // That's got to be Toreno. $syn5_print_label[10] = &SYN5_GL // Oh shit, he'll see the bodies on the rooftops! $syn5_print_label[11] = &SYN5_GM // Too late, man, he's bugging out! $syn5_print_label[12] = &SYN5_GX // Smoke grenades! //$syn5_print_label[13] = &GRO2_AD // Lets get those motherfuckers! $syn5_print_label[13] = &SYN5_GW // So much for surprise, c'mon, we gotta take those fools right now! syn5_audio_label[0] = SOUND_SYN5_GZ //syn5_audio_label[1] = SOUND_SYN5_GB syn5_audio_label[2] = SOUND_SYN5_GC syn5_audio_label[3] = SOUND_SYN5_GD syn5_audio_label[4] = SOUND_SYN5_GE //syn5_audio_label[5] = SOUND_SYN5_GF //syn5_audio_label[6] = SOUND_SYN5_GG syn5_audio_label[7] = SOUND_SYN5_GH syn5_audio_label[8] = SOUND_SYN5_GJ syn5_audio_label[9] = SOUND_SYN5_GK syn5_audio_label[10] = SOUND_SYN5_GL syn5_audio_label[11] = SOUND_SYN5_GM syn5_audio_label[12] = SOUND_SYN5_GX //syn5_audio_label[13] = SOUND_GRO2_AD syn5_audio_label[13] = SOUND_SYN5_GW syn5_last_label = syn5_random_last_label ENDIF IF syn5_speech_goals = 8 $syn5_print_label[0] = &SYN5_HH // Mendez, I see you, Rifa motherfucker! $syn5_print_label[1] = &SYN5_HA // Ryder, you sherm-head assshole, $syn5_print_label[2] = &SYN5_HB // where do you think you're going? $syn5_print_label[3] = &SYN5_HC // Can't... can't stop me... $syn5_print_label[4] = &SYN5_HK // He's headed for those boats and I can't swim. $syn5_print_label[5] = &SYN5_HL // Don't worry, he's mine! //$syn5_print_label[8] = &SYN5_HJ // I'll be back for you, Johnson! //$syn5_print_label[9] = &SYN5_HD // What you wanna do with him, holmes? //$syn5_print_label[10] = &SYN5_HG // Aaiieeeghhg! syn5_audio_label[0] = SOUND_SYN5_HH syn5_audio_label[1] = SOUND_SYN5_HA syn5_audio_label[2] = SOUND_SYN5_HB syn5_audio_label[3] = SOUND_SYN5_HC syn5_audio_label[4] = SOUND_SYN5_HK syn5_audio_label[5] = SOUND_SYN5_HL //syn5_audio_label[8] = SOUND_SYN5_HJ //syn5_audio_label[9] = SOUND_SYN5_HD //syn5_audio_label[10] = SOUND_SYN5_HG syn5_last_label = syn5_random_last_label ENDIF IF syn5_speech_goals = 9 $syn5_print_label[0] = &SYN5_JA // Hey, that's my boat! $syn5_print_label[1] = &SYN5_JB // Oh my god, my boat! $syn5_print_label[2] = &SYN5_JC // Stop, you thieving bastard! syn5_audio_label[0] = SOUND_SYN5_JA syn5_audio_label[1] = SOUND_SYN5_JB syn5_audio_label[2] = SOUND_SYN5_JC syn5_last_label = syn5_random_last_label ENDIF IF syn5_speech_goals = 10 $syn5_print_label[0] = &MOBRING // Phone ringing $syn5_print_label[1] = &SYN5_KA // yo $syn5_print_label[2] = &SYN5_KB // You ok, holmes, we been watching from the pier with binoculars! $syn5_print_label[3] = &SYN5_KC // Yeah, I'm good, I think. $syn5_print_label[4] = &SYN5_KD // Listen you guys better clear out, cops will be all over the place. $syn5_print_label[5] = &SYN5_KE // Sure thing, see you back at the garage! syn5_audio_label[0] = SOUND_PED_MOBRING syn5_audio_label[1] = SOUND_SYN5_KA syn5_audio_label[2] = SOUND_SYN5_KB syn5_audio_label[3] = SOUND_SYN5_KC syn5_audio_label[4] = SOUND_SYN5_KD syn5_audio_label[5] = SOUND_SYN5_KE syn5_last_label = 6 ENDIF IF syn5_speech_goals = 11 $syn5_print_label[0] = &SYN5_HE // You sold us out, Ryder, you fucked us all! $syn5_print_label[1] = &SYN5_HF // I'm a... I'm a motherfucking genius! syn5_audio_label[0] = SOUND_SYN5_HE syn5_audio_label[1] = SOUND_SYN5_HF syn5_last_label = 2 ENDIF IF syn5_speech_goals = 14 $syn5_print_label[0] = &CESX_BA // Wait up, CJ! $syn5_print_label[1] = &CESX_BB // Hang ten, CJ! $syn5_print_label[2] = &CESX_BC // Hold up! $syn5_print_label[3] = &CESX_BD // Slow down, Carl! syn5_audio_label[0] = SOUND_CESX_BA syn5_audio_label[1] = SOUND_CESX_BB syn5_audio_label[2] = SOUND_CESX_BC syn5_audio_label[3] = SOUND_CESX_BD syn5_last_label = syn5_random_last_label ENDIF syn5_slot_load = syn5_speech_control_flag syn5_slot1 = 0 syn5_slot2 = 0 syn5_play_which_slot = 1 //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// syn5_overall_dialogue:////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF syn5_speech_goals = 1 //cutscene dialogue where cesar is telling player he is up above him. OR syn5_speech_goals = 2 //cutscene dialogue where cesar is telling player about tbone's security. OR syn5_speech_goals = 5 //cutscene dialogue of triad leader dying OR syn5_speech_goals = 7 //cutscene dialogue showing the baddies arriving at the meet OR syn5_speech_goals = 8 //cutscene dialogue where ryder gets shot OR syn5_speech_goals = 10 //cutscene dialogue at end of cesar telling player good job IF syn5_speech_control_flag < syn5_last_label GOSUB syn5_loading_dialogue GOSUB syn5_playing_dialogue GOSUB syn5_finishing_dialogue ELSE syn5_speech_goals = 0 ENDIF ENDIF IF syn5_speech_goals = 3 //dialogue where cesar is telling player that wuzi's guys are getting killed OR syn5_speech_goals = 4 //dialogue where cesar is giving player sniping advice IF syn5_speech_control_flag < syn5_last_label GOSUB syn5_loading_dialogue GOSUB syn5_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB syn5_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $syn5_print_label[syn5_speech_control_flag] syn5_slot1 = 0 syn5_slot2 = 0 ENDIF ELSE syn5_speech_goals = 0 ENDIF ENDIF IF syn5_speech_goals = 9 //party dude shouting about his boat IF syn5_speech_control_flag < syn5_last_label GOSUB syn5_loading_dialogue GOSUB syn5_playing_dialogue IF NOT IS_CHAR_DEAD syn5_party_dudes[0] GOSUB syn5_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $syn5_print_label[syn5_speech_control_flag] syn5_slot1 = 0 syn5_slot2 = 0 ENDIF ELSE syn5_speech_goals = 0 ENDIF ENDIF IF syn5_speech_goals = 11 //ryder IF syn5_speech_control_flag < syn5_last_label GOSUB syn5_loading_dialogue GOSUB syn5_playing_dialogue IF NOT IS_CHAR_DEAD ryder GOSUB syn5_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $syn5_print_label[syn5_speech_control_flag] syn5_slot1 = 0 syn5_slot2 = 0 ENDIF ELSE syn5_speech_goals = 0 ENDIF ENDIF IF syn5_goals = 5 IF syn5_control_flag = 0 IF IS_GROUP_MEMBER cesar Players_Group //no actual dialogue during this bit ELSE IF syn5_speech_goals < 14 IF syn5_speech_control_flag < syn5_last_label syn5_speech_control_flag ++ ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $syn5_print_label[syn5_speech_control_flag] CLEAR_PRINTS syn5_storing_speech_goals_number = syn5_speech_goals syn5_storing_speech_control_number = syn5_speech_control_flag syn5_speech_goals = 14 GENERATE_RANDOM_INT_IN_RANGE 0 4 syn5_speech_control_flag syn5_random_last_label = syn5_speech_control_flag + 1 GOSUB syn5_dialogue_setup ENDIF ENDIF IF syn5_speech_goals = 14 //cesar is out of the group IF NOT IS_GROUP_MEMBER cesar Players_Group IF syn5_speech_control_flag < syn5_last_label GOSUB syn5_loading_dialogue GOSUB syn5_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB syn5_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $syn5_print_label[syn5_speech_control_flag] syn5_slot1 = 0 syn5_slot2 = 0 ENDIF ELSE PRINT ( SYN5_10 ) 7000 1 //You have left Cesar behind. syn5_speech_goals = 15 ENDIF ELSE PRINT ( SYN5_10 ) 7000 1 //You have left Cesar behind. syn5_speech_goals = 15 ENDIF ENDIF IF syn5_speech_goals = 15 //cesar has been out of the group and has returned IF IS_GROUP_MEMBER cesar Players_Group syn5_speech_goals = 16 syn5_speech_control_flag = 0 CLEAR_PRINTS //GOSUB syn5_dialogue_setup ENDIF ENDIF IF syn5_speech_goals = 16 //cesar is back in group IF IS_GROUP_MEMBER cesar Players_Group timerb = 0 syn5_speech_goals = syn5_storing_speech_goals_number syn5_speech_control_flag = syn5_storing_speech_control_number GOSUB syn5_dialogue_setup IF syn5_storing_speech_goals_number = 0 PRINT_NOW ( SYN5_06 ) 4000 1 //Find and kill Ryder! timerb = 0 ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $syn5_print_label[syn5_speech_control_flag] syn5_speech_goals = 14 GENERATE_RANDOM_INT_IN_RANGE 0 4 syn5_speech_control_flag syn5_random_last_label = syn5_speech_control_flag + 1 GOSUB syn5_dialogue_setup ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// syn5_loading_dialogue://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF syn5_slot_load < syn5_last_label //slot 1 IF syn5_slot1 = 0 LOAD_MISSION_AUDIO 1 syn5_audio_label[syn5_slot_load] syn5_slot_load ++ syn5_slot1 = 1 ENDIF //slot 2 IF syn5_slot2 = 0 LOAD_MISSION_AUDIO 2 syn5_audio_label[syn5_slot_load] syn5_slot_load ++ syn5_slot2 = 1 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// syn5_playing_dialogue://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //slot 1 IF syn5_play_which_slot = 1 IF syn5_slot1 = 1 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $syn5_print_label[syn5_speech_control_flag] ) 4500 1 // syn5_slot1 = 2 ENDIF ENDIF ENDIF //slot 2 IF syn5_play_which_slot = 2 IF syn5_slot2 = 1 IF HAS_MISSION_AUDIO_LOADED 2 PLAY_MISSION_AUDIO 2 PRINT_NOW ( $syn5_print_label[syn5_speech_control_flag] ) 4500 1 // syn5_slot2 = 2 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// syn5_finishing_dialogue:////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //slot 1 IF syn5_slot1 = 2 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_THIS_PRINT $syn5_print_label[syn5_speech_control_flag] syn5_speech_control_flag ++ syn5_play_which_slot = 2 syn5_slot1 = 0 ENDIF ENDIF //slot 2 IF syn5_slot2 = 2 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT $syn5_print_label[syn5_speech_control_flag] syn5_speech_control_flag ++ syn5_play_which_slot = 1 syn5_slot2 = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************** DRIVER 2 ***************************************** // ********************************* Mission Description *********************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME driv2 // Mission start stuff GOSUB mission_start_driv2 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_driv2_failed ENDIF GOSUB mission_cleanup_driv2 MISSION_END { // Variables for mission LVAR_INT d2_ambushed_van d2_player_bike d2_last_player_car_before_meet LVAR_INT d2_num_of_packages d2_packages[4] //d2_num_packages_collected // global (temp) LVAR_FLOAT d2_package_x[4] d2_package_y[4] d2_package_z[4] LVAR_INT d2_gang_bikers[4] LVAR_INT d2_gang_bikes[4] LVAR_FLOAT d2_bike_speed[4] LVAR_INT d2_bike_health[4] d2_last_bike_health[4] d2_damage_done LVAR_FLOAT d2_city_centre_x d2_city_centre_y d2_city_centre_z LVAR_FLOAT d2_bike_first_pt_x[4] d2_bike_first_pt_y[4] d2_bike_first_pt_z[4] LVAR_FLOAT d2_bike_dest_x d2_bike_dest_y d2_bike_dest_z LVAR_FLOAT d2_player_dest_x d2_player_dest_y d2_player_dest_z LVAR_FLOAT d2_player_x d2_player_y d2_player_z d2_dist_from_player_to_bike LVAR_FLOAT d2_bike_x d2_bike_y d2_bike_z LVAR_FLOAT d2_player_heading LVAR_FLOAT d2_player_offset_x1 d2_player_offset_y1 d2_player_offset_x2 d2_player_offset_y2 d2_dummy_z LVAR_INT d2_task_status d2_event_type LVAR_INT d2_biker_task_status[4] d2_biker_relationship_set[4] LVAR_INT d2_index d2_package_at_dest_index LVAR_INT d2_current_area_visible // flags LVAR_INT d2_gang_created LVAR_INT d2_package_collected[4] //LVAR_INT d2_player_bike_blip_removed LVAR_INT /*d2_player_picked_up_bike*/ d2_player_reached_deal_location LVAR_INT d2_player_sniped_at_biker d2_projectile_reached_area LVAR_INT d2_cur_bike_state[4] d2_not_started_chase d2_wandering_randomly d2_going_to_city_centre d2_going_to_first_point d2_going_to_destination LVAR_INT d2_getting_back_on_bike[4] d2_biker_picking_up_dropped_package[4] LVAR_INT d2_biker_attacking_player[4] d2_biker_shooting_at_player[4] LVAR_INT d2_bikes_going_to_destination d2_any_package_at_destination LVAR_INT d2_any_packages_in_water d2_any_packages_been_destroyed LVAR_INT d2_package_attach_state[4] d2_not_attached d2_attached_to_bike d2_attached_to_char LVAR_INT d2_all_packages_collected LVAR_INT d2_leftshoulder1_pressed_last_frame d2_in_range_last_printed LVAR_INT d2_cutscene_skipped d2_player_given_mission_brief LVAR_INT d2_first_help_text_cleared d2_second_help_text_cleared d2_player_got_within_10m_of_snatchable_package LVAR_INT d2_player_entered_any_car LVAR_INT d2_package_immovable[4] LVAR_INT d2_fake_creates // blips LVAR_INT d2_package_blips[4] /*d2_player_bike_blip*/ d2_ambushed_van_blip d2_player_dest_blip // **************************************** Mission Start ********************************** mission_start_driv2: REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT FARLIE2 flag_player_on_mission = 1 WAIT 0 // ************************************* Initialise variables ***************************** d2_num_of_packages = 4 d2_num_packages_collected = 0 d2_index = 0 WHILE d2_index < d2_num_of_packages d2_package_collected[d2_index] = 0 d2_package_immovable[d2_index] = 0 d2_cur_bike_state[d2_index] = 0 d2_getting_back_on_bike[d2_index] = 0 d2_biker_picking_up_dropped_package[d2_index] = 0 d2_biker_attacking_player[d2_index] = 0 d2_biker_shooting_at_player[d2_index] = 0 d2_bike_health[d2_index] = 1000 d2_last_bike_health[d2_index] = 1000 d2_package_attach_state[d2_index] = 0 d2_bike_speed[d2_index] = 20.0 d2_biker_relationship_set[d2_index] = 0 d2_index++ ENDWHILE d2_bike_dest_x = -2730.14 d2_bike_dest_y = 84.24 d2_bike_dest_z = 3.04 d2_bike_first_pt_x[0] = -2600.53 d2_bike_first_pt_y[0] = 1337.91 d2_bike_first_pt_z[0] = 5.60 d2_bike_first_pt_x[1] = -2855.52 d2_bike_first_pt_y[1] = 719.95 d2_bike_first_pt_z[1] = 26.84 d2_bike_first_pt_x[2] = -1897.94 d2_bike_first_pt_y[2] = -576.43 d2_bike_first_pt_z[2] = 22.99 d2_bike_first_pt_x[3] = -2811.49 d2_bike_first_pt_y[3] = -326.14 d2_bike_first_pt_z[3] = 5.72 //d2_player_dest_x = -2622.34 //d2_player_dest_y = 1404.97 //d2_player_dest_z = 6.15 d2_player_dest_x = -2622.49 d2_player_dest_y = 1406.6 d2_player_dest_z = 6.15 d2_gang_created = 0 //d2_player_bike_blip_removed = 0 //d2_player_picked_up_bike = 0 d2_player_reached_deal_location = 0 d2_player_sniped_at_biker = 0 d2_projectile_reached_area = 0 // enum bike states d2_not_started_chase = 0 d2_wandering_randomly = 1 d2_going_to_city_centre = 2 d2_going_to_first_point = 3 d2_going_to_destination = 4 // enum package states d2_not_attached = 0 d2_attached_to_bike = 1 d2_attached_to_char = 2 d2_bikes_going_to_destination = 0 d2_any_package_at_destination = 0 d2_any_packages_in_water = 0 d2_any_packages_been_destroyed = 0 d2_all_packages_collected = 0 d2_city_centre_x = -2143.27 d2_city_centre_y = 918.38 d2_city_centre_z = 79.42 d2_leftshoulder1_pressed_last_frame = 0 d2_in_range_last_printed = 0 d2_first_help_text_cleared = 0 d2_second_help_text_cleared = 0 d2_player_got_within_10m_of_snatchable_package = 0 d2_player_entered_any_car = 0 d2_fake_creates = 0 // ***************************************START OF CUTSCENE******************************** SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 3 LOAD_CUTSCENE FARL_2a WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF SET_AREA_VISIBLE 0 // ****************************************END OF CUTSCENE********************************* REQUEST_MODEL FCR900 REQUEST_MODEL BOXVILLE REQUEST_MODEL kmb_packet REQUEST_MODEL WMYCR REQUEST_MODEL HMYCR REQUEST_MODEL MICRO_UZI WHILE NOT HAS_MODEL_LOADED FCR900 OR NOT HAS_MODEL_LOADED BOXVILLE OR NOT HAS_MODEL_LOADED kmb_packet OR NOT HAS_MODEL_LOADED WMYCR OR NOT HAS_MODEL_LOADED HMYCR OR NOT HAS_MODEL_LOADED MICRO_UZI WAIT 0 ENDWHILE REQUEST_ANIMATION BIKES REQUEST_ANIMATION MISC WHILE NOT HAS_ANIMATION_LOADED BIKES OR NOT HAS_ANIMATION_LOADED MISC WAIT 0 ENDWHILE // create bike for player //CREATE_CAR FCR900 -2619.81 1405.47 5.68 d2_player_bike //SET_CAR_HEADING d2_player_bike 205.07 //ADD_BLIP_FOR_CAR d2_player_bike d2_player_bike_blip //SET_BLIP_AS_FRIENDLY d2_player_bike_blip TRUE LOAD_SCENE -2625.26 1407.32 5.62 SET_CHAR_COORDINATES scplayer -2625.26 1407.32 5.62 SET_CHAR_HEADING scplayer 224.0 CHANGE_GARAGE_TYPE Tbon GARAGE_FOR_SCRIPT_TO_OPEN_AND_CLOSE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON // fades the screen in SET_FADING_COLOUR 0 0 0 WAIT 500 DO_FADE 1500 FADE_IN // CREATE statements to keep the compiler happy IF d2_fake_creates = 1 CREATE_CAR BOXVILLE 0.0 0.0 -100.0 d2_ambushed_van ADD_BLIP_FOR_CAR d2_ambushed_van d2_ambushed_van_blip d2_index = 0 WHILE d2_index < d2_num_of_packages CREATE_OBJECT kmb_packet 0.0 0.0 -100.0 d2_packages[d2_index] ADD_BLIP_FOR_OBJECT d2_packages[d2_index] d2_package_blips[d2_index] CREATE_CHAR PEDTYPE_MISSION1 WMYCR 0.0 0.0 -100.0 d2_gang_bikers[d2_index] CREATE_CAR FCR900 0.0 0.0 -100.0 d2_gang_bikes[d2_index] d2_index++ ENDWHILE //CREATE_CAR FCR900 0.0 0.0 -100.0 d2_player_bike //ADD_BLIP_FOR_CAR d2_player_bike d2_player_bike_blip ENDIF //// stop bikes getting stuck on winding road //SWITCH_ROADS_OFF -2130.87 903.39 45.48 -2013.14 959.18 80.03 // stop traffic jams at location of ambush //SWITCH_ROADS_OFF -1859.24 349.43 13.18 -1792.44 418.63 21.34 SWITCH_ROADS_OFF -2014.82 181.4 -13.0 -1614.82 581.4 47.0 ADD_BLIP_FOR_COORD -1814.82 381.40 17.09 d2_ambushed_van_blip SET_COORD_BLIP_APPEARANCE d2_ambushed_van_blip COORD_BLIP_APPEARANCE_FRIEND PRINT_NOW ( DRV3_11 ) 10000 0 // Mission loop driv2_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_driv2_passed ENDIF //IF d2_player_picked_up_bike = 1 IF NOT d2_player_reached_deal_location = 1 // get handle for last car player is in before reaching meet IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer d2_last_player_car_before_meet IF NOT d2_player_entered_any_car = 1 d2_player_entered_any_car = 1 ENDIF ENDIF IF NOT d2_gang_created = 1 AND LOCATE_CHAR_ANY_MEANS_2D scplayer -1814.82 381.40 200.0 200.0 FALSE REMOVE_BLIP d2_ambushed_van_blip GOSUB d2_create_ambushed_van_and_gang d2_gang_created = 1 ENDIF IF d2_gang_created = 1 GET_AREA_VISIBLE d2_current_area_visible IF d2_current_area_visible = 0 d2_index = 0 WHILE d2_index < d2_num_of_packages AND NOT d2_player_sniped_at_biker = 1 IF NOT IS_CHAR_DEAD d2_gang_bikers[d2_index] GET_CHAR_HIGHEST_PRIORITY_EVENT d2_gang_bikers[d2_index] d2_event_type IF d2_event_type = EVENT_SHOT_FIRED_WHIZZED_BY d2_player_sniped_at_biker = 1 ENDIF ENDIF d2_index++ ENDWHILE IF NOT d2_player_sniped_at_biker = 1 IF NOT d2_projectile_reached_area = 1 AND IS_PROJECTILE_IN_AREA -1824.82 371.40 12.09 -1804.82 391.40 22.09 d2_projectile_reached_area = 1 TIMERA = 0 ENDIF IF d2_projectile_reached_area = 1 d2_index = 0 WHILE d2_index < d2_num_of_packages IF NOT IS_CHAR_DEAD d2_gang_bikers[d2_index] LVAR_FLOAT d2_xmin d2_xmax d2_ymin d2_ymax d2_zmin d2_zmax GET_CHAR_COORDINATES d2_gang_bikers[d2_index] player_x player_y player_z d2_xmin = player_x - 3.0 d2_xmax = player_x + 3.0 d2_ymin = player_y - 3.0 d2_ymax = player_y + 3.0 d2_zmin = player_z - 3.0 d2_zmax = player_z + 3.0 IF IS_EXPLOSION_IN_AREA EXPLOSION_GRENADE d2_xmin d2_ymin d2_zmin d2_xmax d2_ymax d2_zmax OR IS_EXPLOSION_IN_AREA EXPLOSION_MOLOTOV d2_xmin d2_ymin d2_zmin d2_xmax d2_ymax d2_zmax OR IS_EXPLOSION_IN_AREA EXPLOSION_ROCKET d2_xmin d2_ymin d2_zmin d2_xmax d2_ymax d2_zmax OR IS_EXPLOSION_IN_AREA EXPLOSION_ROCKET_WEAK d2_xmin d2_ymin d2_zmin d2_xmax d2_ymax d2_zmax OR IS_EXPLOSION_IN_AREA EXPLOSION_SMALL d2_xmin d2_ymin d2_zmin d2_xmax d2_ymax d2_zmax OR IS_EXPLOSION_IN_AREA EXPLOSION_TINY d2_xmin d2_ymin d2_zmin d2_xmax d2_ymax d2_zmax IF NOT IS_CHAR_DEAD d2_gang_bikers[0] TASK_DIE d2_gang_bikers[0] ENDIF IF NOT IS_CHAR_DEAD d2_gang_bikers[1] TASK_DIE d2_gang_bikers[1] ENDIF IF NOT IS_CHAR_DEAD d2_gang_bikers[2] TASK_DIE d2_gang_bikers[2] ENDIF IF NOT IS_CHAR_DEAD d2_gang_bikers[3] TASK_DIE d2_gang_bikers[3] ENDIF IF NOT IS_CAR_DEAD d2_gang_bikes[0] EXPLODE_CAR d2_gang_bikes[0] ENDIF IF NOT IS_CAR_DEAD d2_gang_bikes[1] EXPLODE_CAR d2_gang_bikes[1] ENDIF IF NOT IS_CAR_DEAD d2_gang_bikes[2] EXPLODE_CAR d2_gang_bikes[2] ENDIF IF NOT IS_CAR_DEAD d2_gang_bikes[3] EXPLODE_CAR d2_gang_bikes[3] ENDIF DELETE_OBJECT d2_packages[0] DELETE_OBJECT d2_packages[1] DELETE_OBJECT d2_packages[2] DELETE_OBJECT d2_packages[3] PRINT_NOW ( DRV3_9 ) 5000 0 GOTO mission_driv2_failed ENDIF ENDIF d2_index++ ENDWHILE IF TIMERA > 2000 d2_player_sniped_at_biker = 1 ENDIF ENDIF ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_2D scplayer -1814.82 381.40 50.0 50.0 FALSE OR d2_player_sniped_at_biker = 1 REMOVE_BLIP d2_ambushed_van_blip GOSUB d2_play_cutscene_for_deal d2_player_reached_deal_location = 1 TIMERA = 0 PRINT_HELP DRV3_H // When you're close to a ~r~package~w~, tap ~m~~widget_grab~ to snatch it. TIMERB = 0 ENDIF ENDIF ENDIF IF d2_player_reached_deal_location = 1 IF NOT d2_first_help_text_cleared = 1 IF TIMERB > 12000 CLEAR_HELP d2_first_help_text_cleared = 1 ENDIF ENDIF // first time player gets near to package that can be snatched, // flash up help text again as a reminder IF NOT d2_player_got_within_10m_of_snatchable_package = 1 IF IS_CHAR_ON_ANY_BIKE scplayer OR IS_CHAR_ON_FOOT scplayer d2_index = 0 WHILE d2_index < d2_num_of_packages AND NOT d2_player_got_within_10m_of_snatchable_package = 1 IF DOES_OBJECT_EXIST d2_packages[d2_index] AND NOT d2_package_collected[d2_index] = 1 IF IS_OBJECT_ATTACHED d2_packages[d2_index] OR IS_CHAR_HOLDING_OBJECT -1 d2_packages[d2_index] IF LOCATE_CHAR_ANY_MEANS_OBJECT_2D scplayer d2_packages[d2_index] 10.0 10.0 FALSE PRINT_HELP DRV3_H // When you're close to a ~r~package~w~, tap ~m~~widget_grab~ to snatch it. d2_player_got_within_10m_of_snatchable_package = 1 IF NOT d2_first_help_text_cleared = 1 d2_first_help_text_cleared = 1 ENDIF TIMERB = 0 ENDIF ENDIF ENDIF d2_index++ ENDWHILE ENDIF ELSE IF NOT d2_second_help_text_cleared = 1 IF TIMERB > 12000 CLEAR_HELP d2_second_help_text_cleared = 1 ENDIF ENDIF ENDIF GOSUB d2_package_collect_check GOSUB d2_package_dropped_check GOSUB d2_keep_packages_on_ground // if the bikes have reached their first destination, they wander randomly. // if they're doing this and get too far away from the city centre, send them back into town // and then set to wander randomly again GOSUB d2_keep_wandering_bikes_in_city_centre GOSUB d2_set_centre_bikes_wandering // bikes head toward second destination after five minutes IF NOT d2_bikes_going_to_destination = 1 AND NOT d2_all_packages_collected = 1 IF TIMERA > 280000 GOSUB d2_send_bikes_to_destination d2_bikes_going_to_destination = 1 IF d2_cur_bike_state[0] = d2_going_to_destination OR d2_cur_bike_state[1] = d2_going_to_destination OR d2_cur_bike_state[2] = d2_going_to_destination OR d2_cur_bike_state[3] = d2_going_to_destination LVAR_INT d2_packages_remaining d2_packages_remaining = d2_num_of_packages - d2_num_packages_collected IF d2_packages_remaining > 1 PRINT_NOW ( DRV3_5 ) 10000 0 ELSE PRINT_NOW ( DRV3_6 ) 10000 0 ENDIF ENDIF ENDIF ENDIF GOSUB d2_set_bikes_wandering_from_first_dest_check GOSUB d2_keep_bikers_on_bikes // speed up / slow down code for bikes GOSUB d2_new_bike_speed_check // bikers shoot player if near, chase player if far away GOSUB d2_update_biker_attack_state // if the bikers aren't doing anything (eg. they can't get to their bike), // they attack the player if close d2_index = 0 WHILE d2_index < d2_num_of_packages IF NOT IS_CHAR_DEAD d2_gang_bikers[d2_index] GET_SCRIPT_TASK_STATUS d2_gang_bikers[d2_index] -1 d2_biker_task_status[d2_index] IF d2_biker_relationship_set[d2_index] = 0 AND d2_biker_task_status[d2_index] = FINISHED_TASK SET_CHAR_RELATIONSHIP d2_gang_bikers[d2_index] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 d2_biker_relationship_set[d2_index] = 1 ENDIF IF d2_biker_relationship_set[d2_index] = 1 AND NOT d2_biker_task_status[d2_index] = FINISHED_TASK CLEAR_ALL_CHAR_RELATIONSHIPS d2_gang_bikers[d2_index] ACQUAINTANCE_TYPE_PED_HATE CLEAR_ALL_CHAR_RELATIONSHIPS d2_gang_bikers[d2_index] ACQUAINTANCE_TYPE_PED_DISLIKE d2_biker_relationship_set[d2_index] = 0 ENDIF ENDIF d2_index++ ENDWHILE IF d2_num_packages_collected = d2_num_of_packages AND NOT d2_all_packages_collected = 1 ADD_BLIP_FOR_COORD d2_player_dest_x d2_player_dest_y d2_player_dest_z d2_player_dest_blip PRINT_NOW ( DRV3_10 ) 7000 0 d2_all_packages_collected = 1 ENDIF // mission pass/fail conditions IF d2_all_packages_collected = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer d2_player_dest_x d2_player_dest_y d2_player_dest_z 4.0 4.0 2.0 TRUE GOSUB d2_play_mission_passed_cutscene GOTO mission_driv2_passed ENDIF ENDIF IF d2_bikes_going_to_destination = 1 GOSUB d2_have_any_packages_reached_destination IF d2_any_package_at_destination = 1 GOSUB check_player_is_safe IF player_is_completely_safe = 1 GOSUB d2_play_mission_failed_cutscene ENDIF PRINT_NOW ( DRV3_7 ) 5000 0 GOTO mission_driv2_failed ENDIF ENDIF GOSUB d2_are_any_packages_in_water IF d2_any_packages_in_water = 1 PRINT_NOW ( DRV3_8 ) 5000 0 GOTO mission_driv2_failed ENDIF GOSUB d2_have_any_packages_been_destroyed IF d2_any_packages_been_destroyed = 1 PRINT_NOW ( DRV3_9 ) 5000 0 GOTO mission_driv2_failed ENDIF ENDIF GOTO driv2_loop // ********************************** Mission GOSUBS ************************************ // ************************************************************ // Create gang setup // ************************************************************ d2_create_ambushed_van_and_gang: CLEAR_AREA -1814.82 381.40 17.09 100.0 TRUE SET_CAR_MODEL_COMPONENTS BOXVILLE 0 0 CREATE_CAR BOXVILLE -1814.82 381.40 9.96 d2_ambushed_van SET_CAR_HEADING d2_ambushed_van 33.27 POP_CAR_DOOR d2_ambushed_van REAR_LEFT_DOOR FALSE OPEN_CAR_DOOR d2_ambushed_van REAR_RIGHT_DOOR // make sure can't destroy ambushed van before the cutscene's played SET_CAR_PROOFS d2_ambushed_van TRUE TRUE TRUE TRUE TRUE ADD_BLIP_FOR_CAR d2_ambushed_van d2_ambushed_van_blip SET_BLIP_AS_FRIENDLY d2_ambushed_van_blip TRUE CREATE_CAR FCR900 -1814.86 376.0 15.68 d2_gang_bikes[0] SET_CAR_HEADING d2_gang_bikes[0] 26.65 CREATE_CAR FCR900 -1817.44 380.33 15.68 d2_gang_bikes[1] SET_CAR_HEADING d2_gang_bikes[1] 23.76 CREATE_CAR FCR900 -1818.09 377.08 15.68 d2_gang_bikes[2] SET_CAR_HEADING d2_gang_bikes[2] 32.17 CREATE_CAR FCR900 -1816.66 374.73 15.68 d2_gang_bikes[3] SET_CAR_HEADING d2_gang_bikes[3] 30.21 d2_index = 0 WHILE d2_index < d2_num_of_packages SET_CAR_ONLY_DAMAGED_BY_PLAYER d2_gang_bikes[d2_index] TRUE SET_CAN_BURST_CAR_TYRES d2_gang_bikes[d2_index] FALSE FREEZE_CAR_POSITION d2_gang_bikes[d2_index] TRUE d2_index++ ENDWHILE CREATE_CAR FCR900 -1819.01 386.28 16.58 d2_player_bike SET_CAR_HEADING d2_player_bike 49.56 SET_CAR_ONLY_DAMAGED_BY_PLAYER d2_player_bike TRUE SET_CAN_BURST_CAR_TYRES d2_player_bike FALSE CREATE_CHAR PEDTYPE_MISSION1 WMYCR -1811.85 375.88 15.68 d2_gang_bikers[0] SET_CHAR_HEADING d2_gang_bikers[0] 27.32 CREATE_CHAR_INSIDE_CAR d2_gang_bikes[1] PEDTYPE_MISSION1 WMYCR d2_gang_bikers[1] CREATE_CHAR_INSIDE_CAR d2_gang_bikes[2] PEDTYPE_MISSION1 HMYCR d2_gang_bikers[2] CREATE_CHAR_INSIDE_CAR d2_gang_bikes[3] PEDTYPE_MISSION1 HMYCR d2_gang_bikers[3] LVAR_INT d2_gang_biker_decisions COPY_CHAR_DECISION_MAKER -1 d2_gang_biker_decisions ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE d2_gang_biker_decisions EVENT_DAMAGE TASK_SIMPLE_BE_DAMAGED 100.0 100.0 100.0 100.0 TRUE FALSE d2_index = 0 WHILE d2_index < d2_num_of_packages IF NOT IS_CHAR_DEAD d2_gang_bikers[d2_index] SET_CHAR_DECISION_MAKER d2_gang_bikers[d2_index] d2_gang_biker_decisions GIVE_WEAPON_TO_CHAR d2_gang_bikers[d2_index] WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE d2_gang_bikers[d2_index] KNOCKOFFBIKE_ALWAYSNORMAL SET_CHAR_ONLY_DAMAGED_BY_PLAYER d2_gang_bikers[d2_index] TRUE CLEAR_ALL_CHAR_RELATIONSHIPS d2_gang_bikers[d2_index] ACQUAINTANCE_TYPE_PED_HATE CLEAR_ALL_CHAR_RELATIONSHIPS d2_gang_bikers[d2_index] ACQUAINTANCE_TYPE_PED_DISLIKE ENDIF d2_index++ ENDWHILE // make sure can't destroy bikes and can only snipe biker guys before the cutscene's played d2_index = 0 WHILE d2_index < d2_num_of_packages IF NOT IS_CHAR_DEAD d2_gang_bikers[d2_index] IF d2_index = 0 SET_CHAR_PROOFS d2_gang_bikers[d2_index] TRUE TRUE TRUE TRUE TRUE SET_CHAR_VISIBLE d2_gang_bikers[d2_index] FALSE ELSE SET_CHAR_PROOFS d2_gang_bikers[d2_index] FALSE TRUE TRUE TRUE TRUE ENDIF ENDIF IF NOT IS_CAR_DEAD d2_gang_bikes[d2_index] SET_CAR_PROOFS d2_gang_bikes[d2_index] TRUE TRUE TRUE TRUE TRUE ENDIF d2_index++ ENDWHILE SET_CAR_PROOFS d2_player_bike TRUE TRUE TRUE TRUE TRUE CREATE_OBJECT kmb_packet -1812.30 377.57 9.34 d2_packages[0] d2_index = 0 WHILE d2_index < d2_num_of_packages IF NOT d2_index = 0 CREATE_OBJECT kmb_packet 0.0 0.0 -100.0 d2_packages[d2_index] ATTACH_OBJECT_TO_CAR d2_packages[d2_index] d2_gang_bikes[d2_index] 0.0 -0.9 0.5 0.0 0.0 0.0 d2_package_attach_state[d2_index] = d2_attached_to_bike ELSE IF NOT IS_CHAR_DEAD d2_gang_bikers[0] TASK_PICK_UP_OBJECT d2_gang_bikers[0] d2_packages[0] 0.0 0.0 0.0 PED_HANDL HOLD_ORIENTATE_BONE_FULL NULL NULL FALSE d2_package_attach_state[0] = d2_attached_to_char SET_OBJECT_VISIBLE d2_packages[0] FALSE ENDIF ENDIF SET_OBJECT_COLLISION d2_packages[d2_index] TRUE SET_OBJECT_DYNAMIC d2_packages[d2_index] TRUE SET_OBJECT_PROOFS d2_packages[d2_index] TRUE TRUE TRUE TRUE TRUE SET_OBJECT_COLLISION_DAMAGE_EFFECT d2_packages[d2_index] FALSE d2_index++ ENDWHILE RETURN // ************************************************************ // Start bike chase // ************************************************************ d2_start_bike_chase: d2_index = 0 WHILE d2_index < d2_num_of_packages IF NOT IS_CAR_DEAD d2_gang_bikes[d2_index] AND NOT IS_CHAR_DEAD d2_gang_bikers[d2_index] IF IS_CHAR_IN_CAR d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] AND d2_cur_bike_state[d2_index] = d2_not_started_chase TASK_CAR_DRIVE_TO_COORD d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] d2_bike_first_pt_x[d2_index] d2_bike_first_pt_y[d2_index] d2_bike_first_pt_z[d2_index] d2_bike_speed[d2_index] MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS //TASK_CAR_DRIVE_WANDER d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] d2_bike_speed[d2_index] DRIVINGMODE_AVOIDCARS d2_cur_bike_state[d2_index] = d2_going_to_first_point ENDIF ENDIF d2_index++ ENDWHILE RETURN // ************************************************************ // Check whether player's collected a package // ************************************************************ d2_package_collect_check: d2_index = 0 WHILE d2_index < d2_num_of_packages IF DOES_OBJECT_EXIST d2_packages[d2_index] AND NOT d2_package_collected[d2_index] = 1 IF IS_OBJECT_ATTACHED d2_packages[d2_index] OR IS_CHAR_HOLDING_OBJECT -1 d2_packages[d2_index] //IF LOCATE_CHAR_ANY_MEANS_2D scplayer d2_package_x[d2_index] d2_package_y[d2_index] 1.0 1.0 FALSE IF LOCATE_CHAR_ANY_MEANS_OBJECT_3D scplayer d2_packages[d2_index] 2.0 2.0 2.0 FALSE IF IS_CHAR_ON_ANY_BIKE scplayer OR IS_CHAR_ON_FOOT scplayer LVAR_INT nPressed nPressed = 0 IF IS_WIDGET_RELEASED WIDGET_GRAB nPressed = 1 ENDIF IF nPressed = 1 AND NOT d2_leftshoulder1_pressed_last_frame = 1 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 -3.0 0.0 d2_player_offset_x1 d2_player_offset_y1 d2_dummy_z GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 3.0 0.0 d2_player_offset_x2 d2_player_offset_y2 d2_dummy_z // different anims depending on which side of the player the package is on // and whether the player's on a bike or on foot // If the player's on foot, play different anims depending on the relative height of the package IF IS_OBJECT_IN_ANGLED_AREA_2D d2_packages[d2_index] d2_player_offset_x1 d2_player_offset_y1 d2_player_offset_x2 d2_player_offset_y2 3.0 FALSE IF IS_CHAR_ON_ANY_BIKE scplayer TASK_PLAY_ANIM scplayer BIKEs_Snatch_L BIKES 4.0 FALSE FALSE FALSE FALSE 220 ELSE GET_CHAR_COORDINATES scplayer d2_player_x d2_player_y d2_player_z GET_OBJECT_COORDINATES d2_packages[d2_index] d2_package_x[d2_index] d2_package_y[d2_index] d2_package_z[d2_index] d2_package_z[d2_index] += 0.25 IF d2_package_z[d2_index] <= d2_player_z TASK_PLAY_ANIM scplayer pickup_box MISC 4.0 FALSE FALSE FALSE FALSE 180 ELSE TASK_PLAY_ANIM scplayer GRAB_L MISC 4.0 FALSE FALSE FALSE FALSE 180 ENDIF ENDIF ELSE IF IS_CHAR_ON_ANY_BIKE scplayer TASK_PLAY_ANIM scplayer BIKEs_Snatch_R BIKES 4.0 FALSE FALSE FALSE FALSE 220 ELSE GET_CHAR_COORDINATES scplayer d2_player_x d2_player_y d2_player_z GET_OBJECT_COORDINATES d2_packages[d2_index] d2_package_x[d2_index] d2_package_y[d2_index] d2_package_z[d2_index] d2_package_z[d2_index] += 0.25 IF d2_package_z[d2_index] <= d2_player_z TASK_PLAY_ANIM scplayer pickup_box MISC 4.0 FALSE FALSE FALSE FALSE 180 ELSE TASK_PLAY_ANIM scplayer GRAB_R MISC 4.0 FALSE FALSE FALSE FALSE 180 ENDIF ENDIF ENDIF GET_OBJECT_COORDINATES d2_packages[d2_index] d2_package_x[d2_index] d2_package_y[d2_index] d2_package_z[d2_index] DELETE_OBJECT d2_packages[d2_index] REMOVE_BLIP d2_package_blips[d2_index] ADD_ONE_OFF_SOUND d2_package_x[d2_index] d2_package_y[d2_index] d2_package_z[d2_index] SOUND_RACE_START_GO PRINT_NOW ( DRV3_4 ) 5000 0 d2_package_collected[d2_index] = 1 d2_num_packages_collected++ ELSE IF NOT IS_MESSAGE_BEING_DISPLAYED PRINT_HELP_FOREVER_CONDITIONAL DRV3_3 8192 // ~s~Tap ~m~~widget_grab~ to snatch the ~r~package. 8192 is CONDITION_FLAG_GRAB. d2_in_range_last_printed = 1 ELSE IF d2_in_range_last_printed = 1 PRINT_HELP_FOREVER_CONDITIONAL DRV3_3 8192 // ~s~Tap ~m~~widget_grab~ to snatch the ~r~package. 8192 is CONDITION_FLAG_GRAB. d2_in_range_last_printed = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT d2_package_collected[d2_index] = 1 IF NOT IS_CAR_DEAD d2_gang_bikes[d2_index] IF IS_CHAR_IN_CAR scplayer d2_gang_bikes[d2_index] AND IS_OBJECT_ATTACHED d2_packages[d2_index] //AND d2_package_attach_state[d2_index] = d2_attached_to_bike GET_OBJECT_COORDINATES d2_packages[d2_index] d2_package_x[d2_index] d2_package_y[d2_index] d2_package_z[d2_index] DELETE_OBJECT d2_packages[d2_index] REMOVE_BLIP d2_package_blips[d2_index] ADD_ONE_OFF_SOUND d2_package_x[d2_index] d2_package_y[d2_index] d2_package_z[d2_index] SOUND_RACE_START_GO PRINT_NOW ( DRV3_4 ) 5000 0 d2_package_collected[d2_index] = 1 d2_num_packages_collected++ ENDIF ENDIF ENDIF ELSE //IF LOCATE_CHAR_ANY_MEANS_2D scplayer d2_package_x[d2_index] d2_package_y[d2_index] 1.0 1.0 FALSE IF IS_CHAR_TOUCHING_OBJECT scplayer d2_packages[d2_index] IF IS_CHAR_ON_ANY_BIKE scplayer OR IS_CHAR_ON_FOOT scplayer GET_OBJECT_COORDINATES d2_packages[d2_index] d2_package_x[d2_index] d2_package_y[d2_index] d2_package_z[d2_index] DELETE_OBJECT d2_packages[d2_index] REMOVE_BLIP d2_package_blips[d2_index] ADD_ONE_OFF_SOUND d2_package_x[d2_index] d2_package_y[d2_index] d2_package_z[d2_index] SOUND_RACE_START_GO PRINT_NOW ( DRV3_4 ) 5000 0 d2_package_collected[d2_index] = 1 d2_num_packages_collected++ ENDIF ENDIF ENDIF IF d2_package_collected[d2_index] = 1 IF NOT IS_CHAR_DEAD d2_gang_bikers[d2_index] GIVE_WEAPON_TO_CHAR d2_gang_bikers[d2_index] WEAPONTYPE_MICRO_UZI 99999 TASK_KILL_CHAR_ON_FOOT d2_gang_bikers[d2_index] scplayer d2_biker_attacking_player[d2_index] = 1 ENDIF ENDIF ENDIF d2_index++ ENDWHILE IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1 d2_leftshoulder1_pressed_last_frame = 1 ELSE d2_leftshoulder1_pressed_last_frame = 0 ENDIF RETURN // *************************************************************** // If player rams bikes, bikers drop packages // Biker tries to pick up the dropped package and drive off again // *************************************************************** d2_package_dropped_check: d2_index = 0 WHILE d2_index < d2_num_of_packages IF NOT IS_CAR_DEAD d2_gang_bikes[d2_index] AND NOT d2_cur_bike_state[d2_index] = d2_not_started_chase AND NOT d2_package_collected[d2_index] = 1 GET_CAR_HEALTH d2_gang_bikes[d2_index] d2_bike_health[d2_index] IF IS_OBJECT_ATTACHED d2_packages[d2_index] IF LOCATE_CHAR_IN_CAR_CAR_2D scplayer d2_gang_bikes[d2_index] 2.0 2.0 FALSE d2_damage_done = d2_last_bike_health[d2_index] - d2_bike_health[d2_index] IF d2_damage_done >= 2 DETACH_OBJECT d2_packages[d2_index] 0.0 0.0 0.0 FALSE d2_package_attach_state[d2_index] = d2_not_attached ENDIF ENDIF ELSE IF NOT IS_CHAR_DEAD d2_gang_bikers[d2_index] IF NOT IS_CHAR_HOLDING_OBJECT d2_gang_bikers[d2_index] -1 IF NOT d2_biker_picking_up_dropped_package[d2_index] = 1 IF DOES_OBJECT_EXIST d2_packages[d2_index] TASK_GO_TO_OBJECT d2_gang_bikers[d2_index] d2_packages[d2_index] -1 1.0 d2_biker_picking_up_dropped_package[d2_index] = 1 ENDIF ELSE GET_SCRIPT_TASK_STATUS d2_gang_bikers[d2_index] TASK_GO_TO_OBJECT d2_task_status IF d2_task_status = FINISHED_TASK IF DOES_OBJECT_EXIST d2_packages[d2_index] TASK_PICK_UP_OBJECT d2_gang_bikers[d2_index] d2_packages[d2_index] 0.0 0.0 0.0 PED_HANDL HOLD_ORIENTATE_PEDHEADING NULL NULL FALSE d2_package_attach_state[d2_index] = d2_attached_to_char ENDIF d2_biker_picking_up_dropped_package[d2_index] = 0 // set to zero so that keep_bikers_on_bikes now puts the driver back on the bike d2_getting_back_on_bike[d2_index] = 0 ELSE IF NOT DOES_OBJECT_EXIST d2_packages[d2_index] d2_biker_picking_up_dropped_package[d2_index] = 0 // set to zero so that keep_bikers_on_bikes now puts the driver back on the bike d2_getting_back_on_bike[d2_index] = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF d2_last_bike_health[d2_index] = d2_bike_health[d2_index] ENDIF d2_index++ ENDWHILE RETURN // **************************************************************** // Keep packages still on ground when not attached to bike or biker // **************************************************************** d2_keep_packages_on_ground: d2_index = 0 WHILE d2_index < d2_num_of_packages IF DOES_OBJECT_EXIST d2_packages[d2_index] IF NOT IS_OBJECT_ATTACHED d2_packages[d2_index] AND NOT IS_CHAR_HOLDING_OBJECT -1 d2_packages[d2_index] AND IS_OBJECT_STATIC d2_packages[d2_index] IF NOT d2_package_immovable[d2_index] = 1 FREEZE_OBJECT_POSITION d2_packages[d2_index] TRUE d2_package_immovable[d2_index] = 1 ENDIF ELSE IF d2_package_immovable[d2_index] = 1 FREEZE_OBJECT_POSITION d2_packages[d2_index] FALSE d2_package_immovable[d2_index] = 0 ENDIF ENDIF ENDIF d2_index++ ENDWHILE RETURN // ************************************************************* // Stop bikes from getting too far away from the city centre // ************************************************************* d2_keep_wandering_bikes_in_city_centre: d2_index = 0 WHILE d2_index < d2_num_of_packages IF NOT IS_CAR_DEAD d2_gang_bikes[d2_index] AND NOT IS_CHAR_DEAD d2_gang_bikers[d2_index] AND NOT d2_biker_attacking_player[d2_index] = 1 IF IS_CHAR_IN_CAR d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] AND d2_cur_bike_state[d2_index] = d2_wandering_randomly AND NOT LOCATE_CHAR_IN_CAR_2D d2_gang_bikers[d2_index] d2_city_centre_x d2_city_centre_y 400.0 400.0 FALSE TASK_CAR_DRIVE_TO_COORD d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] d2_city_centre_x d2_city_centre_y d2_city_centre_z d2_bike_speed[d2_index] MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS d2_cur_bike_state[d2_index] = d2_going_to_city_centre ENDIF ENDIF d2_index++ ENDWHILE RETURN d2_set_centre_bikes_wandering: d2_index = 0 WHILE d2_index < d2_num_of_packages IF NOT IS_CAR_DEAD d2_gang_bikes[d2_index] AND NOT IS_CHAR_DEAD d2_gang_bikers[d2_index] AND NOT d2_biker_attacking_player[d2_index] = 1 IF IS_CHAR_IN_CAR d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] AND d2_cur_bike_state[d2_index] = d2_going_to_city_centre AND LOCATE_CHAR_IN_CAR_2D d2_gang_bikers[d2_index] d2_city_centre_x d2_city_centre_y 200.0 200.0 FALSE TASK_CAR_DRIVE_WANDER d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] d2_bike_speed[d2_index] DRIVINGMODE_AVOIDCARS d2_cur_bike_state[d2_index] = d2_wandering_randomly ENDIF ENDIF d2_index++ ENDWHILE RETURN // ************************************************************* // Put bikers back on bikes if they've fallen off // ************************************************************* d2_keep_bikers_on_bikes: d2_index = 0 WHILE d2_index < d2_num_of_packages IF NOT IS_CAR_DEAD d2_gang_bikes[d2_index] AND NOT IS_CHAR_DEAD d2_gang_bikers[d2_index] AND NOT d2_biker_picking_up_dropped_package[d2_index] = 1 AND NOT d2_biker_attacking_player[d2_index] = 1 IF NOT IS_CHAR_IN_CAR d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] IF d2_getting_back_on_bike[d2_index] = 0 TASK_ENTER_CAR_AS_DRIVER d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] -1 d2_getting_back_on_bike[d2_index] = 1 ENDIF ELSE IF d2_getting_back_on_bike[d2_index] = 1 IF d2_cur_bike_state[d2_index] = d2_wandering_randomly TASK_CAR_DRIVE_WANDER d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] d2_bike_speed[d2_index] DRIVINGMODE_AVOIDCARS ENDIF IF d2_cur_bike_state[d2_index] = d2_going_to_city_centre TASK_CAR_DRIVE_TO_COORD d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] d2_city_centre_x d2_city_centre_y d2_city_centre_z d2_bike_speed[d2_index] MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ENDIF IF d2_cur_bike_state[d2_index] = d2_going_to_first_point TASK_CAR_DRIVE_TO_COORD d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] d2_bike_first_pt_x[d2_index] d2_bike_first_pt_y[d2_index] d2_bike_first_pt_z[d2_index] d2_bike_speed[d2_index] MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ENDIF IF d2_cur_bike_state[d2_index] = d2_going_to_destination TASK_CAR_DRIVE_TO_COORD d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] d2_bike_dest_x d2_bike_dest_y d2_bike_dest_z d2_bike_speed[d2_index] MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ENDIF IF DOES_OBJECT_EXIST d2_packages[d2_index] IF IS_CHAR_HOLDING_OBJECT d2_gang_bikers[d2_index] d2_packages[d2_index] DROP_OBJECT d2_gang_bikers[d2_index] FALSE ATTACH_OBJECT_TO_CAR d2_packages[d2_index] d2_gang_bikes[d2_index] 0.0 -0.9 0.5 0.0 0.0 0.0 d2_package_attach_state[d2_index] = d2_attached_to_bike ENDIF ENDIF d2_getting_back_on_bike[d2_index] = 0 ENDIF ENDIF ENDIF d2_index++ ENDWHILE RETURN // ********************************************************************* // If bikes attacking player, shoot if player near and chase if far away // ********************************************************************* d2_update_biker_attack_state: d2_index = 0 WHILE d2_index < d2_num_of_packages IF NOT IS_CAR_DEAD d2_gang_bikes[d2_index] AND NOT IS_CHAR_DEAD d2_gang_bikers[d2_index] AND d2_biker_attacking_player[d2_index] = 1 IF d2_biker_shooting_at_player[d2_index] = 1 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D d2_gang_bikers[d2_index] scplayer 40.0 40.0 FALSE TASK_CAR_MISSION d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] -1 MISSION_RAMPLAYER_FARAWAY d2_bike_speed[d2_index] DRIVINGMODE_AVOIDCARS d2_biker_shooting_at_player[d2_index] = 0 ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_2D d2_gang_bikers[d2_index] scplayer 10.0 10.0 FALSE // AND IS_CHAR_STOPPED d2_gang_bikers[d2_index] TASK_KILL_CHAR_ON_FOOT d2_gang_bikers[d2_index] scplayer d2_biker_shooting_at_player[d2_index] = 1 ENDIF ENDIF ENDIF d2_index++ ENDWHILE RETURN // ************************************************************* // Send bikes to their own territory after five minutes // ************************************************************* d2_send_bikes_to_destination: d2_index = 0 WHILE d2_index < d2_num_of_packages IF NOT IS_CAR_DEAD d2_gang_bikes[d2_index] AND NOT IS_CHAR_DEAD d2_gang_bikers[d2_index] IF IS_CHAR_IN_CAR d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] AND NOT d2_cur_bike_state[d2_index] = d2_going_to_destination AND NOT d2_biker_attacking_player[d2_index] = 1 TASK_CAR_DRIVE_TO_COORD d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] d2_bike_dest_x d2_bike_dest_y d2_bike_dest_z d2_bike_speed[d2_index] MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS d2_cur_bike_state[d2_index] = d2_going_to_destination ENDIF ENDIF d2_index++ ENDWHILE RETURN // ********************************************************************************* // If bikes have reached first point, set to wander for the rest of the mission time // ********************************************************************************* d2_set_bikes_wandering_from_first_dest_check: d2_index = 0 WHILE d2_index < d2_num_of_packages IF NOT IS_CAR_DEAD d2_gang_bikes[d2_index] AND NOT IS_CHAR_DEAD d2_gang_bikers[d2_index] IF IS_CHAR_IN_CAR d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] AND d2_cur_bike_state[d2_index] = d2_going_to_first_point AND NOT d2_biker_attacking_player[d2_index] = 1 AND LOCATE_CHAR_IN_CAR_3D d2_gang_bikers[d2_index] d2_bike_first_pt_x[d2_index] d2_bike_first_pt_y[d2_index] d2_bike_first_pt_z[d2_index] 3.0 3.0 3.0 FALSE TASK_CAR_DRIVE_WANDER d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] d2_bike_speed[d2_index] DRIVINGMODE_AVOIDCARS d2_cur_bike_state[d2_index] = d2_wandering_randomly ENDIF ENDIF d2_index++ ENDWHILE RETURN // ***************************************************************** // Find whether any bikers have reached destination with the package // ***************************************************************** d2_have_any_packages_reached_destination: d2_index = 0 WHILE d2_index < d2_num_of_packages IF DOES_OBJECT_EXIST d2_packages[d2_index] AND NOT IS_CHAR_DEAD d2_gang_bikers[d2_index] AND NOT IS_CAR_DEAD d2_gang_bikes[d2_index] IF IS_OBJECT_ATTACHED d2_packages[d2_index] AND IS_CHAR_IN_CAR d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] IF LOCATE_OBJECT_2D d2_packages[d2_index] d2_bike_dest_x d2_bike_dest_y 20.0 7.0 FALSE d2_any_package_at_destination = 1 d2_package_at_dest_index = d2_index ENDIF ENDIF ENDIF d2_index++ ENDWHILE RETURN // ***************************************************************** // Bikers speed up and slow down if player is near/far away // ***************************************************************** d2_new_bike_speed_check: GET_CHAR_COORDINATES scplayer d2_player_x d2_player_y d2_player_z d2_index = 0 WHILE d2_index < d2_num_of_packages IF NOT IS_CAR_DEAD d2_gang_bikes[d2_index] AND NOT IS_CHAR_DEAD d2_gang_bikers[d2_index] IF IS_CHAR_IN_CAR d2_gang_bikers[d2_index] d2_gang_bikes[d2_index] AND NOT d2_biker_attacking_player[d2_index] = 1 IF d2_cur_bike_state[d2_index] = d2_going_to_destination AND LOCATE_CAR_2D d2_gang_bikes[d2_index] d2_bike_dest_x d2_bike_dest_y 25.0 25.0 FALSE // slow bikes down for final corner before cutscene d2_bike_speed[d2_index] = 15.0 ELSE GET_CAR_COORDINATES d2_gang_bikes[d2_index] d2_bike_x d2_bike_y d2_bike_z GET_DISTANCE_BETWEEN_COORDS_3D d2_player_x d2_player_y d2_player_z d2_bike_x d2_bike_y d2_bike_z d2_dist_from_player_to_bike IF d2_dist_from_player_to_bike < 0.0 d2_dist_from_player_to_bike = 0.0 ENDIF IF d2_dist_from_player_to_bike <= 50.0 d2_bike_speed[d2_index] = d2_dist_from_player_to_bike * 0.4 d2_bike_speed[d2_index] *= -1.0 d2_bike_speed[d2_index] += 40.0 ELSE d2_bike_speed[d2_index] = 20.0 ENDIF ENDIF SET_CAR_CRUISE_SPEED d2_gang_bikes[d2_index] d2_bike_speed[d2_index] ENDIF ENDIF d2_index++ ENDWHILE RETURN // ***************************************************************** // Find out whether any packages have gone into the water // ***************************************************************** d2_are_any_packages_in_water: d2_index = 0 WHILE d2_index < d2_num_of_packages IF DOES_OBJECT_EXIST d2_packages[d2_index] IF IS_OBJECT_IN_WATER d2_packages[d2_index] d2_any_packages_in_water = 1 ENDIF ENDIF d2_index++ ENDWHILE RETURN // ***************************************************************** // Find out whether any packages have been destroyed // ***************************************************************** d2_have_any_packages_been_destroyed: d2_index = 0 WHILE d2_index < d2_num_of_packages IF IS_CAR_DEAD d2_gang_bikes[d2_index] AND DOES_OBJECT_EXIST d2_packages[d2_index] AND d2_package_attach_state[d2_index] = d2_attached_to_bike DELETE_OBJECT d2_packages[d2_index] d2_any_packages_been_destroyed = 1 ENDIF d2_index++ ENDWHILE RETURN // ***************************************************************** // Deal cutscene // ***************************************************************** d2_play_cutscene_for_deal: CLEAR_AREA -1814.82 381.40 17.09 100.0 FALSE // IF d2_player_sniped_at_biker = 1 // REQUEST_COLLISION -1814.82 381.40 // LOAD_SCENE -1814.82 381.40 17.09 // ENDIF SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON IF NOT IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_COORDINATES scplayer -1771.94 336.35 8.94 SET_CHAR_HEADING scplayer 49.66 ENDIF IF d2_player_entered_any_car = 1 IF NOT IS_CAR_DEAD d2_last_player_car_before_meet SET_CAR_COORDINATES d2_last_player_car_before_meet -1766.6 330.71 8.23 SET_CAR_HEADING d2_last_player_car_before_meet 45.1 ENDIF ENDIF IF NOT IS_CHAR_DEAD d2_gang_bikers[0] SET_CHAR_VISIBLE d2_gang_bikers[0] TRUE IF DOES_OBJECT_EXIST d2_packages[0] SET_OBJECT_VISIBLE d2_packages[0] TRUE ENDIF ENDIF d2_index = 0 WHILE d2_index < d2_num_of_packages IF NOT IS_CAR_DEAD d2_gang_bikes[d2_index] FREEZE_CAR_POSITION d2_gang_bikes[d2_index] FALSE ENDIF d2_index++ ENDWHILE d2_cutscene_skipped = 1 d2_player_given_mission_brief = 0 SKIP_CUTSCENE_START SET_FIXED_CAMERA_POSITION -1808.39 374.18 17.98 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1813.41 376.31 17.32 JUMP_CUT IF NOT IS_CHAR_DEAD d2_gang_bikers[0] AND NOT IS_CAR_DEAD d2_gang_bikes[0] TASK_ENTER_CAR_AS_DRIVER d2_gang_bikers[0] d2_gang_bikes[0] -1 ENDIF LVAR_INT d2_all_bikers_on_bikes d2_all_bikers_on_bikes = 0 WHILE NOT d2_all_bikers_on_bikes = 1 AND NOT IS_CHAR_DEAD d2_gang_bikers[0] WAIT 0 IF NOT IS_CHAR_DEAD d2_gang_bikers[0] AND NOT IS_CAR_DEAD d2_gang_bikes[0] IF IS_CHAR_IN_CAR d2_gang_bikers[0] d2_gang_bikes[0] d2_all_bikers_on_bikes = 1 ENDIF ENDIF ENDWHILE WAIT 1000 SWITCH_ROADS_BACK_TO_ORIGINAL -2014.82 181.4 -13.0 -1614.82 581.4 47.0 SET_FIXED_CAMERA_POSITION -1832.36 380.48 18.71 0.0 0.0 0.0 IF NOT IS_CAR_DEAD d2_gang_bikes[0] POINT_CAMERA_AT_CAR d2_gang_bikes[0] FIXED JUMP_CUT IF NOT IS_CHAR_DEAD d2_gang_bikers[0] AND DOES_OBJECT_EXIST d2_packages[0] IF IS_CHAR_HOLDING_OBJECT d2_gang_bikers[0] d2_packages[0] DROP_OBJECT d2_gang_bikers[0] FALSE ENDIF ATTACH_OBJECT_TO_CAR d2_packages[0] d2_gang_bikes[0] 0.0 -0.9 0.5 0.0 0.0 0.0 d2_package_attach_state[0] = d2_attached_to_bike ENDIF ENDIF IF NOT IS_CAR_DEAD d2_gang_bikes[1] AND NOT IS_CHAR_DEAD d2_gang_bikers[1] TASK_CAR_DRIVE_TO_COORD d2_gang_bikers[1] d2_gang_bikes[1] -1854.74 533.22 33.12 d2_bike_speed[1] MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ENDIF WAIT 150 IF NOT IS_CAR_DEAD d2_gang_bikes[2] AND NOT IS_CHAR_DEAD d2_gang_bikers[2] TASK_CAR_DRIVE_TO_COORD d2_gang_bikers[2] d2_gang_bikes[2] -1854.74 533.22 33.12 d2_bike_speed[2] MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ENDIF WAIT 150 IF NOT IS_CAR_DEAD d2_gang_bikes[0] AND NOT IS_CHAR_DEAD d2_gang_bikers[0] TASK_CAR_DRIVE_TO_COORD d2_gang_bikers[0] d2_gang_bikes[0] -1854.74 533.22 33.12 d2_bike_speed[0] MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ENDIF WAIT 100 IF NOT IS_CAR_DEAD d2_gang_bikes[3] AND NOT IS_CHAR_DEAD d2_gang_bikers[3] TASK_CAR_DRIVE_TO_COORD d2_gang_bikers[3] d2_gang_bikes[3] -1854.74 533.22 33.12 d2_bike_speed[3] MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ENDIF WAIT 7000 IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -1820.72 382.73 16.04 ELSE SET_CHAR_COORDINATES scplayer -1820.72 382.73 16.04 ENDIF SET_CHAR_HEADING scplayer 326.45 IF NOT IS_CAR_DEAD d2_player_bike TASK_ENTER_CAR_AS_DRIVER scplayer d2_player_bike -1 ENDIF // show player running to bike // SET_FIXED_CAMERA_POSITION -1818.15 380.66 17.06 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -1818.74 383.39 16.9 JUMP_CUT SET_FIXED_CAMERA_POSITION -1818.1 380.01 16.8 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -1818.72 382.74 16.9 JUMP_CUT POINT_CAMERA_AT_CAR d2_player_bike FIXED JUMP_CUT TIMERB = 0 WHILE TIMERB < 4000 WAIT 0 IF TIMERB > 0 AND NOT d2_player_given_mission_brief = 1 PRINT_NOW ( DRV3_2 ) 10000 0 d2_player_given_mission_brief = 1 ENDIF ENDWHILE GOSUB d2_start_bike_chase d2_cutscene_skipped = 0 SKIP_CUTSCENE_END IF d2_cutscene_skipped = 1 // if cutscene skipped, set conditions to those at the end of the cutscene SWITCH_ROADS_BACK_TO_ORIGINAL -2014.82 181.4 -13.0 -1614.82 581.4 47.0 IF NOT IS_CHAR_DEAD d2_gang_bikers[0] AND NOT IS_CAR_DEAD d2_gang_bikes[0] IF NOT IS_CHAR_IN_CAR d2_gang_bikers[0] d2_gang_bikes[0] WARP_CHAR_INTO_CAR d2_gang_bikers[0] d2_gang_bikes[0] ENDIF IF DOES_OBJECT_EXIST d2_packages[0] IF NOT IS_OBJECT_ATTACHED d2_packages[0] IF IS_CHAR_HOLDING_OBJECT d2_gang_bikers[0] d2_packages[0] DROP_OBJECT d2_gang_bikers[0] FALSE ENDIF ATTACH_OBJECT_TO_CAR d2_packages[0] d2_gang_bikes[0] 0.0 -0.9 0.5 0.0 0.0 0.0 d2_package_attach_state[0] = d2_attached_to_bike ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD d2_gang_bikes[0] AND NOT IS_CHAR_DEAD d2_gang_bikers[0] SET_CAR_COORDINATES d2_gang_bikes[0] -1894.59 582.43 34.56 ENDIF IF NOT IS_CAR_DEAD d2_gang_bikes[1] AND NOT IS_CHAR_DEAD d2_gang_bikers[1] SET_CAR_COORDINATES d2_gang_bikes[1] -1893.56 574.34 34.55 ENDIF IF NOT IS_CAR_DEAD d2_gang_bikes[2] AND NOT IS_CHAR_DEAD d2_gang_bikers[2] SET_CAR_COORDINATES d2_gang_bikes[2] -1899.96 581.25 34.56 ENDIF IF NOT IS_CAR_DEAD d2_gang_bikes[3] AND NOT IS_CHAR_DEAD d2_gang_bikers[3] SET_CAR_COORDINATES d2_gang_bikes[3] -1898.95 574.08 34.56 ENDIF IF NOT IS_CAR_DEAD d2_player_bike IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -1819.01 386.28 6.58 ENDIF WARP_CHAR_INTO_CAR scplayer d2_player_bike ENDIF GOSUB d2_start_bike_chase IF NOT d2_player_given_mission_brief = 1 PRINT_NOW ( DRV3_2 ) 10000 0 ENDIF ENDIF d2_index = 0 WHILE d2_index < d2_num_of_packages IF DOES_OBJECT_EXIST d2_packages[d2_index] ADD_BLIP_FOR_OBJECT d2_packages[d2_index] d2_package_blips[d2_index] CHANGE_BLIP_COLOUR d2_package_blips[d2_index] RED ENDIF d2_index++ ENDWHILE // reset ambushed van proofs IF NOT IS_CAR_DEAD d2_ambushed_van SET_CAR_PROOFS d2_ambushed_van FALSE FALSE FALSE FALSE FALSE ENDIF // reset biker and bike proofs d2_index = 0 WHILE d2_index < d2_num_of_packages IF NOT IS_CHAR_DEAD d2_gang_bikers[d2_index] SET_CHAR_PROOFS d2_gang_bikers[d2_index] FALSE FALSE FALSE FALSE FALSE ENDIF IF NOT IS_CAR_DEAD d2_gang_bikes[d2_index] SET_CAR_PROOFS d2_gang_bikes[d2_index] FALSE FALSE FALSE FALSE FALSE ENDIF d2_index++ ENDWHILE IF NOT IS_CAR_DEAD d2_player_bike SET_CAR_PROOFS d2_player_bike FALSE FALSE FALSE FALSE FALSE ENDIF // bikes are allowed to wander away from the player d2_index = 0 WHILE d2_index < d2_num_of_packages IF NOT IS_CAR_DEAD d2_gang_bikes[d2_index] SET_LOAD_COLLISION_FOR_CAR_FLAG d2_gang_bikes[d2_index] FALSE ENDIF d2_index++ ENDWHILE IF NOT IS_CAR_DEAD d2_player_bike SET_LOAD_COLLISION_FOR_CAR_FLAG d2_player_bike FALSE ENDIF IF NOT IS_CAR_DEAD d2_ambushed_van SET_LOAD_COLLISION_FOR_CAR_FLAG d2_ambushed_van FALSE ENDIF SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON CHECKPOINT_SAVE 99 RETURN // ***************************************************************** // Cutscene showing player arriving back with packages // ***************************************************************** d2_play_mission_passed_cutscene: SET_PLAYER_CONTROL player1 OFF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_AREA d2_player_dest_x d2_player_dest_y d2_player_dest_z 50.0 FALSE CLEAR_PRINTS HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SWITCH_WIDESCREEN ON LVAR_INT d2_final_cutscene_seq IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer d2_player_bike SET_CAR_COORDINATES d2_player_bike d2_player_dest_x d2_player_dest_y d2_player_dest_z SET_CAR_HEADING d2_player_bike 340.37 OPEN_SEQUENCE_TASK d2_final_cutscene_seq TASK_LEAVE_CAR -1 d2_player_bike TASK_GO_STRAIGHT_TO_COORD -1 -2625.96 1417.82 6.15 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK d2_final_cutscene_seq PERFORM_SEQUENCE_TASK scplayer d2_final_cutscene_seq CLEAR_SEQUENCE_TASK d2_final_cutscene_seq ELSE DELETE_CAR d2_player_bike SET_CHAR_COORDINATES scplayer d2_player_dest_x d2_player_dest_y d2_player_dest_z SET_CHAR_HEADING scplayer 10.0 TASK_GO_STRAIGHT_TO_COORD scplayer -2625.96 1417.82 6.15 PEDMOVE_WALK -1 ENDIF SET_FIXED_CAMERA_POSITION -2626.02 1403.8 6.95 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2624.56 1406.19 7.03 JUMP_CUT DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE d2_cutscene_skipped = 1 SKIP_CUTSCENE_START WAIT 2000 d2_cutscene_skipped = 0 SKIP_CUTSCENE_END IF d2_cutscene_skipped = 1 ENDIF IF NOT d2_cutscene_skipped = 1 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -2624.28 1410.93 6.15 SET_CHAR_HEADING scplayer 194.52 SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT IF NOT d2_cutscene_skipped = 1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF SET_PLAYER_CONTROL player1 ON RETURN // ***************************************************************** // Cutscene showing biker escaping into garage // ***************************************************************** d2_play_mission_failed_cutscene: SET_PLAYER_CONTROL player1 OFF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE MARK_CAR_AS_NO_LONGER_NEEDED d2_player_bike CLEAR_AREA d2_bike_dest_x d2_bike_dest_y d2_bike_dest_z 100.0 FALSE d2_index = 0 WHILE d2_index < d2_num_of_packages IF NOT d2_index = d2_package_at_dest_index DELETE_CHAR d2_gang_bikers[d2_index] IF NOT IS_CAR_DEAD d2_gang_bikes[d2_index] IF NOT IS_CHAR_IN_CAR scplayer d2_gang_bikes[d2_index] DELETE_CAR d2_gang_bikes[d2_index] ENDIF ELSE DELETE_CAR d2_gang_bikes[d2_index] ENDIF DELETE_OBJECT d2_packages[d2_index] ENDIF d2_index++ ENDWHILE GET_AREA_VISIBLE d2_current_area_visible LVAR_FLOAT d2_ground_z d2_water_height GET_CHAR_COORDINATES scplayer d2_player_x d2_player_y d2_player_z GET_CHAR_HEADING scplayer d2_player_heading GET_WATER_HEIGHT_AT_COORDS d2_player_x d2_player_y FALSE d2_water_height GET_GROUND_Z_FOR_3D_COORD d2_player_x d2_player_y d2_player_z d2_ground_z IF d2_water_height > d2_ground_z d2_ground_z = d2_water_height ENDIF SET_CHAR_COORDINATES scplayer -2762.82 98.13 -100.0 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer d2_player_bike SET_CAR_HEADING d2_player_bike 354.04 ENDIF SET_AREA_VISIBLE 0 REQUEST_COLLISION d2_bike_dest_x d2_bike_dest_y LOAD_SCENE d2_bike_dest_x d2_bike_dest_y d2_bike_dest_z CLEAR_HELP SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION -2736.43 87.02 4.27 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2735.57 86.18 4.27 JUMP_CUT OPEN_GARAGE Tbon IF NOT IS_CHAR_DEAD d2_gang_bikers[d2_package_at_dest_index] AND NOT IS_CAR_DEAD d2_gang_bikes[d2_package_at_dest_index] SET_CAR_COORDINATES d2_gang_bikes[d2_package_at_dest_index] -2720.92 83.65 3.69 SET_CAR_HEADING d2_gang_bikes[d2_package_at_dest_index] 85.84 IF NOT IS_CHAR_IN_CAR d2_gang_bikers[d2_package_at_dest_index] d2_gang_bikes[d2_package_at_dest_index] IF IS_CHAR_IN_ANY_CAR d2_gang_bikers[d2_package_at_dest_index] WARP_CHAR_FROM_CAR_TO_COORD d2_gang_bikers[d2_package_at_dest_index] -2720.92 83.65 -6.31 ENDIF WARP_CHAR_INTO_CAR d2_gang_bikers[d2_package_at_dest_index] d2_gang_bikes[d2_package_at_dest_index] ENDIF // make sure bike follows nodes and doesn't drive into wall to get to point SET_CAR_STRAIGHT_LINE_DISTANCE d2_gang_bikes[d2_package_at_dest_index] 2 TASK_CAR_DRIVE_TO_COORD d2_gang_bikers[d2_package_at_dest_index] d2_gang_bikes[d2_package_at_dest_index] -2730.11 65.22 3.91 10.0 MODE_NORMAL 0 DRIVINGMODE_AVOIDCARS SET_CAR_FORWARD_SPEED d2_gang_bikes[d2_package_at_dest_index] 7.0 ENDIF DELETE_CAR d2_ambushed_van DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE d2_cutscene_skipped = 1 SKIP_CUTSCENE_START IF NOT IS_CHAR_DEAD d2_gang_bikers[d2_package_at_dest_index] GET_CHAR_COORDINATES d2_gang_bikers[d2_package_at_dest_index] d2_bike_x d2_bike_y d2_bike_z ENDIF WHILE d2_bike_y > 71.36 WAIT 0 IF NOT IS_CHAR_DEAD d2_gang_bikers[d2_package_at_dest_index] GET_CHAR_COORDINATES d2_gang_bikers[d2_package_at_dest_index] d2_bike_x d2_bike_y d2_bike_z ELSE d2_bike_y = 71.36 ENDIF ENDWHILE CLOSE_GARAGE Tbon WHILE NOT IS_GARAGE_CLOSED Tbon WAIT 0 ENDWHILE WAIT 1000 d2_cutscene_skipped = 0 SKIP_CUTSCENE_END DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DELETE_CHAR d2_gang_bikers[d2_package_at_dest_index] DELETE_CAR d2_gang_bikes[d2_package_at_dest_index] IF d2_cutscene_skipped = 1 IF NOT IS_GARAGE_CLOSED Tbon CLOSE_GARAGE Tbon WHILE NOT IS_GARAGE_CLOSED Tbon WAIT 0 ENDWHILE ENDIF ENDIF SET_AREA_VISIBLE d2_current_area_visible REQUEST_COLLISION d2_player_x d2_player_y LOAD_SCENE d2_player_x d2_player_y d2_ground_z SET_CHAR_COORDINATES scplayer d2_player_x d2_player_y d2_ground_z IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer d2_player_bike SET_CAR_HEADING d2_player_bike d2_player_heading ELSE SET_CHAR_HEADING scplayer d2_player_heading ENDIF SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN // ******************************** Mission driv2 failed ********************************** mission_driv2_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // ******************************** Mission driv2 passed ********************************** mission_driv2_passed: flag_synd_mission_counter++ REGISTER_MISSION_PASSED ( FAR_2 ) PLAYER_MADE_PROGRESS 1 PRINT_WITH_NUMBER_BIG ( M_PASSS ) 5000 5000 1 //"Mission Passed!" ADD_SCORE player1 5000 AWARD_PLAYER_MISSION_RESPECT 20 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 RETURN // *********************************** Mission cleanup ************************************* mission_cleanup_driv2: MARK_MODEL_AS_NO_LONGER_NEEDED BOXVILLE MARK_MODEL_AS_NO_LONGER_NEEDED FCR900 MARK_MODEL_AS_NO_LONGER_NEEDED kmb_packet MARK_MODEL_AS_NO_LONGER_NEEDED WMYCR MARK_MODEL_AS_NO_LONGER_NEEDED HMYCR MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI REMOVE_ANIMATION BIKES REMOVE_ANIMATION MISC d2_index = 0 WHILE d2_index < d2_num_of_packages REMOVE_BLIP d2_package_blips[d2_index] IF DOES_OBJECT_EXIST d2_packages[d2_index] IF NOT IS_OBJECT_ON_SCREEN d2_packages[d2_index] DELETE_OBJECT d2_packages[d2_index] ENDIF ENDIF d2_index++ ENDWHILE //REMOVE_BLIP d2_player_bike_blip REMOVE_BLIP d2_ambushed_van_blip REMOVE_BLIP d2_player_dest_blip // reset car proofs IF NOT IS_CAR_DEAD d2_ambushed_van SET_CAR_PROOFS d2_ambushed_van FALSE FALSE FALSE FALSE FALSE ENDIF d2_index = 0 WHILE d2_index < d2_num_of_packages IF NOT IS_CAR_DEAD d2_gang_bikes[d2_index] SET_CAR_PROOFS d2_gang_bikes[d2_index] FALSE FALSE FALSE FALSE FALSE FREEZE_CAR_POSITION d2_gang_bikes[d2_index] FALSE ENDIF d2_index++ ENDWHILE IF NOT IS_CAR_DEAD d2_player_bike SET_CAR_PROOFS d2_player_bike FALSE FALSE FALSE FALSE FALSE ENDIF REMOVE_DECISION_MAKER d2_gang_biker_decisions CLEAR_SEQUENCE_TASK d2_final_cutscene_seq CLEAR_HELP //SWITCH_ROADS_BACK_TO_ORIGINAL -2130.87 903.39 45.48 -2013.14 959.18 80.03 SWITCH_ROADS_BACK_TO_ORIGINAL -2014.82 181.4 -13.0 -1614.82 581.4 47.0 IF IS_PLAYER_PLAYING player1 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE ENDIF GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************** "THE HOSTAGE" ***************************** // ******************************************** DRIVER 3 *********************************** // ***************************************************************************************** // ***************************************************************************************** { SCRIPT_NAME driv3 // Mission start stuff GOSUB mission_start_driv3 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_driv3 ENDIF GOSUB mission_cleanup_driv3 MISSION_END // ***************************** // VARIABLES // ***************************** // VEHICLES LVAR_INT get_away_car LVAR_INT car_van_with_buddy_inside LVAR_INT car_escorts_farlie3[2] LVAR_INT car_players_car_farlie3 LVAR_INT passenger_seats_farlie3 // OBJECTS //LVAR_INT invisible_object_farlie3 // CHARACTERS LVAR_INT char_toreno_farlie3 LVAR_INT van_driver_farlie3 LVAR_INT char_baddies_farlie3[9] LVAR_INT char_escorts_farlie3[2] LVAR_INT char_tbone_farlie3 // GROUPS LVAR_INT random_location_number LVAR_INT pickup_gun_next_to_guard //COORDS LVAR_FLOAT coord_random_location_x coord_random_location_y coord_random_location_z LVAR_FLOAT coord_base_x coord_base_y coord_base_z LVAR_FLOAT coord_van_end_point_x coord_van_end_point_y coord_van_end_point_z LVAR_FLOAT coord_van_x coord_van_y coord_van_z LVAR_FLOAT coord_current_players_X_driv3 coord_current_players_y_driv3 coord_current_players_z_driv3 LVAR_FLOAT coord_airport_x_driv3 coord_airport_y_driv3 coord_airport_z_driv3 LVAR_FLOAT offset_toreno_farlie3_x offset_toreno_farlie3_y offset_toreno_farlie3_z LVAR_FLOAT coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z LVAR_FLOAT coord_spray_shop_x_farlie3 coord_spray_shop_y_farlie3 coord_spray_shop_z_farlie3 LVAR_FLOAT cops_heading_farlie3 LVAR_FLOAT van_heading_farlie3 LVAR_FLOAT heading_toreno // Decision makers LVAR_INT dm_goons_farlie3 LVAR_INT dm_buddies_farlie3 //CAMERAS LVAR_FLOAT float_distance_player_girl //VAR_INT int_distance_player_girl //FLAGS // LVAR_INT flag_get_to_payphone LVAR_INT flag_get_to_location_of_girl LVAR_INT flag_shoot_correct_container LVAR_INT flag_get_back_to_base LVAR_INT flag_mission_passed_farlie3 LVAR_INT flag_mission_failed_farlie3 VAR_INT flag_phone_dialog_driv3 LVAR_INT flag_torch_truck_farlie3 LVAR_INT flag_van_drives_off LVAR_INT flag_has_truck_been_destroyed_farlie3 LVAR_INT flag_player_away_from_truck_farlie3 LVAR_INT flag_goons_get_out LVAR_INT flag_initialise_farlie3 LVAR_INT flag_reached_airport_exit LVAR_INT flag_cops_see_cocaine LVAR_INT flag_converstion_going_on_farlie3 LVAR_INT flag_battery_power_comments LVAR_INT flag_has_player_got_wanted_level LVAR_INT flag_display_flee_warning_farlie3 LVAR_INT play_audio_flag_farlie3 LVAR_INT flag_cops_go_after_player LVAR_INT flag_player_starts_conversation_with_toreno LVAR_INT flag_is_tbone_in_group_farlie3 LVAR_INT flag_is_toreno_in_group_farlie3 LVAR_INT flag_toreno_comment LVAR_INT flag_is_player_in_car LVAR_INT max_number_in_players_group //BLIPS LVAR_INT blip_players_car LVAR_INT blip_van_farlie3 LVAR_INT blip_airport_farlie3 LVAR_INT blip_van_driver LVAR_INT blip_escorts_farlie3[2] LVAR_INT blip_base LVAR_INT blip_torneo LVAR_INT blip_tbone LVAR_INT blip_airport_exit LVAR_INT blip_baddies_passengers[3] LVAR_INT blip_destination_farlie3 LVAR_INT blip_paint_and_spray_farlie3 //COUNTER // VAR_INT timer_countdown_farlie3 // Calculation LVARiables LVAR_FLOAT float_temp_calculation_a_driv3 float_temp_calculation_b_driv3 LVAR_INT index_farlie3 index_dialogue_farlie3 // SOUND VARIABLES LVAR_INT farlie3_audio[40] VAR_TEXT_LABEL $farlie3_text[40] // START MISSION ***************************** mission_start_driv3: disable_mod_garage = 1 flag_player_on_mission = 1 REGISTER_MISSION_GIVEN WAIT 0 // **************************************************************************** // INITIALISE VARIABLES SET_PLAYER_CONTROL Player1 OFF DO_FADE 1000 FADE_OUT SET_FADING_COLOUR 0 0 0 WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_MISSION_TEXT FARLIE3 SET_AREA_VISIBLE 3 LOAD_CUTSCENE FARL_3A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 //LVAR_INT stored_flying_skill //GET_INT_STAT FLYING_SKILL stored_flying_skill //SET_INT_STAT FLYING_SKILL 300 ADD_BLIP_FOR_COORD -2071.0 209.0 35.0 blip_destination_farlie3 REMOVE_BLIP blip_destination_farlie3 coord_spray_shop_x_farlie3 = -1906.656 coord_spray_shop_y_farlie3 = 283.016 coord_spray_shop_z_farlie3 = 41.0 flag_has_player_got_wanted_level = 0 flag_display_flee_warning_farlie3 = 0 play_audio_flag_farlie3 = 0 index_dialogue_farlie3 = 0 flag_cops_go_after_player = 0 flag_is_player_in_car = 0 flag_player_starts_conversation_with_toreno = 0 coord_base_x = -2615.0 coord_base_y = 1397.0 coord_base_z = 6.0 flag_cops_see_cocaine = 0 int_distance_player_girl = 0 flag_is_farlie3_running = 1 // a flag that lets christians airport ped brains know the mission is running flag_battery_power_comments = 0 coord_airport_x_driv3 = -1550.4158 coord_airport_y_driv3 = -436.4436 coord_airport_z_driv3 = 6.9871 timer_countdown_farlie3 = 0 offset_toreno_farlie3_x = 0.0 offset_toreno_farlie3_y = -20.0 offset_toreno_farlie3_z = 0.0 flag_reached_airport_exit = 0 flag_converstion_going_on_farlie3 = 0 flag_is_tbone_in_group_farlie3 = 0 flag_is_toreno_in_group_farlie3 = 0 //FLAGS // flag_get_to_payphone = 1 flag_get_to_location_of_girl = 1 flag_shoot_correct_container = 0 flag_get_back_to_base = 0 flag_mission_passed_farlie3 = 0 flag_mission_failed_farlie3 = 0 flag_phone_dialog_driv3 = 0 flag_torch_truck_farlie3 = 0 flag_van_drives_off = 0 flag_goons_get_out = 0 flag_toreno_comment = 0 flag_initialise_farlie3 = 0 flag_has_truck_been_destroyed_farlie3 = 0 flag_player_away_from_truck_farlie3 = 0 // REMOVING SPRAYSHOP BLIPS IF DOES_BLIP_EXIST spray_shop[4] REMOVE_BLIP spray_shop[4] //Near Hub ENDIF CREATE_PICKUP_WITH_AMMO DESERT_EAGLE PICKUP_ON_STREET_SLOW 30 -1542.0222 -437.7364 5.9258 pickup_gun_next_to_guard // first batch of clues $farlie3_text[0] = &FAR3_CA // tbone HE CAN HEAR GULS $farlie3_text[1] = &FAR3_CB // tbone Mike can hear gulls! $farlie3_text[2] = &FAR3_DA // carl Gulls? Shit, could be anywhere in this town! $farlie3_text[3] = &FAR3_CC // He can hear heavy machinery! $farlie3_text[4] = &FAR3_DB // Gulls and heavy machinery? A building site, or a landfill? $farlie3_text[5] = &FAR3_EA //// There’s a building site in Doherty! farlie3_audio[0] = SOUND_FAR3_CA // tbone HE CAN HEAR GULS farlie3_audio[1] = SOUND_FAR3_CB // tbone Mike can hear gulls! farlie3_audio[2] = SOUND_FAR3_DA // carl Gulls? Shit, could be anywhere in this town! farlie3_audio[3] = SOUND_FAR3_CC // He can hear heavy machinery! farlie3_audio[4] = SOUND_FAR3_DB // Gulls and heavy machinery? A building site, or a landfill? farlie3_audio[5] = SOUND_FAR3_EA //// There’s a building site in Doherty! // second batch of clues $farlie3_text[6] = &FAR3_CF // he can hear a truck reversing $farlie3_text[7] = &FAR3_CD // He says it’s busy, like a freight depot or something. $farlie3_text[8] = &FAR3_DC // Freight? They must be down at the docks! $farlie3_text[9] = &FAR3_EB // Get to the docks in Easter Basin! farlie3_audio[6] = SOUND_FAR3_CF // he can hear a truck reversing farlie3_audio[7] = SOUND_FAR3_CD // He says it’s busy, like a freight depot or something. farlie3_audio[8] = SOUND_FAR3_DC // Freight? They must be down at the docks! farlie3_audio[9] = SOUND_FAR3_EB // Get to the docks in Easter Basin! // 3rd set of clues $farlie3_text[10] = &FAR3_CJ //Shit, he says they stopped, then he heard gunfire. $farlie3_text[11] = &FAR3_CK // He thinks they just shot there way through a security gate! $farlie3_text[12] = &FAR3_DD // CJ: They don’t have heavy security at the docks, $farlie3_text[13] = &FAR3_DE // CJ: But they do at the airport!! $farlie3_text[14] = &FAR3_EC // tbone get to the airport!! farlie3_audio[10] =SOUND_FAR3_CJ //Shit, he says they stopped, then he heard gunfire. farlie3_audio[11] =SOUND_FAR3_CK// He thinks they just shot there way through a security gate! farlie3_audio[12] =SOUND_FAR3_DD // CJ: They don’t have heavy security at the docks, farlie3_audio[13] =SOUND_FAR3_DE // CJ: But they do at the airport!! farlie3_audio[14] =SOUND_FAR3_EC // tbone get to the airport!! // arriving at the airport $farlie3_text[15] = &FAR3_HA //Theres teh gate! $farlie3_text[16] = &FAR3_HB //the dead security $farlie3_text[17] = &FAR3_HC //Keep your eyes peeled farlie3_audio[15] = SOUND_FAR3_HA//Theres teh gate! farlie3_audio[16] = SOUND_FAR3_HB//the dead security farlie3_audio[17] = SOUND_FAR3_HC//Keep your eyes peeled // instructions on how to use the signal reader $farlie3_text[18] = &FAR3_JA// ITS WORKING! $farlie3_text[19] = &FAR3_JB // Tag? What you talking about? $farlie3_text[20] = &FAR3_JC // After the last bit of trouble, Mike hid transponder in the white. $farlie3_text[21] = &FAR3_JD // We was going to follow it to the gang, but something must have fucked up $farlie3_text[22] = &FAR3_JE // and now we gotta use it to find that van and rescue Mike! $farlie3_text[23] = &FAR3_JF // How’s it work? $farlie3_text[24] = &FAR3_JG // Simple. Closer we get, the stronger the signal farlie3_audio[18] = SOUND_FAR3_JA //TITS WORKING! farlie3_audio[19] = SOUND_FAR3_JB // Tag? What you talking about? farlie3_audio[20] = SOUND_FAR3_JC // After the last bit of trouble, Mike hid transponder in the white. farlie3_audio[21] = SOUND_FAR3_JD // We was going to follow it to the gang, but something must have fucked up farlie3_audio[22] = SOUND_FAR3_JE // and now we gotta use it to find that van and rescue Mike! farlie3_audio[23] = SOUND_FAR3_JF // // How’s it work? farlie3_audio[24] = SOUND_FAR3_JG // Simple. Closer we get, the stronger the signal // bANTER BACK TO THE PLEASURE DOMES $farlie3_text[25] = &FAR3_MA //How long you been working for Jizzy, I haven’t seen you before. $farlie3_text[26] = &FAR3_MB //Just got into town last week, done a couple of jobs here and there. $farlie3_text[27] = &FAR3_MC //Just got into town, eh? Where were you before that? $farlie3_text[28] = &FAR3_MD //What is this? $farlie3_text[29] = &FAR3_ME //Just answer the fucking question. $farlie3_text[30] = &FAR3_MF //Ok, dudes, chill. I been in Los Santos, with my family, ok? $farlie3_text[31] = &FAR3_MG //Gimme his wallet. $farlie3_text[32] = &FAR3_MH //What? Hey, get off! $farlie3_text[33] = &FAR3_MJ //Quit struggling and concentrate on the road! $farlie3_text[34] = &FAR3_MK //Here y’go, Mike. $farlie3_text[35] = &FAR3_ML //Carl Johnson, eh. $farlie3_text[36] = &FAR3_MM //Ok. I’ve seen enough. Here. $farlie3_text[37] = &FAR3_MN //There was a twenty spot in there, it batter still be there, man. $farlie3_text[38] = &FAR3_MO //Shut the fuck up. farlie3_audio[25] = SOUND_FAR3_MA //How long you been working for Jizzy, I haven’t seen you before. farlie3_audio[26] = SOUND_FAR3_MB //Just got into town last week, done a couple of jobs here and there. farlie3_audio[27] = SOUND_FAR3_MC //Just got into town, eh? Where were you before that? farlie3_audio[28] = SOUND_FAR3_MD //What is this? farlie3_audio[29] = SOUND_FAR3_ME //Just answer the fucking question. farlie3_audio[30] = SOUND_FAR3_MF //Ok, dudes, chill. I been in Los Santos, with my family, ok? farlie3_audio[31] = SOUND_FAR3_MG //Gimme his wallet. farlie3_audio[32] = SOUND_FAR3_MH //What? Hey, get off! farlie3_audio[33] = SOUND_FAR3_MJ //Quit struggling and concentrate on the road! farlie3_audio[34] = SOUND_FAR3_MK //Here y’go, Mike. farlie3_audio[35] = SOUND_FAR3_ML //Carl Johnson, eh. farlie3_audio[36] = SOUND_FAR3_MM //Ok. I’ve seen enough. Here. farlie3_audio[37] = SOUND_FAR3_MN //There was a twenty spot in there, it batter still be there, man. farlie3_audio[38] = SOUND_FAR3_MO //Shut the fuck up. LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH dm_goons_farlie3 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH dm_buddies_farlie3 /* ************** Mission Start ********************************* */ // ******************************************** REQUEST MODELS ********************************** REQUEST_MODEL micro_uzi REQUEST_MODEL BURRITO LOAD_SPECIAL_CHARACTER 2 tbone LOAD_ALL_MODELS_NOW WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 2 OR NOT HAS_MODEL_LOADED micro_uzi OR NOT HAS_MODEL_LOADED BURRITO WAIT 0 ENDWHILE SET_CHAR_HEADING scplayer 214.0 SET_CAMERA_BEHIND_PLAYER // ******************************************** START MAIN LOOP ********************************** main_loop: WAIT 0 // get_to_the_girl IF flag_get_to_location_of_girl = 1 GOSUB get_to_location_of_girl ENDIF // shoot correct container IF flag_shoot_correct_container = 1 GOSUB shoot_correct_container ENDIF // police are coming. Must torch the cocaine truck IF flag_torch_truck_farlie3 = 1 GOSUB torch_truck_farlie3 ENDIF IF flag_get_back_to_base = 1 GOSUB get_back_to_base ENDIF IF flag_mission_passed_farlie3 = 1 GOTO mission_passed_driv3 ENDIF IF flag_mission_failed_farlie3 = 1 GOTO mission_failed_driv3 ENDIF GOTO main_loop // ************************************ Sub Functions ***************************************** // ***************************** // ******* get_to_location_of_girl // ***************************** get_to_location_of_girl: GENERATE_RANDOM_INT_IN_RANGE 1 4 random_location_number //random_location_number = 3 //Hangers IF random_location_number = 1 // int variables coord_random_location_x = -1303.7601 coord_random_location_y = -615.4308 coord_random_location_z = 13.1485 coord_van_end_point_x = -1271.8324 coord_van_end_point_y = -180.8179 coord_van_end_point_z = 13.1443 van_heading_farlie3 = 0.0 ENDIF // behind termainal IF random_location_number = 2 coord_random_location_x = -1216.2330 coord_random_location_y = 51.3660 coord_random_location_z = 13.0 // van_heading_farlie3 = 260.0 /* coord_van_end_point_x = -1283.9607 coord_van_end_point_y = -156.9417 coord_van_end_point_z = 8.1484 */ coord_van_end_point_x = -1288.8324 coord_van_end_point_y = -159.8179 coord_van_end_point_z = 13.1443 van_heading_farlie3 = 120.0 ENDIF // End of runway IF random_location_number = 3 coord_random_location_x = -1125.3193 coord_random_location_y = 368.3488 coord_random_location_z = 13.1329 // van_heading_farlie3 = 0.0 /* coord_van_end_point_x = -1384.2681 coord_van_end_point_y = 10.4847 coord_van_end_point_z = 8.1329 */ coord_van_end_point_x = -1319.8324 coord_van_end_point_y = -96.8179 coord_van_end_point_z = 13.8443 van_heading_farlie3 = 140.0 ENDIF /* //AMMUNATION IF location_number = 3 coord_random_location_x = coord_random_location_y = coord_random_location_z = ENDIF // CAR CRUSHERS IF location_number = 4 coord_random_location_x = coord_random_location_y = coord_random_location_z = ENDIF */ // ADD_BLIP_FOR_COORD coord_random_location_x coord_random_location_y coord_random_location_z blip_van_farlie3 //temp //GET_CHAR_COORDINATES scplayer coord_players_X_driv3 coord_players_y_driv3 coord_players_z_driv3 //GET_DISTANCE_BETWEEN_COORDS_3D coord_players_X_driv3 coord_players_y_driv3 coord_players_z_driv3 coord_random_location_x coord_random_location_y coord_random_location_z distance_player_girl REQUEST_MODEL PREMIER WHILE NOT HAS_MODEL_LOADED PREMIER WAIT 0 ENDWHILE CREATE_CAR PREMIER -2620.0 1398.0 6.5 car_players_car_farlie3 SET_CAR_HEADING car_players_car_farlie3 204.0 ADD_BLIP_FOR_CAR car_players_car_farlie3 blip_players_car SET_BLIP_AS_FRIENDLY blip_players_car TRUE SET_CAR_HEALTH car_players_car_farlie3 2500 // MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 2 FIND_MAX_NUMBER_OF_GROUP_MEMBERS max_number_in_players_group SET_SCRIPT_LIMIT_TO_GANG_SIZE max_number_in_players_group //GET_INT_STAT CYCLE_SKILL stat_read_skill_temp MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 2 IF IS_PLAYER_PLAYING player1 // SHUT_CHAR_UP scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF // CREATE_CHAR PEDTYPE_MISSION2 wmymoun -2623.64 1403.9 6.2 char_tbone_farlie3 CREATE_CHAR PEDTYPE_MISSION2 SPECIAL02 -2623.64 1403.9 6.2 char_tbone_farlie3 SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR char_tbone_farlie3 FALSE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_buddies_farlie3 EVENT_ACQUAINTANCE_PED_HATE TASK_SIMPLE_GANG_DRIVEBY 0.0 100.0 0.0 0.0 TRUE FALSE SET_CHAR_ACCURACY char_tbone_farlie3 95 SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH char_tbone_farlie3 TRUE TASK_ENTER_CAR_AS_PASSENGER char_tbone_farlie3 car_players_car_farlie3 -1 0 SET_CHAR_DROWNS_IN_WATER char_tbone_farlie3 TRUE SET_CHAR_RELATIONSHIP char_tbone_farlie3 ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP char_tbone_farlie3 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 SET_CHAR_DECISION_MAKER char_tbone_farlie3 dm_buddies_farlie3 GIVE_WEAPON_TO_CHAR char_tbone_farlie3 WEAPONTYPE_MICRO_UZI 1000 SET_CHAR_NEVER_TARGETTED char_tbone_farlie3 TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER char_tbone_farlie3 TRUE LOAD_SCENE_IN_DIRECTION -2623.64 1403.9 6.2 214.0 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT timer_countdown_farlie3 += 330000 DISPLAY_ONSCREEN_TIMER_WITH_STRING timer_countdown_farlie3 TIMER_DOWN ( dri2_9 ) // The Timer CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FAR3_FA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW FAR3_FA 10000 1 // Gotta make this qick, Mike hasn’t got much battery time left! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT FAR3_FA PRINT_NOW dri2_1 5000 1 REQUEST_MODEL dnb1 REQUEST_MODEL dnb2 REQUEST_MODEL dnb3 WHILE NOT HAS_MODEL_LOADED dnb1 OR NOT HAS_MODEL_LOADED dnb2 OR NOT HAS_MODEL_LOADED dnb3 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD car_players_car_farlie3 WHILE NOT IS_CHAR_IN_CAR scplayer car_players_car_farlie3 WAIT 0 IF IS_CHAR_DEAD char_tbone_farlie3 flag_get_to_location_of_girl = 0 flag_shoot_correct_container = 0 flag_torch_truck_farlie3 = 0 flag_get_back_to_base = 0 flag_mission_passed_farlie3 = 0 flag_mission_failed_farlie3 = 1 PRINT_NOW dri2_31 5000 1 // tbone is dead RETURN ENDIF IF IS_CAR_DEAD car_players_car_farlie3 GOTO exit_get_in_car_loop_farlie3 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S flag_get_to_location_of_girl = 0 flag_shoot_correct_container = 0 flag_torch_truck_farlie3 = 0 flag_get_back_to_base = 0 flag_mission_passed_farlie3 = 1 flag_mission_failed_farlie3 = 0 RETURN ENDIF // if player runs out of time IF timer_countdown_farlie3 <= 0 flag_get_to_location_of_girl = 0 flag_mission_failed_farlie3 = 1 // play a sound of an explosion over the phone CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FAR3_FD WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW FAR3_FD 10000 1 // shit, the phones gone dead! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE // CLEAR_THIS_PRINT FAR3_FD // PRINT_NOW ( FAR3_FD ) 5000 1 // shit, the phones gone dead! RETURN ENDIF ENDWHILE ENDIF exit_get_in_car_loop_farlie3: IF NOT IS_CHAR_DEAD char_tbone_farlie3 CLEAR_THIS_PRINT dri2_1 IF NOT IS_GROUP_MEMBER char_tbone_farlie3 Players_Group SET_GROUP_MEMBER Players_Group char_tbone_farlie3 ENDIF ENDIF REMOVE_BLIP blip_players_car MARK_MODEL_AS_NO_LONGER_NEEDED PREMIER TIMERB = 0 ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD coord_airport_x_driv3 coord_airport_y_driv3 coord_airport_z_driv3 RADAR_SPRITE_MAP_HERE blip_airport_farlie3 REMOVE_BLIP blip_airport_farlie3 // flag_phone_dialog_driv3 = 8 // PRINT_NOW ( dri2_6 ) 5000 1 //FIND THE GIRL BEFORE THE BOMB GOES OFF // Wait until player is in visinity of girls location IF NOT IS_CHAR_DEAD scplayer WHILE NOT LOCATE_CHAR_ANY_MEANS_3D scplayer coord_airport_x_driv3 coord_airport_y_driv3 coord_airport_z_driv3 35.0 35.0 35.0 FALSE // WHILE NOT LOCATE_CHAR_ANY_MEANS_3D scplayer coord_airport_x_driv3 coord_airport_y_driv3 coord_airport_z_driv3 35.0 35.0 35.0 FALSE WAIT 0 // VIEW_INTEGER_VARIABLE index_dialogue_farlie3 index_dialogue_farlie3 GOSUB tbone_checks_farlie3 IF flag_mission_failed_farlie3 = 1 RETURN ENDIF IF flag_is_tbone_in_group_farlie3 = 0 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer car_players_car_farlie3 ENDIF // first batch of clues IF flag_phone_dialog_driv3 >= 0 AND flag_phone_dialog_driv3 < 6 GOSUB load_and_play_audio_farlie3 ENDIF IF flag_phone_dialog_driv3 = 6 IF TIMERA > 15000 // Just hang in there, Mike, help is on the way! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FAR3_GC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW FAR3_GC 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT FAR3_GC TIMERA=0 flag_phone_dialog_driv3 = 7 flag_converstion_going_on_farlie3 = 0 ENDIF ENDIF //next set of clues. telling player to get to the harbour IF flag_phone_dialog_driv3 = 7 IF NOT IS_CHAR_DEAD char_tbone_farlie3 IF IS_CHAR_IN_ZONE scplayer DOH AND IS_CHAR_IN_ZONE char_tbone_farlie3 DOH flag_phone_dialog_driv3 = 8 index_dialogue_farlie3 = 6 // He says it’s busy, like a freight depot or something. ENDIF ENDIF ENDIF // SECOND batch of clues IF flag_phone_dialog_driv3 >= 8 AND flag_phone_dialog_driv3 < 12 GOSUB load_and_play_audio_farlie3 ENDIF IF flag_phone_dialog_driv3 = 12 IF TIMERA > 10000 // PRINT_NOW ( FAR3_GB ) 5000 1 // We’ll be there any minute, Mike! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FAR3_GB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW FAR3_GB 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT FAR3_GB TIMERA=0 flag_phone_dialog_driv3 = 13 flag_converstion_going_on_farlie3 = 0 ENDIF ENDIF //next set of clues. telling player to get to the airport IF flag_phone_dialog_driv3 = 13 IF NOT IS_CHAR_DEAD char_tbone_farlie3 IF IS_CHAR_IN_ZONE scplayer EASB AND IS_CHAR_IN_ZONE char_tbone_farlie3 EASB flag_phone_dialog_driv3 = 14 index_dialogue_farlie3 = 10 // He says it’s busy, like a freight depot or something. TIMERA=0 ENDIF ENDIF ENDIF // third batch of clues IF flag_phone_dialog_driv3 >= 14 AND flag_phone_dialog_driv3 < 19 GOSUB load_and_play_audio_farlie3 ENDIF IF flag_phone_dialog_driv3 = 19 IF TIMERA > 8000 TIMERA=0 flag_phone_dialog_driv3 = 20 // PRINT_NOW FAR3_CH 5000 1 // tbone: he can hear planes taking off CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FAR3_CH WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW FAR3_CH 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT FAR3_CH ENDIF ENDIF IF flag_phone_dialog_driv3 = 20 IF TIMERA > 8000 TIMERA=0 flag_phone_dialog_driv3 = 21 // PRINT_NOW FAR3_GA 5000 1 // tbone: we're nearly there CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FAR3_GA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW FAR3_GA 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT FAR3_GA flag_converstion_going_on_farlie3 = 0 ENDIF ENDIF IF flag_converstion_going_on_farlie3 = 0 IF flag_battery_power_comments = 0 IF timer_countdown_farlie3 <= 200000 // PRINT_NOW FAR3_FB 5000 1 // His battery running low! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FAR3_FB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW FAR3_FB 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT FAR3_FB flag_battery_power_comments = 1 ENDIF ENDIF ENDIF IF flag_converstion_going_on_farlie3 = 0 IF flag_battery_power_comments = 1 IF timer_countdown_farlie3 <= 100000 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FAR3_FC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW FAR3_FC 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT FAR3_FC flag_battery_power_comments = 2 ENDIF ENDIF ENDIF // if player runs out of time IF timer_countdown_farlie3 <= 0 flag_get_to_location_of_girl = 0 flag_mission_failed_farlie3 = 1 // play a sound of an explosion over the phone //PRINT_NOW ( FAR3_FD ) 5000 1 // shit, the phones gone dead! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FAR3_FD WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW FAR3_FD 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE // CLEAR_THIS_PRINT FAR3_FD RETURN ENDIF ENDIF ENDWHILE ENDIF // REMOVE_BLIP blip_airport_driv3 //DISPLAY_ONSCREEN_COUNTER_WITH_STRING int_distance_player_girl COUNTER_DISPLAY_NUMBER dri2_10 // The distance (counter CLEAR_HELP REMOVE_BLIP blip_airport_farlie3 REMOVE_BLIP blip_destination_farlie3 REQUEST_MODEL freeway WHILE NOT HAS_MODEL_LOADED freeway WAIT 0 ENDWHILE // IF flag_phone_dialog_driv3 >= 24 DISPLAY_ONSCREEN_COUNTER_WITH_STRING int_distance_player_girl COUNTER_DISPLAY_BAR dri2_17 // The distance (bar form) // ENDIF // CREATE_CAR BURRITO coord_random_location_x coord_random_location_y coord_random_location_z car_van_with_buddy_inside // CREATE_CAR BURRITO coord_van_end_point_x coord_van_end_point_y coord_van_end_point_z car_van_with_buddy_inside CREATE_CAR BURRITO coord_random_location_x coord_random_location_y coord_random_location_z car_van_with_buddy_inside CHANGE_CAR_COLOUR car_van_with_buddy_inside 6 CARCOLOUR_BLACK ADD_BLIP_FOR_CAR car_van_with_buddy_inside blip_van_farlie3 CHANGE_BLIP_DISPLAY blip_van_farlie3 MARKER_ONLY SET_CAR_HEADING car_van_with_buddy_inside van_heading_farlie3 // IF NOT IS_CAR_DEAD car_van_with_buddy_inside CREATE_CHAR_INSIDE_CAR car_van_with_buddy_inside PEDTYPE_MISSION1 dnb3 van_driver_farlie3 SET_CHAR_PROOFS van_driver_farlie3 TRUE FALSE FALSE FALSE FALSE SET_CHAR_SUFFERS_CRITICAL_HITS van_driver_farlie3 FALSE SET_CHAR_DECISION_MAKER van_driver_farlie3 dm_goons_farlie3 SET_CHAR_RELATIONSHIP van_driver_farlie3 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP van_driver_farlie3 ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_goons_farlie3 EVENT_ACQUAINTANCE_PED_HATE TASK_SIMPLE_GANG_DRIVEBY 0.0 100.0 0.0 0.0 TRUE FALSE SET_CAR_HEALTH car_van_with_buddy_inside 1000 LOCK_CAR_DOORS car_van_with_buddy_inside CARLOCK_LOCKED_BUT_CAN_BE_DAMAGED SET_CAR_ONLY_DAMAGED_BY_PLAYER car_van_with_buddy_inside TRUE // creating van passengers index_farlie3 = 0 WHILE index_farlie3 < 3 IF index_farlie3 = 0 OR index_farlie3 = 2 CREATE_CHAR_AS_PASSENGER car_van_with_buddy_inside PEDTYPE_MISSION1 dnb1 index_farlie3 char_baddies_farlie3[index_farlie3] ENDIF IF index_farlie3 = 1 CREATE_CHAR_AS_PASSENGER car_van_with_buddy_inside PEDTYPE_MISSION1 dnb2 index_farlie3 char_baddies_farlie3[index_farlie3] ENDIF GIVE_WEAPON_TO_CHAR char_baddies_farlie3[index_farlie3] WEAPONTYPE_MICRO_UZI 1000 SET_CURRENT_CHAR_WEAPON char_baddies_farlie3[index_farlie3] WEAPONTYPE_MICRO_UZI IF index_farlie3 = 0 // TASK_DRIVE_BY char_baddies_farlie3[0] scplayer -1 -1.0 0.0 0.0 20.0 DRIVEBY_AI_ALL_DIRN TRUE 100 SET_CHAR_DECISION_MAKER char_baddies_farlie3[0] dm_goons_farlie3 SET_CHAR_RELATIONSHIP char_baddies_farlie3[0] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP char_baddies_farlie3[0] ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 ENDIF index_farlie3++ ENDWHILE // creating escorts for van IF NOT IS_CAR_DEAD car_van_with_buddy_inside GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_van_with_buddy_inside 2.0 -6.0 -0.3 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z CREATE_CAR freeway coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z car_escorts_farlie3[0] SET_CAR_HEADING car_escorts_farlie3[0] van_heading_farlie3 CREATE_CHAR_INSIDE_CAR car_escorts_farlie3[0] PEDTYPE_MISSION1 dnb2 char_escorts_farlie3[0] GIVE_WEAPON_TO_CHAR char_escorts_farlie3[0] WEAPONTYPE_MICRO_UZI 1000 SET_CURRENT_CHAR_WEAPON char_escorts_farlie3[0] WEAPONTYPE_MICRO_UZI SET_CHAR_DECISION_MAKER char_escorts_farlie3[0] dm_goons_farlie3 SET_CHAR_RELATIONSHIP char_escorts_farlie3[0] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP char_escorts_farlie3[0] ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 // SET_CAR_ESCORT_CAR_RIGHT car_escorts_farlie3[0] car_van_with_buddy_inside SET_CAR_STRAIGHT_LINE_DISTANCE car_escorts_farlie3[0] 255 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_van_with_buddy_inside -2.0 -6.0 -0.3 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z CREATE_CAR freeway coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z car_escorts_farlie3[1] SET_CAR_HEADING car_escorts_farlie3[1] van_heading_farlie3 CREATE_CHAR_INSIDE_CAR car_escorts_farlie3[1] PEDTYPE_MISSION1 dnb1 char_escorts_farlie3[1] GIVE_WEAPON_TO_CHAR char_escorts_farlie3[1] WEAPONTYPE_MICRO_UZI 1000 SET_CURRENT_CHAR_WEAPON char_escorts_farlie3[1] WEAPONTYPE_MICRO_UZI SET_CHAR_DECISION_MAKER char_escorts_farlie3[1] dm_goons_farlie3 SET_CHAR_RELATIONSHIP char_escorts_farlie3[1] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP char_escorts_farlie3[1] ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 // SET_CAR_ESCORT_CAR_LEFT car_escorts_farlie3[1] car_van_with_buddy_inside SET_CAR_STRAIGHT_LINE_DISTANCE car_escorts_farlie3[1] 255 ENDIF // STORING INITIAL DISTANCE /* GET_CHAR_COORDINATES scplayer coord_current_players_X_driv3 coord_current_players_y_driv3 coord_current_players_z_driv3 GET_DISTANCE_BETWEEN_COORDS_3D coord_current_players_X_driv3 coord_current_players_y_driv3 coord_current_players_z_driv3 oord_van_x coord_van_y coord_van_z float_initial_distance_player_girl */ IF NOT flag_phone_dialog_driv3 = 21 // check for achievement if they go straight to the airport IF flag_phone_dialog_driv3 < 8 WRITE_LOG "UNLOCK_ACHIEVEMENT WHO_NEEDS_DIRECTIONS" ENDIF index_dialogue_farlie3 = 18 // its working! flag_phone_dialog_driv3 = 24 // IF PLAYER DOES A CHEEKY ONE AND GETS TO THE AIRPORT EARLY ENDIF // WHILE NOT LOCATE_CHAR_ANY_MEANS_3D scplayer coord_random_location_x coord_random_location_y coord_random_location_z 30.0 30.0 20.0 FALSE WHILE NOT flag_goons_get_out = 1 WAIT 0 GOSUB tbone_checks_farlie3 IF flag_mission_failed_farlie3 = 1 RETURN ENDIF // THEY ARRIVE AT THE AIRPORT IF flag_phone_dialog_driv3 >= 21 AND flag_phone_dialog_driv3 < 24 flag_converstion_going_on_farlie3 = 1 GOSUB load_and_play_audio_farlie3 ENDIF // EXPLAINING TEH SIGNAL STENGTH IF flag_phone_dialog_driv3 >= 24 AND flag_phone_dialog_driv3 <= 30 GOSUB load_and_play_audio_farlie3 flag_converstion_going_on_farlie3 = 1 ENDIF IF flag_van_drives_off = 0 IF flag_phone_dialog_driv3 = 31 PRINT_NOW dri2_18 5000 1 // use signal strength to find farlie flag_phone_dialog_driv3 = 32 TIMERA = 0 ENDIF ELSE flag_phone_dialog_driv3 = 32 ENDIF IF flag_phone_dialog_driv3 = 32 IF TIMERA > 7000 flag_converstion_going_on_farlie3 = 0 flag_phone_dialog_driv3 = 33 ENDIF ENDIF IF NOT IS_CAR_DEAD car_van_with_buddy_inside IF LOCATE_CHAR_ANY_MEANS_3D scplayer coord_van_x coord_van_y coord_van_z 30.0 30.0 30.0 FALSE AND LOCATE_CAR_3D car_van_with_buddy_inside coord_van_end_point_x coord_van_end_point_y coord_van_end_point_z 40.0 40.0 40.0 FALSE flag_goons_get_out = 1 ENDIF IF flag_van_drives_off = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer coord_van_x coord_van_y coord_van_z 100.0 100.0 100.0 FALSE AND IS_CAR_ON_SCREEN car_van_with_buddy_inside // SET_CAR_CRUISE_SPEED car_van_with_buddy_inside 20.0 // CAR_GOTO_COORDINATES car_van_with_buddy_inside coord_van_end_point_x coord_van_end_point_y coord_van_end_point_z // SET_CAR_DRIVING_STYLE car_van_with_buddy_inside DRIVINGMODE_AVOIDCARS IF NOT IS_CHAR_DEAD van_driver_farlie3 TASK_CAR_DRIVE_TO_COORD van_driver_farlie3 car_van_with_buddy_inside coord_van_end_point_x coord_van_end_point_y coord_van_end_point_z 25.0 MODE_ACCURATE 0 DRIVINGMODE_PLOUGHTHROUGH ENDIF IF NOT IS_CAR_DEAD car_escorts_farlie3[0] SET_CAR_ESCORT_CAR_RIGHT car_escorts_farlie3[0] car_van_with_buddy_inside ENDIF IF NOT IS_CAR_DEAD car_escorts_farlie3[1] SET_CAR_ESCORT_CAR_LEFT car_escorts_farlie3[1] car_van_with_buddy_inside ENDIF // PRINT_NOW FAR3_KD 5000 1 // Shit, we're driving off again! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FAR3_KD WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW FAR3_KD 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT FAR3_KD CHANGE_BLIP_DISPLAY blip_van_farlie3 BOTH CLEAR_ONSCREEN_TIMER timer_countdown_farlie3 CLEAR_ONSCREEN_COUNTER int_distance_player_girl IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer car_players_car_farlie3 ENDIF flag_van_drives_off = 1 ENDIF ENDIF IF NOT IS_CAR_DEAD car_van_with_buddy_inside IF flag_van_drives_off = 1 OR flag_van_drives_off = 2 IF LOCATE_CAR_3D car_van_with_buddy_inside coord_van_end_point_x coord_van_end_point_y coord_van_end_point_z 20.0 20.0 20.0 FALSE SET_CAR_CRUISE_SPEED car_van_with_buddy_inside 0.0 SET_CAR_MISSION car_van_with_buddy_inside MISSION_STOP_FOREVER flag_van_drives_off = 3 ENDIF ENDIF IF NOT IS_CAR_DEAD car_van_with_buddy_inside GET_CAR_COORDINATES car_van_with_buddy_inside coord_van_x coord_van_y coord_van_z ENDIF GET_CHAR_COORDINATES scplayer coord_current_players_X_driv3 coord_current_players_y_driv3 coord_current_players_z_driv3 GET_DISTANCE_BETWEEN_COORDS_3D coord_current_players_X_driv3 coord_current_players_y_driv3 coord_current_players_z_driv3 coord_van_x coord_van_y coord_van_z float_distance_player_girl IF random_location_number = 3 // End of run way is too far away OR random_location_number = 2 IF float_distance_player_girl > 1000.0 float_distance_player_girl = 1000.0 ELSE float_temp_calculation_a_driv3 = 1000.0 - float_distance_player_girl float_temp_calculation_a_driv3 /= 10.0 ENDIF ELSE IF float_distance_player_girl > 500.0 float_distance_player_girl = 500.0 ELSE float_temp_calculation_a_driv3 = 500.0 - float_distance_player_girl float_temp_calculation_a_driv3 /= 5.0 ENDIF ENDIF ENDIF /* // ********** Converting to scale with bar (start from top of bar)************************* float_distance_player_girl *=100.0 float_distance_player_girl /= float_initial_distance_player_girl // **************************************************************** */ // ********** Converting to scale with bar (start from bottom of bar)************************* /* float_temp_calculation_a_driv3 = float_initial_distance_player_girl - float_distance_player_girl // scaling to percentage float_temp_calculation_b_driv3 = 100.0 / float_temp_calculation_a_driv3 */ // scaling to percentage /* float_temp_calculation_a_driv3 *=100.0 float_temp_calculation_a_driv3 /= float_initial_distance_player_girl // **************************************************************** */ IF float_temp_calculation_a_driv3 > 0.0 int_distance_player_girl =# float_temp_calculation_a_driv3 ENDIF // FAILED CONDITION //IF TIMERA >= 120000 // IF flag_van_drives_off < 1 IF NOT flag_van_drives_off = 1 IF flag_is_tbone_in_group_farlie3 = 0 IF flag_converstion_going_on_farlie3 = 0 IF flag_battery_power_comments = 0 IF timer_countdown_farlie3 <= 200000 // PRINT_NOW FAR3_FB 5000 1 // His battery running low! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FAR3_FB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW FAR3_FB 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT FAR3_FB flag_battery_power_comments = 1 ENDIF ENDIF ENDIF IF flag_converstion_going_on_farlie3 = 0 IF flag_battery_power_comments = 1 IF timer_countdown_farlie3 <= 100000 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FAR3_FC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW FAR3_FC 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT FAR3_FC flag_battery_power_comments = 2 ENDIF ENDIF ENDIF // if player runs out of time IF timer_countdown_farlie3 <= 0 flag_get_to_location_of_girl = 0 flag_mission_failed_farlie3 = 1 // play a sound of an explosion over the phone //PRINT_NOW ( FAR3_FD ) 5000 1 // shit, the phones gone dead! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FAR3_FD WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW FAR3_FD 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE // CLEAR_THIS_PRINT FAR3_FD RETURN ENDIF ENDIF IF flag_van_drives_off = 0 IF timer_countdown_farlie3 <= 0 flag_get_to_location_of_girl = 0 flag_mission_failed_farlie3 = 1 // play a sound of an explosion over the phone PRINT_NOW ( dri2_5 ) 5000 1 RETURN ENDIF ENDIF ENDIF IF flag_van_drives_off = 1 // IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer coord_van_end_point_x coord_van_end_point_y coord_van_end_point_z 500.0 500.0 500.0 FALSE IF NOT IS_CAR_DEAD car_van_with_buddy_inside IF NOT LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer car_van_with_buddy_inside 400.0 400.0 400.0 FALSE flag_shoot_correct_container = 0 flag_get_to_location_of_girl = 0 flag_mission_failed_farlie3 = 1 PRINT_NOW ( dri2_26 ) 5000 1 // you fled RETURN ENDIF ENDIF ENDIF ELSE // if van is dead flag_get_to_location_of_girl = 0 flag_mission_failed_farlie3 = 1 PRINT_NOW ( dri2_5 ) 5000 1 RETURN ENDIF ENDWHILE // NEXT SUBFUNCTION flag_get_to_location_of_girl = 0 flag_shoot_correct_container = 1 // REMOVE_BLIP blip_airport_farlie3 RETURN // ***************************** // ***** shoot_correct_container // ***************************** shoot_correct_container: LVAR_INT temp_seq_farlie3 OPEN_SEQUENCE_TASK temp_seq_farlie3 TASK_LEAVE_CAR -1 car_van_with_buddy_inside TASK_KILL_CHAR_ON_FOOT -1 scplayer // CLEAR_SEQUENCE_TASK temp_seq_farlie3 CLOSE_SEQUENCE_TASK temp_seq_farlie3 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer car_players_car_farlie3 ENDIF index_farlie3 = 0 WHILE index_farlie3 < 3 IF NOT IS_CHAR_DEAD char_baddies_farlie3[index_farlie3] ADD_BLIP_FOR_CHAR char_baddies_farlie3[index_farlie3] blip_baddies_passengers[index_farlie3] IF NOT IS_CAR_DEAD car_van_with_buddy_inside PERFORM_SEQUENCE_TASK char_baddies_farlie3[index_farlie3] temp_seq_farlie3 SET_CHAR_DECISION_MAKER char_baddies_farlie3[index_farlie3] dm_goons_farlie3 SET_CHAR_RELATIONSHIP char_baddies_farlie3[index_farlie3] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP char_baddies_farlie3[index_farlie3] ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 ELSE flag_shoot_correct_container = 0 flag_mission_failed_farlie3 = 1 PRINT_NOW ( dri2_5 ) 5000 1 RETURN ENDIF ELSE flag_shoot_correct_container = 0 flag_mission_failed_farlie3 = 1 PRINT_NOW ( dri2_5 ) 5000 1 RETURN ENDIF index_farlie3++ ENDWHILE IF DOES_BLIP_EXIST blip_van_farlie3 CHANGE_BLIP_DISPLAY blip_van_farlie3 BLIP_ONLY // ADD_BLIP_FOR_CAR car_van_with_buddy_inside blip_van_farlie3 ENDIF IF NOT IS_CHAR_DEAD van_driver_farlie3 SET_CHAR_PROOFS van_driver_farlie3 FALSE FALSE FALSE FALSE FALSE SET_CHAR_SUFFERS_CRITICAL_HITS van_driver_farlie3 TRUE ADD_BLIP_FOR_CHAR van_driver_farlie3 blip_van_driver PERFORM_SEQUENCE_TASK van_driver_farlie3 temp_seq_farlie3 ENDIF CLEAR_SEQUENCE_TASK temp_seq_farlie3 IF NOT IS_CAR_DEAD car_van_with_buddy_inside // CAR_SET_IDLE car_van_with_buddy_inside FREEZE_CAR_POSITION car_van_with_buddy_inside TRUE LOCK_CAR_DOORS car_van_with_buddy_inside CARLOCK_LOCKED IF NOT IS_CHAR_DEAD char_escorts_farlie3[0] IF NOT IS_CAR_DEAD car_van_with_buddy_inside IF NOT LOCATE_CHAR_ANY_MEANS_CAR_3D char_escorts_farlie3[0] car_van_with_buddy_inside 40.0 40.0 40.0 FALSE SET_CHAR_HEALTH char_escorts_farlie3[0] 0 MARK_CHAR_AS_NO_LONGER_NEEDED char_escorts_farlie3[0] IF NOT IS_CAR_DEAD car_escorts_farlie3[0] MARK_CAR_AS_NO_LONGER_NEEDED car_escorts_farlie3[0] ENDIF ELSE IF NOT IS_CAR_DEAD car_escorts_farlie3[0] OPEN_SEQUENCE_TASK temp_seq_farlie3 TASK_LEAVE_CAR -1 car_escorts_farlie3[0] TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK temp_seq_farlie3 PERFORM_SEQUENCE_TASK char_escorts_farlie3[0] temp_seq_farlie3 CLEAR_SEQUENCE_TASK temp_seq_farlie3 ADD_BLIP_FOR_CHAR char_escorts_farlie3[0] blip_escorts_farlie3[0] ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD char_escorts_farlie3[1] IF NOT IS_CAR_DEAD car_van_with_buddy_inside IF NOT LOCATE_CHAR_ANY_MEANS_CAR_3D char_escorts_farlie3[1] car_van_with_buddy_inside 40.0 40.0 40.0 FALSE SET_CHAR_HEALTH char_escorts_farlie3[1] 0 MARK_CHAR_AS_NO_LONGER_NEEDED char_escorts_farlie3[1] IF NOT IS_CAR_DEAD car_escorts_farlie3[1] MARK_CAR_AS_NO_LONGER_NEEDED car_escorts_farlie3[1] ENDIF ELSE IF NOT IS_CAR_DEAD car_escorts_farlie3[1] OPEN_SEQUENCE_TASK temp_seq_farlie3 TASK_LEAVE_CAR -1 car_escorts_farlie3[1] TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK temp_seq_farlie3 PERFORM_SEQUENCE_TASK char_escorts_farlie3[1] temp_seq_farlie3 CLEAR_SEQUENCE_TASK temp_seq_farlie3 ADD_BLIP_FOR_CHAR char_escorts_farlie3[1] blip_escorts_farlie3[1] ENDIF ENDIF ENDIF ENDIF ENDIF // create a car. player must break open the boot //CLEAR_ONSCREEN_COUNTER int_distance_player_girl // TASK_CAR_DRIVE_TO_COORD CharID VehicleID DestX DestY DestZ CruiseSpeed DriveToCoordMode CreateCarModelIndexIfRequired DrivingStyle PRINT_NOW ( dri2_12 ) 5000 1 // Break open container //WHILE NOT TIMERA > 120000 WHILE timer_countdown_farlie3 > 0 WAIT 0 //timer_countdown_farlie3 -= 1 // IF PLAYER IS ARMED // SET_CHAR_ANSWERING_MOBILE scplayer TRUE // ENDIF GOSUB tbone_checks_farlie3 IF flag_mission_failed_farlie3 = 1 RETURN ENDIF IF flag_is_tbone_in_group_farlie3 = 0 IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer coord_van_end_point_x coord_van_end_point_y coord_van_end_point_z 100.0 100.0 100.0 FALSE IF flag_display_flee_warning_farlie3 = 0 PRINT_NOW dri2_47 5000 1 // get back! flag_display_flee_warning_farlie3 = 1 ENDIF IF flag_display_flee_warning_farlie3 = 1 IF flag_van_drives_off = 1 // IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer coord_van_end_point_x coord_van_end_point_y coord_van_end_point_z 500.0 500.0 500.0 FALSE IF NOT IS_CAR_DEAD car_van_with_buddy_inside // to fix bug 264 in PC VERSION IF NOT LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer car_van_with_buddy_inside 400.0 400.0 400.0 FALSE flag_shoot_correct_container = 0 flag_get_to_location_of_girl = 0 flag_mission_failed_farlie3 = 1 PRINT_NOW ( dri2_26 ) 5000 1 // you fled RETURN ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // remove_blips index_farlie3 = 0 WHILE index_farlie3 < 3 IF IS_CHAR_DEAD char_baddies_farlie3[index_farlie3] IF DOES_BLIP_EXIST blip_baddies_passengers[index_farlie3] REMOVE_BLIP blip_baddies_passengers[index_farlie3] ENDIF ENDIF index_farlie3++ ENDWHILE index_farlie3 = 0 WHILE index_farlie3 < 2 IF IS_CHAR_DEAD char_escorts_farlie3[index_farlie3] IF DOES_BLIP_EXIST blip_escorts_farlie3[index_farlie3] REMOVE_BLIP blip_escorts_farlie3[index_farlie3] ENDIF ENDIF index_farlie3++ ENDWHILE IF IS_CHAR_DEAD van_driver_farlie3 IF DOES_BLIP_EXIST blip_van_driver REMOVE_BLIP blip_van_driver ENDIF ENDIF // IF flag_is_tbone_in_group_farlie3 = 0 IF NOT IS_CAR_DEAD car_van_with_buddy_inside IF IS_CHAR_DEAD char_baddies_farlie3[0] AND IS_CHAR_DEAD char_baddies_farlie3[1] AND IS_CHAR_DEAD char_baddies_farlie3[2] AND IS_CHAR_DEAD van_driver_farlie3 REMOVE_BLIP blip_baddies_passengers[0] REMOVE_BLIP blip_baddies_passengers[1] REMOVE_BLIP blip_baddies_passengers[2] REMOVE_BLIP blip_van_driver IF IS_CHAR_DEAD char_escorts_farlie3[0] REMOVE_BLIP blip_escorts_farlie3[0] IF IS_CHAR_DEAD char_escorts_farlie3[1] REMOVE_BLIP blip_escorts_farlie3[1] flag_shoot_correct_container = 0 flag_torch_truck_farlie3 = 1 RETURN ENDIF ENDIF ENDIF ELSE flag_shoot_correct_container = 0 flag_mission_failed_farlie3 = 1 PRINT_NOW ( dri2_5 ) 5000 1 RETURN ENDIF // ENDIF ENDWHILE flag_shoot_correct_container = 0 flag_mission_failed_farlie3 = 1 EXPLODE_CAR car_van_with_buddy_inside // play a sound of an explosion over the phone PRINT_NOW ( dri2_5 ) 5000 1 RETURN torch_truck_farlie3: IF flag_initialise_farlie3 = 0 //////////////////////////////////////////////////////// // CUTSCENE STUFF //////////////////////////////////////////////////////// // Creating cop cars for cutscene LVAR_INT car_cop1_farlie3 car_cop2_farlie3 LVAR_INT char_cop1_farlie3 char_cop2_farlie3 LVAR_INT flag_cutscene_farlie3 flag_cutscene_farlie3 = 0 WAIT 2000 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON WAIT 2000 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REQUEST_MODEL stretch WHILE NOT HAS_MODEL_LOADED stretch WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD car_van_with_buddy_inside SET_CAR_COORDINATES car_van_with_buddy_inside -1321.8 -189.79 13.46 SET_CAR_HEADING car_van_with_buddy_inside 60.0 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_van_with_buddy_inside 6.0 10.5 -0.2 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z CREATE_CAR stretch coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z get_away_car ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED stretch IF NOT IS_CAR_DEAD car_van_with_buddy_inside IF DOES_BLIP_EXIST blip_van_farlie3 CHANGE_BLIP_DISPLAY blip_van_farlie3 BOTH // ADD_BLIP_FOR_CAR car_van_with_buddy_inside blip_van_farlie3 ENDIF // setting players coordinates GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_van_with_buddy_inside 6.0 -6.5 -0.5 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z ELSE SET_CHAR_COORDINATES scplayer coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z ENDIF // make player run to back GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_van_with_buddy_inside -1.0 -3.5 -0.2 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z IF NOT IS_CAR_DEAD car_escorts_farlie3[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_van_with_buddy_inside -8.0 -8.0 -0.9 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z SET_CAR_COORDINATES car_escorts_farlie3[0] coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z ENDIF IF NOT IS_CAR_DEAD car_escorts_farlie3[1] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_van_with_buddy_inside 8.0 -8.0 -0.9 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z SET_CAR_COORDINATES car_escorts_farlie3[1] coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z ENDIF IF NOT IS_CAR_DEAD car_players_car_farlie3 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_van_with_buddy_inside 15.0 -20.0 -0.9 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z SET_CAR_COORDINATES car_players_car_farlie3 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z ENDIF GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_van_with_buddy_inside -2.0 -6.5 -0.5 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z SET_FIXED_CAMERA_POSITION coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z 0.0 0.0 0.0 // by drop off zone POINT_CAMERA_AT_CAR car_van_with_buddy_inside FIXED JUMP_CUT LOCK_CAR_DOORS car_van_with_buddy_inside CARLOCK_UNLOCKED LOAD_SPECIAL_CHARACTER 1 torino WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 WAIT 0 ENDWHILE // CREATE_CHAR_AS_PASSENGER car_van_with_buddy_inside PEDTYPE_MISSION2 WMYST 2 char_toreno_farlie3 IF NOT IS_CAR_DEAD car_van_with_buddy_inside //CREATE_CHAR_AS_PASSENGER car_van_with_buddy_inside PEDTYPE_MISSION2 SPECIAL01 2 char_toreno_farlie3 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_van_with_buddy_inside -6.0 -20.0 0.0 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z CREATE_CHAR PEDTYPE_MISSION2 SPECIAL01 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z char_toreno_farlie3 SET_CHAR_DROWNS_IN_WATER char_toreno_farlie3 TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH char_toreno_farlie3 TRUE SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR char_toreno_farlie3 FALSE SET_CHAR_STAY_IN_SAME_PLACE char_toreno_farlie3 TRUE GET_CHAR_HEADING char_toreno_farlie3 heading_toreno SET_CHAR_RELATIONSHIP char_toreno_farlie3 ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER char_toreno_farlie3 dm_buddies_farlie3 GIVE_WEAPON_TO_CHAR char_toreno_farlie3 WEAPONTYPE_MICRO_UZI 1000 SET_CHAR_PROOFS char_toreno_farlie3 FALSE FALSE TRUE FALSE FALSE SET_CHAR_NEVER_TARGETTED char_toreno_farlie3 TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER char_toreno_farlie3 TRUE TASK_LEAVE_CAR char_toreno_farlie3 car_van_with_buddy_inside SET_CAR_HEALTH car_van_with_buddy_inside 1000 //SET_CHAR_COORDINATES char_toreno_farlie3 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z // CREATE_CHAR PEDTYPE_MISSION2 WMYST coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z char_toreno_farlie3 ENDIF ELSE flag_torch_truck_farlie3 = 0 flag_mission_failed_farlie3 = 1 PRINT_NOW dri2_22 5000 1 // toreno is dead RETURN ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED dnb1 MARK_MODEL_AS_NO_LONGER_NEEDED dnb2 MARK_MODEL_AS_NO_LONGER_NEEDED dnb3 MARK_MODEL_AS_NO_LONGER_NEEDED micro_uzi IF NOT IS_CHAR_DEAD char_tbone_farlie3 IF NOT IS_CHAR_DEAD char_toreno_farlie3 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_VISIBLE scplayer FALSE SET_CHAR_VISIBLE char_tbone_farlie3 FALSE SET_CHAR_VISIBLE char_toreno_farlie3 FALSE ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD car_van_with_buddy_inside IF NOT IS_CHAR_DEAD char_tbone_farlie3 IF IS_GROUP_MEMBER char_tbone_farlie3 Players_Group REMOVE_CHAR_FROM_GROUP char_tbone_farlie3 ENDIF GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_van_with_buddy_inside 6.0 -20.0 0.0 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z IF IS_CHAR_IN_ANY_CAR char_tbone_farlie3 WARP_CHAR_FROM_CAR_TO_COORD char_tbone_farlie3 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z ELSE SET_CHAR_COORDINATES char_tbone_farlie3 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z ENDIF // SET_CHAR_COORDINATES char_tbone_farlie3 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z SET_CHAR_STAY_IN_SAME_PLACE char_tbone_farlie3 TRUE GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_van_with_buddy_inside 3.0 -20.0 0.0 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z SET_CHAR_COORDINATES scplayer coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z TASK_TURN_CHAR_TO_FACE_COORD scplayer coord_random_location_x coord_random_location_y coord_random_location_z ENDIF ELSE flag_torch_truck_farlie3 = 0 flag_mission_failed_farlie3 = 1 PRINT_NOW dri2_22 5000 1 // toreno is dead RETURN ENDIF DELETE_CHAR char_baddies_farlie3[0] DELETE_CHAR char_baddies_farlie3[1] DELETE_CHAR char_baddies_farlie3[2] DELETE_CHAR van_driver_farlie3 DELETE_CHAR char_escorts_farlie3[0] DELETE_CHAR char_escorts_farlie3[1] DELETE_CHAR char_escorts_farlie3[0] DELETE_CHAR char_escorts_farlie3[1] DELETE_CAR car_escorts_farlie3[0] DELETE_CAR car_escorts_farlie3[1] CLEAR_AREA coord_random_location_x coord_random_location_y coord_random_location_z 1500.0 TRUE LOAD_CUTSCENE FARL_3B WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE DO_FADE 1000 FADE_IN CLEAR_AREA coord_random_location_x coord_random_location_y coord_random_location_z 1500.0 TRUE START_CUTSCENE WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 CLEAR_AREA coord_random_location_x coord_random_location_y coord_random_location_z 1500.0 TRUE ENDWHILE CLEAR_CUTSCENE IF NOT IS_CHAR_DEAD char_tbone_farlie3 SET_CHAR_VISIBLE char_tbone_farlie3 TRUE ENDIF IF NOT IS_CHAR_DEAD char_toreno_farlie3 SET_CHAR_VISIBLE char_toreno_farlie3 TRUE ENDIF IF IS_PLAYER_PLAYING player1 SET_CHAR_VISIBLE scplayer TRUE ENDIF IF NOT IS_CAR_DEAD car_van_with_buddy_inside FREEZE_CAR_POSITION car_van_with_buddy_inside FALSE LOCK_CAR_DOORS car_van_with_buddy_inside CARLOCK_LOCKED IF NOT IS_CHAR_DEAD char_toreno_farlie3 TASK_DESTROY_CAR char_toreno_farlie3 car_van_with_buddy_inside ENDIF IF NOT IS_CHAR_DEAD char_tbone_farlie3 IF IS_GROUP_MEMBER char_tbone_farlie3 Players_Group REMOVE_CHAR_FROM_GROUP char_tbone_farlie3 ENDIF TASK_DESTROY_CAR char_tbone_farlie3 car_van_with_buddy_inside ENDIF ENDIF DO_FADE 0 FADE_OUT IF NOT IS_CAR_DEAD car_van_with_buddy_inside GET_OFFSET_FROM_CAR_IN_WORLD_COORDS car_van_with_buddy_inside 6.0 -6.5 -0.5 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z // SET_CHAR_COORDINATES scplayer coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z GET_CAR_COORDINATES car_van_with_buddy_inside coord_random_location_x coord_random_location_y coord_random_location_z GET_HEADING_FROM_VECTOR_2D coord_random_location_x coord_random_location_y cops_heading_farlie3 // SET_CHAR_HEADING scplayer cops_heading_farlie3 TASK_TURN_CHAR_TO_FACE_COORD scplayer coord_random_location_x coord_random_location_y coord_random_location_z ENDIF CLEAR_AREA coord_random_location_x coord_random_location_y coord_random_location_z 1000.0 TRUE WAIT 2000 // IF NOT IS_CHAR_DEAD char_toreno_farlie3 // GET_CHAR_HEADING char_toreno_farlie3 heading_toreno // ENDIF //SET_CHAR_HEADING scplayer heading_toreno SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SET_POLICE_IGNORE_PLAYER player1 ON PRINT_NOW dri2_33 10000 1 // destroy the coke flag_initialise_farlie3 = 1 CHECKPOINT_SAVE 99 ENDIF // Toreno Checks IF NOT IS_CHAR_DEAD char_toreno_farlie3 ELSE flag_torch_truck_farlie3 = 0 flag_mission_failed_farlie3 = 1 PRINT_NOW dri2_22 5000 1 // toreno is dead RETURN ENDIF IF IS_CHAR_DEAD char_tbone_farlie3 flag_get_to_location_of_girl = 0 flag_shoot_correct_container = 0 flag_torch_truck_farlie3 = 0 flag_get_back_to_base = 0 flag_mission_passed_farlie3 = 0 flag_mission_failed_farlie3 = 1 PRINT_NOW dri2_31 5000 1 // tbone is dead RETURN ENDIF IF flag_has_truck_been_destroyed_farlie3 = 0 IF IS_CAR_DEAD car_van_with_buddy_inside flag_has_truck_been_destroyed_farlie3 = 1 REMOVE_BLIP blip_van_farlie3 ALTER_WANTED_LEVEL_NO_DROP Player1 2 // flag_phone_dialog_driv3 = 0 TIMERB=0 SET_GROUP_SEPARATION_RANGE Players_Group 30.0 IF NOT IS_CHAR_DEAD char_toreno_farlie3 SET_CHAR_STAY_IN_SAME_PLACE char_toreno_farlie3 FALSE IF NOT IS_GROUP_MEMBER char_toreno_farlie3 Players_Group SET_GROUP_MEMBER Players_Group char_toreno_farlie3 ENDIF SET_CHAR_PROOFS char_toreno_farlie3 FALSE FALSE FALSE FALSE FALSE // SET_GROUP_MEMBER players_group_farlie3 char_toreno_farlie3 ELSE flag_torch_truck_farlie3 = 0 flag_mission_failed_farlie3 = 1 PRINT_NOW dri2_22 5000 1 // toreno is dead RETURN ENDIF IF NOT IS_CHAR_DEAD char_tbone_farlie3 SET_CHAR_STAY_IN_SAME_PLACE char_tbone_farlie3 FALSE IF NOT IS_GROUP_MEMBER char_tbone_farlie3 Players_Group SET_GROUP_MEMBER Players_Group char_tbone_farlie3 ENDIF ENDIF IF NOT IS_CHAR_DEAD char_tbone_farlie3 IF NOT IS_CHAR_DEAD char_toreno_farlie3 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer char_toreno_farlie3 30.0 30.0 30.0 FALSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer char_tbone_farlie3 30.0 30.0 30.0 FALSE PRINT_NOW dri2_4 5000 1 // get the hell outta here before the cops come! IF IS_CAR_IN_WATER car_van_with_buddy_inside PRINT dri2_34 10000 1 // get out of the airport ELSE PRINT dri2_24 10000 1 // get away from teh burning car ENDIF IF flag_reached_airport_exit = 0 ADD_BLIP_FOR_COORD -1734.05 -579.94 15.56 blip_airport_exit // CHANGE_BLIP_COLOUR blip_airport_exit YELLOW ELSE ADD_BLIP_FOR_COORD coord_base_x coord_base_y coord_base_z blip_base IF flag_player_starts_conversation_with_toreno = 0 flag_player_starts_conversation_with_toreno = 1 ENDIF // CHANGE_BLIP_COLOUR blip_base YELLOW ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF /* IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer coord_van_end_point_x coord_van_end_point_y coord_van_end_point_z 100.0 100.0 100.0 FALSE flag_torch_truck_farlie3 = 0 flag_mission_failed_farlie3 = 1 PRINT_NOW ( dri2_26 ) 5000 1 // you fled RETURN ENDIF */ ENDIF IF flag_cops_go_after_player = 0 IF NOT IS_CHAR_DEAD char_toreno_farlie3 IF NOT IS_CHAR_DEAD char_tbone_farlie3 IF IS_CHAR_IN_ANY_CAR scplayer IF IS_CHAR_IN_ANY_CAR char_toreno_farlie3 IF IS_CHAR_IN_ANY_CAR char_tbone_farlie3 SET_POLICE_IGNORE_PLAYER Player1 OFF flag_cops_go_after_player = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // Toreno Checks IF flag_has_truck_been_destroyed_farlie3 = 1 GOSUB check_toreno_farlie3 IF flag_mission_failed_farlie3 = 1 RETURN ENDIF GOSUB tbone_checks_farlie3 IF flag_mission_failed_farlie3 = 1 RETURN ENDIF ENDIF /* IF flag_phone_dialog_driv3 = 0 IF TIMERB > 5000 PRINT_NOW dri2_24 10000 1 flag_phone_dialog_driv3 = 1 ENDIF ENDIF */ IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer coord_random_location_x coord_random_location_y coord_random_location_z 150.0 150.0 150.0 FALSE IF flag_player_away_from_truck_farlie3 = 0 flag_player_away_from_truck_farlie3 = 1 ENDIF ELSE IF flag_player_away_from_truck_farlie3 = 1 flag_player_away_from_truck_farlie3 = 0 ENDIF ENDIF IF NOT IS_CAR_DEAD car_van_with_buddy_inside GET_CAR_COORDINATES car_van_with_buddy_inside coord_random_location_x coord_random_location_y coord_random_location_z ENDIF /* GOSUB tbone_checks_farlie3 IF flag_mission_failed_farlie3 = 1 RETURN ENDIF */ // PASS CONDITIONS IF flag_has_truck_been_destroyed_farlie3 = 1 // cutscene of player and toreno parting? and cops drive past? REMOVE_BLIP blip_van_farlie3 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer char_tbone_farlie3 30.0 30.0 30.0 FALSE IF flag_reached_airport_exit = 0 IF NOT DOES_BLIP_EXIST blip_airport_exit ADD_BLIP_FOR_COORD -1734.05 -579.94 15.56 blip_airport_exit PRINT_NOW dri2_34 5000 1 //let just get out of here ENDIF // CHANGE_BLIP_COLOUR blip_airport_exit YELLOW ELSE IF NOT DOES_BLIP_EXIST blip_base ADD_BLIP_FOR_COORD coord_base_x coord_base_y coord_base_z blip_base PRINT_NOW dri2_25 5000 1 // get back to the pleasure domes IF flag_player_starts_conversation_with_toreno = 0 flag_player_starts_conversation_with_toreno = 1 ENDIF ENDIF // CHANGE_BLIP_COLOUR blip_base YELLOW ENDIF IF NOT IS_CHAR_DEAD char_toreno_farlie3 IF NOT IS_GROUP_MEMBER char_toreno_farlie3 Players_Group SET_GROUP_MEMBER Players_Group char_toreno_farlie3 ENDIF ENDIF IF NOT IS_CHAR_DEAD char_tbone_farlie3 IF NOT IS_GROUP_MEMBER char_tbone_farlie3 Players_Group SET_GROUP_MEMBER Players_Group char_tbone_farlie3 ENDIF ENDIF ENDIF MARK_CAR_AS_NO_LONGER_NEEDED get_away_car /* MARK_CAR_AS_NO_LONGER_NEEDED car_cop2_farlie3 MARK_CAR_AS_NO_LONGER_NEEDED car_cop1_farlie3 MARK_CHAR_AS_NO_LONGER_NEEDED char_cop1_farlie3 MARK_CHAR_AS_NO_LONGER_NEEDED char_cop2_farlie3 */ /* IF NOT IS_CHAR_DEAD char_cop1_farlie3 SET_CHAR_DECISION_MAKER char_cop1_farlie3 dm_goons_farlie3 ENDIF IF NOT IS_CHAR_DEAD char_cop2_farlie3 SET_CHAR_DECISION_MAKER char_cop2_farlie3 dm_goons_farlie3 ENDIF */ MARK_CAR_AS_NO_LONGER_NEEDED car_players_car_farlie3 MARK_MODEL_AS_NO_LONGER_NEEDED BURRITO MARK_MODEL_AS_NO_LONGER_NEEDED stretch // PRINT_NOW dri2_34 10000 1 // lets get out of the airport flag_get_back_to_base = 1 flag_torch_truck_farlie3 = 0 // flag_mission_passed_farlie3 = 1 RETURN ENDIF RETURN get_back_to_base: GOSUB check_toreno_farlie3 IF flag_mission_failed_farlie3 = 1 RETURN ENDIF GOSUB tbone_checks_farlie3 IF flag_mission_failed_farlie3 = 1 RETURN ENDIF IF flag_reached_airport_exit = 1 GOSUB check_players_wanted_level ENDIF IF flag_cops_go_after_player = 0 IF NOT IS_CHAR_DEAD char_toreno_farlie3 IF NOT IS_CHAR_DEAD char_tbone_farlie3 IF IS_CHAR_IN_ANY_CAR scplayer IF IS_CHAR_IN_ANY_CAR char_toreno_farlie3 IF IS_CHAR_IN_ANY_CAR char_tbone_farlie3 SET_POLICE_IGNORE_PLAYER Player1 OFF flag_cops_go_after_player = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // MAke toreno say car is not big enough IF NOT IS_CHAR_DEAD char_toreno_farlie3 IF flag_is_toreno_in_group_farlie3 = 0 IF IS_CHAR_IN_ANY_CAR scplayer IF flag_is_player_in_car = 0 STORE_CAR_CHAR_IS_IN scplayer car_players_car_farlie3 GET_MAXIMUM_NUMBER_OF_PASSENGERS car_players_car_farlie3 passenger_seats_farlie3 IF passenger_seats_farlie3 < 2 CLEAR_MISSION_AUDIO 1 IF flag_toreno_comment = 0 LOAD_MISSION_AUDIO 1 SOUND_FAR3_LC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW FAR3_LC 10000 1 /// [FAR3_LC] We’re not going to fit in that, think on your feet, kid! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT FAR3_LC ENDIF IF flag_toreno_comment = 1 LOAD_MISSION_AUDIO 1 SOUND_FAR3_LA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW FAR3_LA 10000 1 // TORENO [FAR3_LA] We need a bigger car, come on, move it! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT FAR3_LA ENDIF IF flag_toreno_comment = 2 LOAD_MISSION_AUDIO 1 SOUND_FAR3_LB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW FAR3_LB 10000 1 // [FAR3_LB] Too small, come on, think! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT FAR3_LB ENDIF flag_toreno_comment++ IF flag_toreno_comment >=3 flag_toreno_comment = 0 ENDIF ENDIF flag_is_player_in_car = 1 ENDIF ELSE flag_is_player_in_car = 0 ENDIF ENDIF ENDIF // to fix Dave Murdocks insane bug about droping group members ONE BY ONE IF flag_reached_airport_exit = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1734.05 -579.94 15.56 20.0 20.0 20.0 FALSE OR NOT LOCATE_CHAR_ANY_MEANS_3D scplayer coord_van_end_point_x coord_van_end_point_y coord_van_end_point_z 600.0 600.0 600.0 FALSE flag_reached_airport_exit = 1 IF NOT IS_WANTED_LEVEL_GREATER Player1 3 ALTER_WANTED_LEVEL_NO_DROP Player1 3 ENDIF SET_POLICE_IGNORE_PLAYER Player1 OFF flag_cops_go_after_player = 1 ENDIF ENDIF IF flag_is_toreno_in_group_farlie3 = 0 IF flag_is_tbone_in_group_farlie3 = 0 IF flag_reached_airport_exit = 0 // IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1546.76 -430.94 5.56 20.0 20.0 20.0 FALSE IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1734.05 -579.94 15.56 20.0 20.0 20.0 FALSE IF DOES_BLIP_EXIST blip_airport_exit REMOVE_BLIP blip_airport_exit IF NOT IS_WANTED_LEVEL_GREATER Player1 3 ALTER_WANTED_LEVEL_NO_DROP Player1 3 ENDIF ADD_SPRITE_BLIP_FOR_COORD coord_spray_shop_x_farlie3 coord_spray_shop_y_farlie3 coord_spray_shop_z_farlie3 RADAR_SPRITE_SPRAY blip_paint_and_spray_farlie3 PRINT dri2_46 5000 1 // GET TO THE PAINT AND SPRAY flag_has_player_got_wanted_level = 1 IF NOT IS_CHAR_DEAD char_toreno_farlie3 CLEAR_CHAR_RELATIONSHIP char_toreno_farlie3 ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_COP SET_CHAR_RELATIONSHIP char_toreno_farlie3 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_COP ENDIF IF NOT IS_CHAR_DEAD char_tbone_farlie3 CLEAR_CHAR_RELATIONSHIP char_tbone_farlie3 ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_COP SET_CHAR_RELATIONSHIP char_tbone_farlie3 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_COP ENDIF flag_reached_airport_exit = 1 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1734.05 -579.94 15.56 4.0 4.0 4.0 TRUE ENDIF ENDIF IF flag_player_starts_conversation_with_toreno = 1 // banter on the way back IF flag_reached_airport_exit = 1 IF flag_phone_dialog_driv3 >= 33 AND flag_phone_dialog_driv3 < 47 IF IS_CHAR_IN_ANY_CAR scplayer IF NOT IS_CHAR_DEAD char_toreno_farlie3 IF NOT IS_CHAR_DEAD char_tbone_farlie3 IF IS_CHAR_IN_ANY_CAR char_tbone_farlie3 IF IS_CHAR_IN_ANY_CAR char_toreno_farlie3 IF flag_phone_dialog_driv3 = 33 index_dialogue_farlie3 = 25 //How long you been working for Jizzy, I haven’t seen you before. IF TIMERA > 10000 GOSUB load_and_play_audio_farlie3 ENDIF ELSE GOSUB load_and_play_audio_farlie3 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer coord_base_x coord_base_y coord_base_z 4.0 4.0 4.0 TRUE flag_get_back_to_base = 0 flag_mission_passed_farlie3 = 1 flag_cutscene_farlie3 = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON TIMERA = 0 TIMERB = 0 WHILE TIMERA < 8000 WAIT 0 IF flag_cutscene_farlie3 = 0 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 3.0 8.0 0.4 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z SET_FIXED_CAMERA_POSITION coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z 0.0 0.0 0.0 POINT_CAMERA_AT_CHAR scplayer FIXED JUMP_CUT CLEAR_AREA coord_base_x coord_base_y coord_base_z 100.0 TRUE // PRINT_NOW FAR3_NA 2000 1 //you did good cj CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FAR3_NA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW FAR3_NA 10000 1 //you did good cj PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT FAR3_NA flag_cutscene_farlie3 = 1 TIMERB = 0 ENDIF IF flag_cutscene_farlie3 = 1 IF TIMERB > 500 IF NOT IS_CHAR_DEAD char_toreno_farlie3 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS char_toreno_farlie3 3.0 -2.0 0.5 coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z SET_FIXED_CAMERA_POSITION coord_toreno_farlie3_x coord_toreno_farlie3_y coord_toreno_farlie3_z 0.0 0.0 0.0 POINT_CAMERA_AT_CHAR char_toreno_farlie3 FIXED JUMP_CUT IF IS_GROUP_MEMBER char_toreno_farlie3 Players_Group REMOVE_CHAR_FROM_GROUP char_toreno_farlie3 ENDIF IF IS_CHAR_IN_ANY_CAR char_toreno_farlie3 TASK_LEAVE_ANY_CAR char_toreno_farlie3 ENDIF // PRINT_NOW FAR3_NB 4000 1 // now scram CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_FAR3_NB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW FAR3_NB 10000 1 // now scram PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT FAR3_NB TIMERB = 0 flag_cutscene_farlie3 = 2 ENDIF ENDIF ENDIF IF flag_cutscene_farlie3 = 2 IF TIMERB > 500 flag_cutscene_farlie3 = 3 IF NOT IS_CHAR_DEAD char_toreno_farlie3 TASK_GO_STRAIGHT_TO_COORD char_toreno_farlie3 -2624.57 1410.46 6.5 PEDMOVE_WALK -1 ENDIF IF NOT IS_CHAR_DEAD char_tbone_farlie3 IF IS_GROUP_MEMBER char_tbone_farlie3 Players_Group REMOVE_CHAR_FROM_GROUP char_tbone_farlie3 ENDIF IF IS_CHAR_IN_ANY_CAR char_tbone_farlie3 // STORE_CAR_CHAR_IS_IN char_tbone_farlie3 car_players_car_farlie3 TASK_LEAVE_ANY_CAR char_tbone_farlie3 // MARK_CAR_AS_NO_LONGER_NEEDED car_players_car_farlie3 TIMERB= 0 ENDIF ENDIF ENDIF ENDIF IF flag_cutscene_farlie3 = 3 IF TIMERB > 200 flag_cutscene_farlie3 = 4 IF NOT IS_CHAR_DEAD char_tbone_farlie3 TASK_GO_STRAIGHT_TO_COORD char_tbone_farlie3 -2625.57 1409.46 6.5 PEDMOVE_WALK -1 ENDIF TIMERB = 0 ENDIF ENDIF ENDWHILE DELETE_CHAR char_toreno_farlie3 DELETE_CHAR char_tbone_farlie3 MARK_CAR_AS_NO_LONGER_NEEDED car_players_car_farlie3 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF ENDIF ENDIF ENDIF ENDIF RETURN check_players_wanted_level: IF flag_reached_airport_exit = 1 IF flag_has_player_got_wanted_level = 0 IF flag_is_toreno_in_group_farlie3 = 0 AND flag_is_tbone_in_group_farlie3 = 0 IF IS_WANTED_LEVEL_GREATER player1 0 flag_has_player_got_wanted_level = 1 IF NOT DOES_BLIP_EXIST blip_paint_and_spray_farlie3 ADD_SPRITE_BLIP_FOR_COORD coord_spray_shop_x_farlie3 coord_spray_shop_y_farlie3 coord_spray_shop_z_farlie3 RADAR_SPRITE_SPRAY blip_paint_and_spray_farlie3 PRINT dri2_46 5000 1 // GET TO THE PAINT AND SPRAY ENDIF IF DOES_BLIP_EXIST blip_airport_exit REMOVE_BLIP blip_airport_exit ENDIF IF DOES_BLIP_EXIST blip_base REMOVE_BLIP blip_base ENDIF ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_buddies_farlie3 EVENT_ACQUAINTANCE_PED_HATE TASK_SIMPLE_GANG_DRIVEBY 0.0 100.0 0.0 0.0 TRUE FALSE IF NOT IS_CHAR_DEAD char_toreno_farlie3 SET_CHAR_RELATIONSHIP char_toreno_farlie3 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_COP CLEAR_CHAR_RELATIONSHIP char_toreno_farlie3 ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_COP ENDIF IF NOT IS_CHAR_DEAD char_tbone_farlie3 SET_CHAR_RELATIONSHIP char_tbone_farlie3 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_COP CLEAR_CHAR_RELATIONSHIP char_tbone_farlie3 ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_COP ENDIF ENDIF ENDIF ENDIF IF flag_has_player_got_wanted_level = 1 IF NOT IS_WANTED_LEVEL_GREATER player1 0 IF NOT IS_CHAR_DEAD char_toreno_farlie3 CLEAR_CHAR_RELATIONSHIP char_toreno_farlie3 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_COP IF IS_GROUP_MEMBER char_toreno_farlie3 Players_Group REMOVE_CHAR_FROM_GROUP char_toreno_farlie3 ENDIF CLEAR_CHAR_TASKS char_toreno_farlie3 IF NOT IS_GROUP_MEMBER char_toreno_farlie3 Players_Group SET_GROUP_MEMBER Players_Group char_toreno_farlie3 SET_GROUP_FOLLOW_STATUS Players_Group TRUE ENDIF SET_CHAR_RELATIONSHIP char_toreno_farlie3 ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_COP ENDIF IF NOT IS_CHAR_DEAD char_tbone_farlie3 CLEAR_CHAR_RELATIONSHIP char_tbone_farlie3 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_COP IF IS_GROUP_MEMBER char_tbone_farlie3 Players_Group REMOVE_CHAR_FROM_GROUP char_tbone_farlie3 ENDIF CLEAR_CHAR_TASKS char_tbone_farlie3 IF NOT IS_GROUP_MEMBER char_tbone_farlie3 Players_Group SET_GROUP_MEMBER Players_Group char_tbone_farlie3 SET_GROUP_FOLLOW_STATUS Players_Group TRUE ENDIF ENDIF //ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_buddies_farlie3 EVENT_ACQUAINTANCE_PED_HATE TASK_SIMPLE_GANG_DRIVEBY 0.0 100.0 0.0 0.0 TRUE FALSE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_buddies_farlie3 EVENT_ACQUAINTANCE_PED_HATE flag_has_player_got_wanted_level = 0 TIMERA = 0 IF NOT DOES_BLIP_EXIST blip_base ADD_BLIP_FOR_COORD coord_base_x coord_base_y coord_base_z blip_base PRINT_NOW dri2_25 5000 1 // get back to the pleasure domes IF flag_player_starts_conversation_with_toreno = 0 flag_player_starts_conversation_with_toreno = 1 ENDIF ENDIF IF DOES_BLIP_EXIST blip_paint_and_spray_farlie3 REMOVE_BLIP blip_paint_and_spray_farlie3 ENDIF ENDIF ENDIF ENDIF RETURN check_toreno_farlie3: IF NOT IS_CHAR_DEAD char_toreno_farlie3 IF flag_is_toreno_in_group_farlie3 = 0 // check if toreno is in teh group IF NOT IS_GROUP_MEMBER char_toreno_farlie3 Players_Group PRINT_NOW dri2_3 5000 1 //"WHERE ARE U GOING?" IF DOES_BLIP_EXIST blip_base REMOVE_BLIP blip_base ENDIF IF DOES_BLIP_EXIST blip_airport_exit REMOVE_BLIP blip_airport_exit ENDIF IF DOES_BLIP_EXIST blip_destination_farlie3 REMOVE_BLIP blip_destination_farlie3 ENDIF ADD_BLIP_FOR_CHAR char_toreno_farlie3 blip_torneo // CHANGE_BLIP_COLOUR blip_torneo BLUE SET_BLIP_AS_FRIENDLY blip_torneo TRUE flag_is_toreno_in_group_farlie3 = 1 ENDIF ENDIF IF flag_is_toreno_in_group_farlie3 = 1 // IF IS_GROUP_MEMBER char_toreno_farlie3 Players_Group // WAIT 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer char_toreno_farlie3 8.0 8.0 8.0 FALSE IF NOT IS_GROUP_MEMBER char_toreno_farlie3 Players_Group SET_GROUP_MEMBER Players_Group char_toreno_farlie3 ENDIF flag_is_toreno_in_group_farlie3 = 0 REMOVE_BLIP blip_torneo IF flag_is_tbone_in_group_farlie3 = 0 IF flag_reached_airport_exit = 1 IF flag_has_player_got_wanted_level = 0 IF NOT DOES_BLIP_EXIST blip_base ADD_BLIP_FOR_COORD coord_base_x coord_base_y coord_base_z blip_base // CHANGE_BLIP_COLOUR blip_base YELLOW PRINT_NOW dri2_25 5000 1 // get back to the pleasure domes IF flag_player_starts_conversation_with_toreno = 0 flag_player_starts_conversation_with_toreno = 1 ENDIF ENDIF ELSE IF NOT DOES_BLIP_EXIST blip_paint_and_spray_farlie3 ADD_SPRITE_BLIP_FOR_COORD coord_spray_shop_x_farlie3 coord_spray_shop_y_farlie3 coord_spray_shop_z_farlie3 RADAR_SPRITE_SPRAY blip_paint_and_spray_farlie3 ENDIF PRINT_NOW dri2_46 5000 1 // GET TO THE PAINT AND SPRAY IF DOES_BLIP_EXIST blip_airport_exit REMOVE_BLIP blip_airport_exit ENDIF ENDIF ELSE IF NOT DOES_BLIP_EXIST blip_airport_exit ADD_BLIP_FOR_COORD -1734.05 -579.94 15.56 blip_airport_exit ENDIF PRINT_NOW dri2_34 5000 1 // get out of the airport // CHANGE_BLIP_COLOUR blip_base YELLOW ENDIF ENDIF ENDIF ENDIF ELSE flag_torch_truck_farlie3 = 0 flag_torch_truck_farlie3 = 0 flag_mission_failed_farlie3 = 1 PRINT_NOW dri2_22 5000 1 // toreno is dead RETURN ENDIF RETURN tbone_checks_farlie3: IF NOT IS_CHAR_DEAD char_tbone_farlie3 // IF IS_CHAR_PLAYING_ANIM char_tbone_farlie3 man_run // SET_CHAR_ANIM_SPEED char_tbone_farlie3 man_run 10.0 // ENDIF IF flag_is_tbone_in_group_farlie3 = 0 IF NOT IS_GROUP_MEMBER char_tbone_farlie3 Players_Group PRINT_NOW dri2_32 5000 1 //"WHERE ARE U GOING?" IF DOES_BLIP_EXIST blip_base REMOVE_BLIP blip_base ENDIF IF DOES_BLIP_EXIST blip_destination_farlie3 REMOVE_BLIP blip_destination_farlie3 ENDIF IF DOES_BLIP_EXIST blip_airport_exit REMOVE_BLIP blip_airport_exit ENDIF IF DOES_BLIP_EXIST blip_airport_farlie3 REMOVE_BLIP blip_airport_farlie3 ENDIF ADD_BLIP_FOR_CHAR char_tbone_farlie3 blip_tbone // CHANGE_BLIP_COLOUR blip_tbone BLUE SET_BLIP_AS_FRIENDLY blip_tbone TRUE flag_is_tbone_in_group_farlie3 = 1 ENDIF ENDIF IF flag_is_tbone_in_group_farlie3 = 1 // WHILE NOT IS_GROUP_MEMBER char_tbone_farlie3 Players_Group // WAIT 0 IF NOT IS_CHAR_DEAD char_tbone_farlie3 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer char_tbone_farlie3 8.0 8.0 8.0 FALSE IF NOT IS_GROUP_MEMBER char_tbone_farlie3 Players_Group SET_GROUP_MEMBER Players_Group char_tbone_farlie3 ENDIF flag_is_tbone_in_group_farlie3 = 0 REMOVE_BLIP blip_tbone IF flag_is_toreno_in_group_farlie3 = 0 IF flag_get_back_to_base = 1 IF flag_reached_airport_exit = 1 IF flag_has_player_got_wanted_level = 0 IF NOT DOES_BLIP_EXIST blip_base ADD_BLIP_FOR_COORD coord_base_x coord_base_y coord_base_z blip_base // CHANGE_BLIP_COLOUR blip_base YELLOW PRINT_NOW dri2_25 5000 1 // get back to the pleasure domes IF flag_player_starts_conversation_with_toreno = 0 flag_player_starts_conversation_with_toreno = 1 ENDIF ENDIF ELSE IF NOT DOES_BLIP_EXIST blip_paint_and_spray_farlie3 ADD_SPRITE_BLIP_FOR_COORD coord_spray_shop_x_farlie3 coord_spray_shop_y_farlie3 coord_spray_shop_z_farlie3 RADAR_SPRITE_SPRAY blip_paint_and_spray_farlie3 ENDIF PRINT_NOW dri2_46 5000 1 // GET TO THE PAINT AND SPRAY IF DOES_BLIP_EXIST blip_airport_exit REMOVE_BLIP blip_airport_exit ENDIF ENDIF ELSE IF NOT DOES_BLIP_EXIST blip_airport_exit ADD_BLIP_FOR_COORD -1734.05 -579.94 15.56 blip_airport_exit ENDIF PRINT_NOW dri2_34 5000 1 // get out of the airport // CHANGE_BLIP_COLOUR blip_base YELLOW ENDIF ENDIF ENDIF IF flag_get_to_location_of_girl = 1 IF flag_phone_dialog_driv3 >= 5 // the construction site AND flag_phone_dialog_driv3 < 8 IF NOT DOES_BLIP_EXIST blip_destination_farlie3 ADD_BLIP_FOR_COORD -2071.0 209.0 35.0 blip_destination_farlie3 ENDIF ENDIF IF flag_phone_dialog_driv3 >= 9 // docks AND flag_phone_dialog_driv3 < 15 IF NOT DOES_BLIP_EXIST blip_destination_farlie3 ADD_BLIP_FOR_COORD -1772.0 152.0 152.0 blip_destination_farlie3 ENDIF ENDIF IF flag_phone_dialog_driv3 >= 15 // airport AND flag_phone_dialog_driv3 < 24 IF NOT DOES_BLIP_EXIST blip_destination_farlie3 ADD_BLIP_FOR_COORD coord_airport_x_driv3 coord_airport_y_driv3 coord_airport_z_driv3 blip_airport_farlie3 ENDIF ENDIF // check if counting is running during the first part of mission IF flag_get_to_location_of_girl = 1 // if player runs out of time IF timer_countdown_farlie3 <= 0 flag_get_to_location_of_girl = 0 flag_mission_failed_farlie3 = 1 // play a sound of an explosion over the phone PRINT_NOW ( FAR3_FD ) 5000 1 // shit, the phones gone dead! RETURN ENDIF ENDIF ENDIF ENDIF ELSE flag_shoot_correct_container = 0 flag_get_to_location_of_girl = 0 flag_torch_truck_farlie3 = 0 flag_mission_failed_farlie3 = 1 PRINT_NOW dri2_31 5000 1 // tbone is dead RETURN ENDIF // ENDWHILE ENDIF // ENDIF ELSE flag_shoot_correct_container = 0 flag_get_to_location_of_girl = 0 flag_torch_truck_farlie3 = 0 flag_mission_failed_farlie3 = 1 PRINT_NOW dri2_31 5000 1 // tbone is dead RETURN RETURN ENDIF RETURN // *********************************** audio****************************** load_and_play_audio_farlie3: IF play_audio_flag_farlie3 = 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 farlie3_audio[index_dialogue_farlie3] play_audio_flag_farlie3 = 1 ENDIF IF play_audio_flag_farlie3 = 1 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW $farlie3_text[index_dialogue_farlie3] 10000 1 // adding blips during conversations////////////////////// IF flag_phone_dialog_driv3 = 0 flag_converstion_going_on_farlie3 = 1 ENDIF IF flag_phone_dialog_driv3 = 5 IF NOT DOES_BLIP_EXIST blip_destination_farlie3 ADD_BLIP_FOR_COORD -2071.0 209.0 35.0 blip_destination_farlie3 ENDIF ENDIF IF flag_phone_dialog_driv3 = 8 REMOVE_BLIP blip_destination_farlie3 flag_converstion_going_on_farlie3 = 1 ENDIF IF flag_phone_dialog_driv3 = 11 ADD_BLIP_FOR_COORD -1772.0 152.0 152.0 blip_destination_farlie3 ENDIF IF flag_phone_dialog_driv3 = 14 flag_converstion_going_on_farlie3 = 1 REMOVE_BLIP blip_destination_farlie3 ENDIF IF flag_phone_dialog_driv3 = 18 // IF NOT DOES_BLIP_EXIST blip_destination_farlie3 ADD_BLIP_FOR_COORD coord_airport_x_driv3 coord_airport_y_driv3 coord_airport_z_driv3 blip_airport_farlie3 // ENDIF ENDIF //////////////////////////////////////////////////////////// play_audio_flag_farlie3 = 2 ENDIF ENDIF IF play_audio_flag_farlie3 = 2 IF HAS_MISSION_AUDIO_FINISHED 1 // temp_int = c3_counter - 1 TIMERA = 0 play_audio_flag_farlie3 = 0 CLEAR_THIS_PRINT $farlie3_text[index_dialogue_farlie3] index_dialogue_farlie3++ flag_phone_dialog_driv3++ ENDIF ENDIF RETURN // ******************************** MISSION PASSED! ******************************************** mission_passed_driv3: PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL player1 REMOVE_BLIP synd_contact_blip PRINT_WITH_NUMBER_BIG ( M_PASSS ) 7000 5000 1 //"Mission Passed!" //100 being the amount of cash ADD_SCORE player1 7000//amount of cash //INCREMENT_INT_STAT RESPECT 25//amount of respect AWARD_PLAYER_MISSION_RESPECT 25 flag_synd_mission_counter ++ REGISTER_MISSION_PASSED ( FAR_3 ) PLAYER_MADE_PROGRESS 1 REMOVE_BLIP synd_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ synd_blip_icon synd_contact_blip SET_INT_STAT PASSED_FARLIE3 1 RETURN // ******************************** MISSION FAILED!********************************************* mission_failed_driv3: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed! RETURN // ******************************** MISSION CLEANED!********************************************* mission_cleanup_driv3: disable_mod_garage = 0 flag_player_on_mission = 0 flag_is_farlie3_running = 0 // restoring flying skill // SET_INT_STAT FLYING_SKILL stored_flying_skill IF IS_PLAYER_PLAYING player1 // SHUT_CHAR_UP scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF SET_POLICE_IGNORE_PLAYER Player1 OFF MARK_MODEL_AS_NO_LONGER_NEEDED micro_uzi MARK_MODEL_AS_NO_LONGER_NEEDED BURRITO MARK_MODEL_AS_NO_LONGER_NEEDED dnb1 MARK_MODEL_AS_NO_LONGER_NEEDED dnb2 MARK_MODEL_AS_NO_LONGER_NEEDED dnb3 REMOVE_PICKUP pickup_gun_next_to_guard MARK_MODEL_AS_NO_LONGER_NEEDED stretch index_farlie3 = 0 WHILE index_farlie3 < 3 MARK_CHAR_AS_NO_LONGER_NEEDED char_baddies_farlie3[index_farlie3] index_farlie3++ ENDWHILE MARK_CHAR_AS_NO_LONGER_NEEDED char_escorts_farlie3[0] MARK_CHAR_AS_NO_LONGER_NEEDED char_escorts_farlie3[1] // DELETE_OBJECT invisible_object_farlie3 REMOVE_CHAR_ELEGANTLY char_toreno_farlie3 REMOVE_CHAR_ELEGANTLY char_tbone_farlie3 //MARK_CHAR_AS_NO_LONGER_NEEDED char_toreno_farlie3 UNLOAD_SPECIAL_CHARACTER 1 // unloading toreno UNLOAD_SPECIAL_CHARACTER 2 // unloading tbone /* MARK_CAR_AS_NO_LONGER_NEEDED car_cop1_farlie3 MARK_CAR_AS_NO_LONGER_NEEDED car_cop2_farlie3 MARK_CHAR_AS_NO_LONGER_NEEDED char_cop1_farlie3 MARK_CHAR_AS_NO_LONGER_NEEDED char_cop2_farlie3 */ MARK_CAR_AS_NO_LONGER_NEEDED car_van_with_buddy_inside MARK_CAR_AS_NO_LONGER_NEEDED car_escorts_farlie3[0] MARK_CAR_AS_NO_LONGER_NEEDED car_escorts_farlie3[1] MARK_CAR_AS_NO_LONGER_NEEDED get_away_car MARK_MODEL_AS_NO_LONGER_NEEDED freeway MARK_CAR_AS_NO_LONGER_NEEDED car_escorts_farlie3[0] MARK_CAR_AS_NO_LONGER_NEEDED car_escorts_farlie3[1] MARK_CAR_AS_NO_LONGER_NEEDED car_players_car_farlie3 REMOVE_BLIP blip_baddies_passengers[0] REMOVE_BLIP blip_baddies_passengers[1] REMOVE_BLIP blip_baddies_passengers[2] REMOVE_BLIP blip_players_car REMOVE_BLIP blip_van_farlie3 REMOVE_BLIP blip_airport_farlie3 REMOVE_BLIP blip_van_driver REMOVE_BLIP blip_base REMOVE_BLIP blip_torneo REMOVE_BLIP blip_tbone REMOVE_BLIP blip_airport_exit REMOVE_BLIP blip_destination_farlie3 REMOVE_BLIP blip_escorts_farlie3[0] REMOVE_BLIP blip_escorts_farlie3[1] REMOVE_BLIP blip_paint_and_spray_farlie3 MARK_CAR_AS_NO_LONGER_NEEDED car_players_car_farlie3 MARK_MODEL_AS_NO_LONGER_NEEDED PREMIER CLEAR_ONSCREEN_TIMER timer_countdown_farlie3 CLEAR_ONSCREEN_COUNTER int_distance_player_girl ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -1908.9, 292.3, 40.0 RADAR_SPRITE_SPRAY spray_shop[4] GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED RETURN } MISSION_START // ------------------------------------------------------------------------------------------------ // Steal Mission 1: Follow Steal -- Is currently listed as Steal 4 { SCRIPT_NAME steal1 // Begin... GOSUB mission_start_steal1 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_steal1 ENDIF GOSUB mission_cleanup_steal1 MISSION_END // ------------------------------------------------------------------------------------------------ // Variables // ---- Flags LVAR_INT st1_stage st1_in_car st1_cut_h st1_cut st1_girl_idx st1_onscreen LVAR_INT st1_blipped st1_blip_idx st1_col[6] st1_girl_route st1_locate LVAR_INT st1_take st1_clip_text st1_trail_text VAR_INT st1_route st1_route_nx st1_final_dest // ---- Blips LVAR_INT st1_hub_blip st1_blip[6] LVAR_INT st1_blip_colour st1_fail_colour // ---- Colours LVAR_INT st1_r st1_g st1_b st1_a LVAR_INT st1_r_end st1_g_end st1_b_end st1_a_end LVAR_INT st1_r_mult st1_g_mult st1_b_mult st1_a_mult LVAR_INT st1_r_sum st1_g_sum st1_b_sum st1_a_sum LVAR_INT st1_temp_sum_a st1_temp_sum_b // ---- Timers / Counters LVAR_INT st1_timer_start st1_timer_end st1_timer_diff LVAR_INT st1_textimer_diff st1_textimer_start LVAR_INT st1_girl_incar st1_girl_outcar LVAR_FLOAT st1_dist st1_spooked_fl st1_blip_dist VAR_FLOAT st1_cruise_speed LVAR_INT st1_score st1_guy_mourn LVAR_INT st1_cool_health LVAR_INT st1_loc_diff st1_loc_end st1_loc_start // ---- Coords LVAR_FLOAT st1_vector_x st1_vector_y st1_vector_h st1_heading_left st1_heading_right LVAR_FLOAT st1_blip_x[6] st1_blip_y[6] st1_blip_z[6] LVAR_FLOAT st1_repo_x st1_repo_y st1_repo_z st1_repo_h1 st1_repo_h2 LVAR_FLOAT st1_route_x[60] st1_route_y[60] st1_route_z[60] LVAR_FLOAT st1_cut_x[6] st1_cut_y[6] st1_cut_z[6] LVAR_FLOAT st1_door_x[2] st1_door_y[2] st1_door_z[2] LVAR_FLOAT st1_div_x[6] st1_div_y[6] st1_div_z[6] LVAR_FLOAT st1_car_loc_x st1_car_loc_y st1_car_loc_z LVAR_FLOAT st1_player_x st1_player_y st1_player_z LVAR_FLOAT st1_hub_x st1_hub_y st1_hub_z // ---- PIT Skid LVAR_FLOAT st1_heading_x st1_heading_y LVAR_FLOAT st1_velocity_x st1_velocity_y st1_velocity_z LVAR_FLOAT st1_velocity_mag st1_velocity_mag_sqr st1_velocity_forward st1_velocity_side LVAR_FLOAT st1_temp_1 st1_temp_2 // ---- Sequences LVAR_INT st1_zero_chat st1_cj_end st1_player_status st1_girl_cut_seq // ---- Dialogue LVAR_TEXT_LABEL st1_text[6] LVAR_INT st1_audio_char LVAR_INT st1_audio[17] st1_counter st1_audio_playing st1_audio_slot st1_alt_slot st1_ahead_counter // ---- Cameras LVAR_FLOAT st1_cam_x[10] st1_cam_y[10] st1_cam_z[10] // ---- Objects // ---- Entities // -------- Characters // -------- // ------------------------------------------------------------------------------------------------ // -------- Vehicles st1_girl_car_create: LVAR_INT st1_girl_car st1_girl_car_blip st1_girl_car_health LVAR_FLOAT st1_girl_car_x st1_girl_car_y st1_girl_car_z st1_girl_car_h st1_girl_car_speed LVAR_INT st1_girl st1_girl_blip LVAR_FLOAT st1_girl_x st1_girl_y st1_girl_z st1_girl_h REQUEST_MODEL URANUS REQUEST_MODEL HFYST LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED URANUS OR NOT HAS_MODEL_LOADED HFYST WAIT 0 ENDWHILE SUPPRESS_CAR_MODEL URANUS st1_girl_car_x = -2027.3347 st1_girl_car_y = 326.0038 st1_girl_car_z = 34.2344 st1_girl_car_h = 88.2674 st1_girl_x = -2025.4425 st1_girl_y = 323.5849 st1_girl_z = 34.1015 st1_girl_h = 77.8368 CLEAR_AREA st1_girl_car_x st1_girl_car_y st1_girl_car_z 5.0 TRUE //CUSTOM_PLATE_FOR_NEXT_CAR URANUS MAN_FAT CREATE_CAR URANUS st1_girl_car_x st1_girl_car_y st1_girl_car_z st1_girl_car SET_CAR_HEADING st1_girl_car st1_girl_car_h LOCK_CAR_DOORS st1_girl_car CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_ONLY_DAMAGED_BY_PLAYER st1_girl_car TRUE //CREATE_CHAR_INSIDE_CAR st1_girl_car PEDTYPE_CIVFEMALE HFYST st1_girl CREATE_CHAR PEDTYPE_CIVFEMALE HFYST st1_girl_x st1_girl_y st1_girl_z st1_girl SET_CHAR_HEADING st1_girl st1_girl_h //SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st1_girl FALSE SET_LOAD_COLLISION_FOR_CAR_FLAG st1_girl_car FALSE ADD_BLIP_FOR_CAR_OLD st1_girl_car 4 MARKER_ONLY st1_girl_car_blip CHANGE_CAR_COLOUR st1_girl_car 5 1 RETURN st1_girl_car_delete: MARK_MODEL_AS_NO_LONGER_NEEDED URANUS RETURN ADD_BLIP_FOR_COORD 0.0 0.0 0.0 mod_garage_blips[0] LVAR_INT st1_player_car LVAR_FLOAT st1_player_car_x st1_player_car_y st1_player_car_z st1_player_car_h st1_player_car_create: REQUEST_MODEL ALPHA WHILE NOT HAS_MODEL_LOADED ALPHA WAIT 0 ENDWHILE st1_player_car_x = -2043.9114 st1_player_car_y = 179.1213 st1_player_car_z = 27.8507 st1_player_car_h = 270.0 CLEAR_AREA st1_player_car_x st1_player_car_y st1_player_car_z 5.0 TRUE CREATE_CAR ALPHA st1_player_car_x st1_player_car_y st1_player_car_z st1_player_car SET_CAR_HEADING st1_player_car st1_player_car_h WARP_CHAR_INTO_CAR scplayer st1_player_car RETURN LVAR_INT st1_zero LVAR_FLOAT st1_zero_x st1_zero_y st1_zero_z st1_zero_h st1_zero_create: LOAD_SPECIAL_CHARACTER 1 zero REQUEST_ANIMATION CAR_CHAT WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_ANIMATION_LOADED CAR_CHAT WAIT 0 ENDWHILE st1_zero_x = -2034.5664 st1_zero_y = 175.2188 st1_zero_z = 27.8516 st1_zero_h = 13.5160 CLEAR_AREA st1_zero_x st1_zero_y st1_zero_z 5.0 TRUE CREATE_CHAR PEDTYPE_CIVMALE SPECIAL01 st1_zero_x st1_zero_y st1_zero_z st1_zero RETURN // -------- // -------- // ------------------------------------------------------------------------------------------------ // Start Mission mission_start_steal1: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 WAIT 0 // ------------------------------------------------------------------------------------------------ // Initialize Variables // ---- Flags st1_stage = 0 st1_cut_h = 0 st1_cut = 0 st1_in_car = 0 st1_girl_idx = 1 st1_onscreen = 1 st1_blipped = 0 st1_take = 0 st1_score = 500 st1_final_dest = 57 st1_route = 2 st1_route_nx = 3 st1_cruise_speed = 30.0 st1_clip_text = 0 st1_trail_text = 0 st1_counter = 0 st1_ahead_counter = 1 st1_audio_slot = 1 st1_alt_slot = 2 st1_audio_playing = 0 // ---- Colours st1_blip_colour = 4278190335 st1_fail_colour = 4286611800 st1_col[1] = 4278190335// Red st1_col[2] = 4282400938 // pink w/ alpha // 4278190250 // alpha //4282401023 st1_col[3] = 4286611800 // pinker w/ alpha // 4278190165 // alpha //4286611966 // Pink st1_col[4] = 0//4290822654 st1_col[5] = 0//4294967295// White 4278190080 16711680 65280 // st1_r = 0 // Green to Red // st1_g = 255 // st1_b = 0 // st1_a = 255 // // st1_r_end = 255 // st1_g_end = 0 // st1_b_end = 0 // st1_a_end = 255 st1_r = 255 st1_g = 0 st1_b = 0 st1_a = 255 st1_r_end = 0 st1_g_end = 0 st1_b_end = 0 st1_a_end = 0 st1_r_mult = 16777216 st1_g_mult = 65536 st1_b_mult = 256 st1_a_mult = 1 //st1_blip_colour = (st1_r * st1_r_mult) + (st1_g * st1_g_mult) + (st1_b * st1_b_mult) + (st1_a * st1_a_mult) // ---- Counter Var // ---- Coords st1_repo_x = -2711.30 st1_repo_y = 118.81 st1_repo_z = 3.99 st1_repo_h1 = 2.07 // North st1_repo_h2 = 178.25 // South st1_hub_x = -2033.1749 st1_hub_y = 178.6755 st1_hub_z = 27.8516 st1_blip_x[1] = -2708.79 st1_blip_y[1] = -9.59 st1_blip_z[1] = 3.98 st1_cut_x[0] = -2689.74 st1_cut_y[0] = 91.48 st1_cut_z[0] = 5.04 st1_cut_x[1] = -2692.04 st1_cut_y[1] = 91.71 st1_cut_z[1] = 4.39 st1_cut_x[3] = -2904.51 st1_cut_y[3] = 1181.56 st1_cut_z[3] = 13.71 st1_cut_x[4] = -2916.92 st1_cut_y[4] = 1182.06 st1_cut_z[4] = 13.59 st1_cut_x[5] = -2917.76 st1_cut_y[5] = 1176.93 st1_cut_z[5] = 13.67 st1_door_x[0] = -2899.05 st1_door_y[0] = 1170.08 st1_door_z[0] = 13.03 st1_door_x[1] = -2898.66 st1_door_y[1] = 1166.74 st1_door_z[1] = 13.21 // ---- Diversion Coords st1_div_x[0] = 0.0 st1_div_y[0] = 0.0 st1_div_z[0] = 0.0 st1_div_x[1] = 0.0 st1_div_y[1] = 0.0 st1_div_z[1] = 0.0 st1_div_x[2] = 0.0 st1_div_y[2] = 0.0 st1_div_z[2] = 0.0 st1_div_x[3] = 0.0 st1_div_y[3] = 0.0 st1_div_z[3] = 0.0 st1_div_x[4] = 0.0 st1_div_y[4] = 0.0 st1_div_z[4] = 0.0 st1_div_x[5] = 0.0 st1_div_y[5] = 0.0 st1_div_z[5] = 0.0 // ---- Camera Coords st1_cam_x[0] = -2704.72 st1_cam_y[0] = 113.56 st1_cam_z[0] = 5.52 st1_cam_x[1] = -2701.12 st1_cam_y[1] = 100.21 st1_cam_z[1] = 5.47 st1_cam_x[2] = -2699.84 st1_cam_y[2] = 94.03 st1_cam_z[2] = 6.41 st1_cam_x[3] = -2710.60 st1_cam_y[3] = 126.88 st1_cam_z[3] = 5.13 st1_cam_x[4] = 0.0 st1_cam_y[4] = 0.0 st1_cam_z[4] = 0.0 // ---- Dialogue Text $st1_text[1] = STL1_AA // Here, this gadget is set to pick up on cell phone signals. $st1_text[2] = STL1_AB // Each time she makes a call it will give you the new location. $st1_text[3] = STL1_AC // You have to stay close if you're going get an updated position. $st1_text[4] = STL1_AD // Ok? $st1_text[5] = STL1_AE // Sure thing. Thanks, Zee. // ---- Dialogue Audio st1_audio[1] = SOUND_STL1_AA // Here, this gadget is set to pick up on cell phone signals. st1_audio[2] = SOUND_STL1_AB // Each time she makes a call it will give you the new location. st1_audio[3] = SOUND_STL1_AC // You have to stay close if you're going get an updated position. st1_audio[4] = SOUND_STL1_AD // Ok? st1_audio[5] = SOUND_STL1_AE // Sure thing. Thanks, Zee. // ------------------------------------------------------------------------------------------------ // Request Models LOAD_MISSION_TEXT steal1 // ------------------------------------------------------------------------------------------------ // Entity GoSubs // ------------------------------------------------------------------------------------------------ // Task Sequences st1_girl_incar = 0 st1_girl_outcar = 1 st1_girl_route = 2 // ------------------------------------------------------------------------------------------------ // Start Cut FORCE_WEATHER_NOW WEATHER_SUNNY_SF SET_AREA_VISIBLE 1 LOAD_CUTSCENE STEAL_1 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 SET_PLAYER_CONTROL player1 OFF // ------------------------------------------------------------------------------------------------ // Main Loop st1_main_loop: WAIT 0 // ---- Load & Play Dialogue... IF NOT st1_counter = 0 IF st1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED st1_alt_slot CLEAR_MISSION_AUDIO st1_alt_slot ENDIF st1_audio_playing = 1 ENDIF IF st1_audio_playing = 1 LOAD_MISSION_AUDIO st1_audio_slot st1_audio[st1_counter] //GOSUB st1_dialogue_pos //ATTACH_MISSION_AUDIO_TO_PED st1_audio_slot st1_audio_char st1_audio_playing = 2 ENDIF IF st1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED st1_audio_slot PLAY_MISSION_AUDIO st1_audio_slot PRINT_NOW $st1_text[st1_counter] 10000 1 st1_audio_playing = 3 ENDIF ENDIF IF st1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED st1_audio_slot CLEAR_THIS_PRINT $st1_text[st1_counter] IF st1_audio_slot = 1 st1_audio_slot = 2 st1_alt_slot = 1 ELSE st1_audio_slot = 1 st1_alt_slot = 2 ENDIF st1_counter = 0 st1_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED st1_alt_slot IF st1_counter < 60 st1_ahead_counter = st1_counter + 1 LOAD_MISSION_AUDIO st1_alt_slot st1_audio[st1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF // ---- IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_passed_steal1 ENDIF // ---- IF NOT IS_CHAR_DEAD scplayer IF st1_stage < 3 IF st1_in_car = 0 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer st1_player_car st1_in_car = 1 ENDIF ENDIF IF st1_in_car = 1 IF NOT IS_CHAR_IN_ANY_CAR scplayer st1_in_car = 0 ENDIF ENDIF ENDIF ENDIF // ---- IF st1_stage = 0 IF st1_cut = 0 // DO_FADE 500 FADE_OUT // WHILE GET_FADING_STATUS // WAIT 0 // ENDWHILE CLEAR_AREA st1_hub_x st1_hub_y st1_hub_z 25.0 TRUE OPEN_GARAGE hbgdSFS SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION -2037.6014 183.5734 30.4011 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2037.0173 182.7901 30.1884 JUMP_CUT GOSUB st1_player_car_create GOSUB st1_zero_create GOSUB st1_girl_car_create GOSUB st1_escape_route LOAD_SCENE_IN_DIRECTION -2029.9041 179.7978 29.0075 130.0 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD st1_player_car AND NOT IS_CHAR_DEAD st1_zero IF st1_audio_playing = 0 st1_counter = 1 OPEN_SEQUENCE_TASK st1_zero_chat TASK_GO_STRAIGHT_TO_COORD -1 -2032.55 176.89 28.95 PEDMOVE_WALK -2 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_PLAY_ANIM -1 car_talkm_in CAR_CHAT 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM -1 car_talkm_loop CAR_CHAT 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM -1 car_talkm_out CAR_CHAT 4.0 FALSE FALSE FALSE FALSE 0 CLOSE_SEQUENCE_TASK st1_zero_chat PERFORM_SEQUENCE_TASK st1_zero st1_zero_chat TASK_CAR_DRIVE_TO_COORD scplayer st1_player_car st1_hub_x st1_hub_y st1_hub_z 12.0 MODE_ACCURATE FALSE DRIVINGMODE_AVOIDCARS GET_GAME_TIMER st1_timer_start st1_cut = 1 ENDIF ENDIF ENDIF IF st1_cut > 0 GET_GAME_TIMER st1_timer_end st1_timer_diff = st1_timer_end - st1_timer_start IF st1_timer_diff > 1000 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED st1_timer_start -= 10000 st1_cut = 5 ENDIF ENDIF ENDIF IF st1_cut = 1 GET_GAME_TIMER st1_timer_end st1_timer_diff = st1_timer_end - st1_timer_start IF st1_timer_diff > 1000 IF st1_audio_playing = 0 //LOAD_SCENE -2022.5178 322.6858 34.6179 st1_counter = 2 GET_GAME_TIMER st1_timer_start st1_cut = 2 ENDIF ENDIF ENDIF IF st1_cut = 2 GET_GAME_TIMER st1_timer_end st1_timer_diff = st1_timer_end - st1_timer_start IF st1_timer_diff > 1000 IF st1_audio_playing = 0 st1_counter = 3 GET_GAME_TIMER st1_timer_start SET_FIXED_CAMERA_POSITION -2031.2416 175.4691 29.0587 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2031.5013 176.4334 29.0070 JUMP_CUT st1_cut = 3 ENDIF ENDIF ENDIF IF st1_cut = 3 IF NOT IS_CAR_DEAD st1_girl_car AND NOT IS_CHAR_DEAD st1_girl GET_GAME_TIMER st1_timer_end st1_timer_diff = st1_timer_end - st1_timer_start IF st1_timer_diff > 1000 IF st1_audio_playing = 0 CLEAR_PRINTS DO_FADE 100 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //LOAD_SCENE -2022.5178 322.6858 34.6179 SET_FIXED_CAMERA_POSITION -2022.5178 322.6858 34.6179 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2023.3816 323.1579 34.7936 JUMP_CUT LOAD_SCENE_IN_DIRECTION -2022.5178 322.6858 34.6179 50.0 DO_FADE 100 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE st1_counter = 4 IF NOT IS_CAR_DEAD st1_girl_car AND NOT IS_CHAR_DEAD st1_girl TASK_ENTER_CAR_AS_DRIVER st1_girl st1_girl_car -1 GET_GAME_TIMER st1_timer_start st1_cut = 4 ENDIF ENDIF ENDIF ENDIF ENDIF IF st1_cut = 4 IF NOT IS_CAR_DEAD st1_girl_car IF NOT IS_CHAR_DEAD st1_girl IF IS_CHAR_SITTING_IN_CAR st1_girl st1_girl_car IF st1_audio_playing = 0 st1_counter = 5 GET_GAME_TIMER st1_timer_start OPEN_SEQUENCE_TASK st1_girl_cut_seq TASK_CAR_DRIVE_TO_COORD -1 st1_girl_car st1_route_x[1] st1_route_y[1] st1_route_z[1] 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 st1_girl_car st1_route_x[2] st1_route_y[2] st1_route_z[2] 30.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK st1_girl_cut_seq PERFORM_SEQUENCE_TASK st1_girl st1_girl_cut_seq st1_cut = 5 ENDIF ENDIF ENDIF ENDIF ENDIF IF st1_cut = 5 GET_GAME_TIMER st1_timer_end st1_timer_diff = st1_timer_end - st1_timer_start IF st1_timer_diff > 1000 IF st1_audio_playing = 0 CLEAR_PRINTS DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLOSE_GARAGE hbgdSFS CLEAR_CHAR_TASKS scplayer IF NOT IS_CAR_DEAD st1_player_car LOAD_SCENE -2028.8267 178.4434 27.8516 WARP_CHAR_FROM_CAR_TO_COORD scplayer -2030.6725 179.1596 28.9611 SET_CAR_COORDINATES st1_player_car -2028.8267 178.4434 27.8516 SET_CAR_HEADING st1_player_car 266.8448 WARP_CHAR_INTO_CAR scplayer st1_player_car ENDIF LOAD_MISSION_AUDIO 3 SOUND_BLIP_DETECTED WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD st1_girl_car AND NOT IS_CHAR_DEAD st1_girl IF NOT IS_CHAR_IN_CAR st1_girl st1_girl_car WARP_CHAR_INTO_CAR st1_girl st1_girl_car ENDIF ENDIF REMOVE_ANIMATION CAR_CHAT RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER DELETE_CHAR st1_zero UNLOAD_SPECIAL_CHARACTER 1 MARK_MODEL_AS_NO_LONGER_NEEDED ALPHA SWITCH_WIDESCREEN OFF DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON st1_stage = 1 ENDIF ENDIF ENDIF ENDIF // Mini cutscene... IF st1_stage = 1 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD st1_girl_car AND NOT IS_CHAR_DEAD st1_girl IF IS_CHAR_IN_CAR st1_girl st1_girl_car SET_PLAYER_CONTROL player1 ON PRINT ( STL1_03 ) 7000 1 ADD_STUCK_CAR_CHECK_WITH_WARP st1_girl_car 1.0 2000 TRUE TRUE TRUE 2 TASK_CAR_DRIVE_TO_COORD st1_girl st1_girl_car st1_route_x[2] st1_route_y[2] st1_route_z[2] 35.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS st1_stage = 2 ENDIF ENDIF ENDIF IF IS_CAR_DEAD st1_girl_car CLEAR_PRINTS PRINT_NOW ( STL1_07 ) 5000 1 // ~s~You destroyed the car! GOTO mission_failed_steal1 ENDIF IF st1_stage = 2 IF NOT IS_CAR_DEAD st1_girl_car AND NOT IS_CHAR_DEAD st1_girl AND NOT IS_CHAR_DEAD scplayer IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_SPACE st1_blipped = 3 SET_CAR_TEMP_ACTION st1_girl_car TEMPACT_HANDBRAKESTRAIGHT 2000 ENDIF IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer st1_girl 50.0 50.0 50.0 FALSE IF st1_cruise_speed < 30.0 st1_cruise_speed += 0.1 ENDIF ELSE IF st1_cruise_speed > 24.0 st1_cruise_speed -= 0.1 ENDIF ENDIF SET_CAR_CRUISE_SPEED st1_girl_car st1_cruise_speed GET_CAR_SPEED st1_girl_car st1_girl_car_speed GET_CAR_COORDINATES st1_girl_car st1_girl_car_x st1_girl_car_y st1_girl_car_z IF st1_route < st1_final_dest IF LOCATE_CHAR_IN_CAR_3D st1_girl st1_route_x[st1_route] st1_route_y[st1_route] st1_route_z[st1_route] 10.0 10.0 10.0 FALSE st1_route++ st1_route_nx++ TASK_CAR_DRIVE_TO_COORD st1_girl st1_girl_car st1_route_x[st1_route] st1_route_y[st1_route] st1_route_z[st1_route] st1_cruise_speed MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS //CAR_GOTO_COORDINATES_RACING st1_girl_car st1_route_x[st1_route] st1_route_y[st1_route] st1_route_z[st1_route] ENDIF ELSE IF LOCATE_CHAR_IN_CAR_3D st1_girl st1_route_x[st1_route] st1_route_y[st1_route] st1_route_z[st1_route] 8.0 8.0 8.0 FALSE TASK_CAR_DRIVE_WANDER st1_girl st1_girl_car 35.0 DRIVINGMODE_AVOIDCARS // IF NOT IS_CAR_TYRE_BURST st1_girl_car 3 // BURST_CAR_TYRE st1_girl_car 3 // ENDIF st1_route++ st1_route_nx++ ENDIF IF st1_route > st1_final_dest IF NOT IS_CAR_ON_SCREEN st1_girl_car GET_CHAR_COORDINATES scplayer st1_player_x st1_player_y st1_player_z GET_DISTANCE_BETWEEN_COORDS_2D st1_girl_car_x st1_girl_car_y st1_player_x st1_player_y st1_dist IF st1_dist > 200.0 PRINT_NOW ( STL1_09 ) 5000 1 // lost her trail GOTO mission_failed_steal1 ENDIF ENDIF ENDIF ENDIF IF st1_blipped = 2 AND st1_locate = 0 // GET_OFFSET_FROM_CAR_IN_WORLD_COORDS st1_girl_car 0.0 17.0 0.0 st1_car_loc_x st1_car_loc_y st1_car_loc_z GET_GAME_TIMER st1_loc_start IF LOCATE_CHAR_ANY_MEANS_3D scplayer st1_girl_car_x st1_girl_car_y st1_girl_car_z 7.0 7.0 7.0 FALSE st1_locate = 1 ELSE st1_locate = 0 ENDIF ENDIF // PIT Technique... //IF st1_blipped = 2 IF st1_locate = 1 IF st1_girl_car_speed > 10.0 GET_CAR_SPEED_VECTOR st1_girl_car st1_velocity_x st1_velocity_y st1_velocity_z // Get magnitude of car velocity (2d only) st1_temp_1 = st1_velocity_x * st1_velocity_x st1_temp_2 = st1_velocity_y * st1_velocity_y st1_velocity_mag_sqr = st1_temp_1 + st1_temp_2 SQRT st1_velocity_mag_sqr st1_velocity_mag GET_CAR_FORWARD_X st1_girl_car st1_heading_x GET_CAR_FORWARD_Y st1_girl_car st1_heading_y // Get car velocity in forward direction st1_temp_1 = st1_velocity_x * st1_heading_x st1_temp_2 = st1_velocity_y * st1_heading_y st1_velocity_forward= st1_temp_1 + st1_temp_2 // Get car sideways velocity by subtracting fwd vel from total st1_temp_1 = st1_velocity_forward * st1_velocity_forward st1_temp_2 = st1_velocity_mag_sqr - st1_temp_1 SQRT st1_temp_2 st1_velocity_side // Get ratio of sideways vel to forward speed to get skid angle st1_temp_1 = st1_velocity_side / st1_velocity_forward //WRITE_DEBUG_WITH_FLOAT st1_temp_1 st1_temp_1 IF st1_temp_1 > 2.2 // Inv Tan //VIEW_FLOAT_VARIABLE st1_temp_1 st1_temp_1 SET_CAR_TEMP_ACTION st1_girl_car TEMPACT_HANDBRAKESTRAIGHT 2000 st1_blipped = 3 // Should be 3 st1_locate = 0 ELSE st1_blipped = 2 st1_locate = 0 ENDIF ENDIF //st1_temp_1 = 999.9 ENDIF IF st1_blipped = 3 // You win!!! IF NOT IS_CAR_DEAD st1_girl_car CLEAR_PRINTS CLEAR_CHAR_TASKS st1_girl SET_CAR_CRUISE_SPEED st1_girl_car 0.0 PRINT_NOW ( STL1_05 ) 5000 1 REMOVE_STUCK_CAR_CHECK st1_girl_car REMOVE_BLIP st1_girl_car_blip ADD_BLIP_FOR_CAR st1_girl_car st1_girl_car_blip SET_BLIP_AS_FRIENDLY st1_girl_car_blip TRUE IF IS_CAR_STOPPED st1_girl_car TASK_LEAVE_CAR_AND_FLEE st1_girl st1_girl_car st1_girl_car_x st1_girl_car_y st1_girl_car_z st1_stage = 3 ENDIF ENDIF ENDIF IF st1_blipped = 0 REMOVE_BLIP st1_girl_car_blip GET_CAR_COORDINATES st1_girl_car st1_girl_x st1_girl_y st1_girl_z ADD_BLIP_FOR_COORD st1_girl_x st1_girl_y st1_girl_z st1_girl_car_blip IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer st1_girl_car_x st1_girl_car_y st1_girl_car_z 25.0 25.0 25.0 FALSE PLAY_MISSION_AUDIO 3 ENDIF // REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BLIP_DETECTED // st1_r = 0 // st1_g = 255 // st1_b = 0 // st1_a = 255 st1_r = 255 st1_g = 0 st1_b = 0 st1_a = 255 GOSUB st1_colour_check GET_GAME_TIMER st1_timer_start GET_GAME_TIMER st1_textimer_start st1_blipped = 1 ENDIF IF st1_blipped = 1 GET_GAME_TIMER st1_timer_end st1_timer_diff = st1_timer_end - st1_timer_start st1_textimer_diff = st1_timer_end - st1_textimer_start IF st1_textimer_diff > 1000 IF st1_trail_text = 0 PRINT ( STL1_03 ) 8000 1 st1_trail_text = 1 ENDIF ENDIF IF st1_timer_diff > 30 GOSUB st1_colour_check GET_GAME_TIMER st1_timer_start ENDIF IF NOT IS_CHAR_DEAD st1_girl IF LOCATE_CHAR_ANY_MEANS_2D scplayer st1_girl_x st1_girl_y 20.0 20.0 FALSE OR LOCATE_CHAR_IN_CAR_CHAR_3D scplayer st1_girl 50.0 50.0 50.0 FALSE IF st1_clip_text = 0 PRINT_HELP ( STL1_04 ) // Get in front // Clip her back end to spin her out of control. st1_clip_text = 1 ENDIF REMOVE_BLIP st1_girl_car_blip GET_GAME_TIMER st1_timer_start ADD_BLIP_FOR_CAR st1_girl_car st1_girl_car_blip st1_locate = 0 st1_blipped = 2 ENDIF IF LOCATE_CHAR_IN_CAR_CHAR_3D scplayer st1_girl 20.0 20.0 20.0 FALSE IF st1_clip_text = 1 PRINT_NOW ( STL1_02 ) 12000 1 st1_clip_text = 2 ENDIF ENDIF ENDIF IF st1_a < 128 PRINT_NOW ( STL1_10 ) 100 1 ENDIF //IF st1_r = st1_r_end IF st1_a = st1_a_end PRINT_NOW ( STL1_09 ) 7000 1 // lost her trail GOTO mission_failed_steal1 ENDIF ENDIF IF st1_blipped = 2 IF NOT IS_CAR_DEAD st1_girl_car IF st1_dist > 200.0 st1_blipped = 0 ENDIF GET_GAME_TIMER st1_timer_end st1_timer_diff = st1_timer_end - st1_timer_start IF st1_timer_diff > 2000 IF NOT IS_CAR_ON_SCREEN st1_girl_car st1_blipped = 0 ENDIF ENDIF IF NOT IS_CAR_ON_SCREEN st1_girl_car st1_blipped = 0 ELSE //IF st1_timer_diff > 10000 //ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_CHAR_DEAD st1_girl st1_stage = 3 ENDIF ENDIF IF st1_stage = 3 IF NOT IS_CAR_DEAD st1_girl_car AND NOT IS_CHAR_DEAD scplayer IF st1_take = 0 LOCK_CAR_DOORS st1_girl_car CARLOCK_UNLOCKED st1_take = 1 ENDIF IF st1_take = 1 IF IS_CHAR_IN_CAR scplayer st1_girl_car REMOVE_BLIP st1_girl_car_blip PRINT_NOW ( STL1_06 ) 5000 1 // Head back to the garage. ADD_BLIP_FOR_COORD st1_hub_x st1_hub_y st1_hub_z st1_hub_blip CHANGE_GARAGE_TYPE hbgdSFS GARAGE_FOR_SCRIPT_TO_OPEN_AND_CLOSE REQUEST_CAR_RECORDING 171 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 171 WAIT 0 ENDWHILE st1_take = 2 ENDIF ENDIF IF st1_take = 2 IF NOT IS_CAR_DEAD st1_girl_car IF IS_CHAR_IN_CAR scplayer st1_girl_car IF LOCATE_CHAR_IN_CAR_3D scplayer st1_hub_x st1_hub_y st1_hub_z 4.0 4.0 4.0 TRUE IF IS_CHAR_SITTING_IN_CAR scplayer st1_girl_car CLEAR_AREA st1_hub_x st1_hub_y st1_hub_z 25.0 TRUE SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION -2031.2416 175.4691 29.0587 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2031.5013 176.4334 29.0070 JUMP_CUT OPEN_GARAGE hbgdSFS REMOVE_BLIP st1_hub_blip st1_hub_x = -2043.9114 st1_hub_y = 179.1213 st1_hub_z = 27.8507 //ADD_BLIP_FOR_COORD st1_hub_x st1_hub_y st1_hub_z st1_hub_blip //SET_BLIP_AS_FRIENDLY st1_hub_blip FALSE //PRINT_NOW ( STL1_13 ) 7000 1 //Drive the car into the garage. GET_CAR_HEALTH st1_girl_car st1_girl_car_health st1_girl_car_health /= 10 st1_girl_car_health *= 100 st1_score = 2000 st1_score += st1_girl_car_health st1_take = 21 ENDIF ENDIF ENDIF ENDIF ENDIF IF st1_take = 21 IF NOT IS_CAR_DEAD st1_girl_car IF IS_GARAGE_OPEN hbgdSFS CLEAR_AREA st1_hub_x st1_hub_y st1_hub_z 25.0 TRUE START_PLAYBACK_RECORDED_CAR st1_girl_car 171 SET_FIXED_CAMERA_POSITION -2037.6014 183.5734 30.4011 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2037.0173 182.7901 30.1884 JUMP_CUT st1_take = 3 ENDIF ENDIF ENDIF //telling player to drive into garage IF st1_take = 3 IF NOT IS_CAR_DEAD st1_girl_car IF IS_CHAR_IN_CAR scplayer st1_girl_car IF LOCATE_STOPPED_CHAR_IN_CAR_3D scplayer st1_hub_x st1_hub_y st1_hub_z 4.0 4.0 4.0 FALSE // SET_PLAYER_CONTROL player1 OFF // SWITCH_WIDESCREEN ON CLOSE_GARAGE hbgdSFS CLEAR_PRINTS // SET_FIXED_CAMERA_POSITION -2051.0129 176.9538 28.9961 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -2050.0369 177.1556 29.0763 JUMP_CUT st1_take = 32 ENDIF ENDIF ENDIF ENDIF IF st1_take = 31 IF NOT IS_CAR_DEAD st1_girl_car OPEN_SEQUENCE_TASK st1_cj_end TASK_LEAVE_CAR -1 st1_girl_car TASK_GO_STRAIGHT_TO_COORD -1 -2035.4708 176.6342 27.8359 PEDMOVE_WALK -2 CLOSE_SEQUENCE_TASK st1_cj_end PERFORM_SEQUENCE_TASK scplayer st1_cj_end st1_take = 32 ENDIF ENDIF IF st1_take = 32 IF NOT IS_CAR_DEAD st1_girl_car //IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer st1_hub_x st1_hub_y 6.0 6.0 FALSE CLOSE_GARAGE hbgdSFS DO_FADE 1500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE st1_take = 41 //ENDIF ENDIF ENDIF IF st1_take = 41 LVAR_FLOAT old_X old_Y old_Z old_Heading SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FADING_COLOUR 0 0 1 GET_CHAR_COORDINATES scplayer old_X old_Y old_Z GET_CHAR_HEADING scplayer old_Heading DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 IF NOT IS_PLAYER_PLAYING player1 TERMINATE_THIS_SCRIPT ENDIF ENDWHILE LOAD_SCENE_IN_DIRECTION -2690.9082 206.6429 7.2879 88.2793 SET_CHAR_COORDINATES scplayer -2691.1638 206.6478 3.3359 SET_FIXED_CAMERA_POSITION -2689.9163 206.5855 7.3990 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2690.9082 206.6429 7.2879 JUMP_CUT DO_FADE 500 FADE_IN PRINT_NOW ( JAP_MOD ) 6000 1 WAIT 6000 PRINT_NOW ( WANG_C ) 6000 1 WAIT 6000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 IF NOT IS_PLAYER_PLAYING player1 TERMINATE_THIS_SCRIPT ENDIF ENDWHILE LOAD_SCENE_IN_DIRECTION old_X old_Y old_Z old_Heading old_Z = old_Z - 1.0 SET_CHAR_COORDINATES scplayer old_X old_Y old_Z SET_CHAR_HEADING scplayer old_Heading WAIT 500 DO_FADE 500 FADE_IN SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF ACTIVATE_GARAGE mds1SFS //PP CAR GARAGE REMOVE_BLIP mod_garage_blips[0] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2728.5, 212.2, 3.4 RADAR_SPRITE_MOD_GARAGE mod_garage_blips[0] japcar_mod_garage_open = 1 st1_take = 4 ENDIF IF st1_take = 4 // GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK st1_player_status // IF st1_player_status = FINISHED_TASK IF IS_GARAGE_CLOSED hbgdSFS SWITCH_WIDESCREEN OFF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -2032.4708 176.6342 27.8359 DELETE_CAR st1_girl_car SET_CHAR_HEADING scplayer 267.9 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //PRINT_NOW ( STL1_08 ) 5000 1 // Well done! GOTO mission_passed_steal1 ENDIF //ENDIF ENDIF ENDIF ENDIF // Get Player's car... IF NOT IS_CHAR_DEAD scplayer IF st1_take > 1 AND st1_take < 4 IF NOT IS_CAR_DEAD st1_girl_car IF st1_in_car = 0 PRINT_NOW ( STL1_11 ) 100 1 IF IS_CHAR_IN_CAR scplayer st1_girl_car REMOVE_BLIP st1_girl_car_blip REMOVE_BLIP st1_hub_blip PRINT_NOW ( STL1_06 ) 5000 1 // Head back to the garage. ADD_BLIP_FOR_COORD st1_hub_x st1_hub_y st1_hub_z st1_hub_blip st1_in_car = 1 ENDIF ENDIF IF st1_in_car = 1 IF NOT IS_CHAR_IN_CAR scplayer st1_girl_car REMOVE_BLIP st1_hub_blip REMOVE_BLIP st1_girl_car_blip ADD_BLIP_FOR_CAR st1_girl_car st1_girl_car_blip SET_BLIP_AS_FRIENDLY st1_girl_car_blip TRUE st1_in_car = 0 ENDIF ENDIF ENDIF ENDIF ENDIF GOTO st1_main_loop // ------------------------------------------------------------------------------------------------ // Mission Failed mission_failed_steal1: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // ------------------------------------------------------------------------------------------------ // Mission Passed mission_passed_steal1: flag_steal_mission_counter ++ SWITCH_CAR_GENERATOR steal_car_cargen1 101 REGISTER_MISSION_PASSED ( STEAL_1 ) PLAYER_MADE_PROGRESS 1 PLAY_MISSION_PASSED_TUNE 1 PRINT_WITH_NUMBER_BIG ( M_PASSS ) 5000 5000 1 //"Mission Passed!" ADD_SCORE player1 5000 //amount of cash reward AWARD_PLAYER_MISSION_RESPECT 5 //amount of respect CLEAR_WANTED_LEVEL player1 RETURN // ------------------------------------------------------------------------------------------------ // Mission Cleanup mission_cleanup_steal1: // ---- Entities CLEAR_MISSION_AUDIO 3 // ---- Blips REMOVE_BLIP st1_girl_car_blip REMOVE_BLIP st1_hub_blip REMOVE_BLIP st1_girl_car_blip RELEASE_WEATHER // ---- Models DELETE_CHAR st1_girl DELETE_CAR st1_girl_car GOSUB st1_girl_car_delete MARK_MODEL_AS_NO_LONGER_NEEDED ALPHA MARK_MODEL_AS_NO_LONGER_NEEDED HFYST // ---- Clear Script Stuff flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED RETURN // ------------------------------------------------------------------------------------------------ st1_colour_check: //IF st1_r < 255 // st1_r += 1 //ENDIF // //IF st1_r = 255 // st1_g -= 1 //ENDIF IF st1_g < 255 //st1_r -= 1 st1_g += 1 st1_b += 1 ENDIF IF st1_g = 255 st1_a -= 1 ENDIF st1_r_sum = st1_r * st1_r_mult st1_g_sum = st1_g * st1_g_mult st1_b_sum = st1_b * st1_b_mult st1_a_sum = st1_a * st1_a_mult st1_temp_sum_a = st1_r_sum + st1_g_sum st1_temp_sum_b = st1_b_sum + st1_a_sum st1_blip_colour = st1_temp_sum_a + st1_temp_sum_b CHANGE_BLIP_COLOUR st1_girl_car_blip st1_blip_colour RETURN st1_escape_route: st1_route_x[0] = -2017.0007 st1_route_y[0] = 322.4644 st1_route_z[0] = 34.7593 st1_route_x[1] = -2036.4390 st1_route_y[1] = 322.4642 st1_route_z[1] = 34.0156 st1_route_x[2] = -2148.5054 st1_route_y[2] = 227.5995 st1_route_z[2] = 34.8814 st1_route_x[3] = -2244.5747 st1_route_y[3] = 211.4546 st1_route_z[3] = 34.8840 st1_route_x[4] = -2252.4258 st1_route_y[4] = 110.4054 st1_route_z[4] = 34.8813 st1_route_x[5] = -2254.3977 st1_route_y[5] = 64.4779 st1_route_z[5] = 34.8865 st1_route_x[6] = -2333.1938 st1_route_y[6] = 52.1153 st1_route_z[6] = 34.8895 st1_route_x[7] = -2373.7935 st1_route_y[7] = -39.8936 st1_route_z[7] = 34.8887 st1_route_x[8] = -2411.4060 st1_route_y[8] = -71.5329 st1_route_z[8] = 34.8695 st1_route_x[9] = -2421.9858 st1_route_y[9] = -171.5927 st1_route_z[9] = 34.8702 st1_route_x[10] = -2514.4871 st1_route_y[10] = -209.5909 st1_route_z[10] = 24.5432 st1_route_x[11] = -2612.3376 st1_route_y[11] = -208.1451 st1_route_z[11] = 3.8877 st1_route_x[12] = -2700.5417 st1_route_y[12] = -205.7518 st1_route_z[12] = 3.8928 st1_route_x[13] = -2703.4553 st1_route_y[13] = -105.7246 st1_route_z[13] = 3.8899 st1_route_x[14] = -2704.9326 st1_route_y[14] = -88.0339 st1_route_z[14] = 3.8934 st1_route_x[15] = -2791.1985 st1_route_y[15] = -69.7781 st1_route_z[15] = 6.7409 st1_route_x[16] = -2807.2424 st1_route_y[16] = 29.8687 st1_route_z[16] = 6.7487 st1_route_x[17] = -2807.9224 st1_route_y[17] = 131.0431 st1_route_z[17] = 6.7324 st1_route_x[18] = -2807.2468 st1_route_y[18] = 232.0953 st1_route_z[18] = 6.7535 st1_route_x[19] = -2831.3765 st1_route_y[19] = 329.6273 st1_route_z[19] = 4.0742 st1_route_x[20] = -2851.8401 st1_route_y[20] = 427.8425 st1_route_z[20] = 4.0745 st1_route_x[21] = -2831.4180 st1_route_y[21] = 526.6416 st1_route_z[21] = 4.6276 st1_route_x[22] = -2821.2705 st1_route_y[22] = 626.4095 st1_route_z[22] = 7.8679 st1_route_x[23] = -2849.5251 st1_route_y[23] = 720.4027 st1_route_z[23] = 28.1290 st1_route_x[24] = -2840.6128 st1_route_y[24] = 819.4821 st1_route_z[24] = 40.6696 st1_route_x[25] = -2816.8728 st1_route_y[25] = 897.2410 st1_route_z[25] = 43.6833 st1_route_x[26] = -2776.3962 st1_route_y[26] = 809.4246 st1_route_z[26] = 50.6937 st1_route_x[27] = -2676.2866 st1_route_y[27] = 810.1769 st1_route_z[27] = 49.5432 st1_route_x[28] = -2575.5583 st1_route_y[28] = 807.5107 st1_route_z[28] = 49.5239 st1_route_x[29] = -2528.4617 st1_route_y[29] = 809.4405 st1_route_z[29] = 49.5356 st1_route_x[30] = -2526.5640 st1_route_y[30] = 908.4559 st1_route_z[30] = 64.5370 st1_route_x[31] = -2525.0891 st1_route_y[31] = 999.8545 st1_route_z[31] = 77.8166 st1_route_x[32] = -2594.6897 st1_route_y[32] = 1006.4087 st1_route_z[32] = 77.8242 st1_route_x[33] = -2587.4739 st1_route_y[33] = 1092.9789 st1_route_z[33] = 56.2406 st1_route_x[34] = -2591.7122 st1_route_y[34] = 1135.3021 st1_route_z[34] = 55.1350 st1_route_x[35] = -2658.5493 st1_route_y[35] = 1209.7676 st1_route_z[35] = 55.1386 st1_route_x[36] = -2669.4744 st1_route_y[36] = 1309.3092 st1_route_z[36] = 55.1228 st1_route_x[37] = -2677.5388 st1_route_y[37] = 1409.6298 st1_route_z[37] = 55.1226 st1_route_x[38] = -2669.2937 st1_route_y[38] = 1509.8888 st1_route_z[38] = 58.6901 st1_route_x[39] = -2674.5425 st1_route_y[39] = 1610.9475 st1_route_z[39] = 64.4835 st1_route_x[40] = -2675.3433 st1_route_y[40] = 1711.9075 st1_route_z[40] = 67.4134 st1_route_x[41] = -2675.3442 st1_route_y[41] = 1812.6913 st1_route_z[41] = 67.4802 st1_route_x[42] = -2675.3330 st1_route_y[42] = 1913.5526 st1_route_z[42] = 64.6734 st1_route_x[43] = -2675.7913 st1_route_y[43] = 2013.8885 st1_route_z[43] = 59.0350 st1_route_x[44] = -2670.8145 st1_route_y[44] = 2114.1055 st1_route_z[44] = 55.1467 st1_route_x[45] = -2679.1062 st1_route_y[45] = 2214.4375 st1_route_z[45] = 55.1239 st1_route_x[46] = -2720.0142 st1_route_y[46] = 2305.9978 st1_route_z[46] = 63.1498 st1_route_x[47] = -2720.7439 st1_route_y[47] = 2353.8872 st1_route_z[47] = 71.5011 st1_route_x[48] = -2677.1504 st1_route_y[48] = 2440.7620 st1_route_z[48] = 47.2891 st1_route_x[49] = -2593.7380 st1_route_y[49] = 2490.0811 st1_route_z[49] = 22.1514 st1_route_x[50] = -2513.9397 st1_route_y[50] = 2429.6116 st1_route_z[50] = 16.4114 st1_route_x[51] = -2413.6272 st1_route_y[51] = 2430.8770 st1_route_z[51] = 11.8649 st1_route_x[52] = -2339.4143 st1_route_y[52] = 2395.6228 st1_route_z[52] = 5.5583 st1_route_x[53] = -2422.8386 st1_route_y[53] = 2340.1985 st1_route_z[53] = 4.5444 st1_route_x[54] = -2462.5752 st1_route_y[54] = 2334.2646 st1_route_z[54] = 4.5459 st1_route_x[55] = -2467.3274 st1_route_y[55] = 2276.3762 st1_route_z[55] = 4.5468 st1_route_x[56] = -2560.3081 st1_route_y[56] = 2313.5662 st1_route_z[56] = 4.5508 st1_route_x[57] = -2560.2864 st1_route_y[57] = 2316.4421 st1_route_z[57] = 4.5491 RETURN /* [STL1_01 // ~s~Go and get the ~r~car~s~. [STL1_02 // ~s~Clip her back end to spin her out of control. [STL1_03 // ~s~Don't let her ~r~trail ~s~go cold. [STL1_04 // Use the P.I.T. technique learned in the Driving School to spin the target car around with minimal damage. [STL1_05 // ~s~Steal the ~b~car~s~. [STL1_06 // ~s~Drive back to the ~y~garage ~s~in San Fierro. [STL1_07 // ~r~You destroyed the car! [STL1_08 // ~s~Well done! [STL1_09 // ~r~You lost her trail! [STL1_10 // ~s~Keep up! Her ~r~trail~s~ is going cold! [STL1_11 // ~s~Get back in the ~b~car~s~! [STL1_12 // ~s~The car should be nearby. [STL1_13 // ~s~Drive the car into the ~y~garage~s~. */ } MISSION_START // ***************************************************************************************** // ***************************** steal2 **************************************************** // ***************************************************************************************** // ***************************************************************************************** // ******************** Steal cars from the car showroom *********************************** // ***************************************************************************************** SCRIPT_NAME steal2 // Mission start stuff GOSUB mission_start_steal2 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_steal2_failed ENDIF GOSUB mission_cleanup_steal2 MISSION_END { // Variables for mission //people LVAR_INT st2_cesars_car st2_players_car LVAR_INT st2_cars[22] st2_peds[22] st2_object[15] st2_tram LVAR_INT st2_salesman st2_random_char //blips LVAR_INT st2_cesar_blip //flags LVAR_INT steal2_goals st2_control_flag st2_skip_cutscene_flag st2_deathcheck_flag LVAR_INT st2_car_nodes LVAR_INT st2_flag_cesar_in_group st2_car_check_flag st2_salesman_flag LVAR_INT st2_seq_progress LVAR_INT st2_model st2_class LVAR_INT st2_no_plates st2_no_plates_flag //speech LVAR_INT st2_speech_goals st2_speech_control_flag st2_speech_flag LVAR_TEXT_LABEL st2_print_label[13] LVAR_INT st2_audio_label[13] LVAR_INT st2_last_label //st2_played_random_speech[2] LVAR_INT st2_slot1 st2_slot2 st2_slot_load st2_play_which_slot LVAR_INT st2_random_last_label LVAR_INT st2_storing_speech_goals_number st2_storing_speech_control_number //coords LVAR_FLOAT st2_player_x st2_player_y st2_cesar_x st2_cesar_y st2_temp_x st2_temp_y st2_playback_speed //sequences/decision makers/threat lists/attractors/groups LVAR_INT st2_ped_decisions st2_empty_ped_decision_maker st2_sequence //debug // ****************************************Mission Start************************************ mission_start_steal2: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT STEAL2 CLEAR_PRINTS WAIT 0 // *************************************Set Flags/variables********************************* steal2_goals = 0 ////debug should be 0 st2_control_flag = 0 st2_skip_cutscene_flag = 0 st2_deathcheck_flag = 0 st2_car_nodes = 0 st2_flag_cesar_in_group = 0 st2_car_check_flag = 0 st2_salesman_flag = 0 st2_seq_progress = 0 st2_player_x = 0.0 st2_player_y = 0.0 st2_cesar_x = 0.0 st2_cesar_y = 0.0 st2_temp_x = 0.0 st2_temp_y = 0.0 st2_playback_speed = 0.0 st2_speech_goals = 0 st2_speech_control_flag = 0 st2_speech_flag = 0 st2_last_label = 0 st2_slot1 = 0 st2_slot2 = 0 st2_slot_load = 0 st2_play_which_slot = 0 st2_storing_speech_goals_number = 0 st2_storing_speech_control_number = 0 st2_model = 0 st2_class = 0 // ****************************************START OF CUTSCENE******************************** MAKE_PLAYER_GANG_DISAPPEAR SET_AREA_VISIBLE 1 SET_CHAR_AREA_VISIBLE scplayer 1 LOAD_SCENE -2031.0 149.0 29.0 LOAD_CUTSCENE STEAL_2 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 SET_CHAR_AREA_VISIBLE scplayer 0 CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF MAKE_PLAYER_GANG_REAPPEAR // ****************************************END OF CUTSCENE********************************** SET_FADING_COLOUR 0 0 0 WAIT 0 //------------------REQUEST_MODELS ------------------------------ //WAIT 1000 REQUEST_MODEL SULTAN REQUEST_MODEL ELEGY REQUEST_MODEL WMYBU REQUEST_VEHICLE_MOD nto_b_s LOAD_SPECIAL_CHARACTER 1 cesar LOAD_ALL_MODELS_NOW REMOVE_GROUP Players_Group SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 TRUE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH st2_ped_decisions COPY_CHAR_DECISION_MAKER DM_PED_EMPTY st2_empty_ped_decision_maker LOAD_SCENE -2032.4 171.8 27.8 CLEAR_AREA -2032.4 171.8 27.8 1.0 TRUE SET_CHAR_COORDINATES scplayer -2032.4 171.8 27.8 SET_CHAR_HEADING scplayer 308.7 //Creating cesar CLEAR_AREA -2032.3 161.9 28.0 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 -2032.3 161.9 28.0 cesar SET_CHAR_NEVER_TARGETTED cesar TRUE SET_CHAR_DECISION_MAKER cesar st2_empty_ped_decision_maker MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_Group cesar SET_GROUP_DEFAULT_TASK_ALLOCATOR Players_Group DEFAULT_TASK_ALLOCATOR_FOLLOW_LIMITED SET_CHAR_DECISION_MAKER cesar st2_ped_decisions st2_flag_cesar_in_group = 1 CLEAR_AREA -1656.2 1210.2 12.3 5.0 TRUE st2_no_plates = ELEGY GOSUB st2_my_number_plates CREATE_CAR ELEGY -1656.2 1210.2 12.3 st2_cesars_car SET_CAR_STRONG st2_cesars_car TRUE SET_CAR_HEADING st2_cesars_car 316.1 LOCK_CAR_DOORS st2_cesars_car CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_DRIVING_STYLE st2_cesars_car 2 SET_CAR_HEALTH st2_cesars_car 2000 SET_CAN_BURST_CAR_TYRES st2_cesars_car FALSE FREEZE_CAR_POSITION st2_cesars_car TRUE ADD_VEHICLE_MOD st2_cesars_car nto_b_s car CLEAR_AREA -1662.3 1211.0 12.3 5.0 TRUE st2_no_plates = SULTAN GOSUB st2_my_number_plates CREATE_CAR SULTAN -1662.3 1211.0 12.3 st2_players_car SET_CAR_HEADING st2_players_car 316.1 LOCK_CAR_DOORS st2_players_car CARLOCK_LOCKOUT_PLAYER_ONLY CHANGE_CAR_COLOUR st2_players_car 59 12 SET_CAR_HEALTH st2_players_car 2000 FREEZE_CAR_POSITION st2_players_car TRUE ADD_VEHICLE_MOD st2_players_car nto_b_s car SWITCH_RANDOM_TRAINS OFF ADD_BLIP_FOR_COORD -1632.9 1207.4 6.1 st2_cesar_blip SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON DO_FADE 500 FADE_IN SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar TRUE /* //// debug ////// steal2_goals = 14 FREEZE_CAR_POSITION st2_players_car FALSE REMOVE_CHAR_FROM_GROUP cesar /// debug /////// */ mission_steal2_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_steal2_passed ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// DEATHCHECKS /////////////////////////////////////////////////////////////////////////////////// GOSUB st2_death_checks IF st2_deathcheck_flag = 1 GOTO mission_steal2_failed ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// THE DRIVE THERE AND THE CAR SHOWROOM BIT ////////////////////////////////////////////////////// IF steal2_goals = 0 //main bit for this section IF st2_control_flag = 0 GOSUB st2_cesar_group //speech for this section IF st2_speech_flag = 0 st2_speech_goals = 1 st2_speech_control_flag = 0 GOSUB st2_dialogue_setup st2_speech_flag = 1 ENDIF IF st2_speech_flag = 1 IF st2_speech_goals = 0 PRINT ( STE2_01 ) 7000 1 //Go and get the cars from the car showroom. SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar FALSE timerb = 0 st2_speech_flag = 2 ENDIF ENDIF IF st2_speech_flag = 2 IF timerb > 7000 IF st2_speech_goals = 0 st2_speech_goals = 2 st2_speech_control_flag = 0 GOSUB st2_dialogue_setup timerb = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar TRUE st2_speech_flag = 3 ENDIF ENDIF ENDIF IF st2_speech_flag = 3 IF timerb > 7000 IF st2_speech_goals = 0 st2_speech_goals = 3 st2_speech_control_flag = 0 GOSUB st2_dialogue_setup st2_speech_flag = 4 ENDIF ENDIF ENDIF IF st2_speech_flag = 4 IF st2_speech_goals = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar FALSE st2_speech_flag = 5 ENDIF ENDIF IF IS_GROUP_MEMBER cesar Players_Group IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1632.9 1207.4 6.1 4.0 4.0 4.0 TRUE IF LOCATE_CHAR_ANY_MEANS_3D cesar -1632.9 1207.4 6.1 4.0 4.0 4.0 TRUE SET_PLAYER_CONTROL player1 OFF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar FALSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS st2_speech_goals = 0 st2_control_flag = 1 ENDIF ENDIF ENDIF ENDIF IF st2_control_flag = 1 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SHUT_ALL_CHARS_UP TRUE SET_PED_DENSITY_MULTIPLIER 0.0 CLEAR_AREA -1662.3 1211.0 13.4 15.0 TRUE LOCK_CAR_DOORS st2_players_car CARLOCK_UNLOCKED REMOVE_BLIP st2_cesar_blip //debug - needs to be a salesman char CLEAR_AREA -1656.7 1213.8 12.7 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 WMYBU -1656.7 1213.8 12.7 st2_salesman SET_CHAR_HEADING st2_salesman 132.3 IF IS_GROUP_MEMBER cesar Players_Group REMOVE_CHAR_FROM_GROUP cesar CLEAR_CHAR_TASKS cesar ENDIF OPEN_SEQUENCE_TASK st2_sequence TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 -1642.3 1204.1 6.2 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1651.2 1204.0 6.2 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1663.5 1204.2 6.2 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK st2_sequence PERFORM_SEQUENCE_TASK scplayer st2_sequence CLEAR_SEQUENCE_TASK st2_sequence OPEN_SEQUENCE_TASK st2_sequence TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 -1640.3 1204.4 6.2 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1651.7 1205.0 6.2 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1662.3 1204.8 6.2 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK st2_sequence PERFORM_SEQUENCE_TASK cesar st2_sequence CLEAR_SEQUENCE_TASK st2_sequence st2_speech_goals = 4 GENERATE_RANDOM_INT_IN_RANGE 0 3 st2_speech_control_flag st2_random_last_label = st2_speech_control_flag + 1 GOSUB st2_dialogue_setup SET_FIXED_CAMERA_POSITION -1624.5 1201.5 7.8 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1664.6 1207.1 10.9 JUMP_CUT st2_skip_cutscene_flag = 1 SKIP_CUTSCENE_START timera = 0 st2_speech_flag = 0 st2_control_flag = 2 ENDIF IF st2_control_flag = 2 //speech for this section IF st2_speech_flag = 0 IF st2_speech_goals = 0 st2_speech_goals = 4 GENERATE_RANDOM_INT_IN_RANGE 3 6 st2_speech_control_flag st2_random_last_label = st2_speech_control_flag + 1 GOSUB st2_dialogue_setup st2_speech_flag = 1 ENDIF ENDIF IF st2_speech_flag = 1 IF st2_speech_goals = 0 st2_speech_goals = 4 GENERATE_RANDOM_INT_IN_RANGE 6 9 st2_speech_control_flag st2_random_last_label = st2_speech_control_flag + 1 GOSUB st2_dialogue_setup st2_speech_flag = 2 ENDIF ENDIF //main bit IF timera > 8000 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_AREA -1659.6 1203.3 11.4 400.0 TRUE SET_CHAR_COORDINATES scplayer -1659.6 1203.3 11.4 SET_CHAR_HEADING scplayer 96.8 CLEAR_CHAR_TASKS_IMMEDIATELY cesar CLEAR_AREA -1659.8 1205.0 11.4 1.0 TRUE SET_CHAR_COORDINATES cesar -1659.8 1205.0 11.4 SET_CHAR_HEADING cesar 91.3 OPEN_SEQUENCE_TASK st2_sequence TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 -1662.6 1202.6 12.7 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1666.0 1208.8 12.7 PEDMOVE_WALK -1 TASK_ENTER_CAR_AS_DRIVER -1 st2_players_car -1 CLOSE_SEQUENCE_TASK st2_sequence PERFORM_SEQUENCE_TASK scplayer st2_sequence CLEAR_SEQUENCE_TASK st2_sequence OPEN_SEQUENCE_TASK st2_sequence TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 -1662.7 1204.8 12.7 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1662.9 1206.5 12.7 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 -1660.3 1208.8 12.7 PEDMOVE_WALK -1 TASK_PAUSE -1 1000 TASK_ENTER_CAR_AS_DRIVER -1 st2_cesars_car -1 CLOSE_SEQUENCE_TASK st2_sequence PERFORM_SEQUENCE_TASK cesar st2_sequence CLEAR_SEQUENCE_TASK st2_sequence SET_FIXED_CAMERA_POSITION -1661.1 1219.7 15.15 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1658.9 1204.6 13.85 JUMP_CUT timera = 0 st2_control_flag = 3 ENDIF ENDIF IF st2_control_flag = 3 GET_SCRIPT_TASK_STATUS cesar PERFORM_SEQUENCE_TASK task_status IF NOT task_status = FINISHED_TASK GET_SEQUENCE_PROGRESS cesar st2_seq_progress IF st2_seq_progress = 2 st2_speech_goals = 5 st2_speech_control_flag = 0 GOSUB st2_dialogue_setup st2_control_flag = 4 ENDIF ENDIF ENDIF IF st2_control_flag = 4 IF st2_speech_control_flag = 2 IF NOT IS_CHAR_DEAD st2_salesman OPEN_SEQUENCE_TASK st2_sequence TASK_GO_STRAIGHT_TO_COORD -1 -1660.6 1210.1 12.7 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 -1664.0 1205.3 12.7 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 -1651.3 1203.2 6.2 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK st2_sequence PERFORM_SEQUENCE_TASK st2_salesman st2_sequence CLEAR_SEQUENCE_TASK st2_sequence ENDIF st2_control_flag = 5 ENDIF ENDIF IF st2_control_flag = 5 IF st2_speech_goals = 0 st2_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB st2_death_checks IF st2_deathcheck_flag = 1 GOTO mission_steal2_failed ENDIF //skipping cutscene IF st2_skip_cutscene_flag = 1 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS st2_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB st2_death_checks IF st2_deathcheck_flag = 1 GOTO mission_steal2_failed ENDIF IF NOT IS_CHAR_DEAD st2_salesman CLEAR_AREA -1651.3 1203.2 6.2 1.0 TRUE SET_CHAR_COORDINATES st2_salesman -1651.3 1203.2 6.2 ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY cesar WARP_CHAR_INTO_CAR cesar st2_cesars_car CLEAR_CHAR_TASKS_IMMEDIATELY scplayer WARP_CHAR_INTO_CAR scplayer st2_players_car ENDIF IF IS_CHAR_IN_CAR cesar st2_cesars_car IF IS_CHAR_IN_CAR scplayer st2_players_car FREEZE_CAR_POSITION st2_cesars_car FALSE FREEZE_CAR_POSITION st2_players_car FALSE //creating the cars needed for recording 1 MARK_CHAR_AS_NO_LONGER_NEEDED st2_salesman MARK_MODEL_AS_NO_LONGER_NEEDED WMYBU REQUEST_MODEL MULE REQUEST_MODEL CARDBOARDBOX REQUEST_MODEL TRAM LOAD_ALL_MODELS_NOW //truck and cardboard boxes SET_CAR_MODEL_COMPONENTS MULE 1 1 CLEAR_AREA -1580.1 938.2 6.8 5.0 TRUE st2_no_plates = MULE GOSUB st2_my_number_plates CREATE_CAR MULE -1580.1 938.2 6.8 st2_cars[0] SET_CAR_HEADING st2_cars[0] 90.0 SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[0] TRUE CLEAR_AREA -1576.0 938.9 6.5 5.0 TRUE CREATE_RANDOM_CHAR -1576.0 938.9 6.5 st2_peds[0] SET_CHAR_HEADING st2_peds[0] 84.9 SET_CHAR_DECISION_MAKER st2_peds[0] st2_empty_ped_decision_maker CLEAR_AREA -1575.1 940.7 6.4 10.0 TRUE CREATE_OBJECT cardboardbox -1575.1 940.7 6.4 st2_object[0] SET_OBJECT_COLLISION st2_object[0] TRUE SET_OBJECT_DYNAMIC st2_object[0] TRUE CREATE_OBJECT cardboardbox -1574.9 941.7 6.4 st2_object[1] SET_OBJECT_COLLISION st2_object[1] TRUE SET_OBJECT_DYNAMIC st2_object[1] TRUE CREATE_OBJECT cardboardbox -1573.1 942.7 6.4 st2_object[2] SET_OBJECT_COLLISION st2_object[2] TRUE SET_OBJECT_DYNAMIC st2_object[2] TRUE CREATE_OBJECT cardboardbox -1575.1 940.7 7.0 st2_object[3] SET_OBJECT_COLLISION st2_object[3] TRUE SET_OBJECT_DYNAMIC st2_object[3] TRUE CREATE_OBJECT cardboardbox -1573.1 942.7 7.0 st2_object[4] SET_OBJECT_COLLISION st2_object[4] TRUE SET_OBJECT_DYNAMIC st2_object[4] TRUE /* //car 1 - stopped GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1608.2 1214.3 5.9 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1608.2 1214.3 5.9 st2_cars[1] SET_CAR_HEADING st2_cars[1] 3.3 LOCK_CAR_DOORS st2_cars[1] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[1] st2_peds[1] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[1] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[1] FALSE ENDIF */ //car 2 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1626.9 1202.5 5.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1626.9 1202.5 5.7 st2_cars[2] SET_CAR_HEADING st2_cars[2] 222.7 LOCK_CAR_DOORS st2_cars[2] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[2] st2_peds[2] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[2] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[2] FALSE ENDIF //car 3 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1609.2 1160.4 5.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1609.2 1160.4 5.7 st2_cars[3] SET_CAR_HEADING st2_cars[3] 184.3 LOCK_CAR_DOORS st2_cars[3] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[3] st2_peds[3] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[3] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[3] FALSE ENDIF //car 4 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1600.9 1111.7 5.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1600.9 1111.7 5.7 st2_cars[4] SET_CAR_HEADING st2_cars[4] 183.3 LOCK_CAR_DOORS st2_cars[4] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[4] st2_peds[4] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[4] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[4] FALSE ENDIF //car 5 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1608.2 1094.0 5.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1608.2 1094.0 5.7 st2_cars[5] SET_CAR_HEADING st2_cars[5] 180.0 LOCK_CAR_DOORS st2_cars[5] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[5] st2_peds[5] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[5] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[5] FALSE ENDIF //car 6 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1608.2 1046.5 5.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1608.2 1046.5 5.7 st2_cars[6] SET_CAR_HEADING st2_cars[6] 183.5 LOCK_CAR_DOORS st2_cars[6] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[6] st2_peds[6] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[6] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[6] FALSE ENDIF //car 7 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1595.7 1012.0 5.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1595.7 1012.0 5.7 st2_cars[7] SET_CAR_HEADING st2_cars[7] 207.3 LOCK_CAR_DOORS st2_cars[7] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[7] st2_peds[7] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[7] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[7] FALSE ENDIF //car 8 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1540.5 959.8 5.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1540.5 959.8 5.7 st2_cars[8] SET_CAR_HEADING st2_cars[8] 24.3 LOCK_CAR_DOORS st2_cars[8] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[8] st2_peds[8] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[8] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[8] FALSE ENDIF //car 9 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1556.0 995.6 5.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1556.0 995.6 5.7 st2_cars[9] SET_CAR_HEADING st2_cars[9] 41.0 LOCK_CAR_DOORS st2_cars[9] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[9] st2_peds[9] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[9] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[9] FALSE ENDIF //car 10 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1587.6 1036.7 5.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1587.6 1036.7 5.7 st2_cars[10] SET_CAR_HEADING st2_cars[10] 3.3 LOCK_CAR_DOORS st2_cars[10] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[10] st2_peds[10] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[10] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[10] FALSE ENDIF /* //car 11 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1580.3 1096.9 5.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1580.3 1096.9 5.7 st2_cars[11] SET_CAR_HEADING st2_cars[11] 3.3 LOCK_CAR_DOORS st2_cars[11] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[11] st2_peds[11] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[11] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[11] FALSE ENDIF */ //car 12 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1579.6 1140.1 5.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1579.6 1140.1 5.7 st2_cars[12] SET_CAR_HEADING st2_cars[12] 2.0 LOCK_CAR_DOORS st2_cars[12] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[12] st2_peds[12] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[12] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[12] FALSE ENDIF //tram CLEAR_AREA -1542.9 974.0 5.3 5.0 TRUE CREATE_MISSION_TRAIN 9 -1542.9 974.0 5.3 0 st2_tram SET_TRAIN_SPEED st2_tram 0.0 SET_TRAIN_CRUISE_SPEED st2_tram 0.0 LOCK_CAR_DOORS st2_tram CARLOCK_LOCKED //creating the stuff needed for recording 2 //car 13 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1592.8 934.7 6.2 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1592.8 934.7 6.2 st2_cars[13] SET_CAR_HEADING st2_cars[13] 91.3 LOCK_CAR_DOORS st2_cars[13] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[13] st2_peds[13] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[13] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[13] FALSE ENDIF //car 14 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1608.8 934.3 6.2 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1608.8 934.3 6.2 st2_cars[14] SET_CAR_HEADING st2_cars[14] 91.3 LOCK_CAR_DOORS st2_cars[14] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[14] st2_peds[14] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[14] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[14] FALSE ENDIF //car 15 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1704.4 916.0 23.4 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1704.4 916.0 23.4 st2_cars[15] SET_CAR_HEADING st2_cars[15] 269.1 LOCK_CAR_DOORS st2_cars[15] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[15] st2_peds[15] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[15] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[15] FALSE ENDIF CLEAR_AREA -1642.2 1210.5 6.2 15.0 TRUE CREATE_RANDOM_CHAR -1642.2 1210.5 6.2 st2_random_char SET_CHAR_DECISION_MAKER st2_random_char st2_empty_ped_decision_maker OPEN_SEQUENCE_TASK st2_sequence TASK_GO_STRAIGHT_TO_COORD -1 -1645.5 1214.0 6.2 PEDMOVE_WALK -1 TASK_PLAY_ANIM -1 COWER PED 4.0 TRUE FALSE FALSE FALSE 30000 CLOSE_SEQUENCE_TASK st2_sequence PERFORM_SEQUENCE_TASK st2_random_char st2_sequence CLEAR_SEQUENCE_TASK st2_sequence SET_CAR_DENSITY_MULTIPLIER 0.0 SET_FIXED_CAMERA_POSITION -1640.4 1212.9 6.6 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1651.3 1215.3 10.6 JUMP_CUT //skipping cutscene IF st2_skip_cutscene_flag = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB st2_death_checks IF st2_deathcheck_flag = 1 GOTO mission_steal2_failed ENDIF ENDIF timera = 0 st2_control_flag = 6 ENDIF ENDIF ENDIF ENDIF IF st2_control_flag = 6 IF NOT IS_CHAR_DEAD st2_random_char IF LOCATE_CHAR_ANY_MEANS_2D st2_random_char -1646.0 1214.4 2.0 2.0 FALSE //playing the car recordings for recording 1 START_PLAYBACK_RECORDED_CAR st2_cesars_car 70 IF NOT IS_CAR_DEAD st2_cars[2] START_PLAYBACK_RECORDED_CAR st2_cars[2] 71 ENDIF IF NOT IS_CAR_DEAD st2_cars[3] START_PLAYBACK_RECORDED_CAR st2_cars[3] 72 ENDIF IF NOT IS_CAR_DEAD st2_cars[4] START_PLAYBACK_RECORDED_CAR st2_cars[4] 73 ENDIF IF NOT IS_CAR_DEAD st2_cars[5] START_PLAYBACK_RECORDED_CAR st2_cars[5] 74 ENDIF IF NOT IS_CAR_DEAD st2_cars[6] START_PLAYBACK_RECORDED_CAR st2_cars[6] 75 ENDIF IF NOT IS_CAR_DEAD st2_cars[7] START_PLAYBACK_RECORDED_CAR st2_cars[7] 76 ENDIF IF NOT IS_CAR_DEAD st2_tram START_PLAYBACK_RECORDED_CAR st2_tram 77 ENDIF timera = 0 st2_control_flag = 7 ENDIF ENDIF ENDIF IF st2_control_flag = 7 IF timera > 500 st2_speech_goals = 6 st2_speech_control_flag = 0 GOSUB st2_dialogue_setup st2_control_flag = 8 ENDIF ENDIF IF st2_control_flag = 8 IF timera > 2500 IF NOT IS_CHAR_DEAD st2_random_char TASK_SMART_FLEE_CHAR st2_random_char scplayer 200.0 600000 ENDIF PAUSE_PLAYBACK_RECORDED_CAR st2_cesars_car IF NOT IS_CAR_DEAD st2_cars[2] PAUSE_PLAYBACK_RECORDED_CAR st2_cars[2] ENDIF IF NOT IS_CAR_DEAD st2_cars[3] PAUSE_PLAYBACK_RECORDED_CAR st2_cars[3] ENDIF IF NOT IS_CAR_DEAD st2_cars[4] PAUSE_PLAYBACK_RECORDED_CAR st2_cars[4] ENDIF IF NOT IS_CAR_DEAD st2_cars[5] PAUSE_PLAYBACK_RECORDED_CAR st2_cars[5] ENDIF IF NOT IS_CAR_DEAD st2_cars[6] PAUSE_PLAYBACK_RECORDED_CAR st2_cars[6] ENDIF IF NOT IS_CAR_DEAD st2_cars[7] PAUSE_PLAYBACK_RECORDED_CAR st2_cars[7] ENDIF IF NOT IS_CAR_DEAD st2_tram PAUSE_PLAYBACK_RECORDED_CAR st2_tram ENDIF SET_PED_DENSITY_MULTIPLIER 0.5 SHUT_ALL_CHARS_UP FALSE ADD_BLIP_FOR_CAR st2_cesars_car st2_cesar_blip SET_BLIP_AS_FRIENDLY st2_cesar_blip TRUE MARK_CHAR_AS_NO_LONGER_NEEDED st2_random_char HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON PRINT ( STE2_02 ) 7000 1 //Stay close to Cesar as you return to the hub. timera = 0 timerb = 0 st2_speech_flag = 0 st2_car_check_flag = 1 st2_control_flag = 0 steal2_goals = 1 CHECKPOINT_SAVE 99 ENDIF ENDIF //////////////////////////////////DEBUG//////////////////////// IF st2_control_flag = 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q LOAD_SCENE -1638.7 1199.4 6.2 SET_CHAR_COORDINATES scplayer -1638.7 1199.4 6.2 SET_CHAR_COORDINATES cesar -1639.7 1199.4 6.2 ENDIF ENDIF //////////////////////////////////DEBUG//////////////////////// ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// RECORDING 1: BLASTING OUT OF THE CAR SHOWROOM //////////////////////////////////////////////// IF steal2_goals = 1 ////// Speech for this section ///// IF st2_speech_flag = 0 IF st2_speech_goals = 0 IF timerb > 7000 st2_speech_goals = 7 st2_speech_control_flag = 0 GOSUB st2_dialogue_setup SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar TRUE st2_speech_flag = 1 ENDIF ENDIF ENDIF IF st2_speech_flag = 1 IF st2_speech_goals = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar FALSE st2_speech_flag = 2 ENDIF ENDIF ////// car nodes jiggery pokery /////// IF st2_car_nodes = 0 ENDIF //waiting for player to leave car showroom IF st2_control_flag = 0 IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer -1656.2 1210.2 12.3 7.0 7.0 7.0 FALSE st2_control_flag = 1 ENDIF ENDIF //player has left car showroom IF st2_control_flag = 1 UNPAUSE_PLAYBACK_RECORDED_CAR st2_cesars_car IF NOT IS_CAR_DEAD st2_cars[2] UNPAUSE_PLAYBACK_RECORDED_CAR st2_cars[2] ENDIF IF NOT IS_CAR_DEAD st2_cars[3] UNPAUSE_PLAYBACK_RECORDED_CAR st2_cars[3] ENDIF IF NOT IS_CAR_DEAD st2_cars[4] UNPAUSE_PLAYBACK_RECORDED_CAR st2_cars[4] ENDIF IF NOT IS_CAR_DEAD st2_cars[5] UNPAUSE_PLAYBACK_RECORDED_CAR st2_cars[5] ENDIF IF NOT IS_CAR_DEAD st2_cars[6] UNPAUSE_PLAYBACK_RECORDED_CAR st2_cars[6] ENDIF IF NOT IS_CAR_DEAD st2_cars[7] UNPAUSE_PLAYBACK_RECORDED_CAR st2_cars[7] ENDIF IF NOT IS_CAR_DEAD st2_tram UNPAUSE_PLAYBACK_RECORDED_CAR st2_tram ENDIF IF NOT IS_CAR_DEAD st2_cars[8] SET_CAR_CRUISE_SPEED st2_cars[8] 15.0 CAR_WANDER_RANDOMLY st2_cars[8] ENDIF IF NOT IS_CAR_DEAD st2_cars[9] SET_CAR_CRUISE_SPEED st2_cars[9] 15.0 CAR_WANDER_RANDOMLY st2_cars[9] ENDIF IF NOT IS_CAR_DEAD st2_cars[10] SET_CAR_CRUISE_SPEED st2_cars[10] 15.0 CAR_WANDER_RANDOMLY st2_cars[10] ENDIF /* IF NOT IS_CAR_DEAD st2_cars[11] SET_CAR_CRUISE_SPEED st2_cars[11] 15.0 CAR_WANDER_RANDOMLY st2_cars[11] ENDIF */ IF NOT IS_CAR_DEAD st2_cars[12] SET_CAR_CRUISE_SPEED st2_cars[12] 15.0 CAR_WANDER_RANDOMLY st2_cars[12] ENDIF REQUEST_MODEL COPCARSF REQUEST_MODEL SFPD1 st2_control_flag = 2 ENDIF ////// waiting for cesar to finish recording ///// IF st2_control_flag = 2 GOSUB st2_sorting_speed IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR st2_cesars_car START_PLAYBACK_RECORDED_CAR st2_cesars_car 79 IF NOT IS_CAR_DEAD st2_tram START_PLAYBACK_RECORDED_CAR st2_tram 78 ENDIF //playing the car recordings for recording 2 IF NOT IS_CAR_DEAD st2_cars[13] SET_CAR_FORWARD_SPEED st2_cars[13] 15.0 SET_CAR_CRUISE_SPEED st2_cars[13] 15.0 CAR_GOTO_COORDINATES st2_cars[13] -1881.4 1038.7 44.8 ENDIF IF NOT IS_CAR_DEAD st2_cars[14] SET_CAR_FORWARD_SPEED st2_cars[14] 15.0 SET_CAR_CRUISE_SPEED st2_cars[14] 15.0 CAR_GOTO_COORDINATES st2_cars[14] -1880.1 1029.8 44.8 ENDIF IF NOT IS_CAR_DEAD st2_cars[15] SET_CAR_FORWARD_SPEED st2_cars[15] 15.0 SET_CAR_CRUISE_SPEED st2_cars[15] 15.0 CAR_WANDER_RANDOMLY st2_cars[15] ENDIF //deleting the stuff from recording 1 MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[0] //MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[1] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[2] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[3] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[4] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[5] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[6] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[7] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[8] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[9] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[10] //MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[11] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[12] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[0] //MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[1] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[2] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[3] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[4] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[5] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[6] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[7] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[8] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[9] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[10] //MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[11] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[12] MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[0] MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[1] MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[2] MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[3] MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[4] MARK_MODEL_AS_NO_LONGER_NEEDED MULE MARK_MODEL_AS_NO_LONGER_NEEDED CARDBOARDBOX timerb = 0 st2_speech_flag = 0 st2_car_nodes = 0 st2_control_flag = 0 steal2_goals = 2 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// RECORDING 2: RACING THE TRAM ////////////////////////////////////////////////////////////////// IF steal2_goals = 2 //sorting cesar's speed GOSUB st2_sorting_speed ////// Speech for this section ///// IF st2_speech_flag = 0 IF st2_speech_goals = 0 st2_speech_goals = 8 st2_speech_control_flag = 0 st2_random_last_label = 1 GOSUB st2_dialogue_setup SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar TRUE st2_speech_flag = 1 ENDIF ENDIF IF st2_speech_flag = 1 IF LOCATE_CAR_2D st2_cesars_car -1702.4 921.4 3.0 3.0 FALSE IF st2_speech_goals = 0 st2_speech_goals = 8 st2_speech_control_flag = 1 st2_random_last_label = 2 GOSUB st2_dialogue_setup st2_speech_flag = 2 ENDIF ENDIF ENDIF IF st2_speech_flag = 2 IF st2_speech_goals = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar FALSE st2_speech_flag = 3 ENDIF ENDIF ////// car nodes jiggery pokery /////// IF st2_car_nodes = 0 ENDIF IF st2_control_flag = 0 REQUEST_MODEL COPCARSF REQUEST_MODEL SFPD1 st2_control_flag = 1 ENDIF IF st2_control_flag = 1 ////// streaming in stuff for next recording /////// /* //creating the stuff needed for recording 3 //car 0 - recorded GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1732.5 853.1 23.4 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1732.5 853.1 23.4 st2_cars[0] SET_CAR_HEADING st2_cars[0] 89.4 LOCK_CAR_DOORS st2_cars[0] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[0] st2_peds[0] SET_CAR_DRIVING_STYLE st2_cars[0] DRIVINGMODE_STOPFORCARS_IGNORELIGHTS SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[0] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[0] FALSE ENDIF */ //car 1 - told where to go GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1802.9 853.6 23.4 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1802.9 853.6 23.4 st2_cars[1] SET_CAR_HEADING st2_cars[1] 89.3 LOCK_CAR_DOORS st2_cars[1] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[1] st2_peds[1] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[1] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[1] FALSE ENDIF /* //car 2 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1804.5 836.8 23.4 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1804.5 836.8 23.4 st2_cars[2] SET_CAR_HEADING st2_cars[2] 268.6 LOCK_CAR_DOORS st2_cars[2] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[2] st2_peds[2] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[2] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[2] FALSE ENDIF */ //car 3 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1852.2 836.7 33.8 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1852.2 836.7 33.8 st2_cars[3] SET_CAR_HEADING st2_cars[3] 270.9 LOCK_CAR_DOORS st2_cars[3] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[3] st2_peds[3] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[3] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[3] FALSE ENDIF //car 4 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1876.7 836.3 33.8 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1876.7 836.3 33.8 st2_cars[4] SET_CAR_HEADING st2_cars[4] 270.9 LOCK_CAR_DOORS st2_cars[4] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[4] st2_peds[4] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[4] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[4] FALSE ENDIF /* //car 5 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1895.8 824.1 33.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1895.8 824.1 33.7 st2_cars[5] SET_CAR_HEADING st2_cars[5] 358.8 LOCK_CAR_DOORS st2_cars[5] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[5] st2_peds[5] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[5] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[5] FALSE ENDIF */ //car 6 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1903.1 826.2 33.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1903.1 826.2 33.7 st2_cars[6] SET_CAR_HEADING st2_cars[6] 178.0 LOCK_CAR_DOORS st2_cars[6] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[6] st2_peds[6] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[6] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[6] FALSE ENDIF //car 7 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1915.7 836.6 34.2 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1915.7 836.6 34.2 st2_cars[7] SET_CAR_HEADING st2_cars[7] 272.0 LOCK_CAR_DOORS st2_cars[7] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[7] st2_peds[7] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[7] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[7] FALSE ENDIF //car 8 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1902.8 866.4 34.2 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1902.8 866.4 34.2 st2_cars[8] SET_CAR_HEADING st2_cars[8] 179.4 LOCK_CAR_DOORS st2_cars[8] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[8] st2_peds[8] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[8] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[8] FALSE ENDIF //car 9 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1902.7 882.1 34.2 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1902.7 882.1 34.2 st2_cars[9] SET_CAR_HEADING st2_cars[9] 179.4 LOCK_CAR_DOORS st2_cars[9] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[9] st2_peds[9] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[9] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[9] FALSE ENDIF //ped 10 CLEAR_AREA -1805.5 900.3 23.9 5.0 TRUE CREATE_RANDOM_CHAR -1805.5 900.3 23.9 st2_peds[10] SET_CHAR_HEADING st2_peds[10] 352.4 //ped 11 CLEAR_AREA -1804.5 901.3 23.9 5.0 TRUE CREATE_RANDOM_CHAR -1804.5 901.3 23.9 st2_peds[11] SET_CHAR_HEADING st2_peds[11] 169.0 TASK_CHAT_WITH_CHAR st2_peds[10] st2_peds[11] TRUE TRUE TASK_CHAT_WITH_CHAR st2_peds[11] st2_peds[10] FALSE TRUE //car 13 //carried forwards from recording 2 //car 14 //carried forwards from recording 2 //creating the stuff needed for recording 4 //car 30 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -1988.1 933.5 43.9 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -1988.1 933.5 43.9 st2_cars[21] SET_CAR_HEADING st2_cars[21] 85.7 LOCK_CAR_DOORS st2_cars[21] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[21] st2_peds[21] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[21] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[21] FALSE ENDIF //car 16 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2007.7 1039.2 55.2 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2007.7 1039.2 55.2 st2_cars[16] SET_CAR_HEADING st2_cars[16] 178.1 LOCK_CAR_DOORS st2_cars[16] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[16] st2_peds[16] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[16] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[16] FALSE ENDIF //car 17 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2009.2 962.6 44.1 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2009.2 962.6 44.1 st2_cars[17] SET_CAR_HEADING st2_cars[17] 179.8 LOCK_CAR_DOORS st2_cars[17] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[17] st2_peds[17] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[17] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[17] FALSE ENDIF //car 18 - cop IF HAS_MODEL_LOADED COPCARSF CLEAR_AREA -1998.2 825.3 44.1 5.0 TRUE CREATE_CAR COPCARSF -1998.2 825.3 44.1 st2_cars[18] SET_CAR_HEADING st2_cars[18] 6.4 CREATE_CHAR_INSIDE_CAR st2_cars[18] PEDTYPE_MISSION1 SFPD1 st2_peds[18] SET_CAR_DRIVING_STYLE st2_cars[18] DRIVINGMODE_AVOIDCARS LOCK_CAR_DOORS st2_cars[18] CARLOCK_LOCKED SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[18] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[18] FALSE ENDIF //car 19 - cop IF HAS_MODEL_LOADED COPCARSF CLEAR_AREA -1997.5 815.6 44.1 5.0 TRUE CREATE_CAR COPCARSF -1997.5 815.6 44.1 st2_cars[19] SET_CAR_HEADING st2_cars[19] 1.0 CREATE_CHAR_INSIDE_CAR st2_cars[19] PEDTYPE_MISSION1 SFPD1 st2_peds[19] SET_CAR_DRIVING_STYLE st2_cars[19] DRIVINGMODE_AVOIDCARS LOCK_CAR_DOORS st2_cars[19] CARLOCK_LOCKED SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[19] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[19] FALSE ENDIF st2_control_flag = 2 ENDIF ////// waiting for cesar to finish recording ///// IF st2_control_flag = 2 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR st2_cesars_car //deleting the stuff from recording 2 MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[15] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[15] //playing the car recordings for recording 3 START_PLAYBACK_RECORDED_CAR st2_cesars_car 81 IF NOT IS_CAR_DEAD st2_tram START_PLAYBACK_RECORDED_CAR st2_tram 80 ENDIF /* IF NOT IS_CAR_DEAD st2_cars[0] START_PLAYBACK_RECORDED_CAR st2_cars[0] 82 ENDIF */ IF NOT IS_CAR_DEAD st2_cars[1] SET_CAR_FORWARD_SPEED st2_cars[1] 15.0 SET_CAR_CRUISE_SPEED st2_cars[1] 15.0 CAR_GOTO_COORDINATES st2_cars[1] -1881.4 853.7 35.7 ENDIF /* IF NOT IS_CAR_DEAD st2_cars[2] SET_CAR_FORWARD_SPEED st2_cars[2] 15.0 SET_CAR_CRUISE_SPEED st2_cars[2] 15.0 CAR_GOTO_COORDINATES st2_cars[2] -1717.8 746.3 24.8 ENDIF */ IF NOT IS_CAR_DEAD st2_cars[3] SET_CAR_FORWARD_SPEED st2_cars[3] 15.0 SET_CAR_CRUISE_SPEED st2_cars[3] 15.0 CAR_GOTO_COORDINATES st2_cars[3] -1717.8 755.3 24.8 ENDIF IF NOT IS_CAR_DEAD st2_cars[4] SET_CAR_FORWARD_SPEED st2_cars[4] 15.0 SET_CAR_CRUISE_SPEED st2_cars[4] 15.0 ENDIF timerb = 0 st2_speech_flag = 0 st2_car_nodes = 0 st2_control_flag = 0 steal2_goals = 3 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// RECORDING 3: ZIG ZAG THEN AVOID THE BLOCKED JUNCTION ///////////////////////////////////////// IF steal2_goals = 3 //sorting cesar's speed GOSUB st2_sorting_speed ////// Speech for this section ///// IF st2_speech_flag = 0 IF LOCATE_CAR_2D st2_cesars_car -1855.2 916.9 3.0 3.0 FALSE IF st2_speech_goals = 0 st2_speech_goals = 8 st2_speech_control_flag = 2 st2_random_last_label = 3 GOSUB st2_dialogue_setup SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar TRUE st2_speech_flag = 1 ENDIF ENDIF ENDIF IF st2_speech_flag = 1 IF st2_speech_goals = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar FALSE st2_speech_flag = 2 ENDIF ENDIF ////// car nodes jiggery pokery /////// IF st2_car_nodes = 0 ENDIF IF st2_control_flag = 0 ////// streaming in stuff for next recording /////// st2_control_flag = 1 ENDIF ////// waiting for cesar to finish recording ///// IF st2_control_flag = 1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR st2_cesars_car //deleting the stuff from recording 3 //MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[0] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[1] //MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[2] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[3] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[4] //MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[5] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[6] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[7] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[8] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[9] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[10] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[11] //MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[0] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[1] //MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[2] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[3] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[4] //MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[5] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[6] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[7] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[8] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[9] //deleting the boxes from recording 1 DELETE_OBJECT st2_object[0] DELETE_OBJECT st2_object[1] DELETE_OBJECT st2_object[2] DELETE_OBJECT st2_object[3] DELETE_OBJECT st2_object[4] //playing the car recordings for recording 4 IF NOT IS_CAR_DEAD st2_tram START_PLAYBACK_RECORDED_CAR st2_tram 83 ENDIF START_PLAYBACK_RECORDED_CAR st2_cesars_car 84 st2_speech_flag = 0 st2_car_nodes = 0 st2_control_flag = 0 steal2_goals = 4 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// RECORDING 4: RUNNING FROM THE POLICE ///////////////////////////////////////////////////////// IF steal2_goals = 4 //sorting cesar's speed GOSUB st2_sorting_speed ////// Speech for this section ///// IF st2_speech_flag = 0 IF st2_speech_goals = 0 st2_speech_goals = 8 st2_speech_control_flag = 3 st2_random_last_label = 4 GOSUB st2_dialogue_setup SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar TRUE st2_speech_flag = 1 ENDIF ENDIF IF st2_speech_flag = 1 IF st2_speech_goals = 0 ALTER_WANTED_LEVEL_NO_DROP player1 2 st2_speech_flag = 2 ENDIF ENDIF IF st2_speech_flag = 2 IF st2_speech_goals = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar FALSE st2_speech_flag = 3 ENDIF ENDIF ////// car nodes jiggery pokery /////// IF st2_car_nodes = 0 ENDIF IF st2_control_flag = 0 //creating the stuff needed for recording 5 //car 0 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2350.7 1091.2 54.2 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2350.7 1091.2 54.2 st2_cars[0] SET_CAR_HEADING st2_cars[0] 72.3 LOCK_CAR_DOORS st2_cars[0] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[0] st2_peds[0] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[0] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[0] FALSE ENDIF //car 1 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2347.8 1081.2 54.2 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2347.8 1081.2 54.2 st2_cars[1] SET_CAR_HEADING st2_cars[1] 73.7 LOCK_CAR_DOORS st2_cars[1] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[1] st2_peds[1] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[1] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[1] FALSE ENDIF //car 2 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2124.1 1080.8 54.2 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2124.1 1080.8 54.2 st2_cars[2] SET_CAR_HEADING st2_cars[2] 90.7 LOCK_CAR_DOORS st2_cars[2] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[2] st2_peds[2] SET_CAR_STAY_IN_SLOW_LANE st2_cars[2] TRUE SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[2] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[2] FALSE ENDIF //car 3 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2132.0 1059.0 54.2 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2132.0 1059.0 54.2 st2_cars[3] SET_CAR_HEADING st2_cars[3] 269.2 LOCK_CAR_DOORS st2_cars[3] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[3] st2_peds[3] SET_CAR_STAY_IN_FAST_LANE st2_cars[3] TRUE SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[3] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[3] FALSE ENDIF //car 4 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2166.7 1050.8 54.2 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2166.7 1050.8 54.2 st2_cars[4] SET_CAR_HEADING st2_cars[4] 270.2 LOCK_CAR_DOORS st2_cars[4] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[4] st2_peds[4] SET_CAR_STAY_IN_SLOW_LANE st2_cars[4] TRUE SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[4] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[4] FALSE ENDIF //car 5 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2231.0 1059.8 54.2 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2231.0 1059.8 54.2 st2_cars[5] SET_CAR_HEADING st2_cars[5] 268.2 LOCK_CAR_DOORS st2_cars[5] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[5] st2_peds[5] SET_CAR_STAY_IN_FAST_LANE st2_cars[5] TRUE SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[5] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[5] FALSE ENDIF //car 6 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2299.5 1052.1 54.2 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2299.5 1052.1 54.2 st2_cars[6] SET_CAR_HEADING st2_cars[6] 272.2 LOCK_CAR_DOORS st2_cars[6] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[6] st2_peds[6] SET_CAR_STAY_IN_SLOW_LANE st2_cars[6] TRUE SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[6] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[6] FALSE ENDIF //car 7 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2338.1 1066.2 54.2 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2338.1 1066.2 54.2 st2_cars[7] SET_CAR_HEADING st2_cars[7] 255.2 LOCK_CAR_DOORS st2_cars[7] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[7] st2_peds[7] SET_CAR_STAY_IN_FAST_LANE st2_cars[7] TRUE SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[7] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[7] FALSE ENDIF //car 8 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2344.3 1058.8 54.2 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2344.3 1058.8 54.2 st2_cars[8] SET_CAR_HEADING st2_cars[8] 257.1 LOCK_CAR_DOORS st2_cars[8] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[8] st2_peds[8] SET_CAR_STAY_IN_SLOW_LANE st2_cars[8] TRUE SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[8] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[8] FALSE ENDIF //car 9 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2446.5 1097.0 54.2 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2446.5 1097.0 54.2 st2_cars[9] SET_CAR_HEADING st2_cars[9] 266.7 LOCK_CAR_DOORS st2_cars[9] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[9] st2_peds[9] SET_CAR_STAY_IN_FAST_LANE st2_cars[9] TRUE SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[9] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[9] FALSE ENDIF //car 10 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2427.5 1087.2 54.2 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2427.5 1087.2 54.2 st2_cars[10] SET_CAR_HEADING st2_cars[10] 261.0 LOCK_CAR_DOORS st2_cars[10] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[10] st2_peds[10] SET_CAR_STAY_IN_SLOW_LANE st2_cars[10] TRUE SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[10] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[10] FALSE ENDIF st2_control_flag = 1 ENDIF IF st2_control_flag = 1 //triggering the police IF LOCATE_CAR_2D st2_cesars_car -1990.0 838.0 3.0 3.0 FALSE IF NOT IS_CAR_DEAD st2_cars[15] START_PLAYBACK_RECORDED_CAR st2_cars[15] 85 ENDIF IF NOT IS_CAR_DEAD st2_cars[16] SET_CAR_FORWARD_SPEED st2_cars[16] 15.0 SET_CAR_CRUISE_SPEED st2_cars[16] 15.0 CAR_GOTO_COORDINATES st2_cars[16] -2008.2 581.2 35.3 ENDIF IF NOT IS_CAR_DEAD st2_cars[17] SET_CAR_FORWARD_SPEED st2_cars[17] 15.0 SET_CAR_CRUISE_SPEED st2_cars[17] 15.0 CAR_GOTO_COORDINATES st2_cars[17] -2008.2 571.2 35.3 ENDIF IF NOT IS_CAR_DEAD st2_cars[18] SET_CAR_FORWARD_SPEED st2_cars[18] 15.0 SET_CAR_CRUISE_SPEED st2_cars[18] 40.0 IF NOT IS_CAR_DEAD st2_cesars_car SET_CAR_FOLLOW_CAR st2_cars[18] st2_cesars_car 10.0 SWITCH_CAR_SIREN st2_cars[18] ON ENDIF ENDIF IF NOT IS_CAR_DEAD st2_cars[19] SET_CAR_FORWARD_SPEED st2_cars[19] 15.0 SET_CAR_CRUISE_SPEED st2_cars[19] 40.0 IF NOT IS_CAR_DEAD st2_cesars_car SET_CAR_FOLLOW_CAR st2_cars[19] st2_cesars_car 20.0 SWITCH_CAR_SIREN st2_cars[19] ON ENDIF ENDIF st2_control_flag = 2 ENDIF ENDIF ////// waiting for cesar to finish recording ///// IF st2_control_flag = 2 REQUEST_MODEL COACH REQUEST_MODEL PCJ600 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR st2_cesars_car //deleting the cars from recording 2 //MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[11] //MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[12] //MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[11] //MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[12] //deleting the cars from recording 4 MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[21] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[16] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[17] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[18] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[19] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[21] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[16] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[17] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[18] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[19] MARK_CAR_AS_NO_LONGER_NEEDED st2_tram MARK_MODEL_AS_NO_LONGER_NEEDED TRAM //playing the car recordings for recording 5 START_PLAYBACK_RECORDED_CAR st2_cesars_car 86 IF NOT IS_CAR_DEAD st2_cars[2] START_PLAYBACK_RECORDED_CAR st2_cars[2] 87 ENDIF IF NOT IS_CAR_DEAD st2_cars[15] IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR st2_cars[15] STOP_PLAYBACK_RECORDED_CAR st2_cars[15] ENDIF ENDIF REMOVE_CAR_RECORDING 85 IF NOT IS_CAR_DEAD st2_cars[3] SET_CAR_FORWARD_SPEED st2_cars[3] 15.0 SET_CAR_CRUISE_SPEED st2_cars[3] 15.0 CAR_GOTO_COORDINATES st2_cars[3] -1896.9 1060.1 44.2 ENDIF IF NOT IS_CAR_DEAD st2_cars[4] SET_CAR_FORWARD_SPEED st2_cars[4] 15.0 SET_CAR_CRUISE_SPEED st2_cars[4] 15.0 CAR_GOTO_COORDINATES st2_cars[4] -1896.9 1050.1 44.2 ENDIF IF NOT IS_CAR_DEAD st2_cars[5] SET_CAR_FORWARD_SPEED st2_cars[5] 15.0 SET_CAR_CRUISE_SPEED st2_cars[5] 15.0 CAR_GOTO_COORDINATES st2_cars[5] -1906.9 1060.1 48.2 ENDIF IF NOT IS_CAR_DEAD st2_cars[6] SET_CAR_FORWARD_SPEED st2_cars[6] 15.0 SET_CAR_CRUISE_SPEED st2_cars[6] 15.0 CAR_GOTO_COORDINATES st2_cars[6] -1906.9 1050.1 48.2 ENDIF IF NOT IS_CAR_DEAD st2_cars[7] SET_CAR_FORWARD_SPEED st2_cars[7] 15.0 SET_CAR_CRUISE_SPEED st2_cars[7] 15.0 CAR_GOTO_COORDINATES st2_cars[7] -1916.9 1060.1 52.2 ENDIF IF NOT IS_CAR_DEAD st2_cars[8] SET_CAR_FORWARD_SPEED st2_cars[8] 15.0 SET_CAR_CRUISE_SPEED st2_cars[8] 15.0 CAR_GOTO_COORDINATES st2_cars[8] -1916.9 1050.1 52.2 ENDIF IF NOT IS_CAR_DEAD st2_cars[9] SET_CAR_FORWARD_SPEED st2_cars[9] 15.0 SET_CAR_CRUISE_SPEED st2_cars[9] 15.0 CAR_GOTO_COORDINATES st2_cars[9] -1926.9 1060.1 56.2 ENDIF IF NOT IS_CAR_DEAD st2_cars[10] SET_CAR_FORWARD_SPEED st2_cars[10] 15.0 SET_CAR_CRUISE_SPEED st2_cars[10] 15.0 CAR_GOTO_COORDINATES st2_cars[10] -1926.9 1050.1 56.2 ENDIF st2_speech_flag = 0 st2_car_nodes = 0 st2_control_flag = 0 steal2_goals = 5 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// RECORDING 5: NITRO AND DOWN THE HILL ///////////////////////////////////////////////////////// IF steal2_goals = 5 //sorting cesar's speed GOSUB st2_sorting_speed ////// Speech for this section ///// IF st2_speech_flag = 0 IF st2_speech_goals = 0 st2_speech_goals = 8 st2_speech_control_flag = 4 st2_random_last_label = 5 GOSUB st2_dialogue_setup SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar TRUE st2_speech_flag = 1 ENDIF ENDIF IF st2_speech_flag = 1 PRINT_HELP STE2_03 // Press ~m~~widget_nitro~ to trigger a nitro. GIVE_NON_PLAYER_CAR_NITRO st2_cesars_car st2_speech_flag = 2 ENDIF IF st2_speech_flag = 2 IF LOCATE_CAR_2D st2_cesars_car -2319.8 1080.2 3.0 3.0 FALSE IF st2_speech_goals = 0 st2_speech_goals = 8 st2_speech_control_flag = 5 st2_random_last_label = 6 GOSUB st2_dialogue_setup st2_speech_flag = 3 ENDIF ENDIF ENDIF IF st2_speech_flag = 3 IF st2_speech_goals = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar FALSE st2_speech_flag = 4 ENDIF ENDIF ////// car nodes jiggery pokery /////// IF st2_car_nodes = 0 ENDIF IF st2_control_flag = 0 //creating the stuff needed for recording 6 //car 11 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2503.3 1237.0 33.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2503.3 1237.0 33.7 st2_cars[11] SET_CAR_HEADING st2_cars[11] 249.3 LOCK_CAR_DOORS st2_cars[11] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[11] st2_peds[11] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[11] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[11] FALSE ENDIF //car 14 CLEAR_AREA -2741.5 1058.2 48.1 5.0 TRUE CREATE_CAR PCJ600 -2741.5 1058.2 48.1 st2_cars[14] SET_CAR_HEADING st2_cars[14] 337.2 CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[14] st2_peds[14] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[14] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[14] FALSE //car 16 CLEAR_AREA -2513.7 1246.2 34.1 5.0 TRUE CREATE_CAR COACH -2513.7 1246.2 34.1 st2_cars[16] SET_CAR_HEADING st2_cars[16] 82.5 CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[16] st2_peds[16] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[16] TRUE LOCK_CAR_DOORS st2_cars[16] CARLOCK_LOCKED SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[16] FALSE //car 17 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2471.6 1219.7 33.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2471.6 1219.7 33.7 st2_cars[17] SET_CAR_HEADING st2_cars[17] 50.8 LOCK_CAR_DOORS st2_cars[17] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[17] st2_peds[17] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[17] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[17] FALSE ENDIF //car 18 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2459.1 1224.3 33.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2459.1 1224.3 33.7 st2_cars[18] SET_CAR_HEADING st2_cars[18] 163.8 LOCK_CAR_DOORS st2_cars[18] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[18] st2_peds[18] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[18] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[18] FALSE ENDIF //car 19 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2458.1 1234.3 33.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2458.1 1234.3 33.7 st2_cars[19] SET_CAR_HEADING st2_cars[19] 178.2 LOCK_CAR_DOORS st2_cars[19] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[19] st2_peds[19] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[19] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[19] FALSE ENDIF //car 20 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2474.5 1196.9 34.4 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2474.5 1196.9 34.4 st2_cars[20] SET_CAR_HEADING st2_cars[20] 310.3 LOCK_CAR_DOORS st2_cars[20] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[20] st2_peds[20] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[20] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[20] FALSE ENDIF st2_control_flag = 1 ENDIF ////// waiting for cesar to finish recording ///// IF st2_control_flag = 1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR st2_cesars_car //deleting the stuff from recording 5 MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[0] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[1] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[2] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[3] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[4] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[5] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[6] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[7] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[8] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[9] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[10] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[0] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[1] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[2] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[3] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[4] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[5] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[6] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[7] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[8] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[9] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[10] //playing the car recordings for recording 6 IF NOT IS_CAR_DEAD st2_cars[11] SET_CAR_FORWARD_SPEED st2_cars[11] 15.0 SET_CAR_CRUISE_SPEED st2_cars[11] 15.0 CAR_GOTO_COORDINATES st2_cars[11] -2293.5 1172.3 54.8 ENDIF IF NOT IS_CAR_DEAD st2_cars[14] START_PLAYBACK_RECORDED_CAR st2_cars[14] 91 ENDIF IF NOT IS_CAR_DEAD st2_cars[16] START_PLAYBACK_RECORDED_CAR st2_cars[16] 90 ENDIF IF NOT IS_CAR_DEAD st2_cars[17] START_PLAYBACK_RECORDED_CAR st2_cars[17] 89 ENDIF IF NOT IS_CAR_DEAD st2_cars[20] SET_CAR_FORWARD_SPEED st2_cars[20] 15.0 SET_CAR_CRUISE_SPEED st2_cars[20] 15.0 CAR_GOTO_COORDINATES st2_cars[20] -2283.5 1172.3 54.8 ENDIF START_PLAYBACK_RECORDED_CAR st2_cesars_car 88 st2_speech_flag = 0 st2_car_nodes = 0 st2_control_flag = 0 steal2_goals = 6 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// RECORDING 6: AROUND THE BUS AND AVOIDING THE SKIDDING BIKE /////////////////////////////////// IF steal2_goals = 6 //sorting cesar's speed GOSUB st2_sorting_speed ////// Speech for this section ///// /* IF st2_speech_flag = 0 IF st2_speech_goals = 0 st2_speech_goals = 8 st2_speech_control_flag = 6 st2_random_last_label = 7 GOSUB st2_dialogue_setup st2_speech_flag = 1 ENDIF ENDIF */ ////// car nodes jiggery pokery /////// IF st2_car_nodes = 0 ENDIF IF st2_control_flag = 0 //creating more stuff needed for recording 6 //car 12 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2533.8 1242.8 33.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2533.8 1242.8 33.7 st2_cars[12] SET_CAR_HEADING st2_cars[12] 288.3 LOCK_CAR_DOORS st2_cars[12] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[12] st2_peds[12] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[12] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[12] FALSE ENDIF //car 13 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2594.0 1213.9 33.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2594.0 1213.9 33.7 st2_cars[13] SET_CAR_HEADING st2_cars[13] 317.3 LOCK_CAR_DOORS st2_cars[13] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[13] st2_peds[13] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[13] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[13] FALSE ENDIF //car 15 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2732.9 1098.0 45.0 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2732.9 1098.0 45.0 st2_cars[15] SET_CAR_HEADING st2_cars[15] 218.5 LOCK_CAR_DOORS st2_cars[15] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[15] st2_peds[15] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[15] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[15] FALSE ENDIF IF NOT IS_CAR_DEAD st2_cars[12] SET_CAR_FORWARD_SPEED st2_cars[12] 15.0 SET_CAR_CRUISE_SPEED st2_cars[12] 15.0 CAR_GOTO_COORDINATES st2_cars[12] -2303.5 1172.3 54.8 ENDIF IF NOT IS_CAR_DEAD st2_cars[13] SET_CAR_FORWARD_SPEED st2_cars[13] 15.0 SET_CAR_CRUISE_SPEED st2_cars[13] 15.0 CAR_GOTO_COORDINATES st2_cars[13] -2313.5 1060.1 44.2 ENDIF st2_control_flag = 1 ENDIF //stopping bike from sliding along the road IF st2_control_flag = 1 IF NOT IS_CAR_DEAD st2_cars[14] IF LOCATE_CAR_2D st2_cesars_car -2599.3 1206.5 3.0 3.0 FALSE IF IS_PLAYBACK_GOING_ON_FOR_CAR st2_cars[14] STOP_PLAYBACK_RECORDED_CAR st2_cars[14] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[14] st2_control_flag = 2 ELSE st2_control_flag = 2 ENDIF ENDIF ELSE st2_control_flag = 2 ENDIF ENDIF ////// waiting for cesar to finish recording ///// IF st2_control_flag = 2 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR st2_cesars_car //deleting the stuff from recording 6 MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[11] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[12] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[13] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[14] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[15] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[16] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[17] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[18] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[19] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[20] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[11] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[12] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[13] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[14] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[15] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[16] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[17] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[18] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[19] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[20] //removing bike recording REMOVE_CAR_RECORDING 91 //playing the car recordings for recording 7 START_PLAYBACK_RECORDED_CAR st2_cesars_car 92 MARK_MODEL_AS_NO_LONGER_NEEDED PCJ600 st2_speech_flag = 0 st2_car_nodes = 0 st2_control_flag = 0 steal2_goals = 7 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// RECORDING 7: DOWN THE HILL PAST THE SKIDDING CAR ///////////////////////////////////////////// IF steal2_goals = 7 //sorting cesar's speed GOSUB st2_sorting_speed ////// Speech for this section ///// IF st2_speech_flag = 0 IF st2_speech_goals = 0 st2_speech_goals = 9 st2_speech_control_flag = 0 GOSUB st2_dialogue_setup SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar TRUE st2_speech_flag = 1 ENDIF ENDIF IF st2_speech_flag = 1 IF LOCATE_CAR_2D st2_cesars_car -2622.2 999.7 3.0 3.0 FALSE IF st2_speech_goals = 0 st2_speech_goals = 8 st2_speech_control_flag = 7 st2_random_last_label = 8 GOSUB st2_dialogue_setup st2_speech_flag = 2 ENDIF ENDIF ENDIF IF st2_speech_flag = 2 IF LOCATE_CAR_2D st2_cesars_car -2608.9 913.3 3.0 3.0 FALSE IF st2_speech_goals = 0 st2_speech_goals = 8 st2_speech_control_flag = 8 st2_random_last_label = 9 GOSUB st2_dialogue_setup st2_speech_flag = 3 ENDIF ENDIF ENDIF IF st2_speech_flag = 3 IF st2_speech_goals = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar FALSE st2_speech_flag = 4 ENDIF ENDIF ////// car nodes jiggery pokery /////// IF st2_car_nodes = 0 ENDIF IF st2_control_flag = 0 //creating the stuff needed for recording 7 //car 0 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2595.6 1006.4 76.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2595.6 1006.4 76.7 st2_cars[0] SET_CAR_HEADING st2_cars[0] 89.4 LOCK_CAR_DOORS st2_cars[0] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[0] st2_peds[0] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[0] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[0] FALSE ENDIF //car 1 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2595.6 1000.9 76.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2595.6 1000.9 76.7 st2_cars[1] SET_CAR_HEADING st2_cars[1] 274.4 LOCK_CAR_DOORS st2_cars[1] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[1] st2_peds[1] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[1] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[1] FALSE ENDIF //car 2 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2604.0 963.9 76.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2604.0 963.9 76.7 st2_cars[2] SET_CAR_HEADING st2_cars[2] 360.0 LOCK_CAR_DOORS st2_cars[2] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[2] st2_peds[2] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[2] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[2] FALSE ENDIF //car 3 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2616.4 905.6 64.5 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2616.4 905.6 64.5 st2_cars[3] SET_CAR_HEADING st2_cars[3] 269.5 LOCK_CAR_DOORS st2_cars[3] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[3] st2_peds[3] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[3] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[3] FALSE ENDIF //car 4 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2536.9 911.1 63.5 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2536.9 911.1 63.5 st2_cars[4] SET_CAR_HEADING st2_cars[4] 89.8 LOCK_CAR_DOORS st2_cars[4] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[4] st2_peds[4] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[4] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[4] FALSE ENDIF //car 5 IF HAS_MODEL_LOADED COPCARSF CLEAR_AREA -2609.3 1012.8 76.8 5.0 TRUE CREATE_CAR COPCARSF -2609.3 1012.8 76.8 st2_cars[5] SET_CAR_HEADING st2_cars[5] 178.8 LOCK_CAR_DOORS st2_cars[5] CARLOCK_LOCKED CREATE_CHAR_INSIDE_CAR st2_cars[5] PEDTYPE_MISSION1 SFPD1 st2_peds[5] SET_CAR_DRIVING_STYLE st2_cars[5] DRIVINGMODE_AVOIDCARS SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[5] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[5] FALSE ENDIF //car 6 IF HAS_MODEL_LOADED COPCARSF CLEAR_AREA -2603.7 1011.2 76.8 5.0 TRUE CREATE_CAR COPCARSF -2603.7 1011.2 76.8 st2_cars[6] SET_CAR_HEADING st2_cars[6] 179.1 LOCK_CAR_DOORS st2_cars[6] CARLOCK_LOCKED CREATE_CHAR_INSIDE_CAR st2_cars[6] PEDTYPE_MISSION1 SFPD1 st2_peds[6] SET_CAR_DRIVING_STYLE st2_cars[6] DRIVINGMODE_AVOIDCARS SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[6] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[6] FALSE ENDIF //creating the stuff needed for recording 8 //car 7 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2590.0 705.9 26.6 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2590.0 705.9 26.6 st2_cars[7] SET_CAR_HEADING st2_cars[7] 268.3 LOCK_CAR_DOORS st2_cars[7] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[7] st2_peds[7] SET_CAR_DRIVING_STYLE st2_cars[7] DRIVINGMODE_STOPFORCARS_IGNORELIGHTS SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[7] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[7] FALSE ENDIF //car 8 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2463.0 710.6 33.9 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2463.0 710.6 33.9 st2_cars[8] SET_CAR_HEADING st2_cars[8] 90.3 LOCK_CAR_DOORS st2_cars[8] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[8] st2_peds[8] SET_CAR_DRIVING_STYLE st2_cars[8] DRIVINGMODE_STOPFORCARS_IGNORELIGHTS SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[8] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[8] FALSE ENDIF //creating the stuff needed for recording 9 //car 9 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2501.6 562.7 13.1 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2501.6 562.7 13.1 st2_cars[9] SET_CAR_HEADING st2_cars[9] 271.8 LOCK_CAR_DOORS st2_cars[9] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[9] st2_peds[9] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[9] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[9] FALSE ENDIF //car 10 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2390.9 581.7 23.9 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2390.9 581.7 23.9 st2_cars[10] SET_CAR_HEADING st2_cars[10] 184.1 LOCK_CAR_DOORS st2_cars[10] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[10] st2_peds[10] SET_CAR_DRIVING_STYLE st2_cars[10] DRIVINGMODE_STOPFORCARS_IGNORELIGHTS SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[10] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[10] FALSE ENDIF //car 11 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2361.7 510.9 27.9 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2361.7 510.9 27.9 st2_cars[11] SET_CAR_HEADING st2_cars[11] 100.0 LOCK_CAR_DOORS st2_cars[11] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[11] st2_peds[11] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[11] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[11] FALSE ENDIF //car 12 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2281.3 569.6 33.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2281.3 569.6 33.7 st2_cars[12] SET_CAR_HEADING st2_cars[12] 87.6 LOCK_CAR_DOORS st2_cars[12] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[12] st2_peds[12] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[12] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[12] FALSE ENDIF //car 13 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2358.9 569.9 23.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2358.9 569.9 23.7 st2_cars[13] SET_CAR_HEADING st2_cars[13] 90.7 LOCK_CAR_DOORS st2_cars[13] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[13] st2_peds[13] SET_CAR_DRIVING_STYLE st2_cars[13] DRIVINGMODE_STOPFORCARS_IGNORELIGHTS SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[13] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[13] FALSE ENDIF //car 14 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2373.1 569.6 23.4 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2373.1 569.6 23.4 st2_cars[14] SET_CAR_HEADING st2_cars[14] 91.3 LOCK_CAR_DOORS st2_cars[14] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[14] st2_peds[14] SET_CAR_DRIVING_STYLE st2_cars[14] DRIVINGMODE_STOPFORCARS_IGNORELIGHTS SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[14] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[14] FALSE ENDIF st2_control_flag = 1 ENDIF IF st2_control_flag = 1 IF LOCATE_CAR_2D st2_cesars_car -2610.7 992.2 3.0 3.0 FALSE IF NOT IS_CAR_DEAD st2_cars[2] SET_CAR_FORWARD_SPEED st2_cars[2] 15.0 SET_CAR_CRUISE_SPEED st2_cars[2] 15.0 CAR_GOTO_COORDINATES st2_cars[2] -2736.4 1006.9 53.0 ENDIF IF NOT IS_CAR_DEAD st2_cars[5] SET_CAR_FORWARD_SPEED st2_cars[5] 15.0 SET_CAR_CRUISE_SPEED st2_cars[5] 40.0 IF NOT IS_CAR_DEAD st2_cesars_car SET_CAR_FOLLOW_CAR st2_cars[5] st2_cesars_car 10.0 SWITCH_CAR_SIREN st2_cars[5] ON ENDIF ENDIF IF NOT IS_CAR_DEAD st2_cars[6] SET_CAR_FORWARD_SPEED st2_cars[6] 15.0 SET_CAR_CRUISE_SPEED st2_cars[6] 40.0 IF NOT IS_CAR_DEAD st2_cesars_car SET_CAR_FOLLOW_CAR st2_cars[6] st2_cesars_car 20.0 SWITCH_CAR_SIREN st2_cars[6] ON ENDIF ENDIF st2_control_flag = 2 ENDIF ENDIF IF st2_control_flag = 2 IF LOCATE_CAR_2D st2_cesars_car -2610.4 922.8 3.0 3.0 FALSE IF NOT IS_CAR_DEAD st2_cars[3] START_PLAYBACK_RECORDED_CAR st2_cars[3] 93 ENDIF IF NOT IS_CAR_DEAD st2_cars[4] SET_CAR_FORWARD_SPEED st2_cars[4] 15.0 SET_CAR_CRUISE_SPEED st2_cars[4] 15.0 CAR_GOTO_COORDINATES st2_cars[4] -2604.0 963.9 76.7 ENDIF st2_control_flag = 3 ENDIF ENDIF ////// waiting for cesar to finish recording ///// IF st2_control_flag = 3 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR st2_cesars_car //deleting the cars from recording 7 MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[0] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[1] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[2] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[3] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[4] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[0] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[1] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[2] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[3] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[4] //playing the car recordings for recording 8 IF NOT IS_CAR_DEAD st2_cars[7] START_PLAYBACK_RECORDED_CAR st2_cars[7] 95 ENDIF IF NOT IS_CAR_DEAD st2_cars[8] START_PLAYBACK_RECORDED_CAR st2_cars[8] 96 ENDIF START_PLAYBACK_RECORDED_CAR st2_cesars_car 94 st2_speech_flag = 0 st2_car_nodes = 0 st2_control_flag = 0 steal2_goals = 8 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// RECORDING 8: DOWN THE HILL AND DOING THE 360 ///////////////////////////////////////////////// IF steal2_goals = 8 //sorting cesar's speed GOSUB st2_sorting_speed ////// Speech for this section ///// IF st2_speech_flag = 0 IF LOCATE_CAR_2D st2_cesars_car -2528.9 737.7 3.0 3.0 FALSE IF st2_speech_goals = 0 st2_speech_goals = 8 st2_speech_control_flag = 9 st2_random_last_label = 10 GOSUB st2_dialogue_setup SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar TRUE st2_speech_flag = 1 ENDIF ENDIF ENDIF IF st2_speech_flag = 1 IF st2_speech_goals = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar FALSE st2_speech_flag = 2 ENDIF ENDIF ////// car nodes jiggery pokery /////// IF st2_car_nodes = 0 ENDIF IF st2_control_flag = 0 st2_control_flag = 1 ENDIF ////// waiting for cesar to finish recording ///// IF st2_control_flag = 1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR st2_cesars_car //deleting cop cars from recording 7 MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[5] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[6] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[5] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[6] //deleting the cars from recording 8 MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[7] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[8] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[7] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[8] //playing the car recordings for recording 9 IF NOT IS_CAR_DEAD st2_cars[9] SET_CAR_FORWARD_SPEED st2_cars[9] 15.0 SET_CAR_CRUISE_SPEED st2_cars[9] 15.0 CAR_GOTO_COORDINATES st2_cars[9] -2400.7 562.2 23.4 ENDIF IF NOT IS_CAR_DEAD st2_cars[10] SET_CAR_FORWARD_SPEED st2_cars[10] 15.0 SET_CAR_CRUISE_SPEED st2_cars[10] 15.0 CAR_GOTO_COORDINATES st2_cars[10] -2319.5 424.7 33.6 ENDIF IF NOT IS_CAR_DEAD st2_cars[11] SET_CAR_FORWARD_SPEED st2_cars[11] 15.0 SET_CAR_CRUISE_SPEED st2_cars[11] 15.0 CAR_GOTO_COORDINATES st2_cars[11] -2383.1 551.4 23.6 ENDIF IF NOT IS_CAR_DEAD st2_cars[12] SET_CAR_FORWARD_SPEED st2_cars[12] 15.0 SET_CAR_CRUISE_SPEED st2_cars[12] 15.0 CAR_GOTO_COORDINATES st2_cars[12] -2372.9 569.6 23.4 ENDIF IF NOT IS_CAR_DEAD st2_cars[13] SET_CAR_FORWARD_SPEED st2_cars[13] 15.0 SET_CAR_CRUISE_SPEED st2_cars[13] 15.0 CAR_GOTO_COORDINATES st2_cars[13] -2516.5 569.9 13.1 ENDIF IF NOT IS_CAR_DEAD st2_cars[14] SET_CAR_FORWARD_SPEED st2_cars[14] 15.0 SET_CAR_CRUISE_SPEED st2_cars[14] 15.0 CAR_GOTO_COORDINATES st2_cars[14] -2383.9 655.8 33.6 ENDIF START_PLAYBACK_RECORDED_CAR st2_cesars_car 97 st2_speech_flag = 0 st2_car_nodes = 0 st2_control_flag = 0 steal2_goals = 9 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// RECORDING 9: ALONG THE ROAD TOWARDS THE TRAM STATION ///////////////////////////////////////// IF steal2_goals = 9 //sorting cesar's speed GOSUB st2_sorting_speed ////// Speech for this section ///// IF st2_speech_flag = 0 IF LOCATE_CAR_2D st2_cesars_car -2528.6 656.4 3.0 3.0 FALSE //IF st2_speech_goals = 0 st2_speech_goals = 10 st2_speech_control_flag = 0 GOSUB st2_dialogue_setup SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar TRUE st2_speech_flag = 1 //ENDIF ENDIF ENDIF IF st2_speech_flag = 1 IF LOCATE_CAR_2D st2_cesars_car -2375.0 566.2 3.0 3.0 FALSE IF st2_speech_goals = 0 st2_speech_goals = 8 st2_speech_control_flag = 10 st2_random_last_label = 11 GOSUB st2_dialogue_setup st2_speech_flag = 2 ENDIF ENDIF ENDIF IF st2_speech_flag = 2 IF st2_speech_goals = 0 CLEAR_WANTED_LEVEL player1 st2_speech_flag = 3 ENDIF ENDIF IF st2_speech_flag = 3 IF st2_speech_goals = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar FALSE st2_speech_flag = 4 ENDIF ENDIF ////// car nodes jiggery pokery /////// IF st2_car_nodes = 0 ENDIF IF st2_control_flag = 0 //creating the stuff needed for recording 10 //car 0 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2269.1 5748.0 33.7 5.0 TRUE // See comment below... st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2269.1 5748.0 33.7 st2_cars[0] // WDTOM this CREATE_CAR location has a typo for the Y location, which is out of range, which crashes the game. Fixed in c++. SET_CAR_HEADING st2_cars[0] 182.3 LOCK_CAR_DOORS st2_cars[0] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[0] st2_peds[0] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[0] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[0] FALSE ENDIF //car 1 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2251.1 561.9 33.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2251.1 561.9 33.7 st2_cars[1] SET_CAR_HEADING st2_cars[1] 271.1 LOCK_CAR_DOORS st2_cars[1] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[1] st2_peds[1] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[1] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[1] FALSE ENDIF //car 2 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2212.5 569.9 33.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2212.5 569.9 33.7 st2_cars[2] SET_CAR_HEADING st2_cars[2] 91.3 LOCK_CAR_DOORS st2_cars[2] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[2] st2_peds[2] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[2] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[2] FALSE ENDIF //car 3 - coach CLEAR_AREA -2229.4 532.7 34.0 5.0 TRUE CREATE_CAR COACH -2229.4 532.7 34.0 st2_cars[3] SET_CAR_HEADING st2_cars[3] 180.3 CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[3] st2_peds[3] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[3] TRUE //car 4 - tram //CREATE_CAR TRAM -2270.6 541.3 34.8 st2_cars[4] //SET_CAR_HEADING st2_cars[4] 269.1 //CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[4] st2_peds[4] //SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[4] TRUE //car 5 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2342.8 505.3 28.3 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2342.8 505.3 28.3 st2_cars[5] SET_CAR_HEADING st2_cars[5] 269.2 LOCK_CAR_DOORS st2_cars[5] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[5] st2_peds[5] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[5] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[5] FALSE ENDIF //car 6 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2293.5 505.4 33.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2293.5 505.4 33.7 st2_cars[6] SET_CAR_HEADING st2_cars[6] 270.0 LOCK_CAR_DOORS st2_cars[6] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[6] st2_peds[6] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[6] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[6] FALSE ENDIF //car 7 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2238.9 511.2 34.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2238.9 511.2 34.7 st2_cars[7] SET_CAR_HEADING st2_cars[7] 90.6 LOCK_CAR_DOORS st2_cars[7] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[7] st2_peds[7] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[7] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[7] FALSE ENDIF //car 8 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2224.0 496.6 33.7 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2224.0 496.6 33.7 st2_cars[8] SET_CAR_HEADING st2_cars[8] 0.0 LOCK_CAR_DOORS st2_cars[8] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[8] st2_peds[8] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[8] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[8] FALSE ENDIF //ped 19 CLEAR_AREA -2232.2 529.5 34.2 5.0 TRUE CREATE_RANDOM_CHAR -2232.2 529.5 34.2 st2_peds[19] SET_CHAR_HEADING st2_peds[19] 174.2 //IF IS_CAR_ON_SCREEN st2_cars[3] // TASK_ENTER_CAR_AS_PASSENGER st2_peds[9] st2_cars[3] -1 1 //ENDIF //ped 20 CLEAR_AREA -2232.5 531.0 34.2 5.0 TRUE CREATE_RANDOM_CHAR -2232.5 531.0 34.2 st2_peds[20] SET_CHAR_HEADING st2_peds[20] 174.2 //IF IS_CAR_ON_SCREEN st2_cars[3] // TASK_ENTER_CAR_AS_PASSENGER st2_peds[10] st2_cars[3] -1 2 //ENDIF st2_control_flag = 1 ENDIF ////// waiting for cesar to finish recording ///// IF st2_control_flag = 1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR st2_cesars_car //deleting stuff from recording 9 MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[9] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[10] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[11] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[12] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[13] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[14] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[9] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[10] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[11] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[12] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[13] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[14] //playing the car recordings for recording 10 IF NOT IS_CAR_DEAD st2_cars[0] SET_CAR_FORWARD_SPEED st2_cars[0] 15.0 SET_CAR_CRUISE_SPEED st2_cars[0] 15.0 CAR_GOTO_COORDINATES st2_cars[0] -2174.9 561.8 33.6 ENDIF IF NOT IS_CAR_DEAD st2_cars[1] SET_CAR_FORWARD_SPEED st2_cars[1] 15.0 SET_CAR_CRUISE_SPEED st2_cars[1] 15.0 CAR_GOTO_COORDINATES st2_cars[1] -2160.2 561.9 33.6 ENDIF IF NOT IS_CAR_DEAD st2_cars[5] SET_CAR_FORWARD_SPEED st2_cars[5] 15.0 SET_CAR_CRUISE_SPEED st2_cars[5] 15.0 CAR_GOTO_COORDINATES st2_cars[5] -2252.6 505.7 33.7 ENDIF IF NOT IS_CAR_DEAD st2_cars[6] SET_CAR_FORWARD_SPEED st2_cars[6] 15.0 SET_CAR_CRUISE_SPEED st2_cars[6] 15.0 CAR_GOTO_COORDINATES st2_cars[6] -2239.4 505.7 33.7 ENDIF IF NOT IS_CAR_DEAD st2_cars[7] SET_CAR_FORWARD_SPEED st2_cars[7] 15.0 SET_CAR_CRUISE_SPEED st2_cars[7] 15.0 CAR_GOTO_COORDINATES st2_cars[7] -2361.2 511.5 27.9 ENDIF START_PLAYBACK_RECORDED_CAR st2_cesars_car 98 MARK_MODEL_AS_NO_LONGER_NEEDED COACH MARK_MODEL_AS_NO_LONGER_NEEDED TRAM REQUEST_MODEL DYN_ROADBARRIER_3 REQUEST_MODEL DYN_ROADBARRIER_4 REQUEST_MODEL KMB_SKIP REQUEST_MODEL DYN_DUMPSTER REQUEST_MODEL DOZER REQUEST_MODEL CEMENT REQUEST_MODEL DYN_RAMP st2_speech_flag = 0 st2_car_nodes = 0 st2_control_flag = 0 steal2_goals = 10 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// RECORDING 10: THROUGH THE TRAM STATION TOWARDS THE POLICE ALLEYWAY //////////////////////////// IF steal2_goals = 10 //sorting cesar's speed GOSUB st2_sorting_speed ////// Speech for this section ///// IF st2_speech_flag = 0 IF LOCATE_CAR_2D st2_cesars_car -2264.5 546.1 3.0 3.0 FALSE IF st2_speech_goals = 0 st2_speech_goals = 8 st2_speech_control_flag = 11 st2_random_last_label = 12 GOSUB st2_dialogue_setup SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar TRUE st2_speech_flag = 1 ENDIF ENDIF ENDIF IF st2_speech_flag = 1 IF LOCATE_CAR_2D st2_cesars_car -2224.1 454.8 3.0 3.0 FALSE PRINT_NOW ( STE2_04 ) 4000 1 //Follow Cesar into the alleyway. st2_speech_flag = 2 ENDIF ENDIF IF st2_speech_flag = 2 IF st2_speech_goals = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar FALSE st2_speech_flag = 3 ENDIF ENDIF ////// car nodes jiggery pokery /////// IF st2_car_nodes = 0 ENDIF IF st2_control_flag = 0 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR st2_cesars_car st2_control_flag = 1 ENDIF ENDIF ////// waiting for cesar to finish recording ///// IF st2_control_flag = 1 IF LOCATE_CHAR_IN_CAR_2D scplayer -2213.9 453.0 5.0 5.0 FALSE //deleting the stuff from recording 10 MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[0] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[1] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[2] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[3] //MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[4] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[5] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[6] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[7] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[8] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[19] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[20] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[0] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[1] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[2] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[3] //MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[4] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[5] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[6] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[7] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[8] //creating the stuff needed for recording 11 //car 0 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE st2_model st2_class IF st2_model >= 0 CLEAR_AREA -2228.8 521.1 33.8 5.0 TRUE st2_no_plates = st2_model GOSUB st2_my_number_plates CREATE_CAR st2_model -2228.8 521.1 33.8 st2_cars[10] SET_CAR_HEADING st2_cars[10] 179.4 LOCK_CAR_DOORS st2_cars[10] CARLOCK_LOCKED CREATE_RANDOM_CHAR_AS_DRIVER st2_cars[10] st2_peds[10] SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[10] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[10] FALSE ENDIF //car 11 IF HAS_MODEL_LOADED COPCARSF CLEAR_AREA -2149.4 462.0 33.8 5.0 TRUE CREATE_CAR COPCARSF -2149.4 462.0 33.8 st2_cars[11] SET_CAR_HEADING st2_cars[11] 174.8 LOCK_CAR_DOORS st2_cars[11] CARLOCK_LOCKED CREATE_CHAR_INSIDE_CAR st2_cars[11] PEDTYPE_MISSION1 SFPD1 st2_peds[11] SET_CAR_DRIVING_STYLE st2_cars[11] DRIVINGMODE_AVOIDCARS SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[11] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[11] FALSE ENDIF //car 12 IF HAS_MODEL_LOADED COPCARSF CLEAR_AREA -2148.8 444.0 33.8 5.0 TRUE CREATE_CAR COPCARSF -2148.8 444.0 33.8 st2_cars[12] SET_CAR_HEADING st2_cars[12] 360.0 LOCK_CAR_DOORS st2_cars[12] CARLOCK_LOCKED CREATE_CHAR_INSIDE_CAR st2_cars[12] PEDTYPE_MISSION1 SFPD1 st2_peds[12] SET_CAR_DRIVING_STYLE st2_cars[12] DRIVINGMODE_AVOIDCARS SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[12] TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE st2_peds[12] FALSE ENDIF //playing the car recordings for recording 11 IF NOT IS_CAR_DEAD st2_cesars_car START_PLAYBACK_RECORDED_CAR st2_cesars_car 65 ENDIF IF NOT IS_CAR_DEAD st2_cars[11] START_PLAYBACK_RECORDED_CAR st2_cars[11] 66 SWITCH_CAR_SIREN st2_cars[11] ON ENDIF IF NOT IS_CAR_DEAD st2_cars[12] START_PLAYBACK_RECORDED_CAR st2_cars[12] 67 SWITCH_CAR_SIREN st2_cars[12] ON ENDIF CLEAR_THIS_PRINT STE2_04 timerb = 0 st2_speech_flag = 0 st2_car_nodes = 0 st2_control_flag = 0 steal2_goals = 11 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// RECORDING 11: REVERSING OUT OF THE ALLEYWAY WITH THE POLICE ////////////////////////////////// IF steal2_goals = 11 //sorting cesar's speed //GOSUB st2_sorting_speed ////// Speech for this section ///// IF st2_speech_flag = 0 IF timerb > 1000 st2_speech_goals = 11 st2_speech_control_flag = 0 GOSUB st2_dialogue_setup SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar TRUE st2_speech_flag = 1 ENDIF ENDIF IF st2_speech_flag = 1 IF st2_speech_goals = 0 ALTER_WANTED_LEVEL_NO_DROP player1 2 st2_speech_flag = 2 ENDIF ENDIF IF st2_speech_flag = 2 IF st2_speech_goals = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar FALSE st2_speech_flag = 3 ENDIF ENDIF ////// car nodes jiggery pokery /////// IF st2_car_nodes = 0 ENDIF IF st2_control_flag = 0 CLEAR_AREA -2128.1 496.6 34.0 100.0 TRUE MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[0] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[1] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[2] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[3] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[4] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[5] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[6] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[7] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[8] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[9] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[13] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[14] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[15] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[16] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[17] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[18] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[19] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[20] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[21] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[0] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[1] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[2] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[3] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[4] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[5] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[6] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[7] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[8] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[9] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[13] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[14] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[15] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[16] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[17] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[18] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[19] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[20] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[21] //creating the stuff needed for recording 12 //CREATE_OBJECT CJ_ROADBARRIER_L0 -2128.1 496.6 34.0 st2_object[0] CREATE_OBJECT DYN_ROADBARRIER_3 -2128.1 496.6 34.0 st2_object[0] SET_OBJECT_HEADING st2_object[0] 270.0 CREATE_OBJECT DYN_ROADBARRIER_4 -2128.1 501.6 34.0 st2_object[1] SET_OBJECT_HEADING st2_object[1] 270.0 CREATE_OBJECT DYN_ROADBARRIER_3 -2128.1 503.6 34.0 st2_object[2] SET_OBJECT_HEADING st2_object[2] 270.0 CREATE_OBJECT DYN_ROADBARRIER_4 -2128.1 506.8 34.0 st2_object[3] SET_OBJECT_HEADING st2_object[3] 270.0 CREATE_OBJECT DYN_ROADBARRIER_3 -2128.1 511.6 34.0 st2_object[4] SET_OBJECT_HEADING st2_object[4] 270.0 //CREATE_OBJECT CJ_ROADBARRIER_L0 -2128.1 511.6 34.0 st2_object[4] //CREATE_OBJECT CJ_ROADBARRIER_L0 -2016.1 496.6 34.0 st2_object[5] CREATE_OBJECT DYN_ROADBARRIER_3 -2016.1 496.6 34.0 st2_object[5] SET_OBJECT_HEADING st2_object[5] 90.0 CREATE_OBJECT DYN_ROADBARRIER_4 -2016.1 501.6 34.0 st2_object[6] SET_OBJECT_HEADING st2_object[6] 90.0 CREATE_OBJECT DYN_ROADBARRIER_3 -2016.1 503.6 34.0 st2_object[7] SET_OBJECT_HEADING st2_object[7] 90.0 CREATE_OBJECT DYN_ROADBARRIER_4 -2016.1 506.8 34.0 st2_object[8] SET_OBJECT_HEADING st2_object[8] 90.0 CREATE_OBJECT DYN_ROADBARRIER_3 -2016.1 511.6 34.0 st2_object[9] SET_OBJECT_HEADING st2_object[9] 90.0 //CREATE_OBJECT CJ_ROADBARRIER_L0 -2016.1 511.6 34.0 st2_object[9] CREATE_OBJECT KMB_SKIP -2096.1 501.8 34.0 st2_object[10] SET_OBJECT_HEADING st2_object[10] 90.0 CREATE_OBJECT DYN_DUMPSTER -2096.1 504.8 34.0 st2_object[11] SET_OBJECT_HEADING st2_object[11] 270.0 CREATE_OBJECT DYN_RAMP -2056.9 503.8 34.0 st2_object[12] SET_OBJECT_HEADING st2_object[12] 270.0 //car 0 - flatbed IF HAS_MODEL_LOADED DOZER CREATE_CAR DOZER -2084.6 501.2 34.4 st2_cars[0] SET_CAR_HEADING st2_cars[0] 269.7 SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[0] TRUE ENDIF //car 1 - dozer IF HAS_MODEL_LOADED DOZER CREATE_CAR DOZER -2045.1 500.9 34.3 st2_cars[1] SET_CAR_HEADING st2_cars[1] 156.1 SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[1] TRUE ENDIF //car 2 - cement IF HAS_MODEL_LOADED CEMENT CREATE_CAR CEMENT -2048.3 508.4 35.0 st2_cars[2] SET_CAR_HEADING st2_cars[2] 88.4 SET_LOAD_COLLISION_FOR_CAR_FLAG st2_cars[2] TRUE ENDIF st2_control_flag = 1 ENDIF ////// waiting for cesar to finish recording ///// IF st2_control_flag = 1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR st2_cesars_car START_PLAYBACK_RECORDED_CAR st2_cesars_car 99 st2_speech_flag = 0 st2_car_nodes = 0 st2_control_flag = 0 steal2_goals = 12 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// RECORDING 12: 2 WHEELS PAST THE ROADWORKS ///////////////////////////////////////////////////// IF steal2_goals = 12 //sorting cesar's speed GOSUB st2_sorting_speed ////// Speech for this section ///// IF st2_speech_flag = 0 ENDIF ////// car nodes jiggery pokery /////// IF st2_car_nodes = 0 ENDIF IF st2_control_flag = 0 ////// streaming in stuff for next recording /////// st2_control_flag = 1 ENDIF ////// waiting for cesar to finish recording ///// IF st2_control_flag = 1 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR st2_cesars_car SET_CAR_DENSITY_MULTIPLIER 1.0 OPEN_SEQUENCE_TASK st2_sequence TASK_CAR_DRIVE_TO_COORD -1 st2_cesars_car -2009.7 192.2 26.0 45.0 MODE_ACCURATE TRUE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 st2_cesars_car -2031.7 180.1 27.4 10.0 MODE_ACCURATE TRUE DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK st2_sequence PERFORM_SEQUENCE_TASK cesar st2_sequence CLEAR_SEQUENCE_TASK st2_sequence IF IS_CHAR_IN_CAR scplayer st2_players_car REMOVE_BLIP st2_cesar_blip ADD_BLIP_FOR_COORD -2024.7 179.4 27.4 st2_cesar_blip ENDIF st2_speech_flag = 0 st2_car_nodes = 0 st2_control_flag = 0 steal2_goals = 13 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// INTO THE HUB AND MISSION COMPLETE //////////////////////////////////////////////////////////// IF steal2_goals = 13 ////// Speech for this section ///// IF st2_speech_flag = 0 IF st2_speech_goals = 0 // Ok, we're good. | See you back at the hub, CJ! st2_speech_goals = 12 st2_speech_control_flag = 0 GOSUB st2_dialogue_setup IF NOT IS_CAR_DEAD st2_cars[11] IF NOT IS_CAR_DEAD st2_cars[12] IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer st2_cars[11] 30.0 30.0 FALSE IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer st2_cars[12] 30.0 30.0 FALSE CLEAR_WANTED_LEVEL player1 ENDIF ENDIF ENDIF ENDIF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar TRUE st2_speech_flag = 1 ENDIF ENDIF IF st2_speech_flag = 1 IF st2_speech_goals = 0 PRINT ( STE2_05 ) 4000 1 //Drive back to the hub. st2_speech_flag = 2 ENDIF ENDIF IF st2_speech_flag = 2 IF st2_speech_goals = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar FALSE st2_speech_flag = 3 ENDIF ENDIF ////// deleting everything once Cesar has returned to the hub /////// IF st2_control_flag = 0 GET_SCRIPT_TASK_STATUS cesar PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK SET_PED_DENSITY_MULTIPLIER 1.0 MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[0] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[1] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[2] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[3] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[4] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[5] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[6] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[7] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[8] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[9] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[10] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[11] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[12] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[13] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[14] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[15] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[16] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[17] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[18] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[19] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[20] MARK_CHAR_AS_NO_LONGER_NEEDED st2_peds[21] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[0] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[1] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[2] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[3] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[4] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[5] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[6] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[7] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[8] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[9] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[10] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[11] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[12] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[13] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[14] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[15] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[16] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[17] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[18] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[19] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[20] MARK_CAR_AS_NO_LONGER_NEEDED st2_cars[21] MARK_CAR_AS_NO_LONGER_NEEDED st2_tram MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[0] MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[1] MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[2] MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[3] MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[4] MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[5] MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[6] MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[7] MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[8] MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[9] MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[10] MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[11] MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[12] MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[13] MARK_OBJECT_AS_NO_LONGER_NEEDED st2_object[14] st2_control_flag = 1 ENDIF ENDIF IF IS_CHAR_IN_CAR scplayer st2_players_car IF LOCATE_CHAR_IN_CAR_3D scplayer -2024.7 179.4 27.4 4.0 4.0 4.0 TRUE CLEAR_WANTED_LEVEL player1 SET_PLAYER_CONTROL player1 OFF st2_control_flag = 0 steal2_goals = 14 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////// FINAL CUTSCENE ////////////////////////////////////////////////////////////////////////// IF steal2_goals = 14 IF st2_control_flag = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE OPEN_GARAGE hbgdSFS WHILE NOT IS_GARAGE_OPEN hbgdSFS WAIT 0 ENDWHILE GOSUB st2_death_checks IF st2_deathcheck_flag = 1 GOTO mission_steal2_failed ENDIF SET_AREA_VISIBLE 1 SHUT_ALL_CHARS_UP TRUE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS st2_speech_goals = 0 REQUEST_ANIMATION PLAYIDLES LOAD_ALL_MODELS_NOW SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_CHAR_AREA_VISIBLE scplayer 1 CLEAR_AREA -2043.7 171.4 27.6 100.0 TRUE SET_VEHICLE_AREA_VISIBLE st2_cesars_car 1 SET_CAR_COORDINATES st2_cesars_car -2043.7 171.4 27.6 SET_CAR_HEADING st2_cesars_car 91.6 LOAD_SCENE_IN_DIRECTION -2045.4 173.1 27.8 309.5 SET_CHAR_AREA_VISIBLE cesar 1 CLEAR_CHAR_TASKS_IMMEDIATELY cesar SET_CHAR_COORDINATES cesar -2045.4 173.1 27.8 SET_CHAR_HEADING cesar 325.5 SET_VEHICLE_AREA_VISIBLE st2_players_car 1 SET_CAR_COORDINATES st2_players_car -2033.8 178.6 27.6 SET_CAR_HEADING st2_players_car 90.0 IF NOT IS_CHAR_IN_CAR scplayer st2_players_car WARP_CHAR_INTO_CAR scplayer st2_players_car ENDIF //SET_CAR_FORWARD_SPEED st2_players_car OPEN_SEQUENCE_TASK st2_sequence TASK_CAR_DRIVE_TO_COORD -1 st2_players_car -2044.4 177.6 27.6 5.0 MODE_ACCURATE TRUE DRIVINGMODE_AVOIDCARS TASK_LEAVE_ANY_CAR -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 cesar CLOSE_SEQUENCE_TASK st2_sequence PERFORM_SEQUENCE_TASK scplayer st2_sequence CLEAR_SEQUENCE_TASK st2_sequence SET_FIXED_CAMERA_POSITION -2049.3 172.8 28.78 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2034.7 177.4 29.8 JUMP_CUT DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB st2_death_checks IF st2_deathcheck_flag = 1 GOTO mission_steal2_failed ENDIF st2_control_flag = 1 ENDIF IF st2_control_flag = 1 IF IS_CAR_IN_AREA_2D st2_players_car -2039.3 175.1-2041.9 181.6 FALSE TASK_PLAY_ANIM cesar stretch PLAYIDLES 1000.0 FALSE FALSE FALSE FALSE -1 st2_control_flag = 2 ENDIF ENDIF IF st2_control_flag = 2 GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLOSE_GARAGE hbgdSFS WHILE NOT IS_GARAGE_CLOSED hbgdSFS WAIT 0 ENDWHILE GOSUB st2_death_checks IF st2_deathcheck_flag = 1 GOTO mission_steal2_failed ENDIF SHUT_ALL_CHARS_UP FALSE SET_AREA_VISIBLE 0 SET_CHAR_AREA_VISIBLE scplayer 0 LOAD_SCENE -2045.4 173.1 27.8 LOAD_SCENE_IN_DIRECTION -2045.4 173.1 27.8 309.5 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -2027.2 179.5 27.8 SET_CHAR_HEADING scplayer 277.5 DO_FADE 500 FADE_IN SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_steal2_passed ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////Streaming in the car_recordings///////////////////////////////////////////////////////////////// IF steal2_goals = 0 //recording 1 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 70 REQUEST_CAR_RECORDING 70 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 71 REQUEST_CAR_RECORDING 71 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 72 REQUEST_CAR_RECORDING 72 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 73 REQUEST_CAR_RECORDING 73 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 74 REQUEST_CAR_RECORDING 74 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 75 REQUEST_CAR_RECORDING 75 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 76 REQUEST_CAR_RECORDING 76 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 77 REQUEST_CAR_RECORDING 77 ENDIF //recording 2 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 78 REQUEST_CAR_RECORDING 78 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 79 REQUEST_CAR_RECORDING 79 ENDIF ENDIF IF steal2_goals = 2 //recording 3 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 80 REQUEST_CAR_RECORDING 80 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 81 REQUEST_CAR_RECORDING 81 ENDIF /* IF NOT HAS_CAR_RECORDING_BEEN_LOADED 82 REQUEST_CAR_RECORDING 82 ENDIF */ //recording 4 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 83 REQUEST_CAR_RECORDING 83 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 84 REQUEST_CAR_RECORDING 84 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 85 REQUEST_CAR_RECORDING 85 ENDIF ENDIF IF steal2_goals = 4 //recording 5 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 86 REQUEST_CAR_RECORDING 86 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 87 REQUEST_CAR_RECORDING 87 ENDIF ENDIF IF steal2_goals = 5 //recording 6 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 88 REQUEST_CAR_RECORDING 88 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 89 REQUEST_CAR_RECORDING 89 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 90 REQUEST_CAR_RECORDING 90 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 91 REQUEST_CAR_RECORDING 91 ENDIF ENDIF IF steal2_goals = 6 //recording 7 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 92 REQUEST_CAR_RECORDING 92 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 93 REQUEST_CAR_RECORDING 93 ENDIF ENDIF IF steal2_goals = 7 //recording 8 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 94 REQUEST_CAR_RECORDING 94 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 95 REQUEST_CAR_RECORDING 95 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 96 REQUEST_CAR_RECORDING 96 ENDIF //recording 9 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 97 REQUEST_CAR_RECORDING 97 ENDIF ENDIF IF steal2_goals = 8 //recording 10 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 98 REQUEST_CAR_RECORDING 98 ENDIF //recording 11 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 65 REQUEST_CAR_RECORDING 65 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 66 REQUEST_CAR_RECORDING 66 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 67 REQUEST_CAR_RECORDING 67 ENDIF ENDIF IF steal2_goals = 11 //recording 12 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 99 REQUEST_CAR_RECORDING 99 ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////failing mission///////////////////////////////////////////////////////////////////////////////// IF steal2_goals > 0 IF steal2_goals < 13 IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer st2_cesars_car 150.0 150.0 FALSE IF NOT IS_CAR_ON_SCREEN st2_cesars_car CLEAR_PRINTS PRINT_NOW ( STE2_06 ) 4000 1 //Cesar got too far ahead. GOTO mission_steal2_failed ENDIF ENDIF IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer st2_players_car 120.0 120.0 FALSE IF NOT IS_CAR_ON_SCREEN st2_players_car CLEAR_PRINTS PRINT_NOW ( STE2_09 ) 4000 1 //The police recovered one of the cars! GOTO mission_steal2_failed ENDIF ENDIF IF NOT IS_CHAR_IN_CAR scplayer st2_players_car IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer st2_players_car 160.0 160.0 FALSE IF NOT IS_CAR_ON_SCREEN st2_players_car CLEAR_PRINTS PRINT_NOW ( STE2_08 ) 4000 1 //The target car was destroyed. GOTO mission_steal2_failed ENDIF ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////failing mission///////////////////////////////////////////////////////////////////////////////// IF steal2_goals > 0 IF steal2_goals < 14 GOSUB st2_blippage ENDIF ENDIF ///ingame dialogue/// GOSUB st2_overall_dialogue GOTO mission_steal2_loop // Mission steal2 failed mission_steal2_failed: PRINT_BIG M_FAIL 5000 1 RETURN // mission steal2 passed mission_steal2_passed: flag_steal_mission_counter ++ /* IF flag_steal_mission_counter = 2 REMOVE_BLIP trace_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT traceX traceY traceZ trace_blip_icon trace_contact_blip ENDIF IF flag_steal_mission_counter = 3 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 */ SWITCH_CAR_GENERATOR steal_car_cargen2 101 SWITCH_CAR_GENERATOR steal_car_cargen3 101 PRINT_WITH_NUMBER_BIG ( M_PASSS ) 5000 5000 1 //"Mission Passed!" //100 being the amount of cash ADD_SCORE player1 5000//amount of cash AWARD_PLAYER_MISSION_RESPECT 5//amount of respect PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL PLAYER1 REGISTER_MISSION_PASSED STEAL_2 PLAYER_MADE_PROGRESS 1 //START_NEW_SCRIPT steal2_mission_loop RETURN // mission cleanup mission_cleanup_steal2: //SET_CAMERA_BEHIND_PLAYER IF IS_STRING_EMPTY $shop_name RESTORE_CAMERA_JUMPCUT ENDIF REMOVE_CHAR_ELEGANTLY cesar IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF SHUT_ALL_CHARS_UP FALSE MARK_MODEL_AS_NO_LONGER_NEEDED SULTAN MARK_MODEL_AS_NO_LONGER_NEEDED ELEGY MARK_MODEL_AS_NO_LONGER_NEEDED WMYBU MARK_MODEL_AS_NO_LONGER_NEEDED MULE MARK_MODEL_AS_NO_LONGER_NEEDED CARDBOARDBOX MARK_MODEL_AS_NO_LONGER_NEEDED TRAM MARK_MODEL_AS_NO_LONGER_NEEDED COPCARSF MARK_MODEL_AS_NO_LONGER_NEEDED SFPD1 MARK_MODEL_AS_NO_LONGER_NEEDED COACH MARK_MODEL_AS_NO_LONGER_NEEDED PCJ600 MARK_VEHICLE_MOD_AS_NO_LONGER_NEEDED nto_b_s MARK_MODEL_AS_NO_LONGER_NEEDED DOZER MARK_MODEL_AS_NO_LONGER_NEEDED CEMENT //MARK_MODEL_AS_NO_LONGER_NEEDED UTILITY MARK_MODEL_AS_NO_LONGER_NEEDED DYN_ROADBARRIER_3 MARK_MODEL_AS_NO_LONGER_NEEDED DYN_ROADBARRIER_4 MARK_MODEL_AS_NO_LONGER_NEEDED KMB_SKIP MARK_MODEL_AS_NO_LONGER_NEEDED DYN_DUMPSTER MARK_MODEL_AS_NO_LONGER_NEEDED DYN_RAMP DONT_SUPPRESS_ANY_CAR_MODELS REMOVE_ANIMATION PLAYIDLES REMOVE_BLIP st2_cesar_blip UNLOAD_SPECIAL_CHARACTER 1 GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////// GOSUBS /////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// st2_death_checks://///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF IS_CHAR_DEAD cesar CLEAR_PRINTS PRINT_NOW ( STE2_07 ) 4000 1 //Cesar was killed. st2_deathcheck_flag = 1 ENDIF IF IS_CAR_DEAD st2_players_car CLEAR_PRINTS PRINT_NOW ( STE2_08 ) 4000 1 //The target car was destroyed. st2_deathcheck_flag = 1 ENDIF IF IS_CAR_DEAD st2_cesars_car CLEAR_PRINTS PRINT_NOW ( STE2_08 ) 4000 1 //The target car was destroyed. st2_deathcheck_flag = 1 ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// st2_cesar_group://////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF st2_flag_cesar_in_group = 1 IF NOT IS_GROUP_MEMBER cesar Players_Group REMOVE_BLIP st2_cesar_blip ADD_BLIP_FOR_CHAR cesar st2_cesar_blip SET_BLIP_AS_FRIENDLY st2_cesar_blip TRUE st2_flag_cesar_in_group = 0 ENDIF ENDIF IF st2_flag_cesar_in_group = 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer cesar 8.0 8.0 8.0 FALSE IF NOT IS_GROUP_MEMBER cesar Players_Group MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_Group cesar ENDIF REMOVE_BLIP st2_cesar_blip ADD_BLIP_FOR_COORD -1632.9 1207.4 6.1 st2_cesar_blip st2_flag_cesar_in_group = 1 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// st2_blippage://///////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF st2_car_check_flag = 0 IF IS_CHAR_IN_CAR scplayer st2_players_car CLEAR_THIS_PRINT IN_VEH REMOVE_BLIP st2_cesar_blip IF steal2_goals = 13 ADD_BLIP_FOR_COORD -2024.7 179.4 27.4 st2_cesar_blip PRINT ( STE2_05 ) 4000 1 //Drive back to the hub. ELSE ADD_BLIP_FOR_CAR st2_cesars_car st2_cesar_blip SET_BLIP_AS_FRIENDLY st2_cesar_blip TRUE PRINT ( STE2_02 ) 7000 1 //Stay close to Cesar as you return to the hub. ENDIF st2_car_check_flag = 1 ENDIF ENDIF IF st2_car_check_flag = 1 IF NOT IS_CHAR_IN_CAR scplayer st2_players_car CLEAR_THIS_PRINT STE2_05 CLEAR_THIS_PRINT STE2_02 PRINT ( STE2_11 ) 7000 1 //Get back in the car. REMOVE_BLIP st2_cesar_blip ADD_BLIP_FOR_CAR st2_players_car st2_cesar_blip SET_BLIP_AS_FRIENDLY st2_cesar_blip TRUE st2_car_check_flag = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// st2_sorting_speed:////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// GET_CHAR_COORDINATES scplayer st2_player_x st2_player_y z GET_CAR_COORDINATES st2_cesars_car st2_cesar_x st2_cesar_y z GET_DISTANCE_BETWEEN_COORDS_2D st2_player_x st2_player_y st2_cesar_x st2_cesar_y st2_temp_x //////////////////////////////////////////////////////////////////////////////////////////// ///// playback ranges from 0.0 - 2.0 //// ///// sqrt of tempx is from 0.0 (close) to 100.0 (far) //// ///// when tempx < 21, playback speed should be 1.0 - 2.0 (i.e. speed car up a bit) //// ///// when tempx > 20, playback speed should be 0.0 - 1.0 (i.e. slow car down a bit) //// ///// speed should never be above 2.0 or below 0.0 //// ///// formula for < 21 = 2.0 - (actual / 20.0) //// ///// formula for > 21 = 1.0 - ((actual - 20.0) / 80.0) //// //////////////////////////////////////////////////////////////////////////////////////////// IF st2_temp_x < 21.0 st2_temp_x = st2_temp_x / 20.0 st2_temp_y = st2_temp_x st2_temp_x = 2.0 - st2_temp_y ELSE st2_temp_x = st2_temp_x - 20.0 //st2_tempx = st2_tempx / 80.0 st2_temp_x = st2_temp_x / 90.0 st2_temp_y = st2_temp_x st2_temp_x = 1.0 - st2_temp_y ENDIF st2_temp_x = st2_temp_x + 0.3 ////DEBUG - this is tweaking... add to speed up, subtract to slow down. st2_playback_speed = st2_temp_x IF st2_playback_speed > 2.0 st2_playback_speed = 2.0 ENDIF IF st2_playback_speed < 0.5 st2_playback_speed = 0.5 ENDIF IF IS_PLAYBACK_GOING_ON_FOR_CAR st2_cesars_car SET_PLAYBACK_SPEED st2_cesars_car st2_playback_speed ENDIF IF NOT IS_CAR_DEAD st2_tram IF IS_PLAYBACK_GOING_ON_FOR_CAR st2_tram SET_PLAYBACK_SPEED st2_tram st2_playback_speed ENDIF ENDIF //setting the speed of the other cars IF steal2_goals = 1 IF NOT IS_CAR_DEAD st2_cars[2] IF IS_PLAYBACK_GOING_ON_FOR_CAR st2_cars[2] SET_PLAYBACK_SPEED st2_cars[2] st2_playback_speed ENDIF ENDIF IF NOT IS_CAR_DEAD st2_cars[3] IF IS_PLAYBACK_GOING_ON_FOR_CAR st2_cars[3] SET_PLAYBACK_SPEED st2_cars[3] st2_playback_speed ENDIF ENDIF IF NOT IS_CAR_DEAD st2_cars[4] IF IS_PLAYBACK_GOING_ON_FOR_CAR st2_cars[4] SET_PLAYBACK_SPEED st2_cars[4] st2_playback_speed ENDIF ENDIF IF NOT IS_CAR_DEAD st2_cars[5] IF IS_PLAYBACK_GOING_ON_FOR_CAR st2_cars[5] SET_PLAYBACK_SPEED st2_cars[5] st2_playback_speed ENDIF ENDIF IF NOT IS_CAR_DEAD st2_cars[6] IF IS_PLAYBACK_GOING_ON_FOR_CAR st2_cars[6] SET_PLAYBACK_SPEED st2_cars[6] st2_playback_speed ENDIF ENDIF IF NOT IS_CAR_DEAD st2_cars[7] IF IS_PLAYBACK_GOING_ON_FOR_CAR st2_cars[7] SET_PLAYBACK_SPEED st2_cars[7] st2_playback_speed ENDIF ENDIF ENDIF /* IF steal2_goals = 3 IF NOT IS_CAR_DEAD st2_cars[0] SET_PLAYBACK_SPEED st2_cars[0] st2_playback_speed ENDIF ENDIF */ IF steal2_goals = 4 IF NOT IS_CAR_DEAD st2_cars[15] SET_PLAYBACK_SPEED st2_cars[15] st2_playback_speed ENDIF ENDIF IF steal2_goals = 5 IF NOT IS_CAR_DEAD st2_cars[2] SET_PLAYBACK_SPEED st2_cars[2] st2_playback_speed ENDIF ENDIF IF steal2_goals = 6 IF NOT IS_CAR_DEAD st2_cars[14] SET_PLAYBACK_SPEED st2_cars[14] st2_playback_speed ENDIF IF NOT IS_CAR_DEAD st2_cars[16] SET_PLAYBACK_SPEED st2_cars[16] st2_playback_speed ENDIF IF NOT IS_CAR_DEAD st2_cars[17] SET_PLAYBACK_SPEED st2_cars[17] st2_playback_speed ENDIF ENDIF IF steal2_goals = 7 IF NOT IS_CAR_DEAD st2_cars[3] SET_PLAYBACK_SPEED st2_cars[3] st2_playback_speed ENDIF ENDIF IF steal2_goals = 8 IF NOT IS_CAR_DEAD st2_cars[7] SET_PLAYBACK_SPEED st2_cars[7] st2_playback_speed ENDIF IF NOT IS_CAR_DEAD st2_cars[8] SET_PLAYBACK_SPEED st2_cars[8] st2_playback_speed ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// st2_my_number_plates://///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// GENERATE_RANDOM_INT_IN_RANGE 1 37 st2_no_plates_flag IF st2_no_plates_flag = 1 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates got_m00_ ENDIF IF st2_no_plates_flag = 2 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates m00tv_4u ENDIF IF st2_no_plates_flag = 3 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates mathew_2 ENDIF IF st2_no_plates_flag = 4 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates d4_dew0r ENDIF IF st2_no_plates_flag = 5 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates d0de_777 ENDIF IF st2_no_plates_flag = 6 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates dam0_666 ENDIF IF st2_no_plates_flag = 7 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates C0NEY_88 ENDIF IF st2_no_plates_flag = 8 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates pre4cher ENDIF IF st2_no_plates_flag = 9 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates dbp_4ndy ENDIF IF st2_no_plates_flag = 10 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates ev1l_sly ENDIF IF st2_no_plates_flag = 11 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates n1_r4v3n ENDIF IF st2_no_plates_flag = 12 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates d1vx_z00 ENDIF IF st2_no_plates_flag = 13 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates mr_b3nn ENDIF IF st2_no_plates_flag = 14 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates r3d_r4sp ENDIF IF st2_no_plates_flag = 15 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates La_B0mba ENDIF IF st2_no_plates_flag = 16 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates L3337_0g ENDIF IF st2_no_plates_flag = 17 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates budd4h_X ENDIF IF st2_no_plates_flag = 18 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates t3h_buck ENDIF IF st2_no_plates_flag = 19 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates CHUNKY_1 ENDIF IF st2_no_plates_flag = 20 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates ev1l_bnz ENDIF IF st2_no_plates_flag = 21 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates S4ND_M4N ENDIF IF st2_no_plates_flag = 22 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates RKK_DBP1 ENDIF IF st2_no_plates_flag = 23 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates RE1_K0KU ENDIF IF st2_no_plates_flag = 24 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates s3xy_jud ENDIF IF st2_no_plates_flag = 25 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates sunra_93 ENDIF IF st2_no_plates_flag = 26 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates UG_FuX69 ENDIF IF st2_no_plates_flag = 27 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates Li0n_Cum ENDIF IF st2_no_plates_flag = 28 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates rkk_pwnd ENDIF IF st2_no_plates_flag = 29 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates haze_b0b ENDIF IF st2_no_plates_flag = 30 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates t3h_fluf ENDIF IF st2_no_plates_flag = 31 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates BM_4NDY_ ENDIF IF st2_no_plates_flag = 32 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates BM_D34N_ ENDIF IF st2_no_plates_flag = 33 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates BM_L4C3Y ENDIF IF st2_no_plates_flag = 34 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates BM_D3V__ ENDIF IF st2_no_plates_flag = 35 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates NU_SK00L ENDIF IF st2_no_plates_flag = 36 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates G4L_AVET ENDIF IF st2_no_plates_flag = 37 CUSTOM_PLATE_FOR_NEXT_CAR st2_no_plates M0j0_j0j ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// st2_overall_dialogue://///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF st2_speech_goals = 1 //initial dialogue with cesar IF st2_speech_control_flag < st2_last_label GOSUB st2_loading_dialogue GOSUB st2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB st2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $st2_print_label[st2_speech_control_flag] st2_slot1 = 0 st2_slot2 = 0 ENDIF ELSE st2_speech_goals = 0 ENDIF ENDIF IF st2_speech_goals = 4 //cutscene before going upstairs at showroom OR st2_speech_goals = 5 //cutscene upstairs at showroom OR st2_speech_goals = 6 //cutscene jumping out of the showroom IF st2_speech_control_flag < st2_last_label GOSUB st2_loading_dialogue GOSUB st2_playing_dialogue GOSUB st2_finishing_dialogue ELSE st2_speech_goals = 0 ENDIF ENDIF IF st2_speech_goals = 7 //walkie talkie working? OR st2_speech_goals = 8 //all the main dialogue OR st2_speech_goals = 9 //get back to the garage OR st2_speech_goals = 10 //did you see that? OR st2_speech_goals = 11 //back up! OR st2_speech_goals = 12 //see you back at the hub IF st2_speech_control_flag < st2_last_label GOSUB st2_loading_dialogue GOSUB st2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB st2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $st2_print_label[st2_speech_control_flag] st2_slot1 = 0 st2_slot2 = 0 ENDIF ELSE st2_speech_goals = 0 ENDIF ENDIF IF steal2_goals = 0 IF st2_control_flag = 0 IF IS_GROUP_MEMBER cesar Players_Group IF LOCATE_CHAR_ANY_MEANS_CHAR_3D cesar scplayer 10.0 10.0 8.0 FALSE IF IS_CHAR_ON_FOOT scplayer AND IS_CHAR_ON_FOOT cesar IF st2_speech_goals = 2 //talking on the way to the car showroom OR st2_speech_goals = 3 //talking on the way to the car showroom IF st2_speech_control_flag < st2_last_label GOSUB st2_loading_dialogue GOSUB st2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB st2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $st2_print_label[st2_speech_control_flag] st2_slot1 = 0 st2_slot2 = 0 ENDIF ELSE st2_speech_goals = 0 ENDIF ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer AND IS_CHAR_IN_ANY_CAR cesar IF st2_speech_goals = 2 //talking on the way to the car showroom OR st2_speech_goals = 3 //talking on the way to the car showroom IF st2_speech_control_flag < st2_last_label GOSUB st2_loading_dialogue GOSUB st2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB st2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $st2_print_label[st2_speech_control_flag] st2_slot1 = 0 st2_slot2 = 0 ENDIF ELSE st2_speech_goals = 0 ENDIF ENDIF ENDIF ENDIF /* IF st2_speech_goals = 2 //talking on the way to the car showroom OR st2_speech_goals = 3 //talking on the way to the car showroom IF st2_speech_control_flag < st2_last_label GOSUB st2_loading_dialogue GOSUB st2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB st2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $st2_print_label[st2_speech_control_flag] st2_slot1 = 0 st2_slot2 = 0 ENDIF ELSE st2_speech_goals = 0 ENDIF ENDIF */ ELSE IF st2_speech_goals < 14 IF st2_speech_control_flag < st2_last_label st2_speech_control_flag ++ ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $st2_print_label[st2_speech_control_flag] CLEAR_PRINTS st2_storing_speech_goals_number = st2_speech_goals st2_storing_speech_control_number = st2_speech_control_flag st2_speech_goals = 14 GENERATE_RANDOM_INT_IN_RANGE 0 4 st2_speech_control_flag st2_random_last_label = st2_speech_control_flag + 1 GOSUB st2_dialogue_setup ENDIF ENDIF IF st2_speech_goals = 14 //cesar is out of the group IF NOT IS_GROUP_MEMBER cesar Players_Group IF st2_speech_control_flag < st2_last_label GOSUB st2_loading_dialogue GOSUB st2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB st2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $st2_print_label[st2_speech_control_flag] st2_slot1 = 0 st2_slot2 = 0 ENDIF ELSE PRINT ( STE2_10 ) 7000 1 //You have left Cesar behind. st2_speech_goals = 15 ENDIF ELSE PRINT ( STE2_10 ) 7000 1 //You have left Cesar behind. st2_speech_goals = 15 ENDIF ENDIF IF st2_speech_goals = 15 //cesar has been out of the group and has returned IF IS_GROUP_MEMBER cesar Players_Group st2_speech_goals = 16 st2_speech_control_flag = 0 CLEAR_PRINTS //GOSUB st2_dialogue_setup ENDIF ENDIF IF st2_speech_goals = 16 //cesar is back in group IF IS_GROUP_MEMBER cesar Players_Group timerb = 0 st2_speech_goals = st2_storing_speech_goals_number st2_speech_control_flag = st2_storing_speech_control_number GOSUB st2_dialogue_setup IF st2_storing_speech_goals_number = 0 PRINT ( STE2_01 ) 7000 1 //Go and get the cars from the car showroom. timerb = 0 ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $st2_print_label[st2_speech_control_flag] st2_speech_goals = 14 GENERATE_RANDOM_INT_IN_RANGE 0 4 st2_speech_control_flag st2_random_last_label = st2_speech_control_flag + 1 GOSUB st2_dialogue_setup ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// st2_dialogue_setup:///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF st2_speech_goals = 1 $st2_print_label[0] = &STL2_AA // Ok, let's go and get those wheels! st2_audio_label[0] = SOUND_STL2_AA st2_last_label = 1 ENDIF IF st2_speech_goals = 2 $st2_print_label[0] = &STL2_BA // I like this place, you know. $st2_print_label[1] = &STL2_BB // What? Where? $st2_print_label[2] = &STL2_BC // San Fierro, man. $st2_print_label[3] = &STL2_BD // My home will always be the Varrios and El Corona, $st2_print_label[4] = &STL2_BE // but this city, it has something gentle about it. $st2_print_label[5] = &STL2_BF // Yeah, I know what you mean. $st2_print_label[6] = &STL2_BG // Kendl seems to like it too, you know? $st2_print_label[7] = &STL2_BH // Oh yeah, she's really getting her head into this business thing. $st2_print_label[8] = &STL2_BJ // That's good, she's always been the brains in the family. $st2_print_label[9] = &STL2_BK // She should get out of the ghetto and make something of herself. $st2_print_label[10] = &STL2_BL // I think she's aiming to make something out of ALL of us, eh! $st2_print_label[11] = &STL2_BM // Yeah, she's the moms of the family now... st2_audio_label[0] = SOUND_STL2_BA st2_audio_label[1] = SOUND_STL2_BB st2_audio_label[2] = SOUND_STL2_BC st2_audio_label[3] = SOUND_STL2_BD st2_audio_label[4] = SOUND_STL2_BE st2_audio_label[5] = SOUND_STL2_BF st2_audio_label[6] = SOUND_STL2_BG st2_audio_label[7] = SOUND_STL2_BH st2_audio_label[8] = SOUND_STL2_BJ st2_audio_label[9] = SOUND_STL2_BK st2_audio_label[10] = SOUND_STL2_BL st2_audio_label[11] = SOUND_STL2_BM st2_last_label = 12 ENDIF IF st2_speech_goals = 3 $st2_print_label[0] = &STL2_CA // Who's this 'Truth' guy, holmes? Is he all there? $st2_print_label[1] = &STL2_CB // He just sees everything from a very different perspective, is all. $st2_print_label[2] = &STL2_CC // At first I thought he was just another acid casualty fruit cake. $st2_print_label[3] = &STL2_CD // But some of the things he says... $st2_print_label[4] = &STL2_CE // I don't know, man, it ain't all bullshit.... $st2_print_label[5] = &STL2_CF // You gonna become an alien hunter, holmes? $st2_print_label[6] = &STL2_CG // I'll take a rain check on that one. st2_audio_label[0] = SOUND_STL2_CA st2_audio_label[1] = SOUND_STL2_CB st2_audio_label[2] = SOUND_STL2_CC st2_audio_label[3] = SOUND_STL2_CD st2_audio_label[4] = SOUND_STL2_CE st2_audio_label[5] = SOUND_STL2_CF st2_audio_label[6] = SOUND_STL2_CG st2_last_label = 7 ENDIF IF st2_speech_goals = 4 $st2_print_label[0] = &STL2_DA // This is the place! $st2_print_label[1] = &STL2_DB // Here we go, holmes. $st2_print_label[2] = &STL2_DC // This is it, CJ! $st2_print_label[3] = &STL2_DD // The cars are upstairs! $st2_print_label[4] = &STL2_DE // The cars are on the first floor $st2_print_label[5] = &STL2_DF // They're in the first floor showroom $st2_print_label[6] = &STL2_DH // What, how are we going to get 'em down? $st2_print_label[7] = &STL2_DJ // First floor? Shit... $st2_print_label[8] = &STL2_DK // Great, nothing's ever easy is it! st2_audio_label[0] = SOUND_STL2_DA st2_audio_label[1] = SOUND_STL2_DB st2_audio_label[2] = SOUND_STL2_DC st2_audio_label[3] = SOUND_STL2_DD st2_audio_label[4] = SOUND_STL2_DE st2_audio_label[5] = SOUND_STL2_DF st2_audio_label[6] = SOUND_STL2_DH st2_audio_label[7] = SOUND_STL2_DJ st2_audio_label[8] = SOUND_STL2_DK st2_last_label = st2_random_last_label ENDIF IF st2_speech_goals = 5 $st2_print_label[0] = &STL2_EA // Can I help you two, eerr, gentlemen? $st2_print_label[1] = &STL2_EB // Yeah, you can help us by going and helping some other motherfucker. $st2_print_label[2] = &STL2_EC // Y- yeah, that sounds like a good idea! $st2_print_label[3] = &STL2_ED // Well, sometimes you gotta just do it, I guess. $st2_print_label[4] = &STL2_EE // It's follow the leader, CJ, you better keep up! st2_audio_label[0] = SOUND_STL2_EA st2_audio_label[1] = SOUND_STL2_EB st2_audio_label[2] = SOUND_STL2_EC st2_audio_label[3] = SOUND_STL2_ED st2_audio_label[4] = SOUND_STL2_EE st2_last_label = 5 ENDIF IF st2_speech_goals = 6 $st2_print_label[0] = &STL2_EF // Holy fuck! st2_audio_label[0] = SOUND_STL2_EF st2_last_label = 1 ENDIF IF st2_speech_goals = 7 $st2_print_label[0] = &STL2_FA // Hey, CJ, is this walkie talkie working? $st2_print_label[1] = &STL2_FB // Yeah, reading you loud and clear! $st2_print_label[2] = &STL2_FC // C'mon, CJ, see if you can keep up with Cesar Vialpando! st2_audio_label[0] = SOUND_STL2_FA st2_audio_label[1] = SOUND_STL2_FB st2_audio_label[2] = SOUND_STL2_FC st2_last_label = 3 ENDIF IF st2_speech_goals = 8 $st2_print_label[0] = &STL2_FD // Beat the tram up the hill! $st2_print_label[1] = &STL2_FE // Piece of chocolate cake! $st2_print_label[2] = &STL2_FF // This tram driver must be shitting himself! $st2_print_label[3] = &STL2_FG // Hello cops, what took you, eh? $st2_print_label[4] = &STL2_FH // Hey, CJ, watch this ... NITRO! $st2_print_label[5] = &STL2_FJ // Follow me down the hill, holmes! //$st2_print_label[6] = &STL2_FK // Bike in the road ... watch out! $st2_print_label[7] = &STL2_FO // Hello. Cops, back again you idiotas? $st2_print_label[8] = &STL2_FP // Get out of the fucking road! $st2_print_label[9] = &STL2_FQ // Holy SHIIIIIIIT! $st2_print_label[10] = &STL2_HB // I think we lost 'em. $st2_print_label[11] = &STL2_HC // There's a shortcut this way! st2_audio_label[0] = SOUND_STL2_FD st2_audio_label[1] = SOUND_STL2_FE st2_audio_label[2] = SOUND_STL2_FF st2_audio_label[3] = SOUND_STL2_FG st2_audio_label[4] = SOUND_STL2_FH st2_audio_label[5] = SOUND_STL2_FJ //st2_audio_label[6] = SOUND_STL2_FK st2_audio_label[7] = SOUND_STL2_FO st2_audio_label[8] = SOUND_STL2_FP st2_audio_label[9] = SOUND_STL2_FQ st2_audio_label[10] = SOUND_STL2_HB st2_audio_label[11] = SOUND_STL2_HC st2_last_label = st2_random_last_label ENDIF IF st2_speech_goals = 9 $st2_print_label[0] = &STL2_FL // Ok, Cesar, that's enough fun. $st2_print_label[1] = &STL2_FM // Let's get these cars back to the garage! $st2_print_label[2] = &STL2_FN // Ok, CJ, I know a quick route! st2_audio_label[0] = SOUND_STL2_FL st2_audio_label[1] = SOUND_STL2_FM st2_audio_label[2] = SOUND_STL2_FN st2_last_label = 3 ENDIF IF st2_speech_goals = 10 $st2_print_label[0] = &STL2_FR // Fuck, holmes, did you see that? $st2_print_label[1] = &STL2_GA // Yeah, can we think about getting back $st2_print_label[2] = &STL2_GB // before I end up in a carwreck barbeque? $st2_print_label[3] = &STL2_HA // Sure thing, holmes. st2_audio_label[0] = SOUND_STL2_FR st2_audio_label[1] = SOUND_STL2_GA st2_audio_label[2] = SOUND_STL2_GB st2_audio_label[3] = SOUND_STL2_HA st2_last_label = 4 ENDIF IF st2_speech_goals = 11 $st2_print_label[0] = &STL2_HD // Uh-oh, more cops! $st2_print_label[1] = &STL2_HE // BACK UP, HOLMES, BACK UP! st2_audio_label[0] = SOUND_STL2_HD st2_audio_label[1] = SOUND_STL2_HE st2_last_label = 2 ENDIF IF st2_speech_goals = 12 $st2_print_label[0] = &STL2_HF // Ok, we're good. $st2_print_label[1] = &STL2_HG // See you back at the hub, CJ! st2_audio_label[0] = SOUND_STL2_HF st2_audio_label[1] = SOUND_STL2_HG st2_last_label = 2 ENDIF IF st2_speech_goals = 14 $st2_print_label[0] = &CESX_BA // Wait up, CJ! $st2_print_label[1] = &CESX_BB // Hang ten, CJ! $st2_print_label[2] = &CESX_BC // Hold up! $st2_print_label[3] = &CESX_BD // Slow down, Carl! st2_audio_label[0] = SOUND_CESX_BA st2_audio_label[1] = SOUND_CESX_BB st2_audio_label[2] = SOUND_CESX_BC st2_audio_label[3] = SOUND_CESX_BD st2_last_label = st2_random_last_label ENDIF st2_slot_load = st2_speech_control_flag st2_slot1 = 0 st2_slot2 = 0 st2_play_which_slot = 1 //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// st2_loading_dialogue://///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF st2_slot_load < st2_last_label //slot 1 IF st2_slot1 = 0 LOAD_MISSION_AUDIO 1 st2_audio_label[st2_slot_load] st2_slot_load ++ st2_slot1 = 1 ENDIF //slot 2 IF st2_slot2 = 0 LOAD_MISSION_AUDIO 2 st2_audio_label[st2_slot_load] st2_slot_load ++ st2_slot2 = 1 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// st2_playing_dialogue://///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //slot 1 IF st2_play_which_slot = 1 IF st2_slot1 = 1 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $st2_print_label[st2_speech_control_flag] ) 4500 1 st2_slot1 = 2 ENDIF ENDIF ENDIF //slot 2 IF st2_play_which_slot = 2 IF st2_slot2 = 1 IF HAS_MISSION_AUDIO_LOADED 2 PLAY_MISSION_AUDIO 2 PRINT_NOW ( $st2_print_label[st2_speech_control_flag] ) 4500 1 st2_slot2 = 2 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// st2_finishing_dialogue:///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //slot 1 IF st2_slot1 = 2 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_THIS_PRINT $st2_print_label[st2_speech_control_flag] st2_speech_control_flag ++ st2_play_which_slot = 2 st2_slot1 = 0 ENDIF ENDIF //slot 2 IF st2_slot2 = 2 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT $st2_print_label[st2_speech_control_flag] st2_speech_control_flag ++ st2_play_which_slot = 1 st2_slot2 = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION STEAL4 : // AUTHOR : // DESICRIPTION : // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** { // ************************************************************************************************************* // GENERAL INITIALISATION - Every level requires this // ************************************************************************************************************* SCRIPT_NAME STEAL4 GOSUB mission_start_STEAL4 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_STEAL4 ENDIF GOSUB mission_cleanup_STEAL4 MISSION_END mission_start_STEAL4: flag_player_on_mission = 1 // general variables that are in every mission - DON'T DECLARE MISSION SPECIFIC VARIABLES HERE LVAR_INT m_stage LVAR_INT m_goals LVAR_INT m_passed LVAR_INT m_failed LVAR_INT m_quit LVAR_INT m_frame_num LVAR_INT m_this_frame_time LVAR_INT m_last_frame_time LVAR_INT m_time_diff // commonly used temporary variables LVAR_INT temp_int temp_int2 temp_int3 LVAR_FLOAT temp_float temp_float2 temp_float3 LVAR_INT temp_seq LVAR_FLOAT vec_x vec_y vec_z LVAR_FLOAT vec2_x vec2_y vec2_z LVAR_INT dialogue_flag LVAR_FLOAT x2 y2 z2 m_stage = 0 m_goals = 0 m_passed = 0 m_failed = 0 m_quit = 0 mission_loop_STEAL4: WAIT 0 IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S m_passed = 1 ENDIF // frame count m_frame_num++ IF m_frame_num > 9 m_frame_num = 0 ENDIF // timer GET_GAME_TIMER m_this_frame_time m_time_diff = m_this_frame_time - m_last_frame_time m_last_frame_time = m_this_frame_time // additional timers LVAR_INT wrong_container_timer LVAR_INT crane_help_timer LVAR_INT dialogue_timer LVAR_INT dropped_cont_timer LVAR_INT move_car_timer wrong_container_timer += m_time_diff crane_help_timer += m_time_diff dialogue_timer += m_time_diff dropped_cont_timer += m_time_diff move_car_timer += m_time_diff GOSUB STEAL4_debug_tools IF level_paused = 1 GOTO end_of_main_loop_STEAL4 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_1 m_stage = 10 m_goals = 0 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer steal_car ENDIF ENDIF SWITCH m_stage CASE 0 GOSUB STEAL4_m_stage_0 BREAK CASE 1 GOSUB STEAL4_m_stage_1 BREAK CASE 2 GOSUB STEAL4_m_stage_2 BREAK CASE 3 GOSUB STEAL4_m_stage_3 BREAK CASE 4 GOSUB STEAL4_m_stage_4 BREAK CASE 5 GOSUB STEAL4_m_stage_5 BREAK CASE 6 GOSUB STEAL4_m_stage_6 BREAK CASE 7 GOSUB STEAL4_m_stage_7 BREAK CASE 8 GOSUB STEAL4_m_stage_8 BREAK CASE 9 GOSUB STEAL4_m_stage_9 BREAK CASE 10 GOSUB STEAL4_m_stage_10 BREAK ENDSWITCH GOSUB steal4_process_conversations GOSUB STEAL4_global_functions // end of main loop end_of_main_loop_STEAL4: IF m_quit = 0 IF m_failed = 0 IF m_passed = 0 GOTO mission_loop_STEAL4 ELSE GOSUB mission_passed_STEAL4 RETURN ENDIF ELSE GOSUB mission_failed_STEAL4 RETURN ENDIF ELSE RETURN // quits out - goes to cleanup ENDIF // ************************************************************************************************************* // COMMONLY USED STUFF FOR EVERY SCRIPT - DON'T CHANGE // ************************************************************************************************************* STEAL4_debug_tools: LVAR_INT debug_on IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_X IF debug_on = 0 debug_on = 1 WRITE_DEBUG LEVEL_DEBUG_ON ELSE debug_on = 0 WRITE_DEBUG LEVEL_DEBUG_OFF ENDIF ENDIF IF debug_on = 1 // display mission stage variables for debug LVAR_INT display_debug VAR_INT STEAL4_view_debug[8] IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_SPACE CLEAR_ALL_VIEW_VARIABLES display_debug++ IF display_debug > 2 display_debug = 0 ENDIF ENDIF IF display_debug = 1 STEAL4_view_debug[0] = m_stage STEAL4_view_debug[1] = m_goals STEAL4_view_debug[2] = player_on_foot STEAL4_view_debug[3] = conversation_flag STEAL4_view_debug[4] = active_conversation STEAL4_view_debug[5] = conversation_status STEAL4_view_debug[6] = crane_help_flag STEAL4_view_debug[7] = crane_help_timer VIEW_INTEGER_VARIABLE STEAL4_view_debug[0] m_stage VIEW_INTEGER_VARIABLE STEAL4_view_debug[1] m_goals VIEW_INTEGER_VARIABLE STEAL4_view_debug[2] player_on_foot VIEW_INTEGER_VARIABLE STEAL4_view_debug[3] conversation_flag VIEW_INTEGER_VARIABLE STEAL4_view_debug[4] active_conversation VIEW_INTEGER_VARIABLE STEAL4_view_debug[5] conversation_status VIEW_INTEGER_VARIABLE STEAL4_view_debug[6] crane_help_flag VIEW_INTEGER_VARIABLE STEAL4_view_debug[7] crane_help_timer ENDIF IF display_debug = 2 VIEW_FLOAT_VARIABLE magno_arm_rotate_y magno_arm_rotate_y VIEW_FLOAT_VARIABLE magno_cabin_h magno_cabin_h VIEW_FLOAT_VARIABLE magno_arm_h magno_arm_h VIEW_FLOAT_VARIABLE magno_base_x magno_base_x VIEW_FLOAT_VARIABLE magno_base_y magno_base_y VIEW_FLOAT_VARIABLE crane_rope_length crane_rope_length ENDIF LVAR_INT level_paused IF level_paused = 0 IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_P WRITE_DEBUG LEVEL_PAUSED level_paused = 1 ENDIF ELSE IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_P WRITE_DEBUG LEVEL_UNPAUSED level_paused = 0 ENDIF ENDIF ENDIF RETURN // ************************************************************************************************************* // INITIALISATION - SPECIFIC TO THIS LEVEL // ************************************************************************************************************* STEAL4_m_stage_0: // fake create IF m_goals = -1 CREATE_CAR PONY 0.0 0.0 0.0 temp_car ADD_BLIP_FOR_COORD 0.0 0.0 0.0 buddy_Blip CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 container_to_delete ADD_BLIP_FOR_COORD 0.0 0.0 0.0 bad_wave2_car_blip ADD_BLIP_FOR_COORD 0.0 0.0 0.0 container_blip[0] ADD_BLIP_FOR_COORD 0.0 0.0 0.0 steal_car_blip CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 last_picked_up_container CREATE_CAR PONY 0.0 0.0 0.0 bad_wave2_car ADD_BLIP_FOR_COORD 0.0 0.0 0.0 bad_wave2_car_blip CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 picked_up_container ADD_BLIP_FOR_COORD 0.0 0.0 0.0 location_blip ENDIF IF m_goals = 0 // global VAR_INT st4_mission_attempts // peds LVAR_INT buddy LVAR_INT temp_ped LVAR_INT bad_wave1_ped[6] LVAR_INT bad_wave2_ped[4] LVAR_INT extra_baddie[2] // vehicles LVAR_INT buddy_car LVAR_INT temp_car LVAR_INT open_container1_car open_container2_car LVAR_INT steal_car LVAR_INT bad_wave1_car LVAR_INT bad_wave1_car2 LVAR_INT bad_wave2_car LVAR_INT train // objects LVAR_INT temp_obj LVAR_INT container[9] LVAR_INT open_container1 LVAR_INT open_container2 open_container3 LVAR_INT container_to_delete LVAR_INT last_picked_up_container LVAR_INT picked_up_container // blips LVAR_INT buddy_blip LVAR_INT location_blip LVAR_INT container_blip[3] LVAR_INT bad_wave1_ped_blip[6] LVAR_INT bad_wave2_car_blip LVAR_INT steal_car_blip LVAR_INT extra_baddie_blip[2] // particle fx LVAR_INT particle_fx1 LVAR_INT particle_fx2 // flags VAR_INT buddy_health LVAR_INT player_on_foot LVAR_INT in_car_dialogue_flag LVAR_INT joined_group LVAR_INT CLEAR_in_car_dialogue_flag LVAR_INT disable_crane_drop LVAR_INT train_is_coming LVAR_INT drive_by_target LVAR_INT wrong_container_dialogue_flag LVAR_INT crane_help_flag LVAR_INT buddy_blip_type LVAR_INT garage_is_open LVAR_INT neils_car_is_attached neils_car_is_attached2 LVAR_INT steal_car_health LVAR_INT cross_is_pressed LVAR_INT container_collision_flag LVAR_INT failed_condition LVAR_INT crane_help_flag2[10] LVAR_INT this_container_is_it LVAR_INT steal4_reward LVAR_INT active_conversation LVAR_INT conversation_status LVAR_INT conversation_flag // coords LVAR_FLOAT open_container1_x open_container1_y open_container1_z open_container1_h LVAR_FLOAT open_container2_x open_container2_y open_container2_z open_container2_h LVAR_FLOAT open_container3_x open_container3_y open_container3_z open_container3_h // decision makers LVAR_INT buddy_dm LVAR_INT baddie_dm LVAR_INT bad_wave2_dm LVAR_INT tough_dm LVAR_INT empty_dm // floats LVAR_FLOAT dropped_container_last_speed LVAR_FLOAT final_car_pos_x final_car_pos_y final_car_pos_z final_car_pos_h // set flags ----------------------- buddy_health = 0 player_on_foot = 0 in_car_dialogue_flag = 0 joined_group = 0 CLEAR_in_car_dialogue_flag = 0 disable_crane_drop = 0 train_is_coming = 0 drive_by_target = 0 wrong_container_dialogue_flag = 0 crane_help_flag = 0 buddy_blip_type = 0 garage_is_open = 0 container_collision_flag = 0 failed_condition = 0 neils_car_is_attached = 0 neils_car_is_attached2 = 0 this_container_is_it = 0 steal4_reward = 0 active_conversation = 0 conversation_status = 0 conversation_flag = 0 SET_PLAYER_CONTROL player1 OFF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_MISSION_TEXT steal4 // animated cutscene SET_AREA_VISIBLE 1 SET_CHAR_AREA_VISIBLE scplayer 1 LOAD_SCENE -2031.0 149.0 29.0 LOAD_CUTSCENE STEAL_4 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CHAR_AREA_VISIBLE scplayer 0 SET_AREA_VISIBLE 0 CLEAR_AREA -2036.1702 179.2839 27.8359 10.0 TRUE // create LOAD_SPECIAL_CHARACTER 1 CESAR REQUEST_MODEL SAVANNA WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_MODEL_LOADED SAVANNA WAIT 0 ENDWHILE CUSTOM_PLATE_FOR_NEXT_CAR SAVANNA LVA4L CREATE_CAR SAVANNA -2034.7063 177.7413 27.8359 buddy_car CHANGE_CAR_COLOUR buddy_car 3 3 SET_CAR_HEADING buddy_car 244.5958 MARK_MODEL_AS_NO_LONGER_NEEDED SAVANNA CREATE_CHAR_AS_PASSENGER buddy_car PEDTYPE_MISSION2 SPECIAL01 0 buddy SET_CHAR_NEVER_TARGETTED buddy TRUE SET_CHAR_DROWNS_IN_WATER buddy FALSE SET_CHAR_HEALTH buddy 400 SET_CHAR_MAX_HEALTH buddy 400 SET_CHAR_CANT_BE_DRAGGED_OUT buddy TRUE SET_CHAR_SUFFERS_CRITICAL_HITS buddy FALSE SET_CHAR_COORDINATES scplayer -2035.5303 180.7482 27.8359 SET_CHAR_HEADING scplayer 209.6339 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SWITCH_RANDOM_TRAINS OFF SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 TRUE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH tough_dm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY buddy_dm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY empty_dm // reset crane position IF DOES_OBJECT_EXIST magno_base GET_OBJECT_COORDINATES magno_base magno_base_x magno_base_y magno_base_z ENDIF magno_arm_rotate_y = 15.0 magno_cabin_h = 207.615 magno_arm_h = 207.615 magno_base_x = -1586.70 magno_base_y = 84.795792 crane_rope_length = 0.639 GOSUB st4_reset_crane_position temp_int = 0 WHILE temp_int < 10 crane_help_flag2[temp_int] = 0 temp_int++ ENDWHILE SWITCH_WIDESCREEN OFF SET_WANTED_MULTIPLIER 0.001 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE m_goals++ ENDIF IF m_goals = 1 PRINT_NOW ST4_05 5000 1 // get in car with cesar TIMERA = 0 m_stage++ m_goals = 0 dialogue_flag = 0 ENDIF RETURN // ************************************************************************************************************* // STAGE 1 // ************************************************************************************************************* STEAL4_m_stage_1: // initialisation for stage IF m_goals = 0 disable_crane = 1 // create objects CREATE_OBJECT_NO_OFFSET KMB_CONTAINER_BLUE -1570.9858 55.2009 17.7460 container[0] SET_OBJECT_HEADING container[0] 40.4082 CREATE_OBJECT_NO_OFFSET KMB_CONTAINER_BLUE -1564.4012 62.1434 17.7537 container[1] SET_OBJECT_HEADING container[1] 235.0724 //48.1600 CREATE_OBJECT_NO_OFFSET KMB_CONTAINER_BLUE -1582.2017 54.1735 17.7537 container[2] SET_OBJECT_HEADING container[2] 0.0 // ground crates CREATE_OBJECT_NO_OFFSET KMB_CONTAINER_RED -1658.8503 44.8514 4.06 container[4] SET_OBJECT_HEADING container[4] 315.2922 CREATE_OBJECT_NO_OFFSET KMB_CONTAINER_YEL -1649.4757 9.1182 4.06 container[3] SET_OBJECT_HEADING container[3] 315.1249 temp_int = 0 WHILE temp_int < 4 IF DOES_OBJECT_EXIST container[temp_int] FREEZE_OBJECT_POSITION container[temp_int] TRUE ENDIF temp_int++ ENDWHILE SET_RADIO_CHANNEL RS_CLASSIC_HIP_HOP m_goals++ ENDIF // wait for player to get in buddy's car IF m_goals = 1 IF dialogue_flag = 0 IF TIMERA > 6000 active_conversation = 1 dialogue_flag = 1 ENDIF ENDIF IF NOT IS_CAR_DEAD buddy_car IF IS_CHAR_IN_CAR scplayer buddy_car IF NOT IS_CHAR_DEAD buddy SET_GROUP_MEMBER players_group buddy SET_CHAR_DROWNS_IN_WATER buddy FALSE joined_group = 1 ENDIF m_goals++ ENDIF ENDIF ENDIF // make sure buddy is in buddy's car IF m_goals = 2 IF NOT IS_CHAR_DEAD buddy IF NOT IS_CAR_DEAD buddy_car IF IS_CHAR_IN_CAR buddy buddy_car IF active_conversation = 0 m_goals++ REMOVE_BLIP location_blip ADD_BLIP_FOR_COORD -1585.6301 90.3697 2.7752 location_blip PRINT_NOW ST4_43 7000 1 // Drive to the docks dialogue_flag = 0 TIMERA = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF m_goals > 2 IF dialogue_flag = 0 IF TIMERA > 8000 active_conversation = 2 dialogue_flag = 1 ENDIF ENDIF ENDIF // wait for player to get close IF m_goals = 3 IF NOT IS_CAR_DEAD buddy_car IF NOT IS_CHAR_DEAD buddy IF IS_CHAR_IN_CAR buddy buddy_car IF IS_CHAR_IN_CAR scplayer buddy_car IF LOCATE_CAR_2D buddy_car -1585.6301 90.3697 100.0 100.0 FALSE m_goals = 99 ENDIF ENDIF ENDIF ENDIF ENDIF IF debug_on = 1 IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK IF NOT IS_CAR_DEAD buddy_car IF IS_CHAR_IN_CAR scplayer buddy_car IF NOT IS_CHAR_DEAD buddy IF IS_CHAR_IN_CAR buddy buddy_car SET_CAR_COORDINATES buddy_car -1585.6301 90.3 5.0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // check if they are on foot IF NOT IS_CHAR_DEAD buddy IF LOCATE_CHAR_ON_FOOT_2D buddy -1585.6301 90.3697 70.0 70.0 FALSE IF LOCATE_CHAR_ON_FOOT_2D scplayer -1585.6301 90.3697 70.0 70.0 FALSE m_goals = 99 ENDIF ENDIF ENDIF ENDIF // exit IF m_goals = 99 m_goals = 0 m_stage++ ENDIF // FUNCTIONS GLOBAL FOR STAGE ------- IF NOT IS_CHAR_DEAD buddy IF NOT IS_CAR_DEAD buddy_car IF IS_CHAR_IN_CAR buddy buddy_car IF NOT IS_CHAR_IN_CAR scplayer buddy_car IF NOT buddy_blip_type = 1 buddy_blip_type = 1 GOSUB reset_buddy_blip ENDIF ELSE IF NOT buddy_blip_type = 0 buddy_blip_type = 0 GOSUB reset_buddy_blip ENDIF ENDIF ELSE IF NOT IS_CHAR_IN_CAR scplayer buddy_car IF NOT buddy_blip_type = 1 buddy_blip_type = 1 GOSUB reset_buddy_blip ENDIF ENDIF ENDIF ENDIF ENDIF // check if cesar has become detached from group GOSUB steal4_buddy_group_manager IF NOT joined_group = 1 IF DOES_BLIP_EXIST location_blip REMOVE_BLIP location_blip ENDIF ELSE IF NOT DOES_BLIP_EXIST location_blip ADD_BLIP_FOR_COORD -1585.6301 90.3697 2.7752 location_blip PRINT_NOW ST4_43 7000 1 // Drive to the docks ENDIF ENDIF RETURN // ************************************************************************************************************* // STAGE 2 wait for player to get in crane // ************************************************************************************************************* STEAL4_m_stage_2: IF m_goals = 0 CLEAR_PRINTS PRINT_NOW ST4_13 5000 1 // get in crane disable_crane = 0 dialogue_flag = 0 TIMERA = 0 m_goals++ ENDIF // wait for player to enter crane IF m_goals = 1 cross_is_pressed = 0 IF dialogue_flag = 0 IF TIMERA > 5500 active_conversation = 3 dialogue_flag++ ENDIF ENDIF IF NOT joined_group = 1 IF DOES_BLIP_EXIST location_blip REMOVE_BLIP location_blip disable_crane = 1 ENDIF ELSE IF NOT DOES_BLIP_EXIST location_blip ADD_BLIP_FOR_COORD -1585.6301 90.3697 2.7752 location_blip PRINT_NOW ST4_13 7000 1 // get in crane disable_crane = 0 ENDIF ENDIF IF player_is_in_crane = 2 disable_crane_exit = 1 disable_crane_slide = 1 REMOVE_BLIP location_blip wrong_container_timer = 30000 crane_help_timer = 8000 IF NOT IS_CHAR_DEAD buddy REMOVE_CHAR_FROM_GROUP buddy CLEAR_CHAR_TASKS_IMMEDIATELY buddy SET_CHAR_DECISION_MAKER buddy buddy_dm SET_CHAR_COORDINATES buddy -1627.8306 63.8863 2.9167 SET_CHAR_HEADING buddy 299.6010 SET_CHAR_DROWNS_IN_WATER buddy FALSE ENDIF open_container1_x = -1620.9379 open_container1_y = 75.4195 open_container1_z = 4.1 open_container1_h = 20.7795 open_container2_x = -1632.7861 open_container2_y = 61.2888 open_container2_z = 4.1 open_container2_h = 6.6851 open_container3_x = -1644.0168 open_container3_y = 50.9619 open_container3_z = 4.1 open_container3_h = 39.4583 CLEAR_HELP CLEAR_PRINTS temp_int = 0 WHILE temp_int < 4 IF DOES_OBJECT_EXIST container[temp_int] FREEZE_OBJECT_POSITION container[temp_int] FALSE ENDIF temp_int++ ENDWHILE GOSUB steal4_buddy_group_manager m_goals++ ELSE GOSUB steal4_buddy_group_manager ENDIF ENDIF // quick cutscene explaining what to do IF m_goals = 2 GOSUB steal4_quit_current_conversation_now ENABLE_CRANE_CONTROLS FALSE FALSE FALSE disable_crane = 1 SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION -1517.6934 60.1951 57.7488 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1518.5448 60.2080 57.2246 JUMP_CUT CLEAR_PRINTS TIMERA = 0 dialogue_flag = 0 m_goals++ ENDIF IF m_goals > 2 AND m_goals < 7 IF cross_is_pressed = 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOSUB steal4_quit_current_conversation_now m_goals = 6 cross_is_pressed = 1 ENDIF ELSE IF NOT IS_SKIP_CUTSCENE_BUTTON_PRESSED cross_is_pressed = 0 ENDIF ENDIF ENDIF IF m_goals = 3 IF TIMERA > 1000 active_conversation = 4 m_goals++ ENDIF ENDIF IF m_goals = 4 IF TIMERA > 2500 m_goals++ ENDIF ENDIF IF m_goals = 5 SET_FIXED_CAMERA_POSITION -1631.9966 64.4568 3.1424 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1631.0305 64.5624 3.3783 JUMP_CUT dialogue_flag = 0 m_goals++ TIMERA = 0 ENDIF IF m_goals = 6 IF active_conversation = 0 m_goals++ ENDIF ENDIF IF m_goals = 7 magno_camera_type = 1 reset_crane_camera = 1 DISPLAY_HUD FALSE DISPLAY_RADAR FALSE SWITCH_WIDESCREEN OFF disable_crane = 0 ENABLE_CRANE_CONTROLS TRUE TRUE TRUE m_goals = 99 ENDIF IF m_goals = 99 REQUEST_MODEL CLUB WHILE NOT HAS_MODEL_LOADED CLUB WAIT 0 ENDWHILE m_goals = 0 m_stage++ ENDIF RETURN // ************************************************************************************************************* // STAGE 3 - place 1st container // ************************************************************************************************************* STEAL4_m_stage_3: /* IF m_goals > 0 AND m_goals < 3 IF cross_is_pressed = 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED magno_camera_type = 1 reset_crane_camera = 1 cross_is_pressed = 1 m_goals = 3 ENDIF ELSE IF NOT IS_SKIP_CUTSCENE_BUTTON_PRESSED cross_is_pressed = 0 ENDIF ENDIF ENDIF */ SWITCH m_goals CASE 0 IF cross_is_pressed = 0 IF NOT buddy_blip_type = 3 buddy_blip_type = 3 GOSUB reset_buddy_blip ENDIF disable_crane = 1 magno_camera_type = 0 reset_crane_camera = 1 TIMERA = 0 IF NOT IS_CHAR_DEAD buddy SET_CHAR_DECISION_MAKER buddy empty_dm SET_CHAR_COORDINATES buddy -1626.9811 65.4201 2.5495 SET_CHAR_HEADING buddy 306.9205 ENDIF m_goals++ ELSE IF NOT buddy_blip_type = 3 buddy_blip_type = 3 GOSUB reset_buddy_blip ENDIF IF NOT IS_CHAR_DEAD buddy SET_CHAR_DECISION_MAKER buddy empty_dm SET_CHAR_COORDINATES buddy -1626.9811 65.4201 2.5495 SET_CHAR_HEADING buddy 306.9205 ENDIF m_goals = 3 ENDIF BREAK CASE 1 IF TIMERA > 3000 magno_camera_type = 1 reset_crane_camera = 1 TIMERA = 0 m_goals++ ENDIF BREAK CASE 2 IF TIMERA > 3000 CLEAR_HELP magno_camera_type = 1 // set back to default crane position. reset_crane_camera = 1 TIMERA = 0 m_goals++ ENDIF BREAK CASE 3 DISPLAY_HUD TRUE DISPLAY_RADAR TRUE CLEAR_HELP ENABLE_CRANE_CONTROLS TRUE TRUE TRUE magno_camera_type = 1 reset_crane_camera = 1 disable_crane = 0 disable_crane_rotate = 0 // test disable_manual_control = 0 // 1 disable_crane_slide = 0 //1 disable_crane_drop = 0 PRINT_NOW ST4_T01 5000 1 //~s~Pick up blue container with the crane. ADD_BLIP_FOR_OBJECT container[0] container_blip[0] ADD_BLIP_FOR_OBJECT container[1] container_blip[1] ADD_BLIP_FOR_OBJECT container[2] container_blip[2] crane_help_timer = 10000 crane_help_flag = 0 TIMERA = 0 m_goals++ BREAK // wait for container to get attached CASE 4 GRAB_ENTITY_ON_ROPE_FOR_OBJECT magno_arm temp_car temp_ped temp_obj IF temp_obj = container[0] OR temp_obj = container[1] OR temp_obj = container[2] picked_up_container = temp_obj ENABLE_CRANE_CONTROLS TRUE TRUE FALSE disable_crane_drop = 1 IF DOES_BLIP_EXIST container_blip[0] REMOVE_BLIP container_blip[0] ENDIF IF DOES_BLIP_EXIST container_blip[1] REMOVE_BLIP container_blip[1] ENDIF IF DOES_BLIP_EXIST container_blip[2] REMOVE_BLIP container_blip[2] ENDIF REMOVE_BLIP location_blip ADD_BLIP_FOR_COORD open_container1_x open_container1_y open_container1_z location_blip disable_crane_rotate = 0 disable_manual_control = 0 CLEAR_HELP PRINT_NOW ST4_T02 5000 1 // move container into position //PRINT_HELP_FOREVER ST4_H02 // Use the ~q~ button to raise the rope. crane_help_flag = 0 crane_help_timer = 500 TIMERA = 20000 TIMERB = 0 m_goals++ ENDIF BREAK // wait for crane to get in drop position CASE 5 //WRITE_DEBUG_WITH_INT disable_crane_drop disable_crane_drop // enable drop + help IF DOES_OBJECT_EXIST picked_up_container LOCATE_OBJECT_3D picked_up_container open_container1_x open_container1_y open_container1_z 5.0 5.0 3.0 TRUE IF LOCATE_OBJECT_2D picked_up_container open_container1_x open_container1_y 6.0 6.0 FALSE IF NOT disable_crane_drop = 0 ENABLE_CRANE_CONTROLS TRUE TRUE TRUE disable_crane_drop = 0 ENDIF ELSE IF NOT disable_crane_drop = 1 ENABLE_CRANE_CONTROLS TRUE TRUE FALSE disable_crane_drop = 1 ENDIF ENDIF IF LOCATE_OBJECT_3D picked_up_container open_container1_x open_container1_y open_container1_z 6.0 6.0 6.0 FALSE IF NOT crane_help_flag = 4 CLEAR_HELP PRINT_HELP_FOREVER ST4_H03 // Use the ~o~ button to release objects. crane_help_flag = 4 ENDIF ELSE IF crane_help_flag = 4 CLEAR_HELP crane_help_flag = 0 ENDIF ENDIF ENDIF // detect if container has been dropped IF DOES_OBJECT_EXIST picked_up_container GRAB_ENTITY_ON_ROPE_FOR_OBJECT magno_arm temp_car temp_ped temp_obj IF NOT temp_obj = picked_up_container TIMERA = 0 container_to_delete = picked_up_container CLEAR_PRINTS CLEAR_HELP IF DOES_BLIP_EXIST container_blip[0] REMOVE_BLIP container_blip[0] ENDIF IF DOES_BLIP_EXIST container_blip[1] REMOVE_BLIP container_blip[1] ENDIF IF DOES_BLIP_EXIST container_blip[2] REMOVE_BLIP container_blip[2] ENDIF IF DOES_BLIP_EXIST location_blip REMOVE_BLIP location_blip ENDIF m_goals++ container_collision_flag = 0 dropped_container_last_speed = 0.0 ENDIF ENDIF BREAK // cutscene CASE 6 // if player drops the container from too high it should destroy the car inside - mission fail. IF container_collision_flag = 1 IF HAS_OBJECT_COLLIDED_WITH_ANYTHING picked_up_container IF dropped_container_last_speed > 14.0 GET_OBJECT_COORDINATES picked_up_container x y z CUSTOM_PLATE_FOR_NEXT_CAR CLUB N13_LLF CREATE_CAR CLUB x y z open_container1_car CHANGE_CAR_COLOUR open_container1_car 11 0 ATTACH_CAR_TO_OBJECT open_container1_car picked_up_container 0.0 0.0 -0.8 0.0 0.0 180.0 SORT_OUT_OBJECT_COLLISION_WITH_CAR picked_up_container open_container1_car BREAK_OBJECT picked_up_container TRUE IF NOT IS_CAR_DEAD open_container1_car DETACH_CAR open_container1_car 0.0 0.0 0.0 FALSE EXPLODE_CAR open_container1_car ENDIF failed_condition = 1 ENDIF container_collision_flag = 2 ENDIF ENDIF // get falling container speed IF DOES_OBJECT_EXIST picked_up_container GET_OBJECT_SPEED picked_up_container dropped_container_last_speed IF dropped_container_last_speed > 5.0 //WRITE_DEBUG_WITH_FLOAT container_speed dropped_container_last_speed IF container_collision_flag = 0 SET_OBJECT_RECORDS_COLLISIONS picked_up_container TRUE container_collision_flag = 1 ENDIF ENDIF ENDIF IF TIMERA > 1000 IF NOT failed_condition = 1 IF DOES_OBJECT_EXIST picked_up_container IF IS_OBJECT_STATIC picked_up_container OR TIMERA > 2000 CLEAR_HELP disable_crane = 1 DO_FADE 150 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF DOES_OBJECT_EXIST magno_arm SET_ROPE_HEIGHT_FOR_OBJECT magno_arm 0.5 ENDIF RELEASE_ENTITY_FROM_ROPE_FOR_OBJECT magno_arm DELETE_OBJECT container_to_delete CREATE_OBJECT_NO_OFFSET KMB_CONTAINER_OPEN open_container1_x open_container1_y open_container1_z open_container1 SET_OBJECT_HEADING open_container1 open_container1_h CUSTOM_PLATE_FOR_NEXT_CAR CLUB N13_LLF CREATE_CAR CLUB 0.0 0.0 0.0 open_container1_car CHANGE_CAR_COLOUR open_container1_car 11 0 MARK_MODEL_AS_NO_LONGER_NEEDED CLUB ATTACH_CAR_TO_OBJECT open_container1_car open_container1 0.0 0.0 -0.8 0.0 0.0 180.0 SORT_OUT_OBJECT_COLLISION_WITH_CAR open_container1 open_container1_car neils_car_is_attached = 1 IF NOT IS_CHAR_DEAD buddy SET_CHAR_COORDINATES buddy -1619.4358 68.7884 2.5495 //-1621.8356 69.4984 2.4167 SET_CHAR_HEADING buddy 0.0 //330.1404 ENDIF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION -1618.1034 66.5178 4.5138 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1618.3916 67.4668 4.3861 JUMP_CUT ENABLE_CRANE_CONTROLS FALSE FALSE FALSE LOAD_SCENE open_container1_x open_container1_y open_container1_z DO_FADE 150 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD buddy TASK_SCRATCH_HEAD buddy ENDIF CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_STL4_FA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW &STL4_FA 5000 1 TIMERA = 0 m_goals++ ENDIF ENDIF ELSE WAIT 2000 m_failed = 1 ENDIF ENDIF BREAK CASE 7 IF TIMERA > 5000 OR IS_SKIP_CUTSCENE_BUTTON_PRESSED reset_crane_camera = 1 disable_crane = 0 CLEAR_MISSION_AUDIO 1 DO_FADE 0 FADE_IN SWITCH_WIDESCREEN OFF ENABLE_CRANE_CONTROLS TRUE TRUE TRUE IF DOES_OBJECT_EXIST container[0] ADD_BLIP_FOR_OBJECT container[0] container_blip[0] ENDIF IF DOES_OBJECT_EXIST container[1] ADD_BLIP_FOR_OBJECT container[1] container_blip[1] ENDIF IF DOES_OBJECT_EXIST container[2] ADD_BLIP_FOR_OBJECT container[2] container_blip[2] ENDIF IF NOT IS_CHAR_DEAD buddy OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 -1642.8273 54.0446 2.5495 PEDMOVE_RUN 10000 TASK_ACHIEVE_HEADING -1 306.0 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK buddy temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF CLEAR_PRINTS PRINT ST4_T04 7000 1 // pickup the other blue container TIMERA = 0 TIMERB = 0 crane_help_flag = 0 m_goals = 99 ENDIF BREAK CASE 99 m_stage++ m_goals = 0 BREAK ENDSWITCH // display help IF m_goals > 0 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED IF crane_help_flag2[0] = 0 PRINT_HELP ST4_H10 // Use ~m~~widget_crane_down~ to lower the magnet. Use ~m~~widget_crane_up~ to raise the magnet. crane_help_flag2[0] = 1 ELSE IF crane_help_flag2[1] = 0 PRINT_HELP ST4_H05 // Push the movement controls in the direction you want the crane to travel. Use ~m~~widget_camera~ to switch camera views. crane_help_flag2[1] = 1 ELSE IF crane_help_flag2[2] = 0 PRINT_HELP ST4_H07 // Use the magnet shadow to judge where objects will drop. crane_help_flag2[2] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF RETURN // ************************************************************************************************************* // STAGE 4 - place 2nd container // ************************************************************************************************************* STEAL4_m_stage_4: IF m_goals = 0 TIMERA = 0 TIMERB = 0 crane_help_flag = 0 // freeze remaining container - to stop bug 21229 IF DOES_OBJECT_EXIST container[0] FREEZE_OBJECT_POSITION container[0] TRUE ENDIF IF DOES_OBJECT_EXIST container[1] FREEZE_OBJECT_POSITION container[1] TRUE ENDIF IF DOES_OBJECT_EXIST container[2] FREEZE_OBJECT_POSITION container[2] TRUE ENDIF IF st4_mission_attempts = 0 this_container_is_it = 0 ELSE GENERATE_RANDOM_INT_IN_RANGE 0 2 this_container_is_it ENDIF //this_container_is_it = 1 m_goals++ ENDIF // wait for 2nd container to get picked up IF m_goals = 1 GRAB_ENTITY_ON_ROPE_FOR_OBJECT magno_arm temp_car temp_ped temp_obj IF temp_obj = container[0] OR temp_obj = container[1] OR temp_obj = container[2] FREEZE_OBJECT_POSITION temp_obj FALSE picked_up_container = temp_obj ENABLE_CRANE_CONTROLS TRUE TRUE FALSE disable_crane_rotate = 0 disable_manual_control = 0 disable_crane_drop = 1 CLEAR_PRINTS PRINT_NOW ST4_T06 7000 1 // move container into position IF DOES_BLIP_EXIST container_blip[0] REMOVE_BLIP container_blip[0] ENDIF IF DOES_BLIP_EXIST container_blip[1] REMOVE_BLIP container_blip[1] ENDIF IF DOES_BLIP_EXIST container_blip[2] REMOVE_BLIP container_blip[2] ENDIF REMOVE_BLIP location_blip ADD_BLIP_FOR_COORD open_container2_x open_container2_y open_container2_z location_blip CLEAR_HELP crane_help_flag = 0 TIMERA = 20000 TIMERB = 0 m_goals++ ENDIF ENDIF IF m_goals = 2 IF this_container_is_it = 0 REQUEST_MODEL PEREN IF HAS_MODEL_LOADED PEREN TIMERA = 20000 m_goals++ PRINT_NOW ST4_T06 7000 1 // move container into position ENDIF ELSE REQUEST_MODEL JESTER IF HAS_MODEL_LOADED JESTER TIMERA = 20000 m_goals++ PRINT_NOW ST4_T06 7000 1 // move container into position ENDIF ENDIF ENDIF // wait for container to get dropped in next space IF m_goals = 3 // // help text // IF DOES_OBJECT_EXIST picked_up_container // LOCATE_OBJECT_3D picked_up_container open_container2_x open_container2_y open_container2_z 5.0 5.0 3.0 TRUE // IF LOCATE_OBJECT_3D picked_up_container open_container2_x open_container2_y open_container2_z 6.0 6.0 5.0 FALSE // CLEAR_HELP // PRINT_HELP_FOREVER ST4_H03 // Use the ~o~ button to release objects. // crane_help_flag = 2 // ENABLE_CRANE_CONTROLS TRUE TRUE TRUE // disable_crane_drop = 0 // ELSE // IF crane_help_flag = 2 // IF crane_help_timer > 10000 // CLEAR_PRINTS // ENDIF // CLEAR_HELP // ENABLE_CRANE_CONTROLS TRUE TRUE FALSE // disable_crane_drop = 1 // crane_help_flag++ // ENDIF // ENDIF // ENDIF // enable drop + help IF DOES_OBJECT_EXIST picked_up_container LOCATE_OBJECT_3D picked_up_container open_container2_x open_container2_y open_container2_z 5.0 5.0 3.0 TRUE IF LOCATE_OBJECT_2D picked_up_container open_container2_x open_container2_y 6.0 6.0 FALSE IF NOT disable_crane_drop = 0 ENABLE_CRANE_CONTROLS TRUE TRUE TRUE disable_crane_drop = 0 ENDIF ELSE IF NOT disable_crane_drop = 1 ENABLE_CRANE_CONTROLS TRUE TRUE FALSE disable_crane_drop = 1 ENDIF ENDIF IF LOCATE_OBJECT_3D picked_up_container open_container2_x open_container2_y open_container2_z 6.0 6.0 6.0 FALSE IF NOT crane_help_flag = 2 CLEAR_HELP PRINT_HELP_FOREVER ST4_H03 // Use the ~o~ button to release objects. crane_help_flag = 2 ENDIF ELSE IF crane_help_flag = 2 IF crane_help_timer > 10000 CLEAR_PRINTS ENDIF CLEAR_HELP crane_help_flag = 0 ENDIF ENDIF ENDIF // wait for correct container to get placed in locate IF DOES_OBJECT_EXIST picked_up_container GRAB_ENTITY_ON_ROPE_FOR_OBJECT magno_arm temp_car temp_ped temp_obj IF NOT temp_obj = picked_up_container ENABLE_CRANE_CONTROLS TRUE TRUE TRUE disable_crane_drop = 0 container_to_delete = picked_up_container IF DOES_BLIP_EXIST container_blip[0] REMOVE_BLIP container_blip[0] ENDIF IF DOES_BLIP_EXIST container_blip[1] REMOVE_BLIP container_blip[1] ENDIF IF DOES_BLIP_EXIST container_blip[2] REMOVE_BLIP container_blip[2] ENDIF IF DOES_BLIP_EXIST location_blip REMOVE_BLIP location_blip ENDIF TIMERA = 0 container_collision_flag = 0 failed_condition = 0 m_goals++ ENDIF ENDIF ENDIF IF m_goals = 4 // if player drops the container from too high it should destroy the car inside - mission fail. IF container_collision_flag = 1 IF HAS_OBJECT_COLLIDED_WITH_ANYTHING picked_up_container IF dropped_container_last_speed > 14.0 GET_OBJECT_COORDINATES picked_up_container x y z IF this_container_is_it = 0 CREATE_CAR PEREN x y z steal_car ELSE CREATE_CAR JESTER x y z steal_car ENDIF ATTACH_CAR_TO_OBJECT steal_car picked_up_container 0.0 0.0 -0.8 0.0 0.0 180.0 SORT_OUT_OBJECT_COLLISION_WITH_CAR picked_up_container steal_car BREAK_OBJECT picked_up_container TRUE IF NOT IS_CAR_DEAD steal_car DETACH_CAR steal_car 0.0 0.0 0.0 FALSE EXPLODE_CAR steal_car ENDIF IF this_container_is_it = 0 MARK_MODEL_AS_NO_LONGER_NEEDED PEREN ELSE MARK_MODEL_AS_NO_LONGER_NEEDED JESTER ENDIF failed_condition = 1 ENDIF container_collision_flag = 2 ENDIF ENDIF // get falling container speed IF DOES_OBJECT_EXIST picked_up_container GET_OBJECT_SPEED picked_up_container dropped_container_last_speed IF dropped_container_last_speed > 5.0 IF container_collision_flag = 0 SET_OBJECT_RECORDS_COLLISIONS picked_up_container TRUE container_collision_flag = 1 ENDIF ENDIF ENDIF IF TIMERA > 1000 IF NOT failed_condition = 1 IF DOES_OBJECT_EXIST picked_up_container IF IS_OBJECT_STATIC picked_up_container OR TIMERA > 2000 m_goals++ ENDIF ENDIF ELSE WAIT 2000 m_failed = 1 ENDIF ENDIF ENDIF // cutscene - yes or no IF m_goals = 5 IF this_container_is_it = 0 // WRONG ONE !!!!!!!!!!!!!!!!!!!! CLEAR_HELP CLEAR_PRINTS DO_FADE 150 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_WIDESCREEN ON disable_crane = 1 ENABLE_CRANE_CONTROLS FALSE FALSE FALSE RELEASE_ENTITY_FROM_ROPE_FOR_OBJECT magno_arm DELETE_OBJECT container_to_delete CREATE_OBJECT_NO_OFFSET KMB_CONTAINER_OPEN open_container2_x open_container2_y open_container2_z open_container2 SET_OBJECT_HEADING open_container2 open_container2_h CREATE_CAR PEREN -1632.7860 61.2888 2.2888 open_container2_car GET_OBJECT_HEADING open_container2 temp_float temp_float += 180.0 SET_CAR_HEADING open_container2_car temp_float SORT_OUT_OBJECT_COLLISION_WITH_CAR open_container2 open_container2_car IF NOT IS_CHAR_DEAD buddy SET_CHAR_COORDINATES buddy -1631.0277 54.3581 2.5495 SET_CHAR_HEADING buddy 5.3011 ENDIF SET_FIXED_CAMERA_POSITION -1632.0006 52.1951 4.5485 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1631.9435 53.1810 4.3914 JUMP_CUT IF DOES_OBJECT_EXIST magno_arm SET_ROPE_HEIGHT_FOR_OBJECT magno_arm 0.5 ENDIF DO_FADE 150 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_STL4_FB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW &STL4_FB 5000 1 // get car coord IF NOT IS_CAR_DEAD open_container2_car GET_CAR_COORDINATES open_container2_car x y z GET_CAR_HEADING open_container2_car heading //SAVE_NEWLINE_TO_DEBUG_FILE //SAVE_STRING_TO_DEBUG_FILE "open_container2_car = " //SAVE_FLOAT_TO_DEBUG_FILE x //SAVE_FLOAT_TO_DEBUG_FILE y //SAVE_FLOAT_TO_DEBUG_FILE z //SAVE_FLOAT_TO_DEBUG_FILE heading ENDIF temp_int = 0 TIMERA = 0 WHILE temp_int = 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED OR TIMERA > 5000 DO_FADE 0 FADE_IN m_goals++ temp_int = 1 ELSE WAIT 0 ENDIF ENDWHILE m_goals = 0 m_stage++ ELSE // RIGHT ONE !!!!!!!!!!!!!!! CLEAR_HELP CLEAR_PRINTS DO_FADE 150 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_WIDESCREEN ON disable_crane = 1 ENABLE_CRANE_CONTROLS FALSE FALSE FALSE RELEASE_ENTITY_FROM_ROPE_FOR_OBJECT magno_arm DELETE_OBJECT container_to_delete CREATE_OBJECT_NO_OFFSET KMB_CONTAINER_OPEN open_container2_x open_container2_y open_container2_z open_container2 SET_OBJECT_HEADING open_container2 open_container2_h CREATE_CAR JESTER -1632.7860 61.2888 2.2888 steal_car GET_OBJECT_HEADING open_container2 temp_float temp_float += 180.0 SET_CAR_HEADING steal_car temp_float SORT_OUT_OBJECT_COLLISION_WITH_CAR open_container2 steal_car SET_FIXED_CAMERA_POSITION -1632.0006 52.1951 4.5485 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1631.9435 53.1810 4.3914 JUMP_CUT IF DOES_OBJECT_EXIST magno_arm SET_ROPE_HEIGHT_FOR_OBJECT magno_arm 0.5 ENDIF IF DOES_OBJECT_EXIST magno_base GET_OBJECT_COORDINATES magno_base magno_base_x magno_base_y magno_base_z ENDIF magno_arm_rotate_y = 15.0 magno_cabin_h = 133.526138 magno_arm_h = 133.526138 magno_base_x = -1610.625732 magno_base_y = 60.874172 crane_rope_length = 0.639 GOSUB st4_reset_crane_position GOSUB st4_right_car DO_FADE 150 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE TIMERA = 0 m_goals++ ENDIF ENDIF IF m_goals = 6 IF TIMERA > 1000 IF NOT IS_MESSAGE_BEING_DISPLAYED OR IS_SKIP_CUTSCENE_BUTTON_PRESSED DO_FADE 0 FADE_IN IF NOT IS_CAR_DEAD steal_car SET_CAR_COORDINATES steal_car final_car_pos_x final_car_pos_y final_car_pos_z SET_CAR_HEADING steal_car final_car_pos_h ENDIF m_goals = 0 m_stage += 2 ENDIF ENDIF ENDIF // display help IF m_goals > 0 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED IF crane_help_flag2[0] = 0 PRINT_HELP ST4_H10 // Use ~m~~widget_crane_down~ to lower the magnet. Use ~m~~widget_crane_up~ to raise the magnet. crane_help_flag2[0] = 1 ELSE IF crane_help_flag2[1] = 0 PRINT_HELP ST4_H05 // Push the movement controls in the direction you want the crane to travel. Use ~m~~widget_camera~ to switch camera views. crane_help_flag2[1] = 1 ELSE IF crane_help_flag2[2] = 0 PRINT_HELP ST4_H07 // Use the magnet shadow to judge where objects will drop. crane_help_flag2[2] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF RETURN // ************************************************************************************************************ // STAGE 5 - pick up 3rd and final container // ************************************************************************************************************ STEAL4_m_stage_5: IF m_goals = 0 reset_crane_camera = 1 disable_crane = 0 ENABLE_CRANE_CONTROLS TRUE TRUE TRUE CLEAR_MISSION_AUDIO 1 SWITCH_WIDESCREEN OFF IF DOES_OBJECT_EXIST container[0] ADD_BLIP_FOR_OBJECT container[0] container_blip[0] ENDIF IF DOES_OBJECT_EXIST container[1] ADD_BLIP_FOR_OBJECT container[1] container_blip[1] ENDIF IF DOES_OBJECT_EXIST container[2] ADD_BLIP_FOR_OBJECT container[2] container_blip[2] ENDIF IF NOT IS_CHAR_DEAD buddy OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 -1658.4763 33.2340 2.8213 PEDMOVE_RUN 10000 TASK_ACHIEVE_HEADING -1 299.6011 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK buddy temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF CLEAR_PRINTS PRINT ST4_T04 7000 1 // pickup the other blue container TIMERA = 0 TIMERB = 0 crane_help_flag = 0 IF NOT IS_CHAR_DEAD buddy OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 -1650.4637 44.1144 2.5495 PEDMOVE_RUN 10000 TASK_ACHIEVE_HEADING -1 317.7216 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK buddy temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF // freeze remaining container - to stop bug 21229 IF DOES_OBJECT_EXIST container[0] FREEZE_OBJECT_POSITION container[0] TRUE ENDIF IF DOES_OBJECT_EXIST container[1] FREEZE_OBJECT_POSITION container[1] TRUE ENDIF IF DOES_OBJECT_EXIST container[2] FREEZE_OBJECT_POSITION container[2] TRUE ENDIF m_goals++ ENDIF // wait for 3rd container to get picked up IF m_goals = 1 GRAB_ENTITY_ON_ROPE_FOR_OBJECT magno_arm temp_car temp_ped temp_obj IF temp_obj = container[0] OR temp_obj = container[1] OR temp_obj = container[2] FREEZE_OBJECT_POSITION temp_obj FALSE picked_up_container = temp_obj ENABLE_CRANE_CONTROLS TRUE TRUE FALSE disable_crane_rotate = 0 disable_manual_control = 0 disable_crane_drop = 1 CLEAR_PRINTS PRINT_NOW ST4_T06 7000 1 // move container into position IF DOES_BLIP_EXIST container_blip[0] REMOVE_BLIP container_blip[0] ENDIF IF DOES_BLIP_EXIST container_blip[1] REMOVE_BLIP container_blip[1] ENDIF IF DOES_BLIP_EXIST container_blip[2] REMOVE_BLIP container_blip[2] ENDIF REMOVE_BLIP location_blip ADD_BLIP_FOR_COORD open_container3_x open_container3_y open_container3_z location_blip CLEAR_HELP crane_help_flag = 0 TIMERA = 20000 TIMERB = 0 m_goals++ ENDIF ENDIF IF m_goals = 2 REQUEST_MODEL JESTER IF HAS_MODEL_LOADED JESTER TIMERA = 20000 m_goals++ PRINT_NOW ST4_T06 7000 1 // move container into position ENDIF ENDIF // wait for container to get dropped in next space IF m_goals = 3 // // help text // IF DOES_OBJECT_EXIST picked_up_container // LOCATE_OBJECT_3D picked_up_container open_container3_x open_container3_y open_container3_z 5.0 5.0 3.0 TRUE // IF LOCATE_OBJECT_3D picked_up_container open_container3_x open_container3_y open_container3_z 6.0 6.0 5.0 FALSE // CLEAR_HELP // PRINT_HELP_FOREVER ST4_H03 // Use the ~o~ button to release objects. // crane_help_flag = 2 // ENABLE_CRANE_CONTROLS TRUE TRUE TRUE // disable_crane_drop = 0 // ELSE // IF crane_help_flag = 2 // IF crane_help_timer > 10000 // CLEAR_PRINTS // ENDIF // CLEAR_HELP // ENABLE_CRANE_CONTROLS TRUE TRUE FALSE // disable_crane_drop = 1 // crane_help_flag++ // ENDIF // ENDIF // ENDIF // enable drop + help IF DOES_OBJECT_EXIST picked_up_container LOCATE_OBJECT_3D picked_up_container open_container3_x open_container3_y open_container3_z 5.0 5.0 3.0 TRUE IF LOCATE_OBJECT_2D picked_up_container open_container3_x open_container3_y 6.0 6.0 FALSE IF NOT disable_crane_drop = 0 ENABLE_CRANE_CONTROLS TRUE TRUE TRUE disable_crane_drop = 0 ENDIF ELSE IF NOT disable_crane_drop = 1 ENABLE_CRANE_CONTROLS TRUE TRUE FALSE disable_crane_drop = 1 ENDIF ENDIF IF LOCATE_OBJECT_3D picked_up_container open_container3_x open_container3_y open_container3_z 6.0 6.0 6.0 FALSE IF NOT crane_help_flag = 2 CLEAR_HELP PRINT_HELP_FOREVER ST4_H03 // Use the ~o~ button to release objects. crane_help_flag = 2 ENDIF ELSE IF crane_help_flag = 2 IF crane_help_timer > 10000 CLEAR_PRINTS ENDIF CLEAR_HELP crane_help_flag = 0 ENDIF ENDIF ENDIF // wait for correct container to get placed in locate IF DOES_OBJECT_EXIST picked_up_container GRAB_ENTITY_ON_ROPE_FOR_OBJECT magno_arm temp_car temp_ped temp_obj IF NOT temp_obj = picked_up_container ENABLE_CRANE_CONTROLS TRUE TRUE TRUE disable_crane_drop = 0 container_to_delete = picked_up_container IF DOES_BLIP_EXIST container_blip[0] REMOVE_BLIP container_blip[0] ENDIF IF DOES_BLIP_EXIST container_blip[1] REMOVE_BLIP container_blip[1] ENDIF IF DOES_BLIP_EXIST container_blip[2] REMOVE_BLIP container_blip[2] ENDIF IF DOES_BLIP_EXIST location_blip REMOVE_BLIP location_blip ENDIF TIMERA = 0 container_collision_flag = 0 failed_condition = 0 m_goals++ ENDIF ENDIF ENDIF IF m_goals = 4 // if player drops the container from too high it should destroy the car inside - mission fail. IF container_collision_flag = 1 IF HAS_OBJECT_COLLIDED_WITH_ANYTHING picked_up_container IF dropped_container_last_speed > 14.0 GET_OBJECT_COORDINATES picked_up_container x y z CREATE_CAR JESTER x y z steal_car ATTACH_CAR_TO_OBJECT steal_car picked_up_container 0.0 0.0 -0.8 0.0 0.0 180.0 SORT_OUT_OBJECT_COLLISION_WITH_CAR picked_up_container steal_car BREAK_OBJECT picked_up_container TRUE IF NOT IS_CAR_DEAD steal_car DETACH_CAR steal_car 0.0 0.0 0.0 FALSE EXPLODE_CAR steal_car ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED JESTER failed_condition = 1 ENDIF container_collision_flag = 2 ENDIF ENDIF // get falling container speed IF DOES_OBJECT_EXIST picked_up_container GET_OBJECT_SPEED picked_up_container dropped_container_last_speed IF dropped_container_last_speed > 5.0 IF container_collision_flag = 0 SET_OBJECT_RECORDS_COLLISIONS picked_up_container TRUE container_collision_flag = 1 ENDIF ENDIF ENDIF IF TIMERA > 1000 IF NOT failed_condition = 1 IF DOES_OBJECT_EXIST picked_up_container IF IS_OBJECT_STATIC picked_up_container OR TIMERA > 2000 m_goals++ ENDIF ENDIF ELSE WAIT 2000 m_failed = 1 ENDIF ENDIF ENDIF // cutscene IF m_goals = 5 CLEAR_HELP CLEAR_PRINTS DO_FADE 150 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_WIDESCREEN ON ENABLE_CRANE_CONTROLS FALSE FALSE FALSE disable_crane = 1 RELEASE_ENTITY_FROM_ROPE_FOR_OBJECT magno_arm DELETE_OBJECT container_to_delete CREATE_OBJECT_NO_OFFSET KMB_CONTAINER_OPEN open_container3_x open_container3_y open_container3_z open_container3 SET_OBJECT_HEADING open_container3 open_container3_h CREATE_CAR JESTER -1644.0168 50.9619 3.0354 steal_car GET_OBJECT_HEADING open_container3 temp_float temp_float += 180.0 SET_CAR_HEADING steal_car temp_float SORT_OUT_OBJECT_COLLISION_WITH_CAR open_container3 steal_car SET_FIXED_CAMERA_POSITION -1637.0480 45.8035 3.6546 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1637.9856 46.1327 3.5431 JUMP_CUT IF DOES_OBJECT_EXIST magno_base GET_OBJECT_COORDINATES magno_base magno_base_x magno_base_y magno_base_z ENDIF magno_arm_rotate_y = 15.0 magno_cabin_h = 133.526138 magno_arm_h = 133.526138 magno_base_x = -1610.625732 magno_base_y = 60.874172 crane_rope_length = 0.4 GOSUB st4_reset_crane_position // // get car coord // IF NOT IS_CAR_DEAD steal_car // GET_CAR_COORDINATES steal_car x y z // GET_CAR_HEADING steal_car heading // // SAVE_NEWLINE_TO_DEBUG_FILE // SAVE_STRING_TO_DEBUG_FILE "open_container3_car (right one) = " // SAVE_FLOAT_TO_DEBUG_FILE x // SAVE_FLOAT_TO_DEBUG_FILE y // SAVE_FLOAT_TO_DEBUG_FILE z // SAVE_FLOAT_TO_DEBUG_FILE heading // // ENDIF GOSUB st4_right_car DO_FADE 150 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE TIMERA = 0 m_goals++ ENDIF IF m_goals = 6 IF TIMERA > 1000 IF NOT IS_MESSAGE_BEING_DISPLAYED OR IS_SKIP_CUTSCENE_BUTTON_PRESSED DO_FADE 0 FADE_IN IF NOT IS_CAR_DEAD steal_car SET_CAR_COORDINATES steal_car final_car_pos_x final_car_pos_y final_car_pos_z SET_CAR_HEADING steal_car final_car_pos_h ENDIF m_goals = 0 m_stage++ ENDIF ENDIF ENDIF RETURN // ************************************************************************************************************* // STAGE 6 cutscene of guys turning up // ************************************************************************************************************* STEAL4_m_stage_6: // fake creates IF m_goals = -1 CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 bad_wave1_ped[0] CREATE_CAR PONY 0.0 0.0 0.0 bad_wave1_car ENDIF // initialise IF m_goals = 0 // start baddie car driving IF NOT IS_CAR_DEAD bad_wave1_car OPEN_SEQUENCE_TASK temp_seq TASK_CAR_DRIVE_TO_COORD -1 bad_wave1_car -1686.4221 25.8359 2.7752 15.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_DRIVE_TO_COORD -1 bad_wave1_car -1643.3943 19.6494 3.6706 15.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH CLOSE_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD bad_wave1_ped[0] PERFORM_SEQUENCE_TASK bad_wave1_ped[0] temp_seq ENDIF CLEAR_SEQUENCE_TASK temp_seq ENDIF m_goals++ TIMERA = 0 ENDIF IF m_goals > 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED m_goals = 99 ENDIF ENDIF // switch to show bad car arriving IF m_goals = 1 IF TIMERA > 500 IF NOT IS_CAR_DEAD bad_wave1_car GET_CAR_COORDINATES bad_wave1_car x y z ENDIF LOAD_SCENE x y z IF NOT IS_CAR_DEAD steal_car SET_CAR_COORDINATES steal_car final_car_pos_x final_car_pos_y final_car_pos_z SET_CAR_HEADING steal_car final_car_pos_h ENDIF m_goals++ ENDIF ENDIF // track baddie car 1 IF m_goals = 2 IF TIMERA < 6000 IF NOT IS_CAR_DEAD bad_wave1_car GET_OFFSET_FROM_CAR_IN_WORLD_COORDS bad_wave1_car 2.0 -3.0 0.0 x y z ENDIF SET_FIXED_CAMERA_POSITION -1680.0859 28.3067 3.8465 0.0 0.0 0.0 POINT_CAMERA_AT_POINT x y z JUMP_CUT ELSE SET_FIXED_CAMERA_POSITION -1643.2233 13.6026 4.1338 0.0 0.0 0.0 m_goals++ ENDIF ENDIF // shot of baddie car 2 IF m_goals = 3 IF NOT IS_CAR_DEAD bad_wave1_car GET_OFFSET_FROM_CAR_IN_WORLD_COORDS bad_wave1_car -6.0 1.0 1.0 x y z ENDIF POINT_CAMERA_AT_POINT x y z JUMP_CUT IF TIMERA < 20000 IF NOT IS_CHAR_DEAD bad_wave1_ped[0] GET_SCRIPT_TASK_STATUS bad_wave1_ped[0] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK dialogue_flag = 0 play_single_audio_flag = 0 m_goals++ ENDIF ENDIF ELSE IF NOT IS_CHAR_DEAD bad_wave1_ped[0] CLEAR_CHAR_TASKS bad_wave1_ped[0] ENDIF m_goals++ dialogue_flag = 0 play_single_audio_flag = 0 ENDIF ENDIF // guys run out of car IF m_goals = 4 IF NOT IS_CHAR_DEAD bad_wave1_ped[0] OPEN_SEQUENCE_TASK temp_seq TASK_PAUSE -1 1800 IF NOT IS_CAR_DEAD bad_wave1_car TASK_LEAVE_CAR -1 bad_wave1_car ENDIF TASK_GO_STRAIGHT_TO_COORD -1 -1638.8365 27.1035 2.8213 PEDMOVE_RUN 999999 TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[0] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[1] OPEN_SEQUENCE_TASK temp_seq TASK_PAUSE -1 0 IF NOT IS_CAR_DEAD bad_wave1_car TASK_LEAVE_CAR -1 bad_wave1_car ENDIF TASK_GO_STRAIGHT_TO_COORD -1 -1639.6755 29.1963 2.8213 PEDMOVE_RUN 999999 TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[1] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[2] OPEN_SEQUENCE_TASK temp_seq TASK_PAUSE -1 1000 IF NOT IS_CAR_DEAD bad_wave1_car TASK_LEAVE_CAR -1 bad_wave1_car ENDIF TASK_GO_STRAIGHT_TO_COORD -1 -1641.2803 27.2014 2.8213 PEDMOVE_RUN 999999 TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[2] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF dialogue_flag = 0 play_single_audio_flag = 0 m_goals++ TIMERA = 0 ENDIF IF m_goals = 5 IF NOT IS_CHAR_DEAD bad_wave1_ped[0] IF NOT IS_CHAR_IN_ANY_CAR bad_wave1_ped[0] IF dialogue_flag = 0 $play_single_audio_text = &STL4_GA play_single_audio_sound = SOUND_STL4_GA // HEY! What the fuck do you think you’re doing? play_single_audio_ped = bad_wave1_ped[0] play_single_audio_attached = 0 GOSUB STEAL4_play_single_audio IF play_single_audio_flag = 4 play_single_audio_flag = 0 dialogue_flag++ m_goals = 99 ENDIF ENDIF ENDIF ENDIF ENDIF IF m_goals = 99 //magno_camera_type = 0 // set camera view to close magno_arm_h = 130.0 // set final positions of all the shit - and tell peds to do shit. IF NOT IS_CAR_DEAD bad_wave1_car SET_CAR_COORDINATES bad_wave1_car -1642.8761 19.5037 2.5547 SET_CAR_HEADING bad_wave1_car 259.5122 ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[0] CLEAR_CHAR_TASKS_IMMEDIATELY bad_wave1_ped[0] SET_CHAR_COORDINATES bad_wave1_ped[0] -1638.8365 27.1035 2.8213 SET_CHAR_HEADING bad_wave1_ped[0] 0.0 OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD buddy TASK_GOTO_CHAR -1 buddy 10000 25.0 ENDIF //TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[0] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[1] CLEAR_CHAR_TASKS_IMMEDIATELY bad_wave1_ped[1] SET_CHAR_COORDINATES bad_wave1_ped[1] -1639.6755 29.1963 2.8213 SET_CHAR_HEADING bad_wave1_ped[1] 0.0 OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD buddy TASK_GOTO_CHAR -1 buddy 10000 20.0 ENDIF //TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[1] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[2] CLEAR_CHAR_TASKS_IMMEDIATELY bad_wave1_ped[2] SET_CHAR_COORDINATES bad_wave1_ped[2] -1641.2803 27.2014 2.8213 SET_CHAR_HEADING bad_wave1_ped[2] 0.0 OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD buddy TASK_GOTO_CHAR -1 buddy 10000 18.0 ENDIF //TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[2] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF CLEAR_PRINTS CLEAR_HELP reset_crane_camera = 1 disable_crane_exit = 0 SWITCH_WIDESCREEN OFF ENABLE_CRANE_CONTROLS TRUE TRUE TRUE disable_crane = 0 m_goals = 0 m_stage++ ENDIF RETURN st4_right_car: IF NOT IS_CHAR_DEAD buddy IF NOT IS_CAR_DEAD steal_car WARP_CHAR_INTO_CAR buddy steal_car ENDIF ENDIF IF NOT IS_CHAR_DEAD buddy GIVE_WEAPON_TO_CHAR buddy WEAPONTYPE_PISTOL 9999 ENDIF CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_STL4_EA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW &STL4_EA 5000 1 IF NOT IS_CAR_DEAD steal_car SET_CAR_CRUISE_SPEED steal_car 3.5 SET_CAR_HEALTH steal_car 2000 SET_CAN_BURST_CAR_TYRES steal_car FALSE VEHICLE_DOES_PROVIDE_COVER steal_car FALSE GET_OFFSET_FROM_CAR_IN_WORLD_COORDS steal_car 0.0 15.0 0.0 final_car_pos_x final_car_pos_y final_car_pos_z GET_CAR_HEADING steal_car final_car_pos_h CAR_GOTO_COORDINATES_ACCURATE steal_car final_car_pos_x final_car_pos_y final_car_pos_z ENDIF GOSUB st4_create_baddies1 RETURN // ************************************************************************************************************* // STAGE 5 - 1st wave, bad guys turn up wait for player to drop box on them // ************************************************************************************************************* STEAL4_m_stage_7: SWITCH m_goals CASE 0 CLEAR_PRINTS IF NOT buddy_blip_type = 2 buddy_blip_type = 2 GOSUB reset_buddy_blip ENDIF play_single_audio_flag = 0 DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING buddy_health COUNTER_DISPLAY_BAR 1 ST4_30 PRINT_HELP ST4_H09 // Press the ~t~ button to exit the crane. IF NOT IS_CHAR_DEAD buddy SET_CHAR_DECISION_MAKER buddy buddy_dm ENDIF m_goals++ BREAK // wait for a bit before cesar gets out the car and starts shooting CASE 1 IF NOT IS_CHAR_DEAD buddy OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CAR_DEAD steal_car TASK_LEAVE_CAR -1 steal_car ENDIF //TASK_GO_STRAIGHT_TO_COORD -1 -1637.4160 47.2271 2.8213 PEDMOVE_RUN 999999 //TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD bad_wave1_ped[0] TASK_KILL_CHAR_ON_FOOT -1 bad_wave1_ped[0] ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[1] TASK_KILL_CHAR_ON_FOOT -1 bad_wave1_ped[1] ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[2] TASK_KILL_CHAR_ON_FOOT -1 bad_wave1_ped[2] ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK buddy temp_seq CLEAR_SEQUENCE_TASK temp_seq dialogue_flag = 0 play_single_audio_flag = 0 m_goals++ ENDIF TIMERA = 0 TIMERB = 0 BREAK // wait a while before 2nd attack from wave 1 arrive CASE 2 IF dialogue_flag = 0 $play_single_audio_text = &STL4_HA play_single_audio_sound = SOUND_STL4_HA // CJ, I could do with some help! play_single_audio_ped = buddy play_single_audio_attached = 0 GOSUB STEAL4_play_single_audio IF play_single_audio_flag = 4 play_single_audio_flag = 0 dialogue_flag++ TIMERA = 0 ENDIF ENDIF IF TIMERA > 45000 m_goals++ ELSE IF IS_CHAR_DEAD bad_wave1_ped[0] AND IS_CHAR_DEAD bad_wave1_ped[1] AND IS_CHAR_DEAD bad_wave1_ped[2] m_goals++ ENDIF ENDIF // update baddie ai if player is on ground IF NOT player_is_in_crane = 2 IF player_on_foot = 0 CLEAR_HELP temp_int = 0 WHILE temp_int < 3 IF NOT IS_CHAR_DEAD bad_wave1_ped[temp_int] SET_CHAR_ACCURACY bad_wave1_ped[temp_int] 30 GET_CHAR_HEALTH bad_wave1_ped[temp_int] temp_int2 IF temp_int2 < 200 temp_int2 += 100 IF temp_int2 > 200 temp_int2 = 200 ENDIF SET_CHAR_HEALTH bad_wave1_ped[temp_int] temp_int2 ENDIF CLEAR_CHAR_TASKS bad_wave1_ped[temp_int] ENDIF temp_int++ ENDWHILE // give new tasks IF NOT IS_CHAR_DEAD bad_wave1_ped[0] OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD buddy TASK_GOTO_CHAR -1 buddy 10000 20.0 ENDIF TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[0] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[1] OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD buddy TASK_GOTO_CHAR -1 buddy 10000 24.0 ENDIF TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[1] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[2] OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD buddy TASK_GOTO_CHAR -1 buddy 10000 22.0 ENDIF TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[2] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF player_on_foot = 1 ENDIF ELSE IF player_on_foot = 1 PRINT_HELP_FOREVER ST4_H09 // Press the ~t~ button to exit the crane. temp_int = 0 WHILE temp_int < 3 IF NOT IS_CHAR_DEAD bad_wave1_ped[temp_int] SET_CHAR_ACCURACY bad_wave1_ped[temp_int] 40 GET_CHAR_HEALTH bad_wave1_ped[temp_int] temp_int2 IF temp_int2 > 50 SET_CHAR_HEALTH bad_wave1_ped[temp_int] 50 ENDIF CLEAR_CHAR_TASKS bad_wave1_ped[temp_int] ENDIF temp_int++ ENDWHILE // give new tasks IF NOT IS_CHAR_DEAD bad_wave1_ped[0] OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD buddy TASK_GOTO_CHAR -1 buddy 10000 20.0 ENDIF TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[0] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[1] OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD buddy TASK_GOTO_CHAR -1 buddy 10000 22.0 ENDIF TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[1] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[2] OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD buddy TASK_GOTO_CHAR -1 buddy 10000 24.0 ENDIF TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE // IF NOT IS_CAR_DEAD steal_car // TASK_DESTROY_CAR -1 steal_car // ENDIF IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[2] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF player_on_foot = 0 ENDIF ENDIF BREAK CASE 3 CLEAR_AREA -1711.5900 44.8495 2.7813 20.0 TRUE CREATE_CAR SENTINEL -1711.5900 44.8495 2.7813 bad_wave1_car2 SET_CAR_HEADING bad_wave1_car2 232.9281 SET_CAR_STRAIGHT_LINE_DISTANCE bad_wave1_car2 50 CREATE_CHAR_INSIDE_CAR bad_wave1_car2 PEDTYPE_MISSION1 WBDYG1 bad_wave1_ped[3] CREATE_CHAR_AS_PASSENGER bad_wave1_car2 PEDTYPE_MISSION1 WBDYG1 0 bad_wave1_ped[4] CREATE_CHAR_AS_PASSENGER bad_wave1_car2 PEDTYPE_MISSION1 WBDYG1 1 bad_wave1_ped[5] ADD_BLIP_FOR_CHAR bad_wave1_ped[3] bad_wave1_ped_blip[3] ADD_BLIP_FOR_CHAR bad_wave1_ped[4] bad_wave1_ped_blip[4] ADD_BLIP_FOR_CHAR bad_wave1_ped[5] bad_wave1_ped_blip[5] CLEAR_AREA -1697.0397 14.7378 2.7813 5.0 TRUE IF NOT IS_CAR_DEAD bad_wave1_car2 OPEN_SEQUENCE_TASK temp_seq TASK_CAR_DRIVE_TO_COORD -1 bad_wave1_car2 -1686.4221 25.8359 2.7752 15.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_DRIVE_TO_COORD -1 bad_wave1_car2 -1647.9377 27.2328 2.5408 15.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH CLOSE_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD bad_wave1_ped[3] PERFORM_SEQUENCE_TASK bad_wave1_ped[3] temp_seq ENDIF CLEAR_SEQUENCE_TASK temp_seq ENDIF temp_int = 3 WHILE temp_int < 6 IF NOT IS_CHAR_DEAD bad_wave1_ped[temp_int] GIVE_WEAPON_TO_CHAR bad_wave1_ped[temp_int] WEAPONTYPE_PISTOL 9999 SET_CHAR_DECISION_MAKER bad_wave1_ped[temp_int] tough_dm SET_CHAR_ACCURACY bad_wave1_ped[temp_int] 40 SET_CHAR_HEALTH bad_wave1_ped[temp_int] 50 SET_CHAR_SUFFERS_CRITICAL_HITS bad_wave1_ped[temp_int] FALSE ENDIF temp_int++ ENDWHILE TIMERA = 0 play_single_audio_flag = 0 m_goals++ BREAK CASE 4 IF TIMERA < 15000 IF NOT IS_CHAR_DEAD bad_wave1_ped[3] GET_SCRIPT_TASK_STATUS bad_wave1_ped[3] PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK m_goals++ ENDIF ELSE m_goals++ ENDIF ELSE IF NOT IS_CHAR_DEAD bad_wave1_ped[3] CLEAR_CHAR_TASKS bad_wave1_ped[3] ENDIF m_goals++ ENDIF BREAK CASE 5 IF NOT IS_CHAR_DEAD bad_wave1_ped[3] OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CAR_DEAD bad_wave1_car2 TASK_LEAVE_CAR -1 bad_wave1_car2 ENDIF //TASK_GO_STRAIGHT_TO_COORD -1 -1646.0371 36.7965 2.8213 PEDMOVE_RUN 999999 IF NOT IS_CHAR_DEAD buddy TASK_GOTO_CHAR -1 buddy 10000 20.0 ENDIF //TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[3] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[4] OPEN_SEQUENCE_TASK temp_seq TASK_PAUSE -1 1000 IF NOT IS_CAR_DEAD bad_wave1_car2 TASK_LEAVE_CAR -1 bad_wave1_car2 ENDIF //TASK_GO_STRAIGHT_TO_COORD -1 -1646.4087 34.4707 2.8213 PEDMOVE_RUN 999999 IF NOT IS_CHAR_DEAD buddy TASK_GOTO_CHAR -1 buddy 10000 22.0 ENDIF //TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[4] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[5] OPEN_SEQUENCE_TASK temp_seq TASK_PAUSE -1 1500 IF NOT IS_CAR_DEAD bad_wave1_car2 TASK_LEAVE_CAR -1 bad_wave1_car2 ENDIF //TASK_GO_STRAIGHT_TO_COORD -1 -1648.1427 36.3543 2.8213 PEDMOVE_RUN 999999 IF NOT IS_CHAR_DEAD buddy TASK_GOTO_CHAR -1 buddy 10000 24.0 ENDIF //TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE // IF NOT IS_CAR_DEAD steal_car // TASK_DESTROY_CAR -1 steal_car // ENDIF IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[5] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF TIMERA = 0 dialogue_flag = 0 play_single_audio_flag = 0 m_goals++ BREAK // wait for all the guys in wave1 to die CASE 6 IF dialogue_flag = 0 $play_single_audio_text = &STL4_GB play_single_audio_sound = SOUND_STL4_GB // HEY! Hold it right there! play_single_audio_ped = bad_wave1_ped[3] play_single_audio_attached = 0 GOSUB STEAL4_play_single_audio IF play_single_audio_flag = 4 play_single_audio_flag = 0 dialogue_flag++ ENDIF ENDIF IF dialogue_flag = 1 $play_single_audio_text = &STL4_HC play_single_audio_sound = SOUND_STL4_HC // CJ, I could do with some help! play_single_audio_ped = buddy play_single_audio_attached = 0 GOSUB STEAL4_play_single_audio IF play_single_audio_flag = 4 play_single_audio_flag = 0 dialogue_flag++ ENDIF ENDIF IF IS_CHAR_DEAD bad_wave1_ped[0] AND IS_CHAR_DEAD bad_wave1_ped[1] AND IS_CHAR_DEAD bad_wave1_ped[2] AND IS_CHAR_DEAD bad_wave1_ped[3] AND IS_CHAR_DEAD bad_wave1_ped[4] IF IS_CHAR_DEAD bad_wave1_ped[5] m_goals = 99 ENDIF ENDIF // update buddie ai if player is on ground IF NOT player_is_in_crane = 2 IF player_on_foot = 0 CLEAR_HELP temp_int = 0 WHILE temp_int < 6 IF NOT IS_CHAR_DEAD bad_wave1_ped[temp_int] SET_CHAR_ACCURACY bad_wave1_ped[temp_int] 30 GET_CHAR_HEALTH bad_wave1_ped[temp_int] temp_int2 IF temp_int2 < 200 temp_int2 += 100 IF temp_int2 > 200 temp_int2 = 200 ENDIF SET_CHAR_HEALTH bad_wave1_ped[temp_int] temp_int2 ENDIF CLEAR_CHAR_TASKS bad_wave1_ped[temp_int] ENDIF temp_int++ ENDWHILE // give new tasks IF NOT IS_CHAR_DEAD bad_wave1_ped[0] OPEN_SEQUENCE_TASK temp_seq TASK_GOTO_CHAR -1 scplayer 10000 30.0 TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[0] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[1] OPEN_SEQUENCE_TASK temp_seq TASK_GOTO_CHAR -1 scplayer 10000 32.0 TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[1] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[2] OPEN_SEQUENCE_TASK temp_seq TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[2] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[3] OPEN_SEQUENCE_TASK temp_seq TASK_GOTO_CHAR -1 scplayer 10000 34.0 TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[3] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[4] OPEN_SEQUENCE_TASK temp_seq TASK_GOTO_CHAR -1 scplayer 10000 28.0 TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[4] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[5] OPEN_SEQUENCE_TASK temp_seq TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[5] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF player_on_foot = 1 ENDIF ELSE IF player_on_foot = 1 PRINT_HELP_FOREVER ST4_H09 // Press the ~t~ button to exit the crane. temp_int = 0 WHILE temp_int < 6 IF NOT IS_CHAR_DEAD bad_wave1_ped[temp_int] SET_CHAR_ACCURACY bad_wave1_ped[temp_int] 40 GET_CHAR_HEALTH bad_wave1_ped[temp_int] temp_int2 IF temp_int2 > 50 SET_CHAR_HEALTH bad_wave1_ped[temp_int] 50 ENDIF CLEAR_CHAR_TASKS bad_wave1_ped[temp_int] ENDIF temp_int++ ENDWHILE // give new tasks IF NOT IS_CHAR_DEAD bad_wave1_ped[0] OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD buddy TASK_GOTO_CHAR -1 buddy 10000 28.0 ENDIF TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[0] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[1] OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD buddy TASK_GOTO_CHAR -1 buddy 10000 32.0 ENDIF //TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[1] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[2] OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD buddy TASK_GOTO_CHAR -1 buddy 10000 26.0 ENDIF TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE // IF NOT IS_CAR_DEAD steal_car // TASK_DESTROY_CAR -1 steal_car // ENDIF IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[2] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[3] OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD buddy TASK_GOTO_CHAR -1 buddy 10000 29.0 ENDIF //TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[3] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[4] OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD buddy TASK_GOTO_CHAR -1 buddy 10000 24.0 ENDIF //TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[4] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[5] OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD buddy TASK_GOTO_CHAR -1 buddy 10000 20.0 ENDIF TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE // IF NOT IS_CAR_DEAD steal_car // TASK_DESTROY_CAR -1 steal_car // ENDIF IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[5] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF player_on_foot = 0 ENDIF ENDIF BREAK CASE 99 m_goals = 0 m_stage += 2 BREAK ENDSWITCH // make sure buddy is killing someone IF NOT IS_CHAR_DEAD buddy GET_SCRIPT_TASK_STATUS buddy PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD bad_wave1_ped[0] TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 bad_wave1_ped[0] ELSE IF NOT IS_CHAR_DEAD bad_wave1_ped[1] TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 bad_wave1_ped[1] ELSE IF NOT IS_CHAR_DEAD bad_wave1_ped[2] TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 bad_wave1_ped[2] ELSE IF NOT IS_CHAR_DEAD bad_wave1_ped[3] TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 bad_wave1_ped[3] ELSE IF NOT IS_CHAR_DEAD bad_wave1_ped[4] TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 bad_wave1_ped[4] ELSE IF NOT IS_CHAR_DEAD bad_wave1_ped[5] TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 bad_wave1_ped[5] ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF TASK_PAUSE -1 1000 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK buddy temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF // check to see if bad dudes have been hit by container IF m_frame_num < 6 temp_int = m_frame_num //WHILE temp_int < 6 // temp_int2 = 0 // WHILE temp_int2 < 9 IF NOT IS_CHAR_DEAD bad_wave1_ped[temp_int] IF DOES_OBJECT_EXIST last_picked_up_container IF NOT IS_OBJECT_STATIC last_picked_up_container //GET_OBJECT_VELOCITY container[temp_int2] x y z GET_OBJECT_SPEED last_picked_up_container temp_float //IF NOT x = 0.0 //OR NOT y = 0.0 //OR NOT z = 0.0 IF temp_float > 4.0 IF IS_CHAR_TOUCHING_OBJECT_ON_FOOT bad_wave1_ped[temp_int] last_picked_up_container GET_SCRIPT_TASK_STATUS bad_wave1_ped[temp_int] TASK_DIE temp_int3 IF temp_int3 = FINISHED_TASK TASK_DIE bad_wave1_ped[temp_int] ENDIF ENDIF ENDIF // check if char is 'inside' container IF LOCATE_CHAR_ON_FOOT_OBJECT_3D bad_wave1_ped[temp_int] last_picked_up_container 2.0 2.0 2.0 FALSE GET_SCRIPT_TASK_STATUS bad_wave1_ped[temp_int] TASK_DIE temp_int3 IF temp_int3 = FINISHED_TASK TASK_DIE bad_wave1_ped[temp_int] ENDIF ENDIF ENDIF ENDIF ENDIF // temp_int2++ // ENDWHILE //temp_int++ //ENDWHILE ENDIF // if baddie car is in water make it explode IF m_frame_num = 1 IF DOES_VEHICLE_EXIST bad_wave1_car IF NOT IS_CAR_DEAD bad_wave1_car GET_CAR_COORDINATES bad_wave1_car x y z IF z < 0.0 EXPLODE_CAR bad_wave1_car ENDIF ENDIF ENDIF IF DOES_VEHICLE_EXIST bad_wave1_car2 IF NOT IS_CAR_DEAD bad_wave1_car2 GET_CAR_COORDINATES bad_wave1_car2 x y z IF z < 0.0 EXPLODE_CAR bad_wave1_car2 ENDIF ENDIF ENDIF ENDIF // remove blips if chars die IF m_frame_num = 2 temp_int = 0 WHILE temp_int < 6 IF IS_CHAR_DEAD bad_wave1_ped[temp_int] IF DOES_BLIP_EXIST bad_wave1_ped_blip[temp_int] REMOVE_BLIP bad_wave1_ped_blip[temp_int] ENDIF ENDIF temp_int++ ENDWHILE ENDIF // // check if player hits baddies with swinging car on crane // IF m_frame_num = 3 // GRAB_ENTITY_ON_ROPE_FOR_OBJECT magno_arm temp_car temp_ped temp_obj // IF NOT temp_car = -1 // IF NOT IS_CAR_DEAD temp_car // GET_CAR_SPEED temp_car temp_float // IF temp_float > 6.0 // temp_int = 0 // WHILE temp_int < 6 // IF NOT IS_CHAR_DEAD bad_wave1_ped[temp_int] // IF IS_CHAR_TOUCHING_VEHICLE bad_wave1_ped[temp_int] temp_car // DAMAGE_CHAR bad_wave1_ped[temp_int] 100 FALSE // ENDIF // ENDIF // temp_int++ // ENDWHILE // ENDIF // ENDIF // ENDIF // ENDIF RETURN //// ************************************************************************************************************* //// STAGE 5 - 2nd wave come in do drive by //// ************************************************************************************************************* STEAL4_m_stage_8: RETURN // ************************************************************************************************************* // STAGE 6 - train arrives // ************************************************************************************************************* STEAL4_m_stage_9: IF NOT player_is_in_crane = 2 IF player_on_foot = 0 CLEAR_HELP player_on_foot = 1 ENDIF ELSE IF player_on_foot = 1 PRINT_HELP_FOREVER ST4_H09 // Press the ~t~ button to exit the crane. player_on_foot = 0 ENDIF ENDIF SWITCH m_goals // create train that charges into docks CASE 0 TIMERA = 0 // REQUEST_MODEL FREIGHT // REQUEST_MODEL FREIFLAT // WHILE NOT HAS_MODEL_LOADED FREIGHT // OR NOT HAS_MODEL_LOADED FREIFLAT // WAIT 0 // ENDWHILE m_goals++ BREAK CASE 1 // IF TIMERA > 4000 // CREATE_MISSION_TRAIN 10 -1793.88 -33.55 5.31 FALSE train // SET_TRAIN_SPEED train 7.0 // SET_TRAIN_CRUISE_SPEED train 7.0 // SET_CAR_PROOFS train TRUE TRUE TRUE TRUE TRUE // MARK_MODEL_AS_NO_LONGER_NEEDED FREIGHT // MARK_MODEL_AS_NO_LONGER_NEEDED FREIFLAT // m_goals++ // ENDIF IF TIMERA > 2000 m_goals++ ENDIF BREAK CASE 2 IF NOT player_is_in_crane = 2 SET_PLAYER_CONTROL player1 OFF ELSE disable_crane = 1 ENDIF // LOAD_SCENE -1793.88 -33.55 5.31 // SWITCH_WIDESCREEN ON // SET_FIXED_CAMERA_POSITION -1748.6940 -35.7273 3.7073 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -1749.6890 -35.6875 3.7987 JUMP_CUT // IF NOT IS_CAR_DEAD steal_car // GET_CAR_COORDINATES steal_car x y z // IF IS_2D_POINT_IN_TRIANGLE x y -1536.6421 134.1915 -1538.9832 136.8876 -1652.6705 22.8175 // OR IS_2D_POINT_IN_TRIANGLE x y -1652.6705 22.8175 -1650.6829 20.2309 -1536.6421 134.1915 // IF z < 4.0 // // CLEAR_MISSION_AUDIO 1 // LOAD_MISSION_AUDIO 1 SOUND_STL4_KA // WHILE NOT HAS_MISSION_AUDIO_LOADED 1 // WAIT 0 // ENDWHILE // PLAY_MISSION_AUDIO 1 // PRINT_NOW &STL4_KA 5000 1 // // ENDIF // ENDIF // ENDIF TIMERA = 0 m_goals++ BREAK // show a couple more bad guys runnin around corner CASE 3 IF TIMERA > 0 SWITCH_WIDESCREEN ON disable_crane = 1 ENABLE_CRANE_CONTROLS FALSE FALSE FALSE SET_FIXED_CAMERA_POSITION -1675.5979 25.4341 2.8434 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1674.7222 25.8894 3.0036 JUMP_CUT // IF NOT IS_CAR_DEAD train // FREEZE_CAR_POSITION train TRUE // ENDIF // create a couple more bad guys CREATE_CHAR PEDTYPE_MISSION1 WBDYG1 -1676.0950 26.8479 2.5869 extra_baddie[0] SET_CHAR_HEADING extra_baddie[0] 314.8203 ADD_BLIP_FOR_CHAR extra_baddie[0] extra_baddie_blip[0] CREATE_CHAR PEDTYPE_MISSION1 WBDYG1 -1674.4042 23.8107 2.6233 extra_baddie[1] SET_CHAR_HEADING extra_baddie[1] 314.8204 ADD_BLIP_FOR_CHAR extra_baddie[1] extra_baddie_blip[1] temp_int = 0 WHILE temp_int < 2 SET_CHAR_DECISION_MAKER extra_baddie[temp_int] empty_dm SET_CHAR_ACCURACY extra_baddie[temp_int] 20 SET_CHAR_HEALTH extra_baddie[temp_int] 100 GIVE_WEAPON_TO_CHAR extra_baddie[temp_int] WEAPONTYPE_PISTOL 9999 temp_int++ ENDWHILE TASK_GO_STRAIGHT_TO_COORD extra_baddie[0] -1664.1133 34.4836 2.5869 PEDMOVE_RUN 999999 TASK_GO_STRAIGHT_TO_COORD extra_baddie[1] -1662.3065 31.2954 2.5869 PEDMOVE_RUN 999999 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_STL4_GC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW &STL4_GC 5000 1 m_goals++ ENDIF BREAK CASE 4 IF HAS_MISSION_AUDIO_FINISHED 1 m_goals++ ENDIF BREAK CASE 5 SWITCH_WIDESCREEN OFF ENABLE_CRANE_CONTROLS TRUE TRUE TRUE disable_crane = 0 // // unfreeze train // IF NOT IS_CAR_DEAD train // FREEZE_CAR_POSITION train FALSE // ENDIF // create a couple more bad guys IF NOT IS_CHAR_DEAD extra_baddie[0] SET_CHAR_COORDINATES extra_baddie[0] -1657.3983 32.9707 2.8213 SET_CHAR_HEADING extra_baddie[0] 320.0 ENDIF IF NOT IS_CHAR_DEAD extra_baddie[1] SET_CHAR_COORDINATES extra_baddie[1] -1655.2644 31.7060 2.8213 SET_CHAR_HEADING extra_baddie[1] 320.0 ENDIF temp_int = 0 WHILE temp_int < 2 IF NOT IS_CHAR_DEAD extra_baddie[temp_int] SET_CHAR_DECISION_MAKER extra_baddie[temp_int] tough_dm SET_CHAR_ACCURACY extra_baddie[temp_int] 20 SET_CHAR_HEALTH extra_baddie[temp_int] 100 GIVE_WEAPON_TO_CHAR extra_baddie[temp_int] WEAPONTYPE_PISTOL 9999 SET_CHAR_RELATIONSHIP extra_baddie[temp_int] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 SET_CHAR_RELATIONSHIP extra_baddie[temp_int] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 //TASK_KINDA_STAY_IN_SAME_PLACE extra_baddie[temp_int] TRUE IF NOT IS_CHAR_DEAD buddy TASK_GOTO_CHAR extra_baddie[temp_int] buddy 10000 20.0 ENDIF ENDIF temp_int++ ENDWHILE IF NOT IS_CHAR_DEAD buddy IF NOT IS_CHAR_DEAD extra_baddie[0] TASK_KILL_CHAR_ON_FOOT buddy extra_baddie[0] ENDIF ENDIF IF player_is_in_crane = 2 disable_crane = 0 reset_crane_camera = 1 ELSE RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON ENDIF CLEAR_PRINTS //PRINT_NOW ST4_32 7000 1 //Make sure the train doesn't destroy the car you came here to steal.' IF NOT IS_CAR_DEAD steal_car IF NOT DOES_BLIP_EXIST steal_car_blip ADD_BLIP_FOR_CAR steal_car steal_car_blip SET_BLIP_AS_FRIENDLY steal_car_blip TRUE ENDIF ENDIF // give char decision maker response to jump out the way of cars IF NOT IS_CHAR_DEAD buddy ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE buddy_dm EVENT_POTENTIAL_GET_RUN_OVER TASK_COMPLEX_GET_OUT_OF_WAY_OF_CAR 0.0 100.0 0.0 100.0 0 1 ENDIF m_goals++ BREAK // stop train once it reaches it's destination CASE 6 // make cesar get in car if player is in car IF NOT IS_CHAR_DEAD buddy IF NOT IS_CAR_DEAD steal_car IF IS_CHAR_IN_CAR scplayer steal_car IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer buddy 15.0 15.0 5.0 FALSE OPEN_SEQUENCE_TASK temp_seq TASK_GOTO_CAR -1 steal_car 999999 10.0 TASK_ENTER_CAR_AS_PASSENGER -1 steal_car 999999 0 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK buddy temp_seq CLEAR_SEQUENCE_TASK temp_seq //PRINT_NOW ST4_25 5000 1 // CESAR - 'Lets get the hell out of here!!' TIMERA = 30000 dialogue_flag = 0 play_single_audio_flag = 0 m_goals++ ENDIF ENDIF // if extra baddies are dead make cesar get in car IF IS_CHAR_DEAD extra_baddie[0] AND IS_CHAR_DEAD extra_baddie[1] m_goals++ dialogue_flag = 0 play_single_audio_flag = 0 ENDIF ENDIF ENDIF BREAK // make cesar get in car CASE 7 IF NOT IS_CHAR_DEAD buddy IF NOT IS_CAR_DEAD steal_car IF NOT IS_CHAR_IN_CAR buddy steal_car OPEN_SEQUENCE_TASK temp_seq TASK_GOTO_CAR -1 steal_car 999999 10.0 TASK_ENTER_CAR_AS_PASSENGER -1 steal_car 999999 0 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK buddy temp_seq CLEAR_SEQUENCE_TASK temp_seq //PRINT_NOW ST4_25 5000 1 // CESAR - 'Lets get the hell out of here!!' TIMERA = 30000 m_goals++ GENERATE_RANDOM_INT_IN_RANGE 0 2 dialogue_flag ELSE TIMERA = 30000 m_goals++ GENERATE_RANDOM_INT_IN_RANGE 0 2 dialogue_flag ENDIF ENDIF ENDIF BREAK // wait for cesar to get in car CASE 8 IF dialogue_flag = 0 $play_single_audio_text = &STL4_JA play_single_audio_sound = SOUND_STL4_JA // Let’s just grab the car and go! play_single_audio_ped = buddy play_single_audio_attached = 0 GOSUB STEAL4_play_single_audio IF play_single_audio_flag = 4 play_single_audio_flag = 0 dialogue_flag = 2 ENDIF ENDIF IF dialogue_flag = 1 $play_single_audio_text = &STL4_JB play_single_audio_sound = SOUND_STL4_JB // Let’s just get the car and bug out! play_single_audio_ped = buddy play_single_audio_attached = 0 GOSUB STEAL4_play_single_audio IF play_single_audio_flag = 4 play_single_audio_flag = 0 dialogue_flag = 2 ENDIF ENDIF // if player is already in car, but cesar isn't tell player to pick up ryder IF NOT IS_CAR_DEAD steal_car IF IS_CHAR_IN_CAR scplayer steal_car IF NOT IS_CHAR_DEAD buddy IF NOT IS_CHAR_IN_CAR buddy steal_car IF TIMERA > 35000 PRINT_NOW ST4_29 5000 1 //Wait for Cesar! TIMERA = 0 ENDIF GET_SCRIPT_TASK_STATUS buddy PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_GOTO_CAR -1 steal_car 999999 10.0 TASK_ENTER_CAR_AS_PASSENGER -1 steal_car 999999 0 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK buddy temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF ENDIF ENDIF ENDIF // if cesar is in car but player isn't tell player to get in car with him IF play_single_audio_flag = 0 IF NOT IS_CAR_DEAD steal_car IF NOT IS_CHAR_DEAD buddy IF IS_CHAR_IN_CAR buddy steal_car IF NOT IS_CHAR_IN_CAR scplayer steal_car IF TIMERA > 30000 PRINT_NOW ST4_28 5000 1 //Get in the car with Cesar. TIMERA = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // if player and cesar are in car continue IF play_single_audio_flag = 0 IF NOT IS_CAR_DEAD steal_car IF NOT IS_CHAR_DEAD buddy IF IS_CHAR_IN_CAR buddy steal_car IF IS_CHAR_IN_CAR scplayer steal_car m_goals++ ENDIF ENDIF ENDIF ENDIF ENDIF BREAK CASE 9 IF NOT IS_CAR_DEAD steal_car IF NOT IS_CHAR_DEAD buddy IF IS_CHAR_IN_CAR buddy steal_car SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR buddy FALSE ENDIF ENDIF ENDIF CLEAR_ONSCREEN_COUNTER buddy_health m_goals = 99 BREAK CASE 99 m_goals = 0 m_stage++ BREAK ENDSWITCH // if player is in steal car remove blip IF m_goals > 3 IF DOES_BLIP_EXIST steal_car_blip IF NOT IS_CAR_DEAD steal_car IF IS_CHAR_IN_CAR scplayer steal_car REMOVE_BLIP steal_car_blip ENDIF ENDIF ELSE IF NOT IS_CAR_DEAD steal_car IF NOT IS_CHAR_IN_CAR scplayer steal_car ADD_BLIP_FOR_CAR steal_car steal_car_blip SET_BLIP_AS_FRIENDLY steal_car_blip TRUE ENDIF ENDIF ENDIF ENDIF RETURN // ************************************************************************************************************* // STAGE 9 - get back to base // ************************************************************************************************************* STEAL4_m_stage_10: IF NOT player_is_in_crane = 2 IF player_on_foot = 0 CLEAR_HELP player_on_foot = 1 ENDIF ELSE IF player_on_foot = 1 PRINT_HELP_FOREVER ST4_H09 // Press the ~t~ button to exit the crane. player_on_foot = 0 ENDIF ENDIF IF m_goals = -1 ADD_BLIP_FOR_COORD 0.0 0.0 0.0 steal_car_blip ENDIF IF m_goals = 0 PRINT_NOW ST4_26 5000 1 // take cesar and the car back to your garage REMOVE_BLIP location_blip ADD_BLIP_FOR_COORD -2024.7 179.4 27.4 location_blip IF DOES_BLIP_EXIST extra_baddie_blip[0] REMOVE_BLIP extra_baddie_blip[0] ENDIF IF DOES_BLIP_EXIST extra_baddie_blip[1] REMOVE_BLIP extra_baddie_blip[1] ENDIF // IF NOT IS_CAR_DEAD steal_car // SET_TARGET_CAR_FOR_MISSION_GARAGE hbgdsfs steal_car // ENDIF TIMERA = 20000 TIMERB = 0 dialogue_flag = 0 dialogue_timer = 0 //ALTER_WANTED_LEVEL_NO_DROP player1 2 // // spawn a baddie car // CREATE_CAR SENTINEL -1699.1079 39.6859 3.5773 bad_wave2_car // SET_CAR_HEADING bad_wave2_car 229.0821 // SET_CAR_HEAVY bad_wave2_car TRUE // SET_CAR_STRONG bad_wave2_car TRUE // SET_CAR_HEALTH bad_wave2_car 1000 // SET_CAR_CRUISE_SPEED bad_wave2_car 50.0 // // CREATE_CHAR_INSIDE_CAR bad_wave2_car PEDTYPE_MISSION1 WBDYG1 bad_wave2_ped[0] // CREATE_CHAR_AS_PASSENGER bad_wave2_car PEDTYPE_MISSION1 WBDYG1 0 bad_wave2_ped[1] // CREATE_CHAR_AS_PASSENGER bad_wave2_car PEDTYPE_MISSION1 WBDYG1 1 bad_wave2_ped[2] // CREATE_CHAR_AS_PASSENGER bad_wave2_car PEDTYPE_MISSION1 WBDYG1 2 bad_wave2_ped[3] // // IF NOT IS_CAR_DEAD steal_car // TASK_CAR_MISSION bad_wave2_ped[0] bad_wave2_car steal_car MISSION_BLOCKCAR_FARAWAY 50.0 DRIVINGMODE_AVOIDCARS // TASK_DRIVE_BY bad_wave2_ped[1] -1 steal_car 0.0 0.0 0.0 99999.0 DRIVEBY_AI_ALL_DIRN FALSE 100 // TASK_DRIVE_BY bad_wave2_ped[2] -1 steal_car 0.0 0.0 0.0 99999.0 DRIVEBY_AI_ALL_DIRN FALSE 100 // TASK_DRIVE_BY bad_wave2_ped[3] -1 steal_car 0.0 0.0 0.0 99999.0 DRIVEBY_AI_ALL_DIRN FALSE 100 // ENDIF SET_WANTED_MULTIPLIER 1.0 m_goals++ ENDIF IF m_goals = 1 IF dialogue_flag = 0 IF dialogue_timer > 5500 active_conversation = 5 dialogue_flag++ ENDIF ELSE IF dialogue_flag = 1 IF active_conversation = 0 IF NOT IS_CAR_DEAD steal_car GET_CAR_HEALTH steal_car steal_car_health ENDIF dialogue_flag++ ENDIF ELSE IF dialogue_flag = 2 IF NOT IS_CAR_DEAD steal_car GET_CAR_HEALTH steal_car temp_int IF temp_int < steal_car_health dialogue_flag++ ENDIF ENDIF ELSE IF dialogue_flag = 3 active_conversation = 7 dialogue_flag++ ELSE IF dialogue_flag = 4 IF active_conversation = 0 dialogue_flag++ ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // // open garage door when player gets near // IF garage_is_open = 0 // IF NOT IS_CAR_DEAD steal_car // IF IS_CHAR_IN_CAR scplayer steal_car // IF NOT IS_CHAR_DEAD buddy // IF IS_CHAR_IN_CAR buddy steal_car // IF LOCATE_CHAR_IN_CAR_3D scplayer -2042.9 178.5 27.5 20.0 20.0 5.0 FALSE // garage_is_open = 1 // OPEN_GARAGE hbgdSFS // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF IF NOT IS_CAR_DEAD steal_car IF IS_CHAR_IN_CAR scplayer steal_car IF LOCATE_CAR_3D steal_car -2024.7 179.4 27.4 4.0 4.0 4.0 TRUE IF NOT IS_CHAR_DEAD buddy IF IS_CHAR_IN_CAR buddy steal_car IF IS_CHAR_IN_CAR scplayer steal_car IF IS_VEHICLE_ON_ALL_WHEELS steal_car SET_PLAYER_CONTROL player1 OFF m_goals++ ENDIF ENDIF ELSE PRINT_NOW ST4_27 6000 1 // you left cesar behind ENDIF ENDIF ENDIF ENDIF ENDIF // remove buddy blip IF NOT IS_CHAR_DEAD buddy IF NOT IS_CAR_DEAD steal_car IF IS_CHAR_IN_CAR buddy steal_car IF DOES_BLIP_EXIST buddy_blip REMOVE_BLIP buddy_blip ENDIF ENDIF ENDIF ENDIF // if player leaves car IF NOT IS_CAR_DEAD steal_car IF NOT IS_CHAR_DEAD buddy IF IS_CHAR_IN_CAR buddy steal_car IF NOT IS_CHAR_IN_CAR scplayer steal_car IF NOT DOES_BLIP_EXIST steal_car_blip ADD_BLIP_FOR_CAR steal_car steal_car_blip SET_BLIP_AS_FRIENDLY steal_car_blip TRUE //PRINT_NOW ST4_41 6000 1 // what are you doing? PRINT_NOW ST4_05 5000 1 // get in the car with cesar ELSE ENDIF IF DOES_BLIP_EXIST location_blip REMOVE_BLIP location_blip ENDIF // IF TIMERA > 20000 // //PRINT_NOW ST4_26 7000 1 // take cesar and the car back to your garage // PRINT_NOW ST4_05 7000 1 // get in the car with cesar // TIMERA = 0 // ENDIF // get in the car dialogue IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND audio_line_is_active = 0 AND TIMERA > 30000 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer buddy 20.0 20.0 5.0 FALSE LVAR_INT cesar_dialogue_1 cesar_dialogue_1++ IF cesar_dialogue_1 > 5 cesar_dialogue_1 = 0 ENDIF SWITCH cesar_dialogue_1 CASE 0 $audio_string = &CESX_AA audio_sound_file = SOUND_CESX_AA START_NEW_SCRIPT audio_line buddy 0 0 1 0 BREAK CASE 1 $audio_string = &CESX_AB audio_sound_file = SOUND_CESX_AB START_NEW_SCRIPT audio_line buddy 0 0 1 0 BREAK CASE 2 $audio_string = &CESX_AC audio_sound_file = SOUND_CESX_AC START_NEW_SCRIPT audio_line buddy 0 0 1 0 BREAK CASE 3 $audio_string = &CESX_AD audio_sound_file = SOUND_CESX_AD START_NEW_SCRIPT audio_line buddy 0 0 1 0 BREAK CASE 4 $audio_string = &CESX_AE audio_sound_file = SOUND_CESX_AE START_NEW_SCRIPT audio_line buddy 0 0 1 0 BREAK CASE 5 $audio_string = &CESX_AF audio_sound_file = SOUND_CESX_AF START_NEW_SCRIPT audio_line buddy 0 0 1 0 BREAK ENDSWITCH TIMERA = 0 ENDIF ENDIF ELSE IF DOES_BLIP_EXIST steal_car_blip REMOVE_BLIP steal_car_blip ENDIF IF NOT DOES_BLIP_EXIST location_blip ADD_BLIP_FOR_COORD -2024.7 179.4 27.4 location_blip PRINT_NOW ST4_26 7000 1 // take cesar and the car back to your garage ENDIF ENDIF ENDIF ENDIF ENDIF // remove car blip if player is in car IF NOT IS_CAR_DEAD steal_car IF IS_CHAR_IN_CAR scplayer steal_car IF DOES_BLIP_EXIST steal_car_blip REMOVE_BLIP steal_car_blip ENDIF ELSE IF NOT DOES_BLIP_EXIST steal_car_blip ADD_BLIP_FOR_CAR steal_car steal_car_blip SET_BLIP_AS_FRIENDLY steal_car_blip TRUE ENDIF ENDIF ENDIF // if player leaves cesar behind IF NOT IS_CAR_DEAD steal_car IF IS_CHAR_IN_CAR scplayer steal_car IF NOT IS_CHAR_DEAD buddy IF NOT IS_CHAR_IN_CAR buddy steal_car IF TIMERB > 20000 PRINT_NOW ST4_27 7000 1 //You've left Cesar behind!! TIMERB = 0 ENDIF IF DOES_BLIP_EXIST location_blip REMOVE_BLIP location_blip ENDIF ELSE IF NOT DOES_BLIP_EXIST location_blip ADD_BLIP_FOR_COORD -2024.7 179.4 27.4 location_blip PRINT_NOW ST4_26 7000 1 // take cesar and the car back to your garage ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF m_goals = 2 SET_PLAYER_CONTROL player1 OFF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE OPEN_GARAGE hbgdSFS WHILE NOT IS_GARAGE_OPEN hbgdSFS WAIT 0 ENDWHILE SET_AREA_VISIBLE 1 IF IS_PLAYER_PLAYING player1 SET_CHAR_AREA_VISIBLE scplayer 1 ENDIF LOAD_SCENE_IN_DIRECTION -2045.4 173.1 27.8 309.5 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_FIXED_CAMERA_POSITION -2045.2 170.8 29.4 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2040.1 181.6 29.1 JUMP_CUT vec_x = -2040.1 + 2045.2 vec_y = 181.6 - 170.8 vec_z = 29.1 - 29.4 vec_x *= 4.0 vec_y *= 4.0 vec_z *= 4.0 x = -2045.2 + vec_x y = 170.8 + vec_y z = 29.4 + vec_z GET_HEADING_FROM_VECTOR_2D vec_x vec_y heading LOAD_SCENE_IN_DIRECTION x y z heading IF NOT IS_CHAR_DEAD buddy SET_CHAR_AREA_VISIBLE buddy 1 ENDIF IF NOT IS_CAR_DEAD steal_car SET_VEHICLE_AREA_VISIBLE steal_car 1 ENDIF IF NOT IS_CAR_DEAD steal_car IF NOT IS_CHAR_IN_CAR scplayer steal_car WARP_CHAR_INTO_CAR scplayer steal_car ENDIF ENDIF IF NOT IS_CAR_DEAD steal_car SET_CAR_COORDINATES steal_car -2033.8 178.6 27.6 SET_CAR_HEADING steal_car 90.0 ENDIF //SET_CAR_FORWARD_SPEED st2_players_car OPEN_SEQUENCE_TASK temp_seq TASK_CAR_DRIVE_TO_COORD -1 steal_car -2044.4 177.6 27.6 5.0 MODE_ACCURATE TRUE DRIVINGMODE_AVOIDCARS TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 -2034.7308 177.1182 27.8359 PEDMOVE_WALK 50000 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK scplayer temp_seq CLEAR_SEQUENCE_TASK temp_seq //WAIT 500 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int IF temp_int = 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_STL4_NA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW &STL4_NA 5000 1 ELSE CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_STL4_NB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW &STL4_NB 5000 1 ENDIF TIMERA = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 IF NOT IS_CHAR_DEAD buddy IF NOT IS_CAR_DEAD steal_car IF IS_CHAR_IN_CAR buddy steal_car IF NOT IS_CHAR_IN_CAR scplayer steal_Car GET_SCRIPT_TASK_STATUS buddy PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 -2034.7308 177.1182 27.8359 PEDMOVE_WALK 50000 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK buddy temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF ENDIF ENDIF ENDIF WAIT 0 ENDWHILE WHILE NOT TIMERA > 5000 WAIT 0 ENDWHILE DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 IF IS_PLAYER_PLAYING player1 SET_CHAR_AREA_VISIBLE scplayer 0 ENDIF m_goals++ ENDIF // show the import export being unlocked IF m_goals = 3 // work out how much to award player IF NOT IS_CAR_DEAD steal_car GET_CAR_HEALTH steal_car temp_int temp_float =# temp_int temp_float /= 1000.0 temp_float *= 5000.0 steal4_reward =# temp_float ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer DELETE_CHAR buddy DELETE_CAR steal_car CLEAR_PRINTS CLOSE_GARAGE hbgdSFS WHILE NOT IS_GARAGE_CLOSED hbgdSFS WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer -1569.6251 122.3311 2.5469 SET_FIXED_CAMERA_POSITION -1571.1414 131.4032 3.3235 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1571.6854 132.2260 3.4872 JUMP_CUT LOAD_SCENE_IN_DIRECTION -1571.6854 132.2260 3.4872 0.0 CLEAR_AREA -1570.7183 131.0493 3.3547 50.0 TRUE SWITCH_WIDESCREEN ON steal4_flag = 1 START_NEW_SCRIPT import_export_script import_export_is_active = 1 // unlocks the import / export WHILE NOT HAS_MODEL_LOADED NF_BLACKBOARD WAIT 0 ENDWHILE CLEAR_HELP DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_HELP PRINT_NOW ST4_45 5000 1 // ~s~Car exports and imports have been unlocked. WAIT 5000 PRINT_NOW ST4_46 5000 1 // ~s~Check the wanted board at the Ocean Docks for vehicles wanted for exporting. WAIT 5000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION -1554.5928 -60.4267 75.7247 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1554.7825 -59.6013 75.1930 JUMP_CUT LOAD_SCENE_IN_DIRECTION -1554.7825 -59.6013 75.1930 0.0 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PRINT_NOW ST4_47 5000 1 // Deliver wanted vehicles to the ship. WAIT 5000 PRINT_NOW ST4_48 5000 1 // Vehicles are also imported on certain days. WAIT 5000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //SET_CHAR_COORDINATES scplayer -2034.2960 177.3021 27.3359 //SET_CHAR_HEADING scplayer 257.4417 SET_CHAR_COORDINATES scplayer -2027.2 179.5 27.3 SET_CHAR_HEADING scplayer 277.5 LOAD_SCENE -2045.4 173.1 27.8 LOAD_SCENE_IN_DIRECTION -2045.4 173.1 27.8 309.5 WHILE IS_CHAR_WAITING_FOR_WORLD_COLLISION scplayer WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer -2027.2 179.5 27.3 SET_CHAR_HEADING scplayer 277.5 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON m_passed = 1 ENDIF // // stop train once it gets into the docks // IF DOES_VEHICLE_EXIST train // IF train_is_coming = 0 // IF NOT IS_CAR_DEAD train // IF LOCATE_CAR_2D train -1586.0 87.0 10.0 10.0 FALSE // SET_TRAIN_CRUISE_SPEED train 0.0 // SET_TRAIN_SPEED train 10.0 // train_is_coming++ // ENDIF // ENDIF // ENDIF // ENDIF RETURN // ************************************************************************************************************* // GLOBAL FUNCTIONS - run continuously throughout lifetime of level // ************************************************************************************************************* STEAL4_global_functions: // IF NOT IS_CAR_DEAD steal_car // GET_CAR_COORDINATES steal_car x y z // IF IS_2D_POINT_IN_TRIANGLE x y -1536.6421 134.1915 -1538.9832 136.8876 -1652.6705 22.8175 // WRITE_DEBUG POINT_IN_TRI1 // ELSE // LINE -1536.6421 134.1915 z -1538.9832 136.8876 z // LINE -1538.9832 136.8876 z -1652.6705 22.8175 z // LINE -1652.6705 22.8175 z -1536.6421 134.1915 z // ENDIF // IF IS_2D_POINT_IN_TRIANGLE x y -1652.6705 22.8175 -1650.6829 20.2309 -1536.6421 134.1915 // WRITE_DEBUG POINT_IN_TRI2 // ELSE // LINE -1652.6705 22.8175 z -1650.6829 20.2309 z // LINE -1650.6829 20.2309 z -1536.6421 134.1915 z // LINE -1536.6421 134.1915 z -1652.6705 22.8175 z // ENDIF // temp_float = z - 2.0 // temp_float2 = z + 2.0 // LINE x y temp_float x y temp_float2 // ENDIF // get last carried container IF DOES_OBJECT_EXIST magno_arm GRAB_ENTITY_ON_ROPE_FOR_OBJECT magno_arm temp_car temp_ped temp_obj IF NOT temp_obj = -1 IF NOT last_picked_up_container = temp_obj last_picked_up_container = temp_obj ENDIF ENDIF ENDIF // check cesar hasn't been hit IF NOT IS_CHAR_DEAD buddy IF DOES_OBJECT_EXIST last_picked_up_container IF NOT IS_OBJECT_STATIC last_picked_up_container GET_OBJECT_SPEED last_picked_up_container temp_float IF temp_float > 4.0 IF IS_CHAR_TOUCHING_OBJECT_ON_FOOT buddy last_picked_up_container GET_SCRIPT_TASK_STATUS buddy TASK_DIE temp_int3 IF temp_int3 = FINISHED_TASK TASK_DIE buddy ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF LVAR_FLOAT car_throw_vec_x car_throw_vec_y car_throw_vec_z IF m_frame_num = 8 IF neils_car_is_attached = 1 IF DOES_OBJECT_EXIST open_container1 IF DOES_VEHICLE_EXIST open_container1_car IF NOT IS_CAR_DEAD open_container1_car GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS open_container1 0.0 -1.0 0.0 x y z GET_OBJECT_COORDINATES open_container1 x2 y2 z2 vec_x = 1.0 vec_y = z - z2 vec2_x = 0.0 vec2_y = 1.0 GET_ANGLE_BETWEEN_2D_VECTORS vec_x vec_y vec2_x vec2_y temp_float //WRITE_DEBUG_WITH_FLOAT angle temp_float IF z < z2 AND temp_float > 120.0 GET_CAR_COORDINATES open_container1_car x y z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS open_container1_car 0.0 1.0 0.0 x2 y2 z2 car_throw_vec_x = x2 - x car_throw_vec_y = y2 - y car_throw_vec_z = z2 - z car_throw_vec_z += 0.1 car_throw_vec_x *= 0.05 car_throw_vec_y *= 0.05 car_throw_vec_z *= 0.05 DETACH_CAR open_container1_car 0.0 0.0 0.0 FALSE //APPLY_FORCE_TO_CAR open_container1_car vec_x vec_y vec_z 0.0 0.0 0.0 //FREEZE_CAR_POSITION move_car_timer = 0 neils_car_is_attached++ ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF neils_car_is_attached = 2 IF move_car_timer < 300 IF NOT IS_CAR_DEAD open_container1_car APPLY_FORCE_TO_CAR open_container1_car car_throw_vec_x car_throw_vec_y car_throw_vec_z 0.0 0.0 0.0 ENDIF ELSE neils_car_is_attached++ ENDIF ENDIF IF m_frame_num = 9 IF neils_car_is_attached2 = 1 IF DOES_OBJECT_EXIST open_container2 IF DOES_VEHICLE_EXIST open_container2_car IF NOT IS_CAR_DEAD open_container2_car GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS open_container2 0.0 -1.0 0.0 x y z GET_OBJECT_COORDINATES open_container2 x2 y2 z2 vec_x = 1.0 vec_y = z - z2 vec2_x = 0.0 vec2_y = 1.0 GET_ANGLE_BETWEEN_2D_VECTORS vec_x vec_y vec2_x vec2_y temp_float IF z < z2 AND temp_float > 120.0 GET_CAR_COORDINATES open_container2_car x y z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS open_container2_car 0.0 1.0 0.0 x2 y2 z2 car_throw_vec_x = x2 - x car_throw_vec_y = y2 - y car_throw_vec_z = z2 - z car_throw_vec_z += 0.1 car_throw_vec_x *= 0.05 car_throw_vec_y *= 0.05 car_throw_vec_z *= 0.05 DETACH_CAR open_container2_car 0.0 0.0 0.0 FALSE move_car_timer = 0 neils_car_is_attached2++ ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF neils_car_is_attached = 2 IF move_car_timer < 300 IF NOT IS_CAR_DEAD open_container2_car APPLY_FORCE_TO_CAR open_container2_car car_throw_vec_x car_throw_vec_y car_throw_vec_z 0.0 0.0 0.0 ENDIF ELSE neils_car_is_attached2++ ENDIF ENDIF // player drops a container on any of the cars it should explode //IF m_frame_num = 3 IF DOES_OBJECT_EXIST magno_arm GRAB_ENTITY_ON_ROPE_FOR_OBJECT magno_arm temp_car temp_ped temp_obj IF temp_obj = -1 // temp_int = 0 // WHILE temp_int < 9 LVAR_FLOAT last_frame_container_speed IF DOES_OBJECT_EXIST last_picked_up_container //IF NOT IS_OBJECT_STATIC last_picked_up_container IF last_frame_container_speed > 15.0 // GET_OBJECT_COORDINATES last_picked_up_container x y z // z += -2.0 IF NOT IS_CAR_DEAD buddy_car //IF LOCATE_CAR_3D buddy_car x y z 4.0 4.0 2.0 FALSE IF IS_VEHICLE_TOUCHING_OBJECT buddy_car last_picked_up_container EXPLODE_CAR buddy_car ENDIF ENDIF IF NOT IS_CAR_DEAD open_container1_car IF NOT IS_VEHICLE_ATTACHED open_container1_car //IF LOCATE_CAR_3D open_container1_car x y z 4.0 4.0 2.0 FALSE IF IS_VEHICLE_TOUCHING_OBJECT open_container1_car last_picked_up_container EXPLODE_CAR open_container1_car ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD steal_car //IF LOCATE_CAR_3D steal_car x y z 4.0 4.0 2.0 FALSE IF IS_VEHICLE_TOUCHING_OBJECT steal_car last_picked_up_container EXPLODE_CAR steal_car ENDIF ENDIF IF NOT IS_CAR_DEAD bad_wave1_car //IF LOCATE_CAR_3D bad_wave1_car x y z 4.0 4.0 2.0 FALSE IF IS_VEHICLE_TOUCHING_OBJECT bad_wave1_car last_picked_up_container EXPLODE_CAR bad_wave1_car ENDIF ENDIF IF NOT IS_CAR_DEAD bad_wave1_car2 //IF LOCATE_CAR_3D bad_wave1_car2 x y z 4.0 4.0 2.0 FALSE IF IS_VEHICLE_TOUCHING_OBJECT bad_wave1_car2 last_picked_up_container EXPLODE_CAR bad_wave1_car2 ENDIF ENDIF IF NOT IS_CAR_DEAD bad_wave2_car //IF LOCATE_CAR_3D bad_wave2_car x y z 4.0 4.0 2.0 FALSE IF IS_VEHICLE_TOUCHING_OBJECT bad_wave2_car last_picked_up_container EXPLODE_CAR bad_wave2_car ENDIF ENDIF ENDIF GET_OBJECT_SPEED last_picked_up_container last_frame_container_speed //ENDIF ENDIF ENDIF // temp_int++ // ENDWHILE ENDIF // store buddy car IF m_frame_num = 4 IF IS_CHAR_IN_ANY_CAR scplayer IF NOT IS_CAR_DEAD buddy_car IF NOT IS_CHAR_IN_CAR scplayer buddy_car STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer temp_int IF NOT temp_int = steal_car MARK_CAR_AS_NO_LONGER_NEEDED buddy_car STORE_CAR_CHAR_IS_IN scplayer buddy_car ENDIF ENDIF ELSE MARK_CAR_AS_NO_LONGER_NEEDED buddy_car STORE_CAR_CHAR_IS_IN scplayer buddy_car ENDIF ENDIF ENDIF // buddy health IF m_frame_num = 5 IF DOES_CHAR_EXIST buddy IF NOT IS_CHAR_DEAD buddy GET_CHAR_HEALTH buddy temp_int temp_float =# temp_int temp_float /= 500.0 temp_float *= 100.0 IF temp_float > 100.0 temp_float = 100.0 ENDIF buddy_health =# temp_float ENDIF ENDIF ENDIF // remove blips IF m_frame_num = 6 IF DOES_VEHICLE_EXIST bad_wave2_car IF IS_CAR_DEAD bad_wave2_car IF DOES_BLIP_EXIST bad_wave2_car_blip REMOVE_BLIP bad_wave2_car_blip ENDIF ENDIF ENDIF ENDIF // remove baddie blips if the are dead IF m_frame_num = 8 temp_int = 0 WHILE temp_int < 6 IF DOES_BLIP_EXIST bad_wave1_ped_blip[temp_int] IF IS_CHAR_DEAD bad_wave1_ped[temp_int] REMOVE_BLIP bad_wave1_ped_blip[temp_int] ENDIF ENDIF temp_int++ ENDWHILE IF DOES_BLIP_EXIST extra_baddie_blip[0] IF IS_CHAR_DEAD extra_baddie[0] REMOVE_BLIP extra_baddie_blip[0] ENDIF ENDIF IF DOES_BLIP_EXIST extra_baddie_blip[1] IF IS_CHAR_DEAD extra_baddie[1] REMOVE_BLIP extra_baddie_blip[1] ENDIF ENDIF ENDIF // enable crane drop if they pick up a car IF disable_crane_drop = 1 IF DOES_OBJECT_EXIST magno_arm GRAB_ENTITY_ON_ROPE_FOR_OBJECT magno_arm temp_car temp_ped temp_obj IF NOT temp_car = -1 ENABLE_CRANE_CONTROLS TRUE TRUE TRUE disable_crane_drop = 2 ENDIF ENDIF ENDIF IF disable_crane_drop = 2 IF DOES_OBJECT_EXIST magno_arm GRAB_ENTITY_ON_ROPE_FOR_OBJECT magno_arm temp_car temp_ped temp_obj IF temp_car = -1 ENABLE_CRANE_CONTROLS TRUE TRUE FALSE disable_crane_drop = 1 ENDIF ENDIF ENDIF // fail if steal car gets destroyed IF m_frame_num = 7 IF DOES_VEHICLE_EXIST steal_car IF IS_CAR_DEAD steal_car WAIT 2000 m_failed = 1 failed_condition = 2 ENDIF ENDIF // fail if buddy dies IF DOES_CHAR_EXIST buddy IF IS_CHAR_DEAD buddy m_failed = 1 failed_condition = 3 ENDIF ENDIF ENDIF RETURN // ************************************************************************************************************* // MISSION SPECIFIC GOSUBS // ************************************************************************************************************* steal4_buddy_group_manager: IF joined_group = 1 IF NOT IS_CHAR_DEAD buddy IF NOT IS_GROUP_MEMBER buddy players_group IF NOT player_is_in_crane = 2 PRINT_NOW ST4_42 5000 1 // you've left cesar behind ENDIF joined_group++ IF NOT buddy_blip_type = 1 buddy_blip_type = 1 GOSUB reset_buddy_blip ENDIF ENDIF ENDIF ENDIF IF joined_group = 2 IF NOT IS_CHAR_DEAD buddy IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer buddy 15.0 15.0 5.0 FALSE SET_GROUP_MEMBER players_group buddy SET_CHAR_DROWNS_IN_WATER buddy FALSE joined_group = 1 IF NOT buddy_blip_type = 3 buddy_blip_type = 3 GOSUB reset_buddy_blip ENDIF ENDIF ENDIF ENDIF RETURN st4_create_baddies1: REQUEST_MODEL SENTINEL REQUEST_MODEL COLT45 REQUEST_MODEL WBDYG1 WHILE NOT HAS_MODEL_LOADED JESTER OR NOT HAS_MODEL_LOADED SENTINEL OR NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED WBDYG1 WAIT 0 ENDWHILE // create baddies CLEAR_AREA -1711.5900 44.8495 2.7813 20.0 TRUE CREATE_CAR SENTINEL -1711.5900 44.8495 2.7813 bad_wave1_car SET_CAR_HEADING bad_wave1_car 232.9281 SET_CAR_STRAIGHT_LINE_DISTANCE bad_wave1_car 100 CREATE_CHAR_INSIDE_CAR bad_wave1_car PEDTYPE_MISSION1 WBDYG1 bad_wave1_ped[0] CREATE_CHAR_AS_PASSENGER bad_wave1_car PEDTYPE_MISSION1 WBDYG1 0 bad_wave1_ped[1] CREATE_CHAR_AS_PASSENGER bad_wave1_car PEDTYPE_MISSION1 WBDYG1 1 bad_wave1_ped[2] ADD_BLIP_FOR_CHAR bad_wave1_ped[0] bad_wave1_ped_blip[0] ADD_BLIP_FOR_CHAR bad_wave1_ped[1] bad_wave1_ped_blip[1] ADD_BLIP_FOR_CHAR bad_wave1_ped[2] bad_wave1_ped_blip[2] temp_int = 0 WHILE temp_int < 3 IF NOT IS_CHAR_DEAD bad_wave1_ped[temp_int] GIVE_WEAPON_TO_CHAR bad_wave1_ped[temp_int] WEAPONTYPE_PISTOL 9999 SET_CHAR_DECISION_MAKER bad_wave1_ped[temp_int] tough_dm SET_CHAR_ACCURACY bad_wave1_ped[temp_int] 40 SET_CHAR_HEALTH bad_wave1_ped[temp_int] 70 SET_CHAR_SUFFERS_CRITICAL_HITS bad_wave1_ped[temp_int] FALSE ENDIF temp_int++ ENDWHILE CLEAR_AREA -1697.0397 14.7378 2.7813 5.0 TRUE RETURN st4_start_baddies_driving: // start baddie car driving IF NOT IS_CAR_DEAD bad_wave1_car OPEN_SEQUENCE_TASK temp_seq TASK_CAR_DRIVE_TO_COORD -1 bad_wave1_car -1686.4221 25.8359 2.7752 15.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_DRIVE_TO_COORD -1 bad_wave1_car -1643.3943 19.6494 3.6706 15.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH CLOSE_SEQUENCE_TASK temp_seq IF NOT IS_CHAR_DEAD bad_wave1_ped[0] PERFORM_SEQUENCE_TASK bad_wave1_ped[0] temp_seq ENDIF CLEAR_SEQUENCE_TASK temp_seq ENDIF RETURN st4_reset_crane_position: // base IF DOES_OBJECT_EXIST magno_base SET_OBJECT_COORDINATES_AND_VELOCITY magno_base magno_base_x magno_base_y magno_base_z ENDIF IF DOES_OBJECT_EXIST magno_base_LOD SET_OBJECT_COORDINATES_AND_VELOCITY magno_base_LOD magno_base_x magno_base_y magno_base_z ENDIF // magno_cabin IF DOES_OBJECT_EXIST magno_base IF DOES_OBJECT_EXIST magno_cabin GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS magno_base 0.0. 0.0 0.0 x y z SET_OBJECT_HEADING magno_cabin magno_cabin_h SET_OBJECT_COORDINATES_AND_VELOCITY magno_cabin x y z IF DOES_OBJECT_EXIST magno_cabin_LOD SET_OBJECT_HEADING magno_cabin_LOD magno_cabin_h SET_OBJECT_COORDINATES_AND_VELOCITY magno_cabin_LOD x y z ENDIF ENDIF ENDIF // arm IF DOES_OBJECT_EXIST magno_arm IF DOES_OBJECT_EXIST magno_cabin GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS magno_cabin 0.0 -2.185 8.51 x y z GET_OBJECT_HEADING magno_cabin magno_arm_h //magno_arm_h += -45.0 SET_OBJECT_COORDINATES_AND_VELOCITY magno_arm x y z SET_OBJECT_ROTATION magno_arm magno_arm_rotate_y 0.0 magno_arm_h IF DOES_OBJECT_EXIST magno_arm_LOD SET_OBJECT_COORDINATES_AND_VELOCITY magno_arm_LOD x y z SET_OBJECT_ROTATION magno_arm_LOD magno_arm_rotate_y 0.0 magno_arm_h ENDIF ENDIF ENDIF // rope IF DOES_OBJECT_EXIST magno_arm SET_ROPE_HEIGHT_FOR_OBJECT magno_arm crane_rope_length GET_ROPE_HEIGHT_FOR_OBJECT magno_arm crane_rope_length ENDIF RELEASE_ENTITY_FROM_ROPE_FOR_OBJECT magno_arm IF DOES_OBJECT_EXIST magno_arm SET_ROPE_HEIGHT_FOR_OBJECT magno_arm crane_rope_length ENDIF IF DOES_OBJECT_EXIST magno_base SET_OBJECT_VELOCITY magno_base 0.0 0.0 0.0 ENDIF RETURN st4_set_baddies_end_position: IF NOT IS_CHAR_DEAD bad_wave1_ped[0] CLEAR_CHAR_TASKS_IMMEDIATELY bad_wave1_ped[0] SET_CHAR_COORDINATES bad_wave1_ped[0] -1638.9423 26.9517 3.0869 SET_CHAR_HEADING bad_wave1_ped[0] 339.6872 OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 -1638.8365 27.1035 2.8213 PEDMOVE_RUN 999999 TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[0] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[1] CLEAR_CHAR_TASKS_IMMEDIATELY bad_wave1_ped[1] SET_CHAR_COORDINATES bad_wave1_ped[1] -1639.8961 21.6694 3.0869 SET_CHAR_HEADING bad_wave1_ped[1] 359.1165 OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 -1639.8961 21.6694 3.5869 PEDMOVE_RUN 999999 TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[1] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CHAR_DEAD bad_wave1_ped[2] CLEAR_CHAR_TASKS_IMMEDIATELY bad_wave1_ped[2] SET_CHAR_COORDINATES bad_wave1_ped[2] -1641.3461 27.0480 3.0869 SET_CHAR_HEADING bad_wave1_ped[2] 331.6584 OPEN_SEQUENCE_TASK temp_seq TASK_GO_STRAIGHT_TO_COORD -1 -1641.3461 27.0480 3.5869 PEDMOVE_RUN 999999 TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE IF NOT IS_CHAR_DEAD buddy TASK_KILL_CHAR_ON_FOOT -1 buddy ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bad_wave1_ped[2] temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF IF NOT IS_CAR_DEAD bad_wave1_car SET_CAR_COORDINATES bad_wave1_car -1642.7059 19.5606 3.4189 SET_CAR_HEADING bad_wave1_car 263.1502 ENDIF temp_int = 0 WHILE temp_int < 3 IF NOT IS_CHAR_DEAD bad_wave1_ped[temp_int] SET_CHAR_DECISION_MAKER bad_wave1_ped[temp_int] tough_dm ENDIF temp_int++ ENDWHILE RETURN wrong_container_dialogue: SWITCH wrong_container_dialogue_flag CASE 0 PRINT_NOW ST4_11 6000 1 // CESAR - 'Are you colour blind? I said the BLUE container, get this out of the way!' wrong_container_dialogue_flag++ BREAK CASE 1 PRINT_NOW ST4_12 6000 1 // CESAR - 'This is the wrong coloured container, get rid of this and try again!' wrong_container_dialogue_flag++ BREAK DEFAULT ENDSWITCH IF wrong_container_dialogue_flag > 1 wrong_container_dialogue_flag = 0 ENDIF wrong_container_timer = 0 RETURN reset_buddy_blip: IF DOES_CHAR_EXIST buddy IF NOT IS_CHAR_DEAD buddy IF DOES_BLIP_EXIST buddy_blip REMOVE_BLIP buddy_blip ENDIF IF buddy_blip_type = 1 ADD_BLIP_FOR_CHAR buddy buddy_blip SET_BLIP_AS_FRIENDLY buddy_blip TRUE ENDIF IF buddy_blip_type = 2 ADD_BLIP_FOR_CHAR buddy buddy_blip SET_BLIP_AS_FRIENDLY buddy_blip TRUE CHANGE_BLIP_DISPLAY buddy_blip BLIP_ONLY ENDIF IF buddy_blip_type = 3 ADD_BLIP_FOR_CHAR buddy buddy_blip SET_BLIP_AS_FRIENDLY buddy_blip TRUE CHANGE_BLIP_DISPLAY buddy_blip NEITHER ENDIF ENDIF ENDIF RETURN // ************************************************************************************************************* // END OF LEVEL GOSUBS - fail, pass, cleanup // ************************************************************************************************************* // FAIL mission_failed_STEAL4: CLEAR_PRINTS IF player_is_in_crane = 2 SET_PLAYER_CONTROL player1 OFF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_ONSCREEN_COUNTER buddy_health remove_player_from_crane = 1 SWITCH failed_condition CASE 1 IF NOT IS_CAR_DEAD buddy_car SET_CAR_TRACTION buddy_car 2.0 IF NOT IS_CHAR_DEAD buddy WARP_CHAR_INTO_CAR buddy buddy_car ENDIF GET_CAR_COORDINATES buddy_car x y z GET_CLOSEST_CAR_NODE x y z x y z SET_CAR_COORDINATES buddy_car x y z SET_CAR_HEADING buddy_car 130.0 TASK_CAR_DRIVE_WANDER buddy buddy_car 40.0 DRIVINGMODE_AVOIDCARS ENDIF BREAK CASE 2 IF NOT IS_CAR_DEAD buddy_car SET_CAR_TRACTION buddy_car 2.0 IF NOT IS_CHAR_DEAD buddy WARP_CHAR_INTO_CAR buddy buddy_car ENDIF GET_CAR_COORDINATES buddy_car x y z GET_CLOSEST_CAR_NODE x y z x y z SET_CAR_COORDINATES buddy_car x y z SET_CAR_HEADING buddy_car 130.0 TASK_CAR_DRIVE_WANDER buddy buddy_car 40.0 DRIVINGMODE_AVOIDCARS ENDIF BREAK CASE 3 temp_int = 0 WHILE temp_int < 6 IF NOT IS_CHAR_DEAD bad_wave1_ped[temp_int] TASK_KILL_CHAR_ON_FOOT bad_wave1_ped[temp_int] scplayer ENDIF temp_int++ ENDWHILE IF NOT IS_CHAR_DEAD extra_baddie[0] TASK_KILL_CHAR_ON_FOOT extra_baddie[0] scplayer ENDIF IF NOT IS_CHAR_DEAD extra_baddie[1] TASK_KILL_CHAR_ON_FOOT extra_baddie[1] scplayer ENDIF BREAK ENDSWITCH IF DOES_VEHICLE_EXIST steal_car DELETE_CAR steal_car ENDIF IF NOT IS_CAR_DEAD open_container1_car DELETE_CAR open_container1_car ENDIF DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE st4_mission_attempts++ SET_PLAYER_CONTROL player1 ON ENDIF SWITCH failed_condition CASE 1 PRINT_NOW ST4_44 5000 1 // the car inside the container got destroyed BREAK CASE 2 PRINT_NOW ST4_03 5000 1 // the steal car was destroyed BREAK CASE 3 PRINT_NOW ST4_02 5000 1 // cesar died BREAK ENDSWITCH PRINT_BIG M_FAIL 5000 1 disable_crane = 1 //WAIT 5000 RETURN // PASS mission_passed_STEAL4: CLEAR_PRINTS SET_AREA_VISIBLE 0 PRINT_WITH_NUMBER_BIG ( M_PASSS ) steal4_reward 5000 1 //"Mission Passed!" ADD_SCORE player1 steal4_reward AWARD_PLAYER_MISSION_RESPECT 5 PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL PLAYER1 flag_steal_mission_counter++ PLAYER_MADE_PROGRESS 1 disable_crane = 0 // allows the crane to be used whenever SWITCH_CAR_GENERATOR steal_car_cargen4 101 REGISTER_MISSION_PASSED STEAL_4 RETURN // CLEANUP mission_cleanup_STEAL4: IF IS_PLAYER_PLAYING player1 SET_CHAR_AREA_VISIBLE scplayer 0 ENDIF SET_AREA_VISIBLE 0 START_NEW_SCRIPT cleanup_audio_lines //CLEAR_PRINTS CLEAR_HELP DISPLAY_HUD TRUE DISPLAY_RADAR TRUE steal4_flag = 0 player_is_in_crane = 0 reset_crane_camera = 0 //disable_crane = 0 // for now disable_crane_exit = 0 finish_crane_loading_script = 0 disable_crane_slide = 0 CLEAR_ONSCREEN_COUNTER buddy_health IF IS_PLAYER_PLAYING player1 SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 FALSE IF NOT IS_CHAR_DEAD extra_baddie[0] TASK_KILL_CHAR_ON_FOOT extra_baddie[0] scplayer ENDIF IF NOT IS_CHAR_DEAD extra_baddie[1] TASK_KILL_CHAR_ON_FOOT extra_baddie[1] scplayer ENDIF ENDIF SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 // peds MARK_CHAR_AS_NO_LONGER_NEEDED buddy MARK_CHAR_AS_NO_LONGER_NEEDED temp_ped temp_int = 0 WHILE temp_int < 6 IF IS_PLAYER_PLAYING player1 IF NOT IS_CHAR_DEAD bad_wave1_ped[temp_int] TASK_KILL_CHAR_ON_FOOT bad_wave1_ped[temp_int] scplayer ENDIF ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED bad_wave1_ped[temp_int] temp_int ++ ENDWHILE MARK_CHAR_AS_NO_LONGER_NEEDED extra_baddie[0] MARK_CHAR_AS_NO_LONGER_NEEDED extra_baddie[1] // vehicles MARK_CAR_AS_NO_LONGER_NEEDED buddy_car MARK_CAR_AS_NO_LONGER_NEEDED temp_car MARK_CAR_AS_NO_LONGER_NEEDED open_container1_car MARK_CAR_AS_NO_LONGER_NEEDED steal_car MARK_CAR_AS_NO_LONGER_NEEDED bad_wave1_car MARK_CAR_AS_NO_LONGER_NEEDED bad_wave1_car2 MARK_CAR_AS_NO_LONGER_NEEDED bad_wave2_car // MARK_CAR_AS_NO_LONGER_NEEDED train //KILL_FX_SYSTEM particle_fx1 //KILL_FX_SYSTEM particle_fx2 SWITCH_RANDOM_TRAINS ON UNLOAD_SPECIAL_CHARACTER 1 MARK_MODEL_AS_NO_LONGER_NEEDED CLUB MARK_MODEL_AS_NO_LONGER_NEEDED SAVANNA MARK_MODEL_AS_NO_LONGER_NEEDED JESTER MARK_MODEL_AS_NO_LONGER_NEEDED SOLAIR MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED SENTINEL MARK_MODEL_AS_NO_LONGER_NEEDED FREIGHT MARK_MODEL_AS_NO_LONGER_NEEDED FREIFLAT MARK_MODEL_AS_NO_LONGER_NEEDED WBDYG1 MARK_MODEL_AS_NO_LONGER_NEEDED PEREN REMOVE_BLIP buddy_Blip REMOVE_BLIP bad_wave2_car_blip REMOVE_BLIP location_blip temp_int = 0 WHILE temp_int < 6 REMOVE_BLIP bad_wave1_ped_blip[temp_int] temp_int++ ENDWHILE REMOVE_BLIP steal_car_blip REMOVE_BLIP container_blip[0] REMOVE_BLIP container_blip[1] REMOVE_BLIP extra_baddie_blip[0] REMOVE_BLIP extra_baddie_blip[1] REMOVE_DECISION_MAKER buddy_dm //REMOVE_DECISION_MAKER baddie_dm //REMOVE_DECISION_MAKER bad_wave2_dm REMOVE_DECISION_MAKER tough_dm REMOVE_DECISION_MAKER empty_dm // === RESTORE ENVIRONMENT SETTINGS === SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_WANTED_MULTIPLIER 1.0 //SWITCH_CAR_GENERATOR gen_car11 101 GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN // ********************************************************************************************************** // DIALOGUE STUFF // ********************************************************************************************************** // STL4_EA OK, CJ, this is the one NICE WORK! // STL4_FA NOT THIS ONE, CJ! // STL4_FB NO LUCK, CJ, TRY ANOTHER! // STL4_FC NOT THIS ONE EITHER, IT MUST BE THE LAST ONE! // STL4_GA HEY! What the fuck do you think you're doing? // STL4_GB HEY, hold it right there! // STL4_GC Stay right there, you thieving bastard! // STL4_HA CJ, I could do with some help! // STL4_HB Give me a hand with these guys, CJ! // STL4_HC could do with a little help, CJ! // STL4_JA Let's just grab the car and go! // STL4_JB Let's just get the car and bug out! // STL4_KA CJ, that train's gonna hit the car! // STL4_KB CJ, The car's on the tracks! // STL4_NA Piece of cake! // STL4_NB Walk in the park! STEAL4_process_conversations: SWITCH active_conversation CASE 1 GOSUB STEAL4_process_conversation_1 BREAK CASE 2 GOSUB STEAL4_process_conversation_2 BREAK CASE 3 GOSUB STEAL4_process_conversation_3 BREAK CASE 4 GOSUB STEAL4_process_conversation_4 BREAK CASE 5 GOSUB STEAL4_process_conversation_5 BREAK CASE 6 GOSUB STEAL4_process_conversation_6 BREAK CASE 7 GOSUB STEAL4_process_conversation_7 BREAK DEFAULT // do fuck all - resets the conversation_status if it needs to. IF NOT conversation_status = CONVERSATION_INITIALISE conversation_status = CONVERSATION_INITIALISE ENDIF BREAK ENDSWITCH RETURN STEAL4_process_conversation_1: // ********* CONTROL MECHANISM FOR CONVERSATION **************** SWITCH conversation_status CASE CONVERSATION_INITIALISE play_audio_flag = 0 conversation_status = CONVERSATION_PLAYING BREAK CASE CONVERSATION_PLAYING // check if we should pause conversation IF NOT IS_CHAR_DEAD buddy IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer buddy 15.0 15.0 FALSE conversation_status = CONVERSATION_PAUSED ENDIF ENDIF // check if we should finish conversation IF IS_CHAR_DEAD buddy conversation_status = CONVERSATION_FINISHED ENDIF BREAK CASE CONVERSATION_PAUSED // check if we should unpause IF NOT IS_CHAR_DEAD buddy IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer buddy 10.0 10.0 FALSE conversation_status = CONVERSATION_PLAYING ENDIF ENDIF //check if we should finish conversation IF IS_CHAR_DEAD buddy conversation_status = CONVERSATION_FINISHED ENDIF BREAK CASE CONVERSATION_FINISHED active_conversation = 0 BREAK CASE CONVERSATION_FINISH_GRACEFULLY IF HAS_MISSION_AUDIO_FINISHED 1 conversation_status = CONVERSATION_FINISHED active_conversation = 0 ENDIF BREAK ENDSWITCH // *********** PLAY THE AUDIO ********************* SWITCH conversation_flag CASE 0 $play_audio_text = &STL4_AA // C'mon, esse, you can drive! play_audio_sound = SOUND_STL4_AA play_audio_ped = buddy play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK CASE 1 $play_audio_text = &STL4_AB // Don't I always! play_audio_sound = SOUND_STL4_AB play_audio_ped = scplayer play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK DEFAULT conversation_status = CONVERSATION_FINISHED GOSUB STEAL4_play_conversation_audio BREAK ENDSWITCH RETURN STEAL4_process_conversation_2: // ********* CONTROL MECHANISM FOR CONVERSATION **************** SWITCH conversation_status CASE CONVERSATION_INITIALISE play_audio_flag = 0 conversation_status = CONVERSATION_PLAYING BREAK CASE CONVERSATION_PLAYING // check if we should pause conversation // IF NOT IS_CHAR_IN_ANY_CAR scplayer // conversation_status = CONVERSATION_PAUSED // ELSE // IF NOT IS_CHAR_DEAD buddy // STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car // IF NOT IS_CHAR_IN_CAR buddy car // conversation_status = CONVERSATION_PAUSED // ENDIF // ENDIF // ENDIF IF NOT IS_CHAR_DEAD buddy IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D buddy scplayer 5.0 5.0 5.0 FALSE conversation_status = CONVERSATION_PAUSED ENDIF ENDIF // check if we should finish conversation IF IS_CHAR_DEAD buddy conversation_status = CONVERSATION_FINISHED ENDIF BREAK CASE CONVERSATION_PAUSED // check if we should unpause // IF IS_CHAR_IN_ANY_CAR scplayer // STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car // IF NOT IS_CHAR_DEAD buddy // IF IS_CHAR_IN_CAR buddy car // conversation_status = CONVERSATION_PLAYING // ENDIF // ENDIF // ENDIF IF NOT IS_CHAR_DEAD buddy IF LOCATE_CHAR_ANY_MEANS_CHAR_3D buddy scplayer 5.0 5.0 5.0 FALSE conversation_status = CONVERSATION_PLAYING ENDIF ENDIF //check if we should finish conversation IF IS_CHAR_DEAD buddy conversation_status = CONVERSATION_FINISHED ENDIF BREAK CASE CONVERSATION_FINISHED active_conversation = 0 BREAK CASE CONVERSATION_FINISH_GRACEFULLY IF HAS_MISSION_AUDIO_FINISHED 1 conversation_status = CONVERSATION_FINISHED active_conversation = 0 ENDIF BREAK ENDSWITCH // *********** PLAY THE AUDIO ********************* SWITCH conversation_flag CASE 0 $play_audio_text = &STL4_BA // How we going to steal a car off a container ship, holmes? play_audio_sound = SOUND_STL4_BA play_audio_ped = scplayer play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK CASE 1 $play_audio_text = &STL4_BB // Same way they got in on use a dockside crane! play_audio_sound = SOUND_STL4_BB play_audio_ped = buddy play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK CASE 2 $play_audio_text = &STL4_BC // Oh man, those things are real high up I ain't to good with ladders! play_audio_sound = SOUND_STL4_BC play_audio_ped = buddy play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK CASE 3 $play_audio_text = &STL4_BD // Ok, I'll use the crane, you be ready to crack the container. play_audio_sound = SOUND_STL4_BD play_audio_ped = buddy play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK DEFAULT conversation_status = CONVERSATION_FINISHED GOSUB STEAL4_play_conversation_audio BREAK ENDSWITCH RETURN STEAL4_process_conversation_3: // ********* CONTROL MECHANISM FOR CONVERSATION **************** SWITCH conversation_status CASE CONVERSATION_INITIALISE play_audio_flag = 0 conversation_status = CONVERSATION_PLAYING BREAK CASE CONVERSATION_PLAYING // check if we should pause conversation // check if we should finish conversation IF IS_CHAR_DEAD buddy conversation_status = CONVERSATION_FINISHED ENDIF BREAK CASE CONVERSATION_PAUSED BREAK CASE CONVERSATION_FINISHED active_conversation = 0 BREAK CASE CONVERSATION_FINISH_GRACEFULLY IF HAS_MISSION_AUDIO_FINISHED 1 conversation_status = CONVERSATION_FINISHED active_conversation = 0 ENDIF BREAK ENDSWITCH // *********** PLAY THE AUDIO ********************* SWITCH conversation_flag CASE 0 $play_audio_text = &STL4_CA // This is the ship, CJ! play_audio_sound = SOUND_STL4_CA play_audio_ped = buddy play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK CASE 1 $play_audio_text = &STL4_CB // I'll use that crane give me a second. play_audio_sound = SOUND_STL4_CB play_audio_ped = scplayer play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK CASE 2 $play_audio_text = &STL4_CC // Be quick, I feel a little exposed out here! play_audio_sound = SOUND_STL4_CC play_audio_ped = buddy play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK DEFAULT conversation_status = CONVERSATION_FINISHED GOSUB STEAL4_play_conversation_audio BREAK ENDSWITCH RETURN STEAL4_process_conversation_4: // ********* CONTROL MECHANISM FOR CONVERSATION **************** SWITCH conversation_status CASE CONVERSATION_INITIALISE play_audio_flag = 0 conversation_status = CONVERSATION_PLAYING BREAK CASE CONVERSATION_PLAYING // check if we should pause conversation // check if we should finish conversation IF IS_CHAR_DEAD buddy conversation_status = CONVERSATION_FINISHED ENDIF BREAK CASE CONVERSATION_PAUSED BREAK CASE CONVERSATION_FINISHED active_conversation = 0 BREAK CASE CONVERSATION_FINISH_GRACEFULLY IF HAS_MISSION_AUDIO_FINISHED 1 conversation_status = CONVERSATION_FINISHED active_conversation = 0 ENDIF BREAK ENDSWITCH // *********** PLAY THE AUDIO ********************* SWITCH conversation_flag CASE 0 $play_audio_text = &STL4_DA // CESAR! NONE OF THESE IS MARKED WITH SPRAY PAINT! play_audio_sound = SOUND_STL4_DA play_audio_ped = scplayer play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK CASE 1 $play_audio_text = &STL4_DB // WE'LL JUST HAVE TO TRY ONE AT A TIME! play_audio_sound = SOUND_STL4_DB play_audio_ped = buddy play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK // CASE 2 // $play_audio_text = &STL4_DC // Terrific! // play_audio_sound = SOUND_STL4_DC // play_audio_ped = scplayer // play_audio_attached = 0 // GOSUB STEAL4_play_conversation_audio // BREAK DEFAULT conversation_status = CONVERSATION_FINISHED GOSUB STEAL4_play_conversation_audio BREAK ENDSWITCH RETURN STEAL4_process_conversation_5: // ********* CONTROL MECHANISM FOR CONVERSATION **************** SWITCH conversation_status CASE CONVERSATION_INITIALISE play_audio_flag = 0 conversation_status = CONVERSATION_PLAYING BREAK CASE CONVERSATION_PLAYING // check if we should pause conversation IF NOT IS_CHAR_IN_ANY_CAR scplayer conversation_status = CONVERSATION_PAUSED ELSE IF NOT IS_CHAR_DEAD buddy STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF NOT IS_CHAR_IN_CAR buddy car conversation_status = CONVERSATION_PAUSED ENDIF ENDIF ENDIF // check if we should finish conversation IF IS_CHAR_DEAD buddy conversation_status = CONVERSATION_FINISHED ENDIF BREAK CASE CONVERSATION_PAUSED // check if we should unpause IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF NOT IS_CHAR_DEAD buddy IF IS_CHAR_IN_CAR buddy car conversation_status = CONVERSATION_PLAYING ENDIF ENDIF ENDIF //check if we should finish conversation IF IS_CHAR_DEAD buddy conversation_status = CONVERSATION_FINISHED ENDIF BREAK CASE CONVERSATION_FINISHED active_conversation = 0 BREAK CASE CONVERSATION_FINISH_GRACEFULLY IF HAS_MISSION_AUDIO_FINISHED 1 conversation_status = CONVERSATION_FINISHED active_conversation = 0 ENDIF BREAK ENDSWITCH // *********** PLAY THE AUDIO ********************* SWITCH conversation_flag CASE 0 $play_audio_text = &STL4_LA // There must be an easier way to earn a living. play_audio_sound = SOUND_STL4_LA play_audio_ped = buddy play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK CASE 1 $play_audio_text = &STL4_LB // Sure, holmes, you could sit in an offfice play_audio_sound = SOUND_STL4_LB play_audio_ped = scplayer play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK CASE 2 $play_audio_text = &STL4_LC // and be found dead at your desk in ten years' time! play_audio_sound = SOUND_STL4_LC play_audio_ped = scplayer play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK CASE 3 $play_audio_text = &STL4_LD // I hear you, esse! play_audio_sound = SOUND_STL4_LD play_audio_ped = buddy play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK DEFAULT conversation_status = CONVERSATION_FINISHED GOSUB STEAL4_play_conversation_audio BREAK ENDSWITCH RETURN STEAL4_process_conversation_6: // ********* CONTROL MECHANISM FOR CONVERSATION **************** SWITCH conversation_status CASE CONVERSATION_INITIALISE play_audio_flag = 0 conversation_status = CONVERSATION_PLAYING BREAK CASE CONVERSATION_PLAYING // check if we should pause conversation IF NOT IS_CHAR_IN_ANY_CAR scplayer conversation_status = CONVERSATION_FINISHED ELSE IF NOT IS_CHAR_DEAD buddy STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF NOT IS_CHAR_IN_CAR buddy car conversation_status = CONVERSATION_FINISHED ENDIF ENDIF ENDIF // check if we should finish conversation IF IS_CHAR_DEAD buddy conversation_status = CONVERSATION_FINISHED ENDIF BREAK CASE CONVERSATION_PAUSED BREAK CASE CONVERSATION_FINISHED active_conversation = 0 BREAK CASE CONVERSATION_FINISH_GRACEFULLY IF HAS_MISSION_AUDIO_FINISHED 1 conversation_status = CONVERSATION_FINISHED active_conversation = 0 ENDIF BREAK ENDSWITCH // *********** PLAY THE AUDIO ********************* SWITCH conversation_flag CASE 0 $play_audio_text = &STL4_LA // There must be an easier way to earn a living. play_audio_sound = SOUND_STL4_LA play_audio_ped = buddy play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK CASE 1 $play_audio_text = &STL4_LB // Sure, holmes, you could sit in an offfice play_audio_sound = SOUND_STL4_LB play_audio_ped = scplayer play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK CASE 2 $play_audio_text = &STL4_LC // and be found dead at your desk in ten years' time! play_audio_sound = SOUND_STL4_LC play_audio_ped = scplayer play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK CASE 3 $play_audio_text = &STL4_LD // I hear you, esse! play_audio_sound = SOUND_STL4_LD play_audio_ped = buddy play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK // CASE 4 // $play_audio_text = &STL4_LE // Let's give these cops a run for their money! // play_audio_sound = SOUND_STL4_LE // play_audio_ped = buddy // play_audio_attached = 0 // GOSUB STEAL4_play_conversation_audio // BREAK DEFAULT conversation_status = CONVERSATION_FINISHED GOSUB STEAL4_play_conversation_audio BREAK ENDSWITCH RETURN STEAL4_process_conversation_7: // ********* CONTROL MECHANISM FOR CONVERSATION **************** SWITCH conversation_status CASE CONVERSATION_INITIALISE play_audio_flag = 0 conversation_status = CONVERSATION_PLAYING BREAK CASE CONVERSATION_PLAYING // check if we should pause conversation IF NOT IS_CHAR_IN_ANY_CAR scplayer conversation_status = CONVERSATION_FINISHED ELSE IF NOT IS_CHAR_DEAD buddy STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF NOT IS_CHAR_IN_CAR buddy car conversation_status = CONVERSATION_FINISHED ENDIF ENDIF ENDIF // check if we should finish conversation IF IS_CHAR_DEAD buddy conversation_status = CONVERSATION_FINISHED ENDIF BREAK CASE CONVERSATION_PAUSED BREAK CASE CONVERSATION_FINISHED active_conversation = 0 BREAK CASE CONVERSATION_FINISH_GRACEFULLY IF HAS_MISSION_AUDIO_FINISHED 1 conversation_status = CONVERSATION_FINISHED active_conversation = 0 ENDIF BREAK ENDSWITCH // *********** PLAY THE AUDIO ********************* SWITCH conversation_flag CASE 0 $play_audio_text = &STL4_MA // Hey, CJ! play_audio_sound = SOUND_STL4_MA play_audio_ped = buddy play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK CASE 1 $play_audio_text = &STL4_MB // We get paid on the condition of the car, holmes! play_audio_sound = SOUND_STL4_MB play_audio_ped = buddy play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK CASE 2 $play_audio_text = &STL4_MC // Be more careful! play_audio_sound = SOUND_STL4_MC play_audio_ped = buddy play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK CASE 3 $play_audio_text = &STL4_MD // Yo, who's driving? play_audio_sound = SOUND_STL4_MD play_audio_ped = buddy play_audio_attached = 0 GOSUB STEAL4_play_conversation_audio BREAK DEFAULT conversation_status = CONVERSATION_FINISHED GOSUB STEAL4_play_conversation_audio BREAK ENDSWITCH RETURN // ************************* DONT NEED TO CHANGE ANYTHING BELOW ****************************** // QUIT CURRENT CONVERSATION GRACEFULLY // ------------------------------------- // This gosub is useful if you want to finish a conversation in script manually. // It will allow the current line of dialog to finish playing. // STEAL4_quit_current_conversation_gracefully: IF NOT active_conversation = 0 conversation_status = CONVERSATION_FINISH_GRACEFULLY ENDIF RETURN // QUIT CURRENT CONVERSATION // -------------------------- // This gosub will finish the current conversation immediately. // STEAL4_quit_current_conversation_now: IF NOT active_conversation = 0 conversation_status = CONVERSATION_FINISHED ENDIF RETURN // PLAY AUDIO GOSUB // -------------------------- // Handles all the loading/playing/unloading of an audio thingy // // input parameters LVAR_TEXT_LABEL play_audio_text LVAR_INT play_audio_sound LVAR_INT play_audio_ped LVAR_INT play_audio_attached // workings LVAR_INT play_audio_flag STEAL4_play_conversation_audio: IF NOT conversation_status = CONVERSATION_FINISHED SWITCH play_audio_flag CASE -1 CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 play_audio_ped BREAK CASE 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 play_audio_sound IF NOT IS_CHAR_DEAD play_audio_ped //DISABLE_CHAR_SPEECH play_audio_ped FALSE ENDIF play_audio_flag++ BREAK CASE 1 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW $play_audio_text 3000 1 play_audio_flag++ ENDIF BREAK CASE 2 IF HAS_MISSION_AUDIO_FINISHED 1 play_audio_flag++ ELSE IF DOES_CHAR_EXIST play_audio_ped IF IS_CHAR_DEAD play_audio_ped play_audio_flag++ ENDIF ENDIF ENDIF BREAK CASE 3 CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS IF NOT IS_CHAR_DEAD play_audio_ped //ENABLE_CHAR_SPEECH play_audio_ped ENDIF play_audio_flag++ BREAK CASE 4 // make the conversation move onwards if it's not paused. IF NOT conversation_status = CONVERSATION_PAUSED conversation_flag++ play_audio_flag = 0 ENDIF BREAK ENDSWITCH ELSE IF NOT play_audio_flag = 0 CLEAR_MISSION_AUDIO 1 ENDIF IF NOT IS_CHAR_DEAD play_audio_ped //ENABLE_CHAR_SPEECH play_audio_ped ENDIF CLEAR_THIS_PRINT $play_audio_text play_audio_flag = 0 conversation_flag = 0 ENDIF RETURN // PLAY SINGLE LINE AUDIO // -------------------------- // Handles all the loading/playing/unloading of an audio thingy for a single line of dialogue, not in conversation. // // input parameters LVAR_TEXT_LABEL play_single_audio_text LVAR_INT play_single_audio_sound LVAR_INT play_single_audio_ped LVAR_INT play_single_audio_attached LVAR_INT play_single_audio_flag // when at 4 dialog has finished STEAL4_play_single_audio: SWITCH play_single_audio_flag CASE -1 CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 play_single_audio_ped BREAK CASE 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 play_single_audio_sound IF NOT IS_CHAR_DEAD play_single_audio_ped DISABLE_CHAR_SPEECH play_single_audio_ped FALSE ENDIF play_single_audio_flag++ BREAK CASE 1 IF HAS_MISSION_AUDIO_LOADED 1 IF NOT IS_CHAR_DEAD play_single_audio_ped IF NOT IS_CHAR_TALKING play_single_audio_ped IF play_single_audio_attached = 1 ATTACH_MISSION_AUDIO_TO_CHAR 1 play_single_audio_ped ENDIF ENDIF ENDIF PLAY_MISSION_AUDIO 1 PRINT_NOW $play_single_audio_text 10000 1 play_single_audio_flag++ ENDIF BREAK CASE 2 IF HAS_MISSION_AUDIO_FINISHED 1 play_single_audio_flag++ ELSE IF DOES_CHAR_EXIST play_single_audio_ped IF IS_CHAR_DEAD play_single_audio_ped play_single_audio_flag++ ENDIF ENDIF ENDIF BREAK CASE 3 CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS IF NOT IS_CHAR_DEAD play_single_audio_ped ENABLE_CHAR_SPEECH play_single_audio_ped ENDIF play_single_audio_flag++ BREAK ENDSWITCH RETURN } MISSION_START // ***************************************************************************************** // ***************************** steal5 **************************************************** // ***************************************************************************************** // ***************************************************************************************** // *******************************STINGER TRAP********************************************** // ***************************************************************************************** SCRIPT_NAME steal5 // Mission start stuff GOSUB mission_start_steal5 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_steal5_failed ENDIF GOSUB mission_cleanup_steal5 MISSION_END { // Variables for mission //people LVAR_INT s5_target_car s5_enemy s5_stinger s5_random_car s5_random_car2 s5_temp_car //blips LVAR_INT s5_blip //flags LVAR_INT s5_goals s5_control_flag s5_skip_cutscene_flag s5_deathcheck_flag LVAR_INT s5_is_plyr_in_car VAR_INT s5_stingers_left LVAR_INT s5_controlling_woman LVAR_INT s5_trigger_stingers LVAR_INT s5_no_plates_flag s5_no_plates LVAR_INT s5_fucking_fudge_flag //speech LVAR_INT s5_speech_goals s5_speech_flag s5_speech_control_flag s5_random_last_label LVAR_TEXT_LABEL s5_print_label[6] LVAR_INT s5_audio_label[6] LVAR_INT s5_last_label LVAR_INT s5_slot1 s5_slot2 s5_slot_load s5_play_which_slot LVAR_INT s5_stinger_sounds //coords LVAR_FLOAT s5_stinger_x1 s5_stinger_x2 s5_stinger_y1 s5_stinger_y2 LVAR_FLOAT s5_x s5_y s5_z LVAR_FLOAT s5_player_x s5_player_y s5_player_z //sequences/decision makers/threat lists/attractors/groups LVAR_INT s5_seq // ****************************************Mission Start************************************ mission_start_steal5: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT STEAL5 IF flag_player_on_mission = 0 CREATE_OBJECT temp_stinger2 -2025.8 169.2 27.7 s5_stinger ADD_BLIP_FOR_COORD -2025.8 169.2 27.7 s5_blip ENDIF CLEAR_PRINTS WAIT 0 // *************************************Set Flags/variables********************************* s5_goals = 0 s5_control_flag = 0 s5_skip_cutscene_flag = 0 s5_deathcheck_flag = 0 s5_is_plyr_in_car = 0 s5_stingers_left = 3 s5_controlling_woman = 0 s5_trigger_stingers = 0 s5_no_plates_flag = 0 s5_no_plates = 0 s5_fucking_fudge_flag = 0 s5_stinger_x1 = 0.0 s5_stinger_x2 = 0.0 s5_stinger_y1 = 0.0 s5_stinger_y2 = 0.0 s5_x = 0.0 s5_y = 0.0 s5_z = 0.0 s5_player_x = 0.0 s5_player_y = 0.0 s5_player_z = 0.0 s5_speech_goals = 0 s5_speech_flag = 0 s5_speech_control_flag = 0 s5_random_last_label = 0 s5_last_label = 0 s5_slot1 = 0 s5_slot2 = 0 s5_slot_load = 0 s5_play_which_slot = 0 s5_stinger_sounds = 0 // ****************************************START OF CUTSCENE******************************** MAKE_PLAYER_GANG_DISAPPEAR SET_AREA_VISIBLE 1 SET_CHAR_AREA_VISIBLE scplayer 1 LOAD_SCENE -2031.0 149.0 29.0 LOAD_CUTSCENE STEAL_5 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 SET_CHAR_AREA_VISIBLE scplayer 0 CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF MAKE_PLAYER_GANG_REAPPEAR // ****************************************END OF CUTSCENE********************************** SET_FADING_COLOUR 0 0 0 WAIT 0 //------------------REQUEST_MODELS ------------------------------ REQUEST_MODEL STRATUM REQUEST_MODEL TAMPA REQUEST_MODEL HFYRI REQUEST_MODEL temp_stinger2 REQUEST_MODEL CELLPHONE LOAD_MISSION_AUDIO 3 SOUND_BANK_STINGER WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE LOAD_ALL_MODELS_NOW /* CREATE_CAR TAMPA -2025.8 169.2 27.7 s5_temp_car WARP_CHAR_INTO_CAR scplayer s5_temp_car VAR_FLOAT s5_a s5_b s5_c VAR_INT s5_d s5_a = 0.0 s5_b = 0.0 s5_c = 0.0 s5_d = 0 VIEW_FLOAT_VARIABLE s5_a s5_a VIEW_FLOAT_VARIABLE s5_b s5_b VIEW_FLOAT_VARIABLE s5_c s5_c VIEW_INTEGER_VARIABLE s5_d s5_d SWITCH_WIDESCREEN OFF SET_VEHICLE_CAMERA_TWEAK s5_temp_car 10.0 10.0 10.0 DO_FADE 0 FADE_IN testy: WAIT 0 WHILE IS_BUTTON_PRESSED PAD1 DPADLEFT WAIT 0 s5_a = s5_a - 1.0 ENDWHILE WHILE IS_BUTTON_PRESSED PAD1 DPADRIGHT WAIT 0 s5_a = s5_a + 1.0 ENDWHILE WHILE IS_BUTTON_PRESSED PAD1 DPADDOWN WAIT 0 s5_b = s5_b + 1.0 ENDWHILE WHILE IS_BUTTON_PRESSED PAD1 DPADUP WAIT 0 s5_b = s5_b - 1.0 ENDWHILE WHILE IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1 WAIT 0 s5_c = s5_c - 1.0 ENDWHILE WHILE IS_BUTTON_PRESSED PAD1 RIGHTSHOULDER1 WAIT 0 s5_c = s5_c + 1.0 ENDWHILE WHILE IS_BUTTON_PRESSED PAD1 RIGHTSHOCK WAIT 0 IF s5_d = 0 RESET_VEHICLE_CAMERA_TWEAK s5_d = 1 ENDIF ENDWHILE IF NOT IS_CAR_DEAD s5_temp_car IF s5_d = 1 SET_VEHICLE_CAMERA_TWEAK s5_temp_car s5_a s5_b s5_c s5_d = 0 ENDIF ENDIF GOTO testy */ CLEAR_AREA -2025.8 169.2 27.7 5.0 TRUE s5_no_plates = TAMPA GOSUB s5_my_number_plates CREATE_CAR TAMPA -2025.8 169.2 27.7 s5_temp_car CLEAR_AREA -1913.5 -593.8 36.9 5.0 TRUE s5_no_plates = STRATUM GOSUB s5_my_number_plates CREATE_CAR STRATUM -1913.5 -593.8 36.9 s5_target_car //LOAD_PATH_NODES_IN_AREA -1286.0 -639.5 -3447.2 1835.8 SET_CAR_HEADING s5_target_car 180.0 SET_CAN_RESPRAY_CAR s5_target_car FALSE SET_CAR_CAN_GO_AGAINST_TRAFFIC s5_target_car TRUE LOCK_CAR_DOORS s5_target_car CARLOCK_LOCKOUT_PLAYER_ONLY SET_LOAD_COLLISION_FOR_CAR_FLAG s5_target_car FALSE ADD_BLIP_FOR_CAR s5_target_car s5_blip SET_BLIP_AS_FRIENDLY s5_blip FALSE s5_is_plyr_in_car = 1 SET_CAR_DRIVING_STYLE s5_target_car DRIVINGMODE_AVOIDCARS SET_CAR_ONLY_DAMAGED_BY_PLAYER s5_target_car TRUE ADD_STUCK_CAR_CHECK_WITH_WARP s5_target_car 0.5 4000 TRUE TRUE TRUE 7 CREATE_CHAR_INSIDE_CAR s5_target_car PEDTYPE_CIVFEMALE HFYRI s5_enemy SET_LOAD_COLLISION_FOR_CHAR_FLAG s5_enemy TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE s5_enemy FALSE DISPLAY_ONSCREEN_COUNTER_WITH_STRING s5_stingers_left COUNTER_DISPLAY_NUMBER STE5_04 //Stingers Remaining: PRINT_NOW ( STE5_12 ) 7000 1 //Get in the car modded to use stingers. CLEAR_AREA -2028.6 162.9 27.8 1.0 TRUE SET_CHAR_COORDINATES scplayer -2028.6 162.9 27.8 SET_CHAR_HEADING scplayer 336.6 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON CHANGE_GARAGE_TYPE amumis GARAGE_FOR_SCRIPT_TO_OPEN_AND_CLOSE DO_FADE 500 FADE_IN /* //////////////// DEBUG ////////////////////////// s5_goals = 10 IF NOT IS_CAR_DEAD s5_temp_car WARP_CHAR_INTO_CAR scplayer s5_temp_car ENDIF //////////////// DEBUG ////////////////////////// */ timerb = 0 mission_steal5_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_steal5_passed ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// DEATHCHECKS /////////////////////////////////////////////////////////////////////////////////// GOSUB s5_death_checks IF s5_deathcheck_flag = 1 GOTO mission_steal5_failed ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////MAKING THE STINGER WORK///////////////////////////////////////////////////////////////////////// IF s5_goals = 0 IF s5_trigger_stingers = 1 GOSUB s5_burst_tyres ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////Waiting for player to burst the tyres of the target car///////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF s5_goals = 0 ////////////////////////// blippage ////////////////////// IF s5_is_plyr_in_car = 1 IF NOT IS_CHAR_IN_CAR scplayer s5_temp_car REMOVE_BLIP s5_blip ADD_BLIP_FOR_CAR s5_temp_car s5_blip SET_BLIP_AS_FRIENDLY s5_blip TRUE IF timerb > 14000 PRINT_NOW ( STE5_06 ) 4000 1 //You need to be in the car modded to use stingers. ENDIF CLEAR_HELP s5_is_plyr_in_car = 0 ENDIF ENDIF IF s5_is_plyr_in_car = 0 IF IS_CHAR_IN_CAR scplayer s5_temp_car REMOVE_BLIP s5_blip ADD_BLIP_FOR_CAR s5_target_car s5_blip SET_BLIP_AS_FRIENDLY s5_blip FALSE IF timerb > 14000 PRINT_NOW ( STE5_07 ) 4000 1 //Burst the tyres of the target car. ENDIF s5_is_plyr_in_car = 1 ENDIF ENDIF ////////////////////////// MISC FAILURE ///////////// IF timerb > 14000 IF s5_stingers_left = 3 IF IS_CHAR_IN_CAR scplayer s5_temp_car AND s5_trigger_stingers = 0 IF NOT IS_MINIGAME_IN_PROGRESS PRINT_HELP_FOREVER STE5_03 // Press ~m~~widget_stinger~ to drop a Stinger. ENDIF ENDIF s5_trigger_stingers = 1 ELSE CLEAR_HELP ENDIF ENDIF IF s5_stingers_left = 0 IF timera > 5000 CLEAR_PRINTS PRINT_NOW ( STE5_05 ) 4000 1 //You ran out of stingers. GOTO mission_steal5_failed ENDIF ENDIF GOSUB s5_speed_up_slow_down GOSUB s5_making_sure_car_doesnt_drown GOSUB s5_telling_woman_where_to_go //////////////// MAIN PART ////////////////////// IF s5_control_flag = 0 IF IS_CHAR_IN_CAR scplayer s5_temp_car PRINT_NOW ( STE5_01 ) 7000 1 //Burst the tyres of the target car using stingers. PRINT_WITH_NUMBER ( STE5_02 ) 3 7000 1 //You only have 6 stingers available. timerb = 0 s5_control_flag = 1 ENDIF ENDIF IF s5_control_flag = 1 //////////////////////////checking to see if tyres are burst or not IF IS_CAR_TYRE_BURST s5_target_car FRONT_RIGHT_WHEEL LOCK_CAR_DOORS s5_target_car CARLOCK_UNLOCKED REMOVE_STUCK_CAR_CHECK s5_target_car IF NOT IS_CHAR_DEAD s5_enemy OPEN_SEQUENCE_TASK s5_seq TASK_LEAVE_ANY_CAR -1 TASK_SMART_FLEE_CHAR -1 scplayer 100.0 100000 CLOSE_SEQUENCE_TASK s5_seq PERFORM_SEQUENCE_TASK s5_enemy s5_seq CLEAR_SEQUENCE_TASK s5_seq REMOVE_BLIP s5_blip ADD_BLIP_FOR_CAR s5_target_car s5_blip SET_BLIP_AS_FRIENDLY s5_blip TRUE SET_CAR_WATERTIGHT s5_target_car FALSE PRINT_NOW ( STE5_13 ) 7000 1 //Get in the car. timera = 0 s5_control_flag = 0 s5_goals = 1 ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////cutscene with player telling cesar he is going to fix the car/////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF s5_goals = 1 IF s5_control_flag = 0 IF NOT IS_CHAR_IN_ANY_CAR scplayer IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer s5_target_car 5.0 5.0 FALSE s5_control_flag = 1 ENDIF ENDIF GOSUB s5_burst_tyres ENDIF IF s5_control_flag = 1 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_MISSION_AUDIO 3 CLEAR_PRINTS s5_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SHUT_ALL_CHARS_UP TRUE s5_skip_cutscene_flag = 1 SKIP_CUTSCENE_START TASK_USE_MOBILE_PHONE scplayer TRUE CLEAR_HELP CLEAR_ONSCREEN_COUNTER s5_stingers_left //phone ringing s5_speech_goals = 3 s5_speech_control_flag = 0 GOSUB s5_dialogue_setup timera = 0 s5_control_flag = 2 ENDIF IF s5_control_flag = 2 IF timera > 2000 IF s5_speech_goals = 0 //cutscene dialogue s5_speech_goals = 1 s5_speech_control_flag = 0 GOSUB s5_dialogue_setup s5_control_flag = 3 ENDIF ENDIF ENDIF IF s5_control_flag = 3 IF s5_speech_goals = 0 TASK_USE_MOBILE_PHONE scplayer FALSE s5_control_flag = 4 ENDIF ENDIF IF s5_control_flag = 4 GET_SCRIPT_TASK_STATUS scplayer TASK_USE_MOBILE_PHONE task_status IF task_status = FINISHED_TASK OPEN_SEQUENCE_TASK s5_seq TASK_GOTO_CAR -1 s5_target_car -2 1.0 CLOSE_SEQUENCE_TASK s5_seq PERFORM_SEQUENCE_TASK scplayer s5_seq CLEAR_SEQUENCE_TASK s5_seq SET_MUSIC_DOES_FADE FALSE DRAW_SUBTITLES_BEFORE_FADE FALSE DO_FADE 700 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_MISSION_AUDIO 3 SOUND_FIT_TYRE WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE GOSUB s5_death_checks IF s5_deathcheck_flag = 1 GOTO mission_steal5_failed ENDIF timera = 0 s5_control_flag = 5 ENDIF ENDIF IF s5_control_flag = 5 IF timera > 1000 PLAY_MISSION_AUDIO 3 //cutscene dialogue s5_speech_goals = 2 s5_speech_control_flag = 0 GOSUB s5_dialogue_setup s5_control_flag = 6 ENDIF ENDIF IF s5_control_flag = 6 IF s5_speech_goals = 0 s5_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB s5_death_checks IF s5_deathcheck_flag = 1 GOTO mission_steal5_failed ENDIF SET_MUSIC_DOES_FADE TRUE DRAW_SUBTITLES_BEFORE_FADE TRUE IF s5_skip_cutscene_flag = 1 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS s5_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB s5_death_checks IF s5_deathcheck_flag = 1 GOTO mission_steal5_failed ENDIF CLEAR_PRINTS ENDIF CLEAR_MISSION_AUDIO 3 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer DELETE_CHAR s5_enemy IF NOT IS_CAR_DEAD s5_target_car WARP_CHAR_INTO_CAR scplayer s5_target_car SET_CAR_ONLY_DAMAGED_BY_PLAYER s5_target_car FALSE FIX_CAR_TYRE s5_target_car FRONT_RIGHT_WHEEL FIX_CAR_TYRE s5_target_car FRONT_LEFT_WHEEL FIX_CAR_TYRE s5_target_car REAR_LEFT_WHEEL FIX_CAR_TYRE s5_target_car REAR_RIGHT_WHEEL ENDIF DELETE_OBJECT s5_stinger GET_CHAR_COORDINATES scplayer s5_x s5_y s5_z LOAD_SCENE s5_x s5_y s5_z MARK_CAR_AS_NO_LONGER_NEEDED s5_temp_car MARK_CHAR_AS_NO_LONGER_NEEDED s5_enemy MARK_MODEL_AS_NO_LONGER_NEEDED TAMPA MARK_MODEL_AS_NO_LONGER_NEEDED HFYRI MARK_MODEL_AS_NO_LONGER_NEEDED temp_stinger2 SET_CAR_ONLY_DAMAGED_BY_PLAYER s5_target_car FALSE SHUT_ALL_CHARS_UP FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON REMOVE_BLIP s5_blip ADD_BLIP_FOR_COORD -2026.9 179.1 27.5 s5_blip s5_is_plyr_in_car = 1 CLEAR_PRINTS PRINT_NOW ( STE5_11 ) 7000 1 //Take the target car back to the Garage. DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB s5_death_checks IF s5_deathcheck_flag = 1 GOTO mission_steal5_failed ENDIF s5_control_flag = 0 s5_goals = 2 CHECKPOINT_SAVE 1 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////Waiting for player to take car back to garage/////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF s5_goals = 2 // debug // IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q IF NOT IS_CAR_DEAD s5_target_car SET_CAR_COORDINATES s5_target_car -2011.8 176.5 26.6 SET_CAR_HEADING s5_target_car 97.7 ENDIF ENDIF //waiting for player to reach garage IF s5_control_flag = 0 IF NOT IS_CAR_DEAD s5_target_car IF IS_CHAR_IN_CAR scplayer s5_target_car IF LOCATE_CHAR_IN_CAR_3D scplayer -2033.1 178.6 27.8 4.0 4.0 4.0 TRUE SET_PLAYER_CONTROL player1 OFF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 1 REMOVE_BLIP s5_blip CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 s5_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_CHAR_AREA_VISIBLE scplayer 1 CLEAR_AREA -2033.3 179.1 27.4 25.0 TRUE IF NOT IS_CAR_DEAD s5_target_car SET_VEHICLE_AREA_VISIBLE s5_target_car 1 SET_CAR_COORDINATES s5_target_car -2033.3 179.1 27.4 SET_CAR_HEADING s5_target_car 90.8 ENDIF LOAD_SCENE_IN_DIRECTION -2048.1 178.0 28.8 270.0 SET_FIXED_CAMERA_POSITION -2048.1 178.0 28.8 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2037.9 178.8 27.4 JUMP_CUT DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE OPEN_GARAGE hbgdSFS WHILE NOT IS_GARAGE_OPEN hbgdSFS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD s5_target_car TASK_CAR_DRIVE_TO_COORD scplayer s5_target_car -2045.4 178.3 27.6 10.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH ENDIF s5_control_flag = 1 ENDIF ENDIF ENDIF ENDIF IF s5_control_flag = 1 IF NOT IS_CAR_DEAD s5_target_car GET_SCRIPT_TASK_STATUS scplayer TASK_CAR_DRIVE_TO_COORD task_status IF task_status = FINISHED_TASK OPEN_SEQUENCE_TASK s5_seq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 -2035.4708 176.6342 27.8359 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK s5_seq PERFORM_SEQUENCE_TASK scplayer s5_seq CLEAR_SEQUENCE_TASK s5_seq timera = 0 s5_control_flag = 2 ENDIF ENDIF ENDIF IF s5_control_flag = 2 IF timera > 2000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 SET_CHAR_AREA_VISIBLE scplayer 0 LOAD_SCENE -2045.4 173.1 27.8 LOAD_SCENE_IN_DIRECTION -2045.4 173.1 27.8 309.5 CLEAR_PRINTS CLEAR_CHAR_TASKS_IMMEDIATELY scplayer DELETE_CAR s5_target_car CLEAR_AREA -2027.2 179.5 27.8 1.0 TRUE SET_CHAR_COORDINATES scplayer -2027.2 179.5 27.8 SET_CHAR_HEADING scplayer 275.9 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON CLOSE_GARAGE hbgdSFS WHILE NOT IS_GARAGE_CLOSED hbgdSFS WAIT 0 ENDWHILE //cutscene for carshowroom CREATE_PROTECTION_PICKUP -1969.4630 289.5335 34.6719 showroom_revenue showroom_revenue showroom_cash_pickup //remember to create the pick 0.5 higher than the dropped coords SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON LOAD_SCENE -1980.3014 288.1622 38.2246 SET_FIXED_CAMERA_POSITION -1980.3014 288.1622 38.2246 0.0 0.0 0.0 //cut scene of building POINT_CAMERA_AT_POINT -1979.3135 288.0155 38.1743 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PLAY_MISSION_PASSED_TUNE 1 PRINT_BIG ASS_ACQ 5000 6 //CAR ASSET ACQUIRED WAIT 5000 SET_FIXED_CAMERA_POSITION -1972.1849 291.1454 35.7724 0.0 0.0 0.0 //cut scene showing pickup POINT_CAMERA_AT_POINT -1971.3434 290.6249 35.6284 JUMP_CUT PRINT_WITH_NUMBER_NOW ASS_LUV showroom_revenue 6000 1//This will now generate revenue up to a maximum of $~1~. Make sure you collect it regulary. WAIT 6000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DO_FADE 500 FADE_IN GOTO mission_steal5_passed ENDIF ENDIF //////////////////////////blippage IF s5_is_plyr_in_car = 1 IF NOT IS_CHAR_IN_CAR scplayer s5_target_car REMOVE_BLIP s5_blip ADD_BLIP_FOR_CAR s5_target_car s5_blip SET_BLIP_AS_FRIENDLY s5_blip TRUE CLEAR_PRINTS PRINT_NOW ( STE5_08 ) 4000 1 //Get back in the car. s5_is_plyr_in_car = 0 ENDIF ENDIF IF s5_is_plyr_in_car = 0 IF IS_CHAR_IN_CAR scplayer s5_target_car REMOVE_BLIP s5_blip IF s5_control_flag = 0 ADD_BLIP_FOR_COORD -2033.1 178.6 27.8 s5_blip ENDIF CLEAR_PRINTS PRINT_NOW ( STE5_11 ) 7000 1 //Get the car back to the garage. s5_is_plyr_in_car = 1 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////// FAILING MISSION CUTSCENE //////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF s5_goals = 10 GOSUB check_player_is_safe IF player_is_completely_safe = 1 IF s5_fucking_fudge_flag = 0 CLEAR_PRINTS DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 s5_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE CLEAR_AREA -2125.5 -2467.5 29.6 1.0 TRUE GET_CHAR_COORDINATES scplayer s5_player_x s5_player_y s5_player_z REQUEST_COLLISION -2125.5 -2467.5 LOAD_SCENE -2125.5 -2467.5 29.6 SET_CHAR_COORDINATES scplayer -2125.5 -2467.5 29.6 IF NOT IS_CHAR_DEAD s5_enemy CLEAR_CHAR_TASKS s5_enemy ENDIF REQUEST_COLLISION -2117.8 -2456.8 LOAD_SCENE -2115.6 -2456.5 30.6 LOAD_ALL_MODELS_NOW IF NOT IS_CAR_DEAD s5_target_car REMOVE_STUCK_CAR_CHECK s5_target_car CLEAR_AREA -2117.8 -2456.8 29.3 30.0 TRUE SET_CAR_COORDINATES s5_target_car -2117.8 -2456.8 29.3 SET_CAR_HEADING s5_target_car 233.8 ENDIF SET_FIXED_CAMERA_POSITION -2106.0 -2465.7 30.8 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2112.2 -2461.1 29.6 JUMP_CUT PRINT_NOW ( STE5_14 ) 5000 1 //You missed the car! DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE OPEN_GARAGE amumis WHILE NOT IS_GARAGE_OPEN amumis WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD s5_enemy IF NOT IS_CAR_DEAD s5_target_car TASK_CAR_DRIVE_TO_COORD s5_enemy s5_target_car -2108.0 -2464.2 29.6 10.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF s5_fucking_fudge_flag = 1 ENDIF ENDIF IF s5_fucking_fudge_flag = 1 IF NOT IS_CHAR_DEAD s5_enemy GET_SCRIPT_TASK_STATUS s5_enemy TASK_CAR_DRIVE_TO_COORD task_status IF task_status = FINISHED_TASK CLOSE_GARAGE amumis WHILE NOT IS_GARAGE_CLOSED amumis WAIT 0 ENDWHILE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REQUEST_COLLISION s5_player_x s5_player_y s5_player_z -= 1.0 LOAD_SCENE s5_player_x s5_player_y s5_player_z LOAD_ALL_MODELS_NOW CLEAR_AREA s5_player_x s5_player_y s5_player_z 1.0 TRUE SET_CHAR_COORDINATES scplayer s5_player_x s5_player_y s5_player_z HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON CLEAR_PRINTS PRINT_BIG M_FAIL 5000 1 PRINT_NOW ( STE5_14 ) 5500 1 //You missed the car! DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_steal5_failed ENDIF ENDIF ENDIF ENDIF ///ingame dialogue/// GOSUB s5_overall_dialogue GOTO mission_steal5_loop // Mission steal5 failed mission_steal5_failed: PRINT_BIG M_FAIL 5000 1 RETURN // mission steal5 passed mission_steal5_passed: flag_steal_mission_counter ++ /* IF flag_steal_mission_counter = 2 REMOVE_BLIP trace_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT traceX traceY traceZ trace_blip_icon trace_contact_blip ENDIF IF flag_steal_mission_counter = 3 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 */ REMOVE_BLIP steal_contact_blip SWITCH_CAR_GENERATOR steal_car_cargen5 101 CLEAR_PRINTS PRINT_WITH_NUMBER_BIG ( M_PASSS ) 5000 5000 1 //"Mission Passed!" //100 being the amount of cash ADD_SCORE player1 5000//amount of cash AWARD_PLAYER_MISSION_RESPECT 5//amount of respect PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL PLAYER1 REGISTER_MISSION_PASSED STEAL_5 PLAYER_MADE_PROGRESS 1 //START_NEW_SCRIPT steal5_mission_loop RETURN // mission cleanup mission_cleanup_steal5: //SET_CAMERA_BEHIND_PLAYER IF IS_STRING_EMPTY $shop_name RESTORE_CAMERA_JUMPCUT ENDIF SET_MUSIC_DOES_FADE TRUE REMOVE_BLIP s5_blip CLEAR_MISSION_AUDIO 3 CLEAR_ONSCREEN_COUNTER s5_stingers_left IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF SHUT_ALL_CHARS_UP FALSE DELETE_OBJECT s5_stinger MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE MARK_MODEL_AS_NO_LONGER_NEEDED STRATUM MARK_MODEL_AS_NO_LONGER_NEEDED TAMPA MARK_MODEL_AS_NO_LONGER_NEEDED HFYRI MARK_MODEL_AS_NO_LONGER_NEEDED temp_stinger2 GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////// GOSUBS /////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// s5_death_checks://///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF IS_CAR_DEAD s5_target_car CLEAR_PRINTS PRINT_NOW ( STE5_09 ) 4000 1 //You destroyed the target car! s5_deathcheck_flag = 1 ENDIF IF s5_goals = 0 IF IS_CAR_DEAD s5_temp_car CLEAR_PRINTS PRINT_NOW ( STE5_10 ) 7000 1 //You destroyed the stinger car! s5_deathcheck_flag = 1 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// s5_burst_tyres://////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD s5_temp_car IF IS_CHAR_IN_CAR scplayer s5_temp_car IF timera > 5000 IF s5_stingers_left > 0 IF IS_BUTTON_PRESSED PAD1 CIRCLE OR IS_WIDGET_RELEASED WIDGET_STINGER DELETE_OBJECT s5_stinger GET_OFFSET_FROM_CAR_IN_WORLD_COORDS s5_temp_car 0.0 -3.0 -0.5 s5_x s5_y s5_z GET_CAR_HEADING s5_temp_car heading heading += 90.0 GET_GROUND_Z_FOR_3D_COORD s5_x s5_y s5_z s5_z CREATE_OBJECT temp_stinger2 s5_x s5_y s5_z s5_stinger SET_OBJECT_HEADING s5_stinger heading REPORT_MISSION_AUDIO_EVENT_AT_POSITION s5_x s5_y s5_z SOUND_STINGER_FIRE s5_stinger_sounds = 1 s5_stingers_left -- timera = 0 ENDIF ELSE CLEAR_ONSCREEN_COUNTER s5_stingers_left ENDIF ENDIF IF NOT s5_stingers_left = 3 CLEAR_HELP ENDIF ENDIF ENDIF IF s5_stinger_sounds = 1 IF HAS_MISSION_AUDIO_FINISHED 3 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS s5_temp_car 0.0 -3.0 -0.5 s5_x s5_y s5_z REPORT_MISSION_AUDIO_EVENT_AT_POSITION s5_x s5_y s5_z SOUND_STINGER_RELOAD s5_stinger_sounds = 2 ENDIF ENDIF IF DOES_OBJECT_EXIST s5_stinger GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS s5_stinger -0.5 2.5 0.0 s5_stinger_x1 s5_stinger_y1 s5_z GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS s5_stinger -0.5 -2.5 0.0 s5_stinger_x2 s5_stinger_y2 s5_z IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer s5_random_car2 IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer s5_stinger_x1 s5_stinger_y1 s5_stinger_x2 s5_stinger_y2 1.0 FALSE IF NOT IS_CAR_TYRE_BURST s5_random_car2 FRONT_RIGHT_WHEEL BURST_CAR_TYRE s5_random_car2 FRONT_RIGHT_WHEEL ENDIF IF NOT IS_CAR_TYRE_BURST s5_random_car2 FRONT_LEFT_WHEEL BURST_CAR_TYRE s5_random_car2 FRONT_LEFT_WHEEL ENDIF IF NOT IS_CAR_TYRE_BURST s5_random_car2 REAR_LEFT_WHEEL BURST_CAR_TYRE s5_random_car2 REAR_LEFT_WHEEL ENDIF IF NOT IS_CAR_TYRE_BURST s5_random_car2 REAR_RIGHT_WHEEL BURST_CAR_TYRE s5_random_car2 REAR_RIGHT_WHEEL ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD s5_enemy IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D s5_enemy s5_stinger_x1 s5_stinger_y1 s5_stinger_x2 s5_stinger_y2 1.0 FALSE IF NOT IS_CAR_TYRE_BURST s5_target_car FRONT_RIGHT_WHEEL BURST_CAR_TYRE s5_target_car FRONT_RIGHT_WHEEL ENDIF IF NOT IS_CAR_TYRE_BURST s5_target_car FRONT_LEFT_WHEEL BURST_CAR_TYRE s5_target_car FRONT_LEFT_WHEEL ENDIF IF NOT IS_CAR_TYRE_BURST s5_target_car REAR_LEFT_WHEEL BURST_CAR_TYRE s5_target_car REAR_LEFT_WHEEL ENDIF IF NOT IS_CAR_TYRE_BURST s5_target_car REAR_RIGHT_WHEEL BURST_CAR_TYRE s5_target_car REAR_RIGHT_WHEEL ENDIF ENDIF ENDIF GET_RANDOM_CAR_OF_TYPE_IN_ANGLED_AREA_NO_SAVE s5_stinger_x1 s5_stinger_y1 s5_stinger_x2 s5_stinger_y2 1.0 -1 s5_random_car IF NOT IS_CAR_DEAD s5_random_car IF NOT s5_random_car = s5_target_car IF NOT s5_random_car = s5_temp_car IF NOT IS_CAR_TYRE_BURST s5_random_car FRONT_RIGHT_WHEEL BURST_CAR_TYRE s5_random_car FRONT_RIGHT_WHEEL ENDIF IF NOT IS_CAR_TYRE_BURST s5_random_car FRONT_LEFT_WHEEL BURST_CAR_TYRE s5_random_car FRONT_LEFT_WHEEL ENDIF IF NOT IS_CAR_TYRE_BURST s5_random_car REAR_LEFT_WHEEL BURST_CAR_TYRE s5_random_car REAR_LEFT_WHEEL ENDIF IF NOT IS_CAR_TYRE_BURST s5_random_car REAR_RIGHT_WHEEL BURST_CAR_TYRE s5_random_car REAR_RIGHT_WHEEL ENDIF ENDIF ENDIF ENDIF ENDIF ////DEBUG IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q BURST_CAR_TYRE s5_target_car FRONT_RIGHT_WHEEL ENDIF ////DEBUG //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// s5_speed_up_slow_down:///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD s5_target_car IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer s5_target_car 60.0 60.0 FALSE SET_CAR_CRUISE_SPEED s5_target_car 50.0 ELSE IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer s5_target_car 100.0 100.0 FALSE SET_CAR_CRUISE_SPEED s5_target_car 20.0 ELSE SET_CAR_CRUISE_SPEED s5_target_car 15.0 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// s5_making_sure_car_doesnt_drown://///////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD s5_target_car IF IS_CAR_ON_SCREEN s5_target_car SET_CAR_WATERTIGHT s5_target_car FALSE ELSE SET_CAR_WATERTIGHT s5_target_car TRUE ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// s5_telling_woman_where_to_go://///////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF NOT IS_CHAR_DEAD s5_enemy IF IS_CHAR_IN_CAR s5_enemy s5_target_car IF s5_controlling_woman = 0 OPEN_SEQUENCE_TASK s5_seq TASK_CAR_DRIVE_TO_COORD -1 s5_target_car -1913.1 -593.8 38.3 20.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 s5_target_car -1912.6 -744.7 44.7 20.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 s5_target_car -1914.2 -894.9 45.0 20.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 s5_target_car -1914.3 -1045.0 38.3 20.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 s5_target_car -1907.9 -1195.2 39.5 20.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 s5_target_car -1910.7 -1345.3 40.4 20.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 s5_target_car -1795.1 -1442.4 35.5 20.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 s5_target_car -1658.5 -1506.1 35.7 20.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK s5_seq PERFORM_SEQUENCE_TASK s5_enemy s5_seq CLEAR_SEQUENCE_TASK s5_seq s5_controlling_woman = 1 ENDIF IF s5_controlling_woman = 1 GET_SCRIPT_TASK_STATUS s5_enemy PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK OPEN_SEQUENCE_TASK s5_seq TASK_CAR_DRIVE_TO_COORD -1 s5_target_car -1704.1 -1649.1 36.3 20.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 s5_target_car -1832.4 -1727.6 29.2 20.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 s5_target_car -1954.5 -1815.3 34.4 20.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 s5_target_car -2046.9 -1932.7 52.4 20.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 s5_target_car -2106.8 -2070.0 63.5 20.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 s5_target_car -2213.2 -2175.1 42.2 20.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 s5_target_car -2160.4 -2315.1 30.5 20.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD -1 s5_target_car -2120.2 -2456.7 29.6 20.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS //TASK_CAR_DRIVE_WANDER -1 s5_target_car 35.0 DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK s5_seq PERFORM_SEQUENCE_TASK s5_enemy s5_seq CLEAR_SEQUENCE_TASK s5_seq s5_controlling_woman = 2 ENDIF ENDIF IF s5_controlling_woman = 2 GET_SCRIPT_TASK_STATUS s5_enemy PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK s5_fucking_fudge_flag = 0 s5_goals = 10 s5_controlling_woman = 3 ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// s5_my_number_plates://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// GENERATE_RANDOM_INT_IN_RANGE 1 37 s5_no_plates_flag IF s5_no_plates_flag = 1 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates got_m00_ ENDIF IF s5_no_plates_flag = 2 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates m00tv_4u ENDIF IF s5_no_plates_flag = 3 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates mathew_2 ENDIF IF s5_no_plates_flag = 4 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates d4_dew0r ENDIF IF s5_no_plates_flag = 5 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates d0de_777 ENDIF IF s5_no_plates_flag = 6 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates dam0_666 ENDIF IF s5_no_plates_flag = 7 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates C0NEY_88 ENDIF IF s5_no_plates_flag = 8 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates pre4cher ENDIF IF s5_no_plates_flag = 9 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates dbp_4ndy ENDIF IF s5_no_plates_flag = 10 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates ev1l_sly ENDIF IF s5_no_plates_flag = 11 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates n1_r4v3n ENDIF IF s5_no_plates_flag = 12 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates d1vx_z00 ENDIF IF s5_no_plates_flag = 13 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates mr_b3nn ENDIF IF s5_no_plates_flag = 14 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates r3d_r4sp ENDIF IF s5_no_plates_flag = 15 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates La_B0mba ENDIF IF s5_no_plates_flag = 16 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates L3337_0g ENDIF IF s5_no_plates_flag = 17 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates budd4h_X ENDIF IF s5_no_plates_flag = 18 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates t3h_buck ENDIF IF s5_no_plates_flag = 19 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates CHUNKY_1 ENDIF IF s5_no_plates_flag = 20 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates ev1l_bnz ENDIF IF s5_no_plates_flag = 21 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates S4ND_M4N ENDIF IF s5_no_plates_flag = 22 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates RKK_DBP1 ENDIF IF s5_no_plates_flag = 23 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates RE1_K0KU ENDIF IF s5_no_plates_flag = 24 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates s3xy_jud ENDIF IF s5_no_plates_flag = 25 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates sunra_93 ENDIF IF s5_no_plates_flag = 26 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates UG_FuX69 ENDIF IF s5_no_plates_flag = 27 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates Li0n_Cum ENDIF IF s5_no_plates_flag = 28 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates rkk_pwnd ENDIF IF s5_no_plates_flag = 29 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates haze_b0b ENDIF IF s5_no_plates_flag = 30 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates t3h_fluf ENDIF IF s5_no_plates_flag = 31 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates BM_4NDY_ ENDIF IF s5_no_plates_flag = 32 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates BM_D34N_ ENDIF IF s5_no_plates_flag = 33 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates BM_L4C3Y ENDIF IF s5_no_plates_flag = 34 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates BM_D3V__ ENDIF IF s5_no_plates_flag = 35 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates NU_SK00L ENDIF IF s5_no_plates_flag = 36 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates G4L_AVET ENDIF IF s5_no_plates_flag = 37 CUSTOM_PLATE_FOR_NEXT_CAR s5_no_plates M0j0_j0j ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// s5_dialogue_setup:////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF s5_speech_goals = 1 $s5_print_label[0] = &STL5_AA // Hey, CJ, how's it going with that crazy bitch? $s5_print_label[1] = &STL5_AB // Popped her! $s5_print_label[2] = &STL5_AC // Just about to fix the tyres, should be back any minute. $s5_print_label[3] = &STL5_AD // Ok, careful with that puncture repair gloop, CJ, it's nasty crap! $s5_print_label[4] = &STL5_AE // Will do. Later, dude. s5_audio_label[0] = SOUND_STL5_AA s5_audio_label[1] = SOUND_STL5_AB s5_audio_label[2] = SOUND_STL5_AC s5_audio_label[3] = SOUND_STL5_AD s5_audio_label[4] = SOUND_STL5_AE s5_last_label = 5 ENDIF IF s5_speech_goals = 2 $s5_print_label[0] = &STL5_AF // Man, this stuff is disgusting. $s5_print_label[1] = &STL5_AG // Aw shit, all over my jeans! s5_audio_label[0] = SOUND_STL5_AF s5_audio_label[1] = SOUND_STL5_AG s5_last_label = 2 ENDIF IF s5_speech_goals = 3 $s5_print_label[0] = &MOBRING // Phone Ringing s5_audio_label[0] = SOUND_MOBRING s5_last_label = 1 ENDIF s5_slot_load = s5_speech_control_flag s5_slot1 = 0 s5_slot2 = 0 s5_play_which_slot = 1 //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// s5_overall_dialogue://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF s5_speech_goals = 1 //playing over cutscene where player fixes wheels OR s5_speech_goals = 2 //playing over cutscene where player fixes wheels OR s5_speech_goals = 3 IF s5_speech_control_flag < s5_last_label GOSUB s5_loading_dialogue GOSUB s5_playing_dialogue GOSUB s5_finishing_dialogue ELSE s5_speech_goals = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// s5_loading_dialogue://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF s5_slot_load < s5_last_label //slot 1 IF s5_slot1 = 0 LOAD_MISSION_AUDIO 1 s5_audio_label[s5_slot_load] s5_slot_load ++ s5_slot1 = 1 ENDIF //slot 2 IF s5_slot2 = 0 LOAD_MISSION_AUDIO 2 s5_audio_label[s5_slot_load] s5_slot_load ++ s5_slot2 = 1 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// s5_playing_dialogue://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //slot 1 IF s5_play_which_slot = 1 IF s5_slot1 = 1 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $s5_print_label[s5_speech_control_flag] ) 4500 1 // s5_slot1 = 2 ENDIF ENDIF ENDIF //slot 2 IF s5_play_which_slot = 2 IF s5_slot2 = 1 IF HAS_MISSION_AUDIO_LOADED 2 PLAY_MISSION_AUDIO 2 PRINT_NOW ( $s5_print_label[s5_speech_control_flag] ) 4500 1 // s5_slot2 = 2 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// s5_finishing_dialogue:////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //slot 1 IF s5_slot1 = 2 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_THIS_PRINT $s5_print_label[s5_speech_control_flag] s5_speech_control_flag ++ s5_play_which_slot = 2 s5_slot1 = 0 ENDIF ENDIF //slot 2 IF s5_slot2 = 2 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT $s5_print_label[s5_speech_control_flag] s5_speech_control_flag ++ s5_play_which_slot = 1 s5_slot2 = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // *****************************************Driving School********************************** // ***************************************** learning to drive ***************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME dskool CHECKPOINT_SAVE 1 // Mission start stuff GOSUB mission_start_dskool IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_dskool ENDIF GOSUB mission_cleanup_dskool MISSION_END { // ****************************************Mission Start************************************ mission_start_dskool: flag_player_on_mission = 1 IF driving_test_passed = 0 REGISTER_MISSION_GIVEN ENDIF LOAD_MISSION_TEXT DS IF flag_player_on_mission = 0 CREATE_CAR BANSHEE car_posx car_posy perfect_positionz instructor_car CREATE_CAR BANSHEE car_posx car_posy perfect_positionz dummy_car1 CREATE_CAR BANSHEE car_posx car_posy perfect_positionz dummy_car2 CREATE_OBJECT_NO_OFFSET trafficcone 0.0 0.0 100.0 trafficcones[20] CREATE_OBJECT_NO_OFFSET trafficcone 0.0 0.0 100.0 trafficcones[30] CREATE_OBJECT ad_jump car_posx car_posy perfect_positionz ramp1 CREATE_OBJECT ad_jump car_posx car_posy perfect_positionz ramp2 CREATE_OBJECT ad_jump car_posx car_posy perfect_positionz f1_stinger CREATE_RANDOM_CHAR 0.0 0.0 100.0 f1_test_crash_dummy CREATE_RANDOM_CHAR 0.0 0.0 100.0 f1_test_crash_dummy2 ENDIF SET_FADING_COLOUR 0 0 0 CLEAR_PRINTS CLEAR_THIS_PRINT_BIG_NOW 1 WAIT 0 // *************************************Set Flags/variables********************************* DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LVAR_INT playback_flag LVAR_INT d1_blip_flag LVAR_FLOAT instructor_car_roll LVAR_INT instructor_car_roll_score instructor_car_roll_plus_minus LVAR_INT f1_control_flag f1_direction_flag LVAR_INT f1_print_top_scores_flag LVAR_INT f1_checkpoint LVAR_INT f1_fade_flag f1_alpha LVAR_INT f1_which_medal_displayed f1_which_score_displayed LVAR_INT f1_old_score LVAR_INT f1_area_code LVAR_INT f1_empty_decisions LVAR_INT f1_last_played LVAR_INT f1_r f1_g f1_b f1_alpha2 LVAR_INT f1_test_crash_dummy f1_test_crash_dummy2 LVAR_INT ramp1 LVAR_INT ramp2 LVAR_INT f1_stinger VAR_INT f1_bronze_award VAR_INT f1_silver_award VAR_INT f1_gold_award LVAR_INT f1_camera_mode LVAR_INT num_burn_laps_max LVAR_FLOAT vec_x vec_y vec_z //speech LVAR_INT f1_speech_goals f1_speech_control_flag f1_speech_flag f1_random_last_label LVAR_TEXT_LABEL f1_print_label[7] LVAR_INT f1_audio_label[7] LVAR_INT f1_last_label //f1_played_random_speech[2] LVAR_INT f1_slot1 f1_slot2 f1_slot_load f1_play_which_slot LVAR_FLOAT fTitleX LVAR_FLOAT fTitleY LVAR_FLOAT fStringX LVAR_FLOAT fStringY fTitleX = 50.0 fTitleY = 60.0 fStringX = 50.0 fStringY = 100.0 playback_flag = 0 ///needs to be set to 0 f1_control_flag = 0 f1_fade_flag = 0 f1_alpha = 0 f1_alpha2 = 0 f1_which_medal_displayed = 0 f1_which_score_displayed = 0 f1_old_score = 0 f1_area_code = 0 mission_selection = 1 //needs to be set to 1 f1_last_played = 1 start_coordsx = -2050.6 //these define the starting position of each track. start_coordsy = -130.0 noticeboard_x = -2031.2 noticeboard_y = -118.0 noticeboard_z = 1034.2 f1_speech_goals = 0 f1_speech_control_flag = 0 f1_speech_flag = 0 f1_random_last_label = 0 f1_last_label = 0 f1_slot1 = 0 f1_slot2 = 0 f1_slot_load = 0 f1_play_which_slot = 0 f1_camera_mode = 0 vec_x = 0.0 vec_y = 0.0 vec_z = 0.0 COPY_CHAR_DECISION_MAKER DM_PED_EMPTY f1_empty_decisions REQUEST_MODEL infernus REQUEST_MODEL blistac REQUEST_MODEL banshee REQUEST_MODEL COPCARSF REQUEST_MODEL SFPD1 REQUEST_MODEL trafficcone REQUEST_MODEL temp_stinger2 REQUEST_MODEL garys_luv_ramp REQUEST_MODEL ad_jump REQUEST_MODEL ad_roadmark1 // for the U shape line REQUEST_MODEL ad_roadmark2 // for the longer C shape REQUEST_MODEL ad_finish //for burn and lap REQUEST_MODEL taxi REQUEST_MODEL supergt LOAD_TEXTURE_DICTIONARY LD_drv LOAD_SPRITE 1 bronze LOAD_SPRITE 2 silver LOAD_SPRITE 3 gold LOAD_SPRITE 4 ribb LOAD_SPRITE 5 tvcorn LOAD_SPRITE 6 naward LOAD_SPRITE 7 ribbw LOAD_SPRITE 8 blkdot LOAD_SPRITE 9 tvbase LOAD_SPRITE 10 nawtxt LOAD_ALL_MODELS_NOW LOAD_SCENE -2031.1 -118.2 1034.2 CLEAR_THIS_BIG_PRINT FAR_1 // Back to School ENABLE_AMBIENT_CRIME FALSE SWITCH_ROADS_OFF -2015.37 -76.08 10.0 -2078.3 -66.75 50.0 CLEAR_WANTED_LEVEL player1 DEACTIVATE_GARAGE bodLAwN DEACTIVATE_GARAGE modlast DEACTIVATE_GARAGE mdsSFSe IF japcar_mod_garage_open = 1 DEACTIVATE_GARAGE mds1SFS DEACTIVATE_GARAGE vEcmod ENDIF SET_NO_RESPRAYS ON ///DEBUG ---- put back in cutscene, take out this flag///////// //f1_which_missions_are_open_flag = 16 /////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////// CUTSCENE - PLAYED ONCE /////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////// IF f1_scripted_cut = 0 WHILE f1_scripted_cut = 0 WAIT 0 IF f1_control_flag = 0 f1_which_missions_are_open_flag = 1 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_CHAR_COORDINATES scplayer -2031.7 -116.4 1034.2 SET_CHAR_HEADING scplayer 86.9 //creating a secretary REQUEST_MODEL WMYMECH LOAD_ALL_MODELS_NOW LVAR_INT f1_secretary CLEAR_AREA -2033.2 -116.5 1034.2 30.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 WMYMECH -2033.2 -116.5 1034.2 f1_secretary SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH f1_secretary TRUE SET_CHAR_DECISION_MAKER f1_secretary f1_empty_decisions SET_CHAR_HEADING f1_secretary 270.0 SET_CHAR_NEVER_TARGETTED f1_secretary TRUE SET_CHAR_KEEP_TASK f1_secretary TRUE TASK_STAND_STILL f1_secretary -2 SET_FIXED_CAMERA_POSITION -2030.7 -115.8 1035.8 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2033.9 -116.1 1035.7 JUMP_CUT //cutscene dialogue f1_speech_goals = 1 f1_speech_control_flag = 0 GOSUB f1_dialogue_setup IF NOT IS_CHAR_DEAD f1_secretary START_CHAR_FACIAL_TALK f1_secretary 20000 ENDIF DO_FADE 1000 FADE_IN SKIP_CUTSCENE_START timera = 0 f1_control_flag = 1 ENDIF IF f1_control_flag = 1 IF f1_speech_goals = 0 SKIP_CUTSCENE_END IF NOT IS_CHAR_DEAD f1_secretary STOP_CHAR_FACIAL_TALK f1_secretary ENDIF CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 f1_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON f1_control_flag = 0 f1_scripted_cut = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_failed_dskool ENDIF ENDIF GOSUB f1_overall_dialogue ENDWHILE ENDIF ////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////// NOTICEBOARD ////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////// noticeboard_setup: //clearing old shit away SET_PLAYER_CONTROL player1 OFF CLEAR_HELP CLEAR_PRINTS SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 //preparing for noticeboard GOSUB setting_up_variables playback_flag = 0 f1_control_flag = 0 USE_TEXT_COMMANDS TRUE f1_alpha = 255 f1_fade_flag = 2 IF f1_which_missions_are_open_flag < 17 mission_selection = f1_last_played ENDIF IF mission_selection = 3 mission_selection = 4 ENDIF IF mission_selection = 6 mission_selection = 7 ENDIF IF mission_selection = 8 mission_selection = 9 ENDIF IF mission_selection = 12 mission_selection = 13 ENDIF SET_AREA_VISIBLE 0 SET_CHAR_AREA_VISIBLE scplayer 0 SET_CHAR_COORDINATES scplayer -2035.4 -119.1 33.2 LOAD_SCENE -2035.4 -119.1 33.2 //loading in sound LOAD_MISSION_AUDIO 3 SOUND_VIDEOTAPE_NOISE WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 3 CLEAR_EXTRA_COLOURS FALSE DISPLAY_HUD FALSE DISPLAY_RADAR FALSE DO_FADE 1000 FADE_IN GOSUB f1_drawing_tv_screen ////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////// MISSION SELECTION //////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////// mission_selection_loop: WAIT 0 //nColor = WHITE:0 || BLUE:1 || GREEN:2 //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_TITLE_BACKGROUND 0 0 0 0 0 0.0 boat_72 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_passed_dskool ENDIF GOSUB f1_drawing_tv_screen //////CHOOSING WHICH MISSION IF f1_control_flag = 0 //choosing which mission GET_POSITION_OF_ANALOGUE_STICKS PAD1 LStickX LStickY RStickX RStickY IF LStickX < -100 OR IS_BUTTON_PRESSED PAD1 DPADLEFT OR IS_WIDGET_RELEASED WIDGET_SCHOOL_LEFT IS_WIDGET_RELEASED WIDGET_SCHOOL_START IS_WIDGET_RELEASED WIDGET_SCHOOL_EXIT IS_WIDGET_RELEASED WIDGET_SCHOOL_TITLE_BACKGROUND f1_last_played = f1_last_played - 1 mission_selection = mission_selection - 1 IF f1_last_played = 3 f1_last_played = 2 ENDIF IF f1_last_played = 6 f1_last_played = 5 ENDIF IF f1_last_played = 8 f1_last_played = 7 ENDIF IF IS_XBOX_VERSION // HACKED - mobile version check IF f1_last_played = 13 f1_last_played = 11 ENDIF ELSE IF f1_last_played = 12 f1_last_played = 11 ENDIF ENDIF IF mission_selection = 3 mission_selection = 2 ENDIF IF mission_selection = 6 mission_selection = 5 ENDIF IF mission_selection = 8 mission_selection = 7 ENDIF IF IS_XBOX_VERSION // HACKED - mobile version check IF mission_selection = 13 mission_selection = 11 ENDIF ELSE IF mission_selection = 12 mission_selection = 11 ENDIF ENDIF IF f1_which_missions_are_open_flag > 1 IF playback_flag < 4 playback_flag = 3 //overriding playback ENDIF ENDIF ENDIF IF LStickX > 100 OR IS_BUTTON_PRESSED PAD1 DPADRIGHT OR IS_WIDGET_RELEASED WIDGET_SCHOOL_RIGHT IS_WIDGET_RELEASED WIDGET_SCHOOL_START IS_WIDGET_RELEASED WIDGET_SCHOOL_EXIT IS_WIDGET_RELEASED WIDGET_SCHOOL_TITLE_BACKGROUND f1_last_played = f1_last_played + 1 mission_selection = mission_selection + 1 IF f1_last_played = 3 f1_last_played = 4 ENDIF IF f1_last_played = 6 f1_last_played = 7 ENDIF IF f1_last_played = 8 f1_last_played = 9 ENDIF IF NOT IS_XBOX_VERSION // HACKED - mobile version check IF f1_last_played = 12 f1_last_played = 13 ENDIF ELSE IF f1_last_played = 12 f1_last_played = 14 ENDIF ENDIF IF mission_selection = 3 mission_selection = 4 ENDIF IF mission_selection = 6 mission_selection = 7 ENDIF IF mission_selection = 8 mission_selection = 9 ENDIF IF NOT IS_XBOX_VERSION // HACKED - mobile version check IF mission_selection = 12 mission_selection = 13 ENDIF ELSE IF mission_selection = 12 mission_selection = 14 ENDIF ENDIF IF f1_which_missions_are_open_flag > 1 IF playback_flag < 4 playback_flag = 3 //overriding playback ENDIF ENDIF ENDIF IF mission_selection < 1 mission_selection = f1_which_missions_are_open_flag f1_last_played = f1_which_missions_are_open_flag ENDIF IF mission_selection > f1_which_missions_are_open_flag mission_selection = 1 f1_last_played = 1 ENDIF IF f1_which_missions_are_open_flag > 1 WHILE LStickX < -100 WAIT 0 IS_WIDGET_RELEASED WIDGET_SCHOOL_LEFT IS_WIDGET_RELEASED WIDGET_SCHOOL_RIGHT IS_WIDGET_RELEASED WIDGET_SCHOOL_TITLE_BACKGROUND IS_WIDGET_PRESSED WIDGET_SCHOOL_START IS_WIDGET_PRESSED WIDGET_SCHOOL_EXIT GOSUB f1_drawing_tv_screen GET_POSITION_OF_ANALOGUE_STICKS PAD1 LStickX LStickY RStickX RStickY ENDWHILE WHILE LStickX > 100 WAIT 0 IS_WIDGET_RELEASED WIDGET_SCHOOL_LEFT IS_WIDGET_RELEASED WIDGET_SCHOOL_RIGHT IS_WIDGET_RELEASED WIDGET_SCHOOL_TITLE_BACKGROUND IS_WIDGET_PRESSED WIDGET_SCHOOL_START IS_WIDGET_PRESSED WIDGET_SCHOOL_EXIT GOSUB f1_drawing_tv_screen GET_POSITION_OF_ANALOGUE_STICKS PAD1 LStickX LStickY RStickX RStickY ENDWHILE ENDIF WHILE IS_BUTTON_PRESSED PAD1 DPADLEFT OR IS_WIDGET_RELEASED WIDGET_SCHOOL_LEFT IS_WIDGET_RELEASED WIDGET_SCHOOL_RIGHT WAIT 0 IS_WIDGET_RELEASED WIDGET_SCHOOL_START IS_WIDGET_RELEASED WIDGET_SCHOOL_EXIT IS_WIDGET_RELEASED WIDGET_SCHOOL_TITLE_BACKGROUND GOSUB f1_drawing_tv_screen ENDWHILE WHILE IS_BUTTON_PRESSED PAD1 DPADRIGHT OR IS_WIDGET_RELEASED WIDGET_SCHOOL_RIGHT IS_WIDGET_RELEASED WIDGET_SCHOOL_LEFT WAIT 0 IS_WIDGET_RELEASED WIDGET_SCHOOL_START IS_WIDGET_RELEASED WIDGET_SCHOOL_EXIT IS_WIDGET_RELEASED WIDGET_SCHOOL_TITLE_BACKGROUND GOSUB f1_drawing_tv_screen ENDWHILE //triggering mission IF IS_BUTTON_PRESSED PAD1 CROSS OR IS_WIDGET_RELEASED WIDGET_SCHOOL_START IF mission_selection = 4 OR mission_selection = 7 OR mission_selection = 9 OR mission_selection = 13 f1_control_flag = 1 ELSE IF playback_flag < 4 playback_flag = 3 ENDIF GOTO start_mission ENDIF ENDIF ENDIF ////SELECTING WHETHER TO GO RIGHT OR LEFT ON SOME MISSIONS IF f1_control_flag = 1 IF playback_flag < 4 playback_flag = 3 ENDIF IF playback_flag = 0 playback_flag = 5 ENDIF LVAR_INT left_or_right_help left_or_right_help = 1 GOSUB which_course_text SET_TEXT_COLOUR 255 255 255 255 DISPLAY_TEXT 320.0 160.0 DS1_59 //Which course? GOSUB which_course_text SET_TEXT_CENTRE OFF SET_TEXT_COLOUR 255 255 255 255 IF left_or_right_help = 1 PRINT_HELP_FOREVER DS1_60 // Press ~m~~widget_ped_move_left~ to go counterclockwise. Press ~m~~widget_ped_move_right~ to go clockwise. ENDIF GET_POSITION_OF_ANALOGUE_STICKS PAD1 LStickX LStickY RStickX RStickY IF LStickX < -100 OR IS_BUTTON_PRESSED PAD1 DPADLEFT OR IS_WIDGET_RELEASED WIDGET_SCHOOL_LEFT left_or_right_help = 0 GOSUB delete_end_of_rec GOTO start_mission ENDIF IF LStickX > 100 OR IS_BUTTON_PRESSED PAD1 DPADRIGHT OR IS_WIDGET_RELEASED WIDGET_SCHOOL_RIGHT IF mission_selection = 4 mission_selection = 3 ENDIF IF mission_selection = 7 mission_selection = 6 ENDIF IF mission_selection = 9 mission_selection = 8 ENDIF IF mission_selection = 13 mission_selection = 12 ENDIF left_or_right_help = 0 GOSUB delete_end_of_rec GOTO start_mission ENDIF ENDIF //opening all the missions IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q IF driving_test_passed = 0 f1_the360_best_score = 100 f1_the180_best_score = 100 f1_whiprightterminate_best_score = 100 f1_popcontrol_best_score = 100 f1_burnlapright_best_score = 100 f1_conecoilright_best_score = 100 f1_the90_best_score = 100 f1_wheelieweave_best_score = 100 f1_spinrightgo_best_score = 100 f1_pittechnique_best_score = 100 f1_alleyoop_best_score = 100 f1_cityslicking_best_score = 100 SWITCH_CAR_GENERATOR f1_chunky 101 SWITCH_CAR_GENERATOR f1_dbp 101 driving_test_passed = 1 ENDIF f1_which_missions_are_open_flag = 16 ENDIF IF NOT f1_control_flag = 1 //quitting the driving school IF IS_BUTTON_PRESSED PAD1 TRIANGLE OR IS_WIDGET_RELEASED WIDGET_SCHOOL_EXIT GOSUB f1_drawing_tv_screen DO_FADE 150 FADE_OUT WHILE GET_FADING_STATUS GOSUB f1_drawing_tv_screen WAIT 0 GOSUB f1_drawing_tv_screen ENDWHILE GOSUB f1_drawing_tv_screen CLEAR_MISSION_AUDIO 3 CLEAR_PRINTS CLEAR_EXTRA_COLOURS TRUE SET_CHAR_AREA_VISIBLE scplayer 3 SET_AREA_VISIBLE 3 REQUEST_COLLISION -2031.1 -118.2 LOAD_SCENE -2031.1 -118.2 1034.2 SET_CHAR_COORDINATES scplayer -2029.7 -115.5 1034.2 SET_CHAR_HEADING scplayer 0.0 IF NOT IS_CAR_DEAD instructor_car IF IS_PLAYBACK_GOING_ON_FOR_CAR instructor_car STOP_PLAYBACK_RECORDED_CAR instructor_car ENDIF ENDIF DELETE_CAR instructor_car CLEAR_AREA -2051.0 -174.0 34.0 300.0 TRUE CLEAR_ONSCREEN_TIMER car_timer FREEZE_ONSCREEN_TIMER FALSE DELETE_CHAR f1_test_crash_dummy DELETE_CHAR f1_test_crash_dummy2 DELETE_CAR dummy_car1 DELETE_CAR dummy_car2 DELETE_OBJECT ramp1 DELETE_OBJECT ramp2 DELETE_OBJECT f1_stinger REMOVE_CAR_RECORDING 1 REMOVE_CAR_RECORDING 2 REMOVE_CAR_RECORDING 3 REMOVE_CAR_RECORDING 4 REMOVE_CAR_RECORDING 5 REMOVE_CAR_RECORDING 7 REMOVE_CAR_RECORDING 9 REMOVE_CAR_RECORDING 10 REMOVE_CAR_RECORDING 11 REMOVE_CAR_RECORDING 13 REMOVE_CAR_RECORDING 14 REMOVE_CAR_RECORDING 15 REMOVE_CAR_RECORDING 16 GOSUB deleting_cones SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_failed_dskool ENDIF ENDIF GOSUB watching_demo GOTO mission_selection_loop start_mission: DO_FADE 150 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 GOSUB f1_drawing_tv_screen ENDWHILE IF NOT IS_CAR_DEAD instructor_car STOP_PLAYBACK_RECORDED_CAR instructor_car ENDIF CLEAR_MISSION_AUDIO 3 DELETE_CAR instructor_car CLEAR_AREA noticeboard_x noticeboard_y noticeboard_z 300.0 TRUE CLEAR_ONSCREEN_TIMER car_timer FREEZE_ONSCREEN_TIMER FALSE DELETE_CHAR f1_test_crash_dummy DELETE_CHAR f1_test_crash_dummy2 DELETE_CAR dummy_car1 DELETE_CAR dummy_car2 DELETE_CAR instructor_car DELETE_OBJECT ramp1 DELETE_OBJECT ramp2 DELETE_OBJECT f1_stinger GOSUB deleting_cones playback_flag = 5 ///making sure playback flag doesn't DSTART up missions DISPLAY_HUD TRUE DISPLAY_RADAR TRUE /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////The "360" - Doing a burnout donut////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF mission_selection = 1 refresh_360: GOSUB start_initialise_stuff setup_360: perfect_heading = 180.0 car_timer = 11000 GOSUB setting_up_variables //creating cars CREATE_CAR infernus perfect_positionx perfect_positiony perfect_positionz instructor_car SET_CAR_HEADING instructor_car 180.0 GOSUB creating_cones IF playback_flag = 0 DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION -2028.3 -143.0 38.4 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2052.3 -129.9 34.2 JUMP_CUT IF NOT IS_CAR_DEAD instructor_car CREATE_RANDOM_CHAR_AS_DRIVER instructor_car f1_test_crash_dummy ENDIF RETURN ENDIF //setting up finishing point GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 0.0 0.0 0.0 finish_rightx finish_righty perfect_positionz CLEAR_PRINTS PRINT_HELP_FOREVER DS1_88 // "Press and hold ~m~~widget_handbrake~ and steer left or right to begin." PRINT_NOW ( DS1_44 ) 5000 4 // Use the rear wheel drive car to do a burnout donut. GOSUB stop_initialise_stuff //starting challenge the_360_loop: WAIT 0 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_360 ENDIF //checking car isnt dead GOSUB instructor_car_dead IF instructor_car_dead_flag = 1 GOTO mission_failed_dskool ENDIF //checking car has moved and player is pressing cross or square IF car_started = 0 IF NOT instructor_car_dead_flag = 2 PRINT_HELP_FOREVER DS1_88 // "Press and hold ~m~~widget_handbrake~ and steer left or right to begin." PRINT_NOW ( DS1_44 ) 5000 4 // Use the rear wheel drive car to do a burnout donut. ENDIF GOSUB has_car_started //player is going ELSE IF NOT IS_CAR_DEAD instructor_car //checking timer hasnt ran to 0 GOSUB car_timer_0 //checking how far through the circle a player is GET_CAR_HEADING instructor_car perfect_heading //clockwise IF variablec = 0 IF perfect_heading > 80.0 IF perfect_heading < 90.0 variablec = 1 f1_direction_flag = 1 ENDIF ENDIF ENDIF IF f1_direction_flag = 1 IF variablec = 1 IF perfect_heading > 350.0 IF perfect_heading < 360.0 variablec = 2 ENDIF ENDIF ENDIF IF variablec = 2 IF perfect_heading > 270.0 IF perfect_heading < 280.0 variablec = 3 ENDIF ENDIF ENDIF IF variablec = 3 IF perfect_heading > 170.0 IF perfect_heading < 180.0 variablec = 4 ENDIF ENDIF ENDIF ENDIF //anti-clockwise IF variablec = 0 IF perfect_heading > 270.0 IF perfect_heading < 280.0 f1_direction_flag = 2 variablec = 1 ENDIF ENDIF ENDIF IF f1_direction_flag = 2 IF variablec = 1 IF perfect_heading > 350.0 IF perfect_heading < 360.0 variablec = 2 ENDIF ENDIF ENDIF IF variablec = 2 IF perfect_heading > 80.0 IF perfect_heading < 90.0 variablec = 3 ENDIF ENDIF ENDIF IF variablec = 3 IF perfect_heading > 170.0 IF perfect_heading < 180.0 variablec = 4 ENDIF ENDIF ENDIF ENDIF LVAR_FLOAT tempVec_x tempVec_y tempVec_z tempVec_x = vec_x tempVec_y = vec_y tempVec_z = vec_z GET_CAR_SPEED_VECTOR instructor_car vec_x vec_y vec_z LVAR_INT bMovementDetected bMovementDetected = 0 IF NOT tempVec_x = vec_x OR NOT tempVec_y = vec_y OR NOT tempVec_z = vec_z bMovementDetected = 1 ENDIF //checking car is stopped or not //IF NOT IS_BUTTON_PRESSED PAD1 CROSS //OR NOT IS_BUTTON_PRESSED PAD1 SQUARE IF bMovementDetected = 0 OR car_timer = 0 GOSUB freeze_car_pos //CALCULATIONS FOR PLAYER SCORE //position score GOSUB position_score_calcs //heading - perfect heading is 0 IF variablec = 4 heading_score = 100 ENDIF IF variablec = 3 heading_score = 75 ENDIF IF variablec = 2 heading_score = 50 ENDIF IF variablec = 1 heading_score = 25 ENDIF IF variablec = 0 heading_score = 0 ENDIF overall_score = position_score + heading_score overall_score /= 2 IF position_score = 0 overall_score = 0 ENDIF IF variablec = 0 overall_score = 0 ENDIF //losing points for hitting cones GOSUB damage_cones_calcs //checking overall score is greater than 0 and clearing prints GOSUB checking_overall_score //checking overall score against the best score at present IF overall_score > f1_the360_best_score f1_old_score = f1_the360_best_score f1_the360_best_score = overall_score f1_print_top_scores_flag = 1 GOSUB f1_medal_check ELSE f1_which_medal_displayed = 0 ENDIF //opening next level IF f1_which_missions_are_open_flag = 1 IF overall_score > 69 f1_print_top_scores_flag = 2 f1_which_missions_are_open_flag = 2 instructor_car_dead_flag = 2 f1_last_played = 2 ENDIF ENDIF //printing scores onscreen timera = 0 the_360_scores_loop: WAIT 0 //changing camera position GOSUB setting_up_camera IF NOT f1_print_top_scores_flag = 2 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_360 ENDIF ENDIF //displaying scores GOSUB display_head_pos_dam_text //checking if player has skipped watching the scores GOSUB skip_scores IF finished_watching_scores = 1 GOTO after_scores_360 ENDIF GOTO the_360_scores_loop //reseting for another try after_scores_360: GOSUB mini_cleanup GOSUB deleting_cones IF instructor_car_dead_flag = 2 CLEAR_PRINTS GOTO noticeboard_setup ELSE GOTO refresh_360 ENDIF ENDIF ENDIF ENDIF GOTO the_360_loop ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// completed_360: /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////The "180" - doing a handbrake turn and coming back towards the player////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF mission_selection = 2 refresh_180: GOSUB start_initialise_stuff setup_180: perfect_heading = 0.0 car_timer = 11000 GOSUB setting_up_variables //creating cars CREATE_CAR blistac perfect_positionx perfect_positiony perfect_positionz instructor_car SET_CAR_HEADING instructor_car 180.0 //creating cones GOSUB creating_cones IF playback_flag = 0 DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION -2060.2 -227.3 36.6 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2049.5 -210.6 34.0 JUMP_CUT IF NOT IS_CAR_DEAD instructor_car CREATE_RANDOM_CHAR_AS_DRIVER instructor_car f1_test_crash_dummy ENDIF RETURN ENDIF //setting up the point the player MUST cross GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car -2.0 82.0 0.0 area_check1ax area_check1ay player_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 2.0 88.0 0.0 area_check1bx area_check1by player_z //setting up finishing point GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 0.0 0.0 0.0 finish_rightx finish_righty perfect_positionz CLEAR_PRINTS PRINT_HELP_FOREVER DSTART // Press and hold ~m~~widget_accelerate~ to begin. PRINT_NOW ( DS1_45 ) 5000 4 // To do a 180, accelerate to top speed, press the R1 button to handbrake around the cone and then return. GOSUB stop_initialise_stuff //starting challenge the_180_loop: WAIT 0 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_180 ENDIF //checking car isnt dead GOSUB instructor_car_dead IF instructor_car_dead_flag = 1 GOTO mission_failed_dskool ENDIF //checking car has moved and player is pressing cross or square IF car_started = 0 IF NOT instructor_car_dead_flag = 2 PRINT_HELP_FOREVER_CONDITIONAL DSTART 2 // Press and hold ~m~~widget_accelerate~ to begin. PRINT_NOW ( DS1_45 ) 5000 4 // To do a 180, accelerate to top speed, press the R1 button to handbrake around the cone and then return. ENDIF GOSUB has_car_started //player is going ELSE IF NOT IS_CAR_DEAD instructor_car //checking timer hasnt ran to 0 GOSUB car_timer_0 //checking player goes round a lap IF variablec = 0 IF IS_CAR_IN_AREA_2D instructor_car area_check1ax area_check1ay area_check1bx area_check1by FALSE variablec = 1 ENDIF ENDIF //checking car is stopped or not IF IS_CAR_STOPPED instructor_car GOSUB freeze_car_pos //CALCULATIONS FOR PLAYER SCORE //position score GOSUB position_score_calcs IF variablec = 0 position_score = 0 ENDIF //heading - perfect heading is 0 GET_CAR_HEADING instructor_car instructor_car_heading instructor_car_heading_int =# instructor_car_heading IF instructor_car_heading_int = 0 heading_score = 100 GOTO done_heading_calcs_180 ENDIF IF instructor_car_heading_int = 360 heading_score = 100 GOTO done_heading_calcs_180 ENDIF IF instructor_car_heading_int > 0 IF instructor_car_heading_int < 21 heading_score = 100 ENDIF ENDIF IF instructor_car_heading_int > 179 IF instructor_car_heading_int < 340 variablea = instructor_car_heading_int - 180 variableb =# variablea variableb *= 0.62 heading_score =# variableb GOTO done_heading_calcs_180 ENDIF ENDIF IF instructor_car_heading_int > 339 IF instructor_car_heading_int < 360 heading_score = 100 ENDIF ENDIF IF instructor_car_heading_int > 20 IF instructor_car_heading_int < 180 variableb =# instructor_car_heading_int variableb *= 0.62 //0.62 = 99(which is highest score possible) / 60 ( which is 180 - 20) variablea =# variableb heading_score = 100 - variablea GOTO done_heading_calcs_180 ENDIF ENDIF done_heading_calcs_180: IF heading_score < 1 heading_score = 0 ENDIF overall_score = position_score + heading_score overall_score /= 2 IF position_score = 0 overall_score = 0 ENDIF //losing points for hitting cones GOSUB damage_cones_calcs //checking overall score is greater than 0 and clearing prints GOSUB checking_overall_score //checking overall score against the best score at present IF overall_score > f1_the180_best_score f1_old_score = f1_the180_best_score f1_the180_best_score = overall_score f1_print_top_scores_flag = 1 GOSUB f1_medal_check ELSE f1_which_medal_displayed = 0 ENDIF //opening next level IF f1_which_missions_are_open_flag = 2 IF overall_score > 69 f1_print_top_scores_flag = 2 f1_which_missions_are_open_flag = 4 instructor_car_dead_flag = 2 f1_last_played = 4 ENDIF ENDIF //printing scores onscreen timera = 0 the_180_scores_loop: WAIT 0 //changing camera position GOSUB setting_up_camera IF NOT f1_print_top_scores_flag = 2 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_180 ENDIF ENDIF //displaying scores GOSUB display_head_pos_dam_text //checking if player has skipped watching the scores GOSUB skip_scores IF finished_watching_scores = 1 GOTO after_scores_180 ENDIF GOTO the_180_scores_loop //reseting for another try after_scores_180: GOSUB mini_cleanup GOSUB deleting_cones IF instructor_car_dead_flag = 2 CLEAR_PRINTS GOTO noticeboard_setup ELSE GOTO refresh_180 ENDIF ENDIF ENDIF ENDIF GOTO the_180_loop ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////Whip and Terminate////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF mission_selection = 3 OR mission_selection = 4 refresh_whip_and_terminate: GOSUB start_initialise_stuff setup_whip_and_terminate: //////setting up variables for this specific challenge///// perfect_heading = 180.0 car_timer = 6000 GOSUB setting_up_variables IF mission_selection = 3 perfect_positionx += 20.0 ENDIF IF mission_selection = 4 perfect_positionx -= 20.0 ENDIF //creating cars CREATE_CAR banshee perfect_positionx perfect_positiony perfect_positionz instructor_car SET_CAR_HEADING instructor_car perfect_heading //creating cones GOSUB creating_cones IF playback_flag = 0 DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION -2022.6 -173.4 36.2 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2034.2 -165.4 34.5 JUMP_CUT IF NOT IS_CAR_DEAD instructor_car CREATE_RANDOM_CHAR_AS_DRIVER instructor_car f1_test_crash_dummy ENDIF RETURN ENDIF //setting up finishing point IF mission_selection = 3 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 40.0 37.0 0.0 finish_rightx finish_righty perfect_positionz ELSE GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car -40.0 37.0 0.0 finish_leftx finish_lefty perfect_positionz ENDIF CLEAR_PRINTS PRINT_HELP_FOREVER_CONDITIONAL DSTART 2 // Press and hold ~m~~widget_accelerate~ to begin. PRINT_NOW ( DS1_32 ) 5000 4 // Powerslide around a tight corner and stop in the allocated area. GOSUB stop_initialise_stuff whip_and_terminate_loop: WAIT 0 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_whip_and_terminate ENDIF //checking car isnt dead GOSUB instructor_car_dead IF instructor_car_dead_flag = 1 GOTO mission_failed_dskool ENDIF //checking car has moved and player is pressing cross or square IF car_started = 0 IF NOT instructor_car_dead_flag = 2 PRINT_HELP_FOREVER_CONDITIONAL DSTART 2 // Press and hold ~m~~widget_accelerate~ to begin. PRINT_NOW ( DS1_32 ) 5000 4 // Powerslide around a tight corner and stop in the allocated area. ENDIF GOSUB has_car_started //player is going ELSE IF NOT IS_CAR_DEAD instructor_car //checking timer hasnt ran to 0 GOSUB car_timer_0 //checking car is stopped or not IF IS_CAR_STOPPED instructor_car GOSUB freeze_car_pos //position calculations IF mission_selection = 3 perfect_positionx = finish_rightx perfect_positiony = finish_righty ELSE perfect_positionx = finish_leftx perfect_positiony = finish_lefty ENDIF GOSUB position_score_calcs //heading - perfect heading is 90 for right / 270 for left GET_CAR_HEADING instructor_car instructor_car_heading instructor_car_heading_int =# instructor_car_heading IF instructor_car_heading_int = 0 heading_score = 0 GOTO done_heading_calcs_whip_and_terminate ENDIF IF instructor_car_heading_int = 360 heading_score = 0 GOTO done_heading_calcs_whip_and_terminate ENDIF IF mission_selection = 3 IF instructor_car_heading_int = 90 heading_score = 100 GOTO done_heading_calcs_whip_and_terminate ENDIF IF instructor_car_heading_int > 0 IF instructor_car_heading_int < 85 variableb =# instructor_car_heading_int variableb *= 1.16 //1.16 = 99(which is highest score possible) / 85 ( which is 85 - 0) heading_score =# variableb GOTO done_heading_calcs_whip_and_terminate ENDIF ENDIF IF instructor_car_heading_int > 84 IF instructor_car_heading_int < 96 heading_score = 100 ENDIF ENDIF IF instructor_car_heading_int > 95 IF instructor_car_heading_int < 360 variablea = instructor_car_heading_int - 90 variableb =# variablea variableb *= 1.16 variablea =# variableb heading_score = 100 - variablea GOTO done_heading_calcs_whip_and_terminate ENDIF ENDIF ELSE IF instructor_car_heading_int = 270 heading_score = 100 GOTO done_heading_calcs_whip_and_terminate ENDIF IF instructor_car_heading_int > 0 IF instructor_car_heading_int < 265 variableb =# instructor_car_heading_int variableb *= 0.37 //0.37 = 99(which is highest score possible) / 265 ( which is 265 - 0) heading_score =# variableb GOTO done_heading_calcs_whip_and_terminate ENDIF ENDIF IF instructor_car_heading_int > 264 IF instructor_car_heading_int < 276 heading_score = 100 ENDIF ENDIF IF instructor_car_heading_int > 275 IF instructor_car_heading_int < 360 variablea = instructor_car_heading_int - 270 variableb =# variablea variableb *= 1.16 variablea =# variableb heading_score = 100 - variablea GOTO done_heading_calcs_whip_and_terminate ENDIF ENDIF ENDIF done_heading_calcs_whip_and_terminate: IF heading_score < 1 heading_score = 0 ENDIF overall_score = position_score + heading_score overall_score /= 2 IF position_score = 0 overall_score = 0 ENDIF //losing points for hitting cones GOSUB damage_cones_calcs //checking overall score is greater than 0 and clearing prints GOSUB checking_overall_score //checking overall score against the best score at present IF overall_score > f1_whiprightterminate_best_score f1_old_score = f1_whiprightterminate_best_score f1_whiprightterminate_best_score = overall_score f1_print_top_scores_flag = 1 GOSUB f1_medal_check ELSE f1_which_medal_displayed = 0 ENDIF //opening next level IF f1_which_missions_are_open_flag = 4 IF overall_score > 69 f1_print_top_scores_flag = 2 f1_which_missions_are_open_flag = 5 instructor_car_dead_flag = 2 f1_last_played = 5 ENDIF ENDIF //printing scores onscreen timera = 0 whip_and_terminate_scores_loop: WAIT 0 //changing camera position GOSUB setting_up_camera IF NOT f1_print_top_scores_flag = 2 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_whip_and_terminate ENDIF ENDIF //displaying scores GOSUB display_head_pos_dam_text //checking if player has skipped watching the scores GOSUB skip_scores IF finished_watching_scores = 1 GOTO after_scores_whip_and_terminate ENDIF GOTO whip_and_terminate_scores_loop //reseting for another try after_scores_whip_and_terminate: GOSUB mini_cleanup GOSUB deleting_cones IF instructor_car_dead_flag = 2 CLEAR_PRINTS GOTO noticeboard_setup ELSE GOTO refresh_whip_and_terminate ENDIF ENDIF ENDIF ENDIF GOTO whip_and_terminate_loop ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////Controlling a burst tyre//////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF mission_selection = 5 ///////////////remember to unload cars at end of level///////////// refresh_pop_control: GOSUB start_initialise_stuff setup_pop_control: //////setting up variables for this specific challenge///// perfect_heading = 180.0 car_timer = 7000 GOSUB setting_up_variables //creating cars CREATE_CAR COPCARSF perfect_positionx perfect_positiony perfect_positionz instructor_car SET_CAR_HEADING instructor_car perfect_heading //getting coords to burst tyres GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 2.0 38.0 -0.5 perfect_positionx perfect_positiony perfect_positionz GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car -2.0 40.0 -0.5 car_posx car_posy perfect_positionz //creating stinger CREATE_OBJECT temp_stinger2 -2050.8 -167.0 34.6 f1_stinger SET_OBJECT_HEADING f1_stinger 90.0 //creating cones GOSUB creating_cones IF playback_flag = 0 DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION -2047.7 -243.3 37.0 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2049.7 -227.4 34.1 JUMP_CUT IF NOT IS_CAR_DEAD instructor_car CREATE_CHAR_INSIDE_CAR instructor_car PEDTYPE_MISSION1 SFPD1 f1_test_crash_dummy ENDIF RETURN ENDIF GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 0.0 104.0 0.0 finish_rightx finish_righty perfect_positionz CLEAR_PRINTS PRINT_HELP_FOREVER_CONDITIONAL DSTART 2 // Press and hold ~m~~widget_accelerate~ to begin. PRINT_NOW ( DS1_30 ) 5000 4 // Drive to the end of the track, a tyre will blow out half way there. GOSUB stop_initialise_stuff pop_control_loop: WAIT 0 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_pop_control ENDIF //checking car isnt dead GOSUB instructor_car_dead IF instructor_car_dead_flag = 1 GOTO mission_failed_dskool ENDIF IF car_started = 0 IF NOT instructor_car_dead_flag = 2 PRINT_HELP_FOREVER_CONDITIONAL DSTART 2 // Press and hold ~m~~widget_accelerate~ to begin. PRINT_NOW ( DS1_30 ) 5000 4 // Drive to the end of the track, a tyre will blow out half way there.~n~For extra control, release the accelerate button. ENDIF GOSUB has_car_started //player is going ELSE IF NOT IS_CAR_DEAD instructor_car //checking timer hasnt ran to 0 GOSUB car_timer_0 //bursting players tyres IF IS_CAR_IN_AREA_2D instructor_car perfect_positionx perfect_positiony car_posx car_posy FALSE IF NOT IS_CAR_TYRE_BURST instructor_car REAR_RIGHT_WHEEL BURST_CAR_TYRE instructor_car REAR_RIGHT_WHEEL ENDIF ENDIF //checking car is stopped or not IF IS_CAR_STOPPED instructor_car GOSUB freeze_car_pos //CALCULATIONS FOR PLAYER SCORE //how close player is to perfect position perfect_positionx = finish_rightx perfect_positiony = finish_righty GET_CAR_COORDINATES instructor_car player_x player_y player_z GET_DISTANCE_BETWEEN_COORDS_2D player_x player_y perfect_positionx perfect_positiony players_distance_from_perfectpos IF players_distance_from_perfectpos > 1.0 IF players_distance_from_perfectpos < 10.0 players_distance_from_perfectpos -= 1.0 players_distance_from_perfectpos *= 11.00 //10.70 = 99(which is highest score possible) / 9.00 ( which is 10 - 1.0) variablea =# players_distance_from_perfectpos position_score = 100 - variablea ELSE position_score = 0 ENDIF ELSE position_score = 100 ENDIF IF NOT IS_CAR_TYRE_BURST instructor_car REAR_RIGHT_WHEEL position_score = 0 ENDIF //heading - perfect heading is 180 GET_CAR_HEADING instructor_car instructor_car_heading instructor_car_heading_int =# instructor_car_heading IF instructor_car_heading_int = 0 heading_score = 0 GOTO done_heading_calcs_pop_control ENDIF IF instructor_car_heading_int = 180 heading_score = 100 GOTO done_heading_calcs_pop_control ENDIF IF instructor_car_heading_int = 360 heading_score = 0 GOTO done_heading_calcs_pop_control ENDIF IF instructor_car_heading_int > 0 IF instructor_car_heading_int < 175 variableb =# instructor_car_heading_int variableb *= 0.56 //0.56 = 99(which is highest score possible) / 175 ( which is 175 - 0) heading_score =# variableb GOTO done_heading_calcs_pop_control ENDIF ENDIF IF instructor_car_heading_int > 174 IF instructor_car_heading_int < 186 heading_score = 100 ENDIF ENDIF IF instructor_car_heading_int > 185 IF instructor_car_heading_int < 360 variablea = instructor_car_heading_int - 180 variableb =# variablea variableb *= 0.56 variablea =# variableb heading_score = 100 - variablea GOTO done_heading_calcs_pop_control ENDIF ENDIF done_heading_calcs_pop_control: IF heading_score < 1 heading_score = 0 ENDIF overall_score = position_score + heading_score overall_score /= 2 IF position_score = 0 overall_score = 0 ENDIF //losing points for hitting cones GOSUB damage_cones_calcs //checking overall score is greater than 0 and clearing prints GOSUB checking_overall_score //checking overall score against the best score at present IF overall_score > f1_popcontrol_best_score f1_old_score = f1_popcontrol_best_score f1_popcontrol_best_score = overall_score f1_print_top_scores_flag = 1 GOSUB f1_medal_check ELSE f1_which_medal_displayed = 0 ENDIF //opening next level IF f1_which_missions_are_open_flag = 5 IF overall_score > 69 f1_print_top_scores_flag = 2 f1_which_missions_are_open_flag = 7 instructor_car_dead_flag = 2 f1_last_played = 7 ENDIF ENDIF //printing scores onscreen timera = 0 pop_control_scores_loop: WAIT 0 //changing camera position GOSUB setting_up_camera IF NOT f1_print_top_scores_flag = 2 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_pop_control ENDIF ENDIF //displaying scores GOSUB display_head_pos_dam_text //checking if player has skipped watching the scores GOSUB skip_scores IF finished_watching_scores = 1 GOTO after_scores_pop_control ENDIF GOTO pop_control_scores_loop //reseting for another try after_scores_pop_control: GOSUB mini_cleanup DELETE_OBJECT f1_stinger GOSUB deleting_cones IF instructor_car_dead_flag = 2 CLEAR_PRINTS GOTO noticeboard_setup ELSE GOTO refresh_pop_control ENDIF ENDIF ENDIF ENDIF GOTO pop_control_loop ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////Burn and lap./////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF mission_selection = 6 OR mission_selection = 7 refresh_burn_and_lap: GOSUB start_initialise_stuff setup_burn_and_lap: IF IS_XBOX_VERSION // HACKED - mobile version test num_burn_laps_max = 3 ELSE num_burn_laps_max = 5 ENDIF //////setting up variables for this specific challenge///// perfect_heading = 180.0 car_timer = 0 GOSUB setting_up_variables //creating cars CREATE_CAR banshee perfect_positionx perfect_positiony perfect_positionz instructor_car SET_CAR_HEADING instructor_car perfect_heading //creating cones GOSUB creating_cones IF mission_selection = 6 //end of first straight GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car -4.0 50.0 0.0 area_check1ax area_check1ay player_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 4.0 44.0 0.0 area_check1bx area_check1by player_z //start of second straight GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 12.0 38.0.0 0.0 area_check2ax area_check2ay player_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 4.0 44.0 0.0 area_check2bx area_check2by player_z //end of second straight GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 4.0 2.0 0.0 area_check3ax area_check3ay player_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 12.0 -4.0 0.0 area_check3bx area_check3by player_z //end of lap GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 4.0 2.0 0.0 area_check4ax area_check4ay player_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car -4.0 8.0 0.0 area_check4bx area_check4by player_z CREATE_OBJECT ad_finish -2050.5 -135.5 34.35 f1_stinger //SET_OBJECT_HEADING f1_stinger 90.0 ENDIF //moving car to other side if burning left and getting area check coords IF mission_selection = 7 //end of first straight GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 4.0 44.0 0.0 area_check1ax area_check1ay player_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 12.0 50.0 0.0 area_check1bx area_check1by player_z //start of second straight GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 4.0 44.0 0.0 area_check2ax area_check2ay player_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car -4.0 38.0 0.0 area_check2bx area_check2by player_z //end of second straight GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 4.0 2.0 0.0 area_check3ax area_check3ay player_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car -4.0 -4.0 0.0 area_check3bx area_check3by player_z //end of lap GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 4.0 2.0 0.0 area_check4ax area_check4ay player_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 12.0 8.0 0.0 area_check4bx area_check4by player_z //moving car GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 8.0 0.0 0.0 car_posx car_posy player_z CREATE_OBJECT ad_finish -2058.5 -135.5 34.35 f1_stinger SET_CAR_COORDINATES instructor_car car_posx car_posy player_z SET_CAR_HEADING instructor_car perfect_heading ENDIF IF playback_flag = 0 DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION -2054.6 -109.1 36.4 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2054.6 -122.0 34.2 JUMP_CUT IF NOT IS_CAR_DEAD instructor_car CREATE_RANDOM_CHAR_AS_DRIVER instructor_car f1_test_crash_dummy ENDIF RETURN ENDIF CLEAR_PRINTS PRINT_HELP_FOREVER_CONDITIONAL DSTART 2 // Press and hold ~m~~widget_accelerate~ to begin. PRINT_NOW ( DS1_29 ) 5000 4 // Do 5 laps in as quick a time as possible.~n~The target time is 27 seconds. GOSUB stop_initialise_stuff burn_and_lap_loop: WAIT 0 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_burn_lap ENDIF //checking car isnt dead GOSUB instructor_car_dead IF instructor_car_dead_flag = 1 GOTO mission_failed_dskool ENDIF //checking car has moved and player is pressing cross or square IF car_started = 0 IF NOT instructor_car_dead_flag = 2 PRINT_HELP_FOREVER_CONDITIONAL DSTART 2 // Press and hold ~m~~widget_accelerate~ to begin. PRINT_WITH_NUMBER_NOW ( DS1_29 ) num_burn_laps_max 5000 4 // Do 5 laps in as quick a time as possible.~n~The target time is 27 seconds. ENDIF GOSUB has_car_started //player is going ELSE IF NOT IS_CAR_DEAD instructor_car //calculating to see if player has gone over the alloted time IF car_timer > 90000 //double the time allowed SET_PLAYER_CONTROL player1 OFF //SET_CAR_TEMP_ACTION instructor_car TEMPACT_HANDBRAKESTRAIGHT 5000 ENDIF //lap counter //checking player goes round a lap IF variablea = 0 IF IS_CAR_IN_AREA_2D instructor_car area_check1ax area_check1ay area_check1bx area_check1by FALSE variablea = 1 ENDIF ENDIF IF variablea = 1 IF IS_CAR_IN_AREA_2D instructor_car area_check2ax area_check2ay area_check2bx area_check2by FALSE variablea = 2 ENDIF ENDIF IF variablea = 2 IF IS_CAR_IN_AREA_2D instructor_car area_check3ax area_check3ay area_check3bx area_check3by FALSE variablea = 3 ENDIF ENDIF IF variablea = 3 IF IS_CAR_IN_AREA_2D instructor_car area_check4ax area_check4ay area_check4bx area_check4by FALSE lap_counter ++ variablea = 0 ENDIF ENDIF CLEAR_PRINTS //printing which lap player is on LVAR_INT num_burn_laps_max_minus1 num_burn_laps_max_minus1 = num_burn_laps_max - 1 IF lap_counter < num_burn_laps_max_minus1 variabled = lap_counter + 1 PRINT_WITH_2_NUMBERS_NOW ( DS1_73 ) variabled num_burn_laps_max 5000 4 // Lap ~1~ of ~1~ ELSE PRINT_NOW ( DS1_74 ) 5000 4 // Final Lap ENDIF //checking car is stopped or not IF IS_CAR_STOPPED instructor_car OR lap_counter = num_burn_laps_max GOSUB freeze_car_pos //CALCULATIONS FOR PLAYER SCORE //calculating overall time variablea = car_timer overall_secs = variablea / 1000 overall_millisecs = overall_secs * 1000 variablec = variablea - overall_millisecs overall_millisecs = variablec / 10 //calculating overall score time_score = 0 IF lap_counter < num_burn_laps_max time_score = 0 ELSE IF variablea < 36000 time_score = 100 ENDIF IF variablea >= 36000 IF variablea < 40000 variablec = variablea - 35999 variableb =# variablec variableb *= 0.0075 //(100 - 70) / (40000 - 35999) variablea =# variableb time_score = 100 - variablea ENDIF ENDIF IF variablea >= 40000 IF variablea < 45000 variablec = variablea - 39999 variableb =# variablec variableb *= 0.0138 //(70 - 0) / (45000 - 39999) variablea =# variableb time_score = 70 - variablea ENDIF ENDIF IF variablea >= 45000 time_score = 0 ENDIF ENDIF IF time_score < 1 time_score = 0 ENDIF IF time_score > 99 time_score = 100 ENDIF overall_score = time_score //losing points for hitting cones GOSUB damage_cones_calcs //checking overall score is greater than 0 and clearing prints GOSUB checking_overall_score //checking overall score against the best score at present IF overall_score > f1_burnlapright_best_score f1_old_score = f1_burnlapright_best_score f1_burnlapright_best_score = overall_score f1_print_top_scores_flag = 1 GOSUB f1_medal_check ELSE f1_which_medal_displayed = 0 ENDIF //opening next level IF f1_which_missions_are_open_flag = 7 IF overall_score > 69 f1_print_top_scores_flag = 2 f1_which_missions_are_open_flag = 9 instructor_car_dead_flag = 2 f1_last_played = 9 ENDIF ENDIF //printing scores onscreen lap_counter = 6 //stopping the 5th rectangle being drawn timera = 0 burn_lap_scores_loop: WAIT 0 //changing camera position GOSUB setting_up_camera IF NOT f1_print_top_scores_flag = 2 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_burn_lap ENDIF ENDIF //displaying scores GOSUB display_head_pos_dam_text //checking if player has skipped watching the scores GOSUB skip_scores IF finished_watching_scores = 1 GOTO after_scores_burn_lap ENDIF GOTO burn_lap_scores_loop //reseting for another try after_scores_burn_lap: GOSUB mini_cleanup DELETE_OBJECT f1_stinger GOSUB deleting_cones IF instructor_car_dead_flag = 2 CLEAR_PRINTS GOTO noticeboard_setup ELSE GOTO refresh_burn_and_lap ENDIF ENDIF ENDIF ENDIF GOTO burn_and_lap_loop ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// Cone Coil//////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF mission_selection = 8 OR mission_selection = 9 refresh_cone_coil: GOSUB start_initialise_stuff setup_cone_coil: REQUEST_MODEL banshee WHILE NOT HAS_MODEL_LOADED banshee WAIT 0 ENDWHILE //////setting up variables for this specific challenge///// perfect_heading = 180.0 car_timer = 13000 GOSUB setting_up_variables //creating cars CREATE_CAR banshee perfect_positionx perfect_positiony perfect_positionz instructor_car SET_CAR_HEADING instructor_car perfect_heading CREATE_OBJECT ad_roadmark1 -2050.0 -172.5 34.35 f1_stinger SET_OBJECT_HEADING f1_stinger 180.0 //creating cones GOSUB creating_cones IF playback_flag = 0 DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION -2042.1 -223.4 36.3 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2049.1 -210.0 34.8 JUMP_CUT IF NOT IS_CAR_DEAD instructor_car CREATE_RANDOM_CHAR_AS_DRIVER instructor_car f1_test_crash_dummy ENDIF RETURN ENDIF //setting up the checkpoint GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS trafficcones[15] 0.0 5.0 0.0 cone_coords_x cone_coords_y cone_coords_z //setting up finishing point GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 0.0 0.0 0.0 finish_rightx finish_righty perfect_positionz CLEAR_PRINTS PRINT_HELP_FOREVER_CONDITIONAL DSTART 2 // Press and hold ~m~~widget_accelerate~ to begin. PRINT_NOW ( DS1_36 ) 5000 4 // Weave through the cones quickly and then return to the start position. GOSUB stop_initialise_stuff cone_coil_loop: WAIT 0 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_cone_coil ENDIF //checking car isnt dead GOSUB instructor_car_dead IF instructor_car_dead_flag = 1 GOTO mission_failed_dskool ENDIF //checking car has moved and player is pressing cross or square IF car_started = 0 IF NOT instructor_car_dead_flag = 2 PRINT_HELP_FOREVER_CONDITIONAL DSTART 2 // Press and hold ~m~~widget_accelerate~ to begin. PRINT_NOW ( DS1_36 ) 5000 4 // Weave through the cones quickly and then return to the start position. ENDIF GOSUB has_car_started //player is going ELSE IF NOT IS_CAR_DEAD instructor_car //checking car havent left area IF NOT IS_CAR_IN_AREA_2D instructor_car -2042.0 -126.0 -2058.0 -220.0 FALSE SET_PLAYER_CONTROL player1 OFF //SET_CAR_TEMP_ACTION instructor_car TEMPACT_HANDBRAKESTRAIGHT 5000 ENDIF //checking player has gone through marker IF lap_counter = 0 IF LOCATE_CAR_3D instructor_car cone_coords_x cone_coords_y cone_coords_z 4.0 4.0 4.0 TRUE lap_counter = 1 ENDIF ENDIF IF lap_counter = 1 IF LOCATE_STOPPED_CAR_3D instructor_car perfect_positionx perfect_positiony perfect_positionz 4.0 4.0 4.0 TRUE lap_counter = 2 ENDIF ENDIF //checking timer hasnt ran to 0 GOSUB car_timer_0 //checking car is stopped or not IF IS_CAR_STOPPED instructor_car GOSUB freeze_car_pos //position score calculations IF lap_counter > 0 GOSUB position_score_calcs ELSE position_score = 0 ENDIF //heading - perfect heading is 0 GET_CAR_HEADING instructor_car instructor_car_heading instructor_car_heading_int =# instructor_car_heading IF instructor_car_heading_int = 0 heading_score = 100 GOTO done_heading_calcs_cone_coil ENDIF IF instructor_car_heading_int = 360 heading_score = 100 GOTO done_heading_calcs_cone_coil ENDIF IF instructor_car_heading_int > 0 IF instructor_car_heading_int < 21 heading_score = 100 ENDIF ENDIF IF instructor_car_heading_int > 179 IF instructor_car_heading_int < 340 variablea = instructor_car_heading_int - 180 variableb =# variablea variableb *= 0.62 heading_score =# variableb GOTO done_heading_calcs_cone_coil ENDIF ENDIF IF instructor_car_heading_int > 339 IF instructor_car_heading_int < 360 heading_score = 100 ENDIF ENDIF IF instructor_car_heading_int > 20 IF instructor_car_heading_int < 180 variableb =# instructor_car_heading_int variableb *= 0.62 //0.62 = 99(which is highest score possible) / 60 ( which is 180 - 20) variablea =# variableb heading_score = 100 - variablea GOTO done_heading_calcs_cone_coil ENDIF ENDIF done_heading_calcs_cone_coil: IF heading_score < 1 heading_score = 0 ENDIF overall_score = position_score + heading_score overall_score /= 2 IF position_score = 0 overall_score = 0 ENDIF //losing points for hitting cones GOSUB damage_cones_calcs //checking overall score is greater than 0 and clearing prints GOSUB checking_overall_score //checking overall score against the best score at present IF overall_score > f1_conecoilright_best_score f1_old_score = f1_conecoilright_best_score f1_conecoilright_best_score = overall_score f1_print_top_scores_flag = 1 GOSUB f1_medal_check ELSE f1_which_medal_displayed = 0 ENDIF //opening next level IF f1_which_missions_are_open_flag = 9 IF overall_score > 69 f1_print_top_scores_flag = 2 f1_which_missions_are_open_flag = 10 instructor_car_dead_flag = 2 f1_last_played = 10 ENDIF ENDIF //printing scores onscreen timera = 0 cone_coil_scores_loop: WAIT 0 //changing camera position GOSUB setting_up_camera IF NOT f1_print_top_scores_flag = 2 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_cone_coil ENDIF ENDIF //displaying scores GOSUB display_head_pos_dam_text //checking if player has skipped watching the scores GOSUB skip_scores IF finished_watching_scores = 1 GOTO after_scores_cone_coil ENDIF GOTO cone_coil_scores_loop //reseting for another try after_scores_cone_coil: GOSUB mini_cleanup DELETE_OBJECT f1_stinger GOSUB deleting_cones IF instructor_car_dead_flag = 2 CLEAR_PRINTS GOTO noticeboard_setup ELSE GOTO refresh_cone_coil ENDIF ENDIF ENDIF ENDIF GOTO cone_coil_loop ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////The "90" Sliding a car inbetween two cars to park it in a tiny space.////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF mission_selection = 10 refresh_90: GOSUB start_initialise_stuff setup_90: ///////////////remember to unload cars at end of level///////////// //////setting up variables for this specific challenge///// perfect_heading = 270.0 car_timer = 6000 GOSUB setting_up_variables //creating cars for the challenge car_posx = perfect_positionx + 7.0 car_posy = perfect_positiony - 75.0 CREATE_CAR BANSHEE car_posx car_posy perfect_positionz dummy_car1 //closest to water SET_CAR_HEADING dummy_car1 perfect_heading FREEZE_CAR_POSITION dummy_car1 TRUE car_posx = perfect_positionx - 7.0 car_posy = perfect_positiony - 75.0 CREATE_CAR BANSHEE car_posx car_posy perfect_positionz dummy_car2 //furthest from water SET_CAR_HEADING dummy_car2 perfect_heading FREEZE_CAR_POSITION dummy_car2 TRUE car_posx = perfect_positionx car_posy = perfect_positiony CREATE_CAR BANSHEE car_posx car_posy perfect_positionz instructor_car SET_CAR_HEADING instructor_car 180.0 IF playback_flag = 0 DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION -2045.8 -210.5 35.3 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2053.5 -198.1 34.2 JUMP_CUT IF NOT IS_CAR_DEAD instructor_car CREATE_RANDOM_CHAR_AS_DRIVER instructor_car f1_test_crash_dummy ENDIF RETURN ENDIF CLEAR_PRINTS PRINT_HELP_FOREVER_CONDITIONAL DSTART 2 // Press and hold ~m~~widget_accelerate~ to begin. PRINT_NOW ( DS1_1 ) 5000 4 // To do a 90, slide the car sideways into the parking space within five seconds. GOSUB stop_initialise_stuff //starting challenge the_90_loop: WAIT 0 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_90 ENDIF //checking car isnt dead GOSUB instructor_car_dead IF instructor_car_dead_flag = 1 GOTO mission_failed_dskool ENDIF //checking car has moved and player is pressing cross or square IF car_started = 0 IF NOT instructor_car_dead_flag = 2 PRINT_HELP_FOREVER_CONDITIONAL DSTART 2 // Press and hold ~m~~widget_accelerate~ to begin. PRINT_NOW ( DS1_1 ) 5000 4 // To do a 90, slide the car sideways into the parking space within five seconds. ENDIF GOSUB has_car_started //player is going ELSE IF NOT IS_CAR_DEAD instructor_car //checking timer hasnt ran to 0 GOSUB car_timer_0 //checking car is stopped or not IF IS_CAR_STOPPED instructor_car GOSUB freeze_car_pos //CALCULATIONS FOR PLAYER SCORE //how close player is to perfect position perfect_positiony -= 75.0 GET_CAR_COORDINATES instructor_car player_x player_y player_z GET_DISTANCE_BETWEEN_COORDS_2D player_x player_y perfect_positionx perfect_positiony players_distance_from_perfectpos IF players_distance_from_perfectpos > 0.5 IF players_distance_from_perfectpos < 5.0 players_distance_from_perfectpos -= 0.5 players_distance_from_perfectpos *= 22.0 // 22.0 = 99(which is highest score possible) / 4.5 ( which is 5 - 0.5) variablea =# players_distance_from_perfectpos position_score = 100 - variablea ELSE position_score = 0 ENDIF ELSE position_score = 100 ENDIF overall_score += position_score //heading - perfect heading is 90 or 270 GET_CAR_HEADING instructor_car instructor_car_heading instructor_car_heading_int =# instructor_car_heading IF instructor_car_heading_int = 0 heading_score = 0 GOTO done_heading_calcs_90 ENDIF IF instructor_car_heading_int = 90 heading_score = 100 GOTO done_heading_calcs_90 ENDIF IF instructor_car_heading_int = 180 heading_score = 0 GOTO done_heading_calcs_90 ENDIF IF instructor_car_heading_int = 270 heading_score = 100 GOTO done_heading_calcs_90 ENDIF IF instructor_car_heading_int > 0 IF instructor_car_heading_int < 85 variableb =# instructor_car_heading_int variableb *= 1.16 //1.16 = 99(which is highest score possible) / 85 ( which is 85 - 0) heading_score =# variableb GOTO done_heading_calcs_90 ENDIF ENDIF IF instructor_car_heading_int > 84 IF instructor_car_heading_int < 96 heading_score = 100 ENDIF ENDIF IF instructor_car_heading_int > 95 IF instructor_car_heading_int < 180 variablea = instructor_car_heading_int - 90 variableb =# variablea variableb *= 1.16 variablea =# variableb heading_score = 100 - variablea GOTO done_heading_calcs_90 ENDIF ENDIF IF instructor_car_heading_int > 180 IF instructor_car_heading_int < 265 variablea = instructor_car_heading_int - 180 variableb =# variablea variableb *= 1.16 heading_score =# variableb GOTO done_heading_calcs_90 ENDIF ENDIF IF instructor_car_heading_int > 264 IF instructor_car_heading_int < 276 heading_score = 100 ENDIF ENDIF IF instructor_car_heading_int > 275 IF instructor_car_heading_int < 360 variablea = instructor_car_heading_int - 270 variableb =# variablea variableb *= 1.16 variablea =# variableb heading_score = 100 - variablea GOTO done_heading_calcs_90 ENDIF ENDIF done_heading_calcs_90: IF heading_score < 1 heading_score = 0 ENDIF overall_score = position_score + heading_score overall_score /= 2 IF position_score = 0 overall_score = 0 ENDIF //how much damage done to players car GOSUB damage_score_calcs //how much damage done to other cars //car 1 other_car_damage = 200 IF NOT IS_CAR_DEAD dummy_car1 GET_CAR_HEALTH dummy_car1 dummy_car1_health total_dummy_car1_health = 1000 - dummy_car1_health total_dummy_car1_health /= 10 IF total_dummy_car1_health > 100 total_dummy_car1_health = 100 ENDIF ENDIF //car 2 IF NOT IS_CAR_DEAD dummy_car2 GET_CAR_HEALTH dummy_car2 dummy_car2_health total_dummy_car2_health = 1000 - dummy_car2_health total_dummy_car2_health /= 10 IF total_dummy_car2_health > 100 total_dummy_car2_health = 100 ENDIF ENDIF other_car_damage = total_dummy_car1_health + total_dummy_car2_health total_car_damage = player_car_damage + other_car_damage overall_score -= total_car_damage //checking overall score is greater than 0 and clearing prints GOSUB checking_overall_score //checking overall score against the best score at present IF overall_score > f1_the90_best_score f1_old_score = f1_the90_best_score f1_the90_best_score = overall_score f1_print_top_scores_flag = 1 GOSUB f1_medal_check ELSE f1_which_medal_displayed = 0 ENDIF //opening next level IF f1_which_missions_are_open_flag = 10 IF overall_score > 69 f1_print_top_scores_flag = 2 f1_which_missions_are_open_flag = 11 instructor_car_dead_flag = 2 f1_last_played = 11 ENDIF ENDIF //printing scores onscreen timera = 0 the_90_scores_loop: WAIT 0 //changing camera position GOSUB setting_up_camera IF NOT f1_print_top_scores_flag = 2 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_90 ENDIF ENDIF //displaying scores GOSUB display_head_pos_dam_text //checking if player has skipped watching the scores GOSUB skip_scores IF finished_watching_scores = 1 GOTO after_scores_90 ENDIF GOTO the_90_scores_loop //reseting for another try after_scores_90: GOSUB mini_cleanup DELETE_CAR dummy_car1 DELETE_CAR dummy_car2 IF instructor_car_dead_flag = 2 CLEAR_PRINTS GOTO noticeboard_setup ELSE GOTO refresh_90 ENDIF ENDIF ENDIF ENDIF GOTO the_90_loop ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////Wheelie Weave/////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF mission_selection = 11 refresh_wheelie_weave: GOSUB start_initialise_stuff setup_wheelie_weave: //////setting up variables for this specific challenge///// perfect_heading = 180.0 car_timer = 0 GOSUB setting_up_variables //creating instructors cars CREATE_CAR BANSHEE perfect_positionx perfect_positiony perfect_positionz instructor_car SET_CAR_HEADING instructor_car perfect_heading // creating jump car_posx = perfect_positionx + 1.0 car_posy = perfect_positiony - 25.0 perfect_heading = 90.0 CREATE_OBJECT garys_luv_ramp car_posx car_posy perfect_positionz ramp2 SET_OBJECT_HEADING ramp2 270.0 //SET_OBJECT_COLLISION ramp2 TRUE //SET_OBJECT_DYNAMIC ramp2 TRUE //setting up the point the player will cross and start calculating car roll GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car -50.0 30.0 0.0 area_check1ax area_check1ay player_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 50.0 200.0 0.0 area_check1bx area_check1by player_z IF playback_flag = 0 DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION -2052.6 -138.4 34.9 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2044.2 -208.2 37.1 JUMP_CUT IF NOT IS_CAR_DEAD instructor_car CREATE_RANDOM_CHAR_AS_DRIVER instructor_car f1_test_crash_dummy ENDIF RETURN ENDIF CLEAR_PRINTS GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 0.0 100.0 0.0 finish_rightx finish_righty perfect_positionz PRINT_HELP_FOREVER_CONDITIONAL DSTART 2 // Press and hold ~m~~widget_accelerate~ to begin. PRINT_NOW ( DS1_34 ) 5000 4 // Keep the car on two wheels until the end of the track. GOSUB stop_initialise_stuff wheelie_weave_loop: WAIT 0 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_wheelie_weave ENDIF //checking car isnt dead GOSUB instructor_car_dead IF instructor_car_dead_flag = 1 GOTO mission_failed_dskool ENDIF //player is going IF car_started = 0 IF NOT instructor_car_dead_flag = 2 PRINT_HELP_FOREVER_CONDITIONAL DSTART 2 // Press and hold ~m~~widget_accelerate~ to begin. PRINT_NOW ( DS1_34 ) 5000 4 // Keep the car on two wheels until the end of the track. ENDIF GOSUB has_car_started ELSE IF NOT IS_CAR_DEAD instructor_car LVAR_FLOAT fAdjustedY fAdjustedY = finish_righty + 10.0 //drawing locate IF LOCATE_CHAR_ANY_MEANS_3D scplayer finish_rightx fAdjustedY perfect_positionz 4.0 4.0 4.0 TRUE ENDIF //debug IF IS_CAR_IN_AREA_2D instructor_car area_check1ax area_check1ay area_check1bx area_check1by FALSE GET_CAR_ROLL instructor_car variableb IF variableb < 4.0 IF variableb > -4.0 APPLY_BRAKES_TO_PLAYERS_CAR player1 ON ENDIF ENDIF ENDIF //checking car is stopped or not IF IS_CAR_STOPPED instructor_car GOSUB freeze_car_pos //checking car is stopped or not IF IS_CAR_STOPPED instructor_car GOSUB freeze_car_pos //CALCULATIONS FOR PLAYER SCORE //how close player is to perfect position perfect_positionx = finish_rightx perfect_positiony = finish_righty GET_CAR_COORDINATES instructor_car player_x player_y player_z GET_DISTANCE_BETWEEN_COORDS_2D player_x player_y perfect_positionx fAdjustedY players_distance_from_perfectpos IF players_distance_from_perfectpos > 1.0 IF players_distance_from_perfectpos < 10.0 players_distance_from_perfectpos -= 1.0 players_distance_from_perfectpos *= 11.00 //10.70 = 99(which is highest score possible) / 9.00 ( which is 10 - 1.0) variablea =# players_distance_from_perfectpos position_score = 100 - variablea ELSE position_score = 0 ENDIF ELSE position_score = 100 ENDIF //heading - perfect heading is 180 GET_CAR_HEADING instructor_car instructor_car_heading instructor_car_heading_int =# instructor_car_heading IF instructor_car_heading_int = 0 heading_score = 0 GOTO done_heading_calcs_wheelie_weave ENDIF IF instructor_car_heading_int = 180 heading_score = 100 GOTO done_heading_calcs_wheelie_weave ENDIF IF instructor_car_heading_int = 360 heading_score = 0 GOTO done_heading_calcs_wheelie_weave ENDIF IF instructor_car_heading_int > 0 IF instructor_car_heading_int < 175 variableb =# instructor_car_heading_int variableb *= 0.56 //0.56 = 99(which is highest score possible) / 175 ( which is 175 - 0) heading_score =# variableb GOTO done_heading_calcs_wheelie_weave ENDIF ENDIF IF instructor_car_heading_int > 174 IF instructor_car_heading_int < 186 heading_score = 100 ENDIF ENDIF IF instructor_car_heading_int > 185 IF instructor_car_heading_int < 360 variablea = instructor_car_heading_int - 180 variableb =# variablea variableb *= 0.56 variablea =# variableb heading_score = 100 - variablea GOTO done_heading_calcs_wheelie_weave ENDIF ENDIF done_heading_calcs_wheelie_weave: IF heading_score < 1 heading_score = 0 ENDIF overall_score = position_score + heading_score overall_score /= 2 IF position_score = 0 overall_score = 0 ENDIF //how much damage done to players car GOSUB damage_score_calcs total_car_damage = player_car_damage overall_score -= total_car_damage //checking overall score is greater than 0 and clearing prints GOSUB checking_overall_score //checking overall score against the best score at present IF overall_score > f1_wheelieweave_best_score f1_old_score = f1_wheelieweave_best_score f1_wheelieweave_best_score = overall_score f1_print_top_scores_flag = 1 GOSUB f1_medal_check ELSE f1_which_medal_displayed = 0 ENDIF //opening next level IF f1_which_missions_are_open_flag = 11 IF overall_score > 69 IF NOT IS_XBOX_VERSION // HACKED - mobile version check f1_print_top_scores_flag = 2 f1_which_missions_are_open_flag = 13 instructor_car_dead_flag = 2 f1_last_played = 12 ELSE f1_print_top_scores_flag = 2 f1_which_missions_are_open_flag = 14 instructor_car_dead_flag = 2 f1_last_played = 14 ENDIF ENDIF ENDIF //printing scores onscreen timera = 0 wheelie_weave_scores_loop: WAIT 0 //changing camera position GOSUB setting_up_camera IF NOT f1_print_top_scores_flag = 2 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_wheelie_weave ENDIF ENDIF //displaying scores GOSUB display_head_pos_dam_text //checking if player has skipped watching the scores GOSUB skip_scores IF finished_watching_scores = 1 GOTO after_scores_wheelie_weave ENDIF GOTO wheelie_weave_scores_loop //reseting for another try after_scores_wheelie_weave: GOSUB mini_cleanup DELETE_OBJECT ramp2 IF instructor_car_dead_flag = 2 CLEAR_PRINTS GOTO noticeboard_setup ELSE GOTO refresh_wheelie_weave ENDIF ENDIF ENDIF ENDIF ENDIF GOTO wheelie_weave_loop ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////The reverse spin and go.//////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF mission_selection = 12 OR mission_selection = 13 ///////////////remember to unload cars at end of level///////////// refresh_spin_go: GOSUB start_initialise_stuff setup_spin_go: //////setting up variables for this specific challenge///// perfect_heading = 0.0 car_timer = 7000 GOSUB setting_up_variables //creating cars CREATE_CAR taxi perfect_positionx perfect_positiony perfect_positionz instructor_car SET_CAR_HEADING instructor_car perfect_heading SET_FREEBIES_IN_VEHICLE instructor_car FALSE //creating cones GOSUB creating_cones IF playback_flag = 0 DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION -2051.9 -185.5 37.8 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2052.2 -152.9 34.3 JUMP_CUT IF NOT IS_CAR_DEAD instructor_car CREATE_RANDOM_CHAR_AS_DRIVER instructor_car f1_test_crash_dummy ENDIF RETURN ENDIF //setting up the perfect finish points IF mission_selection = 12 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 6.5 -40.0 0.0 finish_rightx finish_righty perfect_positionz ELSE GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car -6.5 -40.0 0.0 finish_leftx finish_lefty perfect_positionz ENDIF CLEAR_PRINTS PRINT_HELP_FOREVER DSREVE // Press and hold ~m~~widget_handbrake~ to begin. PRINT_HELP_FOREVER DS1_28 // ~s~Use the front wheel drive car to reverse then quickly spin around 180 degrees. Press ~m~~widget_look_left~ and ~m~~widget_look_right~ together to look behind. GOSUB stop_initialise_stuff spin_and_go_loop: WAIT 0 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_spin_go ENDIF //checking car isnt dead GOSUB instructor_car_dead IF instructor_car_dead_flag = 1 GOTO mission_failed_dskool ENDIF //checking car has moved and player is pressing cross or square IF car_started = 0 IF NOT instructor_car_dead_flag = 2 PRINT_HELP_FOREVER DSREVE // Press and hold ~m~~widget_handbrake~ to begin. PRINT_NOW ( DS1_28 ) 5000 4 // Use the front wheel drive car to reverse then quickly spin around 180 degrees.~n~Press the L2 button and R2 button together to look behind. ENDIF GOSUB has_car_started //player is going ELSE IF NOT IS_CAR_DEAD instructor_car //checking timer hasnt ran to 0 GOSUB car_timer_0 //checking car is stopped or not IF IS_CAR_STOPPED instructor_car GOSUB freeze_car_pos //position score calculations IF mission_selection = 12 perfect_positionx = finish_rightx perfect_positiony = finish_righty ELSE perfect_positionx = finish_leftx perfect_positiony = finish_lefty ENDIF GOSUB position_score_calcs IF mission_selection = 12 IF NOT IS_CAR_IN_AREA_2D instructor_car -2046.9 -161.4 -2041.2 -174.5 FALSE position_score = 0 ENDIF ELSE IF NOT IS_CAR_IN_AREA_2D instructor_car -2054.2 -161.4 -2060.0 -174.5 FALSE position_score = 0 ENDIF ENDIF //heading - perfect heading is 180 GET_CAR_HEADING instructor_car instructor_car_heading instructor_car_heading_int =# instructor_car_heading IF instructor_car_heading_int = 0 heading_score = 0 GOTO done_heading_calcs_spin_go ENDIF IF instructor_car_heading_int = 180 heading_score = 100 GOTO done_heading_calcs_spin_go ENDIF IF instructor_car_heading_int = 360 heading_score = 0 GOTO done_heading_calcs_spin_go ENDIF IF instructor_car_heading_int > 0 IF instructor_car_heading_int < 175 variableb =# instructor_car_heading_int variableb *= 0.56 //0.56 = 99(which is highest score possible) / 175 ( which is 175 - 0) heading_score =# variableb GOTO done_heading_calcs_spin_go ENDIF ENDIF IF instructor_car_heading_int > 174 IF instructor_car_heading_int < 186 heading_score = 100 ENDIF ENDIF IF instructor_car_heading_int > 185 IF instructor_car_heading_int < 360 variablea = instructor_car_heading_int - 180 variableb =# variablea variableb *= 0.56 variablea =# variableb heading_score = 100 - variablea GOTO done_heading_calcs_spin_go ENDIF ENDIF done_heading_calcs_spin_go: IF heading_score < 1 heading_score = 0 ENDIF overall_score = position_score + heading_score overall_score /= 2 IF position_score = 0 overall_score = 0 ENDIF //losing points for hitting cones GOSUB damage_cones_calcs //checking overall score is greater than 0 and clearing prints GOSUB checking_overall_score //checking overall score against the best score at present IF overall_score > f1_spinrightgo_best_score f1_old_score = f1_spinrightgo_best_score f1_spinrightgo_best_score = overall_score f1_print_top_scores_flag = 1 GOSUB f1_medal_check ELSE f1_which_medal_displayed = 0 ENDIF //opening next level IF f1_which_missions_are_open_flag = 13 IF overall_score > 69 f1_print_top_scores_flag = 2 f1_which_missions_are_open_flag = 14 instructor_car_dead_flag = 2 f1_last_played = 14 ENDIF ENDIF //printing scores onscreen timera = 0 spin_go_scores_loop: WAIT 0 //changing camera position GOSUB setting_up_camera IF NOT f1_print_top_scores_flag = 2 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_spin_go ENDIF ENDIF //displaying scores GOSUB display_head_pos_dam_text //checking if player has skipped watching the scores GOSUB skip_scores IF finished_watching_scores = 1 GOTO after_scores_spin_go ENDIF GOTO spin_go_scores_loop //reseting for another try after_scores_spin_go: GOSUB mini_cleanup GOSUB deleting_cones IF instructor_car_dead_flag = 2 CLEAR_PRINTS GOTO noticeboard_setup ELSE GOTO refresh_spin_go ENDIF ENDIF ENDIF ENDIF GOTO spin_and_go_loop ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////P. I. T. Technique////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF mission_selection = 14 ///////////////remember to unload cars at end of level///////////// refresh_pit_technique: GOSUB start_initialise_stuff setup_pit_technique: //////setting up variables for this specific challenge///// perfect_heading = 180.0 car_timer = 0 GOSUB setting_up_variables //creating instructors cars CREATE_CAR COPCARSF perfect_positionx perfect_positiony perfect_positionz instructor_car SET_CAR_HEADING instructor_car perfect_heading SET_FREEBIES_IN_VEHICLE instructor_car FALSE // creating COPCARSF car car_posx = perfect_positionx car_posy = perfect_positiony - 10.0 CREATE_CAR COPCARSF car_posx car_posy perfect_positionz dummy_car1 SET_CAR_HEADING dummy_car1 perfect_heading CREATE_RANDOM_CHAR_AS_DRIVER dummy_car1 f1_test_crash_dummy2 SET_CAR_CRUISE_SPEED dummy_car1 0.0 CREATE_OBJECT ad_roadmark2 -2045.0 -177.5 34.35 f1_stinger SET_OBJECT_HEADING f1_stinger 180.0 CREATE_OBJECT ad_roadmark2 -2057.0 -177.5 34.35 ramp1 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car -12.0 -4.0 0.0 area_check1ax area_check1ay player_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 12.0 100.0 0.0 area_check1bx area_check1by player_z IF playback_flag = 0 DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION -2047.0 -220.2 36.0 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2050.2 -193.9 32.5 JUMP_CUT IF NOT IS_CAR_DEAD instructor_car CREATE_CHAR_INSIDE_CAR instructor_car PEDTYPE_MISSION1 SFPD1 f1_test_crash_dummy ENDIF RETURN ENDIF CLEAR_PRINTS PRINT_HELP_FOREVER_CONDITIONAL DSTART 2 // Press and hold ~m~~widget_accelerate~ to begin. PRINT_NOW ( DS1_35 ) 5000 4 // Perform a P.I.T. Technique to spin the other car around with minimum damage.~n~Finish as close to the other car as possible. GOSUB stop_initialise_stuff pit_technique_loop: WAIT 0 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_pit_technique ENDIF //checking car isnt dead GOSUB instructor_car_dead IF instructor_car_dead_flag = 1 GOTO mission_failed_dskool ENDIF /* IF NOT IS_CAR_DEAD dummy_car1 IF NOT IS_RECORDING_GOING_ON_FOR_CAR dummy_car1 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_SHIFT START_RECORDING_CAR dummy_car1 3 ENDIF ELSE IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_M STOP_RECORDING_CAR dummy_car1 ENDIF ENDIF ENDIF */ //player is going IF car_started = 0 IF NOT instructor_car_dead_flag = 2 PRINT_HELP_FOREVER_CONDITIONAL DSTART 2 // Press and hold ~m~~widget_accelerate~ to begin. PRINT_NOW ( DS1_35 ) 5000 4 // Perform a P.I.T. Technique to spin the other car around with minimum damage.~n~Finish as close to the other car as possible. ENDIF GOSUB has_car_started ELSE IF NOT IS_CAR_DEAD instructor_car IF NOT IS_CAR_DEAD dummy_car1 //checking cars havent left area IF NOT IS_CAR_IN_AREA_2D dummy_car1 area_check1ax area_check1ay area_check1bx area_check1by FALSE FREEZE_CAR_POSITION dummy_car1 TRUE SET_PLAYER_CONTROL player1 OFF //SET_CAR_TEMP_ACTION instructor_car TEMPACT_HANDBRAKESTRAIGHT 5000 ENDIF IF NOT IS_CAR_IN_AREA_2D instructor_car area_check1ax area_check1ay area_check1bx area_check1by FALSE FREEZE_CAR_POSITION dummy_car1 TRUE SET_PLAYER_CONTROL player1 OFF //SET_CAR_TEMP_ACTION instructor_car TEMPACT_HANDBRAKESTRAIGHT 5000 ENDIF //checking car hasnt spun around too much GET_CAR_HEADING dummy_car1 instructor_car_heading IF instructor_car_heading > 340.0 OR instructor_car_heading < 20.0 FREEZE_CAR_POSITION dummy_car1 TRUE SET_PLAYER_CONTROL player1 OFF //SET_CAR_TEMP_ACTION instructor_car TEMPACT_HANDBRAKESTRAIGHT 5000 ENDIF //checking car is stopped or not IF IS_CAR_STOPPED instructor_car FREEZE_CAR_POSITION dummy_car1 TRUE GOSUB freeze_car_pos //CALCULATIONS FOR PLAYER SCORE //how close player is to perfect position GET_CAR_COORDINATES dummy_car1 perfect_positionx perfect_positiony perfect_positionz GET_CAR_COORDINATES instructor_car player_x player_y player_z GET_DISTANCE_BETWEEN_COORDS_2D player_x player_y perfect_positionx perfect_positiony players_distance_from_perfectpos IF players_distance_from_perfectpos > 4.0 IF players_distance_from_perfectpos < 11.0 players_distance_from_perfectpos -= 4.0 players_distance_from_perfectpos *= 14.14 //14.14 = 99(which is highest score possible) / 7 ( which is 11 - 4) variablea =# players_distance_from_perfectpos position_score = 100 - variablea ELSE position_score = 0 ENDIF ELSE position_score = 100 ENDIF overall_score += position_score //heading - perfect heading is 0 GET_CAR_HEADING dummy_car1 instructor_car_heading instructor_car_heading_int =# instructor_car_heading IF instructor_car_heading_int = 0 heading_score = 100 GOTO done_heading_calcs_pit_technique ENDIF IF instructor_car_heading_int = 360 heading_score = 100 GOTO done_heading_calcs_pit_technique ENDIF IF instructor_car_heading_int > 0 IF instructor_car_heading_int < 21 heading_score = 100 ENDIF ENDIF IF instructor_car_heading_int > 179 IF instructor_car_heading_int < 340 variablea = instructor_car_heading_int - 180 variableb =# variablea variableb *= 0.62 heading_score =# variableb GOTO done_heading_calcs_pit_technique ENDIF ENDIF IF instructor_car_heading_int > 339 IF instructor_car_heading_int < 360 heading_score = 100 ENDIF ENDIF IF instructor_car_heading_int > 20 IF instructor_car_heading_int < 180 variableb =# instructor_car_heading_int variableb *= 0.62 //0.62 = 99(which is highest score possible) / 60 ( which is 180 - 20) variablea =# variableb heading_score = 100 - variablea GOTO done_heading_calcs_pit_technique ENDIF ENDIF done_heading_calcs_pit_technique: IF heading_score < 1 heading_score = 0 ENDIF overall_score = position_score + heading_score overall_score /= 2 IF position_score = 0 overall_score = 0 ENDIF //how much damage done to players car GOSUB damage_score_calcs IF player_car_damage < 3 player_car_damage = 0 ENDIF total_car_damage = player_car_damage overall_score -= total_car_damage //checking overall score is greater than 0 and clearing prints GOSUB checking_overall_score //checking overall score against the best score at present IF overall_score > f1_pittechnique_best_score f1_old_score = f1_pittechnique_best_score f1_pittechnique_best_score = overall_score f1_print_top_scores_flag = 1 GOSUB f1_medal_check ELSE f1_which_medal_displayed = 0 ENDIF //opening next level IF f1_which_missions_are_open_flag = 14 IF overall_score > 69 f1_print_top_scores_flag = 2 f1_which_missions_are_open_flag = 15 instructor_car_dead_flag = 2 f1_last_played = 15 ENDIF ENDIF //printing scores onscreen timera = 0 pit_technique_scores_loop: WAIT 0 //changing camera position GOSUB setting_up_camera IF NOT f1_print_top_scores_flag = 2 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_pit_technique ENDIF ENDIF //displaying scores GOSUB display_head_pos_dam_text //checking if player has skipped watching the scores GOSUB skip_scores IF finished_watching_scores = 1 GOTO after_scores_pit_technique ENDIF GOTO pit_technique_scores_loop //reseting for another try after_scores_pit_technique: GOSUB mini_cleanup DELETE_CAR dummy_car1 DELETE_OBJECT f1_stinger DELETE_OBJECT ramp1 DELETE_CHAR f1_test_crash_dummy2 IF instructor_car_dead_flag = 2 CLEAR_PRINTS GOTO noticeboard_setup ELSE GOTO refresh_pit_technique ENDIF ENDIF ENDIF ENDIF ENDIF GOTO pit_technique_loop ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////Alley oop/////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF mission_selection = 15 refresh_swift_escape: GOSUB start_initialise_stuff setup_swift_escape: //////setting up variables for this specific challenge///// perfect_heading = 180.0 car_timer = 6000 GOSUB setting_up_variables //creating instructors cars car_posy = perfect_positiony + 20.0 CREATE_CAR BANSHEE perfect_positionx car_posy perfect_positionz instructor_car SET_CAR_HEADING instructor_car perfect_heading SET_CAR_CAN_BE_VISIBLY_DAMAGED instructor_car FALSE // creating jump car_posx = perfect_positionx car_posy = perfect_positiony - 55.0 perfect_heading = 90.0 CREATE_OBJECT ad_jump car_posx car_posy perfect_positionz ramp1 SET_OBJECT_HEADING ramp1 180.0 //SET_OBJECT_COLLISION ramp1 TRUE // creating cars to jump car_posy = perfect_positiony - 75.0 CREATE_CAR INFERNUS car_posx car_posy perfect_positionz dummy_car1 //closest to ramp SET_CAR_HEADING dummy_car1 perfect_heading FREEZE_CAR_POSITION dummy_car1 TRUE car_posy = perfect_positiony - 80.0 CREATE_CAR INFERNUS car_posx car_posy perfect_positionz dummy_car2 //furthest from ramp SET_CAR_HEADING dummy_car2 perfect_heading FREEZE_CAR_POSITION dummy_car2 TRUE IF playback_flag = 0 DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION -2061.2 -158.9 37.5 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2040.3 -197.0 35.1 JUMP_CUT IF NOT IS_CAR_DEAD instructor_car CREATE_RANDOM_CHAR_AS_DRIVER instructor_car f1_test_crash_dummy ENDIF RETURN ENDIF CLEAR_PRINTS PRINT_HELP_FOREVER_CONDITIONAL DSTART 2 // Press and hold ~m~~widget_accelerate~ to begin. PRINT_HELP_FOREVER DS1_33 // Do a barrel roll in mid air and land it perfectly. While in the air, release the accelerate button and press and hold ~m~~widget_ped_move_left~ and ~m~~widget_ped_move_right~ to adjust the car's pitch. GOSUB stop_initialise_stuff swift_escape_loop: WAIT 0 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_swift_escape ENDIF //checking car isnt dead GOSUB instructor_car_dead IF instructor_car_dead_flag = 1 GOTO mission_failed_dskool ENDIF //player is going IF car_started = 0 IF NOT instructor_car_dead_flag = 2 PRINT_HELP_FOREVER_CONDITIONAL DSTART 2 // Press and hold ~m~~widget_accelerate~ to begin. PRINT_HELP_FOREVER DS1_33 // Do a barrel roll in mid air and land it perfectly. While in the air, release the accelerate button and press and hold ~m~~widget_ped_move_left~ and ~m~~widget_ped_move_right~ to adjust the car's pitch. ENDIF GOSUB has_car_started ELSE IF NOT IS_CAR_DEAD instructor_car //checking timer hasnt ran to 0 GOSUB car_timer_0 //checking player has gone through marker IF lap_counter = 0 IF IS_CAR_IN_AREA_3D instructor_car -2047.0 -186.0 37.2 -2054.0 -190.0 39.0 FALSE lap_counter = 1 ENDIF ENDIF IF lap_counter = 1 SET_CAR_HEALTH instructor_car 1000 IF NOT IS_CAR_IN_AIR_PROPER instructor_car IF IS_CAR_UPSIDEDOWN instructor_car SET_CAR_HEALTH instructor_car 700 SET_CAR_CAN_BE_VISIBLY_DAMAGED instructor_car TRUE lap_counter = 2 ENDIF ENDIF ENDIF //checking if car went upside down IF NOT IS_CAR_IN_AIR_PROPER instructor_car IF IS_CAR_UPSIDEDOWN instructor_car APPLY_BRAKES_TO_PLAYERS_CAR player1 ON ENDIF ENDIF //checking car hasnt left area IF NOT IS_CAR_IN_AREA_2D instructor_car -2042.0 -100.0 -2058.0 -280.0 FALSE ////IF CHANGING THE X, CHANGE THE CAR_AREA ABOVE SET_PLAYER_CONTROL player1 OFF ENDIF //checking car hasnt spun around too much GET_CAR_HEADING instructor_car instructor_car_heading IF instructor_car_heading > 200.0 OR instructor_car_heading < 160.0 variableb = 1.0 ENDIF //checking car has done a full barrel roll GET_CAR_ROLL instructor_car instructor_car_roll //check if car is going clockwise or anticlockwise IF instructor_car_roll_score = 0 IF instructor_car_roll > 5.0 instructor_car_roll_plus_minus = 1 ENDIF IF instructor_car_roll < -5.0 instructor_car_roll_plus_minus = 2 ENDIF ENDIF //scores for a clockwise roll IF instructor_car_roll_plus_minus = 1 IF instructor_car_roll_score = 0 IF instructor_car_roll > 90.0 instructor_car_roll_score = 1 ENDIF ENDIF IF instructor_car_roll_score = 1 IF instructor_car_roll > 170.0 instructor_car_roll_score = 2 ENDIF ENDIF IF instructor_car_roll_score = 2 IF instructor_car_roll < 0.0 IF instructor_car_roll > -170.0 instructor_car_roll_score = 3 ENDIF ENDIF ENDIF IF instructor_car_roll_score = 3 IF instructor_car_roll < 0.0 IF instructor_car_roll > -90.0 instructor_car_roll_score = 4 ENDIF ENDIF IF instructor_car_roll > 10.0 instructor_car_roll_score = 0 ENDIF ENDIF IF instructor_car_roll_score = 4 IF instructor_car_roll < 0.0 IF instructor_car_roll > -5.0 instructor_car_roll_score = 5 ENDIF ENDIF ENDIF ENDIF //scores for a anti-clockwise roll IF instructor_car_roll_plus_minus = 2 IF instructor_car_roll_score = 0 IF instructor_car_roll < -90.0 instructor_car_roll_score = 1 ENDIF ENDIF IF instructor_car_roll_score = 1 IF instructor_car_roll < -170.0 instructor_car_roll_score = 2 ENDIF ENDIF IF instructor_car_roll_score = 2 IF instructor_car_roll > 0.0 IF instructor_car_roll < 170.0 instructor_car_roll_score = 3 ENDIF ENDIF ENDIF IF instructor_car_roll_score = 3 IF instructor_car_roll > 0.0 IF instructor_car_roll < 90.0 instructor_car_roll_score = 4 ENDIF ENDIF IF instructor_car_roll < -10.0 instructor_car_roll_score = 0 ENDIF ENDIF IF instructor_car_roll_score = 4 IF instructor_car_roll > 0.0 IF instructor_car_roll < 5.0 instructor_car_roll_score = 5 ENDIF ENDIF ENDIF ENDIF //checking car is stopped or not IF IS_CAR_STOPPED instructor_car GOSUB freeze_car_pos //CALCULATIONS FOR PLAYER SCORE// //checking car has done a full roll IF instructor_car_roll_score = 5 position_score = 100 ENDIF IF instructor_car_roll_score = 4 position_score = 80 ENDIF IF instructor_car_roll_score = 3 position_score = 60 ENDIF IF instructor_car_roll_score = 2 position_score = 40 ENDIF IF instructor_car_roll_score = 1 position_score = 20 ENDIF IF instructor_car_roll_score = 0 position_score = 0 ENDIF //checking player has gone through marker IF lap_counter = 0 position_score = 0 ENDIF //checking if car went upside down IF IS_CAR_UPSIDEDOWN instructor_car position_score = 0 ENDIF //checking car hasnt left area IF NOT IS_CAR_IN_AREA_2D instructor_car -2042.0 -215.0 -2058.0 -280.0 FALSE ////IF CHANGING THE X, CHANGE THE CAR_AREA ABOVE position_score = 0 ENDIF //heading - perfect heading is 180 GET_CAR_HEADING instructor_car instructor_car_heading instructor_car_heading_int =# instructor_car_heading IF instructor_car_heading_int = 0 heading_score = 0 GOTO done_heading_calcs_swift_escape ENDIF IF instructor_car_heading_int = 180 heading_score = 100 GOTO done_heading_calcs_swift_escape ENDIF IF instructor_car_heading_int = 360 heading_score = 0 GOTO done_heading_calcs_swift_escape ENDIF IF instructor_car_heading_int > 0 IF instructor_car_heading_int < 175 variableb =# instructor_car_heading_int variableb *= 0.56 //0.56 = 99(which is highest score possible) / 175 ( which is 175 - 0) heading_score =# variableb GOTO done_heading_calcs_swift_escape ENDIF ENDIF IF instructor_car_heading_int > 174 IF instructor_car_heading_int < 186 heading_score = 100 ENDIF ENDIF IF instructor_car_heading_int > 185 IF instructor_car_heading_int < 360 variablea = instructor_car_heading_int - 180 variableb =# variablea variableb *= 0.56 variablea =# variableb heading_score = 100 - variablea GOTO done_heading_calcs_swift_escape ENDIF ENDIF done_heading_calcs_swift_escape: IF heading_score < 1 heading_score = 0 ENDIF overall_score = position_score + heading_score overall_score /= 2 IF position_score = 0 overall_score = 0 ENDIF //how much damage done to players car GOSUB damage_score_calcs IF player_car_damage < 2 player_car_damage = 0 ENDIF total_car_damage = player_car_damage overall_score -= total_car_damage //checking overall score is greater than 0 and clearing prints GOSUB checking_overall_score //checking overall score against the best score at present IF overall_score > f1_alleyoop_best_score f1_old_score = f1_alleyoop_best_score f1_alleyoop_best_score = overall_score f1_print_top_scores_flag = 1 GOSUB f1_medal_check ELSE f1_which_medal_displayed = 0 ENDIF //opening next level IF f1_which_missions_are_open_flag = 15 IF overall_score > 69 f1_print_top_scores_flag = 2 f1_which_missions_are_open_flag = 16 instructor_car_dead_flag = 2 f1_last_played = 16 ENDIF ENDIF //printing scores onscreen timera = 0 swift_escape_scores_loop: WAIT 0 //changing camera position GOSUB setting_up_camera IF NOT f1_print_top_scores_flag = 2 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_swift_escape ENDIF ENDIF //displaying scores GOSUB display_head_pos_dam_text //checking if player has skipped watching the scores GOSUB skip_scores IF finished_watching_scores = 1 GOTO after_scores_swift_escape ENDIF GOTO swift_escape_scores_loop //reseting for another try after_scores_swift_escape: GOSUB mini_cleanup DELETE_CAR dummy_car1 DELETE_CAR dummy_car2 DELETE_OBJECT ramp1 IF instructor_car_dead_flag = 2 CLEAR_PRINTS GOTO noticeboard_setup ELSE GOTO refresh_swift_escape ENDIF ENDIF ENDIF ENDIF GOTO swift_escape_loop ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////City Slicking/////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF mission_selection = 16 refresh_city_slicking: GOSUB start_initialise_stuff setup_city_slicking: //////setting up variables for this specific challenge///// perfect_heading = 180.0 car_timer = 0 GOSUB setting_up_variables //creating car position perfect_positionx = -2046.7 perfect_positiony = -90.2 perfect_positionz = 33.9 //finishing point cone_coords_x = -1724.3 cone_coords_y = 1294.0 cone_coords_z = 6.0 /* /////////////////DEBUG FOR WANTING TO TEST SOMETHING IN THE CITY SLICKING RACE USE THESE COORDS cone_coords_x = -2028.0 cone_coords_y = 33.9 cone_coords_z = 33.9 */ //creating cars CREATE_CAR supergt perfect_positionx perfect_positiony perfect_positionz instructor_car SET_CAR_HEADING instructor_car 0.0 SET_CAR_WATERTIGHT instructor_car TRUE IF playback_flag = 0 DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION -2017.3 -45.0 34.41 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2039.0 -100.3 37.4 JUMP_CUT IF NOT IS_CAR_DEAD instructor_car CREATE_RANDOM_CHAR_AS_DRIVER instructor_car f1_test_crash_dummy ENDIF RETURN ENDIF CLEAR_PRINTS SET_CAR_DENSITY_MULTIPLIER 0.5 LOAD_SCENE perfect_positionx perfect_positiony perfect_positionz ADD_BLIP_FOR_COORD cone_coords_x cone_coords_y cone_coords_z d1_blip_flag //create_checkpoint CREATE_CHECKPOINT CHECKPOINT_TUBE cone_coords_x cone_coords_y cone_coords_z perfect_positionx perfect_positiony perfect_positionz 5.0 f1_checkpoint PRINT_HELP_FOREVER_CONDITIONAL DSTART 2 // Press and hold ~m~~widget_accelerate~ to begin. PRINT_NOW ( DS1_31 ) 5000 4 // Drive to the other side of the city and back without damaging the car.~n~The target time is 120 seconds. GOSUB stop_initialise_stuff city_slicking_loop: WAIT 0 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_city_slicking ENDIF //checking car isnt dead GOSUB instructor_car_dead IF instructor_car_dead_flag = 1 GOTO mission_failed_dskool ENDIF IF instructor_car_dead_flag = 2 GOTO after_scores_city_slicking ENDIF //player is going IF car_started = 0 IF NOT instructor_car_dead_flag = 2 PRINT_HELP_FOREVER_CONDITIONAL DSTART 2 // Press and hold ~m~~widget_accelerate~ to begin. PRINT_NOW ( DS1_31 ) 5000 4 // Drive to the other side of the city and back without damaging the car.~n~The target time is 120 seconds. ENDIF GOSUB has_car_started ELSE IF NOT IS_CAR_DEAD instructor_car //calculating to see if player has gone over the alloted time IF car_timer > 260000 //double the time allowed SET_PLAYER_CONTROL player1 OFF ENDIF //waiting for player to reach first lap IF lap_counter = 0 IF LOCATE_CAR_3D instructor_car cone_coords_x cone_coords_y cone_coords_z 4.0 4.0 4.0 FALSE REMOVE_BLIP d1_blip_flag ADD_BLIP_FOR_COORD perfect_positionx perfect_positiony perfect_positionz d1_blip_flag DELETE_CHECKPOINT f1_checkpoint CREATE_CHECKPOINT CHECKPOINT_ENDTUBE perfect_positionx perfect_positiony perfect_positionz perfect_positionx perfect_positiony perfect_positionz 5.0 f1_checkpoint lap_counter = 1 ENDIF ENDIF IF lap_counter = 1 IF LOCATE_CAR_3D instructor_car perfect_positionx perfect_positiony perfect_positionz 4.0 4.0 4.0 FALSE REMOVE_BLIP d1_blip_flag lap_counter = 2 ENDIF ENDIF CLEAR_PRINTS //checking car is stopped or not IF IS_CAR_STOPPED instructor_car OR lap_counter = 2 OR IS_CAR_IN_WATER instructor_car OR car_timer >= 140000 GOSUB freeze_car_pos DELETE_CHECKPOINT f1_checkpoint //CALCULATIONS FOR PLAYER SCORE //calculating overall time variablea = car_timer overall_secs = variablea / 1000 overall_millisecs = overall_secs * 1000 variablec = variablea - overall_millisecs overall_millisecs = variablec / 10 //calculating overall score time_score = 0 IF lap_counter < 2 time_score = 0 ELSE IF variablea < 100000 time_score = 100 ENDIF IF variablea >= 100000 IF variablea < 120000 variablec = variablea - 99999 variableb =# variablec variableb *= 0.0015 //(100 - 70) / (120000 - 99999) variablea =# variableb time_score = 100 - variablea ENDIF ENDIF IF variablea >= 120000 IF variablea < 140000 variablec = variablea - 119999 variableb =# variablec variableb *= 0.0035 //(70 - 0) / (140000 - 119999) variablea =# variableb time_score = 70 - variablea ENDIF ENDIF IF variablea >= 140000 time_score = 0 ENDIF ENDIF IF time_score < 1 time_score = 0 ENDIF IF time_score > 99 time_score = 100 ENDIF overall_score = time_score //how much damage done to players car GOSUB damage_score_calcs total_car_damage = player_car_damage overall_score -= total_car_damage //checking overall score is greater than 0 and clearing prints GOSUB checking_overall_score //checking overall score against the best score at present IF overall_score > f1_cityslicking_best_score f1_old_score = f1_cityslicking_best_score f1_cityslicking_best_score = overall_score f1_print_top_scores_flag = 1 GOSUB f1_medal_check ELSE f1_which_medal_displayed = 0 ENDIF //printing scores onscreen lap_counter = 5 timera = 0 city_slicking_scores_loop: WAIT 0 //changing camera position GOSUB setting_up_camera IF NOT f1_print_top_scores_flag = 2 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_car_dead_flag = 2 GOTO after_scores_city_slicking ENDIF ENDIF //displaying scores GOSUB display_head_pos_dam_text //checking if player has skipped watching the scores GOSUB skip_scores IF finished_watching_scores = 1 GOTO after_scores_city_slicking ENDIF GOTO city_slicking_scores_loop //reseting for another try after_scores_city_slicking: //opening next level IF driving_test_passed = 0 IF f1_which_missions_are_open_flag = 16 IF overall_score > 69 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 3 SET_CHAR_AREA_VISIBLE scplayer 3 CLEAR_EXTRA_COLOURS TRUE REQUEST_COLLISION -2031.1 -118.2 LOAD_SCENE -2031.1 -118.2 1034.2 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -2029.7 -115.5 1034.2 SET_CHAR_HEADING scplayer 0.0 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer DELETE_CAR instructor_car CLEAR_AREA -2051.0 -174.0 34.0 300.0 TRUE CLEAR_ONSCREEN_TIMER car_timer FREEZE_ONSCREEN_TIMER FALSE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_passed_dskool ENDIF ENDIF ENDIF GOSUB mini_cleanup REMOVE_BLIP d1_blip_flag DELETE_CHECKPOINT f1_checkpoint SET_CAR_DENSITY_MULTIPLIER 1.0 IF instructor_car_dead_flag = 2 CLEAR_PRINTS GOTO noticeboard_setup ELSE GOTO refresh_city_slicking ENDIF ENDIF ENDIF ENDIF GOTO city_slicking_loop ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Mission failed mission_failed_dskool: CLEAR_PRINTS IF instructor_car_dead_flag = 1 PRINT_BIG M_FAIL 5000 1 ENDIF CHECKPOINT_SAVE 1 RETURN // mission passed mission_passed_dskool: IF driving_test_passed = 0 WRITE_LOG "UNLOCK_ACHIEVEMENT SCHOOLS_OUT" REMOVE_BLIP dschool_contact_blip ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT testsX testsY testsZ RADAR_SPRITE_SCHOOL dschool_contact_blip CHANGE_BLIP_DISPLAY dschool_contact_blip BLIP_ONLY SWITCH_CAR_GENERATOR f1_chunky 101 SWITCH_CAR_GENERATOR f1_dbp 101 CLEAR_PRINTS PRINT_WITH_NUMBER_BIG ( DS_PASS ) 15 5000 1 //"Mission Passed!" INCREMENT_FLOAT_STAT DRIVING_SKILL 40.0 PLAY_MISSION_PASSED_TUNE 2 CLEAR_WANTED_LEVEL PLAYER1 //REMOVE_BLIP trace_contact_blip //ADD_SPRITE_BLIP_FOR_CONTACT_POINT traceX traceY traceZ trace_blip_icon trace_contact_blip REGISTER_MISSION_PASSED FAR_1 PLAYER_MADE_PROGRESS 1 driving_test_passed = 1 ENDIF RETURN // mission cleanup mission_cleanup_dskool: //SET_CAMERA_BEHIND_PLAYER IF f1_bronze_award = 0 IF f1_the360_best_score >= 70 IF f1_the180_best_score >= 70 IF f1_whiprightterminate_best_score >= 70 IF f1_popcontrol_best_score >= 70 IF f1_burnlapright_best_score >= 70 IF f1_conecoilright_best_score >= 70 IF f1_the90_best_score >= 70 IF f1_wheelieweave_best_score >= 70 IF f1_spinrightgo_best_score >= 70 OR IS_XBOX_VERSION // HACKED - mobile version check IF f1_pittechnique_best_score >= 70 IF f1_alleyoop_best_score >= 70 IF f1_cityslicking_best_score >= 70 SWITCH_CAR_GENERATOR f1_bronze_car_gen 101 f1_bronze_award = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF f1_silver_award = 0 IF f1_the360_best_score >= 85 IF f1_the180_best_score >= 85 IF f1_whiprightterminate_best_score >= 85 IF f1_popcontrol_best_score >= 85 IF f1_burnlapright_best_score >= 85 IF f1_conecoilright_best_score >= 85 IF f1_the90_best_score >= 85 IF f1_wheelieweave_best_score >= 85 IF f1_spinrightgo_best_score >= 85 OR IS_XBOX_VERSION // HACKED - mobile version check IF f1_pittechnique_best_score >= 85 IF f1_alleyoop_best_score >= 85 IF f1_cityslicking_best_score >= 85 SWITCH_CAR_GENERATOR f1_silver_car_gen 101 f1_silver_award = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF f1_gold_award = 0 IF f1_the360_best_score = 100 IF f1_the180_best_score = 100 IF f1_whiprightterminate_best_score = 100 IF f1_popcontrol_best_score = 100 IF f1_burnlapright_best_score = 100 IF f1_conecoilright_best_score = 100 IF f1_the90_best_score = 100 IF f1_wheelieweave_best_score = 100 IF f1_spinrightgo_best_score = 100 OR IS_XBOX_VERSION // HACKED - mobile version check IF f1_pittechnique_best_score = 100 IF f1_alleyoop_best_score = 100 IF f1_cityslicking_best_score = 100 SWITCH_CAR_GENERATOR f1_gold_car_gen 101 f1_gold_award = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //IF IS_STRING_EMPTY $shop_name // RESTORE_CAMERA_JUMPCUT //ENDIF //SET_PLAYER_CONTROL player1 on CLEAR_ONSCREEN_TIMER car_timer USE_TEXT_COMMANDS FALSE RELEASE_WEATHER MARK_MODEL_AS_NO_LONGER_NEEDED banshee MARK_MODEL_AS_NO_LONGER_NEEDED taxi MARK_MODEL_AS_NO_LONGER_NEEDED trafficcone MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH MARK_MODEL_AS_NO_LONGER_NEEDED blistac MARK_MODEL_AS_NO_LONGER_NEEDED infernus MARK_MODEL_AS_NO_LONGER_NEEDED supergt MARK_MODEL_AS_NO_LONGER_NEEDED COPCARSF MARK_MODEL_AS_NO_LONGER_NEEDED SFPD1 MARK_MODEL_AS_NO_LONGER_NEEDED temp_stinger2 MARK_MODEL_AS_NO_LONGER_NEEDED garys_luv_ramp MARK_MODEL_AS_NO_LONGER_NEEDED ad_jump MARK_MODEL_AS_NO_LONGER_NEEDED ad_roadmark1 MARK_MODEL_AS_NO_LONGER_NEEDED ad_roadmark2 MARK_MODEL_AS_NO_LONGER_NEEDED ad_finish SWITCH_ROADS_BACK_TO_ORIGINAL -2015.37 -76.08 10.0 -2078.3 -66.75 50.0 ALLOW_FIXED_CAMERA_COLLISION FALSE REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DRIVING_AWARD_TRACK_STOP ACTIVATE_GARAGE bodLAwN ACTIVATE_GARAGE modlast ACTIVATE_GARAGE mdsSFSe IF japcar_mod_garage_open = 1 ACTIVATE_GARAGE mds1SFS ACTIVATE_GARAGE vEcmod ENDIF SET_NO_RESPRAYS OFF IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF SHUT_ALL_CHARS_UP FALSE REMOVE_TEXTURE_DICTIONARY SET_CAR_DENSITY_MULTIPLIER 1.0 DISPLAY_HUD TRUE DISPLAY_RADAR TRUE REMOVE_BLIP d1_blip_flag DELETE_CHECKPOINT f1_checkpoint ENABLE_AMBIENT_CRIME TRUE GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////// GOSUBS /////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// f1_drawing_tv_screen:////////////////////////////////////////////////////////////////////// //FADE_OUT IF f1_fade_flag = 1 IF f1_alpha < 255 f1_alpha = f1_alpha + 5 IF f1_alpha > 255 f1_alpha = 255 ENDIF ELSE f1_fade_flag = 2 ENDIF ENDIF //FADE_IN IF f1_fade_flag = 3 IF f1_alpha > 0 f1_alpha = f1_alpha - 5 IF f1_alpha < 0 f1_alpha = 0 ENDIF ELSE f1_fade_flag = 0 ENDIF ENDIF //which test GOSUB test_name_text SET_TEXT_COLOUR 255 255 255 255 SET_TEXT_DROPSHADOW 0 0 0 0 255 SET_TEXT_CENTRE OFF IF mission_selection = 1 DISPLAY_TEXT fTitleX fTitleY DS_P //The 360 f1_which_score_displayed = f1_the360_best_score GOSUB f1_drawing_medal ENDIF IF mission_selection = 2 DISPLAY_TEXT fTitleX fTitleY DS_O //The 180 f1_which_score_displayed = f1_the180_best_score GOSUB f1_drawing_medal ENDIF IF mission_selection = 3 DISPLAY_TEXT fTitleX fTitleY DS_I //Whip and Terminate f1_which_score_displayed = f1_whiprightterminate_best_score GOSUB f1_drawing_medal ENDIF IF mission_selection = 4 DISPLAY_TEXT fTitleX fTitleY DS_I //Whip and Terminate f1_which_score_displayed = f1_whiprightterminate_best_score GOSUB f1_drawing_medal ENDIF IF mission_selection = 5 DISPLAY_TEXT fTitleX fTitleY DS_F //Pop and Control f1_which_score_displayed = f1_popcontrol_best_score GOSUB f1_drawing_medal ENDIF IF mission_selection = 6 DISPLAY_TEXT fTitleX fTitleY DS_E //Burn and Lap f1_which_score_displayed = f1_burnlapright_best_score GOSUB f1_drawing_medal ENDIF IF mission_selection = 7 DISPLAY_TEXT fTitleX fTitleY DS_E //Burn and Lap f1_which_score_displayed = f1_burnlapright_best_score GOSUB f1_drawing_medal ENDIF IF mission_selection = 8 DISPLAY_TEXT fTitleX fTitleY DS_N //Cone Coil f1_which_score_displayed = f1_conecoilright_best_score GOSUB f1_drawing_medal ENDIF IF mission_selection = 9 DISPLAY_TEXT fTitleX fTitleY DS_N //Cone Coil f1_which_score_displayed = f1_conecoilright_best_score GOSUB f1_drawing_medal ENDIF IF mission_selection = 10 DISPLAY_TEXT fTitleX fTitleY DS_A //The 90 f1_which_score_displayed = f1_the90_best_score GOSUB f1_drawing_medal ENDIF IF mission_selection = 11 DISPLAY_TEXT fTitleX fTitleY DS_K //Wheelie Weave f1_which_score_displayed = f1_wheelieweave_best_score GOSUB f1_drawing_medal ENDIF IF mission_selection = 12 DISPLAY_TEXT fTitleX fTitleY DS_C //Spin and Go f1_which_score_displayed = f1_spinrightgo_best_score GOSUB f1_drawing_medal ENDIF IF mission_selection = 13 DISPLAY_TEXT fTitleX fTitleY DS_C //Spin and Go f1_which_score_displayed = f1_spinrightgo_best_score GOSUB f1_drawing_medal ENDIF IF mission_selection = 14 DISPLAY_TEXT fTitleX fTitleY DS_L //P. I. T. Technique f1_which_score_displayed = f1_pittechnique_best_score GOSUB f1_drawing_medal ENDIF IF mission_selection = 15 DISPLAY_TEXT fTitleX fTitleY DS_J //Alley Oop f1_which_score_displayed = f1_alleyoop_best_score GOSUB f1_drawing_medal ENDIF IF mission_selection = 16 DISPLAY_TEXT fTitleX fTitleY DS_G //City Slicking f1_which_score_displayed = f1_cityslicking_best_score GOSUB f1_drawing_medal ENDIF //drawing help text IF NOT f1_control_flag = 1 //waiting to select which facing track GOSUB small_onscreen_text GET_HUD_COLOUR HUD_COLOUR_YELLOW f1_r f1_g f1_b f1_alpha2 SET_TEXT_COLOUR f1_r f1_g f1_b f1_alpha2 SET_TEXT_SCALE 0.32 1.25 SET_TEXT_CENTRE ON // The widget is rendering this now due to issues with drawing order. //DISPLAY_TEXT_CLAMPED 82.0 340.0 DS1_54 50.0 //START GOSUB small_onscreen_text GET_HUD_COLOUR HUD_COLOUR_YELLOW f1_r f1_g f1_b f1_alpha2 SET_TEXT_COLOUR f1_r f1_g f1_b f1_alpha2 SET_TEXT_SCALE 0.32 1.25 SET_TEXT_CENTRE ON // The widget is rendering this now due to issues with drawing order. //DISPLAY_TEXT_CLAMPED 173.0 340.0 DS1_53 50.0 //EXIT IF NOT f1_which_missions_are_open_flag = 1 GOSUB small_onscreen_text GET_HUD_COLOUR HUD_COLOUR_YELLOW f1_r f1_g f1_b f1_alpha2 SET_TEXT_COLOUR f1_r f1_g f1_b f1_alpha2 SET_TEXT_SCALE 0.32 1.25 SET_TEXT_CENTRE ON DISPLAY_TEXT 472.0 340.0 DS1_52 // Navigate ELSE GOSUB small_onscreen_text GET_HUD_COLOUR HUD_COLOUR_GREY f1_r f1_g f1_b f1_alpha2 //navigate greyed out SET_TEXT_COLOUR f1_r f1_g f1_b f1_alpha2 SET_TEXT_SCALE 0.32 1.25 SET_TEXT_CENTRE ON DISPLAY_TEXT 472.0 340.0 DS1_52 // Navigate ENDIF ENDIF // New section to draw the joypad buttons separate from the help text GOSUB small_onscreen_text SET_TEXT_SCALE 0.32 1.25 // Set scale for PC only GET_HUD_COLOUR HUD_COLOUR_WHITE f1_r f1_g f1_b f1_alpha2 SET_TEXT_COLOUR f1_r f1_g f1_b f1_alpha2 IF NOT f1_control_flag = 1 //waiting to select which facing track GOSUB small_onscreen_text GET_HUD_COLOUR HUD_COLOUR_WHITE f1_r f1_g f1_b f1_alpha2 SET_TEXT_COLOUR f1_r f1_g f1_b f1_alpha2 SET_TEXT_SCALE 0.32 1.25 // Set scale for PC only IF NOT f1_which_missions_are_open_flag = 1 GOSUB small_onscreen_text GET_HUD_COLOUR HUD_COLOUR_WHITE f1_r f1_g f1_b f1_alpha2 SET_TEXT_COLOUR f1_r f1_g f1_b f1_alpha2 SET_TEXT_SCALE 0.32 1.25 // Set scale for PC only ENDIF IF f1_which_missions_are_open_flag = 1 GOSUB small_onscreen_text GET_HUD_COLOUR HUD_COLOUR_WHITE f1_r f1_g f1_b f1_alpha2 SET_TEXT_COLOUR f1_r f1_g f1_b f1_alpha2 SET_TEXT_SCALE 0.32 1.25 // Set scale for PC only ENDIF ENDIF SET_TEXT_SCALE 0.52 1.45 // return scale, just in case. GOSUB DrawAspectCorrectingQuads // For aspect correction. //TV SCREEN HUD DRAW_SPRITE 9 320.0 224.0 640.0 448.0 150 150 150 255 RETURN///////////////////////////////////////////////////////////////////////////////////// f1_drawing_medal:////////////////////////////////////////////////////////////////////////// //background for medal, ribbons and score //no medal IF f1_which_score_displayed < 70 f1_which_medal_displayed = 1 ENDIF //bronze IF f1_which_score_displayed > 69 IF f1_which_score_displayed < 85 f1_which_medal_displayed = 2 ENDIF ENDIF //silver IF f1_which_score_displayed > 84 IF f1_which_score_displayed < 100 f1_which_medal_displayed = 3 ENDIF ENDIF //gold IF f1_which_score_displayed = 100 f1_which_medal_displayed = 4 ENDIF //best score GOSUB small_onscreen_text SET_TEXT_RIGHT_JUSTIFY OFF GET_HUD_COLOUR HUD_COLOUR_LIGHTBLUE f1_r f1_g f1_b f1_alpha2 SET_TEXT_COLOUR f1_r f1_g f1_b f1_alpha2 //SET_TEXT_CENTRE ON SET_TEXT_DROPSHADOW 0 0 0 0 255 IF f1_which_medal_displayed > 1 DISPLAY_TEXT_WITH_NUMBER fStringX fStringY DS1_58 f1_which_score_displayed // Record Score ~1~% ELSE DISPLAY_TEXT fStringX fStringY DS1_67 //Get over 70% to pass ENDIF //which medal awarded// IF f1_which_medal_displayed = 1 //no medal DRAW_SPRITE 6 510.0 80.0 166.0 77.0 160 160 160 255 ENDIF IF f1_which_medal_displayed = 2 DRAW_SPRITE 4 510.0 85.0 170.0 75.0 255 255 255 255 DRAW_SPRITE 1 510.0 85.0 80.0 75.0 255 255 255 255 ENDIF IF f1_which_medal_displayed = 3 DRAW_SPRITE 4 510.0 85.0 170.0 75.0 255 255 255 255 DRAW_SPRITE 2 510.0 85.0 80.0 75.0 255 255 255 255 ENDIF IF f1_which_medal_displayed = 4 DRAW_SPRITE 4 510.0 85.0 170.0 75.0 255 255 255 255 DRAW_SPRITE 3 510.0 85.0 80.0 75.0 255 255 255 255 ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// watching_demo:///////////////////////////////////////////////////////////////////////////// //setting up each individual mission for the playback and starting playback IF playback_flag = 0 IF mission_selection = 1 GOSUB setup_360 ENDIF IF mission_selection = 2 GOSUB setup_180 ENDIF IF mission_selection = 4 GOSUB setup_whip_and_terminate ENDIF IF mission_selection = 5 GOSUB setup_pop_control ENDIF IF mission_selection = 7 GOSUB setup_burn_and_lap ENDIF IF mission_selection = 9 GOSUB setup_cone_coil ENDIF IF mission_selection = 10 GOSUB setup_90 ENDIF IF mission_selection = 11 GOSUB setup_wheelie_weave ENDIF IF mission_selection = 13 AND NOT IS_XBOX_VERSION // HACKED - mobile version check GOSUB setup_spin_go ENDIF IF mission_selection = 14 GOSUB setup_pit_technique ENDIF IF mission_selection = 15 GOSUB setup_swift_escape ENDIF IF mission_selection = 16 GOSUB setup_city_slicking ENDIF playback_flag = 1 ENDIF IF playback_flag = 1 //loading in car recordings. IF mission_selection = 14 //NEED TWO CARS FOR P.I.T. TECHNIQUE IF NOT IS_CAR_DEAD instructor_car IF NOT HAS_CAR_RECORDING_BEEN_LOADED 14 REQUEST_CAR_RECORDING 14 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 3 REQUEST_CAR_RECORDING 3 ENDIF IF HAS_CAR_RECORDING_BEEN_LOADED 14 IF HAS_CAR_RECORDING_BEEN_LOADED 3 //playing back car recordings //LOAD_SCENE -2052.3 -129.9 34.2 START_PLAYBACK_RECORDED_CAR instructor_car 14 IF NOT IS_CAR_DEAD dummy_car1 START_PLAYBACK_RECORDED_CAR dummy_car1 3 ENDIF f1_fade_flag = 3 //FADE_IN playback_flag = 2 ENDIF ENDIF ENDIF ELSE IF NOT IS_CAR_DEAD instructor_car IF NOT HAS_CAR_RECORDING_BEEN_LOADED mission_selection REQUEST_CAR_RECORDING mission_selection ELSE //playing back car recordings //LOAD_SCENE -2052.3 -129.9 34.2 START_PLAYBACK_RECORDED_CAR instructor_car mission_selection f1_fade_flag = 3 //FADE_IN playback_flag = 2 ENDIF ENDIF ENDIF ENDIF //waiting for playback to finish IF playback_flag = 2 IF NOT IS_CAR_DEAD instructor_car IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR instructor_car f1_fade_flag = 1 //FADE_OUT playback_flag = 4 ENDIF ELSE f1_fade_flag = 1 //FADE_OUT playback_flag = 4 ENDIF ENDIF //overriding playback IF playback_flag = 3 f1_fade_flag = 1 //FADE_OUT playback_flag = 4 ENDIF IF playback_flag = 4 AND f1_control_flag = 1 playback_flag = 0 ENDIF //waiting for screen to FADE_OUT and cleaning everything up IF playback_flag = 4 //IF f1_fade_flag = 2 DO_FADE 0 FADE_OUT GOSUB delete_end_of_rec GOSUB deleting_cones playback_flag = 0 //ENDIF ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// small_onscreen_text://///////////////////////////////////////////////////////////////////// SET_TEXT_DRAW_BEFORE_FADE TRUE SET_TEXT_JUSTIFY ON SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_WRAPX 1000.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_CENTRE OFF SET_TEXT_BACKGROUND OFF SET_TEXT_SCALE 0.52 1.45 SET_TEXT_DROPSHADOW 2 0 0 0 255 SET_TEXT_FONT FONT_SPACEAGE RETURN///////////////////////////////////////////////////////////////////////////////////// small_backend_text://////////////////////////////////////////////////////////////////////// SET_TEXT_JUSTIFY ON SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_WRAPX 1000.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_CENTRE OFF SET_TEXT_BACKGROUND OFF SET_TEXT_SCALE 0.52 1.45 SET_TEXT_DROPSHADOW 2 0 0 0 255 SET_TEXT_FONT FONT_SPACEAGE RETURN///////////////////////////////////////////////////////////////////////////////////// which_course_text://///////////////////////////////////////////////////////////////////// //SET_TEXT_DRAW_BEFORE_FADE TRUE SET_TEXT_JUSTIFY ON SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_WRAPX 1000.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_CENTRE ON SET_TEXT_BACKGROUND OFF SET_TEXT_SCALE 0.8 2.6 SET_TEXT_DROPSHADOW 2 0 0 0 255 RETURN///////////////////////////////////////////////////////////////////////////////////// test_name_text://///////////////////////////////////////////////////////////////////// //SET_TEXT_DRAW_BEFORE_FADE TRUE SET_TEXT_JUSTIFY ON SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_WRAPX 1000.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_CENTRE ON SET_TEXT_BACKGROUND OFF SET_TEXT_SCALE 1.2 4.0 SET_TEXT_DROPSHADOW 3 0 0 0 255 SET_TEXT_FONT FONT_HEADING RETURN///////////////////////////////////////////////////////////////////////////////////// start_initialise_stuff://////////////////////////////////////////////////////////////////// DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF mission_selection = 16 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 ELSE SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 ENDIF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_SF SET_AREA_VISIBLE 0 SET_CHAR_AREA_VISIBLE scplayer 0 CLEAR_EXTRA_COLOURS FALSE RETURN///////////////////////////////////////////////////////////////////////////////////// setting_up_variables:////////////////////////////////////////////////////////////////////// area_check1ax = 0.0 area_check1ay = 0.0 area_check1bx = 0.0 area_check1by = 0.0 area_check2ax = 0.0 area_check2ay = 0.0 area_check2bx = 0.0 area_check2by = 0.0 area_check3ax = 0.0 area_check3ay = 0.0 area_check3bx = 0.0 area_check3by = 0.0 area_check4ax = 0.0 area_check4ay = 0.0 area_check4bx = 0.0 area_check4by = 0.0 button_pressed = 0 car_posx = 0.0 car_posy = 0.0 cone_coords_x = 0.0 cone_coords_y = 0.0 cone_coords_z = 0.0 cone_circle_radius = 10.0 car_started = 0 circle_start_x = 0.0 circle_start_y = 0.0 camera_positionx = 0.0 camera_positiony = 0.0 camera_positionz = 0.0 camera_position_int = 0 dummy_car1_health = 0 dummy_car2_health = 0 finish_leftx = 0.0 finish_lefty = 0.0 finish_rightx = 0.0 finish_righty = 0.0 finished_watching_scores = 0 heading_score = 0 instructor_car_speed = 0.0 instructor_car_heading = 0.0 instructor_car_heading_int = 0 instructor_car_health = 0 instructor_car_dead_flag = 0 lap_counter = 0 lap1_secs = 0 lap1_millisecs = 0 lap2_secs = 0 lap2_millisecs = 0 lap3_secs = 0 lap3_millisecs = 0 lap4_secs = 0 lap4_millisecs = 0 lap5_secs = 0 lap5_millisecs = 0 overall_lap1 = 0 overall_lap2 = 0 overall_lap3 = 0 overall_lap4 = 0 overall_lap5 = 0 overall_secs = 0 overall_millisecs = 0 overall_score = 0 other_car_damage = 0 perfect_positionx = start_coordsx perfect_positiony = start_coordsy GET_GROUND_Z_FOR_3D_COORD perfect_positionx perfect_positiony 50.0 perfect_positionz player_car_damage = 0 players_distance_from_perfectpos = 0.0 position_score = 0 time_score = 0 total_instructor_car_health = 0 total_dummy_car1_health = 0 total_dummy_car2_health = 0 total_car_damage = 0 variablea = 0 variableb = 0.0 variablec = 0 variabled = 0 where_to_place_cones = 0.0 instructor_car_roll = 0.0 instructor_car_roll_score = 0 instructor_car_roll_plus_minus = 0 f1_print_top_scores_flag = 0 f1_direction_flag = 0 RETURN///////////////////////////////////////////////////////////////////////////////////// stop_initialise_stuff:///////////////////////////////////////////////////////////////////// WARP_CHAR_INTO_CAR scplayer instructor_car LOCK_CAR_DOORS instructor_car CARLOCK_LOCKED_PLAYER_INSIDE WAIT 0 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER CLEAR_WANTED_LEVEL player1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 on RETURN///////////////////////////////////////////////////////////////////////////////////// instructor_car_dead://///////////////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD instructor_car IF car_started = 1 IF NOT IS_CHAR_IN_CAR scplayer instructor_car instructor_car_dead_flag = 1 ENDIF ENDIF ELSE IF IS_CAR_IN_WATER instructor_car instructor_car_dead_flag = 2 ELSE instructor_car_dead_flag = 1 ENDIF ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// has_car_started://///////////////////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD instructor_car IF IS_CHAR_IN_CAR scplayer instructor_car GET_CAR_SPEED instructor_car instructor_car_speed ENDIF ENDIF //IF IS_BUTTON_PRESSED PAD1 CROSS //OR IS_BUTTON_PRESSED PAD1 SQUARE IF instructor_car_speed > 1.0 CLEAR_PRINTS IF mission_selection = 10 OR mission_selection = 12 OR mission_selection = 13 OR mission_selection = 5 OR mission_selection = 3 OR mission_selection = 4 DISPLAY_ONSCREEN_TIMER_WITH_STRING car_timer TIMER_DOWN BB_19 // Time SET_TIMER_BEEP_COUNTDOWN_TIME car_timer 3 ENDIF IF mission_selection = 15 OR mission_selection = 8 OR mission_selection = 9 OR mission_selection = 2 OR mission_selection = 1 DISPLAY_ONSCREEN_TIMER_WITH_STRING car_timer TIMER_DOWN BB_19 // Time SET_TIMER_BEEP_COUNTDOWN_TIME car_timer 3 ENDIF IF mission_selection = 6 OR mission_selection = 7 OR mission_selection = 16 DISPLAY_ONSCREEN_TIMER_WITH_STRING car_timer TIMER_UP BB_19 // Time ENDIF IF mission_selection = 14 IF NOT IS_CAR_DEAD dummy_car1 SET_CAR_FORWARD_SPEED dummy_car1 6.0 SET_CAR_TEMP_ACTION dummy_car1 TEMPACT_GOFORWARD 864000000 ENDIF ENDIF car_started = 1 ENDIF //ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// car_timer_0://///////////////////////////////////////////////////////////////////////////// IF car_timer = 0 SET_PLAYER_CONTROL player1 off APPLY_BRAKES_TO_PLAYERS_CAR player1 TRUE ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// freeze_car_pos://////////////////////////////////////////////////////////////////////////// SET_PLAYER_CONTROL player1 off FREEZE_CAR_POSITION instructor_car TRUE FREEZE_ONSCREEN_TIMER TRUE REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DRIVING_AWARD_TRACK_START RETURN///////////////////////////////////////////////////////////////////////////////////// position_score_calcs:////////////////////////////////////////////////////////////////////// GET_CAR_COORDINATES instructor_car player_x player_y player_z GET_DISTANCE_BETWEEN_COORDS_2D player_x player_y perfect_positionx perfect_positiony players_distance_from_perfectpos IF players_distance_from_perfectpos > 0.5 IF players_distance_from_perfectpos < 10.0 players_distance_from_perfectpos -= 0.5 players_distance_from_perfectpos *= 10.42 //10.42 = 99(which is highest score possible) / 9.5 ( which is 10 - 0.5) variablea =# players_distance_from_perfectpos position_score = 100 - variablea ELSE position_score = 0 ENDIF ELSE position_score = 100 ENDIF overall_score += position_score RETURN///////////////////////////////////////////////////////////////////////////////////// damage_score_calcs://////////////////////////////////////////////////////////////////////// GET_CAR_HEALTH instructor_car instructor_car_health player_car_damage = 1000 - instructor_car_health //debug - changed damage from 10 to 2 to make the missions harder //player_car_damage /= 10 IF mission_selection = 16 player_car_damage /= 10 ELSE player_car_damage /= 2 ENDIF IF player_car_damage > 100 player_car_damage = 100 ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// damage_cones_calcs://////////////////////////////////////////////////////////////////////// total_car_damage = 0 trafficcone_counter = 0 IF mission_selection = 1 WHILE trafficcone_counter < 15 IF HAS_OBJECT_BEEN_DAMAGED trafficcones[trafficcone_counter] total_car_damage += 10 ENDIF trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 2 WHILE trafficcone_counter < 25 IF HAS_OBJECT_BEEN_DAMAGED trafficcones[trafficcone_counter] total_car_damage += 10 ENDIF trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 3 OR mission_selection = 4 WHILE trafficcone_counter < 46 IF HAS_OBJECT_BEEN_DAMAGED trafficcones[trafficcone_counter] total_car_damage += 10 ENDIF trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 5 WHILE trafficcone_counter < 37 IF HAS_OBJECT_BEEN_DAMAGED trafficcones[trafficcone_counter] total_car_damage += 10 ENDIF trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 6 OR mission_selection = 7 WHILE trafficcone_counter < 42 IF HAS_OBJECT_BEEN_DAMAGED trafficcones[trafficcone_counter] total_car_damage += 10 ENDIF trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 8 OR mission_selection = 9 WHILE trafficcone_counter < 30 IF HAS_OBJECT_BEEN_DAMAGED trafficcones[trafficcone_counter] total_car_damage += 10 ENDIF trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 12 OR mission_selection = 13 WHILE trafficcone_counter < 31 IF HAS_OBJECT_BEEN_DAMAGED trafficcones[trafficcone_counter] total_car_damage += 10 ENDIF trafficcone_counter ++ ENDWHILE ENDIF //debug - increasing damage score? total_car_damage = total_car_damage * 2 IF total_car_damage > 90 total_car_damage = 100 ENDIF overall_score -= total_car_damage RETURN///////////////////////////////////////////////////////////////////////////////////// checking_overall_score://////////////////////////////////////////////////////////////////// IF overall_score < 1 overall_score = 0 ENDIF CLEAR_PRINTS RETURN///////////////////////////////////////////////////////////////////////////////////// setting_up_camera:///////////////////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD instructor_car IF camera_position_int = 0 GET_CAR_COORDINATES instructor_car camera_positionx camera_positiony camera_positionz camera_positionz += 5.0 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 15.0 0.0 5.0 camera_positionx camera_positiony z SET_FIXED_CAMERA_POSITION camera_positionx camera_positiony camera_positionz 0.0 0.0 0.0 GET_PLAYER_IN_CAR_CAMERA_MODE f1_camera_mode IF f1_camera_mode = 1 OR f1_camera_mode = 2 OR f1_camera_mode = 3 POINT_CAMERA_AT_CAR instructor_car FIXED INTERPOLATION ELSE POINT_CAMERA_AT_CAR instructor_car FIXED JUMP_CUT ENDIF SET_INTERPOLATION_PARAMETERS 50.0 2000 ALLOW_FIXED_CAMERA_COLLISION TRUE camera_position_int = 1 ENDIF IF timera > 3000 IF timera < 6000 IF camera_position_int = 1 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 0.0 15.0 5.0 camera_positionx camera_positiony z SET_FIXED_CAMERA_POSITION camera_positionx camera_positiony camera_positionz 0.0 0.0 0.0 POINT_CAMERA_AT_CAR instructor_car FIXED INTERPOLATION SET_INTERPOLATION_PARAMETERS 50.0 2000 camera_position_int = 2 ENDIF ENDIF ENDIF IF timera > 6000 IF camera_position_int = 2 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car -15.0 0.0 5.0 camera_positionx camera_positiony z SET_FIXED_CAMERA_POSITION camera_positionx camera_positiony camera_positionz 0.0 0.0 0.0 POINT_CAMERA_AT_CAR instructor_car FIXED INTERPOLATION SET_INTERPOLATION_PARAMETERS 50.0 2000 camera_position_int = 3 ENDIF ENDIF ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// f1_medal_check://////////////////////////////////////////////////////////////////////////// f1_which_medal_displayed = 0 //bronze IF overall_score > 69 IF overall_score < 85 IF f1_old_score > 69 AND f1_old_score < 85 f1_which_medal_displayed = 0 ELSE REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE f1_which_medal_displayed = 2 ENDIF ENDIF ENDIF //silver IF overall_score > 84 IF overall_score < 100 IF f1_old_score > 84 AND f1_old_score < 100 f1_which_medal_displayed = 0 ELSE REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE f1_which_medal_displayed = 3 ENDIF ENDIF ENDIF //gold IF overall_score = 100 IF f1_old_score = 100 f1_which_medal_displayed = 0 ELSE INCREMENT_FLOAT_STAT DRIVING_SKILL 30.0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE f1_which_medal_displayed = 4 ENDIF ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// display_head_pos_dam_text:///////////////////////////////////////////////////////////////// DISPLAY_HUD FALSE DISPLAY_RADAR FALSE CLEAR_PRINTS CLEAR_ONSCREEN_TIMER car_timer IF f1_which_medal_displayed < 2 // no medal, 2 is bronze SET_TEXT_CENTRE ON SET_TEXT_SCALE 5.0 5.0 SET_TEXT_FONT FONT_BANK DISPLAY_TEXT 320.0 195.0 DS1_65 //nColor = WHITE:0 || BLUE:1 || GREEN:2 //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_RESULTS 0 0 0 0 0 0.0 BS_Z_8 ELSE //nColor = WHITE:0 || BLUE:1 || GREEN:2 //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_AWARD 0 0 0 0 0 0.0 BS_Z_8 ENDIF LVAR_FLOAT fTempVal fTempVal = 0.0 // DRAWING THE SCORE NAMES IF mission_selection = 6 OR mission_selection = 7 OR mission_selection = 16 fTempVal =# car_timer //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_ONE 1 0 1 0 2 fTempVal DS1_72 fTempVal =# time_score //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_TWO 1 1 0 0 2 fTempVal DS1_23 ELSE fTempVal =# heading_score //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_ONE 1 1 0 0 2 fTempVal DS1_5 fTempVal =# position_score //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_TWO 1 1 0 0 2 fTempVal DS1_6 ENDIF fTempVal =# total_car_damage //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_THREE 1 1 0 0 3 fTempVal DS1_7 fTempVal =# overall_score //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_FOUR 1 1 0 0 2 fTempVal DS1_10 // DISPLAYING MEDALS IF f1_print_top_scores_flag = 1 OR f1_print_top_scores_flag = 2 IF f1_which_medal_displayed > 0 DRAW_SPRITE 4 320.0 205.0 200.0 85.0 255 255 255 255 //bronze IF f1_which_medal_displayed = 2 DRAW_SPRITE 1 320.0 205.0 92.0 85.0 255 255 255 255 ENDIF //silver IF f1_which_medal_displayed = 3 DRAW_SPRITE 2 320.0 205.0 92.0 85.0 255 255 255 255 ENDIF //gold IF f1_which_medal_displayed = 4 DRAW_SPRITE 3 320.0 205.0 92.0 85.0 255 255 255 255 ENDIF //NEW CERTIFICATE AWARDED! GOSUB test_name_text SET_TEXT_EDGE 2 0 0 0 255 SET_TEXT_SCALE 1.0 3.4 SET_TEXT_DRAW_BEFORE_FADE TRUE SET_TEXT_COLOUR 189 131 24 255 DISPLAY_TEXT 323.0 65.0 DS1_47 //NEW CERTIFICATE AWARDED! ENDIF ENDIF IF f1_print_top_scores_flag = 1 OR f1_print_top_scores_flag = 2 // NEW HIGH SCORE GOSUB test_name_text SET_TEXT_EDGE 2 0 0 0 255 SET_TEXT_SCALE 1.0 3.4 SET_TEXT_COLOUR 255 255 255 255 DISPLAY_TEXT 323.0 110.0 DS1_46 //NEW HIGH SCORE! ENDIF RETURN skip_scores://///////////////////////////////////////////////////////////////////////////// IF IS_WIDGET_RELEASED WIDGET_SCHOOL_CONTINUE IF button_pressed = 1 button_pressed = 0 finished_watching_scores = 1 ENDIF ELSE IF button_pressed = 0 button_pressed = 1 ENDIF ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// mini_cleanup:////////////////////////////////////////////////////////////////////////////// REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DRIVING_AWARD_TRACK_STOP CLEAR_PRINTS DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS CLEAR_THIS_BIG_PRINT DS1_46 CLEAR_THIS_BIG_PRINT DS1_47 ALLOW_FIXED_CAMERA_COLLISION FALSE APPLY_BRAKES_TO_PLAYERS_CAR player1 FALSE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF instructor_car_dead_flag = 2 CLEAR_PRINTS IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer noticeboard_x noticeboard_y noticeboard_z ELSE SET_CHAR_COORDINATES scplayer noticeboard_x noticeboard_y noticeboard_z ENDIF ELSE IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer noticeboard_x noticeboard_y noticeboard_z ELSE SET_CHAR_COORDINATES scplayer noticeboard_x noticeboard_y noticeboard_z ENDIF ENDIF CLEAR_PRINTS WAIT 0 CLEAR_PRINTS DELETE_CAR instructor_car CLEAR_AREA noticeboard_x noticeboard_y noticeboard_z 300.0 TRUE //RESTORE_CAMERA_JUMPCUT// 3MASTER - this quickly streams in and out the track which is very annoying SET_CAMERA_BEHIND_PLAYER CLEAR_PRINTS WAIT 0 CLEAR_PRINTS CLEAR_ONSCREEN_TIMER car_timer FREEZE_ONSCREEN_TIMER FALSE DISPLAY_HUD TRUE DISPLAY_RADAR TRUE RETURN///////////////////////////////////////////////////////////////////////////////////// delete_end_of_rec: IF mission_selection = 14 //NEED TWO CARS FOR P.I.T. TECHNIQUE IF NOT IS_CAR_DEAD dummy_car1 STOP_PLAYBACK_RECORDED_CAR dummy_car1 ENDIF ENDIF STOP_PLAYBACK_RECORDED_CAR instructor_car DELETE_CAR instructor_car CLEAR_AREA noticeboard_x noticeboard_y noticeboard_z 300.0 TRUE CLEAR_ONSCREEN_TIMER car_timer FREEZE_ONSCREEN_TIMER FALSE DELETE_CHAR f1_test_crash_dummy DELETE_CHAR f1_test_crash_dummy2 DELETE_CAR dummy_car1 DELETE_CAR dummy_car2 DELETE_CAR instructor_car DELETE_OBJECT ramp1 DELETE_OBJECT ramp2 DELETE_OBJECT f1_stinger REMOVE_CAR_RECORDING 1 REMOVE_CAR_RECORDING 2 REMOVE_CAR_RECORDING 3 REMOVE_CAR_RECORDING 4 REMOVE_CAR_RECORDING 5 REMOVE_CAR_RECORDING 7 REMOVE_CAR_RECORDING 9 REMOVE_CAR_RECORDING 10 REMOVE_CAR_RECORDING 11 REMOVE_CAR_RECORDING 13 REMOVE_CAR_RECORDING 14 REMOVE_CAR_RECORDING 15 REMOVE_CAR_RECORDING 16 RETURN deleting_cones://////////////////////////////////////////////////////////////////////////// CLEAR_PRINTS trafficcone_counter = 0 WHILE trafficcone_counter < 46 CLEAR_PRINTS DELETE_OBJECT trafficcones[trafficcone_counter] trafficcone_counter ++ ENDWHILE RETURN///////////////////////////////////////////////////////////////////////////////////// creating_cones://////////////////////////////////////////////////////////////////////////// trafficcone_counter = 0 IF mission_selection = 1 WHILE trafficcone_counter < 15 CREATE_OBJECT_NO_OFFSET trafficcone 0.0 0.0 100.0 trafficcones[trafficcone_counter] trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 2 WHILE trafficcone_counter < 25 CREATE_OBJECT_NO_OFFSET trafficcone 0.0 0.0 100.0 trafficcones[trafficcone_counter] trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 3 OR mission_selection = 4 WHILE trafficcone_counter < 46 CREATE_OBJECT_NO_OFFSET trafficcone 0.0 0.0 100.0 trafficcones[trafficcone_counter] trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 5 WHILE trafficcone_counter < 37 CREATE_OBJECT_NO_OFFSET trafficcone 0.0 0.0 100.0 trafficcones[trafficcone_counter] trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 6 OR mission_selection = 7 WHILE trafficcone_counter < 42 CREATE_OBJECT_NO_OFFSET trafficcone 0.0 0.0 100.0 trafficcones[trafficcone_counter] trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 8 OR mission_selection = 9 WHILE trafficcone_counter < 30 CREATE_OBJECT_NO_OFFSET trafficcone 0.0 0.0 100.0 trafficcones[trafficcone_counter] trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 12 OR mission_selection = 13 WHILE trafficcone_counter < 31 CREATE_OBJECT_NO_OFFSET trafficcone 0.0 0.0 100.0 trafficcones[trafficcone_counter] trafficcone_counter ++ ENDWHILE ENDIF //placing cones for the 360 IF mission_selection = 1 cone_circle_radius = 6.0 //creating a pure circle where_to_place_cones = 0.0 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 0.0 1.0 -0.5 circle_start_x circle_start_y cone_coords_z GET_GROUND_Z_FOR_3D_COORD circle_start_x circle_start_y 40.0 cone_coords_z cone_coords_z += 0.4 creating_cone_circle4: SIN where_to_place_cones cone_coords_x cone_coords_x = cone_coords_x * cone_circle_radius cone_coords_x = cone_coords_x + circle_start_x COS where_to_place_cones cone_coords_y cone_coords_y = cone_coords_y * cone_circle_radius cone_coords_y = cone_coords_y + circle_start_y IF where_to_place_cones = 0.0 SET_OBJECT_COORDINATES trafficcones[0] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 24.0 SET_OBJECT_COORDINATES trafficcones[1] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 48.0 SET_OBJECT_COORDINATES trafficcones[2] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 72.0 SET_OBJECT_COORDINATES trafficcones[3] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 96.0 SET_OBJECT_COORDINATES trafficcones[4] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 120.0 SET_OBJECT_COORDINATES trafficcones[5] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 144.0 SET_OBJECT_COORDINATES trafficcones[6] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 168.0 SET_OBJECT_COORDINATES trafficcones[7] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 192.0 SET_OBJECT_COORDINATES trafficcones[8] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 216.0 SET_OBJECT_COORDINATES trafficcones[9] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 240.0 SET_OBJECT_COORDINATES trafficcones[10] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 264.0 SET_OBJECT_COORDINATES trafficcones[11] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 288.0 SET_OBJECT_COORDINATES trafficcones[12] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 312.0 SET_OBJECT_COORDINATES trafficcones[13] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 336.0 SET_OBJECT_COORDINATES trafficcones[14] cone_coords_x cone_coords_y cone_coords_z ENDIF where_to_place_cones = where_to_place_cones + 24.0 IF where_to_place_cones < 360.0 GOTO creating_cone_circle4 ENDIF ENDIF //placing cones for the 180 IF mission_selection = 2 //creating the semi circle at the end of the straight cone_circle_radius = 8.8 where_to_place_cones = 90.0 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 0.0 86.0 -0.5 circle_start_x circle_start_y cone_coords_z GET_GROUND_Z_FOR_3D_COORD circle_start_x circle_start_y 40.0 cone_coords_z cone_coords_z += 0.4 creating_cone_circle3: SIN where_to_place_cones cone_coords_x cone_coords_x = cone_coords_x * cone_circle_radius cone_coords_x = cone_coords_x + circle_start_x COS where_to_place_cones cone_coords_y cone_coords_y = cone_coords_y * cone_circle_radius cone_coords_y = cone_coords_y + circle_start_y IF where_to_place_cones = 120.0 SET_OBJECT_COORDINATES trafficcones[0] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 150.0 SET_OBJECT_COORDINATES trafficcones[1] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 180.0 SET_OBJECT_COORDINATES trafficcones[2] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 210.0 SET_OBJECT_COORDINATES trafficcones[3] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 240.0 SET_OBJECT_COORDINATES trafficcones[4] cone_coords_x cone_coords_y cone_coords_z ENDIF where_to_place_cones = where_to_place_cones + 30.0 IF where_to_place_cones < 271.0 GOTO creating_cone_circle3 ENDIF //RUNWAY UP TO CIRCLE //1st set left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[7] instructor_car -7.0 74.0 -0.5 //1st set right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[8] instructor_car 7.0 74.0 -0.5 //2nd set left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[9] instructor_car -7.0 78.0 -0.5 //2nd set right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[10] instructor_car 7.0 78.0 -0.5 //3rd set left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[11] instructor_car -7.0 82.0 -0.5 //3rd set right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[12] instructor_car 7.0 82.0 -0.5 //4th set left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[13] instructor_car -7.0 86.0 -0.5 //4th set right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[14] instructor_car 7.0 86.0 -0.5 //3rd centre cone PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[15] instructor_car 0.0 82.0 -0.5 //AROUND CAR //front left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[16] instructor_car -3.0 4.0 -0.5 //front right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[17] instructor_car 3.0 4.0 -0.5 //left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[18] instructor_car -3.0 0.0 -0.5 //right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[19] instructor_car 3.0 0.0 -0.5 //back left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[20] instructor_car -3.0 -4.0 -0.5 //back right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[21] instructor_car 3.0 -4.0 -0.5 //back of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[22] instructor_car 0.0 -4.0 -0.5 //EXTRA CENTRE CONES.... //1st centre cone PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[23] instructor_car 0.0 74.0 -0.5 //2nd centre cone PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[24] instructor_car 0.0 78.0 -0.5 trafficcone_counter = 7 WHILE trafficcone_counter < 25 IF DOES_OBJECT_EXIST trafficcones[trafficcone_counter] GET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z GET_GROUND_Z_FOR_3D_COORD cone_coords_x cone_coords_y 40.0 cone_coords_z cone_coords_z += 0.4 SET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z ENDIF trafficcone_counter ++ ENDWHILE ENDIF //placing cones for reverse spin and go IF mission_selection = 12 OR mission_selection = 13 //AROUND CAR //front of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[0] instructor_car 0.0 4.0 -0.5 //front left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[1] instructor_car -3.0 4.0 -0.5 //front right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[2] instructor_car 3.0 4.0 -0.5 //left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[3] instructor_car -3.0 0.0 -0.5 //right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[4] instructor_car 3.0 0.0 -0.5 //back left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[5] instructor_car -3.0 -4.0 -0.5 //back right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[6] instructor_car 3.0 -4.0 -0.5 //RUNWAY BEHIND CAR TO CURVE //1st set behind car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[7] instructor_car -3.0 -8.0 -0.5 //1st set behind car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[8] instructor_car 3.0 -8.0 -0.5 //2nd set behind car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[9] instructor_car -3.0 -12.0 -0.5 //2nd set behind car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[10] instructor_car 3.0 -12.0 -0.5 //3rd set behind car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[11] instructor_car -3.0 -16.0 -0.5 //3rd set behind car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[12] instructor_car 3.0 -16.0 -0.5 //4th set behind car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[13] instructor_car -3.0 -20.0 -0.5 //4th set behind car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[14] instructor_car 3.0 -20.0 -0.5 trafficcone_counter = 0 WHILE trafficcone_counter < 15 IF DOES_OBJECT_EXIST trafficcones[trafficcone_counter] GET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z GET_GROUND_Z_FOR_3D_COORD cone_coords_x cone_coords_y 40.0 cone_coords_z cone_coords_z += 0.4 SET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z ENDIF trafficcone_counter ++ ENDWHILE ENDIF //creating the duplicate cones IF mission_selection = 12 //START OF CURVE //1st set curve car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[15] instructor_car -3.0 -24.0 -0.5 //1st set curve car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[16] instructor_car 6.0 -22.0 -0.5 //2nd set curve car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[17] instructor_car 0.0 -28.0 -0.5 //2nd set curve car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[18] instructor_car 8.0 -24.0 -0.5 //3rd set curve car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[19] instructor_car 3.0 -30.0 -0.5 //3rd set curve car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[20] instructor_car 10.0 -26.0 -0.5 //4th set curve car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[21] instructor_car 4.0 -32.0 -0.5 //4th cone curve car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[22] instructor_car 10.0 -30.0 -0.5 //END STRAIGHT //1st set of end straight right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[23] instructor_car 9.0 -32.0 -0.5 //2nd set of end straight left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[24] instructor_car 4.0 -36.0 -0.5 //2nd set of end straight right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[25] instructor_car 9.0 -36.0 -0.5 //3rd set of end straight left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[26] instructor_car 4.0 -40.0 -0.5 //3rd set of end straight right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[27] instructor_car 9.0 -40.0 -0.5 //4th set of end straight left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[28] instructor_car 4.0 -44.0 -0.5 //4th set of end straight right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[29] instructor_car 9.0 -44.0 -0.5 //last cone PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[30] instructor_car 6.5 -44.0 -0.5 trafficcone_counter = 15 WHILE trafficcone_counter < 31 IF DOES_OBJECT_EXIST trafficcones[trafficcone_counter] GET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z GET_GROUND_Z_FOR_3D_COORD cone_coords_x cone_coords_y 40.0 cone_coords_z cone_coords_z += 0.4 SET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z ENDIF trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 13 //START OF CURVE //1st set curve car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[15] instructor_car 3.0 -24.0 -0.5 //1st set curve car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[16] instructor_car -6.0 -22.0 -0.5 //2nd set curve car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[17] instructor_car -0.0 -28.0 -0.5 //2nd set curve car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[18] instructor_car -8.0 -24.0 -0.5 //3rd set curve car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[19] instructor_car -3.0 -30.0 -0.5 //3rd set curve car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[20] instructor_car -10.0 -26.0 -0.5 //4th set curve car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[21] instructor_car -4.0 -32.0 -0.5 //4th cone curve car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[22] instructor_car -10.0 -30.0 -0.5 //END STRAIGHT //1st set of end straight right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[23] instructor_car -9.0 -32.0 -0.5 //2nd set of end straight left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[24] instructor_car -4.0 -36.0 -0.5 //2nd set of end straight right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[25] instructor_car -9.0 -36.0 -0.5 //3rd set of end straight left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[26] instructor_car -4.0 -40.0 -0.5 //3rd set of end straight right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[27] instructor_car -9.0 -40.0 -0.5 //4th set of end straight left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[28] instructor_car -4.0 -44.0 -0.5 //4th set of end straight right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[29] instructor_car -9.0 -44.0 -0.5 //last cone PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[30] instructor_car -6.5 -44.0 -0.5 trafficcone_counter = 15 WHILE trafficcone_counter < 31 IF DOES_OBJECT_EXIST trafficcones[trafficcone_counter] GET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z GET_GROUND_Z_FOR_3D_COORD cone_coords_x cone_coords_y 40.0 cone_coords_z cone_coords_z += 0.4 SET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z ENDIF trafficcone_counter ++ ENDWHILE ENDIF //placing cones for burn and lap IF mission_selection = 6 OR mission_selection = 7 //AROUND CAR //front left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[0] instructor_car -4.0 8.0 -0.5 //front right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[1] instructor_car 4.0 8.0 -0.5 //left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[2] instructor_car -4.0 2.0 -0.5 //right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[3] instructor_car 4.0 2.0 -0.5 //back left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[4] instructor_car -4.0 -4.0 -0.5 //RUNWAY IN FRONT TO CURVE //1st set front car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[5] instructor_car -4.0 14.0 -0.5 //1st set front car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[6] instructor_car 4.0 14.0 -0.5 //2nd set front car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[7] instructor_car -4.0 20.0 -0.5 //2nd set front car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[8] instructor_car 4.0 20.0 -0.5 //3rd set front car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[9] instructor_car -4.0 26.0 -0.5 //3rd set front car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[10] instructor_car 4.0 26.0 -0.5 //4th set front car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[11] instructor_car -4.0 32.0 -0.5 //4th set front car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[12] instructor_car 4.0 32.0 -0.5 //5th set front car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[13] instructor_car -4.0 38.0 -0.5 //5th set front car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[14] instructor_car 4.0 38.0 -0.5 //6th set front car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[15] instructor_car -4.0 44.0 -0.5 //6th set front car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[16] instructor_car 4.0 44.0 -0.5 //6th set curve car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[17] instructor_car -4.0 50.0 -0.5 trafficcone_counter = 0 WHILE trafficcone_counter < 18 IF DOES_OBJECT_EXIST trafficcones[trafficcone_counter] GET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z GET_GROUND_Z_FOR_3D_COORD cone_coords_x cone_coords_y 40.0 cone_coords_z cone_coords_z += 0.4 SET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z ENDIF trafficcone_counter ++ ENDWHILE //creating the semi circle at the end of the first straight where_to_place_cones = 90.0 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 4.0 50.0 -0.5 circle_start_x circle_start_y cone_coords_z GET_GROUND_Z_FOR_3D_COORD circle_start_x circle_start_y 40.0 cone_coords_z cone_coords_z += 0.4 creating_cone_circle: SIN where_to_place_cones cone_coords_x cone_coords_x = cone_coords_x * cone_circle_radius cone_coords_x = cone_coords_x + circle_start_x COS where_to_place_cones cone_coords_y cone_coords_y = cone_coords_y * cone_circle_radius cone_coords_y = cone_coords_y + circle_start_y IF where_to_place_cones = 126.0 SET_OBJECT_COORDINATES trafficcones[18] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 144.0 SET_OBJECT_COORDINATES trafficcones[19] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 162.0 SET_OBJECT_COORDINATES trafficcones[20] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 180.0 SET_OBJECT_COORDINATES trafficcones[21] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 198.0 SET_OBJECT_COORDINATES trafficcones[22] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 216.0 SET_OBJECT_COORDINATES trafficcones[23] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 234.0 SET_OBJECT_COORDINATES trafficcones[24] cone_coords_x cone_coords_y cone_coords_z ENDIF where_to_place_cones = where_to_place_cones + 18.0 IF where_to_place_cones < 271.0 GOTO creating_cone_circle ENDIF //Otherside of lane //far front right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[25] instructor_car 12.0 8.0 -0.5 //far right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[26] instructor_car 12.0 2.0 -0.5 //far back right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[27] instructor_car 12.0 -4.0 -0.5 //RUNWAY IN FRONT TO CURVE otherside of lane //1st set far front car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[28] instructor_car 12.0 14.0 -0.5 //2nd set far front car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[29] instructor_car 12.0 20.0 -0.5 //3rd set far front car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[30] instructor_car 12.0 26.0 -0.5 //4th set far front car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[31] instructor_car 12.0 32.0 -0.5 //5th set far front car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[32] instructor_car 12.0 38.0 -0.5 //6th set far front car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[33] instructor_car 12.0 44.0 -0.5 //6th set far curve car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[34] instructor_car 12.0 50.0 -0.5 trafficcone_counter = 25 WHILE trafficcone_counter < 35 IF DOES_OBJECT_EXIST trafficcones[trafficcone_counter] GET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z GET_GROUND_Z_FOR_3D_COORD cone_coords_x cone_coords_y 40.0 cone_coords_z cone_coords_z += 0.4 SET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z ENDIF trafficcone_counter ++ ENDWHILE //new circle coordinates where_to_place_cones = 270.0 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 4.0 -4.0 -0.5 circle_start_x circle_start_y cone_coords_z GET_GROUND_Z_FOR_3D_COORD circle_start_x circle_start_y 40.0 cone_coords_z cone_coords_z += 0.4 //creating the 2nd semi circle at the end of the second straight creating_cone_circle2: SIN where_to_place_cones cone_coords_x cone_coords_x = cone_coords_x * cone_circle_radius cone_coords_x = cone_coords_x + circle_start_x COS where_to_place_cones cone_coords_y cone_coords_y = cone_coords_y * cone_circle_radius cone_coords_y = cone_coords_y + circle_start_y IF where_to_place_cones = 306.0 SET_OBJECT_COORDINATES trafficcones[35] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 324.0 SET_OBJECT_COORDINATES trafficcones[36] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 342.0 SET_OBJECT_COORDINATES trafficcones[37] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 360.0 SET_OBJECT_COORDINATES trafficcones[38] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 378.0 SET_OBJECT_COORDINATES trafficcones[39] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 396.0 SET_OBJECT_COORDINATES trafficcones[40] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 414.0 SET_OBJECT_COORDINATES trafficcones[41] cone_coords_x cone_coords_y cone_coords_z ENDIF where_to_place_cones = where_to_place_cones + 18.0 IF where_to_place_cones < 451.0 GOTO creating_cone_circle2 ENDIF ENDIF //placing cones for pop control IF mission_selection = 5 //right stinger PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[0] instructor_car 2.0 40.0 -0.5 //left stinger PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[1] instructor_car -2.0 40.0 -0.5 //front right of stinger PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[2] instructor_car 3.0 44.0 -0.5 //front left of stinger PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[3] instructor_car -3.0 44.0 -0.5 //2nd front right of stinger PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[4] instructor_car 3.0 48.0 -0.5 //2nd front left of stinger PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[5] instructor_car -3.0 48.0 -0.5 //3rd front right of stinger PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[6] instructor_car 3.0 52.0 -0.5 //3rd front left of stinger PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[7] instructor_car -3.0 52.0 -0.5 //4th front right of stinger PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[8] instructor_car 3.0 56.0 -0.5 //4th front left of stinger PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[9] instructor_car -3.0 56.0 -0.5 //1st curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[10] instructor_car 4.0 60.0 -0.5 //1st curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[11] instructor_car -2.0 60.0 -0.5 //2nd curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[12] instructor_car 5.0 64.0 -0.5 //2nd curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[13] instructor_car -1.0 64.0 -0.5 //3rd curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[14] instructor_car 6.0 68.0 -0.5 //3rd curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[15] instructor_car 0.0 68.0 -0.5 //1st straight bit of curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[16] instructor_car 6.0 72.0 -0.5 //1st straight bit of curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[17] instructor_car 0.0 72.0 -0.5 //2nd straight bit of curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[18] instructor_car 6.0 76.0 -0.5 //2nd straight bit of curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[19] instructor_car 0.0 76.0 -0.5 //3rd straight bit of curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[20] instructor_car 6.0 80.0 -0.5 //3rd straight bit of curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[21] instructor_car 0.0 80.0 -0.5 //1st end curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[22] instructor_car 5.0 84.0 -0.5 //1st end curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[23] instructor_car -1.0 84.0 -0.5 //2nd end curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[24] instructor_car 4.0 88.0 -0.5 //2nd end curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[25] instructor_car -2.0 88.0 -0.5 //3rd end curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[26] instructor_car 3.0 92.0 -0.5 //3rd end curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[27] instructor_car -3.0 92.0 -0.5 //1st set final right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[28] instructor_car 3.0 96.0 -0.5 //1st set final left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[29] instructor_car -3.0 96.0 -0.5 //2nd set final right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[30] instructor_car 3.0 100.0 -0.5 //2nd set final left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[31] instructor_car -3.0 100.0 -0.5 //3rd set final right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[32] instructor_car 3.0 104.0 -0.5 //3rd set final left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[33] instructor_car -3.0 104.0 -0.5 //4th set final right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[34] instructor_car 3.0 108.0 -0.5 //4th set final left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[35] instructor_car -3.0 108.0 -0.5 //last cone PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[36] instructor_car 0.0 108.0 -0.5 trafficcone_counter = 0 WHILE trafficcone_counter < 37 IF DOES_OBJECT_EXIST trafficcones[trafficcone_counter] GET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z GET_GROUND_Z_FOR_3D_COORD cone_coords_x cone_coords_y 40.0 cone_coords_z cone_coords_z += 0.4 SET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z ENDIF trafficcone_counter ++ ENDWHILE ENDIF //placing cones for Whip and Terminate IF mission_selection = 3 OR mission_selection = 4 //AROUND CAR //front left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[0] instructor_car -4.0 4.0 -0.5 //front right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[1] instructor_car 4.0 4.0 -0.5 //left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[2] instructor_car -4.0 0.0 -0.5 //right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[3] instructor_car 4.0 0.0 -0.5 //back left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[4] instructor_car -4.0 -4.0 -0.5 //back right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[5] instructor_car 4.0 -4.0 -0.5 //back of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[6] instructor_car 0.0 -4.0 -0.5 //RUNWAY IN FRONT TO CURVE //1st set front car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[7] instructor_car -4.0 8.0 -0.5 //1st set front car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[8] instructor_car 4.0 8.0 -0.5 //2nd set front car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[9] instructor_car -4.0 12.0 -0.5 //2nd set front car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[10] instructor_car 4.0 12.0 -0.5 //3rd set front car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[11] instructor_car -4.0 16.0 -0.5 //3rd set front car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[12] instructor_car 4.0 16.0 -0.5 //4th set front car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[13] instructor_car -4.0 20.0 -0.5 //4th set front car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[14] instructor_car 4.0 20.0 -0.5 //5th set front car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[15] instructor_car -4.0 24.0 -0.5 //5th set front car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[16] instructor_car 4.0 24.0 -0.5 //6th set front car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[17] instructor_car -4.0 28.0 -0.5 //6th set front car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[18] instructor_car 4.0 28.0 -0.5 //7th set front car left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[19] instructor_car -4.0 32.0 -0.5 //7th set front car right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[20] instructor_car 4.0 32.0 -0.5 trafficcone_counter = 0 WHILE trafficcone_counter < 21 IF DOES_OBJECT_EXIST trafficcones[trafficcone_counter] GET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z GET_GROUND_Z_FOR_3D_COORD cone_coords_x cone_coords_y 40.0 cone_coords_z cone_coords_z += 0.4 SET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z ENDIF trafficcone_counter ++ ENDWHILE //creating the semi circle at the end of the first straight where_to_place_cones = 90.0 IF mission_selection = 3 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car 4.0 30.0 -0.5 circle_start_x circle_start_y cone_coords_z ELSE GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car -4.0 30.0 -0.5 circle_start_x circle_start_y cone_coords_z ENDIF GET_GROUND_Z_FOR_3D_COORD circle_start_x circle_start_y 40.0 cone_coords_z cone_coords_z += 0.4 creating_cone_quart_circle: SIN where_to_place_cones cone_coords_x cone_coords_x = cone_coords_x * cone_circle_radius cone_coords_x = cone_coords_x + circle_start_x COS where_to_place_cones cone_coords_y cone_coords_y = cone_coords_y * cone_circle_radius cone_coords_y = cone_coords_y + circle_start_y ENDIF IF mission_selection = 3 IF where_to_place_cones = 126.0 SET_OBJECT_COORDINATES trafficcones[21] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 144.0 SET_OBJECT_COORDINATES trafficcones[22] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 162.0 SET_OBJECT_COORDINATES trafficcones[23] cone_coords_x cone_coords_y cone_coords_z ENDIF ENDIF IF mission_selection = 4 IF where_to_place_cones = 198.0 SET_OBJECT_COORDINATES trafficcones[21] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 216.0 SET_OBJECT_COORDINATES trafficcones[22] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 234.0 SET_OBJECT_COORDINATES trafficcones[23] cone_coords_x cone_coords_y cone_coords_z ENDIF ENDIF IF mission_selection = 3 OR mission_selection = 4 IF where_to_place_cones = 180.0 SET_OBJECT_COORDINATES trafficcones[24] cone_coords_x cone_coords_y cone_coords_z ENDIF where_to_place_cones = where_to_place_cones + 18.0 IF mission_selection = 3 IF where_to_place_cones < 181.0 GOTO creating_cone_quart_circle ENDIF ELSE IF where_to_place_cones < 235.0 GOTO creating_cone_quart_circle ENDIF ENDIF ENDIF IF mission_selection = 3 //1st set curve left (left as car faces stopping point) PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[25] instructor_car 8.0 40.0 -0.5 //1st set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[26] instructor_car 8.0 32.0 -0.5 //2nd set curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[27] instructor_car 12.0 40.0 -0.5 //2nd set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[28] instructor_car 12.0 32.0 -0.5 //3rd set curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[29] instructor_car 16.0 40.0 -0.5 //3rd set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[30] instructor_car 16.0 32.0 -0.5 //bring them in narrower //4th set curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[31] instructor_car 20.0 40.0 -0.5 //4th set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[32] instructor_car 20.0 33.0 -0.5 //5th set curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[33] instructor_car 24.0 40.0 -0.5 //5th set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[34] instructor_car 24.0 33.0 -0.5 //bring them in narrower //6th set curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[35] instructor_car 28.0 40.0 -0.5 //6th set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[36] instructor_car 28.0 34.0 -0.5 //7th set curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[37] instructor_car 32.0 40.0 -0.5 //7th set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[38] instructor_car 32.0 34.0 -0.5 //final resting place //8th set curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[39] instructor_car 36.0 39.0 -0.5 //8th set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[40] instructor_car 36.0 35.0 -0.5 //9th set curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[41] instructor_car 40.0 39.0 -0.5 //9th set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[42] instructor_car 40.0 35.0 -0.5 //8th set curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[43] instructor_car 44.0 39.0 -0.5 //8th set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[44] instructor_car 44.0 35.0 -0.5 //end cone PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[45] instructor_car 44.0 37.0 -0.5 trafficcone_counter = 25 WHILE trafficcone_counter < 46 IF DOES_OBJECT_EXIST trafficcones[trafficcone_counter] GET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z GET_GROUND_Z_FOR_3D_COORD cone_coords_x cone_coords_y 40.0 cone_coords_z cone_coords_z += 0.4 SET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z ENDIF trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 4 //1st set curve left (left as car faces stopping point) PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[25] instructor_car -8.0 40.0 -0.5 //1st set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[26] instructor_car -8.0 32.0 -0.5 //2nd set curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[27] instructor_car -12.0 40.0 -0.5 //2nd set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[28] instructor_car -12.0 32.0 -0.5 //3rd set curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[29] instructor_car -16.0 40.0 -0.5 //3rd set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[30] instructor_car -16.0 32.0 -0.5 //bring them in narrower //4th set curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[31] instructor_car -20.0 40.0 -0.5 //4th set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[32] instructor_car -20.0 33.0 -0.5 //5th set curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[33] instructor_car -24.0 40.0 -0.5 //5th set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[34] instructor_car -24.0 33.0 -0.5 //bring them in narrower //6th set curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[35] instructor_car -28.0 40.0 -0.5 //6th set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[36] instructor_car -28.0 34.0 -0.5 //7th set curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[37] instructor_car -32.0 40.0 -0.5 //7th set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[38] instructor_car -32.0 34.0 -0.5 //final resting place //8th set curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[39] instructor_car -36.0 39.0 -0.5 //8th set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[40] instructor_car -36.0 35.0 -0.5 //9th set curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[41] instructor_car -40.0 39.0 -0.5 //9th set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[42] instructor_car -40.0 35.0 -0.5 //8th set curve left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[43] instructor_car -44.0 39.0 -0.5 //8th set curve right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[44] instructor_car -44.0 35.0 -0.5 //end cone PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[45] instructor_car -44.0 37.0 -0.5 trafficcone_counter = 25 WHILE trafficcone_counter < 46 IF DOES_OBJECT_EXIST trafficcones[trafficcone_counter] GET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z GET_GROUND_Z_FOR_3D_COORD cone_coords_x cone_coords_y 40.0 cone_coords_z cone_coords_z += 0.4 SET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z ENDIF trafficcone_counter ++ ENDWHILE ENDIF //Placing cones for Cone Coil IF mission_selection = 8 //clockwise // 1st line 1st left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[0] instructor_car -8.0 20.0 -0.5 // 1st line 2nd left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[1] instructor_car -6.0 20.0 -0.5 // 1st line 3rd left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[2] instructor_car -4.0 20.0 -0.5 // 1st line 4th left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[3] instructor_car -2.0 20.0 -0.5 // 1st line 5th left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[4] instructor_car 0.0 20.0 -0.5 // 2nd line 1st left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[5] instructor_car 7.0 40.0 -0.5 // 2nd line 2nd left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[6] instructor_car 5.0 40.0 -0.5 // 2nd line 3rd left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[7] instructor_car 3.0 40.0 -0.5 // 2nd line 4th left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[8] instructor_car 1.0 40.0 -0.5 // 2nd line 5th left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[9] instructor_car -1.0 40.0 -0.5 // 3rd line 1st left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[10] instructor_car -8.0 60.0 -0.5 // 3rd line 2nd left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[11] instructor_car -6.0 60.0 -0.5 // 3rd line 3rd left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[12] instructor_car -4.0 60.0 -0.5 // 3rd line 4th left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[13] instructor_car -2.0 60.0 -0.5 // 3rd line 5th left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[14] instructor_car 0.0 60.0 -0.5 /* // 4th line 1st left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[15] instructor_car 6.0 80.0 -0.5 // 4th line 2nd left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[16] instructor_car 4.0 80.0 -0.5 // 4th line 3rd left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[17] instructor_car 2.0 80.0 -0.5 // 4th line 4th left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[18] instructor_car 0.0 80.0 -0.5 // 4th line 5th left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[19] instructor_car -2.0 80.0 -0.5 */ trafficcone_counter = 0 WHILE trafficcone_counter < 15 IF DOES_OBJECT_EXIST trafficcones[trafficcone_counter] GET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z GET_GROUND_Z_FOR_3D_COORD cone_coords_x cone_coords_y 40.0 cone_coords_z cone_coords_z += 0.4 SET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z ENDIF trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 9 //anti-clockwise // 1st line 1st left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[0] instructor_car 7.0 20.0 -0.5 // 1st line 2nd left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[1] instructor_car 5.0 20.0 -0.5 // 1st line 3rd left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[2] instructor_car 3.0 20.0 -0.5 // 1st line 4th left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[3] instructor_car 1.0 20.0 -0.5 // 1st line 5th left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[4] instructor_car -1.0 20.0 -0.5 // 2nd line 1st left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[5] instructor_car -8.0 40.0 -0.5 // 2nd line 2nd left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[6] instructor_car -6.0 40.0 -0.5 // 2nd line 3rd left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[7] instructor_car -4.0 40.0 -0.5 // 2nd line 4th left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[8] instructor_car -2.0 40.0 -0.5 // 2nd line 5th left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[9] instructor_car 0.0 40.0 -0.5 // 3rd line 1st left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[10] instructor_car 7.0 60.0 -0.5 // 3rd line 2nd left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[11] instructor_car 5.0 60.0 -0.5 // 3rd line 3rd left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[12] instructor_car 3.0 60.0 -0.5 // 3rd line 4th left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[13] instructor_car 1.0 60.0 -0.5 // 3rd line 5th left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[14] instructor_car -1.0 60.0 -0.5 /* // 4th line 1st left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[15] instructor_car -6.0 80.0 -0.5 // 4th line 2nd left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[16] instructor_car -4.0 80.0 -0.5 // 4th line 3rd left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[17] instructor_car -2.0 80.0 -0.5 // 4th line 4th left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[18] instructor_car 0.0 80.0 -0.5 // 4th line 5th left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[19] instructor_car 2.0 80.0 -0.5 */ trafficcone_counter = 0 WHILE trafficcone_counter < 15 IF DOES_OBJECT_EXIST trafficcones[trafficcone_counter] GET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z GET_GROUND_Z_FOR_3D_COORD cone_coords_x cone_coords_y 40.0 cone_coords_z cone_coords_z += 0.4 SET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z ENDIF trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 8 OR mission_selection = 9 //creating the semi circle at the end of the straight cone_circle_radius = 8.0 where_to_place_cones = 90.0 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_car -0.5 81.0 -0.5 circle_start_x circle_start_y cone_coords_z GET_GROUND_Z_FOR_3D_COORD circle_start_x circle_start_y 40.0 cone_coords_z cone_coords_z += 0.4 creating_cone_circle5: SIN where_to_place_cones cone_coords_x cone_coords_x = cone_coords_x * cone_circle_radius cone_coords_x = cone_coords_x + circle_start_x COS where_to_place_cones cone_coords_y cone_coords_y = cone_coords_y * cone_circle_radius cone_coords_y = cone_coords_y + circle_start_y IF where_to_place_cones = 90.0 SET_OBJECT_COORDINATES trafficcones[23] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 120.0 SET_OBJECT_COORDINATES trafficcones[24] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 150.0 SET_OBJECT_COORDINATES trafficcones[25] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 180.0 SET_OBJECT_COORDINATES trafficcones[26] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 210.0 SET_OBJECT_COORDINATES trafficcones[27] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 240.0 SET_OBJECT_COORDINATES trafficcones[28] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 270.0 SET_OBJECT_COORDINATES trafficcones[29] cone_coords_x cone_coords_y cone_coords_z ENDIF where_to_place_cones = where_to_place_cones + 30.0 IF where_to_place_cones < 271.0 GOTO creating_cone_circle5 ENDIF //Last cone PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[15] instructor_car 0.0 80.0 -0.5 //AROUND CAR //front left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[16] instructor_car -3.0 4.0 -0.5 //front right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[17] instructor_car 3.0 4.0 -0.5 //left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[18] instructor_car -3.0 0.0 -0.5 //right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[19] instructor_car 3.0 0.0 -0.5 //back left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[20] instructor_car -3.0 -4.0 -0.5 //back right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[21] instructor_car 3.0 -4.0 -0.5 //back of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[22] instructor_car 0.0 -4.0 -0.5 trafficcone_counter = 15 WHILE trafficcone_counter < 23 IF DOES_OBJECT_EXIST trafficcones[trafficcone_counter] GET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z GET_GROUND_Z_FOR_3D_COORD cone_coords_x cone_coords_y 40.0 cone_coords_z cone_coords_z += 0.4 SET_OBJECT_COORDINATES trafficcones[trafficcone_counter] cone_coords_x cone_coords_y cone_coords_z ENDIF trafficcone_counter ++ ENDWHILE ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// f1_overall_dialogue://///////////////////////////////////////////////////////////////////// IF f1_speech_goals = 1 //cutscene dialogue IF f1_speech_control_flag < f1_last_label GOSUB f1_loading_dialogue GOSUB f1_playing_dialogue GOSUB f1_finishing_dialogue ELSE IF NOT IS_CHAR_DEAD f1_secretary STOP_CHAR_FACIAL_TALK f1_secretary ENDIF f1_speech_goals = 0 ENDIF ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// f1_dialogue_setup:////////////////////////////////////////////////////////// IF f1_speech_goals = 1 $f1_print_label[0] = &MEC_D1 // Welcome to the Advanced Driving School $f1_print_label[1] = &MEC_D2 // To pass you must score BRONZE or higher in all 11 tests. $f1_print_label[2] = &MEC_D3 // To view a demonstration of each test, please use the TV over there. $f1_print_label[3] = &MEC_D4 // Passing a test will unlock the next test in the training program. $f1_print_label[4] = &MEC_D5 // You can come back and check your scores or take new tests at any time. f1_audio_label[0] = SOUND_MEC_D1 f1_audio_label[1] = SOUND_MEC_D2 f1_audio_label[2] = SOUND_MEC_D3 f1_audio_label[3] = SOUND_MEC_D4 f1_audio_label[4] = SOUND_MEC_D5 f1_last_label = 5 ENDIF f1_slot_load = f1_speech_control_flag f1_slot1 = 0 f1_slot2 = 0 f1_play_which_slot = 1 RETURN///////////////////////////////////////////////////////////////////////////////////// f1_loading_dialogue://////////////////////////////////////////////////////// IF f1_slot_load < f1_last_label //slot 1 IF f1_slot1 = 0 LOAD_MISSION_AUDIO 1 f1_audio_label[f1_slot_load] f1_slot_load ++ f1_slot1 = 1 ENDIF //slot 2 IF f1_slot2 = 0 LOAD_MISSION_AUDIO 2 f1_audio_label[f1_slot_load] f1_slot_load ++ f1_slot2 = 1 ENDIF ENDIF RETURN////////////////////////////////////////////////////////////////////// f1_playing_dialogue://////////////////////////////////////////////////////// //slot 1 IF f1_play_which_slot = 1 IF f1_slot1 = 1 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $f1_print_label[f1_speech_control_flag] ) 4500 1 f1_slot1 = 2 ENDIF ENDIF ENDIF //slot 2 IF f1_play_which_slot = 2 IF f1_slot2 = 1 IF HAS_MISSION_AUDIO_LOADED 2 PLAY_MISSION_AUDIO 2 PRINT_NOW ( $f1_print_label[f1_speech_control_flag] ) 4500 1 f1_slot2 = 2 ENDIF ENDIF ENDIF RETURN////////////////////////////////////////////////////////////////////// f1_finishing_dialogue:////////////////////////////////////////////////////// //slot 1 IF f1_slot1 = 2 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_THIS_PRINT $f1_print_label[f1_speech_control_flag] f1_speech_control_flag ++ f1_play_which_slot = 2 f1_slot1 = 0 ENDIF ENDIF //slot 2 IF f1_slot2 = 2 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT $f1_print_label[f1_speech_control_flag] f1_speech_control_flag ++ f1_play_which_slot = 1 f1_slot2 = 0 ENDIF ENDIF RETURN////////////////////////////////////////////////////////////////////// } MISSION_START // ***************************************************************************************** // ************************************* RC TURF WAR ************************************** // ************************************* Scramble! ***************************************** // ***************************************************************************************** // ***************************************************************************************** // Mission start stuff GOSUB mission_start_zero1 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_zero1_failed ENDIF GOSUB mission_cleanup_zero1 MISSION_END { // Variables for mission //RC VEHICLES LVAR_INT object_turret_zero1 LVAR_INT rc_enemy_helis_zero1[10] LVAR_INT object_transmitter[10] //LVAR_INT rc_enemy_kamikaze_zero1 // CHARS LVAR_INT char_zero_zero1 LVAR_INT zeros_task_status_zero1 // COORDS LVAR_FLOAT coord_rc_van_x coord_rc_van_y coord_rc_van_z LVAR_FLOAT coord_rc_enemy_helis_zero1_x[8] coord_rc_enemy_helis_zero1_y[8] LVAR_FLOAT coord_baron_z_offset_zero1 LVAR_FLOAT coord_transmitter_x[4] coord_transmitter_y[4] coord_transmitter_z[4] LVAR_FLOAT coord_explosion_x_zero1 coord_explosion_y_zero1 coord_explosion_z_zero1 LVAR_FLOAT baron_offset_x baron_offset_y baron_offset_z LVAR_FLOAT coord_enemy_circling1_x[8] coord_enemy_circling1_y[8] coord_enemy_circling1_z[8] LVAR_FLOAT coord_enemy_circling2_x[8] coord_enemy_circling2_y[8] coord_enemy_circling2_z[8] LVAR_FLOAT heading_destroyed_transmittors[4] // FLAGS LVAR_INT flag_zero1_create_rc_baddies LVAR_INT flag_zero1_kill_8_helis LVAR_INT flag_zero1_mission_zero1_passed LVAR_INT flag_zero1_mission_zero1_failed LVAR_INT flag_zero1_created_rc_enemies LVAR_INT flag_zero1_rc_enemy_helis_zero1_dead[8] LVAR_INT flag_transmitter1_destroyed flag_transmitter2_destroyed flag_transmitter3_destroyed flag_transmitter4_destroyed LVAR_INT flag_create_kamikaze_baron_zero1 LVAR_INT flag_is_zero_panicing LVAR_INT flag_kamakazie_comment VAR_INT fleet_destroyed_counter LVAR_INT flag_enemy_objective[10] LVAR_INT flag_cutscene_zero1 // LVAR_INT index // BLIP LVAR_INT blip_zero1_rc_enemy_helis_zero1[10] //LVAR_INT blip_rc_enemy_kamikaze_zero1 // BOMB STUFF LVAR_INT primed_bomb_1_zero1[10] LVAR_INT falling_bomb_1_zero1[10] LVAR_INT R1_button_pressed_zero1[10] LVAR_INT timer_zero1[10] LVAR_INT next_bomb_timer_zero1[10] LVAR_FLOAT distance_to_ground_zero1[10] LVAR_INT primed_bomb_flag_zero1[10] LVAR_FLOAT primed_bomb_z_zero1[10] LVAR_FLOAT grenade_zero1_x[10] grenade_zero1_y[10] grenade_zero1_z[10] LVAR_INT circle_button_timer_zero1[10] LVAR_INT detonation_timer_zero1[10] LVAR_FLOAT floor_z_zero1[10] LVAR_INT index_zero1 LVAR_INT index_target LVAR_INT index_random_coord LVAR_INT transmitter1_health_zero1 transmitter2_health_zero1 transmitter3_health_zero1 transmitter4_health_zero1 LVAR_INT weapontype_zero1 ammo_zero1 model_for_weapon_zero1 VAR_INT transmitter_overallhealth VAR_INT mission_countdown_zero1 //DECISION MAKER LVAR_INT dm_buddy_zero1 // Timers LVAR_INT timer_heli_creation_time[10] LVAR_INT timer_heli_time_to_leave[10] LVAR_INT timer_current_time_zero1 LVAR_INT mission_start_time_zero1 time_since_mission_started_zero1 LVAR_INT day_hours_zero1 day_mins_zero1 // zeros comments LVAR_INT flag_squad_comment_zero1 LVAR_INT flag_i_thought_u_could_shoot_zero1 LVAR_INT flag_cocky_comment_zero1 LVAR_INT flag_shooting_zero_zero1 // FIRES //LVAR_INT fire1_zero1 LVAR_INT fire_transmittor[4] // sequences LVAR_INT seq_zero_success_cut_zero1 // VAR_FLOAT ground_z // ****************************************Mission Start************************************ mission_start_zero1: flag_player_on_mission = 1 DISABLE_ALL_ENTRY_EXITS TRUE SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 REGISTER_MISSION_GIVEN SCRIPT_NAME ZERO1 SET_PLAYER_CONTROL player1 OFF LOAD_MISSION_TEXT ZERO1 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 6 //zeros toy shop SET_CHAR_COORDINATES scplayer -2214.4363 123.9208 56.4219 GET_TIME_OF_DAY day_hours_zero1 day_mins_zero1 ///////////////////////////////// // TO FIX PC BUG 221 IF day_hours_zero1 > 21 OR day_hours_zero1 < 4 day_hours_zero1 = 5 SET_TIME_OF_DAY day_hours_zero1 day_mins_zero1 ENDIF ///////////////////////////////// LOAD_CUTSCENE ZERO_1 // LOAD MODELS // REQUEST_MODEL minigun_base //REQUEST_MODEL rcraider REQUEST_MODEL fire_ex // REQUEST_MODEL wongs_erection //REQUEST_MODEL skimmer WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE WAIT 200 DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF SET_FADING_COLOUR 0 0 0 DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 FORCE_WEATHER_NOW WEATHER_SUNNY_SF // can be wither sunny, foggy or extra sunny // INITIALISING VARIABLES flag_squad_comment_zero1 = 0 flag_cocky_comment_zero1 = 0 flag_i_thought_u_could_shoot_zero1 = 0 flag_shooting_zero_zero1 = 0 flag_kamakazie_comment = 0 flag_zero1_create_rc_baddies = 1 flag_zero1_kill_8_helis = 0 flag_zero1_mission_zero1_passed = 0 flag_zero1_mission_zero1_failed = 0 flag_is_zero_panicing = 0 flag_cutscene_zero1 = 0 fleet_destroyed_counter = 0 flag_transmitter1_destroyed = 0 flag_transmitter2_destroyed = 0 flag_transmitter3_destroyed = 0 flag_transmitter4_destroyed = 0 flag_create_kamikaze_baron_zero1 = 0 mission_countdown_zero1 = 210000 coord_rc_van_x = -2239.4529 coord_rc_van_y = 120.4904 coord_rc_van_z = 56.6585 heading_destroyed_transmittors[0] = 97.5 heading_destroyed_transmittors[1] = 160.0 heading_destroyed_transmittors[2] = 14.0 heading_destroyed_transmittors[3] = 280.0 coord_rc_enemy_helis_zero1_x[0] = -2321.4958 coord_rc_enemy_helis_zero1_y[0] = 211.3490 coord_rc_enemy_helis_zero1_x[1] = -2252.5811 coord_rc_enemy_helis_zero1_y[1] = 235.0999 coord_rc_enemy_helis_zero1_x[2] = -2122.6934 coord_rc_enemy_helis_zero1_y[2] = 65.5520 coord_rc_enemy_helis_zero1_x[3] = -2233.5403 coord_rc_enemy_helis_zero1_y[3] = 16.5174 coord_rc_enemy_helis_zero1_x[4]= -2508.4565 coord_rc_enemy_helis_zero1_y[4]= 181.6713 coord_rc_enemy_helis_zero1_x[5]= -2502.9084 coord_rc_enemy_helis_zero1_y[5]= 184.0278 coord_rc_enemy_helis_zero1_x[6] = -2508.3684 coord_rc_enemy_helis_zero1_y[6] = 183.8913 coord_rc_enemy_helis_zero1_x[7]= -2504.0205 coord_rc_enemy_helis_zero1_y[7]= 187.1988 index_random_coord = 0 // transmitters health transmitter1_health_zero1 = 40 transmitter2_health_zero1 = 40 transmitter3_health_zero1 = 40 transmitter4_health_zero1 = 40 coord_transmitter_x[0] = -2237.24 coord_transmitter_y[0] = 143.33 coord_transmitter_z[0] = 57.0 coord_transmitter_x[1] = -2219.5 coord_transmitter_y[1] = 128.68 coord_transmitter_z[1] = 56.72 coord_transmitter_x[2] = -2224.5 coord_transmitter_y[2] = 149.05 coord_transmitter_z[2] = 59.01 coord_transmitter_x[3] = -2226.7 coord_transmitter_y[3] = 94.8 coord_transmitter_z[3] = 50.87 transmitter_overallhealth = transmitter1_health_zero1 transmitter_overallhealth += transmitter2_health_zero1 transmitter_overallhealth += transmitter3_health_zero1 transmitter_overallhealth += transmitter4_health_zero1 GET_GAME_TIMER timer_heli_creation_time[4] // for the pace of RC fleet of planes flag_zero1_created_rc_enemies = 0 flag_zero1_rc_enemy_helis_zero1_dead[0] = 1 flag_zero1_rc_enemy_helis_zero1_dead[1] = 1 flag_zero1_rc_enemy_helis_zero1_dead[2] = 1 flag_zero1_rc_enemy_helis_zero1_dead[3] = 1 // the fleet flag_zero1_rc_enemy_helis_zero1_dead[4] = 1 flag_zero1_rc_enemy_helis_zero1_dead[5] = 1 flag_zero1_rc_enemy_helis_zero1_dead[6] = 1 flag_zero1_rc_enemy_helis_zero1_dead[7] = 1 index_target = 0 TIMERA = 0 index_zero1 = 0 //SWITCH_ROADS_OFF -2471.72 -89.28 26.25 -2037.99 386.94 98.0 SET_CAR_DENSITY_MULTIPLIER 0.0 CREATE_OBJECT minigun_base coord_rc_van_x coord_rc_van_y coord_rc_van_z object_turret_zero1 SET_OBJECT_COLLISION object_turret_zero1 FALSE GET_CHAR_WEAPON_IN_SLOT scplayer 8 weapontype_zero1 ammo_zero1 model_for_weapon_zero1 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED // SET_CHAR_COORDINATES scplayer -2239.7029 119.9904 56.8985 SET_PLAYER_CONTROL player1 OFF SET_CHAR_COORDINATES scplayer -2214.4363 123.9208 56.4219 SET_OBJECT_HEADING object_turret_zero1 90.0 // 52.6436 // SET_CHAR_HEADING scplayer 90.0 DISPLAY_ONSCREEN_TIMER_WITH_STRING mission_countdown_zero1 TIMER_DOWN ZER1_26 DISPLAY_ONSCREEN_COUNTER_WITH_STRING transmitter_overallhealth COUNTER_DISPLAY_BAR ZER1_20 // transmitters signal strength GET_GAME_TIMER mission_start_time_zero1 ///////////////////////////////////////////////////////// // CREATING 4 transmitters at the corner of buildings ///////////////////////////////////////////////////////// index_zero1 = 0 WHILE index_zero1 < 4 CREATE_OBJECT wongs_erection coord_transmitter_x[index_zero1] coord_transmitter_y[index_zero1] coord_transmitter_z[index_zero1] object_transmitter[index_zero1] // SET_OBJECT_PROOFS object_transmitter[index_zero1] TRUE TRUE TRUE TRUE TRUE index_zero1++ ENDWHILE // //////////////////////////////////////////////////// WHILE NOT HAS_MODEL_LOADED fire_ex // OR NOT HAS_MODEL_LOADED minigun_base // OR NOT HAS_MODEL_LOADED wongs_erection WAIT 0 ENDWHILE LOAD_SPECIAL_CHARACTER 1 zero WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 WAIT 0 ENDWHILE ////////////////////////// // Initialise ////////////////////////// SWITCH_WIDESCREEN ON // LOAD_SCENE -2261.8384 118.3496 55.8344 //SET_FIXED_CAMERA_POSITION -2261.8384 118.3496 55.8344 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -2261.1230 118.8753 55.3739 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE -2261.8384 118.3496 55.8344 -2248.4685 121.3517 60.4838 6800 TRUE // two sets of coord for cam start point and end point + time for pan CAMERA_SET_VECTOR_TRACK -2261.1230 118.8753 55.3739 -2247.6099 121.8521 60.3731 6800 TRUE // two sets of coords for cam aim at start and end point + time for pan REQUEST_ANIMATION ON_LOOKERS LOAD_SCENE_IN_DIRECTION -2259.8384 122.3496 40.8344 290.0 WHILE NOT HAS_ANIMATION_LOADED ON_LOOKERS WAIT 0 ENDWHILE WAIT 1000 ///////////////////////////// // Wee cutscene here . ///////////////////////////// DO_FADE 500 FADE_IN SET_FADING_COLOUR 0 0 0 WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // CREATING ONE transmitter IN THE MIDDLE OF BUILDING /* CREATE_CAR wongs_erection coord_transmitter_x[0] coord_transmitter_y[0] coord_transmitter_z[0] object_transmitter[0] SET_CAR_PROOFS object_transmitter[0] TRUE TRUE TRUE TRUE TRUE index_zero1++ */ // Create zero with fire extinguisher // CREATE_CHAR PEDTYPE_CIVMALE SPECIAL01 -2231.3232 129.7854 56.5985 char_zero_zero1 CREATE_CHAR PEDTYPE_CIVMALE SPECIAL01 -2214.29 125.49 56.5985 char_zero_zero1 SET_CHAR_HEALTH char_zero_zero1 1000 SET_CHAR_PROOFS char_zero_zero1 FALSE TRUE TRUE FALSE FALSE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY dm_buddy_zero1 CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_buddy_zero1 EVENT_POTENTIAL_WALK_INTO_FIRE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_buddy_zero1 EVENT_FIRE_NEARBY ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_buddy_zero1 EVENT_FIRE_NEARBY TASK_COMPLEX_EXTINGUISH_FIRES 100.0 100.0 100.0 100.0 1 1 SET_CHAR_DECISION_MAKER char_zero_zero1 dm_buddy_zero1 // TASK_PLAY_ANIM char_zero_zero1 prtial_gngtlkB PED 4.0 TRUE FALSE FALSE TRUE 0 // ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_buddy_zero1 EVENT_FIRE_NEARBY TASK_COMPLEX_EXTINGUISH_FIRE_ON_FOOT 0.0 100.0 0.0 0.0 TRUE FALSE IF NOT IS_CHAR_DEAD char_zero_zero1 OPEN_SEQUENCE_TASK seq_zero_success_cut_zero1 TASK_GO_STRAIGHT_TO_COORD -1 -2231.3232 129.7854 56.5985 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 0.0 TASK_PLAY_ANIM -1 lkup_loop ON_LOOKERS 4.0 TRUE FALSE FALSE TRUE 0 // SET_SEQUENCE_TO_REPEAT seq_zero_success_cut_zero1 1 CLOSE_SEQUENCE_TASK seq_zero_success_cut_zero1 PERFORM_SEQUENCE_TASK char_zero_zero1 seq_zero_success_cut_zero1 CLEAR_SEQUENCE_TASK seq_zero_success_cut_zero1 ENDIF OPEN_SEQUENCE_TASK seq_zero_success_cut_zero1 TASK_GO_STRAIGHT_TO_COORD -1 -2239.7029 119.9904 56.5985 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 0.0 // SET_SEQUENCE_TO_REPEAT seq_zero_success_cut_zero1 1 CLOSE_SEQUENCE_TASK seq_zero_success_cut_zero1 PERFORM_SEQUENCE_TASK scplayer seq_zero_success_cut_zero1 CLEAR_SEQUENCE_TASK seq_zero_success_cut_zero1 LOAD_MISSION_AUDIO 1 SOUND_ZER1_AA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_AA ) 10000 1 //Berkley’s launched a full-scale attack! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_AA //////////////////////////////////////////// REQUEST_MODEL wongs_erection2 REQUEST_MODEL rcbaron REQUEST_MODEL minigun REQUEST_MODEL rcbomb WHILE NOT HAS_MODEL_LOADED wongs_erection2 OR NOT HAS_MODEL_LOADED rcbaron OR NOT HAS_MODEL_LOADED rcbomb OR NOT HAS_MODEL_LOADED minigun WAIT 0 ENDWHILE index_zero1 = 0 WHILE index_zero1 < 8 ADD_BLIP_FOR_COORD 0.0 0.0 0.0 blip_zero1_rc_enemy_helis_zero1[index_zero1] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[index_zero1] index_zero1++ ENDWHILE // ******************************************** START MAIN LOOP ********************************** main_zero1_loop: WAIT 0 // Player must fly heli near the danger zone before engaging in combat IF flag_zero1_create_rc_baddies = 1 GOSUB create_rc_baddies ENDIF // The RC helis start to attack the baron IF flag_zero1_kill_8_helis = 1 GOSUB kill_8_helis ENDIF IF flag_zero1_mission_zero1_passed = 1 GOTO mission_zero1_passed ENDIF IF flag_zero1_mission_zero1_failed = 1 GOTO mission_zero1_failed ENDIF GOTO main_zero1_loop // ************************************ Sub Functions ***************************************** ////////////////////////////////////////// // ////////// CREATING ENEMY HELIS ////////////////////////////////////////// create_enemy_helis_zero1: CLEAR_AREA -2208.1 175.86 40.46 25.0 TRUE IF index_zero1 < 4 CREATE_CAR rcbaron coord_rc_enemy_helis_zero1_x[index_random_coord] coord_rc_enemy_helis_zero1_y[index_random_coord] 70.0 rc_enemy_helis_zero1[index_zero1] TURN_CAR_TO_FACE_COORD rc_enemy_helis_zero1[index_zero1] coord_transmitter_x[index_target] coord_transmitter_y[index_target] SET_CAR_HEALTH rc_enemy_helis_zero1[index_zero1] 260 ADD_STUCK_CAR_CHECK rc_enemy_helis_zero1[index_zero1] 3.0 3000 SET_CAR_PROOFS rc_enemy_helis_zero1[index_zero1] FALSE FALSE TRUE FALSE FALSE PLANE_STARTS_IN_AIR rc_enemy_helis_zero1[index_zero1] SET_CAR_FORWARD_SPEED rc_enemy_helis_zero1[index_zero1] 14.0 IF NOT DOES_BLIP_EXIST blip_zero1_rc_enemy_helis_zero1[index_zero1] ADD_BLIP_FOR_CAR rc_enemy_helis_zero1[index_zero1] blip_zero1_rc_enemy_helis_zero1[index_zero1] CHANGE_BLIP_DISPLAY blip_zero1_rc_enemy_helis_zero1[index_zero1] BLIP_ONLY ELSE REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[index_zero1] ADD_BLIP_FOR_CAR rc_enemy_helis_zero1[index_zero1] blip_zero1_rc_enemy_helis_zero1[index_zero1] CHANGE_BLIP_DISPLAY blip_zero1_rc_enemy_helis_zero1[index_zero1] BLIP_ONLY ENDIF SET_CAR_STATUS rc_enemy_helis_zero1[index_zero1] STATUS_PHYSICS // ************************************* // ARMING PLANE WITH STINK BOMBS // ************************************* CREATE_OBJECT rcbomb coord_rc_enemy_helis_zero1_x[index_zero1] coord_rc_enemy_helis_zero1_y[index_zero1] 130.0 primed_bomb_1_zero1[index_zero1] ATTACH_OBJECT_TO_CAR primed_bomb_1_zero1[index_zero1] rc_enemy_helis_zero1[index_zero1] 0.0 0.0 -0.3 0.0 0.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR primed_bomb_1_zero1[index_zero1] rc_enemy_helis_zero1[index_zero1] 0.0 0.0 primed_bomb_z_zero1[index_zero1] SET_OBJECT_COLLISION primed_bomb_1_zero1[index_zero1] FALSE SET_OBJECT_DYNAMIC primed_bomb_1_zero1[index_zero1] FALSE /////////////////////////// // HELI OBJECTIVES //////////////////////////// // HELI_GOTO_COORDS rc_enemy_helis_zero1[index_zero1] coord_transmitter_x[index_zero1] coord_transmitter_y[index_zero1] coord_transmitter_z[index_zero1] -1.0 85.0 // HELI_GOTO_COORDS rc_enemy_helis_zero1[index_zero1] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] 10.0 coord_transmitter_z[index_target] coord_baron_z_offset_zero1 = coord_transmitter_z[index_target] + 10.5 PLANE_GOTO_COORDS rc_enemy_helis_zero1[index_zero1] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_baron_z_offset_zero1 -1.0 13.5 SET_PLANE_THROTTLE rc_enemy_helis_zero1[index_zero1] -0.8 // ACTIVATE_HELI_SPEED_CHEAT rc_enemy_helis_zero1[index_zero1] 60 flag_zero1_rc_enemy_helis_zero1_dead[index_zero1] = 0 //reseting flag flag_enemy_objective[index_zero1] = 0 flag_zero1_created_rc_enemies = 1 GET_GAME_TIMER timer_heli_creation_time[index_zero1] // timer_heli_time_to_leave[index_zero1] = timer_heli_creation_time[index_zero1] + 30 index_random_coord++ IF index_random_coord > 3 index_random_coord = 0 ENDIF SET_POLICE_IGNORE_PLAYER player1 ON SET_WANTED_MULTIPLIER 0.001 ENDIF RETURN ///////////////////////////////////////////// //// CREATING RC BARONS FLEET ///////////////////////////////////////////// create_enemy_planes_zero1: IF index_zero1 > 4 OR index_zero1 = 4 CREATE_CAR rcbaron coord_rc_enemy_helis_zero1_x[index_zero1] coord_rc_enemy_helis_zero1_y[index_zero1] 85.0 rc_enemy_helis_zero1[index_zero1] TURN_CAR_TO_FACE_COORD rc_enemy_helis_zero1[index_zero1] coord_transmitter_x[index_target] coord_transmitter_y[index_target] SET_CAR_PROOFS rc_enemy_helis_zero1[index_zero1] FALSE TRUE TRUE FALSE FALSE SET_CAR_HEALTH rc_enemy_helis_zero1[index_zero1] 260 ADD_STUCK_CAR_CHECK rc_enemy_helis_zero1[index_zero1] 3.0 10000 IF NOT DOES_BLIP_EXIST blip_zero1_rc_enemy_helis_zero1[index_zero1] ADD_BLIP_FOR_CAR rc_enemy_helis_zero1[index_zero1] blip_zero1_rc_enemy_helis_zero1[index_zero1] // CHANGE_BLIP_COLOUR blip_zero1_rc_enemy_helis_zero1[index_zero1] RED CHANGE_BLIP_DISPLAY blip_zero1_rc_enemy_helis_zero1[index_zero1] BLIP_ONLY ELSE REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[index_zero1] ADD_BLIP_FOR_CAR rc_enemy_helis_zero1[index_zero1] blip_zero1_rc_enemy_helis_zero1[index_zero1] // CHANGE_BLIP_COLOUR blip_zero1_rc_enemy_helis_zero1[index_zero1] RED CHANGE_BLIP_DISPLAY blip_zero1_rc_enemy_helis_zero1[index_zero1] BLIP_ONLY ENDIF //GOSUB add_baron_blip_zero1 SET_CAR_STATUS rc_enemy_helis_zero1[index_zero1] STATUS_PHYSICS SET_CAR_HEADING rc_enemy_helis_zero1[index_zero1] 258.0 PLANE_STARTS_IN_AIR rc_enemy_helis_zero1[index_zero1] SET_CAR_FORWARD_SPEED rc_enemy_helis_zero1[index_zero1] 14.0 // ADD_BLIP_FOR_CAR rc_enemy_helis_zero1[index_zero1] blip_zero1_rc_enemy_helis_zero1s_zero1[index_zero1] flag_enemy_objective[index_zero1] = 0 flag_zero1_rc_enemy_helis_zero1_dead[index_zero1] = 0 // ************************************* // ARMING PLANE WITH STINK BOMBS // ************************************* CREATE_OBJECT rcbomb coord_rc_enemy_helis_zero1_x[index_zero1] coord_rc_enemy_helis_zero1_y[index_zero1] 120.0 primed_bomb_1_zero1[index_zero1] ATTACH_OBJECT_TO_CAR primed_bomb_1_zero1[index_zero1] rc_enemy_helis_zero1[index_zero1] 0.0 0.0 -0.3 0.0 0.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR primed_bomb_1_zero1[index_zero1] rc_enemy_helis_zero1[index_zero1] 0.0 0.0 primed_bomb_z_zero1[index_zero1] SET_OBJECT_COLLISION primed_bomb_1_zero1[index_zero1] FALSE SET_OBJECT_DYNAMIC primed_bomb_1_zero1[index_zero1] FALSE GET_GAME_TIMER timer_heli_creation_time[index_zero1] // IF index_zero1 = 4 // PLANE_GOTO_COORDS rc_enemy_helis_zero1[index_zero1] coord_transmitter_x[3] coord_transmitter_y[3] 75.0 -1.0 -1.0 coord_baron_z_offset_zero1 = coord_transmitter_z[index_target] + 10.5 PLANE_GOTO_COORDS rc_enemy_helis_zero1[index_zero1] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_baron_z_offset_zero1 -1.0 69.5 SET_PLANE_THROTTLE rc_enemy_helis_zero1[index_zero1] -0.8 // [ZER1_BF] Squadron at 3 o’clock, Carl! IF NOT IS_CHAR_DEAD char_zero_zero1 IF flag_squad_comment_zero1 = 0 LOAD_MISSION_AUDIO 1 SOUND_ZER1_BD WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_BD ) 10000 1 //BOGIES 12 o clock PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_BD flag_squad_comment_zero1 = 1 ENDIF ENDIF ENDIF RETURN ///////////////////////////////////////////// create_rc_baddies: TIMERA = 0 /////////////////////////////////////////////// // 1st Fleet /////////////////////////////////////////////// IF fleet_destroyed_counter = 0 flag_cutscene_zero1 = 0 SKIP_CUTSCENE_START TIMERB = 0 WHILE NOT flag_cutscene_zero1 = 10 WAIT 0 IF flag_cutscene_zero1 = 0 LOAD_MISSION_AUDIO 1 SOUND_ZER1_AB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_AB ) 10000 1 //This is insane! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_AC LOAD_MISSION_AUDIO 1 SOUND_ZER1_AC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_AC ) 10000 1 //All batteries commence fire! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_AC flag_cutscene_zero1 = 1 ENDIF IF TIMERB > 4500 IF flag_cutscene_zero1 = 1 flag_cutscene_zero1 = 2 //PRINT_NOW ZER1_14 5000 1 // the transmitters need protecting CAMERA_RESET_NEW_SCRIPTABLES SET_FIXED_CAMERA_POSITION -2240.4846 119.5912 58.4997 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2239.8755 120.3760 58.6143 JUMP_CUT CLEAR_AREA coord_rc_van_x coord_rc_van_y coord_rc_van_z 1000.0 TRUE LOAD_MISSION_AUDIO 1 SOUND_ZER1_BA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_BA ) 10000 1 //He’s going for my transmitters! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_BA ENDIF ENDIF IF TIMERB > 7500 IF flag_cutscene_zero1 = 2 flag_cutscene_zero1 = 3 SET_FIXED_CAMERA_POSITION -2231.6758 127.7127 57.9036 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2231.9646 128.6361 58.1563 JUMP_CUT IF NOT IS_CHAR_DEAD char_zero_zero1 // SET_CHAR_COORDINATES scplayer -2231.3232 129.7854 56.5985 TASK_PLAY_ANIM char_zero_zero1 Pointup_in ON_LOOKERS 4.0 FALSE FALSE FALSE TRUE 0 ENDIF LOAD_MISSION_AUDIO 1 SOUND_ZER1_BB IF flag_zero1_created_rc_enemies = 0 index_zero1 = 0 WHILE index_zero1 < 2 WAIT 0 GOSUB create_enemy_helis_zero1 // index_random_coord++ index_zero1++ ENDWHILE ENDIF WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_BB ) 10000 1 //If if takes them out, I’ll never be able to launch a counter attack! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_BB ENDIF ENDIF IF TIMERB > 12000 IF flag_cutscene_zero1 = 3 IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[1] // ATTACH_CAMERA_TO_VEHICLE_LOOK_AT_VEHICLE rc_enemy_helis_zero1[0] 0.5 -5.0 1.0 rc_enemy_helis_zero1[0] 2.0 JUMP_CUT GET_OFFSET_FROM_CAR_IN_WORLD_COORDS rc_enemy_helis_zero1[1] 2.0 1.5 -1.0 baron_offset_x baron_offset_y baron_offset_z SET_FIXED_CAMERA_POSITION baron_offset_x baron_offset_y baron_offset_z 0.0 0.0 0.0 IF NOT IS_CHAR_DEAD char_zero_zero1 POINT_CAMERA_AT_CHAR char_zero_zero1 FIXED JUMP_CUT ENDIF // POINT_CAMERA_AT_CAR rc_enemy_helis_zero1[1] FIXED JUMP_CUT // PRINT_NOW ZER1_15 5000 1 // destroy the enemy aircrafts LOAD_MISSION_AUDIO 1 SOUND_zer1_ad WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_AD ) 10000 1 //No problem, but they’re only toys! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_AD LOAD_MISSION_AUDIO 1 SOUND_ZER1_AE WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_AE ) 10000 1 //They’re not toys! They’re just smaller! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_AE flag_cutscene_zero1 = 4 ENDIF ENDIF ENDIF IF TIMERB > 17000 IF flag_cutscene_zero1 = 4 flag_cutscene_zero1 = 5 SET_CHAR_COORDINATES scplayer -2239.7029 119.9904 56.5985 SET_CHAR_HEADING scplayer 0.0 // TASK_PLAY_ANIM SCPLAYER lkaround_loop ON_LOOKERS 4.0 FALSE FALSE FALSE TRUE 0 IF DOES_OBJECT_EXIST object_turret_zero1 TASK_LOOK_AT_OBJECT scplayer object_turret_zero1 3000 ENDIF SET_FIXED_CAMERA_POSITION -2239.6882 122.1658 57.6384 0.0 0.0 0.0 // pointing camera at player POINT_CAMERA_AT_POINT -2239.2371 121.2862 57.7886 JUMP_CUT PRINT_NOW ZER1_22 5000 1 // Use the minigun to protect those bastard transmitters ENDIF ENDIF IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flag_cutscene_zero1 = 10 CLEAR_MISSION_AUDIO 1 IF flag_zero1_created_rc_enemies = 0 index_zero1 = 0 WHILE index_zero1 < 2 WAIT 0 GOSUB create_enemy_helis_zero1 index_zero1++ ENDWHILE ENDIF ENDIF // Safety Timer IF TIMERB > 20000 flag_cutscene_zero1 = 10 ENDIF ENDWHILE SKIP_CUTSCENE_END IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[0] SET_CAR_COORDINATES rc_enemy_helis_zero1[0] coord_rc_enemy_helis_zero1_x[0] coord_rc_enemy_helis_zero1_y[0] 95.0 TURN_CAR_TO_FACE_COORD rc_enemy_helis_zero1[0] coord_transmitter_x[index_target] coord_transmitter_y[index_target] SET_CAR_FORWARD_SPEED rc_enemy_helis_zero1[0] 10.0 ENDIF IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[1] SET_CAR_COORDINATES rc_enemy_helis_zero1[1] coord_rc_enemy_helis_zero1_x[1] coord_rc_enemy_helis_zero1_y[1] 95.0 TURN_CAR_TO_FACE_COORD rc_enemy_helis_zero1[1] coord_transmitter_x[index_target] coord_transmitter_y[index_target] SET_CAR_FORWARD_SPEED rc_enemy_helis_zero1[1] 10.0 ENDIF ATTACH_CHAR_TO_OBJECT scplayer object_turret_zero1 -0.25 -0.5 1.25 FACING_BACK 360.0 WEAPONTYPE_minigun SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_minigun ADD_AMMO_TO_CHAR scplayer WEAPONTYPE_minigun 200000 SET_HEADING_FOR_ATTACHED_PLAYER PLAYER1 270.0 300.0 CLEAR_CHAR_TASKS scplayer SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON ALTER_WANTED_LEVEL player1 0 CAMERA_RESET_NEW_SCRIPTABLES RESTORE_CAMERA IF DOES_OBJECT_EXIST object_turret_zero1 SET_OBJECT_VISIBLE object_turret_zero1 FALSE ENDIF IF NOT IS_CHAR_DEAD char_zero_zero1 GIVE_WEAPON_TO_CHAR char_zero_zero1 WEAPONTYPE_EXTINGUISHER 1000 ENDIF SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE /////////////END OF CUTSCENE/////////////// // START_SCRIPT_FIRE -2233.3123 134.8945 57.5298 5 1 fire1_zero1 //PRINT_NOW ( ZER1_13 ) 5000 1 //ZERO: ENEMY VISIBLE AT 9 AND 12 O'CLOCK!! PRINT_HELP ZER1_24 // Press ~m~~widget_attack~ to fire the Minigun. IF NOT IS_CHAR_DEAD char_zero_zero1 LOAD_MISSION_AUDIO 1 SOUND_ZER1_BE WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_BE ) 10000 1 //BOGIES 12 o clock PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_BE ENDIF SET_POLICE_IGNORE_PLAYER player1 ON SET_WANTED_MULTIPLIER 0.001 flag_zero1_create_rc_baddies = 0 flag_zero1_kill_8_helis = 1 RETURN ENDIF /////////////////////////////////////////////// // 2nd Fleet /////////////////////////////////////////////// IF fleet_destroyed_counter = 1 IF flag_zero1_created_rc_enemies = 0 index_zero1 = 0 WHILE index_zero1 < 4 WAIT 0 IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[index_zero1] SET_CAR_HEALTH rc_enemy_helis_zero1[index_zero1] 20 IF NOT IS_CAR_ON_SCREEN rc_enemy_helis_zero1[index_zero1] DELETE_CAR rc_enemy_helis_zero1[index_zero1] ENDIF ENDIF MARK_CAR_AS_NO_LONGER_NEEDED rc_enemy_helis_zero1[index_zero1] IF DOES_BLIP_EXIST blip_zero1_rc_enemy_helis_zero1[index_zero1] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[index_zero1] ENDIF REMOVE_STUCK_CAR_CHECK rc_enemy_helis_zero1[index_zero1] GOSUB create_enemy_helis_zero1 // index_random_coord++ index_zero1++ ENDWHILE flag_zero1_created_rc_enemies = 1 ENDIF flag_zero1_create_rc_baddies = 0 flag_zero1_kill_8_helis = 1 TIMERA = 0 RETURN ENDIF flag_zero1_create_rc_baddies = 0 flag_zero1_kill_8_helis = 1 TIMERA = 0 RETURN // //////////////////////////////// // The Dogfighting takes place here // //////////////////////////////// kill_8_helis: WAIT 0 //VIEW_INTEGER_VARIABLE mission_countdown_zero1 mission_countdown_zero1 // VIEW_INTEGER_VARIABLE fleet_destroyed_counter fleet_destroyed_counter IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S flag_zero1_create_rc_baddies = 0 flag_zero1_kill_8_helis = 0 flag_zero1_mission_zero1_passed = 1 flag_zero1_mission_zero1_failed = 0 RETURN ENDIF GOSUB transmitters_signal_status_zero1 IF flag_zero1_mission_zero1_failed = 1 flag_zero1_create_rc_baddies = 0 flag_zero1_kill_8_helis = 0 flag_zero1_mission_zero1_passed = 0 flag_zero1_mission_zero1_failed = 1 RETURN ENDIF IF IS_CHAR_DEAD char_zero_zero1 flag_zero1_kill_8_helis = 0 flag_zero1_mission_zero1_failed = 1 CLEAR_MISSION_AUDIO 1 PRINT_NOW ZER1_25 5000 1 // zeros deed RETURN // WAIT 5000 // PRINT_NOW ZER1_25 5000 1 // zeros deed ENDIF index_zero1 = 0 WHILE index_zero1 < 8 WAIT 0 IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[index_zero1] ///////////////////////////////////// // make zero point and shit ///////////////////////////////////// IF NOT IS_CHAR_DEAD char_zero_zero1 IF flag_is_zero_panicing = 0 IF NOT IS_CHAR_RESPONDING_TO_EVENT char_zero_zero1 EVENT_FIRE_NEARBY OPEN_SEQUENCE_TASK seq_zero_success_cut_zero1 TASK_PLAY_ANIM -1 Shout_01 ON_LOOKERS 4.0 FALSE FALSE FALSE TRUE 0 TASK_TURN_CHAR_TO_FACE_COORD -1 grenade_zero1_x[index_zero1] grenade_zero1_y[index_zero1] grenade_zero1_z[index_zero1] TASK_PLAY_ANIM -1 lkup_point ON_LOOKERS 4.0 FALSE FALSE FALSE TRUE 0 TASK_SCRATCH_HEAD -1 // SET_SEQUENCE_TO_REPEAT seq_zero_success_cut_zero1 1 CLOSE_SEQUENCE_TASK seq_zero_success_cut_zero1 PERFORM_SEQUENCE_TASK char_zero_zero1 seq_zero_success_cut_zero1 CLEAR_SEQUENCE_TASK seq_zero_success_cut_zero1 flag_is_zero_panicing = 1 ENDIF ENDIF IF flag_is_zero_panicing = 1 GET_SCRIPT_TASK_STATUS char_zero_zero1 PERFORM_SEQUENCE_TASK zeros_task_status_zero1 IF zeros_task_status_zero1 = FINISHED_TASK flag_is_zero_panicing = 0 ENDIF ENDIF IF flag_shooting_zero_zero1 = 1 IF HAS_CHAR_BEEN_DAMAGED_BY_WEAPON char_zero_zero1 WEAPONTYPE_MINIGUN CLEAR_CHAR_LAST_WEAPON_DAMAGE char_zero_zero1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_ZER1_DB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_DB ) 5000 1 //Will you watch it, you idiot! PLAY_MISSION_AUDIO 1 flag_shooting_zero_zero1 = 0 ENDIF // ENDIF ENDIF IF flag_shooting_zero_zero1 = 0 //IF NOT flag_zero1_mission_zero1_failed = 1 IF HAS_CHAR_BEEN_DAMAGED_BY_WEAPON char_zero_zero1 WEAPONTYPE_MINIGUN CLEAR_CHAR_LAST_WEAPON_DAMAGE char_zero_zero1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_ZER1_DA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CHAR_DEAD char_zero_zero1 flag_zero1_kill_8_helis = 0 flag_zero1_mission_zero1_failed = 1 CLEAR_MISSION_AUDIO 1 PRINT_NOW ZER1_25 5000 1 // zeros deed RETURN ENDIF ENDWHILE PRINT_NOW ( ZER1_DA ) 5000 1 //Hey, hey, hey! FRIENDLY FIRE! FRIENDLY FIRE! PLAY_MISSION_AUDIO 1 /* WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 // OR NOT flag_zero1_mission_zero1_failed = 1 WAIT 0 IF IS_CHAR_DEAD char_zero_zero1 flag_zero1_kill_8_helis = 0 flag_zero1_mission_zero1_failed = 1 CLEAR_MISSION_AUDIO 1 PRINT_NOW ZER1_25 5000 1 // zeros deed RETURN ENDIF ENDWHILE CLEAR_THIS_PRINT ZER1_DA */ flag_shooting_zero_zero1 = 1 ENDIF //ENDIF ENDIF ELSE flag_zero1_kill_8_helis = 0 flag_zero1_mission_zero1_failed = 1 CLEAR_MISSION_AUDIO 1 PRINT_NOW ZER1_25 5000 1 // zeros deed RETURN ENDIF ///////////////////////////////////// // end make zero point and shit ///////////////////////////////////// // GEneric shit for both planes and helis IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[index_zero1] IF flag_zero1_rc_enemy_helis_zero1_dead[index_zero1] = 0 // Safety Timer GET_GAME_TIMER timer_current_time_zero1 timer_heli_time_to_leave[index_zero1] = timer_current_time_zero1 - timer_heli_creation_time[index_zero1] IF timer_heli_time_to_leave[index_zero1] > 45000 EXPLODE_CAR rc_enemy_helis_zero1[index_zero1] // fleet_destroyed_counter++ flag_zero1_rc_enemy_helis_zero1_dead[index_zero1] = 1 flag_enemy_objective[index_zero1] = 0 IF DOES_OBJECT_EXIST primed_bomb_1_zero1[index_zero1] DELETE_OBJECT primed_bomb_1_zero1[index_zero1] ENDIF ENDIF ENDIF /// CHECKING IF PLANE IS STUCK IF flag_zero1_rc_enemy_helis_zero1_dead[index_zero1] = 0 IF DOES_CAR_HAVE_STUCK_CAR_CHECK rc_enemy_helis_zero1[index_zero1] IF IS_CAR_STUCK rc_enemy_helis_zero1[index_zero1] EXPLODE_CAR rc_enemy_helis_zero1[index_zero1] IF DOES_OBJECT_EXIST primed_bomb_1_zero1[index_zero1] DELETE_OBJECT primed_bomb_1_zero1[index_zero1] ENDIF // fleet_destroyed_counter++ flag_zero1_rc_enemy_helis_zero1_dead[index_zero1] = 1 flag_enemy_objective[index_zero1] = 0 ENDIF ENDIF ENDIF IF flag_zero1_rc_enemy_helis_zero1_dead[index_zero1] = 0 IF NOT IS_CAR_IN_AIR_PROPER rc_enemy_helis_zero1[index_zero1] EXPLODE_CAR rc_enemy_helis_zero1[index_zero1] IF DOES_OBJECT_EXIST primed_bomb_1_zero1[index_zero1] DELETE_OBJECT primed_bomb_1_zero1[index_zero1] ENDIF // fleet_destroyed_counter++ flag_zero1_rc_enemy_helis_zero1_dead[index_zero1] = 1 flag_enemy_objective[index_zero1] = 0 ENDIF ENDIF IF flag_zero1_rc_enemy_helis_zero1_dead[index_zero1] = 0 IF HAS_CAR_BEEN_DAMAGED_BY_WEAPON rc_enemy_helis_zero1[index_zero1] WEAPONTYPE_minigun IF DOES_OBJECT_EXIST primed_bomb_1_zero1[index_zero1] DELETE_OBJECT primed_bomb_1_zero1[index_zero1] ENDIF // fleet_destroyed_counter++ SET_CAR_HEALTH rc_enemy_helis_zero1[index_zero1] 20 // fleet_destroyed_counter++ flag_zero1_rc_enemy_helis_zero1_dead[index_zero1] = 1 flag_enemy_objective[index_zero1] = 0 ENDIF ENDIF // dropping bombs IF flag_zero1_rc_enemy_helis_zero1_dead[index_zero1] = 0 IF flag_enemy_objective[index_zero1] = 0 IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[index_zero1] IF LOCATE_CAR_3D rc_enemy_helis_zero1[index_zero1] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] 18.0 18.0 40.0 FALSE flag_enemy_objective[index_zero1] = 1 ENDIF ENDIF /* IF LOCATE_CAR_3D rc_enemy_helis_zero1[index_zero1] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] 17.0 17.0 40.0 FALSE flag_enemy_objective[index_zero1] = 1 ENDIF */ ELSE /* IF flag_enemy_objective[index_zero1] = 1 IF NOT LOCATE_CAR_3D rc_enemy_helis_zero1[index_zero1] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] 40.0 40.0 60.0 FALSE flag_enemy_objective[index_zero1] = 2 ENDIF ENDIF */ ENDIF ENDIF // Make helis bomb transmitters IF flag_enemy_objective[index_zero1] = 1 GOSUB enemy_bombs_zero1 IF flag_zero1_mission_zero1_failed = 1 flag_zero1_create_rc_baddies = 0 flag_zero1_kill_8_helis = 0 flag_zero1_mission_zero1_passed = 0 flag_zero1_mission_zero1_failed = 1 RETURN ENDIF ENDIF ///////////////////////////// IF flag_zero1_mission_zero1_failed = 1 flag_zero1_create_rc_baddies = 0 flag_zero1_kill_8_helis = 0 flag_zero1_mission_zero1_passed = 0 flag_zero1_mission_zero1_failed = 1 RETURN ENDIF IF flag_enemy_objective[index_zero1] > 2 // If baddies fly too far away away IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[index_zero1] IF LOCATE_CAR_2D rc_enemy_helis_zero1[index_zero1] coord_rc_enemy_helis_zero1_x[index_zero1] coord_rc_enemy_helis_zero1_y[index_zero1] 30.0 30.0 FALSE DELETE_CAR rc_enemy_helis_zero1[index_zero1] IF DOES_OBJECT_EXIST primed_bomb_1_zero1[index_zero1] DELETE_OBJECT primed_bomb_1_zero1[index_zero1] ENDIF flag_zero1_rc_enemy_helis_zero1_dead[index_zero1] = 1 flag_enemy_objective[index_zero1] = 0 RETURN ENDIF ENDIF ENDIF // plane achieves runup offset IF flag_enemy_objective[index_zero1] = 2 IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[index_zero1] IF LOCATE_CAR_2D rc_enemy_helis_zero1[index_zero1] coord_enemy_circling1_x[index_zero1] coord_enemy_circling1_y[index_zero1] 7.0 7.0 FALSE PLANE_GOTO_COORDS rc_enemy_helis_zero1[index_zero1] coord_enemy_circling2_x[index_zero1] coord_enemy_circling2_y[index_zero1] coord_enemy_circling2_z[index_zero1] 5.0 0.5 SET_PLANE_THROTTLE rc_enemy_helis_zero1[index_zero1] -1.1 //SET_CAR_FORWARD_SPEED rc_enemy_helis_zero1[index_zero1] 3.0 flag_enemy_objective[index_zero1] = 3 ENDIF ENDIF ENDIF // plane achieves next offset and is ready to do kamikazie IF flag_enemy_objective[index_zero1] = 3 IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[index_zero1] IF LOCATE_CAR_2D rc_enemy_helis_zero1[index_zero1] coord_enemy_circling2_x[index_zero1] coord_enemy_circling2_y[index_zero1] 7.0 7.0 FALSE PLANE_GOTO_COORDS rc_enemy_helis_zero1[index_zero1] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_baron_z_offset_zero1 3.0 0.0 SET_PLANE_THROTTLE rc_enemy_helis_zero1[index_zero1] -0.9 flag_enemy_objective[index_zero1] = 4 ENDIF ENDIF ENDIF // making planes do the kamikazie // Planes should blow up when crashing into transmittor IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[index_zero1] IF LOCATE_CAR_3D rc_enemy_helis_zero1[index_zero1] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] 4.0 4.0 11.0 FALSE GET_CAR_COORDINATES rc_enemy_helis_zero1[index_zero1] coord_explosion_x_zero1 coord_explosion_y_zero1 coord_explosion_z_zero1 EXPLODE_CAR rc_enemy_helis_zero1[index_zero1] DELETE_CAR rc_enemy_helis_zero1[index_zero1] ADD_EXPLOSION coord_explosion_x_zero1 coord_explosion_y_zero1 coord_explosion_z_zero1 EXPLOSION_GRENADE IF DOES_OBJECT_EXIST primed_bomb_1_zero1[index_zero1] DELETE_OBJECT primed_bomb_1_zero1[index_zero1] ENDIF // [ZER1_BN] I thought you said you could shoot, Carl! IF NOT IS_CHAR_DEAD char_zero_zero1 IF flag_i_thought_u_could_shoot_zero1 = 0 LOAD_MISSION_AUDIO 1 SOUND_ZER1_BN WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_BN ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_BN flag_i_thought_u_could_shoot_zero1 = 1 ENDIF ENDIF flag_zero1_rc_enemy_helis_zero1_dead[index_zero1] = 1 flag_enemy_objective[index_zero1] = 0 IF index_target = 3 IF transmitter4_health_zero1 > 5 transmitter4_health_zero1 -= 5 ELSE flag_transmitter4_destroyed = 1 DELETE_OBJECT object_transmitter[index_target] ADD_EXPLOSION coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] EXPLOSION_GRENADE //GET_OFFSET_FROM_CAR_IN_WORLD_COORDS rc_enemy_helis_zero1[1] 2.0 1.5 -1.0 baron_offset_x baron_offset_y baron_offset_z ADD_EXPLOSION coord_transmitter_x[index_target] coord_transmitter_y[index_target] 61.5 EXPLOSION_OBJECT CREATE_OBJECT wongs_erection2 coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] object_transmitter[index_target] SET_OBJECT_HEADING object_transmitter[index_target] heading_destroyed_transmittors[index_target] START_SCRIPT_FIRE coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] 5 3 fire_transmittor[index_target] flag_zero1_create_rc_baddies = 0 flag_zero1_kill_8_helis = 0 flag_zero1_mission_zero1_failed = 1 IF NOT IS_CHAR_DEAD char_zero_zero1 LOAD_MISSION_AUDIO 1 SOUND_ZER1_EA // curse you WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_EA ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_EA ENDIF CLEAR_ONSCREEN_COUNTER transmitter_overallhealth CLEAR_ONSCREEN_TIMER mission_countdown_zero1 PRINT_NOW ( ZER1_19 ) 5000 1 //4th transmitter gone RETURN ENDIF ENDIF IF index_target = 2 IF transmitter3_health_zero1 > 5 transmitter3_health_zero1 -= 5 ELSE flag_transmitter3_destroyed = 1 IF NOT IS_CHAR_DEAD char_zero_zero1 // PRINT_NOW ( ZER1_18 ) 5000 1 //3rd transmitter gone GOSUB assign_next_target_for_planes_zero1 IF flag_zero1_mission_zero1_failed = 1 flag_zero1_create_rc_baddies = 0 flag_zero1_kill_8_helis = 0 flag_zero1_mission_zero1_passed = 0 flag_zero1_mission_zero1_failed = 1 RETURN ENDIF IF NOT IS_CHAR_DEAD char_zero_zero1 LOAD_MISSION_AUDIO 1 SOUND_ZER1_BK WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_BK ) 10000 1 //cant lose another one PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_BK LOAD_MISSION_AUDIO 1 SOUND_ZER1_BL WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_BL ) 10000 1 //[ZER1_BL] Berkley’s going for the last transmitter, PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_BL LOAD_MISSION_AUDIO 1 SOUND_ZER1_BM WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_BM ) 10000 1 //[ZER1_BM] you’ve got to stop those planes, Carl! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_BM ENDIF ENDIF ENDIF ENDIF IF index_target = 1 IF transmitter2_health_zero1 > 5 transmitter2_health_zero1 -= 5 ELSE flag_transmitter2_destroyed = 1 IF NOT IS_CHAR_DEAD char_zero_zero1 GOSUB assign_next_target_for_planes_zero1 IF flag_zero1_mission_zero1_failed = 1 flag_zero1_create_rc_baddies = 0 flag_zero1_kill_8_helis = 0 flag_zero1_mission_zero1_passed = 0 flag_zero1_mission_zero1_failed = 1 RETURN ENDIF LOAD_MISSION_AUDIO 1 SOUND_ZER1_BJ WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_BJ ) 10000 1 //cant lose another one PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_BJ ENDIF ENDIF ENDIF IF index_target = 0 IF transmitter1_health_zero1 > 5 transmitter1_health_zero1 -= 5 ELSE flag_transmitter1_destroyed = 1 IF NOT IS_CHAR_DEAD char_zero_zero1 GOSUB assign_next_target_for_planes_zero1 IF flag_zero1_mission_zero1_failed = 1 flag_zero1_create_rc_baddies = 0 flag_zero1_kill_8_helis = 0 flag_zero1_mission_zero1_passed = 0 flag_zero1_mission_zero1_failed = 1 RETURN ENDIF LOAD_MISSION_AUDIO 1 SOUND_ZER1_BG WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_BG ) 10000 1 //WE've LOST ONE PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_BG ENDIF ENDIF ENDIF ENDIF ELSE // if plane is dead flag_zero1_rc_enemy_helis_zero1_dead[index_zero1] = 1 ENDIF ELSE // if plane is dead flag_zero1_rc_enemy_helis_zero1_dead[index_zero1] = 1 ENDIF ELSE // if plane is dead flag_zero1_rc_enemy_helis_zero1_dead[index_zero1] = 1 ENDIF index_zero1++ ENDWHILE // Get ready for next fleet IF fleet_destroyed_counter < 1 // only happens for first fleet index_zero1 = 0 WHILE index_zero1 < 4 IF flag_zero1_rc_enemy_helis_zero1_dead[index_zero1] = 1 IF DOES_BLIP_EXIST blip_zero1_rc_enemy_helis_zero1[index_zero1] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[index_zero1] ENDIF IF DOES_OBJECT_EXIST primed_bomb_1_zero1[index_zero1] DELETE_OBJECT primed_bomb_1_zero1[index_zero1] ENDIF REMOVE_STUCK_CAR_CHECK rc_enemy_helis_zero1[index_zero1] IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[index_zero1] IF IS_CAR_ON_SCREEN rc_enemy_helis_zero1[index_zero1] MARK_CAR_AS_NO_LONGER_NEEDED rc_enemy_helis_zero1[index_zero1] ELSE DELETE_CAR rc_enemy_helis_zero1[index_zero1] ENDIF ENDIF MARK_CAR_AS_NO_LONGER_NEEDED rc_enemy_helis_zero1[index_zero1] fleet_destroyed_counter++ ENDIF index_zero1++ ENDWHILE IF flag_zero1_rc_enemy_helis_zero1_dead[0] = 1 IF flag_zero1_rc_enemy_helis_zero1_dead[1] = 1 IF flag_zero1_rc_enemy_helis_zero1_dead[2] = 1 IF flag_zero1_rc_enemy_helis_zero1_dead[3] = 1 // flag_zero1_mission_zero1_passed = 1 fleet_destroyed_counter++ flag_zero1_kill_8_helis = 0 // PRINT_NOW ( ZER1_6 ) 5000 1 // MELVIN: Oh the humanity! You have defeated my fleet! flag_zero1_create_rc_baddies = 1 flag_zero1_created_rc_enemies = 0 fleet_destroyed_counter++ REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[0] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[1] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[2] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[3] index_zero1 = 0 WHILE index_zero1 < 4 IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[index_zero1] SET_CAR_HEALTH rc_enemy_helis_zero1[index_zero1] 20 ENDIF IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[index_zero1] IF IS_CAR_ON_SCREEN rc_enemy_helis_zero1[index_zero1] MARK_CAR_AS_NO_LONGER_NEEDED rc_enemy_helis_zero1[index_zero1] ELSE DELETE_CAR rc_enemy_helis_zero1[index_zero1] ENDIF ENDIF MARK_CAR_AS_NO_LONGER_NEEDED rc_enemy_helis_zero1[index_zero1] REMOVE_STUCK_CAR_CHECK rc_enemy_helis_zero1[index_zero1] index_zero1++ ENDWHILE ENDIF ENDIF ENDIF ENDIF ELSE // RESPAWNING HELICOPTERS index_zero1 = 0 WHILE index_zero1 < 4 IF flag_zero1_rc_enemy_helis_zero1_dead[index_zero1] = 1 IF DOES_BLIP_EXIST blip_zero1_rc_enemy_helis_zero1[index_zero1] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[index_zero1] ENDIF IF DOES_OBJECT_EXIST primed_bomb_1_zero1[index_zero1] DELETE_OBJECT primed_bomb_1_zero1[index_zero1] ENDIF REMOVE_STUCK_CAR_CHECK rc_enemy_helis_zero1[index_zero1] IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[index_zero1] IF IS_CAR_ON_SCREEN rc_enemy_helis_zero1[index_zero1] MARK_CAR_AS_NO_LONGER_NEEDED rc_enemy_helis_zero1[index_zero1] ELSE DELETE_CAR rc_enemy_helis_zero1[index_zero1] ENDIF ENDIF MARK_CAR_AS_NO_LONGER_NEEDED rc_enemy_helis_zero1[index_zero1] ////////////////////////////////////////// // pace the creation of rc helis /////////////////////////////////////////// GET_GAME_TIMER timer_current_time_zero1 time_since_mission_started_zero1 = timer_current_time_zero1 - mission_start_time_zero1 IF mission_countdown_zero1 < 210000 AND mission_countdown_zero1 > 190000 IF TIMERB > 12000 GOSUB create_enemy_helis_zero1 TIMERB = 0 ENDIF ENDIF IF mission_countdown_zero1 < 190000 AND mission_countdown_zero1 > 120000 IF TIMERB > 6000 GOSUB create_enemy_helis_zero1 TIMERB = 0 ENDIF ENDIF IF mission_countdown_zero1 < 120000 AND mission_countdown_zero1 > 0 IF TIMERB > 3500 GOSUB create_enemy_helis_zero1 TIMERB = 0 ENDIF ENDIF IF flag_zero1_rc_enemy_helis_zero1_dead[0] = 1 IF flag_zero1_rc_enemy_helis_zero1_dead[1] = 1 IF flag_zero1_rc_enemy_helis_zero1_dead[2] = 1 IF flag_zero1_rc_enemy_helis_zero1_dead[3] = 1 IF flag_zero1_rc_enemy_helis_zero1_dead[4] = 1 IF flag_zero1_rc_enemy_helis_zero1_dead[5] = 1 IF flag_zero1_rc_enemy_helis_zero1_dead[6] = 1 IF flag_zero1_rc_enemy_helis_zero1_dead[7] = 1 GOSUB create_enemy_helis_zero1 IF flag_cocky_comment_zero1 = 0 IF NOT IS_CHAR_DEAD char_zero_zero1 LOAD_MISSION_AUDIO 1 SOUND_ZER1_CA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_CA ) 10000 1 //Great kid, don’t get cocky! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_CA flag_cocky_comment_zero1 = 1 ENDIF ENDIF TIMERB = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF index_zero1++ ENDWHILE // creating fleet of planes // IF fleet_destroyed_counter > 2 // only happens for first 4 fleets IF mission_countdown_zero1 < 210000 IF flag_zero1_rc_enemy_helis_zero1_dead[4] = 1 IF flag_zero1_rc_enemy_helis_zero1_dead[5] = 1 IF flag_zero1_rc_enemy_helis_zero1_dead[6] = 1 IF flag_zero1_rc_enemy_helis_zero1_dead[7] = 1 // fleet_destroyed_counter++ IF DOES_BLIP_EXIST blip_zero1_rc_enemy_helis_zero1[4] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[4] ENDIF // fleet_destroyed_counter++ IF DOES_BLIP_EXIST blip_zero1_rc_enemy_helis_zero1[5] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[5] ENDIF // fleet_destroyed_counter++ IF DOES_BLIP_EXIST blip_zero1_rc_enemy_helis_zero1[6] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[6] ENDIF // fleet_destroyed_counter++ IF DOES_BLIP_EXIST blip_zero1_rc_enemy_helis_zero1[7] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[7] ENDIF IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[4] SET_CAR_HEALTH rc_enemy_helis_zero1[4] 10 ENDIF IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[5] SET_CAR_HEALTH rc_enemy_helis_zero1[5] 10 ENDIF IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[6] SET_CAR_HEALTH rc_enemy_helis_zero1[6] 10 ENDIF IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[7] SET_CAR_HEALTH rc_enemy_helis_zero1[7] 10 ENDIF IF DOES_OBJECT_EXIST primed_bomb_1_zero1[4] DELETE_OBJECT primed_bomb_1_zero1[4] ENDIF IF DOES_OBJECT_EXIST primed_bomb_1_zero1[5] DELETE_OBJECT primed_bomb_1_zero1[5] ENDIF IF DOES_OBJECT_EXIST primed_bomb_1_zero1[6] DELETE_OBJECT primed_bomb_1_zero1[6] ENDIF IF DOES_OBJECT_EXIST primed_bomb_1_zero1[7] DELETE_OBJECT primed_bomb_1_zero1[7] ENDIF IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[4] IF IS_CAR_ON_SCREEN rc_enemy_helis_zero1[4] MARK_CAR_AS_NO_LONGER_NEEDED rc_enemy_helis_zero1[4] ELSE DELETE_CAR rc_enemy_helis_zero1[4] ENDIF ENDIF MARK_CAR_AS_NO_LONGER_NEEDED rc_enemy_helis_zero1[4] IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[5] IF IS_CAR_ON_SCREEN rc_enemy_helis_zero1[5] MARK_CAR_AS_NO_LONGER_NEEDED rc_enemy_helis_zero1[5] ELSE DELETE_CAR rc_enemy_helis_zero1[5] ENDIF ENDIF MARK_CAR_AS_NO_LONGER_NEEDED rc_enemy_helis_zero1[5] IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[6] IF IS_CAR_ON_SCREEN rc_enemy_helis_zero1[6] MARK_CAR_AS_NO_LONGER_NEEDED rc_enemy_helis_zero1[6] ELSE DELETE_CAR rc_enemy_helis_zero1[6] ENDIF ENDIF MARK_CAR_AS_NO_LONGER_NEEDED rc_enemy_helis_zero1[6] IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[7] IF IS_CAR_ON_SCREEN rc_enemy_helis_zero1[7] MARK_CAR_AS_NO_LONGER_NEEDED rc_enemy_helis_zero1[7] ELSE DELETE_CAR rc_enemy_helis_zero1[7] ENDIF ENDIF MARK_CAR_AS_NO_LONGER_NEEDED rc_enemy_helis_zero1[7] REMOVE_STUCK_CAR_CHECK rc_enemy_helis_zero1[4] REMOVE_STUCK_CAR_CHECK rc_enemy_helis_zero1[5] REMOVE_STUCK_CAR_CHECK rc_enemy_helis_zero1[6] REMOVE_STUCK_CAR_CHECK rc_enemy_helis_zero1[7] GET_GAME_TIMER timer_current_time_zero1 timer_heli_time_to_leave[4] = timer_current_time_zero1 - timer_heli_creation_time[4] IF timer_heli_time_to_leave[4] > 45000 index_zero1 = 4 WHILE index_zero1 < 8 GOSUB create_enemy_planes_zero1 // ENDIF index_zero1++ ENDWHILE ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // ENDIF ///////////////////////////////////////////////////// // If all fleets are destroyed, mission passed ///////////////////////////////////////////////////// // IF fleet_destroyed_counter >= 27 IF mission_countdown_zero1 <= 1 index_zero1 = 0 WHILE index_zero1 < 8 IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[index_zero1] //SET_CAR_HEALTH rc_enemy_helis_zero1[index_zero1] 5 EXPLODE_CAR rc_enemy_helis_zero1[index_zero1] MARK_CAR_AS_NO_LONGER_NEEDED rc_enemy_helis_zero1[index_zero1] ENDIF index_zero1++ ENDWHILE flag_zero1_create_rc_baddies = 0 flag_zero1_kill_8_helis = 0 flag_zero1_mission_zero1_passed = 1 flag_zero1_mission_zero1_failed = 0 RETURN ENDIF RETURN // SUB FUNCTIONS //////////////////////////// enemy_bombs_zero1: primed_bomb_flag_zero1[index_zero1] = 0 // ************************************* // BOMB SHIT // ************************************* GET_CAR_COORDINATES rc_enemy_helis_zero1[index_zero1] grenade_zero1_x[index_zero1] grenade_zero1_y[index_zero1] grenade_zero1_z[index_zero1] GET_GROUND_Z_FOR_3D_COORD grenade_zero1_x[index_zero1] grenade_zero1_y[index_zero1] grenade_zero1_z[index_zero1] floor_z_zero1[index_zero1] // DRAW_CORONA grenade_zero1_x[index_zero1] grenade_zero1_y[index_zero1] floor_z_zero1[index_zero1] 2.0 CORONATYPE_HEADLIGHTLINE FLARETYPE_HEADLIGHTS 6 6 6 /* IF NOT DOES_OBJECT_EXIST primed_bomb_1_zero1[index_zero1] // IF timer_zero1[index_zero1] > next_bomb_timer_zero1[index_zero1] CREATE_OBJECT rcbomb grenade_zero1_x[index_zero1] grenade_zero1_y[index_zero1] grenade_zero1_z[index_zero1] primed_bomb_1_zero1[index_zero1] SET_OBJECT_COLLISION primed_bomb_1_zero1[index_zero1] FALSE SET_OBJECT_DYNAMIC primed_bomb_1_zero1[index_zero1] FALSE ATTACH_OBJECT_TO_CAR primed_bomb_1_zero1[index_zero1] rc_enemy_helis_zero1[index_zero1] 0.0 0.0 -0.3 0.0 0.0 0.0 primed_bomb_z_zero1[index_zero1] = 0.0 // ENDIF ELSE */ // GET_GROUND_Z_FOR_3D_COORD grenade_zero1_x[index_zero1] grenade_zero1_y[index_zero1] grenade_zero1_z[index_zero1] floor_z_zero1[index_zero1] IF DOES_OBJECT_EXIST primed_bomb_1_zero1[index_zero1] distance_to_ground_zero1[index_zero1] = grenade_zero1_z[index_zero1] - floor_z_zero1[index_zero1] IF distance_to_ground_zero1[index_zero1] > 0.5 SET_VISIBILITY_OF_CLOSEST_OBJECT_OF_TYPE grenade_zero1_x[index_zero1] grenade_zero1_y[index_zero1] grenade_zero1_z[index_zero1] 10.0 rcbomb TRUE primed_bomb_z_zero1[index_zero1] -=@ 0.05 IF primed_bomb_z_zero1[index_zero1] < -0.5 primed_bomb_z_zero1[index_zero1] = -0.5 primed_bomb_flag_zero1[index_zero1] = 1 // Activate bomb if above certain height ENDIF ELSE primed_bomb_z_zero1[index_zero1] = distance_to_ground_zero1[index_zero1] - 1.0 primed_bomb_z_zero1[index_zero1] = primed_bomb_z_zero1[index_zero1] * -1.0 IF primed_bomb_z_zero1[index_zero1] > 0.0 primed_bomb_z_zero1[index_zero1] = 0.0 SET_VISIBILITY_OF_CLOSEST_OBJECT_OF_TYPE grenade_zero1_x[index_zero1] grenade_zero1_y[index_zero1] grenade_zero1_z[index_zero1] 10.0 rcbomb FALSE ENDIF ENDIF // PLACE_OBJECT_RELATIVE_TO_CAR primed_bomb_1_zero1[index_zero1] rc_enemy_helis_zero1[index_zero1] 0.0 0.0 primed_bomb_z_zero1[index_zero1] ENDIF // Bomb dropping conditions // IF LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer rc_enemy_helis_zero1[index_zero1] 20.0 20.0 60.0 FALSE IF flag_enemy_objective[index_zero1] = 1 GET_GAME_TIMER timer_zero1[index_zero1] IF timer_zero1[index_zero1] > next_bomb_timer_zero1[index_zero1] IF R1_button_pressed_zero1[index_zero1] = 0 IF primed_bomb_flag_zero1[index_zero1] = 1 primed_bomb_z_zero1[index_zero1] = primed_bomb_z_zero1[index_zero1] - 0.5 //PLACE_OBJECT_RELATIVE_TO_CAR primed_bomb_1_zero1[index_zero1] rc_enemy_helis_zero1[index_zero1] 0.0 0.0 primed_bomb_z_zero1[index_zero1] DETACH_OBJECT primed_bomb_1_zero1[index_zero1] 0.0 0.0 0.0 FALSE SET_OBJECT_DYNAMIC primed_bomb_1_zero1[index_zero1] TRUE SET_OBJECT_COLLISION primed_bomb_1_zero1[index_zero1] TRUE ADD_TO_OBJECT_VELOCITY primed_bomb_1_zero1[index_zero1] 0.0 0.0 0.0 next_bomb_timer_zero1[index_zero1] = timer_zero1[index_zero1] + 2500 // Delay of next bomb dropped falling_bomb_1_zero1[index_zero1] = primed_bomb_1_zero1[index_zero1] primed_bomb_1_zero1[index_zero1] = -1 SET_OBJECT_RECORDS_COLLISIONS falling_bomb_1_zero1[index_zero1] TRUE circle_button_timer_zero1[index_zero1] = timer_zero1[index_zero1] + 250 detonation_timer_zero1[index_zero1] = timer_zero1[index_zero1] + 3000 R1_button_pressed_zero1[index_zero1] = 1 ENDIF ELSE IF R1_button_pressed_zero1[index_zero1] = 2 IF timer_zero1[index_zero1] > circle_button_timer_zero1[index_zero1] R1_button_pressed_zero1[index_zero1] = 0 ENDIF ENDIF ENDIF ENDIF ENDIF // locate player near RC heli // Falling bombs IF R1_button_pressed_zero1[index_zero1] = 1 IF DOES_OBJECT_EXIST falling_bomb_1_zero1[index_zero1] GET_OBJECT_COORDINATES falling_bomb_1_zero1[index_zero1] grenade_zero1_x[index_zero1] grenade_zero1_y[index_zero1] grenade_zero1_z[index_zero1] GET_GROUND_Z_FOR_3D_COORD grenade_zero1_x[index_zero1] grenade_zero1_y[index_zero1] grenade_zero1_z[index_zero1] floor_z_zero1[index_zero1] floor_z_zero1[index_zero1] += 0.5 IF floor_z_zero1[index_zero1] < 6.0 floor_z_zero1[index_zero1] = 6.0 ENDIF IF HAS_OBJECT_COLLIDED_WITH_ANYTHING falling_bomb_1_zero1[index_zero1] OR timer_zero1[index_zero1] > detonation_timer_zero1[index_zero1] OR IS_OBJECT_IN_WATER falling_bomb_1_zero1[index_zero1] SET_OBJECT_RECORDS_COLLISIONS falling_bomb_1_zero1[index_zero1] FALSE ADD_EXPLOSION grenade_zero1_x[index_zero1] grenade_zero1_y[index_zero1] grenade_zero1_z[index_zero1] EXPLOSION_GRENADE MARK_OBJECT_AS_NO_LONGER_NEEDED falling_bomb_1_zero1[index_zero1] DELETE_OBJECT falling_bomb_1_zero1[index_zero1] falling_bomb_1_zero1[index_zero1] = -1 R1_button_pressed_zero1[index_zero1] = 2 flag_enemy_objective[index_zero1] = 2 IF NOT IS_CHAR_DEAD char_zero_zero1 IF flag_kamakazie_comment = 0 LOAD_MISSION_AUDIO 1 SOUND_ZER1_BC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_BC ) 10000 1 //[ZER1_BC] Kamikazes at 6 o’clock! PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_BC flag_kamakazie_comment = 1 ENDIF ENDIF // MAKING PLANES get ready for a KAMIKAZIE IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[index_zero1] // HELI_GOTO_COORDS rc_enemy_helis_zero1[0] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] 10.0 coord_transmitter_z[index_target] coord_baron_z_offset_zero1 = coord_transmitter_z[index_target] + 4.0 IF LOCATE_CAR_2D rc_enemy_helis_zero1[index_zero1] -2235.66 182.43 50.0 50.0 FALSE GET_OFFSET_FROM_CAR_IN_WORLD_COORDS rc_enemy_helis_zero1[index_zero1] -25.0 0.0 5.0 coord_enemy_circling2_x[index_zero1] coord_enemy_circling2_y[index_zero1] coord_enemy_circling2_z[index_zero1] ELSE GET_OFFSET_FROM_CAR_IN_WORLD_COORDS rc_enemy_helis_zero1[index_zero1] 25.0 0.0 5.0 coord_enemy_circling2_x[index_zero1] coord_enemy_circling2_y[index_zero1] coord_enemy_circling2_z[index_zero1] ENDIF GET_OFFSET_FROM_CAR_IN_WORLD_COORDS rc_enemy_helis_zero1[index_zero1] 0.0 20.0 4.0 coord_enemy_circling1_x[index_zero1] coord_enemy_circling1_y[index_zero1] coord_enemy_circling1_z[index_zero1] PLANE_GOTO_COORDS rc_enemy_helis_zero1[index_zero1] coord_enemy_circling1_x[index_zero1] coord_enemy_circling1_y[index_zero1] coord_enemy_circling1_z[index_zero1] -1.0 0.5 SET_PLANE_THROTTLE rc_enemy_helis_zero1[index_zero1] -0.9 ENDIF // checking if bomb has colided with transmitter IF flag_transmitter1_destroyed = 0 IF DOES_OBJECT_EXIST object_transmitter[0] IF LOCATE_OBJECT_3D object_transmitter[0] grenade_zero1_x[index_zero1] grenade_zero1_y[index_zero1] grenade_zero1_z[index_zero1] 15.0 15.0 10.0 FALSE IF transmitter1_health_zero1 > 5 transmitter1_health_zero1 -= 5 ELSE flag_transmitter1_destroyed = 1 GOSUB assign_next_target_for_planes_zero1 IF flag_zero1_mission_zero1_failed = 1 flag_zero1_create_rc_baddies = 0 flag_zero1_kill_8_helis = 0 flag_zero1_mission_zero1_passed = 0 flag_zero1_mission_zero1_failed = 1 RETURN ENDIF IF NOT IS_CHAR_DEAD char_zero_zero1 LOAD_MISSION_AUDIO 1 SOUND_ZER1_BG WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_BG ) 10000 1 //WE've LOST ONE PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_BG transmitter1_health_zero1 = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF flag_transmitter2_destroyed = 0 IF DOES_OBJECT_EXIST object_transmitter[1] IF LOCATE_OBJECT_3D object_transmitter[1] grenade_zero1_x[index_zero1] grenade_zero1_y[index_zero1] grenade_zero1_z[index_zero1] 15.0 15.0 10.0 FALSE IF transmitter2_health_zero1 > 5 transmitter2_health_zero1 -= 5 ELSE flag_transmitter2_destroyed = 1 GOSUB assign_next_target_for_planes_zero1 IF flag_zero1_mission_zero1_failed = 1 flag_zero1_create_rc_baddies = 0 flag_zero1_kill_8_helis = 0 flag_zero1_mission_zero1_passed = 0 flag_zero1_mission_zero1_failed = 1 RETURN ENDIF IF NOT IS_CHAR_DEAD char_zero_zero1 LOAD_MISSION_AUDIO 1 SOUND_ZER1_BJ WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_BJ ) 10000 1 //WE've LOST ONE PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_BJ transmitter2_health_zero1 = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF flag_transmitter3_destroyed = 0 IF DOES_OBJECT_EXIST object_transmitter[2] IF LOCATE_OBJECT_3D object_transmitter[2] grenade_zero1_x[index_zero1] grenade_zero1_y[index_zero1] grenade_zero1_z[index_zero1] 15.0 15.0 10.0 FALSE IF transmitter3_health_zero1 > 5 transmitter3_health_zero1 -= 5 ELSE flag_transmitter3_destroyed = 1 GOSUB assign_next_target_for_planes_zero1 IF flag_zero1_mission_zero1_failed = 1 flag_zero1_create_rc_baddies = 0 flag_zero1_kill_8_helis = 0 flag_zero1_mission_zero1_passed = 0 flag_zero1_mission_zero1_failed = 1 RETURN ENDIF IF NOT IS_CHAR_DEAD char_zero_zero1 LOAD_MISSION_AUDIO 1 SOUND_ZER1_BK WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_BK ) 10000 1 //WE've LOST ONE PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_BK transmitter3_health_zero1 = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF flag_transmitter4_destroyed = 0 IF DOES_OBJECT_EXIST object_transmitter[3] IF LOCATE_OBJECT_3D object_transmitter[3] grenade_zero1_x[index_zero1] grenade_zero1_y[index_zero1] grenade_zero1_z[index_zero1] 15.0 15.0 10.0 FALSE IF transmitter4_health_zero1 > 5 transmitter4_health_zero1 -= 5 ELSE flag_transmitter4_destroyed = 1 DELETE_OBJECT object_transmitter[index_target] ADD_EXPLOSION coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] EXPLOSION_GRENADE CREATE_OBJECT wongs_erection2 coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] object_transmitter[index_target] SET_OBJECT_HEADING object_transmitter[index_target] heading_destroyed_transmittors[index_target] START_SCRIPT_FIRE coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] 5 3 fire_transmittor[index_target] transmitter4_health_zero1 = 0 flag_zero1_create_rc_baddies = 0 flag_zero1_kill_8_helis = 0 flag_zero1_mission_zero1_failed = 1 // [ZER1_EA] Curse you, Berkley, CURSE YOOUUU! IF NOT IS_CHAR_DEAD char_zero_zero1 LOAD_MISSION_AUDIO 1 SOUND_ZER1_EA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_EA ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_EA ENDIF CLEAR_ONSCREEN_COUNTER transmitter_overallhealth CLEAR_ONSCREEN_TIMER mission_countdown_zero1 PRINT_NOW ( ZER1_19 ) 5000 1 //all transmitter gone RETURN ENDIF ENDIF ENDIF ENDIF ENDIF ///////////////////////////////////////////////////////////////////// ENDIF ENDIF RETURN //////////////////////////// // transmitter health //////////////////////////// transmitters_signal_status_zero1: // if an explosion is near transmitter, deduct 10 off health // if transmitter is dead, increment index_target, make remaining helis attack that transmitter // transmitter_overallhealth = 0 IF index_target > 3 OR transmitter_overallhealth <= 5 flag_zero1_create_rc_baddies = 0 flag_zero1_kill_8_helis = 0 flag_zero1_mission_zero1_failed = 1 IF DOES_OBJECT_EXIST object_transmitter[index_target] DELETE_OBJECT object_transmitter[index_target] ADD_EXPLOSION coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] EXPLOSION_GRENADE //GET_OFFSET_FROM_CAR_IN_WORLD_COORDS rc_enemy_helis_zero1[1] 2.0 1.5 -1.0 baron_offset_x baron_offset_y baron_offset_z ADD_EXPLOSION coord_transmitter_x[index_target] coord_transmitter_y[index_target] 61.5 EXPLOSION_OBJECT CREATE_OBJECT wongs_erection2 coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] object_transmitter[index_target] SET_OBJECT_HEADING object_transmitter[index_target] heading_destroyed_transmittors[index_target] START_SCRIPT_FIRE coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] 5 3 fire_transmittor[index_target] ENDIF // [ZER1_EA] Curse you, Berkley, CURSE YOOUUU! IF NOT IS_CHAR_DEAD char_zero_zero1 LOAD_MISSION_AUDIO 1 SOUND_ZER1_EA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_EA ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_EA ENDIF CLEAR_ONSCREEN_COUNTER transmitter_overallhealth CLEAR_ONSCREEN_TIMER mission_countdown_zero1 PRINT_NOW ( ZER1_19 ) 5000 1 //ALL transmitter gone RETURN ELSE transmitter_overallhealth = transmitter1_health_zero1 transmitter_overallhealth += transmitter2_health_zero1 transmitter_overallhealth += transmitter3_health_zero1 transmitter_overallhealth += transmitter4_health_zero1 ENDIF RETURN /////////////////////////////////////// // IF transmittor is destroyed, // make planes move on to next target /////////////////////////////////////// assign_next_target_for_planes_zero1: DELETE_OBJECT object_transmitter[index_target] ADD_EXPLOSION coord_transmitter_x[index_target] coord_transmitter_y[index_target] 61.5 EXPLOSION_OBJECT ADD_EXPLOSION coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] EXPLOSION_GRENADE CREATE_OBJECT wongs_erection2 coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] object_transmitter[index_target] SET_OBJECT_HEADING object_transmitter[index_target] heading_destroyed_transmittors[index_target] START_SCRIPT_FIRE coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] 5 3 fire_transmittor[index_target] IF index_target < 4 AND index_target >= 0 index_target++ // new spawn positions after transmittor 1 is destroyed IF index_target = 1 coord_rc_enemy_helis_zero1_x[0] = -2308.4958 coord_rc_enemy_helis_zero1_y[0] = 131.3490 coord_rc_enemy_helis_zero1_x[1] = -2080.5811 coord_rc_enemy_helis_zero1_y[1] = 122.0999 coord_rc_enemy_helis_zero1_x[2] = -2308.6934 coord_rc_enemy_helis_zero1_y[2] = 190.5520 coord_rc_enemy_helis_zero1_x[3] = -2124.5403 coord_rc_enemy_helis_zero1_y[3] = 63.5174 coord_rc_enemy_helis_zero1_x[4]= -2112.4565 coord_rc_enemy_helis_zero1_y[4]= 143.6713 coord_rc_enemy_helis_zero1_x[5]= -2111.9084 coord_rc_enemy_helis_zero1_y[5]= 149.0278 coord_rc_enemy_helis_zero1_x[6] = -2110.3684 coord_rc_enemy_helis_zero1_y[6] = 126.8913 coord_rc_enemy_helis_zero1_x[7]= -2110.0205 coord_rc_enemy_helis_zero1_y[7]= 120.1988 ENDIF // new spawn positions after transmittor 2 is destroyed IF index_target = 2 coord_rc_enemy_helis_zero1_x[0] = -2308.4958 coord_rc_enemy_helis_zero1_y[0] = 131.3490 coord_rc_enemy_helis_zero1_x[1] = -2080.5811 coord_rc_enemy_helis_zero1_y[1] = 122.0999 coord_rc_enemy_helis_zero1_x[2] = -2308.6934 coord_rc_enemy_helis_zero1_y[2] = 190.5520 coord_rc_enemy_helis_zero1_x[3] = -2124.5403 coord_rc_enemy_helis_zero1_y[3] = 63.5174 coord_rc_enemy_helis_zero1_x[4]= -2112.4565 coord_rc_enemy_helis_zero1_y[4]= 143.6713 coord_rc_enemy_helis_zero1_x[5]= -2111.9084 coord_rc_enemy_helis_zero1_y[5]= 149.0278 coord_rc_enemy_helis_zero1_x[6] = -2110.3684 coord_rc_enemy_helis_zero1_y[6] = 126.8913 coord_rc_enemy_helis_zero1_x[7]= -2110.0205 coord_rc_enemy_helis_zero1_y[7]= 120.1988 ENDIF // new spawn positions after transmittor 3 is destroyed IF index_target = 3 CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_buddy_zero1 EVENT_FIRE_NEARBY coord_rc_enemy_helis_zero1_x[0] = -2119.4958 coord_rc_enemy_helis_zero1_y[0] = 91.3490 coord_rc_enemy_helis_zero1_x[1] = -2258.5811 coord_rc_enemy_helis_zero1_y[1] = 169.0999 coord_rc_enemy_helis_zero1_x[2] = -2278.6934 coord_rc_enemy_helis_zero1_y[2] = 66.5520 coord_rc_enemy_helis_zero1_x[3] = -2248.5403 coord_rc_enemy_helis_zero1_y[3] = 181.5174 coord_rc_enemy_helis_zero1_x[4]= -2180.4565 coord_rc_enemy_helis_zero1_y[4]= 22.6713 coord_rc_enemy_helis_zero1_x[5]= -2181.9084 coord_rc_enemy_helis_zero1_y[5]= 25.0278 coord_rc_enemy_helis_zero1_x[6] = -2181.3684 coord_rc_enemy_helis_zero1_y[6] = 18.8913 coord_rc_enemy_helis_zero1_x[7]= -2180.0205 coord_rc_enemy_helis_zero1_y[7]= 18.1988 ENDIF coord_baron_z_offset_zero1 = coord_transmitter_z[index_target] + 10.0 // make remaining planes do kamakazies IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[0] // HELI_GOTO_COORDS rc_enemy_helis_zero1[0] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] 10.0 coord_transmitter_z[index_target] PLANE_GOTO_COORDS rc_enemy_helis_zero1[0] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_baron_z_offset_zero1 -1.0 0.5 GET_GAME_TIMER timer_heli_creation_time[0] // flag_enemy_objective[0] = 4 ENDIF IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[1] PLANE_GOTO_COORDS rc_enemy_helis_zero1[1] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_baron_z_offset_zero1 -1.0 0.5 // HELI_GOTO_COORDS rc_enemy_helis_zero1[1] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] 10.0 coord_transmitter_z[index_target] GET_GAME_TIMER timer_heli_creation_time[1] // flag_enemy_objective[1] = 4 ENDIF IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[2] PLANE_GOTO_COORDS rc_enemy_helis_zero1[2] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_baron_z_offset_zero1 -1.0 0.5 // HELI_GOTO_COORDS rc_enemy_helis_zero1[2] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] 10.0 coord_transmitter_z[index_target] GET_GAME_TIMER timer_heli_creation_time[2] // flag_enemy_objective[2] = 4 ENDIF IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[3] PLANE_GOTO_COORDS rc_enemy_helis_zero1[3] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_baron_z_offset_zero1 -1.0 0.5 // HELI_GOTO_COORDS rc_enemy_helis_zero1[3] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] 10.0 coord_transmitter_z[index_target] GET_GAME_TIMER timer_heli_creation_time[3] // flag_enemy_objective[3] = 4 ENDIF IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[4] PLANE_GOTO_COORDS rc_enemy_helis_zero1[4] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_baron_z_offset_zero1 -1.0 0.5 // HELI_GOTO_COORDS rc_enemy_helis_zero1[3] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] 10.0 coord_transmitter_z[index_target] GET_GAME_TIMER timer_heli_creation_time[4] // flag_enemy_objective[4] = 4 ENDIF IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[5] PLANE_GOTO_COORDS rc_enemy_helis_zero1[5] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_baron_z_offset_zero1 -1.0 0.5 // HELI_GOTO_COORDS rc_enemy_helis_zero1[3] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] 10.0 coord_transmitter_z[index_target] GET_GAME_TIMER timer_heli_creation_time[5] // flag_enemy_objective[5] = 4 ENDIF IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[6] PLANE_GOTO_COORDS rc_enemy_helis_zero1[6] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_baron_z_offset_zero1 -1.0 0.5 // HELI_GOTO_COORDS rc_enemy_helis_zero1[3] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] 10.0 coord_transmitter_z[index_target] GET_GAME_TIMER timer_heli_creation_time[6] // flag_enemy_objective[6] = 4 ENDIF IF NOT IS_CAR_DEAD rc_enemy_helis_zero1[7] PLANE_GOTO_COORDS rc_enemy_helis_zero1[7] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_baron_z_offset_zero1 -1.0 0.5 // HELI_GOTO_COORDS rc_enemy_helis_zero1[3] coord_transmitter_x[index_target] coord_transmitter_y[index_target] coord_transmitter_z[index_target] 10.0 coord_transmitter_z[index_target] GET_GAME_TIMER timer_heli_creation_time[7] // flag_enemy_objective[7] = 4 ENDIF ENDIF RETURN //////////////////////////////////////////// add_baron_blip_zero1: ADD_BLIP_FOR_CAR rc_enemy_helis_zero1[index_zero1] blip_zero1_rc_enemy_helis_zero1[index_zero1] // CHANGE_BLIP_COLOUR blip_zero1_rc_enemy_helis_zero1[index_zero1] RED CHANGE_BLIP_DISPLAY blip_zero1_rc_enemy_helis_zero1[index_zero1] BLIP_ONLY RETURN //////////////////////////////////////////////////////////////////////////////// ///////////////////////// END OF MISSION CUTSCENE ////////////////////////////// //////////////////////////////////////////////////////////////////////////////// successful_cutscene_zero1: SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT CLEAR_WANTED_LEVEL player1 WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF SET_HEADING_FOR_ATTACHED_PLAYER PLAYER1 270.0 270.0 REQUEST_ANIMATION casino WHILE NOT HAS_ANIMATION_LOADED casino WAIT 0 ENDWHILE REMOVE_ANIMATION ON_LOOKERS /* IF DOES_OBJECT_EXIST object_turret_zero1 SET_OBJECT_VISIBLE object_turret_zero1 TRUE ENDIF */ CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_buddy_zero1 EVENT_FIRE_NEARBY // CUTSCENE OF ZERO CONGRATULATING PLAYER TASK_SHOOT_AT_COORD scplayer -2237.22 170.55 58.45 3000 IF IS_CHAR_DEAD char_zero_zero1 CREATE_CHAR PEDTYPE_CIVMALE SPECIAL01 -2235.0 123.0 57.1 char_zero_zero1 SET_CHAR_HEALTH char_zero_zero1 1000 SET_CHAR_HEADING char_zero_zero1 160.0 ENDIF IF NOT IS_CHAR_DEAD char_zero_zero1 CLEAR_CHAR_TASKS char_zero_zero1 SET_CHAR_COORDINATES char_zero_zero1 -2235.0 123.0 57.1 SET_CHAR_HEADING char_zero_zero1 160.0 OPEN_SEQUENCE_TASK seq_zero_success_cut_zero1 TASK_GO_STRAIGHT_TO_COORD -1 -2237.93 121.4 57.0 PEDMOVE_RUN -1 TASK_PLAY_ANIM -1 manwind CASINO 4.0 TRUE FALSE FALSE FALSE 2000 TASK_ACHIEVE_HEADING -1 100.0 TASK_SCRATCH_HEAD -1 TASK_CHAT_WITH_CHAR -1 SCPLAYER TRUE TRUE // SET_SEQUENCE_TO_REPEAT seq_zero_success_cut_zero1 1 CLOSE_SEQUENCE_TASK seq_zero_success_cut_zero1 PERFORM_SEQUENCE_TASK char_zero_zero1 seq_zero_success_cut_zero1 CLEAR_SEQUENCE_TASK seq_zero_success_cut_zero1 SET_FIXED_CAMERA_POSITION -2242.8374 130.3954 60.7181 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2242.3242 129.5807 60.4482 JUMP_CUT ENDIF DO_FADE 1000 FADE_IN SET_FADING_COLOUR 0 0 0 WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // PRINT ZER1_27 3000 1 //Berkley you fucken cunt, I'll get you back ya rat bastard! // PRINT ZER1_28 2000 1 //Thanks Carl, you saved my transmitters LOAD_MISSION_AUDIO 1 SOUND_ZER1_FA // Ha, Berkley! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_FA ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flag_cutscene_zero1 = 10 CLEAR_MISSION_AUDIO 1 ENDIF ENDWHILE CLEAR_THIS_PRINT ZER1_FA LOAD_MISSION_AUDIO 1 SOUND_ZER1_FB // As long as we have opposable thumbs, WE WILL FIGHT YOU! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_FB ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flag_cutscene_zero1 = 10 CLEAR_MISSION_AUDIO 1 ENDIF ENDWHILE CLEAR_THIS_PRINT ZER1_FB /* ZER1_FA // Ha, Berkley! ZER1_FB // As long as we have opposable thumbs, WE WILL FIGHT YOU! ZER1_FC // ...Well done, Carl. ZER1_FD // Now leave, I must prepare for the battles to come! ZER1_FE // Never have so few, owed so many, no, wait... ZER1_FF // We will fight him on the beaches, well, the rooftops... */ flag_cutscene_zero1 = 0 TIMERB = 0 TIMERA = 0 WHILE NOT flag_cutscene_zero1 = 10 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flag_cutscene_zero1 = 10 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 ENDIF IF flag_cutscene_zero1 = 0 IF TIMERA > 2000 flag_cutscene_zero1 = 1 SET_FIXED_CAMERA_POSITION -2238.8530 124.0934 57.5797 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2238.4761 123.2044 57.8399 JUMP_CUT TIMERA = 0 /* IF NOT IS_CHAR_DEAD char_zero_zero1 POINT_CAMERA_AT_CHAR char_zero_zero1 FIXED JUMP_CUT ENDIF */ IF NOT IS_CHAR_DEAD char_zero_zero1 TASK_LOOK_AT_CHAR scplayer char_zero_zero1 3500 ENDIF LOAD_MISSION_AUDIO 1 SOUND_ZER1_FC // WELL DONE CARL WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flag_cutscene_zero1 = 10 CLEAR_MISSION_AUDIO 1 ENDIF ENDWHILE IF NOT IS_CHAR_DEAD char_zero_zero1 START_CHAR_FACIAL_TALK char_zero_zero1 10000 ENDIF PRINT_NOW ( ZER1_FC ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flag_cutscene_zero1 = 10 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 ENDIF ENDWHILE CLEAR_THIS_PRINT ZER1_FC IF NOT IS_CHAR_DEAD char_zero_zero1 STOP_CHAR_FACIAL_TALK char_zero_zero1 ENDIF LOAD_MISSION_AUDIO 1 SOUND_ZER1_FD // Now leave, I must prepare for the battles ahead! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flag_cutscene_zero1 = 10 CLEAR_MISSION_AUDIO 1 ENDIF ENDWHILE IF NOT IS_CHAR_DEAD char_zero_zero1 START_CHAR_FACIAL_TALK char_zero_zero1 10000 ENDIF PRINT_NOW ( ZER1_FD ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flag_cutscene_zero1 = 10 CLEAR_MISSION_AUDIO 1 ENDIF ENDWHILE CLEAR_THIS_PRINT ZER1_FD IF NOT IS_CHAR_DEAD char_zero_zero1 STOP_CHAR_FACIAL_TALK char_zero_zero1 ENDIF ENDIF ENDIF IF flag_cutscene_zero1 = 1 IF TIMERA > 100 flag_cutscene_zero1 = 2 TIMERA = 0 DETACH_CHAR_FROM_CAR scplayer SET_FIXED_CAMERA_POSITION -2237.9753 122.7383 58.3408 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2238.1929 121.7735 58.4879 JUMP_CUT ENDIF ENDIF IF flag_cutscene_zero1 = 2 IF TIMERA > 200 flag_cutscene_zero1 = 3 TIMERA = 0 OPEN_SEQUENCE_TASK seq_zero_success_cut_zero1 TASK_ACHIEVE_HEADING -1 270.0 IF NOT IS_CHAR_DEAD char_zero_zero1 TASK_CHAT_WITH_CHAR -1 char_zero_zero1 FALSE TRUE ENDIF CLOSE_SEQUENCE_TASK seq_zero_success_cut_zero1 PERFORM_SEQUENCE_TASK scplayer seq_zero_success_cut_zero1 CLEAR_SEQUENCE_TASK seq_zero_success_cut_zero1 LOAD_MISSION_AUDIO 1 SOUND_ZER1_FE // [ZER1_FE] Never have so few owed so many WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flag_cutscene_zero1 = 10 CLEAR_MISSION_AUDIO 1 ENDIF ENDWHILE PRINT_NOW ( ZER1_FE ) 10000 1 IF NOT IS_CHAR_DEAD char_zero_zero1 START_CHAR_FACIAL_TALK char_zero_zero1 10000 ENDIF PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_FE IF NOT IS_CHAR_DEAD char_zero_zero1 STOP_CHAR_FACIAL_TALK char_zero_zero1 ENDIF LOAD_MISSION_AUDIO 1 SOUND_ZER1_FG // ZER1_FG too little, three…no that’s not it, what is it… WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flag_cutscene_zero1 = 10 CLEAR_MISSION_AUDIO 1 ENDIF ENDWHILE PRINT_NOW ( ZER1_FG ) 10000 1 IF NOT IS_CHAR_DEAD char_zero_zero1 START_CHAR_FACIAL_TALK char_zero_zero1 10000 ENDIF PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_FG IF NOT IS_CHAR_DEAD char_zero_zero1 STOP_CHAR_FACIAL_TALK char_zero_zero1 ENDIF IF NOT IS_CHAR_DEAD char_zero_zero1 TASK_SCRATCH_HEAD char_zero_zero1 ENDIF LOAD_MISSION_AUDIO 1 SOUND_ZER1_FF // [ZER1_FF] We will fight him on the beaches, well, the rooftops... WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD char_zero_zero1 START_CHAR_FACIAL_TALK char_zero_zero1 10000 ENDIF PRINT_NOW ( ZER1_FF ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flag_cutscene_zero1 = 10 CLEAR_MISSION_AUDIO 1 ENDIF ENDWHILE CLEAR_THIS_PRINT ZER1_FF IF NOT IS_CHAR_DEAD char_zero_zero1 STOP_CHAR_FACIAL_TALK char_zero_zero1 ENDIF flag_cutscene_zero1 = 10 ENDIF ENDIF // Safety Timer IF TIMERB > 14000 flag_cutscene_zero1 = 10 ENDIF ENDWHILE //SET_PLAYER_CONTROL player1 ON // RESTORE_CAMERA_JUMPCUT SET_FADING_COLOUR 0 0 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_WIDESCREEN OFF CLEAR_ONSCREEN_COUNTER transmitter_overallhealth CLEAR_ONSCREEN_TIMER mission_countdown_zero1 DETACH_CHAR_FROM_CAR scplayer IF NOT IS_CHAR_DEAD scplayer SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE SET_CHAR_COORDINATES scplayer -2244.4438 136.8633 34.3203 TASK_ACHIEVE_HEADING scplayer 90.0 ENDIF WAIT 500 RESTORE_CAMERA_JUMPCUT CLEAR_AREA -2246.0264 134.8950 34.3047 1000.0 TRUE DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN // ***************************** // MISSION PASSED // ***************************** mission_zero1_passed: //flag_zero1_pp1_mission1_passed = 1 GOSUB successful_cutscene_zero1 // WAIT 500 // SET_HEADING_FOR_ATTACHED_PLAYER Player1 90.0 90.0 SET_PLAYER_CONTROL player1 ON PRINT_WITH_NUMBER_BIG M_PASS 3000 100 1 ADD_SCORE player1 3000 PLAY_MISSION_PASSED_TUNE 1 PLAYER_MADE_PROGRESS 1 REGISTER_MISSION_PASSED ( zero_1 ) //START_NEW_SCRIPT pp1_mission_loop flag_zero_mission_counter++ RETURN // ***************************** // mission failed // ***************************** mission_zero1_failed: PRINT_BIG M_FAIL 5000 1 WAIT 5000 DO_FADE 500 FADE_OUT SET_FADING_COLOUR 0 0 0 WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_ONSCREEN_COUNTER transmitter_overallhealth CLEAR_ONSCREEN_TIMER mission_countdown_zero1 // SET_HEADING_FOR_ATTACHED_PLAYER Player1 90.0 90.0 /* IF IS_CHAR_DEAD char_zero_zero1 PRINT_NOW ZER1_25 5000 1 // zeros deed ENDIF */ DETACH_CHAR_FROM_CAR scplayer SWITCH_WIDESCREEN OFF IF NOT IS_CHAR_DEAD scplayer SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE SET_CHAR_COORDINATES scplayer -2244.4438 136.8633 34.3203 TASK_ACHIEVE_HEADING scplayer 90.0 ENDIF //WAIT 500 LOAD_SCENE -2246.0264 134.8950 34.3047 RESTORE_CAMERA_JUMPCUT CLEAR_AREA -2246.0264 134.8950 34.3047 1000.0 TRUE DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 ON ENDIF // SET_CHAR_COORDINATES scplayer -2246.0264 134.8950 34.3047 RETURN // ***************************** // mission cleanup // ***************************** mission_cleanup_zero1: IF NOT HAS_DEATHARREST_BEEN_EXECUTED GIVE_WEAPON_TO_CHAR scplayer weapontype_zero1 ammo_zero1 ENDIF DETACH_CHAR_FROM_CAR scplayer RELEASE_WEATHER SET_FADING_COLOUR 0 0 0 REMOVE_ALL_SCRIPT_FIRES flag_player_on_mission = 0 SET_POLICE_IGNORE_PLAYER player1 OFF SET_WANTED_MULTIPLIER 1.0 REMOVE_RC_BUGGY // SWITCH_ROADS_ON -2471.72 -89.28 26.25 -2037.99 386.94 98.0 SET_CAR_DENSITY_MULTIPLIER 1.0 //SET_PED_DENSITY_MULTIPLIER 1.0 MARK_MODEL_AS_NO_LONGER_NEEDED rcbaron MARK_MODEL_AS_NO_LONGER_NEEDED rcraider MARK_MODEL_AS_NO_LONGER_NEEDED minigun MARK_MODEL_AS_NO_LONGER_NEEDED wongs_erection MARK_MODEL_AS_NO_LONGER_NEEDED rcbomb MARK_MODEL_AS_NO_LONGER_NEEDED wongs_erection2 MARK_MODEL_AS_NO_LONGER_NEEDED minigun_base MARK_MODEL_AS_NO_LONGER_NEEDED fire_ex // MARK_MODEL_AS_NO_LONGER_NEEDED skimmer UNLOAD_SPECIAL_CHARACTER 1 CLEAR_ONSCREEN_COUNTER transmitter_overallhealth CLEAR_ONSCREEN_TIMER mission_countdown_zero1 // MARK_CAR_AS_NO_LONGER_NEEDED rc_enemy_kamikaze_zero1 // DELETE_CAR rc_enemy_kamikaze_zero1 // REMOVE_BLIP blip_rc_enemy_kamikaze_zero1 DELETE_CAR rc_enemy_helis_zero1[0] DELETE_CAR rc_enemy_helis_zero1[1] DELETE_CAR rc_enemy_helis_zero1[2] DELETE_CAR rc_enemy_helis_zero1[3] DELETE_CAR rc_enemy_helis_zero1[4] DELETE_CAR rc_enemy_helis_zero1[5] DELETE_CAR rc_enemy_helis_zero1[6] DELETE_CAR rc_enemy_helis_zero1[7] DELETE_CAR rc_enemy_helis_zero1[8] DELETE_CAR rc_enemy_helis_zero1[9] CLEAR_SMALL_PRINTS CAMERA_RESET_NEW_SCRIPTABLES DISABLE_ALL_ENTRY_EXITS FALSE DELETE_OBJECT object_transmitter[0] DELETE_OBJECT object_transmitter[1] DELETE_OBJECT object_transmitter[2] DELETE_OBJECT object_transmitter[3] DELETE_OBJECT object_transmitter[4] DELETE_OBJECT object_transmitter[5] DELETE_OBJECT object_transmitter[6] DELETE_OBJECT object_transmitter[7] DELETE_OBJECT object_transmitter[8] DELETE_OBJECT object_transmitter[9] DELETE_OBJECT primed_bomb_1_zero1[0] DELETE_OBJECT primed_bomb_1_zero1[1] DELETE_OBJECT primed_bomb_1_zero1[2] DELETE_OBJECT primed_bomb_1_zero1[3] DELETE_OBJECT primed_bomb_1_zero1[4] DELETE_OBJECT primed_bomb_1_zero1[5] DELETE_OBJECT primed_bomb_1_zero1[6] DELETE_OBJECT primed_bomb_1_zero1[7] DELETE_OBJECT primed_bomb_1_zero1[8] DELETE_OBJECT primed_bomb_1_zero1[9] DELETE_OBJECT falling_bomb_1_zero1[0] DELETE_OBJECT falling_bomb_1_zero1[1] DELETE_OBJECT falling_bomb_1_zero1[2] DELETE_OBJECT falling_bomb_1_zero1[3] DELETE_OBJECT falling_bomb_1_zero1[4] DELETE_OBJECT falling_bomb_1_zero1[5] DELETE_OBJECT falling_bomb_1_zero1[6] DELETE_OBJECT falling_bomb_1_zero1[7] DELETE_OBJECT falling_bomb_1_zero1[8] DELETE_OBJECT falling_bomb_1_zero1[9] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[0] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[1] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[2] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[3] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[4] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[5] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[6] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[7] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[8] REMOVE_BLIP blip_zero1_rc_enemy_helis_zero1[9] REMOVE_STUCK_CAR_CHECK rc_enemy_helis_zero1[0] REMOVE_STUCK_CAR_CHECK rc_enemy_helis_zero1[1] REMOVE_STUCK_CAR_CHECK rc_enemy_helis_zero1[2] REMOVE_STUCK_CAR_CHECK rc_enemy_helis_zero1[3] REMOVE_STUCK_CAR_CHECK rc_enemy_helis_zero1[4] REMOVE_STUCK_CAR_CHECK rc_enemy_helis_zero1[5] REMOVE_STUCK_CAR_CHECK rc_enemy_helis_zero1[6] REMOVE_STUCK_CAR_CHECK rc_enemy_helis_zero1[7] REMOVE_STUCK_CAR_CHECK rc_enemy_helis_zero1[8] REMOVE_STUCK_CAR_CHECK rc_enemy_helis_zero1[9] GET_GAME_TIMER timer_mobile_start REMOVE_CHAR_ELEGANTLY char_zero_zero1 MARK_OBJECT_AS_NO_LONGER_NEEDED object_turret_zero1 REMOVE_ANIMATION casino REMOVE_ANIMATION ON_LOOKERS MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ************************************* RC TURF WAR 2 ************************************* // ************************************* rc baron ******* ********************************** // ***************************************************************************************** // ***************************************************************************************** // Mission start stuff GOSUB mission_start_zero2 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_zero2_failed ENDIF GOSUB mission_cleanup_zero2 MISSION_END // Variables for mission //RC VEHICLES { LVAR_INT rc_playerbaron_zero2 LVAR_INT rc_van_zero2 LVAR_INT char_drivers_zero2[5] LVAR_INT char_dude_with_gun[5] LVAR_INT car_enemy_vans_zero2[5] LVAR_INT char_3_buddy_with_MICRO_UZI[5] LVAR_INT dm_baddies_zero2 LVAR_INT char_zero_zero2 LVAR_INT return_city_zero2 LVAR_FLOAT timer_time_limit timer_time_limit_initial timer_time_limit_converted_float VAR_INT timer_time_limit_converted_int LVAR_FLOAT speed_rc_playerbaron_zero2 LVAR_FLOAT coord_enemyvan_x[5] coord_enemyvan_y[5] coord_enemyvan_z[5] heading_enemy_van[5] LVAR_FLOAT coord_redbaron_x coord_redbaron_y coord_redbaron_z heading_redbaron LVAR_FLOAT coord_players_van_x coord_players_van_y coord_players_van_z heading_players_van LVAR_FLOAT stuck_x_zero2 stuck_y_zero2 stuck_z_zero2 LVAR_INT stuck_timer_zero2 game_timer_zero2 //VAR_FLOAT rotation_velocity_zero2_x rotation_velocity_zero2_y rotation_velocity_zero2_z //LVAR_INT rc_cutscene_heli_zero2 // OBJECT // FLAGS LVAR_INT flag_main_sub_function_zero2 LVAR_INT flag_fly_next_to_transmittor_zero2 LVAR_INT flag_heli_landing_cutscene_zero2 LVAR_INT flag_fly_back_to_player_zero2 LVAR_INT flag_mission_zero2_passed LVAR_INT flag_mission_zero2_failed LVAR_INT flag_created_rc_enemies_zero2 LVAR_INT flag_enemy_van_alarmed[5] LVAR_INT flag_help_text LVAR_INT flag_help_text2 LVAR_INT flag_transmittor_in_place LVAR_INT flag_is_enemy_van_dead[5] LVAR_INT flag_land_plane_zero2 LVAR_INT flag_self_destruct_zero2 LVAR_INT seq_zero_cutscene LVAR_INT help_flags_zero1 LVAR_INT cutscene_flag_zero2 LVAR_INT van_death_counter LVAR_INT flag_zeros_fuel_comments // BLIP LVAR_INT blip_rctiger_zero2[5] LVAR_INT blip_landing_zero2 LVAR_INT index_zero2 // ****************************************Mission Start************************************ mission_start_zero2: help_flags_zero1 = 0 flag_player_on_mission = 1 REGISTER_MISSION_GIVEN SCRIPT_NAME ZERO2 SET_PLAYER_CONTROL player1 OFF LOAD_MISSION_TEXT ZERO2 DISPLAY_CAR_NAMES FALSE ////////////////////////////// SET_FADING_COLOUR 0 0 0 SET_POLICE_IGNORE_PLAYER player1 ON /* DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE*/ SET_AREA_VISIBLE 6 SET_PLAYER_CONTROL player1 OFF FORCE_WEATHER_NOW WEATHER_SUNNY_SF LOAD_CUTSCENE ZERO_2 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN SET_PLAYER_CONTROL player1 OFF WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF SET_FADING_COLOUR 0 0 0 DO_FADE 0 FADE_OUT /////////////////////////////////// WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 SET_PLAYER_CONTROL player1 OFF // INITIALISING VARIABLES flag_main_sub_function_zero2 = 1 flag_fly_next_to_transmittor_zero2 = 0 flag_heli_landing_cutscene_zero2 = 0 flag_fly_back_to_player_zero2 = 0 flag_transmittor_in_place = 0 flag_help_text = 0 flag_help_text2 = 0 flag_land_plane_zero2 = 0 flag_self_destruct_zero2 = 0 flag_mission_zero2_passed = 0 flag_mission_zero2_failed = 0 flag_is_enemy_van_dead[0] = 0 flag_is_enemy_van_dead[1] = 0 flag_is_enemy_van_dead[2] = 0 van_death_counter = 0 timer_time_limit = 390000.0 //6.5 minutes timer_time_limit_initial = timer_time_limit //timer_time_limit = 10000 //5 minutes coord_enemyvan_x[0] = -2006.77 coord_enemyvan_y[0] = 365.69 coord_enemyvan_z[0] = 34.35 heading_enemy_van[0] = 0.0 coord_enemyvan_x[1] = -2250.5725 coord_enemyvan_y[1] = 22.8303 coord_enemyvan_z[1] = 34.4634 heading_enemy_van[1] = 180.0 /* coord_enemyvan_x[2] = -1728.08 coord_enemyvan_y[2] = 850.89 coord_enemyvan_z[2] = 23.73 heading_enemy_van[2] = 270.0 */ coord_enemyvan_x[2] = -2266.27 coord_enemyvan_y[2] = 53.1194 coord_enemyvan_z[2] = 34.38 heading_enemy_van[2] = 90.0 coord_enemyvan_x[3] = -2441.4241 coord_enemyvan_y[3] = 41.9630 coord_enemyvan_z[3] = 33.004 heading_enemy_van[3] =90.0 coord_enemyvan_x[4] = -1728.08 coord_enemyvan_y[4] = 850.89 coord_enemyvan_z[4] = 23.73 heading_enemy_van[4] = 270.0 flag_enemy_van_alarmed[0] = 0 flag_enemy_van_alarmed[1] = 0 flag_enemy_van_alarmed[2] = 0 flag_enemy_van_alarmed[3] = 0 flag_enemy_van_alarmed[4] = 0 flag_zeros_fuel_comments = 0 coord_redbaron_x = -2205.44 coord_redbaron_y = 128.99 coord_redbaron_z = 57.33 heading_redbaron = 90.0 coord_players_van_x = -2227.0 coord_players_van_y = 113.0 coord_players_van_z = 35.5 timer_time_limit_converted_float = 169.0 timer_time_limit_converted_int = 169 TIMERA = 0 index_zero2 = 0 DISABLE_ALL_ENTRY_EXITS TRUE // LOAD MODELS REQUEST_MODEL rcbaron REQUEST_MODEL topfun REQUEST_MODEL MICRO_UZI REQUEST_MODEL mtbike REQUEST_MODEL sanchez LOAD_SPECIAL_CHARACTER 1 zero LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED rcbaron OR NOT HAS_MODEL_LOADED topfun OR NOT HAS_MODEL_LOADED MICRO_UZI OR NOT HAS_MODEL_LOADED mtbike OR NOT HAS_MODEL_LOADED sanchez WAIT 0 ENDWHILE WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 WAIT 0 ENDWHILE /* REQUEST_MODEL news1 WHILE NOT HAS_MODEL_LOADED news1 WAIT 0 ENDWHILE */ //LOAD_SCENE -2083.7158 -990.5264 31.1692 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY dm_baddies_zero2 // ******************************************** START MAIN LOOP ********************************** main_zero2_loop: WAIT 0 // WAIT FOR HELI TO REACH WINDOW IF flag_main_sub_function_zero2 = 1 GOSUB main_sub_function_zero2 ENDIF IF flag_land_plane_zero2 = 1 GOSUB land_plane_zero2 ENDIF IF flag_mission_zero2_passed = 1 GOTO mission_zero2_passed ENDIF IF flag_mission_zero2_failed = 1 GOTO mission_zero2_failed ENDIF GOTO main_zero2_loop // ////////////////////////////////// ////////////////////////////////// //////////////////////////////// // ************************************ Sub Functions ***************************************** // ////////////////////////////////// ////////////////////////////////// //////////////////////////////// main_sub_function_zero2: // SET_CHAR_COORDINATES scplayer -1851.7444 651.0315 79.4154 CLEAR_AREA coord_players_van_x coord_players_van_y coord_players_van_z 1000.0 TRUE CREATE_CAR TOPFUN -2250.9 124.6 28.48 rc_van_zero2 SET_LOAD_COLLISION_FOR_CAR_FLAG rc_van_zero2 FALSE FREEZE_CAR_POSITION rc_van_zero2 TRUE // coord_players_van_x coord_players_van_y coord_players_van_z OPEN_CAR_DOOR rc_van_zero2 REAR_LEFT_DOOR OPEN_CAR_DOOR rc_van_zero2 REAR_RIGHT_DOOR WARP_CHAR_INTO_CAR scplayer rc_van_zero2 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER IF NOT IS_CAR_DEAD rc_van_zero2 CREATE_CHAR_AS_PASSENGER rc_van_zero2 PEDTYPE_CIVMALE SPECIAL01 0 char_zero_zero2 SET_CAR_HEALTH rc_van_zero2 1000 SET_CAR_PROOFS rc_van_zero2 TRUE TRUE TRUE TRUE TRUE ENDIF cutscene_flag_zero2 = 0 IF IS_CHECKPOINT_RESUMING TRUE cutscene_flag_zero2 = 10 ENDIF SET_POLICE_IGNORE_PLAYER player1 ON // CREATE_CAR rcbaron coord_redbaron_x coord_redbaron_y coord_redbaron_z rc_cutscene_heli_zero2 GIVE_REMOTE_CONTROLLED_MODEL_TO_PLAYER player1 coord_redbaron_x coord_redbaron_y coord_redbaron_z 40.090 rcbaron GET_REMOTE_CONTROLLED_CAR player1 rc_playerbaron_zero2 SET_CAR_HEADING rc_playerbaron_zero2 90.0 SET_ENABLE_RC_DETONATE_ON_CONTACT FALSE SET_ENABLE_RC_DETONATE FALSE SET_CAR_HEALTH rc_playerbaron_zero2 1100 SET_CAR_PROOFS rc_playerbaron_zero2 FALSE TRUE TRUE FALSE FALSE // SET_CAR_PROOFS CarID Bulletproof Flameproof Explosionproof Collisionproof MeleeWeaponproof // SET_CAR_PROOFS CarID Bulletproof Flameproof Explosionproof Collisionproof MeleeWeaponproof index_zero2 = 0 WHILE index_zero2 < 5 //creating 3 RC bandits to capture the enemy flag WAIT 0 // CREATE_CAR rctiger coord_enemyvan_x[index_zero2] coord_enemyvan_y[index_zero2] coord_enemyvan_z[index_zero2] car_enemy_vans_zero2[index_zero2] CLEAR_AREA coord_enemyvan_x[index_zero2] coord_enemyvan_y[index_zero2] coord_enemyvan_z[index_zero2] 1000.0 TRUE // car 4 is the parked car // car 3 is the one with a guy shooting // car 2 is the one where the guy legs it // 1 A mt bike // 0 motorbike IF index_zero2 = 0 CREATE_CAR SANCHEZ coord_enemyvan_x[index_zero2] coord_enemyvan_y[index_zero2] coord_enemyvan_z[index_zero2] car_enemy_vans_zero2[index_zero2] SET_CAR_HEALTH car_enemy_vans_zero2[index_zero2] 1000 ENDIF IF index_zero2 = 1 CREATE_CAR mtbike coord_enemyvan_x[index_zero2] coord_enemyvan_y[index_zero2] coord_enemyvan_z[index_zero2] car_enemy_vans_zero2[index_zero2] SET_CAR_HEALTH car_enemy_vans_zero2[index_zero2] 1500 ENDIF IF index_zero2 = 2 CREATE_CAR TOPFUN coord_enemyvan_x[index_zero2] coord_enemyvan_y[index_zero2] coord_enemyvan_z[index_zero2] car_enemy_vans_zero2[index_zero2] SET_CAR_HEALTH car_enemy_vans_zero2[index_zero2] 1500 ENDIF IF index_zero2 = 3 CREATE_CAR TOPFUN coord_enemyvan_x[index_zero2] coord_enemyvan_y[index_zero2] coord_enemyvan_z[index_zero2] car_enemy_vans_zero2[index_zero2] SET_CAR_HEALTH car_enemy_vans_zero2[index_zero2] 1500 ENDIF IF index_zero2 = 4 CREATE_CAR TOPFUN coord_enemyvan_x[index_zero2] coord_enemyvan_y[index_zero2] coord_enemyvan_z[index_zero2] car_enemy_vans_zero2[index_zero2] SET_CAR_HEALTH car_enemy_vans_zero2[index_zero2] 1500 LOCK_CAR_DOORS car_enemy_vans_zero2[index_zero2] CARLOCK_LOCKED_BUT_CAN_BE_DAMAGED ENDIF SET_CAR_HEADING car_enemy_vans_zero2[index_zero2] heading_enemy_van[index_zero2] SET_CAR_PROOFS car_enemy_vans_zero2[index_zero2] FALSE TRUE TRUE FALSE FALSE WAIT 500 IF NOT IS_CAR_DEAD car_enemy_vans_zero2[index_zero2] CREATE_RANDOM_CHAR_AS_DRIVER car_enemy_vans_zero2[index_zero2] char_drivers_zero2[index_zero2] ENDIF GIVE_WEAPON_TO_CHAR char_drivers_zero2[index_zero2] WEAPONTYPE_MICRO_UZI 500 SET_CHAR_ACCURACY char_drivers_zero2[index_zero2] 60 SET_LOAD_COLLISION_FOR_CAR_FLAG car_enemy_vans_zero2[index_zero2] FALSE IF index_zero2 = 3 // this car has buddy OR index_zero2 = 0 // CREATE_CHAR_AS_PASSENGER car_enemy_vans_zero2[index_zero2] PEDTYPE_MISSION1 news1 0 char_3_buddy_with_MICRO_UZI[index_zero2] CREATE_RANDOM_CHAR_AS_PASSENGER car_enemy_vans_zero2[index_zero2] 0 char_3_buddy_with_MICRO_UZI[index_zero2] GIVE_WEAPON_TO_CHAR char_3_buddy_with_MICRO_UZI[index_zero2] WEAPONTYPE_MICRO_UZI 500 SET_CHAR_ACCURACY char_3_buddy_with_MICRO_UZI[index_zero2] 60 SET_CHAR_DECISION_MAKER char_3_buddy_with_MICRO_UZI[index_zero2] dm_baddies_zero2 SET_CHAR_DECISION_MAKER char_drivers_zero2[index_zero2] dm_baddies_zero2 // ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_baddies_zero2 EVENT_VEHICLE_DAMAGE TASK_SIMPLE_GANG_DRIVEBY 0.0 100.0 0.0 0.0 TRUE FALSE ENDIF IF NOT IS_CAR_DEAD car_enemy_vans_zero2[index_zero2] //IF NOT index_zero2 = 4 // car 4 is parked TASK_CAR_DRIVE_WANDER char_drivers_zero2[index_zero2] car_enemy_vans_zero2[index_zero2] 3.0 DRIVINGMODE_STOPFORCARS //ENDIF ENDIF flag_enemy_van_alarmed[index_zero2]= 0 index_zero2++ ENDWHILE TIMERB = 0 // CUTSCENE HERE. SET_FIXED_CAMERA_POSITION -2273.8411 45.5794 37.0987 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2273.2969 46.4174 37.1385 JUMP_CUT // SWITCH_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 // SWITCH_PED_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 CLEAR_AREA -2285.54 41.31 35.01 1000.0 TRUE CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE -2273.8411 45.5794 37.0987 -2280.6526 50.3058 35.7357 5000 TRUE // two sets of coord for cam start point and end point + time for pan CAMERA_SET_VECTOR_TRACK -2273.2969 46.4174 37.1385 -2280.0540 51.1040 35.6677 5000 TRUE // two sets of coords for cam aim at start and end point + time for pan SWITCH_WIDESCREEN ON TIMERA = 0 TIMERB = 0 // LOAD_SCENE -2285.54 41.31 35.01 LOAD_SCENE_IN_DIRECTION -2273.8411 45.5794 37.0987 310.0 SET_FADING_COLOUR 0 0 0 WAIT 1000 DO_FADE 1000 FADE_IN //cutscene_flag_zero2 = 0 WHILE NOT cutscene_flag_zero2 = 10 WAIT 0 IF cutscene_flag_zero2 = 0 cutscene_flag_zero2 = 1 SKIP_CUTSCENE_START LOAD_MISSION_AUDIO 1 SOUND_ZER2_AB // Berkley has his sychophantic lackies do all his deliveries. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER2_AB ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER2_AB ENDIF IF cutscene_flag_zero2 = 1 cutscene_flag_zero2 = 2 LOAD_MISSION_AUDIO 1 SOUND_ZER2_AC // We shall hit him where it hurts the most! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER2_AC ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER2_AC ENDIF IF cutscene_flag_zero2 = 2 cutscene_flag_zero2 = 3 LOAD_MISSION_AUDIO 1 SOUND_ZER2_AD // Bring his mail order model business to its knees! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER2_AD ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER2_AD ENDIF IF IS_SKIP_CUTSCENE_BUTTON_PRESSED CLEAR_MISSION_AUDIO 1 cutscene_flag_zero2 = 10 ENDIF IF TIMERA > 5000 cutscene_flag_zero2 = 10 ENDIF ENDWHILE SKIP_CUTSCENE_END SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CAMERA_RESET_NEW_SCRIPTABLES IF NOT IS_CAR_DEAD rc_van_zero2 SET_CAR_COORDINATES rc_van_zero2 -2233.9 122.6 700.48 SET_CAR_HEADING rc_van_zero2 90.0 FREEZE_CAR_POSITION rc_van_zero2 TRUE ENDIF SET_RADIO_CHANNEL RS_MODERN_ROCK // WAIT 1000 // END CUTSCENE IF NOT IS_CAR_DEAD rc_van_zero2 CLOSE_ALL_CAR_DOORS rc_van_zero2 ENDIF // DELETE_CAR rc_cutscene_heli_zero2 SWITCH_WIDESCREEN OFF //SWITCH_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 // SWITCH_PED_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 RESTORE_CAMERA_JUMPCUT IF NOT IS_CAR_DEAD rc_playerbaron_zero2 POINT_CAMERA_AT_CAR rc_playerbaron_zero2 CAM_ON_A_STRING JUMP_CUT FREEZE_CAR_POSITION rc_playerbaron_zero2 FALSE WAIT 0 SET_CAMERA_ZOOM CAM_ZOOM_TWO ENDIF SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON index_zero2 = 0 WHILE index_zero2 < 5 //creating 3 RC bandits to capture the enemy flag IF NOT IS_CHAR_DEAD char_drivers_zero2[index_zero2] ADD_BLIP_FOR_CHAR char_drivers_zero2[index_zero2] blip_rctiger_zero2[index_zero2] ENDIF index_zero2++ ENDWHILE // DISPLAY_ONSCREEN_TIMER_WITH_STRING timer_time_limit TIMER_DOWN ZER2_28 // DISPLAY_ONSCREEN_TIMER_WITH_STRING timer_time_limit TIMER_DOWN ZER2_28 DISPLAY_ONSCREEN_COUNTER_WITH_STRING timer_time_limit_converted_int COUNTER_DISPLAY_BAR ZER2_28 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_ZER2_AA // [ZER2_AA] Launch the Red Baron! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER2_AA ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER2_AA // WAiting for rc heli to pickup transmittor IF NOT IS_CAR_DEAD rc_playerbaron_zero2 WHILE NOT flag_transmittor_in_place = 1 WAIT 0 // VIEW_FLOAT_VARIABLE rotation_velocity_zero2_x rotation_velocity_zero2_x /// VIEW_FLOAT_VARIABLE rotation_velocity_zero2_y rotation_velocity_zero2_y // VIEW_INTEGER_VARIABLE timer_time_limit_converted_int timer_time_limit_converted_int IF NOT IS_CAR_DEAD rc_playerbaron_zero2 GET_CAR_SPEED rc_playerbaron_zero2 speed_rc_playerbaron_zero2 IF speed_rc_playerbaron_zero2 > 1.0 timer_time_limit-=10.0 timer_time_limit_converted_float = timer_time_limit / timer_time_limit_initial timer_time_limit_converted_float*=100.0 timer_time_limit_converted_int =# timer_time_limit_converted_float ENDIF IF IS_BUTTON_PRESSED PAD1 CROSS //speed_rc_playerbaron_zero2 > 1.0 timer_time_limit-=@20.0 timer_time_limit_converted_float = timer_time_limit / timer_time_limit_initial timer_time_limit_converted_float*=100.0 timer_time_limit_converted_int =# timer_time_limit_converted_float ENDIF GET_CAR_COORDINATES rc_playerbaron_zero2 coord_redbaron_x coord_redbaron_y coord_redbaron_z GET_CITY_FROM_COORDS coord_redbaron_x coord_redbaron_y coord_redbaron_z return_city_zero2 ENDIF IF return_city_zero2 = LEVEL_LOSANGELES OR return_city_zero2 = LEVEL_LASVEGAS EXPLODE_CAR rc_playerbaron_zero2 EXPLODE_CAR rc_playerbaron_zero2 ENDIF IF help_flags_zero1 = 0 PRINT_HELP ZER2_1 // press circle to accelerate help_flags_zero1 = 1 TIMERA = 0 ENDIF IF help_flags_zero1 = 1 IF TIMERA > 8000 CLEAR_HELP //PRINT_HELP ZER2_2 // use the rudder to turn left and right // not used in mobile help_flags_zero1 = 2 TIMERA = 0 ENDIF ENDIF IF help_flags_zero1 = 2 // IF IS_BUTTON_PRESSED PAD1 SQUARE IF TIMERA > 8000 CLEAR_HELP PRINT_HELP (ZER2_30) // Tap ~m~~widget_air_gun~ to fire Machine Guns. help_flags_zero1 = 3 TIMERA = 0 ENDIF ENDIF IF help_flags_zero1 = 3 // IF IS_BUTTON_PRESSED PAD1 SQUARE IF TIMERA > 8000 CLEAR_HELP PRINT_NOW ZER2_14 10000 1 //Destroy the vans help_flags_zero1 = 4 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S WAIT 0 WAIT 0 WAIT 0 WAIT 0 // flag_main_sub_function_zero2 = 0 flag_main_sub_function_zero2 = 0 flag_fly_next_to_transmittor_zero2 = 0 flag_heli_landing_cutscene_zero2 = 0 // flag_fly_back_to_player_zero2 = 0 flag_mission_zero2_passed = 1 // flag_mission_zero2_passed = 1 flag_mission_zero2_failed = 0 RETURN ENDIF IF flag_zeros_fuel_comments = 0 // IF timer_time_limit <= 180000 IF timer_time_limit_converted_int <= 50 flag_zeros_fuel_comments = 1 LOAD_MISSION_AUDIO 1 SOUND_ZER2_DA // [ZER2_DA] Watch your fuel, Carl, only half a tank left! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER2_DA ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER2_DA ENDIF ENDIF IF flag_zeros_fuel_comments = 1 // IF timer_time_limit <= 50000 IF timer_time_limit_converted_int <= 10 flag_zeros_fuel_comments = 2 LOAD_MISSION_AUDIO 1 SOUND_ZER2_DB // [ZER2_DA] Watch your fuel, Carl, only half a tank left! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER2_DB ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER2_DB ENDIF ENDIF IF timer_time_limit_converted_int <=0 //SET_PLAYER_CONTROL Player1 OFF IF NOT IS_CAR_DEAD rc_playerbaron_zero2 // EXPLODE_CAR rc_playerbaron_zero2 // SET_CAR_FORWARD_SPEED rc_playerbaron_zero2 0.0 SET_CAR_ENGINE_ON rc_playerbaron_zero2 FALSE SET_CAR_HEAVY rc_playerbaron_zero2 TRUE ENDIF CLEAR_ONSCREEN_COUNTER timer_time_limit_converted_int TIMERA = 0 flag_main_sub_function_zero2 = 0 flag_fly_next_to_transmittor_zero2 = 0 flag_heli_landing_cutscene_zero2 = 0 flag_fly_back_to_player_zero2 = 0 flag_mission_zero2_passed = 0 flag_mission_zero2_failed = 1 SET_PLAYER_CONTROL player1 OFF PRINT_NOW ZER2_42 5000 1 // ran out of battery PRINT_BIG M_FAIL 5000 1 LOAD_MISSION_AUDIO 1 SOUND_ZER1_EC // Noooooooooo! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE // PRINT_NOW ( ZER2_DB ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF NOT IS_CAR_DEAD rc_playerbaron_zero2 // GET_CAR_ROTATION_VELOCITY rc_playerbaron_zero2 rotation_velocity_zero2_x rotation_velocity_zero2_y rotation_velocity_zero2_z // IF NOT rotation_velocity_zero2_x = 0.0 // SET_CAR_ROTATION_VELOCITY rc_playerbaron_zero2 0.0 0.0 0.0 SET_CAR_FORWARD_SPEED rc_playerbaron_zero2 0.0 ENDIF ENDWHILE REMOVE_RC_BUGGY IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -2244.4438 136.8633 34.3203 ELSE SET_CHAR_COORDINATES scplayer -2244.4438 136.8633 34.3203 ENDIF SET_CHAR_HEADING scplayer 90.0 ENDIF // WAIT 1000 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE -2245.0264 126.8950 34.3047 WAIT 1000 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN ENDIF IF IS_CAR_DEAD rc_playerbaron_zero2 CLEAR_ONSCREEN_COUNTER timer_time_limit_converted_int flag_mission_zero2_failed = 1 SET_PLAYER_CONTROL player1 OFF flag_main_sub_function_zero2 = 0 PRINT_NOW ( ZER2_8 ) 5000 1 // You crashed your plane! PRINT_BIG M_FAIL 5000 1 LOAD_MISSION_AUDIO 1 SOUND_ZER1_EB // Noooooooooo! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE // PRINT_NOW ( ZER2_DB ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF NOT IS_CAR_DEAD rc_playerbaron_zero2 SET_CAR_FORWARD_SPEED rc_playerbaron_zero2 0.0 ENDIF ENDWHILE REMOVE_RC_BUGGY IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -2244.4438 136.8633 34.3203 ELSE SET_CHAR_COORDINATES scplayer -2244.4438 136.8633 34.3203 ENDIF SET_CHAR_HEADING scplayer 90.0 ENDIF // WAIT 1000 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE -2245.0264 126.8950 34.3047 WAIT 1000 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN ENDIF index_zero2 = 0 WHILE index_zero2 < 5 IF NOT IS_CAR_DEAD rc_playerbaron_zero2 GET_CAR_COORDINATES rc_playerbaron_zero2 coord_redbaron_x coord_redbaron_y coord_redbaron_z // checking the guy who flees IF flag_is_enemy_van_dead[index_zero2] = 0 IF NOT IS_CHAR_DEAD char_drivers_zero2[index_zero2] IF flag_enemy_van_alarmed[index_zero2]= 1 ENDIF ELSE flag_is_enemy_van_dead[index_zero2] = 1 REMOVE_BLIP blip_rctiger_zero2[index_zero2] MARK_CAR_AS_NO_LONGER_NEEDED car_enemy_vans_zero2[index_zero2] IF index_zero2 = 3 // this car has buddy OR index_zero2 = 0 MARK_CHAR_AS_NO_LONGER_NEEDED char_3_buddy_with_MICRO_UZI[index_zero2] ENDIF van_death_counter++ flag_is_enemy_van_dead[index_zero2] = 1 IF van_death_counter = 1 // PRINT_NOW ZER2_23 5000 1 //one van destroyed LOAD_MISSION_AUDIO 1 SOUND_ZER2_CA // One down, four to go! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER2_CA ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER2_CA ENDIF IF van_death_counter = 2 LOAD_MISSION_AUDIO 1 SOUND_ZER2_CC // 3 left WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER2_CC ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER2_CC ENDIF IF van_death_counter = 3 LOAD_MISSION_AUDIO 1 SOUND_ZER2_CD // Only two left now, Carl – HUNT THEM DOWN! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER2_CD ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER2_CD ENDIF IF van_death_counter = 4 LOAD_MISSION_AUDIO 1 SOUND_ZER2_CE // [ZER2_CE] Just one more and Berkley’s mail order department is finished! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER2_CE ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER2_CE ENDIF //flag_heli_landing_cutscene_zero2 = 0 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD rc_playerbaron_zero2 GET_GAME_TIMER game_timer_zero2 IF NOT LOCATE_CAR_3D rc_playerbaron_zero2 stuck_x_zero2 stuck_y_zero2 stuck_z_zero2 1.5 1.5 1.5 FALSE GET_CAR_COORDINATES rc_playerbaron_zero2 stuck_x_zero2 stuck_y_zero2 stuck_z_zero2 stuck_timer_zero2 = game_timer_zero2 + 4000 flag_self_destruct_zero2 = 0 ENDIF IF LOCATE_CAR_3D rc_playerbaron_zero2 stuck_x_zero2 stuck_y_zero2 stuck_z_zero2 1.5 1.5 1.5 FALSE IF stuck_timer_zero2 < game_timer_zero2 IF help_flags_zero1 > 3 IF flag_self_destruct_zero2 = 0 PRINT_HELP ZER2_4 flag_self_destruct_zero2 = 1 ENDIF IF IS_BUTTON_PRESSED PAD1 CIRCLE OR IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL flag_main_sub_function_zero2 = 0 flag_fly_next_to_transmittor_zero2 = 0 flag_heli_landing_cutscene_zero2 = 0 flag_fly_back_to_player_zero2 = 0 flag_mission_zero2_passed = 0 flag_mission_zero2_failed = 1 SET_PLAYER_CONTROL player1 OFF PRINT_NOW ( ZER2_8 ) 5000 1 // You crashed your plane! PRINT_BIG M_FAIL 5000 1 SET_CAR_HEALTH rc_playerbaron_zero2 1 CLEAR_ONSCREEN_COUNTER timer_time_limit_converted_int IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -2244.4438 136.8633 34.3203 ELSE SET_CHAR_COORDINATES scplayer -2244.4438 136.8633 34.3203 ENDIF SET_CHAR_HEADING scplayer 90.0 ENDIF ADD_EXPLOSION stuck_x_zero2 stuck_y_zero2 stuck_z_zero2 EXPLOSION_GRENADE LOAD_MISSION_AUDIO 1 SOUND_ZER1_EC // Noooooooooo! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE REMOVE_RC_BUGGY // WAIT 1000 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE -2245.0264 126.8950 34.3047 WAIT 1000 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN ENDIF ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD car_enemy_vans_zero2[index_zero2] IF flag_enemy_van_alarmed[index_zero2]= 0 IF HAS_CAR_BEEN_DAMAGED_BY_CAR car_enemy_vans_zero2[index_zero2] rc_playerbaron_zero2 OR HAS_CAR_BEEN_DAMAGED_BY_WEAPON car_enemy_vans_zero2[index_zero2] WEAPONTYPE_M4 flag_enemy_van_alarmed[index_zero2]= 1 IF index_zero2 = 2 // making sure its not the van where teh guy flees OR index_zero2 = 1 IF NOT IS_CHAR_DEAD char_drivers_zero2[index_zero2] TASK_LEAVE_CAR_AND_FLEE char_drivers_zero2[index_zero2] car_enemy_vans_zero2[index_zero2] coord_redbaron_x coord_redbaron_y coord_redbaron_z // PRINT_NOW ZER2_39 5000 1 // watch out for that guy with the gun! TASK_DESTROY_CAR char_drivers_zero2[index_zero2] rc_playerbaron_zero2 IF index_zero2 = 1 LOAD_MISSION_AUDIO 1 SOUND_ZER2_BB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER2_BB ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER2_BB ENDIF IF index_zero2 = 2 LOAD_MISSION_AUDIO 1 SOUND_ZER2_BA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER2_BA ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER2_BA ENDIF ENDIF ELSE IF NOT IS_CAR_DEAD car_enemy_vans_zero2[index_zero2] IF NOT IS_CHAR_DEAD char_drivers_zero2[index_zero2] IF NOT index_zero2 = 4 // if not the parked car 4 TASK_CAR_DRIVE_WANDER char_drivers_zero2[index_zero2] car_enemy_vans_zero2[index_zero2] 10.0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF ENDIF IF index_zero2 = 3 OR index_zero2 = 0 IF NOT IS_CAR_DEAD rc_playerbaron_zero2 IF NOT IS_CHAR_DEAD char_3_buddy_with_MICRO_UZI[index_zero2] TASK_DRIVE_BY char_3_buddy_with_MICRO_UZI[index_zero2] -1 rc_playerbaron_zero2 0.0 0.0 0.0 1000.0 DRIVEBY_AI_ALL_DIRN FALSE 100 // PRINT_NOW ZER2_39 5000 1 // watch out for that guy with the gun! ENDIF ENDIF ENDIF IF index_zero2 = 0 LOAD_MISSION_AUDIO 1 SOUND_ZER1_FH ///ZER1_FH Fight or die Carl, it's the only choice we have. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER1_FH ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER1_FH ENDIF ENDIF ENDIF IF help_flags_zero1 = 4 IF NOT IS_CAR_DEAD car_enemy_vans_zero2[index_zero2] IF LOCATE_CAR_3D car_enemy_vans_zero2[index_zero2] coord_redbaron_x coord_redbaron_y coord_redbaron_z 50.0 50.0 50.0 FALSE IF IS_CAR_ON_SCREEN car_enemy_vans_zero2[index_zero2] IF flag_heli_landing_cutscene_zero2 = 0 PRINT (ZER2_7) 5000 1 // Line up behind the van and use machine gun flag_heli_landing_cutscene_zero2 = 1 ENDIF ENDIF ENDIF IF LOCATE_CAR_3D car_enemy_vans_zero2[index_zero2] coord_redbaron_x coord_redbaron_y coord_redbaron_z 30.0 30.0 30.0 FALSE IF IS_CAR_ON_SCREEN car_enemy_vans_zero2[index_zero2] IF flag_heli_landing_cutscene_zero2 = 1 PRINT_HELP (ZER2_30) // Tap ~m~~widget_air_gun~ to fire Machine Guns. flag_heli_landing_cutscene_zero2 = 2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ELSE flag_mission_zero2_failed = 1 SET_PLAYER_CONTROL player1 OFF flag_main_sub_function_zero2 = 0 PRINT_NOW ( ZER2_8 ) 5000 1 // You crashed your plane! CLEAR_ONSCREEN_COUNTER timer_time_limit_converted_int IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -2244.4438 136.8633 34.3203 ELSE SET_CHAR_COORDINATES scplayer -2244.4438 136.8633 34.3203 ENDIF SET_CHAR_HEADING scplayer 90.0 ENDIF PRINT_BIG M_FAIL 5000 1 LOAD_MISSION_AUDIO 1 SOUND_ZER1_EB // Noooooooooo! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE // PRINT_NOW ( ZER2_DB ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF NOT IS_CAR_DEAD rc_playerbaron_zero2 // GET_CAR_ROTATION_VELOCITY rc_playerbaron_zero2 rotation_velocity_zero2_x rotation_velocity_zero2_y rotation_velocity_zero2_z // IF NOT rotation_velocity_zero2_x = 0.0 // SET_CAR_ROTATION_VELOCITY rc_playerbaron_zero2 0.0 0.0 0.0 SET_CAR_FORWARD_SPEED rc_playerbaron_zero2 0.0 ENDIF ENDWHILE REMOVE_RC_BUGGY // WAIT 1000 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE -2245.0264 126.8950 34.3047 WAIT 1000 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE /* DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE */ RETURN ENDIF index_zero2++ ENDWHILE IF flag_is_enemy_van_dead[0] = 1 IF flag_is_enemy_van_dead[1] = 1 IF flag_is_enemy_van_dead[2] = 1 IF flag_is_enemy_van_dead[3] = 1 IF flag_is_enemy_van_dead[4] = 1 flag_transmittor_in_place = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDWHILE ENDIF // CLEAR_ONSCREEN_TIMER timer_time_limit flag_main_sub_function_zero2 = 0 flag_mission_zero2_passed = 0 flag_land_plane_zero2 = 1 flag_help_text = 0 ADD_BLIP_FOR_COORD -2237.31 140.08 57.23 blip_landing_zero2 // [ZER2_EB] LOAD_MISSION_AUDIO 1 SOUND_ZER2_EB // Now get her back home in one piece, before she runs out of fuel! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER2_EB ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER2_EB PRINT_NOW ZER2_41 5000 1// get back to zeros roof RETURN land_plane_zero2: IF NOT IS_CAR_DEAD rc_playerbaron_zero2 GET_CAR_SPEED rc_playerbaron_zero2 speed_rc_playerbaron_zero2 IF speed_rc_playerbaron_zero2 > 1.0 timer_time_limit-=10.0 timer_time_limit_converted_float = timer_time_limit / timer_time_limit_initial timer_time_limit_converted_float*=100.0 timer_time_limit_converted_int =# timer_time_limit_converted_float ENDIF IF IS_BUTTON_PRESSED PAD1 CROSS //speed_rc_playerbaron_zero2 > 1.0 timer_time_limit-=@20.0 timer_time_limit_converted_float = timer_time_limit / timer_time_limit_initial timer_time_limit_converted_float*=100.0 timer_time_limit_converted_int =# timer_time_limit_converted_float ENDIF IF return_city_zero2 = LEVEL_LOSANGELES OR return_city_zero2 = LEVEL_LASVEGAS EXPLODE_CAR rc_playerbaron_zero2 EXPLODE_CAR rc_playerbaron_zero2 ENDIF GET_GAME_TIMER game_timer_zero2 IF NOT LOCATE_CAR_3D rc_playerbaron_zero2 stuck_x_zero2 stuck_y_zero2 stuck_z_zero2 1.5 1.5 1.5 FALSE GET_CAR_COORDINATES rc_playerbaron_zero2 stuck_x_zero2 stuck_y_zero2 stuck_z_zero2 stuck_timer_zero2 = game_timer_zero2 + 4000 flag_self_destruct_zero2 = 0 ENDIF IF LOCATE_CAR_3D rc_playerbaron_zero2 stuck_x_zero2 stuck_y_zero2 stuck_z_zero2 1.5 1.5 1.5 FALSE IF stuck_timer_zero2 < game_timer_zero2 IF help_flags_zero1 > 3 IF flag_self_destruct_zero2 = 0 PRINT_HELP ZER2_4 flag_self_destruct_zero2 = 1 ENDIF IF IS_BUTTON_PRESSED PAD1 CIRCLE OR IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL flag_main_sub_function_zero2 = 0 flag_fly_next_to_transmittor_zero2 = 0 flag_heli_landing_cutscene_zero2 = 0 flag_fly_back_to_player_zero2 = 0 flag_mission_zero2_passed = 0 flag_mission_zero2_failed = 1 SET_PLAYER_CONTROL player1 OFF PRINT_NOW ( ZER2_8 ) 5000 1 // You crashed your plane! PRINT_BIG M_FAIL 5000 1 SET_CAR_HEALTH rc_playerbaron_zero2 1 CLEAR_ONSCREEN_COUNTER timer_time_limit_converted_int IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -2244.4438 136.8633 34.3203 ELSE SET_CHAR_COORDINATES scplayer -2244.4438 136.8633 34.3203 ENDIF SET_CHAR_HEADING scplayer 90.0 ENDIF ADD_EXPLOSION stuck_x_zero2 stuck_y_zero2 stuck_z_zero2 EXPLOSION_GRENADE EXPLODE_CAR rc_playerbaron_zero2 EXPLODE_CAR rc_playerbaron_zero2 EXPLODE_CAR rc_playerbaron_zero2 EXPLODE_CAR rc_playerbaron_zero2 LOAD_MISSION_AUDIO 1 SOUND_ZER1_EC // Noooooooooo! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE REMOVE_RC_BUGGY // WAIT 1000 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE -2245.0264 126.8950 34.3047 WAIT 1000 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN ENDIF ENDIF ENDIF ENDIF IF LOCATE_CAR_3D rc_playerbaron_zero2 -2237.31 140.08 57.23 4.0 4.0 4.0 TRUE SET_PLAYER_CONTROL player1 OFF flag_main_sub_function_zero2 = 0 flag_mission_zero2_passed = 1 flag_land_plane_zero2 = 0 flag_help_text = 0 SET_CAR_ENGINE_ON rc_playerbaron_zero2 FALSE SET_CAR_HEAVY rc_playerbaron_zero2 TRUE PRINT_WITH_NUMBER_BIG M_PASS 5000 5000 1 ADD_SCORE player1 5000 PLAY_MISSION_PASSED_TUNE 1 LOAD_MISSION_AUDIO 1 SOUND_ZER2_FB // The smell, you know that ozone smell, smells like... victory! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER2_FB ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER2_FB LOAD_MISSION_AUDIO 1 SOUND_ZER2_FC //ZER2_FC smells like... victory! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER2_FC ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER2_FC REMOVE_RC_BUGGY CLEAR_ONSCREEN_COUNTER timer_time_limit_converted_int LOAD_SCENE -2245.0264 126.8950 34.3047 IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -2244.4438 136.8633 34.3203 ELSE SET_CHAR_COORDINATES scplayer -2244.4438 136.8633 34.3203 ENDIF SET_CHAR_HEADING scplayer 90.0 ENDIF WAIT 1200 WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN ENDIF ELSE flag_mission_zero2_failed = 1 SET_PLAYER_CONTROL player1 OFF flag_main_sub_function_zero2 = 0 PRINT_BIG M_FAIL 5000 1 TIMERA = 0 // LOAD_SCENE -2245.0264 126.8950 34.3047 IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -2244.4438 136.8633 34.3203 ELSE SET_CHAR_COORDINATES scplayer -2244.4438 136.8633 34.3203 ENDIF SET_CHAR_HEADING scplayer 90.0 ENDIF LOAD_MISSION_AUDIO 1 SOUND_ZER1_EB // Noooooooooo! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE // PRINT_NOW ( ZER2_DB ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF NOT IS_CAR_DEAD rc_playerbaron_zero2 // GET_CAR_ROTATION_VELOCITY rc_playerbaron_zero2 rotation_velocity_zero2_x rotation_velocity_zero2_y rotation_velocity_zero2_z // IF NOT rotation_velocity_zero2_x = 0.0 // SET_CAR_ROTATION_VELOCITY rc_playerbaron_zero2 0.0 0.0 0.0 SET_CAR_FORWARD_SPEED rc_playerbaron_zero2 0.0 ENDIF ENDWHILE REMOVE_RC_BUGGY // WAIT 1000 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE -2245.0264 126.8950 34.3047 WAIT 1000 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PRINT_NOW ( ZER2_8 ) 10000 1 // You crashed your plane! RETURN ENDIF IF flag_zeros_fuel_comments = 0 // IF timer_time_limit <= 180000 IF timer_time_limit_converted_int <= 50 flag_zeros_fuel_comments = 1 LOAD_MISSION_AUDIO 1 SOUND_ZER2_DA // [ZER2_DA] Watch your fuel, Carl, only half a tank left! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER2_DA ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER2_DA ENDIF ENDIF IF flag_zeros_fuel_comments = 1 // IF timer_time_limit <= 50000 IF timer_time_limit_converted_int <= 20 flag_zeros_fuel_comments = 2 LOAD_MISSION_AUDIO 1 SOUND_ZER2_DB // [ZER2_DA] Watch your fuel, Carl, only half a tank left! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PRINT_NOW ( ZER2_DB ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_THIS_PRINT ZER2_DB ENDIF ENDIF // IF timer_time_limit <=0 IF timer_time_limit_converted_int <= 0 IF NOT IS_CAR_DEAD rc_playerbaron_zero2 SET_CAR_ENGINE_ON rc_playerbaron_zero2 FALSE SET_CAR_HEAVY rc_playerbaron_zero2 TRUE ENDIF TIMERA = 0 flag_main_sub_function_zero2 = 0 flag_fly_next_to_transmittor_zero2 = 0 flag_heli_landing_cutscene_zero2 = 0 flag_fly_back_to_player_zero2 = 0 flag_mission_zero2_passed = 0 flag_mission_zero2_failed = 1 SET_PLAYER_CONTROL player1 OFF PRINT_NOW ZER2_42 5000 1 // ran out of time PRINT_BIG M_FAIL 5000 1 TIMERA = 0 CLEAR_ONSCREEN_COUNTER timer_time_limit_converted_int IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -2244.4438 136.8633 34.3203 ELSE SET_CHAR_COORDINATES scplayer -2244.4438 136.8633 34.3203 ENDIF SET_CHAR_HEADING scplayer 90.0 ENDIF LOAD_MISSION_AUDIO 1 SOUND_ZER1_EC // Noooooooooo! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE // PRINT_NOW ( ZER2_DB ) 10000 1 PLAY_MISSION_AUDIO 1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF NOT IS_CAR_DEAD rc_playerbaron_zero2 SET_CAR_FORWARD_SPEED rc_playerbaron_zero2 0.0 ENDIF ENDWHILE // CLEAR_THIS_PRINT ZER2_DB /* DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE */ // WAIT 1000 REMOVE_RC_BUGGY SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE -2245.0264 126.8950 34.3047 WAIT 1000 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // WAIT 2500 /* DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE */ RETURN ENDIF RETURN // ***************************** // MISSION PASSED // ***************************** mission_zero2_passed: //flag_pp1_mission1_passed = 1 // SET_PLAYER_CONTROL player1 ON CLEAR_WANTED_LEVEL player1 REGISTER_MISSION_PASSED ( zero_2 ) PLAYER_MADE_PROGRESS 1 flag_zero_mission_counter++ //START_NEW_SCRIPT pp1_mission_loop RETURN // ***************************** // mission failed // ***************************** mission_zero2_failed: // PRINT_BIG M_FAIL 5000 1 RETURN // ***************************** // mission cleanup // ***************************** mission_cleanup_zero2: DISABLE_ALL_ENTRY_EXITS FALSE CAMERA_RESET_NEW_SCRIPTABLES DISPLAY_CAR_NAMES TRUE IF IS_PLAYER_PLAYING Player1 SET_PLAYER_CONTROL player1 ON IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -2244.4438 136.8633 34.3203 SET_CHAR_HEADING scplayer 90.0 ENDIF ENDIF flag_player_on_mission = 0 SET_POLICE_IGNORE_PLAYER player1 OFF IF NOT IS_CAR_DEAD rc_van_zero2 SET_CAR_HEALTH rc_van_zero2 300 SET_LOAD_COLLISION_FOR_CAR_FLAG rc_van_zero2 TRUE SET_CAR_PROOFS rc_van_zero2 FALSE FALSE FALSE FALSE FALSE ENDIF MARK_CAR_AS_NO_LONGER_NEEDED rc_van_zero2 RELEASE_WEATHER REMOVE_BLIP blip_landing_zero2 DELETE_CAR car_enemy_vans_zero2[0] DELETE_CAR car_enemy_vans_zero2[1] DELETE_CAR car_enemy_vans_zero2[2] DELETE_CAR car_enemy_vans_zero2[3] DELETE_CAR car_enemy_vans_zero2[4] DELETE_CHAR char_3_buddy_with_MICRO_UZI[0] DELETE_CHAR char_3_buddy_with_MICRO_UZI[3] REMOVE_BLIP blip_rctiger_zero2[0] REMOVE_BLIP blip_rctiger_zero2[1] REMOVE_BLIP blip_rctiger_zero2[2] REMOVE_BLIP blip_rctiger_zero2[3] REMOVE_BLIP blip_rctiger_zero2[4] // DELETE_CAR rc_cutscene_heli_zero2 REMOVE_RC_BUGGY MARK_MODEL_AS_NO_LONGER_NEEDED topfun MARK_MODEL_AS_NO_LONGER_NEEDED rcbaron MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED mtbike MARK_MODEL_AS_NO_LONGER_NEEDED sanchez UNLOAD_SPECIAL_CHARACTER 1 REMOVE_CHAR_ELEGANTLY char_zero_zero2 CLEAR_ONSCREEN_COUNTER timer_time_limit_converted_int GET_GAME_TIMER timer_mobile_start CLEAR_PRINTS MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : // AUTHOR : Neil // DESICRIPTION : // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** { // ************************************************************************************************************* // GENERAL INITIALISATION - Every level requires this // ************************************************************************************************************* SCRIPT_NAME ZERO4 GOSUB mission_start_ZERO4 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_ZERO4 ENDIF GOSUB mission_cleanup_ZERO4 MISSION_END mission_start_ZERO4: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 // general variables that are in every mission - DON'T DECLARE MISSION SPECIFIC VARIABLES HERE LVAR_INT m_stage LVAR_INT m_goals LVAR_INT m_passed LVAR_INT m_failed LVAR_INT m_quit LVAR_INT m_frame_num LVAR_INT m_this_frame_time LVAR_INT m_last_frame_time LVAR_INT m_time_diff // commonly used temporary variables LVAR_INT temp_int temp_int2 temp_int3 LVAR_FLOAT temp_float temp_float2 temp_float3 LVAR_INT temp_seq LVAR_FLOAT vec_x vec_y vec_z LVAR_FLOAT vec2_x vec2_y vec2_z LVAR_FLOAT x2 y2 z2 LVAR_FLOAT x3 y3 z3 // commonly used flags LVAR_INT dialogue_flag LVAR_INT help_flag // commonly used timers LVAR_INT dialogue_timer LVAR_INT help_timer m_stage = 0 m_goals = 0 m_passed = 0 m_failed = 0 m_quit = 0 dialogue_flag = 0 help_flag = 0 dialogue_timer = 0 help_timer = 0 TIMERA = 0 TIMERB = 0 mission_loop_ZERO4: WAIT 0 // ************************************************************************************************************* // DEBUG TOOLS // ************************************************************************************************************* // Display mission stage variables for debug LVAR_INT display_debug VAR_INT ZERO4_view_debug[8] IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_SPACE display_debug++ IF display_debug > 8 display_debug = 0 ENDIF CLEAR_ALL_VIEW_VARIABLES ENDIF IF display_debug = 1 // system variables ZERO4_view_debug[0] = m_stage ZERO4_view_debug[1] = m_goals ZERO4_view_debug[2] = dialogue_flag ZERO4_view_debug[3] = dialogue_timer ZERO4_view_debug[4] = help_flag ZERO4_view_debug[5] = help_timer ZERO4_view_debug[6] = TIMERA ZERO4_view_debug[7] = TIMERB VIEW_INTEGER_VARIABLE ZERO4_view_debug[0] m_stage VIEW_INTEGER_VARIABLE ZERO4_view_debug[1] m_goals VIEW_INTEGER_VARIABLE ZERO4_view_debug[2] dialogue_flag VIEW_INTEGER_VARIABLE ZERO4_view_debug[3] dialogue_timer VIEW_INTEGER_VARIABLE ZERO4_view_debug[4] help_flag VIEW_INTEGER_VARIABLE ZERO4_view_debug[5] help_timer VIEW_INTEGER_VARIABLE ZERO4_view_debug[6] TIMERA VIEW_INTEGER_VARIABLE ZERO4_view_debug[7] TIMERB ENDIF IF display_debug = 2 ZERO4_view_debug[0] = pcar_progress ZERO4_view_debug[1] = pcar_lives_left ZERO4_view_debug[2] = first_bridge ZERO4_view_debug[3] = second_bridge ZERO4_view_debug[4] = first_bridge_laid ZERO4_view_debug[5] = second_bridge_laid ZERO4_view_debug[6] = first_bridge_plank ZERO4_view_debug[7] = second_bridge_plank VIEW_INTEGER_VARIABLE ZERO4_view_debug[0] pcar_progress VIEW_INTEGER_VARIABLE ZERO4_view_debug[1] pcar_lives_left VIEW_INTEGER_VARIABLE ZERO4_view_debug[2] first_bridge VIEW_INTEGER_VARIABLE ZERO4_view_debug[3] second_bridge VIEW_INTEGER_VARIABLE ZERO4_view_debug[4] first_bridge_laid VIEW_INTEGER_VARIABLE ZERO4_view_debug[5] second_bridge_laid VIEW_INTEGER_VARIABLE ZERO4_view_debug[6] first_bridge_plank VIEW_INTEGER_VARIABLE ZERO4_view_debug[7] second_bridge_plank ENDIF IF display_debug = 3 ZERO4_view_debug[0] = pcar_is_paused ZERO4_view_debug[1] = pcar_is_obstructed ZERO4_view_debug[2] = bomb_is_armed ZERO4_view_debug[3] = heli_is_carrying ZERO4_view_debug[4] = circle_is_pressed ZERO4_view_debug[5] = rc_bomb_timer ZERO4_view_debug[6] = pheli_pickup_timer ZERO4_view_debug[7] = oheli_flag VIEW_INTEGER_VARIABLE ZERO4_view_debug[0] pcar_is_paused VIEW_INTEGER_VARIABLE ZERO4_view_debug[1] pcar_is_obstructed VIEW_INTEGER_VARIABLE ZERO4_view_debug[2] bomb_is_armed VIEW_INTEGER_VARIABLE ZERO4_view_debug[3] heli_is_carrying VIEW_INTEGER_VARIABLE ZERO4_view_debug[4] circle_is_pressed VIEW_INTEGER_VARIABLE ZERO4_view_debug[5] rc_bomb_timer VIEW_INTEGER_VARIABLE ZERO4_view_debug[6] pheli_pickup_timer VIEW_INTEGER_VARIABLE ZERO4_view_debug[7] oheli_flag ENDIF IF display_debug = 4 ZERO4_view_debug[0] = oheli_rock ZERO4_view_debug[1] = oheli_goto ZERO4_view_debug[2] = pheli_lives ZERO4_view_debug[3] = otank_flag[0] ZERO4_view_debug[4] = otank_flag[1] ZERO4_view_debug[5] = otank_flag[2] ZERO4_view_debug[6] = respawned_tanks ZERO4_view_debug[7] = z4_pcar_health VIEW_INTEGER_VARIABLE ZERO4_view_debug[0] oheli_rock VIEW_INTEGER_VARIABLE ZERO4_view_debug[1] oheli_goto VIEW_INTEGER_VARIABLE ZERO4_view_debug[2] pheli_lives VIEW_INTEGER_VARIABLE ZERO4_view_debug[3] otank_flag[0] VIEW_INTEGER_VARIABLE ZERO4_view_debug[4] otank_flag[1] VIEW_INTEGER_VARIABLE ZERO4_view_debug[5] otank_flag[2] VIEW_INTEGER_VARIABLE ZERO4_view_debug[6] respawned_tanks VIEW_INTEGER_VARIABLE ZERO4_view_debug[7] z4_pcar_health ENDIF IF display_debug = 5 ZERO4_view_debug[0] = otank_goto[0] ZERO4_view_debug[1] = otank_goto[1] ZERO4_view_debug[2] = otank_goto[2] ZERO4_view_debug[3] = last_health ZERO4_view_debug[4] = bandit_taking_damage ZERO4_view_debug[5] = pcar_timer ZERO4_view_debug[6] = pcar_halted ZERO4_view_debug[7] = pcar_R3_pressed VIEW_INTEGER_VARIABLE ZERO4_view_debug[0] otank_goto[0] VIEW_INTEGER_VARIABLE ZERO4_view_debug[1] otank_goto[1] VIEW_INTEGER_VARIABLE ZERO4_view_debug[2] otank_goto[2] VIEW_INTEGER_VARIABLE ZERO4_view_debug[3] last_health VIEW_INTEGER_VARIABLE ZERO4_view_debug[4] bandit_taking_damage VIEW_INTEGER_VARIABLE ZERO4_view_debug[5] pcar_timer VIEW_INTEGER_VARIABLE ZERO4_view_debug[6] pcar_halted VIEW_INTEGER_VARIABLE ZERO4_view_debug[7] pcar_R3_pressed ENDIF IF display_debug = 6 ZERO4_view_debug[0] = otank_target[0] ZERO4_view_debug[1] = otank_target[1] ZERO4_view_debug[2] = otank_target[2] ZERO4_view_debug[3] = carried_object ZERO4_view_debug[4] = zero4_timer ZERO4_view_debug[5] = get_plank1 ZERO4_view_debug[6] = get_plank2 // ZERO4_view_debug[7] = VIEW_INTEGER_VARIABLE ZERO4_view_debug[0] otank_target[0] VIEW_INTEGER_VARIABLE ZERO4_view_debug[1] otank_target[1] VIEW_INTEGER_VARIABLE ZERO4_view_debug[2] otank_target[2] VIEW_INTEGER_VARIABLE ZERO4_view_debug[3] carried_object VIEW_INTEGER_VARIABLE ZERO4_view_debug[4] zero4_timer VIEW_INTEGER_VARIABLE ZERO4_view_debug[5] get_plank1 VIEW_INTEGER_VARIABLE ZERO4_view_debug[6] get_plank2 // VIEW_INTEGER_VARIABLE ZERO4_view_debug[7] ENDIF IF display_debug = 7 ZERO4_view_debug[0] = first_pickup_help ZERO4_view_debug[1] = first_time_stuck_at_river ZERO4_view_debug[2] = plank_blip ZERO4_view_debug[3] = stuck_at_river_dialogue ZERO4_view_debug[4] = obstruct_audio1 ZERO4_view_debug[5] = obstruct_audio2 ZERO4_view_debug[6] = play_first_time_blocked_audio ZERO4_view_debug[7] = bomb_blip VIEW_INTEGER_VARIABLE ZERO4_view_debug[0] first_pickup_help VIEW_INTEGER_VARIABLE ZERO4_view_debug[1] first_time_stuck_at_river VIEW_INTEGER_VARIABLE ZERO4_view_debug[2] plank_blip VIEW_INTEGER_VARIABLE ZERO4_view_debug[3] stuck_at_river_dialogue VIEW_INTEGER_VARIABLE ZERO4_view_debug[4] obstruct_audio1 VIEW_INTEGER_VARIABLE ZERO4_view_debug[5] obstruct_audio2 VIEW_INTEGER_VARIABLE ZERO4_view_debug[6] play_first_time_blocked_audio VIEW_INTEGER_VARIABLE ZERO4_view_debug[7] bomb_blip ENDIF IF display_debug = 8 ZERO4_view_debug[0] = first_time_taking_damage_from_tank ZERO4_view_debug[1] = bomb_tank_dialogue ZERO4_view_debug[2] = dead_dialogue ZERO4_view_debug[3] = nearly_dead_dialogue ZERO4_view_debug[4] = stuck_at_river // ZERO4_view_debug[5] = obstruct_audio2 // ZERO4_view_debug[6] = play_first_time_blocked_audio // ZERO4_view_debug[7] = bomb_blip VIEW_INTEGER_VARIABLE ZERO4_view_debug[0] first_time_taking_damage_from_tank VIEW_INTEGER_VARIABLE ZERO4_view_debug[1] bomb_tank_dialogue VIEW_INTEGER_VARIABLE ZERO4_view_debug[2] dead_dialogue VIEW_INTEGER_VARIABLE ZERO4_view_debug[3] nearly_dead_dialogue VIEW_INTEGER_VARIABLE ZERO4_view_debug[4] stuck_at_river // VIEW_INTEGER_VARIABLE ZERO4_view_debug[5] obstruct_audio2 // VIEW_INTEGER_VARIABLE ZERO4_view_debug[6] play_first_time_blocked_audio // VIEW_INTEGER_VARIABLE ZERO4_view_debug[7] bomb_blip ENDIF // Quit level - no mission pass/fail - cleanup only IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ESC m_quit = 1 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S GOSUB z4_mission_pass_audio m_passed = 1 ENDIF // Pause level LVAR_INT pause_level IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_P IF pause_level = 0 pause_level = 1 WRITE_DEBUG LEVEL_PAUSED ELSE pause_level = 0 WRITE_DEBUG LEVEL_UNPAUSED ENDIF ENDIF IF pause_level = 1 GOTO end_of_main_loop_ZERO4 ENDIF // end of debug tools ************** // Frame counter m_frame_num++ IF m_frame_num > 9 m_frame_num = 0 ENDIF // Additional Timers GET_GAME_TIMER m_this_frame_time m_time_diff = m_this_frame_time - m_last_frame_time m_last_frame_time = m_this_frame_time dialogue_timer += m_time_diff help_timer += m_time_diff rc_bomb_timer += m_time_diff pheli_pickup_timer += m_time_diff otank_timer[0] += m_time_diff otank_timer[1] += m_time_diff otank_timer[2] += m_time_diff pcar_timer += m_time_diff obstruction_timer += m_time_diff invincible_timer+= m_time_diff // ************************************************************************************************************* // INITIALISATION - SPECIFIC TO THIS LEVEL // ************************************************************************************************************* IF m_stage = 0 // fake creates IF m_goals = -1 CREATE_CAR PONY 0.0 0.0 0.0 pcar CREATE_CAR PONY 0.0 0.0 0.0 hidden_car CREATE_CAR PONY 0.0 0.0 0.0 pheli CREATE_CAR PONY 0.0 0.0 0.0 winch_car CREATE_OBJECT BARREL2 0.0 0.0 0.0 rock[0] CREATE_OBJECT BARREL2 0.0 0.0 0.0 plank[0] CREATE_OBJECT BARREL2 0.0 0.0 0.0 rc_bomb CREATE_OBJECT BARREL2 0.0 0.0 0.0 carried_object CREATE_OBJECT BARREL2 0.0 0.0 0.0 winch_object CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 winch_ped CREATE_CAR PONY 0.0 0.0 0.0 carried_car CREATE_CAR PONY 0.0 0.0 0.0 pheli_old ENDIF // cars LVAR_INT pcar LVAR_INT hidden_car LVAR_INT pheli LVAR_INT oheli LVAR_INT otank[3] LVAR_INT winch_car LVAR_INT carried_car // objects LVAR_INT rock[10] LVAR_INT plank[5] LVAR_INT rc_bomb LVAR_INT winch_object LVAR_INT pmagnet LVAR_INT omagnet // ped LVAR_INT winch_ped // blips LVAR_INT pcar_blip LVAR_INT oheli_blip LVAR_INT otank_blip[3] // timers LVAR_INT rc_bomb_timer LVAR_INT pheli_pickup_timer LVAR_INT otank_timer[3] LVAR_INT pcar_timer VAR_INT zero4_timer LVAR_INT obstruction_timer LVAR_INT invincible_timer // flags LVAR_INT pcar_progress LVAR_INT pcar_lives_left LVAR_INT first_bridge LVAR_INT second_bridge LVAR_INT bride LVAR_INT first_bridge_laid LVAR_INT second_bridge_laid LVAR_INT first_bridge_plank LVAR_INT second_bridge_plank LVAR_INT pcar_is_paused LVAR_INT pcar_is_obstructed LVAR_INT bomb_is_armed LVAR_INT heli_is_carrying LVAR_INT circle_is_pressed LVAR_INT oheli_flag LVAR_INT oheli_rock LVAR_INT oheli_goto LVAR_INT pheli_lives LVAR_INT otank_flag[3] LVAR_INT otank_goto[3] LVAR_INT respawned_tanks VAR_INT z4_pcar_health LVAR_INT last_health LVAR_INT bandit_taking_damage LVAR_INT pcar_halted LVAR_INT pcar_R3_pressed LVAR_INT otank_target[3] LVAR_INT carried_object LVAR_INT help_text_flag[12] LVAR_INT get_plank1 LVAR_INT get_plank2 LVAR_INT obstruction_type LVAR_INT obstruction_count LVAR_INT first_pickup_help LVAR_INT first_time_stuck_at_river LVAR_INT plank_blip LVAR_INT stuck_at_river_dialogue LVAR_INT obstruct_audio1 LVAR_INT obstruct_audio2 LVAR_INT play_first_time_blocked_audio LVAR_INT bomb_blip LVAR_INT first_time_taking_damage_from_tank LVAR_INT bomb_tank_dialogue LVAR_INT dead_dialogue LVAR_INT nearly_dead_dialogue LVAR_INT stuck_at_river LVAR_INT tanks_are_all_dead // set flags pcar_progress = 0 pcar_lives_left = 0 first_bridge = 0 second_bridge = 0 first_bridge_laid = 0 second_bridge_laid = 0 first_bridge_plank = -1 second_bridge_plank = -1 pcar_is_paused = 0 pcar_is_obstructed = 0 bomb_is_armed = 0 heli_is_carrying = 0 circle_is_pressed = 0 oheli_flag = 0 oheli_rock = 0 oheli_goto = 0 pheli_lives = 0 otank_flag[0] = 99 otank_flag[1] = 99 otank_flag[2] = 99 otank_goto[0] = 0 otank_goto[1] = 0 otank_goto[2] = 0 respawned_tanks = 0 z4_pcar_health = 0 last_health = 0 bandit_taking_damage = 0 pcar_halted = 0 pcar_R3_pressed = 0 otank_target[0] = 0 otank_target[1] = 0 otank_target[2] = 0 carried_object = 0 get_plank1 = 0 get_plank2 = 0 temp_int = 0 WHILE temp_int < 12 help_text_flag[temp_int] = 0 temp_int++ ENDWHILE obstruction_type = 0 obstruction_count = 0 carried_car = 0 first_pickup_help = 0 first_time_stuck_at_river = 0 plank_blip = 0 stuck_at_river_dialogue = 0 obstruct_audio1 = 0 obstruct_audio2 = 0 play_first_time_blocked_audio = 0 bomb_blip = 0 first_time_taking_damage_from_tank = 0 bomb_tank_dialogue = 0 dead_dialogue = 0 nearly_dead_dialogue = 0 stuck_at_river = 0 control_help_flag = 0 tanks_are_all_dead = 0 // route respawned tanks goto LVAR_FLOAT otank_route1_x[2] otank_route1_y[2] otank_route1_z[2] otank_route1_x[0] = -1115.1217 otank_route1_y[0] = 1029.2604 otank_route1_z[0] = 1342.4828 otank_route1_x[1] = -1106.9159 otank_route1_y[1] = 1056.4030 otank_route1_z[1] = 1342.0526 LVAR_FLOAT otank_route2_x[2] otank_route2_y[2] otank_route2_z[2] otank_route2_x[0] = -1115.1217 otank_route2_y[0] = 1029.2604 otank_route2_z[0] = 1342.4828 otank_route2_x[1] = -1098.9312 otank_route2_y[1] = 1070.1931 otank_route2_z[1] = 1341.4669 LVAR_FLOAT otank_route3_x[2] otank_route3_y[2] otank_route3_z[2] otank_route3_x[0] = -1115.1217 otank_route3_y[0] = 1029.2604 otank_route3_z[0] = 342.4828 otank_route3_x[1] = -1098.2572 otank_route3_y[1] = 1063.3679 otank_route3_z[1] = 1341.7911 // coordinates LVAR_FLOAT pcar_path_x[117] LVAR_FLOAT pcar_path_y[117] LVAR_FLOAT pcar_path_z[117] // set coordinates PCAR_PATH_X[0] = -975.6996 PCAR_PATH_Y[0] = 1061.1622 PCAR_PATH_Z[0] = 1344.7998 PCAR_PATH_X[1] = -978.6938 PCAR_PATH_Y[1] = 1061.1626 PCAR_PATH_Z[1] = 1344.5541 PCAR_PATH_X[2] = -981.6267 PCAR_PATH_Y[2] = 1061.5938 PCAR_PATH_Z[2] = 1343.6774 PCAR_PATH_X[3] = -984.4323 PCAR_PATH_Y[3] = 1062.1938 PCAR_PATH_Z[3] = 1342.6601 PCAR_PATH_X[4] = -987.3215 PCAR_PATH_Y[4] = 1063.0416 PCAR_PATH_Z[4] = 1341.9409 PCAR_PATH_X[5] = -990.1523 PCAR_PATH_Y[5] = 1064.2087 PCAR_PATH_Z[5] = 1341.8469 PCAR_PATH_X[6] = -992.0640 PCAR_PATH_Y[6] = 1066.6281 PCAR_PATH_Z[6] = 1341.6920 PCAR_PATH_X[7] = -994.1041 PCAR_PATH_Y[7] = 1068.8895 PCAR_PATH_Z[7] = 1341.4738 PCAR_PATH_X[8] = -996.1589 PCAR_PATH_Y[8] = 1071.1047 PCAR_PATH_Z[8] = 1341.2610 PCAR_PATH_X[9] = -998.0826 PCAR_PATH_Y[9] = 1073.4133 PCAR_PATH_Z[9] = 1341.2155 PCAR_PATH_X[10] = -1000.1383 PCAR_PATH_Y[10] = 1075.6621 PCAR_PATH_Z[10] = 1341.3320 PCAR_PATH_X[11] = -1002.8577 PCAR_PATH_Y[11] = 1076.9185 PCAR_PATH_Z[11] = 1341.7087 PCAR_PATH_X[12] = -1005.5181 PCAR_PATH_Y[12] = 1078.2488 PCAR_PATH_Z[12] = 1342.2286 PCAR_PATH_X[13] = -1008.5601 PCAR_PATH_Y[13] = 1078.8893 PCAR_PATH_Z[13] = 1342.3387 PCAR_PATH_X[14] = -1011.5899 PCAR_PATH_Y[14] = 1079.1106 PCAR_PATH_Z[14] = 1342.3463 PCAR_PATH_X[15] = -1014.6602 PCAR_PATH_Y[15] = 1079.3392 PCAR_PATH_Z[15] = 1342.3180 PCAR_PATH_X[16] = -1017.6959 PCAR_PATH_Y[16] = 1079.6743 PCAR_PATH_Z[16] = 1342.4577 PCAR_PATH_X[17] = -1020.6663 PCAR_PATH_Y[17] = 1080.4332 PCAR_PATH_Z[17] = 1342.7176 PCAR_PATH_X[18] = -1023.6085 PCAR_PATH_Y[18] = 1081.3638 PCAR_PATH_Z[18] = 1342.5897 PCAR_PATH_X[19] = -1026.4972 PCAR_PATH_Y[19] = 1082.2883 PCAR_PATH_Z[19] = 1342.4518 PCAR_PATH_X[20] = -1029.5338 PCAR_PATH_Y[20] = 1082.4457 PCAR_PATH_Z[20] = 1342.3143 PCAR_PATH_X[21] = -1031.7272 PCAR_PATH_Y[21] = 1080.3801 PCAR_PATH_Z[21] = 1342.1692 PCAR_PATH_X[22] = -1031.4497 PCAR_PATH_Y[22] = 1077.3828 PCAR_PATH_Z[22] = 1342.2589 PCAR_PATH_X[23] = -1030.5564 PCAR_PATH_Y[23] = 1074.5190 PCAR_PATH_Z[23] = 1342.3673 PCAR_PATH_X[24] = -1028.4760 PCAR_PATH_Y[24] = 1072.2759 PCAR_PATH_Z[24] = 1342.5469 PCAR_PATH_X[25] = -1026.1198 PCAR_PATH_Y[25] = 1070.4523 PCAR_PATH_Z[25] = 1342.9336 PCAR_PATH_X[26] = -1023.3447 PCAR_PATH_Y[26] = 1069.2969 PCAR_PATH_Z[26] = 1342.8616 PCAR_PATH_X[27] = -1020.9244 PCAR_PATH_Y[27] = 1067.4546 PCAR_PATH_Z[27] = 1342.6794 PCAR_PATH_X[28] = -1019.8083 PCAR_PATH_Y[28] = 1064.6359 PCAR_PATH_Z[28] = 1342.3670 PCAR_PATH_X[29] = -1019.4981 PCAR_PATH_Y[29] = 1061.6036 PCAR_PATH_Z[29] = 1342.1503 PCAR_PATH_X[30] = -1020.3516 PCAR_PATH_Y[30] = 1058.7068 PCAR_PATH_Z[30] = 1342.0027 PCAR_PATH_X[31] = -1022.2053 PCAR_PATH_Y[31] = 1056.2479 PCAR_PATH_Z[31] = 1341.9458 PCAR_PATH_X[32] = -1024.6542 PCAR_PATH_Y[32] = 1054.3960 PCAR_PATH_Z[32] = 1342.0289 PCAR_PATH_X[33] = -1026.9489 PCAR_PATH_Y[33] = 1052.4628 PCAR_PATH_Z[33] = 1341.6717 PCAR_PATH_X[34] = -1029.5352 PCAR_PATH_Y[34] = 1050.9619 PCAR_PATH_Z[34] = 1341.4208 PCAR_PATH_X[35] = -1032.2040 PCAR_PATH_Y[35] = 1049.5392 PCAR_PATH_Z[35] = 1341.3980 PCAR_PATH_X[36] = -1035.1458 PCAR_PATH_Y[36] = 1048.8221 PCAR_PATH_Z[36] = 1341.1673 PCAR_PATH_X[37] = -1038.1306 PCAR_PATH_Y[37] = 1048.2689 PCAR_PATH_Z[37] = 1340.8365 PCAR_PATH_X[38] = -1040.2900 PCAR_PATH_Y[38] = 1046.1638 PCAR_PATH_Z[38] = 1340.9749 PCAR_PATH_X[39] = -1042.1487 PCAR_PATH_Y[39] = 1043.7614 PCAR_PATH_Z[39] = 1341.2780 PCAR_PATH_X[40] = -1043.8267 PCAR_PATH_Y[40] = 1041.2518 PCAR_PATH_Z[40] = 1341.3982 PCAR_PATH_X[41] = -1045.2853 PCAR_PATH_Y[41] = 1038.5728 PCAR_PATH_Z[41] = 1341.5625 PCAR_PATH_X[42] = -1047.2416 PCAR_PATH_Y[42] = 1036.2831 PCAR_PATH_Z[42] = 1341.9514 PCAR_PATH_X[43] = -1049.5583 PCAR_PATH_Y[43] = 1034.3478 PCAR_PATH_Z[43] = 1342.0216 PCAR_PATH_X[44] = -1052.5813 PCAR_PATH_Y[44] = 1034.2957 PCAR_PATH_Z[44] = 1342.2183 PCAR_PATH_X[45] = -1054.6237 PCAR_PATH_Y[45] = 1036.5505 PCAR_PATH_Z[45] = 1342.3238 PCAR_PATH_X[46] = -1055.7263 PCAR_PATH_Y[46] = 1039.3378 PCAR_PATH_Z[46] = 1342.6547 PCAR_PATH_X[47] = -1056.5907 PCAR_PATH_Y[47] = 1042.2220 PCAR_PATH_Z[47] = 1343.0162 PCAR_PATH_X[48] = -1057.6398 PCAR_PATH_Y[48] = 1045.1260 PCAR_PATH_Z[48] = 1343.0706 PCAR_PATH_X[49] = -1058.8668 PCAR_PATH_Y[49] = 1047.8827 PCAR_PATH_Z[49] = 1343.2779 PCAR_PATH_X[50] = -1059.9664 PCAR_PATH_Y[50] = 1050.7065 PCAR_PATH_Z[50] = 1343.3351 PCAR_PATH_X[51] = -1062.2821 PCAR_PATH_Y[51] = 1052.6555 PCAR_PATH_Z[51] = 1342.9733 PCAR_PATH_X[52] = -1065.3123 PCAR_PATH_Y[52] = 1052.2570 PCAR_PATH_Z[52] = 1342.9871 PCAR_PATH_X[53] = -1067.4132 PCAR_PATH_Y[53] = 1050.1033 PCAR_PATH_Z[53] = 1343.3376 PCAR_PATH_X[54] = -1069.6801 PCAR_PATH_Y[54] = 1048.0607 PCAR_PATH_Z[54] = 1343.3031 PCAR_PATH_X[55] = -1072.3973 PCAR_PATH_Y[55] = 1046.4901 PCAR_PATH_Z[55] = 1343.2991 PCAR_PATH_X[56] = -1074.8439 PCAR_PATH_Y[56] = 1044.6208 PCAR_PATH_Z[56] = 1343.2778 PCAR_PATH_X[57] = -1077.2791 PCAR_PATH_Y[57] = 1042.8630 PCAR_PATH_Z[57] = 1343.3094 PCAR_PATH_X[58] = -1080.0896 PCAR_PATH_Y[58] = 1041.3958 PCAR_PATH_Z[58] = 1343.3120 PCAR_PATH_X[59] = -1082.9011 PCAR_PATH_Y[59] = 1039.9681 PCAR_PATH_Z[59] = 1343.1588 PCAR_PATH_X[60] = -1085.7234 PCAR_PATH_Y[60] = 1038.9727 PCAR_PATH_Z[60] = 1342.7474 PCAR_PATH_X[61] = -1088.6931 PCAR_PATH_Y[61] = 1038.2444 PCAR_PATH_Z[61] = 1342.4909 PCAR_PATH_X[62] = -1091.7440 PCAR_PATH_Y[62] = 1038.0497 PCAR_PATH_Z[62] = 1342.3886 PCAR_PATH_X[63] = -1094.6344 PCAR_PATH_Y[63] = 1038.8562 PCAR_PATH_Z[63] = 1342.2133 PCAR_PATH_X[64] = -1096.4684 PCAR_PATH_Y[64] = 1041.2861 PCAR_PATH_Z[64] = 1342.3533 PCAR_PATH_X[65] = -1095.8972 PCAR_PATH_Y[65] = 1044.2391 PCAR_PATH_Z[65] = 1342.3862 PCAR_PATH_X[66] = -1094.4073 PCAR_PATH_Y[66] = 1046.8625 PCAR_PATH_Z[66] = 1342.3028 PCAR_PATH_X[67] = -1092.6156 PCAR_PATH_Y[67] = 1049.3525 PCAR_PATH_Z[67] = 1342.1440 PCAR_PATH_X[68] = -1090.7954 PCAR_PATH_Y[68] = 1051.8524 PCAR_PATH_Z[68] = 1342.0356 PCAR_PATH_X[69] = -1089.0366 PCAR_PATH_Y[69] = 1054.2889 PCAR_PATH_Z[69] = 1341.9242 PCAR_PATH_X[70] = -1087.1306 PCAR_PATH_Y[70] = 1056.6799 PCAR_PATH_Z[70] = 1341.9632 PCAR_PATH_X[71] = -1084.6295 PCAR_PATH_Y[71] = 1058.4758 PCAR_PATH_Z[71] = 1342.0459 PCAR_PATH_X[72] = -1082.0255 PCAR_PATH_Y[72] = 1060.0588 PCAR_PATH_Z[72] = 1342.0702 PCAR_PATH_X[73] = -1079.6796 PCAR_PATH_Y[73] = 1061.9845 PCAR_PATH_Z[73] = 1342.1606 PCAR_PATH_X[74] = -1077.3823 PCAR_PATH_Y[74] = 1064.0586 PCAR_PATH_Z[74] = 1342.0536 PCAR_PATH_X[75] = -1075.0227 PCAR_PATH_Y[75] = 1066.0609 PCAR_PATH_Z[75] = 1341.9560 PCAR_PATH_X[76] = -1072.5444 PCAR_PATH_Y[76] = 1067.7711 PCAR_PATH_Z[76] = 1341.6756 PCAR_PATH_X[77] = -1069.9336 PCAR_PATH_Y[77] = 1069.3997 PCAR_PATH_Z[77] = 1341.4638 PCAR_PATH_X[78] = -1067.3918 PCAR_PATH_Y[78] = 1071.0668 PCAR_PATH_Z[78] = 1340.9401 PCAR_PATH_X[79] = -1065.1719 PCAR_PATH_Y[79] = 1073.2172 PCAR_PATH_Z[79] = 1340.9801 PCAR_PATH_X[80] = -1063.0837 PCAR_PATH_Y[80] = 1075.4364 PCAR_PATH_Z[80] = 1341.2653 PCAR_PATH_X[81] = -1061.7411 PCAR_PATH_Y[81] = 1078.1583 PCAR_PATH_Z[81] = 1341.5075 PCAR_PATH_X[82] = -1060.9280 PCAR_PATH_Y[82] = 1081.1110 PCAR_PATH_Z[82] = 1341.7047 PCAR_PATH_X[83] = -1059.8513 PCAR_PATH_Y[83] = 1083.9655 PCAR_PATH_Z[83] = 1341.7174 PCAR_PATH_X[84] = -1059.0964 PCAR_PATH_Y[84] = 1086.9288 PCAR_PATH_Z[84] = 1341.7729 PCAR_PATH_X[85] = -1059.4644 PCAR_PATH_Y[85] = 1089.9081 PCAR_PATH_Z[85] = 1341.8876 PCAR_PATH_X[86] = -1061.6564 PCAR_PATH_Y[86] = 1092.0059 PCAR_PATH_Z[86] = 1342.1178 PCAR_PATH_X[87] = -1064.4136 PCAR_PATH_Y[87] = 1093.1716 PCAR_PATH_Z[87] = 1342.3784 PCAR_PATH_X[88] = -1067.3962 PCAR_PATH_Y[88] = 1093.7235 PCAR_PATH_Z[88] = 1342.2547 PCAR_PATH_X[89] = -1070.3717 PCAR_PATH_Y[89] = 1094.4225 PCAR_PATH_Z[89] = 1342.1755 PCAR_PATH_X[90] = -1073.3851 PCAR_PATH_Y[90] = 1094.0660 PCAR_PATH_Z[90] = 1342.0389 PCAR_PATH_X[91] = -1075.8994 PCAR_PATH_Y[91] = 1092.2640 PCAR_PATH_Z[91] = 1342.0265 PCAR_PATH_X[92] = -1078.3301 PCAR_PATH_Y[92] = 1090.4756 PCAR_PATH_Z[92] = 1341.8834 PCAR_PATH_X[93] = -1080.6924 PCAR_PATH_Y[93] = 1088.5142 PCAR_PATH_Z[93] = 1341.7618 PCAR_PATH_X[94] = -1082.7858 PCAR_PATH_Y[94] = 1086.3169 PCAR_PATH_Z[94] = 1341.7253 PCAR_PATH_X[95] = -1084.7147 PCAR_PATH_Y[95] = 1083.9258 PCAR_PATH_Z[95] = 1341.7179 PCAR_PATH_X[96] = -1086.7113 PCAR_PATH_Y[96] = 1081.6781 PCAR_PATH_Z[96] = 1341.6567 PCAR_PATH_X[97] = -1088.7390 PCAR_PATH_Y[97] = 1079.4583 PCAR_PATH_Z[97] = 1341.7389 PCAR_PATH_X[98] = -1090.5991 PCAR_PATH_Y[98] = 1077.0739 PCAR_PATH_Z[98] = 1341.7372 PCAR_PATH_X[99] = -1091.9250 PCAR_PATH_Y[99] = 1074.3112 PCAR_PATH_Z[99] = 1341.7544 PCAR_PATH_X[100] = -1093.0734 PCAR_PATH_Y[100] = 1071.4653 PCAR_PATH_Z[100] = 1341.7513 PCAR_PATH_X[101] = -1094.3168 PCAR_PATH_Y[101] = 1068.6794 PCAR_PATH_Z[101] = 1341.7525 PCAR_PATH_X[102] = -1095.8586 PCAR_PATH_Y[102] = 1066.0729 PCAR_PATH_Z[102] = 1341.7524 PCAR_PATH_X[103] = -1097.9113 PCAR_PATH_Y[103] = 1063.8552 PCAR_PATH_Z[103] = 1341.7389 PCAR_PATH_X[104] = -1100.7314 PCAR_PATH_Y[104] = 1062.7695 PCAR_PATH_Z[104] = 1341.7860 PCAR_PATH_X[105] = -1103.8469 PCAR_PATH_Y[105] = 1062.7810 PCAR_PATH_Z[105] = 1341.7899 PCAR_PATH_X[106] = -1106.7717 PCAR_PATH_Y[106] = 1061.8954 PCAR_PATH_Z[106] = 1341.7898 PCAR_PATH_X[107] = -1109.5758 PCAR_PATH_Y[107] = 1060.6584 PCAR_PATH_Z[107] = 1341.8246 PCAR_PATH_X[108] = -1112.5780 PCAR_PATH_Y[108] = 1060.8479 PCAR_PATH_Z[108] = 1341.8997 PCAR_PATH_X[109] = -1116.12 PCAR_PATH_Y[109] = 1059.64 PCAR_PATH_Z[109] = 1342.25 PCAR_PATH_X[110] = PCAR_PATH_X[109] PCAR_PATH_Y[110] = PCAR_PATH_Y[109] PCAR_PATH_Z[110] = PCAR_PATH_Z[109] PCAR_PATH_X[111] = PCAR_PATH_X[109] PCAR_PATH_Y[111] = PCAR_PATH_Y[109] PCAR_PATH_Z[111] = PCAR_PATH_Z[109] PCAR_PATH_X[112] = PCAR_PATH_X[109] PCAR_PATH_Y[112] = PCAR_PATH_Y[109] PCAR_PATH_Z[112] = PCAR_PATH_Z[109] PCAR_PATH_X[113] = PCAR_PATH_X[109] PCAR_PATH_Y[113] = PCAR_PATH_Y[109] PCAR_PATH_Z[113] = PCAR_PATH_Z[109] PCAR_PATH_X[114] = PCAR_PATH_X[109] PCAR_PATH_Y[114] = PCAR_PATH_Y[109] PCAR_PATH_Z[114] = PCAR_PATH_Z[109] PCAR_PATH_X[115] = PCAR_PATH_X[109] PCAR_PATH_Y[115] = PCAR_PATH_Y[109] PCAR_PATH_Z[115] = PCAR_PATH_Z[109] PCAR_PATH_X[116] = PCAR_PATH_X[109] PCAR_PATH_Y[116] = PCAR_PATH_Y[109] PCAR_PATH_Z[116] = PCAR_PATH_Z[109] // PCAR_PATH_X[113] = -1127.0338 // PCAR_PATH_Y[113] = 1058.0831 // PCAR_PATH_Z[113] = 1345.3900 // PCAR_PATH_X[114] = -1119.2037 // PCAR_PATH_Y[114] = 1057.8279 // PCAR_PATH_Z[114] = 1345.4827 // PCAR_PATH_X[115] = -1108.1910 // PCAR_PATH_Y[115] = 1058.0837 // PCAR_PATH_Z[115] = 1345.4279 // PCAR_PATH_X[116] = -1033.4384 // PCAR_PATH_Y[116] = 1059.8207 // PCAR_PATH_Z[116] = 1345.0559 START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 GOSUB ZERO4_next_stage ENDIF // ************************************************************************************************************* // STAGE 1 - intro cutscene // ************************************************************************************************************* IF m_stage = 1 // initialisation for stage IF m_goals = 0 LOAD_MISSION_TEXT ZERO4 SET_AREA_VISIBLE 6 LOAD_CUTSCENE ZERO_4 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 SET_PLAYER_CONTROL player1 OFF //SET_PLAYER_IS_IN_STADIUM TRUE HIDE_ALL_FRONTEND_BLIPS TRUE SET_PLAYER_IN_CAR_CAMERA_MODE ZOOM_TWO // weather and time STORE_CLOCK FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_SF CLEAR_WANTED_LEVEL player1 SET_WANTED_MULTIPLIER 0.1 REQUEST_MODEL RCBANDIT REQUEST_MODEL RCGOBLIN REQUEST_MODEL BMX REQUEST_MODEL RCTIGER LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED RCBANDIT OR NOT HAS_MODEL_LOADED RCGOBLIN OR NOT HAS_MODEL_LOADED BMX OR NOT HAS_MODEL_LOADED RCTIGER WAIT 0 ENDWHILE SET_CHAR_AREA_VISIBLE scplayer 10 CLEAR_AREA -1004.0972 1000.7886 1349.7488 300.0 TRUE // sort player out - put him in car and make them both invisible with no collision CREATE_CAR BMX -1004.0972 1000.7886 1349.7488 hidden_car FREEZE_CAR_POSITION hidden_car TRUE WARP_CHAR_INTO_CAR scplayer hidden_car LOCK_CAR_DOORS hidden_car CARLOCK_LOCKED_PLAYER_INSIDE SET_VEHICLE_AREA_VISIBLE hidden_car 10 // create rc car CREATE_CAR RCBANDIT -975.6997 1061.1624 1344.7998 pcar SET_CAR_HEADING pcar 90.0 SET_VEHICLE_AREA_VISIBLE pcar 10 SET_CAR_PROOFS pcar FALSE TRUE TRUE FALSE FALSE SET_CAR_HEALTH pcar 2000 // create rc heli CREATE_CAR RCGOBLIN -973.7590 1077.1519 1350.3988 pheli SET_CAR_HEADING pheli 90.0 SET_VEHICLE_AREA_VISIBLE pheli 10 //SET_CAR_PROOFS pheli TRUE TRUE TRUE TRUE TRUE // take out when camera is fixed //ATTACH_WINCH_TO_HELI pheli WINCHTYPE_RCHELI CREATE_OBJECT MINI_MAGNET -973.7590 1077.1519 1344.3988 pmagnet ATTACH_OBJECT_TO_CAR pmagnet pheli 0.0 0.0 -0.2 0.0 0.0 0.0 SET_OBJECT_COLLISION pmagnet TRUE FREEZE_CAR_POSITION pheli TRUE SET_CAR_COORDINATES pheli -973.7590 1077.1519 1346.3988 SET_HELI_BLADES_FULL_SPEED pheli HELI_GOTO_COORDS pheli -973.7590 1077.1519 1344.3988 344.0 3.0 // create opposition heli CREATE_CAR RCGOBLIN -1131.6940 1041.7906 1350.1413 oheli SET_CAR_HEADING oheli 270.0 SET_VEHICLE_AREA_VISIBLE oheli 10 ADD_BLIP_FOR_CAR oheli oheli_blip SET_BLIP_AS_FRIENDLY oheli_blip FALSE CHANGE_BLIP_DISPLAY oheli_blip BLIP_ONLY CHANGE_BLIP_SCALE oheli_blip 2 //ATTACH_WINCH_TO_HELI oheli WINCHTYPE_RCHELI CREATE_OBJECT MINI_MAGNET -973.7590 1077.1519 1344.3988 omagnet ATTACH_OBJECT_TO_CAR omagnet oheli 0.0 0.0 -0.2 0.0 0.0 0.0 SET_OBJECT_COLLISION omagnet TRUE //FREEZE_CAR_POSITION oheli TRUE SET_HELI_BLADES_FULL_SPEED oheli HELI_GOTO_COORDS oheli -1131.6940 1041.7906 1344.1413 344.0 3.0 // create initial rocks CREATE_OBJECT_NO_OFFSET BARREL2 -1007.2133 1078.5345 1342.6824 rock[0] CREATE_OBJECT_NO_OFFSET BARREL2 -1093.1370 1037.8564 1342.7319 rock[1] CREATE_OBJECT_NO_OFFSET BARREL2 -1073.4656 1094.4071 1342.3218 rock[2] SET_OBJECT_ROTATION rock[0] 0.0 90.0 0.0 SET_OBJECT_ROTATION rock[1] 0.0 90.0 0.0 SET_OBJECT_ROTATION rock[2] 0.0 90.0 0.0 // create initial planks CREATE_OBJECT_NO_OFFSET KMB_PLANK -973.0 1064.0 1344.1472 plank[0] CREATE_OBJECT_NO_OFFSET KMB_PLANK -973.0 1065.0 1344.1461 plank[1] CREATE_OBJECT_NO_OFFSET KMB_PLANK -973.0 1066.0 1344.1442 plank[2] CREATE_OBJECT_NO_OFFSET KMB_PLANK -973.0 1067.0 1344.1431 plank[3] CREATE_OBJECT_NO_OFFSET KMB_PLANK -973.0 1068.0 1344.1421 plank[4] SET_OBJECT_HEADING plank[0] 270.0 SET_OBJECT_HEADING plank[1] 270.0 SET_OBJECT_HEADING plank[2] 270.0 SET_OBJECT_HEADING plank[3] 270.0 SET_OBJECT_HEADING plank[4] 270.0 // create initial bomb CREATE_OBJECT_NO_OFFSET RCBOMB -974.5125 1072.0446 1344.2984 rc_bomb SET_OBJECT_HEADING rc_bomb 90.0 // create initial tanks CREATE_CAR RCTIGER -1076.8729 1046.5424 1343.3653 otank[0] CREATE_CAR RCTIGER -1073.1935 1070.4257 1341.3746 otank[1] CREATE_CAR RCTIGER -1106.4786 1060.9753 1341.8638 otank[2] SET_CAR_HEADING otank[0] 286.4071 SET_CAR_HEADING otank[1] 145.4881 SET_CAR_HEADING otank[2] 278.5302 ADD_BLIP_FOR_CAR otank[0] otank_blip[0] ADD_BLIP_FOR_CAR otank[1] otank_blip[1] ADD_BLIP_FOR_CAR otank[2] otank_blip[2] CHANGE_BLIP_DISPLAY otank_blip[0] BLIP_ONLY CHANGE_BLIP_DISPLAY otank_blip[1] BLIP_ONLY CHANGE_BLIP_DISPLAY otank_blip[2] BLIP_ONLY SET_VEHICLE_AREA_VISIBLE otank[0] 10 SET_VEHICLE_AREA_VISIBLE otank[1] 10 SET_VEHICLE_AREA_VISIBLE otank[2] 10 CHANGE_BLIP_SCALE otank_blip[0] 2 CHANGE_BLIP_SCALE otank_blip[1] 2 CHANGE_BLIP_SCALE otank_blip[2] 2 // environment settings SET_AREA_VISIBLE 10 SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 ENABLE_CRANE_CONTROLS FALSE FALSE FALSE DISPLAY_HUD FALSE DISPLAY_RADAR TRUE SET_RADAR_ZOOM 100 LOAD_SCENE -975.6997 1061.1624 344.7998 SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION -987.9526 1099.3027 1352.4498 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -987.5282 1098.5186 1351.9970 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //PRINT_NOW Z4_M01 4000 1 // This is the RC battlefield. TIMERA = 0 TIMERB = 0 dialogue_flag = 0 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 audio_line_is_active = 0 m_goals++ ENDIF // play audio IF m_goals > 0 IF TIMERB > 1000 IF audio_line_is_active = 0 SWITCH dialogue_flag CASE 0 $audio_string = &ZER4_AA // Behold, No Man’s Land! audio_sound_file = SOUND_ZER4_AA START_NEW_SCRIPT audio_line -1 0 1 1 0 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_ZER4_AB BREAK CASE 1 $audio_string = &ZER4_AB // Hell, you guys take this shit seriously! audio_sound_file = SOUND_ZER4_AB START_NEW_SCRIPT audio_line -1 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_ZER4_AC BREAK CASE 2 $audio_string = &ZER4_AC // Berkley’s HQ is across No Man’s Land. audio_sound_file = SOUND_ZER4_AC START_NEW_SCRIPT audio_line -1 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_ZER4_AD BREAK CASE 3 $audio_string = &ZER4_AD // I’ll drive the Bandit, you fly the goblin and help anyway you can! audio_sound_file = SOUND_ZER4_AC audio_sound_file = SOUND_ZER4_AD START_NEW_SCRIPT audio_line -1 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_ZER4_AE BREAK CASE 4 $audio_string = &ZER4_AE // If I get the Bandit into Berkley’s base, he must leave San Fierro for good! audio_sound_file = SOUND_ZER4_AE START_NEW_SCRIPT audio_line -1 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_ZER4_AF BREAK CASE 5 $audio_string = &ZER4_AF // LET BATTLE COMMENCE! audio_sound_file = SOUND_ZER4_AF START_NEW_SCRIPT audio_line -1 0 1 2 1 BREAK ENDSWITCH dialogue_flag++ TIMERB = 0 ENDIF ENDIF ENDIF IF m_goals = 1 IF TIMERA > 4000 SET_INTERPOLATION_PARAMETERS 0.0 7000 SET_FIXED_CAMERA_POSITION -982.6354 1055.8798 1348.9258 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -981.9190 1056.5037 1348.6135 JUMP_CUT //PRINT_NOW Z4_M02 6000 1 // To defeat Melvin, use your RC helis to safely escort the RC Bandit. TIMERA = 0 m_goals++ ENDIF ENDIF IF m_goals = 2 IF TIMERA > 2000 //PRINT_NOW Z4_M03 8000 1 // Your helis can pickup and drop objects, including bombs. SET_INTERPOLATION_PARAMETERS 0.0 10000 SET_FIXED_CAMERA_POSITION -1137.9375 1058.0325 1355.2568 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1136.9889 1058.0991 1354.9474 INTERPOLATION TIMERA = 0 m_goals++ ENDIF ENDIF IF m_goals = 3 IF dialogue_flag > 6 AND audio_line_is_active = 0 m_goals = 99 ENDIF ENDIF IF m_goals > 0 IF IS_WIDGET_RELEASED WIDGET_SKIP_CUTSCENE m_goals = 99 ENDIF ENDIF // exit IF m_goals = 99 START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 SET_INTERPOLATION_PARAMETERS 50.0 500 CLEAR_PRINTS SET_FIXED_CAMERA_POSITION -968.2972 1077.4132 1346.6857 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -969.2341 1077.3680 1346.3391 JUMP_CUT SWITCH_WIDESCREEN OFF CLEAR_PRINTS SET_PLAYER_CONTROL player1 ON IF NOT IS_CAR_DEAD pheli FREEZE_CAR_POSITION pheli FALSE SET_CAR_COORDINATES pheli -973.7590 1077.1519 1349.3988 SET_CAR_HEADING pheli 90.0 ENDIF IF NOT IS_CAR_DEAD oheli FREEZE_CAR_POSITION oheli FALSE ENDIF WAIT 0 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT GOSUB ZERO4_next_stage ENDIF ENDIF // ************************************************************************************************************* // STAGE 2 - minigame - 1st life // ************************************************************************************************************* IF m_stage = 2 // initialisation for stage IF m_goals = 0 IF NOT IS_CAR_DEAD pcar ADD_BLIP_FOR_CAR pcar pcar_blip SET_BLIP_AS_FRIENDLY pcar_blip TRUE CHANGE_BLIP_SCALE pcar_blip 2 ENDIF IF NOT IS_CAR_DEAD pheli TAKE_REMOTE_CONTROL_OF_CAR player1 pheli ENDIF SET_ENABLE_RC_DETONATE FALSE SET_ENABLE_RC_DETONATE_ON_CONTACT FALSE REQUEST_CAR_RECORDING 521 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 521 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD pcar START_PLAYBACK_RECORDED_CAR pcar 521 SET_PLAYBACK_SPEED pcar 0.5 ENDIF // set flags for mini game section pcar_progress = 0 pcar_lives_left = 3 pheli_lives = 3 // setup display stuff zero4_timer = 480000 DISPLAY_ONSCREEN_TIMER_WITH_STRING zero4_timer TIMER_DOWN Z4_M11 DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING z4_pcar_health COUNTER_DISPLAY_BAR 1 Z4_M06 help_timer = -1000 dialogue_timer = 10000 m_goals++ ENDIF // mini game stage IF m_goals = 1 // make sure there is no oil left lying about (they are electric models, i think) REMOVE_OIL_PUDDLES_IN_AREA -963.0789 1006.7465 -1152.8236 1105.1549 // make sure car recording is loaded IF NOT HAS_CAR_RECORDING_BEEN_LOADED 521 REQUEST_CAR_RECORDING 521 ELSE // stop time from progressing SET_TIME_OF_DAY 0 30 // remove stuff that falls through map ---------------------------------------------------------- temp_int = 0 WHILE temp_int < 10 IF DOES_OBJECT_EXIST rock[temp_int] GET_OBJECT_COORDINATES rock[temp_int] x y z IF z < 1335.0 DELETE_OBJECT rock[temp_int] ENDIF ENDIF temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 5 IF DOES_OBJECT_EXIST plank[temp_int] GET_OBJECT_COORDINATES plank[temp_int] x y z IF z < 1335.0 SET_OBJECT_COORDINATES plank[temp_int] -973.0 1064.0 1345.1472 SET_OBJECT_HEADING plank[temp_int] 270.0 ENDIF ENDIF temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 3 IF DOES_VEHICLE_EXIST otank[temp_int] IF NOT IS_CAR_DEAD otank[temp_int] GET_CAR_COORDINATES otank[temp_int] x y z IF z < 1335.0 EXPLODE_CAR otank[temp_int] ENDIF ENDIF ENDIF temp_int++ ENDWHILE IF DOES_OBJECT_EXIST rc_bomb GET_OBJECT_COORDINATES rc_bomb x y z IF z < 1335.0 DELETE_OBJECT rc_bomb ENDIF ENDIF // ------------------------- HELP TEXT ------------------------------------- // --- FIRST TIME HELI HOVERS OVER AN OBJECT -------- IF first_pickup_help = 0 AND NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED IF NOT IS_CAR_DEAD pheli GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pheli 0.0 0.0 -1.0 x y z temp_int = 0 WHILE temp_int < 10 IF DOES_OBJECT_EXIST rock[temp_int] IF LOCATE_OBJECT_3D rock[temp_int] x y z 1.0 1.0 1.0 FALSE CLEAR_HELP PRINT_HELP Z4_H13 first_pickup_help++ temp_int = 10 ENDIF ENDIF temp_int++ ENDWHILE IF first_pickup_help = 0 temp_int = 0 WHILE temp_int < 5 IF DOES_OBJECT_EXIST plank[temp_int] IF LOCATE_OBJECT_3D plank[temp_int] x y z 1.0 1.0 1.0 FALSE CLEAR_HELP PRINT_HELP Z4_H13 first_pickup_help++ temp_int = 5 ENDIF ENDIF temp_int++ ENDWHILE ENDIF IF first_pickup_help = 0 IF DOES_OBJECT_EXIST rc_bomb IF LOCATE_OBJECT_3D rc_bomb x y z 1.0 1.0 1.0 FALSE CLEAR_HELP PRINT_HELP Z4_H13 first_pickup_help++ ENDIF ENDIF ENDIF ENDIF ENDIF IF first_pickup_help = 1 AND NOT IS_MESSAGE_BEING_DISPLAYED //AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED IF NOT carried_object = 0 first_pickup_help++ PRINT_HELP Z4_H14 ENDIF ENDIF // --- INTRO HELP ------------------------------ IF help_text_flag[0] = 0 AND help_timer > 1000 AND NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED PRINT_HELP Z4_H1 // Your RC Goblin helicopter is fitted with a winch which can pick up objects. help_timer = 0 help_text_flag[0]++ ENDIF IF help_text_flag[0] = 1 AND help_timer > 1000 AND NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND pcar_progress > 18 PRINT_HELP Z4_H4 // Melvin's ~r~Goblin~w~ will be constantly try and block the path of your ~b~Bandit~w~. help_timer = 0 help_text_flag[0]++ ENDIF // ----- CONTROL INSTRUCTIONS HELP --------------- LVAR_INT control_help_flag IF help_timer > 1000 AND NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED SWITCH control_help_flag CASE 0 PRINT_HELP_FOREVER Z4_H17 // Press ~m~~widget_accelerate~ to increase the rotor speed of the helicopter. This will propel it upwards. help_timer = 0 control_help_flag++ BREAK CASE 1 PRINT_HELP_FOREVER Z4_H18 // Use the steering controls to tilt the helicopter in the direction you wish to maneuver it. help_timer = 0 control_help_flag++ BREAK CASE 2 PRINT_HELP_FOREVER Z4_H19 // Press ~m~~widget_vehicle_turret_left~ to rotate the helicopter counter-clockwise. help_timer = 0 control_help_flag++ BREAK CASE 3 PRINT_HELP_FOREVER Z4_H20 // Press ~m~~widget_vehicle_turret_right~ to rotate the helicopter clockwise. help_timer = 0 control_help_flag++ BREAK CASE 4 PRINT_HELP_FOREVER Z4_H21 // Press ~m~~widget_brake~ to decrease the rotor speed of the helicopter this will bring it down towards the ground. help_timer = 0 control_help_flag++ BREAK CASE 5 //PRINT_HELP_FOREVER Z4_H22 // Use the camera movement controls to look around the helicopter. help_timer = 0 control_help_flag++ BREAK ENDSWITCH ENDIF // --- FIRST TIME OBSTRUCTION HELP ------------------------ IF NOT pcar_is_obstructed = 0 IF obstruction_type = 1 IF play_first_time_blocked_audio = 0 play_first_time_blocked_audio++ ENDIF ENDIF ENDIF // first time obstructed audio IF play_first_time_blocked_audio = 1 AND NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND audio_line_is_active = 0 IF play_first_time_blocked_audio = 0 IF dialogue_timer > 1000 GENERATE_RANDOM_INT_IN_RANGE 0 3 obstruct_audio1 GENERATE_RANDOM_INT_IN_RANGE 0 3 obstruct_audio2 IF obstruct_audio1 = 0 $audio_string = &ZER4_BA audio_sound_file = SOUND_ZER4_BA ENDIF IF obstruct_audio1 = 1 $audio_string = &ZER4_BB audio_sound_file = SOUND_ZER4_BB ENDIF IF obstruct_audio1 = 2 $audio_string = &ZER4_BC audio_sound_file = SOUND_ZER4_BC ENDIF START_NEW_SCRIPT audio_line -1 0 1 1 0 dialogue_timer = 0 play_first_time_blocked_audio++ ENDIF ENDIF IF play_first_time_blocked_audio = 1 IF dialogue_timer > 1000 IF obstruct_audio1 = 0 $audio_string = &ZER4_CA audio_sound_file = SOUND_ZER4_CA ENDIF IF obstruct_audio1 = 1 $audio_string = &ZER4_CB audio_sound_file = SOUND_ZER4_CB ENDIF IF obstruct_audio1 = 2 $audio_string = &ZER4_CC audio_sound_file = SOUND_ZER4_CC ENDIF START_NEW_SCRIPT audio_line -1 0 1 1 0 dialogue_timer = 0 play_first_time_blocked_audio++ obstruct_audio1 = 0 ENDIF ENDIF ENDIF IF play_first_time_blocked_audio = 2 AND NOT pcar_is_obstructed = 0 IF dialogue_timer > 1000 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED PRINT_HELP Z4_H5 // You must remove any obstructions before your ~b~Bandit can continue. play_first_time_blocked_audio++ dialogue_timer = 0 ENDIF ENDIF ENDIF // IF play_first_time_blocked_audio = 3 // AND pcar_is_obstructed = 0 // IF dialogue_timer > 1000 // IF NOT IS_MESSAGE_BEING_DISPLAYED // AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED // PRINT_HELP Z4_H3 // After lifting the obstruction from the path of your ~b~Bandit ~w~press the ~o~ button to realease the object. // play_first_time_blocked_audio++ // dialogue_timer = 0 // ENDIF // ENDIF // ENDIF IF play_first_time_blocked_audio = 3 IF pcar_is_obstructed = 1 AND NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND dialogue_timer > 10000 AND audio_line_is_active = 0 // barrels only IF obstruction_type = 1 obstruct_audio1++ IF obstruct_audio1 > 4 obstruct_audio1 = 0 ENDIF SWITCH obstruct_audio1 CASE 0 $audio_string = &ZER4_DA audio_sound_file = SOUND_ZER4_DA BREAK CASE 1 $audio_string = &ZER4_DB audio_sound_file = SOUND_ZER4_DB BREAK CASE 2 $audio_string = &ZER4_DC audio_sound_file = SOUND_ZER4_DC BREAK CASE 3 $audio_string = &ZER4_DD audio_sound_file = SOUND_ZER4_DD BREAK CASE 4 $audio_string = &ZER4_DE audio_sound_file = SOUND_ZER4_DE BREAK // CASE 5 // $audio_string = &ZER4_DF // audio_sound_file = SOUND_ZER4_DF // BREAK ENDSWITCH START_NEW_SCRIPT audio_line -1 0 1 1 0 dialogue_timer = 0 ENDIF ENDIF ENDIF // ---- FIRST TIME ATTACKED BY TANKS ----------------------------- IF tanks_are_all_dead = 0 IF IS_CAR_DEAD otank[0] AND IS_CAR_DEAD otank[1] AND IS_CAR_DEAD otank[2] tanks_are_all_dead = 1 ENDIF ENDIF // if car is taking damage taking_damage_from_tank //IF taking_damage_from_tank = 1 IF tanks_are_all_dead = 0 IF pcar_progress > 42 IF first_time_taking_damage_from_tank = 0 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND audio_line_is_active = 0 IF dialogue_timer > 1000 $audio_string = &ZER4_EA audio_sound_file = SOUND_ZER4_EA START_NEW_SCRIPT audio_line -1 0 1 1 0 first_time_taking_damage_from_tank++ dialogue_timer = 0 ENDIF ENDIF ENDIF ENDIF IF first_time_taking_damage_from_tank = 1 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND audio_line_is_active = 0 IF dialogue_timer > 1000 $audio_string = &ZER4_EB audio_sound_file = SOUND_ZER4_EB START_NEW_SCRIPT audio_line -1 0 1 1 0 first_time_taking_damage_from_tank++ dialogue_timer = 0 ENDIF ENDIF ENDIF IF first_time_taking_damage_from_tank = 2 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND audio_line_is_active = 0 AND dialogue_timer > 1000 IF heli_is_carrying_bomb = 0 PRINT_NOW Z4_M26 7000 1 // pickup a bomb from the base IF DOES_OBJECT_EXIST rc_bomb ADD_BLIP_FOR_OBJECT rc_bomb bomb_blip SET_BLIP_AS_FRIENDLY bomb_blip TRUE first_time_taking_damage_from_tank++ dialogue_timer = 0 ENDIF ELSE first_time_taking_damage_from_tank++ ENDIF ENDIF ENDIF IF first_time_taking_damage_from_tank = 3 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND audio_line_is_active = 0 AND dialogue_timer > 1000 IF NOT heli_is_carrying_bomb = 0 IF DOES_BLIP_EXIST bomb_blip REMOVE_BLIP bomb_blip ENDIF PRINT_NOW Z4_M27 7000 1 // now drop the bomb on the tanks! first_time_taking_damage_from_tank++ ENDIF ENDIF ENDIF IF first_time_taking_damage_from_tank = 4 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND heli_is_carrying_bomb = 0 PRINT_HELP Z4_H11 // Other objects can also be dropped on ~r~Tigers which will cause them damage. first_time_taking_damage_from_tank++ dialogue_timer = 0 ENDIF ENDIF IF first_time_taking_damage_from_tank = 5 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND dialogue_timer > 10000 AND audio_line_is_active = 0 AND taking_damage_from_tank = 1 bomb_tank_dialogue++ IF bomb_tank_dialogue > 5 bomb_tank_dialogue = 0 ENDIF temp_int = 0 WHILE temp_int < 3 IF NOT IS_CAR_DEAD otank[temp_int] temp_int = 99 ENDIF temp_int++ ENDWHILE IF temp_int = 99 SWITCH bomb_tank_dialogue CASE 0 $audio_string = &ZER4_FA audio_sound_file = SOUND_ZER4_FA BREAK CASE 1 $audio_string = &ZER4_FB audio_sound_file = SOUND_ZER4_FB BREAK CASE 2 $audio_string = &ZER4_FC audio_sound_file = SOUND_ZER4_FC BREAK CASE 3 $audio_string = &ZER4_FD audio_sound_file = SOUND_ZER4_FD BREAK CASE 4 $audio_string = &ZER4_FE audio_sound_file = SOUND_ZER4_FE BREAK CASE 5 $audio_string = &ZER4_FF audio_sound_file = SOUND_ZER4_FF BREAK ENDSWITCH START_NEW_SCRIPT audio_line -1 0 1 1 0 dialogue_timer = 0 ENDIF taking_damage_from_tank = 0 ENDIF ENDIF ELSE IF DOES_BLIP_EXIST bomb_blip REMOVE_BLIP bomb_blip ENDIF ENDIF IF DOES_BLIP_EXIST bomb_blip IF IS_OBJECT_ATTACHED rc_bomb REMOVE_BLIP bomb_blip ENDIF ENDIF // ---- FIRST TIME STUCK AT RIVER HELP ---------------------------- IF stuck_at_river = 1 IF first_time_stuck_at_river = 0 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND audio_line_is_active = 0 AND dialogue_timer > 1000 $audio_string = &ZER4_GA audio_sound_file = SOUND_ZER4_GA START_NEW_SCRIPT audio_line -1 0 1 1 0 first_time_stuck_at_river++ dialogue_timer = 0 ENDIF ENDIF ENDIF IF first_time_stuck_at_river = 1 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND audio_line_is_active = 0 AND dialogue_timer > 1000 IF stuck_at_river = 1 IF NOT heli_is_carrying_plank = 1 PRINT_NOW Z4_M28 7000 1 // grab a plank IF DOES_OBJECT_EXIST plank[2] ADD_BLIP_FOR_OBJECT plank[2] plank_blip ENDIF ENDIF ENDIF first_time_stuck_at_river++ dialogue_timer = 0 ENDIF ENDIF IF first_time_stuck_at_river = 2 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND audio_line_is_active = 0 AND dialogue_timer > 1000 AND heli_is_carrying_plank = 1 IF stuck_at_river = 1 PRINT_NOW Z4_M29 7000 1 // drop the plank at the river ENDIF IF DOES_BLIP_EXIST plank_blip REMOVE_BLIP plank_blip ENDIF first_time_stuck_at_river++ dialogue_timer = 0 ENDIF ENDIF IF first_time_stuck_at_river = 3 AND stuck_at_river = 1 AND audio_line_is_active = 0 AND dialogue_timer > 10000 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED stuck_at_river_dialogue++ IF stuck_at_river_dialogue > 2 stuck_at_river_dialogue = 0 ENDIF SWITCH stuck_at_river_dialogue CASE 0 $audio_string = &ZER4_HA audio_sound_file = SOUND_ZER4_HA BREAK CASE 1 $audio_string = &ZER4_HB audio_sound_file = SOUND_ZER4_HB BREAK CASE 2 $audio_string = &ZER4_HC audio_sound_file = SOUND_ZER4_HC BREAK ENDSWITCH START_NEW_SCRIPT audio_line -1 0 1 1 0 dialogue_timer = 0 ENDIF ENDIF // ---- Bandit's nearly dead ---------------- IF NOT IS_CAR_DEAD pcar GET_CAR_HEALTH pcar temp_int IF temp_int < 1400 IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED AND dialogue_timer > 10000 AND audio_line_is_active = 0 GET_CAR_COORDINATES pcar x y z x2 = x - 5.0 y2 = y - 5.0 z2 = z - 5.0 x3 = x + 5.0 y3 = y + 5.0 z3 = z + 5.0 IF NOT IS_EXPLOSION_IN_AREA EXPLOSION_SMALL x2 y2 z2 x3 y3 z3 nearly_dead_dialogue++ IF nearly_dead_dialogue > 2 nearly_dead_dialogue = 0 ENDIF SWITCH nearly_dead_dialogue CASE 0 $audio_string = &ZER4_KA audio_sound_file = SOUND_ZER4_KA BREAK CASE 1 $audio_string = &ZER4_KB audio_sound_file = SOUND_ZER4_KB BREAK CASE 2 $audio_string = &ZER4_KC audio_sound_file = SOUND_ZER4_KC BREAK ENDSWITCH START_NEW_SCRIPT audio_line -1 0 1 1 0 dialogue_timer = 0 ELSE $audio_string = &ZER4_LC audio_sound_file = SOUND_ZER4_LC START_NEW_SCRIPT audio_line -1 0 1 1 0 dialogue_timer = 0 ENDIF ENDIF ENDIF ENDIF // ---- IF help_text_flag[6] = 99 AND help_text_flag[7] = 0 IF pcar_lives_left = 3 CLEAR_HELP PRINT_HELP Z4_H12 // If the ~b~Bandit gets destroyed another will start from your base, careful as you only have 3. help_text_flag[7]++ help_timer = 0 ENDIF ENDIF IF help_text_flag[7] = 1 //IF help_timer > 7000 // CLEAR_HELP help_text_flag[7] = 99 //ENDIF ENDIF // if pheli gets destroyed respawn at base ------------------------------------------------------ IF IS_CAR_DEAD pheli IF heli_is_carrying = 1 IF DOES_OBJECT_EXIST carried_object //RELEASE_ENTITY_FROM_WINCH pheli DETACH_OBJECT carried_object 0.0 0.0 0.0 FALSE // IF IS_OBJECT_INTERSECTING_WORLD carried_object // GET_OBJECT_COORDINATES carried_object x y z // GET_OBJECT_HEADING carried_object heading // z += 1.0 // SET_OBJECT_COORDINATES carried_object x y z // SET_OBJECT_HEADING carried_object heading // ENDIF SET_OBJECT_COLLISION pmagnet TRUE heli_is_carrying = 0 pheli_pickup_timer = 0 IF carried_object = rc_bomb bomb_is_armed = 1 SET_OBJECT_RECORDS_COLLISIONS rc_bomb TRUE rc_bomb_timer = 0 ENDIF carried_object = 0 ELSE IF DOES_VEHICLE_EXIST carried_car //RELEASE_ENTITY_FROM_WINCH pheli DETACH_CAR carried_car 0.0 0.0 0.0 FALSE SET_OBJECT_COLLISION pmagnet TRUE heli_is_carrying = 0 pheli_pickup_timer = 0 carried_car = 0 ENDIF ENDIF ENDIF //EXPLODE_CAR pheli //WAIT 1000 WAIT 1000 LVAR_INT pheli_old pheli_old = pheli MARK_CAR_AS_NO_LONGER_NEEDED pheli pheli_lives-- IF pheli_lives > 0 SET_FIXED_CAMERA_POSITION -968.2972 1077.4132 1346.6857 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -969.2341 1077.3680 1346.3391 JUMP_CUT ENDIF pheli = 0 ENDIF LVAR_INT pheli_is_invincible IF NOT IS_CAR_DEAD pheli IF pheli_is_invincible = 1 IF invincible_timer > 10000 SET_CAR_PROOFS pheli FALSE FALSE FALSE FALSE FALSE pheli_is_invincible = 0 ENDIF ENDIF ENDIF IF pheli = 0 IF NOT pheli_lives = 0 RESTORE_CAMERA EXTINGUISH_FIRE_AT_POINT -973.7590 1077.1519 1350.3988 200.0 CREATE_CAR RCGOBLIN -973.7590 1077.1519 1350.3988 pheli SET_CAR_PROOFS pheli TRUE TRUE TRUE TRUE TRUE pheli_is_invincible = 1 invincible_timer = 0 SET_CAR_HEADING pheli 90.0 SET_HELI_BLADES_FULL_SPEED pheli SET_VEHICLE_AREA_VISIBLE pheli 10 //ATTACH_WINCH_TO_HELI pheli WINCHTYPE_RCHELI TAKE_REMOTE_CONTROL_OF_CAR player1 pheli IF pheli_lives = 2 PRINT_NOW Z4_M14 5000 1 // GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int // IF temp_int = 0 // $audio_string = &ZER4_MA // audio_sound_file = SOUND_ZER4_MA // START_NEW_SCRIPT audio_line -1 0 1 1 0 // ELSE // $audio_string = &ZER4_MB // audio_sound_file = SOUND_ZER4_MB // START_NEW_SCRIPT audio_line -1 0 1 1 0 // ENDIF ENDIF IF pheli_lives = 1 PRINT_NOW Z4_M23 5000 1 // GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int // IF temp_int = 0 // $audio_string = &ZER4_MC // audio_sound_file = SOUND_ZER4_MC // START_NEW_SCRIPT audio_line -1 0 1 1 0 // ELSE // $audio_string = &ZER4_MD // audio_sound_file = SOUND_ZER4_MD // START_NEW_SCRIPT audio_line -1 0 1 1 0 // ENDIF ENDIF IF NOT DOES_OBJECT_EXIST pmagnet CREATE_OBJECT MINI_MAGNET -973.7590 1077.1519 1344.3988 pmagnet ENDIF ATTACH_OBJECT_TO_CAR pmagnet pheli 0.0 0.0 -0.2 0.0 0.0 0.0 SET_OBJECT_COLLISION pmagnet TRUE IF pheli_lives = 0 SET_CAR_VISIBLE pheli FALSE SET_OBJECT_VISIBLE pmagnet FALSE ENDIF IF DOES_VEHICLE_EXIST pheli_old DELETE_CAR pheli_old ENDIF ENDIF ENDIF // if pcar gets destroyed respawn at base and start again --------------------------------------- IF pcar = 0 CREATE_CAR RCBANDIT -975.6997 1061.1624 1344.7998 pcar SET_CAR_HEADING pcar 90.0 SET_VEHICLE_AREA_VISIBLE pcar 10 SET_CAR_PROOFS pcar FALSE TRUE TRUE FALSE FALSE START_PLAYBACK_RECORDED_CAR pcar 521 SET_PLAYBACK_SPEED pcar 0.5 ADD_BLIP_FOR_CAR pcar pcar_blip SET_BLIP_AS_FRIENDLY pcar_blip TRUE SET_CAR_HEALTH pcar 2000 CHANGE_BLIP_SCALE pcar_blip 2 // IF pcar_lives_left = 2 // PRINT_NOW Z4_M16 5000 1 // ENDIF // IF pcar_lives_left = 1 // PRINT_NOW Z4_M22 5000 1 // ENDIF IF pcar_lives_left = 2 GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int IF temp_int = 0 $audio_string = &ZER4_MA audio_sound_file = SOUND_ZER4_MA START_NEW_SCRIPT audio_line -1 0 1 1 0 ELSE $audio_string = &ZER4_MB audio_sound_file = SOUND_ZER4_MB START_NEW_SCRIPT audio_line -1 0 1 1 0 ENDIF ENDIF IF pcar_lives_left = 1 GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int IF temp_int = 0 $audio_string = &ZER4_MC audio_sound_file = SOUND_ZER4_MC START_NEW_SCRIPT audio_line -1 0 1 1 0 ELSE $audio_string = &ZER4_MD audio_sound_file = SOUND_ZER4_MD START_NEW_SCRIPT audio_line -1 0 1 1 0 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD pcar GET_CAR_HEALTH pcar temp_int IF temp_int < 1000 GET_CAR_COORDINATES pcar x y z x2 = x - 5.0 y2 = y - 5.0 z2 = z - 5.0 x3 = x + 5.0 y3 = y + 5.0 z3 = z + 5.0 EXPLODE_CAR pcar IF NOT IS_EXPLOSION_IN_AREA EXPLOSION_SMALL x2 y2 z2 x3 y3 z3 // play dialogue dead_dialogue++ IF dead_dialogue > 2 dead_dialogue = 0 ENDIF SWITCH dead_dialogue CASE 0 $audio_string = &ZER4_LA audio_sound_file = SOUND_ZER4_LA BREAK CASE 1 $audio_string = &ZER4_LB audio_sound_file = SOUND_ZER4_LB BREAK CASE 2 $audio_string = &ZER4_LD audio_sound_file = SOUND_ZER4_LD BREAK ENDSWITCH START_NEW_SCRIPT audio_line -1 0 1 1 0 WAIT 100 WHILE audio_line_is_active = 1 WAIT 0 ENDWHILE ELSE $audio_string = &ZER4_LC audio_sound_file = SOUND_ZER4_LC START_NEW_SCRIPT audio_line -1 0 1 1 0 WAIT 100 WHILE audio_line_is_active = 1 WAIT 0 ENDWHILE ENDIF MARK_CAR_AS_NO_LONGER_NEEDED pcar STOP_PLAYBACK_RECORDED_CAR pcar REMOVE_BLIP pcar_blip pcar = 0 pcar_lives_left-- pcar_progress = 0 pcar_halted = 0 ENDIF ENDIF IF DOES_VEHICLE_EXIST oheli IF IS_CAR_DEAD oheli IF DOES_OBJECT_EXIST omagnet DELETE_OBJECT omagnet ENDIF IF DOES_OBJECT_EXIST rock[oheli_rock] IF IS_OBJECT_ATTACHED rock[oheli_rock] DETACH_OBJECT rock[oheli_rock] 0.0 0.0 0.0 FALSE SET_OBJECT_COLLISION rock[oheli_rock] TRUE IF IS_OBJECT_INTERSECTING_WORLD rock[oheli_rock] GET_OBJECT_COORDINATES rock[oheli_rock] x y z GET_OBJECT_HEADING rock[oheli_rock] heading z += 1.0 SET_OBJECT_COORDINATES rock[oheli_rock] x y z SET_OBJECT_HEADING rock[oheli_rock] heading ENDIF ENDIF ENDIF oheli = 0 ENDIF ENDIF // first bridge ---------------------------------------------------------------------------------- IF first_bridge_laid = 0 // check if plank is there temp_int = 0 WHILE temp_int < 5 IF DOES_OBJECT_EXIST plank[temp_int] IF NOT IS_OBJECT_ATTACHED plank[temp_int] IF LOCATE_OBJECT_3D plank[temp_int] -1043.5081 1041.3798 1341.2938 1.0 1.0 1.0 FALSE SET_OBJECT_COORDINATES plank[temp_int] -1043.5081 1041.3798 1341.2938 SET_OBJECT_ROTATION plank[temp_int] -2.7700 -2.1300 -38.1200 FREEZE_OBJECT_POSITION plank[temp_int] TRUE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT plank[temp_int] SOUND_BONNET_DENT first_bridge_laid = 1 first_bridge_plank = temp_int temp_int = 5 ENDIF ENDIF ENDIF temp_int++ ENDWHILE ENDIF IF first_bridge_laid = 1 IF DOES_OBJECT_EXIST plank[first_bridge_plank] IF IS_OBJECT_ATTACHED plank[first_bridge_plank] FREEZE_OBJECT_POSITION plank[first_bridge_plank] FALSE first_bridge_laid = 0 first_bridge_plank = -1 ENDIF ENDIF ENDIF // display help for first bridge if car is waiting - and pause car IF NOT IS_CAR_DEAD pcar IF pcar_is_paused = 0 IF first_bridge_laid = 0 IF LOCATE_CAR_3D pcar -1041.83 1044.25 1341.42 1.5 1.5 1.5 FALSE PAUSE_PLAYBACK_RECORDED_CAR pcar pcar_is_paused = 1 get_plank1 = 1 stuck_at_river = 1 // CLEAR_HELP // PRINT_HELP_FOREVER ENDIF ENDIF ELSE IF first_bridge_laid = 1 IF LOCATE_CAR_3D pcar -1041.83 1044.25 1341.42 1.5 1.5 1.5 FALSE UNPAUSE_PLAYBACK_RECORDED_CAR pcar pcar_is_paused = 0 stuck_at_river = 0 ENDIF ENDIF ENDIF ENDIF // prompt text for getting plank IF get_plank1 = 1 IF help_text_flag[4] = 99 PRINT_NOW Z4_M20 7000 1 // get plank get_plank1++ ENDIF ENDIF IF get_plank1 = 2 IF DOES_OBJECT_EXIST carried_object temp_int = 0 temp_int2 = 0 WHILE temp_int < 5 IF DOES_OBJECT_EXIST plank[temp_int] IF plank[temp_int] = carried_object temp_int2 = 1 temp_int = 5 ENDIF ENDIF temp_int++ ENDWHILE IF temp_int2 = 1 PRINT_NOW Z4_M21 7000 1 // drop plank at river get_plank1++ ENDIF ENDIF ENDIF IF get_plank1 = 3 IF first_bridge_laid = 1 CLEAR_PRINTS get_plank1 = 99 ENDIF ENDIF // second bridge -------------------------------------------------------- IF second_bridge_laid = 0 // check if plank is there temp_int = 0 WHILE temp_int < 5 IF DOES_OBJECT_EXIST plank[temp_int] IF NOT IS_OBJECT_ATTACHED plank[temp_int] IF LOCATE_OBJECT_3D plank[temp_int] -1062.8333 1076.6279 1341.2304 1.0 1.0 1.0 FALSE SET_OBJECT_COORDINATES plank[temp_int] -1062.8333 1076.6279 1341.2304 SET_OBJECT_ROTATION plank[temp_int] 4.7000 -4.7700 -31.5800 FREEZE_OBJECT_POSITION plank[temp_int] TRUE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT plank[temp_int] SOUND_BONNET_DENT second_bridge_laid = 1 second_bridge_plank = temp_int temp_int = 5 ENDIF ENDIF ENDIF temp_int++ ENDWHILE ENDIF IF second_bridge_laid = 1 IF DOES_OBJECT_EXIST plank[second_bridge_plank] IF IS_OBJECT_ATTACHED plank[second_bridge_plank] FREEZE_OBJECT_POSITION plank[second_bridge_plank] FALSE second_bridge_laid = 0 second_bridge_plank = -1 ENDIF ENDIF ENDIF // display help for second bridge if car is waiting - and pause car IF NOT IS_CAR_DEAD pcar IF pcar_is_paused = 0 IF second_bridge_laid = 0 IF LOCATE_CAR_3D pcar -1064.09 1074.37 1341.32 1.5 1.5 1.5 FALSE PAUSE_PLAYBACK_RECORDED_CAR pcar stuck_at_river = 1 pcar_is_paused = 1 get_plank2 = 1 // CLEAR_HELP // PRINT_HELP_FOREVER ENDIF ENDIF ELSE IF second_bridge_laid = 1 IF LOCATE_CAR_3D pcar -1064.09 1074.37 1341.32 1.5 1.5 1.5 FALSE UNPAUSE_PLAYBACK_RECORDED_CAR pcar stuck_at_river = 0 pcar_is_paused = 0 ENDIF ENDIF ENDIF ENDIF // prompt text for getting plank IF get_plank2 = 1 PRINT_NOW Z4_M20 7000 1 // get plank get_plank2++ ENDIF IF get_plank2 = 2 IF DOES_OBJECT_EXIST carried_object temp_int = 0 temp_int2 = 0 WHILE temp_int < 5 IF DOES_OBJECT_EXIST plank[temp_int] IF plank[temp_int] = carried_object temp_int2 = 1 temp_int = 5 ENDIF ENDIF temp_int++ ENDWHILE IF temp_int2 = 1 PRINT_NOW Z4_M21 7000 1 // drop plank at river get_plank2++ ENDIF ENDIF ENDIF IF get_plank2 = 3 IF second_bridge_laid = 1 CLEAR_PRINTS get_plank2 = 99 ENDIF ENDIF // check if car is obstructed ---------------------------------------------------------- IF pcar_halted = 0 IF pcar_is_paused = 0 IF pcar_is_obstructed = 0 IF NOT IS_CAR_DEAD pcar obstruction_timer = 0 obstruction_type = 0 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pcar 0.0 2.0 0.0 x y z // check if rock is in way temp_int = 0 WHILE temp_int < 10 IF DOES_OBJECT_EXIST rock[temp_int] IF LOCATE_OBJECT_3D rock[temp_int] x y z 1.0 1.0 1.0 FALSE GET_OBJECT_COORDINATES rock[temp_int] x2 y2 z2 GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 temp_float IF temp_float < 0.8 PAUSE_PLAYBACK_RECORDED_CAR pcar pcar_is_paused = 1 pcar_is_obstructed = 1 obstruction_type = 1 GOTO check_car_obstruction_end ENDIF ENDIF ENDIF temp_int++ ENDWHILE // check if baddie tank is in way temp_int = 0 WHILE temp_int < 3 IF DOES_VEHICLE_EXIST otank[temp_int] IF NOT IS_CAR_DEAD otank[temp_int] IF LOCATE_CAR_3D otank[temp_int] x y z 2.0 2.0 2.0 FALSE GET_CAR_COORDINATES otank[temp_int] x2 y2 z2 GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 temp_float IF temp_float < 0.9 PAUSE_PLAYBACK_RECORDED_CAR pcar pcar_is_paused = 1 pcar_is_obstructed = 1 obstruction_type = 2 PRINT_NOW Z4_M18 5000 1 // bandit is obstructed by rock GOTO check_car_obstruction_end ENDIF ENDIF ENDIF ENDIF temp_int++ ENDWHILE // check if players heli is in the way IF NOT IS_CAR_DEAD pheli IF LOCATE_CAR_3D pheli x y z 1.0 1.0 1.0 FALSE PAUSE_PLAYBACK_RECORDED_CAR pcar pcar_is_paused = 1 pcar_is_obstructed = 1 GOTO check_car_obstruction_end ENDIF ENDIF IF pcar_is_obstructed = 1 obstruction_timer = 30000 ENDIF check_car_obstruction_end: ENDIF ENDIF ELSE // check if obstruction has been removed IF pcar_is_obstructed = 1 IF NOT IS_CAR_DEAD pcar GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pcar 0.0 2.0 0.0 x y z pcar_is_obstructed = 0 // check if rock is in way temp_int = 0 WHILE temp_int < 10 IF DOES_OBJECT_EXIST rock[temp_int] IF LOCATE_OBJECT_3D rock[temp_int] x y z 2.0 2.0 2.0 FALSE GET_OBJECT_COORDINATES rock[temp_int] x2 y2 z2 GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 temp_float IF temp_float < 0.9 pcar_is_obstructed = 1 obstruction_type = 1 GOTO check_car_obstruction_end2 ENDIF ENDIF ENDIF temp_int++ ENDWHILE // check if tank is in way temp_int = 0 WHILE temp_int < 3 IF DOES_VEHICLE_EXIST otank[temp_int] IF NOT IS_CAR_DEAD otank[temp_int] IF LOCATE_CAR_3D otank[temp_int] x y z 1.0 1.0 1.0 FALSE GET_CAR_COORDINATES otank[temp_int] x2 y2 z2 GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 temp_float IF temp_float < 0.8 pcar_is_obstructed = 1 obstruction_type = 2 GOTO check_car_obstruction_end2 ENDIF ENDIF ENDIF ENDIF temp_int++ ENDWHILE // check if players heli is in the way IF NOT IS_CAR_DEAD pheli IF LOCATE_CAR_3D pheli x y z 1.0 1.0 1.0 FALSE pcar_is_obstructed = 1 GOTO check_car_obstruction_end2 ENDIF ENDIF // display message to remove obstruction IF pcar_is_obstructed = 1 AND obstruction_timer > 30000 AND obstruction_count < 3 IF obstruction_type = 1 PRINT Z4_M18 5000 1 // bandit is obstructed by rock ENDIF IF obstruction_type = 2 PRINT Z4_M25 5000 1 // bandit is obstructed by tank ENDIF obstruction_timer = 0 ENDIF // unpause car if obstruction has been removed IF pcar_is_obstructed = 0 UNPAUSE_PLAYBACK_RECORDED_CAR pcar pcar_is_paused = 0 obstruction_type = 0 CLEAR_PRINTS IF obstruction_timer > 1000 AND obstruction_timer < 30000 obstruction_count++ ENDIF ENDIF check_car_obstruction_end2: ENDIF ENDIF ENDIF ENDIF // if pcar is taking damage then reverse for a bit ---------------------------------------- // get pcar health IF pcar_halted = 0 IF NOT IS_CAR_DEAD pcar // taking damage from tank LVAR_INT taking_damage_from_tank IF HAS_CAR_BEEN_DAMAGED_BY_WEAPON pcar WEAPONTYPE_MICRO_UZI taking_damage_from_tank = 1 CLEAR_CAR_LAST_WEAPON_DAMAGE pcar ENDIF GET_CAR_HEALTH pcar z4_pcar_health z4_pcar_health += -1000 temp_float =# z4_pcar_health temp_float /= 1000.0 temp_float *= 100.0 z4_pcar_health =# temp_float IF z4_pcar_health < last_health //PRINT_NOW Z4_M05 4000 1 // your bandit is taking damage bandit_taking_damage = 1 pcar_timer = 0 ENDIF last_health = z4_pcar_health // reverse car if it's taking damage IF bandit_taking_damage = 1 IF pcar_is_paused = 1 UNPAUSE_PLAYBACK_RECORDED_CAR pcar pcar_is_paused = 0 ENDIF IF IS_PLAYBACK_GOING_ON_FOR_CAR pcar SET_PLAYBACK_SPEED pcar -0.2 bandit_taking_damage++ pcar_timer = 0 ENDIF ENDIF // wait 4 seconds IF bandit_taking_damage = 2 IF pcar_timer > 4000 bandit_taking_damage++ pcar_timer = 0 ENDIF ENDIF // stop for a few secs IF bandit_taking_damage = 3 SET_PLAYBACK_SPEED pcar 0.5 PAUSE_PLAYBACK_RECORDED_CAR pcar pcar_is_paused = 1 pcar_timer = 0 bandit_taking_damage++ ENDIF // continue IF bandit_taking_damage = 4 IF pcar_timer > 4000 UNPAUSE_PLAYBACK_RECORDED_CAR pcar pcar_is_paused = 0 bandit_taking_damage = 0 pcar_timer = 0 pcar_is_obstructed = 0 ENDIF ENDIF ENDIF ENDIF // heli picking up and dropping stuff ----------------------------------------------------- // IF NOT IS_CAR_DEAD pheli // // SET_ROPE_HEIGHT_FOR_HELI pheli 0.98 // // IF heli_is_carrying = 0 // GRAB_ENTITY_ON_WINCH pheli winch_car winch_ped winch_object // // IF NOT winch_object = -1 // // check for rocks // temp_int = 0 // WHILE temp_int < 10 // IF DOES_OBJECT_EXIST rock[temp_int] // IF winch_object = rock[temp_int] // carried_object = rock[temp_int] // temp_int = 10 // heli_is_carrying = 1 // GOTO heli_pickup_end2 // ENDIF // ENDIF // temp_int++ // ENDWHILE // // check for planks // temp_int = 0 // WHILE temp_int < 5 // IF DOES_OBJECT_EXIST plank[temp_int] // IF winch_object = plank[temp_int] // carried_object = plank[temp_int] // temp_int = 5 // heli_is_carrying = 1 // GOTO heli_pickup_end2 // ENDIF // ENDIF // temp_int++ // ENDWHILE // // check for bomb // IF DOES_OBJECT_EXIST rc_bomb // IF winch_object = rc_bomb // carried_object = rc_bomb // heli_is_carrying = 1 // GOTO heli_pickup_end2 // ENDIF // ENDIF // ENDIF // // IF NOT winch_car = -1 // // check tanks // temp_int = 0 // WHILE temp_int < 3 // IF DOES_VEHICLE_EXIST otank[temp_int] // IF winch_car = otank[temp_int] // carried_car = otank[temp_int] // heli_is_carrying = 1 // GOTO heli_pickup_end2 // ENDIF // ENDIF // temp_int++ // ENDWHILE // ENDIF // // heli_pickup_end2: // ENDIF // ENDIF // if heli is carrying object and check to see if the object is below the ground LVAR_INT check_for_ground_collision IF NOT IS_CAR_DEAD pheli IF check_for_ground_collision = 1 IF NOT heli_is_carrying = 0 IF heli_is_carrying_plank = 1 GET_CAR_COORDINATES pheli x2 y2 z2 GET_GROUND_Z_FOR_3D_COORD x2 y2 z2 z2 temp_int = 0 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS carried_object 0.0 1.7 0.0 x y z temp_float = z + 0.5 //LINE x y z x y temp_float IF z < z2 temp_int = 1 ENDIF GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS carried_object 0.0 -1.7 0.0 x y z temp_float = z + 0.5 //LINE x y z x y temp_float IF z < z2 temp_int = 1 ENDIF GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS carried_object 0.2 0.0 0.0 x y z temp_float = z + 0.5 //LINE x y z x y temp_float IF z < z2 temp_int = 1 ENDIF GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS carried_object -0.2 0.0 0.0 x y z temp_float = z + 0.5 //LINE x y z x y temp_float IF z < z2 temp_int = 1 ENDIF IF temp_int = 1 SET_OBJECT_COLLISION carried_object FALSE IF NOT IS_CAR_DEAD pheli APPLY_FORCE_TO_CAR pheli 0.0 0.0 0.005 0.0 0.0 0.0 ENDIF ELSE SET_OBJECT_COLLISION carried_object TRUE check_for_ground_collision = 0 ENDIF ENDIF IF heli_is_carrying_rock = 1 GET_CAR_COORDINATES pheli x2 y2 z2 GET_GROUND_Z_FOR_3D_COORD x2 y2 z2 z2 temp_int = 0 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS carried_object 0.0 1.0 0.0 x y z temp_float = z + 0.5 //LINE x y z x y temp_float IF z < z2 temp_int = 1 ENDIF GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS carried_object 0.0 -1.0 0.0 x y z temp_float = z + 0.5 //LINE x y z x y temp_float IF z < z2 temp_int = 1 ENDIF GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS carried_object 1.0 0.0 0.0 x y z temp_float = z + 0.5 //LINE x y z x y temp_float IF z < z2 temp_int = 1 ENDIF GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS carried_object -1.0 0.0 0.0 x y z temp_float = z + 0.5 //LINE x y z x y temp_float IF z < z2 temp_int = 1 ENDIF IF temp_int = 1 SET_OBJECT_COLLISION carried_object FALSE IF NOT IS_CAR_DEAD pheli APPLY_FORCE_TO_CAR pheli 0.0 0.0 0.005 0.0 0.0 0.0 ENDIF ELSE SET_OBJECT_COLLISION carried_object TRUE check_for_ground_collision = 0 ENDIF ENDIF ELSE check_for_ground_collision = 0 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD pheli IF heli_is_carrying = 0 IF circle_is_pressed = 0 IF IS_WIDGET_RELEASED WIDGET_MAGNET IF pheli_pickup_timer > 1000 //AND pheli_pickup_timer > 1000 circle_is_pressed = 1 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pheli 0.0 0.0 -1.0 x y z // check for rocks LVAR_INT heli_is_carrying_rock temp_int = 0 WHILE temp_int < 10 IF DOES_OBJECT_EXIST rock[temp_int] IF LOCATE_OBJECT_3D rock[temp_int] x y z 1.0 1.0 1.0 FALSE temp_int2 = 0 // check that other heli isn't carrying this rock IF IS_OBJECT_ATTACHED rock[temp_int] temp_int2 = 1 ENDIF IF temp_int2 = 0 carried_object = rock[temp_int] GET_OBJECT_HEADING rock[temp_int] temp_float ATTACH_OBJECT_TO_CAR carried_object pheli 0.0 0.0 -1.2 0.0 90.0 0.0 IF DOES_OBJECT_EXIST carried_object REPORT_MISSION_AUDIO_EVENT_AT_OBJECT carried_object SOUND_BONNET_DENT ENDIF SET_OBJECT_COLLISION pmagnet TRUE // was FALSE SORT_OUT_OBJECT_COLLISION_WITH_CAR carried_object pheli //PICK_UP_OBJECT_WITH_WINCH pheli carried_object temp_int = 10 heli_is_carrying = 1 heli_is_carrying_rock = 1 check_for_ground_collision = 1 GOTO heli_pickup_end ENDIF ENDIF ENDIF temp_int++ ENDWHILE // check for planks LVAR_INT heli_is_carrying_plank temp_int = 0 WHILE temp_int < 5 IF DOES_OBJECT_EXIST plank[temp_int] IF LOCATE_OBJECT_3D plank[temp_int] x y z 1.0 1.0 1.0 FALSE carried_object = plank[temp_int] // GET_OBJECT_HEADING plank[temp_int] temp_float // temp_float += -90.0 // IF temp_float > 360.0 // temp_float += -360.0 // ENDIF // GET_CAR_HEADING pcar heading // temp_float2 = temp_float - heading // IF temp_float2 > 180.0 // temp_float2 += -360.0 // ENDIF //WRITE_DEBUG attaching_plank ATTACH_OBJECT_TO_CAR carried_object pheli 0.0 0.0 -1.0 0.0 0.0 0.0 IF DOES_OBJECT_EXIST carried_object // IF IS_OBJECT_INTERSECTING_WORLD carried_object // APPLY_FORCE_TO_CAR pheli 0.0 0.0 0.1 0.0 0.0 0.0 // ENDIF REPORT_MISSION_AUDIO_EVENT_AT_OBJECT carried_object SOUND_BONNET_DENT ENDIF SET_OBJECT_COLLISION pmagnet TRUE // was FALSE SORT_OUT_OBJECT_COLLISION_WITH_CAR carried_object pheli temp_int = 6 heli_is_carrying = 1 heli_is_carrying_plank = 1 check_for_ground_collision = 1 GOTO heli_pickup_end ENDIF ENDIF temp_int++ ENDWHILE // check for bomb LVAR_INT heli_is_carrying_bomb IF DOES_OBJECT_EXIST rc_bomb IF LOCATE_OBJECT_3D rc_bomb x y z 1.0 1.0 1.0 FALSE carried_object = rc_bomb //WRITE_DEBUG attaching_bomb ATTACH_OBJECT_TO_CAR carried_object pheli 0.0 0.0 -1.0 0.0 0.0 0.0 IF DOES_OBJECT_EXIST carried_object IF IS_OBJECT_INTERSECTING_WORLD carried_object APPLY_FORCE_TO_CAR pheli 0.0 0.0 0.1 0.0 0.0 0.0 ENDIF REPORT_MISSION_AUDIO_EVENT_AT_OBJECT carried_object SOUND_BONNET_DENT ENDIF SET_OBJECT_COLLISION pmagnet TRUE // was FALSE SORT_OUT_OBJECT_COLLISION_WITH_CAR carried_object pheli //PICK_UP_OBJECT_WITH_WINCH pheli carried_object heli_is_carrying = 1 heli_is_carrying_bomb = 1 GOTO heli_pickup_end ENDIF ENDIF heli_pickup_end: ELSE circle_is_pressed = 0 ENDIF ELSE circle_is_pressed = 0 ENDIF ELSE IF IS_WIDGET_RELEASED WIDGET_MAGNET circle_is_pressed = 0 ENDIF ENDIF ELSE IF circle_is_pressed = 1 IF NOT IS_WIDGET_RELEASED WIDGET_MAGNET circle_is_pressed = 0 ENDIF ELSE IF IS_WIDGET_RELEASED WIDGET_MAGNET IF DOES_OBJECT_EXIST carried_object IF NOT IS_OBJECT_INTERSECTING_WORLD carried_object DETACH_OBJECT carried_object 0.0 0.0 0.0 FALSE SET_OBJECT_COLLISION pmagnet TRUE //RELEASE_ENTITY_FROM_WINCH pheli heli_is_carrying = 0 pheli_pickup_timer = 0 IF carried_object = rc_bomb bomb_is_armed = 1 SET_OBJECT_RECORDS_COLLISIONS rc_bomb TRUE rc_bomb_timer = 0 ENDIF carried_object = 0 circle_is_pressed = 1 heli_is_carrying_bomb = 0 heli_is_carrying_plank = 0 heli_is_carrying_rock = 0 ENDIF ELSE IF DOES_VEHICLE_EXIST carried_car DETACH_CAR carried_car 0.0 0.0 0.0 FALSE SET_OBJECT_COLLISION pmagnet TRUE heli_is_carrying = 0 pheli_pickup_timer = 0 carried_car = 0 circle_is_pressed = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // rc_bomb - explode on impact ------------------------------------------------------------ IF DOES_OBJECT_EXIST rc_bomb IF bomb_is_armed = 1 IF HAS_OBJECT_COLLIDED_WITH_ANYTHING rc_bomb OR rc_bomb_timer > 10000 IF rc_bomb_timer > 500 GET_OBJECT_COORDINATES rc_bomb x y z ADD_EXPLOSION x y z EXPLOSION_SMALL DELETE_OBJECT rc_bomb bomb_is_armed = 0 ENDIF ENDIF ENDIF ELSE CREATE_OBJECT_NO_OFFSET RCBOMB -974.5125 1072.0446 1344.2984 rc_bomb SET_OBJECT_HEADING rc_bomb 90.0 bomb_is_armed = 0 ENDIF // get car progress ----------------------------------------------------------------------- IF NOT IS_CAR_DEAD pcar temp_int = pcar_progress WHILE temp_int < 117 IF NOT IS_CAR_DEAD pcar IF LOCATE_CAR_2D pcar pcar_path_x[temp_int] pcar_path_y[temp_int] 1.0 1.0 FALSE pcar_progress = temp_int + 1 ELSE temp_int = 117 ENDIF ELSE pcar_progress = 0 ENDIF temp_int++ ENDWHILE IF pcar_progress > 116 pcar_progress = 116 ENDIF ENDIF // baddie heli ai -------------------------------------------------------------------------- IF NOT IS_CAR_DEAD oheli // get spare rock IF oheli_flag = 0 oheli_rock = -1 temp_int = 3 WHILE temp_int < 10 IF NOT DOES_OBJECT_EXIST rock[temp_int] oheli_rock = temp_int temp_int = 10 ENDIF temp_int++ ENDWHILE IF oheli_rock > -1 CREATE_OBJECT BARREL2 0.0 0.0 0.0 rock[oheli_rock] ATTACH_OBJECT_TO_CAR rock[oheli_rock] oheli 0.0 0.0 -1.2 0.0 90.0 0.0 IF DOES_OBJECT_EXIST rock[oheli_rock] REPORT_MISSION_AUDIO_EVENT_AT_OBJECT rock[oheli_rock] SOUND_BONNET_DENT ENDIF SET_OBJECT_COLLISION omagnet FALSE SORT_OUT_OBJECT_COLLISION_WITH_CAR rock[oheli_rock] oheli //PICK_UP_OBJECT_WITH_WINCH oheli rock[oheli_rock] oheli_flag++ ELSE // remove a rock that is off screen to make space for new one temp_int = 3 WHILE temp_int < 10 IF DOES_OBJECT_EXIST rock[temp_int] IF NOT IS_OBJECT_ON_SCREEN rock[temp_int] DELETE_OBJECT rock[temp_int] temp_int = 10 ENDIF ENDIF temp_int++ ENDWHILE ENDIF ENDIF // get point to fly to IF oheli_flag = 1 oheli_goto = pcar_progress oheli_goto += 30 IF oheli_goto > 114 oheli_goto = 114 ENDIF SET_HELI_STABILISER oheli FALSE SET_HELI_REACHED_TARGET_DISTANCE oheli 0 //ACTIVATE_HELI_SPEED_CHEAT oheli 1 HELI_GOTO_COORDS oheli pcar_path_x[oheli_goto] pcar_path_y[oheli_goto] pcar_path_z[oheli_goto] 5.0 352.0 oheli_flag++ ENDIF // wait for heli to get there IF oheli_flag = 2 IF LOCATE_CAR_3D oheli pcar_path_x[oheli_goto] pcar_path_y[oheli_goto] pcar_path_z[oheli_goto] 5.0 5.0 15.0 FALSE // put down to locat of 1.0 IF pcar_progress > oheli_goto oheli_goto = pcar_progress + 10 IF oheli_goto > 114 oheli_goto = 114 ENDIF //ACTIVATE_HELI_SPEED_CHEAT oheli 1 HELI_GOTO_COORDS oheli pcar_path_x[oheli_goto] pcar_path_y[oheli_goto] pcar_path_z[oheli_goto] 5.0 352.0 ELSE oheli_flag++ ENDIF ELSE IF pcar_progress > oheli_goto oheli_goto = pcar_progress + 10 IF oheli_goto > 114 oheli_goto = 114 ENDIF //ACTIVATE_HELI_SPEED_CHEAT oheli 1 HELI_GOTO_COORDS oheli pcar_path_x[oheli_goto] pcar_path_y[oheli_goto] pcar_path_z[oheli_goto] 5.0 352.0 ENDIF ENDIF ENDIF // make heli lower a bit IF oheli_flag = 3 HELI_GOTO_COORDS oheli pcar_path_x[oheli_goto] pcar_path_y[oheli_goto] pcar_path_z[oheli_goto] 1.0 343.0 oheli_flag++ ENDIF // wait for heli to lower IF oheli_flag = 4 IF LOCATE_CAR_3D oheli pcar_path_x[oheli_goto] pcar_path_y[oheli_goto] pcar_path_z[oheli_goto] 1.5 1.5 5.0 FALSE oheli_flag++ ENDIF ENDIF // drop rock IF oheli_flag = 5 DETACH_OBJECT rock[oheli_rock] 0.0 0.0 0.0 FALSE // IF IS_OBJECT_INTERSECTING_WORLD rock[oheli_rock] // GET_OBJECT_COORDINATES rock[oheli_rock] x y z // GET_OBJECT_HEADING rock[oheli_rock] heading // z += 1.0 // SET_OBJECT_COORDINATES rock[oheli_rock] x y z // SET_OBJECT_HEADING rock[oheli_rock] heading // ENDIF SET_OBJECT_COLLISION omagnet TRUE // ATTACH_OBJECT_TO_CAR rock[oheli_rock] oheli 0.0 0.0 -0.5 0.0 0.0 0.0 // DETACH_OBJECT rock[oheli_rock] 0.0 0.0 0.0 FALSE //RELEASE_ENTITY_FROM_WINCH oheli oheli_flag++ ENDIF // return to base IF oheli_flag = 6 HELI_GOTO_COORDS oheli -1131.6940 1041.7906 1345.1413 5.0 350.0 oheli_flag++ ENDIF // wait for heli to get back to base, or go offscreen IF oheli_flag = 7 IF LOCATE_CAR_2D oheli -1131.6940 1041.7906 4.0 4.0 FALSE oheli_flag = 0 ENDIF // IF NOT LOCATE_CAR_2D oheli pcar_path_x[oheli_goto] pcar_path_y[oheli_goto] 20.0 20.0 FALSE // AND NOT IS_CAR_ON_SCREEN oheli // oheli_flag = 0 // ENDIF ENDIF ELSE IF NOT oheli_flag = 99 MARK_CAR_AS_NO_LONGER_NEEDED oheli REMOVE_BLIP oheli_blip oheli_flag = 99 ENDIF ENDIF // check if tank is being hit by rock ------------------------------------------------------ temp_int = 0 WHILE temp_int < 3 IF NOT IS_CAR_DEAD otank[temp_int] temp_int2 = 0 WHILE temp_int2 < 10 IF DOES_OBJECT_EXIST rock[temp_int2] IF IS_VEHICLE_TOUCHING_OBJECT otank[temp_int] rock[temp_int2] GET_OBJECT_SPEED rock[temp_int2] temp_float IF temp_float > 5.0 GET_CAR_HEALTH otank[temp_int] temp_int3 temp_int3 += -200 IF temp_int3 <= 0 temp_int3 = 1 ENDIF SET_CAR_HEALTH otank[temp_int] temp_int3 ENDIF IF heli_is_carrying = 1 IF carried_object = rock[temp_int2] // IF NOT IS_CAR_DEAD pheli // RELEASE_ENTITY_FROM_WINCH pheli // ENDIF DETACH_OBJECT carried_object 0.0 0.0 0.0 FALSE // IF IS_OBJECT_INTERSECTING_WORLD carried_object // GET_OBJECT_COORDINATES carried_object x y z // GET_OBJECT_HEADING carried_object heading // z += 1.0 // SET_OBJECT_COORDINATES carried_object x y z // SET_OBJECT_HEADING carried_object heading // ENDIF SET_OBJECT_COLLISION pmagnet TRUE heli_is_carrying = 0 pheli_pickup_timer = 0 ENDIF ENDIF ENDIF ENDIF temp_int2++ ENDWHILE ENDIF temp_int++ ENDWHILE // baddie tank ai -------------------------------------------------------------------------- temp_int2 = 0 WHILE temp_int2 < 3 this_tank = temp_int2 GOSUB update_tank_ai temp_int2++ ENDWHILE // mission pass or fail -------------------------------------------------------------------- // if car gets to other side mission passed //IF pcar_progress = 114 IF NOT IS_CAR_DEAD pcar IF LOCATE_CAR_3D pcar -1131.6 1057.7 1345.7 2.5 2.5 2.0 FALSE GOSUB z4_mission_pass_audio m_passed = 1 ENDIF ENDIF // Fail level IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F OR IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL GOSUB z4_mission_fail_audio m_failed = 1 ENDIF // if run out of lives then mission fail IF pcar_lives_left = 0 GOSUB z4_mission_fail_audio PRINT_NOW Z4_M15 5000 1 m_failed = 1 ENDIF IF pheli_lives = 0 GOSUB z4_mission_fail_audio PRINT_NOW Z4_M13 5000 1 m_failed = 1 ENDIF // if run out of time mission fail IF zero4_timer <= 0 GOSUB z4_mission_fail_audio PRINT_NOW Z4_M12 5000 1 m_failed = 1 ENDIF ENDIF ENDIF // exit IF m_goals = 99 GOSUB ZERO4_next_stage ENDIF ENDIF // ************************************************************************************************************* // GLOBAL FUNCTIONS - run continuously throughout lifetime of level // ************************************************************************************************************* // end of main loop *** don't change *** end_of_main_loop_ZERO4: IF m_quit = 0 IF m_failed = 0 IF m_passed = 0 GOTO mission_loop_ZERO4 ELSE GOSUB mission_passed_ZERO4 RETURN ENDIF ELSE GOSUB mission_failed_ZERO4 RETURN ENDIF ELSE RETURN // quits out - goes to cleanup ENDIF z4_mission_fail_audio: START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS CLEAR_HELP CLEAR_ONSCREEN_TIMER zero4_timer CLEAR_ONSCREEN_COUNTER z4_pcar_health WAIT 100 GENERATE_RANDOM_INT_IN_RANGE 0 3 dialogue_flag SWITCH dialogue_flag CASE 0 $audio_string = &ZER4_NA audio_sound_file = SOUND_ZER4_NA BREAK CASE 1 $audio_string = &ZER4_NB audio_sound_file = SOUND_ZER4_NB BREAK CASE 2 $audio_string = &ZER4_NC audio_sound_file = SOUND_ZER4_NC BREAK ENDSWITCH START_NEW_SCRIPT audio_line -1 0 1 1 0 WAIT 100 WHILE audio_line_is_active = 1 WAIT 0 ENDWHILE START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 RETURN LVAR_INT pass_audio_int z4_mission_pass_audio: CLEAR_ONSCREEN_TIMER zero4_timer CLEAR_ONSCREEN_COUNTER z4_pcar_health dialogue_flag = 0 WHILE pass_audio_int = 0 WAIT 0 IF TIMERB > 1000 AND audio_line_is_active = 0 SWITCH dialogue_flag CASE 0 $audio_string = &ZER4_OA audio_sound_file = SOUND_ZER4_OA BREAK CASE 1 $audio_string = &ZER4_OB audio_sound_file = SOUND_ZER4_OB BREAK CASE 2 $audio_string = &ZER4_OC audio_sound_file = SOUND_ZER4_OC BREAK CASE 3 $audio_string = &ZER4_OD audio_sound_file = SOUND_ZER4_OD BREAK CASE 4 $audio_string = &ZER4_OE audio_sound_file = SOUND_ZER4_OE BREAK CASE 5 $audio_string = &ZER4_OF audio_sound_file = SOUND_ZER4_OF BREAK CASE 6 $audio_string = &ZER4_OG audio_sound_file = SOUND_ZER4_OG BREAK CASE 7 pass_audio_int = 1 BREAK ENDSWITCH IF pass_audio_int = 0 START_NEW_SCRIPT audio_line -1 0 1 1 0 TIMERB = 0 dialogue_flag++ ENDIF ENDIF ENDWHILE RETURN // ************************************************************************************************************* // MISSION SPECIFIC GOSUBS // ************************************************************************************************************* LVAR_INT this_tank LVAR_FLOAT bullet_start_x bullet_start_y bullet_start_z LVAR_FLOAT bullet_end_x bullet_end_y bullet_end_z LVAR_FLOAT vec update_tank_AI: IF NOT IS_CAR_DEAD otank[this_tank] // if tank doesn't have a target, look for one IF otank_target[this_tank] = 0 IF m_frame_num = this_tank // check pcar IF NOT IS_CAR_DEAD pcar GET_CAR_COORDINATES pcar x y z IF LOCATE_CAR_3D otank[this_tank] x y z 10.0 10.0 3.0 FALSE otank_target[this_tank] = pcar ENDIF ENDIF // // heli // IF otank_target[this_tank] = 0 // IF NOT IS_CAR_DEAD pheli // GET_CAR_COORDINATES pheli x y z // IF LOCATE_CAR_3D otank[this_tank] x y z 8.0 8.0 3.0 FALSE // otank_target[this_tank] = pheli // ENDIF // ENDIF // ENDIF // if still no target move to position tank is supposed to sit at IF NOT otank_flag[this_tank] = 99 IF otank_target[this_tank] = 0 // we're not at position, so lets go there IF otank_flag[this_tank] = 0 temp_int = otank_goto[this_tank] IF this_tank = 0 CAR_GOTO_COORDINATES_ACCURATE otank[this_tank] otank_route1_x[temp_int] otank_route1_y[temp_int] otank_route1_z[temp_int] ENDIF IF this_tank = 1 CAR_GOTO_COORDINATES_ACCURATE otank[this_tank] otank_route2_x[temp_int] otank_route2_y[temp_int] otank_route2_z[temp_int] ENDIF IF this_tank = 2 CAR_GOTO_COORDINATES_ACCURATE otank[this_tank] otank_route3_x[temp_int] otank_route3_y[temp_int] otank_route3_z[temp_int] ENDIF otank_flag[this_tank]++ ENDIF // wait for tank to reach point in route IF otank_flag[this_tank] = 1 temp_int = otank_goto[this_tank] IF this_tank = 0 IF LOCATE_CAR_3D otank[this_tank] otank_route1_x[temp_int] otank_route1_y[temp_int] otank_route1_z[temp_int] 2.0 2.0 1.0 FALSE otank_goto[this_tank]++ otank_flag[this_tank] = 0 ENDIF ENDIF IF this_tank = 1 IF LOCATE_CAR_3D otank[this_tank] otank_route2_x[temp_int] otank_route2_y[temp_int] otank_route2_z[temp_int] 2.0 2.0 1.0 FALSE otank_goto[this_tank]++ otank_flag[this_tank] = 0 ENDIF ENDIF IF this_tank = 2 IF LOCATE_CAR_3D otank[this_tank] otank_route3_x[temp_int] otank_route3_y[temp_int] otank_route3_z[temp_int] 2.0 2.0 1.0 FALSE otank_goto[this_tank]++ otank_flag[this_tank] = 0 ENDIF ENDIF // check if finished route IF otank_goto[this_tank] > 1 otank_flag[this_tank] = 99 otank_goto[this_tank] = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ELSE IF NOT IS_CAR_DEAD otank_target[this_tank] GET_CAR_COORDINATES otank_target[this_tank] x y z IF LOCATE_CAR_3D otank[this_tank] x y z 10.0 10.0 3.0 FALSE //TURN_CAR_TO_FACE_COORD otank[this_tank] x y // turn tank towards coords GET_CAR_HEADING otank[this_tank] temp_float GET_CAR_COORDINATES otank[this_tank] x2 y2 z2 vec_x = x - x2 vec_y = y - y2 GET_HEADING_FROM_VECTOR_2D vec_x vec_y temp_float2 // find diff temp_float3 = temp_float2 - temp_float IF temp_float3 > 180.0 temp_float3 += -360.0 ENDIF IF temp_float3 < -180.0 temp_float3 += 360.0 ENDIF temp_float3 *= 0.1 temp_float += temp_float3 SET_CAR_HEADING otank[this_tank] temp_float IF otank_timer[this_tank] > 500 // make sure tank is facing roughly the right direction before it starts firing GET_CAR_COORDINATES otank_target[this_tank] x y z GET_CAR_COORDINATES otank[this_tank] x2 y2 z2 vec_x = x - x2 vec_y = y - y2 vec_z = z - z2 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS otank[this_tank] 0.0 1.0 0.0 x y z vec2_x = x - x2 vec2_y = y - y2 vec2_z = z - z2 GET_ANGLE_BETWEEN_2D_VECTORS vec_x vec_y vec2_x vec2_y temp_float IF temp_float < 5.0 GET_ANGLE_BETWEEN_2D_VECTORS 1.0 vec_z 1.0 0.0 temp_float IF temp_float < 45.0 // fire shot GET_OFFSET_FROM_CAR_IN_WORLD_COORDS otank[this_tank] 0.0 1.5 0.35 bullet_start_x bullet_start_y bullet_start_z GET_CAR_COORDINATES otank_target[this_tank] x y z vec_x = x - bullet_start_x vec_y = y - bullet_start_y vec_z = z - bullet_start_z GET_DISTANCE_BETWEEN_COORDS_3D x y z bullet_start_x bullet_start_y bullet_start_z temp_float vec_x /= temp_float vec_y /= temp_float vec_z /= temp_float vec_x *= 10.0 // range of bullet vec_y *= 10.0 vec_z *= 10.0 bullet_end_x = bullet_start_x + vec_x bullet_end_y = bullet_start_y + vec_y bullet_end_z = bullet_start_z + vec_z IF otank_target[this_tank] = pcar PRINT_NOW Z4_M19 5000 1 // your bandit is taking damage from a tank ENDIF REPORT_MISSION_AUDIO_EVENT_AT_CAR otank[this_tank] SOUND_MINITANK_FIRE FIRE_SINGLE_BULLET bullet_start_x bullet_start_y bullet_start_z bullet_end_x bullet_end_y bullet_end_z 50 //LINE bullet_start_x bullet_start_y bullet_start_z bullet_end_x bullet_end_y bullet_end_z otank_timer[this_tank] = 0 ENDIF ENDIF ENDIF ELSE otank_target[this_tank] = 0 ENDIF ELSE otank_target[this_tank] = 0 ENDIF ENDIF ELSE // IF respawned_tanks < 2 // // respawn new tank // otank_flag[this_tank] = 0 // otank_target[this_tank] = 0 // otank_goto[this_tank] = 0 // MARK_CAR_AS_NO_LONGER_NEEDED otank[this_tank] // REMOVE_BLIP otank_blip[this_tank] // IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY -1131.5034 1028.8577 1344.8498 2.0 2.0 1.0 // CREATE_CAR RCTIGER -1131.5034 1028.8577 344.8498 otank[this_tank] // SET_CAR_HEADING otank[this_tank] 270.0 // ADD_BLIP_FOR_CAR otank[this_tank] otank_blip[this_tank] // CHANGE_BLIP_DISPLAY otank_blip[this_tank] BLIP_ONLY // CHANGE_BLIP_SCALE otank_blip[this_tank] 2 // SET_VEHICLE_AREA_VISIBLE otank[this_tank] 10 // respawned_tanks++ // ENDIF // ELSE IF DOES_BLIP_EXIST otank_blip[this_tank] REMOVE_BLIP otank_blip[this_tank] otank_timer[this_tank] = 0 ENDIF MARK_CAR_AS_NO_LONGER_NEEDED otank[this_tank] //// ENDIF ENDIF RETURN // ================================================================= // GOSUB: Next_Stage (sets flags and timers for next mission stage) // ================================================================= ZERO4_next_stage: m_stage++ m_goals = 0 dialogue_flag = 0 help_flag = 0 dialogue_timer = 0 help_timer = 0 TIMERA = 0 TIMERB = 0 RETURN // ************************************************************************************************************* // END OF LEVEL GOSUBS - fail, pass, cleanup // ************************************************************************************************************* // FAIL mission_failed_ZERO4: PRINT_BIG M_FAIL 5000 1 // // CLEAR_ONSCREEN_TIMER zero4_timer // CLEAR_ONSCREEN_COUNTER z4_pcar_health // WAIT 5000 RETURN // PASS mission_passed_ZERO4: // CLEAR_ONSCREEN_TIMER zero4_timer // CLEAR_ONSCREEN_COUNTER z4_pcar_health // PRINT_WITH_NUMBER_BIG ( M_PASS ) 7000 5000 1 //"Mission Passed!" // REGISTER_MISSION_PASSED ZERO_4 // ADD_SCORE player1 7000 // CLEAR_WANTED_LEVEL player1 // REMOVE_BLIP zero_contact_blip // flag_zero_mission_counter++ RETURN // CLEANUP mission_cleanup_ZERO4: SET_PLAYER_CONTROL player1 OFF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 LOAD_SCENE -2246.9832 136.9301 34.3125 REQUEST_COLLISION -2246.9832 136.9301 SET_CHAR_AREA_VISIBLE scplayer 0 SET_AREA_VISIBLE 0 SET_PLAYER_CONTROL player1 ON CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -2244.6694 132.1672 34.3203 SET_CHAR_HEADING scplayer 92.1110 WHILE IS_CHAR_WAITING_FOR_WORLD_COLLISION scplayer WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer -2244.6694 132.1672 34.3203 SET_CHAR_HEADING scplayer 92.1110 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT LOAD_SCENE -2244.6694 132.1672 34.3203 SET_PLAYER_IS_IN_STADIUM FALSE HIDE_ALL_FRONTEND_BLIPS FALSE // delete all the cars and shit DELETE_CAR pcar DELETE_CAR hidden_car DELETE_CAR pheli DELETE_CAR oheli DELETE_CAR otank[0] DELETE_CAR otank[1] DELETE_CAR otank[2] temp_int = 0 WHILE temp_int < 10 DELETE_OBJECT rock[temp_int] temp_int++ ENDWHILE temp_int = 0 WHILE temp_int < 5 DELETE_OBJECT plank[temp_int] temp_int++ ENDWHILE DELETE_OBJECT rc_bomb DISPLAY_HUD TRUE CLEAR_ONSCREEN_TIMER zero4_timer CLEAR_ONSCREEN_COUNTER z4_pcar_health MARK_MODEL_AS_NO_LONGER_NEEDED RCBANDIT MARK_MODEL_AS_NO_LONGER_NEEDED RCTIGER MARK_MODEL_AS_NO_LONGER_NEEDED RCGOBLIN MARK_MODEL_AS_NO_LONGER_NEEDED BMX REMOVE_BLIP pcar_blip REMOVE_BLIP oheli_blip REMOVE_BLIP otank_blip[0] REMOVE_BLIP otank_blip[1] REMOVE_BLIP otank_blip[2] // === RESTORE ENVIRONMENT SETTINGS === SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_WANTED_MULTIPLIER 1.0 SET_RADAR_ZOOM 0 RESTORE_CLOCK RELEASE_WEATHER //WAIT 2000 // filshie mission passed stuff IF m_passed = 1 CREATE_PROTECTION_PICKUP -2243.0068 136.9601 34.8203 zero_revenue zero_revenue zero_cash_pickup //remember to create the pick 0.5 higher than the dropped coords SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE -2254.8716 133.2548 38.7597 SET_FIXED_CAMERA_POSITION -2254.8716 133.2548 38.7597 0.0 0.0 0.0 //cut scene of building POINT_CAMERA_AT_POINT -2253.8992 133.2602 38.5270 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PLAY_MISSION_PASSED_TUNE 1 PRINT_BIG ASS_ACQ 5000 6 //CAR ASSET ACQUIRED WAIT 5000 SET_FIXED_CAMERA_POSITION -2246.7866 136.6037 36.2636 0.0 0.0 0.0 //cut scene showing pickup POINT_CAMERA_AT_POINT -2245.8250 136.6010 35.9893 JUMP_CUT PRINT_WITH_NUMBER_NOW ASS_LUV zero_revenue 6000 1//This will now generate revenue up to a maximum of $~1~. Make sure you collect it regulary. WAIT 6000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT CLEAR_PRINTS REMOVE_RC_BUGGY // DO_FADE 500 FADE_IN // WHILE GET_FADING_STATUS // WAIT 0 // ENDWHILE // if mission was passed IF m_passed = 1 PRINT_WITH_NUMBER_BIG ( M_PASS ) 7000 5000 1 //"Mission Passed!" REGISTER_MISSION_PASSED ZERO_4 PLAYER_MADE_PROGRESS 1 ADD_SCORE player1 7000 PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL player1 REMOVE_BLIP zero_contact_blip flag_zero_mission_counter++ ENDIF GET_GAME_TIMER timer_mobile_start SET_PLAYER_CONTROL player1 ON flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************** toreno1 aka Monster ************************************ // ***************************************************************************************** // ***************************************************************************************** // *** *** // ***************************************************************************************** SCRIPT_NAME toreno1 // Mission start stuff GOSUB mission_start_toreno1 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_toreno1_failed ENDIF GOSUB mission_cleanup_toreno1 MISSION_END { //////////////////////////// // Variables for mission /// //////////////////////////// LVAR_INT des1_counter LVAR_INT des1_temp_int LVAR_INT des1_number_of_check_points LVAR_INT des1_car_health LVAR_INT des1_temp_counter LVAR_INT des1_task_status LVAR_INT des1_reward ///// timer stuff ///// LVAR_INT des1_timer_start LVAR_INT des1_timer_current LVAR_INT des1_timer_end LVAR_INT des1_total_time LVAR_INT des1_timer_temp LVAR_INT des1_minutes LVAR_INT des1_seconds LVAR_INT des1_out_of_car_start LVAR_INT des1_out_of_car_current ////// on screen display ///// LVAR_FLOAT des1x_pos[7] des1y_pos[7] des1x_scale[7] des1y_scale[7] // cars LVAR_INT des1_player_car // peds LVAR_INT des1_starter_ped //blips LVAR_INT des1_route_blip //flags LVAR_INT des1_mission_progression LVAR_INT des1_safety_flag LVAR_INT des1_car_blip_vis LVAR_INT des1_player_in_car // sequences LVAR_INT des1_starter_seq /// route finding stuff /// LVAR_INT des1_player_index des1_temp_index //coords LVAR_FLOAT des1_ROUTE_x[35] LVAR_FLOAT des1_ROUTE_y[35] LVAR_FLOAT des1_ROUTE_z[35] LVAR_INT des1_route_length LVAR_FLOAT des1_playerx des1_playery des1_playerz // check-points LVAR_INT des1_checkpoint // leader board stuff LVAR_INT des1_board_time[5] VAR_TEXT_LABEL des1_board_name[5] LVAR_INT des1_player_ranking /// ADUIO STUFF /// VAR_TEXT_LABEL des1_text[17] LVAR_INT des1_audio[17] LVAR_INT des1_audio_counter LVAR_INT des1_audio_slot1 des1_audio_slot2 des1_audio_playing LVAR_INT desert1_text_loop_done LVAR_INT des1_mobile LVAR_INT des1_text_timer_diff LVAR_INT des1_text_timer_end LVAR_INT des1_text_timer_start LVAR_INT des1_ahead_counter // ****************************************Mission Start************************************ mission_start_toreno1: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN SET_FADING_COLOUR 0 0 0 FORCE_WEATHER WEATHER_SUNNY_COUNTRYSIDE LOAD_MISSION_TEXT TORENO1 LOAD_CUTSCENE DESERT1 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE CLEAR_AREA -694.4335 964.9288 11.2431 100.0 TRUE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE RELEASE_WEATHER DISPLAY_RADAR 2 //TURN OFF Pathing WAIT 0 // *************************************Set Flags/variables********************************* des1_counter = 0 des1_task_status = 0 des1_reward = 0 des1_timer_start = 0 des1_timer_current = 0 des1_timer_end = 0 des1_total_time = 0 des1_minutes = 0 des1_seconds = 0 des1_out_of_car_start = 0 des1_out_of_car_current = 0 des1_mission_progression = 0 des1_safety_flag = 0 des1_car_blip_vis = 0 des1_player_in_car = 0 des1_counter = 0 des1_temp_counter = 0 des1_player_index = 0 des1_route_length = 33 des1_number_of_check_points = 35 des1x_pos[0] = 582.7242 des1y_pos[0] = 356.2812 des1x_scale[0] = 60.2072// may need to be increased des1y_scale[0] = 52.2072 des1x_pos[1] = 581.7789 des1y_pos[1] = 329.3647 des1x_scale[1] = 0.5427 des1y_scale[1] = 2.0841 des1x_pos[2] = 569.0 des1y_pos[2] = 323.5937 des1x_scale[2] = 0.7585 des1y_scale[2] = 3.8106 des1x_pos[3] = 577.7526 des1y_pos[3] = 335.6341 des1x_scale[3] = 0.4929 des1y_scale[3] = 1.8511 des1x_pos[4] = 583.3384 // time placing des1y_pos[4] = 355.0323 des1x_scale[4] = 0.4993 des1y_scale[4] = 2.6370 des1x_pos[5] = 582.7242 des1y_pos[5] = 356.2812 des1x_scale[5] = 64.2072// may need to be increased des1y_scale[5] = 56.2072 des1x_pos[6] = 582.7242 des1y_pos[6] = 356.2812 des1x_scale[6] = 66.2072 // may need to be increased des1y_scale[6] = 58.2072 /////// CO-ORDINATES //////////// DES1_ROUTE_X[0] = -824.7935 DES1_ROUTE_Y[0] = 1078.2754 DES1_ROUTE_Z[0] = 34.9479 DES1_ROUTE_X[1] = -955.9566 //-920.2867 DES1_ROUTE_Y[1] = 1359.6206//1408.6897 DES1_ROUTE_Z[1] = 33.8826//30.5854 DES1_ROUTE_X[2] = -1030.9991 //-1095.8743 DES1_ROUTE_Y[2] = 1446.2977//1648.5925 DES1_ROUTE_Z[2] = 38.340//33.5612 DES1_ROUTE_X[3] = -1132.6752 //-1170.2841 DES1_ROUTE_Y[3] = 1759.1525//1801.9480 DES1_ROUTE_Z[3] = 35.3673//40.4073 ///////////////////// DES1_ROUTE_X[4] = -1088.9204 //-1114.5194 1873.5863 65.4108 DES1_ROUTE_Y[4] = 1981.8010 DES1_ROUTE_Z[4] = 125.1471 DES1_ROUTE_X[5] = -990.0067 //-987.7365 DES1_ROUTE_Y[5] = 2014.0245//1991.0751 DES1_ROUTE_Z[5] = 113.5758//115.6293 DES1_ROUTE_X[6] = -1028.1370 //-1064.1555 DES1_ROUTE_Y[6] = 2116.4675//2129.4456 DES1_ROUTE_Z[6] = 88.2456//86.7735 /////////////// DES1_ROUTE_X[7] = -1102.4310 DES1_ROUTE_Y[7] = 2369.9448 DES1_ROUTE_Z[7] = 84.0834 DES1_ROUTE_X[8] = -1130.0396 DES1_ROUTE_Y[8] = 2323.3086 DES1_ROUTE_Z[8] = 87.9125 DES1_ROUTE_X[9] = -1150.1838 DES1_ROUTE_Y[9] = 2261.9431 DES1_ROUTE_Z[9] = 96.1878 DES1_ROUTE_X[10] = -1293.3766 //-1327.9843 DES1_ROUTE_Y[10] = 2221.6052//2250.6079 DES1_ROUTE_Z[10] = 98.3220//96.9375 DES1_ROUTE_X[11] = -1349.9104 //-1341.2506 DES1_ROUTE_Y[11] = 2342.3962//2393.0906 DES1_ROUTE_Z[11] = 94.5565//94.5539 ////////////////////////////////// DES1_ROUTE_X[12] = -1285.2140 DES1_ROUTE_Y[12] = 2441.4224 DES1_ROUTE_Z[12] = 88.5570 DES1_ROUTE_X[13] = -1248.6062 DES1_ROUTE_Y[13] = 2596.9902 DES1_ROUTE_Z[13] = 89.817 ////////////////////////////////// DES1_ROUTE_X[14] = -1174.8699 DES1_ROUTE_Y[14] = 2304.5889 DES1_ROUTE_Z[14] = 113.1954 DES1_ROUTE_X[15] = -1094.3529 DES1_ROUTE_Y[15] = 2304.9487 DES1_ROUTE_Z[15] = 85.4543 //////////////////////////////// DES1_ROUTE_X[16] = -1108.6028 //-1113.7892 DES1_ROUTE_Y[16] = 2491.6934//2494.0642 DES1_ROUTE_Z[16] = 79.8438//81.3487 DES1_ROUTE_X[17] = -1224.7633 DES1_ROUTE_Y[17] = 2680.3228 DES1_ROUTE_Z[17] = 46.8193 DES1_ROUTE_X[18] = -1333.6726 //-1384.6338 PETROL STATION DES1_ROUTE_Y[18] = 2660.2051//2673.7705 DES1_ROUTE_Z[18] = 49.0624//52.8626 DES1_ROUTE_X[19] = -1622.4323 DES1_ROUTE_Y[19] = 2670.2620 DES1_ROUTE_Z[19] = 53.5027 ///////////////////////////// DES1_ROUTE_X[20] = -1646.6423 DES1_ROUTE_Y[20] = 2478.2905 DES1_ROUTE_Z[20] = 85.8330 DES1_ROUTE_X[21] = -1742.6581 DES1_ROUTE_Y[21] = 2458.6633 DES1_ROUTE_Z[21] = 71.4663 ///////////////////////////// DES1_ROUTE_X[22] = -1687.2998 DES1_ROUTE_Y[22] = 2394.6926 DES1_ROUTE_Z[22] = 58.0739 DES1_ROUTE_X[23] = -1752.3837 DES1_ROUTE_Y[23] = 2299.2939 DES1_ROUTE_Z[23] = 37.9221 DES1_ROUTE_X[24] = -1687.5840 DES1_ROUTE_Y[24] = 2336.4053 DES1_ROUTE_Z[24] = 32.4859 DES1_ROUTE_X[25] = -1575.4052 DES1_ROUTE_Y[25] = 2275.4121 DES1_ROUTE_Z[25] = 55.2948 DES1_ROUTE_X[26] = -1508.8157 DES1_ROUTE_Y[26] = 1929.0089 DES1_ROUTE_Z[26] = 46.1035 DES1_ROUTE_X[27] = -1330.1467 DES1_ROUTE_Y[27] = 1888.0103 DES1_ROUTE_Z[27] = 46.2572 DES1_ROUTE_X[28] = -1147.8496 DES1_ROUTE_Y[28] = 1721.9263 DES1_ROUTE_Z[28] = 43.4100 DES1_ROUTE_X[29] = -1036.4755 //-1019.4760 DES1_ROUTE_Y[29] = 1564.2968//1518.8257 DES1_ROUTE_Z[29] = 32.8195//41.3999 DES1_ROUTE_X[30] = -995.6179 DES1_ROUTE_Y[30] = 1395.2605 DES1_ROUTE_Z[30] = 40.9086 DES1_ROUTE_X[31] = -810.2653 //-833.2089 DES1_ROUTE_Y[31] = 1149.1143//1195.7451 DES1_ROUTE_Z[31] = 33.0240//32.8746 DES1_ROUTE_X[32] = -702.6020 DES1_ROUTE_Y[32] = 1118.1898 DES1_ROUTE_Z[32] = 35.5621 DES1_ROUTE_X[33] = -700.9643 DES1_ROUTE_Y[33] = 955.2460 DES1_ROUTE_Z[33] = 12.7168 des1_counter = 0 WHILE des1_counter < 34 DES1_ROUTE_Z[des1_counter] -= 1.0 des1_counter++ ENDWHILE des1_counter = 0 ////////////////// AUDIO CRAP ///////////////////////// des1_audio_counter = 0 des1_audio_slot1 = 1 des1_audio_slot2 = 2 des1_audio_playing = 0 desert1_text_loop_done = 0 des1_mobile = 0 des1_text_timer_diff = 0 des1_text_timer_end = 0 des1_text_timer_start = 0 des1_ahead_counter = 0 /// TEXT LABELS //// $des1_text[1] = DES1_BA//Here's the deal, this is all about speed and commitment. $des1_text[2] = DES1_BB//You got a GPS in the cab.Get to each set of map coords as quick as you can. $des1_text[3] = DES1_BC//Make it to all the coordinates then get the truck back here. $des1_text[4] = DES1_BD//Lose the truck and you fail. $des1_text[5] = DES1_BE//What's a GPS? Fail what? Who are you? $des1_text[6] = DES1_BF//Sorry, need-to-know basis only! $des1_text[7] = DES1_BG//Oh, one more thing, this baby's got four-wheel steering. $des1_text[8] = DES1_BH//Goodluck ! $des1_text[9] = DES1_CA//Ok, the boss was right about you! $des1_text[10] = DES1_CB//Not bad at all, I'm semi-hard. $des1_text[11] = DES1_CC//Boy, by the skin of your teeth. $des1_text[12] = DES1_CD//The boss will be in touch. $des1_text[13] = DES1_CE//Sorry pal, you're not what the boss is looking for. $des1_text[14] = DES1_CF//Luck. $des1_text[15] = DES1_CG//Pretty good for a ghetto boy... $des1_text[16] = DES1_BJ //And third, who the fuck are you? /// ADUIO LABELS //// des1_audio[1] = SOUND_DES1_BA//Here's the deal, this is all about speed and commitment. des1_audio[2] = SOUND_DES1_BB//You got a GPS in the cab.Get to each set of map coords as quick as you can. des1_audio[3] = SOUND_DES1_BC//Make it to all the coordinates then get the truck back here. des1_audio[4] = SOUND_DES1_BD//Lose the truck and you fail. des1_audio[5] = SOUND_DES1_BE//What's a GPS? Fail what? Who are you? des1_audio[6] = SOUND_DES1_BF//Sorry, need-to-know basis only! des1_audio[7] = SOUND_DES1_BG//Oh, one more thing, this baby's got four-wheel steering. des1_audio[8] = SOUND_DES1_BH//Goodluck ! des1_audio[9] = SOUND_DES1_CA//Ok, the boss was right about you! des1_audio[10] = SOUND_DES1_CB//Not bad at all, I'm semi-hard. des1_audio[11] = SOUND_DES1_CC//Boy, by the skin of your teeth. des1_audio[12] = SOUND_DES1_CD//The boss will be in touch. des1_audio[13] = SOUND_DES1_CE//Sorry pal, you're not what the boss is looking for. des1_audio[14] = SOUND_DES1_CF//Luck. des1_audio[15] = SOUND_DES1_CG//Pretty good for a ghetto boy... des1_audio[16] = SOUND_DES1_BJ //And third, who the fuck are you? $des1_board_name[0] = DES1_45 //beddoes $des1_board_name[1] = DES1_46 // mcmahon $des1_board_name[2] = DES1_47 // bolt $des1_board_name[3] = DES1_48 // Taylor $des1_board_name[4] = DES1_49 // Wong des1_board_time[0] = 260 // me. though it may be possible to go faster i hit some cars in last section (4 min 17 sec best by me so far) des1_board_time[1] = 300 // chris macmahon des1_board_time[2] = 330 // kevin bolt des1_board_time[3] = 360 // steven taylor des1_board_time[4] = 390 // keven Wong des1_player_ranking = 0 // ****************************************START OF CUTSCENE******************************** // ******************************************END OF CUTSCENE******************************** SET_FADING_COLOUR 0 0 0 WAIT 0 //------------------REQUEST_MODELS ------------------------------ DO_FADE 1500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON REQUEST_MODEL MONSTER REQUEST_MODEL WBDYG2 REQUEST_ANIMATION GANGS //REQUEST_MODEL briefcase WHILE NOT HAS_MODEL_LOADED MONSTER OR NOT HAS_MODEL_LOADED WBDYG2 OR NOT HAS_ANIMATION_LOADED GANGS //OR NOT HAS_MODEL_LOADED briefcase WAIT 0 ENDWHILE CLEAR_AREA -694.4335 964.9288 11.2431 50.0 TRUE CREATE_CAR MONSTER -694.4335 964.9288 11.2431 des1_player_car SET_CAR_HEADING des1_player_car 85.8500 FREEZE_CAR_POSITION des1_player_car TRUE CREATE_CHAR PEDTYPE_MISSION1 WBDYG2 -698.2989 963.0260 11.3035 des1_starter_ped SET_CHAR_HEADING des1_starter_ped 211.0638 GET_CAR_HEALTH des1_player_car des1_car_health ///////// have cutscene here /////// SET_CHAR_COORDINATES scplayer -697.7833 961.7714 11.2955 SET_CHAR_HEADING scplayer 15.8778 SET_FIXED_CAMERA_POSITION -699.15 961.41 12.76 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -685.70 971.97 13.10 JUMP_CUT //CREATE_OBJECT briefcase -719.5559 980.5707 11.1371 des1_merchandise_obj DISPLAY_CAR_NAMES FALSE DISPLAY_ZONE_NAMES FALSE DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD des1_starter_ped TASK_LOOK_AT_CHAR scplayer des1_starter_ped 20000 CLEAR_CHAR_TASKS des1_starter_ped ENDIF des1_audio_counter = 0 des1_audio_slot1 = 1 des1_audio_slot2 = 2 des1_audio_playing = 0 des1_ahead_counter = 0 desert1_text_loop_done = 0 SKIP_CUTSCENE_START desert1_text_loop1: WAIT 0 IF desert1_text_loop_done = 0 ////////////////////////////////////////////////////////////////// /// PLAY THE SPEECH SAMPLES ALONG WITH SOME TALKING ANIMATIONS /// ////////////////////////////////////////////////////////////////// IF NOT des1_audio_counter = 0 IF des1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED des1_audio_slot2 CLEAR_MISSION_AUDIO des1_audio_slot2 ENDIF des1_audio_playing = 1 ENDIF IF des1_audio_playing = 1 LOAD_MISSION_AUDIO des1_audio_slot1 des1_audio[des1_audio_counter] des1_audio_playing = 2 ENDIF IF des1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED des1_audio_slot1 PLAY_MISSION_AUDIO des1_audio_slot1 PRINT_NOW $des1_text[des1_audio_counter] 10000 1 des1_audio_playing = 3 ENDIF ENDIF IF des1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED des1_audio_slot1 CLEAR_THIS_PRINT $des1_text[des1_audio_counter] IF NOT IS_CHAR_DEAD des1_starter_ped STOP_CHAR_FACIAL_TALK des1_starter_ped ENDIF STOP_CHAR_FACIAL_TALK scplayer IF des1_audio_slot1 = 1 des1_audio_slot1 = 2 des1_audio_slot2 = 1 ELSE des1_audio_slot1 = 1 des1_audio_slot2 = 2 ENDIF des1_audio_counter = 0 des1_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED des1_audio_slot2 IF des1_audio_counter < 8 des1_ahead_counter = des1_audio_counter + 1 LOAD_MISSION_AUDIO des1_audio_slot2 des1_audio[des1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH des1_mobile CASE 0 IF des1_audio_playing = 0 IF NOT IS_CHAR_DEAD des1_starter_ped STOP_CHAR_FACIAL_TALK des1_starter_ped START_CHAR_FACIAL_TALK des1_starter_ped 4000 TASK_PLAY_ANIM des1_starter_ped prtial_gngtlkA GANGS 4.0 FALSE FALSE FALSE FALSE -1 // latest addition ENDIF des1_audio_counter = 1 // //Here's the deal, this is all about speed and commitment. des1_mobile = 1 GET_GAME_TIMER des1_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER des1_text_timer_end des1_text_timer_diff = des1_text_timer_end - des1_text_timer_start IF des1_text_timer_diff > 1000 IF des1_audio_playing = 0 IF NOT IS_CHAR_DEAD des1_starter_ped STOP_CHAR_FACIAL_TALK des1_starter_ped START_CHAR_FACIAL_TALK des1_starter_ped 4000 TASK_PLAY_ANIM des1_starter_ped prtial_gngtlkB GANGS 4.0 FALSE FALSE FALSE FALSE -1 // latest addition ENDIF des1_audio_counter = 2 //You got a GPS in the cab.Get to each set of map coords as quick as you can. des1_mobile = 2 GET_GAME_TIMER des1_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER des1_text_timer_end des1_text_timer_diff = des1_text_timer_end - des1_text_timer_start IF des1_text_timer_diff > 1000 IF des1_audio_playing = 0 IF NOT IS_CHAR_DEAD des1_starter_ped STOP_CHAR_FACIAL_TALK des1_starter_ped START_CHAR_FACIAL_TALK des1_starter_ped 4000 TASK_PLAY_ANIM des1_starter_ped prtial_gngtlkF GANGS 4.0 FALSE FALSE FALSE FALSE -1 // latest addition ENDIF des1_audio_counter = 3 //Make it to all the coordinates then get the truck back here. des1_mobile = 3 GET_GAME_TIMER des1_text_timer_start ENDIF ENDIF BREAK CASE 3 GET_GAME_TIMER des1_text_timer_end des1_text_timer_diff = des1_text_timer_end - des1_text_timer_start IF des1_text_timer_diff > 1000 IF des1_audio_playing = 0 IF NOT IS_CHAR_DEAD des1_starter_ped STOP_CHAR_FACIAL_TALK des1_starter_ped START_CHAR_FACIAL_TALK des1_starter_ped 4000 TASK_PLAY_ANIM des1_starter_ped prtial_gngtlkH GANGS 4.0 FALSE FALSE FALSE FALSE -1 // latest addition ENDIF des1_audio_counter = 4 //Lose the truck and you fail. des1_mobile = 4 GET_GAME_TIMER des1_text_timer_start ENDIF ENDIF BREAK CASE 4 GET_GAME_TIMER des1_text_timer_end des1_text_timer_diff = des1_text_timer_end - des1_text_timer_start IF des1_text_timer_diff > 1000 IF des1_audio_playing = 0 IF NOT IS_CHAR_DEAD des1_starter_ped STOP_CHAR_FACIAL_TALK des1_starter_ped START_CHAR_FACIAL_TALK scplayer 4000 CLEAR_CHAR_TASKS des1_starter_ped //TASK_PLAY_ANIM des1_starter_ped IDLE_stance PED 4.0 FALSE FALSE FALSE FALSE -1 // latest addition CLEAR_CHAR_TASKS des1_starter_ped ENDIF OPEN_SEQUENCE_TASK des1_starter_seq TASK_PLAY_ANIM -1 prtial_gngtlkF GANGS 4.0 FALSE FALSE FALSE FALSE -1 // latest addition TASK_PLAY_ANIM -1 prtial_gngtlkD GANGS 4.0 FALSE FALSE FALSE FALSE -1 // latest addition CLOSE_SEQUENCE_TASK des1_starter_seq PERFORM_SEQUENCE_TASK scplayer des1_starter_seq CLEAR_SEQUENCE_TASK des1_starter_seq des1_audio_counter = 5 //What's a GPS? Fail what? Who are you? des1_mobile = 5 GET_GAME_TIMER des1_text_timer_start ENDIF ENDIF BREAK CASE 5 GET_GAME_TIMER des1_text_timer_end des1_text_timer_diff = des1_text_timer_end - des1_text_timer_start IF des1_text_timer_diff > 1000 IF des1_audio_playing = 0 STOP_CHAR_FACIAL_TALK scplayer START_CHAR_FACIAL_TALK scplayer 4000 TASK_PLAY_ANIM scplayer prtial_gngtlkB GANGS 4.0 FALSE FALSE FALSE FALSE -1 // latest addition des1_audio_counter = 16 //And third, who the fuck are you? des1_mobile = 6 GET_GAME_TIMER des1_text_timer_start ENDIF ENDIF BREAK CASE 6 GET_GAME_TIMER des1_text_timer_end des1_text_timer_diff = des1_text_timer_end - des1_text_timer_start IF des1_text_timer_diff > 1000 IF des1_audio_playing = 0 CLEAR_CHAR_TASKS scplayer IF NOT IS_CHAR_DEAD des1_starter_ped STOP_CHAR_FACIAL_TALK scplayer START_CHAR_FACIAL_TALK des1_starter_ped 4000 TASK_PLAY_ANIM des1_starter_ped prtial_gngtlkH GANGS 4.0 FALSE FALSE FALSE FALSE -1 // latest addition ENDIF des1_audio_counter = 6//Sorry, need-to-know basis only! des1_mobile = 7 GET_GAME_TIMER des1_text_timer_start ENDIF ENDIF BREAK CASE 7 GET_GAME_TIMER des1_text_timer_end des1_text_timer_diff = des1_text_timer_end - des1_text_timer_start IF des1_text_timer_diff > 1000 IF des1_audio_playing = 0 IF NOT IS_CHAR_DEAD des1_starter_ped STOP_CHAR_FACIAL_TALK des1_starter_ped START_CHAR_FACIAL_TALK des1_starter_ped 4000 OPEN_SEQUENCE_TASK des1_starter_seq TASK_PLAY_ANIM -1 prtial_gngtlkE GANGS 4.0 FALSE FALSE FALSE FALSE -1 // latest addition TASK_PLAY_ANIM -1 prtial_gngtlkB GANGS 4.0 FALSE FALSE FALSE FALSE -1 // latest addition CLOSE_SEQUENCE_TASK des1_starter_seq PERFORM_SEQUENCE_TASK des1_starter_ped des1_starter_seq CLEAR_SEQUENCE_TASK des1_starter_seq ENDIF des1_audio_counter = 7 //Oh, one more thing, this baby's got four-wheel steering instead. des1_mobile = 8 GET_GAME_TIMER des1_text_timer_start ENDIF ENDIF BREAK CASE 8 GET_GAME_TIMER des1_text_timer_end des1_text_timer_diff = des1_text_timer_end - des1_text_timer_start IF des1_text_timer_diff > 1000 IF des1_audio_playing = 0 IF NOT IS_CHAR_DEAD des1_starter_ped CLEAR_CHAR_TASKS des1_starter_ped //TASK_PLAY_ANIM des1_starter_ped prtial_gngtlkB GANGS 4.0 FALSE FALSE FALSE FALSE -1 // latest addition TASK_PLAY_ANIM des1_starter_ped IDLE_chat PED 4.0 FALSE FALSE FALSE FALSE -1 ENDIF IF NOT IS_CHAR_DEAD des1_starter_ped STOP_CHAR_FACIAL_TALK des1_starter_ped START_CHAR_FACIAL_TALK des1_starter_ped 4000 ENDIF des1_audio_counter = 8 //Goodluck ! des1_mobile = 9 GET_GAME_TIMER des1_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER des1_text_timer_end des1_text_timer_diff = des1_text_timer_end - des1_text_timer_start IF des1_text_timer_diff > 1000 IF des1_audio_playing = 0 IF NOT IS_CHAR_DEAD des1_starter_ped STOP_CHAR_FACIAL_TALK des1_starter_ped ENDIF desert1_text_loop_done = 1 ENDIF ENDIF BREAK ENDSWITCH GOTO desert1_text_loop1 ENDIF ////////////////////////////////////// SKIP_CUTSCENE_END IF NOT IS_CHAR_DEAD des1_starter_ped STOP_CHAR_FACIAL_TALK des1_starter_ped ENDIF STOP_CHAR_FACIAL_TALK scplayer CLEAR_MISSION_AUDIO des1_audio_slot1 CLEAR_MISSION_AUDIO des1_audio_slot2 CLEAR_CHAR_TASKS scplayer IF NOT IS_CHAR_DEAD des1_starter_ped CLEAR_CHAR_TASKS des1_starter_ped ENDIF CLEAR_PRINTS ///////////////////////////////////////////////////////////////////// /// CALCULATE THE TIME THE PLAYER HAS TO BEAT TO PASS THE MISSION /// ///////////////////////////////////////////////////////////////////// des1_minutes = des1_board_time[4] / 60 des1_temp_int = des1_minutes * 60 des1_seconds = des1_board_time[4] - des1_temp_int SKIP_CUTSCENE_START IF des1_seconds > 9 PRINT_WITH_2_NUMBERS_NOW (DES1_69) des1_minutes des1_seconds 4000 1//~s~You need to get a time better than ~1~:~1~. ELSE PRINT_WITH_2_NUMBERS_NOW (DES1_70) des1_minutes des1_seconds 4000 1//~s~You need to get a time better than ~1~:0~1~. ENDIF /////////////////////////////////// WHILE IS_MESSAGE_BEING_DISPLAYED WAIT 0 ENDWHILE SKIP_CUTSCENE_END CLEAR_PRINTS DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DELETE_CHAR des1_starter_ped SET_CHAR_COORDINATES scplayer -691.7533 960.2396 11.2090 ///////////////////////////////////// /////// LEADER BOARD STUFF ////////// ///////////////////////////////////// SKIP_CUTSCENE_START USE_TEXT_COMMANDS TRUE SKIP_CUTSCENE_END CLEAR_PRINTS ////////////////////////////////////////// //////// END OF LEADER BOARD STUFF /////// ////////////////////////////////////////// REMOVE_ANIMATION GANGS CLEAR_LOOK_AT scplayer RESTORE_CAMERA_JUMPCUT //DELETE_OBJECT des1_merchandise_obj CLEAR_CHAR_TASKS scplayer PRINT (DES1_10) 10000 1 //~s~ Get in the monster truck. IF NOT IS_CAR_DEAD des1_player_car FREEZE_CAR_POSITION des1_player_car FALSE DELETE_CHAR des1_starter_ped ADD_BLIP_FOR_CAR des1_player_car des1_route_blip SET_BLIP_AS_FRIENDLY des1_route_blip TRUE ENDIF SET_CHAR_COORDINATES scplayer -697.7833 961.7714 11.2955 SET_CHAR_HEADING scplayer 15.8778 RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON mission_toreno1_loop: WAIT 0 IF des1_mission_progression = 0 IF NOT IS_CAR_DEAD des1_player_car IF IS_CHAR_SITTING_IN_CAR scplayer des1_player_car CLEAR_PRINTS REMOVE_BLIP des1_route_blip ADD_BLIP_FOR_COORD -719.5559 980.5707 11.1371 des1_route_blip SET_COORD_BLIP_APPEARANCE des1_route_blip COORD_BLIP_APPEARANCE_ENEMY CREATE_CHECKPOINT CHECKPOINT_TUBE -719.5559 980.5707 11.1371 des1_ROUTE_x[des1_player_index] des1_ROUTE_y[des1_player_index] des1_ROUTE_z[des1_player_index] 6.0 des1_checkpoint PRINT (DES1_58) 5000 1//~Get to the first check-point.~PRINT (DES1_44) 1000 1//~s~ Get to the next check-point. des1_car_blip_vis = 1 des1_mission_progression = 1 ELSE // PLAYER LEAVES MONSTER TRUCK \\ CLEAR_PRINTS CLEAR_HELP PRINT (DES1_10) 1000 1 //~s~ Get in the monster truck. ENDIF ELSE // TRUCK HAS BEEN DESTROYED \\ CLEAR_PRINTS PRINT (DES1_11) 2000 1 //~r~ How are you going to race without a car! GOTO mission_toreno1_failed ENDIF ENDIF IF des1_mission_progression = 1 IF NOT IS_CAR_DEAD des1_player_car IF IS_CHAR_SITTING_IN_CAR scplayer des1_player_car IF des1_car_blip_vis = 0 // IF THE PLAYER HAS PREVIOUSLY LEFT THE TRUCK ADD THE NEXT CHECK-POINT AND HELP MESSAGE \\ CLEAR_PRINTS PRINT (DES1_58) 5000 1//~Get to the first check-point.~PRINT (DES1_44) 1000 1//~s~ Get to the next check-point. REMOVE_BLIP des1_route_blip ADD_BLIP_FOR_COORD -719.5559 980.5707 11.1371 des1_route_blip CREATE_CHECKPOINT CHECKPOINT_TUBE -719.5559 980.5707 11.1371 des1_ROUTE_x[des1_player_index] des1_ROUTE_y[des1_player_index] des1_ROUTE_z[des1_player_index] 6.0 des1_checkpoint SET_COORD_BLIP_APPEARANCE des1_route_blip COORD_BLIP_APPEARANCE_ENEMY des1_car_blip_vis = 1 ENDIF IF LOCATE_CHAR_IN_CAR_3D scplayer -719.5559 980.5707 11.1371 8.0 8.0 8.5 FALSE CLEAR_PRINTS ADD_ONE_OFF_SOUND -719.5559 980.5707 11.1371 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP des1_route_blip DELETE_CHECKPOINT des1_checkpoint GET_GAME_TIMER des1_timer_start des1_temp_index = 1 CREATE_CHECKPOINT CHECKPOINT_TUBE des1_ROUTE_x[des1_player_index] des1_ROUTE_y[des1_player_index] des1_ROUTE_z[des1_player_index] des1_ROUTE_x[des1_temp_index] des1_ROUTE_y[des1_temp_index] des1_ROUTE_z[des1_temp_index] 6.0 des1_checkpoint ADD_BLIP_FOR_COORD des1_ROUTE_x[des1_player_index] des1_ROUTE_y[des1_player_index] des1_ROUTE_z[des1_player_index] des1_route_blip SET_COORD_BLIP_APPEARANCE des1_route_blip COORD_BLIP_APPEARANCE_ENEMY des1_player_in_car = 1 des1_mission_progression = 2 ENDIF ELSE // player not in car // IF PLAYER IS NOT IN A CAR REMOVE THE CHECKPOINT AND ITS BLIP, ADD BLIP FOR TRUCK AND PRINT MESSAGE \\ IF des1_car_blip_vis = 1 REMOVE_BLIP des1_route_blip //REMOVE_BLIP des1_next_checkpoint_blip DELETE_CHECKPOINT des1_checkpoint ADD_BLIP_FOR_CAR des1_player_car des1_route_blip SET_BLIP_AS_FRIENDLY des1_route_blip TRUE des1_car_blip_vis = 0 CLEAR_HELP CLEAR_PRINTS ENDIF PRINT (DES1_10) 4000 1 //~s~ Get in the monster truck. ENDIF ELSE // car destroyed // IF TRUCK IS DESTROYED FAIL THE MISSION \\ CLEAR_PRINTS PRINT (DES1_11) 2000 1 //~r~ How are you going to race without a car! GOTO mission_toreno1_failed ENDIF ENDIF IF des1_mission_progression = 2 ////////////////////////////// /// ON SCREEN DISPLAY CODE /// ////////////////////////////// IS_WIDGET_PRESSED WIDGET_RACING // Enable the widget. GET_GAME_TIMER des1_timer_current LVAR_INT nElapsedSeconds nElapsedSeconds = des1_timer_current - des1_timer_start // Set these variables for the rendering subroutine. nElapsedSeconds /= 1000 LVAR_FLOAT f0, f1, f2 f0 =# des1_temp_index f1 =# des1_number_of_check_points f2 =# nElapsedSeconds SET_WIDGET_VALUE3 WIDGET_RACING f0, f1, f2 // Send the current checkpoint, max checkpoints, and the time to the widget. SET_WIDGET_VALUE2 WIDGET_RACING 0.0 0.0 // Make sure the widget knows there's no laps to render. // IF PLAYER TAKES TOO LONG TO COMPLETE RACE, FAIL THE MISSION. IF des1_minutes > 99 CLEAR_PRINTS PRINT (DES1_28) 4000 1 //~r~ You're out of time! GOTO mission_toreno1_failed ENDIF // What was this for? it displays "6:30" in a retarded spot on the screen. // DISPLAY THE TIMER \\ /* IF des1_seconds > 9 DISPLAY_TEXT_WITH_2_NUMBERS des1x_pos[4] des1y_pos[4] DES1_65 des1_minutes des1_seconds// ~1~:~1~ ELSE DISPLAY_TEXT_WITH_2_NUMBERS des1x_pos[4] des1y_pos[4] DES1_66 des1_minutes des1_seconds// ~1~:0~1~ ENDIF */ /////////////////////////////// /// END OF ONSCREEN DISPLAY /// /////////////////////////////// ///////////////////// /// PLAYER CHECKS /// ///////////////////// IF NOT IS_CAR_DEAD des1_player_car IF NOT IS_CHAR_IN_CAR scplayer des1_player_car IF des1_player_in_car = 1 // IF PLAYER OUT OF TRUCK STUFF NOT DONE BEFORE ADD A BLIP FOR THE TRUCK AND START THE OUT OF TRUCK TIMER \\ DELETE_CHECKPOINT des1_checkpoint REMOVE_BLIP des1_route_blip ADD_BLIP_FOR_CAR des1_player_car des1_route_blip SET_BLIP_AS_FRIENDLY des1_route_blip TRUE GET_GAME_TIMER des1_out_of_car_start des1_player_in_car = 0 ELSE // CHECK HOW LONG PLAYER HAS BEEN OUT OF THE TRUCK \\ GET_GAME_TIMER des1_out_of_car_current des1_timer_temp = des1_out_of_car_current - des1_out_of_car_start des1_seconds = 10000 - des1_timer_temp des1_seconds /= 1000 IF des1_seconds > 0 // PRINT A MESSAGE INFORMING PLAYER OF HOW LONG HE HAS LEFT TO GET BACK IN THE TRUCK \\ CLEAR_PRINTS ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE IF des1_seconds < 2 PRINT_WITH_NUMBER (DES1_26) des1_seconds 4000 1 //~s~You have ~1~ second back in the truck ELSE PRINT_WITH_NUMBER (DES1_25) des1_seconds 4000 1 //~s~You have ~1~ seconds to get back in the truck ENDIF ELSE // PLAYER IS OUT OF TIME TO GET BACK IN THE TRUCK \\ CLEAR_PRINTS PRINT (DES1_27) 4000 1 //~r~ You been out of the truck for too long! GOTO mission_toreno1_failed ENDIF ENDIF ELSE IF des1_player_in_car = 0 // IF NOT DONE BEFORE AND PLAYER INSIDE TRUCK REMOVE TRUCK BLIP AND ADD CHECKPOINTS \\ REMOVE_BLIP des1_route_blip CLEAR_PRINTS PRINT (DES1_44) 4000 1// ~s~ Get to the next check-point. IF des1_temp_index <= des1_route_length CREATE_CHECKPOINT CHECKPOINT_TUBE des1_ROUTE_x[des1_player_index] des1_ROUTE_y[des1_player_index] des1_ROUTE_z[des1_player_index] des1_ROUTE_x[des1_temp_index] des1_ROUTE_y[des1_temp_index] des1_ROUTE_z[des1_temp_index] 6.0 des1_checkpoint ELSE CREATE_CHECKPOINT CHECKPOINT_ENDTUBE des1_ROUTE_x[des1_player_index] des1_ROUTE_y[des1_player_index] des1_ROUTE_z[des1_player_index] des1_ROUTE_x[des1_route_length] des1_ROUTE_y[des1_route_length] des1_ROUTE_z[des1_route_length] 6.0 des1_checkpoint ENDIF ADD_BLIP_FOR_COORD des1_ROUTE_x[des1_player_index] des1_ROUTE_y[des1_player_index] des1_ROUTE_z[des1_player_index] des1_route_blip SET_COORD_BLIP_APPEARANCE des1_route_blip COORD_BLIP_APPEARANCE_ENEMY des1_player_in_car = 1 ENDIF ENDIF ELSE // TRUCK HAS BEEN DESTROYED CLEAR_PRINTS PRINT (DES1_43) 4000 1 //~r~ You wrecked the truck! GOTO mission_toreno1_failed ENDIF //////////////////////////// /// END OF PLAYER CHECKS /// //////////////////////////// ///////////////////////////////////////////////////////////////////////// /// code for checking players location in relation to the checkpoints /// ///////////////////////////////////////////////////////////////////////// IF des1_player_in_car = 1 IF des1_player_index < des1_route_length IF LOCATE_CHAR_IN_CAR_3D scplayer des1_ROUTE_x[des1_player_index] des1_ROUTE_y[des1_player_index] des1_ROUTE_z[des1_player_index] 8.0 8.0 8.0 FALSE CLEAR_HELP ADD_ONE_OFF_SOUND des1_ROUTE_x[des1_player_index] des1_ROUTE_y[des1_player_index] des1_ROUTE_z[des1_player_index] SOUND_PART_MISSION_COMPLETE DELETE_CHECKPOINT des1_checkpoint REMOVE_BLIP des1_route_blip des1_player_index ++ des1_temp_index = des1_player_index + 1 IF des1_player_index > des1_route_length des1_player_index = des1_route_length ENDIF IF des1_temp_index <= des1_route_length CREATE_CHECKPOINT CHECKPOINT_TUBE des1_ROUTE_x[des1_player_index] des1_ROUTE_y[des1_player_index] des1_ROUTE_z[des1_player_index] des1_ROUTE_x[des1_temp_index] des1_ROUTE_y[des1_temp_index] des1_ROUTE_z[des1_temp_index] 6.0 des1_checkpoint ADD_BLIP_FOR_COORD des1_ROUTE_x[des1_player_index] des1_ROUTE_y[des1_player_index] des1_ROUTE_z[des1_player_index] des1_route_blip SET_COORD_BLIP_APPEARANCE des1_route_blip COORD_BLIP_APPEARANCE_ENEMY ELSE // HEADING TO LAST CHECKPOINT SO DISPLAY THE CHECKERED FLAG ONE \\ CREATE_CHECKPOINT CHECKPOINT_ENDTUBE des1_ROUTE_x[des1_player_index] des1_ROUTE_y[des1_player_index] des1_ROUTE_z[des1_player_index] des1_ROUTE_x[des1_route_length] des1_ROUTE_y[des1_route_length] des1_ROUTE_z[des1_route_length] 6.0 des1_checkpoint ADD_BLIP_FOR_COORD des1_ROUTE_x[des1_player_index] des1_ROUTE_y[des1_player_index] des1_ROUTE_z[des1_player_index] des1_route_blip SET_COORD_BLIP_APPEARANCE des1_route_blip COORD_BLIP_APPEARANCE_ENEMY ENDIF IF NOT IS_CAR_DEAD des1_player_car // GIVE THE TRUCK SOME MORE HEALTH WHEN IT PASSES THROUGH A CHECKPOINT \\ GET_CAR_HEALTH des1_player_car des1_car_health des1_car_health += 200 IF des1_car_health > 1000 des1_car_health = 1000 ENDIF SET_CAR_HEALTH des1_player_car des1_car_health ENDIF ENDIF ELSE IF LOCATE_CHAR_IN_CAR_3D scplayer des1_ROUTE_x[des1_route_length] des1_ROUTE_y[des1_route_length] des1_ROUTE_z[des1_route_length] 4.0 4.0 8.0 FALSE // PLAYER HAS REACHED THE LAST CHECK-POINT \\ DELETE_CHECKPOINT des1_checkpoint REMOVE_BLIP des1_route_blip GOSUB toreno1_end_cut_scene IF des1_player_ranking < 5 GOTO mission_toreno1_passed ELSE PRINT_NOW (DES1_68) 5000 1 //~r~You did not make it into the top five. GOTO mission_toreno1_failed ENDIF ENDIF /// player at end of route ENDIF ENDIF ENDIF // des1_mission_progression = 1 //////////////////////////////////// // DEBUG CRAP // //////////////////////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_NUMPAD_MINUS des1_timer_start -= 1000 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_RETURN GET_CHAR_COORDINATES scplayer des1_playerx des1_playery des1_playerz SET_CHAR_COORDINATES scplayer des1_playerx des1_playery des1_playerz ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_SPACE des1_timer_end = 360000 des1_timer_start = 0 GOSUB toreno1_end_cut_scene GOTO mission_toreno1_passed ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S goto toreno1_end_cut_scene //GOTO mission_toreno1_passed ENDIF GOTO mission_toreno1_loop ///////////////// ///START CODE /// ///////////////// toreno1_end_cut_scene: GET_GAME_TIMER des1_timer_end DO_FADE 1000 FADE_OUT REQUEST_MODEL WBDYG2 REQUEST_ANIMATION GANGS SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON WHILE GET_FADING_STATUS WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED WBDYG2 OR NOT HAS_ANIMATION_LOADED GANGS WAIT 0 ENDWHILE CLEAR_AREA -684.8021 948.1096 11.1250 100.0 TRUE IF NOT IS_CAR_DEAD des1_player_car SET_CAR_COORDINATES des1_player_car -680.7953 953.2972 11.1250 SET_CAR_HEADING des1_player_car 238.0439 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -684.8021 948.1096 11.1250 ELSE SET_CHAR_COORDINATES scplayer -684.8021 948.1096 11.1250 ENDIF SET_CHAR_HEADING scplayer 124.6699 CREATE_CHAR PEDTYPE_MISSION3 WBDYG2 -687.6009 946.4823 12.0389 des1_starter_ped SET_CHAR_HEADING des1_starter_ped 293.1942 SET_FIXED_CAMERA_POSITION -688.32 945.02 14.13 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -680.57 951.17 10.63 JUMP_CUT // SPLIT PALYERS TIME INTO MINUTES / SECONDS \\ des1_total_time = des1_timer_end - des1_timer_start des1_total_time /= 1000 //gets time in seconds des1_minutes = des1_total_time / 60 des1_temp_int = des1_minutes * 60 des1_seconds = des1_total_time - des1_temp_int CLEAR_PRINTS DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF des1_seconds < 10 PRINT_WITH_2_NUMBERS_NOW (DES1_32) des1_minutes des1_seconds 4000 1 //" ~1~:0~1~, lets see how you stand up against our guys." ELSE PRINT_WITH_2_NUMBERS_NOW (DES1_33) des1_minutes des1_seconds 4000 1 //" ~1~:~1~, lets see how you stand up against our guys." ENDIF // FIND WHERE THE PLAYER PLACED COMPARED TO THE OTHER DRIVERS des1_player_ranking = 5 des1_counter = 0 WHILE des1_counter < 5 IF des1_total_time < des1_board_time[des1_counter] des1_player_ranking-- ENDIF des1_counter++ ENDWHILE // DISPLAY THE HIGH-SCORE TABLE RELATING TO PLAYERS POSITION LVAR_INT ndx ndxBot timera = 0 WHILE timera < 5000 ndx = 0 ndxBot = 0 WHILE ndx < 5 // Give the widget the data it needs for display. // // Args are: cell int0 int1(time y/n) color label text //======================================================================================================================================== IF des1_player_ranking = ndx SET_WIDGET_INFO2 WIDGET_RACE_RESULTS ndx des1_total_time 1 WAGER_BLUE DES1_50 DUMMY // CJ's name, and time in seconds. ELSE SET_WIDGET_INFO2 WIDGET_RACE_RESULTS ndx des1_board_time[ndxBot] 1 WAGER_BLUE $des1_board_name[ndxBot] DUMMY // A bot's name and time in seconds. ndxBot++ ENDIF ndx++ ENDWHILE WAIT 0 ENDWHILE des1_audio_counter = 0 des1_audio_slot1 = 1 des1_audio_slot2 = 2 des1_audio_playing = 0 des1_ahead_counter = 0 desert1_text_loop_done = 0 des1_mobile = 0 desert1_text_loop2: WAIT 0 IF desert1_text_loop_done = 0 IF NOT des1_audio_counter = 0 IF des1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED des1_audio_slot2 CLEAR_MISSION_AUDIO des1_audio_slot2 ENDIF des1_audio_playing = 1 ENDIF IF des1_audio_playing = 1 LOAD_MISSION_AUDIO des1_audio_slot1 des1_audio[des1_audio_counter] des1_audio_playing = 2 ENDIF IF des1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED des1_audio_slot1 PLAY_MISSION_AUDIO des1_audio_slot1 PRINT_NOW $des1_text[des1_audio_counter] 10000 1 des1_audio_playing = 3 ENDIF ENDIF IF des1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED des1_audio_slot1 CLEAR_THIS_PRINT $des1_text[des1_audio_counter] IF des1_audio_slot1 = 1 des1_audio_slot1 = 2 des1_audio_slot2 = 1 ELSE des1_audio_slot1 = 1 des1_audio_slot2 = 2 ENDIF des1_audio_counter = 0 des1_audio_playing = 0 desert1_text_loop_done = 1 ENDIF ENDIF ENDIF IF des1_mobile = 0 IF NOT IS_CHAR_DEAD des1_starter_ped STOP_CHAR_FACIAL_TALK des1_starter_ped START_CHAR_FACIAL_TALK des1_starter_ped 4000 TASK_PLAY_ANIM des1_starter_ped prtial_gngtlkF GANGS 4.0 FALSE FALSE FALSE FALSE -1 // latest addition ENDIF SWITCH des1_player_ranking CASE 0 IF des1_audio_playing = 0 des1_audio_counter = 9 // CESAR: CJ. des1_mobile = 1 ENDIF PRINT_NOW $des1_text[des1_audio_counter] 10000 1 des1_reward = 5000 BREAK CASE 1 IF des1_audio_playing = 0 des1_audio_counter = 15 // CESAR: CJ. des1_mobile = 1 ENDIF des1_reward = 4000 PRINT_NOW $des1_text[des1_audio_counter] 10000 1 BREAK CASE 2 IF des1_audio_playing = 0 des1_audio_counter = 10 // CESAR: CJ. des1_mobile = 1 ENDIF des1_reward = 3000 PRINT_NOW $des1_text[des1_audio_counter] 10000 1 BREAK CASE 3 IF des1_audio_playing = 0 des1_audio_counter = 14 // CESAR: CJ. des1_mobile = 1 ENDIF des1_reward = 2000 PRINT_NOW $des1_text[des1_audio_counter] 10000 1 BREAK CASE 4 IF des1_audio_playing = 0 des1_audio_counter = 11 // CESAR: CJ. des1_mobile = 1 ENDIF des1_reward = 1000 PRINT_NOW $des1_text[des1_audio_counter] 10000 1 BREAK DEFAULT // not good enough below this IF des1_audio_playing = 0 des1_audio_counter = 13 // CESAR: CJ. des1_mobile = 1 ENDIF //"Sorry pal, you're not what the boss is looking for" des1_reward = 0 PRINT_NOW $des1_text[des1_audio_counter] 10000 1 BREAK ENDSWITCH ENDIF GOTO desert1_text_loop2 ENDIF IF NOT IS_CHAR_DEAD des1_starter_ped TASK_LOOK_AT_CHAR scplayer des1_starter_ped 4000 CLEAR_CHAR_TASKS des1_starter_ped OPEN_SEQUENCE_TASK des1_starter_seq TASK_GO_STRAIGHT_TO_COORD -1 -688.0 944.0 14.0 PEDMOVE_WALK 20000 TASK_GO_STRAIGHT_TO_COORD -1 -688.0 938.0 14.0 PEDMOVE_WALK 3000 CLOSE_SEQUENCE_TASK des1_starter_seq PERFORM_SEQUENCE_TASK des1_starter_ped des1_starter_seq CLEAR_SEQUENCE_TASK des1_starter_seq ENDIF SET_FIXED_CAMERA_POSITION -685.08 949.38 12.36 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -688.21 938.04 14.72 JUMP_CUT CLEAR_PRINTS IF des1_player_ranking < 5 des1_safety_flag = 0 IF NOT IS_CHAR_DEAD des1_starter_ped STOP_CHAR_FACIAL_TALK des1_starter_ped START_CHAR_FACIAL_TALK des1_starter_ped 4000 ENDIF des1_audio_counter = 12 WHILE des1_safety_flag = 0 IF NOT des1_audio_counter = 0 IF des1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED des1_audio_slot2 CLEAR_MISSION_AUDIO des1_audio_slot2 ENDIF des1_audio_playing = 1 ENDIF IF des1_audio_playing = 1 LOAD_MISSION_AUDIO des1_audio_slot1 des1_audio[des1_audio_counter] des1_audio_playing = 2 ENDIF IF des1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED des1_audio_slot1 PLAY_MISSION_AUDIO des1_audio_slot1 PRINT_NOW $des1_text[des1_audio_counter] 10000 1 des1_audio_playing = 3 ENDIF ENDIF IF des1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED des1_audio_slot1 CLEAR_THIS_PRINT $des1_text[des1_audio_counter] IF des1_audio_slot1 = 1 des1_audio_slot1 = 2 des1_audio_slot2 = 1 ELSE des1_audio_slot1 = 1 des1_audio_slot2 = 2 ENDIF des1_audio_counter = 0 des1_audio_playing = 0 des1_safety_flag = 1 ENDIF ENDIF ENDIF WAIT 0 ENDWHILE ENDIF des1_safety_flag = 0 WHILE des1_safety_flag = 0 IF NOT IS_CHAR_DEAD des1_starter_ped GET_SCRIPT_TASK_STATUS des1_starter_ped PERFORM_SEQUENCE_TASK des1_task_status IF des1_task_status = FINISHED_TASK des1_safety_flag = 1 ENDIF ELSE des1_safety_flag = 1 ENDIF WAIT 0 ENDWHILE CLEAR_CHAR_TASKS scplayer CLEAR_LOOK_AT scplayer DELETE_CHAR des1_starter_ped SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT RETURN setup_text2_des1: SET_TEXT_COLOUR 180 180 180 255 SET_TEXT_SCALE 0.6146 2.4961 SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_JUSTIFY OFF SET_TEXT_CENTRE OFF SET_TEXT_WRAPX 640.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_BACKGROUND OFF SET_TEXT_DROPSHADOW 2 0 0 0 180 RETURN ///////////////////////////////////////// //////// standard pss/fail/ cleanup ///// ///////////////////////////////////////// // Mission toreno1 failed mission_toreno1_failed: PRINT_BIG M_FAIL 5000 1 RETURN // mission toreno1 passed mission_toreno1_passed: PRINT_WITH_NUMBER_BIG M_PASS des1_reward 5000 1 ADD_SCORE player1 des1_reward CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 SET_INT_STAT PASSED_DESERT1 1 REGISTER_MISSION_PASSED ( DESERT1 ) PLAYER_MADE_PROGRESS 1 REMOVE_BLIP desert_contact_blip flag_desert_mission_counter++ RETURN /////////////////////// /// mission cleanup /// /////////////////////// mission_cleanup_toreno1: //TURN PATHING BACK ON DISPLAY_RADAR 3 //REMOVE_BLIP GET_GAME_TIMER timer_mobile_start USE_TEXT_COMMANDS FALSE // cars MARK_CAR_AS_NO_LONGER_NEEDED des1_player_car // peds REMOVE_CHAR_ELEGANTLY des1_starter_ped MARK_CHAR_AS_NO_LONGER_NEEDED des1_starter_ped //blips REMOVE_BLIP des1_route_blip DELETE_CHECKPOINT des1_checkpoint // models MARK_MODEL_AS_NO_LONGER_NEEDED MONSTER MARK_MODEL_AS_NO_LONGER_NEEDED WBDYG2 MARK_MODEL_AS_NO_LONGER_NEEDED DESERT_EAGLE // animations REMOVE_ANIMATION ON_LOOKERS REMOVE_ANIMATION GANGS SET_CAR_DENSITY_MULTIPLIER 1.0 flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************** Toreno 2 ************************************************** // ***************************************************************************************** // ***************************************************************************************** // **************************FAST AND THE FURIOUS******************************************* // ***************************************************************************************** SCRIPT_NAME toreno2 // Mission start stuff GOSUB mission_start_toreno2 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_toreno2_failed ENDIF GOSUB mission_cleanup_toreno2 MISSION_END { // Variables for mission //people LVAR_INT des2_transporter des2_transporter_driver des2_car des2_tanker //LVAR_INT des2_checkpoint LVAR_INT des2_random_car des2_cesars_car //blips LVAR_INT des2_transporter_blip //flags LVAR_INT des2_goals des2_control_flag des2_skip_cutscene_flag des2_deathcheck_flag LVAR_INT des2_car_check_flag des2_flag_cesar_in_group LVAR_INT pos1_flag pos2_flag pos3_flag pos4_flag des2_anim_been_played LVAR_FLOAT des2_anim_time LVAR_FLOAT des2_truck_heading LVAR_INT des2_truck_control_flag LVAR_INT des2_cab_attached LVAR_INT des2_opening_door_flag LVAR_INT des2_health LVAR_INT game_timer_diff game_timer_end game_timer_start game_timer_flag LVAR_FLOAT fForceX fForceY fForceZ LVAR_FLOAT fOffsetX fOffsetY fOffsetZ LVAR_FLOAT fDotProd fTransSpeed LVAR_FLOAT temp1 temp2 temp3 //speech LVAR_INT des2_speech_goals des2_speech_control_flag des2_speech_flag LVAR_TEXT_LABEL des2_print_label[8] LVAR_INT des2_audio_label[8] LVAR_INT des2_last_label LVAR_INT des2_slot1 des2_slot2 des2_slot_load des2_play_which_slot LVAR_INT des2_speech_location_flag[3] LVAR_INT des2_random_last_label LVAR_INT des2_storing_speech_goals_number des2_storing_speech_control_number //coords LVAR_FLOAT in_pos1x in_pos1y in_pos1z in_pos2x in_pos2y in_pos2z LVAR_FLOAT des2_x des2_y des2_z LVAR_FLOAT infront1x infront1y infront2x infront2y LVAR_FLOAT des2_open_door_float //sequences/decision makers/threat lists/attractors/groups LVAR_INT des2_seq des2_empty_decision_maker // ****************************************Mission Start************************************ mission_start_toreno2: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT TORENO2 CLEAR_PRINTS WAIT 0 // *************************************Set Flags/variables********************************* des2_goals = 0 des2_control_flag = 0 des2_skip_cutscene_flag = 0 des2_deathcheck_flag = 0 des2_speech_flag = 0 game_timer_diff = 0 game_timer_end = 0 game_timer_start = 0 game_timer_flag = 0 in_pos1x = 0.0 in_pos1y = 0.0 in_pos1z = 0.0 in_pos2x = 0.0 in_pos2y = 0.0 in_pos2z = 0.0 des2_car_check_flag = 0 des2_flag_cesar_in_group = 0 pos1_flag = 0 pos2_flag = 0 pos3_flag = 0 pos4_flag = 0 des2_anim_been_played = 0 des2_anim_time = 0.0 des2_truck_heading = 0.0 des2_truck_control_flag = 0 des2_x = 0.0 des2_y = 0.0 des2_z = 0.0 infront1x = 0.0 infront1y = 0.0 infront2x = 0.0 infront2y = 0.0 des2_cab_attached = 0 des2_opening_door_flag = 0 des2_open_door_float = 0.0 des2_speech_goals = 0 des2_speech_control_flag = 0 des2_speech_flag = 0 des2_last_label = 0 des2_slot1 = 0 des2_slot2 = 0 des2_slot_load = 0 des2_play_which_slot = 0 des2_speech_location_flag[0] = 0 des2_speech_location_flag[1] = 0 des2_speech_location_flag[2] = 0 des2_random_last_label = 0 des2_storing_speech_goals_number = 0 des2_storing_speech_control_number = 0 des2_health = 0 fForceX = 0.0 fForceY = 0.0 fForceZ = 0.0 fOffsetX = 0.0 fOffsetY = 0.0 fOffsetZ = 0.0 fDotProd = 0.0 fTransSpeed = 0.0 temp1 = 0.0 temp2 = 0.0 temp3 = 0.0 // ****************************************START OF CUTSCENE******************************** CLEAR_AREA -685.1 922.0 10.9 180.0 TRUE CLEAR_AREA -692.2 948.0 11.2 100.0 TRUE FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_VEGAS MAKE_PLAYER_GANG_DISAPPEAR LOAD_CUTSCENE DESERT2 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF MAKE_PLAYER_GANG_REAPPEAR RELEASE_WEATHER // ****************************************END OF CUTSCENE********************************** SET_FADING_COLOUR 0 0 0 WAIT 0 //------------------REQUEST_MODELS ------------------------------ REQUEST_MODEL PETRO REQUEST_MODEL pcj600 REQUEST_MODEL petrotr REQUEST_MODEL SAVANNA REQUEST_ANIMATION BIKELEAP LOAD_SPECIAL_CHARACTER 1 cesar LOAD_PATH_NODES_IN_AREA -1695.1 587.6 -1771.3 -1310.0 REMOVE_GROUP Players_Group SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 TRUE LOAD_ALL_MODELS_NOW //starting intro scripted cut of player, smoke and sweet getting into the car SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_FIXED_CAMERA_POSITION -701.09 917.26 12.08 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -694.0 938.7 16.69 JUMP_CUT //suppress all big vehicles SUPPRESS_CAR_MODEL linerun //SUPPRESS_CAR_MODEL trash SUPPRESS_CAR_MODEL stretch SUPPRESS_CAR_MODEL pony SUPPRESS_CAR_MODEL mule SUPPRESS_CAR_MODEL moonbeam SUPPRESS_CAR_MODEL mrwhoop SUPPRESS_CAR_MODEL securica SUPPRESS_CAR_MODEL bus //SUPPRESS_CAR_MODEL barracks SUPPRESS_CAR_MODEL coach SUPPRESS_CAR_MODEL rumpo //SUPPRESS_CAR_MODEL romero //SUPPRESS_CAR_MODEL packer //SUPPRESS_CAR_MODEL monster SUPPRESS_CAR_MODEL flatbed SUPPRESS_CAR_MODEL yankee SUPPRESS_CAR_MODEL solair //SUPPRESS_CAR_MODEL patriot SUPPRESS_CAR_MODEL burrito SUPPRESS_CAR_MODEL camper //SUPPRESS_CAR_MODEL dozer SUPPRESS_CAR_MODEL rancher SUPPRESS_CAR_MODEL boxville SUPPRESS_CAR_MODEL benson SUPPRESS_CAR_MODEL journey //SUPPRESS_CAR_MODEL petro //SUPPRESS_CAR_MODEL rdtrain SUPPRESS_CAR_MODEL cement SUPPRESS_CAR_MODEL towtruck SUPPRESS_CAR_MODEL cadrona SUPPRESS_CAR_MODEL utility //SUPPRESS_CAR_MODEL dft30 SUPPRESS_CAR_MODEL newsvan //SUPPRESS_CAR_MODEL float1 SUPPRESS_CAR_MODEL hotdog //suppressing bikes for the moment SUPPRESS_CAR_MODEL pcj600 SUPPRESS_CAR_MODEL faggio SUPPRESS_CAR_MODEL freeway SUPPRESS_CAR_MODEL sanchez SUPPRESS_CAR_MODEL bike SUPPRESS_CAR_MODEL mtbike SUPPRESS_CAR_MODEL fcr900 SUPPRESS_CAR_MODEL nrg500 //SUPPRESS_CAR_MODEL copbike SUPPRESS_CAR_MODEL bf400 SUPPRESS_CAR_MODEL wayfarer CLEAR_AREA -693.6 924.5 11.3 1.0 TRUE SET_CHAR_COORDINATES scplayer -693.6 924.5 11.3 SET_CHAR_HEADING scplayer 71.2 CLEAR_AREA -685.1 922.0 10.9 180.0 TRUE CLEAR_AREA -692.2 948.0 11.2 100.0 TRUE //creating bike to take to the car transporter CUSTOM_PLATE_FOR_NEXT_CAR pcj600 preacher CREATE_CAR pcj600 -712.5 943.5 10.8 des2_car SET_CAR_HEADING des2_car 32.7 //creating cesar's car CLEAR_AREA -709.0 952.0 11.2 5.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR SAVANNA &_LVA4L__ CREATE_CAR SAVANNA -709.0 952.0 11.2 des2_cesars_car SET_CAR_HEADING des2_cesars_car 240.7 CHANGE_CAR_COLOUR des2_cesars_car 3 3 //Creating cesar CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 -703.7 932.4 11.4 cesar SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR cesar FALSE SET_CHAR_HEADING cesar 214.6 SET_CHAR_NEVER_TARGETTED cesar TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER cesar TRUE SET_CHAR_CANT_BE_DRAGGED_OUT cesar TRUE COPY_CHAR_DECISION_MAKER DM_PED_EMPTY des2_empty_decision_maker SET_CHAR_DECISION_MAKER cesar des2_empty_decision_maker SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK OPEN_SEQUENCE_TASK des2_seq TASK_GOTO_CHAR_OFFSET -1 scplayer 10000 3.0 0.0 TASK_PAUSE -1 5300 TASK_GO_STRAIGHT_TO_COORD -1 -710.0 938.4 11.4 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK des2_seq PERFORM_SEQUENCE_TASK cesar des2_seq CLEAR_SEQUENCE_TASK des2_seq SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK OPEN_SEQUENCE_TASK des2_seq TASK_GOTO_CHAR_OFFSET -1 cesar 10000 5.0 0.0 TASK_PAUSE -1 5000 TASK_GO_STRAIGHT_TO_COORD -1 -708.0 937.9 11.4 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK des2_seq PERFORM_SEQUENCE_TASK scplayer des2_seq CLEAR_SEQUENCE_TASK des2_seq SHUT_ALL_CHARS_UP TRUE des2_skip_cutscene_flag = 1 SKIP_CUTSCENE_START /* /// debug to take player to last cutscene ///////////////////////////// SKIP_CUTSCENE_END CREATE_CAR PETRO -1687.8 537.7 36.8 des2_transporter SET_CAR_HEADING des2_transporter 137.0 CREATE_CAR petrotr -1679.5 545.9 36.9 des2_tanker SET_CAR_HEADING des2_tanker 137.0 ATTACH_TRAILER_TO_CAB des2_tanker des2_transporter des2_goals = 5 /// debug ///////////////////////////////////////////////////////////// */ LOAD_MISSION_AUDIO 3 SOUND_TRUCK_SMASH_VEHICLE WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE timerb = 0 DO_FADE 500 FADE_IN mission_toreno2_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_toreno2_passed ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// DEATHCHECKS /////////////////////////////////////////////////////////////////////////////////// GOSUB des2_death_checks IF des2_deathcheck_flag = 1 GOTO mission_toreno2_failed ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// Initial Cutscene ////////////////////////////////////////////////////////////////////////////// IF des2_goals = 0 IF des2_control_flag = 0 IF timerb > 1000 des2_speech_goals = 1 des2_speech_control_flag = 0 GOSUB des2_dialogue_setup des2_control_flag = 1 ENDIF ENDIF IF des2_control_flag = 1 IF des2_speech_goals = 0 des2_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB des2_death_checks IF des2_deathcheck_flag = 1 GOTO mission_toreno2_failed ENDIF //skipping cutscene IF des2_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 des2_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB des2_death_checks IF des2_deathcheck_flag = 1 GOTO mission_toreno2_failed ENDIF ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -710.0 938.4 11.4 SET_CHAR_HEADING scplayer 47.9 CLEAR_CHAR_TASKS_IMMEDIATELY cesar SET_CHAR_COORDINATES cesar -708.0 937.9 11.4 SET_CHAR_HEADING cesar 47.9 MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_Group cesar des2_flag_cesar_in_group = 1 SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_GROUP_DEFAULT_TASK_ALLOCATOR Players_Group DEFAULT_TASK_ALLOCATOR_FOLLOW_LIMITED ADD_BLIP_FOR_CAR des2_car des2_transporter_blip SET_BLIP_AS_FRIENDLY des2_transporter_blip TRUE PRINT_NOW ( TOR1_01 ) 7000 1 //You need to use that bike in order to get Cesar close enough to the truck. SHUT_ALL_CHARS_UP FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON //skipping cutscene IF des2_skip_cutscene_flag = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB des2_death_checks IF des2_deathcheck_flag = 1 GOTO mission_toreno2_failed ENDIF ENDIF des2_control_flag = 0 des2_goals = 1 CHECKPOINT_SAVE 99 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////waiting for player and cesar to get on bike //////////////////////////////////////////////////// IF des2_goals = 1 //waiting for player to get on bike initially IF des2_control_flag = 0 IF des2_flag_cesar_in_group = 1 IF IS_CHAR_IN_CAR scplayer des2_car CREATE_CAR PETRO -1687.8 537.7 36.8 des2_transporter SET_CAR_HEADING des2_transporter 137.0 CREATE_CAR petrotr -1679.5 545.9 36.9 des2_tanker SET_CAR_HEADING des2_tanker 137.0 ATTACH_TRAILER_TO_CAB des2_tanker des2_transporter SET_CAN_BURST_CAR_TYRES des2_transporter FALSE LOCK_CAR_DOORS des2_transporter CARLOCK_LOCKOUT_PLAYER_ONLY CREATE_RANDOM_CHAR_AS_DRIVER des2_transporter des2_transporter_driver //SET_CAR_HEAVY des2_transporter TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER des2_transporter TRUE //CREATE_CHECKPOINT CHECKPOINT_TORUS_UPDOWN -1687.8 537.7 38.0 -1687.8 537.7 40.8 1.0 des2_checkpoint SET_CHAR_CAN_BE_SHOT_IN_VEHICLE des2_transporter_driver FALSE SET_CAR_CRUISE_SPEED des2_transporter 0.0 SET_CAR_DRIVING_STYLE des2_transporter 2 SET_CAR_STAY_IN_SLOW_LANE des2_transporter TRUE MARK_CAR_AS_NO_LONGER_NEEDED des2_cesars_car MARK_MODEL_AS_NO_LONGER_NEEDED SAVANNA CLEAR_PRINTS SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar TRUE des2_speech_goals = 2 des2_speech_control_flag = 0 GOSUB des2_dialogue_setup REMOVE_BLIP des2_transporter_blip IF NOT IS_CAR_DEAD des2_transporter ADD_BLIP_FOR_CAR des2_transporter des2_transporter_blip ENDIF des2_speech_flag = 0 des2_goals = 2 ENDIF ENDIF ENDIF GOSUB des2_cesar_group GOSUB des2_bike_blippage ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////waiting for player to pull alongside the truck////////////////////////////////////////////////// /////// des2_anim_been_played = 0 - no animation /////// des2_anim_been_played = 1 - balance anim /////// des2_anim_been_played = 2 - ready anim IF des2_goals = 2 //////////////////////////////////DEBUG//////////////////////// IF IS_CHAR_IN_ANY_CAR scplayer IF IS_CHAR_IN_ANY_CAR cesar IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q LOAD_SCENE -1641.0 586.5 38.5 SET_CHAR_COORDINATES scplayer -1641.0 586.5 38.5 SET_CAR_HEADING des2_car 136.9 ENDIF ENDIF ENDIF //////////////////////////////////DEBUG//////////////////////// //speech for this section IF des2_speech_flag = 0 IF des2_speech_goals = 0 PRINT_NOW ( TOR1_04 ) 7000 1 //The truck is coming from Las Vegas and going to Silicon Valley. des2_speech_flag = 1 ENDIF ENDIF //speech stuff to make sure player isn't going the wrong way IF des2_speech_flag = 1 IF IS_CHAR_IN_CAR scplayer des2_car IF IS_CHAR_IN_CAR cesar des2_car //telling player to pull onto the freeway IF IS_CHAR_IN_ANGLED_AREA_3D scplayer -1042.5 1016.4 15.3 -810.5 1300.7 50.0 250.0 FALSE IF des2_speech_location_flag[0] = 0 IF des2_speech_goals = 0 //We can get on the freeway here, holmes. des2_speech_goals = 3 des2_speech_control_flag = 0 GOSUB des2_dialogue_setup des2_speech_location_flag[0] = 1 ENDIF ENDIF ELSE des2_speech_location_flag[0] = 0 ENDIF //telling player to get off the rail bridge IF IS_CHAR_IN_ANGLED_AREA_3D scplayer -881.0 1029.0 50.9 -970.2 955.7 33.0 -20.0 FALSE IF des2_speech_location_flag[1] = 0 IF des2_speech_goals = 0 //Man, you crazy, this is the rail bridge! des2_speech_goals = 4 GENERATE_RANDOM_INT_IN_RANGE 0 3 des2_speech_control_flag des2_random_last_label = des2_speech_control_flag + 1 GOSUB des2_dialogue_setup des2_speech_location_flag[1] = 1 ENDIF ENDIF ELSE des2_speech_location_flag[1] = 0 ENDIF //telling player to go back because he went to far IF IS_CHAR_IN_ANGLED_AREA_3D scplayer -774.9 1445.6 10.0 -1187.0 1275.6 50.0 -250.0 FALSE IF des2_speech_location_flag[2] = 0 IF des2_speech_goals = 0 //You missed the turnpike, holmes! des2_speech_goals = 5 GENERATE_RANDOM_INT_IN_RANGE 0 3 des2_speech_control_flag des2_random_last_label = des2_speech_control_flag + 1 GOSUB des2_dialogue_setup des2_speech_location_flag[2] = 1 ENDIF ENDIF ELSE des2_speech_location_flag[2] = 0 ENDIF ENDIF ENDIF ENDIF //speech of cesar asking player what the plan is IF des2_speech_flag < 2 IF IS_CHAR_IN_ANGLED_AREA_3D scplayer -1143.8 1041.0 50.9 -1393.7 797.3 33.0 -60.0 FALSE IF des2_speech_goals = 0 //What's the plan? des2_speech_goals = 6 des2_speech_control_flag = 1 des2_random_last_label = 6 GOSUB des2_dialogue_setup des2_speech_flag = 3 ENDIF ENDIF ENDIF //speech of cesar telling player truck is up ahead IF des2_speech_flag = 3 IF des2_speech_goals = 0 IF LOCATE_CHAR_IN_CAR_CAR_2D scplayer des2_transporter 180.0 180.0 FALSE IF IS_CHAR_IN_CAR scplayer des2_car IF IS_CHAR_IN_CAR cesar des2_car //There's the rig up ahead! SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE des2_speech_goals = 6 des2_speech_control_flag = 0 des2_random_last_label = 1 GOSUB des2_dialogue_setup des2_speech_flag = 4 ENDIF ENDIF ENDIF ENDIF ENDIF IF des2_speech_flag = 4 IF des2_speech_goals = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE des2_speech_flag = 5 ENDIF ENDIF ///MAIN BIT FOR THIS SECTION //waiting for the player and cesar to get close to the truck IF des2_control_flag = 0 IF LOCATE_CHAR_IN_CAR_CAR_2D scplayer des2_transporter 180.0 180.0 FALSE SET_CAR_FORWARD_SPEED des2_transporter 35.0 IF NOT IS_CHAR_DEAD des2_transporter_driver OPEN_SEQUENCE_TASK des2_seq TASK_CAR_DRIVE_TO_COORD -1 des2_transporter -1914.6 -1187.7 30.0 15.0 MODE_NORMAL 0 DRIVINGMODE_PLOUGHTHROUGH CLOSE_SEQUENCE_TASK des2_seq PERFORM_SEQUENCE_TASK des2_transporter_driver des2_seq CLEAR_SEQUENCE_TASK des2_seq ENDIF des2_control_flag = 1 ELSE SET_CAR_HEADING des2_transporter 137.0 ENDIF ENDIF IF des2_control_flag = 1 IF LOCATE_CHAR_IN_CAR_CAR_3D scplayer des2_transporter 20.0 20.0 20.0 FALSE IF IS_CHAR_IN_CAR cesar des2_car PRINT_NOW ( TOR1_10 ) 11000 1 //Pull up to the left hand side of the truck and hold the bike in position until Cesar is ready to jump. SET_CAR_CRUISE_SPEED des2_transporter 37.0 des2_control_flag = 2 ENDIF ENDIF ENDIF IF des2_control_flag = 2 IF IS_CHAR_IN_CAR scplayer des2_car IF IS_CHAR_IN_CAR cesar des2_car //correct position - flag 1 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS des2_transporter -3.0 4.0 10.0 in_pos1x in_pos1y in_pos1z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS des2_transporter -3.0 0.0 -10.0 in_pos2x in_pos2y in_pos2z IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_3D scplayer in_pos1x in_pos1y in_pos1z in_pos2x in_pos2y in_pos2z 3.0 FALSE IF pos1_flag = 0 TASK_PLAY_ANIM cesar BK_rdy_in BIKELEAP 4.0 FALSE FALSE FALSE TRUE -1 des2_anim_been_played = 2 PRINT_NOW ( HOLD_1 ) 7000 1 //Hold this position! /* //HOLD HER STEADY SPEECH IF des2_speech_goals = 0 des2_speech_goals = 8 GENERATE_RANDOM_INT_IN_RANGE 0 3 des2_speech_control_flag des2_random_last_label = des2_speech_control_flag + 1 GOSUB des2_dialogue_setup ENDIF */ pos1_flag = 1 ENDIF IF pos1_flag = 1 IF game_timer_flag = 0 GET_GAME_TIMER game_timer_start game_timer_flag = 1 ELSE GET_GAME_TIMER game_timer_end game_timer_diff = game_timer_end - game_timer_start IF game_timer_diff > 3500 SET_PLAYER_CONTROL player1 OFF ATTACH_CAR_TO_CAR des2_car des2_transporter -2.692 2.484 -1.0 0.0 0.0 0.0 //DELETE_CHECKPOINT des2_checkpoint des2_control_flag = 0 des2_truck_control_flag = 0 des2_goals = 3 ENDIF //starting truck switching lanes IF des2_truck_control_flag = 0 IF game_timer_diff > 1000 des2_truck_control_flag = 1 ENDIF ENDIF ENDIF ENDIF ELSE CLEAR_THIS_PRINT HOLD_1 game_timer_flag = 0 pos1_flag = 0 ENDIF //in front of correct position - flag 2 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS des2_transporter -3.0 12.0 10.0 in_pos1x in_pos1y in_pos1z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS des2_transporter -3.0 4.0 -10.0 in_pos2x in_pos2y in_pos2z IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_3D scplayer in_pos1x in_pos1y in_pos1z in_pos2x in_pos2y in_pos2z 3.0 FALSE IF pos2_flag = 0 IF des2_anim_been_played = 0 IF IS_CHAR_PLAYING_ANIM cesar BK_blnce_in GET_CHAR_ANIM_CURRENT_TIME cesar BK_blnce_in des2_anim_time IF des2_anim_time = 1.0 TASK_PLAY_ANIM cesar BK_blnce_in BIKELEAP 4.0 FALSE FALSE FALSE TRUE -1 des2_anim_been_played = 1 ENDIF ELSE TASK_PLAY_ANIM cesar BK_blnce_in BIKELEAP 4.0 FALSE FALSE FALSE TRUE -1 des2_anim_been_played = 1 ENDIF ENDIF IF des2_anim_been_played = 2 TASK_PLAY_ANIM cesar BK_rdy_out BIKELEAP 4.0 FALSE FALSE FALSE FALSE -1 des2_anim_been_played = 1 ENDIF //SLOW DOWN SPEECH IF des2_speech_goals = 0 des2_speech_goals = 10 GENERATE_RANDOM_INT_IN_RANGE 0 3 des2_speech_control_flag des2_random_last_label = des2_speech_control_flag + 1 GOSUB des2_dialogue_setup ENDIF pos2_flag = 1 ENDIF ELSE pos2_flag = 0 ENDIF //to the right of the correct position - flag 3 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS des2_transporter -6.0 8.0 10.0 in_pos1x in_pos1y in_pos1z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS des2_transporter -6.0 -8.0 -10.0 in_pos2x in_pos2y in_pos2z IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_3D scplayer in_pos1x in_pos1y in_pos1z in_pos2x in_pos2y in_pos2z 3.0 FALSE IF pos3_flag = 0 IF des2_anim_been_played = 0 IF IS_CHAR_PLAYING_ANIM cesar BK_blnce_in GET_CHAR_ANIM_CURRENT_TIME cesar BK_blnce_in des2_anim_time IF des2_anim_time = 1.0 TASK_PLAY_ANIM cesar BK_blnce_in BIKELEAP 4.0 FALSE FALSE FALSE TRUE -1 des2_anim_been_played = 1 ENDIF ELSE TASK_PLAY_ANIM cesar BK_blnce_in BIKELEAP 4.0 FALSE FALSE FALSE TRUE -1 des2_anim_been_played = 1 ENDIF ENDIF IF des2_anim_been_played = 2 TASK_PLAY_ANIM cesar BK_rdy_out BIKELEAP 4.0 FALSE FALSE FALSE FALSE -1 des2_anim_been_played = 1 ENDIF //GET CLOSER SPEECH IF des2_speech_goals = 0 des2_speech_goals = 7 GENERATE_RANDOM_INT_IN_RANGE 0 3 des2_speech_control_flag des2_random_last_label = des2_speech_control_flag + 1 GOSUB des2_dialogue_setup ENDIF pos3_flag = 1 ENDIF ELSE pos3_flag = 0 ENDIF //behind the correct position GET_OFFSET_FROM_CAR_IN_WORLD_COORDS des2_transporter -3.0 0.0 10.0 in_pos1x in_pos1y in_pos1z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS des2_transporter -3.0 -8.0 -10.0 in_pos2x in_pos2y in_pos2z IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_3D scplayer in_pos1x in_pos1y in_pos1z in_pos2x in_pos2y in_pos2z 3.0 FALSE IF pos4_flag = 0 IF des2_anim_been_played = 0 IF IS_CHAR_PLAYING_ANIM cesar BK_blnce_in GET_CHAR_ANIM_CURRENT_TIME cesar BK_blnce_in des2_anim_time IF des2_anim_time = 1.0 TASK_PLAY_ANIM cesar BK_blnce_in BIKELEAP 4.0 FALSE FALSE FALSE TRUE -1 des2_anim_been_played = 1 ENDIF ELSE TASK_PLAY_ANIM cesar BK_blnce_in BIKELEAP 4.0 FALSE FALSE FALSE TRUE -1 des2_anim_been_played = 1 ENDIF ENDIF IF des2_anim_been_played = 2 TASK_PLAY_ANIM cesar BK_rdy_out BIKELEAP 4.0 FALSE FALSE FALSE FALSE -1 des2_anim_been_played = 1 ENDIF //SPEED UP SPEECH IF des2_speech_goals = 0 des2_speech_goals = 9 GENERATE_RANDOM_INT_IN_RANGE 0 3 des2_speech_control_flag des2_random_last_label = des2_speech_control_flag + 1 GOSUB des2_dialogue_setup ENDIF pos4_flag = 1 ENDIF ELSE pos4_flag = 0 ENDIF //getting cesar to sit back down IF pos1_flag = 0 AND pos2_flag = 0 AND pos3_flag = 0 AND pos4_flag = 0 IF des2_anim_been_played > 0 TASK_PLAY_ANIM cesar BK_blnce_out BIKELEAP 4.0 FALSE FALSE FALSE FALSE -1 des2_anim_been_played = 0 ENDIF ENDIF ENDIF ENDIF ENDIF GOSUB des2_attaching_cab GOSUB des2_bike_blippage GOSUB des2_cesar_group //GOSUB des2_moving_checkpoint GOSUB des2_slowdown_code GOSUB des2_throwing_cars_out_of_way ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////making the jump///////////////////////////////////////////////////////////////////////////////// //cesar jumping IF des2_goals = 3 IF des2_control_flag = 0 REMOVE_CHAR_FROM_GROUP cesar TASK_PLAY_ANIM cesar Bk_jmp BIKELEAP 4.0 FALSE FALSE FALSE TRUE -1 des2_control_flag = 1 ENDIF IF des2_control_flag = 1 IF IS_CHAR_PLAYING_ANIM cesar Bk_jmp GET_CHAR_ANIM_CURRENT_TIME cesar Bk_jmp des2_anim_time IF des2_anim_time = 1.0 des2_control_flag = 2 ENDIF ENDIF ENDIF IF des2_control_flag = 2 IF NOT IS_CAR_DEAD des2_car REMOVE_CHAR_FROM_CAR_MAINTAIN_POSITION cesar des2_car ENDIF //WARP_CHAR_FROM_CAR_TO_COORD cesar 0.0 0.0 0.0 ATTACH_CHAR_TO_CAR cesar des2_transporter -1.0 0.0 0.0 FACING_RIGHT 360.0 WEAPONTYPE_UNARMED TASK_PLAY_ANIM cesar truck_getin BIKELEAP 1000.0 FALSE FALSE FALSE TRUE -1 IF NOT IS_CAR_DEAD des2_car DETACH_CAR des2_car 0.0 0.0 0.0 0 ENDIF SET_PLAYER_CONTROL player1 ON des2_control_flag = 3 ENDIF IF des2_control_flag > 3 GET_CAR_HEADING des2_transporter des2_truck_heading SET_CHAR_HEADING cesar des2_truck_heading ENDIF IF des2_control_flag = 3 IF IS_CHAR_PLAYING_ANIM cesar truck_getin GET_CHAR_ANIM_CURRENT_TIME cesar truck_getin des2_anim_time IF des2_anim_time > 0.41 //IF des2_anim_time > 0.47 ///////DEBUG - THIS NEEDS TO BE SET TO 0.41 ONCE OPEN_CAR_DOOR works smoothly des2_opening_door_flag = 1 des2_control_flag = 4 ENDIF ENDIF ENDIF IF des2_control_flag = 4 IF IS_CHAR_PLAYING_ANIM cesar truck_getin GET_CHAR_ANIM_CURRENT_TIME cesar truck_getin des2_anim_time IF des2_anim_time > 0.66 IF NOT IS_CHAR_DEAD des2_transporter_driver TASK_PLAY_ANIM des2_transporter_driver truck_driver BIKELEAP 4.0 FALSE FALSE FALSE TRUE -1 des2_truck_control_flag = 1 des2_control_flag = 5 ENDIF ENDIF ENDIF ENDIF IF des2_control_flag = 5 IF IS_CHAR_PLAYING_ANIM cesar truck_getin GET_CHAR_ANIM_CURRENT_TIME cesar truck_getin des2_anim_time IF des2_anim_time = 1.0 IF NOT IS_CHAR_DEAD des2_transporter_driver WARP_CHAR_FROM_CAR_TO_COORD des2_transporter_driver 0.0 0.0 0.0 WARP_CHAR_INTO_CAR_AS_PASSENGER des2_transporter_driver des2_transporter -1 TASK_PLAY_ANIM des2_transporter_driver struggle_driver BIKELEAP 1000.0 TRUE FALSE FALSE TRUE -1 ENDIF TASK_PLAY_ANIM cesar struggle_cesar BIKELEAP 1000.0 TRUE FALSE FALSE TRUE -1 des2_control_flag = 6 ENDIF ENDIF ENDIF IF des2_control_flag = 6 IF des2_truck_control_flag = 16 IF NOT IS_CHAR_DEAD des2_transporter_driver CLEAR_CHAR_TASKS cesar CLEAR_CHAR_TASKS des2_transporter_driver //WARP_CHAR_FROM_CAR_TO_COORD des2_transporter_driver 0.0 0.0 0.0 //ATTACH_CHAR_TO_CAR des2_transporter_driver des2_transporter 0.0 0.0 0.0 FACING_RIGHT 360.0 WEAPONTYPE_UNARMED OPEN_SEQUENCE_TASK des2_seq TASK_LEAVE_CAR_IMMEDIATELY -1 des2_transporter //TASK_PLAY_ANIM -1 truck_jumpout BIKELEAP 1000.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK des2_seq PERFORM_SEQUENCE_TASK des2_transporter_driver des2_seq CLEAR_SEQUENCE_TASK des2_seq des2_control_flag = 8 ENDIF ENDIF ENDIF /* IF des2_control_flag = 7 IF NOT IS_CHAR_DEAD des2_transporter_driver IF IS_CHAR_PLAYING_ANIM des2_transporter_driver truck_jumpout GET_CHAR_ANIM_CURRENT_TIME des2_transporter_driver truck_jumpout des2_anim_time IF des2_anim_time > 0.10 //////////DEBUG this needs to be 0.06 once OPEN_CAR_DOOR is fixed OPEN_CAR_DOOR des2_transporter FRONT_RIGHT_DOOR des2_control_flag = 8 ENDIF ENDIF ENDIF ENDIF */ IF des2_control_flag = 8 IF NOT IS_CHAR_DEAD des2_transporter_driver IF NOT IS_CHAR_IN_ANY_CAR des2_transporter_driver SET_CAR_TEMP_ACTION des2_transporter TEMPACT_NONE -1 SET_CAR_ONLY_DAMAGED_BY_PLAYER des2_transporter FALSE //DETACH_CHAR_FROM_CAR des2_transporter_driver TASK_DEAD des2_transporter_driver DETACH_CHAR_FROM_CAR cesar WARP_CHAR_INTO_CAR_AS_PASSENGER cesar des2_transporter -1 des2_car_check_flag = 1 LOCK_CAR_DOORS des2_transporter CARLOCK_UNLOCKED MARK_MODEL_AS_NO_LONGER_NEEDED pcj600 REMOVE_ANIMATION BIKELEAP RELEASE_PATH_NODES CLEAR_PRINTS REMOVE_BLIP des2_transporter_blip ADD_BLIP_FOR_CAR des2_transporter des2_transporter_blip SET_BLIP_AS_FRIENDLY des2_transporter_blip TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar FALSE PRINT_NOW ( TOR1_11 ) 4000 1 // Get into the truck and drive it back to the garage. des2_control_flag = 0 des2_speech_goals = 0 des2_speech_flag = 0 des2_goals = 4 CHECKPOINT_SAVE 99 ENDIF ENDIF ENDIF //controlling the truck sliding about IF des2_truck_control_flag = 1 SET_CAR_STATUS des2_transporter STATUS_PHYSICS SET_CAR_TEMP_ACTION des2_transporter TEMPACT_TURNLEFT 200 SET_CAR_CRUISE_SPEED des2_transporter 35.0 timera = 0 des2_truck_control_flag = 2 ENDIF IF des2_truck_control_flag = 2 IF timera > 200 SET_CAR_STATUS des2_transporter STATUS_PHYSICS SET_CAR_TEMP_ACTION des2_transporter TEMPACT_GOFORWARD 300 SET_CAR_CRUISE_SPEED des2_transporter 35.0 timera = 0 des2_truck_control_flag = 3 ENDIF ENDIF IF des2_truck_control_flag = 3 IF timera > 300 SET_CAR_STATUS des2_transporter STATUS_PHYSICS SET_CAR_TEMP_ACTION des2_transporter TEMPACT_TURNRIGHT 200 SET_CAR_CRUISE_SPEED des2_transporter 35.0 timera = 0 des2_truck_control_flag = 4 ENDIF ENDIF IF des2_truck_control_flag = 4 IF timera > 200 SET_CAR_STATUS des2_transporter STATUS_PHYSICS SET_CAR_TEMP_ACTION des2_transporter TEMPACT_GOFORWARD 500 SET_CAR_CRUISE_SPEED des2_transporter 35.0 timera = 0 des2_truck_control_flag = 5 ENDIF ENDIF IF des2_truck_control_flag = 5 IF timera > 500 SET_CAR_STATUS des2_transporter STATUS_PHYSICS SET_CAR_TEMP_ACTION des2_transporter TEMPACT_TURNLEFT 500 SET_CAR_CRUISE_SPEED des2_transporter 35.0 timera = 0 des2_truck_control_flag = 6 ENDIF ENDIF IF des2_truck_control_flag = 6 IF timera > 500 SET_CAR_STATUS des2_transporter STATUS_PHYSICS SET_CAR_TEMP_ACTION des2_transporter TEMPACT_GOFORWARD 1000 SET_CAR_CRUISE_SPEED des2_transporter 35.0 timera = 0 des2_truck_control_flag = 7 ENDIF ENDIF IF des2_truck_control_flag = 7 IF timera > 1000 SET_CAR_STATUS des2_transporter STATUS_PHYSICS SET_CAR_TEMP_ACTION des2_transporter TEMPACT_TURNRIGHT 500 SET_CAR_CRUISE_SPEED des2_transporter 35.0 timera = 0 des2_truck_control_flag = 8 ENDIF ENDIF IF des2_truck_control_flag = 8 IF timera > 500 SET_CAR_STATUS des2_transporter STATUS_PHYSICS SET_CAR_TEMP_ACTION des2_transporter TEMPACT_GOFORWARD 1000 SET_CAR_CRUISE_SPEED des2_transporter 35.0 timera = 0 des2_truck_control_flag = 9 ENDIF ENDIF IF des2_truck_control_flag = 9 IF timera > 1000 SET_CAR_STATUS des2_transporter STATUS_PHYSICS SET_CAR_TEMP_ACTION des2_transporter TEMPACT_TURNLEFT 500 SET_CAR_CRUISE_SPEED des2_transporter 35.0 timera = 0 des2_truck_control_flag = 10 ENDIF ENDIF IF des2_truck_control_flag = 10 IF timera > 500 SET_CAR_STATUS des2_transporter STATUS_PHYSICS SET_CAR_TEMP_ACTION des2_transporter TEMPACT_GOFORWARD 1000 SET_CAR_CRUISE_SPEED des2_transporter 35.0 timera = 0 des2_truck_control_flag = 11 ENDIF ENDIF IF des2_truck_control_flag = 11 IF timera > 1000 SET_CAR_STATUS des2_transporter STATUS_PHYSICS SET_CAR_TEMP_ACTION des2_transporter TEMPACT_TURNRIGHT 500 SET_CAR_CRUISE_SPEED des2_transporter 35.0 timera = 0 des2_truck_control_flag = 12 ENDIF ENDIF IF des2_truck_control_flag = 12 IF timera > 500 SET_CAR_STATUS des2_transporter STATUS_PHYSICS SET_CAR_TEMP_ACTION des2_transporter TEMPACT_GOFORWARD 1000 SET_CAR_CRUISE_SPEED des2_transporter 35.0 timera = 0 des2_truck_control_flag = 13 ENDIF ENDIF IF des2_truck_control_flag = 13 IF timera > 1000 SET_CAR_STATUS des2_transporter STATUS_PHYSICS SET_CAR_TEMP_ACTION des2_transporter TEMPACT_TURNLEFT 500 SET_CAR_CRUISE_SPEED des2_transporter 35.0 timera = 0 des2_truck_control_flag = 14 ENDIF ENDIF IF des2_truck_control_flag = 14 IF timera > 500 SET_CAR_STATUS des2_transporter STATUS_PHYSICS SET_CAR_TEMP_ACTION des2_transporter TEMPACT_GOFORWARD 1000 SET_CAR_CRUISE_SPEED des2_transporter 35.0 timera = 0 des2_truck_control_flag = 15 ENDIF ENDIF IF des2_truck_control_flag = 15 IF timera > 1000 SET_CAR_STATUS des2_transporter STATUS_PHYSICS SET_CAR_TEMP_ACTION des2_transporter TEMPACT_HANDBRAKESTRAIGHT 1000 SET_CAR_CRUISE_SPEED des2_transporter 35.0 timera = 0 des2_truck_control_flag = 16 ENDIF ENDIF //opening car door IF des2_opening_door_flag = 1 IF NOT IS_CAR_DOOR_FULLY_OPEN des2_transporter FRONT_LEFT_DOOR des2_open_door_float += 0.1 OPEN_CAR_DOOR_A_BIT des2_transporter FRONT_LEFT_DOOR des2_open_door_float ELSE des2_opening_door_flag = 2 ENDIF ENDIF GOSUB des2_throwing_cars_out_of_way GOSUB des2_attaching_cab ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////driving the truck back to the hub/////////////////////////////////////////////////////////////// IF des2_goals = 4 //////////////////////////////////DEBUG//////////////////////// IF IS_CHAR_IN_ANY_CAR scplayer IF IS_CHAR_IN_ANY_CAR cesar IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q des2_control_flag = 0 des2_goals = 5 ENDIF ENDIF ENDIF //////////////////////////////////DEBUG//////////////////////// IF des2_control_flag = 0 IF IS_CHAR_IN_CAR scplayer des2_transporter IF IS_TRAILER_ATTACHED_TO_CAB des2_tanker des2_transporter REMOVE_BLIP des2_transporter_blip ADD_BLIP_FOR_COORD -2016.5 157.7 26.7 des2_transporter_blip PRINT ( TOR1_06 ) 7000 1 //Drive the truck back to the ~y~garage~s~. des2_cab_attached = 1 ELSE REMOVE_BLIP des2_transporter_blip ADD_BLIP_FOR_CAR des2_tanker des2_transporter_blip SET_BLIP_AS_FRIENDLY des2_transporter_blip TRUE PRINT ( TOR1_21 ) 7000 1 //Reconnect to the ~b~cab~s~. des2_cab_attached = 0 ENDIF SET_RADIO_CHANNEL RS_CLASSIC_HIP_HOP des2_car_check_flag = 1 des2_control_flag = 1 timerb = 0 ENDIF ENDIF IF des2_control_flag = 1 //speech for this section IF des2_speech_flag = 0 IF timerb > 7000 IF des2_cab_attached = 1 IF des2_car_check_flag = 1 des2_speech_goals = 11 des2_speech_control_flag = 0 GOSUB des2_dialogue_setup des2_speech_flag = 1 ENDIF ENDIF ENDIF ENDIF //waiting for player to arrive at the hub IF IS_TRAILER_ATTACHED_TO_CAB des2_tanker des2_transporter IF IS_CHAR_IN_CAR scplayer des2_transporter IF LOCATE_CAR_3D des2_transporter -2016.5 157.7 26.7 4.0 4.0 4.0 TRUE SET_PLAYER_CONTROL player1 OFF des2_control_flag = 0 des2_goals = 5 ENDIF ENDIF ENDIF GOSUB des2_car_blippage GOSUB des2_cab_attached ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////cutscene at hub///////////////////////////////////////////////////////////////////////////////// IF des2_goals = 5 IF des2_control_flag = 0 SET_PLAYER_CONTROL player1 OFF APPLY_BRAKES_TO_PLAYERS_CAR player1 ON CLEAR_PRINTS DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE des2_control_flag = 1 ENDIF IF des2_control_flag = 1 REQUEST_ANIMATION POLICE WHILE NOT HAS_ANIMATION_LOADED POLICE WAIT 0 ENDWHILE OPEN_GARAGE hbgdSFS WHILE NOT IS_GARAGE_OPEN hbgdSFS WAIT 0 ENDWHILE GOSUB des2_death_checks IF des2_deathcheck_flag = 1 GOTO mission_toreno2_failed ENDIF REQUEST_COLLISION -1998.7 178.4 LOAD_SCENE_IN_DIRECTION -1998.7 178.4 26.3 270.0 //LOAD_SCENE -2035.3 180.5 27.8 CLEAR_AREA -1998.7 178.4 26.3 200.0 FALSE SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 IF NOT IS_CAR_DEAD des2_tanker IF IS_TRAILER_ATTACHED_TO_CAB des2_tanker des2_transporter DETACH_TRAILER_FROM_CAB des2_tanker des2_transporter SET_CAR_COORDINATES des2_tanker -1998.7 178.4 26.3 SET_CAR_HEADING des2_tanker 88.7 ENDIF ENDIF //DELETE_CAR des2_tanker SET_CAR_COORDINATES des2_transporter -2006.7 178.4 26.3 SET_CAR_HEADING des2_transporter 88.7 WAIT 0 GOSUB des2_death_checks IF des2_deathcheck_flag = 1 GOTO mission_toreno2_failed ENDIF IF NOT IS_CAR_DEAD des2_tanker ATTACH_TRAILER_TO_CAB des2_tanker des2_transporter ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -2035.3 180.5 27.8 SET_CHAR_HEADING scplayer 277.5 OPEN_SEQUENCE_TASK des2_seq TASK_PLAY_ANIM -1 CopTraf_Come POLICE 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK des2_seq PERFORM_SEQUENCE_TASK scplayer des2_seq CLEAR_SEQUENCE_TASK des2_seq CLEAR_CHAR_TASKS_IMMEDIATELY cesar WARP_CHAR_INTO_CAR cesar des2_transporter TASK_CAR_DRIVE_TO_COORD cesar des2_transporter -2053.3 178.8 27.8 10.0 MODE_NORMAL FALSE DRIVINGMODE_PLOUGHTHROUGH //SET_CAR_STRAIGHT_LINE_DISTANCE des2_transporter 255 //CAR_GOTO_COORDINATES des2_transporter -2053.3 178.8 27.8 //SET_CAR_CRUISE_SPEED des2_transporter 10.0 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 des2_speech_goals = 0 SHUT_ALL_CHARS_UP TRUE SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_FIXED_CAMERA_POSITION -2038.0 182.8 29.2 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2001.0 166.2 31.2 JUMP_CUT DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB des2_death_checks IF des2_deathcheck_flag = 1 GOTO mission_toreno2_failed ENDIF des2_control_flag = 2 ENDIF IF des2_control_flag = 2 GET_SCRIPT_TASK_STATUS scplayer TASK_PLAY_ANIM task_status IF task_status = FINISHED_TASK OPEN_SEQUENCE_TASK des2_seq TASK_PLAY_ANIM -1 CopTraf_Come POLICE 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 CopTraf_left POLICE 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK des2_seq PERFORM_SEQUENCE_TASK scplayer des2_seq CLEAR_SEQUENCE_TASK des2_seq timera = 0 des2_control_flag = 3 ENDIF ENDIF IF des2_control_flag = 3 IF timera > 5000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE UNLOAD_SPECIAL_CHARACTER 1 DELETE_CAR des2_transporter DELETE_CAR des2_tanker CLOSE_GARAGE hbgdSFS WHILE NOT IS_GARAGE_CLOSED hbgdSFS WAIT 0 ENDWHILE SHUT_ALL_CHARS_UP FALSE DO_FADE 500 FADE_IN SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_toreno2_passed ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// Failing mission if transporter makes it back to silicon valley //////////////////////////////// IF des2_goals < 3 IF NOT IS_CHAR_DEAD des2_transporter_driver IF LOCATE_CAR_2D des2_transporter -1914.6 -1187.7 5.0 5.0 FALSE des2_control_flag = 0 des2_goals = 6 ENDIF ENDIF ENDIF IF des2_goals = 6 GOSUB check_player_is_safe IF player_is_completely_safe = 1 IF des2_control_flag = 0 CLEAR_PRINTS DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB des2_death_checks IF des2_deathcheck_flag = 1 GOTO mission_toreno2_failed ENDIF CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 des2_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_FIXED_CAMERA_POSITION -1932.8 -991.8 31.3 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1959.7 -1019.9 43.1 JUMP_CUT IF IS_CHAR_IN_AREA_2D scplayer -1915.0 -977.8 -2013.4 -1074.8 FALSE SET_CHAR_COORDINATES scplayer -1984.5 -1072.9 31.5 ENDIF IF IS_CHAR_IN_AREA_2D cesar -1915.0 -977.8 -2013.4 -1074.8 FALSE SET_CHAR_COORDINATES cesar -1984.5 -1074.9 31.5 ENDIF REQUEST_COLLISION -1984.3 -1045.7 LOAD_SCENE -1984.3 -1045.7 31.6 CLEAR_AREA -1984.3 -1045.7 31.6 25.0 TRUE SET_CAR_COORDINATES des2_transporter -1984.3 -1045.7 31.6 SET_CAR_HEADING des2_transporter 0.0 IF NOT IS_CAR_DEAD des2_tanker SET_CAR_COORDINATES des2_tanker -1984.3 -1055.7 31.6 SET_CAR_HEADING des2_tanker 0.0 ATTACH_TRAILER_TO_CAB des2_tanker des2_transporter ENDIF IF NOT IS_CHAR_DEAD des2_transporter_driver OPEN_SEQUENCE_TASK des2_seq TASK_CAR_DRIVE_TO_COORD -1 des2_transporter -1984.8 -1022.1 31.6 15.0 MODE_NORMAL 0 DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_DRIVE_TO_COORD -1 des2_transporter -1954.4 -1007.4 31.6 15.0 MODE_NORMAL 0 DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_DRIVE_TO_COORD -1 des2_transporter -1943.6 -1040.1 31.6 15.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_DRIVE_TO_COORD -1 des2_transporter -1946.6 -1018.0 31.6 15.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH CLOSE_SEQUENCE_TASK des2_seq PERFORM_SEQUENCE_TASK des2_transporter_driver des2_seq CLEAR_SEQUENCE_TASK des2_seq ENDIF PRINT_NOW ( TOR1_12 ) 11000 1 //You failed to steal the truck! DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 GOSUB des2_attaching_cab ENDWHILE GOSUB des2_death_checks IF des2_deathcheck_flag = 1 GOTO mission_toreno2_failed ENDIF SKIP_CUTSCENE_START des2_control_flag = 1 ENDIF ENDIF IF des2_control_flag = 1 GOSUB des2_attaching_cab IF LOCATE_CAR_2D des2_transporter -1943.6 -1040.1 5.0 5.0 FALSE SKIP_CUTSCENE_END GOSUB des2_death_checks IF des2_deathcheck_flag = 1 GOTO mission_toreno2_failed ENDIF CLEAR_PRINTS PRINT_NOW ( TOR1_12 ) 4000 1 //You failed to steal the truck! GOTO mission_toreno2_failed ENDIF ENDIF ENDIF //ingame dialogue GOSUB des2_overall_dialogue GOTO mission_toreno2_loop // Mission toreno2 failed mission_toreno2_failed: PRINT_BIG M_FAIL 5000 1 RETURN // mission toreno2 passed mission_toreno2_passed: flag_desert_mission_counter ++ //flag_toreno2_mission1_passed = 1 PRINT_WITH_NUMBER_BIG ( M_PASS ) 7000 5000 1 //"Mission Passed!" //100 being the amount of cash ADD_SCORE player1 7000//amount of cash SET_INT_STAT PASSED_DESERT12 1 PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL PLAYER1 REGISTER_MISSION_PASSED DESERT2 REMOVE_BLIP desert_contact_blip PLAYER_MADE_PROGRESS 1 //START_NEW_SCRIPT toreno2_mission_loop RETURN // mission cleanup mission_cleanup_toreno2: IF IS_STRING_EMPTY $shop_name RESTORE_CAMERA_JUMPCUT ENDIF IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF SHUT_ALL_CHARS_UP FALSE RELEASE_PATH_NODES SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 MARK_MODEL_AS_NO_LONGER_NEEDED PETRO MARK_MODEL_AS_NO_LONGER_NEEDED pcj600 MARK_MODEL_AS_NO_LONGER_NEEDED petrotr MARK_MODEL_AS_NO_LONGER_NEEDED SAVANNA REMOVE_CHAR_ELEGANTLY cesar UNLOAD_SPECIAL_CHARACTER 1 REMOVE_ANIMATION BIKELEAP REMOVE_ANIMATION POLICE REMOVE_BLIP des2_transporter_blip GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////// GOSUBS /////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// des2_death_checks://///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF des2_goals < 3 IF IS_CAR_DEAD des2_car CLEAR_PRINTS PRINT_NOW ( TOR1_02 ) 4000 1 //You destroyed the bike. des2_deathcheck_flag = 1 ENDIF ENDIF IF des2_goals > 1 IF IS_CAR_DEAD des2_transporter CLEAR_PRINTS PRINT_NOW ( TOR1_14 ) 4000 1 //The transport has been destroyed. des2_deathcheck_flag = 1 ENDIF IF IS_CAR_DEAD des2_tanker CLEAR_PRINTS PRINT_NOW ( TOR1_14 ) 4000 1 //The transport has been destroyed. des2_deathcheck_flag = 1 ENDIF ENDIF IF IS_CHAR_DEAD cesar CLEAR_PRINTS PRINT_NOW ( TOR1_03 ) 4000 1 //Cesar has been killed. des2_deathcheck_flag = 1 ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// des2_car_blippage:////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //sorting the blippage IF des2_car_check_flag = 0 IF IS_CHAR_IN_CAR scplayer des2_transporter IF NOT IS_TRAILER_ATTACHED_TO_CAB des2_tanker des2_transporter REMOVE_BLIP des2_transporter_blip ADD_BLIP_FOR_CAR des2_tanker des2_transporter_blip SET_BLIP_AS_FRIENDLY des2_transporter_blip TRUE ELSE REMOVE_BLIP des2_transporter_blip ADD_BLIP_FOR_COORD -2016.5 157.7 26.7 des2_transporter_blip ENDIF des2_car_check_flag = 1 ENDIF ENDIF IF des2_car_check_flag = 1 IF NOT IS_CHAR_IN_CAR scplayer des2_transporter REMOVE_BLIP des2_transporter_blip ADD_BLIP_FOR_CAR des2_transporter des2_transporter_blip SET_BLIP_AS_FRIENDLY des2_transporter_blip TRUE des2_car_check_flag = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// des2_cab_attached:////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF des2_car_check_flag = 1 IF NOT IS_CAR_DEAD des2_tanker SET_CAR_HEALTH des2_tanker 1000 IF des2_cab_attached = 1 IF NOT IS_TRAILER_ATTACHED_TO_CAB des2_tanker des2_transporter REMOVE_BLIP des2_transporter_blip ADD_BLIP_FOR_CAR des2_tanker des2_transporter_blip SET_BLIP_AS_FRIENDLY des2_transporter_blip TRUE PRINT_NOW ( TOR1_21 ) 4000 1 //Reconnect to the ~b~cab~s~. des2_cab_attached = 0 ENDIF ENDIF IF des2_cab_attached = 0 IF IS_TRAILER_ATTACHED_TO_CAB des2_tanker des2_transporter REMOVE_BLIP des2_transporter_blip ADD_BLIP_FOR_COORD -2016.5 157.7 26.7 des2_transporter_blip PRINT ( TOR1_06 ) 4000 1 //Drive the truck back to the ~y~garage~s~. des2_cab_attached = 1 ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// des2_bike_blippage:///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //sorting the blippage IF des2_flag_cesar_in_group = 1 IF des2_car_check_flag = 0 IF IS_CHAR_IN_CAR scplayer des2_car CLEAR_THIS_PRINT $des2_print_label[des2_speech_control_flag] CLEAR_THIS_PRINT TOR1_20 REMOVE_BLIP des2_transporter_blip IF NOT IS_CAR_DEAD des2_transporter ADD_BLIP_FOR_CAR des2_transporter des2_transporter_blip ENDIF IF timerb > 8000 IF IS_CHAR_IN_CAR cesar des2_car PRINT_NOW ( TOR1_05 ) 4000 1 // Catch up to the truck. ELSE PRINT_NOW ( TOR1_16 ) 4000 1 // Pick up Cesar then catch up to the truck. ENDIF ENDIF des2_car_check_flag = 1 ENDIF ENDIF IF des2_car_check_flag = 1 IF NOT IS_CHAR_IN_CAR scplayer des2_car CLEAR_THIS_PRINT $des2_print_label[des2_speech_control_flag] CLEAR_THIS_PRINT TOR1_10 CLEAR_THIS_PRINT TOR1_16 REMOVE_BLIP des2_transporter_blip ADD_BLIP_FOR_CAR des2_car des2_transporter_blip SET_BLIP_AS_FRIENDLY des2_transporter_blip TRUE IF timerb > 8000 PRINT_NOW ( TOR1_20 ) 4000 1 //Get back on the bike. ENDIF des2_car_check_flag = 0 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// des2_cesar_group:///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF des2_flag_cesar_in_group = 1 IF NOT IS_GROUP_MEMBER cesar Players_Group REMOVE_BLIP des2_transporter_blip ADD_BLIP_FOR_CHAR cesar des2_transporter_blip SET_BLIP_AS_FRIENDLY des2_transporter_blip TRUE des2_flag_cesar_in_group = 0 ENDIF ENDIF IF des2_flag_cesar_in_group = 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer cesar 8.0 8.0 8.0 FALSE IF NOT IS_GROUP_MEMBER cesar Players_Group MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_Group cesar ENDIF REMOVE_BLIP des2_transporter_blip IF NOT IS_CHAR_IN_CAR scplayer des2_car des2_car_check_flag = 1 ELSE des2_car_check_flag = 0 ENDIF des2_flag_cesar_in_group = 1 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /* //////////////////////////////////////////////////////////////////////////// des2_moving_checkpoint:///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// GET_OFFSET_FROM_CAR_IN_WORLD_COORDS des2_transporter -2.692 2.484 -1.0 des2_x des2_y z //exactly positioned where jump takes place //GET_OFFSET_FROM_CAR_IN_WORLD_COORDS des2_transporter -2.5 2.0 -1.0 des2_x des2_y z //middle of area GET_GROUND_Z_FOR_3D_COORD des2_x des2_y 45.0 des2_z des2_z += 1.0 SET_CHECKPOINT_COORDS des2_checkpoint des2_x des2_y des2_z //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// */ //////////////////////////////////////////////////////////////////////////// des2_attaching_cab:///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD des2_transporter IF NOT IS_CAR_DEAD des2_tanker SET_CAR_HEALTH des2_tanker 1000 IF NOT IS_TRAILER_ATTACHED_TO_CAB des2_tanker des2_transporter ATTACH_TRAILER_TO_CAB des2_tanker des2_transporter ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// des2_slowdown_code:///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD des2_transporter IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer des2_transporter 20.0 20.0 FALSE SET_CAR_CRUISE_SPEED des2_transporter 37.0 ELSE IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer des2_transporter 40.0 40.0 FALSE SET_CAR_CRUISE_SPEED des2_transporter 20.0 ELSE SET_CAR_CRUISE_SPEED des2_transporter 15.0 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// des2_throwing_cars_out_of_way:////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD des2_transporter GET_OFFSET_FROM_CAR_IN_WORLD_COORDS des2_transporter -3.0 2.0 0.0 infront1x infront1y z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS des2_transporter 3.0 11.0 0.0 infront2x infront2y z GET_RANDOM_CAR_OF_TYPE_IN_AREA_NO_SAVE infront1x infront1y infront2x infront2y -1 des2_random_car IF NOT IS_CAR_DEAD des2_random_car IF NOT des2_random_car = des2_car GET_CAR_HEALTH des2_random_car des2_health IF des2_health > 500 GET_CAR_SPEED des2_transporter fTransSpeed // this is used as a force mult //fTransSpeed *= 0.005 fTransSpeed *= 0.02 GET_CAR_FORWARD_X des2_transporter infront1x GET_CAR_FORWARD_Y des2_transporter infront1y infront2x = infront1y infront2y = -1.0 * infront1x // work out which side of the transporter the car is on GET_CAR_COORDINATES des2_random_car fOffsetX fOffsetY fOffsetZ GET_CAR_COORDINATES des2_transporter fForceX fForceY fForceZ fOffsetX -= fForceX fOffsetY -= fForceY // use to decide which direction to shove the offending car temp1 = infront2x * fOffsetX temp2 = infront2y * fOffsetY fDotProd = temp1 + temp2 IF fDotProd < 2.5 IF fDotProd > -2.5 IF fDotProd > 0.0 fDotProd = 1.0 ELSE fDotProd = -1.0 ENDIF // calculate direction of force to apply temp1 = infront1x * fTransSpeed temp2 = fDotProd * infront2x temp2 *= 0.5 temp3 = fTransSpeed * temp2 fForceX = temp1 + temp3 temp1 = infront1y * fTransSpeed temp2 = fDotProd * infront2y temp2 *= 0.5 temp3 = fTransSpeed * temp2 fForceY = temp1 + temp3 fForceZ = fTransSpeed + 0.008 fForceZ *= 0.5 // calculate an offset position so the car spins the correct way fOffsetX = -1.0 fOffsetX *= fDotProd fOffsetX *= infront2x fOffsetX *= fTransSpeed fOffsetY = -1.0 fOffsetY *= fDotProd fOffsetY *= infront2Y fOffsetY *= fTransSpeed fOffsetZ = 0.0 //WRITE_DEBUG workedfine PLAY_MISSION_AUDIO 3 SET_CAR_STATUS des2_random_car STATUS_PHYSICS APPLY_FORCE_TO_CAR des2_random_car fForceX fForceY fForceZ fOffsetX fOffsetY fOffsetZ SET_CAR_HEALTH des2_random_car 499 ENDIF ENDIF CLEAR_CAR_LAST_DAMAGE_ENTITY des2_random_car MARK_CAR_AS_NO_LONGER_NEEDED des2_random_car ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// des2_overall_dialogue://///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF des2_speech_goals = 1 //initial cutscene IF des2_speech_control_flag < des2_last_label GOSUB des2_loading_dialogue GOSUB des2_playing_dialogue GOSUB des2_finishing_dialogue ELSE des2_speech_goals = 0 ENDIF ENDIF IF des2_goals = 1 OR des2_goals = 2 IF des2_goals < 14 OR des2_goals = 16 IF IS_GROUP_MEMBER cesar Players_Group IF LOCATE_CHAR_ANY_MEANS_CHAR_3D cesar scplayer 10.0 10.0 8.0 FALSE IF IS_CHAR_ON_FOOT scplayer AND IS_CHAR_ON_FOOT cesar IF des2_speech_goals = 2 //first convo as player and cesar get on the bike OR des2_speech_goals = 3 //getting on the freeway OR des2_speech_goals = 4 //on wrong bridge OR des2_speech_goals = 5 //missed the freeway OR des2_speech_goals = 6 //coming up to the rig IF des2_speech_control_flag < des2_last_label GOSUB des2_loading_dialogue GOSUB des2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB des2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $des2_print_label[des2_speech_control_flag] des2_slot1 = 0 des2_slot2 = 0 ENDIF ELSE des2_speech_goals = 0 ENDIF ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer AND IS_CHAR_IN_ANY_CAR cesar IF des2_speech_goals = 2 //first convo as player and cesar get on the bike OR des2_speech_goals = 3 //getting on the freeway OR des2_speech_goals = 4 //on wrong bridge OR des2_speech_goals = 5 //missed the freeway OR des2_speech_goals = 6 //coming up to the rig IF des2_speech_control_flag < des2_last_label GOSUB des2_loading_dialogue GOSUB des2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB des2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $des2_print_label[des2_speech_control_flag] des2_slot1 = 0 des2_slot2 = 0 ENDIF ELSE des2_speech_goals = 0 ENDIF ENDIF ENDIF IF IS_CHAR_ON_FOOT scplayer AND IS_CHAR_ON_FOOT cesar IF des2_speech_goals = 7 //HOLD HER STEADY SPEECH OR des2_speech_goals = 9 //SPEED UP SPEECH OR des2_speech_goals = 10 //SLOW DOWN SPEECH IF des2_speech_control_flag < des2_last_label GOSUB des2_loading_dialogue GOSUB des2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB des2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $des2_print_label[des2_speech_control_flag] des2_slot1 = 0 des2_slot2 = 0 ENDIF ELSE des2_speech_goals = 0 ENDIF ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer AND IS_CHAR_IN_ANY_CAR cesar IF des2_speech_goals = 7 //HOLD HER STEADY SPEECH OR des2_speech_goals = 9 //SPEED UP SPEECH OR des2_speech_goals = 10 //SLOW DOWN SPEECH IF des2_speech_control_flag < des2_last_label GOSUB des2_loading_dialogue GOSUB des2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB des2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $des2_print_label[des2_speech_control_flag] des2_slot1 = 0 des2_slot2 = 0 ENDIF ELSE des2_speech_goals = 0 ENDIF ENDIF ENDIF ENDIF /* IF des2_speech_goals = 2 //first convo as player and cesar get on the bike OR des2_speech_goals = 3 //getting on the freeway OR des2_speech_goals = 4 //on wrong bridge OR des2_speech_goals = 5 //missed the freeway OR des2_speech_goals = 6 //coming up to the rig IF des2_speech_control_flag < des2_last_label GOSUB des2_loading_dialogue GOSUB des2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB des2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $des2_print_label[des2_speech_control_flag] des2_slot1 = 0 des2_slot2 = 0 ENDIF ELSE des2_speech_goals = 0 ENDIF ENDIF //OR des2_speech_goals = 8 //getting on the freeway IF des2_speech_goals = 7 //HOLD HER STEADY SPEECH OR des2_speech_goals = 9 //SPEED UP SPEECH OR des2_speech_goals = 10 //SLOW DOWN SPEECH IF des2_speech_control_flag < des2_last_label GOSUB des2_loading_dialogue GOSUB des2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB des2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $des2_print_label[des2_speech_control_flag] des2_slot1 = 0 des2_slot2 = 0 ENDIF ELSE des2_speech_goals = 0 ENDIF ENDIF */ ELSE IF des2_speech_goals < 14 IF des2_speech_control_flag < des2_last_label des2_speech_control_flag ++ ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $des2_print_label[des2_speech_control_flag] CLEAR_PRINTS des2_storing_speech_goals_number = des2_speech_goals des2_storing_speech_control_number = des2_speech_control_flag des2_speech_goals = 14 GENERATE_RANDOM_INT_IN_RANGE 0 4 des2_speech_control_flag des2_random_last_label = des2_speech_control_flag + 1 GOSUB des2_dialogue_setup ENDIF ENDIF IF des2_speech_goals = 14 //cesar is out of the group IF NOT IS_GROUP_MEMBER cesar Players_Group IF des2_speech_control_flag < des2_last_label GOSUB des2_loading_dialogue GOSUB des2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB des2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $des2_print_label[des2_speech_control_flag] des2_slot1 = 0 des2_slot2 = 0 ENDIF ELSE PRINT ( TOR1_13 ) 4000 1 //You have left Cesar behind. des2_speech_goals = 15 ENDIF ELSE PRINT ( TOR1_13 ) 4000 1 //You have left Cesar behind. des2_speech_goals = 15 ENDIF ENDIF IF des2_speech_goals = 15 //cesar has been out of the group and has returned IF IS_GROUP_MEMBER cesar Players_Group des2_speech_goals = 16 des2_speech_control_flag = 0 CLEAR_PRINTS //GOSUB des2_dialogue_setup ENDIF ENDIF IF des2_speech_goals = 16 //cesar is back in group IF IS_GROUP_MEMBER cesar Players_Group timerb = 0 des2_speech_goals = des2_storing_speech_goals_number des2_speech_control_flag = des2_storing_speech_control_number GOSUB des2_dialogue_setup IF des2_storing_speech_goals_number = 0 IF IS_CHAR_IN_CAR scplayer des2_car PRINT ( TOR1_05 ) 7000 1 //~s~Catch up to the ~r~truck~s~. ELSE PRINT ( TOR1_20 ) 4000 1 //Get back on the bike. ENDIF timerb = 0 des2_speech_control_flag = 0 des2_speech_goals = 0 ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $des2_print_label[des2_speech_control_flag] des2_speech_goals = 14 GENERATE_RANDOM_INT_IN_RANGE 0 4 des2_speech_control_flag des2_random_last_label = des2_speech_control_flag + 1 GOSUB des2_dialogue_setup ENDIF ENDIF ENDIF ENDIF IF des2_goals = 4 IF des2_control_flag = 1 IF IS_CHAR_SITTING_IN_CAR scplayer des2_transporter IF des2_speech_goals = 11 //telling player to go to the hub IF des2_speech_control_flag < des2_last_label GOSUB des2_loading_dialogue GOSUB des2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB des2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $des2_print_label[des2_speech_control_flag] des2_slot1 = 0 des2_slot2 = 0 ENDIF ELSE des2_speech_goals = 0 ENDIF ENDIF ENDIF IF NOT IS_CHAR_IN_CAR scplayer des2_transporter IF des2_speech_goals < 17 IF des2_speech_control_flag < des2_last_label des2_speech_control_flag ++ ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS CLEAR_THIS_PRINT $des2_print_label[des2_speech_control_flag] des2_storing_speech_goals_number = des2_speech_goals des2_storing_speech_control_number = des2_speech_control_flag des2_speech_goals = 17 GENERATE_RANDOM_INT_IN_RANGE 0 6 des2_speech_control_flag des2_random_last_label = des2_speech_control_flag + 1 GOSUB des2_dialogue_setup ENDIF ENDIF IF des2_speech_goals = 17 //carl is out of car IF NOT IS_CHAR_IN_CAR scplayer des2_transporter IF des2_speech_control_flag < des2_last_label GOSUB des2_loading_dialogue GOSUB des2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB des2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $des2_print_label[des2_speech_control_flag] des2_slot1 = 0 des2_slot2 = 0 ENDIF ELSE PRINT ( TOR1_11 ) 4000 1 // Get into the truck and drive it back to the garage. des2_speech_goals = 18 ENDIF ENDIF IF IS_CHAR_SITTING_IN_CAR scplayer des2_transporter CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $des2_print_label[des2_speech_control_flag] des2_speech_goals = 19 des2_speech_control_flag = 0 CLEAR_PRINTS //GOSUB des2_dialogue_setup ENDIF ENDIF IF des2_speech_goals = 18 //carl has been out of car and has returned IF IS_CHAR_SITTING_IN_CAR scplayer des2_transporter des2_speech_goals = 19 des2_speech_control_flag = 0 CLEAR_PRINTS //GOSUB des2_dialogue_setup ENDIF ENDIF IF des2_speech_goals = 19 //where player has returned to the car IF IS_CHAR_SITTING_IN_CAR scplayer des2_transporter timerb = 0 des2_speech_goals = des2_storing_speech_goals_number des2_speech_control_flag = des2_storing_speech_control_number GOSUB des2_dialogue_setup IF des2_storing_speech_goals_number = 0 IF des2_cab_attached = 1 PRINT ( TOR1_06 ) 4000 1 //Drive the truck back to the ~y~garage~s~. ELSE PRINT ( TOR1_21 ) 4000 1 //Reconnect to the ~b~cab~s~. ENDIF ENDIF ENDIF IF NOT IS_CHAR_IN_CAR scplayer des2_transporter CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $des2_print_label[des2_speech_control_flag] des2_speech_goals = 17 GENERATE_RANDOM_INT_IN_RANGE 0 6 des2_speech_control_flag des2_random_last_label = des2_speech_control_flag + 1 GOSUB des2_dialogue_setup ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// des2_dialogue_setup:///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF des2_speech_goals = 1 $des2_print_label[0] = &DES2_AA // I got here as fast as I could, CJ. $des2_print_label[1] = &DES2_AB // You sure did, how did you know I needed help? $des2_print_label[2] = &DES2_AC // Man, you losing it, man. $des2_print_label[3] = &DES2_AD // You phoned me not half an hour ago, man! $des2_print_label[4] = &DES2_AE // I did? I mean, oh yeah, I did. $des2_print_label[5] = &DES2_AF // Sorry, dude, a lot on my mind. des2_audio_label[0] = SOUND_DES2_AA des2_audio_label[1] = SOUND_DES2_AB des2_audio_label[2] = SOUND_DES2_AC des2_audio_label[3] = SOUND_DES2_AD des2_audio_label[4] = SOUND_DES2_AE des2_audio_label[5] = SOUND_DES2_AF des2_last_label = 6 ENDIF IF des2_speech_goals = 2 $des2_print_label[0] = &DES2_BA // We need to 'jack a truck on the freeway. $des2_print_label[1] = &DES2_BB // It's headed to San Fierro. des2_audio_label[0] = SOUND_DES2_BA des2_audio_label[1] = SOUND_DES2_BB des2_last_label = 2 ENDIF IF des2_speech_goals = 3 $des2_print_label[0] = &DES2_BC // We can get on the freeway here, holmes. des2_audio_label[0] = SOUND_DES2_BC des2_last_label = 1 ENDIF IF des2_speech_goals = 4 $des2_print_label[0] = &DES2_CA // Man, you crazy, this is the rail bridge! $des2_print_label[1] = &DES2_CB // The road bridge is over there! $des2_print_label[2] = &DES2_CC // We jacking a train, holmes? des2_audio_label[0] = SOUND_DES2_CA des2_audio_label[1] = SOUND_DES2_CB des2_audio_label[2] = SOUND_DES2_CC des2_last_label = des2_random_last_label ENDIF IF des2_speech_goals = 5 $des2_print_label[0] = &DES2_DA // You missed the turnpike, holmes! $des2_print_label[1] = &DES2_DB // The freeway's back there! $des2_print_label[2] = &DES2_DC // Dude, you missed the turn! des2_audio_label[0] = SOUND_DES2_DA des2_audio_label[1] = SOUND_DES2_DB des2_audio_label[2] = SOUND_DES2_DC des2_last_label = des2_random_last_label ENDIF IF des2_speech_goals = 6 $des2_print_label[0] = &DES2_EA // There's the rig up ahead! $des2_print_label[1] = &DES2_EB // What's the plan? $des2_print_label[2] = &DES2_EC // I'm gonna pull alongside and you're gonna hop on board! $des2_print_label[3] = &DES2_ED // Oh shit, you did not mention this on the phone. $des2_print_label[4] = &DES2_EE // It'll be a walk in the park! $des2_print_label[5] = &DES2_EF // Tell Kendl I love her! des2_audio_label[0] = SOUND_DES2_EA des2_audio_label[1] = SOUND_DES2_EB des2_audio_label[2] = SOUND_DES2_EC des2_audio_label[3] = SOUND_DES2_ED des2_audio_label[4] = SOUND_DES2_EE des2_audio_label[5] = SOUND_DES2_EF des2_last_label = des2_random_last_label ENDIF IF des2_speech_goals = 7 $des2_print_label[0] = &DES2_FA // Closer, CJ, closer! $des2_print_label[1] = &DES2_FB // Just a little closer! $des2_print_label[2] = &DES2_FC // I am not a kangaroo, holmes, get closer! des2_audio_label[0] = SOUND_DES2_FA des2_audio_label[1] = SOUND_DES2_FB des2_audio_label[2] = SOUND_DES2_FC des2_last_label = des2_random_last_label ENDIF /* IF des2_speech_goals = 8 $des2_print_label[0] = &DES2_GA // Hold her steady, CJ! $des2_print_label[1] = &DES2_GB // Steady... steady! $des2_print_label[2] = &DES2_GC // Just let me get my balance! des2_audio_label[0] = SOUND_DES2_GA des2_audio_label[1] = SOUND_DES2_GB des2_audio_label[2] = SOUND_DES2_GC des2_last_label = des2_random_last_label ENDIF */ IF des2_speech_goals = 9 $des2_print_label[0] = &DES2_HA // Speed up, CJ! $des2_print_label[1] = &DES2_HB // Match the truck's speed! $des2_print_label[2] = &DES2_HC // Keep level, CJ, keep it level! des2_audio_label[0] = SOUND_DES2_HA des2_audio_label[1] = SOUND_DES2_HB des2_audio_label[2] = SOUND_DES2_HC des2_last_label = des2_random_last_label ENDIF IF des2_speech_goals = 10 $des2_print_label[0] = &DES2_JA // Slow down, CJ! $des2_print_label[1] = &DES2_JB // Just a bit slower! $des2_print_label[2] = &DES2_JC // Calm it down, CJ, you're too fast! des2_audio_label[0] = SOUND_DES2_JA des2_audio_label[1] = SOUND_DES2_JB des2_audio_label[2] = SOUND_DES2_JC des2_last_label = des2_random_last_label ENDIF IF des2_speech_goals = 11 $des2_print_label[0] = &DES2_KA // Ok, CJ, let's get this rig back to the garage! //$des2_print_label[1] = &DES2_KB // Where we going to take this thing? //$des2_print_label[2] = &DES2_KC // There's a haulage firm over in Whetstone county. //$des2_print_label[3] = &DES2_KD // We can take it there and get some cash for it. //$des2_print_label[4] = &DES2_KE // Ok, Drop me off and I'll make my own way back to the garage. des2_audio_label[0] = SOUND_DES2_KA //des2_audio_label[1] = SOUND_DES2_KB //des2_audio_label[2] = SOUND_DES2_KC //des2_audio_label[3] = SOUND_DES2_KC //des2_audio_label[4] = SOUND_DES2_KC des2_last_label = 1 ENDIF IF des2_speech_goals = 12 $des2_print_label[0] = &DES2_LA // See you later, holmes! des2_audio_label[0] = SOUND_DES2_LA des2_last_label = 1 ENDIF IF des2_speech_goals = 14 $des2_print_label[0] = &CESX_BA // Wait up, CJ! $des2_print_label[1] = &CESX_BB // Hang ten, CJ! $des2_print_label[2] = &CESX_BC // Hold up! $des2_print_label[3] = &CESX_BD // Slow down, Carl! des2_audio_label[0] = SOUND_CESX_BA des2_audio_label[1] = SOUND_CESX_BB des2_audio_label[2] = SOUND_CESX_BC des2_audio_label[3] = SOUND_CESX_BD des2_last_label = des2_random_last_label ENDIF IF des2_speech_goals = 17 $des2_print_label[0] = &CESX_AA // Get in, CJ, get in! $des2_print_label[1] = &CESX_AB // Hop in, holmes! $des2_print_label[2] = &CESX_AC // All aboard - heh heh! $des2_print_label[3] = &CESX_AD // You got shotgun, CJ! $des2_print_label[4] = &CESX_AE // Get in the car, CJ! $des2_print_label[5] = &CESX_AF // Jump in, CJ, quick! des2_audio_label[0] = SOUND_CESX_AA des2_audio_label[1] = SOUND_CESX_AB des2_audio_label[2] = SOUND_CESX_AC des2_audio_label[3] = SOUND_CESX_AD des2_audio_label[4] = SOUND_CESX_AE des2_audio_label[5] = SOUND_CESX_AF des2_last_label = des2_random_last_label ENDIF des2_slot_load = des2_speech_control_flag des2_slot1 = 0 des2_slot2 = 0 des2_play_which_slot = 1 //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// des2_loading_dialogue:////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF des2_slot_load < des2_last_label //slot 1 IF des2_slot1 = 0 LOAD_MISSION_AUDIO 1 des2_audio_label[des2_slot_load] des2_slot_load ++ des2_slot1 = 1 ENDIF //slot 2 IF des2_slot2 = 0 LOAD_MISSION_AUDIO 2 des2_audio_label[des2_slot_load] des2_slot_load ++ des2_slot2 = 1 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// des2_playing_dialogue:////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //slot 1 IF des2_play_which_slot = 1 IF des2_slot1 = 1 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $des2_print_label[des2_speech_control_flag] ) 4500 1 des2_slot1 = 2 ENDIF ENDIF ENDIF //slot 2 IF des2_play_which_slot = 2 IF des2_slot2 = 1 IF HAS_MISSION_AUDIO_LOADED 2 PLAY_MISSION_AUDIO 2 PRINT_NOW ( $des2_print_label[des2_speech_control_flag] ) 4500 1 des2_slot2 = 2 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// des2_finishing_dialogue://////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //slot 1 IF des2_slot1 = 2 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_THIS_PRINT $des2_print_label[des2_speech_control_flag] des2_speech_control_flag ++ des2_play_which_slot = 2 des2_slot1 = 0 ENDIF ENDIF //slot 2 IF des2_slot2 = 2 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT $des2_print_label[des2_speech_control_flag] des2_speech_control_flag ++ des2_play_which_slot = 1 des2_slot2 = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : Interdiction // AUTHOR : Neil // DESICRIPTION : // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // globals VAR_INT desert3_mission_attempts { // ************************************************************************************************************* // GENERAL INITIALISATION - Every level requires this // ************************************************************************************************************* SCRIPT_NAME DES3 GOSUB mission_start_DES3 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_DES3 ENDIF GOSUB mission_cleanup_DES3 MISSION_END mission_start_DES3: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 // general variables that are in every mission - DON'T DECLARE MISSION SPECIFIC VARIABLES HERE LVAR_INT m_stage LVAR_INT m_goals LVAR_INT m_passed LVAR_INT m_failed LVAR_INT m_quit LVAR_INT m_frame_num LVAR_INT m_this_frame_time LVAR_INT m_last_frame_time LVAR_INT m_time_diff // commonly used temporary variables LVAR_INT temp_int temp_int2 temp_int3 LVAR_FLOAT temp_float temp_float2 temp_float3 LVAR_INT temp_seq LVAR_FLOAT vec_x vec_y vec_z LVAR_FLOAT vec2_x vec2_y vec2_z LVAR_FLOAT x2 y2 z2 LVAR_FLOAT x3 y3 z3 // commonly used flags LVAR_INT dialogue_flag LVAR_INT help_flag // commonly used timers LVAR_INT dialogue_timer LVAR_INT help_timer // commonly used decision makers LVAR_INT empty_dm LVAR_INT tough_dm m_stage = 0 m_goals = 0 m_passed = 0 m_failed = 0 m_quit = 0 dialogue_flag = 0 help_flag = 0 dialogue_timer = 0 help_timer = 0 TIMERA = 0 TIMERB = 0 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY empty_dm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH tough_dm mission_loop_DES3: WAIT 0 IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S m_passed = 1 ENDIF // end of debug tools ************** // Frame counter m_frame_num++ IF m_frame_num > 10 m_frame_num = 0 ENDIF // Additional Timers GET_GAME_TIMER m_this_frame_time m_time_diff = m_this_frame_time - m_last_frame_time m_last_frame_time = m_this_frame_time dialogue_timer += m_time_diff help_timer += m_time_diff alpha_heli_timer += m_time_diff bravo_heli_timer += m_time_diff fed_timer += m_time_diff fed_timer2 += m_time_diff swing_timer_until_landed -= m_time_diff pheli_health_timer += m_time_diff GOSUB d3_debug_tools SWITCH m_stage CASE 0 GOSUB d3_m_stage_0 BREAK CASE 1 GOSUB d3_m_stage_1 BREAK CASE 2 GOSUB d3_m_stage_2 BREAK CASE 3 GOSUB d3_m_stage_3 BREAK CASE 4 GOSUB d3_m_stage_4 BREAK CASE 5 GOSUB d3_m_stage_5 BREAK CASE 6 GOSUB d3_m_stage_6 BREAK ENDSWITCH GOSUB d3_global_functions // end of main loop *** don't change *** end_of_main_loop_DES3: IF m_quit = 0 IF m_failed = 0 IF m_passed = 0 GOTO mission_loop_DES3 ELSE GOSUB mission_passed_DES3 RETURN ENDIF ELSE GOSUB mission_failed_DES3 RETURN ENDIF ELSE RETURN // quits out - goes to cleanup ENDIF // ************************************************************************************************************* // DEBUG TOOLS // ************************************************************************************************************* d3_debug_tools: LVAR_INT debug_on IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_X IF debug_on = 0 debug_on = 1 WRITE_DEBUG LEVEL_DEBUG_ON ELSE debug_on = 0 WRITE_DEBUG LEVEL_DEBUG_OFF ENDIF ENDIF IF debug_on = 1 // Display mission stage variables for debug LVAR_INT display_debug VAR_INT DES3_view_debug[8] VAR_FLOAT DES3_view_debug_f[8] IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_SPACE display_debug++ IF display_debug > 6 display_debug = 0 ENDIF CLEAR_ALL_VIEW_VARIABLES ENDIF IF display_debug = 1 // system variables DES3_view_debug[0] = m_stage DES3_view_debug[1] = m_goals DES3_view_debug[2] = dialogue_flag DES3_view_debug[3] = dialogue_timer DES3_view_debug[4] = help_flag DES3_view_debug[5] = help_timer DES3_view_debug[6] = TIMERA DES3_view_debug[7] = TIMERB VIEW_INTEGER_VARIABLE DES3_view_debug[0] m_stage VIEW_INTEGER_VARIABLE DES3_view_debug[1] m_goals VIEW_INTEGER_VARIABLE DES3_view_debug[2] dialogue_flag VIEW_INTEGER_VARIABLE DES3_view_debug[3] dialogue_timer VIEW_INTEGER_VARIABLE DES3_view_debug[4] help_flag VIEW_INTEGER_VARIABLE DES3_view_debug[5] help_timer VIEW_INTEGER_VARIABLE DES3_view_debug[6] TIMERA VIEW_INTEGER_VARIABLE DES3_view_debug[7] TIMERB ENDIF IF display_debug = 2 // put mission variable for display in here DES3_view_debug[0] = pheli_progress DES3_view_debug[1] = bravo_ped_flag[0] DES3_view_debug[2] = bravo_ped_flag[1] DES3_view_debug[3] = bravo_ped_flag[2] DES3_view_debug[4] = bravo_ped_flag[3] DES3_view_debug[5] = alpha_helis_fucked DES3_view_debug[6] = bravo_helis_fucked DES3_view_debug[7] = total_fucked_helis VIEW_INTEGER_VARIABLE DES3_view_debug[0] pheli_progress VIEW_INTEGER_VARIABLE DES3_view_debug[1] bravo_ped_flag[0] VIEW_INTEGER_VARIABLE DES3_view_debug[2] bravo_ped_flag[1] VIEW_INTEGER_VARIABLE DES3_view_debug[3] bravo_ped_flag[2] VIEW_INTEGER_VARIABLE DES3_view_debug[4] bravo_ped_flag[3] VIEW_INTEGER_VARIABLE DES3_view_debug[5] alpha_helis_fucked VIEW_INTEGER_VARIABLE DES3_view_debug[6] bravo_helis_fucked VIEW_INTEGER_VARIABLE DES3_view_debug[7] total_fucked_helis ENDIF IF display_debug = 3 // put mission variable for display in here DES3_view_debug[0] = alpha_heli_ai DES3_view_debug[1] = alpha_heli_goals DES3_view_debug[2] = alpha_ped_flag[0] DES3_view_debug[3] = alpha_ped_flag[1] DES3_view_debug[4] = alpha_ped_flag[2] DES3_view_debug[5] = alpha_ped_flag[3] DES3_view_debug[6] = alpha_heli_control // DES3_view_debug[7] = TIMERB ENDIF IF display_debug = 4 // put mission variable for display in here DES3_view_debug[0] = alpha_ped_attached[0] DES3_view_debug[1] = alpha_ped_attached[1] DES3_view_debug[2] = alpha_ped_attached[2] DES3_view_debug[3] = alpha_ped_attached[3] DES3_view_debug_f[4] = fed_distance DES3_view_debug[5] = fed_timer // DES3_view_debug[6] = bravo_helis_fucked // DES3_view_debug[7] = total_fucked_helis ENDIF IF display_debug = 5 // put mission variable for display in here DES3_view_debug_f[0] = swing_speed_x DES3_view_debug_f[1] = swing_accel_x DES3_view_debug_f[2] = swing_rot_x DES3_view_debug_f[3] = swing_dest_x DES3_view_debug_f[4] = swing_dist_x DES3_view_debug_f[5] = swing_angle_for_xy DES3_view_debug_f[6] = swing_direct_dist DES3_view_debug_f[7] = swing_2d_dist VIEW_FLOAT_VARIABLE DES3_view_debug_f[0] swing_speed_x VIEW_FLOAT_VARIABLE DES3_view_debug_f[1] swing_accel_x VIEW_FLOAT_VARIABLE DES3_view_debug_f[2] swing_rot_x VIEW_FLOAT_VARIABLE DES3_view_debug_f[3] swing_dest_x VIEW_FLOAT_VARIABLE DES3_view_debug_f[4] swing_dist_x VIEW_FLOAT_VARIABLE DES3_view_debug_f[5] swing_angle_for_xy VIEW_FLOAT_VARIABLE DES3_view_debug_f[6] swing_direct_dist VIEW_FLOAT_VARIABLE DES3_view_debug_f[7] swing_2d_dist ENDIF IF display_debug = 6 // put mission variable for display in here DES3_view_debug_f[0] = swing_angle_for_z DES3_view_debug_f[1] = swing_dist_z DES3_view_debug[2] = bravo_heli_ai DES3_view_debug[3] = bravo_heli_goals DES3_view_debug[4] = bravo_pilot DES3_view_debug[5] = bravo_heli DES3_view_debug[6] = total_created_helis DES3_view_debug[7] = bravo_heli_control VIEW_FLOAT_VARIABLE DES3_view_debug_f[0] swing_angle_for_z VIEW_FLOAT_VARIABLE DES3_view_debug_f[1] swing_dist_z VIEW_INTEGER_VARIABLE DES3_view_debug[2] bravo_heli_ai VIEW_INTEGER_VARIABLE DES3_view_debug[3] bravo_heli_goals VIEW_INTEGER_VARIABLE DES3_view_debug[4] bravo_pilot VIEW_INTEGER_VARIABLE DES3_view_debug[5] bravo_heli VIEW_INTEGER_VARIABLE DES3_view_debug[6] total_created_helis VIEW_INTEGER_VARIABLE DES3_view_debug[7] bravo_heli_control ENDIF // Quit level - no mission pass/fail - cleanup only IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ESC m_quit = 1 ENDIF // Pause level LVAR_INT pause_level IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_P IF pause_level = 0 pause_level = 1 WRITE_DEBUG LEVEL_PAUSED ELSE pause_level = 0 WRITE_DEBUG LEVEL_UNPAUSED ENDIF ENDIF IF pause_level = 1 GOTO end_of_main_loop_DES3 ENDIF //// progress m_goals & m_stage //IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_PLUS // m_goals++ //ENDIF //IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_MINUS // m_goals-- //ENDIF //IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_ASTERISK // m_stage++ //ENDIF //IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_SLASH // m_stage-- //ENDIF //IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_9 // m_goals = 99 //ENDIF ENDIF RETURN // ************************************************************************************************************* // INITIALISATION - SPECIFIC TO THIS LEVEL // ************************************************************************************************************* d3_m_stage_0: // fake creates IF m_goals = -1 CREATE_CAR PONY 0.0 0.0 0.0 pheli CREATE_CAR PONY 0.0 0.0 0.0 alpha_heli CREATE_CAR PONY 0.0 0.0 0.0 bravo_heli CREATE_CAR PONY 0.0 0.0 0.0 heli_to_move CREATE_CAR PONY 0.0 0.0 0.0 heli_to_avoid CREATE_CAR PONY 0.0 0.0 0.0 grabbed_car CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 pheli_pilot CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 alpha_pilot CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 bravo_pilot CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 alpha_ped[0] CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 bravo_ped[0] SET_CHAR_NEVER_TARGETTED pheli_pilot TRUE ADD_BLIP_FOR_COORD 0.0 0.0 0.0 alpha_heli_blip ADD_BLIP_FOR_COORD 0.0 0.0 0.0 bravo_heli_blip ADD_BLIP_FOR_COORD 0.0 0.0 0.0 escape_car_blip ENDIF // cars LVAR_INT m_quad LVAR_INT m_bike LVAR_INT m_buggy LVAR_INT pheli LVAR_INT alpha_heli LVAR_INT bravo_heli LVAR_INT cam_heli LVAR_INT grabbed_car LVAR_INT old_car LVAR_INT escape_car // peds LVAR_INT pheli_pilot LVAR_INT alpha_pilot LVAR_INT bravo_pilot LVAR_INT alpha_ped[4] LVAR_INT bravo_ped[4] LVAR_INT old_man LVAR_INT old_woman // objects LVAR_INT smoke_flare_object LVAR_INT cam_object LVAR_INT contraband // pickup LVAR_INT m_pickup LVAR_INT m_pickup_health LVAR_INT m_pickup_armour // search lights // LVAR_INT alpha_search // LVAR_INT bravo_search // fx LVAR_INT m_fx // blips LVAR_INT location_blip LVAR_INT alpha_heli_blip LVAR_INT bravo_heli_blip LVAR_INT pheli_blip LVAR_INT contraband_blip LVAR_INT weapon_blip LVAR_INT escape_car_blip // flags LVAR_INT pheli_progress LVAR_INT alpha_heli_ai LVAR_INT bravo_heli_ai LVAR_INT pheli_flag LVAR_INT alpha_heli_goals LVAR_INT bravo_heli_goals LVAR_INT pheli_goals LVAR_INT alpha_ped_flag[4] LVAR_INT bravo_ped_flag[4] LVAR_INT alpha_ped_attached[4] LVAR_INT alpha_helis_fucked LVAR_INT bravo_helis_fucked LVAR_INT alpha_heli_control LVAR_INT bravo_heli_control VAR_INT pheli_health LVAR_INT total_fucked_helis LVAR_INT alpha_has_caught_up LVAR_INT total_created_helis VAR_INT des3_heat LVAR_INT cross_pressed // timers LVAR_INT alpha_heli_timer LVAR_INT bravo_heli_timer LVAR_INT fed_timer LVAR_INT fed_timer2 LVAR_INT pheli_health_timer // set flags pheli_progress = 0 alpha_heli_ai = CHASE_PHELI bravo_heli_ai = CHASE_PHELI pheli_flag = 0 alpha_heli_goals = 0 bravo_heli_goals = 0 pheli_goals = 0 temp_int = 0 WHILE temp_int < 4 alpha_ped_flag[temp_int] = 0 bravo_ped_flag[temp_int] = 0 alpha_ped_attached[temp_int] = 0 temp_int++ ENDWHILE alpha_helis_fucked = 0 bravo_helis_fucked = 0 alpha_heli_control = 0 bravo_heli_control = 0 pheli_health = 0 total_fucked_helis = 0 alpha_has_caught_up = 0 // floats LVAR_FLOAT fed_distance LVAR_FLOAT cam_dist_z LVAR_FLOAT cam_off_x cam_off_y cam_off_z LVAR_FLOAT contraband_x contraband_y contraband_z LVAR_FLOAT alpha_goto_x alpha_goto_y alpha_goto_Z // COORDS - floats that need to be initialised each time level is played LVAR_FLOAT checkpoints_x[15] checkpoints_y[15] checkpoints_z[15] START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_TEXT DSERT3 GOSUB DES3_next_stage RETURN // ************************************************************************************************************* // STAGE 1 - Launch - get to location // ************************************************************************************************************* d3_m_stage_1: // initialisation for stage IF m_goals = 0 SET_PLAYER_CONTROL player1 OFF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT CLEAR_AREA -691.0 941.0 13.0 10.0 TRUE LOAD_CUTSCENE DESERT3 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE CLEAR_AREA -701.5853 965.8546 11.3768 5.0 TRUE REQUEST_MODEL BFINJECT WHILE NOT HAS_MODEL_LOADED BFINJECT WAIT 0 ENDWHILE CREATE_CAR BFINJECT -701.5853 965.8546 11.3768 car SET_CAR_HEADING car 90.4785 MARK_MODEL_AS_NO_LONGER_NEEDED BFINJECT SET_RADIO_CHANNEL RS_TALK IF desert3_mission_attempts > 0 SET_UP_SKIP -426.8536 2213.7830 41.4297 9.9101 ENDIF SET_CHAR_COORDINATES scplayer -688.7614 946.5271 12.0312 SET_CHAR_HEADING scplayer 94.6779 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //FORCE_WEATHER WEATHER_EXTRASUNNY_DESERT //SET_WANTED_MULTIPLIER 0.5 ADD_BLIP_FOR_COORD -429.0250 2226.2227 41.4297 location_blip PRINT AIR1_13 5000 1 // goto small town in desert // important when going the wrong way on the dirt road, it's confusing to the player otherwise DISPLAY_RADAR 7 // PATHING IGNORE TRAFFIC FLOW REQUEST_MODEL BANDITO REQUEST_MODEL QUAD REQUEST_MODEL SANCHEZ REQUEST_MODEL HEATSEEK LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED BANDITO OR NOT HAS_MODEL_LOADED QUAD OR NOT HAS_MODEL_LOADED SANCHEZ OR NOT HAS_MODEL_LOADED HEATSEEK WAIT 0 ENDWHILE DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON // create smugglers cars CREATE_CAR QUAD -434.5365 2237.5671 41.8690 m_quad CREATE_CAR SANCHEZ -426.2288 2240.4099 41.4297 m_bike CREATE_CAR BANDITO -428.1476 2235.2070 42.3505 m_buggy SET_CAR_HEADING m_quad 291.5598 SET_CAR_HEADING m_bike 179.3694 SET_CAR_HEADING m_buggy 102.7597 MARK_MODEL_AS_NO_LONGER_NEEDED QUAD MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ MARK_MODEL_AS_NO_LONGER_NEEDED BANDITO CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DES3_AA m_goals++ ENDIF // wait for player to stop in blip IF m_goals = 1 IF debug_on = 1 IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK SET_CHAR_COORDINATES scplayer -424.6452 2207.5408 41.4297 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer -429.0250 2226.2227 41.4297 4.0 4.0 4.0 TRUE IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF NOT IS_CHAR_IN_ANY_HELI scplayer AND NOT IS_CHAR_IN_ANY_PLANE scplayer IF IS_VEHICLE_ON_ALL_WHEELS car SET_PLAYER_CONTROL player1 OFF //TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 2000000 m_goals++ ENDIF ELSE SET_PLAYER_CONTROL player1 OFF //TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 2000000 m_goals++ ENDIF ELSE IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer -429.0250 2226.2227 41.4297 4.0 4.0 4.0 FALSE SET_PLAYER_CONTROL player1 OFF m_goals++ ENDIF ENDIF ENDIF ENDIF // wait for car to stop IF m_goals = 2 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF NOT IS_CHAR_IN_ANY_HELI scplayer AND NOT IS_CHAR_IN_ANY_PLANE scplayer IF IS_CAR_STOPPED car m_goals++ ENDIF ELSE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF NOT IS_CAR_DEAD car SET_CAR_COORDINATES car -429.0250 2226.2227 41.4297 ENDIF m_goals++ ENDIF ELSE m_goals++ ENDIF ENDIF // small cut IF m_goals = 3 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED cross_pressed = 1 ELSE cross_pressed = 0 ENDIF REMOVE_BLIP location_blip CLEAR_SKIP CLEAR_AREA -432.3058 2234.3745 41.4697 5.0 TRUE SET_FIXED_CAMERA_POSITION -433.3420 2232.1760 43.6323 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -432.7942 2232.9971 43.4724 JUMP_CUT SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -433.0047 2230.2461 40.4297 SET_CHAR_HEADING scplayer 341.9590 TASK_GO_STRAIGHT_TO_COORD scplayer -432.3058 2234.3745 41.4697 PEDMOVE_WALK 5000 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE TIMERA = 0 m_goals++ ENDIF // skip IF m_goals > 3 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED IF cross_pressed = 0 m_goals = 99 cross_pressed = 1 ENDIF ELSE IF cross_pressed = 1 cross_pressed = 0 ENDIF ENDIF ENDIF // play 1st bit of audio IF m_goals = 4 IF TIMERA > 1000 $audio_string = &DES3_AA audio_sound_file = SOUND_DES3_AA START_NEW_SCRIPT audio_line -1 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_DES3_AB TIMERB = 0 m_goals++ ENDIF ENDIF // play 2nd bit of audio IF m_goals = 5 IF TIMERB > 1000 IF audio_line_is_active = 0 SET_FIXED_CAMERA_POSITION -433.6039 2235.2102 43.1100 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -432.6751 2234.8508 43.0197 JUMP_CUT $audio_string = &DES3_AB audio_sound_file = SOUND_DES3_AB START_NEW_SCRIPT audio_line scplayer 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DES3_AC TASK_LOOK_ABOUT scplayer 2000 TIMERB = 0 m_goals++ ENDIF ENDIF ENDIF // play 3rd bit of audio IF m_goals = 6 IF TIMERB > 1000 IF audio_line_is_active = 0 SET_FIXED_CAMERA_POSITION -430.2061 2236.6951 42.8085 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -429.3790 2237.2336 42.9687 JUMP_CUT $audio_string = &DES3_AC audio_sound_file = SOUND_DES3_AC START_NEW_SCRIPT audio_line -1 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_DES3_AD CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_FOV TRUE CAMERA_SET_LERP_FOV 70.0 100.0 10000 TRUE TIMERB = 0 m_goals++ ENDIF ENDIF ENDIF // play 4th bit of audio IF m_goals = 7 IF TIMERB > 1000 IF audio_line_is_active = 0 $audio_string = &DES3_AD audio_sound_file = SOUND_DES3_AD START_NEW_SCRIPT audio_line -1 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DES3_AE TIMERB = 0 m_goals++ ENDIF ENDIF ENDIF // play 5th bit of audio IF m_goals = 8 IF TIMERB > 1000 IF audio_line_is_active = 0 $audio_string = &DES3_AE audio_sound_file = SOUND_DES3_AE START_NEW_SCRIPT audio_line -1 0 1 1 1 TIMERB = 0 m_goals++ ENDIF ENDIF ENDIF // wait for audio to finish IF m_goals = 9 IF TIMERB > 1000 IF audio_line_is_active = 0 m_goals = 99 ENDIF ENDIF ENDIF // wait for cutscene to finish IF m_goals = 99 desert3_mission_attempts++ CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -432.3058 2234.3745 41.4697 SET_CHAR_HEADING scplayer 341.9590 MARK_CAR_AS_NO_LONGER_NEEDED car CAMERA_RESET_NEW_SCRIPTABLES SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF GOSUB DES3_next_stage ENDIF RETURN // ************************************************************************************************************* // STAGE 2 - go to top of mountain // ************************************************************************************************************* d3_m_stage_2: // initialisation for stage IF m_goals = 0 // missles CREATE_PICKUP_WITH_AMMO ROCKETLA PICKUP_ONCE 40 -431.3719 2240.1321 42.6177 m_pickup ADD_BLIP_FOR_PICKUP m_pickup weapon_blip PRINT_NOW AIR1_15 5000 1 //Pick up ~g~rockets~s~. TIMERA = 0 m_goals++ CHECKPOINT_SAVE 99 ENDIF // wait for rockets to get picked up IF m_goals = 1 // reset pathing against traffic DISPLAY_RADAR 3 // PATHING ON IF HAS_PICKUP_BEEN_COLLECTED m_pickup OR TIMERA > 7000 REMOVE_BLIP weapon_blip REMOVE_BLIP location_blip ADD_BLIP_FOR_COORD -804.5877 2377.8428 151.7558 location_blip PRINT_NOW AIR1_16 7000 1 //Take a suitable vehicle and go to the top of the ~y~mountain~s~. REQUEST_ANIMATION BOMBER WHILE NOT HAS_ANIMATION_LOADED BOMBER WAIT 0 ENDWHILE REQUEST_MODEL TEARGAS WHILE NOT HAS_MODEL_LOADED TEARGAS WAIT 0 ENDWHILE m_goals++ ELSE PRINT_NOW AIR1_15 5000 1 //Pick up ~g~rockets~s~. ENDIF ENDIF // wait for player to get close IF m_goals = 2 IF debug_on = 1 IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK SET_CHAR_COORDINATES scplayer -798.1865 2419.4104 155.9362 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer -804.5877 2377.8428 151.7558 4.0 4.0 4.0 TRUE IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer escape_car IF NOT IS_CHAR_IN_ANY_HELI scplayer AND NOT IS_CHAR_IN_ANY_PLANE scplayer IF IS_VEHICLE_ON_ALL_WHEELS escape_car SET_PLAYER_CONTROL player1 OFF //TASK_CAR_TEMP_ACTION scplayer escape_car TEMPACT_HANDBRAKESTRAIGHT 2000000 m_goals++ ENDIF ELSE SET_PLAYER_CONTROL player1 OFF //TASK_CAR_TEMP_ACTION scplayer escape_car TEMPACT_HANDBRAKESTRAIGHT 2000000 m_goals++ ENDIF ELSE IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer -804.5877 2377.8428 151.7558 4.0 4.0 4.0 FALSE SET_PLAYER_CONTROL player1 OFF m_goals++ ENDIF ENDIF ENDIF ENDIF // wait for car to stop IF m_goals = 3 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF NOT IS_CHAR_IN_ANY_HELI scplayer AND NOT IS_CHAR_IN_ANY_PLANE scplayer IF IS_CAR_STOPPED car m_goals++ ENDIF ELSE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF NOT IS_CAR_DEAD car SET_CAR_COORDINATES car -804.5877 2377.8428 151.7558 ENDIF m_goals++ ENDIF ELSE m_goals++ ENDIF ENDIF // start of cutscene - walk away from the vehicle IF m_goals = 4 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REMOVE_BLIP location_blip m_goals = 99 ENDIF // exit IF m_goals = 99 // REMOVE_ANIMATION BOMBER // MARK_MODEL_AS_NO_LONGER_NEEDED KB_BEER GOSUB DES3_next_stage ENDIF RETURN // ************************************************************************************************************* // STAGE 3 - Cutscene of heli approaching // ************************************************************************************************************* d3_m_stage_3: // load stuff for cutscene IF m_goals = 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED cross_pressed = 1 ENDIF m_fx = 0 SET_PLAYER_CONTROL player1 OFF // request stuff REQUEST_MODEL MAVERICK REQUEST_MODEL WMOMIB REQUEST_MODEL BMYMIB REQUEST_MODEL WMYPLT REQUEST_MODEL AK47 REQUEST_MODEL LEVIATHN REQUEST_ANIMATION BOMBER LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED MAVERICK OR NOT HAS_MODEL_LOADED WMOMIB OR NOT HAS_MODEL_LOADED BMYMIB OR NOT HAS_MODEL_LOADED WMYPLT OR NOT HAS_MODEL_LOADED AK47 OR NOT HAS_MODEL_LOADED LEVIATHN WAIT 0 ENDWHILE WHILE NOT HAS_ANIMATION_LOADED BOMBER WAIT 0 ENDWHILE REQUEST_CAR_RECORDING 530 REQUEST_CAR_RECORDING 531 REQUEST_CAR_RECORDING 532 REQUEST_CAR_RECORDING 533 REQUEST_CAR_RECORDING 534 REQUEST_CAR_RECORDING 535 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 530 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 531 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 532 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 533 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 534 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 535 WAIT 0 ENDWHILE m_goals++ ENDIF // skip IF m_goals > 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED IF cross_pressed = 0 m_goals = 99 cross_pressed = 1 ENDIF ELSE IF cross_pressed = 1 cross_pressed = 0 ENDIF ENDIF ENDIF // toreno voice cutscene IF m_goals = 1 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE CLEAR_AREA -800.6110 2404.7878 155.1680 5.0 TRUE CLEAR_AREA -800.8441 2408.3540 155.4525 5.0 TRUE SET_CHAR_COORDINATES scplayer -800.6110 2404.7878 155.1680 SET_CHAR_HEADING scplayer 342.2393 TASK_GO_STRAIGHT_TO_COORD scplayer -800.8441 2408.3540 155.4525 PEDMOVE_WALK 10000 SET_FIXED_CAMERA_POSITION -797.7917 2403.7354 157.1193 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -798.3541 2404.5415 156.9353 JUMP_CUT // SET_FIXED_CAMERA_POSITION -804.3873 2419.5188 157.4550 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -805.0419 2420.2747 157.4501 JUMP_CUT SWITCH_WIDESCREEN ON //TASK_TURN_CHAR_TO_FACE_COORD scplayer -809.4514 2426.5151 158.8622 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE m_goals++ TIMERA =0 ENDIF // plant smoke canister IF m_goals = 2 IF LOCATE_CHAR_ON_FOOT_3D scplayer -800.8441 2408.3540 155.4525 1.0 1.0 2.0 FALSE OR TIMERA > 5000 m_goals++ ENDIF ENDIF // make cj set smoke flare IF m_goals = 3 CREATE_OBJECT TEARGAS 0.0 0.0 0.0 smoke_flare_object OPEN_SEQUENCE_TASK temp_seq TASK_PICK_UP_OBJECT -1 smoke_flare_object 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL FALSE TASK_PLAY_ANIM -1 BOM_plant_In BOMBER 4.0 FALSE FALSE FALSE TRUE -1 TASK_PLAY_ANIM -1 BOM_plant_Loop BOMBER 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK scplayer temp_seq CLEAR_SEQUENCE_TASK temp_seq m_goals++ ENDIF // wait for player to play anim IF m_goals = 4 IF IS_CHAR_PLAYING_ANIM scplayer BOM_plant_Loop SET_FIXED_CAMERA_POSITION -789.7653 2416.8945 163.5839 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -790.3218 2416.1240 163.2729 JUMP_CUT m_goals++ ENDIF ENDIF // wait for player to finish planting smoke flare IF m_goals = 5 GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK DROP_OBJECT scplayer FALSE FREEZE_OBJECT_POSITION smoke_flare_object TRUE GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 1.0 0.0 x y z GET_GROUND_Z_FOR_3D_COORD x y z z z += 0.05 SET_OBJECT_COORDINATES smoke_flare_object x y z CREATE_FX_SYSTEM_ON_OBJECT smoke_flare smoke_flare_object 0.0 0.0 0.1 TRUE m_fx PLAY_FX_SYSTEM m_fx CLEAR_CHAR_TASKS scplayer //SET_PLAYER_CONTROL player1 ON TIMERA = 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DES3_BA m_goals++ ENDIF ENDIF // wait IF m_goals = 6 IF TIMERA > 4000 m_goals++ ENDIF ENDIF // look at hut with speaker IF m_goals = 7 SET_FIXED_CAMERA_POSITION -779.9253 2418.3381 157.8122 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -778.9708 2418.6294 157.7476 JUMP_CUT CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -786.2731 2416.1128 156.0893 SET_CHAR_HEADING scplayer 284.9980 TASK_GO_STRAIGHT_TO_COORD scplayer -782.2095 2417.0266 156.1289 PEDMOVE_WALK 5000 CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_FOV TRUE CAMERA_SET_LERP_FOV 70.0 100.0 10000 TRUE TIMERA = 0 m_goals++ ENDIF // play audio IF m_goals = 8 IF TIMERA > 1000 $audio_string = &DES3_BA audio_sound_file = SOUND_DES3_BA START_NEW_SCRIPT audio_line -1 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_DES3_BB TASK_LOOK_AT_COORD scplayer -809.4514 2426.5151 158.8622 99999 TIMERA = 0 m_goals++ ENDIF ENDIF // play audio IF m_goals = 9 IF TIMERA > 1000 IF audio_line_is_active = 0 $audio_string = &DES3_BB audio_sound_file = SOUND_DES3_BB START_NEW_SCRIPT audio_line scplayer 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DES3_BC TIMERA = 0 m_goals++ ENDIF ENDIF ENDIF // wait for audio to finish IF m_goals = 10 IF TIMERA > 1000 IF audio_line_is_active = 0 m_goals++ ENDIF ENDIF ENDIF // show heli flying in (load up stuff first) IF m_goals = 11 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // turn radio station off LVAR_INT stored_radio_station GET_RADIO_CHANNEL stored_radio_station SET_RADIO_CHANNEL RS_OFF IF DOES_VEHICLE_EXIST m_quad IF NOT IS_CAR_DEAD m_quad IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer m_quad 100.0 100.0 FALSE MARK_CAR_AS_NO_LONGER_NEEDED m_quad ENDIF ENDIF ENDIF IF DOES_VEHICLE_EXIST m_buggy IF NOT IS_CAR_DEAD m_buggy IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer m_buggy 100.0 100.0 FALSE MARK_CAR_AS_NO_LONGER_NEEDED m_buggy ENDIF ENDIF ENDIF IF DOES_VEHICLE_EXIST m_bike IF NOT IS_CAR_DEAD m_bike IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer m_bike 100.0 100.0 FALSE MARK_CAR_AS_NO_LONGER_NEEDED m_bike ENDIF ENDIF ENDIF // // request stuff // REQUEST_MODEL MAVERICK // REQUEST_MODEL WMOMIB // REQUEST_MODEL BMYMIB // REQUEST_MODEL WMYPLT // REQUEST_MODEL AK47 // REQUEST_MODEL LEVIATHN // WHILE NOT HAS_MODEL_LOADED MAVERICK // OR NOT HAS_MODEL_LOADED WMOMIB // OR NOT HAS_MODEL_LOADED BMYMIB // OR NOT HAS_MODEL_LOADED WMYPLT // OR NOT HAS_MODEL_LOADED AK47 // OR NOT HAS_MODEL_LOADED LEVIATHN // WAIT 0 // ENDWHILE // // REQUEST_CAR_RECORDING 530 // REQUEST_CAR_RECORDING 531 // REQUEST_CAR_RECORDING 532 // REQUEST_CAR_RECORDING 533 // REQUEST_CAR_RECORDING 534 // REQUEST_CAR_RECORDING 535 // WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 530 // OR NOT HAS_CAR_RECORDING_BEEN_LOADED 531 // OR NOT HAS_CAR_RECORDING_BEEN_LOADED 532 // OR NOT HAS_CAR_RECORDING_BEEN_LOADED 533 // OR NOT HAS_CAR_RECORDING_BEEN_LOADED 534 // OR NOT HAS_CAR_RECORDING_BEEN_LOADED 535 // WAIT 0 // ENDWHILE //LOAD_SCENE -1406.5287 1962.9375 109.0392 x = -778.9708 + 779.9253 y = 2418.6294 - 2418.3381 GET_HEADING_FROM_VECTOR_2D x y heading LOAD_SCENE_IN_DIRECTION -1373.0 2004.0 108.0 heading GOSUB create_pheli IF NOT IS_CAR_DEAD pheli // // camera stuff // CREATE_OBJECT CARDBOARDBOX 0.0 0.0 0.0 cam_object // ATTACH_OBJECT_TO_CAR cam_object pheli 5.0 -10.0 0.0 0.0 0.0 0.0 // SET_OBJECT_COLLISION cam_object FALSE // SET_OBJECT_VISIBLE cam_object FALSE START_PLAYBACK_RECORDED_CAR pheli 530 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pheli 0.0 -20.0 0.0 x y z CREATE_CAR LEVIATHN x y z cam_heli SET_HELI_BLADES_FULL_SPEED cam_heli START_PLAYBACK_RECORDED_CAR cam_heli 531 SET_CAR_VISIBLE cam_heli FALSE SWITCH_WIDESCREEN ON // ATTACH_CAMERA_TO_VEHICLE_LOOK_AT_OBJECT cam_heli 0.0 0.0 0.0 cam_object 0.0 JUMP_CUT WARP_CHAR_INTO_CAR_AS_PASSENGER scplayer pheli 0 ENDIF pheli_progress = 0 dialogue_flag = 0 // set camera position IF NOT IS_CAR_DEAD cam_heli DISABLE_HELI_AUDIO cam_heli TRUE GET_CAR_COORDINATES cam_heli x y z SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 ENDIF // set camera point at IF NOT IS_CAR_DEAD pheli GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pheli 5.0 -10.0 0.0 x y z POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS // set camera position IF NOT IS_CAR_DEAD cam_heli GET_CAR_COORDINATES cam_heli x y z SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 ENDIF // set camera point at IF NOT IS_CAR_DEAD pheli GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pheli 5.0 -10.0 0.0 x y z POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF WAIT 0 ENDWHILE TIMERA = 0 m_goals++ ENDIF // // skip // IF m_goals > 4 // AND TIMERA > 3000 // IF IS_BUTTON_PRESSED PAD1 CROSS // m_goals = 99 // ENDIF // ENDIF // cut 1 IF m_goals = 12 // set camera position IF NOT IS_CAR_DEAD cam_heli GET_CAR_COORDINATES cam_heli x y z SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 ENDIF // set camera point at IF NOT IS_CAR_DEAD pheli GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pheli 5.0 -10.0 0.0 x y z POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF //IF TIMERA > 9800 IF TIMERA > 11700 DO_FADE 300 FADE_OUT TIMERA = 0 m_goals++ ENDIF ENDIF IF m_goals = 13 IF GET_FADING_STATUS // set camera position IF NOT IS_CAR_DEAD cam_heli GET_CAR_COORDINATES cam_heli x y z SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 ENDIF // set camera point at IF NOT IS_CAR_DEAD pheli GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pheli 5.0 -10.0 0.0 x y z POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF ELSE SET_FIXED_CAMERA_POSITION -1047.6195 2164.9250 88.4215 0.0 0.0 0.0 TIMERA = 0 m_goals++ ENDIF ENDIF // make 2 baddie heli's appear from below shooting. IF m_goals = 14 // stop playback (if one is playing) IF NOT IS_CAR_DEAD pheli IF IS_PLAYBACK_GOING_ON_FOR_CAR pheli STOP_PLAYBACK_RECORDED_CAR pheli ENDIF ENDIF GOSUB create_alpha_heli GOSUB create_bravo_heli IF NOT IS_CAR_DEAD alpha_heli START_PLAYBACK_RECORDED_CAR alpha_heli 532 PAUSE_PLAYBACK_RECORDED_CAR alpha_heli ENDIF IF NOT IS_CAR_DEAD bravo_heli START_PLAYBACK_RECORDED_CAR bravo_heli 533 PAUSE_PLAYBACK_RECORDED_CAR bravo_heli ENDIF IF NOT IS_CAR_DEAD pheli START_PLAYBACK_RECORDED_CAR pheli 535 PAUSE_PLAYBACK_RECORDED_CAR pheli ENDIF SET_FIXED_CAMERA_POSITION -798.5942 2436.1836 172.1772 0.0 0.0 0.0 IF NOT IS_CAR_DEAD pheli GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pheli -15.0 5.0 -3.0 x y z ENDIF POINT_CAMERA_AT_POINT x y z JUMP_CUT LOAD_SCENE_IN_DIRECTION -778.0 2465.0 168.0 45.0 IF NOT IS_CAR_DEAD alpha_heli UNPAUSE_PLAYBACK_RECORDED_CAR alpha_heli ENDIF IF NOT IS_CAR_DEAD bravo_heli UNPAUSE_PLAYBACK_RECORDED_CAR bravo_heli ENDIF IF NOT IS_CAR_DEAD pheli UNPAUSE_PLAYBACK_RECORDED_CAR pheli ENDIF DO_FADE 300 FADE_IN WHILE GET_FADING_STATUS IF NOT IS_CAR_DEAD pheli GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pheli -15.0 5.0 -3.0 x y z ENDIF POINT_CAMERA_AT_POINT x y z JUMP_CUT WAIT 0 ENDWHILE dialogue_flag = 0 TIMERB = 0 TIMERA = 0 m_goals++ ENDIF IF m_goals = 15 //IF TIMERA < 16000 IF NOT dialogue_flag = 7 IF NOT IS_CAR_DEAD pheli GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pheli -15.0 5.0 -3.0 x y z ENDIF POINT_CAMERA_AT_POINT x y z JUMP_CUT IF TIMERB > 1000 SWITCH dialogue_flag CASE 0 IF audio_line_is_active = 0 $audio_string = &DES3_BC audio_sound_file = SOUND_DES3_BC START_NEW_SCRIPT audio_line -1 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_DES3_BD TIMERB = 0 dialogue_flag++ ENDIF BREAK CASE 1 IF audio_line_is_active = 0 $audio_string = &DES3_BD audio_sound_file = SOUND_DES3_BD START_NEW_SCRIPT audio_line -1 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DES3_BE TIMERB = 0 dialogue_flag++ ENDIF BREAK CASE 2 IF audio_line_is_active = 0 $audio_string = &DES3_BE audio_sound_file = SOUND_DES3_BE START_NEW_SCRIPT audio_line -1 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_DES3_BF TIMERB = 0 dialogue_flag++ ENDIF BREAK CASE 3 IF audio_line_is_active = 0 $audio_string = &DES3_BF audio_sound_file = SOUND_DES3_BF START_NEW_SCRIPT audio_line -1 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DES3_BG TIMERB = 0 dialogue_flag++ ENDIF BREAK CASE 4 IF audio_line_is_active = 0 $audio_string = &DES3_BG audio_sound_file = SOUND_DES3_BG START_NEW_SCRIPT audio_line scplayer 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_DES3_BH TIMERB = 0 dialogue_flag++ ENDIF BREAK CASE 5 IF audio_line_is_active = 0 $audio_string = &DES3_BH audio_sound_file = SOUND_DES3_BH START_NEW_SCRIPT audio_line -1 0 1 2 1 TIMERB = 0 dialogue_flag++ ENDIF BREAK CASE 6 IF audio_line_is_active = 0 TIMERB = 0 dialogue_flag++ ENDIF BREAK ENDSWITCH ENDIF ELSE IF TIMERB > 2000 IF NOT IS_CAR_DEAD pheli GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pheli -15.0 5.0 -3.0 x y z ENDIF POINT_CAMERA_AT_POINT x y z JUMP_CUT IF NOT IS_CAR_DEAD alpha_heli IF IS_PLAYBACK_GOING_ON_FOR_CAR alpha_heli STOP_PLAYBACK_RECORDED_CAR alpha_heli ENDIF ENDIF IF NOT IS_CAR_DEAD bravo_heli IF IS_PLAYBACK_GOING_ON_FOR_CAR bravo_heli STOP_PLAYBACK_RECORDED_CAR bravo_heli ENDIF ENDIF IF NOT IS_CAR_DEAD pheli IF IS_PLAYBACK_GOING_ON_FOR_CAR pheli STOP_PLAYBACK_RECORDED_CAR pheli ENDIF ENDIF DO_FADE 150 FADE_OUT m_goals++ ELSE IF NOT IS_CAR_DEAD pheli GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pheli -15.0 5.0 -3.0 x y z ENDIF POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF ENDIF ENDIF IF m_goals = 16 IF GET_FADING_STATUS IF NOT IS_CAR_DEAD pheli GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pheli -15.0 5.0 -3.0 x y z ENDIF POINT_CAMERA_AT_POINT x y z JUMP_CUT ELSE m_goals = 99 ENDIF ENDIF IF m_goals = 99 DO_FADE 0 FADE_OUT // re-create flare object IF DOES_OBJECT_EXIST smoke_flare_object DELETE_OBJECT smoke_flare_object ENDIF x = -800.8441 y = 2408.3540 z = 155.4525 GET_GROUND_Z_FOR_3D_COORD x y z z z += 0.05 CREATE_OBJECT TEARGAS x y z smoke_flare_object FREEZE_OBJECT_POSITION smoke_flare_object TRUE // re-create smoke flare particle IF NOT m_fx = 0 KILL_FX_SYSTEM m_fx ENDIF CREATE_FX_SYSTEM_ON_OBJECT smoke_flare smoke_flare_object 0.0 0.0 0.1 TRUE m_fx PLAY_FX_SYSTEM m_fx // IF DOES_OBJECT_EXIST smoke_flare_object // IF IS_CHAR_HOLDING_OBJECT scplayer smoke_flare_object // DROP_OBJECT scplayer TRUE // ENDIF // IF m_fx = 0 // CREATE_FX_SYSTEM_ON_OBJECT smoke_flare smoke_flare_object 0.0 0.0 0.1 TRUE m_fx // PLAY_FX_SYSTEM m_fx // ENDIF // ELSE // x = -800.8441 // y = 2408.3540 // z = 155.4525 // GET_GROUND_Z_FOR_3D_COORD x y z z // z += 1.0 // CREATE_OBJECT TEARGAS x y z smoke_flare_object // CREATE_FX_SYSTEM_ON_OBJECT smoke_flare smoke_flare_object 0.0 0.0 0.1 TRUE m_fx // PLAY_FX_SYSTEM m_fx // ENDIF CAMERA_RESET_NEW_SCRIPTABLES CLEAR_CHAR_TASKS_IMMEDIATELY scplayer //SET_CHAR_COORDINATES scplayer -789.7678 2416.9163 156.0220 LOAD_SCENE -806.4670 2420.7495 155.9102 SET_CHAR_COORDINATES scplayer -806.4670 2420.7495 155.9102 SET_CHAR_HEADING scplayer 190.8497 IF DOES_VEHICLE_EXIST cam_heli DELETE_CAR cam_heli ENDIF GOSUB delete_pheli GOSUB delete_alpha_heli GOSUB delete_bravo_heli GOSUB DES3_next_stage ENDIF RETURN // ************************************************************************************************************* // STAGE 4 - Game section // ************************************************************************************************************* d3_m_stage_4: IF m_goals = 0 // request stuff REQUEST_MODEL MAVERICK REQUEST_MODEL WMOMIB REQUEST_MODEL BMYMIB REQUEST_MODEL WMYPLT REQUEST_MODEL AK47 REQUEST_MODEL LEVIATHN WHILE NOT HAS_MODEL_LOADED MAVERICK OR NOT HAS_MODEL_LOADED WMOMIB OR NOT HAS_MODEL_LOADED BMYMIB OR NOT HAS_MODEL_LOADED WMYPLT OR NOT HAS_MODEL_LOADED AK47 OR NOT HAS_MODEL_LOADED LEVIATHN WAIT 0 ENDWHILE total_created_helis = 0 alpha_x = -780.6791 alpha_y = 2482.3389 alpha_z = 170.8723 alpha_h = 151.9289 GOSUB create_alpha_heli bravo_x = -750.9330 bravo_y = 2465.2854 bravo_z = 180.7247 bravo_h = 144.1498 GOSUB create_bravo_heli pheli_x = -772.2108 pheli_y = 2419.8433 pheli_z = 174.0836 pheli_h = 176.9396 GOSUB create_pheli CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -789.7678 2416.9163 156.0220 SET_CHAR_HEADING scplayer 190.8497 SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF TIMERA = 0 // initailise heli's flags pheli_flag = 0 pheli_goals = 0 alpha_heli_ai = DROP_GUYS_NEAR alpha_heli_goals = 0 bravo_heli_ai = CHASE_PHELI bravo_heli_goals = 0 FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT pheli_health = 100 PRINT_NOW AIR1_06 7000 1 // protect the contraband heli from the feds DISPLAY_ONSCREEN_COUNTER_WITH_STRING pheli_health COUNTER_DISPLAY_BAR AIR1_17 // set cars as non targetable IF NOT IS_CAR_DEAD m_quad VEHICLE_CAN_BE_TARGETTED_BY_HS_MISSILE m_quad FALSE ENDIF IF NOT IS_CAR_DEAD m_bike VEHICLE_CAN_BE_TARGETTED_BY_HS_MISSILE m_bike FALSE ENDIF IF NOT IS_CAR_DEAD m_buggy VEHICLE_CAN_BE_TARGETTED_BY_HS_MISSILE m_buggy FALSE ENDIF IF NOT IS_CAR_DEAD pheli VEHICLE_CAN_BE_TARGETTED_BY_HS_MISSILE pheli FALSE ENDIF // pickups CREATE_PICKUP HEALTH PICKUP_ONCE -770.7520 2423.6301 157.0753 m_pickup_health //CREATE_PICKUP PICKUP_ONCE -808.1523 2430.7883 156.9872 m_pickup_armour CREATE_PICKUP_WITH_AMMO ROCKETLA PICKUP_ONCE 20 -808.1523 2430.7883 156.9872 m_pickup_armour SET_MAX_FIRE_GENERATIONS 3 SET_WANTED_MULTIPLIER 0.5 SET_MAX_WANTED_LEVEL 2 SWITCH_POLICE_HELIS FALSE LVAR_INT dropping_off_heli dropping_off_heli = 0 alpha_heli_control = 1 bravo_heli_control = 1 SET_RADIO_CHANNEL stored_radio_station DO_FADE 150 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE m_goals++ CHECKPOINT_SAVE 99 ENDIF // update health of pheli IF NOT IS_CAR_DEAD pheli IF pheli_health_timer > 50 GET_CAR_HEALTH pheli temp_int IF temp_int > 100 // check if other heli is nearby temp_int = 0 IF NOT IS_CAR_DEAD alpha_heli GET_CAR_COORDINATES alpha_heli x y z IF LOCATE_CAR_3D pheli x y z 40.0 40.0 40.0 FALSE temp_int = 1 ENDIF ENDIF IF temp_int = 0 IF NOT IS_CAR_DEAD bravo_heli GET_CAR_COORDINATES bravo_heli x y z IF LOCATE_CAR_3D pheli x y z 40.0 40.0 40.0 FALSE temp_int = 1 ENDIF ENDIF ENDIF IF temp_int = 1 GET_CAR_HEALTH pheli temp_int temp_int += -5 IF temp_int < 0 temp_int = 1 ENDIF SET_CAR_HEALTH pheli temp_int ENDIF ENDIF pheli_health_timer = 0 ENDIF GET_CAR_HEALTH pheli temp_int temp_float =# temp_int temp_float /= 5000.0 temp_float *= 100.0 pheli_health =# temp_float ENDIF // players heli goes round in a circle IF m_goals = 1 // contol ai - first and second last heli will attack player IF total_created_helis = 5 IF dropping_off_heli = 0 alpha_heli_ai = DROP_GUYS_NEAR dropping_off_heli++ //WRITE_DEBUG HELI_TOLD_TO_DROP_GUYS ENDIF ENDIF // create alpha helis IF total_created_helis < 5 IF alpha_heli = 0 IF alpha_heli_control = 0 alpha_x = -344.9471 alpha_y = 2724.4214 alpha_z = 186.0 alpha_h = 110.0 GOSUB create_alpha_heli alpha_heli_ai = CHASE_PHELI alpha_heli_goals = 0 alpha_heli_control++ TIMERA = 0 ENDIF ENDIF ENDIF // create bravo helis IF total_created_helis < 5 IF bravo_heli = 0 IF bravo_heli_control = 0 bravo_x = -324.9471 // 204.0 bravo_y = 2704.4214 //2816.0 bravo_z = 186.0 bravo_h = 110.0 GOSUB create_bravo_heli bravo_heli_ai = CHASE_PHELI bravo_heli_goals = 0 bravo_heli_control++ TIMERB = 0 ENDIF ENDIF ENDIF // count fucked helis ------------------------------------------------------ IF alpha_heli_control > 0 IF alpha_heli = 0 alpha_helis_fucked++ total_fucked_helis++ alpha_heli_control = 0 TIMERA = 0 ENDIF ENDIF IF bravo_heli_control > 0 IF bravo_heli = 0 bravo_helis_fucked++ total_fucked_helis++ bravo_heli_control = 0 TIMERB = 0 ENDIF ENDIF IF debug_on = 1 IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK total_fucked_helis = 5 ENDIF ENDIF // passed this section IF total_fucked_helis = 5 TIMERA = 0 m_goals++ ENDIF // // process heli's ai GOSUB process_pheli_ai GOSUB process_alpha_heli_ai GOSUB process_bravo_heli_ai ENDIF IF m_goals = 2 IF TIMERA > 2000 //SET_MAX_WANTED_LEVEL 6 m_goals = 99 ENDIF ENDIF IF m_goals = 99 SET_WANTED_MULTIPLIER 1.0 SET_MAX_WANTED_LEVEL 6 CLEAR_ONSCREEN_COUNTER pheli_health GOSUB delete_pheli GOSUB delete_alpha_heli GOSUB delete_bravo_heli SET_PLAYER_CONTROL player1 OFF GOSUB DES3_next_stage ENDIF RETURN // ************************************************************************************************************* // STAGE 5 - Quick cut of pheli flying to drop off point // ************************************************************************************************************* d3_m_stage_5: IF m_goals = 0 // request stuff REQUEST_MODEL LEVIATHN REQUEST_MODEL WMYPLT REQUEST_MODEL AK47 REQUEST_MODEL KMB_HOLDALL REQUEST_MODEL KMB_PARACHUTE REQUEST_MODEL JOURNEY REQUEST_MODEL WMOPREA REQUEST_MODEL SWFOPRO REQUEST_MODEL BANDITO WHILE NOT HAS_MODEL_LOADED LEVIATHN OR NOT HAS_MODEL_LOADED WMYPLT OR NOT HAS_MODEL_LOADED AK47 OR NOT HAS_MODEL_LOADED KMB_HOLDALL OR NOT HAS_MODEL_LOADED KMB_PARACHUTE WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED JOURNEY OR NOT HAS_MODEL_LOADED BANDITO WAIT 0 ENDWHILE REQUEST_CAR_RECORDING 536 REQUEST_CAR_RECORDING 537 REQUEST_CAR_RECORDING 538 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 536 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 537 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 538 WAIT 0 ENDWHILE // create pheli GOSUB create_pheli IF NOT IS_CAR_DEAD pheli START_PLAYBACK_RECORDED_CAR pheli 536 ENDIF // take this out // SET_CHAR_COORDINATES scplayer -789.7678 2416.9163 156.0220 // SET_CHAR_HEADING scplayer 190.8497 SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE FREEZE_CHAR_POSITION scplayer TRUE //MAKE_PLAYER_SAFE_FOR_CUTSCENE player1 SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION -720.8120 2476.1816 171.2749 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -721.6284 2475.6072 171.2184 JUMP_CUT TIMERA = 0 m_goals++ ENDIF // skip IF m_goals > 0 AND TIMERA > 3000 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED m_goals = 99 ENDIF ENDIF // wait for 1st shot to finish IF m_goals = 1 IF TIMERA < 5000 IF NOT IS_CAR_DEAD pheli GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pheli 3.0 -5.0 -2.0 x y z POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF ELSE DO_FADE 300 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD pheli IF IS_PLAYBACK_GOING_ON_FOR_CAR pheli STOP_PLAYBACK_RECORDED_CAR pheli ENDIF ENDIF m_goals++ ENDIF ENDIF // setup second shot IF m_goals = 2 IF NOT IS_CAR_DEAD pheli DO_FADE 300 FADE_IN //START_PLAYBACK_RECORDED_CAR pheli 538 START_PLAYBACK_RECORDED_CAR_LOOPED pheli 538 //DISPLAY_PLAYBACK_RECORDED_CAR pheli PLAYBACK_DISPLAY_MODE_WHOLELINE SET_FIXED_CAMERA_POSITION 247.7597 2515.9370 82.7789 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 246.7721 2515.8936 82.6276 JUMP_CUT SKIP_IN_PLAYBACK_RECORDED_CAR pheli 100.0 CREATE_OBJECT KMB_HOLDALL 0.0 0.0 0.0 contraband ATTACH_OBJECT_TO_CAR contraband pheli 0.0 -2.0 -0.5 0.0 0.0 0.0 SET_OBJECT_VISIBLE contraband FALSE //SET_OBJECT_COLLISION contraband FALSE CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 cam_object ATTACH_OBJECT_TO_CAR cam_object pheli 0.0 0.0 -2.5 0.0 0.0 0.0 SET_OBJECT_VISIBLE cam_object FALSE //SET_OBJECT_COLLISION cam_object FALSE TIMERA = 0 cam_off_x = 2.0 cam_off_y = -7.0 cam_off_z = 1.0 m_goals++ ENDIF ENDIF // wait for heli to hit mark IF m_goals = 3 IF DOES_OBJECT_EXIST cam_object GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS cam_object cam_off_x cam_off_y cam_off_z x y z ENDIF POINT_CAMERA_AT_POINT x y z JUMP_CUT // drop bag IF TIMERA > 7000 SET_FIXED_CAMERA_POSITION 296.2388 2480.5535 97.5696 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 295.5632 2481.1533 97.1410 JUMP_CUT IF DOES_OBJECT_EXIST contraband DETACH_OBJECT contraband 0.0 0.0 0.0 FALSE ENDIF SET_OBJECT_VISIBLE contraband TRUE IF DOES_OBJECT_EXIST cam_object DETACH_OBJECT cam_object 0.0 0.0 0.0 FALSE ENDIF TIMERA = 0 m_goals++ ENDIF ENDIF // drop bag IF m_goals = 4 IF TIMERA > 1200 swing_dest_x = 264.2501 swing_dest_y = 2877.0112 swing_dest_z = 13.7096 GOSUB initialise_swinging_bag IF DOES_OBJECT_EXIST contraband GET_OBJECT_COORDINATES contraband x y z REPORT_MISSION_AUDIO_EVENT_AT_POSITION x y z SOUND_PARACHUTE_OPEN ENDIF TIMERA = 0 m_goals++ ENDIF IF DOES_OBJECT_EXIST cam_object GET_OBJECT_VELOCITY cam_object x y z z *= -0.1 ADD_TO_OBJECT_VELOCITY cam_object 0.0 0.0 z ENDIF ENDIF // make bag swing/fall to destination IF m_goals = 5 GOSUB update_swinging_bag IF TIMERA > 5000 m_goals = 99 ENDIF IF DOES_OBJECT_EXIST cam_object GET_OBJECT_VELOCITY cam_object x y z z *= -0.5 ADD_TO_OBJECT_VELOCITY cam_object 0.0 0.0 z ENDIF ENDIF IF m_goals = 99 DO_FADE 0 FADE_IN SET_PLAYER_CONTROL player1 ON IF NOT IS_CAR_DEAD escape_car ADD_BLIP_FOR_CAR escape_car escape_car_blip ELSE MARK_CAR_AS_NO_LONGER_NEEDED escape_car CLEAR_AREA -804.5877 2377.8428 151.7558 5.0 TRUE CREATE_CAR BANDITO -804.5877 2377.8428 151.7558 escape_car ADD_BLIP_FOR_CAR escape_car escape_car_blip ENDIF GET_CHAR_COORDINATES scplayer x y z CLEAR_AREA x y z 20.0 TRUE SET_BLIP_AS_FRIENDLY escape_car_blip TRUE MARK_MODEL_AS_NO_LONGER_NEEDED BANDITO CREATE_CAR JOURNEY -680.7584 2466.0808 114.9057 old_car SET_CAR_HEADING old_car 75.9390 CREATE_CHAR_INSIDE_CAR old_car PEDTYPE_CIVMALE WMOPREA old_man CREATE_CHAR_AS_PASSENGER old_car PEDTYPE_CIVFEMALE SWFOPRO 0 old_woman TASK_CAR_DRIVE_TO_COORD old_man old_car -726.9384 2357.3877 125.5138 10.0 MODE_NORMAL TRUE DRIVINGMODE_AVOIDCARS MARK_MODEL_AS_NO_LONGER_NEEDED WMOPREA MARK_MODEL_AS_NO_LONGER_NEEDED SWFOPRO SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE FREEZE_CHAR_POSITION scplayer FALSE //CLEAR_CUTSCENE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF WAIT 0 DELETE_OBJECT contraband DELETE_OBJECT cam_object GOSUB delete_pheli GOSUB DES3_next_stage ENDIF // // wait for heli to hit mark // IF m_goals = 3 // IF NOT IS_CAR_DEAD pheli // IF LOCATE_CAR_2D pheli 409.8435 2499.3025 5.0 5.0 FALSE // HELI_GOTO_COORDS pheli 409.8435 2499.3025 24.6574 10.0 10.0 // m_goals++ // ENDIF // ENDIF // ENDIF // // IF m_goals = 4 // IF NOT IS_CAR_DEAD pheli // GET_CAR_SPEED pheli temp_float // IF temp_float < 0.5 // GET_CAR_COORDINATES pheli x y z // IF z < 27.0 // TIMERA = 0 // m_goals++ // ENDIF // ELSE // GET_CAR_SPEED_VECTOR pheli vec_x vec_y vec_z // vec_x *= -0.001 // vec_y *= -0.001 // vec_z *= -0.001 // APPLY_FORCE_TO_CAR pheli vec_x vec_y vec_z 0.0 0.0 0.0 // ENDIF // ENDIF // ENDIF // // // drop bag // IF m_goals = 5 // IF NOT IS_CAR_DEAD pheli // GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pheli 0.0 0.0 -2.0 x y z // GET_CAR_HEADING pheli heading // CREATE_OBJECT_NO_OFFSET KMB_HOLDALL x y z contraband // SET_OBJECT_HEADING contraband heading // SET_OBJECT_DYNAMIC contraband TRUE // SET_OBJECT_VELOCITY contraband 0.0 0.0 -1.0 // TIMERA = 0 // m_goals++ // ENDIF // ENDIF // // // fly off // IF m_goals = 6 // IF TIMERA > 1500 // IF NOT IS_CAR_DEAD pheli // HELI_GOTO_COORDS pheli 585.4891 2239.5776 30.0 30.0 30.0 // ACTIVATE_HELI_SPEED_CHEAT pheli 5 // m_goals++ // TIMERA = 0 // ENDIF // ENDIF // ENDIF // // IF m_goals = 7 // IF TIMERA > 3000 //// IF NOT IS_CAR_DEAD pheli //// STOP_RECORDING_CAR pheli //// m_goals++ //// ENDIF // ENDIF // ENDIF RETURN // ************************************************************************************************************* // STAGE 6 - Retrieve package and take it home // ************************************************************************************************************* d3_m_stage_6: IF m_goals = 0 PRINT_NOW AIR1_09 7000 1 // get the contraband REQUEST_MODEL MAVERICK REQUEST_MODEL WMYPLT REQUEST_MODEL AK47 REQUEST_MODEL KMB_HOLDALL REQUEST_MODEL KMB_PARACHUTE REQUEST_MODEL WMOMIB REQUEST_MODEL BMYMIB WHILE NOT HAS_MODEL_LOADED MAVERICK OR NOT HAS_MODEL_LOADED WMYPLT OR NOT HAS_MODEL_LOADED AK47 OR NOT HAS_MODEL_LOADED KMB_HOLDALL OR NOT HAS_MODEL_LOADED WMOMIB OR NOT HAS_MODEL_LOADED BMYMIB WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED KMB_PARACHUTE WAIT 0 ENDWHILE // take this out // SET_CHAR_COORDINATES scplayer -789.7678 2416.9163 156.0220 // SET_CHAR_HEADING scplayer 190.8497 SWING_START_X = 216.9669 // 273.0106 SWING_START_Y = 2689.1492 // 2503.3118 SWING_START_Z = 90.0 // 71.8471 swing_dest_x = 264.2501 // 409.8586 264.2501 2877.0112 12.7096 swing_dest_y = 2877.0112 // 2516.3965 swing_dest_z = 13.7096 // 16.0 // 15.4918 IF DOES_OBJECT_EXIST contraband DELETE_OBJECT contraband ENDIF GOSUB initialise_swinging_bag //SWING_START_X = 271.1388 //SWING_START_Y = 2503.5127 //SWING_START_Z = 77.9865 // //SWING_START_X = 216.9669 //SWING_START_Y = 2689.1492 //SWING_START_Z = 199.5032 ADD_BLIP_FOR_OBJECT contraband contraband_blip SET_OBJECT_SCALE contraband 0.3 SWITCH_POLICE_HELIS TRUE m_goals++ CHECKPOINT_SAVE 99 ENDIF // wait for player to pickup contraband IF m_goals = 1 IF debug_on = 1 IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK SET_CHAR_COORDINATES scplayer 417.0 2493.0 27.83 ENDIF ENDIF IF please_update_swinging_bag = 0 IF DOES_OBJECT_EXIST contraband GET_OBJECT_COORDINATES contraband x y z IF LOCATE_CHAR_ON_FOOT_3D scplayer x y z 1.5 1.5 1.5 FALSE IF DOES_BLIP_EXIST escape_car_blip REMOVE_BLIP escape_car_blip ENDIF DELETE_OBJECT contraband REMOVE_BLIP contraband_blip TIMERA = 0 m_goals++ ENDIF ENDIF ENDIF ENDIF // show final cutscene bit IF m_goals = 2 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 269.6016 2868.4641 17.0 0.0 0.0 0.0 // 15.2584 WDTOM this z location is under the ground. "They're under the ground!" -Tremors POINT_CAMERA_AT_POINT 269.2238 2869.3726 16.6 JUMP_CUT // 15.0806 same SET_CHAR_COORDINATES scplayer 265.7708 2873.0781 15.0 // 13.4336 same SET_CHAR_HEADING scplayer 266.1126 $audio_string = &DES3_CA audio_sound_file = SOUND_DES3_CA START_NEW_SCRIPT audio_line -1 0 1 1 0 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_DES3_CB TIMERB = 0 m_goals++ ENDIF // play audio IF m_goals = 3 IF TIMERB > 1000 IF audio_line_is_active = 0 $audio_string = &DES3_CB audio_sound_file = SOUND_DES3_CB START_NEW_SCRIPT audio_line scplayer 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DES3_CC m_goals++ TIMERB = 0 ENDIF ENDIF ENDIF // play audio IF m_goals = 4 IF TIMERB > 1000 IF audio_line_is_active = 0 $audio_string = &DES3_CC audio_sound_file = SOUND_DES3_CC START_NEW_SCRIPT audio_line scplayer 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_DES3_CD m_goals++ TIMERB = 0 ENDIF ENDIF ENDIF // play audio IF m_goals = 5 IF TIMERB > 1000 IF audio_line_is_active = 0 $audio_string = &DES3_CD audio_sound_file = SOUND_DES3_CD START_NEW_SCRIPT audio_line -1 0 1 2 1 m_goals++ TIMERB = 0 ENDIF ENDIF ENDIF // finish cutscene IF m_goals = 6 IF TIMERB > 1000 IF audio_line_is_active = 0 SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 m_goals++ ENDIF ENDIF ENDIF // wait a while before creating alpha chopper IF m_goals = 7 PRINT_NOW AIR1_10 7000 1 // deliver contraband to hideout ADD_BLIP_FOR_COORD -394.8462 2226.6221 41.4259 location_blip //-450.9301 2238.4504 43.4409 gar_door_flag = 0 m_goals++ ENDIF // wait for player to arrive at hideout IF m_goals = 8 LVAR_INT gar_door_flag // open garage IF gar_door_flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -394.8462 2226.6221 41.4259 25.0 25.0 20.0 FALSE OPEN_GARAGE Ghostdr gar_door_flag = 1 ENDIF ELSE IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer -394.8462 2226.6221 41.4259 40.0 40.0 20.0 FALSE CLOSE_GARAGE Ghostdr gar_door_flag = 0 ENDIF ENDIF IF DOES_BLIP_EXIST location_blip IF IS_CHAR_IN_ANY_CAR scplayer IF LOCATE_CHAR_IN_CAR_3D scplayer -394.8462 2226.6221 41.4259 4.0 4.0 4.0 TRUE STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF IS_VEHICLE_ON_ALL_WHEELS car m_goals++ ENDIF ENDIF ELSE IF LOCATE_CHAR_ON_FOOT_3D scplayer -394.8462 2226.6221 41.4259 1.2 1.2 2.0 TRUE m_goals++ ENDIF ENDIF ELSE IF TIMERA > 60000 PRINT_NOW AIR1_11 7000 1 // lose the feds TIMERA = 0 ENDIF ENDIF ENDIF // fade out IF m_goals = 9 SET_PLAYER_CONTROL player1 OFF CLOSE_GARAGE Ghostdr DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -389.8034 2230.7419 41.4297 SET_CHAR_HEADING scplayer 270.0 SET_CAMERA_IN_FRONT_OF_PLAYER RESTORE_CAMERA_JUMPCUT WHILE NOT IS_GARAGE_CLOSED Ghostdr WAIT 0 ENDWHILE m_passed = 1 ENDIF IF alpha_has_caught_up = 0 IF DOES_VEHICLE_EXIST alpha_heli IF NOT IS_CAR_DEAD alpha_heli GET_CHAR_COORDINATES scplayer x y z IF NOT LOCATE_CAR_3D alpha_heli x y z 100.0 100.0 100.0 FALSE ACTIVATE_HELI_SPEED_CHEAT alpha_heli 10 ELSE des3_heat = 100 DISPLAY_ONSCREEN_COUNTER_WITH_STRING des3_heat COUNTER_DISPLAY_BAR AIR1_12 alpha_has_caught_up = 1 PRINT_NOW AIR1_11 7000 1 // lose the feds ENDIF ENDIF ENDIF ENDIF IF alpha_has_caught_up = 1 IF DOES_VEHICLE_EXIST alpha_heli IF NOT IS_CAR_DEAD alpha_heli GET_CHAR_COORDINATES scplayer x y z GET_CAR_COORDINATES alpha_heli x2 y2 z2 GET_DISTANCE_BETWEEN_COORDS_3D x y z x2 y2 z2 fed_distance IF fed_distance < 175.0 // tick up heat IF des3_heat < 100 IF fed_timer > 100 des3_heat += 1 fed_timer = 0 ENDIF ENDIF ELSE // tick down heat IF des3_heat > 0 IF fed_timer > 100 des3_heat += -1 fed_timer = 0 ENDIF ENDIF ENDIF IF des3_heat = 0 alpha_heli_ai = HELI_FUCKS_OFF alpha_heli_goals = 0 PRINT_NOW AIR1_10 7000 1 // deliver contraband to hideout alpha_has_caught_up = 2 CLEAR_ONSCREEN_COUNTER des3_heat ENDIF ELSE PRINT_NOW AIR1_10 7000 1 // deliver contraband to hideout alpha_has_caught_up = 2 CLEAR_ONSCREEN_COUNTER des3_heat ENDIF ENDIF ENDIF // manage location blip IF m_goals > 1 IF DOES_BLIP_EXIST location_blip IF alpha_has_caught_up = 1 REMOVE_BLIP location_blip ENDIF ELSE IF alpha_has_caught_up = 2 ADD_BLIP_FOR_COORD -450.9301 2238.4504 43.4409 location_blip ENDIF ENDIF ENDIF IF m_frame_num = 3 IF DOES_VEHICLE_EXIST alpha_heli GOSUB process_alpha_heli_ai ENDIF ENDIF GOSUB update_swinging_bag RETURN // ************************************************************************************************************* // GLOBAL FUNCTIONS - run continuously throughout lifetime of level // ************************************************************************************************************* d3_global_functions: IF DOES_BLIP_EXIST escape_car_blip IF NOT IS_CAR_DEAD escape_car IF IS_CHAR_IN_CAR scplayer escape_car REMOVE_BLIP escape_car_blip ENDIF ELSE REMOVE_BLIP escape_car_blip ENDIF ENDIF IF DOES_VEHICLE_EXIST pheli IF IS_CAR_DEAD pheli m_failed = 1 PRINT_NOW AIR1_08 5000 1 // the contraband heli is history ENDIF ENDIF IF m_frame_num = 7 GOSUB d3_PROCESS_CLEANUP_PEDS ENDIF RETURN // ************************************************************************************************************* // MISSION SPECIFIC GOSUBS // ************************************************************************************************************* // **************************************************************** // PACKAGE // **************************************************************** LVAR_FLOAT swing_speed_x swing_speed_y swing_speed_z LVAR_FLOAT swing_accel_x swing_accel_y swing_accel_z LVAR_FLOAT swing_rot_x swing_rot_y swing_rot_z LVAR_FLOAT swing_dest_x swing_dest_y swing_dest_z LVAR_FLOAT swing_dist_x swing_dist_y swing_dist_z LVAR_FLOAT swing_start_x swing_start_y swing_start_z LVAR_FLOAT swing_vec_x swing_vec_y swing_vec_z LVAR_FLOAT swing_angle_for_z LVAR_FLOAT swing_angle_for_xy LVAR_FLOAT swing_direct_dist LVAR_FLOAT swing_2d_dist LVAR_INT swing_timer_until_landed LVAR_FLOAT swing_initial_total_time LVAR_INT please_update_swinging_bag initialise_swinging_bag: IF DOES_OBJECT_EXIST contraband GET_OBJECT_COORDINATES contraband swing_start_x swing_start_y swing_start_z swing_start_z += 6.679 DELETE_OBJECT contraband ENDIF CREATE_OBJECT_NO_OFFSET KMB_PARACHUTE swing_start_x swing_start_y swing_start_z contraband SET_OBJECT_COLLISION contraband FALSE SET_OBJECT_DYNAMIC contraband FALSE //SET_OBJECT_RECORDS_COLLISIONS contraband FALSE swing_speed_x = 1.0 swing_speed_y = 0.5 swing_speed_z = 0.0 swing_rot_x = 0.0 swing_rot_y = 0.0 swing_rot_z = 0.0 swing_timer_until_landed = 80000 swing_initial_total_time =# swing_timer_until_landed // get initial distances GET_DISTANCE_BETWEEN_COORDS_3D swing_start_x swing_start_y swing_start_z swing_dest_x swing_dest_y swing_dest_z swing_direct_dist GET_DISTANCE_BETWEEN_COORDS_2D swing_start_x swing_start_y swing_dest_x swing_dest_y swing_2d_dist swing_dist_x = swing_start_x - swing_dest_x swing_dist_y = swing_start_y - swing_dest_y swing_dist_z = swing_start_z - swing_dest_z swing_vec_x = swing_dest_x - swing_start_x swing_vec_y = swing_dest_y - swing_start_y swing_vec_z = swing_dest_z - swing_start_z swing_vec_x /= swing_direct_dist swing_vec_y /= swing_direct_dist swing_vec_z /= swing_direct_dist // work out angles to make this thing land where we want // work out z angle vec_x = swing_2d_dist vec_y = 0.0 vec2_x = swing_2d_dist vec2_y = swing_dist_z GET_ANGLE_BETWEEN_2D_VECTORS vec_x vec_y vec2_x vec2_y swing_angle_for_z // work out xy angle vec_x = swing_dist_x vec_y = 0.0 vec2_x = swing_dist_x vec2_y = swing_dist_y GET_ANGLE_BETWEEN_2D_VECTORS vec_x vec_y vec2_x vec2_y swing_angle_for_xy // SAVE_NEWLINE_TO_DEBUG_FILE // SAVE_STRING_TO_DEBUG_FILE "swing_start_x = " // SAVE_FLOAT_TO_DEBUG_FILE swing_start_x // // SAVE_NEWLINE_TO_DEBUG_FILE // SAVE_STRING_TO_DEBUG_FILE "swing_start_y = " // SAVE_FLOAT_TO_DEBUG_FILE swing_start_y // // SAVE_NEWLINE_TO_DEBUG_FILE // SAVE_STRING_TO_DEBUG_FILE "swing_start_z = " // SAVE_FLOAT_TO_DEBUG_FILE swing_start_z please_update_swinging_bag = 1 RETURN update_swinging_bag: IF please_update_swinging_bag = 1 IF swing_timer_until_landed > 1000 //AND NOT HAS_OBJECT_COLLIDED_WITH_ANYTHING contraband IF DOES_OBJECT_EXIST contraband // x IF swing_rot_x > 180.0 swing_rot_x = -180.0 ENDIF IF swing_rot_x < -180.0 swing_rot_x = 180.0 ENDIF IF swing_rot_x >= 0.0 swing_accel_x = -0.01 ELSE swing_accel_x = 0.01 ENDIF swing_speed_x +=@ swing_accel_x IF swing_speed_x > 1.0 swing_speed_x = 1.0 ENDIF IF swing_speed_x < -1.0 swing_speed_x = -1.0 ENDIF swing_rot_x +=@ swing_speed_x // figure out position temp_float =# swing_timer_until_landed temp_float2 = swing_initial_total_time - temp_float temp_float2 /= swing_initial_total_time temp_float2 *= swing_direct_dist vec_x = swing_vec_x * temp_float2 vec_y = swing_vec_y * temp_float2 vec_z = swing_vec_z * temp_float2 x = swing_start_x + vec_x y = swing_start_y + vec_y z = swing_start_z + vec_z // // 1. get 3d dist // temp_float =# swing_timer_until_landed // temp_float /= swing_initial_total_time // temp_float *= swing_direct_dist // // // 2. get z dist // SIN swing_angle_for_z temp_float2 // swing_dist_z = temp_float * temp_float2 // // // 3. get y dist // COS swing_angle_for_z temp_float2 // swing_dist_x = temp_float * temp_float2 // // // 4. get xy dist // COS swing_angle_for_xy temp_float2 // swing_2d_dist = swing_dist_x / temp_float2 // // // 5. get x dist // SIN swing_angle_for_xy temp_float2 // swing_dist_y = swing_2d_dist * temp_float2 // // x = swing_dest_x - swing_dist_x // y = swing_dest_y + swing_dist_y // z = swing_dest_z + swing_dist_z contraband_x = x contraband_y = y contraband_z = z IF contraband_z < swing_dest_z contraband_z = swing_dest_z ENDIF SET_OBJECT_COORDINATES contraband contraband_x contraband_y contraband_z SET_OBJECT_ROTATION contraband swing_rot_x 0.0 90.0 ENDIF ELSE // bag has landed GET_OBJECT_COORDINATES contraband contraband_x contraband_y contraband_z GET_GROUND_Z_FOR_3D_COORD contraband_x contraband_y contraband_z contraband_z contraband_z += 0.5 IF contraband_z < swing_dest_z contraband_z = swing_dest_z ENDIF DELETE_OBJECT contraband REMOVE_BLIP contraband_blip CREATE_OBJECT_NO_OFFSET KMB_HOLDALL contraband_x contraband_y contraband_z contraband SET_OBJECT_SCALE contraband 0.3 ADD_BLIP_FOR_OBJECT contraband contraband_blip FREEZE_OBJECT_POSITION contraband TRUE SET_OBJECT_COLLISION contraband FALSE please_update_swinging_bag = 0 ENDIF ENDIF RETURN // **************************************************************** // PHELI // **************************************************************** LVAR_FLOAT pheli_x pheli_y pheli_z pheli_h create_pheli: CREATE_CAR LEVIATHN pheli_x pheli_y pheli_z pheli SET_CAR_HEADING pheli pheli_h SET_HELI_BLADES_FULL_SPEED pheli SET_HELI_STABILISER pheli TRUE CREATE_CHAR_INSIDE_CAR pheli PEDTYPE_MISSION1 WMYPLT pheli_pilot SET_CHAR_NEVER_TARGETTED pheli_pilot TRUE //CHANGE_CAR_COLOUR pheli CARCOLOUR_WHITE CARCOLOUR_RED3 SET_CAR_HEALTH pheli 5000 SET_CAR_PROOFS pheli FALSE FALSE FALSE TRUE FALSE ADD_BLIP_FOR_CAR pheli pheli_blip SET_BLIP_AS_FRIENDLY pheli_blip TRUE SET_LOAD_COLLISION_FOR_CAR_FLAG pheli FALSE SET_CAR_ONLY_DAMAGED_BY_PLAYER pheli TRUE RETURN delete_pheli: IF DOES_CHAR_EXIST pheli_pilot DELETE_CHAR pheli_pilot ENDIF IF DOES_VEHICLE_EXIST pheli DELETE_CAR pheli ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED LEVIATHN MARK_MODEL_AS_NO_LONGER_NEEDED WMYPLT REMOVE_BLIP pheli_blip RETURN process_pheli_ai: IF NOT IS_CAR_DEAD pheli // FLAG 0 - PHELI FLIES ROUND IN CIRCLE, AVOIDING OTHER HELIS ------------ IF pheli_flag = 0 IF pheli_goals = 0 checkpoints_x[0] = -784.6607 //-796.0797 //-825.5401 checkpoints_y[0] = 2442.2307 //2376.2654 //2421.0518 checkpoints_z[0] = 180.0 //184.8641 //178.3568 checkpoints_x[1] = -804.9590 //-778.5941 //-781.1748 checkpoints_y[1] = 2425.5757 //2440.5225 //2448.8640 checkpoints_z[1] = 180.0 //190.3923 //183.9537 checkpoints_x[2] = -787.8075 //-811.2608 //-761.1632 checkpoints_y[2] = 2405.6890 //2433.4285 //2416.2007 checkpoints_z[2] = 180.0 //168.9958 //175.6004 checkpoints_x[3] = -772.5547 //-778.6653 //-808.3519 checkpoints_y[3] = 2413.2227 //2405.2563 //2353.1206 checkpoints_z[3] = 180.0 //174.7590 //174.5634 checkpoints_x[4] = -772.9753 //-788.8781 //-858.5571 checkpoints_y[4] = 2432.2837 //2432.1472 //2301.5857 checkpoints_z[4] = 180.0 //177.3275 //180.0208 checkpoints_x[5] = -789.0908 //-818.2345 //-755.6169 checkpoints_y[5] = 2424.8518 //2396.1636 //2318.3374 checkpoints_z[5] = 180.0 //176.3614 //182.5816 checkpoints_x[6] = -802.8000 //-775.7371 //-825.0372 checkpoints_y[6] = 2431.0896 //2455.2415 //2456.4963 checkpoints_z[6] = 180.0 //175.0698 //165.8862 checkpoints_x[7] = -772.5547 //-767.5922 //-807.6311 checkpoints_y[7] = 2413.2227 //2390.2625 //2390.3743 checkpoints_z[7] = 180.0 //175.2787 //175.1135 pheli_progress = 0 HELI_GOTO_COORDS pheli checkpoints_x[pheli_progress] checkpoints_y[pheli_progress] checkpoints_z[pheli_progress] 15.0 checkpoints_z[pheli_progress] ACTIVATE_HELI_SPEED_CHEAT pheli 1 pheli_goals++ ENDIF // follow route IF LOCATE_CAR_3D pheli checkpoints_x[pheli_progress] checkpoints_y[pheli_progress] checkpoints_z[pheli_progress] 10.0 10.0 10.0 FALSE GENERATE_RANDOM_INT_IN_RANGE 0 8 temp_int IF temp_int = pheli_progress temp_int += 1 IF temp_int > 7 temp_int = 0 ENDIF ENDIF pheli_progress = temp_int HELI_GOTO_COORDS pheli checkpoints_x[pheli_progress] checkpoints_y[pheli_progress] checkpoints_z[pheli_progress] 15.0 checkpoints_z[pheli_progress] ENDIF // // avoid alpha heli // IF NOT IS_CAR_DEAD alpha_heli // GET_CAR_COORDINATES alpha_heli x y z // ENDIF // IF LOCATE_CAR_3D pheli x y z 15.0 15.0 15.0 FALSE // heli_to_move = pheli // heli_to_avoid = alpha_heli // GOSUB heli_aviod_heli // ENDIF // // // avoid bravo heli // IF NOT IS_CAR_DEAD bravo_heli // GET_CAR_COORDINATES bravo_heli x y z // ENDIF // IF LOCATE_CAR_3D pheli x y z 15.0 15.0 15.0 FALSE // heli_to_move = pheli // heli_to_avoid = bravo_heli // GOSUB heli_aviod_heli // ENDIF // make heli come crashing down --------------------------------- GET_CAR_HEALTH pheli temp_int IF temp_int <= 300 IF NOT pheli_flag = 99 MAKE_HELI_COME_CRASHING_DOWN pheli pheli_flag = 99 ENDIF ENDIF ENDIF ENDIF RETURN // **************************************************************** // ALPHA HELI // **************************************************************** LVAR_FLOAT alpha_x alpha_y alpha_z alpha_h create_alpha_heli: // create heli ------------ IF NOT DOES_VEHICLE_EXIST alpha_heli CREATE_CAR MAVERICK 0.0 0.0 0.0 alpha_heli VEHICLE_CAN_BE_TARGETTED_BY_HS_MISSILE alpha_heli TRUE SET_LOAD_COLLISION_FOR_CAR_FLAG alpha_heli FALSE ENDIF // create pilot ----------- IF NOT DOES_CHAR_EXIST alpha_pilot CREATE_CHAR_INSIDE_CAR alpha_heli PEDTYPE_MISSION2 BMYMIB alpha_pilot ENDIF // create guys on side ---- IF NOT DOES_CHAR_EXIST alpha_ped[0] CREATE_CHAR PEDTYPE_MISSION2 WMOMIB 0.0 0.0 0.0 alpha_ped[0] ENDIF IF NOT DOES_CHAR_EXIST alpha_ped[1] CREATE_CHAR PEDTYPE_MISSION2 BMYMIB 0.0 0.0 0.0 alpha_ped[1] ENDIF IF NOT DOES_CHAR_EXIST alpha_ped[2] CREATE_CHAR PEDTYPE_MISSION2 WMOMIB 0.0 0.0 0.0 alpha_ped[2] ENDIF IF NOT DOES_CHAR_EXIST alpha_ped[3] CREATE_CHAR PEDTYPE_MISSION2 BMYMIB 0.0 0.0 0.0 alpha_ped[3] ENDIF // heli setup -------------- IF NOT IS_CAR_DEAD alpha_heli SET_CAR_COORDINATES alpha_heli alpha_x alpha_y alpha_z SET_CAR_HEADING alpha_heli alpha_h SET_HELI_BLADES_FULL_SPEED alpha_heli CHANGE_CAR_COLOUR alpha_heli CARCOLOUR_BLACK CARCOLOUR_BLACK SET_HELI_STABILISER alpha_heli TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER alpha_heli TRUE LOCK_CAR_DOORS alpha_heli CARLOCK_LOCKED ENDIF // pilot setup ------------- IF NOT IS_CHAR_DEAD alpha_pilot SET_CHAR_CAN_BE_SHOT_IN_VEHICLE alpha_pilot FALSE SET_CHAR_CANT_BE_DRAGGED_OUT alpha_pilot TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE alpha_pilot FALSE SET_CHAR_DECISION_MAKER alpha_pilot empty_dm ENDIF // peds setup -------------- IF NOT IS_CAR_DEAD alpha_heli IF NOT IS_CHAR_DEAD alpha_ped[0] ATTACH_CHAR_TO_CAR alpha_ped[0] alpha_heli 1.0 1.25 -0.1 FACING_RIGHT 310.0 WEAPONTYPE_AK47 alpha_ped_attached[0] = 1 ENDIF IF NOT IS_CHAR_DEAD alpha_ped[1] ATTACH_CHAR_TO_CAR alpha_ped[1] alpha_heli 1.1 -0.3 -0.1 FACING_RIGHT 310.0 WEAPONTYPE_AK47 alpha_ped_attached[1] = 1 ENDIF IF NOT IS_CHAR_DEAD alpha_ped[2] ATTACH_CHAR_TO_CAR alpha_ped[2] alpha_heli -1.0 1.25 -0.1 FACING_LEFT 50.0 WEAPONTYPE_AK47 alpha_ped_attached[2] = 1 ENDIF IF NOT IS_CHAR_DEAD alpha_ped[3] ATTACH_CHAR_TO_CAR alpha_ped[3] alpha_heli -1.1 -0.3 -0.1 FACING_LEFT 50.0 WEAPONTYPE_AK47 alpha_ped_attached[3] = 1 ENDIF temp_int = 0 WHILE temp_int < 4 IF NOT IS_CHAR_DEAD alpha_ped[temp_int] SET_CHAR_SHOOT_RATE alpha_ped[temp_int] 20 SET_CHAR_ACCURACY alpha_ped[temp_int] 27 IF temp_int = 0 OR temp_int = 2 SET_CHAR_MAX_HEALTH alpha_ped[temp_int] 125 SET_CHAR_HEALTH alpha_ped[temp_int] 125 ELSE SET_CHAR_MAX_HEALTH alpha_ped[temp_int] 100 SET_CHAR_HEALTH alpha_ped[temp_int] 100 ENDIF SET_CHAR_ONLY_DAMAGED_BY_PLAYER alpha_ped[temp_int] TRUE SET_CHAR_DECISION_MAKER alpha_ped[temp_int] empty_dm //SET_CHAR_RELATIONSHIP alpha_ped[temp_int] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 //SET_CHAR_RELATIONSHIP alpha_ped[temp_int] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 alpha_ped_flag[temp_int] = 0 ENDIF temp_int++ ENDWHILE ENDIF // add blip IF NOT IS_CAR_DEAD alpha_heli IF DOES_BLIP_EXIST alpha_heli_blip REMOVE_BLIP alpha_heli_blip ENDIF ADD_BLIP_FOR_CAR alpha_heli alpha_heli_blip ENDIF // // add searchlight // IF NOT IS_CAR_DEAD alpha_heli // CREATE_SEARCHLIGHT_ON_VEHICLE alpha_heli 0.0 0.0 -1.0 0.0 0.0 0.0 6.0 1.0 alpha_search // ENDIF alpha_heli_ai = CHASE_PHELI alpha_heli_goals = 0 total_created_helis++ RETURN delete_alpha_heli: IF DOES_CHAR_EXIST alpha_pilot DELETE_CHAR alpha_pilot ENDIF temp_int = 0 WHILE temp_int < 4 IF DOES_CHAR_EXIST alpha_ped[temp_int] DELETE_CHAR alpha_ped[temp_int] ENDIF temp_int++ ENDWHILE IF DOES_VEHICLE_EXIST alpha_heli DELETE_CAR alpha_heli ENDIF // IF DOES_SEARCHLIGHT_EXIST alpha_search // DELETE_SEARCHLIGHT alpha_search // ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED MAVERICK MARK_MODEL_AS_NO_LONGER_NEEDED WMOMIB MARK_MODEL_AS_NO_LONGER_NEEDED BMYMIB MARK_MODEL_AS_NO_LONGER_NEEDED AK47 RETURN process_alpha_heli_ai: process_alpha_heli_ai_begining: // if heli is still alive after four minutes destroy it. IF TIMERA > 240000 IF NOT IS_CAR_DEAD alpha_heli EXPLODE_CAR alpha_heli EXPLODE_CAR alpha_heli TIMERA = 0 ENDIF ENDIF CONST_INT CHASE_PHELI 0 CONST_INT DROP_GUYS_LOCATION1 1 CONST_INT DROP_GUYS_LOCATION2 2 CONST_INT DROP_GUYS_LOCATION3 3 CONST_INT CIRCLE_PLAYER 4 CONST_INT DROP_GUYS_NEAR 5 CONST_INT HELI_FUCKS_OFF 99 // FLAG 0 - CHASE PHELI AND AVOID BRAVO HELI -------------------------- SWITCH alpha_heli_ai CASE CHASE_PHELI //IF DOES_VEHICLE_EXIST alpha_heli IF NOT IS_CAR_DEAD alpha_heli IF alpha_heli_goals = 0 IF NOT IS_CAR_DEAD pheli HELI_FOLLOW_ENTITY alpha_heli -1 pheli 20.0 //ACTIVATE_HELI_SPEED_CHEAT alpha_heli 1 // POINT_SEARCHLIGHT_AT_VEHICLE alpha_search pheli 10.0 alpha_heli_goals++ alpha_heli_timer = 0 ENDIF ENDIF IF alpha_heli_goals = 1 IF alpha_heli_timer < 10000 // catch up with player heli IF NOT IS_CAR_DEAD pheli GET_CAR_COORDINATES pheli x y z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pheli 10.0 -10.0 5.0 x y z IF NOT LOCATE_CAR_3D alpha_heli x y z 50.0 50.0 50.0 FALSE GET_CAR_COORDINATES alpha_heli x2 y2 z2 vec_x = x - x2 vec_y = y - y2 vec_z = z - z2 GET_DISTANCE_BETWEEN_COORDS_3D x y z x2 y2 z2 distance IF distance > 0.01 vec_x /= distance vec_y /= distance vec_z /= distance vec_x *= 0.01 vec_y *= 0.01 vec_z *= 0.01 APPLY_FORCE_TO_CAR alpha_heli vec_x vec_y vec_z 0.0 0.0 0.0 ENDIF ELSE // IF LOCATE_CAR_3D alpha_heli x y z 25.0 25.0 25.0 FALSE // heli_to_move = alpha_heli // heli_to_avoid = pheli // GOSUB heli_aviod_heli // ENDIF ENDIF ENDIF ELSE // circle player HELI_FOLLOW_ENTITY alpha_heli scplayer -1 20.0 alpha_heli_goals++ alpha_heli_timer = 0 ENDIF ENDIF IF alpha_heli_goals = 2 IF alpha_heli_timer > 25000 alpha_heli_goals = 0 alpha_heli_timer = 0 ENDIF ENDIF ENDIF //ENDIF BREAK // goto point and drop dudes off -------------------------------------------------------- CASE DROP_GUYS_NEAR //IF DOES_VEHICLE_EXIST alpha_heli IF NOT IS_CAR_DEAD alpha_heli IF alpha_heli_goals = 0 // SET_HELI_REACHED_TARGET_DISTANCE alpha_heli 3 // HELI_GOTO_COORDS alpha_heli -771.6 2421.3 170.0 5.0 170.0 HELI_KEEP_ENTITY_IN_VIEW alpha_heli scplayer -1 15.0 170.0 // POINT_SEARCHLIGHT_AT_COORD alpha_search -771.6 2421.3 155.0 10.0 alpha_ped_flag[0] = 0 alpha_ped_flag[1] = 0 alpha_ped_flag[2] = 0 alpha_ped_flag[3] = 0 alpha_heli_goals++ ENDIF // wait for heli to get to coords IF alpha_heli_goals = 1 IF m_frame_num = 10 GET_CHAR_COORDINATES scplayer x2 y2 z2 IF LOCATE_CAR_2D alpha_heli x2 y2 20.0 20.0 FALSE GET_CAR_COORDINATES alpha_heli x y z GET_GROUND_Z_FOR_3D_COORD x y z temp_float // check if ground isn't way below player temp_float2 = z2 - temp_float IF temp_float2 < 5.0 // temp_float2 = z - temp_float // IF temp_float2 < 20.0 alpha_goto_x = x alpha_goto_y = y alpha_goto_Z = temp_float + 10.0 HELI_GOTO_COORDS alpha_heli alpha_goto_x alpha_goto_y alpha_goto_z 10.0 0.0 alpha_heli_goals++ // ENDIF ENDIF ENDIF ENDIF ENDIF // wait for heli to get to coords IF alpha_heli_goals = 2 IF LOCATE_CAR_3D alpha_heli alpha_goto_x alpha_goto_y alpha_goto_z 4.0 4.0 8.0 FALSE GET_CAR_SPEED alpha_heli temp_float IF temp_float > 1.0 GET_CAR_SPEED_VECTOR alpha_heli vec_x vec_y vec_z vec_x *= -0.001 vec_y *= -0.001 vec_z *= -0.001 APPLY_FORCE_TO_CAR alpha_heli vec_x vec_y vec_z 0.0 0.0 0.0 ELSE FREEZE_CAR_POSITION alpha_heli TRUE alpha_heli_timer = 0 alpha_heli_goals++ ENDIF ELSE GET_CAR_SPEED alpha_heli temp_float IF temp_float < 10.0 GET_CAR_COORDINATES alpha_heli x y z vec_x = alpha_goto_x - x vec_y = alpha_goto_y - y vec_z = alpha_goto_Z - z GET_DISTANCE_BETWEEN_COORDS_3D x y z alpha_goto_x alpha_goto_y alpha_goto_z distance IF distance > 0.01 vec_x /= distance vec_y /= distance vec_z /= distance vec_x *= 0.01 vec_y *= 0.01 vec_z *= 0.01 APPLY_FORCE_TO_CAR alpha_heli vec_x vec_y vec_z 0.0 0.0 0.0 ENDIF ENDIF ENDIF ENDIF //works // create first swat IF alpha_heli_goals = 3 IF alpha_heli_timer > 1500 FREEZE_CAR_POSITION alpha_heli TRUE IF NOT IS_CHAR_DEAD alpha_ped[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS alpha_heli 1.0 1.25 -0.1 x y z DELETE_CHAR alpha_ped[0] CREATE_SWAT_ROPE PEDTYPE_MISSION2 WMOMIB x y z alpha_ped[0] SET_CHAR_SHOOT_RATE alpha_ped[0] 30 SET_CHAR_ACCURACY alpha_ped[0] 27 SET_CHAR_MAX_HEALTH alpha_ped[0] 125 SET_CHAR_HEALTH alpha_ped[0] 125 SET_CHAR_ONLY_DAMAGED_BY_PLAYER alpha_ped[0] TRUE SET_CHAR_DECISION_MAKER alpha_ped[0] empty_dm GIVE_WEAPON_TO_CHAR alpha_ped[0] WEAPONTYPE_AK47 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE alpha_ped[0] 2000.0 alpha_ped_attached[0] = 0 alpha_ped_flag[0] = 1 ENDIF alpha_heli_timer = 0 alpha_heli_goals = 6 ENDIF ENDIF /* //broken // 2nd swat rope IF alpha_heli_goals = 4 IF alpha_heli_timer > 0 IF NOT IS_CHAR_DEAD alpha_ped[1] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS alpha_heli 1.1 -0.3 -0.1 x y z DELETE_CHAR alpha_ped[1] CREATE_SWAT_ROPE PEDTYPE_MISSION2 BMYMIB x y z alpha_ped[1] SET_CHAR_SHOOT_RATE alpha_ped[1] 30 SET_CHAR_ACCURACY alpha_ped[1] 27 SET_CHAR_HEALTH alpha_ped[1] 100 SET_CHAR_ONLY_DAMAGED_BY_PLAYER alpha_ped[1] TRUE SET_CHAR_DECISION_MAKER alpha_ped[1] empty_dm GIVE_WEAPON_TO_CHAR alpha_ped[1] WEAPONTYPE_AK47 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE alpha_ped[1] 2000.0 alpha_ped_attached[1] = 0 alpha_ped_flag[1] = 1 ENDIF alpha_heli_timer = 0 alpha_heli_goals++ ENDIF ENDIF //broken // 3rd swat rope IF alpha_heli_goals = 5 IF alpha_heli_timer > 2000 IF NOT IS_CHAR_DEAD alpha_ped[2] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS alpha_heli -1.0 1.25 -0.1 x y z DELETE_CHAR alpha_ped[2] CREATE_SWAT_ROPE PEDTYPE_MISSION2 WMOMIB x y z alpha_ped[2] SET_CHAR_SHOOT_RATE alpha_ped[2] 30 SET_CHAR_ACCURACY alpha_ped[2] 27 SET_CHAR_MAX_HEALTH alpha_ped[2] 125 SET_CHAR_HEALTH alpha_ped[2] 125 SET_CHAR_ONLY_DAMAGED_BY_PLAYER alpha_ped[2] TRUE SET_CHAR_DECISION_MAKER alpha_ped[2] empty_dm GIVE_WEAPON_TO_CHAR alpha_ped[2] WEAPONTYPE_AK47 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE alpha_ped[2] 2000.0 alpha_ped_attached[2] = 0 alpha_ped_flag[2] = 1 ENDIF alpha_heli_timer = 0 alpha_heli_goals++ ENDIF ENDIF */ //works // 4th swat rope IF alpha_heli_goals = 6 IF alpha_heli_timer > 500 IF NOT IS_CHAR_DEAD alpha_ped[3] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS alpha_heli -1.1 -0.3 -0.1 x y z DELETE_CHAR alpha_ped[3] CREATE_SWAT_ROPE PEDTYPE_MISSION2 WMOMIB x y z alpha_ped[3] SET_CHAR_SHOOT_RATE alpha_ped[3] 30 SET_CHAR_ACCURACY alpha_ped[3] 27 SET_CHAR_HEALTH alpha_ped[3] 100 SET_CHAR_ONLY_DAMAGED_BY_PLAYER alpha_ped[3] TRUE SET_CHAR_DECISION_MAKER alpha_ped[3] empty_dm GIVE_WEAPON_TO_CHAR alpha_ped[3] WEAPONTYPE_AK47 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE alpha_ped[3] 2000.0 alpha_ped_attached[3] = 0 alpha_ped_flag[3] = 1 ENDIF alpha_heli_timer = 0 alpha_heli_goals++ ENDIF ENDIF // wait for swat guys to finish IF alpha_heli_goals = 7 // if all the swat guy have gone - make heli bugger off IF alpha_ped_flag[0] = 2 OR IS_CHAR_DEAD alpha_ped[0] //IF alpha_ped_flag[1] = 2 //OR IS_CHAR_DEAD alpha_ped[1] //IF alpha_ped_flag[2] = 2 //OR IS_CHAR_DEAD alpha_ped[2] IF alpha_ped_flag[3] = 2 OR IS_CHAR_DEAD alpha_ped[3] alpha_heli_timer = 0 alpha_heli_goals++ ENDIF //ENDIF //ENDIF ENDIF ENDIF // heli fucks off when dropped off guys IF alpha_heli_goals = 8 alpha_heli_ai = HELI_FUCKS_OFF ENDIF ENDIF //ENDIF // ped ai --------------------------------------------------------------- temp_int = m_frame_num - 5 IF temp_int < 4 AND temp_int > -1 IF DOES_CHAR_EXIST alpha_ped[temp_int] IF NOT IS_CHAR_DEAD alpha_ped[temp_int] IF alpha_ped_attached[temp_int] = 0 IF alpha_ped_flag[temp_int] = 0 GET_SCRIPT_TASK_STATUS alpha_ped[temp_int] TASK_KILL_CHAR_ON_FOOT temp_int2 IF temp_int2 = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT alpha_ped[temp_int] scplayer ENDIF ENDIF IF alpha_ped_flag[temp_int] = 1 GET_SCRIPT_TASK_STATUS alpha_ped[temp_int] CREATE_SWAT_ROPE temp_int2 IF temp_int2 = FINISHED_TASK SET_CHAR_DECISION_MAKER alpha_ped[temp_int] tough_dm SET_CHAR_RELATIONSHIP alpha_ped[temp_int] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 alpha_ped_flag[temp_int]++ ENDIF ENDIF IF alpha_ped_flag[temp_int] = 2 // point and shoot at player for a bit CLEAR_CHAR_TASKS alpha_ped[temp_int] OPEN_SEQUENCE_TASK temp_seq TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK alpha_ped[temp_int] temp_seq CLEAR_SEQUENCE_TASK temp_seq alpha_ped_flag[temp_int]++ ENDIF IF alpha_ped_flag[temp_int] = 3 ped_to_add = alpha_ped[temp_int] GOSUB d3_add_to_cleanup_peds alpha_ped[temp_int] = 0 alpha_ped_flag[temp_int] = 0 // add to list of peds to cleanup LVAR_INT cleanup_peds[24] ENDIF ENDIF ENDIF ENDIF ENDIF BREAK // alpha_heli_ai = DROP_GUYS_LOCATION2 // circle player --------------------------------------------------------------------------------- CASE CIRCLE_PLAYER //IF DOES_VEHICLE_EXIST alpha_heli IF NOT IS_CAR_DEAD alpha_heli IF alpha_heli_goals = 0 HELI_KEEP_ENTITY_IN_VIEW alpha_heli scplayer -1 25.0 15.0 //HELI_FOLLOW_ENTITY alpha_heli scplayer -1 15.0 // POINT_SEARCHLIGHT_AT_CHAR alpha_search scplayer 10.0 alpha_heli_goals++ ENDIF // keep heli moving slightly GET_CAR_SPEED alpha_heli temp_float IF temp_float < 5.0 GET_CAR_SPEED_VECTOR alpha_heli vec_x vec_y vec_z vec_x *= 0.0001 vec_y *= 0.0001 vec_z *= 0.0001 APPLY_FORCE_TO_CAR alpha_heli vec_x vec_y vec_z 0.0 0.0 0.0 ENDIF ENDIF //ENDIF BREAK ENDSWITCH // heli fucks off -------------------------------------------------------------------------------- //IF DOES_VEHICLE_EXIST alpha_heli IF alpha_heli_ai = HELI_FUCKS_OFF IF NOT IS_CAR_DEAD alpha_heli VEHICLE_CAN_BE_TARGETTED_BY_HS_MISSILE alpha_heli FALSE FREEZE_CAR_POSITION alpha_heli FALSE GET_CAR_HEALTH alpha_heli temp_int IF temp_int <= 300 MARK_CHAR_AS_NO_LONGER_NEEDED alpha_pilot IF NOT IS_CHAR_DEAD alpha_pilot SET_CHAR_DECISION_MAKER alpha_pilot empty_dm ENDIF MAKE_HELI_COME_CRASHING_DOWN alpha_heli MARK_CAR_AS_NO_LONGER_NEEDED alpha_heli alpha_heli = 0 alpha_pilot = 0 ELSE MARK_CHAR_AS_NO_LONGER_NEEDED alpha_pilot IF NOT IS_CHAR_DEAD alpha_pilot SET_CHAR_DECISION_MAKER alpha_pilot empty_dm ENDIF HELI_GOTO_COORDS alpha_heli 204.0 2816.0 186.0 50.0 186.0 MARK_CAR_AS_NO_LONGER_NEEDED alpha_heli alpha_heli = 0 alpha_pilot = 0 ENDIF IF DOES_BLIP_EXIST alpha_heli_blip REMOVE_BLIP alpha_heli_blip ENDIF // DELETE_SEARCHLIGHT alpha_search ENDIF ENDIF //ENDIF // if all the peds on the heli are dead then the heli should fuck off ----------------------------- //IF DOES_VEHICLE_EXIST alpha_heli IF NOT IS_CAR_DEAD alpha_heli IF alpha_ped_attached[0] = 1 AND IS_CHAR_DEAD alpha_ped[0] IF alpha_ped_attached[1] = 1 AND IS_CHAR_DEAD alpha_ped[1] IF alpha_ped_attached[2] = 1 AND IS_CHAR_DEAD alpha_ped[2] IF alpha_ped_attached[3] = 1 AND IS_CHAR_DEAD alpha_ped[3] alpha_heli_ai = HELI_FUCKS_OFF ENDIF ENDIF ENDIF ENDIF ENDIF //ENDIF // on board peds ---- shoot player when near, otherwise shoot pheli ------------------------------- temp_int = m_frame_num - 5 IF temp_int < 4 AND temp_int > -1 IF DOES_CHAR_EXIST alpha_ped[temp_int] IF NOT IS_CHAR_DEAD alpha_ped[temp_int] IF alpha_ped_attached[temp_int] = 1 IF alpha_ped_flag[temp_int] = 0 IF NOT IS_CHAR_DEAD pheli_pilot CLEAR_CHAR_TASKS alpha_ped[temp_int] OPEN_SEQUENCE_TASK temp_seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 pheli_pilot TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK alpha_ped[temp_int] temp_seq CLEAR_SEQUENCE_TASK temp_seq alpha_ped_flag[temp_int]++ ELSE alpha_ped_flag[temp_int]++ ENDIF ENDIF IF alpha_ped_flag[temp_int] = 1 IF temp_int = 1 OR temp_int = 3 OR alpha_heli_ai = CIRCLE_PLAYER IF LOCATE_CHAR_ANY_MEANS_CHAR_3D alpha_ped[temp_int] scplayer 60.0 60.0 60.0 FALSE CLEAR_CHAR_TASKS alpha_ped[temp_int] OPEN_SEQUENCE_TASK temp_seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK alpha_ped[temp_int] temp_seq CLEAR_SEQUENCE_TASK temp_seq SET_CHAR_SHOOT_RATE alpha_ped[temp_int] 100 alpha_ped_flag[temp_int]++ ENDIF ENDIF ENDIF IF alpha_ped_flag[temp_int] = 2 IF temp_int = 1 OR temp_int = 3 OR alpha_heli_ai = CIRCLE_PLAYER IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D alpha_ped[temp_int] scplayer 80.0 80.0 80.0 FALSE IF NOT IS_CHAR_DEAD pheli_pilot CLEAR_CHAR_TASKS alpha_ped[temp_int] OPEN_SEQUENCE_TASK temp_seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 pheli_pilot TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK alpha_ped[temp_int] temp_seq CLEAR_SEQUENCE_TASK temp_seq SET_CHAR_SHOOT_RATE alpha_ped[temp_int] 20 alpha_ped_flag[temp_int] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // temp_int++ // ENDWHILE ENDIF // // avoid bravo heli --------------------------------------------- // IF NOT IS_CAR_DEAD alpha_heli // IF NOT IS_CAR_DEAD bravo_heli // GET_CAR_COORDINATES bravo_heli x y z // ENDIF // IF LOCATE_CAR_3D alpha_heli x y z 25.0 25.0 25.0 FALSE // heli_to_move = alpha_heli // heli_to_avoid = bravo_heli // GOSUB heli_aviod_heli // ENDIF // ENDIF // make heli come crashing down --------------------------------- //IF DOES_VEHICLE_EXIST alpha_heli IF NOT IS_CAR_DEAD alpha_heli GET_CAR_HEALTH alpha_heli temp_int IF temp_int <= 300 IF NOT alpha_heli_ai = HELI_FUCKS_OFF alpha_heli_ai = HELI_FUCKS_OFF ENDIF ENDIF ENDIF //ENDIF // // limit heli speed --------------------------------------------- // IF NOT IS_CAR_DEAD alpha_heli // GET_CAR_SPEED alpha_heli temp_float // IF temp_float > 20.0 // GET_CAR_SPEED_VECTOR alpha_heli vec_x vec_y vec_z // vec_x *= -0.0001 // vec_y *= -0.0001 // vec_z *= -0.0001 // APPLY_FORCE_TO_CAR alpha_heli vec_x vec_y vec_z 0.0 0.0 0.0 // ENDIF // ENDIF // detach peds if they die --------------------------------------- temp_int = 0 WHILE temp_int < 4 IF DOES_CHAR_EXIST alpha_ped[temp_int] IF IS_CHAR_DEAD alpha_ped[temp_int] DETACH_CHAR_FROM_CAR alpha_ped[temp_int] alpha_ped_flag[temp_int] = 0 ped_to_add = alpha_ped[temp_int] GOSUB d3_add_to_cleanup_peds alpha_ped[temp_int] = 0 ENDIF ENDIF temp_int++ ENDWHILE //IF DOES_VEHICLE_EXIST alpha_heli IF IS_CAR_DEAD alpha_heli AND NOT alpha_heli = 0 MARK_CHAR_AS_NO_LONGER_NEEDED alpha_pilot IF NOT IS_CHAR_DEAD alpha_pilot SET_CHAR_DECISION_MAKER alpha_pilot empty_dm ENDIF MARK_CAR_AS_NO_LONGER_NEEDED alpha_heli alpha_heli = 0 alpha_pilot = 0 temp_int = 0 WHILE temp_int < 4 IF DOES_CHAR_EXIST alpha_ped[temp_int] ped_to_add = alpha_ped[temp_int] GOSUB d3_add_to_cleanup_peds alpha_ped[temp_int] = 0 ENDIF temp_int++ ENDWHILE IF DOES_BLIP_EXIST alpha_heli_blip REMOVE_BLIP alpha_heli_blip ENDIF ENDIF //ENDIF RETURN // **************************************************************** // BRAVO HELI // **************************************************************** LVAR_FLOAT bravo_x bravo_y bravo_z bravo_h create_bravo_heli: // create heli ------------ IF DOES_VEHICLE_EXIST bravo_heli MARK_CAR_AS_NO_LONGER_NEEDED bravo_heli bravo_heli = 0 //WRITE_DEBUG BRAVO_NO_LONGER_NEEDED1 ENDIF IF NOT DOES_VEHICLE_EXIST bravo_heli CREATE_CAR MAVERICK 0.0 0.0 0.0 bravo_heli VEHICLE_CAN_BE_TARGETTED_BY_HS_MISSILE bravo_heli TRUE SET_LOAD_COLLISION_FOR_CAR_FLAG bravo_heli FALSE //WRITE_DEBUG BRAVO_CREATED ENDIF // create pilot ----------- IF DOES_CHAR_EXIST bravo_pilot MARK_CHAR_AS_NO_LONGER_NEEDED bravo_pilot IF NOT IS_CHAR_DEAD bravo_pilot SET_CHAR_DECISION_MAKER bravo_pilot empty_dm ENDIF bravo_pilot = 0 ENDIF IF NOT DOES_CHAR_EXIST bravo_pilot CREATE_CHAR_INSIDE_CAR bravo_heli PEDTYPE_MISSION2 BMYMIB bravo_pilot ENDIF // create guys on side ---- temp_int = 0 WHILE temp_int < 4 IF DOES_CHAR_EXIST bravo_ped[temp_int] MARK_CHAR_AS_NO_LONGER_NEEDED bravo_ped[temp_int] bravo_ped[temp_int] = 0 ENDIF temp_int++ ENDWHILE IF NOT DOES_CHAR_EXIST bravo_ped[0] CREATE_CHAR PEDTYPE_MISSION2 WMOMIB 0.0 0.0 0.0 bravo_ped[0] ENDIF IF NOT DOES_CHAR_EXIST bravo_ped[1] CREATE_CHAR PEDTYPE_MISSION2 BMYMIB 0.0 0.0 0.0 bravo_ped[1] ENDIF IF NOT DOES_CHAR_EXIST bravo_ped[2] CREATE_CHAR PEDTYPE_MISSION2 WMOMIB 0.0 0.0 0.0 bravo_ped[2] ENDIF IF NOT DOES_CHAR_EXIST bravo_ped[3] CREATE_CHAR PEDTYPE_MISSION2 BMYMIB 0.0 0.0 0.0 bravo_ped[3] ENDIF // heli setup -------------- IF NOT IS_CAR_DEAD bravo_heli SET_CAR_COORDINATES bravo_heli bravo_x bravo_y bravo_z SET_CAR_HEADING bravo_heli bravo_h SET_HELI_BLADES_FULL_SPEED bravo_heli CHANGE_CAR_COLOUR bravo_heli CARCOLOUR_BLACK CARCOLOUR_BLACK SET_HELI_STABILISER bravo_heli TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER bravo_heli TRUE LOCK_CAR_DOORS bravo_heli CARLOCK_LOCKED ENDIF // pilot setup ------------- IF NOT IS_CHAR_DEAD bravo_pilot SET_CHAR_CAN_BE_SHOT_IN_VEHICLE bravo_pilot FALSE SET_CHAR_CANT_BE_DRAGGED_OUT bravo_pilot TRUE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE bravo_pilot FALSE SET_CHAR_DECISION_MAKER bravo_pilot empty_dm ENDIF // peds setup -------------- IF NOT IS_CAR_DEAD bravo_heli IF NOT IS_CHAR_DEAD bravo_ped[0] ATTACH_CHAR_TO_CAR bravo_ped[0] bravo_heli 1.0 1.25 0.2 FACING_RIGHT 310.0 WEAPONTYPE_AK47 ENDIF IF NOT IS_CHAR_DEAD bravo_ped[1] ATTACH_CHAR_TO_CAR bravo_ped[1] bravo_heli 1.1 -0.3 0.2 FACING_RIGHT 310.0 WEAPONTYPE_AK47 ENDIF IF NOT IS_CHAR_DEAD bravo_ped[2] ATTACH_CHAR_TO_CAR bravo_ped[2] bravo_heli -1.0 1.25 0.2 FACING_LEFT 50.0 WEAPONTYPE_AK47 ENDIF IF NOT IS_CHAR_DEAD bravo_ped[3] ATTACH_CHAR_TO_CAR bravo_ped[3] bravo_heli -1.1 -0.3 0.2 FACING_LEFT 50.0 WEAPONTYPE_AK47 ENDIF temp_int = 0 WHILE temp_int < 4 IF NOT IS_CHAR_DEAD bravo_ped[temp_int] SET_CHAR_SHOOT_RATE bravo_ped[temp_int] 30 SET_CHAR_ACCURACY bravo_ped[temp_int] 27 IF temp_int = 0 OR temp_int = 2 SET_CHAR_MAX_HEALTH bravo_ped[temp_int] 125 SET_CHAR_HEALTH bravo_ped[temp_int] 125 ELSE SET_CHAR_HEALTH bravo_ped[temp_int] 100 ENDIF SET_CHAR_ONLY_DAMAGED_BY_PLAYER bravo_ped[temp_int] TRUE SET_CHAR_DECISION_MAKER bravo_ped[temp_int] empty_dm //SET_CHAR_RELATIONSHIP bravo_ped[temp_int] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 //SET_CHAR_RELATIONSHIP bravo_ped[temp_int] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 bravo_ped_flag[temp_int] = 0 ENDIF temp_int++ ENDWHILE ENDIF // add blips IF NOT IS_CAR_DEAD bravo_heli IF DOES_BLIP_EXIST bravo_heli_blip REMOVE_BLIP bravo_heli_blip ENDIF ADD_BLIP_FOR_CAR bravo_heli bravo_heli_blip ENDIF bravo_heli_ai = CHASE_PHELI bravo_heli_goals = 0 total_created_helis++ RETURN delete_bravo_heli: IF DOES_CHAR_EXIST bravo_pilot DELETE_CHAR bravo_pilot ENDIF temp_int = 0 WHILE temp_int < 4 IF DOES_CHAR_EXIST bravo_ped[temp_int] DELETE_CHAR bravo_ped[temp_int] ENDIF temp_int++ ENDWHILE IF DOES_VEHICLE_EXIST bravo_heli DELETE_CAR bravo_heli ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED MAVERICK MARK_MODEL_AS_NO_LONGER_NEEDED WMOMIB MARK_MODEL_AS_NO_LONGER_NEEDED BMYMIB MARK_MODEL_AS_NO_LONGER_NEEDED AK47 RETURN process_bravo_heli_ai: // if heli is still alive after four minutes destroy it. IF TIMERB > 240000 IF NOT IS_CAR_DEAD bravo_heli EXPLODE_CAR bravo_heli EXPLODE_CAR bravo_heli TIMERB = 0 ENDIF ENDIF // bravo heli //IF DOES_VEHICLE_EXIST bravo_heli IF NOT IS_CAR_DEAD bravo_heli // FLAG 0 - CHASE PHELI AND AVOID ALPHA HELI -------------------------- IF bravo_heli_ai = CHASE_PHELI IF bravo_heli_goals = 0 IF NOT IS_CAR_DEAD pheli HELI_FOLLOW_ENTITY bravo_heli -1 pheli 20.0 //ACTIVATE_HELI_SPEED_CHEAT bravo_heli 1 //WRITE_DEBUG BRAVO_HELI_TOLD_TO_CHASE_PHELI bravo_heli_goals++ bravo_heli_timer = 0 ENDIF ENDIF IF bravo_heli_goals = 1 IF bravo_heli_timer < 15000 // catch up with player heli IF NOT IS_CAR_DEAD pheli //GET_CAR_COORDINATES pheli x y z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pheli -10.0 -10.0 0.0 x y z IF NOT LOCATE_CAR_3D bravo_heli x y z 50.0 50.0 50.0 FALSE GET_CAR_COORDINATES bravo_heli x2 y2 z2 vec_x = x - x2 vec_y = y - y2 vec_z = z - z2 GET_DISTANCE_BETWEEN_COORDS_3D x y z x2 y2 z2 distance IF distance > 0.01 vec_x /= distance vec_y /= distance vec_z /= distance vec_x *= 0.01 vec_y *= 0.01 vec_z *= 0.01 APPLY_FORCE_TO_CAR bravo_heli vec_x vec_y vec_z 0.0 0.0 0.0 ENDIF // ELSE // IF LOCATE_CAR_3D bravo_heli x y z 25.0 25.0 25.0 FALSE // heli_to_move = bravo_heli // heli_to_avoid = pheli // GOSUB heli_aviod_heli // ENDIF ENDIF ENDIF ELSE HELI_FOLLOW_ENTITY bravo_heli scplayer -1 20.0 bravo_heli_goals++ bravo_heli_timer = 0 ENDIF ENDIF IF bravo_heli_goals = 2 IF bravo_heli_timer > 35000 bravo_heli_goals = 0 bravo_heli_timer = 0 ENDIF ENDIF ENDIF // heli fucks off -------------------------------------------------------------------------------- IF bravo_heli_ai = HELI_FUCKS_OFF FREEZE_CAR_POSITION bravo_heli FALSE GET_CAR_HEALTH bravo_heli temp_int IF temp_int <= 300 MARK_CHAR_AS_NO_LONGER_NEEDED bravo_pilot IF NOT IS_CHAR_DEAD bravo_pilot SET_CHAR_DECISION_MAKER bravo_pilot empty_dm ENDIF MAKE_HELI_COME_CRASHING_DOWN bravo_heli MARK_CAR_AS_NO_LONGER_NEEDED bravo_heli //WRITE_DEBUG BRAVO_HELI_FUCKS_OFF1 bravo_heli = 0 bravo_pilot = 0 //WRITE_DEBUG BRAVO_HELI_COME_CRASHING_DOWN ELSE MARK_CHAR_AS_NO_LONGER_NEEDED bravo_pilot IF NOT IS_CHAR_DEAD bravo_pilot SET_CHAR_DECISION_MAKER bravo_pilot empty_dm ENDIF HELI_GOTO_COORDS bravo_heli 204.0 2816.0 186.0 50.0 186.0 MARK_CAR_AS_NO_LONGER_NEEDED bravo_heli //WRITE_DEBUG BRAVO_HELI_FUCKS_OFF2 bravo_heli = 0 bravo_pilot = 0 ENDIF IF DOES_BLIP_EXIST bravo_heli_blip REMOVE_BLIP bravo_heli_blip ENDIF ENDIF ENDIF //ENDIF // on board peds --------------------------------------------------------------------------------------- temp_int = m_frame_num IF temp_int < 4 IF DOES_CHAR_EXIST bravo_ped[temp_int] IF NOT IS_CHAR_DEAD bravo_ped[temp_int] IF bravo_ped_flag[temp_int] = 0 IF NOT IS_CHAR_DEAD pheli_pilot CLEAR_CHAR_TASKS bravo_ped[temp_int] OPEN_SEQUENCE_TASK temp_seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 pheli_pilot TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bravo_ped[temp_int] temp_seq CLEAR_SEQUENCE_TASK temp_seq bravo_ped_flag[temp_int]++ ENDIF ENDIF IF bravo_ped_flag[temp_int] = 1 IF temp_int = 1 OR temp_int = 3 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D bravo_ped[temp_int] scplayer 60.0 60.0 60.0 FALSE CLEAR_CHAR_TASKS bravo_ped[temp_int] OPEN_SEQUENCE_TASK temp_seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bravo_ped[temp_int] temp_seq CLEAR_SEQUENCE_TASK temp_seq SET_CHAR_SHOOT_RATE bravo_ped[temp_int] 100 bravo_ped_flag[temp_int]++ ENDIF ENDIF ENDIF IF bravo_ped_flag[temp_int] = 2 IF temp_int = 1 OR temp_int = 3 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D bravo_ped[temp_int] scplayer 80.0 80.0 80.0 FALSE IF NOT IS_CHAR_DEAD pheli_pilot CLEAR_CHAR_TASKS bravo_ped[temp_int] OPEN_SEQUENCE_TASK temp_seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 pheli_pilot TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK bravo_ped[temp_int] temp_seq CLEAR_SEQUENCE_TASK temp_seq SET_CHAR_SHOOT_RATE bravo_ped[temp_int] 30 bravo_ped_flag[temp_int] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // temp_int++ // ENDWHILE ENDIF // if all the peds on the heli are dead then the heli should fuck off ----------------------------- IF m_frame_num = 4 //IF DOES_VEHICLE_EXIST bravo_heli IF NOT IS_CAR_DEAD bravo_heli IF IS_CHAR_DEAD bravo_ped[0] IF IS_CHAR_DEAD bravo_ped[1] IF IS_CHAR_DEAD bravo_ped[2] IF IS_CHAR_DEAD bravo_ped[3] bravo_heli_ai = HELI_FUCKS_OFF //WRITE_DEBUG BRAVO_TOLD_TO_FUCK_OFF3 ENDIF ENDIF ENDIF ENDIF ENDIF //ENDIF ENDIF // // avoid alpha heli --------------------------------------------- // IF NOT IS_CAR_DEAD bravo_heli // IF NOT IS_CAR_DEAD alpha_heli // GET_CAR_COORDINATES alpha_heli x y z // ENDIF // IF LOCATE_CAR_3D bravo_heli x y z 25.0 25.0 25.0 FALSE // heli_to_move = bravo_heli // heli_to_avoid = alpha_heli // GOSUB heli_aviod_heli // ENDIF // ENDIF // // limit heli speed --------------------------------------------- // IF NOT IS_CAR_DEAD bravo_heli // GET_CAR_SPEED bravo_heli temp_float // IF temp_float > 20.0 // GET_CAR_SPEED_VECTOR bravo_heli vec_x vec_y vec_z // vec_x *= -0.0001 // vec_y *= -0.0001 // vec_z *= -0.0001 // APPLY_FORCE_TO_CAR bravo_heli vec_x vec_y vec_z 0.0 0.0 0.0 // ENDIF // ENDIF // make heli come crashing down ---------------------------------- //IF DOES_VEHICLE_EXIST bravo_heli IF NOT IS_CAR_DEAD bravo_heli GET_CAR_HEALTH bravo_heli temp_int IF temp_int <= 300 IF NOT bravo_heli_ai = HELI_FUCKS_OFF bravo_heli_ai = HELI_FUCKS_OFF //WRITE_DEBUG BRAVO_TOLD_TO_FUCK_OFF4 VEHICLE_CAN_BE_TARGETTED_BY_HS_MISSILE bravo_heli FALSE ENDIF ENDIF ENDIF //ENDIF // detach peds if they die --------------------------------------- temp_int = m_frame_num IF temp_int < 4 IF DOES_CHAR_EXIST bravo_ped[temp_int] IF IS_CHAR_DEAD bravo_ped[temp_int] DETACH_CHAR_FROM_CAR bravo_ped[temp_int] bravo_ped_flag[temp_int] = 0 ped_to_add = bravo_ped[temp_int] GOSUB d3_add_to_cleanup_peds bravo_ped[temp_int] = 0 ENDIF ENDIF ENDIF //IF DOES_VEHICLE_EXIST bravo_heli // IF IS_CAR_DEAD bravo_heli // MARK_CAR_AS_NO_LONGER_NEEDED bravo_heli // MARK_CHAR_AS_NO_LONGER_NEEDED bravo_pilot // bravo_pilot = 0 // bravo_heli = 0 // ENDIF //ENDIF IF IS_CAR_DEAD bravo_heli AND NOT bravo_heli = 0 MARK_CHAR_AS_NO_LONGER_NEEDED bravo_pilot IF NOT IS_CHAR_DEAD bravo_pilot SET_CHAR_DECISION_MAKER bravo_pilot empty_dm ENDIF MARK_CAR_AS_NO_LONGER_NEEDED bravo_heli bravo_heli = 0 bravo_pilot = 0 temp_int = 0 WHILE temp_int < 4 IF DOES_CHAR_EXIST bravo_ped[temp_int] ped_to_add = bravo_ped[temp_int] GOSUB d3_add_to_cleanup_peds bravo_ped[temp_int] = 0 ENDIF temp_int++ ENDWHILE IF DOES_BLIP_EXIST bravo_heli_blip REMOVE_BLIP bravo_heli_blip ENDIF ENDIF RETURN // ======================================== // D3_ADD_TO_CLEANUP_PEDS // ======================================== // input LVAR_INT ped_to_add // workings LVAR_INT cleanup_ped_counter LVAR_INT cleanup_ped[20] d3_add_to_cleanup_peds: cleanup_ped_counter = 0 // fake creates IF cleanup_ped_counter = -1 CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 cleanup_ped[0] ENDIF WHILE cleanup_ped_counter < 20 IF NOT DOES_CHAR_EXIST cleanup_ped[cleanup_ped_counter] cleanup_ped[cleanup_ped_counter] = ped_to_add cleanup_ped_counter = 20 ELSE cleanup_ped_counter++ ENDIF ENDWHILE RETURN // ======================================== // PROCESS_CLEANUP_PEDS // ======================================== d3_PROCESS_CLEANUP_PEDS: cleanup_ped_counter = 0 WHILE cleanup_ped_counter < 20 IF DOES_CHAR_EXIST cleanup_ped[cleanup_ped_counter] IF IS_CHAR_DEAD cleanup_ped[cleanup_ped_counter] REMOVE_CHAR_ELEGANTLY cleanup_ped[cleanup_ped_counter] //WRITE_DEBUG REMOVE_CHAR_ELEGANTLY1 ENDIF ENDIF cleanup_ped_counter++ ENDWHILE cleanup_ped_counter = 0 WHILE cleanup_ped_counter < 4 IF DOES_CHAR_EXIST alpha_ped[cleanup_ped_counter] IF IS_CHAR_DEAD alpha_ped[cleanup_ped_counter] REMOVE_CHAR_ELEGANTLY alpha_ped[cleanup_ped_counter] //WRITE_DEBUG REMOVE_CHAR_ELEGANTLY2 alpha_ped[cleanup_ped_counter] = 0 ENDIF ENDIF IF DOES_CHAR_EXIST bravo_ped[cleanup_ped_counter] IF IS_CHAR_DEAD bravo_ped[cleanup_ped_counter] REMOVE_CHAR_ELEGANTLY bravo_ped[cleanup_ped_counter] //WRITE_DEBUG REMOVE_CHAR_ELEGANTLY3 bravo_ped[cleanup_ped_counter] = 0 ENDIF ENDIF cleanup_ped_counter++ ENDWHILE RETURN // ======================================== // HELI_AVOID_HELI // ======================================== // input parameters LVAR_INT heli_to_move heli_to_avoid heli_aviod_heli: IF NOT IS_CAR_DEAD heli_to_avoid GET_CAR_COORDINATES heli_to_avoid x y z ENDIF IF NOT IS_CAR_DEAD heli_to_move GET_CAR_COORDINATES heli_to_move x2 y2 z2 vec_x = x - x2 vec_y = y - y2 vec_z = z - z2 //GET_DISTANCE_BETWEEN_COORDS_3D x y z x2 y2 z2 distance // IF distance > 0.01 // vec_x /= distance // vec_y /= distance // vec_z /= distance vec_x *= -0.0001 vec_y *= -0.0001 vec_z *= -0.0001 APPLY_FORCE_TO_CAR heli_to_move vec_x vec_y vec_z 0.0 0.0 0.0 // ENDIF ENDIF RETURN // ================================================================= // GOSUB: Next_Stage (sets flags and timers for next mission stage) // ================================================================= DES3_next_stage: m_stage++ m_goals = 0 dialogue_flag = 0 help_flag = 0 dialogue_timer = 0 help_timer = 0 TIMERA = 0 TIMERB = 0 RETURN // ************************************************************************************************************* // END OF LEVEL GOSUBS - fail, pass, cleanup // ************************************************************************************************************* // FAIL mission_failed_DES3: //desert3_mission_attempts++ PRINT_BIG M_FAIL 5000 1 RETURN // PASS mission_passed_DES3: PRINT_WITH_NUMBER_BIG ( M_PASS ) 1000 5000 1 //"Mission Passed!" ADD_SCORE player1 1000 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 REGISTER_MISSION_PASSED DESERT3 PLAYER_MADE_PROGRESS 1 flag_desert_mission_counter++ SET_INT_STAT PASSED_DESERT3 1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN // CLEANUP mission_cleanup_DES3: DISPLAY_RADAR 3 // PATHING ON IF NOT IS_GARAGE_CLOSED Ghostdr CLOSE_GARAGE Ghostdr ENDIF START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 MARK_MODEL_AS_NO_LONGER_NEEDED BANDITO MARK_MODEL_AS_NO_LONGER_NEEDED QUAD MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ MARK_MODEL_AS_NO_LONGER_NEEDED TEARGAS MARK_MODEL_AS_NO_LONGER_NEEDED HEATSEEK MARK_MODEL_AS_NO_LONGER_NEEDED WMOMIB MARK_MODEL_AS_NO_LONGER_NEEDED BMYMIB MARK_MODEL_AS_NO_LONGER_NEEDED WMYPLT MARK_MODEL_AS_NO_LONGER_NEEDED AK47 MARK_MODEL_AS_NO_LONGER_NEEDED MAVERICK MARK_MODEL_AS_NO_LONGER_NEEDED KMB_HOLDALL MARK_MODEL_AS_NO_LONGER_NEEDED LEVIATHN MARK_MODEL_AS_NO_LONGER_NEEDED JOURNEY MARK_MODEL_AS_NO_LONGER_NEEDED KMB_PARACHUTE MARK_MODEL_AS_NO_LONGER_NEEDED WMOPREA MARK_MODEL_AS_NO_LONGER_NEEDED SWFOPRO REMOVE_BLIP location_blip REMOVE_BLIP alpha_heli_blip REMOVE_BLIP bravo_heli_blip REMOVE_BLIP pheli_blip REMOVE_BLIP contraband_blip REMOVE_BLIP weapon_blip REMOVE_BLIP escape_car_blip REMOVE_ANIMATION BOMBER RELEASE_WEATHER CLEAR_ONSCREEN_COUNTER pheli_health CLEAR_ONSCREEN_COUNTER des3_heat REMOVE_PICKUP m_pickup REMOVE_PICKUP m_pickup_health REMOVE_PICKUP m_pickup_armour IF IS_PLAYER_PLAYING player1 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE ENDIF // remove decision makers REMOVE_DECISION_MAKER empty_dm REMOVE_DECISION_MAKER tough_dm KILL_FX_SYSTEM m_fx SET_PLAYER_CONTROL player1 TRUE // === RESTORE ENVIRONMENT SETTINGS === SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_WANTED_MULTIPLIER 1.0 //SET_MAX_WANTED_LEVEL 6 GET_GAME_TIMER timer_mobile_start SWITCH_POLICE_HELIS TRUE flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* desert 4 ****************************************** // ********************************** Learning To Fly ************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME desert4 // Mission start stuff GOSUB mission_start_desert4 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_desert4_failed ENDIF GOSUB mission_cleanup_desert4 MISSION_END { // Variables for mission // **************************************** Mission Start ********************************** mission_start_desert4: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 WAIT 0 LOAD_MISSION_TEXT DSERT4 // ****************************************START OF CUTSCENE******************************** // fades the screen in FORCE_WEATHER WEATHER_EXTRASUNNY_DESERT CLEAR_AREA -688.1717 937.9888 12.6328 10.0 TRUE LOAD_CUTSCENE desert4 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RELEASE_WEATHER CLEAR_CUTSCENE // ****************************************END OF CUTSCENE********************************** SET_CHAR_COORDINATES scplayer -696.0359 948.1198 11.2760 SET_CHAR_HEADING scplayer 33.1992 RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON LOAD_SCENE -696.0359 948.1198 11.2760 DO_FADE 1000 FADE_IN WAIT 1000 PRINT_NOW ( BUY_AIR ) 10000 1 //go buy the airstrip GOTO mission_desert4_passed // **************************************** Mission desert4 failed *********************** mission_desert4_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // **************************************** mission desert4 passed ************************ mission_desert4_passed: flag_desert_mission_counter ++ //Used to terminate this mission loop in the main script. These varibles will be set up in the main.sc REGISTER_MISSION_PASSED ( DESERT4 ) //Used in the stats //PRINT_WITH_NUMBER_BIG ( M_PASS ) 100 5000 1 //"Mission Passed!" //ADD_SCORE player1 300 //CLEAR_WANTED_LEVEL player1 REMOVE_BLIP desert_contact_blip SWITCH_CAR_GENERATOR area51_gen[0] 101 SWITCH_CAR_GENERATOR area51_gen[1] 101 START_NEW_SCRIPT airstrip_buy_loop REMOVE_BLIP airstrip_contact_blip ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[2] propertyY[2] propertyZ[2] RADAR_SPRITE_PROPERTY_GREEN airstrip_contact_blip CHANGE_BLIP_DISPLAY airstrip_contact_blip BLIP_ONLY REMOVE_BLIP desert2_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT pilotx piloty pilotz desert2_blip_icon desert2_contact_blip CHANGE_BLIP_DISPLAY desert2_contact_blip BLIP_ONLY SET_INT_STAT PASSED_DESERT4 1 SET_MAX_WANTED_LEVEL 6 PLAYER_MADE_PROGRESS 1 RETURN // ********************************** mission cleanup *********************************** mission_cleanup_desert4: flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start //Used to reset the mobile phone timer so it doesn't ring immediately after the mission MISSION_HAS_FINISHED //UNLOAD_SPECIAL_CHARACTER 1 RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : Desert6 // AUTHOR : Keith // DESCRIPTION : Fly an aircraft under the radar to a dropoff point // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** { // ************************************************************************************************************* // GENERAL INITIALISATION - Every level requires this // ************************************************************************************************************* SCRIPT_NAME Desert6 // Global Variables VAR_INT g_Desert6_visibilityKM VAR_INT g_Desert6_failureKM VAR_INT g_Desert6_timerKM // Mission Start stuff GOSUB Desert6_Mission_Start IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB Desert6_Mission_Failed ENDIF GOSUB Desert6_mission_cleanup MISSION_END // Global Setup Desert6_Mission_Start: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 // general variables that are in every mission - DON'T DECLARE MISSION SPECIFIC VARIABLES HERE LVAR_INT m_stage LVAR_INT m_goals LVAR_INT m_passed LVAR_INT m_failed LVAR_INT m_quit LVAR_INT m_pause LVAR_INT m_status LVAR_INT m_frame_num LVAR_INT m_this_frame_time LVAR_INT m_last_frame_time LVAR_INT m_time_diff LVAR_INT m_fail_reason // commonly used timers LVAR_INT m_mission_timer // Debug variables LVAR_INT display_debug VAR_INT Desert6_view_debug[8] // GLOBAL (for output) // useful int variables LVAR_INT nLoop LVAR_INT nLoop2 LVAR_INT nTempInt LVAR_INT nTempInt2 LVAR_INT nTempPed LVAR_INT nTempObject LVAR_INT nTempAmmo LVAR_INT nTempTimer LVAR_INT nSeqTask // useful float variables LVAR_FLOAT xposTemp yposTemp zposTemp LVAR_FLOAT xposTemp2 yposTemp2 zposTemp2 LVAR_FLOAT headTemp LVAR_FLOAT xloTemp yloTemp zloTemp LVAR_FLOAT xhiTemp yhiTemp zhiTemp LVAR_FLOAT fTempFloat LVAR_FLOAT fTempFloat2 LVAR_FLOAT fTempDistance // useful flag variables LVAR_INT flagTempFlag LVAR_INT flagTempFlag2 // cutscene variables LVAR_INT flagCutscenePlaying LVAR_INT flagCleaningUpSkippedCutscene LVAR_INT flagSkipCutscene // Clear cutscene variables flagCutscenePlaying = 0 flagCleaningUpSkippedCutscene = 0 flagSkipCutscene = 0 m_stage = 0 m_goals = 0 m_passed = 0 m_failed = 0 m_quit = 0 m_pause = 0 m_status = 0 m_fail_reason = 0 m_mission_timer = 0 display_debug = 0 TIMERA = 0 TIMERB = 0 // Consts // ...reasons for failure CONST_INT DESERT6_FAILED_UNKNOWN 0 CONST_INT DESERT6_FAILED_AIRCRAFT_DEAD 1 CONST_INT DESERT6_FAILED_NOT_IN_AIRCRAFT 2 CONST_INT DESERT6_FAILED_OUT_OF_TIME 3 // Heights CONST_FLOAT DESERT6_RADAR_VISIBLE_HEIGHT_OVER_m 61.0 CONST_FLOAT DESERT6_RADAR_VISIBLE_HEIGHT_UNDER_m 60.0 // Radar Visibility Times CONST_INT DESERT6_RADAR_VISIBLE_TIME_INCREASE_msec 80 CONST_INT DESERT6_RADAR_VISIBLE_TIME_DECREASE_msec 40 // First 'above radar' message CONST_INT DESERT6_RADAR_VISIBLE_FIRST_DISPLAY_pc 40 // Failure Time CONST_INT DESERT6_FAILURE_TIME_OUT_OF_AIRCRAFT_sec 30 // Mission Time CONST_INT DESERT6_MISSION_TIME_min 10 // Enemies CONST_INT DESERT6_MAX_ENEMIES 2 CONST_INT DESERT6_TIME_TILL_FIRST_ENEMY_sec 3 CONST_INT DESERT6_TIME_TILL_NEW_ENEMY_sec 30 CONST_INT DESERT6_MIN_ATTACK_TIME_sec 10 // Destination CONST_FLOAT DESERT6_CHECKPOINT_SIZE 25.0 // Message Display CONST_FLOAT DESERT6_MESSAGE_DISPLAY_DISTANCE_m 500.0 // Drop Objects CONST_INT DESERT6_MAX_DROP_OBJECTS 4 // Enemy Aircraft Stuck CONST_INT DESERT6_ENEMY_AIRCRAFT_STUCK_TIME_msec 5000 // ...General CONST_INT DESERT6_PERSIST -2 // Speech CONST_INT DESERT6_MAX_CONVERSATION_LINES 11 CONST_INT DESERT6_DELAY_BEFORE_NEXT_CONVERSATION_msec 120 // ...audio slot allocations CONST_INT DESERT6_TOTAL_AUDIO_SLOTS 2 // 3 available: generally 1 and 2 for speech; 3 for SFX CONST_INT DESERT6_AUDIO_SLOT_ARRAY_SIZE 3 // DESERT6_TOTAL_AUDIO_SLOTS+1 (slots numbered 1,2,3: so array pos0 wasted) CONST_INT DESERT6_FIRST_SPEECH_SLOT 1 CONST_INT DESERT6_LAST_SPEECH_SLOT 2 CONST_INT DESERT6_SFX_SLOT 3 // NOTE: Not using an engine similar to speech for this because only one SFX // ...audio slot status CONST_INT DESERT6_AUDIO_SLOT_FREE 0 CONST_INT DESERT6_AUDIO_SLOT_LOADING 1 CONST_INT DESERT6_AUDIO_SLOT_LOADED 2 CONST_INT DESERT6_AUDIO_SLOT_PLAYING 3 // ...conversation status CONST_INT DESERT6_CONVERSATION_STATUS_NONE 0 CONST_INT DESERT6_CONVERSATION_STATUS_PREPARED 1 CONST_INT DESERT6_CONVERSATION_STATUS_PLAYING 2 CONST_INT DESERT6_CONVERSATION_STATUS_INTERRUPTED 3 CONST_INT DESERT6_CONVERSATION_STATUS_FINISHED 4 // ...speech conversations CONST_INT DESERT6_CONVERSATION_NONE 0 CONST_INT DESERT6_CONVERSATION_INSTRUCTIONS 1 CONST_INT DESERT6_CONVERSATION_TOO_HIGH 2 CONST_INT DESERT6_CONVERSATION_SPOTTED 3 CONST_INT DESERT6_CONVERSATION_SUCCESS 4 // Audio variables LVAR_INT nSpeechCurrentSlot LVAR_INT nConversationStatus LVAR_INT nCurrentConversationID LVAR_INT nRequiredConversationID LVAR_INT nCurrentConversationLine LVAR_INT nCurrentMaxConversationLines LVAR_INT nNextPreloadConversationLine LVAR_INT bitsConversationsPlayed LVAR_INT timerDelayBeforeNextConversation LVAR_INT nAudioSlotStatus[DESERT6_AUDIO_SLOT_ARRAY_SIZE] LVAR_INT nConversationSequenceSpeechID[DESERT6_MAX_CONVERSATION_LINES] LVAR_TEXT_LABEL tlConversationSequenceSubtitle[DESERT6_MAX_CONVERSATION_LINES] // ...clear audio variables nSpeechCurrentSlot = DESERT6_FIRST_SPEECH_SLOT nConversationStatus = DESERT6_CONVERSATION_STATUS_NONE nCurrentConversationID = DESERT6_CONVERSATION_NONE nRequiredConversationID = DESERT6_CONVERSATION_NONE nCurrentConversationLine = -1 nCurrentMaxConversationLines = 0 nNextPreloadConversationLine = 0 timerDelayBeforeNextConversation = 0 bitsConversationsPlayed = DESERT6_CONVERSATION_NONE REPEAT DESERT6_AUDIO_SLOT_ARRAY_SIZE nLoop nAudioSlotStatus[nLoop] = DESERT6_AUDIO_SLOT_FREE ENDREPEAT // Mission Specific Variables // Integer Variables // ...chars (char) LVAR_INT charEnemy[DESERT6_MAX_ENEMIES] // ...cars (car) LVAR_INT carPlayerAircraft LVAR_INT carEnemyAircraft[DESERT6_MAX_ENEMIES] // ...objects (object) LVAR_INT objectDrop[DESERT6_MAX_DROP_OBJECTS] // ...blips (blip) LVAR_INT blipDestination LVAR_INT blipPlayerAircraft LVAR_INT blipEnemy[DESERT6_MAX_ENEMIES] // ...pickups (pickup) // ...fx systems (fx) // ...decision makers (dm) LVAR_INT dmEmpty // ...AI Status (ai) // ...general status (status) // ...Timers (timer) LVAR_INT timerText LVAR_INT timerVisibility LVAR_INT timerFailure LVAR_INT timerNewEnemy LVAR_INT timerMinAttack LVAR_INT timerAboveRadarLimit LVAR_INT timerBelowRadarLimit LVAR_INT timerCoronaMessage LVAR_INT timerLandMessage LVAR_INT timerDropObject[DESERT6_MAX_DROP_OBJECTS] LVAR_INT timerEnemyAircraftStuck[DESERT6_MAX_ENEMIES] // ...Counters (count) // ...Checkpoints (checkpoint) LVAR_INT checkpointDestination // ...mission specific (n) // Text Label Variables // Float Variables // ...area variables (xlo, ylo, zlo, xhi, yhi, zhi) LVAR_FLOAT xloLand yloLand zloLand xhiLand yhiLand zhiLand // ...position variables (xpos, ypos, zpos) LVAR_FLOAT xposDestination yposDestination zposDestination // ...mission specific (f) LVAR_FLOAT fInitialHeight // Boolean Variables // ...flags (flag) LVAR_INT flagRadarVisible LVAR_INT flagFailureConditions LVAR_INT flagAttackPlayer LVAR_INT flagSendAnEnemy LVAR_INT flagAboveRadarMessageDisplayed LVAR_INT flagCoronaMessageDisplayed LVAR_INT flagCoronaMessageBeingDisplayed LVAR_INT flagLandMessageDisplayed LVAR_INT flagLandMessageBeingDisplayed LVAR_INT flagAllDropObjectsDropped LVAR_INT flagDropObjectDropped[DESERT6_MAX_DROP_OBJECTS] LVAR_INT flagEnemyAircraftStuck[DESERT6_MAX_ENEMIES] LVAR_INT flagEnemyAircraftExists LVAR_INT flagArea51MessageDisplayed LVAR_INT flagPlayedInstructionsSpeech LVAR_INT flagFirstEnemyCreated LVAR_INT flagDisplayedVisibilityBarHelp // ...exists flags (exists) LVAR_INT existsEnemy[DESERT6_MAX_ENEMIES] // Clear Exists Flags REPEAT DESERT6_MAX_ENEMIES nLoop existsEnemy[nLoop] = FALSE ENDREPEAT // ...loaded flags // Clear Loaded Flags // Clear timers // Clear important flags flagAboveRadarMessageDisplayed = FALSE flagCoronaMessageDisplayed = FALSE flagCoronaMessageBeingDisplayed = FALSE flagLandMessageDisplayed = FALSE flagLandMessageBeingDisplayed = FALSE flagEnemyAircraftExists = FALSE flagArea51MessageDisplayed = FALSE flagPlayedInstructionsSpeech = FALSE flagFirstEnemyCreated = FALSE flagDisplayedVisibilityBarHelp = FALSE // ***** FAKE ENTITY CREATION TO FOOL THE COMPILER ***** // The compiler just needs to verify there is a CREATE_ before usage IF m_stage = -99 WRITE_DEBUG SHOULD_NEVER_BE_IN_FAKE_ENTITY_CREATION // Cars CREATE_CAR RUSTLER 0.0 0.0 0.0 carPlayerAircraft REPEAT DESERT6_MAX_ENEMIES nLoop CREATE_CAR HYDRA 0.0 0.0 0.0 carEnemyAircraft[nLoop] ENDREPEAT // Peds REPEAT DESERT6_MAX_ENEMIES nLoop CREATE_CHAR PEDTYPE_CIVMALE HMORI 0.0 0.0 0.0 charEnemy[nLoop] ENDREPEAT // Objects REPEAT DESERT6_MAX_DROP_OBJECTS nLoop CREATE_OBJECT AMMO_CAPSULE 0.0 0.0 0.0 objectDrop[nLoop] ENDREPEAT // Blips ADD_BLIP_FOR_CAR carPlayerAircraft blipPlayerAircraft ADD_BLIP_FOR_COORD 0.0 0.0 0.0 blipDestination REPEAT DESERT6_MAX_ENEMIES nLoop ADD_BLIP_FOR_CAR carEnemyAircraft[nLoop] blipEnemy[nLoop] ENDREPEAT ENDIF // Mission Text LOAD_MISSION_TEXT DSERT6 // Intro Cutscene GOSUB Desert6_Intro_Cutscene // Load Char Mission Decision Makers // NOTE: Do it before the Initialisation because they make the game pause. Done here, the pause is hidden by a fade. LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY dmEmpty // Mission Initialisation GOSUB Desert6_Initialisation // ************************************************************************************************************* // MISSION LOOP // ************************************************************************************************************* mission_loop_Desert6: WAIT 0 // Special shortcut for Craig F to test all missions in order IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S m_passed = 1 GOTO end_of_main_loop_Desert6 ENDIF // Debug Stuff GOSUB Desert6_Debug_Tools GOSUB Desert6_Debug_Shortcuts IF m_quit = 1 OR m_pause = 1 GOTO end_of_main_loop_Desert6 ENDIF // Housekeeping GOSUB Desert6_Frame_Counter GOSUB Desert6_Additional_Timers // Special conditions IF IS_CHAR_DEAD scplayer m_failed = 1 GOTO end_of_main_loop_Desert6 ENDIF // Mission Stage processing // *** INITIALISATION NOW TAKES PLACE BEFORE THE MAIN LOOP *** IF m_stage = 0 WRITE_DEBUG STAGE_SHOULD_NEVER_BE_0_IN_MAIN_LOOP ENDIF // ...Stage 1: Get into the helicopter IF m_stage = 1 GOSUB Desert6_Stage_Enter_Aircraft ENDIF // ...Stage 2: Fly to destination IF m_stage = 2 GOSUB Desert6_Stage_Fly_To_Destination ENDIF // ...Stage 3: Return to landing strip IF m_stage = 3 GOSUB Desert6_Stage_Return_To_Landing_Strip ENDIF // ...final stage IF m_stage = 4 m_passed = 1 ENDIF // Continuous update methods and event checking // -------------------------------------------- GOSUB Desert6_Update_Speech // End of Main Loop // ***** DON'T CHANGE ***** end_of_main_loop_Desert6: IF m_quit = 0 IF m_failed = 0 IF m_passed = 0 // Restart main loop GOTO mission_loop_Desert6 ELSE // Mission passed GOSUB mission_passed_Desert6 RETURN ENDIF ELSE // Mission failed GOSUB Desert6_Mission_Failed RETURN ENDIF ELSE RETURN // quits out - goes to cleanup ENDIF WRITE_DEBUG SHOULD_NEVER_BE_HERE_IN_END_OF_MAIN_LOOP RETURN // Should never reach here // ************************************************************************************************************* // MISSION STAGE GOSUBS // ************************************************************************************************************* // **************************************** // STAGE 1: Enter Aircraft Desert6_Stage_Enter_Aircraft: // Initialisation // -------------- IF m_goals = 0 // Instructions: Get in the aircraft PRINT_NOW DES6_00 7000 1 // Create the drop objects under the plane GOSUB Desert6_Create_Drop_Objects // Prepare the instructional speech nRequiredConversationID = DESERT6_CONVERSATION_INSTRUCTIONS GOSUB Desert6_Conversation_Command_Prepare // Switch off the radio for the next vehicle (which should be the plane) SET_RADIO_CHANNEL RS_OFF m_goals++ ENDIF // Failure Conditions // ------------------ // ...is plane dead? IF IS_CAR_DEAD carPlayerAircraft m_failed = TRUE m_fail_reason = DESERT6_FAILED_AIRCRAFT_DEAD RETURN ENDIF // Subgoals // -------- // Has player entered aircraft? IF m_goals = 1 IF IS_CHAR_IN_CAR scplayer carPlayerAircraft REMOVE_BLIP blipPlayerAircraft m_goals = 99 ENDIF ENDIF // Continuous updates // ------------------ // Exit // ---- IF m_goals = 99 GOSUB Desert6_next_stage ENDIF RETURN // **************************************** // STAGE 2: Fly to Destination Desert6_Stage_Fly_To_Destination: // Initialisation // -------------- IF m_goals = 0 // Instructions: Fly the aircraft to the destination // PRINT_NOW DES6_01 5000 1 // GOSUB Desert6_Conversation_Command_Play // timerText = m_mission_timer + 5000 flagPlayedInstructionsSpeech = FALSE timerText = m_mission_timer + 2000 // Setup Destination and allowable flight height xposDestination = -2135.5896 yposDestination = -2488.4541 zposDestination = 55.8950 // Switch off the roads the taxi will travel on // SWITCH_ROADS_OFF -2319.8967 -2719.9604 28.4250 -2197.9482 -2482.0303 44.5080 // Add blip for Destination ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination // Create checkpoint at Destination fTempFloat = yposDestination + 1.0 CREATE_CHECKPOINT CHECKPOINT_TORUS xposDestination yposDestination zposDestination xposDestination fTempFloat zposDestination DESERT6_CHECKPOINT_SIZE checkpointDestination // Visibility g_Desert6_visibilityKM = 0 timerVisibility = 0 flagRadarVisible = FALSE flagAttackPlayer = FALSE flagSendAnEnemy = FALSE flagAllDropObjectsDropped = FALSE // Mission Time (convert to milliseconds) g_Desert6_timerKM = DESERT6_MISSION_TIME_min * 60000 DISPLAY_ONSCREEN_TIMER_WITH_STRING g_Desert6_timerKM TIMER_DOWN DES6_51 // Store the player's height in the plane on ground GET_CHAR_HEIGHT_ABOVE_GROUND scplayer fInitialHeight // Enemy aircraft controls REPEAT DESERT6_MAX_ENEMIES nLoop flagEnemyAircraftStuck[nLoop] = FALSE timerEnemyAircraftStuck[nLoop] = 0 ENDREPEAT // Load the 'above radar level' warning beep LOAD_MISSION_AUDIO DESERT6_SFX_SLOT SOUND_RADAR_LEVEL_WARNING // Make sure the player doesn't get a 6* rating whenever he sets foot on the aircraft carrier SET_DISABLE_MILITARY_ZONES TRUE m_goals++ ENDIF // Failure Conditions // ------------------ IF IS_CAR_DEAD carPlayerAircraft // Delete the capsules attached to the plane REPEAT DESERT6_MAX_DROP_OBJECTS nLoop IF DOES_OBJECT_EXIST objectDrop[nLoop] DELETE_OBJECT objectDrop[nLoop] ENDIF ENDREPEAT m_failed = TRUE m_fail_reason = DESERT6_FAILED_AIRCRAFT_DEAD RETURN ENDIF // Player out of aircraft? GOSUB Desert6_Update_Failure_Conditions IF m_failed = TRUE RETURN ENDIF // Out of time IF g_Desert6_timerKM = 0 m_failed = TRUE m_fail_reason = DESERT6_FAILED_OUT_OF_TIME RETURN ENDIF // Subgoals // -------- // Display the 'radar visibility' text IF m_goals = 1 IF timerText < m_mission_timer // ...display 'stay low' message when the plane has just taken off GET_CHAR_HEIGHT_ABOVE_GROUND scplayer fTempFloat fTempFloat = fTempFloat - fInitialHeight IF fTempFloat > 2.0 // Instructions: Stay close to the ground // PRINT_NOW DES6_02 8000 1 DISPLAY_ONSCREEN_COUNTER_WITH_STRING g_Desert6_visibilityKM COUNTER_DISPLAY_BAR DES6_50 m_goals++ ENDIF ENDIF ENDIF // Has the player arrived at the destination IF m_goals = 2 xposTemp = xposDestination - DESERT6_CHECKPOINT_SIZE yposTemp = yposDestination - 2.0 zposTemp = zposDestination - DESERT6_CHECKPOINT_SIZE xposTemp2 = xposDestination + DESERT6_CHECKPOINT_SIZE yposTemp2 = yposDestination + 2.0 zposTemp2 = zposDestination + DESERT6_CHECKPOINT_SIZE IF IS_CHAR_IN_AREA_3D scplayer xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 FALSE AND IS_CHAR_IN_CAR scplayer carPlayerAircraft REMOVE_BLIP blipDestination DELETE_CHECKPOINT checkpointDestination GOSUB Desert6_Drop_Objects m_goals = 99 ENDIF ENDIF // Continuous updates // ------------------ // Radar Visibility GOSUB Desert6_Update_Radar_Visibility // Is the enemy dead? GOSUB Desert6_Enemy_Status // Time to send another attacker? IF flagAttackPlayer = TRUE IF timerNewEnemy < m_mission_timer flagSendAnEnemy = TRUE ENDIF ENDIF // Send another enemy to attack player?? IF flagSendAnEnemy = TRUE GOSUB Desert6_Enemy_Attack_Player // ...time till another enemy is generated nTempInt = DESERT6_TIME_TILL_NEW_ENEMY_sec * 1000 timerNewEnemy = m_mission_timer + nTempInt ENDIF // Should enemies be removed? GOSUB Desert6_Remove_Enemy // Should the Corona message be displayed? IF flagCoronaMessageDisplayed = FALSE GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposDestination yposDestination zposDestination fTempDistance IF fTempDistance < DESERT6_MESSAGE_DISPLAY_DISTANCE_m IF IS_POINT_ON_SCREEN xposDestination yposDestination zposDestination 5.0 // Info: Fly through corona PRINT_NOW DES6_09 7000 1 flagCoronaMessageDisplayed = TRUE flagCoronaMessageBeingDisplayed = TRUE timerCoronaMessage = m_mission_timer + 7000 ENDIF ENDIF ENDIF IF flagCoronaMessageBeingDisplayed = TRUE IF timerCoronaMessage < m_mission_timer flagCoronaMessageBeingDisplayed = FALSE ENDIF ENDIF // Prepare 'above radar' conversation? IF NOT IS_BIT_SET bitsConversationsPlayed DESERT6_CONVERSATION_TOO_HIGH IF IS_BIT_SET bitsConversationsPlayed DESERT6_CONVERSATION_INSTRUCTIONS AND nCurrentConversationID = DESERT6_CONVERSATION_NONE // ...prepare the conversation nRequiredConversationID = DESERT6_CONVERSATION_TOO_HIGH GOSUB Desert6_Conversation_Command_Prepare ELSE // ...cancel the previous conversation? IF nCurrentConversationID = DESERT6_CONVERSATION_INSTRUCTIONS AND g_Desert6_visibilityKM >= DESERT6_RADAR_VISIBLE_FIRST_DISPLAY_pc GOSUB Desert6_Conversation_Command_Cancel ENDIF ENDIF ENDIF // Start 'above radar' conversation? IF flagRadarVisible = TRUE AND flagAttackPlayer = FALSE AND flagCoronaMessageBeingDisplayed = FALSE IF NOT IS_BIT_SET bitsConversationsPlayed DESERT6_CONVERSATION_TOO_HIGH AND nCurrentConversationID = DESERT6_CONVERSATION_TOO_HIGH AND nConversationStatus = DESERT6_CONVERSATION_STATUS_PREPARED AND g_Desert6_visibilityKM >= DESERT6_RADAR_VISIBLE_FIRST_DISPLAY_pc GOSUB Desert6_Conversation_Command_Play ENDIF ENDIF // Prepare 'spotted' conversation? IF NOT IS_BIT_SET bitsConversationsPlayed DESERT6_CONVERSATION_SPOTTED AND IS_BIT_SET bitsConversationsPlayed DESERT6_CONVERSATION_TOO_HIGH AND nCurrentConversationID = DESERT6_CONVERSATION_NONE nRequiredConversationID = DESERT6_CONVERSATION_SPOTTED GOSUB Desert6_Conversation_Command_Prepare ENDIF // Start 'spotted' conversation? IF flagAttackPlayer = TRUE AND NOT IS_BIT_SET bitsConversationsPlayed DESERT6_CONVERSATION_SPOTTED AND nCurrentConversationID = DESERT6_CONVERSATION_SPOTTED AND nConversationStatus = DESERT6_CONVERSATION_STATUS_PREPARED GOSUB Desert6_Conversation_Command_Play ENDIF // Display 'lose the authorities' text? IF flagAboveRadarMessageDisplayed = FALSE IF IS_BIT_SET bitsConversationsPlayed DESERT6_CONVERSATION_SPOTTED AND NOT nConversationStatus = DESERT6_CONVERSATION_STATUS_PLAYING // Only display the message once PRINT_NOW DES6_06 7000 1 flagAboveRadarMessageDisplayed = TRUE ENDIF ENDIF // Check if the area51 message should be displayed IF flagArea51MessageDisplayed = FALSE IF IS_CHAR_IN_AREA_2D scplayer -67.0004 1646.8861 423.2980 2132.1875 FALSE IF IS_CHAR_IN_ANY_PLANE scplayer OR IS_CHAR_IN_ANY_HELI scplayer IF NOT IS_MESSAGE_BEING_DISPLAYED PRINT_NOW AREA51 7000 1 flagArea51MessageDisplayed = TRUE ENDIF ENDIF ENDIF ENDIF // Instructions speech IF flagPlayedInstructionsSpeech = FALSE IF timerText < m_mission_timer GOSUB Desert6_Conversation_Command_Play timerText = m_mission_timer + 5000 flagPlayedInstructionsSpeech = TRUE ENDIF ENDIF // Display visibility bar help IF flagDisplayedVisibilityBarHelp = FALSE IF IS_BIT_SET bitsConversationsPlayed DESERT6_CONVERSATION_INSTRUCTIONS PRINT_HELP DES6_12 flagDisplayedVisibilityBarHelp = TRUE ENDIF ENDIF // Exit // ---- IF m_goals = 99 GOSUB Desert6_next_stage ENDIF RETURN // **************************************** // STAGE 3: Return to Landing Strip Desert6_Stage_Return_To_Landing_Strip: // Initialisation // -------------- IF m_goals = 0 // Instructions: Return the aircraft to the landing strip PRINT_NOW DES6_10 5000 1 timerText = m_mission_timer + 5000 // Setup Landing Strip xloLand = -76.4228 yloLand = 2478.6396 zloLand = 14.2844 xhiLand = 433.6483 yhiLand = 2525.6577 zhiLand = 18.6279 // Setup Blip Position xposDestination = xhiLand - xloLand xposDestination = xposDestination / 2.0 xposDestination = xposDestination + xloLand yposDestination = yhiLand - yloLand yposDestination = yposDestination / 2.0 yposDestination = yposDestination + yloLand zposDestination = zhiLand - zloLand zposDestination = zposDestination / 2.0 zposDestination = zposDestination + zloLand // Display Destination ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination m_goals++ CHECKPOINT_SAVE 99 ENDIF // Failure Conditions // ------------------ IF IS_CAR_DEAD carPlayerAircraft m_failed = TRUE m_fail_reason = DESERT6_FAILED_AIRCRAFT_DEAD RETURN ENDIF // Player out of aircraft? GOSUB Desert6_Update_Failure_Conditions IF m_failed = TRUE RETURN ENDIF // Out of time IF g_Desert6_timerKM = 0 m_failed = TRUE m_fail_reason = DESERT6_FAILED_OUT_OF_TIME RETURN ENDIF // Subgoals // -------- // Has the player landed on the landing strip? IF m_goals = 1 // A Locate to show where the runway is LOCATE_CHAR_ANY_MEANS_3D scplayer xposDestination yposDestination zposDestination 10.0 10.0 10.0 TRUE // The real test to see if the player is in the area IF IS_CHAR_IN_AREA_3D scplayer xloLand yloLand zloLand xhiLand yhiLand zhiLand FALSE AND IS_CHAR_IN_CAR scplayer carPlayerAircraft AND IS_CAR_STOPPED carPlayerAircraft AND NOT IS_CAR_IN_AIR_PROPER carPlayerAircraft REMOVE_BLIP blipDestination // Trigger the 'success' speech GOSUB Desert6_Conversation_Command_Play SET_PLAYER_CONTROL player1 OFF // Get rid of the Harriers flagAttackPlayer = FALSE timerMinAttack = 0 m_goals++ ENDIF ENDIF // Allow the mission to finish after the speech has been played? IF m_goals = 2 IF IS_BIT_SET bitsConversationsPlayed DESERT6_CONVERSATION_SUCCESS SET_PLAYER_CONTROL player1 ON m_goals = 99 ENDIF ENDIF // Continuous updates // ------------------ // Radar Visibility GOSUB Desert6_Update_Radar_Visibility // Is the enemy dead? GOSUB Desert6_Enemy_Status // Time to send another attacker? IF flagAttackPlayer = TRUE IF timerNewEnemy < m_mission_timer flagSendAnEnemy = TRUE ENDIF ENDIF // Send another enemy to attack player?? IF flagSendAnEnemy = TRUE GOSUB Desert6_Enemy_Attack_Player // ...time till another enemy is generated nTempInt = DESERT6_TIME_TILL_NEW_ENEMY_sec * 1000 timerNewEnemy = m_mission_timer + nTempInt ENDIF // Should enemies be removed? GOSUB Desert6_Remove_Enemy // Should the Land message be displayed? IF flagLandMessageDisplayed = FALSE GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposDestination yposDestination zposDestination fTempDistance IF fTempDistance < DESERT6_MESSAGE_DISPLAY_DISTANCE_m // Info: Land anywhere on landing strip PRINT_NOW DES6_11 7000 1 flagLandMessageDisplayed = TRUE flagLandMessageBeingDisplayed = TRUE timerLandMessage = m_mission_timer + 7000 ENDIF ENDIF IF flagLandMessageBeingDisplayed = TRUE IF timerLandMessage < m_mission_timer flagLandMessageBeingDisplayed = FALSE CLEAR_THIS_PRINT DES6_11 ELSE PRINT_NOW DES6_11 7000 1 ENDIF ENDIF IF flagAllDropObjectsDropped = FALSE GOSUB Desert6_Update_Drop_Objects ENDIF // Prepare the 'successful mission' speech? IF flagLandMessageDisplayed = TRUE AND NOT nCurrentConversationID = DESERT6_CONVERSATION_SUCCESS AND NOT IS_BIT_SET bitsConversationsPlayed DESERT6_CONVERSATION_SUCCESS SWITCH nConversationStatus CASE DESERT6_CONVERSATION_STATUS_NONE // request it nRequiredConversationID = DESERT6_CONVERSATION_SUCCESS GOSUB Desert6_Conversation_Command_Prepare BREAK CASE DESERT6_CONVERSATION_STATUS_PREPARED // ...cancel any other speech that has been prepared GOSUB Desert6_Conversation_Command_Cancel BREAK ENDSWITCH ENDIF // Check if the area51 message should be displayed IF flagArea51MessageDisplayed = FALSE IF IS_CHAR_IN_AREA_2D scplayer -67.0004 1646.8861 423.2980 2132.1875 FALSE IF IS_CHAR_IN_ANY_PLANE scplayer OR IS_CHAR_IN_ANY_HELI scplayer IF NOT IS_MESSAGE_BEING_DISPLAYED PRINT_NOW AREA51 7000 1 flagArea51MessageDisplayed = TRUE ENDIF ENDIF ENDIF ENDIF // Exit // ---- IF m_goals = 99 GOSUB Desert6_next_stage ENDIF RETURN // ************************************************************************************************************* // MISSION SPECIFIC GOSUBS // ************************************************************************************************************* // ************************************************************************************************************* // Initialisation // ************************************************************************************************************* Desert6_Create_Mission_Aircraft: // Plane // xposTemp = 373.9635 // yposTemp = 2493.6355 // zposTemp = 15.4958 // headTemp = 90.0000 xposTemp = 323.5454 yposTemp = 2540.2539 zposTemp = 15.8085 headTemp = 180.0000 CLEAR_AREA xposTemp yposTemp zposTemp 15.0 TRUE CREATE_CAR RUSTLER xposTemp yposTemp zposTemp carPlayerAircraft SET_CAR_HEALTH carPlayerAircraft 2000 SET_CAR_HEADING carPlayerAircraft headTemp RETURN // ************************************************************************************************************* // Fly to Destination // ************************************************************************************************************* // **************************************** // Update Radar Visibility Desert6_Update_Radar_Visibility: // Check the player's height above ground // fTempFloat: Land Z // fTempFloat2: Water Z GET_CAR_COORDINATES carPlayerAircraft xposTemp yposTemp zposTemp GET_GROUND_Z_FOR_3D_COORD xposTemp yposTemp zposTemp fTempFloat GET_WATER_HEIGHT_AT_COORDS xposTemp yposTemp FALSE fTempFloat2 // If the water level is higher than ground level, use it // fTempFloat: Ground Z (highest Z between Water and Land) IF fTempFloat2 > fTempFloat fTempFloat = fTempFloat2 ENDIF // Is the player above radar visibility level? // fTempFloat2: Difference in height between player and Ground fTempFloat2 = zposTemp - fTempFloat IF fTempFloat2 > DESERT6_RADAR_VISIBLE_HEIGHT_UNDER_m // ...yes, player is radar visible // Was the player previously radar visible? IF flagRadarVisible = TRUE // ...yes, so check if the timer has elapsed IF timerVisibility < m_mission_timer // ...timer has elapsed, so increase visibility bar and restart timer g_Desert6_visibilityKM++ IF g_Desert6_visibilityKM > 100 g_Desert6_visibilityKM = 100 ENDIF IF g_Desert6_visibilityKM = 100 AND flagAttackPlayer = FALSE // Flags: player under attack; send a new enemy into the attack flagAttackPlayer = TRUE // flagSendAnEnemy = TRUE flagSendAnEnemy = FALSE flagFirstEnemyCreated = FALSE // Time until another enemy is created // nTempInt = DESERT6_TIME_TILL_NEW_ENEMY_sec * 1000 nTempInt = DESERT6_TIME_TILL_FIRST_ENEMY_sec * 1000 timerNewEnemy = m_mission_timer + nTempInt // Info: The authorities are after you // IF flagAboveRadarMessageDisplayed = FALSE // IF IS_BIT_SET bitsConversationsPlayed DESERT6_CONVERSATION_SPOTTED // AND NOT nConversationStatus = DESERT6_CONVERSATION_STATUS_PLAYING // // Only display the message once // PRINT_NOW DES6_05 7000 1 // PRINT DES6_06 7000 1 // flagAboveRadarMessageDisplayed = TRUE // ENDIF // ENDIF ENDIF timerVisibility = m_mission_timer + DESERT6_RADAR_VISIBLE_TIME_INCREASE_msec ENDIF IF flagAttackPlayer = FALSE AND flagCoronaMessageBeingDisplayed = FALSE AND flagEnemyAircraftExists = FALSE /// IF IS_BIT_SET bitsConversationsPlayed DESERT6_CONVERSATION_TOO_HIGH /// AND NOT nConversationStatus = DESERT6_CONVERSATION_STATUS_PLAYING IF NOT nConversationStatus = DESERT6_CONVERSATION_STATUS_PLAYING // AND nCurrentConversationID = DESERT6_CONVERSATION_NONE // AND timerAboveRadarLimit < m_mission_timer // Info: 'above radar limit' PRINT_NOW DES6_07 1000 1 ENDIF ENDIF ELSE // ...no, not previously radar visible, so give the player a wee bit more leeway IF fTempFloat2 > DESERT6_RADAR_VISIBLE_HEIGHT_OVER_m flagRadarVisible = TRUE timerVisibility = m_mission_timer + DESERT6_RADAR_VISIBLE_TIME_INCREASE_msec // timerAboveRadarLimit = m_mission_timer + 2000 // Trigger 'above radar level' looping sound PLAY_MISSION_AUDIO DESERT6_SFX_SLOT ENDIF ENDIF ELSE // ...no, player is not radar visible // NEW 'STOP ATTACK' CONTROLS (where the player just has to get back down below radar height to stop the attack) // END NEW 'STOP ATTACK' CONTROLS IF flagRadarVisible = TRUE // ...yes, previously radar visible, so indicate that it is not now radar visible and decrease timer flagRadarVisible = FALSE IF g_Desert6_visibilityKM > 0 timerVisibility = m_mission_timer + DESERT6_RADAR_VISIBLE_TIME_DECREASE_msec ELSE timerVisibility = 0 ENDIF // Minimum time before the planes are allowed to disappear IF flagAttackPlayer = TRUE nTempInt = DESERT6_MIN_ATTACK_TIME_sec * 1000 timerMinAttack = m_mission_timer + nTempInt ENDIF // ...been under the radar for a while, so allow the attack to wane flagAttackPlayer = FALSE timerNewEnemy = 0 CLEAR_THIS_PRINT DES6_07 // Stop playing the 'above radar limit' sound CLEAR_MISSION_AUDIO DESERT6_SFX_SLOT ELSE // ...no, not previously radar visible, so check if the bar should decrease IF g_Desert6_visibilityKM > 0 IF timerVisibility < m_mission_timer g_Desert6_visibilityKM-- IF g_Desert6_visibilityKM = 0 // ...bar empty again timerVisibility = 0 ELSE // ...restart timer timerVisibility = m_mission_timer + DESERT6_RADAR_VISIBLE_TIME_DECREASE_msec ENDIF ENDIF ENDIF ENDIF // REMOVE OLD 'STOP ATTACK' CONTROLS (where the player had to clear the radar to stop the attack) /* // Was the player previously radar visible? IF flagRadarVisible = TRUE // ...yes, previously radar visible, so indicate that it is not now radar visible and decrease timer flagRadarVisible = FALSE IF g_Desert6_visibilityKM > 0 timerVisibility = m_mission_timer + DESERT6_RADAR_VISIBLE_TIME_DECREASE_msec ELSE timerVisibility = 0 // Minimum time before the planes are allowed to disappear IF flagAttackPlayer = TRUE nTempInt = DESERT6_MIN_ATTACK_TIME_sec * 1000 timerMinAttack = m_mission_timer + nTempInt ENDIF // ...been under the radar for a while, so allow the attack to wane flagAttackPlayer = FALSE timerNewEnemy = 0 ENDIF CLEAR_THIS_PRINT DES6_07 ELSE // ...no, not previously radar visible, so check if the bar should decrease IF g_Desert6_visibilityKM > 0 IF timerVisibility < m_mission_timer g_Desert6_visibilityKM-- IF g_Desert6_visibilityKM = 0 // ...bar empty again timerVisibility = 0 // Minimum time before the planes are allowed to disappear IF flagAttackPlayer = TRUE nTempInt = DESERT6_MIN_ATTACK_TIME_sec * 1000 timerMinAttack = m_mission_timer + nTempInt ENDIF // ...been under the radar for a while, so allow the radar to wane flagAttackPlayer = FALSE timerNewEnemy = 0 ELSE // ...restart timer timerVisibility = m_mission_timer + DESERT6_RADAR_VISIBLE_TIME_DECREASE_msec ENDIF ENDIF ENDIF ENDIF */ // END REMOVE OLD 'STOP ATTACK' CONTROLS ENDIF RETURN // **************************************** // Update Failure Conditions Desert6_Update_Failure_Conditions: // If the player is out of the aircraft then allow a short period of time for him to get back in IF NOT IS_CHAR_IN_CAR scplayer carPlayerAircraft // ...player not in aircraft // Check if the player was previously in the aircraft or not IF flagFailureConditions = TRUE // ...previously out of aircraft, so update the timer IF timerFailure < m_mission_timer // ...timer ran out, so restart IF g_Desert6_failureKM = 0 // ...time up m_failed = TRUE m_fail_reason = DESERT6_FAILED_NOT_IN_AIRCRAFT RETURN ELSE // ...decrease counter and restart g_Desert6_failureKM-- timerFailure = m_mission_timer + 1000 CLEAR_SMALL_PRINTS ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE IF g_Desert6_FailureKM = 1 // ...display failure warning (singular) PRINT_WITH_NUMBER_NOW DES6_04 g_Desert6_FailureKM 1500 1 ELSE // ...display failure warning (plural) PRINT_WITH_NUMBER_NOW DES6_03 g_Desert6_FailureKM 1500 1 ENDIF ENDIF ENDIF ELSE // ...not previously out of the aircraft, so setup failure conditions g_Desert6_failureKM = DESERT6_FAILURE_TIME_OUT_OF_AIRCRAFT_sec timerFailure = m_mission_timer + 1000 // Failure warning (plural) ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE PRINT_WITH_NUMBER_NOW DES6_03 g_Desert6_FailureKM 1500 1 REMOVE_BLIP blipDestination ADD_BLIP_FOR_CAR carPlayerAircraft blipPlayerAircraft SET_BLIP_AS_FRIENDLY blipPlayerAircraft TRUE // Cancel plane dashboard warning audio CLEAR_MISSION_AUDIO DESERT6_SFX_SLOT flagFailureConditions = TRUE ENDIF ELSE // ...player in aircraft // If not previously in aircraft then clear up the failure conditions IF flagFailureConditions = TRUE flagFailureConditions = FALSE REMOVE_BLIP blipPlayerAircraft ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination timerFailure = 0 g_Desert6_failureKM = 0 CLEAR_SMALL_PRINTS ENDIF ENDIF RETURN // **************************************** // Enemy Status Desert6_Enemy_Status: // NOTE: flagTempFlag decides of it's time to get rid of this plane flagEnemyAircraftExists = FALSE REPEAT DESERT6_MAX_ENEMIES nLoop flagTempFlag = FALSE IF existsEnemy[nLoop] = TRUE flagEnemyAircraftExists = TRUE // Check for plane or pilot dead IF IS_CAR_DEAD carEnemyAircraft[nLoop] OR IS_CHAR_DEAD charEnemy[nLoop] flagTempFlag = TRUE ENDIF // Check if the enemy is in water IF flagTempFlag = FALSE IF IS_CAR_IN_WATER carEnemyAircraft[nLoop] flagTempFlag = TRUE ENDIF ENDIF // Check for plane stuck on ground IF flagTempFlag = FALSE IF flagEnemyAircraftStuck[nLoop] = TRUE // ...enemy aircraft previously stuck IF IS_CAR_IN_AIR_PROPER carEnemyAircraft[nLoop] // ...not stuck any longer flagEnemyAircraftStuck[nLoop] = FALSE timerEnemyAircraftStuck[nLoop] = 0 ELSE // ...still stuck IF timerEnemyAircraftStuck[nLoop] < m_mission_timer // ...timeout flagTempFlag = TRUE ENDIF ENDIF ELSE // ...enemy aircraft previously not stuck IF NOT IS_CAR_IN_AIR_PROPER carEnemyAircraft[nLoop] // ...may now be stuck flagEnemyAircraftStuck[nLoop] = TRUE timerEnemyAircraftStuck[nLoop] = m_mission_timer + DESERT6_ENEMY_AIRCRAFT_STUCK_TIME_msec ENDIF ENDIF ENDIF // Get rid of this plane IF flagTempFlag = TRUE MARK_CAR_AS_NO_LONGER_NEEDED carEnemyAircraft[nLoop] MARK_CHAR_AS_NO_LONGER_NEEDED charEnemy[nLoop] REMOVE_BLIP blipEnemy[nLoop] existsEnemy[nLoop] = FALSE IF flagAttackPlayer = TRUE timerNewEnemy = m_mission_timer + 2000 ENDIF RETURN ENDIF ENDIF ENDREPEAT RETURN // **************************************** // Enemy Attack Player Desert6_Enemy_Attack_Player: // Enemy using planes GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp REPEAT DESERT6_MAX_ENEMIES nLoop IF existsEnemy[nLoop] = FALSE // Randomly choose a start position for the Harrier around the player // GENERATE_RANDOM_INT_IN_RANGE 400 600 nTempInt GENERATE_RANDOM_INT_IN_RANGE 150 200 nTempInt fTempFloat =# nTempInt GENERATE_RANDOM_INT_IN_RANGE 0 2 nTempInt2 IF nTempInt2 = 0 xposTemp += fTempFloat ELSE xposTemp -= fTempFloat ENDIF // GENERATE_RANDOM_INT_IN_RANGE 400 600 nTempInt GENERATE_RANDOM_INT_IN_RANGE 150 200 nTempInt fTempFloat =# nTempInt GENERATE_RANDOM_INT_IN_RANGE 0 2 nTempInt2 IF nTempInt2 = 0 yposTemp += fTempFloat ELSE yposTemp -= fTempFloat ENDIF // Get the player's height above ground // fTempFloat: Land Z // fTempFloat2: Water Z GET_GROUND_Z_FOR_3D_COORD xposTemp yposTemp zposTemp fTempFloat GET_WATER_HEIGHT_AT_COORDS xposTemp yposTemp FALSE fTempFloat2 // If the water level is higher than ground level, use it // fTempFloat: Ground Z (highest Z between Water and Land) IF fTempFloat2 > fTempFloat fTempFloat = fTempFloat2 ENDIF // Start the plane 200m above the ground zposTemp = fTempFloat + 200.0 CREATE_CAR HYDRA xposTemp yposTemp zposTemp carEnemyAircraft[nLoop] PLANE_STARTS_IN_AIR carEnemyAircraft[nLoop] PLANE_ATTACK_PLAYER carEnemyAircraft[nLoop] player1 10.0 ADD_BLIP_FOR_CAR carEnemyAircraft[nLoop] blipEnemy[nLoop] CHANGE_BLIP_DISPLAY blipEnemy[nLoop] BLIP_ONLY // ...pilot CREATE_CHAR_INSIDE_CAR carEnemyAircraft[nLoop] PEDTYPE_CIVMALE HMORI charEnemy[nLoop] SET_CHAR_DECISION_MAKER charEnemy[nLoop] dmEmpty // ...housekeeping flagEnemyAircraftStuck[nLoop] = FALSE timerEnemyAircraftStuck[nLoop] = 0 existsEnemy[nLoop] = TRUE flagSendAnEnemy = FALSE flagFirstEnemyCreated = TRUE // ...only need one enemy just now RETURN ENDIF ENDREPEAT RETURN // **************************************** // Remove Enemy Desert6_Remove_Enemy: IF flagAttackPlayer = TRUE RETURN ENDIF IF timerMinAttack > m_mission_timer RETURN ENDIF IF flagFirstEnemyCreated = FALSE RETURN ENDIF GET_CHAR_COORDINATES scplayer xposTemp2 yposTemp2 zposTemp2 REPEAT DESERT6_MAX_ENEMIES nLoop IF existsEnemy[nLoop] = TRUE GET_CAR_COORDINATES carEnemyAircraft[nLoop] xposTemp yposTemp zposTemp GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempFloat IF fTempFloat > 250.0 // ...remove this enemy REMOVE_CHAR_ELEGANTLY charEnemy[nLoop] DELETE_CAR carEnemyAircraft[nLoop] REMOVE_BLIP blipEnemy[nLoop] existsEnemy[nLoop] = FALSE ENDIF ENDIF ENDREPEAT RETURN // **************************************** // Create Drop Objects Desert6_Create_Drop_Objects: IF IS_CAR_DEAD carPlayerAircraft RETURN ENDIF // Create the objects (anywhere) CREATE_OBJECT AMMO_CAPSULE 370.5000 2498.7500 25.5000 objectDrop[0] CREATE_OBJECT AMMO_CAPSULE 371.2500 2498.3500 25.3000 objectDrop[1] CREATE_OBJECT AMMO_CAPSULE 371.2500 2499.1500 25.7000 objectDrop[2] CREATE_OBJECT AMMO_CAPSULE 372.0000 2498.3500 25.4000 objectDrop[3] // Attach the objects to the plane (to get their initial drop positions) ATTACH_OBJECT_TO_CAR objectDrop[0] carPlayerAircraft -0.75 0.30 -1.05 88.0 0.0 0.0 ATTACH_OBJECT_TO_CAR objectDrop[1] carPlayerAircraft -0.25 0.30 -1.10 88.0 0.0 0.0 ATTACH_OBJECT_TO_CAR objectDrop[2] carPlayerAircraft 0.25 0.30 -1.10 88.0 0.0 0.0 ATTACH_OBJECT_TO_CAR objectDrop[3] carPlayerAircraft 0.75 0.30 -1.05 88.0 0.0 0.0 // Switch off the object collisions REPEAT DESERT6_MAX_DROP_OBJECTS nLoop SET_OBJECT_COLLISION objectDrop[nLoop] FALSE ENDREPEAT RETURN // **************************************** // Drop Objects Desert6_Drop_Objects: flagAllDropObjectsDropped = FALSE // Set up the timer for the objects to drop // NOTE: 30/7/04: They now all drop at the same time REPEAT DESERT6_MAX_DROP_OBJECTS nLoop // GENERATE_RANDOM_INT_IN_RANGE 100 1500 nTempInt // timerDropObject[nLoop] = m_mission_timer + nTempInt timerDropObject[nLoop] = m_mission_timer flagDropObjectDropped[nLoop] = FALSE ENDREPEAT RETURN // **************************************** // Update Drop Objects Desert6_Update_Drop_Objects: // Check if any objects need to drop REPEAT DESERT6_MAX_DROP_OBJECTS nLoop IF flagDropObjectDropped[nLoop] = FALSE IF timerDropObject[nLoop] < m_mission_timer // Detach the Object DETACH_OBJECT objectDrop[nLoop] 0.0 0.0 0.0 TRUE // Allow it to fall SET_OBJECT_DYNAMIC objectDrop[nLoop] TRUE // Play audio REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectDrop[nLoop] SOUND_BONNET_DENT // Housekeeping flagDropObjectDropped[nLoop] = TRUE ENDIF ENDIF ENDREPEAT // Check if this update needs to run again REPEAT DESERT6_MAX_DROP_OBJECTS nLoop IF flagDropObjectDropped[nLoop] = FALSE // ...continue to do the update on teh next frame RETURN ENDIF ENDREPEAT // No longer need to do the update flagAllDropObjectsDropped = TRUE RETURN // ************************************************************************************************************* // AUDIO ROUTINES // ************************************************************************************************************* // ------------------------------ // SPEECH ENGINE // ------------------------------ // **************************************** // UPDATE SPEECH Desert6_Update_Speech: SWITCH nConversationStatus CASE DESERT6_CONVERSATION_STATUS_NONE CASE DESERT6_CONVERSATION_STATUS_PREPARED CASE DESERT6_CONVERSATION_STATUS_INTERRUPTED CASE DESERT6_CONVERSATION_STATUS_FINISHED // ...nothing to do BREAK CASE DESERT6_CONVERSATION_STATUS_PLAYING // ...playing the conversation GOSUB Desert6_Playing_Conversation BREAK DEFAULT WRITE_DEBUG UNKNOWN_CONVERSATION_STATUS_ID RETURN ENDSWITCH RETURN // **************************************** // Initial Speech Slot Preloads Desert6_Initial_Speech_Slot_Preloads: // Preload the first two slots if possible IF nNextPreloadConversationLine = nCurrentMaxConversationLines RETURN ENDIF // ...slot 1 nTempInt = DESERT6_FIRST_SPEECH_SLOT nAudioSlotStatus[nTempInt] = DESERT6_AUDIO_SLOT_LOADING LOAD_MISSION_AUDIO nTempInt nConversationSequenceSpeechID[nNextPreloadConversationLine] nNextPreloadConversationLine++ // Are there more lines to be preloaded IF nNextPreloadConversationLine = nCurrentMaxConversationLines RETURN ENDIF // ...slot 2 nTempInt++ IF nTempInt > DESERT6_LAST_SPEECH_SLOT RETURN ENDIF nAudioSlotStatus[nTempInt] = DESERT6_AUDIO_SLOT_LOADING LOAD_MISSION_AUDIO nTempInt nConversationSequenceSpeechID[nNextPreloadConversationLine] nNextPreloadConversationLine++ RETURN // **************************************** // Playing Conversation Desert6_Playing_Conversation: // Check if the conversation should be interrupted GOSUB Desert6_Check_If_Interrupt_Conversation IF nConversationStatus = DESERT6_CONVERSATION_STATUS_INTERRUPTED GOSUB Desert6_Interrupt_Conversation RETURN ENDIF // Check the status of the current slot SWITCH nAudioSlotStatus[nSpeechCurrentSlot] CASE DESERT6_AUDIO_SLOT_FREE RETURN BREAK CASE DESERT6_AUDIO_SLOT_LOADING // ...check if the speech has loaded IF NOT HAS_MISSION_AUDIO_LOADED nSpeechCurrentSlot // ...no RETURN ENDIF // Speech has loaded nAudioSlotStatus[nSpeechCurrentSlot] = DESERT6_AUDIO_SLOT_LOADED BREAK CASE DESERT6_AUDIO_SLOT_LOADED // ...play the speech and display the subtitles PLAY_MISSION_AUDIO nSpeechCurrentSlot PRINT_NOW $tlConversationSequenceSubtitle[nCurrentConversationLine] 10000 1 nAudioSlotStatus[nSpeechCurrentSlot] = DESERT6_AUDIO_SLOT_PLAYING RETURN BREAK CASE DESERT6_AUDIO_SLOT_PLAYING // ...check if the speech has finished playing IF NOT HAS_MISSION_AUDIO_FINISHED nSpeechCurrentSlot // ...still playing RETURN ENDIF // Speech has finished playing, so move on to the next piece GOSUB Desert6_Current_Speech_Finished BREAK DEFAULT WRITE_DEBUG UNKNOWN_AUDIO_SLOT_STATUS RETURN ENDSWITCH RETURN // **************************************** // Current Conversation has been interrupted Desert6_Interrupt_Conversation: // Clear mission audio nTempInt = DESERT6_FIRST_SPEECH_SLOT WHILE nTempInt <= DESERT6_LAST_SPEECH_SLOT CLEAR_MISSION_AUDIO nTempInt nTempInt++ ENDWHILE GOSUB Desert6_Finish_Conversation RETURN // **************************************** // Current Speech has finished Desert6_Current_Speech_Finished: // Housekeeping nAudioSlotStatus[nSpeechCurrentSlot] = DESERT6_AUDIO_SLOT_FREE nCurrentConversationLine++ IF nCurrentConversationLine = nCurrentMaxConversationLines // ...conversation over GOSUB Desert6_Finish_Conversation RETURN ENDIF // Preload the next piece of audio that will be played in this slot IF nNextPreloadConversationLine < nCurrentMaxConversationLines // ...there is another piece of speech required in this slot nAudioSlotStatus[nSpeechCurrentSlot] = DESERT6_AUDIO_SLOT_LOADING LOAD_MISSION_AUDIO nSpeechCurrentSlot nConversationSequenceSpeechID[nNextPreloadConversationLine] nNextPreloadConversationLine++ ENDIF // Switch to the next speech slot nSpeechCurrentSlot++ IF nSpeechCurrentSlot > DESERT6_LAST_SPEECH_SLOT nSpeechCurrentSlot = DESERT6_FIRST_SPEECH_SLOT ENDIF RETURN // **************************************** // Current Conversation has finished Desert6_Finish_Conversation: // Mark this conversation as 'played' SET_BIT bitsConversationsPlayed nCurrentConversationID nCurrentConversationID = DESERT6_CONVERSATION_NONE nConversationStatus = DESERT6_CONVERSATION_STATUS_NONE nRequiredConversationID = DESERT6_CONVERSATION_NONE nSpeechCurrentSlot = DESERT6_FIRST_SPEECH_SLOT nCurrentConversationLine = 0 nCurrentMaxConversationLines = 0 nNextPreloadConversationLine = 0 nTempInt = DESERT6_FIRST_SPEECH_SLOT WHILE nTempInt < DESERT6_LAST_SPEECH_SLOT nAudioSlotStatus[nTempInt] = DESERT6_AUDIO_SLOT_FREE nTempInt++ ENDWHILE // Clear subtitles CLEAR_SMALL_PRINTS // Introduce a delay before the next conversation can be prepared timerDelayBeforeNextConversation = m_mission_timer + DESERT6_DELAY_BEFORE_NEXT_CONVERSATION_msec RETURN // ------------------------------ // EXTERNAL SPEECH CONTROLS // ------------------------------ // **************************************** // Conversation Command Prepare Desert6_Conversation_Command_Prepare: // Prepare a conversation IF NOT nConversationStatus = DESERT6_CONVERSATION_STATUS_NONE GOSUB Desert6_Conversation_Command_Cancel ENDIF // Wait for the timer to elapse before preparing the next conversation IF timerDelayBeforeNextConversation > m_mission_timer RETURN ENDIF timerDelayBeforeNextConversation = 0 nCurrentConversationID = nRequiredConversationID nRequiredConversationID = DESERT6_CONVERSATION_NONE nSpeechCurrentSlot = DESERT6_FIRST_SPEECH_SLOT nCurrentConversationLine = 0 nCurrentMaxConversationLines = 0 nNextPreloadConversationLine = 0 nTempInt = DESERT6_FIRST_SPEECH_SLOT WHILE nTempInt < DESERT6_LAST_SPEECH_SLOT nAudioSlotStatus[nTempInt] = DESERT6_AUDIO_SLOT_FREE nTempInt++ ENDWHILE // Prepare the next conversation GOSUB Desert6_Prepare_Next_Conversation RETURN // **************************************** // Conversation Command Play Desert6_Conversation_Command_Play: // Ensure the conversation has been prepared IF NOT nConversationStatus = DESERT6_CONVERSATION_STATUS_PREPARED WRITE_DEBUG A_CONVERSATION_HAS_NOT_BEEN_PREPARED RETURN ENDIF nConversationStatus = DESERT6_CONVERSATION_STATUS_PLAYING RETURN // **************************************** // Conversation Command Cancel Desert6_Conversation_Command_Cancel: // Ensure the conversation has been prepared IF nConversationStatus = DESERT6_CONVERSATION_STATUS_NONE RETURN ENDIF GOSUB Desert6_Interrupt_Conversation RETURN // ------------------------------ // MISSION SPECIFIC SPEECH SETUP // ------------------------------ // **************************************** // Prepare Next Conversation Desert6_Prepare_Next_Conversation: SWITCH nCurrentConversationID CASE DESERT6_CONVERSATION_INSTRUCTIONS GOSUB Desert6_Prepare_Conversation_Instructions BREAK CASE DESERT6_CONVERSATION_TOO_HIGH GOSUB Desert6_Prepare_Conversation_Too_High BREAK CASE DESERT6_CONVERSATION_SPOTTED GOSUB Desert6_Prepare_Conversation_Spotted BREAK CASE DESERT6_CONVERSATION_SUCCESS GOSUB Desert6_Prepare_Conversation_Success BREAK DEFAULT WRITE_DEBUG UNKNOWN_CONVERSATION RETURN ENDSWITCH // Preload the first two pieces of speech GOSUB Desert6_Initial_Speech_Slot_Preloads nConversationStatus = DESERT6_CONVERSATION_STATUS_PREPARED RETURN // **************************************** // Check if the current conversation should be interrupted Desert6_Check_If_Interrupt_Conversation: // Is Carl dead? IF IS_CHAR_DEAD scplayer nConversationStatus = DESERT6_CONVERSATION_STATUS_INTERRUPTED RETURN ENDIF // Is the plane dead? IF IS_CAR_DEAD carPlayerAircraft nConversationStatus = DESERT6_CONVERSATION_STATUS_INTERRUPTED RETURN ENDIF // Is Carl out of the plane? IF NOT IS_CHAR_IN_CAR scplayer carPlayerAircraft nConversationStatus = DESERT6_CONVERSATION_STATUS_INTERRUPTED RETURN ENDIF RETURN // **************************************** // Prepare Conversation: Instructions Desert6_Prepare_Conversation_Instructions: // Conversation between Carl and Toreno (through radio) nTempInt = 0 nConversationSequenceSpeechID[nTempInt] = SOUND_DES6_AA $tlConversationSequenceSubtitle[nTempInt] = DES6_AA nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_DES6_AB $tlConversationSequenceSubtitle[nTempInt] = DES6_AB nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_DES6_AD $tlConversationSequenceSubtitle[nTempInt] = DES6_AD nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_DES6_AE $tlConversationSequenceSubtitle[nTempInt] = DES6_AE nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_DES6_AF $tlConversationSequenceSubtitle[nTempInt] = DES6_AF nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_DES6_AG $tlConversationSequenceSubtitle[nTempInt] = DES6_AG nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_DES6_AH $tlConversationSequenceSubtitle[nTempInt] = DES6_AH nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_DES6_AJ $tlConversationSequenceSubtitle[nTempInt] = DES6_AJ nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_DES6_AK $tlConversationSequenceSubtitle[nTempInt] = DES6_AK nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_DES6_AM $tlConversationSequenceSubtitle[nTempInt] = DES6_AM nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_DES6_AN $tlConversationSequenceSubtitle[nTempInt] = DES6_AN nTempInt++ IF nTempInt > DESERT6_MAX_CONVERSATION_LINES WRITE_DEBUG TOO_MANY_CONVERSATION_LINES ENDIF nCurrentMaxConversationLines = nTempInt RETURN // **************************************** // Prepare Conversation: Too High Desert6_Prepare_Conversation_Too_High: // A random one of 4 comments spoken by Toreno (through radio) GENERATE_RANDOM_INT_IN_RANGE 0 4 nTempInt SWITCH nTempInt CASE 0 nConversationSequenceSpeechID[0] = SOUND_DES6_BA $tlConversationSequenceSubtitle[0] = DES6_BA BREAK CASE 1 nConversationSequenceSpeechID[0] = SOUND_DES6_BB $tlConversationSequenceSubtitle[0] = DES6_BB BREAK CASE 2 nConversationSequenceSpeechID[0] = SOUND_DES6_BC $tlConversationSequenceSubtitle[0] = DES6_BC BREAK CASE 3 nConversationSequenceSpeechID[0] = SOUND_DES6_BD $tlConversationSequenceSubtitle[0] = DES6_BD BREAK ENDSWITCH nCurrentMaxConversationLines = 1 RETURN // **************************************** // Prepare Conversation: Spotted Desert6_Prepare_Conversation_Spotted: // Conversation between Carl and Toreno (through radio) nTempInt = 0 nConversationSequenceSpeechID[nTempInt] = SOUND_DES6_CA $tlConversationSequenceSubtitle[nTempInt] = DES6_CA nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_DES6_CB $tlConversationSequenceSubtitle[nTempInt] = DES6_CB nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_DES6_CC $tlConversationSequenceSubtitle[nTempInt] = DES6_CC nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_DES6_CD $tlConversationSequenceSubtitle[nTempInt] = DES6_CD nTempInt++ IF nTempInt > DESERT6_MAX_CONVERSATION_LINES WRITE_DEBUG TOO_MANY_CONVERSATION_LINES ENDIF nCurrentMaxConversationLines = nTempInt RETURN // **************************************** // Prepare Conversation: Success Desert6_Prepare_Conversation_Success: // Speech by Toreno (through radio) nTempInt = 0 nConversationSequenceSpeechID[nTempInt] = SOUND_DES6_DA $tlConversationSequenceSubtitle[nTempInt] = DES6_DA nCurrentMaxConversationLines = 1 RETURN // ************************************************************************************************************* // HOUSEKEEPING GOSUBS // ************************************************************************************************************* // **************************************** // DEBUG TOOLS Desert6_Debug_Tools: // Display mission stage variables for debug IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_SPACE display_debug++ IF display_debug > 2 display_debug = 0 ENDIF CLEAR_ALL_VIEW_VARIABLES ENDIF IF display_debug = 1 // system variables Desert6_view_debug[0] = m_stage Desert6_view_debug[1] = m_goals Desert6_view_debug[2] = m_mission_timer Desert6_view_debug[3] = nCurrentConversationID Desert6_view_debug[4] = bitsConversationsPlayed Desert6_view_debug[5] = 0 Desert6_view_debug[6] = 0 Desert6_view_debug[7] = 0 // First two lines are so that the important data displayed is not hidden by other text VIEW_INTEGER_VARIABLE Desert6_view_debug[0] m_stage VIEW_INTEGER_VARIABLE Desert6_view_debug[1] m_goals VIEW_INTEGER_VARIABLE Desert6_view_debug[2] m_mission_timer VIEW_INTEGER_VARIABLE Desert6_view_debug[3] Conversation VIEW_INTEGER_VARIABLE Desert6_view_debug[4] ConversationsPlayed ENDIF IF display_debug = 2 // A second page of variable output (if required - just copy format above) ENDIF // Quit level - no mission pass/fail - cleanup only IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ESC m_quit = 1 ENDIF // Pause level IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_P IF m_pause = 0 m_pause = 1 WRITE_DEBUG LEVEL_PAUSED ELSE m_pause = 0 WRITE_DEBUG LEVEL_UNPAUSED ENDIF ENDIF RETURN // **************************************** // DEBUG SHORTCUTS Desert6_Debug_Shortcuts: // Jumps // ----- IF NOT IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_J RETURN ENDIF // Stage 2 jump IF m_stage = 2 IF m_goals < 2 // Warp Player CLEAR_AREA -2246.7063 -2539.0999 30.7512 25.0 TRUE SET_CHAR_COORDINATES scplayer -2246.7063 -2539.0999 30.7512 SET_CHAR_HEADING scplayer 144.5365 m_goals = 2 ELSE // Pretend flown through corona REMOVE_BLIP blipDestination DELETE_CHECKPOINT checkpointDestination m_goals = 99 ENDIF ENDIF // Stage 3 jump IF m_stage = 3 // Warp Player CLEAR_AREA 384.4035 2449.3503 15.4921 25.0 TRUE SET_CHAR_COORDINATES scplayer 384.4035 2449.3503 15.4921 SET_CHAR_HEADING scplayer 7.1386 ENDIF RETURN // **************************************** // FRAME COUNTER (Useful if processor scheduling is needed) Desert6_Frame_Counter: m_frame_num++ IF m_frame_num > 9 m_frame_num = 0 ENDIF RETURN // **************************************** // ADDITIONAL TIMERS Desert6_Additional_Timers: GET_GAME_TIMER m_this_frame_time m_time_diff = m_this_frame_time - m_last_frame_time m_last_frame_time = m_this_frame_time m_mission_timer += m_time_diff RETURN // ================================================================= // GOSUB: Next_Stage (sets flags and timers for next mission stage) // ================================================================= Desert6_next_stage: m_stage++ m_goals = 0 TIMERA = 0 TIMERB = 0 RETURN // ************************************************************************************************************* // INTRO CUTSCENE GOSUB // ************************************************************************************************************* Desert6_Intro_Cutscene: IF NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 OFF ENDIF SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // Clear the area used during the cutscene CLEAR_AREA 335.0 2529.0 16.0 20.0 TRUE LOAD_CUTSCENE DESERT6 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN FORCE_WEATHER WEATHER_EXTRASUNNY_DESERT WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_FADING_COLOUR 0 0 0 DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF RETURN // ************************************************************************************************************* // INITIALISATION GOSUBS // ************************************************************************************************************* Desert6_Initialisation: WHILE NOT IS_PLAYER_PLAYING player1 WAIT 0 ENDWHILE // Switch off the Car Generators for any planes in the hangers, and clear the area SWITCH_CAR_GENERATOR d5_bronze_generator 0 SWITCH_CAR_GENERATOR d5_silver_generator 0 SWITCH_CAR_GENERATOR d5_gold_generator 0 CLEAR_AREA 368.1973 2519.4211 15.5961 300.0 0 GOSUB Desert6_Load_All_Models GOSUB Desert6_Load_All_Anims // Create the mission aircraft GOSUB Desert6_Create_Mission_Aircraft ADD_BLIP_FOR_CAR carPlayerAircraft blipPlayerAircraft SET_BLIP_AS_FRIENDLY blipPlayerAircraft TRUE // Position the player CLEAR_AREA 331.9908 2533.7666 15.8044 0.5 0 LOAD_SCENE 331.9908 2533.7666 15.8044 SET_CHAR_COORDINATES scplayer 331.9908 2533.7666 15.8044 SET_CHAR_HEADING scplayer 48.4743 //188.7185 SET_CAMERA_BEHIND_PLAYER // Force the weather to be sunny FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT // Switch off ambient planes SWITCH_AMBIENT_PLANES OFF // Wait a short period of time to allow the plane to settle on the ground before fading in WAIT 500 // Fade in SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN // Player control IF NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 ON ENDIF // Respawn point SET_RESPAWN_POINT_FOR_DURATION_OF_MISSION 322.8019 2530.1240 15.8089 GOSUB Desert6_next_stage RETURN // *********************************** // LOAD ALL MODELS Desert6_Load_All_Models: // CARS REQUEST_MODEL RUSTLER // Player's Plane REQUEST_MODEL HYDRA // Enemy Planes // PEDS REQUEST_MODEL HMORI // Enemy pilot // OBJECTS REQUEST_MODEL AMMO_CAPSULE // For drop-off object LOAD_ALL_MODELS_NOW // Are Cars Loaded? WHILE NOT HAS_MODEL_LOADED RUSTLER OR NOT HAS_MODEL_LOADED HYDRA WAIT 0 ENDWHILE // Are Peds Loaded? WHILE NOT HAS_MODEL_LOADED HMORI WAIT 0 ENDWHILE // Are weapons loaded? // Are the Objects loaded? WHILE NOT HAS_MODEL_LOADED AMMO_CAPSULE WAIT 0 ENDWHILE RETURN // *********************************** // LOAD ALL ANIMS Desert6_Load_All_Anims: // REQUEST_ANIMATION INT_HOUSE // for washing up // Are anims loaded? // WHILE NOT HAS_ANIMATION_LOADED INT_HOUSE // WAIT 0 // ENDWHILE RETURN // ************************************************************************************************************* // END OF LEVEL GOSUBS - fail, pass, cleanup // ************************************************************************************************************* // FAIL Desert6_Mission_Failed: PRINT_BIG M_FAIL 5000 1 // Display reason for failure (if there is a reason) CLEAR_SMALL_PRINTS SWITCH m_fail_reason CASE DESERT6_FAILED_AIRCRAFT_DEAD PRINT_NOW DES6_99 5000 1 BREAK CASE DESERT6_FAILED_NOT_IN_AIRCRAFT PRINT_NOW DES6_98 5000 1 BREAK CASE DESERT6_FAILED_OUT_OF_TIME PRINT_NOW DES6_97 5000 1 BREAK ENDSWITCH RETURN // PASS mission_passed_Desert6: PRINT_WITH_NUMBER_BIG M_PASS 15000 5000 1 ADD_SCORE player1 15000 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 REGISTER_MISSION_PASSED DESERT6 PLAYER_MADE_PROGRESS 1 flag_desert_mission_counter++ RETURN // CLEANUP Desert6_mission_cleanup: // Get rid of the Player's mission specific weapons // ------------------------------------------------ // IF IS_PLAYER_PLAYING player1 // REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_MOLOTOV // ENDIF // Entity Task Removal, etc. // ------------------------- // Entity Clearup // -------------- MARK_CAR_AS_NO_LONGER_NEEDED carPlayerAircraft REPEAT DESERT6_MAX_ENEMIES nLoop MARK_CAR_AS_NO_LONGER_NEEDED carEnemyAircraft[nLoop] MARK_CHAR_AS_NO_LONGER_NEEDED charEnemy[nLoop] ENDREPEAT REPEAT DESERT6_MAX_DROP_OBJECTS nLoop DELETE_OBJECT objectDrop[nLoop] ENDREPEAT // Blip Clearup // ------------ REMOVE_BLIP blipPlayerAircraft REMOVE_BLIP blipDestination REPEAT DESERT6_MAX_ENEMIES nLoop REMOVE_BLIP blipEnemy[nLoop] ENDREPEAT // Counters and Timers Clearup // --------------------------- CLEAR_ONSCREEN_COUNTER g_Desert6_visibilityKM CLEAR_ONSCREEN_TIMER g_Desert6_timerKM // Checkpoint Clearup // ------------------ DELETE_CHECKPOINT checkpointDestination // Animation Clearup // ----------------- // Looping Audio Clearup // --------------------- CLEAR_MISSION_AUDIO DESERT6_SFX_SLOT // Models Clearup // -------------- // ...cars MARK_MODEL_AS_NO_LONGER_NEEDED RUSTLER MARK_MODEL_AS_NO_LONGER_NEEDED HYDRA // ...peds MARK_MODEL_AS_NO_LONGER_NEEDED HMORI // ...guns // ...objects MARK_MODEL_AS_NO_LONGER_NEEDED AMMO_CAPSULE // === RESTORE ENVIRONMENT SETTINGS === // ------------------------------------ SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_WANTED_MULTIPLIER 1.0 SWITCH_AMBIENT_PLANES ON RELEASE_WEATHER // Make sure the player gets a 6* rating again whenever he sets foot on the aircraft carrier SET_DISABLE_MILITARY_ZONES FALSE // Restore switched off road // ------------------------- // SWITCH_ROADS_BACK_TO_ORIGINAL -2319.8967 -2719.9604 28.4250 -2197.9482 -2482.0303 44.5080 // Make sure the mobile phone doesn't ring immediately after a mission // ------------------------------------------------------------------- GET_GAME_TIMER timer_mobile_start // Restore any car generators active at the Desert Airstrip // -------------------------------------------------------- IF d5_bronze_generator_unlocked = TRUE SWITCH_CAR_GENERATOR d5_bronze_generator 101 ENDIF IF d5_silver_generator_unlocked = TRUE SWITCH_CAR_GENERATOR d5_silver_generator 101 ENDIF IF d5_gold_generator_unlocked = TRUE SWITCH_CAR_GENERATOR d5_gold_generator 101 ENDIF // Housekeeping // ------------ flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* desert 9 ****************************************** // *********************************** C3 Shootout ***************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME desert9 // Mission start stuff GOSUB mission_start_desert9 game_over: IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_desert9_failed ENDIF GOSUB mission_cleanup_desert9 game_end: MISSION_HAS_FINISHED MISSION_END { // **************************************** Mission Start ********************************** //VARIABLES DECLARED //VEHICLES LVAR_INT d9_plane d9_players_bike d9_enemy_car[4] //Chars LVAR_INT d9_enemy[8] //objects LVAR_INT d9_plane_ramp d9_crate[6] d9_parachute d9_locator //timers LVAR_INT d9_timer //flags LVAR_INT d9_fail_flag d9_print_text_flag d9_enemy_attacks[5] d9_skip_to_end //sequences LVAR_INT d9_seq //cutscene 1 vars LVAR_INT d9_skip_pressed // Flags LVAR_INT d9_flag d9_player_killed d9_fake_death LVAR_INT d9_cut_flag // scene1 vars LVAR_INT d9_plane_leave_time d9_plane_leave_flag //coordinates LVAR_FLOAT d9_plane_x d9_plane_y d9_plane_z d9_check_x1 d9_check_x2 d9_check_y1 d9_check_y2 LVAR_FLOAT d9_hatch_angle //cutscene2 vars LVAR_FLOAT d9_plane_pitch LVAR_INT d9_bottom_ramp d9_top_ramp d9_ground LVAR_INT d9_cut_timer //scene2 _vars //VAR_INT d9_player_sucked_out LVAR_INT d9_trigger_roll d9_int1 d9_int2 d9_int3 // barrel bosug LVAR_INT d9_barrel[20] d9_drop_barrel d9_barrel_timer d9_dive_time d9_barrel_start_roll_time d9_time_passed LVAR_FLOAT d9_barrel_rotation[20] d9_velX d9_velY d9_velZ d9_addVel d9_barrel_x1 d9_barrel_y1 d9_barrel_z1 d9_barrel_x2 d9_barrel_y2 d9_barrel_z2 d9_distance LVAR_FLOAT d9_barrel_move_percent d9_x d9_y LVAR_FLOAT d9_z d9_rot_vel //scene //blips LVAR_INT d9_plane_blip d9_bike_blip LVAR_FLOAT d9_air_res mission_start_desert9: //VIEW_INTEGER_VARIABLE d9_cut_flag d9_cut_flag //VIEW_INTEGER_VARIABLE d9_player_sucked_out d9_player_sucked_out REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT DSERT9 DISPLAY_RADAR 2 // PATHING OFF SET_WANTED_MULTIPLIER 0.0 SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 SET_CHAR_AREA_VISIBLE scplayer 0 flag_player_on_mission = 1 SWITCH_ENTRY_EXIT Deshous FALSE //VIEW_FLOAT_VARIABLE para_freefall_Vz para_freefall_Vz // //REQUEST_MODEL ANDROM //WHILE NOT HAS_MODEL_LOADED ANDROM // WAIT 0 //ENDWHILE // // // //CREATE_CHECKPOINT checkpoint_tube 339.0 1000.0 10.0 0.0 0.0 0.0 6.0 cp_blah // CREATE_CAR ANDROM -205.6183 2507.2812 29.3479 d9_plane // SET_CAR_HEADING d9_plane 270.0 // SET_CAR_FORWARD_SPEED d9_plane 50.0 // SET_VEHICLE_AIR_RESISTANCE_MULTIPLIER d9_plane 3.8 // WARP_CHAR_INTO_CAR scplayer d9_plane // //d9_pl_speed = 35.0 // REQUEST_CAR_RECORDING 168 // WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 168 // WAIT 0 // ENDWHILE // IF NOT IS_CAR_DEAD d9_plane // START_PLAYBACK_RECORDED_CAR d9_plane 168 // ENDIF // // // START_RECORDING_CAR d9_plane 168 //wankers: // //LVAR_INT recording_now cp_blah //LVAR_FLOAT d9_pl_speed // // // // //WAIT 0 // ////IF NOT IS_CAR_DEAD d9_plane //// SET_CAR_FORWARD_SPEED d9_plane 40.0 ////ENDIF //// ////IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S ////AND recording_now = 0 //// IF NOT IS_CAR_DEAD d9_plane //// START_RECORDING_CAR d9_plane 168 //// recording_now = 1 //// ENDIF ////ENDIF // ////IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_D ////AND recording_now = 0 //// IF NOT IS_CAR_DEAD d9_plane //// STOP_RECORDING_CAR d9_plane //// recording_now = 1 //// ENDIF ////ENDIF // // // //GOTO wankers // d9_z = 100.0 IF d9_z = 0.0 CREATE_OBJECT barrel1 0.0 0.0 0.0 d9_barrel[0] CREATE_OBJECT barrel1 0.0 0.0 0.0 d9_box[0] CREATE_OBJECT kb_barrel 0.0 0.0 0.0 d9_locator CREATE_CAR PCJ600 426.6481 2535.7126 15.5538 d9_players_bike SET_CAR_HEADING d9_players_bike 107.0 ADD_BLIP_FOR_COORD d9_plane_x d9_plane_y d9_plane_z d9_plane_blip CREATE_PICKUP Gun_para PICKUP_ONCE 1797.6023 -1308.8815 133.8128 para_pickup ADD_BLIP_FOR_CAR d9_players_bike d9_bike_blip CREATE_OBJECT cr_guncrate 365.0146 2500.6755 15.492 d9_crate[0] CREATE_OBJECT cr_cratestack 365.9573 2502.7632 15.4921 d9_crate[1] CREATE_OBJECT cr_cratestack 365.5524 2503.4602 15.492 d9_crate[2] CREATE_OBJECT cr_cratestack 364.5623 2503.4055 15.4921 d9_crate[3] ENDIF // // // // // // // REQUEST_MODEL BOBCAT // // // LOAD_ALL_MODELS_NOW // // WHILE NOT HAS_MODEL_LOADED BOBCAT // WAIT 0 // ENDWHILE // // // CREATE_CAR BOBCAT 366.7640 2512.6550 15.5677 d9_enemy_car[0] // CREATE_CAR BOBCAT 367.1340 2490.1738 15.4884 d9_enemy_car[1] // CREATE_CAR BOBCAT 357.6567 2509.5942 15.5221 d9_enemy_car[2] // // SET_CAR_HEADING d9_enemy_car[0] 247.2312 // SET_CAR_HEADING d9_enemy_car[1] 228.9755 // SET_CAR_HEADING d9_enemy_car[2] 192.3090 //VAR_FLOAT d9_fX d9_fY d9_fZ d9_oX d9_oY d9_oZ //VIEW_FLOAT_VARIABLE d9_fX fX //VIEW_FLOAT_VARIABLE d9_fY fY //VIEW_FLOAT_VARIABLE d9_fZ fZ //VIEW_FLOAT_VARIABLE d9_oX oX //VIEW_FLOAT_VARIABLE d9_oY oY //VIEW_FLOAT_VARIABLE d9_oZ oZ mission_loop: WAIT 0 // // // IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_A // d9_fX += 0.01 // ENDIF // // IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Z // d9_fX -= 0.01 // ENDIF // // IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S // d9_fY += 0.01 // ENDIF // // IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_X // d9_fY -= 0.01 // ENDIF // // IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_D // d9_fZ += 0.01 // ENDIF // // IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_C // d9_fZ -= 0.01 // ENDIF // // IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_F // d9_oX += 0.01 // ENDIF // // IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_V // d9_oX -= 0.01 // ENDIF // // IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_G // d9_oY += 0.01 // ENDIF // // IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_B // d9_oY -= 0.01 // ENDIF // // IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_H // d9_oZ += 0.01 // ENDIF // // IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_N // d9_oZ -= 0.01 // ENDIF // // IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q // IF NOT IS_CAR_DEAD d9_enemy_car[0] // AND NOT IS_CAR_DEAD d9_enemy_car[1] // AND NOT IS_CAR_DEAD d9_enemy_car[2] // SET_CAR_COORDINATES d9_enemy_car[0] 366.7640 2512.6550 15.5677 // SET_CAR_COORDINATES d9_enemy_car[1] 367.1340 2490.1738 15.4884 // SET_CAR_COORDINATES d9_enemy_car[2] 357.6567 2509.5942 15.5221 // SET_CAR_HEADING d9_enemy_car[0] 247.2312 // SET_CAR_HEADING d9_enemy_car[1] 228.9755 // SET_CAR_HEADING d9_enemy_car[2] 192.3090 // SET_CAR_HEALTH d9_enemy_car[0] 1000 // SET_CAR_HEALTH d9_enemy_car[1] 1000 // SET_CAR_HEALTH d9_enemy_car[2] 1000 // // // ENDIF // ENDIF // // //d9_fx = 0.08 //d9_fz = 0.05 //d9_oy = 2.5 //d9_oz = 0.01 // // // // // // IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_W // IF NOT IS_CAR_DEAD d9_enemy_car[0] // AND NOT IS_CAR_DEAD d9_enemy_car[1] // AND NOT IS_CAR_DEAD d9_enemy_car[2] // APPLY_FORCE_TO_CAR d9_enemy_car[0] d9_fX d9_fY d9_fZ d9_oX d9_oY d9_oZ // APPLY_FORCE_TO_CAR d9_enemy_car[1] d9_fX d9_fY d9_fZ d9_oX d9_oY d9_oZ // APPLY_FORCE_TO_CAR d9_enemy_car[2] d9_fX d9_fY d9_fZ d9_oX d9_oY d9_oZ // ENDIF // ENDIF // //GOTO mission_loop IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_desert9_passed ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_D WHILE NOT HAS_MODEL_LOADED gun_para REQUEST_MODEL gun_para WAIT 0 ENDWHILE GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_PARACHUTE 1 d9_flag = 0 d9_cut_flag = 0 ENDIF SWITCH d9_flag CASE 0 GOSUB initialise_stuff BREAK CASE 20 // Plane lands. GOSUB cutscene_1a BREAK CASE 21 // MOCAP of Toerno and CJ GOSUB cutscene_1b BREAK CASE 22 // Cut for playing entering bike GOSUB cutscene_1c BREAK CASE 2 //player races after plane GOSUB plane_race BREAK CASE 3 //plane takes off. Player trapped inside GOSUB cutscene_2 BREAK CASE 4 //plane_fight GOSUB scene_2 BREAK CASE 5 //player jumps out of plane to freedom GOSUB cutscene_3 BREAK CASE 6 //player uses parachute to land safely GOSUB parachuting BREAK CASE 7 //plane crashes with player onboard GOSUB cutscene_4 BREAK CASE 8 //player fails to make it on to plane GOSUB cutscene_5 BREAK CASE 9 //player passed - cut of plane exploding GOSUB cutscene_6 BREAK ENDSWITCH GOSUB display_instructions GOSUB fail_checks GOSUB desert9_audio GOTO mission_loop fail_checks: SWITCH d9_flag CASE 2 BREAK ENDSWITCH RETURN // *************************************************************************************** // ************************************* LEVEL SCENES ************************************ // *************************************************************************************** initialise_stuff: SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION2 PEDTYPE_PLAYER1 d9_flag = 20 RETURN // ############################################################################################################################################ // ################################################ INTRO CUTSCENE ########################################################################## // ############################################################################################################################################ cutscene_1a: SET_FADING_COLOUR 0 0 0 IF d9_cut_flag = 0 SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF SET_CHAR_AREA_VISIBLE scplayer 0 DO_FADE 1000 FADE_OUT d9_cut_flag = 1 ENDIF IF d9_cut_flag = 1 IF NOT GET_FADING_STATUS CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_AREA_OF_CARS -120.5297 2593.6650 69.1939 502.5016 2365.4182 -1.2447 CLEAR_AREA_OF_CHARS -120.5297 2593.6650 69.1939 502.5016 2365.4182 -1.2447 SET_CHAR_COORDINATES_NO_OFFSET scplayer 222.7755 2508.9717 15.5214 // ************* LOAD MODELS *************** REQUEST_MODEL ANDROM REQUEST_MODEL BOBCAT REQUEST_MODEL WMOMIB REQUEST_MODEL MICRO_UZI REQUEST_MODEL BMYMIB // REQUEST_MODEL COLT45 // REQUEST_MODEL PCJ600 // REQUEST_MODEL SATCHEL // REQUEST_MODEL BOMB // REQUEST_MODEL gun_para // REQUEST_ANIMATION AIRPORT /// REQUEST_ANIMATION CARRY // REQUEST_CAR_RECORDING 135 // REQUEST_CAR_RECORDING 149 // REQUEST_CAR_RECORDING 134 // REQUEST_CAR_RECORDING 168 REQUEST_CAR_RECORDING 450 REQUEST_CAR_RECORDING 168 REQUEST_CAR_RECORDING 452 REQUEST_CAR_RECORDING 453 LOAD_ALL_MODELS_NOW d9_cut_flag = 1 ENDIF ENDIF IF d9_cut_flag = 1 IF HAS_MODEL_LOADED ANDROM AND HAS_MODEL_LOADED BOBCAT AND HAS_MODEL_LOADED WMOMIB AND HAS_MODEL_LOADED MICRO_UZI AND HAS_MODEL_LOADED BMYMIB IF HAS_CAR_RECORDING_BEEN_LOADED 450 AND HAS_CAR_RECORDING_BEEN_LOADED 168 AND HAS_CAR_RECORDING_BEEN_LOADED 452 AND HAS_CAR_RECORDING_BEEN_LOADED 453 CREATE_CAR ANDROM 339.9034 2499.8049 15.4884 d9_plane // // setup cars to chase plane down runway CREATE_CAR BOBCAT -22.1321 2504.9424 15.2566 d9_enemy_car[0] CREATE_CAR BOBCAT -15.9009 2507.2803 15.2543 d9_enemy_car[1] CREATE_CAR BOBCAT -17.3227 2501.0107 15.2520 d9_enemy_car[2] CHANGE_CAR_COLOUR d9_enemy_car[0] CARCOLOUR_BLACK CARCOLOUR_BLACK CHANGE_CAR_COLOUR d9_enemy_car[1] CARCOLOUR_BLACK CARCOLOUR_BLACK CHANGE_CAR_COLOUR d9_enemy_car[2] CARCOLOUR_BLACK CARCOLOUR_BLACK SET_CAR_HEADING d9_enemy_car[0] 270.0 SET_CAR_HEADING d9_enemy_car[1] 270.0 SET_CAR_HEADING d9_enemy_car[2] 270.0 CREATE_CHAR_INSIDE_CAR d9_enemy_car[0] PEDTYPE_MISSION1 BMYMIB d9_enemy[0] CREATE_CHAR_INSIDE_CAR d9_enemy_car[1] PEDTYPE_MISSION1 WMOMIB d9_enemy[1] CREATE_CHAR_INSIDE_CAR d9_enemy_car[2] PEDTYPE_MISSION1 WMOMIB d9_enemy[2] CREATE_CHAR_AS_PASSENGER d9_enemy_car[0] PEDTYPE_MISSION1 WMOMIB 0 d9_enemy[3] CREATE_CHAR_AS_PASSENGER d9_enemy_car[1] PEDTYPE_MISSION1 BMYMIB 0 d9_enemy[4] CREATE_CHAR PEDTYPE_MISSION1 WMOMIB -28.1475 2492.8069 15.2513 d9_enemy[5] CREATE_CHAR PEDTYPE_MISSION1 BMYMIB -28.1475 2493.8069 15.2513 d9_enemy[6] CREATE_CHAR PEDTYPE_MISSION1 BMYMIB -28.1475 2494.8069 15.2513 d9_enemy[7] ATTACH_CHAR_TO_CAR d9_enemy[5] d9_enemy_car[0] 0.5 -1.0 0.4 FACING_FORWARD 10.0 WEAPONTYPE_MICRO_UZI ATTACH_CHAR_TO_CAR d9_enemy[6] d9_enemy_car[1] -0.5 -1.0 0.4 FACING_FORWARD 10.0 WEAPONTYPE_MICRO_UZI ATTACH_CHAR_TO_CAR d9_enemy[7] d9_enemy_car[1] 0.5 -1.0 0.4 FACING_FORWARD 10.0 WEAPONTYPE_MICRO_UZI d9_cut_timer = TIMERA + 1500 d9_cut_flag = 2 ENDIF ENDIF ENDIF IF d9_cut_flag = 2 IF d9_cut_timer > TIMERA IF NOT IS_CAR_DEAD d9_enemy_car[0] AND NOT IS_CAR_DEAD d9_enemy_car[1] AND NOT IS_CAR_DEAD d9_enemy_car[2] AND NOT IS_CAR_DEAD d9_plane IF HAS_CAR_RECORDING_BEEN_LOADED 450 AND HAS_CAR_RECORDING_BEEN_LOADED 168 AND HAS_CAR_RECORDING_BEEN_LOADED 452 AND HAS_CAR_RECORDING_BEEN_LOADED 453 START_PLAYBACK_RECORDED_CAR d9_enemy_car[0] 450 START_PLAYBACK_RECORDED_CAR d9_enemy_car[1] 453 START_PLAYBACK_RECORDED_CAR d9_enemy_car[2] 452 START_PLAYBACK_RECORDED_CAR d9_plane 168 SET_CAR_ENGINE_ON d9_plane TRUE SET_PLAYBACK_SPEED d9_enemy_car[0] 0.8 SET_PLAYBACK_SPEED d9_enemy_car[1] 0.9 SET_PLAYBACK_SPEED d9_enemy_car[2] 0.8 SET_FIXED_CAMERA_POSITION -123.0824 2533.0571 21.6790 0.0 0.0 0.0 LOAD_SCENE_IN_DIRECTION -123.0824 2533.0571 21.6790 100.0 REQUEST_COLLISION -123.0824 2533.0571 DO_FADE 600 FADE_IN // CAMERA_RESET_NEW_SCRIPTABLES // CAMERA_PERSIST_TRACK TRUE // CAMERA_PERSIST_POS TRUE // CAMERA_SET_VECTOR_MOVE -151.1351 2541.5195 25.3160 -130.0832 2535.8176 24.9708 5500 TRUE // CAMERA_SET_VECTOR_TRACK -152.1043 2541.2839 25.3875 -129.1079 2535.6426 24.8358 5500 TRUE d9_cut_timer = TIMERA + 5000 d9_audio_time = TIMERA + 1000 d9_cut_flag = 3 ELSE REQUEST_CAR_RECORDING 450 REQUEST_CAR_RECORDING 168 REQUEST_CAR_RECORDING 452 REQUEST_CAR_RECORDING 453 ENDIF ENDIF ENDIF ENDIF IF d9_cut_flag = 3 IF NOT IS_CAR_DEAD d9_enemy_car[0] AND NOT IS_CAR_DEAD d9_enemy_car[1] AND NOT IS_CAR_DEAD d9_enemy_car[2] AND NOT IS_CAR_DEAD d9_plane d9_x = 0.0 d9_y = 0.0 d9_z = 0.0 GET_CAR_COORDINATES d9_enemy_car[0] x y z d9_x += x d9_y += y d9_z += z GET_CAR_COORDINATES d9_enemy_car[1] x y z d9_x += x d9_y += y d9_z += z GET_CAR_COORDINATES d9_enemy_car[2] x y z d9_x += x d9_y += y d9_z += z d9_x /= 3.0 d9_y /= 3.0 d9_z /= 3.0 POINT_CAMERA_AT_POINT d9_x d9_y d9_z JUMP_CUT IF TIMERA > d9_cut_timer d9_cut_flag = 4 ENDIF LVAR_INT d9_audio_time IF NOT d9_audio_time = 0 IF TIMERA > d9_audio_time play_audio = 1 d9_audio_time = 0 ENDIF ENDIF ENDIF ENDIF IF d9_cut_flag = 4 IF NOT IS_CAR_DEAD d9_enemy_car[0] AND NOT IS_CAR_DEAD d9_enemy_car[1] AND NOT IS_CAR_DEAD d9_enemy_car[2] IF NOT IS_CHAR_DEAD d9_enemy[0] AND NOT IS_CHAR_DEAD d9_enemy[1] AND NOT IS_CHAR_DEAD d9_enemy[2] STOP_PLAYBACK_RECORDED_CAR d9_enemy_car[0] STOP_PLAYBACK_RECORDED_CAR d9_enemy_car[1] STOP_PLAYBACK_RECORDED_CAR d9_enemy_car[2] SET_CAR_COORDINATES d9_enemy_car[0] 90.1321 2504.9424 15.4766 SET_CAR_COORDINATES d9_enemy_car[1] 83.9009 2510.2803 15.4766 SET_CAR_COORDINATES d9_enemy_car[2] 85.3227 2497.0107 15.4766 TASK_CAR_DRIVE_TO_COORD d9_enemy[0] d9_enemy_car[0] 400.2219 2504.9424 15.4766 12.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_DRIVE_TO_COORD d9_enemy[1] d9_enemy_car[1] 400.2219 2510.2803 15.4766 12.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_DRIVE_TO_COORD d9_enemy[2] d9_enemy_car[2] 400.2219 2497.0107 15.4766 12.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH SET_CAR_HEADING d9_enemy_car[0] 270.0 SET_CAR_HEADING d9_enemy_car[1] 270.0 SET_CAR_HEADING d9_enemy_car[2] 270.0 SET_CAR_FORWARD_SPEED d9_enemy_car[0] 12.0 SET_CAR_FORWARD_SPEED d9_enemy_car[1] 12.0 SET_CAR_FORWARD_SPEED d9_enemy_car[2] 12.0 ENDIF ENDIF SET_PLAYBACK_SPEED d9_plane 0.7 SET_CHAR_HEADING scplayer 270.0 OPEN_SEQUENCE_TASK d9_seq TASK_PLAY_ANIM -1 flee_lkaround_01 PED 8.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK d9_seq PERFORM_SEQUENCE_TASK scplayer d9_seq CLEAR_SEQUENCE_TASK d9_seq play_audio = 2 SET_FIXED_CAMERA_POSITION 224.1743 2508.4255 16.7184 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 223.1940 2508.5354 16.8827 JUMP_CUT d9_cut_flag = 5 d9_cut_timer = TIMERA + 1700 ENDIF // cut of plane landing and cars following on IF d9_cut_flag = 5 IF TIMERA > d9_cut_timer IF NOT IS_CAR_DEAD d9_enemy_car[0] AND NOT IS_CAR_DEAD d9_enemy_car[1] AND NOT IS_CAR_DEAD d9_enemy_car[2] IF NOT IS_CHAR_DEAD d9_enemy[0] AND NOT IS_CHAR_DEAD d9_enemy[1] AND NOT IS_CHAR_DEAD d9_enemy[2] SET_CAR_COORDINATES d9_enemy_car[0] 90.1321 2504.9424 15.4766 SET_CAR_COORDINATES d9_enemy_car[1] 83.9009 2510.2803 15.4766 SET_CAR_COORDINATES d9_enemy_car[2] 85.3227 2497.0107 15.4766 TASK_CAR_DRIVE_TO_COORD d9_enemy[0] d9_enemy_car[0] 400.2219 2504.9424 15.4766 30.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_DRIVE_TO_COORD d9_enemy[1] d9_enemy_car[1] 400.2219 2510.2803 15.4766 30.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_DRIVE_TO_COORD d9_enemy[2] d9_enemy_car[2] 400.2219 2497.0107 15.4766 30.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH SET_CAR_HEADING d9_enemy_car[0] 270.0 SET_CAR_HEADING d9_enemy_car[1] 270.0 SET_CAR_HEADING d9_enemy_car[2] 270.0 SET_CAR_FORWARD_SPEED d9_enemy_car[0] 30.0 SET_CAR_FORWARD_SPEED d9_enemy_car[1] 30.0 SET_CAR_FORWARD_SPEED d9_enemy_car[2] 30.0 ENDIF ENDIF IF NOT IS_CAR_DEAD d9_plane STOP_PLAYBACK_RECORDED_CAR d9_plane ENDIF SET_FIXED_CAMERA_POSITION 125.3001 2504.3286 17.5565 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 124.3120 2504.3611 17.7067 JUMP_CUT d9_cut_timer = TIMERA + 2700 d9_cut_flag = 6 IF NOT IS_CAR_DEAD d9_plane SET_CAR_ENGINE_ON d9_plane TRUE SET_HELI_BLADES_FULL_SPEED d9_plane ENDIF SET_CHAR_COORDINATES scplayer 412.6561 2530.9084 15.617 SET_CHAR_HEADING scplayer 136.0 d9_plane_x = 25.6646 d9_plane_y = 2504.6455 d9_plane_z = 29.1834 // PRINT des9_35 8500 1 ENDIF ENDIF //CJ runs to hide IF d9_cut_flag = 6 //plane control here IF NOT IS_CAR_DEAD d9_plane LVAR_FLOAT d9_a_float // VIEW_FLOAT_VARIABLE d9_a_float d9_a_float d9_time_passed = TIMERA - d9_cut_timer d9_time_passed += 2700 d9_a_float =# d9_time_passed d9_a_float /= 20.0 x = d9_plane_x + d9_a_float d9_a_float /= 14.0 z = d9_plane_z - d9_a_float SET_CAR_COORDINATES_NO_OFFSET d9_plane x d9_plane_y z ENDIF IF TIMERA > d9_cut_timer SET_CHAR_COORDINATES scplayer 403.0466 2522.1899 15.4843 TASK_GO_STRAIGHT_TO_COORD scplayer 415.1068 2528.6240 15.5375 PEDMOVE_RUN -2 LOAD_SCENE_IN_DIRECTION 404.7372 2524.8567 17.5671 300.0 SET_FIXED_CAMERA_POSITION 404.7372 2524.8567 17.5671 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 405.6275 2525.3010 17.6661 JUMP_CUT d9_cut_timer = TIMERA + 2500 d9_cut_flag = 8 ENDIF ENDIF //carl hiding crouched behind pillar IF d9_cut_flag = 7 IF TIMERA > d9_cut_timer d9_cut_flag = 8 IF NOT IS_CAR_DEAD d9_plane SET_CAR_COORDINATES d9_plane 380.6384 2503.9270 15.4884 IF NOT IS_CAR_DEAD d9_enemy_car[0] AND NOT IS_CAR_DEAD d9_enemy_car[1] AND NOT IS_CAR_DEAD d9_enemy_car[2] IF NOT IS_CHAR_DEAD d9_enemy[0] AND NOT IS_CHAR_DEAD d9_enemy[1] AND NOT IS_CHAR_DEAD d9_enemy[2] SET_CAR_COORDINATES d9_enemy_car[0] 331.2219 2504.9424 15.4766 SET_CAR_COORDINATES d9_enemy_car[1] 338.2219 2507.9424 15.4766 SET_CAR_COORDINATES d9_enemy_car[2] 325.2219 2501.9424 15.4766 TASK_CAR_DRIVE_TO_COORD d9_enemy[0] d9_enemy_car[0] 430.2219 2504.9424 15.4766 13.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_DRIVE_TO_COORD d9_enemy[1] d9_enemy_car[1] 430.2219 2507.2803 15.4766 13.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_DRIVE_TO_COORD d9_enemy[2] d9_enemy_car[2] 430.2219 2501.0107 15.4766 13.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF SET_CAR_HEADING d9_plane 270.0 SET_CAR_FORWARD_SPEED d9_plane 7.0 SET_HELI_BLADES_FULL_SPEED d9_plane SET_FIXED_CAMERA_POSITION 413.1315 2533.2974 15.8551 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 412.5080 2532.5188 15.9255 JUMP_CUT d9_hatch_angle = 0.0 d9_cut_timer = TIMERA + 4000 ENDIF ENDIF ENDIF IF d9_cut_flag = 8 IF TIMERA > d9_cut_timer DO_FADE 800 FADE_OUT IF NOT IS_CAR_DEAD d9_plane STOP_PLAYBACK_RECORDED_CAR d9_plane d9_cut_flag = 9 ENDIF ENDIF ENDIF IF d9_cut_flag = 9 IF NOT GET_FADING_STATUS IF NOT IS_CAR_DEAD d9_plane STOP_PLAYBACK_RECORDED_CAR d9_plane ENDIF IF NOT IS_CAR_DEAD d9_enemy_car[0] AND NOT IS_CAR_DEAD d9_enemy_car[1] AND NOT IS_CAR_DEAD d9_enemy_car[2] STOP_PLAYBACK_RECORDED_CAR d9_enemy_car[0] STOP_PLAYBACK_RECORDED_CAR d9_enemy_car[1] STOP_PLAYBACK_RECORDED_CAR d9_enemy_car[2] ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED ANDROM MARK_MODEL_AS_NO_LONGER_NEEDED BOBCAT MARK_MODEL_AS_NO_LONGER_NEEDED WMOMIB MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED BMYMIB REMOVE_CAR_RECORDING 450 REMOVE_CAR_RECORDING 168 REMOVE_CAR_RECORDING 452 REMOVE_CAR_RECORDING 453 DELETE_CAR d9_enemy_car[0] DELETE_CAR d9_enemy_car[1] DELETE_CAR d9_enemy_car[2] // DELETE_CAR d9_plane DELETE_CHAR d9_enemy[0] DELETE_CHAR d9_enemy[1] DELETE_CHAR d9_enemy[2] DELETE_CHAR d9_enemy[3] DELETE_CHAR d9_enemy[4] DELETE_CHAR d9_enemy[5] DELETE_CHAR d9_enemy[6] DELETE_CHAR d9_enemy[7] IF NOT IS_CAR_DEAD d9_plane SET_CAR_COORDINATES d9_plane 394.6384 2497.9270 15.4884 SET_CAR_HEADING d9_plane 90.0 ENDIF LVAR_INT d9_skip_flag d9_cut_flag = 0 IF d9_skip_flag > 0 d9_flag = 22 ELSE d9_flag = 21 ENDIF ENDIF ENDIF IF NOT GET_FADING_STATUS IF d9_skip_flag = 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED DO_FADE 600 FADE_OUT d9_skip_flag = 1 ENDIF ENDIF ENDIF IF d9_skip_flag = 1 IF NOT GET_FADING_STATUS audio_flag = 5 d9_skip_flag = 2 d9_cut_flag = 9 ENDIF ENDIF RETURN // ############################################################################################################################################ // ################################################ INTRO CUTSCENE ########################################################################## // ############################################################################################################################################ cutscene_1b: LOAD_CUTSCENE Desert9 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE IF d9_skip_flag = 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED d9_skip_flag = 2 ENDIF ENDIF SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF d9_flag = 22 RETURN // ############################################################################################################################################ // ################################################ INTRO CUTSCENE ########################################################################## // ############################################################################################################################################ cutscene_1c: IF d9_cut_flag = 0 IF IS_CHECKPOINT_RESUMING TRUE d9_skip_flag = 1 ENDIF SET_CHAR_AREA_VISIBLE scplayer 0 REQUEST_MODEL ANDROM REQUEST_MODEL BOBCAT REQUEST_MODEL WMOMIB REQUEST_MODEL MICRO_UZI REQUEST_MODEL BMYMIB REQUEST_MODEL PCJ600 REQUEST_MODEL SATCHEL REQUEST_MODEL BOMB REQUEST_ANIMATION AIRPORT REQUEST_ANIMATION CARRY REQUEST_CAR_RECORDING 149 REQUEST_CAR_RECORDING 135 REQUEST_CAR_RECORDING 134 d9_cut_flag = 1 ENDIF IF d9_cut_flag = 1 IF HAS_MODEL_LOADED BOBCAT AND HAS_MODEL_LOADED WMOMIB AND HAS_MODEL_LOADED MICRO_UZI AND HAS_MODEL_LOADED BMYMIB AND HAS_MODEL_LOADED PCJ600 AND HAS_CAR_RECORDING_BEEN_LOADED 134 IF HAS_MODEL_LOADED SATCHEL AND HAS_MODEL_LOADED BOMB AND HAS_ANIMATION_LOADED AIRPORT AND HAS_ANIMATION_LOADED CARRY AND HAS_CAR_RECORDING_BEEN_LOADED 149 AND HAS_CAR_RECORDING_BEEN_LOADED 135 d9_cut_flag = 2 ENDIF ENDIF ENDIF IF d9_cut_flag = 2 // setup cars to chase plane down runway CREATE_CAR BOBCAT 366.7640 2512.6550 15.5677 d9_enemy_car[0] CREATE_CAR BOBCAT 367.1340 2490.1738 15.4884 d9_enemy_car[1] CREATE_CAR BOBCAT 357.6567 2509.5942 15.5221 d9_enemy_car[2] CHANGE_CAR_COLOUR d9_enemy_car[0] CARCOLOUR_BLACK CARCOLOUR_BLACK CHANGE_CAR_COLOUR d9_enemy_car[1] CARCOLOUR_BLACK CARCOLOUR_BLACK CHANGE_CAR_COLOUR d9_enemy_car[2] CARCOLOUR_BLACK CARCOLOUR_BLACK CREATE_CHAR PEDTYPE_MISSION1 BMYMIB 359.7588 2511.4741 15.5501 d9_enemy[0] CREATE_CHAR PEDTYPE_MISSION1 WMOMIB 369.7111 2505.8376 15.4921 d9_enemy[1] CREATE_CHAR PEDTYPE_MISSION1 WMOMIB 363.5374 2497.6741 15.4921 d9_enemy[2] CREATE_CHAR_AS_PASSENGER d9_enemy_car[0] PEDTYPE_MISSION1 WMOMIB 0 d9_enemy[3] CREATE_CHAR_AS_PASSENGER d9_enemy_car[1] PEDTYPE_MISSION1 BMYMIB 0 d9_enemy[4] CREATE_CHAR PEDTYPE_MISSION1 WMOMIB 363.6662 2500.0938 15.4921 d9_enemy[5] // CREATE_CHAR PEDTYPE_MISSION1 BMYMIB -28.1475 2493.8069 15.2513 d9_enemy[6] // CREATE_CHAR PEDTYPE_MISSION1 BMYMIB -28.1475 2494.8069 15.2513 d9_enemy[7] IF NOT IS_CAR_DEAD d9_plane SET_CAR_HEADING d9_plane 90.0 ENDIF CONTROL_MOVABLE_VEHICLE_PART d9_plane 1.0 GIVE_WEAPON_TO_CHAR d9_enemy[0] WEAPONTYPE_MICRO_UZI 9999 GIVE_WEAPON_TO_CHAR d9_enemy[1] WEAPONTYPE_MICRO_UZI 9999 GIVE_WEAPON_TO_CHAR d9_enemy[2] WEAPONTYPE_MICRO_UZI 9999 OPEN_CAR_DOOR d9_enemy_car[0] FRONT_LEFT_DOOR OPEN_CAR_DOOR d9_enemy_car[0] FRONT_RIGHT_DOOR CREATE_OBJECT cr_guncrate 365.0146 2500.6755 15.492 d9_crate[0] CREATE_OBJECT cr_cratestack 365.9573 2502.7632 15.4921 d9_crate[1] CREATE_OBJECT cr_cratestack 365.5524 2503.4602 15.492 d9_crate[2] CREATE_OBJECT cr_cratestack 364.5623 2503.4055 15.4921 d9_crate[3] SET_OBJECT_HEADING d9_crate[1] 245.0 CLEAR_AREA 435.2751 2527.5227 15.8710 10.0 FALSE CREATE_CAR PCJ600 435.2751 2527.5227 15.8710 d9_players_bike SET_CAR_HEADING d9_players_bike 90.0 SET_CAN_BURST_CAR_TYRES d9_players_bike FALSE SET_CHAR_HEADING d9_enemy[0] 340.9066 SET_CHAR_HEADING d9_enemy[1] 309.4871 SET_CHAR_HEADING d9_enemy[2] 175.4073 TASK_PLAY_ANIM d9_enemy[0] IDLE_ARMED PED 4.0 TRUE 0 0 0 0 TASK_PLAY_ANIM d9_enemy[1] IDLE_ARMED PED 4.0 TRUE 0 0 0 0 TASK_PLAY_ANIM d9_enemy[2] IDLE_ARMED PED 4.0 TRUE 0 0 0 0 // SET_CHAR_COORDINATES scplayer 426.6481 2535.7126 15.5538 SET_CHAR_COORDINATES scplayer 412.6561 2530.9084 15.617 SET_CHAR_HEADING scplayer 136.0 MARK_MODEL_AS_NO_LONGER_NEEDED PCJ600 MARK_MODEL_AS_NO_LONGER_NEEDED BOBCAT MARK_MODEL_AS_NO_LONGER_NEEDED WMOMIB MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 IF NOT IS_CAR_DEAD d9_plane START_PLAYBACK_RECORDED_CAR d9_plane 149 SET_PLAYBACK_SPEED d9_plane 0.0 ENDIF SET_FIXED_CAMERA_POSITION 350.8692 2488.9319 17.5906 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 351.4443 2489.7468 17.520 JUMP_CUT LOAD_SCENE 367.1340 2490.1738 15.4884 d9_cut_flag = 3 d9_cut_timer = TIMERA + 1000 ENDIF IF d9_cut_flag = 3 IF d9_cut_timer > TIMERA IF NOT IS_CHAR_DEAD d9_enemy[5] AND DOES_OBJECT_EXIST d9_crate[3] OPEN_SEQUENCE_TASK d9_seq TASK_COMPLEX_PICKUP_OBJECT -1 d9_crate[3] TASK_GO_STRAIGHT_TO_COORD -1 360.2195 2500.0229 15.4921 PEDMOVE_WALK -2 CLOSE_SEQUENCE_TASK d9_seq PERFORM_SEQUENCE_TASK d9_enemy[5] d9_seq CLEAR_SEQUENCE_TASK d9_seq ENDIF DO_FADE 1000 FADE_IN IF d9_skip_flag = 0 d9_cut_timer = TIMERA + 4000 ELSE d9_cut_timer = 0 ENDIF d9_cut_flag = 4 CLEAR_PRINTS PRINT DES9_3 4000 1 ENDIF ENDIF IF d9_cut_flag = 4 IF TIMERA > d9_cut_timer SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 438.1800 2526.1931 17.1554 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 437.2076 2526.3389 16.9735 JUMP_CUT SET_CHAR_COORDINATES scplayer 426.8950 2529.4785 15.6483 IF NOT IS_CAR_DEAD d9_players_bike TASK_ENTER_CAR_AS_DRIVER scplayer d9_players_bike -2 ENDIF PRINT DES9_4 3000 1 IF d9_skip_flag = 0 d9_cut_timer = TIMERA + 3000 ELSE d9_cut_timer = 0 ENDIF d9_cut_flag = 5 ENDIF ENDIF IF d9_cut_flag = 5 IF TIMERA > d9_cut_timer CLEAR_PRINTS PRINT DES9_44 4000 1 IF NOT IS_CAR_DEAD d9_players_bike IF NOT IS_CHAR_IN_ANY_CAR scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer WARP_CHAR_INTO_CAR scplayer d9_players_bike ENDIF ENDIF // Attach invisible barrel object on planes ramp. The coords for this will be used to check if // player has driven up the ramp. CREATE_OBJECT kb_barrel 0.0 0.0 0.0 d9_locator SET_OBJECT_COLLISION d9_locator FALSE SET_OBJECT_VISIBLE d9_locator FALSE IF NOT IS_CAR_DEAD d9_plane ATTACH_OBJECT_TO_CAR d9_locator d9_plane 0.0 -15.223 -1.489 0.0 0.0 0.0 ENDIF LVAR_INT d9_ammo GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_REMOTE_SATCHEL_CHARGE d9_ammo IF d9_ammo = 0 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_REMOTE_SATCHEL_CHARGE 1 ENDIF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT d9_cut_timer = TIMERA + 3000 d9_cut_flag = 6 ENDIF ENDIF IF d9_cut_flag = 6 IF TIMERA > d9_cut_timer SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON CLEAR_PRINTS PRINT DES9_A4 4000 1 d9_flag = 2 ENDIF ENDIF RETURN // ############################################################################################################################################ // ################################################ PLANE RACE ############################################################################## // ############################################################################################################################################ plane_race: GET_CHAR_COORDINATES scplayer player_X player_y player_z IF d9_plane_leave_flag > 0 IF NOT IS_CAR_DEAD d9_plane GET_CAR_COORDINATES d9_plane d9_plane_x d9_plane_y d9_plane_z REMOVE_BLIP d9_plane_blip ADD_BLIP_FOR_COORD d9_plane_x d9_plane_y d9_plane_z d9_plane_blip CHANGE_BLIP_DISPLAY d9_plane_blip BLIP_ONLY IF d9_plane_x < -83.0 d9_flag = 8 d9_cut_flag = 0 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD d9_players_bike GET_CAR_COORDINATES d9_players_bike d9_x d9_y d9_z d9_air_res = 2499.7 - d9_y ABS d9_air_res d9_air_res /= 10.0 IF d9_air_res > 2.0 d9_air_res = 2.0 ENDIF IF d9_air_res < 0.2 d9_air_res = 0.2 ENDIF SET_VEHICLE_AIR_RESISTANCE_MULTIPLIER d9_players_bike d9_air_res d9_air_res -= 2.0 ABS d9_air_res d9_air_res *= 50.0 LVAR_FLOAT d9_float1 d9_float2 d9_float3 d9_float1 = d9_plane_x - d9_x ABS d9_float1 d9_float2 = d9_float1 / 100.0 IF d9_float2 > 1.0 d9_float2 = 1.0 ENDIF d9_float1 = 1.0 - d9_float2 d9_float1 *= d9_air_res d9_int1 =# d9_float1 SHAKE_CAM d9_int1 d9_int1 -= 256 ABS d9_int1 ENDIF IF d9_plane_leave_flag = 0 IF NOT IS_CAR_DEAD d9_players_bike IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 412.6561 2530.9084 15.617 5.0 5.0 5.0 FALSE d9_plane_leave_time = TIMERA + 8000 d9_plane_leave_flag = 2 ENDIF ENDIF ENDIF IF d9_plane_leave_flag = 2 IF IS_CHAR_IN_ANY_CAR scplayer OR TIMERA > d9_plane_leave_time OR LOCATE_CHAR_ANY_MEANS_3D scplayer 354.8564 2500.1516 18.3701 50.0 50.0 50.0 FALSE IF NOT IS_CAR_DEAD d9_plane d9_plane_leave_time = TIMERA + 1350 d9_plane_leave_flag = 3 IF NOT IS_CHAR_DEAD d9_enemy[0] TASK_KILL_CHAR_ON_FOOT d9_enemy[0] scplayer ENDIF IF NOT IS_CHAR_DEAD d9_enemy[1] TASK_TOGGLE_DUCK d9_enemy[1] TRUE TASK_KILL_CHAR_ON_FOOT d9_enemy[1] scplayer ENDIF IF NOT IS_CHAR_DEAD d9_enemy[2] TASK_KILL_CHAR_ON_FOOT d9_enemy[2] scplayer ENDIF IF NOT IS_CHAR_DEAD d9_enemy[5] CLEAR_CHAR_TASKS_IMMEDIATELY d9_enemy[5] ENDIF ENDIF ENDIF ENDIF IF d9_plane_leave_flag = 3 IF TIMERA > d9_plane_leave_time SET_PLAYBACK_SPEED d9_plane 1.0 d9_plane_leave_flag = 4 ENDIF ENDIF IF d9_plane_leave_flag = 4 LVAR_FLOAT d9_speed GET_OBJECT_COORDINATES d9_locator x y z GET_CHAR_COORDINATES scplayer d9_x d9_y d9_z GET_DISTANCE_BETWEEN_COORDS_2D x y d9_x d9_y d9_distance d9_speed = 200.0 / d9_distance//INCREASE NUMBER TO MAKE CAR GO FASTER IF d9_speed > 1.0 d9_speed = 1.0 ENDIF IF d9_speed < 0.3 d9_speed = 0.3 ENDIF IF NOT IS_CAR_DEAD d9_plane SET_PLAYBACK_SPEED d9_plane d9_speed ENDIF LVAR_INT dropping_stuff IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer x y z 15.0 15.0 5.0 FALSE IF dropping_stuff < 2 GOSUB drop_shit_from_plane dropping_stuff = 1 ENDIF ELSE IF dropping_stuff = 1 dropping_stuff = 2 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_OBJECT_3D scplayer d9_locator 4.0 1.0 1.0 FALSE IF NOT IS_CAR_DEAD d9_players_bike IF IS_CHAR_SITTING_IN_ANY_CAR scplayer SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE scplayer KNOCKOFFBIKE_NEVER REMOVE_BLIP d9_plane_blip SET_PLAYER_CONTROL player1 OFF d9_cut_flag = 20 d9_flag = 3 SET_RADIO_CHANNEL RS_OFF ENDIF ENDIF ENDIF ENDIF RETURN // ***************************************************************************************** // *********** Cut of plane taking off, player dodges barrel, instructions **************** // ***************************************************************************************** cutscene_2: d9_enemy_stops_rolling_barrels = 1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED IF d9_cut_flag < 11 d9_cut_timer = 0 d9_cut_flag = 11 ENDIF IF d9_cut_flag > 19 AND d9_cut_flag < 23 d9_cut_timer = 0 d9_cut_flag = 24 d9_skip_to_end = 1 ENDIF ENDIF IF d9_cut_flag = 20 IF NOT IS_CAR_DEAD d9_plane SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF IF IS_PLAYBACK_GOING_ON_FOR_CAR d9_plane STOP_PLAYBACK_RECORDED_CAR d9_plane ENDIF START_PLAYBACK_RECORDED_CAR d9_plane 135 IF NOT IS_CAR_DEAD d9_players_bike FREEZE_CAR_POSITION d9_players_bike TRUE SET_CAR_VISIBLE d9_players_bike FALSE ENDIF SET_CHAR_VISIBLE scplayer FALSE DELETE_CAR d9_enemy_car[0] DELETE_CAR d9_enemy_car[1] DELETE_CAR d9_enemy_car[2] MARK_MODEL_AS_NO_LONGER_NEEDED BOBCAT REQUEST_ANIMATION AIRPORT d9_cut_flag = 21 ENDIF ENDIF IF d9_cut_flag = 21 CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 66.4737 2494.1182 17.9816 -43.8545 2492.9021 19.8651 5500 TRUE CAMERA_SET_VECTOR_TRACK 67.4593 2494.2866 17.9942 -44.3218 2493.1838 20.7031 5500 TRUE d9_cut_flag = 22 d9_cut_timer = TIMERA + 4500 ENDIF IF d9_cut_flag = 22 IF TIMERA > d9_cut_timer DO_FADE 1000 FADE_OUT // CLEAR_CHAR_TASKS_IMMEDIATELY scplayer d9_cut_flag = 23 ENDIF ENDIF IF d9_cut_flag = 23 IF NOT GET_FADING_STATUS d9_cut_flag = 0 ENDIF ENDIF IF d9_cut_flag = 24 DO_FADE 1000 FADE_OUT // CLEAR_CHAR_TASKS_IMMEDIATELY scplayer d9_cut_flag = 25 ENDIF IF d9_cut_flag = 25 IF NOT GET_FADING_STATUS d9_cut_flag = 0 d9_skip_to_end = 1 ENDIF ENDIF IF d9_cut_flag = 0 IF NOT IS_CAR_DEAD d9_players_bike FREEZE_CAR_POSITION d9_players_bike FALSE SET_CAR_VISIBLE d9_players_bike TRUE ENDIF SET_AREA_VISIBLE 9 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_AREA_VISIBLE scplayer 9 ENDIF DELETE_CHAR d9_enemy[4] CREATE_CHAR PEDTYPE_MISSION3 WMOMIB 316.0887 983.9927 1958.1381 d9_enemy[4] SET_CHAR_HEADING d9_enemy[4] 90.0 IF NOT IS_CHAR_DEAD d9_enemy[4] SET_CHAR_AREA_VISIBLE d9_enemy[4] 9 ENDIF IF NOT IS_CHAR_DEAD d9_enemy[4] SET_CHAR_COORDINATES d9_enemy[4] 317.081 979.907 1960.108 SET_CHAR_HEADING d9_enemy[4] 90.0 ENDIF IF NOT IS_CAR_DEAD d9_players_bike SET_VEHICLE_AREA_VISIBLE d9_players_bike 9 ENDIF CREATE_OBJECT d9_runway 305.1910 1030.7520 1938.1339 d9_ground REQUEST_CAR_RECORDING 150 REQUEST_CAR_RECORDING 152 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 150 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 152 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD d9_players_bike SET_CAR_COORDINATES d9_players_bike 331.8417 1038.3140 1956.1768 IF NOT IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_INTO_CAR scplayer d9_players_bike ENDIF CLEAR_PRINTS SET_CHAR_AREA_VISIBLE scplayer 9 SET_CHAR_VISIBLE scplayer TRUE START_PLAYBACK_RECORDED_CAR d9_players_bike 150 SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_CAR d9_players_bike IF NOT IS_CHAR_IN_CAR scplayer d9_players_bike WARP_CHAR_INTO_CAR scplayer d9_players_bike ENDIF ENDIF LOAD_SCENE 311.8417 980.3140 1956.1768 REQUEST_COLLISION 331.8417 1038.3140 WAIT 800 CAMERA_RESET_NEW_SCRIPTABLES LVAR_FLOAT d9_ground_x d9_ground_y d9_ground_z SET_FIXED_CAMERA_POSITION 311.8416 980.3140 1956.1767 0.0 0.0 0.0 POINT_CAMERA_AT_CHAR scplayer FIXED JUMP_CUT LVAR_INT d9_prime_recording d9_first_barrel_time LVAR_INT d9_percent LVAR_FLOAT d9_percentF d9_first_barrel_time = TIMERA WAIT 500 d9_cut_timer = TIMERA + 2200 REQUEST_MODEL gun_para WHILE NOT HAS_MODEL_LOADED gun_para WAIT 0 ENDWHILE DO_FADE 600 FADE_IN PRINT DES9_A5 4000 1 IF d9_skip_to_end = 1 d9_cut_flag = 11 d9_cut_timer = 0 ELSE d9_cut_flag = 1 ENDIF ENDIF IF d9_cut_flag > 0 AND d9_cut_flag < 20 GOSUB drop_barrels ENDIF IF d9_barrel_set_to_drop = 0 IF TIMERA > d9_first_barrel_time d9_barrel_set_to_drop = 1 ENDIF ENDIF IF DOES_OBJECT_EXIST d9_ground GET_OBJECT_COORDINATES d9_ground d9_ground_x d9_ground_y d9_ground_z d9_ground_y += 0.05 ENDIF IF d9_cut_flag = 1 IF TIMERA > d9_cut_timer TASK_LEAVE_ANY_CAR scplayer d9_cut_flag = 2 d9_cut_timer = TIMERA + 300 ENDIF ENDIF // camera looks at bike on ramp IF d9_cut_flag = 2 IF TIMERA > d9_cut_timer IF NOT IS_CAR_DEAD d9_plane DELETE_CAR d9_plane ENDIF SET_FIXED_CAMERA_POSITION 317.7203 1027.3005 1949.0709 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 316.9413 1026.6750 1949.0266 JUMP_CUT d9_cut_timer = TIMERA + 1000 d9_cut_flag = 3 ENDIF ENDIF // set camera to pan as bike drives up ramp IF d9_cut_flag = 3 IF TIMERA > d9_cut_timer DELETE_OBJECT d9_ground CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 317.7203 1027.3005 1949.0709 317.7203 1027.3005 1949.0709 1000 TRUE CAMERA_SET_VECTOR_TRACK 316.9413 1026.6750 1949.0266 317.3408 1026.3773 1949.1305 1000 TRUE d9_cut_flag = 4 d9_cut_timer = TIMERA + 1500 ENDIF ENDIF // start playback of bike, cam pans to barrel rolling down plane IF d9_cut_flag = 4 d9_percent = d9_cut_timer - TIMERA d9_percentF =# d9_percent d9_percentF /= 2000.0 d9_percentF -= 1.0 ABS d9_percentF GET_OBJECT_COORDINATES d9_barrel[5] d9_barrel_x[0] d9_barrel_y[0] d9_barrel_z[0] IF d9_barrel_y[0] > 1020.2140 IF NOT IS_CAR_DEAD d9_players_bike START_PLAYBACK_RECORDED_CAR d9_players_bike 152 ENDIF TASK_DIVE_AND_GET_UP scplayer 1.0 0.0 1000 // PRINT_NOW DES9_22 3500 1 d9_cut_flag = 6 d9_cut_timer = TIMERA + 2000 CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 317.7203 1027.3005 1949.0709 317.7203 1027.3005 1949.0709 2000 TRUE CAMERA_SET_VECTOR_TRACK 317.3408 1026.3773 1949.1305 317.1811 1027.9913 1948.5891 2000 TRUE ENDIF d9_x = d9_barrel_x[0] - 317.5107 d9_y = d9_barrel_y[0] - 1024.8152 d9_z = d9_barrel_z[0] - 1949.3497 d9_x *= d9_percentF d9_y *= d9_percentF d9_z *= d9_percentF d9_x += 317.5107 d9_y += 1024.8152 d9_z += 1949.3497 ENDIF IF d9_cut_flag = 5 GET_OBJECT_COORDINATES d9_barrel[5] d9_barrel_x[0] d9_barrel_y[0] d9_barrel_z[0] ENDIF // player says "What the fuck...?" IF d9_cut_flag = 6 GET_OBJECT_COORDINATES d9_barrel[5] d9_barrel_x[0] d9_barrel_y[0] d9_barrel_z[0] // POINT_CAMERA_AT_POINT d9_barrel_x[0] d9_barrel_y[0] d9_barrel_z[0] JUMP_CUT IF TIMERA > d9_cut_timer d9_cut_flag = 11 //was 7 CLEAR_PRINTS ENDIF ENDIF // Thug says "Fuck you cunt" IF d9_cut_flag = 7 CAMERA_RESET_NEW_SCRIPTABLES SET_FIXED_CAMERA_POSITION 316.0625 988.6853 1957.7406 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 316.0338 987.7417 1958.0701 JUMP_CUT d9_cut_flag = 8 d9_cut_timer = TIMERA + 2000 IF NOT IS_CHAR_DEAD d9_enemy[4] SET_CHAR_COORDINATES d9_enemy[4] 315.7535 983.4348 1958.2650 SET_CHAR_HEADING d9_enemy[4] 0.0 TASK_PLAY_ANIM d9_enemy[4] FUCKU PED 4.0 FALSE 0 0 0 3000 ENDIF ENDIF // camera points at player with Satchel IF d9_cut_flag = 8 IF HAS_MODEL_LOADED gun_para IF TIMERA > d9_cut_timer CLEAR_PRINTS PRINT DES9_45 4000 1 SET_FIXED_CAMERA_POSITION 317.5727 1024.7908 1949.8541 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 317.4102 1023.8087 1949.9496 JUMP_CUT CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 317.9964 1023.4773 1949.0326 SET_CHAR_HEADING scplayer 121.0 // CREATE_OBJECT para_pack 315.6801 973.3562 1960.5784 d9_parachute IF NOT IS_CHAR_DEAD d9_enemy[4] // TASK_PICK_UP_OBJECT d9_enemy[4] d9_parachute -0.11 -0.05 0.0 PED_TORSO HOLD_ORIENTATE_BONE_FULL NULL NULL 0 GIVE_WEAPON_TO_CHAR d9_enemy[4] WEAPONTYPE_PARACHUTE 1 SET_DEATH_WEAPONS_PERSIST d9_enemy[4] TRUE //give parachute weapon to char ENDIF d9_cut_flag = 9 d9_cut_timer = TIMERA + 4000 ENDIF ELSE REQUEST_MODEL gun_para ENDIF ENDIF // camera points at guard to be killed IF d9_cut_flag = 9 IF TIMERA > d9_cut_timer SET_FIXED_CAMERA_POSITION 318.8293 975.9706 1960.7589 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 318.3584 976.8294 1960.5571 JUMP_CUT IF NOT IS_CHAR_DEAD d9_enemy[4] SET_CHAR_COORDINATES d9_enemy[4] 317.4929 981.1245 1958.8062 SET_CHAR_HEADING d9_enemy[4] 90.0 WHILE NOT HAS_ANIMATION_LOADED AIRPORT REQUEST_ANIMATION AIRPORT WAIT 0 ENDWHILE TASK_PLAY_ANIM d9_enemy[4] thrw_barl_thrw AIRPORT 4.0 FALSE 0 0 0 -1 ENDIF PRINT DES9_46 4000 1 d9_cut_flag = 10 d9_cut_timer = TIMERA + 1100 ENDIF ENDIF IF d9_cut_flag = 10 IF TIMERA > d9_cut_timer d9_barrel_set_to_drop = 2 d9_cut_flag = 11 d9_cut_timer = TIMERA + 2900 ENDIF ENDIF IF d9_cut_flag = 11 IF TIMERA > d9_cut_timer REQUEST_MODEL gun_para WHILE NOT HAS_MODEL_LOADED gun_para WAIT 0 ENDWHILE CAMERA_RESET_NEW_SCRIPTABLES CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 318.1163 1024.7913 1948.7294 ELSE SET_CHAR_COORDINATES scplayer 318.1163 1024.7913 1948.7294 ENDIF SET_CHAR_HEADING scplayer 121.0 IF NOT IS_CAR_DEAD d9_players_bike IF IS_PLAYBACK_GOING_ON_FOR_CAR d9_players_bike STOP_PLAYBACK_RECORDED_CAR d9_players_bike ENDIF DELETE_CAR d9_players_bike MARK_MODEL_AS_NO_LONGER_NEEDED PCJ600 ENDIF SET_CHAR_HEADING scplayer 225.0 IF NOT IS_CHAR_DEAD d9_enemy[4] SET_CHAR_COORDINATES d9_enemy[4] 317.4565 980.5405 1958.9347 ENDIF IF NOT IS_CAR_DEAD d9_players_bike IF IS_PLAYBACK_GOING_ON_FOR_CAR d9_players_bike STOP_PLAYBACK_RECORDED_CAR d9_players_bike ENDIF ENDIF SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DELETE_OBJECT d9_ground // PRINT DES9_25 4000 1 IF NOT IS_CAR_DEAD d9_plane DELETE_CAR d9_plane ENDIF IF IS_PLAYER_PLAYING player1 DISABLE_PLAYER_SPRINT player1 TRUE ENDIF CREATE_FX_SYSTEM cloudfast 315.2994 1028.1514 1936.4642 TRUE des_cloud_FX PLAY_FX_SYSTEM des_cloud_FX DELETE_CHAR d9_enemy[0] DELETE_CHAR d9_enemy[1] DELETE_CHAR d9_enemy[2] DELETE_CHAR d9_enemy[3] CREATE_CHAR PEDTYPE_MISSION3 WMOMIB 313.4011 1012.3696 1951.5879 d9_enemy[0] CREATE_CHAR PEDTYPE_MISSION3 BMYMIB 312.5008 1004.9619 1953.2974 d9_enemy[1] CREATE_CHAR PEDTYPE_MISSION3 WMOMIB 318.7976 988.7245 1957.0443 d9_enemy[2] CREATE_CHAR PEDTYPE_MISSION3 BMYMIB 313.1324 991.6313 1956.3735 d9_enemy[3] IF NOT IS_CAR_DEAD d9_players_bike FREEZE_CAR_POSITION d9_players_bike FALSE SET_CAR_VISIBLE d9_players_bike TRUE ENDIF SET_CHAR_VISIBLE scplayer TRUE SET_CHAR_SHOOT_RATE d9_enemy[0] 100 SET_CHAR_SHOOT_RATE d9_enemy[1] 100 SET_CHAR_SHOOT_RATE d9_enemy[2] 100 SET_CHAR_SHOOT_RATE d9_enemy[3] 100 SET_CHAR_WEAPON_SKILL d9_enemy[0] WEAPONSKILL_PRO SET_CHAR_WEAPON_SKILL d9_enemy[1] WEAPONSKILL_PRO SET_CHAR_WEAPON_SKILL d9_enemy[2] WEAPONSKILL_PRO SET_CHAR_WEAPON_SKILL d9_enemy[3] WEAPONSKILL_PRO SET_CHAR_WEAPON_SKILL d9_enemy[4] WEAPONSKILL_PRO SET_CHAR_HEADING d9_enemy[0] 288.4161 SET_CHAR_HEADING d9_enemy[1] 298.9878 SET_CHAR_HEADING d9_enemy[2] 85.3329 SET_CHAR_HEADING d9_enemy[3] 308.2083 IF NOT IS_CHAR_DEAD d9_enemy[0] SET_CHAR_AREA_VISIBLE d9_enemy[0] 9 ENDIF IF NOT IS_CHAR_DEAD d9_enemy[1] SET_CHAR_AREA_VISIBLE d9_enemy[1] 9 ENDIF IF NOT IS_CHAR_DEAD d9_enemy[2] SET_CHAR_AREA_VISIBLE d9_enemy[2] 9 ENDIF IF NOT IS_CHAR_DEAD d9_enemy[3] SET_CHAR_AREA_VISIBLE d9_enemy[3] 9 ENDIF IF NOT IS_CHAR_DEAD d9_enemy[4] SET_CHAR_COORDINATES d9_enemy[4] 317.881 979.907 1960.108 IF NOT HAS_CHAR_GOT_WEAPON d9_enemy[4] WEAPONTYPE_PARACHUTE GIVE_WEAPON_TO_CHAR d9_enemy[4] WEAPONTYPE_PARACHUTE 1 SET_DEATH_WEAPONS_PERSIST d9_enemy[4] TRUE SET_CHAR_SHOOT_RATE d9_enemy[4] 100 ENDIF ENDIF d9_flag = 4 d9_SATCHEL_planted = 0 d9_enemy_stops_rolling_barrels = 0 // CLEAR_CUTSCENE IF NOT IS_CHAR_DEAD scplayer SET_CHAR_PROOFS scplayer FALSE TRUE TRUE FALSE FALSE ENDIF LVAR_INT print_instructions print_instructions = 1 para_control_off = 1 //stops player from being able to open chute // You're trapped on the plane. // One of the crew is wearing a parachute. Aquire it, then place your satchel charge. // Once planted, trigger the satchel charge with the detonator or by jumping out the back of the plane. // Clear the plane before being engulfed in the explosive's fireball. ENDIF ENDIF RETURN /* // ***************************************************************************************** // *********** Cut of plane taking off, player dodges barrel, instructions **************** // ***************************************************************************************** cutscene_2: // LOAD_SCENE 316.0887 983.9927 1958.1381 d9_enemy_stops_rolling_barrels = 1 IF d9_cut_flag = 0 IF NOT IS_CAR_DEAD d9_plane d9_first_barrel_time = TIMERA + 6500 SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF IF IS_PLAYBACK_GOING_ON_FOR_CAR d9_plane STOP_PLAYBACK_RECORDED_CAR d9_plane ENDIF START_PLAYBACK_RECORDED_CAR d9_plane 135 IF NOT IS_CAR_DEAD d9_players_bike FREEZE_CAR_POSITION d9_players_bike TRUE SET_CAR_VISIBLE d9_players_bike FALSE ENDIF SET_CHAR_VISIBLE scplayer FALSE DELETE_CAR d9_enemy_car[0] DELETE_CAR d9_enemy_car[1] DELETE_CAR d9_enemy_car[2] MARK_MODEL_AS_NO_LONGER_NEEDED BOBCAT REQUEST_ANIMATION AIRPORT d9_cut_flag = 1 ENDIF ENDIF IF d9_cut_flag = 1 CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 66.4737 2494.1182 17.9816 -43.8545 2492.9021 19.8651 5500 TRUE CAMERA_SET_VECTOR_TRACK 67.4593 2494.2866 17.9942 -44.3218 2493.1838 20.7031 5500 TRUE d9_cut_flag = 2 d9_cut_timer = TIMERA + 4500 ENDIF IF d9_cut_flag = 2 IF TIMERA > d9_cut_timer DO_FADE 1000 FADE_OUT // CLEAR_CHAR_TASKS_IMMEDIATELY scplayer d9_cut_flag = 3 ENDIF ENDIF IF d9_cut_flag = 3 IF NOT GET_FADING_STATUS d9_cut_flag = 4 ENDIF ENDIF IF d9_cut_flag = 4 IF NOT IS_CAR_DEAD d9_players_bike FREEZE_CAR_POSITION d9_players_bike FALSE SET_CAR_VISIBLE d9_players_bike TRUE ENDIF SET_AREA_VISIBLE 9 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_VISIBLE scplayer TRUE SET_CHAR_AREA_VISIBLE scplayer 9 ENDIF DELETE_CHAR d9_enemy[4] CREATE_CHAR PEDTYPE_MISSION3 WMOMIB 316.0887 983.9927 1958.1381 d9_enemy[4] SET_CHAR_HEADING d9_enemy[4] 90.0 IF NOT IS_CHAR_DEAD d9_enemy[4] SET_CHAR_AREA_VISIBLE d9_enemy[4] 9 ENDIF IF NOT IS_CHAR_DEAD d9_enemy[4] SET_CHAR_COORDINATES d9_enemy[4] 317.081 979.907 1960.108 SET_CHAR_HEADING d9_enemy[4] 90.0 ENDIF IF NOT IS_CAR_DEAD d9_players_bike SET_VEHICLE_AREA_VISIBLE d9_players_bike 9 ENDIF REQUEST_CAR_RECORDING 150 REQUEST_CAR_RECORDING 152 IF NOT IS_CAR_DEAD d9_players_bike SET_CAR_COORDINATES d9_players_bike 331.8417 1038.3140 1956.1768 IF NOT IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_INTO_CAR scplayer d9_players_bike ENDIF CLEAR_PRINTS SET_VEHICLE_AREA_VISIBLE d9_players_bike 9 SET_CHAR_AREA_VISIBLE scplayer 9 SET_CHAR_VISIBLE scplayer TRUE ENDIF SET_FIXED_CAMERA_POSITION 320.1115 1035.3733 1948.1537 0.0 0.0 0.0 POINT_CAMERA_AT_CHAR scplayer FIXED JUMP_CUT d9_cut_timer = TIMERA + 1500 d9_cut_flag = 5 ENDIF IF d9_cut_flag = 5 IF TIMERA > d9_cut_timer d9_cut_flag = 6 ENDIF ENDIF IF d9_cut_flag = 6 IF HAS_CAR_RECORDING_BEEN_LOADED 150 AND HAS_CAR_RECORDING_BEEN_LOADED 152 // Set bike to top of ramp. IF NOT IS_CAR_DEAD d9_players_bike START_PLAYBACK_RECORDED_CAR d9_players_bike 150 SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_CAR d9_players_bike ENDIF CAMERA_RESET_NEW_SCRIPTABLES LVAR_FLOAT d9_ground_x d9_ground_y d9_ground_z LVAR_INT d9_prime_recording d9_first_barrel_time LVAR_INT d9_percent LVAR_FLOAT d9_percentF d9_cut_flag = 7 ENDIF ENDIF IF d9_cut_flag = 7 REQUEST_MODEL gun_para d9_cut_timer = TIMERA + 2200 DO_FADE 600 FADE_IN d9_cut_flag = 8 ENDIF IF d9_cut_flag = 8 IF TIMERA > d9_cut_timer TASK_LEAVE_ANY_CAR scplayer d9_cut_flag = 9 d9_cut_timer = TIMERA + 300 ENDIF ENDIF // Your trapped on the plane. Locate the guard wearing a parachute then destroy the plane with your satchel charge. // The satchel charge will destroy the plane in seconds. Plant it to the rear of the plane to maximise your escape time. IF d9_cut_flag > 0 AND d9_cut_flag < 20 GOSUB drop_barrels ENDIF IF d9_barrel_set_to_drop = 0 IF TIMERA > d9_first_barrel_time d9_barrel_set_to_drop = 1 // d9_drop_a_barrel = TIMERA + 10000 ENDIF ENDIF //317.7203 1027.3005 1949.0709 317.3408 1026.3773 1949.1305 //317.7203 1027.3005 1949.0709 317.1811 1027.9913 1948.5891 // camera looks at bike on ramp IF d9_cut_flag = 9 IF TIMERA > d9_cut_timer IF NOT IS_CAR_DEAD d9_plane DELETE_CAR d9_plane ENDIF SET_FIXED_CAMERA_POSITION 317.7203 1027.3005 1949.0709 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 316.9413 1026.6750 1949.0266 JUMP_CUT d9_cut_timer = TIMERA + 1000 d9_cut_flag = 10 ENDIF ENDIF // set camera to pan as bike drives up ramp IF d9_cut_flag = 10 IF TIMERA > d9_cut_timer CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 317.7203 1027.3005 1949.0709 317.7203 1027.3005 1949.0709 1000 TRUE CAMERA_SET_VECTOR_TRACK 316.9413 1026.6750 1949.0266 317.3408 1026.3773 1949.1305 1000 TRUE d9_cut_flag = 11 d9_cut_timer = TIMERA + 1500 ENDIF ENDIF // start playback of bike, cam pans to barrel rolling down plane IF d9_cut_flag = 11 d9_percent = d9_cut_timer - TIMERA d9_percentF =# d9_percent d9_percentF /= 2000.0 d9_percentF -= 1.0 ABS d9_percentF GET_OBJECT_COORDINATES d9_barrel[5] d9_barrel_x[0] d9_barrel_y[0] d9_barrel_z[0] IF d9_barrel_y[0] > 1020.2140 IF NOT IS_CAR_DEAD d9_players_bike START_PLAYBACK_RECORDED_CAR d9_players_bike 152 ENDIF TASK_DIVE_AND_GET_UP scplayer 1.0 0.0 1000 PRINT_NOW DES9_22 3500 1 d9_cut_flag = 12 d9_cut_timer = TIMERA + 2000 CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 317.7203 1027.3005 1949.0709 317.7203 1027.3005 1949.0709 2000 TRUE CAMERA_SET_VECTOR_TRACK 317.3408 1026.3773 1949.1305 317.1811 1027.9913 1948.5891 2000 TRUE ENDIF d9_x = d9_barrel_x[0] - 317.5107 d9_y = d9_barrel_y[0] - 1024.8152 d9_z = d9_barrel_z[0] - 1949.3497 d9_x *= d9_percentF d9_y *= d9_percentF d9_z *= d9_percentF d9_x += 317.5107 d9_y += 1024.8152 d9_z += 1949.3497 // POINT_CAMERA_AT_POINT d9_x d9_y d9_z JUMP_CUT ENDIF // player says "What the fuck...?" IF d9_cut_flag = 12 GET_OBJECT_COORDINATES d9_barrel[5] d9_barrel_x[0] d9_barrel_y[0] d9_barrel_z[0] // POINT_CAMERA_AT_POINT d9_barrel_x[0] d9_barrel_y[0] d9_barrel_z[0] JUMP_CUT IF TIMERA > d9_cut_timer d9_cut_flag = 13 CLEAR_PRINTS // PRINT DES9_23 2000 1 IF NOT IS_CHAR_DEAD d9_enemy[4] TASK_SAY d9_enemy[4] CONTEXT_GLOBAL_GENERIC_INSULT_MALE ENDIF ENDIF ENDIF IF d9_cut_flag = 13 IF TIMERA > d9_cut_timer CAMERA_RESET_NEW_SCRIPTABLES CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 318.1163 1024.7913 1948.7294 ELSE SET_CHAR_COORDINATES scplayer 318.1163 1024.7913 1948.7294 ENDIF SET_CHAR_HEADING scplayer 121.0 IF NOT IS_CAR_DEAD d9_players_bike IF IS_PLAYBACK_GOING_ON_FOR_CAR d9_players_bike STOP_PLAYBACK_RECORDED_CAR d9_players_bike ENDIF DELETE_CAR d9_players_bike MARK_MODEL_AS_NO_LONGER_NEEDED PCJ600 ENDIF SET_CHAR_HEADING scplayer 225.0 IF NOT IS_CHAR_DEAD d9_enemy[4] SET_CHAR_COORDINATES d9_enemy[4] 317.4565 980.5405 1958.9347 ENDIF IF NOT IS_CAR_DEAD d9_players_bike IF IS_PLAYBACK_GOING_ON_FOR_CAR d9_players_bike STOP_PLAYBACK_RECORDED_CAR d9_players_bike ENDIF ENDIF SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT PRINT DES9_25 4000 1 IF NOT IS_CAR_DEAD d9_plane DELETE_CAR d9_plane ENDIF IF IS_PLAYER_PLAYING player1 DISABLE_PLAYER_SPRINT player1 TRUE ENDIF CREATE_FX_SYSTEM cloudfast 315.2994 1028.1514 1936.4642 TRUE des_cloud_FX PLAY_FX_SYSTEM des_cloud_FX DELETE_CHAR d9_enemy[0] DELETE_CHAR d9_enemy[1] DELETE_CHAR d9_enemy[2] DELETE_CHAR d9_enemy[3] CREATE_CHAR PEDTYPE_MISSION3 WMOMIB 313.4011 1012.3696 1951.5879 d9_enemy[0] CREATE_CHAR PEDTYPE_MISSION3 BMYMIB 312.5008 1004.9619 1953.2974 d9_enemy[1] CREATE_CHAR PEDTYPE_MISSION3 WMOMIB 318.7976 988.7245 1957.0443 d9_enemy[2] CREATE_CHAR PEDTYPE_MISSION3 BMYMIB 313.1324 991.6313 1956.3735 d9_enemy[3] IF NOT IS_CAR_DEAD d9_players_bike FREEZE_CAR_POSITION d9_players_bike FALSE SET_CAR_VISIBLE d9_players_bike TRUE ENDIF SET_CHAR_VISIBLE scplayer TRUE SET_CHAR_HEADING d9_enemy[0] 288.4161 SET_CHAR_HEADING d9_enemy[1] 298.9878 SET_CHAR_HEADING d9_enemy[2] 85.3329 SET_CHAR_HEADING d9_enemy[3] 308.2083 IF NOT IS_CHAR_DEAD d9_enemy[0] SET_CHAR_AREA_VISIBLE d9_enemy[0] 9 ENDIF IF NOT IS_CHAR_DEAD d9_enemy[1] SET_CHAR_AREA_VISIBLE d9_enemy[1] 9 ENDIF IF NOT IS_CHAR_DEAD d9_enemy[2] SET_CHAR_AREA_VISIBLE d9_enemy[2] 9 ENDIF IF NOT IS_CHAR_DEAD d9_enemy[3] SET_CHAR_AREA_VISIBLE d9_enemy[3] 9 ENDIF IF NOT IS_CHAR_DEAD d9_enemy[4] SET_CHAR_COORDINATES d9_enemy[4] 317.881 979.907 1960.108 IF NOT HAS_CHAR_GOT_WEAPON d9_enemy[4] WEAPONTYPE_PARACHUTE GIVE_WEAPON_TO_CHAR d9_enemy[4] WEAPONTYPE_PARACHUTE 1 ENDIF ENDIF d9_flag = 4 d9_SATCHEL_planted = 0 d9_enemy_stops_rolling_barrels = 0 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_PROOFS scplayer FALSE TRUE TRUE FALSE FALSE ENDIF ENDIF ENDIF RETURN */ scene_2: LVAR_INT d9_para_blip d9_player_has_chute des_cloud_FX LVAR_FLOAT d9_pickup_x d9_pickup_y d9_pickup_z // LVAR_INT d9_countdown LVAR_INT d9_SATCHEL_planted // VIEW_INTEGER_VARIABLE d9_SATCHEL_planted d9_SATCHEL_planted GET_CHAR_COORDINATES scplayer player_x player_y player_z IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_1 IF NOT IS_CAR_DEAD d9_players_bike START_RECORDING_CAR d9_players_bike 152 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_2 IF NOT IS_CAR_DEAD d9_players_bike IF IS_RECORDING_GOING_ON_FOR_CAR d9_players_bike STOP_RECORDING_CAR d9_players_bike ENDIF ENDIF ENDIF // IF IS_CHAR_SHOOTING_IN_AREA scplayer 308.4034 1065.3812 1942.6986 325.2043 949.9332 1980.3237 // // ENDIF LVAR_INT building_hit IF d9_SATCHEL_planted = 0 IF IS_LAST_BUILDING_MODEL_SHOT_BY_PLAYER Player1 cargo_test OR IS_LAST_BUILDING_MODEL_SHOT_BY_PLAYER Player1 cargo_stuff OR IS_LAST_BUILDING_MODEL_SHOT_BY_PLAYER Player1 cargo_store CLEAR_LAST_BUILDING_MODEL_SHOT_BY_PLAYER player1 ADD_EXPLOSION 316.0 1000.0 1954.6 EXPLOSION_HELI ENDIF IF IS_EXPLOSION_IN_AREA -1 325.0714 967.9350 1971.8379 310.7184 1047.5745 1939.6830 //was explosion_grenade d9_SATCHEL_planted = 1 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE ENDIF d9_float1 = 972.5745 d9_int1 = 0 WHILE d9_float1 <= 1050.5745 d9_float2 = d9_float1 - 5.0 IF IS_EXPLOSION_IN_AREA -1 325.0714 d9_float1 1971.8379 310.7184 d9_float2 1939.6830 //was explosion grenadde d9_area_explode[d9_int1] = 1 ENDIF d9_int1 ++ d9_float1 += 5.0 ENDWHILE ENDIF ENDIF IF d9_SATCHEL_planted = 1 GOSUB d9_boom ENDIF IF d9_player_has_chute = 0 IF IS_CHAR_DEAD d9_enemy[4] PRINT DES9_27 4000 1 d9_player_has_chute = 1 ENDIF ENDIF IF d9_player_has_chute = 1 IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_PARACHUTE SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PARACHUTE CLEAR_PRINTS IF d9_SATCHEL_planted = 0 PRINT DES9_A1 4000 1 // ~s~You have the parachute. PRINT DES9_A2 4000 1 // ~s~Place a satchel charge on the plane then get out the back. ELSE PRINT DES9_26 4000 1 // ~s~You have the parachute, now get the hell out of there! ENDIF d9_player_has_chute = 2 ENDIF ENDIF IF detonated = 0 IF player_z < 1942.27 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE ENDIF LVAR_INT detonated detonated = 1 USE_DETONATOR ENDIF ENDIF IF d9_player_has_chute = 2 IF player_z < 1940.27 // OR player_y > 1039.38 IF d9_SATCHEL_planted = 1 IF NOT IS_CHAR_DEAD scplayer // DELETE_OBJECT d9_parachute SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PARACHUTE PRINT_HELP_FOREVER DESHID2 // ~s~Press ~m~~widget_attack~ when falling to open the parachute. KILL_FX_SYSTEM des_cloud_FX d9_flag = 9 d9_cut_flag = 0 player_fall_safe = 1 ENDIF ELSE CLEAR_PRINTS PRINT DES9_39 4000 1 // ~r~You were supposed to destroy the plane! PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" GOSUB mission_cleanup_desert9 SET_CHAR_COORDINATES scplayer 177.9967 1099.6215 700.0 SET_AREA_VISIBLE 0 GOTO game_end ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD d9_enemy[4] GET_CHAR_COORDINATES d9_enemy[4] d9_x d9_y d9_z IF d9_z < 1940.0 AND NOT IS_CHAR_IN_AIR scplayer CLEAR_PRINTS PRINT DES9_29 5000 1 PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" REMOVE_PICKUP para_pickup WAIT 1000 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 408.6996 2538.2720 15.6057 SET_CHAR_HEADING scplayer 139.0 GOSUB mission_cleanup_desert9 WAIT 1500 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO game_end ENDIF ENDIF IF player_z < 1938.0 AND NOT IS_CHAR_DEAD scplayer CLEAR_PRINTS IF d9_player_has_chute < 2 // PRINT DES9_30 5000 1 // GOSUB mission_desert9_failed DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 SET_CHAR_AREA_VISIBLE scplayer 0 LOAD_SCENE 125.1739 1074.0673 12.0 REQUEST_MODEL ADMIRAL REQUEST_MODEL WFYRI REQUEST_ANIMATION PARACHUTE WHILE NOT HAS_MODEL_LOADED ADMIRAL OR NOT HAS_MODEL_LOADED WFYRI OR NOT HAS_ANIMATION_LOADED PARACHUTE WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION 125.1739 1074.0673 12.8138 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 124.5910 1073.2697 12.9688 JUMP_CUT SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 122.3556 1069.8918 99.6832 LVAR_INT d9_acar d9_achar CREATE_CAR ADMIRAL 119.3556 1069.8918 13.6650 d9_acar CREATE_CHAR_AS_PASSENGER d9_acar PEDTYPE_CIVMALE WFYRI 0 d9_achar MARK_MODEL_AS_NO_LONGER_NEEDED WFYRI MARK_MODEL_AS_NO_LONGER_NEEDED ADMIRAL MARK_MODEL_AS_NO_LONGER_NEEDED SATCHEL MARK_MODEL_AS_NO_LONGER_NEEDED BOMB SET_CAR_HEADING d9_acar 180.0 SET_CHAR_COORDINATES scplayer 119.30 1070.47 189.3266 SET_CHAR_VELOCITY scplayer 0.0 0.0 0.0 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer 119.30 1070.47 80.3266 SET_CHAR_VELOCITY scplayer 0.0 0.0 0.0 LVAR_INT d9_dead_now LVAR_FLOAT d9_float WHILE NOT IS_CHAR_DEAD scplayer GET_CHAR_HEIGHT_ABOVE_GROUND scplayer d9_float IF d9_float < 4.8 AND d9_dead_now = 0 d9_dead_now = 1 TASK_DIE_NAMED_ANIM scplayer FALL_skydive_die PARACHUTE 1000.0 0 IF NOT IS_CAR_DEAD d9_acar POP_CAR_DOOR d9_acar FRONT_LEFT_DOOR TRUE POP_CAR_DOOR d9_acar REAR_LEFT_DOOR TRUE POP_CAR_DOOR d9_acar FRONT_RIGHT_DOOR TRUE BURST_CAR_TYRE d9_acar FRONT_LEFT_WHEEL BURST_CAR_TYRE d9_acar FRONT_RIGHT_WHEEL BURST_CAR_TYRE d9_acar REAR_LEFT_WHEEL DAMAGE_CAR_PANEL d9_acar WINDSCREEN_PANEL DAMAGE_CAR_PANEL d9_acar FRONT_LEFT_PANEL DAMAGE_CAR_PANEL d9_acar REAR_BUMPER DAMAGE_CAR_PANEL d9_acar REAR_BUMPER APPLY_FORCE_TO_CAR d9_acar 0.0 0.0 -0.15 0.0 0.0 0.0 IF NOT IS_CHAR_DEAD d9_achar CLEAR_CHAR_TASKS d9_achar TASK_LEAVE_CAR_AND_FLEE d9_achar d9_acar 119.3556 1069.8918 13.6650 ENDIF ENDIF ENDIF WAIT 0 ENDWHILE REMOVE_ANIMATION PARACHUTE ENDIF ENDIF IF player_y > 1033.0 SHAKE_CAM 40 ELSE SHAKE_CAM 10 ENDIF GOSUB drop_barrels RETURN cutscene_3: //CLEAR_ONSCREEN_TIMER d9_countdown SWITCH_WIDESCREEN ON //SET_PLAYER_CONTROL player1 OFF //SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED LVAR_INT d9_jumped para_control_off = 1 d9_cut3_loop: IF d9_jumped = 0 SET_AREA_VISIBLE 0 IF NOT IS_CAR_DEAD d9_plane DELETE_CAR d9_plane ENDIF // SWITCH_WIDESCREEN ON // SET_PLAYER_CONTROL player1 OFF CREATE_CAR ANDROM 316.2120 1003.4950 1957.5293 d9_plane START_PLAYBACK_RECORDED_CAR d9_plane 134 SET_CAR_HEADING d9_plane 180.0 ATTACH_CAMERA_TO_CHAR scplayer 0.0 2.0 -2.0 0.0 0.0 0.0 0.0 JUMP_CUT d9_cut_timer = TIMERA + 4000 d9_jumped = 1 ENDIF IF d9_jumped = 1 IF TIMERA > d9_cut_timer // SET_PLAYER_CONTROL player1 ON para_control_off = 0 SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT CHECKPOINT_SAVE 1 RETURN ENDIF ENDIF WAIT 0 GOTO d9_cut3_loop RETURN parachuting: SET_AREA_VISIBLE 0 d9_parachute_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_desert9_passed ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_T // para_freefall_Vz = 0.0 ENDIF // //IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Y // para_control_off = 0 //ENDIF // IF player_landed = 1 // RETURN // ENDIF GOTO d9_parachute_loop RETURN // player dies on plane cutscene_4: IF d9_cut_flag = 0 LVAR_INT d9_track_plane CREATE_CAR ANDROM 339.9034 2499.8049 15.4884 d9_track_plane START_PLAYBACK_RECORDED_CAR d9_track_plane 134 SET_PLAYBACK_SPEED d9_track_plane 1.0 d9_cut_timer = TIMERA + 1000 d9_cut_flag = 1 ENDIF IF d9_cut_flag = 1 IF TIMERA > d9_cut_timer // PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" CLEAR_PRINTS PRINT DES9_42 5000 1 SET_CHAR_VISIBLE scplayer FALSE SET_AREA_VISIBLE 0 CREATE_CAR ANDROM 339.9034 2499.8049 15.4884 d9_plane SET_CAR_PROOFS d9_PLANE TRUE TRUE TRUE TRUE TRUE START_PLAYBACK_RECORDED_CAR d9_plane 134 SET_CAR_HEALTH d9_plane 350 IF NOT IS_CAR_DEAD d9_track_plane SET_PLAYBACK_SPEED d9_track_plane 0.5 ATTACH_CAMERA_TO_VEHICLE_LOOK_AT_VEHICLE d9_track_plane 15.0 15.0 10.0 d9_plane 15.0 JUMP_CUT SET_CAR_VISIBLE d9_track_plane FALSE ENDIF // CLEAR_ONSCREEN_TIMER d9_countdown SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF make_explosions = 1 d9_cut_flag = 3 d9_cut_timer = TIMERA + 5000 ENDIF ENDIF IF make_explosions = 1 IF TIMERA > new_explosion_time IF NOT IS_CAR_DEAD d9_plane GET_CAR_COORDINATES d9_plane x y z IF explosion_count < 6 ADD_EXPLOSION x y z EXPLOSION_HELI ELSE ADD_EXPLOSION_NO_SOUND x y z EXPLOSION_HELI ENDIF explosion_count ++ GENERATE_RANDOM_INT_IN_RANGE 100 250 new_explosion_time new_explosion_time += TIMERA ENDIF ENDIF ENDIF IF d9_cut_flag = 3 IF TIMERA > d9_cut_timer d9_cut_flag = 4 DO_FADE 1000 FADE_OUT d9_cut_timer = TIMERA + 1000 ENDIF ENDIF IF d9_cut_flag = 4 IF NOT GET_FADING_STATUS FORCE_DEATH_RESTART SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT GOTO game_over // IF TIMERA > d9_cut_timer // DO_FADE 800 FADE_IN // SET_PLAYER_CONTROL player1 ON // SWITCH_WIDESCREEN OFF // SET_CAMERA_BEHIND_PLAYER // RESTORE_CAMERA_JUMPCUT ENDIF ENDIF //SET_PLAYER_CONTROL player1 OFF RETURN // player fails to make it on to plane in time cutscene_5: IF d9_cut_flag = 0 IF NOT IS_CAR_DEAD d9_plane // SET_PLAYBACK_SPEED d9_plane 0.0 SET_FIXED_CAMERA_POSITION -158.5012 2492.1609 31.0353 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -157.5606 2492.4451 31.2209 JUMP_CUT SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF SET_PLAYBACK_SPEED d9_plane 1.0 IF NOT IS_CAR_DEAD d9_enemy_car[0] IF NOT IS_CHAR_IN_CAR scplayer d9_enemy_car[0] DELETE_CAR d9_enemy_car[0] ENDIF ENDIF IF NOT IS_CAR_DEAD d9_track_plane DELETE_CAR d9_track_plane ENDIF IF NOT IS_CAR_DEAD d9_enemy_car[1] IF NOT IS_CHAR_IN_CAR scplayer d9_enemy_car[1] DELETE_CAR d9_enemy_car[1] ENDIF ENDIF IF NOT IS_CAR_DEAD d9_enemy_car[2] IF NOT IS_CHAR_IN_CAR scplayer d9_enemy_car[2] DELETE_CAR d9_enemy_car[2] ENDIF ENDIF d9_i = 0 WHILE d9_i < 8 DELETE_CHAR d9_enemy[d9_i] d9_i ++ ENDWHILE d9_i = 0 WHILE d9_i < 15 DELETE_OBJECT d9_box[d9_i] d9_i ++ ENDWHILE d9_i = 0 WHILE d9_i < 5 DELETE_OBJECT d9_crate[d9_i] d9_i ++ ENDWHILE d9_cut_flag = 1 d9_cut_timer = TIMERA + 3000 ENDIF ENDIF IF d9_cut_flag = 1 IF TIMERA > d9_cut_timer PRINT DES9_32 4000 1 PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF GOTO game_over ENDIF ENDIF RETURN // cut of player freefalling from plane exploding in background cutscene_6: VAR_INT cut_timerr start_timerr LVAR_FLOAT move_x move_y move_z cam_start_x cam_start_y cam_start_z cam_end_x cam_end_y cam_end_z percent_done LVAR_FLOAT point_start_x point_start_y point_start_z point_end_x point_end_y point_end_z cut_timerr = TIMERA - start_timerr // VIEW_INTEGER_VARIABLE cut_timerr cut_timerr IF d9_cut_flag = 0 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE ENDIF start_timerr = TIMERA cut_timerr = TIMERA - start_timerr // LVAR_INT d9_track_plane GET_CHAR_VELOCITY scplayer x y z CREATE_CAR ANDROM 339.9034 2499.8049 15.4884 d9_track_plane START_PLAYBACK_RECORDED_CAR d9_track_plane 134 SET_PLAYBACK_SPEED d9_track_plane 0.5 SET_CHAR_COORDINATES scplayer 177.9967 1099.6215 1977.4908 SET_CHAR_HEADING scplayer 180.0 SET_CHAR_VELOCITY scplayer x -30.0 z SET_CAR_VISIBLE d9_track_plane TRUE CONTROL_MOVABLE_VEHICLE_PART d9_track_plane 1.0 SET_AREA_VISIBLE 0 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PARACHUTE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF // FREEZE_CHAR_POSITION scplayer TRUE // SET_PLAYBACK_SPEED d9_track_plane 0.0 // ATTACH_CAMERA_TO_CHAR scplayer 0.0 2.0 -0.5 0.0 0.0 0.0 0.0 JUMP_CUT d9_cut_timer = TIMERA + 5300 point_start_x = 175.5399 point_start_y = 1097.8403 point_start_z = 1978.9117 point_end_x = 185.4931 point_end_y = 1028.0302 point_end_z = 1763.1604 cam_start_x = 175.0676 cam_start_y = 1097.0249 cam_start_z = 1979.2462 cam_end_x = 185.4931 cam_end_y = 1028.0302 cam_end_z = 1763.1604 // CAMERA_SET_VECTOR_TRACK 175.2589 1100.9034 1976.9786 188.1609 1026.7855 1848.6123 4911 FALSE d9_cut_flag = 999 LVAR_INT make_explosions new_explosion_time show_mission_passed explosion_count make_explosions = 1 ENDIF IF make_explosions = 1 IF TIMERA > new_explosion_time IF NOT IS_CAR_DEAD d9_track_plane GET_CAR_COORDINATES d9_track_plane x y z IF explosion_count < 6 ADD_EXPLOSION x y z EXPLOSION_HELI ELSE ADD_EXPLOSION_NO_SOUND x y z EXPLOSION_HELI ENDIF explosion_count ++ GENERATE_RANDOM_INT_IN_RANGE 100 250 new_explosion_time new_explosion_time += TIMERA ENDIF ENDIF ENDIF IF NOT d9_player_killed = 1 IF show_mission_passed = 0 IF cut_timerr > 4070 SET_CHAR_COORDINATES scplayer 177.9967 1099.6215 700.0 GOSUB mission_desert9_passed show_mission_passed = 1 ENDIF ENDIF ENDIF IF cut_timerr > 8070 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF GOTO game_over ENDIF IF d9_cut_flag = 999 // CAMERA_RESET_NEW_SCRIPTABLES // CAMERA_PERSIST_TRACK TRUE // CAMERA_PERSIST_POS TRUE // move_X = cam_end_x - cam_start_x // move_y = cam_end_y - cam_start_y // move_z = cam_end_z - cam_start_z // percent_done =# cut_timerr percent_done /= 8070.0 // // move_x *= percent_done // move_y *= percent_done // move_z *= percent_done // // move_x += cam_start_x // move_y += cam_start_y // move_z += cam_start_z GET_CHAR_COORDINATES scplayer x y z move_x = x move_z = percent_done * 7.5 move_z += z move_z -= 2.5 move_y = y - 5.0 // SET_FIXED_CAMERA_POSITION move_x move_y move_z 0.0 0.0 0.0 move_X = point_end_x - point_start_x move_y = point_end_y - point_start_y move_z = point_end_z - point_start_z percent_done =# cut_timerr percent_done /= 8070.0 move_x *= percent_done move_y *= percent_done move_z *= percent_done move_x += point_start_x move_y += point_start_y move_z += point_start_z // CAMERA_SET_VECTOR_MOVE move_x move_Y move_Z move_x move_Y point_end_Z 8070 TRUE // CAMERA_SET_VECTOR_TRACK 560.3911 -1234.2836 17.4052 557.8772 -1234.4658 16.1925 2000 TRUE ATTACH_CAMERA_TO_CHAR scplayer 0.0 5.0 1.5 0.0 -5.0 -1.5 0.0 JUMP_CUT // POINT_CAMERA_AT_CHAR scplayer FIXED JUMP_CUT d9_cut_flag = 1020 ENDIF IF D9_CUT_FLAG = 1020 SET_CHAR_HEADING scplayer 180.0 ENDIF //182.9492 1090.7356 1973.7246 182.6102 1091.6763 1973.7229 IF d9_cut_flag = 40 VAR_INT d9_counting d9_int1 = TIMERA // VIEW_INTEGER_VARIABLE d9_counting d9_counting d9_cut_flag = 41 ENDIF IF NOT d9_player_killed = 1 IF d9_cut_flag = 41 d9_counting = TIMERA - d9_int1 IF TIMERA > d9_cut_timer d9_cut_flag = 42 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF GOSUB mission_desert9_passed GOTO game_over ENDIF ENDIF ENDIF IF d9_cut_flag = 1 IF TIMERA > d9_cut_timer // PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" CLEAR_PRINTS PRINT DES9_42 5000 1 SET_CHAR_VISIBLE scplayer FALSE SET_AREA_VISIBLE 0 CREATE_CAR ANDROM 339.9034 2499.8049 15.4884 d9_plane SET_CAR_PROOFS d9_PLANE TRUE TRUE TRUE TRUE TRUE START_PLAYBACK_RECORDED_CAR d9_plane 134 SET_CAR_HEALTH d9_plane 350 IF NOT IS_CAR_DEAD d9_track_plane SET_PLAYBACK_SPEED d9_track_plane 0.5 ATTACH_CAMERA_TO_VEHICLE_LOOK_AT_VEHICLE d9_track_plane 15.0 15.0 10.0 d9_plane 15.0 JUMP_CUT SET_CAR_VISIBLE d9_track_plane FALSE ENDIF // CLEAR_ONSCREEN_TIMER d9_countdown SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF ADD_EXPLOSION 179.0872 1127.1095 1959.8048 EXPLOSION_HELI d9_cut_flag = 10 d9_cut_timer = TIMERA + 80 ENDIF ENDIF IF d9_cut_flag = 10 ADD_EXPLOSION 178.0018 1120.3190 1963.4852 EXPLOSION_HELI d9_cut_timer = TIMERA + 80 d9_cut_flag = 11 ENDIF IF d9_cut_flag = 11 ADD_EXPLOSION 177.9817 1114.1306 1967.3561 EXPLOSION_HELI d9_cut_timer = TIMERA + 80 d9_cut_flag = 12 ENDIF IF d9_cut_flag = 12 ADD_EXPLOSION 179.3860 1109.9189 1972.5035 EXPLOSION_HELI d9_cut_timer = TIMERA + 3760 d9_cut_flag = 3 ENDIF IF d9_cut_flag = 3 IF TIMERA > d9_cut_timer d9_cut_flag = 4 d9_cut_timer = TIMERA + 6000 WRITE_DEBUG one ENDIF ENDIF IF d9_cut_flag = 4 IF TIMERA > d9_cut_timer FORCE_DEATH_RESTART GOTO game_over ENDIF ENDIF //SET_PLAYER_CONTROL player1 OFF RETURN fail_cam: SET_FIXED_CAMERA_POSITION -189.0987 2493.9573 66.7341 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -188.1982 2494.1050 66.3252 JUMP_CUT SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON IF NOT IS_CAR_DEAD d9_plane // POINT_CAMERA_AT_CAR d9_plane FIXED JUMP_CUT ENDIF d9_timer = TIMERA + 4000 fail_cam_loop: WAIT 0 IF d9_fail_flag = 0 IF TIMERA > d9_timer DO_FADE 1000 FADE_OUT d9_timer = TIMERA + 1000 d9_fail_flag = 1 ENDIF ENDIF IF d9_fail_flag = 1 IF TIMERA > d9_timer SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 0 FADE_IN PRINT des9_32 5000 1 GOSUB mission_desert9_failed GOTO game_over ENDIF ENDIF GOTO fail_cam_loop RETURN drop_shit_from_plane: LVAR_INT d9_drop_boxes d9_drop_box_time[15] ds9_int d9_next_box d9_box[15] d9_drop_object_type[15] ds9_i d9_dropcar LVAR_FLOAT d9_drop_x d9_drop_z d9_plane_speed d9_object_vel d9_y_vel LVAR_INT d9_blip[15] IF d9_drop_boxes = 0 d9_drop_box_time[0] = 2000 d9_drop_box_time[1] = 2300 d9_drop_box_time[2] = 2600 d9_drop_box_time[3] = 4000 d9_drop_box_time[4] = 4300 d9_drop_box_time[5] = 4600 d9_drop_box_time[6] = 6000 d9_drop_box_time[7] = 6300 d9_drop_box_time[8] = 6600 d9_drop_box_time[9] = 8000 d9_drop_box_time[10] = 8300 d9_drop_box_time[11] = 8600 d9_drop_box_time[12] = 10000 d9_drop_box_time[13] = 10300 d9_drop_box_time[14] = 10600 d9_drop_object_type[0] = 0 d9_drop_object_type[1] = 1 d9_drop_object_type[2] = 0 d9_drop_object_type[3] = 1 d9_drop_object_type[4] = 0 d9_drop_object_type[5] = 1 d9_drop_object_type[6] = 0 d9_drop_object_type[7] = 1 d9_drop_object_type[8] = 0 d9_drop_object_type[9] = 0 d9_drop_object_type[10] = 1 d9_drop_object_type[11] = 0 d9_drop_object_type[12] = 0 d9_drop_object_type[13] = 1 d9_drop_object_type[14] = 0 ds9_i = 0 WHILE ds9_i < 15 GENERATE_RANDOM_INT_IN_RANGE -500 500 ds9_int d9_drop_box_time[ds9_i] += TIMERA d9_drop_box_time[ds9_i] += ds9_int // GENERATE_RANDOM_INT_IN_RANGE -150 150 ds9_int // d9_drop_box_time[ds9_i] += ds9_int ds9_i ++ d9_drop_box_time[ds9_i] += TIMERA d9_drop_box_time[ds9_i] += ds9_int // GENERATE_RANDOM_INT_IN_RANGE -150 150 ds9_int // d9_drop_box_time[ds9_i] += ds9_int ds9_i ++ d9_drop_box_time[ds9_i] += TIMERA d9_drop_box_time[ds9_i] += ds9_int // GENERATE_RANDOM_INT_IN_RANGE -150 150 ds9_int // d9_drop_box_time[ds9_i] += ds9_int ds9_i ++ ENDWHILE d9_drop_boxes = 1 ENDIF IF d9_drop_boxes = 1 IF d9_next_box < 15 IF TIMERA > d9_drop_box_time[d9_next_box] LVAR_INT d9_int d9_int = 0 WHILE d9_int < 15 IF DOES_OBJECT_EXIST d9_box[d9_int] IF NOT IS_OBJECT_ON_SCREEN d9_box[d9_int] GET_OBJECT_COORDINATES d9_box[d9_int] x y z IF player_x < x DELETE_OBJECT d9_box[d9_int] ENDIF ENDIF ENDIF d9_int ++ ENDWHILE IF NOT IS_CAR_DEAD d9_plane GET_CAR_SPEED d9_plane d9_plane_speed ENDIF d9_drop_x = d9_plane_x + 18.538 // 16.938 d9_drop_z = 15.61 // d9_plane_z - 0.904 d9_object_vel = d9_plane_speed - 18.0 d9_object_vel *= -1.0 IF d9_drop_object_type[d9_next_box] = 1 GENERATE_RANDOM_FLOAT_IN_RANGE -10.0 10.0 d9_y_vel CREATE_OBJECT kb_barrel d9_drop_x d9_plane_y d9_drop_z d9_box[d9_next_box] SET_OBJECT_HEADING d9_box[d9_next_box] 90.0 SET_OBJECT_DYNAMIC d9_box[d9_next_box] FALSE SET_OBJECT_DYNAMIC d9_box[d9_next_box] TRUE SET_OBJECT_VELOCITY d9_box[d9_next_box] d9_object_vel d9_y_vel 0.0 // SET_OBJECT_VELOCITY d9_box[d9_next_box] d9_object_vel d9_y_vel 0.0 SET_OBJECT_ROTATION d9_box[d9_next_box] 0.0 0.0 0.0 d9_rot_vel = d9_object_vel * 2.0 ADD_TO_OBJECT_ROTATION_VELOCITY d9_box[d9_next_box] 0.0 d9_rot_vel 0.0 ENDIF IF d9_drop_object_type[d9_next_box] = 2 CREATE_CAR BOBCAT d9_drop_x d9_plane_y d9_drop_z d9_dropcar SET_CAR_HEADING d9_dropcar 270.0 SET_CAR_FORWARD_SPEED d9_dropcar d9_object_vel SET_CAR_ROTATION_VELOCITY d9_dropcar 0.0 23.0 0.0 ENDIF d9_next_box++ ENDIF ENDIF ENDIF RETURN drop_barrels: IF d9_drop_barrel = 0 d9_drop_barrel = 1 d9_barrel_timer = TIMERA + 1000 LVAR_FLOAT barrel_posX[4] barrel_posY[4] barrel_posZ[4] barrel_Y_offset barrel_Z_offset d9_barrel_x[20] d9_barrel_y[20] d9_barrel_z[20] LVAR_INT barrel_drop_time[20] barrel_time_offset[20] barrel_posX[0] = 316.465 barrel_posY[0] = 981.694 barrel_posZ[0] = 1958.96 barrel_posX[1] = 315.248 barrel_posY[1] = 981.694 barrel_posZ[1] = 1958.96 barrel_posX[2] = 316.465 barrel_posY[2] = 981.909 barrel_posZ[2] = 1959.92 barrel_posX[3] = 315.248 barrel_posY[3] = 981.909 barrel_posZ[3] = 1959.92 barrel_Y_offset = -0.996 barrel_Z_offset = 0.232 barrel_drop_time[0] = 3 barrel_drop_time[1] = 4 barrel_drop_time[2] = 4 barrel_drop_time[3] = 5 barrel_drop_time[4] = 6 barrel_drop_time[5] = 1 barrel_drop_time[6] = 3 barrel_drop_time[7] = 3 barrel_drop_time[8] = 4 barrel_drop_time[9] = 5 barrel_drop_time[10] = 2 barrel_drop_time[11] = 2 barrel_drop_time[12] = 6 barrel_drop_time[13] = 6 barrel_drop_time[14] = 7 barrel_drop_time[15] = 6 barrel_drop_time[16] = 6 barrel_drop_time[17] = 7 barrel_drop_time[18] = 7 barrel_drop_time[19] = 8 barrel_time_offset[0] = 0 barrel_time_offset[1] = 0 barrel_time_offset[2] = 300 barrel_time_offset[3] = 0 barrel_time_offset[4] = 0 barrel_time_offset[5] = 0 barrel_time_offset[6] = 0 barrel_time_offset[7] = 0 barrel_time_offset[8] = 0 barrel_time_offset[9] = 0 barrel_time_offset[10] = 0 barrel_time_offset[11] = 0 barrel_time_offset[12] = 300 barrel_time_offset[13] = 0 barrel_time_offset[14] = 300 barrel_time_offset[15] = 0 barrel_time_offset[16] = 300 barrel_time_offset[17] = 0 barrel_time_offset[18] = 300 barrel_time_offset[19] = 0 ENDIF IF d9_drop_barrel = 1 LVAR_INT barrel_rack barrel_id barrel_blip[20] d9_i barrel_move_flag[20] d9_barrel_set_to_drop d9_drop_a_barrel d9_this_drop_time d9_this_barrel_drop_time LVAR_INT d9_enemy_stops_rolling_barrels LVAR_FLOAT this_barrel enemy_x enemy_y enemy_z barrel_id = 0 barrel_rack = 0 WHILE barrel_rack < 4 this_barrel = 0.0 WHILE this_barrel < 5.0 d9_barrel_x[barrel_id] = barrel_posX[barrel_rack] d9_barrel_y[barrel_id] = this_barrel * barrel_Y_offset d9_barrel_y[barrel_id] += barrel_posY[barrel_rack] d9_barrel_z[barrel_id] = this_barrel * barrel_Z_offset d9_barrel_z[barrel_id] += barrel_posZ[barrel_rack] CREATE_OBJECT kb_barrel d9_barrel_x[barrel_id] d9_barrel_y[barrel_id] d9_barrel_z[barrel_id] d9_barrel[barrel_id] // ADD_BLIP_FOR_OBJECT d9_barrel[barrel_id] barrel_blip[barrel_id] d9_barrel_start_roll_time = TIMERA SET_OBJECT_ROTATION d9_barrel[barrel_id] 0.0 13.0 90.0 SET_OBJECT_DYNAMIC d9_barrel[barrel_id] FALSE SET_OBJECT_DYNAMIC d9_barrel[barrel_id] TRUE // SET_OBJECT_VELOCITY d9_barrel[barrel_id] 0.0 15.0 0.0 // SET_OBJECT_ROTATION d9_barrel 90.0 0.0 0.0 // SET_OBJECT_ROTATION_VELOCITY d9_barrel[barrel_id] -25.0 0.0 0.0 // SET_OBJECT_COLLISION d9_barrel[barrel_id] FALSE FREEZE_OBJECT_POSITION d9_barrel[barrel_id] TRUE barrel_id ++ this_barrel += 1.0 ENDWHILE barrel_rack ++ ENDWHILE d9_drop_barrel = 2 // SET_OBJECT_ROTATION d9_barrel 0.0 0.0 90.0 ENDIF IF d9_drop_barrel = 2 d9_i = 0 GET_CHAR_COORDINATES scplayer player_x player_y player_z IF d9_enemy_stops_rolling_barrels = 0 IF player_y <= 990.0 d9_enemy_stops_rolling_barrels = 1 IF NOT IS_CHAR_DEAD d9_enemy[4] SET_CHAR_RELATIONSHIP d9_enemy[4] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 ENDIF ENDIF ENDIF IF d9_enemy_attacks[0] = 0 IF player_y < 1021.0 IF NOT IS_CHAR_DEAD d9_enemy[0] SET_CHAR_RELATIONSHIP d9_enemy[0] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 d9_enemy_attacks[0] = 1 ENDIF ENDIF ENDIF IF d9_enemy_attacks[1] = 0 IF player_y < 1011.0 IF NOT IS_CHAR_DEAD d9_enemy[1] SET_CHAR_RELATIONSHIP d9_enemy[1] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 d9_enemy_attacks[1] = 1 ENDIF ENDIF ENDIF IF d9_enemy_attacks[2] = 0 IF player_y < 1000.0 IF NOT IS_CHAR_DEAD d9_enemy[2] SET_CHAR_RELATIONSHIP d9_enemy[2] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 d9_enemy_attacks[2] = 1 ENDIF ENDIF ENDIF IF d9_enemy_attacks[3] = 0 IF player_y < 1000.0 IF NOT IS_CHAR_DEAD d9_enemy[3] SET_CHAR_RELATIONSHIP d9_enemy[3] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 d9_enemy_attacks[3] = 1 ENDIF ENDIF ENDIF IF d9_enemy_stops_rolling_barrels = 0 IF player_y < 1021.0 OR d9_barrel_set_to_drop = 1 IF TIMERA > d9_drop_a_barrel d9_drop_a_barrel = TIMERA + 6500 d9_this_drop_time = TIMERA d9_barrel_set_to_drop ++ IF NOT IS_CHAR_DEAD d9_enemy[4] IF HAS_ANIMATION_LOADED AIRPORT TASK_PLAY_ANIM d9_enemy[4] thrw_barl_thrw AIRPORT 4.0 FALSE 0 0 0 3000 ELSE REQUEST_ANIMATION AIRPORT ENDIF ENDIF ENDIF ENDIF ENDIF WHILE d9_i < 20 IF barrel_drop_time[d9_i] <= d9_barrel_set_to_drop IF barrel_move_flag[d9_i] = 0 d9_this_barrel_drop_time = d9_this_drop_time + barrel_time_offset[d9_i] IF TIMERA > d9_this_barrel_drop_time barrel_move_flag[d9_i] = 1 IF d9_i = 5 SET_OBJECT_COORDINATES d9_barrel[5] 315.1264 986.6496 1957.9255 barrel_move_flag[d9_i] = 6 ENDIF ENDIF ENDIF IF barrel_move_flag[d9_i] = 1 IF d9_i < 10 barrel_move_flag[d9_i] = 2 ELSE barrel_move_flag[d9_i] = 3 ENDIF SET_OBJECT_COLLISION d9_barrel[d9_i] FALSE ENDIF IF barrel_move_flag[d9_i] = 2 IF SLIDE_OBJECT d9_barrel[d9_i] d9_barrel_x[d9_i] 981.691 1959.418 0.0 0.183 0.0412 FALSE barrel_move_flag[d9_i] = 4 ENDIF ENDIF IF barrel_move_flag[d9_i] = 3 IF SLIDE_OBJECT d9_barrel[d9_i] d9_barrel_x[d9_i] 981.909 1960.339 0.0 0.183 0.0412 FALSE barrel_move_flag[d9_i] = 5 ENDIF ENDIF IF barrel_move_flag[d9_i] = 4 IF SLIDE_OBJECT d9_barrel[d9_i] d9_barrel_x[d9_i] 984.242 1958.532 0.0 0.287 0.1 FALSE barrel_move_flag[d9_i] = 5 ENDIF ENDIF IF barrel_move_flag[d9_i] = 5 IF SLIDE_OBJECT d9_barrel[d9_i] d9_barrel_x[d9_i] 984.242 1958.532 0.0 0.21 0.162 FALSE barrel_move_flag[d9_i] = 6 ENDIF ENDIF IF barrel_move_flag[d9_i] = 6 IF SLIDE_OBJECT d9_barrel[d9_i] d9_barrel_x[d9_i] 1027.961 1948.424 0.0 0.244 0.0564 FALSE barrel_move_flag[d9_i] = 7 ENDIF ENDIF IF barrel_move_flag[d9_i] = 7 IF SLIDE_OBJECT d9_barrel[d9_i] d9_barrel_x[d9_i] 1039.4939 1942.6927 0.0 0.432 0.2145 FALSE barrel_move_flag[d9_i] = 8 ENDIF ENDIF IF barrel_move_flag[d9_i] = 8 IF SLIDE_OBJECT d9_barrel[d9_i] d9_barrel_x[d9_i] 1086.9092 1908.6315 0.0 0.882 0.6645 FALSE barrel_move_flag[d9_i] = 9 ENDIF ENDIF IF barrel_move_flag[d9_i] = 9 SET_OBJECT_VISIBLE d9_barrel[d9_i] FALSE barrel_move_flag[d9_i] = 10 ENDIF IF TIMERA > d9_dive_time IF NOT barrel_move_flag[d9_i] < 2 AND NOT barrel_move_flag[d9_i] >= 8 GET_OBJECT_COORDINATES d9_barrel[d9_i] d9_barrel_x[d9_i] d9_barrel_y2 d9_barrel_z2 d9_x = player_x - d9_barrel_x[d9_i] d9_y = player_y - d9_barrel_y2 d9_z = player_z - d9_barrel_z2 ABS d9_x IF d9_x < 0.6 IF d9_y < 0.5 AND d9_y > 0.0 IF d9_z < 0.6 // TASK_DIVE_AND_GET_UP scplayer 0.0 1.0 1000 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_FALL_AND_GET_UP scplayer 0 0 d9_dive_time = TIMERA + 1500 ENDIF ENDIF ENDIF ENDIF ENDIF LVAR_INT d9_v d9_health d9_v = 0 WHILE d9_v < 4 IF NOT IS_CHAR_DEAD d9_enemy[d9_v] IF NOT barrel_move_flag[d9_i] < 2 AND NOT barrel_move_flag[d9_i] >= 8 GET_CHAR_COORDINATES d9_enemy[d9_v] enemy_x enemy_y enemy_z GET_OBJECT_COORDINATES d9_barrel[d9_i] d9_barrel_x[d9_i] d9_barrel_y2 d9_barrel_z2 d9_x = enemy_x - d9_barrel_x[d9_i] d9_y = enemy_y - d9_barrel_y2 d9_z = enemy_z - d9_barrel_z2 ABS d9_x IF d9_x < 0.6 IF d9_y < 0.5 AND d9_y > 0.0 IF d9_z < 0.6 // TASK_DIVE_AND_GET_UP scplayer 0.0 1.0 1000 CLEAR_CHAR_TASKS_IMMEDIATELY d9_enemy[d9_v] TASK_FALL_AND_GET_UP d9_enemy[d9_v] 0 0 ENDIF ENDIF ENDIF ENDIF ENDIF d9_v ++ ENDWHILE d9_barrel_rotation[d9_i] += 20.0 SET_OBJECT_ROTATION d9_barrel[d9_i] 0.0 d9_barrel_rotation[d9_i] 90.0 // IF d9_barrel_rotation[d9_i] = 360.0 d9_barrel_rotation[d9_i] = 0.0 ENDIF ENDIF d9_i ++ ENDWHILE ENDIF RETURN d9_boom: LVAR_INT d9_trigger_time d9_area_explode_time[15] LVAR_INT d9_area_explode[15] d9_int1 = 0 WHILE d9_int1 < 15 IF d9_area_explode[d9_int1] = 1 d9_area_explode_time[d9_int1] = TIMERA + 120 d9_area_explode[d9_int1] = 2 ENDIF IF d9_area_explode[d9_int1] = 2 IF TIMERA > d9_area_explode_time[d9_int1] d9_area_explode[d9_int1] = 3 d9_int2 = d9_int1 - 1 d9_int3 = d9_int1 + 1 IF d9_int2 < 0 d9_int2 = 0 ENDIF IF d9_int3 > 14 d9_int3 = 14 ENDIF IF d9_area_explode[d9_int2] = 0 d9_area_explode[d9_int2] = 1 ENDIF IF d9_area_explode[d9_int3] = 0 d9_area_explode[d9_int3] = 1 ENDIF d9_float3 =# d9_int1 d9_float2 = 5.0 * d9_float3 d9_float1 = 967.5745 + d9_float2 d9_float2 = d9_float1 + 5.0 IF player_y < d9_float2 AND player_y > d9_float1 IF player_fall_state = 0 // IF NOT player_z < 1939.0 d9_player_killed = 1 // ENDIF ENDIF ENDIF d9_float1 += 2.25 d9_float2 = d9_float3 * -1.19 d9_float2 += 1962.3799 ADD_EXPLOSION 315.8258 d9_float1 d9_float2 EXPLOSION_HELI ENDIF ENDIF d9_int1 ++ ENDWHILE IF d9_player_killed = 1 TASK_FALL_AND_GET_UP scplayer 0 0 d9_flag = 7 d9_cut_flag = 0 CLEAR_PRINTS PRINT DES9_42 4000 1 ENDIF RETURN // ****************************************START OF CUTSCENE******************************** // fades the screen in /* LOAD_CUTSCENE desert_1 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE */ // ****************************************END OF CUTSCENE********************************** desert9_audio: LVAR_INT play_timed_audio play_timed_audio_flag audio_time_start audio_timer_flag audio_time[10] audio_to_play[10] play_timed_audio_for // play timed audio IF NOT play_timed_audio = 0 IF play_timed_audio_flag = 0 play_timed_audio_flag = 1 audio_time_start = TIMERA audio_timer_flag = 0 play_delay = audio_time_start + audio_time[audio_timer_flag] ENDIF IF play_timed_audio_flag = 1 IF TIMERA > play_delay play_audio = audio_to_play[audio_timer_flag] audio_timer_flag ++ play_timed_audio_for -- IF play_timed_audio_for = 0 play_timed_audio = 0 play_timed_audio_flag = 0 ELSE play_delay = audio_time_start + audio_time[audio_timer_flag] ENDIF ENDIF ENDIF ENDIF SWITCH audio_flag CASE 0 //first time game starts LVAR_TEXT_LABEL audio_text[40] LVAR_INT audio_sound[40] audio_slot[3] play_slot LVAR_INT play_audio next_audio play_audio_for audio_flag play_audio_delay LVAR_INT audio_for_char[40] audio_actor[7] play_audio_now LVAR_INT actor_int this_actor loaded_audio play_delay // $audio_text[0] = &CAT4_BI $audio_text[1] = &DES9_BA $audio_text[2] = &DES9_BB //Yo. audio_sound[1] = SOUND_DES9_BA audio_sound[2] = SOUND_DES9_BB audio_for_char[1] = 0 audio_for_char[2] = 0 audio_actor[1] = scplayer //1 = catalina //2 = player audio_flag = 1 // play_audio = 0 LOAD_MISSION_AUDIO 1 audio_sound[1] LOAD_MISSION_AUDIO 2 audio_sound[2] audio_slot[1] = 1 audio_slot[2] = 2 BREAK CASE 1 //waiting to play audio IF NOT play_audio = 0 IF TIMERA > play_audio_delay IF HAS_MISSION_AUDIO_FINISHED 1 AND HAS_MISSION_AUDIO_FINISHED 2 IF audio_slot[1] = play_audio play_slot = 1 ELSE IF audio_slot[2] = play_audio play_slot = 2 ELSE play_slot = 1 audio_slot[1] = play_audio CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 audio_sound[play_audio] //audio hasn't been requested yet ENDIF ENDIF IF HAS_MISSION_AUDIO_LOADED play_slot IF NOT audio_for_char[play_audio] = 0 actor_int = audio_for_char[play_audio] this_actor = audio_actor[actor_int] IF NOT IS_CHAR_DEAD this_actor ATTACH_MISSION_AUDIO_TO_CHAR play_slot this_actor IF NOT IS_CHAR_TALKING this_actor play_audio_now = 1 START_CHAR_FACIAL_TALK this_actor 15000 ELSE DISABLE_CHAR_SPEECH this_actor FALSE ENDIF ENDIF ENDIF IF audio_for_char[play_audio] = 0 play_audio_now = 1 ENDIF IF play_audio_now = 1 PLAY_MISSION_AUDIO play_slot CLEAR_PRINTS PRINT $audio_text[play_audio] 10000 1 audio_flag ++ play_audio_now = 0 play_audio ++ next_audio = play_audio // if the other slot doesn't already have the next audio loaded, then load it. IF NOT audio_sound[play_audio] = 0 IF play_slot = 1 IF NOT audio_slot[2] = play_audio LOAD_MISSION_AUDIO 2 audio_sound[play_audio] audio_slot[2] = play_audio ENDIF ELSE IF NOT audio_slot[1] = play_audio LOAD_MISSION_AUDIO 1 audio_sound[play_audio] audio_slot[1] = play_audio ENDIF ENDIF ENDIF ENDIF ELSE LOAD_MISSION_AUDIO play_slot audio_sound[play_audio] ENDIF ENDIF ENDIF ENDIF BREAK CASE 2 // check if audio has/should finish IF HAS_MISSION_AUDIO_FINISHED play_slot audio_flag++ ELSE IF DOES_CHAR_EXIST this_actor IF IS_CHAR_DEAD this_actor audio_flag++ ENDIF ENDIF ENDIF BREAK CASE 3 //clear audio CLEAR_MISSION_AUDIO play_slot audio_slot[play_slot] = 0 CLEAR_PRINTS IF NOT IS_CHAR_DEAD this_actor STOP_CHAR_FACIAL_TALK this_actor ENABLE_CHAR_SPEECH this_actor ENDIF audio_flag++ BREAK CASE 4 //request next audio play_audio ++ IF NOT audio_sound[play_audio] = 0 LOAD_MISSION_AUDIO play_slot audio_sound[play_audio] audio_slot[play_slot] = play_audio ENDIF play_audio_for -= 1 IF NOT play_audio_for > 0 play_audio = 0 ELSE play_audio = next_audio ENDIF audio_flag = 1 BREAK CASE 5 // clear all for cut scene skip audio_flag = 1 play_audio = 0 play_audio_for = 0 play_timed_audio = 0 play_timed_audio_for = 0 CLEAR_MISSION_AUDIO play_slot audio_slot[play_slot] = 0 CLEAR_PRINTS IF NOT IS_CHAR_DEAD this_actor ENABLE_CHAR_SPEECH this_actor ENDIF BREAK ENDSWITCH RETURN display_instructions: IF print_instructions = 1 IF print_instructions_flag = 0 LVAR_INT instructions_timer print_instructions_flag instructions_timer = TIMERA + 5000 PRINT DES9_A9 4000 1 print_instructions_flag = 1 CHECKPOINT_SAVE 1 ENDIF IF print_instructions_flag = 1 IF TIMERA > instructions_timer instructions_timer = TIMERA + 4500 PRINT DES9_A6 4500 1 print_instructions_flag = 2 ENDIF ENDIF ENDIF RETURN // **************************************** Mission desert9 failed *********************** mission_desert9_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" REMOVE_PICKUP para_pickup RETURN // **************************************** mission desert9 passed ************************ mission_desert9_passed: IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_DETONATOR REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_DETONATOR ENDIF flag_desert_mission_counter ++ //Used to terminate this mission loop in the main script. These varibles will be set up in the main.sc REGISTER_MISSION_PASSED ( DESERT9 ) //Used in the stats PRINT_WITH_NUMBER_BIG ( M_PASS ) 20000 5000 1 //"Mission Passed!" ADD_SCORE Player1 20000 //amount of cash reward PLAYER_MADE_PROGRESS 1 PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL PLAYER1 RETURN // ********************************** mission cleanup *********************************** mission_cleanup_desert9: DISPLAY_RADAR 3 // PATHING ON player_Fall_Safe = 0 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE ENDIF SET_PLAYER_FIRE_BUTTON Player1 TRUE IF NOT IS_CHAR_DEAD scplayer SET_CHAR_AREA_VISIBLE scplayer 0 SET_AREA_VISIBLE 0 SET_CHAR_VISIBLE scplayer TRUE ENDIF CAMERA_RESET_NEW_SCRIPTABLES IF NOT IS_CHAR_DEAD scplayer SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE FREEZE_CHAR_POSITION scplayer FALSE DISABLE_PLAYER_SPRINT player1 FALSE ENDIF SWITCH_ENTRY_EXIT Deshous TRUE MARK_MODEL_AS_NO_LONGER_NEEDED ADMIRAL MARK_MODEL_AS_NO_LONGER_NEEDED WFYRI MARK_MODEL_AS_NO_LONGER_NEEDED PCJ600 MARK_MODEL_AS_NO_LONGER_NEEDED ANDROM MARK_MODEL_AS_NO_LONGER_NEEDED BOBCAT MARK_MODEL_AS_NO_LONGER_NEEDED WMOMIB MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED BMYMIB MARK_MODEL_AS_NO_LONGER_NEEDED BOMB MARK_MODEL_AS_NO_LONGER_NEEDED SATCHEL MARK_MODEL_AS_NO_LONGER_NEEDED gun_para REMOVE_ANIMATION AIRPORT REMOVE_ANIMATION CARRY MARK_MODEL_AS_NO_LONGER_NEEDED KNIFECUR REMOVE_CAR_RECORDING 150 REMOVE_CAR_RECORDING 152 REMOVE_CAR_RECORDING 149 REMOVE_CAR_RECORDING 167 REMOVE_CAR_RECORDING 168 UNLOAD_SPECIAL_CHARACTER 1 REMOVE_CAR_RECORDING 149 d9_i = 0 WHILE d9_i < 8 IF NOT IS_CHAR_DEAD d9_enemy[d9_i] DELETE_CHAR d9_enemy[d9_i] ENDIF d9_i ++ ENDWHILE d9_i = 0 WHILE d9_i < 15 DELETE_OBJECT d9_box[d9_i] d9_i ++ ENDWHILE REMOVE_ALL_SCRIPT_FIRES IF NOT IS_CAR_DEAD d9_enemy_car[0] IF NOT IS_CHAR_IN_CAR scplayer d9_enemy_car[0] DELETE_CAR d9_enemy_car[0] ENDIF ENDIF IF NOT IS_CAR_DEAD d9_track_plane DELETE_CAR d9_track_plane ENDIF IF NOT IS_CAR_DEAD d9_enemy_car[1] IF NOT IS_CHAR_IN_CAR scplayer d9_enemy_car[1] DELETE_CAR d9_enemy_car[1] ENDIF ENDIF IF NOT IS_CAR_DEAD d9_enemy_car[2] IF NOT IS_CHAR_IN_CAR scplayer d9_enemy_car[2] DELETE_CAR d9_enemy_car[2] ENDIF ENDIF IF NOT IS_CAR_DEAD d9_plane DELETE_CAR d9_plane ENDIF IF NOT IS_CAR_DEAD d9_players_bike IF NOT IS_CHAR_IN_CAR scplayer d9_players_bike SET_VEHICLE_AREA_VISIBLE d9_players_bike 0 SET_CAR_VISIBLE d9_players_bike TRUE MARK_CAR_AS_NO_LONGER_NEEDED d9_players_bike ENDIF ENDIF IF NOT d9_flag = 9 IF NOT IS_CAR_DEAD d9_track_plane DELETE_CAR d9_track_plane ENDIF ELSE IF NOT IS_CAR_DEAD d9_track_plane MARK_CAR_AS_NO_LONGER_NEEDED d9_track_plane ENDIF ENDIF KILL_FX_SYSTEM des_cloud_FX REMOVE_BLIP d9_plane_blip IF IS_PLAYER_PLAYING player1 DISABLE_PLAYER_SPRINT player1 FALSE ENDIF SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE scplayer KNOCKOFFBIKE_DEFAULT REMOVE_BLIP d9_plane_blip REMOVE_BLIP d9_bike_blip flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start //Used to reset the mobile phone timer so it doesn't ring immediately after the mission para_control_off = 0 RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // *********************************** Mafia 4 **************************************** // **************************** Steal Jetpack from Area 51 ******************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME maf4 // Mission start stuff GOSUB mission_start_mafia4 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_mafia4_failed ENDIF GOSUB mission_cleanup_mafia4 MISSION_END // Variables for mission // **************************************** Mission Start ********************************** mission_start_mafia4: REGISTER_MISSION_GIVEN WAIT 0 { LOAD_MISSION_TEXT DSERT8 FORCE_WEATHER_NOW WEATHER_SUNNY_DESERT LVAR_INT fat_level GET_INT_STAT FAT fat_level IF fat_level > 600 LOAD_CUTSCENE D8_ALT WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE clear_area 405.2136 2525.9004 16.4918 7.5 0 START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE CLEAR_AREA 419.4488 2529.9143 15.6219 0.5 0 LOAD_SCENE 419.4488 2529.9143 15.6219 SET_CHAR_COORDINATES scplayer 419.4488 2529.9143 15.6219 SET_CHAR_HEADING scplayer 180.0 SET_CAMERA_BEHIND_PLAYER DO_FADE 1500 FADE_IN SET_PLAYER_CONTROL player1 ON GOTO mission_cleanup_mafia4 ELSE CLEAR_AREA desert2X desert2Y desert2Z 100.0 FALSE LOAD_CUTSCENE DESERT8 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF // *************************************** Variables *************************************** //outside CONST_INT NUMBEROFSEARCHLIGHTS_D8 7 LVAR_INT spotlight_d8[NUMBEROFSEARCHLIGHTS_D8] LVAR_INT spotlight_d8bulb[NUMBEROFSEARCHLIGHTS_D8] LVAR_FLOAT startx[NUMBEROFSEARCHLIGHTS_D8] LVAR_FLOAT starty[NUMBEROFSEARCHLIGHTS_D8] LVAR_FLOAT startz[NUMBEROFSEARCHLIGHTS_D8] LVAR_FLOAT endx[NUMBEROFSEARCHLIGHTS_D8] LVAR_FLOAT endy[NUMBEROFSEARCHLIGHTS_D8] LVAR_FLOAT endz[NUMBEROFSEARCHLIGHTS_D8] LVAR_INT spotlight_d8health LVAR_INT spotlight1_d8housing LVAR_INT spotlight1_d8base LVAR_INT spotlight2_d8housing LVAR_INT spotlight2_d8base LVAR_INT spotlight3_d8housing LVAR_INT spotlight3_d8base LVAR_INT spotlight4_d8housing LVAR_INT spotlight4_d8base LVAR_INT spotlight5_d8housing LVAR_INT spotlight5_d8base LVAR_INT spotlight6_d8housing LVAR_INT spotlight6_d8base LVAR_INT spotlight7_d8housing LVAR_INT spotlight7_d8base LVAR_INT truth_d8 LVAR_INT truthcar_d8 LVAR_INT bike_d8 LVAR_INT army_d8[22] LVAR_INT cutchar_d8 LVAR_INT car_d8 LVAR_INT sci_d8 LVAR_INT hours_d8 LVAR_INT minutes_d8 //fx LVAR_INT shootlightf_d8fx[NUMBEROFSEARCHLIGHTS_D8] //objects LVAR_INT jetdoor_d8 //pickups LVAR_INT jetpack_d8 LVAR_INT keycard_d8 LVAR_INT armour1_d8 LVAR_INT health1_d8 LVAR_INT armour2_d8 LVAR_INT health2_d8 LVAR_INT armour3_d8 LVAR_INT armour4_d8 //seq LVAR_INT stayshoot_d8seq LVAR_INT enemy_d8 //text LVAR_TEXT_LABEL $text_label_d8 LVAR_INT audio_label_d8 LVAR_TEXT_LABEL $input_text_d8 //dm LVAR_INT desert8empty_DM LVAR_INT desert8stealth_DM LVAR_INT desert8coward_DM LVAR_INT desert8tough_DM //flags LVAR_INT desert8_d8flag LVAR_INT outsidearea51_d8flag LVAR_INT spotlight_d8loop LVAR_INT spotlight_d8loop2 LVAR_INT spotlightshot_d8flag[NUMBEROFSEARCHLIGHTS_D8] LVAR_INT spotlightshot_d8counter LVAR_INT trackingmode_d8flag LVAR_INT skipcutscene_d8flag LVAR_INT giveweapons_d8flag LVAR_INT createsearchlights_d8flag LVAR_INT openblastdoor_d8flag LVAR_INT rightdooropen_d8flag LVAR_INT leftdooropen_d8flag LVAR_INT dooropen_d8flag LVAR_INT inside_d8flag LVAR_INT room_d8flag LVAR_INT samsite_d8flag LVAR_INT sci_d8flag LVAR_INT jetdoor_d8flag LVAR_INT helptext_d8flag LVAR_INT launchdoor_d8flag LVAR_INT truthcar_d8flag LVAR_INT searchlightclip_d8flag LVAR_INT thermalhelp_d8flag LVAR_INT warpedplayer_d8flag LVAR_INT notinarea_d8flag LVAR_INT timeofday_d8flag LVAR_INT progressaudio_d8flag LVAR_INT handlingudio_d8flag LVAR_INT spotlightstage_d8flag LVAR_INT stage1progressaudio_d8flag LVAR_INT random1_ctr LVAR_INT stage2progressaudio_d8flag LVAR_INT random2_ctr LVAR_INT audioinside_d8flag LVAR_INT scishot_d8flag //blips LVAR_INT armyblips_d8[22] LVAR_INT blastdoor_d8blip LVAR_INT jetpack_d8blip LVAR_INT keycard_d8blip LVAR_INT desert8_was_spotted // ***************************************************************************************** //give values startx[0] = 108.51 starty[0] = 1917.268 startz[0] = 17.63 endx[0] = 135.323 endy[0] = 1917.776 endz[0] = 18.71 startx[1] = 180.018 starty[1] = 1904.214 startz[1] = 17.255 endx[1] = 243.707 endy[1] = 1903.543 endz[1] = 18.639 startx[2] = 239.0798 starty[2] = 1904.08667 startz[2] = 16.899 endx[2] = 188.371 endy[2] = 1905.376 endz[2] = 16.825 startx[3] = 166.119 starty[3] = 1857.384 startz[3] = 16.764 endx[3] = 276.669 endy[3] = 1856.3389 endz[3] = 16.671 startx[4] = 191.28 //200.769 starty[4] = 1822.46 //1817.938 startz[4] = 16.83 //17.671 endx[4] = 252.37 //106.548 endy[4] = 1821.89 //1817.335 endz[4] = 17.04 //16.665 startx[5] = 138.07 //117.977 starty[5] = 1823.01 //1881.453 startz[5] = 16.88 //17.1706 endx[5] = 105.1 //115.604 endy[5] = 1867.21 //1927.817 endz[5] = 16.97 //18.237 startx[6] = 192.9 //162.281 starty[6] = 1809.56 //1917.669 startz[6] = 16.8 //18.606 endx[6] = 144.2//125.86 endy[6] = 1812.52//1814.72 endz[6] = 16.78 //reset flags desert8_d8flag = 0 outsidearea51_d8flag = 0 spotlight_d8loop = 0 spotlight_d8loop2 = 0 WHILE spotlight_d8loop < NUMBEROFSEARCHLIGHTS_D8 spotlightshot_d8flag[spotlight_d8loop] = 0 spotlight_d8loop++ ENDWHILE spotlightshot_d8counter = 0 trackingmode_d8flag = 0 desert8_d8flag = 0 outsidearea51_d8flag = 0 spotlight_d8loop = 0 spotlight_d8loop2 = 0 spotlightshot_d8counter = 0 trackingmode_d8flag = 0 skipcutscene_d8flag = 0 giveweapons_d8flag = 0 createsearchlights_d8flag = 0 openblastdoor_d8flag = 0 rightdooropen_d8flag = 0 leftdooropen_d8flag = 0 dooropen_d8flag = 0 inside_d8flag = 0 room_d8flag = 0 samsite_d8flag = 0 sci_d8flag = 0 jetdoor_d8flag = 0 helptext_d8flag = 0 launchdoor_d8flag = 0 truthcar_d8flag = 0 searchlightclip_d8flag = 0 thermalhelp_d8flag = 0 warpedplayer_d8flag = 0 notinarea_d8flag = 0 timeofday_d8flag = 0 progressaudio_d8flag = 0 handlingudio_d8flag = 0 stage1progressaudio_d8flag = 0 random1_ctr = 0 stage2progressaudio_d8flag = 0 random2_ctr = 0 spotlightstage_d8flag = 0 audioinside_d8flag = 0 scishot_d8flag = 0 desert8_was_spotted = 0 // ****************************************START OF CUTSCENE******************************** // ****************************************END OF CUTSCENE********************************** // fades the screen in //SET_PED_DENSITY_MULTIPLIER 0.0 SET_WANTED_MULTIPLIER 0.0 SET_FADING_COLOUR 0 0 0 WAIT 500 // request models REQUEST_MODEL ARMY REQUEST_MODEL M4 REQUEST_MODEL A51_SPOTBULB REQUEST_MODEL A51_SPOTHOUSING REQUEST_MODEL A51_SPOTBASE REQUEST_MODEL CAMPER LOAD_SPECIAL_CHARACTER 1 TRUTH REQUEST_CAR_RECORDING 340 REQUEST_CAR_RECORDING 341 REQUEST_MODEL KNIFECUR REQUEST_MODEL SILENCED REQUEST_MODEL SNIPER REQUEST_MODEL IRGOGGLES LOAD_MISSION_AUDIO 3 SOUND_BANK_BLACK_PROJECT LOAD_MISSION_AUDIO 2 SOUND_TRUX_AS //Go, go, go! LOAD_MISSION_AUDIO 1 SOUND_DES8_LA //Do we have a plan here? LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED ARMY OR NOT HAS_MODEL_LOADED M4 OR NOT HAS_MODEL_LOADED A51_SPOTBULB OR NOT HAS_MODEL_LOADED A51_SPOTHOUSING OR NOT HAS_MODEL_LOADED A51_SPOTBASE OR NOT HAS_MODEL_LOADED CAMPER WAIT 0 ENDWHILE WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 340 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 341 OR NOT HAS_MODEL_LOADED KNIFECUR OR NOT HAS_MODEL_LOADED SILENCED OR NOT HAS_MODEL_LOADED SNIPER WAIT 0 ENDWHILE WHILE NOT HAS_MISSION_AUDIO_LOADED 3 OR NOT HAS_MISSION_AUDIO_LOADED 2 OR NOT HAS_MODEL_LOADED IRGOGGLES OR NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE SET_DISABLE_MILITARY_ZONES TRUE LOAD_SCENE_IN_DIRECTION 49.8744 1900.2894 17.7833 99.0 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_STEAL desert8stealth_DM LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY desert8empty_DM LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_WEAK desert8coward_DM LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH desert8tough_DM SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 PEDTYPE_MISSION1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION3 PEDTYPE_MISSION1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 PEDTYPE_MISSION3 CREATE_CAR CAMPER 22.4045 1881.6096 16.6484 truthcar_d8 SET_CAR_HEADING truthcar_d8 306.3276 CHANGE_CAR_COLOUR truthcar_d8 1 1 GIVE_VEHICLE_PAINTJOB truthcar_d8 0 // Looks like this is not available for this car (assertion in engine). WDFIXME CREATE_CHAR_AS_PASSENGER truthcar_d8 PEDTYPE_SPECIAL SPECIAL01 0 truth_d8 SET_CHAR_DECISION_MAKER truth_d8 desert8empty_DM WARP_CHAR_INTO_CAR scplayer truthcar_d8 SET_FIXED_CAMERA_POSITION 49.8744 1900.2894 17.7833 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 48.9571 1899.8960 17.8444 JUMP_CUT SET_CHAR_COORDINATES scplayer 36.09 1921.04 18.93 SET_CHAR_HEADING scplayer 268.5112 LOAD_SCENE 106.9 -1923.21 18.35 CLEAR_AREA 82.775 1917.325 17.733 150.0 TRUE //set back SET_CAR_DENSITY_MULTIPLIER 0.1 SET_PED_DENSITY_MULTIPLIER 0.1 SET_RADAR_ZOOM 75 FORCE_INTERIOR_LIGHTING_FOR_PLAYER PLAYER1 TRUE SET_TIME_OF_DAY 23 30 TIMERA = 0 SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL PLAYER1 OFF SHUT_CHAR_UP scplayer TRUE DO_FADE 1000 FADE_IN CREATE_PICKUP BODYARMOUR PICKUP_ONCE 108.48 1919.29 18.56 armour1_d8 CREATE_PICKUP HEALTH PICKUP_ONCE 228.91 1858.65 14.8 health1_d8 CREATE_PICKUP BODYARMOUR PICKUP_ONCE 247.016 1859.22 14.08 armour2_d8 CREATE_PICKUP HEALTH PICKUP_ONCE 273.61 1816.32 1.02 health2_d8 CREATE_PICKUP BODYARMOUR PICKUP_ONCE 255.36 1802.007 7.47 armour3_d8 CREATE_PICKUP BODYARMOUR PICKUP_ONCE 292.46 1817.89 1.015 armour4_d8 SHOW_BLIPS_ON_ALL_LEVELS TRUE DELETE_OBJECT a51ventcover LVAR_INT beer_bottle CREATE_OBJECT DYN_WINE_BIG 245.968 1862.843 20.0 beer_bottle // Cheesy invisible beer bottle so we can target the grate. MAKE_OBJECT_TARGETTABLE beer_bottle TRUE SET_OBJECT_COLLISION beer_bottle FALSE SET_OBJECT_SCALE beer_bottle 0.0 //SET_OBJECT_VISIBLE beer_bottle FALSE CLEAR_AREA 22.4045 1881.6096 400.0 400.0 FALSE CLEAR_WANTED_LEVEL PLAYER1 stealjetpack_main_mission_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_mafia4_passed ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// Arriving at Area51 cut scene //////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //arriving outside area51 IF outsidearea51_d8flag < 5 IF outsidearea51_d8flag = 0 IF NOT IS_CAR_DEAD truthcar_d8 IF NOT IS_CHAR_DEAD truth_d8 START_PLAYBACK_RECORDED_CAR truthcar_d8 340 TASK_LOOK_AT_CHAR scplayer truth_d8 10000 outsidearea51_d8flag = 1 ENDIF ENDIF ENDIF IF outsidearea51_d8flag = 1 IF NOT IS_CAR_DEAD truthcar_d8 IF NOT IS_CHAR_DEAD truth_d8 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR truthcar_d8 ////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// skipcutscene_d8flag = 0 giveweapons_d8flag = 0 SKIP_CUTSCENE_START ////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// TIMERA = 0 outsidearea51_d8flag = 2 ENDIF ENDIF ENDIF ENDIF IF outsidearea51_d8flag = 2 IF TIMERA > 1000 //3000 IF NOT IS_CAR_DEAD truthcar_d8 IF NOT IS_CHAR_DEAD truth_d8 IF IS_CHAR_SITTING_IN_CAR scplayer truthcar_d8 PLAY_MISSION_AUDIO 1 //Do we have a plane here PRINT_NOW DES8_LA 3000 1 //Do we have a plan here? WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE LOAD_MISSION_AUDIO 1 SOUND_DES8_LC //HEY! Hold up, dude! PLAY_MISSION_AUDIO 2 PRINT_NOW TRUX_AS 2500 1 //Go, go, go! WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD truthcar_d8 TASK_LEAVE_CAR scplayer truthcar_d8 ENDIF TIMERA = 0 outsidearea51_d8flag = 3 ENDIF ENDIF ENDIF ENDIF ENDIF IF outsidearea51_d8flag = 3 IF NOT IS_CAR_DEAD truthcar_d8 IF NOT IS_CHAR_DEAD truth_d8 IF NOT IS_CHAR_IN_CAR scplayer truthcar_d8 IF HAS_MISSION_AUDIO_FINISHED 2 IF HAS_MISSION_AUDIO_LOADED 1 IF IS_CHAR_IN_CAR truth_d8 truthcar_d8 TASK_SHUFFLE_TO_NEXT_CAR_SEAT truth_d8 truthcar_d8 ENDIF IF NOT IS_CAR_DEAD truthcar_d8 TASK_LOOK_AT_VEHICLE scplayer truthcar_d8 5000 ENDIF PLAY_MISSION_AUDIO 1 PRINT_NOW DES8_LC 2000 1//HEY! Hold up, dude! WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE WAIT 350 IF NOT IS_CAR_DEAD truthcar_d8 START_PLAYBACK_RECORDED_CAR truthcar_d8 341 ENDIF TIMERA = 0 outsidearea51_d8flag = 4 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF outsidearea51_d8flag = 4 IF TIMERA > 4000 CREATE_SEARCHLIGHT 161.513 1932.982 35.391 startx[0] starty[0] startz[0] 12.5 0.5 spotlight_d8[0] CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 103.946 1901.047 36.246 spotlight_d8bulb[0] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 103.946 1901.047 36.246 spotlight1_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 103.946 1901.047 36.246 spotlight1_d8base ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT spotlight_d8[0] spotlight1_d8base spotlight1_d8housing spotlight_d8bulb[0] 0.0 1.181 0.768 SET_OBJECT_HEALTH spotlight_d8bulb[0] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[0] TRUE CREATE_FX_SYSTEM_ON_OBJECT shootlight spotlight_d8bulb[0] 0.0 1.181 0.768 TRUE shootlightf_d8fx[0]// CREATE_SEARCHLIGHT 233.067 1934.892 33.139 startx[1] starty[1] startz[1] 10.5 0.5 spotlight_d8[1] CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 161.962 1933.043 36.246 spotlight_d8bulb[1] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 161.962 1933.043 36.246 spotlight2_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 161.962 1933.043 36.246 spotlight2_d8base ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT spotlight_d8[1] spotlight2_d8base spotlight2_d8housing spotlight_d8bulb[1] 0.0 1.181 0.768 SET_OBJECT_HEALTH spotlight_d8bulb[1] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[1] TRUE CREATE_FX_SYSTEM_ON_OBJECT shootlight spotlight_d8bulb[1] 0.0 1.181 0.768 TRUE shootlightf_d8fx[1]// CREATE_SEARCHLIGHT 266.713 1894.979 34.139 startx[2] starty[2] startz[2] 10.5 0.5 spotlight_d8[2] CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 233.486 1934.789 36.246 spotlight_d8bulb[2] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 233.486 1934.789 36.246 spotlight3_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 233.486 1934.789 36.246 spotlight3_d8base ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT spotlight_d8[2] spotlight3_d8base spotlight3_d8housing spotlight_d8bulb[2] 0.0 1.181 0.768 SET_OBJECT_HEALTH spotlight_d8bulb[2] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[2] TRUE CREATE_FX_SYSTEM_ON_OBJECT shootlight spotlight_d8bulb[2] 0.0 1.181 0.768 TRUE shootlightf_d8fx[2]// CREATE_SEARCHLIGHT 261.97 1808.07 34.05 startx[3] starty[3] startz[3] 10.5 0.5 spotlight_d8[3] CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 267.116 1895.241 36.246 spotlight_d8bulb[3] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 267.116 1895.241 36.246 spotlight4_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 267.116 1895.241 36.246 spotlight4_d8base ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT spotlight_d8[3] spotlight4_d8base spotlight4_d8housing spotlight_d8bulb[3] 0.0 1.181 0.768 SET_OBJECT_HEALTH spotlight_d8bulb[3] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[3] TRUE CREATE_FX_SYSTEM_ON_OBJECT shootlight spotlight_d8bulb[3] 0.0 1.181 0.768 TRUE shootlightf_d8fx[3]// CREATE_SEARCHLIGHT 164.228 1837.892 34.05 startx[4] starty[4] startz[4] 10.5 0.5 spotlight_d8[4] CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 262.145 1807.62 36.246 spotlight_d8bulb[4] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 262.145 1807.62 36.246 spotlight5_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 262.145 1807.62 36.246 spotlight5_d8base ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT spotlight_d8[4] spotlight5_d8base spotlight5_d8housing spotlight_d8bulb[4] 0.0 1.181 0.768 SET_OBJECT_HEALTH spotlight_d8bulb[4] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[4] TRUE CREATE_FX_SYSTEM_ON_OBJECT shootlight spotlight_d8bulb[4] 0.0 1.181 0.768 TRUE shootlightf_d8fx[4]// CREATE_SEARCHLIGHT 103.887 1901.057 35.723 startx[5] starty[5] startz[5] 10.5 0.5 spotlight_d8[5] CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 166.003 1849.937 36.246 spotlight_d8bulb[5] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 166.003 1849.937 36.246 spotlight6_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 166.003 1849.937 36.246 spotlight6_d8base ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT spotlight_d8[5] spotlight6_d8base spotlight6_d8housing spotlight_d8bulb[5] 0.0 1.181 0.768 SET_OBJECT_HEALTH spotlight_d8bulb[5] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[5] TRUE CREATE_FX_SYSTEM_ON_OBJECT shootlight spotlight_d8bulb[5] 0.0 1.181 0.768 TRUE shootlightf_d8fx[5]// CREATE_SEARCHLIGHT 261.97 1808.07 36.05 startx[6] starty[6] startz[6] 10.5 0.5 spotlight_d8[6] CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 113.439 1814.405 36.246 spotlight_d8bulb[6] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 113.439 1814.405 36.246 spotlight7_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 113.439 1814.405 36.246 spotlight7_d8base ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT spotlight_d8[6] spotlight7_d8base spotlight7_d8housing spotlight_d8bulb[6] 0.0 1.181 0.768 SET_OBJECT_HEALTH spotlight_d8bulb[6] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[6] TRUE CREATE_FX_SYSTEM_ON_OBJECT shootlight spotlight_d8bulb[6] 0.0 1.181 0.768 TRUE shootlightf_d8fx[6]// GOSUB resetsearchlight_d8label createsearchlights_d8flag = 1 //entrance CREATE_CHAR PEDTYPE_MISSION1 ARMY 112.39 1931.193 17.77 army_d8[0] SET_CHAR_DECISION_MAKER army_d8[0] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[0] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[0] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 114.51 1914.793 18.8 ROADCROSS PED EXTEND_PATROL_ROUTE 112.39 1931.193 18.77 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[0] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[0] armyblips_d8[0] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[0] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[0] BLIP_ONLY SET_INFORM_RESPECTED_FRIENDS army_d8[0] 20.0 1 //1st two buidings right of the entrance CREATE_CHAR PEDTYPE_MISSION1 ARMY 125.135 1916.59 17.9 army_d8[1] SET_CHAR_DECISION_MAKER army_d8[1] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[1] WEAPONTYPE_M4 99999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[1] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 124.716 1890.25 18.33 NONE NONE EXTEND_PATROL_ROUTE 159.0 1887.9 19.5 ROADCROSS PED EXTEND_PATROL_ROUTE 161.32 1914.42 18.6 NONE NONE EXTEND_PATROL_ROUTE 125.135 1916.59 18.9 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[1] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[1] armyblips_d8[1] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[1] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[1] BLIP_ONLY SET_CHAR_ACCURACY army_d8[1] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[1] 30.0 1 //empty courtyard bit behind the building CREATE_CHAR PEDTYPE_MISSION1 ARMY 131.37 1821.139 16.6 army_d8[2] SET_CHAR_DECISION_MAKER army_d8[2] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[2] WEAPONTYPE_M4 99999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[2] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 130.62 1855.297 17.73 ROADCROSS PED EXTEND_PATROL_ROUTE 102.09 1858.6 17.7 NONE NONE EXTEND_PATROL_ROUTE 102.94 1839.78 17.6 ROADCROSS PED EXTEND_PATROL_ROUTE 131.37 1821.139 17.6 NONE NONE TASK_FOLLOW_PATROL_ROUTE army_d8[2] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[2] armyblips_d8[2] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[2] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[2] BLIP_ONLY SET_CHAR_ACCURACY army_d8[2] 80 SET_INFORM_RESPECTED_FRIENDS army_d8[2] 30.0 1 //walks once then near tower CREATE_CHAR PEDTYPE_MISSION1 ARMY 163.458 1824.58 17.64 army_d8[3] SET_CHAR_HEADING army_d8[3] 180.123 SET_CHAR_DECISION_MAKER army_d8[3] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[3] WEAPONTYPE_M4 99999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[3] 200.0 ADD_BLIP_FOR_CHAR army_d8[3] armyblips_d8[3] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[3] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[3] BLIP_ONLY SET_CHAR_ACCURACY army_d8[3] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[3] 30.0 1 //main entrance CREATE_CHAR PEDTYPE_MISSION1 ARMY 189.91 1916.399 16.64 army_d8[4] SET_CHAR_DECISION_MAKER army_d8[4] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[4] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[4] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 168.0187 1916.279 18.37 ROADCROSS PED EXTEND_PATROL_ROUTE 189.91 1916.399 17.64 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[4] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[4] armyblips_d8[4] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[4] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[4] BLIP_ONLY SET_CHAR_ACCURACY army_d8[4] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[4] 30.0 1 //right of control tower CREATE_CHAR PEDTYPE_MISSION1 ARMY 191.535 1809.588 16.641 army_d8[5] SET_CHAR_DECISION_MAKER army_d8[5] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[5] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[5] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 131.24 1811.194 17.6 ROADCROSS PED EXTEND_PATROL_ROUTE 191.535 1809.588 17.641 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[5] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[5] armyblips_d8[5] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[5] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[5] BLIP_ONLY SET_CHAR_ACCURACY army_d8[5] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[5] 30.0 1 //just behind main entrance CREATE_CHAR PEDTYPE_MISSION1 ARMY 195.36 1872.92 16.64 army_d8[6] SET_CHAR_DECISION_MAKER army_d8[6] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[6] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[6] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 231.095 1872.9 17.64 ROADCROSS PED EXTEND_PATROL_ROUTE 195.36 1872.92 17.64 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[6] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[6] armyblips_d8[6] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[6] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[6] BLIP_ONLY SET_CHAR_ACCURACY army_d8[6] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[6] 20.0 1 //first building on the right CREATE_CHAR PEDTYPE_MISSION1 ARMY 108.673 1886.18 17.04 army_d8[7] SET_CHAR_DECISION_MAKER army_d8[7] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[7] WEAPONTYPE_M4 99999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[7] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 107.065 1865.8 17.78 ROADCROSS PED EXTEND_PATROL_ROUTE 126.78 1864.25 17.8 NONE NONE EXTEND_PATROL_ROUTE 127.842 1885.04 18.027 ROADCROSS PED EXTEND_PATROL_ROUTE 108.673 1886.18 18.04 NONE NONE TASK_FOLLOW_PATROL_ROUTE army_d8[7] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[7] armyblips_d8[7] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[7] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[7] BLIP_ONLY SET_CHAR_ACCURACY army_d8[7] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[7] 30.0 1 //right of blast doors CREATE_CHAR PEDTYPE_MISSION1 ARMY 173.671 1886.841 19.9 army_d8[8] SET_CHAR_DECISION_MAKER army_d8[8] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[8] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[8] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 174.25 1866.51 20.7 ROADCROSS PED EXTEND_PATROL_ROUTE 173.671 1886.841 20.9 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[8] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[8] armyblips_d8[8] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[8] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[8] BLIP_ONLY SET_CHAR_ACCURACY army_d8[8] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[8] 30.0 1 //left of blast doors CREATE_CHAR PEDTYPE_MISSION1 ARMY 249.99 1874.78 19.6 army_d8[9] SET_CHAR_DECISION_MAKER army_d8[9] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[9] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[9] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 250.99 1906.56 20.6 ROADCROSS PED EXTEND_PATROL_ROUTE 249.99 1874.78 20.6 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[9] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[9] armyblips_d8[9] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[9] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[9] BLIP_ONLY SET_CHAR_ACCURACY army_d8[9] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[9] 30.0 1 //infront of blast door CREATE_CHAR PEDTYPE_MISSION1 ARMY 224.26 1916.79 16.64 army_d8[10] SET_CHAR_DECISION_MAKER army_d8[10] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[10] WEAPONTYPE_M4 99999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[10] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 204.475 1915.9 17.64 ROADCROSS PED EXTEND_PATROL_ROUTE 204.628 1904.521 17.64 NONE NONE EXTEND_PATROL_ROUTE 221.645 1905.13 17.64 ROADCROSS PED EXTEND_PATROL_ROUTE 224.26 1916.79 17.64 NONE NONE TASK_FOLLOW_PATROL_ROUTE army_d8[10] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[10] armyblips_d8[10] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[10] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[10] BLIP_ONLY SET_CHAR_ACCURACY army_d8[10] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[10] 30.0 1 //standing still inbetween two buildings CREATE_CHAR PEDTYPE_MISSION1 ARMY 209.07 1833.63 16.64 army_d8[11] SET_CHAR_HEADING army_d8[11] 346.579 SET_CHAR_DECISION_MAKER army_d8[11] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[11] WEAPONTYPE_M4 99999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[11] 200.0 ADD_BLIP_FOR_CHAR army_d8[11] armyblips_d8[11] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[11] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[11] BLIP_ONLY SET_CHAR_ACCURACY army_d8[11] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[11] 30.0 1 //far side, closed off entrance CREATE_CHAR PEDTYPE_MISSION1 ARMY 268.027 1862.269 17.64 army_d8[12] SET_CHAR_DECISION_MAKER army_d8[12] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[12] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[12] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 266.9 1822.3 17.64 ROADCROSS PED EXTEND_PATROL_ROUTE 268.027 1862.269 17.64 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[12] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[12] armyblips_d8[12] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[12] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[12] BLIP_ONLY SET_CHAR_ACCURACY army_d8[12] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[12] 30.0 1 //behind blast door CREATE_CHAR PEDTYPE_MISSION1 ARMY 221.16 1858.28 20.63 army_d8[13] SET_CHAR_DECISION_MAKER army_d8[13] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[13] WEAPONTYPE_M4 9999 SET_CHAR_ACCURACY army_d8[13] 90 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[13] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 198.711 1857.64 19.633 ROADCROSS PED EXTEND_PATROL_ROUTE 221.16 1858.28 20.63 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[13] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[13] armyblips_d8[13] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[13] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[13] BLIP_ONLY SET_CHAR_ACCURACY army_d8[13] 90 SET_INFORM_RESPECTED_FRIENDS army_d8[13] 30.0 1 //to the left of the control tower CREATE_CHAR PEDTYPE_MISSION1 ARMY 218.45 1820.78 16.64 army_d8[14] SET_CHAR_DECISION_MAKER army_d8[14] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[14] WEAPONTYPE_M4 9999 SET_CHAR_ACCURACY army_d8[14] 90 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[14] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 250.31 1821.924 17.64 ROADCROSS PED EXTEND_PATROL_ROUTE 218.45 1820.78 17.64 NONE NONE TASK_FOLLOW_PATROL_ROUTE army_d8[14] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[14] armyblips_d8[14] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[14] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[14] BLIP_ONLY SET_CHAR_ACCURACY army_d8[14] 80 SET_INFORM_RESPECTED_FRIENDS army_d8[14] 30.0 1 DO_FADE 100 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION 312.659 1806.521 26.272 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 311.7959 1807.0223 26.2183 JUMP_CUT LOAD_SCENE_IN_DIRECTION 312.659 1806.521 26.272 60.2 DO_FADE 100 FADE_IN PRINT_NOW DST8_1 7000 1 //~s~The Truth wants you to gain entry to the Area 69 reserach lab and bring back to him the 'Black Project' that is being developed inside. SET_CHAR_COORDINATES scplayer 69.91 1916.007 16.648 SET_CHAR_HEADING scplayer 273.363 TIMERA = 0 WHILE TIMERA < 7000 WAIT 0 ENDWHILE PRINT_NOW DST8_18 8000 1 //~s~The main way into the Area 69 interior is to go through the blast doors, to open these go to the ~y~control tower~s~. SET_FIXED_CAMERA_POSITION 232.5476 1911.0217 34.7955 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 231.9904 1910.2614 34.4617 JUMP_CUT TIMERA = 0 WHILE TIMERA < 4000 WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION 183.9385 1801.7700 29.0751 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 184.8011 1802.2155 28.8356 JUMP_CUT //of control tower TIMERA = 0 WHILE TIMERA < 4000 WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION 120.4534 1943.5220 29.8174 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 120.5729 1942.5332 29.7278 JUMP_CUT PRINT_NOW DST8_19 4000 1 //~s~There are searchlights patrolling the area observe their pattern and set movements and plan your route around. PRINT DST8_47 4000 1 //~s~If you stay in a searchlight too long or shoot too many out you will be spotted. PRINT DST8_48 4000 1 //~s~The blast doors will go on lockdown, and alternative route will then have to be found. TIMERA = 0 WHILE TIMERA < 12000 WAIT 0 ENDWHILE //towers CREATE_CHAR PEDTYPE_MISSION3 ARMY 103.9055 1900.5345 24.4985 army_d8[15] SET_CHAR_DECISION_MAKER army_d8[15] desert8empty_DM SET_CHAR_HEADING army_d8[15] 6.0802 GIVE_WEAPON_TO_CHAR army_d8[15] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[15] TRUE SET_CHAR_HEALTH army_d8[15] 10 ADD_BLIP_FOR_CHAR army_d8[15] armyblips_d8[15] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[15] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[15] BLIP_ONLY SET_CHAR_DECISION_MAKER army_d8[15] desert8tough_DM CREATE_CHAR PEDTYPE_MISSION3 ARMY 113.3839 1814.2606 24.4985 army_d8[16] SET_CHAR_DECISION_MAKER army_d8[16] desert8empty_DM SET_CHAR_HEADING army_d8[16] 5.0273 GIVE_WEAPON_TO_CHAR army_d8[16] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[16] TRUE SET_CHAR_HEALTH army_d8[16] 10 ADD_BLIP_FOR_CHAR army_d8[16] armyblips_d8[16] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[16] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[16] BLIP_ONLY SET_CHAR_DECISION_MAKER army_d8[16] desert8tough_DM CREATE_CHAR PEDTYPE_MISSION3 ARMY 165.6023 1850.0703 24.4985 army_d8[17] SET_CHAR_DECISION_MAKER army_d8[17] desert8empty_DM SET_CHAR_HEADING army_d8[17] 5.0273 GIVE_WEAPON_TO_CHAR army_d8[17] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[17] TRUE SET_CHAR_HEALTH army_d8[17] 10 ADD_BLIP_FOR_CHAR army_d8[17] armyblips_d8[17] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[17] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[17] BLIP_ONLY SET_CHAR_DECISION_MAKER army_d8[17] desert8tough_DM CREATE_CHAR PEDTYPE_MISSION3 ARMY 261.8728 1807.9380 24.4985 army_d8[18] SET_CHAR_DECISION_MAKER army_d8[18] desert8empty_DM SET_CHAR_HEADING army_d8[18] 5.0273 GIVE_WEAPON_TO_CHAR army_d8[18] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[18] TRUE SET_CHAR_HEALTH army_d8[18] 10 ADD_BLIP_FOR_CHAR army_d8[18] armyblips_d8[18] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[18] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[18] BLIP_ONLY SET_CHAR_DECISION_MAKER army_d8[18] desert8tough_DM CREATE_CHAR PEDTYPE_MISSION3 ARMY 267.1389 1895.4851 24.4985 army_d8[19] SET_CHAR_DECISION_MAKER army_d8[19] desert8empty_DM SET_CHAR_HEADING army_d8[19] 119.7683 GIVE_WEAPON_TO_CHAR army_d8[19] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[19] TRUE SET_CHAR_HEALTH army_d8[19] 10 ADD_BLIP_FOR_CHAR army_d8[19] armyblips_d8[19] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[19] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[19] BLIP_ONLY SET_CHAR_DECISION_MAKER army_d8[19] desert8tough_DM CREATE_CHAR PEDTYPE_MISSION3 ARMY 161.9575 1933.3417 24.4985 army_d8[20] SET_CHAR_DECISION_MAKER army_d8[20] desert8empty_DM SET_CHAR_HEADING army_d8[20] 119.7683 GIVE_WEAPON_TO_CHAR army_d8[20] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[20] TRUE SET_CHAR_HEALTH army_d8[20] 10 ADD_BLIP_FOR_CHAR army_d8[20] armyblips_d8[20] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[20] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[20] BLIP_ONLY SET_CHAR_DECISION_MAKER army_d8[20] desert8tough_DM CREATE_CHAR PEDTYPE_MISSION3 ARMY 233.6724 1934.6226 24.4985 army_d8[21] SET_CHAR_DECISION_MAKER army_d8[21] desert8empty_DM SET_CHAR_HEADING army_d8[21] 119.7683 GIVE_WEAPON_TO_CHAR army_d8[21] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[21] TRUE SET_CHAR_HEALTH army_d8[21] 10 ADD_BLIP_FOR_CHAR army_d8[21] armyblips_d8[21] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[21] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[21] BLIP_ONLY SET_CHAR_DECISION_MAKER army_d8[21] desert8tough_DM SET_FIXED_CAMERA_POSITION 113.0058 1934.0894 18.2450 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 113.0995 1933.1117 18.4334 JUMP_CUT PRINT_NOW DST8_21 5000 1//~s~There are also several military personnel patrolling the area, use the thermal goggles The Truth gave you to help you see them in the dark. TIMERA = 0 WHILE TIMERA < 5000 WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION 112.0028 1893.8461 19.5192 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 111.2033 1894.4467 19.5192 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 112.0028 1893.8461 19.5192 112.0028 1893.8461 35.5192 6000 TRUE PRINT_NOW DST8_22 6500 1 //~s~You can use stealth to avoid them or climb to the top of a control tower and use your sniper rifle to take them out. TIMERA = 0 WHILE TIMERA < 6500 WAIT 0 ENDWHILE giveweapons_d8flag = 1 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_KNIFE 1 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_PISTOL_SILENCED 70 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_INFRARED 1 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_SNIPERRIFLE 35 ////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// skipcutscene_d8flag = 1 SKIP_CUTSCENE_END ////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// IF skipcutscene_d8flag = 0 DO_FADE 250 FADE_OUT CLEAR_PRINTS WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD truthcar_d8 IF IS_PLAYBACK_GOING_ON_FOR_CAR truthcar_d8 STOP_PLAYBACK_RECORDED_CAR truthcar_d8 ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 69.91 1916.007 16.648 SET_CHAR_HEADING scplayer 273.363 ENDIF SET_CHAR_COORDINATES scplayer 69.91 1916.007 16.648 SET_CHAR_HEADING scplayer 273.363 DELETE_CHAR truth_d8 DELETE_CAR truthcar_d8 UNLOAD_SPECIAL_CHARACTER 1 MARK_MODEL_AS_NO_LONGER_NEEDED CAMPER SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER CLEAR_PRINTS IF giveweapons_d8flag = 0 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_KNIFE 1 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_PISTOL_SILENCED 70 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_INFRARED 1 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_SNIPERRIFLE 35 ENDIF IF createsearchlights_d8flag = 0 CREATE_SEARCHLIGHT 161.513 1932.982 35.391 startx[0] starty[0] startz[0] 12.5 0.5 spotlight_d8[0] CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 103.946 1901.047 36.246 spotlight_d8bulb[0] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 103.946 1901.047 36.246 spotlight1_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 103.946 1901.047 36.246 spotlight1_d8base ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT spotlight_d8[0] spotlight1_d8base spotlight1_d8housing spotlight_d8bulb[0] 0.0 1.181 0.768 SET_OBJECT_HEALTH spotlight_d8bulb[0] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[0] TRUE CREATE_FX_SYSTEM_ON_OBJECT shootlight spotlight_d8bulb[0] 0.0 1.181 0.768 TRUE shootlightf_d8fx[0]// CREATE_SEARCHLIGHT 233.067 1934.892 33.139 startx[1] starty[1] startz[1] 10.5 0.5 spotlight_d8[1] CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 161.962 1933.043 36.246 spotlight_d8bulb[1] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 161.962 1933.043 36.246 spotlight2_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 161.962 1933.043 36.246 spotlight2_d8base ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT spotlight_d8[1] spotlight2_d8base spotlight2_d8housing spotlight_d8bulb[1] 0.0 1.181 0.768 SET_OBJECT_HEALTH spotlight_d8bulb[1] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[1] TRUE CREATE_FX_SYSTEM_ON_OBJECT shootlight spotlight_d8bulb[1] 0.0 1.181 0.768 TRUE shootlightf_d8fx[1]// CREATE_SEARCHLIGHT 266.713 1894.979 34.139 startx[2] starty[2] startz[2] 10.5 0.5 spotlight_d8[2] CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 233.486 1934.789 36.246 spotlight_d8bulb[2] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 233.486 1934.789 36.246 spotlight3_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 233.486 1934.789 36.246 spotlight3_d8base ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT spotlight_d8[2] spotlight3_d8base spotlight3_d8housing spotlight_d8bulb[2] 0.0 1.181 0.768 SET_OBJECT_HEALTH spotlight_d8bulb[2] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[2] TRUE CREATE_FX_SYSTEM_ON_OBJECT shootlight spotlight_d8bulb[2] 0.0 1.181 0.768 TRUE shootlightf_d8fx[2]// CREATE_SEARCHLIGHT 261.97 1808.07 34.05 startx[3] starty[3] startz[3] 10.5 0.5 spotlight_d8[3] CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 267.116 1895.241 36.246 spotlight_d8bulb[3] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 267.116 1895.241 36.246 spotlight4_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 267.116 1895.241 36.246 spotlight4_d8base ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT spotlight_d8[3] spotlight4_d8base spotlight4_d8housing spotlight_d8bulb[3] 0.0 1.181 0.768 SET_OBJECT_HEALTH spotlight_d8bulb[3] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[3] TRUE CREATE_FX_SYSTEM_ON_OBJECT shootlight spotlight_d8bulb[3] 0.0 1.181 0.768 TRUE shootlightf_d8fx[3]// CREATE_SEARCHLIGHT 164.228 1837.892 34.05 startx[4] starty[4] startz[4] 10.5 0.5 spotlight_d8[4] CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 262.145 1807.62 36.246 spotlight_d8bulb[4] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 262.145 1807.62 36.246 spotlight5_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 262.145 1807.62 36.246 spotlight5_d8base ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT spotlight_d8[4] spotlight5_d8base spotlight5_d8housing spotlight_d8bulb[4] 0.0 1.181 0.768 SET_OBJECT_HEALTH spotlight_d8bulb[4] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[4] TRUE CREATE_FX_SYSTEM_ON_OBJECT shootlight spotlight_d8bulb[4] 0.0 1.181 0.768 TRUE shootlightf_d8fx[4]// CREATE_SEARCHLIGHT 103.887 1901.057 35.723 startx[5] starty[5] startz[5] 10.5 0.5 spotlight_d8[5] CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 166.003 1849.937 36.246 spotlight_d8bulb[5] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 166.003 1849.937 36.246 spotlight6_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 166.003 1849.937 36.246 spotlight6_d8base ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT spotlight_d8[5] spotlight6_d8base spotlight6_d8housing spotlight_d8bulb[5] 0.0 1.181 0.768 SET_OBJECT_HEALTH spotlight_d8bulb[5] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[5] TRUE CREATE_FX_SYSTEM_ON_OBJECT shootlight spotlight_d8bulb[5] 0.0 1.181 0.768 TRUE shootlightf_d8fx[5]// CREATE_SEARCHLIGHT 261.97 1808.07 36.05 startx[6] starty[6] startz[6] 10.5 0.5 spotlight_d8[6] CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 113.439 1814.405 36.246 spotlight_d8bulb[6] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 113.439 1814.405 36.246 spotlight7_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 113.439 1814.405 36.246 spotlight7_d8base ATTACH_SEARCHLIGHT_TO_SEARCHLIGHT_OBJECT spotlight_d8[6] spotlight7_d8base spotlight7_d8housing spotlight_d8bulb[6] 0.0 1.181 0.768 SET_OBJECT_HEALTH spotlight_d8bulb[6] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[6] TRUE CREATE_FX_SYSTEM_ON_OBJECT shootlight spotlight_d8bulb[6] 0.0 1.181 0.768 TRUE shootlightf_d8fx[6]// GOSUB resetsearchlight_d8label ENDIF spotlight_d8loop = 0 WHILE spotlight_d8loop < 22 DELETE_CHAR army_d8[spotlight_d8loop] REMOVE_BLIP armyblips_d8[spotlight_d8loop] spotlight_d8loop++ ENDWHILE //entrance CREATE_CHAR PEDTYPE_MISSION1 ARMY 112.39 1931.193 17.77 army_d8[0] SET_CHAR_DECISION_MAKER army_d8[0] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[0] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[0] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 114.51 1914.793 18.8 ROADCROSS PED EXTEND_PATROL_ROUTE 112.39 1931.193 18.77 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[0] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[0] armyblips_d8[0] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[0] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[0] BLIP_ONLY SET_INFORM_RESPECTED_FRIENDS army_d8[0] 20.0 1 //1st two buidings right of the entrance CREATE_CHAR PEDTYPE_MISSION1 ARMY 125.135 1916.59 17.9 army_d8[1] SET_CHAR_DECISION_MAKER army_d8[1] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[1] WEAPONTYPE_M4 99999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[1] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 124.716 1890.25 18.33 NONE NONE EXTEND_PATROL_ROUTE 159.0 1887.9 19.5 ROADCROSS PED EXTEND_PATROL_ROUTE 161.32 1914.42 18.6 NONE NONE EXTEND_PATROL_ROUTE 125.135 1916.59 18.9 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[1] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[1] armyblips_d8[1] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[1] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[1] BLIP_ONLY SET_CHAR_ACCURACY army_d8[1] 80 SET_INFORM_RESPECTED_FRIENDS army_d8[1] 30.0 1 //empty courtyard bit behind the building CREATE_CHAR PEDTYPE_MISSION1 ARMY 131.37 1821.139 16.6 army_d8[2] SET_CHAR_DECISION_MAKER army_d8[2] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[2] WEAPONTYPE_M4 99999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[2] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 130.62 1855.297 17.73 ROADCROSS PED EXTEND_PATROL_ROUTE 102.09 1858.6 17.7 NONE NONE EXTEND_PATROL_ROUTE 102.94 1839.78 17.6 ROADCROSS PED EXTEND_PATROL_ROUTE 131.37 1821.139 17.6 NONE NONE TASK_FOLLOW_PATROL_ROUTE army_d8[2] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[2] armyblips_d8[2] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[2] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[2] BLIP_ONLY SET_CHAR_ACCURACY army_d8[2] 80 SET_INFORM_RESPECTED_FRIENDS army_d8[2] 30.0 1 //walks once then near tower CREATE_CHAR PEDTYPE_MISSION1 ARMY 163.458 1824.58 17.64 army_d8[3] SET_CHAR_HEADING army_d8[3] 180.123 SET_CHAR_DECISION_MAKER army_d8[3] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[3] WEAPONTYPE_M4 99999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[3] 200.0 ADD_BLIP_FOR_CHAR army_d8[3] armyblips_d8[3] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[3] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[3] BLIP_ONLY SET_CHAR_ACCURACY army_d8[3] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[3] 30.0 1 //main entrance CREATE_CHAR PEDTYPE_MISSION1 ARMY 189.91 1916.399 16.64 army_d8[4] SET_CHAR_DECISION_MAKER army_d8[4] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[4] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[4] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 168.0187 1916.279 18.37 ROADCROSS PED EXTEND_PATROL_ROUTE 189.91 1916.399 17.64 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[4] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[4] armyblips_d8[4] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[4] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[4] BLIP_ONLY SET_CHAR_ACCURACY army_d8[4] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[4] 30.0 1 //right of control tower CREATE_CHAR PEDTYPE_MISSION1 ARMY 191.535 1809.588 16.641 army_d8[5] SET_CHAR_DECISION_MAKER army_d8[5] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[5] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[5] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 131.24 1811.194 17.6 ROADCROSS PED EXTEND_PATROL_ROUTE 191.535 1809.588 17.641 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[5] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[5] armyblips_d8[5] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[5] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[5] BLIP_ONLY SET_CHAR_ACCURACY army_d8[5] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[5] 30.0 1 //just behind main entrance CREATE_CHAR PEDTYPE_MISSION1 ARMY 195.36 1872.92 16.64 army_d8[6] SET_CHAR_DECISION_MAKER army_d8[6] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[6] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[6] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 231.095 1872.9 17.64 ROADCROSS PED EXTEND_PATROL_ROUTE 195.36 1872.92 17.64 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[6] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[6] armyblips_d8[6] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[6] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[6] BLIP_ONLY SET_CHAR_ACCURACY army_d8[6] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[6] 20.0 1 //first building on the right CREATE_CHAR PEDTYPE_MISSION1 ARMY 108.673 1886.18 17.04 army_d8[7] SET_CHAR_DECISION_MAKER army_d8[7] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[7] WEAPONTYPE_M4 99999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[7] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 107.065 1865.8 17.78 ROADCROSS PED EXTEND_PATROL_ROUTE 126.78 1864.25 17.8 NONE NONE EXTEND_PATROL_ROUTE 127.842 1885.04 18.027 ROADCROSS PED EXTEND_PATROL_ROUTE 108.673 1886.18 18.04 NONE NONE TASK_FOLLOW_PATROL_ROUTE army_d8[7] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[7] armyblips_d8[7] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[7] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[7] BLIP_ONLY SET_CHAR_ACCURACY army_d8[7] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[7] 30.0 1 //right of blast doors CREATE_CHAR PEDTYPE_MISSION1 ARMY 173.671 1886.841 19.9 army_d8[8] SET_CHAR_DECISION_MAKER army_d8[8] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[8] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[8] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 174.25 1866.51 20.7 ROADCROSS PED EXTEND_PATROL_ROUTE 173.671 1886.841 20.9 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[8] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[8] armyblips_d8[8] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[8] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[8] BLIP_ONLY SET_CHAR_ACCURACY army_d8[8] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[8] 30.0 1 //left of blast doors CREATE_CHAR PEDTYPE_MISSION1 ARMY 249.99 1874.78 19.6 army_d8[9] SET_CHAR_DECISION_MAKER army_d8[9] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[9] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[9] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 250.99 1906.56 20.6 ROADCROSS PED EXTEND_PATROL_ROUTE 249.99 1874.78 20.6 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[9] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[9] armyblips_d8[9] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[9] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[9] BLIP_ONLY SET_CHAR_ACCURACY army_d8[9] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[9] 30.0 1 //infront of blast door CREATE_CHAR PEDTYPE_MISSION1 ARMY 224.26 1916.79 16.64 army_d8[10] SET_CHAR_DECISION_MAKER army_d8[10] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[10] WEAPONTYPE_M4 99999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[10] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 204.475 1915.9 17.64 ROADCROSS PED EXTEND_PATROL_ROUTE 204.628 1904.521 17.64 NONE NONE EXTEND_PATROL_ROUTE 221.645 1905.13 17.64 ROADCROSS PED EXTEND_PATROL_ROUTE 224.26 1916.79 17.64 NONE NONE TASK_FOLLOW_PATROL_ROUTE army_d8[10] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[10] armyblips_d8[10] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[10] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[10] BLIP_ONLY SET_CHAR_ACCURACY army_d8[10] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[10] 30.0 1 //standing still inbetween two buildings CREATE_CHAR PEDTYPE_MISSION1 ARMY 209.07 1833.63 16.64 army_d8[11] SET_CHAR_HEADING army_d8[11] 346.579 SET_CHAR_DECISION_MAKER army_d8[11] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[11] WEAPONTYPE_M4 99999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[11] 200.0 ADD_BLIP_FOR_CHAR army_d8[11] armyblips_d8[11] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[11] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[11] BLIP_ONLY SET_CHAR_ACCURACY army_d8[11] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[11] 30.0 1 //far side, closed off entrance CREATE_CHAR PEDTYPE_MISSION1 ARMY 268.027 1862.269 17.64 army_d8[12] SET_CHAR_DECISION_MAKER army_d8[12] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[12] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[12] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 266.9 1822.3 17.64 ROADCROSS PED EXTEND_PATROL_ROUTE 268.027 1862.269 17.64 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[12] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[12] armyblips_d8[12] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[12] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[12] BLIP_ONLY SET_CHAR_ACCURACY army_d8[12] 85 SET_INFORM_RESPECTED_FRIENDS army_d8[12] 30.0 1 //behind blast door CREATE_CHAR PEDTYPE_MISSION1 ARMY 221.16 1858.28 20.63 army_d8[13] SET_CHAR_DECISION_MAKER army_d8[13] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[13] WEAPONTYPE_M4 9999 SET_CHAR_ACCURACY army_d8[13] 90 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[13] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 198.711 1857.64 19.633 ROADCROSS PED EXTEND_PATROL_ROUTE 221.16 1858.28 20.63 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[13] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[13] armyblips_d8[13] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[13] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[13] BLIP_ONLY SET_CHAR_ACCURACY army_d8[13] 90 SET_INFORM_RESPECTED_FRIENDS army_d8[13] 30.0 1 //to the left of the control tower CREATE_CHAR PEDTYPE_MISSION1 ARMY 218.45 1820.78 16.64 army_d8[14] SET_CHAR_DECISION_MAKER army_d8[14] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[14] WEAPONTYPE_M4 9999 SET_CHAR_ACCURACY army_d8[14] 90 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[14] 200.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 250.31 1821.924 17.64 ROADCROSS PED EXTEND_PATROL_ROUTE 218.45 1820.78 17.64 NONE NONE TASK_FOLLOW_PATROL_ROUTE army_d8[14] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[14] armyblips_d8[14] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[14] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[14] BLIP_ONLY SET_CHAR_ACCURACY army_d8[14] 80 SET_INFORM_RESPECTED_FRIENDS army_d8[14] 30.0 1 //towers CREATE_CHAR PEDTYPE_MISSION3 ARMY 103.9055 1900.5345 24.4985 army_d8[15] SET_CHAR_DECISION_MAKER army_d8[15] desert8empty_DM SET_CHAR_HEADING army_d8[15] 6.0802 GIVE_WEAPON_TO_CHAR army_d8[15] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[15] TRUE SET_CHAR_HEALTH army_d8[15] 10 ADD_BLIP_FOR_CHAR army_d8[15] armyblips_d8[15] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[15] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[15] BLIP_ONLY SET_CHAR_DECISION_MAKER army_d8[15] desert8tough_DM CREATE_CHAR PEDTYPE_MISSION3 ARMY 113.3839 1814.2606 24.4985 army_d8[16] SET_CHAR_DECISION_MAKER army_d8[16] desert8empty_DM SET_CHAR_HEADING army_d8[16] 5.0273 GIVE_WEAPON_TO_CHAR army_d8[16] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[16] TRUE SET_CHAR_HEALTH army_d8[16] 10 ADD_BLIP_FOR_CHAR army_d8[16] armyblips_d8[16] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[16] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[16] BLIP_ONLY SET_CHAR_DECISION_MAKER army_d8[16] desert8tough_DM CREATE_CHAR PEDTYPE_MISSION3 ARMY 165.6023 1850.0703 24.4985 army_d8[17] SET_CHAR_DECISION_MAKER army_d8[17] desert8empty_DM SET_CHAR_HEADING army_d8[17] 5.0273 GIVE_WEAPON_TO_CHAR army_d8[17] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[17] TRUE SET_CHAR_HEALTH army_d8[17] 10 ADD_BLIP_FOR_CHAR army_d8[17] armyblips_d8[17] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[17] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[17] BLIP_ONLY SET_CHAR_DECISION_MAKER army_d8[17] desert8tough_DM CREATE_CHAR PEDTYPE_MISSION3 ARMY 261.8728 1807.9380 24.4985 army_d8[18] SET_CHAR_DECISION_MAKER army_d8[18] desert8empty_DM SET_CHAR_HEADING army_d8[18] 5.0273 GIVE_WEAPON_TO_CHAR army_d8[18] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[18] TRUE SET_CHAR_HEALTH army_d8[18] 10 ADD_BLIP_FOR_CHAR army_d8[18] armyblips_d8[18] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[18] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[18] BLIP_ONLY SET_CHAR_DECISION_MAKER army_d8[18] desert8tough_DM CREATE_CHAR PEDTYPE_MISSION3 ARMY 267.1389 1895.4851 24.4985 army_d8[19] SET_CHAR_DECISION_MAKER army_d8[19] desert8empty_DM SET_CHAR_HEADING army_d8[19] 119.7683 GIVE_WEAPON_TO_CHAR army_d8[19] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[19] TRUE SET_CHAR_HEALTH army_d8[19] 10 ADD_BLIP_FOR_CHAR army_d8[19] armyblips_d8[19] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[19] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[19] BLIP_ONLY SET_CHAR_DECISION_MAKER army_d8[19] desert8tough_DM CREATE_CHAR PEDTYPE_MISSION3 ARMY 161.9575 1933.3417 24.4985 army_d8[20] SET_CHAR_DECISION_MAKER army_d8[20] desert8empty_DM SET_CHAR_HEADING army_d8[20] 119.7683 GIVE_WEAPON_TO_CHAR army_d8[20] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[20] TRUE SET_CHAR_HEALTH army_d8[20] 10 ADD_BLIP_FOR_CHAR army_d8[20] armyblips_d8[20] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[20] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[20] BLIP_ONLY SET_CHAR_DECISION_MAKER army_d8[20] desert8tough_DM CREATE_CHAR PEDTYPE_MISSION3 ARMY 233.6724 1934.6226 24.4985 army_d8[21] SET_CHAR_DECISION_MAKER army_d8[21] desert8empty_DM SET_CHAR_HEADING army_d8[21] 119.7683 GIVE_WEAPON_TO_CHAR army_d8[21] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[21] TRUE SET_CHAR_HEALTH army_d8[21] 10 ADD_BLIP_FOR_CHAR army_d8[21] armyblips_d8[21] SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[21] TRUE CHANGE_BLIP_DISPLAY armyblips_d8[21] BLIP_ONLY SET_CHAR_DECISION_MAKER army_d8[21] desert8tough_DM LOAD_SCENE_IN_DIRECTION 69.91 1916.007 16.648 273.4 DO_FADE 250 FADE_IN ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_TIME_OF_DAY 21 30 CLEAR_PRINTS CAMERA_RESET_NEW_SCRIPTABLES SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER CLEAR_PRINTS //SET_DARKNESS_EFFECT TRUE -1 IF NOT IS_CAR_DEAD truthcar_d8 IF IS_PLAYBACK_GOING_ON_FOR_CAR truthcar_d8 STOP_PLAYBACK_RECORDED_CAR truthcar_d8 ENDIF ENDIF DELETE_CHAR truth_d8 DELETE_CAR truthcar_d8 UNLOAD_SPECIAL_CHARACTER 1 MARK_MODEL_AS_NO_LONGER_NEEDED CAMPER ADD_BLIP_FOR_COORD 211.604 1811.091 20.8 blastdoor_d8blip //PRINT_HELP DST8_11 //Use stealth to gain entry and where possible avoid the searchlights and patrolling soldiers. PRINT_NOW DST8_38 5000 1 //~s~You must gain entry to the research lab before sunrise which is 0530 hours PRINT DST8_7 5000 1 //~s~Open the blast doors by activating the switch in the ~y~control tower~s~. CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_DES8_AA //Please, no more violence! Take my pass card and go! outsidearea51_d8flag = 5 CHECKPOINT_SAVE 99 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// Player outside ////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF outsidearea51_d8flag = 5 IF thermalhelp_d8flag = 0 IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_INFRARED PRINT_HELP DST8_37 //When selected to toggle the thermal vision on and off press the ~o~ button. thermalhelp_d8flag = 1 ENDIF ENDIF //player fails if it reaches 5.30am IF timeofday_d8flag = 0 GET_TIME_OF_DAY Hours_d8 Minutes_d8 IF hours_d8 = 5 IF minutes_d8 > 29 DO_FADE 500 FADE_OUT warpedplayer_d8flag = 1 WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer 296.348 2474.277 15.477 SET_CHAR_HEADING scplayer 359.722 SET_CAMERA_BEHIND_PLAYER DO_FADE 500 FADE_IN PRINT_NOW DST8_41 5000 1 //~r~You had to break into the Area 69 research lab while undercover from night, next time be quicker! WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_mafia4_failed timeofday_d8flag = 1 ENDIF ENDIF ENDIF //player fails and get warned about getting out of the area IF warpedplayer_d8flag = 0 IF notinarea_d8flag = 0 IF NOT IS_CHAR_IN_AREA_2D scplayer 52.5 1952.11 295.92 1775.93 FALSE PRINT_NOW DST8_39 5000 1 //~s~You have venturing too far away from Area 69, if you go any further the mission will be failed. notinarea_d8flag = 1 ENDIF ENDIF IF notinarea_d8flag = 1 IF IS_CHAR_IN_AREA_2D scplayer 52.5 1952.11 295.92 1775.93 FALSE notinarea_d8flag = 0 ELSE IF NOT IS_CHAR_IN_AREA_2D scplayer 36.9 1961.82 319.56 1760.29 FALSE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer 296.348 2474.277 15.477 SET_CHAR_HEADING scplayer 359.722 SET_CAMERA_BEHIND_PLAYER DO_FADE 500 FADE_IN PRINT_NOW DST8_40 5000 1 //~r~You were too far away from Area69! WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_mafia4_failed notinarea_d8flag = 2 ENDIF ENDIF ENDIF ENDIF /////////////////////////////////////////////////////////// control tower - opening and closing blast doors IF trackingmode_d8flag < 3 IF trackingmode_d8flag < 2 IF dooropen_d8flag = 0 IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer 211.604 1811.091 20.8 3.0 3.0 3.0 TRUE dooropen_d8flag = 1 ENDIF ENDIF IF dooropen_d8flag = 1 IF openblastdoor_d8flag = 0 REMOVE_BLIP blastdoor_d8blip ADD_BLIP_FOR_COORD 214.0 1872.0 12.14 blastdoor_d8blip PRINT_NOW DST8_8 5000 1 //~s~The ~y~blast doors ~s~have been opened, you have limited amount of time to get through them before they shut again! TIMERB = 0 //SET_FIXED_CAMERA_POSITION 212.8104 1890.4010 18.1940 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 212.8483 1889.4835 17.7982 JUMP_CUT //SWITCH_WIDESCREEN ON //SET_PLAYER_CONTROL PLAYER1 OFF //ADD_ONE_OFF_SOUND 213.69 1881.26 12.44 SOUND_POLICE_CELL_DOOR_CLUNK //ADD_CONTINUOUS_SOUND 213.69 1881.26 12.44 SOUND_POLICE_CELL_DOOR_SLIDING_LOOP blastdoorsound_d8 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 213.85 1874.68 14.12 SOUND_BLAST_DOOR_SLIDE_START openblastdoor_d8flag = 1 ENDIF //sliding door IF openblastdoor_d8flag = 1 IF rightdooropen_d8flag = 0 IF SLIDE_OBJECT frontdoorr_a51 219.941 1874.571 13.903 0.1 0.0 0.0 FALSE //ADD_ONE_OFF_SOUND 219.941 1874.571 13.903 SOUND_POLICE_CELL_DOOR_CLUNK rightdooropen_d8flag = 1 ENDIF ENDIF IF leftdooropen_d8flag = 0 IF SLIDE_OBJECT frontdoorl_a51 207.842 1874.571 13.903 0.1 0.0 0.0 FALSE //ADD_ONE_OFF_SOUND 207.842 1874.571 13.903 SOUND_POLICE_CELL_DOOR_CLUNK leftdooropen_d8flag = 1 ENDIF ENDIF ENDIF //stop audio for door IF openblastdoor_d8flag = 1 IF rightdooropen_d8flag = 1 IF leftdooropen_d8flag = 1 //REMOVE_SOUND blastdoorsound_d8 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 213.85 1874.68 14.12 SOUND_BLAST_DOOR_SLIDE_STOP //RESTORE_CAMERA_JUMPCUT //SWITCH_WIDESCREEN OFF //SET_PLAYER_CONTROL PLAYER1 ON openblastdoor_d8flag = 2 ENDIF ENDIF ENDIF //close it after a timer IF openblastdoor_d8flag = 2 IF TIMERB > 30000 //ADD_ONE_OFF_SOUND 213.69 1881.26 12.44 SOUND_POLICE_CELL_DOOR_CLUNK //ADD_CONTINUOUS_SOUND 213.69 1881.26 12.44 SOUND_POLICE_CELL_DOOR_SLIDING_LOOP blastdoorsound_d8 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 213.85 1874.68 14.12 SOUND_BLAST_DOOR_SLIDE_START openblastdoor_d8flag = 3 ENDIF ENDIF //close doors IF openblastdoor_d8flag = 3 IF rightdooropen_d8flag = 1 IF SLIDE_OBJECT frontdoorr_a51 215.941 1874.571 13.903 0.1 0.0 0.0 FALSE //ADD_ONE_OFF_SOUND 215.941 1874.571 13.903 SOUND_POLICE_CELL_DOOR_CLUNK rightdooropen_d8flag = 0 ENDIF ENDIF IF leftdooropen_d8flag = 1 IF SLIDE_OBJECT frontdoorl_a51 211.842 1874.571 13.903 0.1 0.0 0.0 FALSE //ADD_ONE_OFF_SOUND 211.842 1874.571 13.903 SOUND_POLICE_CELL_DOOR_CLUNK leftdooropen_d8flag = 0 ENDIF ENDIF ENDIF IF openblastdoor_d8flag = 3 IF rightdooropen_d8flag = 0 IF leftdooropen_d8flag = 0 //REMOVE_SOUND blastdoorsound_d8 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 213.85 1874.68 14.12 SOUND_BLAST_DOOR_SLIDE_STOP REMOVE_BLIP blastdoor_d8blip ADD_BLIP_FOR_COORD 211.604 1811.091 20.8 blastdoor_d8blip //control tower PRINT_NOW DST8_9 5000 1 //~s~The blast doors have shut make your way back to the ~y~control tower ~s~to open them again. openblastdoor_d8flag = 0 rightdooropen_d8flag = 0 rightdooropen_d8flag = 0 dooropen_d8flag = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ELSE //shut everything down IF rightdooropen_d8flag = 5 IF SLIDE_OBJECT frontdoorr_a51 215.941 1874.571 13.903 0.1 0.0 0.0 FALSE //ADD_ONE_OFF_SOUND 215.941 1874.571 13.903 SOUND_POLICE_CELL_DOOR_CLUNK rightdooropen_d8flag = 6 ENDIF ENDIF IF leftdooropen_d8flag = 5 IF SLIDE_OBJECT frontdoorl_a51 211.842 1874.571 13.903 0.1 0.0 0.0 FALSE //ADD_ONE_OFF_SOUND 211.842 1874.571 13.903 SOUND_POLICE_CELL_DOOR_CLUNK leftdooropen_d8flag = 6 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////// //set the searchlighst to clip if player is in a certain area. IF searchlightclip_d8flag = 0 IF IS_CHAR_IN_AREA_3D scplayer 254.37 1850.1 21.7 207.08 1873.36 10.0 FALSE spotlight_d8loop = 0 WHILE spotlight_d8loop < NUMBEROFSEARCHLIGHTS_D8 IF DOES_SEARCHLIGHT_EXIST spotlight_d8[spotlight_d8loop] SWITCH_ON_GROUND_SEARCHLIGHT spotlight_d8[spotlight_d8loop] FALSE ENDIF spotlight_d8loop++ ENDWHILE searchlightclip_d8flag = 1 ENDIF ENDIF IF searchlightclip_d8flag = 1 IF NOT IS_CHAR_IN_AREA_3D scplayer 254.37 1850.1 21.7 207.08 1873.36 10.0 FALSE spotlight_d8loop = 0 WHILE spotlight_d8loop < NUMBEROFSEARCHLIGHTS_D8 IF DOES_SEARCHLIGHT_EXIST spotlight_d8[spotlight_d8loop] SWITCH_ON_GROUND_SEARCHLIGHT spotlight_d8[spotlight_d8loop] TRUE ENDIF spotlight_d8loop++ ENDWHILE searchlightclip_d8flag = 0 ENDIF ENDIF //test if spotlights getting shot spotlight_d8loop = 0 WHILE spotlight_d8loop < NUMBEROFSEARCHLIGHTS_D8 IF spotlightshot_d8flag[spotlight_d8loop] = 0 IF DOES_OBJECT_EXIST spotlight_d8bulb[spotlight_d8loop] GET_OBJECT_HEALTH spotlight_d8bulb[spotlight_d8loop] spotlight_d8health IF spotlight_d8health < 5000 IF DOES_SEARCHLIGHT_EXIST spotlight_d8[spotlight_d8loop] DELETE_SEARCHLIGHT spotlight_d8[spotlight_d8loop] PLAY_AND_KILL_FX_SYSTEM shootlightf_d8fx[spotlight_d8loop] //get coords for spotlight_d8bulb[spotlight_d8loop] //play fx system spotlight_d8bulb[spotlight_d8loop] spotlightshot_d8counter++ spotlightshot_d8flag[spotlight_d8loop] = 1 ENDIF ENDIF ENDIF ENDIF spotlight_d8loop++ ENDWHILE //test whether the player is in the searchlights IF trackingmode_d8flag = 0 spotlight_d8loop = 0 WHILE spotlight_d8loop < NUMBEROFSEARCHLIGHTS_D8 AND trackingmode_d8flag = 0 IF DOES_SEARCHLIGHT_EXIST spotlight_d8[spotlight_d8loop] IF IS_CHAR_IN_SEARCHLIGHT spotlight_d8[spotlight_d8loop] scplayer //PRINT_NOW DST8_15 5000 1 // (PLACEHOLDER)What was that possible intruder sighted. Set searchlights to tracking mode. spotlightstage_d8flag = 1 stage1progressaudio_d8flag = 0 GOSUB searchlightfollowplayer_d8label TIMERA = 0 trackingmode_d8flag = 1 ENDIF ENDIF spotlight_d8loop++ ENDWHILE ENDIF //if player is spotted track with timer IF trackingmode_d8flag = 1 IF TIMERA > 10000 spotlight_d8loop = 0 trackingmode_d8flag = 0 WHILE spotlight_d8loop < NUMBEROFSEARCHLIGHTS_D8 IF DOES_SEARCHLIGHT_EXIST spotlight_d8[spotlight_d8loop] IF IS_CHAR_IN_SEARCHLIGHT spotlight_d8[spotlight_d8loop] scplayer trackingmode_d8flag = 2 ENDIF ENDIF spotlight_d8loop++ ENDWHILE IF trackingmode_d8flag = 0 //PRINT_NOW DST8_16 5000 1 //(PLACEHOLDER)False sighting resume normal searchlights. spotlightstage_d8flag = 2 stage2progressaudio_d8flag = 0 GOSUB resetsearchlight_d8label ENDIF ENDIF ENDIF //player has been spotted permanently IF spotlightshot_d8counter > 2 AND trackingmode_d8flag < 2 trackingmode_d8flag = 2 ENDIF IF trackingmode_d8flag = 2 //remove tower stuff REMOVE_BLIP blastdoor_d8blip spotlightstage_d8flag = 3 progressaudio_d8flag = 0 //add blip for grate ADD_BLIP_FOR_COORD 246.0 1862.64 19.89 blastdoor_d8blip //tell control tower guys to kill player spotlight_d8loop = 15 WHILE spotlight_d8loop < 22 IF NOT IS_CHAR_DEAD army_d8[spotlight_d8loop] enemy_d8 = army_d8[spotlight_d8loop] GOSUB stayshoot_d8label ENDIF spotlight_d8loop++ ENDWHILE GOSUB searchlightfollowplayer_d8label rightdooropen_d8flag = 5 leftdooropen_d8flag = 5 trackingmode_d8flag = 3 ENDIF //remove blips and mark army guys as no longer needed if they are dead spotlight_d8loop = 0 WHILE spotlight_d8loop < 22 IF IS_CHAR_DEAD army_d8[spotlight_d8loop] IF DOES_BLIP_EXIST armyblips_d8[spotlight_d8loop] REMOVE_BLIP armyblips_d8[spotlight_d8loop] MARK_CHAR_AS_NO_LONGER_NEEDED army_d8[spotlight_d8loop] ENDIF ENDIF spotlight_d8loop++ ENDWHILE //tell player about the grate IF trackingmode_d8flag = 3 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 246.0 1862.64 5.0 5.0 FALSE PRINT_HELP DST8_10 //Damage the ~y~vent grate ~w~and drop into it to gain entry. REMOVE_BLIP blastdoor_d8blip ADD_BLIP_FOR_COORD 224.99 1859.18 12.31 blastdoor_d8blip trackingmode_d8flag = 4 ENDIF ENDIF //dialogue GOSUB process_audio_d8 //initial spotted IF spotlightstage_d8flag = 1 IF stage1progressaudio_d8flag = 0 IF handlingudio_d8flag = 0 IF random1_ctr > 1 audio_label_d8 = SOUND_DES8_BD //Code Blue! Searchlights set to tracking mode! $input_text_d8 = DES8_BD //Code Blue! Searchlights set to tracking mode! GOSUB load_audio_d8 ENDIF IF random1_ctr = 1 audio_label_d8 = SOUND_DES8_BB //Code Blue! Set the Searchlight perimeter to tracking mode! $input_text_d8 = DES8_BB //Code Blue! Set the Searchlight perimeter to tracking mode! GOSUB load_audio_d8 random1_ctr++ ENDIF IF random1_ctr = 0 audio_label_d8 = SOUND_DES8_BA //Possible intruder sighted. Condition Blue! Set searchlights to tracking mode! $input_text_d8 = DES8_BA //Possible intruder sighted. Condition Blue! Set searchlights to tracking mode! GOSUB load_audio_d8 random1_ctr++ ENDIF ENDIF ENDIF ENDIF //go back to normal IF spotlightstage_d8flag = 2 IF stage2progressaudio_d8flag = 0 IF handlingudio_d8flag = 0 IF random2_ctr > 1 audio_label_d8 = SOUND_DES8_CC //Perimeter is secure. Standing down from Code Blue! $input_text_d8 = DES8_CC //Perimeter is secure. Standing down from Code Blue! GOSUB load_audio_d8 ENDIF IF random2_ctr = 1 audio_label_d8 = SOUND_DES8_CB //No further sign of intrusion. Stand down, repeat, stand down! $input_text_d8 = DES8_CB //No further sign of intrusion. Stand down, repeat, stand down! GOSUB load_audio_d8 random2_ctr++ ENDIF IF random2_ctr = 0 audio_label_d8 = SOUND_DES8_CA //Sighting unconfirmed. Stand down from Condition Blue! $input_text_d8 = DES8_CA //Sighting unconfirmed. Stand down from Condition Blue! GOSUB load_audio_d8 random2_ctr++ ENDIF ENDIF ENDIF ENDIF //definately spotted IF spotlightstage_d8flag = 3 desert8_was_spotted = 1 IF progressaudio_d8flag = 0 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_DC //This is a code red! All personnel adopt intruder protocols! $input_text_d8 = DES8_DC //This is a code red! All personnel adopt intruder protocols! GOSUB load_audio_d8 ENDIF ENDIF IF progressaudio_d8flag = 1 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_EE //All towers are cleared to use lethal force, repeat, lethal force! $input_text_d8 = DES8_EE //All towers are cleared to use lethal force, repeat, lethal force! GOSUB load_audio_d8 ENDIF ENDIF IF progressaudio_d8flag = 2 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_ED //Lock down protocols initiated! Blast doors and security tower isolated! $input_text_d8 = DES8_ED //Lock down protocols initiated! Blast doors and security tower isolated! GOSUB load_audio_d8 ENDIF ENDIF IF progressaudio_d8flag = 3 PRINT_NOW DST8_14 7000 1 //~s~The control tower has been disabled you must now find another way in. There is a ~y~vent that goes into the Area 69 interior. progressaudio_d8flag = 4 ENDIF ENDIF //if player is inside IF inside_d8flag = 0 IF IS_CHAR_IN_AREA_3D scplayer 207.917 1874.33 10.0 2224.917 1868.78 14.6 FALSE //through door OR LOCATE_CHAR_ON_FOOT_3D scplayer 224.99 1859.18 12.31 8.0 8.0 2.0 FALSE //through vent OR IS_CHAR_IN_AREA_3D scplayer 201.99 1874.7 12.3 225.47 1851.43 14.31 FALSE //big area OR LOCATE_CHAR_ON_FOOT_3D scplayer 226.38 1872.33 12.93 4.0 4.0 3.5 FALSE DO_FADE 250 FADE_OUT CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DELETE_OBJECT a51ventcover CREATE_OBJECT a51_ventcoverb 245.968 1862.843 19.49 a51ventcover // Put back the vent cover. SET_OBJECT_ROTATION a51ventcover 0.0 0.0 -140.998 DONT_REMOVE_OBJECT a51ventcover DELETE_OBJECT beer_bottle SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL PLAYER1 OFF MARK_MODEL_AS_NO_LONGER_NEEDED A51_SPOTBULB MARK_MODEL_AS_NO_LONGER_NEEDED A51_SPOTHOUSING MARK_MODEL_AS_NO_LONGER_NEEDED A51_SPOTBASE MARK_MODEL_AS_NO_LONGER_NEEDED CAMPER UNLOAD_SPECIAL_CHARACTER 1 REMOVE_CAR_RECORDING 340 REMOVE_CAR_RECORDING 341 MARK_MODEL_AS_NO_LONGER_NEEDED KNIFECUR MARK_MODEL_AS_NO_LONGER_NEEDED SILENCED REQUEST_MODEL TUG REQUEST_MODEL WMOSCI REQUEST_MODEL SANCHEZ LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED TUG OR NOT HAS_MODEL_LOADED WMOSCI OR NOT HAS_MODEL_LOADED SANCHEZ WAIT 0 ENDWHILE //remove any sounds //remove lights CLEAR_PRINTS spotlight_d8loop = 0 WHILE spotlight_d8loop < 7 DELETE_SEARCHLIGHT spotlight_d8[spotlight_d8loop] DELETE_OBJECT spotlight_d8bulb[spotlight_d8loop] spotlight_d8loop++ ENDWHILE DELETE_OBJECT spotlight1_d8housing DELETE_OBJECT spotlight1_d8base DELETE_OBJECT spotlight2_d8housing DELETE_OBJECT spotlight2_d8base DELETE_OBJECT spotlight3_d8housing DELETE_OBJECT spotlight3_d8base DELETE_OBJECT spotlight4_d8housing DELETE_OBJECT spotlight4_d8base DELETE_OBJECT spotlight5_d8housing DELETE_OBJECT spotlight5_d8base DELETE_OBJECT spotlight6_d8housing DELETE_OBJECT spotlight6_d8base DELETE_OBJECT spotlight7_d8housing DELETE_OBJECT spotlight7_d8base //remove peds spotlight_d8loop = 0 WHILE spotlight_d8loop < 22 DELETE_CHAR army_d8[spotlight_d8loop] REMOVE_BLIP armyblips_d8[spotlight_d8loop] spotlight_d8loop++ ENDWHILE IF LOCATE_CHAR_ANY_MEANS_2D scplayer 225.0 1859.0 5.0 5.0 FALSE SET_CHAR_COORDINATES scplayer 224.44 1859.34 12.14 SET_CHAR_HEADING scplayer 6.82 ELSE SET_CHAR_COORDINATES scplayer 214.14 1872.388 12.14 SET_CHAR_HEADING scplayer 267.68 ENDIF //reset blast doors DELETE_OBJECT frontdoorr_a51 DELETE_OBJECT frontdoorl_a51 CREATE_OBJECT_NO_OFFSET a51_blastdoorR 215.941 1874.571 13.903 frontdoorr_a51 SET_OBJECT_HEADING frontdoorr_a51 0.0 CREATE_OBJECT_NO_OFFSET a51_blastdoorL 211.842 1874.571 13.903 frontdoorl_a51 SET_OBJECT_HEADING frontdoorl_a51 0.0 DONT_REMOVE_OBJECT frontdoorr_a51 DONT_REMOVE_OBJECT frontdoorl_a51 REMOVE_BLIP blastdoor_d8blip //////////////////////// create guys in first room //right side between boxes looking out CREATE_CHAR PEDTYPE_MISSION1 ARMY 248.128 1860.732 8.76 army_d8[1] SET_CHAR_HEADING army_d8[1] 266.82 SET_CHAR_DECISION_MAKER army_d8[1] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[1] WEAPONTYPE_M4 99999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[1] 5.0 ADD_BLIP_FOR_CHAR army_d8[1] armyblips_d8[1] CHANGE_BLIP_DISPLAY armyblips_d8[1] BLIP_ONLY // SET_INFORM_RESPECTED_FRIENDS army_d8[1] 5.0 1 TASK_PLAY_ANIM army_d8[1] ROADCROSS PED 4.0 TRUE FALSE FALSE FALSE -1 SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[1] TRUE //standing still by stairs CREATE_CHAR PEDTYPE_MISSION1 ARMY 245.1791 1879.5707 10.4609 army_d8[2] SET_CHAR_HEADING army_d8[2] 266.1505 SET_CHAR_DECISION_MAKER army_d8[2] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[2] WEAPONTYPE_M4 99999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[2] 5.0 SET_CHAR_ACCURACY army_d8[2] 80 ADD_BLIP_FOR_CHAR army_d8[2] armyblips_d8[2] CHANGE_BLIP_DISPLAY armyblips_d8[2] BLIP_ONLY // SET_INFORM_RESPECTED_FRIENDS army_d8[2] 5.0 1 TASK_PLAY_ANIM army_d8[2] ROADCROSS PED 4.0 TRUE FALSE FALSE FALSE -1 SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[2] TRUE //right side looking out CREATE_CHAR PEDTYPE_MISSION1 ARMY 245.1999 1863.9520 7.5618 army_d8[3] SET_CHAR_HEADING army_d8[3] 175.5655 SET_CHAR_DECISION_MAKER army_d8[3] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[3] WEAPONTYPE_M4 99999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[3] 5.0 ADD_BLIP_FOR_CHAR army_d8[3] armyblips_d8[3] CHANGE_BLIP_DISPLAY armyblips_d8[3] BLIP_ONLY // SET_INFORM_RESPECTED_FRIENDS army_d8[3] 5.0 1 SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[3] TRUE //walking around warhead CREATE_CHAR PEDTYPE_MISSION1 ARMY 261.9116 1870.7275 7.7578 army_d8[4] SET_CHAR_DECISION_MAKER army_d8[4] desert8stealth_DM SET_CHAR_HEADING army_d8[4] 186.0656 GIVE_WEAPON_TO_CHAR army_d8[4] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[4] 5.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 261.6897 1860.4635 7.7650 ROADCROSS PED EXTEND_PATROL_ROUTE 256.1913 1859.6267 7.7650 ROADCROSS PED EXTEND_PATROL_ROUTE 256.0048 1870.2073 7.7900 ROADCROSS PED EXTEND_PATROL_ROUTE 261.9116 1870.7275 7.7578 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[4] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[4] armyblips_d8[4] CHANGE_BLIP_DISPLAY armyblips_d8[4] BLIP_ONLY // SET_INFORM_RESPECTED_FRIENDS army_d8[4] 5.0 1 SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[4] TRUE //vehicle CREATE_CAR TUG 241.0877 1843.9514 7.7578 car_d8 SET_CAR_HEADING car_d8 268.7216 //patrol by vehicle CREATE_CHAR PEDTYPE_MISSION1 ARMY 243.0288 1846.4508 7.7650 army_d8[5] SET_CHAR_DECISION_MAKER army_d8[5] desert8stealth_DM SET_CHAR_HEALTH army_d8[5] 10 SET_CHAR_HEADING army_d8[5] 270.7867 GIVE_WEAPON_TO_CHAR army_d8[5] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[5] 5.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 255.3062 1846.2761 7.7734 ROADCROSS PED EXTEND_PATROL_ROUTE 243.0288 1846.4508 7.7650 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[5] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[5] armyblips_d8[5] CHANGE_BLIP_DISPLAY armyblips_d8[5] BLIP_ONLY // SET_INFORM_RESPECTED_FRIENDS army_d8[5] 5.0 1 SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[5] TRUE ADD_BLIP_FOR_COORD 267.015 1862.51 7.76 jetpack_d8blip SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR jetpack_d8blip TRUE PLAYER_TAKE_OFF_GOGGLES PLAYER1 FALSE LOAD_SCENE 248.83 1827.63 7.46 LOAD_SCENE_IN_DIRECTION 282.28 1814.04 7.54 326.0 DO_FADE 500 FADE_IN SET_RADAR_ZOOM 100 //SET_DARKNESS_EFFECT FALSE -1 CREATE_CHAR PEDTYPE_MISSION1 ARMY 248.925 1832.315 6.55 cutchar_d8 SET_CHAR_HEADING cutchar_d8 1.5 GIVE_WEAPON_TO_CHAR cutchar_d8 WEAPONTYPE_M4 9999 TASK_PLAY_ANIM cutchar_d8 ROADCROSS PED 4.0 FALSE FALSE FALSE FALSE 1000 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// SKIP_CUTSCENE_START /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// SET_FIXED_CAMERA_POSITION 278.6251 1812.8367 4.8301 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 279.2745 1813.5579 5.0711 JUMP_CUT PRINT_NOW DST8_42 5000 1 //~s~Make your way through Area 69 to the research lab which will give you access to the black project. TIMERA = 0 WHILE TIMERA < 5000 WAIT 0 ENDWHILE LOAD_SCENE_IN_DIRECTION 255.93 1838.05 7.73 142.0 SET_FIXED_CAMERA_POSITION 252.5037 1836.2418 8.5554 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 252.0391 1835.3632 8.4453 JUMP_CUT PRINT_NOW DST8_43 8000 1 //~s~There are several military personnel on patrol throughout the installation. TIMERA = 0 WHILE TIMERA < 4000 WAIT 0 ENDWHILE LOAD_SCENE 249.6 1869.03 11.0 SET_FIXED_CAMERA_POSITION 262.0718 1869.7272 13.1620 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 261.4835 1868.9966 12.8154 JUMP_CUT TIMERA = 0 WHILE TIMERA < 4000 WAIT 0 ENDWHILE LOAD_SCENE_IN_DIRECTION 223.75 1822.57 7.51 68.0 SET_FIXED_CAMERA_POSITION 217.0121 1822.6581 6.4205 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 216.0150 1822.6718 6.4959 JUMP_CUT DELETE_CHAR cutchar_d8 PRINT_NOW DST8_44 5000 1 //~s~The control room will allow you to deactivate some of Area 69's exterior defences. TIMERA = 0 WHILE TIMERA < 5000 WAIT 0 ENDWHILE /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// SKIP_CUTSCENE_END /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// DELETE_CHAR cutchar_d8 SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER PRINT_NOW DST8_45 5000 1 //~s~Go get the ~g~black project~s~. REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_CLAXON_START TIMERB = 0 audioinside_d8flag = 1 progressaudio_d8flag = 0 handlingudio_d8flag = 0 //cut scenes outsidearea51_d8flag = 6 inside_d8flag = 1 CHECKPOINT_SAVE 99 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// Inside Area 51 ////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //imran //player is in second room IF inside_d8flag = 1 IF audioinside_d8flag = 1 IF TIMERB > 5000 audioinside_d8flag = 2 ENDIF ENDIF IF audioinside_d8flag = 2 GOSUB process_audio_d8 IF room_d8flag < 3 IF progressaudio_d8flag = 0 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_FB //Installation personnel please be aware we are at Condition Red. This is not a drill! $input_text_d8 = DES8_FB //Installation personnel please be aware we are at Condition Red. This is not a drill! GOSUB load_audio_d8 ENDIF ENDIF IF progressaudio_d8flag = 1 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_FC //This facility has been breached, all security personnel head to the research labs now! $input_text_d8 = DES8_FC //This facility has been breached, all security personnel head to the research labs now! GOSUB load_audio_d8 TIMERB = 0 ENDIF ENDIF //text below should not come up IF TIMERB > 10000 IF progressaudio_d8flag = 2 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_GD //Personnel are reminded that the downloading of pornography is strictly prohibited. $input_text_d8 = DUMMY //Personnel are reminded that the downloading of pornography is strictly prohibited. GOSUB load_audio_d8 TIMERB = 0 ENDIF ENDIF ENDIF IF TIMERB > 7500 IF progressaudio_d8flag = 3 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_GE //The Composites Lab would like to remind Diagnostics that their fridge is off limits to Diagnostics staff! $input_text_d8 = DUMMY //The Composites Lab would like to remind Diagnostics that their fridge is off limits to Diagnostics staff! GOSUB load_audio_d8 TIMERB = 0 ENDIF ENDIF ENDIF IF TIMERB > 5500 IF progressaudio_d8flag = 4 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_GJ //Diagnostics would like to point out that they know that the Composites Lab stole their coffee last weekend. $input_text_d8 = DUMMY //Diagnostics would like to point out that they know that the Composites Lab stole their coffee last weekend. GOSUB load_audio_d8 TIMERB = 0 ENDIF ENDIF ENDIF IF TIMERB > 8000 IF progressaudio_d8flag = 5 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_GA //All personnel wishing to go to Shezan tonight, please inform reception at your earliest convenience. $input_text_d8 = DUMMY //All personnel wishing to go to Shezan tonight, please inform reception at your earliest convenience. GOSUB load_audio_d8 TIMERB = 0 ENDIF ENDIF ENDIF IF TIMERB > 12000 IF progressaudio_d8flag = 6 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_GK //Could whoever stole the Composite Lab’s mugs please return them. $input_text_d8 = DUMMY //Could whoever stole the Composite Lab’s mugs please return them. GOSUB load_audio_d8 TIMERB = 0 ENDIF ENDIF ENDIF IF TIMERB > 12500 IF progressaudio_d8flag = 7 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_GG //The Globular Deli have arrived in the canteen. $input_text_d8 = DUMMY //The Globular Deli have arrived in the canteen. GOSUB load_audio_d8 TIMERB = 0 ENDIF ENDIF ENDIF IF TIMERB > 12000 IF progressaudio_d8flag = 8 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_GC //Tonight’s menu is posted in the canteen. Barf bags can be ordered from human resources. $input_text_d8 = DUMMY //Tonight’s menu is posted in the canteen. Barf bags can be ordered from human resources. GOSUB load_audio_d8 TIMERB = 0 ENDIF ENDIF ENDIF IF TIMERB > 25000 IF progressaudio_d8flag = 9 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_GL //Could the owner of the alien culture in the Diagnostics Lab’s fridge, kindly remove it please! $input_text_d8 = DUMMY //Could the owner of the alien culture in the Diagnostics Lab’s fridge, kindly remove it please! GOSUB load_audio_d8 TIMERB = 0 ENDIF ENDIF ENDIF IF TIMERB > 15000 IF progressaudio_d8flag = 10 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_GM //Personnel found stealing alien technology will NOT be invited on the next staff night out! $input_text_d8 = DUMMY //Personnel found stealing alien technology will NOT be invited on the next staff night out! GOSUB load_audio_d8 TIMERB = 0 ENDIF ENDIF ENDIF IF TIMERB > 20000 IF progressaudio_d8flag = 11 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_GF //Can personnel please make sure that they shut all the windows before they leave tonight! $input_text_d8 = DUMMY //Can personnel please make sure that they shut all the windows before they leave tonight! GOSUB load_audio_d8 TIMERB = 0 ENDIF ENDIF ENDIF IF TIMERB > 15000 IF progressaudio_d8flag = 12 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_GN //Could all personnel remember that the quarantine breach alarm test has now been moved to Monday mornings. $input_text_d8 = DUMMY //Could all personnel remember that the quarantine breach alarm test has now been moved to Monday mornings. GOSUB load_audio_d8 TIMERB = 0 ENDIF ENDIF ENDIF IF TIMERB > 10000 IF progressaudio_d8flag = 13 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_GB //Personnel are reminded that running in corridors whilst holding scissors is NOT permitted. $input_text_d8 = DUMMY //Personnel are reminded that running in corridors whilst holding scissors is NOT permitted. GOSUB load_audio_d8 TIMERB = 0 ENDIF ENDIF ENDIF IF TIMERB > 12000 IF progressaudio_d8flag = 14 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_GH //The Cola machine has now been re-filled! $input_text_d8 = DUMMY //The Cola machine has now been re-filled! GOSUB load_audio_d8 TIMERB = 0 ENDIF ENDIF ENDIF ENDIF IF jetdoor_d8flag = 2 IF progressaudio_d8flag = 0 IF TIMERB > 2000 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_HA //Code red, code red! $input_text_d8 = DST8_34 //Code red, code red! GOSUB load_audio_d8 ENDIF ENDIF ENDIF IF progressaudio_d8flag = 1 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_HB //Intruder has penetrated the project! All military personnel to the launch bay IMMEDIATELY!†$input_text_d8 = DES8_HB //Intruder has penetrated the project! All military personnel to the launch bay IMMEDIATELY!†GOSUB load_audio_d8 ENDIF ENDIF ENDIF ENDIF IF room_d8flag = 0 IF IS_CHAR_IN_AREA_3D scplayer 266.53 1849.53 8.0 237.01 1837.55 10.52 FALSE //main walk way CREATE_CHAR PEDTYPE_MISSION1 ARMY 248.5208 1806.6808 6.5619 army_d8[6] SET_CHAR_DECISION_MAKER army_d8[6] desert8stealth_DM SET_CHAR_HEADING army_d8[6] 359.2584 GIVE_WEAPON_TO_CHAR army_d8[6] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[6] 5.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 248.8298 1835.7720 6.5471 ROADCROSS PED EXTEND_PATROL_ROUTE 248.5208 1809.6808 6.5619 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[6] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[6] armyblips_d8[6] CHANGE_BLIP_DISPLAY armyblips_d8[6] BLIP_ONLY SET_CHAR_ACCURACY army_d8[6] 80 // SET_INFORM_RESPECTED_FRIENDS army_d8[6] 5.0 1 SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[6] TRUE //standing opposite road entrance CREATE_CHAR PEDTYPE_MISSION1 ARMY 254.1943 1835.3647 3.7175 army_d8[7] SET_CHAR_HEADING army_d8[7] 271.2598 SET_CHAR_DECISION_MAKER army_d8[7] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[7] WEAPONTYPE_M4 99999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[7] 5.0 ADD_BLIP_FOR_CHAR army_d8[7] armyblips_d8[7] CHANGE_BLIP_DISPLAY armyblips_d8[7] BLIP_ONLY // SET_INFORM_RESPECTED_FRIENDS army_d8[7] 5.0 1 TASK_PLAY_ANIM army_d8[7] ROADCROSS PED 4.0 TRUE FALSE FALSE FALSE 6000 SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[7] TRUE SET_CHAR_ACCURACY army_d8[7] 80 //walking down the bottom CREATE_CHAR PEDTYPE_MISSION1 ARMY 249.41 1825.84 4.7 army_d8[8] SET_CHAR_DECISION_MAKER army_d8[8] desert8stealth_DM SET_CHAR_HEADING army_d8[8] 180.5658 GIVE_WEAPON_TO_CHAR army_d8[8] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[8] 5.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 249.63 1816.64 4.71 ROADCROSS PED EXTEND_PATROL_ROUTE 249.41 1825.84 4.7 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[8] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[8] armyblips_d8[8] CHANGE_BLIP_DISPLAY armyblips_d8[8] BLIP_ONLY // SET_INFORM_RESPECTED_FRIENDS army_d8[8] 5.0 1 SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[8] TRUE //near hq room CREATE_CHAR PEDTYPE_MISSION1 ARMY 236.5669 1813.1033 6.4213 army_d8[9] SET_CHAR_DECISION_MAKER army_d8[9] desert8stealth_DM SET_CHAR_HEADING army_d8[9] 167.7513 GIVE_WEAPON_TO_CHAR army_d8[9] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[9] 5.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 236.0416 1803.5186 6.4219 ROADCROSS PED EXTEND_PATROL_ROUTE 243.1650 1803.0487 6.4219 ROADCROSS PED EXTEND_PATROL_ROUTE 236.0416 1803.5186 6.4219 ROADCROSS PED EXTEND_PATROL_ROUTE 236.5669 1813.1033 6.4213 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[9] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[9] armyblips_d8[9] CHANGE_BLIP_DISPLAY armyblips_d8[9] BLIP_ONLY // SET_INFORM_RESPECTED_FRIENDS army_d8[9] 5.0 1 SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[9] TRUE //right walkway CREATE_CHAR PEDTYPE_MISSION1 ARMY 284.416 1816.59 3.8 army_d8[11] SET_CHAR_DECISION_MAKER army_d8[11] desert8stealth_DM SET_CHAR_HEADING army_d8[11] 83.92 GIVE_WEAPON_TO_CHAR army_d8[11] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[11] 5.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 265.829 1816.31 4.7 ROADCROSS PED EXTEND_PATROL_ROUTE 284.416 1816.59 4.72 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[11] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[11] armyblips_d8[11] CHANGE_BLIP_DISPLAY armyblips_d8[11] BLIP_ONLY // SET_INFORM_RESPECTED_FRIENDS army_d8[11] 5.0 1 SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[11] TRUE //scientist on walkway CREATE_CHAR PEDTYPE_MISSION1 WMOSCI 245.3671 1830.2896 6.5547 army_d8[12] SET_CHAR_HEADING army_d8[12] 178.5107 SET_CHAR_DECISION_MAKER army_d8[12] desert8coward_DM SET_CHAR_HEALTH army_d8[12] 10 TASK_PLAY_ANIM army_d8[12] ATM PED 4.0 TRUE FALSE FALSE FALSE -1 //right in HQ CREATE_CHAR PEDTYPE_MISSION1 WMOSCI 213.3669 1825.5109 5.4141 army_d8[13] SET_CHAR_HEADING army_d8[13] 67.6565 SET_CHAR_DECISION_MAKER army_d8[13] desert8coward_DM SET_CHAR_HEALTH army_d8[13] 10 TASK_PLAY_ANIM army_d8[13] ATM PED 4.0 TRUE FALSE FALSE FALSE -1 //left in HQ CREATE_CHAR PEDTYPE_MISSION1 WMOSCI 214.1768 1818.7389 5.4216 army_d8[14] SET_CHAR_HEADING army_d8[14] 113.5239 SET_CHAR_DECISION_MAKER army_d8[14] desert8coward_DM SET_CHAR_HEALTH army_d8[14] 10 TASK_PLAY_ANIM army_d8[14] ATM PED 4.0 TRUE FALSE FALSE FALSE -1 //213.4856 1822.8217 5.4216 92.7748 locate to switch off sams //keycard room_d8flag = 1 ENDIF ENDIF //corridors IF room_d8flag = 1 IF IS_CHAR_IN_AREA_3D scplayer 301.6813 1821.8008 7.1396 272.5243 1826.9480 10.3607 FALSE CREATE_CHAR PEDTYPE_MISSION1 ARMY 280.7216 1840.1617 6.7266 army_d8[15] SET_CHAR_DECISION_MAKER army_d8[15] desert8stealth_DM SET_CHAR_HEADING army_d8[15] 262.0249 GIVE_WEAPON_TO_CHAR army_d8[15] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[15] 5.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 292.8436 1839.7808 6.7266 ROADCROSS PED EXTEND_PATROL_ROUTE 280.7216 1840.1617 6.7266 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[15] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[15] armyblips_d8[15] CHANGE_BLIP_DISPLAY armyblips_d8[15] BLIP_ONLY SET_CHAR_ACCURACY army_d8[15] 80 // SET_INFORM_RESPECTED_FRIENDS army_d8[15] 5.0 1 SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[15] TRUE CREATE_CHAR PEDTYPE_MISSION1 ARMY 301.3004 1839.9022 6.7266 army_d8[16] SET_CHAR_DECISION_MAKER army_d8[16] desert8stealth_DM SET_CHAR_HEADING army_d8[16] 91.0904 GIVE_WEAPON_TO_CHAR army_d8[16] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[16] 5.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 328.5270 1839.6735 6.8281 ROADCROSS PED EXTEND_PATROL_ROUTE 301.3004 1839.9022 6.7266 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[16] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[16] armyblips_d8[16] SET_CHAR_ACCURACY army_d8[16] 80 CHANGE_BLIP_DISPLAY armyblips_d8[16] BLIP_ONLY // SET_INFORM_RESPECTED_FRIENDS army_d8[16] 5.0 1 SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[16] TRUE CREATE_CHAR PEDTYPE_MISSION1 ARMY 329.3857 1855.2948 6.8357 army_d8[17] SET_CHAR_DECISION_MAKER army_d8[17] desert8stealth_DM SET_CHAR_HEADING army_d8[17] 272.6715 GIVE_WEAPON_TO_CHAR army_d8[17] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[17] 5.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 317.4110 1855.2742 6.7341 ROADCROSS PED EXTEND_PATROL_ROUTE 329.3857 1855.2948 6.8357 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[17] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[17] armyblips_d8[17] CHANGE_BLIP_DISPLAY armyblips_d8[17] BLIP_ONLY SET_CHAR_ACCURACY army_d8[17] 80 // SET_INFORM_RESPECTED_FRIENDS army_d8[17] 5.0 1 SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[17] TRUE CREATE_CHAR PEDTYPE_MISSION1 ARMY 298.3582 1856.0538 6.8281 army_d8[18] SET_CHAR_DECISION_MAKER army_d8[18] desert8stealth_DM SET_CHAR_HEADING army_d8[18] 167.8933 GIVE_WEAPON_TO_CHAR army_d8[18] WEAPONTYPE_M4 9999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[18] 5.0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE 297.3482 1868.0016 7.7578 ROADCROSS PED EXTEND_PATROL_ROUTE 298.3582 1856.0538 6.8281 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE army_d8[18] PEDMOVE_WALK FOLLOW_ROUTE_LOOP ADD_BLIP_FOR_CHAR army_d8[18] armyblips_d8[18] CHANGE_BLIP_DISPLAY armyblips_d8[18] BLIP_ONLY SET_CHAR_ACCURACY army_d8[18] 80 // SET_INFORM_RESPECTED_FRIENDS army_d8[18] 5.0 1 SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[18] TRUE CREATE_CHAR PEDTYPE_MISSION1 ARMY 313.7065 1845.5508 6.7341 army_d8[19] SET_CHAR_HEADING army_d8[19] 2.8719 SET_CHAR_DECISION_MAKER army_d8[19] desert8stealth_DM GIVE_WEAPON_TO_CHAR army_d8[19] WEAPONTYPE_M4 99999 SET_FOLLOW_NODE_THRESHOLD_DISTANCE army_d8[19] 5.0 ADD_BLIP_FOR_CHAR army_d8[19] armyblips_d8[19] CHANGE_BLIP_DISPLAY armyblips_d8[19] BLIP_ONLY SET_CHAR_ACCURACY army_d8[19] 80 // SET_INFORM_RESPECTED_FRIENDS army_d8[19] 5.0 1 SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[19] TRUE CREATE_OBJECT_NO_OFFSET a51_labdoor 268.66 1864.059 7.5 jetdoor_d8 DONT_REMOVE_OBJECT jetdoor_d8 SET_OBJECT_PROOFS jetdoor_d8 TRUE TRUE TRUE TRUE TRUE room_d8flag = 2 ENDIF ENDIF //disable sam site IF samsite_d8flag = 0 IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer 212.93 1822.82 5.41 1.0 1.0 3.0 TRUE TIMERA = 0 SET_PLAYER_CONTROL PLAYER1 OFF SET_CHAR_HEADING scplayer 92.24 TASK_PLAY_ANIM scplayer ATM PED 8.0 FALSE FALSE FALSE FALSE 500 samsite_d8flag = 1 ENDIF ENDIF IF samsite_d8flag = 1 IF TIMERA > 500 CLEAR_CHAR_TASKS scplayer PRINT_NOW DES8_21 4000 1 //SAM sites disabled. SET_AREA51_SAM_SITE OFF SET_PLAYER_CONTROL PLAYER1 ON samsite_d8flag = 2 ENDIF ENDIF //remove blips and mark army guys as no longer needed if they are dead spotlight_d8loop = 0 WHILE spotlight_d8loop < 22 IF IS_CHAR_DEAD army_d8[spotlight_d8loop] IF DOES_BLIP_EXIST armyblips_d8[spotlight_d8loop] REMOVE_BLIP armyblips_d8[spotlight_d8loop] MARK_CHAR_AS_NO_LONGER_NEEDED army_d8[spotlight_d8loop] ENDIF ENDIF spotlight_d8loop++ ENDWHILE IF room_d8flag = 2 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 287.0 1870.0 9.0 6.0 6.0 6.0 FALSE PRINT_NOW DST8_46 5000 1 //~s~The ~y~door to the launch bay where the black project is being stored is locked. Find a keycard to access it. CREATE_CHAR PEDTYPE_MISSION1 WMOSCI 276.57 1854.53 7.75 sci_d8 SET_CHAR_HEADING sci_d8 175.15 SET_CHAR_DECISION_MAKER sci_d8 desert8empty_DM SET_CHAR_HEALTH sci_d8 10 TASK_STAY_IN_SAME_PLACE sci_d8 TRUE TASK_PLAY_ANIM sci_d8 ATM PED 8.0 TRUE FALSE FALSE FALSE 1000 sci_d8flag = 1 room_d8flag = 3 ENDIF ENDIF //scientist dropping keycard IF sci_d8flag = 1 IF NOT IS_CHAR_DEAD sci_d8 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR sci_d8 scplayer OR IS_PLAYER_TARGETTING_CHAR PLAYER1 sci_d8 OR IS_CHAR_SHOOTING_IN_AREA scplayer 282.25 1852.36 264.28 1863.69 FALSE OR IS_CHAR_IN_AREA_2D scplayer 282.25 1852.36 264.28 1863.69 FALSE TASK_HANDS_UP sci_d8 20000 IF HAS_MISSION_AUDIO_LOADED 2 ATTACH_MISSION_AUDIO_TO_CHAR 2 sci_d8 PLAY_MISSION_AUDIO 2 PRINT_NOW DES8_AA 2000 1//Please, no more violence! Take my pass card and go! ENDIF CREATE_PICKUP KEYCARD PICKUP_ONCE 276.57 1854.53 8.75 keycard_d8 SET_CHAR_DECISION_MAKER sci_d8 desert8coward_DM ADD_BLIP_FOR_PICKUP keycard_d8 keycard_d8blip PRINT DST8_25 5000 1 //~s~Collect the ~g~keycard ~S~and open the ~y~door ~s~to where the Black project is located. sci_d8flag = 2 ENDIF ELSE CREATE_PICKUP KEYCARD PICKUP_ONCE 276.57 1854.53 8.75 keycard_d8 ADD_BLIP_FOR_PICKUP keycard_d8 keycard_d8blip PRINT_NOW DST8_25 5000 1 //~s~Collect the ~g~keycard ~S~and open the ~y~door ~s~to where the Black project is located. sci_d8flag = 2 ENDIF ENDIF IF sci_d8flag = 2 IF IS_CHAR_DEAD sci_d8 IF scishot_d8flag = 0 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT DST8_25 scishot_d8flag = 1 ENDIF ENDIF IF HAS_PICKUP_BEEN_COLLECTED keycard_d8 REMOVE_BLIP keycard_d8blip sci_d8flag = 3 ENDIF ENDIF // IF room_d8flag = 3 IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer 267.015 1862.51 7.76 1.0 1.0 5.0 TRUE IF sci_d8flag = 3 SET_CHAR_HEADING scplayer 6.3 TIMERA = 0 SET_PLAYER_CONTROL PLAYER1 OFF TASK_PLAY_ANIM scplayer ATM PED 8.0 FALSE FALSE FALSE FALSE 500 room_d8flag = 4 ELSE PRINT_NOW DST8_24 5000 1 //You need to get a keycard to open this door. ENDIF ENDIF ENDIF IF room_d8flag = 4 IF DOES_OBJECT_EXIST jetdoor_d8 IF TIMERA > 500 jetdoor_d8flag = 1 IF DOES_OBJECT_EXIST jetdoor_d8 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT jetdoor_d8 SOUND_SHUTTER_DOOR_START ENDIF //main walkway DELETE_CHAR army_d8[6] //near hq room DELETE_CHAR army_d8[9] //scientist on walkway DELETE_CHAR army_d8[12] //right in HQ DELETE_CHAR army_d8[13] //left in HQ DELETE_CHAR army_d8[14] //right side between boxes looking out DELETE_CHAR army_d8[1] //standing still by stairs DELETE_CHAR army_d8[2] //right side looking out DELETE_CHAR army_d8[3] //walking around warhead DELETE_CHAR army_d8[4] //patrol by vehicle DELETE_CHAR army_d8[5] CLEAR_CHAR_TASKS scplayer SET_PLAYER_CONTROL PLAYER1 ON CREATE_CHAR PEDTYPE_MISSION1 ARMY 261.5664 1891.8499 7.4446 army_d8[6] SET_CHAR_DECISION_MAKER army_d8[6] desert8empty_DM SET_CHAR_HEADING army_d8[6] 212.7731 GIVE_WEAPON_TO_CHAR army_d8[6] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[6] TRUE SET_CHAR_HEALTH army_d8[6] 150 SET_CHAR_ACCURACY army_d8[6] 80 ADD_BLIP_FOR_CHAR army_d8[6] armyblips_d8[6] CHANGE_BLIP_DISPLAY armyblips_d8[6] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[6] TRUE enemy_d8 = army_d8[6] GOSUB stayshoot_d8label CREATE_CHAR PEDTYPE_MISSION1 ARMY 268.4905 1890.0736 4.8750 army_d8[9] SET_CHAR_DECISION_MAKER army_d8[9] desert8empty_DM SET_CHAR_HEADING army_d8[9] 176.3921 GIVE_WEAPON_TO_CHAR army_d8[9] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[9] TRUE SET_CHAR_HEALTH army_d8[9] 150 SET_CHAR_ACCURACY army_d8[9] 30 ADD_BLIP_FOR_CHAR army_d8[9] armyblips_d8[9] CHANGE_BLIP_DISPLAY armyblips_d8[9] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[9] TRUE enemy_d8 = army_d8[9] GOSUB stayshoot_d8label CREATE_CHAR PEDTYPE_MISSION1 ARMY 274.3991 1880.7250 -1.3518 army_d8[13] SET_CHAR_DECISION_MAKER army_d8[13] desert8empty_DM SET_CHAR_HEADING army_d8[13] 65.8577 GIVE_WEAPON_TO_CHAR army_d8[13] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[13] TRUE SET_CHAR_HEALTH army_d8[13] 150 SET_CHAR_ACCURACY army_d8[13] 80 ADD_BLIP_FOR_CHAR army_d8[13] armyblips_d8[13] CHANGE_BLIP_DISPLAY armyblips_d8[13] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[13] TRUE enemy_d8 = army_d8[13] GOSUB stayshoot_d8label CREATE_CHAR PEDTYPE_MISSION1 ARMY 268.9641 1878.0194 -4.5078 army_d8[14] SET_CHAR_DECISION_MAKER army_d8[14] desert8empty_DM SET_CHAR_HEADING army_d8[14] 352.3847 GIVE_WEAPON_TO_CHAR army_d8[14] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[14] TRUE SET_CHAR_HEALTH army_d8[14] 150 SET_CHAR_ACCURACY army_d8[14] 40 ADD_BLIP_FOR_CHAR army_d8[14] armyblips_d8[14] CHANGE_BLIP_DISPLAY armyblips_d8[14] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[14] TRUE enemy_d8 = army_d8[14] GOSUB stayshoot_d8label CREATE_CHAR PEDTYPE_MISSION1 ARMY 262.9983 1883.6240 -9.2031 army_d8[1] SET_CHAR_DECISION_MAKER army_d8[1] desert8empty_DM SET_CHAR_HEADING army_d8[1] 259.5976 GIVE_WEAPON_TO_CHAR army_d8[1] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[1] TRUE SET_CHAR_HEALTH army_d8[1] 100 SET_CHAR_ACCURACY army_d8[1] 80 ADD_BLIP_FOR_CHAR army_d8[1] armyblips_d8[1] CHANGE_BLIP_DISPLAY armyblips_d8[1] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[1] TRUE enemy_d8 = army_d8[1] GOSUB stayshoot_d8label CREATE_CHAR PEDTYPE_MISSION1 ARMY 268.0892 1889.7094 -13.8984 army_d8[2] SET_CHAR_DECISION_MAKER army_d8[2] desert8empty_DM SET_CHAR_HEADING army_d8[2] 197.1955 GIVE_WEAPON_TO_CHAR army_d8[2] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[2] TRUE SET_CHAR_HEALTH army_d8[2] 150 SET_CHAR_ACCURACY army_d8[2] 25 ADD_BLIP_FOR_CHAR army_d8[2] armyblips_d8[2] CHANGE_BLIP_DISPLAY armyblips_d8[2] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[2] TRUE enemy_d8 = army_d8[2] GOSUB stayshoot_d8label CREATE_CHAR PEDTYPE_MISSION1 ARMY 274.8945 1884.5248 -18.5859 army_d8[3] SET_CHAR_DECISION_MAKER army_d8[3] desert8empty_DM SET_CHAR_HEADING army_d8[3] 117.7696 GIVE_WEAPON_TO_CHAR army_d8[3] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[3] TRUE SET_CHAR_HEALTH army_d8[3] 120 SET_CHAR_ACCURACY army_d8[3] 80 ADD_BLIP_FOR_CHAR army_d8[3] armyblips_d8[3] CHANGE_BLIP_DISPLAY armyblips_d8[3] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[3] TRUE enemy_d8 = army_d8[3] GOSUB stayshoot_d8label CREATE_CHAR PEDTYPE_MISSION1 ARMY 270.4637 1878.0315 -22.7266 army_d8[4] SET_CHAR_DECISION_MAKER army_d8[4] desert8empty_DM SET_CHAR_HEADING army_d8[4] 117.7696 GIVE_WEAPON_TO_CHAR army_d8[4] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[4] TRUE SET_CHAR_HEALTH army_d8[4] 150 SET_CHAR_ACCURACY army_d8[4] 85 ADD_BLIP_FOR_CHAR army_d8[4] armyblips_d8[4] CHANGE_BLIP_DISPLAY armyblips_d8[4] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[4] TRUE enemy_d8 = army_d8[4] GOSUB stayshoot_d8label CREATE_CHAR PEDTYPE_MISSION1 ARMY 262.6877 1883.4840 -27.9766 army_d8[5] SET_CHAR_DECISION_MAKER army_d8[5] desert8empty_DM SET_CHAR_HEADING army_d8[5] 117.7696 GIVE_WEAPON_TO_CHAR army_d8[5] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[5] TRUE SET_CHAR_HEALTH army_d8[5] 150 SET_CHAR_ACCURACY army_d8[5] 80 ADD_BLIP_FOR_CHAR army_d8[5] armyblips_d8[5] CHANGE_BLIP_DISPLAY armyblips_d8[5] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR armyblips_d8[5] TRUE enemy_d8 = army_d8[5] GOSUB stayshoot_d8label //vehicle MARK_CAR_AS_NO_LONGER_NEEDED car_d8 MARK_MODEL_AS_NO_LONGER_NEEDED TUG //create guys //pickup CREATE_PICKUP_WITH_AMMO JETPACK PICKUP_ONCE 0 268.7 1884.1 -30.085 jetpack_d8 REMOVE_BLIP jetpack_d8blip ADD_BLIP_FOR_PICKUP jetpack_d8 jetpack_d8blip SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR jetpack_d8blip TRUE CLEAR_PRINTS PRINT_NOW DST8_34 5000 1 //~s~The Black Project is located at the bottom of the launchbay. room_d8flag = 5 ENDIF ENDIF ENDIF IF jetdoor_d8flag = 1 IF DOES_OBJECT_EXIST jetdoor_d8 IF SLIDE_OBJECT jetdoor_d8 268.66 1864.059 12.2 0.0 0.0 0.08 FALSE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT jetdoor_d8 SOUND_SHUTTER_DOOR_STOP progressaudio_d8flag = 0 handlingudio_d8flag = 0 TIMERB = 0 jetdoor_d8flag = 2 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// Launch bay Area 51 ////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF room_d8flag = 5 IF HAS_PICKUP_BEEN_COLLECTED jetpack_d8 REMOVE_BLIP jetpack_d8blip SET_PLAYER_CONTROL PLAYER1 OFF SWITCH_WIDESCREEN ON SET_TIME_OF_DAY 9 00 SET_CHAR_COORDINATES scplayer 268.591 1884.469 -31.0869 SET_CHAR_HEADING scplayer 180.99 TASK_JETPACK scplayer SET_FIXED_CAMERA_POSITION 268.5177 1886.2970 -29.5611 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 268.5393 1885.3157 -29.7523 JUMP_CUT SET_INTERPOLATION_PARAMETERS 0.0 3000 REQUEST_MODEL MICRO_UZI REQUEST_MODEL CAMPER LOAD_SPECIAL_CHARACTER 1 TRUTH PRINT_NOW DST8_26 7000 1 //~s~You now have what the Truth wanted. You must first escape by using the Jet pack to fly out the ~y~launch bay ~s~which is directly above you. WHILE NOT HAS_MODEL_LOADED MICRO_UZI OR NOT HAS_MODEL_LOADED CAMPER OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 WAIT 0 ENDWHILE DELETE_CAR car_d8 MARK_MODEL_AS_NO_LONGER_NEEDED TUG spotlight_d8loop = 0 WHILE spotlight_d8loop < 22 DELETE_CHAR army_d8[spotlight_d8loop] REMOVE_BLIP armyblips_d8[spotlight_d8loop] spotlight_d8loop++ ENDWHILE //create guys //outside CREATE_CHAR PEDTYPE_MISSION1 ARMY 139.9523 1929.0795 18.2062 army_d8[3] SET_CHAR_DECISION_MAKER army_d8[3] desert8empty_DM GIVE_WEAPON_TO_CHAR army_d8[3] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[3] TRUE SET_CHAR_HEALTH army_d8[3] 50 SET_CHAR_ACCURACY army_d8[3] 30 CREATE_CHAR PEDTYPE_MISSION1 ARMY 127.6658 1885.1527 17.0346 army_d8[4] SET_CHAR_DECISION_MAKER army_d8[4] desert8empty_DM GIVE_WEAPON_TO_CHAR army_d8[4] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[4] TRUE SET_CHAR_HEALTH army_d8[4] 50 SET_CHAR_ACCURACY army_d8[4] 30 CREATE_CHAR PEDTYPE_MISSION1 ARMY 114.7912 1830.3859 16.6406 army_d8[5] SET_CHAR_DECISION_MAKER army_d8[5] desert8empty_DM GIVE_WEAPON_TO_CHAR army_d8[5] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[5] TRUE SET_CHAR_HEALTH army_d8[5] 50 SET_CHAR_ACCURACY army_d8[5] 40 CREATE_CHAR PEDTYPE_MISSION1 ARMY 205.6079 1860.5575 19.6406 army_d8[6] SET_CHAR_DECISION_MAKER army_d8[6] desert8empty_DM GIVE_WEAPON_TO_CHAR army_d8[6] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[6] TRUE SET_CHAR_HEALTH army_d8[6] 50 SET_CHAR_ACCURACY army_d8[6] 30 CREATE_CHAR PEDTYPE_MISSION1 ARMY 245.2025 1881.9976 19.1052 army_d8[7] SET_CHAR_DECISION_MAKER army_d8[7] desert8empty_DM GIVE_WEAPON_TO_CHAR army_d8[7] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[7] TRUE SET_CHAR_HEALTH army_d8[7] 50 SET_CHAR_ACCURACY army_d8[7] 40 CREATE_CHAR PEDTYPE_MISSION1 ARMY 262.8257 1807.6687 24.4985 army_d8[8] SET_CHAR_DECISION_MAKER army_d8[8] desert8empty_DM GIVE_WEAPON_TO_CHAR army_d8[8] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[8] TRUE SET_CHAR_HEALTH army_d8[8] 50 SET_CHAR_ACCURACY army_d8[8] 30 CREATE_CHAR PEDTYPE_MISSION1 ARMY 279.2588 1863.7567 16.6406 army_d8[9] SET_CHAR_DECISION_MAKER army_d8[9] desert8empty_DM GIVE_WEAPON_TO_CHAR army_d8[9] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[9] TRUE SET_CHAR_HEALTH army_d8[9] 50 SET_CHAR_ACCURACY army_d8[9] 30 CREATE_CHAR PEDTYPE_MISSION1 ARMY 279.2344 1901.9054 16.6406 army_d8[10] SET_CHAR_DECISION_MAKER army_d8[10] desert8empty_DM GIVE_WEAPON_TO_CHAR army_d8[10] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[10] TRUE SET_CHAR_HEALTH army_d8[10] 50 SET_CHAR_ACCURACY army_d8[10] 40 CREATE_CHAR PEDTYPE_MISSION1 ARMY 254.6844 1907.7139 19.4742 army_d8[11] SET_CHAR_DECISION_MAKER army_d8[11] desert8empty_DM GIVE_WEAPON_TO_CHAR army_d8[11] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[11] TRUE SET_CHAR_HEALTH army_d8[11] 50 SET_CHAR_ACCURACY army_d8[11] 30 DELETE_OBJECT jetdoor_d8 CREATE_OBJECT_NO_OFFSET a51_labdoor 268.66 1864.059 7.5 jetdoor_d8 TIMERA = 0 room_d8flag = 6 ENDIF ENDIF IF launchdoor_d8flag = 1 IF DOES_OBJECT_EXIST launchdoor_a51 IF SLIDE_OBJECT launchdoor_a51 276.14 1884.06 15.924 0.05 0.0 0.0 FALSE launchdoor_d8flag = 2 ENDIF ENDIF ENDIF IF room_d8flag = 6 IF TIMERA > 1000 POINT_CAMERA_AT_POINT 268.5247 1886.0841 -28.5841 INTERPOLATION launchdoor_d8flag = 1 TIMERA = 0 room_d8flag = 7 ENDIF ENDIF IF room_d8flag = 7 IF TIMERA > 4000 FORCE_WEATHER_NOW WEATHER_SUNNY_DESERT GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_MICRO_UZI 200 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON SET_OBJECT_COORDINATES launchdoor_a51 276.14 1884.06 15.924 CLEAR_PRINTS REMOVE_BLIP jetpack_d8blip SET_RADAR_ZOOM 0 ADD_BLIP_FOR_COORD 268.9 1884.33 19.91 jetpack_d8blip //inside launch bay CREATE_CHAR PEDTYPE_MISSION1 ARMY 271.62 1878.08 -2.32 army_d8[0] SET_CHAR_DECISION_MAKER army_d8[0] desert8empty_DM SET_CHAR_HEADING army_d8[0] 212.7731 GIVE_WEAPON_TO_CHAR army_d8[0] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[0] TRUE SET_CHAR_HEALTH army_d8[0] 50 SET_CHAR_ACCURACY army_d8[0] 30 enemy_d8 = army_d8[0] GOSUB stayshoot_d8label CREATE_CHAR PEDTYPE_MISSION1 ARMY 266.112 1876.84 7.44 army_d8[1] SET_CHAR_DECISION_MAKER army_d8[1] desert8empty_DM SET_CHAR_HEADING army_d8[1] 328.04 GIVE_WEAPON_TO_CHAR army_d8[1] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[1] TRUE SET_CHAR_HEALTH army_d8[1] 50 SET_CHAR_ACCURACY army_d8[1] 30 enemy_d8 = army_d8[1] GOSUB stayshoot_d8label CREATE_CHAR PEDTYPE_MISSION1 ARMY 274.432 1888.28 3.21 army_d8[2] SET_CHAR_DECISION_MAKER army_d8[2] desert8empty_DM SET_CHAR_HEADING army_d8[2] 328.0 GIVE_WEAPON_TO_CHAR army_d8[2] WEAPONTYPE_M4 9999 TASK_STAY_IN_SAME_PLACE army_d8[2] TRUE SET_CHAR_HEALTH army_d8[2] 50 SET_CHAR_ACCURACY army_d8[2] 30 enemy_d8 = army_d8[2] GOSUB stayshoot_d8label inside_d8flag = 2 helptext_d8flag = 1 room_d8flag = 8 CHECKPOINT_SAVE 99 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// Outside area 51 ////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF inside_d8flag = 2 IF NOT IS_PLAYER_USING_JETPACK player1 PRINT_NOW DST8_49 2500 1 // ~s~Go back and get the jetpack! ENDIF IF jetdoor_d8flag = 3 GOSUB process_audio_d8 IF progressaudio_d8flag = 0 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_JA //Intruder is stealing the jet pack! All military personnel outside and fire at will! $input_text_d8 = DST8_35 //Intruder is stealing the jet pack! All military personnel outside and fire at will! GOSUB load_audio_d8 ENDIF ENDIF IF progressaudio_d8flag = 1 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_JB //Take him out! That’s a $60,000,000 project! $input_text_d8 = DES8_JB //Take him out! That’s a $60,000,000 project! GOSUB load_audio_d8 ENDIF ENDIF IF progressaudio_d8flag = 2 IF handlingudio_d8flag = 0 audio_label_d8 = SOUND_DES8_JC //Get the General Mills on the line! $input_text_d8 = DES8_JC //Get the General Mills on the line! GOSUB load_audio_d8 ENDIF ENDIF ENDIF IF helptext_d8flag < 8 IF helptext_d8flag = 1 PRINT_HELP_FOREVER_CONDITIONAL DST8_27 2 // Press ~m~~widget_accelerate~ to increase thrust - this will make you ascend. (CONDITION_FLAG_ACCELERATE) TIMERB = 0 helptext_d8flag = 2 ENDIF IF helptext_d8flag = 2 IF TIMERB > 6000 PRINT_HELP DST8_28 // To move in a direction with the jet pack use the movement controls while in the air. TIMERB = 0 helptext_d8flag = 3 ENDIF ENDIF IF helptext_d8flag = 3 IF TIMERB > 6000 PRINT_HELP_FOREVER_CONDITIONAL DST8_29 8 // To descend quickly press ~m~~widget_brake~. TIMERB = 0 helptext_d8flag = 4 ENDIF ENDIF IF helptext_d8flag = 4 IF TIMERB > 0 // This is simply not true! // PRINT_HELP DST8_30 // To strafe while in the jetpack press ~m~~widget_ped_move_left~ and ~m~~widget_ped_move_right~. TIMERB = 0 helptext_d8flag = 5 ENDIF ENDIF IF helptext_d8flag = 5 TIMERB = 0 helptext_d8flag = 6 ENDIF IF helptext_d8flag = 6 IF TIMERB > 6000 // PRINT_HELP DST8_32 //To hover in the jetpack hold down ~h~R2 and L2 simultaneously~w~. // not used in mobile PRINT_HELP DST8_33 //You can fire a single handed weapon as normal while in the jetpack. TIMERB = 0 helptext_d8flag = 7 ENDIF ENDIF IF helptext_d8flag = 7 IF TIMERB > 6000 // PRINT_HELP DST8_33 //You can fire a single handed weapon as normal while in the jetpack. TIMERB = 0 helptext_d8flag = 8 ENDIF ENDIF ENDIF IF room_d8flag = 8 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 268.73 1883.96 17.85 30.0 30.0 10.0 FALSE REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_CLAXON_STOP jetdoor_d8flag = 3 progressaudio_d8flag = 0 handlingudio_d8flag = 0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 268.73 1883.96 17.85 SOUND_CLAXON_START CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 103.946 1901.047 36.246 spotlight_d8bulb[0] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 103.946 1901.047 36.246 spotlight1_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 103.946 1901.047 36.246 spotlight1_d8base SET_OBJECT_HEALTH spotlight_d8bulb[0] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[0] TRUE CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 161.962 1933.043 36.246 spotlight_d8bulb[1] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 161.962 1933.043 36.246 spotlight2_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 161.962 1933.043 36.246 spotlight2_d8base SET_OBJECT_HEALTH spotlight_d8bulb[1] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[1] TRUE CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 233.486 1934.789 36.246 spotlight_d8bulb[2] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 233.486 1934.789 36.246 spotlight3_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 233.486 1934.789 36.246 spotlight3_d8base SET_OBJECT_HEALTH spotlight_d8bulb[2] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[2] TRUE CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 267.116 1895.241 36.246 spotlight_d8bulb[3] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 267.116 1895.241 36.246 spotlight4_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 267.116 1895.241 36.246 spotlight4_d8base SET_OBJECT_HEALTH spotlight_d8bulb[3] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[3] TRUE CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 262.145 1807.62 36.246 spotlight_d8bulb[4] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 262.145 1807.62 36.246 spotlight5_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 262.145 1807.62 36.246 spotlight5_d8base SET_OBJECT_HEALTH spotlight_d8bulb[4] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[4] TRUE CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 166.003 1849.937 36.246 spotlight_d8bulb[5] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 166.003 1849.937 36.246 spotlight6_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 166.003 1849.937 36.246 spotlight6_d8base SET_OBJECT_HEALTH spotlight_d8bulb[5] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[5] TRUE CREATE_OBJECT_NO_OFFSET A51_SPOTBULB 113.439 1814.405 36.246 spotlight_d8bulb[6] CREATE_OBJECT_NO_OFFSET A51_SPOTHOUSING 113.439 1814.405 36.246 spotlight7_d8housing CREATE_OBJECT_NO_OFFSET A51_SPOTBASE 113.439 1814.405 36.246 spotlight7_d8base SET_OBJECT_HEALTH spotlight_d8bulb[6] 5000 SET_OBJECT_ONLY_DAMAGED_BY_PLAYER spotlight_d8bulb[6] TRUE spotlight_d8loop = 0 WHILE spotlight_d8loop < 22 IF NOT IS_CHAR_DEAD army_d8[spotlight_d8loop] TASK_KILL_CHAR_ON_FOOT army_d8[spotlight_d8loop] scplayer ENDIF spotlight_d8loop++ ENDWHILE REMOVE_BLIP jetpack_d8blip ADD_BLIP_FOR_COORD -794.8 2425.184 156.124 jetpack_d8blip PRINT_NOW DST8_35 7000 1 //~s~Deliver the jetpack to a ~y~drop off point ~s~deep in the canyons. CREATE_CAR CAMPER -783.169 2430.03 156.23 truthcar_d8 FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION truthcar_d8 TRUE SET_CAR_HEADING truthcar_d8 171.04 CHANGE_CAR_COLOUR truthcar_d8 1 1 GIVE_VEHICLE_PAINTJOB truthcar_d8 0 // Looks like this is not available for this car (assertion in engine). WDFIXME CREATE_CHAR_INSIDE_CAR truthcar_d8 PEDTYPE_SPECIAL SPECIAL01 truth_d8 SET_CHAR_DECISION_MAKER truth_d8 desert8empty_DM SET_CAR_PROOFS truthcar_d8 TRUE TRUE TRUE TRUE TRUE SET_CHAR_PROOFS truth_d8 TRUE TRUE TRUE TRUE TRUE SET_VEHICLE_IS_CONSIDERED_BY_PLAYER truthcar_d8 FALSE truthcar_d8flag = 1 room_d8flag = 9 ENDIF ENDIF IF room_d8flag = 9 IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer 276.14 1884.06 100.0 100.0 FALSE spotlight_d8loop = 0 WHILE spotlight_d8loop < 22 MARK_CHAR_AS_NO_LONGER_NEEDED army_d8[spotlight_d8loop] MARK_MODEL_AS_NO_LONGER_NEEDED ARMY MARK_MODEL_AS_NO_LONGER_NEEDED M4 spotlight_d8loop++ ENDWHILE room_d8flag = 10 ENDIF ENDIF IF truthcar_d8flag = 1 IF NOT IS_CHAR_DEAD truth_d8 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D truth_d8 scplayer 200.0 200.0 FALSE REPORT_MISSION_AUDIO_EVENT_AT_POSITION 268.73 1883.96 17.85 SOUND_CLAXON_STOP IF NOT IS_CAR_DEAD truthcar_d8 FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION truthcar_d8 FALSE ENDIF CREATE_CAR SANCHEZ -776.66 2426.41 156.11 bike_d8 SET_CAR_HEADING bike_d8 175.776 truthcar_d8flag = 2 ENDIF ENDIF ENDIF IF truthcar_d8flag = 2 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -791.14 2425.33 156.2 3.0 3.0 3.0 TRUE IF NOT IS_PLAYER_USING_JETPACK player1 PRINT_NOW DST8_49 2500 1 // ~s~Go back and get the jetpack! ELSE CLEAR_AREA -810.94 2360.42 150.81 200.0 TRUE SET_PLAYER_CONTROL PLAYER1 OFF SWITCH_WIDESCREEN ON DO_FADE 500 FADE_OUT CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 1 SOUND_TRUX_BH //Carl, dude, man! LOAD_MISSION_AUDIO 2 SOUND_DES8_MB //Here you go, better stash it someplace fast! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer -791.178 2425.34 156.16 SET_CHAR_HEADING scplayer 256.615 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer truthcar_d8flag = 3 ENDIF ENDIF ENDIF //mission passed bit IF truthcar_d8flag = 3 SET_FIXED_CAMERA_POSITION -785.0004 2435.6792 157.5931 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -784.9536 2434.6821 157.5342 JUMP_CUT SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED DO_FADE 250 FADE_IN PLAY_MISSION_AUDIO 1 PRINT_NOW TRUX_BH 2000 1 //Carl, dude, man! WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_TRUX_BI //Far out, have a nice trip, dude. PLAY_MISSION_AUDIO 2 //Here you go, better stash it someplace fast! PRINT_NOW DES8_MB 3000 1//Here you go, better stash it someplace fast! TASK_PLAY_ANIM scplayer IDLE_CHAT PED 4.0 FALSE FALSE FALSE FALSE -1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 ENDWHILE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_DES8_MD //Hey, wait a... WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW DES8_MC 3000 1 //Far out, have a nice trip, dude. WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DES8_ME //Was it too much to get lift into town? IF NOT IS_CAR_DEAD truthcar_d8 CAR_GOTO_COORDINATES truthcar_d8 -810.94 2360.42 150.81 TIMERA = 0 truthcar_d8flag = 4 ENDIF IF NOT IS_CAR_DEAD truthcar_d8 TASK_LOOK_AT_VEHICLE scplayer truthcar_d8 5000 ENDIF WHILE NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 2 //DES8_MD //Hey, wait a... PRINT_NOW DES8_MD 2000 1// //Hey, wait a... WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 ENDWHILE WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW DES8_ME 2000 1 //Was it too much to get lift into town? WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE ENDIF IF truthcar_d8flag = 4 IF TIMERA > 2000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer DELETE_CAR truthcar_d8 DELETE_CHAR truth_d8 RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL PLAYER1 ON SWITCH_WIDESCREEN OFF DO_FADE 500 FADE_IN GOTO mission_mafia4_passed truthcar_d8flag = 5 ENDIF ENDIF ENDIF GOTO stealjetpack_main_mission_loop load_audio_d8: IF handlingudio_d8flag = 0 LOAD_MISSION_AUDIO 1 audio_label_d8 $text_label_d8 = $input_text_d8 handlingudio_d8flag = 1 ENDIF RETURN process_audio_d8: IF handlingudio_d8flag = 1 IF HAS_MISSION_AUDIO_LOADED 1 IF NOT $text_label_d8 = DUMMY PRINT_NOW $text_label_d8 4000 1 //Dummy message" ENDIF PLAY_MISSION_AUDIO 1 handlingudio_d8flag = 2 ENDIF ENDIF IF handlingudio_d8flag = 2 IF HAS_MISSION_AUDIO_FINISHED 1 progressaudio_d8flag++ stage1progressaudio_d8flag++ stage2progressaudio_d8flag++ CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS handlingudio_d8flag = 0 ENDIF ENDIF RETURN resetsearchlight_d8label: spotlight_d8loop = 0 WHILE spotlight_d8loop < NUMBEROFSEARCHLIGHTS_D8 IF DOES_SEARCHLIGHT_EXIST spotlight_d8[spotlight_d8loop] MOVE_SEARCHLIGHT_BETWEEN_COORDS spotlight_d8[spotlight_d8loop] startx[spotlight_d8loop] starty[spotlight_d8loop] startz[spotlight_d8loop] endx[spotlight_d8loop] endy[spotlight_d8loop] endz[spotlight_d8loop] 0.3 ENDIF spotlight_d8loop++ ENDWHILE RETURN searchlightfollowplayer_d8label: spotlight_d8loop2 = 0 WHILE spotlight_d8loop2 < NUMBEROFSEARCHLIGHTS_D8 IF DOES_SEARCHLIGHT_EXIST spotlight_d8[spotlight_d8loop2] POINT_SEARCHLIGHT_AT_CHAR spotlight_d8[spotlight_d8loop2] scplayer 0.125 ENDIF spotlight_d8loop2++ ENDWHILE RETURN stayshoot_d8label: OPEN_SEQUENCE_TASK stayshoot_d8seq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK stayshoot_d8seq PERFORM_SEQUENCE_TASK enemy_d8 stayshoot_d8seq CLEAR_SEQUENCE_TASK stayshoot_d8seq RETURN // **************************************** Mission mafia4 failed ************************ mission_mafia4_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" DELETE_OBJECT a51ventcover CREATE_OBJECT a51_ventcoverb 245.968 1862.843 19.49 a51ventcover // Put the vent cover back. SET_OBJECT_ROTATION a51ventcover 0.0 0.0 -140.998 DONT_REMOVE_OBJECT a51ventcover DELETE_OBJECT beer_bottle RETURN // **************************************** mission mafia4 passed ************************ mission_mafia4_passed: IF desert8_was_spotted = 0 WRITE_LOG "UNLOCK_ACHIEVEMENT THEY_CANT_STOP_ALL_OF_US" ENDIF flag_desert_mission_counter ++ SET_INT_STAT PASSED_DESERT8 1 CREATE_PICKUP_WITH_AMMO shotgspa PICKUP_ON_STREET_SLOW 30 297.8289 1846.6226 6.7266 pickup_weapon[210] // spaz in area 51 CREATE_PICKUP_WITH_AMMO JETPACK PICKUP_ON_STREET_SLOW 0 268.7 1884.1 -30.085 pickup_weapon[211] // the jet pack in area 51 CREATE_PICKUP bodyarmour PICKUP_ON_STREET_SLOW 266.2813 1816.3976 1.594 pickup_armour[46] // body armor for area 51 mission CREATE_PICKUP_WITH_AMMO IRGOGGLES PICKUP_ONCE 1 212.8813 1811.0046 21.4187 goggle_pickups[0] // in a control tower at area 51 CREATE_PICKUP_WITH_AMMO IRGOGGLES PICKUP_ONCE 1 1270.5201 -795.5929 1084.2537 goggle_pickups[1] // mad dogs mansion in LA CREATE_PICKUP_WITH_AMMO IRGOGGLES PICKUP_ONCE 1 -350.4990 1608.4366 75.6420 goggle_pickups[2] // near big satellite out in desert CREATE_PICKUP_WITH_AMMO IRGOGGLES PICKUP_ONCE 1 -2224.6802 129.1278 1035.6200 goggle_pickups[3] // inside zeros toy shop REMOVE_BLIP desert2_contact_blip REGISTER_MISSION_PASSED ( DESERT8 ) PLAY_MISSION_PASSED_TUNE 1 PLAYER_MADE_PROGRESS 1 PRINT_WITH_NUMBER_BIG ( M_PASSD ) 1 5000 1 //"Mission Passed!" CLEAR_WANTED_LEVEL player1 REMOVE_BLIP desert2_contact_blip RETURN // ********************************** mission cleanup ************************************** mission_cleanup_mafia4: flag_player_on_mission = 0 MARK_MODEL_AS_NO_LONGER_NEEDED ARMY MARK_MODEL_AS_NO_LONGER_NEEDED M4 MARK_MODEL_AS_NO_LONGER_NEEDED A51_SPOTBULB MARK_MODEL_AS_NO_LONGER_NEEDED A51_SPOTHOUSING MARK_MODEL_AS_NO_LONGER_NEEDED A51_SPOTBASE MARK_MODEL_AS_NO_LONGER_NEEDED CAMPER MARK_MODEL_AS_NO_LONGER_NEEDED KNIFECUR MARK_MODEL_AS_NO_LONGER_NEEDED SILENCED MARK_MODEL_AS_NO_LONGER_NEEDED TUG MARK_MODEL_AS_NO_LONGER_NEEDED WMOSCI MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED SNIPER MARK_MODEL_AS_NO_LONGER_NEEDED IRGOGGLES //misc SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 SET_RADAR_ZOOM 0 //SET_DARKNESS_EFFECT FALSE -1 RELEASE_WEATHER FORCE_INTERIOR_LIGHTING_FOR_PLAYER PLAYER1 FALSE SET_DISABLE_MILITARY_ZONES FALSE IF IS_PLAYER_PLAYING PLAYER1 SHUT_CHAR_UP scplayer FALSE ENDIF //truth MARK_CHAR_AS_NO_LONGER_NEEDED truth_d8 UNLOAD_SPECIAL_CHARACTER 1 //pickups, jetpack keycard //objects DELETE_OBJECT jetdoor_d8 //pickups REMOVE_PICKUP jetpack_d8 REMOVE_PICKUP keycard_d8 REMOVE_PICKUP armour1_d8 REMOVE_PICKUP health1_d8 REMOVE_PICKUP armour2_d8 REMOVE_PICKUP health2_d8 REMOVE_PICKUP armour3_d8 REMOVE_PICKUP armour4_d8 SHOW_BLIPS_ON_ALL_LEVELS FALSE //reset all doors IF DOES_OBJECT_EXIST launchdoor_a51 SET_OBJECT_COORDINATES launchdoor_a51 268.664 1884.06 15.925 ENDIF DELETE_OBJECT frontdoorr_a51 DELETE_OBJECT frontdoorl_a51 CREATE_OBJECT_NO_OFFSET a51_blastdoorR 215.941 1874.571 13.903 frontdoorr_a51 SET_OBJECT_HEADING frontdoorr_a51 0.0 CREATE_OBJECT_NO_OFFSET a51_blastdoorL 211.842 1874.571 13.903 frontdoorl_a51 SET_OBJECT_HEADING frontdoorl_a51 0.0 DONT_REMOVE_OBJECT frontdoorr_a51 DONT_REMOVE_OBJECT frontdoorl_a51 //remove blips spotlight_d8loop = 0 WHILE spotlight_d8loop < 22 REMOVE_BLIP armyblips_d8[spotlight_d8loop] spotlight_d8loop++ ENDWHILE REMOVE_BLIP blastdoor_d8blip REMOVE_BLIP jetpack_d8blip REMOVE_BLIP keycard_d8blip //remove searchlights spotlight_d8loop = 0 WHILE spotlight_d8loop < 7 DELETE_SEARCHLIGHT spotlight_d8[spotlight_d8loop] DELETE_OBJECT spotlight_d8bulb[spotlight_d8loop] spotlight_d8loop++ ENDWHILE DELETE_OBJECT spotlight1_d8housing DELETE_OBJECT spotlight1_d8base DELETE_OBJECT spotlight2_d8housing DELETE_OBJECT spotlight2_d8base DELETE_OBJECT spotlight3_d8housing DELETE_OBJECT spotlight3_d8base DELETE_OBJECT spotlight4_d8housing DELETE_OBJECT spotlight4_d8base DELETE_OBJECT spotlight5_d8housing DELETE_OBJECT spotlight5_d8base DELETE_OBJECT spotlight6_d8housing DELETE_OBJECT spotlight6_d8base DELETE_OBJECT spotlight7_d8housing DELETE_OBJECT spotlight7_d8base RELEASE_WEATHER SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 SET_AREA51_SAM_SITE ON SET_WANTED_MULTIPLIER 1.0 //SET_PED_DENSITY_MULTIPLIER 1.0 //MARK_MODEL_AS_NO_LONGER_NEEDED MALE01 RELEASE_WEATHER GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // *** *** // *** Date: 19/11/2003 Time: 15:41:04 Name: Chris Rothwell *** // *** *** // *** Mission: Desert 10 - Train Heist *** // *** *** // *** Brief: Player must use jet pack to catch up to and pull alongside the train. *** // *** Guards along the train must be killed before the Player can land on the roof and *** // *** blow open the roof's loading doors. Player must retrieve and return it to *** // *** The Truth. *** // *** *** // ***************************************************************************************** GOSUB mission_des10_start IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_des10_failed ENDIF GOSUB mission_des10_cleanup MISSION_END // ************************************ MISSION START ************************************** { mission_des10_start: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN SCRIPT_NAME des10 DISPLAY_RADAR 2 // PATHING OFF WAIT 0 LVAR_INT mission_blip mission_flag mission_timer sequence_task players_car temp_int LVAR_INT r c e v m s b a LVAR_FLOAT h x2 y2 z2 x3 y3 z3 speed temp_float LOAD_MISSION_TEXT DSERT10 FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT MAKE_PLAYER_GANG_DISAPPEAR lvar_int fat_level GET_INT_STAT FAT fat_level if fat_level > 600 LOAD_CUTSCENE D10_ALT WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE clear_area 405.2136 2525.9004 16.4918 7.5 0 START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE CLEAR_AREA 419.4488 2529.9143 15.6219 0.5 0 LOAD_SCENE 419.4488 2529.9143 15.6219 SET_CHAR_COORDINATES scplayer 419.4488 2529.9143 15.6219 SET_CHAR_HEADING scplayer 180.0 SET_CAMERA_BEHIND_PLAYER DO_FADE 1500 FADE_IN SET_PLAYER_CONTROL player1 ON return else LOAD_CUTSCENE DES_10A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE clear_area 419.6919 2529.9143 16.6612 6.8600 0 START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE endif RELEASE_WEATHER REQUEST_MODEL MICRO_UZI REQUEST_MODEL FREIGHT REQUEST_MODEL FREIFLAT REQUEST_MODEL MP5LNG REQUEST_MODEL rhino REQUEST_MODEL army request_model jetpack LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED MICRO_UZI OR NOT HAS_MODEL_LOADED FREIGHT OR NOT HAS_MODEL_LOADED FREIFLAT OR NOT HAS_MODEL_LOADED MP5LNG OR NOT HAS_MODEL_LOADED rhino OR NOT HAS_MODEL_LOADED army WAIT 0 ENDWHILE WHILE NOT IS_PLAYER_PLAYING player1 WAIT 0 ENDWHILE //VAR_INT car1 //CREATE_CAR FREIFLAT 0.0 0.0 50.0 car1 //LVAR_INT blippy //ADD_BLIP_FOR_CAR car1 blippy //SET_CAR_COORDINATES car1 0.0 0.0 50.0 //FREEZE_CAR_POSITION car1 TRUE //WHILE NOT IS_CAR_DEAD car1 // WAIT 0 // DRAW_LIGHT 3.1294 -5.2529 57.0223 255 255 255 // DRAW_LIGHT 3.7165 -0.8260 56.4677 255 255 255 // DRAW_LIGHT 3.9602 1.9442 56.1411 255 255 255 // DRAW_LIGHT 2.6261 8.9473 55.3012 255 255 255 // DRAW_LIGHT -3.1294 -5.2529 57.0223 255 255 255 // DRAW_LIGHT -3.7165 -0.8260 56.4677 255 255 255 // DRAW_LIGHT -3.9602 1.9442 56.1411 255 255 255 // DRAW_LIGHT -2.6261 8.9473 55.3012 255 255 255 // IF NOT IS_CAR_DEAD car1 // SET_CAR_COORDINATES car1 0.0 0.0 50.0 // ENDIF //ENDWHILE SWITCH_RANDOM_TRAINS OFF CLEAR_AREA 419.4488 2529.9143 15.6219 0.5 0 LOAD_SCENE 419.4488 2529.9143 15.6219 SET_CHAR_COORDINATES scplayer 419.4488 2529.9143 15.6219 SET_CHAR_HEADING scplayer 180.0 SET_CAMERA_BEHIND_PLAYER TASK_JETPACK scplayer GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_MICRO_UZI 2000 while not has_model_loaded jetpack wait 0 endwhile MAKE_PLAYER_GANG_REAPPEAR DO_FADE 1500 FADE_IN SET_PLAYER_CONTROL player1 ON LVAR_INT heist_train[8] CREATE_MISSION_TRAIN 13 2120.2573 2694.0579 9.8359 0 heist_train[0] LOCK_CAR_DOORS heist_train[0] CARLOCK_LOCKED SET_TRAIN_SPEED heist_train[0] 5.0 SET_TRAIN_CRUISE_SPEED heist_train[0] 5.0 PRINT_NOW DE10_01 5000 1//Fly jetpack to the train and steal aliens. GET_CAR_COORDINATES heist_train[0] x y z z += 10.0 m = 0 WHILE m < 12 LVAR_INT traindude[12] CREATE_CHAR PEDTYPE_CIVMALE army x y z traindude[m] TASK_STAY_IN_SAME_PLACE traindude[m] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER traindude[m] TRUE GIVE_WEAPON_TO_CHAR traindude[m] WEAPONTYPE_MP5 9999 //SET_CHAR_ACCURACY traindude[m] 99 TASK_KILL_CHAR_ON_FOOT traindude[m] scplayer SET_CHAR_RELATIONSHIP traindude[m] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_SENSE_RANGE traindude[m] 150.0 SET_LOAD_COLLISION_FOR_CHAR_FLAG traindude[m] FALSE //LVAR_INT traindude_blip[12] //ADD_BLIP_FOR_CHAR traindude[m] traindude_blip[m] ++ m ENDWHILE //ENGINE ATTACH_CHAR_TO_CAR traindude[0] heist_train[0] -0.0032 -8.3584 -0.055 FACING_RIGHT 360.0 WEAPONTYPE_MP5//REAR OF ENGINE ATTACH_CHAR_TO_CAR traindude[1] heist_train[0] 0.1129 6.5210 1.9285 FACING_LEFT 360.0 WEAPONTYPE_MP5//FRONT OF ENGINE //CARRIAGE 1 GET_TRAIN_CARRIAGE heist_train[0] 1 heist_train[1] ATTACH_CHAR_TO_CAR traindude[2] heist_train[1] -0.0140 -7.1790 -0.055 FACING_RIGHT 360.0 WEAPONTYPE_MP5 ATTACH_CHAR_TO_CAR traindude[3] heist_train[1] -1.0891 0.6968 -0.055 FACING_LEFT 360.0 WEAPONTYPE_MP5 LVAR_INT alien_crate[3] alien_crate_blip[3] CREATE_OBJECT_NO_OFFSET KMILITARY_CRATE x y z alien_crate[0] MAKE_OBJECT_TARGETTABLE alien_crate[0] TRUE ATTACH_OBJECT_TO_CAR alien_crate[0] heist_train[1] -0.0485 5.5780 -1.0661 0.0 0.0 90.1967 MAKE_OBJECT_TARGETTABLE alien_crate[0] TRUE SET_OBJECT_HEALTH alien_crate[0] 180 ADD_BLIP_FOR_OBJECT alien_crate[0] alien_crate_blip[0] LVAR_INT crate_object[19] CREATE_OBJECT_NO_OFFSET kmilitary_base x y z crate_object[0] ATTACH_OBJECT_TO_CAR crate_object[0] heist_train[1] -0.0485 5.5780 -1.0661 0.0 0.0 90.1967 CREATE_OBJECT_NO_OFFSET blockpallet x y z crate_object[1] ATTACH_OBJECT_TO_CAR crate_object[1] heist_train[1] 0.2634 1.2508 -0.3321 0.0 0.0 90.1967 CREATE_OBJECT_NO_OFFSET temp_crate1 x y z crate_object[2] ATTACH_OBJECT_TO_CAR crate_object[2] heist_train[1] 1.1025 -7.3122 -1.0766 0.0 0.0 90.1967 CREATE_OBJECT_NO_OFFSET temp_crate1 x y z crate_object[3] ATTACH_OBJECT_TO_CAR crate_object[3] heist_train[1] 0.8835 -6.5365 -1.1047 0.0 0.0 93.7464 CREATE_OBJECT_NO_OFFSET temp_crate1 x y z crate_object[4] ATTACH_OBJECT_TO_CAR crate_object[4] heist_train[1] 1.1395 -5.6969 -1.0827 0.0 0.0 83.6459 CREATE_OBJECT_NO_OFFSET k_smashboxes x y z crate_object[5] ATTACH_OBJECT_TO_CAR crate_object[5] heist_train[1] 0.4817 -1.5356 -1.0651 0.0 0.0 93.1856 //CARRIAGE 2 GET_TRAIN_CARRIAGE heist_train[0] 2 heist_train[2] ATTACH_CHAR_TO_CAR traindude[4] heist_train[2] -0.0140 -7.1790 -0.055 FACING_RIGHT 360.0 WEAPONTYPE_MP5 ATTACH_CHAR_TO_CAR traindude[5] heist_train[2] -1.0891 0.6968 -0.055 FACING_LEFT 360.0 WEAPONTYPE_MP5 //CARRIAGE 3 GET_TRAIN_CARRIAGE heist_train[0] 3 heist_train[3] ATTACH_CHAR_TO_CAR traindude[6] heist_train[3] 0.3372 -1.3877 -0.055 FACING_RIGHT 360.0 WEAPONTYPE_MP5 ATTACH_CHAR_TO_CAR traindude[7] heist_train[3] -0.0956 2.1291 -0.055 FACING_RIGHT 360.0 WEAPONTYPE_MP5 CREATE_OBJECT_NO_OFFSET KMILITARY_CRATE x y z alien_crate[1] MAKE_OBJECT_TARGETTABLE alien_crate[1] TRUE ATTACH_OBJECT_TO_CAR alien_crate[1] heist_train[3] -0.0403 4.0293 -1.0661 0.0 0.0 90.1967 MAKE_OBJECT_TARGETTABLE alien_crate[1] TRUE SET_OBJECT_HEALTH alien_crate[1] 180 ADD_BLIP_FOR_OBJECT alien_crate[1] alien_crate_blip[1] CREATE_OBJECT_NO_OFFSET kmilitary_base x y z crate_object[6] ATTACH_OBJECT_TO_CAR crate_object[6] heist_train[3] -0.0403 4.0293 -1.0661 0.0 0.0 2.7605 CREATE_OBJECT_NO_OFFSET k_cargo1 x y z crate_object[7] ATTACH_OBJECT_TO_CAR crate_object[7] heist_train[3] -0.0177 0.6971 -1.0662 0.0 0.0 91.0 CREATE_OBJECT_NO_OFFSET k_smashboxes x y z crate_object[8] ATTACH_OBJECT_TO_CAR crate_object[8] heist_train[3] -0.0228 -2.9213 -1.0651 0.0 0.0 87.9095 CREATE_OBJECT_NO_OFFSET k_smashboxes x y z crate_object[9] ATTACH_OBJECT_TO_CAR crate_object[9] heist_train[3] 0.1054 6.4364 -1.0651 0.0 0.0 89.7187 //CREATE_OBJECT_NO_OFFSET k_cargo4 x y z crate_object[10] //ATTACH_OBJECT_TO_CAR crate_object[10] heist_train[3] 0.7382 -4.6029 -1.0628 0.0 0.0 358.6504 // //CREATE_OBJECT_NO_OFFSET k_cargo4 x y z crate_object[11] //ATTACH_OBJECT_TO_CAR crate_object[11] heist_train[3] -0.7168 -4.6539 -1.0628 0.0 0.0 2.7605 CREATE_OBJECT_NO_OFFSET k_cargo4 x y z crate_object[12] ATTACH_OBJECT_TO_CAR crate_object[12] heist_train[3] 0.4192 -6.0624 -1.0628 0.0 0.0 2.7605 //CARRIAGE 4 GET_TRAIN_CARRIAGE heist_train[0] 4 heist_train[4] ATTACH_CHAR_TO_CAR traindude[8] heist_train[4] -0.5160 7.4724 -0.055 FACING_RIGHT 360.0 WEAPONTYPE_MP5 LVAR_INT train_rhino CREATE_CAR rhino x y z train_rhino LOCK_CAR_DOORS train_rhino CARLOCK_LOCKED ATTACH_CAR_TO_CAR train_rhino heist_train[4] 0.0 0.0 0.0 0.0 0.0 0.0 //Z=0.5588 //CARRIAGE 5 GET_TRAIN_CARRIAGE heist_train[0] 5 heist_train[5] ATTACH_CHAR_TO_CAR traindude[9] heist_train[5] 0.2861 -5.3712 -0.055 FACING_RIGHT 360.0 WEAPONTYPE_MP5 ATTACH_CHAR_TO_CAR traindude[10] heist_train[5] -0.2277 7.3808 -0.055 FACING_RIGHT 360.0 WEAPONTYPE_MP5 ATTACH_CHAR_TO_CAR traindude[11] heist_train[5] 0.6604 3.8015 -0.055 FACING_RIGHT 360.0 WEAPONTYPE_MP5 CREATE_OBJECT_NO_OFFSET kmilitary_crate x y z alien_crate[2] MAKE_OBJECT_TARGETTABLE alien_crate[2] TRUE ATTACH_OBJECT_TO_CAR alien_crate[2] heist_train[5] 0.0853 5.9501 -1.0583 0.0 0.0 90.1967 MAKE_OBJECT_TARGETTABLE alien_crate[2] TRUE SET_OBJECT_HEALTH alien_crate[2] 180 ADD_BLIP_FOR_OBJECT alien_crate[2] alien_crate_blip[2] CREATE_OBJECT_NO_OFFSET kmilitary_base x y z crate_object[13] ATTACH_OBJECT_TO_CAR crate_object[13] heist_train[5] 0.0853 5.9501 -1.0583 0.0 0.0 92.2390 CREATE_OBJECT_NO_OFFSET k_cargo4 x y z crate_object[14] ATTACH_OBJECT_TO_CAR crate_object[14] heist_train[5] -0.8464 -6.5879 -1.0628 0.0 0.0 0.1200 //CREATE_OBJECT_NO_OFFSET k_cargo4 x y z crate_object[15] //ATTACH_OBJECT_TO_CAR crate_object[15] heist_train[5] 0.7975 -3.6648 -1.0518 0.0 0.0 0.1200 CREATE_OBJECT_NO_OFFSET k_cargo1 x y z crate_object[16] ATTACH_OBJECT_TO_CAR crate_object[16] heist_train[5] 0.8877 0.1707 -1.0564 0.0 0.0 177.5167 CREATE_OBJECT_NO_OFFSET k_cargo1 x y z crate_object[17] ATTACH_OBJECT_TO_CAR crate_object[17] heist_train[5] -0.6907 0.2050 -1.0662 0.0 0.0 179.6863 CREATE_OBJECT_NO_OFFSET k_cargo1 x y z crate_object[18] ATTACH_OBJECT_TO_CAR crate_object[18] heist_train[5] 0.0036 2.2326 -1.0644 0.0 0.0 267.6086 LVAR_INT alien_crate_flag[3] alien_crate_flag[0] = 0 alien_crate_flag[1] = 0 alien_crate_flag[2] = 0 LVAR_INT created_alien_crates destroyed_alien_crates created_alien_crates = 0 destroyed_alien_crates = 0 get_game_timer game_timer mission_timer = game_timer + 600000 mission_flag = 0 lvar_int done_instruction_text done_instruction_text = 0 LOAD_MISSION_AUDIO 3 SOUND_GREEN_GOO_HUM // ************************************* MISSION LOOP ************************************** mission_des10_loop: WAIT 0 get_game_timer game_timer IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_des10_passed ENDIF IF NOT IS_CAR_DEAD heist_train[0] SET_TRAIN_CRUISE_SPEED heist_train[0] 10.0 ENDIF if done_instruction_text = 0 if locate_char_any_means_car_2d scplayer heist_train[0] 150.0 150.0 0 print_now DE10_06 5000 1//Shoot the crates on the train to find the Jar of Green Goo. ++ done_instruction_text endif endif m = 0 WHILE m < 3 IF alien_crate_flag[m] = 0 IF DOES_OBJECT_EXIST alien_crate[m] ++ created_alien_crates ++ alien_crate_flag[m] ENDIF ENDIF IF alien_crate_flag[m] = 1 IF HAS_OBJECT_BEEN_DAMAGED alien_crate[m] REMOVE_BLIP alien_crate_blip[m] ++ destroyed_alien_crates ++ alien_crate_flag[m] ENDIF ENDIF IF alien_crate_flag[m] = 2 IF destroyed_alien_crates = created_alien_crates GET_OBJECT_COORDINATES alien_crate[m] x y z z += 1.0 DELETE_OBJECT alien_crate[m] CREATE_OBJECT_NO_OFFSET GREEN_GLOOP x y z alien_crate[m] IF m = 0 IF NOT IS_CAR_DEAD heist_train[1] ATTACH_OBJECT_TO_CAR alien_crate[m] heist_train[1] -0.0485 5.5780 -0.0661 0.0 0.0 90.1967 ENDIF ELSE IF m = 1 IF NOT IS_CAR_DEAD heist_train[3] ATTACH_OBJECT_TO_CAR alien_crate[m] heist_train[3] -0.0485 5.5780 -0.0661 0.0 0.0 90.1967 ENDIF ELSE IF NOT IS_CAR_DEAD heist_train[5] ATTACH_OBJECT_TO_CAR alien_crate[m] heist_train[5] -0.0485 5.5780 -0.0661 0.0 0.0 90.1967 ENDIF ENDIF ENDIF SET_OBJECT_COLLISION alien_crate[m] FALSE ADD_BLIP_FOR_OBJECT alien_crate[m] alien_crate_blip[m] PRINT_NOW DE10_02 5000 1//That's the right crate! Grab the top secret artifact. LOAD_MISSION_AUDIO 3 SOUND_GREEN_GOO_HUM if HAS_MISSION_AUDIO_LOADED 3 //REPORT_MISSION_AUDIO_EVENT_AT_OBJECT alien_crate[m] SOUND_GREEN_GOO_HUM ATTACH_MISSION_AUDIO_TO_OBJECT 3 alien_crate[m] PLAY_MISSION_AUDIO 3 endif alien_crate_flag[m] = 4 ELSE MARK_OBJECT_AS_NO_LONGER_NEEDED alien_crate[m] PRINT_NOW DE10_03 5000 1//That crate is empty, try another. ++ alien_crate_flag[m] ENDIF ENDIF IF alien_crate_flag[m] = 4 GET_OBJECT_COORDINATES alien_crate[m] x y z LVAR_FLOAT alien_corona_size size_change alien_corona_size += size_change IF alien_corona_size > 0.2 //alien_corona_size = 0.6 size_change = -0.01 ENDIF IF alien_corona_size < 0.0 alien_corona_size = 0.0 size_change = 0.01 ENDIF DRAW_WEAPONSHOP_CORONA x y z alien_corona_size CORONATYPE_MOON FLARETYPE_HEADLIGHTS 0 255 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer x y z 1.5 1.5 1.5 0 DELETE_OBJECT alien_crate[m] clear_mission_audio 3 PRINT_NOW DE10_04 5000 1//You have the alien artifact. Take it to The Truth. REMOVE_BLIP alien_crate_blip[m] ADD_BLIP_FOR_COORD 408.7383 2515.8379 15.4918 alien_crate_blip[m] ++ alien_crate_flag[m] ++ mission_flag CHECKPOINT_SAVE 99 ENDIF ENDIF IF alien_crate_flag[m] = 5 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 408.7383 2515.8379 15.4918 1.5 1.5 1.5 TRUE DO_FADE 1000 FADE_out WHILE GET_FADING_STATUS WAIT 0 ENDWHILE clear_char_tasks_immediately scplayer LOAD_CUTSCENE DES_10b WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE clear_area 398.7038 2529.7346 16.5630 7.35 0 START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE CLEAR_AREA 402.8737 2531.5820 15.5558 0.5 0 LOAD_SCENE 402.8737 2531.5820 15.5558 SET_CHAR_COORDINATES scplayer 402.8737 2531.5820 15.5558 SET_CHAR_HEADING scplayer 224.0 SET_CAMERA_BEHIND_PLAYER //DO_FADE 1500 FADE_IN SET_PLAYER_CONTROL player1 ON GOTO mission_des10_passed ENDIF ENDIF ++ m ENDWHILE if mission_flag = 0 if not is_car_dead heist_train[0] if mission_timer < game_timer if not locate_char_any_means_car_2d scplayer heist_train[0] 300.0 300.0 0 print_now DE10_05 5000 1//You failed to get the jar of green goo in time. goto mission_des10_failed endif endif endif endif GOTO mission_des10_loop // ************************************ MISSION FAILED ************************************* mission_des10_failed: PRINT_BIG M_FAIL 5000 1 RETURN // ************************************ MISSION PASSED ************************************* mission_des10_passed: VAR_INT pilot_revenue pilot_cash_pickup // put this in initial pilot_revenue = 10000 // put this in initial lvar_int jetpack_pickup CREATE_PICKUP jetpack pickup_on_street_slow 431.0450 2537.7798 16.2463 jetpack_pickup CREATE_PROTECTION_PICKUP 420.5204 2532.6865 16.0869 pilot_revenue pilot_revenue pilot_cash_pickup //remember to create the pick 0.5 higher than the dropped coords SET_PLAYER_CONTROL player1 OFF wait 0 SWITCH_WIDESCREEN ON //DO_FADE 500 FADE_OUT // //WHILE GET_FADING_STATUS // WAIT 0 //ENDWHILE LOAD_SCENE 407.8369 2515.6504 18.9138 SET_FIXED_CAMERA_POSITION 407.8369 2515.6504 18.9138 0.0 0.0 0.0 //cut scene of building POINT_CAMERA_AT_POINT 408.3296 2516.5200 18.9449 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PLAY_MISSION_PASSED_TUNE 1 PRINT_BIG ASS_ACQ 5000 6 //CAR ASSET ACQUIRED WAIT 5000 SET_FIXED_CAMERA_POSITION 419.7284 2526.5459 16.8000 0.0 0.0 0.0 //cut scene showing pickup POINT_CAMERA_AT_POINT 419.8970 2527.5308 16.8356 JUMP_CUT PRINT_WITH_NUMBER_NOW ASS_LUV pilot_revenue 6000 1//This will now generate revenue up to a maximum of $~1~. Make sure you collect it regulary. WAIT 6000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DO_FADE 500 FADE_IN SET_INT_STAT PASSED_DESERT10 1 restore_camera_jumpcut flag_desert_mission_counter ++ PRINT_WITH_NUMBER_BIG M_PASS 20000 5000 1 ADD_SCORE player1 20000 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 REGISTER_MISSION_PASSED DESER10 PLAYER_MADE_PROGRESS 1 REMOVE_BLIP desert2_contact_blip RETURN // *********************************** MISSION CLEANUP ************************************* mission_des10_cleanup: DISPLAY_RADAR 3 // PATHING ON IF destroyed_alien_crates = created_alien_crates clear_mission_audio 3 endif REMOVE_BLIP alien_crate_blip[0] REMOVE_BLIP alien_crate_blip[1] REMOVE_BLIP alien_crate_blip[2] MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED FREIGHT MARK_MODEL_AS_NO_LONGER_NEEDED FREIFLAT MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED rhino MARK_MODEL_AS_NO_LONGER_NEEDED army MARK_MODEL_AS_NO_LONGER_NEEDED jetpack SWITCH_RANDOM_TRAINS ON flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* Desert 5 ****************************************** // *********************************** Pilot School **************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME desert5 // Mission start stuff GOSUB mission_start_desert5 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_desert5_failed ENDIF GOSUB mission_cleanup_desert5 MISSION_END { // Variables for mission LVAR_INT last_DPad_time last_DPad_time = 0 LVAR_INT d5_mission_selection LVAR_INT d5_mission_plane d5_mission_plane_health LVAR_FLOAT d5_plane_x d5_plane_y d5_plane_z d5_plane_heading LVAR_FLOAT d5_player_x d5_player_y d5_player_z LVAR_FLOAT d5_runway_x1 d5_runway_y1 d5_runway_x2 d5_runway_y2 LVAR_FLOAT d5_runway_centre_x d5_runway_centre_y LVAR_FLOAT d5_m1_plane_start_x d5_m1_plane_start_y d5_m1_plane_start_z //LVAR_FLOAT d5_m2_plane_start_x d5_m2_plane_start_y d5_m2_plane_start_z LVAR_FLOAT d5_m8_plane_start_x d5_m8_plane_start_y d5_m8_plane_start_z LVAR_FLOAT d5_m8_landing_target_x d5_m8_landing_target_y d5_m8_landing_target_z LVAR_INT d5_m9_current_wave LVAR_INT d5_m9_first_wave_cars[3] d5_m9_num_of_first_wave_cars LVAR_INT d5_m9_second_wave_cars[2] d5_m9_num_of_second_wave_cars d5_m9_second_wave_car_drivers[2] LVAR_FLOAT d5_m9_first_wave_car_x LVAR_INT d5_m12_stunt_double LVAR_INT d5_second_wave_seq0 d5_second_wave_seq1 LVAR_FLOAT d5_m1_corona_x[3] d5_m1_corona_y[3] d5_m1_corona_z[3] LVAR_FLOAT d5_m2_corona_x d5_m2_corona_y d5_m2_corona_z LVAR_FLOAT d5_m3_corona_x[8] d5_m3_corona_y[8] d5_m3_corona_z[8] LVAR_FLOAT d5_m7_corona_x[1] d5_m7_corona_y[1] d5_m7_corona_z[1] //LVAR_FLOAT d5_m10_corona_x[12] d5_m10_corona_y[12] d5_m10_corona_z[12] LVAR_FLOAT d5_m10_start_corona_x d5_m10_start_corona_y d5_m10_start_corona_z LVAR_FLOAT d5_m10_end_corona_x LVAR_INT d5_next_corona d5_next_corona_plus_one LVAR_INT d5_cur_checkpoint d5_m3_checkpoints[8] d5_m10_start_checkpoint d5_m10_end_checkpoint LVAR_FLOAT d5_checkpoint_radius LVAR_FLOAT d5_radius d5_angle LVAR_FLOAT d5_required_altitude LVAR_FLOAT d5_circle_centre_x d5_circle_centre_y //d5_circle_centre_z // global (onscreen counter) //VAR_INT d5_m9_targets_remaining // temp globals for view_float_variable (usually locals) VAR_FLOAT d5_cur_pitch d5_last_pitch d5_pitch_diff d5_pitch_progress VAR_FLOAT d5_cur_roll d5_last_roll d5_roll_diff d5_roll_progress VAR_FLOAT d5_negative_progress VAR_FLOAT d5_plane_up_component LVAR_INT d5_m12_parachute_target LVAR_FLOAT d5_m12_parachute_target_x d5_m12_parachute_target_y d5_m12_parachute_target_z LVAR_FLOAT d5_m12_parachute_start_x d5_m12_parachute_start_y d5_m12_parachute_start_z LVAR_FLOAT d5_m12_distance_from_player_to_target //d5_dist_from_target_to_edge_of_runway LVAR_INT d5_m12_checkpoint LVAR_INT d5_damage_penalty d5_time_score d5_perfect_time d5_pass_time d5_pass_minus_perfect LVAR_INT d5_car_recording LVAR_FLOAT d5_landing_gear_position LVAR_INT d5_text_rval d5_text_gval d5_text_bval d5_text_alpha LVAR_INT d5_index //d5_index_plus_one // flags LVAR_INT d5_landing_gear_retracted d5_landing_gear_extended LVAR_INT d5_m2_reached_runway_corona d5_m2_started_taxiing LVAR_INT d5_m5_finished_following_coronas LVAR_INT d5_m8_player_reached_hovering_area LVAR_INT d5_m9_first_wave_blip_flags[3] d5_m9_second_wave_blip_flags[2] LVAR_INT d5_m9_all_cars_in_current_wave_destroyed d5_m9_heli_landing LVAR_INT d5_m9_car_exploded[3] LVAR_INT d5_m10_player_passed_starting_corona d5_m10_completed_stunt LVAR_INT d5_m12_player_reached_opening_altitude d5_m12_player_opened_parachute //LVAR_INT d5_player_finished_any_tests_yet LVAR_INT d5_just_passed_pilot_school LVAR_INT d5_just_watched_first_cutscene // mission audio LVAR_TEXT_LABEL d5_audio_text[12] LVAR_INT d5_audio_sound[12] LVAR_INT d5_audio_is_playing d5_audio_index d5_total_audio_to_play d5_started_talking LVAR_INT d5_fake_creates // blips LVAR_INT d5_corona_blip LVAR_INT d5_m9_first_wave_car_blips[3] d5_m9_second_wave_car_blips[2] // Front end stuff LVAR_INT d5_fade_flag d5_alpha d5_which_score_displayed d5_which_medal_displayed LVAR_INT d5_control_flag d5_playback_flag LVAR_INT d5_mission_plane_dead_flag LVAR_INT d5_plane_started // temp globals for view_float_variable (usually locals) VAR_INT d5_plane_reached_takeoff_point d5_plane_taken_off d5_plane_reached_required_altitude VAR_FLOAT d5_mission_plane_speed LVAR_INT d5_m7_rotated_180 LVAR_INT d5_finished_mission d5_failed_challenge LVAR_INT d5_old_score d5_print_top_scores_flag //LVAR_FLOAT d5_overall_score_float LVAR_FLOAT fTitleX LVAR_FLOAT fTitleY LVAR_FLOAT fStringX LVAR_FLOAT fStringY // **************************************** Mission Start ********************************** mission_start_desert5: CLEAR_THIS_PRINT M_FAIL flag_player_on_mission = 1 IF NOT pilot_test_passed = 1 REGISTER_MISSION_GIVEN ENDIF LOAD_MISSION_TEXT DSERT5 SET_FADING_COLOUR 0 0 0 WAIT 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // ************************************ Initialise variables ***************************** // front end stuff noticeboard_x = 415.55 noticeboard_y = 2533.57 noticeboard_z = 19.18 d5_control_flag = 0 d5_fade_flag = 0 d5_alpha = 0 d5_which_medal_displayed = 0 d5_which_score_displayed = 0 d5_playback_flag = 0 d5_mission_plane_dead_flag = 0 d5_plane_started = 0 d5_finished_mission = 0 d5_failed_challenge = 0 d5_old_score = 0 d5_print_top_scores_flag = 0 // specific to mini-missions d5_runway_x1 = -81.36 d5_runway_y1 = 2476.0 d5_runway_x2 = 435.92 d5_runway_y2 = 2528.62 d5_runway_centre_x = d5_runway_x1 + d5_runway_x2 d5_runway_centre_x /= 2.0 d5_runway_centre_y = d5_runway_y1 + d5_runway_y2 d5_runway_centre_y /= 2.0 d5_m1_plane_start_x = 321.52 d5_m1_plane_start_y = d5_runway_centre_y d5_m1_plane_start_z = 17.16 d5_m1_corona_x[0] = -383.79 d5_m1_corona_y[0] = d5_runway_centre_y d5_m1_corona_z[0] = 147.09 d5_m1_corona_x[1] = d5_m1_corona_x[0] - 300.0 d5_m1_corona_y[1] = d5_m1_corona_y[0] d5_m1_corona_z[1] = d5_m1_corona_z[0] - 20.0 d5_m1_corona_x[2] = d5_m1_corona_x[0] - 650.0 d5_m1_corona_y[2] = d5_m1_corona_y[0] d5_m1_corona_z[2] = d5_m1_corona_z[0] + 10.0 //d5_m2_plane_start_x = -423.79 //d5_m2_plane_start_y = d5_runway_centre_y //d5_m2_plane_start_z = 94.09 d5_m8_plane_start_x = -383.79 d5_m8_plane_start_y = d5_runway_centre_y d5_m8_plane_start_z = 85.09 d5_m2_corona_x = d5_runway_x1 d5_m2_corona_y = d5_runway_centre_y d5_m2_corona_z = 33.30 d5_m7_corona_x[0] = d5_m1_plane_start_x - 500.0 d5_m7_corona_y[0] = d5_m1_plane_start_y d5_m7_corona_z[0] = d5_m1_plane_start_z + 120.0 d5_m8_landing_target_x = 308.0 d5_m8_landing_target_y = d5_runway_centre_y d5_m8_landing_target_z = 17.07 d5_m9_num_of_first_wave_cars = 3 d5_m9_num_of_second_wave_cars = 2 d5_m10_start_corona_x = d5_runway_centre_x d5_m10_start_corona_y = d5_runway_centre_y d5_m10_start_corona_z = 80.0 d5_m10_end_corona_x = d5_m10_start_corona_x + 200.0 d5_checkpoint_radius = 36.0 d5_m12_parachute_target_x = d5_runway_centre_x d5_m12_parachute_target_y = d5_runway_centre_y d5_m12_parachute_target_z = 15.53 d5_m12_parachute_start_x = d5_m12_parachute_target_x + 350.0 d5_m12_parachute_start_y = d5_m12_parachute_target_y d5_m12_parachute_start_z = 900.0 //d5_dist_from_target_to_edge_of_runway = d5_runway_centre_y - d5_runway_y1 d5_plane_reached_takeoff_point = 0 d5_plane_taken_off = 0 d5_plane_reached_required_altitude = 0 d5_m2_reached_runway_corona = 0 d5_m2_started_taxiing = 0 d5_just_passed_pilot_school = 0 d5_just_watched_first_cutscene = 0 //d5_player_finished_any_tests_yet = 0 d5_audio_is_playing = 0 d5_audio_index = 0 d5_started_talking = 0 d5_fake_creates = 0 fTitleX = 50.0 fTitleY = 60.0 fStringX = 50.0 fStringY = 100.0 // CREATE statements to keep the compiler happy IF d5_fake_creates = 1 CREATE_CAR RUSTLER 0.0 0.0 -100.0 d5_mission_plane CREATE_CHAR PEDTYPE_MISSION1 0 0.0 0.0 -100.0 d5_m12_stunt_double d5_index = 0 WHILE d5_index < d5_m9_num_of_first_wave_cars CREATE_CAR PETRO 0.0 0.0 -100.0 d5_m9_first_wave_cars[d5_index] d5_index++ ENDWHILE ENDIF CLEAR_THIS_PRINT_BIG_NOW 1 CLEAR_AREA_OF_CARS d5_runway_x1 d5_runway_y1 0.0 d5_runway_x2 d5_runway_y2 50.0 SHOW_UPDATE_STATS FALSE SET_AREA51_SAM_SITE OFF SWITCH_POLICE_HELIS FALSE LVAR_INT d5_wanted_level_at_start GET_MAX_WANTED_LEVEL d5_wanted_level_at_start SET_MAX_WANTED_LEVEL 0 //LVAR_INT pause_flag //LVAR_FLOAT instructor_car_roll //LVAR_INT instructor_car_roll_score instructor_car_roll_plus_minus //LVAR_INT f1_direction_flag //LVAR_INT f1_checkpoint // //LVAR_INT test_timer pausing_flag //test_timer = 0 //pausing_flag = 0 //start_coordsx = -2050.6 //these define the starting position of each track. //start_coordsy = -130.0 REQUEST_MODEL RUSTLER REQUEST_MODEL HUNTER REQUEST_MODEL PETRO REQUEST_MODEL LANDSTAL REQUEST_MODEL STUNT STREAM_SCRIPT parachute.sc LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED RUSTLER OR NOT HAS_MODEL_LOADED HUNTER OR NOT HAS_MODEL_LOADED PETRO OR NOT HAS_MODEL_LOADED LANDSTAL OR NOT HAS_MODEL_LOADED STUNT WAIT 0 ENDWHILE WHILE NOT HAS_STREAMED_SCRIPT_LOADED parachute.sc WAIT 0 ENDWHILE LOAD_TEXTURE_DICTIONARY LD_drv LOAD_SPRITE 1 brfly LOAD_SPRITE 2 silfly LOAD_SPRITE 3 golfly LOAD_SPRITE 4 ribb LOAD_SPRITE 5 tvcorn LOAD_SPRITE 6 naward LOAD_SPRITE 7 ribbw LOAD_SPRITE 8 blkdot LOAD_SPRITE 9 tvbase LOAD_SPRITE 10 nawtxt SET_ALWAYS_DRAW_3D_MARKERS TRUE IF d5_watched_first_cutscene = 0 CLEAR_AREA noticeboard_x noticeboard_y noticeboard_z 50.0 FALSE //HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE // set player in front of tv SET_CHAR_COORDINATES scplayer 414.8 2534.2 18.18 SET_CHAR_HEADING scplayer 200.0 $d5_audio_text[0] = &MTOR04A $d5_audio_text[1] = &MTOR04B $d5_audio_text[2] = &MTOR04C $d5_audio_text[3] = &MTOR04D $d5_audio_text[4] = &MTOR04E $d5_audio_text[5] = &MTOR04F $d5_audio_text[6] = &MTOR04G $d5_audio_text[7] = &MTOR04H $d5_audio_text[8] = &MTOR04J $d5_audio_text[9] = &MTOR04K $d5_audio_text[10] = &MTOR04L $d5_audio_text[11] = &MTOR04M d5_audio_sound[0] = SOUND_MTOR04A d5_audio_sound[1] = SOUND_MTOR04B d5_audio_sound[2] = SOUND_MTOR04C d5_audio_sound[3] = SOUND_MTOR04D d5_audio_sound[4] = SOUND_MTOR04E d5_audio_sound[5] = SOUND_MTOR04F d5_audio_sound[6] = SOUND_MTOR04G d5_audio_sound[7] = SOUND_MTOR04H d5_audio_sound[8] = SOUND_MTOR04J d5_audio_sound[9] = SOUND_MTOR04K d5_audio_sound[10] = SOUND_MTOR04L d5_audio_sound[11] = SOUND_MTOR04M d5_total_audio_to_play = 12 d5_audio_is_playing = 0 d5_started_talking = 0 SET_PLAYER_CONTROL player1 OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN ON REQUEST_MODEL cellphone LOAD_MISSION_AUDIO 3 SOUND_MOBRING WHILE NOT HAS_MODEL_LOADED cellphone OR NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE TASK_USE_MOBILE_PHONE scplayer TRUE PLAY_MISSION_AUDIO 3 SET_FIXED_CAMERA_POSITION 415.83 2532.94 19.5 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 415.28 2533.65 19.5 JUMP_CUT DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LVAR_INT d5_cutscene_skipped d5_cutscene_skipped = 1 SKIP_CUTSCENE_START WAIT 600 CLEAR_MISSION_AUDIO 3 WAIT 1000 d5_audio_index = 0 WHILE d5_audio_index < 1 WAIT 0 GOSUB d5_load_and_play_audio ENDWHILE WHILE d5_audio_index < 2 WAIT 0 GOSUB d5_load_and_play_audio IF d5_audio_is_playing = 2 AND NOT d5_started_talking = 1 START_CHAR_FACIAL_TALK scplayer 10000 d5_started_talking = 1 ENDIF ENDWHILE STOP_CHAR_FACIAL_TALK scplayer WHILE d5_audio_index < 3 WAIT 0 GOSUB d5_load_and_play_audio IF d5_audio_is_playing = 2 AND NOT d5_started_talking = 1 START_CHAR_FACIAL_TALK scplayer 10000 d5_started_talking = 1 ENDIF ENDWHILE STOP_CHAR_FACIAL_TALK scplayer WHILE d5_audio_index < 5 WAIT 0 GOSUB d5_load_and_play_audio ENDWHILE WHILE d5_audio_index < 6 WAIT 0 GOSUB d5_load_and_play_audio IF d5_audio_is_playing = 2 AND NOT d5_started_talking = 1 START_CHAR_FACIAL_TALK scplayer 10000 d5_started_talking = 1 ENDIF ENDWHILE STOP_CHAR_FACIAL_TALK scplayer WHILE d5_audio_index < 8 WAIT 0 GOSUB d5_load_and_play_audio IF d5_audio_is_playing = 2 AND d5_audio_index = 7 AND NOT d5_started_talking = 1 SET_FIXED_CAMERA_POSITION 414.83 2532.13 19.43 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 415.01 2533.11 19.42 JUMP_CUT d5_started_talking = 1 ENDIF ENDWHILE //TASK_LOOK_AT_COORD scplayer 416.05 2533.81 19.91 2000 WHILE d5_audio_index < 10 WAIT 0 GOSUB d5_load_and_play_audio ENDWHILE WHILE d5_audio_index < 11 WAIT 0 GOSUB d5_load_and_play_audio IF d5_audio_is_playing = 2 AND NOT d5_started_talking = 1 START_CHAR_FACIAL_TALK scplayer 10000 d5_started_talking = 1 ENDIF ENDWHILE STOP_CHAR_FACIAL_TALK scplayer WHILE d5_audio_index < d5_total_audio_to_play WAIT 0 GOSUB d5_load_and_play_audio ENDWHILE d5_cutscene_skipped = 0 SKIP_CUTSCENE_END IF NOT d5_cutscene_skipped = 1 TASK_USE_MOBILE_PHONE scplayer FALSE ENDIF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF d5_cutscene_skipped = 1 TASK_USE_MOBILE_PHONE scplayer FALSE ENDIF //CLEAR_CHAR_TASKS scplayer //CLEAR_LOOK_AT scplayer STOP_CHAR_FACIAL_TALK scplayer CLEAR_MISSION_AUDIO 3 CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS //HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE // set player in front of tv SET_CHAR_COORDINATES scplayer 413.94 noticeboard_y 18.18 SET_CHAR_HEADING scplayer 270.0 d5_just_watched_first_cutscene = 1 d5_watched_first_cutscene = 1 SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_desert5_failed ENDIF SET_CHAR_COORDINATES scplayer 412.38 2533.65 18.18 SET_CHAR_HEADING scplayer 90.0 d5_noticeboard_setup: // cleanup SET_PLAYER_CONTROL player1 OFF CLEAR_HELP CLEAR_PRINTS SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 // preparing for noticeboard //GOSUB setting_up_variables d5_mission_plane_dead_flag = 0 d5_plane_started = 0 d5_finished_mission = 0 d5_failed_challenge = 0 d5_print_top_scores_flag = 0 d5_playback_flag = 0 d5_control_flag = 0 USE_TEXT_COMMANDS TRUE d5_alpha = 255 d5_fade_flag = 2 d5_mission_selection = d5_last_played // circle airstrip both ways IF d5_mission_selection = 3 d5_mission_selection = 4 ENDIF IF d5_mission_selection = 5 d5_mission_selection = 6 ENDIF DISPLAY_HUD FALSE DISPLAY_RADAR FALSE LOAD_MISSION_AUDIO 3 SOUND_VIDEOTAPE_NOISE WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE DO_FADE 1000 FADE_IN GOSUB d5_drawing_tv_screen //SET_AREA_VISIBLE 0 // mission selection d5_mission_selection_loop: WAIT 0 GET_GAME_TIMER game_timer LVAR_INT DPadTemp DPadTemp = game_timer - last_DPad_time // Only let the d-pad repeat so often as they hold down the button. //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_TITLE_BACKGROUND 0 0 0 0 0 0.0 boat_72 // debug IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_desert5_passed ENDIF GOSUB d5_drawing_tv_screen // CHOOSING WHICH MISSION IF d5_control_flag = 0 GET_POSITION_OF_ANALOGUE_STICKS PAD1 LStickX LStickY RStickX RStickY // Look for input to switch missions if more than one mission is available. // IF d5_total_missions_open > 1 IF LStickX < -100 OR IS_BUTTON_PRESSED PAD1 DPADLEFT OR IS_WIDGET_RELEASED WIDGET_SCHOOL_LEFT IF DPadTemp > 300 last_DPad_time = game_timer d5_mission_selection-- d5_last_played-- IF d5_mission_selection = 3 d5_mission_selection = 2 ENDIF IF d5_mission_selection = 5 d5_mission_selection = 4 ENDIF IF d5_total_missions_open > 1 IF d5_playback_flag < 4 d5_playback_flag = 3 //overriding playback ENDIF ENDIF ENDIF ENDIF IF LStickX > 100 OR IS_BUTTON_PRESSED PAD1 DPADRIGHT OR IS_WIDGET_RELEASED WIDGET_SCHOOL_RIGHT IF DPadTemp > 300 last_DPad_time = game_timer d5_mission_selection++ d5_last_played++ IF d5_mission_selection = 3 d5_mission_selection = 4 ENDIF IF d5_mission_selection = 5 d5_mission_selection = 6 ENDIF IF d5_total_missions_open > 1 IF d5_playback_flag < 4 d5_playback_flag = 3 //overriding playback ENDIF ENDIF ENDIF ENDIF // ENDIF IF d5_mission_selection < 1 d5_mission_selection = d5_total_missions_open d5_last_played = d5_total_missions_open ENDIF IF d5_mission_selection > d5_total_missions_open d5_mission_selection = 1 d5_last_played = 1 ENDIF //triggering mission IF IS_BUTTON_PRESSED PAD1 CROSS OR IS_WIDGET_RELEASED WIDGET_SCHOOL_START IF d5_mission_selection = 4 OR d5_mission_selection = 6 d5_control_flag = 1 ELSE IF d5_playback_flag < 4 d5_playback_flag = 3 ENDIF GOTO d5_start_mission ENDIF ENDIF ENDIF ////SELECTING WHETHER TO GO RIGHT OR LEFT ON SOME MISSIONS IF d5_control_flag = 1 IF d5_playback_flag < 4 d5_playback_flag = 3 ENDIF IF d5_playback_flag = 0 d5_playback_flag = 5 ENDIF GOSUB d5_which_course_text SET_TEXT_COLOUR 255 255 255 255 DISPLAY_TEXT 320.0 140.0 DES5_FH // Which course? GOSUB d5_which_course_text SET_TEXT_CENTRE OFF SET_TEXT_COLOUR 255 255 255 255 PRINT_HELP_FOREVER DES5_FI // Press ~m~~widget_ped_move_left~ to go counterclockwise. GET_POSITION_OF_ANALOGUE_STICKS PAD1 LStickX LStickY RStickX RStickY IF LStickX < -100 OR IS_BUTTON_PRESSED PAD1 DPADLEFT OR IS_WIDGET_RELEASED WIDGET_SCHOOL_LEFT IF DPadTemp > 300 last_DPad_time = game_timer IF d5_mission_selection = 4 d5_mission_selection = 3 ENDIF IF d5_mission_selection = 6 d5_mission_selection = 5 ENDIF ENDIF //WRITE_DEBUG_WITH_INT d5_mission_selection d5_mission_selection GOSUB d5_delete_end_of_rec GOTO d5_start_mission ENDIF IF LStickX > 100 OR IS_BUTTON_PRESSED PAD1 DPADRIGHT OR IS_WIDGET_RELEASED WIDGET_SCHOOL_RIGHT //WRITE_DEBUG_WITH_INT d5_mission_selection d5_mission_selection GOSUB d5_delete_end_of_rec GOTO d5_start_mission ENDIF ENDIF //opening all the missions IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q d5_total_missions_open = 12 pilot_test_passed = 1 ENDIF IF NOT d5_control_flag = 1 // player isn't waiting to select course direction //quitting the driving school IF IS_BUTTON_PRESSED PAD1 TRIANGLE OR IS_WIDGET_RELEASED WIDGET_SCHOOL_EXIT GOTO mission_desert5_failed ENDIF ENDIF FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT GOSUB d5_watching_demo GOTO d5_mission_selection_loop d5_start_mission: DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 GOSUB d5_drawing_tv_screen ENDWHILE IF NOT IS_CAR_DEAD d5_mission_plane STOP_PLAYBACK_RECORDED_CAR d5_mission_plane ENDIF DELETE_CAR d5_mission_plane RESTORE_CAMERA_JUMPCUT DELETE_CHAR d5_m12_stunt_double d5_index = 0 WHILE d5_index < d5_m9_num_of_first_wave_cars DELETE_CAR d5_m9_first_wave_cars[d5_index] d5_index++ ENDWHILE CLEAR_MISSION_AUDIO 3 CLEAR_AREA noticeboard_x noticeboard_y noticeboard_z 500.0 TRUE CLEAR_ONSCREEN_TIMER car_timer FREEZE_ONSCREEN_TIMER FALSE d5_playback_flag = 5 DISPLAY_HUD TRUE DISPLAY_RADAR TRUE IF d5_mission_selection = 1 d5_refresh_takeoff: GOSUB d5_start_initialise_stuff d5_setup_takeoff: // GOSUB setting_up_variables car_timer = 0 d5_print_top_scores_flag = 0 d5_mission_plane_dead_flag = 0 d5_plane_started = 0 d5_finished_mission = 0 d5_failed_challenge = 0 d5_plane_reached_takeoff_point = 0 d5_plane_taken_off = 0 d5_landing_gear_retracted = 0 // create mission plane CREATE_CAR RUSTLER d5_m1_plane_start_x d5_m1_plane_start_y d5_m1_plane_start_z d5_mission_plane SET_CAR_HEADING d5_mission_plane 90.0 //SET_CAR_PITCH d5_mission_plane 14.24 IF d5_playback_flag = 0 DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION 172.6 2466.14 17.05 0.0 0.0 0.0 POINT_CAMERA_AT_CAR d5_mission_plane FIXED JUMP_CUT RETURN ENDIF WAIT 500 CLEAR_PRINTS PRINT_HELP_FOREVER_CONDITIONAL DES5HID 2 // Press and hold ~m~~widget_accelerate~ to accelerate along the runway. GOSUB d5_stop_initialise_stuff //starting challenge d5_takeoff_loop: WAIT 0 FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT // checking player hasn't left plane IF IS_BUTTON_PRESSED PAD1 TRIANGLE OR IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_takeoff ENDIF // checking plane isn't dead GOSUB d5_mission_plane_dead_check IF d5_mission_plane_dead_flag = 1 IF IS_CAR_IN_WATER d5_mission_plane d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_takeoff ELSE GOTO mission_desert5_failed ENDIF ENDIF // checking if plane has moved IF d5_plane_started = 0 PRINT_HELP_FOREVER_CONDITIONAL DES5HID 2 // Press and hold ~m~~widget_accelerate~ to accelerate along the runway. GOSUB d5_has_plane_started IF d5_plane_started = 1 PRINT_HELP_FOREVER DES5_1P // ~s~When the plane's tail rises, pull back on ~m~~widget_ped_move~ to lift the nose and take off. ENDIF ELSE IF NOT IS_CAR_DEAD d5_mission_plane IF NOT d5_plane_taken_off = 1 IF NOT d5_plane_reached_takeoff_point = 1 GET_CAR_PITCH d5_mission_plane d5_cur_pitch IF d5_cur_pitch <= 5.0 d5_plane_reached_takeoff_point = 1 PRINT_HELP_FOREVER DES5_1R // pull back on ~m~~widget_ped_move~ to lift the nose and take off. ENDIF ENDIF GET_CAR_COORDINATES d5_mission_plane d5_plane_x d5_plane_y d5_plane_z IF d5_plane_z >= 25.0 d5_plane_taken_off = 1 // PRINT_NOW ( DES5_1I ) 10000 4 // Landing gear is automatic in mobile build. ELSE // check that player hasn't left the runway before taking off IF NOT IS_CHAR_IN_AREA_2D scplayer d5_runway_x1 d5_runway_y1 d5_runway_x2 d5_runway_y2 FALSE d5_failed_challenge = 1 ENDIF ENDIF ENDIF IF d5_plane_taken_off = 1 IF NOT d5_landing_gear_retracted = 1 GET_PLANE_UNDERCARRIAGE_POSITION d5_mission_plane d5_landing_gear_position IF d5_landing_gear_position > 0.0 d5_landing_gear_retracted = 1 ADD_BLIP_FOR_COORD d5_m1_corona_x[0] d5_m1_corona_y[0] d5_m1_corona_z[0] d5_corona_blip // first checkpoint normal parallel to x-axis CREATE_CHECKPOINT CHECKPOINT_TORUS d5_m1_corona_x[0] d5_m1_corona_y[0] d5_m1_corona_z[0] 0.0 d5_m1_corona_y[0] d5_m1_corona_z[0] d5_checkpoint_radius d5_cur_checkpoint d5_next_corona = 0 CLEAR_PRINTS PRINT_NOW ( DES5_1F ) 7000 4 // Head for the first corona. PRINT ( DES5_1J ) 10000 4 // As the plane climbs and falls, the altitude meter to the left of the radar will rise and fall respectively. ENDIF ELSE IF LOCATE_CHAR_IN_CAR_3D scplayer d5_m1_corona_x[d5_next_corona] d5_m1_corona_y[d5_next_corona] d5_m1_corona_z[d5_next_corona] d5_checkpoint_radius d5_checkpoint_radius d5_checkpoint_radius FALSE REMOVE_BLIP d5_corona_blip DELETE_CHECKPOINT d5_cur_checkpoint REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE d5_next_corona++ IF d5_next_corona < 3 ADD_BLIP_FOR_COORD d5_m1_corona_x[d5_next_corona] d5_m1_corona_y[d5_next_corona] d5_m1_corona_z[d5_next_corona] d5_corona_blip // checkpoint normals parallel to x-axis CREATE_CHECKPOINT CHECKPOINT_TORUS d5_m1_corona_x[d5_next_corona] d5_m1_corona_y[d5_next_corona] d5_m1_corona_z[d5_next_corona] 0.0 d5_m1_corona_y[d5_next_corona] d5_m1_corona_z[d5_next_corona] d5_checkpoint_radius d5_cur_checkpoint IF d5_next_corona = 1 PRINT_HELP_FOREVER DES5_1K // ~s~Push up on the movement controls to descend to the next ~y~corona. ENDIF IF d5_next_corona = 2 PRINT_HELP_FOREVER DES5_1H // Steer upward and press and hold ~m~~widget_accelerate~ to climb back up to the final ~y~corona. ENDIF ELSE d5_finished_mission = 1 ENDIF ENDIF ENDIF ENDIF // check for player stopped (prevents player from getting stuck in ground) IF d5_plane_taken_off = 1 //IF IS_CAR_STOPPED d5_mission_plane IF NOT IS_CAR_IN_AIR_PROPER d5_mission_plane d5_failed_challenge = 1 ENDIF ENDIF // checking player hasn't flown too far away from the airstrip IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer -450.0 d5_runway_centre_y 1250.0 1250.0 FALSE d5_failed_challenge = 1 ENDIF // checking if finished challenge IF d5_finished_mission = 1 OR d5_failed_challenge = 1 GOSUB d5_freeze_plane_pos // calculate player score IF d5_finished_mission = 1 GOSUB d5_calculate_position_score GOSUB d5_calculate_damage_penalty d5_perfect_time = 40//30 d5_pass_time = 60//45 GOSUB d5_calculate_time_score GOSUB d5_calculate_overall_score ELSE overall_secs = 0 position_score = 0 d5_damage_penalty = 0 overall_score = 0 ENDIF // checking overall score against the best score at present IF overall_score > d5_best_scores[0] d5_old_score = d5_best_scores[0] d5_best_scores[0] = overall_score d5_print_top_scores_flag = 1 GOSUB d5_medal_check ENDIF //opening next level IF d5_total_missions_open = 1 IF overall_score > 69 INCREMENT_INT_STAT FLYING_SKILL 60 d5_print_top_scores_flag = 2 d5_total_missions_open = 2 d5_last_played = 2 d5_mission_plane_dead_flag = 2 ENDIF ENDIF GOSUB d5_display_scores // infinite loop WHILE d5_fake_creates = 0 WAIT 0 GOSUB d5_draw_record_text IF NOT d5_print_top_scores_flag = 2 IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_takeoff ENDIF ENDIF IF IS_WIDGET_RELEASED WIDGET_SCHOOL_CONTINUE GOTO d5_after_scores_takeoff ENDIF ENDWHILE // resetting for another try d5_after_scores_takeoff: GOSUB d5_mini_cleanup IF d5_mission_plane_dead_flag = 2 GOTO d5_noticeboard_setup ELSE GOTO d5_refresh_takeoff ENDIF ENDIF ENDIF ENDIF GOTO d5_takeoff_loop ENDIF IF d5_mission_selection = 2 d5_refresh_landplane: GOSUB d5_start_initialise_stuff d5_setup_landplane: // GOSUB setting_up_variables car_timer = 0 d5_print_top_scores_flag = 0 d5_mission_plane_dead_flag = 0 d5_plane_started = 0 d5_finished_mission = 0 d5_failed_challenge = 0 d5_m2_reached_runway_corona = 0 d5_m2_started_taxiing = 0 d5_landing_gear_extended = 0 // create mission plane CREATE_CAR RUSTLER d5_m8_plane_start_x d5_m8_plane_start_y d5_m8_plane_start_z d5_mission_plane SET_CAR_HEADING d5_mission_plane 270.0 //CHANGE_CAR_COLOUR d5_mission_plane 1 1 IF d5_playback_flag = 0 DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION 27.29 2466.31 16.76 0.0 0.0 0.0 POINT_CAMERA_AT_CAR d5_mission_plane FIXED JUMP_CUT RETURN ENDIF SET_PLANE_UNDERCARRIAGE_UP d5_mission_plane TRUE FREEZE_CAR_POSITION d5_mission_plane TRUE WAIT 500 CLEAR_PRINTS // Landing gear automatic in mobile build. // PRINT_NOW ( DES5_2J ) 5000 4 // Press R3 to extend the landing gear. GOSUB d5_stop_initialise_stuff //starting challenge d5_landplane_loop: WAIT 0 FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT // checking player hasn't left plane IF IS_BUTTON_PRESSED PAD1 TRIANGLE OR IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_landplane ENDIF // checking plane isn't dead GOSUB d5_mission_plane_dead_check IF d5_mission_plane_dead_flag = 1 IF IS_CAR_IN_WATER d5_mission_plane d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_landplane ELSE GOTO mission_desert5_failed ENDIF ENDIF // checking if plane has moved IF d5_plane_started = 0 IF NOT IS_CAR_DEAD d5_mission_plane FREEZE_CAR_POSITION d5_mission_plane FALSE SET_CAR_FORWARD_SPEED d5_mission_plane 30.0 ADD_BLIP_FOR_COORD d5_m2_corona_x d5_m2_corona_y d5_m2_corona_z d5_corona_blip // first checkpoint normal parallel to x-axis CREATE_CHECKPOINT CHECKPOINT_TORUS d5_m2_corona_x d5_m2_corona_y d5_m2_corona_z -200.0 d5_m2_corona_y d5_m2_corona_z d5_checkpoint_radius d5_cur_checkpoint DISPLAY_ONSCREEN_TIMER_WITH_STRING car_timer TIMER_UP ( DES5_T4 ) // Landing gear is automatic in mobile build. // PRINT_NOW ( DES5_2J ) 5000 4 // Press R3 to extend the landing gear. d5_plane_started = 1 ENDIF ELSE IF NOT IS_CAR_DEAD d5_mission_plane IF d5_m2_reached_runway_corona = 0 IF NOT d5_landing_gear_extended = 1 GET_PLANE_UNDERCARRIAGE_POSITION d5_mission_plane d5_landing_gear_position IF d5_landing_gear_position < 1.0 d5_landing_gear_extended = 1 PRINT_HELP_FOREVER DES5_2B // Press and hold ~m~~widget_brake~ to slow your descent. PRINT_NOW ( DES5_2C ) 5000 4 // Head for the first corona. ENDIF ENDIF IF LOCATE_CHAR_IN_CAR_3D scplayer d5_m2_corona_x d5_m2_corona_y d5_m2_corona_z d5_checkpoint_radius d5_checkpoint_radius d5_checkpoint_radius FALSE REMOVE_BLIP d5_corona_blip DELETE_CHECKPOINT d5_cur_checkpoint REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE d5_m2_reached_runway_corona = 1 // temp vars ADD_BLIP_FOR_COORD 308.0 d5_runway_centre_y d5_m1_plane_start_z d5_corona_blip CLEAR_PRINTS PRINT_HELP_FOREVER DES5_2I // Hold ~m~~widget_brake~ to lower your speed until the plane slowly descends. PRINT ( DES5_2D ) 7000 4 // Point the nose of the plane upward to reduce the rate of descent. ENDIF ELSE IS_CAR_STOPPED_IN_AREA_3D d5_mission_plane 288.0 d5_runway_y1 16.0 328.0 d5_runway_y2 18.0 TRUE IF NOT d5_m2_started_taxiing = 1 GET_CAR_COORDINATES d5_mission_plane d5_plane_x d5_plane_y d5_plane_z IF d5_plane_z <= 17.66 d5_m2_started_taxiing = 1 CLEAR_PRINTS PRINT_HELP_FOREVER DES5_2M // ~s~Push and hold ~m~~widget_ped_move~ upward to keep the plane's nose down. PRINT ( DES5_2F ) 7000 4 // Taxi along the runway and stop in the target zone for extra points. ENDIF ELSE IF IS_CAR_STOPPED_IN_AREA_2D d5_mission_plane d5_runway_x1 d5_runway_y1 d5_runway_x2 d5_runway_y2 FALSE AND NOT IS_CAR_IN_AIR_PROPER d5_mission_plane AND NOT IS_CAR_UPSIDEDOWN d5_mission_plane d5_finished_mission = 1 ENDIF ENDIF ENDIF // check for player stopped (prevents player from getting stuck in ground) IF NOT IS_CAR_IN_AIR_PROPER d5_mission_plane IF NOT d5_m2_reached_runway_corona = 1 d5_failed_challenge = 1 ELSE IF NOT IS_CHAR_IN_AREA_2D scplayer d5_runway_x1 d5_runway_y1 d5_runway_x2 d5_runway_y2 FALSE d5_failed_challenge = 1 ELSE IF IS_CAR_UPSIDEDOWN d5_mission_plane d5_failed_challenge = 1 ENDIF ENDIF ENDIF ENDIF // checking player hasn't flown too far away from the airstrip IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer -450.0 d5_runway_centre_y 1250.0 1250.0 FALSE d5_failed_challenge = 1 ENDIF // checking if finished challenge IF d5_finished_mission = 1 OR d5_failed_challenge = 1 // OR car_timer = 0 GOSUB d5_freeze_plane_pos // calculate player score IF d5_finished_mission = 1 GOSUB d5_calculate_position_score GOSUB d5_calculate_damage_penalty d5_perfect_time = 35//25 d5_pass_time = 55//40 GOSUB d5_calculate_time_score GOSUB d5_calculate_overall_score ELSE overall_secs = 0 position_score = 0 d5_damage_penalty = 0 overall_score = 0 ENDIF // checking overall score against the best score at present IF overall_score > d5_best_scores[1] d5_old_score = d5_best_scores[1] d5_best_scores[1] = overall_score d5_print_top_scores_flag = 1 GOSUB d5_medal_check ENDIF //opening next level IF d5_total_missions_open = 2 IF overall_score > 69 INCREMENT_INT_STAT FLYING_SKILL 60 d5_print_top_scores_flag = 2 d5_total_missions_open = 4 d5_last_played = 4 d5_mission_plane_dead_flag = 2 ENDIF ENDIF GOSUB d5_display_scores // infinite loop WHILE d5_fake_creates = 0 WAIT 0 GOSUB d5_draw_record_text IF NOT d5_print_top_scores_flag = 2 IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_landplane ENDIF ENDIF IF IS_WIDGET_RELEASED WIDGET_SCHOOL_CONTINUE GOTO d5_after_scores_landplane ENDIF ENDWHILE // resetting for another try d5_after_scores_landplane: GOSUB d5_mini_cleanup IF d5_mission_plane_dead_flag = 2 GOTO d5_noticeboard_setup ELSE GOTO d5_refresh_landplane ENDIF ENDIF ENDIF ENDIF GOTO d5_landplane_loop ENDIF IF d5_mission_selection = 3 OR d5_mission_selection = 4 d5_refresh_circleairstrip: GOSUB d5_start_initialise_stuff d5_setup_circleairstrip: // GOSUB setting_up_variables GOSUB d5_m3_calculate_corona_circle car_timer = 0 d5_print_top_scores_flag = 0 d5_mission_plane_dead_flag = 0 d5_plane_started = 0 d5_finished_mission = 0 d5_failed_challenge = 0 d5_plane_taken_off = 0 d5_next_corona = 0 // create mission plane CREATE_CAR RUSTLER d5_m1_plane_start_x d5_m1_plane_start_y d5_m1_plane_start_z d5_mission_plane SET_CAR_HEADING d5_mission_plane 90.0 IF d5_playback_flag = 0 DO_FADE 500 FADE_IN SET_PLANE_UNDERCARRIAGE_UP d5_mission_plane TRUE SET_FIXED_CAMERA_POSITION -1251.02 2301.32 140.44 0.0 0.0 0.0 POINT_CAMERA_AT_CAR d5_mission_plane FIXED JUMP_CUT RETURN ENDIF WAIT 500 CLEAR_PRINTS PRINT_HELP_FOREVER_CONDITIONAL DES5HID 2 // Press and hold ~m~~widget_accelerate~ to accelerate along the runway. GOSUB d5_stop_initialise_stuff // starting challenge d5_circleairstrip_loop: WAIT 0 FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT // checking player hasn't left plane IF IS_BUTTON_PRESSED PAD1 TRIANGLE OR IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_circleairstrip ENDIF // checking plane isn't dead GOSUB d5_mission_plane_dead_check IF d5_mission_plane_dead_flag = 1 IF IS_CAR_IN_WATER d5_mission_plane d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_circleairstrip ELSE GOTO mission_desert5_failed ENDIF ENDIF // checking if plane has moved IF d5_plane_started = 0 PRINT_HELP_FOREVER_CONDITIONAL DES5HID 2 // Press and hold ~m~~widget_accelerate~ to accelerate along the runway. GOSUB d5_has_plane_started IF d5_plane_started = 1 d5_next_corona = 0 ADD_BLIP_FOR_COORD d5_m3_corona_x[0] d5_m3_corona_y[0] d5_m3_corona_z[0] d5_corona_blip // first checkpoint normal parallel to x-axis CREATE_CHECKPOINT CHECKPOINT_TORUS d5_m3_corona_x[0] d5_m3_corona_y[0] d5_m3_corona_z[0] 0.0 d5_m3_corona_y[0] d5_m3_corona_z[0] d5_checkpoint_radius d5_m3_checkpoints[0] // each new checkpoint's normal points towards the last checkpoint CREATE_CHECKPOINT CHECKPOINT_TORUS d5_m3_corona_x[1] d5_m3_corona_y[1] d5_m3_corona_z[1] d5_m3_corona_x[0] d5_m3_corona_y[0] d5_m3_corona_z[0] d5_checkpoint_radius d5_m3_checkpoints[1] PRINT_NOW ( DES5_3B ) 10000 4 // Take off and climb steadily until you reach the first corona. // Cannot move rudder independently on mobile // PRINT ( DES5_3C ) 7000 4 // Press the L2 button to turn left and the R2 button to turn right using the rudder. // PRINT ( DES5_3D ) 10000 4 // You can use the rudder to turn more quickly while banking. ENDIF ELSE IF NOT IS_CAR_DEAD d5_mission_plane IF NOT d5_plane_taken_off = 1 GET_CAR_COORDINATES d5_mission_plane d5_plane_x d5_plane_y d5_plane_z IF d5_plane_z >= 25.0 d5_plane_taken_off = 1 ENDIF ENDIF IF LOCATE_CHAR_IN_CAR_3D scplayer d5_m3_corona_x[d5_next_corona] d5_m3_corona_y[d5_next_corona] d5_m3_corona_z[d5_next_corona] d5_checkpoint_radius d5_checkpoint_radius d5_checkpoint_radius FALSE REMOVE_BLIP d5_corona_blip DELETE_CHECKPOINT d5_m3_checkpoints[d5_next_corona] REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE d5_next_corona++ IF d5_next_corona < 8 ADD_BLIP_FOR_COORD d5_m3_corona_x[d5_next_corona] d5_m3_corona_y[d5_next_corona] d5_m3_corona_z[d5_next_corona] d5_corona_blip d5_next_corona_plus_one = d5_next_corona + 1 IF d5_next_corona_plus_one < 8 // each new checkpoint's normal points towards the last checkpoint CREATE_CHECKPOINT CHECKPOINT_TORUS d5_m3_corona_x[d5_next_corona_plus_one] d5_m3_corona_y[d5_next_corona_plus_one] d5_m3_corona_z[d5_next_corona_plus_one] d5_m3_corona_x[d5_next_corona] d5_m3_corona_y[d5_next_corona] d5_m3_corona_z[d5_next_corona] d5_checkpoint_radius d5_m3_checkpoints[d5_next_corona_plus_one] ENDIF IF d5_next_corona = 1 IF d5_mission_selection = 4 PRINT_HELP_FOREVER DES5_DE // ~s~Hold the movement controls down and to the right to bank round and head for the next ~y~corona. ELSE PRINT_HELP_FOREVER DES5_BE // ~s~Hold the movement controls down and to the left to bank round and head for the next ~y~corona. ENDIF ENDIF IF d5_next_corona = 2 IF d5_mission_selection = 4 PRINT_NOW ( DES5_3G ) 10000 4 // Bank left and fly through the next corona. ELSE PRINT_NOW ( DES5_3H ) 10000 4 // Bank right and fly through the next corona. ENDIF ENDIF IF d5_next_corona = 3 PRINT_NOW ( DES5_3K ) 10000 4 // Keep banking round and follow the coronas. PRINT ( DES5_3L ) 7000 4 // The artificial horizon on the radar displays the plane's attitude. PRINT ( DES5_3M ) 10000 4 // As the plane banks and pitches, the artificial horizon changes appropriately. ENDIF ELSE d5_finished_mission = 1 ENDIF ENDIF // check for player stopped (prevents player from getting stuck in ground) IF d5_plane_taken_off = 1 //IF IS_CAR_STOPPED d5_mission_plane IF NOT IS_CAR_IN_AIR_PROPER d5_mission_plane d5_failed_challenge = 1 ENDIF ENDIF // checking player hasn't flown too far away from the airstrip IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer -450.0 d5_runway_centre_y 1250.0 1250.0 FALSE d5_failed_challenge = 1 ENDIF // //checking timer hasn't run to 0 // GOSUB car_timer_0 // checking if finished challenge IF d5_finished_mission = 1 OR d5_failed_challenge = 1 // OR car_timer = 0 GOSUB d5_freeze_plane_pos // calculate player score IF d5_finished_mission = 1 GOSUB d5_calculate_position_score GOSUB d5_calculate_damage_penalty d5_perfect_time = 80//60 d5_pass_time = 100//75 GOSUB d5_calculate_time_score GOSUB d5_calculate_overall_score ELSE overall_secs = 0 position_score = 0 d5_damage_penalty = 0 overall_score = 0 ENDIF // checking overall score against the best score at present IF overall_score > d5_best_scores[2] d5_old_score = d5_best_scores[2] d5_best_scores[2] = overall_score d5_print_top_scores_flag = 1 GOSUB d5_medal_check ENDIF //opening next level IF d5_total_missions_open = 4 IF overall_score > 69 INCREMENT_INT_STAT FLYING_SKILL 60 d5_print_top_scores_flag = 2 d5_total_missions_open = 6 d5_last_played = 6 d5_mission_plane_dead_flag = 2 ENDIF ENDIF GOSUB d5_display_scores // infinite loop WHILE d5_fake_creates = 0 WAIT 0 GOSUB d5_draw_record_text IF NOT d5_print_top_scores_flag = 2 IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_circleairstrip ENDIF ENDIF IF IS_WIDGET_RELEASED WIDGET_SCHOOL_CONTINUE GOTO d5_after_scores_circleairstrip ENDIF ENDWHILE // resetting for another try d5_after_scores_circleairstrip: GOSUB d5_mini_cleanup // delete all checkpoints d5_index = 0 WHILE d5_index < 8 DELETE_CHECKPOINT d5_m3_checkpoints[d5_index] d5_index++ ENDWHILE IF d5_mission_plane_dead_flag = 2 GOTO d5_noticeboard_setup ELSE GOTO d5_refresh_circleairstrip ENDIF ENDIF ENDIF ENDIF GOTO d5_circleairstrip_loop ENDIF IF d5_mission_selection = 5 OR d5_mission_selection = 6 d5_refresh_circleairstripland: GOSUB d5_start_initialise_stuff d5_setup_circleairstripland: // GOSUB setting_up_variables GOSUB d5_m3_calculate_corona_circle car_timer = 0 d5_print_top_scores_flag = 0 d5_mission_plane_dead_flag = 0 d5_plane_started = 0 d5_finished_mission = 0 d5_failed_challenge = 0 d5_plane_taken_off = 0 d5_next_corona = 0 d5_m5_finished_following_coronas = 0 // create mission plane CREATE_CAR RUSTLER d5_m1_plane_start_x d5_m1_plane_start_y d5_m1_plane_start_z d5_mission_plane SET_CAR_HEADING d5_mission_plane 90.0 IF d5_playback_flag = 0 DO_FADE 500 FADE_IN SET_PLANE_UNDERCARRIAGE_UP d5_mission_plane TRUE SET_FIXED_CAMERA_POSITION -394.09 2601.47 134.89 0.0 0.0 0.0 POINT_CAMERA_AT_CAR d5_mission_plane FIXED JUMP_CUT RETURN ENDIF WAIT 500 CLEAR_PRINTS PRINT_HELP_FOREVER_CONDITIONAL DES5HID 2 // Press and hold ~m~~widget_accelerate~ to accelerate along the runway. GOSUB d5_stop_initialise_stuff // starting challenge d5_circleairstripland_loop: WAIT 0 FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT // checking player hasn't left plane IF IS_BUTTON_PRESSED PAD1 TRIANGLE OR IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_circleairstripland ENDIF // checking plane isn't dead GOSUB d5_mission_plane_dead_check IF d5_mission_plane_dead_flag = 1 IF IS_CAR_IN_WATER d5_mission_plane d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_circleairstripland ELSE GOTO mission_desert5_failed ENDIF ENDIF // checking if plane has moved IF d5_plane_started = 0 PRINT_HELP_FOREVER_CONDITIONAL DES5HID 2 // Press and hold ~m~~widget_accelerate~ to accelerate along the runway. GOSUB d5_has_plane_started IF d5_plane_started = 1 d5_next_corona = 0 ADD_BLIP_FOR_COORD d5_m3_corona_x[0] d5_m3_corona_y[0] d5_m3_corona_z[0] d5_corona_blip // first checkpoint normal parallel to x-axis CREATE_CHECKPOINT CHECKPOINT_TORUS d5_m3_corona_x[0] d5_m3_corona_y[0] d5_m3_corona_z[0] 0.0 d5_m3_corona_y[0] d5_m3_corona_z[0] d5_checkpoint_radius d5_m3_checkpoints[0] // each new checkpoint's normal points towards the last checkpoint CREATE_CHECKPOINT CHECKPOINT_TORUS d5_m3_corona_x[1] d5_m3_corona_y[1] d5_m3_corona_z[1] d5_m3_corona_x[0] d5_m3_corona_y[0] d5_m3_corona_z[0] d5_checkpoint_radius d5_m3_checkpoints[1] PRINT_NOW ( DES5_3B ) 10000 4 // Take off and climb steadily until you reach the first corona. // PRINT ( DES5_3C ) 10000 4 // Press the L2 button to turn left and the R2 button to turn right using the rudder. // PRINT ( DES5_3D ) 10000 4 // You can use the rudder to turn more quickly while banking. ENDIF ELSE IF NOT IS_CAR_DEAD d5_mission_plane IF NOT d5_plane_taken_off = 1 GET_CAR_COORDINATES d5_mission_plane d5_plane_x d5_plane_y d5_plane_z IF d5_plane_z >= 25.0 d5_plane_taken_off = 1 ENDIF ENDIF IF NOT d5_m5_finished_following_coronas = 1 IF LOCATE_CHAR_IN_CAR_3D scplayer d5_m3_corona_x[d5_next_corona] d5_m3_corona_y[d5_next_corona] d5_m3_corona_z[d5_next_corona] d5_checkpoint_radius d5_checkpoint_radius d5_checkpoint_radius FALSE REMOVE_BLIP d5_corona_blip DELETE_CHECKPOINT d5_m3_checkpoints[d5_next_corona] REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE d5_next_corona++ IF d5_next_corona < 8 ADD_BLIP_FOR_COORD d5_m3_corona_x[d5_next_corona] d5_m3_corona_y[d5_next_corona] d5_m3_corona_z[d5_next_corona] d5_corona_blip d5_next_corona_plus_one = d5_next_corona + 1 IF d5_next_corona_plus_one < 8 // each new checkpoint's normal points towards the last checkpoint CREATE_CHECKPOINT CHECKPOINT_TORUS d5_m3_corona_x[d5_next_corona_plus_one] d5_m3_corona_y[d5_next_corona_plus_one] d5_m3_corona_z[d5_next_corona_plus_one] d5_m3_corona_x[d5_next_corona] d5_m3_corona_y[d5_next_corona] d5_m3_corona_z[d5_next_corona] d5_checkpoint_radius d5_m3_checkpoints[d5_next_corona_plus_one] ENDIF IF d5_next_corona = 1 IF d5_mission_selection = 6 PRINT_NOW ( DES5_3H ) 10000 4 // Bank right and fly through the next corona. ELSE PRINT_NOW ( DES5_3G ) 10000 4 // Bank left and fly through the next corona. ENDIF ENDIF IF d5_next_corona = 2 IF d5_mission_selection = 6 PRINT_NOW ( DES5_3G ) 10000 4 // Bank left and fly through the next corona. ELSE PRINT_NOW ( DES5_3H ) 10000 4 // Bank right and fly through the next corona. ENDIF ENDIF IF d5_next_corona = 3 PRINT_NOW ( DES5_3K ) 10000 4 // Keep banking round and follow the coronas. ENDIF ELSE d5_m5_finished_following_coronas = 1 ADD_BLIP_FOR_COORD 308.0 d5_runway_y1 d5_m1_plane_start_z d5_corona_blip IF d5_mission_selection = 6 PRINT_NOW ( DES5_5I ) 10000 4 // Bank right and land on the runway. ELSE PRINT_NOW ( DES5_5H ) 10000 4 // Bank left and land on the runway. ENDIF PRINT ( DES5_5J ) 10000 4 // Stop in the target zone for extra points. ENDIF ENDIF ELSE IS_CAR_STOPPED_IN_AREA_3D d5_mission_plane 288.0 d5_runway_y1 16.0 328.0 d5_runway_y2 18.0 TRUE IF IS_CAR_STOPPED_IN_AREA_2D d5_mission_plane d5_runway_x1 d5_runway_y1 d5_runway_x2 d5_runway_y2 FALSE AND NOT IS_CAR_IN_AIR_PROPER d5_mission_plane AND NOT IS_CAR_UPSIDEDOWN d5_mission_plane d5_finished_mission = 1 // ELSE // IF IS_CAR_STOPPED d5_mission_plane // // check that player hasn't stopped outside the runway area // IF NOT IS_CHAR_IN_AREA_2D scplayer d5_runway_x1 d5_runway_y1 d5_runway_x2 d5_runway_y2 FALSE // d5_failed_challenge = 1 // ENDIF // ENDIF ENDIF ENDIF // check for player stopped (prevents player from getting stuck in ground) // IF d5_plane_taken_off = 1 // AND NOT d5_m5_finished_following_coronas = 1 // IF IS_CAR_STOPPED d5_mission_plane // d5_failed_challenge = 1 // ENDIF // ENDIF IF d5_plane_taken_off = 1 AND NOT IS_CAR_IN_AIR_PROPER d5_mission_plane IF NOT d5_m5_finished_following_coronas = 1 d5_failed_challenge = 1 ELSE IF NOT IS_CHAR_IN_AREA_2D scplayer d5_runway_x1 d5_runway_y1 d5_runway_x2 d5_runway_y2 FALSE d5_failed_challenge = 1 ELSE IF IS_CAR_UPSIDEDOWN d5_mission_plane d5_failed_challenge = 1 ENDIF ENDIF ENDIF ENDIF // checking player hasn't flown too far away from the airstrip IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer -450.0 d5_runway_centre_y 1250.0 1250.0 FALSE d5_failed_challenge = 1 ENDIF // //checking timer hasn't run to 0 // GOSUB car_timer_0 // checking if finished challenge IF d5_finished_mission = 1 OR d5_failed_challenge = 1 // OR car_timer = 0 GOSUB d5_freeze_plane_pos // calculate player score IF d5_finished_mission = 1 GOSUB d5_calculate_position_score GOSUB d5_calculate_damage_penalty d5_perfect_time = 110//80 d5_pass_time = 130//95 GOSUB d5_calculate_time_score GOSUB d5_calculate_overall_score ELSE overall_secs = 0 position_score = 0 d5_damage_penalty = 0 overall_score = 0 ENDIF // checking overall score against the best score at present IF overall_score > d5_best_scores[3] d5_old_score = d5_best_scores[3] d5_best_scores[3] = overall_score d5_print_top_scores_flag = 1 GOSUB d5_medal_check ENDIF //opening next level IF d5_total_missions_open = 6 IF overall_score > 69 INCREMENT_INT_STAT FLYING_SKILL 60 d5_print_top_scores_flag = 2 d5_total_missions_open = 7 d5_last_played = 7 d5_mission_plane_dead_flag = 2 ENDIF ENDIF GOSUB d5_display_scores // infinite loop WHILE d5_fake_creates = 0 WAIT 0 GOSUB d5_draw_record_text IF NOT d5_print_top_scores_flag = 2 IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_circleairstripland ENDIF ENDIF IF IS_WIDGET_RELEASED WIDGET_SCHOOL_CONTINUE GOTO d5_after_scores_circleairstripland ENDIF ENDWHILE // resetting for another try d5_after_scores_circleairstripland: GOSUB d5_mini_cleanup // delete all checkpoints d5_index = 0 WHILE d5_index < 8 DELETE_CHECKPOINT d5_m3_checkpoints[d5_index] d5_index++ ENDWHILE IF d5_mission_plane_dead_flag = 2 GOTO d5_noticeboard_setup ELSE GOTO d5_refresh_circleairstripland ENDIF ENDIF ENDIF ENDIF GOTO d5_circleairstripland_loop ENDIF IF d5_mission_selection = 7 d5_refresh_helitakeoff: GOSUB d5_start_initialise_stuff d5_setup_helitakeoff: // GOSUB setting_up_variables car_timer = 0 d5_print_top_scores_flag = 0 d5_mission_plane_dead_flag = 0 d5_plane_started = 0 d5_finished_mission = 0 d5_failed_challenge = 0 d5_plane_taken_off = 0 d5_plane_reached_required_altitude = 0 d5_required_altitude = d5_m7_corona_z[0] d5_m7_rotated_180 = 0 // create mission plane CREATE_CAR HUNTER d5_m1_plane_start_x d5_m1_plane_start_y 15.07 d5_mission_plane SET_CAR_HEADING d5_mission_plane 270.0 CAR_SET_IDLE d5_mission_plane IF d5_playback_flag = 0 DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION 323.02 2446.81 117.65 0.0 0.0 0.0 POINT_CAMERA_AT_CAR d5_mission_plane FIXED JUMP_CUT RETURN ENDIF LVAR_INT d5_mission_plane_moving d5_mission_plane_moving = 1 WHILE d5_mission_plane_moving = 1 WAIT 0 IF NOT IS_CAR_DEAD d5_mission_plane IF IS_CAR_STOPPED d5_mission_plane d5_mission_plane_moving = 0 ENDIF ENDIF ENDWHILE WAIT 500 CLEAR_PRINTS PRINT_HELP_FOREVER_CONDITIONAL DES5_7A 2 // Press and hold ~m~~widget_accelerate~ to accelerate upward. GOSUB d5_stop_initialise_stuff //starting challenge d5_helitakeoff_loop: WAIT 0 FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT // checking player hasn't left plane IF IS_BUTTON_PRESSED PAD1 TRIANGLE OR IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_helitakeoff ENDIF // checking plane isn't dead GOSUB d5_mission_plane_dead_check IF d5_mission_plane_dead_flag = 1 IF IS_CAR_IN_WATER d5_mission_plane d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_helitakeoff ELSE GOTO mission_desert5_failed ENDIF ENDIF // checking if plane has moved IF d5_plane_started = 0 PRINT_HELP_FOREVER_CONDITIONAL DES5_7A 2 // Press and hold ~m~~widget_accelerate~ to accelerate upward. IF NOT IS_CAR_DEAD d5_mission_plane IF IS_CAR_IN_AIR_PROPER d5_mission_plane DISPLAY_ONSCREEN_TIMER_WITH_STRING car_timer TIMER_UP ( DES5_T4 ) PRINT_NOW ( DES5_7B ) 10000 4 // Keep gaining height. d5_plane_started = 1 ENDIF ENDIF ELSE IF NOT IS_CAR_DEAD d5_mission_plane // temp //SET_CAMERA_BEHIND_PLAYER IF NOT d5_plane_reached_required_altitude = 1 GET_CAR_COORDINATES d5_mission_plane d5_plane_x d5_plane_y d5_plane_z IF d5_plane_z >= d5_required_altitude d5_plane_reached_required_altitude = 1 PRINT_HELP_FOREVER_CONDITIONAL DES5_7C 2 // Release ~m~~widget_accelerate~ to stop rising and level off. PRINT_HELP_FOREVER DES5_7D // Rotate the helicopter 180 degrees by using ~m~~widget_vehicle_turret_left~ and ~m~~widget_vehicle_turret_right~ to turn left and right. //PRINT_HELP_FOREVER DES5_7E // Press the L2 button to turn left and the R2 button to turn right. // Rudder not used in mobile ENDIF ENDIF IF d5_plane_reached_required_altitude = 1 IF NOT d5_m7_rotated_180 = 1 GET_CAR_HEADING d5_mission_plane d5_plane_heading IF d5_plane_heading >= 80.0 AND d5_plane_heading <= 100.0 d5_m7_rotated_180 = 1 ADD_BLIP_FOR_COORD d5_m7_corona_x[0] d5_m7_corona_y[0] d5_m7_corona_z[0] d5_corona_blip CREATE_CHECKPOINT CHECKPOINT_TORUS d5_m7_corona_x[0] d5_m7_corona_y[0] d5_m7_corona_z[0] 0.0 d5_m7_corona_y[0] d5_m7_corona_z[0] d5_checkpoint_radius d5_cur_checkpoint CLEAR_PRINTS PRINT_HELP_FOREVER DES5_7M // ~s~Push and hold ~m~~widget_ped_move~ upward to tilt the helicopter up. PRINT_HELP_FOREVER_CONDITIONAL DES5_7G 2 // Press and hold ~m~~widget_accelerate~ to go forward and head for the ~y~corona. PRINT_HELP_FOREVER DES5_7H // If you need to bank, press and hold ~m~~widget_ped_move_left~ or ~m~~widget_ped_move_right~. PRINT_HELP_FOREVER DES5_7I // If you need to descend, hold ~m~~widget_brake~. ENDIF ELSE IF LOCATE_CHAR_IN_CAR_3D scplayer d5_m7_corona_x[0] d5_m7_corona_y[0] d5_m7_corona_z[0] d5_checkpoint_radius d5_checkpoint_radius d5_checkpoint_radius FALSE REMOVE_BLIP d5_corona_blip DELETE_CHECKPOINT d5_cur_checkpoint REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE d5_finished_mission = 1 ENDIF ENDIF ENDIF IF NOT d5_plane_taken_off = 1 GET_CAR_COORDINATES d5_mission_plane d5_plane_x d5_plane_y d5_plane_z IF d5_plane_z >= 25.0 d5_plane_taken_off = 1 ENDIF ENDIF // check for player stopped (prevents player from getting stuck in ground) IF d5_plane_taken_off = 1 IF NOT IS_CAR_IN_AIR_PROPER d5_mission_plane d5_failed_challenge = 1 ENDIF ENDIF // checking player hasn't flown too far away from the airstrip IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer -450.0 d5_runway_centre_y 1250.0 1250.0 FALSE d5_failed_challenge = 1 ENDIF // checking if finished challenge IF d5_finished_mission = 1 OR d5_failed_challenge = 1 GOSUB d5_freeze_plane_pos // calculate player score IF d5_finished_mission = 1 GOSUB d5_calculate_position_score GOSUB d5_calculate_damage_penalty d5_perfect_time = 60//45 d5_pass_time = 80//60 GOSUB d5_calculate_time_score GOSUB d5_calculate_overall_score ELSE overall_secs = 0 position_score = 0 d5_damage_penalty = 0 overall_score = 0 ENDIF // checking overall score against the best score at present IF overall_score > d5_best_scores[4] d5_old_score = d5_best_scores[4] d5_best_scores[4] = overall_score d5_print_top_scores_flag = 1 GOSUB d5_medal_check ENDIF //opening next level IF d5_total_missions_open = 7 IF overall_score > 69 INCREMENT_INT_STAT FLYING_SKILL 60 d5_print_top_scores_flag = 2 d5_total_missions_open = 8 d5_last_played = 8 d5_mission_plane_dead_flag = 2 ENDIF ENDIF GOSUB d5_display_scores // infinite loop WHILE d5_fake_creates = 0 WAIT 0 GOSUB d5_draw_record_text IF NOT d5_print_top_scores_flag = 2 If IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_helitakeoff ENDIF ENDIF IF IS_WIDGET_RELEASED WIDGET_SCHOOL_CONTINUE GOTO d5_after_scores_helitakeoff ENDIF ENDWHILE // resetting for another try d5_after_scores_helitakeoff: GOSUB d5_mini_cleanup IF d5_mission_plane_dead_flag = 2 GOTO d5_noticeboard_setup ELSE GOTO d5_refresh_helitakeoff ENDIF ENDIF ENDIF ENDIF GOTO d5_helitakeoff_loop ENDIF IF d5_mission_selection = 8 d5_refresh_landheli: GOSUB d5_start_initialise_stuff d5_setup_landheli: // GOSUB setting_up_variables car_timer = 0 d5_print_top_scores_flag = 0 d5_mission_plane_dead_flag = 0 d5_plane_started = 0 d5_finished_mission = 0 d5_failed_challenge = 0 d5_m8_player_reached_hovering_area = 0 // create mission plane CREATE_CAR HUNTER d5_m8_plane_start_x d5_m8_plane_start_y d5_m8_plane_start_z d5_mission_plane SET_CAR_HEADING d5_mission_plane 270.0 SET_HELI_BLADES_FULL_SPEED d5_mission_plane IF d5_playback_flag = 0 DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION 301.56 2455.21 55.82 0.0 0.0 0.0 POINT_CAMERA_AT_CAR d5_mission_plane FIXED JUMP_CUT RETURN ENDIF FREEZE_CAR_POSITION d5_mission_plane TRUE WAIT 500 CLEAR_PRINTS PRINT_HELP DES5_8A // Press and hold ~m~~widget_accelerate~ to maintain your forward speed. GOSUB d5_stop_initialise_stuff //starting challenge d5_landheli_loop: WAIT 0 FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT // checking player hasn't left plane IF IS_BUTTON_PRESSED PAD1 TRIANGLE OR IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_landheli ENDIF // checking plane isn't dead GOSUB d5_mission_plane_dead_check IF d5_mission_plane_dead_flag = 1 IF IS_CAR_IN_WATER d5_mission_plane d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_landheli ELSE GOTO mission_desert5_failed ENDIF ENDIF // checking if plane has moved IF d5_plane_started = 0 IF NOT IS_CAR_DEAD d5_mission_plane FREEZE_CAR_POSITION d5_mission_plane FALSE SET_CAR_FORWARD_SPEED d5_mission_plane 15.0 DISPLAY_ONSCREEN_TIMER_WITH_STRING car_timer TIMER_UP ( DES5_T4 ) PRINT_HELP DES5_8A // Press and hold ~m~~widget_accelerate~ to maintain your forward speed. PRINT ( DES5_8B ) 10000 4 // Head for the far end of the runway and maintain your height. ADD_BLIP_FOR_COORD d5_m8_landing_target_x d5_m8_landing_target_y d5_m8_landing_target_z d5_corona_blip d5_plane_started = 1 ENDIF ELSE IF NOT IS_CAR_DEAD d5_mission_plane IF NOT d5_m8_player_reached_hovering_area = 1 IF LOCATE_CHAR_IN_CAR_2D scplayer d5_m8_landing_target_x d5_m8_landing_target_y 300.0 300.0 FALSE d5_m8_player_reached_hovering_area = 1 PRINT ( DES5_8C ) 10000 4 // Slow down and hover over the target zone. PRINT_HELP_FOREVER_CONDITIONAL DES5_8D 2 // Hold the ~Q~ button to descend slowly and land.~N~Land in the target area for extra points. PRINT_HELP_FOREVER_CONDITIONAL DES5_8E 2 // If you start to descend too quickly, release ~m~~widget_brake~ and hold ~m~~widget_accelerate~ to slow your descent. PRINT_HELP_FOREVER_CONDITIONAL DES5_8F 2 // Press ~m~~widget_brake~ to descend and ~m~~widget_accelerate~ to ascend. ENDIF ELSE LOCATE_STOPPED_CAR_3D d5_mission_plane d5_m8_landing_target_x d5_m8_landing_target_y d5_m8_landing_target_z 26.31 26.31 26.31 TRUE IF IS_CAR_STOPPED_IN_AREA_2D d5_mission_plane d5_runway_x1 d5_runway_y1 d5_runway_x2 d5_runway_y2 FALSE AND NOT IS_CAR_IN_AIR_PROPER d5_mission_plane AND NOT IS_CAR_UPSIDEDOWN d5_mission_plane d5_finished_mission = 1 ENDIF ENDIF // check for player stopped (prevents player from getting stuck in ground) IF NOT IS_CAR_IN_AIR_PROPER d5_mission_plane IF NOT d5_m8_player_reached_hovering_area = 1 d5_failed_challenge = 1 ELSE IF NOT IS_CHAR_IN_AREA_2D scplayer d5_runway_x1 d5_runway_y1 d5_runway_x2 d5_runway_y2 FALSE d5_failed_challenge = 1 ELSE IF IS_CAR_UPSIDEDOWN d5_mission_plane d5_failed_challenge = 1 ENDIF ENDIF ENDIF ENDIF // checking player hasn't flown too far away from the airstrip IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer -450.0 d5_runway_centre_y 1250.0 1250.0 FALSE d5_failed_challenge = 1 ENDIF // checking if finished challenge IF d5_finished_mission = 1 OR d5_failed_challenge = 1 GOSUB d5_freeze_plane_pos // calculate player score IF d5_finished_mission = 1 GOSUB d5_calculate_position_score GOSUB d5_calculate_damage_penalty d5_perfect_time = 40//30 d5_pass_time = 60//45 GOSUB d5_calculate_time_score GOSUB d5_calculate_overall_score ELSE overall_secs = 0 position_score = 0 d5_damage_penalty = 0 overall_score = 0 ENDIF // checking overall score against the best score at present IF overall_score > d5_best_scores[5] d5_old_score = d5_best_scores[5] d5_best_scores[5] = overall_score d5_print_top_scores_flag = 1 GOSUB d5_medal_check ENDIF //opening next level IF d5_total_missions_open = 8 IF overall_score > 69 INCREMENT_INT_STAT FLYING_SKILL 60 d5_print_top_scores_flag = 2 d5_total_missions_open = 9 d5_last_played = 9 d5_mission_plane_dead_flag = 2 ENDIF ENDIF GOSUB d5_display_scores // infinite loop WHILE d5_fake_creates = 0 WAIT 0 GOSUB d5_draw_record_text IF NOT d5_print_top_scores_flag = 2 IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_landheli ENDIF ENDIF IF IS_WIDGET_RELEASED WIDGET_SCHOOL_CONTINUE GOTO d5_after_scores_landheli ENDIF ENDWHILE // resetting for another try d5_after_scores_landheli: GOSUB d5_mini_cleanup IF d5_mission_plane_dead_flag = 2 GOTO d5_noticeboard_setup ELSE GOTO d5_refresh_landheli ENDIF ENDIF ENDIF ENDIF GOTO d5_landheli_loop ENDIF IF d5_mission_selection = 9 d5_refresh_destroytargets: GOSUB d5_start_initialise_stuff d5_setup_destroytargets: // GOSUB setting_up_variables car_timer = 0 d5_print_top_scores_flag = 0 d5_mission_plane_dead_flag = 0 d5_plane_started = 0 d5_finished_mission = 0 d5_failed_challenge = 0 d5_m9_heli_landing = 0 //d5_m9_targets_remaining = 0 // create mission plane CREATE_CAR HUNTER d5_m8_plane_start_x d5_m8_plane_start_y d5_m8_plane_start_z d5_mission_plane SET_CAR_HEADING d5_mission_plane 270.0 SET_HELI_BLADES_FULL_SPEED d5_mission_plane IF d5_playback_flag = 0 DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION 365.5 2339.25 63.23 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 363.09 2473.76 33.46 JUMP_CUT d5_m9_first_wave_car_x = 418.5 d5_index = 0 WHILE d5_index < d5_m9_num_of_first_wave_cars CREATE_CAR PETRO d5_m9_first_wave_car_x d5_runway_centre_y 17.1 d5_m9_first_wave_cars[d5_index] d5_m9_first_wave_car_x -= 40.0 d5_m9_car_exploded[d5_index] = 0 d5_index++ ENDWHILE TIMERB = 0 RETURN ENDIF FREEZE_CAR_POSITION d5_mission_plane TRUE WAIT 500 CLEAR_PRINTS PRINT_NOW ( DES5_9A ) 5000 4 // ~s~Destroy the three ~r~trucks ~s~at the end of the runway. GOSUB d5_stop_initialise_stuff //starting challenge d5_destroytargets_loop: WAIT 0 // checking player hasn't left plane IF IS_BUTTON_PRESSED PAD1 TRIANGLE OR IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_destroytargets ENDIF // checking plane isn't dead GOSUB d5_mission_plane_dead_check IF d5_mission_plane_dead_flag = 1 IF IS_CAR_IN_WATER d5_mission_plane d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_destroytargets ELSE GOTO mission_desert5_failed ENDIF ENDIF // checking if plane has moved IF d5_plane_started = 0 IF NOT IS_CAR_DEAD d5_mission_plane FREEZE_CAR_POSITION d5_mission_plane FALSE SET_CAR_FORWARD_SPEED d5_mission_plane 15.0 //d5_m9_targets_remaining = 3 //DISPLAY_ONSCREEN_COUNTER_WITH_STRING d5_m9_targets_remaining COUNTER_DISPLAY_NUMBER ( DES5_9F ) DISPLAY_ONSCREEN_TIMER_WITH_STRING car_timer TIMER_UP ( DES5_T4 ) PRINT_NOW ( DES5_9A ) 10000 4 // ~s~Destroy the three ~r~trucks ~s~at the end of the runway. PRINT_HELP_FOREVER DES5_9B // Tap ~m~~widget_rocket~ to fire rockets. Press and hold ~m~~widget_explicit_shoot~ to fire the guns. // create first wave of cars d5_m9_first_wave_car_x = 418.5 d5_index = 0 WHILE d5_index < d5_m9_num_of_first_wave_cars CREATE_CAR PETRO d5_m9_first_wave_car_x d5_runway_centre_y 17.1 d5_m9_first_wave_cars[d5_index] ADD_BLIP_FOR_CAR d5_m9_first_wave_cars[d5_index] d5_m9_first_wave_car_blips[d5_index] d5_m9_first_wave_blip_flags[d5_index] = 1 d5_m9_first_wave_car_x -= 40.0 d5_index++ ENDWHILE d5_m9_current_wave = 0 d5_plane_started = 1 ENDIF ELSE IF NOT IS_CAR_DEAD d5_mission_plane // temp //SET_CAMERA_BEHIND_PLAYER IF NOT d5_m9_heli_landing = 1 d5_m9_all_cars_in_current_wave_destroyed = 1 SWITCH d5_m9_current_wave CASE 0 d5_index = 0 WHILE d5_index < d5_m9_num_of_first_wave_cars IF IS_CAR_DEAD d5_m9_first_wave_cars[d5_index] // remove blips if cars destroyed IF d5_m9_first_wave_blip_flags[d5_index] = 1 REMOVE_BLIP d5_m9_first_wave_car_blips[d5_index] d5_m9_first_wave_blip_flags[d5_index] = 0 //d5_m9_targets_remaining-- ENDIF ELSE d5_m9_all_cars_in_current_wave_destroyed = 0 ENDIF d5_index++ ENDWHILE IF d5_m9_all_cars_in_current_wave_destroyed = 1 d5_m9_current_wave = 1 CREATE_CAR LANDSTAL 22.61 2322.06 22.35 d5_m9_second_wave_cars[0] CREATE_CAR LANDSTAL 74.58 2375.99 16.52 d5_m9_second_wave_cars[1] CREATE_CHAR_INSIDE_CAR d5_m9_second_wave_cars[0] PEDTYPE_MISSION1 MALE01 d5_m9_second_wave_car_drivers[0] CREATE_CHAR_INSIDE_CAR d5_m9_second_wave_cars[1] PEDTYPE_MISSION1 MALE01 d5_m9_second_wave_car_drivers[1] FLUSH_ROUTE EXTEND_ROUTE 76.44 2327.46 20.63 EXTEND_ROUTE 74.58 2375.99 16.52 EXTEND_ROUTE 19.12 2370.77 18.97 EXTEND_ROUTE 22.61 2322.06 22.35 OPEN_SEQUENCE_TASK d5_second_wave_seq0 TASK_DRIVE_POINT_ROUTE -1 d5_m9_second_wave_cars[0] 10.0 SET_SEQUENCE_TO_REPEAT d5_second_wave_seq0 1 CLOSE_SEQUENCE_TASK d5_second_wave_seq0 PERFORM_SEQUENCE_TASK d5_m9_second_wave_car_drivers[0] d5_second_wave_seq0 CLEAR_SEQUENCE_TASK d5_second_wave_seq0 FLUSH_ROUTE EXTEND_ROUTE 19.12 2370.77 18.97 EXTEND_ROUTE 22.61 2322.06 22.35 EXTEND_ROUTE 76.44 2327.46 20.63 EXTEND_ROUTE 74.58 2375.99 16.52 OPEN_SEQUENCE_TASK d5_second_wave_seq1 TASK_DRIVE_POINT_ROUTE -1 d5_m9_second_wave_cars[1] 10.0 SET_SEQUENCE_TO_REPEAT d5_second_wave_seq1 1 CLOSE_SEQUENCE_TASK d5_second_wave_seq1 PERFORM_SEQUENCE_TASK d5_m9_second_wave_car_drivers[1] d5_second_wave_seq1 CLEAR_SEQUENCE_TASK d5_second_wave_seq1 d5_index = 0 WHILE d5_index < d5_m9_num_of_second_wave_cars LOCK_CAR_DOORS d5_m9_second_wave_cars[d5_index] CARLOCK_LOCKED ADD_BLIP_FOR_CAR d5_m9_second_wave_cars[d5_index] d5_m9_second_wave_car_blips[d5_index] d5_m9_second_wave_blip_flags[d5_index] = 1 d5_index++ ENDWHILE //d5_m9_targets_remaining = 2 //CLEAR_ONSCREEN_COUNTER d5_m9_targets_remaining //DISPLAY_ONSCREEN_COUNTER_WITH_STRING d5_m9_targets_remaining COUNTER_DISPLAY_NUMBER ( DES5_9F ) PRINT_NOW ( DES5_9D ) 10000 4 // Now destroy the two moving cars to the south-west of the runway. d5_index = 0 WHILE d5_index < d5_m9_num_of_first_wave_cars MARK_CAR_AS_NO_LONGER_NEEDED d5_m9_first_wave_cars[d5_index] d5_index++ ENDWHILE ENDIF BREAK CASE 1 d5_index = 0 WHILE d5_index < d5_m9_num_of_second_wave_cars IF IS_CAR_DEAD d5_m9_second_wave_cars[d5_index] // remove blips if cars destroyed IF d5_m9_second_wave_blip_flags[d5_index] = 1 REMOVE_BLIP d5_m9_second_wave_car_blips[d5_index] d5_m9_second_wave_blip_flags[d5_index] = 0 //d5_m9_targets_remaining-- ENDIF ELSE d5_m9_all_cars_in_current_wave_destroyed = 0 ENDIF d5_index++ ENDWHILE IF d5_m9_all_cars_in_current_wave_destroyed = 1 d5_m9_current_wave = -1 //CLEAR_ONSCREEN_COUNTER d5_m9_targets_remaining ADD_BLIP_FOR_COORD d5_m8_landing_target_x d5_m8_landing_target_y d5_m8_landing_target_z d5_corona_blip PRINT_NOW ( DES5_9E ) 10000 4 // Land on the runway. PRINT ( DES5_5J ) 10000 4 // Stop in the target zone for extra points. d5_m9_heli_landing = 1 ENDIF BREAK DEFAULT d5_m9_heli_landing = 1 BREAK ENDSWITCH ELSE LOCATE_STOPPED_CAR_3D d5_mission_plane d5_m8_landing_target_x d5_m8_landing_target_y d5_m8_landing_target_z 26.31 26.31 26.31 TRUE IF IS_CAR_STOPPED_IN_AREA_2D d5_mission_plane d5_runway_x1 d5_runway_y1 d5_runway_x2 d5_runway_y2 FALSE AND NOT IS_CAR_IN_AIR_PROPER d5_mission_plane AND NOT IS_CAR_UPSIDEDOWN d5_mission_plane d5_finished_mission = 1 // ELSE // IF IS_CAR_STOPPED d5_mission_plane // // check that player hasn't stopped outside the runway area // IF NOT IS_CHAR_IN_AREA_2D scplayer d5_runway_x1 d5_runway_y1 d5_runway_x2 d5_runway_y2 FALSE // d5_failed_challenge = 1 // ENDIF // ENDIF ENDIF ENDIF // check for player stopped (prevents player from getting stuck in ground) // IF NOT d5_m9_heli_landing = 1 // IF IS_CAR_STOPPED d5_mission_plane // d5_failed_challenge = 1 // ENDIF // ENDIF IF NOT IS_CAR_IN_AIR_PROPER d5_mission_plane IF NOT d5_m9_heli_landing = 1 d5_failed_challenge = 1 ELSE IF NOT IS_CHAR_IN_AREA_2D scplayer d5_runway_x1 d5_runway_y1 d5_runway_x2 d5_runway_y2 FALSE d5_failed_challenge = 1 ELSE IF IS_CAR_UPSIDEDOWN d5_mission_plane d5_failed_challenge = 1 ENDIF ENDIF ENDIF ENDIF // checking player hasn't flown too far away from the airstrip IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer -450.0 d5_runway_centre_y 1250.0 1250.0 FALSE d5_failed_challenge = 1 ENDIF // //checking timer hasn't run to 0 // GOSUB car_timer_0 // checking if finished challenge IF d5_finished_mission = 1 OR d5_failed_challenge = 1 // OR car_timer = 0 GOSUB d5_freeze_plane_pos // calculate player score IF d5_finished_mission = 1 GOSUB d5_calculate_position_score GOSUB d5_calculate_damage_penalty d5_perfect_time = 110//80 d5_pass_time = 140//105 GOSUB d5_calculate_time_score GOSUB d5_calculate_overall_score ELSE overall_secs = 0 position_score = 0 d5_damage_penalty = 0 overall_score = 0 ENDIF // checking overall score against the best score at present IF overall_score > d5_best_scores[6] d5_old_score = d5_best_scores[6] d5_best_scores[6] = overall_score d5_print_top_scores_flag = 1 GOSUB d5_medal_check ENDIF //opening next level IF d5_total_missions_open = 9 IF overall_score > 69 INCREMENT_INT_STAT FLYING_SKILL 60 d5_print_top_scores_flag = 2 d5_total_missions_open = 10 d5_last_played = 10 d5_mission_plane_dead_flag = 2 ENDIF ENDIF GOSUB d5_display_scores // infinite loop WHILE d5_fake_creates = 0 WAIT 0 GOSUB d5_draw_record_text IF NOT d5_print_top_scores_flag = 2 If IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_destroytargets ENDIF ENDIF IF IS_WIDGET_RELEASED WIDGET_SCHOOL_CONTINUE GOTO d5_after_scores_destroytargets ENDIF ENDWHILE // resetting for another try d5_after_scores_destroytargets: GOSUB d5_mini_cleanup // clean up any cars/blips that might be left CLEAR_SEQUENCE_TASK d5_second_wave_seq0 CLEAR_SEQUENCE_TASK d5_second_wave_seq1 d5_index = 0 WHILE d5_index < d5_m9_num_of_first_wave_cars DELETE_CAR d5_m9_first_wave_cars[d5_index] REMOVE_BLIP d5_m9_first_wave_car_blips[d5_index] d5_index++ ENDWHILE d5_index = 0 WHILE d5_index < d5_m9_num_of_second_wave_cars DELETE_CHAR d5_m9_second_wave_car_drivers[d5_index] DELETE_CAR d5_m9_second_wave_cars[d5_index] REMOVE_BLIP d5_m9_second_wave_car_blips[d5_index] d5_index++ ENDWHILE //CLEAR_ONSCREEN_COUNTER d5_m9_targets_remaining IF d5_mission_plane_dead_flag = 2 GOTO d5_noticeboard_setup ELSE GOTO d5_refresh_destroytargets ENDIF ENDIF ENDIF ENDIF GOTO d5_destroytargets_loop ENDIF IF d5_mission_selection = 10 d5_refresh_looptheloop: GOSUB d5_start_initialise_stuff d5_setup_looptheloop: // GOSUB setting_up_variables car_timer = 0 d5_print_top_scores_flag = 0 d5_mission_plane_dead_flag = 0 d5_plane_started = 0 d5_finished_mission = 0 d5_failed_challenge = 0 //GOSUB d5_m10_calculate_looptheloop_coronas d5_m10_player_passed_starting_corona = 0 d5_m10_completed_stunt = 0 // create mission plane CREATE_CAR STUNT d5_m8_plane_start_x d5_m10_start_corona_y d5_m10_start_corona_z d5_mission_plane SET_CAR_HEADING d5_mission_plane 270.0 //CHANGE_CAR_COLOUR d5_mission_plane 7 53 IF d5_playback_flag = 0 DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION 269.53 2445.3 88.46 0.0 0.0 0.0 POINT_CAMERA_AT_CAR d5_mission_plane FIXED JUMP_CUT RETURN ENDIF FREEZE_CAR_POSITION d5_mission_plane TRUE WAIT 500 CLEAR_PRINTS PRINT_HELP_FOREVER_CONDITIONAL DESHID1 2 // Press and hold ~m~~widget_accelerate~ to maintain your height, keep the plane level and head for the first ~y~corona. GOSUB d5_stop_initialise_stuff //starting challenge d5_looptheloop_loop: WAIT 0 FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT // checking player hasn't left plane IF IS_BUTTON_PRESSED PAD1 TRIANGLE OR IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_looptheloop ENDIF // checking plane isn't dead GOSUB d5_mission_plane_dead_check IF d5_mission_plane_dead_flag = 1 IF IS_CAR_IN_WATER d5_mission_plane d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_looptheloop ELSE GOTO mission_desert5_failed ENDIF ENDIF // checking if plane has moved IF d5_plane_started = 0 IF NOT IS_CAR_DEAD d5_mission_plane FREEZE_CAR_POSITION d5_mission_plane FALSE SET_CAR_FORWARD_SPEED d5_mission_plane 20.0 d5_plane_started = 1 ADD_BLIP_FOR_COORD d5_m10_start_corona_x d5_m10_start_corona_y d5_m10_start_corona_z d5_corona_blip CREATE_CHECKPOINT CHECKPOINT_TORUS d5_m10_start_corona_x d5_m10_start_corona_y d5_m10_start_corona_z 0.0 d5_m10_start_corona_y d5_m10_start_corona_z d5_checkpoint_radius d5_m10_start_checkpoint CREATE_CHECKPOINT CHECKPOINT_TORUS d5_m10_end_corona_x d5_m10_start_corona_y d5_m10_start_corona_z 0.0 d5_m10_start_corona_y d5_m10_start_corona_z d5_checkpoint_radius d5_m10_end_checkpoint DISPLAY_ONSCREEN_TIMER_WITH_STRING car_timer TIMER_UP ( DES5_T4 ) PRINT_HELP_FOREVER_CONDITIONAL DESHID1 2 // Press and hold ~m~~widget_accelerate~ to maintain your height, keep the plane level and head for the first ~y~corona. PRINT_HELP_FOREVER DES5_AB // ~s~As soon as you hit the corona, use ~m~~widget_ped_move_down~ to pull up quickly and hold to do a loop-the-loop. ENDIF ELSE IF NOT IS_CAR_DEAD d5_mission_plane IF NOT d5_m10_player_passed_starting_corona = 1 IF LOCATE_CHAR_IN_CAR_3D scplayer d5_m10_start_corona_x d5_m10_start_corona_y d5_m10_start_corona_z d5_checkpoint_radius d5_checkpoint_radius d5_checkpoint_radius FALSE REMOVE_BLIP d5_corona_blip DELETE_CHECKPOINT d5_m10_start_checkpoint REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE d5_m10_player_passed_starting_corona = 1 PRINT_HELP_FOREVER DES5_AG // ~s~Pull back on ~m~~widget_ped_move~ now. GET_CAR_PITCH d5_mission_plane d5_last_pitch d5_pitch_progress = 0.0 d5_negative_progress = 0.0 ENDIF ELSE IF NOT d5_m10_completed_stunt = 1 GET_CAR_ROLL d5_mission_plane d5_cur_roll IF d5_cur_roll < 0.0 d5_cur_roll += 360.0 ENDIF GET_CAR_UPRIGHT_VALUE d5_mission_plane d5_plane_up_component // different limits for roll depending on whether plane's upside down or not IF d5_plane_up_component >= 0.0 // right way up IF d5_cur_roll >= 20.0 AND d5_cur_roll <= 340.0 d5_failed_challenge = 1 ENDIF ELSE // upside down IF d5_cur_roll <= 160.0 OR d5_cur_roll >= 200.0 d5_failed_challenge = 1 ENDIF ENDIF GET_CAR_PITCH d5_mission_plane d5_cur_pitch d5_pitch_diff = d5_cur_pitch - d5_last_pitch d5_last_pitch = d5_cur_pitch // compensate for cur_pitch and last_pitch being on opposite sides of zero degrees // (eg. if cur_pitch is 359 and last_pitch is 1, real distance moved is 2, not 358.) IF d5_pitch_diff > 180.0 d5_pitch_diff -= 360.0 ENDIF IF d5_pitch_diff < -180.0 d5_pitch_diff += 360.0 ENDIF IF d5_pitch_diff < 0.0 d5_negative_progress += d5_pitch_diff ELSE IF d5_negative_progress < 0.0 d5_negative_progress += d5_pitch_diff ELSE d5_pitch_progress += d5_negative_progress d5_negative_progress = 0.0 d5_pitch_progress += d5_pitch_diff ENDIF ENDIF IF d5_negative_progress < -20.0 d5_failed_challenge = 1 ENDIF IF NOT d5_failed_challenge = 1 // done full loop-the-loop IF d5_pitch_progress >= 360.0 d5_m10_completed_stunt = 1 ADD_BLIP_FOR_COORD d5_m10_end_corona_x d5_m10_start_corona_y d5_m10_start_corona_z d5_corona_blip PRINT_NOW ( DES5_AD ) 10000 4 // Fly through the final corona. ENDIF ENDIF // // temp // VIEW_FLOAT_VARIABLE d5_pitch_diff d5_pitch_diff // VIEW_FLOAT_VARIABLE d5_negative_progress d5_negative_progress // VIEW_FLOAT_VARIABLE d5_pitch_progress d5_pitch_progress ELSE IF LOCATE_CHAR_IN_CAR_3D scplayer d5_m10_end_corona_x d5_m10_start_corona_y d5_m10_start_corona_z d5_checkpoint_radius d5_checkpoint_radius d5_checkpoint_radius FALSE REMOVE_BLIP d5_corona_blip DELETE_CHECKPOINT d5_m10_end_checkpoint REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE d5_finished_mission = 1 ENDIF ENDIF ENDIF // check for player stopped (prevents player from getting stuck in ground) IF NOT IS_CAR_IN_AIR_PROPER d5_mission_plane d5_failed_challenge = 1 ENDIF // checking player hasn't flown too far away from the airstrip IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer -450.0 d5_runway_centre_y 1250.0 1250.0 FALSE d5_failed_challenge = 1 ENDIF // checking if finished challenge IF d5_finished_mission = 1 OR d5_failed_challenge = 1 // OR car_timer = 0 GOSUB d5_freeze_plane_pos // calculate player score IF d5_finished_mission = 1 GOSUB d5_calculate_position_score GOSUB d5_calculate_damage_penalty d5_perfect_time = 30//21 d5_pass_time = 40//27 GOSUB d5_calculate_time_score GOSUB d5_calculate_overall_score ELSE overall_secs = 0 position_score = 0 d5_damage_penalty = 0 overall_score = 0 ENDIF // checking overall score against the best score at present IF overall_score > d5_best_scores[7] d5_old_score = d5_best_scores[7] d5_best_scores[7] = overall_score d5_print_top_scores_flag = 1 GOSUB d5_medal_check ENDIF //opening next level IF d5_total_missions_open = 10 IF overall_score > 69 INCREMENT_INT_STAT FLYING_SKILL 60 d5_print_top_scores_flag = 2 d5_total_missions_open = 11 d5_last_played = 11 d5_mission_plane_dead_flag = 2 ENDIF ENDIF GOSUB d5_display_scores // infinite loop WHILE d5_fake_creates = 0 WAIT 0 GOSUB d5_draw_record_text IF NOT d5_print_top_scores_flag = 2 IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_looptheloop ENDIF ENDIF IF IS_WIDGET_RELEASED WIDGET_SCHOOL_CONTINUE GOTO d5_after_scores_looptheloop ENDIF ENDWHILE // resetting for another try d5_after_scores_looptheloop: GOSUB d5_mini_cleanup DELETE_CHECKPOINT d5_m10_start_checkpoint DELETE_CHECKPOINT d5_m10_end_checkpoint IF d5_mission_plane_dead_flag = 2 GOTO d5_noticeboard_setup ELSE GOTO d5_refresh_looptheloop ENDIF ENDIF ENDIF ENDIF GOTO d5_looptheloop_loop ENDIF IF d5_mission_selection = 11 d5_refresh_barrelroll: GOSUB d5_start_initialise_stuff d5_setup_barrelroll: // GOSUB setting_up_variables car_timer = 0 d5_print_top_scores_flag = 0 d5_mission_plane_dead_flag = 0 d5_plane_started = 0 d5_finished_mission = 0 d5_failed_challenge = 0 d5_m10_player_passed_starting_corona = 0 d5_m10_completed_stunt = 0 // create mission plane CREATE_CAR STUNT d5_m8_plane_start_x d5_m10_start_corona_y d5_m10_start_corona_z d5_mission_plane SET_CAR_HEADING d5_mission_plane 270.0 //CHANGE_CAR_COLOUR d5_mission_plane 7 53 IF d5_playback_flag = 0 DO_FADE 500 FADE_IN SET_FIXED_CAMERA_POSITION 292.95 2445.3 93.46 0.0 0.0 0.0 POINT_CAMERA_AT_CAR d5_mission_plane FIXED JUMP_CUT RETURN ENDIF FREEZE_CAR_POSITION d5_mission_plane TRUE WAIT 500 CLEAR_PRINTS PRINT_HELP_FOREVER_CONDITIONAL DESHID1 2 // Press and hold ~m~~widget_accelerate~ to maintain your height, keep the plane level and head for the first ~y~corona. GOSUB d5_stop_initialise_stuff //starting challenge d5_barrelroll_loop: WAIT 0 FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT // checking player hasn't left plane IF IS_BUTTON_PRESSED PAD1 TRIANGLE OR IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_barrelroll ENDIF // checking plane isn't dead GOSUB d5_mission_plane_dead_check IF d5_mission_plane_dead_flag = 1 IF IS_CAR_IN_WATER d5_mission_plane d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_barrelroll ELSE GOTO mission_desert5_failed ENDIF ENDIF // checking if plane has moved IF d5_plane_started = 0 IF NOT IS_CAR_DEAD d5_mission_plane FREEZE_CAR_POSITION d5_mission_plane FALSE SET_CAR_FORWARD_SPEED d5_mission_plane 20.0 d5_plane_started = 1 ADD_BLIP_FOR_COORD d5_m10_start_corona_x d5_m10_start_corona_y d5_m10_start_corona_z d5_corona_blip CREATE_CHECKPOINT CHECKPOINT_TORUS d5_m10_start_corona_x d5_m10_start_corona_y d5_m10_start_corona_z 0.0 d5_m10_start_corona_y d5_m10_start_corona_z d5_checkpoint_radius d5_m10_start_checkpoint CREATE_CHECKPOINT CHECKPOINT_TORUS d5_m10_end_corona_x d5_m10_start_corona_y d5_m10_start_corona_z 0.0 d5_m10_start_corona_y d5_m10_start_corona_z d5_checkpoint_radius d5_m10_end_checkpoint DISPLAY_ONSCREEN_TIMER_WITH_STRING car_timer TIMER_UP ( DES5_T4 ) PRINT_HELP_FOREVER_CONDITIONAL DESHID1 2 // Press and hold ~m~~widget_accelerate~ to maintain your height, keep the plane level and head for the first ~y~corona. PRINT_HELP_FOREVER DES5_DT // ~s~As soon as you hit the corona, push and hold ~m~~widget_ped_move~ leftward to do a barrel roll. ENDIF ELSE IF NOT IS_CAR_DEAD d5_mission_plane IF NOT d5_m10_player_passed_starting_corona = 1 IF LOCATE_CHAR_IN_CAR_3D scplayer d5_m10_start_corona_x d5_m10_start_corona_y d5_m10_start_corona_z d5_checkpoint_radius d5_checkpoint_radius d5_checkpoint_radius FALSE REMOVE_BLIP d5_corona_blip DELETE_CHECKPOINT d5_m10_start_checkpoint REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE d5_m10_player_passed_starting_corona = 1 CLEAR_PRINTS PRINT_HELP_FOREVER DES5_BM // push and hold ~m~~widget_ped_move~ leftward to do a barrel roll. GET_CAR_ROLL d5_mission_plane d5_last_roll IF d5_last_roll < 0.0 d5_last_roll += 360.0 ENDIF d5_roll_progress = 0.0 d5_negative_progress = 0.0 ENDIF ELSE IF NOT d5_m10_completed_stunt = 1 GET_CAR_ROLL d5_mission_plane d5_cur_roll IF d5_cur_roll < 0.0 d5_cur_roll += 360.0 ENDIF d5_roll_diff = d5_cur_roll - d5_last_roll d5_last_roll = d5_cur_roll // compensate for cur_roll and last_roll being on opposite sides of zero degrees // (eg. if cur_roll is 359 and last_roll is 1, real distance moved is 2, not 358.) IF d5_roll_diff > 180.0 d5_roll_diff -= 360.0 ENDIF IF d5_roll_diff < -180.0 d5_roll_diff += 360.0 ENDIF IF d5_roll_diff < 0.0 d5_negative_progress += d5_roll_diff ELSE IF d5_negative_progress < 0.0 d5_negative_progress += d5_roll_diff ELSE d5_roll_progress += d5_negative_progress d5_negative_progress = 0.0 d5_roll_progress += d5_roll_diff ENDIF ENDIF IF d5_negative_progress < -20.0 d5_failed_challenge = 1 ELSE // done full barrel roll IF d5_roll_progress >= 360.0 d5_m10_completed_stunt = 1 ADD_BLIP_FOR_COORD d5_m10_end_corona_x d5_m10_start_corona_y d5_m10_start_corona_z d5_corona_blip PRINT_NOW ( DES5_AD ) 10000 4 // Fly through the final corona. ENDIF ENDIF // // temp // VIEW_FLOAT_VARIABLE d5_roll_diff d5_roll_diff // VIEW_FLOAT_VARIABLE d5_negative_progress d5_negative_progress // VIEW_FLOAT_VARIABLE d5_roll_progress d5_roll_progress ELSE IF LOCATE_CHAR_IN_CAR_3D scplayer d5_m10_end_corona_x d5_m10_start_corona_y d5_m10_start_corona_z d5_checkpoint_radius d5_checkpoint_radius d5_checkpoint_radius FALSE REMOVE_BLIP d5_corona_blip DELETE_CHECKPOINT d5_m10_end_checkpoint REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE d5_finished_mission = 1 ENDIF ENDIF ENDIF // check for player stopped (prevents player from getting stuck in ground) IF NOT IS_CAR_IN_AIR_PROPER d5_mission_plane d5_failed_challenge = 1 ENDIF // checking player hasn't flown too far away from the airstrip IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer -450.0 d5_runway_centre_y 1250.0 1250.0 FALSE d5_failed_challenge = 1 ENDIF // checking if finished challenge IF d5_finished_mission = 1 OR d5_failed_challenge = 1 // OR car_timer = 0 GOSUB d5_freeze_plane_pos // calculate player score IF d5_finished_mission = 1 GOSUB d5_calculate_position_score GOSUB d5_calculate_damage_penalty d5_perfect_time = 25//18 d5_pass_time = 35//23 GOSUB d5_calculate_time_score GOSUB d5_calculate_overall_score ELSE overall_secs = 0 position_score = 0 d5_damage_penalty = 0 overall_score = 0 ENDIF // checking overall score against the best score at present IF overall_score > d5_best_scores[8] d5_old_score = d5_best_scores[8] d5_best_scores[8] = overall_score d5_print_top_scores_flag = 1 GOSUB d5_medal_check ENDIF //opening next level IF d5_total_missions_open = 11 IF overall_score > 69 INCREMENT_INT_STAT FLYING_SKILL 60 d5_print_top_scores_flag = 2 d5_total_missions_open = 12 d5_last_played = 12 d5_mission_plane_dead_flag = 2 ENDIF ENDIF GOSUB d5_display_scores // infinite loop WHILE d5_fake_creates = 0 WAIT 0 GOSUB d5_draw_record_text IF NOT d5_print_top_scores_flag = 2 IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_barrelroll ENDIF ENDIF IF IS_WIDGET_RELEASED WIDGET_SCHOOL_CONTINUE GOTO d5_after_scores_barrelroll ENDIF ENDWHILE // resetting for another try d5_after_scores_barrelroll: GOSUB d5_mini_cleanup DELETE_CHECKPOINT d5_m10_start_checkpoint DELETE_CHECKPOINT d5_m10_end_checkpoint IF d5_mission_plane_dead_flag = 2 GOTO d5_noticeboard_setup ELSE GOTO d5_refresh_barrelroll ENDIF ENDIF ENDIF ENDIF GOTO d5_barrelroll_loop ENDIF IF d5_mission_selection = 12 d5_refresh_parachute: GOSUB d5_start_initialise_stuff d5_setup_parachute: // GOSUB setting_up_variables car_timer = 0 d5_print_top_scores_flag = 0 d5_mission_plane_dead_flag = 0 d5_plane_started = 0 d5_finished_mission = 0 d5_failed_challenge = 0 d5_m12_player_reached_opening_altitude = 0 d5_m12_player_opened_parachute = 0 IF d5_playback_flag = 0 DO_FADE 500 FADE_IN // creating parachuting guy and starting parachute script CREATE_CHAR PEDTYPE_MISSION1 0 d5_runway_x2 d5_runway_centre_y 250.0 d5_m12_stunt_double SET_CHAR_HEADING d5_m12_stunt_double 90.0 FREEZE_CHAR_POSITION d5_m12_stunt_double TRUE ai_target_x = d5_m12_parachute_target_x ai_target_y = d5_m12_parachute_target_y ai_target_z = d5_m12_parachute_target_z START_NEW_STREAMED_SCRIPT parachute.sc -1 -10.0 10.0 -5.0 -2.0 10.0 12.0 TRUE d5_m12_stunt_double STREAM_SCRIPT parachute.sc ATTACH_CAMERA_TO_CHAR_LOOK_AT_CHAR d5_m12_stunt_double 0.0 -5.0 4.0 d5_m12_stunt_double 0.0 JUMP_CUT RETURN ENDIF SET_CHAR_COORDINATES scplayer d5_m12_parachute_start_x d5_m12_parachute_start_y d5_m12_parachute_start_z SET_CHAR_HEADING scplayer 90.0 // give the player a parachute REQUEST_MODEL gun_para WHILE NOT HAS_MODEL_LOADED gun_para WAIT 0 ENDWHILE GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_PARACHUTE 1 para_float_Vy = 5.0 para_float_Vz = -5.0 para_flare_Vy = 8.5 para_flare_Vz = -1.5 para_freefall_Vz = -30.0 para_freefall_Vy = 15.0 Para_pickup_flag = 0 WHILE player_has_parachute < 2 WAIT 0 ENDWHILE //POINT_CAMERA_AT_CHAR scplayer TOP_DOWN_PED JUMP_CUT //ATTACH_CAMERA_TO_CHAR_LOOK_AT_CHAR scplayer 0.0 0.0 50.0 scplayer 0.0 JUMP_CUT CREATE_OBJECT basejump_target d5_m12_parachute_target_x d5_m12_parachute_target_y d5_m12_parachute_target_z d5_m12_parachute_target SET_OBJECT_HEADING d5_m12_parachute_target 90.0 CREATE_CHECKPOINT CHECKPOINT_TORUS d5_m12_parachute_target_x d5_m12_parachute_target_y d5_m12_parachute_target_z d5_m12_parachute_target_x d5_m12_parachute_target_y 900.0 6.5 d5_m12_checkpoint WAIT 500 CLEAR_PRINTS PRINT_HELP DES5_CA // While freefalling, push ~m~~widget_ped_move_up~ to dive forward. PRINT ( DES5_CI ) 10000 4 // Use the movement controls to slow your descent and to rotate. GOSUB d5_stop_initialise_stuff //starting challenge d5_parachute_loop: WAIT 0 FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT // checking if player's pressed triangle to quit out IF IS_BUTTON_PRESSED PAD1 TRIANGLE OR IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_parachute ENDIF // checking if player has started the jump IF d5_plane_started = 0 DISPLAY_ONSCREEN_TIMER_WITH_STRING car_timer TIMER_UP ( DES5_T4 ) ADD_BLIP_FOR_COORD d5_m12_parachute_target_x d5_m12_parachute_target_y d5_m12_parachute_target_z d5_corona_blip d5_plane_started = 1 ELSE IF NOT d5_m12_player_opened_parachute = 1 IF NOT d5_m12_player_reached_opening_altitude = 1 GET_CHAR_COORDINATES scplayer d5_player_x d5_player_y d5_player_z IF d5_player_z <= 300.0 d5_m12_player_reached_opening_altitude = 1 PRINT_HELP_FOREVER DES5_CC // ~s~Press ~m~~widget_attack~ to open the parachute now. ENDIF ENDIF IF IS_BUTTON_PRESSED PAD1 CIRCLE OR IS_WIDGET_DOUBLETAPPED WIDGET_LOOK OR IS_WIDGET_RELEASED WIDGET_PARACHUTE d5_m12_player_opened_parachute = 1 CLEAR_PRINTS PRINT_NOW ( DES5_CD ) 7000 4 // Land on the target.~N~Land closer to the centre for extra points. PRINT_HELP_FOREVER DES5_CG // Use the movement controls to lift your legs up and move forward. PRINT ( DES5_CF ) 7000 4 // Use the movement controls lift your legs up and move forward. PRINT ( DES5_CH ) 7000 4 // When you move forward, this will also slow your rate of descent. PRINT_HELP_FOREVER DES5_CE // Use the movement controls to guide the parachute left and right. ENDIF ENDIF IF d5_m12_player_opened_parachute = 1 IF NOT player_landed = 0 GET_CHAR_COORDINATES scplayer d5_player_x d5_player_y d5_player_z GET_DISTANCE_BETWEEN_COORDS_2D d5_player_x d5_player_y d5_m12_parachute_target_x d5_m12_parachute_target_y d5_m12_distance_from_player_to_target IF d5_m12_distance_from_player_to_target <= 10.0 d5_finished_mission = 1 ELSE d5_failed_challenge = 1 ENDIF ENDIF ENDIF // checking player hasn't flown too far away from the airstrip IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer -450.0 d5_runway_centre_y 1250.0 1250.0 FALSE d5_failed_challenge = 1 ENDIF // checking if finished challenge IF d5_finished_mission = 1 OR d5_failed_challenge = 1 GOSUB d5_freeze_plane_pos // freezes player pos (special case for parachuting) // calculate player score IF d5_finished_mission = 1 GOSUB d5_calculate_position_score GOSUB d5_calculate_damage_penalty d5_perfect_time = 75//55 d5_pass_time = 95//70 GOSUB d5_calculate_time_score GOSUB d5_calculate_overall_score ELSE overall_secs = 0 position_score = 0 d5_damage_penalty = 0 overall_score = 0 ENDIF // checking overall score against the best score at present IF overall_score > d5_best_scores[9] d5_old_score = d5_best_scores[9] d5_best_scores[9] = overall_score d5_print_top_scores_flag = 1 GOSUB d5_medal_check ENDIF //opening next level IF NOT pilot_test_passed = 1 IF overall_score > 69 d5_print_top_scores_flag = 2 d5_total_missions_open = 12 d5_last_played = 12 d5_mission_plane_dead_flag = 2 INCREMENT_INT_STAT FLYING_SKILL 60 pilot_test_passed = 1 d5_just_passed_pilot_school = 1 ENDIF ENDIF GOSUB d5_display_scores // infinite loop WHILE d5_fake_creates = 0 WAIT 0 GOSUB d5_draw_record_text IF NOT d5_print_top_scores_flag = 2 IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL d5_mission_plane_dead_flag = 2 GOTO d5_after_scores_parachute ENDIF ENDIF IF IS_WIDGET_RELEASED WIDGET_SCHOOL_CONTINUE GOTO d5_after_scores_parachute ENDIF ENDWHILE // resetting for another try d5_after_scores_parachute: GOSUB d5_mini_cleanup FREEZE_CHAR_POSITION scplayer FALSE IF d5_just_passed_pilot_school = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_desert5_passed ENDIF IF d5_mission_plane_dead_flag = 2 GOTO d5_noticeboard_setup ELSE GOTO d5_refresh_parachute ENDIF ENDIF ENDIF GOTO d5_parachute_loop ENDIF // ********************************** Mission GOSUBS ************************************ // ************************************************************ // Find positions of coronas for circling left/right // ************************************************************ d5_m3_calculate_corona_circle: d5_m3_corona_x[0] = -383.79 d5_m3_corona_y[0] = d5_runway_centre_y d5_m3_corona_z[0] = 147.09 // lower half of balloon (straight sides) d5_m3_corona_x[1] = d5_m3_corona_x[0] - 300.0 d5_m3_corona_x[6] = d5_m3_corona_x[0] - 300.0 IF d5_mission_selection = 3 OR d5_mission_selection = 5 // circling right d5_m3_corona_y[1] = d5_m3_corona_y[0] - 300.0 d5_m3_corona_y[6] = d5_m3_corona_y[0] + 300.0 ELSE // circling left d5_m3_corona_y[1] = d5_m3_corona_y[0] + 300.0 d5_m3_corona_y[6] = d5_m3_corona_y[0] - 300.0 ENDIF d5_m3_corona_z[1] = d5_m3_corona_z[0] d5_m3_corona_z[6] = d5_m3_corona_z[0] // find semicircle at top of balloon d5_radius = 350.0 // 3 & 5 right, 4 & 6 left IF d5_mission_selection = 3 OR d5_mission_selection = 5 d5_angle = 270.0 ELSE d5_angle = 90.0 ENDIF d5_circle_centre_x = d5_m3_corona_x[0] - 600.0 d5_circle_centre_y = d5_m3_corona_y[0] d5_index = 2 WHILE d5_index <= 5 COS d5_angle d5_m3_corona_x[d5_index] SIN d5_angle d5_m3_corona_y[d5_index] d5_m3_corona_x[d5_index] *= d5_radius d5_m3_corona_y[d5_index] *= d5_radius d5_m3_corona_x[d5_index] += d5_circle_centre_x d5_m3_corona_y[d5_index] += d5_circle_centre_y d5_m3_corona_z[d5_index] = d5_m3_corona_z[0] IF d5_mission_selection = 3 OR d5_mission_selection = 5 // IF d5_index = 2 // d5_m3_corona_y[2] += 100.0 // ENDIF d5_angle -= 60.0 ELSE // IF d5_index = 2 // d5_m3_corona_y[2] -= 100.0 // ENDIF d5_angle += 60.0 ENDIF d5_index++ ENDWHILE // final corona d5_m3_corona_x[7] = d5_m3_corona_x[0] d5_m3_corona_y[7] = d5_m3_corona_y[0] d5_m3_corona_z[7] = d5_m3_corona_z[0] IF d5_mission_selection = 5 OR d5_mission_selection = 6 d5_m3_corona_x[7] += 20.0 d5_m3_corona_z[7] -= 30.0 ENDIF RETURN // ************************************************************ // Find positions of coronas for loop-the-loop // ************************************************************ // d5_m10_calculate_looptheloop_coronas: // // d5_circle_centre_x = d5_runway_centre_x // d5_circle_centre_z = 80.0 // // find positions of loop coronas // d5_radius = 30.0 // d5_angle = -90.0 // d5_index = 3 // WHILE d5_index <= 11 // COS d5_angle d5_m10_corona_x[d5_index] // SIN d5_angle d5_m10_corona_z[d5_index] // d5_m10_corona_x[d5_index] *= d5_radius // d5_m10_corona_z[d5_index] *= d5_radius // d5_m10_corona_x[d5_index] += d5_circle_centre_x // d5_m10_corona_z[d5_index] += d5_circle_centre_z // d5_m10_corona_y[d5_index] = d5_runway_centre_y // d5_angle += 45.0 // d5_index++ // ENDWHILE // // find positions of coronas leading into loop // d5_index = 2 // WHILE d5_index >= 0 // d5_index_plus_one = d5_index + 1 // d5_m10_corona_x[d5_index] = d5_radius * 2.0 // d5_m10_corona_x[d5_index] *= -1.0 // d5_m10_corona_x[d5_index] += d5_m10_corona_x[d5_index_plus_one] // d5_m10_corona_y[d5_index] = d5_m10_corona_y[3] // d5_m10_corona_z[d5_index] = d5_m10_corona_z[3] // d5_index-- // ENDWHILE // // RETURN // ************************************************************ // Front end GOSUBS // ************************************************************ d5_drawing_tv_screen: //FADE_OUT IF d5_fade_flag = 1 IF d5_alpha < 255 d5_alpha = d5_alpha + 5 IF d5_alpha > 255 d5_alpha = 255 ENDIF ELSE d5_fade_flag = 2 ENDIF ENDIF //FADE_IN IF d5_fade_flag = 3 IF d5_alpha > 0 d5_alpha = d5_alpha - 5 IF d5_alpha < 0 d5_alpha = 0 ENDIF ELSE d5_fade_flag = 0 ENDIF ENDIF // which test GOSUB d5_test_name_text SET_TEXT_CENTRE OFF SET_TEXT_DROPSHADOW 0 0 0 0 255 SET_TEXT_COLOUR 255 255 255 255 LVAR_FLOAT fClampText fClampText = 385.0 IF d5_mission_selection = 1 DISPLAY_TEXT_CLAMPED fTitleX fTitleY DES5_MA fClampText // Takeoff d5_which_score_displayed = d5_best_scores[0] GOSUB d5_drawing_medal ENDIF IF d5_mission_selection = 2 DISPLAY_TEXT_CLAMPED fTitleX fTitleY DES5_MB fClampText // Land plane d5_which_score_displayed = d5_best_scores[1] GOSUB d5_drawing_medal ENDIF IF d5_mission_selection = 3 DISPLAY_TEXT_CLAMPED fTitleX fTitleY DES5_MC fClampText // Circle airstrip d5_which_score_displayed = d5_best_scores[2] GOSUB d5_drawing_medal ENDIF IF d5_mission_selection = 4 DISPLAY_TEXT_CLAMPED fTitleX fTitleY DES5_MC fClampText // Circle airstrip d5_which_score_displayed = d5_best_scores[2] GOSUB d5_drawing_medal ENDIF IF d5_mission_selection = 5 SET_TEXT_SCALE 0.8 3.2 DISPLAY_TEXT_CLAMPED fTitleX fTitleY DES5_MD fClampText // Circle airstrip and land d5_which_score_displayed = d5_best_scores[3] GOSUB d5_drawing_medal ENDIF IF d5_mission_selection = 6 DISPLAY_TEXT_CLAMPED fTitleX fTitleY DES5_MD fClampText // Circle airstrip and land d5_which_score_displayed = d5_best_scores[3] GOSUB d5_drawing_medal ENDIF IF d5_mission_selection = 7 DISPLAY_TEXT_CLAMPED fTitleX fTitleY DES5_ME fClampText // Helicopter takeoff d5_which_score_displayed = d5_best_scores[4] GOSUB d5_drawing_medal ENDIF IF d5_mission_selection = 8 DISPLAY_TEXT_CLAMPED fTitleX fTitleY DES5_MF fClampText // Land helicopter d5_which_score_displayed = d5_best_scores[5] GOSUB d5_drawing_medal ENDIF IF d5_mission_selection = 9 DISPLAY_TEXT_CLAMPED fTitleX fTitleY DES5_MG fClampText // Destroy targets d5_which_score_displayed = d5_best_scores[6] GOSUB d5_drawing_medal ENDIF IF d5_mission_selection = 10 DISPLAY_TEXT_CLAMPED fTitleX fTitleY DES5_MH fClampText // Loop-the-loop d5_which_score_displayed = d5_best_scores[7] GOSUB d5_drawing_medal ENDIF IF d5_mission_selection = 11 DISPLAY_TEXT_CLAMPED fTitleX fTitleY DES5_MI fClampText // Barrel roll d5_which_score_displayed = d5_best_scores[8] GOSUB d5_drawing_medal ENDIF IF d5_mission_selection = 12 DISPLAY_TEXT_CLAMPED fTitleX fTitleY DES5_MJ fClampText // Parachute onto target d5_which_score_displayed = d5_best_scores[9] GOSUB d5_drawing_medal ENDIF GOSUB DrawAspectCorrectingQuads // For aspect correction. //TV SCREEN HUD DRAW_SPRITE 9 320.0 224.0 640.0 448.0 150 150 150 255 RETURN d5_drawing_medal: //background for medal, ribbons and score //no medal IF d5_which_score_displayed < 70 d5_which_medal_displayed = 1 ENDIF //bronze IF d5_which_score_displayed > 69 IF d5_which_score_displayed < 85 d5_which_medal_displayed = 2 ENDIF ENDIF //silver IF d5_which_score_displayed > 84 IF d5_which_score_displayed < 100 d5_which_medal_displayed = 3 ENDIF ENDIF //gold IF d5_which_score_displayed = 100 d5_which_medal_displayed = 4 ENDIF //best score GOSUB d5_small_onscreen_text SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_CENTRE OFF SET_TEXT_DROPSHADOW 0 0 0 0 255 SET_TEXT_COLOUR 255 255 255 255 IF d5_which_medal_displayed > 1 DISPLAY_TEXT_WITH_NUMBER fStringX fStringY DES5_FQ d5_which_score_displayed ELSE DISPLAY_TEXT fStringX fStringY DES5_FR // Get 70% or above to pass ENDIF //which medal awarded IF d5_which_medal_displayed = 1 //no medal DRAW_SPRITE 6 510.0 80.0 166.0 77.0 160 160 160 255 ENDIF IF d5_which_medal_displayed = 2 //bronze DRAW_SPRITE 4 510.0 85.0 170.0 75.0 255 255 255 255 DRAW_SPRITE 1 510.0 85.0 80.0 75.0 255 255 255 255 ENDIF IF d5_which_medal_displayed = 3 //silver DRAW_SPRITE 4 510.0 85.0 170.0 75.0 255 255 255 255 DRAW_SPRITE 2 510.0 85.0 80.0 75.0 255 255 255 255 ENDIF IF d5_which_medal_displayed = 4 //gold DRAW_SPRITE 4 510.0 85.0 170.0 75.0 255 255 255 255 DRAW_SPRITE 3 510.0 85.0 80.0 75.0 255 255 255 255 ENDIF RETURN d5_watching_demo: // setting up each individual mission for the playback and starting playback IF d5_playback_flag = 0 IF d5_mission_selection = 1 GOSUB d5_setup_takeoff ENDIF IF d5_mission_selection = 2 GOSUB d5_setup_landplane ENDIF IF d5_mission_selection = 4 GOSUB d5_setup_circleairstrip ENDIF IF d5_mission_selection = 6 GOSUB d5_setup_circleairstripland ENDIF IF d5_mission_selection = 7 GOSUB d5_setup_helitakeoff ENDIF IF d5_mission_selection = 8 GOSUB d5_setup_landheli ENDIF IF d5_mission_selection = 9 GOSUB d5_setup_destroytargets ENDIF IF d5_mission_selection = 10 GOSUB d5_setup_looptheloop ENDIF IF d5_mission_selection = 11 GOSUB d5_setup_barrelroll ENDIF IF d5_mission_selection = 12 GOSUB d5_setup_parachute ENDIF PLAY_MISSION_AUDIO 3 d5_playback_flag = 1 ENDIF IF d5_playback_flag = 1 IF NOT d5_mission_selection = 12 // loading in car recordings IF NOT IS_CAR_DEAD d5_mission_plane d5_car_recording = 589 + d5_mission_selection IF d5_mission_selection = 4 d5_car_recording-- ENDIF IF d5_mission_selection >= 6 d5_car_recording -= 2 ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED d5_car_recording REQUEST_CAR_RECORDING d5_car_recording ELSE // playing back car recordings START_PLAYBACK_RECORDED_CAR d5_mission_plane d5_car_recording GOSUB d5_load_scenes_around_video_and_player d5_fade_flag = 3 //FADE_IN d5_playback_flag = 2 ENDIF ELSE d5_fade_flag = 3 //FADE_IN d5_playback_flag = 2 ENDIF ELSE IF NOT IS_CHAR_DEAD d5_m12_stunt_double // wait for parachute script to load IF IS_CHAR_PLAYING_ANIM d5_m12_stunt_double FALL_skydive FREEZE_CHAR_POSITION d5_m12_stunt_double FALSE TIMERB = 0 d5_fade_flag = 3 //FADE_IN d5_playback_flag = 2 ENDIF ELSE d5_fade_flag = 3 //FADE_IN d5_playback_flag = 2 ENDIF ENDIF ENDIF // waiting for playback to finish IF d5_playback_flag = 2 IF NOT d5_mission_selection = 12 IF NOT IS_CAR_DEAD d5_mission_plane IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR d5_mission_plane FREEZE_CAR_POSITION d5_mission_plane TRUE d5_fade_flag = 1 //FADE_OUT d5_playback_flag = 4 ELSE SET_HELI_BLADES_FULL_SPEED d5_mission_plane IF d5_mission_selection = 9 FIRE_HUNTER_GUN d5_mission_plane IF NOT d5_m9_car_exploded[2] = 1 AND NOT IS_CAR_DEAD d5_m9_first_wave_cars[2] AND TIMERB > 3000 EXPLODE_CAR_IN_CUTSCENE d5_m9_first_wave_cars[2] d5_m9_car_exploded[2] = 1 ENDIF IF NOT d5_m9_car_exploded[1] = 1 AND NOT IS_CAR_DEAD d5_m9_first_wave_cars[1] AND TIMERB > 4500 EXPLODE_CAR_IN_CUTSCENE d5_m9_first_wave_cars[1] d5_m9_car_exploded[1] = 1 ENDIF IF NOT d5_m9_car_exploded[0] = 1 AND NOT IS_CAR_DEAD d5_m9_first_wave_cars[0] AND TIMERB > 6000 EXPLODE_CAR_IN_CUTSCENE d5_m9_first_wave_cars[0] d5_m9_car_exploded[0] = 1 ENDIF ENDIF ENDIF ELSE d5_fade_flag = 1 //FADE_OUT d5_playback_flag = 4 ENDIF ELSE IF NOT IS_CHAR_DEAD d5_m12_stunt_double IF TIMERB > 15000 FREEZE_CHAR_POSITION d5_m12_stunt_double TRUE d5_fade_flag = 1 //FADE_OUT d5_playback_flag = 4 ENDIF ELSE d5_fade_flag = 1 //FADE_OUT d5_playback_flag = 4 ENDIF ENDIF ENDIF // overriding playback IF d5_playback_flag = 3 IF NOT IS_CAR_DEAD d5_mission_plane FREEZE_CAR_POSITION d5_mission_plane TRUE ENDIF d5_fade_flag = 1 //FADE_OUT d5_playback_flag = 4 ENDIF // ignore the screen cleanup when the track choice is presented IF d5_playback_flag = 4 AND d5_control_flag = 1 d5_playback_flag = 0 ENDIF // waiting for screen to FADE_OUT and cleaning everything up IF d5_playback_flag = 4 //IF d5_fade_flag = 2 DO_FADE 0 FADE_OUT GOSUB d5_delete_end_of_rec //ENDIF ENDIF RETURN // stop scene from loading in while watching demo d5_load_scenes_around_video_and_player: SWITCH d5_mission_selection CASE 1 LOAD_SCENE 172.6 2466.14 17.05 BREAK CASE 2 LOAD_SCENE 27.29 2466.31 16.76 BREAK CASE 3 CASE 4 LOAD_SCENE_IN_DIRECTION -1251.02 2301.32 120.44 60.0 BREAK CASE 5 CASE 6 LOAD_SCENE -394.09 2601.47 134.89 BREAK CASE 7 LOAD_SCENE 323.02 2446.81 117.65 BREAK CASE 9 LOAD_SCENE 365.5 2339.25 63.23 BREAK CASE 10 LOAD_SCENE 269.53 2445.3 88.46 BREAK CASE 11 LOAD_SCENE 292.95 2445.3 93.46 BREAK DEFAULT BREAK ENDSWITCH LOAD_SCENE_IN_DIRECTION 412.38 2533.65 18.18 90.0 RETURN d5_small_onscreen_text://///////////////////////////////////////////////////////////////////// SET_TEXT_DRAW_BEFORE_FADE TRUE SET_TEXT_JUSTIFY ON SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_WRAPX 1000.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_CENTRE OFF SET_TEXT_BACKGROUND OFF SET_TEXT_SCALE 0.52 1.45 SET_TEXT_DROPSHADOW 2 0 0 0 255 SET_TEXT_FONT FONT_SPACEAGE RETURN///////////////////////////////////////////////////////////////////////////////////// d5_which_course_text://///////////////////////////////////////////////////////////////////// SET_TEXT_JUSTIFY ON SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_WRAPX 1000.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_CENTRE ON SET_TEXT_BACKGROUND OFF SET_TEXT_SCALE 0.8 2.6 SET_TEXT_DROPSHADOW 2 0 0 0 255 RETURN///////////////////////////////////////////////////////////////////////////////////// d5_test_name_text://///////////////////////////////////////////////////////////////////// SET_TEXT_JUSTIFY ON SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_WRAPX 1000.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_CENTRE ON SET_TEXT_BACKGROUND OFF SET_TEXT_SCALE 1.2 4.0 SET_TEXT_DROPSHADOW 3 0 0 0 255 SET_TEXT_FONT FONT_HEADING //SET_TEXT_FONT FONT_STANDARD RETURN///////////////////////////////////////////////////////////////////////////////////// d5_new_scores_text: SET_TEXT_JUSTIFY ON SET_TEXT_WRAPX 1000.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_CENTRE ON SET_TEXT_BACKGROUND OFF SET_TEXT_SCALE 1.0 3.4 SET_TEXT_DROPSHADOW 3 0 0 0 255 SET_TEXT_FONT FONT_HEADING RETURN d5_start_initialise_stuff: DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER RETURN d5_stop_initialise_stuff: IF NOT d5_mission_selection = 12 // parachuting IF NOT IS_CAR_DEAD d5_mission_plane WARP_CHAR_INTO_CAR scplayer d5_mission_plane //LOCK_CAR_DOORS d5_mission_plane CARLOCK_LOCKED_PLAYER_INSIDE ENDIF ENDIF GET_CHAR_COORDINATES scplayer player_x player_y player_z REQUEST_COLLISION player_x player_y LOAD_SCENE player_x player_y player_z WAIT 0 IF NOT d5_mission_selection = 9 FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT ENDIF DISPLAY_HUD TRUE DISPLAY_RADAR TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON RETURN d5_mission_plane_dead_check://///////////////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD d5_mission_plane IF d5_plane_started = 1 IF NOT IS_CHAR_IN_CAR scplayer d5_mission_plane d5_mission_plane_dead_flag = 1 ENDIF ENDIF ELSE d5_mission_plane_dead_flag = 1 ENDIF RETURN d5_has_plane_started://///////////////////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD d5_mission_plane IF IS_CHAR_IN_CAR scplayer d5_mission_plane GET_CAR_SPEED d5_mission_plane d5_mission_plane_speed ENDIF ENDIF IF d5_mission_plane_speed > 0.1 CLEAR_PRINTS IF d5_mission_selection = 1 OR d5_mission_selection = 3 OR d5_mission_selection = 4 OR d5_mission_selection = 5 OR d5_mission_selection = 6 DISPLAY_ONSCREEN_TIMER_WITH_STRING car_timer TIMER_UP ( DES5_T4 ) ENDIF d5_plane_started = 1 ENDIF RETURN d5_car_timer_0://///////////////////////////////////////////////////////////////////////////// IF car_timer = 0 SET_PLAYER_CONTROL player1 OFF APPLY_BRAKES_TO_PLAYERS_CAR player1 TRUE ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// d5_freeze_plane_pos://////////////////////////////////////////////////////////////////////////// SET_PLAYER_CONTROL player1 OFF IF NOT d5_mission_selection = 12 //FREEZE_CAR_POSITION d5_mission_plane TRUE ELSE FREEZE_CHAR_POSITION scplayer TRUE ENDIF FREEZE_ONSCREEN_TIMER TRUE RETURN d5_medal_check://////////////////////////////////////////////////////////////////////////// d5_which_medal_displayed = 0 //bronze IF overall_score > 69 IF overall_score < 85 IF d5_old_score > 69 AND d5_old_score < 85 d5_which_medal_displayed = 0 ELSE d5_which_medal_displayed = 2 ENDIF ENDIF ENDIF //silver IF overall_score > 84 IF overall_score < 100 IF d5_old_score > 84 AND d5_old_score < 100 d5_which_medal_displayed = 0 ELSE d5_which_medal_displayed = 3 ENDIF ENDIF ENDIF //gold IF overall_score = 100 IF d5_old_score = 100 d5_which_medal_displayed = 0 ELSE d5_which_medal_displayed = 4 ENDIF ENDIF // check to see if player's unlocked any of the plane generators // (rustler/stunt/hunter unlocked when all missions passed with bronze/silver/gold) LVAR_INT d5_bronze_attained_in_all_tests d5_silver_attained_in_all_tests d5_gold_attained_in_all_tests d5_bronze_attained_in_all_tests = 1 d5_silver_attained_in_all_tests = 1 d5_gold_attained_in_all_tests = 1 d5_index = 0 WHILE d5_index < 10 IF NOT d5_bronze_generator_unlocked = 1 IF d5_best_scores[d5_index] < 70 AND d5_bronze_attained_in_all_tests = 1 d5_bronze_attained_in_all_tests = 0 ENDIF ENDIF IF NOT d5_silver_generator_unlocked = 1 IF d5_best_scores[d5_index] < 85 AND d5_silver_attained_in_all_tests = 1 d5_silver_attained_in_all_tests = 0 ENDIF ENDIF IF NOT d5_gold_generator_unlocked = 1 IF d5_best_scores[d5_index] < 100 AND d5_gold_attained_in_all_tests = 1 d5_gold_attained_in_all_tests = 0 ENDIF ENDIF d5_index++ ENDWHILE IF NOT d5_bronze_generator_unlocked = 1 AND d5_bronze_attained_in_all_tests = 1 SWITCH_CAR_GENERATOR d5_bronze_generator 101 d5_bronze_generator_unlocked = 1 ENDIF IF NOT d5_silver_generator_unlocked = 1 AND d5_silver_attained_in_all_tests = 1 SWITCH_CAR_GENERATOR d5_silver_generator 101 d5_silver_generator_unlocked = 1 ENDIF IF NOT d5_gold_generator_unlocked = 1 AND d5_gold_attained_in_all_tests = 1 SWITCH_CAR_GENERATOR d5_gold_generator 101 SWITCH_CAR_GENERATOR gen_car_flying[25] 101 d5_gold_generator_unlocked = 1 ENDIF RETURN d5_calculate_position_score: IF d5_mission_selection = 1 OR d5_mission_selection = 3 OR d5_mission_selection = 4 OR d5_mission_selection = 7 OR d5_mission_selection = 10 OR d5_mission_selection = 11 // position not used in calculation of overall score position_score = 100 ELSE IF NOT d5_mission_selection = 12 IF NOT IS_CAR_DEAD d5_mission_plane position_score = 100 // if not landed in indicated area, deduct 50 from position_score IF d5_mission_selection = 2 IF NOT IS_CAR_STOPPED_IN_AREA_3D d5_mission_plane 288.0 d5_runway_y1 16.0 328.0 d5_runway_y2 18.0 FALSE position_score -= 50 ENDIF ENDIF IF d5_mission_selection = 5 OR d5_mission_selection = 6 IF NOT IS_CAR_STOPPED_IN_AREA_3D d5_mission_plane 288.0 d5_runway_y1 16.0 328.0 d5_runway_y2 18.0 TRUE position_score -= 50 ENDIF ENDIF IF d5_mission_selection = 8 IF NOT LOCATE_STOPPED_CAR_3D d5_mission_plane d5_m8_landing_target_x d5_m8_landing_target_y d5_m8_landing_target_z 26.31 26.31 26.31 TRUE position_score -= 50 ENDIF ENDIF IF d5_mission_selection = 9 IF NOT LOCATE_STOPPED_CAR_3D d5_mission_plane d5_m8_landing_target_x d5_m8_landing_target_y d5_m8_landing_target_z 26.31 26.31 26.31 TRUE position_score -= 50 ENDIF ENDIF // if 260 <= heading <= 280, perfect (don't deduct anything). // else if 181 <= heading <= 359, decent (deduct 10) // else, facing wrong direction (deduct 25). GET_CAR_HEADING d5_mission_plane d5_plane_heading IF NOT d5_plane_heading >= 260.0 OR NOT d5_plane_heading <= 280.0 IF d5_plane_heading >= 181.0 AND d5_plane_heading <= 359.0 position_score -= 10 ELSE position_score -= 25 ENDIF ENDIF ELSE position_score = 0 ENDIF ELSE IF d5_m12_distance_from_player_to_target <= 0.8 position_score = 100 ELSE IF d5_m12_distance_from_player_to_target <= 2.1 position_score = 85 ELSE IF d5_m12_distance_from_player_to_target <= 4.0 position_score = 75 ELSE IF d5_m12_distance_from_player_to_target <= 6.0 position_score = 70 ELSE IF d5_m12_distance_from_player_to_target <= 10.0 position_score = 35 ELSE position_score = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF position_score < 0 position_score = 0 ENDIF IF position_score > 100 position_score = 100 ENDIF RETURN d5_calculate_damage_penalty: IF NOT d5_mission_selection = 12 IF NOT IS_CAR_DEAD d5_mission_plane GET_CAR_HEALTH d5_mission_plane d5_mission_plane_health player_car_damage = 1000 - instructor_car_health d5_damage_penalty = 1000 - d5_mission_plane_health d5_damage_penalty /= 10 IF d5_damage_penalty < 0 d5_damage_penalty = 0 ENDIF IF d5_damage_penalty > 100 d5_damage_penalty = 100 ENDIF ELSE d5_damage_penalty = 100 ENDIF ELSE d5_damage_penalty = 0 ENDIF RETURN d5_calculate_time_score: overall_secs = car_timer / 1000 IF overall_secs <= d5_perfect_time d5_time_score = 100 ELSE // time_score = 100 - ((overall_secs-perfect_time)/(pass_time-perfect_time))*30 d5_time_score = overall_secs - d5_perfect_time d5_time_score *= 30 d5_pass_minus_perfect = d5_pass_time - d5_perfect_time d5_time_score /= d5_pass_minus_perfect d5_time_score *= -1 d5_time_score += 100 IF d5_time_score < 0 d5_time_score = 0 ENDIF IF d5_time_score > 100 d5_time_score = 100 ENDIF ENDIF RETURN d5_calculate_overall_score: overall_score = d5_time_score IF d5_mission_selection = 2 OR d5_mission_selection = 5 OR d5_mission_selection = 6 OR d5_mission_selection = 8 OR d5_mission_selection = 9 OR d5_mission_selection = 12 overall_score += position_score overall_score /= 2 ENDIF IF NOT d5_mission_selection = 12 overall_score -= d5_damage_penalty ENDIF IF overall_score < 0 overall_score = 0 ENDIF IF overall_score > 100 overall_score = 100 ENDIF CLEAR_PRINTS RETURN d5_mini_cleanup:////////////////////////////////////////////////////////////////////////////// SET_PLAYER_CONTROL player1 OFF REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PILOT_AWARD_TRACK_STOP DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 GOSUB d5_draw_record_text ENDWHILE CLEAR_HELP CLEAR_PRINTS CLEAR_THIS_BIG_PRINT DES5_SA CLEAR_THIS_BIG_PRINT DES5_SB SET_TEXT_SCALE 1.0 1.0 APPLY_BRAKES_TO_PLAYERS_CAR player1 FALSE IF d5_mission_selection = 12 DELETE_OBJECT d5_m12_parachute_target REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_PARACHUTE MARK_MODEL_AS_NO_LONGER_NEEDED gun_para ENDIF RESTORE_CAMERA_JUMPCUT DELETE_CHAR d5_m12_stunt_double CLEAR_CHAR_TASKS_IMMEDIATELY scplayer REMOVE_BLIP d5_corona_blip DELETE_CHECKPOINT d5_cur_checkpoint DELETE_CHECKPOINT d5_m12_checkpoint IF d5_mission_plane_dead_flag = 2 CLEAR_PRINTS ENDIF IF NOT IS_CAR_DEAD d5_mission_plane IF IS_CHAR_IN_CAR scplayer d5_mission_plane FREEZE_CAR_POSITION d5_mission_plane TRUE ENDIF ENDIF FREEZE_CHAR_POSITION scplayer TRUE WAIT 0 REQUEST_COLLISION 412.38 2533.65 LOAD_SCENE 412.38 2533.65 18.18 CLEAR_AREA noticeboard_x noticeboard_y noticeboard_z 300.0 TRUE IF NOT IS_CAR_DEAD d5_mission_plane FREEZE_CAR_POSITION d5_mission_plane FALSE ENDIF FREEZE_CHAR_POSITION scplayer FALSE IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 412.38 2533.65 18.18 ELSE SET_CHAR_COORDINATES scplayer 412.38 2533.65 18.18 ENDIF SET_CHAR_HEADING scplayer 90.0 DELETE_CAR d5_mission_plane RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER CLEAR_ONSCREEN_TIMER car_timer FREEZE_ONSCREEN_TIMER FALSE RETURN d5_delete_end_of_rec: //RESTORE_CAMERA_JUMPCUT DELETE_CHAR d5_m12_stunt_double DELETE_CAR d5_mission_plane d5_index = 0 WHILE d5_index < d5_m9_num_of_first_wave_cars DELETE_CAR d5_m9_first_wave_cars[d5_index] d5_index++ ENDWHILE REMOVE_CAR_RECORDING 590 REMOVE_CAR_RECORDING 591 REMOVE_CAR_RECORDING 592 REMOVE_CAR_RECORDING 593 REMOVE_CAR_RECORDING 594 REMOVE_CAR_RECORDING 595 REMOVE_CAR_RECORDING 596 REMOVE_CAR_RECORDING 597 REMOVE_CAR_RECORDING 598 CLEAR_MISSION_AUDIO 3 CLEAR_AREA noticeboard_x noticeboard_y noticeboard_z 300.0 TRUE CLEAR_ONSCREEN_TIMER car_timer FREEZE_ONSCREEN_TIMER FALSE d5_playback_flag = 0 RETURN // ************************************************************ // Show scores after each test // ************************************************************ d5_display_scores: SET_PLAYER_CONTROL player1 OFF DO_FADE 200 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // cleanup CLEAR_HELP CLEAR_PRINTS CLEAR_ONSCREEN_TIMER car_timer REMOVE_BLIP d5_corona_blip DELETE_CHECKPOINT d5_cur_checkpoint // clean up visible stuff on the score screen specific to individual tests IF d5_mission_selection = 3 OR d5_mission_selection = 4 OR d5_mission_selection = 5 OR d5_mission_selection = 6 // delete all checkpoints d5_index = 0 WHILE d5_index < 8 DELETE_CHECKPOINT d5_m3_checkpoints[d5_index] d5_index++ ENDWHILE ENDIF IF d5_mission_selection = 9 d5_index = 0 WHILE d5_index < d5_m9_num_of_first_wave_cars REMOVE_BLIP d5_m9_first_wave_car_blips[d5_index] d5_index++ ENDWHILE d5_index = 0 WHILE d5_index < d5_m9_num_of_second_wave_cars REMOVE_BLIP d5_m9_second_wave_car_blips[d5_index] d5_index++ ENDWHILE ENDIF IF d5_mission_selection = 10 OR d5_mission_selection = 11 DELETE_CHECKPOINT d5_m10_start_checkpoint DELETE_CHECKPOINT d5_m10_end_checkpoint ENDIF IF d5_mission_selection = 12 DELETE_OBJECT d5_m12_parachute_target DELETE_CHECKPOINT d5_m12_checkpoint REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_PARACHUTE MARK_MODEL_AS_NO_LONGER_NEEDED gun_para CLEAR_CHAR_TASKS_IMMEDIATELY scplayer ENDIF RESTORE_CAMERA_JUMPCUT DELETE_CHAR d5_m12_stunt_double IF d5_mission_plane_dead_flag = 2 CLEAR_PRINTS ENDIF IF NOT IS_CAR_DEAD d5_mission_plane IF IS_CHAR_IN_CAR scplayer d5_mission_plane FREEZE_CAR_POSITION d5_mission_plane TRUE ENDIF ENDIF FREEZE_CHAR_POSITION scplayer TRUE WAIT 0 REQUEST_COLLISION 412.38 2533.65 //LOAD_SCENE 412.38 2533.65 18.18 LOAD_SCENE 300.0 2501.94 19.65 CLEAR_AREA noticeboard_x noticeboard_y noticeboard_z 300.0 TRUE IF NOT IS_CAR_DEAD d5_mission_plane FREEZE_CAR_POSITION d5_mission_plane FALSE ENDIF FREEZE_CHAR_POSITION scplayer FALSE IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 412.38 2533.65 18.18 ELSE SET_CHAR_COORDINATES scplayer 412.38 2533.65 18.18 ENDIF SET_CHAR_HEADING scplayer 90.0 DELETE_CAR d5_mission_plane DISPLAY_HUD FALSE DISPLAY_RADAR FALSE SET_FIXED_CAMERA_POSITION 370.0 2501.94 19.65 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 320.0 2501.94 19.65 JUMP_CUT // if player's passed the test for the first time, their flying skill is upgraded IF d5_print_top_scores_flag = 2 IF NOT d5_pilot_licence_obtained = 1 LVAR_INT d5_cur_flying_skill GET_INT_STAT FLYING_SKILL d5_cur_flying_skill IF d5_cur_flying_skill >= FLYING_SKILL_REQUIRED_FOR_PILOT_LICENCE d5_pilot_licence_obtained = 1 d5_index = 0 WHILE d5_index <= 24 IF NOT d5_index = 8 AND NOT d5_index = 9 SWITCH_CAR_GENERATOR gen_car_flying[d5_index] 101 ENDIF d5_index++ ENDWHILE SWITCH_CAR_GENERATOR gen_car_flying[27] 101 d5_index = 0 WHILE d5_index <= 11 SWITCH_CAR_GENERATOR car_gen_locked_sf_planes[d5_index] 0 d5_index++ ENDWHILE ENDIF ENDIF ENDIF PRINT_HELP_FOREVER DES5HLP // Tap ~m~~widget_school_continue~ to retry. Tap ~m~~widget_minigame_cancel~ to quit. REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PILOT_AWARD_TRACK_START DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 GOSUB d5_draw_record_text ENDWHILE RETURN d5_draw_record_text: LVAR_FLOAT fTempVal fTempVal = 0.0 IF d5_which_medal_displayed < 2 // no medal, 2 is bronze OR d5_print_top_scores_flag = 0 SET_TEXT_CENTRE ON SET_TEXT_SCALE 5.0 5.0 SET_TEXT_FONT FONT_BANK SET_TEXT_DRAW_BEFORE_FADE TRUE DISPLAY_TEXT 320.0 195.0 WTF // Results //nColor = WHITE:0 || BLUE:1 || GREEN:2 //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_RESULTS 0 0 0 0 0 0.0 DS1_65 ELSE //nColor = WHITE:0 || BLUE:1 || GREEN:2 //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_AWARD 0 0 0 0 0 0.0 DES5_S3 ENDIF IF d5_print_top_scores_flag = 1 OR d5_print_top_scores_flag = 2 GOSUB d5_new_scores_text SET_TEXT_COLOUR 255 255 255 255 DISPLAY_TEXT 320.0 120.0 DES5_SB // new record IF d5_which_medal_displayed > 0 GOSUB d5_new_scores_text SET_TEXT_COLOUR 189 131 24 255 DISPLAY_TEXT 320.0 85.0 DES5_SA // new certificate awarded DRAW_SPRITE 4 320.0 205.0 200.0 85.0 255 255 255 255 IF d5_which_medal_displayed = 2 // bronze DRAW_SPRITE 1 320.0 205.0 92.0 85.0 255 255 255 255 ENDIF IF d5_which_medal_displayed = 3 // silver DRAW_SPRITE 2 320.0 205.0 92.0 85.0 255 255 255 255 ENDIF IF d5_which_medal_displayed = 4 // gold DRAW_SPRITE 3 320.0 205.0 92.0 85.0 255 255 255 255 ENDIF ENDIF ENDIF fTempVal =# car_timer //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_ONE 1 0 1 0 2 fTempVal DES5_S3 IF d5_mission_selection = 2 OR d5_mission_selection = 5 OR d5_mission_selection = 6 OR d5_mission_selection = 8 OR d5_mission_selection = 9 OR d5_mission_selection = 12 fTempVal =# position_score //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_TWO 1 1 0 0 2 fTempVal DES5_S5 ENDIF IF NOT d5_mission_selection = 12 IF d5_failed_challenge = 1 d5_damage_penalty = 100 ENDIF fTempVal =# d5_damage_penalty //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle IF d5_damage_penalty > 0 SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_TWO 1 1 0 0 3 fTempVal DES5_S6 ELSE SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_TWO 1 1 0 0 2 fTempVal DES5_S6 ENDIF ENDIF fTempVal =# overall_score //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_THREE 1 1 0 0 2 fTempVal DES5_S7 RETURN // **************************************************************** // Mission audio (phone call in scripted cut at start of mission) // **************************************************************** d5_load_and_play_audio: IF d5_audio_is_playing = 0 OR d5_audio_is_playing = 1 IF d5_audio_index < d5_total_audio_to_play IF TIMERB > 200 GOSUB d5_play_audio ENDIF ENDIF ENDIF IF d5_audio_is_playing = 2 IF HAS_MISSION_AUDIO_FINISHED 1 d5_audio_is_playing = 0 d5_audio_index++ d5_started_talking = 0 CLEAR_PRINTS TIMERB = 0 ENDIF ENDIF RETURN d5_play_audio: IF d5_audio_is_playing = 0 LOAD_MISSION_AUDIO 1 d5_audio_sound[d5_audio_index] d5_audio_is_playing = 1 ENDIF IF d5_audio_is_playing = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW $d5_audio_text[d5_audio_index] 10000 1 PLAY_MISSION_AUDIO 1 d5_audio_is_playing = 2 ENDIF ENDIF RETURN // ******************************* Mission desert5 failed ******************************* mission_desert5_failed: CLEAR_PRINTS IF d5_mission_plane_dead_flag = 1 OR NOT IS_PLAYER_PLAYING player1 PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" ENDIF RETURN // ******************************* Mission desert5 passed ******************************* mission_desert5_passed: IF NOT pilot_test_passed = 1 pilot_test_passed = 1 ENDIF IF pilot_test_passed = 1 WRITE_LOG "UNLOCK_ACHIEVEMENT SCHOOLS_OUT" REGISTER_MISSION_PASSED ( DESERT5 ) PLAYER_MADE_PROGRESS 1 PRINT_WITH_NUMBER_BIG ( DES5_PS ) 5 5000 1 // MISSION PASSED!~n~~w~FLYING SKILL + SET_INT_STAT PASSED_DESERT5 1 AWARD_PLAYER_MISSION_RESPECT 5 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 REMOVE_BLIP pilot_contact_blip ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT pilotx piloty pilotz pilot_blip_icon pilot_contact_blip REMOVE_BLIP desert2_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT desert2X desert2Y desert2Z desert2_blip_icon desert2_contact_blip flag_desert_mission_counter++ ENDIF RETURN // ********************************** Mission cleanup *********************************** mission_cleanup_desert5: MARK_MODEL_AS_NO_LONGER_NEEDED RUSTLER MARK_MODEL_AS_NO_LONGER_NEEDED HUNTER MARK_MODEL_AS_NO_LONGER_NEEDED PETRO MARK_MODEL_AS_NO_LONGER_NEEDED LANDSTAL MARK_MODEL_AS_NO_LONGER_NEEDED STUNT MARK_MODEL_AS_NO_LONGER_NEEDED gun_para MARK_MODEL_AS_NO_LONGER_NEEDED cellphone MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED parachute.sc REMOVE_TEXTURE_DICTIONARY REMOVE_BLIP d5_corona_blip DELETE_CHECKPOINT d5_cur_checkpoint d5_index = 0 WHILE d5_index < 8 DELETE_CHECKPOINT d5_m3_checkpoints[d5_index] d5_index++ ENDWHILE DELETE_CHECKPOINT d5_m10_start_checkpoint DELETE_CHECKPOINT d5_m10_end_checkpoint DELETE_CHECKPOINT d5_m12_checkpoint d5_index = 0 WHILE d5_index < d5_m9_num_of_first_wave_cars REMOVE_BLIP d5_m9_first_wave_car_blips[d5_index] d5_index++ ENDWHILE d5_index = 0 WHILE d5_index < d5_m9_num_of_second_wave_cars REMOVE_BLIP d5_m9_second_wave_car_blips[d5_index] d5_index++ ENDWHILE CLEAR_HELP CLEAR_THIS_BIG_PRINT DES5_SA CLEAR_THIS_BIG_PRINT DES5_SB CLEAR_SEQUENCE_TASK d5_second_wave_seq0 CLEAR_SEQUENCE_TASK d5_second_wave_seq1 SET_ALWAYS_DRAW_3D_MARKERS FALSE SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 USE_TEXT_COMMANDS FALSE DELETE_OBJECT d5_m12_parachute_target Para_pickup_flag = 1 IF NOT IS_CAR_DEAD d5_mission_plane STOP_PLAYBACK_RECORDED_CAR d5_mission_plane ENDIF DELETE_CAR d5_mission_plane d5_index = 0 WHILE d5_index < d5_m9_num_of_first_wave_cars DELETE_CAR d5_m9_first_wave_cars[d5_index] d5_index++ ENDWHILE REMOVE_CAR_RECORDING 590 REMOVE_CAR_RECORDING 591 REMOVE_CAR_RECORDING 592 REMOVE_CAR_RECORDING 593 REMOVE_CAR_RECORDING 594 REMOVE_CAR_RECORDING 595 REMOVE_CAR_RECORDING 596 REMOVE_CAR_RECORDING 597 REMOVE_CAR_RECORDING 598 CLEAR_MISSION_AUDIO 3 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PILOT_AWARD_TRACK_STOP CLEAR_ONSCREEN_TIMER car_timer FREEZE_ONSCREEN_TIMER FALSE //CLEAR_ONSCREEN_COUNTER d5_m9_targets_remaining RELEASE_WEATHER DISPLAY_RADAR TRUE SHOW_UPDATE_STATS TRUE SET_AREA51_SAM_SITE ON SWITCH_POLICE_HELIS TRUE SET_MAX_WANTED_LEVEL d5_wanted_level_at_start IF IS_STRING_EMPTY $shop_name RESTORE_CAMERA_JUMPCUT ENDIF DELETE_CHAR d5_m12_stunt_double SET_CAMERA_BEHIND_PLAYER GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ------------------------------------------------------------------------------------------------ // Casino Mission 1: Wind Up { SCRIPT_NAME CASINO1 // Begin... GOSUB mission_start_ca1 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_ca1 ENDIF GOSUB mission_cleanup_ca1 MISSION_END // ------------------------------------------------------------------------------------------------ // Variables // ---- Flags LVAR_INT ca1_stage ca1_cut ca1_in_car ca1_choice ca1_freeway LVAR_INT ca1_handbrake ca1_air ca1_burnout ca1_speed ca1_stunt ca1_swerve LVAR_INT ca1_swerve_anim ca1_brake ca1_anim_step ca1_miss ca1_help_counter VAR_INT ca1_test // ---- Blips LVAR_INT ca1_punk_drop_blip // ---- Timers / Counters LVAR_INT ca1_timer_diff ca1_timer_end ca1_timer_start ca1_timer_diff_add ca1_count_var LVAR_INT ca1_swerve_counter ca1_swerve_spook_count LVAR_INT ca1_speed_counter ca1_burnout_counter VAR_INT ca1_spooked LVAR_INT ca1_timer_diff1 ca1_timer_end1 ca1_timer_start1 LVAR_INT ca1_timer_diff2 ca1_timer_end2 ca1_timer_start2 LVAR_INT ca1_timer_diff3 ca1_timer_end3 ca1_timer_start3 LVAR_FLOAT ca1_timer_diff_add_fl ca1_count_var_fl ca1_truck_speed LVAR_INT ca1_h_timer_diff ca1_h_timer_end ca1_h_timer_start LVAR_INT ca1_brake_diff ca1_brake_end ca1_brake_start ca1_ticker // ---- Coords LVAR_FLOAT ca1_punk_drop_x ca1_punk_drop_y ca1_punk_drop_z LVAR_FLOAT ca1_min_x ca1_min_y ca1_min_z ca1_max_x ca1_max_y ca1_max_z LVAR_FLOAT ca1_offset_x ca1_offset_y ca1_offset_z // ---- Input Stuff LVAR_INT ca1_l_x ca1_l_y ca1_r_x ca1_r_y ca1_l_x_prev // ---- Anim Gosub Stuff... LVAR_FLOAT ca1_anim_time LVAR_INT ca1_player_status //LVAR_INT tyd2car_low tyd2car_med tyd2car_high tyd2car_bump tyd2car_turnr tyd2car_turnl // ---- Dialogue Stuff LVAR_INT ca1_dialogue_playing VAR_INT ca1_random_dialogue ca1_random_dialogue_last LVAR_INT ca1_text_timer_end ca1_text_timer_diff ca1_text_timer_start LVAR_TEXT_LABEL ca1_text[67] LVAR_INT ca1_audio[67] ca1_audio_slot ca1_alt_slot ca1_counter ca1_ahead_counter ca1_audio_playing // ---- Cameras LVAR_FLOAT ca1_cam_x[4] ca1_cam_y[4] ca1_cam_z[4] // ---- Objects // ---- Entities LVAR_INT ca1_punk_decision_idx ca1_door // ------------------------------------------------------------------------------------------------ // -------- Vehicles ca1_truck_request: LVAR_INT ca1_truck ca1_truck_blip ca1_punk ca1_punk_health LVAR_FLOAT ca1_truck_x ca1_truck_y ca1_truck_z ca1_truck_h LVAR_FLOAT ca1_truck_h_add ca1_truck_h_start ca1_truck_h_end ca1_truck_h_diff LOAD_SCENE ca1_truck_x ca1_truck_y ca1_truck_z LOAD_SPECIAL_CHARACTER 1 sindaco REQUEST_MODEL FELTZER REQUEST_ANIMATION CAR LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED FELTZER OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_ANIMATION_LOADED CAR WAIT 0 ENDWHILE RETURN ca1_truck_create: ca1_truck_x = 1903.8574 ca1_truck_y = 974.1888 ca1_truck_z = 9.8127 ca1_truck_h = 177.4801 SET_RADIO_CHANNEL RS_COUNTRY CREATE_CAR FELTZER ca1_truck_x ca1_truck_y ca1_truck_z ca1_truck SET_CAR_HEADING ca1_truck ca1_truck_h SET_CAN_BURST_CAR_TYRES ca1_truck FALSE //SET_CAR_CAN_BE_VISIBLY_DAMAGED ca1_truck FALSE CREATE_CHAR PEDTYPE_SPECIAL SPECIAL01 0.0 0.0 0.0 ca1_punk ATTACH_CHAR_TO_CAR ca1_punk ca1_truck 0.0 1.266 0.391 FACING_FORWARD 0.0 WEAPONTYPE_UNARMED SET_CHAR_HEALTH ca1_punk 600 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_low CAR 4.0 FALSE FALSE FALSE TRUE 0 //TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_low CAR 4.0 FALSE FALSE FALSE TRUE 2000 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY ca1_punk_decision_idx SET_CHAR_DECISION_MAKER ca1_punk ca1_punk_decision_idx CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE ca1_punk_decision_idx EVENT_POTENTIAL_GET_RUN_OVER CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE ca1_punk_decision_idx EVENT_POTENTIAL_WALK_INTO_PED CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE ca1_punk_decision_idx EVENT_POTENTIAL_WALK_INTO_VEHICLE SET_CAR_HEALTH ca1_truck 1000 RETURN ADD_BLIP_FOR_CAR ca1_truck ca1_truck_blip ADD_BLIP_FOR_COORD ca1_punk_drop_x ca1_punk_drop_y ca1_punk_drop_z ca1_punk_drop_blip ca1_truck_delete: MARK_MODEL_AS_NO_LONGER_NEEDED FELTZER RETURN ca1_goon_create2: LVAR_INT ca1_goon ca1_goon_flag ca1_goon_status LVAR_FLOAT ca1_goon_x ca1_goon_y ca1_goon_z ca1_goon_h REQUEST_MODEL TRIADB WHILE NOT HAS_MODEL_LOADED TRIADB WAIT 0 ENDWHILE ca1_goon_x = 1911.0243 ca1_goon_y = 956.8084 ca1_goon_z = 9.8203 ca1_goon_h = 95.5462 CREATE_CHAR PEDTYPE_CIVMALE TRIADB ca1_goon_x ca1_goon_y ca1_goon_z ca1_goon SET_CHAR_HEADING ca1_goon ca1_goon_h RETURN ca1_goon_delete: DELETE_CHAR ca1_goon RETURN // ------------------------------------------------------------------------------------------------ // Start Mission mission_start_ca1: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 WAIT 0 // ------------------------------------------------------------------------------------------------ // Initialize Variables // ---- Flags ca1_stage = -1 ca1_cut = 0 ca1_in_car = 0 ca1_dialogue_playing = 0 ca1_random_dialogue = 0 ca1_anim_step = 0 ca1_miss = 0 ca1_handbrake = 0 ca1_air = 0 ca1_burnout = 0 ca1_speed = 0 ca1_stunt = 0 ca1_swerve = 0 ca1_swerve_anim = 0 ca1_l_x_prev = 0 ca1_freeway = 0 ca1_help_counter = 0 ca1_spooked = 0 ca1_speed_counter = 0 ca1_burnout_counter = 0 ca1_swerve_spook_count = 0 ca1_goon_flag = 1 // ---- Sequences // ---- Counter Var ca1_count_var_fl = 0.1 // ---- Coords ca1_punk_drop_x = 1904.75 ca1_punk_drop_y = 960.74 ca1_punk_drop_z = 9.36 // ---- Camera Coords ca1_cam_x[0] = 1427.4 ca1_cam_y[0] = 2666.4 ca1_cam_z[0] = 13.01 // ---- Dialogue Flags ca1_audio_slot = 1 ca1_alt_slot = 2 ca1_counter = 0 ca1_ahead_counter = 1 ca1_audio_playing = 0 // ---- Dialogue Text $ca1_text[1] = CAS1_AA // You, you're crazy! You're a dead man, A DEAD MAN! $ca1_text[2] = CAS1_AB // You're in no position to make threats. $ca1_text[3] = CAS1_AC // Who are you? $ca1_text[4] = CAS1_AD // Fuck you, man! $ca1_text[5] = CAS1_AE // Have it your way. $ca1_text[6] = CAS1_BA // You're messing with the wrong people! $ca1_text[7] = CAS1_BB // You are so dead, do you hear me? DEAD! $ca1_text[8] = CAS1_BC // You've signed your own death warrant! $ca1_text[9] = CAS1_BD // You think this is scaring me, huh? $ca1_text[10] = CAS1_BE // It takes more than a little drive to get ME blabbing! $ca1_text[11] = CAS1_CA // L-look, we can come to some arrangement! $ca1_text[12] = CAS1_CB // Ok, I can see you're serious! $ca1_text[13] = CAS1_CC // Look, pal, this ain't funny no more! $ca1_text[14] = CAS1_CD // Hey! Stop this insanity RIGHT NOW! $ca1_text[15] = CAS1_CE // Oh my god, you're a maniac! $ca1_text[16] = CAS1_DA // Aargh! I don't wanna die, I don't wana die! $ca1_text[17] = CAS1_DB // FUCK YOU! FUCK YOU-HOO-hooooo! (descends into sobbing) $ca1_text[18] = CAS1_DC // Oh god, my bowels just let go! $ca1_text[19] = CAS1_DD // Oh Mother Mary, I've had enough, oh god... $ca1_text[20] = CAS1_DE // Ok, you've made your point, No More! $ca1_text[21] = CAS1_EA // Oh man, this is fast! $ca1_text[22] = CAS1_EB // Slow down! $ca1_text[23] = CAS1_EC // Hell this is fast! $ca1_text[24] = CAS1_ED // Holy Fuck! $ca1_text[25] = CAS1_EE // Mother Mary! $ca1_text[26] = CAS1_EF // Oh Christ! OH CHRIST! $ca1_text[27] = CAS1_EG // Oh my god, oh-my-god! $ca1_text[28] = CAS1_EH // Hey, whatcha doing? $ca1_text[29] = CAS1_EI // You think you're smart, BUT YOU'RE NOT! $ca1_text[30] = CAS1_EJ // This shit don't scare me, ashole! $ca1_text[31] = CAS1_EK // Where you going now?! $ca1_text[32] = CAS1_EL // Somebody, anybody, HELP! $ca1_text[33] = CAS1_EM // Mind the pedestrians! $ca1_text[34] = CAS1_EN // Jesus Christ that was close! $ca1_text[35] = CAS1_EO // You trying to fuck us both? $ca1_text[36] = CAS1_EP // Mother Mary, that was lucky! $ca1_text[37] = CAS1_EQ // You're gonnna kill us both! //$ca1_text[38] = CAS1_ER // Oh God, I'm still alive! $ca1_text[39] = CAS1_ES // Thank god! THANK GOD! $ca1_text[40] = CAS1_ET // Jesus! JESUS! $ca1_text[41] = CAS1_EU // Are you TRYING to hit things?! $ca1_text[42] = CAS1_EV // Oh...jesus....fuck you... //$ca1_text[43] = CAS1_EW // Aarrgghh! $ca1_text[44] = CAS1_EX // Mother... is that you..? $ca1_text[45] = CAS1_EY // Holy fuck! My legs are on fire! $ca1_text[46] = CAS1_EZ // Shit, my crotch! MY CROTCH! $ca1_text[47] = CAS1_FA // Holy Mother, we're on fire! $ca1_text[48] = CAS1_FB // FIRE! FIRE! $ca1_text[49] = CAS1_GA // The family will make you pay for this! $ca1_text[50] = CAS1_GB // Which family? $ca1_text[51] = CAS1_GC // The Sindacco family, you sick maniac! $ca1_text[52] = CAS1_GD // That's all I wanted to hear! $ca1_text[53] = CAS1_GE // What the-? Oh shit... $ca1_text[54] = CAS1_HA // Oh god, thank god... $ca1_text[55] = CAS1_HB // Though I walk in the shadow of the valley of death... $ca1_text[56] = CAS1_HC // Mummy... mummy... $ca1_text[57] = CAS1_HD // (whimpering) $ca1_text[58] = CAS1_HE // I've lead such a sinful life, I'm sorry, so sorry... $ca1_text[59] = CAS1_JA // Whoa, CJ, he's messed himself! $ca1_text[60] = CAS1_JB // Yeah he should blab like a baby, now! $ca1_text[61] = CAS1b00 // Hey, who the fuck are you? Untie me, I've been here for ages. $ca1_text[62] = CAS1b02 // We're gonna take a little drive. $ca1_text[63] = CAS1b03 // H-hey, don't jerk me around here, you've had your fun. $ca1_text[64] = CAS1b04 // No, I think I'll leave you right where you are. $ca1_text[65] = CAS1b05 // You got any idea in that pea brain head of yours who the fuck I am? $ca1_text[66] = CAS1b06 // No, but I'm going to find out. // ---- Dialogue Audio ca1_audio[1] = SOUND_CAS1_AA // You, you're crazy! You're a dead man, A DEAD MAN! ca1_audio[2] = SOUND_CAS1_AB // You're in no position to make threats. ca1_audio[3] = SOUND_CAS1_AC // Who are you? ca1_audio[4] = SOUND_CAS1_AD // Fuck you, man! ca1_audio[5] = SOUND_CAS1_AE // Have it your way. ca1_audio[6] = SOUND_CAS1_BA // You're messing with the wrong people! ca1_audio[7] = SOUND_CAS1_BB // You are so dead, do you hear me? DEAD! ca1_audio[8] = SOUND_CAS1_BC // You've signed your own death warrant! ca1_audio[9] = SOUND_CAS1_BD // You think this is scaring me, huh? ca1_audio[10] = SOUND_CAS1_BE // It takes more than a little drive to get ME blabbing! ca1_audio[11] = SOUND_CAS1_CA // L-look, we can come to some arrangement! ca1_audio[12] = SOUND_CAS1_CB // Ok, I can see you're serious! ca1_audio[13] = SOUND_CAS1_CC // Look, pal, this ain't funny no more! ca1_audio[14] = SOUND_CAS1_CD // Hey! Stop this insanity RIGHT NOW! ca1_audio[15] = SOUND_CAS1_CE // Oh my god, you're a maniac! ca1_audio[16] = SOUND_CAS1_DA // Aargh! I don't wanna die, I don't wana die! ca1_audio[17] = SOUND_CAS1_DB // FUCK YOU! FUCK YOU-HOO-hooooo! (descends into sobbing) ca1_audio[18] = SOUND_CAS1_DC // Oh god, my bowels just let go! ca1_audio[19] = SOUND_CAS1_DD // Oh Mother Mary, I've had enough, oh god... ca1_audio[20] = SOUND_CAS1_DE // Ok, you've made your point, No More! ca1_audio[21] = SOUND_CAS1_EA // Oh man, this is fast! ca1_audio[22] = SOUND_CAS1_EB // Slow down! ca1_audio[23] = SOUND_CAS1_EC // Hell this is fast! ca1_audio[24] = SOUND_CAS1_ED // Holy Fuck! ca1_audio[25] = SOUND_CAS1_EE // Mother Mary! ca1_audio[26] = SOUND_CAS1_EF // Oh Christ! OH CHRIST! ca1_audio[27] = SOUND_CAS1_EG // Oh my god, oh-my-god! ca1_audio[28] = SOUND_CAS1_EH // Hey, whatcha doing? ca1_audio[29] = SOUND_CAS1_EI // You think you're smart, BUT YOU'RE NOT! ca1_audio[30] = SOUND_CAS1_EJ // This shit don't scare me, ashole! ca1_audio[31] = SOUND_CAS1_EK // Where you going now?! ca1_audio[32] = SOUND_CAS1_EL // Somebody, anybody, HELP! ca1_audio[33] = SOUND_CAS1_EM // Mind the pedestrians! ca1_audio[34] = SOUND_CAS1_EN // Jesus Christ that was close! ca1_audio[35] = SOUND_CAS1_EO // You trying to fuck us both? ca1_audio[36] = SOUND_CAS1_EP // Mother Mary, that was lucky! ca1_audio[37] = SOUND_CAS1_EQ // You're gonnna kill us both! //ca1_audio[38] = SOUND_CAS1_ER // Oh God, I'm still alive! ca1_audio[39] = SOUND_CAS1_ES // Thank god! THANK GOD! ca1_audio[40] = SOUND_CAS1_ET // Jesus! JESUS! ca1_audio[41] = SOUND_CAS1_EU // Are you TRYING to hit things?! ca1_audio[42] = SOUND_CAS1_EV // Oh...jesus....fuck you... //ca1_audio[43] = SOUND_CAS1_EW // Aarrgghh! ca1_audio[44] = SOUND_CAS1_EX // Mother... is that you..? ca1_audio[45] = SOUND_CAS1_EY // Holy fuck! My legs are on fire! ca1_audio[46] = SOUND_CAS1_EZ // Shit, my crotch! MY CROTCH! ca1_audio[47] = SOUND_CAS1_FA // Holy Mother, we're on fire! ca1_audio[48] = SOUND_CAS1_FB // FIRE! FIRE! ca1_audio[49] = SOUND_CAS1_GA // The family will make you pay for this! ca1_audio[50] = SOUND_CAS1_GB // Which family? ca1_audio[51] = SOUND_CAS1_GC // The Sindacco family, you sick maniac! ca1_audio[52] = SOUND_CAS1_GD // That's all I wanted to hear! ca1_audio[53] = SOUND_CAS1_GE // What the-? Oh shit... ca1_audio[54] = SOUND_CAS1_HA // Oh god, thank god... ca1_audio[55] = SOUND_CAS1_HB // Though I walk in the shadow of the valley of death... ca1_audio[56] = SOUND_CAS1_HC // Mummy... mummy... ca1_audio[57] = SOUND_CAS1_HD // (whimpering) ca1_audio[58] = SOUND_CAS1_HE // I've lead such a sinful life, I'm sorry, so sorry... ca1_audio[59] = SOUND_CAS1_JA // Whoa, CJ, he's messed himself! ca1_audio[60] = SOUND_CAS1_JB // Yeah he should blab like a baby, now! ca1_audio[61] = SOUND_CAS1b00 // Hey, who the fuck are you? Untie me, I've been here for ages. ca1_audio[62] = SOUND_CAS1b02 // We're gonna take a little drive. ca1_audio[63] = SOUND_CAS1b03 // H-hey, don't jerk me around here, you've had your fun. ca1_audio[64] = SOUND_CAS1b04 // No, I think I'll leave you right where you are. ca1_audio[65] = SOUND_CAS1b05 // Hey, HEY! Don't be fucking stupid! Do you know who I am? ca1_audio[66] = SOUND_CAS1b06 // No, but I'm going to find out. // ------------------------------------------------------------------------------------------------ // Request Models LOAD_MISSION_TEXT CASINO1 SET_PLAYER_GROUP_RECRUITMENT player1 FALSE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // ------------------------------------------------------------------------------------------------ // ---- Cuts // Cut #2 //LOAD_CUTSCENE CAS_1b // //WHILE NOT HAS_CUTSCENE_LOADED //WAIT 0 //ENDWHILE // //START_CUTSCENE // //DO_FADE 1000 FADE_IN // //WHILE NOT HAS_CUTSCENE_FINISHED //WAIT 0 //ENDWHILE // //DO_FADE 0 FADE_OUT //WHILE GET_FADING_STATUS //WAIT 0 //ENDWHILE // // //CLEAR_CUTSCENE // //SET_PLAYER_CONTROL player1 OFF // Cut #1 //SET_CHAR_COORDINATES scplayer 1907.8259 976.4828 9.8127 //SET_CHAR_HEADING scplayer 136.9741 SET_AREA_VISIBLE 11 LOAD_CUTSCENE CAS_1a WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF ALTER_WANTED_LEVEL player1 0 SET_AREA_VISIBLE 0 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2016.4222 1017.1024 10.0 //TRIAD CASINO SET_FIRST_PERSON_IN_CAR_CAMERA_MODE FALSE //LOAD_SCENE ca1_truck_x ca1_truck_y ca1_truck_z SET_FIXED_CAMERA_POSITION 1908.1558 977.3071 10.2294 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1907.4884 976.5921 10.4377 JUMP_CUT CLEAR_AREA 1903.2698 955.9500 9.8203 30.0 TRUE SET_CHAR_COORDINATES scplayer 1909.8259 977.4828 9.8127 SET_CHAR_HEADING scplayer 136.9741 //WHILE IS_CHAR_WAITING_FOR_WORLD_COLLISION scplayer //WAIT 0 //ENDWHILE //SET_CHAR_COORDINATES scplayer 1909.8259 977.4828 9.8127 //SET_CHAR_HEADING scplayer 136.9741 REQUEST_MODEL trdcsgrgdoor_lvs LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED trdcsgrgdoor_lvs WAIT 0 ENDWHILE GOSUB ca1_truck_request GOSUB ca1_truck_create //LOAD_SCENE ca1_truck_x ca1_truck_y ca1_truck_z LOAD_SCENE_IN_DIRECTION 1908.1558 977.3071 10.2294 136.9741 // Opening cutscene stuff /* Player walks to: 1905.4496 973.9371 9.8127 136.9741 Second camera position: Final camera position: */ //SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON WAIT 150 DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD ca1_punk TASK_LOOK_AT_CHAR scplayer ca1_punk 100000 ENDIF ca1_scripted_cut: WAIT 0 // ---- Load & Play Dialogue... IF NOT ca1_counter = 0 IF ca1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ca1_alt_slot CLEAR_MISSION_AUDIO ca1_alt_slot ENDIF ca1_audio_playing = 1 ENDIF IF ca1_audio_playing = 1 LOAD_MISSION_AUDIO ca1_audio_slot ca1_audio[ca1_counter] // GOSUB ca1_dialogue_pos // ATTACH_MISSION_AUDIO_TO_PED ca1_audio_slot ca1_audio_char ca1_audio_playing = 2 ENDIF IF ca1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ca1_audio_slot IF ca1_counter = 61 OR ca1_counter = 63 IF NOT IS_CHAR_DEAD ca1_punk START_CHAR_FACIAL_TALK ca1_punk 10000 ENDIF ENDIF IF ca1_counter = 62 OR ca1_counter = 64 IF NOT IS_CHAR_DEAD scplayer START_CHAR_FACIAL_TALK scplayer 10000 ENDIF ENDIF PLAY_MISSION_AUDIO ca1_audio_slot PRINT_NOW $ca1_text[ca1_counter] 10000 1 ca1_audio_playing = 3 ENDIF ENDIF IF ca1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ca1_audio_slot CLEAR_THIS_PRINT $ca1_text[ca1_counter] IF ca1_counter = 61 OR ca1_counter = 63 IF NOT IS_CHAR_DEAD ca1_punk STOP_CHAR_FACIAL_TALK ca1_punk ENDIF ENDIF IF ca1_counter = 62 OR ca1_counter = 64 IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF ENDIF IF ca1_audio_slot = 1 ca1_audio_slot = 2 ca1_alt_slot = 1 ELSE ca1_audio_slot = 1 ca1_alt_slot = 2 ENDIF ca1_counter = 0 ca1_audio_playing = 0 IF ca1_cut = 0 ca1_cut = 1 ENDIF IF ca1_cut = 4 ca1_cut = 5 ENDIF IF ca1_cut = 3 ca1_cut = 4 ENDIF IF ca1_cut = 7 ca1_cut = 8 ENDIF ELSE IF NOT HAS_MISSION_AUDIO_LOADED ca1_alt_slot IF ca1_counter < 66 ca1_ahead_counter = ca1_counter + 1 LOAD_MISSION_AUDIO ca1_alt_slot ca1_audio[ca1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD ca1_punk IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_low GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_low ca1_anim_time IF ca1_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_low CAR 4.0 FALSE FALSE FALSE TRUE 0 // need loop length ENDIF ENDIF ENDIF IF ca1_cut > 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED ca1_cut = 10 ENDIF ENDIF IF ca1_cut = 0 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 61 ENDIF ENDIF IF ca1_cut = 1 TASK_GO_STRAIGHT_TO_COORD scplayer 1905.4496 973.9371 9.8127 PEDMOVE_WALK -2 ca1_cut = 2 ENDIF IF ca1_cut = 2 GET_SCRIPT_TASK_STATUS scplayer TASK_GO_STRAIGHT_TO_COORD ca1_player_status IF ca1_player_status = FINISHED_TASK IF NOT IS_CHAR_DEAD ca1_punk TASK_TURN_CHAR_TO_FACE_CHAR scplayer ca1_punk SET_FIXED_CAMERA_POSITION 1903.0051 974.7813 11.1887 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1903.7317 974.0975 11.2553 JUMP_CUT ca1_cut = 3 ENDIF ENDIF ENDIF IF ca1_cut = 3 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 62 ENDIF ENDIF IF ca1_cut = 4 OR ca1_cut = 5 SLIDE_OBJECT fourdragons_door 1903.383 967.62 15.438 0.0 0.0 0.1 FALSE ENDIF IF ca1_cut = 9 SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.05 FALSE ENDIF IF ca1_cut = 4 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 63 ENDIF ENDIF IF ca1_cut = 5 IF NOT IS_CAR_DEAD ca1_truck TASK_ENTER_CAR_AS_DRIVER scplayer ca1_truck -2 ca1_cut = 6 ENDIF ENDIF IF ca1_cut = 6 GET_SCRIPT_TASK_STATUS scplayer TASK_ENTER_CAR_AS_DRIVER ca1_player_status IF ca1_player_status = FINISHED_TASK SET_FIXED_CAMERA_POSITION 1906.5278 970.1409 10.4330 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1905.8225 970.8365 10.5694 JUMP_CUT SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.05 FALSE ca1_cut = 7 ENDIF ENDIF IF ca1_cut = 7 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 64 ENDIF ENDIF IF ca1_cut = 8 IF NOT IS_CAR_DEAD ca1_truck TASK_CAR_DRIVE_TO_COORD scplayer ca1_truck 1903.2698 955.9500 9.8203 10.0 MODE_ACCURATE FALSE DRIVINGMODE_AVOIDCARS ca1_cut = 9 ENDIF ENDIF IF ca1_cut = 9 GET_SCRIPT_TASK_STATUS scplayer TASK_CAR_DRIVE_TO_COORD ca1_player_status IF ca1_player_status = FINISHED_TASK ca1_cut = 10 ENDIF ENDIF IF NOT ca1_cut = 10 GOTO ca1_scripted_cut ENDIF //DO_FADE 250 FADE_OUT //WHILE GET_FADING_STATUS // WAIT 0 //ENDWHILE IF NOT IS_CAR_DEAD ca1_truck SET_OBJECT_COORDINATES fourdragons_door 1903.383 967.82 11.438 SET_CAR_COORDINATES ca1_truck 1903.2698 955.9500 9.8203 SET_CAR_HEADING ca1_truck 180.7793 IF IS_CHAR_IN_CAR scplayer ca1_truck WARP_CHAR_FROM_CAR_TO_COORD scplayer 1903.2698 955.9500 9.8203 ENDIF WARP_CHAR_INTO_CAR scplayer ca1_truck ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED trdcsgrgdoor_lvs SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT CLEAR_LOOK_AT scplayer SWITCH_WIDESCREEN OFF //DO_FADE 250 FADE_IN //WHILE GET_FADING_STATUS // WAIT 0 //ENDWHILE SET_PLAYER_CONTROL player1 ON ca1_cut = 0 //VIEW_INTEGER_VARIABLE ca1_test ca1_test // ------------------------------------------------------------------------------------------------ // Main Loop ca1_main_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_passed_ca1 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_SPACE ca1_spooked = 100 ENDIF // ---- Load & Play Dialogue... IF NOT ca1_counter = 0 IF ca1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ca1_alt_slot CLEAR_MISSION_AUDIO ca1_alt_slot ENDIF ca1_audio_playing = 1 ENDIF IF ca1_audio_playing = 1 LOAD_MISSION_AUDIO ca1_audio_slot ca1_audio[ca1_counter] // GOSUB ca1_dialogue_pos // ATTACH_MISSION_AUDIO_TO_PED ca1_audio_slot ca1_audio_char ca1_audio_playing = 2 ENDIF IF ca1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ca1_audio_slot PLAY_MISSION_AUDIO ca1_audio_slot PRINT_NOW $ca1_text[ca1_counter] 10000 1 ca1_audio_playing = 3 ENDIF ENDIF IF ca1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ca1_audio_slot CLEAR_THIS_PRINT $ca1_text[ca1_counter] IF ca1_audio_slot = 1 ca1_audio_slot = 2 ca1_alt_slot = 1 ELSE ca1_audio_slot = 1 ca1_alt_slot = 2 ENDIF ca1_counter = 0 ca1_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED ca1_alt_slot IF ca1_counter < 66 ca1_ahead_counter = ca1_counter + 1 LOAD_MISSION_AUDIO ca1_alt_slot ca1_audio[ca1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_CHAR_IN_ZONE scplayer PINT OR IS_CHAR_IN_ZONE scplayer BINT OR IS_CHAR_IN_ZONE scplayer JTN OR IS_CHAR_IN_ZONE scplayer JTS OR IS_CHAR_IN_ZONE scplayer JTW OR IS_CHAR_IN_ZONE scplayer JTE IF ca1_dialogue_playing = 0 AND ca1_freeway = 0 PRINT ( CAS1_10 ) 5000 1 // Stay off the freeway ALTER_WANTED_LEVEL_NO_DROP player1 3 ca1_freeway = 1 //ca1_dialogue_playing = 1 ENDIF IF ca1_freeway = 1 IF NOT IS_WANTED_LEVEL_GREATER player1 2 ca1_freeway = 0 ENDIF ENDIF ENDIF IF ca1_stage = -1 SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.05 FALSE IF flag_cas1_passed_1stime = 0 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD ca1_truck IF IS_CHAR_IN_CAR scplayer ca1_truck IF ca1_random_dialogue = 0 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 65 ca1_random_dialogue ++ GET_GAME_TIMER ca1_text_timer_start ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 GET_GAME_TIMER ca1_text_timer_start ENDIF ENDIF IF ca1_random_dialogue = 1 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 66 ca1_random_dialogue ++ ca1_stage = 0 GET_GAME_TIMER ca1_text_timer_start ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 GET_GAME_TIMER ca1_text_timer_start ENDIF ENDIF // IF ca1_random_dialogue = 2 // IF ca1_audio_playing = 0 // AND ca1_counter = 0 // ca1_counter = 3 // CARL: Who are you? // ca1_random_dialogue ++ // GET_GAME_TIMER ca1_text_timer_start // ENDIF // GET_GAME_TIMER ca1_text_timer_end // ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start // IF ca1_text_timer_diff > 500 // GET_GAME_TIMER ca1_text_timer_start // ENDIF // ENDIF // IF ca1_random_dialogue = 3 // IF ca1_audio_playing = 0 // AND ca1_counter = 0 // ca1_counter = 4 // JOHNNY SINDACCO: Fuck you, man! // ca1_random_dialogue ++ // GET_GAME_TIMER ca1_text_timer_start // ENDIF // GET_GAME_TIMER ca1_text_timer_end // ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start // IF ca1_text_timer_diff > 500 // GET_GAME_TIMER ca1_text_timer_start // ENDIF // ENDIF // IF ca1_random_dialogue = 4 // IF ca1_audio_playing = 0 // AND ca1_counter = 0 // ca1_counter = 5 // CARL: Have it your way. // ca1_random_dialogue ++ // ca1_stage = 0 // GET_GAME_TIMER ca1_text_timer_start // ENDIF // GET_GAME_TIMER ca1_text_timer_end // ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start // IF ca1_text_timer_diff > 500 // GET_GAME_TIMER ca1_text_timer_start // // ENDIF // ENDIF ENDIF ENDIF ELSE SET_OBJECT_COORDINATES fourdragons_door 1903.383 967.82 11.438 ca1_stage = 0 ENDIF ENDIF // Taking Hef's car... IF ca1_stage = 0 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD ca1_truck IF IS_CHAR_IN_CAR scplayer ca1_truck IF ca1_audio_playing = 0 AND ca1_counter = 0 CLEAR_PRINTS PRINT ( CAS1_11 ) 5000 1 // Scare the shit out of him, but don't kill him. PRINT ( CAS1_12 ) 5000 1 ca1_dialogue_playing = 2 ca1_stage = 2 ca1_in_car = 1 ENDIF ENDIF ENDIF ENDIF // Making sure the player stays in the car... IF ca1_stage < 5 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD ca1_truck IF ca1_in_car = 0 IF IS_CHAR_SITTING_IN_CAR scplayer ca1_truck CLEAR_PRINTS SET_FIRST_PERSON_IN_CAR_CAMERA_MODE FALSE GET_GAME_TIMER ca1_text_timer_start REMOVE_BLIP ca1_truck_blip REMOVE_BLIP ca1_punk_drop_blip IF ca1_stage > 0 AND ca1_stage < 4 CLEAR_ONSCREEN_COUNTER ca1_spooked DISPLAY_ONSCREEN_COUNTER_WITH_STRING ca1_spooked COUNTER_DISPLAY_BAR ( CAS1_05 )//( CAS1_05 ) // Spook-O-Meter ENDIF IF ca1_stage = 4 ADD_BLIP_FOR_COORD ca1_punk_drop_x ca1_punk_drop_y ca1_punk_drop_z ca1_punk_drop_blip ENDIF ca1_in_car = 1 ENDIF ENDIF IF ca1_in_car = 1 IF NOT IS_CHAR_SITTING_IN_CAR scplayer ca1_truck CLEAR_PRINTS SET_FIRST_PERSON_IN_CAR_CAMERA_MODE TRUE REMOVE_BLIP ca1_truck_blip ADD_BLIP_FOR_CAR ca1_truck ca1_truck_blip SET_BLIP_AS_FRIENDLY ca1_truck_blip TRUE IF ca1_stage > 0 AND ca1_stage < 4 CLEAR_ONSCREEN_COUNTER ca1_spooked ENDIF IF ca1_stage = 4 REMOVE_BLIP ca1_punk_drop_blip ENDIF PRINT_NOW ( CAS1_01 ) 7500 2 // Get back in the car ca1_in_car = 0 ENDIF ENDIF ENDIF ENDIF // IF ca1_stage = 2 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD ca1_punk DISPLAY_ONSCREEN_COUNTER_WITH_STRING ca1_spooked COUNTER_DISPLAY_BAR ( CAS1_05 )//( CAS1_05 ) // Spook-O-Meter GENERATE_RANDOM_INT_IN_RANGE 0 4 ca1_choice IF ca1_choice = 0 PRINT_HELP ( CAS1_06 ) ca1_stage = 3 ENDIF IF ca1_choice = 1 PRINT_HELP ( CAS1_07 ) ca1_stage = 3 ENDIF IF ca1_choice = 2 PRINT_HELP ( CAS1_08 ) ca1_stage = 3 ENDIF IF ca1_choice = 3 PRINT_HELP ( CAS1_09 ) ca1_stage = 3 ENDIF GET_GAME_TIMER ca1_h_timer_start ENDIF ENDIF LVAR_FLOAT ca1_time_step ca1_old_spook // Start spooking... IF ca1_stage = 3 // HACKED command to get the timestep // rockstar thinks this takes MORE time to fill up the meter at high fps, I doubt it. I'll leave this here for now GET_PC_MOUSE_MOVEMENT ca1_time_step ca1_time_step IF NOT IS_CAR_DEAD ca1_truck AND NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD ca1_punk IF ca1_goon_flag = 0 IF NOT IS_CHAR_DEAD ca1_goon IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 1910.75 960.74 10.86 15.0 15.0 15.0 FALSE IF NOT IS_CHAR_ON_SCREEN ca1_goon GOSUB ca1_goon_delete ca1_goon_flag = 1 ENDIF ENDIF ENDIF ENDIF IF IS_CAR_DOOR_DAMAGED ca1_truck BONNET TASK_DIE ca1_punk DETACH_CHAR_FROM_CAR ca1_punk PRINT_NOW ( CAS1_04 ) 5000 1 // You killed him! GOTO mission_failed_ca1 ENDIF IF IS_CHAR_IN_CAR scplayer ca1_truck IF ca1_help_counter < 8 // Help text GET_GAME_TIMER ca1_h_timer_end ca1_h_timer_diff = ca1_h_timer_end - ca1_h_timer_start IF ca1_h_timer_diff > 30000 GENERATE_RANDOM_INT_IN_RANGE 0 4 ca1_choice IF ca1_choice = 0 PRINT_HELP ( CAS1_06 ) GET_GAME_TIMER ca1_h_timer_start ENDIF IF ca1_choice = 1 PRINT_HELP ( CAS1_07 ) GET_GAME_TIMER ca1_h_timer_start ENDIF IF ca1_choice = 2 PRINT_HELP ( CAS1_08 ) GET_GAME_TIMER ca1_h_timer_start ENDIF IF ca1_choice = 3 PRINT_HELP ( CAS1_09 ) GET_GAME_TIMER ca1_h_timer_start ENDIF ca1_help_counter++ ENDIF ENDIF // Limit IF ca1_spooked > 100 ca1_spooked = 100 ca1_random_dialogue = 0 CLEAR_ONSCREEN_COUNTER ca1_spooked ADD_BLIP_FOR_COORD ca1_punk_drop_x ca1_punk_drop_y ca1_punk_drop_z ca1_punk_drop_blip GET_GAME_TIMER ca1_timer_start1 ca1_stage = 4 ENDIF // // Countdown... // IF ca1_spooked >= 2 // GET_GAME_TIMER ca1_timer_end1 // ca1_timer_diff1 = ca1_timer_end1 - ca1_timer_start1 // IF ca1_timer_diff1 > 3000 // GET_GAME_TIMER ca1_timer_start1 // ca1_spooked -= 2 // ENDIF // ENDIF // Check for hand brake turns... IF ca1_handbrake = 0 AND ca1_burnout = 0 AND ca1_air = 0 IF ca1_truck_speed > 15.0 IF IS_BUTTON_PRESSED PAD1 RIGHTSHOULDER1 // Should be changed to "IS_BRAKE_PRESSED"... ? GET_CAR_HEADING ca1_truck ca1_truck_h_start ca1_truck_h_diff = 0.0 ca1_handbrake = 1 ENDIF ENDIF ENDIF IF ca1_handbrake = 1 IF IS_BUTTON_PRESSED PAD1 RIGHTSHOULDER1 GET_CAR_HEADING ca1_truck ca1_truck_h_end ca1_truck_h_add = ca1_truck_h_end - ca1_truck_h_start ca1_truck_h_diff += ca1_truck_h_add GET_CAR_HEADING ca1_truck ca1_truck_h_start ENDIF IF NOT IS_BUTTON_PRESSED PAD1 RIGHTSHOULDER1 IF ca1_truck_h_diff < 0.0 ca1_truck_h_diff += 360.0 ENDIF IF ca1_truck_h_diff > 0.0 IF ca1_truck_h_diff > 14.0 AND ca1_truck_h_diff < 210.0 ca1_spooked += 7 ELSE IF ca1_truck_h_diff > 90.0 AND ca1_truck_h_diff < 270.0 ca1_spooked += 3 ENDIF ENDIF ENDIF ca1_handbrake = 0 ENDIF ENDIF // Check for jumps... IF ca1_air = 0 AND ca1_handbrake = 0 AND ca1_burnout = 0 IF IS_CAR_IN_AIR_PROPER ca1_truck GET_GAME_TIMER ca1_timer_start ca1_air = 1 ENDIF ENDIF IF ca1_air = 1 IF NOT IS_CAR_IN_AIR_PROPER ca1_truck GET_GAME_TIMER ca1_timer_end ca1_timer_diff = ca1_timer_end - ca1_timer_start ca1_timer_diff /= 250 ca1_spooked += ca1_timer_diff ca1_air = 0 ENDIF ENDIF // Check for burnouts... ... Grrr IF ca1_burnout = 0 AND ca1_handbrake = 0 AND ca1_air = 0 AND ca1_burnout_counter < 20 IF ca1_truck_speed < 1.0 IF IS_BUTTON_PRESSED PAD1 CROSS AND IS_BUTTON_PRESSED PAD1 SQUARE GET_GAME_TIMER ca1_timer_end ca1_timer_diff = ca1_timer_end - ca1_timer_start IF ca1_timer_diff > 3000 ca1_timer_diff_add_fl = 0.0 ca1_count_var_fl = 0.15 ca1_burnout = 1 ENDIF ENDIF ENDIF ENDIF IF ca1_burnout = 1 GET_POSITION_OF_ANALOGUE_STICKS PAD1 ca1_l_x ca1_l_y ca1_r_x ca1_r_y IF NOT IS_BUTTON_PRESSED PAD1 SQUARE ca1_burnout = 0 ENDIF IF NOT IS_SKIP_CUTSCENE_BUTTON_PRESSED ca1_burnout = 0 ENDIF IF IS_BUTTON_PRESSED PAD1 CROSS AND IS_BUTTON_PRESSED PAD1 SQUARE IF NOT ca1_l_x = ca1_l_x_prev IF ca1_timer_diff_add_fl >= 0.0 AND ca1_count_var_fl >= 0.0 GET_GAME_TIMER ca1_timer_start ca1_timer_diff_add_fl += ca1_count_var_fl ca1_count_var_fl -= 0.025 ca1_timer_diff_add =# ca1_timer_diff_add_fl ca1_spooked += ca1_timer_diff_add ca1_burnout_counter += ca1_timer_diff_add ca1_l_x_prev = ca1_l_x ENDIF ENDIF ENDIF ENDIF // Speed... GET_CAR_SPEED ca1_truck ca1_truck_speed IF ca1_speed = 0 IF ca1_truck_speed > 30.0 IF ca1_speed_counter < 40 GET_GAME_TIMER ca1_timer_start2 ca1_speed = 1 ENDIF ENDIF ENDIF IF ca1_speed = 1 GET_GAME_TIMER ca1_timer_end2 ca1_timer_diff2 = ca1_timer_end2 - ca1_timer_start2 IF ca1_timer_diff2 > 600 GET_GAME_TIMER ca1_timer_start2 ca1_speed_counter += 1 ca1_spooked += 1 ENDIF IF ca1_truck_speed < 30.0 ca1_speed = 0 ENDIF ENDIF // Stunts (from hj.sc)... IF ca1_stunt = 0 IF stunt_flags_hj > 0 ca1_count_var = cash_reward / 5 ca1_spooked += ca1_count_var ca1_stunt = 1 ENDIF ENDIF IF ca1_stunt = 1 IF stunt_flags_hj = 0 ca1_stunt = 0 ENDIF ENDIF // Swerve IF ca1_swerve = 0 AND ca1_brake = 0 IF ca1_truck_speed > 15.0 GET_POSITION_OF_ANALOGUE_STICKS PAD1 ca1_l_x ca1_l_y ca1_r_x ca1_r_y IF NOT ca1_l_x = 0 ca1_swerve_counter++ IF ca1_swerve_counter > 20 IF ca1_l_x > 96 OR ca1_l_x < -96 IF ca1_swerve_anim = 0 IF ca1_swerve_spook_count < 20 ca1_spooked++ ca1_swerve_spook_count++ ENDIF IF ca1_l_x > 0 IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_turnl GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_turnl ca1_anim_time IF ca1_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_turnr CAR 4.0 FALSE FALSE FALSE TRUE 0 // need loop length ca1_test = 1 ca1_swerve_counter = 0 ca1_swerve_anim = 1 ENDIF ELSE IF NOT IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_turnr TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_turnr CAR 4.0 FALSE FALSE FALSE TRUE 0 ca1_swerve_counter = 0 ca1_swerve_anim = 1 ENDIF ENDIF ENDIF IF ca1_l_x < 0 IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_turnr GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_turnr ca1_anim_time IF ca1_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_turnl CAR 4.0 FALSE FALSE FALSE TRUE 0 // need loop length ca1_test = 1 ca1_swerve_counter = 0 ca1_swerve_anim = 1 ENDIF ELSE IF NOT IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_turnl TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_turnl CAR 4.0 FALSE FALSE FALSE TRUE 0 ca1_swerve_counter = 0 ca1_swerve_anim = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ELSE ca1_swerve_anim = 0 ca1_swerve_counter = 0 ENDIF ELSE ca1_swerve_anim = 0 ca1_swerve_counter = 0 ENDIF ENDIF // Braking IF ca1_brake = 0 IF ca1_truck_speed > 15.0 IF NOT IS_BUTTON_PRESSED PAD1 CROSS IF IS_BUTTON_PRESSED PAD1 SQUARE OR IS_BUTTON_PRESSED PAD1 RIGHTSHOULDER1 ca1_brake = 1 ENDIF ENDIF ENDIF ENDIF IF ca1_brake = 1 IF NOT IS_BUTTON_PRESSED PAD1 CROSS IF IS_BUTTON_PRESSED PAD1 SQUARE OR IS_BUTTON_PRESSED PAD1 RIGHTSHOULDER1 ca1_ticker ++ IF ca1_ticker > 12 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_bump CAR 4.0 FALSE FALSE FALSE TRUE 0 GET_GAME_TIMER ca1_brake_start ca1_brake = 2 ENDIF ENDIF ENDIF ENDIF IF ca1_brake = 2 GET_GAME_TIMER ca1_brake_end ca1_brake_diff = ca1_brake_end - ca1_brake_start IF ca1_brake_diff > 1000 IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_bump GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_bump ca1_anim_time IF ca1_anim_time = 1.0 ca1_spooked ++ ca1_ticker = 0 ca1_brake = 0 ENDIF ENDIF ENDIF ENDIF // Near Misses IF ca1_truck_speed > 30.0 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS ca1_truck 0.0 4.0 0.0 ca1_offset_x ca1_offset_y ca1_offset_z ca1_min_x = ca1_offset_x - 0.1 ca1_min_y = ca1_offset_y - 0.1 ca1_min_z = ca1_offset_z - 0.1 ca1_max_x = ca1_offset_x + 0.1 ca1_max_y = ca1_offset_y + 0.1 ca1_max_z = ca1_offset_z + 0.1 IF ca1_miss = 0 IF IS_AREA_OCCUPIED ca1_min_x ca1_min_y ca1_min_z ca1_max_x ca1_max_y ca1_max_z FALSE TRUE FALSE FALSE FALSE GET_GAME_TIMER ca1_timer_start3 ca1_miss = 1 ENDIF ENDIF IF ca1_miss = 1 GET_GAME_TIMER ca1_timer_end3 ca1_timer_diff3 = ca1_timer_end3 - ca1_timer_start3 IF ca1_timer_diff3 > 50 IF IS_AREA_OCCUPIED ca1_min_x ca1_min_y ca1_min_z ca1_max_x ca1_max_y ca1_max_z FALSE TRUE FALSE FALSE FALSE ca1_spooked ++ ca1_miss = 0 ELSE ca1_miss = 0 ENDIF ENDIF ENDIF ENDIF // Dialogue IF ca1_air = 1 OR ca1_handbrake = 1 OR ca1_burnout = 1 OR ca1_swerve_anim = 1 IF ca1_dialogue_playing = 0 GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 5000 GENERATE_RANDOM_INT_IN_RANGE 0 6 ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 1 IF ca1_random_dialogue = ca1_random_dialogue_last IF ca1_random_dialogue < 6 ca1_random_dialogue ++ ELSE ca1_random_dialogue -- ENDIF ENDIF ENDIF ENDIF ENDIF IF ca1_dialogue_playing = 1 IF ca1_random_dialogue = 0 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 27 // JOHNNY SINDACCO: Oh my god, oh-my-god! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 1 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 28 // JOHNNY SINDACCO: Hey, whatcha doing? ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 2 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 29 // JOHNNY SINDACCO: You think you’re smart – BUT YOU’RE NOT! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 3 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 30 // JOHNNY SINDACCO: This shit don’t scare me, asshole! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 4 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 31 // JOHNNY SINDACCO: Where you going now?! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 5 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 32 // JOHNNY SINDACCO: Somebody, anybody, HELP! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 6 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 33 // JOHNNY SINDACCO: Mind the pedestrians! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 7 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 21 // JOHNNY SINDACCO: Oh man, this IS fasst! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 8 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 22 // JOHNNY SINDACCO: Slow down, for chrissakes! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 9 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 23 // JOHNNY SINDACCO: Too fast, TOO FARGHST! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 10 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 45 // JOHNNY SINDACCO: Holy fuck! My legs are on fire! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 11 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 46 // JOHNNY SINDACCO: Shit, my crotch! MY CROTCH! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 12 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 47 // JOHNNY SINDACCO: Holy Mother, we’re on fire! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 13 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 48 // JOHNNY SINDACCO: FIRE! FIRE! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 14 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 24 // JOHNNY SINDACCO: Holy Fuck! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 15 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 25 // JOHNNY SINDACCO: Mother Mary! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 16 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 26 // JOHNNY SINDACCO: Oh Christ! OH CHRIST! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 17 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 34 // JOHNNY SINDACCO: Jesus Christ that was close! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 18 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 35 // JOHNNY SINDACCO: You trying to fuck us both? ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 19 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 36 // JOHNNY SINDACCO: Mother Mary, that was lucky! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 20 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 37 // JOHNNY SINDACCO: You’re gonnna kill us both! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 21 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 40 // JOHNNY SINDACCO: Oh God, I’m still alive! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 22 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 39 // JOHNNY SINDACCO: Thank god! THANK GOD! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 23 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 40 // JOHNNY SINDACCO: Jesus! JESUS! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 24 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 41 // JOHNNY SINDACCO: Are you TRYING to hit things?! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 25 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 42 // JOHNNY SINDACCO: Oh…jesus….fuck you… ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 26 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 44 // JOHNNY SINDACCO: Aarrgghh! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 27 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 44 // JOHNNY SINDACCO: Mother… is that you..? ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 28 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 6 // JOHNNY SINDACCO: You're messing with the wrong people! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 29 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 7 // JOHNNY SINDACCO: You are so dead, do you hear me? DEAD! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 30 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 8 // JOHNNY SINDACCO: You’ve signed your own death warrant! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 31 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 9 // JOHNNY SINDACCO: You think this is scaring me, huh? ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 32 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 10 // JOHNNY SINDACCO: It takes more than a little drive to get ME blabbing! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 33 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 11 // JOHNNY SINDACCO: L-look, we can come to some arrangement! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 34 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 12 // JOHNNY SINDACCO: Ok, I can see you’re serious – pull over! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 35 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 13 // JOHNNY SINDACCO: Look, pal, this ain’t funny no more! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 36 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 14 // JOHNNY SINDACCO: Hey! Stop this insanity RIGHT NOW! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 37 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 15 // JOHNNY SINDACCO: Oh my god, you’re a maniac! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 38 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 16 // JOHNNY SINDACCO: Aargh! I don’t wanna die, I don’t wana die! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 39 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 17 // JOHNNY SINDACCO: FUCK YOU! FUCK YOU-HOO-hooooo! (descends into sobbing) ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 40 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 18 // JOHNNY SINDACCO: Oh god, my bowels just let go! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 41 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 19 // JOHNNY SINDACCO: Oh Mother Mary, I’ve had enough, oh god... ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF IF ca1_random_dialogue = 42 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 20 // JOHNNY SINDACCO: Ok, you’ve made your point – No More! ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_random_dialogue_last = ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 2 ENDIF ENDIF ENDIF IF ca1_dialogue_playing = 2 GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 ca1_dialogue_playing = 0 ENDIF ENDIF // Play Babbling IF ca1_dialogue_playing = 0 GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 10000 IF ca1_spooked >= 0 AND ca1_spooked < 34 GENERATE_RANDOM_INT_IN_RANGE 28 32 ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 1 IF ca1_random_dialogue = ca1_random_dialogue_last IF ca1_random_dialogue < 32 ca1_random_dialogue ++ ELSE IF ca1_random_dialogue > 28 ca1_random_dialogue -- ENDIF ENDIF ENDIF ENDIF IF ca1_spooked > 33 AND ca1_spooked < 67 GENERATE_RANDOM_INT_IN_RANGE 33 37 ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 1 IF ca1_random_dialogue = ca1_random_dialogue_last IF ca1_random_dialogue < 37 ca1_random_dialogue ++ ELSE IF ca1_random_dialogue > 33 ca1_random_dialogue -- ENDIF ENDIF ENDIF ENDIF IF ca1_spooked > 66 AND ca1_spooked < 100 GENERATE_RANDOM_INT_IN_RANGE 38 42 ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 1 IF ca1_random_dialogue = ca1_random_dialogue_last IF ca1_random_dialogue < 42 ca1_random_dialogue ++ ELSE IF ca1_random_dialogue > 38 ca1_random_dialogue -- ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF ca1_speed = 1 IF ca1_dialogue_playing = 0 GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 5000 GENERATE_RANDOM_INT_IN_RANGE 7 9 ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 1 IF ca1_random_dialogue = ca1_random_dialogue_last IF ca1_random_dialogue < 9 ca1_random_dialogue ++ ELSE IF ca1_random_dialogue > 7 ca1_random_dialogue -- ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF ca1_stunt = 1 IF ca1_dialogue_playing = 0 GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 5000 GENERATE_RANDOM_INT_IN_RANGE 14 16 ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 1 IF ca1_random_dialogue = ca1_random_dialogue_last IF ca1_random_dialogue < 16 ca1_random_dialogue ++ ELSE IF ca1_random_dialogue > 14 ca1_random_dialogue -- ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF ca1_brake = 2 OR ca1_miss = 1 IF ca1_dialogue_playing = 0 GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 5000 GENERATE_RANDOM_INT_IN_RANGE 17 24 ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 1 IF ca1_random_dialogue = ca1_random_dialogue_last IF ca1_random_dialogue < 24 ca1_random_dialogue ++ ELSE IF ca1_random_dialogue > 17 ca1_random_dialogue -- ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_CAR_ON_FIRE ca1_truck IF ca1_dialogue_playing = 0 GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 5000 GENERATE_RANDOM_INT_IN_RANGE 10 13 ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 1 IF ca1_random_dialogue = ca1_random_dialogue_last IF ca1_random_dialogue < 13 ca1_random_dialogue ++ ELSE IF ca1_random_dialogue > 10 ca1_random_dialogue -- ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_CAR_UPSIDEDOWN ca1_truck IF ca1_dialogue_playing = 0 GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 5000 GENERATE_RANDOM_INT_IN_RANGE 25 27 ca1_random_dialogue GET_GAME_TIMER ca1_text_timer_start ca1_dialogue_playing = 1 IF ca1_random_dialogue = ca1_random_dialogue_last IF ca1_random_dialogue < 27 ca1_random_dialogue ++ ELSE IF ca1_random_dialogue > 25 ca1_random_dialogue -- ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // Writhing On The Bonnet... IF NOT IS_CHAR_DEAD ca1_punk IF ca1_spooked >= 0 AND ca1_spooked < 34 IF ca1_swerve_anim = 0 AND ca1_brake = 0 IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_low GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_low ca1_anim_time IF ca1_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_low CAR 4.0 FALSE FALSE FALSE TRUE 0 // need loop length ca1_test = 1 ENDIF ELSE IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_turnr GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_turnr ca1_anim_time IF ca1_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_low CAR 4.0 FALSE FALSE FALSE TRUE 0 ENDIF ENDIF IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_turnl GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_turnl ca1_anim_time IF ca1_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_low CAR 4.0 FALSE FALSE FALSE TRUE 0 ENDIF ENDIF IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_bump GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_bump ca1_anim_time IF ca1_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_low CAR 4.0 FALSE FALSE FALSE TRUE 0 ENDIF ENDIF IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_med GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_med ca1_anim_time IF ca1_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_low CAR 4.0 FALSE FALSE FALSE TRUE 0 // need loop length ca1_test = 2 ENDIF ENDIF ENDIF ENDIF ENDIF IF ca1_spooked > 33 AND ca1_spooked < 67 IF ca1_swerve_anim = 0 AND ca1_brake = 0 IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_med GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_med ca1_anim_time IF ca1_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_med CAR 4.0 FALSE FALSE FALSE TRUE 0 // need loop length ca1_test = 2 ENDIF ELSE IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_turnr GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_turnr ca1_anim_time IF ca1_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_med CAR 4.0 FALSE FALSE FALSE TRUE 0 ENDIF ENDIF IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_turnl GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_turnl ca1_anim_time IF ca1_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_med CAR 4.0 FALSE FALSE FALSE TRUE 0 ENDIF ENDIF IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_bump GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_bump ca1_anim_time IF ca1_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_med CAR 4.0 FALSE FALSE FALSE TRUE 0 ENDIF ENDIF IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_high GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_high ca1_anim_time IF ca1_anim_time > 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_med CAR 4.0 FALSE FALSE FALSE TRUE 0 ENDIF ENDIF IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_low GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_low ca1_anim_time IF ca1_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_med CAR 4.0 FALSE FALSE FALSE TRUE 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF ca1_spooked > 66 AND ca1_spooked < 100 IF ca1_swerve_anim = 0 AND ca1_brake = 0 IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_high GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_high ca1_anim_time IF ca1_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_high CAR 4.0 FALSE FALSE FALSE TRUE 0 // need loop length ca1_test = 3 ENDIF ELSE IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_turnr GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_turnr ca1_anim_time IF ca1_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_high CAR 4.0 FALSE FALSE FALSE TRUE 0 ENDIF ENDIF IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_turnl GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_turnl ca1_anim_time IF ca1_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_high CAR 4.0 FALSE FALSE FALSE TRUE 0 ENDIF ENDIF IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_bump GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_bump ca1_anim_time IF ca1_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_high CAR 4.0 FALSE FALSE FALSE TRUE 0 ENDIF ENDIF IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_med GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_med ca1_anim_time IF ca1_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_high CAR 4.0 FALSE FALSE FALSE TRUE 0 // need loop length ca1_test = 2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // Writhe after spooked... IF ca1_stage > 3 IF ca1_anim_step = 0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_high CAR 4.0 FALSE FALSE FALSE TRUE 0 ca1_anim_step = 1 ENDIF IF ca1_anim_step = 1 IF IS_CHAR_PLAYING_ANIM ca1_punk tyd2car_high GET_CHAR_ANIM_CURRENT_TIME ca1_punk tyd2car_high ca1_anim_time IF ca1_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE ca1_punk tyd2car_high CAR 4.0 FALSE FALSE FALSE TRUE 0 // need loop length ca1_test = 2 ENDIF ENDIF ENDIF ENDIF // Drop him off at the hotel... IF ca1_stage = 4 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD ca1_truck IF IS_CHAR_IN_CAR scplayer ca1_truck IF ca1_random_dialogue = 0 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 49 // JOHNNY SINDACCO:(sobbing) The family will make you pay for this! ca1_random_dialogue ++ GET_GAME_TIMER ca1_text_timer_start ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 GET_GAME_TIMER ca1_text_timer_start ENDIF ENDIF IF ca1_random_dialogue = 1 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 50 // CARL: Which family? ca1_random_dialogue ++ GET_GAME_TIMER ca1_text_timer_start ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 GET_GAME_TIMER ca1_text_timer_start ENDIF ENDIF IF ca1_random_dialogue = 2 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 51 // JOHNNY SINDACCO: The Sindacco family you idiot! ca1_random_dialogue ++ GET_GAME_TIMER ca1_text_timer_start ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 GET_GAME_TIMER ca1_text_timer_start ENDIF ENDIF IF ca1_random_dialogue = 3 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 52 // CARL: That’s all I wanted to hear! ca1_random_dialogue ++ GET_GAME_TIMER ca1_text_timer_start ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 GET_GAME_TIMER ca1_text_timer_start ENDIF ENDIF IF ca1_random_dialogue = 4 IF ca1_audio_playing = 0 AND ca1_counter = 0 ca1_counter = 53 // JOHNNY SINDACCO: What the -? Oh shit... ca1_random_dialogue ++ GET_GAME_TIMER ca1_text_timer_start ENDIF GET_GAME_TIMER ca1_text_timer_end ca1_text_timer_diff = ca1_text_timer_end - ca1_text_timer_start IF ca1_text_timer_diff > 500 GET_GAME_TIMER ca1_text_timer_start //PRINT ( CAS1_03 ) 7000 1 // Take him back ENDIF ENDIF IF ca1_random_dialogue = 5 IF ca1_audio_playing = 0 AND ca1_counter = 0 PRINT ( CAS1_03 ) 7000 1 // Take him back ca1_random_dialogue ++ ENDIF ENDIF ENDIF IF IS_CHAR_IN_CAR scplayer ca1_truck IF ca1_goon_flag = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1910.75 960.74 10.86 100.0 100.0 100.0 FALSE ca1_goon_flag = 2 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer ca1_punk_drop_x ca1_punk_drop_y ca1_punk_drop_z 4.0 4.0 4.0 TRUE SET_PLAYER_CONTROL player1 OFF IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 2000000 IF NOT IS_CHAR_DEAD ca1_punk AND NOT IS_CHAR_DEAD scplayer DO_FADE 300 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_AREA ca1_punk_drop_x ca1_punk_drop_y ca1_punk_drop_z 35.0 TRUE GOSUB ca1_goon_create2 ca1_stage = 5 ca1_cut = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // Ending cutscene... IF ca1_stage = 5 IF ca1_cut > 0 AND ca1_cut < 3 SLIDE_OBJECT fourdragons_door 1903.383 967.62 15.438 0.0 0.0 0.1 FALSE ENDIF IF ca1_cut = 0 IF NOT IS_CAR_DEAD ca1_truck AND NOT IS_CHAR_DEAD ca1_goon SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 1907.1100 953.0226 10.9148 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1906.7131 953.9378 10.9839 JUMP_CUT REQUEST_CAR_RECORDING 179 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 179 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD ca1_truck AND NOT IS_CHAR_DEAD ca1_goon START_PLAYBACK_RECORDED_CAR ca1_truck 179 PAUSE_PLAYBACK_RECORDED_CAR ca1_truck DO_FADE 300 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD ca1_truck AND NOT IS_CHAR_DEAD ca1_goon TASK_LEAVE_CAR scplayer ca1_truck TASK_ENTER_CAR_AS_DRIVER ca1_goon ca1_truck -1 ca1_cut = 1 ENDIF ENDIF ENDIF ENDIF IF ca1_cut = 1 IF NOT SLIDE_OBJECT fourdragons_door 1903.383 967.62 15.438 0.0 0.0 0.05 FALSE ENDIF IF NOT IS_CAR_DEAD ca1_truck AND NOT IS_CHAR_DEAD ca1_goon IF IS_CHAR_ON_FOOT scplayer GET_SCRIPT_TASK_STATUS scplayer TASK_TURN_CHAR_TO_FACE_CHAR ca1_player_status IF ca1_player_status = FINISHED_TASK TASK_TURN_CHAR_TO_FACE_CHAR scplayer ca1_goon TASK_LOOK_AT_CHAR scplayer ca1_goon -2 ENDIF ENDIF IF IS_CHAR_IN_CAR ca1_goon ca1_truck CLEAR_LOOK_AT scplayer TASK_GO_STRAIGHT_TO_COORD scplayer 1900.7269 951.1921 9.8203 PEDMOVE_WALK -2 // POINT_CAMERA_AT_CAR ca1_truck FIXED INTERPOLATION SET_FIXED_CAMERA_POSITION 1901.2620 961.8007 11.2363 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1901.6202 960.8673 11.2165 JUMP_CUT UNPAUSE_PLAYBACK_RECORDED_CAR ca1_truck ca1_cut = 2 ELSE GET_SCRIPT_TASK_STATUS ca1_goon TASK_ENTER_CAR_AS_DRIVER ca1_goon_status IF ca1_goon_status = FINISHED_TASK TASK_ENTER_CAR_AS_DRIVER ca1_goon ca1_truck -1 ENDIF ENDIF ENDIF ENDIF IF ca1_cut = 2 IF NOT IS_CAR_DEAD ca1_truck IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR ca1_truck GET_GAME_TIMER ca1_timer_start ca1_cut = 3 ENDIF ENDIF ENDIF IF ca1_cut = 3 SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.2 FALSE GET_GAME_TIMER ca1_timer_end ca1_timer_diff = ca1_timer_end - ca1_timer_start IF ca1_timer_diff > 1250 ca1_cut = 4 ENDIF ENDIF IF ca1_cut = 4 SET_OBJECT_COORDINATES fourdragons_door 1903.383 967.82 11.438 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER // When goons have done their thing give control back to the player ca1_cut = 5 //ca1_stage = 0 GOTO mission_passed_ca1 ENDIF ENDIF // If punk dies... IF ca1_stage > -2 IF NOT IS_CHAR_DEAD ca1_punk GET_CHAR_HEALTH ca1_punk ca1_punk_health IF ca1_punk_health = 0 TASK_DIE ca1_punk DETACH_CHAR_FROM_CAR ca1_punk PRINT_NOW ( CAS1_04 ) 5000 1 // You killed him! GOTO mission_failed_ca1 ENDIF ENDIF IF IS_CAR_IN_WATER ca1_truck ca1_test = 999 TASK_DIE ca1_punk DETACH_CHAR_FROM_CAR ca1_punk PRINT_NOW ( CAS1_04 ) 5000 1 // You killed him! GOTO mission_failed_ca1 ENDIF ENDIF GOTO ca1_main_loop // ------------------------------------------------------------------------------------------------ // Mission Failed mission_failed_ca1: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // ------------------------------------------------------------------------------------------------ // Mission Passed mission_passed_ca1: flag_casino_mission_counter ++ REGISTER_MISSION_PASSED ( CASINO1 ) PLAYER_MADE_PROGRESS 1 //PRINT_WITH_NUMBER_BIG ( M_PASS ) 5000 5000 1 //"Mission Passed!" ////SET_PLAYER_GROUP_RECRUITMENT player1 TRUE //ADD_SCORE player1 5000 //AWARD_PLAYER_MISSION_RESPECT 10 PRINT_WITH_NUMBER_BIG ( M_PASSS ) 5000 5000 1 //"Mission Passed!" ADD_SCORE player1 5000 //amount of cash reward AWARD_PLAYER_MISSION_RESPECT 10 //amount of respect PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL player1 RETURN // ------------------------------------------------------------------------------------------------ // Mission Cleanup mission_cleanup_ca1: // ---- Entities GOSUB ca1_truck_delete IF NOT IS_CHAR_DEAD ca1_punk TASK_DIVE_FROM_ATTACHMENT_AND_GET_UP ca1_punk 10000 ENDIF SET_OBJECT_COORDINATES fourdragons_door 1903.383 967.62 11.438 // ---- Blips REMOVE_BLIP ca1_truck_blip REMOVE_BLIP ca1_punk_drop_blip IF ca1_stage = 5 DELETE_CHAR ca1_goon DELETE_CHAR ca1_punk DELETE_CAR ca1_truck ENDIF // ---- Models MARK_MODEL_AS_NO_LONGER_NEEDED FELTZER MARK_MODEL_AS_NO_LONGER_NEEDED TRIADB UNLOAD_SPECIAL_CHARACTER 1 REMOVE_ANIMATION CAR REMOVE_DECISION_MAKER ca1_punk_decision_idx SET_FIRST_PERSON_IN_CAR_CAMERA_MODE TRUE // ---- Clear Script Stuff CLEAR_ONSCREEN_COUNTER ca1_spooked IF flag_cas1_passed_1stime = 0 flag_cas1_passed_1stime = 1 ENDIF flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED RETURN // ------------------------------------------------------------------------------------------------ } /* [CAS1_01:CASINO1] ~s~Get back in the ~b~car~s~. [CAS1_02:CASINO1] ~s~Scare him into talking. [CAS1_03:CASINO1] ~s~Take him back to the ~y~casino~s~. [CAS1_04:CASINO1] ~r~You killed him! [CAS1_05:CASINO1] Scare-O-Meter [CAS1_06:CASINO1] High speeds are sure to scare him. [CAS1_07:CASINO1] Try some hand-brake turns. [CAS1_08:CASINO1] Insane stunts will get him shook up. [CAS1_09:CASINO1] Driving on the wrong side of the road will unsettle him. W {Player gets control - Mission proper starts} [CAS1_AA:CASINO1] JOHNNY SINDACCO: You – you’re crazy! You’re a dead man, A DEAD MAN! [CAS1_AB:CASINO1] CARL: You’re in no position to make threats. [CAS1_AC:CASINO1] CARL: Who are you? [CAS1_AD:CASINO1] JOHNNY SINDACCO: Fuck you, man! [CAS1_AE:CASINO1] CARL: Have it your way. W {Level 1 Wailing - Scared and still trying to taunt the player} [CAS1_BA:CASINO1] JOHNNY SINDACCO: You're messing with the wrong people! [CAS1_BB:CASINO1] JOHNNY SINDACCO: You are so dead, do you hear me? DEAD! [CAS1_BC:CASINO1] JOHNNY SINDACCO: You’ve signed your own death warrant! [CAS1_BD:CASINO1] JOHNNY SINDACCO: You think this is scaring me, huh? [CAS1_BE:CASINO1] JOHNNY SINDACCO: It takes more than a little drive to get ME blabbing! W {Level 2 Wailing – Plain scared} [CAS1_CA:CASINO1] JOHNNY SINDACCO: L-look, we can come to some arrangement! [CAS1_CB:CASINO1] JOHNNY SINDACCO: Ok, I can see you’re serious – pull over! [CAS1_CC:CASINO1] JOHNNY SINDACCO: Look, pal, this ain’t funny no more! [CAS1_CD:CASINO1] JOHNNY SINDACCO: Hey! Stop this insanity RIGHT NOW! [CAS1_CE:CASINO1] JOHNNY SINDACCO: Oh my god, you’re a maniac! W {Level 3 Wailing – Begging for life} [CAS1_DA:CASINO1] JOHNNY SINDACCO: Aargh! I don’t wanna die, I don’t wana die! [CAS1_DB:CASINO1] JOHNNY SINDACCO: FUCK YOU! FUCK YOU-HOO-hooooo! (descends into sobbing) [CAS1_DC:CASINO1] JOHNNY SINDACCO: Oh god, my bowels just let go! [CAS1_DD:CASINO1] JOHNNY SINDACCO: Oh Mother Mary, I’ve had enough, oh god… [CAS1_DE:CASINO1] JOHNNY SINDACCO: Ok, you’ve made your point – No More! W {Johnny Caves...} [CAS1_GA:CASINO1] JOHNNY SINDACCO:(sobbing) The family will make you pay for this! [CAS1_GB:CASINO1] CARL: Which family? [CAS1_GC:CASINO1] JOHNNY SINDACCO: The Sindacco family you idiot! [CAS1_GD:CASINO1] CARL: That’s all I wanted to hear! [CAS1_GE:CASINO1] JOHNNY SINDACCO: What the -? Oh shit... W {General sobbing for the journey back to the Casino.} [CAS1_FA:CASINO1] JOHNNY SINDACCO: Oh god, thank god… [CAS1_FB:CASINO1] JOHNNY SINDACCO: Though I walk in the shadow of the valley of death… [CAS1_FC:CASINO1] JOHNNY SINDACCO: Mummy…mummy…*sobs* [CAS1_FD:CASINO1] JOHNNY SINDACCO: I’ve lead such a sinful life – I’m sorry, so sorry… W {Reaction to: High Speed} [CAS1_EA:CASINO1] JOHNNY SINDACCO: Oh man, this IS fasst! [CAS1_EB:CASINO1] JOHNNY SINDACCO: Slow down, for chrissakes! [CAS1_EC:CASINO1] JOHNNY SINDACCO: Too fast, TOO FARGHST! W {Reaction to: Stunt Jumps} [CAS1_ED:CASINO1] JOHNNY SINDACCO: Holy Fuck! [CAS1_EE:CASINO1] JOHNNY SINDACCO: Mother Mary! [CAS1_EF:CASINO1] JOHNNY SINDACCO: Oh Christ! OH CHRIST! W {Reaction to: Other stunts – burnouts, 180’s etc.} [CAS1_EG:CASINO1] JOHNNY SINDACCO: Oh my god, oh-my-god! [CAS1_EH:CASINO1] JOHNNY SINDACCO: Hey, whatcha doing? [CAS1_EI:CASINO1] JOHNNY SINDACCO: You think you’re smart – BUT YOU’RE NOT! [CAS1_EJ:CASINO1] JOHNNY SINDACCO: That shit don’t scare me, asshole! [CAS1_EK:CASINO1] JOHNNY SINDACCO: Where you going now?! [CAS1_EL:CASINO1] JOHNNY SINDACCO: Somebody, anybody, HELP! [CAS1_EM:CASINO1] JOHNNY SINDACCO: Mind the pedestrians! W {Reaction to: Near misses, collisions that don’t kill him etc.} [CAS1_EN:CASINO1] JOHNNY SINDACCO: Jesus Christ that was close! [CAS1_EO:CASINO1] JOHNNY SINDACCO: You trying to fuck us both? [CAS1_EP:CASINO1] JOHNNY SINDACCO: Mother Mary, that was lucky! [CAS1_EQ:CASINO1] JOHNNY SINDACCO: You’re gonnna kill us both! [CAS1_ER:CASINO1] JOHNNY SINDACCO: Oh God, I’m still alive! [CAS1_ES:CASINO1] JOHNNY SINDACCO: Thank god! THANK GOD! [CAS1_ET:CASINO1] JOHNNY SINDACCO: Jesus! JESUS! [CAS1_EU:CASINO1] JOHNNY SINDACCO: Are you TRYING to hit things?! W {Reaction to: Car upsidedown – DEAD!} [CAS1_EV:CASINO1] JOHNNY SINDACCO: Oh…jesus….fuck you… [CAS1_EW:CASINO1] JOHNNY SINDACCO: Aarrgghh! [CAS1_EX:CASINO1] JOHNNY SINDACCO: Mother… is that you..? W {Reaction to: Car on fire!} [CAS1_EY:CASINO1] JOHNNY SINDACCO: Holy fuck! My legs are on fire! [CAS1_EZ:CASINO1] JOHNNY SINDACCO: Shit, my crotch! MY CROTCH! [CAS1_FA:CASINO1] JOHNNY SINDACCO: Holy Mother, we’re on fire! [CAS1_FB:CASINO1] JOHNNY SINDACCO: FIRE! FIRE! W {Player drops a broken Johnny back at the Casino} [CAS1_JA:CASINO1] TRAID GOON 1: Whoa, CJ, he’s messed himself! [CAS1_JB:CASINO1] CARL: Yeah he should blab like a baby, now! */ MISSION_START // ***************************************************************************************** // ******************************* Casino 2 - Kickstart Quarry ***************************** // ***************************************************************************************** // *************************************** Paul Davis ************************************** // ***************************************************************************************** SCRIPT_NAME CASINO2 // Mission start stuff GOSUB mission_start_casino2 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_casino2_failed ENDIF GOSUB mission_cleanup_casino2 MISSION_END { // Variables for mission LVAR_INT t v LVAR_INT message_once LVAR_INT crate_smash[4] LVAR_INT everyone_is_fleeing LVAR_INT called_security LVAR_INT quarry_worker[10] c2_decision c2_breakpoint LVAR_INT seq_machine seq_patrol1 seq_patrol2 seq_patrol3 seq_pissed LVAR_INT cas2_gate1 cas2_gate2 LVAR_INT security_guards[10] seq_security security_van_1 security_van_2 security_van_3 c2_sign1 LVAR_INT c2_sign c2_security_decision LVAR_INT on_way_home in_dumper c2_dumper_is_safe LVAR_INT quarry_dirt_bike pd_cut_car LVAR_FLOAT dynamite_x[4] dynamite_y[4] dynamite_z[4] dynamite_h[4] dynamite_offset LVAR_INT dynamite_blip[4] dynamite_collected[4] dynamite_pick_up[4] LVAR_INT gun_box[4] gun_box_broken[4] broken_box[4] barrier LVAR_INT c2_box_count c2_decision_none c2_in_range_of_worker LVAR_INT c2_worker_yell c2_rnd LVAR_INT c2_cutscene_playing c2_blip[6] LVAR_FLOAT c2_blip_x[6] c2_blip_y[6] c2_blip_z[6] LVAR_FLOAT c2_arrow_x[6] c2_arrow_y[6] c2_arrow_z[6] LVAR_INT c2_check_point[6] c2_intro_quarry[5] c2_seq_entrance LVAR_INT c2_quarry_blip c2_forklift c2_crate_dropped LVAR_INT c2_kill_timer LVAR_INT c2_seq_forklift LVAR_INT c2_boxpile c2_bike_blip c2_store_car LVAR_INT c2_been_damaged c2_fx c2_in_dumper c2_plunger LVAR_INT c2_plunger_man c2_fx_cut[4] c2_dont_display LVAR_INT c2_final_blip seq_patrol4 c2_seq_flee[5] LVAR_INT c2_seq_jump LVAR_INT c2_backup c2_crate_fx LVAR_INT c2_seq_lookabout c2_seq_crouch LVAR_INT c2_on_bike c2_stand_and_shoot LVAR_FLOAT c2_ply_X c2_ply_Y c2_ply_Z LVAR_INT c2_attack_the_player_1 c2_attack_the_player_2 LVAR_INT c2_end_truck c2_end_guy c2_collect_the_dynamite c2_courier_txt LVAR_INT c2_given_guns c2_cut_dynamite_A c2_cut_dynamite_B c2_cut_dynamite_C VAR_INT c2_time_left c2_cp LVAR_FLOAT c2_temp_X c2_temp_Y c2_temp_Z LVAR_INT c2_plunger_txt LVAR_INT c2_jumped_fence LVAR_INT c2_dyna_rock[10] LVAR_INT c2_playing c2_audio LVAR_INT c2_last_played LVAR_INT c2_break_loop LVAR_INT c2_seq_crate_a c2_seq_crate_b LVAR_INT c2_decision_norm LVAR_INT c2_dumper_gen LVAR_INT c2_dumper LVAR_INT c2_get_back_on_bike LVAR_INT c2_TIMERC LVAR_INT c2_inside_quarry LVAR_INT c2_left_on_bike LVAR_INT c2_been_damaged_2 LVAR_INT c2_second_bike LVAR_INT c2_audio_3 c2_playing_3 LVAR_INT c2_can_see LVAR_FLOAT c2_box_ground LVAR_TEXT_LABEL c2_print LVAR_FLOAT c2_z // **************************************** Mission Start ********************************* mission_start_casino2: LOAD_MISSION_TEXT CASINO2 disable_all_cranes = 1 c2_time_left = 0 c2_cp = 0 SET_FADING_COLOUR 0 0 0 c2_blip_x[0] = 542.6064 c2_blip_y[0] = 880.7817 c2_blip_z[0] = -36.4105 c2_blip_x[1] = 585.3983 c2_blip_y[1] = 870.3217 c2_blip_z[1] = -38.6206 c2_blip_x[2] = 518.1696 c2_blip_y[2] = 814.9295 c2_blip_z[2] = -9.7489 c2_blip_x[3] = 484.6667 c2_blip_y[3] = 937.2839 c2_blip_z[3] = -16.6201 c2_blip_x[4] = 438.5849 c2_blip_y[4] = 870.4443 c2_blip_z[4] = -4.2640 c2_blip_x[5] = 455.1732 c2_blip_y[5] = 803.1501 c2_blip_z[5] = 5.3843 c2_arrow_x[0] = 561.1495 c2_arrow_y[0] = 875.8472 c2_arrow_z[0] = -37.2976 c2_arrow_x[1] = 585.9339 c2_arrow_y[1] = 851.1839 c2_arrow_z[1] = -36.1799 c2_arrow_x[2] = 464.2791 c2_arrow_y[2] = 860.6772 c2_arrow_z[2] = -17.3952 c2_arrow_x[3] = 443.1031 c2_arrow_y[3] = 902.1370 c2_arrow_z[3] = -7.5636 c2_arrow_x[4] = 429.2553 c2_arrow_y[4] = 923.7551 c2_arrow_z[4] = 0.5245 c2_arrow_x[5] = 476.2539 c2_arrow_y[5] = 779.3841 c2_arrow_z[5] = 8.0929 REGISTER_MISSION_GIVEN flag_player_on_mission = 1 // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** //GOSUB casino2_fade_out LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_WEAK c2_decision LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY c2_decision_none LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_NORM c2_decision_norm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH c2_security_decision // ***************************************************************************************** SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 PEDTYPE_MISSION1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 PEDTYPE_MISSION2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION2 PEDTYPE_MISSION1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION2 PEDTYPE_MISSION2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 PEDTYPE_PLAYER1 // ***************************************************************************************** SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_CUTSCENE CAS_2 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE SET_AREA_VISIBLE 11 START_CUTSCENE SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_FADING_COLOUR 0 0 0 DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 SUPPRESS_CAR_MODEL dumper // ***************************************************************************************** IF NOT IS_CHAR_DEAD scplayer SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2016.4222 1017.1024 10.0 //TRIAD CASINO LOAD_SCENE 2028.9316 1023.2923 9.8127 CLEAR_AREA 2028.9316 1023.2923 9.8127 20.0 TRUE SET_CHAR_COORDINATES scplayer 2028.9316 1023.2923 9.8127 SET_CHAR_HEADING scplayer 278.4092 SET_CAMERA_BEHIND_PLAYER WAIT 500 ENDIF // ***************************************************************************************** REQUEST_MODEL BMYCON WHILE NOT HAS_MODEL_LOADED BMYCON WAIT 0 ENDWHILE // * Cue Cutscene **************************************************************************** SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN SET_PLAYER_CONTROL player1 ON // ***************************************************************************************** // ******************************************************************************************* // * * // * Driving to the Quarry * // * * // ******************************************************************************************* CREATE_CHAR PEDTYPE_CIVMALE BMYCON 819.7070 857.8054 11.0547 c2_intro_quarry[2] SET_CHAR_HEADING c2_intro_quarry[2] 204.1414 SET_CHAR_DECISION_MAKER c2_intro_quarry[2] c2_decision // ******************************************************************************************* CREATE_OBJECT des_quarrygate2 806.5 846.9 8.6822 cas2_gate1 SET_OBJECT_HEADING cas2_gate1 0.0 CREATE_OBJECT des_quarrygate 810.3 838.6 8.6822 cas2_gate2 SET_OBJECT_HEADING cas2_gate2 45.0 ADD_BLIP_FOR_COORD 811.1817 843.9733 8.9859 c2_quarry_blip PRINT_NOW (PD_16 ) 8000 1 // ~s~Go to the ~y~Quarry~s~. GET_GROUND_Z_FOR_3D_COORD 600.8789 826.5641 -34.2392 c2_box_ground CREATE_OBJECT gunbox 600.8789 826.5641 c2_box_ground c2_boxpile SET_OBJECT_HEADING c2_boxpile 131.8763 GET_GROUND_Z_FOR_3D_COORD 599.4742 827.0499 -34.2844 c2_box_ground CREATE_OBJECT gunbox 599.4742 827.0499 c2_box_ground c2_boxpile SET_OBJECT_HEADING c2_boxpile 129.5516 GET_GROUND_Z_FOR_3D_COORD 600.8787 828.1313 -34.2710 c2_box_ground CREATE_OBJECT gunbox 600.8787 828.1313 c2_box_ground c2_boxpile SET_OBJECT_HEADING c2_boxpile 72.6773 GET_GROUND_Z_FOR_3D_COORD 671.1311 816.2497 -33.9456 c2_box_ground CREATE_OBJECT gunbox 671.1311 816.2497 c2_box_ground c2_boxpile SET_OBJECT_HEADING c2_boxpile 280.6081 GET_GROUND_Z_FOR_3D_COORD 672.9714 817.7601 -33.9456 c2_box_ground CREATE_OBJECT gunbox 672.9714 817.7601 c2_box_ground c2_boxpile SET_OBJECT_HEADING c2_boxpile 295.8181 GET_GROUND_Z_FOR_3D_COORD 673.1854 817.8634 -33.9456 c2_box_ground CREATE_OBJECT gunbox 673.1854 817.8634 c2_box_ground c2_boxpile SET_OBJECT_HEADING c2_boxpile 295.8181 // ************************************************************************************************ SET_WANTED_MULTIPLIER 0.0 WHILE NOT IS_CHAR_DEAD scplayer WAIT 0 GOSUB casino2_keys IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_casino2_passed ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 811.1817 843.9733 8.9859 4.0 4.0 4.0 TRUE SET_PLAYER_CONTROL player1 OFF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REMOVE_BLIP c2_quarry_blip IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer pd_cut_car SET_CAR_STATUS pd_cut_car STATUS_PHYSICS SET_CAR_TEMP_ACTION pd_cut_car TEMPACT_HANDBRAKETURNRIGHT 1500 ENDIF GOTO d2_start_the_mission ENDIF ENDWHILE WAIT 1000 GOTO mission_casino2_failed d2_start_the_mission: dynamite_x[0] = 662.1465 dynamite_y[0] = 917.9582 dynamite_z[0] = -41.8491 dynamite_h[0] = 318.2808 dynamite_x[1] = 583.0025 dynamite_y[1] = 934.0627 dynamite_z[1] = -43.7531 dynamite_h[1] = 114.8609 dynamite_x[2] = 552.9266 dynamite_y[2] = 846.8138 dynamite_z[2] = -42.8758 dynamite_h[2] = 197.0568 dynamite_x[3] = 640.8603 dynamite_y[3] = 810.4040 dynamite_z[3] = -43.9531 dynamite_h[3] = 250.0977 c2_playing = 2 c2_playing_3 = 2 REQUEST_MODEL cellphone REQUEST_MODEL wmyconb REQUEST_MODEL wmysgrd REQUEST_MODEL BMYCON REQUEST_MODEL COLT45 REQUEST_MODEL shovel REQUEST_MODEL FORKLIFT REQUEST_MODEL DUMPER WHILE NOT HAS_MODEL_LOADED cellphone WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED wmyconb OR NOT HAS_MODEL_LOADED wmysgrd OR NOT HAS_MODEL_LOADED BMYCON OR NOT HAS_MODEL_LOADED COLT45 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED shovel OR NOT HAS_MODEL_LOADED FORKLIFT OR NOT HAS_MODEL_LOADED DUMPER WAIT 0 ENDWHILE // The One Dumper Truck *********************************************************************************** CREATE_CAR DUMPER 684.1580 899.4011 -41.382 c2_dumper SET_CAR_HEADING c2_dumper 50.0 //CREATE_CAR_GENERATOR 684.1580 899.4011 -41.382 50.0 dumper -1 -1 TRUE 0 0 0 10000 c2_dumper_gen // Dumper truck //SWITCH_CAR_GENERATOR c2_dumper_gen 101 // Sequences ********************************************************************************************** OPEN_SEQUENCE_TASK c2_seq_crate_a TASK_GO_TO_COORD_ANY_MEANS -1 661.3970 917.1706 -41.4059 PEDMOVE_WALK -1 TASK_PLAY_ANIM -1 WEAPON_crouch PED 1.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT c2_seq_crate_a 1 CLOSE_SEQUENCE_TASK c2_seq_crate_a OPEN_SEQUENCE_TASK c2_seq_crate_b TASK_GO_TO_COORD_ANY_MEANS -1 662.6050 916.3130 -41.4059 PEDMOVE_WALK -1 TASK_PLAY_ANIM -1 IDLE_chat PED 1.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT c2_seq_crate_b 1 CLOSE_SEQUENCE_TASK c2_seq_crate_b OPEN_SEQUENCE_TASK c2_seq_crouch TASK_GO_TO_COORD_ANY_MEANS -1 661.3970 917.1706 -41.4059 PEDMOVE_WALK -1 SET_SEQUENCE_TO_REPEAT c2_seq_crouch 1 CLOSE_SEQUENCE_TASK c2_seq_crouch OPEN_SEQUENCE_TASK c2_backup TASK_GO_TO_COORD_ANY_MEANS -1 590.1505 875.5482 -43.4973 PEDMOVE_WALK -1 TASK_LOOK_ABOUT -1 40000 SET_SEQUENCE_TO_REPEAT c2_backup 1 CLOSE_SEQUENCE_TASK c2_backup OPEN_SEQUENCE_TASK seq_security TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK seq_security OPEN_SEQUENCE_TASK seq_pissed TASK_GO_TO_COORD_ANY_MEANS -1 416.7344 894.5847 1.6400 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK seq_pissed OPEN_SEQUENCE_TASK c2_seq_entrance TASK_GO_TO_COORD_ANY_MEANS -1 811.1705 840.3314 8.8556 PEDMOVE_WALK -1 TASK_GO_TO_COORD_ANY_MEANS -1 835.0692 854.2280 11.5339 PEDMOVE_WALK -1 TASK_GO_TO_COORD_ANY_MEANS -1 831.1895 869.6328 11.7659 PEDMOVE_WALK -1 TASK_GO_TO_COORD_ANY_MEANS -1 812.9305 865.5474 11.2512 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK c2_seq_entrance OPEN_SEQUENCE_TASK c2_stand_and_shoot TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_SHOOT_AT_CHAR -1 scplayer -1 SET_SEQUENCE_TO_REPEAT c2_stand_and_shoot 1 CLOSE_SEQUENCE_TASK c2_stand_and_shoot OPEN_SEQUENCE_TASK c2_seq_flee[0] FLUSH_ROUTE EXTEND_ROUTE 652.6294 920.1244 -41.6245 EXTEND_ROUTE 643.2743 944.6199 -36.1984 EXTEND_ROUTE 650.2857 948.2803 -35.9383 EXTEND_ROUTE 676.3673 939.0834 -31.2018 EXTEND_ROUTE 695.1881 918.9306 -31.3478 EXTEND_ROUTE 709.0739 891.5104 -28.7325 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_SPRINT FOLLOW_ROUTE_ONCE FLUSH_ROUTE EXTEND_ROUTE 728.9528 889.2318 -27.4689 EXTEND_ROUTE 718.7523 918.5203 -19.8860 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_SPRINT FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK c2_seq_flee[0] OPEN_SEQUENCE_TASK seq_machine TASK_STAND_STILL -1 4000 TASK_SCRATCH_HEAD -1 TASK_LOOK_ABOUT -1 4000 SET_SEQUENCE_TO_REPEAT seq_machine 1 CLOSE_SEQUENCE_TASK seq_machine OPEN_SEQUENCE_TASK seq_patrol1 TASK_GO_TO_COORD_ANY_MEANS -1 625.9337 831.7066 -43.9531 PEDMOVE_WALK -1 TASK_LOOK_ABOUT -1 2000 TASK_GO_TO_COORD_ANY_MEANS -1 629.7086 863.9051 -43.9456 PEDMOVE_WALK -1 TASK_LOOK_ABOUT -1 2000 TASK_GO_TO_COORD_ANY_MEANS -1 633.3620 899.4764 -43.8397 PEDMOVE_WALK -1 TASK_LOOK_ABOUT -1 2000 SET_SEQUENCE_TO_REPEAT seq_patrol1 1 CLOSE_SEQUENCE_TASK seq_patrol1 OPEN_SEQUENCE_TASK seq_patrol2 TASK_GO_TO_COORD_ANY_MEANS -1 531.6239 860.3109 -43.6083 PEDMOVE_WALK -1 TASK_GO_TO_COORD_ANY_MEANS -1 536.4184 852.4755 -43.4897 PEDMOVE_WALK -1 TASK_GO_TO_COORD_ANY_MEANS -1 548.7656 858.6099 -43.8300 PEDMOVE_WALK -1 TASK_GO_TO_COORD_ANY_MEANS -1 544.7462 868.4120 -43.0847 PEDMOVE_WALK -1 SET_SEQUENCE_TO_REPEAT seq_patrol2 1 CLOSE_SEQUENCE_TASK seq_patrol2 OPEN_SEQUENCE_TASK seq_patrol3 TASK_GO_TO_COORD_ANY_MEANS -1 580.5311 830.0402 -30.9456 PEDMOVE_WALK -1 TASK_LOOK_ABOUT -1 2000 TASK_GO_TO_COORD_ANY_MEANS -1 570.5531 828.2956 -26.8808 PEDMOVE_WALK -1 TASK_GO_TO_COORD_ANY_MEANS -1 561.6993 826.1243 -23.1406 PEDMOVE_WALK -1 TASK_LOOK_ABOUT -1 2000 SET_SEQUENCE_TO_REPEAT seq_patrol3 1 CLOSE_SEQUENCE_TASK seq_patrol3 OPEN_SEQUENCE_TASK seq_patrol4 TASK_GO_TO_COORD_ANY_MEANS -1 576.2826 880.9235 -44.6488 PEDMOVE_WALK -1 TASK_GO_TO_COORD_ANY_MEANS -1 575.4687 871.9396 -44.6139 PEDMOVE_WALK -1 TASK_GO_TO_COORD_ANY_MEANS -1 577.0265 862.7321 -44.0826 PEDMOVE_WALK -1 TASK_GO_TO_COORD_ANY_MEANS -1 584.0759 844.0593 -43.4072 PEDMOVE_WALK -1 SET_SEQUENCE_TO_REPEAT seq_patrol4 1 CLOSE_SEQUENCE_TASK seq_patrol4 OPEN_SEQUENCE_TASK c2_seq_jump FLUSH_ROUTE EXTEND_ROUTE 473.5352 916.5417 -19.6808 EXTEND_ROUTE 467.0137 925.6787 -19.4363 EXTEND_ROUTE 476.3217 939.0852 -17.1781 EXTEND_ROUTE 493.3413 945.0632 -16.4974 EXTEND_ROUTE 508.5752 956.9808 -15.2792 EXTEND_ROUTE 493.3413 945.0632 -16.4974 EXTEND_ROUTE 476.3217 939.0852 -17.1781 EXTEND_ROUTE 467.0137 925.6787 -19.4363 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_WALK FOLLOW_ROUTE_ONCE FLUSH_ROUTE SET_SEQUENCE_TO_REPEAT c2_seq_jump 1 CLOSE_SEQUENCE_TASK c2_seq_jump OPEN_SEQUENCE_TASK c2_attack_the_player_1 TASK_GO_TO_COORD_ANY_MEANS -1 420.7673 866.2073 5.7531 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_SHOOT_AT_CHAR -1 scplayer -1 CLOSE_SEQUENCE_TASK c2_attack_the_player_1 OPEN_SEQUENCE_TASK c2_attack_the_player_2 TASK_GO_TO_COORD_ANY_MEANS -1 413.9022 863.8785 7.0415 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_SHOOT_AT_CHAR -1 scplayer -1 CLOSE_SEQUENCE_TASK c2_attack_the_player_2 // ******************************************************************************************************************* CREATE_CHAR PEDTYPE_MISSION1 wmyconb 590.3660 876.7747 -43.4973 c2_plunger_man SET_CHAR_HEADING c2_plunger_man 177.7406 SET_CHAR_DECISION_MAKER c2_plunger_man c2_decision_norm GIVE_WEAPON_TO_CHAR c2_plunger_man WEAPONTYPE_PISTOL 30000 SET_CURRENT_CHAR_WEAPON c2_plunger_man WEAPONTYPE_PISTOL SET_CHAR_HEALTH c2_plunger_man 200 SET_CHAR_MAX_HEALTH c2_plunger_man 200 TASK_STAY_IN_SAME_PLACE c2_plunger_man TRUE TASK_USE_MOBILE_PHONE c2_plunger_man TRUE // ******************************************************************************************************************* CREATE_OBJECT CJ_Dyn_Plunge_1 591.2704 876.7986 -43.4973 c2_plunger SET_OBJECT_HEADING c2_plunger 270.0000 // ******************************************************************************************************************* CREATE_CAR FORKLIFT 640.8603 810.4040 -43.9531 c2_forklift SET_CAR_HEADING c2_forklift 250.0977 CONTROL_MOVABLE_VEHICLE_PART c2_forklift 0.5 //SET_CAR_HEAVY c2_forklift TRUE // ******************************************************************************************************************* OPEN_SEQUENCE_TASK c2_seq_forklift IF NOT IS_CAR_DEAD c2_forklift FLUSH_ROUTE EXTEND_ROUTE 667.7962 819.8148 -43.9456 EXTEND_ROUTE 655.5785 831.1092 -43.9456 EXTEND_ROUTE 643.8084 819.2715 -43.9456 EXTEND_ROUTE 605.1934 820.2333 -44.0023 TASK_DRIVE_POINT_ROUTE_ADVANCED -1 c2_forklift 10.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS FLUSH_ROUTE EXTEND_ROUTE 608.6918 819.8881 -43.9456 EXTEND_ROUTE 643.8084 819.2715 -43.9456 EXTEND_ROUTE 655.5785 831.1092 -43.9456 EXTEND_ROUTE 667.7962 819.8148 -43.9456 TASK_DRIVE_POINT_ROUTE_ADVANCED -1 c2_forklift 10.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS FLUSH_ROUTE SET_SEQUENCE_TO_REPEAT c2_seq_forklift 1 ENDIF CLOSE_SEQUENCE_TASK c2_seq_forklift // ****************************************************************************************************** CREATE_CHAR PEDTYPE_MISSION1 BMYCON 625.9337 831.7066 -43.9531 quarry_worker[0] SET_CHAR_HEADING quarry_worker[0] 156.9796 SET_CHAR_DECISION_MAKER quarry_worker[0] c2_decision PERFORM_SEQUENCE_TASK quarry_worker[0] seq_patrol1 CREATE_CHAR PEDTYPE_MISSION2 BMYCON 531.6239 860.3109 -43.6083 quarry_worker[1] SET_CHAR_HEADING quarry_worker[1] 156.9796 SET_CHAR_DECISION_MAKER quarry_worker[1] c2_security_decision GIVE_WEAPON_TO_CHAR quarry_worker[1] WEAPONTYPE_SHOVEL 30000 SET_CURRENT_CHAR_WEAPON quarry_worker[1] WEAPONTYPE_SHOVEL PERFORM_SEQUENCE_TASK quarry_worker[1] seq_patrol2 CREATE_CHAR PEDTYPE_MISSION1 BMYCON 637.8237 825.2736 -41.2744 quarry_worker[2] SET_CHAR_HEADING quarry_worker[2] 309.4228 SET_CHAR_DECISION_MAKER quarry_worker[2] c2_decision CREATE_CHAR PEDTYPE_MISSION1 BMYCON 638.5316 826.1287 -41.2291 quarry_worker[3] SET_CHAR_HEADING quarry_worker[3] 144.6359 SET_CHAR_DECISION_MAKER quarry_worker[3] c2_decision CREATE_CHAR PEDTYPE_MISSION1 BMYCON 583.0614 849.4081 -43.5974 quarry_worker[4] SET_CHAR_HEADING quarry_worker[4] 26.0656 SET_CHAR_DECISION_MAKER quarry_worker[4] c2_decision PERFORM_SEQUENCE_TASK quarry_worker[4] seq_patrol4 CREATE_CHAR PEDTYPE_MISSION2 wmysgrd 491.5784 940.8132 -17.1478 quarry_worker[6] GIVE_WEAPON_TO_CHAR quarry_worker[6] WEAPONTYPE_PISTOL 30000 SET_CURRENT_CHAR_WEAPON quarry_worker[6] WEAPONTYPE_PISTOL SET_CHAR_HEADING quarry_worker[6] 279.9455 SET_CHAR_DECISION_MAKER quarry_worker[6] c2_security_decision PERFORM_SEQUENCE_TASK quarry_worker[6] c2_seq_jump // ***************************************************************************************************** // * * // * Guy protecting boss * // * * // ***************************************************************************************************** CREATE_CHAR PEDTYPE_MISSION2 wmysgrd 590.1505 875.5482 -43.4973 quarry_worker[7] SET_CHAR_HEADING quarry_worker[7] 278.2997 SET_CHAR_DECISION_MAKER quarry_worker[7] c2_security_decision GIVE_WEAPON_TO_CHAR quarry_worker[7] WEAPONTYPE_PISTOL 30000 SET_CURRENT_CHAR_WEAPON quarry_worker[7] WEAPONTYPE_PISTOL PERFORM_SEQUENCE_TASK quarry_worker[7] c2_backup // ***************************************************************************************************** // * * // * Guys at crate during cutscene * // * * // ***************************************************************************************************** CREATE_CHAR PEDTYPE_MISSION1 BMYCON 655.8689 904.3282 -42.0397 quarry_worker[8] SET_CHAR_HEADING quarry_worker[8] 330.4476 SET_CHAR_DECISION_MAKER quarry_worker[8] c2_decision CREATE_CHAR PEDTYPE_MISSION1 BMYCON 654.8843 906.4748 -42.0822 quarry_worker[9] SET_CHAR_HEADING quarry_worker[9] 324.1920 GIVE_WEAPON_TO_CHAR quarry_worker[9] WEAPONTYPE_SHOVEL 30000 SET_CURRENT_CHAR_WEAPON quarry_worker[9] WEAPONTYPE_SHOVEL SET_CHAR_DECISION_MAKER quarry_worker[9] c2_decision REPEAT 10 v IF NOT IS_CHAR_DEAD quarry_worker[v] SET_SENSE_RANGE quarry_worker[v] 15.0 ENDIF ENDREPEAT IF NOT IS_CAR_DEAD c2_forklift CREATE_CHAR_INSIDE_CAR c2_forklift PEDTYPE_MISSION1 BMYCON c2_intro_quarry[3] SET_CHAR_DECISION_MAKER c2_intro_quarry[3] c2_decision PERFORM_SEQUENCE_TASK c2_intro_quarry[3] c2_seq_forklift ENDIF // ******************************************************************************************************* SET_CAMERA_BEHIND_PLAYER REPEAT 4 v CREATE_OBJECT_NO_OFFSET Dynamite dynamite_x[v] dynamite_y[v] dynamite_z[v] dynamite_pick_up[v] SET_OBJECT_PROOFS dynamite_pick_up[v] FALSE FALSE FALSE FALSE FALSE CREATE_OBJECT_NO_OFFSET dyno_box_A dynamite_x[v] dynamite_y[v] dynamite_z[v] broken_box[v] SET_OBJECT_COLLISION dynamite_pick_up[v] FALSE SET_OBJECT_HEADING broken_box[v] dynamite_h[v] CREATE_OBJECT_NO_OFFSET dyno_box_B dynamite_x[v] dynamite_y[v] dynamite_z[v] gun_box[v] SET_OBJECT_HEADING gun_box[v] dynamite_h[v] ADD_BLIP_FOR_OBJECT dynamite_pick_up[v] dynamite_blip[v] CHANGE_BLIP_DISPLAY dynamite_blip[v] BOTH MAKE_OBJECT_TARGETTABLE gun_box[v] FALSE MAKE_OBJECT_TARGETTABLE dynamite_pick_up[v] FALSE MAKE_OBJECT_TARGETTABLE broken_box[v] FALSE SET_OBJECT_HEALTH gun_box[v] 1000 ENDREPEAT //ATTACH_OBJECT_TO_CAR dynamite_pick_up[3] c2_forklift -0.6 0.4 0.0 0.0 90.0 90.0 ATTACH_OBJECT_TO_OBJECT dynamite_pick_up[3] gun_box[3] 0.0 0.0 0.4 0.0 0.0 0.0 ATTACH_OBJECT_TO_OBJECT broken_box[3] gun_box[3] 0.0 0.0 0.0 0.0 0.0 0.0 ATTACH_OBJECT_TO_CAR gun_box[3] c2_forklift 0.0 0.8 -0.3 0.0 0.0 0.0 CREATE_OBJECT privatesign3 470.3749 965.7881 4.5134 c2_sign SET_OBJECT_HEADING c2_sign 311.2527 CREATE_OBJECT privatesign1 546.1226 879.7054 -42.1212 c2_sign1 SET_OBJECT_HEADING c2_sign1 76.9240 ADD_BLIP_FOR_COORD 542.6064 880.7817 -36.3928 c2_blip[0] CHANGE_BLIP_DISPLAY c2_blip[0] NEITHER ADD_BLIP_FOR_COORD 585.3983 870.3217 -39.4206 c2_blip[1] CHANGE_BLIP_DISPLAY c2_blip[1] NEITHER ADD_BLIP_FOR_COORD 518.1917 814.9812 -9.7609 c2_blip[2] CHANGE_BLIP_DISPLAY c2_blip[2] NEITHER ADD_BLIP_FOR_COORD 479.1757 930.0793 -16.6475 c2_blip[3] CHANGE_BLIP_DISPLAY c2_blip[3] NEITHER ADD_BLIP_FOR_COORD 437.9441 869.2394 -4.0196 c2_blip[4] CHANGE_BLIP_DISPLAY c2_blip[4] NEITHER ADD_BLIP_FOR_COORD 455.1732 803.1501 5.3872 c2_blip[5] CHANGE_BLIP_DISPLAY c2_blip[5] NEITHER ADD_BLIP_FOR_COORD 1030.1570 744.3469 9.7922 c2_final_blip CHANGE_BLIP_DISPLAY c2_final_blip NEITHER IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer pd_cut_car SET_CAR_STATUS pd_cut_car STATUS_PHYSICS SET_CAR_TEMP_ACTION pd_cut_car TEMPACT_HANDBRAKETURNRIGHT 1500 ENDIF ENDIF GOSUB casino2_set_camera IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer SET_CAR_COORDINATES pd_cut_car 777.9584 838.6478 4.8610 SET_CAR_HEADING pd_cut_car 0.0000 WARP_CHAR_FROM_CAR_TO_COORD scplayer 774.3173 835.6580 4.8819 ELSE SET_CHAR_COORDINATES scplayer 775.5965 834.8624 4.8713 ENDIF TASK_GO_TO_COORD_ANY_MEANS scplayer 771.6103 836.6703 4.8969 PEDMOVE_WALK -1 SET_CHAR_HEADING scplayer 87.4579 ENDIF LOAD_SCENE_IN_DIRECTION 773.9383 834.7843 4.8835 74.4105 SET_FIXED_CAMERA_POSITION 776.3613 837.3477 7.3533 0.0 0.0 0.0 // Crate Cut POINT_CAMERA_AT_POINT 775.4211 837.4819 7.0403 JUMP_CUT WAIT 500 GOSUB casino2_fade_in PRINT_NOW ( PD_01 ) 4500 1 // Enter the Quarry and steal the dynamite. TIMERA = 0 WHILE TIMERA < 4500 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_cutscene ENDIF ENDWHILE LOAD_SCENE_IN_DIRECTION 610.9529 869.6495 -40.7211 77.0000 SET_FIXED_CAMERA_POSITION 610.9529 869.6495 -40.7211 0.0 0.0 0.0 // Crate Cut POINT_CAMERA_AT_POINT 610.0316 870.0207 -40.8371 JUMP_CUT PRINT_NOW ( PD_20 ) 5000 1 // The dynamite is rigged to blow! TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_cutscene ENDIF ENDWHILE IF NOT IS_CHAR_DEAD quarry_worker[8] AND NOT IS_CHAR_DEAD quarry_worker[9] PERFORM_SEQUENCE_TASK quarry_worker[8] c2_seq_crate_b PERFORM_SEQUENCE_TASK quarry_worker[9] c2_seq_crate_a ENDIF TIMERA = 0 WHILE TIMERA < 3000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_cutscene ENDIF ENDWHILE SET_FIXED_CAMERA_POSITION 664.9276 918.5754 -40.8955 0.0 0.0 0.0 // Crate Cut POINT_CAMERA_AT_POINT 663.9788 918.2599 -40.9078 JUMP_CUT PRINT_NOW ( PD_21 ) 4000 1 // Get it before the workers destroy it. IF NOT IS_CHAR_DEAD quarry_worker[3] TASK_PLAY_ANIM quarry_worker[3] IDLE_chat PED 1.0 TRUE FALSE FALSE FALSE -1 ENDIF TIMERA = 0 WHILE TIMERA < 4000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_cutscene ENDIF ENDWHILE SET_FIXED_CAMERA_POSITION 661.5589 921.2776 -40.5538 0.0 0.0 0.0 // Crate Cut POINT_CAMERA_AT_POINT 661.9819 920.3747 -40.6291 JUMP_CUT PRINT_NOW ( PD_27 ) 6000 1 // You'll need something heavy to smash those crates! TIMERA = 0 WHILE TIMERA < 6000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_cutscene ENDIF ENDWHILE c2_skip_the_cutscene: IF NOT IS_CHAR_DEAD quarry_worker[8] AND NOT IS_CHAR_DEAD quarry_worker[9] PERFORM_SEQUENCE_TASK quarry_worker[8] c2_seq_crate_b PERFORM_SEQUENCE_TASK quarry_worker[9] c2_seq_crate_a ENDIF IF NOT IS_CHAR_DEAD quarry_worker[3] TASK_PLAY_ANIM quarry_worker[3] IDLE_chat PED 1.0 TRUE FALSE FALSE FALSE -1 ENDIF GOSUB casino2_fade_out GOSUB casino2_restore_camera IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 775.4108 834.5572 4.8721 SET_CHAR_HEADING scplayer 93.2533 ENDIF GOSUB casino2_fade_in CLEAR_PRINTS c2_time_left = 150000 //DISPLAY_ONSCREEN_TIMER_WITH_STRING c2_time_left TIMER_DOWN BB_19 // Time DISPLAY_ONSCREEN_TIMER_WITH_STRING c2_time_left TIMER_DOWN PD_25 // Construction Workers X 13 **************************************************************************** GOTO c2_main_loop // ***************************************************************************************** // * * // * All Dynamite Collected * // * * // ***************************************************************************************** cavalry_arrives: REQUEST_MODEL TRIADA REQUEST_MODEL manana REQUEST_ANIMATION CARRY WHILE NOT HAS_MODEL_LOADED TRIADA OR NOT HAS_MODEL_LOADED manana OR NOT HAS_ANIMATION_LOADED CARRY WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_MISSION2 wmysgrd 580.5311 830.0402 -30.9456 quarry_worker[5] SET_CHAR_HEADING quarry_worker[5] 57.3299 SET_CHAR_DECISION_MAKER quarry_worker[5] c2_security_decision GIVE_WEAPON_TO_CHAR quarry_worker[5] WEAPONTYPE_PISTOL 30000 SET_CURRENT_CHAR_WEAPON quarry_worker[5] WEAPONTYPE_PISTOL PERFORM_SEQUENCE_TASK quarry_worker[5] seq_patrol3 CLEAR_AREA 1032.6781 741.7072 9.8044 10.0 TRUE CREATE_CAR manana 1032.6781 741.7072 9.8044 c2_end_truck LOCK_CAR_DOORS c2_end_truck CARLOCK_LOCKED FREEZE_CAR_POSITION c2_end_truck TRUE POP_CAR_BOOT c2_end_truck SET_CAR_HEADING c2_end_truck 292.6477 CREATE_CHAR PEDTYPE_CIVMALE TRIADA 1029.1730 740.8435 9.8018 c2_end_guy SET_CHAR_HEADING c2_end_guy 63.6493 SET_CHAR_SUFFERS_CRITICAL_HITS c2_end_guy FALSE SET_CHAR_NEVER_TARGETTED c2_end_guy TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER c2_end_guy TRUE SET_CHAR_DECISION_MAKER c2_end_guy c2_decision_none REQUEST_MODEL securica REQUEST_MODEL CHROMEGUN WHILE NOT HAS_MODEL_LOADED securica OR NOT HAS_MODEL_LOADED CHROMEGUN WAIT 0 ENDWHILE CLEAR_AREA 812.6123 845.2352 9.1419 20.0 TRUE CREATE_CAR securica 812.6123 845.2352 9.1419 security_van_1 SET_CAR_HEADING security_van_1 101.1888 CREATE_CAR securica 812.4752 840.8808 8.9765 security_van_2 SET_CAR_HEADING security_van_2 101.8471 CREATE_CAR securica 422.5194 856.2830 6.1078 security_van_3 SET_CAR_HEADING security_van_3 33.0215 // The Quarry Dirt Bike ********************************************************************************* CREATE_CHAR_INSIDE_CAR security_van_1 PEDTYPE_MISSION2 wmysgrd security_guards[0] CREATE_CHAR_AS_PASSENGER security_van_1 PEDTYPE_MISSION2 wmysgrd 0 security_guards[1] CREATE_CHAR_INSIDE_CAR security_van_2 PEDTYPE_MISSION2 wmysgrd security_guards[2] CREATE_CHAR_AS_PASSENGER security_van_2 PEDTYPE_MISSION2 wmysgrd 0 security_guards[3] REPEAT 4 v GIVE_WEAPON_TO_CHAR security_guards[v] WEAPONTYPE_SHOTGUN 30000 SET_CURRENT_CHAR_WEAPON security_guards[v] WEAPONTYPE_SHOTGUN SET_CHAR_DECISION_MAKER security_guards[v] c2_security_decision ENDREPEAT CLEAR_AREA 783.6387 841.3950 4.8177 20.0 TRUE TASK_CAR_DRIVE_TO_COORD security_guards[0] security_van_1 783.6387 841.3950 4.8177 20.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_TO_COORD security_guards[2] security_van_2 781.6849 833.6969 4.8296 20.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS c2_cutscene_playing = 1 CLEAR_PRINTS GOSUB casino2_fade_out REPEAT 10 v IF NOT v = 5 AND NOT v = 6 AND NOT v = 7 IF NOT IS_CHAR_DEAD quarry_worker[v] DELETE_CHAR quarry_worker[v] ENDIF ENDIF IF v = 7 IF NOT IS_CHAR_DEAD quarry_worker[v] CLEAR_CHAR_TASKS_IMMEDIATELY quarry_worker[v] TASK_KILL_CHAR_ON_FOOT quarry_worker[v] scplayer ENDIF ENDIF ENDREPEAT IF NOT IS_CHAR_DEAD c2_intro_quarry[2] DELETE_CHAR c2_intro_quarry[2] ENDIF IF NOT IS_CHAR_DEAD c2_intro_quarry[3] DELETE_CHAR c2_intro_quarry[3] ENDIF IF NOT IS_CHAR_DEAD c2_plunger_man DELETE_CHAR c2_plunger_man ENDIF REQUEST_MODEL sanchez WHILE NOT HAS_MODEL_LOADED sanchez WAIT 0 ENDWHILE LVAR_INT c2_bike_gen c2_bike_gen1 CREATE_CAR sanchez 583.0051 881.9482 -45.0648 quarry_dirt_bike SET_CAN_BURST_CAR_TYRES quarry_dirt_bike FALSE SET_CAR_HEADING quarry_dirt_bike 93.6785 CLEAR_AREA 583.0051 881.9482 -45.0648 10.0 TRUE CLEAR_AREA 583.0051 881.9482 -45.0648 10.0 TRUE ADD_BLIP_FOR_CAR quarry_dirt_bike c2_bike_blip SET_BLIP_AS_FRIENDLY c2_bike_blip TRUE GOSUB casino2_set_camera FORCE_WEATHER_NOW WEATHER_SANDSTORM_DESERT SET_FIXED_CAMERA_POSITION 772.3265 828.7196 5.8497 0.0 0.0 0.0 // Pan infront of security vans POINT_CAMERA_AT_POINT 773.1074 829.3431 5.8867 JUMP_CUT GOSUB casino2_fade_in TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_cutscene1 ENDIF ENDWHILE SET_FIXED_CAMERA_POSITION 772.3265 828.7196 5.8497 0.0 0.0 0.0 // Pan infront of security vans POINT_CAMERA_AT_POINT 773.1074 829.3431 5.8867 JUMP_CUT PRINT_NOW ( PD_10 ) 3500 1 // Security is blocking the exit. TIMERA = 0 WHILE TIMERA < 1000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_cutscene1 ENDIF ENDWHILE IF NOT IS_CAR_DEAD security_van_2 TASK_EVERYONE_LEAVE_CAR security_van_2 ENDIF TIMERA = 0 WHILE TIMERA < 500 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_cutscene1 ENDIF ENDWHILE IF NOT IS_CAR_DEAD security_van_1 TASK_EVERYONE_LEAVE_CAR security_van_1 ENDIF TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_cutscene1 ENDIF ENDWHILE SET_FIXED_CAMERA_POSITION 587.0494 883.9788 -44.1279 0.0 0.0 0.0 // Pan infront of security vans POINT_CAMERA_AT_POINT 586.0945 883.6844 -44.1663 JUMP_CUT PRINT_NOW ( PD_11 ) 4000 1 // ~s~Use the ~r~Dirt bike ~s~and find another way out! TIMERA = 0 WHILE TIMERA < 4000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_cutscene1 ENDIF ENDWHILE SET_FIXED_CAMERA_POSITION 560.5041 888.8810 -42.2954 0.0 0.0 0.0 // Dirt Bike Route POINT_CAMERA_AT_POINT 559.5857 888.5298 -42.1132 JUMP_CUT TIMERA = 0 WHILE TIMERA < 100 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_cutscene1 ENDIF ENDWHILE SET_INTERPOLATION_PARAMETERS 0.0 5000 SET_FIXED_CAMERA_POSITION 560.5041 888.8810 -42.2954 0.0 0.0 0.0 // Dirt Bike Route POINT_CAMERA_AT_POINT 561.1447 888.1351 -42.1132 INTERPOLATION TIMERA = 0 WHILE TIMERA < 5000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_cutscene1 ENDIF ENDWHILE SET_FIXED_CAMERA_POSITION 584.2947 833.9013 -23.7385 0.0 0.0 0.0 // Dirt Bike Route POINT_CAMERA_AT_POINT 583.8419 833.3374 -24.4291 JUMP_CUT TIMERA = 0 WHILE TIMERA < 100 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_cutscene1 ENDIF ENDWHILE SET_INTERPOLATION_PARAMETERS 0.0 4000 SET_FIXED_CAMERA_POSITION 584.2947 833.9013 -23.7385 0.0 0.0 0.0 // Dirt Bike Route POINT_CAMERA_AT_POINT 583.3537 833.6394 -23.5241 INTERPOLATION TIMERA = 0 WHILE TIMERA < 4000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_cutscene1 ENDIF ENDWHILE c2_skip_the_cutscene1: GOSUB casino2_fade_out CLEAR_PRINTS GOSUB casino2_restore_camera GOSUB casino2_fade_in SET_OBJECT_HEADING cas2_gate1 115.0 SET_OBJECT_HEADING cas2_gate2 -65.0 IF NOT IS_CAR_DEAD security_van_1 SET_CAR_COORDINATES security_van_1 783.6387 841.3950 4.8177 ENDIF IF NOT IS_CAR_DEAD security_van_2 SET_CAR_COORDINATES security_van_2 781.6849 833.6969 4.8296 ENDIF c2_cutscene_playing = 1 CREATE_OBJECT_NO_OFFSET barrier_4andy 783.3699 847.4722 4.8193 barrier SET_OBJECT_HEADING barrier 10.6540 CREATE_OBJECT_NO_OFFSET barrier_4andy 778.0906 847.8346 4.8515 barrier SET_OBJECT_HEADING barrier 10.5331 IF NOT IS_CHAR_DEAD security_guards[0] IF NOT IS_CHAR_IN_ANY_CAR security_guards[0] SET_CHAR_COORDINATES security_guards[0] 781.9483 848.7029 4.8280 SET_CHAR_HEADING security_guards[0] 20.7251 ELSE WARP_CHAR_FROM_CAR_TO_COORD security_guards[0] 781.9483 848.7029 4.8280 SET_CHAR_HEADING security_guards[0] 20.7251 ENDIF ENDIF IF NOT IS_CHAR_DEAD security_guards[1] IF NOT IS_CHAR_IN_ANY_CAR security_guards[1] SET_CHAR_COORDINATES security_guards[1] 777.5142 849.4856 4.8551 SET_CHAR_HEADING security_guards[1] 22.0536 ELSE WARP_CHAR_FROM_CAR_TO_COORD security_guards[1] 777.5142 849.4856 4.8551 SET_CHAR_HEADING security_guards[1] 22.0536 ENDIF ENDIF IF NOT IS_CHAR_DEAD security_guards[2] IF NOT IS_CHAR_IN_ANY_CAR security_guards[2] SET_CHAR_COORDINATES security_guards[2] 773.2135 821.8822 4.3934 SET_CHAR_HEADING security_guards[2] 168.8133 ELSE WARP_CHAR_FROM_CAR_TO_COORD security_guards[2] 773.2135 821.8822 4.3934 SET_CHAR_HEADING security_guards[2] 168.8133 ENDIF ENDIF IF NOT IS_CHAR_DEAD security_guards[3] IF NOT IS_CHAR_IN_ANY_CAR security_guards[3] SET_CHAR_COORDINATES security_guards[3] 778.8481 819.9525 4.3237 SET_CHAR_HEADING security_guards[3] 156.0701 ELSE WARP_CHAR_FROM_CAR_TO_COORD security_guards[3] 778.8481 819.9525 4.3237 SET_CHAR_HEADING security_guards[3] 156.0701 ENDIF ENDIF REPEAT 4 v IF NOT IS_CHAR_DEAD security_guards[v] PERFORM_SEQUENCE_TASK security_guards[v] seq_security ENDIF ENDREPEAT RETURN // ********************************************************************************** // * * // * * // * MAIN LOOP COMMENCETH * // * * // * * // ********************************************************************************** c2_main_loop: TIMERB = 0 CLEAR_PRINTS PRINT_NOW(PD_26) 7000 1 // ~s~Get the ~g~Dynamite ~s~before the timer runs out and it's detonated. CHECKPOINT_SAVE 1 WHILE NOT IS_CHAR_DEAD scplayer WAIT 0 c2_TIMERC ++ IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S GOTO mission_casino2_passed ENDIF GOSUB casino2_keys GOSUB c2_play_sample GOSUB c2_play_sample_3 IF NOT IS_CHAR_DEAD scplayer GET_CHAR_COORDINATES scplayer c2_ply_X c2_ply_Y c2_ply_Z ENDIF GOSUB kill_guys_if_in_radius IF c2_time_left <= 22000 AND c2_plunger_txt = 0 IF c2_inside_quarry = 1 // c2_audio_3 = SOUND_DETONATION_SIREN // GOSUB c2_load_sample_3 ENDIF c2_plunger_txt = 1 ENDIF IF c2_time_left <= 20000 AND c2_plunger_txt = 1 IF c2_inside_quarry = 1 $c2_print = &CAS2_BA // ALL PERSONEL CLEAR! c2_audio = SOUND_CAS2_BA GOSUB c2_load_sample ENDIF c2_plunger_txt = 2 ENDIF IF c2_time_left <= 6000 AND c2_plunger_txt = 2 IF c2_inside_quarry = 1 $c2_print = &CAS2_BB // FIVE SECONDS TO DETONATION! c2_audio = SOUND_CAS2_BB GOSUB c2_load_sample ENDIF c2_plunger_txt = 3 ENDIF IF c2_time_left <= 3800 AND c2_plunger_txt = 3 IF c2_inside_quarry = 1 $c2_print = &CAS2_BC // THREE...! c2_audio = SOUND_CAS2_BC GOSUB c2_load_sample ENDIF c2_plunger_txt = 4 ENDIF IF c2_time_left <= 2800 AND c2_plunger_txt = 4 IF c2_inside_quarry = 1 $c2_print = &CAS2_BD // TWO...! c2_audio = SOUND_CAS2_BD GOSUB c2_load_sample ENDIF c2_plunger_txt = 5 ENDIF IF IS_CAR_DEAD c2_dumper AND c2_dumper_is_safe = 0 PRINT_NOW ( PD_33 ) 4000 1 // ~r~The dumper truck has been destroyed the only way to break the crates GOTO mission_casino2_failed ENDIF IF NOT IS_CHAR_DEAD c2_plunger_man AND NOT IS_CHAR_DEAD scplayer IF IS_CHAR_SHOOTING c2_plunger_man AND c2_been_damaged_2 = 0 CLEAR_CHAR_TASKS_IMMEDIATELY c2_plunger_man TASK_USE_MOBILE_PHONE c2_plunger_man FALSE c2_been_damaged_2 = 1 ENDIF ENDIF IF c2_time_left <= 1800 AND NOT IS_CHAR_DEAD c2_plunger_man IF c2_inside_quarry = 1 GOSUB casino2_set_camera CLEAR_HELP CLEAR_PRINTS SET_FIXED_CAMERA_POSITION 586.0814 876.6778 -41.6123 0.0 0.0 0.0 // Dirt Bike Route POINT_CAMERA_AT_POINT 587.0665 876.6669 -41.7839 JUMP_CUT CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAS2_BE // ONE... REQUEST_ANIMATION MISC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_ANIMATION_LOADED MISC WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( CAS2_BE ) 2000 1 // ONE... WAIT 1000 TIMERA = 0 WHILE TIMERA < 1000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_dynamite ENDIF ENDWHILE IF NOT IS_CHAR_DEAD c2_plunger_man CLEAR_CHAR_TASKS_IMMEDIATELY c2_plunger_man SET_CHAR_DECISION_MAKER c2_plunger_man c2_decision SET_CHAR_HEADING c2_plunger_man 270.0000 TASK_PLAY_ANIM c2_plunger_man Plunger_01 MISC 1.0 TRUE FALSE FALSE FALSE -1 ENDIF TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_dynamite ENDIF ENDWHILE c2_skip_the_dynamite: REMOVE_ANIMATION MISC GOSUB c2_dynamite_explodes GOSUB casino2_restore_camera ENDIF PRINT_NOW ( PD_19 ) 4000 1 // ~r~The dynamite has been destroyed! GOTO mission_casino2_failed ENDIF IF IS_CHAR_DEAD c2_plunger_man AND c2_kill_timer = 0 CLEAR_ONSCREEN_TIMER c2_time_left c2_kill_timer = 1 ENDIF IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer c2_store_car ENDIF ENDIF /* IF IS_CAR_DEAD c2_forklift AND dynamite_collected[3] = 0 AND c2_crate_dropped = 0 IF c2_been_damaged = 0 PRINT_NOW ( PD_09 ) 4000 1 // ~r~You blew up the dynamite. CREATE_FX_SYSTEM EXPLOSION_SMALL dynamite_x[3] dynamite_y[3] dynamite_z[3] TRUE c2_fx REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gun_box[3] SOUND_EXPLOSION PLAY_AND_KILL_FX_SYSTEM c2_fx IF gun_box_broken[3] = 0 BREAK_OBJECT gun_box[3] TRUE ENDIF DELETE_OBJECT dynamite_pick_up[3] GOTO mission_casino2_failed ENDIF ENDIF */ IF NOT IS_CAR_DEAD c2_store_car AND NOT IS_CAR_DEAD c2_forklift AND c2_in_dumper = 1 IF HAS_CAR_BEEN_DAMAGED_BY_CAR c2_forklift c2_store_car AND c2_been_damaged = 0 c2_been_damaged = 1 IF NOT IS_CAR_DEAD c2_forklift IF DOES_OBJECT_EXIST broken_box[3] SET_OBJECT_COLLISION broken_box[3] FALSE // DETACH_OBJECT broken_box[3] 0.0 0.0 0.0 FALSE ENDIF IF DOES_OBJECT_EXIST dynamite_pick_up[3] SET_OBJECT_COLLISION dynamite_pick_up[3] FALSE DETACH_OBJECT dynamite_pick_up[3] 0.0 0.0 0.0 FALSE PLACE_OBJECT_RELATIVE_TO_CAR dynamite_pick_up[3] c2_forklift 0.0 1.8 -0.4 ENDIF IF DOES_OBJECT_EXIST gun_box[3] SET_OBJECT_COLLISION gun_box[3] FALSE // DETACH_OBJECT gun_box[3] 0.0 0.0 0.0 FALSE // PLACE_OBJECT_RELATIVE_TO_CAR gun_box[3] c2_forklift 0.0 1.8 -0.6 ENDIF ENDIF BREAK_OBJECT gun_box[3] TRUE DELETE_OBJECT broken_box[3] dynamite_offset = dynamite_z[3] + 0.3 CHANGE_BLIP_COLOUR dynamite_blip[3] RED //CHANGE_BLIP_DISPLAY dynamite_blip[3] BLIP_ONLY CREATE_FX_SYSTEM explosion_crate dynamite_x[3] dynamite_y[3] dynamite_z[3] TRUE c2_crate_fx REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gun_box[3] SOUND_EXPLOSION PLAY_AND_KILL_FX_SYSTEM c2_crate_fx gun_box_broken[3] = 1 message_once = 2 c2_box_count ++ IF NOT IS_CHAR_DEAD c2_intro_quarry[3] AND NOT IS_CAR_DEAD c2_forklift IF IS_CHAR_IN_CAR c2_intro_quarry[3] c2_forklift AND NOT IS_CAR_DEAD c2_forklift TASK_LEAVE_CAR c2_intro_quarry[3] c2_forklift TASK_KILL_CHAR_ON_FOOT c2_intro_quarry[3] scplayer ENDIF ENDIF ENDIF ENDIF IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 429.4690 916.0814 0.9027 20.0 20.0 20.0 FALSE AND c2_given_guns = 0 CREATE_CHAR PEDTYPE_MISSION2 wmysgrd 416.5302 862.1686 6.7328 security_guards[4] SET_CHAR_HEADING security_guards[4] 357.0781 GIVE_WEAPON_TO_CHAR security_guards[4] WEAPONTYPE_PISTOL 30000 SET_CURRENT_CHAR_WEAPON security_guards[4] WEAPONTYPE_PISTOL PERFORM_SEQUENCE_TASK security_guards[4] c2_stand_and_shoot CREATE_CHAR PEDTYPE_MISSION2 wmysgrd 423.9201 861.7891 5.5413 security_guards[5] SET_CHAR_HEADING security_guards[5] 352.4637 GIVE_WEAPON_TO_CHAR security_guards[5] WEAPONTYPE_PISTOL 30000 SET_CURRENT_CHAR_WEAPON security_guards[5] WEAPONTYPE_PISTOL PERFORM_SEQUENCE_TASK security_guards[5] c2_stand_and_shoot c2_given_guns = 1 ENDIF IF DOES_OBJECT_EXIST dynamite_pick_up[3] GET_OBJECT_COORDINATES dynamite_pick_up[3] dynamite_x[3] dynamite_y[3] dynamite_z[3] ENDIF IF IS_CHAR_IN_MODEL scplayer FORKLIFT AND NOT c2_crate_dropped = 2 AND NOT gun_box_broken[3] = 1 PRINT_HELP_FOREVER ( PD_17 ) // ~s~Press the ~o~ button to drop the crate STORE_CAR_CHAR_IS_IN scplayer car IF DOES_OBJECT_EXIST broken_box[3] // SET_OBJECT_COLLISION broken_box[3] FALSE ENDIF IF DOES_OBJECT_EXIST dynamite_pick_up[3] // SET_OBJECT_COLLISION dynamite_pick_up[3] FALSE ENDIF IF DOES_OBJECT_EXIST gun_box[3] // SET_OBJECT_COLLISION gun_box[3] FALSE ENDIF ELSE IF DOES_OBJECT_EXIST broken_box[3] // SET_OBJECT_COLLISION broken_box[3] TRUE ENDIF IF DOES_OBJECT_EXIST dynamite_pick_up[3] // SET_OBJECT_COLLISION dynamite_pick_up[3] FALSE ENDIF IF DOES_OBJECT_EXIST gun_box[3] // SET_OBJECT_COLLISION gun_box[3] TRUE ENDIF IF NOT on_way_home = 4 CLEAR_HELP ENDIF ENDIF IF IS_CHAR_IN_MODEL scplayer dumper OR IS_CHAR_IN_MODEL scplayer dozer REPEAT 4 v IF DOES_OBJECT_EXIST gun_box[v] SET_OBJECT_COLLISION gun_box[v] FALSE ENDIF IF DOES_OBJECT_EXIST broken_box[v] SET_OBJECT_COLLISION broken_box[v] FALSE ENDIF ENDREPEAT c2_in_dumper = 1 ELSE // IF NOT IS_CHAR_IN_MODEL scplayer FORKLIFT REPEAT 4 v IF DOES_OBJECT_EXIST gun_box[v] SET_OBJECT_COLLISION gun_box[v] TRUE ENDIF IF DOES_OBJECT_EXIST broken_box[v] SET_OBJECT_COLLISION broken_box[v] TRUE ENDIF ENDREPEAT // ENDIF c2_in_dumper = 0 ENDIF REPEAT 10 v // Player is within 10 meters of worker IF NOT IS_CHAR_DEAD quarry_worker[v] GET_CHAR_COORDINATES quarry_worker[v] c2_temp_X c2_temp_Y c2_temp_Z IF LOCATE_CHAR_ANY_MEANS_3D scplayer c2_temp_X c2_temp_Y c2_temp_Z 15.0 15.0 3.0 FALSE IF c2_worker_yell = 0 AND c2_TIMERC > 300 AND c2_cutscene_playing = 0 IF NOT IS_MESSAGE_BEING_DISPLAYED c2_break_loop = 0 another_please: GENERATE_RANDOM_INT_IN_RANGE 0 6 c2_rnd IF c2_rnd = c2_last_played c2_break_loop ++ IF c2_break_loop < 5 GOTO another_please ENDIF ENDIF SWITCH c2_rnd CASE 0 $c2_print = &CAS2_AA // Hey you can't come down here! c2_audio = SOUND_CAS2_AA GOSUB c2_load_sample BREAK CASE 1 $c2_print = &CAS2_AB // Where's your safety gear? c2_audio = SOUND_CAS2_AB GOSUB c2_load_sample BREAK CASE 2 $c2_print = &CAS2_AC // You don't have clearence for this area! c2_audio = SOUND_CAS2_AC GOSUB c2_load_sample BREAK CASE 3 $c2_print = &CAS2_AJ // Who's this asshole? c2_audio = SOUND_CAS2_AJ GOSUB c2_load_sample BREAK CASE 4 $c2_print = &CAS2_AK // Someone call security! c2_audio = SOUND_CAS2_AK GOSUB c2_load_sample BREAK CASE 5 $c2_print = &CAS2_AL // What do you think you're doing? c2_audio = SOUND_CAS2_AL GOSUB c2_load_sample BREAK ENDSWITCH c2_last_played = c2_rnd c2_TIMERC = 0 ENDIF ENDIF IF c2_in_range_of_worker = 0 c2_in_range_of_worker = 1 ENDIF ENDIF ENDIF ENDREPEAT REPEAT 4 v IF LOCATE_CHAR_ANY_MEANS_3D scplayer dynamite_x[v] dynamite_y[v] dynamite_z[v] 5.0 5.0 5.0 FALSE AND c2_in_range_of_worker = 1 AND message_once = 2 IF NOT IS_MESSAGE_BEING_DISPLAYED GENERATE_RANDOM_INT_IN_RANGE 0 3 c2_rnd IF c2_rnd = 0 $c2_print = &CAS2_AD // Worker: Get away from that dynamite! c2_audio = SOUND_CAS2_AD GOSUB c2_load_sample ENDIF IF c2_rnd = 1 $c2_print = &CAS2_AE // Hey, that's dangerous! c2_audio = SOUND_CAS2_AE GOSUB c2_load_sample ENDIF IF c2_rnd = 2 $c2_print = &CAS2_AF // Stay away from that stuff! c2_audio = SOUND_CAS2_AF GOSUB c2_load_sample ENDIF c2_in_range_of_worker = 2 TIMERB = 0 ENDIF ENDIF IF gun_box_broken[v] = 0 // GET_OBJECT_HEALTH gun_box[v] gun_health IF DOES_OBJECT_EXIST dynamite_pick_up[3] GET_OBJECT_COORDINATES dynamite_pick_up[3] dynamite_x[3] dynamite_y[3] dynamite_z[3] ENDIF // Smashing the boxes with the dumper truck IF LOCATE_CHAR_IN_CAR_3D scplayer dynamite_x[v] dynamite_y[v] dynamite_z[v] 3.0 3.0 3.0 FALSE AND gun_box_broken[v] = 0 IF IS_CHAR_IN_MODEL scplayer dumper OR IS_CHAR_IN_MODEL scplayer dozer IF v = 3 AND NOT IS_CAR_DEAD c2_forklift AND NOT IS_CHAR_DEAD c2_intro_quarry[3] IF IS_CHAR_IN_CAR c2_intro_quarry[3] c2_forklift TASK_LEAVE_CAR c2_intro_quarry[3] c2_forklift ENDIF ENDIF IF v = 0 IF NOT IS_CHAR_DEAD quarry_worker[8] AND NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY quarry_worker[8] PERFORM_SEQUENCE_TASK quarry_worker[8] c2_seq_flee[0] ENDIF IF NOT IS_CHAR_DEAD quarry_worker[9] AND NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY quarry_worker[9] PERFORM_SEQUENCE_TASK quarry_worker[9] c2_seq_flee[0] ENDIF ENDIF IF c2_collect_the_dynamite = 0 PRINT_NOW ( PD_29 ) 4000 1 // ~s~Pick up the ~r~Dynamite~s~! c2_collect_the_dynamite = 1 ENDIF SHAKE_PAD PAD1 300 200 BREAK_OBJECT gun_box[v] TRUE dynamite_offset = dynamite_z[v] + 0.3 MAKE_OBJECT_TARGETTABLE gun_box[v] FALSE SET_OBJECT_COORDINATES dynamite_pick_up[v] dynamite_x[v] dynamite_y[v] dynamite_offset CHANGE_BLIP_COLOUR dynamite_blip[v] RED //CHANGE_BLIP_DISPLAY dynamite_blip[v] BLIP_ONLY CREATE_FX_SYSTEM explosion_crate dynamite_x[v] dynamite_y[v] dynamite_z[v] TRUE crate_smash[v] PLAY_AND_KILL_FX_SYSTEM crate_smash[v] REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gun_box[v] SOUND_CAR_SMASH_CAR gun_box_broken[v] = 1 message_once = 2 c2_box_count ++ GOSUB c2_kill_the_player ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer dynamite_x[v] dynamite_y[v] dynamite_z[v] 2.0 2.0 2.0 FALSE AND message_once = 0 IF NOT IS_CHAR_IN_MODEL scplayer dumper AND NOT IS_CHAR_IN_MODEL scplayer dozer PRINT_NOW ( PD_02 ) 4000 1 // You'll need something heavy to smash this dynamite crate. message_once = 1 ENDIF ENDIF ENDIF IF dynamite_collected[v] = 0 AND gun_box_broken[v] = 1 dynamite_offset = dynamite_z[v] + 0.3 // Collecting the dynamite IF LOCATE_CHAR_ANY_MEANS_3D scplayer dynamite_x[v] dynamite_y[v] dynamite_z[v] 1.5 1.5 1.5 FALSE in_dumper = 0 IF IS_CHAR_IN_MODEL scplayer dumper OR IS_CHAR_IN_MODEL scplayer dozer in_dumper = 1 ENDIF IF in_dumper = 0 REMOVE_BLIP dynamite_blip[v] dynamite_collected[v] = 1 SET_OBJECT_COLLISION dynamite_pick_up[v] FALSE DELETE_OBJECT dynamite_pick_up[v] SHAKE_PAD PAD1 200 100 GOSUB display_gametext c2_box_count = 5 ENDIF ENDIF ENDIF ENDREPEAT IF c2_box_count = 4 IF NOT IS_CHAR_DEAD quarry_worker[7] CLEAR_CHAR_TASKS_IMMEDIATELY quarry_worker[7] TASK_KILL_CHAR_ON_FOOT quarry_worker[7] scplayer ENDIF PRINT_NOW ( PD_12 ) 4000 1 // ~s~Now collect the ~r~Dynamite~s~! c2_dumper_is_safe = 1 c2_box_count = 5 ENDIF IF on_way_home = 3 AND c2_jumped_fence = 0 IF NOT IS_CAR_DEAD quarry_dirt_bike IF IS_CHAR_IN_CAR scplayer quarry_dirt_bike AND c2_dont_display = 0 CHANGE_BLIP_DISPLAY c2_blip[0] BLIP_ONLY CREATE_CHECKPOINT CHECKPOINT_TUBE c2_blip_x[0] c2_blip_y[0] c2_blip_z[0] c2_arrow_x[0] c2_arrow_y[0] c2_arrow_z[0] 4.0 c2_check_point[0] PRINT_NOW ( PD_23 ) 4000 1 // ~s~Follow the ~y~Arrows ~s~to escape! c2_dont_display = 1 ENDIF ENDIF IF NOT IS_CAR_DEAD quarry_dirt_bike IF IS_CHAR_IN_CAR scplayer quarry_dirt_bike IF c2_get_back_on_bike = 0 c2_get_back_on_bike = 1 ENDIF ELSE IF c2_get_back_on_bike = 1 PRINT_NOW ( PD_X ) 4000 1 // ~s~Get back on the ~b~bike~s~! c2_get_back_on_bike = 0 ENDIF ENDIF IF IS_CHAR_IN_CAR scplayer quarry_dirt_bike IF c2_on_bike = 0 IF c2_cp < 6 CHANGE_BLIP_DISPLAY c2_blip[c2_cp] BLIP_ONLY DELETE_CHECKPOINT c2_check_point[c2_cp] CREATE_CHECKPOINT CHECKPOINT_TUBE c2_blip_x[c2_cp] c2_blip_y[c2_cp] c2_blip_z[c2_cp] c2_arrow_x[c2_cp] c2_arrow_y[c2_cp] c2_arrow_z[c2_cp] 4.0 c2_check_point[c2_cp] ENDIF CHANGE_BLIP_DISPLAY c2_bike_blip NEITHER c2_on_bike = 1 ENDIF ELSE IF c2_on_bike = 1 IF c2_cp < 6 CHANGE_BLIP_DISPLAY c2_blip[c2_cp] NEITHER DELETE_CHECKPOINT c2_check_point[c2_cp] ENDIF CHANGE_BLIP_DISPLAY c2_bike_blip BOTH c2_on_bike = 0 ENDIF ENDIF ENDIF IF c2_on_bike = 1 IF c2_ply_Z < -4.0 AND c2_cp > 4 IF c2_cp < 6 CHANGE_BLIP_DISPLAY c2_blip[c2_cp] NEITHER DELETE_CHECKPOINT c2_check_point[c2_cp] ENDIF CHANGE_BLIP_DISPLAY c2_blip[4] BLIP_ONLY CREATE_CHECKPOINT CHECKPOINT_TUBE c2_blip_x[4] c2_blip_y[4] c2_blip_z[4] c2_arrow_x[4] c2_arrow_y[4] c2_arrow_z[4] 4.0 c2_check_point[4] CHANGE_BLIP_DISPLAY c2_final_blip NEITHER c2_cp = 4 ENDIF IF c2_ply_Z < -16.0 AND c2_cp > 3 IF c2_cp < 6 CHANGE_BLIP_DISPLAY c2_blip[c2_cp] NEITHER DELETE_CHECKPOINT c2_check_point[c2_cp] ENDIF CHANGE_BLIP_DISPLAY c2_blip[3] BLIP_ONLY CREATE_CHECKPOINT CHECKPOINT_TUBE c2_blip_x[3] c2_blip_y[3] c2_blip_z[3] c2_arrow_x[3] c2_arrow_y[3] c2_arrow_z[3] 4.0 c2_check_point[3] CHANGE_BLIP_DISPLAY c2_final_blip NEITHER c2_cp = 3 ENDIF IF c2_ply_Z < -30.0 AND c2_cp > 2 IF c2_cp < 6 CHANGE_BLIP_DISPLAY c2_blip[c2_cp] NEITHER DELETE_CHECKPOINT c2_check_point[c2_cp] ENDIF CHANGE_BLIP_DISPLAY c2_blip[2] BLIP_ONLY CREATE_CHECKPOINT CHECKPOINT_TUBE c2_blip_x[2] c2_blip_y[2] c2_blip_z[2] c2_arrow_x[2] c2_arrow_y[2] c2_arrow_z[2] 4.0 c2_check_point[2] CHANGE_BLIP_DISPLAY c2_final_blip NEITHER c2_cp = 2 ENDIF IF c2_ply_Z < -40.0 AND NOT c2_cp = 0 IF c2_cp < 6 CHANGE_BLIP_DISPLAY c2_blip[c2_cp] NEITHER DELETE_CHECKPOINT c2_check_point[c2_cp] ENDIF CHANGE_BLIP_DISPLAY c2_blip[0] BLIP_ONLY CREATE_CHECKPOINT CHECKPOINT_TUBE c2_blip_x[0] c2_blip_y[0] c2_blip_z[0] c2_arrow_x[0] c2_arrow_y[0] c2_arrow_z[0] 4.0 c2_check_point[0] CHANGE_BLIP_DISPLAY c2_final_blip NEITHER c2_cp = 0 ENDIF IF c2_cp < 6 IF LOCATE_CHAR_ANY_MEANS_3D scplayer c2_blip_X[c2_cp] c2_blip_Y[c2_cp] c2_blip_z[c2_cp] 3.0 3.0 3.0 FALSE AND c2_on_bike = 1 CHANGE_BLIP_DISPLAY c2_blip[c2_cp] NEITHER DELETE_CHECKPOINT c2_check_point[c2_cp] c2_cp ++ IF c2_cp < 6 CREATE_CHECKPOINT CHECKPOINT_TUBE c2_blip_x[c2_cp] c2_blip_y[c2_cp] c2_blip_z[c2_cp] c2_arrow_x[c2_cp] c2_arrow_y[c2_cp] c2_arrow_z[c2_cp] 4.0 c2_check_point[c2_cp] CHANGE_BLIP_DISPLAY c2_blip[c2_cp] BLIP_ONLY ENDIF IF c2_cp = 6 CHANGE_BLIP_DISPLAY c2_final_blip BOTH IF c2_courier_txt = 0 PRINT_NOW ( PD_28 ) 7000 1 // ~s~Now deliver the dynamite to Woozie's ~y~Courier~s~! c2_courier_txt = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_CAR_DEAD quarry_dirt_bike AND c2_jumped_fence = 0 MARK_CAR_AS_NO_LONGER_NEEDED quarry_dirt_bike IF DOES_BLIP_EXIST c2_bike_blip REMOVE_BLIP c2_bike_blip ENDIF IF c2_second_bike = 0 CLEAR_AREA 639.3412 850.4575 -43.9534 15.0 TRUE CREATE_CAR sanchez 639.3412 850.4575 -43.9534 quarry_dirt_bike SET_CAN_BURST_CAR_TYRES quarry_dirt_bike FALSE SET_CAR_HEADING quarry_dirt_bike 90.0000 ADD_BLIP_FOR_CAR quarry_dirt_bike c2_bike_blip SET_BLIP_AS_FRIENDLY c2_bike_blip TRUE c2_second_bike = 1 ELSE CLEAR_AREA 583.0051 881.9482 -45.0648 15.0 TRUE CREATE_CAR sanchez 583.0051 881.9482 -45.0648 quarry_dirt_bike SET_CAN_BURST_CAR_TYRES quarry_dirt_bike FALSE SET_CAR_HEADING quarry_dirt_bike 93.6785 ADD_BLIP_FOR_CAR quarry_dirt_bike c2_bike_blip SET_BLIP_AS_FRIENDLY c2_bike_blip TRUE c2_second_bike = 0 ENDIF IF c2_left_on_bike = 0 PRINT_NOW ( PD_34 ) 4000 1 // ~s~Find another ~b~bike ~s~and escape! ENDIF ENDIF IF NOT IS_CAR_DEAD quarry_dirt_bike AND NOT IS_CHAR_DEAD scplayer GET_CHAR_COORDINATES scplayer x y z GET_CAR_COORDINATES quarry_dirt_bike x y c2_z c2_z = c2_z - 6.0 IF z < c2_z EXPLODE_CAR quarry_dirt_bike ENDIF ENDIF ENDIF IF on_way_home > 0 IF TIMERA > 3000 AND on_way_home = 1 PRINT_NOW ( PD_22 ) 4000 1 // ~s~Get back home with the dynamite! on_way_home = 2 ENDIF IF TIMERA > 7000 AND on_way_home = 2 // Security Guards ********************************************* GOSUB cavalry_arrives on_way_home = 3 ENDIF IF on_way_home = 3 IF IS_CAR_DEAD c2_end_truck PRINT_NOW ( PD_30 ) 4000 1 // ~r~You idiot you blew up the couriers car! GOTO mission_casino2_failed ENDIF IF IS_CHAR_DEAD c2_end_guy PRINT_NOW ( PD_31 ) 4000 1 // ~r~You idiot you killed the courier! GOTO mission_casino2_failed ENDIF ENDIF IF NOT on_way_home = 4 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1030.1570 744.3469 9.7922 2.0 2.0 2.0 TRUE SET_PLAYER_CONTROL player1 OFF IF DOES_BLIP_EXIST c2_final_blip REMOVE_BLIP c2_final_blip ENDIF REPEAT 5 v IF DOES_BLIP_EXIST c2_blip[v] REMOVE_BLIP c2_blip[v] ENDIF ENDREPEAT CLEAR_PRINTS IF NOT IS_CHAR_DEAD scplayer GOSUB casino2_fade_out LVAR_INT c2_ply_car CLEAR_AREA 1023.9374 738.5938 9.8080 30.0 TRUE IF NOT IS_CAR_DEAD c2_end_truck FREEZE_CAR_POSITION c2_end_truck FALSE ENDIF IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer c2_ply_car SET_CAR_COORDINATES c2_ply_car 1025.2955 746.0016 9.8302 SET_CAR_HEADING c2_ply_car 300.0064 WARP_CHAR_FROM_CAR_TO_COORD scplayer 1028.1681 741.3518 9.7989 ELSE SET_CHAR_COORDINATES scplayer 1028.1681 741.3518 9.7989 ENDIF ENDIF IF NOT IS_CHAR_DEAD c2_end_guy CLEAR_CHAR_TASKS_IMMEDIATELY c2_end_guy SET_CHAR_COORDINATES c2_end_guy 1029.1730 740.8435 9.8018 SET_CHAR_HEADING c2_end_guy 63.6493 ENDIF SET_CHAR_HEADING scplayer 232.6414 CREATE_OBJECT dynamite 1028.9346 741.1799 9.8005 c2_cut_dynamite_A SET_OBJECT_HEADING c2_cut_dynamite_A 90.0000 SET_OBJECT_COLLISION c2_cut_dynamite_A FALSE CREATE_OBJECT dynamite 1028.9346 741.0000 9.8005 c2_cut_dynamite_B SET_OBJECT_COLLISION c2_cut_dynamite_B FALSE CREATE_OBJECT dynamite 1028.9346 741.0000 9.8005 c2_cut_dynamite_C SET_OBJECT_COLLISION c2_cut_dynamite_C FALSE ATTACH_OBJECT_TO_OBJECT c2_cut_dynamite_B c2_cut_dynamite_A 0.2 0.0 -0.2 0.0 90.0 40.0 ATTACH_OBJECT_TO_OBJECT c2_cut_dynamite_C c2_cut_dynamite_A 0.3 0.0 0.0 0.0 45.0 60.0 IF NOT IS_CHAR_DEAD c2_end_guy TASK_COMPLEX_PICKUP_OBJECT c2_end_guy c2_cut_dynamite_A ENDIF GOSUB casino2_set_camera LOAD_SCENE 1028.9346 741.1799 9.8005 SET_FIXED_CAMERA_POSITION 1026.3605 737.9733 11.3745 0.0 0.0 0.0 // Dirt Bike Route POINT_CAMERA_AT_POINT 1026.9908 738.7281 11.1933 JUMP_CUT GOSUB casino2_fade_in IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer IDLE_chat PED 1.0 FALSE FALSE FALSE FALSE -1 ENDIF PRINT_NOW ( CAS2_CA ) 4000 1 // Delivery for Woozie. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAS2_CA // Delivery for Woozie. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE PRINT_NOW ( CAS2_CB ) 4000 1 // Be careful with that... CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CAS2_CB // Be careful with that... WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_last_cut_1 ENDIF ENDWHILE GOSUB casino2_fade_out IF NOT IS_CAR_DEAD c2_end_truck DELETE_CAR c2_end_truck ENDIF CREATE_CAR manana 1032.6781 741.7072 9.8044 c2_end_truck SET_FIXED_CAMERA_POSITION 1020.4991 740.7717 14.7072 0.0 0.0 0.0 // Dirt Bike Route IF NOT IS_CAR_DEAD c2_end_truck POINT_CAMERA_AT_CAR c2_end_truck FIXED JUMP_CUT ENDIF IF NOT IS_CHAR_DEAD c2_end_guy OR NOT IS_CAR_DEAD c2_end_truck DELETE_OBJECT c2_cut_dynamite_B DELETE_OBJECT c2_cut_dynamite_C DELETE_OBJECT c2_cut_dynamite_A WARP_CHAR_INTO_CAR c2_end_guy c2_end_truck TASK_CAR_DRIVE_TO_COORD c2_end_guy c2_end_truck 1052.5677 754.0004 9.8094 25.00 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH ENDIF TIMERA = 0 WHILE TIMERA < 10 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_last_cut_1 ENDIF ENDWHILE GOSUB casino2_fade_in TIMERA = 0 WHILE TIMERA < 3000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_last_cut_1 ENDIF ENDWHILE c2_skip_the_last_cut_1: IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer ENDIF IF DOES_OBJECT_EXIST c2_cut_dynamite_A DELETE_OBJECT c2_cut_dynamite_A ENDIF IF DOES_OBJECT_EXIST c2_cut_dynamite_B DELETE_OBJECT c2_cut_dynamite_B ENDIF IF DOES_OBJECT_EXIST c2_cut_dynamite_C DELETE_OBJECT c2_cut_dynamite_C ENDIF IF NOT IS_CHAR_DEAD c2_end_guy DELETE_CHAR c2_end_guy ENDIF IF NOT IS_CAR_DEAD c2_end_truck DELETE_CAR c2_end_truck ENDIF GOSUB casino2_restore_camera ENDIF PRINT_HELP ( PD_32 ) // Visit the quarry to access the Bulldozer and Dumper truck sub-missions on_way_home = 4 TIMERA = 0 ENDIF ENDIF ENDIF IF on_way_home = 4 AND TIMERA > 4000 GOTO mission_casino2_passed ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 454.5292 804.0931 5.3702 2.0 2.0 2.0 FALSE c2_left_on_bike = 1 ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 447.3409 811.1259 5.4896 2.0 2.0 2.0 FALSE c2_left_on_bike = 0 ENDIF IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 562.4489 871.3499 -17.0245 250.0 250.0 250.0 FALSE c2_inside_quarry = 0 ELSE c2_inside_quarry = 1 ENDIF // ***************************************************************************************************** // * * // * Check if jumped fence * // * * // ***************************************************************************************************** IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 562.4489 871.3499 -17.0245 250.0 250.0 250.0 FALSE AND on_way_home = 3 AND c2_cp < 6 IF c2_jumped_fence = 0 CHANGE_BLIP_DISPLAY c2_blip[c2_cp] NEITHER CHANGE_BLIP_DISPLAY c2_bike_blip[c2_cp] NEITHER DELETE_CHECKPOINT c2_check_point[c2_cp] c2_cp = 6 CHANGE_BLIP_DISPLAY c2_final_blip BOTH IF c2_courier_txt = 0 PRINT_NOW ( PD_28 ) 4000 1 // ~s~Now deliver the dynamite to Woozie's ~y~Courier~s~! c2_courier_txt = 1 ENDIF c2_jumped_fence = 1 ENDIF ENDIF ENDWHILE GOTO mission_casino2_failed // CALLING SECURITY ************************************************************************ call_security: IF called_security = 0 IF everyone_is_fleeing = 1 PRINT ( CAS4_AD ) 4000 1 // Get away from that dynamite! ENDIF ENDIF called_security = 1 RETURN // DISPLAY PACKAGE GAMETEXT **************************************************************** display_gametext: IF t = 0 GOSUB call_security PRINT ( PD_05 ) 4000 1 // 1 stick of 4 IF NOT IS_CHAR_DEAD scplayer REPORT_MISSION_AUDIO_EVENT_AT_CHAR scplayer SOUND_PICKUP_STANDARD ENDIF // ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE ENDIF IF t = 1 PRINT_NOW ( PD_06 ) 4000 1 // 2 sticks of 4 IF NOT IS_CHAR_DEAD scplayer REPORT_MISSION_AUDIO_EVENT_AT_CHAR scplayer SOUND_PICKUP_STANDARD ENDIF // ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE ENDIF IF t = 2 PRINT_NOW ( PD_07 ) 4000 1 // 3 sticks of 4 IF NOT IS_CHAR_DEAD scplayer REPORT_MISSION_AUDIO_EVENT_AT_CHAR scplayer SOUND_PICKUP_STANDARD ENDIF // ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE ENDIF IF t = 3 PRINT_NOW ( PD_08 ) 4000 1 // 4 sticks of 4 IF NOT IS_CHAR_DEAD scplayer REPORT_MISSION_AUDIO_EVENT_AT_CHAR scplayer SOUND_PICKUP_STANDARD ENDIF // ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE TIMERA = 0 on_way_home = 1 CLEAR_ONSCREEN_TIMER c2_time_left ENDIF t ++ RETURN c2_kill_the_player: IF c2_breakpoint = 0 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 ENDIF RETURN // EVERYONE IS FLEEING THE PLAYER *************************************************** everyone_flee: IF everyone_is_fleeing = 0 everyone_is_fleeing = 1 ENDIF RETURN // PLAYER HAS SHOT AND EXPLODED THE DYNAMITE ********************************************** dyna_failed: PRINT_BIG ( M_FAIL ) 5000 1 // "Mission Failed" PRINT_NOW ( PD_09 ) 4000 1 // ~r~You blew up the dynamite. WAIT 4000 RETURN // ***************************************************************************************** // * * // * Mission Failed * // * * // ***************************************************************************************** mission_casino2_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // ***************************************************************************************** // * * // * Mission Passed * // * * // ***************************************************************************************** mission_casino2_passed: START_NEW_SCRIPT heist_mission_loop START_NEW_SCRIPT quarry_loop 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_casino_mission_counter ++ // Used to terminate this mission loop in the main script. These varibles will be set up in the main.sc REGISTER_MISSION_PASSED ( CASEEN2 ) // Used in the stats PRINT_WITH_NUMBER_BIG ( M_PASSS ) 7000 5000 1 // "Mission Passed!" //100 being the amount of cash ADD_SCORE player1 7000 // amount of cash AWARD_PLAYER_MISSION_RESPECT 15 // amount of respect PLAYER_MADE_PROGRESS 1 PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL player1 RELEASE_WEATHER FORCE_WEATHER WEATHER_SUNNY_LA REMOVE_BLIP quarry_contact_blip ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT quarryX quarryY quarryZ RADAR_SPRITE_BULLDOZER quarry_contact_blip RETURN // ***************************************************************************************** // * * // * Mission Clean-Up * // * * // ***************************************************************************************** mission_cleanup_casino2: IF player_fall_state > 0 player_fall_state = 6 ENDIF disable_all_cranes = 0 CLEAR_ONSCREEN_TIMER c2_time_left REPEAT 4 v IF DOES_BLIP_EXIST dynamite_blip[v] REMOVE_BLIP dynamite_blip[v] ENDIF ENDREPEAT REPEAT 5 v IF DOES_BLIP_EXIST c2_blip[v] REMOVE_BLIP c2_blip[v] ENDIF ENDREPEAT IF DOES_BLIP_EXIST c2_final_blip REMOVE_BLIP c2_final_blip ENDIF IF DOES_BLIP_EXIST c2_bike_blip REMOVE_BLIP c2_bike_blip ENDIF IF DOES_BLIP_EXIST c2_quarry_blip REMOVE_BLIP c2_quarry_blip ENDIF IF NOT IS_CAR_DEAD security_van_1 DELETE_CAR security_van_1 ENDIF IF NOT IS_CAR_DEAD security_van_2 DELETE_CAR security_van_2 ENDIF IF NOT IS_CAR_DEAD security_van_3 DELETE_CAR security_van_3 ENDIF IF DOES_OBJECT_EXIST cas2_gate1 SET_OBJECT_HEADING cas2_gate1 0.0 ENDIF IF DOES_OBJECT_EXIST cas2_gate2 SET_OBJECT_HEADING cas2_gate2 15.0 ENDIF IF DOES_OBJECT_EXIST c2_sign DELETE_OBJECT c2_sign ENDIF IF DOES_OBJECT_EXIST c2_sign1 DELETE_OBJECT c2_sign1 ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED BMYCON MARK_MODEL_AS_NO_LONGER_NEEDED cellphone MARK_MODEL_AS_NO_LONGER_NEEDED wmyconb MARK_MODEL_AS_NO_LONGER_NEEDED wmysgrd MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED shovel MARK_MODEL_AS_NO_LONGER_NEEDED FORKLIFT MARK_MODEL_AS_NO_LONGER_NEEDED TRIADA MARK_MODEL_AS_NO_LONGER_NEEDED manana MARK_MODEL_AS_NO_LONGER_NEEDED securica MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_MODEL_AS_NO_LONGER_NEEDED sanchez MARK_MODEL_AS_NO_LONGER_NEEDED DUMPER REMOVE_ANIMATION CARRY REMOVE_ANIMATION MISC GET_GAME_TIMER timer_mobile_start //Used to reset the mobile phone timer so it doesn't ring immediately after the mission CLEAR_WANTED_LEVEL player1 DONT_SUPPRESS_CAR_MODEL dumper RELEASE_WEATHER MISSION_HAS_FINISHED flag_player_on_mission = 0 RETURN c2_dynamite_explodes: REPEAT 4 v IF DOES_OBJECT_EXIST dynamite_pick_up[v] SWITCH v CASE 0 IF NOT IS_CHAR_DEAD quarry_worker[8] DELETE_CHAR quarry_worker[8] ENDIF IF NOT IS_CHAR_DEAD quarry_worker[9] DELETE_CHAR quarry_worker[9] ENDIF SET_FIXED_CAMERA_POSITION 656.9689 914.2382 -38.7741 0.0 0.0 0.0 // Dirt Bike Route POINT_CAMERA_AT_POINT 657.7072 914.8211 -39.1131 JUMP_CUT BREAK CASE 1 SET_FIXED_CAMERA_POSITION 578.0302 926.3607 -39.6861 0.0 0.0 0.0 // Dirt Bike Route POINT_CAMERA_AT_POINT 578.5041 927.1686 -40.0363 JUMP_CUT BREAK CASE 2 SET_FIXED_CAMERA_POSITION 543.1476 853.9489 -38.0164 0.0 0.0 0.0 // Dirt Bike Route POINT_CAMERA_AT_POINT 543.9039 853.3993 -38.3712 JUMP_CUT BREAK CASE 3 IF NOT IS_CHAR_DEAD scplayer IF NOT IS_CAR_DEAD c2_forklift AND c2_crate_dropped = 0 AND NOT IS_CHAR_IN_MODEL scplayer FORKLIFT IF DOES_OBJECT_EXIST broken_box[3] DETACH_OBJECT broken_box[3] 0.0 0.0 0.0 FALSE PLACE_OBJECT_RELATIVE_TO_CAR broken_box[3] c2_forklift 0.0 1.8 -0.6 ENDIF IF DOES_OBJECT_EXIST dynamite_pick_up[3] DETACH_OBJECT dynamite_pick_up[3] 0.0 0.0 0.0 FALSE PLACE_OBJECT_RELATIVE_TO_CAR dynamite_pick_up[3] c2_forklift 0.0 1.8 -0.6 ENDIF IF DOES_OBJECT_EXIST gun_box[3] DETACH_OBJECT gun_box[3] 0.0 0.0 0.0 FALSE PLACE_OBJECT_RELATIVE_TO_CAR gun_box[3] c2_forklift 0.0 1.8 -0.6 ENDIF IF NOT IS_CHAR_DEAD c2_intro_quarry[3] CLEAR_CHAR_TASKS_IMMEDIATELY c2_intro_quarry[3] DELETE_CHAR c2_intro_quarry[3] ENDIF DELETE_CAR c2_forklift ENDIF ENDIF GET_OBJECT_COORDINATES dynamite_pick_up[3] x y z SET_FIXED_CAMERA_POSITION 635.8651 827.8486 -34.5451 0.0 0.0 0.0 // Dirt Bike Route POINT_CAMERA_AT_POINT x y z JUMP_CUT BREAK ENDSWITCH IF DOES_OBJECT_EXIST broken_box[v] FREEZE_OBJECT_POSITION broken_box[v] TRUE ENDIF GET_OBJECT_COORDINATES dynamite_pick_up[v] x y z ADD_EXPLOSION_VARIABLE_SHAKE x y z EXPLOSION_SMALL 5.0 CREATE_FX_SYSTEM EXPLOSION_SMALL x y z TRUE c2_fx_cut[v] PLAY_AND_KILL_FX_SYSTEM c2_fx_cut[v] DELETE_OBJECT dynamite_pick_up[v] IF gun_box_broken[v] = 0 BREAK_OBJECT gun_box[v] TRUE ENDIF WAIT 2000 KILL_FX_SYSTEM c2_fx_cut[v] // SET_OBJECT_RENDER_SCORCHED broken_box[v] TRUE ENDIF ENDREPEAT RETURN // ***************************************************************************************** // * * // * Camera Control * // * * // ***************************************************************************************** kill_guys_if_in_radius: IF NOT IS_CHAR_DEAD quarry_worker[8] IF LOCATE_CHAR_ANY_MEANS_3D quarry_worker[8] 718.7523 918.5203 -19.8860 3.0 3.0 3.0 FALSE REMOVE_CHAR_ELEGANTLY quarry_worker[8] ENDIF ENDIF IF NOT IS_CHAR_DEAD quarry_worker[9] IF LOCATE_CHAR_ANY_MEANS_3D quarry_worker[9] 718.7523 918.5203 -19.8860 3.0 3.0 3.0 FALSE REMOVE_CHAR_ELEGANTLY quarry_worker[9] ENDIF ENDIF RETURN casino2_set_camera: CLEAR_PRINTS SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 TRUE RETURN casino2_restore_camera: CLEAR_PRINTS SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT SET_EVERYONE_IGNORE_PLAYER player1 FALSE // CLEAR_CUTSCENE RETURN // ***************************************************************************************** // * * // * Fades * // * * // ***************************************************************************************** casino2_fade_out: DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS RETURN casino2_fade_in: DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN // ***************************************************************************************** // * * // * Keyboard shortcuts * // * * // ***************************************************************************************** casino2_keys: LVAR_INT c2_dummy_car IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_Q IF NOT IS_CAR_DEAD c2_forklift ATTACH_OBJECT_TO_CAR broken_box[3] c2_forklift -0.4 0.0 0.0 0.0 90.0 90.0 ATTACH_OBJECT_TO_CAR dynamite_pick_up[3] c2_forklift 0.0 0.0 0.0 0.0 90.0 90.0 ATTACH_OBJECT_TO_CAR gun_box[3] c2_forklift -0.4 0.0 0.0 0.0 90.0 90.0 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B REQUEST_MODEL TRIADA REQUEST_MODEL manana REQUEST_ANIMATION CARRY WHILE NOT HAS_MODEL_LOADED TRIADA OR NOT HAS_MODEL_LOADED manana OR NOT HAS_ANIMATION_LOADED CARRY WAIT 0 ENDWHILE CLEAR_AREA 1032.6781 741.7072 9.8044 10.0 TRUE CREATE_CAR manana 1032.6781 741.7072 9.8044 c2_end_truck LOCK_CAR_DOORS c2_end_truck CARLOCK_LOCKED FREEZE_CAR_POSITION c2_end_truck TRUE POP_CAR_BOOT c2_end_truck SET_CAR_HEADING c2_end_truck 292.6477 CREATE_CHAR PEDTYPE_CIVMALE TRIADA 1029.1730 740.8435 9.8018 c2_end_guy SET_CHAR_HEADING c2_end_guy 63.6493 SET_CHAR_SUFFERS_CRITICAL_HITS c2_end_guy FALSE SET_CHAR_NEVER_TARGETTED c2_end_guy TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER c2_end_guy TRUE SET_CHAR_DECISION_MAKER c2_end_guy c2_decision_none IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer 1010.2213 736.1201 9.8047 SET_CHAR_HEADING scplayer 275.6392 on_way_home = 3 c2_cp = 6 c2_jumped_fence = 1 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_W IF NOT IS_CAR_DEAD c2_forklift ATTACH_OBJECT_TO_CAR broken_box[3] c2_forklift -0.6 0.0 0.0 0.0 90.0 90.0 ATTACH_OBJECT_TO_CAR dynamite_pick_up[3] c2_forklift 0.0 0.5 0.0 0.0 90.0 90.0 ATTACH_OBJECT_TO_CAR gun_box[3] c2_forklift -0.6 0.0 0.0 0.0 90.0 90.0 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_E IF NOT IS_CAR_DEAD c2_forklift ATTACH_OBJECT_TO_CAR broken_box[3] c2_forklift -1.0 0.0 0.0 0.0 90.0 90.0 ATTACH_OBJECT_TO_CAR dynamite_pick_up[3] c2_forklift 0.0 -1.0 0.0 0.0 90.0 90.0 ATTACH_OBJECT_TO_CAR gun_box[3] c2_forklift -1.0 0.0 0.0 0.0 90.0 90.0 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_P c2_time_left = 25000 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_Y IF NOT IS_CHAR_DEAD scplayer CLEAR_PRINTS SET_CHAR_COORDINATES scplayer 820.8088 847.8527 10.0376 SET_CHAR_HEADING scplayer 114.6715 SET_CAMERA_BEHIND_PLAYER ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer c2_dummy_car SET_CAR_COORDINATES c2_dummy_car 495.8263 820.5667 -9.8729 SET_CAR_HEADING c2_dummy_car 30.4329 SET_CAMERA_BEHIND_PLAYER ENDIF ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F CREATE_CAR securica 428.4801 840.5771 5.5835 security_van_3 SET_CAR_HEADING security_van_3 28.5847 MARK_MODEL_AS_NO_LONGER_NEEDED securica CREATE_CHAR_INSIDE_CAR security_van_3 PEDTYPE_MISSION2 wmysgrd security_guards[4] CREATE_CHAR_AS_PASSENGER security_van_3 PEDTYPE_MISSION2 wmysgrd 0 security_guards[5] MARK_MODEL_AS_NO_LONGER_NEEDED wmysgrd ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer CLEAR_PRINTS SET_CHAR_COORDINATES scplayer 658.1340 947.6506 -35.8939 SET_CHAR_HEADING scplayer 194.3468 SET_CAMERA_BEHIND_PLAYER ENDIF ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H REQUEST_MODEL TRIADA REQUEST_MODEL manana WHILE NOT HAS_MODEL_LOADED TRIADA OR NOT HAS_MODEL_LOADED manana WAIT 0 ENDWHILE CLEAR_AREA 1032.6781 741.7072 9.8044 10.0 TRUE CREATE_CAR manana 1032.6781 741.7072 9.8044 c2_end_truck LOCK_CAR_DOORS c2_end_truck CARLOCK_LOCKED POP_CAR_BOOT c2_end_truck SET_CAR_HEADING c2_end_truck 292.6477 CREATE_CHAR PEDTYPE_CIVMALE TRIADA 1029.1730 740.8435 9.8018 c2_end_guy SET_CHAR_HEADING c2_end_guy 63.6493 GOSUB casino2_fade_out CLEAR_AREA 1032.6781 741.7072 9.8044 10.0 TRUE IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1028.1681 741.3518 9.7989 ELSE SET_CHAR_COORDINATES scplayer 1028.1681 741.3518 9.7989 ENDIF IF NOT IS_CHAR_DEAD c2_end_guy SET_CHAR_COORDINATES c2_end_guy 1029.1730 740.8435 9.8018 SET_CHAR_HEADING c2_end_guy 63.6493 ENDIF SET_CHAR_HEADING scplayer 232.6414 //REQUEST_MODEL dynamite REQUEST_ANIMATION CARRY // WHILE NOT HAS_MODEL_LOADED dynamite WHILE NOT HAS_ANIMATION_LOADED CARRY WAIT 0 ENDWHILE CREATE_OBJECT dynamite 1028.9346 741.1799 9.8005 c2_cut_dynamite_A SET_OBJECT_HEADING c2_cut_dynamite_A 90.0000 SET_OBJECT_COLLISION c2_cut_dynamite_A FALSE CREATE_OBJECT dynamite 1028.9346 741.0000 9.8005 c2_cut_dynamite_B SET_OBJECT_COLLISION c2_cut_dynamite_B FALSE CREATE_OBJECT dynamite 1028.9346 741.0000 9.8005 c2_cut_dynamite_C SET_OBJECT_COLLISION c2_cut_dynamite_C FALSE ATTACH_OBJECT_TO_OBJECT c2_cut_dynamite_B c2_cut_dynamite_A 0.2 0.0 -0.2 0.0 90.0 40.0 ATTACH_OBJECT_TO_OBJECT c2_cut_dynamite_C c2_cut_dynamite_A 0.3 0.0 0.0 0.0 45.0 60.0 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF NOT IS_CHAR_DEAD c2_end_guy TASK_COMPLEX_PICKUP_OBJECT c2_end_guy c2_cut_dynamite_A ENDIF GOSUB casino2_set_camera SET_FIXED_CAMERA_POSITION 1026.3605 737.9733 11.3745 0.0 0.0 0.0 // Dirt Bike Route POINT_CAMERA_AT_POINT 1026.9908 738.7281 11.1933 JUMP_CUT GOSUB casino2_fade_in IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer IDLE_chat PED 1.0 FALSE FALSE FALSE FALSE -1 ENDIF PRINT_NOW ( PD_32 ) 4000 1 // Carl : Delivery for Woozie, don't drop it. WAIT 1000 TIMERA = 0 WHILE TIMERA < 3000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_last_cut_11 ENDIF ENDWHILE GOSUB casino2_fade_out IF NOT IS_CAR_DEAD c2_end_truck DELETE_CAR c2_end_truck ENDIF CREATE_CAR manana 1032.6781 741.7072 9.8044 c2_end_truck SET_FIXED_CAMERA_POSITION 1020.4991 740.7717 14.7072 0.0 0.0 0.0 // Dirt Bike Route IF NOT IS_CAR_DEAD c2_end_truck POINT_CAMERA_AT_CAR c2_end_truck FIXED JUMP_CUT ENDIF IF NOT IS_CHAR_DEAD c2_end_guy OR NOT IS_CAR_DEAD c2_end_truck DELETE_OBJECT c2_cut_dynamite_A DELETE_OBJECT c2_cut_dynamite_B DELETE_OBJECT c2_cut_dynamite_C WARP_CHAR_INTO_CAR c2_end_guy c2_end_truck TASK_CAR_DRIVE_TO_COORD c2_end_guy c2_end_truck 1065.9009 775.0016 9.8227 25.00 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH ENDIF TIMERA = 0 WHILE TIMERA < 10 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_last_cut_1 ENDIF ENDWHILE GOSUB casino2_fade_in TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO c2_skip_the_last_cut_1 ENDIF ENDWHILE c2_skip_the_last_cut_11: IF NOT IS_CHAR_DEAD c2_end_guy DELETE_CHAR c2_end_guy ENDIF IF NOT IS_CAR_DEAD c2_end_truck DELETE_CAR c2_end_truck ENDIF GOSUB casino2_restore_camera ENDIF RETURN c2_load_sample: CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 c2_audio c2_playing = 0 RETURN c2_play_sample: IF HAS_MISSION_AUDIO_LOADED 1 AND c2_playing = 0 PLAY_MISSION_AUDIO 1 IF NOT $c2_print = DUMMY PRINT_NOW ( $c2_print ) 10000 1 ENDIF c2_playing = 1 ENDIF IF HAS_MISSION_AUDIO_FINISHED 1 AND c2_playing = 1 CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT $c2_print c2_playing = 2 ENDIF RETURN c2_load_sample_3: CLEAR_MISSION_AUDIO 3 LOAD_MISSION_AUDIO 3 c2_audio_3 c2_playing_3 = 0 RETURN c2_play_sample_3: IF HAS_MISSION_AUDIO_LOADED 3 AND c2_playing_3 = 0 SET_MISSION_AUDIO_POSITION 3 591.0910 877.4084 -43.4973 PLAY_MISSION_AUDIO 3 c2_playing_3 = 1 ENDIF IF HAS_MISSION_AUDIO_FINISHED 3 AND c2_playing_3 = 1 CLEAR_MISSION_AUDIO 3 c2_playing_3 = 2 ENDIF RETURN } /* {---------------------------------------CASINO2--------------------------------------------} [PD_01:CASINO2] Enter the Quarry and steal the dynamite. [PD_02:CASINO2] You'll need something heavy to smash this dynamite crate. [PD_05:CASINO2] 1 stick of 4 [PD_06:CASINO2] 2 sticks of 4 [PD_07:CASINO2] 3 sticks of 4 [PD_08:CASINO2] 4 sticks of 4 [PD_09:CASINO2] ~r~You blew up the dynamite. [PD_10:CASINO2] Security is blocking the exit. [PD_11:CASINO2] ~s~Use the ~b~Dirt bike ~s~and find another way out! [PD_12:CASINO2] ~s~Now collect the ~r~Dynamite~s~! [PD_16:CASINO2] ~s~Go to the ~y~Quarry~s~. [PD_17:CASINO2] ~s~Press the ~o~ button to drop the crate [PD_18:CASINO2] ~r~The bike was destroyed! [PD_19:CASINO2] ~r~The dynamite has been destroyed! [PD_20:CASINO2] The dynamite is rigged to blow! [PD_21:CASINO2] Get it before the workers destroy it. [PD_22:CASINO2] ~s~Get back home with the dynamite! [PD_23:CASINO2] ~s~Follow the ~y~Arrows ~s~to escape! [PD_25:CASINO2] Detonation : [PD_26:CASINO2] ~s~Get the ~g~Dynamite ~s~before the timer runs out and it's detonated. [PD_27:CASINO2] You'll need something heavy to smash those crates! [PD_28:CASINO2] ~s~Now deliver the dynamite to Woozie's ~y~Courier~s~! [PD_29:CASINO2] ~s~Pick up the ~r~Dynamite~s~! [PD_30:CASINO2] ~r~You idiot you blew up the couriers car! [PD_31:CASINO2] ~r~You idiot you killed the courier! [PD_32:CASINO2] Carl : Delivery for Woozie, don't drop it. */ MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* Casino 3 ****************************************** // ************************************ Fake Chips ***************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME CASINO3 // Mission start stuff GOSUB mission_start_casino3 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_casino3_failed ENDIF GOSUB mission_cleanup_casino3 MISSION_END { // Variables for mission LVAR_INT ca3_wantedlevel LVAR_INT ca3_visible //cutscene stuff LVAR_INT ca3_ctskip_needed //LVAR_INT ca3_cutscene_section //Mission blips LVAR_INT ca3_factoryB //LVAR_INT ca3_plvanB //LVAR_INT ca3_gate1B ca3_gate2B LVAR_INT ca3_bossB LVAR_INT ca3_exitB LVAR_INT ca3_machineblip[11] LVAR_INT temp_fx LVAR_INT ca3_temp_int //Condition flags LVAR_INT ca3_gotplvan LVAR_INT ca3_blip1swap LVAR_INT ca3_BlowUpMachines LVAR_INT ca3_gatereopened //Vehicles LVAR_INT ca3_parked_car LVAR_INT ca3_mafia_car LVAR_INT ca3_forklift1 LVAR_INT ca3_forklift2 LVAR_INT ca3_forklift3 LVAR_INT ca3_forklift4 LVAR_INT ca3_truck LVAR_INT ca3_pony LVAR_INT ca3_admiral1 LVAR_INT ca3_admiral2 //Peds LVAR_INT ca3_wuzi LVAR_INT ca3_wuzidriver LVAR_INT ca3_wuzicar LVAR_INT ca3_plvanD LVAR_INT ca3_gate1P LVAR_INT ca3_gate2P LVAR_INT ca3_goondm //decision maker LVAR_INT ca3_forkie1P LVAR_INT ca3_forkie2P LVAR_INT ca3_forkie3 LVAR_INT ca3_forkie4 LVAR_INT ca3_forkie1seq LVAR_INT ca3_forkie2seq LVAR_INT ca3_bossP LVAR_INT ca3_goon1P LVAR_INT ca3_goon2P LVAR_INT ca3_goon3P LVAR_INT ca3_goon4P LVAR_INT ca3_goon5P LVAR_INT ca3_goon6P LVAR_INT ca3_contextgoon LVAR_INT ca3_spottedgoon LVAR_INT ca3_foreman1 LVAR_INT ca3_foremangroup LVAR_INT ca3_CheckPlayerForeman LVAR_INT ca3_foremanseq LVAR_INT ca3_bossrammy LVAR_INT ca3_bossinit //Objects LVAR_INT ca3_gateO LVAR_INT ca3_gateswitchO LVAR_INT ca3_portakabin LVAR_INT ca3_cutbox LVAR_INT ca3_fire1 LVAR_INT ca3_fire2 LVAR_INT ca3_fire3 LVAR_INT ca3_fire4 LVAR_INT ca3_fire5 LVAR_INT ca3_fire6 LVAR_INT ca3_exting LVAR_INT ca3_rcontainer LVAR_INT ca3_rcontainer2 LVAR_INT ca3_block1 LVAR_INT ca3_block2 LVAR_INT ca3_block3 LVAR_INT ca3_machine1 LVAR_INT ca3_machine2 LVAR_INT ca3_machine3 LVAR_INT ca3_machine4 LVAR_INT ca3_machine5 LVAR_INT ca3_machine6 LVAR_INT ca3_MachinesDestroyed LVAR_INT ca3_increment1 LVAR_INT ca3_increment2 LVAR_INT ca3_increment3 LVAR_INT ca3_increment4 LVAR_INT ca3_increment5 LVAR_INT ca3_increment6 LVAR_INT ca3_increment7 LVAR_FLOAT ca3_machineX LVAR_FLOAT ca3_machineY LVAR_FLOAT ca3_machineZ //Misc LVAR_INT ca3_g2seq LVAR_INT ca3_g1seq LVAR_INT ca3_g3seq LVAR_INT ca3_bossseq LVAR_INT ca3_bidleseq LVAR_INT ca3_gate1seq LVAR_INT ca3_gate2seq LVAR_INT ca3_cgseq LVAR_INT ca3_sgseq LVAR_INT ca3_gate1cutseq LVAR_INT ca3_gate2cutseq LVAR_FLOAT ca3_r1z LVAR_FLOAT ca3_r2z /* LVAR_INT ca3_bomb1placed LVAR_INT ca3_bomb2placed LVAR_INT ca3_bomb3placed VAR_INT ca3_detonation VAR_INT ca3_suspicion */ LVAR_INT ca3_CheckMachineStatus LVAR_INT ca3_test LVAR_INT ca3_driverflee LVAR_INT ca3_setsequences LVAR_INT ca3_forkout1 LVAR_INT ca3_forkout2 LVAR_INT ca3_testcam LVAR_INT ca3_goon1proxim LVAR_INT ca3_BeenSpotted LVAR_INT ca3_Cover_Blown_Cut LVAR_INT ca3_forktog LVAR_INT ca3_cutfork LVAR_INT ca3_contextcut LVAR_INT ca3_contextcut2 LVAR_INT ca3_contextskip LVAR_INT ca3_contextskip2 LVAR_INT ca3_finalskip /* LVAR_FLOAT ca3_x LVAR_FLOAT ca3_y LVAR_FLOAT ca3_z */ LVAR_INT ca3_keypadtest LVAR_INT ca3_animplaying //VAR_INT ca3_foremanhealth LVAR_INT ca3_machine1damage LVAR_INT ca3_machine2damage LVAR_INT ca3_machine3damage LVAR_INT ca3_machine4damage LVAR_INT ca3_machine5damage LVAR_INT ca3_machine6damage //new door //LVAR_INT fourdragons_door // in initial.sc //new sequences LVAR_INT ca3_playerseq LVAR_INT ca3_forkie3leaveseq LVAR_INT ca3_highseq LVAR_INT ca3_cutfix LVAR_INT shoot_fix LVAR_INT ca3_skip //backup guys LVAR_INT ca3_greaser1 ca3_greaser2 ca3_greaser3 LVAR_INT ca3_greaser1seq ca3_greaser2seq ca3_greaser3seq LVAR_INT ca3_backupdriver ca3_backupdriveby ca3_backup1 ca3_backup2 LVAR_INT ca3_backupdriverseq ca3_backup1seq ca3_backup2seq LVAR_INT ca3_backupcar LVAR_INT ca3_begingrease LVAR_INT ca3_beginbackup //Dialogue and audio variables LVAR_INT ca3_dialogue ca3_audio_char LVAR_INT ca3_text_timer_diff ca3_text_timer_end ca3_text_timer_start LVAR_TEXT_LABEL ca3_text[15] LVAR_INT ca3_audio[15] ca3_audio_slot ca3_alt_slot ca3_counter ca3_ahead_counter ca3_audio_playing ca3_audio_underway LVAR_INT ca3_convo_underway ca3_convo_counter ca3_random //ca3_leftcar_counter ca3_backcar_counter ca3_ganghire_counter //LVAR_INT ca3_driveby_counter ca3_cut_counter LVAR_INT ca3_splitfix // **************************************** Mission Start ********************************** mission_start_casino3: REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT CASINO3 flag_player_on_mission = 1 WAIT 0 // ****************************************START OF CUTSCENE******************************** SET_AREA_VISIBLE 11 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2016.4222 1017.1024 10.0 //TRIAD CASINO SET_CHAR_COORDINATES scplayer 2027.3912 1008.0874 9.8203 //2024.8704 1008.6201 9.8127 SET_CHAR_HEADING scplayer 297.1696 //342.8127 LOAD_CUTSCENE CAS_3 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE //CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY ca3_goondm //SET_PLAYER_CONTROL player1 ON // ****************************************END OF CUTSCENE********************************** WAIT 0 SET_FADING_COLOUR 0 0 0 //WAIT 500 //DO_FADE 500 FADE_IN // request models //LOAD_SPECIAL_CHARACTER 1 WUZIMU REQUEST_MODEL BRAVURA REQUEST_MODEL ADMIRAL REQUEST_MODEL wmymech REQUEST_MODEL wmymech REQUEST_MODEL BAT REQUEST_MODEL COLT45 REQUEST_MODEL shotgspa REQUEST_MODEL MICRO_UZI REQUEST_MODEL VMAFF1 REQUEST_MODEL VMAFF2 REQUEST_MODEL VMAFF3 REQUEST_MODEL VMAFF4 REQUEST_MODEL FORKLIFT LOAD_ALL_MODELS_NOW //REQUEST_MODEL LINERUN //REQUEST_MODEL PETROTR WHILE NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED BRAVURA WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED wmymech OR NOT HAS_MODEL_LOADED VMAFF1 OR NOT HAS_MODEL_LOADED VMAFF2 OR NOT HAS_MODEL_LOADED shotgspa OR NOT HAS_MODEL_LOADED MICRO_UZI WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED FORKLIFT OR NOT HAS_MODEL_LOADED VMAFF4 OR NOT HAS_MODEL_LOADED VMAFF4 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED wmymech OR NOT HAS_MODEL_LOADED BAT OR NOT HAS_MODEL_LOADED ADMIRAL WAIT 0 ENDWHILE LOAD_SCENE 2031.1681 1030.9177 9.8130 //WAIT 500 //RESTORE_CAMERA_JUMPCUT //SET_PLAYER_CONTROL player1 ON // ************************************ Declare Variables ********************************* temp_fx = 99 ca3_begingrease = 0 ca3_beginbackup = 0 ca3_ctskip_needed = 0 ca3_gotplvan = 5 ca3_blip1swap = 0 ca3_BlowUpMachines = 0//to test end use 8 ca3_MachinesDestroyed = 0 ca3_test = 0 ca3_driverflee = 0 ca3_gatereopened = 0 ca3_setsequences = 0 ca3_forkout1 = 0 ca3_forkout2 = 0 ca3_testcam = 1 ca3_CheckMachineStatus = 0 ca3_CheckPlayerForeman = 0 ca3_bossrammy = 0 ca3_bossinit = 0 ca3_increment1 = 0 ca3_BeenSpotted = 0 ca3_forktog = 0 ca3_cutfork = 0 ca3_contextcut = 0 ca3_contextskip = 0 ca3_contextcut2 = 0 ca3_contextskip2 = 0 ca3_ctskip_needed = 0 ca3_finalskip = 0 ca3_increment5 = 0 ca3_increment7 = 0 ca3_cutfix = 0 shoot_fix = 0 ca3_splitfix = 0 ca3_skip = 1 // want to setup skip // ---- Dialogue Flags ca3_audio_slot = 1 ca3_alt_slot = 2 ca3_counter = 0 ca3_ahead_counter = 1 ca3_audio_playing = 0 ca3_audio_underway = 0 //Dialogue text $ca3_text[1] = CAS3_AA//Hey, who's this character? Looks like a cop to me! $ca3_text[2] = CAS3_AB//We better go warn the boss. $ca3_text[3] = CAS3_AC//Hey, watch the car, I just got this baby resprayed! $ca3_text[4] = CAS3_AD//What? He must be a fed! Let's give him a proper Sindacco welcome! $ca3_text[5] = CAS3_BA//What's going on? $ca3_text[6] = CAS3_BB//Someone's got a fucking deathwish if they're starting trouble 'round here! $ca3_text[7] = CAS3_BC//Get the boys ready! Production line's gotta keep rolling! $ca3_text[8] = CAS3_BD//Hey, who's this prick? $ca3_text[9] = CAS3_BE//Somebody take care of this joker! $ca3_text[10] = CAS3_CA// Hey Carl, How'd it go? $ca3_text[11] = CAS3_CB// Tell Woozie, we'll be getting no more trouble $ca3_text[12] = CAS3_CC// with counterfeit chips. //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //$ca3_text[10] = CAS3_?? // Will be cutscene end stuff back at the Four Dragons casino //Dialogue audio $ca3_audio[1] = SOUND_CAS3_AA//Hey, who's this character? Looks like a cop to me! $ca3_audio[2] = SOUND_CAS3_AB//We better go warn the boss. $ca3_audio[3] = SOUND_CAS3_AC//Hey, watch the car, I just got this baby resprayed! $ca3_audio[4] = SOUND_CAS3_AD//What? He must be a fed! Let's give him a proper Sindacco welcome! $ca3_audio[5] = SOUND_CAS3_BA//What's going on? $ca3_audio[6] = SOUND_CAS3_BB//Someone's got a fucking deathwish if they're starting trouble 'round here! $ca3_audio[7] = SOUND_CAS3_BC//Get the boys ready! Production line's gotta keep rolling! $ca3_audio[8] = SOUND_CAS3_BD//Hey, who's this prick? $ca3_audio[9] = SOUND_CAS3_BE//Somebody take care of this joker! $ca3_audio[10] = SOUND_CAS3_CA// Hey Carl, How'd it go? $ca3_audio[11] = SOUND_CAS3_CB// Tell Woozie, we'll be getting no more trouble with counterfeit chips. $ca3_audio[12] = SOUND_CAS3_CC// with counterfeit chips. //$ca3_text[10] = CAS3_?? // Will be cutscene end stuff back at the Four Dragons casino GET_MAX_WANTED_LEVEL ca3_wantedlevel // **************************************************************************************** //Gate to be manipulated //CREATE_OBJECT_NO_OFFSET shutter_vegas 1055.629 2087.67 12.469 ca3_gateO //Door for casino3.sc in initial.sc //VAR_INT ca3_loadingbay //CREATE_OBJECT_NO_OFFSET shutter_vegas 1055.629 2087.67 12.469 ca3_loadingbay //DONT_REMOVE_OBJECT ca3_loadingbay IF ca3_blowupmachines = -13 CREATE_CAR ADMIRAL 1029.8561 2142.8579 9.8130 ca3_backupdriveby ENDIF //LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY ca3_goondm // SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 //CREATE_OBJECT_NO_OFFSET trdcsgrgdoor_lvs 1903.383 967.82 11.438 fourdragons_door // 11.438Safe room door SET_OBJECT_COLLISION fourdragons_door TRUE //SET_OBJECT_HEADING fourdragons_door 0.0 CREATE_CAR BRAVURA 2014.7196 1035.2380 9.8127 ca3_parked_car SET_CAR_HEADING ca3_parked_car 1.0755 //180 CHANGE_CAR_COLOUR ca3_parked_car 10 2 CREATE_CAR ADMIRAL 1044.2715 2096.7136 9.8130 ca3_mafia_car SET_CAR_PROOFS ca3_mafia_car FALSE FALSE TRUE FALSE FALSE // explosion proof //CREATE_CAR ADMIRAL 1029.6315 2129.3684 9.8130 ca3_mafia_car SET_CAR_HEADING ca3_mafia_car 27.1148 CHANGE_CAR_COLOUR ca3_mafia_car 2 1 //OPEN_CAR_DOOR ca3_mafia_car FRONT_LEFT_DOOR //CUSTOM_PLATE_FOR_NEXT_CAR ADMIRAL G1RUYHUN //CREATE_CAR ADMIRAL 1029.8561 2142.8579 9.8130 ca3_backupdriveby //SET_CAR_HEADING ca3_backupdriveby 205.1437 //CHANGE_CAR_COLOUR ca3_backupdriveby 123 10 //SET_CAR_PROOFS ca3_backupdriveby TRUE TRUE TRUE TRUE TRUE //LOCK_CAR_DOORS ca3_backupdriveby CARLOCK_LOCKOUT_PLAYER_ONLY // was mission2 pedtype //FREEZE_CAR_POSITION ca3_backupdriveby TRUE //SET_CAN_BURST_CAR_TYRES ca3_backupdriveby FALSE //CREATE_CAR FORKLIFT 1083.7725 2113.3379 9.8203 ca3_forklift1 //SET_CAR_HEADING ca3_forklift1 138.0755 CREATE_CAR FORKLIFT 1063.8870 2134.7241 9.8203 ca3_forklift2 SET_CAR_HEADING ca3_forklift2 252.0755 CREATE_CAR FORKLIFT 1060.1465 2083.9863 9.8203 ca3_forklift3 SET_CAR_HEADING ca3_forklift3 233.609//53.2609 CREATE_CHAR_INSIDE_CAR ca3_forklift3 PEDTYPE_CIVMALE wmymech ca3_forkie3 GIVE_WEAPON_TO_CHAR ca3_forkie3 WEAPONTYPE_MICRO_UZI 2000 SET_CHAR_CAN_BE_SHOT_IN_VEHICLE ca3_forkie3 TRUE MARK_MODEL_AS_NO_LONGER_NEEDED BRAVURA MARK_MODEL_AS_NO_LONGER_NEEDED FORKLIFT CREATE_CHAR_INSIDE_CAR ca3_mafia_car PEDTYPE_MISSION1 VMAFF1 ca3_gate1P // long hair //CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 1029.5271 2124.9849 9.820 ca3_gate1P GIVE_WEAPON_TO_CHAR ca3_gate1P WEAPONTYPE_PISTOL 2000 SET_CHAR_HEADING ca3_gate1P 56.7240 SET_CHAR_DECISION_MAKER ca3_gate1P ca3_goondm SET_CHAR_CAN_BE_SHOT_IN_VEHICLE ca3_gate1P FALSE CREATE_CHAR_AS_PASSENGER ca3_mafia_car PEDTYPE_MISSION1 VMAFF2 0 ca3_gate2P // Paulie GIVE_WEAPON_TO_CHAR ca3_gate2P WEAPONTYPE_PISTOL 2000 SET_CHAR_HEADING ca3_gate2P 148.0260 SET_CHAR_DECISION_MAKER ca3_gate2P ca3_goondm SET_CHAR_CAN_BE_SHOT_IN_VEHICLE ca3_gate2P FALSE CREATE_CHAR PEDTYPE_MISSION1 VMAFF4 1064.2126 2140.6936 9.8203 ca3_goon1P GIVE_WEAPON_TO_CHAR ca3_goon1P WEAPONTYPE_MICRO_UZI 2000 // brown suited guy SET_CHAR_HEADING ca3_goon1P 156.0958 SET_CHAR_DECISION_MAKER ca3_goon1P ca3_goondm CREATE_CHAR PEDTYPE_MISSION1 VMAFF2 1093.0680 2107.3406 9.8203 ca3_goon2P GIVE_WEAPON_TO_CHAR ca3_goon2P WEAPONTYPE_PISTOL 2000 SET_CHAR_HEADING ca3_goon2P 115.2591 SET_CHAR_DECISION_MAKER ca3_goon2P ca3_goondm CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 1092.0822 2116.7922 14.3504 ca3_goon3P GIVE_WEAPON_TO_CHAR ca3_goon3P WEAPONTYPE_PISTOL 2000 //long hair guy on stairs SET_CHAR_HEADING ca3_goon3P 115.4090 SET_CHAR_DECISION_MAKER ca3_goon3P ca3_goondm CREATE_CHAR PEDTYPE_MISSION1 VMAFF3 1083.6875 2121.5989 14.3504 ca3_bossP GIVE_WEAPON_TO_CHAR ca3_bossP WEAPONTYPE_SPAS12_SHOTGUN 2000 SET_CHAR_DECISION_MAKER ca3_bossP ca3_goondm ADD_ARMOUR_TO_CHAR ca3_bossP 50 SET_CHAR_HEADING ca3_bossP 115.6952 CREATE_CHAR PEDTYPE_MISSION1 wmymech 1056.6547 2108.5508 9.8203 ca3_forkie1P //GIVE_WEAPON_TO_CHAR ca3_forkie1P WEAPONTYPE_MICRO_UZI 2000 SET_CHAR_HEADING ca3_forkie1P 186.9465 SET_CHAR_DECISION_MAKER ca3_forkie1P ca3_goondm SET_CHAR_CAN_BE_SHOT_IN_VEHICLE ca3_forkie1P TRUE CREATE_CHAR PEDTYPE_MISSION1 wmymech 1092.6066 2116.9124 9.8203 ca3_forkie2P //GIVE_WEAPON_TO_CHAR ca3_forkie2P WEAPONTYPE_UZI 2000 SET_CHAR_HEADING ca3_forkie2P 116.0465 SET_CHAR_DECISION_MAKER ca3_forkie2P ca3_goondm SET_CHAR_CAN_BE_SHOT_IN_VEHICLE ca3_forkie2P TRUE /* CREATE_CHAR PEDTYPE_MISSION1 VMAFF4 1086.8689 2078.6096 14.3504 ca3_foreman1 SET_CHAR_HEADING ca3_foreman1 86.4201 GIVE_WEAPON_TO_CHAR ca3_foreman1 WEAPONTYPE_PISTOL 2000 SET_CHAR_DECISION_MAKER ca3_foreman1 ca3_goondm CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 1086.4199 2077.2915 14.3504 ca3_contextgoon //cutscene fuck up SET_CHAR_HEADING ca3_contextgoon 74.4201 GIVE_WEAPON_TO_CHAR ca3_contextgoon WEAPONTYPE_MICRO_UZI 2000 SET_CHAR_DECISION_MAKER ca3_contextgoon ca3_goondm Moved to new area for bug fix. */ LVAR_INT ca3_fx[9] LVAR_INT ca3_machine[9] LVAR_INT ca3_machineinnards[9] CREATE_OBJECT_NO_OFFSET cj_chip_maker_bits 1074.9028 2139.6112 10.7203 ca3_machine[0] SET_OBJECT_PROOFS ca3_machine[0] TRUE TRUE TRUE TRUE TRUE CREATE_OBJECT_NO_OFFSET cj_chip_maker 1074.9028 2139.6112 10.7203 ca3_machineinnards[0] SET_OBJECT_COLLISION ca3_machine[0] TRUE //SET_OBJECT_DYNAMIC ca3_machine[0] TRUE SET_OBJECT_ROTATION ca3_machine[0] 0.0 0.0 180.0 SET_OBJECT_ROTATION ca3_machineinnards[0] 0.0 0.0 180.0 CREATE_OBJECT_NO_OFFSET cj_chip_maker_bits 1069.4847 2139.6112 10.7203 ca3_machine[1] SET_OBJECT_PROOFS ca3_machine[1] TRUE TRUE TRUE TRUE TRUE CREATE_OBJECT_NO_OFFSET cj_chip_maker 1069.4847 2139.6112 10.7203 ca3_machineinnards[1] SET_OBJECT_COLLISION ca3_machine[1] TRUE //SET_OBJECT_DYNAMIC ca3_machine[1] TRUE SET_OBJECT_ROTATION ca3_machine[1] 0.0 0.0 180.0 SET_OBJECT_ROTATION ca3_machineinnards[1] 0.0 0.0 180.0 CREATE_OBJECT_NO_OFFSET cj_chip_maker_bits 1062.4562 2139.6112 10.7203 ca3_machine[2] SET_OBJECT_PROOFS ca3_machine[2] TRUE TRUE TRUE TRUE TRUE CREATE_OBJECT_NO_OFFSET cj_chip_maker 1062.4562 2139.6112 10.7203 ca3_machineinnards[2] SET_OBJECT_COLLISION ca3_machine[2] TRUE //SET_OBJECT_DYNAMIC ca3_machine[2] TRUE SET_OBJECT_ROTATION ca3_machine[2] 0.0 0.0 180.0 SET_OBJECT_ROTATION ca3_machineinnards[2] 0.0 0.0 180.0 CREATE_OBJECT_NO_OFFSET cj_chip_maker_bits 1081.2682 2123.6858 10.7203 ca3_machine[3] SET_OBJECT_PROOFS ca3_machine[3] TRUE TRUE TRUE TRUE TRUE CREATE_OBJECT_NO_OFFSET cj_chip_maker 1081.2682 2123.6858 10.7203 ca3_machineinnards[3] SET_OBJECT_ROTATION ca3_machine[3] 0.0 0.0 90.0 SET_OBJECT_ROTATION ca3_machineinnards[3] 0.0 0.0 90.0 SET_OBJECT_COLLISION ca3_machine[3] TRUE //SET_OBJECT_DYNAMIC ca3_machine[6] TRUE CREATE_OBJECT_NO_OFFSET cj_chip_maker_bits 1081.2365 2130.6812 10.7203 ca3_machine[4] SET_OBJECT_PROOFS ca3_machine[4] TRUE TRUE TRUE TRUE TRUE CREATE_OBJECT_NO_OFFSET cj_chip_maker 1081.2365 2130.6812 10.7203 ca3_machineinnards[4] SET_OBJECT_ROTATION ca3_machine[4] 0.0 0.0 90.0 SET_OBJECT_ROTATION ca3_machineinnards[4] 0.0 0.0 90.0 SET_OBJECT_COLLISION ca3_machine[4] TRUE //SET_OBJECT_DYNAMIC ca3_machine[7] TRUE /* //to here CREATE_OBJECT_NO_OFFSET cj_chip_maker_bits 1090.8550 2077.5319 10.7203 ca3_machine[3] CREATE_OBJECT_NO_OFFSET cj_chip_maker 1090.8550 2077.5319 10.7203 ca3_machineinnards[3] //SET_OBJECT_ROTATION ca3_machine[3] 0.0 0.0 90.0 SET_OBJECT_COLLISION ca3_machine[3] TRUE //SET_OBJECT_DYNAMIC ca3_machine[3] TRUE Just gone */ CREATE_OBJECT_NO_OFFSET cj_chip_maker_bits 1086.8550 2077.5319 10.7203 ca3_machine[5] SET_OBJECT_PROOFS ca3_machine[5] TRUE TRUE TRUE TRUE TRUE CREATE_OBJECT_NO_OFFSET cj_chip_maker 1086.8550 2077.5319 10.7203 ca3_machineinnards[5] //SET_OBJECT_ROTATION ca3_machine[4] 0.0 0.0 90.0 SET_OBJECT_COLLISION ca3_machine[5] TRUE //SET_OBJECT_DYNAMIC ca3_machine[4] TRUE CREATE_OBJECT_NO_OFFSET cj_chip_maker_bits 1091.8185 2121.2566 10.7203 ca3_machine[6] SET_OBJECT_PROOFS ca3_machine[6] TRUE TRUE TRUE TRUE TRUE CREATE_OBJECT_NO_OFFSET cj_chip_maker 1091.8185 2121.2566 10.7203 ca3_machineinnards[6] SET_OBJECT_ROTATION ca3_machine[6] 0.0 0.0 180.0 SET_OBJECT_ROTATION ca3_machineinnards[6] 0.0 0.0 180.0 SET_OBJECT_COLLISION ca3_machine[6] TRUE //SET_OBJECT_DYNAMIC ca3_machine[5] TRUE /* CREATE_OBJECT_NO_OFFSET cj_chip_maker_bits 1094.1634 2081.3518 10.7203 ca3_machine[7] CREATE_OBJECT_NO_OFFSET cj_chip_maker 1094.1634 2081.3518 10.7203 ca3_machineinnards[7] SET_OBJECT_ROTATION ca3_machine[7] 0.0 0.0 90.0 SET_OBJECT_ROTATION ca3_machineinnards[7] 0.0 0.0 90.0 SET_OBJECT_COLLISION ca3_machine[7] TRUE //SET_OBJECT_DYNAMIC ca3_machine[7] TRUE */ CREATE_OBJECT_NO_OFFSET cj_chip_maker_bits 1094.1634 2102.3518 10.7203 ca3_machine[7] SET_OBJECT_PROOFS ca3_machine[7] TRUE TRUE TRUE TRUE TRUE CREATE_OBJECT_NO_OFFSET cj_chip_maker 1094.1634 2102.3518 10.7203 ca3_machineinnards[7] SET_OBJECT_ROTATION ca3_machine[7] 0.0 0.0 90.0 SET_OBJECT_ROTATION ca3_machineinnards[7] 0.0 0.0 90.0 SET_OBJECT_COLLISION ca3_machine[7] TRUE //SET_OBJECT_DYNAMIC ca3_machine[8] TRUE /* CREATE_OBJECT_NO_OFFSET cj_chip_maker_bits 1094.1634 2096.8518 10.7203 ca3_machine[9] CREATE_OBJECT_NO_OFFSET cj_chip_maker 1094.1634 2096.8518 10.7203 ca3_machineinnards[9] SET_OBJECT_ROTATION ca3_machine[9] 0.0 0.0 90.0 SET_OBJECT_ROTATION ca3_machineinnards[9] 0.0 0.0 90.0 SET_OBJECT_COLLISION ca3_machine[9] TRUE //SET_OBJECT_DYNAMIC ca3_machine[9] TRUE Just gone! */ CREATE_OBJECT_NO_OFFSET cj_chip_maker_bits 1094.1634 2092.3518 10.7203 ca3_machine[8] SET_OBJECT_PROOFS ca3_machine[8] TRUE TRUE TRUE TRUE TRUE CREATE_OBJECT_NO_OFFSET cj_chip_maker 1094.1634 2092.3518 10.7203 ca3_machineinnards[8] SET_OBJECT_ROTATION ca3_machine[8] 0.0 0.0 90.0 SET_OBJECT_ROTATION ca3_machineinnards[8] 0.0 0.0 90.0 SET_OBJECT_COLLISION ca3_machine[8] TRUE //SET_OBJECT_DYNAMIC ca3_machine[10] TRUE LVAR_INT ca3_machine_flag[9] LVAR_INT c c = 0 WHILE c < 9 ca3_machine_flag[c] = 0 SET_OBJECT_HEALTH ca3_machine[c] 1000 ++ c ENDWHILE CREATE_OBJECT_NO_OFFSET KMB_CONTAINER_RED 1023.1812 2106.6035 14.7301 ca3_rcontainer SET_OBJECT_ROTATION ca3_rcontainer 0.0 0.0 0.0 CREATE_OBJECT_NO_OFFSET KMB_CONTAINER_RED 1077.0142 2070.7434 14.7635 ca3_rcontainer2 SET_OBJECT_ROTATION ca3_rcontainer2 0.0 0.0 0.0 //CREATE_OBJECT_NO_OFFSET BLOCKPALLET 1021.8337 2115.3552 10.4203 ca3_cutbox ca3_r1z = 0.0 ca3_r2z = 0.0 ADD_BLIP_FOR_COORD 1057.6359 2089.6936 9.8203 ca3_factoryB //PRINT_NOW CA3_1 10000 1 //timera = 0 //SET_CHAR_COORDINATES scplayer 2026.7286 1006.7860 9.8127 LOAD_SCENE 2031.1681 1030.9177 9.8130 REQUEST_COLLISION 2031.1681 1030.9177 //9.8130 DISPLAY_ZONE_NAMES FALSE //SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2016.4222 1017.1024 10.0 //TRIAD CASINO //SET_CHAR_COORDINATES scplayer 2024.8704 1008.6201 9.8127 //SET_CHAR_HEADING scplayer 342.8127 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT WAIT 1000 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PRINT_NOW CA3_1 10000 1 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON DISPLAY_ZONE_NAMES TRUE casino3_main_mission_loop: WAIT 0 IF DOES_OBJECT_EXIST ca3_loadingbay SET_OBJECT_COORDINATES ca3_loadingbay 1055.629 2087.67 0.299 // IF NOT SLIDE_OBJECT ca3_loadingbay 1055.629 2087.67 16.299 0.0 0.0 0.04 FALSE // was 16.299 for z // SLIDE_OBJECT ca3_loadingbay 1055.629 2087.67 16.299 0.0 0.0 0.04 FALSE // ENDIF ENDIF // ---- Load & Play Dialogue... IF NOT ca3_counter = 0 IF ca3_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED ca3_alt_slot CLEAR_MISSION_AUDIO ca3_alt_slot ENDIF ca3_audio_playing = 1 ca3_audio_underway = 1 ENDIF IF ca3_audio_playing = 1 LOAD_MISSION_AUDIO ca3_audio_slot ca3_audio[ca3_counter] //GOSUB ca3_dialogue_pos //ATTACH_MISSION_AUDIO_TO_PED ca3_audio_slot ca3_audio_char ca3_audio_playing = 2 ENDIF IF ca3_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED ca3_audio_slot PLAY_MISSION_AUDIO ca3_audio_slot PRINT_NOW $ca3_text[ca3_counter] 10000 1 ca3_audio_playing = 3 ENDIF ENDIF IF ca3_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED ca3_audio_slot CLEAR_THIS_PRINT $ca3_text[ca3_counter] IF ca3_audio_slot = 1 ca3_audio_slot = 2 ca3_alt_slot = 1 ELSE ca3_audio_slot = 1 ca3_alt_slot = 2 ENDIF ca3_counter = 0 ca3_audio_playing = 0 ca3_audio_underway = 0 // okay to cue up next piece of convo text ELSE IF NOT HAS_MISSION_AUDIO_LOADED ca3_alt_slot IF ca3_counter < 10 ca3_ahead_counter = ca3_counter + 1 LOAD_MISSION_AUDIO ca3_alt_slot ca3_audio[ca3_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF // End of dialogue loader / player IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_casino3_passed ENDIF SET_OBJECT_ROTATION ca3_rcontainer 0.0 0.0 ca3_r1z IF NOT ca3_ctskip_needed = 1 ca3_r1z = ca3_r1z + 0.2 ENDIF IF ca3_ctskip_needed = 1 ca3_r1z = ca3_r1z + 0.4 ENDIF IF ca3_r1z > 359.0 ca3_r1z = 0.0 ENDIF SET_OBJECT_ROTATION ca3_rcontainer2 0.0 0.0 ca3_r2z ca3_r2z = ca3_r2z + 0.25 IF ca3_r2z > 359.0 ca3_r2z = 0.0 ENDIF IF ca3_ctskip_needed = 1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED WAIT 0 IF ca3_Cover_Blown_Cut > 1 //write_debug shit ca3_Cover_Blown_Cut = 10 ca3_ctskip_needed = 0 ENDIF //IF ca3_gotplvan < 9 // ca3_gotplvan = 9 // ca3_ctskip_needed = 0 // Don't want to read PS2 joypad anymore //ENDIF ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_W SET_CHAR_COORDINATES scplayer 1002.1711 2079.4431 9.8203 SET_CAMERA_BEHIND_PLAYER GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_SPAS12_SHOTGUN 2000 ENDIF IF ca3_contextskip = 1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED WAIT 0 ca3_contextcut = 5 ca3_contextskip = 0 ENDIF ENDIF IF ca3_contextskip2 = 1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED WAIT 0 ca3_contextcut2 = 5 ca3_contextskip2 = 0 ENDIF ENDIF IF ca3_finalskip = 1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED WAIT 0 ca3_BlowUpMachines = 40 ca3_finalskip = 0 ENDIF ENDIF IF ca3_skip = 1 IF ca3_driven_to_factory = 1 SET_UP_SKIP 1009.6833 1987.6398 9.6796 1.8160 ca3_skip = 0 ENDIF ENDIF IF ca3_gotplvan = 5 IF NOT IS_CHAR_DEAD ca3_gate1P IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer ca3_gate1P 100.0 100.0 FALSE CLEAR_SKIP ca3_skip = 0 CLEAR_PRINTS PRINT_NOW CA3_2 6000 1 // Try and get in unnoticed! /* ADD_BLIP_FOR_CHAR ca3_gate1P ca3_gate1B CHANGE_BLIP_SCALE ca3_gate1B 1 IF NOT IS_CHAR_DEAD ca3_gate2P ADD_BLIP_FOR_CHAR ca3_gate2P ca3_gate2B CHANGE_BLIP_SCALE ca3_gate2B 2 ENDIF */ ca3_gotplvan = 10 GET_MAX_WANTED_LEVEL ca3_wantedlevel //WRITE_DEBUG_WITH_INT wl ca3_wantedlevel SET_MAX_WANTED_LEVEL 0 ca3_driven_to_factory = 1 // player has driven to factory once before so we can let him skip //ca3_gotplvan = -1 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1009.6833 1987.6398 9.6796 25.0 25.0 5.0 FALSE CLEAR_SKIP ca3_skip = 0 ENDIF ENDIF IF ca3_gotplvan = 10 /* IF NOT SLIDE_OBJECT ca3_gateO 1055.629 2087.67 14.899 0.0 0.0 0.04 FALSE SLIDE_OBJECT ca3_gateO 1055.629 2087.67 14.899 0.0 0.0 0.04 FALSE ENDIF */ IF IS_CHAR_IN_ANGLED_AREA_2D scplayer 1048.4285 2093.5213 1048.8224 2081.8444 15.0 FALSE //write_debug inarea //IF IS_CHAR_IN_ANGLED_AREA_2D scplayer 1055.9634 2093.8372 1055.8059 2081.0337 10.0 FALSE ca3_BlowUpMachines = 1 ca3_gotplvan =99 ENDIF IF IS_CHAR_IN_ANGLED_AREA_2D scplayer 1055.1740 2064.7097 1054.8353 21099.8091 15.0 FALSE IF IS_CHAR_SHOOTING scplayer shoot_fix = 1 timerb = 0 ENDIF ENDIF IF DOES_CHAR_EXIST ca3_forkie3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR ca3_forkie3 scplayer ca3_BlowupMachines = 1 ca3_gotplvan = 99 ENDIF ENDIF IF shoot_fix = 1 IF timerb > 500 //1000 ca3_BlowUpMachines = 1 ca3_gotplvan = 99 ENDIF ENDIF /* IF NOT IS_CHAR_DEAD ca3_foreman1 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR ca3_foreman1 scplayer ca3_BlowUpMachines = 1 ca3_gotplvan = 99 ENDIF ENDIF IF NOT IS_CHAR_DEAD ca3_contextgoon IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR ca3_contextgoon scplayer ca3_BlowUpMachines = 1 ca3_gotplvan = 99 ENDIF ENDIF IF IS_CHAR_DEAD ca3_contextgoon ca3_BlowUpMachines = 1 ca3_gotplvan = 99 ENDIF IF IS_CHAR_DEAD ca3_foreman1 ca3_BlowUpMachines = 1 ca3_gotplvan = 99 ENDIF */ ENDIF // ca3_plgotvan = 10 condition check IF ca3_BlowUpMachines = 0 //IF ca3_gotplvan > 8 IF ca3_gotplvan < 0 IF ca3_forktog = 0 IF NOT IS_CHAR_DEAD ca3_forkie3 IF NOT IS_CAR_DEAD ca3_forklift3 TASK_CAR_DRIVE_TO_COORD ca3_forkie3 ca3_forklift3 1030.4415 2106.3191 9.8203 10.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS ca3_forktog = 1 ENDIF ENDIF ENDIF IF ca3_forktog = 1 IF NOT IS_CHAR_DEAD ca3_forkie3 IF NOT IS_CAR_DEAD ca3_forklift3 IF LOCATE_CAR_3D ca3_forklift3 1030.4415 2106.3191 9.8203 3.0 3.0 3.0 FALSE ca3_forktog = 2 //SET_CAR_TEMP_ACTION ca3_forklift3 TEMPACT_REVERSE 5000 TASK_CAR_DRIVE_TO_COORD ca3_forkie3 ca3_forklift3 1060.1465 2084.9863 9.8203 10.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS //SET_CAR_TEMP_ACTION ca3_forklift3 TEMPACT_REVERSE 5000 ENDIF ENDIF ENDIF ENDIF IF ca3_forktog = 2 IF NOT IS_CHAR_DEAD ca3_forkie3 IF NOT IS_CAR_DEAD ca3_forklift3 IF LOCATE_CAR_3D ca3_forklift3 1060.1465 2084.9863 9.8203 5.0 5.0 3.0 FALSE ca3_forktog = 0 //WAIT 5000 //SET_CAR_TEMP_ACTION ca3_forklift3 TEMPACT_REVERSE 5000 //TASK_CAR_DRIVE_TO_COORD ca3_forkie3 ca3_forklift3 1059.5518 2079.1340 9.8203 10.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF ca3_BlowUpMachines = 1 IF ca3_BeenSpotted = 0 IF ca3_contextcut = 0 SET_PLAYER_CONTROL player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 TRUE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_MISSION1 VMAFF4 1083.0099 2099.1306 14.3504 ca3_foreman1 SET_CHAR_HEADING ca3_foreman1 186.4201 GIVE_WEAPON_TO_CHAR ca3_foreman1 WEAPONTYPE_PISTOL 2000 SET_CHAR_DECISION_MAKER ca3_foreman1 ca3_goondm CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 1084.2815 2097.9480 14.3504 ca3_contextgoon //cutscene fuck up SET_CHAR_HEADING ca3_contextgoon 153.4201 GIVE_WEAPON_TO_CHAR ca3_contextgoon WEAPONTYPE_PISTOL 2000 SET_CHAR_DECISION_MAKER ca3_contextgoon ca3_goondm SET_CHAR_COORDINATES scplayer 1050.5325 2087.9326 9.8203 SET_CHAR_HEADING scplayer 282.0 SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 1088.8477 2094.2385 17.2308 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1087.8687 2094.2224 17.0277 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE timera = 0 ca3_contextcut = 1 //ca3_counter = 8 IF NOT IS_CHAR_DEAD ca3_foreman1 FLUSH_ROUTE EXTEND_ROUTE 1083.3608 2093.4502 14.3504 //EXTEND_ROUTE 1091.5479 2122.4487 14.3504 //EXTEND_ROUTE 1086.2125 2141.9678 14.3504 //EXTEND_ROUTE 1068.7489 2144.6396 14.3516 //EXTEND_ROUTE 1086.0752 2139.8628 14.3504 TASK_FOLLOW_POINT_ROUTE ca3_foreman1 PEDMOVE_WALK FOLLOW_ROUTE_ONCE //SET_FOLLOW_NODE_THRESHOLD_DISTANCE ca3_foreman1 150.0 ENDIF IF NOT IS_CHAR_DEAD ca3_contextgoon FLUSH_ROUTE EXTEND_ROUTE 1084.7522 2093.2078 14.3504 //EXTEND_ROUTE 1091.5479 2122.4487 14.3504 //EXTEND_ROUTE 1086.2125 2141.9678 14.3504 //EXTEND_ROUTE 1068.7489 2144.6396 14.3516 //EXTEND_ROUTE 1086.0752 2139.8628 14.3504 TASK_FOLLOW_POINT_ROUTE ca3_contextgoon PEDMOVE_WALK FOLLOW_ROUTE_ONCE //SET_FOLLOW_NODE_THRESHOLD_DISTANCE ca3_foreman1 150.0 ENDIF IF NOT IS_CHAR_DEAD scplayer IF NOT IS_CHAR_IN_ANY_CAR scplayer FLUSH_ROUTE EXTEND_ROUTE 1057.5325 2087.9326 9.8203 //EXTEND_ROUTE 1091.5479 2122.4487 14.3504 //EXTEND_ROUTE 1086.2125 2141.9678 14.3504 //EXTEND_ROUTE 1068.7489 2144.6396 14.3516 //EXTEND_ROUTE 1086.0752 2139.8628 14.3504 TASK_FOLLOW_POINT_ROUTE scplayer PEDMOVE_WALK FOLLOW_ROUTE_ONCE //SET_FOLLOW_NODE_THRESHOLD_DISTANCE ca3_foreman1 150.0 ENDIF ENDIF //PRINT_NOW CA3_10 4000 1 ENDIF IF ca3_contextcut = 1 IF timera > 1000 ca3_contextskip = 1 ENDIF IF timera > 3000 ca3_counter = 8 IF NOT IS_CHAR_DEAD ca3_foreman1 CLEAR_CHAR_TASKS ca3_foreman1 TASK_TURN_CHAR_TO_FACE_CHAR ca3_foreman1 scplayer //CLEAR_CHAR_TASKS ca3_contextgoon //TASK_TURN_CHAR_TO_FACE_CHAR ca3_contextgoon ca3_foreman1 ENDIF IF NOT IS_CHAR_DEAD ca3_contextgoon FLUSH_ROUTE EXTEND_ROUTE 1082.3755 2090.2505 14.35044 //EXTEND_ROUTE 1091.5479 2122.4487 14.3504 //EXTEND_ROUTE 1086.2125 2141.9678 14.3504 //EXTEND_ROUTE 1068.7489 2144.6396 14.3516 //EXTEND_ROUTE 1086.0752 2139.8628 14.3504 TASK_FOLLOW_POINT_ROUTE ca3_contextgoon PEDMOVE_WALK FOLLOW_ROUTE_ONCE //SET_FOLLOW_NODE_THRESHOLD_DISTANCE ca3_foreman1 150.0 ENDIF ca3_contextcut = 2 ENDIF ENDIF IF ca3_contextcut = 2 IF timera > 6000 ca3_counter = 9 //PRINT_NOW CA3_9 4000 1 IF NOT IS_CHAR_DEAD ca3_foreman1 CLEAR_CHAR_TASKS ca3_foreman1 FLUSH_ROUTE EXTEND_ROUTE 1088.5259 2112.6157 14.3504 //EXTEND_ROUTE 1091.5479 2122.4487 14.3504 //EXTEND_ROUTE 1086.2125 2141.9678 14.3504 //EXTEND_ROUTE 1068.7489 2144.6396 14.3516 //EXTEND_ROUTE 1086.0752 2139.8628 14.3504 TASK_FOLLOW_POINT_ROUTE ca3_foreman1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE //SET_FOLLOW_NODE_THRESHOLD_DISTANCE ca3_foreman1 150.0 ENDIF IF NOT IS_CHAR_DEAD ca3_forkie3 IF NOT IS_CAR_DEAD ca3_forklift3 TASK_CAR_DRIVE_TO_COORD ca3_forkie3 ca3_forklift3 1076.8090 2080.5261 9.8203 9.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS ENDIF ENDIF IF NOT IS_CHAR_DEAD ca3_contextgoon CLEAR_CHAR_TASKS ca3_contextgoon // TASK_TURN_CHAR_TO_FACE_CHAR ca3_contextgoon ca3_foreman1 TASK_AIM_GUN_AT_CHAR ca3_contextgoon scplayer 4000 // TASK_PLAY_ANIM ca3_contextgoon RIFLE_crouchreload PED 8.0 FALSE FALSE FALSE TRUE -1 ENDIF ca3_contextcut = 3 timera = 0 ENDIF ENDIF IF ca3_contextcut = 3 IF timera > 2000 ca3_contextcut = 5 ca3_contextskip = 0 IF NOT IS_CHAR_DEAD ca3_forkie3 CLEAR_CHAR_TASKS ca3_forkie3 OPEN_SEQUENCE_TASK ca3_forkie3leaveseq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 1088.7828 2077.5725 9.8203 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK ca3_forkie3leaveseq PERFORM_SEQUENCE_TASK ca3_forkie3 ca3_forkie3leaveseq CLEAR_SEQUENCE_TASK ca3_forkie3leaveseq ENDIF ENDIF ENDIF IF ca3_contextcut = 5 SWITCH_WIDESCREEN OFF IF NOT IS_CHAR_DEAD ca3_forkie3 IF IS_CHAR_SITTING_IN_ANY_CAR ca3_forkie3 WARP_CHAR_FROM_CAR_TO_COORD ca3_forkie3 1088.7828 2077.5725 9.8203 ENDIF ENDIF IF NOT IS_CAR_DEAD ca3_forklift3 SET_CAR_COORDINATES ca3_forklift3 1076.8090 2080.5261 9.8203 SET_CAR_HEADING ca3_forklift3 273.0 ENDIF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER CLEAR_CHAR_TASKS scplayer IF NOT IS_CAR_DEAD ca3_mafia_car SET_CAR_PROOFS ca3_mafia_car FALSE FALSE FALSE FALSE FALSE ENDIF SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE ca3_BlowUpMachines = 2 ca3_CheckMachineStatus = 1 ENDIF ENDIF // ca3_BeenSpotted = 0 condition check IF ca3_BeenSpotted > 0 IF ca3_contextcut2 = 0 SET_EVERYONE_IGNORE_PLAYER player1 TRUE SET_PLAYER_CONTROL player1 OFF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // IF NOT ca3_BeenSpotted = 4 SET_CHAR_COORDINATES scplayer 1050.5325 2087.9326 9.8203 SET_CHAR_HEADING scplayer 282.0 // ENDIF CREATE_CHAR PEDTYPE_MISSION1 VMAFF4 1086.8689 2078.6096 14.3504 ca3_foreman1 SET_CHAR_HEADING ca3_foreman1 86.4201 GIVE_WEAPON_TO_CHAR ca3_foreman1 WEAPONTYPE_PISTOL 2000 SET_CHAR_DECISION_MAKER ca3_foreman1 ca3_goondm CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 1086.4199 2077.2915 14.3504 ca3_contextgoon //cutscene fuck up SET_CHAR_HEADING ca3_contextgoon 74.4201 GIVE_WEAPON_TO_CHAR ca3_contextgoon WEAPONTYPE_PISTOL 2000 SET_CHAR_DECISION_MAKER ca3_contextgoon ca3_goondm SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 1075.7250 2094.5449 18.0271 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1074.8522 2094.5291 17.5392 JUMP_CUT // SET_FIXED_CAMERA_POSITION 1091.1034 2077.0864 15.6725 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 1090.2365 2077.5757 15.5788 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE timera = 0 ca3_contextcut2 = 1 ca3_counter = 7 //PRINT_NOW CA3_3 4000 1 //IF NOT ca3_BeenSpotted = 4 IF NOT IS_CHAR_DEAD scplayer IF NOT IS_CHAR_IN_ANY_CAR scplayer FLUSH_ROUTE EXTEND_ROUTE 1057.5325 2087.9326 9.8203 //EXTEND_ROUTE 1091.5479 2122.4487 14.3504 //EXTEND_ROUTE 1086.2125 2141.9678 14.3504 //EXTEND_ROUTE 1068.7489 2144.6396 14.3516 //EXTEND_ROUTE 1086.0752 2139.8628 14.3504 TASK_FOLLOW_POINT_ROUTE scplayer PEDMOVE_WALK FOLLOW_ROUTE_ONCE //SET_FOLLOW_NODE_THRESHOLD_DISTANCE ca3_foreman1 150.0 ENDIF ENDIF // ENDIF ENDIF IF ca3_contextcut2 = 1 IF timera > 300 //ca3_contextskip2 = 1 IF ca3_cutfix = 0 IF NOT IS_CHAR_DEAD ca3_contextgoon CLEAR_CHAR_TASKS ca3_contextgoon TASK_GO_TO_COORD_WHILE_AIMING ca3_contextgoon 1079.8713 2079.3027 14.3516 PEDMOVE_WALK 0.5 0.5 scplayer 0.0 0.0 0.0 // ca3_cutfix = 1 ENDIF IF NOT IS_CHAR_DEAD ca3_forkie3 IF NOT IS_CAR_DEAD ca3_forklift3 TASK_CAR_DRIVE_TO_COORD ca3_forkie3 ca3_forklift3 1076.8090 2080.5261 9.8203 9.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS ENDIF ENDIF IF NOT IS_CHAR_DEAD ca3_gate1P CLEAR_CHAR_TASKS ca3_gate1P OPEN_SEQUENCE_TASK ca3_highseq //TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 1064.6775 2094.7896 13.6896 PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 TRUE CLOSE_SEQUENCE_TASK ca3_highseq PERFORM_SEQUENCE_TASK ca3_gate1P ca3_highseq CLEAR_SEQUENCE_TASK ca3_highseq TASK_STAY_IN_SAME_PLACE ca3_gate1P TRUE ENDIF IF NOT IS_CHAR_DEAD ca3_gate2P TASK_TOGGLE_DUCK ca3_gate2P TRUE TASK_STAY_IN_SAME_PLACE ca3_gate2P TRUE ENDIF ca3_contextskip2 = 1 ca3_cutfix = 1 ENDIF ENDIF IF timera > 4000 ca3_counter = 6 //PRINT_NOW CA3_9 4000 1 ca3_contextcut2 = 3 timera = 0 ENDIF ENDIF IF ca3_contextcut2 = 3 IF timera > 3000 ca3_contextcut2 = 5 ca3_contextskip2 = 0 IF NOT IS_CHAR_DEAD ca3_forkie3 CLEAR_CHAR_TASKS ca3_forkie3 OPEN_SEQUENCE_TASK ca3_forkie3leaveseq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 1088.7828 2077.5725 9.8203 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK ca3_forkie3leaveseq PERFORM_SEQUENCE_TASK ca3_forkie3 ca3_forkie3leaveseq CLEAR_SEQUENCE_TASK ca3_forkie3leaveseq ENDIF ENDIF ENDIF IF ca3_contextcut2 = 5 SWITCH_WIDESCREEN OFF IF NOT IS_CHAR_DEAD ca3_contextgoon CLEAR_CHAR_TASKS ca3_contextgoon SET_CHAR_COORDINATES ca3_contextgoon 1079.8713 2079.3027 14.3516 ENDIF IF NOT IS_CHAR_DEAD ca3_forkie3 IF IS_CHAR_SITTING_IN_ANY_CAR ca3_forkie3 WARP_CHAR_FROM_CAR_TO_COORD ca3_forkie3 1088.7828 2077.5725 9.8203 ENDIF ENDIF IF NOT IS_CAR_DEAD ca3_forklift3 SET_CAR_COORDINATES ca3_forklift3 1076.8090 2080.5261 9.8203 SET_CAR_HEADING ca3_forklift3 273.0 ENDIF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER CLEAR_CHAR_TASKS scplayer IF NOT IS_CAR_DEAD ca3_mafia_car SET_CAR_PROOFS ca3_mafia_car FALSE FALSE FALSE FALSE FALSE ENDIF SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE ca3_BlowUpMachines = 2 ca3_CheckMachineStatus = 1 ENDIF ENDIF ENDIF // ca3_BlowUpMachines = 1 condition check IF ca3_BlowUpMachines = 2 REMOVE_BLIP ca3_factoryB // REMOVE_BLIP ca3_gate1B // REMOVE_BLIP ca3_gate2B c = 0 WHILE c < 9 ca3_machine_flag[c] = 0 ADD_BLIP_FOR_OBJECT ca3_machine[c] ca3_machineblip[c] SET_OBJECT_PROOFS ca3_machine[c] FALSE FALSE FALSE FALSE FALSE CHANGE_BLIP_SCALE ca3_machineblip[c] 2 SET_OBJECT_HEALTH ca3_machine[c] 1000 MAKE_OBJECT_TARGETTABLE ca3_machine[c] TRUE ++ c ENDWHILE CLEAR_PRINTS PRINT_NOW CA3_7 6000 1 // Hit those machines! IF NOT IS_CHAR_DEAD ca3_forkie3 CLEAR_CHAR_TASKS ca3_forkie3 // TASK_LEAVE_ANY_CAR ca3_forkie3 TASK_KILL_CHAR_ON_FOOT ca3_forkie3 scplayer ENDIF IF ca3_BeenSpotted > 0 GOSUB ca3_In_Factory_Was_Spotted ca3_BlowUpMachines = 4 ENDIF IF ca3_BeenSpotted = 0 GOSUB ca3_In_Factory_Was_Not_Spotted ca3_BlowUpMachines = 4 ENDIF CHECKPOINT_SAVE 99 GOSUB ca3_bossfight ENDIF // ca3_BlowUpMachines = 2 condition check IF ca3_BlowUpMachines = 8 /* IF ca3_bossinit = 0 IF NOT IS_CHAR_DEAD ca3_bossP ADD_BLIP_FOR_CHAR ca3_bossP ca3_bossB PRINT_NOW CA3_10 6000 1 ca3_bossinit = 1 ENDIF ENDIF IF IS_CHAR_DEAD ca3_bossP IF ca3_bossinit = 1 REMOVE_BLIP ca3_bossB ENDIF WAIT 2000 PRINT_NOW CA3_23 6000 1 ADD_BLIP_FOR_COORD 1007.0504 2170.6255 9.6719 ca3_exitB ca3_BlowUpMachines = 9 ENDIF */ // WAIT 2000 PRINT_NOW CA3_23 6000 1 SET_MAX_WANTED_LEVEL ca3_wantedlevel ADD_BLIP_FOR_COORD 1918.5901 958.3391 9.8203 ca3_exitB CHANGE_BLIP_COLOUR ca3_exitB YELLOW MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF3 MARK_MODEL_AS_NO_LONGER_NEEDED wmymech REQUEST_MODEL TRIADA REQUEST_MODEL TRIADB REQUEST_MODEL WASHING ca3_BlowUpMachines = 9 //LOAD_SPECIAL_CHARACTER 1 WUZIMU //WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 WHILE NOT HAS_MODEL_LOADED TRIADA OR NOT HAS_MODEL_LOADED WASHING OR NOT HAS_MODEL_LOADED TRIADB WAIT 0 ENDWHILE ENDIF // All machines blown up, exit area defined IF ca3_BlowUpMachines = 9 GET_AREA_VISIBLE ca3_visible IF ca3_visible = 0 IF NOT IS_MINIGAME_IN_PROGRESS SET_PLAYER_CONTROL player1 ON ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1918.5901 958.3391 9.8203 4.0 4.0 2.0 TRUE IF IS_CHAR_IN_ANY_CAR scplayer SET_PLAYER_CONTROL player1 OFF IF IS_CHAR_STOPPED scplayer CREATE_CAR WASHING 1902.1685 974.9742 9.8203 ca3_wuzicar SET_CAR_HEADING ca3_wuzicar 197.2609 CHANGE_CAR_COLOUR ca3_wuzicar 4 2 IF NOT IS_CAR_DEAD ca3_wuzicar CREATE_CHAR_INSIDE_CAR ca3_wuzicar PEDTYPE_MISSION2 TRIADA ca3_wuzidriver CREATE_CHAR_AS_PASSENGER ca3_wuzicar PEDTYPE_MISSION2 TRIADB 1 ca3_wuzi ENDIF ca3_BlowUpMachines = 15 ENDIF ELSE SET_PLAYER_CONTROL player1 OFF CREATE_CAR WASHING 1902.1685 974.9742 9.8203 ca3_wuzicar SET_CAR_HEADING ca3_wuzicar 197.2609 CHANGE_CAR_COLOUR ca3_wuzicar 4 2 IF NOT IS_CAR_DEAD ca3_wuzicar CREATE_CHAR_INSIDE_CAR ca3_wuzicar PEDTYPE_MISSION2 TRIADA ca3_wuzidriver CREATE_CHAR_AS_PASSENGER ca3_wuzicar PEDTYPE_MISSION2 TRIADB 1 ca3_wuzi ENDIF ca3_BlowUpMachines = 15 ENDIF ENDIF // locate ENDIF // ca3_BlowUpMachines = 9 condition check IF ca3_BlowUpMachines = 15 MARK_CAR_AS_NO_LONGER_NEEDED ca3_backupdriveby MARK_CAR_AS_NO_LONGER_NEEDED ca3_mafia_car SET_PLAYER_CONTROL player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 TRUE CLEAR_PRINTS CLEAR_AREA 1913.6818 962.0125 9.8203 20.0 TRUE CLEAR_AREA 1903.4680 967.1692 9.8127 20.0 TRUE SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 1922.2339 951.8628 12.2282 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1921.7146 952.7101 12.1171 JUMP_CUT ca3_BlowUpMachines = 17 timera = 0 CLEAR_CHAR_TASKS scplayer IF IS_CHAR_IN_ANY_CAR scplayer OPEN_SEQUENCE_TASK ca3_playerseq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 1913.6818 962.0125 9.8203 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK ca3_playerseq PERFORM_SEQUENCE_TASK scplayer ca3_playerseq CLEAR_SEQUENCE_TASK ca3_playerseq ELSE OPEN_SEQUENCE_TASK ca3_playerseq TASK_GO_STRAIGHT_TO_COORD -1 1913.6818 962.0125 9.8203 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK ca3_playerseq PERFORM_SEQUENCE_TASK scplayer ca3_playerseq CLEAR_SEQUENCE_TASK ca3_playerseq ENDIF ENDIF IF ca3_BlowUpMachines = 17 IF timera > 1000 // ca3_finalskip = 1 ca3_BlowUpMachines = 20 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_SHUTTER_DOOR_START ENDIF ENDIF IF ca3_BlowUpMachines = 20 // IF timerb > 3000 // ca3_finalskip = 1 // ENDIF IF NOT SLIDE_OBJECT fourdragons_door 1903.383 967.62 15.438 0.0 0.0 0.02 FALSE SLIDE_OBJECT fourdragons_door 1903.383 967.62 15.438 0.0 0.0 0.02 FALSE ENDIF IF timera > 4000 //IF SLIDE_OBJECT fourdragons_door 1903.383 967.62 15.438 0.0 0.0 0.02 FALSE ca3_BlowUpMachines = 30 IF NOT IS_CHAR_DEAD ca3_wuzidriver IF NOT IS_CAR_DEAD ca3_wuzicar TASK_CAR_DRIVE_TO_COORD ca3_wuzidriver ca3_wuzicar 1909.0400 959.7415 9.8203 7.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS //SET_FIXED_CAMERA_POSITION 1040.4857 2085.0986 11.8834 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 1041.4290 2085.4268 11.8331 JUMP_CUT SET_FIXED_CAMERA_POSITION 1914.8311 962.6716 11.3214 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1913.8368 962.5726 11.2813 JUMP_CUT SET_CHAR_COORDINATES scplayer 1913.6818 962.0125 9.8203 SET_CHAR_HEADING scplayer 100.3 timera = 0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_SHUTTER_DOOR_STOP ENDIF ENDIF ENDIF ENDIF IF ca3_BlowUpMachines = 30 IF NOT IS_CAR_DEAD ca3_wuzicar //WRITE_DEBUG check30 IF LOCATE_CAR_2D ca3_wuzicar 1909.0400 959.7415 3.0 3.0 FALSE ca3_BlowUpMachines = 35 IF NOT IS_CHAR_DEAD ca3_wuzi TASK_LOOK_AT_CHAR ca3_wuzi scplayer -1 ENDIF //WRITE_DEBUG check35 //PRINT_NOW ca3_24 5000 1 ca3_counter = 10 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_SHUTTER_DOOR_START timera = 0 //new ENDIF IF timera > 10000 ca3_BlowUpMachines = 35 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_SHUTTER_DOOR_START timera = 0 ENDIF ENDIF ENDIF IF ca3_BlowUpMachines = 35 IF NOT SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.02 FALSE SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.02 FALSE ENDIF //IF SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.02 FALSE IF timera > 3000 ca3_BlowUpMachines = 36 timera = 0 //ca3_counter = 11 ca3_splitfix = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_SHUTTER_DOOR_STOP ENDIF ENDIF IF ca3_splitfix > 0 IF ca3_audio_underway = 0 SWITCH ca3_splitfix CASE 1 ca3_counter = 11 ca3_splitfix = 2 BREAK CASE 2 ca3_counter = 12 ca3_splitfix = 0 // finish convo BREAK ENDSWITCH // sw7_audio_underway = 1 ENDIF ENDIF IF ca3_BlowUpMachines = 36 IF NOT SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.02 FALSE SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.02 FALSE ENDIF IF timera > 2000 //PRINT_NOW ca3_25 4000 1 IF timera > 4000 IF NOT IS_CAR_DEAD ca3_wuzicar IF NOT IS_CHAR_DEAD ca3_wuzidriver CLEAR_CHAR_TASKS ca3_wuzidriver //ca3_counter = 11 ca3_BlowUpMachines = 37 TASK_CAR_DRIVE_TO_COORD ca3_wuzidriver ca3_wuzicar 1915.0400 940.7415 9.8203 10.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS timera = 0 IF NOT IS_CHAR_DEAD ca3_wuzi TASK_LOOK_AT_CHAR scplayer ca3_wuzi -1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF ca3_BlowUpMachines = 37 IF NOT SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.02 FALSE SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.02 FALSE ENDIF IF timera > 4000 ca3_BlowUpMachines = 40 ENDIF ENDIF IF ca3_BlowUpMachines = 40 IF NOT SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.02 FALSE SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.02 FALSE ENDIF ca3_finalskip = 0 IF NOT IS_CHAR_DEAD ca3_wuzi CLEAR_CHAR_TASKS_IMMEDIATELY ca3_wuzi DELETE_CHAR ca3_wuzi ENDIF IF NOT IS_CHAR_DEAD ca3_wuzidriver CLEAR_CHAR_TASKS_IMMEDIATELY ca3_wuzidriver DELETE_CHAR ca3_wuzidriver ENDIF DELETE_CAR ca3_wuzicar SWITCH_WIDESCREEN OFF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SET_OBJECT_COORDINATES fourdragons_door 1903.383 967.82 11.438 SET_OBJECT_HEADING fourdragons_door 0.0 ca3_BlowUpMachines = 45 CLEAR_PRINTS GOTO mission_casino3_passed ENDIF // New mobile phone stuff IF ca3_BlowUpMachines < 1 // Player should still under cover at this point, if he harms any mafia the mission is failed! // IF IS_CHAR_IN_ANGLED_AREA_2D scplayer 1018.6445 2100.5955 1020.0024 2145.0366 -40.0 FALSE IF IS_CHAR_IN_ANGLED_AREA_2D scplayer 1030.1047 2095.7146 1054.8175 2098.7776 30.0 FALSE IF ca3_BeenSpotted = 0 IF NOT IS_CHAR_DEAD ca3_gate1P IF HAS_CHAR_SPOTTED_CHAR_IN_FRONT ca3_gate1P scplayer ca3_BeenSpotted = 1 ca3_Cover_Blown_Cut = 1 ENDIF ENDIF ENDIF IF ca3_BeenSpotted = 0 IF NOT IS_CHAR_DEAD ca3_gate2P IF HAS_CHAR_SPOTTED_CHAR_IN_FRONT ca3_gate2P scplayer //PRINT_NOW ca3_5 6000 1 ca3_BeenSpotted = 1 ca3_Cover_Blown_Cut = 1 //GOSUB ca3_Cover_Blown ENDIF ENDIF ENDIF ENDIF IF ca3_BeenSpotted = 0 IF DOES_CHAR_EXIST ca3_gate1P IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR ca3_gate1P scplayer ca3_BeenSpotted = 1 ca3_Cover_Blown_Cut = 1 ENDIF ENDIF ENDIF IF ca3_BeenSpotted = 0 IF DOES_CHAR_EXIST ca3_gate2P IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR ca3_gate2P scplayer ca3_BeenSpotted = 1 ca3_Cover_Blown_Cut = 1 ENDIF ENDIF ENDIF IF ca3_BeenSpotted = 0 IF NOT IS_CAR_DEAD ca3_mafia_car IF HAS_CAR_BEEN_DAMAGED_BY_CHAR ca3_mafia_car scplayer // PRINT_NOW ca3_4 6000 1 ca3_BeenSpotted = 1 ca3_Cover_Blown_Cut = 1 ENDIF ENDIF ENDIF IF ca3_BeenSpotted = 3 IF DOES_CHAR_EXIST ca3_gate1P IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR ca3_gate1P scplayer // PRINT_NOW ca3_4 6000 1 ca3_BeenSpotted = 4 GOSUB ca3_Cover_Blown ca3_BlowUpMachines = 1 ca3_gotplvan = 99 ENDIF ENDIF ENDIF IF ca3_BeenSpotted = 3 IF DOES_CHAR_EXIST ca3_gate2P IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR ca3_gate2P scplayer // PRINT_NOW ca3_4 6000 1 ca3_BeenSpotted = 4 GOSUB ca3_Cover_Blown ca3_BlowUpMachines = 1 ca3_gotplvan = 99 ENDIF ENDIF ENDIF ENDIF // ca3_BlowUpMachines < 1 condition check IF ca3_Cover_Blown_Cut = 1 //100 // Take out forklift guy SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 1039.3003 2100.4346 12.2503 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1040.1296 2099.9058 12.0705 JUMP_CUT ca3_counter = 1 IF NOT IS_CHAR_DEAD ca3_gate1p IF NOT IS_CHAR_DEAD ca3_gate2p TASK_LOOK_AT_CHAR ca3_gate1p ca3_gate2p -1 ENDIF ENDIF ca3_counter = 1 timerb = 0 ca3_Cover_Blown_Cut = 3 //ca3_ctskip_needed = 1 IF NOT IS_CHAR_DEAD ca3_forkie3 IF NOT IS_CAR_DEAD ca3_forklift3 TASK_CAR_DRIVE_TO_COORD ca3_forkie3 ca3_forklift3 1076.8041 2080.4915 9.8203 9.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF IF ca3_Cover_Blown_Cut = 3 IF timerb > 1000 ca3_ctskip_needed = 1 ENDIF IF timerb > 3000 ca3_Cover_Blown_Cut = 5 ca3_counter = 2 timerb = 0 ENDIF ENDIF IF ca3_Cover_Blown_Cut = 5 IF NOT IS_CAR_DEAD ca3_mafia_car // IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR ca3_mafia_car IF NOT IS_CHAR_DEAD ca3_gate1P CLEAR_CHAR_TASKS ca3_gate1P OPEN_SEQUENCE_TASK ca3_gate1cutseq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 1062.3447 2087.3176 9.8203 PEDMOVE_RUN 10000 //TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK ca3_gate1cutseq PERFORM_SEQUENCE_TASK ca3_gate1P ca3_gate1cutseq CLEAR_SEQUENCE_TASK ca3_gate1cutseq ENDIF ca3_Cover_Blown_Cut = 6 timerb = 0 ENDIF ENDIF IF ca3_Cover_Blown_Cut = 6 IF timerb > 1000 IF NOT IS_CAR_DEAD ca3_mafia_car IF NOT IS_CHAR_DEAD ca3_gate2P CLEAR_CHAR_TASKS ca3_gate2p OPEN_SEQUENCE_TASK ca3_gate2cutseq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 1056.8739 2084.1362 9.8203 PEDMOVE_RUN 10000 //TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK ca3_gate2cutseq PERFORM_SEQUENCE_TASK ca3_gate2P ca3_gate2cutseq CLEAR_SEQUENCE_TASK ca3_gate2cutseq ENDIF timerb = 0 ca3_Cover_Blown_Cut = 8 ENDIF ENDIF ENDIF IF ca3_Cover_blown_cut = 8 IF timerb > 3700 ca3_Cover_Blown_Cut = 10 ENDIF ENDIF IF ca3_Cover_Blown_Cut = 10 SWITCH_WIDESCREEN OFF ca3_ctskip_needed = 0 SET_CHAR_HEADING scplayer 228.0 IF NOT IS_CHAR_DEAD ca3_gate1P CLEAR_CHAR_TASKS_IMMEDIATELY ca3_gate1P // SET_CHAR_COORDINATES ca3_gate1P 1066.6038 2103.0898 9.8203 SET_CHAR_COORDINATES ca3_gate1P 1073.5579 2094.4126 13.6896 SET_CHAR_HEADING ca3_gate1P 83.0 ENDIF IF NOT IS_CHAR_DEAD ca3_gate2P CLEAR_CHAR_TASKS_IMMEDIATELY ca3_gate2P SET_CHAR_COORDINATES ca3_gate2P 1066.0961 2098.8496 13.7429 SET_CHAR_HEADING ca3_gate2P 132.0 ENDIF // IF NOT IS_CAR_DEAD ca3_mafia_car // STOP_PLAYBACK_RECORDED_CAR ca3_mafia_car // // SET_CAR_COORDINATES ca3_mafia_car 1048.5704 2090.9443 9.8130 // SET_CAR_HEADING ca3_mafia_car 173.5338 // // ENDIF IF NOT IS_CAR_DEAD ca3_forklift3 SET_CAR_COORDINATES ca3_forklift3 1076.8041 2080.4915 9.8203 ENDIF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT CLEAR_PRINTS PRINT_NOW ca3_8 6000 1 //ca3_ctskip_needed = 0 SET_PLAYER_CONTROL player1 ON //GOSUB ca3_Cover_Blown ca3_Cover_Blown_Cut = 99 //ca3_BeenSpotted = 3 ca3_BeenSpotted = 99 //REMOVE_BLIP ca3_gate1B //REMOVE_BLIP ca3_gate2B ENDIF IF ca3_CheckMachineStatus = 1 c = 0 WHILE c < 9 IF ca3_machine_flag[c] = 0 GET_OBJECT_HEALTH ca3_machine[c] ca3_temp_int IF HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON ca3_machine[c] WEAPONTYPE_SPAS12_SHOTGUN ca3_temp_int = 0 ENDIF IF HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON ca3_machine[c] WEAPONTYPE_SHOTGUN ca3_temp_int = 0 ENDIF IF HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON ca3_machine[c] WEAPONTYPE_SAWNOFF_SHOTGUN ca3_temp_int = 0 ENDIF IF ca3_temp_int = 0 GET_OBJECT_COORDINATES ca3_machine[c] ca3_machineX ca3_machineY ca3_machineZ //CREATE_FX_SYSTEM ws_factorysmoke ca3_machineX ca3_machineY ca3_machineZ TRUE ca3_fx[c] CREATE_FX_SYSTEM overheat_car_electric ca3_machineX ca3_machineY ca3_machineZ TRUE ca3_fx[c] //GET_OBJECT_HEADING atm[c] h ca3_machineZ = ca3_machineZ + 1.0 ADD_EXPLOSION_VARIABLE_SHAKE ca3_machineX ca3_machineY ca3_machineZ EXPLOSION_SMALL 1.0 BREAK_OBJECT ca3_machine[c] TRUE REMOVE_BLIP ca3_machineblip[c] MAKE_OBJECT_TARGETTABLE ca3_machine[c] FALSE IF NOT temp_fx = 99 KILL_FX_SYSTEM ca3_fx[temp_fx] ENDIF PLAY_FX_SYSTEM ca3_fx[c] temp_fx = c //LVAR_INT broken_atm[4] //CREATE_OBJECT_NO_OFFSET KMB_ATM2 x y z broken_atm[c] //BROKEN ATM MODEL HERE //SET_OBJECT_HEADING broken_atm[c] h //SET_OBJECT_HEALTH broken_atm[c] 150 ++ ca3_machine_flag[c] ca3_MachinesDestroyed ++ ENDIF ENDIF ++ c ENDWHILE IF ca3_goon1proxim = 0 IF NOT IS_CHAR_DEAD ca3_goon1p IF LOCATE_CHAR_ANY_MEANS_3D ca3_goon1p 1067.5807 2122.2510 9.8203 1.5 1.5 3.0 FALSE CLEAR_CHAR_TASKS ca3_goon1p OPEN_SEQUENCE_TASK ca3_g1seq TASK_STAY_IN_SAME_PLACE -1 TRUE //SWITCH_WIDESCREEN ON TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 scplayer DUCK_RANDOMLY 5000 60 CLOSE_SEQUENCE_TASK ca3_g1seq PERFORM_SEQUENCE_TASK ca3_goon1P ca3_g1seq CLEAR_SEQUENCE_TASK ca3_g1seq ca3_goon1proxim = 1 ENDIF ENDIF ENDIF IF ca3_MachinesDestroyed = 9 //PRINT_NOW CA3_12 3000 1 //WAIT 4000 //CLEAR_PRINTS ca3_BlowUpMachines = 8 ca3_CheckMachineStatus = 99 ENDIF ENDIF //IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1084.5360 2078.6572 14.3504 20.0 20.0 20.0 FALSE // IF ca3_bossrammy = 0 // GOSUB ca3_bossfight // ca3_bossrammy = 1 // PRINT ca3_17 4000 1 //ENDIF //ENDIF IF ca3_begingrease = 0 IF ca3_MachinesDestroyed = 3 //Camera coordinates //1018.9890 2077.7812 21.5002 1019.9006 2077.7725 21.0893 // WRITE_DEBUG test // WAIT 20000 CREATE_CHAR PEDTYPE_MISSION1 wmymech 1020.0171 2082.9004 17.9296 ca3_greaser1 GIVE_WEAPON_TO_CHAR ca3_greaser1 WEAPONTYPE_SPAS12_SHOTGUN 2000 SET_CHAR_HEADING ca3_greaser1 269.9465 SET_CHAR_DECISION_MAKER ca3_greaser1 ca3_goondm IF NOT IS_CHAR_DEAD ca3_greaser1 CLEAR_CHAR_TASKS ca3_greaser1 OPEN_SEQUENCE_TASK ca3_greaser1seq TASK_GO_STRAIGHT_TO_COORD -1 1038.7166 2082.7983 13.9297 PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ca3_greaser1seq PERFORM_SEQUENCE_TASK ca3_greaser1 ca3_greaser1seq CLEAR_SEQUENCE_TASK ca3_greaser1seq ENDIF CREATE_CHAR PEDTYPE_MISSION1 wmymech 1020.2634 2097.1851 13.9297 ca3_greaser2 GIVE_WEAPON_TO_CHAR ca3_greaser2 WEAPONTYPE_PISTOL 2000 SET_CHAR_HEADING ca3_greaser2 274.9465 SET_CHAR_DECISION_MAKER ca3_greaser2 ca3_goondm IF NOT IS_CHAR_DEAD ca3_greaser2 CLEAR_CHAR_TASKS ca3_greaser2 OPEN_SEQUENCE_TASK ca3_greaser2seq TASK_GO_STRAIGHT_TO_COORD -1 1038.4263 2098.6438 9.8203 PEDMOVE_RUN -2 //TASK_TOGGLE_DUCK -1 TRUE //TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ca3_greaser2seq PERFORM_SEQUENCE_TASK ca3_greaser2 ca3_greaser2seq CLEAR_SEQUENCE_TASK ca3_greaser2seq ENDIF CREATE_CHAR PEDTYPE_MISSION1 wmymech 1019.6710 2078.1265 13.9297 ca3_greaser3 GIVE_WEAPON_TO_CHAR ca3_greaser3 WEAPONTYPE_MICRO_UZI 2000 SET_CHAR_HEADING ca3_greaser3 267.9465 SET_CHAR_DECISION_MAKER ca3_greaser3 ca3_goondm IF NOT IS_CHAR_DEAD ca3_greaser3 CLEAR_CHAR_TASKS ca3_greaser3 OPEN_SEQUENCE_TASK ca3_greaser3seq // TASK_GO_STRAIGHT_TO_COORD -1 1067.6794 2080.0520 9.8203 PEDMOVE_RUN -2 TASK_GO_STRAIGHT_TO_COORD -1 1068.7075 2085.2405 9.8203 PEDMOVE_RUN -2 TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ca3_greaser3seq PERFORM_SEQUENCE_TASK ca3_greaser3 ca3_greaser3seq CLEAR_SEQUENCE_TASK ca3_greaser3seq ENDIF ca3_begingrease = 1 ENDIF ENDIF IF ca3_beginbackup = 0 IF ca3_machinesdestroyed > 5 CUSTOM_PLATE_FOR_NEXT_CAR ADMIRAL G1RUYHUN CREATE_CAR ADMIRAL 1029.8561 2142.8579 9.8130 ca3_backupdriveby SET_CAR_HEADING ca3_backupdriveby 205.1437 CHANGE_CAR_COLOUR ca3_backupdriveby 123 10 SET_CAR_PROOFS ca3_backupdriveby TRUE TRUE TRUE TRUE TRUE LOCK_CAR_DOORS ca3_backupdriveby CARLOCK_LOCKOUT_PLAYER_ONLY // was mission2 pedtype FREEZE_CAR_POSITION ca3_backupdriveby TRUE SET_CAN_BURST_CAR_TYRES ca3_backupdriveby FALSE ca3_beginbackup = 1 ENDIF ENDIF IF ca3_beginbackup = 1 IF ca3_machinesdestroyed > 5 IF NOT IS_CAR_DEAD ca3_backupdriveby IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer ca3_backupdriveby 25.0 25.0 FALSE CREATE_CHAR_INSIDE_CAR ca3_backupdriveby PEDTYPE_MISSION1 VMAFF1 ca3_backupdriver //SET_CHAR_SUFFERS_CRITICAL_HITS sw7_escapechauffeur FALSE SET_CHAR_DECISION_MAKER ca3_backupdriver ca3_goondm GIVE_WEAPON_TO_CHAR ca3_backupdriver WEAPONTYPE_MICRO_UZI 2000 CREATE_CHAR_AS_PASSENGER ca3_backupdriveby PEDTYPE_MISSION1 VMAFF2 1 ca3_backup1 SET_CHAR_DECISION_MAKER ca3_backup1 ca3_goondm GIVE_WEAPON_TO_CHAR ca3_backup1 WEAPONTYPE_MICRO_UZI 2000 TASK_DRIVE_BY ca3_backup1 scplayer -1 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 90 CREATE_CHAR_AS_PASSENGER ca3_backupdriveby PEDTYPE_MISSION1 VMAFF4 2 ca3_backup2 SET_CHAR_DECISION_MAKER ca3_backup2 ca3_goondm GIVE_WEAPON_TO_CHAR ca3_backup2 WEAPONTYPE_MICRO_UZI 2000 TASK_DRIVE_BY ca3_backup2 scplayer -1 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 90 FREEZE_CAR_POSITION ca3_backupdriveby FALSE SET_CAR_TEMP_ACTION ca3_backupdriveby TEMPACT_GOFORWARD 5500 LOCK_CAR_DOORS ca3_backupdriveby CARLOCK_UNLOCKED ca3_beginbackup = 2 timerb = 0 ENDIF ENDIF ENDIF ENDIF // ca3_beginbackup = 0 condition check IF ca3_beginbackup = 2 IF timerb > 6500 IF NOT IS_CAR_DEAD ca3_backupdriveby IF NOT IS_CHAR_DEAD ca3_backupdriver IF IS_CAR_STOPPED ca3_backupdriveby SET_CAR_PROOFS ca3_backupdriveby FALSE FALSE FALSE FALSE FALSE CLEAR_CHAR_TASKS ca3_backupdriver OPEN_SEQUENCE_TASK ca3_backupdriverseq TASK_LEAVE_ANY_CAR -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ca3_backupdriverseq PERFORM_SEQUENCE_TASK ca3_backupdriver ca3_backupdriverseq CLEAR_SEQUENCE_TASK ca3_backupdriverseq ca3_beginbackup = 3 timerb = 0 ENDIF ENDIF ENDIF ENDIF ENDIF // ca3_beginbackup = 1 condition check IF ca3_beginbackup = 3 IF timerb > 15000 IF NOT IS_CAR_DEAD ca3_backupdriveby IF NOT IS_CHAR_DEAD ca3_backup2 IF IS_CAR_STOPPED ca3_backupdriveby CLEAR_CHAR_TASKS ca3_backup2 OPEN_SEQUENCE_TASK ca3_backup2seq TASK_LEAVE_ANY_CAR -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ca3_backup2seq PERFORM_SEQUENCE_TASK ca3_backup2 ca3_backup2seq CLEAR_SEQUENCE_TASK ca3_backup2seq ca3_beginbackup = 4 ENDIF ENDIF ENDIF ENDIF ENDIF // ca3_beginbackup = 2 condition check IF ca3_beginbackup = 4 IF timerb > 25000 IF NOT IS_CAR_DEAD ca3_backupdriveby IF NOT IS_CHAR_DEAD ca3_backup1 IF IS_CAR_STOPPED ca3_backupdriveby CLEAR_CHAR_TASKS ca3_backup1 OPEN_SEQUENCE_TASK ca3_backup1seq TASK_LEAVE_ANY_CAR -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ca3_backup1seq PERFORM_SEQUENCE_TASK ca3_backup1 ca3_backup1seq CLEAR_SEQUENCE_TASK ca3_backup1seq ca3_beginbackup = 5 ENDIF ENDIF ENDIF ENDIF ENDIF // ca3_beginbackup = 4 condition check GOTO casino3_main_mission_loop // Procedures ca3_Cover_Blown: IF NOT IS_CHAR_DEAD ca3_gate1P TASK_KILL_CHAR_ON_FOOT ca3_gate1P scplayer ENDIF IF NOT IS_CHAR_DEAD ca3_gate2P TASK_KILL_CHAR_ON_FOOT ca3_gate2P scplayer ENDIF IF NOT IS_CHAR_DEAD ca3_forkie1P SET_CHAR_COORDINATES ca3_forkie1P 1084.1256 2107.6375 14.3504 SET_CHAR_HEADING ca3_forkie1P 111.4468 GIVE_WEAPON_TO_CHAR ca3_forkie1P WEAPONTYPE_PISTOL 2000 ENDIF /* IF NOT IS_CHAR_DEAD ca3_contextgoon SET_CHAR_COORDINATES ca3_contextgoon 1080.7861 2086.4829 9.8203 SET_CHAR_HEADING ca3_contextgoon 82.4468 ENDIF */ CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 1084.7100 2116.7356 14.3504 ca3_spottedgoon SET_CHAR_HEADING ca3_spottedgoon 94.4201 GIVE_WEAPON_TO_CHAR ca3_spottedgoon WEAPONTYPE_MICRO_UZI 2000 SET_CHAR_DECISION_MAKER ca3_spottedgoon ca3_goondm // REMOVE_BLIP ca3_gate1B // REMOVE_BLIP ca3_gate2B /* IF NOT IS_CHAR_DEAD ca3_forkie1P TASK_KILL_CHAR_ON_FOOT ca3_forkie1P scplayer ENDIF IF NOT IS_CHAR_DEAD ca3_forkie2P TASK_KILL_CHAR_ON_FOOT ca3_forkie2P scplayer ENDIF */ RETURN ca3_In_Factory_Was_Not_Spotted: IF ca3_setsequences = 0 IF NOT IS_CHAR_DEAD ca3_contextgoon //GIVE_WEAPON_TO_CHAR ca3_forkie1P WEAPONTYPE_MICRO_UZI 2000 CLEAR_CHAR_TASKS ca3_contextgoon OPEN_SEQUENCE_TASK ca3_cgseq TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE //TASK_JUMP -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ca3_cgseq PERFORM_SEQUENCE_TASK ca3_contextgoon ca3_cgseq CLEAR_SEQUENCE_TASK ca3_cgseq ENDIF IF NOT IS_CHAR_DEAD ca3_goon1P OPEN_SEQUENCE_TASK ca3_g1seq TASK_GO_STRAIGHT_TO_COORD -1 1067.5807 2122.2510 9.8203 PEDMOVE_RUN -2 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ca3_g1seq PERFORM_SEQUENCE_TASK ca3_goon1P ca3_g1seq CLEAR_SEQUENCE_TASK ca3_g1seq ENDIF IF NOT IS_CHAR_DEAD ca3_goon2P OPEN_SEQUENCE_TASK ca3_g2seq TASK_GO_TO_COORD_WHILE_SHOOTING -1 1085.5961 2106.8298 9.8203 PEDMOVE_RUN 100.0 2.0 scplayer //TASK_GO_TO_COORD_WHILE_SHOOTING -1 1079.8793 2078.3547 14.3516 PEDMOVE_RUN 100.0 2.0 scplayer //TASK_GO_TO_COORD_WHILE_SHOOTING -1 1079.9498 2077.4146 14.3516 PEDMOVE_JOG 100.0 2.0 scplayer TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ca3_g2seq PERFORM_SEQUENCE_TASK ca3_goon2P ca3_g2seq CLEAR_SEQUENCE_TASK ca3_g2seq ENDIF IF NOT IS_CHAR_DEAD ca3_goon3P OPEN_SEQUENCE_TASK ca3_g3seq TASK_GO_TO_COORD_WHILE_SHOOTING -1 1082.3915 2091.1299 14.3504 PEDMOVE_RUN 100.0 1.0 scplayer TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 scplayer DUCK_RANDOMLY 3000 50 CLOSE_SEQUENCE_TASK ca3_g3seq PERFORM_SEQUENCE_TASK ca3_goon3P ca3_g3seq CLEAR_SEQUENCE_TASK ca3_g3seq ENDIF IF NOT IS_CHAR_DEAD ca3_foreman1 CLEAR_CHAR_TASKS ca3_foreman1 // SET_CHAR_COORDINATES ca3_foreman1 1086.0752 2139.8628 14.3504 TASK_KILL_CHAR_ON_FOOT ca3_foreman1 scplayer TASK_STAY_IN_SAME_PLACE ca3_foreman1 TRUE ENDIF IF NOT IS_CHAR_DEAD ca3_forkie1P CLEAR_CHAR_TASKS ca3_forkie1P GIVE_WEAPON_TO_CHAR ca3_forkie1P WEAPONTYPE_PISTOL 2000 TASK_KILL_CHAR_ON_FOOT ca3_forkie1P scplayer ENDIF IF NOT IS_CHAR_DEAD ca3_forkie2P //move this guy CLEAR_CHAR_TASKS ca3_forkie2P GIVE_WEAPON_TO_CHAR ca3_forkie2P WEAPONTYPE_PISTOL 2000 SET_CHAR_COORDINATES ca3_forkie2P 1057.0553 2122.3193 13.6896 SET_CHAR_HEADING ca3_forkie2P 279.0 OPEN_SEQUENCE_TASK ca3_forkie2seq TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ca3_forkie2seq PERFORM_SEQUENCE_TASK ca3_forkie2P ca3_forkie2seq CLEAR_SEQUENCE_TASK ca3_forkie2seq ENDIF IF NOT IS_CHAR_DEAD ca3_gate1P TASK_KILL_CHAR_ON_FOOT ca3_gate1P scplayer ENDIF IF NOT IS_CHAR_DEAD ca3_gate2P TASK_KILL_CHAR_ON_FOOT ca3_gate2P scplayer ENDIF /* IF NOT IS_CHAR_DEAD ca3_bossP OPEN_SEQUENCE_TASK ca3_bossseq TASK_GO_TO_COORD_WHILE_SHOOTING -1 1071.2762 2145.0120 14.3516 PEDMOVE_RUN 100.0 5.0 scplayer TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 scplayer DUCK_RANDOMLY 3000 50 CLOSE_SEQUENCE_TASK ca3_bossseq PERFORM_SEQUENCE_TASK ca3_bossP ca3_bossseq CLEAR_SEQUENCE_TASK ca3_bossseq ENDIF */ ca3_setsequences = 1 ENDIF RETURN ca3_In_Factory_Was_Spotted: IF ca3_setsequences = 0 IF NOT IS_CHAR_DEAD ca3_contextgoon //GIVE_WEAPON_TO_CHAR ca3_forkie1P WEAPONTYPE_MICRO_UZI 2000 CLEAR_CHAR_TASKS ca3_contextgoon OPEN_SEQUENCE_TASK ca3_cgseq TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE //TASK_JUMP -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ca3_cgseq PERFORM_SEQUENCE_TASK ca3_contextgoon ca3_cgseq CLEAR_SEQUENCE_TASK ca3_cgseq ENDIF IF NOT IS_CHAR_DEAD ca3_spottedgoon //GIVE_WEAPON_TO_CHAR ca3_forkie1P WEAPONTYPE_MICRO_UZI 2000 CLEAR_CHAR_TASKS ca3_spottedgoon OPEN_SEQUENCE_TASK ca3_sgseq //TASK_PLAY_ANIM -1 WeaponRollout PED 8.0 FALSE TRUE TRUE FALSE -1 TASK_JUMP -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ca3_sgseq PERFORM_SEQUENCE_TASK ca3_spottedgoon ca3_sgseq CLEAR_SEQUENCE_TASK ca3_sgseq ENDIF IF NOT IS_CHAR_DEAD ca3_forkie1P GIVE_WEAPON_TO_CHAR ca3_forkie1P WEAPONTYPE_PISTOL 2000 CLEAR_CHAR_TASKS ca3_forkie1P OPEN_SEQUENCE_TASK ca3_forkie1seq TASK_JUMP -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ca3_forkie1seq PERFORM_SEQUENCE_TASK ca3_forkie1P ca3_forkie1seq CLEAR_SEQUENCE_TASK ca3_forkie1seq ENDIF IF NOT IS_CHAR_DEAD ca3_forkie2P //Move this guy GIVE_WEAPON_TO_CHAR ca3_forkie2P WEAPONTYPE_MICRO_UZI 2000 CLEAR_CHAR_TASKS ca3_forkie2P SET_CHAR_COORDINATES ca3_forkie2P 1057.0553 2122.3193 13.6896 SET_CHAR_HEADING ca3_forkie2P 279.0 OPEN_SEQUENCE_TASK ca3_forkie2seq TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ca3_forkie2seq PERFORM_SEQUENCE_TASK ca3_forkie2P ca3_forkie2seq CLEAR_SEQUENCE_TASK ca3_forkie2seq ENDIF IF NOT IS_CHAR_DEAD ca3_goon1P OPEN_SEQUENCE_TASK ca3_g1seq TASK_GO_STRAIGHT_TO_COORD -1 1067.5807 2122.2510 9.8203 PEDMOVE_RUN -2 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ca3_g1seq PERFORM_SEQUENCE_TASK ca3_goon1P ca3_g1seq CLEAR_SEQUENCE_TASK ca3_g1seq ENDIF IF NOT IS_CHAR_DEAD ca3_goon2P OPEN_SEQUENCE_TASK ca3_g2seq TASK_GO_TO_COORD_WHILE_SHOOTING -1 1085.5961 2106.8298 9.8203 PEDMOVE_RUN 100.0 2.0 scplayer // TASK_GO_TO_COORD_WHILE_SHOOTING -1 1079.8793 2078.3547 14.3516 PEDMOVE_RUN 100.0 2.0 scplayer //TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK ca3_g2seq PERFORM_SEQUENCE_TASK ca3_goon2P ca3_g2seq CLEAR_SEQUENCE_TASK ca3_g2seq ENDIF IF NOT IS_CHAR_DEAD ca3_goon3P OPEN_SEQUENCE_TASK ca3_g3seq TASK_GO_TO_COORD_WHILE_SHOOTING -1 1082.3915 2091.1299 14.3504 PEDMOVE_RUN 100.0 1.0 scplayer TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 scplayer DUCK_RANDOMLY 3000 50 CLOSE_SEQUENCE_TASK ca3_g3seq PERFORM_SEQUENCE_TASK ca3_goon3P ca3_g3seq CLEAR_SEQUENCE_TASK ca3_g3seq ENDIF IF NOT IS_CHAR_DEAD ca3_foreman1 CLEAR_CHAR_TASKS ca3_foreman1 // SET_CHAR_COORDINATES ca3_foreman1 1086.0752 2139.8628 14.3504 TASK_STAY_IN_SAME_PLACE ca3_foreman1 TRUE TASK_KILL_CHAR_ON_FOOT ca3_foreman1 scplayer ENDIF IF NOT IS_CHAR_DEAD ca3_gate1P TASK_KILL_CHAR_ON_FOOT ca3_gate1P scplayer ENDIF IF NOT IS_CHAR_DEAD ca3_gate2P TASK_KILL_CHAR_ON_FOOT ca3_gate2P scplayer ENDIF /* IF NOT IS_CHAR_DEAD ca3_bossP OPEN_SEQUENCE_TASK ca3_bossseq TASK_GO_TO_COORD_WHILE_SHOOTING -1 1071.2762 2145.0120 14.3516 PEDMOVE_RUN 100.0 5.0 scplayer TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 scplayer DUCK_RANDOMLY 3000 50 CLOSE_SEQUENCE_TASK ca3_bossseq PERFORM_SEQUENCE_TASK ca3_bossP ca3_bossseq CLEAR_SEQUENCE_TASK ca3_bossseq ENDIF */ ca3_setsequences = 1 ENDIF RETURN ca3_bossfight: IF NOT IS_CHAR_DEAD ca3_bossP OPEN_SEQUENCE_TASK ca3_bossseq //TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 scplayer DUCK_RANDOMLY 3000 50 CLOSE_SEQUENCE_TASK ca3_bossseq PERFORM_SEQUENCE_TASK ca3_bossP ca3_bossseq CLEAR_SEQUENCE_TASK ca3_bossseq ENDIF RETURN // **************************************** Mission casino3 failed *********************** mission_casino3_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // **************************************** mission casino3 passed ************************ mission_casino3_passed: // all weapons should now be unlocked! WRITE_LOG "UNLOCK_ACHIEVEMENT LOTS_OF_GUNS" flag_casino_mission_counter ++ //Used to terminate this mission loop in the main script. These variables will be set up in the main.sc REGISTER_MISSION_PASSED ( CASINO3 ) //Used in the stats PLAYER_MADE_PROGRESS 1 PRINT_WITH_NUMBER_BIG ( M_PASSS ) 10000 5000 1 AWARD_PLAYER_MISSION_RESPECT 20 ADD_SCORE player1 10000 //AWARD_PLAYER_MISSION_RESPECT 20 //SET_INT_STAT PASSED_CASINO3 1 PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL PLAYER1 REMOVE_BLIP casino_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT 2026.6028 1007.7353 9.8127 casino_blip_icon casino_contact_blip RETURN // ********************************** mission cleanup *********************************** mission_cleanup_casino3: IF NOT IS_CAR_DEAD ca3_mafia_car SET_CAR_PROOFS ca3_mafia_car FALSE FALSE FALSE FALSE FALSE ENDIF IF NOT IS_CAR_DEAD ca3_backupdriveby SET_CAR_PROOFS ca3_backupdriveby FALSE FALSE FALSE FALSE FALSE ENDIF IF DOES_OBJECT_EXIST fourdragons_door SET_OBJECT_COORDINATES fourdragons_door 1903.383 967.62 11.438 SET_OBJECT_HEADING fourdragons_door 0.0 ENDIF SET_MAX_WANTED_LEVEL ca3_wantedlevel GET_GAME_TIMER timer_mobile_start //Used to reset the mobile phone timer so it doesn't ring immediately after the mission CLEAR_WANTED_LEVEL player1 //UNLOAD_SPECIAL_CHARACTER 1 IF DOES_OBJECT_EXIST ca3_loadingbay SET_OBJECT_COORDINATES ca3_loadingbay 1055.629 2087.67 12.469 ENDIF //REMOVE_BLIP ca3_plvanB REMOVE_BLIP ca3_factoryB //REMOVE_BLIP ca3_gate1B //REMOVE_BLIP ca3_gate2B REMOVE_BLIP ca3_exitB //REMOVE_BLIP ca3_bossB c = 0 WHILE c < 9 REMOVE_BLIP ca3_machineblip[c] // KILL_FX_SYSTEM ca3_fx[c] ++ c ENDWHILE IF NOT temp_fx = 99 KILL_FX_SYSTEM ca3_fx[temp_fx] ENDIF //REMOVE_BLIP ca3_foremanB //REMOVE_BLIP ca3_keypadB //MARK_ANIMATION_AS_NO_LONGER_NEEDED BOMBER MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF1 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF2 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF3 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF4 MARK_MODEL_AS_NO_LONGER_NEEDED TRIADA MARK_MODEL_AS_NO_LONGER_NEEDED TRIADB MARK_MODEL_AS_NO_LONGER_NEEDED WASHING MARK_MODEL_AS_NO_LONGER_NEEDED wmymech //MARK_MODEL_AS_NO_LONGER_NEEDED wmymech MARK_MODEL_AS_NO_LONGER_NEEDED shotgspa MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED BAT MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED ADMIRAL MARK_MODEL_AS_NO_LONGER_NEEDED BRAVURA MARK_MODEL_AS_NO_LONGER_NEEDED FORKLIFT REMOVE_ALL_SCRIPT_FIRES /* DELETE_OBJECT ca3_oilspill DELETE_OBJECT ca3_oiltrail DELETE_OBJECT ca3_oiltrailignite */ //REMOVE_PICKUP ca3_exting flag_player_on_mission = 0 MISSION_HAS_FINISHED //UNLOAD_SPECIAL_CHARACTER 1 RETURN } /* [CA3_1:CASINO3] ~s~Head towards the ~y~factory unit~s~ on the outskirts of town. You're going to throw a major spanner in the works. [CA3_2:CASINO3] ~s~Those mobsters have some ~r~guards~s~ watching the main entrance. Your job will be easier if you can get into the factory unnoticed. [CA3_3:CASINO3] ~w~You'll wish you never brought your sorry ass in here. You're going to be crunched into one-dollar chips! [CA3_4:CASINO3] ~w~Shit! I got my momma's birthday party tomorra and look at my shirt! [CA3_5:CASINO3] ~w~We ain't expecting any delivery today? Might be trouble brewing, we're coming in for support! [CA3_6:CASINO3] ~w~C'mon, I want a good spot in case any action starts! Park up gentle this time! [CA3_7:CASINO3] ~s~Hit those ~g~machines~s~ with everything you've got! [CA3_8:CASINO3] ~s~They're expecting visitors now! Get into the ~y~factory~s~ and start acting blue-collar! [CA3_9:CASINO3] ~w~Get the crew ready, this punk ain't here for an interview! [CA3_10:CASINO3] ~w~What the fuck are you doing round here? This ain't a sideshow! [CA3_11:CASINO3] ~s~Don't let this guy get wasted! We won't be able to complete the job if he's toast! [CA3_12:CASINO3] ~s~Excellent! Those machines are outta commission! [CA3_17:CASINO3] ~w~Boss: Stay away! I'll make ya eat your fucking shoes! [CA3_20:CASINO3] ~r~What the fuck? I said no rough stuff! The mafia are gonna be on red alert now! Dumbass! [CA3_22:CASINO3] ~s~Heads up! It's the minimum wage crew! Get safely away from the factory to complete the job! [CA3_23:CASINO3] ~s~Great work, the job's done! Get back to ~y~Woozie's casino~s~ in one piece! */ MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // *********************************** Casino 7 *************************************** // ********************************* Clear & Present Danger ******************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME CASINO7 // Mission start stuff GOSUB mission_start_mafia1 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_mafia1_failed ENDIF GOSUB mission_cleanup_mafia1 MISSION_END { // Variables for mission // **************************************** Mission Start ********************************** mission_start_mafia1: LOAD_MISSION_TEXT CASINO7 REGISTER_MISSION_GIVEN flag_player_on_mission = 1 WAIT 0 SET_AREA_VISIBLE 11 LOAD_CUTSCENE CAS_7b WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 // ****************************************START OF CUTSCENE******************************** // ****************************************END OF CUTSCENE********************************** // fades the screen in SET_FADING_COLOUR 0 0 0 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2016.4222 1017.1024 10.0 //TRIAD CASINO REQUEST_COLLISION 2025.80 1007.87 LOAD_SCENE_IN_DIRECTION 2025.80 1007.87 9.81 279.83 SET_CHAR_COORDINATES scplayer 2025.80 1007.87 9.81 SET_CHAR_HEADING scplayer 279.83 RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON DO_FADE 2000 FADE_IN GOTO mission_mafia1_passed mission_mafia1_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // **************************************** mission mafia1 passed ************************ mission_mafia1_passed: REMOVE_BLIP casino_contact_blip flag_casino_mission_counter ++ REGISTER_MISSION_PASSED ( CASINO7 ) //PRINT_WITH_NUMBER_BIG ( M_PASS ) 200 5000 1 //"Mission Passed!" //ADD_SCORE player1 200 SET_INT_STAT PASSED_CASINO7 1 CLEAR_WANTED_LEVEL player1 PLAYER_MADE_PROGRESS 1 RETURN // ********************************** mission cleanup ************************************** mission_cleanup_mafia1: flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* Casino 4 ****************************************** // *********************************** Paul & Maccer *************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME CASINO4 //////////////////////////////////////// Mission start stuff\\\\\\\\\\\\\\\\\\\\\ /////////////////////////////request needed models GOSUB mission_start_casino4 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_casino4_failed ENDIF GOSUB mission_cleanup_casino4 MISSION_END { /////////////////////////////////////// Variables for mission\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ LVAR_FLOAT cas4_car_x cas4_car_y cas4_car_z LVAR_INT cas4_decision cas4_decision2 cas4_decision3 LVAR_FLOAT cas4_fight_x cas4_fight_y cas4_fight_z cas4_fight_heading ////////////////// FLAGS \\\\\\\\\\\\\\\\\\\\\\\\\\\ LVAR_INT cas4_paul_macca_created_flag LVAR_INT cas4_at_end_flag LVAR_INT cas4_blip_added_flag LVAR_INT cas4_player_reached_desert_flag LVAR_INT cas4_car_created_flag LVAR_INT cas4_played_cutscene_flag LVAR_INT cas4_at_casino_flag LVAR_INT cas4_mission_progression_flag LVAR_INT cas4_snake_blip_flag LVAR_INT cas4_safety_flag LVAR_INT cas4_pig_in_car_flag LVAR_INT cas4_old_in_car_flag LVAR_INT cas4_old_task_assigned cas4_incest_task_assigned cas4_sister_task_assigned cas4_pig_task_assigned cas4_snake_car_created_flag LVAR_INT cas4_driver1_in_car cas4_driver2_in_car LVAR_INT cas4_crap_assigned LVAR_INT cas4_sister_driving cas4_incest_driving ///////////////// BLIPS \\\\\\\\\\\\\\\\\\\\\\\\\\\ LVAR_INT cas4_desert_blip LVAR_INT cas4_paul_blip LVAR_INT cas4_macca_blip LVAR_INT cas4_end_blip LVAR_INT cas4_snake_blip ///////////////// PEOPLE LVAR_INT cas4_macca_ped LVAR_INT cas4_paul_ped LVAR_INT cas4_old_ped LVAR_INT cas4_pig_ped LVAR_INT cas4_incest_ped LVAR_INT cas4_sister_ped ///////////////// VEHICLES \\\\\\\\\\\\\\\\\\\\\\\\\\ LVAR_INT cas4_player_car LVAR_INT cas4_quad_car LVAR_INT cas4_dune_car ////////////////// SEQUENCES \\\\\\\\\\\\\\\\\\\\\\\\\ LVAR_INT cas4_cutscene_macca_seq LVAR_INT cas4_cutscene_paul_seq LVAR_INT cas4_cutscene_player_seq LVAR_INT cas4_old_seq LVAR_INT cas4_pig_seq LVAR_INT cas4_sister_seq LVAR_INT cas4_incest_seq LVAR_INT cas4_sister_drive_seq LVAR_INT cas4_incest_drive_seq LVAR_INT cas4_seq LVAR_INT cas4_task_status //////////////////// NUMBERS \\\\\\\\\\\\\\\\\\\ LVAR_FLOAT cas4_playerx LVAR_FLOAT cas4_playery LVAR_FLOAT cas4_playerz LVAR_FLOAT cas4_animation_time LVAR_FLOAT cas4_carx LVAR_FLOAT cas4_cary LVAR_FLOAT cas4_carz LVAR_INT cas4_hill_billy_stand_played ////////////// HILL BILLY STAND OFF VARIABLES \\\\\\\\\\\\ LVAR_INT cas4_counter LVAR_INT cas4_hill_billies_alive LVAR_INT cas4_hill_billy_dead[4] LVAR_INT cas4_hill_billy_blip[4] LVAR_INT cas4_hill_billy_seq[4] LVAR_INT cas4_temp_hill_billy[4] LVAR_INT cas4_macca_fight_blip LVAR_INT cas4_paul_fight_blip //////////////////// EXTRAS //////////////// LVAR_INT cas4_paul_with_player LVAR_INT cas4_macca_with_player LVAR_INT cas4_fighting LVAR_INT cas4_vomit_status LVAR_INT cas4_piss_status LVAR_INT cas4_paul_busy LVAR_INT cas4_macca_busy LVAR_INT cas4_done_pisspuke LVAR_INT cas4_done_piss cas4_done_puke LVAR_INT cas4_both_with_player LVAR_INT cas4_paul_told_to_enter LVAR_INT cas4_macca_told_to_enter LVAR_INT cas4_message_dsplayed LVAR_INT cas4_macca_playing_fx LVAR_INT cas4_paul_playing_fx // coords //LVAR_FLOAT cas4_dirx cas4_diry cas4_dirz // other LVAR_INT cas4_free_seats LVAR_INT cas4_vomit cas4_piss ///// AUDIO CRAP VAR_TEXT_LABEL cas4_text[114] LVAR_INT cas4_audio[114] LVAR_INT cas4_audio_counter LVAR_INT cas4_audio_slot1 cas4_audio_slot2 cas4_audio_playing LVAR_INT cas4_text_loop_done LVAR_INT cas4_mobile LVAR_INT cas4_text_timer_diff LVAR_INT cas4_text_timer_end LVAR_INT cas4_text_timer_start LVAR_INT cas4_ahead_counter LVAR_INT cas4_banter1 cas4_banter1_completed LVAR_INT cas4_banter2 cas4_banter2_completed LVAR_INT cas4_banter3 cas4_banter3_completed LVAR_INT cas4_banter4 cas4_banter4_completed LVAR_INT cas4_end_of_cut cas4_end_of_cut_completed LVAR_INT cas4_audio_left_behind_played cas4_left_behind LVAR_INT cas4_fight_audio1 cas4_fight_audio1_completed LVAR_INT cas4_fight_audio2 cas4_fight_audio2_completed LVAR_INT cas4_piss_audio cas4_piss_audio_completed LVAR_INT cas4_puke_audio cas4_puke_audio_completed LVAR_INT cas4_who_started_fight LVAR_INT cas4_no_car cas4_no_car_played LVAR_INT cas4_sfx[2] LVAR_INT cas4_sfx_counter LVAR_INT cas4_sfx_playing /// opening cut-scene fudge LVAR_INT cas4_temp_car cas4_temp_ped cas4_temp_model cas4_temp_class LVAR_INT cas4_timer_current cas4_timer_start cas4_timer_flag LVAR_INT cas4_time_elapsed SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // **************************************** Mission Start ********************************** mission_start_casino4: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 FORCE_WEATHER WEATHER_SUNNY_VEGAS LOAD_MISSION_TEXT CASINO4 // ****************************************START OF CUTSCENE******************************** //intro cut scene LOAD_CUTSCENE CAS_4a WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE CLEAR_AREA 2027.3585 1007.7380 9.8127 10.0 TRUE SET_CHAR_HEADING scplayer 265.5486 GET_GAME_TIMER cas4_timer_start cas4_timer_flag = 0 IF cas4_timer_flag = 99 CREATE_CAR cas4_temp_model 2044.6206 1110.1982 9.6719 cas4_temp_car CREATE_RANDOM_CHAR_AS_DRIVER cas4_temp_car cas4_temp_ped CREATE_RANDOM_CHAR_AS_DRIVER cas4_temp_car cas4_old_ped CREATE_RANDOM_CHAR_AS_DRIVER cas4_temp_car cas4_incest_ped CREATE_RANDOM_CHAR_AS_DRIVER cas4_temp_car cas4_pig_ped CREATE_RANDOM_CHAR_AS_DRIVER cas4_temp_car cas4_sister_ped CREATE_FX_SYSTEM puke cas4_carx cas4_cary cas4_carz TRUE cas4_vomit CREATE_FX_SYSTEM puke cas4_carx cas4_cary cas4_carz TRUE cas4_piss ENDIF MAKE_PLAYER_GANG_DISAPPEAR START_CUTSCENE DO_FADE 1000 FADE_IN TIMERA = 0 WHILE NOT HAS_CUTSCENE_FINISHED GET_GAME_TIMER cas4_timer_current cas4_time_elapsed = cas4_timer_current - cas4_timer_start IF cas4_time_elapsed > 15000 // camera switch has occurred IF TIMERA > 2000 SWITCH cas4_timer_flag CASE 0 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE cas4_temp_model cas4_temp_class IF NOT cas4_temp_model = -1 CREATE_CAR cas4_temp_model 2051.5439 1100.5112 9.6719 cas4_temp_car SET_VEHICLE_TO_FADE_IN cas4_temp_car 0 SET_CAR_HEADING cas4_temp_car 183.2183 CREATE_RANDOM_CHAR_AS_DRIVER cas4_temp_car cas4_temp_ped CAR_WANDER_RANDOMLY cas4_temp_car MARK_CHAR_AS_NO_LONGER_NEEDED cas4_temp_ped MARK_CAR_AS_NO_LONGER_NEEDED cas4_temp_car ENDIF cas4_timer_flag++ BREAK CASE 1 CREATE_RANDOM_CHAR 2034.8136 993.6725 9.8130 cas4_temp_ped SET_CHAR_HEADING cas4_temp_ped 357.2051 TASK_FOLLOW_PATH_NODES_TO_COORD cas4_temp_ped 2033.8563 1051.8037 9.8203 PEDMOVE_WALK -2 MARK_CHAR_AS_NO_LONGER_NEEDED cas4_temp_ped cas4_timer_flag++ BREAK CASE 2 GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE cas4_temp_model cas4_temp_class IF NOT cas4_temp_model = -1 CREATE_CAR cas4_temp_model 2051.5439 1100.5112 9.6719 cas4_temp_car SET_VEHICLE_TO_FADE_IN cas4_temp_car 0 SET_CAR_HEADING cas4_temp_car 183.2183 CREATE_RANDOM_CHAR_AS_DRIVER cas4_temp_car cas4_temp_ped CAR_WANDER_RANDOMLY cas4_temp_car MARK_CHAR_AS_NO_LONGER_NEEDED cas4_temp_ped MARK_CAR_AS_NO_LONGER_NEEDED cas4_temp_car ENDIF cas4_timer_flag++ BREAK CASE 3 CREATE_RANDOM_CHAR 2033.8563 1041.8037 9.8203 cas4_temp_ped SET_CHAR_HEADING cas4_temp_ped 181.0345 TASK_FOLLOW_PATH_NODES_TO_COORD cas4_temp_ped 2032.2571 986.0109 9.8130 PEDMOVE_WALK -2 MARK_CHAR_AS_NO_LONGER_NEEDED cas4_temp_ped cas4_timer_flag = 0 BREAK cas4_timer_flag = 0 DEFAULT BREAK ENDSWITCH TIMERA = 0 ENDIF ENDIF WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE MAKE_PLAYER_GANG_REAPPEAR RELEASE_WEATHER SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 // ****************************************END OF CUTSCENE******************************** LOAD_GROUP_DECISION_MAKER DM_GROUP_MISSION_NORM cas4_decision3 SET_GROUP_DECISION_MAKER Players_Group cas4_decision3 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH cas4_decision LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY cas4_decision2 SET_PLAYER_CONTROL player1 OFF DO_FADE 1500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE MARK_CHAR_AS_NO_LONGER_NEEDED cas4_temp_ped MARK_CAR_AS_NO_LONGER_NEEDED cas4_temp_car WAIT 0 LOAD_SPECIAL_CHARACTER 1 MACCER //paul model LOAD_SPECIAL_CHARACTER 2 PAUL //macca model /* REQUEST_MODEL CWMOHB2 // old hillbilly REQUEST_MODEL CWMYHB1 // male hillbilly 1 pig man REQUEST_MODEL CWMYHB2 // male hillbilly 2 sister lover REQUEST_MODEL CWFYHB // female hillbilly REQUEST_MODEL DWMYLC1 */ LOAD_ALL_MODELS_NOW WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_SPECIAL_CHARACTER_LOADED 2 WAIT 0 ENDWHILE SWITCH_WIDESCREEN OFF /////////////////////////// set the initial flag status \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ cas4_paul_macca_created_flag = 0 cas4_at_end_flag = 0 cas4_blip_added_flag = 0 cas4_player_reached_desert_flag = 0 cas4_car_created_flag = 0 cas4_played_cutscene_flag = 0 cas4_at_casino_flag = 0 cas4_mission_progression_flag = 0 cas4_snake_blip_flag = 0 cas4_safety_flag = 0 cas4_old_in_car_flag = 0 cas4_pig_in_car_flag = 0 cas4_old_task_assigned = 0 cas4_incest_task_assigned = 0 cas4_sister_task_assigned = 0 cas4_pig_task_assigned = 0 cas4_snake_car_created_flag = 0 cas4_driver1_in_car = 0 cas4_driver2_in_car = 0 cas4_hill_billy_stand_played = 0 cas4_crap_assigned = 0 cas4_sister_driving = 0 cas4_incest_driving = 0 cas4_playerx = 0.0 cas4_playery = 0.0 cas4_playerz = 0.0 cas4_carx = 0.0 cas4_cary = 0.0 cas4_carz = 0.0 cas4_counter = 0 cas4_hill_billies_alive = 0 WHILE cas4_counter < 4 cas4_hill_billy_dead[cas4_counter] = 0 cas4_counter++ ENDWHILE cas4_paul_with_player = 0 cas4_macca_with_player = 0 cas4_free_seats = 0 cas4_fighting = 0 cas4_vomit_status = 0 cas4_piss_status = 0 cas4_macca_playing_fx = 0 cas4_paul_playing_fx = 0 cas4_paul_busy = 0 cas4_macca_busy = 0 cas4_done_pisspuke = 0 cas4_paul_told_to_enter = 0 cas4_macca_told_to_enter = 0 cas4_message_dsplayed = 99999 cas4_animation_time = 0.0 cas4_banter1 = 0 cas4_banter1_completed = 0 cas4_banter2 = 0 cas4_banter2_completed = 0 cas4_banter3 = 0 cas4_banter3_completed = 0 cas4_banter4 = 0 cas4_banter4_completed = 0 cas4_end_of_cut = 0 cas4_end_of_cut_completed = 0 cas4_audio_left_behind_played = 0 cas4_left_behind = 0 cas4_fight_audio1 = 0 cas4_fight_audio1_completed = 0 cas4_fight_audio2 = 0 cas4_fight_audio2_completed = 0 cas4_who_started_fight = 0 cas4_piss_audio = 0 cas4_piss_audio_completed = 0 cas4_puke_audio = 0 cas4_puke_audio_completed = 0 cas4_done_piss = 0 cas4_done_puke = 0 ///////////////////////// AUDIO CRAP //////////////////////////////////// //$cas4_text[1] = CAS4_AA//That there city boy, has gone and been with my prize hog! now I don’t even get no sugar from her !“ //$cas4_text[2] = CAS4_AB//And that un went and did my sis, I've had a terble achin' in my grinds every since !” //$cas4_text[3] = CAS4_AC//I'm a fixin' to give ya a whoopin' for wha you gone and done to ma Young’uns ! //$cas4_text[4] = CAS4_AD//Take a gander at 'em fellers, is that em ? //$cas4_text[5] = CAS4_AE//Whut’n tarnation !? //$cas4_text[6] = CAS4_AF//I'm gonna slap you silly for giving me and ma fella the red bumpies ! $cas4_text[7] = CAS4_BA//]My legs are fucked and my head's fuckin' pounding! $cas4_text[8] = CAS4_BB//]We can't walk back, mate... $cas4_text[9] = CAS4_CA//]Your turn in the boot, ol'lad! $cas4_text[10] = CAS4_CB//]Oooo, this is comfy! $cas4_text[11] = CAS4_CC//]I'm the manager, I get the front seat! $cas4_text[12] = CAS4_CD//]Hey, that's my seat! $cas4_text[13] = CAS4_CE//]Leave him, he'll be fine! $cas4_text[14] = CAS4_CF//]We'll come back for you, I promise! $cas4_text[15] = CAS4_CG//]Oh no you don't, I remember Preston Guild Hall! $cas4_text[16] = CAS4_CH//]I'm the manager, what I say, goes! $cas4_text[17] = CAS4_CJ//]Don't make me slap you, sunshine! $cas4_text[18] = CAS4_CK//]Don't make me sack you! $cas4_text[19] = CAS4_CL//]You're my manager this is all your fault! $cas4_text[20] = CAS4_DA//Where's the rest of the band, guys? $cas4_text[21] = CAS4_DB//Oh bollox! Maccer, where are the boys? $cas4_text[22] = CAS4_DC//I don't fuckin' know, do I. $cas4_text[23] = CAS4_DD//I remember snakes, lots of snakes... $cas4_text[24] = CAS4_DE//There's a snake farm not far from here, we can go check it out. $cas4_text[25] = CAS4_EA//]I don't recognise this part of Manchester, our kid... $cas4_text[26] = CAS4_EB//]How many times do I have to tell you, we're in America! $cas4_text[27] = CAS4_EC//]America? Wait 'til I tell me ma about this! $cas4_text[28] = CAS4_ED//]He's like a fucking stuck record. He'll ask about Las Venturas next. $cas4_text[29] = CAS4_EE//]Las Venturas? Always wanted to go there, great tits. $cas4_text[30] = CAS4_EF//]Don't start, not in this confined space. $cas4_text[31] = CAS4_EG///]Bouncing, wobbling, creamy tits... $cas4_text[32] = CAS4_EH//]LEAVE YOURSELF ALONE! $cas4_text[33] = CAS4_FA//]Here we are, look familiar? $cas4_text[34] = CAS4_FB//]Looks like Salford to me... $cas4_text[35] = CAS4_FC//]What? $cas4_text[36] = CAS4_GA//]Run like fuck! $cas4_text[37] = CAS4_GB//]Everybody in the car! $cas4_text[38] = CAS4_HA//]Wait, our kid, wait! $cas4_text[39] = CAS4_HB//]I want to come too! $cas4_text[40] = CAS4_HC//]Hey, wait for me, sunshine! $cas4_text[41] = CAS4_HD//]Don't leave me in their clutches! $cas4_text[42] = CAS4_JA//]I think we lost 'em. $cas4_text[43] = CAS4_JB//]I can't see those Snake farmers any more! $cas4_text[44] = CAS4_JC//]Shut up, you two! $cas4_text[45] = CAS4_JD//]Quit squabbling! $cas4_text[46] = CAS4_KA//]It seems you boys had a good time! $cas4_text[47] = CAS4_KB//]What about the band? $cas4_text[48] = CAS4_KC//]We'll just have to pray they've made it to civilization. $cas4_text[49] = CAS4_KD//]Keyboardists and drummers are ten-a-penny anyway. $cas4_text[50] = CAS4_KE//]I need a piss, mate! $cas4_text[51] = CAS4_KF//]Oh fuck, we're screwed! $cas4_text[52] = CAS4_KG//]Can't it wait? $cas4_text[53] = CAS4_KH//]I'm fit to burst, ol'lad! $cas4_text[54] = CAS4_KJ//]You've got to pull over, he's priapic, it'll go everywhere! $cas4_text[55] = CAS4_LA//]I can't hold it any longer! $cas4_text[56] = CAS4_LB//]Oh fuck! $cas4_text[57] = CAS4_LC//]Hey, what the fuck? $cas4_text[58] = CAS4_LD//]Argh! Stop it! $cas4_text[59] = CAS4_LE//]Point it out the fucking window! $cas4_text[60] = CAS4_MA//]Oh, fuck, that is goooood. $cas4_text[61] = CAS4_NA//]Oh fuck, I've got the shakes! $cas4_text[62] = CAS4_NB//]You look as pale as a drowned baby, mate! $cas4_text[63] = CAS4_NC//]Oh god, I think I'm going to chuck! $cas4_text[64] = CAS4_ND//]What you need is some food down you! $cas4_text[65] = CAS4_NE//](Paul nearly vomits) $cas4_text[66] = CAS4_NF//]A fried egg sanger with mayonaise will sort you out. $cas4_text[67] = CAS4_NG//](Paul nearly vomits again) $cas4_text[68] = CAS4_NH//]Or a pickled egg! $cas4_text[69] = CAS4_NJ//]Pull over, NOW! $cas4_text[70] = CAS4_OA//]Shhi- huuuurghhh -hit! $cas4_text[71] = CAS4_OB//]I've go- huuurrrgghh! $cas4_text[72] = CAS4_OC//]Got the- Hhhuurrgghh! $cas4_text[73] = CAS4_OD//]Dry- hurgh! $cas4_text[74] = CAS4_OE//]Dry- hurgh! $cas4_text[75] = CAS4_OF//]Dry heaves! $cas4_text[76] = CAS4_OG//]Oh, I thuh- think it's past... $cas4_text[77] = CAS4_OH//]Or how about a pint of cod liver oil, that would sort your guts out! $cas4_text[78] = CAS4_OJ//](Paul vomiting violently) $cas4_text[79] = CAS4_OK//]Leave him, man. $cas4_text[80] = CAS4_OL//]The good doctor is just trying to help! $cas4_text[81] = CAS4_OM//]Fuh-huh-Fuck off! $cas4_text[82] = CAS4_PA//]What kind of tits does this Rosie have? $cas4_text[83] = CAS4_PB//]Big, floppy sausage tits? //$cas4_text[84] = CAS4_PC//]Empty saddlebags? $cas4_text[85] = CAS4_PD//]Bee stings? $cas4_text[86] = CAS4_PE//]Rosie is a man! $cas4_text[87] = CAS4_PF//]And stop touching yourself! $cas4_text[88] = CAS4_PG//]It's just for comfort, this is a stressful situation. $cas4_text[89] = CAS4_PH//]You're fucking telling me it is! $cas4_text[90] = CAS4_PJ//]Can it you two! $cas4_text[91] = CAS4_PK//]He started it! $cas4_text[92] = CAS4_QA//]Where is this casino? $cas4_text[93] = CAS4_QB//]It's called Caligula's, it's on the strip. $cas4_text[94] = CAS4_RA//]Shit, here come those snake farmers! $cas4_text[95] = CAS4_RB//]Right, I've had enough. //$cas4_text[96] = CAS4_RC//]Let's finish this! $cas4_text[97] = CAS4_RD//]I'm going to punch some big tits! $cas4_text[98] = CAS4_RE//]Fuck it, in for a penny... $cas4_text[99] = CAS4_SA//]Come on, let's go in and see Rosie. $cas4_text[100] = CAS4_TA//]Yo, Woozie, just a quick call to say I think I've found a way $cas4_text[101] = CAS4_TB//]to scope Caligula's Casino without causing too much suspicion. $cas4_text[102] = CAS4_TC//]We can talk later. $cas4_text[103] = CAS4_FD// Take a gander at them fellas, is that them? $cas4_text[104] = CAS4_FE// That there city boy has been with my prize hog! $cas4_text[105] = CAS4_FF// Now I don't even get no sugar from her! $cas4_text[106] = CAS4_FG// And that’un went and did my sis! $cas4_text[107] = CAS4_FH// I've had a terr’ble aching in my grinds ever since! $cas4_text[108] = CAS4_FJ// I'm gonna slap you silly for giving me and my fella the red bumpies! $cas4_text[109] = CAS4_FK// What'n tarnation? $cas4_text[110] = CAS4_FL// I'm a fixing to give ya a whoopin' for what you gone and done to my young'uns $cas4_text[111] = MACX_AF// So now you know how it really is. (macca) $cas4_text[112] = MACX_AG// Yeah, that's how we do it in Salford (macca) $cas4_text[113] = MACX_AI// He's only gone and died.(macca) //cas4_audio[1] = SOUND_CAS4_AA//That there city boy, has gone and been with my prize hog! now I don’t even get no sugar from her !“ //cas4_audio[2] = SOUND_CAS4_AB//And that un went and did my sis, I've had a terble achin' in my grinds every since !” //cas4_audio[3] = SOUND_CAS4_AC//I'm a fixin' to give ya a whoopin' for wha you gone and done to ma Young’uns ! //cas4_audio[4] = SOUND_CAS4_AD//Take a gander at 'em fellers, is that em ? //cas4_audio[5] = SOUND_CAS4_AE//Whut'n tarnation !? //cas4_audio[6] = SOUND_CAS4_AF//I'm gonna slap you silly for giving me and ma fella the red bumpies ! cas4_audio[7] = SOUND_CAS4_BA//]My legs are fucked and my head's fuckin' pounding! cas4_audio[8] = SOUND_CAS4_BB//]We can't walk back, mate... cas4_audio[9] = SOUND_CAS4_CA//]Your turn in the boot, ol'lad! cas4_audio[10] = SOUND_CAS4_CB//]Oooo, this is comfy! cas4_audio[11] = SOUND_CAS4_CC//]I'm the manager, I get the front seat! cas4_audio[12] = SOUND_CAS4_CD//]Hey, that's my seat! cas4_audio[13] = SOUND_CAS4_CE//]Leave him, he'll be fine! cas4_audio[14] = SOUND_CAS4_CF//]We'll come back for you, I promise! cas4_audio[15] = SOUND_CAS4_CG//]Oh no you don't, I remember Preston Guild Hall! cas4_audio[16] = SOUND_CAS4_CH//]I'm the manager, what I say, goes! cas4_audio[17] = SOUND_CAS4_CJ//]Don't make me slap you, sunshine! cas4_audio[18] = SOUND_CAS4_CK//]Don't make me sack you! cas4_audio[19] = SOUND_CAS4_CL//]You're my manager this is all your fault! cas4_audio[20] = SOUND_CAS4_DA//]Where's the rest of the band, guys? cas4_audio[21] = SOUND_CAS4_DB//]Oh bollox! Maccer, where are the boys? cas4_audio[22] = SOUND_CAS4_DC//]I don't fuckin' know, do I. cas4_audio[23] = SOUND_CAS4_DD//]I remember snakes, lots of snakes... cas4_audio[24] = SOUND_CAS4_DE//]There's a snake farm not far from here, we can go check it out. cas4_audio[25] = SOUND_CAS4_EA//]I don't recognise this part of Manchester, our kid... cas4_audio[26] = SOUND_CAS4_EB//]How many times do I have to tell you, we're in America! cas4_audio[27] = SOUND_CAS4_EC//]America? Wait 'til I tell me ma about this! cas4_audio[28] = SOUND_CAS4_ED//]He's like a fucking stuck record. He'll ask about Las Venturas next. cas4_audio[29] = SOUND_CAS4_EE//]Las Venturas? Always wanted to go there, great tits. cas4_audio[30] = SOUND_CAS4_EF//]Don't start, not in this confined space. cas4_audio[31] = SOUND_CAS4_EG///]Bouncing, wobbling, creamy tits... cas4_audio[32] = SOUND_CAS4_EH//]LEAVE YOURSELF ALONE! cas4_audio[33] = SOUND_CAS4_FA//]Here we are, look familiar? cas4_audio[34] = SOUND_CAS4_FB//]Looks like Salford to me... cas4_audio[35] = SOUND_CAS4_FC//]What? cas4_audio[36] = SOUND_CAS4_GA//]Run like fuck! cas4_audio[37] = SOUND_CAS4_GB//]Everybody in the car! cas4_audio[38] = SOUND_CAS4_HA//]Wait, our kid, wait! cas4_audio[39] = SOUND_CAS4_HB//]I want to come too! cas4_audio[40] = SOUND_CAS4_HC//]Hey, wait for me, sunshine! cas4_audio[41] = SOUND_CAS4_HD//]Don't leave me in their clutches! cas4_audio[42] = SOUND_CAS4_JA//]I think we lost 'em. cas4_audio[43] = SOUND_CAS4_JB//]I can't see those Snake farmers any more! cas4_audio[44] = SOUND_CAS4_JC//]Shut up, you two! cas4_audio[45] = SOUND_CAS4_JD//]Quit squabbling! cas4_audio[46] = SOUND_CAS4_KA//]It seems you boys had a good time! cas4_audio[47] = SOUND_CAS4_KB//]What about the band? cas4_audio[48] = SOUND_CAS4_KC//]We'll just have to pray they've made it to civilization. cas4_audio[49] = SOUND_CAS4_KD//]Keyboardists and drummers are ten-a-penny anyway. cas4_audio[50] = SOUND_CAS4_KE//]I need a piss, mate! cas4_audio[51] = SOUND_CAS4_KF//]Oh fuck, we're screwed! cas4_audio[52] = SOUND_CAS4_KG//]Can't it wait? cas4_audio[53] = SOUND_CAS4_KH//]I'm fit to burst, ol'lad! cas4_audio[54] = SOUND_CAS4_KJ//]You've got to pull over, he's priapic, it'll go everywhere! cas4_audio[55] = SOUND_CAS4_LA//]I can't hold it any longer! cas4_audio[56] = SOUND_CAS4_LB//]Oh fuck! cas4_audio[57] = SOUND_CAS4_LC//]Hey, what the fuck? cas4_audio[58] = SOUND_CAS4_LD//]Argh! Stop it! cas4_audio[59] = SOUND_CAS4_LE//]Point it out the fucking window! cas4_audio[60] = SOUND_CAS4_MA//]Oh, fuck, that is goooood. cas4_audio[61] = SOUND_CAS4_NA//]Oh fuck, I've got the shakes! cas4_audio[62] = SOUND_CAS4_NB//]You look as pale as a drowned baby, mate! cas4_audio[63] = SOUND_CAS4_NC//]Oh god, I think I'm going to chuck! cas4_audio[64] = SOUND_CAS4_ND//]What you need is some food down you! cas4_audio[65] = SOUND_CAS4_NE//](Paul nearly vomits) cas4_audio[66] = SOUND_CAS4_NF//]A fried egg sanger with mayonaise will sort you out. cas4_audio[67] = SOUND_CAS4_NG//](Paul nearly vomits again) cas4_audio[68] = SOUND_CAS4_NH//]Or a pickled egg! cas4_audio[69] = SOUND_CAS4_NJ//]Pull over, NOW! cas4_audio[70] = SOUND_CAS4_OA//]Shhi- huuuurghhh -hit! cas4_audio[71] = SOUND_CAS4_OB//]I've go- huuurrrgghh! cas4_audio[72] = SOUND_CAS4_OC//]Got the- Hhhuurrgghh! cas4_audio[73] = SOUND_CAS4_OD//]Dry- hurgh! cas4_audio[74] = SOUND_CAS4_OE//]Dry- hurgh! cas4_audio[75] = SOUND_CAS4_OF//]Dry heaves! cas4_audio[76] = SOUND_CAS4_OG//]Oh, I thuh- think it's past... cas4_audio[77] = SOUND_CAS4_OH//]Or how about a pint of cod liver oil, that would sort your guts out! cas4_audio[78] = SOUND_CAS4_OJ//](Paul vomiting violently) cas4_audio[79] = SOUND_CAS4_OK//]Leave him, man. cas4_audio[80] = SOUND_CAS4_OL//]The good doctor is just trying to help! cas4_audio[81] = SOUND_CAS4_OM//]Fuh-huh-Fuck off! cas4_audio[82] = SOUND_CAS4_PA//]What kind of tits does this Rosie have? cas4_audio[83] = SOUND_CAS4_PB//]Big, floppy sausage tits? //cas4_audio[84] = SOUND_CAS4_PC//]Empty saddlebags? cas4_audio[85] = SOUND_CAS4_PD//]Bee stings? cas4_audio[86] = SOUND_CAS4_PE//]Rosie is a man! cas4_audio[87] = SOUND_CAS4_PF//]And stop touching yourself! cas4_audio[88] = SOUND_CAS4_PG//]It's just for comfort, this is a stressful situation. cas4_audio[89] = SOUND_CAS4_PH//]You're fucking telling me it is! cas4_audio[90] = SOUND_CAS4_PJ//]Can it you two! cas4_audio[91] = SOUND_CAS4_PK//]He started it! cas4_audio[92] = SOUND_CAS4_QA//]Where is this casino? cas4_audio[93] = SOUND_CAS4_QB//]It's called Caligula's, it's on the strip. cas4_audio[94] = SOUND_CAS4_RA//]Shit, here come those snake farmers! cas4_audio[95] = SOUND_CAS4_RB//]Right, I've had enough. //cas4_audio[96] = SOUND_CAS4_RC//]Let's finish this! cas4_audio[97] = SOUND_CAS4_RD//]I'm going to punch some big tits! cas4_audio[98] = SOUND_CAS4_RE//]Fuck it, in for a penny... cas4_audio[99] = SOUND_CAS4_SA//]Come on, let's go in and see Rosie. cas4_audio[100] = SOUND_CAS4_TA//]Yo, Woozie, just a quick call to say I think I've found a way cas4_audio[101] = SOUND_CAS4_TB//]to scope Caligula's Casino without causing too much suspicion. cas4_audio[102] = SOUND_CAS4_TC//]We can talk later. cas4_audio[103] = SOUND_CAS4_FD// Take a gander at them fellas, is that them? cas4_audio[104] = SOUND_CAS4_FE// That there city boy has been with my prize hog! cas4_audio[105] = SOUND_CAS4_FF// Now I don't even get no sugar from her! cas4_audio[106] = SOUND_CAS4_FG// And that’un went and did my sis! cas4_audio[107] = SOUND_CAS4_FH// I've had a terr’ble aching in my grinds ever since! cas4_audio[108] = SOUND_CAS4_FJ// I'm gonna slap you silly for giving me and my fella the red bumpies! cas4_audio[109] = SOUND_CAS4_FK// What'n tarnation? cas4_audio[110] = SOUND_CAS4_FL// I'm a fixing to give ya a whoopin' for what you gone and done to my young'uns cas4_audio[111] = SOUND_MACX_AF// So now you know how it really is. (macca) cas4_audio[112] = SOUND_MACX_AG// Yeah, that's how we do it in Salford (macca) cas4_audio[113] = SOUND_MACX_AI// He's only gone and died.(macca) cas4_sfx[1] = SOUND_PISSING cas4_audio_counter = 0 cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 cas4_audio_playing = 0 cas4_text_loop_done = 0 cas4_mobile = 0 cas4_text_timer_diff = 0 cas4_text_timer_end = 0 cas4_text_timer_start = 0 cas4_ahead_counter = 0 cas4_sfx_counter = 0 cas4_sfx_playing = 0 cas4_no_car = 0 cas4_no_car_played = 0 SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_SCRIPT_LIMIT_TO_GANG_SIZE 1 MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 2 WAIT 1000 // ************************************** MAIN LOOP ********************************** casino4_main_loop: WAIT 0 //SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 True ///////////////////////////////////////// ///////// DEBUG KEYBOARD COMMANDS /////// ///////////////////////////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_1 SET_CHAR_COORDINATES scplayer -725.0 2392.69 128.0 // the desert where paul and macca are ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_2 SET_CHAR_COORDINATES scplayer -45.0 2322.0 23.0 // the snake farm ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_3 SET_CHAR_COORDINATES scplayer 2062.0 1362.0 10.7 // the mafia casino ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_G TIMERA = 27000 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_BSPACE cas4_vomit_status = 0 cas4_piss_status = 0 cas4_paul_playing_fx = 0 cas4_macca_playing_fx = 0 cas4_paul_busy = 0 cas4_macca_busy = 0 cas4_done_pisspuke = 0 cas4_animation_time = 0.0 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_SPACE cas4_audio_counter = 103 cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 cas4_audio_playing = 0 cas4_text_loop_done = 0 cas4_mobile = 0 IF cas4_audio_playing = 0 cas4_audio_counter = 103 // CESAR: CJ. cas4_mobile = 103 GET_GAME_TIMER cas4_text_timer_start ENDIF casino4_text_loop19: WAIT 0 IF cas4_text_loop_done = 0 IF NOT cas4_audio_counter = 0 IF cas4_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 CLEAR_MISSION_AUDIO cas4_audio_slot2 ENDIF cas4_audio_playing = 1 ENDIF IF cas4_audio_playing = 1 LOAD_MISSION_AUDIO cas4_audio_slot1 cas4_audio[cas4_audio_counter] cas4_audio_playing = 2 ENDIF IF cas4_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot1 PLAY_MISSION_AUDIO cas4_audio_slot1 PRINT_NOW $cas4_text[cas4_audio_counter] 10000 1 cas4_audio_playing = 3 ENDIF ENDIF IF cas4_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED cas4_audio_slot1 CLEAR_THIS_PRINT $cas4_text[cas4_audio_counter] IF cas4_audio_slot1 = 1 cas4_audio_slot1 = 2 cas4_audio_slot2 = 1 ELSE cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 ENDIF cas4_audio_counter = 0 cas4_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 IF cas4_audio_counter < 102 cas4_ahead_counter = cas4_audio_counter + 1 LOAD_MISSION_AUDIO cas4_audio_slot2 cas4_audio[cas4_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 IF cas4_mobile < 110 cas4_mobile++ cas4_audio_counter = cas4_mobile GET_GAME_TIMER cas4_text_timer_start ELSE cas4_text_loop_done = 1 ENDIF ENDIF ENDIF GOTO casino4_text_loop19 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_0 TIMERA = 27000 TIMERB = 27000 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_casino4_passed ENDIF /////////////////////////////////// /// Set up for start of Mission /// /////////////////////////////////// IF cas4_player_reached_desert_flag = 0 AND cas4_car_created_flag = 0 WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ADD_BLIP_FOR_COORD -735.0 2398.69 126.0 cas4_desert_blip SET_COORD_BLIP_APPEARANCE cas4_desert_blip COORD_BLIP_APPEARANCE_FRIEND SET_CHAR_HEADING scplayer 265.5486 SET_CAMERA_BEHIND_PLAYER PRINT ( CAS4_01 ) 10000 1 ///////////// " Go find Paul and Maccer " cas4_car_created_flag = 1 DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON IF played_casino4_before = 1 SET_UP_SKIP -698.0 2398.0 131.0 60.0//-735.0 2398.69 126.0 90.0 ENDIF ENDIF //////////////////////////////////// /// Add Blip for Desert Location /// //////////////////////////////////// IF cas4_player_reached_desert_flag = 0 AND cas4_car_created_flag = 1 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer cas4_player_car ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer -735.0 2398.69 126.0 4.0 4.0 2.0 TRUE REMOVE_BLIP cas4_desert_blip cas4_player_reached_desert_flag = 1 ELSE IF cas4_paul_macca_created_flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -735.0 2398.69 126.0 100.0 100.0 100.0 FALSE IF played_casino4_before = 0 played_casino4_before = 1 ENDIF REQUEST_ANIMATION SUNBATHE WHILE NOT HAS_ANIMATION_LOADED SUNBATHE WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_SPECIAL SPECIAL01 -751.1198 2395.1995 128.2378 cas4_macca_ped // black guy with shades SET_CHAR_HEADING cas4_macca_ped 246.0 SET_CHAR_DECISION_MAKER cas4_macca_ped cas4_decision2 SET_CHAR_NEVER_TARGETTED cas4_macca_ped TRUE SET_CHAR_SUFFERS_CRITICAL_HITS cas4_macca_ped FALSE SET_CHAR_DROWNS_IN_WATER cas4_macca_ped TRUE CREATE_CHAR PEDTYPE_SPECIAL SPECIAL02 -752.2823 2391.0537 127.8083 cas4_paul_ped // white guy white guy with shorts SET_CHAR_HEADING cas4_paul_ped 220.2451 SET_CHAR_DECISION_MAKER cas4_paul_ped cas4_decision2 SET_CHAR_PROOFS cas4_macca_ped FALSE FALSE FALSE FALSE TRUE SET_CHAR_PROOFS cas4_paul_ped FALSE FALSE FALSE FALSE TRUE SET_CHAR_NEVER_TARGETTED cas4_paul_ped TRUE SET_CHAR_SUFFERS_CRITICAL_HITS cas4_paul_ped FALSE SET_CHAR_DROWNS_IN_WATER cas4_paul_ped TRUE OPEN_SEQUENCE_TASK cas4_cutscene_paul_seq TASK_LOOK_AT_CHAR -1 scplayer -1 TASK_PLAY_ANIM -1 SBATHE_F_LieB2Sit SUNBATHE 60000.0 FALSE FALSE FALSE TRUE -1 // latest addition CLOSE_SEQUENCE_TASK cas4_cutscene_paul_seq PERFORM_SEQUENCE_TASK cas4_paul_ped cas4_cutscene_paul_seq CLEAR_SEQUENCE_TASK cas4_cutscene_paul_seq OPEN_SEQUENCE_TASK cas4_cutscene_macca_seq TASK_LOOK_AT_CHAR -1 scplayer -1 TASK_PLAY_ANIM -1 SBATHE_F_LieB2Sit SUNBATHE 60000.0 FALSE FALSE FALSE TRUE -1 // latest addition CLOSE_SEQUENCE_TASK cas4_cutscene_macca_seq PERFORM_SEQUENCE_TASK cas4_macca_ped cas4_cutscene_macca_seq CLEAR_SEQUENCE_TASK cas4_cutscene_macca_seq SET_CHAR_RELATIONSHIP cas4_macca_ped ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP cas4_paul_ped ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_PLAYER1 cas4_paul_macca_created_flag = 1 ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////// /// Create the models for desert scene /// ////////////////////////////////////////// //////////////////////// /// Middle Cut Scene /// //////////////////////// IF cas4_player_reached_desert_flag = 1 AND cas4_played_cutscene_flag = 0 SET_PLAYER_CONTROL player1 OFF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT FORCE_WEATHER WEATHER_SUNNY_DESERT DELETE_CHAR cas4_macca_ped DELETE_CHAR cas4_paul_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_macca_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_paul_ped REMOVE_ANIMATION SUNBATHE WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_AREA -738.0978 2391.5923 127.9015 100.0 TRUE IF NOT IS_CAR_DEAD cas4_player_car IF LOCATE_CAR_3D cas4_player_car -738.0 2391.0 127.0 10.0 10.0 5.0 FALSE SET_CAR_COORDINATES cas4_player_car -735.0 2398.69 126.0 ENDIF ENDIF MAKE_PLAYER_SAFE_FOR_CUTSCENE Player1 //SWITCH_STREAMING OFF LOAD_CUTSCENE CAS_4b WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RELEASE_WEATHER ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE cas4_decision2 EVENT_VEHICLE_ON_FIRE TASK_COMPLEX_LEAVE_CAR_AND_FLEE 100.0 100.0 100.0 100.0 TRUE FALSE CREATE_CHAR PEDTYPE_SPECIAL SPECIAL01 -751.1198 2395.1995 128.2378 cas4_macca_ped // black guy with shades SET_CHAR_DECISION_MAKER cas4_macca_ped cas4_decision2 SET_CHAR_NEVER_TARGETTED cas4_macca_ped TRUE SET_CHAR_SUFFERS_CRITICAL_HITS cas4_macca_ped FALSE CREATE_CHAR PEDTYPE_SPECIAL SPECIAL02 -752.2823 2391.0537 127.8083 cas4_paul_ped // white guy white guy with shorts SET_CHAR_DECISION_MAKER cas4_paul_ped cas4_decision2 SET_CHAR_PROOFS cas4_macca_ped FALSE FALSE FALSE FALSE TRUE SET_CHAR_PROOFS cas4_paul_ped FALSE FALSE FALSE FALSE TRUE SET_CHAR_NEVER_TARGETTED cas4_paul_ped TRUE SET_CHAR_SUFFERS_CRITICAL_HITS cas4_paul_ped FALSE SET_CHAR_RELATIONSHIP cas4_macca_ped ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP cas4_paul_ped ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_PLAYER1 SET_CHAR_MAX_HEALTH cas4_paul_ped 200 SET_CHAR_HEALTH cas4_paul_ped 200 SET_CHAR_MAX_HEALTH cas4_macca_ped 200 SET_CHAR_HEALTH cas4_macca_ped 200 IF NOT IS_CHAR_DEAD cas4_paul_ped AND NOT IS_CHAR_DEAD cas4_macca_ped SET_CHAR_COORDINATES cas4_paul_ped -738.0978 2385.5923 124.9015 SET_CHAR_HEADING cas4_paul_ped 0.0000 SET_CHAR_COORDINATES cas4_macca_ped -736.8244 2385.1021 125.0871 SET_CHAR_HEADING cas4_macca_ped 0.0000 ENDIF REQUEST_MODEL WALTON // dune buggy REQUEST_MODEL DWMOLC1 // pig boy stand in REQUEST_MODEL DWMYLC1 // old guy stand in REQUEST_ANIMATION SMOKING REQUEST_MODEL COLT45 IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CHAR_DEAD cas4_paul_ped CLEAR_CHAR_TASKS scplayer CLEAR_CHAR_TASKS cas4_paul_ped CLEAR_CHAR_TASKS cas4_macca_ped ADD_BLIP_FOR_CHAR cas4_macca_ped cas4_macca_blip SET_BLIP_AS_FRIENDLY cas4_macca_blip TRUE ADD_BLIP_FOR_CHAR cas4_paul_ped cas4_paul_blip SET_BLIP_AS_FRIENDLY cas4_paul_blip TRUE ENDIF WHILE NOT HAS_MODEL_LOADED WALTON OR NOT HAS_MODEL_LOADED DWMOLC1 OR NOT HAS_MODEL_LOADED DWMYLC1 //DWMYLC1 OR NOT HAS_ANIMATION_LOADED SMOKING OR NOT HAS_ANIMATION_LOADED COLT45 WAIT 0 ENDWHILE IF NOT IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_COORDINATES scplayer -738.0603 2388.3464 125.1527 ELSE WARP_CHAR_FROM_CAR_TO_COORD scplayer -738.0603 2388.3464 125.1527 ENDIF SET_CHAR_HEADING scplayer 176.0 REQUEST_ANIMATION PAULNMAC WHILE NOT HAS_ANIMATION_LOADED PAULNMAC WAIT 0 ENDWHILE RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON CLEAR_PRINTS //PRINT (CAS4_BB) 5000 1 //We cant walk back mate cas4_played_cutscene_flag = 1 ENDIF /////////////////////////////////////////////// /// If Paul or Maccer dies fail the mission /// /// /////////////////////////////////////////// IF cas4_paul_macca_created_flag = 1 IF IS_CHAR_DEAD cas4_paul_ped OR IS_CHAR_DEAD cas4_macca_ped CLEAR_PRINTS IF IS_CHAR_DEAD cas4_macca_ped AND IS_CHAR_DEAD cas4_paul_ped PRINT (CAS4_47) 3000 1 //~r~Paul and Maccer have been killed! ELSE IF IS_CHAR_DEAD cas4_macca_ped PRINT (CAS4_05) 3000 1 // " macca's snuffed..... ELSE PRINT (CAS4_04) 3000 1 // " Pauls literally..... ENDIF ENDIF GOTO mission_casino4_failed ENDIF ENDIF ////////////////////////////////////////////////////////////////////// /// if Paul & Maccer with player add blip for next part of mission /// ////////////////////////////////////////////////////////////////////// IF cas4_mission_progression_flag = 0 IF cas4_played_cutscene_flag = 1 IF IS_CHAR_SITTING_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer cas4_player_car GET_MAXIMUM_NUMBER_OF_PASSENGERS cas4_player_car cas4_free_seats IF cas4_paul_with_player = 1 cas4_free_seats-- ENDIF IF cas4_macca_with_player = 1 cas4_free_seats-- ENDIF ELSE IF NOT IS_CHAR_DEAD cas4_paul_ped IF IS_CHAR_IN_ANY_CAR cas4_paul_ped IF cas4_paul_with_player = 1 IF NOT IS_CHAR_DEAD cas4_paul_ped IF IS_CHAR_IN_ANY_CAR cas4_paul_ped TASK_LEAVE_ANY_CAR cas4_paul_ped ENDIF ADD_BLIP_FOR_CHAR cas4_paul_ped cas4_paul_blip SET_BLIP_AS_FRIENDLY cas4_paul_blip TRUE cas4_paul_with_player = 0 ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR cas4_paul_ped GET_SCRIPT_TASK_STATUS cas4_paul_ped TASK_LEAVE_ANY_CAR cas4_task_status IF NOT cas4_task_status = PERFORMING_TASK AND NOT cas4_task_status = WAITING_TO_START_TASK TASK_LEAVE_ANY_CAR cas4_paul_ped ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD cas4_macca_ped IF cas4_macca_with_player = 1 IF NOT IS_CHAR_DEAD cas4_macca_ped IF IS_CHAR_IN_ANY_CAR cas4_macca_ped TASK_LEAVE_ANY_CAR cas4_macca_ped ENDIF ADD_BLIP_FOR_CHAR cas4_macca_ped cas4_macca_blip SET_BLIP_AS_FRIENDLY cas4_macca_blip TRUE cas4_macca_with_player = 0 ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR cas4_macca_ped GET_SCRIPT_TASK_STATUS cas4_macca_ped TASK_LEAVE_ANY_CAR cas4_task_status IF NOT cas4_task_status = PERFORMING_TASK AND NOT cas4_task_status = WAITING_TO_START_TASK TASK_LEAVE_ANY_CAR cas4_macca_ped ENDIF ENDIF ENDIF cas4_paul_told_to_enter = 0 cas4_macca_told_to_enter = 0 cas4_free_seats = 0 ENDIF //// STOP THEM FIGHTING IF PLAYER GET A BIG ENOUGH CAR //// IF cas4_fighting > 0 IF NOT IS_CHAR_DEAD cas4_paul_ped AND NOT IS_CHAR_DEAD cas4_macca_ped IF cas4_free_seats > 1 CLEAR_CHAR_TASKS cas4_paul_ped CLEAR_CHAR_TASKS cas4_macca_ped cas4_fight_audio1 = 0 cas4_fight_audio1_completed = 0 cas4_fight_audio2 = 0 cas4_fight_audio2_completed = 0 cas4_fighting = 0 ENDIF ENDIF ENDIF /// CHECK ON PAUL AND MACCA AND ADD/REMOVE FROM PLAYERS GROUP IF NOT FIGHTING //// IF cas4_fighting = 0 IF IS_CHAR_IN_ANY_CAR scplayer IF NOT IS_CHAR_DEAD cas4_paul_ped //IF cas4_paul_busy = 0 IF cas4_paul_with_player = 0 IF LOCATE_CHAR_IN_CAR_CHAR_3D scplayer cas4_paul_ped 8.0 8.0 5.0 FALSE IF cas4_free_seats > 0 IF NOT IS_CAR_DEAD cas4_player_car IF IS_CHAR_SITTING_IN_CAR cas4_paul_ped cas4_player_car REMOVE_BLIP cas4_paul_blip cas4_free_seats-- cas4_paul_with_player = 1 ELSE IF cas4_paul_told_to_enter = 0 TASK_ENTER_CAR_AS_PASSENGER cas4_paul_ped cas4_player_car -2 -1 cas4_paul_told_to_enter = 1 ELSE GET_SCRIPT_TASK_STATUS cas4_paul_ped TASK_ENTER_CAR_AS_PASSENGER cas4_task_status IF cas4_task_status = FINISHED_TASK CLEAR_CHAR_TASKS cas4_paul_ped TASK_ENTER_CAR_AS_PASSENGER cas4_paul_ped cas4_player_car -2 -1 ENDIF ENDIF ENDIF ENDIF ELSE IF IS_CHAR_SITTING_IN_ANY_CAR scplayer IF cas4_macca_with_player = 1 IF NOT IS_CHAR_DEAD cas4_macca_ped /* IF IS_CHAR_IN_ANY_CAR cas4_macca_ped TASK_LEAVE_ANY_CAR cas4_macca_ped ENDIF */ ADD_BLIP_FOR_CHAR cas4_macca_ped cas4_macca_blip SET_BLIP_AS_FRIENDLY cas4_macca_blip TRUE cas4_macca_with_player = 0 ENDIF IF cas4_fighting = 0 OPEN_SEQUENCE_TASK cas4_seq TASK_GOTO_CHAR -1 cas4_macca_ped -1 2.0 TASK_TURN_CHAR_TO_FACE_CHAR -1 cas4_macca_ped CLOSE_SEQUENCE_TASK cas4_seq PERFORM_SEQUENCE_TASK cas4_paul_ped cas4_seq CLEAR_SEQUENCE_TASK cas4_seq OPEN_SEQUENCE_TASK cas4_seq IF IS_CHAR_IN_ANY_CAR cas4_macca_ped TASK_LEAVE_ANY_CAR -1 ENDIF TASK_GOTO_CHAR -1 cas4_paul_ped -1 2.0 TASK_TURN_CHAR_TO_FACE_CHAR -1 cas4_paul_ped CLOSE_SEQUENCE_TASK cas4_seq PERFORM_SEQUENCE_TASK cas4_macca_ped cas4_seq CLEAR_SEQUENCE_TASK cas4_seq CLEAR_PRINTS PRINT (CAS4_44) 10000 1//~s~They're going to keep on fighting until you find a car with enough seats for the both of them. cas4_who_started_fight = 1 cas4_message_dsplayed = 6 cas4_fighting = 1 ENDIF ENDIF ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS cas4_paul_ped TASK_ENTER_CAR_AS_PASSENGER cas4_task_status IF cas4_task_status = PERFORMING_TASK CLEAR_CHAR_TASKS cas4_paul_ped ENDIF cas4_paul_told_to_enter = 0 ENDIF ELSE IF NOT LOCATE_CHAR_IN_CAR_CHAR_3D scplayer cas4_paul_ped 10.0 10.0 5.0 FALSE IF IS_CHAR_IN_ANY_CAR cas4_paul_ped TASK_LEAVE_ANY_CAR cas4_paul_ped ENDIF //TASK_PLAY_ANIM cas4_paul_ped PnM_Loop_A PAULNMAC 4.0 FALSE FALSE FALSE FALSE -1 //paul idle ADD_BLIP_FOR_CHAR cas4_paul_ped cas4_paul_blip SET_BLIP_AS_FRIENDLY cas4_paul_blip TRUE cas4_paul_told_to_enter = 0 cas4_paul_with_player = 0 ENDIF ENDIF //ENDIF// paul_busy ENDIF /////////////////////// /////// MACCA ///////// /////////////////////// IF cas4_fighting = 0 IF NOT IS_CHAR_DEAD cas4_macca_ped //IF cas4_macca_busy = 0 IF cas4_macca_with_player = 0 IF LOCATE_CHAR_IN_CAR_CHAR_3D scplayer cas4_macca_ped 8.0 8.0 5.0 FALSE IF cas4_free_seats > 0 IF NOT IS_CAR_DEAD cas4_player_car IF IS_CHAR_SITTING_IN_CAR cas4_macca_ped cas4_player_car REMOVE_BLIP cas4_macca_blip cas4_free_seats-- cas4_macca_with_player = 1 ELSE IF cas4_macca_told_to_enter = 0 TASK_ENTER_CAR_AS_PASSENGER cas4_macca_ped cas4_player_car -2 -1 cas4_macca_told_to_enter = 1 ELSE GET_SCRIPT_TASK_STATUS cas4_macca_ped TASK_ENTER_CAR_AS_PASSENGER cas4_task_status IF cas4_task_status = FINISHED_TASK CLEAR_CHAR_TASKS cas4_macca_ped TASK_ENTER_CAR_AS_PASSENGER cas4_macca_ped cas4_player_car -2 -1 ENDIF ENDIF ENDIF ENDIF ELSE IF IS_CHAR_SITTING_IN_ANY_CAR scplayer IF cas4_paul_with_player = 1 IF NOT IS_CHAR_DEAD cas4_paul_ped /* IF IS_CHAR_IN_ANY_CAR cas4_paul_ped TASK_LEAVE_ANY_CAR cas4_paul_ped ENDIF */ //REMOVE_CHAR_FROM_GROUP cas4_paul_ped ADD_BLIP_FOR_CHAR cas4_paul_ped cas4_paul_blip SET_BLIP_AS_FRIENDLY cas4_paul_blip TRUE cas4_paul_with_player = 0 ENDIF IF cas4_fighting = 0 //GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS cas4_paul_ped 0.0 1.3 0.0 cas4_fight_x cas4_fight_y cas4_fight_z OPEN_SEQUENCE_TASK cas4_seq IF IS_CHAR_IN_ANY_CAR cas4_paul_ped TASK_LEAVE_ANY_CAR -1 ENDIF TASK_GOTO_CHAR -1 cas4_macca_ped -1 2.0 TASK_TURN_CHAR_TO_FACE_CHAR -1 cas4_macca_ped CLOSE_SEQUENCE_TASK cas4_seq PERFORM_SEQUENCE_TASK cas4_paul_ped cas4_seq CLEAR_SEQUENCE_TASK cas4_seq OPEN_SEQUENCE_TASK cas4_seq TASK_GOTO_CHAR -1 cas4_paul_ped -1 2.0 TASK_TURN_CHAR_TO_FACE_CHAR -1 cas4_paul_ped CLOSE_SEQUENCE_TASK cas4_seq PERFORM_SEQUENCE_TASK cas4_macca_ped cas4_seq CLEAR_SEQUENCE_TASK cas4_seq CLEAR_PRINTS PRINT (CAS4_44) 10000 1//~s~They're going to keep on fighting until you find a car with enough seats for the both of them. cas4_who_started_fight = 2 cas4_message_dsplayed = 6 cas4_fighting = 1 ENDIF ENDIF ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS cas4_macca_ped TASK_ENTER_CAR_AS_PASSENGER cas4_task_status IF cas4_task_status = PERFORMING_TASK CLEAR_CHAR_TASKS cas4_macca_ped cas4_macca_told_to_enter = 0 ENDIF ENDIF ELSE IF NOT LOCATE_CHAR_IN_CAR_CHAR_3D scplayer cas4_macca_ped 10.0 10.0 5.0 FALSE IF IS_CHAR_IN_ANY_CAR cas4_macca_ped TASK_LEAVE_ANY_CAR cas4_macca_ped ENDIF // TASK_PLAY_ANIM cas4_macca_ped PnM_Loop_B PAULNMAC 4.0 FALSE FALSE FALSE FALSE -1 //paul idle ADD_BLIP_FOR_CHAR cas4_macca_ped cas4_macca_blip SET_BLIP_AS_FRIENDLY cas4_macca_blip TRUE cas4_macca_told_to_enter = 0 cas4_macca_with_player = 0 ENDIF ENDIF //ENDIF //IF cas4_macca_busy = 0 ENDIF ENDIF ENDIF ELSE IF cas4_fighting = 1 IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CHAR_DEAD cas4_paul_ped GET_SCRIPT_TASK_STATUS cas4_macca_ped PERFORM_SEQUENCE_TASK cas4_task_status IF cas4_task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS cas4_paul_ped PERFORM_SEQUENCE_TASK cas4_task_status IF cas4_task_status = FINISHED_TASK //GET_DISTANCE_BETWEEN_COORDS_2D X1 Y1 X2 Y2 Distance //TASK_GO_TO_COORD_ANY_MEANS -1 cas4_fight_x cas4_fight_y cas4_fight_z PEDMOVE_RUN -1 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS cas4_macca_ped 0.0 1.5 0.0 cas4_fight_x cas4_fight_y cas4_fight_z TASK_CHAR_SLIDE_TO_COORD cas4_paul_ped cas4_fight_x cas4_fight_y cas4_fight_z cas4_fight_heading 0.5 GOSUB cas4_fight_scene cas4_fighting = 2 ENDIF ENDIF ENDIF ELSE IF cas4_fighting = 2 IF NOT cas4_audio_counter = 0 IF cas4_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 CLEAR_MISSION_AUDIO cas4_audio_slot2 ENDIF cas4_audio_playing = 1 ENDIF IF cas4_audio_playing = 1 LOAD_MISSION_AUDIO cas4_audio_slot1 cas4_audio[cas4_audio_counter] cas4_audio_playing = 2 ENDIF IF cas4_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot1 PLAY_MISSION_AUDIO cas4_audio_slot1 PRINT_NOW $cas4_text[cas4_audio_counter] 10000 1 cas4_audio_playing = 3 ENDIF ENDIF IF cas4_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED cas4_audio_slot1 CLEAR_THIS_PRINT $cas4_text[cas4_audio_counter] IF cas4_audio_slot1 = 1 cas4_audio_slot1 = 2 cas4_audio_slot2 = 1 ELSE cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 ENDIF cas4_audio_counter = 0 cas4_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 IF cas4_audio_counter < 110 cas4_ahead_counter = cas4_audio_counter + 1 LOAD_MISSION_AUDIO cas4_audio_slot2 cas4_audio[cas4_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF /////////// play fight audio here? ////// //////////////////////////////// IF cas4_who_started_fight = 1 //paul IF cas4_fight_audio1_completed = 0 IF NOT IS_MESSAGE_BEING_DISPLAYED SWITCH cas4_fight_audio1 CASE 0 IF cas4_audio_playing = 0 cas4_audio_counter = 9 //CAS4_Ca I'm the manager i get the front seat cas4_fight_audio1 = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 10 //CAS4_Cb Hey thats my seat cas4_fight_audio1 = 2 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 11 //CAS4_Cc Hey thats my seat cas4_fight_audio1 = 3 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 3 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 12 //CAS4_CD Hey thats my seat cas4_fight_audio1 = 4 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 4 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 19 //CAS4_CD Hey thats my seat cas4_fight_audio1 = 5 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_fight_audio1_completed = 1 ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF ELSE IF cas4_who_started_fight = 2 //macca IF cas4_fight_audio2_completed = 0 IF NOT IS_MESSAGE_BEING_DISPLAYED SWITCH cas4_fight_audio2 CASE 0 IF cas4_audio_playing = 0 cas4_audio_counter = 13 // CAS4_CF // We'll come back for you i promise cas4_fight_audio2 = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 14 //CAS4_CG // Oh no you dont, I remember Preston Guild Hall cas4_fight_audio2 = 2 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 15 //CAS4_Cc Hey thats my seat cas4_fight_audio2 = 3 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 3 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 16 //CAS4_CD Hey thats my seat cas4_fight_audio2 = 4 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_fight_audio2_completed = 1 ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //// PRINT THE APPROPRIATE MESSAGE ////// IF IS_CHAR_DEAD cas4_paul_ped OR IS_CHAR_DEAD cas4_macca_ped CLEAR_PRINTS IF IS_CHAR_DEAD cas4_macca_ped AND IS_CHAR_DEAD cas4_paul_ped PRINT (CAS4_47) 3000 1 //~r~Paul and Maccer have been killed! ELSE IF IS_CHAR_DEAD cas4_macca_ped PRINT (CAS4_05) 3000 1 // " macca's snuffed..... ELSE PRINT (CAS4_04) 3000 1 // " Pauls literally..... ENDIF ENDIF GOTO mission_casino4_failed ENDIF IF cas4_fighting = 0 IF cas4_paul_with_player = 0 AND cas4_macca_with_player = 0 IF cas4_free_seats > 1 IF NOT cas4_message_dsplayed = 0 CLEAR_THIS_PRINT cas4_19 CLEAR_THIS_PRINT CAS4_03 CLEAR_THIS_PRINT CAS4_02 IF NOT IS_MESSAGE_BEING_DISPLAYED PRINT (CAS4_37) 7000 1 //~s~Go and pick up Paul and Maccer. cas4_message_dsplayed = 0 ENDIF ENDIF ELSE IF NOT cas4_message_dsplayed = 1 CLEAR_THIS_PRINT CAS4_37 CLEAR_THIS_PRINT CAS4_03 CLEAR_THIS_PRINT CAS4_02 IF NOT IS_MESSAGE_BEING_DISPLAYED PRINT (cas4_19) 7000 1 //~s~You need to find a vehicle with at least two passneger seats cas4_message_dsplayed = 1 CHECKPOINT_SAVE 99 ENDIF ENDIF ENDIF ENDIF IF cas4_paul_with_player = 1 AND cas4_macca_with_player = 0 IF cas4_free_seats > 0 IF NOT cas4_message_dsplayed = 2 CLEAR_THIS_PRINT cas4_19 CLEAR_THIS_PRINT CAS4_37 CLEAR_THIS_PRINT CAS4_02 IF NOT IS_MESSAGE_BEING_DISPLAYED PRINT ( CAS4_03 ) 7000 1 ////////////" Get to Maccer " cas4_message_dsplayed = 2 ENDIF ENDIF ELSE IF NOT cas4_message_dsplayed = 3 CLEAR_THIS_PRINT cas4_37 CLEAR_THIS_PRINT CAS4_03 CLEAR_THIS_PRINT CAS4_02 IF NOT IS_MESSAGE_BEING_DISPLAYED PRINT (cas4_19) 7000 1 //~s~You need to find a vehicle with at least two passneger seats cas4_message_dsplayed = 3 ENDIF ENDIF ENDIF ENDIF IF cas4_paul_with_player = 0 AND cas4_macca_with_player = 1 IF cas4_free_seats > 0 IF NOT cas4_message_dsplayed = 4 CLEAR_THIS_PRINT cas4_19 CLEAR_THIS_PRINT CAS4_03 CLEAR_THIS_PRINT CAS4_37 IF NOT IS_MESSAGE_BEING_DISPLAYED PRINT ( CAS4_02 ) 7000 1 ///////////// " Get to Paul " cas4_message_dsplayed = 4 ENDIF ENDIF ELSE IF NOT cas4_message_dsplayed = 5 CLEAR_THIS_PRINT cas4_37 CLEAR_THIS_PRINT CAS4_03 CLEAR_THIS_PRINT CAS4_02 IF NOT IS_MESSAGE_BEING_DISPLAYED PRINT (CAS4_19) 7000 1 //~s~You need to find a vehicle with at least two passneger seats cas4_message_dsplayed = 5 ENDIF ENDIF ENDIF ENDIF ENDIF //// DO THE PISSING / PUKING STOPS /// IF cas4_done_pisspuke = 0 IF cas4_both_with_player = 1 IF TIMERA > 30000 //cas4_doanims = 1//TIMERA > 30000 ///////// code to play audio goes in here? //////// IF NOT cas4_audio_counter = 0 IF cas4_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 CLEAR_MISSION_AUDIO cas4_audio_slot2 ENDIF cas4_audio_playing = 1 ENDIF IF cas4_audio_playing = 1 LOAD_MISSION_AUDIO cas4_audio_slot1 cas4_audio[cas4_audio_counter] cas4_audio_playing = 2 ENDIF IF cas4_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot1 PLAY_MISSION_AUDIO cas4_audio_slot1 IF NOT cas4_audio_counter = 65 IF NOT cas4_audio_counter = 67 IF NOT cas4_audio_counter = 78 PRINT_NOW $cas4_text[cas4_audio_counter] 10000 1 ENDIF ENDIF ENDIF cas4_audio_playing = 3 ENDIF ENDIF IF cas4_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED cas4_audio_slot1 CLEAR_THIS_PRINT $cas4_text[cas4_audio_counter] IF cas4_audio_slot1 = 1 cas4_audio_slot1 = 2 cas4_audio_slot2 = 1 ELSE cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 ENDIF cas4_audio_counter = 0 cas4_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 IF cas4_audio_counter < 110 cas4_ahead_counter = cas4_audio_counter + 1 LOAD_MISSION_AUDIO cas4_audio_slot2 cas4_audio[cas4_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF //////////////////////////// /// CODE TO PLAY THE SFX /// //////////////////////////// IF NOT cas4_sfx_counter = 0 IF cas4_sfx_playing = 0 IF HAS_MISSION_AUDIO_LOADED 3 CLEAR_MISSION_AUDIO 3 ENDIF cas4_sfx_playing = 1 ENDIF IF cas4_sfx_playing = 1 LOAD_MISSION_AUDIO 3 cas4_sfx[cas4_sfx_counter] // audio fx to be used cas4_sfx_playing = 2 ENDIF IF cas4_sfx_playing = 2 IF HAS_MISSION_AUDIO_LOADED 3 IF cas4_sfx_counter = 1 IF NOT IS_CHAR_DEAD cas4_macca_ped ATTACH_MISSION_AUDIO_TO_CHAR 3 cas4_macca_ped ENDIF ENDIF PLAY_MISSION_AUDIO 3 cas4_sfx_playing = 3 ENDIF ENDIF IF cas4_sfx_playing = 3 IF HAS_MISSION_AUDIO_FINISHED 3 CLEAR_MISSION_AUDIO 3 cas4_sfx_counter = 0 cas4_sfx_playing = 0 ENDIF ENDIF ENDIF /////////////////////////////////////////////////// IF cas4_vomit_status < 5 /// vomit code here IF NOT IS_CHAR_DEAD cas4_paul_ped AND NOT IS_CAR_DEAD cas4_player_car IF cas4_vomit_status = 0 //CLEAR_PRINTS //PRINT (CAS4_21) 5000 1 //urgh..I don't feel too good. You'd better pull over. IF cas4_banter1_completed = 1 IF NOT IS_MESSAGE_BEING_DISPLAYED SWITCH cas4_puke_audio CASE 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_paul_ped TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_macca_ped TRUE IF cas4_audio_playing = 0 cas4_audio_counter = 62 //CAS4_NB//]You look as pale as a drowned baby, mate! cas4_puke_audio = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 63//CAS4_NC//]Oh god, I think I'm going to chuck! cas4_puke_audio = 2 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 64//CAS4_ND//]What you need is some food down you! cas4_puke_audio = 3 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 3 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 65//CAS4_NE//](Paul nearly vomits) cas4_puke_audio = 4 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 4 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 66//CAS4_NF//]A fried egg sanger with mayonaise will sort you out. cas4_puke_audio = 5 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 5 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 67//CAS4_NG//](Paul nearly vomits again) cas4_puke_audio = 6 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 6 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 68//CAS4_NH//]Or a pickled egg! cas4_puke_audio = 7 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 7 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 69//CAS4_NJ//]Pull over, NOW! cas4_puke_audio = 8 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_message_dsplayed = 99 REQUEST_ANIMATION FOOD TIMERB = 0 cas4_puke_audio = 0 cas4_vomit_status = 1 ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF //cas4_banter1_completed = 1 ELSE IF cas4_vomit_status = 1 IF TIMERB > 5000 //CLEAR_PRINTS //PRINT_NOW (CAS4_39) 4000 1 //Huh, I don't remember eating that.. SWITCH cas4_puke_audio CASE 0 IF cas4_audio_playing = 0 cas4_audio_counter = 70// CAS4_OA//]Shhi- huuuurghhh -hit! cas4_puke_audio = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 71// CAS4_OB//]I've go- huuurrrgghh! cas4_puke_audio = 2 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 72// CAS4_OC//]Got the- Hhhuurrgghh! cas4_puke_audio = 3 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 3 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 73// CAS4_OD//]Dry- hurgh! cas4_puke_audio = 4 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 4 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 74// CAS4_OE//]Dry- hurgh! cas4_puke_audio = 5 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 5 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 75// CAS4_OF//]Dry heaves! cas4_puke_audio = 6 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 6 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 76// CAS4_OG//]Oh, I thuh- think it's past... cas4_puke_audio = 7 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 7 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 77// CAS4_OH//]Or how about a pint of cod liver oil, that would sort your guts out! cas4_puke_audio = 8 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 8 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 78// CAS4_OJ//](Paul vomiting violently) cas4_puke_audio = 9 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 9 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 79// CAS4_OK//]Leave him, man. cas4_puke_audio = 10 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 10 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 80// CAS4_OL//]The good doctor is just trying to help! cas4_puke_audio = 11 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 11 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 81// CAS4_OM//]Fuh-huh-Fuck off! cas4_puke_audio = 12 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 TIMERA = 0 cas4_paul_busy = 0 cas4_done_puke = 1 cas4_vomit_status = 9999 ENDIF ENDIF BREAK ENDSWITCH ELSE IF HAS_ANIMATION_LOADED FOOD AND IS_CAR_STOPPED cas4_player_car GET_OFFSET_FROM_CAR_IN_WORLD_COORDS cas4_player_car 4.0 2.0 0.0 cas4_carx cas4_cary cas4_carz OPEN_SEQUENCE_TASK cas4_seq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 cas4_carx cas4_cary cas4_carz PEDMOVE_SPRINT 5000 TASK_PLAY_ANIM -1 EAT_Vomit_P FOOD 1004.0 FALSE FALSE FALSE FALSE -1 // latest addition TASK_ENTER_CAR_AS_PASSENGER -1 cas4_player_car -2 -1 CLOSE_SEQUENCE_TASK cas4_seq PERFORM_SEQUENCE_TASK cas4_paul_ped cas4_seq CLEAR_SEQUENCE_TASK cas4_seq cas4_vomit_status = 2 cas4_paul_busy = 1 ENDIF ENDIF ELSE IF NOT cas4_vomit_status = 3 IF cas4_vomit_status < 3 SWITCH cas4_puke_audio CASE 0 IF cas4_audio_playing = 0 cas4_audio_counter = 70// CAS4_OA//]Shhi- huuuurghhh -hit! cas4_puke_audio = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 71// CAS4_OB//]I've go- huuurrrgghh! cas4_puke_audio = 2 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 72// CAS4_OC//]Got the- Hhhuurrgghh! cas4_puke_audio = 3 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 3 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 73// CAS4_OD//]Dry- hurgh! cas4_puke_audio = 4 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 4 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 74// CAS4_OE//]Dry- hurgh! cas4_puke_audio = 5 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 5 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 75// CAS4_OF//]Dry heaves! cas4_puke_audio = 6 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 6 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 76// CAS4_OG//]Oh, I thuh- think it's past... cas4_puke_audio = 7 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 7 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 77// CAS4_OH//]Or how about a pint of cod liver oil, that would sort your guts out! cas4_puke_audio = 8 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_puke_audio_completed = 1 ENDIF ENDIF BREAK ENDSWITCH /* ELSE IF cas4_puke_audio < 10 cas4_puke_audio = 10 ENDIF SWITCH cas4_puke_audio CASE 10 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 79// CAS4_OK//]Leave him, man. cas4_puke_audio = 11 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 11 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 80// CAS4_OL//]The good doctor is just trying to help! cas4_puke_audio = 12 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 12 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 81// CAS4_OM//]Fuh-huh-Fuck off! cas4_puke_audio = 13 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_puke_audio_completed = 1 ENDIF ENDIF BREAK ENDSWITCH */ ENDIF ENDIF IF cas4_vomit_status = 2 GET_SCRIPT_TASK_STATUS cas4_paul_ped PERFORM_SEQUENCE_TASK cas4_task_status IF cas4_task_status = FINISHED_TASK REMOVE_ANIMATION FOOD cas4_vomit_status = 5 cas4_done_puke = 1 cas4_paul_busy = 0 TIMERA =0 ELSE IF IS_CHAR_PLAYING_ANIM cas4_paul_ped Eat_Vomit_P GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS cas4_paul_ped 0.355 -0.116 0.048 cas4_carx cas4_cary cas4_carz GET_CHAR_ANIM_CURRENT_TIME cas4_paul_ped Eat_Vomit_P cas4_animation_time CREATE_FX_SYSTEM puke cas4_carx cas4_cary cas4_carz TRUE cas4_vomit cas4_paul_playing_fx = 0 cas4_animation_time = 0.0 cas4_vomit_status = 3 ENDIF ENDIF ELSE IF cas4_vomit_status = 3 GET_SCRIPT_TASK_STATUS cas4_paul_ped PERFORM_SEQUENCE_TASK cas4_task_status IF cas4_task_status = FINISHED_TASK REMOVE_ANIMATION FOOD cas4_vomit_status = 5 cas4_done_puke = 1 cas4_paul_busy = 0 IF cas4_paul_playing_fx = 1 STOP_FX_SYSTEM cas4_vomit KILL_FX_SYSTEM cas4_vomit cas4_paul_playing_fx = 0 ENDIF TIMERA = 0 ENDIF IF NOT cas4_animation_time = 1.0 IF cas4_paul_playing_fx = 0 IF cas4_animation_time >= 0.42 PLAY_FX_SYSTEM cas4_vomit IF cas4_audio_playing = 0 cas4_audio_counter = 78//cas4_text[78] = CAS4_OJ//](Paul vomiting violently) GET_GAME_TIMER cas4_text_timer_start ENDIF cas4_paul_playing_fx = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD cas4_paul_ped IF IS_CHAR_PLAYING_ANIM cas4_paul_ped Eat_Vomit_P GET_CHAR_ANIM_CURRENT_TIME cas4_paul_ped Eat_Vomit_P cas4_animation_time ELSE cas4_animation_time = 1.0 ENDIF ELSE cas4_animation_time = 1.0 ENDIF ELSE STOP_FX_SYSTEM cas4_vomit KILL_FX_SYSTEM cas4_vomit TIMERA = 0 cas4_paul_playing_fx = 0 cas4_paul_busy = 0 cas4_vomit_status = 4 ENDIF ELSE GET_SCRIPT_TASK_STATUS cas4_paul_ped PERFORM_SEQUENCE_TASK cas4_task_status IF cas4_task_status = FINISHED_TASK REMOVE_ANIMATION FOOD cas4_vomit_status = 5 cas4_done_puke = 1 cas4_paul_busy = 0 TIMERA = 0 IF cas4_paul_playing_fx = 1 STOP_FX_SYSTEM cas4_vomit KILL_FX_SYSTEM cas4_vomit cas4_paul_playing_fx = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ELSE /// piss code here IF cas4_piss_status < 5 //cas4_macca_busy = 1 IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CAR_DEAD cas4_player_car ////////// ////////// IF cas4_piss_status = 0 IF cas4_banter2_completed = 1 IF NOT IS_MESSAGE_BEING_DISPLAYED SWITCH cas4_piss_audio CASE 0 IF cas4_audio_playing = 0 cas4_audio_counter = 50 // CAS4_KE I need a piss, mate! cas4_piss_audio = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 51 // CAS4_KF Oh fuck, we're screwed! cas4_piss_audio = 2 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 52 // CAS4_KG Can't it wait? cas4_piss_audio = 3 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 3 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 53 // CAS4_KH I'm fit to burst, ol'lad! cas4_piss_audio = 5 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 4 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 54 // CAS4_KJ You've got to pull over, he's priapic, it'll go everywhere! cas4_piss_audio = 5 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_message_dsplayed = 99 REQUEST_ANIMATION FOOD TIMERB = 0 cas4_piss_audio = 0 cas4_piss_status = 1 ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF//cas4_banter2_completed = 1 cas4_piss_audio_completed = 0 ELSE IF cas4_piss_status = 1 IF TIMERB > 5000 //CLEAR_PRINTS //PRINT_NOW (CAS4_38) 5000 1 //Err.. never mind. I think i've had an accident. IF NOT IS_MESSAGE_BEING_DISPLAYED SWITCH cas4_piss_audio CASE 0 IF cas4_audio_playing = 0 cas4_audio_counter = 55 // CAS4_LA I can't hold it any longer! cas4_piss_audio = 2 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 56 // CAS4_LB Oh fuck! cas4_piss_audio = 3 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 57 // CAS4_LC Hey, what the fuck? cas4_piss_audio = 5 cas4_sfx_counter = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 3 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 58 // CAS4_LD Argh! Stop it! cas4_piss_audio = 5 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 4 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 58 // CAS4_LD Argh! Stop it! cas4_piss_audio = 5 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 5 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 59 // CAS4_LE Point it out the fucking window! cas4_piss_audio = 6 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_message_dsplayed = 99 TIMERA = 0 CLEAR_MISSION_AUDIO 3 cas4_sfx_counter = 0 cas4_sfx_playing = 0 cas4_macca_busy = 0 cas4_piss_status = 9999 ENDIF ENDIF BREAK ENDSWITCH ENDIF ELSE IF HAS_ANIMATION_LOADED PAULNMAC AND IS_CAR_STOPPED cas4_player_car GET_OFFSET_FROM_CAR_IN_WORLD_COORDS cas4_player_car 4.0 2.0 0.0 cas4_carx cas4_cary cas4_carz OPEN_SEQUENCE_TASK cas4_seq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 cas4_carx cas4_cary cas4_carz PEDMOVE_SPRINT 5000 TASK_PLAY_ANIM -1 piss_in PAULNMAC 4.0 FALSE FALSE FALSE FALSE -1 // paul idle TASK_PLAY_ANIM -1 piss_loop PAULNMAC 4.0 FALSE FALSE FALSE FALSE -1 // paul idle TASK_PLAY_ANIM -1 piss_out PAULNMAC 4.0 FALSE FALSE FALSE FALSE -1 // paul idle TASK_ENTER_CAR_AS_PASSENGER -1 cas4_player_car -2 -1 CLOSE_SEQUENCE_TASK cas4_seq PERFORM_SEQUENCE_TASK cas4_macca_ped cas4_seq CLEAR_SEQUENCE_TASK cas4_seq cas4_piss_status = 2 cas4_macca_busy = 1 ENDIF ENDIF ELSE IF cas4_piss_status = 2 GET_SCRIPT_TASK_STATUS cas4_macca_ped PERFORM_SEQUENCE_TASK cas4_task_status IF cas4_task_status = FINISHED_TASK cas4_piss_status = 5 cas4_macca_busy = 0 ELSE IF cas4_task_status = PERFORMING_TASK GET_SEQUENCE_PROGRESS cas4_macca_ped cas4_task_status IF cas4_task_status > 4 IF cas4_macca_playing_fx = 1 STOP_FX_SYSTEM cas4_piss KILL_FX_SYSTEM cas4_piss CLEAR_MISSION_AUDIO 3 cas4_macca_playing_fx = 0 ENDIF ENDIF ENDIF IF IS_CHAR_PLAYING_ANIM cas4_macca_ped piss_in GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS cas4_macca_ped 0.0 0.0 -0.2 cas4_carx cas4_cary cas4_carz //GET_OFFSET_FROM_CAR_IN_WORLD_COORDS cas4_player_car 0.0 0.2 0.0 cas4_dirx cas4_diry cas4_dirz GET_CHAR_ANIM_CURRENT_TIME cas4_macca_ped piss_in cas4_animation_time CREATE_FX_SYSTEM_ON_CHAR_WITH_DIRECTION petrolcan cas4_macca_ped 0.0 0.116 0.048 cas4_carx cas4_cary cas4_carz TRUE cas4_piss ATTACH_FX_SYSTEM_TO_CHAR_BONE cas4_piss cas4_macca_ped BONE_PELVIS //CREATE_FX_SYSTEM_WITH_DIRECTION petrolcan cas4_carx cas4_cary cas4_carz cas4_dirx cas4_diry cas4_dirz TRUE cas4_piss cas4_animation_time = 0.0 cas4_piss_status = 3 cas4_macca_playing_fx = 0 ENDIF ENDIF ELSE IF cas4_piss_status = 3 GET_SCRIPT_TASK_STATUS cas4_macca_ped PERFORM_SEQUENCE_TASK cas4_task_status IF cas4_task_status = FINISHED_TASK cas4_piss_status = 5 cas4_macca_busy = 0 IF cas4_macca_playing_fx = 1 STOP_FX_SYSTEM cas4_piss KILL_FX_SYSTEM cas4_piss CLEAR_MISSION_AUDIO 3 cas4_macca_playing_fx = 0 ENDIF ELSE IF cas4_task_status = PERFORMING_TASK GET_SEQUENCE_PROGRESS cas4_macca_ped cas4_task_status IF cas4_task_status > 4 IF cas4_macca_playing_fx = 1 STOP_FX_SYSTEM cas4_piss KILL_FX_SYSTEM cas4_piss CLEAR_MISSION_AUDIO 3 cas4_macca_playing_fx = 0 ENDIF ENDIF ENDIF ENDIF IF IS_CHAR_PLAYING_ANIM cas4_macca_ped piss_in GET_CHAR_ANIM_CURRENT_TIME cas4_macca_ped piss_in cas4_animation_time IF NOT cas4_animation_time = 1.0 IF cas4_macca_playing_fx = 0 IF cas4_animation_time >= 0.6 IF cas4_audio_playing = 0 cas4_audio_counter = 60 // CAS4_MA Oh, fuck, that is goooood. GET_GAME_TIMER cas4_text_timer_start ENDIF PLAY_FX_SYSTEM cas4_piss cas4_sfx_counter = 1 cas4_macca_playing_fx = 1 cas4_piss_status = 4 ENDIF ENDIF ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS cas4_macca_ped PERFORM_SEQUENCE_TASK cas4_task_status IF cas4_task_status = FINISHED_TASK cas4_piss_status = 5 cas4_macca_busy = 0 IF cas4_macca_playing_fx = 1 STOP_FX_SYSTEM cas4_piss KILL_FX_SYSTEM cas4_piss CLEAR_MISSION_AUDIO 3 cas4_macca_playing_fx = 0 ENDIF ELSE IF cas4_task_status = PERFORMING_TASK GET_SEQUENCE_PROGRESS cas4_macca_ped cas4_task_status IF cas4_task_status > 4 IF cas4_macca_playing_fx = 1 STOP_FX_SYSTEM cas4_piss KILL_FX_SYSTEM cas4_piss CLEAR_MISSION_AUDIO 3 cas4_macca_playing_fx = 0 ENDIF ENDIF ENDIF ENDIF IF IS_CHAR_PLAYING_ANIM cas4_macca_ped piss_out GET_CHAR_ANIM_CURRENT_TIME cas4_macca_ped piss_out cas4_animation_time IF cas4_macca_playing_fx = 1 IF cas4_animation_time >= 0.42 STOP_FX_SYSTEM cas4_piss KILL_FX_SYSTEM cas4_piss CLEAR_MISSION_AUDIO 3 cas4_macca_playing_fx = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ////////// ////////// ENDIF ELSE cas4_macca_busy = 0 cas4_done_pisspuke = 1 IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CAR_DEAD cas4_player_car SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_paul_ped FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_macca_ped FALSE ENDIF ENDIF ENDIF ENDIF ELSE //cas4_both_with_player = 1 IF cas4_macca_busy = 1 IF NOT IS_CHAR_DEAD cas4_macca_ped CLEAR_CHAR_TASKS cas4_macca_ped SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_macca_ped FALSE ENDIF STOP_FX_SYSTEM cas4_piss KILL_FX_SYSTEM cas4_piss CLEAR_MISSION_AUDIO 3 cas4_piss_status = 5 cas4_macca_busy = 0 cas4_macca_playing_fx = 0 cas4_done_pisspuke = 1 ENDIF IF cas4_paul_busy = 1 IF NOT IS_CHAR_DEAD cas4_paul_ped CLEAR_CHAR_TASKS cas4_paul_ped SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_paul_ped FALSE ENDIF STOP_FX_SYSTEM cas4_vomit KILL_FX_SYSTEM cas4_vomit CLEAR_MISSION_AUDIO 3 REMOVE_ANIMATION FOOD cas4_vomit_status = 5 cas4_done_puke = 1 cas4_paul_busy = 0 cas4_paul_playing_fx = 0 ENDIF ENDIF ELSE IF cas4_macca_playing_fx = 1 STOP_FX_SYSTEM cas4_piss KILL_FX_SYSTEM cas4_piss cas4_macca_playing_fx = 0 ENDIF IF cas4_paul_playing_fx = 1 STOP_FX_SYSTEM cas4_vomit KILL_FX_SYSTEM cas4_vomit cas4_paul_playing_fx = 0 ENDIF ENDIF //// DETERMINE WHETHER END BLIP SHOULD BE DISPLAYED /// IF cas4_macca_with_player = 1 AND cas4_paul_with_player = 1 cas4_both_with_player = 1 IF cas4_snake_blip_flag = 0 IF cas4_paul_busy = 0 AND cas4_macca_busy = 0 IF NOT IS_CHAR_DEAD cas4_paul_ped AND NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CAR_DEAD cas4_player_car IF IS_CHAR_SITTING_IN_CAR cas4_paul_ped cas4_player_car AND IS_CHAR_SITTING_IN_CAR cas4_macca_ped cas4_player_car TIMERA = 0 CLEAR_PRINTS PRINT ( CAS4_16 ) 8000 1 ///////////// " snake stop " ADD_BLIP_FOR_COORD -24.0 2331.0 24.0 cas4_snake_blip cas4_snake_blip_flag = 1 cas4_audio_left_behind_played = 0 cas4_left_behind = 0 ENDIF ENDIF ENDIF ENDIF ELSE cas4_both_with_player = 0 IF cas4_snake_blip_flag = 1 REMOVE_BLIP cas4_snake_blip cas4_snake_blip_flag = 0 ENDIF IF cas4_audio_left_behind_played = 0 IF NOT cas4_audio_counter = 0 IF cas4_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 CLEAR_MISSION_AUDIO cas4_audio_slot2 ENDIF cas4_audio_playing = 1 ENDIF IF cas4_audio_playing = 1 LOAD_MISSION_AUDIO cas4_audio_slot1 cas4_audio[cas4_audio_counter] cas4_audio_playing = 2 ENDIF IF cas4_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot1 PLAY_MISSION_AUDIO cas4_audio_slot1 IF cas4_audio_counter = 7 OR cas4_audio_counter = 8 PRINT_NOW $cas4_text[cas4_audio_counter] 10000 1 ENDIF cas4_audio_playing = 3 ENDIF ENDIF IF cas4_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED cas4_audio_slot1 CLEAR_THIS_PRINT $cas4_text[cas4_audio_counter] IF cas4_audio_slot1 = 1 cas4_audio_slot1 = 2 cas4_audio_slot2 = 1 ELSE cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 ENDIF cas4_audio_counter = 0 cas4_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 IF cas4_audio_counter < 110 cas4_ahead_counter = cas4_audio_counter + 1 LOAD_MISSION_AUDIO cas4_audio_slot2 cas4_audio[cas4_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_MESSAGE_BEING_DISPLAYED IF NOT IS_CHAR_DEAD cas4_paul_ped AND NOT IS_CHAR_DEAD cas4_macca_ped IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer cas4_paul_ped 10.0 10.0 5.0 FALSE OR LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer cas4_macca_ped 10.0 10.0 5.0 FALSE IF IS_CHAR_IN_ANY_CAR scplayer cas4_no_car_played = 0 cas4_no_car = 1 IF cas4_audio_left_behind_played = 0 IF cas4_macca_with_player = 1 AND cas4_paul_with_player = 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer cas4_paul_ped 10.0 10.0 5.0 FALSE SWITCH cas4_left_behind CASE 0 IF cas4_audio_playing = 0 cas4_audio_counter = 40 //Hey, wait for me, sunshine! cas4_left_behind = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_left_behind = 0 cas4_audio_left_behind_played = 1 ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF IF cas4_macca_with_player = 0 AND cas4_paul_with_player = 1 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer cas4_macca_ped 10.0 10.0 5.0 FALSE SWITCH cas4_left_behind CASE 0 IF cas4_audio_playing = 0 cas4_audio_counter = 39 //CAS4_HB I want to come too cas4_left_behind = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_left_behind = 0 cas4_audio_left_behind_played = 1 ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF IF cas4_macca_with_player = 0 AND cas4_paul_with_player = 0 SWITCH cas4_left_behind CASE 0 IF cas4_audio_playing = 0 cas4_audio_counter = 38 //CAS4_HA Wait our kid, wait! cas4_left_behind = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_left_behind = 0 cas4_audio_left_behind_played = 1 ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF ELSE cas4_audio_left_behind_played = 0 cas4_left_behind = 0 IF cas4_no_car_played = 0 SWITCH cas4_no_car CASE 0 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_macca_ped STOP_CHAR_FACIAL_TALK cas4_macca_ped START_CHAR_FACIAL_TALK cas4_macca_ped 3000 ENDIF cas4_audio_counter = 7 //CAS4_BA//]My legs are fucked and my head's fuckin' pounding! cas4_no_car = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_paul_ped AND NOT IS_CHAR_DEAD cas4_macca_ped STOP_CHAR_FACIAL_TALK cas4_macca_ped START_CHAR_FACIAL_TALK cas4_paul_ped 3000 ENDIF cas4_audio_counter = 8 //CAS4_BB//]We can't walk back, mate... cas4_no_car = 2 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_paul_ped AND NOT IS_CHAR_DEAD cas4_macca_ped STOP_CHAR_FACIAL_TALK cas4_macca_ped STOP_CHAR_FACIAL_TALK cas4_paul_ped ENDIF cas4_no_car = 0 cas4_no_car_played = 1 ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF ELSE cas4_audio_left_behind_played = 0 cas4_left_behind = 0 cas4_no_car_played = 0 cas4_no_car = 1 ENDIF ENDIF ENDIF ENDIF IF cas4_snake_blip_flag = 1 IF cas4_paul_busy = 0 AND cas4_macca_busy = 0 //// in car audio banter 1 & 2 stuff goes here ? ///// IF cas4_banter2_completed = 0 IF NOT cas4_audio_counter = 0 IF cas4_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 CLEAR_MISSION_AUDIO cas4_audio_slot2 ENDIF cas4_audio_playing = 1 ENDIF IF cas4_audio_playing = 1 LOAD_MISSION_AUDIO cas4_audio_slot1 cas4_audio[cas4_audio_counter] cas4_audio_playing = 2 ENDIF IF cas4_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot1 PLAY_MISSION_AUDIO cas4_audio_slot1 PRINT_NOW $cas4_text[cas4_audio_counter] 10000 1 cas4_audio_playing = 3 ENDIF ENDIF IF cas4_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED cas4_audio_slot1 CLEAR_THIS_PRINT $cas4_text[cas4_audio_counter] IF cas4_audio_slot1 = 1 cas4_audio_slot1 = 2 cas4_audio_slot2 = 1 ELSE cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 ENDIF cas4_audio_counter = 0 cas4_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 IF cas4_audio_counter < 110 cas4_ahead_counter = cas4_audio_counter + 1 LOAD_MISSION_AUDIO cas4_audio_slot2 cas4_audio[cas4_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF IF cas4_banter1_completed = 0 IF NOT IS_MESSAGE_BEING_DISPLAYED SWITCH cas4_banter1 CASE 0 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CAR_DEAD cas4_player_car SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_paul_ped TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_macca_ped TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF cas4_audio_counter = 20// CAS4_DA//]Where's the rest of the band, guys? cas4_banter1 = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 21//] = CAS4_DB//]Oh bollox! Maccer, where are the boys? cas4_banter1 = 2 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 22//] = CAS4_DC//]I don't fuckin' know, do I. cas4_banter1 = 3 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 3 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 23//] = CAS4_DD//]I remember snakes, lots of snakes... cas4_banter1 = 4 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 4 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 24//] = CAS4_DE//]There's a snake farm not far from here, we can go check it out. cas4_banter1 = 5 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CAR_DEAD cas4_player_car SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_paul_ped FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_macca_ped FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF cas4_banter1_completed = 1 IF TIMERA > 25000 TIMERA = 25000 ENDIF ENDIF ENDIF BREAK ENDSWITCH ENDIF ELSE IF cas4_banter2_completed = 0 AND cas4_done_puke = 1 IF NOT IS_MESSAGE_BEING_DISPLAYED SWITCH cas4_banter2 CASE 0 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CAR_DEAD cas4_player_car SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_paul_ped TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_macca_ped TRUE ENDIF cas4_audio_counter = 25// = CAS4_EA//]I don't recognise this part of Manchester, our kid... cas4_banter2 = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 26// = CAS4_EB//]How many times do I have to tell you, we're in America! cas4_banter2 = 2 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 27// = CAS4_EC//]America? Wait 'til I tell me ma about this! cas4_banter2 = 3 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 3 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 28// = CAS4_ED//]He's like a fucking stuck record. He'll ask about Las Venturas next. cas4_banter2 = 4 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 4 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 29// = CAS4_EE//]Las Venturas? Always wanted to go there, great tits. cas4_banter2 = 5 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 5 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 30// = CAS4_EF//]Don't start, not in this confined space. cas4_banter2 = 6 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 6 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 31// = CAS4_EG///]Bouncing, wobbling, creamy tits... cas4_banter2 = 7 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 7 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 32// = CAS4_EH//]LEAVE YOURSELF ALONE! cas4_banter2 = 8 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CAR_DEAD cas4_player_car SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_paul_ped FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_macca_ped FALSE ENDIF cas4_banter2_completed = 1 IF TIMERA > 25000 TIMERA = 25000 ENDIF ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF ENDIF ENDIF ELSE IF cas4_snake_blip_flag = 1 REMOVE_BLIP cas4_snake_blip cas4_snake_blip_flag = 0 ENDIF ENDIF ENDIF ENDIF ENDIF //cas4_mission_progression_flag = 0 //////////////////////////////////////////////// IF cas4_played_cutscene_flag = 1 AND cas4_snake_car_created_flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -32.0 2337.0 24.0 100.0 100.0 20.0 FALSE CUSTOM_PLATE_FOR_NEXT_CAR WALTON &__TIM___ CREATE_CAR WALTON -50.0 2358.0 24.0 cas4_quad_car LOCK_CAR_DOORS cas4_quad_car CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_CAN_BE_DAMAGED cas4_quad_car FALSE SET_CAR_HEADING cas4_quad_car 188.0 FREEZE_CAR_POSITION cas4_quad_car TRUE CUSTOM_PLATE_FOR_NEXT_CAR WALTON &_TAMMY__ CREATE_CAR WALTON -46.0 2355.0 24.0 cas4_dune_car LOCK_CAR_DOORS cas4_dune_car CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_HEADING cas4_dune_car 188.0 FREEZE_CAR_POSITION cas4_dune_car TRUE SET_CAR_CAN_BE_DAMAGED cas4_dune_car FALSE cas4_snake_car_created_flag = 1 ENDIF ENDIF ///////////////////////////////////////////////////////////////////////////////////////// //// If player at snakefarm and prerequisits have been done start hillbilly cut-scene /// ///////////////////////////////////////////////////////////////////////////////////////// IF cas4_snake_blip_flag = 1 AND cas4_mission_progression_flag = 0 AND cas4_played_cutscene_flag = 1 //AND cas4_snake_car_created_flag = 1 IF NOT IS_CHAR_DEAD cas4_paul_ped AND NOT IS_CHAR_DEAD cas4_macca_ped IF LOCATE_CHAR_ANY_MEANS_3D scplayer -24.0 2331.0 24.0 4.0 4.0 2.0 TRUE AND LOCATE_CHAR_ANY_MEANS_3D cas4_paul_ped -24.0 2331.0 24.0 4.0 4.0 2.0 FALSE AND LOCATE_CHAR_ANY_MEANS_3D cas4_macca_ped -24.0 2331.0 24.0 4.0 4.0 2.0 FALSE REMOVE_BLIP cas4_snake_blip ////////////////////////////// start of cut-scene \\\\\\\\\\\\\\\\\\\\ //SMOKER POS stand CLEAR_PRINTS SET_FIXED_CAMERA_POSITION -21.46 2335.33 23.52 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -49.14 2356.75 26.09 JUMP_CUT MAKE_PLAYER_GANG_DISAPPEAR SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF SET_POLICE_IGNORE_PLAYER player1 ON CLEAR_AREA -24.0 2331.0 24.0 50.0 TRUE REMOVE_ANIMATION PAULNMAC REMOVE_ANIMATION FOOD REQUEST_ANIMATION SMOKING REQUEST_MODEL COLT45 WHILE NOT HAS_ANIMATION_LOADED SMOKING OR NOT HAS_MODEL_LOADED COLT45 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_MISSION2 DWMOLC1 -32.3702 2348.2388 23.1328 cas4_old_ped SET_CHAR_HEADING cas4_old_ped 180.1098 //SET_ANIM_GROUP_FOR_CHAR cas4_old_ped drunkman SET_CHAR_IS_TARGET_PRIORITY cas4_old_ped TRUE GIVE_WEAPON_TO_CHAR cas4_old_ped WEAPONTYPE_PISTOL 3000 OPEN_SEQUENCE_TASK cas4_hill_billy_seq[0] TASK_PLAY_ANIM -1 M_smkstnd_loop SMOKING 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK cas4_hill_billy_seq[0] PERFORM_SEQUENCE_TASK cas4_old_ped cas4_hill_billy_seq[0] CLEAR_SEQUENCE_TASK cas4_hill_billy_seq[0] //SMOKER PO lean CREATE_CHAR PEDTYPE_MISSION2 DWMYLC1 -34.2880 2350.2039 23.1328 cas4_pig_ped SET_CHAR_HEADING cas4_pig_ped 177.5823 SET_CHAR_IS_TARGET_PRIORITY cas4_pig_ped TRUE GIVE_WEAPON_TO_CHAR cas4_pig_ped WEAPONTYPE_PISTOL 3000 OPEN_SEQUENCE_TASK cas4_hill_billy_seq[0] TASK_PLAY_ANIM -1 M_smklean_loop SMOKING 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK cas4_hill_billy_seq[0] PERFORM_SEQUENCE_TASK cas4_pig_ped cas4_hill_billy_seq[0] CLEAR_SEQUENCE_TASK cas4_hill_billy_seq[0] SET_FIXED_CAMERA_POSITION -21.46 2335.33 23.52 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -49.14 2356.75 26.09 JUMP_CUT /// may want to warp player/paul/maccer outside of car to improve look of cut-scene //// IF NOT IS_CHAR_DEAD cas4_paul_ped AND NOT IS_CHAR_DEAD cas4_macca_ped CLEAR_AREA -25.7433 2334.6292 23.1328 100.0 TRUE IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer cas4_player_car SET_CAR_MISSION cas4_player_car MISSION_EMERGENCYVEHICLE_STOP WARP_CHAR_FROM_CAR_TO_COORD scplayer -25.7433 2334.6292 23.1328 SET_CAR_COORDINATES cas4_player_car -24.0 2331.0 24.0 ELSE SET_CHAR_COORDINATES scplayer -25.7433 2334.6292 23.1328 ENDIF SET_CHAR_HEADING scplayer 35.8419 IF IS_CHAR_IN_ANY_CAR cas4_paul_ped WARP_CHAR_FROM_CAR_TO_COORD cas4_paul_ped -23.6752 2335.5312 23.1328 ELSE SET_CHAR_COORDINATES cas4_paul_ped -23.6752 2334.5312 23.1328 ENDIF SET_CHAR_HEADING cas4_paul_ped 35.8419 IF IS_CHAR_IN_ANY_CAR cas4_macca_ped WARP_CHAR_FROM_CAR_TO_COORD cas4_macca_ped -27.9403 2335.1052 23.1328 ELSE SET_CHAR_COORDINATES cas4_macca_ped -27.9403 2334.1052 23.1328 ENDIF SET_CHAR_HEADING cas4_macca_ped 35.8419 ENDIF //ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE cas4_decision3 EVENT_DAMAGE TASK_SIMPLE_BE_DAMAGED 100.0 100.0 100.0 100.0 TRUE TRUE OPEN_SEQUENCE_TASK cas4_cutscene_player_seq IF IS_CHAR_IN_ANY_CAR scplayer TASK_LEAVE_ANY_CAR -1 ENDIF TASK_GO_STRAIGHT_TO_COORD -1 -31.7411 2342.6797 23.1250 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 35.5196 CLOSE_SEQUENCE_TASK cas4_cutscene_player_seq PERFORM_SEQUENCE_TASK scplayer cas4_cutscene_player_seq CLEAR_SEQUENCE_TASK cas4_cutscene_player_seq CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE cas4_decision2 EVENT_POTENTIAL_WALK_INTO_PED IF NOT IS_CHAR_DEAD cas4_macca_ped SET_CHAR_PROOFS cas4_macca_ped TRUE TRUE TRUE TRUE TRUE REMOVE_CHAR_FROM_GROUP cas4_macca_ped OPEN_SEQUENCE_TASK cas4_cutscene_macca_seq IF IS_CHAR_IN_ANY_CAR cas4_macca_ped TASK_LEAVE_ANY_CAR -1 ENDIF TASK_GO_STRAIGHT_TO_COORD -1 -33.0398 2342.3535 23.1250 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 37.5530 CLOSE_SEQUENCE_TASK cas4_cutscene_macca_seq PERFORM_SEQUENCE_TASK cas4_macca_ped cas4_cutscene_macca_seq CLEAR_SEQUENCE_TASK cas4_cutscene_macca_seq SET_CHAR_DECISION_MAKER cas4_macca_ped cas4_decision2 ENDIF IF NOT IS_CHAR_DEAD cas4_paul_ped SET_CHAR_PROOFS cas4_paul_ped TRUE TRUE TRUE TRUE TRUE REMOVE_CHAR_FROM_GROUP cas4_paul_ped OPEN_SEQUENCE_TASK cas4_cutscene_paul_seq IF IS_CHAR_IN_ANY_CAR cas4_paul_ped TASK_LEAVE_ANY_CAR -1 ENDIF TASK_GO_STRAIGHT_TO_COORD -1 -30.0669 2344.0020 23.1250 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 19.5560 CLOSE_SEQUENCE_TASK cas4_cutscene_paul_seq PERFORM_SEQUENCE_TASK cas4_paul_ped cas4_cutscene_paul_seq CLEAR_SEQUENCE_TASK cas4_cutscene_paul_seq SET_CHAR_DECISION_MAKER cas4_paul_ped cas4_decision2 ENDIF cas4_audio_counter = 0 cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 cas4_audio_playing = 0 cas4_text_loop_done = 0 cas4_mobile = 0 cas4_text_timer_diff = 0 cas4_text_timer_end = 0 cas4_text_timer_start = 0 cas4_ahead_counter = 0 TIMERB = 0 casino4_text_loop1: WAIT 0 IF cas4_text_loop_done = 0 IF NOT cas4_audio_counter = 0 IF cas4_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 CLEAR_MISSION_AUDIO cas4_audio_slot2 ENDIF cas4_audio_playing = 1 ENDIF IF cas4_audio_playing = 1 LOAD_MISSION_AUDIO cas4_audio_slot1 cas4_audio[cas4_audio_counter] cas4_audio_playing = 2 ENDIF IF cas4_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot1 PLAY_MISSION_AUDIO cas4_audio_slot1 PRINT_NOW $cas4_text[cas4_audio_counter] 10000 1 cas4_audio_playing = 3 ENDIF ENDIF IF cas4_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED cas4_audio_slot1 CLEAR_THIS_PRINT $cas4_text[cas4_audio_counter] IF cas4_audio_slot1 = 1 cas4_audio_slot1 = 2 cas4_audio_slot2 = 1 ELSE cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 ENDIF cas4_audio_counter = 0 cas4_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 IF cas4_audio_counter < 110 cas4_ahead_counter = cas4_audio_counter + 1 LOAD_MISSION_AUDIO cas4_audio_slot2 cas4_audio[cas4_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH cas4_mobile CASE 0 IF cas4_audio_playing = 0 STOP_CHAR_FACIAL_TALK scplayer START_CHAR_FACIAL_TALK scplayer 3000 cas4_audio_counter = 33 //CAS4_FA//]Here we are, look familiar? cas4_mobile = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_macca_ped STOP_CHAR_FACIAL_TALK cas4_macca_ped START_CHAR_FACIAL_TALK cas4_macca_ped 3000 ENDIF cas4_audio_counter = 34 //CAS4_FB//]Looks like Salford to me... cas4_mobile = 2 SKIP_CUTSCENE_START GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_paul_ped AND NOT IS_CHAR_DEAD cas4_macca_ped STOP_CHAR_FACIAL_TALK cas4_macca_ped START_CHAR_FACIAL_TALK cas4_paul_ped 3000 ENDIF cas4_audio_counter = 35 //CAS4_FC//]What? cas4_mobile = 3 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_paul_ped STOP_CHAR_FACIAL_TALK cas4_paul_ped ENDIF cas4_text_loop_done = 1 ENDIF ENDIF BREAK ENDSWITCH GOTO casino4_text_loop1 ENDIF cas4_safety_flag = 0 WHILE cas4_safety_flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -31.7411 2342.6797 23.1250 3.0 3.0 3.0 FALSE OR TIMERB > 10000 cas4_safety_flag = 1 ENDIF WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer -31.7411 2342.6797 23.1250 SET_CHAR_HEADING scplayer 37.5530 IF NOT IS_CHAR_DEAD cas4_paul_ped CLEAR_CHAR_TASKS cas4_paul_ped SET_CHAR_COORDINATES cas4_paul_ped -30.0669 2344.0020 23.1250 SET_CHAR_HEADING cas4_paul_ped 19.5560 ENDIF IF NOT IS_CHAR_DEAD cas4_macca_ped CLEAR_CHAR_TASKS cas4_macca_ped SET_CHAR_COORDINATES cas4_macca_ped -33.0398 2342.3535 23.1250 SET_CHAR_HEADING cas4_macca_ped 37.5530 ENDIF SET_FIXED_CAMERA_POSITION -29.85 2341.05 23.81 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -48.53 2366.47 31.65 JUMP_CUT REQUEST_MODEL DWFOLC // female stand in REQUEST_MODEL DWMOLC2 // incest REQUEST_ANIMATION MISC //WHILE NOT IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_C //WAIT 0 //ENDWHILE IF NOT IS_CHAR_DEAD cas4_old_ped AND NOT IS_CHAR_DEAD cas4_pig_ped OPEN_SEQUENCE_TASK cas4_cutscene_player_seq TASK_LOOK_AT_CHAR -1 cas4_old_ped 3000 TASK_LOOK_AT_CHAR -1 cas4_pig_ped 3000 CLOSE_SEQUENCE_TASK cas4_cutscene_player_seq PERFORM_SEQUENCE_TASK scplayer cas4_cutscene_player_seq CLEAR_SEQUENCE_TASK cas4_cutscene_player_seq ENDIF cas4_audio_counter = 0 cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 cas4_audio_playing = 0 cas4_text_loop_done = 0 cas4_mobile = 0 cas4_text_timer_diff = 0 cas4_text_timer_end = 0 cas4_text_timer_start = 0 cas4_ahead_counter = 0 casino4_text_loop2: WAIT 0 IF cas4_text_loop_done = 0 IF NOT cas4_audio_counter = 0 IF cas4_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 CLEAR_MISSION_AUDIO cas4_audio_slot2 ENDIF cas4_audio_playing = 1 ENDIF IF cas4_audio_playing = 1 LOAD_MISSION_AUDIO cas4_audio_slot1 cas4_audio[cas4_audio_counter] cas4_audio_playing = 2 ENDIF IF cas4_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot1 PLAY_MISSION_AUDIO cas4_audio_slot1 PRINT_NOW $cas4_text[cas4_audio_counter] 10000 1 cas4_audio_playing = 3 ENDIF ENDIF IF cas4_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED cas4_audio_slot1 CLEAR_THIS_PRINT $cas4_text[cas4_audio_counter] IF cas4_audio_slot1 = 1 cas4_audio_slot1 = 2 cas4_audio_slot2 = 1 ELSE cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 ENDIF IF NOT IS_CHAR_DEAD cas4_incest_ped STOP_CHAR_FACIAL_TALK cas4_incest_ped ENDIF IF NOT IS_CHAR_DEAD cas4_old_ped STOP_CHAR_FACIAL_TALK cas4_old_ped ENDIF IF NOT IS_CHAR_DEAD cas4_sister_ped STOP_CHAR_FACIAL_TALK cas4_sister_ped ENDIF IF NOT IS_CHAR_DEAD cas4_pig_ped STOP_CHAR_FACIAL_TALK cas4_pig_ped ENDIF cas4_audio_counter = 0 cas4_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 IF cas4_audio_counter < 110 cas4_ahead_counter = cas4_audio_counter + 1 LOAD_MISSION_AUDIO cas4_audio_slot2 cas4_audio[cas4_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH cas4_mobile CASE 0 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_old_ped START_CHAR_FACIAL_TALK cas4_old_ped 10000 ENDIF cas4_audio_counter = 103// SOUND_CAS4_FD// Take a gander at them fellas, is that them? cas4_mobile = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 IF HAS_ANIMATION_LOADED MISC CLEAR_LOOK_AT scplayer IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CHAR_DEAD cas4_paul_ped TASK_LOOK_AT_CHAR scplayer cas4_macca_ped 6000 TASK_LOOK_AT_CHAR cas4_paul_ped cas4_macca_ped 6000 OPEN_SEQUENCE_TASK cas4_cutscene_player_seq TASK_LOOK_AT_CHAR -1 cas4_paul_ped 3000 TASK_LOOK_AT_CHAR -1 scplayer 3000 CLOSE_SEQUENCE_TASK cas4_cutscene_player_seq PERFORM_SEQUENCE_TASK cas4_macca_ped cas4_cutscene_player_seq CLEAR_SEQUENCE_TASK cas4_cutscene_player_seq ENDIF IF NOT IS_CHAR_DEAD cas4_pig_ped START_CHAR_FACIAL_TALK cas4_pig_ped 10000 ENDIF cas4_audio_counter = 104// SOUND_CAS4_FE// That there city boy has been with my prize hog! cas4_mobile = 2 GET_GAME_TIMER cas4_text_timer_start ELSE REQUEST_ANIMATION MISC ENDIF ENDIF ENDIF BREAK /////////////////////////////// /////////////////////////////// CASE 2 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_pig_ped START_CHAR_FACIAL_TALK cas4_pig_ped 10000 ENDIF cas4_audio_counter = 105// SOUND_CAS4_FF// Now I don't even get no sugar from her! cas4_mobile = 3 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK ///////////////////////////////// ///////////////////////////////// CASE 3 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF NOT HAS_MODEL_LOADED DWFOLC OR NOT HAS_MODEL_LOADED DWMOLC2 REQUEST_MODEL DWFOLC // female stand in REQUEST_MODEL DWMOLC2 // incest ELSE IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CHAR_DEAD cas4_paul_ped CLEAR_LOOK_AT scplayer CLEAR_LOOK_AT cas4_paul_ped CLEAR_LOOK_AT cas4_macca_ped ENDIF IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CHAR_DEAD cas4_paul_ped OPEN_SEQUENCE_TASK cas4_cutscene_player_seq TASK_STAND_STILL -1 2000 TASK_PLAY_ANIM -1 plyr_shkhead MISC 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK cas4_cutscene_player_seq PERFORM_SEQUENCE_TASK cas4_macca_ped cas4_cutscene_player_seq CLEAR_SEQUENCE_TASK cas4_cutscene_player_seq TASK_LOOK_AT_CHAR scplayer cas4_macca_ped 6000 OPEN_SEQUENCE_TASK cas4_cutscene_player_seq TASK_STAND_STILL -1 3000 TASK_SCRATCH_HEAD -1 CLOSE_SEQUENCE_TASK cas4_cutscene_player_seq PERFORM_SEQUENCE_TASK cas4_paul_ped cas4_cutscene_player_seq CLEAR_SEQUENCE_TASK cas4_cutscene_player_seq ENDIF CLEAR_LOOK_AT scplayer //WALKER 1 route CREATE_CHAR PEDTYPE_MISSION2 DWFOLC -45.2021 2350.3196 23.1250 cas4_sister_ped SET_CHAR_HEADING cas4_sister_ped 176.9760 SET_ANIM_GROUP_FOR_CHAR cas4_sister_ped sexywoman SET_CHAR_IS_TARGET_PRIORITY cas4_sister_ped TRUE SET_CHAR_DECISION_MAKER cas4_sister_ped cas4_decision2 FLUSH_ROUTE EXTEND_ROUTE -44.0520 2348.6145 23.1250 //187.9875 EXTEND_ROUTE -39.8254 2346.7334 23.1250 //251.3449 EXTEND_ROUTE -36.6941 2346.5005 23.1250 //259.6481 OPEN_SEQUENCE_TASK cas4_hill_billy_seq[0] TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_WALK FOLLOW_ROUTE_ONCE TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK cas4_hill_billy_seq[0] PERFORM_SEQUENCE_TASK cas4_sister_ped cas4_hill_billy_seq[0] CLEAR_SEQUENCE_TASK cas4_hill_billy_seq[0] //WALKER 2 route CREATE_CHAR PEDTYPE_MISSION2 DWMOLC2 -46.1256 2351.3870 23.1250 cas4_incest_ped SET_CHAR_HEADING cas4_incest_ped 176.9760 SET_CHAR_DECISION_MAKER cas4_incest_ped cas4_decision2 FLUSH_ROUTE EXTEND_ROUTE -44.0520 2348.6145 23.1250 //187.9875 EXTEND_ROUTE -39.8254 2346.7334 23.1250 //251.3449 EXTEND_ROUTE -38.2860 2346.6750 23.1250 EXTEND_ROUTE -36.1799 2348.4119 23.1250 //265.8938 OPEN_SEQUENCE_TASK cas4_hill_billy_seq[0] TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_WALK FOLLOW_ROUTE_ONCE TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK cas4_hill_billy_seq[0] PERFORM_SEQUENCE_TASK cas4_incest_ped cas4_hill_billy_seq[0] CLEAR_SEQUENCE_TASK cas4_hill_billy_seq[0] SET_FIXED_CAMERA_POSITION -36.34 2345.19 24.52 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -50.23 2366.32 23.72 JUMP_CUT IF NOT IS_CHAR_DEAD cas4_incest_ped START_CHAR_FACIAL_TALK cas4_incest_ped 10000 ENDIF cas4_audio_counter = 106// SOUND_CAS4_FG// And that’un went and did my sis! cas4_mobile = 4 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF ENDIF BREAK /////////////////// /////////////////// CASE 4 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_incest_ped START_CHAR_FACIAL_TALK cas4_incest_ped 10000 ENDIF cas4_audio_counter = 107// SOUND_CAS4_FH// I've had a terr’ble aching in my grinds ever since! cas4_mobile = 5 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK //////////////////// //////////////////// CASE 5 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 //PRINT (cas4_18) 5000 1 //PAUL: I think I remember... hold on a mo, weren't you the one holding the video camera ! IF NOT IS_CHAR_DEAD cas4_sister_ped GET_SCRIPT_TASK_STATUS cas4_sister_ped PERFORM_SEQUENCE_TASK cas4_task_status IF cas4_task_status = FINISHED_TASK TASK_PLAY_ANIM cas4_sister_ped Scratchballs_01 MISC 4.0 TRUE FALSE FALSE FALSE -1 cas4_audio_counter = 108// SOUND_CAS4_FJ// I'm gonna slap you silly for giving me and my fella the red bumpies! IF NOT IS_CHAR_DEAD cas4_sister_ped START_CHAR_FACIAL_TALK cas4_sister_ped 10000 ENDIF cas4_mobile = 6 GET_GAME_TIMER cas4_text_timer_start ENDIF ELSE cas4_audio_counter = 108// SOUND_CAS4_FJ// I'm gonna slap you silly for giving me and my fella the red bumpies! cas4_mobile = 6 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF ENDIF BREAK CASE 6 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 SET_FIXED_CAMERA_POSITION -30.33 2342.29 24.71 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -41.67 2352.5 23.55 JUMP_CUT IF NOT IS_CHAR_DEAD cas4_incest_ped TASK_PLAY_ANIM cas4_incest_ped Scratchballs_01 MISC 4.0 TRUE FALSE FALSE FALSE -1 ENDIF IF NOT IS_CHAR_DEAD cas4_old_ped TASK_PLAY_ANIM cas4_old_ped M_smk_out SMOKING 4.0 FALSE FALSE FALSE FALSE -1 ENDIF IF NOT IS_CHAR_DEAD cas4_old_ped START_CHAR_FACIAL_TALK cas4_old_ped 10000 ENDIF cas4_audio_counter = 109// SOUND_CAS4_FK// What'n tarnation? cas4_mobile = 7 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 7 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_old_ped OPEN_SEQUENCE_TASK cas4_hill_billy_seq[0] TASK_PLAY_ANIM -1 roadcross PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 colt45_reload COLT45 4.0 FALSE FALSE FALSE FALSE -1 TASK_AIM_GUN_AT_CHAR -1 scplayer 6000 CLOSE_SEQUENCE_TASK cas4_hill_billy_seq[0] PERFORM_SEQUENCE_TASK cas4_old_ped cas4_hill_billy_seq[0] CLEAR_SEQUENCE_TASK cas4_hill_billy_seq[0] ENDIF IF NOT IS_CHAR_DEAD cas4_old_ped START_CHAR_FACIAL_TALK cas4_old_ped 10000 ENDIF cas4_audio_counter = 110// SOUND_CAS4_FL// I'm a fixing to give ya a whoopin' for what you gone and done to my young'uns cas4_mobile = 8 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_text_loop_done = 1 ENDIF ENDIF BREAK ENDSWITCH GOTO casino4_text_loop2 ENDIF SKIP_CUTSCENE_END MAKE_PLAYER_GANG_REAPPEAR CLEAR_MISSION_AUDIO cas4_audio_slot1 CLEAR_MISSION_AUDIO cas4_audio_slot2 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE cas4_decision2 EVENT_POTENTIAL_WALK_INTO_PED TASK_COMPLEX_AVOID_OTHER_PED_WHILE_WANDERING 100.0 0.0 0.0 100.0 TRUE FALSE ////////////////////// if cut-scene was skipped /////////// //////////////////////////////////////////////////////////// WHILE NOT HAS_MODEL_LOADED DWMOLC1 OR NOT HAS_MODEL_LOADED DWMYLC1 OR NOT HAS_MODEL_LOADED DWFOLC OR NOT HAS_MODEL_LOADED DWMOLC2 OR NOT HAS_MODEL_LOADED COLT45 WAIT 0 REQUEST_MODEL DWMYLC1 REQUEST_MODEL DWFOLC REQUEST_MODEL DWMOLC2 REQUEST_MODEL COLT45 ENDWHILE DELETE_CHAR cas4_old_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_old_ped CREATE_CHAR PEDTYPE_MISSION2 DWMOLC1 -32.3702 2348.2388 23.1250 cas4_old_ped SET_CHAR_HEADING cas4_old_ped 180.1098 //SET_ANIM_GROUP_FOR_CHAR cas4_old_ped drunkman SET_CHAR_IS_TARGET_PRIORITY cas4_old_ped TRUE GIVE_WEAPON_TO_CHAR cas4_old_ped WEAPONTYPE_PISTOL 3000 DELETE_CHAR cas4_pig_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_pig_ped CREATE_CHAR PEDTYPE_MISSION2 DWMYLC1 -34.2880 2350.2039 23.1250 cas4_pig_ped SET_CHAR_HEADING cas4_pig_ped 177.5823 SET_CHAR_IS_TARGET_PRIORITY cas4_pig_ped TRUE GIVE_WEAPON_TO_CHAR cas4_pig_ped WEAPONTYPE_PISTOL 3000 DELETE_CHAR cas4_sister_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_sister_ped CREATE_CHAR PEDTYPE_MISSION2 DWFOLC -36.6941 2346.5005 23.1250 cas4_sister_ped SET_CHAR_HEADING cas4_sister_ped 259.6481 SET_ANIM_GROUP_FOR_CHAR cas4_sister_ped sexywoman SET_CHAR_IS_TARGET_PRIORITY cas4_sister_ped TRUE DELETE_CHAR cas4_incest_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_incest_ped CREATE_CHAR PEDTYPE_MISSION2 DWMOLC2 -36.1799 2348.4119 23.1250 cas4_incest_ped SET_CHAR_HEADING cas4_incest_ped 265.8938 IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -31.7411 2342.6797 23.1250 ELSE SET_CHAR_COORDINATES scplayer -31.7411 2342.6797 23.1250 ENDIF SET_CHAR_HEADING scplayer 37.5530 IF NOT IS_CHAR_DEAD cas4_paul_ped CLEAR_CHAR_TASKS cas4_paul_ped IF IS_CHAR_IN_ANY_CAR cas4_paul_ped WARP_CHAR_FROM_CAR_TO_COORD cas4_paul_ped -30.0669 2344.0020 23.1250 ELSE SET_CHAR_COORDINATES cas4_paul_ped -30.0669 2344.0020 23.1250 ENDIF SET_CHAR_HEADING cas4_paul_ped 19.5560 ENDIF IF NOT IS_CHAR_DEAD cas4_macca_ped CLEAR_CHAR_TASKS cas4_macca_ped IF IS_CHAR_IN_ANY_CAR cas4_macca_ped WARP_CHAR_FROM_CAR_TO_COORD cas4_macca_ped -33.0398 2342.3535 23.1250 ELSE SET_CHAR_COORDINATES cas4_macca_ped -33.0398 2342.3535 23.1250 ENDIF SET_CHAR_HEADING cas4_macca_ped 37.5530 ENDIF IF NOT IS_CHAR_DEAD cas4_paul_ped AND NOT IS_CHAR_DEAD cas4_macca_ped TASK_TOGGLE_DUCK cas4_macca_ped TRUE TASK_TOGGLE_DUCK cas4_paul_ped TRUE ENDIF //////////////////////////////////////////// old guy tasks ////////////////////////// GET_CHAR_COORDINATES scplayer cas4_car_x cas4_car_y cas4_car_z IF NOT IS_CHAR_DEAD cas4_old_ped AND NOT IS_CAR_DEAD cas4_dune_car FREEZE_CAR_POSITION cas4_dune_car FALSE OPEN_SEQUENCE_TASK cas4_old_seq TASK_SHOOT_AT_COORD -1 cas4_car_x cas4_car_y cas4_car_z 5000 TASK_GO_STRAIGHT_TO_COORD -1 -46.3592 2346.9766 23.1348 PEDMOVE_RUN 10000 TASK_ENTER_CAR_AS_PASSENGER -1 cas4_dune_car 3000 0 TASK_DRIVE_BY -1 scplayer -1 0.0 0.0 0.0 10.0 DRIVEBY_AI_ALL_DIRN TRUE 50 CLOSE_SEQUENCE_TASK cas4_old_seq PERFORM_SEQUENCE_TASK cas4_old_ped cas4_old_seq CLEAR_SEQUENCE_TASK cas4_old_seq ELSE IF IS_CAR_DEAD cas4_dune_car OR IS_CHAR_DEAD cas4_sister_ped IF NOT IS_CHAR_DEAD cas4_old_ped TASK_KILL_CHAR_ON_FOOT cas4_old_ped scplayer ENDIF ENDIF ENDIF ///////////////////////////////////////////// pig fancier //////////// IF NOT IS_CHAR_DEAD cas4_pig_ped AND NOT IS_CAR_DEAD cas4_quad_car FREEZE_CAR_POSITION cas4_quad_car FALSE OPEN_SEQUENCE_TASK cas4_pig_seq TASK_SHOOT_AT_COORD -1 cas4_car_x cas4_car_y cas4_car_z 5000 TASK_GO_STRAIGHT_TO_COORD -1 -44.9959 2346.3806 23.1348 PEDMOVE_RUN 10000 TASK_ENTER_CAR_AS_PASSENGER -1 cas4_quad_car 3000 0 TASK_DRIVE_BY -1 scplayer -1 0.0 0.0 0.0 10.0 DRIVEBY_AI_ALL_DIRN TRUE 50 CLOSE_SEQUENCE_TASK cas4_pig_seq PERFORM_SEQUENCE_TASK cas4_pig_ped cas4_pig_seq CLEAR_SEQUENCE_TASK cas4_pig_seq ELSE IF IS_CAR_DEAD cas4_quad_car OR IS_CHAR_DEAD cas4_incest_ped IF NOT IS_CHAR_DEAD cas4_pig_ped TASK_KILL_CHAR_ON_FOOT cas4_pig_ped scplayer ENDIF ENDIF ENDIF //////////////////////// incest guy tasks /////////////////////// IF NOT IS_CHAR_DEAD cas4_incest_ped AND NOT IS_CAR_DEAD cas4_quad_car FREEZE_CAR_POSITION cas4_quad_car FALSE OPEN_SEQUENCE_TASK cas4_incest_seq TASK_SHOOT_AT_COORD -1 cas4_car_x cas4_car_y cas4_car_z 5000 TASK_GO_STRAIGHT_TO_COORD -1 -44.9959 2346.3806 23.1348 PEDMOVE_RUN 10000 TASK_ENTER_CAR_AS_DRIVER -1 cas4_quad_car 3000 CLOSE_SEQUENCE_TASK cas4_incest_seq PERFORM_SEQUENCE_TASK cas4_incest_ped cas4_incest_seq CLEAR_SEQUENCE_TASK cas4_incest_seq ELSE IF IS_CAR_DEAD cas4_quad_car AND NOT IS_CHAR_DEAD cas4_incest_ped TASK_KILL_CHAR_ON_FOOT cas4_incest_ped scplayer ENDIF ENDIF ////////////////////// sisters task sequence /////////////// IF NOT IS_CHAR_DEAD cas4_sister_ped AND NOT IS_CAR_DEAD cas4_dune_car FREEZE_CAR_POSITION cas4_dune_car FALSE OPEN_SEQUENCE_TASK cas4_sister_seq TASK_SHOOT_AT_COORD -1 cas4_car_x cas4_car_y cas4_car_z 5000 TASK_GO_STRAIGHT_TO_COORD -1 -46.3592 2346.9766 23.1348 PEDMOVE_RUN 10000 TASK_ENTER_CAR_AS_DRIVER -1 cas4_dune_car 3000 CLOSE_SEQUENCE_TASK cas4_sister_seq PERFORM_SEQUENCE_TASK cas4_sister_ped cas4_sister_seq CLEAR_SEQUENCE_TASK cas4_sister_seq ELSE IF IS_CAR_DEAD cas4_dune_car AND NOT IS_CHAR_DEAD cas4_sister_ped TASK_KILL_CHAR_ON_FOOT cas4_sister_ped scplayer ENDIF ENDIF /////////////////////////// end of assigning tasks ////////////////////////////////// SET_POLICE_IGNORE_PLAYER player1 OFF IF NOT IS_CAR_DEAD cas4_quad_car SET_CAR_CAN_BE_DAMAGED cas4_quad_car TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER cas4_quad_car TRUE ENDIF IF NOT IS_CAR_DEAD cas4_dune_car SET_CAR_CAN_BE_DAMAGED cas4_dune_car TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER cas4_dune_car TRUE ENDIF IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CHAR_DEAD cas4_paul_ped CLEAR_CHAR_TASKS scplayer CLEAR_CHAR_TASKS cas4_paul_ped CLEAR_CHAR_TASKS cas4_macca_ped CLEAR_LOOK_AT scplayer CLEAR_LOOK_AT cas4_paul_ped CLEAR_LOOK_AT cas4_macca_ped ENDIF REMOVE_ANIMATION SMOKING REMOVE_ANIMATION MISC ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE cas4_decision2 EVENT_SHOT_FIRED_WHIZZED_BY CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE cas4_decision2 EVENT_SHOT_FIRED ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE cas4_decision2 EVENT_SHOT_FIRED_WHIZZED_BY TASK_SIMPLE_DUCK_WHILE_SHOTS_WHIZZING 100.0 100.0 100.0 100.0 TRUE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE cas4_decision2 EVENT_SHOT_FIRED TASK_SIMPLE_DUCK 100.0 100.0 100.0 100.0 TRUE TRUE CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE cas4_decision3 EVENT_DAMAGE ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE cas4_decision3 EVENT_SHOT_FIRED TASK_GROUP_USE_MEMBER_DECISION 100.0 100.0 100.0 100.0 TRUE TRUE IF NOT IS_CHAR_DEAD cas4_paul_ped AND NOT IS_CHAR_DEAD cas4_macca_ped //MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 2 IF NOT IS_GROUP_MEMBER cas4_paul_ped Players_Group SET_GROUP_MEMBER Players_Group cas4_paul_ped ENDIF IF NOT IS_GROUP_MEMBER cas4_macca_ped Players_Group SET_GROUP_MEMBER Players_Group cas4_macca_ped ENDIF ENDIF cas4_temp_hill_billy[0] = cas4_old_ped cas4_temp_hill_billy[1] = cas4_sister_ped cas4_temp_hill_billy[2] = cas4_incest_ped cas4_temp_hill_billy[3] = cas4_pig_ped cas4_audio_left_behind_played = 0 cas4_left_behind = 0 RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON /////////////////////////////////////////// END OF CUT-SCENE \\\\\\\\\\\\\\\\\\\\\\\\\\ IF cas4_blip_added_flag =0 ADD_BLIP_FOR_COORD 2175.21 1679.37 9.85 cas4_end_blip PRINT_NOW ( CAS4_06 ) 8000 1 ///////////// " Get to the Mafia Casino " cas4_blip_added_flag = 1 ENDIF cas4_mission_progression_flag = 1 cas4_message_dsplayed = 9999999 ENDIF ENDIF ENDIF //////////////////////////////////////////////// /// want to checks on paul/mac location here /// //////////////////////////////////////////////// IF cas4_mission_progression_flag > 0 ////////////////////////////////////////// ////// this may have to be revised /////// ////////////////////////////////////////// IF NOT IS_CHAR_DEAD cas4_macca_ped IF cas4_macca_with_player = 1 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer cas4_macca_ped 20.0 20.0 FALSE REMOVE_CHAR_FROM_GROUP cas4_macca_ped IF NOT IS_CHAR_IN_ANY_CAR cas4_macca_ped TASK_TIRED cas4_macca_ped 60000 ELSE OPEN_SEQUENCE_TASK cas4_cutscene_macca_seq TASK_LEAVE_ANY_CAR -1 TASK_TIRED -1 60000 CLOSE_SEQUENCE_TASK cas4_cutscene_macca_seq PERFORM_SEQUENCE_TASK cas4_macca_ped cas4_cutscene_macca_seq CLEAR_SEQUENCE_TASK cas4_cutscene_macca_seq ENDIF ADD_BLIP_FOR_CHAR cas4_macca_ped cas4_macca_blip SET_BLIP_AS_FRIENDLY cas4_macca_blip TRUE cas4_macca_with_player = 0 ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer cas4_macca_ped 5.0 5.0 FALSE IF NOT IS_GROUP_MEMBER cas4_macca_ped Players_Group //MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 2 SET_GROUP_MEMBER Players_Group cas4_macca_ped ENDIF REMOVE_BLIP cas4_macca_blip cas4_macca_with_player = 1 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD cas4_paul_ped IF cas4_paul_with_player = 1 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer cas4_paul_ped 20.0 20.0 FALSE REMOVE_CHAR_FROM_GROUP cas4_paul_ped IF NOT IS_CHAR_IN_ANY_CAR cas4_paul_ped TASK_TIRED cas4_paul_ped 60000 ELSE OPEN_SEQUENCE_TASK cas4_cutscene_macca_seq TASK_LEAVE_ANY_CAR -1 TASK_TIRED -1 60000 CLOSE_SEQUENCE_TASK cas4_cutscene_macca_seq PERFORM_SEQUENCE_TASK cas4_paul_ped cas4_cutscene_macca_seq CLEAR_SEQUENCE_TASK cas4_cutscene_macca_seq ENDIF ADD_BLIP_FOR_CHAR cas4_paul_ped cas4_paul_blip SET_BLIP_AS_FRIENDLY cas4_paul_blip TRUE cas4_paul_with_player = 0 ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer cas4_paul_ped 5.0 5.0 FALSE IF NOT IS_GROUP_MEMBER cas4_paul_ped Players_Group //MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 2 SET_GROUP_MEMBER Players_Group cas4_paul_ped ENDIF REMOVE_BLIP cas4_paul_blip cas4_paul_with_player = 1 ENDIF ENDIF ENDIF IF cas4_paul_with_player = 1 AND cas4_macca_with_player = 1 //////// banter 3 & 4 go in here ? /////////// IF cas4_banter4_completed = 0 IF NOT cas4_audio_counter = 0 IF cas4_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 CLEAR_MISSION_AUDIO cas4_audio_slot2 ENDIF cas4_audio_playing = 1 ENDIF IF cas4_audio_playing = 1 LOAD_MISSION_AUDIO cas4_audio_slot1 cas4_audio[cas4_audio_counter] cas4_audio_playing = 2 ENDIF IF cas4_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot1 PLAY_MISSION_AUDIO cas4_audio_slot1 PRINT_NOW $cas4_text[cas4_audio_counter] 10000 1 cas4_audio_playing = 3 ENDIF ENDIF IF cas4_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED cas4_audio_slot1 CLEAR_THIS_PRINT $cas4_text[cas4_audio_counter] IF cas4_audio_slot1 = 1 cas4_audio_slot1 = 2 cas4_audio_slot2 = 1 ELSE cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 ENDIF cas4_audio_counter = 0 cas4_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 IF cas4_audio_counter < 110 cas4_ahead_counter = cas4_audio_counter + 1 LOAD_MISSION_AUDIO cas4_audio_slot2 cas4_audio[cas4_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_MESSAGE_BEING_DISPLAYED IF cas4_banter3_completed = 0 IF cas4_end_of_cut_completed = 0 SWITCH cas4_end_of_cut CASE 0 IF cas4_audio_playing = 0 cas4_audio_counter = 36// CAS4_GA//]Run like fuck! cas4_end_of_cut = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 37// CAS4_GB//]Everybody in the car! cas4_end_of_cut = 2 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_end_of_cut_completed = 1 TIMERB = 0 ENDIF ENDIF BREAK ENDSWITCH ELSE IF NOT IS_MESSAGE_BEING_DISPLAYED IF IS_CHAR_IN_ANY_CAR scplayer IF TIMERB > 10000 SWITCH cas4_banter3 CASE 0 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CAR_DEAD cas4_player_car SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_paul_ped TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_macca_ped TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF cas4_audio_counter = 46 //CAS4_KA//]It seems you boys had a good time! cas4_banter3 = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 47 //CAS4_KB//]What about the band? cas4_banter3 = 2 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 48 //CAS4_KC//]We'll just have to pray they've made it to civilization. cas4_banter3 = 3 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 3 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 49 //CAS4_KD//]Keyboardists and drummers are ten-a-penny anyway. cas4_banter3 = 4 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 4 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 92 //CAS4_QA//]Where is this casino? cas4_banter3 = 5 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 5 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 93 //CAS4_QB//]It's called Caligula's, it's on the strip. cas4_banter3 = 6 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CAR_DEAD cas4_player_car SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_paul_ped FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_macca_ped FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF cas4_banter3_completed = 1 TIMERB = 0 ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF ENDIF ENDIF ELSE IF cas4_banter4_completed = 0 IF NOT IS_MESSAGE_BEING_DISPLAYED IF IS_CHAR_IN_ANY_CAR scplayer IF TIMERB > 10000 SWITCH cas4_banter4 CASE 0 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CAR_DEAD cas4_player_car SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_paul_ped TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_macca_ped TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF cas4_audio_counter = 82 //CAS4_PA//]What kind of tits does this Rosie have? cas4_banter4 = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 83 //CAS4_PB//]Big, floppy sausage tits? cas4_banter4 = 2 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 2 //GET_GAME_TIMER cas4_text_timer_end //cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start //IF cas4_text_timer_diff > 1000 //IF cas4_audio_playing = 0 //cas4_audio_counter = 84 //CAS4_PC//]Empty saddlebags? cas4_banter4 = 3 //GET_GAME_TIMER cas4_text_timer_start //ENDIF //ENDIF BREAK CASE 3 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 85 //CAS4_PD//]Empty saddlebags, Bee stings?. cas4_banter4 = 4 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 4 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 86 //CAS4_PE//]Rosie is a man! cas4_banter4 = 5 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 5 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 87 //CAS4_PF//]And stop touching yourself! cas4_banter4 = 6 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 6 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 88 //CAS4_PG//]It's just for comfort, this is a stressful situation. cas4_banter4 = 7 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 7 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 89 //CAS4_PH//]You're fucking telling me it is! cas4_banter4 = 8 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 8 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 90 //CAS4_PJ//]Can it you two! cas4_banter4 = 9 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 9 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 91 //CAS4_PK//]He started it! cas4_banter4 = 10 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CAR_DEAD cas4_player_car SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_paul_ped FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_macca_ped FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF cas4_banter4_completed = 1 ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////////// IF cas4_blip_added_flag =0 cas4_audio_left_behind_played = 0 ADD_BLIP_FOR_COORD 2175.21 1679.37 9.85 cas4_end_blip CLEAR_PRINTS PRINT ( CAS4_06 ) 8000 1 ///////////// " Get to the Mafia Casino " cas4_blip_added_flag = 1 ENDIF ELSE IF cas4_blip_added_flag = 1 //CLEAR_PRINTS REMOVE_BLIP cas4_end_blip cas4_blip_added_flag =0 ENDIF IF cas4_paul_with_player = 0 AND cas4_macca_with_player = 0 IF NOT cas4_message_dsplayed = 0 CLEAR_PRINTS PRINT (CAS4_37) 7000 1 //~s~Go and pick up Paul and Maccer. cas4_message_dsplayed = 0 ENDIF ENDIF IF cas4_paul_with_player = 1 AND cas4_macca_with_player = 0 IF NOT cas4_message_dsplayed = 1 CLEAR_PRINTS PRINT ( CAS4_03 ) 7000 1 ////////////" Get to Maccer " cas4_message_dsplayed = 1 ENDIF ENDIF IF cas4_paul_with_player = 0 AND cas4_macca_with_player = 1 IF NOT cas4_message_dsplayed = 2 CLEAR_PRINTS PRINT ( CAS4_02 ) 7000 1 ///////////// " Get to Paul " cas4_message_dsplayed = 2 ENDIF ENDIF IF NOT IS_MESSAGE_BEING_DISPLAYED IF cas4_audio_left_behind_played = 0 IF NOT cas4_audio_counter = 0 IF cas4_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 CLEAR_MISSION_AUDIO cas4_audio_slot2 ENDIF cas4_audio_playing = 1 ENDIF IF cas4_audio_playing = 1 LOAD_MISSION_AUDIO cas4_audio_slot1 cas4_audio[cas4_audio_counter] cas4_audio_playing = 2 ENDIF IF cas4_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot1 PLAY_MISSION_AUDIO cas4_audio_slot1 PRINT_NOW $cas4_text[cas4_audio_counter] 10000 1 cas4_audio_playing = 3 ENDIF ENDIF IF cas4_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED cas4_audio_slot1 CLEAR_THIS_PRINT $cas4_text[cas4_audio_counter] IF cas4_audio_slot1 = 1 cas4_audio_slot1 = 2 cas4_audio_slot2 = 1 ELSE cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 ENDIF cas4_audio_counter = 0 cas4_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 IF cas4_audio_counter < 110 cas4_ahead_counter = cas4_audio_counter + 1 LOAD_MISSION_AUDIO cas4_audio_slot2 cas4_audio[cas4_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_MESSAGE_BEING_DISPLAYED SWITCH cas4_left_behind CASE 0 IF cas4_audio_playing = 0 cas4_audio_counter = 40 //CAS4_HC//]Hey, wait for me, sunshine! cas4_left_behind = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_audio_counter = 41 //CAS4_HD//]Don't leave me in their clutches! cas4_left_behind = 2 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_left_behind = 0 cas4_audio_left_behind_played = 1 ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF ENDIF ENDIF ENDIF // cas4_mission_progression_flag = 1 ////////////////////////////////////////////////////////// /// add initial drive tasks for sister and incest guy /// ////////////////////////////////////////////////////////// IF cas4_mission_progression_flag = 1 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer cas4_player_car ENDIF //WHILE cas4_old_in_car_flag = 0 //WAIT 0 IF NOT IS_CHAR_DEAD cas4_old_ped AND NOT IS_CAR_DEAD cas4_dune_car IF IS_CHAR_IN_CAR cas4_old_ped cas4_dune_car cas4_old_in_car_flag = 1 ENDIF ELSE cas4_old_in_car_flag = 1 ENDIF //ENDWHILE IF cas4_old_in_car_flag = 1 AND cas4_sister_driving = 0 IF NOT IS_CHAR_DEAD cas4_sister_ped AND NOT IS_CAR_DEAD cas4_dune_car AND NOT IS_CAR_DEAD cas4_player_car OPEN_SEQUENCE_TASK cas4_sister_drive_seq TASK_CAR_DRIVE_TO_COORD -1 cas4_dune_car -44.86 2345.23 23.16 30.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_MISSION -1 cas4_dune_car cas4_player_car MISSION_RAMPLAYER_CLOSE 35.0 DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK cas4_sister_drive_seq PERFORM_SEQUENCE_TASK cas4_sister_ped cas4_sister_drive_seq CLEAR_SEQUENCE_TASK cas4_sister_drive_seq cas4_sister_driving = 1 ENDIF ENDIF //////////////////////////////////////////////////// make the incest guy drive /////////////// IF NOT IS_CHAR_DEAD cas4_pig_ped AND NOT IS_CAR_DEAD cas4_quad_car IF IS_CHAR_IN_CAR cas4_pig_ped cas4_quad_car cas4_pig_in_car_flag = 1 ENDIF ELSE cas4_pig_in_car_flag =1 ENDIF IF cas4_pig_in_car_flag =1 AND cas4_incest_driving = 0 IF NOT IS_CHAR_DEAD cas4_incest_ped AND NOT IS_CAR_DEAD cas4_quad_car AND NOT IS_CAR_DEAD cas4_player_car OPEN_SEQUENCE_TASK cas4_incest_drive_seq TASK_CAR_DRIVE_TO_COORD -1 cas4_quad_car -50.86 2349.23 23.16 30.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH TASK_CAR_MISSION -1 cas4_quad_car cas4_player_car MISSION_RAMPLAYER_CLOSE 35.0 DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK cas4_incest_drive_seq PERFORM_SEQUENCE_TASK cas4_incest_ped cas4_incest_drive_seq CLEAR_SEQUENCE_TASK cas4_incest_drive_seq cas4_incest_driving = 1 ENDIF ENDIF IF cas4_pig_in_car_flag =1 AND cas4_old_in_car_flag = 1 IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CHAR_DEAD cas4_paul_ped SET_CHAR_PROOFS cas4_paul_ped FALSE FALSE FALSE FALSE TRUE SET_CHAR_PROOFS cas4_macca_ped FALSE FALSE FALSE FALSE TRUE ENDIF CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE cas4_decision2 EVENT_SHOT_FIRED_WHIZZED_BY CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE cas4_decision2 EVENT_SHOT_FIRED cas4_mission_progression_flag = 2 ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////////// /// Hill billy chase code if player gets too far away from the hillbilly's warp them closer /// /////////////////////////////////////////////////////////////////////////////////////////////// IF cas4_mission_progression_flag = 2 AND cas4_hill_billy_stand_played = 0 IF IS_CHAR_DEAD cas4_sister_ped cas4_driver1_in_car = 0 ELSE IF NOT IS_CAR_DEAD cas4_dune_car IF IS_CHAR_IN_CAR cas4_sister_ped cas4_dune_car cas4_driver1_in_car = 1 ELSE cas4_driver1_in_car = 0 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD cas4_incest_ped cas4_driver2_in_car = 0 ELSE IF NOT IS_CAR_DEAD cas4_quad_car IF IS_CHAR_IN_CAR cas4_incest_ped cas4_quad_car cas4_driver2_in_car = 1 ELSE cas4_driver2_in_car = 0 ENDIF ELSE cas4_driver2_in_car = 0 ENDIF ENDIF IF NOT IS_CHAR_DEAD cas4_old_ped IF IS_CAR_DEAD cas4_dune_car OR NOT IS_CHAR_IN_ANY_CAR cas4_old_ped OR cas4_driver1_in_car = 0 GET_SCRIPT_TASK_STATUS cas4_old_ped PERFORM_SEQUENCE_TASK cas4_task_status IF cas4_task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS cas4_old_ped TASK_KILL_CHAR_ON_FOOT cas4_task_status IF NOT cas4_task_status = WAITING_TO_START_TASK AND NOT cas4_task_status = PERFORMING_TASK IF cas4_old_task_assigned = 0 TASK_KILL_CHAR_ON_FOOT cas4_old_ped scplayer cas4_old_task_assigned = 1 ENDIF ELSE IF cas4_task_status = FINISHED_TASK cas4_old_task_assigned = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD cas4_sister_ped IF IS_CAR_DEAD cas4_dune_car OR cas4_driver1_in_car = 0 GET_SCRIPT_TASK_STATUS cas4_sister_ped PERFORM_SEQUENCE_TASK cas4_task_status IF cas4_task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS cas4_sister_ped TASK_KILL_CHAR_ON_FOOT cas4_task_status IF NOT cas4_task_status = WAITING_TO_START_TASK AND NOT cas4_task_status = PERFORMING_TASK IF cas4_sister_task_assigned = 0 TASK_KILL_CHAR_ON_FOOT cas4_sister_ped scplayer cas4_sister_task_assigned = 1 ENDIF ELSE IF cas4_task_status = FINISHED_TASK cas4_sister_task_assigned = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD cas4_pig_ped IF IS_CAR_DEAD cas4_quad_car OR NOT IS_CHAR_IN_ANY_CAR cas4_pig_ped OR cas4_driver2_in_car = 0 GET_SCRIPT_TASK_STATUS cas4_pig_ped PERFORM_SEQUENCE_TASK cas4_task_status IF cas4_task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS cas4_pig_ped TASK_KILL_CHAR_ON_FOOT cas4_task_status IF NOT cas4_task_status = WAITING_TO_START_TASK AND NOT cas4_task_status = PERFORMING_TASK IF cas4_pig_task_assigned = 0 TASK_KILL_CHAR_ON_FOOT cas4_pig_ped scplayer cas4_pig_task_assigned = 1 ENDIF ELSE IF cas4_task_status = FINISHED_TASK cas4_pig_task_assigned = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD cas4_incest_ped IF IS_CAR_DEAD cas4_quad_car OR cas4_driver2_in_car = 0 GET_SCRIPT_TASK_STATUS cas4_incest_ped PERFORM_SEQUENCE_TASK cas4_task_status IF cas4_task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS cas4_incest_ped TASK_KILL_CHAR_ON_FOOT cas4_task_status IF NOT cas4_task_status = WAITING_TO_START_TASK AND NOT cas4_task_status = PERFORMING_TASK IF cas4_incest_task_assigned = 0 TASK_KILL_CHAR_ON_FOOT cas4_incest_ped scplayer cas4_incest_task_assigned = 1 ENDIF ELSE IF cas4_task_status = FINISHED_TASK cas4_incest_task_assigned = 0 ENDIF ENDIF ENDIF ENDIF ENDIF /////////////////////////////////////////////// /////////////////// CAR catch up stuff /////// /////////////////////////////////////////////// IF NOT IS_CHAR_DEAD cas4_sister_ped AND NOT IS_CAR_DEAD cas4_dune_car IF IS_CHAR_IN_CAR cas4_sister_ped cas4_dune_car SET_CAR_CRUISE_SPEED cas4_dune_car 35.0 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer cas4_sister_ped 100.0 100.0 FALSE AND NOT IS_CAR_ON_SCREEN cas4_dune_car //IF NOT IS_CHAR_IN_AIR scplayer IF NOT IS_CHAR_IN_FLYING_VEHICLE scplayer GET_CHAR_COORDINATES scplayer cas4_playerx cas4_playery cas4_playerz GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -10.0 -10.0 0.0 cas4_carx cas4_cary cas4_carz IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY cas4_carx cas4_cary cas4_carz 4.0 4.0 3.0 IF NOT IS_POINT_ON_SCREEN cas4_carx cas4_cary cas4_carz 4.0 SET_CAR_COORDINATES cas4_dune_car cas4_carx cas4_cary cas4_carz TURN_CAR_TO_FACE_COORD cas4_dune_car cas4_playerx cas4_playery SET_CAR_MISSION cas4_dune_car MISSION_RAMPLAYER_CLOSE ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD cas4_incest_ped AND NOT IS_CAR_DEAD cas4_quad_car IF IS_CHAR_IN_CAR cas4_incest_ped cas4_quad_car SET_CAR_CRUISE_SPEED cas4_quad_car 35.0 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer cas4_incest_ped 100.0 100.0 FALSE AND NOT IS_CAR_ON_SCREEN cas4_quad_car //IF NOT IS_CHAR_IN_AIR scplayer IF NOT IS_CHAR_IN_FLYING_VEHICLE scplayer GET_CHAR_COORDINATES scplayer cas4_playerx cas4_playery cas4_playerz GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -13.0 -13.0 0.0 cas4_carx cas4_cary cas4_carz IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY cas4_carx cas4_cary cas4_carz 4.0 4.0 3.0 IF NOT IS_POINT_ON_SCREEN cas4_carx cas4_cary cas4_carz 4.0 SET_CAR_COORDINATES cas4_quad_car cas4_carx cas4_cary cas4_carz TURN_CAR_TO_FACE_COORD cas4_quad_car cas4_playerx cas4_playery SET_CAR_MISSION cas4_quad_car MISSION_RAMPLAYER_CLOSE ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ////////////////////////// change_blip_stuff ///////////// cas4_counter = 0 cas4_hill_billies_alive = 0 WHILE cas4_counter < 4 IF IS_CHAR_DEAD cas4_temp_hill_billy[cas4_counter] cas4_hill_billy_dead[cas4_counter] = 1 ELSE cas4_hill_billy_dead[cas4_counter] = 0 cas4_hill_billies_alive++ ENDIF cas4_counter++ ENDWHILE /////////////////////////////////////////////////////////////////////////////// /// If player at casino and prerequisits have been done start end cutscene /// ////////////////////////////////////////////////////////////////////////////// IF cas4_blip_added_flag = 1 OR cas4_at_end_flag = 1 IF NOT IS_CHAR_DEAD cas4_paul_ped AND NOT IS_CHAR_DEAD cas4_macca_ped IF cas4_at_end_flag = 0 IF cas4_hill_billies_alive > 0 AND cas4_hill_billy_stand_played = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2175.21 1679.37 9.85 4.0 4.0 2.0 TRUE GOSUB cas4_last_stand cas4_hill_billy_stand_played = 1 cas4_at_end_flag = 1 ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2175.21 1679.37 9.85 4.0 4.0 2.0 TRUE AND LOCATE_CHAR_ANY_MEANS_3D cas4_paul_ped 2175.21 1679.37 9.85 6.0 6.0 2.0 FALSE AND LOCATE_CHAR_ANY_MEANS_3D cas4_macca_ped 2175.21 1679.37 9.85 6.0 6.0 2.0 FALSE REMOVE_BLIP cas4_end_blip cas4_at_end_flag = 1 CLEAR_PRINTS ENDIF /////////////////////////////////////////////////////// /////////////////////////////////////////////////////// /////////////////////////////////////////////////////// ENDIF ELSE ///////////////////////////////// //// PLAY END CUT-SCENE HERE //// ///////////////////////////////// IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CHAR_DEAD cas4_paul_ped ////////////// PLAY CUT_SCENE \\\\\\\\\\ CLEAR_PRINTS SET_PLAYER_CONTROL Player1 OFF DO_FADE 1500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE MARK_CHAR_AS_NO_LONGER_NEEDED cas4_incest_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_old_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_sister_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_pig_ped MARK_CAR_AS_NO_LONGER_NEEDED cas4_dune_car MARK_CAR_AS_NO_LONGER_NEEDED cas4_quad_car SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 2188.26 1678.00 11.19 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2153.54 1692.94 12.04 JUMP_CUT IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CHAR_DEAD cas4_paul_ped IF IS_CHAR_IN_ANY_CAR cas4_macca_ped WARP_CHAR_FROM_CAR_TO_COORD cas4_macca_ped 2179.7075 1680.5681 10.0469 ELSE SET_CHAR_COORDINATES cas4_macca_ped 2179.7075 1680.5681 10.0469 ENDIF SET_CHAR_HEADING cas4_macca_ped 266.3517 IF IS_CHAR_IN_ANY_CAR cas4_paul_ped WARP_CHAR_FROM_CAR_TO_COORD cas4_paul_ped 2179.7075 1677.5681 10.0469 ELSE SET_CHAR_COORDINATES cas4_paul_ped 2179.7075 1677.5681 10.0469 ENDIF SET_CHAR_HEADING cas4_paul_ped 266.3517 IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2179.7593 1678.9568 10.0469 ELSE SET_CHAR_COORDINATES scplayer 2179.7593 1678.9568 10.0469 ENDIF SET_CHAR_HEADING scplayer 269.2490 REMOVE_DECISION_MAKER cas4_decision2 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY cas4_decision2 CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE cas4_decision2 EVENT_POTENTIAL_WALK_INTO_PED SET_CHAR_DECISION_MAKER cas4_macca_ped cas4_decision2 SET_CHAR_DECISION_MAKER cas4_paul_ped cas4_decision2 TASK_GO_STRAIGHT_TO_COORD scplayer 2187.0 1680.0 11.4 PEDMOVE_WALK -1 REMOVE_CHAR_FROM_GROUP cas4_macca_ped TASK_GO_STRAIGHT_TO_COORD cas4_macca_ped 2187.0 1680.0 11.4 PEDMOVE_WALK -1 REMOVE_CHAR_FROM_GROUP cas4_paul_ped TASK_GO_STRAIGHT_TO_COORD cas4_paul_ped 2187.0 1680.0 11.4 PEDMOVE_WALK -1 ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////// DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE TIMERA = 0 cas4_audio_counter = 0 cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 cas4_audio_playing = 0 cas4_text_loop_done = 0 cas4_mobile = 0 cas4_text_timer_diff = 0 cas4_text_timer_end = 0 cas4_text_timer_start = 0 cas4_ahead_counter = 0 casino4_text_loop5: WAIT 0 IF cas4_text_loop_done = 0 IF NOT cas4_audio_counter = 0 IF cas4_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 CLEAR_MISSION_AUDIO cas4_audio_slot2 ENDIF cas4_audio_playing = 1 ENDIF IF cas4_audio_playing = 1 LOAD_MISSION_AUDIO cas4_audio_slot1 cas4_audio[cas4_audio_counter] cas4_audio_playing = 2 ENDIF IF cas4_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot1 PLAY_MISSION_AUDIO cas4_audio_slot1 PRINT_NOW $cas4_text[cas4_audio_counter] 10000 1 cas4_audio_playing = 3 ENDIF ENDIF IF cas4_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED cas4_audio_slot1 CLEAR_THIS_PRINT $cas4_text[cas4_audio_counter] IF cas4_audio_slot1 = 1 cas4_audio_slot1 = 2 cas4_audio_slot2 = 1 ELSE cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 ENDIF cas4_audio_counter = 0 cas4_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 IF cas4_audio_counter < 110 cas4_ahead_counter = cas4_audio_counter + 1 LOAD_MISSION_AUDIO cas4_audio_slot2 cas4_audio[cas4_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH cas4_mobile CASE 0 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_paul_ped STOP_CHAR_FACIAL_TALK cas4_paul_ped START_CHAR_FACIAL_TALK cas4_paul_ped 3000 ENDIF cas4_audio_counter = 99 //= CAS4_SA//]Come on, let's go in and see Rosie. cas4_mobile = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_paul_ped STOP_CHAR_FACIAL_TALK cas4_paul_ped ENDIF cas4_text_loop_done = 1 ENDIF ENDIF BREAK ENDSWITCH GOTO casino4_text_loop5 ENDIF WHILE cas4_at_casino_flag = 0 WAIT 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2187.0 1680.0 2.0 2.0 FALSE cas4_at_casino_flag =1 ENDIF IF TIMERA > 15000 // safety timer to exit loop after 20 seconds IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY 2195.35 1680.0577 11.4 1.5 1.5 3.0 SET_CHAR_COORDINATES scplayer 2187.0 1680.0 11.4 ENDIF cas4_at_casino_flag = 1 ENDIF ENDWHILE SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE FORCE_WEATHER WEATHER_SUNNY_VEGAS MARK_CAR_AS_NO_LONGER_NEEDED cas4_player_car MARK_CAR_AS_NO_LONGER_NEEDED cas4_quad_car MARK_CAR_AS_NO_LONGER_NEEDED cas4_dune_car MARK_CAR_AS_NO_LONGER_NEEDED cas4_temp_car REMOVE_CHAR_ELEGANTLY cas4_paul_ped REMOVE_CHAR_ELEGANTLY cas4_macca_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_old_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_sister_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_pig_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_incest_ped //MARK_MODEL_AS_NO_LONGER_NEEDED PAUL //MARK_MODEL_AS_NO_LONGER_NEEDED MACCER MARK_MODEL_AS_NO_LONGER_NEEDED WALTON MARK_MODEL_AS_NO_LONGER_NEEDED DWFOLC MARK_MODEL_AS_NO_LONGER_NEEDED DWMOLC1 MARK_MODEL_AS_NO_LONGER_NEEDED DWMOLC2 MARK_MODEL_AS_NO_LONGER_NEEDED DWMYLC1 MARK_MODEL_AS_NO_LONGER_NEEDED DWMYLC1 MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 ///////////////////////////////////// UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 MAKE_PLAYER_SAFE_FOR_CUTSCENE Player1 //SWITCH_STREAMING OFF SET_AREA_VISIBLE 2 LOAD_CUTSCENE CAS_4c WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 RELEASE_WEATHER RESTORE_CAMERA_JUMPCUT DELETE_CHAR cas4_paul_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_paul_ped DELETE_CHAR cas4_macca_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_macca_ped SET_CHAR_COORDINATES scplayer 2187.0 1680.0 10.1060 SET_CHAR_HEADING scplayer 90.0 LOAD_SCENE 2187.0 1680.0 10.1060 REQUEST_MODEL CELLPHONE WHILE NOT HAS_MODEL_LOADED CELLPHONE WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION 2186.5242 1679.3633 11.6094 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2186.9832 1680.2462 11.7063 JUMP_CUT SET_PLAYER_CONTROL Player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE TASK_USE_MOBILE_PHONE scplayer TRUE WAIT 2000 cas4_audio_counter = 0 cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 cas4_audio_playing = 0 cas4_text_loop_done = 0 cas4_mobile = 0 cas4_text_timer_diff = 0 cas4_text_timer_end = 0 cas4_text_timer_start = 0 cas4_ahead_counter = 0 SKIP_CUTSCENE_START casino4_text_loop6: WAIT 0 IF cas4_text_loop_done = 0 IF NOT cas4_audio_counter = 0 IF cas4_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 CLEAR_MISSION_AUDIO cas4_audio_slot2 ENDIF cas4_audio_playing = 1 ENDIF IF cas4_audio_playing = 1 LOAD_MISSION_AUDIO cas4_audio_slot1 cas4_audio[cas4_audio_counter] cas4_audio_playing = 2 ENDIF IF cas4_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot1 PLAY_MISSION_AUDIO cas4_audio_slot1 PRINT_NOW $cas4_text[cas4_audio_counter] 10000 1 cas4_audio_playing = 3 ENDIF ENDIF IF cas4_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED cas4_audio_slot1 CLEAR_THIS_PRINT $cas4_text[cas4_audio_counter] IF cas4_audio_slot1 = 1 cas4_audio_slot1 = 2 cas4_audio_slot2 = 1 ELSE cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 ENDIF cas4_audio_counter = 0 cas4_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 IF cas4_audio_counter < 110 cas4_ahead_counter = cas4_audio_counter + 1 LOAD_MISSION_AUDIO cas4_audio_slot2 cas4_audio[cas4_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH cas4_mobile CASE 0 IF cas4_audio_playing = 0 STOP_CHAR_FACIAL_TALK scplayer START_CHAR_FACIAL_TALK scplayer 3000 cas4_audio_counter = 100// SOUND_CAS4_TA Yo, Woozie, just a quick call to say I think I've found a way cas4_mobile = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 1 IF cas4_audio_playing = 0 cas4_audio_counter = 101// SOUND_CAS4_TB to scope Caligula's Casino without causing too much suspicion. STOP_CHAR_FACIAL_TALK scplayer START_CHAR_FACIAL_TALK scplayer 3000 cas4_mobile = 2 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 2 IF cas4_audio_playing = 0 cas4_audio_counter = 102// SOUND_CAS4_TC We can talk later. cas4_mobile = 3 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 STOP_CHAR_FACIAL_TALK scplayer cas4_text_loop_done = 1 ENDIF ENDIF BREAK ENDSWITCH GOTO casino4_text_loop6 ENDIF SKIP_CUTSCENE_END MAKE_PLAYER_GANG_REAPPEAR STOP_CHAR_FACIAL_TALK scplayer CLEAR_MISSION_AUDIO cas4_audio_slot1 CLEAR_MISSION_AUDIO cas4_audio_slot2 GET_SCRIPT_TASK_STATUS scplayer TASK_USE_MOBILE_PHONE cas4_task_status IF NOT cas4_task_status = FINISHED_TASK TASK_USE_MOBILE_PHONE scplayer FALSE ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON GOTO mission_casino4_passed cas4_played_cutscene_flag =1 ENDIF ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// ENDIF //cas4_at_end_flag = 0 ENDIF ENDIF GOTO casino4_main_loop ///////////////////////////////////// ///////////// LABEL FNCTIONS /////// ///////////////////////////////////// cas4_fight_scene: IF NOT IS_CHAR_DEAD cas4_macca_ped AND NOT IS_CHAR_DEAD cas4_paul_ped //GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 1.3 0.0 cas4_fight_x cas4_fight_y cas4_fight_z //PRINT (CAS4_31) 4000 1 // fight over seat //PRINT (CAS4_32) 4000 1 // fight over seat //PRINT (CAS4_44) 10000 1//~s~They're going to keep on fighting until you find a car with enough seats for the both of them. OPEN_SEQUENCE_TASK cas4_seq TASK_GOTO_CHAR -1 cas4_macca_ped -1 1.2 TASK_TURN_CHAR_TO_FACE_CHAR -1 cas4_macca_ped TASK_PLAY_ANIM -1 PnM_Loop_A PAULNMAC 4.0 FALSE FALSE FALSE FALSE -1 // paul idle TASK_PLAY_ANIM -1 PnM_Argue2_A PAULNMAC 4.0 FALSE FALSE FALSE FALSE -1 //paul pushed TASK_PLAY_ANIM -1 PnM_Loop_A PAULNMAC 4.0 FALSE FALSE FALSE FALSE -1 //paul idle TASK_PLAY_ANIM -1 PnM_Argue1_A PAULNMAC 4.0 FALSE FALSE FALSE FALSE -1 //paul pushing TASK_PLAY_ANIM -1 PnM_Loop_A PAULNMAC 4.0 FALSE FALSE FALSE FALSE -1 //paul idle SET_SEQUENCE_TO_REPEAT cas4_seq 1 CLOSE_SEQUENCE_TASK cas4_seq PERFORM_SEQUENCE_TASK cas4_paul_ped cas4_seq CLEAR_SEQUENCE_TASK cas4_seq OPEN_SEQUENCE_TASK cas4_seq TASK_GOTO_CHAR -1 cas4_paul_ped -1 1.2 TASK_TURN_CHAR_TO_FACE_CHAR -1 cas4_paul_ped TASK_PLAY_ANIM -1 PnM_Loop_B PAULNMAC 4.0 FALSE FALSE FALSE FALSE -1 // macca idle TASK_PLAY_ANIM -1 PnM_Argue2_B PAULNMAC 4.0 FALSE FALSE FALSE FALSE -1 //macca pushing TASK_PLAY_ANIM -1 PnM_Loop_B PAULNMAC 4.0 FALSE FALSE FALSE FALSE -1 // macca idle TASK_PLAY_ANIM -1 PnM_Argue1_B PAULNMAC 4.0 FALSE FALSE FALSE FALSE -1 //macca pushed TASK_PLAY_ANIM -1 PnM_Loop_B PAULNMAC 4.0 FALSE FALSE FALSE FALSE -1 // macca idle SET_SEQUENCE_TO_REPEAT cas4_seq 1 CLOSE_SEQUENCE_TASK cas4_seq PERFORM_SEQUENCE_TASK cas4_macca_ped cas4_seq CLEAR_SEQUENCE_TASK cas4_seq ENDIF RETURN cas4_last_stand: // at casino LVAR_INT cas4_paul_target cas4_macca_target cas4_counter2 LVAR_INT cas4_temp_flag cas4_temp_flag2 cas4_temp_flag3 LVAR_INT cas4_temp_driver SET_GROUP_DECISION_MAKER Players_Group -1 SET_POLICE_IGNORE_PLAYER player1 ON SET_WANTED_MULTIPLIER 0.0 cas4_temp_hill_billy[0] = cas4_old_ped cas4_temp_hill_billy[1] = cas4_sister_ped cas4_temp_hill_billy[2] = cas4_incest_ped cas4_temp_hill_billy[3] = cas4_pig_ped cas4_counter = 0 cas4_hill_billies_alive = 0 WHILE cas4_counter < 4 IF IS_CHAR_DEAD cas4_temp_hill_billy[cas4_counter] cas4_hill_billy_dead[cas4_counter] = 1 ELSE CLEAR_CHAR_TASKS cas4_temp_hill_billy[cas4_counter] SET_CURRENT_CHAR_WEAPON cas4_temp_hill_billy[cas4_counter] WEAPONTYPE_UNARMED cas4_hill_billy_dead[cas4_counter] = 0 cas4_hill_billies_alive++ ENDIF cas4_counter++ ENDWHILE IF cas4_hill_billies_alive > 0 REMOVE_BLIP cas4_end_blip cas4_blip_added_flag = 0 ///// HAVE CUT-SCENE ///// SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON //////// HAVE DECENT CAMERA ANGLE GO IN HERE /// CLEAR_AREA 2165.6121 1680.6188 9.8047 50.0 TRUE CLEAR_PRINTS SET_FIXED_CAMERA_POSITION 2171.91 1669.08 10.32 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2164.93 1708.54 16.85 JUMP_CUT REQUEST_ANIMATION MISC REQUEST_ANIMATION GANGS SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 IF NOT IS_CAR_DEAD cas4_quad_car IF NOT IS_CHAR_DEAD cas4_incest_ped IF IS_CHAR_IN_CAR cas4_incest_ped cas4_quad_car SET_CAR_COORDINATES cas4_quad_car 2096.1365 1643.9520 9.7768 SET_CAR_HEADING cas4_quad_car 270.9418 TASK_CAR_DRIVE_TO_COORD cas4_incest_ped cas4_quad_car 2158.5183 1681.4022 9.8047 30.0 MODE_ACCURATE 0 DRIVINGMODE_SLOWDOWNFORCARS ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD cas4_dune_car IF NOT IS_CHAR_DEAD cas4_sister_ped IF IS_CHAR_IN_CAR cas4_sister_ped cas4_dune_car SET_CAR_COORDINATES cas4_dune_car 2080.9336 1643.6493 9.6757 SET_CAR_HEADING cas4_dune_car 271.0448 TASK_CAR_DRIVE_TO_COORD cas4_sister_ped cas4_dune_car 2154.2747 1664.9645 9.8125 30.0 MODE_ACCURATE 0 DRIVINGMODE_SLOWDOWNFORCARS ENDIF ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer cas4_player_car IF NOT IS_CAR_DEAD cas4_player_car SET_CAR_MISSION cas4_player_car MISSION_STOP_FOREVER cas4_safety_flag = 0 TIMERB = 0 WHILE cas4_safety_flag = 0 IF cas4_crap_assigned = 0 IF NOT IS_CAR_DEAD cas4_player_car IF IS_CAR_STOPPED cas4_player_car OPEN_SEQUENCE_TASK cas4_hill_billy_seq[0] IF IS_CHAR_IN_ANY_CAR scplayer TASK_LEAVE_ANY_CAR -1 ENDIF TASK_GO_STRAIGHT_TO_COORD -1 2171.0 1671.0 11.0 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK cas4_hill_billy_seq[0] PERFORM_SEQUENCE_TASK scplayer cas4_hill_billy_seq[0] CLEAR_SEQUENCE_TASK cas4_hill_billy_seq[0] IF NOT IS_CHAR_DEAD cas4_macca_ped REMOVE_CHAR_FROM_GROUP cas4_macca_ped OPEN_SEQUENCE_TASK cas4_hill_billy_seq[0] IF IS_CHAR_IN_ANY_CAR cas4_macca_ped TASK_LEAVE_ANY_CAR -1 ENDIF TASK_GO_STRAIGHT_TO_COORD -1 2172.0 1669.0 10.8125 PEDMOVE_WALK -1//82.2107 CLOSE_SEQUENCE_TASK cas4_hill_billy_seq[0] PERFORM_SEQUENCE_TASK cas4_macca_ped cas4_hill_billy_seq[0] CLEAR_SEQUENCE_TASK cas4_hill_billy_seq[0] ENDIF IF NOT IS_CHAR_DEAD cas4_paul_ped REMOVE_CHAR_FROM_GROUP cas4_paul_ped OPEN_SEQUENCE_TASK cas4_hill_billy_seq[0] IF IS_CHAR_IN_ANY_CAR cas4_paul_ped TASK_LEAVE_ANY_CAR -1 ENDIF TASK_GO_STRAIGHT_TO_COORD -1 2170.0 1673.0 10.8203 PEDMOVE_WALK -1//101.6816 CLOSE_SEQUENCE_TASK cas4_hill_billy_seq[0] PERFORM_SEQUENCE_TASK cas4_paul_ped cas4_hill_billy_seq[0] CLEAR_SEQUENCE_TASK cas4_hill_billy_seq[0] ENDIF cas4_safety_flag = 1 cas4_crap_assigned = 1 ENDIF ENDIF ENDIF IF TIMERB > 20000 cas4_safety_flag = 1 ENDIF WAIT 0 ENDWHILE ENDIF ELSE OPEN_SEQUENCE_TASK cas4_hill_billy_seq[0] IF IS_CHAR_IN_ANY_CAR scplayer TASK_LEAVE_ANY_CAR -1 ENDIF TASK_GO_STRAIGHT_TO_COORD -1 2165.6121 1680.6188 9.8047 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK cas4_hill_billy_seq[0] PERFORM_SEQUENCE_TASK scplayer cas4_hill_billy_seq[0] CLEAR_SEQUENCE_TASK cas4_hill_billy_seq[0] IF NOT IS_CHAR_DEAD cas4_macca_ped OPEN_SEQUENCE_TASK cas4_hill_billy_seq[0] IF IS_CHAR_IN_ANY_CAR cas4_macca_ped TASK_LEAVE_ANY_CAR -1 ENDIF TASK_GO_STRAIGHT_TO_COORD -1 2166.4429 1678.6064 9.8125 PEDMOVE_WALK -1//82.2107 CLOSE_SEQUENCE_TASK cas4_hill_billy_seq[0] PERFORM_SEQUENCE_TASK cas4_macca_ped cas4_hill_billy_seq[0] CLEAR_SEQUENCE_TASK cas4_hill_billy_seq[0] ENDIF IF NOT IS_CHAR_DEAD cas4_paul_ped OPEN_SEQUENCE_TASK cas4_hill_billy_seq[0] IF IS_CHAR_IN_ANY_CAR cas4_paul_ped TASK_LEAVE_ANY_CAR -1 ENDIF TASK_GO_STRAIGHT_TO_COORD -1 2166.7063 1683.2908 9.8203 PEDMOVE_WALK -1//101.6816 CLOSE_SEQUENCE_TASK cas4_hill_billy_seq[0] PERFORM_SEQUENCE_TASK cas4_paul_ped cas4_hill_billy_seq[0] CLEAR_SEQUENCE_TASK cas4_hill_billy_seq[0] ENDIF ENDIF // IS_CHAR_IN_ANY_CAR scplayer cas4_audio_counter = 0 cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 cas4_audio_playing = 0 cas4_text_loop_done = 0 cas4_mobile = 0 cas4_text_timer_diff = 0 cas4_text_timer_end = 0 cas4_text_timer_start = 0 cas4_ahead_counter = 0 cas4_safety_flag = 0 cas4_temp_flag = 0 cas4_temp_flag2 = 0 cas4_temp_flag3 = 0 TIMERB = 0 casino4_text_loop4: WAIT 0 IF cas4_text_loop_done = 0 IF NOT cas4_audio_counter = 0 IF cas4_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 CLEAR_MISSION_AUDIO cas4_audio_slot2 ENDIF cas4_audio_playing = 1 ENDIF IF cas4_audio_playing = 1 LOAD_MISSION_AUDIO cas4_audio_slot1 cas4_audio[cas4_audio_counter] cas4_audio_playing = 2 ENDIF IF cas4_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot1 PLAY_MISSION_AUDIO cas4_audio_slot1 PRINT_NOW $cas4_text[cas4_audio_counter] 10000 1 cas4_audio_playing = 3 ENDIF ENDIF IF cas4_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED cas4_audio_slot1 STOP_CHAR_FACIAL_TALK scplayer CLEAR_THIS_PRINT $cas4_text[cas4_audio_counter] IF cas4_audio_slot1 = 1 cas4_audio_slot1 = 2 cas4_audio_slot2 = 1 ELSE cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 ENDIF cas4_audio_counter = 0 cas4_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 IF cas4_audio_counter < 110 cas4_ahead_counter = cas4_audio_counter + 1 LOAD_MISSION_AUDIO cas4_audio_slot2 cas4_audio[cas4_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH cas4_mobile CASE 0 IF cas4_audio_playing = 0 START_CHAR_FACIAL_TALK scplayer 3000 cas4_audio_counter = 94// CAS4_RA Shit here come those snake farmers cas4_mobile = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 START_CHAR_FACIAL_TALK scplayer 3000 cas4_audio_counter = 95//CAS4_RB Right I've had enough cas4_mobile = 2 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 IF cas4_temp_flag = 1 IF cas4_temp_flag2 = 1 IF cas4_temp_flag3 = 1 cas4_text_loop_done = 1 ENDIF ENDIF ENDIF ENDIF ENDIF BREAK ENDSWITCH GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK cas4_task_status IF cas4_task_status = FINISHED_TASK cas4_temp_flag = 1 ENDIF IF cas4_temp_flag2 = 0 IF NOT IS_CAR_DEAD cas4_dune_car GET_DRIVER_OF_CAR cas4_dune_car cas4_temp_driver IF NOT cas4_temp_driver = -1 IF LOCATE_CAR_3D cas4_dune_car 2154.2747 1664.9645 9.8125 4.0 4.0 3.0 FALSE SET_CAR_MISSION cas4_dune_car MISSION_STOP_FOREVER TASK_EVERYONE_LEAVE_CAR cas4_dune_car cas4_temp_flag2 = 1 ENDIF ELSE cas4_temp_flag2 = 1 ENDIF ELSE cas4_temp_flag2 = 1 ENDIF ENDIF IF cas4_temp_flag3 = 0 IF NOT IS_CAR_DEAD cas4_quad_car GET_DRIVER_OF_CAR cas4_quad_car cas4_temp_driver IF NOT cas4_temp_driver = -1 IF LOCATE_CAR_3D cas4_quad_car 2158.5183 1681.4022 9.8047 4.0 4.0 3.0 FALSE SET_CAR_MISSION cas4_quad_car MISSION_STOP_FOREVER //MISSION_EMERGENCYVEHICLE_STOP TASK_EVERYONE_LEAVE_CAR cas4_quad_car cas4_temp_flag3 = 1 ENDIF ELSE cas4_temp_flag = 1 ENDIF ELSE cas4_temp_flag3 = 1 ENDIF ENDIF IF TIMERB > 20000 cas4_text_loop_done = 1 ENDIF GOTO casino4_text_loop4 ENDIF ///////////////////////////////// audio has to be finished by this point ////////////////////////////////////// ////////////////////////////////////////////////// // do a camera switch and set everyone's coords // ////////////////////////////////////////////////// MARK_CAR_AS_NO_LONGER_NEEDED cas4_quad_car MARK_CAR_AS_NO_LONGER_NEEDED cas4_dune_car MARK_MODEL_AS_NO_LONGER_NEEDED WALTON WHILE NOT HAS_ANIMATION_LOADED GANGS OR NOT HAS_ANIMATION_LOADED MISC REQUEST_ANIMATION GANGS REQUEST_ANIMATION MISC WAIT 0 ENDWHILE /* DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE */ CLEAR_AREA 2175.21 1679.37 9.85 50.0 TRUE // warp player to fight coords CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2171.0 1671.0 9.8125 ELSE SET_CHAR_COORDINATES scplayer 2171.0 1671.0 9.8125 ENDIF SET_CHAR_HEADING scplayer 109.2628 IF NOT IS_CHAR_DEAD cas4_paul_ped SET_CHAR_DECISION_MAKER cas4_paul_ped cas4_decision cas4_paul_with_player = 0 CLEAR_CHAR_TASKS_IMMEDIATELY cas4_paul_ped IF IS_CHAR_IN_ANY_CAR cas4_paul_ped WARP_CHAR_FROM_CAR_TO_COORD cas4_paul_ped 2170.0 1673.0 9.8125 ELSE SET_CHAR_COORDINATES cas4_paul_ped 2170.0 1673.0 9.8125 ENDIF SET_CHAR_HEADING cas4_paul_ped 153.2628 ENDIF IF NOT IS_CHAR_DEAD cas4_macca_ped SET_CHAR_DECISION_MAKER cas4_macca_ped cas4_decision2 cas4_macca_with_player = 0 CLEAR_CHAR_TASKS_IMMEDIATELY cas4_macca_ped IF IS_CHAR_IN_ANY_CAR cas4_macca_ped WARP_CHAR_FROM_CAR_TO_COORD cas4_macca_ped 2172.0 1669.0 9.8125 ELSE SET_CHAR_COORDINATES cas4_macca_ped 2172.0 1669.0 9.8125 ENDIF SET_CHAR_HEADING cas4_macca_ped 133.2628 ENDIF GET_CHAR_COORDINATES scplayer cas4_playerx cas4_playery cas4_playerz IF NOT IS_CHAR_DEAD cas4_temp_hill_billy[0] IF IS_CHAR_IN_ANY_CAR cas4_temp_hill_billy[0] WARP_CHAR_FROM_CAR_TO_COORD cas4_temp_hill_billy[0] 2163.4297 1660.7207 9.8203 ELSE SET_CHAR_COORDINATES cas4_temp_hill_billy[0] 2163.4297 1660.7207 9.8203 ENDIF SET_CHAR_HEADING cas4_temp_hill_billy[0] 327.8448 OPEN_SEQUENCE_TASK cas4_hill_billy_seq[0] TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_PLAY_ANIM -1 Scratchballs_01 MISC 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK cas4_hill_billy_seq[0] PERFORM_SEQUENCE_TASK cas4_temp_hill_billy[0] cas4_hill_billy_seq[0] CLEAR_SEQUENCE_TASK cas4_hill_billy_seq[0] ENDIF IF NOT IS_CHAR_DEAD cas4_temp_hill_billy[1] IF IS_CHAR_IN_ANY_CAR cas4_temp_hill_billy[1] WARP_CHAR_FROM_CAR_TO_COORD cas4_temp_hill_billy[1] 2162.6914 1664.2230 9.8203 ELSE SET_CHAR_COORDINATES cas4_temp_hill_billy[1] 2162.6914 1664.2230 9.8203 ENDIF SET_CHAR_HEADING cas4_temp_hill_billy[1] 355.144 OPEN_SEQUENCE_TASK cas4_hill_billy_seq[0] TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_PLAY_ANIM -1 Scratchballs_01 MISC 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK cas4_hill_billy_seq[0] PERFORM_SEQUENCE_TASK cas4_temp_hill_billy[1] cas4_hill_billy_seq[0] CLEAR_SEQUENCE_TASK cas4_hill_billy_seq[0] ENDIF IF NOT IS_CHAR_DEAD cas4_temp_hill_billy[2] IF IS_CHAR_IN_ANY_CAR cas4_temp_hill_billy[2] WARP_CHAR_FROM_CAR_TO_COORD cas4_temp_hill_billy[2] 2166.5659 1661.4977 9.8203 ELSE SET_CHAR_COORDINATES cas4_temp_hill_billy[2] 2166.5659 1661.4977 9.8203 ENDIF SET_CHAR_HEADING cas4_temp_hill_billy[2] 343.0 OPEN_SEQUENCE_TASK cas4_hill_billy_seq[0] TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_PLAY_ANIM -1 Scratchballs_01 MISC 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK cas4_hill_billy_seq[0] PERFORM_SEQUENCE_TASK cas4_temp_hill_billy[2] cas4_hill_billy_seq[0] CLEAR_SEQUENCE_TASK cas4_hill_billy_seq[0] ENDIF IF NOT IS_CHAR_DEAD cas4_temp_hill_billy[3] IF IS_CHAR_IN_ANY_CAR cas4_temp_hill_billy[3] WARP_CHAR_FROM_CAR_TO_COORD cas4_temp_hill_billy[3] 2160.9082 1664.8752 9.8047 ELSE SET_CHAR_COORDINATES cas4_temp_hill_billy[3] 2160.9082 1664.8752 9.8047 ENDIF SET_CHAR_HEADING cas4_temp_hill_billy[3] 315.7 OPEN_SEQUENCE_TASK cas4_hill_billy_seq[0] TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_PLAY_ANIM -1 Scratchballs_01 MISC 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK cas4_hill_billy_seq[0] PERFORM_SEQUENCE_TASK cas4_temp_hill_billy[3] cas4_hill_billy_seq[0] CLEAR_SEQUENCE_TASK cas4_hill_billy_seq[0] ENDIF SET_FIXED_CAMERA_POSITION 2171.65 1673.89 11.12 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2158.40 1649.68 11.08 JUMP_CUT MAKE_PLAYER_GANG_DISAPPEAR //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// cas4_audio_counter = 0 cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 cas4_audio_playing = 0 cas4_text_loop_done = 0 cas4_mobile = 0 cas4_text_timer_diff = 0 cas4_text_timer_end = 0 cas4_text_timer_start = 0 cas4_ahead_counter = 0 SKIP_CUTSCENE_START casino4_text_loop3: WAIT 0 IF cas4_text_loop_done = 0 IF NOT cas4_audio_counter = 0 IF cas4_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 CLEAR_MISSION_AUDIO cas4_audio_slot2 ENDIF cas4_audio_playing = 1 ENDIF IF cas4_audio_playing = 1 LOAD_MISSION_AUDIO cas4_audio_slot1 cas4_audio[cas4_audio_counter] cas4_audio_playing = 2 ENDIF IF cas4_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot1 PLAY_MISSION_AUDIO cas4_audio_slot1 PRINT_NOW $cas4_text[cas4_audio_counter] 10000 1 cas4_audio_playing = 3 ENDIF ENDIF IF cas4_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED cas4_audio_slot1 CLEAR_THIS_PRINT $cas4_text[cas4_audio_counter] IF cas4_audio_slot1 = 1 cas4_audio_slot1 = 2 cas4_audio_slot2 = 1 ELSE cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 ENDIF cas4_audio_counter = 0 cas4_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 IF cas4_audio_counter < 110 cas4_ahead_counter = cas4_audio_counter + 1 LOAD_MISSION_AUDIO cas4_audio_slot2 cas4_audio[cas4_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH cas4_mobile CASE 0 IF cas4_audio_playing = 0 //cas4_audio_counter = 96//CAS4_RC Let's finish this cas4_mobile = 1 IF NOT IS_CHAR_DEAD cas4_paul_ped //TASK_PLAY_ANIM cas4_paul_ped prtial_gngtlkF GANGS 4.0 FALSE FALSE FALSE FALSE -1 IF NOT IS_CHAR_DEAD cas4_macca_ped TASK_LOOK_AT_CHAR cas4_macca_ped cas4_paul_ped 10000 ENDIF TASK_LOOK_AT_CHAR scplayer cas4_paul_ped 10000 ENDIF //TASK_PLAY_ANIM scplayer prtial_gngtlkA GANGS 4.0 FALSE FALSE FALSE FALSE -1 IF NOT IS_CHAR_DEAD cas4_macca_ped //TASK_SCRATCH_HEAD cas4_macca_ped ENDIF //GET_GAME_TIMER cas4_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_macca_ped START_CHAR_FACIAL_TALK cas4_macca_ped 3000 ENDIF cas4_audio_counter = 97 // CAS4_RD I'm going to punch some big tits cas4_mobile = 2 cas4_counter2 = 0 WHILE cas4_counter2 < 4 IF NOT IS_CHAR_DEAD cas4_temp_hill_billy[cas4_counter2] TASK_GO_STRAIGHT_TO_COORD cas4_temp_hill_billy[cas4_counter2] 2167.9988 1666.1212 9.8203 PEDMOVE_WALK -1 ENDIF cas4_counter2++ ENDWHILE IF NOT IS_CHAR_DEAD cas4_paul_ped //TASK_PLAY_ANIM cas4_paul_ped prtial_gngtlkC GANGS 4.0 FALSE FALSE FALSE FALSE -1 ENDIF IF NOT IS_CHAR_DEAD cas4_macca_ped //TASK_PLAY_ANIM cas4_macca_ped prtial_gngtlkH GANGS 4.0 FALSE FALSE FALSE FALSE -1 ENDIF //TASK_PLAY_ANIM scplayer plyr_shkhead MISC 4.0 FALSE FALSE FALSE FALSE -1 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_macca_ped STOP_CHAR_FACIAL_TALK cas4_macca_ped ENDIF IF NOT IS_CHAR_DEAD cas4_paul_ped START_CHAR_FACIAL_TALK cas4_paul_ped 3000 ENDIF cas4_audio_counter = 98 // CAS4_RE Fuck it,in for a penny... cas4_mobile = 3 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_paul_ped STOP_CHAR_FACIAL_TALK cas4_paul_ped ENDIF cas4_text_loop_done = 1 ENDIF ENDIF BREAK ENDSWITCH GOTO casino4_text_loop3 ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// SKIP_CUTSCENE_END MAKE_PLAYER_GANG_REAPPEAR IF NOT IS_CHAR_DEAD cas4_macca_ped STOP_CHAR_FACIAL_TALK cas4_macca_ped ENDIF IF NOT IS_CHAR_DEAD cas4_paul_ped STOP_CHAR_FACIAL_TALK cas4_paul_ped ENDIF CLEAR_MISSION_AUDIO cas4_audio_slot1 CLEAR_MISSION_AUDIO cas4_audio_slot2 ///////////////////////////////////////////////////// ////////////// FIGHT CODE FROM HERE ON ////////////// ///////////////////////////////////////////////////// cas4_counter = 3 WHILE cas4_counter > -1 IF NOT IS_CHAR_DEAD cas4_macca_ped IF NOT IS_CHAR_DEAD cas4_temp_hill_billy[cas4_counter] CLEAR_LOOK_AT cas4_macca_ped TASK_KILL_CHAR_ON_FOOT cas4_macca_ped cas4_temp_hill_billy[cas4_counter] cas4_macca_target = cas4_temp_hill_billy[cas4_counter] SET_CHAR_RELATIONSHIP cas4_macca_ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 // macca hate hillbill ADD_BLIP_FOR_CHAR cas4_macca_ped cas4_macca_fight_blip SET_BLIP_AS_FRIENDLY cas4_macca_fight_blip TRUE CHANGE_BLIP_SCALE cas4_macca_fight_blip 2 cas4_counter = -1 ENDIF ENDIF cas4_counter-- ENDWHILE cas4_counter = 0 WHILE cas4_counter < 4 IF NOT IS_CHAR_DEAD cas4_paul_ped IF NOT IS_CHAR_DEAD cas4_temp_hill_billy[cas4_counter] CLEAR_LOOK_AT cas4_paul_ped TASK_KILL_CHAR_ON_FOOT cas4_paul_ped cas4_temp_hill_billy[cas4_counter] cas4_paul_target = cas4_temp_hill_billy[cas4_counter] SET_CHAR_RELATIONSHIP cas4_paul_ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 // paul hate hillbill ADD_BLIP_FOR_CHAR cas4_paul_ped cas4_paul_fight_blip SET_BLIP_AS_FRIENDLY cas4_paul_fight_blip TRUE CHANGE_BLIP_SCALE cas4_paul_fight_blip 2 cas4_counter = 4 ENDIF ENDIF cas4_counter++ ENDWHILE cas4_counter = 0 WHILE cas4_counter < 4 IF NOT IS_CHAR_DEAD cas4_temp_hill_billy[cas4_counter] ADD_BLIP_FOR_CHAR cas4_temp_hill_billy[cas4_counter] cas4_hill_billy_blip[cas4_counter] CHANGE_BLIP_DISPLAY cas4_hill_billy_blip[cas4_counter] BLIP_ONLY CHANGE_BLIP_SCALE cas4_hill_billy_blip[cas4_counter] 2 SET_CHAR_RELATIONSHIP cas4_temp_hill_billy[cas4_counter] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_SPECIAL //SET_CHAR_RELATIONSHIP cas4_temp_hill_billy[cas4_counter] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION4 SET_CHAR_RELATIONSHIP cas4_temp_hill_billy[cas4_counter] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 IF cas4_counter < 2 IF NOT IS_CHAR_DEAD cas4_paul_ped TASK_KILL_CHAR_ON_FOOT cas4_temp_hill_billy[cas4_counter] cas4_paul_ped ENDIF ELSE IF NOT IS_CHAR_DEAD cas4_macca_ped TASK_KILL_CHAR_ON_FOOT cas4_temp_hill_billy[cas4_counter] cas4_macca_ped ENDIF ENDIF ENDIF cas4_counter++ ENDWHILE /// assign tasks RESTORE_CAMERA_JUMPCUT SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 CLEAR_CHAR_TASKS scplayer CLEAR_LOOK_AT scplayer SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF REMOVE_ANIMATION MISC REMOVE_ANIMATION GANGS cas4_audio_counter = 0 cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 cas4_audio_playing = 0 cas4_text_loop_done = 0 cas4_mobile = 0 cas4_text_timer_diff = 0 cas4_text_timer_end = 0 cas4_text_timer_start = 0 cas4_ahead_counter = 0 TIMERB = 0 cas4_safety_flag = 0 WHILE cas4_safety_flag = 0 // the fights going on /////////////// /// AUDIO ? /// /////////////// IF NOT cas4_audio_counter = 0 IF cas4_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 CLEAR_MISSION_AUDIO cas4_audio_slot2 ENDIF cas4_audio_playing = 1 ENDIF IF cas4_audio_playing = 1 LOAD_MISSION_AUDIO cas4_audio_slot1 cas4_audio[cas4_audio_counter] cas4_audio_playing = 2 ENDIF IF cas4_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED cas4_audio_slot1 PLAY_MISSION_AUDIO cas4_audio_slot1 PRINT_NOW $cas4_text[cas4_audio_counter] 10000 1 cas4_audio_playing = 3 ENDIF ENDIF IF cas4_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED cas4_audio_slot1 CLEAR_THIS_PRINT $cas4_text[cas4_audio_counter] IF NOT IS_CHAR_DEAD cas4_macca_ped STOP_CHAR_FACIAL_TALK cas4_macca_ped SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_macca_ped FALSE ENDIF IF NOT IS_CHAR_DEAD cas4_paul_ped STOP_CHAR_FACIAL_TALK cas4_paul_ped SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_paul_ped FALSE ENDIF IF cas4_audio_slot1 = 1 cas4_audio_slot1 = 2 cas4_audio_slot2 = 1 ELSE cas4_audio_slot1 = 1 cas4_audio_slot2 = 2 ENDIF cas4_audio_counter = 0 cas4_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED cas4_audio_slot2 IF cas4_audio_counter < 110 cas4_ahead_counter = cas4_audio_counter + 1 LOAD_MISSION_AUDIO cas4_audio_slot2 cas4_audio[cas4_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH cas4_mobile CASE 0 IF TIMERB > 5000 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_macca_ped SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_macca_ped TRUE START_CHAR_FACIAL_TALK cas4_macca_ped 3000 ENDIF cas4_audio_counter = 112 // = MACX_AG// Yeah, that's how we do it in Salford (macca) cas4_mobile = 1 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 1 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 7000 IF cas4_audio_playing = 0 cas4_audio_counter = 17 // = CAS4_CJ//]Don't make me slap you, sunshine! (paul IF NOT IS_CHAR_DEAD cas4_paul_ped SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_paul_ped TRUE START_CHAR_FACIAL_TALK cas4_paul_ped 3000 ENDIF cas4_mobile = 2 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 7000 IF cas4_audio_playing = 0 IF NOT IS_CHAR_DEAD cas4_macca_ped SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cas4_macca_ped TRUE START_CHAR_FACIAL_TALK cas4_macca_ped 3000 ENDIF cas4_audio_counter = 111 // = MACX_AF// So now you know how it really is. (macca) cas4_mobile = 3 GET_GAME_TIMER cas4_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER cas4_text_timer_end cas4_text_timer_diff = cas4_text_timer_end - cas4_text_timer_start IF cas4_text_timer_diff > 1000 IF cas4_audio_playing = 0 cas4_text_loop_done = 1 ENDIF ENDIF BREAK ENDSWITCH /////////////////////////////// // UPDATE Paul Macca targets // /////////////////////////////// /* IF TIMERB > 10000 AND TIMERB < 10500 CLEAR_PRINTS PRINT (cas4_26) 3000 1 //I think I broke a nail ELSE IF TIMERB > 20000 AND TIMERB < 20500 CLEAR_PRINTS PRINT (cas4_27) 3000 1 //I'm too pretty to fight ELSE IF TIMERB > 30000 AND TIMERB < 30500 CLEAR_PRINTS PRINT (cas4_29) 3000 1 //What's that smell? PRINT (cas4_30) 3000 1 //Oh wait a minute it's me. ELSE PRINT (CAS4_34) 2000 1 //Protect Paul and Macca, ENDIF ENDIF ENDIF */ cas4_counter = 0 WHILE cas4_counter < 4 IF cas4_hill_billy_dead[cas4_counter] = 0 IF IS_CHAR_DEAD cas4_temp_hill_billy[cas4_counter] IF cas4_macca_target = cas4_temp_hill_billy[cas4_counter] cas4_counter2 = 3 WHILE cas4_counter2 > -1 IF NOT IS_CHAR_DEAD cas4_macca_ped IF NOT IS_CHAR_DEAD cas4_temp_hill_billy[cas4_counter2] TASK_KILL_CHAR_ON_FOOT cas4_macca_ped cas4_temp_hill_billy[cas4_counter2] cas4_macca_target = cas4_temp_hill_billy[cas4_counter2] cas4_counter2 = -1 ENDIF ENDIF cas4_counter2-- ENDWHILE ENDIF IF cas4_paul_target = cas4_temp_hill_billy[cas4_counter] cas4_counter2 = 0 WHILE cas4_counter2 < 4 IF NOT IS_CHAR_DEAD cas4_paul_ped IF NOT IS_CHAR_DEAD cas4_temp_hill_billy[cas4_counter2] TASK_KILL_CHAR_ON_FOOT cas4_paul_ped cas4_temp_hill_billy[cas4_counter2] cas4_paul_target = cas4_temp_hill_billy[cas4_counter2] cas4_counter2 = 4 ENDIF ENDIF cas4_counter2++ ENDWHILE ENDIF REMOVE_BLIP cas4_hill_billy_blip[cas4_counter] MARK_CHAR_AS_NO_LONGER_NEEDED cas4_temp_hill_billy[cas4_counter] cas4_hill_billy_dead[cas4_counter] = 1 cas4_hill_billies_alive-- ENDIF ENDIF cas4_counter++ ENDWHILE IF cas4_hill_billies_alive < 1 cas4_safety_flag = 1 IF cas4_blip_added_flag = 0 // ADD_BLIP_FOR_COORD 2175.21 1679.37 9.85 cas4_end_blip MARK_CAR_AS_NO_LONGER_NEEDED cas4_player_car CLEAR_AREA 2175.21 1679.37 9.85 10.0 TRUE cas4_blip_added_flag = 1 ENDIF //CLEAR_PRINTS //PRINT ( CAS4_06 ) 8000 1 ///////////// " Get to the Mafia Casino " // fight over ENDIF IF IS_CHAR_DEAD cas4_paul_ped OR IS_CHAR_DEAD cas4_macca_ped CLEAR_PRINTS cas4_safety_flag = 1 ENDIF WAIT 0 ENDWHILE CLEAR_MISSION_AUDIO cas4_audio_slot2 CLEAR_MISSION_AUDIO cas4_audio_slot1 SET_WANTED_MULTIPLIER 1.0 REMOVE_BLIP cas4_paul_fight_blip REMOVE_BLIP cas4_macca_fight_blip IF NOT IS_CHAR_DEAD cas4_paul_ped AND NOT IS_CHAR_DEAD cas4_macca_ped STOP_CHAR_FACIAL_TALK cas4_macca_ped STOP_CHAR_FACIAL_TALK cas4_paul_ped CLEAR_CHAR_TASKS_IMMEDIATELY cas4_paul_ped CLEAR_CHAR_TASKS_IMMEDIATELY cas4_macca_ped SET_GROUP_DEFAULT_TASK_ALLOCATOR Players_Group DEFAULT_TASK_ALLOCATOR_FOLLOW_ANY_MEANS ENDIF ENDIF //hill_billies_alive > 0 RETURN /////////////////// /// TEXT LABELS /// /////////////////// /* [CAS4_BA]My legs are fucked and my head's fuckin' pounding! [CAS4_BB]We can't walk back, mate... [CAS4_CA]Your turn in the boot, ol'lad! [CAS4_CB]Oooo, this is comfy! [CAS4_CC]I'm the manager, I get the front seat! [CAS4_CD]Hey, that's my seat! [CAS4_CE]Leave him, he'll be fine! [CAS4_CF]We'll come back for you, I promise! [CAS4_CG]Oh no you don't, I remember Preston Guild Hall! [CAS4_CH]I'm the manager, what I say, goes! [CAS4_CJ]Don't make me slap you, sunshine! [CAS4_CK]Don't make me sack you! [CAS4_CL]You're my manager this is all your fault! [CAS4_DA]Where's the rest of the band, guys? [CAS4_DB]Oh bollox! Maccer, where are the boys? [CAS4_DC]I don't fuckin' know, do I. [CAS4_DD]I remember snakes, lots of snakes... [CAS4_DE]There's a snake farm not far from here, we can go check it out. [CAS4_EA]I don't recognise this part of Manchester, our kid... [CAS4_EB]How many times do I have to tell you, we're in America! [CAS4_EC]America? Wait 'til I tell me ma about this! [CAS4_ED]He's like a fucking stuck record. He'll ask about Las Venturas next. [CAS4_EE]Las Venturas? Always wanted to go there, great tits. [CAS4_EF]Don't start, not in this confined space. [CAS4_EG]Bouncing, wobbling, creamy tits... [CAS4_EH]LEAVE YOURSELF ALONE! [CAS4_FA]Here we are, look familiar? [CAS4_FB]Looks like Salford to me... [CAS4_FC]What? [CAS4_GA]Run like fuck! [CAS4_GB]Everybody in the car! [CAS4_HA]Wait, our kid, wait! [CAS4_HB]I want to come too! [CAS4_HC]Hey, wait for me, sunshine! [CAS4_HD]Don't leave me in their clutches! [CAS4_JA]I think we lost 'em. [CAS4_JB]I can't see those Snake farmers any more! [CAS4_JC]Shut up, you two! [CAS4_JD]Quit squabbling! [CAS4_KA]It seems you boys had a good time! [CAS4_KB]What about the band? [CAS4_KC]We'll just have to pray they've made it to civilization. [CAS4_KD]Keyboardists and drummers are ten-a-penny anyway. [CAS4_KE]I need a piss, mate! [CAS4_KF]Oh fuck, we're screwed! [CAS4_KG]Can't it wait? [CAS4_KH]I'm fit to burst, ol'lad! [CAS4_KJ]You've got to pull over, he's priapic, it'll go everywhere! [CAS4_LA]I can't hold it any longer! [CAS4_LB]Oh fuck! [CAS4_LC]Hey, what the fuck? [CAS4_LD]Argh! Stop it! [CAS4_LE]Point it out the fucking window! [CAS4_MA]Oh, fuck, that is goooood. [CAS4_NA]Oh fuck, I've got the shakes! [CAS4_NB]You look as pale as a drowned baby, mate! [CAS4_NC]Oh god, I think I'm going to chuck! [CAS4_ND]What you need is some food down you! [CAS4_NE](Paul nearly vomits) [CAS4_NF]A fried egg sanger with mayonaise will sort you out. [CAS4_NG](Paul nearly vomits again) [CAS4_NH]Or a pickled egg! [CAS4_NJ]Pull over, NOW! [CAS4_OA]Shhi- huuuurghhh -hit! [CAS4_OB]I've go- huuurrrgghh! [CAS4_OC]Got the- Hhhuurrgghh! [CAS4_OD]Dry- hurgh! [CAS4_OE]Dry- hurgh! [CAS4_OF]Dry heaves! [CAS4_OG]Oh, I thuh- think it's past... [CAS4_OH]Or how about a pint of cod liver oil, that would sort your guts out! [CAS4_OJ](Paul vomiting violently) [CAS4_OK]Leave him, man. [CAS4_OL]The good doctor is just trying to help! [CAS4_OM]Fuh-huh-Fuck off! [CAS4_PA]What kind of tits does this Rosie have? [CAS4_PB]Big, floppy sausage tits? [CAS4_PC]Empty saddlebags? [CAS4_PD]Bee stings? [CAS4_PE]Rosie is a man! [CAS4_PF]And stop touching yourself! [CAS4_PG]It's just for comfort, this is a stressful situation. [CAS4_PH]You're fucking telling me it is! [CAS4_PJ]Can it you two! [CAS4_PK]He started it! [CAS4_QA]Where is this casino? [CAS4_QB]It's called Caligula's, it's on the strip. [CAS4_RA]Shit, here come those snake farmers! [CAS4_RB]Right, I've had enough. [CAS4_RC]Let's finish this! [CAS4_RD]I'm going to punch some big tits! [CAS4_RE]Fuck it, in for a penny... [CAS4_SA]Come on, let's go in and see Rosie. [CAS4_TA]Yo, Woozie, just a quick call to say I think I've found a way [CAS4_TB]to scope Caligula's Casino without causing too much suspicion. [CAS4_TC]We can talk later. */ // **************************************** Mission casino4 failed *********************** mission_casino4_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // **************************************** mission casino4 passed ************************ mission_casino4_passed: flag_casino_mission_counter ++ //Used to terminate this mission loop in the main script. These varibles will be set up in the main.sc SET_INT_STAT PASSED_CASINO4 1 REGISTER_MISSION_PASSED ( CASINO4 ) //Used in the stats //PRINT_WITH_NUMBER_BIG ( M_PASS ) 100 5000 1 //"Mission Passed!" //ADD_SCORE player1 100 //REMOVE_BLIP casino_contact_blip //ADD_SPRITE_BLIP_FOR_CONTACT_POINT casinoX casinoY casinoZ casino_blip_icon casino_contact_blip PRINT_WITH_NUMBER_BIG ( M_PASSR ) 5 5000 1 //"Mission Passed!" PLAY_MISSION_PASSED_TUNE 1 AWARD_PLAYER_MISSION_RESPECT 5//amount of respect CLEAR_WANTED_LEVEL player1 PLAYER_MADE_PROGRESS 1 REMOVE_BLIP casino_contact_blip //CLEAR_WANTED_LEVEL player1 RETURN // ********************************** mission cleanup *********************************** mission_cleanup_casino4: GET_GAME_TIMER timer_mobile_start SET_POLICE_IGNORE_PLAYER player1 OFF IF IS_PLAYER_PLAYING player1 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF KILL_FX_SYSTEM cas4_vomit KILL_FX_SYSTEM cas4_piss SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 ///////////////////////// REMOVE_BLIPS REMOVE_BLIP cas4_end_blip REMOVE_BLIP cas4_macca_blip REMOVE_BLIP cas4_paul_blip REMOVE_BLIP cas4_snake_blip REMOVE_BLIP cas4_desert_blip REMOVE_BLIP cas4_hill_billy_blip[0] REMOVE_BLIP cas4_hill_billy_blip[1] REMOVE_BLIP cas4_hill_billy_blip[2] REMOVE_BLIP cas4_hill_billy_blip[3] REMOVE_BLIP cas4_macca_fight_blip REMOVE_BLIP cas4_paul_fight_blip //////////////////////// REMOVE_GROUP /////////////////////// CLEAR_ONSCREEN_COUNTER ////////////////////// CLEAR_ONSCREEN_TIMER ///////////////////// MARK MODELs AS NO LONGER NEEDED MARK_CAR_AS_NO_LONGER_NEEDED cas4_player_car MARK_CAR_AS_NO_LONGER_NEEDED cas4_quad_car MARK_CAR_AS_NO_LONGER_NEEDED cas4_dune_car MARK_CAR_AS_NO_LONGER_NEEDED cas4_temp_car REMOVE_CHAR_ELEGANTLY cas4_paul_ped REMOVE_CHAR_ELEGANTLY cas4_macca_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_old_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_sister_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_pig_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_incest_ped MARK_CHAR_AS_NO_LONGER_NEEDED cas4_temp_driver MARK_CHAR_AS_NO_LONGER_NEEDED cas4_temp_hill_billy[0] MARK_CHAR_AS_NO_LONGER_NEEDED cas4_temp_hill_billy[1] MARK_CHAR_AS_NO_LONGER_NEEDED cas4_temp_hill_billy[2] MARK_CHAR_AS_NO_LONGER_NEEDED cas4_temp_hill_billy[3] MARK_CHAR_AS_NO_LONGER_NEEDED cas4_temp_ped //MARK_MODEL_AS_NO_LONGER_NEEDED PAUL //MARK_MODEL_AS_NO_LONGER_NEEDED MACCER MARK_MODEL_AS_NO_LONGER_NEEDED WALTON MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE MARK_MODEL_AS_NO_LONGER_NEEDED DWFOLC MARK_MODEL_AS_NO_LONGER_NEEDED DWMOLC1 MARK_MODEL_AS_NO_LONGER_NEEDED DWMOLC2 MARK_MODEL_AS_NO_LONGER_NEEDED DWMYLC1 MARK_MODEL_AS_NO_LONGER_NEEDED DWMYLC1 MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 REMOVE_ANIMATION SUNBATHE REMOVE_ANIMATION PAULNMAC REMOVE_ANIMATION FOOD REMOVE_ANIMATION SMOKING REMOVE_ANIMATION MISC REMOVE_ANIMATION GANGS REMOVE_DECISION_MAKER cas4_decision REMOVE_DECISION_MAKER cas4_decision2 REMOVE_DECISION_MAKER cas4_decision3 ///////////////////////////////////// UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start //Used to reset the mobile phone timer so it doesn't ring immediately after the mission MISSION_HAS_FINISHED //UNLOAD_SPECIAL_CHARACTER 1 RETURN } MISSION_START // ######################## // ## // ## Casino5.sc // ## // ## Intensive Care // ## // ## Simon Lashley // ## // ######################## SCRIPT_NAME CASINO5 GOSUB mission_casino5_START IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_casino5_FAILED ENDIF GOSUB mission_casino5_CLEANUP MISSION_END { // variables // mafia LVAR_INT mafia_timers_C5[3] // timers LVAR_INT this_frame_time_C5 last_frame_time_C5 time_diff_C5 // general LVAR_INT pointer_C5 pointer2_C5 sequence_C5 sequence_progress_C5 goto_blip_C5 random_C5 cutscene_flag_C5 tough_dm_C5 empty_dm_C5 normal_dm_C5 player_vehicle_C5 // fail text LVAR_INT fail_text_flag_C5 LVAR_TEXT_LABEL fail_text_C5 mission_casino5_START: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 // text LOAD_MISSION_TEXT CASINO5 SET_CHAR_COORDINATES scplayer 2175.4116 1681.5483 9.8203 SET_CHAR_HEADING scplayer 90.0 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2233.5 1712.8 9.8203 SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 iTerminateAllAmbience = 1 // **************************************** START OF CUTSCENE SET_AREA_VISIBLE 2 LOAD_CUTSCENE CAS_5a WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 // **************************************** END OF CUTSCENE SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 // audio START_NEW_SCRIPT start_audio_controller LOAD_SCENE 2175.4116 1681.5483 9.8203 // models REQUEST_MODEL AMBULAN REQUEST_MODEL PATRIOT REQUEST_MODEL LVEMT1 REQUEST_MODEL VMAFF1 REQUEST_MODEL VMAFF2 LOAD_SPECIAL_CHARACTER 1 SINDACO REQUEST_MODEL MP5LNG // anims REQUEST_ANIMATION GANGS WHILE NOT HAS_MODEL_LOADED AMBULAN OR NOT HAS_MODEL_LOADED PATRIOT OR NOT HAS_MODEL_LOADED LVEMT1 OR NOT HAS_MODEL_LOADED VMAFF1 OR NOT HAS_MODEL_LOADED VMAFF2 WAIT 0 ENDWHILE WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_MODEL_LOADED MP5LNG OR NOT HAS_ANIMATION_LOADED GANGS WAIT 0 ENDWHILE // decision makers LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH tough_dm_C5 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_NORM normal_dm_C5 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY empty_dm_C5 // relationships SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 LVAR_INT never_run_this_C5 never_run_this_C5 = 0 IF never_run_this_C5 = 1 CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 0.0 0.0 0.0 johnny_C5 CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 0.0 0.0 0.0 backup_driver_C5[pointer_C5] CREATE_CAR AMBULAN 0.0 0.0 0.0 backup_car_C5[pointer_C5] ENDIF SET_FADING_COLOUR 0 0 0 SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF DO_FADE 0 FADE_IN PRINT_NOW CAS5_00 8000 1 ADD_BLIP_FOR_COORD 1604.1581 1838.7648 9.8280 goto_blip_C5 // audio $audio_text_label_C5[0] = &CAS5_AA audio_sound_label_C5[0]= SOUND_CAS5_AA $audio_text_label_C5[1] = &CAS5_AB audio_sound_label_C5[1]= SOUND_CAS5_AB $audio_text_label_C5[2] = &CAS5_BA audio_sound_label_C5[2]= SOUND_CAS5_BA $audio_text_label_C5[3] = &CAS5_BB audio_sound_label_C5[3]= SOUND_CAS5_BB $audio_text_label_C5[4] = &CAS5_BC audio_sound_label_C5[4]= SOUND_CAS5_BC $audio_text_label_C5[5] = &CAS5_BD audio_sound_label_C5[5]= SOUND_CAS5_BD $audio_text_label_C5[6] = &CAS5_BE audio_sound_label_C5[6]= SOUND_CAS5_BE $audio_text_label_C5[7] = &CAS5_CA audio_sound_label_C5[7]= SOUND_CAS5_CA $audio_text_label_C5[8] = &CAS5_CB audio_sound_label_C5[8]= SOUND_CAS5_CB $audio_text_label_C5[9] = &CAS5_CC audio_sound_label_C5[9]= SOUND_CAS5_CC $audio_text_label_C5[10] = &CAS5_CD audio_sound_label_C5[10]= SOUND_CAS5_CD $audio_text_label_C5[11] = &CAS5_CE audio_sound_label_C5[11]= SOUND_CAS5_CE $audio_text_label_C5[12] = &CAS5_CF audio_sound_label_C5[12]= SOUND_CAS5_CF $audio_text_label_C5[13] = &CAS5_CG audio_sound_label_C5[13]= SOUND_CAS5_CG $audio_text_label_C5[14] = &CAS5_DA audio_sound_label_C5[14]= SOUND_CAS5_DA $audio_text_label_C5[15] = &CAS5_DB audio_sound_label_C5[15]= SOUND_CAS5_DB audio_pointer_C5 = audio_status_C5 //audio_status_C5 = 0 TIMERB = 0 //patriot_status_C5 = 0 // ######################################################################################################################################## // ## // ## Get to the hospital // ## // ######################################################################################################################################## LVAR_INT patriot_C5 patriot_status_C5 mission_casino5_MAIN_get_to_hospital: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_casino5_PASSED ENDIF // patriot for player to use if he wants IF patriot_status_C5 = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1604.1581 1838.7648 9.8280 120.0 120.0 120.0 FALSE CLEAR_AREA 1604.1581 1838.7648 9.8280 30.0 TRUE SUPPRESS_CAR_MODEL PATRIOT CUSTOM_PLATE_FOR_NEXT_CAR PATRIOT H_CARMAN CLEAR_AREA 1624.5983 1850.6071 9.8280 8.0 TRUE CREATE_CAR PATRIOT 1624.5983 1850.6071 9.8280 patriot_C5 SET_CAR_HEADING patriot_C5 180.0 SET_CAR_STRONG patriot_C5 TRUE patriot_status_C5 ++ ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1604.1581 1838.7648 9.8280 4.0 4.0 4.0 TRUE IF IS_CHAR_IN_ANY_CAR scplayer CLEAR_PRINTS SET_PLAYER_CONTROL player1 OFF DO_FADE 400 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REMOVE_BLIP goto_blip_C5 GOTO mission_casino5_CUT_in_hospital ELSE PRINT_NOW CAS5_01 4000 1 ENDIF ENDIF GOSUB mission_casino5_SUB_dialogue GOTO mission_casino5_MAIN_get_to_hospital LVAR_INT ambulance_C5[3] ambulance_blip_C5[3] ambulance_status_C5[3] driver_C5[3] passenger_C5[3] johnny_C5 mission_casino5_CUT_in_hospital: SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 1595.1992 1838.3158 12.4095 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1596.1803 1838.2522 12.2269 JUMP_CUT IF NOT SLOT_status[0] < 0 SLOT_status[0] = -2 ENDIF IF NOT SLOT_status[0] < 0 SLOT_status[1] = -2 ENDIF STORE_CAR_CHAR_IS_IN scplayer player_vehicle_C5 SET_CAR_HEALTH player_vehicle_C5 2000 CLEAR_AREA 1604.1581 1838.7648 9.8280 15.0 TRUE //GET_OFFSET_FROM_CAR_IN_WORLD_COORDS player_vehicle_C5 3.0 0.0 0.0 x y z DO_FADE 0 FADE_IN OPEN_SEQUENCE_TASK sequence_C5 TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 1606.1058 1825.0652 9.8280 PEDMOVE_RUN -1 TASK_STAND_STILL -1 100 CLOSE_SEQUENCE_TASK sequence_C5 PERFORM_SEQUENCE_TASK scplayer sequence_C5 CLEAR_SEQUENCE_TASK sequence_C5 sequence_progress_C5 = 0 cutscene_flag_C5 = 0 WHILE sequence_progress_C5 < 2 WAIT 0 GET_SEQUENCE_PROGRESS scplayer sequence_progress_C5 ENDWHILE //SKIP_CUTSCENE_START audio_status_C5 = 4 WHILE audio_pointer_C5 < 7 WAIT 0 GOSUB mission_casino5_SUB_dialogue ENDWHILE OPEN_SEQUENCE_TASK sequence_C5 TASK_STAND_STILL -1 3800 IF NOT IS_CAR_DEAD player_vehicle_C5 TASK_ENTER_CAR_AS_DRIVER -1 player_vehicle_C5 -1 ENDIF CLOSE_SEQUENCE_TASK sequence_C5 PERFORM_SEQUENCE_TASK scplayer sequence_C5 CLEAR_SEQUENCE_TASK sequence_C5 pointer_C5 = 0 WHILE pointer_C5 = 0 WAIT 0 IF NOT IS_CAR_DEAD player_vehicle_C5 IF IS_CHAR_IN_CAR scplayer player_vehicle_C5 pointer_C5 = 1 ENDIF ENDIF ENDWHILE cutscene_flag_C5 = 1 TIMERA = 0 WHILE TIMERA < 500 WAIT 0 ENDWHILE //SKIP_CUTSCENE_END CLEAR_PRINTS IF NOT SLOT_status[0] < 0 SLOT_status[0] = -2 ENDIF IF NOT SLOT_status[0] < 0 SLOT_status[1] = -2 ENDIF IF NOT IS_CHAR_GETTING_IN_TO_A_CAR scplayer OR NOT IS_CHAR_IN_ANY_CAR scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF NOT IS_CAR_DEAD player_vehicle_C5 WARP_CHAR_INTO_CAR scplayer player_vehicle_C5 ENDIF ENDIF SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER PRINT_NOW CAS5_03 8000 1 // disable certain nodes for wander // casino strip near triad casino MARK_ROAD_NODE_AS_DONT_WANDER 2066.2500 956.0000 9.1250 MARK_ROAD_NODE_AS_DONT_WANDER 2048.6248 953.8749 9.1250 MARK_ROAD_NODE_AS_DONT_WANDER 2032.5000 973.2500 9.5000 // up west side of casino strip - all way to the top (north) MARK_ROAD_NODE_AS_DONT_WANDER 2027.2499 1093.1249 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 2030.1249 1273.0000 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 2028.9999 1453.2500 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 2033.7499 1713.1250 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 2112.1248 1863.1250 9.7500 MARK_ROAD_NODE_AS_DONT_WANDER 2103.9998 1969.1250 9.7500 MARK_ROAD_NODE_AS_DONT_WANDER 2108.2498 2021.9999 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 2107.6248 2113.1248 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 2091.2498 2283.1248 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 2005.6249 2393.2498 9.6250 // town at north of vegas MARK_ROAD_NODE_AS_DONT_WANDER 1605.3750 2589.7500 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 1477.3750 2563.1248 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 1385.6250 2575.0000 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 1293.8750 2574.6248 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 1528.1250 2773.1248 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 2127.3748 2792.8748 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 2397.3748 2713.1248 9.6250 // north,east,south edge and freeway exits MARK_ROAD_NODE_AS_DONT_WANDER 2404.6248 2513.1248 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 2628.6248 2301.7500 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 2787.2500 2303.4998 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 2860.1248 2293.0000 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 2796.1248 2135.3748 9.7500 MARK_ROAD_NODE_AS_DONT_WANDER 2796.1248 2090.8748 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 2638.3748 2135.3748 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 2638.3748 2090.8748 9.7500 MARK_ROAD_NODE_AS_DONT_WANDER 2621.6248 1473.1250 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 2645.3748 1313.1250 9.7500 MARK_ROAD_NODE_AS_DONT_WANDER 2547.2500 923.1250 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 2287.2500 957.8749 9.6250 MARK_ROAD_NODE_AS_DONT_WANDER 2147.2500 963.2499 9.6250 // ambulances CLEAR_AREA 2152.0291 1912.4558 9.6797 10.0 TRUE CREATE_CAR AMBULAN 2152.0291 1912.4558 9.6797 ambulance_C5[0] SET_CAR_HEADING ambulance_C5[0] 0.0 SET_CAR_HEALTH ambulance_C5[0] 2000 ADD_BLIP_FOR_CAR ambulance_C5[0] ambulance_blip_C5[0] LOCK_CAR_DOORS ambulance_C5[0] CARLOCK_LOCKOUT_PLAYER_ONLY SET_LOAD_COLLISION_FOR_CAR_FLAG ambulance_C5[0] FALSE CREATE_CHAR_INSIDE_CAR ambulance_C5[0] PEDTYPE_MISSION1 LVEMT1 driver_C5[0] SET_CHAR_CANT_BE_DRAGGED_OUT driver_C5[0] TRUE SET_CHAR_DECISION_MAKER driver_C5[0] empty_dm_C5 CREATE_CHAR_AS_PASSENGER ambulance_C5[0] PEDTYPE_MISSION1 LVEMT1 0 passenger_C5[0] SET_CHAR_CANT_BE_DRAGGED_OUT passenger_C5[0] TRUE SET_CHAR_DECISION_MAKER passenger_C5[0] empty_dm_C5 TASK_CAR_DRIVE_WANDER driver_C5[0] ambulance_C5[0] 15.0 DRIVINGMODE_STOPFORCARS ambulance_status_C5[0] = 0 ambulance_collision_status_C5[0] = 0 CLEAR_AREA 2050.2913 1358.5164 9.6719 10.0 TRUE CREATE_CAR AMBULAN 2050.2913 1358.5164 9.6719 ambulance_C5[1] SET_CAR_HEADING ambulance_C5[1] 180.0 SET_CAR_HEALTH ambulance_C5[1] 2000 ADD_BLIP_FOR_CAR ambulance_C5[1] ambulance_blip_C5[1] LOCK_CAR_DOORS ambulance_C5[1] CARLOCK_LOCKOUT_PLAYER_ONLY SET_LOAD_COLLISION_FOR_CAR_FLAG ambulance_C5[1] FALSE CREATE_CHAR_INSIDE_CAR ambulance_C5[1] PEDTYPE_MISSION1 LVEMT1 driver_C5[1] SET_CHAR_CANT_BE_DRAGGED_OUT driver_C5[1] TRUE SET_CHAR_DECISION_MAKER driver_C5[1] empty_dm_C5 CREATE_CHAR_AS_PASSENGER ambulance_C5[1] PEDTYPE_MISSION1 LVEMT1 0 passenger_C5[1] SET_CHAR_CANT_BE_DRAGGED_OUT passenger_C5[1] TRUE SET_CHAR_DECISION_MAKER passenger_C5[1] empty_dm_C5 TASK_CAR_DRIVE_WANDER driver_C5[1] ambulance_C5[1] 15.0 DRIVINGMODE_STOPFORCARS ambulance_status_C5[1] = 0 ambulance_collision_status_C5[1] = 0 CLEAR_AREA 2544.9802 1395.7972 9.7800 10.0 TRUE CREATE_CAR AMBULAN 2544.9802 1395.7972 9.7800 ambulance_C5[2] SET_CAR_HEADING ambulance_C5[2] 180.0 SET_CAR_HEALTH ambulance_C5[2] 2000 ADD_BLIP_FOR_CAR ambulance_C5[2] ambulance_blip_C5[2] LOCK_CAR_DOORS ambulance_C5[2] CARLOCK_LOCKOUT_PLAYER_ONLY SET_LOAD_COLLISION_FOR_CAR_FLAG ambulance_C5[2] FALSE CREATE_CHAR_INSIDE_CAR ambulance_C5[2] PEDTYPE_MISSION1 LVEMT1 driver_C5[2] SET_CHAR_CANT_BE_DRAGGED_OUT driver_C5[2] TRUE SET_CHAR_DECISION_MAKER driver_C5[2] empty_dm_C5 CREATE_CHAR_AS_PASSENGER ambulance_C5[2] PEDTYPE_MISSION1 LVEMT1 0 passenger_C5[2] SET_CHAR_CANT_BE_DRAGGED_OUT passenger_C5[2] TRUE SET_CHAR_DECISION_MAKER passenger_C5[2] empty_dm_C5 TASK_CAR_DRIVE_WANDER driver_C5[2] ambulance_C5[2] 15.0 DRIVINGMODE_STOPFORCARS ambulance_status_C5[2] = 0 ambulance_collision_status_C5[2] = 0 mafia_exist_C5 = 0 mafia_ID_C5 = -1 ambulances_rammed_C5 = 0 mafia_status_C5 = 0 // ######################################################################################################################################## // ## // ## Find the ambulance // ## // ######################################################################################################################################## LVAR_INT mafia_exist_C5 mafia_ID_C5 other_ID_C5 ambulances_rammed_C5 text_status_C5 ram_text_C5 alert_status_C5 mafia_status_C5 exit_status_C5[3] LVAR_FLOAT motel_X_C5 motel_Y_C5 motel_Z_C5 CHECKPOINT_SAVE 99 mission_casino5_MAIN_find_ambulance: WAIT 0 pointer_C5 = 0 WHILE pointer_C5 < 3 IF NOT IS_CAR_DEAD ambulance_C5[pointer_C5] AND ambulance_status_C5[pointer_C5] < 6 SWITCH ambulance_status_C5[pointer_C5] CASE 0 // no-one has been hit IF IS_CHAR_DEAD driver_C5[pointer_C5] OR IS_CHAR_DEAD passenger_C5[pointer_C5] text_status_C5 = 0 // someone has been killed IF ambulances_rammed_C5 = 0 GOSUB mission_casino5_SUB_setup_mafia_ambulance ENDIF ELSE IF HAS_CAR_BEEN_DAMAGED_BY_CHAR ambulance_C5[pointer_C5] scplayer text_status_C5 = 1 // ambulance has been damaged by player IF ambulances_rammed_C5 = 0 GOSUB mission_casino5_SUB_setup_mafia_ambulance ENDIF ELSE IF ram_text_C5 = 0 IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer ambulance_C5[pointer_C5] 40.0 40.0 FALSE AND IS_CAR_ON_SCREEN ambulance_C5[pointer_C5] PRINT_NOW CAS5_04 8000 1 ram_text_C5 = 1 ENDIF ENDIF BREAK ENDIF ENDIF // text IF text_status_C5 = 0 IF ambulances_rammed_C5 = 0 PRINT_NOW CAS5_07 8000 1 // killed medic must be one of the other ELSE PRINT_NOW CAS5_08 8000 1 // killed medic must be in the other ambulance ENDIF ELSE IF ambulances_rammed_C5 = 0 PRINT_NOW CAS5_05 8000 1 // Johnny not in this ambulance must be one of the others ELSE PRINT_NOW CAS5_06 8000 1 // not this one must be other one ENDIF ENDIF REMOVE_BLIP ambulance_blip_C5[pointer_C5] ambulances_rammed_C5 ++ exit_status_C5[pointer_C5] = 0 // stop ambulance and make one of paramedics get out and do anim then get back in SET_CAR_TEMP_ACTION ambulance_C5[pointer_C5] TEMPACT_HANDBRAKESTRAIGHT 5000 IF NOT IS_CHAR_DEAD driver_C5[pointer_C5] // clears the car doing a wander action after the temp action CLEAR_CHAR_TASKS driver_C5[pointer_C5] OPEN_SEQUENCE_TASK sequence_C5 TASK_LEAVE_ANY_CAR -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_LOOK_AT_CHAR -1 scplayer 1500 TASK_PLAY_ANIM -1 prtial_gngtlkH GANGS 1000.0 FALSE FALSE FALSE FALSE 2000 TASK_PLAY_ANIM -1 prtial_gngtlkG GANGS 1000.0 FALSE FALSE FALSE FALSE 2000 TASK_STAND_STILL -1 5000 CLOSE_SEQUENCE_TASK sequence_C5 PERFORM_SEQUENCE_TASK driver_C5[pointer_C5] sequence_C5 CLEAR_SEQUENCE_TASK sequence_C5 exit_status_C5[pointer_C5] += 1 ENDIF IF NOT IS_CHAR_DEAD passenger_C5[pointer_C5] // clears the car doing a wander action after the temp action CLEAR_CHAR_TASKS passenger_C5[pointer_C5] OPEN_SEQUENCE_TASK sequence_C5 TASK_LEAVE_ANY_CAR -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_LOOK_AT_CHAR -1 scplayer 1500 TASK_PLAY_ANIM -1 prtial_gngtlkB GANGS 1000.0 FALSE FALSE FALSE FALSE 2000 TASK_PLAY_ANIM -1 prtial_gngtlkC GANGS 1000.0 FALSE FALSE FALSE FALSE 2000 TASK_STAND_STILL -1 5000 CLOSE_SEQUENCE_TASK sequence_C5 PERFORM_SEQUENCE_TASK passenger_C5[pointer_C5] sequence_C5 CLEAR_SEQUENCE_TASK sequence_C5 exit_status_C5[pointer_C5] += 2 ENDIF IF exit_status_C5[pointer_C5] = 0 ambulance_status_C5[pointer_C5] = 3 BREAK ENDIF ambulance_status_C5[pointer_C5] ++ // ########################################## // ## // ## STUFF FOR REAL AMBULANCES BEING HIT // ## // ########################################## CASE 1 // check for paramedic getting out of the ambulance and tell them to get back in // driver is getting out IF exit_status_C5[pointer_C5] = 1 OR exit_status_C5[pointer_C5] = 3 IF NOT IS_CHAR_DEAD driver_C5[pointer_C5] IF NOT IS_CHAR_IN_ANY_CAR driver_C5[pointer_C5] GET_SEQUENCE_PROGRESS driver_C5[pointer_C5] sequence_progress_C5 IF sequence_progress_C5 = 5 TASK_ENTER_CAR_AS_DRIVER driver_C5[pointer_C5] ambulance_C5[pointer_C5] -2 exit_status_C5[pointer_C5] -= 1 ENDIF ENDIF ELSE IF exit_status_C5[pointer_C5] = 1 OR exit_status_C5[pointer_C5] = 3 exit_status_C5[pointer_C5] -= 1 ENDIF ENDIF ENDIF // passenger is getting out IF exit_status_C5[pointer_C5] = 2 OR exit_status_C5[pointer_C5] = 3 IF NOT IS_CHAR_DEAD passenger_C5[pointer_C5] IF NOT IS_CHAR_IN_ANY_CAR passenger_C5[pointer_C5] GET_SEQUENCE_PROGRESS passenger_C5[pointer_C5] sequence_progress_C5 IF sequence_progress_C5 = 5 IF IS_CHAR_DEAD driver_C5[pointer_C5] TASK_ENTER_CAR_AS_DRIVER passenger_C5[pointer_C5] ambulance_C5[pointer_C5] -2 ELSE TASK_ENTER_CAR_AS_PASSENGER passenger_C5[pointer_C5] ambulance_C5[pointer_C5] -2 0 ENDIF exit_status_C5[pointer_C5] -= 2 ENDIF ENDIF ELSE IF exit_status_C5[pointer_C5] = 2 OR exit_status_C5[pointer_C5] = 3 exit_status_C5[pointer_C5] -= 2 ENDIF ENDIF ENDIF IF exit_status_C5[pointer_C5] = 0 IF NOT IS_CHAR_DEAD driver_C5[pointer_C5] exit_status_C5[pointer_C5] += 1 ENDIF IF NOT IS_CHAR_DEAD passenger_C5[pointer_C5] exit_status_C5[pointer_C5] += 2 ENDIF IF exit_status_C5[pointer_C5] = 0 ambulance_status_C5[pointer_C5] = 3 BREAK ELSE ambulance_status_C5[pointer_C5] ++ ENDIF ELSE BREAK ENDIF CASE 2 // wait for paramedic/s to get back in then drive off // driver is getting in IF exit_status_C5[pointer_C5] = 1 OR exit_status_C5[pointer_C5] = 3 IF NOT IS_CHAR_DEAD driver_C5[pointer_C5] IF IS_CHAR_IN_CAR driver_C5[pointer_C5] ambulance_C5[pointer_C5] exit_status_C5[pointer_C5] -= 1 ENDIF ELSE IF exit_status_C5[pointer_C5] = 1 OR exit_status_C5[pointer_C5] = 3 exit_status_C5[pointer_C5] -= 1 ENDIF ENDIF ENDIF // passenger is getting in IF exit_status_C5[pointer_C5] = 2 OR exit_status_C5[pointer_C5] = 3 IF NOT IS_CHAR_DEAD passenger_C5[pointer_C5] IF IS_CHAR_IN_CAR passenger_C5[pointer_C5] ambulance_C5[pointer_C5] exit_status_C5[pointer_C5] -= 2 ENDIF ELSE IF exit_status_C5[pointer_C5] = 2 OR exit_status_C5[pointer_C5] = 3 exit_status_C5[pointer_C5] -= 2 ENDIF ENDIF ENDIF LVAR_INT temp_driver_C5 IF exit_status_C5[pointer_C5] = 0 IF NOT IS_CHAR_DEAD driver_C5[pointer_C5] TASK_CAR_DRIVE_WANDER driver_C5[pointer_C5] ambulance_C5[pointer_C5] 15.0 DRIVINGMODE_STOPFORCARS ELSE IF NOT IS_CHAR_DEAD passenger_C5[pointer_C5] GET_DRIVER_OF_CAR ambulance_C5[pointer_C5] temp_driver_C5 OPEN_SEQUENCE_TASK sequence_C5 IF NOT temp_driver_C5 = passenger_C5[pointer_C5] TASK_SHUFFLE_TO_NEXT_CAR_SEAT -1 ambulance_C5[pointer_C5] ENDIF TASK_CAR_DRIVE_WANDER -1 ambulance_C5[pointer_C5] 15.0 DRIVINGMODE_STOPFORCARS CLOSE_SEQUENCE_TASK sequence_C5 PERFORM_SEQUENCE_TASK passenger_C5[pointer_C5] sequence_C5 CLEAR_SEQUENCE_TASK sequence_C5 ENDIF ENDIF ambulance_status_C5[pointer_C5] ++ ELSE BREAK ENDIF CASE 3 // remove stuff IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer ambulance_C5[pointer_C5] 50.0 50.0 FALSE OR IS_CAR_ON_SCREEN ambulance_C5[pointer_C5] BREAK ENDIF MARK_CAR_AS_NO_LONGER_NEEDED ambulance_C5[pointer_C5] MARK_CHAR_AS_NO_LONGER_NEEDED driver_C5[pointer_C5] MARK_CHAR_AS_NO_LONGER_NEEDED passenger_C5[pointer_C5] ambulance_status_C5[pointer_C5] = 10000 BREAK // ########################################### // ## // ## STUFF FOR MAFIA AMBULANCE // ## // ########################################### LVAR_INT passenger_driving_C5 player_hijacked_ambulance_C5 LVAR_INT current_health_C5 damage_difference_C5 player_damage_C5 CASE 4 // check for amulance getting to motel IF NOT IS_CHAR_DEAD johnny_C5 IF IS_CHAR_DEAD driver_C5[pointer_C5] OR IS_CHAR_DEAD passenger_C5[pointer_C5] PRINT_NOW CAS5_10 8000 1 ambulance_status_C5[pointer_C5] = 5 ELSE IF HAS_CAR_BEEN_DAMAGED_BY_CHAR ambulance_C5[pointer_C5] scplayer PRINT_NOW CAS5_09 8000 1 ambulance_status_C5[pointer_C5] = 5 ELSE IF TIMERA > 120000 IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer ambulance_C5[pointer_C5] 60.0 60.0 FALSE OR IS_CAR_ON_SCREEN ambulance_C5[pointer_C5] IF IS_CHAR_IN_CAR scplayer ambulance_C5[pointer_C5] player_hijacked_ambulance_C5 = 1 ENDIF BREAK ELSE // remove ambulance and peds instantly so player cant find it after mission failed REMOVE_BLIP ambulance_blip_C5[pointer_C5] IF DOES_CHAR_EXIST johnny_C5 DELETE_CHAR johnny_C5 ENDIF IF DOES_CHAR_EXIST driver_C5[pointer_C5] DELETE_CHAR driver_C5[pointer_C5] ENDIF IF DOES_CHAR_EXIST passenger_C5[pointer_C5] DELETE_CHAR passenger_C5[pointer_C5] ENDIF IF DOES_VEHICLE_EXIST ambulance_C5[pointer_C5] DELETE_CAR ambulance_C5[pointer_C5] ENDIF fail_text_flag_C5 = 1 $fail_text_C5 = CAS5_32 GOTO mission_casino5_FAILED ENDIF ELSE IF alert_status_C5 < 2 IF alert_status_C5 = 0 IF NOT IS_MESSAGE_BEING_DISPLAYED PRINT_NOW CAS5_30 8000 1 alert_status_C5 ++ ENDIF ELSE IF NOT IS_MESSAGE_BEING_DISPLAYED PRINT_NOW CAS5_31 8000 1 alert_status_C5 ++ ENDIF ENDIF ENDIF BREAK ENDIF ENDIF ENDIF ELSE fail_text_flag_C5 = 1 $fail_text_C5 = CAS5_17 GOTO mission_casino5_FAILED ENDIF CASE 5 // check for ambulance getting hit IF NOT IS_CHAR_DEAD johnny_C5 IF mafia_status_C5 = 0 pointer2_C5 = 0 WHILE pointer2_C5 < 3 IF NOT pointer_C5 = pointer2_C5 REMOVE_BLIP ambulance_blip_C5[pointer2_C5] IF ambulance_status_C5[pointer2_C5] < 3 ambulance_status_C5[pointer2_C5] = 3 ENDIF ENDIF pointer2_C5 ++ ENDWHILE MARK_MODEL_AS_NO_LONGER_NEEDED LVEMT1 REMOVE_ANIMATION GANGS REQUEST_MODEL SENTINEL IF player_hijacked_ambulance_C5 = 0 IF NOT IS_CHAR_DEAD driver_C5[pointer_C5] CLEAR_CHAR_TASKS driver_C5[pointer_C5] TASK_CAR_DRIVE_WANDER driver_C5[pointer_C5] ambulance_C5[pointer_C5] 25.0 DRIVINGMODE_AVOIDCARS IF NOT IS_CHAR_DEAD passenger_C5[pointer_C5] TASK_DRIVE_BY passenger_C5[pointer_C5] scplayer -1 0.0 0.0 0.0 300.0 DRIVEBY_FIXED_RHS TRUE 35 ENDIF passenger_driving_C5 = 0 ELSE IF NOT IS_CHAR_DEAD passenger_C5[pointer_C5] CLEAR_CHAR_TASKS passenger_C5[pointer_C5] OPEN_SEQUENCE_TASK sequence_C5 TASK_SHUFFLE_TO_NEXT_CAR_SEAT -1 ambulance_C5[pointer_C5] TASK_CAR_DRIVE_WANDER -1 ambulance_C5[pointer_C5] 25.0 DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK sequence_C5 PERFORM_SEQUENCE_TASK passenger_C5[pointer_C5] sequence_C5 CLEAR_SEQUENCE_TASK sequence_C5 passenger_driving_C5 = 1 ENDIF ENDIF ENDIF SWITCH_CAR_SIREN ambulance_C5[pointer_C5] ON SET_CAR_HEALTH ambulance_C5[pointer_C5] ambulance_health_C5 mafia_status_C5 = 1 player_damage_C5 = 0 under_attack_text_C5 = 0 ELSE GET_CAR_HEALTH ambulance_C5[pointer_C5] current_health_C5 IF HAS_CAR_BEEN_DAMAGED_BY_CHAR ambulance_C5[pointer_C5] scplayer damage_difference_C5 = ambulance_health_c5 - current_health_C5 IF HAS_CAR_BEEN_DAMAGED_BY_WEAPON ambulance_C5[pointer_C5] WEAPONTYPE_ANYWEAPON damage_difference_C5 /= 20 // just in case damage is 0, make it 1 IF damage_difference_C5 = 0 damage_difference_C5 = 1 ENDIF ELSE damage_difference_C5 *= 2 ENDIF player_damage_C5 += damage_difference_C5 ENDIF SET_CAR_HEALTH ambulance_C5[pointer_C5] ambulance_health_C5 CLEAR_CAR_LAST_DAMAGE_ENTITY ambulance_C5[pointer_C5] // check if player has damaged the ambulance enough to make it stop IF player_damage_C5 < 200 IF NOT IS_CHAR_IN_CAR scplayer ambulance_C5[pointer_C5] // check if one or both mafia guys have been killed IF IS_CHAR_DEAD driver_C5[pointer_C5] IF NOT IS_CHAR_DEAD passenger_C5[pointer_C5] IF passenger_driving_C5 = 0 CLEAR_CHAR_TASKS passenger_C5[pointer_C5] OPEN_SEQUENCE_TASK sequence_C5 TASK_SHUFFLE_TO_NEXT_CAR_SEAT -1 ambulance_C5[pointer_C5] TASK_CAR_DRIVE_WANDER -1 ambulance_C5[pointer_C5] 25.0 DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK sequence_C5 PERFORM_SEQUENCE_TASK passenger_C5[pointer_C5] sequence_C5 CLEAR_SEQUENCE_TASK sequence_C5 passenger_driving_C5 = 1 ENDIF BREAK ENDIF ELSE BREAK ENDIF ELSE player_hijacked_ambulance_C5 = 1 ENDIF ENDIF SET_CAR_HEALTH ambulance_C5[pointer_C5] 3000 IF player_hijacked_ambulance_C5 = 0 SET_CAR_TEMP_ACTION ambulance_C5[pointer_C5] TEMPACT_HANDBRAKESTRAIGHT 5000 ENDIF IF NOT IS_CHAR_DEAD driver_C5[pointer_C5] CLEAR_CHAR_TASKS driver_C5[pointer_C5] OPEN_SEQUENCE_TASK sequence_C5 TASK_LEAVE_CAR -1 ambulance_C5[pointer_C5] TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK sequence_C5 PERFORM_SEQUENCE_TASK driver_C5[pointer_C5] sequence_C5 CLEAR_SEQUENCE_TASK sequence_C5 //ADD_BLIP_FOR_CHAR driver_C5[pointer_C5] mafia_blip_C5[0] //mafia_status_C5[0] = 0 ELSE //mafia_status_C5[0] = -1 ENDIF IF NOT IS_CHAR_DEAD passenger_C5[pointer_C5] CLEAR_CHAR_TASKS passenger_C5[pointer_C5] OPEN_SEQUENCE_TASK sequence_C5 TASK_LEAVE_CAR -1 ambulance_C5[pointer_C5] TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK sequence_C5 PERFORM_SEQUENCE_TASK passenger_C5[pointer_C5] sequence_C5 CLEAR_SEQUENCE_TASK sequence_C5 //ADD_BLIP_FOR_CHAR driver_C5[pointer_C5] mafia_blip_C5[1] //mafia_status_C5[1] = 0 ELSE //mafia_status_C5[1] = -1 ENDIF IF player_hijacked_ambulance_C5 = 0 REMOVE_BLIP ambulance_blip_C5[pointer_C5] ADD_BLIP_FOR_CAR ambulance_C5[pointer_C5] ambulance_blip_C5[pointer_C5] SET_BLIP_AS_FRIENDLY ambulance_blip_C5[pointer_C5] TRUE LOCK_CAR_DOORS ambulance_C5[pointer_C5] CARLOCK_UNLOCKED IF NOT IS_CHAR_DEAD driver_C5[pointer_C5] OR NOT IS_CHAR_DEAD passenger_C5[pointer_C5] PRINT_NOW CAS5_11 8000 1 ELSE PRINT_NOW CAS5_12 8000 1 ENDIF ELSE REMOVE_BLIP ambulance_blip_C5[pointer_C5] ENDIF SET_CAR_DENSITY_MULTIPLIER 0.6 SET_PED_DENSITY_MULTIPLIER 0.6 UNMARK_ALL_ROAD_NODES_AS_DONT_WANDER backup_radius_C5 = 100.0 backup_ram_status_C5 = 0 backup_status_C5[0] = -1 backup_status_C5[1] = -1 backup_Y_offset_C5[0] = -10.0 backup_Y_offset_C5[1] = -10.0 text_status_C5 = 0 SET_CAR_HEALTH ambulance_C5[pointer_C5] 1250 GOTO mission_casino5_MAIN_take_johnny_home ENDIF ELSE fail_text_flag_C5 = 1 $fail_text_C5 = CAS5_17 GOTO mission_casino5_FAILED ENDIF BREAK ENDSWITCH ENDIF pointer_C5 ++ ENDWHILE GOSUB mission_casino5_SUB_ambulance_world_collision GOTO mission_casino5_MAIN_find_ambulance LVAR_INT ambulance_collision_status_C5[3] mission_casino5_SUB_ambulance_world_collision: IF TIMERB > 500 GET_CHAR_COORDINATES scplayer player_x player_y player_z pointer_C5 = 0 WHILE pointer_C5 < 3 IF NOT IS_CAR_DEAD ambulance_C5[pointer_C5] IF ambulance_status_C5[pointer_C5] = 0 GET_CAR_COORDINATES ambulance_C5[pointer_C5] x y z GET_DISTANCE_BETWEEN_COORDS_2D player_x player_y x y distance SWITCH ambulance_collision_status_C5[pointer_C5] CASE 0 IF distance < 120.0 SET_LOAD_COLLISION_FOR_CAR_FLAG ambulance_C5[pointer_C5] TRUE ambulance_collision_status_C5[pointer_C5] ++ ENDIF BREAK CASE 1 IF distance > 140.0 SET_LOAD_COLLISION_FOR_CAR_FLAG ambulance_C5[pointer_C5] FALSE ambulance_collision_status_C5[pointer_C5] -- ENDIF BREAK ENDSWITCH ELSE IF ambulance_collision_status_C5[pointer_C5] = 0 SET_LOAD_COLLISION_FOR_CAR_FLAG ambulance_C5[pointer_C5] TRUE ambulance_collision_status_C5[pointer_C5] = 1 ENDIF ENDIF ENDIF pointer_C5 ++ ENDWHILE TIMERB = 0 ENDIF RETURN // put mafia in an ambulance and make it goto one of the two motels // make other ambulance goto the hospital LVAR_INT ambulance_health_C5 mission_casino5_SUB_setup_mafia_ambulance: // chose a random ambulance ot hold the mafia GENERATE_RANDOM_INT_IN_RANGE 0 2 random_C5 SWITCH pointer_C5 CASE 0 IF random_C5 = 0 mafia_ID_C5 = 1 ELSE mafia_ID_C5 = 2 ENDIF BREAK CASE 1 IF random_C5 = 0 mafia_ID_C5 = 0 ELSE mafia_ID_C5 = 2 ENDIF BREAK CASE 2 IF random_C5 = 0 mafia_ID_C5 = 0 ELSE mafia_ID_C5 = 1 ENDIF BREAK ENDSWITCH IF NOT IS_CAR_DEAD ambulance_C5[mafia_ID_C5] // mafia ambulance ambulance_health_C5 = 5000 SET_CAR_HEALTH ambulance_C5[mafia_ID_C5] ambulance_health_C5 SET_CAN_BURST_CAR_TYRES ambulance_C5[mafia_ID_C5] FALSE // mafia driver IF NOT IS_CHAR_DEAD driver_C5[mafia_ID_C5] CLEAR_CHAR_TASKS driver_C5[mafia_ID_C5] DELETE_CHAR driver_C5[mafia_ID_C5] ENDIF CREATE_CHAR_INSIDE_CAR ambulance_C5[mafia_ID_C5] PEDTYPE_MISSION1 VMAFF1 driver_C5[mafia_ID_C5] SET_CHAR_CANT_BE_DRAGGED_OUT driver_C5[mafia_ID_C5] TRUE GIVE_WEAPON_TO_CHAR driver_C5[mafia_ID_C5] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON driver_C5[mafia_ID_C5] WEAPONTYPE_MP5 SET_CHAR_DECISION_MAKER driver_C5[mafia_ID_C5] tough_dm_C5 // mafia passenger IF NOT IS_CHAR_DEAD passenger_C5[mafia_ID_C5] CLEAR_CHAR_TASKS passenger_C5[mafia_ID_C5] DELETE_CHAR passenger_C5[mafia_ID_C5] ENDIF CREATE_CHAR_AS_PASSENGER ambulance_C5[mafia_ID_C5] PEDTYPE_MISSION1 VMAFF2 0 passenger_C5[mafia_ID_C5] SET_CHAR_CANT_BE_DRAGGED_OUT passenger_C5[mafia_ID_C5] TRUE GIVE_WEAPON_TO_CHAR passenger_C5[mafia_ID_C5] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON passenger_C5[mafia_ID_C5] WEAPONTYPE_MP5 SET_CHAR_DECISION_MAKER passenger_C5[mafia_ID_C5] tough_dm_C5 // johnny sindacco CREATE_CHAR_AS_PASSENGER ambulance_C5[mafia_ID_C5] PEDTYPE_SPECIAL SPECIAL01 1 johnny_C5 SET_CHAR_STAY_IN_CAR_WHEN_JACKED johnny_C5 TRUE SET_CHAR_FORCE_DIE_IN_CAR johnny_C5 TRUE SET_CHAR_DECISION_MAKER johnny_C5 empty_dm_C5 SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR johnny_C5 FALSE TIMERA = 0 alert_status_C5 = 0 ambulance_status_C5[mafia_ID_C5] = 4 ENDIF RETURN LVAR_INT backup_car_C5[2] backup_driver_C5[2] backup_status_C5[2] backup_timer_C5[2] backup_pointer_C5 backup_ram_status_C5 LVAR_FLOAT backup_Y_offset_C5[2] backup_radius_C5 mission_casino5_SUB_backup_controller: backup_pointer_C5 = 0 WHILE backup_pointer_C5 < 2 IF NOT IS_CHAR_DEAD backup_driver_C5[backup_pointer_C5] AND NOT IS_CAR_DEAD backup_car_C5[backup_pointer_C5] SWITCH backup_status_C5[backup_pointer_C5] CASE 1 IF backup_ram_status_C5 = 0 GOSUB mission_casino5_SUB_check_backup_distance ELSE GET_CAR_COORDINATES backup_car_C5[backup_pointer_C5] x y z GET_DISTANCE_BETWEEN_COORDS_2D 1074.4608 2392.2271 x y z GET_DISTANCE_BETWEEN_COORDS_2D 1010.6731 1487.1841 x y distance CLEAR_CHAR_TASKS backup_driver_C5[backup_pointer_C5] IF z < distance TASK_CAR_DRIVE_TO_COORD backup_driver_C5[backup_pointer_C5] backup_car_C5[backup_pointer_C5] 1074.4608 2392.2271 9.6796 25.0 MODE_NORMAL 0 DRIVINGMODE_AVOIDCARS ELSE TASK_CAR_DRIVE_TO_COORD backup_driver_C5[backup_pointer_C5] backup_car_C5[backup_pointer_C5] 1010.6731 1487.1841 9.6797 25.0 MODE_NORMAL 0 DRIVINGMODE_AVOIDCARS ENDIF backup_status_C5[backup_pointer_C5] = 2 ENDIF BREAK CASE 2 IF backup_ram_status_C5 = 0 backup_status_C5[backup_pointer_C5] = 1 CLEAR_CHAR_TASKS backup_driver_C5[backup_pointer_C5] TASK_CAR_MISSION backup_driver_C5[backup_pointer_C5] backup_car_C5[backup_pointer_C5] ambulance_C5[mafia_ID_C5] MISSION_RAMPLAYER_CLOSE 32.0 DRIVINGMODE_AVOIDCARS ENDIF BREAK ENDSWITCH ELSE SWITCH backup_status_C5[backup_pointer_C5] DEFAULT MARK_CHAR_AS_NO_LONGER_NEEDED backup_driver_C5[backup_pointer_C5] MARK_CAR_AS_NO_LONGER_NEEDED backup_car_C5[backup_pointer_C5] backup_status_C5[backup_pointer_C5] = -1 BREAK CASE -1 // cars are dead/not created dont do anything BREAK CASE 0 // respawn mode IF backup_timer_C5[backup_pointer_C5] > 9000 IF HAS_MODEL_LOADED SENTINEL GOSUB mission_casino5_SUB_find_hidden_node IF found_hidden_node_C5 = 1 CREATE_CAR SENTINEL node_X_C5 node_Y_C5 node_Z_C5 backup_car_C5[backup_pointer_C5] SET_CAR_HEADING backup_car_C5[backup_pointer_C5] node_heading_C5 LOCK_CAR_DOORS backup_car_C5[backup_pointer_C5] CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_CAN_BE_VISIBLY_DAMAGED backup_car_C5[backup_pointer_C5] FALSE SET_CAR_HEALTH backup_car_C5[backup_pointer_C5] 5000 CREATE_CHAR_INSIDE_CAR backup_car_C5[backup_pointer_C5] PEDTYPE_MISSION1 VMAFF2 backup_driver_C5[backup_pointer_C5] GIVE_WEAPON_TO_CHAR backup_driver_C5[backup_pointer_C5] WEAPONTYPE_MP5 30000 //SET_CURRENT_CHAR_WEAPON backup_driver_C5[backup_pointer_C5] WEAPONTYPE_MP5 SET_CHAR_DECISION_MAKER backup_driver_C5[backup_pointer_C5] empty_dm_C5 SET_CHAR_CANT_BE_DRAGGED_OUT backup_driver_C5[backup_pointer_C5] TRUE TASK_CAR_MISSION backup_driver_C5[backup_pointer_C5] backup_car_C5[backup_pointer_C5] ambulance_C5[mafia_ID_C5] MISSION_RAMPLAYER_CLOSE 32.0 DRIVINGMODE_AVOIDCARS backup_status_C5[backup_pointer_C5] = 1 ENDIF ENDIF ENDIF BREAK ENDSWITCH ENDIF backup_pointer_C5 ++ ENDWHILE RETURN // ######################################################################################################################################## // ## // ## Drive back to meat factory // ## // ######################################################################################################################################## LVAR_INT player_in_ambulance_C5 mafia_audio_C5 under_attack_text_C5 mission_casino5_MAIN_take_johnny_home: WAIT 0 IF NOT IS_CHAR_DEAD johnny_C5 IF NOT IS_CAR_DEAD ambulance_C5[mafia_ID_C5] // no need to fail mission if this is destroyed as johnny is inside IF IS_CHAR_IN_CAR scplayer ambulance_C5[mafia_ID_C5] IF player_in_ambulance_C5 = 0 REMOVE_BLIP ambulance_blip_C5[mafia_ID_C5] ADD_BLIP_FOR_COORD 981.4241 2132.4692 9.8203 goto_blip_C5 IF text_status_C5 = 0 PRINT_NOW CAS5_13 8000 1 backup_status_C5[0] = 0 backup_status_C5[1] = 0 backup_timer_C5[0] = 0 backup_timer_C5[1] = 0 text_status_C5 = 1 MARK_CAR_AS_NO_LONGER_NEEDED patriot_C5 MARK_MODEL_AS_NO_LONGER_NEEDED PATRIOT ELSE PRINT_NOW CAS5_14 8000 1 ENDIF player_in_ambulance_C5 = 1 ENDIF IF LOCATE_CHAR_IN_CAR_2D scplayer 981.4241 2132.4692 backup_radius_C5 backup_radius_C5 FALSE IF LOCATE_CHAR_IN_CAR_3D scplayer 981.4241 2132.4692 9.8203 4.0 4.0 4.0 TRUE GOTO mission_casino5_CUT_at_meat_factory ENDIF IF backup_ram_status_C5 = 0 backup_radius_C5 = 120.0 backup_ram_status_C5 = 1 // backoff ENDIF ELSE IF backup_ram_status_C5 = 1 backup_radius_C5 = 100.0 backup_ram_status_C5 = 0 // attack ENDIF ENDIF // johnny audio IF under_attack_text_C5 = 1 GOSUB mission_casino5_SUB_dialogue ENDIF ELSE IF player_in_ambulance_C5 = 1 REMOVE_BLIP goto_blip_C5 ADD_BLIP_FOR_CAR ambulance_C5[mafia_ID_C5] ambulance_blip_C5[mafia_ID_C5] SET_BLIP_AS_FRIENDLY ambulance_blip_C5[mafia_ID_C5] TRUE PRINT_NOW CAS5_15 8000 1 player_in_ambulance_C5 = 0 ENDIF // mafia getting out of ambulance audi IF mafia_audio_C5 < 2 IF mafia_audio_C5 = 0 IF NOT IS_CHAR_DEAD driver_C5[mafia_ID_C5] IF NOT IS_CHAR_IN_ANY_CAR driver_C5[mafia_ID_C5] load_sample = SOUND_CAS5_EA $load_text = &CAS5_EA START_NEW_SCRIPT audio_load_and_play 2 100 driver_C5[mafia_ID_C5] //0.0 0.0 0.0 mafia_audio_C5 ++ ENDIF ELSE mafia_audio_C5 ++ ENDIF ELSE IF NOT IS_CHAR_DEAD passenger_C5[mafia_ID_C5] IF NOT IS_CHAR_IN_ANY_CAR passenger_C5[mafia_ID_C5] IF SLOT_status[preload_slot] = -3 SLOT_status[preload_slot] = -4 load_sample = SOUND_CAS5_EB $load_text = &CAS5_EB START_NEW_SCRIPT audio_load_and_play 2 100 passenger_C5[mafia_ID_C5] //0.0 0.0 0.0 mafia_audio_C5 ++ ENDIF ENDIF ELSE mafia_audio_C5 ++ ENDIF ENDIF ENDIF ENDIF // backup text IF under_attack_text_C5 = 0 IF NOT IS_CAR_DEAD backup_car_C5[0] IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer backup_car_C5[0] 10.0 10.0 FALSE PRINT_NOW CAS5_16 8000 1 under_attack_text_C5 = 1 ENDIF ENDIF IF under_attack_text_C5 = 0 IF NOT IS_CAR_DEAD backup_car_C5[1] IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer backup_car_C5[1] 10.0 10.0 FALSE PRINT_NOW CAS5_16 8000 1 under_attack_text_C5 = 1 ENDIF ENDIF ENDIF IF under_attack_text_C5 = 1 TIMERB = 0 audio_status_C5 = 7 ENDIF ENDIF // timers GET_GAME_TIMER this_frame_time_C5 time_diff_C5 = this_frame_time_C5 - last_frame_time_C5 last_frame_time_C5 = this_frame_time_C5 backup_timer_C5[0] += time_diff_C5 backup_timer_C5[1] += time_diff_C5 GOSUB mission_casino5_SUB_backup_controller ENDIF ELSE fail_text_flag_C5 = 1 $fail_text_C5 = CAS5_17 GOTO mission_casino5_FAILED ENDIF GOTO mission_casino5_MAIN_take_johnny_home mission_casino5_SUB_check_backup_distance: IF backup_timer_C5[backup_pointer_C5] > 500 IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer backup_car_C5[backup_pointer_C5] 75.0 75.0 FALSE AND NOT IS_CAR_ON_SCREEN backup_car_C5[backup_pointer_C5] GOSUB mission_casino5_SUB_find_hidden_node IF found_hidden_node_C5 = 1 SET_CAR_COORDINATES backup_car_C5[backup_pointer_C5] node_X_C5 node_Y_C5 node_Z_C5 SET_CAR_HEADING backup_car_C5[backup_pointer_C5] node_heading_C5 SET_CAR_FORWARD_SPEED backup_car_C5[backup_pointer_C5] 32.0 ENDIF ENDIF backup_timer_C5[backup_pointer_C5] = 0 ENDIF RETURN LVAR_INT node_number_C5 found_hidden_node_C5 LVAR_FLOAT p_offset_X_C5 p_offset_Y_C5 p_offset_Z_C5 LVAR_FLOAT node_X_C5 node_Y_C5 node_Z_C5 node_heading_C5 mission_casino5_SUB_find_hidden_node: node_number_C5 = 1 found_hidden_node_C5 = 0 WHILE node_number_C5 < 10 AND found_hidden_node_C5 = 0 // node behind player GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 backup_Y_offset_C5[backup_pointer_C5] 0.0 p_offset_X_C5 p_offset_Y_C5 p_offset_Z_C5 GET_NTH_CLOSEST_CAR_NODE_WITH_HEADING p_offset_X_C5 p_offset_Y_C5 p_offset_Z_C5 node_number_C5 node_X_C5 node_Y_C5 node_Z_C5 node_heading_C5 IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY node_X_C5 node_Y_C5 node_Z_C5 5.0 5.0 5.0 IF NOT IS_POINT_ON_SCREEN node_X_C5 node_Y_C5 node_Z_C5 5.0 CLEAR_AREA node_X_C5 node_Y_C5 node_Z_C5 5.0 TRUE found_hidden_node_C5 = 1 ENDIF ENDIF // IF found_hidden_node_C5 = 0 // // node left player // GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -20.0 -5.0 0.0 p_offset_X_C5 p_offset_Y_C5 p_offset_Z_C5 // GET_NTH_CLOSEST_CAR_NODE_WITH_HEADING p_offset_X_C5 p_offset_Y_C5 p_offset_Z_C5 node_number_C5 node_X_C5 node_Y_C5 node_Z_C5 node_heading_C5 // IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY node_X_C5 node_Y_C5 node_Z_C5 5.0 5.0 5.0 // IF NOT IS_POINT_ON_SCREEN node_X_C5 node_Y_C5 node_Z_C5 5.0 // CLEAR_AREA node_X_C5 node_Y_C5 node_Z_C5 5.0 TRUE // found_hidden_node_C5 = 1 // ENDIF // ENDIF // ENDIF // // IF found_hidden_node_C5 = 0 // // node right player // GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 20.0 -5.0 0.0 p_offset_X_C5 p_offset_Y_C5 p_offset_Z_C5 // GET_NTH_CLOSEST_CAR_NODE_WITH_HEADING p_offset_X_C5 p_offset_Y_C5 p_offset_Z_C5 node_number_C5 node_X_C5 node_Y_C5 node_Z_C5 node_heading_C5 // IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY node_X_C5 node_Y_C5 node_Z_C5 5.0 5.0 5.0 // IF NOT IS_POINT_ON_SCREEN node_X_C5 node_Y_C5 node_Z_C5 5.0 // CLEAR_AREA node_X_C5 node_Y_C5 node_Z_C5 5.0 TRUE // found_hidden_node_C5 = 1 // ENDIF // ENDIF // ENDIF node_number_C5 ++ ENDWHILE RETURN // ############################## // ## AUDIO LVAR_INT audio_pointer_C5 audio_status_C5 audio_sound_label_C5[16] LVAR_TEXT_LABEL $audio_text_label_C5[16] mission_casino5_SUB_dialogue: SWITCH audio_status_C5 CASE 0 IF TIMERB > 8500 audio_status_C5 ++ ENDIF BREAK // voice over at start CASE 1 IF audio_pointer_C5 < 2 load_sample = audio_sound_label_C5[audio_pointer_C5] $load_text = $audio_text_label_C5[audio_pointer_C5] START_NEW_SCRIPT audio_load_and_play 0 100 audio_pointer_C5 ++ audio_status_C5 ++ ELSE audio_status_C5 = 3 BREAK ENDIF CASE 2 IF SLOT_status[preload_slot] = -3 audio_status_C5 = 1 SLOT_status[preload_slot] = -4 ENDIF BREAK // hospital reception CASE 4 IF audio_pointer_C5 < 7 load_sample = audio_sound_label_C5[audio_pointer_C5] $load_text = $audio_text_label_C5[audio_pointer_C5] START_NEW_SCRIPT audio_load_and_play 0 100 audio_pointer_C5 ++ audio_status_C5 ++ ELSE audio_status_C5 = 6 BREAK ENDIF CASE 5 IF SLOT_status[preload_slot] = -3 audio_status_C5 = 4 SLOT_status[preload_slot] = -4 ENDIF BREAK // johnny moaning CASE 7 IF TIMERB > 8500 GENERATE_RANDOM_INT_IN_RANGE 7 14 audio_pointer_C5 audio_status_C5 ++ ENDIF BREAK CASE 8 IF NOT IS_CAR_DEAD backup_car_C5[0] IF HAS_CAR_BEEN_DAMAGED_BY_CAR ambulance_C5[mafia_ID_C5] backup_car_C5[0] audio_status_C5 = 9 ENDIF CLEAR_CAR_LAST_DAMAGE_ENTITY backup_car_C5[0] ENDIF IF NOT IS_CAR_DEAD backup_car_C5[1] IF NOT audio_status_C5 = 9 IF HAS_CAR_BEEN_DAMAGED_BY_CAR ambulance_C5[mafia_ID_C5] backup_car_C5[1] audio_status_C5 = 9 ENDIF ENDIF CLEAR_CAR_LAST_DAMAGE_ENTITY backup_car_C5[1] ENDIF CLEAR_CAR_LAST_DAMAGE_ENTITY ambulance_C5[mafia_ID_C5] BREAK CASE 9 load_sample = audio_sound_label_C5[audio_pointer_C5] $load_text = $audio_text_label_C5[audio_pointer_C5] START_NEW_SCRIPT audio_load_and_play 2 100 johnny_C5 audio_status_C5 = 10 audio_pointer_C5 ++ IF audio_pointer_C5 = 14 audio_pointer_C5 = 7 ENDIF TIMERB = 0 CASE 10 IF TIMERB > 10000 audio_status_C5 = 8 ENDIF BREAK ENDSWITCH RETURN LVAR_INT meat_mafia_C5[2] mission_casino5_CUT_at_meat_factory: DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS CLEAR_AREA 979.7058 2137.2466 9.8203 200.0 TRUE SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON IF NOT IS_CAR_DEAD ambulance_C5[mafia_ID_C5] SET_CAR_HEALTH ambulance_C5[mafia_ID_C5] 3000 ENDIF REQUEST_MODEL VMAFF3 REQUEST_MODEL VMAFF4 REQUEST_MODEL CJ_WHEELCHAIR1 WHILE NOT HAS_MODEL_LOADED VMAFF3 OR NOT HAS_MODEL_LOADED VMAFF4 OR NOT HAS_MODEL_LOADED CJ_WHEELCHAIR1 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD ambulance_C5[mafia_ID_C5] SET_CAR_COORDINATES ambulance_C5[mafia_ID_C5] 979.7058 2137.2466 9.8203 SET_CAR_HEADING ambulance_C5[mafia_ID_C5] 237.8897 WARP_CHAR_FROM_CAR_TO_COORD scplayer 998.5278 2118.5889 9.8203 //WARP_CHAR_INTO_CAR_AS_PASSENGER scplayer ambulance_C5[mafia_ID_C5] 0 CREATE_CHAR_INSIDE_CAR ambulance_C5[mafia_ID_C5] PEDTYPE_MISSION1 VMAFF3 meat_mafia_C5[0] SET_CHAR_DECISION_MAKER meat_mafia_C5[0] empty_dm_C5 ENDIF SET_FIXED_CAMERA_POSITION 972.8329 2141.3342 11.0496 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 973.6994 2140.8389 11.1103 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD ambulance_C5[mafia_ID_C5] AND NOT IS_CHAR_DEAD meat_mafia_C5[0] OPEN_SEQUENCE_TASK sequence_C5 TASK_CAR_TEMP_ACTION -1 ambulance_C5[mafia_ID_C5] TEMPACT_REVERSE_STRAIGHT 500 TASK_CAR_TEMP_ACTION -1 ambulance_C5[mafia_ID_C5] TEMPACT_HANDBRAKESTRAIGHT 300 TASK_STAND_STILL -1 8000 CLOSE_SEQUENCE_TASK sequence_C5 PERFORM_SEQUENCE_TASK meat_mafia_C5[0] sequence_C5 CLEAR_SEQUENCE_TASK sequence_C5 ENDIF cutscene_flag_C5 = 0 WHILE cutscene_flag_C5 = 0 WAIT 0 IF NOT IS_CHAR_DEAD meat_mafia_C5[0] GET_SEQUENCE_PROGRESS meat_mafia_C5[0] sequence_progress_C5 IF sequence_progress_C5 > 0 cutscene_flag_C5 = 1 ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD meat_mafia_C5[0] AND NOT IS_CAR_DEAD ambulance_C5[mafia_ID_C5] WARP_CHAR_FROM_CAR_TO_COORD meat_mafia_C5[0] 971.7789 2137.2883 9.8203 SET_CHAR_HEADING meat_mafia_C5[0] 316.6316 CLEAR_CHAR_TASKS_IMMEDIATELY meat_mafia_C5[0] OPEN_SEQUENCE_TASK sequence_C5 TASK_GO_STRAIGHT_TO_COORD -1 974.2065 2140.1077 9.8203 PEDMOVE_WALK -2 TASK_LOOK_AT_VEHICLE -1 ambulance_C5[mafia_ID_C5] 8000 TASK_STAND_STILL -1 8000 CLOSE_SEQUENCE_TASK sequence_C5 PERFORM_SEQUENCE_TASK meat_mafia_C5[0] sequence_C5 CLEAR_SEQUENCE_TASK sequence_C5 //WARP_CHAR_FROM_CAR_TO_COORD scplayer 0.0 0.0 0.0 IF NOT IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_INTO_CAR scplayer ambulance_C5[mafia_ID_C5] ENDIF CREATE_CHAR PEDTYPE_MISSION1 VMAFF4 975.8311 2144.9590 9.8203 meat_mafia_C5[1] SET_CHAR_HEADING meat_mafia_C5[1] 162.2693 SET_CHAR_DECISION_MAKER meat_mafia_C5[1] empty_dm_C5 OPEN_SEQUENCE_TASK sequence_C5 TASK_GO_STRAIGHT_TO_COORD -1 975.0208 2141.3657 9.8203 PEDMOVE_WALK -2 TASK_LOOK_AT_CHAR -1 meat_mafia_C5[1] 8000 TASK_STAND_STILL -1 8000 CLOSE_SEQUENCE_TASK sequence_C5 PERFORM_SEQUENCE_TASK meat_mafia_C5[1] sequence_C5 CLEAR_SEQUENCE_TASK sequence_C5 ENDIF cutscene_flag_C5 = 0 WHILE cutscene_flag_C5 = 0 WAIT 0 IF NOT IS_CHAR_DEAD meat_mafia_C5[0] GET_SEQUENCE_PROGRESS meat_mafia_C5[0] sequence_progress_C5 IF sequence_progress_C5 > 0 cutscene_flag_C5 = 1 ENDIF ENDIF ENDWHILE load_sample = SOUND_CAS5_DA $load_text = &CAS5_DA START_NEW_SCRIPT audio_load_and_play 2 200 meat_mafia_C5[0] cutscene_flag_C5 = 0 WHILE cutscene_flag_C5 = 0 WAIT 0 IF NOT IS_CHAR_DEAD meat_mafia_C5[1] GET_SEQUENCE_PROGRESS meat_mafia_C5[1] sequence_progress_C5 IF sequence_progress_C5 > 0 cutscene_flag_C5 = 1 ENDIF ENDIF ENDWHILE WHILE NOT SLOT_status[preload_slot] = -3 WAIT 0 ENDWHILE load_sample = SOUND_CAS5_DB $load_text = &CAS5_DB START_NEW_SCRIPT audio_load_and_play 2 200 meat_mafia_C5[1] TIMERA = 0 WHILE TIMERA < 4500 WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LVAR_INT wheelchair_C5 CREATE_OBJECT CJ_WHEELCHAIR1 971.5 2140.5 9.8203 wheelchair_C5 SET_OBJECT_HEADING wheelchair_C5 180.0 IF NOT IS_CHAR_DEAD johnny_C5 WARP_CHAR_FROM_CAR_TO_COORD johnny_C5 0.0 0.0 0.0 ATTACH_CHAR_TO_OBJECT johnny_C5 wheelchair_C5 0.0 -0.575 0.525 FACING_BACK 0.0 WEAPONTYPE_UNARMED TASK_PLAY_ANIM johnny_C5 SEAT_down PED 9.0 FALSE FALSE FALSE TRUE -1 ENDIF IF NOT IS_CHAR_DEAD meat_mafia_C5[0] SET_CHAR_COORDINATES meat_mafia_C5[0] 972.5 2140.5 9.8203 SET_CHAR_HEADING meat_mafia_C5[0] 0.0 ENDIF IF NOT IS_CHAR_DEAD meat_mafia_C5[1] SET_CHAR_COORDINATES meat_mafia_C5[1] 971.5 2139.5 9.8203 SET_CHAR_HEADING meat_mafia_C5[1] 0.0 ENDIF cutscene_flag_C5 = 0 WHILE cutscene_flag_C5 = 0 WAIT 0 IF NOT IS_CHAR_DEAD johnny_C5 IF IS_CHAR_PLAYING_ANIM johnny_C5 SEAT_down SET_CHAR_ANIM_CURRENT_TIME johnny_C5 SEAT_down 1.0 cutscene_flag_C5 = 1 ENDIF ENDIF ENDWHILE SET_FIXED_CAMERA_POSITION 971.4178 2146.1355 14.0976 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 971.5663 2145.2749 13.6106 JUMP_CUT TIMERA = 0 WHILE TIMERA < 200 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD meat_mafia_C5[0] CLEAR_CHAR_TASKS meat_mafia_C5[0] ENDIF DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD meat_mafia_C5[0] TASK_GO_STRAIGHT_TO_COORD meat_mafia_C5[0] 972.8889 2148.0393 9.8203 PEDMOVE_WALK -2 ENDIF IF NOT IS_CAR_DEAD ambulance_C5[mafia_ID_C5] TASK_CAR_DRIVE_TO_COORD scplayer ambulance_C5[mafia_ID_C5] 991.3741 2136.3118 9.8203 5.0 MODE_NORMAL 0 DRIVINGMODE_STOPFORCARS ENDIF TIMERA = 0 WHILE TIMERA < 1700 WAIT 0 ENDWHILE DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD ambulance_C5[mafia_ID_C5] SET_CAR_FORWARD_SPEED ambulance_C5[mafia_ID_C5] 0.0 WARP_CHAR_FROM_CAR_TO_COORD scplayer 0.0 0.0 0.0 WARP_CHAR_INTO_CAR scplayer ambulance_C5[mafia_ID_C5] ENDIF DETACH_CHAR_FROM_CAR johnny_C5 DELETE_CHAR johnny_C5 DELETE_CHAR meat_mafia_C5[0] DELETE_CHAR meat_mafia_C5[1] DELETE_OBJECT wheelchair_C5 CLEAR_CHAR_TASKS scplayer RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN ON TIMERA = 0 WHILE TIMERA < 200 WAIT 0 ENDWHILE DO_FADE 0 FADE_IN // ########################### // ## // ## END OF MISSION SCRIPTS // ## // ########################### mission_casino5_PASSED: flag_casino_mission_counter ++ //Used to terminate this mission loop in the main script. These varibles will be set up in the main.sc REGISTER_MISSION_PASSED ( CASINO5 ) //Used in the stats PLAYER_MADE_PROGRESS 1 // imy stuff PRINT_WITH_NUMBER_BIG ( M_PASSS ) 5000 5000 1 //"Mission Passed!" //100 being the amount of cash ADD_SCORE player1 5000//amount of cash AWARD_PLAYER_MISSION_RESPECT 5//amount of respect CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 // stuff for craig REMOVE_BLIP vcrash_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT vcrashX vcrashY vcrashZ crash_blip_icon vcrash_contact_blip START_NEW_SCRIPT vcrash_mission_loop RETURN mission_casino5_FAILED: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" IF fail_text_flag_C5 = 1 PRINT_NOW $fail_text_C5 5000 1 ENDIF RETURN mission_casino5_CLEANUP: START_NEW_SCRIPT terminate_audio_controller UNMARK_ALL_ROAD_NODES_AS_DONT_WANDER IF IS_PLAYER_PLAYING player1 SET_PLAYER_GROUP_RECRUITMENT player1 TRUE SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 ENDIF SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 REMOVE_BLIP goto_blip_C5 REMOVE_BLIP ambulance_blip_C5[0] REMOVE_BLIP ambulance_blip_C5[1] REMOVE_BLIP ambulance_blip_C5[2] MARK_CHAR_AS_NO_LONGER_NEEDED driver_C5[0] MARK_CHAR_AS_NO_LONGER_NEEDED driver_C5[1] MARK_CHAR_AS_NO_LONGER_NEEDED driver_C5[2] MARK_CHAR_AS_NO_LONGER_NEEDED passenger_C5[0] MARK_CHAR_AS_NO_LONGER_NEEDED passenger_C5[1] MARK_CHAR_AS_NO_LONGER_NEEDED passenger_C5[2] MARK_CHAR_AS_NO_LONGER_NEEDED johnny_C5 MARK_CHAR_AS_NO_LONGER_NEEDED backup_driver_C5[0] MARK_CHAR_AS_NO_LONGER_NEEDED backup_driver_C5[1] // // MARK_CHAR_AS_NO_LONGER_NEEDED meat_mafia_C5[0] // MARK_CHAR_AS_NO_LONGER_NEEDED meat_mafia_C5[1] MARK_CAR_AS_NO_LONGER_NEEDED patriot_C5 MARK_CAR_AS_NO_LONGER_NEEDED ambulance_C5[0] MARK_CAR_AS_NO_LONGER_NEEDED ambulance_C5[1] MARK_CAR_AS_NO_LONGER_NEEDED ambulance_C5[2] MARK_CAR_AS_NO_LONGER_NEEDED backup_car_C5[0] MARK_CAR_AS_NO_LONGER_NEEDED backup_car_C5[1] DONT_SUPPRESS_CAR_MODEL PATRIOT UNLOAD_SPECIAL_CHARACTER 1 MARK_MODEL_AS_NO_LONGER_NEEDED LVEMT1 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF1 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF2 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF3 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF4 MARK_MODEL_AS_NO_LONGER_NEEDED PATRIOT MARK_MODEL_AS_NO_LONGER_NEEDED AMBULAN MARK_MODEL_AS_NO_LONGER_NEEDED SENTINEL MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED CJ_WHEELCHAIR1 REMOVE_ANIMATION GANGS flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED RETURN } MISSION_START // ######################## // ## // ## Casino6.sc // ## // ## The Meat Business // ## // ## Simon Lashley // ## // ######################## SCRIPT_NAME CASINO6 GOSUB mission_casino6_START IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_casino6_FAILED ENDIF GOSUB mission_casino6_CLEANUP MISSION_END { // decision makers LVAR_INT empty_dm_C6 attack_dm_C6 // player LVAR_INT player_trapped_C6 player_fire_ex_C6 freezer_armour_C6 // rosenberg LVAR_INT rosenberg_C6 rosenberg_blip_C6 rosenberg_status_C6 rosenberg_timer_C6 fire_ex_C6 rosenberg_trapped_C6 VAR_INT rosenbergs_health_C6 LVAR_INT rosenberg_text_flag_C6[6] rosenberg_text_timer_C6 rosenberg_random_text_C6 // mafia LVAR_INT mafia_C6[29] mafia_blip_C6[29] mafia_status_C6[29] number_of_mafia_C6 mafia_dead_C6 // meat track variables LVAR_INT mt_carcass_C6[6] mt_obj_movement_C6[6] mt_obj_C6[6] mt_switch_C6 mt_status_C6 mt_stopped_C6 mt_timer_C6 LVAR_FLOAT mt_obj_angle_C6[6] mt_obj_rot_C6[6] LVAR_FLOAT mt_speed_C6 mt_accel_C6 mt_dis_per_degree_C6 mt_degrees_C6 mt_radius_C6 LVAR_FLOAT mt_X_C6[8] mt_Y_C6[8] mt_Z_C6 LVAR_FLOAT cos_angle_C6 sin_angle_C6 new_X_C6 new_Y_C6 // freezer LVAR_INT fd_C6 fd_switch_C6 fd_status_C6 fd_attractor_C6 fd_attractor_seq_C6 f_timer_C6 f_carcass_C6[6] LVAR_FLOAT fd_speed_C6 fd_accel_C6 // general LVAR_INT pointer_C6 pointer2_C6 goto_blip_C6 cutscene_status_C6 weapon_type_C6 // timers LVAR_INT this_frame_time_C6 last_frame_time_C6 time_diff_C6 // multi-use LVAR_FLOAT x2_C6 y2_C6 z2_C6 // fail mission LVAR_INT fail_text_flag_C6 LVAR_TEXT_LABEL fail_text_C6 mission_casino6_START: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 SWITCH_ENTRY_EXIT abatoir TRUE // text LOAD_MISSION_TEXT CASINO6 SET_CHAR_COORDINATES scplayer 2179.9343 1684.1483 10.0533 SET_CHAR_HEADING scplayer 108.0825 //SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2233.5 1712.8 10.0 FREEZE_CHAR_POSITION scplayer TRUE SET_PLAYER_CONTROL player1 OFF SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 iTerminateAllAmbience = 1 // **************************************** START OF CUTSCENE SET_AREA_VISIBLE 2 LOAD_CUTSCENE CAS_6a WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 // **************************************** END OF CUTSCENE SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 LVAR_INT never_run_this_C6 IF never_run_this_C6 = 1 CREATE_CAR SENTINEL 0.0 0.0 0.0 player_vehicle_C6 ADD_BLIP_FOR_COORD 0.0 0.0 0.0 goto_blip_C6 ADD_BLIP_FOR_COORD 0.0 0.0 0.0 rosenberg_blip_C6 ENDIF // ######################## // ## // ## DRIVE TO THE ABATTOIR // ## // ######################## SET_PLAYER_GROUP_RECRUITMENT player1 FALSE // audio controller START_NEW_SCRIPT start_audio_controller SET_CHAR_AREA_VISIBLE scplayer 0 LOAD_SCENE_IN_DIRECTION 2179.9343 1684.1483 10.0533 108.0825 // DECISION MAKERS LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY empty_dm_C6 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH attack_dm_C6 // rosenberg SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_SPECIAL PEDTYPE_MISSION2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_SPECIAL PEDTYPE_PLAYER1 // mafia SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 PEDTYPE_SPECIAL SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 PEDTYPE_PLAYER1 GET_PLAYER_GROUP player1 players_group_C6 SET_GROUP_DEFAULT_TASK_ALLOCATOR players_group_C6 DEFAULT_TASK_ALLOCATOR_FOLLOW_LIMITED // chars LOAD_SPECIAL_CHARACTER 1 ROSE WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 WAIT 0 ENDWHILE // rosenberg CREATE_CHAR PEDTYPE_SPECIAL SPECIAL01 2181.3718 1680.9257 10.0636 rosenberg_C6 SET_CHAR_HEADING rosenberg_C6 71.6745 SET_CHAR_AREA_VISIBLE rosenberg_C6 0 REMOVE_BLIP rosenberg_blip_C6 ADD_BLIP_FOR_CHAR rosenberg_C6 rosenberg_blip_C6 CHANGE_BLIP_DISPLAY rosenberg_blip_C6 BLIP_ONLY SET_BLIP_AS_FRIENDLY rosenberg_blip_C6 TRUE SET_CHAR_DECISION_MAKER rosenberg_C6 empty_dm_C6 SET_CHAR_NEVER_TARGETTED rosenberg_C6 TRUE SET_CHAR_SUFFERS_CRITICAL_HITS rosenberg_C6 FALSE SET_CHAR_HEALTH rosenberg_C6 300 SET_CHAR_NEVER_LEAVES_GROUP rosenberg_C6 TRUE SET_GROUP_MEMBER players_group_C6 rosenberg_C6 SET_CHAR_SHOOT_RATE rosenberg_C6 100 ADD_BLIP_FOR_COORD 967.3132 2161.1538 9.8203 goto_blip_C6 PRINT_NOW CAS6_10 8000 1 // FREEZE_CHAR_POSITION scplayer FALSE SET_PLAYER_CONTROL player1 ON LVAR_INT health_pickup_C6 CREATE_PICKUP HEALTH PICKUP_ONCE 958.9762 2096.8362 1011.1 health_pickup_C6 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // audio variables // banter on the streets $audio_text_label_C6[0] = &CAS6_AA audio_sound_label_C6[0] = SOUND_CAS6_AA audio_speaker_C6[0] = scplayer $audio_text_label_C6[1] = &CAS6_AB audio_sound_label_C6[1] = SOUND_CAS6_AB audio_speaker_C6[1] = rosenberg_C6 $audio_text_label_C6[2] = &CAS6_AC audio_sound_label_C6[2] = SOUND_CAS6_AC audio_speaker_C6[2] = rosenberg_C6 $audio_text_label_C6[3] = &CAS6_AD audio_sound_label_C6[3] = SOUND_CAS6_AD audio_speaker_C6[3] = rosenberg_C6 $audio_text_label_C6[4] = &CAS6_AE audio_sound_label_C6[4] = SOUND_CAS6_AE audio_speaker_C6[4] = scplayer $audio_text_label_C6[5] = &CAS6_AF audio_sound_label_C6[5] = SOUND_CAS6_AF audio_speaker_C6[5] = rosenberg_C6 // in car banter $audio_text_label_C6[6] = &CAS6_BA audio_sound_label_C6[6] = SOUND_CAS6_BA audio_speaker_C6[6] = rosenberg_C6 $audio_text_label_C6[7] = &CAS6_BB audio_sound_label_C6[7] = SOUND_CAS6_BB audio_speaker_C6[7] = rosenberg_C6 $audio_text_label_C6[8] = &CAS6_BC audio_sound_label_C6[8] = SOUND_CAS6_BC audio_speaker_C6[8] = rosenberg_C6 $audio_text_label_C6[9] = &CAS6_BD audio_sound_label_C6[9] = SOUND_CAS6_BD audio_speaker_C6[9] = scplayer $audio_text_label_C6[10]= &CAS6_BE audio_sound_label_C6[10]= SOUND_CAS6_BE audio_speaker_C6[10] = rosenberg_C6 $audio_text_label_C6[11]= &CAS6_BF audio_sound_label_C6[11]= SOUND_CAS6_BF audio_speaker_C6[11] = rosenberg_C6 $audio_text_label_C6[12]= &CAS6_BH audio_sound_label_C6[12]= SOUND_CAS6_BH audio_speaker_C6[12] = rosenberg_C6 $audio_text_label_C6[13]= &CAS6_BK audio_sound_label_C6[13]= SOUND_CAS6_BK audio_speaker_C6[13] = scplayer $audio_text_label_C6[14]= &CAS6_BL audio_sound_label_C6[14]= SOUND_CAS6_BL audio_speaker_C6[14] = rosenberg_C6 $audio_text_label_C6[15]= &CAS6_BM audio_sound_label_C6[15]= SOUND_CAS6_BM audio_speaker_C6[15] = rosenberg_C6 $audio_text_label_C6[16]= &CAS6_BN audio_sound_label_C6[16]= SOUND_CAS6_BN audio_speaker_C6[16] = rosenberg_C6 // near abattoir $audio_text_label_C6[17]= &CAS6_CA audio_sound_label_C6[17]= SOUND_CAS6_CA audio_speaker_C6[17] = rosenberg_C6 $audio_text_label_C6[18]= &CAS6_CB audio_sound_label_C6[18]= SOUND_CAS6_CB audio_speaker_C6[18] = rosenberg_C6 //audio_pointer_C6 = 0 //audio_status_C6 = 0 TIMERB = 0 LVAR_INT entry_exit_status_C6 mission_casino6_MAIN_drive_to_abattoir_loop: WAIT 0 IF NOT IS_CHAR_DEAD rosenberg_C6 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S SWITCH_ENTRY_EXIT abatoir TRUE entry_exit_area = 0 entry_exit_status = FALSE $entry_exit_name = abatoir START_NEW_SCRIPT switch_entry_exit_after_mission GOTO mission_casino6_PASSED ENDIF // interior check GET_AREA_VISIBLE active_area_C6 IF NOT active_area_C6 = 0 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 967.3132 2161.1538 5.0 5.0 FALSE GOTO mission_casino6_MAIN_player_entered_abattoir ELSE FREEZE_CHAR_POSITION rosenberg_C6 TRUE REMOVE_BLIP goto_blip_C6 REMOVE_BLIP rosenberg_blip_C6 REMOVE_CHAR_FROM_GROUP rosenberg_C6 rosenberg_blip_status_C6 = 0 GOTO mission_casino6_MAIN_goto_rosenberg_interior ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_2D scplayer 967.3132 2161.1538 30.0 30.0 FALSE IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer rosenberg_C6 30.0 30.0 FALSE IF rosenberg_text_status_C6 < 2 rosenberg_text_status_C6 = 2 ENDIF IF entry_exit_status_C6 = 0 SWITCH_ENTRY_EXIT abatoir FALSE entry_exit_status_C6 = 1 ENDIF ELSE IF audio_status_C6 < 5 audio_pointer_C6 = 17 audio_status_C6 = 5 ENDIF IF entry_exit_status_C6 = 1 SWITCH_ENTRY_EXIT abatoir TRUE entry_exit_status_C6 = 0 ENDIF ENDIF ENDIF GOSUB mission_casino6_SUB_rosenberg_blip GOSUB mission_casino6_SUB_goto_rosenberg_text GOSUB mission_casino6_SUB_goto_dialogue ELSE fail_text_flag_C6 = 1 $fail_text_C6 = CAS6_F0 GOTO mission_casino6_FAILED ENDIF GOTO mission_casino6_MAIN_drive_to_abattoir_loop mission_casino6_MAIN_goto_rosenberg_interior: WAIT 0 IF NOT IS_CHAR_DEAD rosenberg_C6 GET_AREA_VISIBLE active_area_C6 IF active_area_C6 = 0 FREEZE_CHAR_POSITION rosenberg_C6 FALSE SET_CHAR_NEVER_LEAVES_GROUP rosenberg_C6 TRUE SET_GROUP_MEMBER players_group_C6 rosenberg_C6 REMOVE_BLIP rosenberg_blip_C6 ADD_BLIP_FOR_CHAR rosenberg_C6 rosenberg_blip_C6 SET_BLIP_AS_FRIENDLY rosenberg_blip_C6 TRUE CHANGE_BLIP_DISPLAY rosenberg_blip_C6 BLIP_ONLY ADD_BLIP_FOR_COORD 967.3132 2161.1538 9.8203 goto_blip_C6 TIMERA = 0 rosenberg_text_status_C6 = 3 GOTO mission_casino6_MAIN_drive_to_abattoir_loop ENDIF ELSE // just in for safety reasons fail_text_flag_C6 = 1 $fail_text_C6 = CAS6_F0 GOTO mission_casino6_FAILED ENDIF GOTO mission_casino6_MAIN_goto_rosenberg_interior mission_casino6_SUB_goto_dialogue: SWITCH audio_status_C6 CASE 0 IF TIMERB > 8000 audio_status_C6 ++ ENDIF BREAK // start dialogue CASE 1 IF audio_pointer_C6 < 6 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer rosenberg_C6 20.0 20.0 FALSE load_sample = audio_sound_label_C6[audio_pointer_C6] $load_text = $audio_text_label_C6[audio_pointer_C6] START_NEW_SCRIPT audio_load_and_play 2 100 audio_speaker_C6[audio_pointer_C6] audio_pointer_C6 ++ audio_status_C6 ++ ENDIF ELSE audio_status_C6 = 3 BREAK ENDIF CASE 2 IF SLOT_status[preload_slot] = -3 IF rosenberg_blip_status_C6 = 1 audio_pointer_C6 = 6 audio_status_C6 = 3 ELSE audio_status_C6 = 1 ENDIF SLOT_status[preload_slot] = -4 ENDIF BREAK // in car dialogue CASE 3 IF rosenberg_blip_status_C6 = 1 IF audio_pointer_C6 < 17 load_sample = audio_sound_label_C6[audio_pointer_C6] $load_text = $audio_text_label_C6[audio_pointer_C6] START_NEW_SCRIPT audio_load_and_play 1 100 audio_speaker_C6[audio_pointer_C6] audio_pointer_C6 ++ audio_status_C6 ++ ENDIF ENDIF CASE 4 IF SLOT_status[preload_slot] = -3 audio_status_C6 = 3 SLOT_status[preload_slot] = -4 ENDIF BREAK // end dialogue CASE 5 IF audio_pointer_C6 < 19 load_sample = audio_sound_label_C6[audio_pointer_C6] $load_text = $audio_text_label_C6[audio_pointer_C6] START_NEW_SCRIPT audio_load_and_play 2 100 audio_speaker_C6[audio_pointer_C6] audio_pointer_C6 ++ audio_status_C6 ++ ENDIF CASE 6 IF SLOT_status[preload_slot] = -3 audio_status_C6 = 5 SLOT_status[preload_slot] = -4 ENDIF BREAK ENDSWITCH RETURN mission_casino6_SUB_goto_rosenberg_text: SWITCH rosenberg_text_status_C6 CASE 0 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer rosenberg_C6 60.0 60.0 FALSE PRINT_NOW CAS6_11 8000 1 TIMERA = 0 rosenberg_text_status_C6 ++ ENDIF BREAK CASE 1 IF TIMERA > 20000 rosenberg_text_status_C6 -- ENDIF BREAK CASE 2 PRINT_NOW CAS6_12 8000 1 TIMERA = 0 rosenberg_text_status_C6 ++ BREAK CASE 3 IF TIMERA > 20000 rosenberg_text_status_C6 = 0 ENDIF BREAK ENDSWITCH RETURN // ######################## // ## // ## INSIDE THE ABATTOIR // ## // ######################## mission_casino6_MAIN_player_entered_abattoir: // store_players vehicle LVAR_INT save_car_C6 car_model_C6 car_colours_C6[4] car_tyres_C6 car_doors_C6 LVAR_FLOAT car_pos_C6[4] CLEAR_WANTED_LEVEL player1 IF NOT IS_CAR_DEAD player_vehicle_C6 IF IS_CAR_IN_AREA_2D player_vehicle_C6 960.4431 2087.9746 996.5055 2182.1526 FALSE IF NOT IS_CAR_UPSIDEDOWN player_vehicle_C6 save_car_C6 = 1 GET_CAR_COORDINATES player_vehicle_C6 car_pos_C6[0] car_pos_C6[1] car_pos_C6[2] GET_CAR_HEADING player_vehicle_C6 car_pos_C6[3] GET_CAR_MODEL player_vehicle_C6 car_model_C6 GET_CAR_COLOURS player_vehicle_C6 car_colours_C6[0] car_colours_C6[1] GET_EXTRA_CAR_COLOURS player_vehicle_C6 car_colours_C6[2] car_colours_C6[3] // check tyres pointer_C6 = 0 WHILE pointer_C6 < 4 IF IS_CAR_TYRE_BURST player_vehicle_C6 pointer_C6 SET_BIT car_tyres_C6 pointer_C6 ENDIF pointer_C6 ++ ENDWHILE // check doors IF IS_THIS_MODEL_A_CAR car_model_C6 pointer_C6 = 0 WHILE pointer_C6 < 6 IF IS_CAR_DOOR_DAMAGED player_vehicle_C6 pointer_C6 SET_BIT car_doors_C6 pointer_C6 ENDIF pointer_C6 ++ ENDWHILE ELSE car_doors_C6 = -1 ENDIF ENDIF ENDIF FIX_CAR player_vehicle_C6 MARK_MODEL_AS_NO_LONGER_NEEDED car_model_C6 ENDIF active_area_C6 = 0 WHILE active_area_C6 = 0 WAIT 0 GET_CHAR_AREA_VISIBLE scplayer active_area_C6 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 963.7808 2165.3496 1010.0312 SET_PLAYER_CONTROL player1 OFF DISABLE_PLAYER_SPRINT player1 TRUE //SET_CHAR_AREA_VISIBLE scplayer 1 //SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2233.5 1712.8 10.0 IF NOT IS_CHAR_DEAD rosenberg_C6 IF NOT IS_CHAR_IN_ANY_CAR rosenberg_C6 SET_CHAR_COORDINATES rosenberg_C6 963.8596 2162.6147 1010.0312 ELSE WARP_CHAR_FROM_CAR_TO_COORD rosenberg_C6 963.8596 2162.6147 1010.0312 ENDIF FREEZE_CHAR_POSITION rosenberg_C6 TRUE REMOVE_BLIP rosenberg_blip_C6 REMOVE_CHAR_FROM_GROUP rosenberg_C6 ENDIF REMOVE_BLIP goto_blip_C6 IF NOT IS_CAR_DEAD player_vehicle_C6 DELETE_CAR player_vehicle_C6 ENDIF audio_status_C6 = 0 audio_pointer_C6 = 0 CLEAR_AREA_OF_CHARS 930.0 2178.0 1008.0 964.0 2095.0 1014.0 MAKE_PLAYER_SAFE_FOR_CUTSCENE player1 // **************************************** START OF CUTSCENE SET_AREA_VISIBLE 1 LOAD_CUTSCENE CAS6b_1 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT WAS_CUTSCENE_SKIPPED LOAD_CUTSCENE CAS6b_2 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF // **************************************** END OF CUTSCENE SWITCH_WIDESCREEN ON //SET_AREA_VISIBLE 1 LOAD_SCENE 942.8142 2111.4839 1010.0312 REQUEST_COLLISION 942.8142 2111.4839 // player // SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 968.3954 2160.9651 1.0 SET_CHAR_COORDINATES scplayer 961.4175 2111.3899 1010.0303 SET_CHAR_HEADING scplayer 100.0 FREEZE_CHAR_POSITION scplayer FALSE player_trapped_C6 = 0 // ########################## // ## Models and animations // ########################## REQUEST_MODEL VMAFF1 REQUEST_MODEL VMAFF2 REQUEST_MODEL VMAFF3 REQUEST_MODEL VMAFF4 // weapons REQUEST_MODEL MOLOTOV REQUEST_MODEL MP5LNG REQUEST_MODEL CHNSAW REQUEST_MODEL BAT REQUEST_MODEL FIRE_EX REQUEST_MODEL BODYARMOUR // objects REQUEST_MODEL ab_carcass REQUEST_MODEL ab_hook REQUEST_MODEL freezer_door REQUEST_MODEL sec_keypad REQUEST_MODEL cardboardbox2 REQUEST_MODEL cj_meat_bag_1 REQUEST_MODEL cj_meat_1 REQUEST_MODEL cj_meat_2 // sfx bank LOAD_MISSION_AUDIO 3 SOUND_BANK_MEAT_BUSINESS WHILE NOT HAS_MODEL_LOADED VMAFF1 OR NOT HAS_MODEL_LOADED VMAFF2 OR NOT HAS_MODEL_LOADED VMAFF3 OR NOT HAS_MODEL_LOADED VMAFF4 OR NOT HAS_MODEL_LOADED MOLOTOV WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED MP5LNG OR NOT HAS_MODEL_LOADED CHNSAW OR NOT HAS_MODEL_LOADED BAT OR NOT HAS_MODEL_LOADED FIRE_EX OR NOT HAS_MODEL_LOADED BODYARMOUR WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED ab_carcass OR NOT HAS_MODEL_LOADED ab_hook OR NOT HAS_MODEL_LOADED freezer_door OR NOT HAS_MODEL_LOADED sec_keypad OR NOT HAS_MODEL_LOADED cardboardbox2 OR NOT HAS_MODEL_LOADED cj_meat_bag_1 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED cj_meat_1 OR NOT HAS_MODEL_LOADED cj_meat_2 OR NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE // check for chainsaw (causes sound issues if more than one) GET_CHAR_WEAPON_IN_SLOT scplayer 2 weapon_type_C6 never_run_this_C6 never_run_this_C6 IF weapon_type_C6 = WEAPONTYPE_CHAINSAW weapon_type_C6 = WEAPONTYPE_BASEBALLBAT MARK_MODEL_AS_NO_LONGER_NEEDED CHNSAW ELSE weapon_type_C6 = WEAPONTYPE_CHAINSAW ENDIF SET_MAX_FIRE_GENERATIONS 0 // ################## // ## Mission start // ################## // //SET_AREA_VISIBLE 1 // LOAD_SCENE 942.8142 2111.4839 1010.0312 // REQUEST_COLLISION 942.8142 2111.4839 // // // player // SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 968.3954 2160.9651 1.0 // // SET_CHAR_COORDINATES scplayer 961.4175 2111.3899 1010.0303 // SET_CHAR_HEADING scplayer 100.0 // GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_SHOTGUN 24 // SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_SHOTGUN //player_trapped_C6 = 0 IF NOT IS_CHAR_DEAD rosenberg_C6 // // rosenberg SET_CHAR_COORDINATES rosenberg_C6 959.7906 2108.6702 1010.0303 SET_CHAR_HEADING rosenberg_C6 51.5 SET_CHAR_AREA_VISIBLE rosenberg_C6 1 FREEZE_CHAR_POSITION rosenberg_C6 FALSE REMOVE_BLIP rosenberg_blip_C6 ADD_BLIP_FOR_CHAR rosenberg_C6 rosenberg_blip_C6 CHANGE_BLIP_DISPLAY rosenberg_blip_C6 BLIP_ONLY SET_BLIP_ENTRY_EXIT rosenberg_blip_C6 968.3954 2160.9651 1.0 SET_BLIP_AS_FRIENDLY rosenberg_blip_C6 TRUE SET_CHAR_DECISION_MAKER rosenberg_C6 empty_dm_C6 // SET_CHAR_NEVER_TARGETTED rosenberg_C6 TRUE // SET_CHAR_SUFFERS_CRITICAL_HITS rosenberg_C6 FALSE SET_CHAR_HEALTH rosenberg_C6 300 ENDIF DISPLAY_ONSCREEN_COUNTER_WITH_STRING rosenbergs_health_C6 COUNTER_DISPLAY_BAR CAS6_C0 // pointer_C6 = 0 // WHILE pointer_C6 < 20 // rosenberg_text_flag_C6[pointer_C6] = 0 // pointer_C6 ++ // ENDWHILE // rosenberg_status_C6 = 0 rosenberg_timer_C6 = 0 rosenberg_trapped_C6 = 0 rosenberg_text_timer_C6 = 0 // fire extinguishers CREATE_PICKUP FIRE_EX PICKUP_ONCE 962.9547 2101.9185 1011.0 player_fire_ex_C6 CREATE_OBJECT_NO_OFFSET FIRE_EX 959.9 2098.1 1010.6 fire_ex_C6 SET_OBJECT_ROTATION fire_ex_C6 0.0 45.0 90.0 // armour pickup CREATE_PICKUP BODYARMOUR PICKUP_ONCE 958.4733 2144.2510 1011.0 freezer_armour_C6 // mission SET_RADAR_ZOOM 95 abattoir_status_C6 = 0 fail_text_flag_C6 = 0 // game and help text g_text_status_C6 = 0 h_text_status_C6 = 0 h_text_timer_C6 = 0 // ################## // ## Meat track // ################## mt_radius_C6 = 1.062 mt_dis_per_degree_C6 = mt_radius_C6 * 2.0 mt_dis_per_degree_C6 *= 3.14159265 //pie mt_dis_per_degree_C6 /= 360.0 mt_speed_C6 = 0.0 mt_accel_C6 = -0.0001 // make this 0.0001 to get meat track moving at start mt_stopped_C6 = TRUE mt_status_C6 = 0 mt_timer_C6 = 0 // coords of meat track mt_X_C6[0] = 945.725 mt_Y_C6[0] = 2175.24 mt_X_C6[1] = 946.787 mt_Y_C6[1] = 2174.185 mt_X_C6[2] = 946.787 mt_Y_C6[2] = 2118.155 mt_X_C6[3] = 945.725 mt_Y_C6[3] = 2117.069 mt_X_C6[4] = 938.357 mt_Y_C6[4] = 2117.069 mt_X_C6[5] = 937.262 mt_Y_C6[5] = 2118.155 mt_X_C6[6] = 937.262 mt_Y_C6[6] = 2174.185 mt_X_C6[7] = 938.357 mt_Y_C6[7] = 2175.24 mt_Z_C6 = 1016.288 CREATE_OBJECT_NO_OFFSET sec_keypad 946.35 2113.5496 1011.5222 mt_switch_C6 SET_OBJECT_COLLISION mt_switch_C6 FALSE // temp to stop player falling over FREEZE_OBJECT_POSITION mt_switch_C6 TRUE // carcasses // carcass top right CREATE_OBJECT_NO_OFFSET cardboardbox2 937.262 2126.155 mt_Z_C6 mt_obj_C6[0] SET_OBJECT_DYNAMIC mt_obj_C6[0] FALSE SET_OBJECT_COLLISION mt_obj_C6[0] FALSE SET_OBJECT_VISIBLE mt_obj_C6[0] FALSE mt_obj_movement_C6[0] = 6 mt_obj_angle_C6[0] = 0.0 mt_obj_rot_C6[0] = 0.0 CREATE_OBJECT_NO_OFFSET ab_carcass 937.228 2121.157 mt_Z_C6 mt_carcass_C6[0] ATTACH_OBJECT_TO_OBJECT mt_carcass_C6[0] mt_obj_C6[0] 0.0 0.0 0.0 0.0 0.0 0.0 // carcass bottom CREATE_OBJECT_NO_OFFSET cardboardbox2 940.356 2175.24 mt_Z_C6 mt_obj_C6[1] SET_OBJECT_DYNAMIC mt_obj_C6[1] FALSE SET_OBJECT_COLLISION mt_obj_C6[1] FALSE SET_OBJECT_VISIBLE mt_obj_C6[1] FALSE mt_obj_movement_C6[1] = 0 mt_obj_angle_C6[1] = 90.0 mt_obj_rot_C6[1] = 0.0 CREATE_OBJECT_NO_OFFSET ab_carcass 940.356 2175.264 mt_Z_C6 mt_carcass_C6[1] ATTACH_OBJECT_TO_OBJECT mt_carcass_C6[1] mt_obj_C6[1] 0.0 0.0 0.0 0.0 0.0 0.0 // carcass left side CREATE_OBJECT_NO_OFFSET cardboardbox2 946.846 2135.264 mt_Z_C6 mt_obj_C6[2] SET_OBJECT_DYNAMIC mt_obj_C6[2] FALSE SET_OBJECT_COLLISION mt_obj_C6[2] FALSE SET_OBJECT_VISIBLE mt_obj_C6[2] FALSE mt_obj_movement_C6[2] = 2 mt_obj_angle_C6[2] = 0.0 mt_obj_rot_C6[2] = 0.0 CREATE_OBJECT_NO_OFFSET ab_carcass 946.846 2135.264 mt_Z_C6 mt_carcass_C6[2] ATTACH_OBJECT_TO_OBJECT mt_carcass_C6[2] mt_obj_C6[2] 0.0 0.0 0.0 0.0 0.0 0.0 // hooks // top CREATE_OBJECT_NO_OFFSET ab_hook 941.727 2117.076 mt_Z_C6 mt_obj_C6[3] mt_obj_movement_C6[3] = 4 mt_obj_angle_C6[3] = 90.0 mt_obj_rot_C6[3] = 45.0 SET_OBJECT_ROTATION mt_obj_C6[3] 0.0 0.0 mt_obj_rot_C6[3] // bottom right CREATE_OBJECT_NO_OFFSET ab_hook 937.228 2162.24 mt_Z_C6 mt_obj_C6[4] mt_obj_movement_C6[4] = 6 mt_obj_angle_C6[4] = 0.0 mt_obj_rot_C6[4] = -45.0 SET_OBJECT_ROTATION mt_obj_C6[4] 0.0 0.0 mt_obj_rot_C6[4] // bottom left CREATE_OBJECT_NO_OFFSET ab_hook 946.846 2172.24 mt_Z_C6 mt_obj_C6[5] mt_obj_movement_C6[5] = 2 mt_obj_angle_C6[5] = 0.0 mt_obj_rot_C6[5] = 135.0 SET_OBJECT_ROTATION mt_obj_C6[5] 0.0 0.0 mt_obj_rot_C6[5] // hunks of meat lying around LVAR_INT meat_chunks_C6[9] CREATE_OBJECT_NO_OFFSET cj_meat_bag_1 933.6226 2118.9478 1012.3132 meat_chunks_C6[0] SET_OBJECT_HEADING meat_chunks_C6[0] 65.0793 CREATE_OBJECT_NO_OFFSET cj_meat_bag_1 933.1715 2133.3657 1012.7674 meat_chunks_C6[1] SET_OBJECT_HEADING meat_chunks_C6[1] 65.0783 CREATE_OBJECT_NO_OFFSET cj_meat_bag_1 942.9017 2155.6440 1013.4786 meat_chunks_C6[2] SET_OBJECT_HEADING meat_chunks_C6[2] 64.6149 CREATE_OBJECT_NO_OFFSET cj_meat_bag_1 950.8132 2166.6699 1012.2961 meat_chunks_C6[3] SET_OBJECT_HEADING meat_chunks_C6[3] 88.7010 CREATE_OBJECT_NO_OFFSET cj_meat_2 942.7145 2154.6328 1011.2128 meat_chunks_C6[4] SET_OBJECT_HEADING meat_chunks_C6[4] 73.9730 CREATE_OBJECT_NO_OFFSET cj_meat_2 950.4804 2155.5720 1011.9017 meat_chunks_C6[5] SET_OBJECT_HEADING meat_chunks_C6[5] 131.2515 CREATE_OBJECT_NO_OFFSET cj_meat_2 942.3651 2118.8679 1011.2410 meat_chunks_C6[6] SET_OBJECT_HEADING meat_chunks_C6[6] 64.6148 CREATE_OBJECT_NO_OFFSET cj_meat_2 950.6234 2132.0959 1011.9471 meat_chunks_C6[7] SET_OBJECT_HEADING meat_chunks_C6[7] 24.2141 CREATE_OBJECT_NO_OFFSET cj_meat_2 934.5715 2171.1729 1011.2660 meat_chunks_C6[8] SET_OBJECT_HEADING meat_chunks_C6[8] 354.6342 // ############ // ## freezer // ############ CREATE_OBJECT_NO_OFFSET freezer_door 951.859 2121.648 1012.094 fd_C6 SET_OBJECT_PROOFS fd_C6 TRUE TRUE TRUE TRUE TRUE CREATE_OBJECT_NO_OFFSET sec_keypad 950.9305 2114.3477 1011.5222 fd_switch_C6 SET_OBJECT_HEADING fd_switch_C6 180.0 FREEZE_OBJECT_POSITION fd_switch_C6 TRUE SET_OBJECT_COLLISION fd_switch_C6 FALSE // TEMP stop player falling over fd_status_C6 = 0 // open fd_speed_C6 = 0.0 fd_accel_C6 = 0.001 mafia_using_switch_C6 = -1 // attractor sequence for door switch OPEN_SEQUENCE_TASK fd_attractor_seq_C6 TASK_ACHIEVE_HEADING -1 180.0 TASK_STAND_STILL -1 800 CLOSE_SEQUENCE_TASK fd_attractor_seq_C6 // carcasses inside freezer CREATE_OBJECT_NO_OFFSET ab_carcass 962.4035 2119.8171 mt_Z_C6 f_carcass_C6[0] CREATE_OBJECT_NO_OFFSET ab_carcass 962.4035 2121.6411 mt_Z_C6 f_carcass_C6[1] CREATE_OBJECT_NO_OFFSET ab_carcass 962.4035 2124.8420 mt_Z_C6 f_carcass_C6[2] CREATE_OBJECT_NO_OFFSET ab_carcass 955.9693 2128.8171 mt_Z_C6 f_carcass_C6[3] CREATE_OBJECT_NO_OFFSET ab_carcass 955.9693 2131.6411 mt_Z_C6 f_carcass_C6[4] CREATE_OBJECT_NO_OFFSET ab_carcass 955.9693 2134.8420 mt_Z_C6 f_carcass_C6[5] // ############### // ## mafia guys // ############### LVAR_INT molotov_C6[2] molotov_particleFX_C6[3] script_fire_C6[6] script_fire_check_C6[3] LVAR_FLOAT mol_X_C6 mol_Y_C6 mol_Z_C6 mol_rot_X_C6 mol_rot_Y_C6 mol_rot_Z_C6 LVAR_FLOAT mol_speed_C6 mol_speed_Z_C6 mol_acc_C6 mol_acc_Z_C6 dis_thrown_C6 dis_thrown_Z_C6 LVAR_FLOAT time_scale_C6 number_of_mafia_C6 = 29 mafia_dead_C6 = 0 pointer_C6 = 0 WHILE pointer_C6 < number_of_mafia_C6 mafia_status_C6[pointer_C6] = -1 pointer_C6 ++ ENDWHILE // guy at start CREATE_CHAR PEDTYPE_MISSION2 VMAFF3 937.3484 2112.0779 1010.0312 mafia_C6[0] SET_CHAR_HEADING mafia_C6[0] 264.0 SET_CHAR_HEALTH mafia_C6[0] 200 SET_CHAR_MAX_HEALTH mafia_C6[0] 200 ADD_BLIP_FOR_CHAR mafia_C6[0] mafia_blip_C6[0] CHANGE_BLIP_DISPLAY mafia_blip_C6[0] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[0] 968.3954 2160.9651 1.0 TASK_STAY_IN_SAME_PLACE mafia_C6[0] TRUE GIVE_WEAPON_TO_CHAR mafia_C6[0] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[0] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[0] 30 SET_CHAR_DECISION_MAKER mafia_C6[0] empty_dm_C6 mafia_status_C6[0] = 0 // guy at start CREATE_CHAR PEDTYPE_MISSION2 VMAFF4 937.1350 2108.9404 1010.0312 mafia_C6[1] SET_CHAR_HEADING mafia_C6[1] 271.5 SET_CHAR_HEALTH mafia_C6[1] 200 SET_CHAR_MAX_HEALTH mafia_C6[1] 200 ADD_BLIP_FOR_CHAR mafia_C6[1] mafia_blip_C6[1] CHANGE_BLIP_DISPLAY mafia_blip_C6[1] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[1] 968.3954 2160.9651 1.0 TASK_STAY_IN_SAME_PLACE mafia_C6[1] TRUE GIVE_WEAPON_TO_CHAR mafia_C6[1] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[1] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[1] 30 SET_CHAR_DECISION_MAKER mafia_C6[1] empty_dm_C6 mafia_status_C6[1] = 0 // first guy to jump through the fire CREATE_CHAR PEDTYPE_MISSION2 VMAFF1 939.3190 2124.8882 1010.0312 mafia_C6[2] SET_CHAR_HEADING mafia_C6[2] 195.0 SET_CHAR_HEALTH mafia_C6[0] 200 SET_CHAR_MAX_HEALTH mafia_C6[0] 200 ADD_BLIP_FOR_CHAR mafia_C6[2] mafia_blip_C6[2] CHANGE_BLIP_DISPLAY mafia_blip_C6[2] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[2] 968.3954 2160.9651 1.0 GIVE_WEAPON_TO_CHAR mafia_C6[2] weapon_type_C6 0 SET_CURRENT_CHAR_WEAPON mafia_C6[2] weapon_type_C6 mafia_status_C6[2] = 0 OPEN_SEQUENCE_TASK sequence_C6 TASK_SET_CHAR_DECISION_MAKER -1 empty_dm_C6 TASK_TOGGLE_DUCK -1 FALSE TASK_STAND_STILL -1 800 TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_GO_STRAIGHT_TO_COORD -1 940.5833 2116.1689 1010.0312 PEDMOVE_RUN -1 TASK_JUMP -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 rosenberg_C6 TASK_SET_CHAR_DECISION_MAKER -1 attack_dm_C6 CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK mafia_C6[2] sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 // second guy to jump through the fire CREATE_CHAR PEDTYPE_MISSION2 VMAFF2 937.8190 2137.4871 1010.0303 mafia_C6[3] SET_CHAR_HEADING mafia_C6[3] 188.0 SET_CHAR_HEALTH mafia_C6[0] 200 SET_CHAR_MAX_HEALTH mafia_C6[0] 200 ADD_BLIP_FOR_CHAR mafia_C6[3] mafia_blip_C6[3] CHANGE_BLIP_DISPLAY mafia_blip_C6[3] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[3] 968.3954 2160.9651 1.0 GIVE_WEAPON_TO_CHAR mafia_C6[3] WEAPONTYPE_BASEBALLBAT 0 SET_CURRENT_CHAR_WEAPON mafia_C6[3] WEAPONTYPE_BASEBALLBAT SET_CHAR_ACCURACY mafia_C6[3] 35 mafia_status_C6[3] = 0 OPEN_SEQUENCE_TASK sequence_C6 TASK_SET_CHAR_DECISION_MAKER -1 empty_dm_C6 TASK_TOGGLE_DUCK -1 FALSE TASK_STAND_STILL -1 800 TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_GO_STRAIGHT_TO_COORD -1 940.5833 2116.1689 1010.0312 PEDMOVE_RUN -1 TASK_JUMP -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 rosenberg_C6 TASK_SET_CHAR_DECISION_MAKER -1 attack_dm_C6 CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK mafia_C6[3] sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 // guy who throws molotov in cutscene CREATE_CHAR PEDTYPE_MISSION2 VMAFF4 948.0 2124.0 1010.0312 mafia_C6[4] SET_CHAR_HEADING mafia_C6[4] 135.0 SET_CHAR_HEALTH mafia_C6[4] 200 SET_CHAR_MAX_HEALTH mafia_C6[4] 200 ADD_BLIP_FOR_CHAR mafia_C6[4] mafia_blip_C6[4] CHANGE_BLIP_DISPLAY mafia_blip_C6[4] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[4] 968.3954 2160.9651 1.0 TASK_STAY_IN_SAME_PLACE mafia_C6[4] TRUE SET_CHAR_ACCURACY mafia_C6[4] 30 mafia_status_C6[4] = 0 CREATE_OBJECT_NO_OFFSET MOLOTOV 948.0 2124.0 1010.0312 molotov_C6[0] SET_OBJECT_DYNAMIC molotov_C6[0] FALSE SET_OBJECT_COLLISION molotov_C6[0] FALSE TASK_PICK_UP_OBJECT mafia_C6[4] molotov_C6[0] 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL FALSE CREATE_FX_SYSTEM_ON_OBJECT fire molotov_C6[0] 0.0 0.0 0.6 TRUE molotov_particleFX_C6[0] OPEN_SEQUENCE_TASK sequence_C6 TASK_STAND_STILL -1 200 TASK_PLAY_ANIM -1 UZI_reload UZI 4.0 FALSE FALSE FALSE FALSE 300 TASK_PLAY_ANIM -1 WEAPON_start_throw GRENADE 10.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 WEAPON_throw GRENADE 10.0 FALSE FALSE FALSE FALSE -1 TASK_STAND_STILL -1 500 TASK_GO_TO_COORD_ANY_MEANS -1 944.0320 2119.9067 1010.0312 PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK mafia_C6[4] sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 CREATE_CHAR PEDTYPE_MISSION2 VMAFF2 940.7016 2138.9333 1010.0312 mafia_C6[5] SET_CHAR_HEADING mafia_C6[5] 180.0 SET_CHAR_HEALTH mafia_C6[5] 200 SET_CHAR_MAX_HEALTH mafia_C6[5] 200 ADD_BLIP_FOR_CHAR mafia_C6[5] mafia_blip_C6[5] CHANGE_BLIP_DISPLAY mafia_blip_C6[5] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[5] 968.3954 2160.9651 1.0 GIVE_WEAPON_TO_CHAR mafia_C6[5] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[5] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[5] 30 mafia_status_C6[5] = 0 seq_performer_C6 = mafia_C6[5] seq_duck_start_C6 = FALSE seq_duck_end_C6 = TRUE seq_goto_X_C6 = 940.8504 seq_goto_Y_C6 = 2120.2097 seq_goto_Z_C6 = 1010.0312 seq_heading_C6 = 184.0 GOSUB mission_casino6_SUB_ped_goto_and_stay CREATE_CHAR PEDTYPE_MISSION2 VMAFF1 938.9517 2132.4031 1010.0312 mafia_C6[6] SET_CHAR_HEADING mafia_C6[6] 170.0 SET_CHAR_HEALTH mafia_C6[6] 200 SET_CHAR_MAX_HEALTH mafia_C6[6] 200 ADD_BLIP_FOR_CHAR mafia_C6[6] mafia_blip_C6[6] CHANGE_BLIP_DISPLAY mafia_blip_C6[6] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[6] 968.3954 2160.9651 1.0 GIVE_WEAPON_TO_CHAR mafia_C6[6] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[6] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[6] 30 mafia_status_C6[6] = 0 seq_performer_C6 = mafia_C6[6] seq_duck_start_C6 = FALSE seq_duck_end_C6 = TRUE seq_goto_X_C6 = 933.7762 seq_goto_Y_C6 = 2120.5891 seq_goto_Z_C6 = 1010.0312 seq_heading_C6 = 230.0 GOSUB mission_casino6_SUB_ped_goto_and_stay // guy on machine CREATE_CHAR PEDTYPE_MISSION2 VMAFF3 942.4279 2129.2620 1011.2277 mafia_C6[7] SET_CHAR_HEADING mafia_C6[7] 180.0 SET_CHAR_HEALTH mafia_C6[7] 200 SET_CHAR_MAX_HEALTH mafia_C6[7] 200 ADD_BLIP_FOR_CHAR mafia_C6[7] mafia_blip_C6[7] CHANGE_BLIP_DISPLAY mafia_blip_C6[7] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[7] 968.3954 2160.9651 1.0 TASK_TOGGLE_DUCK mafia_C6[7] TRUE TASK_STAY_IN_SAME_PLACE mafia_C6[7] TRUE GIVE_WEAPON_TO_CHAR mafia_C6[7] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[7] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[7] 30 //SET_CHAR_DECISION_MAKER mafia_C6[7] attack_dm_C6 mafia_status_C6[7] = 0 CREATE_CHAR PEDTYPE_MISSION2 VMAFF2 941.8554 2141.0500 1010.0303 mafia_C6[8] SET_CHAR_HEADING mafia_C6[8] 198.3264 SET_CHAR_HEALTH mafia_C6[8] 200 SET_CHAR_MAX_HEALTH mafia_C6[8] 200 ADD_BLIP_FOR_CHAR mafia_C6[8] mafia_blip_C6[8] CHANGE_BLIP_DISPLAY mafia_blip_C6[8] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[8] 968.3954 2160.9651 1.0 GIVE_WEAPON_TO_CHAR mafia_C6[8] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[8] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[8] 30 mafia_status_C6[8] = 0 seq_performer_C6 = mafia_C6[8] seq_duck_start_C6 = FALSE seq_duck_end_C6 = TRUE seq_goto_X_C6 = 950.5577 seq_goto_Y_C6 = 2126.7339 seq_goto_Z_C6 = 1010.0312 seq_heading_C6 = 150.0 GOSUB mission_casino6_SUB_ped_goto_and_stay SET_FIXED_CAMERA_POSITION 946.2746 2122.1992 1011.2625 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 947.4866 2124.3857 1011.2625 JUMP_CUT SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF CLEAR_WANTED_LEVEL player1 SET_MAX_WANTED_LEVEL 0 cutscene_status_C6 = 0 WAIT 0 time_scale_C6 = 0.2 SET_TIME_SCALE time_scale_C6 TIMERA = 0 WHILE TIMERA < 100 WAIT 0 ENDWHILE DO_FADE 0 FADE_IN SKIP_CUTSCENE_START /* mol_speed_C6 = 0.5 * time_scale_C6 mol_acc_C6 = -0.0002 * time_scale_C6 dis_thrown_C6 = 0.8 * time_scale_C6 mol_speed_Z_C6 = 0.3 * time_scale_C6 mol_acc_Z_C6 = -0.03 * time_scale_C6 mol_acc_Z_C6 *= time_scale_C6 dis_thrown_Z_C6 = 0.0 */ mol_speed_C6 = 0.35 * time_scale_C6 mol_acc_C6 = -0.0001 * time_scale_C6 dis_thrown_C6 = 0.4 * time_scale_C6 mol_speed_Z_C6 = 0.2 * time_scale_C6 mol_acc_Z_C6 = -0.05 * time_scale_C6 mol_acc_Z_C6 *= time_scale_C6 dis_thrown_Z_C6 = 0.0 // TIMERA = 0 // WHILE TIMERA < 500 // WAIT 0 // ENDWHILE WHILE let_go_of_molotov = FALSE WAIT 0 IF NOT IS_CHAR_DEAD mafia_C6[4] IF IS_CHAR_PLAYING_ANIM mafia_C6[4] UZI_reload let_go_of_molotov = TRUE ENDIF ELSE let_go_of_molotov = TRUE ENDIF ENDWHILE PLAY_FX_SYSTEM molotov_particleFX_C6[0] //WHILE TIMERA < 1290 /* WHILE TIMERA < 1390 WAIT 0 ENDWHILE */ LVAR_INT let_go_of_molotov LVAR_FLOAT throw_anim_time WHILE let_go_of_molotov = FALSE WAIT 0 IF NOT IS_CHAR_DEAD mafia_C6[4] IF IS_CHAR_PLAYING_ANIM mafia_C6[4] WEAPON_throw let_go_of_molotov = TRUE ENDIF ELSE let_go_of_molotov = TRUE ENDIF ENDWHILE let_go_of_molotov = FALSE WHILE let_go_of_molotov = FALSE WAIT 0 IF NOT IS_CHAR_DEAD mafia_C6[4] IF IS_CHAR_PLAYING_ANIM mafia_C6[4] WEAPON_throw GET_CHAR_ANIM_CURRENT_TIME mafia_C6[4] WEAPON_throw throw_anim_time IF throw_anim_time >= 0.3 let_go_of_molotov = TRUE ENDIF ENDIF ELSE let_go_of_molotov = TRUE ENDIF ENDWHILE IF NOT IS_CHAR_DEAD mafia_C6[4] GET_OBJECT_COORDINATES molotov_C6[0] mol_X_C6 mol_Y_C6 mol_Z_C6 DROP_OBJECT mafia_C6[4] FALSE KILL_FX_SYSTEM molotov_particleFX_C6[0] DELETE_OBJECT molotov_C6[0] cutscene_status_C6 = 1 CREATE_OBJECT_NO_OFFSET MOLOTOV mol_X_C6 mol_Y_C6 mol_Z_C6 molotov_C6[1] CREATE_FX_SYSTEM_ON_OBJECT fire molotov_C6[1] 0.0 0.0 0.6 TRUE molotov_particleFX_C6[1] PLAY_FX_SYSTEM molotov_particleFX_C6[1] mol_rot_X_C6 = 0.0 mol_rot_Y_C6 = 0.0 mol_rot_Z_C6 = 0.0 ENDIF COS 241.0 cos_angle_C6 SIN 241.0 sin_angle_C6 LVAR_FLOAT camera_pos_dis_C6 camera_look_dis_C6 LVAR_FLOAT c6_mol_delta c6_time_step_scale z = 5000.0 WHILE NOT z <= 1010.0312 WAIT 0 // Hack for getting the time step scale GET_PC_MOUSE_MOVEMENT c6_time_step_scale c6_time_step_scale c6_time_step_scale /= time_scale_C6 mol_speed_C6 += mol_acc_C6 c6_mol_delta = mol_speed_C6 * c6_time_step_scale dis_thrown_C6 += c6_mol_delta // molotov new_X_C6 = dis_thrown_C6 * cos_angle_C6 new_Y_C6 = dis_thrown_C6 * sin_angle_C6 mol_speed_Z_C6 +=@ mol_acc_Z_C6 dis_thrown_Z_C6 +=@ mol_speed_Z_C6 x = mol_X_C6 + new_X_C6 y = mol_Y_C6 + new_Y_C6 z = mol_Z_C6 + dis_thrown_Z_C6 SET_OBJECT_COORDINATES molotov_C6[1] x y z mol_rot_X_C6 +=@ 1.0 mol_rot_Y_C6 +=@ 1.0 mol_rot_Z_C6 +=@ 1.0 SET_OBJECT_ROTATION molotov_C6[1] mol_rot_X_C6 mol_rot_Y_C6 mol_rot_Z_C6 // camera camera_pos_dis_C6 = dis_thrown_C6 + 1.5 camera_look_dis_C6 = dis_thrown_C6 - 1.0 new_X_C6 = camera_pos_dis_C6 * cos_angle_C6 new_Y_C6 = camera_pos_dis_C6 * sin_angle_C6 x = mol_X_C6 + new_X_C6 y = mol_Y_C6 + new_Y_C6 SET_FIXED_CAMERA_POSITION x y mol_Z_C6 0.0 0.0 0.0 new_X_C6 = camera_look_dis_C6 * cos_angle_C6 new_Y_C6 = camera_look_dis_C6 * sin_angle_C6 x = mol_X_C6 + new_X_C6 y = mol_Y_C6 + new_Y_C6 POINT_CAMERA_AT_POINT x y mol_Z_C6 JUMP_CUT // molotov has landed IF z <= 1010.5 FREEZE_OBJECT_POSITION molotov_C6[1] TRUE ENDIF ENDWHILE // kill molotov and make explosion KILL_FX_SYSTEM molotov_particleFX_C6[1] DELETE_OBJECT molotov_C6[1] MARK_MODEL_AS_NO_LONGER_NEEDED MOLOTOV cutscene_status_C6 = 2 CREATE_FX_SYSTEM explosion_molotov x y 1010.0 TRUE molotov_particleFX_C6[2] PLAY_AND_KILL_FX_SYSTEM molotov_particleFX_C6[2] SET_HEATHAZE_EFFECT TRUE START_SCRIPT_FIRE 940.35 2114.0 1010.03 0 2 script_fire_C6[0] cutscene_status_C6 = 3 START_SCRIPT_FIRE 941.1 2114.0 1010.03 0 1 script_fire_C6[1] cutscene_status_C6 = 4 START_SCRIPT_FIRE 941.5 2114.0 1010.03 0 1 script_fire_C6[2] cutscene_status_C6 = 5 START_SCRIPT_FIRE 942.3 2114.0 1010.03 0 1 script_fire_C6[3] cutscene_status_C6 = 6 START_SCRIPT_FIRE 942.9 2114.0 1010.03 0 1 script_fire_C6[4] cutscene_status_C6 = 7 START_SCRIPT_FIRE 943.65 2114.0 1010.03 0 2 script_fire_C6[5] cutscene_status_C6 = 8 // create big fire here TIMERA = 0 WHILE TIMERA < 220 WAIT 0 // Hack for getting the time step scale GET_PC_MOUSE_MOVEMENT c6_time_step_scale c6_time_step_scale c6_time_step_scale /= time_scale_C6 c6_mol_delta = mol_speed_C6 * c6_time_step_scale dis_thrown_C6 += c6_mol_delta camera_pos_dis_C6 = dis_thrown_C6 + 1.5 camera_look_dis_C6 = dis_thrown_C6 - 1.0 new_X_C6 = camera_pos_dis_C6 * cos_angle_C6 new_Y_C6 = camera_pos_dis_C6 * sin_angle_C6 x = mol_X_C6 + new_X_C6 y = mol_Y_C6 + new_Y_C6 SET_FIXED_CAMERA_POSITION x y mol_Z_C6 0.0 0.0 0.0 new_X_C6 = camera_look_dis_C6 * cos_angle_C6 new_Y_C6 = camera_look_dis_C6 * sin_angle_C6 x = mol_X_C6 + new_X_C6 y = mol_Y_C6 + new_Y_C6 POINT_CAMERA_AT_POINT x y mol_Z_C6 JUMP_CUT ENDWHILE LVAR_FLOAT camera_angle_C6 camera_angle_C6 = 61.0 GET_ACTIVE_CAMERA_COORDINATES x2_C6 y2_C6 z2_C6 TIMERA = 0 WHILE TIMERA < 1000 WAIT 0 ENDWHILE TIMERA = 0 WHILE TIMERA < 700 WAIT 0 // Hack for getting the time step scale GET_PC_MOUSE_MOVEMENT c6_time_step_scale c6_time_step_scale c6_time_step_scale /= time_scale_C6 COS camera_angle_C6 cos_angle_C6 SIN camera_angle_C6 sin_angle_C6 new_X_C6 = camera_look_dis_C6 * cos_angle_C6 new_Y_C6 = camera_look_dis_C6 * sin_angle_C6 x = x2_C6 + new_X_C6 y = y2_C6 + new_Y_C6 POINT_CAMERA_AT_POINT x y mol_Z_C6 JUMP_CUT c6_mol_delta = 0.25 * c6_time_step_scale camera_angle_C6 -= c6_mol_delta ENDWHILE TIMERA = 0 WHILE TIMERA < 1000 WAIT 0 ENDWHILE SKIP_CUTSCENE_END CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 // cutscene tidyup if it was skipped SWITCH cutscene_status_C6 CASE 0 IF NOT IS_CHAR_DEAD mafia_C6[4] DROP_OBJECT mafia_C6[4] FALSE ENDIF KILL_FX_SYSTEM molotov_particleFX_C6[0] DELETE_OBJECT molotov_C6[0] CASE 1 KILL_FX_SYSTEM molotov_particleFX_C6[1] DELETE_OBJECT molotov_C6[1] MARK_MODEL_AS_NO_LONGER_NEEDED MOLOTOV CASE 2 START_SCRIPT_FIRE 940.35 2114.0 1010.03 0 2 script_fire_C6[0] CASE 3 START_SCRIPT_FIRE 941.1 2114.0 1010.03 0 1 script_fire_C6[1] CASE 4 START_SCRIPT_FIRE 941.5 2114.0 1010.03 0 1 script_fire_C6[2] CASE 5 START_SCRIPT_FIRE 942.3 2114.0 1010.03 0 1 script_fire_C6[3] CASE 6 START_SCRIPT_FIRE 942.9 2114.0 1010.03 0 1 script_fire_C6[4] CASE 7 START_SCRIPT_FIRE 943.65 2114.0 1010.03 0 2 script_fire_C6[5] BREAK ENDSWITCH KILL_FX_SYSTEM molotov_particleFX_C6[2] CLEAR_HELP PRINT_HELP CAS6_G0 TIMERA = 0 SET_HEATHAZE_EFFECT FALSE SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SWITCH_ENTRY_EXIT abatoir FALSE // script fire control script_fire_check_C6[0] = 0 script_fire_check_C6[1] = 0 script_fire_check_C6[2] = 0 SET_TIME_SCALE 1.0 IF NOT IS_CHAR_DEAD mafia_C6[0] mafia_status_C6[0] = 0 seq_performer_C6 = mafia_C6[0] seq_duck_start_C6 = FALSE seq_goto_X_C6 = 945.2795 seq_goto_Y_C6 = 2108.6575 seq_goto_Z_C6 = 1010.0312 seq_attack_C6 = scplayer GOSUB mission_casino6_SUB_ped_goto_and_attack ENDIF IF NOT IS_CHAR_DEAD mafia_C6[1] mafia_status_C6[1] = 0 seq_performer_C6 = mafia_C6[1] seq_duck_start_C6 = FALSE seq_goto_X_C6 = 937.1350 seq_goto_Y_C6 = 2108.9404 seq_goto_Z_C6 = 1010.0312 seq_attack_C6 = scplayer GOSUB mission_casino6_SUB_ped_goto_and_attack ENDIF IF NOT IS_CHAR_DEAD mafia_C6[2] CLEAR_CHAR_TASKS mafia_C6[2] SET_CHAR_COORDINATES mafia_C6[2] 941.4810 2111.8875 1010.0312 SET_CHAR_HEADING mafia_C6[2] 260.0 IF NOT IS_CHAR_DEAD rosenberg_C6 TASK_KILL_CHAR_ON_FOOT mafia_C6[2] rosenberg_C6 ENDIF ENDIF IF NOT IS_CHAR_DEAD mafia_C6[3] CLEAR_CHAR_TASKS mafia_C6[3] SET_CHAR_COORDINATES mafia_C6[3] 939.6515 2123.3062 1010.0312 SET_CHAR_HEADING mafia_C6[3] 187.5 OPEN_SEQUENCE_TASK sequence_C6 TASK_SET_CHAR_DECISION_MAKER -1 empty_dm_C6 TASK_TOGGLE_DUCK -1 FALSE TASK_STAND_STILL -1 800 TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_GO_STRAIGHT_TO_COORD -1 940.5833 2116.1689 1010.0312 PEDMOVE_RUN -1 TASK_JUMP -1 TRUE IF NOT IS_CHAR_DEAD rosenberg_C6 TASK_KILL_CHAR_ON_FOOT -1 rosenberg_C6 ENDIF TASK_SET_CHAR_DECISION_MAKER -1 attack_dm_C6 CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK mafia_C6[3] sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 ENDIF IF NOT IS_CHAR_DEAD mafia_C6[4] CLEAR_CHAR_TASKS mafia_C6[4] SET_CHAR_COORDINATES mafia_C6[4] 944.0320 2119.9067 1010.0312 SET_CHAR_HEADING mafia_C6[4] 160.0 TASK_TOGGLE_DUCK mafia_C6[4] TRUE TASK_STAY_IN_SAME_PLACE mafia_C6[4] TRUE GIVE_WEAPON_TO_CHAR mafia_C6[4] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[4] WEAPONTYPE_MP5 //SET_CHAR_DECISION_MAKER mafia_C6[4] attack_dm_C6 TASK_KILL_CHAR_ON_FOOT mafia_C6[4] scplayer ENDIF IF NOT IS_CHAR_DEAD mafia_C6[7] TASK_KILL_CHAR_ON_FOOT mafia_C6[7] scplayer ENDIF $audio_text_label_C6[0] = &CAS6_EP // shit, they have started a fire to keep us back audio_sound_label_C6[0] = SOUND_CAS6_EP audio_speaker_C6[0] = scplayer $audio_text_label_C6[1] = &CAS6_EQ // there must be an extinguisher here somewhere find it audio_sound_label_C6[1] = SOUND_CAS6_EQ audio_speaker_C6[1] = scplayer $audio_text_label_C6[2] = &CAS6_ED // Carl, leave no witnesses audio_sound_label_C6[2] = SOUND_CAS6_ED audio_speaker_C6[2] = rosenberg_C6 $audio_text_label_C6[3] = &CAS6_DA // What did I say what did I do audio_sound_label_C6[3] = SOUND_CAS6_DA audio_speaker_C6[3] = rosenberg_C6 $audio_text_label_C6[4] = &CAS6_DB // Nothing My bad, Now take cover audio_sound_label_C6[4] = SOUND_CAS6_DB audio_speaker_C6[4] = scplayer $audio_text_label_C6[5] = &CAS6_ET // This is so exciting tommy audio_sound_label_C6[5] = SOUND_CAS6_ET audio_speaker_C6[5] = rosenberg_C6 $audio_text_label_C6[6] = &CAS6_EU // who the fuck is tommy audio_sound_label_C6[6] = SOUND_CAS6_EU audio_speaker_C6[6] = scplayer $audio_text_label_C6[7] = &CAS6_EA // Holy fuck what is it about my luck audio_sound_label_C6[7] = SOUND_CAS6_EA audio_speaker_C6[7] = rosenberg_C6 $audio_text_label_C6[8] = &CAS6_EB // Im screwed audio_sound_label_C6[8] = SOUND_CAS6_EB audio_speaker_C6[8] = rosenberg_C6 $audio_text_label_C6[9] = &CAS6_EC // We gotta do something audio_sound_label_C6[9] = SOUND_CAS6_EC audio_speaker_C6[9] = rosenberg_C6 $audio_text_label_C6[10]= &CAS6_GH // Well done CJ audio_sound_label_C6[10]= SOUND_CAS6_GH audio_speaker_C6[10] = rosenberg_C6 $audio_text_label_C6[11]= &CAS6_GJ // Shit this is insane audio_sound_label_C6[11]= SOUND_CAS6_GJ audio_speaker_C6[11] = rosenberg_C6 $audio_text_label_C6[12]= &CAS6_GK // Im never doing drigs again, never ever ever ever audio_sound_label_C6[12]= SOUND_CAS6_GK audio_speaker_C6[12] = rosenberg_C6 $audio_text_label_C6[13]= &CAS6_FM // The exit is through the stock house audio_sound_label_C6[13]= SOUND_CAS6_FM audio_speaker_C6[13] = rosenberg_C6 // ###################################### // ## // ## inside the meat factory MAIN LOOP // ## // ###################################### GET_GAME_TIMER last_frame_time_C6 CHECKPOINT_SAVE 99 LVAR_INT active_area_C6 mission_casino6_MAIN_inside_abattoir: WAIT 0 IF NOT IS_CHAR_DEAD rosenberg_C6 // TEMP IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S SWITCH_ENTRY_EXIT abatoir TRUE entry_exit_area = 0 entry_exit_status = FALSE $entry_exit_name = abatoir START_NEW_SCRIPT switch_entry_exit_after_mission GOTO mission_casino6_PASSED ENDIF // check for player and rosenberg getting trapped IF fail_text_flag_C6 = 2 GOTO mission_casino6_FAILED ENDIF //timers GET_GAME_TIMER this_frame_time_C6 time_diff_C6 = this_frame_time_C6 - last_frame_time_C6 last_frame_time_C6 = this_frame_time_C6 // update custom timers rosenberg_timer_C6 += time_diff_C6 rosenberg_text_timer_C6 += time_diff_C6 mt_timer_C6 += time_diff_C6 f_timer_C6 += time_diff_C6 h_text_timer_C6 += time_diff_C6 // status controllers GOSUB mission_casino6_SUB_abattoir_status GOSUB mission_casino6_SUB_rosenberg_status // make mafia lock player and/or rosenberg in freezer GOSUB mission_casino6_SUB_mafia_freezer_check //ambient GOSUB mission_casino6_SUB_track_movement GOSUB mission_casino6_SUB_freezer_door IF NOT heathaze_active_C6 = 2 // all fires have been put out GOSUB mission_casino6_SUB_heathaze_effect ENDIF // update rosenbergs health counter GET_CHAR_HEALTH rosenberg_C6 pointer_C6 rosenbergs_health_C6 = pointer_C6 / 3 // remove mafia blips if dead IF NOT mafia_dead_C6 = number_of_mafia_C6 pointer_C6 = 0 WHILE pointer_C6 < number_of_mafia_C6 IF NOT mafia_status_C6[pointer_C6] = -1 IF IS_CHAR_DEAD mafia_C6[pointer_C6] MARK_CHAR_AS_NO_LONGER_NEEDED mafia_C6[pointer_C6] REMOVE_BLIP mafia_blip_C6[pointer_C6] mafia_status_C6[pointer_C6] = -1 mafia_dead_C6 ++ IF mafia_dead_C6 = number_of_mafia_C6 SET_CHAR_DECISION_MAKER rosenberg_C6 empty_dm_C6 ENDIF ENDIF ENDIF pointer_C6 ++ ENDWHILE ELSE GOSUB mission_casino6_SUB_game_text GET_AREA_VISIBLE active_area_C6 IF active_area_C6 = 0 GOTO mission_casino6_MAIN_drive_back_to_casino ENDIF ENDIF // ambient audio GOSUB mission_casino6_SUB_ambient_audio // freezer health check GOSUB mission_casino6_SUB_freezer_health_C6 // help text GOSUB mission_casino6_SUB_help_text ELSE IF fail_text_flag_C6 = 0 fail_text_flag_C6 = 1 $fail_text_C6 = CAS6_F0 ENDIF GOTO mission_casino6_FAILED ENDIF GOTO mission_casino6_MAIN_inside_abattoir // #################### // ## abattoir status // #################### // controls where the player is inside the abattoir and controls rosenberg and mafia accordingly LVAR_INT abattoir_status_C6 mission_casino6_SUB_abattoir_status: SWITCH abattoir_status_C6 CASE 0 IF IS_CHAR_IN_AREA_2D scplayer 935.0 2114.0 947.0 2116.0 FALSE abattoir_status_C6 ++ CREATE_CHAR PEDTYPE_MISSION2 VMAFF1 944.9470 2146.8210 1010.0303 mafia_C6[9] SET_CHAR_HEADING mafia_C6[9] 180.0 SET_CHAR_HEALTH mafia_C6[9] 200 SET_CHAR_MAX_HEALTH mafia_C6[9] 200 ADD_BLIP_FOR_CHAR mafia_C6[9] mafia_blip_C6[9] CHANGE_BLIP_DISPLAY mafia_blip_C6[9] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[9] 968.3954 2160.9651 1.0 GIVE_WEAPON_TO_CHAR mafia_C6[9] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[9] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[9] 35 mafia_status_C6[9] = 0 seq_performer_C6 = mafia_C6[9] seq_duck_start_C6 = FALSE seq_duck_end_C6 = FALSE seq_goto_X_C6 = 950.4513 seq_goto_Y_C6 = 2133.9385 seq_goto_Z_C6 = 1010.0303 seq_heading_C6 = 156.0 GOSUB mission_casino6_SUB_ped_goto_and_stay CREATE_CHAR PEDTYPE_MISSION2 VMAFF2 938.7369 2146.9275 1010.0312 mafia_C6[10] SET_CHAR_HEADING mafia_C6[10] 180.0 SET_CHAR_HEALTH mafia_C6[10] 200 SET_CHAR_MAX_HEALTH mafia_C6[10] 200 ADD_BLIP_FOR_CHAR mafia_C6[10] mafia_blip_C6[10] CHANGE_BLIP_DISPLAY mafia_blip_C6[10] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[10] 968.3954 2160.9651 1.0 GIVE_WEAPON_TO_CHAR mafia_C6[10] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[10] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[10] 40 mafia_status_C6[10] = 0 seq_performer_C6 = mafia_C6[10] seq_duck_start_C6 = FALSE seq_duck_end_C6 = FALSE seq_goto_X_C6 = 935.2033 seq_goto_Y_C6 = 2135.9231 seq_goto_Z_C6 = 1010.0312 seq_heading_C6 = 195.0 GOSUB mission_casino6_SUB_ped_goto_and_stay CREATE_CHAR PEDTYPE_MISSION2 VMAFF3 938.8906 2150.7195 1010.0312 mafia_C6[11] SET_CHAR_HEADING mafia_C6[11] 222.0 SET_CHAR_HEALTH mafia_C6[11] 200 SET_CHAR_MAX_HEALTH mafia_C6[11] 200 ADD_BLIP_FOR_CHAR mafia_C6[11] mafia_blip_C6[11] CHANGE_BLIP_DISPLAY mafia_blip_C6[11] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[11] 968.3954 2160.9651 1.0 GIVE_WEAPON_TO_CHAR mafia_C6[11] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[11] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[11] 35 mafia_status_C6[11] = 0 seq_performer_C6 = mafia_C6[11] seq_duck_start_C6 = FALSE seq_goto_X_C6 = 941.6102 seq_goto_Y_C6 = 2144.1328 seq_goto_Z_C6 = 1010.0303 seq_attack_C6 = scplayer GOSUB mission_casino6_SUB_ped_goto_and_attack CREATE_CHAR PEDTYPE_MISSION2 VMAFF2 951.4207 2146.3667 1010.0303 mafia_C6[12] SET_CHAR_HEADING mafia_C6[12] 148.0 ADD_BLIP_FOR_CHAR mafia_C6[12] mafia_blip_C6[12] CHANGE_BLIP_DISPLAY mafia_blip_C6[12] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[12] 968.3954 2160.9651 1.0 GIVE_WEAPON_TO_CHAR mafia_C6[12] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[12] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[12] 40 SET_CHAR_SHOOT_RATE mafia_C6[12] 60 mafia_status_C6[12] = 0 seq_performer_C6 = mafia_C6[12] seq_duck_start_C6 = FALSE seq_duck_end_C6 = FALSE seq_goto_X_C6 = 946.5566 seq_goto_Y_C6 = 2141.3943 seq_goto_Z_C6 = 1010.0312 seq_heading_C6 = 180.0 GOSUB mission_casino6_SUB_ped_goto_and_stay CREATE_CHAR PEDTYPE_MISSION2 VMAFF3 932.7236 2146.7837 1010.0312 mafia_C6[13] SET_CHAR_HEADING mafia_C6[13] 220.0 SET_CHAR_HEALTH mafia_C6[13] 150 SET_CHAR_MAX_HEALTH mafia_C6[13] 150 ADD_BLIP_FOR_CHAR mafia_C6[13] mafia_blip_C6[13] CHANGE_BLIP_DISPLAY mafia_blip_C6[13] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[13] 968.3954 2160.9651 1.0 GIVE_WEAPON_TO_CHAR mafia_C6[13] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[13] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[13] 35 mafia_status_C6[13] = 0 seq_performer_C6 = mafia_C6[13] seq_duck_start_C6 = FALSE seq_duck_end_C6 = FALSE seq_goto_X_C6 = 937.0684 seq_goto_Y_C6 = 2141.9956 seq_goto_Z_C6 = 1010.0312 seq_heading_C6 = 180.0 GOSUB mission_casino6_SUB_ped_goto_and_stay IF NOT IS_CHAR_DEAD mafia_C6[0] IF rosenberg_status_C6 < 2 seq_goto_X_C6 = 940.4404 seq_goto_Y_C6 = 2111.7808 seq_goto_Z_C6 = 1010.0312 seq_heading_C6 = 350.3034 ELSE seq_goto_X_C6 = 959.4180 seq_goto_Y_C6 = 2104.8674 seq_goto_Z_C6 = 1010.0303 seq_heading_C6 = 167.1333 ENDIF seq_performer_C6 = mafia_C6[0] seq_duck_start_C6 = FALSE seq_duck_end_C6 = TRUE CLEAR_CHAR_TASKS mafia_C6[0] GOSUB mission_casino6_SUB_ped_goto_and_attack_rosenberg ENDIF IF NOT IS_CHAR_DEAD mafia_C6[1] IF rosenberg_status_C6 < 2 seq_goto_X_C6 = 943.3311 seq_goto_Y_C6 = 2111.7134 seq_goto_Z_C6 = 1010.0312 seq_heading_C6 = 0.2979 ELSE seq_performer_C6 = mafia_C6[1] seq_duck_start_C6 = FALSE seq_duck_end_C6 = TRUE CLEAR_CHAR_TASKS mafia_C6[1] IF NOT IS_CHAR_DEAD mafia_C6[0] seq_goto_X_C6 = 943.3311 seq_goto_Y_C6 = 2111.7134 seq_goto_Z_C6 = 1010.0312 seq_heading_C6 = 0.2979 GOSUB mission_casino6_SUB_ped_goto_and_stay ELSE seq_goto_X_C6 = 959.4180 seq_goto_Y_C6 = 2104.8674 seq_goto_Z_C6 = 1010.0303 seq_heading_C6 = 167.1333 GOSUB mission_casino6_SUB_ped_goto_and_attack_rosenberg ENDIF ENDIF ENDIF ENDIF BREAK CASE 1 IF IS_CHAR_IN_AREA_2D scplayer 930.0 2120.0 952.25 2125.0 FALSE OR IS_CHAR_IN_AREA_2D scplayer 952.25 2140.0 967.0 2147.0 FALSE abattoir_status_C6 ++ // guys with baseball bats CREATE_CHAR PEDTYPE_MISSION2 VMAFF1 951.3571 2143.1597 1010.0312 mafia_C6[14] SET_CHAR_HEADING mafia_C6[14] 90.0 SET_CHAR_HEALTH mafia_C6[14] 200 SET_CHAR_MAX_HEALTH mafia_C6[14] 200 ADD_BLIP_FOR_CHAR mafia_C6[14] mafia_blip_C6[14] CHANGE_BLIP_DISPLAY mafia_blip_C6[14] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[14] 968.3954 2160.9651 1.0 GIVE_WEAPON_TO_CHAR mafia_C6[14] WEAPONTYPE_BASEBALLBAT 3000 mafia_status_C6[14] = 0 seq_performer_C6 = mafia_C6[14] seq_duck_start_C6 = FALSE seq_goto_X_C6 = 943.5978 seq_goto_Y_C6 = 2138.5715 seq_goto_Z_C6 = 1010.0312 seq_attack_C6 = scplayer GOSUB mission_casino6_SUB_ped_goto_and_attack CREATE_CHAR PEDTYPE_MISSION2 VMAFF4 932.6479 2144.1184 1010.0312 mafia_C6[15] SET_CHAR_HEADING mafia_C6[15] 270.0 SET_CHAR_HEALTH mafia_C6[15] 200 SET_CHAR_MAX_HEALTH mafia_C6[15] 200 ADD_BLIP_FOR_CHAR mafia_C6[15] mafia_blip_C6[15] CHANGE_BLIP_DISPLAY mafia_blip_C6[15] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[15] 968.3954 2160.9651 1.0 GIVE_WEAPON_TO_CHAR mafia_C6[15] WEAPONTYPE_BASEBALLBAT 3000 mafia_status_C6[15] = 0 seq_performer_C6 = mafia_C6[15] seq_duck_start_C6 = FALSE seq_goto_X_C6 = 940.2230 seq_goto_Y_C6 = 2139.4192 seq_goto_Z_C6 = 1010.0312 seq_attack_C6 = scplayer GOSUB mission_casino6_SUB_ped_goto_and_attack CREATE_CHAR PEDTYPE_MISSION2 VMAFF3 950.7346 2156.7163 1010.0303 mafia_C6[16] SET_CHAR_HEADING mafia_C6[16] 135.0 SET_CHAR_HEALTH mafia_C6[16] 150 SET_CHAR_MAX_HEALTH mafia_C6[16] 150 ADD_BLIP_FOR_CHAR mafia_C6[16] mafia_blip_C6[16] CHANGE_BLIP_DISPLAY mafia_blip_C6[16] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[16] 968.3954 2160.9651 1.0 TASK_STAY_IN_SAME_PLACE mafia_C6[16] TRUE GIVE_WEAPON_TO_CHAR mafia_C6[16] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[16] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[16] 35 SET_CHAR_DECISION_MAKER mafia_C6[16] attack_dm_C6 TASK_KILL_CHAR_ON_FOOT mafia_C6[16] scplayer mafia_status_C6[16] = 0 CREATE_CHAR PEDTYPE_MISSION2 VMAFF2 933.3263 2160.1885 1010.0312 mafia_C6[17] SET_CHAR_HEADING mafia_C6[17] 214.0 ADD_BLIP_FOR_CHAR mafia_C6[17] mafia_blip_C6[17] CHANGE_BLIP_DISPLAY mafia_blip_C6[17] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[17] 968.3954 2160.9651 1.0 TASK_STAY_IN_SAME_PLACE mafia_C6[17] TRUE GIVE_WEAPON_TO_CHAR mafia_C6[17] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[17] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[17] 40 SET_CHAR_DECISION_MAKER mafia_C6[17] attack_dm_C6 TASK_KILL_CHAR_ON_FOOT mafia_C6[17] scplayer mafia_status_C6[17] = 0 CREATE_CHAR PEDTYPE_MISSION2 VMAFF1 942.5138 2165.0999 1011.2277 mafia_C6[18] SET_CHAR_HEADING mafia_C6[18] 180.0 SET_CHAR_HEALTH mafia_C6[18] 150 SET_CHAR_MAX_HEALTH mafia_C6[18] 150 ADD_BLIP_FOR_CHAR mafia_C6[18] mafia_blip_C6[18] CHANGE_BLIP_DISPLAY mafia_blip_C6[18] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[18] 968.3954 2160.9651 1.0 TASK_STAY_IN_SAME_PLACE mafia_C6[18] TRUE GIVE_WEAPON_TO_CHAR mafia_C6[18] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[18] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[18] 35 SET_CHAR_SHOOT_RATE mafia_C6[18] 60 //SET_CHAR_DECISION_MAKER mafia_C6[18] attack_dm_C6 TASK_TOGGLE_DUCK mafia_C6[18] TRUE TASK_KILL_CHAR_ON_FOOT mafia_C6[18] scplayer mafia_status_C6[18] = 0 CREATE_CHAR PEDTYPE_MISSION2 VMAFF2 950.2886 2172.3796 1010.0303 mafia_C6[19] SET_CHAR_HEADING mafia_C6[19] 163.5 ADD_BLIP_FOR_CHAR mafia_C6[19] mafia_blip_C6[19] CHANGE_BLIP_DISPLAY mafia_blip_C6[19] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[19] 968.3954 2160.9651 1.0 TASK_STAY_IN_SAME_PLACE mafia_C6[19] TRUE GIVE_WEAPON_TO_CHAR mafia_C6[19] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[19] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[19] 40 SET_CHAR_DECISION_MAKER mafia_C6[19] attack_dm_C6 TASK_KILL_CHAR_ON_FOOT mafia_C6[19] scplayer mafia_status_C6[19] = 0 CREATE_CHAR PEDTYPE_MISSION2 VMAFF3 934.5824 2172.3184 1010.0303 mafia_C6[20] SET_CHAR_HEADING mafia_C6[20] 197.0 SET_CHAR_HEALTH mafia_C6[20] 150 SET_CHAR_MAX_HEALTH mafia_C6[20] 150 ADD_BLIP_FOR_CHAR mafia_C6[20] mafia_blip_C6[20] CHANGE_BLIP_DISPLAY mafia_blip_C6[20] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[20] 968.3954 2160.9651 1.0 TASK_STAY_IN_SAME_PLACE mafia_C6[20] TRUE GIVE_WEAPON_TO_CHAR mafia_C6[20] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[20] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[20] 35 SET_CHAR_DECISION_MAKER mafia_C6[20] attack_dm_C6 TASK_KILL_CHAR_ON_FOOT mafia_C6[20] scplayer mafia_status_C6[20] = 0 ENDIF BREAK CASE 2 IF IS_CHAR_IN_AREA_2D scplayer 951.5627 2146.9443 932.6420 2141.2834 FALSE abattoir_status_C6 ++ CREATE_CHAR PEDTYPE_MISSION2 VMAFF4 954.0464 2157.8252 1010.0312 mafia_C6[21] SET_CHAR_HEADING mafia_C6[21] 30.0 SET_CHAR_HEALTH mafia_C6[21] 150 SET_CHAR_MAX_HEALTH mafia_C6[21] 150 ADD_BLIP_FOR_CHAR mafia_C6[21] mafia_blip_C6[21] CHANGE_BLIP_DISPLAY mafia_blip_C6[21] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[21] 968.3954 2160.9651 1.0 GIVE_WEAPON_TO_CHAR mafia_C6[21] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[21] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[21] 40 mafia_status_C6[21] = 0 seq_performer_C6 = mafia_C6[21] seq_duck_start_C6 = FALSE seq_goto_X_C6 = 944.0997 seq_goto_Y_C6 = 2173.7312 seq_goto_Z_C6 = 1010.0303 seq_attack_C6 = scplayer GOSUB mission_casino6_SUB_ped_goto_and_attack CREATE_CHAR PEDTYPE_MISSION2 VMAFF1 952.8911 2165.8428 1010.0312 mafia_C6[22] SET_CHAR_HEADING mafia_C6[22] 180.0 SET_CHAR_HEALTH mafia_C6[22] 150 SET_CHAR_MAX_HEALTH mafia_C6[22] 150 ADD_BLIP_FOR_CHAR mafia_C6[22] mafia_blip_C6[22] CHANGE_BLIP_DISPLAY mafia_blip_C6[22] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[22] 968.3954 2160.9651 1.0 GIVE_WEAPON_TO_CHAR mafia_C6[22] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[22] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[22] 35 SET_CHAR_SHOOT_RATE mafia_C6[22] 70 mafia_status_C6[22] = 0 seq_performer_C6 = mafia_C6[22] seq_duck_start_C6 = FALSE seq_goto_X_C6 = 949.5583 seq_goto_Y_C6 = 2159.8477 seq_goto_Z_C6 = 1010.0312 seq_attack_C6 = scplayer GOSUB mission_casino6_SUB_ped_goto_and_attack CREATE_CHAR PEDTYPE_MISSION2 VMAFF3 953.7090 2167.3530 1010.0312 mafia_C6[23] SET_CHAR_HEADING mafia_C6[23] 180.0 SET_CHAR_HEALTH mafia_C6[23] 150 SET_CHAR_MAX_HEALTH mafia_C6[23] 150 ADD_BLIP_FOR_CHAR mafia_C6[23] mafia_blip_C6[23] CHANGE_BLIP_DISPLAY mafia_blip_C6[23] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[23] 968.3954 2160.9651 1.0 GIVE_WEAPON_TO_CHAR mafia_C6[23] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[23] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[23] 40 mafia_status_C6[23] = 0 seq_performer_C6 = mafia_C6[23] seq_duck_start_C6 = FALSE seq_goto_X_C6 = 947.7441 seq_goto_Y_C6 = 2162.7581 seq_goto_Z_C6 = 1010.0312 seq_attack_C6 = scplayer GOSUB mission_casino6_SUB_ped_goto_and_attack // guys in the end room CREATE_CHAR PEDTYPE_MISSION2 VMAFF4 955.1686 2155.9680 1013.6431 mafia_C6[24] SET_CHAR_HEADING mafia_C6[24] 25.0 SET_CHAR_HEALTH mafia_C6[24] 150 SET_CHAR_MAX_HEALTH mafia_C6[24] 150 ADD_BLIP_FOR_CHAR mafia_C6[24] mafia_blip_C6[24] CHANGE_BLIP_DISPLAY mafia_blip_C6[24] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[24] 968.3954 2160.9651 1.0 TASK_STAY_IN_SAME_PLACE mafia_C6[24] TRUE GIVE_WEAPON_TO_CHAR mafia_C6[24] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[24] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[24] 35 TASK_TOGGLE_DUCK mafia_C6[24] TRUE TASK_KILL_CHAR_ON_FOOT mafia_C6[24] scplayer mafia_status_C6[24] = 0 CREATE_CHAR PEDTYPE_MISSION2 VMAFF1 957.3302 2172.3586 1011.8324 mafia_C6[25] SET_CHAR_HEADING mafia_C6[25] 88.0 SET_CHAR_HEALTH mafia_C6[25] 150 SET_CHAR_MAX_HEALTH mafia_C6[25] 150 ADD_BLIP_FOR_CHAR mafia_C6[25] mafia_blip_C6[25] CHANGE_BLIP_DISPLAY mafia_blip_C6[25] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[25] 968.3954 2160.9651 1.0 TASK_STAY_IN_SAME_PLACE mafia_C6[25] TRUE GIVE_WEAPON_TO_CHAR mafia_C6[25] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[25] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[25] 40 TASK_TOGGLE_DUCK mafia_C6[25] TRUE TASK_KILL_CHAR_ON_FOOT mafia_C6[25] scplayer mafia_status_C6[25] = 0 CREATE_CHAR PEDTYPE_MISSION2 VMAFF3 955.5260 2175.9839 1010.0312 mafia_C6[26] SET_CHAR_HEADING mafia_C6[26] 169.0 SET_CHAR_HEALTH mafia_C6[26] 150 SET_CHAR_MAX_HEALTH mafia_C6[26] 150 ADD_BLIP_FOR_CHAR mafia_C6[26] mafia_blip_C6[26] CHANGE_BLIP_DISPLAY mafia_blip_C6[26] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[26] 968.3954 2160.9651 1.0 TASK_STAY_IN_SAME_PLACE mafia_C6[26] TRUE GIVE_WEAPON_TO_CHAR mafia_C6[26] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[26] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[26] 35 TASK_TOGGLE_DUCK mafia_C6[26] TRUE TASK_KILL_CHAR_ON_FOOT mafia_C6[26] scplayer mafia_status_C6[26] = 0 CREATE_CHAR PEDTYPE_MISSION2 VMAFF2 959.0216 2172.0002 1010.0312 mafia_C6[27] SET_CHAR_HEADING mafia_C6[27] 283.0 SET_CHAR_HEALTH mafia_C6[27] 150 SET_CHAR_MAX_HEALTH mafia_C6[27] 150 ADD_BLIP_FOR_CHAR mafia_C6[27] mafia_blip_C6[27] CHANGE_BLIP_DISPLAY mafia_blip_C6[27] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[27] 968.3954 2160.9651 1.0 TASK_STAY_IN_SAME_PLACE mafia_C6[27] TRUE GIVE_WEAPON_TO_CHAR mafia_C6[27] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[27] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[27] 40 TASK_TOGGLE_DUCK mafia_C6[27] TRUE TASK_KILL_CHAR_ON_FOOT mafia_C6[27] scplayer mafia_status_C6[27] = 0 CREATE_CHAR PEDTYPE_MISSION2 VMAFF3 958.8845 2152.1169 1011.8324 mafia_C6[28] SET_CHAR_HEADING mafia_C6[28] 0.0 SET_CHAR_HEALTH mafia_C6[28] 150 SET_CHAR_MAX_HEALTH mafia_C6[28] 150 ADD_BLIP_FOR_CHAR mafia_C6[28] mafia_blip_C6[28] CHANGE_BLIP_DISPLAY mafia_blip_C6[28] BLIP_ONLY SET_BLIP_ENTRY_EXIT mafia_blip_C6[28] 968.3954 2160.9651 1.0 TASK_STAY_IN_SAME_PLACE mafia_C6[28] TRUE GIVE_WEAPON_TO_CHAR mafia_C6[28] WEAPONTYPE_MP5 3000 SET_CURRENT_CHAR_WEAPON mafia_C6[28] WEAPONTYPE_MP5 SET_CHAR_ACCURACY mafia_C6[28] 35 TASK_TOGGLE_DUCK mafia_C6[28] TRUE TASK_KILL_CHAR_ON_FOOT mafia_C6[28] scplayer mafia_status_C6[28] = 0 ENDIF BREAK CASE 3 IF IS_CHAR_IN_AREA_2D scplayer 952.7594 2156.4246 955.3043 2166.7607 FALSE abattoir_status_C6 ++ IF NOT IS_CHAR_DEAD mafia_C6[26] seq_performer_C6 = mafia_C6[26] seq_duck_start_C6 = FALSE seq_duck_end_C6 = FALSE seq_goto_X_C6 = 960.9915 seq_goto_Y_C6 = 2177.3870 seq_goto_Z_C6 = 1010.0312 seq_heading_C6 = 107.0 GOSUB mission_casino6_SUB_ped_goto_and_stay ENDIF ENDIF BREAK CASE 4 IF IS_CHAR_IN_AREA_2D scplayer 961.7650 2174.8989 965.3094 2171.5881 FALSE abattoir_status_C6 ++ IF NOT IS_CHAR_DEAD mafia_C6[27] seq_performer_C6 = mafia_C6[27] seq_duck_start_C6 = FALSE seq_duck_end_C6 = FALSE seq_goto_X_C6 = 958.9090 seq_goto_Y_C6 = 2158.5020 seq_goto_Z_C6 = 1010.0312 seq_heading_C6 = 0.0 GOSUB mission_casino6_SUB_ped_goto_and_stay ENDIF ENDIF BREAK ENDSWITCH RETURN // ##################### // ## Rosenberg gosubs // ##################### LVAR_INT rosenberg_progress_C6 mission_casino6_SUB_rosenberg_status: SWITCH rosenberg_status_C6 // ## Rosenbergs behaviour in start area CASE 0 TASK_STAY_IN_SAME_PLACE rosenberg_C6 TRUE TASK_TOGGLE_DUCK rosenberg_C6 TRUE rosenberg_status_C6 ++ BREAK // checks for two guys who jump over fire are dead before rosenberg runs for fire extinguisher CASE 1 IF IS_CHAR_DEAD mafia_C6[2] AND IS_CHAR_DEAD mafia_C6[3] OPEN_SEQUENCE_TASK sequence_C6 TASK_TOGGLE_DUCK -1 FALSE TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_GO_TO_COORD_ANY_MEANS -1 959.2689 2098.5903 1010.0303 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 255.0 TASK_TOGGLE_DUCK -1 TRUE TASK_STAND_STILL -1 300 TASK_STAND_STILL -1 300 TASK_TOGGLE_DUCK -1 FALSE CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK rosenberg_C6 sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 rosenberg_status_C6 ++ ELSE IF player_trapped_C6 = 1 OPEN_SEQUENCE_TASK sequence_C6 TASK_TOGGLE_DUCK -1 FALSE TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_GO_TO_COORD_ANY_MEANS -1 959.2689 2098.5903 1010.0303 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 255.0 TASK_TOGGLE_DUCK -1 TRUE TASK_STAND_STILL -1 300 TASK_STAND_STILL -1 300 TASK_TOGGLE_DUCK -1 FALSE CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK rosenberg_C6 sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 rosenberg_status_C6 ++ ELSE IF rosenberg_text_flag_C6[0] = 0 GENERATE_RANDOM_INT_IN_RANGE 0 101 rosenberg_random_text_C6 IF rosenberg_random_text_C6 < 50 load_sample = SOUND_CAS6_EG $load_text = &CAS6_EG ELSE load_sample = SOUND_CAS6_EE $load_text = &CAS6_EE ENDIF START_NEW_SCRIPT audio_load_and_play 2 50 rosenberg_C6 // Typical end for me, shot, beaten and then barbeque! rosenberg_text_flag_C6[0] = 1 ENDIF ENDIF ENDIF BREAK CASE 2 GET_SEQUENCE_PROGRESS rosenberg_C6 rosenberg_progress_C6 IF rosenberg_progress_C6 = 6 GIVE_WEAPON_TO_CHAR rosenberg_C6 WEAPONTYPE_EXTINGUISHER 3000 SET_CURRENT_CHAR_WEAPON rosenberg_C6 WEAPONTYPE_EXTINGUISHER DELETE_OBJECT fire_ex_C6 load_sample = SOUND_CAS6_EH $load_text = &CAS6_EH START_NEW_SCRIPT audio_load_and_play 2 100 rosenberg_C6 // I got the extinguisher rosenberg_text_timer_C6 = 0 IF IS_CHAR_DEAD mafia_C6[0] AND IS_CHAR_DEAD mafia_C6[1] CLEAR_CHAR_TASKS rosenberg_C6 OPEN_SEQUENCE_TASK sequence_C6 TASK_SET_CHAR_DECISION_MAKER -1 empty_dm_C6 TASK_TOGGLE_DUCK -1 FALSE TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_GO_TO_COORD_ANY_MEANS -1 946.1957 2112.3716 1010.0312 PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_ACHIEVE_HEADING -1 79.1071 CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK rosenberg_C6 sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 rosenberg_text_timer_C6 = 0 rosenberg_status_C6 = 4 ELSE IF player_trapped_C6 = 1 CLEAR_CHAR_TASKS rosenberg_C6 OPEN_SEQUENCE_TASK sequence_C6 TASK_SET_CHAR_DECISION_MAKER -1 empty_dm_C6 TASK_TOGGLE_DUCK -1 FALSE TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_GO_TO_COORD_ANY_MEANS -1 946.1957 2112.3716 1010.0312 PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_ACHIEVE_HEADING -1 79.1071 CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK rosenberg_C6 sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 rosenberg_status_C6 = 4 ELSE seq_performer_C6 = rosenberg_C6 seq_duck_start_C6 = FALSE seq_duck_end_C6 = FALSE seq_goto_X_C6 = 957.9808 seq_goto_Y_C6 = 2100.7136 seq_goto_Z_C6 = 1010.0312 seq_heading_C6 = 346.0 GOSUB mission_casino6_SUB_ped_goto_and_stay_rosenberg rosenberg_status_C6 ++ ENDIF ENDIF ENDIF BREAK CASE 3 // waiting at office door with extinguisher IF IS_CHAR_DEAD mafia_C6[0] AND IS_CHAR_DEAD mafia_C6[1] CLEAR_CHAR_TASKS rosenberg_C6 OPEN_SEQUENCE_TASK sequence_C6 TASK_SET_CHAR_DECISION_MAKER -1 empty_dm_C6 TASK_TOGGLE_DUCK -1 FALSE TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_GO_TO_COORD_ANY_MEANS -1 945.1309 2112.7109 1010.0312 PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_ACHIEVE_HEADING -1 79.1071 CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK rosenberg_C6 sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 rosenberg_status_C6 ++ ELSE IF player_trapped_C6 = 1 CLEAR_CHAR_TASKS rosenberg_C6 OPEN_SEQUENCE_TASK sequence_C6 TASK_SET_CHAR_DECISION_MAKER -1 empty_dm_C6 TASK_TOGGLE_DUCK -1 FALSE TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_GO_TO_COORD_ANY_MEANS -1 945.1309 2112.7109 1010.0312 PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_ACHIEVE_HEADING -1 79.1071 CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK rosenberg_C6 sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 rosenberg_status_C6 ++ rosenberg_text_timer_C6 = 0 ELSE IF rosenberg_text_flag_C6[1] = 0 AND rosenberg_text_timer_C6 > 500 // load_sample = SOUND_CAS6_EF $load_text = &CAS6_EF START_NEW_SCRIPT audio_load_and_play 2 100 rosenberg_C6 // I aint coming out until its safe. rosenberg_text_flag_C6[1] = 1 // rosenberg_text_timer_C6 = 0 ENDIF ENDIF ENDIF BREAK CASE 4 // been told to stand next to the fire IF LOCATE_CHAR_ON_FOOT_2D rosenberg_C6 945.1309 2112.7109 1.5 1.5 FALSE IF mt_status_C6 = 0 rosenberg_status_C6 = 21 ELSE IF abattoir_status_C6 > 0 rosenberg_status_C6 = 6 ELSE IF IS_CHAR_DEAD mafia_C6[4] AND IS_CHAR_DEAD mafia_C6[5] rosenberg_status_C6 = 6 ELSE rosenberg_status_C6 ++ ENDIF ENDIF ENDIF ELSE IF rosenberg_text_flag_C6[2] = 0 AND rosenberg_text_timer_C6 > 2500 IF player_trapped_C6 = 0 IF NOT IS_CHAR_DEAD mafia_C6[4] OR NOT IS_CHAR_DEAD mafia_C6[5] load_sample = SOUND_CAS6_EJ $load_text = &CAS6_EJ START_NEW_SCRIPT audio_load_and_play 2 101 rosenberg_C6 // Take those guys out and i'll put out the flames rosenberg_text_flag_C6[2] = 1 ENDIF ENDIF ENDIF ENDIF BREAK CASE 5 // waiting to put fire out IF abattoir_status_C6 > 0 rosenberg_status_C6 ++ ELSE IF IS_CHAR_DEAD mafia_C6[4] AND IS_CHAR_DEAD mafia_C6[5] IF NOT LOCATE_CHAR_ON_FOOT_2D rosenberg_C6 945.1309 2112.7109 1.5 1.5 FALSE TASK_GO_TO_COORD_ANY_MEANS rosenberg_C6 945.1309 2112.7109 1010.0312 PEDMOVE_RUN -1 rosenberg_status_C6 -- ELSE rosenberg_status_C6 ++ ENDIF ENDIF ENDIF BREAK // ## Putting out the fire (if it exists) CASE 6 // put out fire sequence IF NOT mafia_dead_C6 = number_of_mafia_C6 IF player_trapped_C6 = 0 IF IS_CHAR_IN_AREA_3D scplayer 930.0 2114.0 1010.0 966.0 2095.0 1012.0 FALSE load_sample = SOUND_CAS6_EK $load_text = &CAS6_EK START_NEW_SCRIPT audio_load_and_play 2 101 rosenberg_C6 // Stand back i'm gonna blast these flames //PRINT_NOW CAS6_05 5000 1 // stand back im gonna put out the fire ELSE load_sample = SOUND_CAS6_EL $load_text = &CAS6_EL START_NEW_SCRIPT audio_load_and_play 2 101 rosenberg_C6 // Hey, CJ Wait for me! //PRINT_NOW CAS6_07 5000 1 // CJ you son of a bitch, wait for me ENDIF ENDIF ENDIF CLEAR_CHAR_TASKS rosenberg_C6 rosenberg_timer_C6 = 0 IF NOT IS_SCRIPT_FIRE_EXTINGUISHED script_fire_C6[5] OR NOT IS_SCRIPT_FIRE_EXTINGUISHED script_fire_C6[4] CLEAR_CHAR_TASKS rosenberg_C6 OPEN_SEQUENCE_TASK sequence_C6 TASK_SHOOT_AT_COORD -1 943.2 2114.0 1011.0 3000 TASK_STAND_STILL -1 500 CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK rosenberg_C6 sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 ELSE rosenberg_timer_C6 = 10000 ENDIF rosenberg_status_C6 ++ BREAK CASE 7 IF rosenberg_timer_C6 > 2850 REMOVE_SCRIPT_FIRE script_fire_C6[5] REMOVE_SCRIPT_FIRE script_fire_C6[4] script_fire_check_C6[0] = 1 rosenberg_status_C6 ++ ENDIF BREAK CASE 8 // put out fire sequence CLEAR_CHAR_TASKS rosenberg_C6 rosenberg_timer_C6 = 0 IF NOT IS_SCRIPT_FIRE_EXTINGUISHED script_fire_C6[3] OR NOT IS_SCRIPT_FIRE_EXTINGUISHED script_fire_C6[2] CLEAR_CHAR_TASKS rosenberg_C6 OPEN_SEQUENCE_TASK sequence_C6 TASK_SHOOT_AT_COORD -1 941.9 2114.0 1011.0 2000 TASK_STAND_STILL -1 500 CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK rosenberg_C6 sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 ELSE rosenberg_timer_C6 = 10000 ENDIF rosenberg_status_C6 ++ BREAK CASE 9 IF rosenberg_timer_C6 > 1250 REMOVE_SCRIPT_FIRE script_fire_C6[3] REMOVE_SCRIPT_FIRE script_fire_C6[2] script_fire_check_C6[1] = 1 rosenberg_status_C6 ++ ENDIF BREAK CASE 10 // put out fire sequence CLEAR_CHAR_TASKS rosenberg_C6 rosenberg_timer_C6 = 0 IF NOT IS_SCRIPT_FIRE_EXTINGUISHED script_fire_C6[1] OR NOT IS_SCRIPT_FIRE_EXTINGUISHED script_fire_C6[0] CLEAR_CHAR_TASKS rosenberg_C6 TASK_SHOOT_AT_COORD rosenberg_C6 940.7 2114.0 1011.0 3000 ELSE rosenberg_timer_C6 = 10000 ENDIF rosenberg_status_C6 ++ BREAK CASE 11 IF rosenberg_timer_C6 > 2850 REMOVE_SCRIPT_FIRE script_fire_C6[1] REMOVE_SCRIPT_FIRE script_fire_C6[0] script_fire_check_C6[2] = 1 heathaze_active_C6 = 2 SET_HEATHAZE_EFFECT FALSE rosenberg_status_C6 ++ ENDIF BREAK // ## Going into first machine room CASE 12 IF abattoir_status_C6 > 0 IF abattoir_status_C6 = 1 // hide in freezer // check if freezer door is open IF fd_status_C6 = 0 // open OR fd_status_C6 = 3 // opening CLEAR_CHAR_TASKS rosenberg_C6 TASK_GO_TO_COORD_ANY_MEANS rosenberg_C6 960.0 2110.0 1010.0312 PEDMOVE_RUN -1 rosenberg_status_C6 = 15 // go into freezer ELSE rosenberg_status_C6 = 13 // go open freezer ENDIF ELSE IF abattoir_status_C6 = 2 IF fd_status_C6 = 0 // open OR fd_status_C6 = 3 // opening CLEAR_CHAR_TASKS rosenberg_C6 TASK_GO_TO_COORD_ANY_MEANS rosenberg_C6 960.0 2110.0 1010.0312 PEDMOVE_RUN -1 rosenberg_status_C6 = 15 // go into freezer ELSE rosenberg_status_C6 = 13 // go open freezer ENDIF ELSE IF abattoir_status_C6 > 2 CLEAR_CHAR_TASKS rosenberg_C6 rosenberg_status_C6 = 19 BREAK ENDIF ENDIF ENDIF IF player_trapped_C6 = 0 load_sample = SOUND_CAS6_FA $load_text = &CAS6_FA START_NEW_SCRIPT audio_load_and_play 2 100 rosenberg_C6 // Screw this, I'm going to hide in the freezer //PRINT_NOW CAS6_10 5000 1 // im gonna hide in the freezer rosenberg_text_timer_C6 = 0 ENDIF ELSE IF rosenberg_text_flag_C6[3] = 0 //AND rosenberg_text_timer_C6 > 5000 GENERATE_RANDOM_INT_IN_RANGE 0 101 rosenberg_random_text_C6 IF rosenberg_random_text_C6 < 50 load_sample = SOUND_CAS6_EM $load_text = &CAS6_EM ELSE load_sample = SOUND_CAS6_EN $load_text = &CAS6_EN ENDIF START_NEW_SCRIPT audio_load_and_play 2 100 rosenberg_C6 // I ain't leading the way //PRINT_NOW CAS6_08 5000 1 // im not going in there first rosenberg_text_flag_C6[3] = 1 rosenberg_text_timer_C6 = 0 ENDIF ENDIF BREAK CASE 13 // rosenberg presses switch ADD_ATTRACTOR 950.9462 2114.9719 1011.5 180.0 15.0 fd_attractor_seq_C6 fd_attractor_C6 ADD_PEDTYPE_AS_ATTRACTOR_USER fd_attractor_C6 PEDTYPE_MISSION1 CLEAR_CHAR_TASKS rosenberg_C6 OPEN_SEQUENCE_TASK sequence_C6 TASK_SET_CHAR_DECISION_MAKER -1 empty_dm_C6 TASK_GO_TO_COORD_ANY_MEANS -1 950.2319 2115.9265 1010.0312 PEDMOVE_RUN -1 TASK_USE_ATTRACTOR -1 fd_attractor_C6 CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK rosenberg_C6 sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 rosenberg_status_C6 ++ BREAK CASE 14 IF IS_CHAR_AT_SCRIPTED_ATTRACTOR rosenberg_C6 fd_attractor_C6 IF fd_status_C6 = 1 // closing OR fd_status_C6 = 2 // closed fd_speed_C6 = 0.0 fd_accel_C6 = 0.0005 fd_status_C6 = 3 ENDIF IF player_trapped_C6 = 1 //PRINT_NOW CAS6_11 5000 1 // you owe me CJ rosenberg_text_timer_C6 = 0 ENDIF SET_CHAR_PROOFS rosenberg_C6 FALSE FALSE FALSE FALSE FALSE TASK_GO_TO_COORD_ANY_MEANS rosenberg_C6 963.4875 2119.2827 1010.0312 PEDMOVE_RUN -1 CLEAR_ATTRACTOR fd_attractor_C6 IF NOT mafia_dead_C6 = number_of_mafia_C6 rosenberg_status_C6 ++ ELSE rosenberg_status_C6 = 19 ENDIF ENDIF BREAK CASE 15 // rosenberg going to get in freezer, check for player trying to shut door on rosenberg IF IS_CHAR_IN_AREA_3D rosenberg_C6 952.25 2147.0 1010.0 967.0 2114.0 1012.0 FALSE rosenberg_status_C6 ++ ELSE GET_SCRIPT_TASK_STATUS rosenberg_C6 TASK_GO_TO_COORD_ANY_MEANS rosenberg_progress_C6 IF rosenberg_progress_C6 = FINISHED_TASK TASK_GO_TO_COORD_ANY_MEANS rosenberg_C6 963.4875 2119.2827 1010.0312 PEDMOVE_RUN -1 ENDIF ENDIF BREAK CASE 16 // checking for when rosenberg_C6 is in back of freezer and makes him duck and adds attack dm GET_SCRIPT_TASK_STATUS rosenberg_C6 TASK_GO_TO_COORD_ANY_MEANS rosenberg_progress_C6 IF rosenberg_progress_C6 = FINISHED_TASK IF LOCATE_CHAR_ON_FOOT_2D rosenberg_C6 963.4875 2119.2827 1.2 1.2 FALSE CLEAR_CHAR_TASKS rosenberg_C6 OPEN_SEQUENCE_TASK sequence_C6 TASK_ACHIEVE_HEADING -1 104.0 TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 attack_dm_C6 CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK rosenberg_C6 sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 rosenberg_status_C6 ++ ELSE TASK_GO_TO_COORD_ANY_MEANS rosenberg_C6 963.4875 2119.2827 1010.0312 PEDMOVE_RUN -1 ENDIF ENDIF BREAK CASE 17 // rosenberg ready crouched down in freezer waiting for event to bring him out IF fd_status_C6 = 0 // open OR fd_status_C6 = 3 // opening IF abattoir_status_C6 >= 2 // check for someone locking in rosenberg IF NOT IS_CHAR_DEAD mafia_C6[14] OR NOT IS_CHAR_DEAD mafia_C6[15] // run script to lock rosenberg in? BREAK ELSE // check first lot of guys are gone so rosenberg can come in IF NOT IS_CHAR_DEAD mafia_C6[4] OR NOT IS_CHAR_DEAD mafia_C6[5] OR NOT IS_CHAR_DEAD mafia_C6[6] OR NOT IS_CHAR_DEAD mafia_C6[7] OR NOT IS_CHAR_DEAD mafia_C6[8] OR NOT IS_CHAR_DEAD mafia_C6[9] BREAK ELSE IF NOT IS_CHAR_DEAD mafia_C6[10] OR NOT IS_CHAR_DEAD mafia_C6[11] OR NOT IS_CHAR_DEAD mafia_C6[1] BREAK ELSE seq_performer_C6 = rosenberg_C6 seq_duck_start_C6 = FALSE seq_duck_end_C6 = TRUE IF NOT IS_CHAR_DEAD mafia_C6[12] OR NOT IS_CHAR_DEAD mafia_C6[13] seq_goto_X_C6 = 942.1362 seq_goto_Y_C6 = 2116.9773 seq_goto_Z_C6 = 1010.0312 seq_heading_C6 = 310.9558 rosenberg_status_C6 = 18 ELSE seq_goto_X_C6 = 944.9211 seq_goto_Y_C6 = 2138.5659 seq_goto_Z_C6 = 1010.0312 seq_heading_C6 = 49.7997 rosenberg_status_C6 = 19 ENDIF GOSUB mission_casino6_SUB_ped_goto_and_stay_rosenberg IF NOT mafia_dead_C6 = number_of_mafia_C6 IF waiting_C6 = 1 load_sample = SOUND_CAS6_ES $load_text = &CAS6_ES START_NEW_SCRIPT audio_load_and_play 1 100 scplayer // Ok, It's clear ENDIF ENDIF IF rosenberg_text_flag_C6[4] = 0 GENERATE_RANDOM_INT_IN_RANGE 0 101 rosenberg_random_text_C6 IF rosenberg_random_text_C6 < 50 audio_status_C6 = 2 audio_pointer_C6 = 3 ELSE audio_status_C6 = 4 audio_pointer_C6 = 5 ENDIF TIMERA = 0 rosenberg_text_flag_C6[4] = 1 ENDIF rosenberg_text_timer_C6 = 0 ENDIF ENDIF ENDIF ENDIF ELSE GOSUB mission_casino6_SUB_infreezer_audio // text for being locked in? ENDIF BREAK CASE 18 IF IS_CHAR_DEAD mafia_C6[12] AND IS_CHAR_DEAD mafia_C6[13] seq_performer_C6 = rosenberg_C6 seq_duck_start_C6 = FALSE seq_duck_end_C6 = TRUE seq_goto_X_C6 = 944.9211 seq_goto_Y_C6 = 2138.5659 seq_goto_Z_C6 = 1010.0312 seq_heading_C6 = 49.7997 GOSUB mission_casino6_SUB_ped_goto_and_stay_rosenberg rosenberg_status_C6 ++ ENDIF BREAK CASE 19 IF abattoir_status_C6 > 2 IF NOT IS_CHAR_DEAD mafia_C6[16] OR NOT IS_CHAR_DEAD mafia_C6[17] OR NOT IS_CHAR_DEAD mafia_C6[18] OR NOT IS_CHAR_DEAD mafia_C6[19] OR NOT IS_CHAR_DEAD mafia_C6[20] OR NOT IS_CHAR_DEAD mafia_C6[21] BREAK ELSE IF NOT IS_CHAR_DEAD mafia_C6[22] OR NOT IS_CHAR_DEAD mafia_C6[23] BREAK ELSE seq_performer_C6 = rosenberg_C6 seq_duck_start_C6 = FALSE IF NOT IS_CHAR_DEAD mafia_C6[24] OR NOT IS_CHAR_DEAD mafia_C6[25] OR NOT IS_CHAR_DEAD mafia_C6[26] OR NOT IS_CHAR_DEAD mafia_C6[27] OR NOT IS_CHAR_DEAD mafia_C6[28] seq_duck_end_C6 = TRUE seq_goto_X_C6 = 949.2078 seq_goto_Y_C6 = 2153.6484 seq_goto_Z_C6 = 1010.0303 seq_heading_C6 = 0.0 rosenberg_status_C6 = 20 ELSE seq_duck_end_C6 = FALSE seq_goto_X_C6 = 965.2232 seq_goto_Y_C6 = 2156.2937 seq_goto_Z_C6 = 1010.0312 seq_heading_C6 = 22.0 rosenberg_status_C6 = 30 ENDIF GOSUB mission_casino6_SUB_ped_goto_and_stay_rosenberg IF NOT mafia_dead_C6 = number_of_mafia_C6 load_sample = SOUND_CAS6_ES $load_text = &CAS6_ES START_NEW_SCRIPT audio_load_and_play 1 100 scplayer // Ok, It's clear ENDIF //PRINT_NOW CAS6_25 5000 1 rosenberg_text_timer_C6 = 0 ENDIF ENDIF ENDIF BREAK CASE 20 IF NOT IS_CHAR_DEAD mafia_C6[24] OR NOT IS_CHAR_DEAD mafia_C6[25] OR NOT IS_CHAR_DEAD mafia_C6[26] OR NOT IS_CHAR_DEAD mafia_C6[27] OR NOT IS_CHAR_DEAD mafia_C6[28] BREAK ELSE seq_performer_C6 = rosenberg_C6 seq_duck_start_C6 = FALSE seq_duck_end_C6 = FALSE seq_goto_X_C6 = 965.2232 seq_goto_Y_C6 = 2156.2937 seq_goto_Z_C6 = 1010.0312 seq_heading_C6 = 22.0 GOSUB mission_casino6_SUB_ped_goto_and_stay_rosenberg rosenberg_status_C6 = 30 ENDIF BREAK // added rosenberg turning on meat track CASE 21 CLEAR_CHAR_TASKS rosenberg_C6 OPEN_SEQUENCE_TASK sequence_C6 TASK_SET_CHAR_DECISION_MAKER -1 empty_dm_C6 TASK_TOGGLE_DUCK -1 FALSE TASK_ACHIEVE_HEADING -1 0.0 TASK_STAND_STILL -1 500 TASK_ACHIEVE_HEADING -1 90.0 TASK_TOGGLE_DUCK -1 TRUE CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK rosenberg_C6 sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 rosenberg_status_C6 ++ BREAK CASE 22 GET_SEQUENCE_PROGRESS rosenberg_C6 rosenberg_progress_C6 IF rosenberg_progress_C6 = 3 IF mt_status_C6 = 0 mt_accel_C6 = 0.0001 mt_status_C6 = 1 mt_timer_C6 = 0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 941.9891 2144.2883 1016.2064 SOUND_MEAT_TRACK_START IF player_trapped_C6 = 0 IF NOT mafia_dead_C6 = number_of_mafia_C6 IF IS_CHAR_IN_AREA_3D scplayer 930.0 2114.25 1010.0 966.0 2095.0 1012.0 FALSE load_sample = SOUND_CAS6_EO $load_text = &CAS6_EO START_NEW_SCRIPT audio_load_and_play 2 100 rosenberg_C6 // I'm gonna set the meat track going //PRINT_NOW CAS6_03 5000 1 // this should cause the goons some problems. ELSE load_sample = SOUND_CAS6_ER $load_text = &CAS6_ER START_NEW_SCRIPT audio_load_and_play 1 100 scplayer // What did you do that for //PRINT_NOW CAS6_09 5000 1 // watch out CJ im gonna set the meat track going. ENDIF ENDIF rosenberg_text_timer_C6 = 0 ENDIF ENDIF rosenberg_status_C6 = 4 ENDIF BREAK ENDSWITCH RETURN // ################# // ## mafia gosubs // ################# mission_casino6_SUB_mafia_freezer_check: IF NOT mafia_using_switch_C6 = -2 IF abattoir_status_C6 >= 2 IF fd_status_C6 = 0 IF IS_CHAR_IN_AREA_3D scplayer 952.25 2147.0 1010.0 967.0 2114.0 1012.0 FALSE OR IS_CHAR_IN_AREA_3D rosenberg_C6 952.25 2147.0 1010.0 967.0 2114.0 1012.0 FALSE GOSUB mission_casino6_SUB_mafia_close_freezer ENDIF ENDIF ENDIF ENDIF RETURN LVAR_INT mafia_using_switch_C6 mission_casino6_SUB_mafia_close_freezer: IF mafia_using_switch_C6 = -1 IF NOT IS_CHAR_DEAD mafia_C6[14] mafia_using_switch_C6 = 14 ELSE IF NOT IS_CHAR_DEAD mafia_C6[15] mafia_using_switch_C6 = 15 ELSE mafia_using_switch_C6 = -2 ENDIF ENDIF IF NOT mafia_using_switch_C6 = -2 IF fd_status_C6 = 0 // open ADD_ATTRACTOR 950.9462 2114.9719 1011.5 180.0 15.0 fd_attractor_seq_C6 fd_attractor_C6 ADD_PEDTYPE_AS_ATTRACTOR_USER fd_attractor_C6 PEDTYPE_MISSION2 CLEAR_CHAR_TASKS mafia_C6[mafia_using_switch_C6] OPEN_SEQUENCE_TASK sequence_C6 TASK_SET_CHAR_DECISION_MAKER -1 empty_dm_C6 TASK_GO_TO_COORD_ANY_MEANS -1 950.2319 2115.9265 1010.0312 PEDMOVE_RUN -1 TASK_USE_ATTRACTOR -1 fd_attractor_C6 CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK mafia_C6[mafia_using_switch_C6] sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 ELSE mafia_using_switch_C6 = -1 ENDIF ENDIF ELSE IF IS_CHAR_DEAD mafia_C6[mafia_using_switch_C6] CLEAR_ATTRACTOR fd_attractor_C6 mafia_using_switch_C6 = -1 ELSE IF IS_CHAR_AT_SCRIPTED_ATTRACTOR mafia_C6[mafia_using_switch_C6] fd_attractor_C6 IF fd_status_C6 = 0 // open OR fd_status_C6 = 3 // opening fd_speed_C6 = 0.0 fd_accel_C6 = -0.0005 fd_status_C6 = 1 ENDIF CLEAR_CHAR_TASKS mafia_C6[mafia_using_switch_C6] SET_CHAR_DECISION_MAKER mafia_C6[mafia_using_switch_C6] attack_dm_C6 CLEAR_ATTRACTOR fd_attractor_C6 mafia_using_switch_C6 = -1 ELSE IF fd_status_C6 = 1 // closing OR fd_status_C6 = 2 // closed CLEAR_CHAR_TASKS mafia_C6[mafia_using_switch_C6] SET_CHAR_DECISION_MAKER mafia_C6[mafia_using_switch_C6] attack_dm_C6 CLEAR_ATTRACTOR fd_attractor_C6 mafia_using_switch_C6 = -1 ENDIF ENDIF ENDIF ENDIF RETURN // ####################### // ## ped related gosubs // ####################### LVAR_INT sequence_C6 seq_performer_C6 seq_duck_start_C6 seq_duck_end_C6 seq_attack_C6 LVAR_FLOAT seq_goto_X_C6 seq_goto_Y_C6 seq_goto_Z_C6 seq_heading_C6 mission_casino6_SUB_ped_goto_and_stay: CLEAR_CHAR_TASKS seq_performer_C6 OPEN_SEQUENCE_TASK sequence_C6 TASK_SET_CHAR_DECISION_MAKER -1 empty_dm_C6 //TASK_TOGGLE_DUCK -1 seq_duck_start_C6 TASK_STAY_IN_SAME_PLACE -1 FALSE // TASK_FOLLOW_PATH_NODES_TO_COORD -1 seq_goto_X_C6 seq_goto_Y_C6 seq_goto_Z_C6 PEDMOVE_RUN -2 TASK_GO_TO_COORD_ANY_MEANS -1 seq_goto_X_C6 seq_goto_Y_C6 seq_goto_Z_C6 PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 seq_duck_end_C6 TASK_STAY_IN_SAME_PLACE -1 TRUE IF NOT seq_heading_C6 = -1.0 TASK_ACHIEVE_HEADING -1 seq_heading_C6 ENDIF TASK_KILL_CHAR_ON_FOOT -1 scplayer TASK_SET_CHAR_DECISION_MAKER -1 attack_dm_C6 CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK seq_performer_C6 sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 RETURN mission_casino6_SUB_ped_goto_and_attack_rosenberg: CLEAR_CHAR_TASKS seq_performer_C6 OPEN_SEQUENCE_TASK sequence_C6 TASK_SET_CHAR_DECISION_MAKER -1 empty_dm_C6 //TASK_TOGGLE_DUCK -1 seq_duck_start_C6 TASK_STAY_IN_SAME_PLACE -1 FALSE // TASK_FOLLOW_PATH_NODES_TO_COORD -1 seq_goto_X_C6 seq_goto_Y_C6 seq_goto_Z_C6 PEDMOVE_RUN -2 TASK_GO_TO_COORD_ANY_MEANS -1 seq_goto_X_C6 seq_goto_Y_C6 seq_goto_Z_C6 PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 seq_duck_end_C6 TASK_STAY_IN_SAME_PLACE -1 TRUE IF NOT seq_heading_C6 = -1.0 TASK_ACHIEVE_HEADING -1 seq_heading_C6 ENDIF TASK_KILL_CHAR_ON_FOOT -1 rosenberg_C6 TASK_SET_CHAR_DECISION_MAKER -1 attack_dm_C6 CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK seq_performer_C6 sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 RETURN mission_casino6_SUB_ped_goto_and_attack: CLEAR_CHAR_TASKS seq_performer_C6 OPEN_SEQUENCE_TASK sequence_C6 TASK_SET_CHAR_DECISION_MAKER -1 empty_dm_C6 TASK_TOGGLE_DUCK -1 seq_duck_start_C6 TASK_STAY_IN_SAME_PLACE -1 FALSE IF NOT seq_goto_X_C6 = -1.0 // TASK_FOLLOW_PATH_NODES_TO_COORD -1 seq_goto_X_C6 seq_goto_Y_C6 seq_goto_Z_C6 PEDMOVE_RUN -2 TASK_GO_TO_COORD_ANY_MEANS -1 seq_goto_X_C6 seq_goto_Y_C6 seq_goto_Z_C6 PEDMOVE_RUN -1 ENDIF TASK_KILL_CHAR_ON_FOOT -1 seq_attack_C6 TASK_SET_CHAR_DECISION_MAKER -1 attack_dm_C6 CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK seq_performer_C6 sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 RETURN mission_casino6_SUB_ped_goto_and_stay_rosenberg: CLEAR_CHAR_TASKS seq_performer_C6 OPEN_SEQUENCE_TASK sequence_C6 TASK_SET_CHAR_DECISION_MAKER -1 empty_dm_C6 //TASK_TOGGLE_DUCK -1 seq_duck_start_C6 TASK_STAY_IN_SAME_PLACE -1 FALSE // TASK_FOLLOW_PATH_NODES_TO_COORD -1 seq_goto_X_C6 seq_goto_Y_C6 seq_goto_Z_C6 PEDMOVE_RUN -2 TASK_GO_TO_COORD_ANY_MEANS -1 seq_goto_X_C6 seq_goto_Y_C6 seq_goto_Z_C6 PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 seq_duck_end_C6 TASK_STAY_IN_SAME_PLACE -1 TRUE IF NOT seq_heading_C6 = -1.0 TASK_ACHIEVE_HEADING -1 seq_heading_C6 ENDIF TASK_SET_CHAR_DECISION_MAKER -1 attack_dm_C6 CLOSE_SEQUENCE_TASK sequence_C6 PERFORM_SEQUENCE_TASK seq_performer_C6 sequence_C6 CLEAR_SEQUENCE_TASK sequence_C6 RETURN // ###################### // ## meat track gosubs // ###################### // controls the moving of objects (meat carcasses and hooks) around the meat track mission_casino6_SUB_track_movement: // TEMP FOR NOW // PRESS G TO START TRACK AND S TO STOP IT IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_1 mt_accel_C6 = 0.0001 ELSE IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_2 mt_accel_C6 = -0.0001 ENDIF ENDIF mt_speed_C6 +=@ mt_accel_C6 IF mt_speed_C6 > 0.06 // increase this value to make objects go quicker around the track mt_speed_C6 = 0.06 ELSE IF mt_speed_C6 < 0.0 mt_speed_C6 = 0.0 ENDIF ENDIF IF mt_status_C6 = 1 OR mt_speed_C6 > 0.0 pointer_C6 = 0 WHILE pointer_C6 < 6 GET_OBJECT_COORDINATES mt_obj_C6[pointer_C6] x y z pointer2_C6 = mt_obj_movement_C6[pointer_C6] SWITCH pointer2_C6 CASE 0 IF x >= mt_X_C6[pointer2_C6] mt_obj_movement_C6[pointer_C6] ++ ELSE x += mt_speed_C6 BREAK ENDIF CASE 1 // rotate IF mt_obj_angle_C6[pointer_C6] >= 180.0 mt_obj_angle_C6[pointer_C6] = 0.0 y -= mt_speed_C6 mt_obj_movement_C6[pointer_C6] ++ ELSE mt_degrees_C6 = mt_speed_C6 / mt_dis_per_degree_C6 mt_obj_angle_C6[pointer_C6] += mt_degrees_C6 IF mt_obj_angle_C6[pointer_C6] >= 180.0 mt_obj_angle_C6[pointer_C6] = 180.0 ENDIF mt_obj_rot_C6[pointer_C6] -= mt_degrees_C6 IF mt_obj_rot_C6[pointer_C6] <= -180.0 mt_obj_rot_C6[pointer_C6] += 360.0 ELSE IF mt_obj_rot_C6[pointer_C6] >= 180.0 mt_obj_rot_C6[pointer_C6] += -360.0 ENDIF ENDIF SET_OBJECT_ROTATION mt_obj_C6[pointer_C6] 0.0 0.0 mt_obj_rot_C6[pointer_C6] COS mt_obj_angle_C6[pointer_C6] cos_angle_C6 SIN mt_obj_angle_C6[pointer_C6] sin_angle_C6 new_X_C6 = mt_radius_C6 * cos_angle_C6 new_Y_C6 = mt_radius_C6 * sin_angle_C6 x = mt_X_C6[0] - new_X_C6 y = mt_Y_C6[1] + new_Y_C6 ENDIF BREAK CASE 2 IF y <= mt_Y_C6[pointer2_C6] mt_obj_movement_C6[pointer_C6] ++ ELSE y -= mt_speed_C6 BREAK ENDIF CASE 3 // rotate IF mt_obj_angle_C6[pointer_C6] <= -90.0 mt_obj_angle_C6[pointer_C6] = 90.0 x -= mt_speed_C6 mt_obj_movement_C6[pointer_C6] ++ ELSE mt_degrees_C6 = mt_speed_C6 / mt_dis_per_degree_C6 mt_obj_angle_C6[pointer_C6] -= mt_degrees_C6 IF mt_obj_angle_C6[pointer_C6] <= -90.0 mt_obj_angle_C6[pointer_C6] = -90.0 ENDIF mt_obj_rot_C6[pointer_C6] -= mt_degrees_C6 IF mt_obj_rot_C6[pointer_C6] <= -180.0 mt_obj_rot_C6[pointer_C6] += 360.0 ELSE IF mt_obj_rot_C6[pointer_C6] >= 180.0 mt_obj_rot_C6[pointer_C6] += -360.0 ENDIF ENDIF SET_OBJECT_ROTATION mt_obj_C6[pointer_C6] 0.0 0.0 mt_obj_rot_C6[pointer_C6] COS mt_obj_angle_C6[pointer_C6] cos_angle_C6 SIN mt_obj_angle_C6[pointer_C6] sin_angle_C6 new_X_C6 = mt_radius_C6 * cos_angle_C6 new_Y_C6 = mt_radius_C6 * sin_angle_C6 x = mt_X_C6[3] + new_X_C6 y = mt_Y_C6[2] + new_Y_C6 ENDIF BREAK CASE 4 IF x <= mt_X_C6[pointer2_C6] mt_obj_movement_C6[pointer_C6] ++ ELSE x -= mt_speed_C6 BREAK ENDIF CASE 5 // rotate IF mt_obj_angle_C6[pointer_C6] >= 180.0 mt_obj_angle_C6[pointer_C6] = 0.0 y += mt_speed_C6 mt_obj_movement_C6[pointer_C6] ++ ELSE mt_degrees_C6 = mt_speed_C6 / mt_dis_per_degree_C6 mt_obj_angle_C6[pointer_C6] += mt_degrees_C6 IF mt_obj_angle_C6[pointer_C6] >= 180.0 mt_obj_angle_C6[pointer_C6] = 180.0 ENDIF mt_obj_rot_C6[pointer_C6] -= mt_degrees_C6 IF mt_obj_rot_C6[pointer_C6] <= -180.0 mt_obj_rot_C6[pointer_C6] += 360.0 ELSE IF mt_obj_rot_C6[pointer_C6] >= 180.0 mt_obj_rot_C6[pointer_C6] += -360.0 ENDIF ENDIF SET_OBJECT_ROTATION mt_obj_C6[pointer_C6] 0.0 0.0 mt_obj_rot_C6[pointer_C6] COS mt_obj_angle_C6[pointer_C6] cos_angle_C6 SIN mt_obj_angle_C6[pointer_C6] sin_angle_C6 new_X_C6 = mt_radius_C6 * cos_angle_C6 new_Y_C6 = mt_radius_C6 * sin_angle_C6 x = mt_X_C6[4] + new_X_C6 y = mt_Y_C6[5] - new_Y_C6 ENDIF BREAK CASE 6 IF y >= mt_Y_C6[pointer2_C6] mt_obj_movement_C6[pointer_C6] ++ ELSE y += mt_speed_C6 BREAK ENDIF CASE 7 // rotate IF mt_obj_angle_C6[pointer_C6] <= -90.0 mt_obj_angle_C6[pointer_C6] = 90.0 x += mt_speed_C6 mt_obj_movement_C6[pointer_C6] = 0 ELSE mt_degrees_C6 = mt_speed_C6 / mt_dis_per_degree_C6 mt_obj_angle_C6[pointer_C6] -= mt_degrees_C6 IF mt_obj_angle_C6[pointer_C6] <= -90.0 mt_obj_angle_C6[pointer_C6] = -90.0 ENDIF mt_obj_rot_C6[pointer_C6] -= mt_degrees_C6 IF mt_obj_rot_C6[pointer_C6] <= -180.0 mt_obj_rot_C6[pointer_C6] += 360.0 ELSE IF mt_obj_rot_C6[pointer_C6] >= 180.0 mt_obj_rot_C6[pointer_C6] += -360.0 ENDIF ENDIF SET_OBJECT_ROTATION mt_obj_C6[pointer_C6] 0.0 0.0 mt_obj_rot_C6[pointer_C6] COS mt_obj_angle_C6[pointer_C6] cos_angle_C6 SIN mt_obj_angle_C6[pointer_C6] sin_angle_C6 new_X_C6 = mt_radius_C6 * cos_angle_C6 new_Y_C6 = mt_radius_C6 * sin_angle_C6 x = mt_X_C6[7] - new_X_C6 y = mt_Y_C6[6] - new_Y_C6 ENDIF BREAK ENDSWITCH SET_OBJECT_COORDINATES_AND_VELOCITY mt_obj_C6[pointer_C6] x y z pointer_C6 ++ ENDWHILE ENDIF IF mt_timer_C6 > 500 IF IS_CHAR_IN_AREA_2D scplayer 945.7303 2113.1968 947.4120 2112.3186 FALSE IF IS_WIDGET_RELEASED WIDGET_MISSION_START //LOCATE_CHAR_ON_FOOT_2D scplayer 944.4756 2112.9255 1.2 1.2 FALSE IF mt_status_C6 = 0 mt_accel_C6 = 0.0001 mt_status_C6 = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 941.9891 2144.2883 1016.2064 SOUND_MEAT_TRACK_START ELSE mt_accel_C6 = -0.0001 mt_status_C6 = 0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 941.9891 2144.2883 1016.2064 SOUND_MEAT_TRACK_STOP ENDIF mt_timer_C6 = 0 ENDIF ENDIF ENDIF RETURN // ################### // ## freezer gosubs // ################### // freezer door controller LVAR_INT opening_sound_C6 waiting_C6 LVAR_FLOAT collision_y_C6 mission_casino6_SUB_freezer_door: SWITCH fd_status_C6 CASE 0 // open IF IS_CHAR_IN_AREA_2D scplayer 951.9540 2115.7444 949.9608 2114.6987 FALSE IF IS_WIDGET_RELEASED WIDGET_MISSION_START fd_speed_C6 = 0.0 fd_accel_C6 = -0.0005 fd_status_C6 ++ ENDIF ENDIF BREAK CASE 1 // closing IF opening_sound_C6 = 0 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT fd_C6 SOUND_FREEZER_OPEN opening_sound_C6 = 1 ENDIF GET_OBJECT_COORDINATES fd_C6 x y z collision_y_C6 = y - 2.5 IF LOCATE_CHAR_ON_FOOT_2D scplayer x collision_y_C6 0.8 0.8 TRUE BREAK ENDIF fd_speed_C6 += fd_accel_C6 IF fd_speed_C6 < -0.4 fd_speed_C6 = -0.4 ENDIF y += fd_speed_C6 IF y <= 2117.448 y = 2117.448 fd_status_C6 ++ REPORT_MISSION_AUDIO_EVENT_AT_OBJECT fd_C6 SOUND_FREEZER_CLOSE opening_sound_C6 = 0 IF IS_CHAR_IN_AREA_3D scplayer 952.25 2147.0 1010.0 967.0 2114.0 1012.0 FALSE player_trapped_C6 = 1 f_timer_C6 = 0 ELSE player_trapped_C6 = 0 ENDIF IF IS_CHAR_IN_AREA_3D rosenberg_C6 952.25 2147.0 1010.0 967.0 2114.0 1012.0 FALSE rosenberg_trapped_C6 = 1 f_timer_C6 = 0 IF player_trapped_C6 = 1 fail_text_flag_C6 = 2 $fail_text_C6 = CAS6_F2 ELSE load_sample = SOUND_CAS6_FC $load_text = &CAS6_FC START_NEW_SCRIPT audio_load_and_play 2 102 rosenberg_C6 // CJ, some guy's locked me in the freezer! //PRINT_NOW CAS6_12 5000 1 // CJ some fucker has locked me in the freezer rosenberg_text_timer_C6 = 0 rosenberg_moan_C6 = 1 TIMERB = 0 ENDIF ELSE IF player_trapped_C6 = 1 // get rosenberg to open door for player load_sample = SOUND_CAS6_FP $load_text = &CAS6_FP START_NEW_SCRIPT audio_load_and_play 1 102 scplayer // Get me out of this freezer, Rosie! //PRINT_NOW CAS6_15 5000 1 // CJ : rosenberg im trapped in this fucking freezer get me out of here. rosenberg_text_timer_C6 = 0 SET_CHAR_PROOFS rosenberg_C6 TRUE TRUE TRUE TRUE TRUE IF rosenberg_status_C6 >= 15 rosenberg_status_C6 = 13 // open door ENDIF ELSE // check to see if rosenberg was going in the freezer and the door was shut on him IF rosenberg_status_C6 = 15 rosenberg_status_C6 = 13 // open door ENDIF ENDIF rosenberg_trapped_C6 = 0 ENDIF ELSE // check for player getting stuck in the collision of the door ENDIF SET_OBJECT_COORDINATES_AND_VELOCITY fd_C6 x y z BREAK CASE 2 // closed IF IS_CHAR_IN_AREA_2D scplayer 951.9540 2115.7444 949.9608 2114.6987 FALSE IF IS_WIDGET_RELEASED WIDGET_MISSION_START fd_speed_C6 = 0.0 fd_accel_C6 = 0.0005 fd_status_C6 ++ IF rosenberg_trapped_C6 = 1 IF NOT IS_CHAR_DEAD mafia_C6[14] OR NOT IS_CHAR_DEAD mafia_C6[15] load_sample = SOUND_CAS6_LD $load_text = &CAS6_LD START_NEW_SCRIPT audio_load_and_play 1 102 scplayer // Stay in there while I finish off these assholes! waiting_C6 = 1 rosenberg_text_timer_C6 = 0 ELSE IF NOT IS_CHAR_DEAD mafia_C6[4] OR NOT IS_CHAR_DEAD mafia_C6[5] OR NOT IS_CHAR_DEAD mafia_C6[6] OR NOT IS_CHAR_DEAD mafia_C6[7] OR NOT IS_CHAR_DEAD mafia_C6[8] OR NOT IS_CHAR_DEAD mafia_C6[9] load_sample = SOUND_CAS6_LD $load_text = &CAS6_LD START_NEW_SCRIPT audio_load_and_play 1 102 scplayer// Stay in there while I finish off these assholes! waiting_C6 = 1 rosenberg_text_timer_C6 = 0 ELSE IF NOT IS_CHAR_DEAD mafia_C6[10] OR NOT IS_CHAR_DEAD mafia_C6[11] OR NOT IS_CHAR_DEAD mafia_C6[1] load_sample = SOUND_CAS6_LD $load_text = &CAS6_LD START_NEW_SCRIPT audio_load_and_play 1 102 scplayer// Stay in there while I finish off these assholes! waiting_C6 = 1 rosenberg_text_timer_C6 = 0 ELSE // random sample GENERATE_RANDOM_INT_IN_RANGE 0 151 rosenberg_random_text_C6 IF rosenberg_random_text_C6 < 50 load_sample = SOUND_CAS6_LC $load_text = &CAS6_LC ELSE IF rosenberg_random_text_C6 > 100 load_sample = SOUND_CAS6_FK $load_text = &CAS6_FK ELSE load_sample = SOUND_CAS6_LB $load_text = &CAS6_LB ENDIF ENDIF START_NEW_SCRIPT audio_load_and_play 2 102 rosenberg_C6 // Thank you, man, I thought I was a popsicle for sure! rosenberg_text_timer_C6 = 0 ENDIF ENDIF ENDIF ENDIF player_trapped_C6 = 0 rosenberg_trapped_C6 = 0 ENDIF ENDIF BREAK CASE 3 // opening IF opening_sound_C6 = 0 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT fd_C6 SOUND_FREEZER_OPEN opening_sound_C6 = 1 ENDIF GET_OBJECT_COORDINATES fd_C6 x y z fd_speed_C6 += fd_accel_C6 IF fd_speed_C6 > 0.4 fd_speed_C6 = 0.4 ENDIF y += fd_speed_C6 IF y >= 2121.648 y = 2121.648 fd_status_C6 = 0 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT fd_C6 SOUND_FREEZER_CLOSE opening_sound_C6 = 0 ENDIF SET_OBJECT_COORDINATES_AND_VELOCITY fd_C6 x y z player_trapped_C6 = 0 rosenberg_trapped_C6 = 0 BREAK ENDSWITCH RETURN mission_casino6_SUB_freezer_health_C6: IF player_trapped_C6 = 1 IF f_timer_C6 > 1500 GET_CHAR_HEALTH scplayer pointer_C6 pointer_C6 -= 3 IF pointer_C6 <= 0 //TASK_DIE scplayer fail_text_flag_C6 = 1 $fail_text_C6 = CAS6_F3 SET_CHAR_HEALTH scplayer 0 ELSE DAMAGE_CHAR scplayer 3 FALSE ENDIF f_timer_C6 = 0 ENDIF ELSE IF rosenberg_trapped_C6 = 1 IF f_timer_C6 > 1500 GET_CHAR_HEALTH rosenberg_C6 pointer_C6 pointer_C6 -= 6 IF pointer_C6 <= 0 //TASK_DIE rosenberg_C6 fail_text_flag_C6 = 1 $fail_text_C6 = CAS6_F1 SET_CHAR_HEALTH rosenberg_C6 0 ELSE DAMAGE_CHAR rosenberg_C6 6 FALSE ENDIF f_timer_C6 = 0 ENDIF ENDIF ENDIF RETURN // ################### // ## ambient gosubs // ################### LVAR_INT heathaze_active_C6 mission_casino6_SUB_heathaze_effect: SWITCH heathaze_active_C6 CASE 0 // heathaze off IF LOCATE_CHAR_ON_FOOT_2D scplayer 941.5 2114.0 9.0 9.0 FALSE SET_HEATHAZE_EFFECT TRUE heathaze_active_C6 ++ ENDIF BREAK CASE 1 // heathaze on IF NOT LOCATE_CHAR_ON_FOOT_2D scplayer 941.5 2114.0 11.0 11.0 FALSE SET_HEATHAZE_EFFECT FALSE heathaze_active_C6 -- ENDIF BREAK ENDSWITCH RETURN // ############## // ## ambient audio // ############## mission_casino6_SUB_ambient_audio: SWITCH audio_status_C6 CASE 0 IF audio_pointer_C6 < 3 load_sample = audio_sound_label_C6[audio_pointer_C6] $load_text = $audio_text_label_C6[audio_pointer_C6] START_NEW_SCRIPT audio_load_and_play 2 70 audio_speaker_C6[audio_pointer_C6] audio_pointer_C6 ++ audio_status_C6 ++ ENDIF CASE 1 IF SLOT_status[preload_slot] = -3 audio_status_C6 = 0 SLOT_status[preload_slot] = -4 ENDIF BREAK CASE 2 IF audio_pointer_C6 < 5 IF TIMERA > 2500 load_sample = audio_sound_label_C6[audio_pointer_C6] $load_text = $audio_text_label_C6[audio_pointer_C6] START_NEW_SCRIPT audio_load_and_play 2 70 audio_speaker_C6[audio_pointer_C6] audio_pointer_C6 ++ audio_status_C6 ++ ENDIF ELSE TIMERA = 0 audio_status_C6 = 6 audio_pointer_C6 = 7 ENDIF CASE 3 IF SLOT_status[preload_slot] = -3 audio_status_C6 = 2 SLOT_status[preload_slot] = -4 ENDIF BREAK CASE 4 IF audio_pointer_C6 < 7 IF TIMERA > 2500 load_sample = audio_sound_label_C6[audio_pointer_C6] $load_text = $audio_text_label_C6[audio_pointer_C6] START_NEW_SCRIPT audio_load_and_play 2 70 audio_speaker_C6[audio_pointer_C6] audio_pointer_C6 ++ audio_status_C6 ++ ENDIF ELSE TIMERA = 0 audio_status_C6 = 6 audio_pointer_C6 = 7 ENDIF CASE 5 IF SLOT_status[preload_slot] = -3 audio_status_C6 = 4 SLOT_status[preload_slot] = -4 ENDIF BREAK CASE 6 IF audio_pointer_C6 < 13 IF TIMERA > 7000 load_sample = audio_sound_label_C6[audio_pointer_C6] $load_text = $audio_text_label_C6[audio_pointer_C6] START_NEW_SCRIPT audio_load_and_play 2 70 audio_speaker_C6[audio_pointer_C6] audio_pointer_C6 ++ audio_status_C6 ++ TIMERA = 0 ENDIF ENDIF CASE 7 IF SLOT_status[preload_slot] = -3 audio_status_C6 = 6 SLOT_status[preload_slot] = -4 ENDIF BREAK CASE 8 IF TIMERA > 9000 load_sample = audio_sound_label_C6[13] $load_text = $audio_text_label_C6[13] START_NEW_SCRIPT audio_load_and_play 2 70 audio_speaker_C6[audio_pointer_C6] audio_pointer_C6 ++ audio_status_C6 ++ TIMERA = 0 ENDIF ENDSWITCH RETURN LVAR_INT rosenberg_moan_C6 text_switch_C6 mission_casino6_SUB_infreezer_audio: IF rosenberg_moan_C6 = 1 AND TIMERB > 20000 IF text_switch_C6 = 0 load_sample = SOUND_CAS6_FF $load_text = &CAS6_FF START_NEW_SCRIPT audio_load_and_play 2 75 rosenberg_C6 text_switch_C6 = 1 ELSE load_sample = SOUND_CAS6_LA $load_text = &CAS6_LA START_NEW_SCRIPT audio_load_and_play 2 75 scplayer text_switch_C6 = 0 ENDIF TIMERB = 0 ENDIF RETURN // ############## // ## help text // ############## LVAR_INT h_text_status_C6 h_text_timer_C6 h_text_player_C6 h_text_rosenberg_C6 mission_casino6_SUB_help_text: SWITCH h_text_status_C6 CASE 0 IF IS_CHAR_IN_AREA_2D scplayer 950.4901 2113.2043 940.3504 2103.8396 FALSE PRINT_HELP_FOREVER CAS6_H0 // Press ~m~~widget_mission_start~ when standing in front of switches to operate them. h_text_timer_C6 = 0 h_text_player_C6 = 0 h_text_rosenberg_C6 = 0 h_text_status_C6 ++ ENDIF BREAK CASE 1 IF h_text_timer_C6 > 8000 CLEAR_HELP h_text_status_C6 ++ ELSE IF player_trapped_C6 = 1 OR rosenberg_trapped_C6 = 1 CLEAR_HELP h_text_status_C6 ++ ENDIF ENDIF BREAK CASE 2 IF player_trapped_C6 = 1 AND h_text_player_C6 = 0 IF NOT rosenberg_trapped_C6 = 1 PRINT_HELP_FOREVER CAS6_H3 h_text_timer_C6 = 0 h_text_status_C6 = 3 ENDIF ELSE IF rosenberg_trapped_C6 =1 IF h_text_rosenberg_C6 = 0 PRINT_HELP_FOREVER CAS6_H1 // Press ~m~~widget_mission_start~ when standing in front of the freezer switch to operate the door. h_text_timer_C6 = 0 h_text_status_C6 = 4 ELSE IF h_text_rosenberg_C6 = 1 h_text_status_C6 = 4 ENDIF ENDIF ENDIF ENDIF BREAK CASE 3 IF h_text_timer_C6 > 8000 OR player_trapped_C6 = 0 CLEAR_HELP h_text_player_C6 = 1 IF h_text_rosenberg_C6 = 3 h_text_status_C6 = -1 ELSE h_text_status_C6 = 2 ENDIF ENDIF BREAK CASE 4 IF h_text_rosenberg_C6 = 0 IF h_text_timer_C6 > 8000 CLEAR_HELP PRINT_HELP_FOREVER CAS6_H2 h_text_timer_C6 = 0 h_text_rosenberg_C6 = 2 ELSE IF rosenberg_trapped_C6 = 0 CLEAR_HELP h_text_rosenberg_C6 = 1 h_text_status_C6 = 2 ENDIF ENDIF ELSE IF h_text_rosenberg_C6 = 1 PRINT_HELP_FOREVER CAS6_H2 h_text_timer_C6 = 0 h_text_rosenberg_C6 = 2 ELSE IF h_text_rosenberg_C6 = 2 IF h_text_timer_C6 > 8000 OR rosenberg_trapped_C6 = 0 CLEAR_HELP h_text_rosenberg_C6 = 3 h_text_status_C6 = 2 ENDIF ENDIF ENDIF ENDIF BREAK ENDSWITCH RETURN LVAR_INT g_text_status_C6 mission_casino6_SUB_game_text: SWITCH g_text_status_C6 CASE 0 IF rosenberg_trapped_C6 = 1 PRINT_NOW CAS6_G2 8000 1 g_text_status_C6 = 1 ELSE IF player_trapped_C6 = 0 PRINT_NOW CAS6_G1 8000 1 IF NOT DOES_BLIP_EXIST goto_blip_C6 ADD_BLIP_FOR_COORD 964.7880 2159.5039 1011.0546 goto_blip_C6 SET_BLIP_ENTRY_EXIT goto_blip_C6 964.7880 2159.5039 4.0 ENDIF SWITCH_ENTRY_EXIT abatoir TRUE g_text_status_C6 = 3 IF rosenberg_text_flag_C6[5] = 0 audio_status_C6 = 8 TIMERA = 0 rosenberg_text_flag_C6[5] = 1 ENDIF ELSE PRINT_NOW CAS6_G3 8000 1 g_text_status_C6 = 2 ENDIF ENDIF BREAK CASE 1 IF rosenberg_trapped_C6 = 0 PRINT_NOW CAS6_G4 8000 1 IF NOT DOES_BLIP_EXIST goto_blip_C6 ADD_BLIP_FOR_COORD 964.7880 2159.5039 1011.0546 goto_blip_C6 SET_BLIP_ENTRY_EXIT goto_blip_C6 964.7880 2159.5039 4.0 ENDIF SWITCH_ENTRY_EXIT abatoir TRUE g_text_status_C6 = 3 ENDIF BREAK CASE 2 IF player_trapped_C6 = 0 PRINT_NOW CAS6_G4 8000 1 IF NOT DOES_BLIP_EXIST goto_blip_C6 ADD_BLIP_FOR_COORD 964.7880 2159.5039 1011.0546 goto_blip_C6 SET_BLIP_ENTRY_EXIT goto_blip_C6 964.7880 2159.5039 4.0 ENDIF SWITCH_ENTRY_EXIT abatoir TRUE g_text_status_C6 = 3 ENDIF BREAK CASE 3 IF player_trapped_C6 = 1 OR rosenberg_trapped_C6 = 1 REMOVE_BLIP goto_blip_C6 SWITCH_ENTRY_EXIT abatoir FALSE g_text_status_C6 = 0 ENDIF BREAK ENDSWITCH RETURN mission_casino6_SUB_tidy_up_factory: // objects pointer_C6 = 0 WHILE pointer_C6 < 6 MARK_OBJECT_AS_NO_LONGER_NEEDED mt_obj_C6[pointer_C6] MARK_OBJECT_AS_NO_LONGER_NEEDED mt_carcass_C6[pointer_C6] MARK_OBJECT_AS_NO_LONGER_NEEDED f_carcass_C6[pointer_C6] pointer_C6 ++ ENDWHILE REMOVE_PICKUP player_fire_ex_C6 REMOVE_PICKUP freezer_armour_C6 MARK_OBJECT_AS_NO_LONGER_NEEDED fire_ex_C6 MARK_OBJECT_AS_NO_LONGER_NEEDED mt_switch_C6 MARK_OBJECT_AS_NO_LONGER_NEEDED fd_C6 MARK_OBJECT_AS_NO_LONGER_NEEDED fd_switch_C6 MARK_OBJECT_AS_NO_LONGER_NEEDED molotov_C6[0] MARK_OBJECT_AS_NO_LONGER_NEEDED molotov_C6[1] // chars MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF1 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF2 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF3 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF4 // objects MARK_MODEL_AS_NO_LONGER_NEEDED ab_carcass MARK_MODEL_AS_NO_LONGER_NEEDED ab_hook MARK_MODEL_AS_NO_LONGER_NEEDED freezer_door MARK_MODEL_AS_NO_LONGER_NEEDED sec_keypad MARK_MODEL_AS_NO_LONGER_NEEDED cardboardbox2 MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED BAT MARK_MODEL_AS_NO_LONGER_NEEDED CHNSAW MARK_MODEL_AS_NO_LONGER_NEEDED FIRE_EX MARK_MODEL_AS_NO_LONGER_NEEDED BODYARMOUR MARK_MODEL_AS_NO_LONGER_NEEDED cj_meat_bag_1 MARK_MODEL_AS_NO_LONGER_NEEDED cj_meat_1 MARK_MODEL_AS_NO_LONGER_NEEDED cj_meat_2 RETURN // ########################### // ## // ## DRIVE BACK TO THE CASINO // ## // ########################### LVAR_INT players_group_C6 spare_car_C6 mission_casino6_MAIN_drive_back_to_casino: active_area_C6 = 1 WHILE active_area_C6 = 1 WAIT 0 GET_CHAR_AREA_VISIBLE scplayer active_area_C6 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DISABLE_PLAYER_SPRINT player1 FALSE CLEAR_ONSCREEN_COUNTER rosenbergs_health_C6 REMOVE_BLIP rosenberg_blip_C6 CLEAR_HELP SET_RADAR_ZOOM 0 GOSUB mission_casino6_SUB_tidy_up_factory SWITCH_ENTRY_EXIT abatoir FALSE REMOVE_BLIP goto_blip_C6 ADD_BLIP_FOR_COORD 2165.1851 1692.3173 9.8203 goto_blip_C6 CLEAR_WANTED_LEVEL player1 IF NOT IS_CHAR_DEAD rosenberg_C6 SET_CHAR_COORDINATES rosenberg_C6 970.7965 2155.6436 9.8203 SET_CHAR_HEADING rosenberg_C6 295.3334 CLEAR_CHAR_TASKS_IMMEDIATELY rosenberg_C6 SET_CHAR_AREA_VISIBLE rosenberg_C6 0 SET_CHAR_NEVER_LEAVES_GROUP rosenberg_C6 TRUE SET_GROUP_MEMBER players_group_C6 rosenberg_C6 REMOVE_ALL_CHAR_WEAPONS rosenberg_C6 REMOVE_BLIP rosenberg_blip_C6 ADD_BLIP_FOR_CHAR rosenberg_C6 rosenberg_blip_C6 SET_BLIP_AS_FRIENDLY rosenberg_blip_C6 TRUE ENDIF IF save_car_C6 = 1 REQUEST_MODEL car_model_C6 WHILE NOT HAS_MODEL_LOADED car_model_C6 WAIT 0 ENDWHILE CREATE_CAR car_model_C6 977.1431 2164.0625 9.8203 player_vehicle_C6 SET_CAR_HEADING player_vehicle_C6 194.2554 // CREATE_CAR car_model_C6 car_pos_C6[0] car_pos_C6[1] car_pos_C6[2] player_vehicle_C6 // SET_CAR_HEADING player_vehicle_C6 car_pos_C6[3] CHANGE_CAR_COLOUR player_vehicle_C6 car_colours_C6[0] car_colours_C6[1] SET_EXTRA_CAR_COLOURS player_vehicle_C6 car_colours_C6[2] car_colours_C6[3] // check tyres pointer_C6 = 0 WHILE pointer_C6 < 4 IF IS_BIT_SET car_tyres_C6 pointer_C6 BURST_CAR_TYRE player_vehicle_C6 pointer_C6 ENDIF pointer_C6 ++ ENDWHILE // check doors IF NOT car_doors_C6 = -1 pointer_C6 = 0 WHILE pointer_C6 < 6 IF IS_BIT_SET car_doors_C6 pointer_C6 DAMAGE_CAR_DOOR player_vehicle_C6 pointer_C6 ENDIF pointer_C6 ++ ENDWHILE ENDIF ENDIF // REQUEST_MODEL SENTINEL // // WHILE NOT HAS_MODEL_LOADED SENTINEL // WAIT 0 // ENDWHILE // // CREATE_CAR SENTINEL 983.2769 2164.4954 9.8203 spare_car_C6 // SET_CAR_HEADING spare_car_C6 198.0331 DO_FADE 500 FADE_IN PRINT_NOW CAS6_G5 8000 1 rosenberg_text_status_C6 = 0 CLEAR_WANTED_LEVEL player1 SET_MAX_WANTED_LEVEL 6 IF NOT SLOT_status[0] < 0 SLOT_status[0] = -2 ENDIF IF NOT SLOT_status[0] < 0 SLOT_status[1] = -2 ENDIF // audio variables // outside banter/instructions $audio_text_label_C6[0] = &CAS6_HA audio_sound_label_C6[0]= SOUND_CAS6_HA audio_speaker_C6[0] = rosenberg_C6 $audio_text_label_C6[1] = &CAS6_HB audio_sound_label_C6[1]= SOUND_CAS6_HB audio_speaker_C6[1] = rosenberg_C6 $audio_text_label_C6[2] = &CAS6_HC audio_sound_label_C6[2]= SOUND_CAS6_HC audio_speaker_C6[2] = rosenberg_C6 $audio_text_label_C6[3] = &CAS6_HD audio_sound_label_C6[3]= SOUND_CAS6_HD audio_speaker_C6[3] = scplayer // en route back in car $audio_text_label_C6[4] = &CAS6_JA audio_sound_label_C6[4]= SOUND_CAS6_JA audio_speaker_C6[4] = rosenberg_C6 $audio_text_label_C6[5] = &CAS6_JB audio_sound_label_C6[5]= SOUND_CAS6_JB audio_speaker_C6[5] = rosenberg_C6 $audio_text_label_C6[6] = &CAS6_JC audio_sound_label_C6[6]= SOUND_CAS6_JC audio_speaker_C6[6] = rosenberg_C6 $audio_text_label_C6[7] = &CAS6_JD audio_sound_label_C6[7]= SOUND_CAS6_JD audio_speaker_C6[7] = scplayer $audio_text_label_C6[8] = &CAS6_JE audio_sound_label_C6[8]= SOUND_CAS6_JE audio_speaker_C6[8] = rosenberg_C6 $audio_text_label_C6[9] = &CAS6_JF audio_sound_label_C6[9]= SOUND_CAS6_JF audio_speaker_C6[9] = rosenberg_C6 $audio_text_label_C6[10] = &CAS6_JG audio_sound_label_C6[10]= SOUND_CAS6_JG audio_speaker_C6[10] = rosenberg_C6 // $audio_text_label_C6[11] = &CAS6_JH // audio_sound_label_C6[11]= SOUND_CAS6_JH // audio_speaker_C6[11] = rosenberg_C6 $audio_text_label_C6[11] = &CAS6_JJ audio_sound_label_C6[11]= SOUND_CAS6_JJ audio_speaker_C6[11] = scplayer $audio_text_label_C6[12] = &CAS6_JK audio_sound_label_C6[12]= SOUND_CAS6_JK audio_speaker_C6[12] = scplayer $audio_text_label_C6[13] = &CAS6_JL audio_sound_label_C6[13]= SOUND_CAS6_JL audio_speaker_C6[13] = scplayer $audio_text_label_C6[14] = &CAS6_JM audio_sound_label_C6[14]= SOUND_CAS6_JM audio_speaker_C6[14] = rosenberg_C6 $audio_text_label_C6[15] = &CAS6_JN audio_sound_label_C6[15]= SOUND_CAS6_JN audio_speaker_C6[15] = scplayer $audio_text_label_C6[16] = &CAS6_JO audio_sound_label_C6[16]= SOUND_CAS6_JO audio_speaker_C6[16] = scplayer // cutscene of rosenberg going in casino $audio_text_label_C6[17] = &CAS6_KA audio_sound_label_C6[17]= SOUND_CAS6_KA audio_speaker_C6[17] = scplayer $audio_text_label_C6[18] = &CAS6_KB audio_sound_label_C6[18]= SOUND_CAS6_KB audio_speaker_C6[18] = rosenberg_C6 $audio_text_label_C6[19] = &CAS6_KC audio_sound_label_C6[19]= SOUND_CAS6_KC audio_speaker_C6[19] = rosenberg_C6 $audio_text_label_C6[20] = &CAS6_KD audio_sound_label_C6[20]= SOUND_CAS6_KD audio_speaker_C6[20] = rosenberg_C6 $audio_text_label_C6[21] = &CAS6_KE audio_sound_label_C6[21]= SOUND_CAS6_KE audio_speaker_C6[21] = rosenberg_C6 audio_pointer_C6 = 0 audio_status_C6 = 0 TIMERB = 0 SET_PLAYER_GROUP_RECRUITMENT player1 TRUE mission_casino6_MAIN_drive_back_to_casino_loop: WAIT 0 IF NOT IS_CHAR_DEAD rosenberg_C6 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2165.1851 1692.3173 9.8203 4.0 4.0 4.0 TRUE IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer rosenberg_C6 15.0 15.0 FALSE GOTO mission_casino6_CUT_end_of_mission ELSE IF rosenberg_text_status_C6 < 2 rosenberg_text_status_C6 = 2 ENDIF GOSUB mission_casino6_SUB_rosenberg_text GOSUB mission_casino6_SUB_return_dialogue ENDIF ELSE GOSUB mission_casino6_SUB_rosenberg_blip GOSUB mission_casino6_SUB_rosenberg_text GOSUB mission_casino6_SUB_return_dialogue ENDIF // interior check GET_AREA_VISIBLE active_area_C6 IF NOT active_area_C6 = 0 CLEAR_PRINTS FREEZE_CHAR_POSITION rosenberg_C6 TRUE REMOVE_BLIP goto_blip_C6 REMOVE_BLIP rosenberg_blip_C6 REMOVE_CHAR_FROM_GROUP rosenberg_C6 rosenberg_blip_status_C6 = 0 GOTO mission_casino6_MAIN_rosenberg_interior ENDIF ELSE fail_text_flag_C6 = 1 $fail_text_C6 = CAS6_F0 GOTO mission_casino6_FAILED ENDIF GOTO mission_casino6_MAIN_drive_back_to_casino_loop LVAR_FLOAT ped_node_X_C6 ped_node_Y_C6 ped_node_Z_C6 mission_casino6_MAIN_rosenberg_interior: WAIT 0 IF NOT IS_CHAR_DEAD rosenberg_C6 GET_AREA_VISIBLE active_area_C6 IF active_area_C6 = 0 FREEZE_CHAR_POSITION rosenberg_C6 FALSE SET_CHAR_NEVER_LEAVES_GROUP rosenberg_C6 TRUE SET_GROUP_MEMBER players_group_C6 rosenberg_C6 REMOVE_BLIP rosenberg_blip_C6 ADD_BLIP_FOR_CHAR rosenberg_C6 rosenberg_blip_C6 SET_BLIP_AS_FRIENDLY rosenberg_blip_C6 TRUE CHANGE_BLIP_DISPLAY rosenberg_blip_C6 BLIP_ONLY ADD_BLIP_FOR_COORD 2165.1851 1692.3173 9.8203 goto_blip_C6 TIMERA = 0 rosenberg_text_status_C6 = 3 GOTO mission_casino6_MAIN_drive_back_to_casino_loop ENDIF ELSE // just in for safety reasons fail_text_flag_C6 = 1 $fail_text_C6 = CAS6_F0 GOTO mission_casino6_FAILED ENDIF GOTO mission_casino6_MAIN_rosenberg_interior LVAR_INT rosenberg_blip_status_C6 player_vehicle_C6 mission_casino6_SUB_rosenberg_blip: SWITCH rosenberg_blip_status_C6 CASE 0 IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer player_vehicle_C6 IF IS_CHAR_IN_CAR rosenberg_C6 player_vehicle_C6 REMOVE_BLIP rosenberg_blip_C6 rosenberg_blip_status_C6 ++ ENDIF ENDIF BREAK CASE 1 IF NOT IS_CHAR_IN_ANY_CAR rosenberg_C6 REMOVE_BLIP rosenberg_blip_C6 ADD_BLIP_FOR_CHAR rosenberg_C6 rosenberg_blip_C6 SET_BLIP_AS_FRIENDLY rosenberg_blip_C6 TRUE CHANGE_BLIP_DISPLAY rosenberg_blip_C6 BLIP_ONLY rosenberg_blip_status_C6 -- ENDIF BREAK ENDSWITCH RETURN LVAR_INT rosenberg_text_status_C6 mission_casino6_SUB_rosenberg_text: SWITCH rosenberg_text_status_C6 CASE 0 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer rosenberg_C6 60.0 60.0 FALSE PRINT_NOW CAS6_G6 8000 1 TIMERA = 0 rosenberg_text_status_C6 ++ ENDIF BREAK CASE 1 IF TIMERA > 20000 rosenberg_text_status_C6 -- ENDIF BREAK CASE 2 PRINT_NOW CAS6_G7 8000 1 TIMERA = 0 rosenberg_text_status_C6 ++ BREAK CASE 3 IF TIMERA > 20000 rosenberg_text_status_C6 = 0 ENDIF BREAK ENDSWITCH RETURN LVAR_INT audio_pointer_C6 audio_status_C6 audio_sound_label_C6[23] audio_speaker_C6[23] LVAR_TEXT_LABEL $audio_text_label_C6[23] mission_casino6_SUB_return_dialogue: SWITCH audio_status_C6 CASE 0 IF TIMERB > 8000 audio_status_C6 ++ ENDIF BREAK // start dialogue CASE 1 IF audio_pointer_C6 < 4 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer rosenberg_C6 15.0 15.0 FALSE load_sample = audio_sound_label_C6[audio_pointer_C6] $load_text = $audio_text_label_C6[audio_pointer_C6] START_NEW_SCRIPT audio_load_and_play 2 100 audio_speaker_C6[audio_pointer_C6] audio_pointer_C6 ++ audio_status_C6 ++ ENDIF ELSE audio_status_C6 = 3 BREAK ENDIF CASE 2 IF SLOT_status[preload_slot] = -3 audio_status_C6 = 1 SLOT_status[preload_slot] = -4 ENDIF BREAK // in car dialogue CASE 3 IF rosenberg_blip_status_C6 = 1 IF audio_pointer_C6 < 17 load_sample = audio_sound_label_C6[audio_pointer_C6] $load_text = $audio_text_label_C6[audio_pointer_C6] START_NEW_SCRIPT audio_load_and_play 1 100 audio_speaker_C6[audio_pointer_C6] audio_pointer_C6 ++ audio_status_C6 ++ ENDIF ELSE IF NOT audio_pointer_C6 = 4 IF NOT SLOT_status[0] < 0 SLOT_status[0] = -2 ENDIF IF NOT SLOT_status[0] < 0 SLOT_status[1] = -2 ENDIF ENDIF BREAK ENDIF CASE 4 IF SLOT_status[preload_slot] = -3 audio_status_C6 = 3 SLOT_status[preload_slot] = -4 ENDIF BREAK ENDSWITCH RETURN mission_casino6_CUT_end_of_mission: SET_PLAYER_CONTROL player1 OFF // clear audio slots if still playing IF NOT SLOT_status[0] < 0 SLOT_status[0] = -2 ENDIF IF NOT SLOT_status[0] < 0 SLOT_status[1] = -2 ENDIF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2171.5107 1687.3682 9.8203 ELSE SET_CHAR_COORDINATES scplayer 2171.5107 1687.3682 9.8203 ENDIF SET_CHAR_HEADING scplayer 352.2379 IF NOT IS_CHAR_DEAD rosenberg_C6 IF IS_CHAR_IN_ANY_CAR rosenberg_C6 WARP_CHAR_FROM_CAR_TO_COORD rosenberg_C6 2171.5193 1688.5265 9.8203 ELSE SET_CHAR_COORDINATES rosenberg_C6 2171.5193 1688.5265 9.8203 ENDIF SET_CHAR_HEADING rosenberg_C6 194.0510 ENDIF SET_FIXED_CAMERA_POSITION 2172.8564 1688.2550 11.0927 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2171.8906 1688.0133 11.1875 JUMP_CUT CLEAR_AREA 2171.5107 1687.3682 9.8203 60.0 TRUE DELETE_CAR player_vehicle_C6 audio_pointer_C6 = 17 SWITCH_WIDESCREEN ON DO_FADE 500 FADE_IN SKIP_CUTSCENE_START WHILE audio_pointer_C6 < 22 load_sample = audio_sound_label_C6[audio_pointer_C6] $load_text = $audio_text_label_C6[audio_pointer_C6] START_NEW_SCRIPT audio_load_and_play 2 100 audio_speaker_C6[audio_pointer_C6] WHILE NOT SLOT_status[preload_slot] = -3 WAIT 0 ENDWHILE SLOT_status[preload_slot] = -4 audio_pointer_C6 ++ ENDWHILE IF NOT IS_CHAR_DEAD rosenberg_C6 TASK_GO_STRAIGHT_TO_COORD rosenberg_C6 2178.0149 1689.6980 9.8203 PEDMOVE_WALK -2 DO_FADE 2500 FADE_OUT ENDIF WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SKIP_CUTSCENE_END DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS SET_CHAR_HEADING scplayer 95.0 IF NOT IS_CHAR_DEAD rosenberg_C6 DELETE_CHAR rosenberg_C6 ENDIF DO_FADE 0 FADE_IN SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER // ########################### // ## // ## END OF MISSION SCRIPTS // ## // ########################### mission_casino6_PASSED: flag_casino_mission_counter ++ //Used to terminate this mission loop in the main script. These varibles will be set up in the main.sc REGISTER_MISSION_PASSED ( CASINO6 ) //Used in the stats PLAYER_MADE_PROGRESS 1 // imy stuff PRINT_WITH_NUMBER_BIG ( M_PASSS ) 8000 5000 1 //"Mission Passed!" //100 being the amount of cash ADD_SCORE player1 8000//amount of cash AWARD_PLAYER_MISSION_RESPECT 25//amount of respect CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 // stuff for craig SET_INT_STAT PASSED_CASINO6 1 START_NEW_SCRIPT doc_mission_loop REMOVE_BLIP doc_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT docX docY docZ doc_blip_icon doc_contact_blip REMOVE_BLIP heist_contact_blip 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 RETURN mission_casino6_FAILED: SWITCH fail_text_flag_C6 CASE 1 PRINT_NOW $fail_text_C6 5000 1 IF player_trapped_C6 = 1 SET_OBJECT_COORDINATES fd_C6 951.859 2121.648 1012.094 ENDIF CASE 0 PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" BREAK CASE 2 DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 963.9219 2124.6304 1013.8499 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 963.0831 2124.1853 1013.5363 JUMP_CUT SET_CHAR_COORDINATES scplayer 955.6613 2116.2026 1010.0303 SET_CHAR_HEADING scplayer 72.8077 IF NOT IS_CHAR_DEAD rosenberg_C6 CLEAR_CHAR_TASKS_IMMEDIATELY rosenberg_C6 TASK_TOGGLE_DUCK rosenberg_C6 FALSE SET_CHAR_DECISION_MAKER rosenberg_C6 empty_dm_C6 SET_CHAR_COORDINATES rosenberg_C6 955.3200 2119.4722 1010.0312 SET_CHAR_HEADING rosenberg_C6 113.9337 ENDIF // delete any mafia who might have got caught in the freezer pointer_C6 = 0 WHILE pointer_C6 < number_of_mafia_C6 IF NOT IS_CHAR_DEAD mafia_C6[pointer_C6] IF IS_CHAR_IN_AREA_3D mafia_C6[pointer_C6] 952.25 2147.0 1010.0 967.0 2114.0 1012.0 FALSE DELETE_CHAR mafia_C6[pointer_C6] ENDIF ENDIF pointer_C6 ++ ENDWHILE TIMERA = 0 WHILE TIMERA < 400 WAIT 0 ENDWHILE DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PRINT_BIG ( M_FAIL ) 4000 1 //"Mission Failed" PRINT_NOW $fail_text_C6 4000 1 TIMERA = 0 WHILE TIMERA < 4000 WAIT 0 ENDWHILE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE 1578.4460 1770.6816 9.8280 REQUEST_COLLISION 1578.4460 1770.6816 SET_CHAR_COORDINATES_NO_OFFSET scplayer 1578.4460 1770.6816 9.8280 SET_CHAR_HEADING scplayer 99.7567 RESET_STUFF_UPON_RESURRECTION TIMERA = 0 WHILE TIMERA < 400 WAIT 0 ENDWHILE BREAK ENDSWITCH GET_AREA_VISIBLE active_area_C6 IF NOT active_area_C6 = 0 SWITCH_ENTRY_EXIT abatoir TRUE ENDIF RETURN mission_casino6_CLEANUP: IF IS_PLAYER_PLAYING player1 SET_PLAYER_GROUP_RECRUITMENT player1 TRUE SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 ENDIF START_NEW_SCRIPT terminate_audio_controller entry_exit_area = 0 entry_exit_status = FALSE $entry_exit_name = abatoir START_NEW_SCRIPT switch_entry_exit_after_mission SET_MAX_WANTED_LEVEL 6 CLEAR_ONSCREEN_COUNTER rosenbergs_health_C6 REMOVE_BLIP goto_blip_C6 CLEAR_HELP SET_HEATHAZE_EFFECT FALSE SET_RADAR_ZOOM 0 IF script_fire_check_C6[0] = 0 REMOVE_SCRIPT_FIRE script_fire_C6[5] REMOVE_SCRIPT_FIRE script_fire_C6[4] ENDIF IF script_fire_check_C6[1] = 0 REMOVE_SCRIPT_FIRE script_fire_C6[3] REMOVE_SCRIPT_FIRE script_fire_C6[2] ENDIF IF script_fire_check_C6[2] = 0 REMOVE_SCRIPT_FIRE script_fire_C6[1] REMOVE_SCRIPT_FIRE script_fire_C6[0] ENDIF // chars IF IS_PLAYER_PLAYING player1 DISABLE_PLAYER_SPRINT player1 FALSE pointer_C6 = 0 WHILE pointer_C6 < number_of_mafia_C6 IF NOT IS_CHAR_DEAD mafia_C6[pointer_C6] SET_CHAR_DECISION_MAKER mafia_C6[pointer_C6] empty_dm_C6 TASK_KILL_CHAR_ON_FOOT mafia_C6[pointer_C6] scplayer SET_CHAR_KEEP_TASK mafia_C6[pointer_C6] TRUE ENDIF //MARK_CHAR_AS_NO_LONGER_NEEDED mafia_C6[pointer_C6] REMOVE_BLIP mafia_blip_C6[pointer_C6] pointer_C6 ++ ENDWHILE ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED rosenberg_C6 REMOVE_BLIP rosenberg_blip_C6 // objects pointer_C6 = 0 WHILE pointer_C6 < 6 MARK_OBJECT_AS_NO_LONGER_NEEDED mt_obj_C6[pointer_C6] MARK_OBJECT_AS_NO_LONGER_NEEDED mt_carcass_C6[pointer_C6] MARK_OBJECT_AS_NO_LONGER_NEEDED f_carcass_C6[pointer_C6] pointer_C6 ++ ENDWHILE pointer_C6 = 0 WHILE pointer_C6 < 6 MARK_OBJECT_AS_NO_LONGER_NEEDED meat_chunks_C6[pointer_C6] pointer_C6 ++ ENDWHILE REMOVE_PICKUP player_fire_ex_C6 REMOVE_PICKUP freezer_armour_C6 //MARK_CAR_AS_NO_LONGER_NEEDED spare_car_C6 MARK_CAR_AS_NO_LONGER_NEEDED player_vehicle_C6 MARK_OBJECT_AS_NO_LONGER_NEEDED fire_ex_C6 MARK_OBJECT_AS_NO_LONGER_NEEDED mt_switch_C6 MARK_OBJECT_AS_NO_LONGER_NEEDED fd_C6 MARK_OBJECT_AS_NO_LONGER_NEEDED fd_switch_C6 MARK_OBJECT_AS_NO_LONGER_NEEDED molotov_C6[0] MARK_OBJECT_AS_NO_LONGER_NEEDED molotov_C6[1] KILL_FX_SYSTEM molotov_particleFX_C6[0] KILL_FX_SYSTEM molotov_particleFX_C6[1] // chars UNLOAD_SPECIAL_CHARACTER 1 // ROSENBERG MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF1 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF2 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF3 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF4 // weapons MARK_MODEL_AS_NO_LONGER_NEEDED MOLOTOV MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED CHNSAW MARK_MODEL_AS_NO_LONGER_NEEDED BAT MARK_MODEL_AS_NO_LONGER_NEEDED FIRE_EX MARK_MODEL_AS_NO_LONGER_NEEDED BODYARMOUR // objects MARK_MODEL_AS_NO_LONGER_NEEDED ab_carcass MARK_MODEL_AS_NO_LONGER_NEEDED ab_hook MARK_MODEL_AS_NO_LONGER_NEEDED freezer_door MARK_MODEL_AS_NO_LONGER_NEEDED sec_keypad MARK_MODEL_AS_NO_LONGER_NEEDED cardboardbox2 MARK_MODEL_AS_NO_LONGER_NEEDED cj_meat_bag_1 MARK_MODEL_AS_NO_LONGER_NEEDED cj_meat_1 MARK_MODEL_AS_NO_LONGER_NEEDED cj_meat_2 MARK_MODEL_AS_NO_LONGER_NEEDED car_model_C6 // stuff for craig GET_GAME_TIMER timer_mobile_start IF fail_text_flag_C6 = 2 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER DO_FADE 1000 FADE_IN ENDIF flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ######################## // ## // ## Casino9.sc // ## // ## Freefall PC Version, // ## // ## added fix for bug 503 - frame limiter problems // ## added fix for bug 238 - control problem // ## // ## Simon Lashley // ## // ######################## SCRIPT_NAME CASINO9 // Mission start stuff GOSUB mission_casino9_START IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_casino9_FAILED ENDIF GOSUB mission_casino9_CLEANUP MISSION_END { // Variables for mission // dodo LVAR_INT dodo_C9 dodo_blip_C9 dodo_status_C9 // sanchez - bike in front of casino LVAR_INT sanchez_C9 // shamal LVAR_INT shamal_C9 shamal_status_C9 LVAR_INT pilot_C9 // general LVAR_INT pointer_C9 pointer2_C9 goto_blip_C9 sequence_C9 cutscene_flag_C9 task_progress_C9 airport_status_C9 corona_C9 empty_dm_C9 // fail text LVAR_INT fail_text_flag_C9 LVAR_TEXT_LABEL fail_text_C9 // coordinates LVAR_FLOAT shamal_X_C9 shamal_Y_C9 shamal_Z_C9 LVAR_FLOAT dodo_X_C9 dodo_Y_C9 dodo_Z_C9 LVAR_FLOAT corona_X_C9 corona_Y_C9 corona_Z_C9 LVAR_FLOAT cam_pos_X_C9 cam_pos_Y_C9 cam_pos_Z_C9 cam_look_X_C9 cam_look_Y_C9 cam_look_Z_C9 // **************************************** Mission Start ********************************** mission_casino9_START: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 // text LOAD_MISSION_TEXT CASINO9 SET_CHAR_COORDINATES scplayer 2175.4116 1681.5483 9.8203 SET_CHAR_HEADING scplayer 90.0 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2233.5 1712.8 10.0 SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 iTerminateAllAmbience = 1 // ****************************************START OF CUTSCENE******************************** SET_AREA_VISIBLE 2 LOAD_CUTSCENE CAS_9a1 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT WAS_CUTSCENE_SKIPPED LOAD_CUTSCENE CAS_9a2 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF SET_AREA_VISIBLE 0 // ****************************************END OF CUTSCENE********************************** SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 // audio START_NEW_SCRIPT start_audio_controller LOAD_SCENE 2175.4116 1681.5483 9.8203 // models REQUEST_MODEL DODO REQUEST_MODEL FCR900 WHILE NOT HAS_MODEL_LOADED DODO OR NOT HAS_MODEL_LOADED FCR900 WAIT 0 ENDWHILE FORCE_WEATHER_NOW WEATHER_SUNNY_VEGAS LVAR_INT never_run_this_C9 never_run_this_C9 = 0 IF never_run_this_C9 = 1 CREATE_CAR DODO 0.0 0.0 0.0 dodo_C9 ADD_BLIP_FOR_CAR dodo_C9 dodo_blip_C9 ENDIF dodo_status_C9 = 0 SET_CAMERA_BEHIND_PLAYER SWITCH_AMBIENT_PLANES FALSE CREATE_CAR FCR900 2163.2490 1679.9757 9.8125 sanchez_C9 SET_CAR_HEADING sanchez_C9 350.0 SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_RESPAWN_POINT_FOR_DURATION_OF_MISSION 1581.3737 1768.9958 9.8203 DO_FADE 500 FADE_IN PRINT_NOW CAS9_08 8500 1 ADD_BLIP_FOR_COORD 1707.828 1606.639 9.055 goto_blip_C9 fail_text_flag_C9 = 0 dodo_status_C9 = 0 shamal_status_C9 = 0 airport_status_C9 = 0 shamal_X_C9 = 1465.0 shamal_Y_C9 = 5200.0 shamal_Z_C9 = 200.0 corona_X_C9 = 1465.0 corona_Y_C9 = 5220.0 corona_Z_C9 = 215.0 // ################################# // # // # FREEFALL - Part 1 - steal plane // # // ################################# mission_casino9_MAIN_steal_plane: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_casino9_PASSED ENDIF IF airport_status_C9 = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 1707.828 1606.639 4.0 4.0 FALSE REMOVE_BLIP goto_blip_C9 DISPLAY_RADAR 2 //Pathing off CREATE_CAR DODO 1279.6250 1361.6047 9.8203 dodo_C9 SET_CAR_HEADING dodo_C9 270.0 ADD_BLIP_FOR_CAR dodo_C9 dodo_blip_C9 SET_BLIP_AS_FRIENDLY dodo_blip_C9 TRUE PRINT_NOW CAS9_09 6000 1 airport_status_C9 ++ CHECKPOINT_SAVE 1 ENDIF ELSE IF NOT IS_CAR_DEAD dodo_C9 IF IS_CHAR_IN_CAR scplayer dodo_C9 // if player in plane for first time tell him to get high in the air IF DOES_BLIP_EXIST dodo_blip_C9 REMOVE_BLIP dodo_blip_C9 ADD_BLIP_FOR_COORD shamal_X_C9 shamal_Y_C9 shamal_Z_C9 goto_blip_C9 CLEAR_PRINTS IF dodo_status_C9 = 0 PRINT_NOW CAS9_50 8000 1 dodo_status_C9 ++ ENDIF ENDIF GET_CAR_COORDINATES dodo_C9 x y z GET_DISTANCE_BETWEEN_COORDS_2D x y shamal_X_C9 shamal_Y_C9 distance SWITCH shamal_status_C9 CASE 0 IF distance > 4400.0 BREAK ENDIF REQUEST_MODEL SHAMAL REQUEST_MODEL WMYPLT MARK_MODEL_AS_NO_LONGER_NEEDED FCR900 MARK_CAR_AS_NO_LONGER_NEEDED sanchez_C9 shamal_status_C9 ++ CASE 1 IF distance > 600.0 OR NOT HAS_MODEL_LOADED SHAMAL OR NOT HAS_MODEL_LOADED WMYPLT BREAK ENDIF REMOVE_BLIP goto_blip_C9 CREATE_CAR SHAMAL shamal_X_C9 shamal_Y_C9 shamal_Z_C9 shamal_C9 SET_CAR_HEADING shamal_C9 180.0 SET_CAR_FORWARD_SPEED shamal_C9 14.0 SET_PLANE_UNDERCARRIAGE_UP shamal_C9 TRUE FREEZE_CAR_POSITION shamal_C9 TRUE CREATE_CHAR_INSIDE_CAR shamal_C9 PEDTYPE_MISSION1 WMYPLT pilot_C9 ADD_BLIP_FOR_CAR shamal_C9 goto_blip_C9 CHANGE_BLIP_DISPLAY goto_blip_C9 BLIP_ONLY CHANGE_BLIP_COLOUR goto_blip_C9 YELLOW shamal_status_C9 ++ CASE 2 IF distance > 300.0 BREAK ENDIF corona_Y_C9 = shamal_Y_C9 + 20.0 y = corona_Y_C9 - 1.0 CREATE_CHECKPOINT CHECKPOINT_TORUS corona_X_C9 corona_Y_C9 corona_Z_C9 corona_X_C9 y corona_Z_C9 10.0 corona_C9 PRINT_NOW CAS9_51 8000 1 shamal_status_C9 ++ CASE 3 IF NOT IS_CAR_DEAD shamal_C9 shamal_Y_C9 -=@ 0.75 SET_CAR_COORDINATES_NO_OFFSET shamal_C9 shamal_X_C9 shamal_Y_C9 shamal_Z_C9 corona_Y_C9 = shamal_Y_C9 + 20.0 SET_CHECKPOINT_COORDS corona_C9 corona_X_C9 corona_Y_C9 corona_Z_C9 z = corona_Z_C9 - 3.0 IF LOCATE_CHAR_IN_CAR_3D scplayer corona_X_C9 corona_Y_C9 z 20.0 20.0 20.0 FALSE GET_CAR_HEADING dodo_C9 heading //IF heading < 240.0 //AND heading > 120.0 GOTO mission_casino9_CUT_hijack_shamal_setup //ENDIF ELSE TIMERA = 0 ENDIF IF shamal_Y_C9 <= 3000.0 PLANE_FLY_IN_DIRECTION shamal_C9 180.0 200.0 200.0 fail_text_flag_C9 = 1 $fail_text_C9 = CAS9_52 GOTO mission_casino9_FAILED ENDIF ENDIF BREAK ENDSWITCH ELSE IF NOT DOES_BLIP_EXIST dodo_blip_C9 PRINT_NOW CAS9_04 8000 1 ADD_BLIP_FOR_CAR dodo_C9 dodo_blip_C9 SET_BLIP_AS_FRIENDLY dodo_blip_C9 TRUE REMOVE_BLIP goto_blip_C9 ENDIF ENDIF ELSE fail_text_flag_C9 = 1 $fail_text_C9 = CAS9_F1 GOTO mission_casino9_FAILED ENDIF ENDIF GOTO mission_casino9_MAIN_steal_plane LVAR_INT dodo_door_C9 shamal_door_C9 cutscene_status_C9 in_air_stuff_C9 mission_casino9_CUT_hijack_shamal_setup: DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DISPLAY_ZONE_NAMES FALSE in_air_stuff_C9 = 1 LOAD_MISSION_AUDIO 3 SOUND_PLANE_DOOR_KICK SET_PLAYER_CONTROL player1 OFF IF NOT IS_CAR_DEAD shamal_C9 SET_CAR_HEADING shamal_C9 0.0 SET_PLANE_UNDERCARRIAGE_UP shamal_C9 TRUE ENDIF IF NOT IS_CAR_DEAD dodo_C9 dodo_X_C9 = shamal_X_C9 dodo_Y_C9 = shamal_Y_C9 - 25.0 dodo_Z_C9 = shamal_Z_C9 + 20.0 SET_CAR_COORDINATES dodo_C9 dodo_X_C9 dodo_Y_C9 dodo_Z_C9 SET_CAR_HEADING dodo_C9 0.0 FREEZE_CAR_POSITION dodo_C9 TRUE SET_CAR_HEALTH dodo_C9 4000 // just in case the player has just started to eject as cutscene started IF NOT IS_CHAR_IN_CAR scplayer dodo_C9 WARP_CHAR_INTO_CAR scplayer dodo_C9 ENDIF ENDIF DELETE_CHECKPOINT corona_C9 REQUEST_ANIMATION misc WHILE NOT HAS_ANIMATION_LOADED MISC WAIT 0 ENDWHILE cam_pos_X_C9 = -3.0 cam_pos_Y_C9 = -4.0 cam_pos_Z_C9 = 0.0 cam_look_X_C9 = -1.0 cam_look_Y_C9 = 0.0 cam_look_Z_C9 = 0.0 IF NOT IS_CAR_DEAD dodo_C9 ATTACH_CAMERA_TO_VEHICLE dodo_C9 cam_pos_X_C9 cam_pos_Y_C9 cam_pos_Z_C9 cam_look_X_C9 cam_look_Y_C9 cam_look_Z_C9 2.0 JUMP_CUT ENDIF cutscene_status_C9 = 0 DO_FADE 400 FADE_IN SWITCH_WIDESCREEN ON TIMERA = 0 TIMERB = 0 CLEAR_WANTED_LEVEL player1 SET_MAX_WANTED_LEVEL 0 SKIP_CUTSCENE_START LVAR_FLOAT dodo_roll_C9 mission_casino9_CUT_hijack_shamal: WAIT 0 IF NOT IS_CAR_DEAD shamal_C9 AND NOT IS_CAR_DEAD dodo_C9 SHAKE_CAM 20 dodo_Y_C9 +=@ 1.0 SET_CAR_COORDINATES dodo_C9 dodo_X_C9 dodo_Y_C9 dodo_Z_C9 shamal_Y_C9 +=@ 1.0 SET_CAR_COORDINATES shamal_C9 shamal_X_C9 shamal_Y_C9 shamal_Z_C9 SWITCH cutscene_status_C9 CASE 0 IF TIMERB < 1000 BREAK ENDIF ATTACH_CHAR_TO_CAR scplayer dodo_C9 0.0 0.0 0.0 FACING_FORWARD 0.0 WEAPONTYPE_UNARMED TASK_PLAY_ANIM scplayer plane_exit MISC 1000.0 FALSE FALSE FALSE FALSE 0 frame_time_C9[0] = 741 door_ratio_C9[0] = 0.0 frame_time_C9[1] = 794 door_ratio_C9[1] = 0.33 frame_time_C9[2] = 847 door_ratio_C9[2] = 0.71 frame_time_C9[3] = 953 door_ratio_C9[3] = 1.0 frame_time_C9[4] = 1006 door_ratio_C9[4] = 0.87 frame_time_C9[5] = 1059 door_ratio_C9[5] = 0.83 frame_time_C9[6] = 1165 door_ratio_C9[6] = 0.81 frame_time_C9[7] = 2118 door_ratio_C9[7] = 0.81 frame_time_C9[8] = 2277 door_ratio_C9[8] = 0.78 frame_time_C9[9] = 3336 door_ratio_C9[9] = 0.78 frame_time_C9[10] = 4000 door_ratio_C9[10] = 0.78 door_counter_C9 = 0 step_size_C9 = 0.0 animate_plane_C9 = dodo_C9 //PLAY_OBJECT_ANIM dodo_door_C9 smlplane_door MISC 1000.0 FALSE TRUE cutscene_status_C9 ++ CASE 1 IF TIMERB < 1000 BREAK ENDIF IF TIMERB < 1500 GOSUB mission_casino9_SUB_animate_door BREAK ELSE TIMERA = 0 cutscene_status_C9 ++ ENDIF CASE 2 GOSUB mission_casino9_SUB_animate_door IF HAS_MISSION_AUDIO_LOADED 3 ATTACH_MISSION_AUDIO_TO_CAR 3 dodo_C9 PLAY_MISSION_AUDIO 3 cutscene_status_C9 ++ ELSE BREAK ENDIF CASE 3 IF TIMERB < 5000 IF cam_pos_Y_C9 < -1.4 cam_pos_Y_C9 +=@ 0.1 ATTACH_CAMERA_TO_VEHICLE dodo_C9 cam_pos_X_C9 cam_pos_Y_C9 cam_pos_Z_C9 cam_look_X_C9 cam_look_Y_C9 cam_look_Z_C9 2.0 JUMP_CUT ENDIF GOSUB mission_casino9_SUB_animate_door BREAK ENDIF cutscene_status_C9 ++ CASE 4 IF cam_pos_X_C9 > -7.0 cam_pos_X_C9 -=@ 0.1 cam_pos_Z_C9 -=@ 0.045 ATTACH_CAMERA_TO_VEHICLE dodo_C9 cam_pos_X_C9 cam_pos_Y_C9 cam_pos_Z_C9 cam_look_X_C9 cam_look_Y_C9 cam_look_Z_C9 2.0 JUMP_CUT ENDIF LVAR_FLOAT anim_time_C9 GET_CHAR_ANIM_CURRENT_TIME scplayer plane_exit anim_time_C9 IF anim_time_C9 > 0.95 SKIP_CUTSCENE_END DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer DETACH_CHAR_FROM_CAR scplayer FREEZE_CHAR_POSITION scplayer TRUE WHILE IS_CHAR_PLAYING_ANIM scplayer plane_exit WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD shamal_C9 ATTACH_CHAR_TO_CAR scplayer shamal_C9 0.0 0.0 0.0 FACING_FORWARD 360.0 WEAPONTYPE_UNARMED ENDIF WAIT 0 // wait a frame so object realises its on screen and anim will show??? DO_FADE 50 FADE_IN TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer Plane_hijack MISC 1000.0 FALSE FALSE FALSE FALSE 0 frame_time_C9[0] = 3229 door_ratio_C9[0] = 0.0 frame_time_C9[1] = 3282 door_ratio_C9[1] = 0.04 frame_time_C9[2] = 3335 door_ratio_C9[2] = 0.09 frame_time_C9[3] = 3388 door_ratio_C9[3] = 0.14 frame_time_C9[4] = 3440 door_ratio_C9[4] = 0.19 frame_time_C9[5] = 3493 door_ratio_C9[5] = 0.22 frame_time_C9[6] = 5028 door_ratio_C9[6] = 0.22 frame_time_C9[7] = 5081 door_ratio_C9[7] = 0.15 frame_time_C9[8] = 5134 door_ratio_C9[8] = 0.08 frame_time_C9[9] = 5187 door_ratio_C9[9] = 0.01 frame_time_C9[10] = 5240 door_ratio_C9[10] = 0.0 door_counter_C9 = 0 step_size_C9 = 0.0 animate_plane_C9 = shamal_C9 // start cam_pos_X_C9 = -3.0 cam_pos_Y_C9 = 6.0 cam_pos_Z_C9 = -0.5 cam_look_X_C9 = -2.0 cam_look_Y_C9 = -8.0 cam_look_Z_C9 = 1.0 CAMERA_SET_SHAKE_SIMULATION_SIMPLE 1 20000.0 3.0 TIMERA = 0 TIMERB = 0 IF NOT IS_CAR_DEAD dodo_C9 FREEZE_CAR_POSITION dodo_C9 FALSE ENDIF dodo_roll_C9 = 0.0 SKIP_CUTSCENE_START cutscene_status_C9 = 5 ELSE GOSUB mission_casino9_SUB_animate_door BREAK ENDIF CASE 5 IF TIMERB < 7000 //IF IS_CHAR_PLAYING_ANIM scplayer Plane_hijack IF NOT IS_CAR_DEAD dodo_C9 dodo_roll_C9 -=@ 3.0 dodo_X_C9 -=@ 0.3 dodo_Y_C9 +=@ 0.3 dodo_Z_C9 -=@ 0.3 SET_CAR_COORDINATES dodo_C9 dodo_X_C9 dodo_Y_C9 dodo_Z_C9 SET_CAR_ROLL dodo_C9 dodo_roll_C9 ENDIF GOSUB mission_casino9_SUB_animate_door GOSUB mission_casino9_SUB_slide_camera_along BREAK ENDIF SKIP_CUTSCENE_END DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CAMERA_RESET_NEW_SCRIPTABLES CLEAR_CHAR_TASKS_IMMEDIATELY scplayer DETACH_CHAR_FROM_CAR scplayer FREEZE_CHAR_POSITION scplayer TRUE WHILE IS_CHAR_PLAYING_ANIM scplayer Plane_hijack WAIT 0 ENDWHILE MARK_CHAR_AS_NO_LONGER_NEEDED pilot_C9 MARK_CAR_AS_NO_LONGER_NEEDED dodo_C9 MARK_CAR_AS_NO_LONGER_NEEDED shamal_C9 MARK_MODEL_AS_NO_LONGER_NEEDED WMYPLT MARK_MODEL_AS_NO_LONGER_NEEDED DODO MARK_MODEL_AS_NO_LONGER_NEEDED SHAMAL REMOVE_ANIMATION MISC SET_AREA_VISIBLE 1 SET_CHAR_COORDINATES scplayer 1.6127 34.7411 1199.0 SET_CHAR_HEADING scplayer 180.0 FREEZE_CHAR_POSITION scplayer FALSE SET_CHAR_AREA_VISIBLE scplayer 1 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER GOTO mission_casino9_MAIN_inside_shamal_setup ENDSWITCH ENDIF GOTO mission_casino9_CUT_hijack_shamal LVAR_INT frame_time_C9[11] door_C9 door_status_C9 door_counter_C9 animate_plane_C9 LVAR_FLOAT door_ratio_C9[11] step_size_C9 current_door_ratio_C9 LVAR_FLOAT ft1_C9 ft2_C9 dr1_C9 dr2_C9 mission_casino9_SUB_animate_door: IF door_counter_C9 < 11 IF TIMERA < frame_time_C9[door_counter_C9] current_door_ratio_C9 += step_size_C9 IF current_door_ratio_C9 < 0.0 current_door_ratio_C9 = 0.0 ELSE IF current_door_ratio_C9 > 1.0 current_door_ratio_C9 = 1.0 ENDIF ENDIF IF step_size_C9 >= 0.0 IF current_door_ratio_C9 > door_ratio_C9[door_counter_C9] current_door_ratio_C9 = door_ratio_C9[door_counter_C9] ENDIF ELSE IF current_door_ratio_C9 < door_ratio_C9[door_counter_C9] current_door_ratio_C9 = door_ratio_C9[door_counter_C9] ENDIF ENDIF ELSE ft1_C9 =# frame_time_C9[door_counter_C9] dr1_C9 = door_ratio_C9[door_counter_C9] door_counter_C9 ++ IF door_counter_C9 > 10 RETURN ENDIF ft2_C9 =# frame_time_C9[door_counter_C9] dr2_C9 = door_ratio_C9[door_counter_C9] ft2_C9 -= ft1_C9 dr2_C9 -= dr1_C9 dr2_C9 /= ft2_C9 step_size_C9 = dr2_C9 * ft2_C9 current_door_ratio_C9 += step_size_C9 ENDIF ENDIF IF NOT IS_CAR_DEAD animate_plane_C9 OPEN_CAR_DOOR_A_BIT animate_plane_C9 FRONT_LEFT_DOOR current_door_ratio_C9 ENDIF RETURN LVAR_INT camera_finished_C9 mission_casino9_SUB_slide_camera_along: IF NOT IS_CAR_DEAD shamal_C9 IF camera_finished_C9 = 0 IF cam_pos_X_C9 <= -4.0 camera_finished_C9 = 1 RETURN ELSE cam_pos_X_C9 +=@ -0.02 cam_pos_Y_C9 +=@ 0.02 cam_pos_Z_C9 +=@ -0.01 cam_look_Y_C9 +=@ 0.23 cam_look_Z_C9 +=@ -0.02 ENDIF ATTACH_CAMERA_TO_VEHICLE shamal_C9 cam_pos_X_C9 cam_pos_Y_C9 cam_pos_Z_C9 cam_look_X_C9 cam_look_Y_C9 cam_look_Z_C9 0.0 JUMP_CUT ENDIF ENDIF RETURN // hitman stuff LVAR_INT hitman_C9[4] hitman_status_C9[4] hitman_shooting_C9[4] hitman_timer_C9[4] hitman_timer_limit_C9[4] hitman_ducked_C9[4] hitman_opposite_C9[4] LVAR_INT total_hitmen_C9 hitman_standing_C9 hitmen_available_C9 last_hitman_standing_C9 hitman_health_C9 LVAR_INT hitman_order_C9[4] hitman_pointer_C9 LVAR_FLOAT min_heading_C9[4] max_heading_C9[4] min_Z_C9[4] max_Z_C9[4] // player stuff LVAR_INT player_hiding_C9 player_status_C9 LVAR_INT lean_box_C9 LVAR_FLOAT lean_X_C9 lean_Y_C9 lean_Z_C9 LVAR_INT baggage_doors_C9[3] mission_casino9_MAIN_inside_shamal_setup: //view_integer_variable player_hiding_c9 player_hiding_c9 in_air_stuff_C9 = 0 // mafia REQUEST_MODEL VMAFF1 REQUEST_MODEL VMAFF2 REQUEST_MODEL VMAFF3 REQUEST_MODEL VMAFF4 // weapons REQUEST_MODEL COLT45 // objects REQUEST_MODEL JET_BAGGAGE_DOOR REQUEST_MODEL CARDBOARDBOX2 //actual jet - help streaming REQUEST_MODEL jet_interior WHILE NOT HAS_MODEL_LOADED VMAFF1 OR NOT HAS_MODEL_LOADED VMAFF2 OR NOT HAS_MODEL_LOADED VMAFF3 OR NOT HAS_MODEL_LOADED VMAFF4 OR NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED JET_BAGGAGE_DOOR WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED CARDBOARDBOX2 OR NOT HAS_MODEL_LOADED jet_interior WAIT 0 ENDWHILE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY empty_dm_C9 LOAD_SCENE_IN_DIRECTION 2.3947 32.9835 1198.5938 155.9863 lean_X_C9 = 2.90 lean_Y_C9 = 32.4 lean_Z_C9 = 1198.75 // 0 = standing, 1 = moving, 2 = ducked player_status_C9 = 0 CREATE_OBJECT CARDBOARDBOX2 lean_X_C9 lean_Y_C9 lean_Z_C9 lean_box_C9 SET_OBJECT_AREA_VISIBLE lean_box_C9 1 SET_OBJECT_DYNAMIC lean_box_C9 FALSE SET_OBJECT_COLLISION lean_box_C9 FALSE SET_OBJECT_VISIBLE lean_box_C9 FALSE ATTACH_CHAR_TO_OBJECT scplayer lean_box_C9 0.0 0.0 0.5 FACING_BACK 85.0 WEAPONTYPE_PISTOL SET_HEADING_FOR_ATTACHED_PLAYER player1 30.0 30.0 FREEZE_CHAR_POSITION scplayer TRUE DISPLAY_RADAR FALSE // hitman[0] front left CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 2.9739 28.7207 1198.5938 hitman_C9[0] SET_CHAR_AREA_VISIBLE hitman_C9[0] 1 SET_CHAR_HEADING hitman_C9[0] 0.0 SET_CHAR_HEALTH hitman_C9[0] 150 GIVE_WEAPON_TO_CHAR hitman_C9[0] WEAPONTYPE_PISTOL 3000 SET_CURRENT_CHAR_WEAPON hitman_C9[0] WEAPONTYPE_PISTOL SET_CHAR_DECISION_MAKER hitman_C9[0] empty_dm_C9 SET_CHAR_NEVER_TARGETTED hitman_C9[0] TRUE TASK_STAY_IN_SAME_PLACE hitman_C9[0] TRUE TASK_SIT_DOWN hitman_C9[0] 80000 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD hitman_C9[0] FALSE SET_CHAR_SHOOT_RATE hitman_C9[0] 90 SET_CHAR_ACCURACY hitman_C9[0] 0 hitman_opposite_C9[0] = 2 min_heading_C9[0] = 197.6 max_heading_C9[0] = 214.0 min_Z_C9[0] = 1199.851 max_Z_C9[0] = 1200.366 // hitman[1] front right CREATE_CHAR PEDTYPE_MISSION1 VMAFF2 0.5102 27.6804 1198.5938 hitman_C9[1] SET_CHAR_AREA_VISIBLE hitman_C9[1] 1 SET_CHAR_HEADING hitman_C9[1] 0.0 SET_CHAR_HEALTH hitman_C9[1] 150 GIVE_WEAPON_TO_CHAR hitman_C9[1] WEAPONTYPE_PISTOL 3000 SET_CURRENT_CHAR_WEAPON hitman_C9[1] WEAPONTYPE_PISTOL SET_CHAR_DECISION_MAKER hitman_C9[1] empty_dm_C9 SET_CHAR_NEVER_TARGETTED hitman_C9[1] TRUE TASK_STAY_IN_SAME_PLACE hitman_C9[1] TRUE TASK_SIT_DOWN hitman_C9[1] 80000 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD hitman_C9[1] FALSE SET_CHAR_SHOOT_RATE hitman_C9[1] 90 SET_CHAR_ACCURACY hitman_C9[1] 0 hitman_opposite_C9[1] = 3 min_heading_C9[1] = 158.7 max_heading_C9[1] = 170.2 min_Z_C9[1] = 1199.9723 max_Z_C9[1] = 1200.34 // hitman[2] back left CREATE_CHAR PEDTYPE_MISSION1 VMAFF3 2.8831 26.4404 1198.6011 hitman_C9[2] SET_CHAR_AREA_VISIBLE hitman_C9[2] 1 SET_CHAR_HEADING hitman_C9[2] 0.0 SET_CHAR_HEALTH hitman_C9[2] 150 GIVE_WEAPON_TO_CHAR hitman_C9[2] WEAPONTYPE_PISTOL 3000 SET_CURRENT_CHAR_WEAPON hitman_C9[2] WEAPONTYPE_PISTOL SET_CHAR_DECISION_MAKER hitman_C9[2] empty_dm_C9 SET_CHAR_NEVER_TARGETTED hitman_C9[2] TRUE TASK_STAY_IN_SAME_PLACE hitman_C9[2] TRUE TASK_SIT_DOWN hitman_C9[2] 80000 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD hitman_C9[2] FALSE SET_CHAR_SHOOT_RATE hitman_C9[2] 90 SET_CHAR_ACCURACY hitman_C9[2] 0 hitman_opposite_C9[2] = 0 min_heading_C9[2] = 189.4 max_heading_C9[2] = 196.9 min_Z_C9[2] = 200.1145 max_Z_C9[2] = 200.3232 // hitman[3] back right CREATE_CHAR PEDTYPE_MISSION1 VMAFF4 0.5068 25.3824 1198.6011 hitman_C9[3] SET_CHAR_AREA_VISIBLE hitman_C9[3] 1 SET_CHAR_HEADING hitman_C9[3] 0.0 SET_CHAR_HEALTH hitman_C9[3] 150 GIVE_WEAPON_TO_CHAR hitman_C9[3] WEAPONTYPE_PISTOL 3000 SET_CURRENT_CHAR_WEAPON hitman_C9[3] WEAPONTYPE_PISTOL SET_CHAR_DECISION_MAKER hitman_C9[3] empty_dm_C9 SET_CHAR_NEVER_TARGETTED hitman_C9[3] TRUE TASK_STAY_IN_SAME_PLACE hitman_C9[3] TRUE TASK_SIT_DOWN hitman_C9[3] 80000 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD hitman_C9[3] FALSE SET_CHAR_SHOOT_RATE hitman_C9[3] 90 SET_CHAR_ACCURACY hitman_C9[3] 0 hitman_opposite_C9[3] = 1 min_heading_C9[3] = 167.51 max_heading_C9[3] = 174.11 min_Z_C9[3] = 1200.1476 max_Z_C9[3] = 1200.3279 // start audio $audio_text_enter_C9[0] = &CAS9_AA audio_sound_enter_C9[0]= SOUND_CAS9_AA audio_speaker_enter_C9[0] = hitman_C9[0] $audio_text_enter_C9[1] = &CAS9_AB audio_sound_enter_C9[1]= SOUND_CAS9_AB audio_speaker_enter_C9[1] = hitman_C9[1] $audio_text_enter_C9[2] = &CAS9_AC audio_sound_enter_C9[2]= SOUND_CAS9_AC audio_speaker_enter_C9[2] = hitman_C9[2] $audio_text_enter_C9[3] = &CAS9_AD audio_sound_enter_C9[3]= SOUND_CAS9_AD audio_speaker_enter_C9[3] = hitman_C9[2] // fight audio $audio_text_fight_C9[0] = &CAS9_BA audio_sound_fight_C9[0] = SOUND_CAS9_BA $audio_text_fight_C9[1] = &CAS9_BB audio_sound_fight_C9[1] = SOUND_CAS9_BB $audio_text_fight_C9[2] = &CAS9_BC audio_sound_fight_C9[2] = SOUND_CAS9_BC $audio_text_fight_C9[3] = &CAS9_BD audio_sound_fight_C9[3] = SOUND_CAS9_BD // hide audio $audio_text_hide_C9[0] = &CAS9_CA audio_sound_hide_C9[0] = SOUND_CAS9_CA $audio_text_hide_C9[1] = &CAS9_CB audio_sound_hide_C9[1] = SOUND_CAS9_CB $audio_text_hide_C9[2] = &CAS9_CC audio_sound_hide_C9[2] = SOUND_CAS9_CC $audio_text_hide_C9[3] = &CAS9_CD audio_sound_hide_C9[3] = SOUND_CAS9_CD SET_PLAYER_FIRE_BUTTON player1 FALSE SET_PLAYER_DUCK_BUTTON player1 FALSE player_hiding_C9 = FALSE /// HITMEN SETUP hitman_status_C9[0] = 0 hitman_status_C9[1] = 0 hitman_status_C9[2] = 0 hitman_status_C9[3] = 0 hitmen_available_C9 = 4 last_hitman_standing_C9 = -1 hitman_standing_C9 = -1 CREATE_OBJECT_NO_OFFSET JET_BAGGAGE_DOOR 0.752 25.518 1201.15 baggage_doors_C9[0] CREATE_OBJECT_NO_OFFSET JET_BAGGAGE_DOOR 0.752 28.024 1201.15 baggage_doors_C9[1] CREATE_OBJECT_NO_OFFSET JET_BAGGAGE_DOOR 0.752 30.403 1201.15 baggage_doors_C9[2] SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN ON TIMERA = 0 WHILE TIMERA < 500 WAIT 0 ENDWHILE DO_FADE 500 FADE_IN PRINT_HELP_FOREVER CAS9_H4 WHILE GET_FADING_STATUS WAIT 0 ENDWHILE TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 ENDWHILE SET_PLAYER_FIRE_BUTTON player1 TRUE SWITCH_WIDESCREEN OFF help_text_timer_C9 = 0 GET_GAME_TIMER last_frame_time_C9 LVAR_INT this_frame_time_C9 last_frame_time_C9 time_diff_C9 random_C9 inside_mode_C9 hitman_sequence_C9 player_pos_timer_C9 LVAR_INT help_text_timer_C9 help_text_flag_C9 CHECKPOINT_SAVE 99 mission_casino9_MAIN_inside_shamal: WAIT 0 // update main timer GET_GAME_TIMER this_frame_time_C9 time_diff_C9 = this_frame_time_C9 - last_frame_time_C9 last_frame_time_C9 = this_frame_time_C9 // update custom timers hitman_timer_C9[0] += time_diff_C9 hitman_timer_C9[1] += time_diff_C9 hitman_timer_C9[2] += time_diff_C9 hitman_timer_C9[3] += time_diff_C9 help_text_timer_C9 += time_diff_C9 // makes player duck and lean left and right GOSUB mission_casino9_SUB_player_controls // help text (ducking) GOSUB mission_casino9_help_text IF inside_mode_C9 = 0 IF player_hiding_C9 = 0 OR IS_BUTTON_PRESSED PAD1 CIRCLE OR IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1 IF NOT IS_CHAR_DEAD hitman_C9[0] AND NOT IS_CHAR_DEAD hitman_C9[1] AND NOT IS_CHAR_DEAD hitman_C9[2] AND NOT IS_CHAR_DEAD hitman_C9[3] // hitman[0] get up from chair turn and duck CLEAR_CHAR_TASKS hitman_C9[0] TASK_GO_TO_COORD_WHILE_SHOOTING hitman_C9[0] 3.0228 29.7474 1198.5938 PEDMOVE_RUN 20.0 0.5 scplayer hitman_status_C9[0] = -1 // hitman[1] get up from chair turn and duck CLEAR_CHAR_TASKS hitman_C9[1] TASK_GO_TO_COORD_WHILE_SHOOTING hitman_C9[1] 0.7390 28.6978 1198.5938 PEDMOVE_RUN 20.0 0.5 scplayer hitman_status_C9[1] = -1 // hitman[2] get up from chair move and duck CLEAR_CHAR_TASKS hitman_C9[2] TASK_GO_TO_COORD_WHILE_SHOOTING hitman_C9[2] 2.9224 27.2966 1198.6011 PEDMOVE_RUN 20.0 0.5 scplayer hitman_status_C9[2] = -1 // hitman[3] get up from chair move and duck CLEAR_CHAR_TASKS hitman_C9[3] TASK_GO_TO_COORD_WHILE_SHOOTING hitman_C9[3] 0.5596 26.2475 1198.6011 PEDMOVE_RUN 20.0 0.5 scplayer hitman_status_C9[3] = -1 inside_mode_C9 = 1 ENDIF ENDIF ELSE IF NOT audio_status_C9 = 2 GOSUB mission_casino9_AUDIO_dialogue ENDIF IF NOT hitmen_available_C9 = 0 // checks hitmen in random order - used to avoid loads of checks later on GENERATE_RANDOM_INT_IN_RANGE 0 24 random_C9 SWITCH random_C9 CASE 0 hitman_order_C9[0] = 0 hitman_order_C9[1] = 1 hitman_order_C9[2] = 2 hitman_order_C9[3] = 3 BREAK CASE 1 hitman_order_C9[0] = 0 hitman_order_C9[1] = 1 hitman_order_C9[2] = 3 hitman_order_C9[3] = 2 BREAK CASE 2 hitman_order_C9[0] = 0 hitman_order_C9[1] = 2 hitman_order_C9[2] = 1 hitman_order_C9[3] = 3 BREAK CASE 3 hitman_order_C9[0] = 0 hitman_order_C9[1] = 2 hitman_order_C9[2] = 3 hitman_order_C9[3] = 1 BREAK CASE 4 hitman_order_C9[0] = 0 hitman_order_C9[1] = 3 hitman_order_C9[2] = 1 hitman_order_C9[3] = 2 BREAK CASE 5 hitman_order_C9[0] = 0 hitman_order_C9[1] = 3 hitman_order_C9[2] = 2 hitman_order_C9[3] = 1 BREAK CASE 6 hitman_order_C9[0] = 1 hitman_order_C9[1] = 0 hitman_order_C9[2] = 2 hitman_order_C9[3] = 3 BREAK CASE 7 hitman_order_C9[0] = 1 hitman_order_C9[1] = 0 hitman_order_C9[2] = 3 hitman_order_C9[3] = 2 BREAK CASE 8 hitman_order_C9[0] = 1 hitman_order_C9[1] = 2 hitman_order_C9[2] = 0 hitman_order_C9[3] = 3 BREAK CASE 9 hitman_order_C9[0] = 1 hitman_order_C9[1] = 2 hitman_order_C9[2] = 3 hitman_order_C9[3] = 0 BREAK CASE 10 hitman_order_C9[0] = 1 hitman_order_C9[1] = 3 hitman_order_C9[2] = 0 hitman_order_C9[3] = 2 BREAK CASE 11 hitman_order_C9[0] = 1 hitman_order_C9[1] = 3 hitman_order_C9[2] = 2 hitman_order_C9[3] = 0 BREAK CASE 12 hitman_order_C9[0] = 2 hitman_order_C9[1] = 0 hitman_order_C9[2] = 1 hitman_order_C9[3] = 3 BREAK CASE 13 hitman_order_C9[0] = 2 hitman_order_C9[1] = 0 hitman_order_C9[2] = 3 hitman_order_C9[3] = 1 BREAK CASE 14 hitman_order_C9[0] = 2 hitman_order_C9[1] = 1 hitman_order_C9[2] = 0 hitman_order_C9[3] = 3 BREAK CASE 15 hitman_order_C9[0] = 2 hitman_order_C9[1] = 1 hitman_order_C9[2] = 3 hitman_order_C9[3] = 0 BREAK CASE 16 hitman_order_C9[0] = 2 hitman_order_C9[1] = 3 hitman_order_C9[2] = 0 hitman_order_C9[3] = 1 BREAK CASE 17 hitman_order_C9[0] = 2 hitman_order_C9[1] = 3 hitman_order_C9[2] = 1 hitman_order_C9[3] = 0 BREAK CASE 18 hitman_order_C9[0] = 3 hitman_order_C9[1] = 0 hitman_order_C9[2] = 1 hitman_order_C9[3] = 2 BREAK CASE 19 hitman_order_C9[0] = 3 hitman_order_C9[1] = 0 hitman_order_C9[2] = 2 hitman_order_C9[3] = 1 BREAK CASE 20 hitman_order_C9[0] = 3 hitman_order_C9[1] = 1 hitman_order_C9[2] = 0 hitman_order_C9[3] = 2 BREAK CASE 21 hitman_order_C9[0] = 3 hitman_order_C9[1] = 1 hitman_order_C9[2] = 2 hitman_order_C9[3] = 0 BREAK CASE 22 hitman_order_C9[0] = 3 hitman_order_C9[1] = 2 hitman_order_C9[2] = 0 hitman_order_C9[3] = 1 BREAK CASE 23 hitman_order_C9[0] = 3 hitman_order_C9[1] = 2 hitman_order_C9[2] = 1 hitman_order_C9[3] = 0 BREAK ENDSWITCH GOSUB mission_casino9_SUB_hitmen ELSE GOTO mission_casino9_MAIN_pilot_entry ENDIF ENDIF GOTO mission_casino9_MAIN_inside_shamal mission_casino9_SUB_hitmen: pointer_C9 = 0 WHILE pointer_C9 < 4 hitman_pointer_C9 = hitman_order_C9[pointer_C9] IF NOT IS_CHAR_DEAD hitman_C9[hitman_pointer_C9] SWITCH hitman_status_C9[hitman_pointer_C9] CASE -1 // running into position GET_SCRIPT_TASK_STATUS hitman_C9[hitman_pointer_C9] TASK_GO_TO_COORD_WHILE_SHOOTING task_progress_C9 IF task_progress_C9 = FINISHED_TASK FREEZE_CHAR_POSITION hitman_C9[hitman_pointer_C9] TRUE TASK_TOGGLE_DUCK hitman_C9[hitman_pointer_C9] TRUE SET_CHAR_ACCURACY hitman_C9[hitman_pointer_C9] 65 hitman_status_C9[hitman_pointer_C9] = 0 ENDIF CASE 0 // ducked down not shooting IF hitman_standing_C9 = -1 GET_SCRIPT_TASK_STATUS hitman_C9[hitman_pointer_C9] TASK_TOGGLE_DUCK task_progress_C9 IF task_progress_C9 = FINISHED_TASK // check to make hitmen pop up either side of plane if still alive pointer2_C9 = hitman_opposite_C9[hitman_pointer_C9] IF NOT last_hitman_standing_C9 = pointer2_C9 hitman_standing_C9 = hitman_pointer_C9 ELSE IF hitmen_available_C9 = 1 hitman_standing_C9 = hitman_pointer_C9 ELSE IF hitmen_available_C9 = 2 IF NOT IS_CHAR_DEAD hitman_C9[pointer2_C9] hitman_standing_C9 = hitman_pointer_C9 ENDIF ENDIF ENDIF ENDIF ENDIF IF hitman_standing_C9 = hitman_pointer_C9 hitman_status_C9[hitman_pointer_C9] = 4 hitman_shooting_C9[hitman_pointer_C9] = 0 hitman_timer_C9[hitman_pointer_C9] = 0 GET_CHAR_HEALTH hitman_C9[hitman_pointer_C9] hitman_health_C9 hitman_timer_limit_C9[hitman_pointer_C9] = hitman_health_C9 * 15 IF hitman_timer_limit_C9[hitman_pointer_C9] < 2000 hitman_timer_limit_C9[hitman_pointer_C9] = 2000 ELSE IF hitman_timer_limit_C9[hitman_pointer_C9] > 5000 hitman_timer_limit_C9[hitman_pointer_C9] = 5000 ENDIF ENDIF CLEAR_CHAR_TASKS/*_IMMEDIATELY*/ hitman_C9[hitman_pointer_C9] TASK_TOGGLE_DUCK hitman_C9[hitman_pointer_C9] FALSE SET_CHAR_ALLOWED_TO_DUCK hitman_C9[hitman_pointer_C9] FALSE ENDIF ENDIF BREAK CASE 1 // stood up shooting // check if this hitman has been stood up for enough time, or player is aiming at him IF hitman_standing_C9 = hitman_pointer_C9 IF NOT hitmen_available_C9 = 1 IF hitman_timer_C9[hitman_pointer_C9] >= hitman_timer_limit_C9[hitman_pointer_C9] //hitman_standing_C9 = -1 // make hitman stay standing for a short time before he sits down hitman_status_C9[hitman_pointer_C9] = 2 hitman_timer_C9[hitman_pointer_C9] = 0 hitman_timer_limit_C9[hitman_pointer_C9] = 500 BREAK ELSE GET_CHAR_HEADING scplayer heading IF heading >= min_heading_C9[hitman_pointer_C9] AND heading <= max_heading_C9[hitman_pointer_C9] GET_ACTIVE_CAMERA_POINT_AT x y z IF z >= min_Z_C9[hitman_pointer_C9] AND z <= max_Z_C9[hitman_pointer_C9] //hitman_standing_C9 = -1 // make hitman stay standing for a short time before he sits down hitman_status_C9[hitman_pointer_C9] = 2 hitman_timer_C9[hitman_pointer_C9] = 0 hitman_timer_limit_C9[hitman_pointer_C9] = 700 BREAK ENDIF ENDIF ENDIF ENDIF IF player_hiding_C9 = 0 IF NOT hitman_shooting_C9[hitman_pointer_C9] = 1 hitman_shooting_C9[hitman_pointer_C9] = 1 CLEAR_CHAR_TASKS/*_IMMEDIATELY*/ hitman_C9[hitman_pointer_C9] LVAR_FLOAT playerX LVAR_FLOAT playerY LVAR_FLOAT playerZ GET_CHAR_COORDINATES scplayer playerX playerY playerZ TASK_SHOOT_AT_COORD hitman_C9[hitman_pointer_C9] playerX playerY playerZ 1500 //TASK_KILL_CHAR_ON_FOOT hitman_C9[hitman_pointer_C9] scplayer ENDIF IF fight_hide_status_C9 = 1 AND audio_fight_used_C9[hitman_pointer_C9] = 0 load_sample = audio_sound_fight_C9[hitman_pointer_C9] $load_text = $audio_text_fight_C9[hitman_pointer_C9] START_NEW_SCRIPT audio_load_and_play 2 100 hitman_C9[hitman_pointer_C9] fight_hide_status_C9 = 0 TIMERB = 0 audio_fight_used_C9[hitman_pointer_C9] ++ ENDIF ELSE IF fight_hide_status_C9 = 2 AND audio_hide_used_C9[hitman_pointer_C9] = 0 load_sample = audio_sound_hide_C9[hitman_pointer_C9] $load_text = $audio_text_hide_C9[hitman_pointer_C9] START_NEW_SCRIPT audio_load_and_play 2 100 hitman_C9[hitman_pointer_C9] fight_hide_status_C9 = 0 TIMERB = 0 audio_hide_used_C9[hitman_pointer_C9] ++ ENDIF IF NOT hitman_shooting_C9[hitman_pointer_C9] = 2 hitman_shooting_C9[hitman_pointer_C9] = 2 CLEAR_CHAR_TASKS/*_IMMEDIATELY*/ hitman_C9[hitman_pointer_C9] TASK_SHOOT_AT_COORD hitman_C9[hitman_pointer_C9] 1.8121 37.2617 1200.3959 -1 ENDIF ENDIF ENDIF BREAK CASE 2 // IF hitman_timer_C9[hitman_pointer_C9] >= hitman_timer_limit_C9[hitman_pointer_C9] hitman_status_C9[hitman_pointer_C9] = 0 CLEAR_CHAR_TASKS/*_IMMEDIATELY*/ hitman_C9[hitman_pointer_C9] SET_CHAR_ALLOWED_TO_DUCK hitman_C9[hitman_pointer_C9] TRUE GET_SCRIPT_TASK_STATUS hitman_C9[hitman_pointer_C9] TASK_TOGGLE_DUCK task_progress_C9 IF task_progress_C9 = FINISHED_TASK TASK_TOGGLE_DUCK hitman_C9[hitman_pointer_C9] TRUE ELSE hitman_status_C9[hitman_pointer_C9] = 3 ENDIF last_hitman_standing_C9 = hitman_pointer_C9 hitman_standing_C9 = -1 ELSE IF player_hiding_C9 = FALSE IF NOT hitman_shooting_C9[hitman_pointer_C9] = 1 hitman_shooting_C9[hitman_pointer_C9] = 1 CLEAR_CHAR_TASKS hitman_C9[hitman_pointer_C9] TASK_KILL_CHAR_ON_FOOT hitman_C9[hitman_pointer_C9] scplayer ENDIF ELSE IF NOT hitman_shooting_C9[hitman_pointer_C9] = 2 hitman_shooting_C9[hitman_pointer_C9] = 2 CLEAR_CHAR_TASKS hitman_C9[hitman_pointer_C9] TASK_SHOOT_AT_COORD hitman_C9[hitman_pointer_C9] 1.8121 37.2617 1200.3959 -1 ENDIF ENDIF ENDIF BREAK // wanting to sit but for some reason couldnt CASE 3 GET_SCRIPT_TASK_STATUS hitman_C9[hitman_pointer_C9] TASK_TOGGLE_DUCK task_progress_C9 IF task_progress_C9 = FINISHED_TASK CLEAR_CHAR_TASKS hitman_C9[hitman_pointer_C9] TASK_TOGGLE_DUCK hitman_C9[hitman_pointer_C9] TRUE hitman_status_C9[hitman_pointer_C9] = 0 ENDIF BREAK CASE 4 IF hitman_timer_C9[hitman_pointer_C9] >= 200 hitman_timer_C9[hitman_pointer_C9] = 0 hitman_status_C9[hitman_pointer_C9] = 1 ENDIF BREAK ENDSWITCH ELSE IF NOT hitman_status_C9[hitman_pointer_C9] = -2 hitman_status_C9[hitman_pointer_C9] = -2 hitmen_available_C9 -- IF hitman_standing_C9 = hitman_pointer_C9 last_hitman_standing_C9 = hitman_pointer_C9 hitman_standing_C9 = -1 ENDIF ENDIF ENDIF pointer_C9 ++ ENDWHILE RETURN LVAR_INT moving_stick_C9 mission_casino9_SUB_player_controls: ADD_WIDGET_FLAG WIDGET_PED_MOVE 4 // WIDGET_FLAG_ENABLED_IN_CUTSCENE GET_OBJECT_COORDINATES lean_box_C9 lean_X_C9 lean_Y_C9 lean_Z_C9 // PLAYER HIDING - also sets hitmen text IF lean_X_C9 > 2.6 OR lean_X_C9 < 0.2 IF player_hiding_C9 = 0 player_hiding_C9 = 1 TIMERB = 0 ELSE IF TIMERB > 9000 IF audio_status_C9 = 2 fight_hide_status_C9 = 2 ENDIF ENDIF ENDIF ELSE IF player_hiding_C9 = 1 player_hiding_C9 = 0 TIMERB = 0 ELSE IF TIMERB > 9000 IF audio_status_C9 = 2 fight_hide_status_C9 = 1 ENDIF ENDIF ENDIF ENDIF LVAR_INT nUsingWidget nUsingWidget = 0 IF IS_WIDGET_PRESSED WIDGET_PED_MOVE nUsingWidget = 1 ENDIF // FIRST PERSON CONTROLS IN PLANE IF IS_BUTTON_PRESSED PAD1 RIGHTSTICKX OR IS_BUTTON_PRESSED PAD1 RIGHTSTICKY OR nUsingWidget = 1 moving_stick_C9 = 1 ELSE moving_stick_C9 = 0 ENDIF // JOYPAD VERSION? IF IS_PC_USING_JOYPAD AND nUsingWidget = 0 IF NOT IS_BUTTON_PRESSED PAD1 LEFTSHOULDER2 AND NOT IS_BUTTON_PRESSED PAD1 RIGHTSHOULDER2 // NONE SLIDE_OBJECT lean_box_C9 1.7 lean_Y_C9 lean_Z_C9 0.09 0.0 0.0 FALSE IF NOT lean_X_C9 = 1.7 AND moving_stick_C9 = 0 SET_HEADING_FOR_ATTACHED_PLAYER player1 90.0 9.0 ENDIF ELSE // IF BOTH BUTTONS ARE PRESSED JUST GO BACK TO THE CENTER IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER2 AND IS_BUTTON_PRESSED PAD1 RIGHTSHOULDER2 SLIDE_OBJECT lean_box_C9 1.7 lean_Y_C9 lean_Z_C9 0.09 0.0 0.0 FALSE IF NOT lean_X_C9 = 1.7 AND moving_stick_C9 = 0 SET_HEADING_FOR_ATTACHED_PLAYER player1 90.0 9.0 ENDIF ELSE // LEAN LEFT IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER2 SLIDE_OBJECT lean_box_C9 2.9 lean_Y_C9 lean_Z_C9 0.09 0.0 0.0 FALSE IF lean_X_C9 < 2.9 AND moving_stick_C9 = 0 SET_HEADING_FOR_ATTACHED_PLAYER player1 30.0 9.0 ENDIF ELSE // LEAN RIGHT IF IS_BUTTON_PRESSED PAD1 RIGHTSHOULDER2 SLIDE_OBJECT lean_box_C9 0.5 lean_Y_C9 lean_Z_C9 0.09 0.0 0.0 FALSE IF lean_X_C9 > 0.5 AND moving_stick_C9 = 0 SET_HEADING_FOR_ATTACHED_PLAYER player1 150.0 9.0 ENDIF ENDIF ENDIF ENDIF ENDIF ELSE // KEYBOARD AND MOUSE IF NOT IS_BUTTON_PRESSED PAD1 LEFTSTICKX AND nUsingWidget = 0 SLIDE_OBJECT lean_box_C9 1.7 lean_Y_C9 lean_Z_C9 0.09 0.0 0.0 FALSE IF NOT lean_X_C9 = 1.7 AND moving_stick_C9 = 0 SET_HEADING_FOR_ATTACHED_PLAYER player1 90.0 9.0 ENDIF ELSE GET_POSITION_OF_ANALOGUE_STICKS PAD1 LStickX LStickY RStickX RStickY IF LStickX < 0 // LEFT SLIDE_OBJECT lean_box_C9 2.9 lean_Y_C9 lean_Z_C9 0.09 0.0 0.0 FALSE IF lean_X_C9 < 2.9 AND moving_stick_C9 = 0 SET_HEADING_FOR_ATTACHED_PLAYER player1 30.0 9.0 ENDIF ELSE // RIGHT SLIDE_OBJECT lean_box_C9 0.5 lean_Y_C9 lean_Z_C9 0.09 0.0 0.0 FALSE IF lean_X_C9 > 0.5 AND moving_stick_C9 = 0 SET_HEADING_FOR_ATTACHED_PLAYER player1 150.0 9.0 ENDIF ENDIF ENDIF ENDIF REMOVE_WIDGET_FLAG WIDGET_PED_MOVE 4 // WIDGET_FLAG_ENABLED_IN_CUTSCENE RETURN mission_casino9_help_text: SWITCH help_text_flag_C9 CASE 0 IF help_text_timer_C9 >= 6000 CLEAR_HELP help_text_flag_C9 ++ help_text_timer_C9 = 0 ENDIF BREAK CASE 1 IF player_hiding_C9 = 0 IF help_text_timer_C9 > 20000 //PRINT_HELP_FOREVER CAS9_H2 help_text_flag_C9 ++ help_text_timer_C9 = 0 ENDIF ELSE help_text_timer_C9 = 0 ENDIF BREAK CASE 2 IF help_text_timer_C9 > 6000 CLEAR_HELP help_text_flag_C9 -- help_text_timer_C9 = 0 ENDIF BREAK ENDSWITCH RETURN LVAR_INT audio_status_C9 audio_pointer_C9 fight_hide_status_C9 LVAR_INT audio_sound_enter_C9[4] audio_speaker_enter_C9[4] audio_sound_fight_C9[4] audio_sound_hide_C9[4] audio_fight_used_C9[4] audio_hide_used_C9[4] LVAR_TEXT_LABEL audio_text_enter_C9[4] audio_text_fight_C9[4] audio_text_hide_C9[4] mission_casino9_AUDIO_dialogue: SWITCH audio_status_C9 CASE 0 IF audio_pointer_C9 < 4 load_sample = audio_sound_enter_C9[audio_pointer_C9] $load_text = $audio_text_enter_C9[audio_pointer_C9] START_NEW_SCRIPT audio_load_and_play 2 100 audio_speaker_enter_C9[audio_pointer_C9] audio_pointer_C9 ++ audio_status_C9 ++ ELSE TIMERB = 0 audio_status_C9 = 2 BREAK ENDIF CASE 1 IF SLOT_status[preload_slot] = -3 audio_status_C9 -- SLOT_status[preload_slot] = -4 ENDIF BREAK ENDSWITCH RETURN mission_casino9_MAIN_pilot_entry: IF NOT SLOT_status[0] < 0 SLOT_status[0] = -2 ENDIF IF NOT SLOT_status[0] < 0 SLOT_status[1] = -2 ENDIF CLEAR_PRINTS CLEAR_HELP REQUEST_MODEL WMYPLT WHILE NOT HAS_MODEL_LOADED WMYPLT WAIT 0 ENDWHILE TIMERA = 0 WHILE TIMERA < 1000 WAIT 0 ENDWHILE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DETACH_CHAR_FROM_CAR scplayer SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON FREEZE_CHAR_POSITION scplayer FALSE SET_FIXED_CAMERA_POSITION 2.7271 24.9650 1201.5353 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2.4220 25.7162 1200.9501 JUMP_CUT SET_CHAR_COORDINATES scplayer 1.8227 31.0635 1198.6089 SET_CHAR_HEADING scplayer 180.0 SET_OBJECT_COORDINATES lean_box_C9 1.7 26.8 1198.75 OPEN_SEQUENCE_TASK sequence_C9 TASK_TOGGLE_DUCK -1 TRUE TASK_STAND_STILL -1 1000 TASK_GO_STRAIGHT_TO_COORD -1 1.7221 26.7679 1198.6016 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK sequence_C9 PERFORM_SEQUENCE_TASK scplayer sequence_C9 CLEAR_SEQUENCE_TASK sequence_C9 DO_FADE 500 FADE_IN TIMERA = 0 WHILE TIMERA < 3000 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_MISSION1 WMYPLT 1.8810 34.9202 1198.6016 pilot_C9 SET_CHAR_HEADING pilot_C9 180.0 GIVE_WEAPON_TO_CHAR pilot_C9 WEAPONTYPE_PISTOL 3000 SET_CURRENT_CHAR_WEAPON pilot_C9 WEAPONTYPE_PISTOL SET_CHAR_DROPS_WEAPONS_WHEN_DEAD pilot_C9 FALSE SET_CHAR_SHOOT_RATE pilot_C9 70 SET_CHAR_ACCURACY pilot_C9 65 SET_CHAR_DECISION_MAKER pilot_C9 empty_dm_C9 SET_CHAR_NEVER_TARGETTED pilot_C9 TRUE TASK_STAY_IN_SAME_PLACE pilot_C9 TRUE TASK_GO_TO_COORD_ANY_MEANS pilot_C9 1.7462 32.3896 1198.6016 PEDMOVE_WALK -1 TIMERA = 0 WHILE TIMERA < 3000 WAIT 0 ENDWHILE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RESTORE_CAMERA TASK_TOGGLE_DUCK scplayer FALSE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer ATTACH_CHAR_TO_OBJECT scplayer lean_box_C9 0.0 0.0 0.5 FACING_FORWARD 85.0 WEAPONTYPE_PISTOL SET_HEADING_FOR_ATTACHED_PLAYER player1 270.0 270.0 FREEZE_CHAR_POSITION scplayer TRUE SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF DO_FADE 0 FADE_IN pilot_status_C9 = 0 load_sample = SOUND_CAS9_DA $load_text = &CAS9_DA START_NEW_SCRIPT audio_load_and_play 2 100 pilot_C9 IF NOT IS_CHAR_DEAD pilot_C9 TASK_KILL_CHAR_ON_FOOT pilot_C9 scplayer ENDIF LVAR_INT pilot_status_C9 mission_casino9_MAIN_pilot_attack: WAIT 0 IF IS_CHAR_DEAD pilot_C9 GOTO mission_casino9_MAIN_fly_back ENDIF GOTO mission_casino9_MAIN_pilot_attack mission_casino9_MAIN_fly_back: CHECKPOINT_SAVE 99 REQUEST_MODEL SHAMAL WHILE NOT HAS_MODEL_LOADED SHAMAL WAIT 0 ENDWHILE TIMERA = 0 WHILE TIMERA < 1000 WAIT 0 ENDWHILE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE FREEZE_CHAR_POSITION scplayer FALSE DETACH_CHAR_FROM_CAR scplayer SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON DISPLAY_RADAR TRUE SET_FIXED_CAMERA_POSITION 3.0968 36.5960 1200.3688 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2.4708 35.9141 1199.9906 JUMP_CUT SET_CHAR_COORDINATES scplayer 1.7462 32.3896 1198.6016 SET_CHAR_HEADING scplayer 0.0 OPEN_SEQUENCE_TASK sequence_C9 TASK_STAND_STILL -1 550 TASK_GO_TO_COORD_ANY_MEANS -1 1.7037 34.9246 1198.6016 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK sequence_C9 PERFORM_SEQUENCE_TASK scplayer sequence_C9 CLEAR_SEQUENCE_TASK sequence_C9 DO_FADE 500 FADE_IN TIMERA = 0 WHILE TIMERA < 2500 WAIT 0 ENDWHILE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE MARK_CHAR_AS_NO_LONGER_NEEDED hitman_C9[0] MARK_CHAR_AS_NO_LONGER_NEEDED hitman_C9[1] MARK_CHAR_AS_NO_LONGER_NEEDED hitman_C9[2] MARK_CHAR_AS_NO_LONGER_NEEDED hitman_C9[3] MARK_CHAR_AS_NO_LONGER_NEEDED pilot_C9 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF1 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF2 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF3 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF4 MARK_MODEL_AS_NO_LONGER_NEEDED WMYPLT MARK_MODEL_AS_NO_LONGER_NEEDED jet_interior DELETE_OBJECT lean_box_C9 DELETE_OBJECT baggage_doors_C9[0] DELETE_OBJECT baggage_doors_C9[1] DELETE_OBJECT baggage_doors_C9[2] MARK_MODEL_AS_NO_LONGER_NEEDED JET_BAGGAGE_DOOR MARK_MODEL_AS_NO_LONGER_NEEDED CARDBOARDBOX2 SET_AREA_VISIBLE 0 SET_CHAR_AREA_VISIBLE scplayer 0 LOAD_SCENE 1405.0 6000.0 210.0 REQUEST_COLLISION 1405.0 6000.0 CREATE_CAR shamal 1405.0 6000.0 210.0 shamal_C9 SET_CAR_HEADING shamal_C9 210.0 SET_VEHICLE_AREA_VISIBLE shamal_C9 0 WARP_CHAR_INTO_CAR scplayer shamal_C9 SET_CAR_FORWARD_SPEED shamal_C9 28.0 SET_PLANE_UNDERCARRIAGE_UP shamal_C9 TRUE RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF DISPLAY_ZONE_NAMES TRUE DO_FADE 100 FADE_IN ADD_BLIP_FOR_COORD 1476.2190 1463.6227 9.8203 goto_blip_C9 player_in_shamal_C9 = 1 undercarriage_C9 = 1 SET_MAX_WANTED_LEVEL 6 PRINT_NOW CAS9_41 8000 1 LVAR_INT player_in_shamal_C9 undercarriage_C9 mission_casino9_MAIN_player_in_shamal: WAIT 0 IF NOT IS_CAR_DEAD shamal_C9 IF IS_CHAR_IN_CAR scplayer shamal_C9 IF player_in_shamal_C9 = 0 CLEAR_PRINTS PRINT_NOW CAS9_41 8000 1 REMOVE_BLIP goto_blip_C9 ADD_BLIP_FOR_COORD 1476.2190 1463.6227 9.8203 goto_blip_C9 player_in_shamal_C9 = 1 ENDIF ELSE IF player_in_shamal_C9 = 1 CLEAR_PRINTS PRINT_NOW IN_VEH 8000 1 REMOVE_BLIP goto_blip_C9 ADD_BLIP_FOR_CAR shamal_C9 goto_blip_C9 SET_BLIP_AS_FRIENDLY goto_blip_C9 TRUE player_in_shamal_C9 = 0 ENDIF ENDIF IF IS_CAR_STOPPED_IN_AREA_3D shamal_C9 1636.3195 1144.4778 7.0 1261.4111 1780.6724 14.0 FALSE AND IS_CHAR_IN_AREA_3D scplayer 1636.3195 1144.4778 7.0 1261.4111 1780.6724 14.0 FALSE GOTO mission_casino9_PASSED ENDIF ELSE fail_text_flag_C9 = TRUE $fail_text_C9 = CAS9_F1 GOTO mission_casino9_FAILED ENDIF GOTO mission_casino9_MAIN_player_in_shamal // **************************************** Mission casino9 failed *********************** LVAR_INT player_vehicle_C9 mission_casino9_FAILED: DETACH_CHAR_FROM_CAR scplayer FREEZE_CHAR_POSITION scplayer FALSE PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" IF fail_text_flag_C9 = TRUE PRINT_NOW $fail_text_C9 6000 1 ENDIF LVAR_INT skip_setup_C9 skip_setup_C9 = 0 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer player_vehicle_C9 IF IS_CAR_IN_WATER player_vehicle_C9 skip_setup_C9 = 1 ENDIF ELSE IF NOT IS_PLAYER_USING_JETPACK player1 IF IS_CHAR_IN_WATER scplayer skip_setup_C9 = 1 ELSE IF IS_CHAR_IN_AIR scplayer AND player_fall_state <= 0 skip_setup_C9 = 1 ENDIF ENDIF ENDIF ENDIF IF skip_setup_C9 = 1 SET_UP_SKIP_AFTER_MISSION 2097.0093 1728.2845 9.8203 169.1748 ENDIF RETURN // **************************************** mission casino9 passed ************************ mission_casino9_passed: DISPLAY_RADAR 3 //Pathing on flag_casino_mission_counter ++ //Used to terminate this mission loop in the main script. These varibles will be set up in the main.sc REGISTER_MISSION_PASSED ( CASINO9 ) //Used in the stats PLAYER_MADE_PROGRESS 1 // imy stuff PRINT_WITH_NUMBER_BIG ( M_PASSS ) 15000 5000 1 //"Mission Passed!" //100 being the amount of cash ADD_SCORE player1 15000//amount of cash AWARD_PLAYER_MISSION_RESPECT 30//amount of respect CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 // craig stuff REMOVE_BLIP casino_contact_blip RETURN // ********************************** mission cleanup *********************************** mission_casino9_CLEANUP: DISPLAY_RADAR 3 //Pathing on IF in_air_stuff_C9 = 1 DETACH_CHAR_FROM_CAR scplayer RESTORE_CAMERA_JUMPCUT ENDIF DISPLAY_ZONE_NAMES TRUE IF IS_PLAYER_PLAYING player1 SET_PLAYER_GROUP_RECRUITMENT player1 TRUE SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 ENDIF START_NEW_SCRIPT terminate_audio_controller REMOVE_ANIMATION MISC MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF1 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF2 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF3 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF4 MARK_MODEL_AS_NO_LONGER_NEEDED WMYPLT MARK_MODEL_AS_NO_LONGER_NEEDED FCR900 MARK_MODEL_AS_NO_LONGER_NEEDED DODO MARK_MODEL_AS_NO_LONGER_NEEDED SHAMAL MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED SMLPLANE_DOOR MARK_MODEL_AS_NO_LONGER_NEEDED JET_DOOR MARK_MODEL_AS_NO_LONGER_NEEDED JET_BAGGAGE_DOOR MARK_MODEL_AS_NO_LONGER_NEEDED CARDBOARDBOX2 MARK_MODEL_AS_NO_LONGER_NEEDED jet_interior MARK_CHAR_AS_NO_LONGER_NEEDED hitman_C9[0] MARK_CHAR_AS_NO_LONGER_NEEDED hitman_C9[1] MARK_CHAR_AS_NO_LONGER_NEEDED hitman_C9[2] MARK_CHAR_AS_NO_LONGER_NEEDED hitman_C9[3] MARK_CHAR_AS_NO_LONGER_NEEDED pilot_C9 MARK_CAR_AS_NO_LONGER_NEEDED dodo_C9 MARK_CAR_AS_NO_LONGER_NEEDED shamal_C9 //MARK_OBJECT_AS_NO_LONGER_NEEDED dodo_door_C9 //MARK_OBJECT_AS_NO_LONGER_NEEDED shamal_door_C9 MARK_OBJECT_AS_NO_LONGER_NEEDED baggage_doors_C9[0] MARK_OBJECT_AS_NO_LONGER_NEEDED baggage_doors_C9[1] MARK_OBJECT_AS_NO_LONGER_NEEDED baggage_doors_C9[2] MARK_OBJECT_AS_NO_LONGER_NEEDED lean_box_C9 SET_MAX_WANTED_LEVEL 6 SWITCH_AMBIENT_PLANES TRUE REMOVE_BLIP dodo_blip_C9 REMOVE_BLIP goto_blip_C9 GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* Casino 10 ***************************************** // *********************************** Marco Forelli ************************************* // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME casin10 // Mission start stuff GOSUB mission_start_casino10 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_casino10_failed ENDIF GOSUB mission_cleanup_casino10 MISSION_END { // Variables for mission // general stuff LVAR_INT airport_blip_casino10 airport_blip2_casino10 LVAR_INT flag_played_cut_casino10 // used to tell if the player has skipped at cutscene or not LVAR_INT player_leap_casino10 LVAR_INT roll_left_casino10 // roll left task LVAR_INT roll_right_casino10 // roll right task // Forelli LVAR_INT forelli_casino10 blip_forelli_casino10 flag_forelli_dead_casino10 forelli_run_count_casino10 LVAR_INT time_forelli_casino10 LVAR_INT forelli_taunts_casino10 // used for forelli to shout abuse at the player LVAR_INT forelli_health_casino10 // Forelli bodyguards LVAR_INT bodyguard1_casino10 flag_bodyguard1_dead_casino10 bodyguard1_kill_player_casino10 LVAR_INT bodyguard2_casino10 flag_bodyguard2_dead_casino10 bodyguard2_kill_player_casino10 //Cannon fodder goons LVAR_INT goon1_casino10 flag_goon1_dead_casino10 goon1_attack_player_casino10 LVAR_INT goon2_casino10 flag_goon2_dead_casino10 goon2_attack_player_casino10 LVAR_INT goon3_casino10 flag_goon3_dead_casino10 goon3_kill_player_casino10 LVAR_INT goon4_casino10 flag_goon4_dead_casino10 goon4_kill_player_casino10 LVAR_INT goon5_casino10 flag_goon5_dead_casino10 goon5_task_casino10 goon5_kill_player_casino10 LVAR_INT goon6_casino10 flag_goon6_dead_casino10 goon6_task_casino10 goon6_kill_player_casino10 // Goons on the top floor LVAR_INT top_goon1_casino10 top_goon1_dead_casino10 top_goon1_task2_casino10 top_goon1_kill_player_casino10 LVAR_INT top_goon2_casino10 top_goon2_dead_casino10 top_goon2_task2_casino10 top_goon2_kill_player_casino10 LVAR_INT top_goon3_casino10 top_goon3_dead_casino10 flag_animate_top_goon3_casino10 LVAR_INT top_goon4_casino10 top_goon4_dead_casino10 flag_animate_top_goon4_casino10 // corridor guards LVAR_INT corridor_goon1_casino10 corridor_goon1_dead_casino10 corridor_goon1_kill_player_casino10 LVAR_INT corridor_goon2_casino10 corridor_goon2_dead_casino10 corridor_goon2_kill_player_casino10 LVAR_INT corridor_goon3_casino10 corridor_goon3_dead_casino10 corridor_goon3_kill_player_casino10 // Sequence stuff LVAR_INT peekright_casino10 // kill player tasks LVAR_INT task_kill_player_casino10 task_kill2_player_casino10 // Used to test if animations have finished LVAR_FLOAT return_animation_time_casino10 LVAR_INT enemy_actor_casino10 // used for different guys in the gosub for peeking LVAR_INT enemy_actor1_casino10 enemy_actor2_casino10 // used for the kill player commands LVAR_INT enemy_actor3_casino10 // used for the roll left task LVAR_INT enemy_actor4_casino10 // used for the roll right task // decision makers LVAR_INT tough_dm_casino10 dm_duck_casino10 // guys for the initial cutscene LVAR_INT macca_casino10 paul_casino10 rosenberg_casino10 empty_dm_casino10 car_casino10 LVAR_INT jet_casino10 jet_blip_casino10 LVAR_INT flag_watched_1stcut_casino10 // Plane cutscene skip stuff LVAR_INT watched_plane_cutscene_casino10 // flag to say player has entered the bistro LVAR_INT player_entered_bistro_casino10 player_downstairs_casino10 // Cleanup stuff for the end section LVAR_INT flag_mid_cleanup_done_casino10 end_guys_created_casino10 // end of level guys LVAR_INT end_goon1_casino10 end_goon2_casino10 end_goon3_casino10 car2_casino10 // Forelli's sequence LVAR_INT forelli_end_casino10 // cutscene cars LVAR_INT stored_car_casino10 // liberty City blips LVAR_INT liberty_blip_casino10 // end cutscene stuff LVAR_INT flag_watched_end1_casino10 flag_watched_end2_casino10 had_plane_message_casino10 // plane landing at the end LVAR_INT landing_blip_casino10 // Mobile phone and audio stuff LVAR_INT casino10_index casino10_audio_is_playing casino10_cutscene_flag casino10_chat_switch casino10_audio_chat[17] VAR_TEXT_LABEL $casino10_chat[17] // counter for the dead gang members LVAR_INT counter_dead_casino10 LVAR_INT end_goon1_casino10_dead end_goon1_kill_player_casino10 end_goon2_casino10_dead end_goon2_kill_player_casino10 LVAR_INT end_goon3_casino10_dead end_goon3_kill_player_casino10 // help message for the cinematic camera LVAR_INT flag_had_camera_message_casino10 // NEW CUTSCENE FOR LIBERTY LVAR_INT taxi_driver_casino10 cutscene_car_casino10 player_liberty_sequence LVAR_INT cutscene_car2_casino10 car2_driver_casino10 LVAR_INT dummy1_casino10 dummy2_casino10 dummy3_casino10 dummy4_casino10 dummy5_casino10 LVAR_INT dummy6_casino10 dummy7_casino10 dummy8_casino10 dummy9_casino10 dummy10_casino10 // *************************************** MISSION DIALOGUE *************************************** casino10_chat_switch: SWITCH casino10_chat_switch CONST_INT casino10_CHAT1 0 CONST_INT casino10_CHAT2 1 CASE casino10_CHAT1 $casino10_chat[0] = &CAS11BA //This is private flight CJ101 on approach to Liberty, over. $casino10_chat[1] = &CAS11BB //Flight CJ101, we have you on our scope. $casino10_chat[2] = &CAS11BC //Stay on current heading and await final approach instructions... $casino10_chat[3] = &CAS11CA //Welcome to Liberty City, CJ101... casino10_audio_chat[0] = SOUND_CAS11BA //This is private flight CJ101 on approach to Liberty, over. casino10_audio_chat[1] = SOUND_CAS11BB //Flight CJ101, we have you on our scope. casino10_audio_chat[2] = SOUND_CAS11BC //Stay on current heading and await final approach instructions... casino10_audio_chat[3] = SOUND_CAS11CA //Welcome to Liberty City, CJ101... cell_index_end = 3 BREAK CASE casino10_CHAT2 $casino10_chat[0] = &CAS11GA //This is flight CJ101 out fo Liberty City, $casino10_chat[1] = &CAS11GB //requesting final approach to Las Venturas International, over. $casino10_chat[2] = &CAS11GC //Flight CJ101, you are clear for laanding on runway 3. casino10_audio_chat[0] = SOUND_CAS11GA //This is flight CJ101 out fo Liberty City, casino10_audio_chat[1] = SOUND_CAS11GB //requesting final approach to Las Venturas International, over. casino10_audio_chat[2] = SOUND_CAS11GC //Flight CJ101, you are clear for laanding on runway 3. cell_index_end = 2 BREAK ENDSWITCH RETURN // ************************************** END OF MISSION DIALOGUE ********************************* // **************************************** Mission Start ********************************** mission_start_casino10: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 // general stuff flag_played_cut_casino10 = 0 forelli_run_count_casino10 = 0 flag_forelli_dead_casino10 = 0 time_forelli_casino10 = 0 forelli_taunts_casino10 = 0 forelli_health_casino10 = 1000 // bodyguards1 flag_bodyguard1_dead_casino10 = 0 bodyguard1_kill_player_casino10 = 0 // bodyguard2 flag_bodyguard2_dead_casino10 = 0 bodyguard2_kill_player_casino10 = 0 // goon1 flag_goon1_dead_casino10 = 0 goon1_attack_player_casino10 = 0 // goon2 flag_goon2_dead_casino10 = 0 goon2_attack_player_casino10 = 0 // goon3 flag_goon3_dead_casino10 = 0 goon3_kill_player_casino10 = 0 // goon4 flag_goon4_dead_casino10 = 0 goon4_kill_player_casino10 = 0 // goon5 flag_goon5_dead_casino10 = 0 goon5_kill_player_casino10 = 0 // goon6 flag_goon6_dead_casino10 = 0 goon6_kill_player_casino10 = 0 return_animation_time_casino10 = 0.0 flag_animate_top_goon3_casino10 = 0 flag_animate_top_goon3_casino10 = 0 // corridor guards corridor_goon1_dead_casino10 = 0 corridor_goon1_kill_player_casino10 = 0 // corridor guard2 corridor_goon2_dead_casino10 = 0 corridor_goon2_kill_player_casino10 = 0 // corridor guard3 corridor_goon3_dead_casino10 = 0 corridor_goon3_kill_player_casino10 = 0 // 1st cutscene flag_watched_1stcut_casino10 = 0 // plane taking off cutscene watched_plane_cutscene_casino10 = 0 // player has entered the bistro player_entered_bistro_casino10 = 0 player_downstairs_casino10 = 0 // end section stuff flag_mid_cleanup_done_casino10 = 0 end_guys_created_casino10 = 0 flag_watched_end1_casino10 = 0 flag_watched_end2_casino10 = 0 had_plane_message_casino10 = 0 // top goon1 top_goon1_kill_player_casino10 = 0 top_goon1_dead_casino10 = 0 // top goons kill player (top goon1 is the guy player kills) top_goon2_kill_player_casino10 = 0 top_goon2_dead_casino10 = 0 top_goon3_dead_casino10 = 0 top_goon4_dead_casino10 = 0 // counter for dead guards counter_dead_casino10 = 0 // new end guards dead checks end_goon1_casino10_dead = 0 end_goon2_casino10_dead = 0 end_goon3_casino10_dead = 0 end_goon1_kill_player_casino10 = 0 end_goon2_kill_player_casino10 = 0 end_goon3_kill_player_casino10 = 0 // help message for cinematic camera flag_had_camera_message_casino10 = 0 LOAD_MISSION_TEXT CASIN10 WAIT 0 CLEAR_AREA 2163.589 1682.247 9.860 1.0 TRUE SET_CHAR_COORDINATES scplayer 2163.589 1682.247 9.860 SET_CHAR_HEADING scplayer 80.0 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED // ****************************************START OF CUTSCENE******************************** // fades the screen in iTerminateAllAmbience = 1 SET_AREA_VISIBLE 2 LOAD_CUTSCENE CAS_11a WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 iTerminateAllAmbience = 0 // ****************************************END OF CUTSCENE********************************** SET_WANTED_MULTIPLIER 0.5 SET_PLAYER_CONTROL player1 OFF SET_POLICE_IGNORE_PLAYER player1 ON SET_EVERYONE_IGNORE_PLAYER player1 ON SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2233.5 1712.8 10.0 //MAFIA CASINO WAIT 1000 REQUEST_MODEL SHAMAL REQUEST_MODEL SENTINEL LOAD_SPECIAL_CHARACTER 1 MACCER LOAD_SPECIAL_CHARACTER 2 PAUL LOAD_SPECIAL_CHARACTER 3 ROSE LOAD_MISSION_AUDIO 1 SOUND_CAS11AA // Ok, you guys get out of Las Venturas fast! LOAD_MISSION_AUDIO 2 SOUND_CAS11AB // I'll be in touch. // Sequences // stuff here to make the compiler not complain GOTO fool_compiler OPEN_SEQUENCE_TASK peekright_casino10 TASK_STAY_IN_SAME_PLACE -1 FALSE CLOSE_SEQUENCE_TASK peekright_casino10 OPEN_SEQUENCE_TASK task_kill_player_casino10 TASK_STAY_IN_SAME_PLACE -1 FALSE CLOSE_SEQUENCE_TASK task_kill_player_casino10 OPEN_SEQUENCE_TASK task_kill2_player_casino10 TASK_STAY_IN_SAME_PLACE -1 FALSE CLOSE_SEQUENCE_TASK task_kill2_player_casino10 OPEN_SEQUENCE_TASK roll_left_casino10 TASK_STAY_IN_SAME_PLACE -1 FALSE CLOSE_SEQUENCE_TASK roll_left_casino10 OPEN_SEQUENCE_TASK roll_right_casino10 TASK_STAY_IN_SAME_PLACE -1 FALSE CLOSE_SEQUENCE_TASK roll_right_casino10 CREATE_CAR SENTINEL 0.0 0.0 0.0 car2_casino10 DELETE_CAR car2_casino10 ADD_BLIP_FOR_COORD 0.0 0.0 0.0 jet_blip_casino10 REMOVE_BLIP jet_blip_casino10 fool_compiler: // decision makers LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH tough_dm_casino10 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH dm_duck_casino10 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_duck_casino10 EVENT_SHOT_FIRED_WHIZZED_BY TASK_SIMPLE_DUCK_WHILE_SHOTS_WHIZZING 0.0 100.0 100.0 100.0 FALSE TRUE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY empty_dm_casino10 LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED SHAMAL OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_SPECIAL_CHARACTER_LOADED 2 OR NOT HAS_MODEL_LOADED SENTINEL OR NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 3 WAIT 0 ENDWHILE // ****** creates the character for the cutscene outside casino where Rosenberg Paul and Macca leg it ****** CLEAR_AREA 2163.589 1682.247 9.860 1.0 TRUE SET_CHAR_COORDINATES scplayer 2163.589 1682.247 9.860 SET_CHAR_HEADING scplayer 80.0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE LOAD_SCENE 2163.589 1682.247 9.860 SWITCH_ROADS_OFF 2095.350 1734.179 8.0 2337.495 1524.991 15.0 SWITCH_PED_ROADS_OFF 2095.350 1734.179 8.0 2337.495 1524.991 15.0 CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 2162.213 1682.752 9.860 macca_casino10 SET_CHAR_DECISION_MAKER macca_casino10 empty_dm_casino10 SET_CHAR_HEADING macca_casino10 280.0 SET_CHAR_ONLY_DAMAGED_BY_PLAYER macca_casino10 TRUE TASK_TURN_CHAR_TO_FACE_CHAR macca_casino10 scplayer SET_CHAR_PROOFS macca_casino10 TRUE TRUE TRUE TRUE TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH macca_casino10 TRUE CLEAR_AREA 2160.582 1682.103 9.735 4.0 TRUE CREATE_CAR SENTINEL 2160.582 1682.103 9.735 car_casino10 SET_CAR_HEADING car_casino10 0.0 SET_CAR_ONLY_DAMAGED_BY_PLAYER car_casino10 TRUE SET_CAR_PROOFS car_casino10 TRUE TRUE TRUE TRUE TRUE CREATE_CHAR_AS_PASSENGER car_casino10 PEDTYPE_MISSION1 SPECIAL03 1 rosenberg_casino10 SET_CHAR_DECISION_MAKER rosenberg_casino10 empty_dm_casino10 SET_CHAR_ONLY_DAMAGED_BY_PLAYER rosenberg_casino10 TRUE SET_CHAR_PROOFS rosenberg_casino10 TRUE TRUE TRUE TRUE TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH rosenberg_casino10 TRUE CREATE_CHAR_INSIDE_CAR car_casino10 PEDTYPE_MISSION1 SPECIAL02 paul_casino10 SET_CHAR_DECISION_MAKER paul_casino10 empty_dm_casino10 SET_CHAR_ONLY_DAMAGED_BY_PLAYER paul_casino10 TRUE SET_CHAR_PROOFS paul_casino10 TRUE TRUE TRUE TRUE TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH paul_casino10 TRUE CAR_SET_IDLE car_casino10 CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2165.2280 1680.2563 9.9643 2164.9746 1684.1086 11.4927 14500 TRUE CAMERA_SET_VECTOR_TRACK 2162.274 1682.247 11.860 2160.582 1682.103 11.0 14500 TRUE SET_FADING_COLOUR 0 0 0 SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR DO_FADE 2000 FADE_IN CLEAR_AREA 2162.274 1682.247 9.860 120.0 TRUE WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // cutscene of the player telling Paul, Macca and Rosenberg to go elsewhere and he will meet them later SKIP_CUTSCENE_START IF IS_PLAYER_PLAYING player1 PLAY_MISSION_AUDIO 1 PRINT_NOW (CAS11AA) 10000 1 //"Ok, you guys get out of Las Venturas fast!" START_CHAR_FACIAL_TALK scplayer 999999 TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (CAS11AA) ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CHAR_DEAD macca_casino10 PRINT_NOW (CM10_11) 8000 1 //"Macca is dead!" GOTO mission_casino10_failed ELSE CLEAR_CHAR_TASKS macca_casino10 ENDIF IF IS_CHAR_DEAD paul_casino10 PRINT_NOW (CM10_12) 8000 1 //"Paul is dead!" GOTO mission_casino10_failed ENDIF IF IS_CHAR_DEAD rosenberg_casino10 PRINT_NOW (CM10_13) 8000 1 //"Rosenberg is dead!" GOTO mission_casino10_failed ENDIF IF IS_CAR_DEAD car_casino10 PRINT_NOW (CM10_14) 8000 1 //"The car is dead!" GOTO mission_casino10_failed ENDIF IF NOT IS_PLAYER_PLAYING player1 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (CAS11AA) ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT (CAS11AA) STOP_CHAR_FACIAL_TALK scplayer LOAD_MISSION_AUDIO 1 SOUND_CAS11AC //What about your backup, ol’lad, will you be ok without us? PLAY_MISSION_AUDIO 2 PRINT_NOW (CAS11AB) 10000 1 //"I'll be in touch." START_CHAR_FACIAL_TALK scplayer 999999 WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 OR NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CHAR_DEAD macca_casino10 PRINT_NOW (CM10_11) 8000 1 //"Macca is dead!" GOTO mission_casino10_failed ELSE CLEAR_CHAR_TASKS macca_casino10 ENDIF IF IS_CHAR_DEAD paul_casino10 PRINT_NOW (CM10_12) 8000 1 //"Paul is dead!" GOTO mission_casino10_failed ENDIF IF IS_CHAR_DEAD rosenberg_casino10 PRINT_NOW (CM10_13) 8000 1 //"Rosenberg is dead!" GOTO mission_casino10_failed ENDIF IF IS_CAR_DEAD car_casino10 PRINT_NOW (CM10_14) 8000 1 //"The car is dead!" GOTO mission_casino10_failed ENDIF IF NOT IS_PLAYER_PLAYING player1 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (CAS11AB) ENDIF ENDWHILE CLEAR_CHAR_TASKS scplayer CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (CAS11AB) STOP_CHAR_FACIAL_TALK scplayer LOAD_MISSION_AUDIO 2 SOUND_CAS11AD //Of course he will, you fucking moron, come on! IF NOT IS_CHAR_DEAD macca_casino10 PLAY_MISSION_AUDIO 1 PRINT_NOW (CAS11AC) 10000 1 //"What about your backup, ol’lad, will you be ok without us?" START_CHAR_FACIAL_TALK macca_casino10 999999 TASK_PLAY_ANIM_NON_INTERRUPTABLE macca_casino10 IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 ELSE PRINT_NOW (CM10_11) 8000 1 //"Macca is dead!" GOTO mission_casino10_failed ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CHAR_DEAD macca_casino10 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (CAS11AC) PRINT_NOW (CM10_11) 8000 1 //"Macca is dead!" GOTO mission_casino10_failed ENDIF IF IS_CHAR_DEAD paul_casino10 PRINT_NOW (CM10_12) 8000 1 //"Paul is dead!" GOTO mission_casino10_failed ENDIF IF IS_CHAR_DEAD rosenberg_casino10 PRINT_NOW (CM10_13) 8000 1 //"Rosenberg is dead!" GOTO mission_casino10_failed ENDIF IF IS_CAR_DEAD car_casino10 PRINT_NOW (CM10_14) 8000 1 //"The car is dead!" GOTO mission_casino10_failed ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT (CAS11AC) IF NOT IS_CHAR_DEAD macca_casino10 STOP_CHAR_FACIAL_TALK macca_casino10 CLEAR_CHAR_TASKS macca_casino10 ELSE PRINT_NOW (CM10_11) 8000 1 //"Macca is dead!" GOTO mission_casino10_failed ENDIF IF NOT IS_CHAR_DEAD rosenberg_casino10 TASK_LOOK_AT_CHAR rosenberg_casino10 scplayer -2 PLAY_MISSION_AUDIO 2 PRINT_NOW (CAS11AD) 10000 1 //"Of course he will, you fucking moron, come on!" START_CHAR_FACIAL_TALK rosenberg_casino10 999999 ELSE PRINT_NOW (CM10_13) 8000 1 //"Rosenberg is dead!" CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (CAS11AD) GOTO mission_casino10_failed ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CHAR_DEAD macca_casino10 PRINT_NOW (CM10_11) 8000 1 //"Macca is dead!" GOTO mission_casino10_failed ENDIF IF IS_CHAR_DEAD paul_casino10 PRINT_NOW (CM10_12) 8000 1 //"Paul is dead!" GOTO mission_casino10_failed ENDIF IF IS_CHAR_DEAD rosenberg_casino10 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (CAS11AC) PRINT_NOW (CM10_13) 8000 1 //"Rosenberg is dead!" GOTO mission_casino10_failed ENDIF IF IS_CAR_DEAD car_casino10 PRINT_NOW (CM10_14) 8000 1 //"The car is dead!" GOTO mission_casino10_failed ENDIF ENDWHILE CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (CAS11AD) IF NOT IS_CHAR_DEAD rosenberg_casino10 STOP_CHAR_FACIAL_TALK rosenberg_casino10 CLEAR_LOOK_AT rosenberg_casino10 ELSE PRINT_NOW (CM10_13) 8000 1 //"Rosenberg is dead!" GOTO mission_casino10_failed ENDIF IF NOT IS_CAR_DEAD car_casino10 IF NOT IS_CHAR_DEAD macca_casino10 TASK_ENTER_CAR_AS_PASSENGER macca_casino10 car_casino10 10000 0 ELSE PRINT_NOW (CM10_11) 8000 1 //"Macca is dead!" GOTO mission_casino10_failed ENDIF IF IS_CHAR_DEAD macca_casino10 PRINT_NOW (CM10_11) 8000 1 //"Macca is dead!" GOTO mission_casino10_failed ENDIF IF IS_CHAR_DEAD rosenberg_casino10 PRINT_NOW (CM10_13) 8000 1 //"Rosenberg is dead!" GOTO mission_casino10_failed ENDIF IF IS_CHAR_DEAD paul_casino10 PRINT_NOW (CM10_12) 8000 1 //"Paul is dead!" GOTO mission_casino10_failed ENDIF ELSE PRINT_NOW (CM10_14) 8000 1 //"The car is dead!" GOTO mission_casino10_failed ENDIF WHILE NOT IS_CHAR_IN_CAR macca_casino10 car_casino10 OR NOT IS_CHAR_IN_CAR paul_casino10 car_casino10 OR NOT IS_CHAR_IN_CAR rosenberg_casino10 car_casino10 WAIT 0 IF IS_CHAR_DEAD macca_casino10 PRINT_NOW (CM10_11) 8000 1 //"Macca is dead!" GOTO mission_casino10_failed ENDIF IF IS_CHAR_DEAD paul_casino10 PRINT_NOW (CM10_12) 8000 1 //"Paul is dead!" GOTO mission_casino10_failed ENDIF IF IS_CHAR_DEAD rosenberg_casino10 PRINT_NOW (CM10_13) 8000 1 //"Rosenberg is dead!" GOTO mission_casino10_failed ENDIF IF IS_CAR_DEAD car_casino10 PRINT_NOW (CM10_14) 8000 1 //"The car is dead!" GOTO mission_casino10_failed ENDIF ENDWHILE IF NOT IS_CAR_DEAD car_casino10 CAR_GOTO_COORDINATES car_casino10 2148.048 1703.466 9.727 SET_CAR_DRIVING_STYLE car_casino10 2 SET_CAR_CRUISE_SPEED car_casino10 30.0 ELSE PRINT_NOW (CM10_14) 8000 1 //"The car is dead!" GOTO mission_casino10_failed ENDIF WAIT 2000 DELETE_CHAR macca_casino10 DELETE_CHAR paul_casino10 DELETE_CHAR rosenberg_casino10 DELETE_CAR car_casino10 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE MARK_MODEL_AS_NO_LONGER_NEEDED SENTINEL SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER CAMERA_RESET_NEW_SCRIPTABLES RESTORE_CAMERA_JUMPCUT SET_EVERYONE_IGNORE_PLAYER player1 OFF SET_POLICE_IGNORE_PLAYER player1 OFF UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 UNLOAD_SPECIAL_CHARACTER 3 SWITCH_ROADS_BACK_TO_ORIGINAL 2095.350 1734.179 8.0 2337.495 1524.991 15.0 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2095.350 1734.179 8.0 2337.495 1524.991 15.0 flag_watched_1stcut_casino10 = 1 SKIP_CUTSCENE_END IF flag_watched_1stcut_casino10 = 0 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 // IF IS_CHAR_DEAD macca_casino10 // PRINT_NOW (CM10_11) 8000 1 //"Macca is dead!" // GOTO mission_casino10_failed // ENDIF // // IF IS_CHAR_DEAD paul_casino10 // PRINT_NOW (CM10_12) 8000 1 //"Paul is dead!" // GOTO mission_casino10_failed // ENDIF // // IF IS_CHAR_DEAD rosenberg_casino10 // PRINT_NOW (CM10_13) 8000 1 //"Rosenberg is dead!" // GOTO mission_casino10_failed // ENDIF // // IF IS_CAR_DEAD car_casino10 // PRINT_NOW (CM10_14) 8000 1 //"The car is dead!" // GOTO mission_casino10_failed // ENDIF ENDWHILE MAKE_PLAYER_GANG_REAPPEAR CLEAR_AREA 2163.589 1682.247 9.860 1.0 TRUE SET_CHAR_COORDINATES scplayer 2163.589 1682.247 9.860 SET_CHAR_HEADING scplayer 80.0 DELETE_CHAR macca_casino10 DELETE_CHAR paul_casino10 DELETE_CHAR rosenberg_casino10 DELETE_CAR car_casino10 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE MARK_MODEL_AS_NO_LONGER_NEEDED SENTINEL UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 UNLOAD_SPECIAL_CHARACTER 3 SWITCH_WIDESCREEN OFF CAMERA_RESET_NEW_SCRIPTABLES SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_FADING_COLOUR 0 0 0 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SWITCH_ROADS_BACK_TO_ORIGINAL 2095.350 1734.179 8.0 2337.495 1524.991 15.0 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2095.350 1734.179 8.0 2337.495 1524.991 15.0 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 OFF SET_POLICE_IGNORE_PLAYER player1 OFF ENDIF // end of cutscene player is told to get to the airport PRINT_NOW (CM10_1) 10000 1 //"Get to the Vegas airport, we have a chartered jet waiting to take you to Liberty." ADD_BLIP_FOR_COORD 1707.828 1606.639 9.055 airport_blip2_casino10 CLEAR_AREA 1707.828 1606.639 9.055 2.0 FALSE // waiting for the player to get to the airport WHILE NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 1707.828 1606.639 9.055 4.0 4.0 3.0 FALSE WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_casino10_passed ENDIF ENDWHILE REMOVE_BLIP airport_blip2_casino10 DISPLAY_RADAR 2 //pathing off PRINT_NOW (CM10_10) 10000 1 //"Make your way to the aircraft" // creates the jet CLEAR_AREA 1479.714 1758.306 12.098 2.0 TRUE CREATE_CAR SHAMAL 1479.714 1758.306 12.098 jet_casino10 SET_CAR_ONLY_DAMAGED_BY_PLAYER jet_casino10 TRUE SET_CAR_HEADING jet_casino10 180.0 ADD_BLIP_FOR_CAR jet_casino10 airport_blip_casino10 SET_BLIP_AS_FRIENDLY airport_blip_casino10 TRUE WHILE NOT IS_CHAR_IN_CAR scplayer jet_casino10 WAIT 0 IF IS_CAR_DEAD jet_casino10 PRINT_NOW (CM10_17) 8000 1 //"You have destroyed the jet!" REMOVE_BLIP airport_blip_casino10 GOTO mission_casino10_failed ENDIF ENDWHILE IF NOT IS_CAR_DEAD jet_casino10 SET_CAR_ONLY_DAMAGED_BY_PLAYER jet_casino10 FALSE ELSE PRINT_NOW (CM10_17) 8000 1 //"You have destroyed the jet!" REMOVE_BLIP airport_blip_casino10 GOTO mission_casino10_failed ENDIF REMOVE_BLIP airport_blip_casino10 PRINT_NOW (CM10_18) 8000 1 //"Fly to Liberty City" ADD_BLIP_FOR_COORD 6500.0 2478.34 200.0 liberty_blip_casino10 TIMERA = 0 // why tf is this 3d.. reducing the distance a bit so it doesn't show the outside of the skybox //WHILE NOT LOCATE_CHAR_IN_CAR_3D scplayer 7500.0 2478.34 200.0 100.0 100.0 200.0 FALSE WHILE NOT LOCATE_CHAR_IN_CAR_2D scplayer 6500.0 2478.34 100.0 100.0 FALSE OR NOT IS_CHAR_SITTING_IN_CAR scplayer jet_casino10 WAIT 0 IF IS_CAR_DEAD jet_casino10 PRINT_NOW (CM10_17) 8000 1 //"You have destroyed the jet!" GOTO mission_casino10_failed ELSE IF IS_CHAR_IN_CAR scplayer jet_casino10 IF flag_had_camera_message_casino10 = 0 IF TIMERA > 40000 PRINT_HELP CM10_99 // Tap ~m~~widget_camera~ to change camera modes. flag_had_camera_message_casino10 = 1 ENDIF ENDIF IF had_plane_message_casino10 = 1 PRINT_NOW (CM10_18) 8000 1 //"Fly to Liberty City" ADD_BLIP_FOR_COORD 6500.0 2478.34 200.0 liberty_blip_casino10 REMOVE_BLIP airport_blip_casino10 blob_flag = 1 had_plane_message_casino10 = 0 ENDIF ELSE IF had_plane_message_casino10 = 0 REMOVE_BLIP liberty_blip_casino10 ADD_BLIP_FOR_CAR jet_casino10 airport_blip_casino10 SET_BLIP_AS_FRIENDLY airport_blip_casino10 TRUE PRINT_NOW (IN_VEH) 5000 1 //"Get back in the helicopter!" blob_flag = 0 had_plane_message_casino10 = 1 ENDIF ENDIF ENDIF ENDWHILE REMOVE_BLIP liberty_blip_casino10 SET_FADING_COLOUR 0 0 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 // IF IS_CAR_DEAD jet_casino10 // PRINT_NOW (CM10_17) 8000 1 //"You have destroyed the jet!" // GOTO mission_casino10_failed // ENDIF ENDWHILE SET_AREA_NAME MARKS MAKE_PLAYER_GANG_DISAPPEAR SET_PLAYER_CONTROL player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 ON SET_POLICE_IGNORE_PLAYER player1 ON // **************************** loads and creates all the characters for the St. Marks Bistro ******************* CLEAR_WANTED_LEVEL player1 SET_MAX_WANTED_LEVEL 0 SET_RESPAWN_POINT_FOR_DURATION_OF_MISSION 1578.4460 1770.6816 9.8358 FORCE_WEATHER_NOW WEATHER_SUNNY_SF REQUEST_MODEL VMAFF1 REQUEST_MODEL COLT45 REQUEST_MODEL TAXI REQUEST_MODEL SENTINEL REQUEST_CAR_RECORDING 602 // player taxi REQUEST_CAR_RECORDING 603 // mafia sentinel REQUEST_MODEL BMYBU REQUEST_MODEL WFYBU LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED VMAFF1 OR NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED TAXI OR NOT HAS_MODEL_LOADED SENTINEL OR NOT HAS_CAR_RECORDING_BEEN_LOADED 602 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 603 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED BMYBU OR NOT HAS_MODEL_LOADED WFYBU WAIT 0 ENDWHILE SET_AREA_VISIBLE 1 // inside of bistro and surrounding land SET_CHAR_AREA_VISIBLE scplayer 1 REQUEST_COLLISION -811.9990 457.0270 LOAD_SCENE_IN_DIRECTION -811.9990 457.0270 1356.6222 82.0 // Make St marks load in. //SWITCH_PED_ROADS_ON -908.229 445.396 1342.0 -772.180 473.524 1370.0 // St. Marks Bistro LOAD_ALL_MODELS_NOW IF IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE WARP_CHAR_FROM_CAR_TO_COORD scplayer -813.833 459.110 998.989 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer ELSE SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -813.833 459.110 998.989 ENDIF SET_CAMERA_BEHIND_PLAYER SET_POLICE_IGNORE_PLAYER player1 ON SET_EVERYONE_IGNORE_PLAYER player1 ON DELETE_CAR jet_casino10 MARK_MODEL_AS_NO_LONGER_NEEDED SHAMAL //// checks to see if the player has a gun and if not gives him one then aims it at the mafia goons. //IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_PISTOL // GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_PISTOL 60 // SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PISTOL //ELSE // SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PISTOL //ENDIF CREATE_CAR TAXI -811.9990 457.0270 1356.6222 cutscene_car_casino10 SET_CAR_HEADING cutscene_car_casino10 270.0 SET_VEHICLE_AREA_VISIBLE cutscene_car_casino10 1 SET_CAR_ONLY_DAMAGED_BY_PLAYER cutscene_car_casino10 TRUE CREATE_CHAR_INSIDE_CAR cutscene_car_casino10 PEDTYPE_CIVMALE VMAFF1 taxi_driver_casino10 SET_CHAR_AREA_VISIBLE taxi_driver_casino10 1 CAR_SET_IDLE cutscene_car_casino10 WARP_CHAR_INTO_CAR_AS_PASSENGER scplayer cutscene_car_casino10 1 CREATE_CAR SENTINEL -729.2895 514.4813 1370.9688 cutscene_car2_casino10 SET_CAR_HEADING cutscene_car2_casino10 161.5196 SET_VEHICLE_AREA_VISIBLE cutscene_car2_casino10 1 SET_CAR_ONLY_DAMAGED_BY_PLAYER cutscene_car2_casino10 TRUE CREATE_CHAR_INSIDE_CAR cutscene_car2_casino10 PEDTYPE_CIVMALE VMAFF1 car2_driver_casino10 SET_CHAR_AREA_VISIBLE car2_driver_casino10 1 CAR_SET_IDLE cutscene_car2_casino10 WHILE NOT IS_CAR_WAITING_FOR_WORLD_COLLISION cutscene_car_casino10 WAIT 0 IF IS_CAR_DEAD cutscene_car_casino10 ENDIF IF IS_CAR_DEAD cutscene_car2_casino10 ENDIF ENDWHILE // creates dummy peds walking about CREATE_CHAR PEDTYPE_CIVMALE BMYBU -864.653 451.569 1348.584 dummy1_casino10 TASK_WANDER_STANDARD dummy1_casino10 CREATE_CHAR PEDTYPE_CIVFEMALE WFYBU -884.251 466.693 1346.577 dummy2_casino10 TASK_WANDER_STANDARD dummy2_casino10 CREATE_CHAR PEDTYPE_CIVMALE BMYBU -857.588 467.419 1349.290 dummy3_casino10 TASK_WANDER_STANDARD dummy3_casino10 CREATE_CHAR PEDTYPE_CIVFEMALE WFYBU -814.460 466.873 1356.137 dummy4_casino10 TASK_WANDER_STANDARD dummy4_casino10 CREATE_CHAR PEDTYPE_CIVMALE BMYBU -781.615 468.628 1363.266 dummy5_casino10 TASK_WANDER_STANDARD dummy5_casino10 CREATE_CHAR PEDTYPE_CIVFEMALE WFYBU -737.431 503.600 1370.968 dummy6_casino10 TASK_WANDER_STANDARD dummy6_casino10 CREATE_CHAR PEDTYPE_CIVMALE BMYBU -738.769 476.826 1370.306 dummy7_casino10 TASK_WANDER_STANDARD dummy7_casino10 CREATE_CHAR PEDTYPE_CIVFEMALE WFYBU -771.993 456.237 1364.445 dummy8_casino10 TASK_WANDER_STANDARD dummy8_casino10 CREATE_CHAR PEDTYPE_CIVMALE BMYBU -799.539 453.030 1359.074 dummy9_casino10 TASK_WANDER_STANDARD dummy9_casino10 CREATE_CHAR PEDTYPE_CIVFEMALE WFYBU -753.076 484.357 1369.885 dummy10_casino10 TASK_WANDER_STANDARD dummy10_casino10 SET_FIXED_CAMERA_POSITION -751.2452 449.8578 1370.5004 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -752.1519 450.2614 1370.3782 JUMP_CUT IF NOT IS_CAR_DEAD cutscene_car_casino10 START_PLAYBACK_RECORDED_CAR cutscene_car_casino10 602 SET_PLAYBACK_SPEED cutscene_car_casino10 1.1 ENDIF IF NOT IS_CAR_DEAD cutscene_car2_casino10 START_PLAYBACK_RECORDED_CAR cutscene_car2_casino10 603 SET_PLAYBACK_SPEED cutscene_car2_casino10 1.1 ENDIF WAIT 800 IF IS_CAR_DEAD cutscene_car_casino10 STOP_PLAYBACK_RECORDED_CAR cutscene_car_casino10 ENDIF IF IS_CAR_DEAD cutscene_car2_casino10 STOP_PLAYBACK_RECORDED_CAR cutscene_car2_casino10 ENDIF SET_FADING_COLOUR 0 0 0 SWITCH_WIDESCREEN ON DO_FADE 2000 FADE_IN CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE -751.2452 449.8578 1370.5004 -730.0718 483.3791 1373.4719 8600 TRUE CAMERA_SET_VECTOR_TRACK -752.1519 450.2614 1370.3782 -730.9146 483.9166 1373.4963 8600 TRUE WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_IS_IN_STADIUM TRUE HIDE_ALL_FRONTEND_BLIPS TRUE IF IS_CAR_DEAD cutscene_car_casino10 STOP_PLAYBACK_RECORDED_CAR cutscene_car_casino10 ENDIF IF IS_CAR_DEAD cutscene_car2_casino10 STOP_PLAYBACK_RECORDED_CAR cutscene_car2_casino10 ENDIF SKIP_CUTSCENE_START WHILE IS_PLAYBACK_GOING_ON_FOR_CAR cutscene_car_casino10 WAIT 0 IF IS_CAR_DEAD cutscene_car_casino10 STOP_PLAYBACK_RECORDED_CAR cutscene_car_casino10 ENDIF IF IS_CAR_DEAD cutscene_car2_casino10 STOP_PLAYBACK_RECORDED_CAR cutscene_car2_casino10 ENDIF ENDWHILE OPEN_SEQUENCE_TASK player_liberty_sequence IF NOT IS_CAR_DEAD cutscene_car_casino10 TASK_LEAVE_CAR -1 cutscene_car_casino10 ENDIF TASK_GO_STRAIGHT_TO_COORD -1 -760.2046 492.1819 1370.6766 PEDMOVE_WALK 10000 CLOSE_SEQUENCE_TASK player_liberty_sequence PERFORM_SEQUENCE_TASK scplayer player_liberty_sequence CLEAR_SEQUENCE_TASK player_liberty_sequence TIMERA = 0 WHILE TIMERA < 3000 WAIT 0 IF IS_CAR_DEAD cutscene_car_casino10 ENDIF IF IS_CAR_DEAD cutscene_car2_casino10 ENDIF ENDWHILE SKIP_CUTSCENE_END SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //SWITCH_PED_ROADS_OFF -908.229 445.396 1342.0 -772.180 473.524 1370.0 // St. Marks Bistro SET_WEATHER_TO_APPROPRIATE_TYPE_NOW CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_SEQUENCE_TASK player_liberty_sequence IF NOT IS_CAR_DEAD cutscene_car_casino10 STOP_PLAYBACK_RECORDED_CAR cutscene_car_casino10 IF IS_CHAR_IN_CAR scplayer cutscene_car_casino10 WARP_CHAR_FROM_CAR_TO_COORD scplayer -760.2046 492.1819 1370.6766 WHILE IS_CHAR_IN_ANY_CAR scplayer WAIT 0 IF IS_CAR_DEAD cutscene_car_casino10 ENDIF IF IS_CAR_DEAD cutscene_car2_casino10 ENDIF IF IS_CHAR_DEAD taxi_driver_casino10 ENDIF IF IS_CHAR_DEAD car2_driver_casino10 ENDIF ENDWHILE ENDIF ENDIF IF NOT IS_CAR_DEAD cutscene_car2_casino10 STOP_PLAYBACK_RECORDED_CAR cutscene_car2_casino10 ENDIF // checks to see if the player has a gun and if not gives him one then aims it at the mafia goons. IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_PISTOL GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_PISTOL 60 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PISTOL ELSE SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PISTOL ENDIF REMOVE_CAR_RECORDING 602 REMOVE_CAR_RECORDING 603 CAMERA_RESET_NEW_SCRIPTABLES DELETE_CAR cutscene_car_casino10 DELETE_CHAR taxi_driver_casino10 DELETE_CAR cutscene_car2_casino10 DELETE_CHAR car2_driver_casino10 DELETE_CHAR dummy1_casino10 DELETE_CHAR dummy2_casino10 DELETE_CHAR dummy3_casino10 DELETE_CHAR dummy4_casino10 DELETE_CHAR dummy5_casino10 DELETE_CHAR dummy6_casino10 DELETE_CHAR dummy7_casino10 DELETE_CHAR dummy8_casino10 DELETE_CHAR dummy9_casino10 DELETE_CHAR dummy10_casino10 MARK_MODEL_AS_NO_LONGER_NEEDED BMYBU MARK_MODEL_AS_NO_LONGER_NEEDED WFYBU MARK_MODEL_AS_NO_LONGER_NEEDED TAXI REQUEST_MODEL VMAFF1 REQUEST_MODEL VMAFF2 REQUEST_MODEL VMAFF3 REQUEST_MODEL CHROMEGUN REQUEST_MODEL MICRO_UZI REQUEST_MODEL COLT45 REQUEST_ANIMATION SWAT REQUEST_MODEL SENTINEL LOAD_SPECIAL_CHARACTER 1 FORELLI LOAD_MISSION_AUDIO 1 SOUND_CAS11DA LOAD_MISSION_AUDIO 2 SOUND_CAS11DB LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED VMAFF1 OR NOT HAS_MODEL_LOADED VMAFF2 OR NOT HAS_ANIMATION_LOADED SWAT OR NOT HAS_MODEL_LOADED CHROMEGUN OR NOT HAS_MODEL_LOADED MICRO_UZI OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED VMAFF3 OR NOT HAS_MODEL_LOADED SENTINEL OR NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE CHECKPOINT_SAVE 99 ADD_ARMOUR_TO_CHAR scplayer 100 // Marco Forelli CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 -783.620 505.055 1370.788 forelli_casino10 // -791.560 491.675 370.782 SET_CHAR_ALLOWED_TO_DUCK forelli_casino10 FALSE GIVE_WEAPON_TO_CHAR forelli_casino10 WEAPONTYPE_MICRO_UZI 30000 // Set to infinate ammo SET_CHAR_WEAPON_SKILL forelli_casino10 WEAPONSKILL_PRO SET_CHAR_USES_UPPERBODY_DAMAGE_ANIMS_ONLY forelli_casino10 TRUE SET_CHAR_HEADING forelli_casino10 348.440 ADD_BLIP_FOR_CHAR forelli_casino10 blip_forelli_casino10 SET_CHAR_DECISION_MAKER forelli_casino10 empty_dm_casino10 SET_CHAR_SUFFERS_CRITICAL_HITS forelli_casino10 FALSE SET_CHAR_MAX_HEALTH forelli_casino10 1000 SET_CHAR_HEALTH forelli_casino10 500 SET_CHAR_ACCURACY forelli_casino10 80 SET_CHAR_SHOOT_RATE forelli_casino10 50 // BodyGuards CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 -783.223 497.549 1370.780 bodyguard1_casino10 // behind the bar SET_CHAR_ALLOWED_TO_DUCK bodyguard1_casino10 FALSE GIVE_WEAPON_TO_CHAR bodyguard1_casino10 WEAPONTYPE_SHOTGUN 30000 // Set to infinate ammo SET_CHAR_HEADING bodyguard1_casino10 348.440 SET_CHAR_DECISION_MAKER bodyguard1_casino10 dm_duck_casino10 SET_CHAR_ACCURACY bodyguard1_casino10 65 SET_CHAR_SHOOT_RATE bodyguard1_casino10 40 CREATE_CHAR PEDTYPE_MISSION1 VMAFF2 -788.965 497.522 1370.780 bodyguard2_casino10 // behind the bar SET_CHAR_ALLOWED_TO_DUCK bodyguard2_casino10 FALSE GIVE_WEAPON_TO_CHAR bodyguard2_casino10 WEAPONTYPE_SHOTGUN 30000 // Set to infinate ammo SET_CHAR_HEADING bodyguard2_casino10 348.440 SET_CHAR_DECISION_MAKER bodyguard2_casino10 dm_duck_casino10 SET_CHAR_ACCURACY bodyguard2_casino10 65 SET_CHAR_SHOOT_RATE bodyguard2_casino10 45 CREATE_CHAR PEDTYPE_MISSION1 VMAFF3 -791.034 500.973 1370.780 goon1_casino10 SET_CHAR_ALLOWED_TO_DUCK goon1_casino10 FALSE GIVE_WEAPON_TO_CHAR goon1_casino10 WEAPONTYPE_MICRO_UZI 30000 // Set to infinate ammo SET_CHAR_HEADING goon1_casino10 5.1 SET_CHAR_DECISION_MAKER goon1_casino10 tough_dm_casino10 SET_CHAR_ACCURACY goon1_casino10 70 SET_CHAR_SHOOT_RATE goon1_casino10 50 CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 -780.395 500.947 1370.780 goon2_casino10 SET_CHAR_ALLOWED_TO_DUCK goon2_casino10 FALSE GIVE_WEAPON_TO_CHAR goon2_casino10 WEAPONTYPE_MICRO_UZI 30000 // Set to infinate ammo SET_CHAR_HEADING goon2_casino10 5.1 SET_CHAR_DECISION_MAKER goon2_casino10 tough_dm_casino10 SET_CHAR_ACCURACY goon2_casino10 40 SET_CHAR_SHOOT_RATE goon2_casino10 60 // Two goons who weapon crouch up the stairs CREATE_CHAR PEDTYPE_MISSION1 VMAFF2 -794.945 507.819 1370.788 goon3_casino10 SET_CHAR_ALLOWED_TO_DUCK goon3_casino10 FALSE GIVE_WEAPON_TO_CHAR goon3_casino10 WEAPONTYPE_MICRO_UZI 30000 // Set to infinate ammo SET_CHAR_HEADING goon3_casino10 174.837 SET_CHAR_DECISION_MAKER goon3_casino10 tough_dm_casino10 SET_CHAR_ACCURACY goon3_casino10 70 SET_CHAR_SHOOT_RATE goon3_casino10 45 CREATE_CHAR PEDTYPE_MISSION1 VMAFF3 -793.000 506.434 1370.788 goon4_casino10 SET_CHAR_ALLOWED_TO_DUCK goon4_casino10 FALSE GIVE_WEAPON_TO_CHAR goon4_casino10 WEAPONTYPE_MICRO_UZI 30000 // Set to infinate ammo SET_CHAR_HEADING goon4_casino10 113.867 SET_CHAR_DECISION_MAKER goon4_casino10 tough_dm_casino10 SET_CHAR_ACCURACY goon4_casino10 65 SET_CHAR_SHOOT_RATE goon4_casino10 40 // two guys who run and take cover by the tables CREATE_CHAR PEDTYPE_MISSION1 VMAFF2 -785.853 508.372 1370.774 goon5_casino10 // runs to a table on the ground floor -781.255 509.456 1370.780 SET_CHAR_ALLOWED_TO_DUCK goon5_casino10 FALSE GIVE_WEAPON_TO_CHAR goon5_casino10 WEAPONTYPE_MICRO_UZI 30000 // Set to infinate ammo SET_CHAR_HEADING goon5_casino10 212.0 SET_CHAR_DECISION_MAKER goon5_casino10 tough_dm_casino10 SET_CHAR_ACCURACY goon5_casino10 65 SET_CHAR_SHOOT_RATE goon5_casino10 40 CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 -792.191 508.908 1370.788 goon6_casino10 // runs to a table on the ground floor SET_CHAR_ALLOWED_TO_DUCK goon6_casino10 FALSE GIVE_WEAPON_TO_CHAR goon6_casino10 WEAPONTYPE_MICRO_UZI 30000 // Set to infinate ammo SET_CHAR_HEADING goon6_casino10 188.0 SET_CHAR_DECISION_MAKER goon6_casino10 tough_dm_casino10 SET_CHAR_ACCURACY goon6_casino10 70 SET_CHAR_SHOOT_RATE goon6_casino10 40 // **********************************Top Floor Guards // Two guards chatting on the toplevel CREATE_CHAR PEDTYPE_MISSION1 VMAFF3 -783.975 498.564 1375.195 top_goon1_casino10 // guy who player shoots SET_CHAR_ALLOWED_TO_DUCK top_goon1_casino10 FALSE GIVE_WEAPON_TO_CHAR top_goon1_casino10 WEAPONTYPE_MICRO_UZI 30000 // Set to infinate ammo SET_CHAR_HEADING top_goon1_casino10 172.352 SET_CHAR_DECISION_MAKER top_goon1_casino10 tough_dm_casino10 SET_CHAR_ACCURACY top_goon1_casino10 65 SET_CHAR_SHOOT_RATE top_goon1_casino10 40 CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 -792.542 494.229 1375.235 top_goon2_casino10 // leaning on far wall smoking SET_CHAR_ALLOWED_TO_DUCK top_goon2_casino10 FALSE GIVE_WEAPON_TO_CHAR top_goon2_casino10 WEAPONTYPE_MICRO_UZI 30000 // Set to infinate ammo SET_CHAR_HEADING top_goon2_casino10 279.542 SET_CHAR_DECISION_MAKER top_goon2_casino10 tough_dm_casino10 SET_CHAR_ACCURACY top_goon2_casino10 70 SET_CHAR_SHOOT_RATE top_goon2_casino10 50 // peeks out and shoots CREATE_CHAR PEDTYPE_MISSION1 VMAFF2 -786.142 491.815 1375.235 top_goon3_casino10 // guy who will peek out and shoot SET_CHAR_ALLOWED_TO_DUCK top_goon3_casino10 FALSE GIVE_WEAPON_TO_CHAR top_goon3_casino10 WEAPONTYPE_SHOTGUN 30000 // Set to infinate ammo SET_CHAR_HEADING top_goon3_casino10 270.0 SET_CHAR_DECISION_MAKER top_goon3_casino10 empty_dm_casino10 SET_CHAR_ACCURACY top_goon3_casino10 75 SET_CHAR_SHOOT_RATE top_goon3_casino10 40 CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 -793.700 494.999 1375.243 top_goon4_casino10 // guy who will peek out and shoot SET_CHAR_ALLOWED_TO_DUCK top_goon4_casino10 FALSE GIVE_WEAPON_TO_CHAR top_goon4_casino10 WEAPONTYPE_MICRO_UZI 30000 // Set to infinate ammo SET_CHAR_HEADING top_goon4_casino10 270.0 SET_CHAR_DECISION_MAKER top_goon4_casino10 empty_dm_casino10 SET_CHAR_ACCURACY top_goon4_casino10 65 SET_CHAR_SHOOT_RATE top_goon4_casino10 40 // corridor guards CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 -781.141 494.625 1367.571 corridor_goon1_casino10 // guy who will peek out and shoot SET_CHAR_ALLOWED_TO_DUCK corridor_goon1_casino10 FALSE GIVE_WEAPON_TO_CHAR corridor_goon1_casino10 WEAPONTYPE_MICRO_UZI 30000 // Set to infinate ammo SET_CHAR_HEADING corridor_goon1_casino10 90.0 SET_CHAR_DECISION_MAKER corridor_goon1_casino10 tough_dm_casino10 SET_CHAR_ACCURACY corridor_goon1_casino10 65 SET_CHAR_SHOOT_RATE corridor_goon1_casino10 40 CREATE_CHAR PEDTYPE_MISSION1 VMAFF3 -786.705 501.671 1366.414 corridor_goon2_casino10 // guy who will peek out and shoot SET_CHAR_ALLOWED_TO_DUCK corridor_goon2_casino10 FALSE GIVE_WEAPON_TO_CHAR corridor_goon2_casino10 WEAPONTYPE_MICRO_UZI 30000 // Set to infinate ammo SET_CHAR_HEADING corridor_goon2_casino10 270.0 SET_CHAR_DECISION_MAKER corridor_goon2_casino10 tough_dm_casino10 SET_CHAR_ACCURACY corridor_goon2_casino10 65 SET_CHAR_SHOOT_RATE corridor_goon2_casino10 40 CREATE_CHAR PEDTYPE_MISSION1 VMAFF2 -790.646 505.521 1366.414 corridor_goon3_casino10 // guy who crouches behind the stove in kitchen SET_CHAR_ALLOWED_TO_DUCK corridor_goon3_casino10 FALSE GIVE_WEAPON_TO_CHAR corridor_goon3_casino10 WEAPONTYPE_MICRO_UZI 30000 // Set to infinate ammo SET_CHAR_HEADING corridor_goon3_casino10 231.0 SET_CHAR_DECISION_MAKER corridor_goon3_casino10 dm_duck_casino10 SET_CHAR_ACCURACY corridor_goon3_casino10 65 SET_CHAR_SHOOT_RATE corridor_goon3_casino10 50 // stuff to full compiler with GOTO fool_complier_casino10 CREATE_CHAR PEDTYPE_MISSION1 VMAFF3 -816.005 493.329 1358.293 end_goon1_casino10 DELETE_CHAR end_goon1_casino10 CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 -821.268 508.167 1358.273 end_goon2_casino10 DELETE_CHAR end_goon2_casino10 CREATE_CHAR PEDTYPE_MISSION1 VMAFF2 -828.770 510.594 1357.307 end_goon3_casino10 DELETE_CHAR end_goon3_casino10 fool_complier_casino10: // player is standing in the bistro CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -783.104 490.814 1375.235 SET_CHAR_HEADING scplayer 8.832 LOAD_SCENE_IN_DIRECTION -783.104 490.814 1375.235 8.832 SET_FIXED_CAMERA_POSITION -787.9748 493.9206 1375.7960 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -787.0560 494.3102 1375.8591 JUMP_CUT SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE player_entered_bistro_casino10 = 1 SKIP_CUTSCENE_START // player walks into the room and looks at the guards TASK_GO_STRAIGHT_TO_COORD scplayer -783.153 495.215 1375.227 PEDMOVE_WALK -1 IF NOT IS_CHAR_DEAD top_goon1_casino10 TASK_LOOK_AT_CHAR scplayer top_goon1_casino10 -1 ELSE IF top_goon1_dead_casino10 = 0 ++ counter_dead_casino10 top_goon1_dead_casino10 = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD top_goon2_casino10 TASK_LOOK_AT_CHAR top_goon2_casino10 scplayer -1 ELSE IF top_goon2_dead_casino10 = 0 ++ counter_dead_casino10 top_goon2_dead_casino10 = 1 ENDIF ENDIF OPEN_SEQUENCE_TASK top_goon1_task2_casino10 // right TASK_FOLLOW_PATH_NODES_TO_COORD -1 -783.336 496.837 1375.235 PEDMOVE_WALK -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_LOOK_AT_CHAR -1 scplayer -1 TASK_AIM_GUN_AT_CHAR -1 scplayer 15000 CLOSE_SEQUENCE_TASK top_goon1_task2_casino10 IF NOT IS_CHAR_DEAD top_goon1_casino10 PERFORM_SEQUENCE_TASK top_goon1_casino10 top_goon1_task2_casino10 CLEAR_SEQUENCE_TASK top_goon1_task2_casino10 ELSE IF top_goon1_dead_casino10 = 0 ++ counter_dead_casino10 top_goon1_dead_casino10 = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD top_goon1_casino10 PLAY_MISSION_AUDIO 1 PRINT_NOW (CAS11DA) 10000 1 //Private function, invitation only! START_CHAR_FACIAL_TALK top_goon1_casino10 999999 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH top_goon1_casino10 TRUE ELSE CLEAR_MISSION_AUDIO 1 IF top_goon1_dead_casino10 = 0 ++ counter_dead_casino10 top_goon1_dead_casino10 = 1 ENDIF ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 GOSUB baddie_death_checks_casino10 IF top_goon1_dead_casino10 = 0 IF IS_CHAR_DEAD top_goon1_casino10 CLEAR_MISSION_AUDIO 1 ++ counter_dead_casino10 top_goon1_dead_casino10 = 1 ENDIF ENDIF ENDWHILE CLEAR_THIS_PRINT (CAS11DA) IF NOT IS_CHAR_DEAD top_goon1_casino10 STOP_CHAR_FACIAL_TALK top_goon1_casino10 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH top_goon1_casino10 FALSE TASK_STAY_IN_SAME_PLACE scplayer TRUE ELSE IF top_goon1_dead_casino10 = 0 ++ counter_dead_casino10 top_goon1_dead_casino10 = 1 ENDIF ENDIF PLAY_MISSION_AUDIO 2 PRINT_NOW (CAS11DB) 4000 1 //Oh yeah? Well Mr. Leone says otherwise!" START_CHAR_FACIAL_TALK scplayer 999999 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE // player jumps over the rail SET_FIXED_CAMERA_POSITION -785.9136 497.3071 1375.5786 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -785.0042 496.9065 1375.6900 JUMP_CUT IF NOT IS_CHAR_DEAD top_goon1_casino10 TASK_TOGGLE_DUCK top_goon1_casino10 TRUE SET_CHAR_ACCURACY top_goon1_casino10 5 TASK_SHOOT_AT_COORD top_goon1_casino10 -781.079 495.708 1376.195 10000 SET_CHAR_SHOOT_RATE top_goon1_casino10 80 ELSE IF top_goon1_dead_casino10 = 0 ++ counter_dead_casino10 top_goon1_dead_casino10 = 1 ENDIF ENDIF OPEN_SEQUENCE_TASK player_leap_casino10 TASK_ACHIEVE_HEADING -1 270.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 JMP_Wall1m_180 SWAT 4.0 FALSE FALSE FALSE TRUE -1 return_animation_time_casino10 = 0.0 CLOSE_SEQUENCE_TASK player_leap_casino10 PERFORM_SEQUENCE_TASK scplayer player_leap_casino10 IF IS_CHAR_PLAYING_ANIM scplayer JMP_Wall1m_180 GET_CHAR_ANIM_CURRENT_TIME scplayer JMP_Wall1m_180 return_animation_time_casino10 ENDIF WHILE NOT return_animation_time_casino10 = 1.0 WAIT 0 IF IS_CHAR_PLAYING_ANIM scplayer JMP_Wall1m_180 GET_CHAR_ANIM_CURRENT_TIME scplayer JMP_Wall1m_180 return_animation_time_casino10 ENDIF GOSUB baddie_death_checks_casino10 ENDWHILE // two guards on bottom level run to the tables to take cover OPEN_SEQUENCE_TASK goon5_task_casino10 TASK_TOGGLE_DUCK -1 TRUE TASK_FOLLOW_PATH_NODES_TO_COORD -1 -781.563 505.346 1370.782 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK goon5_task_casino10 IF NOT IS_CHAR_DEAD goon5_casino10 PERFORM_SEQUENCE_TASK goon5_casino10 goon5_task_casino10 CLEAR_SEQUENCE_TASK goon5_task_casino10 ELSE IF flag_goon5_dead_casino10 = 0 ++ counter_dead_casino10 flag_goon5_dead_casino10 = 1 ENDIF ENDIF OPEN_SEQUENCE_TASK goon6_task_casino10 TASK_TOGGLE_DUCK -1 TRUE TASK_FOLLOW_PATH_NODES_TO_COORD -1 -786.511 505.073 1370.782 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK goon6_task_casino10 IF NOT IS_CHAR_DEAD goon6_casino10 PERFORM_SEQUENCE_TASK goon6_casino10 goon6_task_casino10 CLEAR_SEQUENCE_TASK goon6_task_casino10 ELSE IF flag_goon6_dead_casino10 = 0 ++ counter_dead_casino10 flag_goon6_dead_casino10 = 1 ENDIF ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 GOSUB baddie_death_checks_casino10 IF IS_CHAR_DEAD scplayer CLEAR_MISSION_AUDIO 2 ENDIF ENDWHILE CLEAR_THIS_PRINT (CAS11DB) STOP_CHAR_FACIAL_TALK scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE // guard is shot and falls over rail, guard2 runs for his position OPEN_SEQUENCE_TASK top_goon2_task2_casino10 // right TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK top_goon2_task2_casino10 IF NOT IS_CHAR_DEAD top_goon2_casino10 PERFORM_SEQUENCE_TASK top_goon2_casino10 top_goon2_task2_casino10 CLEAR_SEQUENCE_TASK top_goon2_task2_casino10 ELSE IF top_goon2_dead_casino10 = 0 ++ counter_dead_casino10 top_goon2_dead_casino10 = 1 ENDIF ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 SWITCH_WIDESCREEN OFF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -780.806 495.717 1375.0 SET_CHAR_HEADING scplayer 100.0 TASK_TOGGLE_DUCK scplayer TRUE TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer WEAPON_CROUCH PED 1000.0 FALSE FALSE FALSE FALSE -1 RESTORE_CAMERA_JUMPCUT CLEAR_SEQUENCE_TASK player_leap_casino10 flag_played_cut_casino10 = 1 SKIP_CUTSCENE_END IF flag_played_cut_casino10 = 0 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE OPEN_SEQUENCE_TASK goon5_task_casino10 TASK_TOGGLE_DUCK -1 TRUE TASK_FOLLOW_PATH_NODES_TO_COORD -1 -781.563 505.346 1370.782 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK goon5_task_casino10 IF NOT IS_CHAR_DEAD goon5_casino10 PERFORM_SEQUENCE_TASK goon5_casino10 goon5_task_casino10 CLEAR_SEQUENCE_TASK goon5_task_casino10 ELSE IF flag_goon5_dead_casino10 = 0 ++ counter_dead_casino10 flag_goon5_dead_casino10 = 1 ENDIF ENDIF OPEN_SEQUENCE_TASK goon6_task_casino10 TASK_TOGGLE_DUCK -1 TRUE TASK_FOLLOW_PATH_NODES_TO_COORD -1 -786.511 505.073 1370.782 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK goon6_task_casino10 IF NOT IS_CHAR_DEAD goon6_casino10 PERFORM_SEQUENCE_TASK goon6_casino10 goon6_task_casino10 CLEAR_SEQUENCE_TASK goon6_task_casino10 ELSE IF flag_goon6_dead_casino10 = 0 ++ counter_dead_casino10 flag_goon6_dead_casino10 = 1 ENDIF ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -780.806 495.717 1375.0 SET_CHAR_HEADING scplayer 100.0 // TASK_TOGGLE_DUCK scplayer TRUE // TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer WEAPON_CROUCH PED 1000.0 FALSE FALSE FALSE FALSE -1 RESTORE_CAMERA_JUMPCUT ENDIF SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SET_POLICE_IGNORE_PLAYER player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 OFF SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE IF NOT IS_CHAR_DEAD top_goon1_casino10 SET_CHAR_ACCURACY top_goon1_casino10 40 IF top_goon1_kill_player_casino10 = 0 SET_CHAR_SHOOT_RATE top_goon1_casino10 40 TASK_STAY_IN_SAME_PLACE top_goon1_casino10 FALSE TASK_KILL_CHAR_ON_FOOT top_goon1_casino10 scplayer top_goon1_kill_player_casino10 = 1 ENDIF ELSE IF top_goon1_dead_casino10 = 0 ++ counter_dead_casino10 top_goon1_dead_casino10 = 1 ENDIF ENDIF MAKE_PLAYER_GANG_REAPPEAR // Checks to see where the player is before ordering guys to attack IF player_entered_bistro_casino10 = 1 IF IS_CHAR_IN_AREA_3D scplayer -778.0 486.0 1370.0 -797.0 500.0 1380.0 FALSE // top area IF NOT IS_CHAR_DEAD goon3_casino10 // runs up the stairs in weapon crouch IF goon3_kill_player_casino10 = 0 enemy_actor1_casino10 = goon3_casino10 GOSUB kill_player1_task goon3_kill_player_casino10 = 1 ENDIF ELSE IF flag_goon3_dead_casino10 = 0 ++ counter_dead_casino10 flag_goon3_dead_casino10 = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD goon4_casino10 // runs up the stairs in weapon crouch IF goon4_kill_player_casino10 = 0 enemy_actor2_casino10 = goon4_casino10 GOSUB kill_player2_task goon4_kill_player_casino10 = 1 ENDIF ELSE IF flag_goon4_dead_casino10 = 0 ++ counter_dead_casino10 flag_goon4_dead_casino10 = 1 ENDIF ENDIF ELSE IF NOT IS_CHAR_DEAD goon3_casino10 // runs up the stairs in weapon crouch IF goon3_kill_player_casino10 = 0 CLEAR_CHAR_TASKS goon3_casino10 TASK_STAY_IN_SAME_PLACE goon3_casino10 FALSE TASK_KILL_CHAR_ON_FOOT goon3_casino10 scplayer goon3_kill_player_casino10 = 1 ENDIF ELSE IF flag_goon3_dead_casino10 = 0 ++ counter_dead_casino10 flag_goon3_dead_casino10 = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD goon4_casino10 // runs up the stairs in weapon crouch IF goon4_kill_player_casino10 = 0 CLEAR_CHAR_TASKS goon4_casino10 TASK_STAY_IN_SAME_PLACE goon4_casino10 FALSE TASK_KILL_CHAR_ON_FOOT goon4_casino10 scplayer goon4_kill_player_casino10 = 1 ENDIF ELSE IF flag_goon4_dead_casino10 = 0 ++ counter_dead_casino10 flag_goon4_dead_casino10 = 1 ENDIF ENDIF ENDIF ENDIF PRINT_NOW (CM10_2) 10000 1 //"Kill Forelli and his bodyguards." WHILE NOT counter_dead_casino10 = 19 WAIT 0 IF flag_mid_cleanup_done_casino10 = 0 IF IS_CHAR_IN_AREA_3D scplayer -777.097 501.709 1365.0 -784.992 497.660 1370.0 FALSE GOSUB mid_mission_cleanup_casino10 IF end_guys_created_casino10 = 0 GOSUB create_end_guys_casino10 ENDIF ENDIF ENDIF IF end_guys_created_casino10 = 1 GOSUB end_guys_death_check_casino10 ENDIF GOSUB baddie_death_checks_casino10 // sets up these guys to attack player at the top of the stairs IF goon1_attack_player_casino10 = 0 IF IS_CHAR_IN_AREA_3D scplayer -778.0 486.0 1370.0 -797.0 500.0 1380.0 FALSE // top area IF flag_goon3_dead_casino10 = 1 IF NOT IS_CHAR_DEAD goon1_casino10 enemy_actor1_casino10 = goon1_casino10 GOSUB kill_player1_task goon1_attack_player_casino10 = 1 ELSE IF flag_goon1_dead_casino10 = 0 ++ counter_dead_casino10 flag_goon1_dead_casino10 = 1 ENDIF ENDIF ENDIF ELSE IF NOT IS_CHAR_DEAD goon1_casino10 CLEAR_CHAR_TASKS goon1_casino10 TASK_STAY_IN_SAME_PLACE goon1_casino10 FALSE TASK_KILL_CHAR_ON_FOOT goon1_casino10 scplayer goon1_attack_player_casino10 = 2 ELSE IF flag_goon1_dead_casino10 = 0 ++ counter_dead_casino10 flag_goon1_dead_casino10 = 1 ENDIF ENDIF ENDIF ENDIF IF goon2_attack_player_casino10 = 0 IF IS_CHAR_IN_AREA_3D scplayer -778.0 486.0 1370.0 -797.0 500.0 1380.0 FALSE // top area IF flag_goon4_dead_casino10 = 1 IF NOT IS_CHAR_DEAD goon2_casino10 enemy_actor2_casino10 = goon2_casino10 GOSUB kill_player2_task goon2_attack_player_casino10 = 1 ELSE IF flag_goon2_dead_casino10 = 0 ++ counter_dead_casino10 flag_goon2_dead_casino10 = 1 ENDIF ENDIF ENDIF ELSE IF NOT IS_CHAR_DEAD goon2_casino10 CLEAR_CHAR_TASKS goon2_casino10 TASK_STAY_IN_SAME_PLACE goon2_casino10 FALSE TASK_KILL_CHAR_ON_FOOT goon2_casino10 scplayer goon2_attack_player_casino10 = 2 ELSE IF flag_goon2_dead_casino10 = 0 ++ counter_dead_casino10 flag_goon2_dead_casino10 = 1 ENDIF ENDIF ENDIF ENDIF IF corridor_goon1_kill_player_casino10 = 0 IF NOT IS_CHAR_DEAD corridor_goon1_casino10 IF IS_CHAR_IN_AREA_3D scplayer -792.344 489.644 1370.782 -783.436 493.662 1366.0 FALSE // 369.782 enemy_actor3_casino10 = corridor_goon1_casino10 GOSUB roll_left_task_casino10 corridor_goon1_kill_player_casino10 = 1 ENDIF ELSE IF corridor_goon1_dead_casino10 = 0 ++ counter_dead_casino10 corridor_goon1_dead_casino10 = 1 ENDIF ENDIF ENDIF IF corridor_goon2_kill_player_casino10 = 0 IF NOT IS_CHAR_DEAD corridor_goon2_casino10 IF IS_CHAR_IN_AREA_3D scplayer -777.097 501.709 1365.0 -784.992 497.660 1370.0 FALSE enemy_actor4_casino10 = corridor_goon2_casino10 GOSUB roll_right_task_casino10 corridor_goon2_kill_player_casino10 = 1 ENDIF ELSE IF corridor_goon2_dead_casino10 = 0 ++ counter_dead_casino10 corridor_goon2_dead_casino10 = 1 ENDIF ENDIF ENDIF IF corridor_goon3_kill_player_casino10 = 0 IF NOT IS_CHAR_DEAD corridor_goon3_casino10 IF IS_CHAR_IN_AREA_3D scplayer -777.097 501.709 1365.0 -784.992 497.660 1370.0 FALSE CLEAR_CHAR_TASKS corridor_goon3_casino10 TASK_STAY_IN_SAME_PLACE corridor_goon3_casino10 TRUE TASK_KILL_CHAR_ON_FOOT corridor_goon3_casino10 scplayer corridor_goon3_kill_player_casino10 = 1 ENDIF ELSE IF corridor_goon3_dead_casino10 = 0 ++ counter_dead_casino10 corridor_goon3_dead_casino10 = 1 ENDIF ENDIF ENDIF // forelli runs IF IS_PLAYER_PLAYING player1 GET_CHAR_COORDINATES scplayer player_x player_y player_z ENDIF IF flag_forelli_dead_casino10 = 0 IF IS_CHAR_DEAD forelli_casino10 REMOVE_BLIP blip_forelli_casino10 ++ counter_dead_casino10 flag_forelli_dead_casino10 = 1 ELSE GET_CHAR_HEALTH forelli_casino10 forelli_health_casino10 IF forelli_run_count_casino10 = 0 //SET_CHAR_NEVER_TARGETTED forelli_casino10 TRUE CLEAR_CHAR_RELATIONSHIP forelli_casino10 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 CLEAR_CHAR_TASKS_IMMEDIATELY forelli_casino10 TASK_FOLLOW_PATH_NODES_TO_COORD forelli_casino10 -781.090 497.790 1370.782 PEDMOVE_RUN 10000 forelli_run_count_casino10 = 1 ENDIF IF forelli_run_count_casino10 = 1 IF LOCATE_CHAR_ON_FOOT_3D forelli_casino10 -781.090 497.790 1370.782 0.5 0.5 2.0 FALSE TASK_FOLLOW_PATH_NODES_TO_COORD forelli_casino10 -791.749 491.447 1370.782 PEDMOVE_RUN 10000 forelli_run_count_casino10 = 2 ENDIF ENDIF IF forelli_run_count_casino10 = 2 IF IS_CHAR_IN_AREA_ON_FOOT_3D scplayer -777.827 510.0 1369.0 -797.0 494.0 1373.0 FALSE player_downstairs_casino10 = 1 ENDIF IF LOCATE_CHAR_ON_FOOT_3D forelli_casino10 -791.749 491.447 1370.782 0.5 0.5 2.0 FALSE IF time_forelli_casino10 = 0 SET_CHAR_HEADING forelli_casino10 0.0 TASK_STAY_IN_SAME_PLACE forelli_casino10 TRUE TASK_KILL_CHAR_ON_FOOT forelli_casino10 scplayer TIMERB = 0 time_forelli_casino10 = 1 ENDIF IF player_downstairs_casino10 = 1 IF time_forelli_casino10 = 1 IF TIMERB >= 6000 OR forelli_health_casino10 <= 800 CLEAR_CHAR_TASKS forelli_casino10 TASK_STAY_IN_SAME_PLACE forelli_casino10 FALSE TASK_FOLLOW_PATH_NODES_TO_COORD forelli_casino10 -779.844 492.670 1367.616 PEDMOVE_RUN 10000 forelli_run_count_casino10 = 3 ENDIF ENDIF ENDIF ENDIF ENDIF IF forelli_run_count_casino10 = 3 IF LOCATE_CHAR_ON_FOOT_3D forelli_casino10 -779.844 492.670 1367.616 0.5 0.5 2.0 FALSE TASK_FOLLOW_PATH_NODES_TO_COORD forelli_casino10 -779.844 499.811 1367.571 PEDMOVE_RUN 10000 forelli_run_count_casino10 = 4 ENDIF ENDIF IF forelli_run_count_casino10 = 4 IF LOCATE_CHAR_ON_FOOT_3D forelli_casino10 -779.844 499.811 1367.571 0.75 0.75 2.0 FALSE IF forelli_health_casino10 > 99 SET_CHAR_HEALTH forelli_casino10 50 ENDIF TASK_FOLLOW_PATH_NODES_TO_COORD forelli_casino10 -787.237 499.939 1366.414 PEDMOVE_RUN 10000 forelli_run_count_casino10 = 5 ENDIF ENDIF IF forelli_run_count_casino10 = 5 IF LOCATE_CHAR_ON_FOOT_3D forelli_casino10 -787.237 499.939 1366.414 0.5 0.5 2.0 FALSE TASK_FOLLOW_PATH_NODES_TO_COORD forelli_casino10 -787.543 508.034 1366.414 PEDMOVE_RUN 10000 forelli_run_count_casino10 = 6 ENDIF ENDIF IF forelli_run_count_casino10 = 6 IF LOCATE_CHAR_ON_FOOT_3D forelli_casino10 -787.543 508.034 1366.414 0.5 0.5 2.0 FALSE TASK_FOLLOW_PATH_NODES_TO_COORD forelli_casino10 -791.552 507.859 1366.414 PEDMOVE_RUN 10000 forelli_run_count_casino10 = 7 ENDIF ENDIF IF forelli_run_count_casino10 = 7 IF LOCATE_CHAR_ON_FOOT_3D forelli_casino10 -791.552 507.859 1366.414 0.5 0.5 2.0 FALSE TASK_FOLLOW_PATH_NODES_TO_COORD forelli_casino10 -791.045 498.883 1366.414 PEDMOVE_RUN 10000 forelli_run_count_casino10 = 8 ENDIF ENDIF IF forelli_run_count_casino10 = 8 IF LOCATE_CHAR_ON_FOOT_3D forelli_casino10 -791.045 498.883 1366.414 0.5 0.5 2.0 FALSE TASK_FOLLOW_PATH_NODES_TO_COORD forelli_casino10 -791.810 492.473 1366.414 PEDMOVE_RUN 10000 forelli_run_count_casino10 = 9 ENDIF ENDIF IF forelli_run_count_casino10 = 9 IF LOCATE_CHAR_ON_FOOT_3D forelli_casino10 -791.810 492.473 1366.414 0.5 0.5 2.0 FALSE TASK_FOLLOW_PATH_NODES_TO_COORD forelli_casino10 -798.194 492.462 1366.274 PEDMOVE_RUN 10000 forelli_run_count_casino10 = 10 ENDIF ENDIF IF forelli_run_count_casino10 = 10 IF LOCATE_CHAR_ON_FOOT_3D forelli_casino10 -798.194 492.462 1366.274 0.5 0.5 2.0 FALSE // top of back stairs TASK_FOLLOW_PATH_NODES_TO_COORD forelli_casino10 -799.081 503.710 1361.913 PEDMOVE_RUN 10000 forelli_run_count_casino10 = 11 ENDIF ENDIF IF forelli_run_count_casino10 = 11 IF LOCATE_CHAR_ON_FOOT_3D forelli_casino10 -799.081 503.710 1361.913 0.5 0.5 2.0 FALSE // bottom of stairs TASK_FOLLOW_PATH_NODES_TO_COORD forelli_casino10 -821.412 504.901 1357.35 PEDMOVE_RUN 10000 forelli_run_count_casino10 = 12 ENDIF ENDIF IF forelli_run_count_casino10 = 12 IF LOCATE_CHAR_ON_FOOT_3D forelli_casino10 -821.412 504.901 1357.358 0.5 0.5 2.0 FALSE // middle of the yard OPEN_SEQUENCE_TASK forelli_end_casino10 TASK_FOLLOW_PATH_NODES_TO_COORD -1 -830.889 501.107 1357.374 PEDMOVE_RUN -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 -830.711 498.369 1357.385 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 260.984 CLOSE_SEQUENCE_TASK forelli_end_casino10 IF NOT IS_CHAR_DEAD forelli_casino10 PERFORM_SEQUENCE_TASK forelli_casino10 forelli_end_casino10 CLEAR_SEQUENCE_TASK forelli_end_casino10 forelli_run_count_casino10 = 13 ELSE REMOVE_BLIP blip_forelli_casino10 ++ counter_dead_casino10 flag_forelli_dead_casino10 = 1 ENDIF ENDIF ENDIF IF forelli_run_count_casino10 = 13 IF LOCATE_CHAR_ON_FOOT_3D forelli_casino10 -830.711 498.369 1357.385 0.5 0.5 2.0 FALSE IF NOT IS_CHAR_DEAD forelli_casino10 TASK_STAY_IN_SAME_PLACE forelli_casino10 TRUE TASK_TOGGLE_DUCK forelli_casino10 TRUE TASK_KILL_CHAR_ON_FOOT forelli_casino10 scplayer // IF forelli_health_casino10 > 99 // SET_CHAR_HEALTH forelli_casino10 50 // ENDIF forelli_run_count_casino10 = 14 ELSE REMOVE_BLIP blip_forelli_casino10 ++ counter_dead_casino10 flag_forelli_dead_casino10 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDWHILE WAIT 3000 SET_PLAYER_CONTROL player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 ON SET_POLICE_IGNORE_PLAYER player1 ON //SWITCH_WIDESCREEN ON SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE MAKE_PLAYER_GANG_DISAPPEAR IF flag_mid_cleanup_done_casino10 = 0 GOSUB mid_mission_cleanup_casino10 ENDIF DELETE_CHAR corridor_goon1_casino10 DELETE_CHAR corridor_goon2_casino10 DELETE_CHAR corridor_goon3_casino10 DELETE_CHAR end_goon1_casino10 DELETE_CHAR end_goon2_casino10 DELETE_CHAR end_goon3_casino10 DELETE_CAR car2_casino10 MARK_MODEL_AS_NO_LONGER_NEEDED SENTINEL MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF1 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF2 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF3 MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED TAXI MARK_MODEL_AS_NO_LONGER_NEEDED BMYBU MARK_MODEL_AS_NO_LONGER_NEEDED WFYBU REMOVE_ANIMATION SWAT REMOVE_CHAR_ELEGANTLY forelli_casino10 UNLOAD_SPECIAL_CHARACTER 1 // need to request all of the models at the airport to get streaming working REQUEST_MODEL SHAMAL REQUEST_CAR_RECORDING 601 LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED SHAMAL OR NOT HAS_CAR_RECORDING_BEEN_LOADED 601 WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 // normal world SET_PLAYER_IS_IN_STADIUM FALSE SET_CHAR_AREA_VISIBLE scplayer 0 CLEAR_HELP CLEAR_PRINTS CREATE_CAR SHAMAL 6500.0 2478.34 200.0 jet_casino10 PLANE_STARTS_IN_AIR jet_casino10 SET_CAR_ONLY_DAMAGED_BY_PLAYER jet_casino10 TRUE SET_CAR_PROOFS jet_casino10 TRUE TRUE TRUE TRUE TRUE SET_CAR_HEADING jet_casino10 110.0 // used for plane if player has to fly back himself SET_PLANE_UNDERCARRIAGE_UP jet_casino10 TRUE WARP_CHAR_INTO_CAR scplayer jet_casino10 START_PLAYBACK_RECORDED_CAR jet_casino10 601 SET_FIXED_CAMERA_POSITION 8867.6367 1581.8903 193.1880 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 8867.6055 1582.8831 193.0727 JUMP_CUT SWITCH_WIDESCREEN ON SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SKIP_CUTSCENE_START TIMERA = 0 WHILE TIMERA < 2800 WAIT 0 IF IS_CAR_DEAD jet_casino10 PRINT_NOW (CM10_17) 8000 1 //"You have destroyed the jet!" GOTO mission_casino10_failed ENDIF ENDWHILE SKIP_CUTSCENE_END SET_FADING_COLOUR 0 0 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD jet_casino10 IF IS_PLAYBACK_GOING_ON_FOR_CAR jet_casino10 STOP_PLAYBACK_RECORDED_CAR jet_casino10 ENDIF ENDIF REMOVE_CAR_RECORDING 601 // this stuff is used if player is to fly the jet back IF NOT IS_CAR_DEAD jet_casino10 SET_CAR_COORDINATES jet_casino10 6500.0 2478.34 200.0 FREEZE_CAR_POSITION jet_casino10 TRUE PLANE_STARTS_IN_AIR jet_casino10 SET_CAR_ONLY_DAMAGED_BY_PLAYER jet_casino10 FALSE SET_CAR_PROOFS jet_casino10 FALSE FALSE FALSE FALSE FALSE SET_CAR_HEADING jet_casino10 110.0 // used for plane if player has to fly back himself SET_PLANE_UNDERCARRIAGE_UP jet_casino10 TRUE ENDIF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT MAKE_PLAYER_GANG_REAPPEAR SET_FADING_COLOUR 0 0 0 HIDE_ALL_FRONTEND_BLIPS FALSE SET_MAX_WANTED_LEVEL 6 DO_FADE 500 FADE_IN SWITCH_WIDESCREEN OFF // used for player flying back himself WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 OFF SET_POLICE_IGNORE_PLAYER player1 OFF IF NOT IS_CAR_DEAD jet_casino10 FREEZE_CAR_POSITION jet_casino10 FALSE SET_CAR_FORWARD_SPEED jet_casino10 30.0 ELSE PRINT_NOW (CM10_17) 8000 1 //"You have destroyed the jet!" GOTO mission_casino10_failed ENDIF PRINT_NOW (CM10_19) 8000 1 //"Fly back to San Fierro!" ADD_BLIP_FOR_COORD 1477.225 1640.364 9.860 landing_blip_casino10 SET_ALWAYS_DRAW_3D_MARKERS TRUE casino10_index = 0 casino10_audio_is_playing = 0 casino10_cutscene_flag = 0 casino10_chat_switch = casino10_CHAT2 GOSUB casino10_chat_switch had_plane_message_casino10 = 0 WHILE NOT IS_CAR_STOPPED_IN_AREA_3D jet_casino10 1636.3195 1144.4778 7.0 1261.4111 1780.6724 14.0 FALSE //LOCATE_STOPPED_CHAR_IN_CAR_3D scplayer 1477.225 1640.364 9.860 10.0 10.0 10.0 TRUE OR NOT IS_CHAR_IN_AREA_3D scplayer 1636.3195 1144.4778 7.0 1261.4111 1780.6724 14.0 FALSE //OR NOT IS_CHAR_SITTING_IN_CAR scplayer jet_casino10 WAIT 0 IF IS_CAR_DEAD jet_casino10 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS PRINT_NOW (CM10_17) 8000 1 //"You have destroyed the jet!" GOTO mission_casino10_failed ELSE IF IS_CHAR_IN_CAR scplayer jet_casino10 IF LOCATE_CHAR_IN_CAR_3D scplayer 1477.225 1640.364 9.860 350.0 350.0 500.0 FALSE GOSUB load_and_play_audio_casino10 ENDIF IF NOT IS_CAR_STOPPED_IN_AREA_3D jet_casino10 1636.3195 1144.4778 7.0 1261.4111 1780.6724 14.0 FALSE IF had_plane_message_casino10 = 1 PRINT_NOW (CM10_19) 8000 1 //"Fly back to San Fierro!" ADD_BLIP_FOR_COORD 1477.225 1640.364 9.860 landing_blip_casino10 REMOVE_BLIP jet_blip_casino10 blob_flag = 1 had_plane_message_casino10 = 0 ENDIF ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 IF NOT IS_CAR_STOPPED_IN_AREA_3D jet_casino10 1636.3195 1144.4778 7.0 1261.4111 1780.6724 14.0 FALSE IF had_plane_message_casino10 = 0 REMOVE_BLIP landing_blip_casino10 ADD_BLIP_FOR_CAR jet_casino10 jet_blip_casino10 SET_BLIP_AS_FRIENDLY airport_blip_casino10 TRUE PRINT_NOW (IN_VEH) 5000 1 //"Get back in the helicopter!" blob_flag = 0 had_plane_message_casino10 = 1 ENDIF ENDIF ENDIF ENDIF ENDWHILE REMOVE_BLIP landing_blip_casino10 REMOVE_BLIP jet_blip_casino10 SET_ALWAYS_DRAW_3D_MARKERS FALSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS GOTO mission_casino10_passed // **************************************** Mission casino10 failed *********************** mission_casino10_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" IF IS_CHAR_IN_WATER scplayer OR IS_CAR_IN_WATER jet_casino10 SET_UP_SKIP_AFTER_MISSION 2149.609 1681.117 9.820 90.0 ENDIF IF IS_CHAR_IN_AIR scplayer IF NOT IS_CHAR_IN_FLYING_VEHICLE scplayer IF NOT IS_PLAYER_USING_JETPACK player1 IF NOT player_fall_state > 0 SET_UP_SKIP_AFTER_MISSION 2149.609 1681.117 9.820 90.0 ENDIF ENDIF ENDIF ENDIF RETURN // **************************************** mission casino10 passed ************************ mission_casino10_passed: DISPLAY_RADAR 3 //pathing on WRITE_LOG "UNLOCK_ACHIEVEMENT LIBERTY_CITY_STATE_OF_MIND" flag_casino_mission_counter ++ //Used to terminate this mission loop in the main script. These varibles will be set up in the main.sc REGISTER_MISSION_PASSED (CASIN10) //Used in the stats PLAYER_MADE_PROGRESS 1 PRINT_WITH_NUMBER_BIG (M_PASSS) 20000 5000 1 //"Mission Passed!" ADD_SCORE player1 20000 AWARD_PLAYER_MISSION_RESPECT 35 //amount of respect CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 REMOVE_BLIP heist_contact_blip SET_INT_STAT CITIES_PASSED 3 START_NEW_SCRIPT mansion_mission_loop 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 TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME MOBLA2 START_NEW_SCRIPT cell_phone_LA2 SET_INT_STAT PASSED_CASINO10 1 Return_cities_passed = 1 RETURN // ********************************** mission cleanup *********************************** mission_cleanup_casino10: DISPLAY_RADAR 3 //pathing on SET_MAX_WANTED_LEVEL 6 //SWITCH_PED_ROADS_OFF -908.229 445.396 1342.0 -772.180 473.524 1370.0 // St. Marks Bistro SET_WANTED_MULTIPLIER 1.0 REMOVE_CHAR_ELEGANTLY forelli_casino10 flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start //Used to reset the mobile phone timer so it doesn't ring immediately after the mission SWITCH_ROADS_BACK_TO_ORIGINAL 2095.350 1734.179 8.0 2337.495 1524.991 15.0 // outside casino SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2095.350 1734.179 8.0 2337.495 1524.991 15.0 // outside casino CLEAR_SEQUENCE_TASK top_goon1_task2_casino10 CLEAR_SEQUENCE_TASK top_goon2_task2_casino10 CLEAR_SEQUENCE_TASK task_kill_player_casino10 CLEAR_SEQUENCE_TASK task_kill2_player_casino10 CLEAR_SEQUENCE_TASK peekright_casino10 CLEAR_SEQUENCE_TASK player_liberty_sequence CLEAR_SEQUENCE_TASK goon5_task_casino10 CLEAR_SEQUENCE_TASK goon6_task_casino10 CLEAR_SEQUENCE_TASK roll_left_casino10 CLEAR_SEQUENCE_TASK roll_right_casino10 CLEAR_SEQUENCE_TASK forelli_end_casino10 REMOVE_BLIP blip_forelli_casino10 REMOVE_BLIP airport_blip_casino10 REMOVE_BLIP airport_blip2_casino10 REMOVE_BLIP liberty_blip_casino10 REMOVE_BLIP jet_blip_casino10 REMOVE_BLIP landing_blip_casino10 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF1 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF2 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF3 MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED SHAMAL MARK_MODEL_AS_NO_LONGER_NEEDED SENTINEL MARK_MODEL_AS_NO_LONGER_NEEDED TAXI MARK_MODEL_AS_NO_LONGER_NEEDED BMYBU MARK_MODEL_AS_NO_LONGER_NEEDED WFYBU UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 UNLOAD_SPECIAL_CHARACTER 3 REMOVE_DECISION_MAKER tough_dm_casino10 REMOVE_DECISION_MAKER empty_dm_casino10 REMOVE_CAR_RECORDING 601 REMOVE_CAR_RECORDING 602 REMOVE_CAR_RECORDING 603 REMOVE_ANIMATION SWAT SET_ALWAYS_DRAW_3D_MARKERS FALSE SET_PLAYER_IS_IN_STADIUM FALSE MISSION_HAS_FINISHED RETURN // Checks to see who has been killed baddie_death_checks_casino10: IF flag_forelli_dead_casino10 = 0 IF IS_CHAR_DEAD forelli_casino10 REMOVE_BLIP blip_forelli_casino10 ++ counter_dead_casino10 flag_forelli_dead_casino10 = 1 ENDIF ENDIF IF flag_bodyguard1_dead_casino10 = 0 IF IS_CHAR_DEAD bodyguard1_casino10 ++ counter_dead_casino10 flag_bodyguard1_dead_casino10 = 1 ELSE IF player_entered_bistro_casino10 = 1 IF flag_forelli_dead_casino10 = 0 IF bodyguard1_kill_player_casino10 = 0 IF NOT IS_CHAR_IN_AREA_3D scplayer -796.172 488.580 1370.0 -777.902 498.668 1378.235 FALSE // upstairs level CLEAR_CHAR_TASKS bodyguard1_casino10 TASK_STAY_IN_SAME_PLACE bodyguard1_casino10 TRUE TASK_KILL_CHAR_ON_FOOT bodyguard1_casino10 scplayer bodyguard1_kill_player_casino10 = 1 ENDIF ENDIF ELSE IF bodyguard1_kill_player_casino10 = 1 TASK_STAY_IN_SAME_PLACE bodyguard1_casino10 FALSE bodyguard1_kill_player_casino10 = 2 ELSE IF NOT bodyguard1_kill_player_casino10 = 2 CLEAR_CHAR_TASKS bodyguard1_casino10 TASK_STAY_IN_SAME_PLACE bodyguard1_casino10 FALSE TASK_KILL_CHAR_ON_FOOT bodyguard1_casino10 scplayer bodyguard1_kill_player_casino10 = 2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF flag_bodyguard2_dead_casino10 = 0 IF IS_CHAR_DEAD bodyguard2_casino10 ++ counter_dead_casino10 flag_bodyguard2_dead_casino10 = 1 ELSE IF player_entered_bistro_casino10 = 1 IF flag_forelli_dead_casino10 = 0 IF bodyguard2_kill_player_casino10 = 0 IF NOT IS_CHAR_IN_AREA_3D scplayer -796.172 488.580 1370.0 -777.902 498.668 1378.235 FALSE // upstairs level CLEAR_CHAR_TASKS bodyguard2_casino10 TASK_STAY_IN_SAME_PLACE bodyguard2_casino10 TRUE TASK_KILL_CHAR_ON_FOOT bodyguard2_casino10 scplayer bodyguard2_kill_player_casino10 = 1 ENDIF ENDIF ELSE IF bodyguard2_kill_player_casino10 = 1 TASK_STAY_IN_SAME_PLACE bodyguard2_casino10 FALSE bodyguard2_kill_player_casino10 = 2 ELSE IF NOT bodyguard2_kill_player_casino10 = 2 CLEAR_CHAR_TASKS bodyguard2_casino10 TASK_STAY_IN_SAME_PLACE bodyguard2_casino10 FALSE TASK_KILL_CHAR_ON_FOOT bodyguard2_casino10 scplayer bodyguard2_kill_player_casino10 = 2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF flag_goon1_dead_casino10 = 0 IF IS_CHAR_DEAD goon1_casino10 ++ counter_dead_casino10 flag_goon1_dead_casino10 = 1 ELSE IF flag_forelli_dead_casino10 = 1 IF goon1_attack_player_casino10 < 2 TASK_STAY_IN_SAME_PLACE goon1_casino10 FALSE goon1_attack_player_casino10 = 2 ENDIF ENDIF ENDIF ENDIF IF flag_goon2_dead_casino10 = 0 IF IS_CHAR_DEAD goon2_casino10 ++ counter_dead_casino10 flag_goon2_dead_casino10 = 1 ELSE IF flag_forelli_dead_casino10 = 1 IF goon2_attack_player_casino10 < 2 TASK_STAY_IN_SAME_PLACE goon2_casino10 FALSE goon2_attack_player_casino10 = 2 ENDIF ENDIF ENDIF ENDIF IF flag_goon3_dead_casino10 = 0 IF IS_CHAR_DEAD goon3_casino10 ++ counter_dead_casino10 flag_goon3_dead_casino10 = 1 ELSE IF flag_forelli_dead_casino10 = 1 IF goon3_kill_player_casino10 = 0 CLEAR_CHAR_TASKS goon3_casino10 TASK_STAY_IN_SAME_PLACE goon3_casino10 FALSE TASK_KILL_CHAR_ON_FOOT goon3_casino10 scplayer goon3_kill_player_casino10 = 1 ELSE IF goon3_kill_player_casino10 < 2 TASK_STAY_IN_SAME_PLACE goon3_casino10 FALSE goon3_kill_player_casino10 = 2 ENDIF ENDIF ENDIF ENDIF ENDIF IF flag_goon4_dead_casino10 = 0 IF IS_CHAR_DEAD goon4_casino10 ++ counter_dead_casino10 flag_goon4_dead_casino10 = 1 ELSE IF flag_forelli_dead_casino10 = 1 IF goon4_kill_player_casino10 = 0 CLEAR_CHAR_TASKS goon4_casino10 TASK_STAY_IN_SAME_PLACE goon4_casino10 FALSE TASK_KILL_CHAR_ON_FOOT goon4_casino10 scplayer goon4_kill_player_casino10 = 1 ELSE IF goon4_kill_player_casino10 < 2 TASK_STAY_IN_SAME_PLACE goon4_casino10 FALSE goon4_kill_player_casino10 = 2 ENDIF ENDIF ENDIF ENDIF ENDIF IF flag_goon5_dead_casino10 = 0 IF IS_CHAR_DEAD goon5_casino10 ++ counter_dead_casino10 flag_goon5_dead_casino10 = 1 ELSE IF flag_forelli_dead_casino10 = 1 IF goon5_kill_player_casino10 = 0 TASK_STAY_IN_SAME_PLACE goon5_casino10 FALSE goon5_kill_player_casino10 = 1 ENDIF ENDIF ENDIF ENDIF IF flag_goon6_dead_casino10 = 0 IF IS_CHAR_DEAD goon6_casino10 ++ counter_dead_casino10 flag_goon6_dead_casino10 = 1 ELSE IF flag_forelli_dead_casino10 = 1 IF goon6_kill_player_casino10 = 0 TASK_STAY_IN_SAME_PLACE goon6_casino10 FALSE goon6_kill_player_casino10 = 1 ENDIF ENDIF ENDIF ENDIF IF top_goon1_dead_casino10 = 0 IF IS_CHAR_DEAD top_goon1_casino10 ++ counter_dead_casino10 top_goon1_dead_casino10 = 1 ELSE IF flag_forelli_dead_casino10 = 1 IF top_goon1_kill_player_casino10 = 0 CLEAR_CHAR_TASKS top_goon1_casino10 TASK_STAY_IN_SAME_PLACE top_goon1_casino10 FALSE TASK_KILL_CHAR_ON_FOOT top_goon1_casino10 scplayer top_goon1_kill_player_casino10 = 1 ENDIF ENDIF ENDIF ENDIF IF top_goon2_dead_casino10 = 0 IF IS_CHAR_DEAD top_goon2_casino10 ++ counter_dead_casino10 top_goon2_dead_casino10 = 1 ELSE IF player_entered_bistro_casino10 = 1 IF flag_forelli_dead_casino10 = 0 IF top_goon2_kill_player_casino10 = 0 IF NOT IS_CHAR_IN_AREA_3D scplayer -778.0 486.0 1370.0 -797.0 500.0 1380.0 FALSE // top area CLEAR_CHAR_TASKS top_goon2_casino10 TASK_STAY_IN_SAME_PLACE top_goon2_casino10 FALSE TASK_KILL_CHAR_ON_FOOT top_goon2_casino10 scplayer top_goon2_kill_player_casino10 = 1 ENDIF ENDIF ELSE IF top_goon2_kill_player_casino10 = 0 CLEAR_CHAR_TASKS top_goon2_casino10 TASK_STAY_IN_SAME_PLACE top_goon2_casino10 FALSE TASK_KILL_CHAR_ON_FOOT top_goon2_casino10 scplayer top_goon2_kill_player_casino10 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF top_goon3_dead_casino10 = 0 IF IS_CHAR_DEAD top_goon3_casino10 ++ counter_dead_casino10 top_goon3_dead_casino10 = 1 ELSE IF player_entered_bistro_casino10 = 1 IF flag_forelli_dead_casino10 = 0 IF IS_CHAR_IN_AREA_3D scplayer -781.646 498.659 1374.0 -780.146 487.315 1378.0 FALSE IF flag_animate_top_goon3_casino10 = 0 enemy_actor_casino10 = top_goon3_casino10 GOSUB peek_sequence_casino10 flag_animate_top_goon3_casino10 = 1 ENDIF IF flag_animate_top_goon3_casino10 = 1 IF HAS_CHAR_BEEN_DAMAGED_BY_WEAPON top_goon3_casino10 WEAPONTYPE_ANYWEAPON IF flag_animate_top_goon3_casino10 = 1 CLEAR_CHAR_TASKS top_goon3_casino10 TASK_STAY_IN_SAME_PLACE top_goon3_casino10 FALSE TASK_KILL_CHAR_ON_FOOT top_goon3_casino10 scplayer flag_animate_top_goon3_casino10 = 2 ENDIF ENDIF ENDIF ELSE IF flag_animate_top_goon3_casino10 = 1 CLEAR_CHAR_TASKS top_goon3_casino10 TASK_STAY_IN_SAME_PLACE top_goon3_casino10 FALSE TASK_KILL_CHAR_ON_FOOT top_goon3_casino10 scplayer flag_animate_top_goon3_casino10 = 2 ENDIF ENDIF ELSE IF NOT flag_animate_top_goon3_casino10 = 2 CLEAR_CHAR_TASKS top_goon3_casino10 TASK_STAY_IN_SAME_PLACE top_goon3_casino10 FALSE TASK_KILL_CHAR_ON_FOOT top_goon3_casino10 scplayer flag_animate_top_goon3_casino10 = 2 ENDIF ENDIF ENDIF ENDIF ENDIF IF top_goon4_dead_casino10 = 0 IF IS_CHAR_DEAD top_goon4_casino10 ++ counter_dead_casino10 top_goon4_dead_casino10 = 1 ELSE IF player_entered_bistro_casino10 = 1 IF flag_forelli_dead_casino10 = 0 IF IS_CHAR_IN_AREA_3D scplayer -781.646 498.659 1374.0 -780.146 487.315 1378.0 FALSE IF flag_animate_top_goon4_casino10 = 0 TIMERA = 0 flag_animate_top_goon4_casino10 = 1 ENDIF IF flag_animate_top_goon4_casino10 = 1 IF TIMERA >= 800 enemy_actor_casino10 = top_goon4_casino10 GOSUB peek_sequence_casino10 flag_animate_top_goon4_casino10 = 2 ENDIF ENDIF IF flag_animate_top_goon4_casino10 = 1 IF HAS_CHAR_BEEN_DAMAGED_BY_WEAPON top_goon4_casino10 WEAPONTYPE_ANYWEAPON IF flag_animate_top_goon4_casino10 < 3 CLEAR_CHAR_TASKS top_goon4_casino10 TASK_STAY_IN_SAME_PLACE top_goon4_casino10 FALSE TASK_KILL_CHAR_ON_FOOT top_goon4_casino10 scplayer flag_animate_top_goon4_casino10 = 3 ENDIF ENDIF ENDIF ELSE IF flag_animate_top_goon4_casino10 = 2 CLEAR_CHAR_TASKS top_goon4_casino10 TASK_STAY_IN_SAME_PLACE top_goon4_casino10 FALSE TASK_KILL_CHAR_ON_FOOT top_goon4_casino10 scplayer flag_animate_top_goon4_casino10 = 3 ENDIF ENDIF ELSE IF flag_animate_top_goon4_casino10 < 3 CLEAR_CHAR_TASKS top_goon4_casino10 TASK_STAY_IN_SAME_PLACE top_goon4_casino10 FALSE TASK_KILL_CHAR_ON_FOOT top_goon4_casino10 scplayer flag_animate_top_goon4_casino10 = 3 ENDIF ENDIF ENDIF ENDIF ENDIF IF corridor_goon1_dead_casino10 = 0 IF IS_CHAR_DEAD corridor_goon1_casino10 ++ counter_dead_casino10 corridor_goon1_dead_casino10 = 1 ELSE IF flag_forelli_dead_casino10 = 1 IF corridor_goon1_kill_player_casino10 = 0 CLEAR_CHAR_TASKS corridor_goon1_casino10 TASK_STAY_IN_SAME_PLACE corridor_goon1_casino10 FALSE TASK_KILL_CHAR_ON_FOOT corridor_goon1_casino10 scplayer corridor_goon1_kill_player_casino10 = 1 ELSE IF corridor_goon1_kill_player_casino10 < 2 TASK_STAY_IN_SAME_PLACE corridor_goon1_casino10 FALSE corridor_goon1_kill_player_casino10 = 2 ENDIF ENDIF ENDIF ENDIF ENDIF IF corridor_goon2_dead_casino10 = 0 IF IS_CHAR_DEAD corridor_goon2_casino10 ++ counter_dead_casino10 corridor_goon2_dead_casino10 = 1 ELSE IF flag_forelli_dead_casino10 = 1 IF corridor_goon2_kill_player_casino10 = 0 CLEAR_CHAR_TASKS corridor_goon2_casino10 TASK_STAY_IN_SAME_PLACE corridor_goon2_casino10 FALSE TASK_KILL_CHAR_ON_FOOT corridor_goon2_casino10 scplayer corridor_goon2_kill_player_casino10 = 1 ELSE IF corridor_goon2_kill_player_casino10 < 2 TASK_STAY_IN_SAME_PLACE corridor_goon2_casino10 FALSE corridor_goon2_kill_player_casino10 = 2 ENDIF ENDIF ENDIF ENDIF ENDIF IF corridor_goon3_dead_casino10 = 0 IF IS_CHAR_DEAD corridor_goon3_casino10 ++ counter_dead_casino10 corridor_goon3_dead_casino10 = 1 ELSE IF flag_forelli_dead_casino10 = 1 IF corridor_goon3_kill_player_casino10 = 0 CLEAR_CHAR_TASKS corridor_goon3_casino10 TASK_STAY_IN_SAME_PLACE corridor_goon3_casino10 FALSE TASK_KILL_CHAR_ON_FOOT corridor_goon3_casino10 scplayer corridor_goon3_kill_player_casino10 = 1 ELSE IF corridor_goon3_kill_player_casino10 < 2 TASK_STAY_IN_SAME_PLACE corridor_goon3_casino10 FALSE corridor_goon3_kill_player_casino10 = 2 ENDIF ENDIF ENDIF ENDIF ENDIF RETURN // tells the guards to peek peek_sequence_casino10: OPEN_SEQUENCE_TASK peekright_casino10 TASK_PLAY_ANIM -1 swt_wllpk_R SWAT 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 swt_wllshoot_in_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer 1500 TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_PLAY_ANIM -1 swt_wllshoot_out_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM -1 swt_wllpk_R_back SWAT 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT peekright_casino10 1 CLOSE_SEQUENCE_TASK peekright_casino10 PERFORM_SEQUENCE_TASK enemy_actor_casino10 peekright_casino10 CLEAR_SEQUENCE_TASK peekright_casino10 RETURN // kill player tasks kill_player1_task: OPEN_SEQUENCE_TASK task_kill_player_casino10 TASK_TOGGLE_DUCK -1 TRUE TASK_FOLLOW_PATH_NODES_TO_COORD -1 -788.611 497.731 1375.227 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK task_kill_player_casino10 IF NOT IS_CHAR_DEAD enemy_actor1_casino10 PERFORM_SEQUENCE_TASK enemy_actor1_casino10 task_kill_player_casino10 ENDIF CLEAR_SEQUENCE_TASK task_kill_player_casino10 RETURN kill_player2_task: OPEN_SEQUENCE_TASK task_kill2_player_casino10 TASK_TOGGLE_DUCK -1 TRUE TASK_FOLLOW_PATH_NODES_TO_COORD -1 -789.542 495.862 1376.235 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK task_kill2_player_casino10 IF NOT IS_CHAR_DEAD enemy_actor2_casino10 PERFORM_SEQUENCE_TASK enemy_actor2_casino10 task_kill2_player_casino10 ENDIF CLEAR_SEQUENCE_TASK task_kill2_player_casino10 RETURN // roll out for enemies roll_left_task_casino10: OPEN_SEQUENCE_TASK roll_left_casino10 TASK_PLAY_ANIM -1 Crouch_Roll_L PED 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_TOGGLE_DUCK -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK roll_left_casino10 IF NOT IS_CHAR_DEAD enemy_actor3_casino10 PERFORM_SEQUENCE_TASK enemy_actor3_casino10 roll_left_casino10 ENDIF CLEAR_SEQUENCE_TASK roll_left_casino10 RETURN // roll out for enemies roll_right_task_casino10: OPEN_SEQUENCE_TASK roll_right_casino10 TASK_PLAY_ANIM -1 Crouch_Roll_R PED 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_TOGGLE_DUCK -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK roll_right_casino10 IF NOT IS_CHAR_DEAD enemy_actor4_casino10 PERFORM_SEQUENCE_TASK enemy_actor4_casino10 roll_right_casino10 ENDIF CLEAR_SEQUENCE_TASK roll_right_casino10 RETURN // cleans up the guards so I can put in more guards for the ending mid_mission_cleanup_casino10: IF flag_bodyguard1_dead_casino10 = 0 IF NOT IS_CHAR_DEAD bodyguard1_casino10 DELETE_CHAR bodyguard1_casino10 ++ counter_dead_casino10 flag_bodyguard1_dead_casino10 = 1 ENDIF ENDIF IF flag_bodyguard2_dead_casino10 = 0 IF NOT IS_CHAR_DEAD bodyguard2_casino10 DELETE_CHAR bodyguard2_casino10 ++ counter_dead_casino10 flag_bodyguard2_dead_casino10 = 1 ENDIF ENDIF IF flag_goon1_dead_casino10 = 0 IF NOT IS_CHAR_DEAD goon1_casino10 DELETE_CHAR goon1_casino10 ++ counter_dead_casino10 flag_goon1_dead_casino10 = 1 ENDIF ENDIF IF flag_goon2_dead_casino10 = 0 IF NOT IS_CHAR_DEAD goon2_casino10 DELETE_CHAR goon2_casino10 ++ counter_dead_casino10 flag_goon2_dead_casino10 = 1 ENDIF ENDIF IF flag_goon3_dead_casino10 = 0 IF NOT IS_CHAR_DEAD goon3_casino10 DELETE_CHAR goon3_casino10 ++ counter_dead_casino10 flag_goon3_dead_casino10 = 1 ENDIF ENDIF IF flag_goon4_dead_casino10 = 0 IF NOT IS_CHAR_DEAD goon4_casino10 DELETE_CHAR goon4_casino10 ++ counter_dead_casino10 flag_goon4_dead_casino10 = 1 ENDIF ENDIF IF flag_goon5_dead_casino10 = 0 IF NOT IS_CHAR_DEAD goon5_casino10 DELETE_CHAR goon5_casino10 ++ counter_dead_casino10 flag_goon5_dead_casino10 = 1 ENDIF ENDIF IF flag_goon6_dead_casino10 = 0 IF NOT IS_CHAR_DEAD goon6_casino10 DELETE_CHAR goon6_casino10 ++ counter_dead_casino10 flag_goon6_dead_casino10 = 1 ENDIF ENDIF IF top_goon1_dead_casino10 = 0 IF NOT IS_CHAR_DEAD top_goon1_casino10 DELETE_CHAR top_goon1_casino10 ++ counter_dead_casino10 top_goon1_dead_casino10 = 1 ENDIF ENDIF IF top_goon2_dead_casino10 = 0 IF NOT IS_CHAR_DEAD top_goon2_casino10 DELETE_CHAR top_goon2_casino10 ++ counter_dead_casino10 top_goon2_dead_casino10 = 1 ENDIF ENDIF IF top_goon3_dead_casino10 = 0 IF NOT IS_CHAR_DEAD top_goon3_casino10 DELETE_CHAR top_goon3_casino10 ++ counter_dead_casino10 top_goon3_dead_casino10 = 0 ENDIF ENDIF IF top_goon4_dead_casino10 = 0 IF NOT IS_CHAR_DEAD top_goon4_casino10 DELETE_CHAR top_goon4_casino10 ++ counter_dead_casino10 top_goon4_dead_casino10 = 1 ENDIF ENDIF flag_mid_cleanup_done_casino10 = 1 RETURN create_end_guys_casino10: CUSTOM_PLATE_FOR_NEXT_CAR SENTINEL &_4GEDIT_ CREATE_CAR SENTINEL -831.107 503.678 1357.348 car2_casino10 CHANGE_CAR_COLOUR car2_casino10 24 24 SET_CAR_HEADING car2_casino10 292.606 LOCK_CAR_DOORS car2_casino10 CARLOCK_LOCKED SET_VEHICLE_AREA_VISIBLE car2_casino10 1 CREATE_CHAR PEDTYPE_MISSION1 VMAFF3 -816.005 493.329 1358.293 end_goon1_casino10 SET_CHAR_ALLOWED_TO_DUCK end_goon1_casino10 FALSE GIVE_WEAPON_TO_CHAR end_goon1_casino10 WEAPONTYPE_MICRO_UZI 30000 // Set to infinate ammo SET_CHAR_HEADING end_goon1_casino10 302.139 SET_CHAR_DECISION_MAKER end_goon1_casino10 dm_duck_casino10 TASK_STAY_IN_SAME_PLACE end_goon1_casino10 TRUE TASK_KILL_CHAR_ON_FOOT end_goon1_casino10 scplayer SET_CHAR_ACCURACY end_goon1_casino10 80 SET_CHAR_SHOOT_RATE end_goon1_casino10 50 CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 -821.268 508.167 1358.273 end_goon2_casino10 SET_CHAR_ALLOWED_TO_DUCK end_goon2_casino10 FALSE GIVE_WEAPON_TO_CHAR end_goon2_casino10 WEAPONTYPE_MICRO_UZI 30000 // Set to infinate ammo SET_CHAR_HEADING end_goon2_casino10 234.012 SET_CHAR_DECISION_MAKER end_goon2_casino10 dm_duck_casino10 TASK_TOGGLE_DUCK end_goon2_casino10 TRUE TASK_STAY_IN_SAME_PLACE end_goon2_casino10 TRUE TASK_KILL_CHAR_ON_FOOT end_goon2_casino10 scplayer SET_CHAR_ACCURACY end_goon2_casino10 50 SET_CHAR_SHOOT_RATE end_goon2_casino10 80 CREATE_CHAR PEDTYPE_MISSION1 VMAFF2 -828.770 510.594 1357.307 end_goon3_casino10 SET_CHAR_ALLOWED_TO_DUCK end_goon3_casino10 FALSE GIVE_WEAPON_TO_CHAR end_goon3_casino10 WEAPONTYPE_MICRO_UZI 30000 // Set to infinate ammo SET_CHAR_HEADING end_goon3_casino10 241.767 SET_CHAR_DECISION_MAKER end_goon3_casino10 dm_duck_casino10 TASK_TOGGLE_DUCK end_goon3_casino10 TRUE TASK_STAY_IN_SAME_PLACE end_goon3_casino10 TRUE TASK_KILL_CHAR_ON_FOOT end_goon3_casino10 scplayer SET_CHAR_ACCURACY end_goon3_casino10 75 SET_CHAR_SHOOT_RATE end_goon3_casino10 50 end_guys_created_casino10 = 1 RETURN // mission audio load_and_play_audio_casino10: IF casino10_audio_is_playing = 0 OR casino10_audio_is_playing = 1 IF casino10_index <= cell_index_end GOSUB play_casino10_audio ENDIF ENDIF IF casino10_audio_is_playing = 2 IF HAS_MISSION_AUDIO_FINISHED 1 casino10_audio_is_playing = 0 casino10_index ++ casino10_cutscene_flag = 0 CLEAR_PRINTS ENDIF ENDIF RETURN play_casino10_audio: IF casino10_audio_is_playing = 0 LOAD_MISSION_AUDIO 1 casino10_audio_chat[casino10_index] casino10_audio_is_playing = 1 ENDIF IF casino10_audio_is_playing = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW ( $casino10_chat[casino10_index] ) 4000 1 //Dummy message" PLAY_MISSION_AUDIO 1 casino10_audio_is_playing = 2 ENDIF ENDIF RETURN end_guys_death_check_casino10: IF end_goon1_casino10_dead = 0 IF IS_CHAR_DEAD end_goon1_casino10 ++ counter_dead_casino10 end_goon1_casino10_dead = 1 ELSE IF flag_forelli_dead_casino10 = 1 IF end_goon1_kill_player_casino10 = 0 SET_CHAR_STAY_IN_SAME_PLACE end_goon1_casino10 FALSE end_goon1_kill_player_casino10 = 1 ENDIF ENDIF ENDIF ENDIF IF end_goon2_casino10_dead = 0 IF IS_CHAR_DEAD end_goon2_casino10 ++ counter_dead_casino10 end_goon2_casino10_dead = 1 ELSE IF flag_forelli_dead_casino10 = 1 IF end_goon2_kill_player_casino10 = 0 SET_CHAR_STAY_IN_SAME_PLACE end_goon2_casino10 FALSE end_goon2_kill_player_casino10 = 1 ENDIF ENDIF ENDIF ENDIF IF end_goon3_casino10_dead = 0 IF IS_CHAR_DEAD end_goon3_casino10 ++ counter_dead_casino10 end_goon3_casino10_dead = 1 ELSE IF flag_forelli_dead_casino10 = 1 IF end_goon3_kill_player_casino10 = 0 SET_CHAR_STAY_IN_SAME_PLACE end_goon3_casino10 FALSE end_goon3_kill_player_casino10 = 1 ENDIF ENDIF ENDIF ENDIF RETURN } MISSION_START // **************************************************************************************** // *** *** // *** Date: 12/08/2003 Time: 15:50:31 Name: Chris Rothwell *** // *** *** // *** Mission: Vegas Crash 1 - Misappropriation (Uber Chase) *** // *** *** // *** Brief: Player has to go to a ghost town in the desert to perform an assassination*** // *** DA and FBI arrive in separate helicopters, the reporter in his own car. There *** // *** is a big shoot out around some derelict buildings. The target escapes in a heli. *** // *** The player must follow him in the other heli; the target flies to a multi-storey *** // *** car park in Vegas gets out grabs a car and drives all the way down, the player *** // *** must chase him down and take him out. *** // *** *** // **************************************************************************************** GOSUB mission_vcr1_start IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_vcr1_failed ENDIF GOSUB mission_vcr1_cleanup MISSION_END // ************************************ MISSION START ************************************** { mission_vcr1_start: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN SCRIPT_NAME VCRASH1 WAIT 0 LVAR_INT mission_blip mission_blip2 mission_flag mission_timer sequence_task players_car car_health temp_int LVAR_INT r c e v m s b a LVAR_FLOAT h x2 y2 z2 x3 y3 z3 speed temp_float LOAD_MISSION_TEXT VCR1 MAKE_PLAYER_GANG_DISAPPEAR LOAD_CUTSCENE CRASHV1 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_VEGAS START_CUTSCENE CLEAR_AREA 1653.3469 2668.3733 10.8203 10.0 0 DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE WHILE NOT IS_PLAYER_PLAYING player1 WAIT 0 ENDWHILE CLEAR_AREA 1599.0898 2667.7246 9.8203 0.5 0 LOAD_SCENE 1599.0898 2667.7246 9.8203 SET_CHAR_COORDINATES scplayer 1599.0898 2667.7246 9.8203 SET_CHAR_HEADING scplayer 90.0 SET_CAMERA_BEHIND_PLAYER RELEASE_WEATHER MAKE_PLAYER_GANG_REAPPEAR DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_RESPAWN_POINT_FOR_DURATION_OF_MISSION 1599.0898 2667.7246 9.8203 PRINT_NOW VCR1__1 15000 1 //Kill the target to get the stuff. ADD_BLIP_FOR_COORD -1306.1910 2532.4802 86.7332 mission_blip change_blip_colour mission_blip RED LVAR_INT kill_player_flag kill_player_flag = 0 LVAR_INT enemy_in_car created_pickup_flag enemy_in_car = 0 created_pickup_flag = 0 LVAR_INT enemy_flag[10] a = 0 WHILE a < 10 enemy_flag[a] = 0 ++ a ENDWHILE mission_flag = 0 LVAR_INT printed_this_yet printed_this_yet = 0 lvar_int player_in_area player_in_area = 0 IF mission_flag = 1 CREATE_PICKUP BRIEFCASE PICKUP_ONCE the_stuff_x the_stuff_y the_stuff_z the_stuff ENDIF SET_CHAR_RELATIONSHIP scplayer ACQUAINTANCE_TYPE_PED_HATE pedtype_mission1 if played_vcrash1_before = 1 SET_UP_SKIP -1346.6138 2304.4824 93.5390 4.8156 endif // ************************************* MISSION LOOP ************************************** mission_vcr1_loop: WAIT 0 IF NOT IS_PLAYER_PLAYING player1 GOTO mission_vcr1_loop ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_vcr1_passed ENDIF GET_GAME_TIMER game_timer IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2511.3638 2388.9138 6.2421 38.6 26.4 3.4 0//UNDERGROUND CARPARK FULL LOCATE or LOCATE_CHAR_ANY_MEANS_2D scplayer -1306.1910 2532.4802 200.0 200.0 0 alter_wanted_level player1 0 endif IF mission_flag = 0 //IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_w // SET_CHAR_COORDINATES scplayer -1249.7703 2550.8384 122.4406 //ENDIF IF LOCATE_CHAR_ANY_MEANS_2D scplayer -1306.1910 2532.4802 250.0 250.0 0 e = 0 IF NOT HAS_MODEL_LOADED MAVERICK REQUEST_MODEL MAVERICK ELSE ++ e ENDIF IF NOT HAS_MODEL_LOADED MESA REQUEST_MODEL MESA ELSE ++ e ENDIF IF NOT HAS_MODEL_LOADED FBIRANCH REQUEST_MODEL FBIRANCH ELSE ++ e ENDIF IF NOT HAS_MODEL_LOADED SANCHEZ REQUEST_MODEL SANCHEZ ELSE ++ e ENDIF IF NOT HAS_MODEL_LOADED BUFFALO REQUEST_MODEL BUFFALO ELSE ++ e ENDIF IF NOT HAS_MODEL_LOADED AK47 REQUEST_MODEL AK47 ELSE ++ e ENDIF IF NOT HAS_MODEL_LOADED FBI REQUEST_MODEL FBI ELSE ++ e ENDIF IF NOT HAS_MODEL_LOADED WMYBU REQUEST_MODEL WMYBU ELSE ++ e ENDIF IF NOT HAS_MODEL_LOADED MICRO_UZI REQUEST_MODEL MICRO_UZI ELSE ++ e ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 114 REQUEST_CAR_RECORDING 114 ELSE ++ e ENDIF IF NOT HAS_CAR_RECORDING_BEEN_LOADED 109 REQUEST_CAR_RECORDING 109 ELSE ++ e ENDIF IF e = 11 played_vcrash1_before = 1 LVAR_INT heli1 heli2 CREATE_CAR MAVERICK -1325.5135 2559.8704 87.6329 heli1 SET_CAR_HEADING heli1 90.0 LOCK_CAR_DOORS heli1 CARLOCK_LOCKOUT_PLAYER_ONLY //FREEZE_CAR_POSITION heli1 TRUE SET_CAR_HEALTH heli1 50000 SET_CAR_PROOFS heli1 TRUE TRUE TRUE TRUE TRUE START_PLAYBACK_RECORDED_CAR heli1 114 SET_PLAYBACK_SPEED heli1 0.0 SET_HELI_BLADES_FULL_SPEED heli1 CREATE_CAR MAVERICK -1343.2197 2538.3367 87.0107 heli2 SET_CAR_HEADING heli2 10.3040 SET_CAR_PROOFS heli2 TRUE TRUE TRUE TRUE TRUE MARK_MODEL_AS_NO_LONGER_NEEDED MAVERICK LVAR_INT jeep1 jeep2 CREATE_CAR MESA -1304.4161 2498.8213 87.0571 jeep1 MARK_MODEL_AS_NO_LONGER_NEEDED MESA SET_CAR_HEADING jeep1 240.0877 CREATE_CAR FBIRANCH -1291.9478 2497.7817 87.1105 jeep2 MARK_MODEL_AS_NO_LONGER_NEEDED FBIRANCH SET_CAR_HEADING jeep2 107.4866 LVAR_INT dirtbike1 dirtbike2 CREATE_CAR SANCHEZ -1311.1300 2512.1687 86.7085 dirtbike1 SET_CAR_HEADING dirtbike1 177.3181 CREATE_CAR SANCHEZ -1308.1073 2542.5774 87.4072 dirtbike2 MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ SET_CAR_HEADING dirtbike2 179.8761 LVAR_INT enemy[10] CREATE_CHAR PEDTYPE_MISSION1 WMYBU -1312.0085 2549.5996 86.7332 enemy[0]//-1306.1910 2532.4802 86.7332 enemy[0]//STANDING BY FIRE SET_CHAR_HEADING enemy[0] 259.3965 GIVE_WEAPON_TO_CHAR enemy[0] WEAPONTYPE_MICRO_UZI 9999 //TASK_TOGGLE_PED_THREAT_SCANNER enemy[0] FALSE FALSE TRUE //TASK_TOGGLE_PED_THREAT_SCANNER CharID Everywhere InCar DuringScriptTask //SET_SENSE_RANGE enemy[0] 50.0 ////SET_HEARING_RANGE enemy[0] 50.0 SET_INFORM_RESPECTED_FRIENDS enemy[0] 30.0 5 REMOVE_BLIP mission_blip ADD_BLIP_FOR_CHAR enemy[0] mission_blip SET_CHAR_ONLY_DAMAGED_BY_PLAYER enemy[0] TRUE SET_CHAR_HEALTH enemy[0] 200 LVAR_INT geez_decisions COPY_CHAR_DECISION_MAKER -1 geez_decisions CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE geez_decisions EVENT_GUN_AIMED_AT SET_CHAR_DECISION_MAKER enemy[0] geez_decisions LVAR_INT geez geez = 0 CREATE_CHAR PEDTYPE_MISSION1 FBI -1302.7150 2534.3738 86.7332 enemy[1]//STANDING BY FIRE SET_CHAR_HEADING enemy[1] 183.0002 GIVE_WEAPON_TO_CHAR enemy[1] WEAPONTYPE_AK47 9999 TASK_TOGGLE_PED_THREAT_SCANNER enemy[1] FALSE FALSE TRUE SET_INFORM_RESPECTED_FRIENDS enemy[1] 30.0 8 SET_CHAR_RELATIONSHIP enemy[1] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_SENSE_RANGE enemy[1] 70.0 SET_CHAR_KEEP_TASK enemy[1] true //SET_HEARING_RANGE enemy[1] 50.0 CREATE_CHAR PEDTYPE_MISSION1 FBI -1325.8683 2525.3525 89.2044 enemy[2]//STANDING ON ROOF SET_CHAR_HEADING enemy[2] 226.1060 GIVE_WEAPON_TO_CHAR enemy[2] WEAPONTYPE_AK47 9999 TASK_TOGGLE_PED_THREAT_SCANNER enemy[2] FALSE FALSE TRUE SET_INFORM_RESPECTED_FRIENDS enemy[2] 30.0 8 SET_CHAR_RELATIONSHIP enemy[2] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_SENSE_RANGE enemy[2] 70.0 SET_CHAR_KEEP_TASK enemy[2] true //SET_HEARING_RANGE enemy[2] 50.0 CREATE_CHAR PEDTYPE_MISSION1 FBI -1303.2039 2530.1968 86.6889 enemy[3]//STANDING BY FIRE SET_CHAR_HEADING enemy[3] 4.8042 GIVE_WEAPON_TO_CHAR enemy[3] WEAPONTYPE_AK47 9999 TASK_TOGGLE_PED_THREAT_SCANNER enemy[3] FALSE FALSE TRUE SET_INFORM_RESPECTED_FRIENDS enemy[3] 30.0 8 SET_CHAR_RELATIONSHIP enemy[3] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_SENSE_RANGE enemy[3] 70.0 SET_CHAR_KEEP_TASK enemy[3] true //SET_HEARING_RANGE enemy[3] 50.0 CREATE_CHAR PEDTYPE_MISSION1 FBI -1315.7826 2502.1667 88.8673 enemy[4]//ON ROOF WITH ASSAULT RIFLE SET_CHAR_HEADING enemy[4] 242.7848 GIVE_WEAPON_TO_CHAR enemy[4] WEAPONTYPE_AK47 9999 TASK_TOGGLE_PED_THREAT_SCANNER enemy[4] FALSE FALSE TRUE SET_INFORM_RESPECTED_FRIENDS enemy[4] 30.0 8 SET_CHAR_RELATIONSHIP enemy[4] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_SENSE_RANGE enemy[4] 70.0 SET_CHAR_KEEP_TASK enemy[4] true //SET_HEARING_RANGE enemy[4] 50.0 //PATROL ROUTE 1 CREATE_CHAR PEDTYPE_MISSION1 FBI -1299.5397 2555.9194 86.5877 enemy[5]//WALKING A LOOPING ROUTE GIVE_WEAPON_TO_CHAR enemy[5] WEAPONTYPE_AK47 9999 TASK_TOGGLE_PED_THREAT_SCANNER enemy[5] FALSE FALSE TRUE SET_INFORM_RESPECTED_FRIENDS enemy[5] 30.0 8 SET_CHAR_RELATIONSHIP enemy[5] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_SENSE_RANGE enemy[5] 70.0 SET_CHAR_KEEP_TASK enemy[5] true //SET_HEARING_RANGE enemy[5] 50.0 FLUSH_ROUTE EXTEND_ROUTE -1299.5397 2555.9194 86.5877 EXTEND_ROUTE -1310.9596 2556.2319 86.7332 EXTEND_ROUTE -1311.9681 2538.9626 86.7332 EXTEND_ROUTE -1321.3568 2531.0759 86.6104 EXTEND_ROUTE -1321.0430 2522.4998 86.2850 EXTEND_ROUTE -1314.5389 2513.3638 86.0349 EXTEND_ROUTE -1309.2075 2508.2400 86.0349 EXTEND_ROUTE -1296.6858 2524.0125 86.4456 // EXTEND_ROUTE -1295.6384 2546.6731 86.3820 TASK_FOLLOW_POINT_ROUTE enemy[5] PEDMOVE_WALK FOLLOW_ROUTE_LOOP //PATROL ROUTE 2 CREATE_CHAR PEDTYPE_MISSION1 FBI -1328.9739 2533.5286 86.4090 enemy[6]//WALKING A SMALL LOOPING ROUTE GIVE_WEAPON_TO_CHAR enemy[6] WEAPONTYPE_AK47 9999 TASK_TOGGLE_PED_THREAT_SCANNER enemy[6] FALSE FALSE TRUE SET_INFORM_RESPECTED_FRIENDS enemy[6] 30.0 8 SET_CHAR_RELATIONSHIP enemy[6] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_SENSE_RANGE enemy[6] 70.0 SET_CHAR_KEEP_TASK enemy[6] true //SET_HEARING_RANGE enemy[6] 50.0 FLUSH_ROUTE EXTEND_ROUTE -1328.9739 2533.5286 86.4090 EXTEND_ROUTE -1329.2932 2521.8799 86.0349 EXTEND_ROUTE -1309.1946 2521.4177 86.3435 EXTEND_ROUTE -1308.7552 2535.4458 86.7332 TASK_FOLLOW_POINT_ROUTE enemy[6] PEDMOVE_WALK FOLLOW_ROUTE_LOOP //PATROL ROUTE 3 - BACKFORTH CREATE_CHAR PEDTYPE_MISSION1 FBI -1288.0240 2516.4307 86.1473 enemy[7]//WALKING A BACKFORWARD ROUTE GIVE_WEAPON_TO_CHAR enemy[7] WEAPONTYPE_AK47 9999 TASK_TOGGLE_PED_THREAT_SCANNER enemy[7] FALSE FALSE TRUE SET_INFORM_RESPECTED_FRIENDS enemy[7] 30.0 8 SET_CHAR_RELATIONSHIP enemy[7] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_SENSE_RANGE enemy[7] 70.0 SET_CHAR_KEEP_TASK enemy[7] true //SET_HEARING_RANGE enemy[7] 50.0 FLUSH_ROUTE EXTEND_ROUTE -1288.0240 2516.4307 86.1473 EXTEND_ROUTE -1287.4299 2508.7686 86.0176 EXTEND_ROUTE -1295.2076 2506.5483 85.9726 EXTEND_ROUTE -1310.5842 2517.5430 86.1910 EXTEND_ROUTE -1311.3357 2524.4321 86.4621 EXTEND_ROUTE -1305.5496 2521.8127 86.3590 EXTEND_ROUTE -1300.1976 2521.1826 86.3342 EXTEND_ROUTE -1296.4155 2525.1853 86.4917 // EXTEND_ROUTE -1296.2900 2533.6702 86.7332 // EXTEND_ROUTE -1307.6914 2535.3662 86.7332 // EXTEND_ROUTE -1307.3020 2523.4485 86.4234 // EXTEND_ROUTE -1307.7834 2508.2190 86.0349 // EXTEND_ROUTE -1313.5420 2499.3018 86.0377 // EXTEND_ROUTE -1324.2356 2496.5830 86.0377 // EXTEND_ROUTE -1326.3759 2507.1326 86.0377 TASK_FOLLOW_POINT_ROUTE enemy[7] PEDMOVE_WALK FOLLOW_ROUTE_BACKFORWARD //2 DUDES CHATTING BY RANCHER CREATE_CHAR PEDTYPE_MISSION1 FBI -1294.9702 2499.6191 85.9347 enemy[8] SET_CHAR_HEADING enemy[8] 102.9169 GIVE_WEAPON_TO_CHAR enemy[8] WEAPONTYPE_AK47 9999 TASK_TOGGLE_PED_THREAT_SCANNER enemy[8] FALSE FALSE TRUE SET_INFORM_RESPECTED_FRIENDS enemy[8] 30.0 8 SET_CHAR_RELATIONSHIP enemy[8] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_SENSE_RANGE enemy[8] 70.0 SET_CHAR_KEEP_TASK enemy[8] true //SET_HEARING_RANGE enemy[8] 50.0 CREATE_CHAR PEDTYPE_MISSION1 FBI -1296.5479 2499.4358 85.9413 enemy[9] SET_CHAR_HEADING enemy[9] 281.0570 GIVE_WEAPON_TO_CHAR enemy[9] WEAPONTYPE_AK47 9999 TASK_TOGGLE_PED_THREAT_SCANNER enemy[9] FALSE FALSE TRUE TASK_CHAT_WITH_CHAR enemy[8] enemy[9] TRUE TRUE TASK_CHAT_WITH_CHAR enemy[9] enemy[8] FALSE TRUE SET_INFORM_RESPECTED_FRIENDS enemy[9] 30.0 12 SET_CHAR_RELATIONSHIP enemy[9] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_SENSE_RANGE enemy[9] 70.0 SET_CHAR_KEEP_TASK enemy[9] true //SET_HEARING_RANGE enemy[9] 50.0 LVAR_INT parked_car CREATE_CAR BUFFALO 2077.7607 2420.9014 48.5234 parked_car SET_CAR_HEADING parked_car 90.0 START_PLAYBACK_RECORDED_CAR parked_car 109 SET_PLAYBACK_SPEED parked_car 0.0 SET_CAR_PROOFS parked_car TRUE TRUE TRUE TRUE TRUE SET_CAR_HEALTH parked_car 50000 //FREEZE_CAR_POSITION parked_car TRUE //FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION parked_car TRUE LOCK_CAR_DOORS parked_car CARLOCK_LOCKOUT_PLAYER_ONLY LVAR_INT parked_car2 CREATE_CAR BUFFALO 2077.7607 2416.9014 48.5234 parked_car2 SET_CAR_HEADING parked_car2 90.0 SET_CAR_HEALTH parked_car2 1750 //FREEZE_CAR_POSITION parked_car2 TRUE //FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION parked_car2 TRUE LOCK_CAR_DOORS parked_car2 CARLOCK_LOCKOUT_PLAYER_ONLY LVAR_INT run_to_heli_from_campfire OPEN_SEQUENCE_TASK run_to_heli_from_campfire //TASK_GO_TO_COORD_WHILE_SHOOTING -1 -1308.6035 2535.9551 86.7332 PEDMOVE_SPRINT 1.0 0.5 scplayer //TASK_GO_TO_COORD_WHILE_SHOOTING -1 -1311.4175 2540.1951 86.7332 PEDMOVE_SPRINT 1.0 0.5 scplayer //TASK_GO_TO_COORD_WHILE_SHOOTING -1 -1312.0085 2549.5996 86.7332 PEDMOVE_SPRINT 1.0 0.5 scplayer TASK_GO_STRAIGHT_TO_COORD -1 -1324.9021 2554.6538 87.8548 PEDMOVE_SPRINT -2 //TASK_FOLLOW_PATH_NODES_TO_COORD_SHOOTING -1 -1323.1914 2556.3059 88.332 PEDMOVE_SPRINT -2 scplayer TASK_ENTER_CAR_AS_DRIVER -1 heli1 20000 CLOSE_SEQUENCE_TASK run_to_heli_from_campfire LVAR_INT run_to_car_from_helipad OPEN_SEQUENCE_TASK run_to_car_from_helipad TASK_LEAVE_ANY_CAR -1 //2072.9229 2438.2524 48.5157 - routefind to carpark (replace gotos with...TASK_FOLLOW_PATH_NODES_TO_COORD_WHILE_SHOOTING) TASK_GO_TO_COORD_WHILE_SHOOTING -1 2112.6072 2422.8733 59.8223 PEDMOVE_SPRINT 1.0 0.5 scplayer TASK_GO_TO_COORD_WHILE_SHOOTING -1 2097.2878 2436.6177 59.8223 PEDMOVE_SPRINT 1.0 0.5 scplayer TASK_GO_TO_COORD_WHILE_SHOOTING -1 2096.7571 2440.3943 59.8151 PEDMOVE_SPRINT 1.0 0.5 scplayer TASK_GO_TO_COORD_WHILE_SHOOTING -1 2074.0361 2440.0984 48.5176 PEDMOVE_SPRINT 1.0 0.5 scplayer TASK_GO_TO_COORD_WHILE_SHOOTING -1 2077.9998 2427.0044 48.5244 PEDMOVE_SPRINT 1.0 0.5 scplayer //TASK_FOLLOW_PATH_NODES_TO_COORD_SHOOTING -1 2077.9998 2427.0044 48.5244 PEDMOVE_SPRINT -2 scplayer TASK_ENTER_CAR_AS_DRIVER -1 parked_car 20000 CLOSE_SEQUENCE_TASK run_to_car_from_helipad ++ mission_flag ENDIF ENDIF ENDIF IF printed_this_yet = 0 if enemy_flag[geez] = 2 PRINT_NOW VCR1__7 8000 1//The target is escaping in a helicopter. SWITCH_CAR_GENERATOR gen_car_flying[7] 0 mission_timer = game_timer + 8000 ++ printed_this_yet ENDIF ENDIF IF printed_this_yet = 1 if created_pickup_flag < 1 if mission_timer < game_timer IF NOT IS_CAR_DEAD heli2 IF NOT IS_CHAR_IN_ANY_HELI scplayer PRINT_NOW VCR1__9 6000 1//Follow him using the other helicopter. ADD_BLIP_FOR_CAR heli2 mission_blip2 SET_BLIP_AS_FRIENDLY mission_blip2 TRUE CHANGE_BLIP_DISPLAY mission_blip MARKER_ONLY ENDIF ENDIF mission_timer = game_timer + 6000 ++ printed_this_yet ENDIF endif ENDIF IF printed_this_yet = 2 if mission_timer < game_timer IF IS_CHAR_IN_ANY_HELI scplayer PRINT_NOW VCR1_10 5000 1//Don't let him get away! if not is_car_dead heli1 SET_CAR_PROOFS heli1 false false false false false endif if not is_car_dead heli2 SET_CAR_PROOFS heli2 false false false false false endif CHANGE_BLIP_DISPLAY mission_blip BOTH REMOVE_BLIP mission_blip2 ++ printed_this_yet CHECKPOINT_SAVE 99 ENDIF if is_char_dead enemy[geez] remove_blip mission_blip2 ++ printed_this_yet endif ENDIF ENDIF IF mission_flag > 0 a = 0 WHILE a < 10 IF a = geez IF NOT IS_CHAR_DEAD enemy[a] IF enemy_flag[geez] = 0 IF kill_player_flag > 0 PERFORM_SEQUENCE_TASK enemy[geez] run_to_heli_from_campfire SET_AREA51_SAM_SITE off ++ enemy_flag[geez] ENDIF ENDIF IF NOT IS_CAR_DEAD heli1 IF enemy_flag[geez] = 1 IF IS_CHAR_IN_CAR enemy[geez] heli1 //FREEZE_CAR_POSITION heli1 FALSE SET_CAR_HEALTH heli1 1750 SET_CAR_PROOFS heli1 FALSE FALSE FALSE FALSE FALSE //START_PLAYBACK_RECORDED_CAR heli1 114 ++ enemy_flag[geez] ENDIF ENDIF IF enemy_flag[geez] = 2 //MAKE HELI GO FAST IF THE PLAYER IS CLOSE GET_CAR_COORDINATES heli1 x y z GET_CHAR_COORDINATES scplayer x2 y2 z2 GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 distance LVAR_FLOAT heli_speed heli_speed = 7000.0 / distance//INCREASE NUMBER TO MAKE CAR GO FASTER heli_speed /= 100.0 IF heli_speed > 2.0 heli_speed = 2.0 ENDIF IF heli_speed < 0.30 heli_speed = 0.30 ENDIF SET_PLAYBACK_SPEED heli1 heli_speed IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR heli1 //FREEZE_CAR_POSITION parked_car2 FALSE IF NOT IS_CAR_DEAD parked_car2 LOCK_CAR_DOORS parked_car2 CARLOCK_UNLOCKED ENDIF PERFORM_SEQUENCE_TASK enemy[geez] run_to_car_from_helipad PRINT_NOW VCR1__8 5000 1//He's abandoned the helicopter. remove_blip mission_blip2 CHANGE_BLIP_DISPLAY mission_blip BOTH SWITCH_ROADS_OFF 2475.4282 2345.0068 2.7255 2517.4163 2398.8738 12.369 ++ enemy_flag[geez] ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD parked_car IF enemy_flag[geez] = 3 IF IS_CHAR_IN_CAR enemy[geez] parked_car SET_CAR_HEALTH parked_car 1750 SET_CAR_PROOFS parked_car FALSE FALSE FALSE FALSE FALSE //FREEZE_CAR_POSITION parked_car FALSE MARK_CAR_AS_NO_LONGER_NEEDED heli1 MARK_CAR_AS_NO_LONGER_NEEDED heli2 MARK_CAR_AS_NO_LONGER_NEEDED jeep1 MARK_CAR_AS_NO_LONGER_NEEDED jeep2 MARK_CAR_AS_NO_LONGER_NEEDED dirtbike1 MARK_CAR_AS_NO_LONGER_NEEDED dirtbike2 r = 0 WHILE r < 10 IF NOT r = geez MARK_CHAR_AS_NO_LONGER_NEEDED enemy[r] ENDIF ++ r ENDWHILE //START_PLAYBACK_RECORDED_CAR parked_car 109 ++ enemy_flag[geez] ENDIF ENDIF IF enemy_flag[geez] = 4 IF IS_PLAYBACK_GOING_ON_FOR_CAR parked_car //MAKE CAR GO FAST IF THE PLAYER IS CLOSE GET_CAR_COORDINATES parked_car x y z GET_CHAR_COORDINATES scplayer x2 y2 z2 GET_DISTANCE_BETWEEN_COORDS_3D x y z x2 y2 z2 distance heli_speed = 5000.0 / distance//INCREASE NUMBER TO MAKE CAR GO FASTER heli_speed /= 100.0 IF heli_speed > 1.1 heli_speed = 1.1 ENDIF IF heli_speed < 0.60 heli_speed = 0.60 ENDIF SET_PLAYBACK_SPEED parked_car heli_speed ELSE TASK_CAR_DRIVE_TO_COORD enemy[geez] -1 2538.0671 2389.8188 3.2200 100.0 MODE_NORMAL TRUE DRIVINGMODE_AVOIDCARS SET_CAR_STRAIGHT_LINE_DISTANCE parked_car 1 ++ enemy_flag[geez] ENDIF ENDIF ENDIF IF enemy_flag[geez] = 5 IF IS_CHAR_IN_ANY_CAR enemy[geez] LVAR_INT current_car STORE_CAR_CHAR_IS_IN_NO_SAVE enemy[geez] current_car SET_CAR_DRIVING_STYLE current_car 2 SET_CAR_STRAIGHT_LINE_DISTANCE current_car 1 //SLOW CAR IF FAR FROM PLAYER GET_CAR_COORDINATES current_car x y z GET_CHAR_COORDINATES scplayer x2 y2 z2 GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 distance //speed = distance + 3.0 //< THIS WILL SLOW THE CAR DOWN IF IT GETS CLOSER (FOR CONVOYS OR CAR GOING TOWARDS) speed = 3000.0 / distance //< THIS WILL SPEED THE CAR UP IF IT GETS CLOSER (INCREASE NUMBER TO MAKE CAR GO FASTER) if locate_char_in_car_3d enemy[geez] 2506.6499 2355.8572 10.8203 29.9399 15.5700 2.0 0 speed = 20.0 endif IF speed > 100.0 speed = 100.0 ENDIF IF speed < 15.0 speed = 15.0 ENDIF SET_CAR_CRUISE_SPEED current_car speed //ON FIRE CHECKS GET_CAR_HEALTH current_car car_health IF car_health < 251 SET_CAR_TEMP_ACTION current_car TEMPACT_HANDBRAKETURNLEFT 5000 GET_CHAR_COORDINATES enemy[geez] x y z TASK_FLEE_POINT enemy[geez] x y z 15.0 1500 ++ enemy_flag[geez] ENDIF //UPSIDEDOWN CHECKS IF IS_CAR_UPSIDEDOWN current_car AND IS_CAR_STOPPED current_car IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer current_car 90.0 90.0 0 SET_UPSIDEDOWN_CAR_NOT_DAMAGED current_car FALSE GET_CHAR_COORDINATES enemy[geez] x y z TASK_FLEE_POINT enemy[geez] x y z 15.0 1500 ++ enemy_flag[geez] ELSE IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY x y z 4.0 4.0 4.0 IF NOT IS_CAR_ON_SCREEN current_car GET_CAR_COORDINATES current_car x y z GET_CLOSEST_CAR_NODE_WITH_HEADING x y z x y z heading IF NOT IS_POINT_ON_SCREEN x y z 4.0 SET_CAR_COORDINATES current_car x y z SET_CAR_HEADING current_car heading ENDIF ENDIF ENDIF ENDIF ENDIF //STUCK CHECKS LVAR_FLOAT stucky_x stucky_y stucky_z LVAR_INT stucky_timer IF LOCATE_CAR_3D current_car stucky_x stucky_y stucky_z 4.0 4.0 4.0 0 IF stucky_timer < game_timer IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer current_car 90.0 90.0 0 SET_UPSIDEDOWN_CAR_NOT_DAMAGED current_car FALSE GET_CHAR_COORDINATES enemy[geez] x y z TASK_FLEE_POINT enemy[geez] x y z 15.0 500 ++ enemy_flag[geez] ELSE IF NOT IS_CAR_ON_SCREEN current_car GET_CAR_COORDINATES current_car x y z GET_CLOSEST_CAR_NODE_WITH_HEADING x y z x y z heading IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY x y z 4.0 4.0 4.0 IF NOT IS_POINT_ON_SCREEN x y z 4.0 SET_CAR_COORDINATES current_car x y z SET_CAR_HEADING current_car heading ENDIF ENDIF ENDIF ENDIF ENDIF ELSE GET_CAR_COORDINATES current_car stucky_x stucky_y stucky_z stucky_timer = game_timer + 5000 ENDIF IF LOCATE_CHAR_IN_CAR_3D enemy[geez] 2538.0671 2389.8188 3.2200 5.0 5.0 2.0 0 enemy_flag[geez] = 7 ENDIF ELSE ++ enemy_flag[geez] ENDIF ENDIF IF enemy_flag[geez] = 6 GET_SCRIPT_TASK_STATUS enemy[geez] TASK_FLEE_POINT task_status LVAR_INT task_status2 GET_SCRIPT_TASK_STATUS enemy[geez] TASK_CAR_DRIVE_TO_COORD task_status2 IF task_status = FINISHED_TASK OR IS_CHAR_IN_ANY_CAR enemy[geez] IF task_status2 = FINISHED_TASK TASK_CAR_DRIVE_TO_COORD enemy[geez] -1 2538.0671 2389.8188 3.2200 100.0 MODE_NORMAL TRUE DRIVINGMODE_AVOIDCARS -- enemy_flag[geez] ENDIF ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR enemy[geez] IF enemy_in_car = 0 enemy_in_car = 1 ENDIF ELSE IF enemy_in_car = 1 enemy_in_car = 0 ENDIF ENDIF if enemy_flag[geez] = 7 get_script_task_status enemy[geez] task_kill_char_on_foot task_status if task_status = finished_task task_kill_char_on_foot enemy[geez] scplayer endif endif ELSE IF enemy_flag[geez] = 2 IF NOT IS_CAR_DEAD heli1 IF IS_PLAYBACK_GOING_ON_FOR_CAR heli1 STOP_PLAYBACK_RECORDED_CAR heli1 ENDIF MAKE_HELI_COME_CRASHING_DOWN heli1 enemy_flag[geez] = 90 ENDIF ENDIF IF DOES_CHAR_EXIST enemy[geez] IF NOT IS_CHAR_IN_WATER enemy[geez] IF created_pickup_flag = 0 REMOVE_BLIP mission_blip LVAR_FLOAT the_stuff_x the_stuff_y the_stuff_z GET_DEAD_CHAR_PICKUP_COORDS enemy[geez] the_stuff_x the_stuff_y the_stuff_z LVAR_INT the_stuff CREATE_PICKUP BRIEFCASE PICKUP_ONCE the_stuff_x the_stuff_y the_stuff_z the_stuff ADD_BLIP_FOR_PICKUP the_stuff mission_blip PRINT_NOW VCR1__3 5000 1//He is dead and has dropped the stuff, get to it before anyone else. enemy_in_car = 2 created_pickup_flag = 1 ENDIF ELSE PRINT_NOW VCR1__4 5000 1//"~r~The stuff is at the bottom of the sea!" GOTO mission_vcr1_failed ENDIF ELSE PRINT_NOW VCR1__5 5000 1//"You destroyed the stuff in the explosion!" GOTO mission_vcr1_failed ENDIF IF kill_player_flag = 0 kill_player_flag = 1 ENDIF ENDIF ELSE //THIS IS THE BIT FOR ALL OTHER PEDS IF NOT IS_CHAR_DEAD enemy[a] IF enemy_flag[geez] < 3 IF enemy_flag[a] = 0 IF player_in_area = 1 GET_SCRIPT_TASK_STATUS enemy[a] TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT enemy[a] scplayer ENDIF ENDIF IF enemy_flag[a] < 2 IF created_pickup_flag = 1 IF LOCATE_CHAR_ON_FOOT_2D enemy[a] the_stuff_x the_stuff_y 65.0 65.0 0 GIVE_WEAPON_TO_CHAR enemy[a] WEAPONTYPE_MICRO_UZI 9999 SET_CURRENT_CHAR_WEAPON enemy[a] WEAPONTYPE_MICRO_UZI TASK_GO_TO_COORD_WHILE_SHOOTING enemy[a] the_stuff_x the_stuff_y the_stuff_z PEDMOVE_RUN 1.0 0.5 scplayer ++ enemy_flag[a] ENDIF ENDIF ENDIF ENDIF IF enemy_flag[a] = 1 IF created_pickup_flag = 1 GET_SCRIPT_TASK_STATUS enemy[a] TASK_GO_TO_COORD_WHILE_SHOOTING task_status IF task_status = FINISHED_TASK IF LOCATE_CHAR_ON_FOOT_2D enemy[a] the_stuff_x the_stuff_y 2.0 2.0 0 MARK_CHAR_AS_NO_LONGER_NEEDED enemy[geez] enemy[geez] = -1 geez = a REMOVE_BLIP mission_blip REMOVE_PICKUP the_stuff ADD_BLIP_FOR_CHAR enemy[geez] mission_blip SET_CHAR_ONLY_DAMAGED_BY_PLAYER enemy[geez] TRUE IF NOT IS_PLAYER_TARGETTING_CHAR player1 enemy[geez] SET_CHAR_HEALTH enemy[geez] 200 ENDIF enemy_flag[geez] = 0 PRINT_NOW VCR1__2 5000 1//You were too slow. One of the guards has grabbed the stuff. created_pickup_flag = 0 ENDIF ENDIF ELSE -- enemy_flag[a] ENDIF ENDIF ENDIF ELSE MARK_CHAR_AS_NO_LONGER_NEEDED enemy[a] IF kill_player_flag = 0 //SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 CLEAR_SKIP kill_player_flag = 1 ENDIF ENDIF ENDIF IF kill_player_flag = 0 IF IS_CHAR_RESPONDING_TO_EVENT enemy[a] EVENT_ACQUAINTANCE_PED_HATE or IS_CHAR_RESPONDING_TO_EVENT enemy[a] EVENT_POTENTIAL_GET_RUN_OVER or IS_CHAR_RESPONDING_TO_EVENT enemy[a] EVENT_SHOT_FIRED or IS_CHAR_RESPONDING_TO_EVENT enemy[a] EVENT_DEAD_PED or IS_CHAR_RESPONDING_TO_EVENT enemy[a] EVENT_SHOT_FIRED_WHIZZED_BY or IS_CHAR_RESPONDING_TO_EVENT enemy[a] EVENT_VEHICLE_THREAT //IF HAS_CHAR_SPOTTED_CHAR enemy[a] scplayer CLEAR_SKIP kill_player_flag = 1 ENDIF ENDIF ++ a ENDWHILE ENDIF if player_in_area = 0 if locate_char_any_means_3d scplayer -1308.9282 2527.4656 92.8160 26.8500 38.6399 8.9000 0 CLEAR_SKIP ++ player_in_area endif endif IF kill_player_flag = 1 PRINT_NOW VCR1_11 5000 1//They have spotted you! The target will try to escape, don't let him get away. CLEAR_SKIP ++ kill_player_flag CHECKPOINT_SAVE 99 ENDIF IF mission_flag = 1 IF enemy_flag[geez] > 2 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2511.3638 2388.9138 6.2421 38.6 26.4 3.4 0//UNDERGROUND CARPARK FULL LOCATE LVAR_INT finalcar1 finalcar2 finalcar3 CREATE_CAR BUFFALO 2522.2114 2383.6292 4.0162 finalcar1 SET_CAR_HEADING finalcar1 339.2576 CREATE_CAR BUFFALO 2518.5107 2393.8206 4.0104 finalcar2 SET_CAR_HEADING finalcar2 168.2849 CREATE_CAR BUFFALO 2510.3362 2380.5833 4.0139 finalcar3 SET_CAR_HEADING finalcar3 110.7153 LVAR_FLOAT checkpoints_x[10] checkpoints_y[10] checkpoints_x[0] = 2524.2214 checkpoints_y[0] = 2385.0073 checkpoints_x[1] = 2520.0532 checkpoints_y[1] = 2392.2817 checkpoints_x[2] = 2513.9375 checkpoints_y[2] = 2381.3342 checkpoints_x[3] = 2513.9097 checkpoints_y[3] = 2385.4709 checkpoints_x[4] = 2511.9897 checkpoints_y[4] = 2392.3469 checkpoints_x[5] = 2519.3079 checkpoints_y[5] = 2399.5352 checkpoints_x[6] = 2530.1687 checkpoints_y[6] = 2388.5193 checkpoints_x[7] = 2504.1436 checkpoints_y[7] = 2382.4683 checkpoints_x[8] = 2504.8323 checkpoints_y[8] = 2397.6157 checkpoints_x[9] = 2506.8323 checkpoints_y[9] = 2397.6157 c = 0 WHILE c < 10 IF NOT c = geez CREATE_CHAR PEDTYPE_MISSION1 FBI checkpoints_x[c] checkpoints_y[c] 3.2262 enemy[c] SET_CHAR_HEADING enemy[c] 91.4967 GIVE_WEAPON_TO_CHAR enemy[c] WEAPONTYPE_micro_uzi 9999 //SET_CHAR_STAY_IN_SAME_PLACE enemy[c] TRUE //TASK_KILL_CHAR_ON_FOOT enemy[c] scplayer SET_CHAR_KEEP_TASK enemy[c] true //SET_INFORM_RESPECTED_FRIENDS enemy[c] 50.0 8 //SET_CHAR_RELATIONSHIP enemy[c] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 ENDIF ++ c ENDWHILE mission_timer = game_timer + 3000 ++ mission_flag ENDIF ENDIF ENDIF if mission_flag = 2 if mission_timer < game_timer c = 0 WHILE c < 10 if not is_char_dead enemy[c] SET_INFORM_RESPECTED_FRIENDS enemy[c] 50.0 8 SET_CHAR_RELATIONSHIP enemy[c] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 ENDIF ++ c ENDWHILE mission_timer = game_timer + 3000 ++ mission_flag endif endif if mission_flag = 3 if mission_timer < game_timer c = 0 WHILE c < 10 if not is_char_dead enemy[c] TASK_KILL_CHAR_ON_FOOT enemy[c] scplayer ENDIF ++ c ENDWHILE ++ mission_flag endif endif IF created_pickup_flag = 1 IF HAS_PICKUP_BEEN_COLLECTED the_stuff REMOVE_BLIP mission_blip //ADD_BLIP_FOR_COORD 2036.4814 2729.7861 9.8281 mission_blip PRINT_NOW VCR1__6 5000 1//Congratulations, you have the stuff. GOTO mission_vcr1_passed ENDIF ENDIF //IF created_pickup_flag = 2 // IF LOCATE_CHAR_ON_FOOT_3D scplayer 2036.4814 2729.7861 9.8281 2.0 2.0 2.0 1 // GOTO mission_vcr1_passed // ENDIF //ENDIF GOTO mission_vcr1_loop // ************************************ MISSION FAILED ************************************* mission_vcr1_failed: PRINT_BIG M_FAIL 5000 1 IF NOT IS_CHAR_DEAD enemy[geez] IF NOT IS_CAR_DEAD heli1 IF IS_CHAR_IN_CAR enemy[geez] heli1 HELI_GOTO_COORDS heli1 0.0 0.0 0.0 20.0 40.0 ENDIF ENDIF ENDIF RETURN // ************************************ MISSION PASSED ************************************* mission_vcr1_passed: flag_vcrash_mission_counter ++ PRINT_BIG M_PASSD 5000 1 //"Mission Passed!" ADD_SCORE player1 0 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 REGISTER_MISSION_PASSED VCRASH1 PLAYER_MADE_PROGRESS 1 //START_NEW_SCRIPT vcr1_mission_loop REMOVE_BLIP vcrash_contact_blip RETURN // *********************************** MISSION CLEANUP ************************************* mission_vcr1_cleanup: REMOVE_BLIP mission_blip REMOVE_BLIP mission_blip2 SET_AREA51_SAM_SITE on remove_pickup the_stuff if not is_car_dead heli2 SET_CAR_PROOFS heli2 FALSE FALSE FALSE FALSE FALSE endif SWITCH_ROADS_ON 2475.4282 2345.0068 2.7255 2517.4163 2398.8738 12.369 IF d5_pilot_licence_obtained = 1 SWITCH_CAR_GENERATOR gen_car_flying[7] 101 ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED MAVERICK MARK_MODEL_AS_NO_LONGER_NEEDED MESA MARK_MODEL_AS_NO_LONGER_NEEDED FBIRANCH MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ MARK_MODEL_AS_NO_LONGER_NEEDED BUFFALO MARK_MODEL_AS_NO_LONGER_NEEDED AK47 MARK_MODEL_AS_NO_LONGER_NEEDED FBI MARK_MODEL_AS_NO_LONGER_NEEDED WMYBU MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI if is_player_playing player1 CLEAR_CHAR_RELATIONSHIP scplayer ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 endif GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // **************************************************************************************** // *** *** // *** Date: 14/06/2004 Time: 10:44:44 Author: Chris Rothwell *** // *** *** // *** Mission: Vegas Crash Mission - Kill Pulaski *** // *** *** // *** Brief: Pulaski escapes in a car, the player has to hunt him down and kill him. *** // *** If the player takes too long, then Pulaski will escape. *** // *** *** // **************************************************************************************** GOSUB mission_vcr2_start IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_vcr2_failed ENDIF GOSUB mission_vcr2_cleanup MISSION_END // ************************************ MISSION START ************************************* { mission_vcr2_start: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN SCRIPT_NAME vcrash2 WAIT 0 LVAR_INT mission_blip mission_timer temp_int sequence_task LVAR_FLOAT h x2 y2 z2 x3 y3 z3 temp_float speed lvar_int mission_flag //view_integer_variable mission_flag mission_flag LOAD_MISSION_TEXT VCR2 MAKE_PLAYER_GANG_DISAPPEAR LOAD_CUTSCENE CRASV2A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT clear_area -359.5421 2225.5249 42.4562 30.9000 0 START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE if not WAS_CUTSCENE_SKIPPED LOAD_CUTSCENE CRASV2B WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT clear_area -359.5421 2225.5249 42.4562 30.9000 0 START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE endif load_special_character 1 pulaski request_model bandito request_model buffalo request_model desert_eagle load_all_models_now while not has_model_loaded bandito or not has_model_loaded buffalo or not has_model_loaded desert_eagle or not has_special_character_loaded 1 wait 0 endwhile lvar_text_label $pulaski_chat[20] $pulaski_chat[0] = VCR2_AA //CARL: Hey Eddie! You know Tenpenny gonna rub you out too! $pulaski_chat[1] = VCR2_AB //PULASKI: Carl, you've got it all wrong, pal. $pulaski_chat[2] = VCR2_AC //PULASKI: Tenpenny was the one saving your ass. $pulaski_chat[3] = VCR2_AD //PULASKI: Everytime I wanted to get rid of you, he'd find some excuse to keep you alive. $pulaski_chat[4] = VCR2_AE //PULASKI: Well, now it's up to me, and I ain't such a fucking soft touch! $pulaski_chat[5] = VCR2_BA //PULASKI: So, how's your sister? $pulaski_chat[6] = VCR2_BB //PULASKI: I always had a thing for her. $pulaski_chat[7] = VCR2_BC //PULASKI: Tenpenny and I got some great shots of her and her varrio boyfriend //$pulaski_chat[8] = VCR2_BD //PULASKI: going at it like two horny chihuahuas. $pulaski_chat[8] = VCR2_BE //PULASKI: Man, does she put out like a pro! $pulaski_chat[9] = VCR2_BF //CARL: Screw you Pulaski! $pulaski_chat[10] = VCR2_BG //CARL: I know what you're trying to do, and you ain't gonna crawl inside my head. $pulaski_chat[11] = VCR2_BH //PULASKI: I ain't kidding! $pulaski_chat[12] = VCR2_BJ //PULASKI: The best stake-out I ever done. $pulaski_chat[13] = VCR2_CA //PULASKI: Carl, you should have seen your moms before she was buried. $pulaski_chat[14] = VCR2_CB //PULASKI: She was a real mess - most her face was hanging off! $pulaski_chat[15] = VCR2_CC //CARL: Don't fucking talk about my Moms! $pulaski_chat[16] = VCR2_CD //PULASKI: The boys fooled around with her at the scene $pulaski_chat[17] = VCR2_CE //PULASKI: You know, touching her, joking around and shit. $pulaski_chat[18] = VCR2_CF //CARL: Fuck you, Pulaski, FUCK YOU! $pulaski_chat[19] = VCR2_CG //PULASKI: HEH heh heh! lvar_int pulaski_chat_sound[21] pulaski_chat_sound[0] = SOUND_VCR2_AA //CARL: Hey Eddie! You know Tenpenny gonna rub you out too! pulaski_chat_sound[1] = SOUND_VCR2_AB //PULASKI: Carl, you've got it all wrong, pal. pulaski_chat_sound[2] = SOUND_VCR2_AC //PULASKI: Tenpenny was the one saving your ass. pulaski_chat_sound[3] = SOUND_VCR2_AD //PULASKI: Everytime I wanted to get rid of you, he'd find some excuse to keep you alive. pulaski_chat_sound[4] = SOUND_VCR2_AE //PULASKI: Well, now it's up to me, and I ain't such a fucking soft touch! pulaski_chat_sound[5] = SOUND_VCR2_BA //PULASKI: So, how's your sister? pulaski_chat_sound[6] = SOUND_VCR2_BB //PULASKI: I always had a thing for her. pulaski_chat_sound[7] = SOUND_VCR2_BC //PULASKI: Tenpenny and I got some great shots of her and her varrio boyfriend //pulaski_chat_sound[8] = SOUND_VCR2_BD //PULASKI: going at it like two horny chihuahuas. pulaski_chat_sound[8] = SOUND_VCR2_BE //PULASKI: Man, does she put out like a pro! pulaski_chat_sound[9] = SOUND_VCR2_BF //CARL: Screw you Pulaski! pulaski_chat_sound[10] = SOUND_VCR2_BG //CARL: I know what you're trying to do, and you ain't gonna crawl inside my head. pulaski_chat_sound[11] = SOUND_VCR2_BH //PULASKI: I ain't kidding! pulaski_chat_sound[12] = SOUND_VCR2_BJ //PULASKI: The best stake-out I ever done. pulaski_chat_sound[13] = SOUND_VCR2_CA //PULASKI: Carl, you should have seen your moms before she was buried. pulaski_chat_sound[14] = SOUND_VCR2_CB //PULASKI: She was a real mess - most her face was hanging off! pulaski_chat_sound[15] = SOUND_VCR2_CC //CARL: Don't fucking talk about my Moms! pulaski_chat_sound[16] = SOUND_VCR2_CD //PULASKI: The boys fooled around with her at the scene pulaski_chat_sound[17] = SOUND_VCR2_CE //PULASKI: You know, touching her, joking around and shit. pulaski_chat_sound[18] = SOUND_VCR2_CF //CARL: Fuck you, Pulaski, FUCK YOU! pulaski_chat_sound[19] = SOUND_VCR2_CG //PULASKI: HEH heh heh! lvar_int convo_counter audio_slot convo_timer convo_counter = 0 audio_slot = 1 get_game_timer game_timer convo_timer = game_timer + 6000 lvar_int pulaski_car CUSTOM_PLATE_FOR_NEXT_CAR buffalo PULASKI create_car buffalo -371.0292 2209.8196 41.4921 pulaski_car//-365.6242 2215.0977 41.4989 pulaski_car set_car_heading pulaski_car 159.2268//78.3353 change_car_colour pulaski_car CARCOLOUR_LIGHTBLUEGREY CARCOLOUR_BLACK SET_PETROL_TANK_WEAKPOINT pulaski_car FALSE set_car_only_damaged_by_player pulaski_car true set_car_can_go_against_traffic pulaski_car TRUE set_car_proofs pulaski_car TRUE TRUE TRUE TRUE TRUE set_car_health pulaski_car 2250 lvar_int pulaski create_char pedtype_mission1 special01 -335.4141 2218.9417 41.4921 pulaski SET_CHAR_RELATIONSHIP scplayer ACQUAINTANCE_TYPE_PED_HATE pedtype_mission1 set_char_heading pulaski 104.1080 set_char_only_damaged_by_player pulaski true set_char_max_health pulaski 500 set_char_health pulaski 500 set_char_suffers_critical_hits pulaski false SET_CHAR_USES_UPPERBODY_DAMAGE_ANIMS_ONLY pulaski TRUE //SET_CHAR_SHOOT_RATE pulaski 65 set_char_accuracy pulaski 80 SET_CHAR_PROOFS pulaski true True True false false open_sequence_task sequence_task task_go_straight_to_coord -1 -346.4254 2216.4275 41.4921 pedmove_run -2 task_enter_car_as_driver -1 pulaski_car -2 task_car_drive_to_coord -1 pulaski_car -472.7780 1958.1945 83.5515 40.0 0 true 2 close_sequence_task sequence_task perform_sequence_task pulaski sequence_task clear_sequence_task sequence_task set_player_control player1 off hide_char_weapon_for_scripted_cutscene scplayer true set_everyone_ignore_player player1 true wait 0 switch_widescreen on set_all_cars_can_be_damaged false set_fixed_camera_position -341.3325 2213.1096 42.8370 0.0 0.0 0.0 point_camera_at_point -340.7180 2213.8984 42.8258 jump_cut //load_scene -336.5103 2216.6953 42.6843 LOAD_SCENE_IN_DIRECTION -341.3325 2213.1096 42.8370 327.4725 clear_char_tasks_immediately scplayer clear_area -334.1724 2214.6199 40.4911 30.0 0 load_scene -334.1724 2214.6199 40.4911 set_char_coordinates scplayer -334.1724 2214.6199 40.4911 set_char_heading scplayer 232.0820 set_camera_behind_player lvar_int players_bandito create_car bandito -342.2552 2221.3904 41.4911 players_bandito set_car_heading players_bandito 168.7771 do_fade 500 fade_in get_game_timer game_timer mission_timer = game_timer + 1500 mission_flag = 0 lvar_int done_this_bit done_this_bit = 0 release_weather // ************************************* MISSION LOOP ************************************* mission_vcr2_loop: WAIT 0 get_game_timer game_timer if is_ps2_keyboard_key_pressed ps2_key_s goto mission_vcr2_passed endif if is_char_dead pulaski if mission_flag < 9 mission_timer = game_timer + 2000 mission_flag = 9 endif endif if mission_flag = 0 if mission_timer < game_timer task_go_straight_to_coord scplayer -337.9653 2218.5942 41.4911 pedmove_run 2000 // set_fixed_camera_position -331.9285 2217.6946 43.3619 0.0 0.0 0.0 // point_camera_at_point -332.8746 2217.9761 43.2020 jump_cut // open_sequence_task sequence_task // task_achieve_heading -1 100.0 // task_look_at_char -1 pulaski 1000 // task_shake_fist -1 // close_sequence_task sequence_task // perform_sequence_task scplayer sequence_task // clear_sequence_task sequence_task mission_timer = game_timer + 1500 ++ mission_flag endif endif if mission_flag = 1 if mission_timer < game_timer set_char_coordinates scplayer -337.9653 2218.5942 41.4911 set_char_heading scplayer 90.0 set_char_coordinates pulaski -359.3949 2213.4043 41.4911 set_char_heading pulaski 90.0000 set_player_control player1 on hide_char_weapon_for_scripted_cutscene scplayer false set_everyone_ignore_player player1 false switch_widescreen off MAKE_PLAYER_GANG_REAPPEAR set_all_cars_can_be_damaged true set_camera_behind_player restore_camera_jumpcut add_blip_for_char pulaski mission_blip print_now VCR2__1 15000 1//Kill pulaski! mission_timer = game_timer + 26000 ++ mission_flag CHECKPOINT_SAVE 99 endif endif if mission_flag = 2 if mission_timer < game_timer TASK_CAR_DRIVE_WANDER pulaski -1 40.0 2 give_weapon_to_char pulaski weapontype_desert_eagle 9999 SET_CHAR_RELATIONSHIP pulaski ACQUAINTANCE_TYPE_PED_HATE pedtype_player1 SET_CHAR_PROOFS pulaski false True True false false if done_this_bit = 0 if not is_car_dead pulaski_car set_car_proofs pulaski_car FALSE FALSE false FALSE FALSE ADD_STUCK_CAR_CHECK_WITH_WARP pulaski_car 4.0 4000 true true false -1 endif done_this_bit = 1 endif mission_timer = game_timer + 240000 ++ mission_flag endif endif if mission_flag = 3 if locate_char_any_means_2d pulaski 184.0797 1715.9486 40.6000 1108.6677 0 //getting close to vegas get_script_task_status pulaski TASK_CAR_DRIVE_TO_COORD task_status if task_status = finished_task task_car_drive_to_coord pulaski -1 -2466.3091 2244.3284 3.8078 40.0 0 true 2 mission_timer = game_timer + 10000 mission_flag = 2 endif endif if locate_char_any_means_2d pulaski -2747.4822 2334.3013 36.3400 5.8600 0 //about to enter san fran get_script_task_status pulaski TASK_CAR_DRIVE_TO_COORD task_status if task_status = finished_task task_car_drive_to_coord pulaski -1 -1446.2249 2670.9915 54.9682 40.0 0 true 2 mission_timer = game_timer + 10000 mission_flag = 2 endif endif if locate_char_any_means_char_2d scplayer pulaski 200.0 200.0 0 lvar_int getaway_timer getaway_timer = game_timer + 8000 if not does_blip_exist mission_blip TASK_CAR_DRIVE_WANDER pulaski -1 50.0 2 add_blip_for_char pulaski mission_blip endif else if does_blip_exist mission_blip TASK_CAR_DRIVE_WANDER pulaski -1 28.0 2 print_now VCR2__2 5000 1 //pulaski is getting away! remove_blip mission_blip endif if getaway_timer < game_timer print_now VCR2__3 5000 1 //pulaski got away! goto mission_vcr2_failed endif endif if convo_counter < 20 if locate_char_any_means_char_2d scplayer pulaski 30.0 30.0 0 if convo_timer < game_timer if audio_line_is_active = 0 $audio_string = $pulaski_chat[convo_counter] audio_sound_file = pulaski_chat_sound[convo_counter] START_NEW_SCRIPT audio_line -1 0 1 audio_slot convo_counter if audio_slot = 1 audio_slot = 2 else audio_slot = 1 endif convo_timer = game_timer + 500 ++ convo_counter if convo_counter < 20 CLEAR_MISSION_AUDIO audio_slot LOAD_MISSION_AUDIO audio_slot pulaski_chat_sound[convo_counter] endif endif endif endif endif if not is_char_in_any_car pulaski if locate_char_any_means_char_2d scplayer pulaski 20.0 20.0 0 get_script_task_status pulaski task_kill_char_on_foot_timed task_status if task_status = finished_task task_kill_char_on_foot_timed pulaski scplayer 4000 endif endif endif endif if mission_flag = 9 if mission_timer < game_timer if is_char_in_water pulaski goto mission_vcr2_passed else do_fade 500 fade_out ++ mission_flag endif ////Pulaski is dying, Player stands over him - SCRIPTED CUT //[VCR2_DA] //CARL: Not feeling so fucking full of yourself now, huh? //[VCR2_DB] //PULASKI: Yeah, well (cough) thems the breaks... fuck... //[VCR2_DC] //CARL: Any last requests? //[VCR2_DD] //PULASKI: Yeah, can I (cough) can I rape your sister? //[VCR2_DE] //CARL: You a asshole to the end. Punk motherfucker! //goto mission_vcr2_passed endif endif if mission_flag = 10 request_animation swat if not get_fading_status clear_char_tasks_immediately scplayer delete_car pulaski_car GET_DEAD_CHAR_COORDINATES pulaski x y z delete_char pulaski get_closest_car_node x y z x y z //x = 0.0 //y = 0.0 //z = 2.1172 clear_area x y z 100.0 1 CUSTOM_PLATE_FOR_NEXT_CAR buffalo PULASKI create_car buffalo x y z pulaski_car change_car_colour pulaski_car CARCOLOUR_LIGHTBLUEGREY CARCOLOUR_BLACK set_car_density_multiplier 0.0 set_ped_density_multiplier 0.0 mission_timer = game_timer + 100 ++ mission_flag endif endif if mission_flag = 11 if mission_timer < game_timer if has_animation_loaded swat if is_car_dead pulaski_car do_fade 500 fade_in goto mission_vcr2_passed endif get_offset_from_car_in_world_coords pulaski_car 1.6 -1.0 0.0 x y z get_ground_z_for_3d_coord x y z z lvar_int dead_pulaski create_char pedtype_mission1 special01 x y z dead_pulaski get_car_heading pulaski_car heading heading += -90.0 set_char_heading dead_pulaski heading set_char_bleeding dead_pulaski true TASK_PLAY_ANIM_NON_INTERRUPTABLE dead_pulaski gnstwall_injurd SWAT 9999.0 TRUE FALSE FALSE FALSE -1 get_offset_from_car_in_world_coords pulaski_car 3.0 -1.0 0.0 x y z get_ground_z_for_3d_coord x y z z clear_char_tasks_immediately scplayer set_char_coordinates scplayer x y z get_car_heading pulaski_car heading heading += 90.0 set_char_heading scplayer heading get_offset_from_car_in_world_coords pulaski_car 3.3455 -1.6234 1.1443 x y z set_fixed_camera_position x y z 0.0 0.0 0.0 get_offset_from_car_in_world_coords pulaski_car 2.5461 -1.3539 0.6073 x y z point_camera_at_char dead_pulaski fixed jump_cut SET_PLAYER_CONTROL player1 OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE get_offset_from_car_in_world_coords pulaski_car 1.2837 -0.8452 -0.2859 x y z TASK_LOOK_AT_COORD scplayer x y z 20000 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_VCR2_DA do_fade 500 fade_in if not is_car_dead players_bandito get_car_coordinates pulaski_car x y z if locate_car_2d players_bandito x y 6.0 6.0 0 delete_car players_bandito endif else delete_car players_bandito endif mission_timer = game_timer + 400 ++ mission_flag endif endif endif if mission_flag = 12 if not get_fading_status if audio_line_is_active = 0 $audio_string = VCR2_DA audio_sound_file = SOUND_VCR2_DA START_NEW_SCRIPT audio_line scplayer 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_VCR2_DB if not is_car_dead pulaski_car get_offset_from_car_in_world_coords pulaski_car 1.2837 -0.8452 -0.2859 x y z TASK_LOOK_AT_COORD scplayer x y z 20000 endif mission_timer = game_timer + 500 ++ mission_flag endif endif endif if mission_flag = 13 if mission_timer < game_timer if audio_line_is_active = 0 $audio_string = VCR2_DB audio_sound_file = SOUND_VCR2_DB START_NEW_SCRIPT audio_line dead_pulaski 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_VCR2_DC if not is_car_dead pulaski_car get_offset_from_car_in_world_coords pulaski_car 1.2837 -0.8452 -0.2859 x y z TASK_LOOK_AT_COORD scplayer x y z 20000 endif mission_timer = game_timer + 500 ++ mission_flag endif endif endif if mission_flag = 14 if mission_timer < game_timer if audio_line_is_active = 0 $audio_string = VCR2_DC audio_sound_file = SOUND_VCR2_DC START_NEW_SCRIPT audio_line scplayer 0 1 1 1 CLEAR_MISSION_AUDIO 2 LOAD_MISSION_AUDIO 2 SOUND_VCR2_DD if not is_car_dead pulaski_car get_offset_from_car_in_world_coords pulaski_car 1.2837 -0.8452 -0.2859 x y z TASK_LOOK_AT_COORD scplayer x y z 20000 endif mission_timer = game_timer + 500 ++ mission_flag endif endif endif if mission_flag = 15 if mission_timer < game_timer if audio_line_is_active = 0 $audio_string = VCR2_DD audio_sound_file = SOUND_VCR2_DD START_NEW_SCRIPT audio_line dead_pulaski 0 1 2 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_VCR2_DE if not is_car_dead pulaski_car get_offset_from_car_in_world_coords pulaski_car 1.2837 -0.8452 -0.2859 x y z TASK_LOOK_AT_COORD scplayer x y z 20000 endif mission_timer = game_timer + 500 ++ mission_flag endif endif endif if mission_flag = 16 if mission_timer < game_timer if audio_line_is_active = 0 $audio_string = VCR2_DE audio_sound_file = SOUND_VCR2_DE START_NEW_SCRIPT audio_line scplayer 0 1 1 1 set_near_clip 0.1 if not is_car_dead pulaski_car get_offset_from_car_in_world_coords pulaski_car 1.2837 -0.8452 -0.2859 x y z //cut looking at player from pulaski's perspective TASK_LOOK_AT_COORD scplayer x y z 20000 set_fixed_camera_position x y z 0.0 0.0 0.0 get_offset_from_car_in_world_coords pulaski_car 2.1414 -0.9080 0.2244 x y z point_camera_at_point x y z jump_cut endif mission_timer = game_timer + 500 ++ mission_flag endif endif endif if mission_flag = 17 if mission_timer < game_timer if audio_line_is_active = 0 //SET_PLAYER_CONTROL player1 ON TASK_PLAY_ANIM scplayer FightA_G PED 4.0 FALSE FALSE FALSE FALSE -1 ++ mission_flag endif endif endif if mission_flag = 18 IF IS_CHAR_PLAYING_ANIM scplayer FightA_G lvar_float Retured_anim_time GET_CHAR_ANIM_CURRENT_TIME scplayer FightA_G Retured_anim_time if Retured_anim_time > 0.351 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_STAMP_PED SET_MUSIC_DOES_FADE FALSE DO_FADE 0 FADE_OUT if not is_char_dead dead_pulaski task_die dead_pulaski endif mission_timer = game_timer + 1000 ++ mission_flag endif ENDIF endif if mission_flag = 19 if mission_timer < game_timer DO_FADE 500 FADE_IN set_car_density_multiplier 1.0 set_ped_density_multiplier 1.0 SET_PLAYER_CONTROL player1 ON HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF //SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT goto mission_vcr2_passed endif endif GOTO mission_vcr2_loop // ************************************ MISSION FAILED ************************************ mission_vcr2_failed: PRINT_BIG M_FAIL 5000 1 RETURN // ************************************ MISSION PASSED ************************************ mission_vcr2_passed: PRINT_BIG M_PASSD 5000 1 //"Mission Passed!" ADD_SCORE player1 0 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 REGISTER_MISSION_PASSED VCRASH2 PLAYER_MADE_PROGRESS 1 REMOVE_BLIP vcrash_contact_blip SET_INT_STAT PASSED_VCRASH2 1 flag_vcrash_mission_counter ++ RETURN // ************************************ MISSION CLEANUP *********************************** mission_vcr2_cleanup: REMOVE_BLIP mission_blip GET_GAME_TIMER timer_mobile_start unload_special_character 1 mark_model_as_no_longer_needed bandito mark_model_as_no_longer_needed buffalo mark_model_as_no_longer_needed desert_eagle SET_MUSIC_DOES_FADE TRUE if is_player_playing player1 CLEAR_CHAR_RELATIONSHIP scplayer ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 endif remove_animation swat flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ************************************ Doc2 - Jumper ************************************** // ***************************************************************************************** // ************************************* Paul Davis **************************************** // ***************************************************************************************** SCRIPT_NAME DOC2 // Mission start stuff GOSUB mission_start_doc2 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_doc2_failed ENDIF GOSUB mission_cleanup_doc2 MISSION_END VAR_INT doc2_heal doc2_rnd d2_rnd { // Variables for mission LVAR_INT pickup_truck pickup_blip new_heal old_heal value_heal v LVAR_FLOAT truck_X truck_Y truck_Z LVAR_INT d2_ped[15] d2_flee[15] d2_ped_seq[15] LVAR_INT d2_seq LVAR_INT d2_in_truck_1 LVAR_INT hit_van LVAR_INT trig_jumper jump_point_blip betty_blip LVAR_INT doc2_bleed // Doc G LVAR_INT thedoc seq_doc seq_jump seq_sit d2_decision LVAR_INT pd_box1 pd_box2 pd_boxes LVAR_INT d2_falling d2_mission_passed LVAR_FLOAT jump_X jump_Y jump_Z d2_ply_heading LVAR_FLOAT pd_box_Z LVAR_INT d2_seq_cheer d2_seq_chant doc2_message_go_back LVAR_INT d2_stolen d2_driver d2_direction LVAR_INT d2_waiting_seq d2_in_truck d2_medic_A d2_medic_B d2_medic_C d2_medic_D LVAR_INT d2_ambu_A d2_ambu_B d2_conversation d2_truck_direction LVAR_INT d2_selected LVAR_TEXT_LABEL d2_print LVAR_INT d2_audio LVAR_INT d2_playing LVAR_INT d2_TIMERC LVAR_INT d2_already_played LVAR_INT d2_break_the_loop LVAR_INT d2_when_he_jumps LVAR_INT d2_playing_sfx d2_audio_sfx d2_seq_rnd LVAR_INT d2_empty VAR_INT d2_instance_health d2_anim_rnd // **************************************** Mission Start ********************************** mission_start_doc2: d2_TIMERC = 0 d2_instance_health = 40 d2_anim_rnd = 0 doc2_heal = 0 doc2_rnd = 0 d2_rnd = 0 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_WEAK d2_decision SET_FADING_COLOUR 0 0 0 REGISTER_MISSION_GIVEN flag_player_on_mission = 1 // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** LOAD_MISSION_TEXT DOC2 SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_CUTSCENE DOC_2 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE CLEAR_AREA 2159.8992 1443.0424 9.8203 40.0 TRUE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF SET_FADING_COLOUR 0 0 0 DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE REQUEST_MODEL vbmyelv REQUEST_MODEL VWFYPRO REQUEST_MODEL WMOTR1 REQUEST_MODEL WMOprea REQUEST_MODEL cellphone REQUEST_MODEL HECK1 REQUEST_MODEL HECK2 REQUEST_ANIMATION ON_LOOKERS LOAD_SPECIAL_CHARACTER 1 MADDOGG WHILE NOT HAS_MODEL_LOADED vbmyelv OR NOT HAS_MODEL_LOADED VWFYPRO OR NOT HAS_MODEL_LOADED WMOTR1 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED WMOprea OR NOT HAS_MODEL_LOADED cellphone OR NOT HAS_MODEL_LOADED HECK1 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED HECK2 OR NOT HAS_ANIMATION_LOADED ON_LOOKERS OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 WAIT 0 ENDWHILE SWITCH_ROADS_OFF 2090.9810 1388.5104 8.8203 2234.6863 1517.0773 10.8203 SWITCH_PED_ROADS_OFF 2090.9810 1388.5104 8.8203 2234.6863 1517.0773 10.8203 jump_X = 2163.6377 jump_Y = 1443.6627 jump_Z = 9.8203 // ****************************************END OF CUTSCENE********************************** SET_CAR_DENSITY_MULTIPLIER 0.0 CLEAR_AREA 2161.3396 1442.5043 9.8203 20.0 TRUE CLEAR_AREA 2107.1902 1409.1531 9.8203 10.0 TRUE CREATE_CHAR PEDTYPE_CIVMALE SPECIAL01 2162.6200 1451.4747 23.1719 thedoc SET_ANIM_GROUP_FOR_CHAR thedoc drunkman SET_CHAR_HEADING thedoc 180.0000 SET_CHAR_HEALTH thedoc 1 OPEN_SEQUENCE_TASK d2_ped_seq[0] TASK_GO_STRAIGHT_TO_COORD -1 2154.1924 1437.9476 9.8203 PEDMOVE_WALK 8000 TASK_TURN_CHAR_TO_FACE_CHAR -1 thedoc TASK_PLAY_ANIM -1 lkaround_in ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 lkaround_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 lkaround_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 lkaround_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 lkaround_out ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT d2_ped_seq[0] 1 CLOSE_SEQUENCE_TASK d2_ped_seq[0] OPEN_SEQUENCE_TASK d2_ped_seq[1] TASK_GO_STRAIGHT_TO_COORD -1 2164.5959 1435.1688 9.8203 PEDMOVE_WALK 8000 TASK_TURN_CHAR_TO_FACE_CHAR -1 thedoc TASK_PLAY_ANIM -1 Pointup_in ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Pointup_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Pointup_shout ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Pointup_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Pointup_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT d2_ped_seq[1] 1 CLOSE_SEQUENCE_TASK d2_ped_seq[1] OPEN_SEQUENCE_TASK d2_ped_seq[2] TASK_GO_STRAIGHT_TO_COORD -1 2160.6958 1435.3804 9.8203 PEDMOVE_WALK 8000 TASK_TURN_CHAR_TO_FACE_CHAR -1 thedoc TASK_PAUSE -1 100 TASK_PLAY_ANIM -1 Pointup_in ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Pointup_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Pointup_shout ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Pointup_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Pointup_out ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT d2_ped_seq[2] 1 CLOSE_SEQUENCE_TASK d2_ped_seq[2] OPEN_SEQUENCE_TASK d2_ped_seq[3] TASK_GO_STRAIGHT_TO_COORD -1 2169.2629 1435.9274 9.8203 PEDMOVE_WALK 8000 TASK_TURN_CHAR_TO_FACE_CHAR -1 thedoc TASK_PLAY_ANIM -1 Shout_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Shout_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Shout_02 ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Shout_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Shout_01 ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT d2_ped_seq[3] 1 CLOSE_SEQUENCE_TASK d2_ped_seq[3] OPEN_SEQUENCE_TASK d2_ped_seq[4] TASK_GO_STRAIGHT_TO_COORD -1 2155.4204 1436.4200 9.8203 PEDMOVE_WALK 8000 TASK_TURN_CHAR_TO_FACE_CHAR -1 thedoc TASK_PAUSE -1 500 TASK_PLAY_ANIM -1 Shout_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Shout_01 ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Shout_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Shout_01 ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Shout_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT d2_ped_seq[4] 1 CLOSE_SEQUENCE_TASK d2_ped_seq[4] OPEN_SEQUENCE_TASK d2_ped_seq[5] TASK_GO_STRAIGHT_TO_COORD -1 2168.2898 1436.1907 9.8203 PEDMOVE_WALK 8000 TASK_TURN_CHAR_TO_FACE_CHAR -1 thedoc TASK_PLAY_ANIM -1 Shout_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Shout_02 ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Shout_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Shout_01 ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 Shout_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT d2_ped_seq[5] 1 CLOSE_SEQUENCE_TASK d2_ped_seq[5] OPEN_SEQUENCE_TASK d2_ped_seq[6] TASK_GO_STRAIGHT_TO_COORD -1 2159.2529 1435.3115 9.8203 PEDMOVE_WALK 8000 TASK_TURN_CHAR_TO_FACE_CHAR -1 thedoc TASK_PAUSE -1 500 TASK_PLAY_ANIM -1 lkup_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 lkup_point ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 lkup_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 lkup_point ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 lkup_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT d2_ped_seq[6] 1 CLOSE_SEQUENCE_TASK d2_ped_seq[6] OPEN_SEQUENCE_TASK seq_doc TASK_GO_STRAIGHT_TO_COORD -1 2165.6514 1452.0000 23.1721 PEDMOVE_WALK 8000 // TASK_PAUSE -1 1000 TASK_GO_STRAIGHT_TO_COORD -1 2160.5601 1452.0000 23.1719 PEDMOVE_WALK 8000 // TASK_PAUSE -1 1000 SET_SEQUENCE_TO_REPEAT seq_doc 1 CLOSE_SEQUENCE_TASK seq_doc OPEN_SEQUENCE_TASK seq_jump TASK_JUMP -1 FALSE CLOSE_SEQUENCE_TASK seq_jump OPEN_SEQUENCE_TASK seq_sit TASK_DUCK -1 -1 SET_SEQUENCE_TO_REPEAT seq_sit 1 CLOSE_SEQUENCE_TASK seq_sit OPEN_SEQUENCE_TASK d2_waiting_seq TASK_PLAY_ANIM -1 lkaround_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT d2_waiting_seq 1 CLOSE_SEQUENCE_TASK d2_waiting_seq OPEN_SEQUENCE_TASK d2_seq_cheer TASK_PLAY_ANIM -1 wave_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_WANDER_STANDARD -1 CLOSE_SEQUENCE_TASK d2_seq_cheer OPEN_SEQUENCE_TASK d2_seq_chant TASK_PLAY_ANIM -1 shout_loop ON_LOOKERS 1.0 FALSE FALSE FALSE FALSE -1 TASK_WANDER_STANDARD -1 CLOSE_SEQUENCE_TASK d2_seq_chant CREATE_OBJECT_NO_OFFSET Smash_box_stay 2156.7190 1482.3524 19.1794 pd_box1 CREATE_OBJECT_NO_OFFSET Smash_box_brk 2156.7190 1482.3524 19.1794 pd_box2 doc2_heal = 100 // **************************************************************** SET_CHAR_NEVER_TARGETTED thedoc TRUE ADD_BLIP_FOR_COORD jump_X jump_Y jump_Z jump_point_blip ADD_BLIP_FOR_COORD 1878.5455 2240.8198 9.8130 betty_blip CHANGE_BLIP_DISPLAY jump_point_blip NEITHER CHANGE_BLIP_DISPLAY betty_blip NEITHER GENERATE_RANDOM_INT_IN_RANGE 0 5 doc2_rnd // Randomise a time for Madd Dogg to jump off the building SWITCH doc2_rnd CASE 0 doc2_rnd = 16000 BREAK CASE 1 doc2_rnd = 18000 BREAK CASE 2 doc2_rnd = 20000 BREAK CASE 3 doc2_rnd = 22000 BREAK CASE 4 doc2_rnd = 24000 BREAK ENDSWITCH OPEN_SEQUENCE_TASK d2_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 thedoc TASK_SCRATCH_HEAD -1 TASK_LOOK_ABOUT -1 4000 TASK_PAUSE -1 1000 SET_SEQUENCE_TO_REPEAT d2_seq 1 CLOSE_SEQUENCE_TASK d2_seq v = 0 d2_rnd = 0 CREATE_CHAR PEDTYPE_CIVMALE WMOTR1 2154.1924 1437.9476 9.8203 d2_ped[0] SET_CHAR_HEADING d2_ped[0] 341.9008 SET_CHAR_DECISION_MAKER d2_ped[0] d2_decision PERFORM_SEQUENCE_TASK d2_ped[0] d2_ped_seq[0] CREATE_CHAR PEDTYPE_CIVMALE vbmyelv 2164.5959 1435.1688 9.8203 d2_ped[1] SET_CHAR_HEADING d2_ped[1] 8.2163 SET_CHAR_DECISION_MAKER d2_ped[1] d2_decision PERFORM_SEQUENCE_TASK d2_ped[1] d2_ped_seq[1] CREATE_CHAR PEDTYPE_CIVMALE HECK2 2160.6958 1435.3804 9.8203 d2_ped[2] SET_CHAR_HEADING d2_ped[2] 8.2163 SET_CHAR_DECISION_MAKER d2_ped[2] d2_decision PERFORM_SEQUENCE_TASK d2_ped[2] d2_ped_seq[2] CREATE_CHAR PEDTYPE_CIVMALE WMOTR1 2169.2629 1435.9274 9.8203 d2_ped[3] SET_CHAR_HEADING d2_ped[3] 8.2163 SET_CHAR_DECISION_MAKER d2_ped[3] d2_decision PERFORM_SEQUENCE_TASK d2_ped[3] d2_ped_seq[3] CREATE_CHAR PEDTYPE_CIVMALE VWFYPRO 2155.4204 1436.4200 9.8203 d2_ped[4] SET_CHAR_HEADING d2_ped[4] 8.2163 SET_CHAR_DECISION_MAKER d2_ped[4] d2_decision PERFORM_SEQUENCE_TASK d2_ped[4] d2_ped_seq[4] CREATE_CHAR PEDTYPE_CIVMALE WMOprea 2168.2898 1436.1907 9.8203 d2_ped[5] SET_CHAR_HEADING d2_ped[5] 8.2163 SET_CHAR_DECISION_MAKER d2_ped[5] d2_decision PERFORM_SEQUENCE_TASK d2_ped[5] d2_ped_seq[5] CREATE_CHAR PEDTYPE_CIVMALE HECK1 2159.2529 1435.3115 9.8203 d2_ped[6] SET_CHAR_HEADING d2_ped[6] 2.0180 SET_CHAR_DECISION_MAKER d2_ped[6] d2_decision PERFORM_SEQUENCE_TASK d2_ped[6] d2_ped_seq[6] d2_the_main_loop: // Ambient Cars *************************************************** REQUEST_MODEL walton REQUEST_MODEL WMYMECH REQUEST_MODEL smashboxpile WHILE NOT HAS_MODEL_LOADED walton OR NOT HAS_MODEL_LOADED WMYMECH OR NOT HAS_MODEL_LOADED smashboxpile WAIT 0 ENDWHILE CREATE_OBJECT smashboxpile 2112.7534 1403.9731 10.1484 pd_boxes SET_OBJECT_HEADING pd_boxes 86.7997 MARK_MODEL_AS_NO_LONGER_NEEDED smashboxpile SET_CAR_MODEL_COMPONENTS walton 4 4 CREATE_CAR walton 2107.1902 1409.1531 9.8203 pickup_truck MARK_MODEL_AS_NO_LONGER_NEEDED walton SET_CAR_HEADING pickup_truck 180.0000 // **************************************************************** CHANGE_CAR_COLOUR pickup_truck 1 1 ADD_BLIP_FOR_CAR pickup_truck pickup_blip SET_BLIP_AS_FRIENDLY pickup_blip TRUE CHANGE_BLIP_DISPLAY pickup_blip BOTH pd_box_Z = 0.0 IF NOT IS_CAR_DEAD pickup_truck ATTACH_OBJECT_TO_CAR pd_box1 pickup_truck -0.3 -1.0 pd_box_Z 0.0 0.0 0.0 ATTACH_OBJECT_TO_CAR pd_box2 pickup_truck -0.3 -1.0 pd_box_Z 0.0 0.0 0.0 ENDIF // Driver ********************************************************* CREATE_CHAR PEDTYPE_CIVMALE WMYMECH 2109.7932 1407.8574 9.8203 d2_driver MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH SET_CHAR_HEADING d2_driver 180.0000 TASK_USE_MOBILE_PHONE d2_driver TRUE GOSUB doc2_set_camera IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 2162.4978 1434.3956 9.8203 SET_CHAR_HEADING scplayer 358.0000 ENDIF IF NOT IS_CHAR_DEAD thedoc CLEAR_CHAR_TASKS_IMMEDIATELY thedoc PERFORM_SEQUENCE_TASK thedoc d2_waiting_seq ENDIF CLEAR_AREA 2162.7048 1430.3086 9.8203 10.0 TRUE SET_FIXED_CAMERA_POSITION 2162.5413 1423.8401 9.9728 0.0 0.0 0.0 // Bike from front POINT_CAMERA_AT_POINT 2162.5583 1424.8029 10.2424 JUMP_CUT SET_FADING_COLOUR 0 0 0 DO_FADE 0 FADE_IN d2_playing = 2 d2_playing_sfx = 2 WAIT 1000 PRINT_NOW ( DOC2_X ) 5000 1 // ~s~Find a way to save Madd Dogg before he jumps! TIMERB = 0 WHILE TIMERB < 2000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO d2_skip_the_cut ENDIF ENDWHILE IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_ACHIEVE_HEADING scplayer 172.0000 ENDIF TIMERB = 0 WHILE TIMERB < 2000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO d2_skip_the_cut ENDIF ENDWHILE d2_skip_the_cut: IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_HEADING scplayer 172.0000 ENDIF CLEAR_PRINTS GOSUB doc2_restore_camera SET_CAMERA_BEHIND_PLAYER PRINT_NOW ( DOC2_01 ) 7000 1 // ~s~Use the ~b~pickup truck~s~ around the corner to rescue Madd Dogg! WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD pickup_truck AND NOT IS_CHAR_DEAD thedoc WAIT 0 IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S GOTO mission_doc2_passed ENDIF d2_TIMERC ++ GOSUB doc2_keys GOSUB d2_play_sample IF trig_jumper < 4 IF d2_TIMERC > 200 AND LOCATE_CHAR_ANY_MEANS_3D scplayer 2154.1924 1437.9476 9.8203 20.0 20.0 20.0 FALSE AND NOT IS_MESSAGE_BEING_DISPLAYED d2_choose_again: GENERATE_RANDOM_INT_IN_RANGE 0 9 d2_rnd IF d2_rnd = d2_already_played AND d2_break_the_loop < 3 GOTO d2_choose_again d2_break_the_loop ++ ENDIF d2_already_played = d2_rnd d2_break_the_loop = 0 IF NOT IS_CHAR_DEAD d2_ped[0] IF LOCATE_CHAR_ANY_MEANS_3D d2_ped[0] 2154.1924 1437.9476 9.8203 2.0 2.0 2.0 FALSE AND NOT IS_MESSAGE_BEING_DISPLAYED AND d2_selected = 0 SWITCH d2_rnd CASE 0 $d2_print = &DC2_AA // Can I get your trainers? d2_audio = SOUND_DC2_AA GOSUB d2_load_sample BREAK CASE 1 $d2_print = &DC2_AB // You won’t be needing those fancy clothes. d2_audio = SOUND_DC2_AB GOSUB d2_load_sample BREAK CASE 2 $d2_print = &DC2_AC // Don’t take your clothes with y’! d2_audio = SOUND_DC2_AC GOSUB d2_load_sample BREAK ENDSWITCH ENDIF ENDIF IF NOT IS_CHAR_DEAD d2_ped[1] IF LOCATE_CHAR_ANY_MEANS_3D d2_ped[1] 2164.5959 1435.1688 9.8203 2.0 2.0 2.0 FALSE AND NOT IS_MESSAGE_BEING_DISPLAYED AND d2_selected = 0 SWITCH d2_rnd CASE 3 $d2_print = &DC2_AD // A little more action! d2_audio = SOUND_DC2_AD GOSUB d2_load_sample BREAK CASE 4 $d2_print = &DC2_AE // The show must go on! d2_audio = SOUND_DC2_AE GOSUB d2_load_sample BREAK CASE 5 $d2_print = &DC2_AF // He’s gonna be pavement pizza! d2_audio = SOUND_DC2_AF GOSUB d2_load_sample BREAK CASE 6 $d2_print = &DC2_AJ // A little more action! d2_audio = SOUND_DC2_AJ GOSUB d2_load_sample BREAK CASE 7 $d2_print = &DC2_AK // The show must go on! d2_audio = SOUND_DC2_AK GOSUB d2_load_sample BREAK CASE 8 $d2_print = &DC2_AL // He’s gonna be pavement pizza! d2_audio = SOUND_DC2_AL GOSUB d2_load_sample BREAK ENDSWITCH ENDIF ENDIF d2_TIMERC = 0 ENDIF ENDIF IF NOT IS_CAR_DEAD pickup_truck AND NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD thedoc REPEAT 7 v IF NOT IS_CHAR_DEAD d2_ped[v] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR d2_ped[v] scplayer AND d2_flee[v] = 0 CLEAR_CHAR_TASKS d2_ped[v] TASK_GO_STRAIGHT_TO_COORD d2_ped[v] 2082.0046 1415.9094 9.8047 PEDMOVE_SPRINT 20000 d2_flee[v] = 1 ENDIF IF LOCATE_CHAR_ANY_MEANS_3D d2_ped[v] 2082.3811 1416.6362 9.8047 10.0 10.0 10.0 FALSE AND NOT d2_flee[v] = 3 CLEAR_CHAR_TASKS d2_ped[v] TASK_WANDER_STANDARD d2_ped[v] d2_flee[v] = 3 ENDIF ENDIF ENDREPEAT // Player is getting car then heading to jump point IF trig_jumper = 1 OR trig_jumper = 0 IF IS_CHAR_IN_CAR scplayer pickup_truck IF NOT IS_CHAR_DEAD d2_driver AND d2_stolen = 0 CLEAR_CHAR_TASKS_IMMEDIATELY d2_driver TASK_KILL_CHAR_ON_FOOT d2_driver scplayer GENERATE_RANDOM_INT_IN_RANGE 0 2 d2_rnd SWITCH d2_rnd CASE 0 $d2_print = &DOGG_GA // Hey, that's my truck! d2_audio = SOUND_DOGG_GA GOSUB d2_load_sample BREAK CASE 1 $d2_print = &DOGG_GB // What the fuck you doing? d2_audio = SOUND_DOGG_GB GOSUB d2_load_sample BREAK CASE 2 $d2_print = &DOGG_GC // Hey! HEY! d2_audio = SOUND_DOGG_GC GOSUB d2_load_sample BREAK ENDSWITCH d2_stolen = 1 ENDIF CHANGE_BLIP_DISPLAY pickup_blip NEITHER CHANGE_BLIP_DISPLAY jump_point_blip BOTH // Player is in mission car trig_jumper = 1 ELSE CHANGE_BLIP_DISPLAY pickup_blip BOTH CHANGE_BLIP_DISPLAY jump_point_blip NEITHER // Player not in mission car trig_jumper = 0 ENDIF IF trig_jumper = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer jump_X jump_Y jump_Z 4.0 4.0 4.0 TRUE AND NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 OFF trig_jumper = 2 GET_CHAR_HEADING scplayer d2_ply_heading IF d2_ply_heading > 45.0 AND d2_ply_heading < 145.0 d2_truck_direction = 0 ELSE d2_truck_direction = 1 ENDIF ENDIF ENDIF ENDIF // Player has arrived at jump point IF trig_jumper = 2 bollocks: GOSUB doc2_set_camera IF NOT IS_CHAR_DEAD thedoc CLEAR_CHAR_TASKS_IMMEDIATELY thedoc TASK_PLAY_ANIM thedoc IDLE_CHAT PED 1.0 FALSE FALSE FALSE FALSE -1 ENDIF SET_FIXED_CAMERA_POSITION 2162.6200 1450.2083 25.1198 0.0 0.0 0.0 // Madd Dogg walking POINT_CAMERA_AT_POINT 2162.6200 1451.1921 24.9414 JUMP_CUT GENERATE_RANDOM_INT_IN_RANGE 0 3 d2_rnd SWITCH d2_rnd CASE 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DOGG_AA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD thedoc START_CHAR_FACIAL_TALK thedoc 2000 ENDIF PLAY_MISSION_AUDIO 1 PRINT_NOW ( DOGG_AA ) 3000 1 // Stay back! BREAK CASE 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DOGG_AC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD thedoc START_CHAR_FACIAL_TALK thedoc 2000 ENDIF PLAY_MISSION_AUDIO 1 PRINT_NOW ( DOGG_AC ) 3000 1 // I warn you, I’ll jump! BREAK CASE 2 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DOGG_AG WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD thedoc START_CHAR_FACIAL_TALK thedoc 2000 ENDIF PLAY_MISSION_AUDIO 1 PRINT_NOW ( DOGG_AG ) 3000 1 // I need brandy! Give me brandy! BREAK ENDSWITCH IF NOT IS_CHAR_DEAD d2_driver REMOVE_CHAR_ELEGANTLY d2_driver ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED cellphone MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH WAIT 1000 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED d2_when_he_jumps = 1 GOTO d2_skip_the_cut_1 ENDIF ENDWHILE IF NOT IS_CHAR_DEAD thedoc STOP_CHAR_FACIAL_TALK thedoc ENDIF TIMERB = 0 WHILE TIMERB < 2000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED d2_when_he_jumps = 1 GOTO d2_skip_the_cut_1 ENDIF ENDWHILE SET_INTERPOLATION_PARAMETERS 0.0 2000 SET_FIXED_CAMERA_POSITION 2162.6200 1450.2083 25.1198 0.0 0.0 0.0 // Madd Dogg walking POINT_CAMERA_AT_POINT 2162.6200 1450.4993 24.1631 INTERPOLATION TIMERB = 0 WHILE TIMERB < 2000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED d2_when_he_jumps = 1 GOTO d2_skip_the_cut_1 ENDIF ENDWHILE SET_INTERPOLATION_PARAMETERS 0.0 2000 SET_FIXED_CAMERA_POSITION 2162.6200 1445.0768 13.6736 0.0 0.0 0.0 // Madd Dogg and van POINT_CAMERA_AT_POINT 2162.6200 1445.8154 14.7476 INTERPOLATION TIMERB = 0 WHILE TIMERB < 1000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED d2_when_he_jumps = 1 GOTO d2_skip_the_cut_1 ENDIF ENDWHILE PRINT_NOW ( DOC2_05 ) 3000 1 // ~s~Catch ~b~Madd Dogg ~s~when he jumps TIMERB = 0 WHILE TIMERB < 3000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED d2_when_he_jumps = 1 GOTO d2_skip_the_cut_1 ENDIF ENDWHILE d2_skip_the_cut_1: IF d2_when_he_jumps = 1 PRINT_NOW ( DOC2_05 ) 3000 1 // ~s~Catch ~b~Madd Dogg ~s~when he jumps ENDIF CLEAR_PRINTS IF NOT IS_CHAR_DEAD thedoc PERFORM_SEQUENCE_TASK thedoc seq_doc ENDIF IF d2_truck_direction = 0 IF NOT IS_CAR_DEAD pickup_truck SET_CAR_COORDINATES pickup_truck 2163.8879 1444.0000 9.8203 SET_CAR_HEADING pickup_truck 90.0000 ENDIF ELSE IF NOT IS_CAR_DEAD pickup_truck SET_CAR_COORDINATES pickup_truck 2163.8879 1444.0000 9.8203 SET_CAR_HEADING pickup_truck 270.0000 ENDIF ENDIF APPLY_BRAKES_TO_PLAYERS_CAR player1 OFF IF DOES_BLIP_EXIST jump_point_blip SET_COORD_BLIP_APPEARANCE jump_point_blip COORD_BLIP_APPEARANCE_FRIEND ENDIF GOSUB doc2_restore_camera trig_jumper = 3 TIMERA = 0 CHECKPOINT_SAVE 99 ENDIF ENDIF IF NOT IS_CAR_DEAD pickup_truck AND NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD thedoc // Camera change if in jumper radius IF trig_jumper = 3 IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2149.4067 1431.4969 9.8203 100.0 100.0 100.0 FALSE PRINT_NOW ( DOC2_10 ) 4000 1 // ~r~You let Madd Dogg die GOTO mission_doc2_failed ENDIF IF IS_CHAR_IN_CAR scplayer pickup_truck IF d2_in_truck_1 = 0 CHANGE_BLIP_DISPLAY pickup_blip NEITHER CHANGE_BLIP_DISPLAY jump_point_blip BOTH d2_in_truck_1 = 1 ENDIF ELSE IF d2_in_truck_1 = 1 PRINT_NOW ( DOC2_19 ) 4000 1 // ~s~Get back in the truck! CHANGE_BLIP_DISPLAY pickup_blip BOTH CHANGE_BLIP_DISPLAY jump_point_blip NEITHER d2_in_truck_1 = 0 ENDIF ENDIF IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer jump_X jump_Y jump_Z 12.0 12.0 12.0 FALSE AND doc2_message_go_back = 1 TIMERB = 0 RESTORE_CAMERA_JUMPCUT doc2_message_go_back = 2 ENDIF IF TIMERB > 1000 AND doc2_message_go_back = 2 PRINT_NOW ( DOC2_11 ) 4000 1 // ~s~Go back and rescue Madd Dogg! doc2_message_go_back = 0 ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer jump_X jump_Y jump_Z 12.0 12.0 12.0 FALSE doc2_message_go_back = 1 IF TIMERA < 40000 SET_FIXED_CAMERA_POSITION 2163.7021 1435.8701 37.0031 0.0 0.0 0.0 // Fixed camera for jumping POINT_CAMERA_AT_POINT 2163.6990 1436.4468 36.1861 JUMP_CUT ENDIF IF TIMERA > 10000 AND TIMERA < 11000 IF d2_selected = 0 GENERATE_RANDOM_INT_IN_RANGE 0 3 d2_rnd SWITCH d2_rnd CASE 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DOGG_BA WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( DOGG_BA ) 4000 1 // That's it, this is the end! BREAK CASE 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DOGG_BB WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( DOGG_BB ) 4000 1 // It's time, I'm going to do it! BREAK CASE 2 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DOGG_BC WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( DOGG_BC ) 4000 1 // It's time, I'm going to do it! BREAK ENDSWITCH d2_selected = 1 ENDIF ENDIF IF TIMERA > doc2_rnd SET_PLAYER_CONTROL player1 ON IF NOT IS_CHAR_DEAD thedoc CLEAR_CHAR_TASKS_IMMEDIATELY thedoc SET_CHAR_HEADING thedoc 177.7059 ENDIF SET_TIME_SCALE 0.4 SET_FIXED_CAMERA_POSITION 2163.2200 1454.5334 35.0248 0.0 0.0 0.0 // Top down view of Madd Dogg jumping POINT_CAMERA_AT_POINT 2163.2268 1454.0627 34.1425 JUMP_CUT WAIT 500 SET_OBJECT_COLLISION pd_box1 FALSE SET_OBJECT_COLLISION pd_box2 FALSE IF NOT IS_CHAR_DEAD thedoc PERFORM_SEQUENCE_TASK thedoc seq_jump ENDIF TIMERB = 0 trig_jumper = 4 CLEAR_MISSION_AUDIO 3 LOAD_MISSION_AUDIO 3 SOUND_CRATE_LANDING WHILE NOT TIMERB > 2000 WAIT 0 IF TIMERB > 500 AND d2_falling = 0 IF NOT IS_CHAR_DEAD thedoc CLEAR_CHAR_TASKS thedoc ENDIF d2_falling = 1 ENDIF IF NOT IS_CHAR_DEAD thedoc GET_CHAR_COORDINATES thedoc x y z IF z < 12.0000 AND TIMERA > 10 TIMERA = 0 ADD_BLOOD x y z 0.0 0.0 2.0 40 thedoc ENDIF ENDIF IF TIMERB > 1000 GOSUB doc2_set_camera SET_FIXED_CAMERA_POSITION 2172.0024 1441.7015 10.2111 0.0 0.0 0.0 // Madd Dogg hits the ground POINT_CAMERA_AT_POINT 2171.0759 1442.0026 10.4368 JUMP_CUT SET_PLAYER_CONTROL player1 OFF ENDIF IF NOT IS_CAR_DEAD pickup_truck IF NOT IS_CHAR_DEAD thedoc IF NOT trig_jumper = 5 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pickup_truck 0.0 -1.5 0.5 truck_X truck_Y truck_Z IF LOCATE_CHAR_ANY_MEANS_3D thedoc truck_X truck_Y truck_Z 1.3 1.3 1.0 FALSE IF HAS_MISSION_AUDIO_LOADED 3 PLAY_MISSION_AUDIO 3 ENDIF pd_box_Z = -0.1 BREAK_OBJECT pd_box2 TRUE SET_CHAR_COLLISION thedoc FALSE SET_CHAR_HEALTH thedoc 100 CLEAR_CHAR_TASKS_IMMEDIATELY thedoc TASK_PLAY_ANIM_NON_INTERRUPTABLE thedoc KO_shot_front PED 2.0 FALSE FALSE FALSE TRUE -1 ATTACH_CHAR_TO_CAR thedoc pickup_truck 0.0 -2.0 1.0 FACING_FORWARD 0.0 WEAPONTYPE_UNARMED trig_jumper = 5 IF NOT IS_CHAR_DEAD thedoc AND NOT IS_CAR_DEAD pickup_truck CREATE_FX_SYSTEM explosion_barrel truck_X truck_Y truck_Z TRUE hit_van PLAY_AND_KILL_FX_SYSTEM hit_van SHAKE_PAD PAD1 500 200 SET_CAR_DENSITY_MULTIPLIER 2.0 SET_CHAR_HEALTH thedoc 100 DISPLAY_HUD TRUE GOSUB spawn_medics ENDIF ENDIF ENDIF ENDIF ENDIF ENDWHILE TIMERA = 0 IF HAS_MISSION_AUDIO_FINISHED 3 CLEAR_MISSION_AUDIO 3 ENDIF SET_TIME_SCALE 1.0 GOSUB doc2_restore_camera // Player misses Madd Dogg IF NOT IS_CHAR_DEAD thedoc AND NOT IS_CAR_DEAD pickup_truck DETACH_CHAR_FROM_CAR thedoc ATTACH_CHAR_TO_CAR thedoc pickup_truck 0.0 -2.5 1.0 FACING_FORWARD 0.0 WEAPONTYPE_UNARMED ENDIF IF trig_jumper = 4 IF NOT IS_CHAR_DEAD thedoc GET_CHAR_COORDINATES thedoc x y z ADD_BLOOD x y z 0.0 0.0 10.0 100 thedoc TASK_DIE thedoc ENDIF ELSE IF NOT IS_CAR_DEAD pickup_truck SET_CAR_DENSITY_MULTIPLIER 2.0 GET_CAR_HEALTH pickup_truck new_heal SET_CAR_PROOFS pickup_truck TRUE FALSE FALSE FALSE TRUE ENDIF old_heal = new_heal DISPLAY_ONSCREEN_COUNTER_WITH_STRING d2_instance_health COUNTER_DISPLAY_BAR DOC2_07 CHANGE_BLIP_DISPLAY betty_blip BOTH CHANGE_BLIP_DISPLAY jump_point_blip NEITHER REPEAT 7 v IF NOT IS_CHAR_DEAD d2_ped[v] CLEAR_CHAR_TASKS_IMMEDIATELY d2_ped[v] GENERATE_RANDOM_INT_IN_RANGE 0 2 d2_rnd IF d2_rnd = 0 GENERATE_RANDOM_INT_IN_RANGE 10 200 d2_rnd WAIT d2_rnd IF NOT IS_CHAR_DEAD d2_ped[v] PERFORM_SEQUENCE_TASK d2_ped[v] d2_seq_cheer ENDIF ELSE GENERATE_RANDOM_INT_IN_RANGE 10 200 d2_rnd WAIT d2_rnd IF NOT IS_CHAR_DEAD d2_ped[v] PERFORM_SEQUENCE_TASK d2_ped[v] d2_seq_chant ENDIF ENDIF ENDIF ENDREPEAT REMOVE_ANIMATION ON_LOOKERS WAIT 1000 PRINT_NOW ( DOC2_06 ) 5000 1 // ~s~Drive Madd Dogg to ~y~Hospital ~s~CAREFULLY. Each bump reduces his chance of survival. TIMERA = 0 ENDIF ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD pickup_truck AND NOT IS_CHAR_DEAD thedoc IF trig_jumper = 5 IF TIMERA > 5000 IF d2_playing = 2 AND d2_conversation = 0 $d2_print = &DOGG_CA // Time to take your sorry ass to rehab you drunken idiot. d2_audio = SOUND_DOGG_CA GOSUB d2_load_sample d2_conversation = 1 ENDIF IF d2_playing = 2 AND d2_conversation = 1 $d2_print = &DOGG_CB // Can I rap, dude? d2_audio = SOUND_DOGG_CB GOSUB d2_load_sample d2_conversation = 2 ENDIF IF d2_playing = 2 AND d2_conversation = 2 $d2_print = &DOGG_CC // Best there ever was. d2_audio = SOUND_DOGG_CC GOSUB d2_load_sample d2_conversation = 3 ENDIF IF d2_playing = 2 AND d2_conversation = 3 $d2_print = &DOGG_CD // Second only to god on high, homeboy. d2_audio = SOUND_DOGG_CD GOSUB d2_load_sample d2_conversation = 4 ENDIF IF d2_playing = 2 AND d2_conversation = 4 $d2_print = &DOGG_CE // And the name's Carl. d2_audio = SOUND_DOGG_CE GOSUB d2_load_sample d2_conversation = 5 ENDIF IF d2_playing = 2 AND d2_conversation = 5 $d2_print = &DOGG_CF // Thanks, Carl... (pukes). d2_audio = SOUND_DOGG_CF GOSUB d2_load_sample d2_conversation = 6 ENDIF ENDIF IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD pickup_truck IF NOT IS_CHAR_IN_CAR scplayer pickup_truck IF d2_in_truck = 0 d2_conversation = 6 PRINT_NOW ( DOC2_19 ) 4000 1 // ~s~Get back in the truck! d2_in_truck = 1 ENDIF ELSE IF d2_in_truck = 1 PRINT_NOW ( DOC2_20 ) 4000 1 // ~s~Drive Madd Dogg to the Hospital! d2_in_truck = 0 ENDIF ENDIF ENDIF old_heal = new_heal GET_CAR_HEALTH pickup_truck new_heal IF NOT IS_CHAR_DEAD thedoc AND NOT IS_CHAR_DEAD scplayer IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR thedoc scplayer IF new_heal = old_heal new_heal = new_heal - 50 ENDIF ENDIF ENDIF IF new_heal < old_heal value_heal = old_heal - new_heal d2_instance_health = d2_instance_health - value_heal IF d2_instance_health < 0 d2_instance_health = 0 CLEAR_PRINTS GENERATE_RANDOM_INT_IN_RANGE 0 3 d2_rnd SWITCH d2_rnd CASE 0 $d2_print = &DOGG_EA // It's the end!, Huuurrgghh! d2_audio = SOUND_DOGG_EA GOSUB d2_load_sample BREAK CASE 1 $d2_print = &DOGG_EB // You tried, man, you triiiuurrgghh (cough) -urgh... d2_audio = SOUND_DOGG_EB GOSUB d2_load_sample BREAK CASE 2 $d2_print = &DOGG_EC // Momma, 's'at you? Uugh! d2_audio = SOUND_DOGG_EC GOSUB d2_load_sample BREAK ENDSWITCH IF NOT IS_CAR_DEAD pickup_truck trig_jumper = 6 ELSE REMOVE_CHAR_ELEGANTLY thedoc WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 wait 0 ENDWHILE GOTO mission_doc2_failed ENDIF // ******************************************************************************************************* // * * // * Test in Progress * // * * // ******************************************************************************************************* IF NOT IS_CHAR_DEAD thedoc SET_CHAR_BLEEDING thedoc FALSE ENDIF TIMERB = 0 ENDIF IF doc2_bleed = 0 AND NOT trig_jumper = 6 CLEAR_PRINTS d2_conversation = 4 doc2_bleed = 1 TIMERB = 0 SET_CHAR_BLEEDING thedoc TRUE IF d2_seq_rnd = 0 OR d2_seq_rnd = 1 GENERATE_RANDOM_INT_IN_RANGE 0 3 d2_rnd ELSE GENERATE_RANDOM_INT_IN_RANGE 0 2 d2_rnd ENDIF SWITCH d2_seq_rnd CASE 0 IF d2_rnd = 0 $d2_print = &DOGG_DC // Momma, is that you? d2_audio = SOUND_DOGG_DC GOSUB d2_load_sample ENDIF IF d2_rnd = 1 $d2_print = &DOGG_DD // Brandy! More Brandy! d2_audio = SOUND_DOGG_DD GOSUB d2_load_sample ENDIF IF d2_rnd = 2 $d2_print = &DOGG_DI // OG Loc? You're dead, man, dead! d2_audio = SOUND_DOGG_DI GOSUB d2_load_sample ENDIF BREAK CASE 1 IF d2_rnd = 0 $d2_print = &DOGG_DJ // Where's my bitches... my bitches..? d2_audio = SOUND_DOGG_DJ GOSUB d2_load_sample ENDIF IF d2_rnd = 1 $d2_print = &DOGG_DE // I'm a ghetto superstar! d2_audio = SOUND_DOGG_DE GOSUB d2_load_sample ENDIF IF d2_rnd = 2 $d2_print = &DOGG_DF // Loc! LOC! I'm gonna kill you! d2_audio = SOUND_DOGG_DF GOSUB d2_load_sample ENDIF BREAK CASE 2 IF d2_rnd = 0 $d2_print = &DOGG_DG // Wha-? Whera am I? Why's it so dark? d2_audio = SOUND_DOGG_DG GOSUB d2_load_sample ENDIF IF d2_rnd = 1 IF d2_conversation = 6 $d2_print = &DOGG_DH // I'm cold, Carl, so cold! d2_audio = SOUND_DOGG_DH GOSUB d2_load_sample ELSE $d2_print = &DOGG_DG // Wha-? Whera am I? Why's it so dark? d2_audio = SOUND_DOGG_DG GOSUB d2_load_sample ENDIF ENDIF BREAK CASE 3 IF d2_rnd = 0 $d2_print = &DOGG_DA // Oh, man, I'm gonna die! d2_audio = SOUND_DOGG_DA GOSUB d2_load_sample ENDIF IF d2_rnd = 1 IF d2_conversation = 6 $d2_print = &DOGG_DB // I'm slipping away, Carl! d2_audio = SOUND_DOGG_DB GOSUB d2_load_sample ELSE $d2_print = &DOGG_DA // Oh, man, I'm gonna die! d2_audio = SOUND_DOGG_DA GOSUB d2_load_sample ENDIF ENDIF BREAK ENDSWITCH d2_seq_rnd ++ IF d2_seq_rnd = 4 d2_seq_rnd = 0 ENDIF d2_conversation = 6 ENDIF ENDIF IF doc2_bleed = 1 AND TIMERB > 4000 SET_CHAR_BLEEDING thedoc FALSE doc2_bleed = 0 ENDIF IF IS_CHAR_IN_CAR scplayer pickup_truck CHANGE_BLIP_DISPLAY pickup_blip NEITHER CHANGE_BLIP_DISPLAY betty_blip BOTH ELSE CHANGE_BLIP_DISPLAY pickup_blip BOTH CHANGE_BLIP_DISPLAY betty_blip NEITHER ENDIF IF NOT IS_CAR_DEAD pickup_truck IF IS_CHAR_IN_CAR scplayer pickup_truck IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1878.5455 2240.8198 9.8130 4.0 4.0 4.0 TRUE AND NOT IS_CAR_DEAD pickup_truck SET_PLAYER_CONTROL player1 OFF IF NOT IS_CHAR_DEAD thedoc fucked_in_love: APPLY_BRAKES_TO_PLAYERS_CAR player1 ON GOSUB doc2_set_camera GET_CHAR_HEADING scplayer d2_ply_heading IF d2_ply_heading > 0.0 AND d2_ply_heading < 180.0 d2_direction = 0 ELSE d2_direction = 1 ENDIF CLEAR_AREA 1878.5455 2240.8198 9.8130 10.0 TRUE DETACH_CHAR_FROM_CAR thedoc IF NOT IS_CHAR_DEAD thedoc SET_CHAR_COORDINATES thedoc 1876.3347 2236.8997 10.1250 SET_CHAR_HEADING thedoc 242.5344 ENDIF IF NOT IS_CAR_DEAD pickup_truck SET_CAR_COORDINATES pickup_truck 1878.5455 2240.8198 9.8130 IF d2_direction = 0 SET_CAR_HEADING pickup_truck 90.0000 ELSE SET_CAR_HEADING pickup_truck 270.0000 ENDIF ENDIF SET_FIXED_CAMERA_POSITION 1854.5211 2272.7498 11.9889 0.0 0.0 0.0 // Outside the clinic POINT_CAMERA_AT_POINT 1854.8296 2271.8000 11.9363 JUMP_CUT WAIT 1000 TIMERB = 0 WHILE TIMERB < 2000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO d2_skip_the_cut_2 ENDIF ENDWHILE LVAR_INT d2_seq_help_A IF NOT IS_CHAR_DEAD thedoc OPEN_SEQUENCE_TASK d2_seq_help_A TASK_GO_TO_COORD_ANY_MEANS -1 1878.4933 2235.1082 10.1250 PEDMOVE_RUN -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 thedoc TASK_PAUSE -1 2000 TASK_TOGGLE_DUCK -1 TRUE CLOSE_SEQUENCE_TASK d2_seq_help_A ENDIF CREATE_CHAR PEDTYPE_CIVMALE laemt1 1875.3372 2235.2271 10.1250 d2_medic_C SET_CHAR_HEADING d2_medic_C 329.5542 TASK_TOGGLE_DUCK d2_medic_C TRUE CREATE_CHAR PEDTYPE_CIVMALE laemt1 1886.0066 2235.0667 10.1250 d2_medic_D SET_CHAR_HEADING d2_medic_D 84.1029 PERFORM_SEQUENCE_TASK d2_medic_D d2_seq_help_A SET_FIXED_CAMERA_POSITION 1872.4949 2243.8435 14.0672 0.0 0.0 0.0 // Outside the clinic POINT_CAMERA_AT_POINT 1873.3213 2243.2822 14.1094 JUMP_CUT WAIT 100 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DOGG_FA // You get yourself straightened out, WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( DOGG_FA ) 3000 1 // You get yourself straightened out, SET_INTERPOLATION_PARAMETERS 0.0 6000 SET_FIXED_CAMERA_POSITION 1872.4949 2243.8435 14.0672 0.0 0.0 0.0 // Outside the POINT_CAMERA_AT_POINT 1872.9706 2243.1431 13.5352 INTERPOLATION TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO d2_skip_the_cut_2 ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DOGG_FB // then we can get you back in the studio. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( DOGG_FB ) 3000 1 // then we can get you back in the studio. TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO d2_skip_the_cut_2 ENDIF ENDWHILE TIMERB = 0 WHILE TIMERB < 1000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO d2_skip_the_cut_2 ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DOGG_FC // Carl. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( DOGG_FC ) 3000 1 // Madd Dogg : Carl. TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO d2_skip_the_cut_2 ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DOGG_FD // What? WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( DOGG_FD ) 3000 1 // Carl : What. TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO d2_skip_the_cut_2 ENDIF ENDWHILE TIMERB = 0 WHILE TIMERB < 1000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO d2_skip_the_cut_2 ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DOGG_FE // When I'm clean, I'm gona need a new manager. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( DOGG_FE ) 3000 1 // When I’m clean, I’m gona need a new manager.n TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO d2_skip_the_cut_2 ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DOGG_FF // Thought I might look you up. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( DOGG_FF ) 2000 1 // Thought I might look you up. TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO d2_skip_the_cut_2 ENDIF ENDWHILE TIMERB = 0 WHILE TIMERB < 1000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO d2_skip_the_cut_2 ENDIF ENDWHILE IF NOT IS_CAR_DEAD pickup_truck AND NOT IS_CHAR_DEAD scplayer IF d2_direction = 0 TASK_CAR_DRIVE_TO_COORD scplayer pickup_truck 1853.3019 2239.5503 9.8203 10.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS ELSE TASK_CAR_DRIVE_TO_COORD scplayer pickup_truck 1902.1683 2238.1360 9.8203 10.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS ENDIF ENDIF CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_DOGG_FG // You do that, homie. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( DOGG_FG ) 3000 1 // You do that, homie. TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO d2_skip_the_cut_2 ENDIF ENDWHILE TIMERB = 0 WHILE TIMERB < 1000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO d2_skip_the_cut_2 ENDIF ENDWHILE d2_skip_the_cut_2: GOSUB kill_the_medics IF NOT IS_CAR_DEAD pickup_truck SET_CAR_STATUS pickup_truck STATUS_PLAYER IF d2_direction = 1 SET_CAR_COORDINATES pickup_truck 1913.2384 2240.4014 9.8203 SET_CAR_HEADING pickup_truck 270.0000 ELSE SET_CAR_COORDINATES pickup_truck 1867.2996 2260.5737 9.8203 SET_CAR_HEADING pickup_truck 0.0000 ENDIF ENDIF CLEAR_ONSCREEN_COUNTER doc2_heal GOSUB doc2_restore_camera APPLY_BRAKES_TO_PLAYERS_CAR player1 OFF ENDIF DELETE_CHAR thedoc IF DOES_BLIP_EXIST betty_blip REMOVE_BLIP betty_blip ENDIF GOTO mission_doc2_passed ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF trig_jumper = 6 AND TIMERB > 3000 SET_CHAR_BLEEDING thedoc FALSE REMOVE_CHAR_ELEGANTLY thedoc WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 wait 0 ENDWHILE GOTO mission_doc2_failed ENDIF ENDWHILE GOSUB doc2_restore_camera WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 wait 0 ENDWHILE GOTO mission_doc2_failed // **************************************** Mission doc2 failed *********************** mission_doc2_failed: IF d2_mission_passed = 0 PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" IF trig_jumper = 5 CLEAR_ONSCREEN_COUNTER d2_instance_health ENDIF IF IS_CAR_DEAD pickup_truck IF trig_jumper < 5 PRINT_NOW ( DOC2_09 ) 4000 1 // ~r~You won't be able to catch Madd Dogg now ELSE PRINT_NOW ( DOC2_10 ) 4000 1 // ~r~You let Madd Dogg die ENDIF IF NOT IS_CHAR_DEAD thedoc // TASK_DIE thedoc ENDIF ENDIF IF IS_CHAR_DEAD thedoc OR d2_instance_health = 0 PRINT_NOW ( DOC2_10 ) 4000 1 // ~r~You let Madd Dogg die ENDIF ENDIF //GOSUB doc2_fade_in RETURN // **************************************** mission doc2 passed ************************ mission_doc2_passed: d2_mission_passed = 1 IF DOES_BLIP_EXIST doc_contact_blip REMOVE_BLIP doc_contact_blip ENDIF flag_doc_mission_counter ++ //Used to terminate this mission loop in the main script. These varibles will be set up in the main.sc REGISTER_MISSION_PASSED ( DOC_2 ) //Used in the stats PLAYER_MADE_PROGRESS 1 PLAY_MISSION_PASSED_TUNE 1 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 10 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 10 //amount of respect CLEAR_WANTED_LEVEL player1 RETURN spawn_medics: // -------------------------------------------------------------------------------------------- LVAR_INT d2_seq_medic_a d2_seq_medic_b d2_sequence_task REQUEST_MODEL laemt1 REQUEST_MODEL ambulan WHILE NOT HAS_MODEL_LOADED laemt1 OR NOT HAS_MODEL_LOADED ambulan WAIT 0 ENDWHILE // -------------------------------------------------------------------------------------------- CREATE_CHAR PEDTYPE_CIVMALE laemt1 1853.9961 2264.5537 9.9245 d2_medic_A SET_CHAR_HEADING d2_medic_A 261.1915 CREATE_CHAR PEDTYPE_CIVMALE laemt1 1855.1562 2264.2864 9.8885 d2_medic_B SET_CHAR_HEADING d2_medic_B 62.9217 CREATE_CAR ambulan 1889.0458 2256.1279 9.8203 d2_ambu_A SET_CAR_HEADING d2_ambu_A 359.5048 CREATE_CAR ambulan 1896.4932 2256.0691 9.8203 d2_ambu_B SET_CAR_HEADING d2_ambu_B 2.7445 // -------------------------------------------------------------------------------------------- OPEN_SEQUENCE_TASK d2_sequence_task TASK_GO_TO_COORD_ANY_MEANS -1 1853.9961 2264.5537 9.9245 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 242.9220 IF NOT IS_CHAR_DEAD d2_medic_B TASK_PLAY_ANIM -1 IDLE_chat PED 1.0 TRUE FALSE FALSE FALSE -1 ENDIF SET_SEQUENCE_TO_REPEAT d2_sequence_task 1 CLOSE_SEQUENCE_TASK d2_sequence_task PERFORM_SEQUENCE_TASK d2_medic_A d2_sequence_task // -------------------------------------------------------------------------------------------- CLEAR_SEQUENCE_TASK d2_sequence_task OPEN_SEQUENCE_TASK d2_sequence_task TASK_GO_TO_COORD_ANY_MEANS -1 1855.1562 2264.2864 9.8885 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 62.9217 SET_SEQUENCE_TO_REPEAT d2_sequence_task 1 CLOSE_SEQUENCE_TASK d2_sequence_task PERFORM_SEQUENCE_TASK d2_medic_B d2_sequence_task // -------------------------------------------------------------------------------------------- MARK_MODEL_AS_NO_LONGER_NEEDED ambulan // -------------------------------------------------------------------------------------------- RETURN kill_the_medics: IF NOT IS_CHAR_DEAD d2_medic_A REMOVE_CHAR_ELEGANTLY d2_medic_A ENDIF IF NOT IS_CHAR_DEAD d2_medic_B REMOVE_CHAR_ELEGANTLY d2_medic_B ENDIF IF NOT IS_CHAR_DEAD d2_medic_C REMOVE_CHAR_ELEGANTLY d2_medic_C ENDIF IF NOT IS_CHAR_DEAD d2_medic_D REMOVE_CHAR_ELEGANTLY d2_medic_D ENDIF RETURN // ********************************** mission cleanup *********************************** mission_cleanup_doc2: flag_player_on_mission = 0 IF NOT IS_CHAR_DEAD thedoc REMOVE_CHAR_ELEGANTLY thedoc ENDIF IF DOES_BLIP_EXIST jump_point_blip REMOVE_BLIP jump_point_blip ENDIF IF DOES_BLIP_EXIST betty_blip REMOVE_BLIP betty_blip ENDIF IF DOES_BLIP_EXIST pickup_blip REMOVE_BLIP pickup_blip ENDIF CLEAR_ONSCREEN_COUNTER d2_instance_health KILL_FX_SYSTEM hit_van SWITCH_ROADS_BACK_TO_ORIGINAL 2090.9810 1388.5104 8.8203 2234.6863 1517.0773 10.8203 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2090.9810 1388.5104 8.8203 2234.6863 1517.0773 10.8203 MARK_MODEL_AS_NO_LONGER_NEEDED walton MARK_MODEL_AS_NO_LONGER_NEEDED WMYCON MARK_MODEL_AS_NO_LONGER_NEEDED vbmyelv MARK_MODEL_AS_NO_LONGER_NEEDED VWFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED WMOTR1 MARK_MODEL_AS_NO_LONGER_NEEDED laemt1 MARK_MODEL_AS_NO_LONGER_NEEDED ambulan MARK_MODEL_AS_NO_LONGER_NEEDED HECK1 MARK_MODEL_AS_NO_LONGER_NEEDED HECK2 MARK_MODEL_AS_NO_LONGER_NEEDED WMOprea MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH MARK_MODEL_AS_NO_LONGER_NEEDED cellphone UNLOAD_SPECIAL_CHARACTER 1 REMOVE_ANIMATION ON_LOOKERS RELEASE_WEATHER GET_GAME_TIMER timer_mobile_start // Used to reset the mobile phone timer so it doesn't ring immediately after the mission MISSION_HAS_FINISHED RETURN doc2_set_camera: CLEAR_PRINTS SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF RETURN doc2_restore_camera: CLEAR_PRINTS SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT RETURN doc2_fade_out: DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN doc2_fade_in: DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN doc2_keys: LVAR_INT doc2_dummy_car IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_W IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer KO_shot_face PED 2.0 FALSE FALSE FALSE TRUE -1 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_C IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer KO_shot_front PED 2.0 FALSE FALSE FALSE TRUE -1 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_E IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer KO_shot_stom PED 2.0 FALSE FALSE FALSE TRUE -1 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer doc2_dummy_car SET_CAR_COORDINATES doc2_dummy_car 1893.9584 2240.1084 9.8203 SET_CAR_HEADING doc2_dummy_car 77.6686 ENDIF ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F VIEW_INTEGER_VARIABLE doc2_rnd doc2_rnd ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B IF NOT IS_CAR_DEAD pickup_truck GET_OFFSET_FROM_CAR_IN_WORLD_COORDS pickup_truck 0.0 -1.5 0.5 truck_X truck_Y truck_Z ENDIF CREATE_FX_SYSTEM explosion_barrel truck_X truck_Y truck_Z TRUE hit_van PLAY_FX_SYSTEM hit_van ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_Q IF NOT IS_CHAR_DEAD scplayer GET_CHAR_COORDINATES scplayer x y z ADD_BLOOD x y z 0.0 0.0 2.0 40 scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H IF NOT IS_CHAR_DEAD scplayer ADD_ARMOUR_TO_CHAR scplayer 100 INCREASE_PLAYER_MAX_HEALTH player1 100 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_P IF NOT IS_CHAR_DEAD thedoc AND NOT IS_CAR_DEAD pickup_truck AND NOT trig_jumper = 5 BREAK_OBJECT pd_box2 TRUE CLEAR_CHAR_TASKS_IMMEDIATELY thedoc TASK_PLAY_ANIM_NON_INTERRUPTABLE thedoc KO_shot_front PED 2.0 FALSE FALSE FALSE TRUE -1 ATTACH_CHAR_TO_CAR thedoc pickup_truck 0.0 -2.5 1.0 FACING_FORWARD 0.0 WEAPONTYPE_UNARMED trig_jumper = 5 DISPLAY_ONSCREEN_COUNTER_WITH_STRING doc2_heal COUNTER_DISPLAY_BAR DOC2_07 CHANGE_BLIP_DISPLAY betty_blip BOTH CHANGE_BLIP_DISPLAY jump_point_blip NEITHER ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_Z FORCE_WEATHER_NOW WEATHER_RAINY_COUNTRYSIDE ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_U ENDIF RETURN d2_load_sample: CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 d2_audio d2_playing = 0 RETURN d2_play_sample: IF HAS_MISSION_AUDIO_LOADED 1 AND d2_playing = 0 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $d2_print ) 10000 1 d2_playing = 1 ENDIF IF HAS_MISSION_AUDIO_FINISHED 1 AND d2_playing = 1 CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT $d2_print d2_playing = 2 ENDIF RETURN } /* {---------------------------------------DOC2--------------------------------------------} [DOC2_01:DOC2] ~s~Use the ~b~Van ~s~around the corner to rescue Madd Dogg! [DOC2_05:DOC2] ~s~Catch ~y~Madd Dogg ~s~when he jumps [DOC2_06:DOC2] ~s~Drive Madd Dogg to ~y~Hospital ~s~CAREFULLY. Each bump reduces his chance of survival. [DOC2_07:DOC2] Madd Dogg [DOC2_09:DOC2] ~r~You won't be able to catch Madd Dogg now [DOC2_10:DOC2] ~r~You let Madd Dogg die [DOC2_11:DOC2] ~s~Go back and rescue Madd Dogg! [DOC2_15:DOC2] ~s~Go and save ~y~Madd Dogg ~s~before he jumps! [DOC2_19:DOC2] ~s~Get back in the truck! [DOC2_20:DOC2] ~s~Drive Madd Dogg to the Hospital! [DOC2_16:DOC2] GUY : Hey! that's my truck [DOC2_17:DOC2] GUY : Hey, Where you going with my truck! */ MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* Heist 1 ******************************************* // ****************************** Photographing the Plans ********************************* // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME HEIST1 // Mission start stuff GOSUB mission_start_heist1 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_heist1_failed ENDIF GOSUB mission_cleanup_heist1 MISSION_END { // Variables for mission LVAR_INT he1_visible // Peds LVAR_INT he1_tourist1 he1_tourist2 he1_tourist3 he1_tourist4 he1_tourist5 LVAR_INT he1_touristsnap he1_doorsound LVAR_FLOAT effectX effectY effectZ LVAR_INT he1_recept1 he1_recept2 LVAR_INT he1_bystander1 he1_bystander2 he1_bystander3 he1_bystander4 LVAR_INT he1_cleaner LVAR_INT he1_guard1 he1_guard2 he1_guard3 he1_guard4 LVAR_INT he1_swatbase1 he1_swatbase2 he1_swatbase3 he1_swatbase4 he1_swatbase5 he1_swatbase6 LVAR_INT he1_swatbase7 he1_swatbase8 he1_swatbase9 LVAR_INT he1_pop1 he1_pop2 he1_pop3 he1_pop4 he1_pop5 he1_pop6 he1_pop7 he1_pop8 he1_pop9 LVAR_INT he1_swatstair LVAR_INT he1_swatstairPtsy LVAR_INT he1_swatseq LVAR_INT he1_suitgen LVAR_INT he1_snitch LVAR_INT he1_copconv LVAR_INT he1_fireconv LVAR_INT he1_dummy LVAR_INT he1_camreserve[20] //Decision makers LVAR_INT he1_touristdm LVAR_INT he1_emptydm LVAR_INT he1_guarddm LVAR_INT he1_civdm // Vehicles LVAR_INT he1_parkedescape //Misc Objects LVAR_INT he1_plans LVAR_INT he1_doorR LVAR_INT he1_doorL LVAR_INT he1_doorpop1 he1_doorpop2 LVAR_INT he1_stairdoor LVAR_INT he1_checkchat //LVAR_INT he1_door // garage LVAR_INT he1_vending1 he1_vending1health LVAR_INT he1_vending2 he1_vending2health LVAR_FLOAT he1_vending2mass LVAR_INT he1_depbox1 he1_depbox2 he1_depbox3 he1_depbox4 he1_depbox5 LVAR_INT he1_hintbox1 he1_hintbox2 he1_hintbox3 LVAR_INT he1_fire1 he1_fire2 LVAR_INT he1_smoke1 he1_smoke2 he1_smoke3 he1_smoke4 he1_smoke5 he1_smoke6 he1_smoke7 he1_smoke8 he1_smoke9 LVAR_INT he1_beginsmoke1 he1_beginsmoke2 he1_beginsmoke3 he1_vendingsmoke1 he1_vendingsmoke2 he1_vendingsmoke3 LVAR_INT he1_stopsmoke1 he1_stopsmoke2 he1_stopsmoke3 LVAR_INT he1_scriptfire1 he1_scriptfire2 he1_scriptfire3 he1_scriptfire4 LVAR_INT he1_Tempint LVAR_INT he1_health1 he1_health2 LVAR_INT he1_cameraP // Blips LVAR_INT he1_cameraB LVAR_INT he1_officesB LVAR_INT he1_receptB LVAR_INT he1_plansB LVAR_INT he1_readingroomB LVAR_INT he1_depositoryB LVAR_INT he1_completeB LVAR_INT he1_vending1B he1_vending2B LVAR_INT he1_camreserveB LVAR_INT he1_finalB LVAR_INT he1_stairwellB LVAR_INT he1_touristB[6] // condition flags LVAR_INT he1_stairprompt LVAR_INT he1_cameraprompt LVAR_INT he1_touristfrenzy LVAR_INT he1_camtog LVAR_INT he1_progress LVAR_INT he1_drillstarted LVAR_INT he1_inbuilding LVAR_INT he1_failconditions LVAR_INT he1_hideweaponcheck LVAR_INT he1_playerwarned LVAR_INT he1_attractattention LVAR_INT he1_plansphotographed LVAR_INT he1_ctskipfireneeded LVAR_INT he1_ctskipsnitchneeded LVAR_INT he1_ctskipcameraneeded LVAR_INT he1_cameracheck LVAR_INT he1_conversationOK LVAR_INT he1_tempcount LVAR_INT he1_vdam1 LVAR_INT he1_vdam2 LVAR_INT he1_scratch LVAR_INT he1_byroute1 he1_byroute2 he1_byroute3 LVAR_INT he1_firescreated LVAR_INT he1_smokebegun LVAR_INT he1_cameracollected LVAR_INT he1_filmremaining LVAR_INT he1_camindex LVAR_FLOAT he1_camX LVAR_FLOAT he1_camY LVAR_FLOAT he1_camZ LVAR_INT he1_hint LVAR_INT task_state LVAR_INT he1_weaponaimed LVAR_INT he1_g1aim LVAR_INT he1_g2aim LVAR_INT he1_g3aim LVAR_INT he1_level3 //cutscene skippers LVAR_INT he1_wuzi LVAR_INT he1_wuzicar LVAR_INT he1_wuzidriver LVAR_INT he1_finalskip LVAR_INT he1_finalsequence LVAR_INT he1_playerseq LVAR_INT he1_collisionfix LVAR_INT he1_evacuation LVAR_INT he1_locateprompt LVAR_INT he1_airconfix LVAR_INT he1_by1hit he1_by2hit he1_by3hit he1_by4hit LVAR_INT he1_beenkickedout LVAR_INT he1_reservefrenzy LVAR_INT he1_convofix //Dialogue and audio variables LVAR_INT he1_dialogue he1_audio_char LVAR_INT he1_text_timer_diff he1_text_timer_end he1_text_timer_start LVAR_TEXT_LABEL he1_text[24] LVAR_INT he1_audio[24] he1_audio_slot he1_alt_slot he1_counter he1_ahead_counter he1_audio_playing he1_audio_underway LVAR_INT he1_convo_underway he1_convo_counter he1_random //he1_leftcar_counter he1_backcar_counter he1_ganghire_counter //LVAR_INT he1_driveby_counter he1_cut_counter LVAR_INT sfx_aircon sfx_bankfire LVAR_INT light_object light_onflag LVAR_FLOAT lightX lightY lightZ LVAR_INT light_oldhours light_oldmins LVAR_INT he1_wantedfix // **************************************** Mission Start ********************************** mission_start_heist1: REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT HEIST1 flag_player_on_mission = 1 disable_mod_garage = 1 //SET_CHAR_AMMO scplayer WEAPONTYPE_CAMERA 0 light_onflag = 0 WAIT 0 // ****************************************START OF CUTSCENE******************************** SET_AREA_VISIBLE 10 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2016.4222 1017.1024 10.0 //TRIAD CASINO SET_CHAR_COORDINATES scplayer 2026.2247 1007.4234 9.8203 SET_CHAR_HEADING scplayer 307.0 //SET_CHAR_COORDINATES scplayer 2024.8704 1008.6201 9.8127 //SET_CHAR_HEADING scplayer 342.8127 GET_TIME_OF_DAY light_oldhours light_oldmins SET_TIME_OF_DAY 00 00 // Midnight SET_DARKNESS_EFFECT TRUE -1 light_onflag = 0 LOAD_CUTSCENE HEIST1a WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE cs_time = 0 FORCE_WEATHER_NOW WEATHER_RAINY_COUNTRYSIDE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 GET_CUTSCENE_TIME cs_time IF light_onflag = 0 IF cs_time > 12666 light_onflag = 1 FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_VEGAS SET_TIME_OF_DAY 12 00 // Midday SET_DARKNESS_EFFECT FALSE -1 //CREATE_OBJECT TriMainLite 1891.899 1018.516 34.685 light_object // CREATE_OBJECT st_arch_plan 1891.899 1018.516 34.685 light_object // WRITE_DEBUG switched_on /* IF DOES_OBJECT_EXIST trimainlite WRITE_DEBUG switched_on GET_OBJECT_COORDINATES trimainlite lightX lightY lightZ SET_OBJECT_COORDINATES trimainlite lightX lightY 1.98 ENDIF */ ENDIF ENDIF IF light_onflag = 1 IF cs_time > 46000 light_onflag = 99 FORCE_WEATHER_NOW WEATHER_RAINY_COUNTRYSIDE SET_TIME_OF_DAY 00 00 SET_DARKNESS_EFFECT TRUE -1 // IF DOES_OBJECT_EXIST light_object //DELETE_OBJECT light_object // WRITE_DEBUG switched_off // ENDIF /* IF DOES_OBJECT_EXIST trimainlite WRITE_DEBUG switched_off GET_OBJECT_COORDINATES trimainlite lightX lightY lightZ SET_OBJECT_COORDINATES trimainlite lightX lightY 30.98 ENDIF */ ENDIF ENDIF ENDWHILE //CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE FORCE_WEATHER_NOW WEATHER_CLOUDY_VEGAS RELEASE_WEATHER SET_DARKNESS_EFFECT FALSE -1 SET_AREA_VISIBLE 0 LOAD_SCENE 2031.1681 1030.9177 9.8130 //SET_PLAYER_CONTROL player1 ON // ****************************************END OF CUTSCENE********************************** WAIT 0 //LOAD_MISSION_TEXT HEIST1 SET_FADING_COLOUR 0 0 0 SET_TIME_OF_DAY light_oldhours light_oldmins SET_DARKNESS_EFFECT FALSE -1 RELEASE_WEATHER //WAIT 500 //DO_FADE 1000 FADE_IN // request models REQUEST_MODEL CAMERA REQUEST_MODEL COLT45 REQUEST_MODEL CHROMEGUN REQUEST_MODEL OMYRI REQUEST_MODEL BFYRI REQUEST_MODEL OFOST //REQUEST_MODEL bravura //REQUEST_MODEL JOURNEY //REQUEST_MODEL FIRETRUK REQUEST_MODEL wmosci REQUEST_MODEL wmybu REQUEST_MODEL bmybu REQUEST_MODEL wmysgrd REQUEST_MODEL OMORI REQUEST_MODEL OMOST //REQUEST_ANIMATION CAMCREW REQUEST_ANIMATION CAMERA LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED OMYRI OR NOT HAS_MODEL_LOADED BFYRI OR NOT HAS_MODEL_LOADED OFOST WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED CHROMEGUN OR NOT HAS_MODEL_LOADED CAMERA WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED wmosci OR NOT HAS_MODEL_LOADED wmybu OR NOT HAS_MODEL_LOADED bmybu OR NOT HAS_MODEL_LOADED wmysgrd WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED OMOST OR NOT HAS_MODEL_LOADED OMORI OR NOT HAS_ANIMATION_LOADED CAMERA WAIT 0 ENDWHILE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_WEAK he1_touristdm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY he1_emptydm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH he1_guarddm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_WEAK he1_civdm LOAD_SCENE 2031.1681 1030.9177 9.8130 REQUEST_COLLISION 2031.1681 1030.9177 //9.8130 //SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2016.4222 1017.1024 10.0 //TRIAD CASINO //SET_CHAR_COORDINATES scplayer 2024.8704 1008.6201 9.8127 //SET_CHAR_HEADING scplayer 342.8127 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT WAIT 2000 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON // ************************************ Declare Variables ********************************* //flags he1_doorsound = 0 he1_beenkickedout = 0 he1_reservefrenzy = 0 he1_convofix = 0 he1_checkchat = 0 he1_progress = 0 he1_touristfrenzy = 0 he1_cameraprompt = 0 he1_failconditions = 0 he1_inbuilding = 0 he1_hideweaponcheck = 0 he1_playerwarned = 0 he1_attractattention = 0 he1_plansphotographed = 0 he1_ctskipfireneeded = 0 he1_ctskipsnitchneeded = 0 he1_cameracheck = 0 he1_conversationOK = 0 he1_tempcount = 0 he1_vdam1 = 0 he1_vdam2 = 0 he1_scratch = 0 he1_byroute1 = 0 he1_byroute2 = 0 he1_byroute3 = 0 he1_firescreated = 0 he1_smokebegun = 0 he1_camtog = 0 he1_stairprompt = 0 he1_cameracollected = 0 he1_level3 = 0 he1_finalsequence = 0 he1_finalskip = 0 he1_collisionfix = 0 he1_evacuation = 0 he1_tempint = 0 he1_locateprompt = 0 he1_by1hit = 0 he1_by2hit = 0 he1_by3hit = 0 he1_by4hit = 0 he1_airconfix = 0 he1_wantedfix = 0 // ---- Dialogue and Audio Flags he1_audio_slot = 1 he1_alt_slot = 2 he1_counter = 0 he1_ahead_counter = 1 he1_audio_playing = 0 he1_audio_underway = 0 sfx_aircon = 0 sfx_bankfire = 0 //Dialogue text // tourist banter $he1_text[1] = HE1_AG//What's your beef, man? $he1_text[2] = HE1_AH//Why are you persecuting us? $he1_text[3] = HE1_AI//You some crazy idiot or something? $he1_text[4] = HE1_AJ//We'll see what the cops have to say! $he1_text[5] = HE1_AK//I'm going straight to the cops! $he1_text[6] = HE1_AL//The cops won't let you get away with this! // guard shit. $he1_text[7] = HE1_ZA//Put that weapon away sir! This is a public building! $he1_text[8] = HE1_ZB//Thank you for your cooperation, sir. $he1_text[9] = HE1_ZC//This is your final warning, sir, put the weapon away! $he1_text[10] = HE1_ZD//I'm sorry, sir, cameras are prohibited in this area. $he1_text[11] = HE1_ZE//You are not allowed to make any copies of plans, sir! $he1_text[12] = HEX2b//Does sir understand? $he1_text[13] = HE1_ZG//Everybody out, this is not a drill! $he1_text[14] = HE1_ZH//That includes you, sir! $he1_text[15] = HE1_ZJ//Where are those damn firemen? $he1_text[16] = HE1_ZK//Hey you, stop right there! $he1_text[17] = HE1_ZL//This is security, don't make me shoot! $he1_text[18] = HE1_ZM//I have a visual on the suspect, get to my position! $he1_text[19] = HE1_XA//Get this film developed for Woozie. $he1_text[20] = HE1_XB//Will do, CJ! Good work! $he1_text[21] = HEX3//Seeing as //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //conversation shit with receptionist needs to go in here to!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //Dialogue audio // tourist banter $he1_audio[1] = SOUND_HE1_AG//What's your beef, man? $he1_audio[2] = SOUND_HE1_AH//Why are you persecuting us? $he1_audio[3] = SOUND_HE1_AI//You some crazy idiot or something? $he1_audio[4] = SOUND_HE1_AJ//We'll see what the cops have to say! $he1_audio[5] = SOUND_HE1_AK//I'm going straight to the cops! $he1_audio[6] = SOUND_HE1_AL//The cops won't let you get away with this! // guard shit. $he1_audio[7] = SOUND_HE1_ZA//Put that weapon away sir! This is a public building! $he1_audio[8] = SOUND_HE1_ZB//Thank you for your cooperation, sir. $he1_audio[9] = SOUND_HE1_ZC//This is your final warning, sir, put the weapon away! $he1_audio[10] = SOUND_HE1_ZD//I'm sorry, sir, cameras are prohibited in this area. $he1_audio[11] = SOUND_HE1_ZE//You are not allowed to make any copies of plans, sir! $he1_audio[12] = SOUND_HEIX2b//Does sir understand? $he1_audio[13] = SOUND_HE1_ZG//Everybody out, this is not a drill! $he1_audio[14] = SOUND_HE1_ZH//That includes you, sir! $he1_audio[15] = SOUND_HE1_ZJ//Where are those damn firemen? $he1_audio[16] = SOUND_HE1_ZK//Hey you, stop right there! $he1_audio[17] = SOUND_HE1_ZL//This is security, don't make me shoot! $he1_audio[18] = SOUND_HE1_ZM//I have a visual on the suspect, get to my position! $he1_audio[19] = SOUND_HE1_XA//Get this film developed for Woozie. $he1_audio[20] = SOUND_HE1_XB//Will do, CJ! Good work! $he1_audio[21] = SOUND_HEIX3//Seeing as you're walking... // **************************************************************************************** //debug coords which start player in the vegas suburbs //SET_CHAR_COORDINATES scplayer 2020.4745 1503.8214 9.8203 //GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_SHOTGUN 2000 //debug /* CREATE_CHAR PEDTYPE_MISSION1 wmybu 376.9717 192.0647 1013.1797 he1_snitch SET_CHAR_HEADING he1_snitch 266.7879 CREATE_CHAR PEDTYPE_MISSION1 wmybu 377.2169 190.7318 1013.1797 he1_copconv SET_CHAR_HEADING he1_copconv 19.7879 CREATE_CHAR PEDTYPE_MISSION1 wmybu 377.9352 192.4556 1013.1797 he1_fireconv SET_CHAR_HEADING he1_fireconv 124.31 */ CREATE_OBJECT st_arch_plan 346.7 164.98 1026.80 he1_plans SET_OBJECT_ROTATION he1_plans 90.0 0.0 0.0 //CREATE_OBJECT_NO_OFFSET trdcsgrgdoor_lvs 1903.383 967.82 11.438 fourdragons_door // Safe room door SET_OBJECT_COLLISION fourdragons_door TRUE //SET_OBJECT_HEADING fourdragons_door 0.0 //START_SCRIPT_FIRE 2418.7366 1109.1472 9.8203 1 1 he1_scriptfire3 /* CREATE_CHAR PEDTYPE_CIVMALE wmosci 2376.9155 1112.3081 9.8130 he1_recept2 SET_CHAR_HEADING he1_recept2 259.367 CREATE_CHAR PEDTYPE_CIVMALE OMYRI 2380.7634 1111.9441 9.8130 he1_bystander1 SET_CHAR_HEADING he1_bystander1 104.1132 CREATE_CHAR PEDTYPE_CIVMALE wmybu 2381.1633 1135.5160 9.8130 he1_bystander2 SET_CHAR_HEADING he1_bystander2 266.3662 CREATE_CHAR PEDTYPE_CIVMALE bmybu 2382.5266 1136.5194 9.8130 he1_bystander3 SET_CHAR_HEADING he1_bystander3 111.3662 */ //SWITCH_PED_ROADS_ON 1996.4890 1519.1196 10.0625 2003.8010 1565.6416 17.3672 //SWITCH_PED_ROADS_ON 2001.2888 1532.2842 8.0 2027.0776 1553.2673 13.0 CREATE_CHAR PEDTYPE_MISSION1 OMOST 2024.2596 1525.7867 9.8203 he1_tourist1 SET_CHAR_DECISION_MAKER he1_tourist1 he1_touristdm CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE he1_touristdm EVENT_DAMAGE SET_CHAR_HEADING he1_tourist1 287.789 IF NOT IS_CHAR_DEAD he1_tourist1 //GIVE_WEAPON_TO_CHAR he1_tourist1 WEAPONTYPE_CAMERA 30000 //SWITCH_WIDESCREEN ON ENDIF CREATE_CHAR PEDTYPE_MISSION1 OMORI 2022.3398 1529.5588 9.8196 he1_tourist2 SET_CHAR_DECISION_MAKER he1_tourist2 he1_touristdm //CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE he1_touristdm EVENT_DAMAGE SET_CHAR_HEADING he1_tourist2 223.9212 CREATE_CHAR PEDTYPE_MISSION1 OMYRI 2026.0924 1530.4283 9.8203 he1_tourist3 SET_CHAR_DECISION_MAKER he1_tourist3 he1_touristdm SET_CHAR_ALLOWED_TO_DUCK he1_tourist3 FALSE SET_CHAR_HEADING he1_tourist3 129.789 //TASK_STAY_IN_SAME_PLACE he1_tourist3 TRUE IF NOT IS_CHAR_DEAD he1_tourist3 GIVE_WEAPON_TO_CHAR he1_tourist3 WEAPONTYPE_CAMERA 30000 TASK_KILL_CHAR_ON_FOOT he1_tourist3 he1_tourist1 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD he1_tourist3 FALSE SET_CHAR_DROWNS_IN_WATER he1_tourist3 FALSE ENDIF CREATE_CHAR PEDTYPE_MISSION1 OMORI 2017.9242 1536.1079 9.8228 he1_tourist4 SET_CHAR_DECISION_MAKER he1_tourist4 he1_touristdm SET_CHAR_ALLOWED_TO_DUCK he1_tourist3 FALSE SET_CHAR_HEADING he1_tourist4 170.9212 CREATE_CHAR PEDTYPE_MISSION1 OMYRI 2017.7075 1535.1272 9.8250 he1_tourist5 SET_CHAR_DECISION_MAKER he1_tourist5 he1_touristdm SET_CHAR_HEADING he1_tourist5 11.9212 IF NOT IS_CHAR_DEAD he1_tourist4 IF NOT IS_CHAR_DEAD he1_tourist5 DISABLE_CHAR_SPEECH he1_tourist4 FALSE DISABLE_CHAR_SPEECH he1_tourist5 FALSE TASK_CHAT_WITH_CHAR he1_tourist4 he1_tourist5 true true //ped0 will lead the chatting TASK_CHAT_WITH_CHAR he1_tourist5 he1_tourist4 false true //ped1 will follow ped0 at chatting ENDIF ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED OMOST MARK_MODEL_AS_NO_LONGER_NEEDED OMYRI MARK_MODEL_AS_NO_LONGER_NEEDED OMORI // Should put tourists in array, hacked in for quickness. IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_CAMERA ADD_BLIP_FOR_CHAR he1_tourist1 he1_touristB[1] CHANGE_BLIP_SCALE he1_touristB[1] 1 ADD_BLIP_FOR_CHAR he1_tourist2 he1_touristB[2] CHANGE_BLIP_SCALE he1_touristB[2] 1 ADD_BLIP_FOR_CHAR he1_tourist3 he1_touristB[3] ADD_BLIP_FOR_CHAR he1_tourist4 he1_touristB[4] CHANGE_BLIP_SCALE he1_touristB[4] 1 ADD_BLIP_FOR_CHAR he1_tourist5 he1_touristB[5] CHANGE_BLIP_SCALE he1_touristB[5] 1 ENDIF he1_tempint = 1 //WHILE he1_tempint < 6 // CHANGE_BLIP_SCALE he1_touristB[he1_tempint] 2 // he1_tempint ++ //ENDWHILE //CHANGE_BLIP_COLOUR he1_cameraB GREEN //PRINT_NOW HEI1_33 6000 1 //WAIT 6000 //CLEAR_PRINTS //WAIT 1000 IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_CAMERA PRINT_NOW HEI1_41 10000 1 ENDIF //CREATE_OBJECT_NO_OFFSET kmb_lockeddoor 350.4434 160.3806 1024.7812 he1_doorL //SET_OBJECT_ROTATION he1_doorL 0.0 0.0 180.0 //FREEZE_OBJECT_POSITION he1_doorL TRUE CREATE_OBJECT_NO_OFFSET Gen_doorINT01 371.2516 166.6324 1007.3595 he1_doorL SET_OBJECT_ROTATION he1_doorL 0.0 0.0 0.0 FREEZE_OBJECT_POSITION he1_doorL TRUE // This one is the locked one. /* CREATE_OBJECT_NO_OFFSET Gen_doorINT01 350.5016 163.4424 1024.7695 he1_doorR SET_OBJECT_ROTATION he1_doorR 0.0 0.0 270.0 FREEZE_OBJECT_POSITION he1_doorR TRUE */ //CREATE_OBJECT_NO_OFFSET kmb_lockeddoor 350.4434 163.3706 1024.7812 he1_doorR //SET_OBJECT_ROTATION he1_doorR 0.0 0.0 180.0 //FREEZE_OBJECT_POSITION he1_doorR TRUE CREATE_OBJECT kmb_lockeddoor 370.8048 179.0889 1018.9576 he1_doorpop1 SET_OBJECT_HEADING he1_doorpop1 88.5679 CREATE_OBJECT Gen_doorINT01 368.8954 161.5299 1013.2742 he1_doorpop2 SET_OBJECT_ROTATION he1_doorpop2 0.0 0.0 90.0 LOCK_DOOR he1_doorpop2 TRUE //CREATE_OBJECT Gen_doorINT01 372.3979 166.6150 1007.3906 he1_stairdoor //SET_OBJECT_HEADING he1_stairdoor 45.0543 //FREEZE_OBJECT_POSITION he1_stairdoor TRUE /* CREATE_CHAR PEDTYPE_CIVMALE wmybu 359.5052 160.2184 1007.3906 he1_pop1 FLUSH_ROUTE EXTEND_ROUTE 367.3111 168.4707 1007.3906 EXTEND_ROUTE 366.9487 215.3946 1007.3906 EXTEND_ROUTE 366.4571 196.9371 1007.3906 EXTEND_ROUTE 366.3924 168.5011 1007.3906 EXTEND_ROUTE 358.3032 159.0456 1007.3906 TASK_FOLLOW_POINT_ROUTE he1_pop1 PEDMOVE_WALK FOLLOW_ROUTE_LOOP SET_FOLLOW_NODE_THRESHOLD_DISTANCE he1_pop1 150.0 */ SET_MAX_FIRE_GENERATIONS 1 he1_progress = 1 //reinstate for proper game flow //debug game flow which cuts out photographer bollocks /* he1_progress = 5 REMOVE_BLIP he1_cameraB ADD_BLIP_FOR_COORD 2414.8115 1124.4351 9.8130 he1_officesB SET_CHAR_COORDINATES scplayer 2419.7588 1125.2191 9.8047 CREATE_CHAR PEDTYPE_CIVFEMALE BFYRI 359.5017 174.3209 1007.3906 he1_recept1 SET_CHAR_HEADING he1_recept1 278.367 CREATE_CHAR PEDTYPE_MISSION1 wmysgrd 365.3421 188.8672 1007.3906 he1_guard1 SET_CHAR_HEADING he1_guard1 172.9746 SET_CHAR_DECISION_MAKER he1_guard1 he1_emptydm GIVE_WEAPON_TO_CHAR he1_guard1 WEAPONTYPE_PISTOL 30000 CREATE_CHAR PEDTYPE_MISSION1 wmysgrd 376.3221 170.1705 1007.3978 he1_guard2 SET_CHAR_HEADING he1_guard2 314.7879 SET_CHAR_DECISION_MAKER he1_guard2 he1_emptydm GIVE_WEAPON_TO_CHAR he1_guard2 WEAPONTYPE_PISTOL 30000 CREATE_CHAR PEDTYPE_MISSION1 wmysgrd 351.5390 160.6777 1024.7812 he1_guard3 SET_CHAR_HEADING he1_guard3 0.7879 SET_CHAR_DECISION_MAKER he1_guard3 he1_emptydm GIVE_WEAPON_TO_CHAR he1_guard3 WEAPONTYPE_PISTOL 30000 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_CAMERA 20000 */ //debug game flow which cuts out photographer bollocks //he1_counter = 12 heist1_main_mission_loop: WAIT 0 //---- load and play audio bank. IF sfx_bankfire = 1 //WRITE_DEBUG fire CLEAR_MISSION_AUDIO 3 LOAD_MISSION_AUDIO 3 SOUND_OFFICE_FIRE_ALARM /* WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE */ sfx_bankfire = 2 ENDIF IF sfx_bankfire = 2 IF HAS_MISSION_AUDIO_LOADED 3 //WRITE_DEBUG fire2 PLAY_MISSION_AUDIO 3 sfx_bankfire = 3 ENDIF ENDIF // ---- Load & Play Dialogue... IF NOT he1_counter = 0 IF he1_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED he1_alt_slot CLEAR_MISSION_AUDIO he1_alt_slot ENDIF he1_audio_playing = 1 he1_audio_underway = 1 ENDIF IF he1_audio_playing = 1 LOAD_MISSION_AUDIO he1_audio_slot he1_audio[he1_counter] //GOSUB he1_dialogue_pos //ATTACH_MISSION_AUDIO_TO_PED he1_audio_slot he1_audio_char he1_audio_playing = 2 ENDIF IF he1_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED he1_audio_slot PLAY_MISSION_AUDIO he1_audio_slot PRINT_NOW $he1_text[he1_counter] 10000 1 he1_audio_playing = 3 ENDIF ENDIF IF he1_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED he1_audio_slot CLEAR_THIS_PRINT $he1_text[he1_counter] IF he1_audio_slot = 1 he1_audio_slot = 2 he1_alt_slot = 1 ELSE he1_audio_slot = 1 he1_alt_slot = 2 ENDIF he1_counter = 0 he1_audio_playing = 0 he1_audio_underway = 0 // okay to cue up next piece of convo text ELSE IF NOT HAS_MISSION_AUDIO_LOADED he1_alt_slot IF he1_counter < 18 he1_ahead_counter = he1_counter + 1 LOAD_MISSION_AUDIO he1_alt_slot he1_audio[he1_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF // End of dialogue loader / player IF he1_progress < 35 CLEAR_AREA 362.2167 174.5354 1007.3984 1000.0 FALSE ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_heist1_passed ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_C he1_finalsequence = 9 he1_plansphotographed = 11 he1_progress = -13 he1_failconditions = -13 he1_inbuilding = -13 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_O CLEAR_AREA 2419.8269 1120.7850 9.8203 0.5 0 LOAD_SCENE 2419.8269 1120.7850 9.8203 SET_CHAR_COORDINATES scplayer 2419.8269 1120.7850 9.8203 SET_CHAR_HEADING scplayer 0.0 SET_CAMERA_BEHIND_PLAYER ENDIF IF he1_ctskipfireneeded = 1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED he1_progress = 55 ENDIF ENDIF IF he1_ctskipsnitchneeded = 1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED he1_plansphotographed = 5 ENDIF ENDIF IF he1_ctskipcameraneeded = 1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED he1_cameracheck = 4 ENDIF ENDIF IF he1_finalskip = 1 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED WHILE IS_SKIP_CUTSCENE_BUTTON_PRESSED WAIT 0 ENDWHILE he1_finalsequence = 40 he1_finalskip = 0 ENDIF ENDIF /* IF he1_firescreated = 0 CREATE_FX_SYSTEM_ON_CHAR teargas scplayer 0.0 0.0 2.0 TRUE he1_smoke1 CREATE_FX_SYSTEM_ON_CHAR teargas scplayer 0.0 2.0 1.8 TRUE he1_smoke2 CREATE_FX_SYSTEM_ON_CHAR teargas scplayer 0.0 -2.0 2.0 TRUE he1_smoke3 CREATE_FX_SYSTEM_ON_CHAR teargas scplayer 0.0 5.0 2.0 TRUE he1_smoke4 CREATE_FX_SYSTEM_ON_CHAR teargas scplayer 0.0 8.0 1.8 TRUE he1_smoke5 CREATE_FX_SYSTEM_ON_CHAR teargas scplayer 2.0 0.0 1.5 TRUE he1_smoke6 CREATE_FX_SYSTEM_ON_CHAR teargas scplayer -2.0 0.0 1.5 TRUE he1_smoke7 PLAY_FX_SYSTEM he1_smoke1 PLAY_FX_SYSTEM he1_smoke2 PLAY_FX_SYSTEM he1_smoke3 PLAY_FX_SYSTEM he1_smoke4 PLAY_FX_SYSTEM he1_smoke5 PLAY_FX_SYSTEM he1_smoke6 PLAY_FX_SYSTEM he1_smoke7 he1_firescreated = 1 ENDIF */ //CLEAR_PRINTS //PRINT_NOW HEIC1 10000 1 IF he1_progress = 1 //PLAY_FX_SYSTEM he1_smoke1 /* IF he1_camtog = 0 IF NOT IS_CHAR_DEAD he1_tourist1 IF NOT IS_CHAR_DEAD he1_tourist2 TASK_GO_STRAIGHT_TO_COORD he1_tourist1 2014.5480 1533.3390 9.8203 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD he1_tourist2 2014.5480 1533.3390 9.8203 PEDMOVE_WALK -2 he1_camtog = 1 ENDIF ENDIF ENDIF IF he1_camtog = 1 IF NOT IS_CHAR_DEAD he1_tourist1 IF NOT IS_CHAR_DEAD he1_tourist2 IF LOCATE_CHAR_ANY_MEANS_3D he1_tourist1 2014.5480 1533.3390 9.8203 1.5 1.5 3.0 FALSE TASK_GO_STRAIGHT_TO_COORD he1_tourist1 2015.6520 1535.1721 9.8203 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD he1_tourist2 2023.6520 1549.1721 9.8203 PEDMOVE_WALK -2 he1_camtog = 2 ENDIF ENDIF ENDIF ENDIF IF he1_camtog = 2 IF NOT IS_CHAR_DEAD he1_tourist1 IF NOT IS_CHAR_DEAD he1_tourist2 IF LOCATE_CHAR_ANY_MEANS_3D he1_tourist1 2023.6520 1549.1721 9.8203 1.5 1.5 3.0 FALSE TASK_GO_STRAIGHT_TO_COORD he1_tourist1 2027.4883 1531.5402 9.8203 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD he1_tourist2 2027.4883 1531.5402 9.8203 PEDMOVE_WALK -2 he1_camtog = 3 ENDIF ENDIF ENDIF ENDIF IF he1_camtog = 3 IF NOT IS_CHAR_DEAD he1_tourist1 IF NOT IS_CHAR_DEAD he1_tourist2 IF LOCATE_CHAR_ANY_MEANS_3D he1_tourist1 2027.4883 1531.5402 9.8203 1.5 1.5 3.0 FALSE TASK_GO_STRAIGHT_TO_COORD he1_tourist1 2032.3790 1505.9111 9.8129 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD he1_tourist2 2032.3790 1505.9111 9.8129 PEDMOVE_WALK -2 he1_camtog = 0 ENDIF ENDIF ENDIF ENDIF */ IF he1_touristfrenzy = 0 IF IS_CHAR_DEAD he1_tourist1 REMOVE_BLIP he1_touristB[1] ENDIF IF IS_CHAR_DEAD he1_tourist2 REMOVE_BLIP he1_touristB[5] ENDIF IF IS_CHAR_DEAD he1_tourist5 REMOVE_BLIP he1_touristB[5] ENDIF IF he1_touristsnap = 0 IF TIMERA > 2000 IF NOT IS_CHAR_DEAD he1_tourist1 IF NOT IS_CHAR_DEAD he1_tourist3 IF NOT IS_CHAR_IN_WATER he1_tourist3 CLEAR_CHAR_TASKS he1_tourist3 CLEAR_CHAR_TASKS he1_tourist1 TASK_TURN_CHAR_TO_FACE_CHAR he1_tourist3 he1_tourist1 TASK_TURN_CHAR_TO_FACE_CHAR he1_tourist1 he1_tourist3 // CLEAR_CHAR_TASKS he1_tourist3 //anim goes here // TASK_PLAY_ANIM he1_tourist3 picstnd_take CAMERA 8.0 FALSE FALSE FALSE TRUE -1 //GET_CHAR_COORDINATES he1_tourist3 effectX effectY effectZ //REPORT_MISSION_AUDIO_EVENT_AT_POSITION effectX effectY effectZ SOUND_CAMERA_SHOT TIMERA = 0 he1_touristsnap = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF he1_touristsnap = 1 IF TIMERA > 2000 IF NOT IS_CHAR_DEAD he1_tourist3 IF NOT IS_CHAR_IN_WATER he1_tourist3 CLEAR_CHAR_TASKS he1_tourist3 //anim goes here TASK_PLAY_ANIM he1_tourist3 picstnd_take CAMERA 8.0 FALSE FALSE FALSE TRUE -1 GET_CHAR_COORDINATES he1_tourist3 effectX effectY effectZ REPORT_MISSION_AUDIO_EVENT_AT_POSITION effectX effectY effectZ SOUND_CAMERA_SHOT TIMERA = 0 he1_touristsnap = 2 ENDIF ENDIF ENDIF ENDIF IF he1_touristsnap = 2 IF TIMERA > 1000 IF NOT IS_CHAR_DEAD he1_tourist2 IF NOT IS_CHAR_DEAD he1_tourist3 IF NOT IS_CHAR_IN_WATER he1_tourist3 CLEAR_CHAR_TASKS he1_tourist3 CLEAR_CHAR_TASKS he1_tourist2 TASK_TURN_CHAR_TO_FACE_CHAR he1_tourist2 he1_tourist3 TASK_TURN_CHAR_TO_FACE_CHAR he1_tourist3 he1_tourist2 //CLEAR_CHAR_TASKS he1_tourist3 //anim goes here // TASK_PLAY_ANIM he1_tourist3 picstnd_take CAMERA 8.0 FALSE FALSE FALSE TRUE -1 //GET_CHAR_COORDINATES he1_tourist3 effectX effectY effectZ // REPORT_MISSION_AUDIO_EVENT_AT_POSITION effectX effectY effectZ SOUND_CAMERA_SHOT TIMERA = 0 he1_touristsnap = 3 ENDIF ENDIF ENDIF ENDIF ENDIF IF he1_touristsnap = 3 IF TIMERA > 1000 IF NOT IS_CHAR_DEAD he1_tourist3 IF NOT IS_CHAR_IN_WATER he1_tourist3 CLEAR_CHAR_TASKS he1_tourist3 //anim goes here TASK_PLAY_ANIM he1_tourist3 piccrch_take CAMERA 8.0 FALSE FALSE FALSE TRUE -1 GET_CHAR_COORDINATES he1_tourist3 effectX effectY effectZ REPORT_MISSION_AUDIO_EVENT_AT_POSITION effectX effectY effectZ SOUND_CAMERA_SHOT TIMERA = 0 he1_touristsnap = 0 ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD he1_tourist4 IF NOT IS_CHAR_DEAD he1_tourist5 GET_SCRIPT_TASK_STATUS he1_tourist4 TASK_CHAT_WITH_CHAR task_state IF task_state = FINISHED_TASK GET_SCRIPT_TASK_STATUS he1_tourist5 TASK_CHAT_WITH_CHAR task_state IF task_state = FINISHED_TASK CLEAR_CHAR_TASKS he1_tourist4 CLEAR_CHAR_TASKS he1_tourist5 // TASK_LOOK_ABOUT he1_pop1 -1 // TASK_LOOK_ABOUT he1_pop2 -1 TASK_CHAT_WITH_CHAR he1_tourist4 he1_tourist5 true true //ped0 will lead the chatting TASK_CHAT_WITH_CHAR he1_tourist5 he1_tourist4 false true //ped1 will follow ped0 at chatting ENDIF ENDIF ENDIF ENDIF IF TIMERB > 4000 IF NOT IS_CHAR_DEAD he1_tourist2 IF NOT IS_CHAR_DEAD he1_tourist3 IF NOT IS_CHAR_DEAD he1_tourist4 CLEAR_CHAR_TASKS he1_tourist2 TASK_TURN_CHAR_TO_FACE_CHAR he1_tourist2 he1_tourist3 //CLEAR_CHAR_TASKS he1_tourist4 // anim goes here //GET_CHAR_COORDINATES he1_tourist4 effectX effectY effectZ //REPORT_MISSION_AUDIO_EVENT_AT_POSITION effectX effectY effectZ SOUND_CAMERA_SHOT TIMERB = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF he1_cameraprompt = 0 IF NOT IS_CHAR_DEAD he1_tourist3 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer he1_tourist3 5.0 5.0 FALSE IF NOT IS_CHAR_DEAD he1_tourist2 CLEAR_CHAR_TASKS he1_tourist2 TASK_LOOK_AT_CHAR he1_tourist2 scplayer 5 //PRINT HEI1_26 4000 1// You take a picture! he1_cameraprompt = 99 ENDIF ENDIF ENDIF ENDIF IF he1_locateprompt = 0 IF NOT IS_CHAR_DEAD he1_tourist3 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer he1_tourist3 35.0 35.0 FALSE CLEAR_PRINTS // he1_counter = 1 //PRINT_NOW HE1_AG 6000 1 //PRINT_NOW HEI1_35 6000 1// take a camera by force he1_locateprompt = 99 ENDIF ENDIF ENDIF /* IF he1_touristfrenzy = 0 IF IS_CHAR_DEAD he1_tourist3 he1_touristfrenzy = 1 ENDIF ENDIF */ IF he1_touristfrenzy = 0 IF DOES_CHAR_EXIST he1_tourist3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_tourist3 scplayer //TASK_STAY_IN_SAME_PLACE he1_tourist3 FALSE CLEAR_PRINTS //WAIT 500 he1_counter = 1 // PRINT_NOW HEI1_32 4000 1 he1_touristfrenzy = 1 ENDIF ENDIF ENDIF IF he1_touristfrenzy = 0 IF DOES_CHAR_EXIST he1_tourist2 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_tourist2 scplayer //WAIT 500 he1_counter = 2 //CLEAR_PRINTS //PRINT_NOW HEI1_32 4000 1 he1_touristfrenzy = 1 ENDIF ENDIF ENDIF IF he1_touristfrenzy = 0 IF DOES_CHAR_EXIST he1_tourist1 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_tourist1 scplayer //WAIT 500 CLEAR_PRINTS he1_counter = 3 //PRINT_NOW HEI1_32 4000 1 he1_touristfrenzy = 1 ENDIF ENDIF ENDIF IF he1_touristfrenzy = 0 IF DOES_CHAR_EXIST he1_tourist4 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_tourist4 scplayer //WAIT 500 CLEAR_PRINTS he1_counter = 4 // PRINT_NOW HEI1_32 4000 1 he1_touristfrenzy = 1 ENDIF ENDIF ENDIF IF he1_touristfrenzy = 0 IF DOES_CHAR_EXIST he1_tourist5 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_tourist5 scplayer //WAIT 500 CLEAR_PRINTS he1_counter = 6 //PRINT_NOW HEI1_32 4000 1 he1_touristfrenzy = 1 ENDIF ENDIF ENDIF IF he1_touristfrenzy = 1 he1_cameraprompt = 99 IF IS_CHAR_DEAD he1_tourist1 REMOVE_BLIP he1_touristB[1] ENDIF IF IS_CHAR_DEAD he1_tourist2 REMOVE_BLIP he1_touristB[2] ENDIF IF IS_CHAR_DEAD he1_tourist4 REMOVE_BLIP he1_touristB[4] ENDIF IF IS_CHAR_DEAD he1_tourist5 REMOVE_BLIP he1_touristB[5] ENDIF IF NOT IS_CHAR_DEAD he1_tourist3 CLEAR_CHAR_TASKS he1_tourist3 TASK_STAY_IN_SAME_PLACE he1_tourist3 FALSE //CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE he1_touristdm EVENT_DAMAGE TASK_SMART_FLEE_CHAR he1_tourist3 scplayer 100.0 -1 //TASK_SMART_FLEE_POINT he1_tourist3 2026.2958 1542.2117 9.8203 100.0 -1 ENDIF IF NOT IS_CHAR_DEAD he1_tourist2 CLEAR_CHAR_TASKS he1_tourist2 TASK_SMART_FLEE_CHAR he1_tourist2 scplayer 100.0 -1 ENDIF IF NOT IS_CHAR_DEAD he1_tourist1 CLEAR_CHAR_TASKS he1_tourist1 TASK_SMART_FLEE_CHAR he1_tourist1 scplayer 100.0 -1 ENDIF IF NOT IS_CHAR_DEAD he1_tourist4 CLEAR_CHAR_TASKS he1_tourist4 DISABLE_CHAR_SPEECH he1_tourist4 TRUE TASK_SMART_FLEE_CHAR he1_tourist4 scplayer 100.0 -1 //TASK_SMART_FLEE_POINT he1_tourist4 2028.1533 1549.3993 9.8283 100.0 -1 ENDIF IF NOT IS_CHAR_DEAD he1_tourist5 CLEAR_CHAR_TASKS he1_tourist5 DISABLE_CHAR_SPEECH he1_tourist5 TRUE TASK_SMART_FLEE_CHAR he1_tourist5 scplayer 100.0 -1 ENDIF REMOVE_ANIMATION CAMERA he1_touristfrenzy = 2 ENDIF IF he1_touristfrenzy = 2 IF IS_CHAR_DEAD he1_tourist1 REMOVE_BLIP he1_touristB[1] ENDIF IF IS_CHAR_DEAD he1_tourist2 REMOVE_BLIP he1_touristB[2] ENDIF IF IS_CHAR_DEAD he1_tourist5 REMOVE_BLIP he1_touristB[5] ENDIF IF IS_CHAR_DEAD he1_tourist4 REMOVE_BLIP he1_touristB[4] ENDIF IF IS_CHAR_DEAD he1_tourist3 IF he1_audio_underway = 0 //REMOVE_BLIP he1_cameraB he1_tempint = 1 WHILE he1_tempint < 6 REMOVE_BLIP he1_touristB[he1_tempint] he1_tempint ++ ENDWHILE CLEAR_PRINTS //SET_CHAR_AMMO he1_tourist3 WEAPONTYPE_CAMERA 0 GET_DEAD_CHAR_PICKUP_COORDS he1_tourist3 he1_camX he1_camY he1_camZ CREATE_PICKUP_WITH_AMMO CAMERA PICKUP_ONCE 20 he1_camX he1_camY he1_camZ he1_cameraP ADD_BLIP_FOR_PICKUP he1_cameraP he1_cameraB CHANGE_BLIP_COLOUR he1_cameraB GREEN he1_counter = 0 CLEAR_PRINTS CLEAR_MISSION_AUDIO he1_alt_slot CLEAR_MISSION_AUDIO he1_audio_slot he1_audio_underway = 0 he1_audio_playing = 0 PRINT_NOW HEI1_39 6000 1 he1_touristfrenzy = 3 ENDIF ENDIF ENDIF /* IF he1_touristfrenzy = 2 IF IS_CHAR_DEAD he1_tourist1 REMOVE_BLIP he1_touristB[1] ENDIF IF IS_CHAR_DEAD he1_tourist2 REMOVE_BLIP he1_touristB[2] ENDIF IF IS_CHAR_DEAD he1_tourist5 REMOVE_BLIP he1_touristB[5] ENDIF IF IS_CHAR_DEAD he1_tourist4 //REMOVE_BLIP he1_cameraB he1_tempint = 1 WHILE he1_tempint < 6 REMOVE_BLIP he1_touristB[he1_tempint] he1_tempint ++ ENDWHILE CLEAR_PRINTS //SET_CHAR_AMMO he1_tourist3 WEAPONTYPE_CAMERA 0 GET_DEAD_CHAR_PICKUP_COORDS he1_tourist4 he1_camX he1_camY he1_camZ CREATE_PICKUP_WITH_AMMO CAMERA PICKUP_ONCE 20 he1_camX he1_camY he1_camZ he1_cameraP ADD_BLIP_FOR_PICKUP he1_cameraP he1_cameraB CHANGE_BLIP_COLOUR he1_cameraB GREEN he1_counter = 0 CLEAR_PRINTS CLEAR_MISSION_AUDIO he1_alt_slot CLEAR_MISSION_AUDIO he1_audio_slot he1_audio_underway = 0 he1_audio_playing = 0 PRINT_NOW HEI1_39 6000 1 he1_touristfrenzy = 3 ENDIF ENDIF */ IF HAS_PICKUP_BEEN_COLLECTED he1_cameraP IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_CAMERA //PRINT_NOW HEI1_40 4000 1 REMOVE_BLIP he1_cameraB he1_cameracollected = 1 CLEAR_PRINTS PRINT_NOW HEI1_40 6000 1 //he1_progress = 5 //Reinstate to facilitate proper gameflow //test conversation stuff he1_progress = 5 he1_hint = 1 TIMERB = 0 //CLEAR_PRINTS //PRINT HEI1_1 6000 1 ADD_BLIP_FOR_COORD 2414.8115 1124.4351 9.8130 he1_officesB // blip for the planning department CHANGE_BLIP_COLOUR he1_officesB YELLOW SWITCH_ENTRY_EXIT paper TRUE //CREATE_PED_GENERATOR 366.4588 173.4304 1007.3978 0.0 wmybu TRUE he1_suitgen //SWITCH_PED_GENERATOR he1_suitgen 110 /* CREATE_CHAR PEDTYPE_CIVFEMALE BFYRI 359.5017 174.3209 1007.3906 he1_recept1 SET_CHAR_HEADING he1_recept1 278.367 SET_CHAR_DECISION_MAKER he1_recept1 he1_emptydm CREATE_CHAR PEDTYPE_MISSION1 wmysgrd 365.3421 188.8672 1007.3906 he1_guard1 SET_CHAR_HEADING he1_guard1 172.9746 SET_CHAR_DECISION_MAKER he1_guard1 he1_emptydm GIVE_WEAPON_TO_CHAR he1_guard1 WEAPONTYPE_PISTOL 30000 CREATE_CHAR PEDTYPE_MISSION1 wmysgrd 376.3221 170.1705 1007.3978 he1_guard2 SET_CHAR_HEADING he1_guard2 314.7879 SET_CHAR_DECISION_MAKER he1_guard2 he1_emptydm GIVE_WEAPON_TO_CHAR he1_guard2 WEAPONTYPE_PISTOL 30000 //351.5772 161.7314 1024.7812 CREATE_CHAR PEDTYPE_MISSION1 wmysgrd 351.6945 160.0155 1024.7888 he1_guard3 SET_CHAR_HEADING he1_guard3 293.7879 SET_CHAR_DECISION_MAKER he1_guard3 he1_emptydm GIVE_WEAPON_TO_CHAR he1_guard3 WEAPONTYPE_PISTOL 30000 CREATE_CHAR PEDTYPE_MISSION1 wmybu 355.1732 172.5407 1024.7812 he1_bystander1 SET_CHAR_HEADING he1_bystander1 259.56 SET_CHAR_DECISION_MAKER he1_bystander1 he1_touristdm CREATE_CHAR PEDTYPE_MISSION1 bmybu 355.8736 172.4779 1024.7812 he1_bystander2 SET_CHAR_HEADING he1_bystander2 80.67 SET_CHAR_DECISION_MAKER he1_bystander2 he1_touristdm CREATE_CHAR PEDTYPE_MISSION1 wmybu 362.3390 155.2859 1024.7812 he1_bystander3 SET_CHAR_HEADING he1_bystander3 178.989 SET_CHAR_DECISION_MAKER he1_bystander3 he1_touristdm TASK_SCRATCH_HEAD he1_bystander3 IF NOT IS_CHAR_DEAD he1_bystander1 IF NOT IS_CHAR_DEAD he1_bystander2 TASK_CHAT_WITH_CHAR he1_bystander1 he1_bystander2 true true //ped0 will lead the chatting TASK_CHAT_WITH_CHAR he1_bystander2 he1_bystander1 false true //ped1 will follow ped0 at chatting ENDIF ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED wmybu MARK_MODEL_AS_NO_LONGER_NEEDED bmybu */ ENDIF ENDIF ENDIF //he1_progress = 1 condition check IF he1_hint = 1 IF TIMERB > 12000 CLEAR_PRINTS PRINT HEI1_1 6000 1 he1_hint = 2 ENDIF ENDIF IF he1_cameracollected = 1 IF he1_plansphotographed = 0 IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_CAMERA PRINT_NOW HEI1_11 6000 1 CREATE_CHAR PEDTYPE_CIVMALE OMYRI 2030.7025 1489.3881 9.8203 he1_camreserve[he1_camindex] TASK_WANDER_STANDARD he1_camreserve[he1_camindex] //GET_RANDOM_CHAR_IN_SPHERE 2034.6597 1563.2098 9.7628 100.0 TRUE FALSE FALSE he1_camreserve[he1_camindex] //IF DOES_CHAR_EXIST he1_camreserve[he1_camindex] ADD_BLIP_FOR_CHAR he1_camreserve[he1_camindex] he1_camreserveB CHANGE_BLIP_COLOUR he1_camreserveB RED GIVE_WEAPON_TO_CHAR he1_camreserve[he1_camindex] WEAPONTYPE_CAMERA 30000 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD he1_camreserve[he1_camindex] FALSE SET_CHAR_DECISION_MAKER he1_camreserve[he1_camindex] he1_touristdm he1_cameracollected = 2 //ENDIF ENDIF ENDIF ENDIF IF he1_cameracollected = 2 IF he1_plansphotographed = 0 IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_CAMERA IF IS_CHAR_DEAD he1_camreserve[he1_camindex] REMOVE_BLIP he1_camreserveB //SET_CHAR_AMMO he1_camreserve[he1_camindex] WEAPONTYPE_CAMERA 0 GET_DEAD_CHAR_PICKUP_COORDS he1_camreserve[he1_camindex] he1_camX he1_camY he1_camZ CREATE_PICKUP_WITH_AMMO CAMERA PICKUP_ONCE 60 he1_camX he1_camY he1_camZ he1_cameraP ADD_BLIP_FOR_PICKUP he1_cameraP he1_camreserveB CHANGE_BLIP_COLOUR he1_camreserveB GREEN MARK_CHAR_AS_NO_LONGER_NEEDED he1_camreserve[he1_camindex] IF he1_camindex < 19 he1_camindex ++ he1_reservefrenzy = 0 ENDIF he1_cameracollected = 3 ENDIF ENDIF IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_CAMERA IF DOES_CHAR_EXIST he1_camreserve[he1_camindex] MARK_CHAR_AS_NO_LONGER_NEEDED he1_camreserve[he1_camindex] IF he1_camindex < 19 he1_camindex ++ he1_reservefrenzy = 0 ENDIF ENDIF REMOVE_BLIP he1_camreserveB he1_cameracollected = 1 ENDIF ENDIF ENDIF IF he1_cameracollected = 3 IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_CAMERA IF HAS_PICKUP_BEEN_COLLECTED he1_cameraP REMOVE_BLIP he1_camreserveB he1_cameracollected = 1 ENDIF ENDIF ENDIF IF he1_reservefrenzy = 0 IF DOES_CHAR_EXIST he1_camreserve[he1_camindex] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_camreserve[he1_camindex] scplayer CLEAR_CHAR_TASKS he1_camreserve[he1_camindex] TASK_SMART_FLEE_CHAR he1_camreserve[he1_camindex] scplayer 100.0 -1 he1_reservefrenzy = 1 ENDIF ENDIF ENDIF //check if player has used all his camera film IF he1_cameracollected > 0 IF he1_plansphotographed = 0 // player hasn't photographed plans IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_CAMERA GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_CAMERA he1_filmremaining IF he1_filmremaining = 0 REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_CAMERA he1_cameracollected = 1 ENDIF ENDIF ENDIF ENDIF //change to array of chars and blips IF he1_progress = 5 // put guys in here IF he1_collisionfix = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2414.8115 1124.4351 9.8130 50.0 50.0 20.0 FALSE CREATE_CHAR PEDTYPE_CIVMALE wmybu 366.2195 178.2328 1007.3984 he1_pop1 DISABLE_CHAR_SPEECH he1_pop1 FALSE SET_CHAR_DECISION_MAKER he1_pop1 he1_touristdm SET_CHAR_HEADING he1_pop1 256.0 // FLUSH_ROUTE // EXTEND_ROUTE 367.3111 168.4707 1007.3906 // EXTEND_ROUTE 366.9487 215.3946 1007.3906 // EXTEND_ROUTE 366.4571 196.9371 1007.3906 // EXTEND_ROUTE 366.3924 168.5011 1007.3906 // EXTEND_ROUTE 358.3032 159.0456 1007.3906 // // TASK_FOLLOW_POINT_ROUTE he1_pop1 PEDMOVE_WALK FOLLOW_ROUTE_LOOP // SET_FOLLOW_NODE_THRESHOLD_DISTANCE he1_pop1 150.0 SET_CHAR_HAS_USED_ENTRY_EXIT he1_pop1 2415.3479 1123.9423 10.0 CREATE_CHAR PEDTYPE_CIVMALE bmybu 367.4051 178.2571 1007.3971 he1_pop2 SET_CHAR_DECISION_MAKER he1_pop2 he1_touristdm DISABLE_CHAR_SPEECH he1_pop2 FALSE SET_CHAR_HEADING he1_pop2 75.0 SET_CHAR_HAS_USED_ENTRY_EXIT he1_pop2 2415.3479 1123.9423 10.0 CREATE_CHAR PEDTYPE_CIVMALE bmybu 336.2050 173.5649 1018.9844 he1_pop3 SET_CHAR_DECISION_MAKER he1_pop3 he1_touristdm DISABLE_CHAR_SPEECH he1_pop3 FALSE SET_CHAR_HEADING he1_pop3 21.0 SET_CHAR_HAS_USED_ENTRY_EXIT he1_pop3 2415.3479 1123.9423 10.0 CREATE_CHAR PEDTYPE_CIVMALE wmybu 335.1483 175.8309 1018.9844 he1_pop4 SET_CHAR_DECISION_MAKER he1_pop4 he1_touristdm DISABLE_CHAR_SPEECH he1_pop4 FALSE SET_CHAR_HEADING he1_pop4 200.0 SET_CHAR_HAS_USED_ENTRY_EXIT he1_pop4 2415.3479 1123.9423 10.0 CREATE_CHAR PEDTYPE_CIVMALE bmybu 347.6199 171.2935 1018.9912 he1_pop5 SET_CHAR_DECISION_MAKER he1_pop5 he1_touristdm DISABLE_CHAR_SPEECH he1_pop5 FALSE SET_CHAR_HEADING he1_pop5 89.0 SET_CHAR_HAS_USED_ENTRY_EXIT he1_pop5 2415.3479 1123.9423 10.0 CREATE_CHAR PEDTYPE_CIVMALE wmybu 347.7367 172.3383 1018.9912 he1_pop6 SET_CHAR_DECISION_MAKER he1_pop6 he1_touristdm DISABLE_CHAR_SPEECH he1_pop6 FALSE SET_CHAR_HEADING he1_pop6 270.0 SET_CHAR_HAS_USED_ENTRY_EXIT he1_pop6 2415.3479 1123.9423 10.0 CREATE_CHAR PEDTYPE_CIVMALE wmybu 360.7583 175.1333 1018.9844 he1_pop7 SET_CHAR_DECISION_MAKER he1_pop7 he1_touristdm DISABLE_CHAR_SPEECH he1_pop7 FALSE SET_CHAR_HEADING he1_pop7 162.0 SET_CHAR_HAS_USED_ENTRY_EXIT he1_pop7 2415.3479 1123.9423 10.0 CREATE_CHAR PEDTYPE_CIVFEMALE BFYRI 361.4531 176.2417 1018.9844 he1_pop8 SET_CHAR_DECISION_MAKER he1_pop8 he1_touristdm SET_CHAR_HEADING he1_pop8 0.0 DISABLE_CHAR_SPEECH he1_pop8 FALSE SET_CHAR_HAS_USED_ENTRY_EXIT he1_pop8 2415.3479 1123.9423 10.0 CREATE_CHAR PEDTYPE_CIVMALE bmybu 359.5063 177.6107 1018.9844 he1_pop9 SET_CHAR_DECISION_MAKER he1_pop9 he1_touristdm SET_CHAR_HEADING he1_pop9 184.0 DISABLE_CHAR_SPEECH he1_pop9 FALSE SET_CHAR_HAS_USED_ENTRY_EXIT he1_pop9 2415.3479 1123.9423 10.0 TASK_SIT_DOWN he1_pop9 500000 //CREATE_CHAR PEDTYPE_CIVFEMALE BFYRI 359.5056 172.7443 1007.3893 he1_recept1 CREATE_CHAR PEDTYPE_CIVFEMALE BFYRI 359.7724 173.5793 1007.3893 he1_recept1 SET_CHAR_HAS_USED_ENTRY_EXIT he1_recept1 2415.3479 1123.9423 10.0 // SET_CHAR_HEADING he1_recept1 278.367 // SET_CHAR_HEADING he1_recept1 320.0 SET_CHAR_HEADING he1_recept1 261.0 SET_CHAR_DECISION_MAKER he1_recept1 he1_emptydm SET_CHAR_NEVER_TARGETTED he1_recept1 TRUE CREATE_CHAR PEDTYPE_MISSION1 wmysgrd 365.3421 188.8672 1007.3906 he1_guard1 SET_CHAR_HEADING he1_guard1 172.9746 SET_CHAR_DECISION_MAKER he1_guard1 he1_emptydm GIVE_WEAPON_TO_CHAR he1_guard1 WEAPONTYPE_PISTOL 30000 SET_CHAR_HAS_USED_ENTRY_EXIT he1_guard1 2415.3479 1123.9423 10.0 CREATE_CHAR PEDTYPE_MISSION1 wmysgrd 376.3221 170.1705 1007.3978 he1_guard2 SET_CHAR_HEADING he1_guard2 314.7879 SET_CHAR_DECISION_MAKER he1_guard2 he1_emptydm GIVE_WEAPON_TO_CHAR he1_guard2 WEAPONTYPE_PISTOL 30000 SET_CHAR_HAS_USED_ENTRY_EXIT he1_guard2 2415.3479 1123.9423 10.0 //351.5772 161.7314 1024.7812 CREATE_CHAR PEDTYPE_MISSION1 wmysgrd 351.8366 163.8015 1024.7863 he1_guard3//351.6945 160.0155 1024.7888 he1_guard3 SET_CHAR_HEADING he1_guard3 239.6//293.7879 SET_CHAR_DECISION_MAKER he1_guard3 he1_emptydm GIVE_WEAPON_TO_CHAR he1_guard3 WEAPONTYPE_PISTOL 30000 SET_CHAR_HAS_USED_ENTRY_EXIT he1_guard3 2415.3479 1123.9423 10.0 CREATE_CHAR PEDTYPE_MISSION1 wmybu 355.1732 172.5407 1024.7812 he1_bystander1 SET_CHAR_HEADING he1_bystander1 259.56 SET_CHAR_DECISION_MAKER he1_bystander1 he1_touristdm SET_CHAR_HAS_USED_ENTRY_EXIT he1_bystander1 2415.3479 1123.9423 10.0 CREATE_CHAR PEDTYPE_MISSION1 bmybu 355.8736 172.4779 1024.7812 he1_bystander2 SET_CHAR_HEADING he1_bystander2 80.67 SET_CHAR_DECISION_MAKER he1_bystander2 he1_touristdm SET_CHAR_HAS_USED_ENTRY_EXIT he1_bystander2 2415.3479 1123.9423 10.0 CREATE_CHAR PEDTYPE_MISSION1 wmybu 362.3390 155.2859 1024.7812 he1_bystander3 SET_CHAR_HEADING he1_bystander3 178.989 SET_CHAR_DECISION_MAKER he1_bystander3 he1_touristdm TASK_SCRATCH_HEAD he1_bystander3 SET_CHAR_HAS_USED_ENTRY_EXIT he1_bystander3 2415.3479 1123.9423 10.0 CREATE_CHAR PEDTYPE_MISSION1 bmybu 362.7949 156.2016 1024.7812 he1_bystander4 SET_CHAR_HEADING he1_bystander4 20.989 SET_CHAR_DECISION_MAKER he1_bystander4 he1_touristdm TASK_SCRATCH_HEAD he1_bystander4 SET_CHAR_HAS_USED_ENTRY_EXIT he1_bystander4 2415.3479 1123.9423 10.0 IF NOT IS_CHAR_DEAD he1_pop1 IF NOT IS_CHAR_DEAD he1_pop2 CLEAR_CHAR_TASKS he1_pop1 CLEAR_CHAR_TASKS he1_pop2 // TASK_LOOK_ABOUT he1_pop1 -1 // TASK_LOOK_ABOUT he1_pop2 -1 TASK_CHAT_WITH_CHAR he1_pop1 he1_pop2 true true //ped0 will lead the chatting TASK_CHAT_WITH_CHAR he1_pop2 he1_pop1 false true //ped1 will follow ped0 at chatting ENDIF ENDIF IF NOT IS_CHAR_DEAD he1_pop3 IF NOT IS_CHAR_DEAD he1_pop4 //TASK_WANDER_COP he1_pop3 //TASK_WANDER_COP he1_pop4 CLEAR_CHAR_TASKS he1_pop3 CLEAR_CHAR_TASKS he1_pop4 //TASK_LOOK_ABOUT he1_pop3 -1 //TASK_LOOK_ABOUT he1_pop4 -1 TASK_CHAT_WITH_CHAR he1_pop3 he1_pop4 true true //ped0 will lead the chatting TASK_CHAT_WITH_CHAR he1_pop4 he1_pop3 false true //ped1 will follow ped0 at chatting ENDIF ENDIF IF NOT IS_CHAR_DEAD he1_pop5 IF NOT IS_CHAR_DEAD he1_pop6 //TASK_WANDER_CRIMINAL he1_pop5 //TASK_WANDER_CRIMINAL he1_pop6 CLEAR_CHAR_TASKS he1_pop5 CLEAR_CHAR_TASKS he1_pop6 // TASK_LOOK_ABOUT he1_pop5 -1 // TASK_LOOK_ABOUT he1_pop6 -1 TASK_CHAT_WITH_CHAR he1_pop5 he1_pop6 true true //ped0 will lead the chatting TASK_CHAT_WITH_CHAR he1_pop6 he1_pop5 false true //ped1 will follow ped0 at chatting ENDIF ENDIF IF NOT IS_CHAR_DEAD he1_bystander1 IF NOT IS_CHAR_DEAD he1_bystander2 CLEAR_CHAR_TASKS he1_bystander1 CLEAR_CHAR_TASKS he1_bystander2 //TASK_LOOK_ABOUT he1_bystander1 -1 //TASK_LOOK_ABOUT he1_bystander2 -1 TASK_CHAT_WITH_CHAR he1_bystander1 he1_bystander2 true true //ped0 will lead the chatting TASK_CHAT_WITH_CHAR he1_bystander2 he1_bystander1 false true //ped1 will follow ped0 at chatting ENDIF ENDIF IF NOT IS_CHAR_DEAD he1_bystander3 IF NOT IS_CHAR_DEAD he1_bystander4 CLEAR_CHAR_TASKS he1_bystander3 CLEAR_CHAR_TASKS he1_bystander4 //TASK_LOOK_ABOUT he1_bystander3 -1 //TASK_LOOK_ABOUT he1_bystander4 -1 TASK_CHAT_WITH_CHAR he1_bystander3 he1_bystander4 true true //ped0 will lead the chatting TASK_CHAT_WITH_CHAR he1_bystander4 he1_bystander3 false true //ped1 will follow ped0 at chatting ENDIF ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED wmybu MARK_MODEL_AS_NO_LONGER_NEEDED bmybu he1_collisionfix = 1 // CREATE_OBJECT cardboardbox 350.1686 191.5514 1018.9844 he1_depbox1 // // CREATE_OBJECT cardboardbox2 348.9597 192.6585 1018.9844 he1_depbox2 // // CREATE_OBJECT cardboardbox 349.0061 191.2924 1018.9844 he1_depbox3 // // CREATE_OBJECT cardboardbox2 379.9210 164.7143 1018.9844 he1_hintbox1 // SET_OBJECT_ROTATION he1_hintbox1 0.0 0.0 268.7768 // // CREATE_OBJECT cardboardbox2 379.0733 164.2609 1018.9844 he1_hintbox2 // SET_OBJECT_ROTATION he1_hintbox2 0.0 0.0 229.0 // // CREATE_OBJECT cardboardbox 379.4728 164.5040 1019.6091 he1_hintbox3 // SET_OBJECT_ROTATION he1_hintbox3 0.0 0.0 123.7622 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 387.2780 173.5760 1007.3906 5.0 5.0 2.0 FALSE he1_progress = 10 // CREATE_PED_GENERATOR 366.4588 173.4304 1007.3978 0.0 wmybu TRUE he1_suitgen //SWITCH_PED_GENERATOR he1_suitgen 100 TIMERA = 0 TIMERB = 0 PRINT_NOW HEI1_9 4000 1 // Remember, this is a civic building //WAIT 4000 he1_failconditions = 1 he1_inbuilding = 1 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2415.3479 1123.9423 10.0 SET_RADAR_ZOOM 95 IF NOT IS_CHAR_DEAD he1_recept1 SET_CHAR_HAS_USED_ENTRY_EXIT he1_recept1 2415.3479 1123.9423 10.0 TASK_SIT_DOWN he1_recept1 500000 REMOVE_BLIP he1_officesB ADD_BLIP_FOR_CHAR he1_recept1 he1_receptB CHANGE_BLIP_COLOUR he1_receptB BLUE ENDIF CHECKPOINT_SAVE 1 ENDIF ENDIF //he1_progress = 5 condition check //Blip fixing IF he1_progress > 5 //Need to check whether or not the player is in the planning department as we will have to fail the mission if he opens //fire before he has started the firedrill. Check whether fire is started and inbuilding condition flags. IF he1_inbuilding = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 387.2780 173.5760 1007.3906 5.0 5.0 2.0 FALSE CLEAR_AREA 362.2167 174.5354 1007.3984 1000.0 FALSE he1_inbuilding = 1 // player in building // HIDE_ALL_FRONTEND_BLIPS TRUE SET_RADAR_ZOOM 95 IF sfx_bankfire > 1 sfx_bankfire = 1 // REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_OFFICE_FIRE_ALARM_START // REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_OFFICE_FIRE_COUGHING_START ENDIF IF he1_progress < 25 REMOVE_BLIP he1_officesB IF NOT IS_CHAR_DEAD he1_recept1 SET_CHAR_HAS_USED_ENTRY_EXIT he1_recept1 2415.3479 1123.9423 10.0 ADD_BLIP_FOR_CHAR he1_recept1 he1_receptB CHANGE_BLIP_COLOUR he1_receptB BLUE ENDIF ENDIF ENDIF ENDIF IF he1_inbuilding = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2415.5999 1123.2400 9.8130 5.0 5.0 2.0 FALSE he1_hideweaponcheck = 0 CLEAR_PRINTS he1_inbuilding = 0 // player outside building //HIDE_ALL_FRONTEND_BLIPS FALSE SET_RADAR_ZOOM 0 IF he1_progress < 25 IF NOT IS_CHAR_DEAD he1_recept1 REMOVE_BLIP he1_receptB ADD_BLIP_FOR_COORD 2414.8115 1124.4351 9.8130 he1_officesB ENDIF ENDIF /* IF he1_progress < 25 IF NOT IS_CHAR_DEAD he1_recept1 REMOVE_BLIP he1_receptB ADD_BLIP_FOR_COORD 2414.8115 1124.4351 9.8130 he1_officesB ENDIF ENDIF */ IF sfx_bankfire > 1 CLEAR_MISSION_AUDIO 3 //REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_OFFICE_FIRE_ALARM_STOP // REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_OFFICE_FIRE_COUGHING_STOP ENDIF ENDIF ENDIF //CREATE_PED_GENERATOR 366.4588 173.4304 1007.3978 0.0 wmybu TRUE he1_suitgen //SWITCH_PED_GENERATOR he1_suitgen 100 ENDIF //test conversation block //When interior works will check if he1_progress = 10 and locate for receptionist not guard3 IF he1_progress = 10 IF NOT IS_CHAR_DEAD he1_recept1 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer he1_recept1 4.0 4.0 FALSE CLEAR_CHAR_TASKS he1_recept1 TASK_TURN_CHAR_TO_FACE_CHAR he1_recept1 scplayer //REMOVE_BLIP he1_receptB // Working below! /* START_SETTING_UP_CONVERSATION he1_recept1 SET_UP_CONVERSATION_NODE HEQ1 HEQ2 HEX1b SET_UP_CONVERSATION_END_NODE HEX1b SET_UP_CONVERSATION_NODE HEQ2 HEQ4 HEX2 SET_UP_CONVERSATION_END_NODE HEQ4 SET_UP_CONVERSATION_NODE HEX2 HEQ4c HEQ5 SET_UP_CONVERSATION_END_NODE HEQ4c SET_UP_CONVERSATION_END_NODE HEQ5 FINISH_SETTING_UP_CONVERSATION */ //Working above! START_SETTING_UP_CONVERSATION he1_recept1 SET_UP_CONVERSATION_NODE_WITH_SCRIPTED_SPEECH HEQ1 HEQ2 HEX1b SOUND_HEIQ1 SOUND_HEIQ1Y SOUND_HEIQ1N SET_UP_CONVERSATION_END_NODE_WITH_SCRIPTED_SPEECH HEX1b SOUND_HEIX1B SET_UP_CONVERSATION_NODE_WITH_SCRIPTED_SPEECH HEQ2 HEQ4 HEX2 SOUND_HEIQ2 SOUND_HEIQ2Y SOUND_HEIQ2N SET_UP_CONVERSATION_END_NODE_WITH_SCRIPTED_SPEECH HEQ4 SOUND_HEIQ4 SET_UP_CONVERSATION_NODE_WITH_SCRIPTED_SPEECH HEX2 HEQ4c HEQ5 SOUND_HEIX2 SOUND_HEIX2Y SOUND_HEIX2N SET_UP_CONVERSATION_END_NODE_WITH_SCRIPTED_SPEECH HEQ4c SOUND_HEIQ4c SET_UP_CONVERSATION_END_NODE_WITH_SCRIPTED_SPEECH HEQ5 SOUND_HEIQ5 FINISH_SETTING_UP_CONVERSATION //SWITCH_WIDESCREEN ON he1_progress = 15 //temp fix /* CLEAR_CONVERSATION CLEAR_HELP REMOVE_BLIP he1_receptB REMOVE_BLIP he1_officesB ADD_BLIP_FOR_COORD 346.9205 165.9382 1024.7812 he1_plansB CHANGE_BLIP_COLOUR he1_plansB YELLOW WRITE_DEBUG_WITH_INT progress he1_progress he1_progress = 25 */ //end of temp fix /* [HEIQ1:HEIST1] Can I help you sir? [HEIQ1Y:HEIST1] ~s~Yes please, I'd like to look at some plans for the Mafia casino. [HEIQ1N:HEIST1] ~r~Erm... no! [HEIQ2:HEIST1] OK sir. You are aware that reproduction of such plans is prohibited? [HEIQ2Y:HEIST1] ~s~Yes, I'm planning on building a scale model for my uncle's birthday. He's keen on blackjack. [HEIQ2N:HEIST1] ~r~No, I didn't know that. Why? [HEIH:HEIST1] Press ~<~ for "No" or ~>~ for "Yes" [HEIH2:HEIST1] Press R1 to restart conversation [HEIQ3:HEIST1] That's lovely sir! The plans for that building are located on the top floor. [HEIX1:HEIST1] I'm rather busy sir. Come to me if you change your mind. [HEIX2:HEIST1] Well, we don't want to be party to preparation of a daring raid on the count room! Does sir understand? [HEIX2Y:HEIST1] ~s~Of course. The owners wouldn't want to take a gamble on that happening! [HEIX2N:HEIST1] ~r~No! I'm some sort of dumbass! I thought I could waltz in and take the plans home to peruse at my leisure! [HEIQ4:HEIST1] Very witty sir. You'll find the plans on the top floor sir. [HEIQ5:HEIST1] I'm sorry sir, I can't make it any clearer. Come back when you've thought it over. */ ENDIF ENDIF ENDIF //end of test conversation block IF he1_progress = 15 /* IF NOT IS_CHAR_DEAD he1_recept1 TASK_CHAT_WITH_CHAR he1_recept1 scplayer true true //ped0 will lead the chatting TASK_CHAT_WITH_CHAR scplayer he1_recept1 false true //ped1 will follow ped0 at chatting ENDIF */ IF NOT IS_CHAR_DEAD he1_recept1 //IF IS_CONVERSATION_AT_NODE he1_recept1 HEIQ1 IF IS_CONVERSATION_AT_NODE he1_recept1 HEQ1 CLEAR_HELP REMOVE_BLIP he1_receptB PRINT_HELP_FOREVER TALK_1 he1_progress = 20 ENDIF ENDIF ENDIF IF he1_progress = 20 IF IS_BUTTON_PRESSED PAD1 DPADLEFT OR IS_BUTTON_PRESSED PAD1 DPADRIGHT CLEAR_HELP ENDIF IF NOT IS_CHAR_DEAD he1_recept1 // IF IS_CONVERSATION_AT_NODE he1_recept1 HEIQ3 IF IS_CONVERSATION_AT_NODE he1_recept1 HEQ4 //CLEAR_CONVERSATION CLEAR_HELP REMOVE_BLIP he1_receptB REMOVE_BLIP he1_officesB //ADD_BLIP_FOR_COORD 346.9205 165.9382 1024.7812 he1_plansB //CHANGE_BLIP_COLOUR he1_plansB YELLOW he1_progress = 24 he1_convofix = 0 //SET_PLAYER_CONTROL player1 ON // RESTORE_CAMERA ENDIF /* IF IS_CONVERSATION_AT_NODE he1_recept1 HEIQ1Y SWITCH_WIDESCREEN ON ENDIF */ //IF IS_CONVERSATION_AT_NODE he1_recept1 HEIQ4 IF IS_CONVERSATION_AT_NODE he1_recept1 HEQ4c //CLEAR_CONVERSATION CLEAR_HELP REMOVE_BLIP he1_receptB REMOVE_BLIP he1_officesB he1_convofix = 0 // ADD_BLIP_FOR_COORD 346.9205 165.9382 1024.7812 he1_plansB //CHANGE_BLIP_COLOUR he1_plansB YELLOW he1_progress = 24 //SET_PLAYER_CONTROL player1 ON //RESTORE_CAMERA ENDIF IF IS_CONVERSATION_AT_NODE he1_recept1 HEX1b // CLEAR_CONVERSATION //WAIT 4000 PRINT_HELP_FOREVER HEIH9 he1_attractattention = 1 he1_progress = 22 he1_convofix = 0 IF NOT IS_CHAR_DEAD he1_recept1 CLEAR_CHAR_TASKS he1_recept1 TASK_SIT_DOWN he1_recept1 10000 ADD_BLIP_FOR_CHAR he1_recept1 he1_receptB CHANGE_BLIP_COLOUR he1_receptB BLUE //SET_PLAYER_CONTROL player1 ON //RESTORE_CAMERA ENDIF ENDIF //IF IS_CONVERSATION_AT_NODE he1_recept1 HEIQ5 IF IS_CONVERSATION_AT_NODE he1_recept1 HEQ5 // CLEAR_CONVERSATION //WAIT 4000 PRINT_HELP_FOREVER HEIH9 he1_attractattention = 1 he1_progress = 22 he1_convofix = 0 IF NOT IS_CHAR_DEAD he1_recept1 CLEAR_CHAR_TASKS he1_recept1 TASK_SIT_DOWN he1_recept1 10000 ADD_BLIP_FOR_CHAR he1_recept1 he1_receptB CHANGE_BLIP_COLOUR he1_receptB BLUE //SET_PLAYER_CONTROL player1 ON //RESTORE_CAMERA ENDIF ENDIF //IF IS_CONVERSATION_AT_NODE he1_recept1 HEIX1 IF IS_CONVERSATION_AT_NODE he1_recept1 HEX1 //CLEAR_CONVERSATION //WAIT 4000 PRINT_HELP_FOREVER HEIH9 he1_attractattention = 1 he1_progress = 22 he1_convofix = 0 IF NOT IS_CHAR_DEAD he1_recept1 CLEAR_CHAR_TASKS he1_recept1 TASK_SIT_DOWN he1_recept1 10000 ADD_BLIP_FOR_CHAR he1_recept1 he1_receptB CHANGE_BLIP_COLOUR he1_receptB BLUE //SET_PLAYER_CONTROL player1 ON //RESTORE_CAMERA ENDIF ENDIF IF he1_convofix = 0 IF IS_CONVERSATION_AT_NODE he1_recept1 HEX2 timera = 0 he1_convofix = 1 ENDIF ENDIF IF he1_convofix = 1 IF timera > 4000 CLEAR_PRINTS //PRINT_NOW HEX2b 3000 1 he1_counter = 12 he1_convofix = 2 ENDIF ENDIF IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer he1_recept1 5.0 5.0 FALSE // CLEAR_CONVERSATION //WAIT 4000 //PRINT_HELP HEIH2 he1_attractattention = 1 he1_progress = 22 IF NOT IS_CHAR_DEAD he1_recept1 CLEAR_CHAR_TASKS he1_recept1 TASK_SIT_DOWN he1_recept1 10000 CLEAR_PRINTS CLEAR_HELP //PRINT_NOW HEIX3 4000 1 //PRINT_NOW HEX3 4000 1 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 he1_counter = 21 ADD_BLIP_FOR_CHAR he1_recept1 he1_receptB CHANGE_BLIP_COLOUR he1_receptB BLUE he1_convofix = 0 ENDIF ENDIF ENDIF ENDIF IF he1_progress = 22 IF NOT IS_CHAR_DEAD he1_recept1 CLEAR_CONVERSATION_FOR_CHAR he1_recept1 ENDIF he1_convofix = 0 he1_progress = 23 TIMERA = 0 ENDIF IF he1_progress = 23 IF NOT IS_CHAR_DEAD he1_recept1 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer he1_recept1 10.0 10.0 FALSE //5.0 5.0 FALSE PRINT_HELP_FOREVER HEIH9 IF he1_attractattention = 1 IF TIMERA > 1800 he1_progress = 10 he1_attractattention = 0 ENDIF ENDIF ENDIF IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer he1_recept1 10.0 10.0 FALSE CLEAR_HELP ENDIF ENDIF ENDIF IF he1_progress = 24 IF NOT IS_CHAR_DEAD he1_recept1 he1_convofix = 0 CLEAR_CONVERSATION_FOR_CHAR he1_recept1 //askit ENDIF ADD_BLIP_FOR_COORD 372.2530 164.4298 1007.3984 he1_stairwellB SET_BLIP_ENTRY_EXIT he1_stairwellB 2415.3479 1123.9423 10.0 he1_progress = 25 he1_attractattention = 0 ENDIF IF he1_progress = 25 CLEAR_HELP he1_conversationOK = 1 FREEZE_OBJECT_POSITION he1_doorL FALSE CREATE_OBJECT DYN_AIRCON 349.3042 189.4448 1018.9844 he1_vending1 SET_OBJECT_ROTATION he1_vending1 0.0 0.0 90.0 SET_OBJECT_HEALTH he1_vending1 450 CREATE_OBJECT DYN_AIRCON 349.3042 189.4448 1019.7844 he1_vending2 MAKE_OBJECT_TARGETTABLE he1_vending2 TRUE SET_OBJECT_ROTATION he1_vending2 0.0 0.0 90.0 SET_OBJECT_HEALTH he1_vending2 450 GET_OBJECT_HEALTH he1_vending2 he1_vending2health GET_OBJECT_MASS he1_vending2 he1_vending2mass he1_progress = 27 he1_stairprompt = 1 timera = 0 CLEAR_MISSION_AUDIO 3 LOAD_MISSION_AUDIO 3 SOUND_AIRCONDITIONER sfx_aircon = 1 ENDIF IF sfx_aircon = 1 IF HAS_MISSION_AUDIO_LOADED 3 IF DOES_OBJECT_EXIST he1_vending2 ATTACH_MISSION_AUDIO_TO_OBJECT 3 he1_vending2 PLAY_MISSION_AUDIO 3 sfx_aircon = 2 ENDIF ENDIF ENDIF IF he1_progress = 27 IF timera > 3000 IF he1_stairprompt = 1 CLEAR_PRINTS PRINT_NOW HEI1_33 4000 1 he1_stairprompt = 0 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 372.2530 164.4298 1007.3984 1.0 1.0 1.5 FALSE REMOVE_BLIP he1_stairwellB he1_stairprompt = 0 CLEAR_PRINTS PRINT_NOW HEI1_34 6000 1 ADD_BLIP_FOR_COORD 346.9205 165.9382 1024.7812 he1_plansB SET_BLIP_ENTRY_EXIT he1_plansB 2415.3479 1123.9423 10.0 CHANGE_BLIP_COLOUR he1_plansB YELLOW he1_progress = 30 ENDIF ENDIF // Fail condition area IF he1_failconditions = 1 IF he1_inbuilding = 1 IF he1_drillstarted = 0 IF NOT IS_CHAR_DEAD he1_guard1 IF he1_progress < 40 IF he1_stairprompt = 0 IF he1_convofix = 0 IF TIMERA > 2000 IF he1_weaponaimed = 0 CLEAR_CHAR_TASKS_IMMEDIATELY he1_guard1 TASK_TURN_CHAR_TO_FACE_CHAR he1_guard1 scplayer IF NOT IS_CHAR_DEAD he1_guard2 IF NOT IS_CHAR_DEAD he1_guard3 CLEAR_CHAR_TASKS_IMMEDIATELY he1_guard2 CLEAR_CHAR_TASKS_IMMEDIATELY he1_guard3 TASK_TURN_CHAR_TO_FACE_CHAR he1_guard2 scplayer TASK_TURN_CHAR_TO_FACE_CHAR he1_guard3 scplayer TIMERA = 0 he1_checkchat = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_guard1 scplayer CLEAR_CHAR_TASKS he1_guard1 TASK_KILL_CHAR_ON_FOOT he1_guard1 scplayer //WAIT 2000 PRINT_NOW HEI1_50 4000 1 GOSUB he1_kickout GOTO mission_heist1_failed ENDIF IF he1_hideweaponcheck = 0 IF HAS_CHAR_SPOTTED_CHAR he1_guard1 scplayer IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_CAMERA IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_BRASSKNUCKLE //IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_SKATEBOARD IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_FLOWERS IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_DILDO1 IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_DILDO2 IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_VIBE1 IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_VIBE2 IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PARACHUTE CLEAR_PRINTS CLEAR_MISSION_AUDIO he1_alt_slot CLEAR_MISSION_AUDIO he1_audio_slot he1_audio_underway = 0 he1_audio_playing = 0 he1_counter = 7 //PRINT_NOW HEI1_44 4000 1 TIMERB = 0 he1_hideweaponcheck = 1 // ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF he1_weaponaimed = 1 IF he1_g1aim = 0 CLEAR_CHAR_TASKS_IMMEDIATELY he1_guard1 TASK_STAY_IN_SAME_PLACE he1_guard1 TRUE TASK_AIM_GUN_AT_CHAR he1_guard1 scplayer 5000 //he1_weaponaimed = 2 he1_g1aim = 1 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD he1_guard2 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_guard2 scplayer CLEAR_CHAR_TASKS he1_guard2 TASK_KILL_CHAR_ON_FOOT he1_guard2 scplayer //WAIT 2000 PRINT_NOW HEI1_50 4000 1 GOSUB he1_kickout GOTO mission_heist1_failed ENDIF IF he1_hideweaponcheck = 0 IF HAS_CHAR_SPOTTED_CHAR he1_guard2 scplayer IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_CAMERA IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_BRASSKNUCKLE // IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_SKATEBOARD IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_FLOWERS IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_DILDO1 IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_DILDO2 IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_VIBE1 IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_VIBE2 IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PARACHUTE CLEAR_MISSION_AUDIO he1_alt_slot CLEAR_MISSION_AUDIO he1_audio_slot CLEAR_PRINTS he1_audio_underway = 0 he1_audio_playing = 0 he1_counter = 7 //PRINT_NOW HEI1_44 4000 1 TIMERB = 0 he1_hideweaponcheck = 1 //ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF he1_weaponaimed = 1 IF he1_g2aim = 0 CLEAR_CHAR_TASKS_IMMEDIATELY he1_guard2 TASK_STAY_IN_SAME_PLACE he1_guard2 TRUE TASK_AIM_GUN_AT_CHAR he1_guard2 scplayer 5000 //he1_weaponaimed = 2 he1_g2aim = 1 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD he1_guard3 /* IF TIMERA > 2000 CLEAR_CHAR_TASKS he1_guard3 TASK_TURN_CHAR_TO_FACE_CHAR he1_guard3 scplayer TIMERA = 0 ENDIF */ IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_guard3 scplayer CLEAR_CHAR_TASKS he1_guard3 TASK_KILL_CHAR_ON_FOOT he1_guard3 scplayer //WAIT 2000 PRINT_NOW HEI1_50 4000 1 GOSUB he1_kickout GOTO mission_heist1_failed ENDIF // IF HAS_CHAR_SPOTTED_CHAR he1_guard3 scplayer IF he1_conversationOK = 1 IF he1_cameracheck = 0 //Critical Area here!!!!!!!!!!!!!!!!! Cues cutscene!!!!!!!!!!!!!!!!!!!! //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer he1_guard3 14.0 1.0 FALSE IF LOCATE_CHAR_ANY_MEANS_3D scplayer 367.6113 162.3746 1024.7812 3.5 3.5 1.5 FALSE // IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_CAMERA //PRINT_NOW HEI1_5 4000 1 IF he1_hideweaponcheck = 0 he1_cameracheck = 1 ENDIF ENDIF ENDIF ENDIF //ENDIF IF HAS_OBJECT_BEEN_PHOTOGRAPHED he1_plans // PRINT_NOW HEI1_51 4000 1 //WAIT 4500 CLEAR_PRINTS PRINT_NOW HEI1_52 4000 1 GOSUB he1_kickout GOTO mission_heist1_failed ENDIF // ENDIF IF he1_hideweaponcheck = 0 // IF HAS_CHAR_SPOTTED_CHAR he1_guard3 scplayer IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer he1_guard3 10.0 10.0 2.0 FALSE // dodgy! IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED //IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_CAMERA IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_BRASSKNUCKLE //IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_SKATEBOARD IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_FLOWERS IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_DILDO1 IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_DILDO2 IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_VIBE1 IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_VIBE2 IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PARACHUTE CLEAR_PRINTS CLEAR_MISSION_AUDIO he1_alt_slot CLEAR_MISSION_AUDIO he1_audio_slot he1_audio_underway = 0 he1_audio_playing = 0 IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_CAMERA he1_counter = 10 ELSE he1_counter = 7 ENDIF //PRINT_NOW HEI1_48 4000 1 TIMERB = 0 he1_hideweaponcheck = 1 he1_level3 = 1 //ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF he1_weaponaimed = 1 IF he1_g3aim = 0 CLEAR_CHAR_TASKS_IMMEDIATELY he1_guard3 TASK_STAY_IN_SAME_PLACE he1_guard3 TRUE TASK_AIM_GUN_AT_CHAR he1_guard3 scplayer 5000 //he1_weaponaimed = 2 he1_g3aim = 1 ENDIF ENDIF IF he1_conversationOK = 1 IF he1_cameracheck = 1 SET_PLAYER_CONTROL player1 OFF CLEAR_MISSION_AUDIO he1_alt_slot CLEAR_MISSION_AUDIO he1_audio_slot he1_audio_underway = 0 he1_audio_playing = 0 he1_counter = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 345.0205 163.0617 1026.8260 0.0 0.0 0.0//340.6378 161.8563 1027.4790 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 345.8946 163.5473 1026.8174 JUMP_CUT//341.5486 162.1901 1027.2361 JUMP_CUT //SET_FIXED_CAMERA_POSITION 345.6665 161.0074 1025.2107 0.0 0.0 0.0//340.6378 161.8563 1027.4790 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 346.2789 161.7530 1025.4735 JUMP_CUT//341.5486 162.1901 1027.2361 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE he1_cameracheck = 2 //he1_ctskipcameraneeded = 1 PRINT_NOW HEI1_6 4000 1 TIMERB = 0 ENDIF IF he1_cameracheck =2 IF TIMERB > 1000 he1_ctskipcameraneeded = 1 ENDIF IF TIMERB > 4000 CLEAR_PRINTS //PRINT_NOW HEI1_7 4000 1 he1_cameracheck = 4 TIMERB = 0 ENDIF ENDIF IF he1_cameracheck = 4 he1_ctskipcameraneeded = 0 DO_FADE 500 FADE_OUT CLEAR_PRINTS WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT CLEAR_PRINTS REMOVE_BLIP he1_plansB ADD_BLIP_FOR_COORD 357.3549 193.4150 1018.9844 he1_depositoryB SET_BLIP_ENTRY_EXIT he1_depositoryB 2415.3479 1123.9423 10.0 CHANGE_BLIP_COLOUR he1_depositoryB YELLOW he1_cameracheck = 99 PRINT_NOW HEI1_7 6000 1 ENDIF ENDIF ENDIF IF he1_hideweaponcheck = 1 IF TIMERB > 6000 IF he1_weaponaimed = 0 IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED //WAIT 1000 CLEAR_MISSION_AUDIO he1_alt_slot CLEAR_MISSION_AUDIO he1_audio_slot CLEAR_PRINTS he1_audio_underway = 0 he1_audio_playing = 0 IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_CAMERA he1_counter = 9 ENDIF //PRINT_NOW HEI1_49 6000 1 he1_weaponaimed = 1 ENDIF ENDIF ENDIF IF TIMERB > 12000 CLEAR_PRINTS PRINT_NOW HEI1_50 6000 1 GOSUB he1_kickout GOTO mission_heist1_failed ENDIF IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED he1_hideweaponcheck = 0 he1_weaponaimed = 0 he1_g1aim = 0 he1_g2aim = 0 he1_g3aim = 0 he1_level3 = 0 CLEAR_MISSION_AUDIO he1_alt_slot CLEAR_MISSION_AUDIO he1_audio_slot CLEAR_PRINTS he1_audio_underway = 0 he1_audio_playing = 0 he1_counter = 8 //PRINT_NOW HEI1_45 4000 1 ENDIF IF NOT he1_level3 = 1 IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_CAMERA he1_hideweaponcheck = 0 CLEAR_MISSION_AUDIO he1_alt_slot CLEAR_MISSION_AUDIO he1_audio_slot CLEAR_PRINTS he1_audio_underway = 0 he1_audio_playing = 0 he1_counter = 8 //PRINT_NOW HEI1_45 4000 1 he1_weaponaimed = 0 he1_g1aim = 0 he1_g2aim = 0 he1_g3aim = 0 he1_level3 = 0 ENDIF ENDIF IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_BRASSKNUCKLE he1_hideweaponcheck = 0 CLEAR_MISSION_AUDIO he1_alt_slot CLEAR_MISSION_AUDIO he1_audio_slot CLEAR_PRINTS he1_audio_underway = 0 he1_audio_playing = 0 he1_counter = 8 //PRINT_NOW HEI1_45 4000 1 he1_weaponaimed = 0 he1_g1aim = 0 he1_g2aim = 0 he1_g3aim = 0 he1_level3 = 0 ENDIF // IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_SKATEBOARD // he1_hideweaponcheck = 0 // he1_weaponaimed = 0 // he1_g1aim = 0 // he1_g2aim = 0 // he1_g3aim = 0 // he1_level3 = 0 // CLEAR_MISSION_AUDIO he1_alt_slot // CLEAR_MISSION_AUDIO he1_audio_slot // CLEAR_PRINTS // he1_audio_underway = 0 // he1_audio_playing = 0 // // he1_counter = 8 // //PRINT_NOW HEI1_45 4000 1 // ENDIF IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_FLOWERS he1_hideweaponcheck = 0 CLEAR_MISSION_AUDIO he1_alt_slot CLEAR_MISSION_AUDIO he1_audio_slot CLEAR_PRINTS he1_audio_underway = 0 he1_audio_playing = 0 he1_counter = 8 //PRINT_NOW HEI1_45 4000 1 he1_weaponaimed = 0 he1_g1aim = 0 he1_g2aim = 0 he1_g3aim = 0 he1_level3 = 0 ENDIF IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_DILDO1 he1_hideweaponcheck = 0 CLEAR_MISSION_AUDIO he1_alt_slot CLEAR_MISSION_AUDIO he1_audio_slot CLEAR_PRINTS he1_audio_underway = 0 he1_audio_playing = 0 he1_counter = 8 // PRINT_NOW HEI1_45 4000 1 he1_weaponaimed = 0 he1_g1aim = 0 he1_g2aim = 0 he1_g3aim = 0 he1_level3 = 0 ENDIF IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_DILDO2 he1_hideweaponcheck = 0 he1_weaponaimed = 0 he1_g1aim = 0 he1_g2aim = 0 he1_g3aim = 0 he1_level3 = 0 CLEAR_MISSION_AUDIO he1_alt_slot CLEAR_MISSION_AUDIO he1_audio_slot CLEAR_PRINTS he1_audio_underway = 0 he1_audio_playing = 0 he1_counter = 8 //PRINT_NOW HEI1_45 4000 1 ENDIF IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_VIBE1 he1_hideweaponcheck = 0 CLEAR_MISSION_AUDIO he1_alt_slot CLEAR_MISSION_AUDIO he1_audio_slot CLEAR_PRINTS he1_audio_underway = 0 he1_audio_playing = 0 he1_counter = 8 //PRINT_NOW HEI1_45 4000 1 he1_weaponaimed = 0 he1_g1aim = 0 he1_g2aim = 0 he1_g3aim = 0 he1_level3 = 0 ENDIF IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_VIBE2 he1_hideweaponcheck = 0 CLEAR_MISSION_AUDIO he1_alt_slot CLEAR_MISSION_AUDIO he1_audio_slot CLEAR_PRINTS he1_audio_underway = 0 he1_audio_playing = 0 he1_counter = 8 // PRINT_NOW HEI1_45 4000 1 he1_weaponaimed = 0 he1_g1aim = 0 he1_g2aim = 0 he1_g3aim = 0 he1_level3 = 0 ENDIF IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PARACHUTE he1_hideweaponcheck = 0 CLEAR_MISSION_AUDIO he1_alt_slot CLEAR_MISSION_AUDIO he1_audio_slot CLEAR_PRINTS he1_audio_underway = 0 he1_audio_playing = 0 he1_counter = 8 //PRINT_NOW HEI1_45 4000 1 he1_weaponaimed = 0 he1_g1aim = 0 he1_g2aim = 0 he1_g3aim = 0 he1_level3 = 0 ENDIF IF IS_CHAR_SHOOTING scplayer //WAIT 1000 PRINT_NOW HEI1_50 4000 1 GOSUB he1_kickout GOTO mission_heist1_failed ENDIF ENDIF IF DOES_CHAR_EXIST he1_pop1 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_pop1 scplayer IF NOT IS_CHAR_DEAD he1_pop1 CLEAR_CHAR_TASKS he1_pop1 TASK_SMART_FLEE_CHAR he1_pop1 scplayer 100.0 -1 //WAIT 1000 PRINT_NOW HEI1_50 4000 1 GOSUB he1_kickout GOTO mission_heist1_failed ENDIF ENDIF ENDIF IF DOES_CHAR_EXIST he1_pop2 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_pop2 scplayer IF NOT IS_CHAR_DEAD he1_pop2 CLEAR_CHAR_TASKS he1_pop2 TASK_SMART_FLEE_CHAR he1_pop2 scplayer 100.0 -1 //WAIT 1000 PRINT_NOW HEI1_50 4000 1 GOSUB he1_kickout GOTO mission_heist1_failed ENDIF ENDIF ENDIF IF DOES_CHAR_EXIST he1_pop3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_pop3 scplayer IF NOT IS_CHAR_DEAD he1_pop3 CLEAR_CHAR_TASKS he1_pop3 TASK_SMART_FLEE_CHAR he1_pop3 scplayer 100.0 -1 //WAIT 1000 PRINT_NOW HEI1_50 4000 1 GOSUB he1_kickout GOTO mission_heist1_failed ENDIF ENDIF ENDIF IF DOES_CHAR_EXIST he1_pop4 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_pop4 scplayer IF NOT IS_CHAR_DEAD he1_pop4 CLEAR_CHAR_TASKS he1_pop4 TASK_SMART_FLEE_CHAR he1_pop4 scplayer 100.0 -1 //WAIT 1000 PRINT_NOW HEI1_50 4000 1 GOSUB he1_kickout GOTO mission_heist1_failed ENDIF ENDIF ENDIF IF DOES_CHAR_EXIST he1_pop5 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_pop5 scplayer IF NOT IS_CHAR_DEAD he1_pop5 CLEAR_CHAR_TASKS he1_pop5 TASK_SMART_FLEE_CHAR he1_pop5 scplayer 100.0 -1 //WAIT 1000 PRINT_NOW HEI1_50 4000 1 GOSUB he1_kickout GOTO mission_heist1_failed ENDIF ENDIF ENDIF IF DOES_CHAR_EXIST he1_pop6 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_pop6 scplayer IF NOT IS_CHAR_DEAD he1_pop6 CLEAR_CHAR_TASKS he1_pop6 TASK_SMART_FLEE_CHAR he1_pop6 scplayer 100.0 -1 //WAIT 1000 PRINT_NOW HEI1_50 4000 1 GOSUB he1_kickout GOTO mission_heist1_failed ENDIF ENDIF ENDIF IF DOES_CHAR_EXIST he1_pop7 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_pop7 scplayer IF NOT IS_CHAR_DEAD he1_pop7 CLEAR_CHAR_TASKS he1_pop7 TASK_SMART_FLEE_CHAR he1_pop7 scplayer 100.0 -1 //WAIT 1000 PRINT_NOW HEI1_50 4000 1 GOSUB he1_kickout GOTO mission_heist1_failed ENDIF ENDIF ENDIF IF DOES_CHAR_EXIST he1_pop8 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_pop8 scplayer IF NOT IS_CHAR_DEAD he1_pop8 CLEAR_CHAR_TASKS he1_pop8 TASK_SMART_FLEE_CHAR he1_pop8 scplayer 100.0 -1 //WAIT 1000 PRINT_NOW HEI1_50 4000 1 GOSUB he1_kickout GOTO mission_heist1_failed ENDIF ENDIF ENDIF IF DOES_CHAR_EXIST he1_pop9 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_pop9 scplayer IF NOT IS_CHAR_DEAD he1_pop9 CLEAR_CHAR_TASKS he1_pop9 TASK_SMART_FLEE_CHAR he1_pop9 scplayer 100.0 -1 //WAIT 1000 PRINT_NOW HEI1_50 4000 1 gosub he1_kickout GOTO mission_heist1_failed ENDIF ENDIF ENDIF IF DOES_CHAR_EXIST he1_recept1 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_recept1 scplayer IF NOT IS_CHAR_DEAD he1_recept1 CLEAR_CHAR_TASKS he1_recept1 TASK_SMART_FLEE_CHAR he1_recept1 scplayer 100.0 -1 //WAIT 1000 PRINT_NOW HEI1_50 4000 1 GOSUB he1_kickout GOTO mission_heist1_failed ENDIF ENDIF ENDIF IF DOES_CHAR_EXIST he1_bystander1 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_bystander1 scplayer IF NOT IS_CHAR_DEAD he1_bystander1 CLEAR_CHAR_TASKS he1_bystander1 TASK_SMART_FLEE_CHAR he1_bystander1 scplayer 100.0 -1 //WAIT 1000 GOSUB he1_guardresponse PRINT_NOW HEI1_50 4000 1 GOSUB he1_kickout GOTO mission_heist1_failed ENDIF ENDIF ENDIF IF DOES_CHAR_EXIST he1_bystander2 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_bystander2 scplayer IF NOT IS_CHAR_DEAD he1_bystander2 CLEAR_CHAR_TASKS he1_bystander2 TASK_SMART_FLEE_CHAR he1_bystander2 scplayer 100.0 -1 //WAIT 1000 GOSUB he1_guardresponse PRINT_NOW HEI1_50 4000 1 GOSUB he1_kickout GOTO mission_heist1_failed ENDIF ENDIF ENDIF IF DOES_CHAR_EXIST he1_bystander3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_bystander3 scplayer IF NOT IS_CHAR_DEAD he1_bystander3 CLEAR_CHAR_TASKS he1_bystander3 TASK_SMART_FLEE_CHAR he1_bystander3 scplayer 100.0 -1 //WAIT 1000 GOSUB he1_guardresponse PRINT_NOW HEI1_50 4000 1 GOSUB he1_kickout GOTO mission_heist1_failed ENDIF ENDIF ENDIF IF DOES_CHAR_EXIST he1_bystander4 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_bystander4 scplayer IF NOT IS_CHAR_DEAD he1_bystander4 CLEAR_CHAR_TASKS he1_bystander4 TASK_SMART_FLEE_CHAR he1_bystander4 scplayer 100.0 -1 //WAIT 1000 GOSUB he1_guardresponse PRINT_NOW HEI1_50 4000 1 GOSUB he1_kickout GOTO mission_heist1_failed ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF he1_progress = 30 // was 35 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 364.4255 188.2647 1018.9844 2.0 2.0 2.0 FALSE IF he1_cameracheck > 1 IF he1_airconfix = 0 REMOVE_BLIP he1_depositoryB //ADD_BLIP_FOR_OBJECT he1_vending1 he1_vending1B //SET_BLIP_ENTRY_EXIT he1_vending1B 2415.3479 1123.9423 10.0 ADD_BLIP_FOR_OBJECT he1_vending1 he1_vending2B SET_BLIP_ENTRY_EXIT he1_vending2B 2415.3479 1123.9423 10.0 CLEAR_PRINTS PRINT_NOW HEI1_10 6000 1 he1_airconfix = 1 ENDIF ENDIF //he1_progress = 35 ENDIF IF he1_vdam1 = 0 IF HAS_OBJECT_BEEN_DAMAGED he1_vending1 GENERATE_RANDOM_INT_IN_RANGE 1 4 he1_TempInt BREAK_OBJECT he1_vending1 TRUE REMOVE_BLIP he1_vending2B he1_tempcount ++ he1_vdam1 = 1 he1_tempcount = 2 MAKE_OBJECT_TARGETTABLE he1_vending1 FALSE ENDIF ENDIF IF he1_vdam2 = 0 IF he1_tempcount < 2 IF HAS_OBJECT_BEEN_DAMAGED he1_vending2 // GET_OBJECT_HEALTH he1_vending2 he1_vending2health // WRITE_DEBUG_WITH_INT ding2 he1_vending2health GENERATE_RANDOM_INT_IN_RANGE 1 4 he1_TempInt BREAK_OBJECT he1_vending2 TRUE REMOVE_BLIP he1_vending2B he1_tempcount ++ he1_vdam2 = 1 he1_tempcount = 2 //bug fix c MAKE_OBJECT_TARGETTABLE he1_vending2 FALSE timera = 0 ENDIF ENDIF ENDIF IF he1_tempcount = 2 CLEAR_MISSION_AUDIO 3 sfx_aircon = 99 // finish aircon effect //sfx_bankfire = 1 // begin to load fire alarm //BREAK_OBJECT he1_vending2 TRUE IF TIMERA > 1000 START_SCRIPT_FIRE 350.8387 190.3284 1019.0000 1 he1_TempInt he1_scriptfire2 // sfx_bankfire = 1 he1_tempcount = 3 ENDIF ENDIF IF he1_tempcount = 3 he1_progress = 40 //he1_progress = 5000 CREATE_FX_SYSTEM teargas 350.6574 189.2716 1019.0000 TRUE he1_vendingsmoke1 CREATE_FX_SYSTEM teargas 350.6574 189.2716 1020.0000 TRUE he1_vendingsmoke2 CREATE_FX_SYSTEM teargas 350.8387 190.3284 1019.0000 TRUE he1_vendingsmoke3 PLAY_FX_SYSTEM he1_vendingsmoke1 PLAY_FX_SYSTEM he1_vendingsmoke2 PLAY_FX_SYSTEM he1_vendingsmoke3 TIMERA = 0 PRINT_NOW HEI1_20 4000 1 sfx_bankfire = 1 // REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_OFFICE_FIRE_ALARM_START //CREATE_FX_SYSTEM fire_large 350.3359 189.3490 1019.1844 TRUE he1_dummyfire1 //CREATE_FX_SYSTEM fire_large 350.3380 194.6215 1019.1766 TRUE he1_dummyfire2 ENDIF /*If something is on fire he1_failconditions = 0 he1_drillstarted = 1 */ ENDIF//he1_progress = 35 condition check IF he1_progress = 40 IF TIMERA > 3000 he1_failconditions = 0 he1_drillstarted = 1 he1_progress = 45 ENDIF ENDIF IF he1_progress > 9 IF he1_checkchat = 1 IF he1_progress < 45 IF NOT IS_CHAR_DEAD he1_pop1 IF NOT IS_CHAR_DEAD he1_pop2 GET_SCRIPT_TASK_STATUS he1_pop1 TASK_CHAT_WITH_CHAR task_state IF task_state = FINISHED_TASK GET_SCRIPT_TASK_STATUS he1_pop2 TASK_CHAT_WITH_CHAR task_state IF task_state = FINISHED_TASK CLEAR_CHAR_TASKS he1_pop1 CLEAR_CHAR_TASKS he1_pop2 // TASK_LOOK_ABOUT he1_pop1 -1 // TASK_LOOK_ABOUT he1_pop2 -1 TASK_CHAT_WITH_CHAR he1_pop1 he1_pop2 true true //ped0 will lead the chatting TASK_CHAT_WITH_CHAR he1_pop2 he1_pop1 false true //ped1 will follow ped0 at chatting ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD he1_pop3 IF NOT IS_CHAR_DEAD he1_pop4 GET_SCRIPT_TASK_STATUS he1_pop3 TASK_CHAT_WITH_CHAR task_state IF task_state = FINISHED_TASK GET_SCRIPT_TASK_STATUS he1_pop4 TASK_CHAT_WITH_CHAR task_state IF task_state = FINISHED_TASK CLEAR_CHAR_TASKS he1_pop3 CLEAR_CHAR_TASKS he1_pop4 //TASK_WANDER_COP he1_pop3 //TASK_WANDER_COP he1_pop4 // TASK_LOOK_ABOUT he1_pop3 -1 //TASK_LOOK_ABOUT he1_pop4 -1 TASK_CHAT_WITH_CHAR he1_pop3 he1_pop4 true true //ped0 will lead the chatting TASK_CHAT_WITH_CHAR he1_pop4 he1_pop3 false true //ped1 will follow ped0 at chatting ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD he1_pop5 IF NOT IS_CHAR_DEAD he1_pop6 GET_SCRIPT_TASK_STATUS he1_pop5 TASK_CHAT_WITH_CHAR task_state IF task_state = FINISHED_TASK GET_SCRIPT_TASK_STATUS he1_pop6 TASK_CHAT_WITH_CHAR task_state IF task_state = FINISHED_TASK CLEAR_CHAR_TASKS he1_pop5 CLEAR_CHAR_TASKS he1_pop6 //TASK_WANDER_CRIMINAL he1_pop5 //TASK_WANDER_CRIMINAL he1_pop6 // TASK_LOOK_ABOUT he1_pop5 -1 // TASK_LOOK_ABOUT he1_pop6 -1 TASK_CHAT_WITH_CHAR he1_pop5 he1_pop6 true true //ped0 will lead the chatting TASK_CHAT_WITH_CHAR he1_pop6 he1_pop5 false true //ped1 will follow ped0 at chatting ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD he1_pop7 IF NOT IS_CHAR_DEAD he1_pop8 GET_SCRIPT_TASK_STATUS he1_pop7 TASK_CHAT_WITH_CHAR task_state IF task_state = FINISHED_TASK GET_SCRIPT_TASK_STATUS he1_pop8 TASK_CHAT_WITH_CHAR task_state IF task_state = FINISHED_TASK CLEAR_CHAR_TASKS he1_pop7 CLEAR_CHAR_TASKS he1_pop8 // TASK_LOOK_ABOUT he1_pop7 -1 // TASK_LOOK_ABOUT he1_pop8 -1 //TASK_WANDER_CRIMINAL he1_pop5 //TASK_WANDER_CRIMINAL he1_pop6 TASK_CHAT_WITH_CHAR he1_pop7 he1_pop8 true true //ped0 will lead the chatting TASK_CHAT_WITH_CHAR he1_pop8 he1_pop7 false true //ped1 will follow ped0 at chatting ENDIF ENDIF ENDIF ENDIF he1_checkchat = 0 ENDIF ENDIF ENDIF IF he1_progress = 45 IF NOT IS_CHAR_DEAD he1_pop3 CLEAR_CHAR_TASKS he1_pop3 // SET_FOLLOW_NODE_THRESHOLD_DISTANCE he1_bystander4 150.0 TASK_FOLLOW_PATH_NODES_TO_COORD he1_pop3 370.8770 171.6468 1007.3971 PEDMOVE_WALK -2 ENDIF IF NOT IS_CHAR_DEAD he1_pop5 CLEAR_CHAR_TASKS he1_pop5 // SET_FOLLOW_NODE_THRESHOLD_DISTANCE he1_bystander4 150.0 TASK_FOLLOW_PATH_NODES_TO_COORD he1_pop5 370.8770 171.6468 1007.3971 PEDMOVE_WALK -2 ENDIF IF NOT IS_CHAR_DEAD he1_pop4 CLEAR_CHAR_TASKS he1_pop4 // SET_FOLLOW_NODE_THRESHOLD_DISTANCE he1_bystander4 150.0 TASK_FOLLOW_PATH_NODES_TO_COORD he1_pop4 370.8770 171.6468 1007.3971 PEDMOVE_WALK -2 ENDIF IF NOT IS_CHAR_DEAD he1_pop6 CLEAR_CHAR_TASKS he1_pop6 // SET_FOLLOW_NODE_THRESHOLD_DISTANCE he1_bystander4 150.0 TASK_FOLLOW_PATH_NODES_TO_COORD he1_pop6 370.8770 171.6468 1007.3971 PEDMOVE_WALK -2 ENDIF IF NOT IS_CHAR_DEAD he1_pop7 CLEAR_CHAR_TASKS he1_pop7 // SET_FOLLOW_NODE_THRESHOLD_DISTANCE he1_bystander4 150.0 TASK_FOLLOW_PATH_NODES_TO_COORD he1_pop7 370.8770 171.6468 1007.3971 PEDMOVE_WALK -2 ENDIF IF NOT IS_CHAR_DEAD he1_pop8 CLEAR_CHAR_TASKS he1_pop8 // SET_FOLLOW_NODE_THRESHOLD_DISTANCE he1_bystander4 150.0 TASK_FOLLOW_PATH_NODES_TO_COORD he1_pop8 370.8770 171.6468 1007.3971 PEDMOVE_WALK -2 ENDIF IF NOT IS_CHAR_DEAD he1_pop9 CLEAR_CHAR_TASKS he1_pop9 // SET_FOLLOW_NODE_THRESHOLD_DISTANCE he1_bystander4 150.0 TASK_FOLLOW_PATH_NODES_TO_COORD he1_pop9 370.8770 171.6468 1007.3971 PEDMOVE_WALK -2 ENDIF IF NOT IS_CHAR_DEAD he1_bystander4 CLEAR_CHAR_TASKS he1_bystander4 SET_CHAR_DECISION_MAKER he1_bystander4 he1_emptydm SET_CHAR_COORDINATES he1_bystander4 377.7027 153.2545 1022.7745 ENDIF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON // REMOVE_SCRIPT_FIRE he1_scriptfire1 REMOVE_SCRIPT_FIRE he1_scriptfire2 SET_FIXED_CAMERA_POSITION 350.4867 162.1073 1026.9894 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 351.4692 162.1195 1026.8037 JUMP_CUT IF NOT IS_CHAR_DEAD he1_guard3 TASK_STAY_IN_SAME_PLACE he1_guard3 FALSE FLUSH_ROUTE EXTEND_ROUTE 353.4759 161.9657 1024.7812 EXTEND_ROUTE 365.8191 162.2179 1024.7812 TASK_FOLLOW_POINT_ROUTE he1_guard3 PEDMOVE_WALK FOLLOW_ROUTE_ONCE //SET_FOLLOW_NODE_THRESHOLD_DISTANCE he1_guard3 150.0 ENDIF IF NOT IS_CHAR_DEAD he1_bystander1 SET_CHAR_DECISION_MAKER he1_bystander1 he1_emptydm CLEAR_CHAR_TASKS he1_bystander1 SET_CHAR_COORDINATES he1_bystander1 353.9879 164.0512 1024.7812 SET_CHAR_HEADING he1_bystander1 224.0 CLEAR_CHAR_TASKS he1_bystander1 SET_CHAR_DECISION_MAKER he1_bystander1 he1_emptydm FLUSH_ROUTE EXTEND_ROUTE 355.5494 162.7226 1024.7736 EXTEND_ROUTE 368.7490 162.4855 1024.7736 EXTEND_ROUTE 378.8240 162.5327 1024.7736 TASK_FOLLOW_POINT_ROUTE he1_bystander1 PEDMOVE_WALK FOLLOW_ROUTE_ONCE //SET_FOLLOW_NODE_THRESHOLD_DISTANCE he1_bystander1 150.0 he1_byroute1 = 1 ENDIF IF NOT IS_CHAR_DEAD he1_bystander2 SET_CHAR_DECISION_MAKER he1_bystander2 he1_emptydm CLEAR_CHAR_TASKS he1_bystander2 SET_CHAR_COORDINATES he1_bystander2 354.1077 160.1630 1024.7812 SET_CHAR_HEADING he1_bystander2 302.0 CLEAR_CHAR_TASKS he1_bystander2 SET_CHAR_DECISION_MAKER he1_bystander2 he1_emptydm FLUSH_ROUTE EXTEND_ROUTE 355.5494 162.7226 1024.7736 EXTEND_ROUTE 368.7490 162.4855 1024.7736 EXTEND_ROUTE 378.8240 162.5327 1024.7736 TASK_FOLLOW_POINT_ROUTE he1_bystander2 PEDMOVE_WALK FOLLOW_ROUTE_ONCE //SET_FOLLOW_NODE_THRESHOLD_DISTANCE he1_bystander2 150.0 he1_byroute2 = 2 ENDIF IF NOT IS_CHAR_DEAD he1_bystander3 SET_CHAR_DECISION_MAKER he1_bystander3 he1_emptydm CLEAR_CHAR_TASKS he1_bystander3 SET_CHAR_COORDINATES he1_bystander3 364.2849 160.2124 1024.7886 SET_CHAR_HEADING he1_bystander3 294.5 CLEAR_CHAR_TASKS he1_bystander3 SET_CHAR_DECISION_MAKER he1_bystander3 he1_emptydm //SET_CHAR_DECISION_MAKER he1_bystander1 he1_touristdm FLUSH_ROUTE //EXTEND_ROUTE 362.2583 161.3967 1024.7736 EXTEND_ROUTE 369.2587 162.4347 1024.7736 EXTEND_ROUTE 377.2099 163.5096 1024.7812 TASK_FOLLOW_POINT_ROUTE he1_bystander3 PEDMOVE_WALK FOLLOW_ROUTE_ONCE //SET_FOLLOW_NODE_THRESHOLD_DISTANCE he1_bystander3 150.0 he1_byroute3 = 1 ENDIF CLEAR_PRINTS DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE he1_progress = 50 TIMERB = 0 he1_ctskipfireneeded = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO he1_alt_slot CLEAR_MISSION_AUDIO he1_audio_slot he1_audio_underway = 0 he1_audio_playing = 0 he1_counter = 13 //PRINT_NOW HEI1_21 6000 1 ENDIF //fix IF he1_progress = 50 IF TIMERB > 4000 he1_progress = 55 ENDIF ENDIF IF he1_progress = 55 he1_ctskipfireneeded = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //PC bug fix CLEAR_CHAR_TASKS scplayer SWITCH_WIDESCREEN OFF DO_FADE 500 FADE_IN //PC bug fix CLEAR_CHAR_TASKS scplayer SET_PLAYER_CONTROL player1 ON //he1_smokebegun = 1 he1_TempInt = 3 START_SCRIPT_FIRE 350.6574 189.5716 1019.0000 1 he1_TempInt he1_scriptfire1 START_SCRIPT_FIRE 350.8387 190.3284 1019.0000 1 2 he1_scriptfire2 he1_progress = 60 IF NOT IS_CHAR_DEAD he1_guard3 SET_CHAR_DECISION_MAKER he1_guard3 he1_guarddm SET_CHAR_COORDINATES he1_guard3 2419.9937 1153.7103 9.8047 //TASK_GO_STRAIGHT_TO_COORD he1_guard3 381.8217 173.7668 1007.3906 PEDMOVE_WALK -2 ENDIF IF NOT IS_CHAR_DEAD he1_guard2 SET_CHAR_DECISION_MAKER he1_guard2 he1_guarddm SET_CHAR_COORDINATES he1_guard2 2419.9937 1145.7103 9.8047 //TASK_GO_STRAIGHT_TO_COORD he1_guard3 381.8217 173.7668 1007.3906 PEDMOVE_WALK -2 ENDIF IF NOT IS_CHAR_DEAD he1_guard1 SET_CHAR_DECISION_MAKER he1_guard1 he1_guarddm SET_CHAR_COORDINATES he1_guard1 2417.6550 1154.0846 9.8047 //TASK_GO_STRAIGHT_TO_COORD he1_guard3 381.8217 173.7668 1007.3906 PEDMOVE_WALK -2 ENDIF IF NOT IS_CHAR_DEAD he1_recept1 SET_CHAR_COORDINATES he1_recept1 2419.3633 1132.6721 9.8047 SET_CHAR_HEADING he1_recept1 135.0 ENDIF IF NOT IS_CHAR_DEAD he1_pop1 DELETE_CHAR he1_pop1 ENDIF IF NOT IS_CHAR_DEAD he1_pop2 DELETE_CHAR he1_pop2 ENDIF IF NOT IS_CHAR_DEAD he1_bystander1 CLEAR_CHAR_TASKS he1_bystander1 SET_CHAR_COORDINATES he1_bystander1 372.0212 163.0494 1024.7734 SET_CHAR_HEADING he1_bystander1 276.1 ENDIF IF NOT IS_CHAR_DEAD he1_bystander2 CLEAR_CHAR_TASKS he1_bystander2 SET_CHAR_COORDINATES he1_bystander2 375.6833 163.8624 1024.7734 SET_CHAR_HEADING he1_bystander2 266.1 ENDIF IF NOT IS_CHAR_DEAD he1_bystander3 CLEAR_CHAR_TASKS he1_bystander3 SET_CHAR_COORDINATES he1_bystander3 378.0436 162.5748 1024.7750 SET_CHAR_HEADING he1_bystander3 168.1 //TASK_GO_STRAIGHT_TO_COORD he1_bystander3 381.8217 173.7668 1007.3906 PEDMOVE_WALK -2 ENDIF IF NOT IS_CHAR_DEAD he1_bystander4 CLEAR_CHAR_TASKS he1_bystander4 SET_CHAR_COORDINATES he1_bystander4 377.7027 153.2545 1022.7745 SET_CHAR_HEADING he1_bystander4 101.1 ENDIF CLEAR_PRINTS PRINT_NOW HEI1_22 6000 1 REMOVE_BLIP he1_plansB ADD_BLIP_FOR_COORD 346.9205 165.9382 1024.7812 he1_plansB SET_BLIP_ENTRY_EXIT he1_plansB 2415.3479 1123.9423 10.0 CHANGE_BLIP_COLOUR he1_plansB YELLOW //Move guys, put them on routes... ENDIF IF he1_progress = 60 //IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_CAMERA // PRINT_HELP HEI1_28 //ENDIF // IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_CAMERA //CLEAR_HELP // ENDIF IF he1_evacuation = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 371.0459 161.5409 1018.9844 1.5 1.5 2.0 FALSE // write_debug check IF NOT IS_CHAR_DEAD he1_bystander4 CLEAR_CHAR_TASKS he1_bystander4 // SET_FOLLOW_NODE_THRESHOLD_DISTANCE he1_bystander4 150.0 TASK_FOLLOW_PATH_NODES_TO_COORD he1_bystander4 370.8770 171.6468 1007.3971 PEDMOVE_WALK -2 ENDIF IF NOT IS_CHAR_DEAD he1_bystander3 CLEAR_CHAR_TASKS he1_bystander3 // SET_FOLLOW_NODE_THRESHOLD_DISTANCE he1_bystander3 150.0 TASK_FOLLOW_PATH_NODES_TO_COORD he1_bystander3 379.2716 173.4771 1007.3971 PEDMOVE_WALK -2 ENDIF IF NOT IS_CHAR_DEAD he1_bystander2 CLEAR_CHAR_TASKS he1_bystander2 //SET_FOLLOW_NODE_THRESHOLD_DISTANCE he1_bystander2 150.0 TASK_FOLLOW_PATH_NODES_TO_COORD he1_bystander2 370.9119 175.3713 1007.3971 PEDMOVE_WALK -2 ENDIF IF NOT IS_CHAR_DEAD he1_bystander1 CLEAR_CHAR_TASKS he1_bystander1 //SET_FOLLOW_NODE_THRESHOLD_DISTANCE he1_bystander1 150.0 TASK_FOLLOW_PATH_NODES_TO_COORD he1_bystander1 370.8770 171.6468 1007.3971 PEDMOVE_WALK -2 ENDIF // REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_OFFICE_FIRE_COUGHING_START he1_evacuation = 1 ENDIF ENDIF IF he1_evacuation = 1 IF he1_by4hit = 0 IF NOT IS_CHAR_DEAD he1_bystander4 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_bystander4 scplayer CLEAR_CHAR_TASKS he1_bystander4 TASK_SMART_FLEE_CHAR he1_bystander4 scplayer 100.0 -1 he1_by4hit = 1 ENDIF ENDIF ENDIF IF he1_by3hit = 0 IF NOT IS_CHAR_DEAD he1_bystander3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_bystander3 scplayer CLEAR_CHAR_TASKS he1_bystander3 TASK_SMART_FLEE_CHAR he1_bystander3 scplayer 100.0 -1 he1_by3hit = 1 ENDIF ENDIF ENDIF IF he1_by2hit = 0 IF NOT IS_CHAR_DEAD he1_bystander2 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_bystander2 scplayer CLEAR_CHAR_TASKS he1_bystander2 TASK_SMART_FLEE_CHAR he1_bystander2 scplayer 100.0 -1 he1_by2hit = 1 ENDIF ENDIF ENDIF IF he1_by1hit = 0 IF NOT IS_CHAR_DEAD he1_bystander1 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR he1_bystander1 scplayer CLEAR_CHAR_TASKS he1_bystander1 TASK_SMART_FLEE_CHAR he1_bystander1 scplayer 100.0 -1 he1_by1hit = 1 ENDIF ENDIF ENDIF ENDIF IF HAS_OBJECT_BEEN_PHOTOGRAPHED he1_plans he1_plansphotographed = 1 REMOVE_BLIP he1_plansB CLEAR_PRINTS CLEAR_HELP PRINT_NOW HEI1_25 6000 1 //ADD_BLIP_FOR_COORD 2418.6816 1123.3524 9.8047 he1_completeB ADD_BLIP_FOR_COORD 2418.6816 1123.3524 9.8047 he1_completeB CHANGE_BLIP_COLOUR he1_completeB YELLOW KILL_FX_SYSTEM he1_vendingsmoke1 KILL_FX_SYSTEM he1_vendingsmoke2 KILL_FX_SYSTEM he1_vendingsmoke3 CREATE_FX_SYSTEM teargas 369.2483 162.3460 1026.7736 TRUE he1_beginsmoke1 CREATE_FX_SYSTEM teargas 373.3976 162.6828 1026.7736 TRUE he1_beginsmoke2 CREATE_FX_SYSTEM teargas 378.9187 163.1306 1026.7736 TRUE he1_beginsmoke3 PLAY_FX_SYSTEM he1_beginsmoke1 PLAY_FX_SYSTEM he1_beginsmoke2 PLAY_FX_SYSTEM he1_beginsmoke3 IF NOT IS_CHAR_DEAD he1_bystander1 DELETE_CHAR he1_bystander1 ENDIF IF NOT IS_CHAR_DEAD he1_bystander2 DELETE_CHAR he1_bystander2 ENDIF IF NOT IS_CHAR_DEAD he1_bystander3 DELETE_CHAR he1_bystander3 ENDIF IF NOT IS_CHAR_DEAD he1_bystander4 DELETE_CHAR he1_bystander4 ENDIF IF NOT IS_CHAR_DEAD he1_pop3 DELETE_CHAR he1_pop3 ENDIF IF NOT IS_CHAR_DEAD he1_pop4 DELETE_CHAR he1_pop4 ENDIF IF NOT IS_CHAR_DEAD he1_pop5 DELETE_CHAR he1_pop5 ENDIF IF NOT IS_CHAR_DEAD he1_pop6 DELETE_CHAR he1_pop6 ENDIF IF NOT IS_CHAR_DEAD he1_pop7 DELETE_CHAR he1_pop7 ENDIF IF NOT IS_CHAR_DEAD he1_pop8 DELETE_CHAR he1_pop8 ENDIF IF NOT IS_CHAR_DEAD he1_pop9 DELETE_CHAR he1_pop9 ENDIF he1_smokebegun = 1 TIMERA = 0 he1_progress = 99 LOAD_SCENE 376.9717 192.0647 1013.1797 ENDIF ENDIF IF he1_plansphotographed = 1 IF TIMERA > 2500 REQUEST_MODEL lvemt1 REQUEST_MODEL LVPD1 REQUEST_MODEL wmybu WHILE NOT HAS_MODEL_LOADED lvemt1 OR NOT HAS_MODEL_LOADED LVPD1 OR NOT HAS_MODEL_LOADED wmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_MISSION1 wmybu 376.9717 192.0647 1013.1797 he1_snitch SET_CHAR_HEADING he1_snitch 266.7879 SET_CHAR_DECISION_MAKER he1_snitch he1_civdm SET_CHAR_HAS_USED_ENTRY_EXIT he1_snitch 2415.3479 1123.9423 10.0 CREATE_CHAR PEDTYPE_MISSION1 LVPD1 377.2169 190.7318 1013.1797 he1_copconv SET_CHAR_HEADING he1_copconv 5.7879 SET_CHAR_DECISION_MAKER he1_copconv he1_civdm GIVE_WEAPON_TO_CHAR he1_copconv WEAPONTYPE_PISTOL 30000 SET_CHAR_HAS_USED_ENTRY_EXIT he1_copconv 2415.3479 1123.9423 10.0 TASK_TURN_CHAR_TO_FACE_CHAR he1_snitch he1_copconv CREATE_CHAR PEDTYPE_MISSION1 lvpd1 377.9352 192.4556 1013.1797 he1_fireconv SET_CHAR_HEADING he1_fireconv 124.31 SET_CHAR_DECISION_MAKER he1_fireconv he1_civdm SET_CHAR_HAS_USED_ENTRY_EXIT he1_fireconv 2415.3479 1123.9423 10.0 MARK_MODEL_AS_NO_LONGER_NEEDED lvemt1 he1_plansphotographed = 2 CHECKPOINT_SAVE 1 ENDIF ENDIF IF he1_plansphotographed = 2 CLEAR_PRINTS DO_FADE 1000 FADE_OUT //LOAD_SCENE 376.9717 192.0647 1013.1797 SET_PLAYER_CONTROL player1 OFF WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //SET_AREA_VISIBLE 0 CLEAR_PRINTS //SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON LOAD_SCENE 376.9717 192.0647 1013.1797 SET_FIXED_CAMERA_POSITION 374.0174 190.0682 1014.4938 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 374.8688 190.5916 1014.4578 JUMP_CUT /* IF NOT IS_CHAR_DEAD he1_snitch IF NOT IS_CHAR_DEAD he1_copconv //TASK_LOOK_ABOUT he1_snitch -1 //TASK_LOOK_ABOUT he1_pop6 -1 DISABLE_CHAR_SPEECH he1_snitch FALSE DISABLE_CHAR_SPEECH he1_copconv FALSE TASK_CHAT_WITH_CHAR he1_snitch he1_copconv true true //ped0 will lead the chatting TASK_CHAT_WITH_CHAR he1_copconv he1_snitch false true //ped1 will follow ped0 at chatting ENDIF ENDIF */ DO_FADE 2000 FADE_IN // was 5000 WHILE GET_FADING_STATUS WAIT 0 ENDWHILE he1_plansphotographed = 3 he1_ctskipsnitchneeded = 1 TIMERA = 0 ENDIF IF he1_plansphotographed = 3 //IF TIMERA > 1000 // 1000 // IF NOT IS_CHAR_DEAD he1_snitch // IF NOT IS_CHAR_DEAD he1_copconv // //TASK_LOOK_ABOUT he1_snitch -1 // //TASK_LOOK_ABOUT he1_pop6 -1 // DISABLE_CHAR_SPEECH he1_snitch FALSE // DISABLE_CHAR_SPEECH he1_copconv FALSE // // TASK_CHAT_WITH_CHAR he1_snitch he1_copconv true true //ped0 will lead the chatting // TASK_CHAT_WITH_CHAR he1_copconv he1_snitch false true //ped1 will follow ped0 at chatting // ENDIF // ENDIF CLEAR_PRINTS he1_counter = 15 IF NOT IS_CHAR_DEAD he1_snitch TASK_PLAY_ANIM he1_snitch endchat_01 PED 4.0 1 FALSE FALSE FALSE -1 ENDIF //PRINT_NOW HEI1_42 4000 1 he1_plansphotographed = 4 TIMERA = 0 //ENDIF ENDIF IF he1_plansphotographed = 4 IF TIMERA > 2000 he1_plansphotographed = 5 TIMERA = 0 ENDIF ENDIF IF he1_plansphotographed = 5 he1_ctskipsnitchneeded = 0 IF NOT IS_CHAR_DEAD he1_snitch IF NOT IS_CHAR_DEAD he1_copconv CLEAR_CHAR_TASKS he1_snitch CLEAR_CHAR_TASKS he1_copconv ENDIF ENDIF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE he1_plansphotographed = 10 DELETE_CHAR he1_snitch IF NOT IS_CHAR_DEAD he1_guard3 SET_CHAR_COORDINATES he1_guard3 378.2106 154.3860 1022.7819 SET_CHAR_HEADING he1_guard3 312.89 CLEAR_CHAR_TASKS he1_guard3 OPEN_SEQUENCE_TASK he1_swatseq TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK he1_swatseq PERFORM_SEQUENCE_TASK he1_guard3 he1_swatseq CLEAR_SEQUENCE_TASK he1_swatseq ENDIF CREATE_CHAR PEDTYPE_MISSION1 LVPD1 371.6575 153.1287 1020.7961 he1_swatbase1 SET_CHAR_HEADING he1_swatbase1 264.7879 SET_CHAR_SHOOT_RATE he1_swatbase1 60 SET_CHAR_DECISION_MAKER he1_swatbase1 he1_emptydm GIVE_WEAPON_TO_CHAR he1_swatbase1 WEAPONTYPE_PISTOL 30000 SET_CHAR_HAS_USED_ENTRY_EXIT he1_swatbase1 2415.3479 1123.9423 10.0 OPEN_SEQUENCE_TASK he1_swatseq TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK he1_swatseq PERFORM_SEQUENCE_TASK he1_swatbase1 he1_swatseq CLEAR_SEQUENCE_TASK he1_swatseq CREATE_CHAR PEDTYPE_MISSION1 LVPD1 378.6946 163.6932 1018.9844 he1_swatbase2 SET_CHAR_HEADING he1_swatbase2 91.89 SET_CHAR_DECISION_MAKER he1_swatbase2 he1_emptydm GIVE_WEAPON_TO_CHAR he1_swatbase2 WEAPONTYPE_PISTOL 30000 SET_CHAR_HAS_USED_ENTRY_EXIT he1_swatbase2 2415.3479 1123.9423 10.0 OPEN_SEQUENCE_TASK he1_swatseq TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK he1_swatseq PERFORM_SEQUENCE_TASK he1_swatbase2 he1_swatseq CLEAR_SEQUENCE_TASK he1_swatseq CREATE_CHAR PEDTYPE_MISSION1 LVPD1 371.9029 164.5795 1013.1797 he1_swatbase3 SET_CHAR_HEADING he1_swatbase3 195.89 SET_CHAR_DECISION_MAKER he1_swatbase3 he1_emptydm GIVE_WEAPON_TO_CHAR he1_swatbase3 WEAPONTYPE_PISTOL 30000 SET_CHAR_HAS_USED_ENTRY_EXIT he1_swatbase3 2415.3479 1123.9423 10.0 OPEN_SEQUENCE_TASK he1_swatseq TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 scplayer DUCK_RANDOMLY 3000 50 CLOSE_SEQUENCE_TASK he1_swatseq PERFORM_SEQUENCE_TASK he1_swatbase3 he1_swatseq CLEAR_SEQUENCE_TASK he1_swatseq CREATE_CHAR PEDTYPE_MISSION1 LVPD1 371.2767 154.0267 1014.9844 he1_swatbase4 SET_CHAR_HEADING he1_swatbase4 195.89 SET_CHAR_SHOOT_RATE he1_swatbase4 60 SET_CHAR_DECISION_MAKER he1_swatbase4 he1_emptydm GIVE_WEAPON_TO_CHAR he1_swatbase4 WEAPONTYPE_PISTOL 30000 SET_CHAR_HAS_USED_ENTRY_EXIT he1_swatbase4 2415.3479 1123.9423 10.0 OPEN_SEQUENCE_TASK he1_swatseq TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 scplayer DUCK_RANDOMLY 3000 50 CLOSE_SEQUENCE_TASK he1_swatseq PERFORM_SEQUENCE_TASK he1_swatbase4 he1_swatseq CLEAR_SEQUENCE_TASK he1_swatseq CREATE_CHAR PEDTYPE_MISSION1 LVPD1 378.0627 152.9613 1011.1953 he1_swatbase5 SET_CHAR_HEADING he1_swatbase5 285.89 SET_CHAR_DECISION_MAKER he1_swatbase5 he1_emptydm GIVE_WEAPON_TO_CHAR he1_swatbase5 WEAPONTYPE_PISTOL 30000 SET_CHAR_HAS_USED_ENTRY_EXIT he1_swatbase5 2415.3479 1123.9423 10.0 OPEN_SEQUENCE_TASK he1_swatseq TASK_KINDA_STAY_IN_SAME_PLACE -1 FALSE TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 scplayer DUCK_RANDOMLY 3000 50 CLOSE_SEQUENCE_TASK he1_swatseq PERFORM_SEQUENCE_TASK he1_swatbase5 he1_swatseq CLEAR_SEQUENCE_TASK he1_swatseq CREATE_CHAR PEDTYPE_MISSION1 LVPD1 372.2917 162.8527 1007.3893 he1_swatbase6 SET_CHAR_HEADING he1_swatbase6 195.89 SET_CHAR_DECISION_MAKER he1_swatbase6 he1_emptydm GIVE_WEAPON_TO_CHAR he1_swatbase6 WEAPONTYPE_PISTOL 30000 SET_CHAR_HAS_USED_ENTRY_EXIT he1_swatbase6 2415.3479 1123.9423 10.0 OPEN_SEQUENCE_TASK he1_swatseq TASK_KINDA_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 scplayer DUCK_RANDOMLY 3000 50 CLOSE_SEQUENCE_TASK he1_swatseq PERFORM_SEQUENCE_TASK he1_swatbase6 he1_swatseq CLEAR_SEQUENCE_TASK he1_swatseq // New CREATE_CHAR PEDTYPE_MISSION1 LVPD1 379.1144 153.0811 1011.1953 he1_swatbase9 SET_CHAR_HEADING he1_swatbase9 4.89 SET_CHAR_DECISION_MAKER he1_swatbase9 he1_emptydm TASK_TOGGLE_DUCK he1_swatbase9 TRUE SET_CHAR_SHOOT_RATE he1_swatbase9 50 SET_CHAR_HEALTH he1_swatbase9 120 GIVE_WEAPON_TO_CHAR he1_swatbase9 WEAPONTYPE_PISTOL 30000 SET_CHAR_HAS_USED_ENTRY_EXIT he1_swatbase9 2415.3479 1123.9423 10.0 OPEN_SEQUENCE_TASK he1_swatseq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK he1_swatseq PERFORM_SEQUENCE_TASK he1_swatbase9 he1_swatseq CLEAR_SEQUENCE_TASK he1_swatseq CREATE_CHAR PEDTYPE_MISSION1 LVPD1 369.8178 162.4074 1018.9767 he1_swatbase8 // crouching by doorway SET_CHAR_HEADING he1_swatbase8 217.89 SET_CHAR_SHOOT_RATE he1_swatbase8 50 SET_CHAR_HEALTH he1_swatbase8 120 SET_CHAR_DECISION_MAKER he1_swatbase8 he1_emptydm // TASK_TOGGLE_DUCK he1_swatbase8 TRUE GIVE_WEAPON_TO_CHAR he1_swatbase8 WEAPONTYPE_PISTOL 30000 SET_CHAR_HAS_USED_ENTRY_EXIT he1_swatbase8 2415.3479 1123.9423 10.0 OPEN_SEQUENCE_TASK he1_swatseq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING -1 scplayer DUCK_RANDOMLY 3000 70 CLOSE_SEQUENCE_TASK he1_swatseq PERFORM_SEQUENCE_TASK he1_swatbase8 he1_swatseq CLEAR_SEQUENCE_TASK he1_swatseq CREATE_CHAR PEDTYPE_MISSION1 LVPD1 370.1607 179.6097 1007.3906 he1_swatbase7 // bottom floor by glass area SET_CHAR_HEADING he1_swatbase7 170.89 SET_CHAR_SHOOT_RATE he1_swatbase7 50 SET_CHAR_HEALTH he1_swatbase7 120 SET_CHAR_DECISION_MAKER he1_swatbase7 he1_emptydm TASK_TOGGLE_DUCK he1_swatbase7 TRUE GIVE_WEAPON_TO_CHAR he1_swatbase7 WEAPONTYPE_PISTOL 30000 SET_CHAR_HAS_USED_ENTRY_EXIT he1_swatbase7 2415.3479 1123.9423 10.0 OPEN_SEQUENCE_TASK he1_swatseq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK he1_swatseq PERFORM_SEQUENCE_TASK he1_swatbase7 he1_swatseq CLEAR_SEQUENCE_TASK he1_swatseq IF NOT IS_CHAR_DEAD he1_guard2 CLEAR_CHAR_TASKS he1_guard2 SET_CHAR_COORDINATES he1_guard2 375.0372 177.4968 1007.3906 SET_CHAR_HEADING he1_guard2 193.0 TASK_STAY_IN_SAME_PLACE he1_guard2 TRUE TASK_KILL_CHAR_ON_FOOT he1_guard2 scplayer ENDIF IF NOT IS_CHAR_DEAD he1_guard1 CLEAR_CHAR_TASKS he1_guard1 SET_CHAR_COORDINATES he1_guard1 385.5123 174.3110 1007.3893 SET_CHAR_HEADING he1_guard1 82.0 TASK_KINDA_STAY_IN_SAME_PLACE he1_guard1 TRUE TASK_KILL_CHAR_ON_FOOT he1_guard1 scplayer ENDIF IF NOT IS_CHAR_DEAD he1_copconv CLEAR_CHAR_TASKS he1_copconv TASK_KILL_CHAR_ON_FOOT he1_copconv scplayer ENDIF CLEAR_PRINTS PRINT_NOW HEI1_46 6000 1 ALTER_WANTED_LEVEL_NO_DROP player1 2 REQUEST_MODEL bravura WHILE NOT HAS_MODEL_LOADED BRAVURA WAIT 0 ENDWHILE CREATE_CAR BRAVURA 2423.7327 1120.2732 9.6719 he1_parkedescape SET_CAR_HEADING he1_parkedescape 179.4729 MARK_MODEL_AS_NO_LONGER_NEEDED BRAVURA ENDIF IF he1_smokebegun = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 369.2483 162.3460 1024.7736 2.0 2.0 2.0 FALSE CREATE_FX_SYSTEM_ON_CHAR teargas scplayer 0.0 0.0 2.0 TRUE he1_smoke1 //directly above CREATE_FX_SYSTEM_ON_CHAR teargas scplayer 0.0 2.0 1.8 TRUE he1_smoke2 // in front CREATE_FX_SYSTEM_ON_CHAR teargas scplayer 0.0 -2.0 2.0 TRUE he1_smoke3 // behind CREATE_FX_SYSTEM_ON_CHAR teargas scplayer 1.0 5.0 1.5 TRUE he1_smoke4 // 5m in front CREATE_FX_SYSTEM_ON_CHAR teargas scplayer -1.0 8.0 1.8 TRUE he1_smoke5 // 8m in front CREATE_FX_SYSTEM_ON_CHAR teargas scplayer 2.0 0.0 1.5 TRUE he1_smoke6 // side CREATE_FX_SYSTEM_ON_CHAR teargas scplayer -2.0 0.0 1.5 TRUE he1_smoke7 //side CREATE_FX_SYSTEM_ON_CHAR teargas scplayer -2.0 2.0 1.5 TRUE he1_smoke8 //front diag CREATE_FX_SYSTEM_ON_CHAR teargas scplayer 2.0 2.0 1.5 TRUE he1_smoke9 //front diag SET_HEATHAZE_EFFECT TRUE //SET_DARKNESS_EFFECT TRUE -1 //SET_DARKNESS_EFFECT TRUE //FORCE_WEATHER_NOW WEATHER_FOGGY_SF PLAY_FX_SYSTEM he1_smoke1 PLAY_FX_SYSTEM he1_smoke2 PLAY_FX_SYSTEM he1_smoke3 PLAY_FX_SYSTEM he1_smoke4 PLAY_FX_SYSTEM he1_smoke5 PLAY_FX_SYSTEM he1_smoke6 PLAY_FX_SYSTEM he1_smoke7 PLAY_FX_SYSTEM he1_smoke8 PLAY_FX_SYSTEM he1_smoke9 KILL_FX_SYSTEM he1_beginsmoke1 KILL_FX_SYSTEM he1_beginsmoke2 KILL_FX_SYSTEM he1_beginsmoke3 he1_smokebegun = 2 ENDIF ENDIF IF he1_plansphotographed = 10 /* IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2473.5042 1123.1412 9.8203 3.0 3.0 3.0 FALSE GOTO mission_heist1_passed ENDIF */ IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2418.6816 1123.3524 9.8047 5.0 5.0 5.0 FALSE //RELEASE_WEATHER SET_HEATHAZE_EFFECT FALSE // SET_DARKNESS_EFFECT FALSE -1 KILL_FX_SYSTEM he1_beginsmoke1 KILL_FX_SYSTEM he1_beginsmoke2 KILL_FX_SYSTEM he1_beginsmoke3 KILL_FX_SYSTEM he1_smoke1 KILL_FX_SYSTEM he1_smoke2 KILL_FX_SYSTEM he1_smoke3 KILL_FX_SYSTEM he1_smoke4 KILL_FX_SYSTEM he1_smoke5 KILL_FX_SYSTEM he1_smoke6 KILL_FX_SYSTEM he1_smoke7 KILL_FX_SYSTEM he1_smoke8 KILL_FX_SYSTEM he1_smoke9 he1_plansphotographed = 11 REMOVE_BLIP he1_completeB ADD_BLIP_FOR_COORD 1918.5901 958.3391 9.8203 he1_finalB CLEAR_PRINTS PRINT_NOW HEI1_29 6000 1 ALTER_WANTED_LEVEL_NO_DROP player1 2 he1_wantedfix = 1 timerb = 0 MARK_MODEL_AS_NO_LONGER_NEEDED wmysgrd MARK_MODEL_AS_NO_LONGER_NEEDED OFOST //GOTO mission_heist1_passed ENDIF ENDIF IF he1_wantedfix = 1 IF timerb > 4000 ALTER_WANTED_LEVEL_NO_DROP player1 4 he1_wantedfix = 2 ENDIF ENDIF IF he1_plansphotographed = 11 REQUEST_MODEL TRIADA REQUEST_MODEL WASHING REQUEST_MODEL TRIADB //LOAD_SPECIAL_CHARACTER 1 WUZIMU WHILE NOT HAS_MODEL_LOADED TRIADB OR NOT HAS_MODEL_LOADED TRIADA OR NOT HAS_MODEL_LOADED WASHING WAIT 0 ENDWHILE he1_plansphotographed = 13 //IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1988.7454 1033.1350 9.8203 5.0 5.0 5.0 TRUE // GOTO mission_heist1_passed //ENDIF he1_finalsequence = 9 ENDIF IF he1_finalsequence = 9 // SET_PLAYER_CONTROL player1 ON // // IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1918.5901 958.3391 9.8203 4.0 4.0 2.0 TRUE // SET_PLAYER_CONTROL player1 OFF // // // //IF IS_CHAR_STOPPED scplayer // CREATE_CAR WASHING 1902.1685 974.9742 9.8203 he1_wuzicar // SET_CAR_HEADING he1_wuzicar 197.2609 // CHANGE_CAR_COLOUR he1_wuzicar 4 2 // // IF NOT IS_CAR_DEAD he1_wuzicar // CREATE_CHAR_INSIDE_CAR he1_wuzicar PEDTYPE_MISSION2 TRIADA he1_wuzidriver // // CREATE_CHAR_AS_PASSENGER he1_wuzicar PEDTYPE_MISSION2 TRIADB 1 he1_wuzi // ENDIF // //CREATE_CHAR_PEDTYPE_GANG_GROVE SPECIAL01 1903.2869 962.4689 9.8203 he1_wuzi // //SET_CHAR_HEADING he1_wuzi 170.0 // he1_finalsequence = 15 // // ENDIF // // // ENDIF GET_AREA_VISIBLE he1_visible IF he1_visible = 0 IF NOT IS_MINIGAME_IN_PROGRESS SET_PLAYER_CONTROL player1 ON ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1918.5901 958.3391 9.8203 4.0 4.0 2.0 TRUE IF IS_CHAR_IN_ANY_CAR scplayer SET_PLAYER_CONTROL player1 OFF IF IS_CHAR_STOPPED scplayer CREATE_CAR WASHING 1902.1685 974.9742 9.8203 he1_wuzicar SET_CAR_HEADING he1_wuzicar 197.2609 CHANGE_CAR_COLOUR he1_wuzicar 4 2 IF NOT IS_CAR_DEAD he1_wuzicar CREATE_CHAR_INSIDE_CAR he1_wuzicar PEDTYPE_MISSION2 TRIADA he1_wuzidriver CREATE_CHAR_AS_PASSENGER he1_wuzicar PEDTYPE_MISSION2 TRIADB 1 he1_wuzi ENDIF he1_finalsequence = 15 ENDIF ELSE SET_PLAYER_CONTROL player1 OFF CREATE_CAR WASHING 1902.1685 974.9742 9.8203 he1_wuzicar SET_CAR_HEADING he1_wuzicar 197.2609 CHANGE_CAR_COLOUR he1_wuzicar 4 2 IF NOT IS_CAR_DEAD he1_wuzicar CREATE_CHAR_INSIDE_CAR he1_wuzicar PEDTYPE_MISSION2 TRIADA he1_wuzidriver CREATE_CHAR_AS_PASSENGER he1_wuzicar PEDTYPE_MISSION2 TRIADB 1 he1_wuzi ENDIF he1_finalsequence = 15 ENDIF ENDIF // locate ENDIF // he1_finalsequence = 9 condition check IF he1_finalsequence = 15 SET_PLAYER_CONTROL player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 TRUE DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS MARK_CAR_AS_NO_LONGER_NEEDED he1_parkedescape CLEAR_AREA 1913.6818 962.0125 9.8203 60.0 TRUE CLEAR_AREA 1903.4680 967.1692 9.8127 60.0 TRUE SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 1922.2339 951.8628 12.2282 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1921.7146 952.7101 12.1171 JUMP_CUT DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE he1_finalsequence = 17 timera = 0 CLEAR_CHAR_TASKS scplayer IF IS_CHAR_IN_ANY_CAR scplayer OPEN_SEQUENCE_TASK he1_playerseq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 1913.6818 962.0125 9.8203 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK he1_playerseq PERFORM_SEQUENCE_TASK scplayer he1_playerseq CLEAR_SEQUENCE_TASK he1_playerseq ELSE OPEN_SEQUENCE_TASK he1_playerseq TASK_GO_STRAIGHT_TO_COORD -1 1913.6818 962.0125 9.8203 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK he1_playerseq PERFORM_SEQUENCE_TASK scplayer he1_playerseq CLEAR_SEQUENCE_TASK he1_playerseq ENDIF ENDIF IF he1_finalsequence = 17 IF timera > 1000 //he1_finalskip = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_SHUTTER_DOOR_START he1_finalsequence = 20 ENDIF ENDIF IF he1_finalsequence = 20 // IF timerb > 3000 // he1_finalskip = 1 // ENDIF IF NOT SLIDE_OBJECT fourdragons_door 1903.383 967.62 15.438 0.0 0.0 0.02 FALSE SLIDE_OBJECT fourdragons_door 1903.383 967.62 15.438 0.0 0.0 0.02 FALSE ENDIF //IF SLIDE_OBJECT fourdragons_door 1903.383 967.62 15.438 0.0 0.0 0.02 FALSE IF timera > 4000 he1_finalsequence = 30 IF NOT IS_CHAR_DEAD he1_wuzidriver IF NOT IS_CAR_DEAD he1_wuzicar TASK_CAR_DRIVE_TO_COORD he1_wuzidriver he1_wuzicar 1909.0400 959.7415 9.8203 7.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS SET_FIXED_CAMERA_POSITION 1901.5867 965.5023 11.8636 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1902.5381 965.2460 11.6931 JUMP_CUT SET_CHAR_COORDINATES scplayer 1913.6818 962.0125 9.8203 SET_CHAR_HEADING scplayer 100.3 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_SHUTTER_DOOR_STOP CLEAR_CHAR_TASKS scplayer //TASK_GO_STRAIGHT_TO_COORD scplayer 1907.8975 963.2145 9.8203 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD scplayer 1909.8872 962.3391 9.8203 PEDMOVE_WALK -1 timera = 0 ENDIF ENDIF ENDIF ENDIF IF he1_finalsequence = 30 IF NOT IS_CAR_DEAD he1_wuzicar //WRITE_DEBUG check30 IF LOCATE_CAR_2D he1_wuzicar 1909.0400 959.7415 3.0 3.0 FALSE he1_finalsequence = 35 IF NOT IS_CHAR_DEAD he1_wuzi TASK_LOOK_AT_CHAR he1_wuzi scplayer -1 ENDIF //WRITE_DEBUG check35 //PRINT_NOW HEI1_30 5000 1 // REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_SHUTTER_DOOR_START he1_counter = 19 timera = 0 ENDIF IF timera > 10000 he1_finalsequence = 35 // REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_SHUTTER_DOOR_START WRITE_DEBUG test timera = 0 ENDIF ENDIF ENDIF IF he1_finalsequence = 35 // IF NOT SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.02 FALSE // SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.02 FALSE //ENDIF //IF SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.02 FALSE IF timera > 3000 he1_counter = 20 he1_finalsequence = 36 timera = 0 // REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_SHUTTER_DOOR_STOP ENDIF ENDIF IF he1_finalsequence = 36 // IF NOT SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.02 FALSE // SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.02 FALSE // ENDIF // IF timera > 2000 //PRINT_NOW HEI1_31 4000 1 IF timera > 1000 //4000 IF NOT IS_CAR_DEAD he1_wuzicar IF NOT IS_CHAR_DEAD he1_wuzidriver CLEAR_CHAR_TASKS he1_wuzidriver he1_finalsequence = 37 // 1915.0400 940.7415 9.8203 TASK_CAR_DRIVE_TO_COORD he1_wuzidriver he1_wuzicar 1905.2789 934.1620 9.8352 10.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_AVOIDCARS timera = 0 // he1_counter = 20 IF NOT IS_CHAR_DEAD he1_wuzi TASK_LOOK_AT_CHAR scplayer he1_wuzi -1 ENDIF ENDIF ENDIF ENDIF //ENDIF ENDIF IF he1_finalsequence = 37 IF timera > 1000 IF NOT SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.04 FALSE SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.04 FALSE ENDIF IF he1_doorsound = 0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_SHUTTER_DOOR_START he1_doorsound = 1 ENDIF ENDIF IF timera > 3000 he1_finalsequence = 40 ENDIF ENDIF IF he1_finalsequence = 40 IF NOT SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.04 FALSE SLIDE_OBJECT fourdragons_door 1903.383 967.62 11.438 0.0 0.0 0.04 FALSE ENDIF he1_finalskip = 0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_SHUTTER_DOOR_STOP IF NOT IS_CHAR_DEAD he1_wuzi CLEAR_CHAR_TASKS_IMMEDIATELY he1_wuzi DELETE_CHAR he1_wuzi ENDIF IF NOT IS_CHAR_DEAD he1_wuzidriver CLEAR_CHAR_TASKS_IMMEDIATELY he1_wuzidriver DELETE_CHAR he1_wuzidriver ENDIF DELETE_CAR he1_wuzicar SWITCH_WIDESCREEN OFF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SET_OBJECT_COORDINATES fourdragons_door 1903.383 967.82 11.438 SET_OBJECT_HEADING fourdragons_door 0.0 he1_finalsequence = 45 CLEAR_PRINTS GOTO mission_heist1_passed ENDIF GOTO heist1_main_mission_loop he1_guardresponse: IF NOT IS_CHAR_DEAD he1_guard3 CLEAR_CHAR_TASKS he1_guard3 TASK_KILL_CHAR_ON_FOOT he1_guard3 scplayer ENDIF RETURN he1_kickout: he1_beenkickedout = 1 PRINT_BIG ( M_FAIL ) 8000 1 timerb = 0 WAIT 3000 RETURN // **************************************** Mission heist1 failed *********************** mission_heist1_failed: IF NOT he1_beenkickedout = 1 PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" ENDIF RETURN // **************************************** mission heist1 passed ************************ mission_heist1_passed: flag_heist_mission_counter ++ //Used to terminate this mission loop in the main script. These variables will be set up in the main.sc //REGISTER_MISSION_PASSED ( HOOD_3 ) //Used in the stats PRINT_WITH_NUMBER_BIG ( M_PASSR ) 10 5000 1 AWARD_PLAYER_MISSION_RESPECT 10 REGISTER_MISSION_PASSED ( HEIST_1 ) PLAYER_MADE_PROGRESS 1 SET_INT_STAT PASSED_HEIST1 1 PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL PLAYER1 RETURN // ********************************** mission cleanup *********************************** mission_cleanup_heist1: //RELEASE_WEATHER SWITCH_ENTRY_EXIT paper FALSE disable_mod_garage = 0 CLEAR_MISSION_AUDIO 3 //SWITCH_PED_ROADS_OFF 1996.4890 1519.1196 10.0625 2003.8010 1565.6416 17.3672 //SWITCH_PED_ROADS_OFF 2001.2888 1532.2842 8.0 2027.0776 1553.2673 13.0 IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS scplayer ENDIF CLEAR_WANTED_LEVEL player1 IF DOES_OBJECT_EXIST fourdragons_door SET_OBJECT_COORDINATES fourdragons_door 1903.383 967.62 11.438 SET_OBJECT_HEADING fourdragons_door 0.0 ENDIF SET_RADAR_ZOOM 0 //HIDE_ALL_FRONTEND_BLIPS FALSE //SET_CHAR_AMMO scplayer WEAPONTYPE_CAMERA 0 IF NOT IS_CHAR_DEAD scplayer // REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_CAMERA ENDIF REMOVE_BLIP he1_cameraB REMOVE_BLIP he1_officesB REMOVE_BLIP he1_receptB REMOVE_BLIP he1_plansB REMOVE_BLIP he1_depositoryB //REMOVE_BLIP he1_vending1B REMOVE_BLIP he1_vending2B REMOVE_BLIP he1_completeB REMOVE_BLIP he1_camreserveB REMOVE_BLIP he1_finalB REMOVE_BLIP he1_stairwellB he1_tempint = 1 WHILE he1_tempint < 6 REMOVE_BLIP he1_touristB[he1_tempint] he1_tempint ++ ENDWHILE REMOVE_PICKUP he1_cameraP //REMOVE_PICKUP he1_health1 //REMOVE_PICKUP he1_health2 REMOVE_ALL_SCRIPT_FIRES KILL_FX_SYSTEM he1_beginsmoke1 KILL_FX_SYSTEM he1_beginsmoke2 KILL_FX_SYSTEM he1_beginsmoke3 KILL_FX_SYSTEM he1_vendingsmoke1 KILL_FX_SYSTEM he1_vendingsmoke2 KILL_FX_SYSTEM he1_vendingsmoke3 KILL_FX_SYSTEM he1_smoke1 KILL_FX_SYSTEM he1_smoke2 KILL_FX_SYSTEM he1_smoke3 KILL_FX_SYSTEM he1_smoke4 KILL_FX_SYSTEM he1_smoke5 KILL_FX_SYSTEM he1_smoke6 KILL_FX_SYSTEM he1_smoke7 KILL_FX_SYSTEM he1_smoke8 KILL_FX_SYSTEM he1_smoke9 //KILL_FX_SYSTEM he1_dummyfire1 //KILL_FX_SYSTEM he1_dummyfire2 SET_HEATHAZE_EFFECT FALSE //SET_DARKNESS_EFFECT FALSE //SET_DARKNESS_EFFECT FALSE -1 MARK_MODEL_AS_NO_LONGER_NEEDED OMORI MARK_MODEL_AS_NO_LONGER_NEEDED OMOST MARK_MODEL_AS_NO_LONGER_NEEDED CAMERA MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_MODEL_AS_NO_LONGER_NEEDED BFYRI MARK_MODEL_AS_NO_LONGER_NEEDED OMYRI MARK_MODEL_AS_NO_LONGER_NEEDED OFOST //MARK_MODEL_AS_NO_LONGER_NEEDED JOURNEY MARK_MODEL_AS_NO_LONGER_NEEDED bravura //MARK_MODEL_AS_NO_LONGER_NEEDED FIRETRUK MARK_MODEL_AS_NO_LONGER_NEEDED wmysgrd MARK_MODEL_AS_NO_LONGER_NEEDED wmosci MARK_MODEL_AS_NO_LONGER_NEEDED wmybu MARK_MODEL_AS_NO_LONGER_NEEDED bmybu MARK_MODEL_AS_NO_LONGER_NEEDED LVPD1 MARK_MODEL_AS_NO_LONGER_NEEDED lvemt1 //UNLOAD_SPECIAL_CHARACTER 1 MARK_MODEL_AS_NO_LONGER_NEEDED TRIADA MARK_MODEL_AS_NO_LONGER_NEEDED TRIADB MARK_MODEL_AS_NO_LONGER_NEEDED WASHING REMOVE_ANIMATION CAMERA IF he1_beenkickedout = 1 // OVERRIDE_NEXT_RESTART 2419.6057 1123.5138 9.8203 264.0 OVERRIDE_NEXT_RESTART 2337.0833 2453.8018 13.9765 90.7643 FORCE_DEATH_RESTART // PRINT_BIG ( M_FAIL ) 8000 1 // PRINT_NOW HEI1_50 8000 1 ENDIF GET_GAME_TIMER timer_mobile_start //Used to reset the mobile phone timer so it doesn't ring immediately after the mission flag_player_on_mission = 0 MISSION_HAS_FINISHED //UNLOAD_SPECIAL_CHARACTER 1 RETURN } /* [HEI1_1:HEIST1] ~s~Security's strict in the ~y~planning department~s~. Don't start trouble! [HEI1_6:HEIST1] ~s~You can't photo those plans with the guard around! You need to divert his attention. [HEI1_7:HEIST1] ~s~There's a ~y~document depository~s~ downstairs. Head down to see if you can cause a distraction [HEI1_9:HEIST1] ~s~This is a civic building. No visible guns or you'll be ejected from the premises [HEI1_10:HEIST1] ~s~Those old ~g~air con units~s~ are decrepit. Destroy them anyway you can. [HEI1_11:HEIST1] ~s~If you need another ~g~camera~s~ or film, head back to the casino area and persuade a tourist to part with theirs! [HEI1_20:HEIST1] ~w~( wheep! wheep! )~s~ That's it! That fire alarm ought to occupy those guards. [HEI1_21:HEIST1] ~w~Guard: Everybody out! Keep calm! [HEI1_22:HEIST1] ~s~Okay! They're busy with the evacuation just now. Get upstairs and photograph those ~y~plans~s~ on the wall. [HEI1_25:HEIST1] ~s~Great! You've got a photo of those plans! Get out of the ~y~building~s~ before you're caught. [HEI1_26:HEIST1] ~w~Tourist: Ah! You take a picture! You take a picture! [HEI1_28:HEIST1] Hold the R1 button and press ~o~ to take a photograph [HEI1_29:HEIST1] ~s~You're still wanted by the police! Get that camera film back to ~y~Wuzi's casino~s~ before getting arrested. [HEI1_30:HEIST1] Carl? I can detect the smell of smoke in the air! Your doing I trust? [HEI1_31:HEIST1] Let us just hope your photography was as focused as your ability to cause mayhem! [HEI1_32:HEIST1] ~w~Tourist: Why you injure us? Our friends go to copshop! We get you too! [HEI1_33:HEIST1] ~s~The ~y~stairwell~s~ is now accessible. Go up to find the location of the plans. [HEI1_34:HEIST1] ~s~The ~y~plans~s~ you need to photograph are on the top floor. [HEI1_35:HEIST1] ~s~There are plenty of ~r~tourists~s~ on that ship. Take a camera from them by force. [HEI1_39:HEIST1] ~s~Good! Get that ~g~camera~s~ picked up. [HEI1_40:HEIST1] ~s~Good job! Head to the ~y~planning department~s~ building. [HEI1_41:HEIST1] ~s~You need a camera to get a copy of those plans. Grab one from some ~r~tourists~s~ at the strip. [HEI1_42:HEIST1] ~w~I heard some noise from next door! Something definitely got smashed up and then the fire alarm went nuts! [HEI1_43:HEIST1] ~w~Don't worry sir. We suspect foul play. The perpetrator will be caught! [HEI1_44:HEIST1] ~w~Guard: Put that weapon away or you'll be apprehended! [HEI1_45:HEIST1] ~w~Guard: Thank you for your co-operation, sir. [HEI1_46:HEIST1] ~s~The cops can't shut the bottom doors due to the fire! Use your weapons if you need to. [HEI1_48:HEIST1] ~w~Guard: No photography or weaponry allowed on this floor. Put it away, please! [HEI1_49:HEIST1] ~w~Guard: This is your final warning sir! You have five seconds to put that item away! [HEI1_50:HEIST1] ~r~You were told that this is a low-profile job and you were showing off your weaponry! [HEI1_51:HEIST1] ~w~Guard: Lock the bottom doors and get the cops! This punk is up to no good! [HEI1_52:HEIST1] ~r~That's just great! We should have distracted the guard before taking any photographs! [HEIQ1:HEIST1] ~w~Can I help you sir? [HEIQ2:HEIST1] ~w~OK sir. You are aware that reproduction of such plans is prohibited? [HEIQ1Y:HEIST1] ~w~Yes please, I'd like to look at some plans for the Mafia casino. [HEIQ1N:HEIST1] ~w~Erm... no! [HEIQ2Y:HEIST1] ~w~Yes, I'm only after some reference. I'm building a scale model for my uncle's birthday. He's keen on blackjack. [HEIQ2N:HEIST1] ~w~No, I didn't know that. Why? [HEIX2Y:HEIST1] ~w~Of course. The owners wouldn't want to take a gamble on that happening! [HEIX2N:HEIST1] ~w~No! I'm some sort of dumbass! I thought I could waltz in and take the plans home to peruse at my leisure! [HEIH:HEIST1] Press the left directional button to answer NO or the right directional button for YES [HEIH2:HEIST1] Move close to the receptionist and press the R1 button to restart conversation [HEIQ3:HEIST1] ~w~That's lovely sir! The plans for that building are located on the top floor. I've buzzed open that stairwell door. [HEIX1:HEIST1] ~w~I'm rather busy sir. Come to me if you change your mind. [HEIX2:HEIST1] ~w~Well, we don't want to be party to preparation of a daring raid on the count room! Does sir understand? [HEIQ4:HEIST1] ~w~Very witty sir. You'll find the plans on the top floor. I will buzz open the stairwell door beside the entrance [HEIQ5:HEIST1] ~w~I'm sorry sir, I can't make it any clearer. Alert me when you've thought it over. [HEIX3] ~w~Sir, I take it you don't want to talk anymore? Alert me if you change your mind. */ MISSION_START // ***************************************************************************************** // *********************************** 2p mission **************************** // *********************************** heist 3 / girlfriend **************************** // ***************************************************************************************** // *** *** // ***************************************************************************************** SCRIPT_NAME heist3 // Mission start stuff GOSUB mission_start_heist3 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_heist3_failed ENDIF GOSUB mission_cleanup_heist3 MISSION_END { //////////////////////////// // Variables for mission /// //////////////////////////// /// others LVAR_INT hei3_task_status LVAR_INT hei3_temp_int LVAR_INT hei3_distance_int LVAR_INT hei3_timer_start hei3_time_passed hei3_current_time LVAR_INT hei3_iGirlFriend hei3_iSpankingFlag LVAR_INT hei3_decision hie3_dummy LVAR_FLOAT hei3_player_speed LVAR_INT hei3_area_vis //LVAR_INT hei3_spankage_rating VAR_INT hei3_spook LVAR_FLOAT hei3_distance_float /// Flags LVAR_INT hei3_progress_flag LVAR_INT hei3_safety_flag LVAR_INT hei3_x_button_can_be_pressed LVAR_INT hei3_player_has_gimp_suit LVAR_INT hei3_spooked_check LVAR_INT hei3_flag_player_had_warning1_fm2 LVAR_INT hei3_clothes_changed LVAR_INT hei3_pleased_millie LVAR_INT hei3_millie_at_house /// People LVAR_INT hei3_millie_ped LVAR_INT hei3_client_ped LVAR_INT hei3_doorman_ped LVAR_INT hei3_shop_ped1 LVAR_INT hei3_shop_ped2 LVAR_INT hei3_shop_ped3 LVAR_INT hei3_shop_ped4 LVAR_INT hei3_shop_ped5 /// Objects /// Pickups LVAR_INT hei3_gimp_suit_pickup /// Vehicles LVAR_INT hei3_millie_car LVAR_INT hei3_client_car LVAR_INT hei3_temp_car /// Blips LVAR_INT hei3_millie_blip LVAR_INT hei3_client_blip LVAR_INT hei3_sex_shop_blip LVAR_INT hei3_house_blip LVAR_INT hei3_casino_blip LVAR_INT hei3_gimp_suit_blip /// Sequences LVAR_INT hei3_player_seq LVAR_INT hei3_millie_seq LVAR_INT hei3_client_seq /// Co-ords LVAR_FLOAT hei3_sex_shop_x hei3_sex_shop_y hei3_sex_shop_z LVAR_FLOAT hei3_player_x hei3_player_y hei3_player_z LVAR_FLOAT hei3_millie_x hei3_millie_y hei3_millie_z LVAR_FLOAT hei3_house_x hei3_house_y hei3_house_z //// Audio crap ///// AUDIO CRAP VAR_TEXT_LABEL hei3_text[44] LVAR_INT hei3_audio[44] LVAR_INT hei3_audio_counter LVAR_INT hei3_audio_slot1 hei3_audio_slot2 hei3_audio_playing LVAR_INT hei3_text_loop_done LVAR_INT hei3_mobile LVAR_INT hei3_text_timer_diff LVAR_INT hei3_text_timer_end LVAR_INT hei3_text_timer_start LVAR_INT hei3_ahead_counter LVAR_INT hei3_sfx[5] LVAR_INT hei3_sfx_counter LVAR_INT hei3_sfx_playing LVAR_INT hei3_sfx_played // ****************************************START OF CUTSCENE******************************** // ****************************************END OF CUTSCENE********************************** // ****************************************Mission Start************************************ mission_start_heist3: REGISTER_MISSION_GIVEN SET_FADING_COLOUR 0 0 0 flag_player_on_mission = 1 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg //GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP Player1 fghjk fghjk CLOTHES_TEX_EXTRA1// 2 GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 ENDIF STORE_CLOTHES_STATE FORCE_WEATHER WEATHER_SUNNY_VEGAS SET_AREA_VISIBLE 10 LOAD_MISSION_TEXT HEIST3 LOAD_CUTSCENE HEIST2A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 SET_PLAYER_CONTROL player1 OFF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RELEASE_WEATHER LOAD_SCENE 2030.1027 1020.7899 9.8203 WAIT 0 ////////////////////////////// /// REQUEST MISSION MODELS /// ////////////////////////////// REQUEST_COLLISION 2030.1027 1020.7899 LOAD_SCENE 2030.1027 1020.7899 9.8203 SET_CHAR_COORDINATES scplayer 2030.1027 1020.7899 9.8130 SET_CHAR_HEADING scplayer 277.5123 SET_AREA_VISIBLE 0 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2016.4222 1017.1024 10.0 //TRIAD CASINO LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY hei3_decision //////////////////////////////// /// INITIALISE THE VARIABLES /// //////////////////////////////// hei3_progress_flag = 0 hei3_safety_flag = 0 hei3_x_button_can_be_pressed = 0 hei3_player_has_gimp_suit = 0 hei3_spooked_check = 0 hei3_flag_player_had_warning1_fm2 = 0 hei3_clothes_changed = 0 hei3_pleased_millie = 0 hei3_millie_at_house = 0 hei3_player_speed = 0.0 hei3_distance_float = 0.0 hei3_distance_int = 0 hei3_spook = 0 //i3_spankage_rating = 0 hei3_timer_start = 0 hei3_time_passed = 0 hei3_current_time = 0 hei3_sex_shop_x = 2090.0 hei3_sex_shop_y = 2074.0 hei3_sex_shop_z = 11.0 hei3_house_x = 2036.9286 hei3_house_y = 2721.4490 hei3_house_z = 10.5469 hei3_audio_counter = 0 hei3_audio_slot1 = 1 hei3_audio_slot2 = 2 hei3_audio_playing = 0 hei3_text_loop_done = 0 hei3_mobile = 0 hei3_text_timer_diff = 0 hei3_text_timer_end = 0 hei3_text_timer_start = 0 hei3_ahead_counter = 0 $hei3_text[1] = HE3_AA//There's only ever been one weak link in any security set-up, the human heart. $hei3_text[2] = HE3_BA//Another shift over! See you tomorrow! $hei3_text[3] = HE3_BB//That was a long shift! See you tomorrow! $hei3_text[4] = HE3_CA//Wow, it's nice and tight! $hei3_text[5] = HE3_CB//I'm sure you'll squeeze in just fine! $hei3_text[6] = HE3_CC//Let's have a look. $hei3_text[7] = HE3_CD//Perfect! $hei3_text[8] = HE3_CE//Oh hi, Benny... $hei3_text[9] = HE3_CF//Yes, master, I'm just trying it on. $hei3_text[10] = HE3_CG//You got yours? $hei3_text[11] = HE3_CH//Cool, I'll see you at my house in a short while. $hei3_text[12] = HE3_DA//The door's open, Master! $hei3_text[13] = HE3_DB//Come on in, I'm ready for you! $hei3_text[14] = HE3_DC//You've been a naughty girl! $hei3_text[15] = HE3_DD//Oh I know! I know! $hei3_text[16] = HE3_DE//I want your security card and the entry code for Caligula's! $hei3_text[17] = HE3_DF//Oh Benny, you minx! $hei3_text[18] = HE3_DG//I'll never tell, you wicked man, never, NEVER! $hei3_text[19] = HE3_EA//Where's the keycard? $hei3_text[20] = HE3_EB//Confess! $hei3_text[21] = HE3_EC//You can't break me! $hei3_text[22] = HE3_FA//Enough, master! $hei3_text[23] = HE3_FB//The card's in my car outside! $hei3_text[24] = HE3_FC//And now, the code... $hei3_text[25] = HE3_FD//Spit it out, you filthy worm! $hei3_text[26] = HE3_FE//If you're good, I'll punish you more! $hei3_text[27] = HE3_FF//I can take it! $hei3_text[28] = HE3_FG//Do your worst! $hei3_text[29] = HE3_GA//No more! You've broken me! $hei3_text[30] = HE3_GB//The code, you worthless trash! $hei3_text[31] = HE3_GC//God, you're good at this! $hei3_text[32] = HE3_GD//I know you're not Benny! $hei3_text[33] = HE3_GE//Give me your number I have to see you again. $hei3_text[34] = HE3_HA//ENTRY CODE! $hei3_text[35] = HE3_HB//Oh! It's... $hei3_text[36] = HE3_HC//A. $hei3_text[37] = HE3_HD//B. $hei3_text[38] = HE3_HE//C. $hei3_text[39] = HE3_HF//D. $hei3_text[40] = HE3_HG//E. $hei3_text[41] = HE3_HH//F. $hei3_text[42] = HE3_HJ//I'll call you, master, I promise! $hei3_text[43] = HE3_AB// any security set up. The human heart. ///////////////////////////////// AUDIO hei3_audio[1] = SOUND_HE3_AA//There's only ever been one weak link in any security set-up, the human heart. hei3_audio[2] = SOUND_HE3_BA//Another shift over! See you tomorrow! hei3_audio[3] = SOUND_HE3_BB//That was a long shift! See you tomorrow! hei3_audio[4] = SOUND_HE3_CA//Wow, it's nice and tight! hei3_audio[5] = SOUND_HE3_CB//I'm sure you'll squeeze in just fine! hei3_audio[6] = SOUND_HE3_CC//Let's have a look. hei3_audio[7] = SOUND_HE3_CD//Perfect! hei3_audio[8] = SOUND_HE3_CE//Oh hi, Benny... hei3_audio[9] = SOUND_HE3_CF//Yes, master, I'm just trying it on. hei3_audio[10] = SOUND_HE3_CG//You got yours? hei3_audio[11] = SOUND_HE3_CH//Cool, I'll see you at my house in a short while. hei3_audio[12] = SOUND_HE3_DA//The door's open, Master! hei3_audio[13] = SOUND_HE3_DB//Come on in, I'm ready for you! hei3_audio[14] = SOUND_HE3_DC//You've been a naughty girl! hei3_audio[15] = SOUND_HE3_DD//Oh I know! I know! hei3_audio[16] = SOUND_HE3_DE//I want your security card and the entry code for Caligula's! hei3_audio[17] = SOUND_HE3_DF//Oh Benny, you minx! hei3_audio[18] = SOUND_HE3_DG//I'll never tell, you wicked man, never, NEVER! hei3_audio[19] = SOUND_HE3_EA//Where's the keycard? hei3_audio[20] = SOUND_HE3_EB//Confess! hei3_audio[21] = SOUND_HE3_EC//You can't break me! hei3_audio[22] = SOUND_HE3_FA//Enough, master! hei3_audio[23] = SOUND_HE3_FB//The card's in my car outside! hei3_audio[24] = SOUND_HE3_FC//And now, the code... hei3_audio[25] = SOUND_HE3_FD//Spit it out, you filthy worm! hei3_audio[26] = SOUND_HE3_FE//If you're good, I'll punish you more! hei3_audio[27] = SOUND_HE3_FF//I can take it! hei3_audio[28] = SOUND_HE3_FG//Do your worst! hei3_audio[29] = SOUND_HE3_GA//No more! You've broken me! hei3_audio[30] = SOUND_HE3_GB//The code, you worthless trash! hei3_audio[31] = SOUND_HE3_GC//God, you're good at this! hei3_audio[32] = SOUND_HE3_GD//I know you're not Benny! hei3_audio[33] = SOUND_HE3_GE//Give me your number I have to see you again. hei3_audio[34] = SOUND_HE3_HA//ENTRY CODE! hei3_audio[35] = SOUND_HE3_HB//Oh! It's... hei3_audio[36] = SOUND_HE3_HC//A. hei3_audio[37] = SOUND_HE3_HD//B. hei3_audio[38] = SOUND_HE3_HE//C. hei3_audio[39] = SOUND_HE3_HF//D. hei3_audio[40] = SOUND_HE3_HG//E. hei3_audio[41] = SOUND_HE3_HH//F. hei3_audio[42] = SOUND_HE3_HJ//I'll call you, master, I promise! hei3_audio[43] = SOUND_HE3_AB// any security set up. The human heart. hei3_sfx[1] = SOUND_GIMP_SUIT hei3_sfx[2] = SOUND_DOORBELL hei3_sfx[3] = SOUND_DRESSING hei3_sfx[4] = SOUND_PED_MOBRING hei3_sfx_counter = 0 hei3_sfx_playing = 0 hei3_sfx_played = 0 ////////////////////////////// /// PLAYER INTRO CUT-SCENE /// ////////////////////////////// ADD_BLIP_FOR_COORD 2169.0 1662.0 11.0 hei3_casino_blip //GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP Player1 gimpleg gimpleg CLOTHES_TEX_EXTRA1// 2 //IF IS_PLAYER_WEARING player1 0 gimp //OR IS_PLAYER_WEARING player1 1 gimpmask //OR IS_PLAYER_WEARING player1 2 gimpleg //OR IS_PLAYER_WEARING player1 3 gimpshoe //OR IS_PLAYER_WEARING player1 4 gimp SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN ON LOAD_SCENE 2030.1027 1020.7899 9.8203 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SKIP_CUTSCENE_START hei3_text_loop1: WAIT 0 IF hei3_text_loop_done = 0 IF NOT hei3_audio_counter = 0 IF hei3_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED hei3_audio_slot2 CLEAR_MISSION_AUDIO hei3_audio_slot2 ENDIF hei3_audio_playing = 1 ENDIF IF hei3_audio_playing = 1 LOAD_MISSION_AUDIO hei3_audio_slot1 hei3_audio[hei3_audio_counter] hei3_audio_playing = 2 ENDIF IF hei3_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED hei3_audio_slot1 PLAY_MISSION_AUDIO hei3_audio_slot1 PRINT_NOW $hei3_text[hei3_audio_counter] 10000 1 hei3_audio_playing = 3 ENDIF ENDIF IF hei3_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED hei3_audio_slot1 CLEAR_THIS_PRINT $hei3_text[hei3_audio_counter] IF hei3_audio_slot1 = 1 hei3_audio_slot1 = 2 hei3_audio_slot2 = 1 ELSE hei3_audio_slot1 = 1 hei3_audio_slot2 = 2 ENDIF hei3_audio_counter = 0 hei3_audio_playing = 0 ENDIF ENDIF ENDIF SWITCH hei3_mobile CASE 0 IF hei3_audio_playing = 0 hei3_audio_counter = 1 //PRINT (HE3_AA) 5000 1 //There's only ever been one weak link in any security set-up - the human heart. hei3_mobile = 1 GET_GAME_TIMER hei3_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER hei3_text_timer_end hei3_text_timer_diff = hei3_text_timer_end - hei3_text_timer_start IF hei3_text_timer_diff > 1000 IF hei3_audio_playing = 0 hei3_audio_counter = 43// HE3_AB// any security set up. The human heart. hei3_mobile = 2 GET_GAME_TIMER hei3_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER hei3_text_timer_end hei3_text_timer_diff = hei3_text_timer_end - hei3_text_timer_start IF hei3_text_timer_diff > 1000 IF hei3_audio_playing = 0 hei3_text_loop_done = 1 ENDIF ENDIF BREAK ENDSWITCH GOTO hei3_text_loop1 ENDIF SKIP_CUTSCENE_END IF HAS_MISSION_AUDIO_LOADED hei3_audio_slot1 CLEAR_MISSION_AUDIO hei3_audio_slot1 ENDIF CLEAR_PRINTS SET_PLAYER_CONTROL Player1 ON SWITCH_WIDESCREEN OFF PRINT (HEI3_33) 5000 1 //~s~Get to the ~y~casino~s~. ///////////\\\\\\\\\\\\\\ /// MAIN MISSION LOOP \\\ ///////////\\\\\\\\\\\\\\ heist3_main_loop: WAIT 0 /////////////////// /// DEBUG STUFF /// /////////////////// //VIEW_INTEGER_VARIABLE hei3_spankage_rating spank IF hei3_safety_flag = 99999 ADD_BLIP_FOR_COORD 0.0 0.0 0.0 hei3_millie_blip ADD_BLIP_FOR_COORD 0.0 0.0 0.0 hei3_house_blip ADD_BLIP_FOR_COORD 0.0 0.0 0.0 hei3_client_blip ADD_BLIP_FOR_COORD 0.0 0.0 0.0 hei3_sex_shop_blip CREATE_CHAR PEDTYPE_MISSION1 CROGRL3 2191.0 1679.0 11.0 hei3_millie_ped CREATE_CAR CLUB 2175.1809 1695.5220 9.8203 hei3_millie_car CREATE_CHAR PEDTYPE_MISSION1 CROGRL3 2191.0 1679.0 11.0 hei3_client_ped CREATE_CAR FELTZER 2175.1809 1695.5220 9.8203 hei3_client_car CREATE_CHAR PEDTYPE_MISSION1 CROGRL3 2191.0 1679.0 11.0 hei3_doorman_ped ENDIF //////////////////////////////// ///////////////////////////////// ///////////////////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S SET_BIT iActiveGF MILLIE GOTO mission_heist3_passed ENDIF ////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_SPACE WHILE NOT HAS_MODEL_LOADED WINDSOR OR NOT HAS_MODEL_LOADED CROGRL3 OR NOT HAS_MODEL_LOADED CLUB REQUEST_MODEL CLUB REQUEST_MODEL CROGRL3 REQUEST_MODEL WINDSOR GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP Player1 gimpleg gimpleg CLOTHES_TEX_EXTRA1// 2 BUILD_PLAYER_MODEL player1 WAIT 0 ENDWHILE hei3_progress_flag = 5 ENDIF ///// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_1 SET_CHAR_COORDINATES scplayer 2152.7744 1653.3513 10.0469 ENDIF /////////////////////////////////////// /////////////////////////////////////// /////////////////////////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_9 REQUEST_MODEL GUN_DILDO1 WHILE NOT HAS_MODEL_LOADED GUN_DILDO1 WAIT 0 ENDWHILE REMOVE_BLIP hei3_casino_blip REMOVE_BLIP hei3_client_blip REMOVE_BLIP hei3_millie_blip DELETE_CHAR hei3_client_ped DELETE_CAR hei3_client_car DELETE_CHAR hei3_millie_ped DELETE_CAR hei3_millie_car SET_CHAR_COORDINATES scplayer hei3_house_x hei3_house_y hei3_house_z REMOVE_BLIP hei3_house_blip ADD_BLIP_FOR_COORD hei3_house_x hei3_house_y hei3_house_z hei3_house_blip hei3_progress_flag = 9 ENDIF //////////////////////// /// ON WAY TO CASINO /// //////////////////////// IF hei3_progress_flag = 0 IF LOCATE_STOPPED_CHAR_ANY_MEANS_3D scplayer 2169.0 1662.0 11.0 4.0 4.0 4.0 TRUE REMOVE_BLIP hei3_casino_blip SET_PLAYER_CONTROL Player1 OFF DO_FADE 1500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_PED_ROADS_OFF 2096.3352 1656.3969 8.0 2161.6587 1728.2869 10.0 SWITCH_ROADS_OFF 2096.3352 1656.3969 8.0 2161.6587 1728.2869 10.0 REQUEST_MODEL CROGRL3 REQUEST_MODEL CLUB REQUEST_MODEL MAFFA WHILE NOT HAS_MODEL_LOADED CROGRL3 OR NOT HAS_MODEL_LOADED MAFFA OR NOT HAS_MODEL_LOADED CLUB WAIT 0 ENDWHILE CLEAR_AREA 2175.1809 1695.5220 9.8203 30.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR CLUB &_SPANK__ CREATE_CAR CLUB 2175.1809 1695.5220 9.8203 hei3_millie_car CHANGE_CAR_COLOUR hei3_millie_car 126 126 SET_CAN_BURST_CAR_TYRES hei3_millie_car FALSE LOCK_CAR_DOORS hei3_millie_car CARLOCK_LOCKOUT_PLAYER_ONLY SET_CAR_HEADING hei3_millie_car 66.1016 CREATE_CHAR PEDTYPE_MISSION1 CROGRL3 2191.0 1679.0 11.0 hei3_millie_ped SET_CHAR_DECISION_MAKER hei3_millie_ped hei3_decision SET_ANIM_GROUP_FOR_CHAR hei3_millie_ped sexywoman ADD_BLIP_FOR_CHAR hei3_millie_ped hei3_millie_blip SET_CHAR_HEADING hei3_millie_ped 76.0 CREATE_CHAR PEDTYPE_MISSION2 MAFFA 2188.10 1686.4 10.0 hei3_doorman_ped SET_CHAR_HEADING hei3_doorman_ped 78.0 SET_CHAR_DECISION_MAKER hei3_doorman_ped hei3_decision //ADD_BLIP_FOR_COORD hei3_sex_shop_x hei3_sex_shop_y hei3_sex_shop_z hei3_sex_shop_blip //SET_CHAR_COORDINATES scplayer 2176.4304 1681.5559 9.8203 //SET_CHAR_HEADING scplayer 360.0 SWITCH_WIDESCREEN ON IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer hei3_temp_car SET_CAR_COORDINATES hei3_temp_car 2174.0 1662.0 9.8203 SET_CAR_HEADING hei3_temp_car 27.0 ELSE SET_CHAR_COORDINATES scplayer 2174.0 1662.0 9.8203 SET_CHAR_HEADING scplayer 27.0 ENDIF SET_FIXED_CAMERA_POSITION 2191.40 1677.08 12.48 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2182.17 1688.45 8.05 JUMP_CUT hei3_progress_flag = 1 ENDIF ENDIF IF hei3_progress_flag = 1 IF NOT IS_CHAR_DEAD hei3_millie_ped IF NOT IS_CAR_DEAD hei3_millie_car FLUSH_ROUTE //EXTEND_ROUTE 2092.3193 1720.8373 9.6859 //EXTEND_ROUTE 2092.3979 1746.2247 9.6875 //EXTEND_ROUTE 2150.7217 1864.7489 9.6719 EXTEND_ROUTE 2336.2190 1891.0903 9.7792 EXTEND_ROUTE 2355.2810 2114.8167 9.6719 EXTEND_ROUTE 2171.7456 2149.1462 9.6794 EXTEND_ROUTE 2123.5640 2134.4167 9.6797 OPEN_SEQUENCE_TASK hei3_millie_seq TASK_GO_STRAIGHT_TO_COORD -1 2175.0925 1692.7054 9.8203 PEDMOVE_WALK 30000 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_DRIVER -1 hei3_millie_car 20000 TASK_DRIVE_POINT_ROUTE_ADVANCED -1 hei3_millie_car 20.0 MODE_NORMAL 0 DRIVINGMODE_SLOWDOWNFORCARS TASK_CAR_DRIVE_TO_COORD -1 hei3_millie_car 2130.5356 2061.7173 9.6875 20.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_SLOWDOWNFORCARS TASK_CAR_DRIVE_TO_COORD -1 hei3_millie_car 2116.2637 2044.5940 9.8125 20.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_SLOWDOWNFORCARS TASK_CAR_DRIVE_TO_COORD -1 hei3_millie_car 2101.0 2040.0 9.8203 20.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_SLOWDOWNFORCARS TASK_CAR_DRIVE_TO_COORD -1 hei3_millie_car 2096.0 2073.0 9.8203 20.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_SLOWDOWNFORCARS CLOSE_SEQUENCE_TASK hei3_millie_seq PERFORM_SEQUENCE_TASK hei3_millie_ped hei3_millie_seq CLEAR_SEQUENCE_TASK hei3_millie_seq DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS PRINT (HEI3_01) 7000 1 //~s~The ~r~Croupier ~s~has a keycard and knows the code, follow her. //PRINT (HEI3_BB) 5000 1 //CROUPIER:"That was a long shift - see you tomorrow!" hei3_audio_counter = 0 hei3_audio_slot1 = 1 hei3_audio_slot2 = 2 hei3_audio_playing = 0 hei3_text_loop_done = 0 hei3_mobile = 0 hei3_text_timer_diff = 0 hei3_text_timer_end = 0 hei3_text_timer_start = 0 hei3_ahead_counter = 0 hei3_safety_flag = 0 hei3_temp_int = 0 TIMERA = 0 WHILE hei3_safety_flag = 0 //////////////////////////////////////// audio //////////////// IF hei3_text_loop_done = 0 IF NOT hei3_audio_counter = 0 IF hei3_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED hei3_audio_slot2 CLEAR_MISSION_AUDIO hei3_audio_slot2 ENDIF hei3_audio_playing = 1 ENDIF IF hei3_audio_playing = 1 LOAD_MISSION_AUDIO hei3_audio_slot1 hei3_audio[hei3_audio_counter] hei3_audio_playing = 2 ENDIF IF hei3_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED hei3_audio_slot1 PLAY_MISSION_AUDIO hei3_audio_slot1 PRINT_NOW $hei3_text[hei3_audio_counter] 10000 1 hei3_audio_playing = 3 ENDIF ENDIF IF hei3_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED hei3_audio_slot1 IF NOT IS_CHAR_DEAD hei3_millie_ped STOP_CHAR_FACIAL_TALK hei3_millie_ped START_CHAR_FACIAL_TALK hei3_millie_ped 3000 ENDIF CLEAR_THIS_PRINT $hei3_text[hei3_audio_counter] IF hei3_audio_slot1 = 1 hei3_audio_slot1 = 2 hei3_audio_slot2 = 1 ELSE hei3_audio_slot1 = 1 hei3_audio_slot2 = 2 ENDIF hei3_audio_counter = 0 hei3_audio_playing = 0 hei3_text_loop_done = 1 ENDIF ENDIF ENDIF IF NOT IS_MESSAGE_BEING_DISPLAYED IF hei3_audio_playing = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped STOP_CHAR_FACIAL_TALK hei3_millie_ped START_CHAR_FACIAL_TALK hei3_millie_ped 3000 ENDIF hei3_audio_counter = 2 //PRINT (HE3_BA) 5000 1 //CROUPIER:"Another shift over! See you tomorrow!" ENDIF ENDIF ENDIF /////////// if cut-scene skipped /////////// IF IS_SKIP_CUTSCENE_BUTTON_PRESSED hei3_safety_flag = 1 IF NOT IS_CHAR_DEAD hei3_millie_ped AND NOT IS_CAR_DEAD hei3_millie_car IF NOT IS_CHAR_IN_CAR hei3_millie_ped hei3_millie_car WARP_CHAR_INTO_CAR hei3_millie_ped hei3_millie_car ENDIF CLOSE_ALL_CAR_DOORS hei3_millie_car FLUSH_ROUTE //EXTEND_ROUTE 2150.7217 1864.7489 9.6719 EXTEND_ROUTE 2336.2190 1891.0903 9.7792 EXTEND_ROUTE 2355.2810 2114.8167 9.6719 EXTEND_ROUTE 2171.7456 2149.1462 9.6794 EXTEND_ROUTE 2128.5640 2134.4167 9.6797 OPEN_SEQUENCE_TASK hei3_millie_seq TASK_DRIVE_POINT_ROUTE_ADVANCED -1 hei3_millie_car 20.0 MODE_NORMAL 0 DRIVINGMODE_SLOWDOWNFORCARS TASK_CAR_DRIVE_TO_COORD -1 hei3_millie_car 2130.5356 2061.7173 9.6875 20.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_SLOWDOWNFORCARS TASK_CAR_DRIVE_TO_COORD -1 hei3_millie_car 2116.2637 2044.5940 9.8125 20.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_SLOWDOWNFORCARS TASK_CAR_DRIVE_TO_COORD -1 hei3_millie_car 2101.0 2040.0 9.8203 20.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_SLOWDOWNFORCARS TASK_CAR_DRIVE_TO_COORD -1 hei3_millie_car 2096.0 2073.0 9.8203 20.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_SLOWDOWNFORCARS CLOSE_SEQUENCE_TASK hei3_millie_seq PERFORM_SEQUENCE_TASK hei3_millie_ped hei3_millie_seq CLEAR_SEQUENCE_TASK hei3_millie_seq CLEAR_AREA 2175.1809 1695.5220 9.8203 30.0 TRUE ENDIF ENDIF /////////////////////////////////////////////////// IF NOT IS_CHAR_DEAD hei3_millie_ped AND NOT IS_CAR_DEAD hei3_millie_car GET_SCRIPT_TASK_STATUS hei3_millie_ped PERFORM_SEQUENCE_TASK hei3_task_status IF hei3_task_status = PERFORMING_TASK GET_SEQUENCE_PROGRESS hei3_millie_ped hei3_task_status IF LOCATE_CHAR_ANY_MEANS_CAR_3D hei3_millie_ped hei3_millie_car 7.0 7.0 5.0 FALSE IF hei3_temp_int = 0 PRINT (HEI3_02) 5000 1 //~s~If you get too close you'll spook her, but she gets too far ahead you'll lose her. SET_FIXED_CAMERA_POSITION 2182.17 1694.54 11.72 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2108.69 1674.08 -4.60 JUMP_CUT IF NOT IS_CHAR_DEAD hei3_doorman_ped CLEAR_CHAR_TASKS hei3_doorman_ped TASK_GO_STRAIGHT_TO_COORD hei3_doorman_ped 2196.62 1684.18 12.41 PEDMOVE_WALK 30000 ENDIF hei3_temp_int = 1 ENDIF ENDIF IF hei3_task_status = 2 WAIT 1000 CLEAR_AREA 2175.1809 1695.5220 9.8203 30.0 TRUE IF NOT IS_CAR_DEAD hei3_millie_car CLOSE_ALL_CAR_DOORS hei3_millie_car ENDIF hei3_safety_flag = 1 ENDIF ENDIF ELSE hei3_safety_flag = 1 ENDIF WAIT 0 ENDWHILE CLEAR_PRINTS MARK_CHAR_AS_NO_LONGER_NEEDED hei3_doorman_ped REMOVE_CHAR_ELEGANTLY hei3_doorman_ped MARK_MODEL_AS_NO_LONGER_NEEDED MAFFA //////////////////////////////////////////// MARK_CAR_AS_NO_LONGER_NEEDED hei3_temp_car RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL Player1 ON SWITCH_WIDESCREEN OFF DISPLAY_ONSCREEN_COUNTER_WITH_STRING hei3_spook COUNTER_DISPLAY_BAR HEI3_94 TIMERB = 0 TIMERA = 0 hei3_progress_flag = 2 CHECKPOINT_SAVE 99 ENDIF ENDIF ENDIF //////////////////////////////////// /// FOLLOWING MILLIE TO S&M SHOP /// //////////////////////////////////// IF hei3_progress_flag = 2 IF NOT IS_CHAR_DEAD hei3_millie_ped IF NOT IS_CAR_DEAD hei3_millie_car GET_SCRIPT_TASK_STATUS hei3_millie_ped PERFORM_SEQUENCE_TASK hei3_task_status IF hei3_task_status = FINISHED_TASK // cut-scene of millie entering sex shop // CLEAR_AREA 2096.0 2073.0 9.8203 20.0 TRUE CLEAR_ONSCREEN_COUNTER hei3_spook GOSUB check_player_is_safe IF player_is_completely_safe = 1 SET_PLAYER_CONTROL Player1 OFF SWITCH_WIDESCREEN ON CLEAR_PRINTS SET_CAR_COORDINATES hei3_millie_car 2095.9131 2074.0813 9.8203 SET_CAR_HEADING hei3_millie_car 4.4441 SET_FIXED_CAMERA_POSITION 2098.45 2081.99 9.88 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2056.37 2043.26 26.30 JUMP_CUT SKIP_CUTSCENE_START IF IS_CHAR_IN_ANY_CAR scplayer IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2088.0 2076.0 11.0 5.0 5.0 3.0 FALSE SET_CHAR_COORDINATES scplayer 2092.0 2063.0 11.0 SET_CHAR_HEADING scplayer 0.0 ENDIF ENDIF OPEN_SEQUENCE_TASK hei3_millie_seq IF IS_CHAR_IN_ANY_CAR hei3_millie_ped TASK_LEAVE_ANY_CAR -1 ENDIF TASK_GO_STRAIGHT_TO_COORD -1 2085.7207 2074.7605 10.0579 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK hei3_millie_seq PERFORM_SEQUENCE_TASK hei3_millie_ped hei3_millie_seq CLEAR_SEQUENCE_TASK hei3_millie_seq hei3_safety_flag = 0 TIMERA = 0 WHILE hei3_safety_flag = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped GET_SCRIPT_TASK_STATUS hei3_millie_ped PERFORM_SEQUENCE_TASK hei3_task_status IF hei3_task_status = FINISHED_TASK hei3_safety_flag = 1 ENDIF ELSE hei3_safety_flag = 1 ENDIF WAIT 0 ENDWHILE SKIP_CUTSCENE_END ENDIF IF NOT IS_CAR_DEAD hei3_millie_car SET_CAR_COORDINATES hei3_millie_car 2095.9131 2074.0813 9.8203 SET_CAR_HEADING hei3_millie_car 4.4441 CLOSE_ALL_CAR_DOORS hei3_millie_car ENDIF RESTORE_CAMERA_JUMPCUT REMOVE_BLIP hei3_millie_blip ADD_BLIP_FOR_COORD hei3_sex_shop_x hei3_sex_shop_y hei3_sex_shop_z hei3_sex_shop_blip DELETE_CHAR hei3_millie_ped MARK_CHAR_AS_NO_LONGER_NEEDED hei3_millie_ped SET_PLAYER_CONTROL Player1 ON SWITCH_WIDESCREEN OFF PRINT (HEI3_03) 5000 1 //~s~She's gone into the sex ~y~shop~s~, follow her inside. hei3_temp_int = 0 hei3_progress_flag = 3 ELSE /////////////////////////////// /// spooked check code here /// /////////////////////////////// GET_CHAR_COORDINATES scplayer hei3_player_x hei3_player_y hei3_player_z GET_CHAR_COORDINATES hei3_millie_ped hei3_millie_x hei3_millie_y hei3_millie_z GET_DISTANCE_BETWEEN_COORDS_3D hei3_player_x hei3_player_y hei3_player_z hei3_millie_x hei3_millie_y hei3_millie_z hei3_distance_float hei3_distance_int =# hei3_distance_float IF hei3_task_status = PERFORMING_TASK GET_SEQUENCE_PROGRESS hei3_millie_ped hei3_task_status IF hei3_task_status < 5 IF hei3_spooked_check = 1 IF hei3_distance_int > 140 CLEAR_PRINTS IF hei3_distance_int > 168 // FAIL IF NOT IS_CHAR_ON_SCREEN hei3_millie_ped IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT (HEI3_16) 5000 1 //~r~You lost her! GOTO mission_heist3_failed ELSE PRINT (HEI3_10) 1000 1 //~s~The ~r~Croupier~s~ is almost out of sight, you need to get closer! ENDIF ELSE PRINT (HEI3_10) 1000 1 //~s~The ~r~Croupier~s~ is almost out of sight, you need to get closer! ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer hei3_millie_ped 22.5 22.5 20.0 FALSE IF TIMERA > 64 ++ hei3_spook TIMERA = 0 ENDIF ELSE IF TIMERA > 150 IF hei3_spook > 0 -- hei3_spook ENDIF TIMERA = 0 ENDIF ENDIF ELSE IF hei3_spooked_check = 0 IF TIMERB > 4000 hei3_spooked_check = 1 ENDIF ENDIF ENDIF IF hei3_spook < 0 hei3_spook = 0 ELSE IF hei3_spook > 100 hei3_spook = 100 ENDIF ENDIF IF hei3_spook > 10 IF hei3_flag_player_had_warning1_fm2 = 0 PRINT_NOW (HEI3_11) 5000 1 //~s~You're too close, back off before you spook her! hei3_flag_player_had_warning1_fm2 = 1 ENDIF ENDIF IF hei3_spook = 100 IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg CLEAR_PRINTS DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT_NOW (HEI3_17) 5000 1 //~r~You got too close! GOTO mission_heist3_failed ENDIF IF NOT IS_CHAR_IN_CAR hei3_millie_ped hei3_millie_car OR IS_CHAR_TOUCHING_VEHICLE scplayer hei3_millie_car OR HAS_CAR_BEEN_DAMAGED_BY_CHAR hei3_millie_car scplayer hei3_spook = 100 IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg CLEAR_PRINTS DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT_NOW (HEI3_31) 5000 1 //"Something's spooked the croupier GOTO mission_heist3_failed ENDIF ENDIF ENDIF /////////////////////////// /// end of spook checks /// /////////////////////////// ENDIF ELSE CLEAR_PRINTS IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT (HEI3_18) 5000 1 //~r~You destroyed her car, she's not going to help you now! GOTO mission_heist3_failed ENDIF ELSE CLEAR_PRINTS IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT (HEI3_14) 5000 1 //~r~You killed the croupier! GOTO mission_heist3_failed ENDIF ENDIF //////////////////////////// /// PLAYER IN SEX SHOP /// //////////////////////////// IF hei3_progress_flag = 3 IF IS_CAR_DEAD hei3_millie_car CLEAR_PRINTS IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT (HEI3_18) 5000 1 //~r~You destroyed her car, she's not going to help you now! GOTO mission_heist3_failed ENDIF //IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2085.7207 2074.7605 10.0579 200.0 200.0 50.0 FALSE// sex shop exterior IF hei3_temp_int = 0 IF LOCATE_CHAR_ON_FOOT_3D scplayer 2086.7256 2074.3516 10.0579 2.0 2.0 3.0 TRUE hei3_temp_int = 1 SET_PLAYER_CONTROL Player1 OFF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2086.7256 2074.3516 5.0579 SET_AREA_VISIBLE 3 REQUEST_COLLISION -100.4320 -23.1933 LOAD_SCENE -100.4320 -23.1933 999.7261 SET_CHAR_COORDINATES scplayer -100.4320 -23.1933 999.7261 SET_CHAR_HEADING scplayer -0.0000 LOAD_SPECIAL_CHARACTER 1 CROGRL2 REQUEST_MODEL CELLPHONE REQUEST_MODEL BMYPIMP REQUEST_MODEL WFYSEX REQUEST_MODEL BMOCHIL REQUEST_MODEL WMYST WHILE NOT HAS_MODEL_LOADED CELLPHONE OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED BMYPIMP OR NOT HAS_MODEL_LOADED WFYSEX OR NOT HAS_MODEL_LOADED BMOCHIL OR NOT HAS_MODEL_LOADED WMYST WAIT 0 ENDWHILE ////////////////////////////////////////////////////// ///// NEED TO CREATE SOME AMBIENT PEDS IN HERE?? ///// ////////////////////////////////////////////////////// CREATE_CHAR PEDTYPE_MISSION1 BMOCHIL -100.6538 -17.6330 999.7188 hei3_shop_ped1// customer 1 SET_CHAR_HEADING hei3_shop_ped1 93.7683 CREATE_CHAR PEDTYPE_MISSION1 WMYST -108.0798 -18.0669 999.7261 hei3_shop_ped2// customer 2 SET_CHAR_HEADING hei3_shop_ped2 89.3157 CREATE_CHAR PEDTYPE_MISSION1 BMYPIMP -105.6009 -13.6508 999.7261 hei3_shop_ped3// customer 3 SET_CHAR_HEADING hei3_shop_ped3 176.8410 CREATE_CHAR PEDTYPE_MISSION1 WFYSEX -103.7278 -24.3711 999.7261 hei3_shop_ped4// server 1 SET_CHAR_HEADING hei3_shop_ped4 349.7995 CREATE_CHAR PEDTYPE_MISSION1 WFYSEX -104.7150 -8.9155 999.7188 hei3_shop_ped5// server2 SET_CHAR_HEADING hei3_shop_ped5 179.3188 ///////////////////////////////////////////////////// ///////////////////////////////////////////////////// ///////////////////////////////////////////////////// CREATE_CHAR PEDTYPE_SPECIAL WFYSEX -113.9837 -8.3695 999.7812 hei3_millie_ped //CREATE_CHAR PEDTYPE_SPECIAL SPECIAL01 -113.9837 -8.3695 999.7812 hei3_millie_ped SET_CHAR_NEVER_TARGETTED hei3_millie_ped TRUE SET_CHAR_HEALTH hei3_millie_ped 200 SET_CHAR_SUFFERS_CRITICAL_HITS hei3_millie_ped FALSE SET_CHAR_DECISION_MAKER hei3_millie_ped hei3_decision SET_ANIM_GROUP_FOR_CHAR hei3_millie_ped sexywoman SET_CHAR_HEADING hei3_millie_ped 183.0375 IF HAS_ANIMATION_LOADED CLOTHES TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer CLO_Pose_Torso CLOTHES 1000.0 TRUE FALSE FALSE TRUE -1 // CLO_Pose_Torso ENDIF REMOVE_BLIP hei3_sex_shop_blip REMOVE_BLIP hei3_millie_blip //ADD_BLIP_FOR_CHAR hei3_millie_ped hei3_millie_blip CREATE_CHAR PEDTYPE_MISSION1 WFYSEX -115.8863 -12.0374 999.7886 hei3_doorman_ped SET_ANIM_GROUP_FOR_CHAR hei3_doorman_ped sexywoman SET_CHAR_DECISION_MAKER hei3_doorman_ped hei3_decision SET_CHAR_HEADING hei3_doorman_ped 297.3894 SET_CHAR_COORDINATES scplayer -100.4320 -23.1933 999.7261 SET_CHAR_HEADING scplayer -0.0000 WAIT 1000 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL Player1 ON PRINT (HEI3_29) 5000 1 //~s~The Croupier is in here somewhere, find her. ENDIF ENDIF IF hei3_temp_int = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -107.1254 -12.2446 1000.8212 15.2999 15.0999 35.2997 FALSE // sex shop interior ///////////////////////////////////////////////////////////////////////////////////// /// CHECK IF PLAYER IS CLOSE TO ONE OF THE COUNTER STAFF AND HAVE THEM SAY THINGS /// ///////////////////////////////////////////////////////////////////////////////////// IF NOT IS_CHAR_DEAD hei3_shop_ped4 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer hei3_shop_ped4 3.0 3.0 3.0 FALSE SET_CHAR_SAY_CONTEXT_IMPORTANT hei3_shop_ped4 CONTEXT_GLOBAL_EYEING_PLAYER TRUE FALSE FALSE hie3_dummy ENDIF ENDIF IF NOT IS_CHAR_DEAD hei3_shop_ped5 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer hei3_shop_ped5 3.0 3.0 3.0 FALSE SET_CHAR_SAY_CONTEXT_IMPORTANT hei3_shop_ped5 CONTEXT_GLOBAL_GENERIC_HI_FEMALE TRUE FALSE FALSE hie3_dummy ENDIF ENDIF ///////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// /// INSIDE SEX SHOP IF NOT IS_CHAR_DEAD hei3_millie_ped IF NOT IS_CHAR_DEAD hei3_doorman_ped IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR hei3_millie_ped scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR hei3_doorman_ped scplayer CLEAR_PRINTS IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF IF NOT IS_CHAR_DEAD hei3_millie_ped AND NOT IS_CHAR_HEAD_MISSING hei3_millie_ped GET_CHAR_HEALTH hei3_millie_ped hei3_temp_int IF hei3_temp_int > 0 PRINT (HEI3_31) 5000 1// ~r~Something's spooked the Croupier! ELSE PRINT HEI3_14 5000 1 ENDIF ELSE PRINT HEI3_14 5000 1 ENDIF GOTO mission_heist3_failed ENDIF IF LOCATE_STOPPED_CHAR_ANY_MEANS_3D SCPLAYER -109.7757 -12.6704 999.7188 1.2 1.2 3.1000 TRUE //OR HAS_CHAR_SPOTTED_CHAR hei3_doorman_ped scplayer CLEAR_AREA -107.7856 -12.4046 999.7812 50.0 TRUE SET_PLAYER_CONTROL Player1 OFF SWITCH_WIDESCREEN ON CLEAR_PRINTS SET_FIXED_CAMERA_POSITION -113.08 -12.39 1000.76 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -119.54 -8.15 1001.83 JUMP_CUT SET_CHAR_COORDINATES scplayer -109.7757 -12.6704 999.7188 SET_CHAR_HEADING scplayer 59.7399 SKIP_CUTSCENE_START hei3_audio_counter = 0 hei3_audio_slot1 = 1 hei3_audio_slot2 = 2 hei3_audio_playing = 0 hei3_text_loop_done = 0 hei3_mobile = 0 hei3_text_timer_diff = 0 hei3_text_timer_end = 0 hei3_text_timer_start = 0 hei3_ahead_counter = 0 hei3_text_loop2: WAIT 0 IF hei3_text_loop_done = 0 IF NOT hei3_audio_counter = 0 IF hei3_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED hei3_audio_slot2 CLEAR_MISSION_AUDIO hei3_audio_slot2 ENDIF hei3_audio_playing = 1 ENDIF IF hei3_audio_playing = 1 LOAD_MISSION_AUDIO hei3_audio_slot1 hei3_audio[hei3_audio_counter] hei3_audio_playing = 2 ENDIF IF hei3_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED hei3_audio_slot1 PLAY_MISSION_AUDIO hei3_audio_slot1 PRINT_NOW $hei3_text[hei3_audio_counter] 10000 1 hei3_audio_playing = 3 ENDIF ENDIF IF hei3_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED hei3_audio_slot1 CLEAR_THIS_PRINT $hei3_text[hei3_audio_counter] IF hei3_audio_slot1 = 1 hei3_audio_slot1 = 2 hei3_audio_slot2 = 1 ELSE hei3_audio_slot1 = 1 hei3_audio_slot2 = 2 ENDIF hei3_audio_counter = 0 hei3_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED hei3_audio_slot2 IF hei3_audio_counter < 8 hei3_ahead_counter = hei3_audio_counter + 1 LOAD_MISSION_AUDIO hei3_audio_slot2 hei3_audio[hei3_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH hei3_mobile CASE 0 IF hei3_audio_playing = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped STOP_CHAR_FACIAL_TALK hei3_millie_ped START_CHAR_FACIAL_TALK hei3_millie_ped 3000 ENDIF hei3_audio_counter = 4//PRINT (HE3_CA) 5000 1 //CROUPIER:"Wow, it's nice and tight!" hei3_mobile = 1 GET_GAME_TIMER hei3_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER hei3_text_timer_end hei3_text_timer_diff = hei3_text_timer_end - hei3_text_timer_start IF hei3_text_timer_diff > 1000 IF hei3_audio_playing = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped STOP_CHAR_FACIAL_TALK hei3_millie_ped ENDIF IF NOT IS_CHAR_DEAD hei3_doorman_ped START_CHAR_FACIAL_TALK hei3_doorman_ped 3000 ENDIF hei3_audio_counter = 5 //PRINT (HE3_CB) 5000 1 //"I'm sure you'll squeeze in just fine!" hei3_mobile = 2 GET_GAME_TIMER hei3_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER hei3_text_timer_end hei3_text_timer_diff = hei3_text_timer_end - hei3_text_timer_start IF hei3_text_timer_diff > 1000 IF hei3_audio_playing = 0 hei3_audio_counter = 6 //PRINT (HE3_CC) 5000 1 //"Let's have a look" hei3_mobile = 3 GET_GAME_TIMER hei3_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER hei3_text_timer_end hei3_text_timer_diff = hei3_text_timer_end - hei3_text_timer_start IF hei3_text_timer_diff > 1000 IF hei3_audio_playing = 0 IF NOT IS_CHAR_DEAD hei3_doorman_ped STOP_CHAR_FACIAL_TALK hei3_doorman_ped ENDIF hei3_text_loop_done = 1 ENDIF ENDIF BREAK ENDSWITCH GOTO hei3_text_loop2 ENDIF //hei3_text_loop_done = 1 IF NOT IS_CHAR_DEAD hei3_millie_ped IF NOT IS_CHAR_DEAD hei3_doorman_ped OPEN_SEQUENCE_TASK hei3_millie_seq TASK_GO_STRAIGHT_TO_COORD -1 -113.8582 -9.7549 999.7812 PEDMOVE_WALK -1 // to door of booth TASK_GO_STRAIGHT_TO_COORD -1 -114.2882 -11.5372 999.7886 PEDMOVE_WALK -1// to corridor TASK_TURN_CHAR_TO_FACE_CHAR -1 hei3_doorman_ped CLOSE_SEQUENCE_TASK hei3_millie_seq PERFORM_SEQUENCE_TASK hei3_millie_ped hei3_millie_seq CLEAR_SEQUENCE_TASK hei3_millie_seq ENDIF ENDIF hei3_audio_counter = 0 hei3_audio_slot1 = 1 hei3_audio_slot2 = 2 hei3_audio_playing = 0 hei3_text_loop_done = 0 hei3_mobile = 0 hei3_text_timer_diff = 0 hei3_text_timer_end = 0 hei3_text_timer_start = 0 hei3_ahead_counter = 0 hei3_safety_flag = 0 hei3_temp_int = 0 TIMERA = 0 WHILE hei3_safety_flag = 0 IF hei3_text_loop_done = 0 IF NOT hei3_audio_counter = 0 IF hei3_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED hei3_audio_slot2 CLEAR_MISSION_AUDIO hei3_audio_slot2 ENDIF hei3_audio_playing = 1 ENDIF IF hei3_audio_playing = 1 LOAD_MISSION_AUDIO hei3_audio_slot1 hei3_audio[hei3_audio_counter] hei3_audio_playing = 2 ENDIF IF hei3_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED hei3_audio_slot1 PLAY_MISSION_AUDIO hei3_audio_slot1 PRINT_NOW $hei3_text[hei3_audio_counter] 10000 1 hei3_audio_playing = 3 ENDIF ENDIF IF hei3_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED hei3_audio_slot1 IF NOT IS_CHAR_DEAD hei3_millie_ped STOP_CHAR_FACIAL_TALK hei3_millie_ped ENDIF CLEAR_THIS_PRINT $hei3_text[hei3_audio_counter] IF hei3_audio_slot1 = 1 hei3_audio_slot1 = 2 hei3_audio_slot2 = 1 ELSE hei3_audio_slot1 = 1 hei3_audio_slot2 = 2 ENDIF hei3_audio_counter = 0 hei3_audio_playing = 0 hei3_text_loop_done = 1 ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD hei3_millie_ped GET_SCRIPT_TASK_STATUS hei3_millie_ped PERFORM_SEQUENCE_TASK hei3_task_status IF hei3_task_status = FINISHED_TASK IF hei3_audio_playing = 0 hei3_safety_flag = 1 ENDIF ELSE IF hei3_temp_int = 0 IF hei3_task_status = PERFORMING_TASK GET_SEQUENCE_PROGRESS hei3_millie_ped hei3_task_status IF hei3_task_status = 2 IF hei3_audio_playing = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped STOP_CHAR_FACIAL_TALK hei3_millie_ped START_CHAR_FACIAL_TALK hei3_millie_ped 2000 ENDIF hei3_audio_counter = 7 //PRINT (HE3_CD) 5000 1 //CROUPIER:"Perfect!" hei3_temp_int = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ELSE hei3_safety_flag = 1 ENDIF WAIT 0 ENDWHILE WHILE IS_MESSAGE_BEING_DISPLAYED WAIT 0 ENDWHILE ////////////////////// // phone rings here // ////////////////////// IF NOT IS_CHAR_DEAD hei3_millie_ped OPEN_SEQUENCE_TASK hei3_millie_seq TASK_GO_STRAIGHT_TO_COORD -1 -112.6415 -12.4015 999.7812 PEDMOVE_WALK -1 // to answer phone TASK_ACHIEVE_HEADING -1 247.0 CLOSE_SEQUENCE_TASK hei3_millie_seq PERFORM_SEQUENCE_TASK hei3_millie_ped hei3_millie_seq CLEAR_SEQUENCE_TASK hei3_millie_seq ENDIF SET_FIXED_CAMERA_POSITION -112.15 -11.94 1001.16 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -123.84 -14.32 1002.43 JUMP_CUT hei3_safety_flag = 0 hei3_temp_int = 0 TIMERA = 0 WHILE hei3_safety_flag = 0 IF NOT hei3_sfx_counter = 0 IF hei3_sfx_playing = 0 IF HAS_MISSION_AUDIO_LOADED 3 CLEAR_MISSION_AUDIO 3 ENDIF hei3_sfx_playing = 1 ENDIF IF hei3_sfx_playing = 1 LOAD_MISSION_AUDIO 3 hei3_sfx[hei3_sfx_counter] // audio fx to be used hei3_sfx_playing = 2 ENDIF IF hei3_sfx_playing = 2 IF HAS_MISSION_AUDIO_LOADED 3 PLAY_MISSION_AUDIO 3 hei3_sfx_playing = 3 ENDIF ENDIF IF hei3_sfx_playing = 3 IF HAS_MISSION_AUDIO_FINISHED 3 hei3_sfx_counter = 0 hei3_sfx_playing = 0 TIMERA = 0 ENDIF ENDIF ENDIF IF hei3_sfx_playing = 0 IF TIMERA < 2000 hei3_sfx_counter = 4 ENDIF ENDIF IF NOT IS_CHAR_DEAD hei3_millie_ped GET_SCRIPT_TASK_STATUS hei3_millie_ped PERFORM_SEQUENCE_TASK hei3_task_status IF hei3_task_status = FINISHED_TASK hei3_safety_flag = 1 ENDIF ELSE hei3_safety_flag = 1 ENDIF WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD hei3_millie_ped CLEAR_MISSION_AUDIO 3 TASK_USE_MOBILE_PHONE hei3_millie_ped TRUE WAIT 2000 ENDIF hei3_audio_counter = 0 hei3_audio_slot1 = 1 hei3_audio_slot2 = 2 hei3_audio_playing = 0 hei3_text_loop_done = 0 hei3_mobile = 0 hei3_text_timer_diff = 0 hei3_text_timer_end = 0 hei3_text_timer_start = 0 hei3_ahead_counter = 0 hei3_text_loop3: WAIT 0 IF hei3_text_loop_done = 0 IF NOT hei3_audio_counter = 0 IF hei3_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED hei3_audio_slot2 CLEAR_MISSION_AUDIO hei3_audio_slot2 ENDIF hei3_audio_playing = 1 ENDIF IF hei3_audio_playing = 1 LOAD_MISSION_AUDIO hei3_audio_slot1 hei3_audio[hei3_audio_counter] hei3_audio_playing = 2 ENDIF IF hei3_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED hei3_audio_slot1 PLAY_MISSION_AUDIO hei3_audio_slot1 PRINT_NOW $hei3_text[hei3_audio_counter] 10000 1 hei3_audio_playing = 3 ENDIF ENDIF IF hei3_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED hei3_audio_slot1 IF NOT IS_CHAR_DEAD hei3_millie_ped STOP_CHAR_FACIAL_TALK hei3_millie_ped ENDIF CLEAR_THIS_PRINT $hei3_text[hei3_audio_counter] IF hei3_audio_slot1 = 1 hei3_audio_slot1 = 2 hei3_audio_slot2 = 1 ELSE hei3_audio_slot1 = 1 hei3_audio_slot2 = 2 ENDIF hei3_audio_counter = 0 hei3_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED hei3_audio_slot2 IF hei3_audio_counter < 8 hei3_ahead_counter = hei3_audio_counter + 1 LOAD_MISSION_AUDIO hei3_audio_slot2 hei3_audio[hei3_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH hei3_mobile CASE 0 IF hei3_audio_playing = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped STOP_CHAR_FACIAL_TALK hei3_millie_ped START_CHAR_FACIAL_TALK hei3_millie_ped 3000 ENDIF hei3_audio_counter = 8 //PRINT (HE3_CE) 4000 1 //CROUPIER:"Oh hi Benny..." hei3_mobile = 1 GET_GAME_TIMER hei3_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER hei3_text_timer_end hei3_text_timer_diff = hei3_text_timer_end - hei3_text_timer_start IF hei3_text_timer_diff > 1000 IF hei3_audio_playing = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped START_CHAR_FACIAL_TALK hei3_millie_ped 3000 ENDIF hei3_audio_counter = 9 //PRINT (HE3_CF) 5000 1 //CROUPIER:"Yes master, I'm just trying it on." hei3_mobile = 2 GET_GAME_TIMER hei3_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER hei3_text_timer_end hei3_text_timer_diff = hei3_text_timer_end - hei3_text_timer_start IF hei3_text_timer_diff > 1000 IF hei3_audio_playing = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped START_CHAR_FACIAL_TALK hei3_millie_ped 2000 ENDIF hei3_audio_counter = 10 //PRINT (HE3_CG) 4000 1 //CROUPIER:"You got yours?" hei3_mobile = 3 GET_GAME_TIMER hei3_text_timer_start ENDIF ENDIF BREAK CASE 3 GET_GAME_TIMER hei3_text_timer_end hei3_text_timer_diff = hei3_text_timer_end - hei3_text_timer_start IF hei3_text_timer_diff > 1000 IF hei3_audio_playing = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped START_CHAR_FACIAL_TALK hei3_millie_ped 3000 ENDIF hei3_audio_counter = 11 //PRINT (HE3_CH) 5000 1 //CROUPIER:"Cool, I'll see you at my house in a short while." hei3_mobile = 4 GET_GAME_TIMER hei3_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER hei3_text_timer_end hei3_text_timer_diff = hei3_text_timer_end - hei3_text_timer_start IF hei3_text_timer_diff > 1000 IF hei3_audio_playing = 0 hei3_text_loop_done = 1 ENDIF ENDIF BREAK ENDSWITCH GOTO hei3_text_loop3 ENDIF IF NOT IS_CHAR_DEAD hei3_millie_ped GET_SCRIPT_TASK_STATUS hei3_millie_ped TASK_USE_MOBILE_PHONE hei3_task_status IF NOT hei3_task_status = FINISHED_TASK TASK_USE_MOBILE_PHONE hei3_millie_ped FALSE ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE ENDIF IF NOT IS_CHAR_DEAD hei3_millie_ped OPEN_SEQUENCE_TASK hei3_millie_seq TASK_ACHIEVE_HEADING -1 87.0 TASK_GO_STRAIGHT_TO_COORD -1 -114.2882 -11.5372 999.7886 PEDMOVE_WALK -1// to corridor TASK_GO_STRAIGHT_TO_COORD -1 -113.8582 -9.7549 999.7812 PEDMOVE_WALK -1 // to door of booth TASK_GO_STRAIGHT_TO_COORD -1 -113.9837 -8.3695 999.7812 PEDMOVE_WALK -1 // to booth CLOSE_SEQUENCE_TASK hei3_millie_seq PERFORM_SEQUENCE_TASK hei3_millie_ped hei3_millie_seq CLEAR_SEQUENCE_TASK hei3_millie_seq ENDIF IF NOT IS_CHAR_DEAD hei3_doorman_ped OPEN_SEQUENCE_TASK hei3_millie_seq TASK_STAND_STILL -1 3000 TASK_GO_STRAIGHT_TO_COORD -1 -102.0 -12.0 1001.0 PEDMOVE_WALK -1 // to answer phone CLOSE_SEQUENCE_TASK hei3_millie_seq PERFORM_SEQUENCE_TASK hei3_doorman_ped hei3_millie_seq CLEAR_SEQUENCE_TASK hei3_millie_seq ENDIF SET_FIXED_CAMERA_POSITION -106.63 -11.88 1001.28 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -120.22 -11.77 1000.71 JUMP_CUT hei3_safety_flag = 0 hei3_temp_int = 0 TIMERA = 0 WHILE hei3_safety_flag = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped GET_SCRIPT_TASK_STATUS hei3_millie_ped PERFORM_SEQUENCE_TASK hei3_task_status IF hei3_task_status = FINISHED_TASK // sitting in car hei3_safety_flag = 1 ELSE IF hei3_task_status = PERFORMING_TASK GET_SEQUENCE_PROGRESS hei3_millie_ped hei3_task_status IF hei3_task_status = 3 hei3_safety_flag = 1 ENDIF ENDIF ENDIF ELSE hei3_safety_flag = 1 ENDIF WAIT 0 ENDWHILE hei3_safety_flag = 0 hei3_sfx_counter = 3 hei3_sfx_playing = 0 WHILE hei3_safety_flag = 0 IF NOT hei3_sfx_counter = 0 IF hei3_sfx_playing = 0 IF HAS_MISSION_AUDIO_LOADED 3 CLEAR_MISSION_AUDIO 3 ENDIF hei3_sfx_playing = 1 ENDIF IF hei3_sfx_playing = 1 LOAD_MISSION_AUDIO 3 hei3_sfx[hei3_sfx_counter] // audio fx to be used hei3_sfx_playing = 2 ENDIF IF hei3_sfx_playing = 2 IF HAS_MISSION_AUDIO_LOADED 3 PLAY_MISSION_AUDIO 3 hei3_sfx_playing = 3 ENDIF ENDIF IF hei3_sfx_playing = 3 IF HAS_MISSION_AUDIO_FINISHED 3 hei3_sfx_counter = 0 hei3_sfx_playing = 0 hei3_safety_flag = 1 ENDIF ENDIF ENDIF WAIT 0 ENDWHILE DO_FADE 1500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DELETE_CHAR hei3_millie_ped MARK_CHAR_AS_NO_LONGER_NEEDED hei3_millie_ped CREATE_CHAR PEDTYPE_MISSION1 CROGRL3 -100.3376 -20.1905 999.7812 hei3_millie_ped SET_CHAR_DECISION_MAKER hei3_millie_ped hei3_decision SET_ANIM_GROUP_FOR_CHAR hei3_millie_ped sexywoman SET_CHAR_HEADING hei3_millie_ped 183.4416 SET_FIXED_CAMERA_POSITION -101.69 -20.20 1000.67 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -84.83 -44.52 1005.63 JUMP_CUT DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD hei3_millie_ped OPEN_SEQUENCE_TASK hei3_millie_seq TASK_GO_STRAIGHT_TO_COORD -1 -100.2427 -24.2149 999.7886 PEDMOVE_WALK -1 // to exit CLOSE_SEQUENCE_TASK hei3_millie_seq PERFORM_SEQUENCE_TASK hei3_millie_ped hei3_millie_seq CLEAR_SEQUENCE_TASK hei3_millie_seq ENDIF hei3_safety_flag = 0 hei3_temp_int = 0 TIMERA = 0 WHILE hei3_safety_flag = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped GET_SCRIPT_TASK_STATUS hei3_millie_ped PERFORM_SEQUENCE_TASK hei3_task_status IF hei3_task_status = FINISHED_TASK hei3_safety_flag = 1 ENDIF ELSE hei3_safety_flag = 1 ENDIF WAIT 0 ENDWHILE SKIP_CUTSCENE_END CLEAR_MISSION_AUDIO hei3_audio_slot1 CLEAR_MISSION_AUDIO hei3_audio_slot2 CLEAR_PRINTS CLEAR_MISSION_AUDIO 3 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL Player1 ON //ADD_BLIP_FOR_COORD -114.6156 -8.6308 1000.7133 hei3_gimp_suit_blip //CREATE_CLOTHES_PICKUP -114.6156 -8.6308 1000.7133 1 hei3_gimp_suit_pickup CREATE_PICKUP clothesp PICKUP_ONCE -114.6156 -8.6308 1000.7133 hei3_gimp_suit_pickup ADD_BLIP_FOR_PICKUP hei3_gimp_suit_pickup hei3_gimp_suit_blip SET_BLIP_ENTRY_EXIT hei3_gimp_suit_blip 2090.0 2074.0 10.0 PRINT (HEI3_04) 5000 1 //~s~Go and get a gimp suit. MARK_CHAR_AS_NO_LONGER_NEEDED hei3_millie_ped MARK_CHAR_AS_NO_LONGER_NEEDED hei3_doorman_ped MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE UNLOAD_SPECIAL_CHARACTER 1 DELETE_CHAR hei3_doorman_ped DELETE_CHAR hei3_millie_ped REQUEST_MODEL WINDSOR hei3_temp_int = 0 hei3_progress_flag = 4 ENDIF // lcate in corridor ELSE // if doorman is dead CLEAR_PRINTS IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT (HEI3_31) 5000 1// ~r~Something's spooked the Croupier! GOTO mission_heist3_failed ENDIF ELSE CLEAR_PRINTS IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF //IF IS_CHAR_DEAD hei3_millie_ped PRINT (HEI3_14)5000 1 // ~r~You killed the croupier! //ELSE //ENDIF GOTO mission_heist3_failed ENDIF // doorman dead check ELSE // check locate on interior of sex shop /// FAIL AS NOT NEAR SEX SHOP CLEAR_PRINTS IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT (HEI3_16) 5000 1 //~r~You lost her! GOTO mission_heist3_failed ENDIF ENDIF //hei3_temp_int = 1 ENDIF /////////////////////////////////////////////////// /// PLAYER BUYS A GIMP SUIT AND LEAVES SEX SHOP /// /////////////////////////////////////////////////// IF hei3_progress_flag = 4 IF hei3_player_has_gimp_suit = 0 IF hei3_temp_int = 0 DISABLE_ALL_ENTRY_EXITS TRUE hei3_temp_int = 1 ENDIF IF HAS_PICKUP_BEEN_COLLECTED hei3_gimp_suit_pickup//LOCATE_CHAR_ANY_MEANS_3D SCPLAYER -114.6156 -8.6308 1000.7133 1.2000 1.2000 3.8000 TRUE REMOVE_PICKUP hei3_gimp_suit_pickup CLEAR_PRINTS STORE_SCORE player1 players_money IF players_money >= 200 ADD_SCORE player1 -200 ELSE IF players_money > 0 players_money *= -1 ADD_SCORE player1 players_money ENDIF ENDIF SET_PLAYER_CONTROL Player1 OFF SET_MUSIC_DOES_FADE FALSE DO_FADE 1500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_WIDESCREEN ON REMOVE_BLIP hei3_gimp_suit_blip STORE_CLOTHES_STATE hei3_clothes_changed = 1 GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP Player1 gimpleg gimpleg CLOTHES_TEX_EXTRA1// 2 BUILD_PLAYER_MODEL player1 hei3_safety_flag = 0 hei3_sfx_counter = 1 hei3_sfx_playing = 0 WHILE hei3_safety_flag = 0 IF NOT hei3_sfx_counter = 0 IF hei3_sfx_playing = 0 IF HAS_MISSION_AUDIO_LOADED 3 CLEAR_MISSION_AUDIO 3 ENDIF hei3_sfx_playing = 1 ENDIF IF hei3_sfx_playing = 1 LOAD_MISSION_AUDIO 3 hei3_sfx[hei3_sfx_counter] // audio fx to be used hei3_sfx_playing = 2 ENDIF IF hei3_sfx_playing = 2 IF HAS_MISSION_AUDIO_LOADED 3 PLAY_MISSION_AUDIO 3 hei3_sfx_playing = 3 ENDIF ENDIF IF hei3_sfx_playing = 3 IF HAS_MISSION_AUDIO_FINISHED 3 hei3_sfx_counter = 0 hei3_sfx_playing = 0 hei3_safety_flag = 1 ENDIF ENDIF ENDIF WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION -111.19 -12.67 1002.69 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -124.89 -3.78 997.61 JUMP_CUT CLEAR_AREA -113.9837 -8.3695 999.7812 20.0 TRUE SET_CHAR_COORDINATES scplayer -113.9837 -8.3695 999.7812 SET_CHAR_HEADING scplayer 183.0 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_MUSIC_DOES_FADE TRUE OPEN_SEQUENCE_TASK hei3_player_seq TASK_STAND_STILL -1 1000 TASK_GO_STRAIGHT_TO_COORD -1 -113.8582 -9.7549 999.7812 PEDMOVE_WALK -1 // to door of booth TASK_GO_STRAIGHT_TO_COORD -1 -114.2882 -11.5372 999.7886 PEDMOVE_WALK -1// to corridor TASK_ACHIEVE_HEADING -1 252.0 TASK_SCRATCH_HEAD -1 CLOSE_SEQUENCE_TASK hei3_player_seq PERFORM_SEQUENCE_TASK scplayer hei3_player_seq CLEAR_SEQUENCE_TASK hei3_player_seq hei3_safety_flag = 0 WHILE hei3_safety_flag = 0 IF NOT IS_CHAR_DEAD scplayer GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK hei3_task_status IF hei3_task_status = FINISHED_TASK hei3_safety_flag = 1 ENDIF ELSE hei3_safety_flag = 1 ENDIF WAIT 0 ENDWHILE DISABLE_ALL_ENTRY_EXITS FALSE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL Player1 ON SWITCH_WIDESCREEN OFF PRINT (HEI3_30) 5000 1//~s~Leave the shop and go after the Croupier. REMOVE_BLIP hei3_sex_shop_blip ADD_BLIP_FOR_COORD hei3_sex_shop_x hei3_sex_shop_y hei3_sex_shop_z hei3_sex_shop_blip hei3_player_has_gimp_suit = 1 ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_3D scplayer -100.5496 -24.1101 999.7886 1.3 1.3 50.0 FALSE// sex shop exterior hei3_progress_flag = 5 ENDIF GET_AREA_VISIBLE hei3_temp_int IF hei3_temp_int = 0 hei3_progress_flag = 5 ENDIF //IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2085.7207 2074.7605 10.0579 200.0 200.0 50.0 FALSE// sex shop exterior // hei3_progress_flag = 5 //ENDIF ENDIF ENDIF ////////////////////////////////// /// MILLIE LEAVES THE SEX SHOP /// ////////////////////////////////// IF hei3_progress_flag = 5 SET_PLAYER_CONTROL Player1 OFF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REMOVE_BLIP hei3_sex_shop_blip MARK_CHAR_AS_NO_LONGER_NEEDED hei3_doorman_ped MARK_CHAR_AS_NO_LONGER_NEEDED hei3_shop_ped1 MARK_CHAR_AS_NO_LONGER_NEEDED hei3_shop_ped2 MARK_CHAR_AS_NO_LONGER_NEEDED hei3_shop_ped3 MARK_CHAR_AS_NO_LONGER_NEEDED hei3_shop_ped4 MARK_CHAR_AS_NO_LONGER_NEEDED hei3_shop_ped5 MARK_MODEL_AS_NO_LONGER_NEEDED BMYPIMP //MARK_MODEL_AS_NO_LONGER_NEEDED WFYSEX MARK_MODEL_AS_NO_LONGER_NEEDED BMOCHIL MARK_MODEL_AS_NO_LONGER_NEEDED WMYST SET_AREA_VISIBLE 0 REQUEST_MODEL CWMYHB1 REQUEST_MODEL GUN_DILDO1 REQUEST_MODEL WINDSOR WHILE NOT HAS_MODEL_LOADED CWMYHB1 OR NOT HAS_MODEL_LOADED GUN_DILDO1 OR NOT HAS_MODEL_LOADED WINDSOR WAIT 0 ENDWHILE LOAD_SCENE 2085.1196 2077.0857 15.8434 //CLEAR_AREA 2095.9131 2074.0813 9.8203 100.0 TRUE CLEAR_AREA 2105.9570 2039.1860 9.8203 6.0 TRUE CLEAR_AREA 2093.9131 2047.0813 9.8203 6.0 TRUE CLEAR_AREA 2093.9131 2055.0813 9.8203 6.0 TRUE CLEAR_AREA 2093.9131 2060.0813 9.8203 6.0 TRUE CLEAR_AREA 2093.9131 2065.0813 9.8203 6.0 TRUE CLEAR_AREA 2093.9131 2070.0813 9.8203 6.0 TRUE CLEAR_AREA 2088.8269 2076.0010 9.8203 12.0 TRUE CREATE_CAR WINDSOR 2103.9570 2073.1860 9.8203 hei3_temp_car SET_CAR_HEADING hei3_temp_car 270.8618 MARK_CAR_AS_NO_LONGER_NEEDED hei3_temp_car MARK_MODEL_AS_NO_LONGER_NEEDED WINDSOR //2086.3462 2074.3911 10.0579 107.4505 //sexshop outside //-100.3132 -25.1503 999.7261 179.091 //sex shop inside SET_CHAR_HAS_USED_ENTRY_EXIT scplayer -100.3132 -25.1503 20.0 SET_CHAR_COORDINATES scplayer 2085.1196 2077.0857 15.8434 SET_CHAR_HEADING scplayer 268.8011 SET_AREA_VISIBLE 0 CREATE_CHAR PEDTYPE_MISSION1 CROGRL3 2085.7207 2074.7605 10.0579 hei3_millie_ped SET_CHAR_DECISION_MAKER hei3_millie_ped hei3_decision SET_ANIM_GROUP_FOR_CHAR hei3_millie_ped sexywoman ADD_BLIP_FOR_CHAR hei3_millie_ped hei3_millie_blip SET_CHAR_HEADING hei3_millie_ped 271.0 FLUSH_ROUTE EXTEND_ROUTE 2037.6713 2743.1963 9.6875 DELETE_CAR hei3_millie_car MARK_CAR_AS_NO_LONGER_NEEDED hei3_millie_car CUSTOM_PLATE_FOR_NEXT_CAR CLUB &_SPANK__ CREATE_CAR CLUB 2095.9131 2074.0813 9.8203 hei3_millie_car CHANGE_CAR_COLOUR hei3_millie_car 126 126 SET_CAN_BURST_CAR_TYRES hei3_millie_car FALSE LOCK_CAR_DOORS hei3_millie_car CARLOCK_LOCKOUT_PLAYER_ONLY IF NOT IS_CAR_DEAD hei3_millie_car SET_CAR_COORDINATES hei3_millie_car 2095.9131 2074.0813 9.8203 SET_CAR_HEADING hei3_millie_car 4.444 SET_CAR_HEALTH hei3_millie_car 1000 OPEN_SEQUENCE_TASK hei3_millie_seq TASK_GO_STRAIGHT_TO_COORD -1 2093.4180 2073.6458 9.8203 PEDMOVE_WALK -1 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_DRIVER -1 hei3_millie_car 20000 CLOSE_SEQUENCE_TASK hei3_millie_seq PERFORM_SEQUENCE_TASK hei3_millie_ped hei3_millie_seq CLEAR_SEQUENCE_TASK hei3_millie_seq ENDIF CLEAR_PRINTS PRINT (HEI3_09) 5000 1 //~s~The ~r~Croupier~s~ has left the shop. Follow her but remember not to get too close. SET_FIXED_CAMERA_POSITION 2098.50 2076.12 11.80 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2075.20 2067.39 7.26 JUMP_CUT SWITCH_WIDESCREEN ON DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ///////////////// START OF CUT-SCENE /////////////////////////// hei3_x_button_can_be_pressed = 0 hei3_safety_flag = 0 hei3_temp_int = 0 TIMERA = 0 WHILE hei3_safety_flag = 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED hei3_safety_flag = 1 hei3_x_button_can_be_pressed = 1 ENDIF IF NOT IS_CHAR_DEAD hei3_millie_ped AND NOT IS_CAR_DEAD hei3_millie_car GET_SCRIPT_TASK_STATUS hei3_millie_ped PERFORM_SEQUENCE_TASK hei3_task_status IF hei3_task_status = FINISHED_TASK // sitting in car //CLEAR_AREA 2085.1196 2077.0857 15.8434 20.0 TRUE hei3_safety_flag = 1 ENDIF ELSE hei3_safety_flag = 1 ENDIF WAIT 0 ENDWHILE IF hei3_x_button_can_be_pressed = 0 REQUEST_CAR_RECORDING 803 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 803 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD hei3_millie_car START_PLAYBACK_RECORDED_CAR hei3_millie_car 803 ENDIF LOAD_SCENE_IN_DIRECTION 2084.08 2068.62 11.22 206.8418 SET_FIXED_CAMERA_POSITION 2088.5061 2079.9849 10.6126 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2088.6746 2079.0000 10.5742 JUMP_CUT /* LOAD_SCENE_IN_DIRECTION 2084.08 2068.62 11.22 250.8418 SET_FIXED_CAMERA_POSITION 2084.08 2068.62 11.22 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2124.89 2053.98 7.72 JUMP_CUT */ hei3_safety_flag = 0 WHILE hei3_safety_flag = 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED hei3_x_button_can_be_pressed = 1 hei3_safety_flag = 1 ENDIF IF NOT IS_CAR_DEAD hei3_millie_car IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR hei3_millie_car hei3_safety_flag = 1 ENDIF ENDIF WAIT 0 ENDWHILE ENDIF ///////// END OF CUT-SCENE //////// REMOVE_CAR_RECORDING 803 CLEAR_PRINTS IF hei3_x_button_can_be_pressed = 1 IF NOT IS_CAR_DEAD hei3_millie_car AND NOT IS_CHAR_DEAD hei3_millie_ped IF NOT IS_CHAR_IN_CAR hei3_millie_ped hei3_millie_car WARP_CHAR_INTO_CAR hei3_millie_ped hei3_millie_car ENDIF SET_CAR_COORDINATES hei3_millie_car 2109.0037 2039.7561 9.8125 SET_CAR_HEADING hei3_millie_car 269.4456 ENDIF ENDIF IF NOT IS_CAR_DEAD hei3_millie_car CLOSE_ALL_CAR_DOORS hei3_millie_car LOCK_CAR_DOORS hei3_millie_car CARLOCK_FORCE_SHUT_DOORS LOCK_CAR_DOORS hei3_millie_car CARLOCK_LOCKOUT_PLAYER_ONLY ENDIF SET_CHAR_COORDINATES scplayer 2089.6533 2083.5618 9.8203 SET_CHAR_HEADING scplayer 223.4858 RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL Player1 ON SWITCH_WIDESCREEN OFF hei3_spook = 0 DISPLAY_ONSCREEN_COUNTER_WITH_STRING hei3_spook COUNTER_DISPLAY_BAR HEI3_94 FLUSH_ROUTE /* EXTEND_ROUTE 2123.3655 2030.2732 9.6719 EXTEND_ROUTE 2038.8033 2023.9521 9.6875 EXTEND_ROUTE 1930.1251 2090.3105 9.6797 EXTEND_ROUTE 1929.3839 2175.1289 9.7972 EXTEND_ROUTE 1930.0311 2329.2620 9.6719 EXTEND_ROUTE 1931.5117 2385.7969 9.6719 EXTEND_ROUTE 2029.4264 2417.2253 9.7143 EXTEND_ROUTE 2037.6713 2743.1963 9.6875 */ EXTEND_ROUTE 2123.3655 2030.2732 9.6719 EXTEND_ROUTE 2038.8033 2023.9521 9.6875 EXTEND_ROUTE 1929.3839 2175.1289 9.7972 EXTEND_ROUTE 1931.5117 2385.7969 9.6719 EXTEND_ROUTE 2029.4264 2417.2253 9.7143 EXTEND_ROUTE 2045.0297 2745.4915 9.6719 EXTEND_ROUTE 2035.3170 2737.3223 9.6719 EXTEND_ROUTE 2035.3380 2726.5728 9.8281 IF NOT IS_CAR_DEAD hei3_millie_car AND NOT IS_CHAR_DEAD hei3_millie_ped OPEN_SEQUENCE_TASK hei3_millie_seq TASK_DRIVE_POINT_ROUTE_ADVANCED -1 hei3_millie_car 20.0 MODE_NORMAL 0 DRIVINGMODE_SLOWDOWNFORCARS CLOSE_SEQUENCE_TASK hei3_millie_seq PERFORM_SEQUENCE_TASK hei3_millie_ped hei3_millie_seq CLEAR_SEQUENCE_TASK hei3_millie_seq ENDIF TIMERA = 0 TIMERB = 0 hei3_spooked_check = 0 hei3_progress_flag = 6 ENDIF ////////////////////////////////// /// FOLLOW MILLIE TO HER HOUSE /// ////////////////////////////////// IF hei3_progress_flag = 6 IF NOT IS_CHAR_DEAD hei3_millie_ped IF NOT IS_CAR_DEAD hei3_millie_car GET_SCRIPT_TASK_STATUS hei3_millie_ped PERFORM_SEQUENCE_TASK hei3_task_status IF hei3_millie_at_house = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2037.8907 2749.5339 9.8125 40.0 40.0 4.0 FALSE LOCATE_CHAR_ANY_MEANS_3D scplayer 2037.8907 2749.5339 9.8125 4.0 4.0 4.0 TRUE ENDIF IF hei3_task_status = FINISHED_TASK REMOVE_BLIP hei3_millie_blip ADD_BLIP_FOR_COORD 2038.8356 2749.8032 9.8203 hei3_millie_blip CLEAR_PRINTS PRINT HEI3_96 5000 1 //~s~Park up outside the ~y~Croupier's house~s~. hei3_millie_at_house = 1 ELSE /////////////////////////////// /// spooked check code here /// /////////////////////////////// // eliminate the chance of a rogue car or ped getting in the way of the route IF LOCATE_CHAR_ANY_MEANS_3D hei3_millie_ped 2037.8907 2749.5339 9.8125 40.0 40.0 4.0 FALSE CLEAR_AREA 2034.7939 2724.4646 9.8281 20.0 TRUE ENDIF GET_CHAR_COORDINATES scplayer hei3_player_x hei3_player_y hei3_player_z GET_CHAR_COORDINATES hei3_millie_ped hei3_millie_x hei3_millie_y hei3_millie_z GET_DISTANCE_BETWEEN_COORDS_3D hei3_player_x hei3_player_y hei3_player_z hei3_millie_x hei3_millie_y hei3_millie_z hei3_distance_float hei3_distance_int =# hei3_distance_float IF hei3_distance_int > 140 CLEAR_PRINTS IF hei3_distance_int > 168 // FAIL IF NOT IS_CHAR_ON_SCREEN hei3_millie_ped IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT (HEI3_16) 5000 1 //~r~You lost her! GOTO mission_heist3_failed ELSE PRINT (HEI3_10) 1000 1 //~s~The ~r~Croupier~s~ is almost out of sight, you need to get closer! ENDIF ELSE PRINT (HEI3_10) 1000 1 //~s~The ~r~Croupier~s~ is almost out of sight, you need to get closer! ENDIF ENDIF IF hei3_spooked_check = 1 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer hei3_millie_ped 22.5 22.5 2.0 FALSE IF TIMERA > 64 ++ hei3_spook TIMERA = 0 ENDIF ELSE IF TIMERA > 150 IF hei3_spook > 0 -- hei3_spook ENDIF TIMERA = 0 ENDIF ENDIF ELSE IF hei3_spooked_check = 0 IF TIMERB > 4000 hei3_spooked_check = 1 ENDIF ENDIF ENDIF IF hei3_spook < 0 hei3_spook = 0 ELSE IF hei3_spook > 100 hei3_spook = 100 ENDIF ENDIF IF hei3_spook > 10 IF hei3_flag_player_had_warning1_fm2 = 0 PRINT_NOW (HEI3_11) 5000 1 //~s~You're too close, back off before you spook her! hei3_flag_player_had_warning1_fm2 = 1 ENDIF ENDIF IF hei3_spook = 100 IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg CLEAR_PRINTS DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT_NOW (HEI3_17) 5000 1 //~r~You got too close! GOTO mission_heist3_failed ENDIF IF NOT IS_CHAR_IN_CAR hei3_millie_ped hei3_millie_car OR IS_CHAR_TOUCHING_VEHICLE scplayer hei3_millie_car OR HAS_CAR_BEEN_DAMAGED_BY_CHAR hei3_millie_car scplayer hei3_spook = 100 IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg CLEAR_PRINTS DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT_NOW (HEI3_31) 5000 1 //"Something's spooked the croupier GOTO mission_heist3_failed ENDIF /////////////////////////// /// end of spook checks /// /////////////////////////// ENDIF ELSE // cut-scene of millie entering house // IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2037.8907 2749.5339 9.8125 4.0 4.0 4.0 TRUE REMOVE_BLIP hei3_millie_blip CLEAR_AREA 2034.7939 2724.4646 9.8281 20.0 TRUE CLEAR_ONSCREEN_COUNTER hei3_spook SET_PLAYER_CONTROL Player1 OFF SWITCH_WIDESCREEN ON CLEAR_PRINTS SET_CAR_COORDINATES hei3_millie_car 2035.0103 2725.3604 9.8281 SET_CAR_HEADING hei3_millie_car 184.0343 //LOAD_SCENE_IN_DIRECTION 2036.0509 2734.5022 9.8203 180.1103 //SET_FIXED_CAMERA_POSITION 2039.2190 2751.5876 11.7534 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 2038.7681 2750.7056 11.6163 JUMP_CUT //LOAD_SCENE_IN_DIRECTION 2041.2056 2753.3386 11.9601 146.1103 SET_FIXED_CAMERA_POSITION 2041.2056 2753.3386 11.9601 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2040.6478 2752.5151 11.8569 JUMP_CUT SKIP_CUTSCENE_START IF NOT IS_CHAR_DEAD hei3_millie_ped OPEN_SEQUENCE_TASK hei3_millie_seq IF IS_CHAR_IN_ANY_CAR hei3_millie_ped TASK_LEAVE_ANY_CAR -1 ENDIF TASK_GO_STRAIGHT_TO_COORD -1 2037.4675 2724.1423 9.8281 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 2037.3781 2721.4490 10.5469 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK hei3_millie_seq PERFORM_SEQUENCE_TASK hei3_millie_ped hei3_millie_seq CLEAR_SEQUENCE_TASK hei3_millie_seq ENDIF hei3_safety_flag = 0 TIMERA = 0 WHILE hei3_safety_flag = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped GET_SCRIPT_TASK_STATUS hei3_millie_ped PERFORM_SEQUENCE_TASK hei3_task_status IF hei3_task_status = FINISHED_TASK hei3_safety_flag = 1 ENDIF ELSE hei3_safety_flag = 1 ENDIF WAIT 0 ENDWHILE SKIP_CUTSCENE_END CLEAR_AREA 1936.1964 2734.0112 9.8203 2.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 CWMYHB1 1999.7885 2733.6919 9.8203 hei3_client_ped SET_CHAR_HEADING hei3_client_ped 354.8084 GIVE_WEAPON_TO_CHAR hei3_client_ped WEAPONTYPE_DILDO1 0 SET_CURRENT_CHAR_WEAPON hei3_client_ped WEAPONTYPE_DILDO1 //2037.3632 2721.7859 10.2989 181.4607 // door to house OPEN_SEQUENCE_TASK hei3_client_seq TASK_GO_STRAIGHT_TO_COORD -1 2021.5941 2734.5757 9.8203 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 2029.7864 2730.5393 9.8281 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 2038.5051 2729.8464 9.8281 PEDMOVE_WALK -2 TASK_GO_STRAIGHT_TO_COORD -1 2037.2797 2722.5671 9.8281 PEDMOVE_WALK -2 //185.0746 CLOSE_SEQUENCE_TASK hei3_client_seq PERFORM_SEQUENCE_TASK hei3_client_ped hei3_client_seq CLEAR_SEQUENCE_TASK hei3_client_seq RESTORE_CAMERA_JUMPCUT DELETE_CHAR hei3_millie_ped MARK_CHAR_AS_NO_LONGER_NEEDED hei3_millie_ped MARK_MODEL_AS_NO_LONGER_NEEDED CROGRL3 SET_PLAYER_CONTROL Player1 ON SWITCH_WIDESCREEN OFF CLEAR_PRINTS //PRINT (HEI3_23) 5000 1//~s~Get rid of the ~r~gimp~s~. PRINT (HEI3_08) 8000 1 //~s~Here comes the ~r~gimp~s~ make sure he doesn't reach the ~y~house~s~. GET_GAME_TIMER hei3_timer_start hei3_progress_flag = 8 //hei3_progress_flag = 7 ENDIF ENDIF ELSE CLEAR_PRINTS IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT (HEI3_18) 5000 1 //~r~You destroyed her car, she's not going to help you now! GOTO mission_heist3_failed ENDIF ELSE CLEAR_PRINTS IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT (HEI3_14) 5000 1 //~r~You killed the croupier! GOTO mission_heist3_failed ENDIF ENDIF ////////////////////////////// /// PLAYER FIGHTING CLIENT /// ////////////////////////////// IF hei3_progress_flag = 8 IF NOT IS_CHAR_DEAD hei3_client_ped IF LOCATE_CHAR_ANY_MEANS_3D hei3_client_ped 2037.3120 2722.2881 10.8281 1.2000 1.6000 3.0000 FALSE CLEAR_PRINTS REMOVE_CHAR_ELEGANTLY hei3_client_ped IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT HEI3_92 5000 1 //~r~The gimp has reached the house! GOTO mission_heist3_failed ENDIF GET_SCRIPT_TASK_STATUS hei3_client_ped PERFORM_SEQUENCE_TASK hei3_task_status IF hei3_task_status = PERFORMING_TASK GET_SEQUENCE_PROGRESS hei3_client_ped hei3_task_status IF hei3_task_status = 2 CLEAR_PRINTS PRINT HEI3_93 5000 1 //~s~The gimp has nearly reached the house! //(HEI3_12) 5000 1 //~s~The ~r~gimp~s~ is about to get away, stop him! ENDIF ELSE IF hei3_task_status = FINISHED_TASK IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer hei3_client_ped 100.0 100.0 20.0 FALSE IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS PRINT (HEI3_15) 5000 1 //~r~The gimp got away! ENDIF ENDIF ENDIF ENDIF //ENDIF ELSE REMOVE_BLIP hei3_client_blip CLEAR_PRINTS PRINT (HEI3_22) 5000 1//~s~Now that the gimp's out fo the way go and ring the ~y~doorbell~s~. ADD_BLIP_FOR_COORD hei3_house_x hei3_house_y hei3_house_z hei3_house_blip hei3_progress_flag = 9 ENDIF ENDIF ////////////////////////////////////////////////////////////////////// ////////////////////// END OF CHANGES///////////////////////////////// ////////////////////////////////////////////////////////////////////// ////////////////////////////////// /// PLAYER HAS KILLED THE GIMP /// ////////////////////////////////// IF hei3_progress_flag = 9 IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer 2037.3070 2722.1057 10.2989 1.2 1.2 3.0 TRUE //2037.3191 2721.8359 10.2989 CLEAR_PRINTS REMOVE_BLIP hei3_house_blip SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL Player1 OFF SET_CHAR_COORDINATES scplayer 2037.1649 2721.8945 10.2989 SET_CHAR_HEADING scplayer 174.4355 SET_FIXED_CAMERA_POSITION 2035.66 2722.75 11.84 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2039.39 2717.31 12.20 JUMP_CUT hei3_audio_counter = 0 hei3_audio_slot1 = 1 hei3_audio_slot2 = 2 hei3_audio_playing = 0 hei3_text_loop_done = 0 hei3_mobile = 0 hei3_text_timer_diff = 0 hei3_text_timer_end = 0 hei3_text_timer_start = 0 hei3_ahead_counter = 0 hei3_sfx_counter = 2 hei3_sfx_playing = 0 hei3_sfx_played = 0 hei3_text_loop6: WAIT 0 IF hei3_text_loop_done = 0 IF NOT hei3_sfx_counter = 0 IF hei3_sfx_playing = 0 IF HAS_MISSION_AUDIO_LOADED 3 CLEAR_MISSION_AUDIO 3 ENDIF hei3_sfx_playing = 1 ENDIF IF hei3_sfx_playing = 1 LOAD_MISSION_AUDIO 3 hei3_sfx[hei3_sfx_counter] // audio fx to be used hei3_sfx_playing = 2 ENDIF IF hei3_sfx_playing = 2 IF HAS_MISSION_AUDIO_LOADED 3 PLAY_MISSION_AUDIO 3 hei3_sfx_playing = 3 ENDIF ENDIF IF hei3_sfx_playing = 3 IF HAS_MISSION_AUDIO_FINISHED 3 hei3_sfx_counter = 0 hei3_sfx_playing = 0 hei3_safety_flag = 1 TIMERA = 0 ENDIF ENDIF ENDIF IF NOT hei3_audio_counter = 0 IF hei3_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED hei3_audio_slot2 CLEAR_MISSION_AUDIO hei3_audio_slot2 ENDIF hei3_audio_playing = 1 ENDIF IF hei3_audio_playing = 1 LOAD_MISSION_AUDIO hei3_audio_slot1 hei3_audio[hei3_audio_counter] hei3_audio_playing = 2 ENDIF IF hei3_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED hei3_audio_slot1 PLAY_MISSION_AUDIO hei3_audio_slot1 PRINT_NOW $hei3_text[hei3_audio_counter] 10000 1 hei3_audio_playing = 3 ENDIF ENDIF IF hei3_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED hei3_audio_slot1 IF NOT IS_CHAR_DEAD hei3_millie_ped STOP_CHAR_FACIAL_TALK hei3_millie_ped ENDIF CLEAR_THIS_PRINT $hei3_text[hei3_audio_counter] IF hei3_audio_slot1 = 1 hei3_audio_slot1 = 2 hei3_audio_slot2 = 1 ELSE hei3_audio_slot1 = 1 hei3_audio_slot2 = 2 ENDIF hei3_audio_counter = 0 hei3_audio_playing = 0 hei3_text_loop_done = 1 ENDIF ENDIF ENDIF IF hei3_audio_playing = 0 IF hei3_sfx_playing = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped STOP_CHAR_FACIAL_TALK hei3_millie_ped START_CHAR_FACIAL_TALK hei3_millie_ped 3000 ENDIF hei3_audio_counter = 12 //PRINT (HE3_DA) 5000 1 //CROUPIER:"The door's open Master!" ENDIF ENDIF GOTO hei3_text_loop6 ENDIF //TASK_SHAKE_FIST scplayer WHILE IS_MESSAGE_BEING_DISPLAYED WAIT 0 ENDWHILE DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 6 LOAD_SPECIAL_CHARACTER 1 CROGRL2 //REQUEST_ANIMATION SNM WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 //OR NOT HAS_ANIMATION_LOADED SNM WAIT 0 ENDWHILE REQUEST_COLLISION 344.8872 305.4298 LOAD_SCENE 344.8872 305.4298 998.2638 DISPLAY_RADAR FALSE SET_CHAR_COORDINATES scplayer 344.4120 305.0330 998.1484 SET_CHAR_HEADING scplayer 296.2830 MARK_CHAR_AS_NO_LONGER_NEEDED hei3_client_ped MARK_CAR_AS_NO_LONGER_NEEDED hei3_client_car MARK_CAR_AS_NO_LONGER_NEEDED hei3_millie_car MARK_MODEL_AS_NO_LONGER_NEEDED CWMYHB1 MARK_MODEL_AS_NO_LONGER_NEEDED ELEGANT MARK_MODEL_AS_NO_LONGER_NEEDED CLUB CLEAR_CHAR_TASKS scplayer CLEAR_PRINTS CREATE_CHAR PEDTYPE_SPECIAL WFYSEX 349.1921 308.5705 998.1484 hei3_millie_ped //CREATE_CHAR PEDTYPE_SPECIAL SPECIAL01 349.1921 308.5705 998.1484 hei3_millie_ped SET_CHAR_DECISION_MAKER hei3_millie_ped hei3_decision SET_CHAR_AREA_VISIBLE hei3_millie_ped 6 SET_CHAR_AREA_VISIBLE scplayer 6 SET_ANIM_GROUP_FOR_CHAR hei3_millie_ped sexywoman SET_CHAR_HEADING hei3_millie_ped 147.2450 //SET_FIXED_CAMERA_POSITION 348.52 308.21 999.58 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 356.32 312.76 1000.65 JUMP_CUT SET_FIXED_CAMERA_POSITION 348.8104 310.0784 999.4993 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 348.6377 309.0935 999.5004 JUMP_CUT SET_CHAR_COORDINATES scplayer 344.4120 305.0330 998.1484 SET_CHAR_HEADING scplayer 296.2830 SET_CHAR_COORDINATES hei3_millie_ped 349.1921 308.5705 998.1484 SET_CHAR_HEADING hei3_millie_ped 147.2450 TASK_TURN_CHAR_TO_FACE_CHAR scplayer hei3_millie_ped WAIT 1000 DO_FADE 9000 FADE_IN WAIT 2000 hei3_progress_flag = 10 ENDIF ENDIF /////////////////////////////////////////////////////////////////// /// CHECK PLAYER IS WEARING THE GIME SUIT (fail mission if not) /// /////////////////////////////////////////////////////////////////// IF hei3_progress_flag >= 5 AND hei3_progress_flag < 9 GET_AREA_VISIBLE hei3_temp_int IF hei3_temp_int = 0 IF NOT IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg PRINT (HEI3_34) 5000 1 //" ~r~You no longer have the gimp suit. " GOTO mission_heist3_failed ENDIF ENDIF ENDIF ////////////////////////////////////////// /// PLAYER WHIPPING MILLIE INTRO SCENE /// ////////////////////////////////////////// IF hei3_progress_flag = 10 //SET_FIXED_CAMERA_POSITION 348.95 310.06 999.62 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 346.34 298.35 999.28 JUMP_CUT SKIP_CUTSCENE_START CLEAR_PRINTS //////////////////////////////////////// //////////////// AUDIO ///////////////// hei3_audio_counter = 0 hei3_audio_slot1 = 1 hei3_audio_slot2 = 2 hei3_audio_playing = 0 hei3_text_loop_done = 0 hei3_mobile = 0 hei3_text_timer_diff = 0 hei3_text_timer_end = 0 hei3_text_timer_start = 0 hei3_ahead_counter = 0 hei3_text_loop4: WAIT 0 IF hei3_text_loop_done = 0 IF NOT hei3_audio_counter = 0 IF hei3_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED hei3_audio_slot2 CLEAR_MISSION_AUDIO hei3_audio_slot2 ENDIF hei3_audio_playing = 1 ENDIF IF hei3_audio_playing = 1 LOAD_MISSION_AUDIO hei3_audio_slot1 hei3_audio[hei3_audio_counter] hei3_audio_playing = 2 ENDIF IF hei3_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED hei3_audio_slot1 PLAY_MISSION_AUDIO hei3_audio_slot1 PRINT_NOW $hei3_text[hei3_audio_counter] 10000 1 hei3_audio_playing = 3 ENDIF ENDIF IF hei3_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED hei3_audio_slot1 CLEAR_THIS_PRINT $hei3_text[hei3_audio_counter] IF hei3_audio_slot1 = 1 hei3_audio_slot1 = 2 hei3_audio_slot2 = 1 ELSE hei3_audio_slot1 = 1 hei3_audio_slot2 = 2 ENDIF hei3_audio_counter = 0 hei3_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED hei3_audio_slot2 IF hei3_audio_counter < 8 hei3_ahead_counter = hei3_audio_counter + 1 LOAD_MISSION_AUDIO hei3_audio_slot2 hei3_audio[hei3_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH hei3_mobile CASE 0 IF hei3_audio_playing = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped STOP_CHAR_FACIAL_TALK hei3_millie_ped START_CHAR_FACIAL_TALK hei3_millie_ped 3000 ENDIF hei3_audio_counter = 13//PRINT (HEI3_DB) 5000 1 //CROUPIER:"Come on in, I'm ready for you!" hei3_mobile = 1 GET_GAME_TIMER hei3_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER hei3_text_timer_end hei3_text_timer_diff = hei3_text_timer_end - hei3_text_timer_start IF hei3_text_timer_diff > 1000 IF hei3_audio_playing = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped OPEN_SEQUENCE_TASK hei3_player_seq TASK_LOOK_AT_CHAR -1 hei3_millie_ped 20000 TASK_GO_STRAIGHT_TO_COORD -1 347.0207 306.2751 998.2088 PEDMOVE_WALK -1 // player walks here from doorway TASK_GO_STRAIGHT_TO_COORD -1 348.2744 307.7908 998.2040 PEDMOVE_WALK -1 // player walks here from doorway TASK_TURN_CHAR_TO_FACE_CHAR -1 hei3_millie_ped CLOSE_SEQUENCE_TASK hei3_player_seq PERFORM_SEQUENCE_TASK scplayer hei3_player_seq CLEAR_SEQUENCE_TASK hei3_player_seq ENDIF IF NOT IS_CHAR_DEAD hei3_millie_ped STOP_CHAR_FACIAL_TALK hei3_millie_ped START_CHAR_FACIAL_TALK scplayer 3000 ENDIF hei3_audio_counter = 14//PRINT (HE3_DC) 5000 1 //CARL:"You've been a naughty girl!" hei3_mobile = 2 GET_GAME_TIMER hei3_text_timer_start ENDIF ENDIF BREAK CASE 2 GET_GAME_TIMER hei3_text_timer_end hei3_text_timer_diff = hei3_text_timer_end - hei3_text_timer_start IF hei3_text_timer_diff > 1000 IF hei3_audio_playing = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped STOP_CHAR_FACIAL_TALK scplayer START_CHAR_FACIAL_TALK hei3_millie_ped 3000 ENDIF hei3_audio_counter = 15//PRINT (HE3_DD) 5000 1 //CROUPIER:"Oh I know, I know!" hei3_mobile = 3 GET_GAME_TIMER hei3_text_timer_start ENDIF ENDIF BREAK CASE 3 GET_GAME_TIMER hei3_text_timer_end hei3_text_timer_diff = hei3_text_timer_end - hei3_text_timer_start IF hei3_text_timer_diff > 1000 IF hei3_audio_playing = 0 hei3_safety_flag = 0 hei3_temp_int = 0 TIMERA = 0 WHILE hei3_safety_flag = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK hei3_task_status IF hei3_task_status = FINISHED_TASK IF NOT IS_MESSAGE_BEING_DISPLAYED hei3_safety_flag = 1 ENDIF ENDIF ELSE hei3_safety_flag = 1 ENDIF WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD hei3_millie_ped STOP_CHAR_FACIAL_TALK hei3_millie_ped START_CHAR_FACIAL_TALK scplayer 3000 ENDIF hei3_audio_counter = 25 //PRINT (HE3_FD) 5000 1 //CARL:"Spit it out, you filthy worm!" hei3_mobile = 4 GET_GAME_TIMER hei3_text_timer_start ENDIF ENDIF BREAK CASE 4 GET_GAME_TIMER hei3_text_timer_end hei3_text_timer_diff = hei3_text_timer_end - hei3_text_timer_start IF hei3_text_timer_diff > 1000 IF hei3_audio_playing = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped STOP_CHAR_FACIAL_TALK scplayer START_CHAR_FACIAL_TALK hei3_millie_ped 3000 ENDIF hei3_audio_counter = 21 // PRINT (HEI3_EC) 5000 1 //CROUPIER:"You can't break me!" IF NOT IS_CHAR_DEAD hei3_millie_ped OPEN_SEQUENCE_TASK hei3_millie_seq TASK_GO_STRAIGHT_TO_COORD -1 344.6502 307.6453 998.1963 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 245.3258 //TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK hei3_millie_seq PERFORM_SEQUENCE_TASK hei3_millie_ped hei3_millie_seq CLEAR_SEQUENCE_TASK hei3_millie_seq ENDIF hei3_mobile = 5 GET_GAME_TIMER hei3_text_timer_start ENDIF ENDIF BREAK CASE 5 GET_GAME_TIMER hei3_text_timer_end hei3_text_timer_diff = hei3_text_timer_end - hei3_text_timer_start IF hei3_text_timer_diff > 1000 IF hei3_audio_playing = 0 hei3_safety_flag = 0 hei3_temp_int = 0 WHILE hei3_safety_flag = 0 WAIT 0 IF NOT IS_CHAR_DEAD hei3_millie_ped GET_SCRIPT_TASK_STATUS hei3_millie_ped PERFORM_SEQUENCE_TASK hei3_task_status IF hei3_task_status = FINISHED_TASK TASK_LOOK_AT_CHAR hei3_millie_ped scplayer 10000 hei3_safety_flag = 1 ELSE IF hei3_temp_int = 0 SET_FIXED_CAMERA_POSITION 347.32 308.43 999.52 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 339.91 301.08 998.31 JUMP_CUT OPEN_SEQUENCE_TASK hei3_player_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 hei3_millie_ped TASK_GO_STRAIGHT_TO_COORD -1 345.7446 304.2489 998.1641 PEDMOVE_WALK -1//355.4746 TASK_TURN_CHAR_TO_FACE_CHAR -1 hei3_millie_ped CLOSE_SEQUENCE_TASK hei3_player_seq PERFORM_SEQUENCE_TASK scplayer hei3_player_seq CLEAR_SEQUENCE_TASK hei3_player_seq hei3_temp_int =1 ENDIF ENDIF ELSE hei3_safety_flag = 1 ENDIF ENDWHILE IF NOT IS_CHAR_DEAD hei3_millie_ped STOP_CHAR_FACIAL_TALK hei3_millie_ped START_CHAR_FACIAL_TALK scplayer 3000 ENDIF hei3_audio_counter = 26 //PRINT (HE3_FE) 5000 1 //CARL:"If you're good I'll punish you more!" hei3_mobile = 6 GET_GAME_TIMER hei3_text_timer_start ENDIF ENDIF BREAK CASE 6 GET_GAME_TIMER hei3_text_timer_end hei3_text_timer_diff = hei3_text_timer_end - hei3_text_timer_start IF hei3_text_timer_diff > 1000 IF hei3_audio_playing = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped OPEN_SEQUENCE_TASK hei3_millie_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer // millie ends cut-scene here TASK_GO_STRAIGHT_TO_COORD -1 345.3145 305.0605 998.1641 PEDMOVE_WALK -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer // millie ends cut-scene here CLOSE_SEQUENCE_TASK hei3_millie_seq PERFORM_SEQUENCE_TASK hei3_millie_ped hei3_millie_seq CLEAR_SEQUENCE_TASK hei3_millie_seq ENDIF IF NOT IS_CHAR_DEAD hei3_millie_ped STOP_CHAR_FACIAL_TALK scplayer START_CHAR_FACIAL_TALK hei3_millie_ped 3000 ENDIF hei3_audio_counter = 17 //PRINT (HE3_DF) 5000 1 //CROUPIER:"Oh Benny, you minx!" hei3_mobile = 7 GET_GAME_TIMER hei3_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER hei3_text_timer_end hei3_text_timer_diff = hei3_text_timer_end - hei3_text_timer_start IF hei3_text_timer_diff > 1000 IF hei3_audio_playing = 0 IF NOT IS_CHAR_DEAD hei3_millie_ped STOP_CHAR_FACIAL_TALK hei3_millie_ped ENDIF hei3_text_loop_done = 1 ENDIF ENDIF BREAK ENDSWITCH GOTO hei3_text_loop4 ENDIF ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// SKIP_CUTSCENE_END IF NOT IS_CHAR_DEAD hei3_millie_ped STOP_CHAR_FACIAL_TALK hei3_millie_ped STOP_CHAR_FACIAL_TALK scplayer ENDIF CLEAR_PRINTS CLEAR_LOOK_AT scplayer //SWITCH_WIDESCREEN OFF hei3_x_button_can_be_pressed = 0 hei3_iGirlFriend = MILLIE hei3_iSpankingFlag = TRUE hei3_progress_flag = 11 ENDIF /////////////////////////////// /// whipping goes in here ? /// /////////////////////////////// IF hei3_progress_flag = 11 IF hei3_x_button_can_be_pressed = 0 GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT GF_Sex.sc number_of_instances_of_streamed_script IF number_of_instances_of_streamed_script = 0 STREAM_SCRIPT GF_Sex.sc IF HAS_STREAMED_SCRIPT_LOADED GF_Sex.sc iDateReport = 0 SET_BIT iDateReport SEX_IN_PROGRESS DISABLE_ALL_ENTRY_EXITS TRUE START_NEW_STREAMED_SCRIPT GF_Sex.sc hei3_iGirlFriend hei3_iSpankingFlag 0 2037.6515 2723.8711 9.8352 0.0702 DO_FADE 0 FADE_OUT DELETE_CHAR hei3_millie_ped MARK_CHAR_AS_NO_LONGER_NEEDED hei3_millie_ped hei3_x_button_can_be_pressed = 1 ENDIF ENDIF ENDIF //START_NEW_SCRIPT GF_Sex hei3_iGirlFriend hei3_iSpankingFlag 6 345.7446 304.2489 998.1641 97.9726 //START_NEW_SCRIPT GF_Sex hei3_iGirlFriend hei3_iSpankingFlag 0 2037.6515 2723.8711 9.8352 0.0702 IF hei3_x_button_can_be_pressed = 1 IF IS_BIT_SET iDateReport SEX_WAS_GOOD hei3_pleased_millie = 1 // ENDIF IF NOT IS_BIT_SET iDateReport SEX_IN_PROGRESS hei3_progress_flag = 12 /* DO_FADE 1500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE */ ENDIF ENDIF /* WHILE IS_BIT_SET iDateReport SEX_IN_PROGRESS WAIT 0 ENDWHILE hei3_progress_flag = 12 */ ENDIF /////////////////////////////////////////////////////////////// /// have player walking down the street away from the house /// /////////////////////////////////////////////////////////////// IF hei3_progress_flag = 12 /* SET_AREA_VISIBLE 0 CLEAR_AREA 2036.8745 2734.2817 9.8203 50.0 TRUE LOAD_SCENE 2036.8745 2734.2817 9.8203 SET_CHAR_COORDINATES scplayer 2037.6515 2723.8711 9.8352 SET_CHAR_HEADING scplayer 0.0702 */ SET_FIXED_CAMERA_POSITION 2033.2738 2719.8879 10.2275 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2033.7267 2720.7737 10.3282 JUMP_CUT SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL Player1 OFF DISABLE_ALL_ENTRY_EXITS FALSE //RESTORE_CLOTHES_STATE //BUILD_PLAYER_MODEL player1 /* DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE */ SKIP_CUTSCENE_START OPEN_SEQUENCE_TASK hei3_player_seq TASK_GO_STRAIGHT_TO_COORD -1 2036.8745 2734.2817 9.8203 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 2029.5447 2735.6282 9.8203 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK hei3_player_seq PERFORM_SEQUENCE_TASK scplayer hei3_player_seq CLEAR_SEQUENCE_TASK hei3_player_seq IF hei3_pleased_millie = 1 CLEAR_HELP PRINT_HELP HEI3_95 // You have another girlfriend. You will have to wine and dine her before she will give you the keycard. hei3_audio_counter = 0 hei3_audio_slot1 = 1 hei3_audio_slot2 = 2 hei3_audio_playing = 0 hei3_text_loop_done = 0 hei3_mobile = 0 hei3_text_timer_diff = 0 hei3_text_timer_end = 0 hei3_text_timer_start = 0 hei3_ahead_counter = 0 /* hei3_text_loop5: WAIT 0 IF hei3_text_loop_done = 0 IF NOT hei3_audio_counter = 0 IF hei3_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED hei3_audio_slot2 CLEAR_MISSION_AUDIO hei3_audio_slot2 ENDIF hei3_audio_playing = 1 ENDIF IF hei3_audio_playing = 1 LOAD_MISSION_AUDIO hei3_audio_slot1 hei3_audio[hei3_audio_counter] hei3_audio_playing = 2 ENDIF IF hei3_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED hei3_audio_slot1 PLAY_MISSION_AUDIO hei3_audio_slot1 PRINT_NOW $hei3_text[hei3_audio_counter] 10000 1 hei3_audio_playing = 3 ENDIF ENDIF IF hei3_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED hei3_audio_slot1 CLEAR_THIS_PRINT $hei3_text[hei3_audio_counter] IF hei3_audio_slot1 = 1 hei3_audio_slot1 = 2 hei3_audio_slot2 = 1 ELSE hei3_audio_slot1 = 1 hei3_audio_slot2 = 2 ENDIF hei3_audio_counter = 0 hei3_audio_playing = 0 hei3_text_loop_done = 1 ENDIF ENDIF ENDIF IF hei3_audio_playing = 0 hei3_text_loop_done = 1 //hei3_audio_counter = 42 //PRINT (HE3_HJ) 5000 1 //CROUIPER:(from inside) "I'll call you master, I promise!" ENDIF GOTO hei3_text_loop5 ENDIF */ ENDIF hei3_safety_flag = 0 TIMERA = 0 WHILE hei3_safety_flag = 0 IF hei3_pleased_millie = 1 IF NOT IS_MESSAGE_BEING_DISPLAYED IF TIMERA > 5000 hei3_safety_flag = 1 ENDIF ENDIF ELSE IF TIMERA > 7000 hei3_safety_flag = 1 ENDIF ENDIF WAIT 0 ENDWHILE SKIP_CUTSCENE_END CLEAR_CHAR_TASKS scplayer SET_CHAR_COORDINATES scplayer 2029.5447 2735.6282 9.8203 SET_CHAR_HEADING scplayer 68.4474 RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL Player1 ON CLEAR_HELP IF hei3_pleased_millie = 1 SET_BIT iActiveGF MILLIE GOTO mission_heist3_passed ELSE CLEAR_PRINTS IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 gimpleg DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF PRINT (HEI3_24) 5000 1 //~r~You failed to excite her. GOTO mission_heist3_failed ENDIF ENDIF //GOTO mission_heist3_passed GOTO heist3_main_loop /////////////////////// /// EXTRA FUNCTIONS /// /////////////////////// /////////////////////////////////// /// Mission FAIL PASSED CLEANUP /// /////////////////////////////////// // Mission XXXX 1 failed mission_heist3_failed: PRINT_BIG M_FAIL 5000 1 RETURN // mission XXXX 1 passed mission_heist3_passed: //flag_XXXX_mission1_passed = 1 flag_heist_mission_counter ++ //Used to terminate this mission loop in the main script. These varibles will be set up in the main.sc flag_player_got_gimp_suit = 1 //PRINT_WITH_NUMBER_BIG M_PASS 300 5000 1 //ADD_SCORE player1 300 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 15 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 15//amount of respect CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 REGISTER_MISSION_PASSED ( HEIST_3 ) PLAYER_MADE_PROGRESS 1 RETURN // mission cleanup mission_cleanup_heist3: SWITCH_PED_ROADS_BACK_TO_ORIGINAL 2096.3352 1656.3969 8.0 2161.6587 1728.2869 10.0 SWITCH_ROADS_BACK_TO_ORIGINAL 2096.3352 1656.3969 8.0 2161.6587 1728.2869 10.0 MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED GF_Sex.sc GET_GAME_TIMER timer_mobile_start CLEAR_ONSCREEN_COUNTER hei3_spook DISPLAY_RADAR TRUE DISABLE_ALL_ENTRY_EXITS FALSE //IF hei3_clothes_changed = 1 //IF IS_PLAYER_PLAYING player1 //RESTORE_CLOTHES_STATE //BUILD_PLAYER_MODEL player1 //ENDIF //ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED BMYPIMP MARK_MODEL_AS_NO_LONGER_NEEDED WFYSEX MARK_MODEL_AS_NO_LONGER_NEEDED BMOCHIL MARK_MODEL_AS_NO_LONGER_NEEDED WMYST MARK_MODEL_AS_NO_LONGER_NEEDED CROGRL3 MARK_MODEL_AS_NO_LONGER_NEEDED CLUB MARK_MODEL_AS_NO_LONGER_NEEDED CWMYHB1 MARK_MODEL_AS_NO_LONGER_NEEDED MAFFA MARK_MODEL_AS_NO_LONGER_NEEDED WINDSOR MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE MARK_MODEL_AS_NO_LONGER_NEEDED GUN_DILDO1 IF NOT IS_CAR_DEAD hei3_millie_car LOCK_CAR_DOORS hei3_millie_car CARLOCK_UNLOCKED ENDIF MARK_CAR_AS_NO_LONGER_NEEDED hei3_millie_car MARK_CAR_AS_NO_LONGER_NEEDED hei3_temp_car MARK_CHAR_AS_NO_LONGER_NEEDED hei3_shop_ped1 MARK_CHAR_AS_NO_LONGER_NEEDED hei3_shop_ped2 MARK_CHAR_AS_NO_LONGER_NEEDED hei3_shop_ped3 MARK_CHAR_AS_NO_LONGER_NEEDED hei3_shop_ped4 MARK_CHAR_AS_NO_LONGER_NEEDED hei3_shop_ped5 REMOVE_CHAR_ELEGANTLY hei3_millie_ped MARK_CHAR_AS_NO_LONGER_NEEDED hei3_millie_ped MARK_CHAR_AS_NO_LONGER_NEEDED hei3_doorman_ped REMOVE_PICKUP hei3_gimp_suit_pickup REMOVE_BLIP hei3_millie_blip REMOVE_BLIP hei3_sex_shop_blip REMOVE_BLIP hei3_casino_blip REMOVE_BLIP hei3_gimp_suit_blip REMOVE_CAR_RECORDING 803 //REMOVE_ANIMATION SNM UNLOAD_SPECIAL_CHARACTER 1 REMOVE_DECISION_MAKER hei3_decision flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN /* PRINT (HEI3_01) 5000 1 //~s~The ~r~Croupier ~s~has a keycard and knows the code, follow her. PRINT (HEI3_02) 5000 1 //~s~If you get too close you'll spook her, but she gets too far ahead you'll lose her. PRINT (HEI3_03) 5000 1 //~s~She's gone into the sex ~y~shop~s~, follow her inside. PRINT (HEI3_04) 5000 1 //~s~Go and get a gimp suit. PRINT (HEI3_05) 5000 1 //~s~Wait for the ~r~gimp ~s~to arrive, then take him out and take his place. PRINT (HEI3_06) 5000 1 //~s~Enter the ~y~house~s~. PRINT (HEI3_07) 5000 1 //~s~The ~r~gimps ~s~making a run for it, chase him down! PRINT (HEI3_08) 5000 1 //~s~Here comes the ~r~gimp~s~ make sure he doesn't reach the ~y~house~s~. PRINT (HEI3_09) 5000 1 //~s~The ~r~Croupier~s~ has left the shop. Follow her but remember not to get too close. PRINT (HEI3_10) 5000 1 //~s~The ~r~Croupier~s~ is almost out of sight, you need to get closer! PRINT (HEI3_11) 5000 1 //~s~You're too close, back off before you spook her! PRINT (HEI3_12) 5000 1 //~s~The ~r~gimp~s~ is about to get away, stop him! PRINT (HEI3_13) 5000 1 //~s~Get the keycard from her ~r~car~s~. PRINT (HEI3_14) 5000 1 //~r~You killed the croupier! PRINT (HEI3_15) 5000 1 //~r~The gimp got away! PRINT (HEI3_16) 5000 1 //~r~You lost her! PRINT (HEI3_17) 5000 1 //~r~You got too close! PRINT (HEI3_18) 5000 1 //~r~You destroyed her car, she's not going to help you now! PRINT (HEI3_19) 5000 1 //~r~You destroyed her car and the keycard! PRINT (HEI3_21) 5000 1 //~s~The ~r~gimp~s~ is on his way. PRINT (HEI3_22) 5000 1 //~r~You didn't intercept the gimp! PRINT (HEI3_AA) 5000 1 //There's only ever been one weak link in any security set-up - the human heart. PRINT (HEI3_AB) 5000 1 //CROUPIER:"Another shift over! See you tomorrow!" PRINT (HEI3_AC) 5000 1 //CROUPIER:"That was a long shift - see you tomorrow!" PRINT (HEI3_BA) 5000 1 //CROUPIER:"Wow, it's nice and tight!" PRINT (HEI3_BB) 5000 1 //"I'm sure you'll squeeze in just fine!" PRINT (HEI3_BC) 5000 1 //"Let's have a look" PRINT (HEI3_BD) 5000 1 //CROUPIER:"Perfect!" PRINT (HEI3_BE) 5000 1 //CROUPIER:"Oh hi Benny..." PRINT (HEI3_BF) 5000 1 //CROUPIER:"Yes master, I'm just trying it on." PRINT (HEI3_BG) 5000 1 //CROUPIER:"You got yours?" PRINT (HEI3_BH) 5000 1 //CROUPIER:"Cool, I'll see you at my house in a short while." PRINT (HEI3_BI) 5000 1 //CROUPIER:"Byeee!" PRINT (HEI3_CA) 5000 1 //CROUPIER:"The door's open Master!" PRINT (HEI3_DA) 5000 1 //CROUPIER:"Come on in, I'm ready for you!" PRINT (HEI3_DB) 5000 1 //CARL:"You've been a naughty girl!" PRINT (HEI3_DC) 5000 1 //CROUPIER:"Oh I know, I know!" PRINT (HEI3_DD) 5000 1 //CARL:"I want your security card and the entry code for Caligula's!" PRINT (HEI3_DE) 5000 1 //CROUPIER:"Oh Benny, you minx!" PRINT (HEI3_DF) 5000 1 //CROUPIER:"I'll never tell, you wicked man, never, NEVER!" PRINT (HEI3_EA) 5000 1 //CARL:"Where's the keycard? Confess!" PRINT (HEI3_EB) 5000 1 //CROUPIER:"You can't break me!" PRINT (HEI3_FA) 5000 1 //CROUPIER:"Enough master!" PRINT (HEI3_FB) 5000 1 //CROUPIER:"The card's in my car outside!" PRINT (HEI3_FC) 5000 1 //CARL:"And now, the code..." PRINT (HEI3_FD) 5000 1 //CARL:"Spit it out, you filthy worm!" PRINT (HEI3_FE) 5000 1 //CARL:"If you're good I'll punish you more!" PRINT (HEI3_FF) 5000 1 //CROUPIER:"I can take it! Do your worst!" PRINT (HEI3_GA) 5000 1 //CROUPIER:"No more! You've broken me!" PRINT (HEI3_GB) 5000 1 //CARL:"The code, you worthless trash!" PRINT (HEI3_GC) 5000 1 //CROUPIER:"God you're good at this!" PRINT (HEI3_GD) 5000 1 //CROUPIER:"I know you're not Benny - give me your number I have to see you again." PRINT (HEI3_GE) 5000 1 //CARL:"ENTRY CODE!" PRINT (HEI3_GF) 5000 1 //CROUPIER: Oh! It's... PRINT (HEI3_GG) 5000 1 //CROUIPER: A. PRINT (HEI3_GH) 5000 1 //CROUIPER: B. PRINT (HEI3_GI) 5000 1 //CROUIPER: C PRINT (HEI3_GJ) 5000 1 //CROUIPER: D. PRINT (HEI3_GK) 5000 1 //CROUIPER: E. PRINT (HEI3_GL) 5000 1 //CROUIPER: F. PRINT (HEI3_HA) 5000 1 //CROUIPER:(from inside) "I'll call you master, I promise!" */ } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* Heist 2 ******************************************* // ******************************* The Plan/Get girlfriend ******************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME HEIST2 // Mission start stuff GOSUB mission_start_heist2 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_heist2_failed ENDIF GOSUB mission_cleanup_heist2 MISSION_END { // Variables for mission /////////////////////////////////////// Variables for mission\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ LVAR_INT hei2_number_of_charges_placed LVAR_INT hei2_locate_visisble LVAR_INT hei2_counter LVAR_INT hei2_counter2 LVAR_INT hei2_dam_sec_decision LVAR_INT hei2_task_status LVAR_INT hei2_water_splash LVAR_INT hei2_temp_int LVAR_INT hei2_last_audio LVAR_INT nHelp nHelp = 0 LVAR_FLOAT hei2_player_x hei2_player_y hei2_player_z LVAR_FLOAT hei2_anim_time VAR_FLOAT hei2_height LVAR_FLOAT hei2_security_start_x[6] LVAR_FLOAT hei2_security_start_y[6] LVAR_FLOAT hei2_security_start_z[6] LVAR_FLOAT hei2_security_start_heading[6] LVAR_FLOAT hei2_security_end_x[6] LVAR_FLOAT hei2_security_end_y[6] LVAR_FLOAT hei2_security_end_z[6] LVAR_FLOAT hei2_generator_x[5] LVAR_FLOAT hei2_generator_y[5] LVAR_FLOAT hei2_generator_z[5] //LVAR_FLOAT hei2_camera_offset_x hei2_camera_offset_y hei2_camera_offset_z //LVAR_FLOAT hei2_camera_point_x hei2_camera_point_y hei2_camera_point_z ////////////////// PICK-UP //////////////////////// LVAR_INT hei2_knife_pickup ////////////////// FLAGS \\\\\\\\\\\\\\\\\\\\\\\\\\\ LVAR_INT hei2_player_spotted_flag LVAR_INT hei2_safety_flag LVAR_INT hei2_mission_progression_flag LVAR_INT hei2_charge_on_generator_flag[5] LVAR_INT hei2_security_blip_visible_flag[6] LVAR_INT hei2_dive_scene_played_flag LVAR_INT hei2_player_location_int LVAR_INT hei2_help_displayed LVAR_INT hei2_near_generator LVAR_INT hei2_para_progression hei2_in_water LVAR_INT hei2_camera_flag LVAR_INT hei2_text_patrol_flag[6] LVAR_INT hie2_out_of_plane_blip_added LVAR_INT hei2_player_spotted_before LVAR_INT hei2_player_duck //LVAR_INT hei2_gate_state LVAR_INT hei2_clothes_changed LVAR_INT hei2_plane_blip_swap LVAR_INT hei2_plane_doors_locked hei2_player_has_jumped hei2_landed_flag ///////////////// BLIPS \\\\\\\\\\\\\\\\\\\\\\\\\\\ LVAR_INT hei2_generator_blip[5] LVAR_INT hei2_generator_room_door_blip LVAR_INT hei2_security_blip[6] LVAR_INT hei2_plane_blip hei2_checkpoint LVAR_INT hei2_quay_guard_blip[2] LVAR_INT hei2_knife_blip ///////////////// PEOPLE \\\\\\\\\\\\\\\\\\\\\\\\\\ LVAR_INT hei2_security_ped[6] LVAR_INT hei2_quay_guard[2] LVAR_INT hei2_temp_ped[2] ///////////////// GROUPS \\\\\\\\\\\\\\\\\\\\\\\\\\\\ ///////////////// VEHICLES \\\\\\\\\\\\\\\\\\\\\\\\\\ LVAR_INT hei2_player_boat LVAR_INT hei2_jump_plane ///////////////// OBJECTS \\\\\\\\\\\\\\\\\\\\\\\ LVAR_INT hei2_bomb_obj[5] LVAR_INT hei2_quay_object[8] ////////////////// SEQUENCES \\\\\\\\\\\\\\\\\\\\\\\\\ LVAR_INT hei2_plant_bomb_seq LVAR_INT hei2_dam_dive_seq LVAR_INT hei2_sequence LVAR_INT hei2_can_be_spotted LVAR_INT hei2_timer_start hei2_timer_current hei2_timer_elapsed LVAR_INT hei2_fireball hei2_fireball2 ///// AUDIO CRAP VAR_TEXT_LABEL hei2_text[18] LVAR_INT hei2_audio[18] LVAR_INT hei2_audio_counter LVAR_INT hei2_audio_slot1 hei2_audio_slot2 hei2_audio_playing LVAR_INT hei2_text_loop_done LVAR_INT hei2_mobile LVAR_INT hei2_text_timer_diff LVAR_INT hei2_text_timer_end LVAR_INT hei2_text_timer_start LVAR_INT hei2_ahead_counter LVAR_INT hei2_dummy LVAR_INT hei2_sfx[2] LVAR_INT hei2_sfx_counter LVAR_INT hei2_sfx_playing LVAR_INT hei2_sfx_played // ****************************************START OF CUTSCENE******************************** // ****************************************END OF CUTSCENE********************************** // **************************************** Mission Start ********************************** mission_start_heist2: LOAD_MISSION_TEXT HEIST2 REGISTER_MISSION_GIVEN SET_FADING_COLOUR 0 0 0 flag_player_on_mission = 1 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 10 FORCE_WEATHER WEATHER_SUNNY_VEGAS LOAD_CUTSCENE HEIST4a WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT LOAD_SCENE 2030.1027 1020.7899 9.8203 WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE RELEASE_WEATHER SET_AREA_VISIBLE 0 WAIT 0 REQUEST_COLLISION 2030.1027 1020.7899 LOAD_SCENE 2030.1027 1020.7899 9.8203 SET_CHAR_COORDINATES scplayer 2030.1027 1020.7899 9.8130 SET_CHAR_HEADING scplayer 277.5123 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2016.4222 1017.1024 10.0 //TRIAD CASINO SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT ADD_BLIP_FOR_COORD 1717.0166 1602.4974 9.3368 hei2_plane_blip //ADD_BLIP_FOR_COORD 1427.87 1258.75 11.35 hei2_plane_blip SET_BLIP_AS_FRIENDLY hei2_plane_blip TRUE REQUEST_ANIMATION BOMBER WHILE NOT HAS_ANIMATION_LOADED BOMBER WAIT 0 ENDWHILE SET_FADING_COLOUR 0 0 0 SWITCH_WIDESCREEN OFF //STORE_CLOTHES_STATE //hei2_clothes_changed = 1 //GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP Player1 balaclava balaclava CLOTHES_TEX_EXTRA1 //BUILD_PLAYER_MODEL player1 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_STEAL hei2_dam_sec_decision // new ai stuff //WAIT 1000 LOAD_SCENE 2030.1027 1020.7899 9.8203 DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL Player1 ON //LOAD_CHAR_DECISION_MAKER david/dam_sec hei2_dam_sec_decision //CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE hei2_dam_sec_decision EVENT_POTENTIAL_WALK_INTO_PED //was TASK_COMPLEX_AVOID_OTHER_PED_WHILE_WANDERING PRINT (HEI2_90) 10000 1 // Go to the airport you need a plane to parachute onto the dam quay. /////////////////////////// set the initial flag status \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ hei2_player_spotted_flag = 0 hei2_mission_progression_flag = 0 hei2_safety_flag = 0 hei2_dive_scene_played_flag = 0 hei2_help_displayed = 0 hei2_near_generator = 0 hei2_in_water = 0 hie2_out_of_plane_blip_added = 0 hei2_camera_flag = 0 hei2_player_spotted_before = 0 // hei2_clothes_changed = 0 hei2_plane_doors_locked = 0 hei2_player_has_jumped = 0 hei2_plane_blip_swap = 0 hei2_landed_flag = 0 hei2_para_progression = 0 hei2_counter = 0 WHILE hei2_counter < 6 hei2_security_blip_visible_flag[hei2_counter]= 0 IF hei2_counter < 5 hei2_charge_on_generator_flag[hei2_counter] = 0 ENDIF hei2_counter++ ENDWHILE /////////////////////////// set the initial valus of other variables \\\\\\\\\\\\\\\ hei2_number_of_charges_placed = 0 hei2_player_location_int = 0 hei2_locate_visisble = TRUE hei2_counter = 0 hei2_counter2 = 0 //////security guards start tehn end points //////////////////////////// set the guards starting locations \\\\\\\\\\\\\\\\\ hei2_security_start_x[0] = -955.7253 hei2_security_start_y[0] = 1920.6371 hei2_security_start_z[0] = 8.0078 hei2_security_start_heading[0] = 294.0869 hei2_security_start_x[1] = -959.8978 hei2_security_start_y[1] = 1861.8835 hei2_security_start_z[1] = 8.0078 hei2_security_start_heading[1] = 87.9045 hei2_security_start_x[2] = -945.8220 hei2_security_start_y[2] = 1868.0298 hei2_security_start_z[2] = 4.0051 hei2_security_start_heading[2] = 177.4150 hei2_security_start_x[3] = -945.5732 hei2_security_start_y[3] = 1911.2555 hei2_security_start_z[3] = 4.0000 hei2_security_start_heading[3] = 183.0188 hei2_security_start_x[4] = -959.6175 hei2_security_start_y[4] = 1858.1558 hei2_security_start_z[4] = 8.0078 hei2_security_start_heading[4] = 180.4759 hei2_security_start_x[5] = -959.7453 hei2_security_start_y[5] = 1914.6742 hei2_security_start_z[5] = 8.0078 hei2_security_start_heading[5] = 185.4313 /////////////////////////// set the guards end location \\\\\\\\\\\\\\\\\\\\\\\\\ hei2_security_end_x[0] = -955.7253 hei2_security_end_y[0] = 1920.6371 hei2_security_end_z[0] = 8.0078 hei2_security_end_x[1] = -959.8978 hei2_security_end_y[1] = 1861.8835 hei2_security_end_z[1] = 8.0078 hei2_security_end_x[2] = -943.7589 hei2_security_end_y[2] = 1888.9435 hei2_security_end_z[2] = 4.0051 hei2_security_end_x[3] = -943.0214 hei2_security_end_y[3] = 1932.3524 hei2_security_end_z[3] = 4.0000 hei2_security_end_x[4] = -959.4366 hei2_security_end_y[4] = 1900.0217 hei2_security_end_z[4] = 8.0078 hei2_security_end_x[5] = -959.4960 hei2_security_end_y[5] = 1936.9250 hei2_security_end_z[5] = 8.0061 //////////////////////////// set the location of the generators \\\\\\\\\\\\\\\\\\\\ hei2_generator_x[0] = -952.56 hei2_generator_y[0] = 1943.52 hei2_generator_z[0] = 8.0 hei2_generator_x[1] = -952.56 hei2_generator_y[1] = 1922.07 hei2_generator_z[1] = 8.0 hei2_generator_x[2] = -952.56 hei2_generator_y[2] = 1900.44 hei2_generator_z[2] = 8.0 hei2_generator_x[3] = -952.56 hei2_generator_y[3] = 1878.16 hei2_generator_z[3] = 8.0 hei2_generator_x[4] = -952.56 hei2_generator_y[4] = 1857.70 hei2_generator_z[4] = 8.0 // hei2_gate_state = iFlagOpenAirportGates hei2_can_be_spotted = 0 /////// AUDIO CRAP /////////////////// hei2_audio_counter = 0 hei2_audio_slot1 = 1 hei2_audio_slot2 = 2 hei2_audio_playing = 0 hei2_text_loop_done = 0 hei2_mobile = 0 hei2_text_timer_diff = 0 hei2_text_timer_end = 0 hei2_text_timer_start = 0 hei2_ahead_counter = 0 hei2_last_audio = 0 hei2_sfx[1] = SOUND_HATCH_LOCK hei2_sfx_counter = 0 hei2_sfx_playing = 0 hei2_sfx_played = 0 $hei2_text[1] = HE2_AA //Hey, I found him, he's over here! $hei2_text[2] = HE2_AB//He's in there somewhere, start looking! $hei2_text[3] = HE2_AC//The cops are on the way, this thrill seeker ain't gonna escape! $hei2_text[4] = HE2_AD//We got a light saying there's been a break in! $hei2_text[5] = HE2_AE//That's the guy, arrest him! $hei2_text[6] = HE2_AF//We need more men in here! $hei2_text[7] = HE2_AG//Stop him, for chrisakes! $hei2_text[8] = HE2_AH//Always get the nut jobs on my shift! $hei2_text[9] = HE2_AJ//Must be seeing things. I thought that coffee tasted a bit odd! $hei2_text[10] = HE2_AK//Finally, some action around here! $hei2_text[11] = HE2_AL//Where the hell did he go? $hei2_text[12] = HE2_BA//Any sign of him yet? $hei2_text[13] = HE2_BB//Not yet, but we've locked the quay entrance and the cops are on the way $hei2_text[14] = HE2_CA//What the... somebody'e locked the hatch! $hei2_text[15] = HE2_CB//Shit, the hatch locked behind me! $hei2_text[16] = HE2_DA //Shit, must have taken a wrong turn someplace! $hei2_text[17] = HE2_DB //We've got him trapped, there's no way off that ledge! hei2_audio[1] = SOUND_HE2_AA //Hey, I found him, he's over here! hei2_audio[2] = SOUND_HE2_AB//He's in there somewhere, start looking! hei2_audio[3] = SOUND_HE2_AC//The cops are on the way, this thrill seeker ain't gonna escape! hei2_audio[4] = SOUND_HE2_AD//We got a light saying there's been a break in! hei2_audio[5] = SOUND_HE2_AE//That's the guy, arrest him! hei2_audio[6] = SOUND_HE2_AF//We need more men in here! hei2_audio[7] = SOUND_HE2_AG//Stop him, for chrisakes! hei2_audio[8] = SOUND_HE2_AH//Always get the nut jobs on my shift! hei2_audio[9] = SOUND_HE2_AJ//Must be seeing things. I thought that coffee tasted a bit odd! hei2_audio[10] = SOUND_HE2_AK//Finally, some action around here! hei2_audio[11] = SOUND_HE2_AL//Where the hell did he go? hei2_audio[12] = SOUND_HE2_BA//Any sign of him yet? hei2_audio[13] = SOUND_HE2_BB//Not yet, but we've locked the quay entrance and the cops are on the way hei2_audio[14] = SOUND_HE2_CA//What the... somebody'e locked the hatch! hei2_audio[15] = SOUND_HE2_CB//Shit, the hatch locked behind me! hei2_audio[16] = SOUND_HE2_DA //Shit, must have taken a wrong turn someplace! hei2_audio[17] = SOUND_HE2_DB //We've got him trapped, there's no way off that ledge! //VIEW_FLOAT_VARIABLE hei2_height hei2_height //VIEW_INTEGER_VARIABLE hei2_plane_doors_locked hei2_plane_doors_locked SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 PEDTYPE_MISSION1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION2 PEDTYPE_MISSION2 SWITCH_ENTRY_EXIT damin FALSE SWITCH_ENTRY_EXIT damout FALSE // ****************************************START OF CUTSCENE******************************** // fades the screen in /* LOAD_CUTSCENE casino_1 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE */ // ****************************************END OF CUTSCENE********************************** WAIT 1000 // ************************************** MAIN LOOP ********************************** heist2_main_loop: WAIT 0 ///////////////////////////// /// debug key board stuff /// ///////////////////////////// //GET_CHAR_LIGHTING scplayer hei2_light_f //VIEW_FLOAT_VARIABLE hei2_light_f light_level IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_1 SET_CHAR_COORDINATES scplayer -585.0 2026.0 60.0 // the dam ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_2 SET_CHAR_COORDINATES scplayer 1423.6571 1643.1824 9.8359 // the airport //GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_UNARMED 1 // SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_3 SET_CHAR_COORDINATES scplayer -828.64 1971.644 6.0 // the door to generator room ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_4 SET_CHAR_COORDINATES scplayer -693.98 1806.81 800.0 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_RETURN hei2_dive_scene_played_flag = 0 hei2_camera_flag = 0 GOSUB heist2_dive_scene ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_6 hei2_mission_progression_flag = 6 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_7 hei2_para_progression = 6 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_heist2_passed ENDIF /////////////////////////////////// /// Set up for start of Mission /// /////////////////////////////////// IF hei2_mission_progression_flag = 99999 ADD_BLIP_FOR_COORD 0.0 0.0 0.0 hei2_quay_guard_blip[0] ADD_BLIP_FOR_COORD 0.0 0.0 0.0 hei2_quay_guard_blip[1] ENDIF IF hei2_mission_progression_flag = 0 PRINT (HEI2_90) 7000 1 // Go to the airport you need a plane to parachute onto the dam quay. hei2_mission_progression_flag = 1 hei2_para_progression = 1 ENDIF ////////////////////////////////// /// PARACHUTE CODE GOES HERE ? /// ////////////////////////////////// IF hei2_para_progression < 12 IF hei2_para_progression < 4 /////////////////////////////// /////////////////////////////// /////////////////////////////// IF hei2_para_progression = 1 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 1477.4014 1677.3990 250.0 250.0 FALSE // plane OR LOCATE_CHAR_ANY_MEANS_2D scplayer 1717.0166 1602.4974 20.0 20.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D SCPLAYER 1477.1776 1639.0835 10.9203 79.4990 143.0963 4.9000 FALSE REQUEST_MODEL NEVADA WHILE NOT HAS_MODEL_LOADED NEVADA WAIT 0 ENDWHILE SET_AREA51_SAM_SITE OFF CREATE_CAR NEVADA 1477.4014 1677.3990 9.8425 hei2_jump_plane SET_CAR_HEADING hei2_jump_plane 180.049 hei2_para_progression = 2 ENDIF ENDIF /////////////////////////////// /////////////////////////////// /////////////////////////////// IF hei2_plane_blip_swap = 0 IF LOCATE_CHAR_ANY_MEANS_3D SCPLAYER 1477.1776 1639.0835 10.9203 79.4990 143.0963 4.9000 FALSE OR LOCATE_CHAR_ANY_MEANS_2D scplayer 1717.0166 1602.4974 20.0 20.0 FALSE IF NOT IS_CAR_DEAD hei2_jump_plane REMOVE_BLIP hei2_plane_blip ADD_BLIP_FOR_CAR hei2_jump_plane hei2_plane_blip SET_BLIP_AS_FRIENDLY hei2_plane_blip TRUE CLEAR_PRINTS PRINT (HEI2_57) 7000 1 //~s~Get in the plane on the end of the runway. hei2_plane_blip_swap = 1 CHECKPOINT_SAVE 1 ENDIF ENDIF ENDIF /////////////////////////////// /////////////////////////////// /////////////////////////////// IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1717.0166 1602.4974 9.3368 10.0 10.0 5.0 FALSE //IF NOT iFlagOpenAirportGates = 1 //iFlagOpenAirportGates = 1 //ENDIF ENDIF /////////////////////////////// /////////////////////////////// /////////////////////////////// IF hei2_para_progression > 1 IF hei2_para_progression < 4 IF IS_CAR_DEAD hei2_jump_plane CLEAR_PRINTS PRINT (HEI2_25) 5000 1 //~r~ The plane has been destroyed! GOTO mission_heist2_failed ENDIF ENDIF ENDIF /////////////////////////////// /////////////////////////////// /////////////////////////////// IF hei2_para_progression = 2 IF NOT IS_CAR_DEAD hei2_jump_plane IF IS_CHAR_SITTING_IN_CAR scplayer hei2_jump_plane LOCK_CAR_DOORS hei2_jump_plane CARLOCK_LOCKED_PLAYER_INSIDE hei2_plane_doors_locked = 1 //LOCK_CAR_DOORS hei2_jump_plane CARLOCK_UNLOCKED SET_CAMERA_BEHIND_PLAYER CLEAR_PRINTS PRINT (HEI2_26) 10000 1 //~s~Fly the aircraft to the jump point over the dam. REMOVE_BLIP hei2_plane_blip ADD_BLIP_FOR_COORD -592.42 1555.88 750.0 hei2_plane_blip CREATE_CHECKPOINT CHECKPOINT_TORUS -592.42 1555.88 750.0 -592.42 1555.88 750.0 25.0 hei2_checkpoint //REMOVE_ALL_CHAR_WEAPONS scplayer //SET_PLAYER_CYCLE_WEAPON_BUTTON PLAYER1 FALSE //GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_UNARMED 1 //SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED REQUEST_MODEL gun_para WHILE NOT HAS_MODEL_LOADED gun_para REQUEST_MODEL gun_para WAIT 0 ENDWHILE GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_PARACHUTE 1 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PARACHUTE Para_pickup_flag = 0 hei2_para_progression = 3 ENDIF ENDIF ENDIF ELSE //IF NOT iFlagOpenAirportGates = hei2_gate_state //iFlagOpenAirportGates = hei2_gate_state //ENDIF ENDIF IF hei2_para_progression = 3 IF NOT IS_CAR_DEAD hei2_jump_plane IF IS_CHAR_SITTING_IN_CAR scplayer hei2_jump_plane OR hei2_player_has_jumped = 1 /// add a check here to see if the player is in air or on ground /// // on ground unlock the plane? /// IF hie2_out_of_plane_blip_added = 1 REMOVE_BLIP hei2_plane_blip ADD_BLIP_FOR_COORD -592.42 1555.88 750.0 hei2_plane_blip CREATE_CHECKPOINT CHECKPOINT_TORUS -592.42 1555.88 750.0 -592.42 1555.88 750.0 25.0 hei2_checkpoint //REMOVE_ALL_CHAR_WEAPONS scplayer GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_PARACHUTE 1 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PARACHUTE hie2_out_of_plane_blip_added = 0 ENDIF IF LOCATE_CHAR_IN_CAR_3D scplayer -592.42 1555.88 750.0 50.0 50.0 25.0 FALSE IF hei2_plane_doors_locked = 1 LOCK_CAR_DOORS hei2_jump_plane CARLOCK_UNLOCKED CLEAR_HELP PRINT_HELP_FOREVER (HEI2_50)//:HEIST2] ~s~Press the ~t~ button to jump from the plane. CLEAR_PRINTS PRINT (hei2_15) 10000 1 // ~s~ GO! hei2_plane_doors_locked = 0 ENDIF IF hei2_player_has_jumped = 1 CLEAR_HELP CLEAR_PRINTS SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL Player1 OFF CLEAR_PRINTS DELETE_CHECKPOINT hei2_checkpoint /////////////////////////////////////////////////////////////// /// aparently need a cut-scene here, no ideas as yet though /// /////////////////////////////////////////////////////////////// FREEZE_CAR_POSITION hei2_jump_plane TRUE SET_CAR_COORDINATES hei2_jump_plane -592.42 1555.88 750.0 SET_CAR_HEADING hei2_jump_plane 180.0 SET_HELI_BLADES_FULL_SPEED hei2_jump_plane //SET_FIXED_CAMERA_POSITION -604.7717 1543.1805 763.1285 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT -604.2688 1543.8140 762.5404 JUMP_CUT TIMERA = 0 para_control_off = 1 //////////////////// /// PLANE CRASH /// //////////////////// REQUEST_CAR_RECORDING 805 //WARP_CHAR_FROM_CAR_TO_COORD scplayer -594.99 1551.64 750.0 //SET_CHAR_HEADING scplayer 45.0 //RESTORE_CAMERA TIMERA = 0 hei2_safety_flag = 0 WHILE hei2_safety_flag = 0 IF HAS_CAR_RECORDING_BEEN_LOADED 805 AND TIMERA > 3000 hei2_safety_flag = 1 REQUEST_CAR_RECORDING 805 ENDIF WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD hei2_jump_plane START_PLAYBACK_RECORDED_CAR hei2_jump_plane 805 SET_FIXED_CAMERA_POSITION -590.9276 1546.7495 735.8972 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -591.0876 1546.2274 735.0595 JUMP_CUT SET_CHAR_VISIBLE scplayer FALSE GET_GAME_TIMER hei2_timer_start ENDIF IF NOT IS_CAR_DEAD hei2_jump_plane FREEZE_CAR_POSITION hei2_jump_plane FALSE ENDIF SKIP_CUTSCENE_START para_freefall_vz = 0.0 hei2_safety_flag = 0 hei2_temp_int = 0 WHILE hei2_safety_flag = 0 para_freefall_vz = 0.0 IF NOT IS_CAR_DEAD hei2_jump_plane IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR hei2_jump_plane hei2_safety_flag = 1 ELSE GET_GAME_TIMER hei2_timer_current hei2_timer_elapsed = hei2_timer_current - hei2_timer_start IF hei2_temp_int = 0 IF hei2_timer_elapsed > 6000 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REQUEST_MODEL SW_BIT_09 WHILE NOT HAS_MODEL_LOADED SW_BIT_09 WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION -783.12 1165.26 28.98 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -781.3640 1164.0773 29.0876 JUMP_CUT LOAD_SCENE -781.3640 1164.0773 29.0876 REQUEST_COLLISION -781.3640 1164.0773 IF NOT IS_CAR_DEAD hei2_jump_plane IF IS_PLAYBACK_GOING_ON_FOR_CAR hei2_jump_plane SKIP_IN_PLAYBACK_RECORDED_CAR hei2_jump_plane 80.0 ENDIF SET_HELI_BLADES_FULL_SPEED hei2_jump_plane ENDIF //WAIT 500 LOAD_SCENE_IN_DIRECTION -781.3640 1164.0773 29.0876 270.0 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE hei2_temp_int = 1 ENDIF ENDIF ENDIF ENDIF WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD hei2_jump_plane SET_HELI_BLADES_FULL_SPEED hei2_jump_plane ENDIF CREATE_FX_SYSTEM smoke50lit -761.2061 1174.6165 39.0387 TRUE hei2_fireball CREATE_FX_SYSTEM explosion_small -761.2061 1174.6165 38.5387 TRUE hei2_fireball2 IF hei2_fireball = -1 //BREAKPOINT failed_to_create_fx_system_water_splash ELSE WAIT 300 PLAY_FX_SYSTEM hei2_fireball2 PLAY_FX_SYSTEM hei2_fireball ENDIF ADD_EXPLOSION -761.2062 1175.6165 39.5387 EXPLOSION_MOLOTOV ADD_EXPLOSION -761.2060 1173.6165 39.5387 EXPLOSION_MOLOTOV ADD_EXPLOSION -761.2061 1174.6165 39.5387 EXPLOSION_MOLOTOV //ADD_EXPLOSION -761.2062 1175.6165 39.5387 EXPLOSION_ROCKET //ADD_EXPLOSION -761.2060 1173.6165 39.5387 EXPLOSION_GRENADE //ADD_EXPLOSION -761.2061 1174.6165 39.5387 EXPLOSION_HELI IF NOT IS_CAR_DEAD hei2_jump_plane EXPLODE_CAR hei2_jump_plane ENDIF ////////////////// ////////////////// TIMERA = 0 WHILE TIMERA < 2000 IF TIMERA < 500 ADD_EXPLOSION -761.2062 1175.6165 39.5387 EXPLOSION_ROCKET ELSE IF TIMERA < 1000 ELSE IF TIMERA < 1500 ADD_EXPLOSION -761.2060 1173.6165 39.5387 EXPLOSION_GRENADE ELSE ADD_EXPLOSION -761.2061 1174.6165 39.5387 EXPLOSION_HELI ENDIF ENDIF ENDIF IF IS_CHAR_DEAD scplayer OR IS_CAR_DEAD hei2_jump_plane TIMERA = 2000 ENDIF WAIT 0 ENDWHILE SKIP_CUTSCENE_END MARK_MODEL_AS_NO_LONGER_NEEDED SW_BIT_09 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REMOVE_CAR_RECORDING 805 KILL_FX_SYSTEM hei2_fireball KILL_FX_SYSTEM hei2_fireball2 //DELETE_CAR hei2_jump_plane SET_CHAR_VISIBLE scplayer TRUE SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL Player1 ON para_control_off = 0 para_freefall_vz = -30.0 RESTORE_CAMERA_JUMPCUT IF NOT IS_CAR_DEAD hei2_jump_plane SET_CAR_COORDINATES hei2_jump_plane -761.2061 1174.6165 39.5387 ENDIF MARK_CAR_AS_NO_LONGER_NEEDED hei2_jump_plane hei2_para_progression = 4 ENDIF ELSE CLEAR_THIS_PRINT hei2_15 GET_CHAR_HEIGHT_ABOVE_GROUND scplayer hei2_height IF hei2_height < 5.0 IF hei2_plane_doors_locked = 1 LOCK_CAR_DOORS hei2_jump_plane CARLOCK_UNLOCKED hei2_plane_doors_locked = 0 ENDIF ELSE IF hei2_plane_doors_locked = 0 LOCK_CAR_DOORS hei2_jump_plane CARLOCK_LOCKED_PLAYER_INSIDE hei2_plane_doors_locked = 1 ENDIF ENDIF IF nHelp = 0 AND LOCATE_CHAR_IN_CAR_3D scplayer -592.42 1555.88 750.0 400.0 400.0 300.0 FALSE PRINT_HELP_FOREVER_CONDITIONAL HEI2_88 1 // When you reach the corona press ~m~~widget_enter_car~ to jump from the plane. (CONDITION_FLAG_ENTER_CAR) nHelp = 1 ENDIF ENDIF ELSE // player has left the vehicle IF hei2_player_has_jumped = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -592.42 1555.88 750.0 100.0 100.0 100.0 FALSE hei2_player_has_jumped = 1 CHECKPOINT_SAVE 99 ELSE CLEAR_PRINTS PRINT (HEI2_28) 1000 1 //~s~Get back in the plane! IF hie2_out_of_plane_blip_added = 0 REMOVE_BLIP hei2_plane_blip DELETE_CHECKPOINT hei2_checkpoint ADD_BLIP_FOR_CAR hei2_jump_plane hei2_plane_blip SET_BLIP_AS_FRIENDLY hei2_plane_blip TRUE hie2_out_of_plane_blip_added = 1 ENDIF IF hei2_plane_doors_locked = 1 LOCK_CAR_DOORS hei2_jump_plane CARLOCK_UNLOCKED hei2_plane_doors_locked = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ///////////////////////// ///////////////////////// IF hei2_para_progression = 4 // jumped out of plane CREATE_CHECKPOINT CHECKPOINT_EMPTYTUBE -811.07 1816.08 7.0 -811.07 1816.08 200.0 6.0 hei2_checkpoint REMOVE_BLIP hei2_plane_blip ADD_BLIP_FOR_COORD -811.07 1816.08 7.0 hei2_plane_blip MARK_CAR_AS_NO_LONGER_NEEDED hei2_jump_plane MARK_MODEL_AS_NO_LONGER_NEEDED NEVADA REQUEST_MODEL smashboxpile REQUEST_MODEL k_cargo1 REQUEST_MODEL KMB_CONTAINER_RED REQUEST_MODEL k_cargo4 REQUEST_MODEL WMYSGRD REQUEST_MODEL NITESTICK LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED k_cargo4 OR NOT HAS_MODEL_LOADED smashboxpile OR NOT HAS_MODEL_LOADED k_cargo1 OR NOT HAS_MODEL_LOADED KMB_CONTAINER_RED OR NOT HAS_MODEL_LOADED WMYSGRD OR NOT HAS_MODEL_LOADED NITESTICK WAIT 0 ENDWHILE CREATE_OBJECT_NO_OFFSET smashboxpile -829.8794 1957.8267 6.4364 hei2_quay_object[0] SET_OBJECT_HEADING hei2_quay_object[0] 7.1004 CREATE_OBJECT_NO_OFFSET smashboxpile -824.9033 1958.4427 6.5048 hei2_quay_object[1] SET_OBJECT_HEADING hei2_quay_object[1] 9.1604 CREATE_OBJECT_NO_OFFSET k_cargo1 -828.3333 1952.5269 5.9651 hei2_quay_object[2] SET_OBJECT_HEADING hei2_quay_object[2] 102.0394 CREATE_OBJECT_NO_OFFSET k_cargo1 -825.9227 1953.1711 5.9651 hei2_quay_object[3] SET_OBJECT_HEADING hei2_quay_object[3] 100.9489 CREATE_OBJECT_NO_OFFSET k_cargo4 -827.6044 1958.2758 5.9873 hei2_quay_object[4] SET_OBJECT_HEADING hei2_quay_object[4] 101.9089 CREATE_OBJECT_NO_OFFSET KMB_CONTAINER_RED -820.3694 1933.6655 7.3952 hei2_quay_object[5] SET_OBJECT_HEADING hei2_quay_object[5] 11.8154 CREATE_OBJECT_NO_OFFSET KMB_CONTAINER_RED -822.3879 1945.5193 7.4836 hei2_quay_object[6] // gap against wall needs fixed!!! SET_OBJECT_HEADING hei2_quay_object[6] 11.8154 //CREATE_OBJECT_NO_OFFSET k_cargo1 -822.6232 1940.5591 6.0106 hei2_quay_object[7] //SET_OBJECT_HEADING hei2_quay_object[7] 9.0207 CREATE_CHAR PEDTYPE_MISSION1 WMYSGRD -826.3729 1946.9884 6.0692 hei2_quay_guard[0] GIVE_WEAPON_TO_CHAR hei2_quay_guard[0] WEAPONTYPE_NIGHTSTICK 3000 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD hei2_quay_guard[0] FALSE SET_CHAR_HEADING hei2_quay_guard[0] 0.0000 SET_SENSE_RANGE hei2_quay_guard[0] 10.0 CREATE_CHAR PEDTYPE_MISSION1 WMYSGRD -823.3655 1956.2758 6.0400 hei2_quay_guard[1] GIVE_WEAPON_TO_CHAR hei2_quay_guard[1] WEAPONTYPE_NIGHTSTICK 3000 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD hei2_quay_guard[1] FALSE SET_CHAR_HEADING hei2_quay_guard[1] 301.2606 SET_SENSE_RANGE hei2_quay_guard[1] 10.0 SET_CHAR_DECISION_MAKER hei2_quay_guard[0] hei2_dam_sec_decision SET_CHAR_DECISION_MAKER hei2_quay_guard[1] hei2_dam_sec_decision FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE -825.4943 1938.9036 6.0000 NONE NONE EXTEND_PATROL_ROUTE -823.3667 1933.5399 6.0000 ROADCROSS PED EXTEND_PATROL_ROUTE -825.4943 1938.9036 6.0000 NONE NONE EXTEND_PATROL_ROUTE -826.9571 1947.5686 6.0000 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE hei2_quay_guard[0] PEDMOVE_WALK FOLLOW_ROUTE_BACKFORWARD FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE -828.9601 1955.3660 6.0000 ROADCROSS PED EXTEND_PATROL_ROUTE -823.2458 1957.0160 6.0070 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE hei2_quay_guard[1] PEDMOVE_WALK FOLLOW_ROUTE_BACKFORWARD hei2_para_progression = 5 ENDIF /* PRINT (HEI2_33) 2000 1 //~s~When at the checkpoint press the ~t~ button to jump from the plane */ IF hei2_para_progression > 4 AND hei2_para_progression < 12 IF NOT IS_CAR_DEAD hei2_jump_plane IF NOT IS_CAR_ON_SCREEN hei2_jump_plane MARK_CAR_AS_NO_LONGER_NEEDED hei2_jump_plane MARK_MODEL_AS_NO_LONGER_NEEDED NEVADA DELETE_CAR hei2_jump_plane ENDIF ENDIF IF NOT hei2_audio_counter = 0 IF hei2_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED hei2_audio_slot2 CLEAR_MISSION_AUDIO hei2_audio_slot2 ENDIF hei2_audio_playing = 1 ENDIF IF hei2_audio_playing = 1 LOAD_MISSION_AUDIO hei2_audio_slot1 hei2_audio[hei2_audio_counter] hei2_audio_playing = 2 ENDIF IF hei2_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED hei2_audio_slot1 PLAY_MISSION_AUDIO hei2_audio_slot1 PRINT_NOW $hei2_text[hei2_audio_counter] 10000 1 hei2_audio_playing = 3 ENDIF ENDIF IF hei2_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED hei2_audio_slot1 CLEAR_THIS_PRINT $hei2_text[hei2_audio_counter] IF hei2_audio_slot1 = 1 hei2_audio_slot1 = 2 hei2_audio_slot2 = 1 ELSE hei2_audio_slot1 = 1 hei2_audio_slot2 = 2 ENDIF hei2_audio_counter = 0 hei2_audio_playing = 0 ENDIF ENDIF ENDIF hei2_counter = 0 WHILE ( hei2_counter < 2 ) ///////////////////////////////////////// ///////////////////////////////////////// IF NOT IS_CHAR_DEAD hei2_quay_guard[hei2_counter] //INVESTIGATE IF hei2_text_patrol_flag[hei2_counter] = 0 IF IS_CHAR_RESPONDING_TO_EVENT hei2_quay_guard[hei2_counter] EVENT_SOUND_QUIET OR IS_CHAR_RESPONDING_TO_EVENT hei2_quay_guard[hei2_counter] EVENT_ACQUAINTANCE_PED_HATE_BADLY_LIT IF NOT IS_CHAR_RESPONDING_TO_EVENT hei2_quay_guard[hei2_counter] EVENT_ACQUAINTANCE_PED_HATE IF hei2_audio_playing = 0 GENERATE_RANDOM_INT_IN_RANGE 0 4 hei2_temp_int IF hei2_temp_int = 0 hei2_audio_counter = 1 ELSE IF hei2_temp_int = 1 hei2_audio_counter = 8 ELSE hei2_audio_counter = 12 ENDIF ENDIF ENDIF hei2_text_patrol_flag[hei2_counter] = 1 SET_CHAR_SAY_CONTEXT hei2_quay_guard[hei2_counter] CONTEXT_GLOBAL_STEALTH_ALERT_GENERIC hei2_dummy ENDIF ENDIF ENDIF IF hei2_text_patrol_flag[hei2_counter] = 1 IF NOT IS_CHAR_RESPONDING_TO_EVENT hei2_quay_guard[hei2_counter] EVENT_SOUND_QUIET AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_quay_guard[hei2_counter] EVENT_ACQUAINTANCE_PED_HATE_BADLY_LIT AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_quay_guard[hei2_counter] EVENT_ACQUAINTANCE_PED_HATE AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_quay_guard[hei2_counter] EVENT_SHOT_FIRED AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_quay_guard[hei2_counter] EVENT_DAMAGE AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_quay_guard[hei2_counter] EVENT_GUN_AIMED_AT IF hei2_audio_playing = 0 GENERATE_RANDOM_INT_IN_RANGE 0 3 hei2_temp_int IF hei2_temp_int = 0 hei2_audio_counter = 6 ELSE IF hei2_temp_int = 1 hei2_audio_counter = 3 ELSE hei2_audio_counter = 2 ENDIF ENDIF ENDIF SET_CHAR_SAY_CONTEXT hei2_quay_guard[hei2_counter] CONTEXT_GLOBAL_ARREST hei2_dummy hei2_text_patrol_flag[hei2_counter] = 0 ENDIF ENDIF IF hei2_text_patrol_flag[hei2_counter] = 0 OR hei2_text_patrol_flag[hei2_counter] = 1 IF IS_CHAR_RESPONDING_TO_EVENT hei2_quay_guard[hei2_counter] EVENT_ACQUAINTANCE_PED_HATE OR IS_CHAR_RESPONDING_TO_EVENT hei2_quay_guard[hei2_counter] EVENT_SHOT_FIRED OR IS_CHAR_RESPONDING_TO_EVENT hei2_quay_guard[hei2_counter] EVENT_DAMAGE OR IS_CHAR_RESPONDING_TO_EVENT hei2_quay_guard[hei2_counter] EVENT_GUN_AIMED_AT IF hei2_audio_playing = 0 GENERATE_RANDOM_INT_IN_RANGE 0 4 hei2_temp_int IF hei2_temp_int = 0 hei2_audio_counter = 1 ELSE IF hei2_temp_int = 5 hei2_audio_counter = 8 ELSE IF hei2_temp_int = 2 hei2_audio_counter = 7 ELSE hei2_audio_counter = 10 ENDIF ENDIF ENDIF ENDIF IF hei2_player_spotted_flag = 0 IF NOT IS_CHAR_DEAD hei2_quay_guard[0] TASK_KILL_CHAR_ON_FOOT hei2_quay_guard[0] scplayer ENDIF IF NOT IS_CHAR_DEAD hei2_quay_guard[1] TASK_KILL_CHAR_ON_FOOT hei2_quay_guard[1] scplayer ENDIF hei2_player_spotted_flag = 1 ENDIF SET_CHAR_SAY_CONTEXT hei2_quay_guard[hei2_counter] CONTEXT_GLOBAL_STEALTH_DEF_SIGHTING hei2_dummy //PRINT_NOW (HE2_AG) 6000 1 // SECURITY GUARD: Lock the door, don't let him get inside! hei2_text_patrol_flag[hei2_counter] = 2 ENDIF ENDIF IF hei2_text_patrol_flag[hei2_counter] = 2 //RETURN FROM KILL PLAYER IF NOT IS_CHAR_RESPONDING_TO_EVENT hei2_quay_guard[hei2_counter] EVENT_SOUND_QUIET AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_quay_guard[hei2_counter] EVENT_ACQUAINTANCE_PED_HATE_BADLY_LIT AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_quay_guard[hei2_counter] EVENT_ACQUAINTANCE_PED_HATE AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_quay_guard[hei2_counter] EVENT_SHOT_FIRED AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_quay_guard[hei2_counter] EVENT_DAMAGE AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_quay_guard[hei2_counter] EVENT_GUN_AIMED_AT IF hei2_audio_playing = 0 GENERATE_RANDOM_INT_IN_RANGE 0 2 hei2_temp_int IF hei2_temp_int = 0 hei2_audio_counter = 11 ELSE hei2_audio_counter = 9 ENDIF ENDIF //PRINT_NOW (HE2_AB) 5000 1 // SECURITY GUARD: We know he's in here somewhere, start looking! SET_CHAR_SAY_CONTEXT hei2_quay_guard[hei2_counter] CONTEXT_GLOBAL_STEALTH_NOTHING_THERE hei2_dummy hei2_text_patrol_flag[hei2_counter] = 0 ENDIF ENDIF ELSE IF hei2_security_blip_visible_flag[hei2_counter] = 1 REMOVE_BLIP hei2_quay_guard_blip[hei2_counter] hei2_security_blip_visible_flag[hei2_counter] = 0 ENDIF ENDIF ///////////////////////////////// ///////////////////////////////// hei2_counter++ ENDWHILE IF hei2_audio_playing = 0 IF NOT hei2_last_audio = hei2_audio_counter hei2_last_audio = hei2_audio_counter ELSE hei2_audio_counter = 0 ENDIF ENDIF ENDIF IF hei2_para_progression = 5 IF IS_CHAR_PLAYING_ANIM scplayer PARA_open OR IS_CHAR_PLAYING_ANIM scplayer PARA_float CLEAR_HELP ENDIF IF player_landed = 2 OR LOCATE_CHAR_ANY_MEANS_3D scplayer -811.07 1816.08 7.0 6.0 6.0 3.0 FALSE OR hei2_landed_flag = 1 SET_PLAYER_CYCLE_WEAPON_BUTTON PLAYER1 FALSE GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_UNARMED 1 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED DELETE_CHECKPOINT hei2_checkpoint REMOVE_BLIP hei2_plane_blip CLEAR_PRINTS CLEAR_HELP SET_PLAYER_CONTROL player1 OFF DO_FADE 1500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF IS_CHAR_IN_ANY_CAR scplayer TASK_LEAVE_ANY_CAR scplayer ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED gun_para //warp if too close to teh guards IF LOCATE_CHAR_ANY_MEANS_3D SCPLAYER -828.4104 1945.7595 7.0400 13.1000 19.2998 4.5000 FALSE SET_CHAR_COORDINATES scplayer -820.3474 1939.7275 6.0000 SET_CHAR_HEADING scplayer 295.9757 ENDIF SWITCH_WIDESCREEN ON TASK_TURN_CHAR_TO_FACE_COORD scplayer -830.94 1983.23 9.0 TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME PARACH player_landed = 2 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer RESTORE_CAMERA_JUMPCUT SET_RADAR_ZOOM 90 REQUEST_MODEL KNIFECUR WHILE NOT HAS_MODEL_LOADED KNIFECUR WAIT 0 ENDWHILE CREATE_PICKUP KNIFECUR PICKUP_ONCE -819.0 1929.0 7.0 hei2_knife_pickup ADD_BLIP_FOR_PICKUP hei2_knife_pickup hei2_knife_blip CHANGE_BLIP_DISPLAY hei2_knife_blip BLIP_ONLY ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// DELETE_CHAR hei2_quay_guard[0] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_quay_guard[0] DELETE_CHAR hei2_quay_guard[1] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_quay_guard[1] CREATE_CHAR PEDTYPE_MISSION1 WMYSGRD -826.3729 1946.9884 6.0692 hei2_quay_guard[0] GIVE_WEAPON_TO_CHAR hei2_quay_guard[0] WEAPONTYPE_NIGHTSTICK 3000 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD hei2_quay_guard[0] FALSE SET_CHAR_HEADING hei2_quay_guard[0] 0.0000 SET_SENSE_RANGE hei2_quay_guard[0] 10.0 CREATE_CHAR PEDTYPE_MISSION1 WMYSGRD -823.3655 1956.2758 6.0400 hei2_quay_guard[1] GIVE_WEAPON_TO_CHAR hei2_quay_guard[1] WEAPONTYPE_NIGHTSTICK 3000 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD hei2_quay_guard[1] FALSE SET_CHAR_HEADING hei2_quay_guard[1] 301.2606 SET_SENSE_RANGE hei2_quay_guard[1] 10.0 SET_CHAR_DECISION_MAKER hei2_quay_guard[0] hei2_dam_sec_decision SET_CHAR_DECISION_MAKER hei2_quay_guard[1] hei2_dam_sec_decision FLUSH_PATROL_ROUTE //EXTEND_PATROL_ROUTE -825.4943 1938.9036 6.0000 NONE NONE EXTEND_PATROL_ROUTE -823.3667 1933.5399 6.0000 ROADCROSS PED EXTEND_PATROL_ROUTE -825.4943 1938.9036 6.0000 NONE NONE EXTEND_PATROL_ROUTE -826.9571 1947.5686 6.0000 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE hei2_quay_guard[0] PEDMOVE_WALK FOLLOW_ROUTE_BACKFORWARD FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE -828.9601 1955.3660 6.0000 ROADCROSS PED EXTEND_PATROL_ROUTE -823.2458 1957.0160 6.0070 ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE hei2_quay_guard[1] PEDMOVE_WALK FOLLOW_ROUTE_BACKFORWARD ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// // long shot? SET_FIXED_CAMERA_POSITION -794.19 1856.16 8.89 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -833.48 1914.18 3.2 JUMP_CUT DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PRINT (HEI2_52) 6000 1 // ~s~Make your way to the end of the dam quay. SKIP_CUTSCENE_START WHILE IS_MESSAGE_BEING_DISPLAYED WAIT 0 ENDWHILE /// guard nearest the door SET_FIXED_CAMERA_POSITION -821.12 1953.34 7.52 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -842.66 1973.89 3.84 JUMP_CUT PRINT (HEI2_52) 6000 1 // ~s~Make your way to the end of the dam quay. WHILE IS_MESSAGE_BEING_DISPLAYED WAIT 0 ENDWHILE /// other guard SET_FIXED_CAMERA_POSITION -828.18 1949.82 6.79 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -807.10 1918.51 8.91 JUMP_CUT PRINT (HEI2_53) 6000 1 // ~s~Avoid getting spotted by the guards patroling in the area WHILE IS_MESSAGE_BEING_DISPLAYED WAIT 0 ENDWHILE PRINT (HEI2_46) 6000 1 // ~s~There's a knife stashed near one of the containers which you may find useful. // cut-scene showing guards patroling SET_FIXED_CAMERA_POSITION -823.48 1924.82 6.71 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -808.71 1959.51 9.43 JUMP_CUT WHILE IS_MESSAGE_BEING_DISPLAYED WAIT 0 ENDWHILE SKIP_CUTSCENE_END CLEAR_PRINTS IF NOT IS_CHAR_DEAD hei2_quay_guard[0] ADD_BLIP_FOR_CHAR hei2_quay_guard[0] hei2_quay_guard_blip[0] CHANGE_BLIP_DISPLAY hei2_quay_guard_blip[0] BLIP_ONLY hei2_security_blip_visible_flag[0] = 1 ENDIF IF NOT IS_CHAR_DEAD hei2_quay_guard[1] ADD_BLIP_FOR_CHAR hei2_quay_guard[1] hei2_quay_guard_blip[1] CHANGE_BLIP_DISPLAY hei2_quay_guard_blip[1] BLIP_ONLY hei2_security_blip_visible_flag[1] = 1 ENDIF SWITCH_WIDESCREEN OFF PRINT (HEI2_60) 5000 1 //~s~Go and pickup the ~g~knife~s~. RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON IF NOT IS_CHAR_DEAD hei2_quay_guard[0] SET_CHAR_RELATIONSHIP hei2_quay_guard[0] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_INFORM_RESPECTED_FRIENDS hei2_quay_guard[0] 30.0 10 ENDIF IF NOT IS_CHAR_DEAD hei2_quay_guard[1] SET_CHAR_RELATIONSHIP hei2_quay_guard[1] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_INFORM_RESPECTED_FRIENDS hei2_quay_guard[1] 30.0 10 ENDIF PRINT_HELP HEI2_89 //Remember to crouch to make less noise. hei2_para_progression = 7 ELSE IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_PARACHUTE IF hei2_landed_flag = 0 SET_PLAYER_CYCLE_WEAPON_BUTTON PLAYER1 FALSE GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_UNARMED 1 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED hei2_landed_flag = 1 ENDIF ENDIF ENDIF ENDIF ///////////////////////////////////////////// /// FORCE THE PLAYER TO PICK UP THE KNIFE /// ///////////////////////////////////////////// IF hei2_para_progression = 7 IF IS_CHAR_IN_WATER scplayer IF hei2_in_water = 0 CLEAR_PRINTS PRINT (HEI2_40) 7000 1 //~s~Get back on the dam quay. REMOVE_BLIP hei2_plane_blip ADD_BLIP_FOR_COORD -799.5823 1813.1560 2.0061 hei2_plane_blip SET_RADAR_ZOOM 0 hei2_in_water = 1 ENDIF ELSE IF hei2_in_water = 1 REMOVE_BLIP hei2_plane_blip hei2_in_water = 0 CLEAR_PRINTS SET_RADAR_ZOOM 90 PRINT (HEI2_60) 5000 1 //~s~Go and pickup the ~g~knife~s~. ENDIF ENDIF IF HAS_PICKUP_BEEN_COLLECTED hei2_knife_pickup CLEAR_PRINTS PRINT (HEI2_34) 7000 1// ~s~Get past the guards and find the enterance to the generator room REMOVE_BLIP hei2_plane_blip ADD_BLIP_FOR_COORD -830.94 1983.23 9.0 hei2_plane_blip hei2_para_progression = 8 ENDIF ENDIF //////////////////////////////////////////////// /// PLAYER HAS TO MAKE THEIR WAY TO ENTRANCE /// //////////////////////////////////////////////// IF hei2_para_progression = 8 IF IS_CHAR_DEAD hei2_quay_guard[0] REMOVE_BLIP hei2_quay_guard_blip[0] ENDIF IF IS_CHAR_DEAD hei2_quay_guard[1] REMOVE_BLIP hei2_quay_guard_blip[1] ENDIF IF IS_CHAR_IN_WATER scplayer IF hei2_in_water = 0 CLEAR_PRINTS REMOVE_BLIP hei2_plane_blip PRINT (HEI2_40) 7000 1 //~s~Get back on the dam quay. ADD_BLIP_FOR_COORD -799.5823 1813.1560 2.0061 hei2_plane_blip SET_RADAR_ZOOM 0 hei2_in_water = 1 ENDIF ELSE IF hei2_in_water = 1 hei2_in_water = 0 CLEAR_PRINTS REMOVE_BLIP hei2_plane_blip ADD_BLIP_FOR_COORD -830.94 1983.23 9.0 hei2_plane_blip SET_RADAR_ZOOM 90 PRINT (HEI2_34) 7000 1// ~s~Get past the guards and find the enterance to the generator room ENDIF IF LOCATE_CHAR_ON_FOOT_3D scplayer -830.2665 1982.1241 8.2500 1.2 1.2 3.0 TRUE //quay enterance CLEAR_PRINTS SET_PLAYER_CONTROL player1 OFF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer -942.0 1847.0 4.0 SET_AREA_VISIBLE 17 LOAD_SCENE -942.0 1847.0 4.0 REQUEST_COLLISION -942.0 1847.0 SET_EXTRA_COLOURS 1 FALSE CLEAR_PRINTS REMOVE_BLIP hei2_plane_blip MARK_CHAR_AS_NO_LONGER_NEEDED hei2_quay_guard[0] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_quay_guard[1] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_quay_object[0] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_quay_object[1] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_quay_object[2] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_quay_object[3] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_quay_object[4] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_quay_object[5] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_quay_object[6] //MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_quay_object[7] REMOVE_BLIP hei2_quay_guard_blip[0] REMOVE_BLIP hei2_quay_guard_blip[1] MARK_MODEL_AS_NO_LONGER_NEEDED smashboxpile MARK_MODEL_AS_NO_LONGER_NEEDED k_cargo1 MARK_MODEL_AS_NO_LONGER_NEEDED KMB_CONTAINER_RED MARK_MODEL_AS_NO_LONGER_NEEDED k_cargo4 MARK_MODEL_AS_NO_LONGER_NEEDED KNIFECUR REMOVE_PICKUP hei2_knife_pickup REMOVE_BLIP hei2_knife_blip SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 // normally 1.0 hei2_mission_progression_flag = 2 hei2_para_progression = 12 ENDIF ENDIF ENDIF ENDIF // IF hei2_para_progression < 12 ////////////////////////////////////////////////////////////////// /// Create the security guards and assign them a task sequence /// ////////////////////////////////////////////////////////////////// IF hei2_para_progression > 11 IF hei2_mission_progression_flag = 2 REQUEST_MODEL SATCHEL //DYNAMITE REQUEST_MODEL WMYMECH REQUEST_MODEL COLT45 REQUEST_MODEL CELLPHONE WHILE NOT HAS_MODEL_LOADED SATCHEL//DYNAMITE OR NOT HAS_MODEL_LOADED WMYMECH OR NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED CELLPHONE WAIT 0 ENDWHILE CREATE_PICKUP KNIFECUR PICKUP_ON_STREET_SLOW -938.3901 1901.6489 4.3000 hei2_knife_pickup CREATE_CHAR PEDTYPE_MISSION2 WMYSGRD -960.0 1927.0 8.04 hei2_temp_ped[1] //SET_CHAR_HEADING hei2_temp_ped[0] 232.0 //CREATE_CHAR PEDTYPE_MISSION2 WMYSGRD -958.0 1926.0 8.04 hei2_temp_ped[1] SET_CHAR_HEADING hei2_temp_ped[1] 81.0 TASK_USE_MOBILE_PHONE hei2_temp_ped[1] TRUE //TASK_CHAT_WITH_CHAR hei2_temp_ped[0] hei2_temp_ped[1] TRUE FALSE //TASK_CHAT_WITH_CHAR hei2_temp_ped[1] hei2_temp_ped[0] FALSE FALSE hei2_security_blip_visible_flag[0] = 0 hei2_security_blip_visible_flag[1] = 0 hei2_player_spotted_flag = 0 hei2_counter = 0 WHILE hei2_counter < 6 IF hei2_counter > 1 // guards 3+ CREATE_CHAR PEDTYPE_MISSION2 WMYSGRD hei2_security_start_x[hei2_counter] hei2_security_start_y[hei2_counter] hei2_security_start_z[hei2_counter] hei2_security_ped[hei2_counter] SET_FOLLOW_NODE_THRESHOLD_DISTANCE hei2_security_ped[hei2_counter] 1.0 SET_SENSE_RANGE hei2_security_ped[hei2_counter] 10.0 SET_CHAR_ACCURACY hei2_security_ped[hei2_counter] 85 SET_INFORM_RESPECTED_FRIENDS hei2_security_ped[hei2_counter] 20.0 1 IF hei2_counter = 2 OR hei2_counter = 4 GIVE_WEAPON_TO_CHAR hei2_security_ped[hei2_counter] WEAPONTYPE_NIGHTSTICK 3000 SET_CHAR_SHOOT_RATE hei2_security_ped[hei2_counter] 70 SET_CHAR_WEAPON_SKILL hei2_security_ped[hei2_counter] WEAPONSKILL_PRO ELSE GIVE_WEAPON_TO_CHAR hei2_security_ped[hei2_counter] WEAPONTYPE_PISTOL 3000 SET_CHAR_SHOOT_RATE hei2_security_ped[hei2_counter] 60 SET_CHAR_WEAPON_SKILL hei2_security_ped[hei2_counter] WEAPONSKILL_STD ENDIF SET_CHAR_DROPS_WEAPONS_WHEN_DEAD hei2_security_ped[hei2_counter] FALSE SET_CHAR_HEADING hei2_security_ped[hei2_counter] hei2_security_start_heading[hei2_counter] ADD_BLIP_FOR_CHAR hei2_security_ped[hei2_counter] hei2_security_blip[hei2_counter] CHANGE_BLIP_DISPLAY hei2_security_blip[hei2_counter] BLIP_ONLY hei2_security_blip_visible_flag[hei2_counter]= 1 hei2_text_patrol_flag[hei2_counter] = 0 FLUSH_PATROL_ROUTE EXTEND_PATROL_ROUTE hei2_security_end_x[hei2_counter] hei2_security_end_y[hei2_counter] hei2_security_end_z[hei2_counter] ROADCROSS PED EXTEND_PATROL_ROUTE hei2_security_start_x[hei2_counter] hei2_security_start_y[hei2_counter] hei2_security_start_z[hei2_counter] ROADCROSS PED TASK_FOLLOW_PATROL_ROUTE hei2_security_ped[hei2_counter] PEDMOVE_WALK FOLLOW_ROUTE_BACKFORWARD ELSE CREATE_CHAR PEDTYPE_MISSION2 WMYMECH hei2_security_start_x[hei2_counter] hei2_security_start_y[hei2_counter] hei2_security_start_z[hei2_counter] hei2_security_ped[hei2_counter] SET_FOLLOW_NODE_THRESHOLD_DISTANCE hei2_security_ped[hei2_counter] 1.0 SET_SENSE_RANGE hei2_security_ped[hei2_counter] 10.0 SET_CHAR_ACCURACY hei2_security_ped[hei2_counter] 85 SET_INFORM_RESPECTED_FRIENDS hei2_security_ped[hei2_counter] 20.0 1 SET_CHAR_HEADING hei2_security_ped[hei2_counter] hei2_security_start_heading[hei2_counter] IF hei2_counter = 0 TASK_DUCK hei2_security_ped[hei2_counter] -2 ENDIF ADD_BLIP_FOR_CHAR hei2_security_ped[hei2_counter] hei2_security_blip[hei2_counter] CHANGE_BLIP_DISPLAY hei2_security_blip[hei2_counter] BLIP_ONLY hei2_security_blip_visible_flag[hei2_counter]= 1 hei2_text_patrol_flag[hei2_counter] = 0 OPEN_SEQUENCE_TASK hei2_sequence TASK_FOLLOW_PATH_NODES_TO_COORD -1 hei2_security_start_x[hei2_counter] hei2_security_start_y[hei2_counter] hei2_security_start_z[hei2_counter] PEDMOVE_WALK -2 TASK_ACHIEVE_HEADING -1 hei2_security_start_heading[hei2_counter] TASK_DUCK -1 5000 TASK_SCRATCH_HEAD -1 TASK_PLAY_ANIM -1 FUCKU PED 4.0 FALSE FALSE FALSE FALSE -1 TASK_USE_ATM -1 TASK_SCRATCH_HEAD -1 SET_SEQUENCE_TO_REPEAT hei2_sequence 1 CLOSE_SEQUENCE_TASK hei2_sequence PERFORM_SEQUENCE_TASK hei2_security_ped[hei2_counter] hei2_sequence CLEAR_SEQUENCE_TASK hei2_sequence //FLUSH_PATROL_ROUTE //EXTEND_PATROL_ROUTE hei2_security_start_x[hei2_counter] hei2_security_start_y[hei2_counter] hei2_security_start_z[hei2_counter] FUCKU PED //TASK_FOLLOW_PATROL_ROUTE hei2_security_ped[hei2_counter] PEDMOVE_WALK FOLLOW_ROUTE_BACKFORWARD ENDIF hei2_counter++ ENDWHILE hei2_mission_progression_flag = 3 ENDIF //////////////////////////////////////////////////////////////////////////// /// Once player is at the dam enterance add the blips for the generators /// //////////////////////////////////////////////////////////////////////////// IF hei2_mission_progression_flag = 3 hei2_player_location_int = 1 IF LOCATE_CHAR_ON_FOOT_3D scplayer -942.0 1847.0 5.0 2.0 2.0 2.0 FALSE // needs to be changed OR LOCATE_CHAR_ON_FOOT_3D scplayer -960.0 1952.0 9.0 2.0 2.0 2.0 FALSE// interior of the dam SET_FIXED_CAMERA_POSITION -940.3428 1845.9495 5.4312 0.0 0.0 0.0 // wide shot POINT_CAMERA_AT_POINT -940.8073 1846.8195 5.5962 JUMP_CUT // wide shot SWITCH_WIDESCREEN ON CLEAR_PRINTS CLEAR_HELP DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ////////////////////// /// cut-scene crap /// ////////////////////// PRINT (HEI2_20) 6000 1 //~s~ This is all about stealth, if you get spotted or make too much noise the whole building will be alerted. SKIP_CUTSCENE_START WHILE IS_MESSAGE_BEING_DISPLAYED WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION -959.8510 1925.8219 8.6787 0.0 0.0 0.0 // generator shot 1 POINT_CAMERA_AT_POINT -959.1008 1925.2178 8.9476 JUMP_CUT // generator shot 1 IF NOT IS_CHAR_DEAD hei2_security_ped[5] FREEZE_CHAR_POSITION hei2_security_ped[5] TRUE ENDIF PRINT HEI2_2 6000 1 // ~s~When close to a ~y~generator~s~ press ~m~~widget_vehicle_bomb~ to plant the charges. You need one on each ~y~generator~s~. WHILE IS_MESSAGE_BEING_DISPLAYED WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION -960.33 1925.24 9.12 0.0 0.0 0.0 // guards talking POINT_CAMERA_AT_POINT -938.79 1959.11 15.19 JUMP_CUT // hei2_audio_counter = 0 hei2_audio_slot1 = 1 hei2_audio_slot2 = 2 hei2_audio_playing = 0 hei2_text_loop_done = 0 hei2_mobile = 0 hei2_text_timer_diff = 0 hei2_text_timer_end = 0 hei2_text_timer_start = 0 hei2_ahead_counter = 0 hei2_text_loop1: WAIT 0 IF hei2_text_loop_done = 0 IF NOT hei2_audio_counter = 0 IF hei2_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED hei2_audio_slot2 CLEAR_MISSION_AUDIO hei2_audio_slot2 ENDIF hei2_audio_playing = 1 ENDIF IF hei2_audio_playing = 1 LOAD_MISSION_AUDIO hei2_audio_slot1 hei2_audio[hei2_audio_counter] hei2_audio_playing = 2 ENDIF IF hei2_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED hei2_audio_slot1 PLAY_MISSION_AUDIO hei2_audio_slot1 PRINT_NOW $hei2_text[hei2_audio_counter] 10000 1 hei2_audio_playing = 3 ENDIF ENDIF IF hei2_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED hei2_audio_slot1 CLEAR_THIS_PRINT $hei2_text[hei2_audio_counter] IF hei2_audio_slot1 = 1 hei2_audio_slot1 = 2 hei2_audio_slot2 = 1 ELSE hei2_audio_slot1 = 1 hei2_audio_slot2 = 2 ENDIF hei2_audio_counter = 0 hei2_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED hei2_audio_slot2 IF hei2_audio_counter < 8 hei2_ahead_counter = hei2_audio_counter + 1 LOAD_MISSION_AUDIO hei2_audio_slot2 hei2_audio[hei2_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF SWITCH hei2_mobile CASE 0 IF hei2_audio_playing = 0 IF NOT IS_CHAR_DEAD hei2_temp_ped[1] STOP_CHAR_FACIAL_TALK hei2_temp_ped[1] START_CHAR_FACIAL_TALK hei2_temp_ped[1] 4000 ENDIF hei2_audio_counter = 12 // CESAR: CJ. hei2_mobile = 1 GET_GAME_TIMER hei2_text_timer_start ENDIF BREAK CASE 1 GET_GAME_TIMER hei2_text_timer_end hei2_text_timer_diff = hei2_text_timer_end - hei2_text_timer_start IF hei2_text_timer_diff > 1000 IF hei2_audio_playing = 0 IF NOT IS_CHAR_DEAD hei2_temp_ped[1] STOP_CHAR_FACIAL_TALK hei2_temp_ped[1] ENDIF hei2_audio_counter = 13 // CESAR: CJ. hei2_mobile = 2 GET_GAME_TIMER hei2_text_timer_start ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER hei2_text_timer_end hei2_text_timer_diff = hei2_text_timer_end - hei2_text_timer_start IF hei2_text_timer_diff > 1000 IF hei2_audio_playing = 0 hei2_text_loop_done = 1 ENDIF ENDIF BREAK ENDSWITCH GOTO hei2_text_loop1 ENDIF SKIP_CUTSCENE_END IF NOT IS_CHAR_DEAD hei2_security_ped[5] FREEZE_CHAR_POSITION hei2_security_ped[5] FALSE ENDIF CLEAR_PRINTS PRINT HEI2_2 4000 1 // ~s~When close to a ~y~generator~s~ press ~m~~widget_vehicle_bomb~ to plant the charges. You need one on each ~y~generator~s~. RESTORE_CAMERA_JUMPCUT IF NOT IS_CHAR_DEAD hei2_temp_ped[1] GET_SCRIPT_TASK_STATUS hei2_temp_ped[1] TASK_USE_MOBILE_PHONE hei2_task_status IF NOT hei2_task_status = FINISHED_TASK TASK_USE_MOBILE_PHONE hei2_temp_ped[1] FALSE ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE ENDIF //DELETE_CHAR hei2_temp_ped[0] DELETE_CHAR hei2_temp_ped[1] //MARK_CHAR_AS_NO_LONGER_NEEDED hei2_temp_ped[0] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_temp_ped[1] SET_RADAR_ZOOM 90 CLEAR_PRINTS SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF CHECKPOINT_SAVE 1 ////////////////////////////////////////////////////////////////////////// hei2_counter2 = 0 WHILE hei2_counter2 < 6 IF hei2_counter2 < 5 ADD_BLIP_FOR_COORD hei2_generator_x[hei2_counter2] hei2_generator_y[hei2_counter2] hei2_generator_z[hei2_counter2] hei2_generator_blip[hei2_counter2] ENDIF IF NOT IS_CHAR_DEAD hei2_security_ped[hei2_counter2] SET_CHAR_RELATIONSHIP hei2_security_ped[hei2_counter2] ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_DECISION_MAKER hei2_security_ped[hei2_counter2] hei2_dam_sec_decision SET_INFORM_RESPECTED_FRIENDS hei2_security_ped[hei2_counter2] 40.0 10 ENDIF hei2_counter2++ ENDWHILE hei2_mission_progression_flag = 4 ENDIF ENDIF ///////////////////////////////////// /// check on status of the guards /// ///////////////////////////////////// IF hei2_mission_progression_flag < 6 IF hei2_player_location_int = 1 hei2_counter = 0 WHILE hei2_counter < 6 IF IS_CHAR_DEAD hei2_security_ped[hei2_counter] IF hei2_security_blip_visible_flag[hei2_counter]= 1 REMOVE_BLIP hei2_security_blip[hei2_counter] hei2_security_blip_visible_flag[hei2_counter]= 0 ENDIF ENDIF hei2_counter++ ENDWHILE ENDIF ELSE IF hei2_mission_progression_flag = 6 hei2_counter = 0 WHILE hei2_counter < 6 IF hei2_security_blip_visible_flag[hei2_counter]= 1 REMOVE_BLIP hei2_security_blip[hei2_counter] hei2_security_blip_visible_flag[hei2_counter]= 0 ENDIF hei2_counter++ ENDWHILE ENDIF ENDIF //////////////////////////////////// /// set up checks for the guards /// //////////////////////////////////// IF hei2_mission_progression_flag > 2 AND hei2_can_be_spotted = 0 IF NOT IS_CAR_DEAD hei2_jump_plane IF NOT IS_CAR_ON_SCREEN hei2_jump_plane MARK_CAR_AS_NO_LONGER_NEEDED hei2_jump_plane MARK_MODEL_AS_NO_LONGER_NEEDED NEVADA DELETE_CAR hei2_jump_plane ENDIF ENDIF IF NOT hei2_audio_counter = 0 IF hei2_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED hei2_audio_slot2 CLEAR_MISSION_AUDIO hei2_audio_slot2 ENDIF hei2_audio_playing = 1 ENDIF IF hei2_audio_playing = 1 LOAD_MISSION_AUDIO hei2_audio_slot1 hei2_audio[hei2_audio_counter] hei2_audio_playing = 2 ENDIF IF hei2_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED hei2_audio_slot1 PLAY_MISSION_AUDIO hei2_audio_slot1 PRINT_NOW $hei2_text[hei2_audio_counter] 10000 1 hei2_audio_playing = 3 ENDIF ENDIF IF hei2_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED hei2_audio_slot1 CLEAR_THIS_PRINT $hei2_text[hei2_audio_counter] IF hei2_audio_slot1 = 1 hei2_audio_slot1 = 2 hei2_audio_slot2 = 1 ELSE hei2_audio_slot1 = 1 hei2_audio_slot2 = 2 ENDIF hei2_audio_counter = 0 hei2_audio_playing = 0 ENDIF ENDIF ENDIF hei2_counter = 0 WHILE ( hei2_counter < 6 ) ////////////////////////////////////// ///////////////////////////////////// //////////////////////////////////// // ************************************MGS PATROL TEXT************************************************* IF NOT IS_CHAR_DEAD hei2_security_ped[hei2_counter] //INVESTIGATE IF hei2_text_patrol_flag[hei2_counter] = 0 IF IS_CHAR_RESPONDING_TO_EVENT hei2_security_ped[hei2_counter] EVENT_SOUND_QUIET OR IS_CHAR_RESPONDING_TO_EVENT hei2_security_ped[hei2_counter] EVENT_ACQUAINTANCE_PED_HATE_BADLY_LIT IF NOT IS_CHAR_RESPONDING_TO_EVENT hei2_security_ped[hei2_counter] EVENT_ACQUAINTANCE_PED_HATE IF hei2_audio_playing = 0 IF hei2_counter > 1 GENERATE_RANDOM_INT_IN_RANGE 0 3 hei2_temp_int IF hei2_temp_int = 0 hei2_audio_counter = 6 ELSE IF hei2_temp_int = 1 hei2_audio_counter = 3 ELSE hei2_audio_counter = 2 ENDIF ENDIF ENDIF ENDIF //PRINT_NOW (HE2_AC) 5000 1//SECURITY GUARD: Why did this have to happen on my shift? SET_CHAR_SAY_CONTEXT_IMPORTANT hei2_security_ped[hei2_counter] CONTEXT_GLOBAL_STEALTH_ALERT_GENERIC TRUE FALSE FALSE hei2_dummy hei2_text_patrol_flag[hei2_counter] = 1 ENDIF ENDIF ENDIF IF hei2_text_patrol_flag[hei2_counter] = 1 //RETURN FROM INVESTIGATE IF NOT IS_CHAR_RESPONDING_TO_EVENT hei2_security_ped[hei2_counter] EVENT_SOUND_QUIET AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_security_ped[hei2_counter] EVENT_ACQUAINTANCE_PED_HATE_BADLY_LIT AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_security_ped[hei2_counter] EVENT_ACQUAINTANCE_PED_HATE AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_security_ped[hei2_counter] EVENT_SHOT_FIRED AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_security_ped[hei2_counter] EVENT_DAMAGE AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_security_ped[hei2_counter] EVENT_GUN_AIMED_AT IF hei2_audio_playing = 0 IF hei2_counter > 1 GENERATE_RANDOM_INT_IN_RANGE 0 2 hei2_temp_int IF hei2_temp_int = 0 hei2_audio_counter = 11 ELSE hei2_audio_counter = 9 ENDIF ENDIF ENDIF //PRINT_NOW (HE2_AL) 5000 1 //SECURITY GUARD: Where the hell did he go? SET_CHAR_SAY_CONTEXT_IMPORTANT hei2_security_ped[hei2_counter] CONTEXT_GLOBAL_ARREST TRUE FALSE FALSE hei2_dummy hei2_text_patrol_flag[hei2_counter] = 0 ENDIF ENDIF IF hei2_text_patrol_flag[hei2_counter] = 0 //KILL PLAYER OR hei2_text_patrol_flag[hei2_counter] = 1 IF IS_CHAR_RESPONDING_TO_EVENT hei2_security_ped[hei2_counter] EVENT_ACQUAINTANCE_PED_HATE OR IS_CHAR_RESPONDING_TO_EVENT hei2_security_ped[hei2_counter] EVENT_SHOT_FIRED OR IS_CHAR_RESPONDING_TO_EVENT hei2_security_ped[hei2_counter] EVENT_DAMAGE OR IS_CHAR_RESPONDING_TO_EVENT hei2_security_ped[hei2_counter] EVENT_GUN_AIMED_AT IF hei2_audio_playing = 0 IF hei2_counter > 1 GENERATE_RANDOM_INT_IN_RANGE 0 4 hei2_temp_int IF hei2_temp_int = 0 hei2_audio_counter = 1 ELSE IF hei2_temp_int = 1 hei2_audio_counter = 8 ELSE IF hei2_temp_int = 2 hei2_audio_counter = 4 ELSE hei2_audio_counter = 12 ENDIF ENDIF ENDIF ENDIF ENDIF //PRINT_NOW (HE2_AE) 5000 1 //SECURITY GUARD: I Found him, he's over here! SET_CHAR_SAY_CONTEXT_IMPORTANT hei2_security_ped[hei2_counter] CONTEXT_GLOBAL_STEALTH_DEF_SIGHTING TRUE FALSE FALSE hei2_dummy hei2_player_spotted_flag = 1 hei2_text_patrol_flag[hei2_counter] = 2 ENDIF ENDIF IF hei2_text_patrol_flag[hei2_counter] = 2 //RETURN FROM KILL PLAYER IF NOT IS_CHAR_RESPONDING_TO_EVENT hei2_security_ped[hei2_counter] EVENT_SOUND_QUIET AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_security_ped[hei2_counter] EVENT_ACQUAINTANCE_PED_HATE_BADLY_LIT AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_security_ped[hei2_counter] EVENT_ACQUAINTANCE_PED_HATE AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_security_ped[hei2_counter] EVENT_SHOT_FIRED AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_security_ped[hei2_counter] EVENT_DAMAGE AND NOT IS_CHAR_RESPONDING_TO_EVENT hei2_security_ped[hei2_counter] EVENT_GUN_AIMED_AT IF hei2_audio_playing = 0 IF hei2_counter > 1 GENERATE_RANDOM_INT_IN_RANGE 0 4 hei2_temp_int IF hei2_temp_int = 0 hei2_audio_counter = 1 ELSE IF hei2_temp_int = 5 hei2_audio_counter = 8 ELSE IF hei2_temp_int = 2 hei2_audio_counter = 7 ELSE hei2_audio_counter = 10 ENDIF ENDIF ENDIF ENDIF ENDIF //PRINT_NOW (HE2_AB) 5000 1 // SECURITY GUARD: We know he's in here somewhere, start looking! SET_CHAR_SAY_CONTEXT_IMPORTANT hei2_security_ped[hei2_counter] CONTEXT_GLOBAL_STEALTH_NOTHING_THERE TRUE FALSE FALSE hei2_dummy hei2_text_patrol_flag[hei2_counter] = 0 ENDIF ENDIF ///////////////////////////////////// ///////////////////////////////////// ///////////////////////////////////// ENDIF hei2_counter++ ENDWHILE IF hei2_player_spotted_before = 0 IF hei2_player_spotted_flag = 1 IF hei2_audio_playing = 0 hei2_player_spotted_before = 1 hei2_audio_counter = 4 ENDIF //CLEAR_PRINTS //PRINT (HE2_AD) 4000 1 // "You're not supposed to be in here!" //PRINT (HE2_AF) 4000 1 //)SECURITY GUARD: We need more guys in here! ENDIF ENDIF ///////////////////// /// STEALTH CHECK /// ///////////////////// IF hei2_audio_playing = 0 IF NOT hei2_last_audio = hei2_audio_counter hei2_last_audio = hei2_audio_counter ELSE hei2_audio_counter = 0 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////// /// Check to see if player is in front of a generator, if he is remove blip and increase counter /// //////////////////////////////////////////////////////////////////////////////////////////////////// IF hei2_mission_progression_flag = 4 IF hei2_number_of_charges_placed < 5 //////////////////////////////////////////////// /// check if generator has had charge placed /// //////////////////////////////////////////////// hei2_near_generator = 0 hei2_counter2 = 0 WHILE hei2_counter2 < 5 IF hei2_charge_on_generator_flag[hei2_counter2] = 0 IF LOCATE_CHAR_ON_FOOT_3D scplayer hei2_generator_x[hei2_counter2] hei2_generator_y[hei2_counter2] hei2_generator_z[hei2_counter2] 4.0 4.0 3.0 FALSE hei2_near_generator = 1 IF hei2_help_displayed = 0 hei2_help_displayed = 1 PRINT_HELP HEI2_6 // Press ~m~~widget_vehicle_bomb~ to plant explosives. ENDIF IF IS_BUTTON_PRESSED PAD1 TRIANGLE // button to press to set the charge OR IS_WIDGET_RELEASED WIDGET_VEHICLE_BOMB CLEAR_HELP hei2_help_displayed = 0 hei2_number_of_charges_placed++ REMOVE_BLIP hei2_generator_blip[hei2_counter2] IF IS_CHAR_DUCKING scplayer hei2_player_duck = 1 ELSE hei2_player_duck = 0 ENDIF SET_PLAYER_CONTROL player1 OFF OPEN_SEQUENCE_TASK hei2_plant_bomb_seq IF hei2_player_duck = 0 TASK_TURN_CHAR_TO_FACE_COORD -1 hei2_generator_x[hei2_counter2] hei2_generator_y[hei2_counter2] hei2_generator_z[hei2_counter2] TASK_PLAY_ANIM -1 BOM_plant_In BOMBER 4.0 0 0 0 0 -1 // player goes into crouch ELSE TASK_PLAY_ANIM -1 BOM_Plant_Crouch_In BOMBER 4.0 0 0 0 0 -1 // player goes into crouch ENDIF TASK_PLAY_ANIM -1 BOM_plant_Loop BOMBER 4.0 0 0 0 0 -1 // player goes into crouch TASK_PLAY_ANIM -1 BOM_plant_Loop BOMBER 4.0 0 0 0 0 -1 // player arming bomb IF hei2_player_duck = 1 TASK_PLAY_ANIM -1 BOM_Plant_Crouch_Out BOMBER 4.0 0 0 0 0 -1 // player goes into crouch TASK_TOGGLE_DUCK -1 TRUE ELSE TASK_PLAY_ANIM -1 BOM_plant_2Idle BOMBER 4.0 0 0 0 0 -1 // player stands up ENDIF CLOSE_SEQUENCE_TASK hei2_plant_bomb_seq PERFORM_SEQUENCE_TASK scplayer hei2_plant_bomb_seq CLEAR_SEQUENCE_TASK hei2_plant_bomb_seq TIMERA = 0 hei2_safety_flag = 0 WHILE hei2_safety_flag = 0 IF hei2_player_duck = 0 IF IS_CHAR_PLAYING_ANIM scplayer BOM_plant_2Idle OR TIMERA > 6000 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 0.5 -1.0 hei2_generator_x[hei2_counter2] hei2_generator_y[hei2_counter2] hei2_generator_z[hei2_counter2] CREATE_OBJECT SATCHEL hei2_generator_x[hei2_counter2] hei2_generator_y[hei2_counter2] hei2_generator_z[hei2_counter2] hei2_bomb_obj[hei2_counter2] SET_OBJECT_HEADING hei2_bomb_obj[hei2_counter2] 100.0 //SET_OBJECT_COORDINATES ObjectID X Y Z //SET_OBJECT_ROTATION hei2_bomb_obj[hei2_counter2] XRot YRot ZRot hei2_safety_flag = 1 ENDIF ELSE GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK hei2_task_status IF hei2_task_status = FINISHED_TASK OR TIMERA > 6000 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 0.5 -1.0 hei2_generator_x[hei2_counter2] hei2_generator_y[hei2_counter2] hei2_generator_z[hei2_counter2] CREATE_OBJECT SATCHEL hei2_generator_x[hei2_counter2] hei2_generator_y[hei2_counter2] hei2_generator_z[hei2_counter2] hei2_bomb_obj[hei2_counter2] SET_OBJECT_HEADING hei2_bomb_obj[hei2_counter2] 100.0 hei2_safety_flag = 1 ENDIF ENDIF WAIT 0 ENDWHILE PRINT_NOW (HEI2_58) 4000 1// ~s~Charge placed. SET_PLAYER_CONTROL player1 ON hei2_charge_on_generator_flag[hei2_counter2] = 1 ENDIF ENDIF ENDIF hei2_counter2++ ENDWHILE IF hei2_near_generator = 0 CLEAR_HELP hei2_help_displayed = 0 ENDIF //////////////////////////////////////////////////// //////////////////////////////////////////////////// ENDIF // IF hei2_number_of_charges_placed < 5 IF hei2_number_of_charges_placed = 5 CLEAR_PRINTS ADD_BLIP_FOR_COORD -959.5947 1953.1221 8.0078 hei2_generator_room_door_blip PRINT ( HEI2_5 ) 10000 1 //////////// All the generator have been rigged to blow, get out of there ! hei2_mission_progression_flag = 5 ENDIF ENDIF // IF mission progression //////////////////////////////////////////////////////////////////////////////////////// /// Check to see if player is at the exit of the generator room and pass the mission /// //////////////////////////////////////////////////////////////////////////////////////// IF hei2_mission_progression_flag = 5 IF LOCATE_CHAR_ON_FOOT_3D scplayer -959.5947 1953.1221 8.0078 2.0 2.0 2.0 hei2_locate_visisble //warp player to tower ledge SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON DO_FADE 1500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE hei2_can_be_spotted = 1 hei2_locate_visisble = FALSE REMOVE_BLIP hei2_generator_room_door_blip REMOVE_PICKUP hei2_knife_pickup SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 DELETE_OBJECT hei2_bomb_obj[0] DELETE_OBJECT hei2_bomb_obj[1] DELETE_OBJECT hei2_bomb_obj[2] DELETE_OBJECT hei2_bomb_obj[3] DELETE_OBJECT hei2_bomb_obj[4] DELETE_CHAR hei2_security_ped[0] DELETE_CHAR hei2_security_ped[1] DELETE_CHAR hei2_security_ped[2] DELETE_CHAR hei2_security_ped[3] DELETE_CHAR hei2_security_ped[4] DELETE_CHAR hei2_security_ped[5] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_bomb_obj[0] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_bomb_obj[1] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_bomb_obj[2] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_bomb_obj[3] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_bomb_obj[4] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_security_ped[0] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_security_ped[1] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_security_ped[2] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_security_ped[3] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_security_ped[4] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_security_ped[5] MARK_MODEL_AS_NO_LONGER_NEEDED SATCHEL//DYNAMITE REQUEST_MODEL REEFER WHILE NOT HAS_MODEL_LOADED REEFER WAIT 0 ENDWHILE CREATE_CAR REEFER -638.0 1955.0 1.0 hei2_player_boat SET_CAR_HEADING hei2_player_boat 180.0 GOSUB heist2_dive_scene CLEAR_PRINTS GOTO mission_heist2_passed ELSE hei2_locate_visisble = TRUE ENDIF ENDIF ////////////////////// /// END OF MISSION /// ////////////////////// ENDIF // IF hei2_para_progression > 11 GOTO heist2_main_loop /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// labeled functions ////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////// /// PLAY THE DIVE CUT-SCENE /// /////////////////////////////// heist2_dive_scene: IF hei2_dive_scene_played_flag = 0 LVAR_INT hei2_cop_car1 hei2_cop_car2 hei2_cop_car3 hei2_cop_car4 CLEAR_PRINTS SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_PARACHUTE REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_PARACHUTE ENDIF REQUEST_ANIMATION DAM_JUMP REQUEST_ANIMATION BD_FIRE REQUEST_ANIMATION BOMBER REQUEST_MODEL ENFORCER REQUEST_MODEL 599 // POL_RANGER SET_AREA_VISIBLE 0 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE WHILE NOT HAS_ANIMATION_LOADED DAM_JUMP OR NOT HAS_ANIMATION_LOADED BD_FIRE OR NOT HAS_ANIMATION_LOADED BOMBER OR NOT HAS_MODEL_LOADED 599 OR NOT HAS_MODEL_LOADED ENFORCER WAIT 0 ENDWHILE CLEAR_EXTRA_COLOURS FALSE SET_CHAR_COORDINATES scplayer -596.3235 2015.6079 75.9845 //TASK_ACHIEVE_HEADING -1 330.0 SET_CHAR_HEADING scplayer 330.0 LOAD_SCENE -594.9886 2018.6387 76.8829 REQUEST_COLLISION -594.9886 2018.6387 //////// door locking scene SET_FIXED_CAMERA_POSITION -595.73 2001.92 78.66 0.0 0.0 0.0 // wide shot POINT_CAMERA_AT_POINT -601.02 2033.63 73.91 JUMP_CUT // wide shot SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 CLEAR_AREA -683.0 2053.0 59.1719 50.0 TRUE CLEAR_AREA -488.0 2001.0 59.4028 50.0 TRUE CREATE_CAR 599 -683.0 2053.0 59.1719 hei2_cop_car1 SET_CAR_HEADING hei2_cop_car1 268.7848 SET_CAR_CAN_GO_AGAINST_TRAFFIC hei2_cop_car1 TRUE SWITCH_CAR_SIREN hei2_cop_car1 ON CREATE_CAR 599 -486.0 2006.0 59.4028 hei2_cop_car2 SET_CAR_HEADING hei2_cop_car2 130.7071 SET_CAR_CAN_GO_AGAINST_TRAFFIC hei2_cop_car2 TRUE SWITCH_CAR_SIREN hei2_cop_car2 ON CREATE_CAR ENFORCER -694.0 2055.0 59.1719 hei2_cop_car3 SET_CAR_HEADING hei2_cop_car3 268.7848 SET_CAR_CAN_GO_AGAINST_TRAFFIC hei2_cop_car3 TRUE SWITCH_CAR_SIREN hei2_cop_car3 ON CREATE_CAR ENFORCER -491.0 1997.0 59.4028 hei2_cop_car4 SET_CAR_HEADING hei2_cop_car4 126.7071 SET_CAR_CAN_GO_AGAINST_TRAFFIC hei2_cop_car4 TRUE SWITCH_CAR_SIREN hei2_cop_car4 ON ALTER_WANTED_LEVEL_NO_DROP player1 2 DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE TIMERB = 0 CLEAR_CHAR_TASKS scplayer SKIP_CUTSCENE_START hei2_audio_counter = 0 hei2_audio_slot1 = 1 hei2_audio_slot2 = 2 hei2_audio_playing = 0 hei2_text_loop_done = 0 hei2_mobile = 0 hei2_text_timer_diff = 0 hei2_text_timer_end = 0 hei2_text_timer_start = 0 hei2_ahead_counter = 0 hei2_sfx_counter = 0 hei2_sfx_played = 0 hei2_sfx_playing = 0 hei2_text_loop2: WAIT 0 IF NOT hei2_audio_counter = 0 IF hei2_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED hei2_audio_slot2 CLEAR_MISSION_AUDIO hei2_audio_slot2 ENDIF hei2_audio_playing = 1 ENDIF IF hei2_audio_playing = 1 LOAD_MISSION_AUDIO hei2_audio_slot1 hei2_audio[hei2_audio_counter] hei2_audio_playing = 2 ENDIF IF hei2_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED hei2_audio_slot1 PLAY_MISSION_AUDIO hei2_audio_slot1 PRINT_NOW $hei2_text[hei2_audio_counter] 10000 1 hei2_audio_playing = 3 ENDIF ENDIF IF hei2_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED hei2_audio_slot1 CLEAR_THIS_PRINT $hei2_text[hei2_audio_counter] IF hei2_audio_slot1 = 1 hei2_audio_slot1 = 2 hei2_audio_slot2 = 1 ELSE hei2_audio_slot1 = 1 hei2_audio_slot2 = 2 ENDIF hei2_audio_counter = 0 hei2_audio_playing = 0 ENDIF ENDIF ENDIF IF NOT hei2_sfx_counter = 0 IF hei2_sfx_playing = 0 IF HAS_MISSION_AUDIO_LOADED 3 CLEAR_MISSION_AUDIO 3 ENDIF hei2_sfx_playing = 1 ENDIF IF hei2_sfx_playing = 1 LOAD_MISSION_AUDIO 3 hei2_sfx[hei2_sfx_counter] // audio fx to be used hei2_sfx_playing = 2 ENDIF IF hei2_sfx_playing = 2 IF HAS_MISSION_AUDIO_LOADED 3 PLAY_MISSION_AUDIO 3 hei2_sfx_playing = 3 ENDIF ENDIF IF hei2_sfx_playing = 3 IF HAS_MISSION_AUDIO_FINISHED 3 hei2_sfx_counter = 0 hei2_sfx_playing = 0 ENDIF ENDIF ENDIF SWITCH hei2_mobile CASE 0 IF hei2_audio_playing = 0 STOP_CHAR_FACIAL_TALK scplayer START_CHAR_FACIAL_TALK scplayer 4000 hei2_audio_counter = 16// HE2_DA //Shit, must have taken a wrong turn someplace! TASK_SCRATCH_HEAD scplayer hei2_mobile = 1 GET_GAME_TIMER hei2_text_timer_start //hei2_sfx_counter = 1 ENDIF BREAK CASE 1 GET_GAME_TIMER hei2_text_timer_end hei2_text_timer_diff = hei2_text_timer_end - hei2_text_timer_start IF hei2_text_timer_diff > 2000 IF hei2_audio_playing = 0 IF hei2_sfx_played = 1 IF hei2_sfx_playing = 0 STOP_CHAR_FACIAL_TALK scplayer START_CHAR_FACIAL_TALK scplayer 4000 hei2_audio_counter = 14// = SOUND_HE2_CB//Shit, the hatch locked behind me! hei2_mobile = 2 GET_GAME_TIMER hei2_text_timer_start SET_FIXED_CAMERA_POSITION -596.53 2013.11 76.53 0.0 0.0 0.0 // wide shot POINT_CAMERA_AT_POINT -598.08 2045.39 79.93 JUMP_CUT // wide shot CLEAR_CHAR_TASKS scplayer OPEN_SEQUENCE_TASK hei2_dam_dive_seq TASK_PLAY_ANIM -1 BOM_plant_In BOMBER 4.0 0 0 0 0 -1 // player goes into crouch TASK_PLAY_ANIM -1 BOM_plant_Loop BOMBER 4.0 0 0 0 0 -1 // player goes into crouch TASK_PLAY_ANIM -1 BOM_plant_2Idle BOMBER 4.0 0 0 0 0 -1 // player stands up CLOSE_SEQUENCE_TASK hei2_dam_dive_seq PERFORM_SEQUENCE_TASK scplayer hei2_dam_dive_seq CLEAR_SEQUENCE_TASK hei2_dam_dive_seq ENDIF ELSE IF hei2_sfx_played = 0 hei2_sfx_counter = 1 hei2_sfx_played = 1 ENDIF ENDIF ENDIF ENDIF BREAK DEFAULT GET_GAME_TIMER hei2_text_timer_end hei2_text_timer_diff = hei2_text_timer_end - hei2_text_timer_start IF hei2_text_timer_diff > 1000 IF hei2_audio_playing = 0 STOP_CHAR_FACIAL_TALK scplayer START_CHAR_FACIAL_TALK scplayer 4000 hei2_text_loop_done = 1 ENDIF ENDIF BREAK ENDSWITCH IF hei2_text_loop_done = 0 GOTO hei2_text_loop2 ENDIF hei2_safety_flag = 0 TIMERA = 0 WHILE hei2_safety_flag = 0 GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK hei2_task_status IF hei2_task_status = FINISHED_TASK hei2_safety_flag = 1 ENDIF WAIT 0 ENDWHILE //PRINT (HE2_DB) 5000 1 //SECURITY GUARD: We've got him trapped, there's no way off of that ledge" // counter = 17 //HE2_DB //We've got him trapped, there's no way off that ledge! CLEAR_CHAR_TASKS scplayer CLEAR_LOOK_AT scplayer OPEN_SEQUENCE_TASK hei2_dam_dive_seq TASK_GO_TO_COORD_ANY_MEANS -1 -598.5344 2017.5299 75.9845 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 70.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 BD_Panic_02 BD_FIRE 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK hei2_dam_dive_seq PERFORM_SEQUENCE_TASK scplayer hei2_dam_dive_seq CLEAR_SEQUENCE_TASK hei2_dam_dive_seq //SET_FIXED_CAMERA_POSITION -598.30 2007.47 77.31 0.0 0.0 0.0 // wide shot //POINT_CAMERA_AT_POINT -602.87 2020.21 75.95 JUMP_CUT // wide shot hei2_audio_counter = 17 hei2_audio_slot1 = 1 hei2_audio_slot2 = 2 hei2_audio_playing = 0 hei2_text_loop_done = 0 hei2_mobile = 0 hei2_text_timer_diff = 0 hei2_text_timer_end = 0 hei2_text_timer_start = 0 hei2_ahead_counter = 0 hei2_safety_flag = 0 TIMERA = 0 WHILE hei2_safety_flag = 0 IF NOT hei2_audio_counter = 0 IF hei2_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED hei2_audio_slot2 CLEAR_MISSION_AUDIO hei2_audio_slot2 ENDIF hei2_audio_playing = 1 ENDIF IF hei2_audio_playing = 1 LOAD_MISSION_AUDIO hei2_audio_slot1 hei2_audio[hei2_audio_counter] hei2_audio_playing = 2 ENDIF IF hei2_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED hei2_audio_slot1 PLAY_MISSION_AUDIO hei2_audio_slot1 PRINT_NOW $hei2_text[hei2_audio_counter] 10000 1 hei2_audio_playing = 3 ENDIF ENDIF IF hei2_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED hei2_audio_slot1 CLEAR_THIS_PRINT $hei2_text[hei2_audio_counter] IF hei2_audio_slot1 = 1 hei2_audio_slot1 = 2 hei2_audio_slot2 = 1 ELSE hei2_audio_slot1 = 1 hei2_audio_slot2 = 2 ENDIF hei2_audio_counter = 0 hei2_audio_playing = 0 ENDIF ENDIF ENDIF GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK hei2_task_status IF hei2_task_status = FINISHED_TASK hei2_safety_flag = 1 ELSE IF hei2_task_status = PERFORMING_TASK GET_SEQUENCE_PROGRESS scplayer hei2_task_status IF hei2_task_status = 1 IF NOT IS_CAR_DEAD hei2_cop_car1 SET_CAR_FORWARD_SPEED hei2_cop_car1 20.0 SET_CAR_CRUISE_SPEED hei2_cop_car1 40.0 CAR_GOTO_COORDINATES hei2_cop_car1 -591.4136 2024.8634 59.1719 ENDIF IF NOT IS_CAR_DEAD hei2_cop_car3 SET_CAR_FORWARD_SPEED hei2_cop_car3 20.0 SET_CAR_CRUISE_SPEED hei2_cop_car3 40.0 CAR_GOTO_COORDINATES hei2_cop_car3 -591.4136 2024.8634 59.1719 ENDIF SET_FIXED_CAMERA_POSITION -597.14 2017.04 78.03 0.0 0.0 0.0 // wide shot POINT_CAMERA_AT_POINT -637.05 2036.76 64.61 JUMP_CUT // wide shot ENDIF ENDIF ENDIF WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer -598.5344 2017.5299 75.9845 SET_CHAR_HEADING scplayer 70.0 SET_FIXED_CAMERA_POSITION -601.69 2017.41 78.85 0.0 0.0 0.0 // wide shot POINT_CAMERA_AT_POINT -576.19 2014.02 68.86 JUMP_CUT // wide shot OPEN_SEQUENCE_TASK hei2_dam_dive_seq TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 BD_Panic_04 BD_FIRE 4.0 FALSE FALSE FALSE FALSE -1 TASK_GO_TO_COORD_ANY_MEANS -1 -596.3235 2015.6079 75.9845 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 148.5634 CLOSE_SEQUENCE_TASK hei2_dam_dive_seq PERFORM_SEQUENCE_TASK scplayer hei2_dam_dive_seq CLEAR_SEQUENCE_TASK hei2_dam_dive_seq hei2_safety_flag = 0 TIMERA = 0 WHILE hei2_safety_flag = 0 GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK hei2_task_status IF hei2_task_status = FINISHED_TASK hei2_safety_flag = 1 ELSE IF hei2_task_status = PERFORMING_TASK GET_SEQUENCE_PROGRESS scplayer hei2_task_status IF hei2_task_status = 0 IF NOT IS_CAR_DEAD hei2_cop_car2 SET_CAR_FORWARD_SPEED hei2_cop_car2 20.0 SET_CAR_CRUISE_SPEED hei2_cop_car2 40.0 CAR_GOTO_COORDINATES hei2_cop_car2 -587.4136 2036.8634 59.1719 ENDIF IF NOT IS_CAR_DEAD hei2_cop_car4 SET_CAR_FORWARD_SPEED hei2_cop_car4 20.0 SET_CAR_CRUISE_SPEED hei2_cop_car4 40.0 CAR_GOTO_COORDINATES hei2_cop_car4 -587.4136 2036.8634 59.1719 ENDIF ENDIF ENDIF ENDIF WAIT 0 ENDWHILE /////// jump scene ////// SET_FIXED_CAMERA_POSITION -596.51 2000.5 79.70 0.0 0.0 0.0 // wide shot POINT_CAMERA_AT_POINT -600.79 2009.02 75.31 JUMP_CUT // wide shot CLEAR_LOOK_AT scplayer CLEAR_CHAR_TASKS scplayer SET_CHAR_COORDINATES scplayer -596.3235 2015.6079 75.9845 SET_CHAR_HEADING scplayer 148.5634 TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer DAM_Launch DAM_JUMP 4.0 FALSE FALSE FALSE FALSE -1 hei2_safety_flag = 0 WHILE hei2_safety_flag = 0 GET_SCRIPT_TASK_STATUS scplayer TASK_PLAY_ANIM_NON_INTERRUPTABLE hei2_task_status IF hei2_task_status = FINISHED_TASK SET_CHAR_COORDINATES scplayer -613.74 1980.77 52.13 WAIT 200 hei2_safety_flag = 1 ENDIF WAIT 0 ENDWHILE //// long dive scene // //SET_FIXED_CAMERA_POSITION -613.55 1961.16 46.40 0.0 0.0 0.0 // wide shot //POINT_CAMERA_AT_POINT -614.39 1980.08 44.86 JUMP_CUT SET_FIXED_CAMERA_POSITION -607.52 1963.50 41.26 0.0 0.0 0.0 // wide shot //POINT_CAMERA_AT_POINT -613.74 1980.77 52.13 JUMP_CUT POINT_CAMERA_AT_CHAR scplayer FIXED JUMP_CUT DELETE_CAR hei2_cop_car1 DELETE_CAR hei2_cop_car2 DELETE_CAR hei2_cop_car3 DELETE_CAR hei2_cop_car4 TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer DAM_Dive_Loop DAM_JUMP 1000.0 TRUE FALSE FALSE FALSE -1 hei2_safety_flag = 0 WHILE hei2_safety_flag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer -613.74 1980.77 10.824 50.0 50.0 1.0 FALSE //SET_CHAR_COORDINATES scplayer -613.93 2032.1 59.4 // top of dam hei2_safety_flag = 1 ENDIF WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION -620.95 1970.46 4.58 0.0 0.0 0.0 // wide shot POINT_CAMERA_AT_POINT -610.92 1984.83 -2.79 JUMP_CUT //SET_CHAR_COORDINATES scplayer -613.74 1980.77 -0.8 TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer DAM_Land DAM_JUMP 4.0 FALSE TRUE TRUE FALSE -1 //TASK_PLAY_ANIM_WITH_FLAGS scplayer DAM_Land DAM_JUMP 4.0 FALSE FALSE FALSE FALSE -1 FALSE TRUE hei2_safety_flag = 0 hei2_camera_flag = 0 WHILE hei2_safety_flag = 0 GET_SCRIPT_TASK_STATUS scplayer TASK_PLAY_ANIM_NON_INTERRUPTABLE hei2_task_status IF hei2_task_status = FINISHED_TASK hei2_safety_flag = 1 ELSE IF hei2_camera_flag = 0 IF IS_CHAR_PLAYING_ANIM scplayer DAM_Land GET_CHAR_ANIM_CURRENT_TIME scplayer DAM_Land hei2_anim_time IF hei2_anim_time > 0.115 CREATE_FX_SYSTEM water_splash -613.74 1980.77 -0.8 TRUE hei2_water_splash IF hei2_water_splash = -1 //BREAKPOINT failed_to_create_fx_system_water_splash ELSE PLAY_AND_KILL_FX_SYSTEM hei2_water_splash hei2_camera_flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF WAIT 0 ENDWHILE SKIP_CUTSCENE_END CLEAR_MISSION_AUDIO hei2_audio_slot1 CLEAR_MISSION_AUDIO hei2_audio_slot2 CLEAR_PRINTS DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //RESTORE_CLOTHES_STATE //BUILD_PLAYER_MODEL player1 SET_CHAR_COORDINATES_NO_OFFSET scplayer -613.74 1980.77 -0.5 SET_CHAR_HEADING scplayer 148.5634 REMOVE_ANIMATION DAM_JUMP REMOVE_ANIMATION BOMBER REMOVE_ANIMATION BD_FIRE MARK_CAR_AS_NO_LONGER_NEEDED hei2_cop_car1 MARK_CAR_AS_NO_LONGER_NEEDED hei2_cop_car2 MARK_CAR_AS_NO_LONGER_NEEDED hei2_cop_car3 MARK_CAR_AS_NO_LONGER_NEEDED hei2_cop_car4 MARK_MODEL_AS_NO_LONGER_NEEDED 599 MARK_MODEL_AS_NO_LONGER_NEEDED ENFORCER SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 RESTORE_CAMERA_JUMPCUT HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON hei2_dive_scene_played_flag = 1 ENDIF RETURN /////////////////// /// TEXT LABELS /// /////////////////// /* PRINT (hei2_1) 2000 1 //~s~Find the enterance to the generator room PRINT (hei2_2) 2000 1 // ~s~When close to a ~y~generator~s~ press ~m~~widget_vehicle_bomb~ to plant the charges. You need one on each ~y~generator~s~. PRINT (hei2_3) 2000 1 //~s~Be careful though, it will all be for nothing if you get spotted doing it. PRINT (hei2_4) 2000 1 //~r~You've been spotted ! you'll have to come back and try again later PRINT (hei2_5) 2000 1 //~s~All the generators have been rigged, you need to get out of there without getting caught. PRINT (hei2_6) 2000 1 // Press ~m~~widget_attack~ to plant explosives. PRINT (hei2_7) 2000 1 //SECURITY GUARD: I Found him, he's over here! PRINT (hei2_8) 2000 1 //"Thats the guy, arrest him!" PRINT (hei2_9) 2000 1 //~s~ You must not get caught, find a way to lose the cops. PRINT (HEI2_90) 2000 1 //~s~ Go to the airport you need a plane to parachute onto the dam quay. PRINT (hei2_11) 2000 1 // ~o~ = Open Chute PRINT (hei2_12) 2000 1 // ~s~Land on the end of the dam quay PRINT (hei2_13) 2000 1 // ~t~ = Jump From Plane PRINT (hei2_14) 2000 1 // ~s~ We're over the dam, get ready to jump! PRINT (hei2_15) 2000 1 // ~s~ GO! PRINT (HEI2_16) 2000 1 // SECURITY GUARD: We know he's in here somewhere, start looking! PRINT (HEI2_17) 2000 1 // SECURITY GUARD: The cops are on the way, this thrill seeker aint gonna escape PRINT (HEI2_18) 2000 1 // SECURITY GUARD: There's a report of an unauthorised person breaking into the building. PRINT (HEI2_20) 2000 1 //~s~ This is all about stealth, if you get spotted or make too much noise the whole building will have been alerted. [HEI2_21) 4000 1 ~s~ You missed the jump point, you'll have to go round again! [HEI2_22) 4000 1 Hold the L1 button turn left. ~n~ Hold the R1 button to turn right. [HEI2_23) 4000 1 Holding both the L1 and R1 buttons will increase your speed of decent. [HEI2_24) 4000 1 Stealth PRINT (HEI2_25) 2000 1 //~r~ The plane has been destroyed! PRINT (HEI2_43) 4000 1// "You're too low, we need to gain some height to make the jump." PRINT (HEI2_44) 4000 1 //"You're too high, we need to lose some height to make the jump." PRINT (HEI2_45) 4000 1// "Be careful, if you take the direct route it will take us over the SAM sites." PRINT (HEI2_46) 4000 1 //~s~There's a knife stashed near one of the containers which you may find useful. PRINT (HEI2_48) 4000 1 //~s~Jack that boat and get the hell out of there. PRINT (HEI2_49) 4000 1 //"CLICK" PRINT (HEI2_50) 4000 1 //"What the.. the door's been locked!" PRINT (HEI2_47) 4000 1 //SECURITY GUARD: We've got him trapped, there's no way off of that ledge" DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING hei2_stealth COUNTER_DISPLAY_BAR 1 HEI2_24 ///////////////////////////////////////// /// possible audio from the guards /// ///////////////////////////////////////// " You're not supposed to be here " " Get him away from the generators" " He's planting bombs on the generators, stop him !" " Shoot the intruder /tresspasser !" */ // **************************************** Mission heist2 failed *********************** mission_heist2_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // **************************************** mission heist2 passed ************************ mission_heist2_passed: flag_heist_mission_counter ++ //Used to terminate this mission loop in the main script. These varibles will be set up in the main.sc REGISTER_MISSION_PASSED ( HEIST_2 ) //Used in the stats PLAYER_MADE_PROGRESS 1 //PRINT_WITH_NUMBER_BIG ( M_PASS ) 100 5000 1 //"Mission Passed!" //ADD_SCORE player1 100 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 5 5000 1 //"Mission Passed!" PLAY_MISSION_PASSED_TUNE 1 AWARD_PLAYER_MISSION_RESPECT 5//amount of respect //CLEAR_WANTED_LEVEL player1 //CLEAR_WANTED_LEVEL player1 RETURN //nt_roadblockCI // RANGER // COASTGRD // DINGHY // ********************************** mission cleanup *********************************** mission_cleanup_heist2: ///////////////////////// REMOVE_BLIPS Para_pickup_flag = 1 GET_GAME_TIMER timer_mobile_start DISPLAY_RADAR TRUE RELEASE_WEATHER SET_RADAR_ZOOM 0 SWITCH_ENTRY_EXIT damin TRUE SWITCH_ENTRY_EXIT damout TRUE REMOVE_CAR_RECORDING 805 IF hei2_clothes_changed = 1 IF IS_PLAYER_PLAYING PLAYER1 SET_PLAYER_CYCLE_WEAPON_BUTTON PLAYER1 TRUE ENDIF ENDIF //SET_RADAR_ZOOM 1 SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 // normally 1.0 SET_AREA51_SAM_SITE ON REMOVE_BLIP hei2_generator_blip[0] REMOVE_BLIP hei2_generator_blip[1] REMOVE_BLIP hei2_generator_blip[2] REMOVE_BLIP hei2_generator_blip[3] REMOVE_BLIP hei2_generator_blip[4] REMOVE_BLIP hei2_quay_guard_blip[0] REMOVE_BLIP hei2_quay_guard_blip[1] REMOVE_BLIP hei2_generator_room_door_blip REMOVE_BLIP hei2_plane_blip REMOVE_BLIP hei2_knife_blip hei2_counter = 0 WHILE hei2_counter < 6 REMOVE_BLIP hei2_security_blip[hei2_counter] hei2_counter++ ENDWHILE DELETE_CHECKPOINT hei2_checkpoint //////////////////////// REMOVE_GROUP /////////////////////// CLEAR_ONSCREEN_COUNTER //CLEAR_ONSCREEN_COUNTER hei2_stealth ////////////////////// CLEAR_ONSCREEN_TIMER ///////////////////// MARK MODELs AS NO LONGER NEEDED MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_bomb_obj[0] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_bomb_obj[1] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_bomb_obj[2] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_bomb_obj[3] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_bomb_obj[4] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_quay_object[0] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_quay_object[1] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_quay_object[2] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_quay_object[3] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_quay_object[4] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_quay_object[5] MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_quay_object[6] //MARK_OBJECT_AS_NO_LONGER_NEEDED hei2_quay_object[7] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_quay_guard[0] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_quay_guard[1] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_security_ped[0] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_security_ped[1] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_security_ped[2] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_security_ped[3] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_security_ped[4] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_security_ped[5] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_temp_ped[0] MARK_CHAR_AS_NO_LONGER_NEEDED hei2_temp_ped[0] //MARK_CHAR_AS_NO_LONGER_NEEDED hei2_fisherman_ped MARK_CAR_AS_NO_LONGER_NEEDED hei2_player_boat MARK_CAR_AS_NO_LONGER_NEEDED hei2_cop_car1 MARK_CAR_AS_NO_LONGER_NEEDED hei2_cop_car2 MARK_CAR_AS_NO_LONGER_NEEDED hei2_cop_car3 MARK_CAR_AS_NO_LONGER_NEEDED hei2_cop_car4 MARK_MODEL_AS_NO_LONGER_NEEDED ENFORCER MARK_MODEL_AS_NO_LONGER_NEEDED 599 MARK_MODEL_AS_NO_LONGER_NEEDED SMASHBOXPILE MARK_MODEL_AS_NO_LONGER_NEEDED K_CARGO1 MARK_MODEL_AS_NO_LONGER_NEEDED KMB_CONTAINER_RED MARK_MODEL_AS_NO_LONGER_NEEDED K_CARGO4 MARK_MODEL_AS_NO_LONGER_NEEDED gun_para MARK_MODEL_AS_NO_LONGER_NEEDED WMYSGRD MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH MARK_MODEL_AS_NO_LONGER_NEEDED NITESTICK MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED KNIFECUR MARK_MODEL_AS_NO_LONGER_NEEDED SATCHEL//DYNAMITE MARK_MODEL_AS_NO_LONGER_NEEDED REEFER //MARK_MODEL_AS_NO_LONGER_NEEDED WMYTEX1 MARK_MODEL_AS_NO_LONGER_NEEDED KNIFECUR LOCK_CAR_DOORS hei2_jump_plane CARLOCK_UNLOCKED MARK_CAR_AS_NO_LONGER_NEEDED hei2_jump_plane MARK_MODEL_AS_NO_LONGER_NEEDED NEVADA MARK_MODEL_AS_NO_LONGER_NEEDED SW_BIT_09 REMOVE_PICKUP hei2_knife_pickup REMOVE_ANIMATION BOMBER REMOVE_ANIMATION DAM_JUMP REMOVE_ANIMATION BD_FIRE REMOVE_DECISION_MAKER hei2_dam_sec_decision ///////////////////////////////////// //CLEAR_ALL_VIEW_VARIABLES flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start //Used to reset the mobile phone timer so it doesn't ring immediately after the mission MISSION_HAS_FINISHED //UNLOAD_SPECIAL_CHARACTER 1 RETURN } MISSION_START // ***************************************************************************************** // *** *** // *** Date: 22/09/2003 Time: 10:37:39 Name: Steve Taylor *** // *** *** // *** Mission: Heist 4 - Street Hawk *** // *** *** // *** Brief: Players buddy is on the highway going around vegas in an articulated truck.*** // *** Player has to steal three designated bikes from around Vegas and put drive them in*** // *** the back of the truck. Time limit and as the player steals each bike his wanted *** // *** level gets higher/faces more resistance from goons. *** // *** *** // *** PC Script *** // ***************************************************************************************** SCRIPT_NAME HEIST4 GOSUB mission_hst4_start IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_hst4_failed ENDIF GOSUB mission_hst4_cleanup MISSION_END // ************************************ MISSION START ************************************** { mission_hst4_start: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT heist4 //SCRIPT_NAME HEIST4 WAIT 0 DISPLAY_RADAR 5 // PATHING IGNORE SWITCHED OFF SET_AREA_VISIBLE 10 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2016.4222 1017.1024 10.0 //TRIAD CASINO //SET_CHAR_COORDINATES scplayer 2024.8704 1008.6201 9.8127 //SET_CHAR_HEADING scplayer 342.8127 SET_CHAR_COORDINATES scplayer 2033.9742 1017.2899 9.8203 SET_CHAR_HEADING scplayer 288.0 LVAR_INT hst4_group GET_PLAYER_GROUP player1 hst4_group SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_GROUP_FOLLOW_STATUS hst4_group FALSE SET_PLAYER_GROUP_TO_FOLLOW_NEVER player1 TRUE LOAD_CUTSCENE HEIST5a WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE //CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SWITCH_COPS_ON_BIKES OFF LOAD_SCENE 2031.1681 1030.9177 9.8130 REQUEST_COLLISION 2031.1681 1030.9177 //9.8130 // Wait 0 is important for streaming issues! Put it after area visible in order for it to work nicely! SET_AREA_VISIBLE 0 WAIT 0 // Wait 0 is important for streaming issues! Put it after area visible in order for it to work nicely! SET_PLAYER_CONTROL player1 OFF //LOAD_SCENE 2031.1681 1030.9177 9.8130 LVAR_INT mission_blip mission_blip2 mission_flag mission_timer sequence_task players_car car_health temp_int a LVAR_INT r c e v m s b LVAR_FLOAT h x2 y2 z2 x3 y3 z3 speed temp_float // global for delivery timer VAR_INT hst4_deliverytimer LVAR_INT hst4_nextprompt LVAR_INT hst4_emptydm hst4_toughdm // decision makers LVAR_INT hst4_pizzacop hst4_pizzabox hst4_pizzacopseq hst4_pizzasetpiece hst4_pizzadrunkbust hst4_pizzadrunk hst4_pizzadrunkseq LVAR_INT hst4_hotelcop hst4_hotelcopseq hst4_hotelsetpiece hst4_hotelthugsleave LVAR_INT hst4_pizzabike hst4_pizzabox2 LVAR_INT hst4_larrycop hst4_staircop hst4_larrycopseq hst4_staircopseq hst4_stationsetpiece hst4_stationcar LVAR_INT hst4_hospitalcop hst4_hospitalcopseq hst4_hospitalcop2seq hst4_hospitalsetpiece hst4_hospitalchopper hst4_hospitalpilot hst4_choppertakeoff LVAR_INT hst4_spawnchopper LVAR_INT attached_bikeindex LVAR_INT hst4_puke LVAR_INT hst4_hotelbike1 hst4_hotelbike2 hst4_hotelbike3 LVAR_INT hst4_hotelthug1 hst4_hotelthug2 hst4_hotelthug3 hst4_hotelthug1seq hst4_hotelthug2seq hst4_hotelthug3seq LVAR_INT siren_fix LVAR_INT hst4_finalcut hst4_finalcutskip hst4_newcutskip hst4_newcutskip= 0 LVAR_INT hst4_endseq LVAR_INT hst4_hospitalwanted hst4_hotelwanted hst4_pizzawanted hst4_larrywanted hst4_stairwanted LVAR_FLOAT hst4_clearX hst4_clearY hst4_clearZ LVAR_INT bike_camera LVAR_INT truck_thumb truck_thumbsfx LVAR_INT truck_context LVAR_FLOAT truck_thumbX truck_thumbY truck_thumbZ LVAR_FLOAT slowzoneX1 slowzoneY1 slowzoneZ1 slowzoneX2 slowzoneY2 slowzoneZ2 bike_truckSpeed slowzoneSpeed LVAR_INT slowzoneCar sztest LVAR_INT hst4_clockfix //Dialogue and audio variables LVAR_INT hst4_dialogue hst4_audio_char LVAR_INT hst4_text_timer_diff hst4_text_timer_end hst4_text_timer_start LVAR_TEXT_LABEL hst4_text[19] LVAR_INT hst4_audio[19] hst4_audio_slot hst4_alt_slot hst4_counter hst4_ahead_counter hst4_audio_playing hst4_audio_underway LVAR_INT hst4_convo_underway hst4_convo_counter hst4_random //hst4_leftcar_counter hst4_backcar_counter hst4_ganghire_counter //LVAR_INT hst4_driveby_counter hst4_cut_counter LVAR_INT sfx_tyres // ---- Dialogue Flags hst4_audio_slot = 1 hst4_alt_slot = 2 hst4_counter = 0 hst4_ahead_counter = 1 hst4_audio_playing = 0 hst4_audio_underway = 0 //Dialogue text $hst4_text[1] = HE4_AA// Okay, that should do us $hst4_text[2] = HE4_AB// Take good care of those bikes $hst4_text[3] = HE4_AC// Now get out of here $hst4_text[4] = HE4_BA// Come in control, I've just been dealing with a drunk at the pizza parlour near Linden Station $hst4_text[5] = HE4_BB// and some punk has just stole my bike $hst4_text[6] = HE4_BC// Larry, some prick's trying your bike for size $hst4_text[7] = HE4_BD// Get him! $hst4_text[8] = HE4_BE// Control, this is Officer Jordan $hst4_text[9] = HE4_BF// I'm at the hospital and , well, some joker's stolen my bike! $hst4_text[10] = HE4_BG// All Units. this an APB for a serial patrol bike thief! $hst4_text[11] = HE4_BH//Suspect is black male, about six feet tall... $hst4_text[12] = HE4_BJ//And light build $hst4_text[13] = HE4_BK//And medium build $hst4_text[14] = HE4_BL//And heavy build $hst4_text[15] = HE4_BM//Oh, and a very silly haircut! $hst4_text[16] = HE4_CA// Ok, you get the Packer, hit the Julius Thruway and keep moving. $hst4_text[17] = HE4_CB// I'll steal the bikes and get them to you. //Dialogue audio $hst4_audio[1] = SOUND_HE4_AA// Okay, that should do us $hst4_audio[2] = SOUND_HE4_AB// Take good care of those bikes $hst4_audio[3] = SOUND_HE4_AC// Now get out of here $hst4_audio[4] = SOUND_HE4_BA// Come in control, I've just been dealing with a drunk at the pizza parlour near Linden Station $hst4_audio[5] = SOUND_HE4_BB// and some punk has just stole my bike $hst4_audio[6] = SOUND_HE4_BC// Larry, some prick's trying your bike for size $hst4_audio[7] = SOUND_HE4_BD// Get him! $hst4_audio[8] = SOUND_HE4_BE// Control, this is Officer Jordan $hst4_audio[9] = SOUND_HE4_BF// I'm at the hospital and , well, some joker's stolen my bike! $hst4_audio[10] = SOUND_HE4_BG// All Units. this an APB for a serial patrol bike thief! $hst4_audio[11] = SOUND_HE4_BH//Suspect is black male, about six feet tall... $hst4_audio[12] = SOUND_HE4_BJ//And light build $hst4_audio[13] = SOUND_HE4_BK//And medium build $hst4_audio[14] = SOUND_HE4_BL//And heavy build $hst4_audio[15] = SOUND_HE4_BM//Oh, and a very silly haircut! $hst4_audio[16] = SOUND_HE4_CA// Ok, you get the Packer, hit the Julius Thruway and keep moving. $hst4_audio[17] = SOUND_HE4_CB// I'll steal the bikes and get them to you. //LOAD_MISSION_TEXT heist4 //LOAD_SCENE 2035.4064 1040.5701 9.8130 REQUEST_MODEL PACKER REQUEST_MODEL COPBIKE REQUEST_MODEL LAPDM1 REQUEST_MODEL COLT45 REQUEST_MODEL COPCARVG REQUEST_MODEL DWMOLC1 //REQUEST_MODEL WMOBO REQUEST_MODEL FREEWAY REQUEST_MODEL DWMYLC1 REQUEST_MODEL DWMOLC2 REQUEST_MODEL WMYMECH REQUEST_MODEL triada REQUEST_ANIMATION SMOKING REQUEST_ANIMATION MISC SET_CHAR_HEADING scplayer 342.8127 LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED PACKER OR NOT HAS_MODEL_LOADED COPBIKE OR NOT HAS_MODEL_LOADED LAPDM1 OR NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED DWMOLC1 WAIT 0 ENDWHILE WHILE NOT HAS_ANIMATION_LOADED SMOKING OR NOT HAS_MODEL_LOADED COPCARVG OR NOT HAS_ANIMATION_LOADED MISC OR NOT HAS_MODEL_LOADED FREEWAY WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED WMYMECH OR NOT HAS_MODEL_LOADED DWMOLC2 OR NOT HAS_MODEL_LOADED DWMYLC1 OR NOT HAS_MODEL_LOADED triada WAIT 0 ENDWHILE LOAD_SCENE 2031.1681 1030.9177 9.8130 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY hst4_emptydm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH hst4_toughdm //SET_CHAR_HEADING scplayer 342.8127 GET_CHAR_COORDINATES scplayer hst4_clearX hst4_clearY hst4_clearZ CLEAR_AREA hst4_clearX hst4_clearY hst4_clearZ 1000.0 FALSE WHILE NOT IS_PLAYER_PLAYING player1 WAIT 0 ENDWHILE LVAR_FLOAT gotos_x[20] gotos_y[20] gotos_x[0] = 2710.6233 gotos_y[0] = 1397.8832 // start, view of skyscraper to right gotos_x[1] = 2711.0706 // gotos_y[1] = 1175.0027 // gotos_x[2] = 2590.8120 // gotos_y[2] = 898.2437 // gotos_x[3] = 2203.8962 // gotos_y[3] = 849.0437 // gotos_x[4] = 1833.4729 // gotos_y[4] = 850.4182 // gotos_x[5] = 1541.6023 // Dodgy! gotos_y[5] = 848.7880 // gotos_x[6] = 1288.890 gotos_y[6] = 901.789 gotos_x[7] = 1224.9752 // gotos_y[7] = 1240.5899 // gotos_x[8] = 1224.0641 // gotos_y[8] = 1744.7032 // gotos_x[9] = 1224.1733 // gotos_y[9] = 2071.7032 // gotos_x[10] = 1279.2450 // gotos_y[10] = 2398.6830 // gotos_x[11] = 1566.8157 // gotos_y[11] = 2457.2327 // tricky bit gotos_x[12] = 1931.4498 // gotos_y[12] = 2521.8577 // gotos_x[13] = 2442.5735 // gotos_y[13] = 2609.4287 // gotos_x[14] = 2704.6577 // gotos_y[14] = 2343.6537 // gotos_x[15] = 2710.8911 // gotos_y[15] = 2065.3169 // gotos_x[16] = 2711.8918 // gotos_y[16] = 1830.5001 // //LOAD_SCENE 2031.1681 1030.9177 9.8130 LVAR_INT bike_truck CLEAR_AREA 2710.5249 1567.0090 100.0 100.0 FALSE CUSTOM_PLATE_FOR_NEXT_CAR packer CFC_1888 CREATE_CAR PACKER 2711.3264 1567.0452 6.2 bike_truck SET_CAR_HEADING bike_truck 175.1379 CHANGE_CAR_COLOUR bike_truck 16 16 //SET_CAR_CRUISE_SPEED bike_truck 30.0//50.0 //SET_CAR_DRIVING_STYLE bike_truck 2 SET_UPSIDEDOWN_CAR_NOT_DAMAGED bike_truck TRUE SET_CAR_HEALTH bike_truck 2500 ADD_UPSIDEDOWN_CAR_CHECK bike_truck ADD_STUCK_CAR_CHECK bike_truck 4.0 3000 OPEN_CAR_DOOR bike_truck FRONT_RIGHT_DOOR SET_CAR_STAY_IN_FAST_LANE bike_truck TRUE SET_CAR_ONLY_DAMAGED_BY_PLAYER bike_truck TRUE LOCK_CAR_DOORS bike_truck CARLOCK_LOCKED SET_CAR_CAN_GO_AGAINST_TRAFFIC bike_truck FALSE LVAR_INT truck_driver CREATE_CHAR_INSIDE_CAR bike_truck PEDTYPE_MISSION1 triada truck_driver CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 2715.3264 1569.0452 7.2 truck_thumb SET_CHAR_PROOFS truck_thumb TRUE TRUE TRUE TRUE TRUE SET_CHAR_NEVER_TARGETTED truck_thumb TRUE ATTACH_CHAR_TO_CAR truck_thumb bike_truck 1.0 3.1 0.4 FACING_BACK 0.0 WEAPONTYPE_UNARMED SET_LOAD_COLLISION_FOR_CHAR_FLAG truck_thumb FALSE SET_CHAR_DECISION_MAKER truck_driver hst4_emptydm SET_CHAR_DECISION_MAKER truck_thumb hst4_emptydm //LOAD_SCENE 2035.4064 1040.5701 9.8130 SET_LOAD_COLLISION_FOR_CHAR_FLAG truck_driver FALSE SET_CHAR_CAN_BE_SHOT_IN_VEHICLE truck_driver FALSE SET_CHAR_CANT_BE_DRAGGED_OUT truck_driver TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED truck_driver TRUE SET_CHAR_SUFFERS_CRITICAL_HITS truck_driver FALSE SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR truck_driver FALSE SET_LOAD_COLLISION_FOR_CAR_FLAG bike_truck FALSE MARK_MODEL_AS_NO_LONGER_NEEDED PACKER LVAR_FLOAT motorbike_x[4] motorbike_y[4] motorbike_z[4] motorbike_h[4] //Steve T motorbike_x[0] = 2770.2131 motorbike_y[0] = 1433.8599 motorbike_z[0] = 9.3804 motorbike_h[0] = 257.0 //Zip Pizza, by highway. motorbike_x[1] = 2620.6829//2512.6458 motorbike_y[1] = 2333.6863//2367.5801 motorbike_z[1] = 9.8203//10.8694 motorbike_h[1] = 174.5638//266.5737 //Rock Hotel motorbike_x[2] = 2316.9353 motorbike_y[2] = 2457.0063 motorbike_z[2] = 9.8203 motorbike_h[2] = 140.3 //Las Vegas police station car park, puts wanted level up to two stars /* motorbike_x[3] = 1593.8617 motorbike_y[3] = 1831.1394 motorbike_z[3] = 10.8681 motorbike_h[3] = 0.0 */ //Las Vegas hospital motorbike_x[3] = 1610.5875 motorbike_y[3] = 1845.6019 motorbike_z[3] = 9.8280 motorbike_h[3] = 235.7296 hst4_nextprompt = 99 hst4_deliverytimer = 720000 // twelve minutes hst4_pizzasetpiece = 0 hst4_hotelsetpiece = 0 hst4_stationsetpiece = 0 hst4_hospitalsetpiece = 0 hst4_choppertakeoff = 0 hst4_pizzadrunkbust = 0 hst4_hotelthugsleave = 0 hst4_spawnchopper = 0 attached_bikeindex = 0 siren_fix = 0 hst4_finalcut = 0 hst4_finalcutskip = 0 hst4_hospitalwanted = 0 hst4_hotelwanted = 0 hst4_pizzawanted = 0 hst4_larrywanted = 0 hst4_stairwanted = 0 bike_camera = 0 hst4_clockfix = 0 m = 0 IF m = -1 CREATE_CAR COPBIKE X Y Z motorbike[m] ADD_BLIP_FOR_COORD X Y Z mission_blip CREATE_CHAR PEDTYPE_MISSION1 LAPDM1 X Y Z hst4_pizzacop // SET_LOAD_COLLISION_FOR_CHAR_FLAG hst4_pizzacop FALSE CREATE_CHAR PEDTYPE_MISSION1 LAPDM1 X Y Z hst4_hotelcop // SET_LOAD_COLLISION_FOR_CHAR_FLAG hst4_hotelcop FALSE ENDIF WHILE m < 4 ADD_BLIP_FOR_COORD motorbike_x[m] motorbike_y[m] motorbike_z[m] motorbike_blip[m] CHANGE_BLIP_COLOUR motorbike_blip[m] GREEN LVAR_INT motorbike_created[4] motorbike_created[m] = 0 LVAR_INT bike_attached_flag[4] bike_attached_flag[m] = 0 ++ m ENDWHILE LVAR_FLOAT bike_attached_x bike_attached_y bike_attached_z bike_attached_x = 0.6 bike_attached_y = 0.0 bike_attached_z = 1.9 /* Old values bike_attached_x = 0.6 bike_attached_y = -3.0 bike_attached_z = 1.0 */ LVAR_INT bikes_attached bikes_attached = 0 LVAR_FLOAT truck_speed truck_speed = 15.0 v = 0 LVAR_INT hst4_newcut hst4_cutguy hst4_newcut = 0 //SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2016.4222 1017.1024 10.0 //TRIAD CASINO // //SET_CHAR_COORDINATES scplayer 2024.8704 1008.6201 9.8127 //SET_CHAR_HEADING scplayer 342.8127 //SET_CAMERA_BEHIND_PLAYER //RESTORE_CAMERA_JUMPCUT // //DO_FADE 500 FADE_IN //WHILE GET_FADING_STATUS // WAIT 0 //ENDWHILE // //SET_CAMERA_BEHIND_PLAYER //RESTORE_CAMERA_JUMPCUT //SET_PLAYER_CONTROL player1 ON // // //PRINT_NOW HEI4_01 8000 1//Steal the police bikes and 'deliver' them to the Packer. //debug /* CREATE_CAR COPCARVG 2304.4399 2453.7700 12.8203 hst4_stationcar SET_CAR_HEADING hst4_stationcar 185.0 OPEN_CAR_DOOR hst4_stationcar FRONT_LEFT_DOOR SET_LOAD_COLLISION_FOR_CAR_FLAG hst4_stationcar FALSE */ CREATE_CHAR PEDTYPE_MISSION1 LAPDM1 2311.0193 2438.3679 9.8203 hst4_larrycop //SET_LOAD_COLLISION_FOR_CHAR_FLAG hst4_larrycop FALSE SET_CHAR_DECISION_MAKER hst4_larrycop hst4_emptydm SET_CHAR_HEADING hst4_larrycop 297.0 GIVE_WEAPON_TO_CHAR hst4_larrycop WEAPONTYPE_PISTOL 2000 CREATE_CHAR PEDTYPE_MISSION1 LAPDM1 2311.8501 2439.3745 9.8203 hst4_staircop //SET_LOAD_COLLISION_FOR_CHAR_FLAG hst4_staircop FALSE SET_CHAR_DECISION_MAKER hst4_staircop hst4_emptydm SET_CHAR_HEADING hst4_staircop 115.0 GIVE_WEAPON_TO_CHAR hst4_staircop WEAPONTYPE_PISTOL 2000 CREATE_CHAR PEDTYPE_MISSION1 LAPDM1 1612.2440 1845.8546 9.8280 hst4_hospitalcop //SET_LOAD_COLLISION_FOR_CHAR_FLAG hst4_hospitalcop FALSE SET_CHAR_DECISION_MAKER hst4_hospitalcop hst4_emptydm SET_CHAR_HEADING hst4_hospitalcop 110.0 GIVE_WEAPON_TO_CHAR hst4_hospitalcop WEAPONTYPE_PISTOL 2000 SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE hst4_hospitalcop KNOCKOFFBIKE_EASY CREATE_CHAR PEDTYPE_MISSION1 LAPDM1 2768.7971 1431.2390 9.4870 hst4_pizzacop GIVE_WEAPON_TO_CHAR hst4_pizzacop WEAPONTYPE_PISTOL 2000 SET_CHAR_DECISION_MAKER hst4_pizzacop hst4_emptydm SET_CHAR_HEADING hst4_pizzacop 111.0 MARK_MODEL_AS_NO_LONGER_NEEDED LAPDM1 CREATE_CHAR PEDTYPE_MISSION1 DWMYLC1 2767.5371 1424.8768 9.2195 hst4_pizzadrunk SET_ANIM_GROUP_FOR_CHAR hst4_pizzadrunk drunkman //SET_LOAD_COLLISION_FOR_CHAR_FLAG hst4_pizzadrunk FALSE //TASK_PICK_UP_OBJECT hst4_pizzacop hst4_pizzabox 0.0 -0.3 -0.1 PED_HANDL HOLD_ORIENTATE_BONE_FULL NULL NULL FALSE //GIVE_WEAPON_TO_CHAR hst4_pizzacop WEAPONTYPE_PISTOL 2000 SET_CHAR_DECISION_MAKER hst4_pizzadrunk hst4_emptydm SET_CHAR_HEADING hst4_pizzadrunk 347.0 //CREATE_CAR FREEWAY 2760.3965 1424.7660 9.4004 hst4_pizzabike //SET_CAR_HEADING hst4_pizzabike 163.0 CREATE_CHAR PEDTYPE_MISSION1 LAPDM1 2619.8577 2339.2559 10.0081 hst4_hotelcop SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE hst4_hotelcop KNOCKOFFBIKE_EASY //SET_LOAD_COLLISION_FOR_CHAR_FLAG hst4_hotelcop FALSE GIVE_WEAPON_TO_CHAR hst4_hotelcop WEAPONTYPE_PISTOL 2000 SET_CHAR_DECISION_MAKER hst4_hotelcop hst4_emptydm SET_CHAR_HEADING hst4_hotelcop 300.0 CREATE_CAR FREEWAY 2634.0110 2343.2122 9.6797 hst4_hotelbike1 SET_CAR_HEADING hst4_hotelbike1 120.0386 SET_LOAD_COLLISION_FOR_CAR_FLAG hst4_hotelbike1 FALSE CREATE_CAR FREEWAY 2625.6897 2336.8503 9.6875 hst4_hotelbike2 SET_CAR_HEADING hst4_hotelbike2 183.0386 SET_LOAD_COLLISION_FOR_CAR_FLAG hst4_hotelbike2 FALSE CREATE_CAR FREEWAY 2637.8474 2347.5764 9.6797 hst4_hotelbike3 SET_CAR_HEADING hst4_hotelbike3 126.0963 SET_LOAD_COLLISION_FOR_CAR_FLAG hst4_hotelbike3 FALSE CREATE_CHAR_INSIDE_CAR hst4_hotelbike1 PEDTYPE_MISSION1 DWMYLC1 hst4_hotelthug1 SET_CHAR_DECISION_MAKER hst4_hotelthug1 hst4_emptydm //SET_LOAD_COLLISION_FOR_CHAR_FLAG hst4_hotelthug1 FALSE CREATE_CHAR_INSIDE_CAR hst4_hotelbike2 PEDTYPE_MISSION1 DWMOLC1 hst4_hotelthug2 SET_CHAR_DECISION_MAKER hst4_hotelthug2 hst4_emptydm //SET_LOAD_COLLISION_FOR_CHAR_FLAG hst4_hotelthug2 FALSE CREATE_CHAR_INSIDE_CAR hst4_hotelbike3 PEDTYPE_MISSION1 DWMOLC2 hst4_hotelthug3 SET_CHAR_DECISION_MAKER hst4_hotelthug3 hst4_emptydm //SET_LOAD_COLLISION_FOR_CHAR_FLAG hst4_hotelthug3 FALSE MARK_MODEL_AS_NO_LONGER_NEEDED dwmylc1 MARK_MODEL_AS_NO_LONGER_NEEDED dwmolc1 MARK_MODEL_AS_NO_LONGER_NEEDED dwmolc2 MARK_MODEL_AS_NO_LONGER_NEEDED FREEWAY //TASK_PLAY_ANIM hst4_staircop M_smkstnd_loop SMOKING 4.0 1 FALSE FALSE FALSE -1 //TASK_PLAY_ANIM hst4_larrycop M_smkstnd_loop SMOKING 4.0 1 FALSE FALSE FALSE -1 TASK_CHAT_WITH_CHAR hst4_staircop hst4_larrycop true true //ped0 will lead the chatting TASK_CHAT_WITH_CHAR hst4_larrycop hst4_staircop false true //ped1 will follow ped0 at chatting TASK_PLAY_ANIM hst4_hospitalcop M_smkstnd_loop SMOKING 4.0 1 FALSE FALSE FALSE -1 //TASK_PLAY_ANIM hst4_pizzacop M_smkstnd_loop SMOKING 4.0 1 FALSE FALSE FALSE -1 SWITCH_COPS_ON_BIKES OFF //SWITCH_COPS_ON_BIKES OFF // so the player doesn't get confused and steal a non-mission cop bike timera = 0 // next prompt timer timerb = 0 // used to spawn chopper after a few seconds for script memory SET_CAR_DENSITY_MULTIPLIER 1.0 //debug //SET_CHAR_COORDINATES scplayer 2771.8772 1426.9630 9.7718 // pizza //SET_CHAR_COORDINATES scplayer 2620.7034 2331.8621 9.8203 // rock hotel //SET_CHAR_COORDINATES scplayer 2316.9353 2457.0063 9.8300 // police station //SET_CHAR_COORDINATES scplayer 1593.8617 1831.1394 10.000 // hospital //SET_CHAR_COORDINATES scplayer 1546.0275 1835.5792 8.9227 // heli check //LOAD_SCENE 2031.1681 1030.9177 9.8130 //REQUEST_COLLISION 2031.1681 1030.9177 //9.8130 // // // //SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2016.4222 1017.1024 10.0 //TRIAD CASINO // //SET_CHAR_COORDINATES scplayer 2024.8704 1008.6201 9.8127 //SET_CHAR_HEADING scplayer 265.8120 //342.8127 //SET_CAMERA_BEHIND_PLAYER //RESTORE_CAMERA_JUMPCUT // //WAIT 1500 // // //DO_FADE 1000 FADE_IN //WHILE GET_FADING_STATUS // WAIT 0 //ENDWHILE // //SET_CAMERA_BEHIND_PLAYER //RESTORE_CAMERA_JUMPCUT //SET_PLAYER_CONTROL player1 ON //PRINT_NOW HEI4_01 8000 1//Steal the police bikes and 'deliver' them to the Packer. IF NOT IS_CHAR_DEAD truck_driver IF NOT IS_CAR_DEAD bike_truck CLEAR_CHAR_TASKS truck_driver CLEAR_AREA 2710.5249 1731.0090 100.0 100.0 FALSE v = 0 // new! TASK_CAR_DRIVE_TO_COORD truck_driver bike_truck gotos_x[v] gotos_y[v] 6.0 15.0 MODE_NORMAL FALSE DRIVINGMODE_SLOWDOWNFORCARS ENDIF ENDIF // Truck attachment noise truck_thumbsfx = 0 // Tyre screech sfx_tyres = 0 // ************************************* MISSION LOOP ************************************** //LOAD_SCENE 2031.1681 1030.9177 9.8130 //REQUEST_COLLISION 2031.1681 1030.9177 //9.8130 //SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2016.4222 1017.1024 10.0 //TRIAD CASINO //SET_CHAR_COORDINATES scplayer 2024.8704 1008.6201 9.8127 //SET_CHAR_HEADING scplayer 342.8127 //SET_CAMERA_BEHIND_PLAYER //RESTORE_CAMERA_JUMPCUT //WAIT 1000 /* SET_CHAR_COORDINATES scplayer 2033.9742 1017.2899 9.8203 SET_CHAR_HEADING scplayer 288.0 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT */ CREATE_CHAR PEDTYPE_MISSION1 triada 2029.5605 1006.0410 9.8203 hst4_cutguy SET_CHAR_HEADING hst4_cutguy 280.0 SET_CHAR_DECISION_MAKER hst4_cutguy hst4_emptydm MARK_MODEL_AS_NO_LONGER_NEEDED triada MARK_MODEL_AS_NO_LONGER_NEEDED wmymech SET_CHAR_COORDINATES scplayer 2028.8745 1006.8702 9.8203 SET_CHAR_HEADING scplayer 265.0 CLEAR_AREA 2033.9742 1017.2899 9.8203 1000.0 FALSE WAIT 1000 /* DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PRINT_NOW HEI4_01 10000 1 */ //SET_CHAR_COORDINATES scplayer 2033.9742 1017.2899 9.8203 //SET_CHAR_HEADING scplayer 288.0 /* SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON */ SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 2025.9052 1003.5439 12.1278 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2026.7261 1004.0738 11.9155 JUMP_CUT IF NOT IS_CHAR_DEAD hst4_cutguy TASK_TURN_CHAR_TO_FACE_CHAR hst4_cutguy scplayer TASK_TURN_CHAR_TO_FACE_CHAR scplayer hst4_cutguy ENDIF DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE /* IF NOT IS_CHAR_DEAD scplayer IF NOT IS_CHAR_DEAD hst4_cutguy DISABLE_CHAR_SPEECH scplayer FALSE DISABLE_CHAR_SPEECH hst4_cutguy FALSE CLEAR_CHAR_TASKS scplayer CLEAR_CHAR_TASKS hst4_cutguy TASK_CHAT_WITH_CHAR scplayer hst4_cutguy true true //ped0 will lead the chatting TASK_CHAT_WITH_CHAR hst4_cutguy scplayer false true //ped1 will follow ped0 at chatting ENDIF ENDIF */ TASK_PLAY_ANIM scplayer IDLE_chat PED 4.0 1 FALSE FALSE FALSE -1 hst4_newcut = 1 timera = 0 mission_hst4_loop: IF hst4_newcutskip = 1 IF IS_BUTTON_PRESSED PAD1 CROSS WHILE IS_BUTTON_PRESSED PAD1 CROSS WAIT 0 ENDWHILE IF hst4_newcut > 1 //write_debug shit CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 // hst4_counter = 0 hst4_newcut = 5 hst4_newcutskip = 0 ENDIF //IF ca3_gotplvan < 9 // ca3_gotplvan = 9 // ca3_ctskip_needed = 0 // Don't want to read PS2 joypad anymore //ENDIF ENDIF ENDIF IF hst4_newcut = 1 //IF timerb > 1000 hst4_counter = 16 //hst4_newcutskip= 1 hst4_newcut = 2 timera = 0 //ENDIF ENDIF IF hst4_newcut = 2 IF timera > 3000 hst4_newcutskip= 1 hst4_counter = 17 hst4_newcut = 3 timera = 0 CLEAR_CHAR_TASKS scplayer TASK_PLAY_ANIM scplayer endchat_01 PED 4.0 1 FALSE FALSE FALSE -1 IF NOT IS_CHAR_DEAD hst4_cutguy TASK_PLAY_ANIM hst4_cutguy endchat_03 PED 4.0 1 FALSE FALSE FALSE -1 ENDIF ENDIF ENDIF IF hst4_newcut = 3 IF timera > 2000 IF NOT IS_CHAR_DEAD hst4_cutguy CLEAR_CHAR_TASKS scplayer CLEAR_CHAR_TASKS hst4_cutguy TASK_GO_STRAIGHT_TO_COORD hst4_cutguy 2030.4309 984.6912 9.8131 PEDMOVE_RUN -2 //CLEAR_CHAR_TASKS scplayer //TASK_ACHIEVE_HEADING scplayer 305.0 hst4_newcut = 4 timera = 0 ENDIF ENDIF ENDIF IF hst4_newcut = 4 IF timera > 2000 hst4_newcut = 5 // CLEAR_PRINTS ENDIF ENDIF IF hst4_newcut = 5 hst4_newcutskip = 0 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_CHAR_TASKS scplayer SET_CHAR_HEADING scplayer 305.0 SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON ENABLE_CHAR_SPEECH scplayer DELETE_CHAR hst4_cutguy CLEAR_PRINTS //WRITE_DEBUG pish PRINT_NOW HEI4_01 8000 1 timera = 0 timerb = 0 hst4_nextprompt = 2 hst4_newcut = -99 WAIT 1000 ENDIF // Audio fx IF sfx_tyres = 0 LOAD_MISSION_AUDIO 3 SOUND_BIKE_GANG_WHEEL_SPIN sfx_tyres = 1 ENDIF IF sfx_tyres = 1 IF HAS_MISSION_AUDIO_LOADED 3 sfx_tyres = 2 ENDIF ENDIF // ---- Load & Play Dialogue... IF NOT hst4_counter = 0 IF hst4_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED hst4_alt_slot CLEAR_MISSION_AUDIO hst4_alt_slot ENDIF hst4_audio_playing = 1 hst4_audio_underway = 1 ENDIF IF hst4_audio_playing = 1 LOAD_MISSION_AUDIO hst4_audio_slot hst4_audio[hst4_counter] //GOSUB hst4_dialogue_pos //ATTACH_MISSION_AUDIO_TO_PED hst4_audio_slot hst4_audio_char hst4_audio_playing = 2 ENDIF IF hst4_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED hst4_audio_slot PLAY_MISSION_AUDIO hst4_audio_slot //Potential issue resolved. If initial scripted cut was skipped while audio was loading, instructional text could be overwritten by subtitle. PRINT $hst4_text[hst4_counter] 10000 1 //PRINT_NOW $hst4_text[hst4_counter] 10000 1 hst4_audio_playing = 3 ENDIF ENDIF IF hst4_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED hst4_audio_slot CLEAR_THIS_PRINT $hst4_text[hst4_counter] IF hst4_audio_slot = 1 hst4_audio_slot = 2 hst4_alt_slot = 1 ELSE hst4_audio_slot = 1 hst4_alt_slot = 2 ENDIF hst4_counter = 0 hst4_audio_playing = 0 hst4_audio_underway = 0 // okay to cue up next piece of convo text ELSE IF NOT HAS_MISSION_AUDIO_LOADED hst4_alt_slot IF hst4_counter < 15 hst4_ahead_counter = hst4_counter + 1 LOAD_MISSION_AUDIO hst4_alt_slot hst4_audio[hst4_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF // End of dialogue loader / player //Ramp blocking car removal segment //GET_RANDOM_CAR_OF_TYPE_IN_AREA_NO_SAVE X1 Y1 X2 Y2 CarModel ReturnCarID IF NOT IS_CAR_DEAD bike_truck GET_OFFSET_FROM_CAR_IN_WORLD_COORDS bike_truck -1.3 -40.0 -2.0 slowzoneX1 slowzoneY1 slowzoneZ1 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS bike_truck 1.3 0.0 2.0 slowzoneX2 slowzoneY2 slowzoneZ2 //was -7.2 //GET_RANDOM_CAR_IN_SPHERE_NO_SAVE slowzoneX slowzoneY slowzoneZ 5.0 -1 slowzoneCar GET_RANDOM_CAR_OF_TYPE_IN_AREA_NO_SAVE slowzoneX1 slowzoneY1 slowzoneX2 slowzoneY2 -1 slowzoneCar GET_CAR_SPEED bike_truck bike_truckSpeed ENDIF IF NOT IS_CAR_DEAD slowzoneCar slowzoneSpeed = bike_truckSpeed - 4.0 SET_CAR_CRUISE_SPEED slowzoneCar slowzoneSpeed // WRITE_DEBUG_WITH_INT clear sztest // WRITE_DEBUG_WITH_FLOAT bts bike_truckSpeed // WRITE_DEBUG_WITH_FLOAT szc slowzoneSpeed // sztest ++ // MARK_CAR_AS_NO_LONGER_NEEDED slowzoneCar ENDIF IF NOT IS_CAR_DEAD bike_truck IF NOT IS_CHAR_DEAD truck_driver IF NOT IS_CHAR_IN_CAR truck_driver bike_truck IF NOT IS_CHAR_DEAD truck_thumb DETACH_CHAR_FROM_CAR truck_thumb ENDIF GOTO mission_hst4_failed ENDIF ENDIF ENDIF IF bike_camera = 1 IF timerb > 1000 IF NOT IS_CAR_DEAD bike_truck GET_CAR_COORDINATES bike_truck truck_thumbX truck_thumbY truck_thumbZ //ADD_ONE_OFF_SOUND truck_thumbX truck_thumbY truck_thumbZ truck_thumbsfx//SOUND_BIKE_PACKER_CLUNK REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BIKE_PACKER_CLUNK bike_camera = 2 ENDIF ENDIF ENDIF IF bike_camera = 2 IF timerb > 1500 IF NOT IS_CHAR_DEAD truck_thumb IF NOT IS_CHAR_PLAYING_ANIM truck_thumb Hiker_Pose_L TASK_PLAY_ANIM truck_thumb Hiker_Pose_L MISC 4.0 FALSE FALSE FALSE TRUE -1 ENDIF ENDIF bike_camera = 3 ENDIF ENDIF IF bike_camera = 3 IF timerb > 2000 // TASK_LEAVE_ANY_CAR scplayer bike_camera = 4 ENDIF ENDIF IF bike_camera = 4 IF timerb > 4000 CLEAR_CHAR_TASKS scplayer SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //FREEZE_CHAR_POSITION scplayer FALSE SET_PLAYER_CONTROL player1 ON IF bikes_attached = 4 CLEAR_PRINTS ENDIF IF bikes_attached = 1 CLEAR_PRINTS PRINT_NOW HEI4_06 5000 1//First Bike Delivered! Jump off and go steal the next bike. ENDIF IF bikes_attached = 2 CLEAR_PRINTS PRINT_NOW HEI4_08 5000 1//Second Bike Delivered! Jump off and go steal the next bike. ENDIF IF bikes_attached = 3 CLEAR_PRINTS PRINT_NOW HEI4_09 5000 1//Third Bike Delivered! Jump off and go steal the next bike. timera = 0 ENDIF IF NOT IS_CHAR_DEAD truck_thumb CLEAR_CHAR_TASKS truck_thumb ENDIF bike_camera = 0 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_hst4_passed ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_w hst4_deliverytimer = hst4_deliverytimer + 60000 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_p ALTER_WANTED_LEVEL Player1 2 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_o ALTER_WANTED_LEVEL Player1 0 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_q SET_CHAR_COORDINATES scplayer 2608.1929 2315.5396 9.6719 SET_CHAR_HEADING scplayer 354.7109 // rock hotel ENDIF IF hst4_finalcutskip = 1 IF IS_BUTTON_PRESSED PAD1 CROSS WHILE IS_BUTTON_PRESSED PAD1 CROSS WAIT 0 ENDWHILE hst4_finalcut = 50 hst4_finalcutskip = 0 ENDIF ENDIF WAIT 0 IF siren_fix = 0 IF NOT IS_CAR_DEAD motorbike[1] IF IS_CHAR_SITTING_IN_CAR scplayer motorbike[1] SWITCH_CAR_SIREN motorbike[1] OFF siren_fix = 1 ENDIF ENDIF ENDIF IF hst4_spawnchopper = 0 IF timerb > 5000 MARK_MODEL_AS_NO_LONGER_NEEDED COPCARVG REQUEST_MODEL POLMAV WHILE NOT HAS_MODEL_LOADED POLMAV WAIT 0 ENDWHILE CREATE_CAR POLMAV 1589.1976 1850.6193 9.8358 hst4_hospitalchopper // SET_LOAD_COLLISION_FOR_CAR_FLAG hst4_hospitalchopper FALSE SET_CAR_HEADING hst4_hospitalchopper 51.0 OPEN_CAR_DOOR hst4_hospitalchopper FRONT_LEFT_DOOR CREATE_CHAR_INSIDE_CAR hst4_hospitalchopper PEDTYPE_MISSION1 LAPDM1 hst4_hospitalpilot SET_LOAD_COLLISION_FOR_CHAR_FLAG hst4_hospitalpilot FALSE SET_HELI_BLADES_FULL_SPEED hst4_hospitalchopper MARK_MODEL_AS_NO_LONGER_NEEDED POLMAV // write_debug spawnchopper hst4_spawnchopper = 1 ENDIF ENDIF IF hst4_nextprompt = 2 IF timera > 12000 IF hst4_clockfix = 0 CLEAR_PRINTS CLEAR_THIS_PRINT HEI4_01 PRINT_NOW HEI4_11 8000 1 // The packer truck is circling the outskirts of town DISPLAY_ONSCREEN_TIMER_WITH_STRING hst4_deliverytimer TIMER_DOWN HEI4_12 hst4_clockfix = 1 hst4_nextprompt = 3 timera = 0 ENDIF ENDIF ENDIF IF hst4_nextprompt = 3 IF timera > 10000 // PRINT_NOW HEI4_14 8000 1 hst4_nextprompt = 4 ENDIF ENDIF IF hst4_deliverytimer < 1 CLEAR_PRINTS PRINT_NOW HEI4_10 8000 1 GOTO mission_hst4_failed ENDIF IF hst4_finalcut = 0 IF NOT IS_CAR_DEAD bike_truck // SET_CAR_COORDINATES bike_truck 0.0 0.0 40.0 // SET_CAR_HEADING bike_truck 0.0 IF LOCATE_CAR_2D bike_truck gotos_x[v] gotos_y[v] 15.0 15.0 0 ++ v IF v = 17 //5 v = 0 ENDIF //REMOVE_BLIP blip //ADD_BLIP_FOR_COORD gotos_x[v] gotos_y[v] 6.0 blip //changed //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //CAR_GOTO_COORDINATES bike_truck gotos_x[v] gotos_y[v] 6.0 // IF NOT IS_CHAR_DEAD truck_driver CLEAR_CHAR_TASKS truck_driver TASK_CAR_DRIVE_TO_COORD truck_driver bike_truck gotos_x[v] gotos_y[v] 8.0 15.0 MODE_NORMAL FALSE DRIVINGMODE_SLOWDOWNFORCARS ENDIF //WRITE_DEBUG_WITH_INT gtvec v ENDIF m = 0 WHILE m < 4 IF bike_attached_flag[m] < 2 IF NOT IS_CAR_DEAD motorbike[m] IF IS_CHAR_IN_CAR scplayer motorbike[m] IF bike_attached_flag[m] = 0 a = 0 WHILE a < 4 REMOVE_BLIP motorbike_blip[a] ++ a ENDWHILE REMOVE_BLIP mission_blip ADD_BLIP_FOR_CAR bike_truck mission_blip //hst4_packerblip = 1 SET_BLIP_AS_FRIENDLY mission_blip TRUE //CHANGE_BLIP_COLOUR mission_blip YELLOW //Steve T. IF NOT bikes_attached = 4 PRINT_NOW HEI4_02 8000 1//Drive the bike onto the back of the Packer. ENDIF bike_attached_flag[m] = 1 GOSUB hst4_onwhichbike_check ENDIF IF bike_attached_flag[m] = 1 //GET_OFFSET_FROM_CAR_IN_WORLD_COORDS bike_truck -1.3 -6.2 -0.8 x y z //GET_OFFSET_FROM_CAR_IN_WORLD_COORDS bike_truck 1.3 -6.2 2.6 x2 y2 z2 IF bikes_attached < 2 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS bike_truck -1.3 -3.2 -0.8 x y z //was -7.2 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS bike_truck 1.3 -3.2 2.6 x2 y2 z2 // was -7.2 ENDIF IF bikes_attached > 1 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS bike_truck -1.3 -8.2 -0.8 x y z //was -7.2 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS bike_truck 1.3 -8.2 2.6 x2 y2 z2 // was -7.2 ENDIF IF LOCATE_CHAR_IN_CAR_CAR_2D scplayer bike_truck 30.0 30.0 0 PRINT_NOW HEI4_13 8000 1//Drive the bike onto the back of the Packer. ENDIF IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_3D scplayer x y z x2 y2 z2 4.8 0 // was 6.8 0 LVAR_FLOAT bike_truck_speed players_speed GET_CAR_SPEED bike_truck bike_truck_speed GET_CAR_SPEED motorbike[m] players_speed bike_truck_speed += 10.0 //10.0 IF players_speed < bike_truck_speed bike_truck_speed -= 10.0//20.0 IF players_speed > bike_truck_speed ATTACH_CAR_TO_CAR motorbike[m] bike_truck bike_attached_x bike_attached_y bike_attached_z 16.0 0.0 0.0 FREEZE_CAR_POSITION motorbike[m] TRUE IF bikes_attached = 1 OR bikes_attached = 3 bike_attached_y -= 2.5 bike_attached_z -= 0.7 ENDIF IF bike_attached_x = 0.6 bike_attached_x = -0.6 ELSE bike_attached_x = 0.6 ENDIF // ++ bikes_attached //bikes_attached = 4 // Test area IF bikes_attached < 4 ATTACH_CAMERA_TO_VEHICLE_LOOK_AT_VEHICLE bike_truck 3.0 5.0 2.2 bike_truck 0.0 JUMP_CUT //3.0 6.0 2.0 //ATTACH_CAMERA_TO_VEHICLE_LOOK_AT_VEHICLE bike_truck 4.0 -6.0 2.5 bike_truck 0.0 JUMP_CUT bike_camera = 1 //FREEZE_CHAR_POSITION scplayer TRUE SET_PLAYER_CONTROL player1 OFF CLEAR_PRINTS timerb = 0 ENDIF truck_speed += 10.0 bike_attached_flag[m] = 2 REMOVE_BLIP mission_blip CLEAR_THIS_PRINT HEI4_02 //WRITE_DEBUG_WITH_INT ba bikes_attached // IF bikes_attached = 4 // CLEAR_PRINTS // // ENDIF // IF bikes_attached = 1 // CLEAR_PRINTS // PRINT_NOW HEI4_06 5000 1//First Bike Delivered! Jump off and go steal the next bike. // ENDIF // IF bikes_attached = 2 // CLEAR_PRINTS // PRINT_NOW HEI4_08 5000 1//Second Bike Delivered! Jump off and go steal the next bike. // ENDIF // IF bikes_attached = 3 // CLEAR_PRINTS // PRINT_NOW HEI4_09 5000 1//Third Bike Delivered! Jump off and go steal the next bike. // timera = 0 // ENDIF a = 0 WHILE a < 4 IF bike_attached_flag[a] < 2 IF motorbike_created[a] = 1 REMOVE_BLIP motorbike_blip[a] IF NOT IS_CAR_DEAD motorbike[a] ADD_BLIP_FOR_CAR motorbike[a] motorbike_blip[a] CHANGE_BLIP_COLOUR motorbike_blip[a] GREEN ENDIF ELSE ADD_BLIP_FOR_COORD motorbike_x[a] motorbike_y[a] motorbike_z[a] motorbike_blip[a] ENDIF CHANGE_BLIP_COLOUR motorbike_blip[a] GREEN //SET_BLIP_AS_FRIENDLY motorbike_blip[a] FALSE /* IF bikes_attached = 4 CLEAR_PRINTS PRINT_NOW HEI4_07 5000 1//All Bikes Delivered! Jump off. ENDIF IF bikes_attached = 1 CLEAR_PRINTS PRINT_NOW HEI4_06 5000 1//First Bike Delivered! Jump off and go steal the next bike. ENDIF IF bikes_attached = 2 CLEAR_PRINTS PRINT_NOW HEI4_08 5000 1//Second Bike Delivered! Jump off and go steal the next bike. ENDIF IF bikes_attached = 3 CLEAR_PRINTS PRINT_NOW HEI4_09 5000 1//Third Bike Delivered! Jump off and go steal the next bike. timera = 0 ENDIF */ ENDIF ++ a ENDWHILE ENDIF ENDIF ENDIF ENDIF ELSE IF bike_attached_flag[m] = 1 a = 0 WHILE a < 4 IF bike_attached_flag[a] = 1 bike_attached_flag[a] = 0 ENDIF IF bike_attached_flag[a] < 2 REMOVE_BLIP motorbike_blip[a] IF motorbike_created[a] = 1 if not is_car_dead motorbike[a] ADD_BLIP_FOR_CAR motorbike[a] motorbike_blip[a] CHANGE_BLIP_COLOUR motorbike_blip[a] GREEN else PRINT_NOW HEI4_04 8000 1//~r~You destroyed a bike you needed to steal. GOTO mission_hst4_failed endif ELSE ADD_BLIP_FOR_COORD motorbike_x[a] motorbike_y[a] motorbike_z[a] motorbike_blip[a] ENDIF remove_blip mission_blip CHANGE_BLIP_COLOUR motorbike_blip[a] GREEN PRINT_NOW HEI4_03 5000 1//You need to steal a cop bike. ENDIF ++ a ENDWHILE // IF bike_attached_flag[m] = 1 // ADD_BLIP_FOR_CAR motorbike[m] motorbike_blip[m] // bike_attached_flag[m] = 0 // ENDIF ENDIF // IF bike_attached_flag[m] = 0 // IF LOCATE_CHAR_ANY_MEANS_2D SCPLAYER COPBIKE_X[M] COPBIKE_Y[M] // ENDIF ENDIF ELSE IF motorbike_created[m] = 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer motorbike_x[m] motorbike_y[m] 200.0 200.0 0 LVAR_INT motorbike[4] motorbike_blip[4] CLEAR_AREA motorbike_x[m] motorbike_y[m] motorbike_z[m] 40.0 FALSE CREATE_CAR COPBIKE motorbike_x[m] motorbike_y[m] motorbike_z[m] motorbike[m] SET_CAR_HEADING motorbike[m] motorbike_h[m] SET_CAN_BURST_CAR_TYRES motorbike[m] FALSE SET_LOAD_COLLISION_FOR_CAR_FLAG motorbike[m] FALSE IF NOT DOES_BLIP_EXIST mission_blip //fix for blip appearing when heading for packer REMOVE_BLIP motorbike_blip[m] ADD_BLIP_FOR_CAR motorbike[m] motorbike_blip[m] //write_debug check1 CHANGE_BLIP_COLOUR motorbike_blip[m] GREEN ENDIF motorbike_created[m] = 1 ENDIF ELSE PRINT_NOW HEI4_04 5000 1//~r~You destroyed a bike you needed to steal. GOTO mission_hst4_failed ENDIF ENDIF ENDIF ++ m ENDWHILE IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer bike_truck 120.0 120.0 0 SET_CAR_CRUISE_SPEED bike_truck truck_speed ELSE SET_CAR_CRUISE_SPEED bike_truck 15.0 //15.0 ENDIF IF IS_CAR_STUCK_ON_ROOF bike_truck OR IS_CAR_STUCK bike_truck IF NOT IS_CAR_ON_SCREEN bike_truck //GET_CAR_COORDINATES bike_truck x y z //z += 10.0 //SET_CAR_COORDINATES bike_truck x y z //GET_CAR_LAST_ROUTE_COORDS bike_truck x y z heading IF NOT IS_POINT_ON_SCREEN gotos_x[v] gotos_y[v] 6.0 4.0 //IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY x y z 4.0 4.0 3.0 CLEAR_AREA gotos_x[v] gotos_y[v] 7.0 10.0 FALSE SET_CAR_COORDINATES bike_truck gotos_x[v] gotos_y[v] 10.0 // WRITE_DEBUG_WITH_INT stuck v SET_CAR_HEADING bike_truck heading //CAR_GOTO_COORDINATES bike_truck gotos_x[v] gotos_y[v] 6.0 //ENDIF ENDIF ENDIF ENDIF ELSE PRINT_NOW HEI4_05 5000 1//PACKER DESTROYED! IF NOT IS_CHAR_DEAD truck_thumb DELETE_CHAR truck_thumb ENDIF GOTO mission_hst4_failed ENDIF ENDIF IF hst4_finalcut = 0 IF bikes_attached = 4 //should be 4 //IF NOT IS_CHAR_IN_ANY_CAR scplayer CLEAR_ONSCREEN_TIMER hst4_deliverytimer hst4_finalcut = 1 ENDIF ENDIF IF hst4_finalcut = 1 //GOTO mission_hst4_passed DO_FADE 1000 FADE_OUT //LOAD_SCENE 1009.7808 1929.3772 9.6719 //WAIT 0 CLEAR_PRINTS CLEAR_ONSCREEN_TIMER hst4_deliverytimer SET_PLAYER_CONTROL player1 OFF CLEAR_WANTED_LEVEL player1 WHILE GET_FADING_STATUS WAIT 0 ENDWHILE TASK_JUMP scplayer FALSE //FREEZE_CHAR_POSITION scplayer FALSE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer LOAD_SCENE_IN_DIRECTION 1009.7808 1929.3772 9.6719 122.0 WAIT 0 SWITCH_WIDESCREEN ON hst4_finalcut = 10 // SET_FIXED_CAMERA_POSITION 1016.6241 1905.8065 12.0470 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 1015.8773 1905.1543 11.9165 JUMP_CUT SET_FIXED_CAMERA_POSITION 1022.8307 1899.5132 18.6192 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1021.9608 1899.5178 18.126 JUMP_CUT IF NOT IS_CHAR_DEAD truck_driver IF NOT IS_CAR_DEAD bike_truck // TASK_JUMP scplayer FALSE CLEAR_CHAR_TASKS truck_driver CLEAR_AREA 1009.9940 1880.0204 150.0 150.0 FALSE SET_CAR_COORDINATES bike_truck 1009.9940 1870.0204 9.6797 SET_CAR_HEADING bike_truck 2.3 ATTACH_CHAR_TO_CAR scplayer bike_truck 0.5 -10.0 -0.3 FACING_BACK 10.0 WEAPONTYPE_UNARMED //SET_CHAR_COORDINATES scplayer 1010.4019 1917.8384 9.6797 SET_CHAR_HEADING scplayer 300.0 TASK_CAR_DRIVE_TO_COORD truck_driver bike_truck 1009.7808 1900.3772 9.6719 15.0 MODE_NORMAL FALSE DRIVINGMODE_SLOWDOWNFORCARS ENDIF ENDIF CLEAR_AREA 1009.9940 1910.0204 150.0 150.0 FALSE DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 CLEAR_AREA 1009.9940 1910.0204 150.0 150.0 FALSE ENDWHILE CLEAR_AREA 1009.9940 1910.0204 150.0 150.0 FALSE // SET_PLAYER_CONTROL player1 ON //ENDIF ENDIF IF hst4_finalcut = 10 CLEAR_AREA 1009.9940 1910.0204 150.0 150.0 FALSE IF NOT IS_CAR_DEAD bike_truck IF NOT IS_CHAR_DEAD truck_driver IF IS_CAR_STOPPED bike_truck hst4_finalcut = 20 hst4_finalcutskip = 1 DETACH_CHAR_FROM_CAR scplayer OPEN_SEQUENCE_TASK hst4_endseq TASK_JUMP -1 TRUE // TASK_GO_STRAIGHT_TO_COORD -1 1013.4575 1914.2784 9.8125 PEDMOVE_RUN 10000 TASK_GO_STRAIGHT_TO_COORD -1 1014.0134 1902.3248 9.8125 PEDMOVE_RUN 10000 TASK_TURN_CHAR_TO_FACE_CHAR -1 truck_driver CLOSE_SEQUENCE_TASK hst4_endseq PERFORM_SEQUENCE_TASK scplayer hst4_endseq CLEAR_SEQUENCE_TASK hst4_endseq TIMERA = 0 // hst4_convo_counter = 1 ENDIF ENDIF ENDIF ENDIF IF hst4_convo_counter > 0 IF hst4_audio_underway = 0 SWITCH hst4_convo_counter CASE 1 hst4_counter = 1 hst4_convo_counter = 2 BREAK CASE 2 hst4_counter = 2 hst4_convo_counter = 3 BREAK CASE 3 hst4_counter = 3 hst4_convo_counter = 4 BREAK CASE 4 hst4_counter = 0 hst4_convo_counter = 0 BREAK ENDSWITCH // sw7_audio_underway = 1 ENDIF ENDIF IF hst4_finalcut = 20 // IF timera > 500 // hst4_finalcutskip = 1 // ENDIF CLEAR_AREA 1009.9940 1910.0204 150.0 150.0 FALSE IF timera > 3000 hst4_convo_counter = 1 //PRINT HEI4_30 6000 1 hst4_finalcut = 30 timera = 0 ENDIF ENDIF IF hst4_finalcut = 30 CLEAR_AREA 1009.9940 1910.0204 150.0 150.0 FALSE IF timera > 3000 IF NOT IS_CHAR_DEAD truck_driver IF NOT IS_CAR_DEAD bike_truck hst4_finalcut = 40 TASK_CAR_DRIVE_TO_COORD truck_driver bike_truck 1009.7808 2000.3772 9.6719 15.0 MODE_NORMAL FALSE DRIVINGMODE_SLOWDOWNFORCARS timera = 0 ENDIF ENDIF ENDIF ENDIF IF hst4_finalcut = 40 CLEAR_AREA 1009.9940 1910.0204 150.0 150.0 FALSE IF timera > 500 IF NOT IS_CHAR_DEAD truck_driver TASK_LOOK_AT_CHAR scplayer truck_driver -2 hst4_finalcut = 45 timera = 0 ENDIF ENDIF ENDIF IF hst4_finalcut = 45 CLEAR_AREA 1009.9940 1910.0204 150.0 150.0 FALSE IF timera > 3000 hst4_finalcut = 50 ENDIF ENDIF IF hst4_finalcut = 50 hst4_finalcutskip = 0 DELETE_CAR motorbike[0] DELETE_CAR motorbike[1] DELETE_CAR motorbike[2] DELETE_CAR motorbike[3] DELETE_CAR bike_truck DELETE_CHAR truck_driver DELETE_CHAR truck_thumb SWITCH_WIDESCREEN OFF CLEAR_CHAR_TASKS scplayer SET_CHAR_COORDINATES scplayer 1014.0134 1902.3248 9.8125 SET_CHAR_HEADING scplayer 59.0 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 ON CLEAR_PRINTS GOTO mission_hst4_passed ENDIF IF hst4_finalcut = 0 attached_bikeindex = 0 WHILE attached_bikeindex < 4 IF bike_attached_flag[attached_bikeindex] = 2 IF IS_CAR_DEAD motorbike[attached_bikeindex] PRINT_NOW HEI4_04 5000 1//~r~You destroyed a bike you needed to steal. GOTO mission_hst4_failed ENDIF ENDIF attached_bikeindex ++ ENDWHILE ENDIF // Artificial setpiece cop checks Use does_char_exist check in cas player shoots someone with sniper rifle IF hst4_pizzasetpiece = 0 IF DOES_CHAR_EXIST hst4_pizzacop IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR hst4_pizzacop scplayer ALTER_WANTED_LEVEL_NO_DROP player1 2 GOSUB hst4_pizzadrunkbustsp IF NOT IS_CHAR_DEAD hst4_pizzacop hst4_pizzasetpiece = 1 CLEAR_CHAR_TASKS hst4_pizzacop TASK_KILL_CHAR_ON_FOOT hst4_pizzacop scplayer ENDIF IF NOT IS_CHAR_DEAD hst4_pizzadrunk MARK_CHAR_AS_NO_LONGER_NEEDED hst4_pizzadrunk ENDIF //GOSUB hst4_choppertakeoff ENDIF IF NOT IS_CHAR_DEAD hst4_pizzacop IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer hst4_pizzacop 25.0 25.0 FALSE GOSUB hst4_pizzadrunkbustsp ENDIF ENDIF ENDIF IF DOES_CHAR_EXIST hst4_pizzadrunk IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR hst4_pizzadrunk scplayer ALTER_WANTED_LEVEL_NO_DROP player1 1 //GOSUB hst4_pizzadrunkbustsp IF NOT IS_CHAR_DEAD hst4_pizzadrunk TASK_SMART_FLEE_CHAR hst4_pizzadrunk scplayer 100.0 -1 ENDIF IF NOT IS_CHAR_DEAD hst4_pizzacop hst4_pizzasetpiece = 1 CLEAR_CHAR_TASKS hst4_pizzacop TASK_KILL_CHAR_ON_FOOT hst4_pizzacop scplayer ENDIF //GOSUB hst4_choppertakeoff ENDIF ENDIF ENDIF IF hst4_hotelsetpiece = 0 IF DOES_CHAR_EXIST hst4_hotelcop IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR hst4_hotelcop scplayer ALTER_WANTED_LEVEL_NO_DROP player1 1 GOSUB hst4_hotelthugsleavesp IF NOT IS_CHAR_DEAD hst4_hotelcop hst4_hotelsetpiece = 1 CLEAR_CHAR_TASKS hst4_hotelcop TASK_KILL_CHAR_ON_FOOT hst4_hotelcop scplayer ENDIF IF NOT IS_CHAR_DEAD hst4_hotelthug1 MARK_CHAR_AS_NO_LONGER_NEEDED hst4_hotelthug1 ENDIF IF NOT IS_CHAR_DEAD hst4_hotelthug2 MARK_CHAR_AS_NO_LONGER_NEEDED hst4_hotelthug2 ENDIF IF NOT IS_CHAR_DEAD hst4_hotelthug3 MARK_CHAR_AS_NO_LONGER_NEEDED hst4_hotelthug3 ENDIF //GOSUB hst4_choppertakeoff ENDIF IF NOT IS_CHAR_DEAD hst4_hotelcop IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer hst4_hotelcop 30.0 30.0 FALSE GOSUB hst4_hotelthugsleavesp ENDIF ENDIF ENDIF IF DOES_CHAR_EXIST hst4_hotelthug1 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR hst4_hotelthug1 scplayer IF NOT IS_CHAR_DEAD hst4_hotelcop hst4_hotelsetpiece = 1 CLEAR_CHAR_TASKS hst4_hotelcop TASK_KILL_CHAR_ON_FOOT hst4_hotelcop scplayer ENDIF //GOSUB hst4_pizzadrunkbustsp IF NOT IS_CHAR_DEAD hst4_hotelthug1 MARK_CHAR_AS_NO_LONGER_NEEDED hst4_hotelthug1 ENDIF IF NOT IS_CHAR_DEAD hst4_hotelthug2 MARK_CHAR_AS_NO_LONGER_NEEDED hst4_hotelthug2 ENDIF IF NOT IS_CHAR_DEAD hst4_hotelthug3 MARK_CHAR_AS_NO_LONGER_NEEDED hst4_hotelthug3 ENDIF //GOSUB hst4_choppertakeoff ENDIF ENDIF IF DOES_CHAR_EXIST hst4_hotelthug2 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR hst4_hotelthug2 scplayer IF NOT IS_CHAR_DEAD hst4_hotelcop hst4_hotelsetpiece = 1 CLEAR_CHAR_TASKS hst4_hotelcop TASK_KILL_CHAR_ON_FOOT hst4_hotelcop scplayer ENDIF //GOSUB hst4_pizzadrunkbustsp IF NOT IS_CHAR_DEAD hst4_hotelthug1 MARK_CHAR_AS_NO_LONGER_NEEDED hst4_hotelthug1 ENDIF IF NOT IS_CHAR_DEAD hst4_hotelthug2 MARK_CHAR_AS_NO_LONGER_NEEDED hst4_hotelthug2 ENDIF IF NOT IS_CHAR_DEAD hst4_hotelthug3 MARK_CHAR_AS_NO_LONGER_NEEDED hst4_hotelthug3 ENDIF //GOSUB hst4_choppertakeoff ENDIF ENDIF IF DOES_CHAR_EXIST hst4_hotelthug3 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR hst4_hotelthug3 scplayer IF NOT IS_CHAR_DEAD hst4_hotelcop hst4_hotelsetpiece = 1 CLEAR_CHAR_TASKS hst4_hotelcop TASK_KILL_CHAR_ON_FOOT hst4_hotelcop scplayer ENDIF //GOSUB hst4_pizzadrunkbustsp IF NOT IS_CHAR_DEAD hst4_hotelthug1 MARK_CHAR_AS_NO_LONGER_NEEDED hst4_hotelthug1 ENDIF IF NOT IS_CHAR_DEAD hst4_hotelthug2 MARK_CHAR_AS_NO_LONGER_NEEDED hst4_hotelthug2 ENDIF IF NOT IS_CHAR_DEAD hst4_hotelthug3 MARK_CHAR_AS_NO_LONGER_NEEDED hst4_hotelthug3 ENDIF //GOSUB hst4_choppertakeoff ENDIF ENDIF ENDIF IF hst4_stationsetpiece = 0 IF DOES_CHAR_EXIST hst4_staircop IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR hst4_staircop scplayer ALTER_WANTED_LEVEL_NO_DROP player1 2 GOSUB hst4_staircheck ENDIF ENDIF IF DOES_CHAR_EXIST hst4_larrycop IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR hst4_larrycop scplayer ALTER_WANTED_LEVEL_NO_DROP player1 2 GOSUB hst4_staircheck ENDIF ENDIF /* IF NOT IS_CAR_DEAD hst4_stationcar IF HAS_CAR_BEEN_DAMAGED_BY_CHAR hst4_stationcar scplayer GOSUB hst4_staircheck ENDIF IF IS_CHAR_IN_CAR scplayer hst4_stationcar GOSUB hst4_staircheck ENDIF ENDIF */ ENDIF IF hst4_hospitalsetpiece = 0 IF DOES_CHAR_EXIST hst4_hospitalcop IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR hst4_hospitalcop scplayer ALTER_WANTED_LEVEL_NO_DROP player1 2 GOSUB hst4_choppertakeoffsp IF NOT IS_CHAR_DEAD hst4_hospitalcop hst4_hospitalsetpiece = 1 CLEAR_CHAR_TASKS hst4_hospitalcop TASK_KILL_CHAR_ON_FOOT hst4_hospitalcop scplayer ENDIF //GOSUB hst4_choppertakeoff ENDIF IF NOT IS_CHAR_DEAD hst4_hospitalcop IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer hst4_hospitalcop 35.0 35.0 FALSE GOSUB hst4_choppertakeoffsp ENDIF ENDIF ENDIF ENDIF // New area for testing IF hst4_hospitalwanted = 0 IF DOES_CHAR_EXIST hst4_hospitalcop IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR hst4_hospitalcop scplayer ALTER_WANTED_LEVEL_NO_DROP player1 2 hst4_hospitalwanted = 1 ENDIF ENDIF ENDIF IF hst4_hotelwanted = 0 IF DOES_CHAR_EXIST hst4_hotelcop IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR hst4_hotelcop scplayer ALTER_WANTED_LEVEL_NO_DROP player1 2 hst4_hotelwanted = 1 ENDIF ENDIF ENDIF IF hst4_pizzawanted = 0 IF DOES_CHAR_EXIST hst4_pizzacop IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR hst4_pizzacop scplayer ALTER_WANTED_LEVEL_NO_DROP player1 2 hst4_pizzawanted = 1 ENDIF ENDIF ENDIF IF hst4_larrywanted = 0 IF DOES_CHAR_EXIST hst4_larrycop IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR hst4_larrycop scplayer ALTER_WANTED_LEVEL_NO_DROP player1 2 hst4_larrywanted = 1 ENDIF ENDIF ENDIF IF hst4_stairwanted = 0 IF DOES_CHAR_EXIST hst4_staircop IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR hst4_staircop scplayer ALTER_WANTED_LEVEL_NO_DROP player1 2 hst4_stairwanted = 1 ENDIF ENDIF ENDIF //IF hst4_choppertakeoff = 1 // IF NOT IS_CHAR_DEAD hst4_hospitalcop // //CLEAR_CHAR_TASKS hst4_hospitalcop // //TASK_KILL_CHAR_ON_FOOT hst4_hospitalcop scplayer // hst4_choppertakeoff = 2 // ENDIF //ENDIF IF hst4_choppertakeoff = 1 // write_debug to IF NOT IS_CAR_DEAD hst4_hospitalchopper IF NOT LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer hst4_hospitalchopper 200.0 200.0 200.0 FALSE // WRITE_DEBUG chopgone hst4_choppertakeoff = 2 MARK_CHAR_AS_NO_LONGER_NEEDED hst4_hospitalpilot MARK_CAR_AS_NO_LONGER_NEEDED hst4_hospitalchopper ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD hst4_hospitalcop //1 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer hst4_hospitalcop 120.0 120.0 120.0 FALSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_hospitalcop FALSE ELSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_hospitalcop TRUE ENDIF ENDIF IF NOT IS_CHAR_DEAD hst4_hotelcop //2 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer hst4_hotelcop 120.0 120.0 120.0 FALSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_hotelcop FALSE ELSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_hotelcop TRUE ENDIF ENDIF //IF NOT IS_CHAR_DEAD hst4_hospitalpilot //3 // // IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer hst4_hospitalpilot 70.0 70.0 70.0 FALSE // FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_hospitalpilot FALSE // ELSE // FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_hospitalpilot TRUE // ENDIF // //ENDIF IF hst4_hotelthugsleave = 0 IF NOT IS_CHAR_DEAD hst4_hotelthug1 //4 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer hst4_hotelthug1 150.0 150.0 150.0 FALSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_hotelthug1 FALSE ELSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_hotelthug1 TRUE ENDIF ENDIF IF NOT IS_CHAR_DEAD hst4_hotelthug2 //5 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer hst4_hotelthug2 150.0 150.0 150.0 FALSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_hotelthug2 FALSE ELSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_hotelthug2 TRUE ENDIF ENDIF IF NOT IS_CHAR_DEAD hst4_hotelthug3 //6 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer hst4_hotelthug3 150.0 150.0 150.0 FALSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_hotelthug3 FALSE ELSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_hotelthug3 TRUE ENDIF ENDIF ENDIF IF hst4_hotelthugsleave = 1 IF NOT IS_CHAR_DEAD hst4_hotelthug1 //4 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer hst4_hotelthug1 120.0 120.0 150.0 FALSE MARK_CHAR_AS_NO_LONGER_NEEDED hst4_hotelthug1 MARK_CAR_AS_NO_LONGER_NEEDED hst4_hotelbike1 // write_debug ht1 ENDIF ENDIF IF NOT IS_CHAR_DEAD hst4_hotelthug2 //5 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer hst4_hotelthug2 120.0 120.0 150.0 FALSE MARK_CHAR_AS_NO_LONGER_NEEDED hst4_hotelthug2 MARK_CAR_AS_NO_LONGER_NEEDED hst4_hotelbike2 // write_debug ht2 ENDIF ENDIF IF NOT IS_CHAR_DEAD hst4_hotelthug3 //6 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer hst4_hotelthug3 120.0 120.0 150.0 FALSE MARK_CHAR_AS_NO_LONGER_NEEDED hst4_hotelthug3 MARK_CAR_AS_NO_LONGER_NEEDED hst4_hotelbike3 // write_debug ht3 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD hst4_staircop //7 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer hst4_staircop 120.0 120.0 120.0 FALSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_staircop FALSE ELSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_staircop TRUE ENDIF ENDIF IF NOT IS_CHAR_DEAD hst4_larrycop //8 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer hst4_larrycop 120.0 120.0 120.0 FALSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_larrycop FALSE ELSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_larrycop TRUE ENDIF ENDIF IF NOT IS_CHAR_DEAD hst4_pizzacop //9 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer hst4_pizzacop 120.0 120.0 120.0 FALSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_pizzacop FALSE ELSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_pizzacop TRUE ENDIF ENDIF IF NOT IS_CHAR_DEAD hst4_pizzadrunk //10 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer hst4_pizzadrunk 120.0 120.0 120.0 FALSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_pizzadrunk FALSE ELSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION hst4_pizzadrunk TRUE ENDIF ENDIF //IF NOT IS_CHAR_DEAD truck_driver //11 // IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer truck_driver 70.0 70.0 70.0 FALSE // FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION truck_driver FALSE // ELSE // FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION truck_driver TRUE // ENDIF // //ENDIF GOTO mission_hst4_loop hst4_onwhichbike_check: //WRITE_DEBUG_WITH_INT playeronbike m IF m = 0 IF hst4_pizzasetpiece= 0 IF NOT IS_CHAR_DEAD hst4_pizzacop CLEAR_CHAR_TASKS hst4_pizzacop OPEN_SEQUENCE_TASK hst4_pizzacopseq TASK_GO_STRAIGHT_TO_COORD -1 2785.7888 1439.4536 9.5579 PEDMOVE_RUN 10000 //DROP_OBJECT hst4_pizzacop TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK hst4_pizzacopseq PERFORM_SEQUENCE_TASK hst4_pizzacop hst4_pizzacopseq CLEAR_SEQUENCE_TASK hst4_pizzacopseq ENDIF IF NOT IS_CHAR_DEAD hst4_pizzadrunk CLEAR_CHAR_TASKS hst4_pizzadrunk MARK_CHAR_AS_NO_LONGER_NEEDED hst4_pizzadrunk TASK_SMART_FLEE_CHAR hst4_pizzadrunk scplayer 100.0 -1 ENDIF hst4_pizzasetpiece = 1 //PRINT HEI4_20 6000 1 ALTER_WANTED_LEVEL_NO_DROP player1 1 // Pizza eating cop has just seen player nick his bike ENDIF ENDIF IF m = 1 IF hst4_hotelsetpiece= 0 IF NOT IS_CHAR_DEAD hst4_hotelcop CLEAR_CHAR_TASKS hst4_hotelcop OPEN_SEQUENCE_TASK hst4_hotelcopseq TASK_GO_STRAIGHT_TO_COORD -1 2646.5820 2348.1704 9.6797 PEDMOVE_RUN 10000 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK hst4_hotelcopseq PERFORM_SEQUENCE_TASK hst4_hotelcop hst4_hotelcopseq CLEAR_SEQUENCE_TASK hst4_hotelcopseq // PRINT HEI4_22 6000 1 ENDIF hst4_hotelsetpiece = 1 //PRINT HEI4_20 6000 1 ALTER_WANTED_LEVEL_NO_DROP player1 1 // Cop has just seen player nick bike from the front of the hotel MARK_CAR_AS_NO_LONGER_NEEDED hst4_hotelbike1 MARK_CAR_AS_NO_LONGER_NEEDED hst4_hotelbike2 MARK_CAR_AS_NO_LONGER_NEEDED hst4_hotelbike3 ENDIF ENDIF IF m = 2 IF hst4_stationsetpiece= 0 IF NOT IS_CHAR_DEAD hst4_staircop CLEAR_CHAR_TASKS hst4_staircop OPEN_SEQUENCE_TASK hst4_staircopseq //TASK_GO_STRAIGHT_TO_COORD -1 2322.5352 2450.7109 9.8203 PEDMOVE_RUN 10000 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK hst4_staircopseq PERFORM_SEQUENCE_TASK hst4_staircop hst4_staircopseq CLEAR_SEQUENCE_TASK hst4_staircopseq ENDIF IF NOT IS_CHAR_DEAD hst4_larrycop CLEAR_CHAR_TASKS hst4_larrycop OPEN_SEQUENCE_TASK hst4_larrycopseq TASK_GO_STRAIGHT_TO_COORD -1 2311.0042 2436.7639 9.8203 PEDMOVE_RUN 10000 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK hst4_larrycopseq PERFORM_SEQUENCE_TASK hst4_larrycop hst4_larrycopseq CLEAR_SEQUENCE_TASK hst4_larrycopseq //PRINT HEI4_21 6000 1 ENDIF hst4_stationsetpiece = 1 //IF NOT IS_CAR_DEAD hst4_stationcar //IF IS_CHAR_IN_CAR scplayer hst4_stationcar //ALTER_WANTED_LEVEL_NO_DROP player1 1 // Cops have seen player nick bike from the front of the police station //ELSE ALTER_WANTED_LEVEL_NO_DROP player1 1 //ENDIF //ENDIF ENDIF ENDIF IF m = 3 IF hst4_hospitalsetpiece= 0 IF NOT IS_CHAR_DEAD hst4_hospitalcop CLEAR_CHAR_TASKS hst4_hospitalcop OPEN_SEQUENCE_TASK hst4_hospitalcopseq TASK_GO_STRAIGHT_TO_COORD -1 1593.2894 1836.8081 9.8281 PEDMOVE_RUN 10000 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK hst4_hospitalcopseq PERFORM_SEQUENCE_TASK hst4_hospitalcop hst4_hospitalcopseq CLEAR_SEQUENCE_TASK hst4_hospitalcopseq //PRINT HEI4_22 6000 1 ENDIF hst4_hospitalsetpiece = 1 // PRINT HEI4_22 6000 1 ALTER_WANTED_LEVEL_NO_DROP player1 1 // Cops have seen player nick bike from the front of the hospital ENDIF ENDIF RETURN hst4_staircheck: // called if the player gets cocky with the cops outside the station IF NOT IS_CHAR_DEAD hst4_staircop CLEAR_CHAR_TASKS hst4_staircop TASK_KILL_CHAR_ON_FOOT hst4_staircop scplayer ENDIF IF NOT IS_CHAR_DEAD hst4_larrycop CLEAR_CHAR_TASKS hst4_larrycop TASK_KILL_CHAR_ON_FOOT hst4_larrycop scplayer ENDIF /* IF NOT IS_CAR_DEAD hst4_stationcar IF IS_CHAR_IN_CAR scplayer hst4_stationcar ALTER_WANTED_LEVEL_NO_DROP player1 1 // Cops have seen player nick bike from the front of the police station ELSE ALTER_WANTED_LEVEL_NO_DROP player1 1 ENDIF ENDIF */ ALTER_WANTED_LEVEL_NO_DROP player1 1 hst4_stationsetpiece = 1 //set so that we don't call sequences for the player getting on the bike afterwards. RETURN hst4_choppertakeoffsp: IF hst4_choppertakeoff = 0 IF NOT IS_CHAR_DEAD hst4_hospitalpilot IF NOT IS_CAR_DEAD hst4_hospitalchopper SET_CAR_CRUISE_SPEED hst4_hospitalchopper 100.0 CLOSE_ALL_CAR_DOORS hst4_hospitalchopper HELI_GOTO_COORDS hst4_hospitalchopper -2303.6272 2105.2903 200.0 200.0 200.0 // IF NOT IS_CAR_DEAD motorbike[3] // IF NOT IS_CHAR_DEAD hst4_hospitalcop // CLEAR_CHAR_TASKS hst4_hospitalcop // OPEN_SEQUENCE_TASK hst4_hospitalcop2seq // TASK_ENTER_CAR_AS_DRIVER -1 motorbike[3] 6000 // TASK_CAR_DRIVE_TO_COORD -1 motorbike[3] 1570.7115 1834.1353 9.6969 15.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS // //TASK_CAR_DRIVE_TO_COORD -1 motorbike[3] 1570.7115 1834.1353 9.6969 15.0 MODE_NORMAL FALSE DRIVINGMODE_SLOWDOWNFORCARS // TASK_CAR_DRIVE_WANDER -1 motorbike[3] 15.0 DRIVINGMODE_AVOIDCARS // // CLOSE_SEQUENCE_TASK hst4_hospitalcop2seq // PERFORM_SEQUENCE_TASK hst4_hospitalcop hst4_hospitalcop2seq // CLEAR_SEQUENCE_TASK hst4_hospitalcop2seq // SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE hst4_hospitalcop KNOCKOFFBIKE_EASY // // write_debug pish // // ENDIF // ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD motorbike[3] IF NOT IS_CHAR_DEAD hst4_hospitalcop CLEAR_CHAR_TASKS hst4_hospitalcop OPEN_SEQUENCE_TASK hst4_hospitalcop2seq TASK_ENTER_CAR_AS_DRIVER -1 motorbike[3] 6000 TASK_CAR_DRIVE_TO_COORD -1 motorbike[3] 1570.7115 1834.1353 9.6969 15.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS //TASK_CAR_DRIVE_TO_COORD -1 motorbike[3] 1570.7115 1834.1353 9.6969 15.0 MODE_NORMAL FALSE DRIVINGMODE_SLOWDOWNFORCARS TASK_CAR_DRIVE_WANDER -1 motorbike[3] 15.0 DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK hst4_hospitalcop2seq PERFORM_SEQUENCE_TASK hst4_hospitalcop hst4_hospitalcop2seq CLEAR_SEQUENCE_TASK hst4_hospitalcop2seq SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE hst4_hospitalcop KNOCKOFFBIKE_EASY // write_debug pish ENDIF ENDIF hst4_choppertakeoff = 1 ENDIF RETURN hst4_pizzadrunkbustsp: IF hst4_pizzadrunkbust = 0 IF NOT IS_CHAR_DEAD hst4_pizzacop IF NOT IS_CHAR_DEAD hst4_pizzadrunk CLEAR_CHAR_TASKS hst4_pizzadrunk OPEN_SEQUENCE_TASK hst4_pizzadrunkseq SET_SEQUENCE_TO_REPEAT hst4_pizzadrunkseq 1 TASK_GO_STRAIGHT_TO_COORD -1 2762.1167 1432.3990 9.5325 PEDMOVE_WALK 30000 TASK_FALL_AND_GET_UP -1 0 3000 TASK_GO_STRAIGHT_TO_COORD -1 2767.5371 1424.8768 9.2195 PEDMOVE_WALK 30000 CLOSE_SEQUENCE_TASK hst4_pizzadrunkseq PERFORM_SEQUENCE_TASK hst4_pizzadrunk hst4_pizzadrunkseq // CLEAR_SEQUENCE_TASK hst4_hospitalcop2seq ENDIF // ENDIF ENDIF hst4_pizzadrunkbust = 1 ENDIF RETURN hst4_hotelthugsleavesp: IF hst4_hotelthugsleave = 0 IF sfx_tyres = 2 PLAY_MISSION_AUDIO 3 // tyre screech //WRITE_DEBUG AUD ENDIF IF NOT IS_CAR_DEAD hst4_hotelbike1 IF NOT IS_CHAR_DEAD hst4_hotelthug1 CLEAR_CHAR_TASKS hst4_hotelthug1 OPEN_SEQUENCE_TASK hst4_hotelthug1seq TASK_CAR_DRIVE_TO_COORD -1 hst4_hotelbike1 2648.7437 2293.4197 9.6875 25.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_WANDER -1 hst4_hotelbike1 25.0 DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK hst4_hotelthug1seq PERFORM_SEQUENCE_TASK hst4_hotelthug1 hst4_hotelthug1seq CLEAR_SEQUENCE_TASK hst4_hotelthug1seq ENDIF ENDIF IF NOT IS_CAR_DEAD hst4_hotelbike2 IF NOT IS_CHAR_DEAD hst4_hotelthug2 CLEAR_CHAR_TASKS hst4_hotelthug2 OPEN_SEQUENCE_TASK hst4_hotelthug2seq TASK_CAR_DRIVE_TO_COORD -1 hst4_hotelbike2 2650.5659 2290.3152 9.6875 26.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_WANDER -1 hst4_hotelbike2 25.0 DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK hst4_hotelthug2seq PERFORM_SEQUENCE_TASK hst4_hotelthug2 hst4_hotelthug2seq CLEAR_SEQUENCE_TASK hst4_hotelthug2seq ENDIF ENDIF IF NOT IS_CAR_DEAD hst4_hotelbike3 IF NOT IS_CHAR_DEAD hst4_hotelthug3 CLEAR_CHAR_TASKS hst4_hotelthug3 OPEN_SEQUENCE_TASK hst4_hotelthug3seq TASK_CAR_DRIVE_TO_COORD -1 hst4_hotelbike3 2651.6809 2294.8696 9.6875 25.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_WANDER -1 hst4_hotelbike3 25.0 DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK hst4_hotelthug3seq PERFORM_SEQUENCE_TASK hst4_hotelthug3 hst4_hotelthug3seq CLEAR_SEQUENCE_TASK hst4_hotelthug3seq ENDIF ENDIF IF NOT IS_CAR_DEAD motorbike[1] IF NOT IS_CHAR_DEAD hst4_hotelcop CLEAR_CHAR_TASKS hst4_hotelcop OPEN_SEQUENCE_TASK hst4_hotelcopseq TASK_ENTER_CAR_AS_DRIVER -1 motorbike[1] 10000 TASK_CAR_DRIVE_TO_COORD -1 motorbike[1] 2647.9409 2293.2219 9.6875 21.0 MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS TASK_CAR_DRIVE_WANDER -1 motorbike[1] 17.0 DRIVINGMODE_AVOIDCARS CLOSE_SEQUENCE_TASK hst4_hotelcopseq PERFORM_SEQUENCE_TASK hst4_hotelcop hst4_hotelcopseq CLEAR_SEQUENCE_TASK hst4_hotelcopseq SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE hst4_hotelcop KNOCKOFFBIKE_EASY ENDIF SWITCH_CAR_SIREN motorbike[1] ON CLEAR_MISSION_AUDIO 3 ENDIF hst4_hotelthugsleave = 1 ENDIF RETURN // ************************************ MISSION FAILED ************************************* mission_hst4_failed: PRINT_BIG M_FAIL 5000 1 RETURN // ************************************ MISSION PASSED ************************************* mission_hst4_passed: //INCREMENT_FLOAT_STAT 64 50.0 flag_heist_mission_counter ++ PRINT_WITH_NUMBER_BIG ( M_PASSR ) 20 5000 1 AWARD_PLAYER_MISSION_RESPECT 20 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 REGISTER_MISSION_PASSED ( HEIST_4 ) PLAYER_MADE_PROGRESS 1 //START_NEW_SCRIPT hst4_mission_loop RETURN // *********************************** MISSION CLEANUP ************************************* mission_hst4_cleanup: DISPLAY_RADAR 3 // PATHING ON SET_PLAYER_CONTROL player1 ON SET_PLAYER_GROUP_RECRUITMENT player1 TRUE SET_GROUP_FOLLOW_STATUS hst4_group TRUE SET_PLAYER_GROUP_TO_FOLLOW_NEVER player1 FALSE //FREEZE_CHAR_POSITION scplayer FALSE SET_CAR_DENSITY_MULTIPLIER 1.0 CLEAR_MISSION_AUDIO 3 RELEASE_WEATHER SWITCH_COPS_ON_BIKES ON REMOVE_BLIP mission_blip REMOVE_BLIP motorbike_blip[0] REMOVE_BLIP motorbike_blip[1] REMOVE_BLIP motorbike_blip[2] REMOVE_BLIP motorbike_blip[3] //CLEAR_ONSCREEN_COUNTER //CLEAR_ONSCREEN_TIMER //KILL_FX_SYSTEM hst4_puke MARK_MODEL_AS_NO_LONGER_NEEDED PACKER MARK_MODEL_AS_NO_LONGER_NEEDED COPBIKE MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED LAPDM1 MARK_MODEL_AS_NO_LONGER_NEEDED COPCARVG MARK_MODEL_AS_NO_LONGER_NEEDED POLMAV MARK_MODEL_AS_NO_LONGER_NEEDED FREEWAY MARK_MODEL_AS_NO_LONGER_NEEDED DWMOLC2 MARK_MODEL_AS_NO_LONGER_NEEDED DWMYLC1 MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH MARK_MODEL_AS_NO_LONGER_NEEDED triada MARK_MODEL_AS_NO_LONGER_NEEDED DWMOLC1 REMOVE_ANIMATION SMOKING REMOVE_ANIMATION MISC CLEAR_ONSCREEN_TIMER hst4_deliverytimer GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } /* [HEI4_01] ~s~We need to steal four ~r~police bikes~s~ and get them safely onto the back of a Packer truck. [HEI4_02] ~s~Okay, drive the bike near the back of the moving ~y~Packer~s~ truck. We need to get it onboard. [HEI4_03] ~s~Hey, we need ~r~police bikes~s~ for the heist! Grab one! [HEI4_04] ~r~We needed all those bikes in good working order! Is someone going to carry his now you've wrecked one? [HEI4_05] ~r~The Packer is destroyed! How are we going to deliver the bikes now? [HEI4_06] ~s~Good! The first bike's attached. Jump off and get another ~r~police bike~s~ for the job. [HEI4_07] ~s~Excellent! That's all the bike's safely delivered! Preparations for the heist are going well! [HEI4_08] ~s~Another one safe! Great, we're halfway there. More ~r~police bikes~s~ needed. [HEI4_09] ~s~Number 3 present and correct. Jump off and get that final ~r~police bike~s~ delivered. [HEI4_10] ~r~ Out of time! The Packer truck needs juice! [HEI4_11] ~s~The Packer's circling the outskirts of town but you'll have to be quick. It doesn't run on fresh air! [HEI4_12] time left: [HEI4_13] ~s~There's the ~y~Packer~s~ up ahead. Drive up the ramp at a steady speed so it can be attached. [HEI4_14] ~s~Some of the bikes are in conspicuous locations. Look lively if trouble starts! [HEI4_20] ~w~Cop: Come in control, I've just been in to pick up a Four Seasons and some punk has helped himself to my bike! [HEI4_21] ~w~Cop: Larry! Some big-balled prick is trying out your bike for size! Get him! [HEI4_22] ~w~Cop: What the fu..? I'm at the hospital and some guy has a death wish! He's got my wheels! */ MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* Heist 5 ******************************************* // ********************************* Steal a sky crane ************************************* // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME HEIST5 // Mission start stuff GOSUB mission_start_heist5 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_heist5_failed ENDIF GOSUB mission_cleanup_heist5 MISSION_END { // Variables for mission LVAR_INT heli_heist5 heli_blip_heist5 flag_player_had_message_heist5 blip_coord1_heist5 dummy_blip_heist5 LVAR_FLOAT locateX_heist5 locateY_heist5 locateZ_heist5 LVAR_INT guardnumber[7] LVAR_INT guardnumber0_dead_heist5 LVAR_INT guardnumber1_dead_heist5 LVAR_INT guardnumber2_dead_heist5 LVAR_INT guardnumber3_dead_heist5 LVAR_INT guardnumber4_dead_heist5 LVAR_INT guardnumber5_dead_heist5 LVAR_INT guardnumber6_dead_heist5 LVAR_INT dm_empty_heist5 dm_duck_heist5 dm_noduck_heist5 // sequences LVAR_INT kill_player_heist5 // used for the perimiter guards to attack the player using the special code LVAR_INT kill2_player_heist5 // Perimiter guards LVAR_INT perimiter_guard1_heist5 perimiter_guard1_dead_heist5 LVAR_INT perimiter_guard2_heist5 perimiter_guard2_dead_heist5 LVAR_INT perimiter_guard3_heist5 perimiter_guard3_dead_heist5 // Warehouse guards LVAR_INT guard1_warehouse_heist5 guard1_warehouse_dead_heist5 LVAR_INT guard2_warehouse_heist5 guard2_warehouse_dead_heist5 LVAR_INT guard3_warehouse_heist5 guard3_warehouse_dead_heist5 LVAR_INT guard4_warehouse_heist5 guard4_warehouse_dead_heist5 LVAR_INT guard5_warehouse_heist5 guard5_warehouse_dead_heist5 //LVAR_INT guard6_warehouse_heist5 guard6_warehouse_dead_heist5 LVAR_INT guard7_warehouse_heist5 guard7_warehouse_dead_heist5 LVAR_INT guard8_warehouse_heist5 guard8_warehouse_dead_heist5 // on skyway LVAR_INT guard9_warehouse_heist5 guard9_warehouse_dead_heist5 LVAR_INT guard10_warehouse_heist5 guard10_warehouse_dead_heist5 LVAR_INT guard11_warehouse_heist5 guard11_warehouse_dead_heist5 LVAR_INT guard12_warehouse_heist5 guard12_warehouse_dead_heist5 // general flags LVAR_INT guards_killing_player_heist5 LVAR_INT flag_cleanup2_done_heist5 // Guards that run sequences LVAR_INT guard1_warehouse_task_heist5 guard2_warehouse_task_heist5 guard9_warehouse_task_heist5 guard10_warehouse_task_heist5 LVAR_INT guard11_warehouse_task_heist5 guard12_warehouse_task_heist5 // gate guard to hassle player LVAR_INT gateguard1_heist5 gateguard1_dead_heist5 LVAR_INT player_entered_depot_heist5 LVAR_INT flag_base_alerted_heist5 LVAR_INT flag_warn_player_heist5 LVAR_INT task_status2 LVAR_INT flag_gateguard1_got_ai_heist5 // Heli stuff LVAR_INT heli_locked_heist5 LVAR_FLOAT heli1X_heist5 heli1Y_heist5 heli1Z_heist5 dis_heli_van_heist5 // minigun stuff LVAR_INT minigun_heist5 minigun_blip_heist5 flag_player_at_minigun // ambush guys called as back up LVAR_INT counter_backup_dead_heist5 LVAR_INT flag_done_mid_cleanup_heist5 // backup reserves LVAR_INT chopper1_backup_heist5 chopper1_backup_blip_heist5 chopper1_backup_dead_heist5 LVAR_INT heli_pilot1_heist5 LVAR_INT chopper2_backup_heist5 chopper2_backup_blip_heist5 chopper2_backup_dead_heist5 LVAR_INT heli_pilot2_heist5 // bank vans to be picked up LVAR_INT bankvan1_heist5 bankvan1_blip_heist5 bankvan1_dead_heist5 LVAR_INT correct_vehicle_on_winch_heist5 LVAR_INT vehicle_on_winch_heist5 char_on_winch_heist5 object_on_winch_heist5 LVAR_INT bankvan1_blip_on_heist5 VAR_INT bankvan1_health_heist5 // needs to be a global var_int to display in counter LVAR_FLOAT bankvan1X_heist5 bankvan1Y_heist5 bankvan1Z_heist5 LVAR_FLOAT warp_heli1X_heist5 warp_heli1Y_heist5 warp_heli1Z_heist5 LVAR_FLOAT warp_heli2X_heist5 warp_heli2Y_heist5 warp_heli2Z_heist5 LVAR_INT flag_end_blip_on_heist5 // used to say of the desert airstrip blip is on or off LVAR_INT flag_wheels_message_heist5 // used to tell player van has to be on its wheels LVAR_INT van_in_bad_area_heist5 // used to tell me van is dropped in a place the player cannot get at it. LVAR_INT flag_heli_wheels_cool_heist5 // used to tell me that the van is on its wheels and that is cool // animation stuff LVAR_INT flag_move_rocket_guys_heist5 // used to move the guards position after player has been spotted VAR_FLOAT bankvan1_upright_value_heist5 // change this to a LVAR once I am not displaying it // Landing heli and van at the end LVAR_INT heli_land_blip_heist5 LVAR_FLOAT heli_locateX_heist5 heli_locateY_heist5 heli_locateZ_heist5 // wuzi LVAR_INT wuzi_heist5 // car driving out of base stuff VAR_INT driver_gate_car_heist5 gate_drive_car_heist5 gate_drive_car_ai_heist5 // sphere LVAR_INT sphere_heist5 // new minigun stuff LVAR_INT flag_leave_gun_heist5 flag_mingun_help_heist5 flag_player_using_gun_heist5 helis_created_heist5 // new gate driver stuff LVAR_INT gate_driver_attacking_player // grenades LVAR_INT no_player_grenades_heist5 grenades_heist5 armour_heist5 health_heist5 // mission audio for alarm LVAR_INT alarm_loop_on_heist5 // guards location LVAR_FLOAT gateguard1X_heist5 gateguard1Y_heist5 gateguard1Z_heist5 // new winch message LVAR_INT flag_winch_message_heist5 flag_watched_end_cutscene_heist5 LVAR_INT stored_vehicle_heist5 // used for cutscenes // **************************************** Mission Start ********************************** mission_start_heist5: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 // Helicopter stuff locateX_heist5 = 406.9890 // 384.783 locateY_heist5 = 2516.9006 // 2599.899 locateZ_heist5 = 15.4918 // 15.524 flag_player_had_message_heist5 = 0 heli_locked_heist5 = 0 // Base stuff flag_base_alerted_heist5 = 0 player_entered_depot_heist5 = 0 guards_killing_player_heist5 = 0 // gateguard1 flag_warn_player_heist5 = 0 task_status2 = 0 flag_gateguard1_got_ai_heist5 = 0 // guard dead flags perimiter_guard1_dead_heist5 = 0 perimiter_guard2_dead_heist5 = 0 perimiter_guard3_dead_heist5 = 0 guardnumber0_dead_heist5 = 0 guardnumber1_dead_heist5 = 0 guardnumber2_dead_heist5 = 0 guardnumber3_dead_heist5 = 0 guardnumber4_dead_heist5 = 0 guardnumber5_dead_heist5 = 0 guardnumber6_dead_heist5 = 0 guard1_warehouse_dead_heist5 = 0 guard2_warehouse_dead_heist5 = 0 guard3_warehouse_dead_heist5 = 0 guard4_warehouse_dead_heist5 = 0 guard5_warehouse_dead_heist5 = 0 //guard6_warehouse_dead_heist5 = 0 guard7_warehouse_dead_heist5 = 0 guard8_warehouse_dead_heist5 = 0 gateguard1_dead_heist5 = 0 // guards who fall from rail guard9_warehouse_dead_heist5 = 0 guard10_warehouse_dead_heist5 = 0 guard11_warehouse_dead_heist5 = 0 guard12_warehouse_dead_heist5 = 0 // backup guys counter_backup_dead_heist5 = 0 flag_done_mid_cleanup_heist5 = 0 warp_heli1X_heist5 = 0.0 warp_heli1Y_heist5 = 0.0 warp_heli1Z_heist5 = 0.0 warp_heli2X_heist5 = 0.0 warp_heli2Y_heist5 = 0.0 warp_heli2Z_heist5 = 0.0 // minigun stuff flag_player_at_minigun = 0 // Bank van and winch stuff correct_vehicle_on_winch_heist5 = 0 bankvan1_health_heist5 = 1000 bankvan1_dead_heist5 = 0 vehicle_on_winch_heist5 = 0 char_on_winch_heist5 = 0 object_on_winch_heist5 = 0 bankvan1_blip_on_heist5 = 0 flag_end_blip_on_heist5 = 0 bankvan1_upright_value_heist5 = 0.0 dis_heli_van_heist5 = 0.0 flag_wheels_message_heist5 = 0 van_in_bad_area_heist5 = 0 flag_heli_wheels_cool_heist5 = 0 // general flags flag_cleanup2_done_heist5 = 0 // flag to move guards flag_move_rocket_guys_heist5 = 0 // Landing heli and van at the end heli_locateX_heist5 = 365.356 heli_locateY_heist5 = 2538.113 heli_locateZ_heist5 = 15.712 // new car driving out of gate stuff gate_drive_car_ai_heist5 = 0 // new mingun stuff flag_leave_gun_heist5 = 0 flag_mingun_help_heist5 = 0 flag_player_using_gun_heist5 = 0 helis_created_heist5 = 0 // new gate driver stuff gate_driver_attacking_player = 0 // grenades no_player_grenades_heist5 = 0 // alarm sound alarm_loop_on_heist5 = 0 // gate guard location gateguard1X_heist5 = 0.0 gateguard1Y_heist5 = 0.0 gateguard1Z_heist5 = 0.0 // new winch message flag_winch_message_heist5 = 0 flag_watched_end_cutscene_heist5 = 0 LOAD_MISSION_TEXT HEIST5 WAIT 0 CLEAR_AREA 2030.108 1007.929 9.852 1.0 FALSE SET_CHAR_COORDINATES scplayer 2030.108 1007.929 9.852 SET_CHAR_HEADING scplayer 270.0 // ****************************************START OF CUTSCENE******************************** iTerminateAllAmbience = 1 SET_AREA_VISIBLE 10 LOAD_CUTSCENE HEIST6a WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 iTerminateAllAmbience = 0 // ****************************************END OF CUTSCENE********************************** SWITCH_CAR_GENERATOR d5_bronze_generator 0 SWITCH_CAR_GENERATOR d5_silver_generator 0 SWITCH_CAR_GENERATOR d5_gold_generator 0 SWITCH_AMBIENT_PLANES FALSE SWITCH_POLICE_HELIS FALSE GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_GRENADE no_player_grenades_heist5 IF no_player_grenades_heist5 < 5 CREATE_PICKUP GRENADE PICKUP_ONCE 2550.9670 2824.3425 10.6 grenades_heist5 ENDIF CREATE_PICKUP BODYARMOUR PICKUP_ONCE 2557.337 2817.809 10.820 armour_heist5 CREATE_PICKUP HEALTH PICKUP_ONCE 2573.734 2814.910 10.820 health_heist5 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2016.4222 1017.1024 10.0 //TRIAD CASINO //CLEAR_AREA 2030.108 1007.929 9.852 1.0 FALSE //SET_CHAR_COORDINATES scplayer 2030.108 1007.929 9.852 //SET_CHAR_HEADING scplayer 270.0 LOAD_SCENE 2030.108 1007.929 9.852 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //Adds sequences OPEN_SEQUENCE_TASK kill_player_heist5 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK kill_player_heist5 OPEN_SEQUENCE_TASK kill2_player_heist5 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK kill2_player_heist5 // Guards that have to run into position OPEN_SEQUENCE_TASK guard1_warehouse_task_heist5 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2604.0 2837.0 9.860 PEDMOVE_RUN 10000 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK guard1_warehouse_task_heist5 OPEN_SEQUENCE_TASK guard2_warehouse_task_heist5 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2608.0 2827.0 9.860 PEDMOVE_RUN 10000 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK guard2_warehouse_task_heist5 OPEN_SEQUENCE_TASK guard9_warehouse_task_heist5 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2585.0 2815.0 18.999 PEDMOVE_RUN 10000 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK guard9_warehouse_task_heist5 OPEN_SEQUENCE_TASK guard10_warehouse_task_heist5 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2593.0 2835.0 18.999 PEDMOVE_RUN 10000 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK guard10_warehouse_task_heist5 OPEN_SEQUENCE_TASK guard11_warehouse_task_heist5 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2585.0 2809.0 18.999 PEDMOVE_RUN 10000 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK guard11_warehouse_task_heist5 OPEN_SEQUENCE_TASK guard12_warehouse_task_heist5 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2575.0 2833.0 18.999 PEDMOVE_RUN 10000 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK guard12_warehouse_task_heist5 // Decision makers for mission LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH dm_duck_heist5 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE dm_duck_heist5 EVENT_SHOT_FIRED_WHIZZED_BY TASK_SIMPLE_DUCK_WHILE_SHOTS_WHIZZING 0.0 100.0 100.0 100.0 FALSE TRUE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH dm_noduck_heist5 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY dm_empty_heist5 // requesting models REQUEST_MODEL LEVIATHN REQUEST_MODEL ARMY REQUEST_MODEL M4 REQUEST_MODEL ROCKETLA REQUEST_MODEL HUNTER REQUEST_MODEL minigun_base REQUEST_MODEL minigun REQUEST_MODEL SECURICA REQUEST_MODEL PATRIOT LOAD_MISSION_AUDIO 3 SOUND_SECURITY_ALARM // Alarm ringing LOAD_ALL_MODELS_NOW // waiting for the models to load WHILE NOT HAS_MODEL_LOADED LEVIATHN OR NOT HAS_MODEL_LOADED ARMY OR NOT HAS_MODEL_LOADED M4 OR NOT HAS_MODEL_LOADED ROCKETLA OR NOT HAS_MODEL_LOADED PATRIOT WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED HUNTER OR NOT HAS_MODEL_LOADED minigun_base OR NOT HAS_MODEL_LOADED minigun OR NOT HAS_MODEL_LOADED SECURICA OR NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE SET_FADING_COLOUR 0 0 0 DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON // Done this way as the model loading is taking a while PRINT_NOW (HM5_1) 5000 1 //"Steal the helicopter from the military fuel dump." ADD_BLIP_FOR_COORD 2616.408 2721.367 35.563 dummy_blip_heist5 SET_BLIP_AS_FRIENDLY dummy_blip_heist5 TRUE // creates the minigun object CREATE_OBJECT minigun_base 2595.549 2758.040 22.832 minigun_heist5 SET_OBJECT_HEADING minigun_heist5 180.0 LOAD_MISSION_AUDIO 1 SOUND_HE5_BA LOAD_MISSION_AUDIO 2 SOUND_HE5_BD WHILE NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2502.702 2778.550 9.868 200.0 200.0 400.0 FALSE OR NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_heist5_passed ENDIF ENDWHILE // creates the helicopter CREATE_CAR LEVIATHN 2614.603 2720.745 35.563 heli_heist5 SET_CAR_HEADING heli_heist5 90.0 ATTACH_WINCH_TO_HELI heli_heist5 WINCHTYPE_MAGNET LOCK_CAR_DOORS heli_heist5 CARLOCK_LOCKED SET_CAR_PROOFS heli_heist5 TRUE TRUE TRUE TRUE FALSE FREEZE_CAR_POSITION heli_heist5 TRUE heli_locked_heist5 = 1 // gate guard to hassle player CREATE_CHAR PEDTYPE_MISSION1 ARMY 2502.702 2778.550 9.868 gateguard1_heist5 // Guard gate1 GIVE_WEAPON_TO_CHAR gateguard1_heist5 WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_HEADING gateguard1_heist5 90.0 SET_CHAR_ACCURACY gateguard1_heist5 70 SET_CHAR_SHOOT_RATE gateguard1_heist5 40 SET_CHAR_DECISION_MAKER gateguard1_heist5 dm_empty_heist5 // ************************************ Creates the spanner guys ********************************** CREATE_CHAR PEDTYPE_MISSION1 ARMY 2615.0 2835.0 9.860 guard1_warehouse_heist5 // righthand side back door GIVE_WEAPON_TO_CHAR guard1_warehouse_heist5 WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_HEADING guard1_warehouse_heist5 105.0 SET_CHAR_DECISION_MAKER guard1_warehouse_heist5 dm_duck_heist5 CLEAR_ALL_CHAR_RELATIONSHIPS guard1_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE SET_CHAR_RELATIONSHIP guard1_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ACCURACY guard1_warehouse_heist5 70 SET_CHAR_SHOOT_RATE guard1_warehouse_heist5 40 CREATE_CHAR PEDTYPE_MISSION1 ARMY 2615.0 2817.0 9.860 guard2_warehouse_heist5 // lefthand side back door GIVE_WEAPON_TO_CHAR guard2_warehouse_heist5 WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_HEADING guard2_warehouse_heist5 105.0 SET_CHAR_DECISION_MAKER guard2_warehouse_heist5 dm_duck_heist5 CLEAR_ALL_CHAR_RELATIONSHIPS guard2_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE SET_CHAR_RELATIONSHIP guard2_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ACCURACY guard2_warehouse_heist5 70 SET_CHAR_SHOOT_RATE guard2_warehouse_heist5 40 CREATE_CHAR PEDTYPE_MISSION1 ARMY 2585.927 2837.060 9.820 guard3_warehouse_heist5 // guy crouching by open box left hand side GIVE_WEAPON_TO_CHAR guard3_warehouse_heist5 WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_HEADING guard3_warehouse_heist5 127.0 SET_CHAR_DECISION_MAKER guard3_warehouse_heist5 dm_duck_heist5 CLEAR_ALL_CHAR_RELATIONSHIPS guard3_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE SET_CHAR_RELATIONSHIP guard3_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ACCURACY guard3_warehouse_heist5 70 SET_CHAR_SHOOT_RATE guard3_warehouse_heist5 50 TASK_PLAY_ANIM guard3_warehouse_heist5 WEAPON_CROUCH PED 4.0 TRUE FALSE FALSE FALSE -1 CREATE_CHAR PEDTYPE_MISSION1 ARMY 2568.0 2821.0 9.860 guard4_warehouse_heist5 // creates right infront of doors GIVE_WEAPON_TO_CHAR guard4_warehouse_heist5 WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_HEADING guard4_warehouse_heist5 80.0 SET_CHAR_DECISION_MAKER guard4_warehouse_heist5 dm_duck_heist5 CLEAR_ALL_CHAR_RELATIONSHIPS guard4_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE SET_CHAR_RELATIONSHIP guard4_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ACCURACY guard4_warehouse_heist5 70 SET_CHAR_SHOOT_RATE guard4_warehouse_heist5 40 CREATE_CHAR PEDTYPE_MISSION1 ARMY 2562.0 2818.0 9.860 guard5_warehouse_heist5 // small boxes left hand side close to door GIVE_WEAPON_TO_CHAR guard5_warehouse_heist5 WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_HEADING guard5_warehouse_heist5 96.0 SET_CHAR_DECISION_MAKER guard5_warehouse_heist5 dm_duck_heist5 CLEAR_ALL_CHAR_RELATIONSHIPS guard5_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE SET_CHAR_RELATIONSHIP guard5_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ACCURACY guard5_warehouse_heist5 70 SET_CHAR_SHOOT_RATE guard5_warehouse_heist5 45 TASK_PLAY_ANIM guard5_warehouse_heist5 WEAPON_CROUCH PED 4.0 TRUE FALSE FALSE FALSE -1 //CREATE_CHAR PEDTYPE_MISSION1 ARMY 2562.0 2839.0 9.860 guard6_warehouse_heist5 // boxes right hand side close to door //GIVE_WEAPON_TO_CHAR guard6_warehouse_heist5 WEAPONTYPE_M4 30000 // Set to infinate ammo //SET_CHAR_HEADING guard6_warehouse_heist5 121.0 //SET_CHAR_DECISION_MAKER guard6_warehouse_heist5 dm_duck_heist5 //CLEAR_ALL_CHAR_RELATIONSHIPS guard6_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE //SET_CHAR_RELATIONSHIP guard6_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 //SET_CHAR_ACCURACY guard6_warehouse_heist5 70 //SET_CHAR_SHOOT_RATE guard6_warehouse_heist5 45 CREATE_CHAR PEDTYPE_MISSION1 ARMY 2571.933 2831.912 9.820 guard7_warehouse_heist5 // right hand side by the small boxes 2575.0 2838.0 9.860 GIVE_WEAPON_TO_CHAR guard7_warehouse_heist5 WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_HEADING guard7_warehouse_heist5 70.0 SET_CHAR_DECISION_MAKER guard7_warehouse_heist5 dm_duck_heist5 CLEAR_ALL_CHAR_RELATIONSHIPS guard7_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE SET_CHAR_RELATIONSHIP guard7_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ACCURACY guard7_warehouse_heist5 70 SET_CHAR_SHOOT_RATE guard7_warehouse_heist5 40 TASK_PLAY_ANIM guard7_warehouse_heist5 WEAPON_CROUCH PED 4.0 TRUE FALSE FALSE FALSE -1 CREATE_CHAR PEDTYPE_MISSION1 ARMY 2595.0 2840.0 9.860 guard8_warehouse_heist5 // large boxes right hand side by the exit door GIVE_WEAPON_TO_CHAR guard8_warehouse_heist5 WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_HEADING guard8_warehouse_heist5 96.0 SET_CHAR_DECISION_MAKER guard8_warehouse_heist5 dm_duck_heist5 CLEAR_ALL_CHAR_RELATIONSHIPS guard8_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE SET_CHAR_RELATIONSHIP guard8_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ACCURACY guard8_warehouse_heist5 70 SET_CHAR_SHOOT_RATE guard8_warehouse_heist5 50 // skyway guys CREATE_CHAR PEDTYPE_MISSION1 ARMY 2613.0 2806.0 18.999 guard9_warehouse_heist5 // top railings back right GIVE_WEAPON_TO_CHAR guard9_warehouse_heist5 WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_HEADING guard9_warehouse_heist5 96.0 SET_CHAR_HEALTH guard9_warehouse_heist5 100 SET_CHAR_DECISION_MAKER guard9_warehouse_heist5 dm_noduck_heist5 CLEAR_ALL_CHAR_RELATIONSHIPS guard9_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE SET_CHAR_RELATIONSHIP guard9_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ACCURACY guard9_warehouse_heist5 70 SET_CHAR_SHOOT_RATE guard9_warehouse_heist5 45 CREATE_CHAR PEDTYPE_MISSION1 ARMY 2614.0 2848.0 18.999 guard10_warehouse_heist5 // top railings back left GIVE_WEAPON_TO_CHAR guard10_warehouse_heist5 WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_HEADING guard10_warehouse_heist5 96.0 SET_CHAR_HEALTH guard10_warehouse_heist5 100 SET_CHAR_DECISION_MAKER guard10_warehouse_heist5 dm_noduck_heist5 CLEAR_ALL_CHAR_RELATIONSHIPS guard10_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE SET_CHAR_RELATIONSHIP guard10_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ACCURACY guard10_warehouse_heist5 70 SET_CHAR_SHOOT_RATE guard10_warehouse_heist5 40 CREATE_CHAR PEDTYPE_MISSION1 ARMY 2545.0 2806.0 18.999 guard11_warehouse_heist5 // top railings back left GIVE_WEAPON_TO_CHAR guard11_warehouse_heist5 WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_HEADING guard11_warehouse_heist5 274.0 SET_CHAR_HEALTH guard11_warehouse_heist5 100 SET_CHAR_DECISION_MAKER guard11_warehouse_heist5 dm_noduck_heist5 CLEAR_ALL_CHAR_RELATIONSHIPS guard11_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE SET_CHAR_RELATIONSHIP guard11_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ACCURACY guard11_warehouse_heist5 70 SET_CHAR_SHOOT_RATE guard11_warehouse_heist5 45 CREATE_CHAR PEDTYPE_MISSION1 ARMY 2563.0 2848.0 18.999 guard12_warehouse_heist5 // top railings back left GIVE_WEAPON_TO_CHAR guard12_warehouse_heist5 WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_HEADING guard12_warehouse_heist5 274.0 SET_CHAR_HEALTH guard12_warehouse_heist5 100 SET_CHAR_DECISION_MAKER guard12_warehouse_heist5 dm_noduck_heist5 CLEAR_ALL_CHAR_RELATIONSHIPS guard12_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE SET_CHAR_RELATIONSHIP guard12_warehouse_heist5 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ACCURACY guard12_warehouse_heist5 70 SET_CHAR_SHOOT_RATE guard12_warehouse_heist5 40 // **************************************** Creates the heli guards ******************************* CREATE_CHAR PEDTYPE_MISSION1 ARMY 2621.0 2804.0 9.860 guardnumber[0] SET_CHAR_DECISION_MAKER guardnumber[0] dm_noduck_heist5 GIVE_WEAPON_TO_CHAR guardnumber[0] WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_ACCURACY guardnumber[0] 70 SET_CHAR_SHOOT_RATE guardnumber[0] 50 FLUSH_ROUTE EXTEND_ROUTE 2629.0 2795.0 9.860 EXTEND_ROUTE 2642.0 2788.0 9.860 EXTEND_ROUTE 2659.0 2786.0 9.860 EXTEND_ROUTE 2621.0 2804.0 9.860 TASK_FOLLOW_POINT_ROUTE guardnumber[0] PEDMOVE_WALK FOLLOW_ROUTE_LOOP CREATE_CHAR PEDTYPE_MISSION1 ARMY 2649.0 2768.0 18.375 guardnumber[1] SET_CHAR_DECISION_MAKER guardnumber[1] dm_noduck_heist5 GIVE_WEAPON_TO_CHAR guardnumber[1] WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_STAY_IN_SAME_PLACE guardnumber[1] TRUE SET_CHAR_HEADING guardnumber[1] 330.0 SET_CHAR_ACCURACY guardnumber[1] 70 SET_CHAR_SHOOT_RATE guardnumber[1] 40 TASK_PLAY_ANIM guardnumber[1] WEAPON_CROUCH PED 4.0 TRUE FALSE FALSE FALSE -1 CREATE_CHAR PEDTYPE_MISSION1 ARMY 2626.370 2800.007 9.820 guardnumber[2] SET_CHAR_DECISION_MAKER guardnumber[2] dm_noduck_heist5 SET_CHAR_HEADING guardnumber[2] 14.7 GIVE_WEAPON_TO_CHAR guardnumber[2] WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_ACCURACY guardnumber[2] 70 SET_CHAR_SHOOT_RATE guardnumber[2] 45 TASK_TOGGLE_DUCK guardnumber[2] TRUE SET_CHAR_STAY_IN_SAME_PLACE guardnumber[2] TRUE //FLUSH_ROUTE //EXTEND_ROUTE 2598.0 2756.0 22.872 //EXTEND_ROUTE 2613.0 2755.0 22.872 //EXTEND_ROUTE 2633.0 2755.0 29.946 //EXTEND_ROUTE 2644.0 2755.0 33.548 //EXTEND_ROUTE 2633.0 2755.0 29.946 //EXTEND_ROUTE 2613.0 2755.0 22.872 //EXTEND_ROUTE 2598.0 2756.0 22.872 //EXTEND_ROUTE 2597.0 2742.0 22.872 // //TASK_FOLLOW_POINT_ROUTE guardnumber[2] PEDMOVE_WALK FOLLOW_ROUTE_LOOP // ************************************* Perimiter guards using the new special code ************** CREATE_CHAR PEDTYPE_MISSION1 ARMY 2504.0 2763.0 9.860 perimiter_guard1_heist5 // left hand side of the guard box GIVE_WEAPON_TO_CHAR perimiter_guard1_heist5 WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_HEADING perimiter_guard1_heist5 364.0 SET_CHAR_DECISION_MAKER perimiter_guard1_heist5 dm_noduck_heist5 SET_CHAR_ACCURACY perimiter_guard1_heist5 70 SET_CHAR_SHOOT_RATE perimiter_guard1_heist5 45 FLUSH_ROUTE EXTEND_ROUTE 2504.0 2753.0 9.860 EXTEND_ROUTE 2504.0 2737.0 9.860 EXTEND_ROUTE 2505.0 2711.0 9.860 EXTEND_ROUTE 2504.0 2737.0 9.860 EXTEND_ROUTE 2504.0 2753.0 9.860 EXTEND_ROUTE 2504.0 2763.0 9.860 TASK_FOLLOW_POINT_ROUTE perimiter_guard1_heist5 PEDMOVE_WALK FOLLOW_ROUTE_LOOP // Guard2 CREATE_CHAR PEDTYPE_MISSION1 ARMY 2509.0 2791.0 9.860 perimiter_guard2_heist5 // right hand side of guard box GIVE_WEAPON_TO_CHAR perimiter_guard2_heist5 WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_HEADING perimiter_guard2_heist5 90.0 SET_CHAR_DECISION_MAKER perimiter_guard2_heist5 dm_noduck_heist5 SET_CHAR_ACCURACY perimiter_guard2_heist5 70 SET_CHAR_SHOOT_RATE perimiter_guard2_heist5 40 FLUSH_ROUTE EXTEND_ROUTE 2511.0 2809.0 9.860 EXTEND_ROUTE 2511.0 2833.0 9.860 EXTEND_ROUTE 2511.0 2844.0 9.860 EXTEND_ROUTE 2527.0 2844.0 9.860 EXTEND_ROUTE 2511.0 2844.0 9.860 EXTEND_ROUTE 2511.0 2833.0 9.860 EXTEND_ROUTE 2511.0 2809.0 9.860 EXTEND_ROUTE 2509.0 2791.0 9.860 TASK_FOLLOW_POINT_ROUTE perimiter_guard2_heist5 PEDMOVE_WALK FOLLOW_ROUTE_LOOP // guard3 CREATE_CHAR PEDTYPE_MISSION1 ARMY 2583.0 2801.0 9.860 perimiter_guard3_heist5 // alley beside main block GIVE_WEAPON_TO_CHAR perimiter_guard3_heist5 WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_HEADING perimiter_guard3_heist5 184.0 SET_CHAR_DECISION_MAKER perimiter_guard3_heist5 dm_noduck_heist5 SET_CHAR_ACCURACY perimiter_guard3_heist5 70 SET_CHAR_SHOOT_RATE perimiter_guard3_heist5 50 FLUSH_ROUTE EXTEND_ROUTE 2568.0 2801.0 9.860 EXTEND_ROUTE 2551.0 2801.0 9.860 EXTEND_ROUTE 2538.0 2801.0 9.845 EXTEND_ROUTE 2551.0 2801.0 9.845 EXTEND_ROUTE 2568.0 2801.0 9.855 EXTEND_ROUTE 2583.0 2801.0 9.845 TASK_FOLLOW_POINT_ROUTE perimiter_guard3_heist5 PEDMOVE_WALK FOLLOW_ROUTE_LOOP // ********************************** Rocket Launcher guys **************************************** CREATE_CHAR PEDTYPE_MISSION1 ARMY 2606.119 2733.683 35.563 guardnumber[3] // Rocket Launcher guy 1 SET_CHAR_DECISION_MAKER guardnumber[3] dm_noduck_heist5 GIVE_WEAPON_TO_CHAR guardnumber[3] WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_STAY_IN_SAME_PLACE guardnumber[3] TRUE SET_CHAR_ACCURACY guardnumber[3] 70 SET_CHAR_SHOOT_RATE guardnumber[3] 50 CREATE_CHAR PEDTYPE_MISSION1 ARMY 2628.508 2733.410 35.564 guardnumber[4] // Rocket Launcher guy 2 SET_CHAR_DECISION_MAKER guardnumber[4] dm_noduck_heist5 GIVE_WEAPON_TO_CHAR guardnumber[4] WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_STAY_IN_SAME_PLACE guardnumber[4] TRUE SET_CHAR_ACCURACY guardnumber[4] 70 SET_CHAR_SHOOT_RATE guardnumber[4] 40 CREATE_CHAR PEDTYPE_MISSION1 ARMY 2595.279 2755.393 22.822 guardnumber[5] // rocket Launcher guy 3 SET_CHAR_HEADING guardnumber[5] 80.0 SET_CHAR_DECISION_MAKER guardnumber[5] dm_noduck_heist5 GIVE_WEAPON_TO_CHAR guardnumber[5] WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_STAY_IN_SAME_PLACE guardnumber[5] TRUE SET_CHAR_ACCURACY guardnumber[5] 70 SET_CHAR_SHOOT_RATE guardnumber[5] 45 CREATE_CHAR PEDTYPE_MISSION1 ARMY 2658.506 2784.133 14.930 guardnumber[6] // Rocket Launcher guy 4 SET_CHAR_HEADING guardnumber[6] 54.818 SET_CHAR_DECISION_MAKER guardnumber[6] dm_noduck_heist5 GIVE_WEAPON_TO_CHAR guardnumber[6] WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_STAY_IN_SAME_PLACE guardnumber[6] TRUE SET_CHAR_ACCURACY guardnumber[6] 70 SET_CHAR_SHOOT_RATE guardnumber[6] 50 // Car to drive out of compound CREATE_CAR PATRIOT 2520.737 2769.963 9.816 gate_drive_car_heist5 SET_CAR_HEADING gate_drive_car_heist5 0.563 CREATE_CHAR_INSIDE_CAR gate_drive_car_heist5 PEDTYPE_MISSION1 ARMY driver_gate_car_heist5 SET_CHAR_DECISION_MAKER driver_gate_car_heist5 dm_empty_heist5 GIVE_WEAPON_TO_CHAR driver_gate_car_heist5 WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_ACCURACY driver_gate_car_heist5 70 SET_CHAR_SHOOT_RATE driver_gate_car_heist5 40 CAR_SET_IDLE gate_drive_car_heist5 CHECKPOINT_SAVE 99 // waiting for the player to destroy all the guards and helicopters WHILE NOT counter_backup_dead_heist5 = 2 WAIT 0 IF flag_base_alerted_heist5 >= 1 IF alarm_loop_on_heist5 = 0 SET_MISSION_AUDIO_POSITION 3 2502.943 2778.928 10.820 PLAY_MISSION_AUDIO 3 alarm_loop_on_heist5 = 1 ENDIF IF flag_gateguard1_got_ai_heist5 = 1 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT (HE5_BD) flag_gateguard1_got_ai_heist5 = 2 ENDIF ENDIF ELSE /* this resets the jeep coming out of the gate IF NOT IS_CAR_DEAD gate_drive_car_heist5 IF NOT LOCATE_CAR_3D gate_drive_car_heist5 2506.3396 2772.6904 9.8203 420.0 420.0 100.0 FALSE // Car to drive out of compound CREATE_CAR PATRIOT 2520.737 2769.963 9.816 gate_drive_car_heist5 SET_CAR_HEADING gate_drive_car_heist5 0.563 CREATE_CHAR_INSIDE_CAR gate_drive_car_heist5 PEDTYPE_MISSION1 ARMY driver_gate_car_heist5 SET_CHAR_DECISION_MAKER driver_gate_car_heist5 dm_empty_heist5 GIVE_WEAPON_TO_CHAR driver_gate_car_heist5 WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_ACCURACY driver_gate_car_heist5 70 SET_CHAR_SHOOT_RATE driver_gate_car_heist5 40 CAR_SET_IDLE gate_drive_car_heist5 gate_drive_car_ai_heist5 = 0 ENDIF ENDIF */ ENDIF IF gate_driver_attacking_player = 0 IF gate_drive_car_ai_heist5 = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2502.702 2778.550 9.868 80.0 80.0 80.0 FALSE OR player_entered_depot_heist5 = 1 OR flag_base_alerted_heist5 = 1 IF NOT IS_CAR_DEAD gate_drive_car_heist5 IF NOT IS_CHAR_DEAD driver_gate_car_heist5 IF IS_CHAR_IN_CAR driver_gate_car_heist5 gate_drive_car_heist5 IF flag_base_alerted_heist5 >= 1 IF gate_driver_attacking_player = 0 TASK_KILL_CHAR_ON_FOOT driver_gate_car_heist5 scplayer gate_stay_open = 0 gate_driver_attacking_player = 1 ENDIF ENDIF IF gate_driver_attacking_player = 0 TASK_CAR_DRIVE_TO_COORD driver_gate_car_heist5 gate_drive_car_heist5 2506.3396 2772.6904 9.8203 10.0 MODE_ACCURATE 0 DRIVINGMODE_PLOUGHTHROUGH CLEAR_AREA 2501.4944 2775.1995 9.8203 3.0 FALSE gate_drive_car_ai_heist5 = 1 ENDIF ELSE IF gate_driver_attacking_player = 0 TASK_KILL_CHAR_ON_FOOT driver_gate_car_heist5 scplayer gate_stay_open = 0 gate_driver_attacking_player = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF gate_drive_car_ai_heist5 = 1 IF NOT IS_CAR_DEAD gate_drive_car_heist5 IF NOT IS_CHAR_DEAD driver_gate_car_heist5 IF IS_CHAR_IN_CAR driver_gate_car_heist5 gate_drive_car_heist5 IF flag_base_alerted_heist5 >= 1 IF gate_driver_attacking_player = 0 TASK_KILL_CHAR_ON_FOOT driver_gate_car_heist5 scplayer gate_stay_open = 0 gate_driver_attacking_player = 1 ENDIF ENDIF IF gate_driver_attacking_player = 0 IF LOCATE_CAR_3D gate_drive_car_heist5 2506.3396 2772.6904 9.8203 2.0 2.0 2.0 FALSE open_gate_now_flag = 1 gate_stay_open = 1 gate_drive_car_ai_heist5 = 2 ENDIF ENDIF ELSE IF gate_driver_attacking_player = 0 TASK_KILL_CHAR_ON_FOOT driver_gate_car_heist5 scplayer gate_stay_open = 0 gate_driver_attacking_player = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF gate_drive_car_ai_heist5 = 2 IF NOT IS_CAR_DEAD gate_drive_car_heist5 IF NOT IS_CAR_IN_AREA_3D gate_drive_car_heist5 2497.387 2858.018 8.0 2676.413 2683.661 60.0 FALSE CLEAR_AREA 2497.2893 2772.6062 9.8262 5.0 FALSE gate_stay_open = 0 ENDIF IF NOT IS_CHAR_DEAD driver_gate_car_heist5 IF IS_CHAR_IN_CAR driver_gate_car_heist5 gate_drive_car_heist5 IF open_gate_now_flag = 3 IF gate_driver_attacking_player = 0 TASK_CAR_DRIVE_TO_COORD driver_gate_car_heist5 gate_drive_car_heist5 2472.1882 2775.9163 9.7097 20.0 MODE_ACCURATE 0 DRIVINGMODE_AVOIDCARS CLEAR_AREA 2472.1882 2775.9163 9.7097 3.0 FALSE gate_drive_car_ai_heist5 = 3 ENDIF ELSE IF flag_base_alerted_heist5 >= 1 IF gate_driver_attacking_player = 0 TASK_KILL_CHAR_ON_FOOT driver_gate_car_heist5 scplayer gate_stay_open = 0 gate_driver_attacking_player = 1 ENDIF ENDIF ENDIF ELSE IF gate_driver_attacking_player = 0 TASK_KILL_CHAR_ON_FOOT driver_gate_car_heist5 scplayer gate_stay_open = 0 gate_driver_attacking_player = 1 ENDIF ENDIF ENDIF ELSE CLEAR_AREA 2497.2893 2772.6062 9.8262 5.0 FALSE gate_stay_open = 0 ENDIF ENDIF IF gate_drive_car_ai_heist5 = 3 IF NOT IS_CAR_DEAD gate_drive_car_heist5 IF NOT IS_CAR_IN_AREA_3D gate_drive_car_heist5 2497.387 2858.018 8.0 2676.413 2683.661 60.0 FALSE CLEAR_AREA 2497.2893 2772.6062 9.8262 5.0 FALSE gate_stay_open = 0 ENDIF IF NOT IS_CHAR_DEAD driver_gate_car_heist5 IF IS_CHAR_IN_CAR driver_gate_car_heist5 gate_drive_car_heist5 IF LOCATE_CAR_3D gate_drive_car_heist5 2472.1882 2775.9163 9.7097 2.0 2.0 2.0 FALSE TASK_CAR_DRIVE_WANDER driver_gate_car_heist5 gate_drive_car_heist5 30.0 2 gate_drive_car_ai_heist5 = 4 ENDIF ELSE IF gate_driver_attacking_player = 0 TASK_KILL_CHAR_ON_FOOT driver_gate_car_heist5 scplayer gate_stay_open = 0 gate_driver_attacking_player = 1 ENDIF ENDIF ENDIF ELSE CLEAR_AREA 2497.2893 2772.6062 9.8262 5.0 FALSE gate_stay_open = 0 ENDIF ENDIF IF gate_stay_open = 1 IF gate_drive_car_ai_heist5 <= 4 IF NOT IS_CAR_DEAD gate_drive_car_heist5 IF NOT IS_CAR_IN_AREA_3D gate_drive_car_heist5 2497.387 2858.018 8.0 2676.413 2683.661 60.0 FALSE CLEAR_AREA 2497.2893 2772.6062 9.8262 5.0 FALSE gate_stay_open = 0 ENDIF ELSE CLEAR_AREA 2497.2893 2772.6062 9.8262 5.0 FALSE gate_stay_open = 0 ENDIF ENDIF ENDIF ENDIF IF player_entered_depot_heist5 = 0 IF IS_CHAR_IN_AREA_3D scplayer 2497.387 2858.018 8.0 2676.413 2683.661 100.0 FALSE REMOVE_BLIP dummy_blip_heist5 IF NOT IS_CAR_DEAD heli_heist5 ADD_BLIP_FOR_CAR heli_heist5 heli_blip_heist5 SET_BLIP_AS_FRIENDLY heli_blip_heist5 TRUE // PRINT (HM5_19) 8000 1 //"Steal the helicopter!" ELSE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (HM5_3) 5000 1 //"You destroyed the copter!" GOTO mission_heist5_failed ENDIF CLEAR_WANTED_LEVEL player1 SET_WANTED_MULTIPLIER 0.0 player_entered_depot_heist5 = 1 ENDIF ENDIF GOSUB array_guard_check_heist5 GOSUB guard_death_checks_heist5 IF player_entered_depot_heist5 = 1 GOSUB guard1_code_heist5 GOSUB rocket_check_heist5 IF flag_base_alerted_heist5 = 1 IF guards_killing_player_heist5 = 0 GOSUB guard_checks_heist5 ELSE GOSUB warehouse_area_checks_heist5 ENDIF ENDIF ENDIF IF IS_CAR_DEAD heli_heist5 PRINT_NOW (HM5_3) 5000 1 //"You destroyed the copter!" GOTO mission_heist5_failed ENDIF IF IS_CHAR_IN_AREA_ON_FOOT_3D scplayer 2656.523 2782.107 17.0 2594.178 2695.773 60.0 FALSE IF flag_done_mid_cleanup_heist5 = 0 GOSUB mid_mission_cleanup_heist5 flag_done_mid_cleanup_heist5 = 1 ENDIF ENDIF IF flag_done_mid_cleanup_heist5 = 1 IF IS_CHAR_IN_AREA_ON_FOOT_3D scplayer 2646.055 2782.106 21.0 2594.268 2724.261 60.0 FALSE flag_done_mid_cleanup_heist5 = 2 ENDIF ENDIF IF flag_done_mid_cleanup_heist5 = 2 IF flag_player_at_minigun = 0 CREATE_CAR hunter 2253.509 2806.941 15.0 chopper1_backup_heist5 ADD_BLIP_FOR_CAR chopper1_backup_heist5 chopper1_backup_blip_heist5 SET_CAR_HEALTH chopper1_backup_heist5 4000 CREATE_CHAR_INSIDE_CAR chopper1_backup_heist5 PEDTYPE_MISSION1 ARMY heli_pilot1_heist5 SET_CAR_FORWARD_SPEED chopper1_backup_heist5 20.0 SELECT_WEAPONS_FOR_VEHICLE chopper1_backup_heist5 SELECTEDWEAPON_GUNS HELI_ATTACK_PLAYER chopper1_backup_heist5 player1 50.0 ADD_STUCK_CAR_CHECK chopper1_backup_heist5 2.0 5000 CREATE_CAR hunter 2306.756 2806.941 15.0 chopper2_backup_heist5 ADD_BLIP_FOR_CAR chopper2_backup_heist5 chopper2_backup_blip_heist5 SET_CAR_HEALTH chopper2_backup_heist5 4000 CREATE_CHAR_INSIDE_CAR chopper2_backup_heist5 PEDTYPE_MISSION1 ARMY heli_pilot2_heist5 SET_CAR_FORWARD_SPEED chopper2_backup_heist5 20.0 SELECT_WEAPONS_FOR_VEHICLE chopper2_backup_heist5 SELECTEDWEAPON_GUNS HELI_ATTACK_PLAYER chopper2_backup_heist5 player1 50.0 ADD_STUCK_CAR_CHECK chopper2_backup_heist5 2.0 5000 PRINT_NOW (HM5_6) 12000 1 //"They have sent two gunships to intercept you, use the mini gun to destroy them." ADD_BLIP_FOR_COORD 2595.549 2758.040 22.832 minigun_blip_heist5 ADD_SPHERE 2596.589 2758.158 22.862 1.0 sphere_heist5 TIMERB = 0 helis_created_heist5 = 1 flag_player_at_minigun = 1 CHECKPOINT_SAVE 99 ENDIF IF flag_player_at_minigun = 1 IF LOCATE_CHAR_ON_FOOT_3D scplayer 2596.589 2758.158 22.862 1.0 1.0 3.0 FALSE IF flag_mingun_help_heist5 = 0 PRINT_HELP_FOREVER HM5_20 // Press ~m~~widget_mission_start~ to use the gun. flag_mingun_help_heist5 = 1 ENDIF WRITE_LOG "FANCYCONTEXT WIDGET_MISSION_START USEGUN" // "Use Gun". Button prompts for a shared buttons need to present context-specific strings. IF IS_WIDGET_RELEASED WIDGET_MISSION_START IF IS_PLAYER_USING_JETPACK player1 CLEAR_HELP PRINT_HELP_FOREVER HM5_JET // You have to drop the jetpack to use the gun. ELSE IF flag_player_using_gun_heist5 = 0 CLEAR_THIS_PRINT HM5_20 // Press ~m~~widget_mission_start~ to use the gun. CLEAR_HELP REMOVE_BLIP minigun_blip_heist5 REMOVE_SPHERE sphere_heist5 ATTACH_CHAR_TO_OBJECT scplayer minigun_heist5 0.0 0.0 2.0 FACING_LEFT 360.0 WEAPONTYPE_MINIGUN SET_OBJECT_VISIBLE minigun_heist5 FALSE flag_player_at_minigun = 2 flag_player_using_gun_heist5 = 1 WAIT 100 // Workaround for controller bug. ENDIF ENDIF ENDIF ELSE CLEAR_HELP flag_mingun_help_heist5 = 0 ENDIF ENDIF IF flag_player_at_minigun = 2 IF NOT IS_BUTTON_PRESSED PAD1 TRIANGLE flag_player_at_minigun = 3 ENDIF ENDIF IF flag_player_at_minigun = 3 IF flag_leave_gun_heist5 = 0 PRINT_HELP_FOREVER HM5_21 // Use the camera movement controls to move the crosshair. Press ~m~~widget_attack~ to fire. Press ~m~~widget_mission_cancel~ to quit. flag_leave_gun_heist5 = 1 ENDIF IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL flag_player_at_minigun = 4 ENDIF ENDIF IF flag_player_at_minigun = 4 IF NOT IS_BUTTON_PRESSED PAD1 TRIANGLE IF flag_player_using_gun_heist5 = 1 DETACH_CHAR_FROM_CAR scplayer CLEAR_AREA 2596.129 2757.112 22.862 1.0 FALSE SET_CHAR_COORDINATES scplayer 2596.129 2757.112 22.862 SET_CHAR_HEADING scplayer 217.0 SET_OBJECT_VISIBLE minigun_heist5 TRUE CLEAR_HELP REMOVE_BLIP minigun_blip_heist5 REMOVE_SPHERE sphere_heist5 ADD_BLIP_FOR_COORD 2595.549 2758.040 22.832 minigun_blip_heist5 ADD_SPHERE 2596.589 2758.158 22.862 1.0 sphere_heist5 flag_leave_gun_heist5 = 0 flag_player_at_minigun = 1 flag_player_using_gun_heist5 = 0 ENDIF ENDIF ENDIF ENDIF IF helis_created_heist5 = 1 IF chopper1_backup_dead_heist5 = 0 IF IS_CAR_DEAD chopper1_backup_heist5 REMOVE_BLIP chopper1_backup_blip_heist5 ++ counter_backup_dead_heist5 chopper1_backup_dead_heist5 = 1 ELSE IF IS_CAR_STUCK chopper1_backup_heist5 GET_CHAR_COORDINATES scplayer player_x player_y player_z warp_heli1X_heist5 = player_x + 80.0 warp_heli1Y_heist5 = player_y + 80.0 warp_heli1Z_heist5 = player_z + 50.0 SET_CAR_COORDINATES chopper1_backup_heist5 warp_heli1X_heist5 warp_heli1Y_heist5 warp_heli1Z_heist5 ENDIF ENDIF ENDIF IF chopper2_backup_dead_heist5 = 0 IF IS_CAR_DEAD chopper2_backup_heist5 REMOVE_BLIP chopper2_backup_blip_heist5 ++ counter_backup_dead_heist5 chopper2_backup_dead_heist5 = 1 ELSE IF IS_CAR_STUCK chopper2_backup_heist5 GET_CHAR_COORDINATES scplayer player_x player_y player_z warp_heli2X_heist5 = player_x + 90.0 warp_heli2Y_heist5 = player_y + 90.0 warp_heli2Z_heist5 = player_z + 60.0 SET_CAR_COORDINATES chopper2_backup_heist5 warp_heli2X_heist5 warp_heli2Y_heist5 warp_heli2Z_heist5 ENDIF ENDIF ENDIF ENDIF IF TIMERB > 240000 // 4mins IF chopper1_backup_dead_heist5 = 0 IF NOT IS_CAR_DEAD chopper1_backup_heist5 EXPLODE_CAR chopper1_backup_heist5 EXPLODE_CAR chopper1_backup_heist5 // needs to be twice to get the car to explode instantly REMOVE_BLIP chopper1_backup_blip_heist5 ++ counter_backup_dead_heist5 chopper1_backup_dead_heist5 = 1 ENDIF ENDIF IF chopper2_backup_dead_heist5 = 0 IF NOT IS_CAR_DEAD chopper2_backup_heist5 EXPLODE_CAR chopper2_backup_heist5 EXPLODE_CAR chopper2_backup_heist5 REMOVE_BLIP chopper2_backup_blip_heist5 ++ counter_backup_dead_heist5 chopper2_backup_dead_heist5 = 1 ENDIF ENDIF ENDIF ENDWHILE gate_stay_open = 0 CLEAR_THIS_PRINT HM5_20 // Press ~m~~widget_mission_start~ to use the gun. CLEAR_HELP REMOVE_SPHERE sphere_heist5 REMOVE_BLIP dummy_blip_heist5 REMOVE_BLIP minigun_blip_heist5 REMOVE_BLIP chopper1_backup_blip_heist5 REMOVE_BLIP chopper2_backup_blip_heist5 MARK_MODEL_AS_NO_LONGER_NEEDED HUNTER MARK_MODEL_AS_NO_LONGER_NEEDED minigun IF flag_player_using_gun_heist5 = 1 DETACH_CHAR_FROM_CAR scplayer CLEAR_AREA 2596.129 2757.112 22.862 1.0 FALSE SET_CHAR_COORDINATES scplayer 2596.129 2757.112 22.862 SET_CHAR_HEADING scplayer 217.0 ENDIF IF DOES_OBJECT_EXIST minigun_heist5 SET_OBJECT_VISIBLE minigun_heist5 TRUE ENDIF IF NOT IS_CAR_DEAD heli_heist5 LOCK_CAR_DOORS heli_heist5 CARLOCK_UNLOCKED SET_CAR_PROOFS heli_heist5 FALSE FALSE FALSE FALSE FALSE FREEZE_CAR_POSITION heli_heist5 FALSE ELSE PRINT_NOW (HM5_3) 5000 1 //"You destroyed the copter!" GOTO mission_heist5_failed ENDIF PRINT_NOW (HM5_7) 8000 1 //"The coast is clear get to the chopper and get out of here." // Waiting for the char to be in the helicopter WHILE NOT IS_CHAR_IN_CAR scplayer heli_heist5 WAIT 0 GOSUB array_guard_check_heist5 GOSUB guard_death_checks_heist5 IF player_entered_depot_heist5 = 1 // GOSUB guard1_code_heist5 IF flag_base_alerted_heist5 = 1 IF guards_killing_player_heist5 = 0 GOSUB guard_checks_heist5 ELSE GOSUB warehouse_area_checks_heist5 ENDIF ENDIF ENDIF IF IS_CAR_DEAD heli_heist5 PRINT_NOW (HM5_3) 5000 1 //"You destroyed the copter!" GOTO mission_heist5_failed ELSE IF LOCATE_CHAR_ON_FOOT_3D scplayer 2614.603 2720.745 35.563 4.0 4.0 4.0 FALSE LOCK_CAR_DOORS heli_heist5 CARLOCK_UNLOCKED SET_CAR_PROOFS heli_heist5 FALSE FALSE FALSE FALSE FALSE FREEZE_CAR_POSITION heli_heist5 FALSE ENDIF ENDIF ENDWHILE IF alarm_loop_on_heist5 = 1 CLEAR_MISSION_AUDIO 3 alarm_loop_on_heist5 = 0 ENDIF CLEAR_WANTED_LEVEL player1 REMOVE_BLIP heli_blip_heist5 MARK_MODEL_AS_NO_LONGER_NEEDED ROCKETLA // creates the bank van CREATE_CAR SECURICA 2847.3911 904.2733 9.7500 bankvan1_heist5 // 2847.417 898.813 9.750 //SET_CAR_PROOFS bankvan1_heist5 FALSE FALSE FALSE TRUE FALSE SET_UPSIDEDOWN_CAR_NOT_DAMAGED bankvan1_heist5 TRUE LOCK_CAR_DOORS bankvan1_heist5 CARLOCK_LOCKED // CARLOCK_FORCE_SHUT_DOORS SET_CAR_HEADING bankvan1_heist5 353.511 //SET_CAR_STRONG bankvan1_heist5 TRUE ADD_BLIP_FOR_CAR bankvan1_heist5 bankvan1_blip_heist5 SET_BLIP_AS_FRIENDLY bankvan1_blip_heist5 TRUE GET_CAR_UPRIGHT_VALUE bankvan1_heist5 bankvan1_upright_value_heist5 bankvan1_blip_on_heist5 = 1 PRINT_NOW (HM5_8) 8000 1//"Go to the depot and pick up the bank van using the helicopters winch." TIMERA = 0 WHILE correct_vehicle_on_winch_heist5 = 0 WAIT 0 IF bankvan1_dead_heist5 = 0 IF IS_CAR_DEAD bankvan1_heist5 IF bankvan1_blip_on_heist5 = 1 REMOVE_BLIP bankvan1_blip_heist5 bankvan1_blip_on_heist5 = 0 ENDIF PRINT_NOW (HM5_9) 8000 1//"You destroyed the van." GOTO mission_heist5_failed bankvan1_dead_heist5 = 1 ELSE GET_CAR_HEALTH bankvan1_heist5 bankvan1_health_heist5 bankvan1_health_heist5 = bankvan1_health_heist5 / 10 GET_CAR_UPRIGHT_VALUE bankvan1_heist5 bankvan1_upright_value_heist5 ENDIF ENDIF IF IS_CAR_DEAD heli_heist5 PRINT_NOW (HM5_3) 5000 1 //"You destroyed the copter!" GOTO mission_heist5_failed ELSE IF IS_CHAR_IN_CAR scplayer heli_heist5 IF flag_winch_message_heist5 = 0 IF TIMERA >= 5000 CLEAR_THIS_PRINT (HM5_8) PRINT_HELP (WINCH_V) // Press and hold ~m~~widget_helicopter_magnet_up~ and ~m~~widget_helicopter_magnet_down~ to move the winch close to a vehicle. Tap ~m~~widget_drop_crane~ to release. flag_winch_message_heist5 = 1 ENDIF ENDIF IF flag_cleanup2_done_heist5 = 0 IF NOT IS_CHAR_IN_AREA_3D scplayer 2497.387 2858.018 8.0 2676.413 2683.661 80.0 FALSE GOSUB cleanup2_heist5 ENDIF ENDIF GRAB_ENTITY_ON_WINCH heli_heist5 vehicle_on_winch_heist5 char_on_winch_heist5 object_on_winch_heist5 IF NOT IS_CAR_DEAD bankvan1_heist5 IF vehicle_on_winch_heist5 = bankvan1_heist5 GET_CAR_HEALTH bankvan1_heist5 bankvan1_health_heist5 bankvan1_health_heist5 = bankvan1_health_heist5 / 10 // DISPLAY_ONSCREEN_COUNTER_WITH_STRING bankvan1_health_heist5 COUNTER_DISPLAY_BAR (HM5_11) correct_vehicle_on_winch_heist5 = 1 ENDIF ENDIF IF flag_player_had_message_heist5 = 1 blob_flag = 1 REMOVE_BLIP heli_blip_heist5 IF NOT IS_CAR_DEAD bankvan1_heist5 IF bankvan1_blip_on_heist5 = 0 ADD_BLIP_FOR_CAR bankvan1_heist5 bankvan1_blip_heist5 SET_BLIP_AS_FRIENDLY bankvan1_blip_heist5 TRUE PRINT_NOW (HM5_10) 8000 1 //"Pick up the van!" bankvan1_blip_on_heist5 = 1 ENDIF ENDIF flag_player_had_message_heist5 = 0 ENDIF ELSE IF flag_player_had_message_heist5 = 0 blob_flag = 0 IF NOT IS_CAR_DEAD bankvan1_heist5 IF bankvan1_blip_on_heist5 = 1 REMOVE_BLIP bankvan1_blip_heist5 bankvan1_blip_on_heist5 = 0 ENDIF ENDIF ADD_BLIP_FOR_CAR heli_heist5 heli_blip_heist5 SET_BLIP_AS_FRIENDLY heli_blip_heist5 TRUE PRINT_NOW (IN_VEH) 5000 1 //"Get back in the helicopter!" flag_player_had_message_heist5 = 1 ENDIF ENDIF ENDIF ENDWHILE IF NOT IS_CAR_DEAD bankvan1_heist5 IF bankvan1_blip_on_heist5 = 1 REMOVE_BLIP bankvan1_blip_heist5 SET_CAR_PROOFS bankvan1_heist5 FALSE FALSE FALSE FALSE FALSE bankvan1_blip_on_heist5 = 0 ENDIF ELSE IF bankvan1_blip_on_heist5 = 1 REMOVE_BLIP bankvan1_blip_heist5 bankvan1_blip_on_heist5 = 0 ENDIF PRINT_NOW (HM5_9) 8000 1//"You destroyed the van." GOTO mission_heist5_failed bankvan1_dead_heist5 = 1 ENDIF // Requests the wuzi model MARK_MODEL_AS_NO_LONGER_NEEDED ARMY REQUEST_MODEL TRIADA PRINT_NOW (HM5_2) 5000 1 //"Good now take the helicopter to the Aircraft Graveyard in the desert." ADD_BLIP_FOR_COORD locateX_heist5 locateY_heist5 locateZ_heist5 blip_coord1_heist5 flag_end_blip_on_heist5 = 1 flag_player_had_message_heist5 = 0 bankvan1_blip_on_heist5 = 0 blob_flag = 1 // waiting for the heli and van to be in correct location WHILE NOT flag_heli_wheels_cool_heist5= 1 OR NOT LOCATE_STOPPED_CAR_3D bankvan1_heist5 locateX_heist5 locateY_heist5 locateZ_heist5 6.0 6.0 5.0 blob_flag OR NOT HAS_MODEL_LOADED TRIADA WAIT 0 IF bankvan1_dead_heist5 = 0 IF IS_CAR_DEAD bankvan1_heist5 IF bankvan1_blip_on_heist5 = 1 REMOVE_BLIP bankvan1_blip_heist5 bankvan1_blip_on_heist5 = 0 ENDIF PRINT_NOW (HM5_9) 8000 1//"You destroyed the van." GOTO mission_heist5_failed bankvan1_dead_heist5 = 1 ELSE GET_CAR_HEALTH bankvan1_heist5 bankvan1_health_heist5 bankvan1_health_heist5 = bankvan1_health_heist5 / 10 GET_CAR_UPRIGHT_VALUE bankvan1_heist5 bankvan1_upright_value_heist5 IF LOCATE_STOPPED_CAR_3D bankvan1_heist5 locateX_heist5 locateY_heist5 locateZ_heist5 6.0 6.0 5.0 FALSE IF flag_wheels_message_heist5 = 0 IF bankvan1_upright_value_heist5 <= 1.0 AND bankvan1_upright_value_heist5 > 0.8 IF NOT IS_CAR_IN_AIR_PROPER bankvan1_heist5 WINCH_CAN_PICK_VEHICLE_UP bankvan1_heist5 FALSE // CLEAR_ONSCREEN_COUNTER bankvan1_health_heist5 flag_heli_wheels_cool_heist5 = 1 ELSE flag_heli_wheels_cool_heist5 = 0 ENDIF ELSE flag_heli_wheels_cool_heist5 = 0 ENDIF IF flag_heli_wheels_cool_heist5 = 0 PRINT_NOW (HM5_12) 8000 1 //"The van has to be on it's wheels!" flag_wheels_message_heist5 = 1 ENDIF ELSE IF flag_heli_wheels_cool_heist5 = 1 CLEAR_THIS_PRINT (HM5_12) ENDIF ENDIF ELSE flag_wheels_message_heist5 = 0 ENDIF ENDIF ENDIF IF IS_CAR_DEAD heli_heist5 PRINT_NOW (HM5_3) 5000 1 //"You destroyed the copter!" GOTO mission_heist5_failed ELSE IF IS_CHAR_IN_CAR scplayer heli_heist5 GRAB_ENTITY_ON_WINCH heli_heist5 vehicle_on_winch_heist5 char_on_winch_heist5 object_on_winch_heist5 IF NOT IS_CAR_DEAD bankvan1_heist5 IF vehicle_on_winch_heist5 = bankvan1_heist5 IF bankvan1_blip_on_heist5 = 1 REMOVE_BLIP bankvan1_blip_heist5 GET_CAR_HEALTH bankvan1_heist5 bankvan1_health_heist5 bankvan1_health_heist5 = bankvan1_health_heist5 / 10 // DISPLAY_ONSCREEN_COUNTER_WITH_STRING bankvan1_health_heist5 COUNTER_DISPLAY_BAR (HM5_11) bankvan1_blip_on_heist5 = 0 ENDIF IF flag_end_blip_on_heist5 = 0 REMOVE_BLIP blip_coord1_heist5 ADD_BLIP_FOR_COORD locateX_heist5 locateY_heist5 locateZ_heist5 blip_coord1_heist5 PRINT_NOW (HM5_2) 5000 1 //"Good now take the helicopter to the Aircraft Graveyard in the desert." blob_flag = 1 flag_end_blip_on_heist5 = 1 ENDIF van_in_bad_area_heist5 = 0 correct_vehicle_on_winch_heist5 = 1 ELSE GET_CAR_COORDINATES bankvan1_heist5 bankvan1X_heist5 bankvan1Y_heist5 bankvan1Z_heist5 GET_CAR_COORDINATES heli_heist5 heli1X_heist5 heli1Y_heist5 heli1Z_heist5 GET_DISTANCE_BETWEEN_COORDS_2D heli1X_heist5 heli1Y_heist5 bankvan1X_heist5 bankvan1Y_heist5 dis_heli_van_heist5 IF dis_heli_van_heist5 < 10.0 IF NOT IS_LINE_OF_SIGHT_CLEAR heli1X_heist5 heli1Y_heist5 heli1Z_heist5 bankvan1X_heist5 bankvan1Y_heist5 bankvan1Z_heist5 TRUE FALSE FALSE FALSE FALSE IF van_in_bad_area_heist5 = 0 TIMERA = 0 van_in_bad_area_heist5 = 1 ELSE IF TIMERA >= 10000 PRINT_NOW (HM5_14) 8000 1 //"You have got the van stuck! GOTO mission_heist5_failed ENDIF ENDIF ENDIF ENDIF correct_vehicle_on_winch_heist5 = 0 IF flag_end_blip_on_heist5 = 1 REMOVE_BLIP blip_coord1_heist5 flag_end_blip_on_heist5 = 0 ENDIF IF bankvan1_blip_on_heist5 = 0 REMOVE_BLIP bankvan1_blip_heist5 ADD_BLIP_FOR_CAR bankvan1_heist5 bankvan1_blip_heist5 SET_BLIP_AS_FRIENDLY bankvan1_blip_heist5 TRUE PRINT_NOW (HM5_10) 8000 1 //"Pick up the bank van." blob_flag = 0 // CLEAR_ONSCREEN_COUNTER bankvan1_health_heist5 bankvan1_blip_on_heist5 = 1 ENDIF ENDIF ENDIF IF flag_player_had_message_heist5 = 1 REMOVE_BLIP heli_blip_heist5 IF correct_vehicle_on_winch_heist5 = 1 IF flag_end_blip_on_heist5 = 0 REMOVE_BLIP blip_coord1_heist5 ADD_BLIP_FOR_COORD locateX_heist5 locateY_heist5 locateZ_heist5 blip_coord1_heist5 //PRINT_NOW (HM5_2) 5000 1 //"Good now take the helicopter to the Aircraft Graveyard in the desert." //blob_flag = 1 flag_end_blip_on_heist5 = 1 ENDIF PRINT_NOW (HM5_2) 5000 1 //"Good now take the helicopter to the Aircraft Graveyard in the desert." blob_flag = 1 flag_player_had_message_heist5 = 0 ELSE IF NOT IS_CAR_DEAD bankvan1_heist5 IF bankvan1_blip_on_heist5 = 0 REMOVE_BLIP bankvan1_blip_heist5 ADD_BLIP_FOR_CAR bankvan1_heist5 bankvan1_blip_heist5 SET_BLIP_AS_FRIENDLY bankvan1_blip_heist5 TRUE PRINT_NOW (HM5_10) 8000 1 //"Pick up the bank van." blob_flag = 0 // CLEAR_ONSCREEN_COUNTER bankvan1_health_heist5 GET_CAR_COORDINATES bankvan1_heist5 bankvan1X_heist5 bankvan1Y_heist5 bankvan1Z_heist5 GET_CAR_COORDINATES heli_heist5 heli1X_heist5 heli1Y_heist5 heli1Z_heist5 GET_DISTANCE_BETWEEN_COORDS_2D heli1X_heist5 heli1Y_heist5 bankvan1X_heist5 bankvan1Y_heist5 dis_heli_van_heist5 IF NOT IS_LINE_OF_SIGHT_CLEAR heli1X_heist5 heli1Y_heist5 heli1Z_heist5 bankvan1X_heist5 bankvan1Y_heist5 bankvan1Z_heist5 TRUE FALSE FALSE FALSE FALSE IF van_in_bad_area_heist5 = 0 TIMERA = 0 van_in_bad_area_heist5 = 1 ELSE IF TIMERA >= 10000 PRINT_NOW (HM5_14) 8000 1 //"You have got the van stuck! GOTO mission_heist5_failed ENDIF ENDIF ENDIF bankvan1_blip_on_heist5 = 1 ENDIF ENDIF flag_player_had_message_heist5 = 0 ENDIF ENDIF // player not in helicopter ELSE IF flag_player_had_message_heist5 = 0 blob_flag = 0 IF flag_end_blip_on_heist5 = 1 REMOVE_BLIP blip_coord1_heist5 flag_end_blip_on_heist5 = 0 ENDIF IF bankvan1_blip_on_heist5 = 1 REMOVE_BLIP bankvan1_blip_heist5 bankvan1_blip_on_heist5 = 0 ENDIF REMOVE_BLIP heli_blip_heist5 ADD_BLIP_FOR_CAR heli_heist5 heli_blip_heist5 SET_BLIP_AS_FRIENDLY heli_blip_heist5 TRUE PRINT_NOW (IN_VEH) 5000 1 //"Get back in the helicopter!" flag_player_had_message_heist5 = 1 ENDIF ENDIF ENDIF ENDWHILE CLEAR_THIS_PRINT (HM5_12) // message about van not being on wheels REMOVE_BLIP blip_coord1_heist5 IF NOT IS_CAR_DEAD bankvan1_heist5 REMOVE_BLIP bankvan1_blip_heist5 IF NOT IS_CAR_DEAD heli_heist5 RELEASE_ENTITY_FROM_WINCH heli_heist5 ELSE PRINT_NOW (HM5_3) 5000 1 //"You destroyed the copter!" GOTO mission_heist5_failed ENDIF ELSE REMOVE_BLIP bankvan1_blip_heist5 PRINT_NOW (HM5_9) 8000 1//"You destroyed the van." GOTO mission_heist5_failed ENDIF PRINT_NOW (HM5_13) 8000 1 //"Now land the helicopter." ADD_BLIP_FOR_COORD heli_locateX_heist5 heli_locateY_heist5 heli_locateZ_heist5 heli_land_blip_heist5 flag_player_had_message_heist5 = 0 blob_flag = 1 LOAD_MISSION_AUDIO 1 SOUND_HE5_AA LOAD_MISSION_AUDIO 2 SOUND_HE5_AB WHILE NOT LOCATE_STOPPED_CAR_3D heli_heist5 heli_locateX_heist5 heli_locateY_heist5 heli_locateZ_heist5 20.0 20.0 4.0 blob_flag OR NOT IS_CHAR_SITTING_IN_CAR scplayer heli_heist5 OR NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CAR_DEAD bankvan1_heist5 REMOVE_BLIP bankvan1_blip_heist5 PRINT_NOW (HM5_9) 8000 1//"You destroyed the van." GOTO mission_heist5_failed ENDIF // helicopter checks IF IS_CAR_DEAD heli_heist5 PRINT_NOW (HM5_3) 5000 1 //"You destroyed the copter!" GOTO mission_heist5_failed ELSE IF IS_CHAR_IN_CAR scplayer heli_heist5 IF flag_player_had_message_heist5 = 1 REMOVE_BLIP heli_blip_heist5 PRINT_NOW (HM5_13) 8000 1 //"Now land the helicopter." ADD_BLIP_FOR_COORD heli_locateX_heist5 heli_locateY_heist5 heli_locateZ_heist5 heli_land_blip_heist5 blob_flag = 1 flag_player_had_message_heist5 = 0 ENDIF ELSE IF flag_player_had_message_heist5 = 0 REMOVE_BLIP heli_land_blip_heist5 ADD_BLIP_FOR_CAR heli_heist5 heli_blip_heist5 SET_BLIP_AS_FRIENDLY heli_blip_heist5 TRUE PRINT_NOW (IN_VEH) 5000 1 //"Get back in the helicopter!" blob_flag = 0 flag_player_had_message_heist5 = 1 ENDIF ENDIF ENDIF ENDWHILE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF REMOVE_BLIP heli_land_blip_heist5 REMOVE_BLIP heli_blip_heist5 // ********************************* END CUTSCENE WITH PLAYER AND WUZI AT AIRFIELD ***************** SET_POLICE_IGNORE_PLAYER player1 TRUE SET_EVERYONE_IGNORE_PLAYER player1 TRUE DELETE_CAR bankvan1_heist5 MARK_MODEL_AS_NO_LONGER_NEEDED SECURICA MAKE_PLAYER_GANG_DISAPPEAR heli_locateX_heist5 = 365.870 heli_locateY_heist5 = 2537.868 IF NOT IS_CAR_DEAD heli_heist5 SET_CAR_COORDINATES heli_heist5 heli_locateX_heist5 heli_locateY_heist5 heli_locateZ_heist5 SET_CAR_HEADING heli_heist5 214.0 SET_CAR_PROOFS heli_heist5 TRUE TRUE TRUE TRUE TRUE ELSE PRINT_NOW (HM5_3) 5000 1 //"You destroyed the copter!" GOTO mission_heist5_failed ENDIF SET_FIXED_CAMERA_POSITION 371.7336 2544.8562 16.6086 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 371.3514 2543.9441 16.7564 JUMP_CUT WAIT 2000 SKIP_CUTSCENE_START IF NOT IS_CAR_DEAD heli_heist5 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE TASK_LEAVE_CAR scplayer heli_heist5 ELSE PRINT_NOW (HM5_3) 5000 1 //"You destroyed the copter!" GOTO mission_heist5_failed ENDIF WHILE IS_CHAR_IN_ANY_CAR scplayer WAIT 0 IF IS_CAR_DEAD heli_heist5 PRINT_NOW (HM5_3) 5000 1 //"You destroyed the copter!" GOTO mission_heist5_failed ENDIF ENDWHILE SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED CREATE_CHAR PEDTYPE_CIVMALE TRIADA 375.081 2535.866 15.640 wuzi_heist5 SET_CHAR_DECISION_MAKER wuzi_heist5 dm_empty_heist5 SET_CHAR_ONLY_DAMAGED_BY_PLAYER wuzi_heist5 TRUE SET_CHAR_PROOFS wuzi_heist5 TRUE TRUE TRUE TRUE TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH wuzi_heist5 TRUE TASK_GO_STRAIGHT_TO_COORD scplayer 370.364 2538.753 15.643 PEDMOVE_WALK -1 WHILE NOT LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer 370.364 2538.753 15.643 1.0 1.0 2.0 FALSE WAIT 0 IF IS_CAR_DEAD heli_heist5 PRINT_NOW (HM5_3) 5000 1 //"You destroyed the copter!" GOTO mission_heist5_failed ENDIF IF IS_CHAR_DEAD wuzi_heist5 PRINT_NOW (HM5_16) 8000 1 //"Wuzi is dead!" GOTO mission_heist5_failed ENDIF ENDWHILE IF NOT IS_CHAR_DEAD wuzi_heist5 TASK_GOTO_CHAR wuzi_heist5 scplayer -1 1.3 PLAY_MISSION_AUDIO 1 PRINT_NOW (HE5_AA) 10000 1 //"Heeey, CJ, you never cease to amaze me!" START_CHAR_FACIAL_TALK wuzi_heist5 999999 TASK_PLAY_ANIM_NON_INTERRUPTABLE wuzi_heist5 IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 TASK_TURN_CHAR_TO_FACE_CHAR scplayer wuzi_heist5 ELSE PRINT_NOW (HM5_16) 8000 1 //"Wuzi is dead!" GOTO mission_heist5_failed ENDIF TIMERA = 0 WHILE NOT LOCATE_CHAR_ON_FOOT_CHAR_3D wuzi_heist5 scplayer 1.2 1.2 2.0 FALSE OR NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CAR_DEAD heli_heist5 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (HE5_AA) PRINT_NOW (HM5_3) 5000 1 //"You destroyed the copter!" GOTO mission_heist5_failed ENDIF IF IS_CHAR_DEAD wuzi_heist5 PRINT_NOW (HM5_16) 8000 1 //"Wuzi is dead!" GOTO mission_heist5_failed ELSE IF TIMERA >= 15000 SET_CHAR_COORDINATES wuzi_heist5 371.364 2538.753 15.643 ENDIF ENDIF ENDWHILE IF NOT IS_CHAR_DEAD wuzi_heist5 CLEAR_CHAR_TASKS wuzi_heist5 ELSE PRINT_NOW (HM5_16) 8000 1 //"Wuzi is dead!" GOTO mission_heist5_failed ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT (HE5_AA) IF NOT IS_CHAR_DEAD wuzi_heist5 STOP_CHAR_FACIAL_TALK wuzi_heist5 ELSE PRINT_NOW (HM5_16) 8000 1 //"Wuzi is dead!" GOTO mission_heist5_failed ENDIF IF IS_PLAYER_PLAYING player1 PLAY_MISSION_AUDIO 2 PRINT_NOW (HE5_AB) 10000 1 //"Heh heh, where’s Woozie?" TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 START_CHAR_FACIAL_TALK scplayer 999999 IF NOT IS_CHAR_DEAD wuzi_heist5 TASK_TURN_CHAR_TO_FACE_CHAR scplayer wuzi_heist5 ELSE PRINT_NOW (HM5_16) 8000 1 //"Wuzi is dead!" GOTO mission_heist5_failed ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (HE5_AB) ENDIF LOAD_MISSION_AUDIO 1 SOUND_HE5_AC WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 OR NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CAR_DEAD heli_heist5 PRINT_NOW (HM5_3) 5000 1 //"You destroyed the copter!" GOTO mission_heist5_failed ENDIF IF IS_CHAR_DEAD wuzi_heist5 PRINT_NOW (HM5_16) 8000 1 //"Wuzi is dead!" GOTO mission_heist5_failed ENDIF IF NOT IS_PLAYER_PLAYING player1 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (HE5_AB) ENDIF ENDWHILE CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (HE5_AB) CLEAR_CHAR_TASKS scplayer STOP_CHAR_FACIAL_TALK scplayer IF NOT IS_CHAR_DEAD wuzi_heist5 PLAY_MISSION_AUDIO 1 PRINT_NOW (HE5_AC) 10000 1 //"He insisted on driving here himself. He could be anywhere." START_CHAR_FACIAL_TALK wuzi_heist5 999999 TASK_PLAY_ANIM_NON_INTERRUPTABLE wuzi_heist5 IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (HE5_AC) PRINT_NOW (HM5_16) 8000 1 //"Wuzi is dead!" GOTO mission_heist5_failed ENDIF LOAD_MISSION_AUDIO 2 SOUND_HE5_AD WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CAR_DEAD heli_heist5 PRINT_NOW (HM5_3) 5000 1 //"You destroyed the copter!" GOTO mission_heist5_failed ENDIF IF IS_CHAR_DEAD wuzi_heist5 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (HE5_AC) PRINT_NOW (HM5_16) 8000 1 //"Wuzi is dead!" GOTO mission_heist5_failed ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT (HE5_AC) IF NOT IS_CHAR_DEAD wuzi_heist5 STOP_CHAR_FACIAL_TALK wuzi_heist5 ELSE PRINT_NOW (HM5_16) 8000 1 //"Wuzi is dead!" GOTO mission_heist5_failed ENDIF IF NOT IS_CHAR_DEAD wuzi_heist5 CLEAR_CHAR_TASKS wuzi_heist5 ELSE PRINT_NOW (HM5_16) 8000 1 //"Wuzi is dead!" GOTO mission_heist5_failed ENDIF IF IS_PLAYER_PLAYING player1 PLAY_MISSION_AUDIO 2 PRINT_NOW (HE5_AD) 10000 1 //"Ok, dude, I’m out of here, I’ll see you guys later." TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 START_CHAR_FACIAL_TALK scplayer 999999 ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (HE5_AD) ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 WAIT 0 IF IS_CAR_DEAD heli_heist5 PRINT_NOW (HM5_3) 5000 1 //"You destroyed the copter!" GOTO mission_heist5_failed ENDIF IF IS_CHAR_DEAD wuzi_heist5 PRINT_NOW (HM5_16) 8000 1 //"Wuzi is dead!" GOTO mission_heist5_failed ENDIF IF NOT IS_PLAYER_PLAYING player1 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (HE5_AD) ENDIF ENDWHILE CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (HE5_AD) CLEAR_CHAR_TASKS scplayer STOP_CHAR_FACIAL_TALK scplayer IF NOT IS_CHAR_DEAD wuzi_heist5 TASK_GO_STRAIGHT_TO_COORD wuzi_heist5 378.998 2534.098 15.624 PEDMOVE_WALK -1 ELSE PRINT_NOW (HM5_16) 8000 1 //"Wuzi is dead!" GOTO mission_heist5_failed ENDIF WAIT 1200 TASK_GO_STRAIGHT_TO_COORD scplayer 379.998 2534.098 15.624 PEDMOVE_WALK -1 TIMERA = 0 WHILE TIMERA <= 3000 WAIT 0 IF IS_CAR_DEAD heli_heist5 PRINT_NOW (HM5_3) 5000 1 //"You destroyed the copter!" GOTO mission_heist5_failed ENDIF IF IS_CHAR_DEAD wuzi_heist5 PRINT_NOW (HM5_16) 8000 1 //"Wuzi is dead!" GOTO mission_heist5_failed ENDIF ENDWHILE DELETE_CAR heli_heist5 DELETE_CHAR wuzi_heist5 SET_CHAR_COORDINATES scplayer 388.007 2532.546 15.594 SET_CAMERA_BEHIND_PLAYER flag_watched_end_cutscene_heist5 = 1 SKIP_CUTSCENE_END IF flag_watched_end_cutscene_heist5 = 0 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_HELP CLEAR_PRINTS SWITCH_WIDESCREEN OFF CLEAR_AREA 388.007 2532.546 15.594 5.0 TRUE IF IS_CHAR_IN_FLYING_VEHICLE scplayer STORE_CAR_CHAR_IS_IN scplayer stored_vehicle_heist5 WARP_CHAR_FROM_CAR_TO_COORD scplayer 388.007 2532.546 15.594 WHILE IS_CHAR_IN_FLYING_VEHICLE scplayer WAIT 0 IF IS_CAR_DEAD heli_heist5 ENDIF IF IS_CHAR_DEAD wuzi_heist5 ENDIF ENDWHILE SET_CHAR_HEADING scplayer 270.0 ELSE SET_CHAR_COORDINATES scplayer 388.007 2532.546 15.594 SET_CHAR_HEADING scplayer 270.0 ENDIF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DELETE_CAR heli_heist5 DELETE_CHAR wuzi_heist5 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF MAKE_PLAYER_GANG_REAPPEAR SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_POLICE_IGNORE_PLAYER player1 FALSE SET_EVERYONE_IGNORE_PLAYER player1 FALSE GOTO mission_heist5_passed // **************************************** Mission heist5 failed *********************** mission_heist5_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // **************************************** mission heist5 passed ************************ mission_heist5_passed: flag_heist_mission_counter ++ //Used to terminate this mission loop in the main script. These varibles will be set up in the main.sc REGISTER_MISSION_PASSED (HEIST_5) //Used in the stats PLAYER_MADE_PROGRESS 1 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 0 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 25 //amount of respect CLEAR_WANTED_LEVEL player1 IF flag_mob_vegas[6] = 0 REMOVE_BLIP theheist_contact_blip ENDIF SWITCH_CAR_GENERATOR hm5_car_gen 101 PLAY_MISSION_PASSED_TUNE 1 RETURN // ********************************** mission cleanup *********************************** mission_cleanup_heist5: DETACH_CHAR_FROM_CAR scplayer SET_WANTED_MULTIPLIER 1.0 IF d5_bronze_generator_unlocked = 1 SWITCH_CAR_GENERATOR d5_bronze_generator 101 ENDIF IF d5_silver_generator_unlocked = 1 SWITCH_CAR_GENERATOR d5_silver_generator 101 ENDIF IF d5_gold_generator_unlocked = 1 SWITCH_CAR_GENERATOR d5_gold_generator 101 ENDIF IF NOT HAS_PICKUP_BEEN_COLLECTED grenades_heist5 REMOVE_PICKUP grenades_heist5 ENDIF IF NOT HAS_PICKUP_BEEN_COLLECTED armour_heist5 REMOVE_PICKUP armour_heist5 ENDIF IF NOT HAS_PICKUP_BEEN_COLLECTED health_heist5 REMOVE_PICKUP health_heist5 ENDIF gate_stay_open = 0 SWITCH_AMBIENT_PLANES TRUE SWITCH_POLICE_HELIS TRUE flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start //Used to reset the mobile phone timer so it doesn't ring immediately after the mission REMOVE_SPHERE sphere_heist5 MARK_MODEL_AS_NO_LONGER_NEEDED LEVIATHN MARK_MODEL_AS_NO_LONGER_NEEDED ARMY MARK_MODEL_AS_NO_LONGER_NEEDED M4 MARK_MODEL_AS_NO_LONGER_NEEDED ROCKETLA MARK_MODEL_AS_NO_LONGER_NEEDED HUNTER MARK_MODEL_AS_NO_LONGER_NEEDED minigun_base MARK_MODEL_AS_NO_LONGER_NEEDED minigun MARK_MODEL_AS_NO_LONGER_NEEDED SECURICA MARK_MODEL_AS_NO_LONGER_NEEDED PATRIOT MARK_MODEL_AS_NO_LONGER_NEEDED TRIADA REMOVE_DECISION_MAKER dm_duck_heist5 REMOVE_DECISION_MAKER dm_noduck_heist5 REMOVE_DECISION_MAKER dm_empty_heist5 REMOVE_BLIP heli_blip_heist5 REMOVE_BLIP blip_coord1_heist5 REMOVE_BLIP dummy_blip_heist5 REMOVE_BLIP heli_land_blip_heist5 REMOVE_BLIP minigun_blip_heist5 REMOVE_BLIP chopper1_backup_blip_heist5 REMOVE_BLIP chopper2_backup_blip_heist5 REMOVE_BLIP bankvan1_blip_heist5 CLEAR_SEQUENCE_TASK kill_player_heist5 CLEAR_SEQUENCE_TASK kill2_player_heist5 CLEAR_SEQUENCE_TASK guard1_warehouse_task_heist5 CLEAR_SEQUENCE_TASK guard2_warehouse_task_heist5 CLEAR_SEQUENCE_TASK guard9_warehouse_task_heist5 CLEAR_SEQUENCE_TASK guard10_warehouse_task_heist5 CLEAR_SEQUENCE_TASK guard11_warehouse_task_heist5 CLEAR_SEQUENCE_TASK guard12_warehouse_task_heist5 //CLEAR_ONSCREEN_COUNTER bankvan1_health_heist5 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_MISSION_AUDIO 3 MISSION_HAS_FINISHED RETURN // Checks to see if the player is in any flying vehicle. rocket_check_heist5: IF NOT IS_CHAR_DEAD guardnumber[3] IF IS_CHAR_IN_FLYING_VEHICLE scplayer OR IS_PLAYER_USING_JETPACK player1 OR player_fall_state > 0 REMOVE_ALL_CHAR_WEAPONS guardnumber[3] GIVE_WEAPON_TO_CHAR guardnumber[3] WEAPONTYPE_ROCKETLAUNCHER 30000 // Set to infinate ammo SET_CHAR_ACCURACY guardnumber[3] 85 SET_CHAR_SHOOT_RATE guardnumber[3] 40 ELSE REMOVE_ALL_CHAR_WEAPONS guardnumber[3] GIVE_WEAPON_TO_CHAR guardnumber[3] WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_ACCURACY guardnumber[3] 70 SET_CHAR_SHOOT_RATE guardnumber[3] 40 ENDIF ENDIF IF NOT IS_CHAR_DEAD guardnumber[4] IF IS_CHAR_IN_FLYING_VEHICLE scplayer OR IS_PLAYER_USING_JETPACK player1 OR player_fall_state > 0 REMOVE_ALL_CHAR_WEAPONS guardnumber[4] GIVE_WEAPON_TO_CHAR guardnumber[4] WEAPONTYPE_ROCKETLAUNCHER 30000 // Set to infinate ammo SET_CHAR_ACCURACY guardnumber[4] 85 SET_CHAR_SHOOT_RATE guardnumber[4] 40 ELSE REMOVE_ALL_CHAR_WEAPONS guardnumber[4] GIVE_WEAPON_TO_CHAR guardnumber[4] WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_ACCURACY guardnumber[4] 70 SET_CHAR_SHOOT_RATE guardnumber[4] 45 ENDIF ENDIF IF NOT IS_CHAR_DEAD guardnumber[5] IF IS_CHAR_IN_FLYING_VEHICLE scplayer OR IS_PLAYER_USING_JETPACK player1 OR player_fall_state > 0 REMOVE_ALL_CHAR_WEAPONS guardnumber[5] GIVE_WEAPON_TO_CHAR guardnumber[5] WEAPONTYPE_ROCKETLAUNCHER 30000 // Set to infinate ammo SET_CHAR_ACCURACY guardnumber[5] 85 SET_CHAR_SHOOT_RATE guardnumber[5] 40 ELSE REMOVE_ALL_CHAR_WEAPONS guardnumber[5] GIVE_WEAPON_TO_CHAR guardnumber[5] WEAPONTYPE_M4 30000 // Set to infinate ammo SET_CHAR_ACCURACY guardnumber[5] 70 SET_CHAR_SHOOT_RATE guardnumber[5] 50 ENDIF ENDIF RETURN // Tells the snipers to attack the player guard_checks_heist5: IF guards_killing_player_heist5 = 0 IF NOT IS_CHAR_DEAD perimiter_guard1_heist5 TASK_KILL_CHAR_ON_FOOT perimiter_guard1_heist5 scplayer ENDIF IF NOT IS_CHAR_DEAD perimiter_guard2_heist5 TASK_KILL_CHAR_ON_FOOT perimiter_guard2_heist5 scplayer ENDIF IF NOT IS_CHAR_DEAD perimiter_guard3_heist5 TASK_KILL_CHAR_ON_FOOT perimiter_guard3_heist5 scplayer ENDIF IF NOT IS_CHAR_DEAD guard1_warehouse_heist5 PERFORM_SEQUENCE_TASK guard1_warehouse_heist5 guard1_warehouse_task_heist5 ENDIF IF NOT IS_CHAR_DEAD guard2_warehouse_heist5 PERFORM_SEQUENCE_TASK guard2_warehouse_heist5 guard2_warehouse_task_heist5 ENDIF IF NOT IS_CHAR_DEAD guard3_warehouse_heist5 TASK_KILL_CHAR_ON_FOOT guard3_warehouse_heist5 scplayer SET_CHAR_STAY_IN_SAME_PLACE guard3_warehouse_heist5 TRUE ENDIF IF NOT IS_CHAR_DEAD guard4_warehouse_heist5 TASK_KILL_CHAR_ON_FOOT guard4_warehouse_heist5 scplayer SET_CHAR_STAY_IN_SAME_PLACE guard4_warehouse_heist5 TRUE ENDIF IF NOT IS_CHAR_DEAD guard5_warehouse_heist5 TASK_KILL_CHAR_ON_FOOT guard5_warehouse_heist5 scplayer SET_CHAR_STAY_IN_SAME_PLACE guard5_warehouse_heist5 TRUE ENDIF // IF NOT IS_CHAR_DEAD guard6_warehouse_heist5 // TASK_KILL_CHAR_ON_FOOT guard6_warehouse_heist5 scplayer // SET_CHAR_STAY_IN_SAME_PLACE guard6_warehouse_heist5 TRUE // ENDIF IF NOT IS_CHAR_DEAD guard7_warehouse_heist5 TASK_KILL_CHAR_ON_FOOT guard7_warehouse_heist5 scplayer SET_CHAR_STAY_IN_SAME_PLACE guard7_warehouse_heist5 TRUE ENDIF IF NOT IS_CHAR_DEAD guard8_warehouse_heist5 TASK_KILL_CHAR_ON_FOOT guard8_warehouse_heist5 scplayer SET_CHAR_STAY_IN_SAME_PLACE guard8_warehouse_heist5 TRUE ENDIF IF NOT IS_CHAR_DEAD guard9_warehouse_heist5 PERFORM_SEQUENCE_TASK guard9_warehouse_heist5 guard9_warehouse_task_heist5 ENDIF IF NOT IS_CHAR_DEAD guard10_warehouse_heist5 PERFORM_SEQUENCE_TASK guard10_warehouse_heist5 guard10_warehouse_task_heist5 ENDIF IF NOT IS_CHAR_DEAD guard11_warehouse_heist5 PERFORM_SEQUENCE_TASK guard11_warehouse_heist5 guard11_warehouse_task_heist5 ENDIF IF NOT IS_CHAR_DEAD guard12_warehouse_heist5 PERFORM_SEQUENCE_TASK guard12_warehouse_heist5 guard12_warehouse_task_heist5 ENDIF guards_killing_player_heist5 = 1 ENDIF RETURN // Checks for the player being close to the guards and sets them not to duck. warehouse_area_checks_heist5: IF NOT IS_CHAR_DEAD guard1_warehouse_heist5 IF LOCATE_CHAR_ON_FOOT_CHAR_3D scplayer guard1_warehouse_heist5 3.0 3.0 2.0 FALSE SET_CHAR_DECISION_MAKER guard1_warehouse_heist5 dm_noduck_heist5 ELSE SET_CHAR_DECISION_MAKER guard1_warehouse_heist5 dm_duck_heist5 ENDIF ENDIF IF NOT IS_CHAR_DEAD guard2_warehouse_heist5 IF LOCATE_CHAR_ON_FOOT_CHAR_3D scplayer guard2_warehouse_heist5 3.0 3.0 2.0 FALSE SET_CHAR_DECISION_MAKER guard2_warehouse_heist5 dm_noduck_heist5 ELSE SET_CHAR_DECISION_MAKER guard2_warehouse_heist5 dm_duck_heist5 ENDIF ENDIF IF NOT IS_CHAR_DEAD guard3_warehouse_heist5 IF LOCATE_CHAR_ON_FOOT_CHAR_3D scplayer guard3_warehouse_heist5 3.0 3.0 2.0 FALSE SET_CHAR_DECISION_MAKER guard3_warehouse_heist5 dm_noduck_heist5 ELSE SET_CHAR_DECISION_MAKER guard3_warehouse_heist5 dm_duck_heist5 ENDIF ENDIF IF NOT IS_CHAR_DEAD guard4_warehouse_heist5 IF LOCATE_CHAR_ON_FOOT_CHAR_3D scplayer guard4_warehouse_heist5 3.0 3.0 2.0 FALSE SET_CHAR_DECISION_MAKER guard4_warehouse_heist5 dm_noduck_heist5 ELSE SET_CHAR_DECISION_MAKER guard4_warehouse_heist5 dm_duck_heist5 ENDIF ENDIF IF NOT IS_CHAR_DEAD guard5_warehouse_heist5 IF LOCATE_CHAR_ON_FOOT_CHAR_3D scplayer guard5_warehouse_heist5 3.0 3.0 2.0 FALSE SET_CHAR_DECISION_MAKER guard5_warehouse_heist5 dm_noduck_heist5 ELSE SET_CHAR_DECISION_MAKER guard5_warehouse_heist5 dm_duck_heist5 ENDIF ENDIF // IF NOT IS_CHAR_DEAD guard6_warehouse_heist5 // // IF LOCATE_CHAR_ON_FOOT_CHAR_3D scplayer guard6_warehouse_heist5 3.0 3.0 2.0 FALSE // SET_CHAR_DECISION_MAKER guard6_warehouse_heist5 dm_noduck_heist5 // ELSE // SET_CHAR_DECISION_MAKER guard6_warehouse_heist5 dm_duck_heist5 // ENDIF // // ENDIF IF NOT IS_CHAR_DEAD guard7_warehouse_heist5 IF LOCATE_CHAR_ON_FOOT_CHAR_3D scplayer guard7_warehouse_heist5 3.0 3.0 2.0 FALSE SET_CHAR_DECISION_MAKER guard7_warehouse_heist5 dm_noduck_heist5 ELSE SET_CHAR_DECISION_MAKER guard7_warehouse_heist5 dm_duck_heist5 ENDIF ENDIF IF NOT IS_CHAR_DEAD guard8_warehouse_heist5 IF LOCATE_CHAR_ON_FOOT_CHAR_3D scplayer guard8_warehouse_heist5 3.0 3.0 2.0 FALSE SET_CHAR_DECISION_MAKER guard8_warehouse_heist5 dm_noduck_heist5 ELSE SET_CHAR_DECISION_MAKER guard8_warehouse_heist5 dm_duck_heist5 ENDIF ENDIF RETURN // guard one to give player a warning. guard1_code_heist5: IF NOT IS_CHAR_DEAD gateguard1_heist5 IF flag_base_alerted_heist5 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 gateguard1_heist5 OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON gateguard1_heist5 WEAPONTYPE_ANYWEAPON flag_base_alerted_heist5 = 1 ENDIF IF NOT IS_CHAR_IN_FLYING_VEHICLE scplayer IF NOT IS_PLAYER_USING_JETPACK player1 IF player_fall_state = 0 IF HAS_CHAR_SPOTTED_CHAR gateguard1_heist5 scplayer OR IS_CHAR_IN_AREA_3D scplayer 2497.387 2858.018 8.0 2676.413 2683.661 60.0 FALSE GET_CHAR_COORDINATES scplayer player_X player_Y player_Z IF flag_warn_player_heist5 = 0 IF LOCATE_CHAR_ON_FOOT_CHAR_3D scplayer gateguard1_heist5 8.0 8.0 8.0 FALSE PRINT_NOW (HE5_BA) 8000 1 //"You have 5 second to leave or die!" ENDIF GET_CHAR_COORDINATES gateguard1_heist5 gateguard1X_heist5 gateguard1Y_heist5 gateguard1Z_heist5 SET_MISSION_AUDIO_POSITION 1 gateguard1X_heist5 gateguard1Y_heist5 gateguard1Z_heist5 PLAY_MISSION_AUDIO 1 START_CHAR_FACIAL_TALK gateguard1_heist5 999999 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH gateguard1_heist5 TRUE TIMERB = 0 TASK_GOTO_CHAR gateguard1_heist5 scplayer -1 2.0 flag_warn_player_heist5 = 1 ENDIF IF flag_warn_player_heist5 = 1 GET_SCRIPT_TASK_STATUS gateguard1_heist5 TASK_GOTO_CHAR task_status2 IF task_status2 = FINISHED_TASK flag_warn_player_heist5 = 2 ENDIF ENDIF IF flag_warn_player_heist5 >= 1 WHILE TIMERB < 3000 WAIT 0 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_THIS_PRINT (HE5_BA) IF NOT IS_CHAR_DEAD gateguard1_heist5 STOP_CHAR_FACIAL_TALK gateguard1_heist5 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH gateguard1_heist5 FALSE ELSE gateguard1_dead_heist5 = 1 ENDIF ENDIF IF flag_base_alerted_heist5 = 1 IF NOT IS_CHAR_DEAD gateguard1_heist5 IF flag_gateguard1_got_ai_heist5 = 0 CLEAR_ALL_CHAR_RELATIONSHIPS gateguard1_heist5 ACQUAINTANCE_TYPE_PED_HATE SET_CHAR_RELATIONSHIP gateguard1_heist5 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 TASK_KILL_CHAR_ON_FOOT gateguard1_heist5 scplayer flag_gateguard1_got_ai_heist5 = 1 ENDIF ELSE IF gateguard1_dead_heist5 = 0 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (HE5_BA) CLEAR_THIS_PRINT (HE5_BB) gateguard1_dead_heist5 = 1 ENDIF ENDIF ELSE IF gateguard1_dead_heist5 = 0 IF IS_CHAR_DEAD gateguard1_heist5 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (HE5_BA) CLEAR_THIS_PRINT (HE5_BB) flag_base_alerted_heist5 = 1 gateguard1_dead_heist5 = 1 ELSE IF IS_PLAYER_TARGETTING_CHAR player1 gateguard1_heist5 OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON gateguard1_heist5 WEAPONTYPE_ANYWEAPON flag_base_alerted_heist5 = 1 ENDIF ENDIF ENDIF ENDIF ENDWHILE IF IS_CHAR_IN_AREA_3D scplayer 2497.387 2858.018 8.0 2676.413 2683.661 60.0 FALSE IF NOT IS_CHAR_DEAD gateguard1_heist5 IF flag_base_alerted_heist5 >= 0 IF LOCATE_CHAR_ON_FOOT_CHAR_3D scplayer gateguard1_heist5 8.0 8.0 8.0 FALSE PRINT_NOW (HE5_BD) 8000 1 //"OPEN FIRE!" ENDIF START_CHAR_FACIAL_TALK gateguard1_heist5 999999 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH gateguard1_heist5 TRUE GET_CHAR_COORDINATES gateguard1_heist5 gateguard1X_heist5 gateguard1Y_heist5 gateguard1Z_heist5 SET_MISSION_AUDIO_POSITION 2 gateguard1X_heist5 gateguard1Y_heist5 gateguard1Z_heist5 PLAY_MISSION_AUDIO 2 ENDIF IF flag_gateguard1_got_ai_heist5 = 0 CLEAR_ALL_CHAR_RELATIONSHIPS gateguard1_heist5 ACQUAINTANCE_TYPE_PED_HATE SET_CHAR_RELATIONSHIP gateguard1_heist5 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 TASK_KILL_CHAR_ON_FOOT gateguard1_heist5 scplayer flag_gateguard1_got_ai_heist5 = 1 ENDIF flag_base_alerted_heist5 = 1 ELSE IF gateguard1_dead_heist5 = 0 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (HE5_BA) CLEAR_THIS_PRINT (HE5_BB) gateguard1_dead_heist5 = 1 ENDIF flag_base_alerted_heist5 = 1 ENDIF ENDIF ENDIF ENDIF ELSE flag_base_alerted_heist5 = 1 ENDIF ELSE flag_base_alerted_heist5 = 1 ENDIF ELSE flag_base_alerted_heist5 = 1 ENDIF ELSE IF NOT IS_CHAR_DEAD gateguard1_heist5 IF flag_gateguard1_got_ai_heist5 = 0 CLEAR_ALL_CHAR_RELATIONSHIPS gateguard1_heist5 ACQUAINTANCE_TYPE_PED_HATE CLEAR_ALL_CHAR_RELATIONSHIPS gateguard1_heist5 ACQUAINTANCE_TYPE_PED_LIKE SET_CHAR_RELATIONSHIP gateguard1_heist5 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP gateguard1_heist5 ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION1 TASK_KILL_CHAR_ON_FOOT gateguard1_heist5 scplayer flag_gateguard1_got_ai_heist5 = 1 ENDIF ELSE IF gateguard1_dead_heist5 = 0 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (HE5_BA) CLEAR_THIS_PRINT (HE5_BB) gateguard1_dead_heist5 = 1 ENDIF flag_base_alerted_heist5 = 1 ENDIF ENDIF ELSE IF gateguard1_dead_heist5 = 0 CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT (HE5_BA) CLEAR_THIS_PRINT (HE5_BB) gateguard1_dead_heist5 = 1 ENDIF flag_base_alerted_heist5 = 1 ENDIF RETURN // gaurd death checks guard_death_checks_heist5: // perimiter guards IF perimiter_guard1_dead_heist5 = 0 IF IS_CHAR_DEAD perimiter_guard1_heist5 flag_base_alerted_heist5 = 1 perimiter_guard1_dead_heist5 = 1 ELSE IF player_entered_depot_heist5 = 1 IF flag_base_alerted_heist5 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 perimiter_guard1_heist5 OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON perimiter_guard1_heist5 WEAPONTYPE_ANYWEAPON flag_base_alerted_heist5 = 1 ENDIF IF flag_warn_player_heist5 > 1 IF TIMERB > 3000 IF HAS_CHAR_SPOTTED_CHAR perimiter_guard1_heist5 scplayer flag_base_alerted_heist5 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF perimiter_guard2_dead_heist5 = 0 IF IS_CHAR_DEAD perimiter_guard2_heist5 flag_base_alerted_heist5 = 1 perimiter_guard2_dead_heist5 = 1 ELSE IF player_entered_depot_heist5 = 1 IF flag_base_alerted_heist5 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 perimiter_guard2_heist5 OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON perimiter_guard2_heist5 WEAPONTYPE_ANYWEAPON flag_base_alerted_heist5 = 1 ENDIF IF flag_warn_player_heist5 > 1 IF TIMERB > 3000 IF HAS_CHAR_SPOTTED_CHAR perimiter_guard2_heist5 scplayer flag_base_alerted_heist5 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF perimiter_guard3_dead_heist5 = 0 IF IS_CHAR_DEAD perimiter_guard3_heist5 flag_base_alerted_heist5 = 1 perimiter_guard3_dead_heist5 = 1 ELSE IF player_entered_depot_heist5 = 1 IF flag_base_alerted_heist5 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 perimiter_guard3_heist5 OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON perimiter_guard3_heist5 WEAPONTYPE_ANYWEAPON flag_base_alerted_heist5 = 1 ENDIF IF flag_warn_player_heist5 > 1 IF TIMERB > 3000 IF HAS_CHAR_SPOTTED_CHAR perimiter_guard3_heist5 scplayer flag_base_alerted_heist5 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // warehouse guards IF guard1_warehouse_dead_heist5 = 0 IF IS_CHAR_DEAD guard1_warehouse_heist5 flag_base_alerted_heist5 = 1 guard1_warehouse_dead_heist5 = 1 ELSE IF player_entered_depot_heist5 = 1 IF flag_base_alerted_heist5 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 guard1_warehouse_heist5 OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON guard1_warehouse_heist5 WEAPONTYPE_ANYWEAPON flag_base_alerted_heist5 = 1 ENDIF IF flag_warn_player_heist5 > 1 IF TIMERB > 3000 IF HAS_CHAR_SPOTTED_CHAR guard1_warehouse_heist5 scplayer flag_base_alerted_heist5 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF guard2_warehouse_dead_heist5 = 0 IF IS_CHAR_DEAD guard2_warehouse_heist5 flag_base_alerted_heist5 = 1 guard2_warehouse_dead_heist5 = 1 ELSE IF player_entered_depot_heist5 = 1 IF flag_base_alerted_heist5 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 guard2_warehouse_heist5 OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON guard2_warehouse_heist5 WEAPONTYPE_ANYWEAPON flag_base_alerted_heist5 = 1 ENDIF IF flag_warn_player_heist5 > 1 IF TIMERB > 3000 IF HAS_CHAR_SPOTTED_CHAR guard2_warehouse_heist5 scplayer flag_base_alerted_heist5 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF guard3_warehouse_dead_heist5 = 0 IF IS_CHAR_DEAD guard3_warehouse_heist5 flag_base_alerted_heist5 = 1 guard3_warehouse_dead_heist5 = 1 ELSE IF player_entered_depot_heist5 = 1 IF flag_base_alerted_heist5 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 guard3_warehouse_heist5 OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON guard3_warehouse_heist5 WEAPONTYPE_ANYWEAPON flag_base_alerted_heist5 = 1 ENDIF IF flag_warn_player_heist5 > 1 IF TIMERB > 3000 IF HAS_CHAR_SPOTTED_CHAR guard3_warehouse_heist5 scplayer flag_base_alerted_heist5 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF guard4_warehouse_dead_heist5 = 0 IF IS_CHAR_DEAD guard4_warehouse_heist5 flag_base_alerted_heist5 = 1 guard4_warehouse_dead_heist5 = 1 ELSE IF player_entered_depot_heist5 = 1 IF flag_base_alerted_heist5 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 guard4_warehouse_heist5 OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON guard4_warehouse_heist5 WEAPONTYPE_ANYWEAPON flag_base_alerted_heist5 = 1 ENDIF IF flag_warn_player_heist5 > 1 IF TIMERB > 3000 IF HAS_CHAR_SPOTTED_CHAR guard4_warehouse_heist5 scplayer flag_base_alerted_heist5 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF guard5_warehouse_dead_heist5 = 0 IF IS_CHAR_DEAD guard5_warehouse_heist5 flag_base_alerted_heist5 = 1 guard5_warehouse_dead_heist5 = 1 ELSE IF player_entered_depot_heist5 = 1 IF flag_base_alerted_heist5 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 guard5_warehouse_heist5 OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON guard5_warehouse_heist5 WEAPONTYPE_ANYWEAPON flag_base_alerted_heist5 = 1 ENDIF IF flag_warn_player_heist5 > 1 IF TIMERB > 3000 IF HAS_CHAR_SPOTTED_CHAR guard5_warehouse_heist5 scplayer flag_base_alerted_heist5 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //IF guard6_warehouse_dead_heist5 = 0 // // IF IS_CHAR_DEAD guard6_warehouse_heist5 // flag_base_alerted_heist5 = 1 // guard6_warehouse_dead_heist5 = 1 // ELSE // // IF player_entered_depot_heist5 = 1 // // IF flag_base_alerted_heist5 = 0 // // IF IS_PLAYER_TARGETTING_CHAR player1 guard6_warehouse_heist5 // OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON guard6_warehouse_heist5 WEAPONTYPE_ANYWEAPON // flag_base_alerted_heist5 = 1 // ENDIF // // IF flag_warn_player_heist5 > 1 // // IF TIMERB > 3000 // // IF HAS_CHAR_SPOTTED_CHAR guard6_warehouse_heist5 scplayer // flag_base_alerted_heist5 = 1 // ENDIF // // ENDIF // // ENDIF // // ENDIF // // ENDIF // // ENDIF // //ENDIF IF guard7_warehouse_dead_heist5 = 0 IF IS_CHAR_DEAD guard7_warehouse_heist5 flag_base_alerted_heist5 = 1 guard7_warehouse_dead_heist5 = 1 ELSE IF player_entered_depot_heist5 = 1 IF flag_base_alerted_heist5 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 guard7_warehouse_heist5 OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON guard7_warehouse_heist5 WEAPONTYPE_ANYWEAPON flag_base_alerted_heist5 = 1 ENDIF IF flag_warn_player_heist5 > 1 IF TIMERB > 3000 IF HAS_CHAR_SPOTTED_CHAR guard7_warehouse_heist5 scplayer flag_base_alerted_heist5 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF guard8_warehouse_dead_heist5 = 0 IF IS_CHAR_DEAD guard8_warehouse_heist5 flag_base_alerted_heist5 = 1 guard8_warehouse_dead_heist5 = 1 ELSE IF player_entered_depot_heist5 = 1 IF flag_base_alerted_heist5 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 guard8_warehouse_heist5 OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON guard8_warehouse_heist5 WEAPONTYPE_ANYWEAPON flag_base_alerted_heist5 = 1 ENDIF IF flag_warn_player_heist5 > 1 IF TIMERB > 3000 IF HAS_CHAR_SPOTTED_CHAR guard8_warehouse_heist5 scplayer flag_base_alerted_heist5 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF guard9_warehouse_dead_heist5 = 0 IF IS_CHAR_DEAD guard9_warehouse_heist5 flag_base_alerted_heist5 = 1 guard9_warehouse_dead_heist5 = 1 ELSE IF player_entered_depot_heist5 = 1 IF flag_base_alerted_heist5 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 guard9_warehouse_heist5 OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON guard9_warehouse_heist5 WEAPONTYPE_ANYWEAPON flag_base_alerted_heist5 = 1 ENDIF IF flag_warn_player_heist5 > 1 IF TIMERB > 3000 IF HAS_CHAR_SPOTTED_CHAR guard9_warehouse_heist5 scplayer flag_base_alerted_heist5 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF guard10_warehouse_dead_heist5 = 0 IF IS_CHAR_DEAD guard10_warehouse_heist5 flag_base_alerted_heist5 = 1 guard10_warehouse_dead_heist5 = 1 ELSE IF player_entered_depot_heist5 = 1 IF flag_base_alerted_heist5 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 guard10_warehouse_heist5 OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON guard10_warehouse_heist5 WEAPONTYPE_ANYWEAPON flag_base_alerted_heist5 = 1 ENDIF IF flag_warn_player_heist5 > 1 IF TIMERB > 3000 IF HAS_CHAR_SPOTTED_CHAR guard10_warehouse_heist5 scplayer flag_base_alerted_heist5 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF guard11_warehouse_dead_heist5 = 0 IF IS_CHAR_DEAD guard11_warehouse_heist5 flag_base_alerted_heist5 = 1 guard11_warehouse_dead_heist5 = 1 ELSE IF player_entered_depot_heist5 = 1 IF flag_base_alerted_heist5 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 guard11_warehouse_heist5 OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON guard11_warehouse_heist5 WEAPONTYPE_ANYWEAPON flag_base_alerted_heist5 = 1 ENDIF IF flag_warn_player_heist5 > 1 IF TIMERB > 3000 IF HAS_CHAR_SPOTTED_CHAR guard11_warehouse_heist5 scplayer flag_base_alerted_heist5 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF guard12_warehouse_dead_heist5 = 0 IF IS_CHAR_DEAD guard12_warehouse_heist5 flag_base_alerted_heist5 = 1 guard12_warehouse_dead_heist5 = 1 ELSE IF player_entered_depot_heist5 = 1 IF flag_base_alerted_heist5 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 guard12_warehouse_heist5 OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON guard12_warehouse_heist5 WEAPONTYPE_ANYWEAPON flag_base_alerted_heist5 = 1 ENDIF IF flag_warn_player_heist5 > 1 IF TIMERB > 3000 IF HAS_CHAR_SPOTTED_CHAR guard12_warehouse_heist5 scplayer flag_base_alerted_heist5 = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // gate guard IF gateguard1_dead_heist5 = 0 IF IS_CHAR_DEAD gateguard1_heist5 flag_base_alerted_heist5 = 1 gateguard1_dead_heist5 = 1 ENDIF ENDIF // heli guards IF guardnumber0_dead_heist5 = 0 IF IS_CHAR_DEAD guardnumber[0] flag_base_alerted_heist5 = 1 guardnumber0_dead_heist5 = 1 ENDIF ENDIF IF guardnumber1_dead_heist5 = 0 IF IS_CHAR_DEAD guardnumber[1] flag_base_alerted_heist5 = 1 guardnumber1_dead_heist5 = 1 ENDIF ENDIF IF guardnumber2_dead_heist5 = 0 IF IS_CHAR_DEAD guardnumber[2] flag_base_alerted_heist5 = 1 guardnumber2_dead_heist5 = 1 ENDIF ENDIF IF guardnumber3_dead_heist5 = 0 IF IS_CHAR_DEAD guardnumber[3] flag_base_alerted_heist5 = 1 guardnumber3_dead_heist5 = 1 ENDIF ENDIF IF guardnumber4_dead_heist5 = 0 IF IS_CHAR_DEAD guardnumber[4] flag_base_alerted_heist5 = 1 guardnumber4_dead_heist5 = 1 ENDIF ENDIF IF guardnumber5_dead_heist5 = 0 IF IS_CHAR_DEAD guardnumber[5] flag_base_alerted_heist5 = 1 guardnumber5_dead_heist5 = 1 ENDIF ENDIF IF guardnumber6_dead_heist5 = 0 IF IS_CHAR_DEAD guardnumber[6] flag_base_alerted_heist5 = 1 guardnumber6_dead_heist5 = 1 ENDIF ENDIF RETURN // sets up the array guards array_guard_check_heist5: LVAR_INT dex // This is used to represent the index number of each part of the array 0,1,2,3 dex = 0 WHILE dex < 7 GOSUB guard_death_checks_heist5 IF player_entered_depot_heist5 = 1 GOSUB guard1_code_heist5 GOSUB rocket_check_heist5 IF flag_base_alerted_heist5 = 1 IF guards_killing_player_heist5 = 0 GOSUB guard_checks_heist5 ELSE GOSUB warehouse_area_checks_heist5 ENDIF ENDIF IF flag_base_alerted_heist5 >= 1 IF flag_gateguard1_got_ai_heist5 = 1 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT (HE5_BD) IF gateguard1_dead_heist5 = 0 IF NOT IS_CHAR_DEAD gateguard1_heist5 STOP_CHAR_FACIAL_TALK gateguard1_heist5 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH gateguard1_heist5 FALSE ELSE gateguard1_dead_heist5 = 1 ENDIF ENDIF flag_gateguard1_got_ai_heist5 = 2 ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD guardnumber[dex] // this means guardnumber[0 or 1 dex value is increased to change to each guard] GET_SCRIPT_TASK_STATUS guardnumber[dex] TASK_KILL_CHAR_ON_FOOT task_status // this is needed to stop char doing task over and over IF task_status = FINISHED_TASK // this is needed to stop char doing task over and over. IF player_entered_depot_heist5 = 1 IF flag_base_alerted_heist5 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 guardnumber[dex] OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON guardnumber[dex] WEAPONTYPE_ANYWEAPON flag_base_alerted_heist5 = 1 ENDIF IF flag_warn_player_heist5 > 1 IF TIMERB > 3000 IF HAS_CHAR_SPOTTED_CHAR guardnumber[dex] scplayer flag_base_alerted_heist5 = 1 ENDIF ENDIF ENDIF ELSE TASK_KILL_CHAR_ON_FOOT guardnumber[dex] scplayer ENDIF ENDIF // IF HAS_CHAR_SPOTTED_CHAR guardnumber[dex] scplayer // OR IS_PLAYER_TARGETTING_CHAR player1 guardnumber[dex] // OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON guardnumber[dex] WEAPONTYPE_ANYWEAPON // // flag_base_alerted_heist5 = 1 // TASK_KILL_CHAR_ON_FOOT guardnumber[dex] scplayer // ENDIF ENDIF ELSE flag_base_alerted_heist5 = 1 ENDIF ++ dex ENDWHILE RETURN // removes guards that I don't need anymore mid_mission_cleanup_heist5: IF perimiter_guard1_dead_heist5 = 0 IF NOT IS_CHAR_DEAD perimiter_guard1_heist5 DELETE_CHAR perimiter_guard1_heist5 perimiter_guard1_dead_heist5 = 1 ENDIF ENDIF IF perimiter_guard2_dead_heist5 = 0 IF NOT IS_CHAR_DEAD perimiter_guard2_heist5 DELETE_CHAR perimiter_guard2_heist5 perimiter_guard2_dead_heist5 = 1 ENDIF ENDIF IF perimiter_guard3_dead_heist5 = 0 IF NOT IS_CHAR_DEAD perimiter_guard3_heist5 DELETE_CHAR perimiter_guard3_heist5 perimiter_guard3_dead_heist5 = 1 ENDIF ENDIF IF guard1_warehouse_dead_heist5 = 0 IF NOT IS_CHAR_DEAD guard1_warehouse_heist5 DELETE_CHAR guard1_warehouse_heist5 guard1_warehouse_dead_heist5 = 1 ENDIF ENDIF IF guard2_warehouse_dead_heist5 = 0 IF NOT IS_CHAR_DEAD guard2_warehouse_heist5 DELETE_CHAR guard2_warehouse_heist5 guard2_warehouse_dead_heist5 = 1 ENDIF ENDIF IF guard3_warehouse_dead_heist5 = 0 IF NOT IS_CHAR_DEAD guard3_warehouse_heist5 DELETE_CHAR guard3_warehouse_heist5 guard3_warehouse_dead_heist5 = 1 ENDIF ENDIF IF guard4_warehouse_dead_heist5 = 0 IF NOT IS_CHAR_DEAD guard4_warehouse_heist5 DELETE_CHAR guard4_warehouse_heist5 guard4_warehouse_dead_heist5 = 1 ENDIF ENDIF IF guard5_warehouse_dead_heist5 = 0 IF NOT IS_CHAR_DEAD guard5_warehouse_heist5 DELETE_CHAR guard5_warehouse_heist5 guard5_warehouse_dead_heist5 = 1 ENDIF ENDIF //IF guard6_warehouse_dead_heist5 = 0 // // IF NOT IS_CHAR_DEAD guard6_warehouse_heist5 // DELETE_CHAR guard6_warehouse_heist5 // guard6_warehouse_dead_heist5 = 1 // ENDIF // //ENDIF IF guard7_warehouse_dead_heist5 = 0 IF NOT IS_CHAR_DEAD guard7_warehouse_heist5 DELETE_CHAR guard7_warehouse_heist5 guard7_warehouse_dead_heist5 = 1 ENDIF ENDIF IF guard8_warehouse_dead_heist5 = 0 IF NOT IS_CHAR_DEAD guard8_warehouse_heist5 DELETE_CHAR guard8_warehouse_heist5 guard8_warehouse_dead_heist5 = 1 ENDIF ENDIF IF guard9_warehouse_dead_heist5 = 0 IF NOT IS_CHAR_DEAD guard9_warehouse_heist5 DELETE_CHAR guard9_warehouse_heist5 guard9_warehouse_dead_heist5 = 1 ENDIF ENDIF IF guard10_warehouse_dead_heist5 = 0 IF NOT IS_CHAR_DEAD guard10_warehouse_heist5 DELETE_CHAR guard10_warehouse_heist5 guard10_warehouse_dead_heist5 = 1 ENDIF ENDIF IF guard11_warehouse_dead_heist5 = 0 IF NOT IS_CHAR_DEAD guard11_warehouse_heist5 DELETE_CHAR guard11_warehouse_heist5 guard11_warehouse_dead_heist5 = 1 ENDIF ENDIF IF guard12_warehouse_dead_heist5 = 0 IF NOT IS_CHAR_DEAD guard12_warehouse_heist5 DELETE_CHAR guard12_warehouse_heist5 guard12_warehouse_dead_heist5 = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD driver_gate_car_heist5 DELETE_CHAR driver_gate_car_heist5 ENDIF IF NOT IS_CAR_DEAD gate_drive_car_heist5 DELETE_CAR gate_drive_car_heist5 ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED PATRIOT RETURN // cleansup all the compound guards cleanup2_heist5: // gate guard IF gateguard1_dead_heist5 = 0 IF NOT IS_CHAR_DEAD gateguard1_heist5 DELETE_CHAR gateguard1_heist5 gateguard1_dead_heist5 = 1 ENDIF ENDIF // heli guards IF guardnumber0_dead_heist5 = 0 IF NOT IS_CHAR_DEAD guardnumber[0] DELETE_CHAR guardnumber[0] guardnumber0_dead_heist5 = 1 ENDIF ENDIF IF guardnumber1_dead_heist5 = 0 IF NOT IS_CHAR_DEAD guardnumber[1] DELETE_CHAR guardnumber[1] guardnumber1_dead_heist5 = 1 ENDIF ENDIF IF guardnumber2_dead_heist5 = 0 IF NOT IS_CHAR_DEAD guardnumber[2] DELETE_CHAR guardnumber[2] guardnumber2_dead_heist5 = 1 ENDIF ENDIF IF guardnumber3_dead_heist5 = 0 IF NOT IS_CHAR_DEAD guardnumber[3] DELETE_CHAR guardnumber[3] guardnumber3_dead_heist5 = 1 ENDIF ENDIF IF guardnumber4_dead_heist5 = 0 IF NOT IS_CHAR_DEAD guardnumber[4] DELETE_CHAR guardnumber[4] guardnumber4_dead_heist5 = 1 ENDIF ENDIF IF guardnumber5_dead_heist5 = 0 IF NOT IS_CHAR_DEAD guardnumber[5] DELETE_CHAR guardnumber[5] guardnumber5_dead_heist5 = 1 ENDIF ENDIF IF guardnumber6_dead_heist5 = 0 IF NOT IS_CHAR_DEAD guardnumber[6] DELETE_CHAR guardnumber[6] guardnumber6_dead_heist5 = 1 ENDIF ENDIF flag_cleanup2_done_heist5 = 1 RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* Heist 9 ******************************************* // ***************************************************************************************** // ************************************ The Heist ***************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME heist9 GOSUB mission_start_heist9 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_heist9_failed ENDIF GOSUB mission_cleanup_heist9 MISSION_END { VAR_INT h9_health h9_safe_timer LVAR_FLOAT h9_door_Z LVAR_INT flag_open_keypaddoor_heist9 h9_kpad_result h9_guy_is_peeking LVAR_INT h9_mission_status h9_casino_blip h9_heli_chasing LVAR_INT h9_door_a h9_exitdoor h9_spawned_end_guys LVAR_INT h9_blip_keycode h9_swipecard_blip LVAR_INT h9_forklift h9_forklift_blip LVAR_INT h9_door_d h9_door_e h9_forklift_message LVAR_INT h9_getaway_car h9_all_dead h9_sequence_task LVAR_INT h9_gang[4] v seq_walk_to_safe LVAR_INT h9_door_g h9_bag[4] h9_generator_blip LVAR_INT h9_charge_set[4] h9_no_of_charges h9_charges[4] LVAR_INT h9_fx1 h9_fx2 seq_walk_to_van LVAR_INT h9_going_to_van[4] h9_van_count h9_seat_count LVAR_INT h9_elevator h9_in_van[4] h9_decision LVAR_INT h9_roller_door_blip LVAR_INT h9_gang_blip[4] h9_back_in_the_forklift LVAR_INT h9_swipe_pad h9_zero LVAR_INT h9_parachute h9_chute_deleted h9_wanted_level h9_parachute1 LVAR_INT h9_safe_house h9_elevator_message h9_outside LVAR_INT h9_msg_displayed h9_closing h9_keycode_active h9_gas_blip LVAR_INT h9_safe_guards[5] h9_vent h9_power_cut LVAR_INT h9_body_count h9_closing_1 h9_closing_2 h9_blown h9_empty_decision LVAR_INT h9_sync h9_fx_dyna h9_picked_up_bag[5] LVAR_INT h9_safe_charge[2] h9_seq_pillar LVAR_INT h9_bag_count h9_seq_mafia_in_safe_L h9_seq_mafia_in_safe_R h9_attack_safe[5] LVAR_INT h9_gas_fx_[1] h9_cash_dialog LVAR_INT h9_seq_stairs h9_gang_health[5] h9_ai h9_hlth[5] LVAR_INT h9_elevator_message_1 h9_seq_corridor h9_is_running[4] LVAR_INT h9_seq_corridor_1 h9_seq_bag[5] h9_seq_room h9_rollin LVAR_INT h9_seq_corridor_a h9_seq_corridor_b h9_seq_corridor_c LVAR_INT h9_power_on h9_generator_A h9_generator_B LVAR_INT h9_projected_man h9_van_not_needed_anymore LVAR_INT h9_grenade_count LVAR_FLOAT h9_bomb_heading x1 y1 z1 LVAR_FLOAT h9_x[4] h9_y[4] h9_z[4] LVAR_INT temp_heading LVAR_INT h9_help_1 h9_help_2 LVAR_INT h9_cutscene_man LVAR_INT h9_fake_door LVAR_INT h9_darkness h9_helicopter LVAR_INT h9_bk_door h9_zero_created LVAR_INT h9_explosion_fx[6] LVAR_INT h9_safe_door_blip LVAR_INT h9_goggle_blip LVAR_INT h9_spawn_forklift LVAR_INT h9_used_vent LVAR_INT h9_once_only LVAR_INT h9_peekright LVAR_INT h9_peekleft LVAR_INT h9_satchel_bomb LVAR_INT h9_start_conv LVAR_INT h9_cut_test LVAR_INT h9_weak_decision LVAR_INT h9_workers[10] LVAR_INT h9_gen_blip_a LVAR_INT h9_gen_blip_b LVAR_INT h9_clothes_changed LVAR_INT h9_playing LVAR_INT h9_audio h9_safe_blip LVAR_INT h9_guys_at_safe LVAR_INT h9_seq_safe_cover[4] LVAR_INT h9_in_cover[4] LVAR_INT h9_inside_txt LVAR_INT h9_vent_room LVAR_INT h9_decision_tough LVAR_INT h9_gas_txt h9_chopper_blip LVAR_INT h9_has_a_gun LVAR_INT h9_service_txt LVAR_INT h9_team_is_spawned LVAR_INT h9_play_safe_dialogue LVAR_INT h9_player_in_safe LVAR_INT h9_spawn_the_dudes LVAR_INT h9_trigger_lights LVAR_INT h9_lift_conv h9_never_again LVAR_INT h9_first_node h9_second_node h9_third_node LVAR_INT h9_seq_run_first_node[4] h9_seq_run_second_node h9_seq_run_third_node LVAR_INT h9_second[4] h9_third[4] LVAR_INT h9_kicked[4] LVAR_INT h9_run_van_conv LVAR_INT h9_bike_a h9_bike_b h9_biker_a h9_biker_b LVAR_INT h9_spawned_end_guys_1 LVAR_INT h9_last_grenade LVAR_INT h9_health_1 h9_kill_seconds LVAR_FLOAT h9_heading VAR_INT h9_player_in_casino LVAR_TEXT_LABEL h9_print LVAR_INT very_start_conv LVAR_INT h9_run_to_van LVAR_INT h9_roof_guy h9_roof_guy_1 h9_roof_trigger LVAR_INT h9_generator_mafia[3] VAR_FLOAT h9_offset h9_z1 VAR_FLOAT h9_calculus h9_under_door LVAR_INT h9_para_pickup h9_satchel_blip h9_guns_out h9_requested LVAR_INT h9_behind_door h9_is_downstairs LVAR_INT h9_guys_run_in h9_door_sfx h9_door_trig h9_missed_chopper VAR_INT h9_TIMERC h9_can_see h9_fuck_off // **************************************** Mission Start ********************************** mission_start_heist9: IF d5_bronze_generator_unlocked = 1 SWITCH_CAR_GENERATOR d5_bronze_generator 0 ENDIF IF d5_silver_generator_unlocked = 1 SWITCH_CAR_GENERATOR d5_silver_generator 0 ENDIF IF d5_gold_generator_unlocked = 1 SWITCH_CAR_GENERATOR d5_gold_generator 0 ENDIF SET_ZONE_NO_COPS MEAD TRUE LOAD_MISSION_TEXT HEIST9 h9_health = 0 h9_z1 = 0.0 h9_offset = 0.0 h9_calculus = 0.0 h9_under_door = 0.0 h9_TIMERC = 0 h9_can_see = 0 SET_FADING_COLOUR 0 0 0 REGISTER_MISSION_GIVEN flag_player_on_mission = 1 iSetCasinoPanic = 0 h9_playing = 2 // Bug fix for Will M // ***************************************************************************************** disable_mod_garage = 1 // ***************************************************************************************** WAIT 0 // *************************************** START OF CUTSCENE ******************************* IF NOT IS_CHAR_DEAD scplayer STORE_CLOTHES_STATE GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP Player1 croupier valet CLOTHES_TEX_EXTRA1 GIVE_PLAYER_CLOTHES player1 0 0 1 // should remove any hat GIVE_PLAYER_CLOTHES player1 0 0 13 // should remove any hat GIVE_PLAYER_CLOTHES player1 0 0 15 // should remove any hat GIVE_PLAYER_CLOTHES player1 0 0 16 // should remove any hat BUILD_PLAYER_MODEL player1 ENDIF SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // ***************************************************************************************** // * * // * Player Co-Ords * // * * // ***************************************************************************************** IF NOT IS_CHAR_DEAD scplayer SET_AREA_VISIBLE 0 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2016.4222 1017.1024 10.0 //TRIAD CASINO LOAD_SCENE 2028.9316 1023.2923 9.8130 CLEAR_AREA 2028.9316 1023.2923 9.8130 20.0 TRUE SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2028.9316 1023.2923 9.8130 SET_CHAR_HEADING scplayer 278.4092 ENDIF SET_AREA_VISIBLE 0 LOAD_CUTSCENE HEIST8a WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE CLEAR_AREA 1908.4333 957.3687 9.8203 40.0 TRUE START_CUTSCENE SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_FADING_COLOUR 0 0 0 DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE //SET_INT_STAT CITIES_PASSED 2 // ***************************************************************************************** // * * // * Decisions * // * * // ***************************************************************************************** ADD_BLIP_FOR_COORD 2196.7146 1677.1975 11.3750 h9_casino_blip LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_WEAK h9_weak_decision LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_NORM h9_decision LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY h9_empty_decision LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH h9_decision_tough SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION3 PEDTYPE_MISSION3 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_MISSION3 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_MISSION2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION2 PEDTYPE_PLAYER1 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE h9_decision EVENT_ACQUAINTANCE_PED_DISLIKE TASK_SIMPLE_LOOK_AT_ENTITY_OR_COORD 0.0 100.0 0.0 0.0 TRUE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE h9_decision_tough EVENT_ACQUAINTANCE_PED_DISLIKE TASK_SIMPLE_LOOK_AT_ENTITY_OR_COORD 0.0 100.0 0.0 0.0 TRUE TRUE // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** REQUEST_MODEL silenced REQUEST_MODEL teargas REQUEST_MODEL NVGOGGLES REQUEST_MODEL bodyarmour REQUEST_MODEL MP5LNG REQUEST_MODEL KNIFECUR REQUEST_MODEL COLT45 REQUEST_ANIMATION HEIST9 WHILE NOT HAS_MODEL_LOADED silenced OR NOT HAS_MODEL_LOADED teargas OR NOT HAS_MODEL_LOADED NVGOGGLES OR NOT HAS_MODEL_LOADED bodyarmour WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED MP5LNG OR NOT HAS_MODEL_LOADED KNIFECUR OR NOT HAS_ANIMATION_LOADED HEIST9 OR NOT HAS_MODEL_LOADED COLT45 WAIT 0 ENDWHILE h9_safe_timer = 240000 CLEAR_WANTED_LEVEL player1 SET_WANTED_MULTIPLIER 0.0 SET_PLAYER_CONTROL player1 ON CREATE_OBJECT GENERATOR_BIG 2145.05 1613.49 999.9764 h9_generator_A SET_OBJECT_AREA_VISIBLE h9_generator_A 1 SET_OBJECT_HEADING h9_generator_A 1.2043 CREATE_OBJECT GENERATOR_BIG 2148.8 1613.49 999.9764 h9_generator_B SET_OBJECT_AREA_VISIBLE h9_generator_B 1 SET_OBJECT_HEADING h9_generator_B 354.0372 // ************************************************************************************** OPEN_SEQUENCE_TASK h9_peekright TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_R HEIST9 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_in_R HEIST9 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer 2000 TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_out_R HEIST9 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_R_back HEIST9 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT h9_peekright 1 CLOSE_SEQUENCE_TASK h9_peekright OPEN_SEQUENCE_TASK h9_peekleft TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_L HEIST9 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_in_L HEIST9 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer 2000 TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_out_L HEIST9 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_L_back HEIST9 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT h9_peekleft 1 CLOSE_SEQUENCE_TASK h9_peekleft // ************************************************************************************** SET_GROUP_SEPARATION_RANGE Players_Group 300.0 SET_GROUP_DEFAULT_TASK_ALLOCATOR Players_Group DEFAULT_TASK_ALLOCATOR_FOLLOW_ANY_MEANS GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_PISTOL_SILENCED 300 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_TEARGAS 10 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_MP5 300 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_NIGHTVISION 300 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_KNIFE 300 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_TEARGAS MARK_MODEL_AS_NO_LONGER_NEEDED KNIFECUR MARK_MODEL_AS_NO_LONGER_NEEDED SILENCED MARK_MODEL_AS_NO_LONGER_NEEDED NVGOGGLES MARK_MODEL_AS_NO_LONGER_NEEDED TEARGAS // ************************************************************************************** // Keypad Door CREATE_OBJECT_NO_OFFSET ab_casdorLok 2148.5600 1604.6091 1006.5000 h9_door_a SET_OBJECT_AREA_VISIBLE h9_door_a 1 SET_OBJECT_HEADING h9_door_a 180.0000 // Back-Tracking Door CREATE_OBJECT_NO_OFFSET ab_casdorLok 2177.1600 1594.3218 1000.4000 h9_door_d SET_OBJECT_AREA_VISIBLE h9_door_d 1 SET_OBJECT_HEADING h9_door_d 180.0000 // Roller Door CREATE_OBJECT_NO_OFFSET warehouse_door2b 2220.1880 1571.7629 1001.6000 h9_door_e SET_OBJECT_AREA_VISIBLE h9_door_e 1 SET_OBJECT_HEADING h9_door_e 270.0000 SET_OBJECT_COLLISION_DAMAGE_EFFECT h9_door_e FALSE // Top For Roller Door CREATE_OBJECT_NO_OFFSET warehouse_door2b 2220.1880 1571.7000 1005.8000 h9_fake_door SET_OBJECT_AREA_VISIBLE h9_fake_door 1 SET_OBJECT_HEADING h9_fake_door 270.0000 SET_OBJECT_COLLISION h9_fake_door FALSE SET_OBJECT_COLLISION_DAMAGE_EFFECT h9_door_e FALSE CREATE_OBJECT_NO_OFFSET warehouse_door2b 2203.2004 1551.7429 1009.0000 h9_exitdoor SET_OBJECT_AREA_VISIBLE h9_exitdoor 1 SET_OBJECT_HEADING h9_exitdoor 0.0000 SET_OBJECT_COLLISION_DAMAGE_EFFECT h9_exitdoor FALSE h9_door_Z = 1001.4000 // Safe Door CREATE_OBJECT_NO_OFFSET ab_vaultDoor 2144.1800 1626.9470 994.2800 h9_door_g SET_OBJECT_HEADING h9_door_g 180.0000 SET_OBJECT_AREA_VISIBLE h9_door_g 1 // ************************************************************************************** CREATE_OBJECT_NO_OFFSET sec_keypad 2168.5000 1617.3353 1000.4000 h9_swipe_pad SET_OBJECT_AREA_VISIBLE h9_swipe_pad 1 SET_OBJECT_HEADING h9_swipe_pad 270.0000 SET_OBJECT_COLLISION h9_swipe_pad FALSE // ************************************************************************************** // Health inside the small room CREATE_PICKUP bodyarmour PICKUP_ONCE 2176.4712 1597.3944 1000.0000 h9_health // ************************************************************************************** // Health inside the safe CREATE_PICKUP bodyarmour PICKUP_ONCE 2144.3389 1640.6660 993.5000 h9_health_1 // ************************************************************************************** GOTO h9_skip_loop spawn_the_gang: REQUEST_MODEL TRIADA REQUEST_MODEL SECURICA LOAD_SPECIAL_CHARACTER 2 WUZIMU LOAD_SPECIAL_CHARACTER 3 JANITOR WHILE NOT HAS_MODEL_LOADED TRIADA OR NOT HAS_MODEL_LOADED SECURICA OR NOT HAS_SPECIAL_CHARACTER_LOADED 2 OR NOT HAS_SPECIAL_CHARACTER_LOADED 3 WAIT 0 ENDWHILE CREATE_CAR SECURICA 2220.3445 1551.7666 1003.7188 h9_getaway_car SET_VEHICLE_AREA_VISIBLE h9_getaway_car 1 SET_CAR_HEADING h9_getaway_car 176.7739 SET_CAR_ALWAYS_CREATE_SKIDS h9_getaway_car FALSE LOCK_CAR_DOORS h9_getaway_car CARLOCK_LOCKOUT_PLAYER_ONLY SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_MISSION2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_MISSION2 PEDTYPE_PLAYER1 // Wuzimu CREATE_CHAR_INSIDE_CAR h9_getaway_car PEDTYPE_MISSION2 SPECIAL02 h9_gang[0] SET_CHAR_AREA_VISIBLE h9_gang[0] 1 // Janitor CREATE_CHAR_AS_PASSENGER h9_getaway_car PEDTYPE_MISSION2 TRIADA 2 h9_gang[1] SET_CHAR_AREA_VISIBLE h9_gang[1] 1 // A brother CREATE_CHAR_AS_PASSENGER h9_getaway_car PEDTYPE_MISSION2 TRIADA 1 h9_gang[2] SET_CHAR_AREA_VISIBLE h9_gang[2] 1 // Second CREATE_CHAR_AS_PASSENGER h9_getaway_car PEDTYPE_MISSION2 SPECIAL03 0 h9_gang[3] SET_CHAR_AREA_VISIBLE h9_gang[3] 1 SET_ANIM_GROUP_FOR_CHAR h9_gang[0] blindman REPEAT 4 v SET_FOLLOW_NODE_THRESHOLD_DISTANCE h9_gang[v] 2.0 GIVE_WEAPON_TO_CHAR h9_gang[v] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON h9_gang[v] WEAPONTYPE_MP5 SET_CHAR_DECISION_MAKER h9_gang[v] h9_empty_decision SET_CHAR_NEVER_TARGETTED h9_gang[v] TRUE SET_CHAR_PROOFS h9_gang[v] FALSE FALSE FALSE TRUE FALSE SET_CHAR_SUFFERS_CRITICAL_HITS h9_gang[v] FALSE SET_CHAR_MAX_HEALTH h9_gang[v] 500 SET_CHAR_HEALTH h9_gang[v] 500 SET_CHAR_ACCURACY h9_gang[v] 60 SET_CHAR_SIGNAL_AFTER_KILL h9_gang[v] FALSE ENDREPEAT h9_team_is_spawned = 1 RETURN h9_skip_loop: IF NOT IS_CHAR_DEAD scplayer SET_CHAR_HEADING scplayer 270.0000 SET_CAMERA_BEHIND_PLAYER ENDIF GOSUB h9_fade_in h9_start_conv = 1 h9_playing = 2 // ***************************************************************************************** // * * // * START LOOP * // * * // ***************************************************************************************** h9_mission_status = 1 h9_keycode_active = 0 TIMERB = 0 // Turn off those Entry points SWITCH_ENTRY_EXIT JUMP1 FALSE SWITCH_ENTRY_EXIT JUMP2 FALSE SWITCH_ENTRY_EXIT MAFCAS2 FALSE // ************************************************************************************************ // * * // * Skip the beginning * // * * // ************************************************************************************************ //begin0 very_start_conv = 1 // GOING TO SAFE /* IF NOT IS_CHAR_DEAD scplayer SET_AREA_VISIBLE 1 LOAD_SCENE 2221.1829 1583.0457 998.9752 REQUEST_COLLISION 2221.1829 1583.0457 CLEAR_AREA 2221.1829 1583.0457 998.9752 10.0 TRUE SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2221.1829 1583.0457 998.9752 SET_CHAR_HEADING scplayer 166.3300 SET_CHAR_AREA_VISIBLE scplayer 1 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER ENDIF */ // h9_mission_status = 6 // GOSUB spawn_the_gang /* SET_OBJECT_HEADING h9_door_a 180.0000 DELETE_OBJECT h9_door_c REQUEST_MODEL FORKLIFT REQUEST_MODEL BMYBOUN REQUEST_MODEL SWAT WHILE NOT HAS_MODEL_LOADED FORKLIFT OR NOT HAS_MODEL_LOADED BMYBOUN OR NOT HAS_MODEL_LOADED SWAT WAIT 0 ENDWHILE REQUEST_MODEL satchel REQUEST_MODEL bomb WHILE NOT HAS_MODEL_LOADED satchel OR NOT HAS_MODEL_LOADED bomb WAIT 0 ENDWHILE REQUEST_MODEL TRIADA REQUEST_MODEL TRIBOSS REQUEST_MODEL SECURICA REQUEST_ANIMATION SWAT REQUEST_MODEL 497 LOAD_SPECIAL_CHARACTER 2 WUZIMU WHILE NOT HAS_MODEL_LOADED TRIADA OR NOT HAS_MODEL_LOADED TRIBOSS OR NOT HAS_MODEL_LOADED SECURICA OR NOT HAS_SPECIAL_CHARACTER_LOADED 2 OR NOT HAS_ANIMATION_LOADED SWAT OR NOT HAS_MODEL_LOADED 497 WAIT 0 ENDWHILE */ /* CREATE_CHAR PEDTYPE_MISSION2 SPECIAL02 2135.4968 1625.5176 992.5681 h9_gang[0] CREATE_CHAR PEDTYPE_MISSION2 TRIADA 2152.9541 1625.0764 992.5681 h9_gang[1] CREATE_CHAR PEDTYPE_MISSION2 TRIADA 2135.4968 1625.5176 992.5681 h9_gang[2] CREATE_CHAR PEDTYPE_MISSION2 TRIBOSS 2135.4968 1625.5176 992.5681 h9_gang[3] SET_ANIM_GROUP_FOR_CHAR h9_gang[0] blindman REPEAT 4 v SET_FOLLOW_NODE_THRESHOLD_DISTANCE h9_gang[v] 2.0 GIVE_WEAPON_TO_CHAR h9_gang[v] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON h9_gang[v] WEAPONTYPE_MP5 SET_CHAR_DECISION_MAKER h9_gang[v] h9_empty_decision SET_CHAR_NEVER_TARGETTED h9_gang[v] TRUE SET_CHAR_PROOFS h9_gang[v] FALSE FALSE FALSE TRUE FALSE SET_CHAR_SUFFERS_CRITICAL_HITS h9_gang[v] FALSE SET_CHAR_MAX_HEALTH h9_gang[v] 1000 SET_CHAR_HEALTH h9_gang[v] 1000 SET_CHAR_ACCURACY h9_gang[v] 60 SET_CHAR_SIGNAL_AFTER_KILL h9_gang[v] FALSE SET_SENSE_RANGE h9_gang[v] 50.0 ENDREPEAT */ /* // Creates forklift CREATE_CAR FORKLIFT 2173.6206 1585.9639 998.9722 h9_forklift SET_VEHICLE_AREA_VISIBLE h9_forklift 1 SET_CAR_HEADING h9_forklift 270.0 CHANGE_CAR_COLOUR h9_forklift CARCOLOUR_TAXIYELLOW CARCOLOUR_TAXIYELLOW h9_spawn_forklift = 1 IF NOT IS_CAR_DEAD h9_forklift SET_VEHICLE_AREA_VISIBLE h9_forklift 1 WARP_CHAR_INTO_CAR scplayer h9_forklift ENDIF */ // AT THE SAFE /* IF NOT IS_CHAR_DEAD scplayer SET_AREA_VISIBLE 1 LOAD_SCENE 2221.1829 1583.0457 998.9752 REQUEST_COLLISION 2221.1829 1583.0457 CLEAR_AREA 2221.1829 1583.0457 998.9752 10.0 TRUE SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2144.2825 1619.3787 992.6882 SET_CHAR_HEADING scplayer 1.1102 SET_CHAR_AREA_VISIBLE scplayer 1 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER ENDIF */ // AT THE VAN /* IF NOT IS_CHAR_DEAD scplayer SET_AREA_VISIBLE 1 LOAD_SCENE 2224.1978 1592.6315 998.9697 REQUEST_COLLISION 2224.1978 1592.6315 CLEAR_AREA 2224.1978 1592.6315 998.9697 10.0 TRUE SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2224.1978 1592.6315 998.9697 SET_CHAR_HEADING scplayer 357.8299 SET_CHAR_AREA_VISIBLE scplayer 1 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER ENDIF */ // h9_mission_status = 13 // h9_blown = 1 // ************************************************************************************************ // * * // * New stuff * // * * // ************************************************************************************************ LVAR_INT h9_crt_0 h9_crt_1 h9_crt_2 h9_crt_3 h9_stop_door // Keypad Door CREATE_OBJECT_NO_OFFSET tmp_bin 2188.8450 1619.1359 999.3000 h9_crt_0 SET_OBJECT_AREA_VISIBLE h9_crt_0 1 SET_OBJECT_HEADING h9_crt_0 270.0000 /* CREATE_OBJECT_NO_OFFSET k_smashboxes 2147.1306 1613.9847 992.5000 h9_crt_1 SET_OBJECT_AREA_VISIBLE h9_crt_1 1 SET_OBJECT_HEADING h9_crt_1 355.3719 */ CREATE_OBJECT_NO_OFFSET k_smashboxes 2139.3428 1617.6035 992.5000 h9_crt_2 SET_OBJECT_AREA_VISIBLE h9_crt_2 1 SET_OBJECT_HEADING h9_crt_2 0.1132 CREATE_OBJECT_NO_OFFSET k_smashboxes 2148.0000 1622.1074 992.5000 h9_crt_3 SET_OBJECT_AREA_VISIBLE h9_crt_3 1 SET_OBJECT_HEADING h9_crt_3 179.6736 // h9_is_downstairs = 1 // GOTO try_here // GOTO try_again_here // *** For Chopper ***************************************************************************** /*DISABLE_PLAYER_SPRINT player1 TRUE h9_mission_status = 17 h9_roof_trigger = 1 h9_chute_deleted = 1 REQUEST_MODEL gun_para WHILE NOT HAS_MODEL_LOADED gun_para WAIT 0 ENDWHILE CREATE_PICKUP gun_para PICKUP_ONCE 2267.9888 1699.6678 101.4000 h9_para_pickup para_freefall_Vz = -6.0 para_freefall_Vy = 35.0 para_float_Vy = 15.0 para_flare_Vy = 20.0 //for when player lifts legs up SET_INT_STAT CITIES_PASSED 2 GOTO to_here */ // *** End Chopper ***************************************************************************** // ************************************************************************************************ // * * // * Skip the beginning * // * * // ************************************************************************************************ WHILE NOT IS_CHAR_DEAD scplayer WAIT 0 GOSUB h9_keys GOSUB h9_play_sample GET_AREA_VISIBLE h9_fuck_off // ******************************************************************************************** // * * // * Dialogue when inside mafia casino * // * * // ******************************************************************************************** IF h9_safe_timer <= 0 GOSUB h9_fix_for_failed PRINT_NOW ( HM9_1B ) 4000 1 // ~r~You ran out of time GOTO mission_heist9_failed CLEAR_ONSCREEN_TIMER h9_safe_timer ENDIF IF NOT very_start_conv = 0 IF h9_playing = 2 AND very_start_conv = 1 IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF $h9_print = &HE8_AA // Ok, Carl, can you hear me ok? h9_audio = SOUND_HE8_AA GOSUB h9_load_sample very_start_conv = 2 ENDIF IF h9_playing = 2 AND very_start_conv = 2 IF NOT IS_CHAR_DEAD scplayer START_CHAR_FACIAL_TALK scplayer 10000 ENDIF $h9_print = &HE8_AB // Loud and clear! h9_audio = SOUND_HE8_AB GOSUB h9_load_sample very_start_conv = 3 ENDIF IF h9_playing = 2 AND very_start_conv = 3 IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF $h9_print = &HE8_AC // Ok, we're en route in the armoured truck. h9_audio = SOUND_HE8_AC GOSUB h9_load_sample very_start_conv = 4 ENDIF IF h9_playing = 2 AND very_start_conv = 4 IF NOT IS_CHAR_DEAD scplayer START_CHAR_FACIAL_TALK scplayer 10000 ENDIF $h9_print = &HE8_AD // Ok, I'm gonna get a move on! h9_audio = SOUND_HE8_AD GOSUB h9_load_sample very_start_conv = 5 ENDIF IF h9_playing = 2 AND very_start_conv = 5 IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF PRINT_NOW ( HM9_28 ) 9000 1 // ~s~Enter the ~y~Mafia Casino~s~! IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF very_start_conv = 6 ENDIF ENDIF GET_AREA_VISIBLE h9_can_see IF h9_can_see = 0 IF NOT IS_CHAR_DEAD scplayer DISABLE_PLAYER_SPRINT player1 FALSE iSetCasinoPanic = 0 h9_player_in_casino = 0 SET_RADAR_ZOOM 0 ENDIF ELSE IF NOT IS_CHAR_DEAD scplayer DISABLE_PLAYER_SPRINT player1 TRUE SET_RADAR_ZOOM 100 ENDIF ENDIF // Is player inside the mafia casino IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2233.9099 1712.5991 1010.8772 50.0 50.0 50.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer 2265.7898 1619.5800 1089.4453 50.0 50.0 50.0 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer 2267.0557 1675.3851 1089.4453 50.0 50.0 50.0 FALSE SET_RADAR_ZOOM 100 h9_player_in_casino = 1 ENDIF IF h9_is_downstairs = 0 AND h9_player_in_casino = 1 IF NOT IS_CHAR_DEAD scplayer IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED AND NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_NIGHTVISION AND NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_TEARGAS AND NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_BRASSKNUCKLE AND NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_KNIFE SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_CIVMALE PEDTYPE_PLAYER1 PRINT_NOW ( HM9_99 ) 100 1 // ~s~Holster your weapon until your passed the staff door! h9_guns_out = 1 ELSE SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_CIVMALE PEDTYPE_PLAYER1 h9_guns_out = 0 ENDIF ENDIF ENDIF IF NOT IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 croupier PRINT_NOW ( HM9_52 ) 4000 1 // ~r~You blew your disguise, scrub the mission! GOTO mission_heist9_failed ENDIF IF iSetCasinoPanic = 1 AND h9_closing = 0 AND h9_player_in_casino = 1 GOSUB h9_fix_for_failed PRINT_NOW ( HM9_52 ) 4000 1 // ~r~You blew your disguise, scrub the mission! GOTO mission_heist9_failed ENDIF IF NOT IS_CHAR_DEAD scplayer IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2180.9810 1677.8132 10.0609 30.0 30.0 30.0 FALSE AND h9_inside_txt = 0 PRINT_NOW ( HM9_54 ) 7000 1 // Remember not to attract attention or you'll blow your cover h9_inside_txt = 1 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S GOTO mission_heist9_passed ENDIF IF h9_mission_status <= 2 AND NOT IS_CHAR_DEAD scplayer AND h9_last_grenade = 0 GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_TEARGAS h9_grenade_count IF h9_grenade_count <= 0 AND h9_mission_status <= 2 h9_last_grenade = 1 TIMERA = 0 ENDIF ENDIF IF TIMERA > 2000 AND h9_last_grenade = 1 AND h9_projected_man = 0 IF h9_player_in_casino = 1 OR h9_can_see = 0 IF h9_player_in_casino = 1 GOSUB h9_fix_for_failed ELSE GOSUB h9_rebuild_the_player ENDIF PRINT_NOW ( HM9_48 ) 4000 1 // ~r~You idiot you wasted all the grenades! GOTO mission_heist9_failed ENDIF ENDIF IF IS_CAR_DEAD h9_getaway_car AND h9_van_not_needed_anymore = 0 AND h9_team_is_spawned = 1 GOSUB h9_fix_for_failed PRINT_NOW ( HM9_15 ) 4000 1 // ~r~The van is gone, there is no way to transport the money. GOTO mission_heist9_failed ENDIF h9_TIMERC ++ IF h9_mission_status = 1 IF h9_player_in_casino = 1 IF DOES_BLIP_EXIST h9_casino_blip REMOVE_BLIP h9_casino_blip ENDIF CLEAR_PRINTS h9_mission_status = 2 h9_start_conv = 1 TIMERB = 0 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED ADD_BLIP_FOR_COORD 2148.9954 1605.0804 1005.1725 h9_blip_keycode SET_BLIP_ENTRY_EXIT h9_blip_keycode 2196.6353 1676.8411 10.0 REQUEST_MODEL BMYBOUN REQUEST_MODEL WMYBOUN WHILE NOT HAS_MODEL_LOADED BMYBOUN OR NOT HAS_MODEL_LOADED WMYBOUN WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_MISSION1 BMYBOUN 2146.5798 1622.2280 992.6882 h9_safe_guards[0] SET_CHAR_AREA_VISIBLE h9_safe_guards[0] 1 SET_CHAR_HEADING h9_safe_guards[0] 83.6070 CREATE_CHAR PEDTYPE_MISSION1 BMYBOUN 2141.4099 1626.0682 992.6882 h9_safe_guards[1] SET_CHAR_AREA_VISIBLE h9_safe_guards[1] 1 SET_CHAR_HEADING h9_safe_guards[1] 188.011 CREATE_CHAR PEDTYPE_CIVMALE WMYBOUN 2151.1873 1605.8324 1005.1875 h9_safe_guards[2] SET_CHAR_AREA_VISIBLE h9_safe_guards[2] 1 SET_CHAR_HEADING h9_safe_guards[2] 359.3460 SET_CHAR_DECISION_MAKER h9_safe_guards[2] h9_empty_decision TASK_STAY_IN_SAME_PLACE h9_safe_guards[2] TRUE REPEAT 2 v GIVE_WEAPON_TO_CHAR h9_safe_guards[v] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON h9_safe_guards[v] WEAPONTYPE_MP5 ADD_ARMOUR_TO_CHAR h9_safe_guards[v] 200 TASK_STAY_IN_SAME_PLACE h9_safe_guards[v] TRUE SET_CHAR_NEVER_TARGETTED h9_safe_guards[v] TRUE ENDREPEAT ENDIF ENDIF // ************************************************************************************************* // * * // * GO TO THE KEYCODE DOOR * // * * // ************************************************************************************************* IF h9_mission_status = 2 IF NOT IS_CHAR_DEAD h9_safe_guards[2] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR h9_safe_guards[2] scplayer GOSUB h9_fix_for_failed PRINT_NOW ( HM9_52 ) 4000 1 // ~r~You blew your disguise, scrub the mission GOTO mission_heist9_failed ENDIF ENDIF IF IS_CHAR_DEAD h9_safe_guards[2] AND h9_closing = 0 GOSUB h9_fix_for_failed PRINT_NOW ( HM9_52 ) 4000 1 // ~r~You blew your disguise, scrub the mission GOTO mission_heist9_failed ENDIF // ******************************************************************************************** // * * // * Dialogue when inside mafia casino * // * * // ******************************************************************************************** IF NOT h9_start_conv = 0 IF h9_start_conv = 1 h9_safe_timer = 240000 DISPLAY_ONSCREEN_TIMER_WITH_STRING h9_safe_timer TIMER_DOWN HM9_1A // TIME PRINT_WITH_NUMBER_NOW ( HM9_1D ) 4 5000 1 // ~s~You have ~1~ minutes to get the team inside! TIMERB = 0 h9_start_conv = 2 ENDIF IF TIMERB > 4000 AND h9_start_conv = 2 IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF $h9_print = &HE8_BA // Ok, this is it. Play it cool, play it cool. h9_audio = SOUND_HE8_BA GOSUB h9_load_sample h9_start_conv = 3 ENDIF IF h9_playing = 2 AND h9_start_conv = 3 IF NOT IS_CHAR_DEAD scplayer START_CHAR_FACIAL_TALK scplayer 10000 ENDIF $h9_print = &HE8_BB // Hey, I’m cool! h9_audio = SOUND_HE8_BB GOSUB h9_load_sample h9_start_conv = 4 ENDIF IF h9_playing = 2 AND h9_start_conv = 4 IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF $h9_print = &HE8_BC // You sure? You sound edgy to me! h9_audio = SOUND_HE8_BC GOSUB h9_load_sample h9_start_conv = 5 ENDIF IF h9_playing = 2 AND h9_start_conv = 5 IF NOT IS_CHAR_DEAD scplayer START_CHAR_FACIAL_TALK scplayer 10000 ENDIF $h9_print = &HE8_BD // I’m cool, ok? h9_audio = SOUND_HE8_BD GOSUB h9_load_sample h9_start_conv = 6 ENDIF IF h9_playing = 2 AND h9_start_conv = 6 IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF $h9_print = &HE8_BE // Ok, ok! h9_audio = SOUND_HE8_BE GOSUB h9_load_sample h9_start_conv = 7 ENDIF IF h9_playing = 2 AND h9_start_conv = 7 $h9_print = &HE8_BF // Now, make your way to the staff door. h9_audio = SOUND_HE8_BF GOSUB h9_load_sample h9_start_conv = 8 ENDIF IF h9_playing = 2 AND h9_start_conv = 8 IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF PRINT_NOW ( HM9_2 ) 7000 1 // ~s~Find and open the ~y~Keycode door~s~! h9_start_conv = 0 ENDIF ENDIF // ******************************************************************************************** // * * // * Dialogue when confronting Guard * // * * // ******************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2147.7559 1605.4012 1005.1703 3.0 3.0 3.0 FALSE AND h9_cut_test = 0 IF h9_guns_out = 1 GOSUB h9_fix_for_failed PRINT_NOW ( HM9_52 ) 4000 1 // ~r~You blew your disguise, scrub the mission! GOTO mission_heist9_failed ENDIF GOSUB h9_set_camera IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD h9_safe_guards[2] SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2147.6750 1607.3992 1005.1875 SET_CHAR_HEADING scplayer 188.6317 SET_PLAYER_CONTROL player1 OFF TASK_TURN_CHAR_TO_FACE_CHAR scplayer h9_safe_guards[2] TASK_TURN_CHAR_TO_FACE_CHAR h9_safe_guards[2] scplayer ENDIF IF NOT IS_CHAR_DEAD h9_safe_guards[2] SET_CHAR_COORDINATES_DONT_WARP_GANG h9_safe_guards[2] 2151.1873 1605.8324 1005.1875 SET_CHAR_HEADING h9_safe_guards[2] 359.3460 ENDIF SET_FIXED_CAMERA_POSITION 2152.1250 1606.5023 1006.7156 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2151.1345 1606.3650 1006.7191 JUMP_CUT PRINT_NOW ( HE8_CA ) 4000 1 // Ain't seen you around here before. You new? CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_CA // Ain't seen you around here before. You new? WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 WAIT 1000 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_talk_to_guy ENDIF ENDWHILE IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer IDLE_chat PED 1.0 FALSE FALSE FALSE FALSE -1 ENDIF PRINT_NOW ( HE8_CB ) 4000 1 // Yeah, I'm, eerr standing in for Jerry he's ill. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_CB // Yeah, I'm, eerr standing in for Jerry he's ill. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_talk_to_guy ENDIF ENDWHILE PRINT_NOW ( HE8_CC ) 4000 1 // Who's Jerry? CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_CC // Who's Jerry? WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_talk_to_guy ENDIF ENDWHILE PRINT_NOW ( HE8_CD ) 2000 1 // Shut up. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_CD // Shut up. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_talk_to_guy ENDIF ENDWHILE PRINT_NOW ( HE8_CE ) 2000 1 // What? CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_CE // What? WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_talk_to_guy ENDIF ENDWHILE IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer IDLE_tired PED 1.0 FALSE FALSE FALSE FALSE -1 ENDIF PRINT_NOW ( HE8_CF ) 3000 1 // (Cough) Think I got Jerry's cough! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_CF // (Cough) Think I got Jerry's cough! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_talk_to_guy ENDIF ENDWHILE h9_talk_to_guy: CLEAR_MISSION_AUDIO 1 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD h9_safe_guards[2] CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_HEADING h9_safe_guards[2] 3.8184 SET_CHAR_HEADING scplayer 207.6449 ENDIF GOSUB h9_restore_camera h9_start_conv = 0 h9_cut_test = 1 ENDIF // ******************************************************************************************** // * * // * Spawn workers when door is opened * // * * // ******************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2149.0076 1605.2992 1005.1722 1.0 1.0 1.0 FALSE AND h9_kpad_result = 0 IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED PRINT_HELP_FOREVER HM9_29 // Press ~m~~widget_mission_start~ to use swipecard. ENDIF WRITE_LOG "FANCYCONTEXT WIDGET_MISSION_START USECARD" // "Use Card". Button prompts for a shared buttons need to present context-specific strings. IF IS_WIDGET_RELEASED WIDGET_MISSION_START IF NOT IS_CHAR_DEAD scplayer AND NOT IS_PLAYER_DEAD player1 SET_PLAYER_CONTROL player1 OFF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2149.0076 1605.2992 1005.1722 SET_CHAR_HEADING scplayer 188.7539 TASK_PLAY_ANIM scplayer Use_SwipeCard HEIST9 2.0 FALSE FALSE FALSE FALSE -1 ENDIF WAIT 500 CLEAR_MISSION_AUDIO 3 LOAD_MISSION_AUDIO 3 SOUND_DOOR_BUZZER WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE IF HAS_MISSION_AUDIO_LOADED 3 PLAY_MISSION_AUDIO 3 ENDIF WAIT 1000 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_PLAYER_DEAD player1 SET_PLAYER_CONTROL player1 ON ENDIF h9_is_downstairs = 1 h9_kpad_result = 1 ENDIF ELSE CLEAR_HELP ENDIF IF h9_kpad_result = 1 AND h9_keycode_active = 0 CLEAR_HELP REQUEST_MODEL VBFYCRP REQUEST_MODEL VWFYCRP WHILE NOT HAS_MODEL_LOADED VWFYCRP OR NOT HAS_MODEL_LOADED VBFYCRP WAIT 0 ENDWHILE OPEN_SEQUENCE_TASK h9_sequence_task FLUSH_ROUTE EXTEND_ROUTE 2144.0095 1603.0858 1000.9680 EXTEND_ROUTE 2163.4092 1602.7787 998.9785 EXTEND_ROUTE 2158.4568 1602.3599 998.9719 EXTEND_ROUTE 2158.1924 1597.8748 998.9711 EXTEND_ROUTE 2157.9609 1612.8350 998.9677 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_WALK FOLLOW_ROUTE_ONCE FLUSH_ROUTE EXTEND_ROUTE 2158.3953 1618.5536 998.9647 EXTEND_ROUTE 2157.9609 1612.8350 998.9677 EXTEND_ROUTE 2158.1924 1597.8748 998.9711 EXTEND_ROUTE 2158.4568 1602.3599 998.9719 EXTEND_ROUTE 2163.4092 1602.7787 998.9785 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_WALK FOLLOW_ROUTE_ONCE FLUSH_ROUTE SET_SEQUENCE_TO_REPEAT h9_sequence_task 1 CLOSE_SEQUENCE_TASK h9_sequence_task CREATE_CHAR PEDTYPE_MISSION3 VWFYCRP 2144.0095 1603.0858 1000.9680 h9_workers[0] SET_CHAR_AREA_VISIBLE h9_workers[0] 1 SET_CHAR_DECISION_MAKER h9_workers[0] h9_decision PERFORM_SEQUENCE_TASK h9_workers[0] h9_sequence_task CREATE_CHAR PEDTYPE_MISSION3 VBFYCRP 2148.3943 1596.7374 998.7680 h9_workers[1] SET_CHAR_AREA_VISIBLE h9_workers[1] 1 SET_CHAR_DECISION_MAKER h9_workers[1] h9_decision CREATE_CHAR PEDTYPE_MISSION3 VWFYCRP 2149.3550 1597.1329 998.7680 h9_workers[2] SET_CHAR_AREA_VISIBLE h9_workers[2] 1 SET_CHAR_DECISION_MAKER h9_workers[2] h9_decision CREATE_CHAR PEDTYPE_MISSION3 BMYBOUN 2146.8313 1603.9417 1000.9680 h9_workers[4] SET_CHAR_HEADING h9_workers[4] 187.4626 SET_CHAR_AREA_VISIBLE h9_workers[4] 1 GIVE_WEAPON_TO_CHAR h9_workers[4] WEAPONTYPE_PISTOL 30000 SET_CURRENT_CHAR_WEAPON h9_workers[4] WEAPONTYPE_PISTOL SET_CHAR_DECISION_MAKER h9_workers[4] h9_decision_tough TASK_STAY_IN_SAME_PLACE h9_workers[4] TRUE CREATE_CHAR PEDTYPE_MISSION3 VWFYCRP 2170.6738 1603.3708 998.9696 h9_workers[5] SET_CHAR_AREA_VISIBLE h9_workers[5] 1 SET_CHAR_DECISION_MAKER h9_workers[5] h9_decision CREATE_CHAR PEDTYPE_MISSION3 VWFYCRP 2169.8433 1605.2988 998.9706 h9_workers[6] SET_CHAR_AREA_VISIBLE h9_workers[6] 1 SET_CHAR_DECISION_MAKER h9_workers[6] h9_decision TASK_CHAT_WITH_CHAR h9_workers[1] h9_workers[2] TRUE TRUE TASK_CHAT_WITH_CHAR h9_workers[2] h9_workers[1] FALSE TRUE TASK_CHAT_WITH_CHAR h9_workers[5] h9_workers[6] TRUE TRUE TASK_CHAT_WITH_CHAR h9_workers[6] h9_workers[5] FALSE TRUE h9_closing_1 = 1 IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer ENDIF CLEAR_SEQUENCE_TASK h9_sequence_task REMOVE_BLIP h9_blip_keycode warp_me_to_here_now: flag_open_keypaddoor_heist9 = 1 ADD_BLIP_FOR_COORD 2143.0459 1620.6610 999.9680 h9_gas_blip SET_BLIP_ENTRY_EXIT h9_gas_blip 2196.6353 1676.8411 10.0 h9_keycode_active = 1 h9_behind_door = 2 TIMERA = 0 ENDIF // ******************************************************************************************** // * * // * Activate Dialogue after keycode * // * * // ******************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2147.8630 1599.6487 1003.5341 2.0 2.0 2.0 FALSE AND h9_closing = 0 h9_closing = 1 CLEAR_AREA 2192.6055 1601.9197 1004.0625 100.0 TRUE SET_PED_DENSITY_MULTIPLIER 0.0 DELETE_CHAR h9_safe_guards[2] TIMERB = 0 ENDIF // ******************************************************************************************** // * * // * Dialogue after keycode * // * * // ******************************************************************************************** IF h9_playing = 2 AND h9_behind_door = 2 AND TIMERA > 1000 IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF $h9_print = &HE8_DB // Right. Next stop, the backup generator room. h9_audio = SOUND_HE8_DB GOSUB h9_load_sample h9_behind_door = 3 ENDIF IF h9_playing = 2 AND h9_behind_door = 3 $h9_print = &HE8_DD // It’s down one level. h9_audio = SOUND_HE8_DD GOSUB h9_load_sample h9_behind_door = 0 ENDIF // ******************************************************************************************** // * * // * Dialogue when inside Vent Room * // * * // ******************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2148.2520 1605.9012 1000.1144 1.2 1.2 1.2 FALSE AND h9_vent_room = 0 h9_vent_room = 1 h9_behind_door = 0 ENDIF IF h9_playing = 2 AND h9_vent_room = 1 h9_is_downstairs = 1 IF NOT IS_CHAR_DEAD scplayer START_CHAR_FACIAL_TALK scplayer 10000 ENDIF $h9_print = &HE8_EA // Ok, I’m in the generator room. h9_audio = SOUND_HE8_EA GOSUB h9_load_sample h9_vent_room = 2 ENDIF IF h9_playing = 2 AND h9_vent_room = 2 IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF $h9_print = &HE8_EB // Ok, the ventilation grills are on the back wall. h9_audio = SOUND_HE8_EB GOSUB h9_load_sample h9_vent_room = 3 ENDIF IF h9_playing = 2 AND h9_vent_room = 3 $h9_print = &HE8_EC // Throw the gas down one of these. h9_audio = SOUND_HE8_EC GOSUB h9_load_sample h9_vent_room = 4 ENDIF IF h9_playing = 2 AND h9_vent_room = 4 IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF $h9_print = &HE8_ED // You got it. h9_audio = SOUND_HE8_ED GOSUB h9_load_sample h9_vent_room = 5 ENDIF // ******************************************************************************************** // * * // * If at swipe-card door * // * * // ******************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2254.5432 1706.5000 1.1746 1.2 1.2 1.2 FALSE PRINT_NOW ( HM9_36 ) 1000 1 // Gas the guards first! ENDIF IF h9_closing < 45 AND NOT h9_closing = 0 ROTATE_OBJECT h9_door_a 180.0000 2.0 FALSE h9_closing ++ ENDIF IF h9_closing_1 < 45 AND NOT h9_closing_1 = 0 ROTATE_OBJECT h9_door_a 270.0000 2.0 FALSE h9_closing_1 ++ ENDIF REPEAT 2 v IF NOT IS_CHAR_DEAD h9_safe_guards[v] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR h9_safe_guards[v] scplayer GOSUB h9_fix_for_failed PRINT_NOW ( HM9_52 ) 4000 1 // ~r~You blew your disguise, scrub the mission! GOTO mission_heist9_failed ENDIF IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR scplayer h9_safe_guards[v] GOSUB h9_fix_for_failed PRINT_NOW ( HM9_52 ) 4000 1 // ~r~You blew your disguise, scrub the mission! GOTO mission_heist9_failed ENDIF IF HAS_CHAR_SPOTTED_CHAR h9_safe_guards[v] scplayer GOSUB h9_fix_for_failed PRINT_NOW ( HM9_37 ) 4000 1 // The guards saw you and raised the alarm GOTO mission_heist9_failed ENDIF ENDIF ENDREPEAT // ******************************************************************************************** // * * // * Activates the vent * // * * // ******************************************************************************************** IF IS_PROJECTILE_IN_AREA 2144.4636 1621.2595 1002.1362 2136.2090 1626.8770 997.7474 AND h9_projected_man = 0 h9_projected_man = 1 h9_behind_door = 0 h9_vent_room = 0 // Kill all of the above ambient scripts SWITCH_OBJECT_BRAINS CASINO_OBJECT_BRAIN FALSE iTerminateAllAmbience = 1 TIMERA = 0 GOSUB h9_fade_out GOSUB spawn_the_gang ENDIF // ******************************************************************************************** // * * // * Inside the vent room * // * * // ******************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2145.7903 1613.8511 999.9680 5.0 5.0 5.0 FALSE AND h9_vent = 0 AND h9_projected_man = 0 h9_vent = 1 CLEAR_AREA 2144.3232 1622.6840 992.5681 30.0 TRUE REPEAT 2 v IF NOT IS_CHAR_DEAD h9_safe_guards[v] CLEAR_CHAR_TASKS_IMMEDIATELY h9_safe_guards[v] ENDIF ENDREPEAT ENDIF // ******************************************************************************************** // * * // * Play gas cutscene * // * * // ******************************************************************************************** //gas0 IF h9_projected_man = 1 h9_shortcut: h9_is_downstairs = 1 CLEAR_PRINTS SWITCH_ENTRY_EXIT MAFCAS FALSE IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF GOSUB h9_set_camera SET_FIXED_CAMERA_POSITION 2139.8501 1609.2365 995.7649 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2140.2295 1610.1453 995.5919 JUMP_CUT REQUEST_MODEL teargas WHILE NOT HAS_MODEL_LOADED teargas WAIT 0 ENDWHILE CLEAR_AREA 2144.3232 1622.6840 997.0000 10.0 TRUE CLEAR_AREA 2143.2656 1618.1451 999.9764 10.0 TRUE LVAR_FLOAT h9_gas_Z LVAR_INT h9_grenade CREATE_OBJECT teargas 2144.3232 1622.6840 997.0000 h9_grenade GOSUB h9_fade_in GET_OBJECT_COORDINATES h9_grenade x y h9_gas_Z WHILE h9_gas_Z > 992.6000 WAIT 20 GET_OBJECT_COORDINATES h9_grenade x y h9_gas_Z h9_gas_Z = h9_gas_Z - 0.3 SET_OBJECT_COORDINATES h9_grenade x y h9_gas_Z ENDWHILE CREATE_FX_SYSTEM teargasAD 2144.3232 1622.6840 992.5681 TRUE h9_gas_fx_[0] PLAY_FX_SYSTEM h9_gas_fx_[0] WAIT 1500 REPEAT 2 v IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skip_the_gas_cut ENDIF IF NOT IS_CHAR_DEAD h9_safe_guards[v] IF v = 0 CLEAR_CHAR_TASKS_IMMEDIATELY h9_safe_guards[v] TASK_PLAY_ANIM h9_safe_guards[v] CAS_G2_GASKO HEIST9 1.0 FALSE FALSE FALSE TRUE -1 WAIT 200 ENDIF IF v = 1 CLEAR_CHAR_TASKS_IMMEDIATELY h9_safe_guards[v] TASK_PLAY_ANIM h9_safe_guards[v] CAS_G2_GASKO HEIST9 1.0 FALSE FALSE FALSE TRUE -1 WAIT 100 ENDIF ENDIF IF NOT IS_CHAR_DEAD h9_safe_guards[v] SET_CHAR_COLLISION h9_safe_guards[v] FALSE ENDIF ENDREPEAT TIMERB = 0 WHILE TIMERB < 1000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skip_the_gas_cut ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_FA // (Coughing/choking and thumps as they hit the floor) WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE TIMERB < 1500 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skip_the_gas_cut ENDIF ENDWHILE IF NOT IS_CHAR_DEAD h9_safe_guards[1] REPORT_MISSION_AUDIO_EVENT_AT_CHAR h9_safe_guards[1] SOUND_PED_COLLAPSE ENDIF TIMERB = 0 WHILE TIMERB < 500 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skip_the_gas_cut ENDIF ENDWHILE PRINT_NOW ( HE8_FB ) 2000 1 // Won’t know if that worked until we’re down there, I guess... CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_FB // Won’t know if that worked until we’re down there, I guess... WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skip_the_gas_cut ENDIF ENDWHILE IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2143.3765 1619.6550 999.9764 SET_CHAR_HEADING scplayer 182.7419 ENDIF STOP_FX_SYSTEM h9_gas_fx_[0] KILL_FX_SYSTEM_NOW h9_gas_fx_[0] CLEAR_AREA 2144.3232 1622.6840 997.0000 10.0 TRUE CLEAR_AREA 2143.2656 1618.1451 999.9764 10.0 TRUE SET_FIXED_CAMERA_POSITION 2142.7495 1617.8359 1001.1431 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2142.9971 1618.8032 1001.1974 JUMP_CUT PRINT_NOW ( HE8_FC ) 2000 1 // Don’t worry about it. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_FC // Don’t worry about it. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skip_the_gas_cut ENDIF ENDWHILE PRINT_NOW ( HE8_FD ) 2000 1 // Right now we got a schedule to stick to! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_FD // Right now we got a schedule to stick to! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skip_the_gas_cut ENDIF ENDWHILE PRINT_NOW ( HE8_FE ) 2000 1 // Head to the security door and use Millie’s swipe card! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_FE // Head to the security door and use Millie’s swipe card! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skip_the_gas_cut ENDIF ENDWHILE h9_skip_the_gas_cut: DELETE_OBJECT h9_grenade MARK_MODEL_AS_NO_LONGER_NEEDED teargas IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2143.2205 1618.3719 999.9688 SET_CHAR_HEADING scplayer 175.5027 ENDIF IF NOT IS_CHAR_DEAD h9_safe_guards[0] CLEAR_CHAR_TASKS_IMMEDIATELY h9_safe_guards[0] TASK_PLAY_ANIM_NON_INTERRUPTABLE h9_safe_guards[0] CAS_G2_GASKO HEIST9 1.0 FALSE FALSE FALSE TRUE -1 TASK_TOGGLE_PED_THREAT_SCANNER h9_safe_guards[0] FALSE FALSE FALSE SET_CHAR_DECISION_MAKER h9_safe_guards[0] h9_empty_decision ENDIF IF NOT IS_CHAR_DEAD h9_safe_guards[1] CLEAR_CHAR_TASKS_IMMEDIATELY h9_safe_guards[1] TASK_PLAY_ANIM_NON_INTERRUPTABLE h9_safe_guards[1] CAS_G2_GASKO HEIST9 1.0 FALSE FALSE FALSE TRUE -1 TASK_TOGGLE_PED_THREAT_SCANNER h9_safe_guards[1] FALSE FALSE FALSE SET_CHAR_DECISION_MAKER h9_safe_guards[1] h9_empty_decision ENDIF GOSUB h9_restore_camera STOP_FX_SYSTEM h9_gas_fx_[0] KILL_FX_SYSTEM_NOW h9_gas_fx_[0] h9_txt_work: PRINT_NOW ( HM9_12 ) 5000 1 // ~s~Find the swipe card door and open it. REMOVE_BLIP h9_gas_blip ADD_BLIP_FOR_COORD 2168.1729 1616.9865 998.9700 h9_swipecard_blip SET_BLIP_ENTRY_EXIT h9_swipecard_blip 2196.6353 1676.8411 10.0 h9_mission_status = 3 h9_gas_txt = 1 ENDIF IF h9_body_count = 4 h9_body_count = 5 GOTO h9_txt_work ENDIF ENDIF // ************************************************************************************************* // * * // * PRESS TRIANGLE AT SWIPE-CARD DOOR * // * * // ************************************************************************************************* // In main loop IF NOT IS_MESSAGE_BEING_DISPLAYED AND NOT h9_gas_txt = 12 AND NOT h9_gas_txt = 0 IF h9_playing = 2 AND h9_gas_txt = 1 IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF $h9_print = &HE8_GB // Ok, I've hacked their emergency lighting protocols. h9_audio = SOUND_HE8_GB GOSUB h9_load_sample h9_gas_txt = 2 ENDIF IF h9_playing = 2 AND h9_gas_txt = 2 $h9_print = &HE8_GC // I'm going to blow the charges you placed at the dam. h9_audio = SOUND_HE8_GC GOSUB h9_load_sample h9_gas_txt = 3 ENDIF IF h9_playing = 2 AND h9_gas_txt = 3 $h9_print = &HE8_GD // Here goes nothing... h9_audio = SOUND_HE8_GD GOSUB h9_load_sample h9_gas_txt = 4 ENDIF IF h9_playing = 2 AND h9_gas_txt = 4 SET_DARKNESS_EFFECT TRUE 220 CLEAR_MISSION_AUDIO 3 LOAD_MISSION_AUDIO 3 SOUND_LIGHTS_POWER_DOWN WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE IF HAS_MISSION_AUDIO_LOADED 3 PLAY_MISSION_AUDIO 3 ENDIF WAIT 100 $h9_print = &HE8_GE // Beautiful! I didn't think that was going to work! h9_audio = SOUND_HE8_GE GOSUB h9_load_sample OPEN_SEQUENCE_TASK h9_sequence_task TASK_FOLLOW_PATH_NODES_TO_COORD -1 2157.5972 1597.8632 998.9694 PEDMOVE_RUN -1 TASK_LOOK_AT_COORD -1 2155.7815 1598.0634 998.9686 -2 TASK_PLAY_ANIM -1 IDLE_chat PED 1.0 TRUE FALSE FALSE FALSE -1 TASK_PAUSE -1 1000 SET_SEQUENCE_TO_REPEAT h9_sequence_task 1 CLOSE_SEQUENCE_TASK h9_sequence_task REPEAT 7 v IF NOT IS_CHAR_DEAD h9_workers[v] CLEAR_CHAR_TASKS_IMMEDIATELY h9_workers[v] PERFORM_SEQUENCE_TASK h9_workers[v] h9_sequence_task ENDIF ENDREPEAT CLEAR_SEQUENCE_TASK h9_sequence_task h9_gas_txt = 5 ENDIF IF h9_playing = 2 AND h9_gas_txt = 5 IF NOT IS_NIGHT_VISION_ACTIVE IF NOT IS_CHAR_DEAD scplayer START_CHAR_FACIAL_TALK scplayer 10000 ENDIF $h9_print = &HE8_GF // Can't see jack! h9_audio = SOUND_HE8_GF GOSUB h9_load_sample ENDIF h9_gas_txt = 9 ENDIF IF h9_playing = 2 AND h9_gas_txt = 9 IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF PRINT_HELP_FOREVER HM9_49 // Select the night-vision goggles and tap ~m~~widget_explicit_NVG~ to activate. h9_gas_txt = 10 TIMERB = 0 ENDIF IF TIMERB > 5000 AND h9_service_txt = 0 IF h9_mission_status = 5 AND h9_playing = 2 AND h9_gas_txt = 10 h9_gas_txt = 11 ENDIF IF h9_mission_status = 5 AND h9_playing = 2 AND h9_gas_txt = 11 IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF $h9_print = &HE8_HB // You heard the man, head down to the service bay! h9_audio = SOUND_HE8_HB GOSUB h9_load_sample h9_gas_txt = 12 ENDIF ENDIF ENDIF IF h9_mission_status = 3 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2168.173 1617.453 999.974 1.0 1.0 1.0 FALSE IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED PRINT_HELP_FOREVER HM9_29 // Press ~m~~widget_mission_start~ to use swipecard. ENDIF WRITE_LOG "FANCYCONTEXT WIDGET_MISSION_START USECARD" // "Use Card". Button prompts for a shared buttons need to present context-specific strings. IF IS_WIDGET_RELEASED WIDGET_MISSION_START REPEAT 7 v DELETE_CHAR h9_workers[v] ENDREPEAT CLEAR_MISSION_AUDIO 3 LOAD_MISSION_AUDIO 3 SOUND_DOOR_BUZZER WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE MARK_MODEL_AS_NO_LONGER_NEEDED VWFYCRP MARK_MODEL_AS_NO_LONGER_NEEDED WMYBOUN MARK_MODEL_AS_NO_LONGER_NEEDED VWFYWAI REMOVE_BLIP h9_swipecard_blip CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2167.5994 1617.2870 998.9715 SET_CHAR_HEADING scplayer 270.0000 TASK_PLAY_ANIM scplayer Use_SwipeCard HEIST9 2.0 FALSE FALSE FALSE FALSE -1 WAIT 500 IF HAS_MISSION_AUDIO_LOADED 3 PLAY_MISSION_AUDIO 3 ENDIF WAIT 500 v = 0 WHILE NOT v = 33 WAIT 0 ROTATE_OBJECT h9_door_c 180.0000 3.0 FALSE v ++ ENDWHILE h9_mission_status = 5 CLEAR_HELP h9_start_conv = 0 TIMERA = 0 ENDIF ELSE CLEAR_HELP ENDIF ENDIF // ************************************************************************************************* // * * // * ACTIVATE NIGHT-VISION GOGGLES * // * * // ************************************************************************************************* IF h9_mission_status = 5 // ************************************************************************************************* // * * // * Create Forklift and Blips * // * * // ************************************************************************************************* IF h9_playing = 2 AND h9_start_conv = 0 REQUEST_MODEL FORKLIFT WHILE NOT HAS_MODEL_LOADED FORKLIFT WAIT 0 ENDWHILE // Creates forklift CREATE_CAR FORKLIFT 2173.6206 1585.9639 998.9722 h9_forklift SET_VEHICLE_AREA_VISIBLE h9_forklift 1 SET_CAR_HEADING h9_forklift 270.0 CHANGE_CAR_COLOUR h9_forklift CARCOLOUR_TAXIYELLOW CARCOLOUR_TAXIYELLOW h9_spawn_forklift = 1 IF NOT IS_CAR_DEAD h9_forklift SET_VEHICLE_AREA_VISIBLE h9_forklift 1 ENDIF ADD_BLIP_FOR_COORD 2220.5430 1572.6249 998.9531 h9_roller_door_blip SET_BLIP_ENTRY_EXIT h9_roller_door_blip 2196.6353 1676.8411 10.0 h9_start_conv = 1 ENDIF // ************************************************************************************************* // * * // * Player enters the service area * // * * // ************************************************************************************************* IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2224.4524 1595.4354 998.9753 1.2 1.2 1.2 FALSE AND h9_service_txt = 0 h9_service_txt = 1 ENDIF IF h9_playing = 2 AND h9_service_txt = 1 $h9_print = &HE8_JA // Ok, with the power down, the gate ain’t locked. h9_audio = SOUND_HE8_JA GOSUB h9_load_sample h9_service_txt = 2 ENDIF IF h9_playing = 2 AND h9_service_txt = 2 $h9_print = &HE8_JB // But you’re going to have to raise it yourself. h9_audio = SOUND_HE8_JB GOSUB h9_load_sample h9_service_txt = 3 ENDIF IF h9_playing = 2 AND h9_service_txt = 3 /* IF NOT IS_CHAR_DEAD scplayer START_CHAR_FACIAL_TALK scplayer 10000 ENDIF $h9_print = &HE8_JC // It’s ok, I’ve had an idea! h9_audio = SOUND_HE8_JC GOSUB h9_load_sample */ IF DOES_BLIP_EXIST h9_roller_door_blip REMOVE_BLIP h9_roller_door_blip ENDIF IF NOT IS_CAR_DEAD h9_forklift ADD_BLIP_FOR_CAR h9_forklift h9_forklift_blip SET_BLIP_ENTRY_EXIT h9_forklift_blip 2196.6353 1676.8411 10.0 SET_BLIP_AS_FRIENDLY h9_forklift_blip TRUE ENDIF h9_service_txt = 4 ENDIF IF h9_playing = 2 AND h9_service_txt = 4 PRINT_NOW ( HM9_51 ) 7000 1 // ~s~You'll need something big to lift this door up. h9_service_txt = 5 ENDIF // ************************************************************************************************* // * * // * Player enters the forklift * // * * // ************************************************************************************************* IF h9_spawn_forklift = 1 IF NOT IS_CAR_DEAD h9_forklift IF IS_CHAR_IN_CAR scplayer h9_forklift IF h9_forklift_message = 0 AND IS_CHAR_IN_CAR scplayer h9_forklift PRINT_NOW ( HM9_5 ) 5000 1 // ~s~Use the forklift to open the roller door. h9_forklift_message = 1 h9_mission_status = 6 h9_once_only = 1 IF DOES_BLIP_EXIST h9_roller_door_blip REMOVE_BLIP h9_roller_door_blip ENDIF ADD_BLIP_FOR_COORD 2220.5430 1572.6249 998.9531 h9_roller_door_blip SET_BLIP_ENTRY_EXIT h9_roller_door_blip 2196.6353 1676.8411 10.0 ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_CAR_DEAD h9_forklift AND h9_mission_status < 7 AND h9_spawn_forklift = 1 GOSUB h9_fix_for_failed PRINT_NOW ( HM9_13 ) 4000 1 // ~r~You idiot you have destroyed the forklift, the only way to open the roller door! GOTO mission_heist9_failed ENDIF // ************************************************************************************************* // * * // * CHANGE BLIP DISPLAY FOR FORKLIFT * // * * // ************************************************************************************************* IF h9_mission_status = 6 IF NOT IS_CAR_DEAD h9_forklift IF IS_CHAR_IN_CAR scplayer h9_forklift AND h9_back_in_the_forklift = 0 CHANGE_BLIP_DISPLAY h9_forklift_blip NEITHER CHANGE_BLIP_DISPLAY h9_roller_door_blip BOTH h9_back_in_the_forklift = 1 ENDIF IF NOT IS_CHAR_IN_CAR scplayer h9_forklift AND h9_back_in_the_forklift = 1 PRINT_NOW ( HM9_23 ) 3000 1 // ~s~Get back in the forklift! CHANGE_BLIP_DISPLAY h9_forklift_blip BOTH CHANGE_BLIP_DISPLAY h9_roller_door_blip NEITHER h9_back_in_the_forklift = 0 ENDIF ENDIF IF NOT IS_CAR_DEAD h9_forklift GET_CAR_MOVING_COMPONENT_OFFSET h9_forklift h9_offset IF IS_CHAR_IN_CAR scplayer h9_forklift IF LOCATE_STOPPED_CHAR_ANY_MEANS_3D scplayer 2220.5427 1573.1407 998.9672 6.0 6.0 6.0 FALSE PRINT_HELP_FOREVER ( HM9_53 ) // Push ~m~~widget_auto_hydraulics~ to lift the door. ELSE CLEAR_HELP ENDIF GET_CHAR_COORDINATES scplayer x y z GET_CHAR_HEADING scplayer h9_heading h9_calculus = h9_offset h9_calculus = h9_calculus + 1001.6000 h9_offset = h9_offset + z IF h9_heading > 140.0 AND h9_heading < 220.0 IF y > 1572.8000 AND y < 1573.8000 LVAR_FLOAT fMovingComponent fMovingComponent = 0.0 GET_CAR_MOVING_COMPONENT_OFFSET h9_forklift fMovingComponent LVAR_INT nMovingForks nMovingForks = 0 IF fMovingComponent > 0.0 OR fMovingComponent < 1.5 nMovingForks = 1 ENDIF IF IS_BUTTON_PRESSED PAD1 RIGHTSTICKY OR nMovingForks = 1 GET_OBJECT_COORDINATES h9_door_e x1 y1 h9_z1 RStickY = 0 GET_POSITION_OF_ANALOGUE_STICKS PAD1 LStickX LStickY RStickX RStickY h9_z1 = h9_calculus - 0.1 SET_OBJECT_COORDINATES h9_door_e 2220.1880 1571.7629 h9_z1 IF h9_door_sfx = 0 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT h9_door_e SOUND_SHUTTER_DOOR_SLOW_START h9_door_sfx = 1 ENDIF ELSE IF h9_door_sfx = 1 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT h9_door_e SOUND_SHUTTER_DOOR_SLOW_STOP h9_door_sfx = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // ************************************************************************************************* // * * // * FORKLIFT IS AT THE ROLLERDOOR * // * * // ************************************************************************************************* IF h9_z1 >= 1002.8000 AND NOT IS_CHAR_DEAD scplayer //van0 try_here: IF IS_CHAR_IN_MODEL scplayer FORKLIFT CREATE_PICKUP_WITH_AMMO satchel PICKUP_ONCE 10 2146.4871 1622.8053 993.5000 h9_satchel_bomb IF NOT IS_CHAR_DEAD h9_workers[7] DELETE_CHAR h9_workers[7] ENDIF IF NOT IS_CHAR_DEAD h9_workers[8] DELETE_CHAR h9_workers[8] ENDIF IF NOT IS_CHAR_DEAD h9_workers[9] DELETE_CHAR h9_workers[9] ENDIF IF NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 OFF ENDIF REMOVE_BLIP h9_roller_door_blip CLEAR_HELP REQUEST_CAR_RECORDING 499 REQUEST_CAR_RECORDING 487 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 499 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 487 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD h9_getaway_car SET_VEHICLE_AREA_VISIBLE h9_getaway_car 1 SWITCH_CAR_SIREN h9_getaway_car ON ENDIF IF NOT IS_CAR_DEAD h9_forklift SET_CAR_COORDINATES h9_forklift 2220.5427 1573.1407 998.9672 SET_CAR_HEADING h9_forklift 180.0000 ENDIF GOSUB h9_set_camera SET_FIXED_CAMERA_POSITION 2224.6938 1577.6321 1002.6334 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2224.1992 1576.8566 1002.2411 JUMP_CUT IF HAS_CAR_RECORDING_BEEN_LOADED 487 AND NOT IS_CAR_DEAD h9_forklift START_PLAYBACK_RECORDED_CAR h9_forklift 487 ENDIF REPORT_MISSION_AUDIO_EVENT_AT_OBJECT h9_door_e SOUND_SHUTTER_DOOR_START IF DOES_OBJECT_EXIST h9_door_e GET_OBJECT_COORDINATES h9_door_e x1 y1 h9_z1 ENDIF WHILE NOT h9_z1 > 1005.4000 WAIT 50 h9_z1 = h9_z1 + 0.1 SET_OBJECT_COORDINATES h9_door_e 2220.1880 1571.7629 h9_z1 ENDWHILE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT h9_door_e SOUND_SHUTTER_DOOR_STOP IF HAS_CAR_RECORDING_BEEN_LOADED 499 AND NOT IS_CAR_DEAD h9_getaway_car START_PLAYBACK_RECORDED_CAR h9_getaway_car 499 ENDIF IF NOT IS_CAR_DEAD h9_forklift IF IS_PLAYBACK_GOING_ON_FOR_CAR h9_forklift STOP_PLAYBACK_RECORDED_CAR h9_forklift ENDIF SET_CAR_COORDINATES h9_forklift 2218.0386 1592.2324 998.9783 SET_CAR_HEADING h9_forklift 26.1233 ENDIF IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2217.1147 1589.6826 998.9709 ELSE SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2217.1147 1589.6826 998.9709 ENDIF SET_CHAR_HEADING scplayer 209.5064 ENDIF REPEAT 7 v IF NOT IS_CHAR_DEAD h9_workers[v] DELETE_CHAR h9_workers[v] ENDIF ENDREPEAT REQUEST_MODEL satchel REQUEST_MODEL bomb REQUEST_MODEL mp5lng REQUEST_MODEL WMYBOUN WHILE NOT HAS_MODEL_LOADED satchel OR NOT HAS_MODEL_LOADED bomb OR NOT HAS_MODEL_LOADED mp5lng OR NOT HAS_MODEL_LOADED WMYBOUN WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION 2217.3696 1580.5952 1000.5817 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2217.6626 1579.6394 1000.5587 JUMP_CUT TIMERB = 0 WHILE TIMERB < 3000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skipping ENDIF ENDWHILE SET_FIXED_CAMERA_POSITION 2215.1323 1594.2478 1002.7781 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2215.4087 1593.3190 1002.5314 JUMP_CUT IF NOT IS_CAR_DEAD h9_getaway_car FREEZE_CAR_POSITION h9_getaway_car TRUE ENDIF PRINT_NOW ( HE8_KA ) 4000 1 // Well done, Carl. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_KA // Well done, Carl. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skipping ENDIF ENDWHILE IF NOT IS_CAR_DEAD h9_getaway_car OPEN_SEQUENCE_TASK h9_sequence_task TASK_PAUSE -1 500 TASK_LEAVE_CAR -1 h9_getaway_car FLUSH_ROUTE EXTEND_ROUTE 2224.1553 1579.6910 998.9739 EXTEND_ROUTE 2223.6360 1585.5488 998.9675 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_PLAY_ANIM -1 IDLE_chat PED 1.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK h9_sequence_task IF NOT IS_CHAR_DEAD h9_gang[0] PERFORM_SEQUENCE_TASK h9_gang[0] h9_sequence_task ENDIF CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task TASK_LEAVE_CAR -1 h9_getaway_car FLUSH_ROUTE EXTEND_ROUTE 2220.0332 1584.6139 998.9719 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_TURN_CHAR_TO_FACE_COORD -1 2216.4399 1589.1302 998.9790 CLOSE_SEQUENCE_TASK h9_sequence_task IF NOT IS_CHAR_DEAD h9_gang[1] PERFORM_SEQUENCE_TASK h9_gang[1] h9_sequence_task ENDIF CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task TASK_PAUSE -1 500 TASK_LEAVE_CAR -1 h9_getaway_car FLUSH_ROUTE EXTEND_ROUTE 2221.4946 1584.9478 998.9701 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_TURN_CHAR_TO_FACE_COORD -1 2216.4399 1589.1302 998.9790 CLOSE_SEQUENCE_TASK h9_sequence_task IF NOT IS_CHAR_DEAD h9_gang[2] PERFORM_SEQUENCE_TASK h9_gang[2] h9_sequence_task ENDIF CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task TASK_PAUSE -1 1000 TASK_LEAVE_CAR -1 h9_getaway_car FLUSH_ROUTE EXTEND_ROUTE 2216.6995 1578.3629 998.9761 EXTEND_ROUTE 2217.5381 1583.6400 998.9749 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_TURN_CHAR_TO_FACE_COORD -1 2216.4399 1589.1302 998.9790 CLOSE_SEQUENCE_TASK h9_sequence_task IF NOT IS_CHAR_DEAD h9_gang[3] PERFORM_SEQUENCE_TASK h9_gang[3] h9_sequence_task ENDIF CLEAR_SEQUENCE_TASK h9_sequence_task ENDIF // ******************************************************************************************** // * * // * Team assembles * // * * // ******************************************************************************************** PRINT_NOW ( HE8_KB ) 4000 1 // Now it’s time for us to do our part! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_KB // Now it’s time for us to do our part! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skipping ENDIF ENDWHILE PRINT_NOW ( HE8_KC ) 4000 1 // Try to stay close! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_KC // Try to stay close! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skipping ENDIF ENDWHILE PRINT_NOW ( HE8_KD ) 4000 1 // Ok team, I’ve gone over the layout to this place so I know it back to front. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_KD // Ok team, I’ve gone over the layout to this place so I know it back to front. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skipping ENDIF ENDWHILE SET_FIXED_CAMERA_POSITION 2219.6533 1584.9146 1001.2105 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2220.1802 1585.7460 1001.0345 JUMP_CUT PRINT_NOW ( HE8_KE ) 4000 1 // Everybody follow me! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_KE // Everybody follow me! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 IF NOT IS_CHAR_DEAD h9_gang[0] OPEN_SEQUENCE_TASK h9_sequence_task FLUSH_ROUTE EXTEND_ROUTE 2224.1919 1589.1930 998.9668 EXTEND_ROUTE 2225.4651 1592.9969 998.9677 EXTEND_ROUTE 2226.7390 1597.7960 998.9755 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_PLAY_ANIM -1 getup_front PED 1.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[0] PERFORM_SEQUENCE_TASK h9_gang[0] h9_sequence_task CLEAR_SEQUENCE_TASK h9_sequence_task ENDIF TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skipping ENDIF ENDWHILE TIMERB = 0 WHILE TIMERB < 2500 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skipping ENDIF ENDWHILE SHAKE_CAM 30 TIMERB = 0 WHILE TIMERB < 1500 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skipping ENDIF ENDWHILE IF NOT IS_CHAR_DEAD h9_gang[0] IF NOT IS_CHAR_DEAD h9_gang[1] CLEAR_CHAR_TASKS h9_gang[1] TASK_TURN_CHAR_TO_FACE_CHAR h9_gang[1] h9_gang[0] ENDIF IF NOT IS_CHAR_DEAD h9_gang[2] CLEAR_CHAR_TASKS h9_gang[2] TASK_TURN_CHAR_TO_FACE_CHAR h9_gang[2] h9_gang[0] ENDIF WAIT 100 IF NOT IS_CHAR_DEAD h9_gang[3] AND NOT IS_CHAR_DEAD h9_gang[0] CLEAR_CHAR_TASKS h9_gang[3] TASK_TURN_CHAR_TO_FACE_CHAR h9_gang[3] h9_gang[0] ENDIF WAIT 100 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD h9_gang[0] CLEAR_CHAR_TASKS scplayer TASK_TURN_CHAR_TO_FACE_CHAR scplayer h9_gang[0] ENDIF ENDIF PRINT_NOW ( HE8_KF ) 4000 1 // Damn! The devious bastards have changed the layout! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_KF // Damn! The devious bastards have changed the layout! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skipping ENDIF ENDWHILE IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD h9_gang[0] CLEAR_CHAR_TASKS h9_gang[0] TASK_TURN_CHAR_TO_FACE_CHAR h9_gang[0] scplayer ENDIF SET_FIXED_CAMERA_POSITION 2216.9634 1581.5256 1000.5791 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2217.4033 1582.4163 1000.4652 JUMP_CUT PRINT_NOW ( HE8_KG ) 4000 1 // I’ll take the lead, boss. CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_KG // I’ll take the lead, boss. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skipping ENDIF ENDWHILE PRINT_NOW ( HE8_KH ) 4000 1 // Good idea, everybody follow him! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_KH // Good idea, everybody follow him! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skipping ENDIF ENDWHILE h9_skipping: // First Section //-------------------------------------------------------------------------------------- //second0 LVAR_INT h9_first_room[5] h9_first_inv[15] //First guy at snack machine - Crouch shoot must be killed - 200 hp - 50 acc CREATE_CHAR PEDTYPE_MISSION1 BMYBOUN 2201.1262 1617.8768 998.9827 h9_first_room[0] SET_CHAR_AREA_VISIBLE h9_first_room[0] 1 SET_CHAR_HEADING h9_first_room[0] 267.4834 TASK_TOGGLE_DUCK h9_first_room[0] TRUE //Second guy standing in doorway - dual pistols no duck CREATE_CHAR PEDTYPE_MISSION1 WMYBOUN 2196.0835 1618.6842 998.9766 h9_first_room[1] SET_CHAR_AREA_VISIBLE h9_first_room[1] 1 SET_CHAR_HEADING h9_first_room[1] 263.4616 //thrid guy behind snack machine - Crouch Shoot must be killed CREATE_CHAR PEDTYPE_MISSION1 BMYBOUN 2207.9170 1620.3722 998.9827 h9_first_room[2] SET_CHAR_AREA_VISIBLE h9_first_room[2] 1 SET_CHAR_HEADING h9_first_room[2] 267.4754 TASK_TOGGLE_DUCK h9_first_room[2] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER h9_first_room[2] TRUE REPEAT 3 v SET_CHAR_MONEY h9_first_room[v] 0 IF NOT v = 2 SET_CHAR_HEALTH h9_first_room[v] 200 SET_CHAR_MAX_HEALTH h9_first_room[v] 200 ENDIF ADD_BLIP_FOR_CHAR h9_first_room[v] h9_first_inv[v] SET_BLIP_ENTRY_EXIT h9_first_inv[v] 2196.6353 1676.8411 10.0 CHANGE_BLIP_DISPLAY h9_first_inv[v] BLIP_ONLY GIVE_WEAPON_TO_CHAR h9_first_room[v] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON h9_first_room[v] WEAPONTYPE_MP5 SET_CHAR_ACCURACY h9_first_room[v] 20 SET_CHAR_SHOOT_RATE h9_first_room[v] 20 SET_CHAR_DECISION_MAKER h9_first_room[v] h9_decision_tough TASK_STAY_IN_SAME_PLACE h9_first_room[v] TRUE ENDREPEAT // Second Section //-------------------------------------------------------------------------------------- LVAR_INT h9_second_room[15] h9_seconds_inv[15] //Enemy stand and shoot behind red box CREATE_CHAR PEDTYPE_MISSION1 BMYBOUN 2180.0754 1611.5725 998.9766 h9_second_room[0] SET_CHAR_AREA_VISIBLE h9_second_room[0] 1 SET_CHAR_HEADING h9_second_room[0] 273.7555 SET_CHAR_ONLY_DAMAGED_BY_PLAYER h9_second_room[0] TRUE //Enemy crouching left of shelf CREATE_CHAR PEDTYPE_MISSION1 WMYBOUN 2186.1421 1612.3982 998.9777 h9_second_room[1] SET_CHAR_AREA_VISIBLE h9_second_room[1] 1 SET_CHAR_HEADING h9_second_room[1] 306.4445 TASK_TOGGLE_DUCK h9_second_room[1] TRUE //Enemy at front near washing machine crouching CREATE_CHAR PEDTYPE_MISSION1 BMYBOUN 2183.5205 1615.2456 998.9766 h9_second_room[2] SET_CHAR_AREA_VISIBLE h9_second_room[2] 1 SET_CHAR_HEADING h9_second_room[2] 294.2185 // Enemies in Second room //Enemy near red box crouching CREATE_CHAR PEDTYPE_MISSION1 WMYBOUN 2182.6118 1623.6973 998.9742 h9_second_room[3] SET_CHAR_AREA_VISIBLE h9_second_room[3] 1 SET_CHAR_HEADING h9_second_room[3] 248.6147 TASK_TOGGLE_DUCK h9_second_room[3] TRUE //Enemy behind washing machine standing CREATE_CHAR PEDTYPE_MISSION1 WMYBOUN 2179.6814 1622.4037 998.9764 h9_second_room[4] SET_CHAR_AREA_VISIBLE h9_second_room[4] 1 SET_CHAR_HEADING h9_second_room[4] 268.7008 SET_CHAR_ONLY_DAMAGED_BY_PLAYER h9_second_room[4] TRUE //Enemy standing behind red box CREATE_CHAR PEDTYPE_MISSION1 BMYBOUN 2178.8525 1625.6030 998.9709 h9_second_room[5] SET_CHAR_AREA_VISIBLE h9_second_room[5] 1 SET_CHAR_HEADING h9_second_room[5] 250.7106 // Thrid Section //-------------------------------------------------------------------------------------- //Enemy near red box crouching CREATE_CHAR PEDTYPE_MISSION1 BMYBOUN 2176.3633 1606.5989 998.9827 h9_second_room[6] SET_CHAR_AREA_VISIBLE h9_second_room[6] 1 SET_CHAR_HEADING h9_second_room[6] 0.8709 SET_SENSE_RANGE h9_second_room[6] 5.0 TASK_TOGGLE_DUCK h9_second_room[6] TRUE //Enemy behind washing machine standing CREATE_CHAR PEDTYPE_MISSION1 WMYBOUN 2176.4915 1600.8971 998.9827 h9_second_room[7] SET_CHAR_AREA_VISIBLE h9_second_room[7] 1 SET_SENSE_RANGE h9_second_room[7] 5.0 SET_CHAR_HEADING h9_second_room[7] 352.9370 //Enemy standing behind red box CREATE_CHAR PEDTYPE_MISSION1 BMYBOUN 2169.1174 1618.6256 998.9766 h9_second_room[8] SET_CHAR_AREA_VISIBLE h9_second_room[8] 1 SET_CHAR_HEADING h9_second_room[8] 272.9878 //Enemy peeking around doorway CREATE_CHAR PEDTYPE_MISSION1 BMYBOUN 2161.2080 1602.7756 998.9812 h9_second_room[9] SET_CHAR_AREA_VISIBLE h9_second_room[9] 1 SET_CHAR_HEADING h9_second_room[9] 4.2093 //Enemy behind snack machine CREATE_CHAR PEDTYPE_MISSION1 WMYBOUN 2156.5396 1605.2523 998.9725 h9_second_room[10] SET_CHAR_AREA_VISIBLE h9_second_room[10] 1 SET_CHAR_HEADING h9_second_room[10] 353.7050 REPEAT 11 v SET_CHAR_MONEY h9_second_room[v] 0 IF NOT v = 0 AND NOT v = 4 SET_CHAR_HEALTH h9_second_room[v] 200 SET_CHAR_MAX_HEALTH h9_second_room[v] 200 ENDIF ADD_BLIP_FOR_CHAR h9_second_room[v] h9_seconds_inv[v] SET_BLIP_ENTRY_EXIT h9_seconds_inv[v] 2196.6353 1676.8411 10.0 CHANGE_BLIP_DISPLAY h9_seconds_inv[v] BLIP_ONLY GIVE_WEAPON_TO_CHAR h9_second_room[v] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON h9_second_room[v] WEAPONTYPE_MP5 SET_CHAR_SHOOT_RATE h9_second_room[v] 20 SET_CHAR_ACCURACY h9_second_room[v] 20 SET_CHAR_DECISION_MAKER h9_second_room[v] h9_decision_tough TASK_STAY_IN_SAME_PLACE h9_second_room[v] TRUE ENDREPEAT h9_safe_timer = 420000 CLEAR_ONSCREEN_TIMER h9_safe_timer DISPLAY_ONSCREEN_TIMER_WITH_STRING h9_safe_timer TIMER_DOWN HM9_1A // TIME GOSUB h9_restore_camera DELETE_OBJECT h9_door_e IF NOT IS_CAR_DEAD h9_getaway_car IF IS_PLAYBACK_GOING_ON_FOR_CAR h9_getaway_car STOP_PLAYBACK_RECORDED_CAR h9_getaway_car ENDIF SET_CAR_COORDINATES h9_getaway_car 2220.3899 1577.6234 998.9670 SET_CAR_HEADING h9_getaway_car 179.9804 SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_CAR h9_getaway_car ENDIF // tag0 IF NOT IS_CAR_DEAD h9_getaway_car IF NOT IS_CHAR_DEAD h9_gang[0] AND NOT IS_CHAR_DEAD h9_gang[1] AND NOT IS_CHAR_DEAD h9_gang[2] AND NOT IS_CHAR_DEAD h9_gang[3] LVAR_INT h9_goto_first_room h9_enter_crouch // -------------------------------------------------------------------------- OPEN_SEQUENCE_TASK h9_kill_seconds TASK_PAUSE -1 10 IF NOT IS_CHAR_DEAD h9_first_room[0] TASK_KILL_CHAR_ON_FOOT -1 h9_first_room[0] ENDIF IF NOT IS_CHAR_DEAD h9_first_room[1] TASK_KILL_CHAR_ON_FOOT -1 h9_first_room[1] ENDIF IF NOT IS_CHAR_DEAD h9_first_room[2] TASK_KILL_CHAR_ON_FOOT -1 h9_first_room[2] ENDIF CLOSE_SEQUENCE_TASK h9_kill_seconds // -------------------------------------------------------------------------- OPEN_SEQUENCE_TASK h9_goto_first_room FLUSH_ROUTE EXTEND_ROUTE 2221.9524 1586.5632 998.9695 EXTEND_ROUTE 2223.3901 1591.6100 998.9678 EXTEND_ROUTE 2224.2534 1597.9062 998.9766 EXTEND_ROUTE 2224.3589 1599.6816 998.9830 TASK_TOGGLE_DUCK -1 FALSE TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE CLOSE_SEQUENCE_TASK h9_goto_first_room // -------------------------------------------------------------------------- OPEN_SEQUENCE_TASK h9_enter_crouch FLUSH_ROUTE TASK_TOGGLE_DUCK -1 TRUE EXTEND_ROUTE 2224.5933 1602.6691 998.9816 EXTEND_ROUTE 2224.7900 1609.5209 998.9750 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE CLOSE_SEQUENCE_TASK h9_enter_crouch // -------------------------------------------------------------------------- //First guy around corner OPEN_SEQUENCE_TASK h9_sequence_task IF IS_CHAR_IN_CAR h9_gang[1] h9_getaway_car TASK_LEAVE_CAR -1 h9_getaway_car ENDIF PERFORM_SEQUENCE_TASK -1 h9_goto_first_room PERFORM_SEQUENCE_TASK -1 h9_enter_crouch TASK_FOLLOW_PATH_NODES_TO_COORD -1 2222.4519 1617.0216 998.9678 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE PERFORM_SEQUENCE_TASK -1 h9_kill_seconds CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS h9_gang[1] PERFORM_SEQUENCE_TASK h9_gang[1] h9_sequence_task // -------------------------------------------------------------------------- //second guy at back wall CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task TASK_PAUSE -1 500 IF IS_CHAR_IN_CAR h9_gang[2] h9_getaway_car TASK_LEAVE_CAR -1 h9_getaway_car ENDIF PERFORM_SEQUENCE_TASK -1 h9_goto_first_room TASK_PAUSE -1 1000 PERFORM_SEQUENCE_TASK -1 h9_enter_crouch TASK_FOLLOW_PATH_NODES_TO_COORD -1 2222.9434 1620.6359 998.9709 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE PERFORM_SEQUENCE_TASK -1 h9_kill_seconds CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS h9_gang[2] PERFORM_SEQUENCE_TASK h9_gang[2] h9_sequence_task // -------------------------------------------------------------------------- //two guys sit down around corner CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task TASK_PAUSE -1 1500 IF IS_CHAR_IN_CAR h9_gang[3] h9_getaway_car TASK_LEAVE_CAR -1 h9_getaway_car ENDIF PERFORM_SEQUENCE_TASK -1 h9_goto_first_room TASK_PAUSE -1 3000 PERFORM_SEQUENCE_TASK -1 h9_enter_crouch TASK_FOLLOW_PATH_NODES_TO_COORD -1 2223.1331 1610.9663 998.9728 PEDMOVE_WALK -1 TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS h9_gang[3] PERFORM_SEQUENCE_TASK h9_gang[3] h9_sequence_task // -------------------------------------------------------------------------- //two guys sit down around corner CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task TASK_PAUSE -1 2000 IF IS_CHAR_IN_CAR h9_gang[0] h9_getaway_car TASK_LEAVE_CAR -1 h9_getaway_car ENDIF PERFORM_SEQUENCE_TASK -1 h9_goto_first_room TASK_PAUSE -1 2500 PERFORM_SEQUENCE_TASK -1 h9_enter_crouch TASK_FOLLOW_PATH_NODES_TO_COORD -1 2223.1331 1610.9663 998.9728 PEDMOVE_WALK -1 TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS h9_gang[0] PERFORM_SEQUENCE_TASK h9_gang[0] h9_sequence_task CLEAR_SEQUENCE_TASK h9_kill_seconds CLEAR_SEQUENCE_TASK h9_sequence_task CLEAR_SEQUENCE_TASK h9_goto_first_room CLEAR_SEQUENCE_TASK h9_enter_crouch // -------------------------------------------------------------------------- ENDIF ENDIF REPEAT 4 v IF NOT IS_CHAR_DEAD h9_gang[v] AND NOT IS_CAR_DEAD h9_getaway_car ADD_BLIP_FOR_CHAR h9_gang[v] h9_gang_blip[v] SET_BLIP_ENTRY_EXIT h9_gang_blip[v] 2196.6353 1676.8411 10.0 SET_BLIP_AS_FRIENDLY h9_gang_blip[v] TRUE ENDIF ENDREPEAT h9_mission_status = 7 ELSE PRINT_NOW ( HM9_14 ) 5000 1 // ~s~Get into the forklift. ENDIF ENDIF ENDIF // ************************************************************************************************* // * * // * TELL TEAM TO GO TO SAFE * // * * // ************************************************************************************************* IF h9_mission_status = 7 REQUEST_ANIMATION BOMBER WHILE NOT HAS_ANIMATION_LOADED BOMBER WAIT 0 ENDWHILE h9_mission_status = 8 TIMERA = 0 ENDIF // ************************************************************************************************* // * * // * GUYS TALKING ON WAY TO SAFE * // * * // ************************************************************************************************* // tag1 IF h9_mission_status = 8 REPEAT 3 v IF IS_CHAR_DEAD h9_first_room[v] AND NOT h9_first_inv[v] = 0 IF DOES_BLIP_EXIST h9_first_inv[v] REMOVE_BLIP h9_first_inv[v] h9_first_inv[v] = 0 MARK_CHAR_AS_NO_LONGER_NEEDED h9_first_room[v] ENDIF ENDIF ENDREPEAT REPEAT 11 v IF IS_CHAR_DEAD h9_second_room[v] AND NOT h9_seconds_inv[v] = 0 IF DOES_BLIP_EXIST h9_seconds_inv[v] REMOVE_BLIP h9_seconds_inv[v] h9_seconds_inv[v] = 0 MARK_CHAR_AS_NO_LONGER_NEEDED h9_second_room[v] ENDIF ENDIF ENDREPEAT IF IS_CHAR_DEAD h9_first_room[0] AND IS_CHAR_DEAD h9_first_room[1] AND IS_CHAR_DEAD h9_first_room[2] AND h9_first_node = 0 IF NOT IS_CHAR_DEAD h9_gang[0] AND NOT IS_CHAR_DEAD h9_gang[1] AND NOT IS_CHAR_DEAD h9_gang[2] AND NOT IS_CHAR_DEAD h9_gang[3] // --------------------------------------------------------------------------------------------------- OPEN_SEQUENCE_TASK h9_kill_seconds TASK_PAUSE -1 1 IF NOT IS_CHAR_DEAD h9_second_room[0] TASK_KILL_CHAR_ON_FOOT -1 h9_second_room[0] ENDIF IF NOT IS_CHAR_DEAD h9_second_room[2] TASK_KILL_CHAR_ON_FOOT -1 h9_second_room[2] ENDIF IF NOT IS_CHAR_DEAD h9_second_room[1] TASK_KILL_CHAR_ON_FOOT -1 h9_second_room[1] ENDIF IF NOT IS_CHAR_DEAD h9_second_room[6] TASK_KILL_CHAR_ON_FOOT -1 h9_second_room[6] ENDIF IF NOT IS_CHAR_DEAD h9_second_room[7] TASK_KILL_CHAR_ON_FOOT -1 h9_second_room[7] ENDIF CLOSE_SEQUENCE_TASK h9_kill_seconds // --------------------------------------------------------------------------------------------------- OPEN_SEQUENCE_TASK h9_goto_first_room FLUSH_ROUTE TASK_TOGGLE_DUCK -1 TRUE EXTEND_ROUTE 2217.4683 1619.0314 998.9766 EXTEND_ROUTE 2209.8867 1618.9891 998.9766 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_TOGGLE_DUCK -1 TRUE EXTEND_ROUTE 2203.7397 1619.1674 998.9827 EXTEND_ROUTE 2199.1189 1618.8575 998.9827 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE CLOSE_SEQUENCE_TASK h9_goto_first_room // --------------------------------------------------------------------------------------------------- //Buddy crouched at the boxes above OPEN_SEQUENCE_TASK h9_sequence_task PERFORM_SEQUENCE_TASK -1 h9_goto_first_room TASK_FOLLOW_PATH_NODES_TO_COORD -1 2196.1443 1618.7194 998.9766 PEDMOVE_RUN -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2192.7258 1618.6276 998.9766 PEDMOVE_RUN -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2190.5312 1617.3726 998.9766 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE PERFORM_SEQUENCE_TASK -1 h9_kill_seconds CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS h9_gang[1] PERFORM_SEQUENCE_TASK h9_gang[1] h9_sequence_task // --------------------------------------------------------------------------------------------------- CLEAR_SEQUENCE_TASK h9_kill_seconds OPEN_SEQUENCE_TASK h9_kill_seconds TASK_PAUSE -1 1 IF NOT IS_CHAR_DEAD h9_second_room[3] TASK_KILL_CHAR_ON_FOOT -1 h9_second_room[3] ENDIF IF NOT IS_CHAR_DEAD h9_second_room[4] TASK_KILL_CHAR_ON_FOOT -1 h9_second_room[4] ENDIF IF NOT IS_CHAR_DEAD h9_second_room[5] TASK_KILL_CHAR_ON_FOOT -1 h9_second_room[5] ENDIF IF NOT IS_CHAR_DEAD h9_second_room[6] TASK_KILL_CHAR_ON_FOOT -1 h9_second_room[6] ENDIF IF NOT IS_CHAR_DEAD h9_second_room[7] TASK_KILL_CHAR_ON_FOOT -1 h9_second_room[7] ENDIF CLOSE_SEQUENCE_TASK h9_kill_seconds //Buddy standing has dual pistols CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task PERFORM_SEQUENCE_TASK -1 h9_goto_first_room TASK_FOLLOW_PATH_NODES_TO_COORD -1 2196.1443 1618.7194 998.9766 PEDMOVE_RUN -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2191.2144 1620.2288 998.9802 PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 FALSE TASK_STAY_IN_SAME_PLACE -1 TRUE PERFORM_SEQUENCE_TASK -1 h9_kill_seconds CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS h9_gang[2] PERFORM_SEQUENCE_TASK h9_gang[2] h9_sequence_task //two guys sit down around corner CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task TASK_PAUSE -1 500 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2223.3911 1619.1503 998.9672 PEDMOVE_RUN -1 PERFORM_SEQUENCE_TASK -1 h9_goto_first_room TASK_FOLLOW_PATH_NODES_TO_COORD -1 2198.9421 1617.9740 998.9766 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS h9_gang[3] PERFORM_SEQUENCE_TASK h9_gang[3] h9_sequence_task //two guys sit down around corner CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task TASK_PAUSE -1 500 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2223.3911 1619.1503 998.9672 PEDMOVE_RUN -1 PERFORM_SEQUENCE_TASK -1 h9_goto_first_room TASK_FOLLOW_PATH_NODES_TO_COORD -1 2197.8162 1617.8267 998.9766 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS h9_gang[0] PERFORM_SEQUENCE_TASK h9_gang[0] h9_sequence_task CLEAR_SEQUENCE_TASK h9_kill_seconds CLEAR_SEQUENCE_TASK h9_sequence_task CLEAR_SEQUENCE_TASK h9_goto_first_room ENDIF h9_first_node = 1 ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2158.4385 1618.7395 998.9650 4.0 4.0 4.0 FALSE AND h9_guy_is_peeking = 0 IF NOT IS_CHAR_DEAD h9_second_room[9] CLEAR_CHAR_TASKS h9_second_room[9] PERFORM_SEQUENCE_TASK h9_second_room[9] h9_peekright ENDIF h9_guy_is_peeking = 1 ENDIF //tag2 IF IS_CHAR_DEAD h9_second_room[0] AND IS_CHAR_DEAD h9_second_room[1] AND IS_CHAR_DEAD h9_second_room[2] AND IS_CHAR_DEAD h9_second_room[3] AND h9_second_node = 0 IF IS_CHAR_DEAD h9_second_room[4] AND IS_CHAR_DEAD h9_second_room[5] AND h9_first_node = 1 IF NOT IS_CHAR_DEAD h9_gang[0] AND NOT IS_CHAR_DEAD h9_gang[1] AND NOT IS_CHAR_DEAD h9_gang[2] AND NOT IS_CHAR_DEAD h9_gang[3] OPEN_SEQUENCE_TASK h9_kill_seconds TASK_PAUSE -1 1 IF NOT IS_CHAR_DEAD h9_second_room[8] TASK_KILL_CHAR_ON_FOOT -1 h9_second_room[8] ENDIF IF NOT IS_CHAR_DEAD h9_second_room[6] TASK_KILL_CHAR_ON_FOOT -1 h9_second_room[6] ENDIF IF NOT IS_CHAR_DEAD h9_second_room[7] TASK_KILL_CHAR_ON_FOOT -1 h9_second_room[7] ENDIF CLOSE_SEQUENCE_TASK h9_kill_seconds //Buddy crouched at the boxes above OPEN_SEQUENCE_TASK h9_sequence_task FLUSH_ROUTE TASK_TOGGLE_DUCK -1 TRUE EXTEND_ROUTE 2188.9575 1615.0433 998.9766 EXTEND_ROUTE 2184.9683 1614.8361 998.9766 EXTEND_ROUTE 2181.0605 1612.7831 998.9766 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_STAY_IN_SAME_PLACE -1 TRUE PERFORM_SEQUENCE_TASK -1 h9_kill_seconds CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS h9_gang[1] PERFORM_SEQUENCE_TASK h9_gang[1] h9_sequence_task //Buddy standing has dual pistols CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task FLUSH_ROUTE TASK_TOGGLE_DUCK -1 TRUE EXTEND_ROUTE 2187.5317 1623.4857 998.9746 EXTEND_ROUTE 2182.6426 1624.1395 998.9734 EXTEND_ROUTE 2180.7778 1624.2372 998.9733 EXTEND_ROUTE 2178.4937 1623.0142 998.9754 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_STAY_IN_SAME_PLACE -1 TRUE PERFORM_SEQUENCE_TASK -1 h9_kill_seconds CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS h9_gang[2] PERFORM_SEQUENCE_TASK h9_gang[2] h9_sequence_task //two guys sit down around corner CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task FLUSH_ROUTE TASK_TOGGLE_DUCK -1 TRUE EXTEND_ROUTE 2195.9978 1618.9650 998.9766 EXTEND_ROUTE 2190.1567 1620.4567 998.9797 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS h9_gang[3] PERFORM_SEQUENCE_TASK h9_gang[3] h9_sequence_task //two guys sit down around corner CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task FLUSH_ROUTE TASK_TOGGLE_DUCK -1 TRUE EXTEND_ROUTE 2195.9978 1618.9650 998.9766 EXTEND_ROUTE 2190.4348 1616.8110 998.9766 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS h9_gang[0] PERFORM_SEQUENCE_TASK h9_gang[0] h9_sequence_task CLEAR_SEQUENCE_TASK h9_sequence_task CLEAR_SEQUENCE_TASK h9_kill_seconds h9_second_node = 1 ENDIF ENDIF ENDIF //tag3 IF IS_CHAR_DEAD h9_second_room[6] AND IS_CHAR_DEAD h9_second_room[7] AND IS_CHAR_DEAD h9_second_room[8] AND h9_second_node = 1 IF NOT IS_CHAR_DEAD h9_gang[0] AND NOT IS_CHAR_DEAD h9_gang[1] AND NOT IS_CHAR_DEAD h9_gang[2] AND NOT IS_CHAR_DEAD h9_gang[3] OPEN_SEQUENCE_TASK h9_kill_seconds TASK_PAUSE -1 1 IF NOT IS_CHAR_DEAD h9_second_room[10] TASK_KILL_CHAR_ON_FOOT -1 h9_second_room[10] ENDIF IF NOT IS_CHAR_DEAD h9_second_room[9] TASK_KILL_CHAR_ON_FOOT -1 h9_second_room[9] ENDIF CLOSE_SEQUENCE_TASK h9_kill_seconds //Buddy crouched at the boxes above OPEN_SEQUENCE_TASK h9_sequence_task FLUSH_ROUTE TASK_TOGGLE_DUCK -1 TRUE EXTEND_ROUTE 2177.6843 1614.6310 998.9766 EXTEND_ROUTE 2173.2959 1618.3744 998.9766 EXTEND_ROUTE 2169.0750 1618.5891 998.9766 EXTEND_ROUTE 2165.5625 1618.5685 998.9752 EXTEND_ROUTE 2159.5325 1617.0564 998.9662 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_STAY_IN_SAME_PLACE -1 TRUE PERFORM_SEQUENCE_TASK -1 h9_kill_seconds CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS h9_gang[1] PERFORM_SEQUENCE_TASK h9_gang[1] h9_sequence_task //Buddy standing has dual pistols CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task FLUSH_ROUTE TASK_TOGGLE_DUCK -1 TRUE EXTEND_ROUTE 2174.7092 1621.0681 998.978 EXTEND_ROUTE 2169.1543 1618.6456 998.9766 EXTEND_ROUTE 2161.4009 1619.6282 998.9706 EXTEND_ROUTE 2155.9819 1619.0601 998.9666 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_ACHIEVE_HEADING -1 180.0000 TASK_STAY_IN_SAME_PLACE -1 TRUE PERFORM_SEQUENCE_TASK -1 h9_kill_seconds CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS h9_gang[2] PERFORM_SEQUENCE_TASK h9_gang[2] h9_sequence_task //two guys sit down around corner CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task FLUSH_ROUTE TASK_TOGGLE_DUCK -1 TRUE EXTEND_ROUTE 2190.0032 1622.4248 998.9764 EXTEND_ROUTE 2186.1348 1623.3064 998.9749 EXTEND_ROUTE 2182.4402 1624.3328 998.9731 EXTEND_ROUTE 2178.6387 1623.8950 998.9739 EXTEND_ROUTE 2174.7563 1622.6923 998.9760 EXTEND_ROUTE 2169.4045 1620.6099 998.9795 TASK_ACHIEVE_HEADING -1 172.0000 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS h9_gang[3] PERFORM_SEQUENCE_TASK h9_gang[3] h9_sequence_task //two guys sit down around corner CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task FLUSH_ROUTE TASK_TOGGLE_DUCK -1 TRUE EXTEND_ROUTE 2188.5374 1615.5266 998.9766 EXTEND_ROUTE 2184.4114 1614.4672 998.9766 EXTEND_ROUTE 2180.2236 1614.0902 998.9766 EXTEND_ROUTE 2175.8552 1615.6554 998.9766 EXTEND_ROUTE 2169.4797 1617.1849 998.9766 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS h9_gang[0] PERFORM_SEQUENCE_TASK h9_gang[0] h9_sequence_task CLEAR_SEQUENCE_TASK h9_sequence_task CLEAR_SEQUENCE_TASK h9_kill_seconds h9_second_node = 2 ENDIF ENDIF //tag4 IF IS_CHAR_DEAD h9_second_room[9] AND IS_CHAR_DEAD h9_second_room[10] AND h9_second_node = 2 OPEN_SEQUENCE_TASK h9_sequence_task TASK_TOGGLE_DUCK -1 FALSE TASK_FOLLOW_PATH_NODES_TO_COORD -1 2157.8721 1603.2488 998.9730 PEDMOVE_RUN -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2144.3005 1610.4442 992.6882 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK h9_sequence_task REPEAT 4 v IF NOT IS_CHAR_DEAD h9_gang[v] CLEAR_CHAR_TASKS h9_gang[v] PERFORM_SEQUENCE_TASK h9_gang[v] h9_sequence_task ENDIF ENDREPEAT CLEAR_SEQUENCE_TASK h9_sequence_task LVAR_INT h9_safe_dialogue h9_safe_dialogue = 1 TIMERB = 0 h9_second_node = 3 ENDIF // **************************************************************************************************** // * * // * First super node * // * * // **************************************************************************************************** //run0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2195.0410 1618.9049 998.9766 2.0 2.0 2.0 FALSE IF NOT IS_CAR_DEAD h9_forklift AND NOT IS_CHAR_DEAD scplayer IF NOT IS_CHAR_IN_CAR scplayer h9_forklift DELETE_CAR h9_forklift MARK_MODEL_AS_NO_LONGER_NEEDED FORKLIFT ENDIF ENDIF IF h9_guys_run_in = 0 IF NOT IS_CHAR_DEAD h9_second_room[6] OPEN_SEQUENCE_TASK h9_sequence_task TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_PAUSE -1 3000 FLUSH_ROUTE EXTEND_ROUTE 2176.6279 1610.4725 998.9766 EXTEND_ROUTE 2173.5601 1623.9150 998.9739 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_ACHIEVE_HEADING -1 270.0000 CLOSE_SEQUENCE_TASK h9_sequence_task PERFORM_SEQUENCE_TASK h9_second_room[6] h9_sequence_task CLEAR_SEQUENCE_TASK h9_sequence_task ENDIF IF NOT IS_CHAR_DEAD h9_second_room[7] CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_PAUSE -1 3000 FLUSH_ROUTE EXTEND_ROUTE 2176.6279 1610.4725 998.9766 EXTEND_ROUTE 2175.9719 1613.8531 998.9766 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_ACHIEVE_HEADING -1 270.0000 CLOSE_SEQUENCE_TASK h9_sequence_task PERFORM_SEQUENCE_TASK h9_second_room[7] h9_sequence_task CLEAR_SEQUENCE_TASK h9_sequence_task ENDIF h9_guys_run_in = 1 ENDIF ENDIF IF h9_play_safe_dialogue = 0 IF h9_playing = 2 AND h9_msg_displayed = 0 PRINT_WITH_NUMBER_NOW ( HM9_1C ) 7 5000 1 // ~s~You have ~1~ minutes to get the money and back! h9_msg_displayed = 1 TIMERB = 0 CHECKPOINT_SAVE 99 ENDIF IF TIMERB > 5000 AND h9_msg_displayed = 1 PRINT_NOW ( HM9_21 ) 6000 1 // ~s~Clear the corridors of ~r~security ~s~so the team can reach the safe h9_msg_displayed = 2 TIMERB = 0 ENDIF IF TIMERB > 6000 AND h9_msg_displayed = 2 PRINT_NOW ( HM9_1G ) 7000 1 // ~s~Remember to stay close to the team h9_msg_displayed = 3 ENDIF ENDIF IF NOT h9_safe_dialogue = 0 IF h9_safe_dialogue = 1 REPEAT 3 v DELETE_CHAR h9_first_room[v] ENDREPEAT PRINT_NOW ( HM9_1E ) 5000 1 // ~s~Follow the ~b~team ~s~down to the safe h9_safe_dialogue = 2 TIMERA = 0 ENDIF IF TIMERA > 4000 AND h9_safe_dialogue = 2 $h9_print = &HE8_LA // Not far now, keep alert. h9_audio = SOUND_HE8_LA GOSUB h9_load_sample h9_safe_dialogue = 3 ENDIF IF h9_playing = 2 AND h9_safe_dialogue = 3 $h9_print = &HE8_LB // Hey, I was just about to say that! h9_audio = SOUND_HE8_LB GOSUB h9_load_sample h9_safe_dialogue = 4 ENDIF IF h9_playing = 2 AND h9_safe_dialogue = 4 $h9_print = &HE8_LC // Sorry boss! h9_audio = SOUND_HE8_LC GOSUB h9_load_sample h9_safe_dialogue = 5 ENDIF IF h9_playing = 2 AND h9_safe_dialogue = 5 $h9_print = &HE8_LD // Not far now, everybody! h9_audio = SOUND_HE8_LD GOSUB h9_load_sample h9_safe_dialogue = 6 ENDIF IF h9_playing = 2 AND h9_safe_dialogue = 6 $h9_print = &HE8_LE // Stay alert! h9_audio = SOUND_HE8_LE GOSUB h9_load_sample h9_safe_dialogue = 7 ENDIF IF h9_playing = 2 AND h9_safe_dialogue = 7 $h9_print = &HE8_LF // Oh yeah, stay alert! h9_audio = SOUND_HE8_LF GOSUB h9_load_sample h9_safe_dialogue = 0 ENDIF ENDIF h9_guys_at_safe = 0 // **************************************************************************************************** // * * // * Dialog at safe * // * * // **************************************************************************************************** IF h9_play_safe_dialogue > 1 AND h9_player_in_safe = 1 IF h9_playing = 2 AND h9_msg_displayed = 0 REPEAT 11 v DELETE_CHAR h9_second_room[v] ENDREPEAT ADD_BLIP_FOR_COORD 2144.1013 1623.4532 993.5677 h9_safe_blip SET_BLIP_ENTRY_EXIT h9_safe_blip 2196.6353 1676.8411 10.0 CHANGE_BLIP_DISPLAY h9_safe_blip NEITHER $h9_print = &HE8_MA // Ok, we'll set the charges while you watch the door! h9_audio = SOUND_HE8_MA GOSUB h9_load_sample h9_msg_displayed = 1 ENDIF IF h9_playing = 2 AND h9_msg_displayed = 1 $h9_print = &HE8_MB // Ok, boss! h9_audio = SOUND_HE8_MB GOSUB h9_load_sample h9_msg_displayed = 2 ENDIF IF h9_playing = 2 AND h9_msg_displayed = 2 $h9_print = &HE8_MC // I’m on it! h9_audio = SOUND_HE8_MC GOSUB h9_load_sample h9_msg_displayed = 3 TIMERA = 0 ENDIF // **************************************************************************************************** // * * // * Dialog for blowing safe * // * * // **************************************************************************************************** IF h9_playing = 2 AND h9_msg_displayed = 3 $h9_print = &HE8_NA // Hurry it up, you guys, they know something’s wrong! h9_audio = SOUND_HE8_NA GOSUB h9_load_sample h9_msg_displayed = 4 ENDIF IF h9_playing = 2 AND h9_msg_displayed = 4 $h9_print = &HE8_NB // Someone else is in the system! h9_audio = SOUND_HE8_NB GOSUB h9_load_sample h9_msg_displayed = 5 ENDIF IF h9_playing = 2 AND h9_msg_displayed = 5 $h9_print = &HE8_NC // What’s the problem? h9_audio = SOUND_HE8_NC GOSUB h9_load_sample h9_msg_displayed = 6 TIMERA = 0 ENDIF IF h9_playing = 2 AND h9_msg_displayed = 6 $h9_print = &HE8_ND // Someboy’s trying to bring the emergency generators back up!! h9_audio = SOUND_HE8_ND GOSUB h9_load_sample h9_msg_displayed = 7 ENDIF IF h9_playing = 2 AND h9_msg_displayed = 7 $h9_print = &HE8_NE // I’ll head back up to the generator room and shut them down for good! h9_audio = SOUND_HE8_NE GOSUB h9_load_sample h9_msg_displayed = 8 TIMERA = 0 ENDIF IF h9_playing = 2 AND h9_msg_displayed = 8 IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_REMOTE_SATCHEL_CHARGE REQUEST_MODEL BMYBOUN WHILE NOT HAS_MODEL_LOADED BMYBOUN WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_MISSION1 WMYBOUN 2146.6653 1611.4515 999.9764 h9_generator_mafia[0] SET_CHAR_AREA_VISIBLE h9_generator_mafia[0] 1 SET_CHAR_HEADING h9_generator_mafia[0] 189.8734 SET_CHAR_DECISION_MAKER h9_generator_mafia[0] h9_decision GIVE_WEAPON_TO_CHAR h9_generator_mafia[0] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON h9_generator_mafia[0] WEAPONTYPE_MP5 TASK_STAY_IN_SAME_PLACE h9_generator_mafia[0] TRUE SET_CHAR_MONEY h9_generator_mafia[0] 0 CREATE_CHAR PEDTYPE_MISSION1 BMYBOUN 2147.9817 1605.2539 1000.7520 h9_generator_mafia[1] SET_CHAR_AREA_VISIBLE h9_generator_mafia[1] 1 SET_CHAR_HEADING h9_generator_mafia[1] 191.7168 GIVE_WEAPON_TO_CHAR h9_generator_mafia[1] WEAPONTYPE_MP5 30000 SET_CHAR_DECISION_MAKER h9_generator_mafia[1] h9_decision SET_CURRENT_CHAR_WEAPON h9_generator_mafia[1] WEAPONTYPE_MP5 TASK_STAY_IN_SAME_PLACE h9_generator_mafia[1] TRUE SET_CHAR_MONEY h9_generator_mafia[1] 0 IF DOES_BLIP_EXIST h9_safe_blip REMOVE_BLIP h9_safe_blip ENDIF REPEAT 4 v IF NOT IS_CHAR_DEAD h9_gang[v] SET_CHAR_PROOFS h9_gang[v] FALSE TRUE TRUE TRUE FALSE ENDIF ENDREPEAT PRINT_NOW ( HM9_22 ) 4000 1 //~s~Destroy the back up ~y~Generators~s~! h9_mission_status = 13 ADD_BLIP_FOR_OBJECT h9_generator_A h9_gen_blip_a SET_BLIP_ENTRY_EXIT h9_gen_blip_a 2196.6353 1676.8411 10.0 ADD_BLIP_FOR_OBJECT h9_generator_B h9_gen_blip_b SET_BLIP_ENTRY_EXIT h9_gen_blip_b 2196.6353 1676.8411 10.0 ELSE PRINT_NOW ( HM9_PK ) 4000 1 //~s~Pick up the ~g~satchel charge~s~! ADD_BLIP_FOR_PICKUP h9_satchel_bomb h9_satchel_blip SET_BLIP_ENTRY_EXIT h9_satchel_blip 2196.6353 1676.8411 10.0 ENDIF h9_msg_displayed = 101 TIMERA = 0 ENDIF ENDIF IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_REMOTE_SATCHEL_CHARGE AND h9_msg_displayed = 101 AND NOT h9_mission_status = 13 REQUEST_MODEL BMYBOUN WHILE NOT HAS_MODEL_LOADED BMYBOUN WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_MISSION1 WMYBOUN 2146.6653 1611.4515 999.9764 h9_generator_mafia[0] SET_CHAR_AREA_VISIBLE h9_generator_mafia[0] 1 SET_CHAR_HEADING h9_generator_mafia[0] 189.8734 SET_CHAR_DECISION_MAKER h9_generator_mafia[0] h9_decision GIVE_WEAPON_TO_CHAR h9_generator_mafia[0] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON h9_generator_mafia[0] WEAPONTYPE_MP5 TASK_STAY_IN_SAME_PLACE h9_generator_mafia[0] TRUE CREATE_CHAR PEDTYPE_MISSION1 BMYBOUN 2147.9817 1605.2539 1000.7520 h9_generator_mafia[1] SET_CHAR_AREA_VISIBLE h9_generator_mafia[1] 1 SET_CHAR_HEADING h9_generator_mafia[1] 191.7168 GIVE_WEAPON_TO_CHAR h9_generator_mafia[1] WEAPONTYPE_MP5 30000 SET_CHAR_DECISION_MAKER h9_generator_mafia[1] h9_decision SET_CURRENT_CHAR_WEAPON h9_generator_mafia[1] WEAPONTYPE_MP5 TASK_STAY_IN_SAME_PLACE h9_generator_mafia[1] TRUE IF DOES_BLIP_EXIST h9_safe_blip REMOVE_BLIP h9_safe_blip ENDIF REPEAT 4 v IF NOT IS_CHAR_DEAD h9_gang[v] SET_CHAR_PROOFS h9_gang[v] FALSE TRUE TRUE TRUE FALSE ENDIF ENDREPEAT IF DOES_BLIP_EXIST h9_satchel_blip REMOVE_BLIP h9_satchel_blip ENDIF PRINT_NOW ( HM9_22 ) 4000 1 //~s~Destroy the back up ~y~Generators~s~! h9_mission_status = 13 ADD_BLIP_FOR_OBJECT h9_generator_A h9_gen_blip_a SET_BLIP_ENTRY_EXIT h9_gen_blip_a 2196.6353 1676.8411 10.0 ADD_BLIP_FOR_OBJECT h9_generator_B h9_gen_blip_b SET_BLIP_ENTRY_EXIT h9_gen_blip_b 2196.6353 1676.8411 10.0 ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2144.3933 1616.6534 992.5681 20.0 20.0 2.0 FALSE IF NOT h9_msg_displayed = 0 AND NOT h9_msg_displayed = 9 AND h9_play_safe_dialogue > 1 IF DOES_BLIP_EXIST h9_safe_blip CHANGE_BLIP_DISPLAY h9_safe_blip NEITHER ENDIF ENDIF h9_player_in_safe = 1 ELSE IF NOT h9_msg_displayed = 0 AND NOT h9_msg_displayed = 9 AND h9_play_safe_dialogue > 1 IF DOES_BLIP_EXIST h9_safe_blip CHANGE_BLIP_DISPLAY h9_safe_blip BOTH ENDIF PRINT_NOW ( HM9_56 ) 1000 1 // ~s~The team needs you at the ~y~Safe~s~. ENDIF h9_player_in_safe = 0 ENDIF REPEAT 4 v IF NOT IS_CHAR_DEAD h9_gang[v] IF LOCATE_CHAR_ANY_MEANS_3D h9_gang[v] 2143.6934 1610.6278 992.6882 4.0 4.0 2.0 FALSE AND h9_in_cover[v] = 0 IF v = 0 AND NOT IS_CHAR_DEAD h9_gang[0] OPEN_SEQUENCE_TASK h9_sequence_task FLUSH_ROUTE EXTEND_ROUTE 2144.2024 1618.6958 992.6882 EXTEND_ROUTE 2143.0361 1626.4974 992.5681 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_TURN_CHAR_TO_FACE_COORD -1 2144.2314 1629.5068 992.5703 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_PLAY_ANIM -1 BOM_plant_loop BOMBER 1.0 TRUE FALSE FALSE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE SET_SEQUENCE_TO_REPEAT h9_sequence_task 1 CLOSE_SEQUENCE_TASK h9_sequence_task PERFORM_SEQUENCE_TASK h9_gang[0] h9_sequence_task ENDIF IF v = 1 AND NOT IS_CHAR_DEAD h9_gang[1] OPEN_SEQUENCE_TASK h9_sequence_task FLUSH_ROUTE EXTEND_ROUTE 2144.2024 1618.6958 992.6882 EXTEND_ROUTE 2145.6960 1626.4962 992.5681 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_TURN_CHAR_TO_FACE_COORD -1 2144.2314 1629.5068 992.5703 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_PLAY_ANIM -1 BOM_plant_loop BOMBER 1.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT h9_sequence_task 1 CLOSE_SEQUENCE_TASK h9_sequence_task PERFORM_SEQUENCE_TASK h9_gang[1] h9_sequence_task ENDIF IF v = 2 AND NOT IS_CHAR_DEAD h9_gang[2] OPEN_SEQUENCE_TASK h9_sequence_task FLUSH_ROUTE EXTEND_ROUTE 2144.2024 1618.6958 992.6882 EXTEND_ROUTE 2147.7441 1620.4473 992.6882 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_TURN_CHAR_TO_FACE_COORD -1 2144.2314 1629.5068 992.5703 CLOSE_SEQUENCE_TASK h9_sequence_task PERFORM_SEQUENCE_TASK h9_gang[2] h9_sequence_task ENDIF IF v = 3 AND NOT IS_CHAR_DEAD h9_gang[3] OPEN_SEQUENCE_TASK h9_sequence_task FLUSH_ROUTE EXTEND_ROUTE 2144.2024 1618.6958 992.6882 EXTEND_ROUTE 2136.2537 1621.6277 992.6882 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_TURN_CHAR_TO_FACE_COORD -1 2144.2314 1629.5068 992.5703 CLOSE_SEQUENCE_TASK h9_sequence_task PERFORM_SEQUENCE_TASK h9_gang[3] h9_sequence_task ENDIF CLEAR_SEQUENCE_TASK h9_sequence_task SET_CHAR_ONLY_DAMAGED_BY_PLAYER h9_gang[v] FALSE CHANGE_BLIP_DISPLAY h9_gang_blip[v] NEITHER h9_in_cover[v] = 1 IF h9_play_safe_dialogue = 0 h9_msg_displayed = 0 ENDIF h9_play_safe_dialogue ++ ENDIF ENDIF ENDREPEAT ENDIF // ************************************************************************************************* // * * // * BLOWING THE GENERATORS * // * * // ************************************************************************************************* IF h9_mission_status = 13 AND TIMERA > 5000 IF h9_blown = 0 IF h9_playing = 2 AND h9_msg_displayed = 0 $h9_print = &HE8_OA // Berkley! It’s him, I know it! h9_audio = SOUND_HE8_OA GOSUB h9_load_sample h9_msg_displayed = 1 ENDIF IF h9_playing = 2 AND h9_msg_displayed = 1 $h9_print = &HE8_OB // What? h9_audio = SOUND_HE8_OB GOSUB h9_load_sample h9_msg_displayed = 2 ENDIF IF h9_playing = 2 AND h9_msg_displayed = 2 $h9_print = &HE8_OC // I know the tactics of my arch rival! h9_audio = SOUND_HE8_OC GOSUB h9_load_sample h9_msg_displayed = 3 ENDIF IF h9_playing = 2 AND h9_msg_displayed = 3 $h9_print = &HE8_OD // BERKLEY YOU BASTARD! h9_audio = SOUND_HE8_OD GOSUB h9_load_sample h9_msg_displayed = 4 ENDIF IF h9_playing = 2 AND h9_msg_displayed = 4 $h9_print = &HE8_OE // Quit shouting in my ear! h9_audio = SOUND_HE8_OE GOSUB h9_load_sample h9_msg_displayed = 5 ENDIF IF h9_playing = 2 AND h9_msg_displayed = 5 $h9_print = &HE8_OF // Sorry. h9_audio = SOUND_HE8_OF GOSUB h9_load_sample h9_msg_displayed = 8 ENDIF IF h9_playing = 2 AND h9_msg_displayed = 8 $h9_print = &HE8_OJ // Whatever. Just deal with the fool! h9_audio = SOUND_HE8_OJ GOSUB h9_load_sample h9_msg_displayed = 9 ENDIF ENDIF IF NOT IS_CHAR_DEAD scplayer GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_REMOTE_SATCHEL_CHARGE h9_grenade_count ENDIF IF NOT IS_ANY_PICKUP_AT_COORDS 2146.4871 1622.8053 993.0000 IF h9_grenade_count <= 0 AND h9_blown = 0 IF NOT DOES_PICKUP_EXIST h9_satchel_bomb CREATE_PICKUP_WITH_AMMO satchel PICKUP_ONCE 5 2146.4871 1622.8053 993.0000 h9_satchel_bomb ENDIF ENDIF ENDIF IF IS_EXPLOSION_IN_AREA EXPLOSION_GRENADE 2150.9658 1618.8569 999.9688 2142.4719 1608.0663 1003.0000 OR IS_EXPLOSION_IN_AREA EXPLOSION_MOLOTOV 2150.9658 1618.8569 999.9688 2142.4719 1608.0663 1003.0000 OR IS_EXPLOSION_IN_AREA EXPLOSION_ROCKET_WEAK 2150.9658 1618.8569 999.9688 2142.4719 1608.0663 1003.0000 OR IS_EXPLOSION_IN_AREA EXPLOSION_ROCKET 2150.9658 1618.8569 999.9688 2142.4719 1608.0663 1003.0000 IF h9_blown = 0 // Roller Door CREATE_OBJECT_NO_OFFSET warehouse_door2b 2195.7693 1585.1992 1002.0000 h9_stop_door SET_OBJECT_AREA_VISIBLE h9_stop_door 1 SET_OBJECT_HEADING h9_stop_door 180.0000 SET_OBJECT_COLLISION_DAMAGE_EFFECT h9_stop_door FALSE GOSUB h9_set_camera SET_OBJECT_COLLISION_DAMAGE_EFFECT h9_door_g TRUE IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2146.1462 1613.8185 999.9680 7.0 7.0 2.0 FALSE AND NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF IF DOES_BLIP_EXIST h9_gen_blip_a REMOVE_BLIP h9_gen_blip_a ENDIF IF DOES_BLIP_EXIST h9_gen_blip_b REMOVE_BLIP h9_gen_blip_b ENDIF SET_FIXED_CAMERA_POSITION 2141.3608 1619.8289 1000.6694 0.0 0.0 0.0 // Charges Ignited!!! POINT_CAMERA_AT_POINT 2141.9250 1619.0051 1000.7231 JUMP_CUT GOSUB explosion_proof DELETE_OBJECT h9_generator_A DELETE_OBJECT h9_generator_B MARK_MODEL_AS_NO_LONGER_NEEDED GENERATOR_BIG CREATE_OBJECT GENERATOR_BIG_d 2145.05 1613.49 999.9764 h9_generator_A SET_OBJECT_HEADING h9_generator_A 1.2043 CREATE_OBJECT GENERATOR_BIG_d 2148.8 1613.49 999.9764 h9_generator_B SET_OBJECT_HEADING h9_generator_B 354.0372 LVAR_INT h9_loop REPEAT 3 h9_loop ADD_EXPLOSION 2143.1069 1611.3320 1000.5000 EXPLOSION_SMALL CREATE_FX_SYSTEM EXPLOSION_SMALL 2143.1069 1611.3320 1000.5000 TRUE h9_explosion_fx[0] PLAY_FX_SYSTEM h9_explosion_fx[0] WAIT 150 ADD_EXPLOSION 2149.5103 1614.5864 1000.5000 EXPLOSION_SMALL CREATE_FX_SYSTEM EXPLOSION_SMALL 2149.5103 1614.5864 1000.5000 TRUE h9_explosion_fx[1] PLAY_FX_SYSTEM h9_explosion_fx[1] WAIT 10 REPEAT 6 v STOP_FX_SYSTEM h9_explosion_fx[v] KILL_FX_SYSTEM h9_explosion_fx[v] ENDREPEAT ENDREPEAT WAIT 2000 REPEAT 4 v CHANGE_BLIP_DISPLAY h9_gang_blip[v] BOTH IF NOT IS_CHAR_DEAD h9_gang[v] TASK_STAY_IN_SAME_PLACE h9_gang[v] FALSE SET_CHAR_PROOFS h9_gang[v] FALSE FALSE FALSE TRUE FALSE ENDIF ENDREPEAT h9_msg_displayed = 6 GOSUB h9_restore_camera GOSUB not_explosion_proof TIMERA = 0 h9_blown = 1 CLEAR_HELP REPEAT 4 v ENDREPEAT IF IS_ANY_PICKUP_AT_COORDS 2146.4871 1622.8053 993.0000 REMOVE_PICKUP h9_satchel_bomb ENDIF PRINT_NOW ( HM9_40 ) 5000 1 // ~s~Head downstairs and check on the team! ENDIF ENDIF // ********************************************************************************************** // * * // * Dialog check on the team * // * * // ********************************************************************************************** IF h9_blown = 1 IF h9_playing = 2 AND h9_msg_displayed = 0 $h9_print = &HE8_OK // Ok, I’m heading back down to the vault! h9_audio = SOUND_HE8_OK GOSUB h9_load_sample h9_msg_displayed = 10 ENDIF ENDIF IF h9_sync = 0 AND h9_blown = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2143.9749 1624.4430 992.5681 20.0 20.0 2.0 FALSE try_again_here: h9_msg_displayed = 10 h9_sync = 1 REPEAT 4 v CHANGE_BLIP_DISPLAY h9_gang_blip[v] NEITHER ENDREPEAT GOSUB h9_set_camera IF NOT IS_CHAR_DEAD h9_gang[2] SET_CHAR_COORDINATES_DONT_WARP_GANG h9_gang[2] 2147.7441 1620.4473 992.6882 SET_CHAR_HEADING h9_gang[2] 346.8824 ENDIF IF NOT IS_CHAR_DEAD h9_gang[3] SET_CHAR_COORDINATES_DONT_WARP_GANG h9_gang[3] 2136.2537 1621.6277 992.6882 SET_CHAR_HEADING h9_gang[3] 358.8987 ENDIF SET_FIXED_CAMERA_POSITION 2140.4893 1617.6891 993.7817 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2140.8308 1618.6289 993.7844 JUMP_CUT WAIT 1000 PRINT_NOW ( HE8_QA ) 4000 1 // Everybody take cover! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_QA // Everybody take cover! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS // GOTO h9_blowing_door ENDIF ENDWHILE PRINT_NOW ( HE8_QC ) 4000 1 // Oh shit! Where do I go? Where do I go? CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_QC // Oh shit! Where do I go? Where do I go? WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 IF NOT IS_CHAR_DEAD h9_gang[0] TASK_PAUSE h9_gang[0] 1000 CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[0] FLUSH_ROUTE EXTEND_ROUTE 2135.4968 1625.5176 992.56812 TASK_TOGGLE_DUCK h9_gang[0] TRUE TASK_FOLLOW_POINT_ROUTE h9_gang[0] PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE ENDIF IF NOT IS_CHAR_DEAD h9_gang[1] CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[1] FLUSH_ROUTE EXTEND_ROUTE 2152.9541 1625.0764 992.5681 TASK_TOGGLE_DUCK h9_gang[1] TRUE TASK_FOLLOW_POINT_ROUTE h9_gang[1] PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE ENDIF TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS // GOTO h9_blowing_door ENDIF ENDWHILE PRINT_NOW ( HE8_QB ) 4000 1 // Fire in the hold! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_QB // Fire in the hold! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS // GOTO h9_blowing_door ENDIF ENDWHILE REPEAT 4 v IF NOT IS_CHAR_DEAD h9_gang[v] CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[v] TASK_TOGGLE_DUCK h9_gang[v] TRUE ENDIF CHANGE_BLIP_DISPLAY h9_gang_blip[v] BOTH ENDREPEAT LVAR_INT h9_door_explode[3] h9_cash_room_blip ADD_EXPLOSION 2144.5332 1626.7472 992.7070 EXPLOSION_SMALL CREATE_FX_SYSTEM EXPLOSION_SMALL 2144.5332 1626.7472 992.7070 TRUE h9_door_explode[0] PLAY_AND_KILL_FX_SYSTEM h9_door_explode[0] ADD_EXPLOSION 2144.5332 1626.7472 994.0000 EXPLOSION_SMALL WAIT 500 CREATE_FX_SYSTEM EXPLOSION_SMALL 2144.5332 1626.7472 994.0000 TRUE h9_door_explode[1] PLAY_AND_KILL_FX_SYSTEM h9_door_explode[1] ADD_EXPLOSION 2144.5332 1626.7472 996.0000 EXPLOSION_SMALL DELETE_OBJECT h9_door_g WAIT 500 CREATE_FX_SYSTEM EXPLOSION_SMALL 2144.5332 1626.7472 996.0000 TRUE h9_door_explode[2] PLAY_AND_KILL_FX_SYSTEM h9_door_explode[2] PRINT_NOW ( HE8_RA ) 4000 1 // Ok people, load up the cash! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_RA // Ok people, load up the cash! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS // GOTO h9_blowing_door ENDIF ENDWHILE IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2144.2659 1610.6492 992.5681 SET_CHAR_HEADING scplayer 359.3881 ENDIF GOSUB h9_restore_camera PRINT_NOW ( HM9_58 ) 7000 1 // ~s~Enter the ~y~Safe~s~. CREATE_OBJECT CJ_MONEY_BAG 2146.2703 1636.3137 992.5683 h9_bag[0] SET_OBJECT_AREA_VISIBLE h9_bag[0] 1 SET_OBJECT_HEADING h9_bag[0] 268.4277 SET_OBJECT_COLLISION h9_bag[0] FALSE CREATE_OBJECT CJ_MONEY_BAG 2146.1367 1632.4038 992.5683 h9_bag[1] SET_OBJECT_AREA_VISIBLE h9_bag[1] 1 SET_OBJECT_HEADING h9_bag[1] 89.5044 SET_OBJECT_COLLISION h9_bag[1] FALSE CREATE_OBJECT CJ_MONEY_BAG 2142.1482 1632.4264 992.5683 h9_bag[2] SET_OBJECT_AREA_VISIBLE h9_bag[2] 1 SET_OBJECT_HEADING h9_bag[2] 97.3067 SET_OBJECT_COLLISION h9_bag[2] FALSE CREATE_OBJECT CJ_MONEY_BAG 2142.0696 1636.1366 992.5683 h9_bag[3] SET_OBJECT_AREA_VISIBLE h9_bag[3] 1 SET_OBJECT_HEADING h9_bag[3] 51.5319 SET_OBJECT_COLLISION h9_bag[3] FALSE IF NOT IS_CHAR_DEAD h9_gang[0] AND NOT IS_CHAR_DEAD h9_gang[1] AND NOT IS_CHAR_DEAD h9_gang[2] AND NOT IS_CHAR_DEAD h9_gang[3] LVAR_INT h9_escape_seq OPEN_SEQUENCE_TASK h9_escape_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_PAUSE -1 500 SET_SEQUENCE_TO_REPEAT h9_escape_seq 1 CLOSE_SEQUENCE_TASK h9_escape_seq // ------------------------------------------------------------------------------------------------------------ OPEN_SEQUENCE_TASK h9_sequence_task TASK_TOGGLE_DUCK -1 TRUE TASK_PAUSE -1 3000 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2146.2703 1636.3137 992.5683 PEDMOVE_RUN -1 TASK_PICK_UP_OBJECT -1 h9_bag[0] 0.0 0.0 -0.5 PED_HANDR HOLD_ORIENTATE_PEDHEADING NULL NULL FALSE TASK_TOGGLE_DUCK -1 FALSE TASK_STAY_IN_SAME_PLACE -1 TRUE PERFORM_SEQUENCE_TASK -1 h9_escape_seq CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[0] TASK_TOGGLE_DUCK h9_gang[0] FALSE PERFORM_SEQUENCE_TASK h9_gang[0] h9_sequence_task // ------------------------------------------------------------------------------------------------------------ CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task TASK_PAUSE -1 100 TASK_TOGGLE_DUCK -1 TRUE TASK_FOLLOW_PATH_NODES_TO_COORD -1 2146.1367 1632.4038 992.5683 PEDMOVE_RUN -1 TASK_PICK_UP_OBJECT -1 h9_bag[1] 0.0 0.0 -0.5 PED_HANDR HOLD_ORIENTATE_PEDHEADING NULL NULL FALSE TASK_TOGGLE_DUCK -1 FALSE TASK_STAY_IN_SAME_PLACE -1 TRUE PERFORM_SEQUENCE_TASK -1 h9_escape_seq CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[1] TASK_TOGGLE_DUCK h9_gang[1] FALSE PERFORM_SEQUENCE_TASK h9_gang[1] h9_sequence_task // ------------------------------------------------------------------------------------------------------------ CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task TASK_PAUSE -1 200 TASK_TOGGLE_DUCK -1 TRUE TASK_PAUSE -1 2000 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2142.1482 1632.4264 992.5683 PEDMOVE_RUN -1 TASK_PICK_UP_OBJECT -1 h9_bag[2] 0.0 0.0 -0.5 PED_HANDR HOLD_ORIENTATE_PEDHEADING NULL NULL FALSE TASK_TOGGLE_DUCK -1 FALSE TASK_STAY_IN_SAME_PLACE -1 TRUE PERFORM_SEQUENCE_TASK -1 h9_escape_seq CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[2] TASK_TOGGLE_DUCK h9_gang[2] FALSE PERFORM_SEQUENCE_TASK h9_gang[2] h9_sequence_task // ------------------------------------------------------------------------------------------------------------ CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task TASK_PAUSE -1 100 TASK_TOGGLE_DUCK -1 TRUE TASK_PAUSE -1 3000 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2142.0696 1636.1366 992.5683 PEDMOVE_RUN -1 TASK_PICK_UP_OBJECT -1 h9_bag[3] 0.0 0.0 -0.5 PED_HANDR HOLD_ORIENTATE_PEDHEADING NULL NULL FALSE TASK_TOGGLE_DUCK -1 FALSE TASK_STAY_IN_SAME_PLACE -1 TRUE PERFORM_SEQUENCE_TASK -1 h9_escape_seq CLOSE_SEQUENCE_TASK h9_sequence_task CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[3] TASK_TOGGLE_DUCK h9_gang[3] FALSE PERFORM_SEQUENCE_TASK h9_gang[3] h9_sequence_task // ------------------------------------------------------------------------------------------------------------ REMOVE_ANIMATION BOMBER ADD_BLIP_FOR_COORD 2144.1521 1636.4618 992.5703 h9_cash_room_blip SET_BLIP_ENTRY_EXIT h9_cash_room_blip 2196.6353 1676.8411 10.0 CLEAR_SEQUENCE_TASK h9_escape_seq CLEAR_SEQUENCE_TASK h9_sequence_task ENDIF ENDIF ENDIF //safe0 IF h9_sync = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2144.1521 1636.4618 992.5703 10.0 10.0 2.0 FALSE AND DOES_BLIP_EXIST h9_cash_room_blip IF DOES_BLIP_EXIST h9_cash_room_blip REMOVE_BLIP h9_cash_room_blip ENDIF h9_cash_dialog = 1 h9_sync = 2 TIMERB = 0 REPEAT 4 v IF NOT IS_CHAR_DEAD h9_gang[v] GET_CHAR_HEALTH h9_gang[v] h9_gang_health[v] h9_hlth[v] = h9_gang_health[v] ENDIF ENDREPEAT ENDIF ENDIF IF h9_playing = 2 AND h9_cash_dialog = 1 $h9_print = &HE8_RB // Carl, you’ve got Mafia gorillas coming down to the vault and- h9_audio = SOUND_HE8_RB GOSUB h9_load_sample h9_cash_dialog = 2 ENDIF IF h9_playing = 2 AND h9_cash_dialog = 2 $h9_print = &HE8_RC // CURSE YOU BERKLEY, CURSE YOU! h9_audio = SOUND_HE8_RC GOSUB h9_load_sample TIMERA = 0 h9_cash_dialog = 3 ENDIF IF h9_playing = 2 AND h9_cash_dialog = 3 AND TIMERA > 3000 GOSUB h9_fade_out GOSUB h9_set_camera h9_bag_count = 4 REPEAT 11 v IF NOT IS_CHAR_DEAD h9_second_room[v] DELETE_CHAR h9_second_room[v] ENDIF ENDREPEAT REPEAT 3 v DELETE_CHAR h9_safe_guards[v] ENDREPEAT DELETE_CHAR h9_generator_mafia[0] DELETE_CHAR h9_generator_mafia[1] LVAR_INT h9_run_into_safe MARK_MODEL_AS_NO_LONGER_NEEDED BMYBOUN MARK_MODEL_AS_NO_LONGER_NEEDED WMYBOUN REQUEST_MODEL VMAFF1 REQUEST_MODEL VMAFF2 WHILE NOT HAS_MODEL_LOADED VMAFF1 OR NOT HAS_MODEL_LOADED VMAFF2 WAIT 0 ENDWHILE // ---------------------------------------------------------------------------------------------- //Players Left pillar enemy CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 2150.8308 1611.0328 992.6882 h9_second_room[0] SET_CHAR_AREA_VISIBLE h9_second_room[0] 1 SET_CHAR_HEADING h9_second_room[0] 353.2278 SET_CHAR_ONLY_DAMAGED_BY_PLAYER h9_second_room[0] TRUE // ---------------------------------------------------------------------------------------------- //Players right enemy pillar CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 2135.7017 1611.0641 992.6882 h9_second_room[1] SET_CHAR_AREA_VISIBLE h9_second_room[1] 1 SET_CHAR_HEADING h9_second_room[1] 354.2745 // ---------------------------------------------------------------------------------------------- OPEN_SEQUENCE_TASK h9_run_into_safe FLUSH_ROUTE EXTEND_ROUTE 2144.1404 1610.0145 992.6882 EXTEND_ROUTE 2146.0854 1611.8956 992.6882 TASK_TOGGLE_DUCK -1 TRUE TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE TASK_ACHIEVE_HEADING -1 6.3138 TASK_STAND_STILL -1 TRUE FLUSH_ROUTE IF NOT IS_CHAR_DEAD scplayer TASK_KILL_CHAR_ON_FOOT -1 scplayer ENDIF CLOSE_SEQUENCE_TASK h9_run_into_safe // ---------------------------------------------------------------------------------------------- //Enemy starts crouching CREATE_CHAR PEDTYPE_MISSION1 VMAFF2 2144.0288 1605.3518 992.5684 h9_second_room[2] SET_CHAR_AREA_VISIBLE h9_second_room[2] 1 SET_CHAR_HEADING h9_second_room[2] 356.6950 PERFORM_SEQUENCE_TASK h9_second_room[2] h9_run_into_safe // ---------------------------------------------------------------------------------------------- CLEAR_SEQUENCE_TASK h9_run_into_safe OPEN_SEQUENCE_TASK h9_run_into_safe FLUSH_ROUTE EXTEND_ROUTE 2144.1404 1610.0145 992.6882 EXTEND_ROUTE 2139.8154 1615.4709 992.6882 TASK_TOGGLE_DUCK -1 TRUE TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE TASK_TOGGLE_DUCK -1 FALSE TASK_ACHIEVE_HEADING -1 335.8946 TASK_STAND_STILL -1 TRUE FLUSH_ROUTE IF NOT IS_CHAR_DEAD scplayer TASK_KILL_CHAR_ON_FOOT -1 scplayer ENDIF CLOSE_SEQUENCE_TASK h9_run_into_safe // ---------------------------------------------------------------------------------------------- //Enemy starts CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 2144.2205 1601.9634 992.5684 h9_second_room[3] SET_CHAR_AREA_VISIBLE h9_second_room[3] 1 SET_CHAR_HEADING h9_second_room[3] 358.3628 PERFORM_SEQUENCE_TASK h9_second_room[3] h9_run_into_safe // ---------------------------------------------------------------------------------------------- //Reinforcements CREATE_CHAR PEDTYPE_MISSION1 VMAFF2 2146.6050 1597.7847 994.5676 h9_second_room[4] SET_CHAR_AREA_VISIBLE h9_second_room[4] 1 SET_CHAR_HEADING h9_second_room[4] 89.7654 SET_CHAR_ONLY_DAMAGED_BY_PLAYER h9_second_room[4] TRUE TASK_STAY_IN_SAME_PLACE h9_second_room[4] TRUE SET_SENSE_RANGE h9_second_room[4] 5.0 // ---------------------------------------------------------------------------------------------- //Reinforcements CREATE_CHAR PEDTYPE_MISSION1 VMAFF2 2147.7700 1596.4790 994.5676 h9_second_room[5] SET_CHAR_AREA_VISIBLE h9_second_room[5] 1 SET_CHAR_HEADING h9_second_room[5] 78.7631 TASK_STAY_IN_SAME_PLACE h9_second_room[5] TRUE SET_SENSE_RANGE h9_second_room[5] 5.0 // ---------------------------------------------------------------------------------------------- //Reinforcements CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 2148.6267 1602.2352 996.7766 h9_second_room[6] SET_CHAR_AREA_VISIBLE h9_second_room[6] 1 SET_CHAR_HEADING h9_second_room[6] 170.4726 TASK_STAY_IN_SAME_PLACE h9_second_room[6] TRUE SET_SENSE_RANGE h9_second_room[6] 5.0 // ---------------------------------------------------------------------------------------------- //Reinforcements CREATE_CHAR PEDTYPE_MISSION1 VMAFF2 2148.3579 1603.7339 996.7766 h9_second_room[7] SET_CHAR_AREA_VISIBLE h9_second_room[7] 1 SET_CHAR_HEADING h9_second_room[7] 158.8790 TASK_STAY_IN_SAME_PLACE h9_second_room[7] TRUE SET_SENSE_RANGE h9_second_room[7] 5.0 // ---------------------------------------------------------------------------------------------- CLEAR_SEQUENCE_TASK h9_run_into_safe REPEAT 8 v SET_CHAR_KEEP_TASK h9_second_room[v] TRUE SET_CHAR_MONEY h9_second_room[v] 0 IF NOT v = 0 AND NOT v = 4 SET_CHAR_HEALTH h9_second_room[v] 200 SET_CHAR_MAX_HEALTH h9_second_room[v] 200 ENDIF IF v = 3 OR v = 4 OR v = 7 SET_CHAR_WEAPON_SKILL h9_second_room[v] WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR h9_second_room[v] WEAPONTYPE_PISTOL 9999 ELSE GIVE_WEAPON_TO_CHAR h9_second_room[v] WEAPONTYPE_MP5 9999 SET_CURRENT_CHAR_WEAPON h9_second_room[v] WEAPONTYPE_MP5 ENDIF ADD_BLIP_FOR_CHAR h9_second_room[v] h9_seconds_inv[v] SET_BLIP_ENTRY_EXIT h9_seconds_inv[v] 2196.6353 1676.8411 10.0 CHANGE_BLIP_DISPLAY h9_seconds_inv[v] BLIP_ONLY SET_CHAR_SHOOT_RATE h9_second_room[v] 30 SET_CHAR_ACCURACY h9_second_room[v] 20 SET_CHAR_DECISION_MAKER h9_second_room[v] h9_decision_tough ENDREPEAT // ---------------------------------------------------------------------------------------------- SET_FIXED_CAMERA_POSITION 2142.2483 1611.1133 993.2602 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2142.6694 1610.2107 993.3487 JUMP_CUT IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2144.0476 1627.9856 992.5703 SET_CHAR_HEADING scplayer 181.8141 ENDIF GOSUB h9_fade_in PRINT_NOW ( HM9_57 ) 5000 1 // ~s~Kill the ~r~Mafia whilst the team gets the cash. WAIT 2000 SET_FIXED_CAMERA_POSITION 2140.7847 1619.8314 993.4654 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2141.0776 1618.8760 993.4291 JUMP_CUT IF NOT IS_CHAR_DEAD h9_second_room[3] CLEAR_CHAR_TASKS h9_second_room[3] TASK_TOGGLE_DUCK h9_second_room[3] TRUE SET_CHAR_COORDINATES_DONT_WARP_GANG h9_second_room[3] 2140.2488 1615.1196 992.6882 SET_CHAR_HEADING h9_second_room[3] 340.6346 ENDIF WAIT 3000 IF NOT IS_CHAR_DEAD h9_second_room[0] PERFORM_SEQUENCE_TASK h9_second_room[0] h9_peekright ENDIF IF NOT IS_CHAR_DEAD h9_second_room[1] PERFORM_SEQUENCE_TASK h9_second_room[1] h9_peekleft ENDIF IF DOES_OBJECT_EXIST h9_crt_0 SET_OBJECT_COORDINATES h9_crt_0 2173.8669 1619.4147 999.3000 ENDIF GOSUB h9_restore_camera $h9_print = &HE8_RD // Ok, we're about to have company! h9_audio = SOUND_HE8_RD GOSUB h9_load_sample h9_cash_dialog = 4 LVAR_INT h9_given_ai TIMERA = 0 ENDIF IF h9_cash_dialog = 4 IF IS_CHAR_DEAD h9_second_room[0] AND IS_CHAR_DEAD h9_second_room[1] AND IS_CHAR_DEAD h9_second_room[2] AND IS_CHAR_DEAD h9_second_room[3] AND h9_given_ai = 0 // ---------------------------------------------------------------------------------------------- CLEAR_SEQUENCE_TASK h9_run_into_safe OPEN_SEQUENCE_TASK h9_run_into_safe FLUSH_ROUTE EXTEND_ROUTE 2143.9272 1597.6738 994.5676 EXTEND_ROUTE 2144.1401 1603.1108 992.5684 EXTEND_ROUTE 2142.9067 1614.1505 992.6882 EXTEND_ROUTE 2143.1052 1621.5706 992.6882 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_TOGGLE_DUCK -1 TRUE CLOSE_SEQUENCE_TASK h9_run_into_safe // ---------------------------------------------------------------------------------------------- IF NOT IS_CHAR_DEAD h9_second_room[4] CLEAR_CHAR_TASKS h9_second_room[4] PERFORM_SEQUENCE_TASK h9_second_room[4] h9_run_into_safe ENDIF // ---------------------------------------------------------------------------------------------- IF NOT IS_CHAR_DEAD h9_second_room[5] CLEAR_CHAR_TASKS h9_second_room[5] PERFORM_SEQUENCE_TASK h9_second_room[5] h9_run_into_safe ENDIF // ---------------------------------------------------------------------------------------------- h9_given_ai = 1 ENDIF IF IS_CHAR_DEAD h9_second_room[4] AND IS_CHAR_DEAD h9_second_room[5] AND h9_given_ai = 1 // ---------------------------------------------------------------------------------------------- CLEAR_SEQUENCE_TASK h9_run_into_safe OPEN_SEQUENCE_TASK h9_run_into_safe FLUSH_ROUTE EXTEND_ROUTE 2147.7717 1597.5520 994.5676 EXTEND_ROUTE 2144.1267 1597.7916 994.5676 EXTEND_ROUTE 2144.3777 1603.6888 992.5684 EXTEND_ROUTE 2143.9868 1609.4673 992.6882 EXTEND_ROUTE 2143.7219 1618.0503 992.6882 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_TOGGLE_DUCK -1 TRUE CLOSE_SEQUENCE_TASK h9_run_into_safe // ---------------------------------------------------------------------------------------------- IF NOT IS_CHAR_DEAD h9_second_room[6] CLEAR_CHAR_TASKS h9_second_room[6] PERFORM_SEQUENCE_TASK h9_second_room[6] h9_run_into_safe ENDIF // ---------------------------------------------------------------------------------------------- IF NOT IS_CHAR_DEAD h9_second_room[7] CLEAR_CHAR_TASKS h9_second_room[7] PERFORM_SEQUENCE_TASK h9_second_room[7] h9_run_into_safe ENDIF // ---------------------------------------------------------------------------------------------- h9_given_ai = 2 ENDIF REPEAT 8 v IF IS_CHAR_DEAD h9_second_room[v] AND NOT h9_seconds_inv[v] = 0 IF DOES_BLIP_EXIST h9_seconds_inv[v] REMOVE_BLIP h9_seconds_inv[v] h9_seconds_inv[v] = 0 MARK_CHAR_AS_NO_LONGER_NEEDED h9_second_room[v] ENDIF ENDIF ENDREPEAT ENDIF IF h9_cash_dialog > 3 AND LOCATE_CHAR_ANY_MEANS_3D scplayer 2144.2446 1606.8209 992.6882 3.0 3.0 3.0 FALSE AND h9_never_again = 0 // ---------------------------------------------------------------------------------------------- CLEAR_SEQUENCE_TASK h9_run_into_safe OPEN_SEQUENCE_TASK h9_run_into_safe FLUSH_ROUTE EXTEND_ROUTE 2143.9272 1597.6738 994.5676 EXTEND_ROUTE 2144.1401 1603.1108 992.5684 EXTEND_ROUTE 2142.9067 1614.1505 992.6882 EXTEND_ROUTE 2143.1052 1621.5706 992.6882 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_TOGGLE_DUCK -1 TRUE CLOSE_SEQUENCE_TASK h9_run_into_safe // ---------------------------------------------------------------------------------------------- IF NOT IS_CHAR_DEAD h9_second_room[4] CLEAR_CHAR_TASKS h9_second_room[4] PERFORM_SEQUENCE_TASK h9_second_room[4] h9_run_into_safe ENDIF // ---------------------------------------------------------------------------------------------- IF NOT IS_CHAR_DEAD h9_second_room[5] CLEAR_CHAR_TASKS h9_second_room[5] PERFORM_SEQUENCE_TASK h9_second_room[5] h9_run_into_safe ENDIF // ---------------------------------------------------------------------------------------------- CLEAR_SEQUENCE_TASK h9_run_into_safe OPEN_SEQUENCE_TASK h9_run_into_safe FLUSH_ROUTE EXTEND_ROUTE 2147.7717 1597.5520 994.5676 EXTEND_ROUTE 2144.1267 1597.7916 994.5676 EXTEND_ROUTE 2144.3777 1603.6888 992.5684 EXTEND_ROUTE 2143.9868 1609.4673 992.6882 EXTEND_ROUTE 2143.7219 1618.0503 992.6882 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE TASK_TOGGLE_DUCK -1 TRUE CLOSE_SEQUENCE_TASK h9_run_into_safe // ---------------------------------------------------------------------------------------------- IF NOT IS_CHAR_DEAD h9_second_room[6] CLEAR_CHAR_TASKS h9_second_room[6] PERFORM_SEQUENCE_TASK h9_second_room[6] h9_run_into_safe ENDIF // ---------------------------------------------------------------------------------------------- IF NOT IS_CHAR_DEAD h9_second_room[7] CLEAR_CHAR_TASKS h9_second_room[7] PERFORM_SEQUENCE_TASK h9_second_room[7] h9_run_into_safe ENDIF // ---------------------------------------------------------------------------------------------- h9_given_ai = 2 h9_never_again = 1 ENDIF IF h9_sync = 2 REPEAT 4 v IF NOT IS_CHAR_DEAD h9_gang[v] h9_hlth[v] = h9_gang_health[v] GET_CHAR_HEALTH h9_gang[v] h9_gang_health[v] IF NOT h9_hlth[v] = h9_gang_health[v] PRINT_NOW ( HM9_44 ) 4000 1 // ZERO : The team's getting shot, your supposed to be protecting them! ENDIF ENDIF ENDREPEAT ENDIF IF h9_sync = 2 IF h9_cash_dialog = 4 AND h9_all_dead = 0 GOSUB h9_check_all_goons_dead ENDIF ENDIF //safe1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2146.3289 1597.4089 998.7676 4.0 4.0 4.0 FALSE AND h9_all_dead = 1 REPEAT 8 v DELETE_CHAR h9_second_room[v] ENDREPEAT // ---------------------------------------------------------------------------------------------- //Enemy standing on stairs - behind kill CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 2152.0149 1602.5098 1000.9710 h9_second_room[0] SET_CHAR_AREA_VISIBLE h9_second_room[0] 1 SET_CHAR_HEADING h9_second_room[0] 270.0812 TASK_STAY_IN_SAME_PLACE h9_second_room[0] TRUE // ---------------------------------------------------------------------------------------------- //Enemy peeking around corner CREATE_CHAR PEDTYPE_MISSION1 VMAFF2 2160.9849 1616.6895 998.9657 h9_second_room[1] SET_CHAR_AREA_VISIBLE h9_second_room[1] 1 SET_CHAR_HEADING h9_second_room[1] 178.5078 PERFORM_SEQUENCE_TASK h9_second_room[1] h9_peekleft // ---------------------------------------------------------------------------------------------- //Enemy crouching at bin CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 2181.3201 1625.3347 998.9714 h9_second_room[2] SET_CHAR_AREA_VISIBLE h9_second_room[2] 1 SET_CHAR_HEADING h9_second_room[2] 117.5403 TASK_STAY_IN_SAME_PLACE h9_second_room[2] TRUE TASK_TOGGLE_DUCK h9_second_room[2] TRUE // ---------------------------------------------------------------------------------------------- //Enemies standing still CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 2183.6533 1623.6595 998.9743 h9_second_room[3] SET_CHAR_AREA_VISIBLE h9_second_room[3] 1 SET_CHAR_HEADING h9_second_room[3] 98.1814 TASK_STAY_IN_SAME_PLACE h9_second_room[3] TRUE // ---------------------------------------------------------------------------------------------- //Enemies standing still CREATE_CHAR PEDTYPE_MISSION1 VMAFF2 2182.4937 1611.8462 998.9766 h9_second_room[4] SET_CHAR_AREA_VISIBLE h9_second_room[4] 1 SET_CHAR_HEADING h9_second_room[4] 57.0007 TASK_STAY_IN_SAME_PLACE h9_second_room[4] TRUE // ---------------------------------------------------------------------------------------------- //Enemy free-roam CREATE_CHAR PEDTYPE_MISSION1 VMAFF2 2191.2781 1619.0514 998.9766 h9_second_room[5] SET_CHAR_AREA_VISIBLE h9_second_room[5] 1 SET_CHAR_HEADING h9_second_room[5] 85.6714 // ---------------------------------------------------------------------------------------------- //Enemy Peek - Low acc CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 2222.6541 1616.0117 998.9688 h9_second_room[6] SET_CHAR_AREA_VISIBLE h9_second_room[6] 1 SET_CHAR_HEADING h9_second_room[6] 97.3112 PERFORM_SEQUENCE_TASK h9_second_room[6] h9_peekleft // ---------------------------------------------------------------------------------------------- //Enemy Crouch - Low acc CREATE_CHAR PEDTYPE_MISSION1 VMAFF2 2210.1057 1620.3871 998.9766 h9_second_room[7] SET_CHAR_AREA_VISIBLE h9_second_room[7] 1 SET_CHAR_HEADING h9_second_room[7] 90.3344 TASK_TOGGLE_DUCK h9_second_room[7] TRUE TASK_STAY_IN_SAME_PLACE h9_second_room[7] TRUE // ---------------------------------------------------------------------------------------------- //Enemy Crouching CREATE_CHAR PEDTYPE_MISSION1 VMAFF1 2224.5779 1619.1136 998.9679 h9_second_room[8] SET_CHAR_AREA_VISIBLE h9_second_room[8] 1 SET_CHAR_HEADING h9_second_room[8] 86.7328 TASK_TOGGLE_DUCK h9_second_room[8] TRUE TASK_STAY_IN_SAME_PLACE h9_second_room[8] TRUE // ---------------------------------------------------------------------------------------------- REPEAT 9 v SET_CHAR_MONEY h9_second_room[v] 0 ADD_BLIP_FOR_CHAR h9_second_room[v] h9_seconds_inv[v] SET_BLIP_ENTRY_EXIT h9_seconds_inv[v] 2196.6353 1676.8411 10.0 CHANGE_BLIP_DISPLAY h9_seconds_inv[v] BLIP_ONLY SET_CHAR_HEALTH h9_second_room[v] 200 SET_CHAR_MAX_HEALTH h9_second_room[v] 200 GIVE_WEAPON_TO_CHAR h9_second_room[v] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON h9_second_room[v] WEAPONTYPE_MP5 SET_CHAR_SHOOT_RATE h9_second_room[v] 30 SET_CHAR_ACCURACY h9_second_room[v] 20 SET_CHAR_DECISION_MAKER h9_second_room[v] h9_decision_tough ENDREPEAT h9_mission_status = 15 ENDIF ENDIF // **************************************************************************************************** // * * // * TEAM RUNS TO VAN * // * * // **************************************************************************************************** IF h9_mission_status = 15 REPEAT 9 v IF IS_CHAR_DEAD h9_second_room[v] AND NOT h9_seconds_inv[v] = 0 IF DOES_BLIP_EXIST h9_seconds_inv[v] REMOVE_BLIP h9_seconds_inv[v] h9_seconds_inv[v] = 0 MARK_CHAR_AS_NO_LONGER_NEEDED h9_second_room[v] ENDIF ENDIF ENDREPEAT IF TIMERB > 7000 AND h9_run_van_conv = 1 $h9_print = &HE8_TA // Ok team, just how we practiced, two by two. h9_audio = SOUND_HE8_TA GOSUB h9_load_sample h9_run_van_conv = 2 ENDIF IF h9_playing = 2 AND h9_run_van_conv = 2 $h9_print = &HE8_TB // Ow, fuck! h9_audio = SOUND_HE8_TB GOSUB h9_load_sample h9_run_van_conv = 3 ENDIF IF h9_playing = 2 AND h9_run_van_conv = 3 $h9_print = &HE8_TC // Scratch that! Everybody follow Carl! h9_audio = SOUND_HE8_TC GOSUB h9_load_sample h9_run_van_conv = 0 ENDIF // **************************************************************************************************** // * * // * First super node * // * * // **************************************************************************************************** IF IS_CHAR_DEAD h9_second_room[0] AND h9_first_node = 0 CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task // TASK_TOGGLE_DUCK -1 TRUE TASK_FOLLOW_PATH_NODES_TO_COORD -1 2157.6289 1602.6041 998.9766 PEDMOVE_RUN -1 // TASK_TOGGLE_DUCK -1 FALSE CLOSE_SEQUENCE_TASK h9_sequence_task REPEAT 4 v IF NOT IS_CHAR_DEAD h9_gang[v] PERFORM_SEQUENCE_TASK h9_gang[v] h9_sequence_task ENDIF ENDREPEAT CLEAR_SEQUENCE_TASK h9_sequence_task h9_first_node = 1 ENDIF IF IS_CHAR_DEAD h9_second_room[1] AND h9_first_node = 1 OPEN_SEQUENCE_TASK h9_sequence_task // TASK_TOGGLE_DUCK -1 TRUE TASK_FOLLOW_PATH_NODES_TO_COORD -1 2165.4233 1618.3859 998.9747 PEDMOVE_RUN -1 // TASK_TOGGLE_DUCK -1 FALSE CLOSE_SEQUENCE_TASK h9_sequence_task REPEAT 4 v IF NOT IS_CHAR_DEAD h9_gang[v] PERFORM_SEQUENCE_TASK h9_gang[v] h9_sequence_task ENDIF ENDREPEAT CLEAR_SEQUENCE_TASK h9_sequence_task h9_first_node = 2 ENDIF IF IS_CHAR_DEAD h9_second_room[2] AND IS_CHAR_DEAD h9_second_room[3] AND IS_CHAR_DEAD h9_second_room[4] AND IS_CHAR_DEAD h9_second_room[5] AND h9_first_node = 2 OPEN_SEQUENCE_TASK h9_sequence_task FLUSH_ROUTE EXTEND_ROUTE 2169.0452 1618.7301 998.9766 EXTEND_ROUTE 2171.0967 1618.6219 998.9766 EXTEND_ROUTE 2172.7483 1621.9347 998.9772 EXTEND_ROUTE 2179.5940 1623.4889 998.9745 EXTEND_ROUTE 2184.2002 1623.9084 998.9739 EXTEND_ROUTE 2187.7639 1622.7878 998.9758 EXTEND_ROUTE 2190.1296 1618.6642 998.9766 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE CLOSE_SEQUENCE_TASK h9_sequence_task IF NOT IS_CHAR_DEAD h9_gang[0] PERFORM_SEQUENCE_TASK h9_gang[0] h9_sequence_task ENDIF IF NOT IS_CHAR_DEAD h9_gang[1] PERFORM_SEQUENCE_TASK h9_gang[1] h9_sequence_task ENDIF CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task FLUSH_ROUTE EXTEND_ROUTE 2169.0188 1618.7637 998.9766 EXTEND_ROUTE 2171.7104 1618.2516 998.9766 EXTEND_ROUTE 2174.5386 1615.0054 998.9766 EXTEND_ROUTE 2180.3789 1614.2458 998.9766 EXTEND_ROUTE 2185.4451 1614.7389 998.9766 EXTEND_ROUTE 2190.1296 1618.6642 998.9766 TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE CLOSE_SEQUENCE_TASK h9_sequence_task IF NOT IS_CHAR_DEAD h9_gang[2] PERFORM_SEQUENCE_TASK h9_gang[2] h9_sequence_task ENDIF IF NOT IS_CHAR_DEAD h9_gang[3] PERFORM_SEQUENCE_TASK h9_gang[3] h9_sequence_task ENDIF CLEAR_SEQUENCE_TASK h9_sequence_task h9_first_node = 3 ENDIF IF h9_first_node = 3 REQUEST_MODEL COPBIKE REQUEST_MODEL lapdm1 LOAD_SPECIAL_CHARACTER 1 ZERO WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_MODEL_LOADED COPBIKE OR NOT HAS_MODEL_LOADED lapdm1 WAIT 0 ENDWHILE REQUEST_CAR_RECORDING 494 // LOAD_SPECIAL_CHARACTER 1 ZERO // 3Master - Unnecessary and breaks loading WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 494 WAIT 0 ENDWHILE CLEAR_AREA 2220.3396 1582.0681 998.9764 10.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 SPECIAL01 2220.3396 1582.0681 998.9764 h9_zero SET_CHAR_AREA_VISIBLE h9_zero 1 SET_CHAR_HEADING h9_zero 350.4443 SET_CHAR_NEVER_TARGETTED h9_zero TRUE // Cop Bikes CREATE_CAR COPBIKE 2223.6995 1582.7799 998.0000 h9_bike_a SET_VEHICLE_AREA_VISIBLE h9_bike_a 1 SET_CAR_HEADING h9_bike_a 175.8434 LOCK_CAR_DOORS h9_bike_a CARLOCK_LOCKOUT_PLAYER_ONLY FREEZE_CAR_POSITION h9_bike_a TRUE CREATE_CAR COPBIKE 2217.5493 1583.6671 998.0000 h9_bike_b SET_VEHICLE_AREA_VISIBLE h9_bike_b 1 SET_CAR_HEADING h9_bike_b 175.3717 LOCK_CAR_DOORS h9_bike_b CARLOCK_LOCKOUT_PLAYER_ONLY FREEZE_CAR_POSITION h9_bike_b TRUE h9_first_node = 4 ENDIF //safe2 IF IS_CHAR_DEAD h9_second_room[6] AND IS_CHAR_DEAD h9_second_room[7] AND IS_CHAR_DEAD h9_second_room[8] AND h9_first_node = 4 OPEN_SEQUENCE_TASK h9_sequence_task TASK_FOLLOW_PATH_NODES_TO_COORD -1 2222.9954 1618.7257 998.9672 PEDMOVE_RUN -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 2220.9082 1585.6951 998.9708 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK h9_sequence_task REPEAT 4 v IF NOT IS_CHAR_DEAD h9_gang[v] PERFORM_SEQUENCE_TASK h9_gang[v] h9_sequence_task ENDIF ENDREPEAT CLEAR_SEQUENCE_TASK h9_sequence_task h9_first_node = 5 ENDIF IF h9_first_node >= 4 IF IS_CHAR_DEAD h9_zero GOSUB h9_fix_for_failed PRINT_NOW ( HM9_63 ) 4000 1 // ~r~Zero has been killed GOTO mission_heist9_failed ENDIF IF IS_CAR_DEAD h9_bike_a GOSUB h9_fix_for_failed PRINT_NOW ( HM9_60 ) 4000 1 // ~r~You destroyed the police bike! GOTO mission_heist9_failed ENDIF IF IS_CAR_DEAD h9_bike_b GOSUB h9_fix_for_failed PRINT_NOW ( HM9_60 ) 4000 1 // ~r~You destroyed the police bike! GOTO mission_heist9_failed ENDIF ENDIF REPEAT 4 v IF NOT IS_CHAR_DEAD h9_gang[v] h9_hlth[v] = h9_gang_health[v] GET_CHAR_HEALTH h9_gang[v] h9_gang_health[v] IF NOT h9_hlth[v] = h9_gang_health[v] PRINT_NOW ( HM9_44 ) 5000 1 // ZERO : The team's getting shot, your supposed to be protecting them! ENDIF ENDIF ENDREPEAT REPEAT 4 v IF NOT IS_CHAR_DEAD h9_gang[v] IF LOCATE_CHAR_ANY_MEANS_3D h9_gang[v] 2220.2048 1585.4218 998.9717 5.0 5.0 5.0 FALSE AND h9_going_to_van[v] = 0 h9_van_count ++ h9_going_to_van[v] = 1 ENDIF ENDIF ENDREPEAT IF NOT h9_first_node = 5 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2220.2048 1585.4218 998.9717 10.0 10.0 10.0 FALSE PRINT_NOW ( HM9_1F ) 4000 1 // ~s~Go back and kill any remaining ~r~security~s~. ENDIF ENDIF IF h9_first_node = 5 AND LOCATE_CHAR_ANY_MEANS_3D scplayer 2220.2048 1585.4218 998.9717 10.0 10.0 10.0 FALSE vein_child: CLEAR_PRINTS GOSUB h9_fade_out IF DOES_BLIP_EXIST h9_roller_door_blip REMOVE_BLIP h9_roller_door_blip ENDIF IF NOT IS_CHAR_DEAD h9_gang[0] CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[0] SET_CHAR_COORDINATES_DONT_WARP_GANG h9_gang[0] 2224.0417 1589.3666 998.9670 SET_CHAR_HEADING h9_gang[0] 165.2519 ENDIF IF NOT IS_CHAR_DEAD h9_gang[1] CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[1] SET_CHAR_COORDINATES_DONT_WARP_GANG h9_gang[1] 2222.8931 1589.5830 998.9684 SET_CHAR_HEADING h9_gang[1] 173.9364 ENDIF IF NOT IS_CHAR_DEAD h9_gang[2] CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[2] SET_CHAR_COORDINATES_DONT_WARP_GANG h9_gang[2] 2221.8657 1589.2455 998.9696 SET_CHAR_HEADING h9_gang[2] 177.0563 ENDIF IF NOT IS_CHAR_DEAD h9_gang[3] CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[3] SET_CHAR_COORDINATES_DONT_WARP_GANG h9_gang[3] 2220.7229 1589.2239 998.9710 SET_CHAR_HEADING h9_gang[3] 171.7417 ENDIF IF NOT IS_CHAR_DEAD h9_zero SET_CHAR_COORDINATES_DONT_WARP_GANG h9_zero 2220.3396 1582.0681 998.9764 SET_CHAR_HEADING h9_zero 350.4443 ENDIF IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2225.5405 1586.8341 998.9651 ELSE SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2225.5405 1586.8341 998.9651 ENDIF SET_CHAR_HEADING scplayer 124.4066 ENDIF IF NOT IS_CAR_DEAD h9_bike_a FREEZE_CAR_POSITION h9_bike_a FALSE ENDIF IF NOT IS_CAR_DEAD h9_bike_b FREEZE_CAR_POSITION h9_bike_b FALSE ENDIF CLEAR_ONSCREEN_TIMER h9_safe_timer GOSUB h9_set_camera SET_FIXED_CAMERA_POSITION 2216.7207 1579.8098 1000.8326 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2217.3821 1580.5382 1000.6542 JUMP_CUT GOSUB h9_fade_in IF NOT IS_CHAR_DEAD h9_zero CLEAR_CHAR_TASKS h9_zero TASK_PLAY_ANIM h9_zero IDLE_chat PED 1.0 TRUE FALSE FALSE FALSE -1 ENDIF PRINT_NOW ( HE8_UA ) 4000 1 // I unloaded the police bikes! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_UA // I unloaded the police bikes! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skip_enter_van ENDIF ENDWHILE PRINT_NOW ( HE8_UB ) 4000 1 // Everybody in! You two, change into your police uniforms! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_UB // Everybody in! You two, change into your police uniforms! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skip_enter_van ENDIF ENDWHILE DELETE_CHAR h9_zero DELETE_CHAR h9_gang[2] DELETE_CHAR h9_gang[3] SET_FIXED_CAMERA_POSITION 2216.9141 1571.6224 999.7229 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2217.2698 1572.5570 999.7267 JUMP_CUT CREATE_CHAR PEDTYPE_MISSION2 lapdm1 2220.7996 1581.1633 998.9764 h9_biker_a SET_CHAR_HEADING h9_biker_a 196.0524 SET_CHAR_AREA_VISIBLE h9_biker_a 1 CREATE_CHAR PEDTYPE_MISSION2 lapdm1 2220.0188 1581.1787 998.9772 h9_biker_b SET_CHAR_HEADING h9_biker_b 74.4668 SET_CHAR_AREA_VISIBLE h9_biker_b 1 IF NOT IS_CAR_DEAD h9_getaway_car AND NOT IS_CHAR_DEAD h9_gang[0] TASK_ENTER_CAR_AS_DRIVER h9_gang[0] h9_getaway_car 8000 ENDIF IF NOT IS_CAR_DEAD h9_getaway_car AND NOT IS_CHAR_DEAD h9_gang[1] TASK_ENTER_CAR_AS_PASSENGER h9_gang[1] h9_getaway_car 8000 0 ENDIF IF NOT IS_CAR_DEAD h9_bike_a AND NOT IS_CHAR_DEAD h9_biker_a TASK_ENTER_CAR_AS_DRIVER h9_biker_a h9_bike_a 8000 ENDIF IF NOT IS_CAR_DEAD h9_bike_b AND NOT IS_CHAR_DEAD h9_biker_b TASK_ENTER_CAR_AS_DRIVER h9_biker_b h9_bike_b 8000 ENDIF TIMERB = 0 WHILE TIMERB < 8000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skip_enter_van ENDIF ENDWHILE SET_FIXED_CAMERA_POSITION 2223.8503 1572.0138 1001.6227 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2223.3713 1572.8435 1001.3364 JUMP_CUT IF HAS_CAR_RECORDING_BEEN_LOADED 494 AND NOT IS_CAR_DEAD h9_getaway_car START_PLAYBACK_RECORDED_CAR h9_getaway_car 494 ENDIF TIMERB = 0 WHILE TIMERB < 500 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skip_enter_van ENDIF ENDWHILE IF NOT IS_CAR_DEAD h9_bike_a AND NOT IS_CHAR_DEAD h9_biker_a SWITCH_CAR_SIREN h9_bike_a ON TASK_CAR_DRIVE_TO_COORD h9_biker_a h9_bike_a 2223.4553 1564.8922 1000.8730 10.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH ENDIF IF NOT IS_CAR_DEAD h9_bike_b AND NOT IS_CHAR_DEAD h9_biker_b SWITCH_CAR_SIREN h9_bike_b ON TASK_CAR_DRIVE_TO_COORD h9_biker_b h9_bike_b 2217.3186 1566.5996 1000.3005 10.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH ENDIF TIMERB = 0 WHILE TIMERB < 2000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_skip_enter_van ENDIF ENDWHILE h9_skip_enter_van: REPEAT 4 v IF DOES_BLIP_EXIST h9_gang_blip[v] REMOVE_BLIP h9_gang_blip[v] DELETE_CHAR h9_gang[v] ENDIF ENDREPEAT GOSUB h9_restore_camera IF NOT IS_CHAR_DEAD h9_zero DELETE_CHAR h9_zero ENDIF IF NOT IS_CHAR_DEAD h9_biker_a DELETE_CHAR h9_biker_a ENDIF IF NOT IS_CHAR_DEAD h9_biker_b DELETE_CHAR h9_biker_b ENDIF IF NOT IS_CAR_DEAD h9_bike_a DELETE_CAR h9_bike_a ENDIF IF NOT IS_CAR_DEAD h9_bike_b DELETE_CAR h9_bike_b ENDIF IF NOT IS_CAR_DEAD h9_getaway_car DELETE_CAR h9_getaway_car ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED TRIADA MARK_MODEL_AS_NO_LONGER_NEEDED lapdm1 MARK_MODEL_AS_NO_LONGER_NEEDED COPBIKE MARK_MODEL_AS_NO_LONGER_NEEDED SECURICA UNLOAD_SPECIAL_CHARACTER 3 UNLOAD_SPECIAL_CHARACTER 2 UNLOAD_SPECIAL_CHARACTER 1 h9_van_not_needed_anymore = 1 h9_mission_status = 16 TIMERA = 0 ENDIF ENDIF // ************************************************************************************************* // * * // * GOING TO THE ROOF * // * * // ************************************************************************************************* //safe4 IF h9_mission_status = 16 REPEAT 9 v DELETE_CHAR h9_second_room[v] ENDREPEAT MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF2 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF1 REQUEST_MODEL VMAFF3 REQUEST_MODEL VMAFF4 WHILE NOT HAS_MODEL_LOADED VMAFF3 OR NOT HAS_MODEL_LOADED VMAFF4 WAIT 0 ENDWHILE // ---------------------------------------------------------------------------------------------- //Enemy Peeker CREATE_CHAR PEDTYPE_MISSION1 VMAFF4 2221.3396 1616.9712 998.9719 h9_second_room[0] SET_CHAR_AREA_VISIBLE h9_second_room[0] 1 SET_CHAR_HEADING h9_second_room[0] 173.3951 TASK_STAY_IN_SAME_PLACE h9_second_room[0] TRUE PERFORM_SEQUENCE_TASK h9_second_room[0] h9_peekright // ---------------------------------------------------------------------------------------------- //Enemy roll to left CREATE_CHAR PEDTYPE_MISSION1 VMAFF3 2204.9114 1615.9915 998.9820 h9_second_room[1] SET_CHAR_AREA_VISIBLE h9_second_room[1] 1 SET_CHAR_HEADING h9_second_room[1] 266.9222 TASK_STAY_IN_SAME_PLACE h9_second_room[1] TRUE // ---------------------------------------------------------------------------------------------- //Runs towards player CREATE_CHAR PEDTYPE_MISSION1 VMAFF4 2196.6636 1618.7592 998.9766 h9_second_room[2] SET_CHAR_AREA_VISIBLE h9_second_room[2] 1 SET_CHAR_HEADING h9_second_room[2] 266.9185 // ---------------------------------------------------------------------------------------------- //Enemies free-roam CREATE_CHAR PEDTYPE_MISSION1 VMAFF3 2172.9958 1616.3293 998.9766 h9_second_room[3] SET_CHAR_AREA_VISIBLE h9_second_room[3] 1 SET_CHAR_HEADING h9_second_room[3] 263.6073 // ---------------------------------------------------------------------------------------------- //Enemies free-roam CREATE_CHAR PEDTYPE_MISSION1 VMAFF4 2173.0029 1622.6256 998.9761 h9_second_room[4] SET_CHAR_AREA_VISIBLE h9_second_room[4] 1 SET_CHAR_HEADING h9_second_room[4] 261.2549 // ---------------------------------------------------------------------------------------------- //Enemy crouch - roll to left CREATE_CHAR PEDTYPE_MISSION1 VMAFF3 2179.7273 1611.8108 998.9766 h9_second_room[5] SET_CHAR_AREA_VISIBLE h9_second_room[5] 1 SET_CHAR_HEADING h9_second_room[5] 263.1769 TASK_TOGGLE_DUCK h9_second_room[5] TRUE TASK_STAY_IN_SAME_PLACE h9_second_room[5] TRUE // ---------------------------------------------------------------------------------------------- //Enemy crouch - roll to left CREATE_CHAR PEDTYPE_MISSION1 VMAFF3 2181.5430 1622.6567 998.9760 h9_second_room[6] SET_CHAR_AREA_VISIBLE h9_second_room[6] 1 SET_CHAR_HEADING h9_second_room[6] 263.6053 TASK_TOGGLE_DUCK h9_second_room[6] TRUE TASK_STAY_IN_SAME_PLACE h9_second_room[6] TRUE // ---------------------------------------------------------------------------------------------- //Enemy standing top of stairs CREATE_CHAR PEDTYPE_MISSION1 VMAFF3 2151.5779 1602.3218 1000.9707 h9_second_room[7] SET_CHAR_AREA_VISIBLE h9_second_room[7] 1 SET_CHAR_HEADING h9_second_room[7] 264.2166 TASK_STAY_IN_SAME_PLACE h9_second_room[7] TRUE // ---------------------------------------------------------------------------------------------- REPEAT 8 v h9_seconds_inv[v] = 1 SET_CHAR_MONEY h9_second_room[v] 0 SET_CHAR_HEALTH h9_second_room[v] 200 SET_CHAR_MAX_HEALTH h9_second_room[v] 200 IF v = 3 OR v = 4 OR v = 7 SET_CHAR_WEAPON_SKILL h9_second_room[v] WEAPONSKILL_PRO GIVE_WEAPON_TO_CHAR h9_second_room[v] WEAPONTYPE_PISTOL 9999 ELSE GIVE_WEAPON_TO_CHAR h9_second_room[v] WEAPONTYPE_MP5 9999 SET_CURRENT_CHAR_WEAPON h9_second_room[v] WEAPONTYPE_MP5 ENDIF SET_CHAR_SHOOT_RATE h9_second_room[v] 30 SET_CHAR_ACCURACY h9_second_room[v] 30 SET_CHAR_DECISION_MAKER h9_second_room[v] h9_decision_tough ENDREPEAT // ---------------------------------------------------------------------------------------------- PRINT_NOW ( HM9_10 ) 7000 1 // ~s~Get to the ~y~service elevator~s~, remember you are the decoy. debbie_death: ADD_BLIP_FOR_COORD 2156.1880 1597.9803 998.9766 h9_elevator SET_BLIP_ENTRY_EXIT h9_elevator 2196.6353 1676.8411 10.0 //SET_OBJECT_HEADING h9_door_a 90.0000 h9_mission_status = 17 h9_lift_conv = 1 TIMERA = 0 ENDIF IF h9_mission_status = 17 REPEAT 8 v IF IS_CHAR_DEAD h9_second_room[v] AND NOT h9_seconds_inv[v] = 0 h9_seconds_inv[v] = 0 MARK_CHAR_AS_NO_LONGER_NEEDED h9_second_room[v] ENDIF ENDREPEAT IF NOT IS_CHAR_DEAD h9_second_room[1] AND LOCATE_CHAR_ANY_MEANS_3D scplayer 2208.0205 1619.1246 998.9827 5.0 5.0 5.0 FALSE IF h9_seconds_inv[1] = 1 CLEAR_CHAR_TASKS_IMMEDIATELY h9_second_room[1] OPEN_SEQUENCE_TASK h9_sequence_task TASK_TOGGLE_DUCK -1 TRUE TASK_WEAPON_ROLL -1 FALSE TASK_TOGGLE_DUCK -1 TRUE CLOSE_SEQUENCE_TASK h9_sequence_task PERFORM_SEQUENCE_TASK h9_second_room[1] h9_sequence_task CLEAR_SEQUENCE_TASK h9_sequence_task h9_seconds_inv[1] = 2 ENDIF ENDIF IF NOT IS_CHAR_DEAD h9_second_room[2] AND LOCATE_CHAR_ANY_MEANS_3D scplayer 2224.0203 1618.9269 998.9655 5.0 5.0 5.0 FALSE IF h9_seconds_inv[2] = 1 CLEAR_CHAR_TASKS_IMMEDIATELY h9_second_room[2] FLUSH_ROUTE EXTEND_ROUTE 2224.0203 1618.9269 998.9655 TASK_FOLLOW_POINT_ROUTE h9_second_room[2] PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE h9_seconds_inv[2] = 2 ENDIF ENDIF IF NOT IS_CHAR_DEAD h9_second_room[5] AND LOCATE_CHAR_ANY_MEANS_3D scplayer 2183.9070 1613.5718 998.9766 5.0 5.0 5.0 FALSE IF h9_seconds_inv[5] = 1 TASK_TOGGLE_DUCK h9_second_room[5] FALSE h9_seconds_inv[5] = 2 IF NOT IS_CHAR_DEAD h9_second_room[3] CLEAR_CHAR_TASKS_IMMEDIATELY h9_second_room[3] FLUSH_ROUTE EXTEND_ROUTE 2183.9070 1613.5718 998.9766 TASK_TOGGLE_DUCK h9_second_room[3] TRUE TASK_FOLLOW_POINT_ROUTE h9_second_room[3] PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD h9_second_room[6] AND LOCATE_CHAR_ANY_MEANS_3D scplayer 2185.5793 1624.4309 998.9730 5.0 5.0 5.0 FALSE IF h9_seconds_inv[6] = 1 CLEAR_CHAR_TASKS_IMMEDIATELY h9_second_room[6] OPEN_SEQUENCE_TASK h9_sequence_task TASK_TOGGLE_DUCK -1 TRUE TASK_WEAPON_ROLL -1 FALSE TASK_TOGGLE_DUCK -1 TRUE CLOSE_SEQUENCE_TASK h9_sequence_task PERFORM_SEQUENCE_TASK h9_second_room[6] h9_sequence_task CLEAR_SEQUENCE_TASK h9_sequence_task h9_seconds_inv[6] = 2 IF NOT IS_CHAR_DEAD h9_second_room[4] CLEAR_CHAR_TASKS_IMMEDIATELY h9_second_room[4] FLUSH_ROUTE EXTEND_ROUTE 2185.5793 1624.4309 998.9730 TASK_TOGGLE_DUCK h9_second_room[4] TRUE TASK_FOLLOW_POINT_ROUTE h9_second_room[4] PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD h9_second_room[7] AND LOCATE_CHAR_ANY_MEANS_3D scplayer 2160.2791 1618.6678 998.9676 5.0 5.0 5.0 FALSE IF h9_seconds_inv[7] = 1 CLEAR_CHAR_TASKS_IMMEDIATELY h9_second_room[7] FLUSH_ROUTE EXTEND_ROUTE 2157.5803 1601.9437 998.9766 EXTEND_ROUTE 2157.8323 1616.0239 998.9669 TASK_FOLLOW_POINT_ROUTE h9_second_room[7] PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE h9_seconds_inv[7] = 2 ENDIF ENDIF IF TIMERA > 7000 AND h9_lift_conv = 1 $h9_print = &HE8_VA // Ok, CJ, you’re on your own now! h9_audio = SOUND_HE8_VA GOSUB h9_load_sample h9_lift_conv = 2 ENDIF IF h9_playing = 2 AND h9_lift_conv = 2 $h9_print = &HE8_VB // Time to lead these motherfuckers a merry dance! h9_audio = SOUND_HE8_VB GOSUB h9_load_sample h9_lift_conv = 3 ENDIF IF h9_playing = 2 AND h9_lift_conv = 3 $h9_print = &HE8_VC // You want talked to the roof? h9_audio = SOUND_HE8_VC GOSUB h9_load_sample h9_lift_conv = 4 ENDIF IF h9_playing = 2 AND h9_lift_conv = 4 $h9_print = &HE8_VD // Anything that helps, dude! h9_audio = SOUND_HE8_VD GOSUB h9_load_sample h9_lift_conv = 101 ENDIF // *********************************************************************************************** // * * // * Lights turn back on * // * * // *********************************************************************************************** IF h9_lift_conv = 101 AND h9_trigger_lights = 0 SET_DARKNESS_EFFECT FALSE 0 SWITCH_ENTRY_EXIT JUMP1 TRUE SWITCH_ENTRY_EXIT JUMP2 FALSE IF NOT IS_CHAR_DEAD scplayer PLAYER_TAKE_OFF_GOGGLES player1 TRUE ENDIF SET_NIGHT_VISION FALSE h9_trigger_lights = 1 ENDIF // *********************************************************************************************** // * * // * Lights turn back on dialog * // * * // *********************************************************************************************** IF NOT h9_trigger_lights = 0 AND NOT h9_trigger_lights = 7 IF h9_playing = 2 AND h9_trigger_lights = 1 $h9_print = &HE8_WA // What happened? h9_audio = SOUND_HE8_WA GOSUB h9_load_sample h9_trigger_lights = 2 ENDIF IF h9_playing = 2 AND h9_trigger_lights = 2 $h9_print = &HE8_WB // Curse you, Berkley, curse you! h9_audio = SOUND_HE8_WB GOSUB h9_load_sample h9_trigger_lights = 3 ENDIF IF h9_playing = 2 AND h9_trigger_lights = 3 IF NOT IS_CHAR_DEAD scplayer START_CHAR_FACIAL_TALK scplayer 10000 ENDIF $h9_print = &HE8_WC // C’mon, dude, talk to me! h9_audio = SOUND_HE8_WC GOSUB h9_load_sample h9_trigger_lights = 4 ENDIF IF h9_playing = 2 AND h9_trigger_lights = 4 IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF $h9_print = &HE8_WE // Now head through the casino to the lifts on the far side! h9_audio = SOUND_HE8_WE GOSUB h9_load_sample h9_trigger_lights = 5 ENDIF IF h9_playing = 2 AND h9_trigger_lights = 5 $h9_print = &HE8_WF // Take the lift all the way to the roof! h9_audio = SOUND_HE8_WF GOSUB h9_load_sample h9_trigger_lights = 7 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2156.1880 1597.9803 998.9766 1.2 1.2 2.0 TRUE AND h9_elevator_message_1 = 0 IF NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 OFF ENDIF GOSUB h9_fade_out IF DOES_BLIP_EXIST h9_elevator REMOVE_BLIP h9_elevator ENDIF LOAD_SCENE 2266.5110 1647.5168 1083.2408 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2266.5110 1647.5168 1083.2408 SET_CHAR_HEADING scplayer 268.9270 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT ENDIF LVAR_INT h9_roof_blip ADD_BLIP_FOR_COORD 2266.2253 1619.7657 1089.4453 h9_roof_blip SET_BLIP_ENTRY_EXIT h9_roof_blip 2196.6353 1676.8411 10.0 GOSUB h9_clean_interior CLEAR_MISSION_AUDIO 3 LOAD_MISSION_AUDIO 3 SOUND_LIFT_PING WHILE NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE IF HAS_MISSION_AUDIO_LOADED 3 PLAY_MISSION_AUDIO 3 ENDIF GOSUB h9_fade_in IF NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 ON ENDIF PRINT_NOW ( HM9_45 ) 4000 1 // ~s~Get onto the roof! h9_elevator_message_1 = 1 ENDIF ENDIF IF h9_mission_status = 17 OR h9_mission_status = 18 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2266.5984 1647.3784 1083.2408 1.2 1.2 2.0 FALSE AND h9_roof_trigger = 0 REPEAT 8 v DELETE_CHAR h9_second_room[v] ENDREPEAT REQUEST_MODEL gun_para WHILE NOT HAS_MODEL_LOADED gun_para WAIT 0 ENDWHILE CREATE_PICKUP gun_para PICKUP_ONCE 2267.9888 1699.6678 101.4000 h9_para_pickup para_freefall_Vz = -6.0 para_freefall_Vy = 35.0 CREATE_CHAR PEDTYPE_MISSION1 VMAFF3 2269.7322 1620.3453 1085.2500 h9_roof_guy SET_CHAR_AREA_VISIBLE h9_roof_guy 1 SET_CHAR_HEADING h9_roof_guy 0.7663 GIVE_WEAPON_TO_CHAR h9_roof_guy WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON h9_roof_guy WEAPONTYPE_MP5 SET_CHAR_ACCURACY h9_roof_guy 80 SET_CHAR_DECISION_MAKER h9_roof_guy h9_decision FLUSH_ROUTE EXTEND_ROUTE 2269.5769 1624.2461 1083.2578 EXTEND_ROUTE 2269.9858 1628.8032 1083.2451 EXTEND_ROUTE 2268.9478 1641.6399 1083.2344 TASK_FOLLOW_POINT_ROUTE h9_roof_guy PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE SET_CHAR_MONEY h9_roof_guy 0 CREATE_CHAR PEDTYPE_MISSION1 VMAFF4 2265.8320 1624.9385 1087.4485 h9_roof_guy_1 SET_CHAR_AREA_VISIBLE h9_roof_guy_1 1 SET_CHAR_HEADING h9_roof_guy_1 178.1353 GIVE_WEAPON_TO_CHAR h9_roof_guy_1 WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON h9_roof_guy_1 WEAPONTYPE_MP5 SET_CHAR_ACCURACY h9_roof_guy_1 80 SET_CHAR_DECISION_MAKER h9_roof_guy_1 h9_decision TASK_TOGGLE_DUCK h9_roof_guy_1 TRUE TASK_STAY_IN_SAME_PLACE h9_roof_guy_1 TRUE SET_CHAR_MONEY h9_roof_guy_1 0 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF1 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF2 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF3 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF4 h9_roof_trigger = 1 ENDIF //roof0 IF h9_wanted_level = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2269.0676 1624.6476 93.9220 10.0 10.0 10.0 FALSE AND h9_wanted_level = 0 to_here: SET_RADAR_ZOOM 0 SET_WANTED_MULTIPLIER 1.0 DO_FADE 0 FADE_OUT SET_TIME_OF_DAY 00 00 GOSUB h9_set_camera IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2268.6658 1620.9098 93.9220 SET_CHAR_HEADING scplayer 270.0000 ENDIF LOAD_SCENE 2269.8110 1625.4415 93.9220 LOAD_SCENE_IN_DIRECTION 2270.0952 1692.9395 101.2986 129.3904 REQUEST_MODEL POLMAV WHILE NOT HAS_MODEL_LOADED POLMAV WAIT 0 ENDWHILE // Creates forklift CREATE_CAR POLMAV 2295.6223 1839.8036 38.2713 h9_helicopter SET_CAR_HEADING h9_helicopter 191.5123 REQUEST_MODEL SWAT REQUEST_CAR_RECORDING 484 WHILE NOT HAS_MODEL_LOADED SWAT OR NOT HAS_CAR_RECORDING_BEEN_LOADED 484 WAIT 0 ENDWHILE //heli0 LVAR_INT h9_chopper h9_pilot h9_spotlight h9_heli_man[4] CREATE_CAR POLMAV 2253.0676 1626.5624 87.9584 h9_chopper CREATE_CHAR_INSIDE_CAR h9_chopper PEDTYPE_MISSION4 SWAT h9_pilot SET_CHAR_CAN_BE_SHOT_IN_VEHICLE h9_pilot FALSE LOCK_CAR_DOORS h9_chopper CARLOCK_LOCKED SET_CHAR_CANT_BE_DRAGGED_OUT h9_pilot TRUE SET_HELI_BLADES_FULL_SPEED h9_chopper SET_CAR_FORWARD_SPEED h9_chopper 10.0 CREATE_CHAR PEDTYPE_MISSION1 SWAT 2253.0676 1626.5624 87.9584 h9_heli_man[0] SET_CHAR_DECISION_MAKER h9_heli_man[0] h9_decision_tough CREATE_CHAR PEDTYPE_MISSION1 SWAT 2253.0676 1626.5624 87.9584 h9_heli_man[1] SET_CHAR_DECISION_MAKER h9_heli_man[1] h9_decision_tough CREATE_CHAR PEDTYPE_MISSION1 SWAT 2253.0676 1626.5624 87.9584 h9_heli_man[2] SET_CHAR_DECISION_MAKER h9_heli_man[2] h9_decision_tough CREATE_CHAR PEDTYPE_MISSION1 SWAT 2253.0676 1626.5624 87.9584 h9_heli_man[3] SET_CHAR_DECISION_MAKER h9_heli_man[3] h9_decision_tough ATTACH_CHAR_TO_CAR h9_heli_man[0] h9_chopper 1.4 1.3 -0.1 FACING_RIGHT 190.0 WEAPONTYPE_MP5 ATTACH_CHAR_TO_CAR h9_heli_man[1] h9_chopper 1.4 -0.8 -0.1 FACING_RIGHT 190.0 WEAPONTYPE_MP5 ATTACH_CHAR_TO_CAR h9_heli_man[2] h9_chopper -1.4 1.3 -0.1 FACING_LEFT 190.0 WEAPONTYPE_MP5 ATTACH_CHAR_TO_CAR h9_heli_man[3] h9_chopper -1.4 -0.8 -0.1 FACING_LEFT 190.0 WEAPONTYPE_MP5 REPEAT 4 v SET_CHAR_MONEY h9_heli_man[v] 0 SET_CHAR_HEALTH h9_heli_man[v] 150 SET_CHAR_SHOOT_RATE h9_heli_man[v] 40 SET_CHAR_ACCURACY h9_heli_man[v] 40 TASK_STAY_IN_SAME_PLACE h9_heli_man[v] TRUE ENDREPEAT CREATE_SEARCHLIGHT_ON_VEHICLE h9_chopper 0.0 1.0 -0.5 2269.4558 1625.4415 93.9220 5.0 0.4 h9_spotlight POINT_SEARCHLIGHT_AT_CHAR h9_spotlight scplayer 10.0 IF NOT IS_CAR_DEAD h9_chopper IF HAS_CAR_RECORDING_BEEN_LOADED 484 START_PLAYBACK_RECORDED_CAR h9_chopper 484 PAUSE_PLAYBACK_RECORDED_CAR h9_chopper ENDIF ENDIF // ---------------------------------------------------------------------------------------------- //Cop at the chopper CREATE_CHAR PEDTYPE_MISSION1 SWAT 2293.6802 1837.0165 38.2713 h9_second_room[0] SET_CHAR_HEADING h9_second_room[0] 164.9221 TASK_STAND_STILL h9_second_room[0] TRUE // ---------------------------------------------------------------------------------------------- //Cop at the chopper CREATE_CHAR PEDTYPE_MISSION1 SWAT 2298.4917 1836.9462 38.2713 h9_second_room[1] SET_CHAR_HEADING h9_second_room[1] 170.0207 TASK_STAND_STILL h9_second_room[1] TRUE TASK_TOGGLE_DUCK h9_second_room[1] TRUE // ---------------------------------------------------------------------------------------------- REPEAT 2 v h9_seconds_inv[v] = 1 SET_CHAR_HEALTH h9_second_room[v] 200 SET_CHAR_MAX_HEALTH h9_second_room[v] 200 GIVE_WEAPON_TO_CHAR h9_second_room[v] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON h9_second_room[v] WEAPONTYPE_MP5 SET_CHAR_SHOOT_RATE h9_second_room[v] 30 SET_CHAR_ACCURACY h9_second_room[v] 20 SET_CHAR_DECISION_MAKER h9_second_room[v] h9_decision_tough ENDREPEAT // ---------------------------------------------------------------------------------------------- SWITCH_ENTRY_EXIT JUMP1 FALSE SWITCH_ENTRY_EXIT JUMP2 FALSE CLEAR_AREA 2270.0208 1623.4861 93.9220 20.0 TRUE IF DOES_BLIP_EXIST h9_elevator REMOVE_BLIP h9_elevator ENDIF IF DOES_BLIP_EXIST h9_roof_blip REMOVE_BLIP h9_roof_blip ENDIF LVAR_INT h9_para_blip ADD_BLIP_FOR_PICKUP h9_para_pickup h9_para_blip SET_CAR_DENSITY_MULTIPLIER 1.0 SET_FIXED_CAMERA_POSITION 2305.3381 1721.0996 126.2864 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2304.8130 1720.4073 125.7915 JUMP_CUT GOSUB h9_fade_in SET_INTERPOLATION_PARAMETERS 0.0 8000 SET_FIXED_CAMERA_POSITION 2307.4092 1599.5317 118.4341 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2306.7485 1600.1638 118.0293 INTERPOLATION PRINT_NOW ( HM9_25 ) 8000 1 // ~s~Follow the rooftops and collect the ~g~parachute~s~. WAIT 3000 IF NOT IS_CAR_DEAD h9_chopper IF HAS_CAR_RECORDING_BEEN_LOADED 484 UNPAUSE_PLAYBACK_RECORDED_CAR h9_chopper ENDIF ENDIF WAIT 5000 GOSUB h9_restore_camera LVAR_INT h9_armour_1 CREATE_PICKUP bodyarmour PICKUP_ONCE 2265.8247 1617.0693 94.5000 h9_armour_1 IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2269.1387 1622.5756 93.9220 SET_CHAR_HEADING scplayer 0.0000 SET_CAMERA_BEHIND_PLAYER ENDIF h9_wanted_level = 1 TIMERB = 0 CHECKPOINT_SAVE 99 ENDIF ENDIF IF IS_CAR_DEAD h9_chopper IF DOES_SEARCHLIGHT_EXIST h9_spotlight DELETE_SEARCHLIGHT h9_spotlight ENDIF ENDIF IF h9_wanted_level = 1 AND TIMERB > 10800 AND NOT IS_CAR_DEAD h9_chopper IF IS_PLAYBACK_GOING_ON_FOR_CAR h9_chopper PAUSE_PLAYBACK_RECORDED_CAR h9_chopper ENDIF REPEAT 4 v IF NOT IS_CHAR_DEAD h9_heli_man[v] GET_CHAR_COORDINATES h9_heli_man[v] x y z DELETE_CHAR h9_heli_man[v] CREATE_SWAT_ROPE PEDTYPE_MISSION1 SWAT x y z h9_heli_man[v] SET_CHAR_SHOOT_RATE h9_heli_man[v] 70 SET_CHAR_DECISION_MAKER h9_heli_man[v] h9_decision_tough GIVE_WEAPON_TO_CHAR h9_heli_man[v] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON h9_heli_man[v] WEAPONTYPE_MP5 TASK_STAY_IN_SAME_PLACE h9_heli_man[v] TRUE ENDIF ENDREPEAT OPEN_SEQUENCE_TASK h9_sequence_task TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_ACHIEVE_HEADING -1 170.7766 TASK_TOGGLE_DUCK -1 FALSE TASK_PAUSE -1 3000 TASK_SHOOT_AT_CHAR -1 scplayer -1 CLOSE_SEQUENCE_TASK h9_sequence_task IF NOT IS_CHAR_DEAD h9_heli_man[0] PERFORM_SEQUENCE_TASK h9_heli_man[0] h9_sequence_task ENDIF CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_ACHIEVE_HEADING -1 170.7766 TASK_PAUSE -1 3000 TASK_SHOOT_AT_CHAR -1 scplayer -1 CLOSE_SEQUENCE_TASK h9_sequence_task IF NOT IS_CHAR_DEAD h9_heli_man[1] PERFORM_SEQUENCE_TASK h9_heli_man[1] h9_sequence_task ENDIF CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_ACHIEVE_HEADING -1 170.7766 TASK_TOGGLE_DUCK -1 FALSE TASK_PAUSE -1 3000 TASK_SHOOT_AT_CHAR -1 scplayer -1 CLOSE_SEQUENCE_TASK h9_sequence_task IF NOT IS_CHAR_DEAD h9_heli_man[2] PERFORM_SEQUENCE_TASK h9_heli_man[2] h9_sequence_task ENDIF CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_ACHIEVE_HEADING -1 170.7766 TASK_PAUSE -1 3000 TASK_SHOOT_AT_CHAR -1 scplayer -1 CLOSE_SEQUENCE_TASK h9_sequence_task IF NOT IS_CHAR_DEAD h9_heli_man[3] PERFORM_SEQUENCE_TASK h9_heli_man[3] h9_sequence_task ENDIF CLEAR_SEQUENCE_TASK h9_sequence_task h9_wanted_level = 2 ENDIF IF h9_wanted_level = 2 AND TIMERB > 18000 AND NOT IS_CAR_DEAD h9_chopper IF IS_PLAYBACK_GOING_ON_FOR_CAR h9_chopper UNPAUSE_PLAYBACK_RECORDED_CAR h9_chopper ENDIF h9_wanted_level = 3 ENDIF IF h9_roof_trigger = 1 IF HAS_PICKUP_BEEN_COLLECTED h9_para_pickup IF DOES_BLIP_EXIST h9_para_blip REMOVE_BLIP h9_para_blip ENDIF IF NOT IS_CAR_DEAD h9_helicopter ADD_BLIP_FOR_CAR h9_helicopter h9_chopper_blip SET_BLIP_AS_FRIENDLY h9_chopper_blip TRUE ENDIF h9_mission_status = 18 h9_chute_deleted = 2 IF NOT IS_CAR_DEAD h9_helicopter GOSUB h9_set_camera SET_FIXED_CAMERA_POSITION 2267.8804 1692.8203 111.0014 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2267.8757 1693.3955 110.1835 JUMP_CUT WAIT 100 SET_INTERPOLATION_PARAMETERS 0.0 6000 SET_FIXED_CAMERA_POSITION 2293.7092 1832.2788 41.1442 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2294.0574 1833.1499 40.7979 INTERPOLATION PRINT_HELP_FOREVER HM9_HD // ~s~Press ~m~~widget_attack~ when falling to open the parachute. WAIT 6000 GOSUB h9_restore_camera PRINT_NOW ( HM9_1H ) 6000 1 // ~s~Parachute off and escape in the ~b~helicopter~s~. ELSE ADD_BLIP_FOR_COORD 365.5647 2536.7600 15.6637 h9_safe_house PRINT_NOW ( HM9_X ) 6000 1 // ~s~Parachute off and escape to the ~y~safe house~s~. ENDIF IF NOT IS_CHAR_DEAD scplayer SET_CHAR_HEADING scplayer 353.9519 ENDIF SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PARACHUTE ENDIF ENDIF IF IS_CAR_DEAD h9_helicopter AND DOES_BLIP_EXIST h9_chopper_blip IF NOT DOES_BLIP_EXIST h9_safe_house ADD_BLIP_FOR_COORD 365.5647 2536.7600 15.6637 h9_safe_house PRINT_NOW ( HM9_1J ) 6000 1 // ~s~Escape to the ~y~safe house~s~. ENDIF REMOVE_BLIP h9_chopper_blip ENDIF IF NOT IS_CAR_DEAD h9_chopper IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR h9_chopper AND h9_heli_chasing = 0 POLICE_HELI_CHASE_ENTITY h9_chopper scplayer -1 20.0 h9_heli_chasing = 1 ENDIF ENDIF ENDIF IF h9_mission_status = 18 IF IS_CAR_DEAD h9_helicopter AND DOES_BLIP_EXIST h9_chopper_blip REMOVE_BLIP h9_chopper_blip ENDIF IF NOT IS_CAR_DEAD h9_helicopter AND NOT IS_CHAR_DEAD scplayer IF DOES_BLIP_EXIST h9_chopper_blip AND IS_CHAR_IN_CAR scplayer h9_helicopter IF NOT DOES_BLIP_EXIST h9_safe_house ADD_BLIP_FOR_COORD 365.5647 2536.7600 15.6637 h9_safe_house PRINT_NOW ( HM9_1J ) 6000 1 // ~s~Escape to the ~y~safe house~s~. ENDIF REMOVE_BLIP h9_chopper_blip ENDIF ENDIF IF NOT IS_CHAR_DEAD scplayer AND DOES_BLIP_EXIST h9_para_blip GET_CHAR_COORDINATES scplayer x y z IF z < 90.0000 IF DOES_BLIP_EXIST h9_para_blip AND h9_can_see = 0 REMOVE_BLIP h9_para_blip ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD scplayer AND DOES_BLIP_EXIST h9_chopper_blip IF NOT IS_CAR_DEAD h9_helicopter GET_CHAR_COORDINATES scplayer x y z IF z < 36.0000 IF DOES_BLIP_EXIST h9_chopper_blip AND h9_can_see = 0 AND h9_missed_chopper = 0 REMOVE_BLIP h9_chopper_blip ADD_BLIP_FOR_COORD 365.5647 2536.7600 15.6637 h9_safe_house PRINT_NOW ( HM9_1J ) 6000 1 // ~s~Escape to the ~y~safe house~s~. h9_missed_chopper = 1 ENDIF ENDIF ENDIF ENDIF // ----------------------------------------------------------------------------------------------------- IF LOCATE_CHAR_ANY_MEANS_3D scplayer 365.5647 2536.7600 15.6637 4.0 4.0 4.0 TRUE // ----------------------------------------------------------------------------------------------------- IF NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 OFF ENDIF //last0 h9_spawned_end_guys = 1 REMOVE_BLIP h9_safe_house GOSUB h9_fade_out IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer car ENDIF ENDIF IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 345.3890 2539.2097 15.7622 ELSE SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 345.3890 2539.2097 15.7622 ENDIF SET_CHAR_HEADING scplayer 300.8022 ENDIF IF NOT IS_CAR_DEAD h9_chopper DELETE_CAR h9_chopper ENDIF IF NOT IS_CAR_DEAD h9_helicopter DELETE_CAR h9_helicopter ENDIF IF NOT IS_CAR_DEAD car DELETE_CAR car ENDIF REQUEST_MODEL SECURICA REQUEST_MODEL COPBIKE REQUEST_MODEL lapdm1 LOAD_SPECIAL_CHARACTER 1 ZERO LOAD_SPECIAL_CHARACTER 2 WUZIMU WHILE NOT HAS_MODEL_LOADED SECURICA OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_SPECIAL_CHARACTER_LOADED 2 OR NOT HAS_MODEL_LOADED COPBIKE OR NOT HAS_MODEL_LOADED lapdm1 WAIT 0 ENDWHILE // ----------------------------------------------------------------------------------------------------- CREATE_OBJECT CJ_MONEY_BAG 344.9779 2545.2131 15.7642 h9_bag[0] CREATE_OBJECT CJ_MONEY_BAG 347.9360 2543.9722 15.7498 h9_bag[1] CREATE_OBJECT CJ_MONEY_BAG 348.9375 2545.8411 15.7383 h9_bag[2] CREATE_OBJECT CJ_MONEY_BAG 343.8135 2545.7217 15.7699 h9_bag[3] CLEAR_AREA 345.2756 2546.8237 15.7628 50.0 TRUE CREATE_CAR SECURICA 345.2756 2546.8237 15.7628 h9_getaway_car SET_CAR_HEADING h9_getaway_car 58.9413 LOCK_CAR_DOORS h9_getaway_car CARLOCK_LOCKOUT_PLAYER_ONLY FREEZE_CAR_POSITION h9_getaway_car TRUE CREATE_CHAR PEDTYPE_MISSION2 SPECIAL02 343.7633 2545.0225 15.7702 h9_gang[0] SET_CHAR_HEADING h9_gang[0] 202.9705 SET_ANIM_GROUP_FOR_CHAR h9_gang[0] blindman TASK_STAY_IN_SAME_PLACE h9_gang[0] TRUE SET_CHAR_DECISION_MAKER h9_gang[0] h9_empty_decision SET_CHAR_NEVER_TARGETTED h9_gang[0] TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER h9_gang[0] TRUE // ----------------------------------------------------------------------------------------------------- CLEAR_AREA 344.5244 2540.5625 15.7743 200.0 TRUE CLEAR_AREA 346.5559 2548.0271 15.7244 2.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 SPECIAL01 346.5559 2548.0271 15.7244 h9_zero SET_CHAR_HEADING h9_zero 242.1164 SET_CHAR_NEVER_TARGETTED h9_zero TRUE TASK_STAY_IN_SAME_PLACE h9_zero TRUE SET_CHAR_DECISION_MAKER h9_zero h9_empty_decision SET_CHAR_NEVER_TARGETTED h9_zero TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER h9_zero TRUE CREATE_CAR COPBIKE 360.2574 2547.4604 15.5491 h9_bike_a SET_CAR_HEADING h9_bike_a 107.4242 CREATE_CAR COPBIKE 362.5870 2542.7148 15.6180 h9_bike_b SET_CAR_HEADING h9_bike_b 95.4990 CREATE_CHAR_INSIDE_CAR h9_bike_a PEDTYPE_MISSION2 lapdm1 h9_biker_a CREATE_CHAR_INSIDE_CAR h9_bike_b PEDTYPE_MISSION2 lapdm1 h9_biker_b CLEAR_WANTED_LEVEL player1 LOAD_SCENE_IN_DIRECTION 345.6064 2536.5103 15.7612 4.4301 IF NOT IS_CHAR_DEAD h9_gang[0] SET_CHAR_COORDINATES_DONT_WARP_GANG h9_gang[0] 342.5135 2545.1472 15.7763 SET_CHAR_HEADING h9_gang[0] 215.4312 ENDIF GOSUB h9_set_camera REQUEST_ANIMATION FIGHT_B WHILE NOT HAS_ANIMATION_LOADED FIGHT_B WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD h9_zero AND NOT IS_CHAR_DEAD h9_gang[0] CLEAR_CHAR_TASKS_IMMEDIATELY scplayer OPEN_SEQUENCE_TASK h9_sequence_task TASK_GO_TO_COORD_ANY_MEANS -1 347.2988 2541.4834 15.7529 PEDMOVE_WALK -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 h9_zero TASK_PAUSE -1 4500 TASK_TURN_CHAR_TO_FACE_CHAR -1 h9_zero TASK_PLAY_ANIM -1 FIGHTB_M FIGHT_B 4.0 FALSE FALSE FALSE FALSE -1 TASK_PAUSE -1 3000 TASK_TURN_CHAR_TO_FACE_CHAR -1 h9_gang[0] CLOSE_SEQUENCE_TASK h9_sequence_task PERFORM_SEQUENCE_TASK scplayer h9_sequence_task CLEAR_SEQUENCE_TASK h9_sequence_task ENDIF SET_FIXED_CAMERA_POSITION 346.2450 2537.9404 16.7555 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 346.7908 2538.7783 16.7555 JUMP_CUT IF NOT IS_CAR_DEAD h9_bike_a AND NOT IS_CAR_DEAD h9_bike_b AND NOT IS_CHAR_DEAD h9_biker_a AND NOT IS_CHAR_DEAD h9_biker_b OPEN_SEQUENCE_TASK h9_sequence_task TASK_CAR_DRIVE_TO_COORD -1 h9_bike_a 351.2343 2544.1245 15.7337 5.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH TASK_PAUSE -1 2000 TASK_LEAVE_CAR -1 h9_bike_a SWITCH_CAR_SIREN h9_bike_a OFF CLOSE_SEQUENCE_TASK h9_sequence_task PERFORM_SEQUENCE_TASK h9_biker_a h9_sequence_task CLEAR_SEQUENCE_TASK h9_sequence_task OPEN_SEQUENCE_TASK h9_sequence_task TASK_CAR_DRIVE_TO_COORD -1 h9_bike_b 351.4331 2542.7527 15.7337 5.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH TASK_PAUSE -1 2000 TASK_LEAVE_CAR -1 h9_bike_b SWITCH_CAR_SIREN h9_bike_b OFF CLOSE_SEQUENCE_TASK h9_sequence_task SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED PERFORM_SEQUENCE_TASK h9_biker_b h9_sequence_task CLEAR_SEQUENCE_TASK h9_sequence_task ENDIF IF NOT IS_CAR_DEAD h9_bike_a AND NOT IS_CHAR_DEAD h9_biker_a SWITCH_CAR_SIREN h9_bike_a ON ENDIF IF NOT IS_CAR_DEAD h9_bike_b AND NOT IS_CHAR_DEAD h9_biker_b SWITCH_CAR_SIREN h9_bike_b ON ENDIF GOSUB h9_fade_in PRINT_NOW ( HE8_ZA ) 4000 1 // Zero, where are you? CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_ZA // Zero, where are you? WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 IF NOT IS_CHAR_DEAD h9_zero FLUSH_ROUTE EXTEND_ROUTE 350.6611 2546.7346 15.6957 EXTEND_ROUTE 348.9894 2543.4763 15.7446 EXTEND_ROUTE 347.4687 2541.7935 15.7521 TASK_FOLLOW_POINT_ROUTE h9_zero PEDMOVE_RUN FOLLOW_ROUTE_ONCE FLUSH_ROUTE ENDIF TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE PRINT_NOW ( HE8_ZB ) 4000 1 // I didn’t mean to tell Berkley, it just kinda came out! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_ZB // I didn’t mean to tell Berkley, it just kinda came out! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD h9_zero TASK_PLAY_ANIM h9_zero KO_shot_face PED 4.0 FALSE FALSE FALSE TRUE -1 ENDIF PRINT_NOW ( ZER1_DB ) 4000 1 // Will you watch it, you idiot! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_ZER1_DB // Will you watch it, you idiot! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE WAIT 500 SET_INTERPOLATION_PARAMETERS 0.0 3000 SET_FIXED_CAMERA_POSITION 348.9764 2538.0286 16.6197 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 348.7430 2539.0007 16.6362 INTERPOLATION PRINT_NOW ( WUZX_BR ) 4000 1 // Hey, CJ, calm down! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_WUZX_BR // Hey, CJ, calm down! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE WAIT 1000 PRINT_NOW ( WUZX_AK ) 4000 1 // You better take me home, CJ! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_WUZX_AK // You better take me home, CJ! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE GOSUB h9_fade_out DELETE_CHAR h9_gang[0] DELETE_CHAR h9_zero DELETE_CHAR h9_biker_a DELETE_CHAR h9_biker_b DELETE_CAR h9_bike_a DELETE_CAR h9_bike_b DELETE_CAR h9_getaway_car REMOVE_ANIMATION FIGHT_B DELETE_OBJECT h9_bag[0] DELETE_OBJECT h9_bag[1] DELETE_OBJECT h9_bag[2] DELETE_OBJECT h9_bag[3] h9_clothes_changed = 1 IF NOT IS_CHAR_DEAD scplayer RESTORE_CLOTHES_STATE BUILD_PLAYER_MODEL player1 ENDIF IF NOT IS_CHAR_DEAD scplayer LOAD_SCENE 2023.7832 1007.8450 9.8203 CLEAR_AREA 2023.7832 1007.8450 9.8203 20.0 TRUE REQUEST_COLLISION 2023.7832 1007.8450 SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2023.7832 1007.8450 9.8130 SET_CHAR_HEADING scplayer 270.9639 ENDIF GOSUB h9_restore_camera WAIT 500 GOSUB h9_fade_in GOTO mission_heist9_passed ENDIF ENDIF // ************************************************************************************************* // * * // * Cutscene of team guy dying * // * * // ************************************************************************************************* IF h9_mission_status < 16 AND h9_van_not_needed_anymore = 0 AND h9_team_is_spawned = 1 REPEAT 4 v IF NOT IS_CHAR_DEAD h9_gang[v] GET_CHAR_COORDINATES h9_gang[v] h9_x[v] h9_y[v] h9_z[v] ENDIF IF IS_CHAR_DEAD h9_gang[v] IF DOES_BLIP_EXIST h9_gang_blip[v] REMOVE_BLIP h9_gang_blip[v] ENDIF GOSUB h9_set_camera h9_z[v] = h9_z[v] + 2.5 SET_FIXED_CAMERA_POSITION h9_x[v] h9_y[v] h9_z[v] 0.0 0.0 0.0 // Keycode Door h9_z[v] = h9_z[v] - 2.5 POINT_CAMERA_AT_POINT h9_x[v] h9_y[v] h9_z[v] JUMP_CUT WAIT 4000 GOSUB h9_fix_for_failed PRINT_NOW ( HM9_9 ) 4000 1 // ~r~You failed to protect the guys! GOTO mission_heist9_failed ENDIF ENDREPEAT ENDIF ENDWHILE GOTO mission_heist9_failed // ***************************** Teleport Team Upstairs ********************************** teleport_team_into_place: DELETE_CAR h9_forklift MARK_MODEL_AS_NO_LONGER_NEEDED FORKLIFT // Door Right IF NOT IS_CHAR_DEAD h9_gang[0] CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[0] SET_CHAR_COORDINATES_DONT_WARP_GANG h9_gang[0] 2145.1458 1626.4639 992.5681 SET_CHAR_HEADING h9_gang[0] 11.1673 TASK_DUCK h9_gang[0] -1 ENDIF // Door Left IF NOT IS_CHAR_DEAD h9_gang[1] CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[1] SET_CHAR_COORDINATES_DONT_WARP_GANG h9_gang[1] 2143.2502 1626.4819 992.5681 SET_CHAR_HEADING h9_gang[1] 3.4561 TASK_DUCK h9_gang[1] -1 ENDIF // Pillar Left IF NOT IS_CHAR_DEAD h9_gang[2] CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[2] SET_CHAR_COORDINATES_DONT_WARP_GANG h9_gang[2] 2140.7527 1616.2489 992.5681 SET_CHAR_HEADING h9_gang[2] 342.9477 ENDIF // Pillar Right IF NOT IS_CHAR_DEAD h9_gang[3] CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[3] SET_CHAR_COORDINATES_DONT_WARP_GANG h9_gang[3] 2147.7385 1616.7034 992.5681 SET_CHAR_HEADING h9_gang[3] 33.9273 ENDIF RETURN explosion_proof: REPEAT 4 v IF NOT IS_CHAR_DEAD h9_gang[v] SET_CHAR_PROOFS h9_gang[v] FALSE FALSE TRUE TRUE FALSE ENDIF ENDREPEAT RETURN not_explosion_proof: REPEAT 4 v IF NOT IS_CHAR_DEAD h9_gang[v] SET_CHAR_PROOFS h9_gang[v] FALSE FALSE FALSE TRUE FALSE ENDIF ENDREPEAT RETURN h9_check_all_goons_dead: IF IS_CHAR_DEAD h9_second_room[0] AND IS_CHAR_DEAD h9_second_room[1] AND IS_CHAR_DEAD h9_second_room[2] AND IS_CHAR_DEAD h9_second_room[3] AND IS_CHAR_DEAD h9_second_room[4] IF IS_CHAR_DEAD h9_second_room[5] AND IS_CHAR_DEAD h9_second_room[6] AND IS_CHAR_DEAD h9_second_room[7] // Run to the super nodes OPEN_SEQUENCE_TASK h9_sequence_task TASK_FOLLOW_PATH_NODES_TO_COORD -1 2148.0173 1597.4574 998.7676 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK h9_sequence_task REPEAT 4 v h9_second[v] = 0 h9_third[v] = 0 IF NOT IS_CHAR_DEAD h9_gang[v] AND NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[v] PERFORM_SEQUENCE_TASK h9_gang[v] h9_sequence_task ENDIF IF NOT IS_CHAR_DEAD h9_gang[v] h9_hlth[v] = h9_gang_health[v] GET_CHAR_HEALTH h9_gang[v] h9_gang_health[v] IF NOT h9_hlth[v] = h9_gang_health[v] PRINT_NOW ( HM9_44 ) 5000 1 // ZERO : The team's getting shot, your supposed to be protecting them! ENDIF ENDIF ENDREPEAT CLEAR_SEQUENCE_TASK h9_sequence_task h9_first_node = 0 h9_second_node = 0 h9_run_van_conv = 1 TIMERB = 0 REPEAT 4 v CHANGE_BLIP_DISPLAY h9_gang_blip[v] BOTH ENDREPEAT IF DOES_BLIP_EXIST h9_roller_door_blip REMOVE_BLIP h9_roller_door_blip ENDIF ADD_BLIP_FOR_COORD 2220.5430 1572.6249 998.9531 h9_roller_door_blip SET_BLIP_ENTRY_EXIT h9_roller_door_blip 2196.6353 1676.8411 10.0 PRINT_NOW ( HM9_8 ) 7000 1 // ~s~Lead the team safely back to the ~y~van~s~. h9_all_dead = 1 ENDIF ENDIF RETURN // **************************************** Mission heist9 failed *********************** mission_heist9_failed: IF NOT IS_CHAR_DEAD scplayer DISABLE_PLAYER_SPRINT player1 FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF PRINT_BIG ( M_FAIL ) 5000 1 // "Mission Failed" RETURN // **************************************** Mission heist9 passed ************************ mission_heist9_passed: // night vision goggles CREATE_PICKUP_WITH_AMMO NVGOGGLES PICKUP_ON_STREET_SLOW 1 102.7728 1899.1920 33.1572 goggle_pickups[4] // up a tower in area 51 in desert CREATE_PICKUP_WITH_AMMO NVGOGGLES PICKUP_ON_STREET_SLOW 1 1274.3005 -825.7809 1085.0795 goggle_pickups[5] // mad dogs mansion in LA in desert CREATE_PICKUP_WITH_AMMO NVGOGGLES PICKUP_ON_STREET_SLOW 1 -948.3487 1858.0232 8.3237 goggle_pickups[6] // inside sherman dam CREATE_PICKUP_WITH_AMMO NVGOGGLES PICKUP_ON_STREET_SLOW 1 -1956.2742 -853.7687 31.8730 goggle_pickups[7] // silicone valley IF NOT IS_CHAR_DEAD scplayer DISABLE_PLAYER_SPRINT player1 FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF IF DOES_BLIP_EXIST theheist_contact_blip REMOVE_BLIP theheist_contact_blip ENDIF flag_heist_mission_counter ++ // Used to terminate this mission loop in the main script. These variables will be set up in the main.sc PLAYER_MADE_PROGRESS 1 REGISTER_MISSION_PASSED ( HEIST_9 ) // Used in the stats PRINT_WITH_NUMBER_BIG ( M_PASSS ) 100000 5000 1 //"Mission Passed!" //100 being the amount of cash ADD_SCORE player1 100000 // Amount of cash AWARD_PLAYER_MISSION_RESPECT 100 //amount of respect PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL player1 CLEAR_AREA 2444.7725 655.0391 10.3874 30.0 TRUE flag_player_got_casino_uniform = 1 SET_INT_STAT PASSED_HEIST8 1 RETURN // ********************************** cleanup interior *********************************** h9_clean_interior: MARK_MODEL_AS_NO_LONGER_NEEDED FORKLIFT MARK_MODEL_AS_NO_LONGER_NEEDED SECURICA MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF1 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF2 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF3 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF4 MARK_MODEL_AS_NO_LONGER_NEEDED silenced MARK_MODEL_AS_NO_LONGER_NEEDED teargas MARK_MODEL_AS_NO_LONGER_NEEDED BMYBOUN MARK_MODEL_AS_NO_LONGER_NEEDED GENERATOR_BIG MARK_MODEL_AS_NO_LONGER_NEEDED satchel MARK_MODEL_AS_NO_LONGER_NEEDED NVGOGGLES MARK_MODEL_AS_NO_LONGER_NEEDED CJ_MONEY_BAG MARK_MODEL_AS_NO_LONGER_NEEDED GENERATOR_BIG_d MARK_MODEL_AS_NO_LONGER_NEEDED WMYBOUN MARK_MODEL_AS_NO_LONGER_NEEDED TRIADA MARK_MODEL_AS_NO_LONGER_NEEDED COPBIKE MARK_MODEL_AS_NO_LONGER_NEEDED lapdm1 MARK_MODEL_AS_NO_LONGER_NEEDED bodyarmour MARK_MODEL_AS_NO_LONGER_NEEDED bomb MARK_MODEL_AS_NO_LONGER_NEEDED cellphone MARK_MODEL_AS_NO_LONGER_NEEDED VBFYCRP MARK_MODEL_AS_NO_LONGER_NEEDED VWFYCRP MARK_MODEL_AS_NO_LONGER_NEEDED POLMAV MARK_MODEL_AS_NO_LONGER_NEEDED gun_para MARK_MODEL_AS_NO_LONGER_NEEDED KNIFECUR UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 UNLOAD_SPECIAL_CHARACTER 3 REMOVE_ANIMATION BOMBER REMOVE_CAR_RECORDING 499 REMOVE_CAR_RECORDING 487 REMOVE_CAR_RECORDING 494 REMOVE_CAR_RECORDING 484 RETURN // ********************************** mission cleanup *********************************** mission_cleanup_heist9: disable_mod_garage = 0 IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF SET_WANTED_MULTIPLIER 1.0 SET_RADAR_ZOOM 0 REPEAT 11 v IF DOES_BLIP_EXIST h9_seconds_inv[v] REMOVE_BLIP h9_seconds_inv[v] ENDIF IF DOES_BLIP_EXIST h9_first_inv[v] REMOVE_BLIP h9_first_inv[v] ENDIF ENDREPEAT IF d5_bronze_generator_unlocked = 1 SWITCH_CAR_GENERATOR d5_bronze_generator 101 ENDIF IF d5_silver_generator_unlocked = 1 SWITCH_CAR_GENERATOR d5_silver_generator 101 ENDIF IF d5_gold_generator_unlocked = 1 SWITCH_CAR_GENERATOR d5_gold_generator 101 ENDIF IF NOT IS_CHAR_DEAD h9_zero REMOVE_CHAR_ELEGANTLY h9_zero ENDIF IF NOT IS_CHAR_DEAD h9_biker_a REMOVE_CHAR_ELEGANTLY h9_biker_a ENDIF IF NOT IS_CHAR_DEAD h9_biker_b REMOVE_CHAR_ELEGANTLY h9_biker_b ENDIF SET_ZONE_NO_COPS MEAD FALSE CLEAR_ONSCREEN_TIMER h9_safe_timer IF player_fall_state > 0 player_fall_state = 6 ENDIF para_float_Vy = 5.0 para_flare_Vy = 8.5 //for when player lifts legs up para_freefall_Vz = -30.0 para_freefall_Vy = 32.0 iTerminateAllAmbience = 0 SWITCH_OBJECT_BRAINS CASINO_OBJECT_BRAIN TRUE IF NOT IS_CHAR_DEAD scplayer REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_NIGHTVISION REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_TEARGAS ENDIF IF NOT IS_CHAR_DEAD scplayer DISABLE_PLAYER_SPRINT player1 FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF SET_OBJECT_HEADING h9_door_c 270.0000 SWITCH_ENTRY_EXIT MAFCAS TRUE SWITCH_ENTRY_EXIT MAFCAS2 TRUE SWITCH_ENTRY_EXIT JUMP1 TRUE SWITCH_ENTRY_EXIT JUMP2 TRUE SET_DARKNESS_EFFECT FALSE 0 SET_NIGHT_VISION FALSE flag_player_on_mission = 0 CLEAR_WANTED_LEVEL player1 DELETE_OBJECT h9_door_a REPEAT 4 v IF NOT IS_CHAR_DEAD h9_gang[v] REMOVE_CHAR_ELEGANTLY h9_gang[v] ENDIF IF NOT IS_CHAR_DEAD h9_safe_guards[v] MARK_CHAR_AS_NO_LONGER_NEEDED h9_safe_guards[v] ENDIF IF DOES_BLIP_EXIST h9_gang_blip[v] REMOVE_BLIP h9_gang_blip[v] ENDIF IF DOES_OBJECT_EXIST h9_bag[v] DELETE_OBJECT h9_bag[v] ENDIF ENDREPEAT IF DOES_BLIP_EXIST h9_satchel_blip REMOVE_BLIP h9_satchel_blip ENDIF IF DOES_BLIP_EXIST h9_safe_blip REMOVE_BLIP h9_safe_blip ENDIF IF DOES_BLIP_EXIST h9_swipecard_blip REMOVE_BLIP h9_swipecard_blip ENDIF IF DOES_BLIP_EXIST h9_gas_blip REMOVE_BLIP h9_gas_blip ENDIF IF DOES_BLIP_EXIST h9_casino_blip REMOVE_BLIP h9_casino_blip ENDIF IF DOES_BLIP_EXIST h9_blip_keycode REMOVE_BLIP h9_blip_keycode ENDIF IF DOES_BLIP_EXIST h9_forklift_blip REMOVE_BLIP h9_forklift_blip ENDIF IF DOES_BLIP_EXIST h9_roller_door_blip REMOVE_BLIP h9_roller_door_blip ENDIF IF DOES_BLIP_EXIST h9_para_blip REMOVE_BLIP h9_para_blip ENDIF IF DOES_BLIP_EXIST h9_roof_blip REMOVE_BLIP h9_roof_blip ENDIF IF DOES_BLIP_EXIST h9_elevator REMOVE_BLIP h9_elevator ENDIF IF DOES_BLIP_EXIST h9_safe_house REMOVE_BLIP h9_safe_house ENDIF IF DOES_BLIP_EXIST h9_cash_room_blip REMOVE_BLIP h9_cash_room_blip ENDIF IF DOES_BLIP_EXIST h9_gen_blip_a REMOVE_BLIP h9_gen_blip_a ENDIF IF DOES_BLIP_EXIST h9_gen_blip_b REMOVE_BLIP h9_gen_blip_b ENDIF IF IS_ANY_PICKUP_AT_COORDS 2176.4712 1597.3944 1000.0000 REMOVE_PICKUP h9_health ENDIF IF IS_ANY_PICKUP_AT_COORDS 2144.3389 1640.6660 993.5000 REMOVE_PICKUP h9_health_1 ENDIF IF IS_ANY_PICKUP_AT_COORDS 2146.4871 1622.8053 993.0000 REMOVE_PICKUP h9_satchel_bomb ENDIF IF IS_ANY_PICKUP_AT_COORDS 2267.9888 1699.6678 101.4000 REMOVE_PICKUP h9_para_pickup ENDIF IF IS_ANY_PICKUP_AT_COORDS 2265.8247 1617.0693 94.5000 REMOVE_PICKUP h9_armour_1 ENDIF GET_GAME_TIMER timer_mobile_start // Used to reset the mobile phone timer so it doesn't ring immediately after the mission MARK_MODEL_AS_NO_LONGER_NEEDED FORKLIFT MARK_MODEL_AS_NO_LONGER_NEEDED SECURICA MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF1 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF2 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF3 MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF4 MARK_MODEL_AS_NO_LONGER_NEEDED para_pack MARK_MODEL_AS_NO_LONGER_NEEDED silenced MARK_MODEL_AS_NO_LONGER_NEEDED teargas MARK_MODEL_AS_NO_LONGER_NEEDED WMYBOUN MARK_MODEL_AS_NO_LONGER_NEEDED BMYBOUN MARK_MODEL_AS_NO_LONGER_NEEDED GENERATOR_BIG MARK_MODEL_AS_NO_LONGER_NEEDED satchel MARK_MODEL_AS_NO_LONGER_NEEDED NVGOGGLES MARK_MODEL_AS_NO_LONGER_NEEDED CJ_MONEY_BAG MARK_MODEL_AS_NO_LONGER_NEEDED POLMAV MARK_MODEL_AS_NO_LONGER_NEEDED GENERATOR_BIG_d MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED TRIADA MARK_MODEL_AS_NO_LONGER_NEEDED COPBIKE MARK_MODEL_AS_NO_LONGER_NEEDED lapdm1 MARK_MODEL_AS_NO_LONGER_NEEDED bodyarmour MARK_MODEL_AS_NO_LONGER_NEEDED bomb MARK_MODEL_AS_NO_LONGER_NEEDED cellphone MARK_MODEL_AS_NO_LONGER_NEEDED VBFYCRP MARK_MODEL_AS_NO_LONGER_NEEDED VWFYCRP MARK_MODEL_AS_NO_LONGER_NEEDED mp5lng MARK_MODEL_AS_NO_LONGER_NEEDED KNIFECUR MARK_MODEL_AS_NO_LONGER_NEEDED SWAT MARK_MODEL_AS_NO_LONGER_NEEDED gun_para UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 UNLOAD_SPECIAL_CHARACTER 3 REMOVE_ANIMATION HEIST9 REMOVE_ANIMATION BOMBER REMOVE_ANIMATION FIGHT_B MISSION_HAS_FINISHED SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 RETURN h9_set_camera: CLEAR_PRINTS CLEAR_HELP SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF RETURN h9_restore_camera: CLEAR_PRINTS SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT RETURN h9_fade_out: DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN h9_fade_in: DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN h9_keys: LVAR_INT h9_dummy_car IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_Y IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2179.3540 1673.1804 10.0469 SET_CHAR_HEADING scplayer 285.6208 SET_CAMERA_BEHIND_PLAYER IF NOT IS_CHAR_DEAD scplayer STOP_CHAR_FACIAL_TALK scplayer ENDIF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2176.5828 1600.4617 998.9749 SET_CHAR_HEADING scplayer 179.7799 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F GOSUB h9_set_camera SET_FIXED_CAMERA_POSITION 2144.6770 1614.0612 1001.4688 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2144.4128 1615.0156 1001.3306 JUMP_CUT IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_VELOCITY scplayer 0.0 0.0 0.0 SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2142.6643 1617.3972 999.9680 SET_CHAR_HEADING scplayer 352.2108 TASK_SHOOT_AT_COORD scplayer 2142.6643 1620.3972 1003.0000 1000 ENDIF WAIT 4000 CLEAR_AREA 2143.1243 1618.4272 999.9680 10.0 TRUE GOSUB h9_restore_camera ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B SET_AREA_VISIBLE 1 LOAD_SCENE 2147.7783 1611.9717 1005.1875 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2147.7783 1611.9717 1005.1875 SET_CHAR_HEADING scplayer 182.1343 SET_CAMERA_BEHIND_PLAYER ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K GOSUB h9_fade_out GOSUB h9_set_camera REQUEST_MODEL cellphone LOAD_SPECIAL_CHARACTER 1 zero WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_MODEL_LOADED cellphone WAIT 0 ENDWHILE SET_NIGHT_VISION FALSE SET_DARKNESS_EFFECT TRUE 220 SET_FIXED_CAMERA_POSITION 2219.4563 1587.3701 999.1768 0.0 0.0 0.0 // Keycode Door POINT_CAMERA_AT_POINT 2219.6799 1586.4089 999.3383 JUMP_CUT CREATE_CHAR PEDTYPE_SPECIAL SPECIAL01 2221.1221 1582.9735 998.9675 h9_zero SET_CHAR_AREA_VISIBLE h9_zero 1 SET_CHAR_HEADING h9_zero 4.8671 TASK_USE_MOBILE_PHONE h9_zero TRUE GOSUB h9_fade_in PRINT_NOW ( HM9_46 ) 4000 1 // ZERO : Watch out Carl the powers back online! WAIT 2000 SET_DARKNESS_EFFECT FALSE 0 WAIT 2000 GOSUB h9_restore_camera PRINT_NOW ( HM9_8 ) 5000 1 // ~s~Protect the team while they carry the cash back to the van. h9_msg_displayed = 1 h9_zero_created = 1 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_C IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2144.0215 1612.8673 992.5681 SET_CHAR_HEADING scplayer 0.0000 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_E IF NOT IS_CHAR_DEAD scplayer RESTORE_CLOTHES_STATE BUILD_PLAYER_MODEL player1 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_P h9_mission_status = 6 // Creates forklift CREATE_CAR FORKLIFT 2173.6206 1585.9639 998.9722 h9_forklift SET_VEHICLE_AREA_VISIBLE h9_forklift 1 SET_CAR_HEADING h9_forklift 270.0 CHANGE_CAR_COLOUR h9_forklift CARCOLOUR_TAXIYELLOW CARCOLOUR_TAXIYELLOW MARK_MODEL_AS_NO_LONGER_NEEDED FORKLIFT h9_spawn_forklift = 1 IF NOT IS_CAR_DEAD h9_forklift SET_VEHICLE_AREA_VISIBLE h9_forklift 1 ENDIF SET_AREA_VISIBLE 1 LOAD_SCENE 2256.5513 1704.7623 1.1747 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2220.3704 1574.4839 998.9695 SET_CHAR_HEADING scplayer 180.0000 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_L IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 1962.8406 1060.6331 993.4688 SET_CHAR_HEADING scplayer 346.1133 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_U IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 362.6579 2525.2478 15.6336 SET_CHAR_HEADING scplayer 11.8402 ENDIF h9_mission_status = 18 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_Z IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 346.9504 2539.0254 15.7546 SET_CHAR_HEADING scplayer 2.8895 ENDIF GOSUB h9_set_camera SET_FIXED_CAMERA_POSITION 350.1020 2536.9951 16.9325 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 349.5165 2537.8008 16.8440 JUMP_CUT IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer IDLE_chat PED 1.0 FALSE FALSE FALSE FALSE -1 ENDIF PRINT_NOW ( HE8_ZA ) 4000 1 // Zero, where are you? CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_ZA // Zero, where are you? WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE PRINT_NOW ( HE8_ZB ) 4000 1 // I didn’t mean to tell Berkley, it just kinda came out! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_ZB // I didn’t mean to tell Berkley, it just kinda came out! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE PRINT_NOW ( HE8_ZC ) 4000 1 // Hey, it doesn’t matter, we pulled it off, Caligula’s has been emptied! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_ZC // Hey, it doesn’t matter, we pulled it off, Caligula’s has been emptied! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE PRINT_NOW ( HE8_ZD ) 4000 1 // Hell I’ll drink to that! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_ZD // Hell I’ll drink to that! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 ENDWHILE GOSUB h9_fade_out DELETE_CHAR h9_gang[0] DELETE_CHAR h9_zero DELETE_CAR h9_getaway_car DELETE_OBJECT h9_bag[0] DELETE_OBJECT h9_bag[1] DELETE_OBJECT h9_bag[2] DELETE_OBJECT h9_bag[3] IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 347.1670 2538.4841 15.7535 SET_CHAR_HEADING scplayer 191.9870 ENDIF GOSUB h9_restore_camera GOSUB h9_fade_in ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_O SET_RADAR_ZOOM 0 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_R SET_RADAR_ZOOM 100 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_T LVAR_INT h9_truck REQUEST_MODEL TRIADA REQUEST_MODEL TRIBOSS REQUEST_MODEL SECURICA REQUEST_MODEL COPBIKE REQUEST_MODEL lapdm1 LOAD_SPECIAL_CHARACTER 1 ZERO WHILE NOT HAS_MODEL_LOADED TRIADA OR NOT HAS_MODEL_LOADED TRIBOSS OR NOT HAS_MODEL_LOADED SECURICA OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_MODEL_LOADED COPBIKE OR NOT HAS_MODEL_LOADED lapdm1 WAIT 0 ENDWHILE REQUEST_CAR_RECORDING 494 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 494 WAIT 0 ENDWHILE DELETE_OBJECT h9_door_e CREATE_CAR SECURICA 2220.3894 1577.6233 998.0000 h9_truck SET_VEHICLE_AREA_VISIBLE h9_truck 1 SET_CAR_HEADING h9_truck 179.9804 CREATE_CHAR PEDTYPE_MISSION2 TRIADA 2224.0417 1589.3666 998.9670 h9_gang[0] SET_CHAR_AREA_VISIBLE h9_gang[0] 1 SET_CHAR_HEADING h9_gang[0] 165.2519 CREATE_CHAR PEDTYPE_MISSION2 TRIBOSS 2222.8931 1589.5830 998.9684 h9_gang[1] SET_CHAR_AREA_VISIBLE h9_gang[1] 1 SET_CHAR_HEADING h9_gang[1] 173.9364 CREATE_CHAR PEDTYPE_MISSION2 TRIBOSS 2221.8657 1589.2455 998.9696 h9_gang[2] SET_CHAR_AREA_VISIBLE h9_gang[2] 1 SET_CHAR_HEADING h9_gang[2] 177.0563 CREATE_CHAR PEDTYPE_MISSION2 TRIBOSS 2220.7229 1589.2239 998.9710 h9_gang[3] SET_CHAR_AREA_VISIBLE h9_gang[3] 1 SET_CHAR_HEADING h9_gang[3] 171.7417 GOSUB h9_set_camera SET_FIXED_CAMERA_POSITION 2216.7207 1579.8098 1000.8326 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2217.3821 1580.5382 1000.6542 JUMP_CUT PRINT_NOW ( HE8_UA ) 4000 1 // I unloaded the police bikes! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_UA // I unloaded the police bikes! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_beginning_0 ENDIF ENDWHILE PRINT_NOW ( HE8_UB ) 4000 1 // Everybody in! You two, change into your police uniforms! CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_HE8_UB // Everybody in! You two, change into your police uniforms! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_beginning_0 ENDIF ENDWHILE DELETE_CHAR h9_zero DELETE_CHAR h9_gang[2] DELETE_CHAR h9_gang[3] SET_FIXED_CAMERA_POSITION 2216.9141 1571.6224 999.7229 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2217.2698 1572.5570 999.7267 JUMP_CUT CREATE_CHAR PEDTYPE_MISSION2 lapdm1 2220.7996 1581.1633 998.9764 h9_biker_a SET_CHAR_HEADING h9_biker_a 196.0524 SET_CHAR_AREA_VISIBLE h9_biker_a 1 CREATE_CHAR PEDTYPE_MISSION2 lapdm1 2220.0188 1581.1787 998.9772 h9_biker_b SET_CHAR_HEADING h9_biker_b 74.4668 SET_CHAR_AREA_VISIBLE h9_biker_b 1 IF NOT IS_CAR_DEAD h9_truck AND NOT IS_CHAR_DEAD h9_gang[0] TASK_ENTER_CAR_AS_DRIVER h9_gang[0] h9_truck 8000 ENDIF IF NOT IS_CAR_DEAD h9_truck AND NOT IS_CHAR_DEAD h9_gang[1] TASK_ENTER_CAR_AS_PASSENGER h9_gang[1] h9_truck 8000 0 ENDIF TIMERB = 0 WHILE TIMERB < 4000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_beginning_0 ENDIF ENDWHILE IF NOT IS_CAR_DEAD h9_bike_a AND NOT IS_CHAR_DEAD h9_biker_a TASK_ENTER_CAR_AS_DRIVER h9_biker_a h9_bike_a 4000 ENDIF IF NOT IS_CAR_DEAD h9_bike_b AND NOT IS_CHAR_DEAD h9_biker_b TASK_ENTER_CAR_AS_DRIVER h9_biker_b h9_bike_b 4000 ENDIF TIMERB = 0 WHILE TIMERB < 4000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_beginning_0 ENDIF ENDWHILE SET_FIXED_CAMERA_POSITION 2223.8503 1572.0138 1001.6227 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 2223.3713 1572.8435 1001.3364 JUMP_CUT IF HAS_CAR_RECORDING_BEEN_LOADED 494 AND NOT IS_CAR_DEAD h9_truck START_PLAYBACK_RECORDED_CAR h9_truck 494 ENDIF TIMERB = 0 WHILE TIMERB < 500 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_beginning_0 ENDIF ENDWHILE IF NOT IS_CAR_DEAD h9_bike_a AND NOT IS_CHAR_DEAD h9_biker_a TASK_CAR_DRIVE_TO_COORD h9_biker_a h9_bike_a 2223.4858 1564.4629 1001.0159 10.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH ENDIF IF NOT IS_CAR_DEAD h9_bike_b AND NOT IS_CHAR_DEAD h9_biker_b TASK_CAR_DRIVE_TO_COORD h9_biker_b h9_bike_b 2217.3186 1566.5996 1000.3005 10.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH ENDIF TIMERB = 0 WHILE TIMERB < 2000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO h9_beginning_0 ENDIF ENDWHILE h9_beginning_0: REPEAT 4 v IF DOES_BLIP_EXIST h9_gang_blip[v] REMOVE_BLIP h9_gang_blip[v] DELETE_CHAR h9_gang[v] ENDIF ENDREPEAT IF NOT IS_CAR_DEAD h9_truck DELETE_CAR h9_truck ENDIF IF NOT IS_CAR_DEAD h9_bike_a DELETE_CAR h9_bike_a ENDIF IF NOT IS_CAR_DEAD h9_bike_b DELETE_CAR h9_bike_b ENDIF IF NOT IS_CHAR_DEAD h9_zero DELETE_CHAR h9_zero ENDIF GOSUB h9_restore_camera MARK_MODEL_AS_NO_LONGER_NEEDED TRIADA MARK_MODEL_AS_NO_LONGER_NEEDED TRIBOSS MARK_MODEL_AS_NO_LONGER_NEEDED SWAT UNLOAD_SPECIAL_CHARACTER 2 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_I IF NOT IS_CHAR_DEAD scplayer PLAYER_TAKE_OFF_GOGGLES player1 TRUE ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_W h9_mission_status = 18 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 338.0000 2540.5625 15.7743 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_J REQUEST_MODEL COPBIKE REQUEST_MODEL lapdm1 LOAD_SPECIAL_CHARACTER 1 ZERO WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_MODEL_LOADED COPBIKE OR NOT HAS_MODEL_LOADED lapdm1 OR NOT HAS_MODEL_LOADED lapdm1 WAIT 0 ENDWHILE REQUEST_CAR_RECORDING 494 LOAD_SPECIAL_CHARACTER 1 ZERO WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 494 WAIT 0 ENDWHILE SWITCH_ENTRY_EXIT JUMP1 TRUE SWITCH_ENTRY_EXIT JUMP2 FALSE h9_closing = 1 CLEAR_AREA 2220.3396 1582.0681 998.9764 10.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 SPECIAL01 2220.3396 1582.0681 998.9764 h9_zero SET_CHAR_AREA_VISIBLE h9_zero 1 SET_CHAR_HEADING h9_zero 350.4443 // Cop Bikes CREATE_CAR COPBIKE 2223.6995 1582.7799 998.0000 h9_bike_a SET_VEHICLE_AREA_VISIBLE h9_bike_a 1 SET_CAR_HEADING h9_bike_a 175.8434 LOCK_CAR_DOORS h9_bike_a CARLOCK_LOCKOUT_PLAYER_ONLY FREEZE_CAR_POSITION h9_bike_a TRUE CREATE_CAR COPBIKE 2217.5493 1583.6671 998.0000 h9_bike_b SET_VEHICLE_AREA_VISIBLE h9_bike_b 1 SET_CAR_HEADING h9_bike_b 175.3717 LOCK_CAR_DOORS h9_bike_b CARLOCK_LOCKOUT_PLAYER_ONLY FREEZE_CAR_POSITION h9_bike_b TRUE GOSUB spawn_the_gang IF NOT IS_CAR_DEAD h9_getaway_car SET_CAR_COORDINATES h9_getaway_car 2220.2939 1578.0703 998.9756 SET_CAR_HEADING h9_getaway_car 177.9097 ENDIF IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2216.0305 1618.6458 998.9766 SET_CHAR_HEADING scplayer 269.4771 ENDIF IF NOT IS_CHAR_DEAD h9_gang[0] WARP_CHAR_FROM_CAR_TO_COORD h9_gang[0] 2219.7578 1585.2850 998.9722 CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[0] ENDIF IF NOT IS_CHAR_DEAD h9_gang[1] WARP_CHAR_FROM_CAR_TO_COORD h9_gang[1] 2221.8833 1584.2611 998.9696 CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[1] ENDIF IF NOT IS_CHAR_DEAD h9_gang[2] WARP_CHAR_FROM_CAR_TO_COORD h9_gang[2] 2222.7046 1586.2660 998.9686 CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[2] ENDIF IF NOT IS_CHAR_DEAD h9_gang[3] WARP_CHAR_FROM_CAR_TO_COORD h9_gang[3] 2220.3015 1586.5684 998.9716 CLEAR_CHAR_TASKS_IMMEDIATELY h9_gang[3] ENDIF h9_mission_status = 14 ENDIF RETURN h9_fix_for_failed: LVAR_INT h9_visible_area GET_AREA_VISIBLE h9_visible_area GOSUB h9_fade_out SET_NIGHT_VISION FALSE IF NOT IS_CHAR_DEAD scplayer AND NOT IS_MINIGAME_IN_PROGRESS SET_AREA_VISIBLE 0 LOAD_SCENE 2185.7393 1677.3958 10.0946 CLEAR_AREA 2185.7393 1677.3958 10.0946 10.0 TRUE REQUEST_COLLISION 2185.7393 1677.3958 IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2185.7393 1677.3958 10.0946 ELSE SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 2185.7393 1677.3958 10.0946 ENDIF SET_CHAR_HEADING scplayer 88.4776 SET_CHAR_AREA_VISIBLE scplayer 0 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER ENDIF IF NOT IS_CHAR_DEAD scplayer RESTORE_CLOTHES_STATE BUILD_PLAYER_MODEL player1 h9_clothes_changed = 1 ENDIF GOSUB h9_fade_in RETURN h9_rebuild_the_player: GOSUB h9_fade_out IF NOT IS_CHAR_DEAD scplayer RESTORE_CLOTHES_STATE BUILD_PLAYER_MODEL player1 h9_clothes_changed = 1 ENDIF GOSUB h9_fade_in RETURN h9_load_sample: CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 h9_audio h9_playing = 0 RETURN h9_play_sample: IF HAS_MISSION_AUDIO_LOADED 1 AND h9_playing = 0 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $h9_print ) 20000 1 h9_playing = 1 ENDIF IF HAS_MISSION_AUDIO_FINISHED 1 AND h9_playing = 1 CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT $h9_print h9_playing = 2 ENDIF RETURN } MISSION_START // ######################## // ## // ## Mansion1.sc // ## // ## Home in the hills // ## // ## Simon Lashley // ## // ######################## SCRIPT_NAME mansio1 GOSUB mission_mansion1_START IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_mansion1_FAILED ENDIF GOSUB mission_mansion1_CLEANUP MISSION_END { // decision makers LVAR_INT empty_dm_M1 movement_dm_M1 cover_dm_M1 ganggirl_dm_M1 bar_dm_M1 players_group_dm_M1 // timers LVAR_INT this_frame_time_M1 last_frame_time_M1 time_diff_M1 // general LVAR_INT pointer_M1 players_group_M1 sequence_M1 sequence_progress_M1 goto_blip_M1 current_area_M1 cutscene_flag_M1 task_status_M1 health_pickup_M1 // fail text LVAR_INT fail_text_flag_M1 LVAR_TEXT_LABEL fail_text_M1 // audio stuff LVAR_INT audio_sound_label_M1[10] audio_speaker_M1[10] audio_pointer_M1 LVAR_TEXT_LABEL audio_text_label_M1[10] mission_mansion1_START: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 SET_CHAR_COORDINATES scplayer 2175.4116 1681.5483 9.8203 SET_CHAR_HEADING scplayer 90.0 SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 2233.5 1712.8 10.0 LOAD_MISSION_TEXT MAN_1 SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 iTerminateAllAmbience = 1 // **************************************** START OF INTRO CUTSCENE SET_AREA_VISIBLE 11 LOAD_CUTSCENE BHILL1 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 // **************************************** END OF INTRO CUTSCENE DISPLAY_ZONE_NAMES FALSE SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 LVAR_INT cutscene_plane_M1 LVAR_FLOAT plane_y_M1 // audio START_NEW_SCRIPT start_audio_controller LOAD_SCENE_IN_DIRECTION 2171.1375 1269.3567 32.8078 0.0 REQUEST_MODEL ANDROM WHILE NOT HAS_MODEL_LOADED ANDROM WAIT 0 ENDWHILE SET_CHAR_AREA_VISIBLE scplayer 0 CREATE_CAR ANDROM 2144.0 1600.0 50.0 cutscene_plane_M1 SET_CAR_HEADING cutscene_plane_M1 180.0 SET_RADIO_CHANNEL RS_OFF SET_PLANE_UNDERCARRIAGE_UP cutscene_plane_M1 TRUE FREEZE_CAR_POSITION cutscene_plane_M1 TRUE SET_VEHICLE_AREA_VISIBLE cutscene_plane_M1 0 WARP_CHAR_INTO_CAR scplayer cutscene_plane_M1 cutscene_flag_M1 = 0 FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT SET_TIME_OF_DAY 06 00 SET_FIXED_CAMERA_POSITION 2171.1375 1269.3567 32.8078 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2170.9983 1270.3312 32.9838 JUMP_CUT SET_RESPAWN_POINT_FOR_DURATION_OF_MISSION 1581.3737 1768.9958 9.8203 SWITCH_WIDESCREEN ON SET_HEATHAZE_EFFECT TRUE TIMERA = 0 WHILE TIMERA < 1000 WAIT 0 ENDWHILE SKIP_CUTSCENE_START plane_y_M1 = 1600.0 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS IF NOT IS_CAR_DEAD cutscene_plane_M1 plane_y_M1 -= 1.5 SET_CAR_COORDINATES cutscene_plane_M1 2144.0 plane_y_M1 50.0 ENDIF WAIT 0 ENDWHILE TIMERA = 0 WHILE TIMERA < 9000 IF NOT IS_CAR_DEAD cutscene_plane_M1 plane_y_M1 -= 1.5 SET_CAR_COORDINATES cutscene_plane_M1 2144.0 plane_y_M1 50.0 ENDIF WAIT 0 ENDWHILE cutscene_flag_M1 = 1 SKIP_CUTSCENE_END DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS IF NOT IS_CAR_DEAD cutscene_plane_M1 plane_y_M1 -= 1.5 SET_CAR_COORDINATES cutscene_plane_M1 2144.0 plane_y_M1 50.0 ENDIF WAIT 0 ENDWHILE SET_HEATHAZE_EFFECT FALSE IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1598.9507 -785.3270 350.1654 ELSE SET_CHAR_COORDINATES scplayer 1598.9507 -785.3270 350.1654 ENDIF FREEZE_CHAR_POSITION scplayer TRUE MARK_MODEL_AS_NO_LONGER_NEEDED ANDROM MARK_CAR_AS_NO_LONGER_NEEDED cutscene_plane_M1 //triads REQUEST_MODEL TRIADA REQUEST_MODEL TRIADB // lsv REQUEST_MODEL LSV1 REQUEST_MODEL LSV2 // weapons REQUEST_MODEL M4 // triad REQUEST_MODEL MP5LNG // lsv // objects - plane interior REQUEST_MODEL CARGO_REAR REQUEST_MODEL D9_RAMP REQUEST_MODEL CELLPHONE // parachute stuff - requested to make parachute script run quicker REQUEST_MODEL PARACHUTE REQUEST_MODEL PARA_PACK REQUEST_ANIMATION PARACHUTE STREAM_SCRIPT parachute.sc WHILE NOT HAS_MODEL_LOADED TRIADA OR NOT HAS_MODEL_LOADED TRIADB OR NOT HAS_MODEL_LOADED LSV1 OR NOT HAS_MODEL_LOADED LSV2 OR NOT HAS_MODEL_LOADED M4 OR NOT HAS_MODEL_LOADED MP5LNG WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED CARGO_REAR OR NOT HAS_MODEL_LOADED D9_RAMP OR NOT HAS_MODEL_LOADED CELLPHONE OR NOT HAS_MODEL_LOADED PARACHUTE OR NOT HAS_MODEL_LOADED PARA_PACK OR NOT HAS_ANIMATION_LOADED PARACHUTE WAIT 0 ENDWHILE WHILE NOT HAS_STREAMED_SCRIPT_LOADED parachute.sc WAIT 0 ENDWHILE fail_text_flag_M1 = 0 // default decision makers LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY empty_dm_M1 /* custom decision makers(all based on the empty decision maker - and all used inside the mansion); movement_dm_M1 used by the traids when moving - will make them stop moving and shoot at peds if they are damaged or spot someone they hate cover_dm_M1 used by triads when in cover mode - will make triads respond to a few more events than the movement dm */ // triad custom decision makers LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY movement_dm_M1 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE movement_dm_M1 EVENT_ACQUAINTANCE_PED_HATE TASK_COMPLEX_KILL_PED_ON_FOOT_STAND_STILL 0.0 100.0 0.0 0.0 FALSE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE movement_dm_M1 EVENT_ACQUAINTANCE_PED_HATE TASK_SIMPLE_INFORM_RESPECTED_FRIENDS 0.0 100.0 0.0 0.0 FALSE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE movement_dm_M1 EVENT_DAMAGE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 FALSE TRUE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY cover_dm_M1 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE cover_dm_M1 EVENT_ACQUAINTANCE_PED_HATE TASK_COMPLEX_KILL_PED_ON_FOOT_STAND_STILL 0.0 100.0 0.0 0.0 FALSE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE cover_dm_M1 EVENT_ACQUAINTANCE_PED_HATE TASK_SIMPLE_INFORM_RESPECTED_FRIENDS 0.0 100.0 0.0 0.0 FALSE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE cover_dm_M1 EVENT_DAMAGE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 FALSE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE cover_dm_M1 EVENT_SHOT_FIRED TASK_SIMPLE_LOOK_AT_ENTITY_OR_COORD 0.0 100.0 0.0 0.0 FALSE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE cover_dm_M1 EVENT_SEEN_PANICKED_PED TASK_SIMPLE_LOOK_AT_ENTITY_OR_COORD 10.0 10.0 10.0 10.0 FALSE TRUE // gang girl decision maker LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY ganggirl_dm_M1 // triad & player stuff ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE ganggirl_dm_M1 EVENT_ACQUAINTANCE_PED_HATE TASK_COMPLEX_FLEE_ANY_MEANS 0.0 100.0 0.0 0.0 FALSE TRUE // lsv ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE ganggirl_dm_M1 EVENT_ACQUAINTANCE_PED_DISLIKE TASK_COMPLEX_FLEE_ANY_MEANS 0.0 100.0 0.0 0.0 FALSE TRUE // both ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE ganggirl_dm_M1 EVENT_DAMAGE TASK_COMPLEX_SMART_FLEE_ENTITY 0.0 100.0 0.0 0.0 FALSE TRUE LOAD_GROUP_DECISION_MAKER DM_GROUP_MISSION_NORM players_group_dm_M1 CLEAR_GROUP_DECISION_MAKER_EVENT_RESPONSE players_group_dm_M1 EVENT_DAMAGE ADD_GROUP_DECISION_MAKER_EVENT_RESPONSE players_group_dm_M1 EVENT_DAMAGE TASK_GROUP_KILL_THREATS_BASIC 0.0 100.0 0.0 0.0 FALSE TRUE /* RELATIONSHIPS */ // triads SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 PEDTYPE_MISSION1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_MISSION2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 PEDTYPE_PLAYER1 // los santos vargos SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 PEDTYPE_MISSION1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 PEDTYPE_PLAYER1 // gang girls SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 PEDTYPE_PLAYER1 // player SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION3 PEDTYPE_MISSION1 // triads SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_MISSION3 PEDTYPE_MISSION2 // lsv // players group GET_PLAYER_GROUP player1 players_group_M1 SET_GROUP_DEFAULT_TASK_ALLOCATOR players_group_M1 DEFAULT_TASK_ALLOCATOR_FOLLOW_ANY_MEANS SET_GROUP_DECISION_MAKER players_group_M1 players_group_dm_M1 // FOOL COMPILER LVAR_INT never_run_this_M1 never_run_this_M1 = 0 IF never_run_this_M1 = 1 // chars CREATE_CHAR PEDTYPE_CIVMALE TRIADA 0.0 0.0 0.0 triad_w3_M1[other_triad_M1] CREATE_CHAR PEDTYPE_CIVMALE TRIADA 0.0 0.0 0.0 lsv_guard_M1 CREATE_CHAR PEDTYPE_CIVMALE TRIADA 0.0 0.0 0.0 lsv_outside_M1[pointer_M1] CREATE_CHAR PEDTYPE_CIVMALE TRIADA 0.0 0.0 0.0 lsv_room_M1[pointer_M1] CREATE_CHAR PEDTYPE_CIVMALE TRIADA 0.0 0.0 0.0 lsv_spawn_M1[pointer_M1] CREATE_CHAR PEDTYPE_CIVMALE TRIADA 0.0 0.0 0.0 lsv_girl_M1[pointer_M1] // objects CREATE_OBJECT CARDBOARDBOX2 0.0 0.0 0.0 lsv_jump_box_M1[pointer_M1] //blips ADD_BLIP_FOR_CHAR triad_w3_M1[pointer_M1] triad_w3_blip_M1[pointer_M1] ENDIF SWITCH_AMBIENT_PLANES FALSE //SET_POLICE_IGNORE_PLAYER player1 TRUE // moving this to where the max wanted level is set to zero // ########################################################################################################## // ## // ## OUTSIDE MANSION // ## // ########################################################################################################## LVAR_INT triad_w1_M1[4] triad_w1_status_M1[4] triad_w1_cut_status_M1[2] FORCE_WEATHER_NOW WEATHER_SUNNY_LA SET_TIME_OF_DAY 03 00 // ############################################## // ## // ## PLAYER ON THE PHONE // ## // ############################################## CREATE_OBJECT_NO_OFFSET CARGO_REAR 1595.0 -785.0 350.0 cargo_plane_M1 SET_OBJECT_HEADING cargo_plane_M1 90.0 FREEZE_OBJECT_POSITION cargo_plane_M1 TRUE CREATE_OBJECT_NO_OFFSET D9_RAMP 1595.03 -784.98 348.758 cargo_ramp_M1 SET_OBJECT_HEADING cargo_ramp_M1 90.0 FREEZE_OBJECT_POSITION cargo_ramp_M1 TRUE FREEZE_CHAR_POSITION scplayer FALSE SET_CHAR_COORDINATES scplayer 1594.3934 -784.7317 349.0 SET_CHAR_HEADING scplayer 36.9506 // triad 0 CREATE_CHAR PEDTYPE_MISSION1 TRIADA 1595.3031 -783.4741 349.0 triad_w2_M1[0] SET_CHAR_HEADING triad_w2_M1[0] 205.0 SET_CHAR_AREA_VISIBLE triad_w2_M1[0] 0 GIVE_WEAPON_TO_CHAR triad_w2_M1[0] WEAPONTYPE_M4 30000 SET_CURRENT_CHAR_WEAPON triad_w2_M1[0] WEAPONTYPE_M4 SET_CHAR_NEVER_TARGETTED triad_w2_M1[0] TRUE SET_CHAR_DECISION_MAKER triad_w2_M1[0] empty_dm_M1 SET_CHAR_SIGNAL_AFTER_KILL triad_w2_M1[0] FALSE CREATE_OBJECT para_pack 1595.3031 -783.4741 349.0 fake_parachute_M1[0] TASK_PICK_UP_OBJECT triad_w2_M1[0] fake_parachute_M1[0] -0.11 -0.05 0.0 PED_TORSO HOLD_ORIENTATE_BONE_FULL NULL NULL 0 SET_CHAR_PROOFS triad_w2_M1[0] TRUE FALSE FALSE FALSE FALSE triad_w2_wait_M1[0] = 0 triad_w2_status_M1[0] = 0 // triad 1 CREATE_CHAR PEDTYPE_MISSION1 TRIADB 1596.9702 -786.8875 349.0 triad_w2_M1[1] SET_CHAR_HEADING triad_w2_M1[1] 2.0 SET_CHAR_AREA_VISIBLE triad_w2_M1[1] 0 GIVE_WEAPON_TO_CHAR triad_w2_M1[1] WEAPONTYPE_M4 30000 SET_CURRENT_CHAR_WEAPON triad_w2_M1[1] WEAPONTYPE_M4 SET_CHAR_NEVER_TARGETTED triad_w2_M1[1] TRUE SET_CHAR_DECISION_MAKER triad_w2_M1[1] empty_dm_M1 SET_CHAR_SIGNAL_AFTER_KILL triad_w2_M1[1] FALSE CREATE_OBJECT para_pack 1596.9702 -786.8875 349.0 fake_parachute_M1[1] TASK_PICK_UP_OBJECT triad_w2_M1[1] fake_parachute_M1[1] -0.11 -0.05 0.0 PED_TORSO HOLD_ORIENTATE_BONE_FULL NULL NULL 0 SET_CHAR_PROOFS triad_w2_M1[1] TRUE FALSE FALSE FALSE FALSE triad_w2_wait_M1[1] = 1500 triad_w2_status_M1[1] = 0 // triad 2 CREATE_CHAR PEDTYPE_MISSION1 TRIADB 1598.4480 -782.9297 349.0 triad_w2_M1[2] SET_CHAR_HEADING triad_w2_M1[2] 175.0 SET_CHAR_AREA_VISIBLE triad_w2_M1[2] 0 GIVE_WEAPON_TO_CHAR triad_w2_M1[2] WEAPONTYPE_M4 30000 SET_CURRENT_CHAR_WEAPON triad_w2_M1[2] WEAPONTYPE_M4 SET_CHAR_NEVER_TARGETTED triad_w2_M1[2] TRUE SET_CHAR_DECISION_MAKER triad_w2_M1[2] empty_dm_M1 SET_CHAR_SIGNAL_AFTER_KILL triad_w2_M1[2] FALSE CREATE_OBJECT para_pack 1598.4480 -782.9297 349.0 fake_parachute_M1[2] TASK_PICK_UP_OBJECT triad_w2_M1[2] fake_parachute_M1[2] -0.11 -0.05 0.0 PED_TORSO HOLD_ORIENTATE_BONE_FULL NULL NULL 0 SET_CHAR_PROOFS triad_w2_M1[2] TRUE FALSE FALSE FALSE FALSE triad_w2_wait_M1[2] = 3000 triad_w2_status_M1[2] = 0 // triad 3 CREATE_CHAR PEDTYPE_MISSION1 TRIADA 1599.0344 -786.9792 349.0 triad_w2_M1[3] SET_CHAR_HEADING triad_w2_M1[3] 347.0 SET_CHAR_AREA_VISIBLE triad_w2_M1[3] 0 GIVE_WEAPON_TO_CHAR triad_w2_M1[3] WEAPONTYPE_M4 30000 SET_CURRENT_CHAR_WEAPON triad_w2_M1[3] WEAPONTYPE_M4 SET_CHAR_NEVER_TARGETTED triad_w2_M1[3] TRUE SET_CHAR_DECISION_MAKER triad_w2_M1[3] empty_dm_M1 SET_CHAR_SIGNAL_AFTER_KILL triad_w2_M1[3] FALSE CREATE_OBJECT para_pack 1599.0344 -786.9792 349.0 fake_parachute_M1[3] TASK_PICK_UP_OBJECT triad_w2_M1[3] fake_parachute_M1[3] -0.11 -0.05 0.0 PED_TORSO HOLD_ORIENTATE_BONE_FULL NULL NULL 0 SET_CHAR_PROOFS triad_w2_M1[3] TRUE FALSE FALSE FALSE FALSE triad_w2_wait_M1[3] = 5000 triad_w2_status_M1[3] = 0 IF cutscene_flag_M1 = 0 GOTO mission_mansion1_MAIN_skipped_cutscenes ENDIF cutscene_flag_M1 = 0 LOAD_SCENE 1597.6151 -784.5765 350.0 SET_FIXED_CAMERA_POSITION 1598.9507 -785.3270 350.1654 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1598.3513 -784.5302 350.0890 JUMP_CUT TIMERA = 0 WHILE TIMERA < 500 WAIT 0 ENDWHILE CAMERA_SET_SHAKE_SIMULATION_SIMPLE 1 50000.0 3.0 LVAR_INT current_weapon_M1 has_weapon_M1 // store current weapon GET_CURRENT_CHAR_WEAPON scplayer current_weapon_M1 // remove brassknuckle IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_BRASSKNUCKLE REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_BRASSKNUCKLE has_weapon_M1 = 1 REQUEST_MODEL BRASSKNUCKLE WHILE NOT HAS_MODEL_LOADED BRASSKNUCKLE WAIT 0 ENDWHILE ELSE has_weapon_M1 = 0 ENDIF SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SKIP_CUTSCENE_START OPEN_SEQUENCE_TASK sequence_M1 TASK_STAND_STILL -1 1500 TASK_GO_STRAIGHT_TO_COORD -1 1598.0504 -784.5205 349.0 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 257.9061 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_USE_MOBILE_PHONE -1 TRUE CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK scplayer sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 $audio_text_label_M1[0] = &MKND02A // Hello. audio_sound_label_M1[0] = SOUND_MKND02A audio_speaker_M1[0] = scplayer $audio_text_label_M1[1] = &MKND02B // Hey, what's up, Carl? audio_sound_label_M1[1] = SOUND_MKND02B audio_speaker_M1[1] = -1 $audio_text_label_M1[2] = &MKND02C // Hey Kendl, wassup? audio_sound_label_M1[2] = SOUND_MKND02C audio_speaker_M1[2] = scplayer $audio_text_label_M1[3] = &MKND02D // Nothing - just thought I'd wish you luck. audio_sound_label_M1[3] = SOUND_MKND02D audio_speaker_M1[3] = -1 $audio_text_label_M1[4] = &MKND02E // We're gonna drive back to San Fierro first, audio_sound_label_M1[4] = SOUND_MKND02E audio_speaker_M1[4] = -1 $audio_text_label_M1[5] = &MKND02F // Wanna check things out there before we hook up with you, audio_sound_label_M1[5] = SOUND_MKND02F audio_speaker_M1[5] = -1 $audio_text_label_M1[6] = &MKND02G // Alright cool, you be careful audio_sound_label_M1[6] = SOUND_MKND02G audio_speaker_M1[6] = scplayer $audio_text_label_M1[7] = &MKND02H // I'll be fine, I got Cesar and Madd Dogg to keep me safe audio_sound_label_M1[7] = SOUND_MKND02H audio_speaker_M1[7] = -1 $audio_text_label_M1[8] = &MKND02J // You be careful. audio_sound_label_M1[8] = SOUND_MKND02J audio_speaker_M1[8] = -1 $audio_text_label_M1[9] = &MKND02K // I will. I'll see you in Los Santos audio_sound_label_M1[9] = SOUND_MKND02K audio_speaker_M1[9] = scplayer audio_pointer_M1 = 0 WHILE sequence_progress_M1 = 0 WAIT 0 GET_SEQUENCE_PROGRESS scplayer sequence_progress_M1 ENDWHILE load_sample = SOUND_PED_MOBRING $load_text = &MOBRING START_NEW_SCRIPT audio_load_and_play 0 99 WHILE NOT SLOT_status[preload_slot] = -3 WAIT 0 ENDWHILE SLOT_status[preload_slot] = -4 GET_SEQUENCE_PROGRESS scplayer sequence_progress_M1 WHILE NOT sequence_progress_M1 = 4 WAIT 0 GET_SEQUENCE_PROGRESS scplayer sequence_progress_M1 ENDWHILE WAIT 2250 WHILE audio_pointer_M1 < 10 load_sample = audio_sound_label_M1[audio_pointer_M1] $load_text = $audio_text_label_M1[audio_pointer_M1] IF NOT audio_speaker_M1[audio_pointer_M1] = -1 START_NEW_SCRIPT audio_load_and_play 2 100 audio_speaker_M1[audio_pointer_M1] ELSE START_NEW_SCRIPT audio_load_and_play 0 100 ENDIF WHILE NOT SLOT_status[preload_slot] = -3 WAIT 0 ENDWHILE SLOT_status[preload_slot] = -4 audio_pointer_M1 ++ ENDWHILE WHILE NOT SLOT_status[current_slot] = -4 OR NOT SLOT_status[preload_slot] = -4 WAIT 0 ENDWHILE TASK_USE_MOBILE_PHONE scplayer FALSE WAIT 2000 IF NOT IS_CHAR_DEAD triad_w2_M1[2] TASK_TURN_CHAR_TO_FACE_CHAR scplayer triad_w2_M1[2] TASK_TURN_CHAR_TO_FACE_CHAR triad_w2_M1[2] scplayer ENDIF load_sample = SOUND_MAN1_CA // We're going to go in first, clear the place out so the rest of our outfit can move in $load_text = &MAN1_CA START_NEW_SCRIPT audio_load_and_play 1 100 scplayer WHILE NOT SLOT_status[preload_slot] = -3 WAIT 0 ENDWHILE SLOT_status[preload_slot] = -4 load_sample = SOUND_MAN1_CB // Element of surprise $load_text = &MAN1_CB START_NEW_SCRIPT audio_load_and_play 2 100 triad_w2_M1[2] WHILE NOT SLOT_status[preload_slot] = -3 WAIT 0 ENDWHILE SLOT_status[preload_slot] = -4 load_sample = SOUND_MAN1_CC // $load_text = &MAN1_CC START_NEW_SCRIPT audio_load_and_play 1 100 scplayer WHILE NOT SLOT_status[current_slot] = -4 OR NOT SLOT_status[preload_slot] = -4 WAIT 0 ENDWHILE TIMERA = 0 WHILE TIMERA < 1000 WAIT 0 ENDWHILE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE cutscene_flag_M1 = 1 SKIP_CUTSCENE_END CLEAR_PRINTS DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // give back brassknuckle IF has_weapon_M1 = 1 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_BRASSKNUCKLE 1 MARK_MODEL_AS_NO_LONGER_NEEDED BRASSKNUCKLE ENDIF // give back current weapon SET_CURRENT_CHAR_WEAPON scplayer current_weapon_M1 CAMERA_RESET_NEW_SCRIPTABLES CLEAR_CHAR_TASKS_IMMEDIATELY scplayer MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE // clear audio IF SLOT_status[0] >= 0 SLOT_status[0] = -2 ENDIF IF SLOT_status[0] >= 0 SLOT_status[1] = -2 ENDIF SET_CHAR_COORDINATES scplayer 1096.5624 -825.7372 85.9453 IF cutscene_flag_M1 = 0 GOTO mission_mansion1_MAIN_skipped_cutscenes ENDIF cutscene_flag_M1 = 0 // ############################################## // ## // ## VINEWOOD CUTSCENE // ## // ############################################## // fake target for cutscene ai_target_x = 1347.4069 ai_target_y = -811.7421 ai_target_z = 96.9707 SET_FIXED_CAMERA_POSITION 1385.5676 -810.5753 78.1164 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1385.4976 -809.5790 78.0669 JUMP_CUT triad_w1_status_M1[0] = 0 triad_w1_status_M1[1] = 0 triad_w1_status_M1[2] = 0 triad_w1_status_M1[3] = 0 triad_w1_cut_status_M1[0] = 0 triad_w1_cut_status_M1[1] = 0 LOAD_SCENE 1385.5676 -810.5753 78.1164 TIMERA = 0 WHILE TIMERA < 800 WAIT 0 ENDWHILE DO_FADE 500 FADE_IN CREATE_CHAR PEDTYPE_MISSION1 TRIADA 1485.5360 -818.0389 130.0 triad_w1_M1[0] SET_CHAR_HEADING triad_w1_M1[0] 90.0 SET_CHAR_AREA_VISIBLE triad_w1_M1[0] 0 START_NEW_STREAMED_SCRIPT parachute.sc -1 -25.0 10.0 -3.0 -1.0 5.0 6.5 TRUE triad_w1_M1[0] STREAM_SCRIPT parachute.sc LVAR_INT triad_w1_2_active_M1 SKIP_CUTSCENE_START TIMERA = 0 WHILE TIMERA < 1000 WAIT 0 SET_TIME_OF_DAY 03 00 ENDWHILE TIMERA = 0 triad_w1_2_active_M1 = 0 CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 1385.5676 -810.5753 78.1164 1368.4948 -855.6013 75.1238 12000 TRUE CAMERA_SET_VECTOR_TRACK 1385.4976 -809.5790 78.0669 1369.0121 -854.7825 75.3725 12000 TRUE //WHILE cam_pos_X_M1 > 1368.4948 WHILE TIMERA < 14000 WAIT 0 IF triad_w1_2_active_M1 = 0 AND TIMERA > 3000 CREATE_CHAR PEDTYPE_MISSION1 TRIADB 1485.5360 -818.0389 130.0 triad_w1_M1[1] SET_CHAR_HEADING triad_w1_M1[1] 90.0 SET_CHAR_AREA_VISIBLE triad_w1_M1[1] 0 START_NEW_STREAMED_SCRIPT parachute.sc -1 -25.0 10.0 -3.0 -1.0 5.0 6.5 TRUE triad_w1_M1[1] STREAM_SCRIPT parachute.sc triad_w1_2_active_M1 = 1 ENDIF SET_TIME_OF_DAY 03 00 ENDWHILE DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE cutscene_flag_M1 = 1 SKIP_CUTSCENE_END DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CAMERA_RESET_NEW_SCRIPTABLES RESTORE_CAMERA_JUMPCUT IF cutscene_flag_M1 = 0 GOTO mission_mansion1_MAIN_skipped_cutscenes ENDIF cutscene_flag_M1 = 0 // ############################################## // ## // ## LANDING ON HELIPAD CUTSCENE // ## // ############################################## LVAR_FLOAT cam_X_M1 cam_Y_M1 cam_Z_M1 cam_angle_M1 cam_radius_M1 LVAR_FLOAT cam_L_X_M1 cam_L_Y_M1 cam_L_Z_M1 LVAR_FLOAT new_x_M1 new_y_M1 LVAR_FLOAT cos_angle_M1 sin_angle_M1 cam_angle_M1 = 35.0 cam_radius_M1 = 20.0 cam_Z_M1 = 100.2 // helipad ai_target_x = 1291.2661 ai_target_y = -788.1172 ai_target_z = 96.7736 cam_L_X_M1 = 1291.1534 cam_L_Y_M1 = -788.1339 cam_L_Z_M1 = 95.0 LOAD_SCENE_IN_DIRECTION 1291.2661 -788.1172 96.7736 122.0 REQUEST_MODEL opmans01_cunte REQUEST_MODEL CEhollyhil06 REQUEST_MODEL sunset22_LAwN WHILE NOT HAS_MODEL_LOADED opmans01_cunte OR NOT HAS_MODEL_LOADED CEhollyhil06 OR NOT HAS_MODEL_LOADED sunset22_LAwN WAIT 0 ENDWHILE triad_total_M1 = 2 TIMERA = 0 WHILE TIMERA < 500 WAIT 0 GOSUB mission_mansion1_SUB_remove_triad_w1 ENDWHILE CREATE_FX_SYSTEM smoke_flare 1291.4536 -775.3071 95.5 TRUE signal_flare_M1[0] CREATE_FX_SYSTEM smoke_flare 1303.2109 -788.2426 95.5 TRUE signal_flare_M1[1] CREATE_FX_SYSTEM smoke_flare 1291.1592 -800.4006 95.5 TRUE signal_flare_M1[2] CREATE_CHAR PEDTYPE_MISSION1 TRIADB 1323.1700 -783.7548 117.0 triad_w1_M1[2] //CREATE_CHAR PEDTYPE_MISSION1 TRIADB 1304.3013 -782.1478 109.0 triad_w1_M1[2] SET_CHAR_HEADING triad_w1_M1[2] 90.0 SET_CHAR_AREA_VISIBLE triad_w1_M1[2] 0 GIVE_WEAPON_TO_CHAR triad_w1_M1[2] WEAPONTYPE_M4 30000 START_NEW_STREAMED_SCRIPT parachute.sc -1 -2.0 1.0 -3.0 -1.0 1.5 3.2 TRUE triad_w1_M1[2] STREAM_SCRIPT parachute.sc SET_CHAR_VELOCITY triad_w1_M1[2] 0.0 0.0 2.0 SET_CHAR_DECISION_MAKER triad_w1_M1[2] empty_dm_M1 //124.0 CREATE_CHAR PEDTYPE_MISSION1 TRIADA 1323.4418 -798.6427 120.0 triad_w1_M1[3] //CREATE_CHAR PEDTYPE_MISSION1 TRIADA 1302.0941 -797.1603 107.5 triad_w1_M1[3] SET_CHAR_HEADING triad_w1_M1[3] 90.0 SET_CHAR_AREA_VISIBLE triad_w1_M1[3] 0 GIVE_WEAPON_TO_CHAR triad_w1_M1[3] WEAPONTYPE_M4 30000 START_NEW_STREAMED_SCRIPT parachute.sc -1 -2.0 1.0 -3.0 -1.0 1.0 2.5 TRUE triad_w1_M1[3] STREAM_SCRIPT parachute.sc SET_CHAR_VELOCITY triad_w1_M1[3] 0.0 0.0 2.0 SET_CHAR_DECISION_MAKER triad_w1_M1[3] empty_dm_M1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 GOSUB mission_mansion1_SUB_remove_triad_w1 GOSUB mission_mansion1_SUB_rotate_camera ENDWHILE LVAR_INT signal_flare_M1[3] SKIP_CUTSCENE_START TIMERA = 0 WHILE triad_w1_cut_status_M1[0] < 8 WAIT 0 GOSUB mission_mansion1_SUB_triad_w1_2 GOSUB mission_mansion1_SUB_triad_w1_3 SET_TIME_OF_DAY 03 00 // remove_triads from intro cutscene GOSUB mission_mansion1_SUB_remove_triad_w1 GOSUB mission_mansion1_SUB_rotate_camera ENDWHILE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SKIP_CUTSCENE_END mission_mansion1_MAIN_skipped_cutscenes: DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE MARK_MODEL_AS_NO_LONGER_NEEDED opmans01_cunte MARK_MODEL_AS_NO_LONGER_NEEDED CEhollyhil06 CAMERA_RESET_NEW_SCRIPTABLES RESTORE_CAMERA_JUMPCUT PLAY_FX_SYSTEM signal_flare_M1[0] PLAY_FX_SYSTEM signal_flare_M1[1] PLAY_FX_SYSTEM signal_flare_M1[2] // helipad ai_target_x = 1291.2661 ai_target_y = -788.1172 ai_target_z = 96.7736 // ##################### // ## // ## inside the plane // ## // ##################### LVAR_INT cargo_plane_M1 cargo_ramp_M1 player_box_M1 LVAR_INT fake_player_parachute_M1 mission_mansion1_MAIN_in_plane: REQUEST_MODEL GUN_PARA REQUEST_MODEL CARDBOARDBOX2 LOAD_MISSION_AUDIO 3 SOUND_BANK_CARGO_PLANE WHILE NOT HAS_MODEL_LOADED GUN_PARA OR NOT HAS_MODEL_LOADED CARDBOARDBOX2 OR NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 triad_total_M1 = 4 GOSUB mission_mansion1_SUB_remove_triad_w1 ENDWHILE $audio_text_label_M1[0] = &MAN1_DA // You ever jumped before?. audio_sound_label_M1[0] = SOUND_MAN1_DA audio_speaker_M1[0] = triad_W2_M1[0] $audio_text_label_M1[1] = &MAN1_DB // Nah, You? audio_sound_label_M1[1] = SOUND_MAN1_DB audio_speaker_M1[1] = triad_W2_M1[1] $audio_text_label_M1[2] = &MAN1_DC // Nah? audio_sound_label_M1[2] = SOUND_MAN1_DC audio_speaker_M1[2] = triad_W2_M1[0] $audio_text_label_M1[3] = &MAN1_DD // When we land we're going feel invincible audio_sound_label_M1[3] = SOUND_MAN1_DD audio_speaker_M1[3] = triad_W2_M1[1] $audio_text_label_M1[4] = &MAN1_DE // I AM INVINCIBLE audio_sound_label_M1[4] = SOUND_MAN1_DE audio_speaker_M1[4] = triad_W2_M1[0] $audio_text_label_M1[5] = &MAN1_DF // Hey, wait up audio_sound_label_M1[5] = SOUND_MAN1_DF audio_speaker_M1[5] = triad_W2_M1[1] $audio_text_label_M1[6] = &MAN1_DG // WhaaaHOOOOOO! audio_sound_label_M1[6] = SOUND_MAN1_DG audio_speaker_M1[6] = triad_W2_M1[1] $audio_text_label_M1[7] = &MAN1_DH // WhaaaHEEEEEE! audio_sound_label_M1[7] = SOUND_MAN1_DH audio_speaker_M1[7] = triad_W2_M1[2] $audio_text_label_M1[8] = &MAN1_DJ // WhaaaHOOOOOO! audio_sound_label_M1[8] = SOUND_MAN1_DJ audio_speaker_M1[8] = triad_W2_M1[3] CREATE_OBJECT_NO_OFFSET CARDBOARDBOX2 1601.7587 -785.1198 349.95 player_box_M1 SET_OBJECT_HEADING player_box_M1 90.0 FREEZE_OBJECT_POSITION player_box_M1 TRUE SET_OBJECT_VISIBLE player_box_M1 FALSE SET_OBJECT_COLLISION player_box_M1 FALSE RESTORE_CAMERA_JUMPCUT ATTACH_CHAR_TO_OBJECT scplayer player_box_M1 0.0 0.0 0.0 FACING_FORWARD 40.0 WEAPONTYPE_UNARMED player_status_M1 = 0 LOAD_SCENE 1601.7587 -785.1198 351.0 MARK_CHAR_AS_NO_LONGER_NEEDED lsv_guard_M1 SET_PLAYER_DUCK_BUTTON player1 FALSE SET_PLAYER_JUMP_BUTTON player1 FALSE SET_PLAYER_FIRE_BUTTON player1 FALSE // triads in the plane LVAR_INT triad_w2_M1[4] triad_w2_status_M1[4] triad_w2_wait_M1[4] LVAR_INT triad_w3_M1[3] triad_w3_blip_M1[3] triad_status_w3_M1[3] LVAR_INT fake_parachute_M1[4] SWITCH_WIDESCREEN OFF DISPLAY_RADAR FALSE DISPLAY_HUD FALSE // variables turbulence_length_M1 = 2000 turbulence_status_M1 = 0 cargo_door_X_M1 = 0.0 TIMERA = 0 WHILE TIMERA < 500 WAIT 0 GOSUB mission_mansion1_SUB_remove_triad_w1 ENDWHILE FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_LA SET_PLAYER_CONTROL player1 ON DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 GOSUB mission_mansion1_SUB_remove_triad_w1 ENDWHILE LVAR_INT conversation_flag_M1 TIMERA = 0 conversation_flag_M1 = 0 audio_pointer_M1 = 0 WHILE audio_pointer_M1 < 5 WAIT 0 GOSUB mission_mansion1_SUB_remove_triad_w1 IF TIMERA > 1000 GOSUB mission_mansion1_SUB_open_cargo_door ENDIF SWITCH conversation_flag_M1 CASE 0 IF NOT TIMERA > 800 BREAK ENDIF CASE 1 load_sample = audio_sound_label_M1[audio_pointer_M1] $load_text = $audio_text_label_M1[audio_pointer_M1] START_NEW_SCRIPT audio_load_and_play 2 100 audio_speaker_M1[audio_pointer_M1] conversation_flag_M1 = 2 CASE 2 IF NOT SLOT_status[preload_slot] = -3 BREAK ENDIF SLOT_status[preload_slot] = -4 audio_pointer_M1 ++ conversation_flag_M1 = 1 ENDSWITCH ENDWHILE TIMERA = 0 GET_GAME_TIMER last_frame_time_M1 mission_mansion1_MAIN_in_plane_loop: WAIT 0 // timers GET_GAME_TIMER this_frame_time_M1 time_diff_M1 = this_frame_time_M1 - last_frame_time_M1 last_frame_time_M1 = this_frame_time_M1 // player timer player_timer_M1 += time_diff_M1 // set traid timers pointer_M1 = 0 WHILE pointer_M1 < 4 triad_W2_timer_M1[pointer_M1] += time_diff_M1 pointer_M1 ++ ENDWHILE // controls player for cutscene jumping out of the plane GOSUB mission_mansion1_sub_player_parachute // controls movement and actions of wave 2 triads GOSUB mission_mansion1_SUB_triad_W2_controller // remove_triads from intro cutscene (if still alive depends on how fast player skipped cutscene) GOSUB mission_mansion1_SUB_remove_triad_w1 IF player_status_M1 < 4 SET_TIME_OF_DAY 03 00 ELSE player_status_M1 = 0 SWITCH_ENTRY_EXIT maddogs FALSE SWITCH_ENTRY_EXIT mddogs FALSE CREATE_PICKUP BODYARMOUR PICKUP_ONCE 1292.7 -769.0 95.8 health_pickup_M1 GOTO mission_mansion1_MAIN_outside ENDIF GOTO mission_mansion1_MAIN_in_plane_loop // ###################### // ## // ## outside the plane // ## // ###################### mission_mansion1_MAIN_outside: triad_alive_w2_M1 = 4 lsv_model_M1[0] = LSV1 lsv_model_M1[1] = LSV2 lsv_model_M1[2] = LSV1 lsv_model_M1[3] = LSV2 mission_mansion1_MAIN_outside_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_mansion1_PASSED ENDIF IF fail_text_flag_M1 = 1 GOTO mission_mansion1_FAILED ENDIF // timers GET_GAME_TIMER this_frame_time_M1 time_diff_M1 = this_frame_time_M1 - last_frame_time_M1 last_frame_time_M1 = this_frame_time_M1 // player timer player_timer_M1 += time_diff_M1 // set traid timers pointer_M1 = 0 WHILE pointer_M1 < 3 triad_W2_timer_M1[pointer_M1] += time_diff_M1 triad_timer_w3_M1[pointer_M1] += time_diff_M1 pointer_M1 ++ ENDWHILE triad_W2_timer_M1[3] += time_diff_M1 // lsv timers pointer_M1 = 0 WHILE pointer_M1 < 6 lsv_timer_M1[pointer_M1] += time_diff_M1 pointer_M1 ++ ENDWHILE // player outside controller GOSUB mission_mansion1_SUB_player_outside // wave 2 triads GOSUB mission_mansion1_SUB_triad_W2_controller // wave 3 triads IF player_status_M1 > 5 GOSUB mission_mansion1_SUB_triad_W3_controller ENDIF // lsv guards IF roof_lsv_active_M1 < 2 GOSUB mission_mansion1_SUB_flying_bullets ELSE GOSUB mission_mansion1_SUB_lsv_climbers // 4 guys who climb over the edge ENDIF // used to stop player area check being run more than once a frame checked_player_location_M1 = 0 GET_AREA_VISIBLE current_area_M1 IF NOT current_area_M1 = 0 IF LOCATE_CHAR_ON_FOOT_2D scplayer 1257.9954 -785.4104 5.0 5.0 FALSE current_area_M1 = 0 WHILE current_area_M1 = 0 GET_CHAR_AREA_VISIBLE scplayer current_area_M1 WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // clear mansion of chars (usually just one that enters through the entry exit) CLEAR_AREA_OF_CHARS 1288.0 -772.0 1080.0 1260.5 -787.5 1100.0 GOTO mission_mansion1_main_inside ENDIF ENDIF GOTO mission_mansion1_MAIN_outside_loop // ########################################################################################################## // ## // ## OUTSIDE MANSION SUB's // ## // ########################################################################################################## LVAR_INT player_status_M1 player_timer_M1 // player inside plane parachutes out mission_mansion1_sub_player_parachute: SWITCH player_status_M1 CASE 0 IF TIMERA > 8300 DETACH_CHAR_FROM_CAR scplayer //SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF TASK_GO_TO_COORD_ANY_MEANS scplayer 1584.2921 -784.9141 347.0 PEDMOVE_SPRINT -1 //GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_M4 30 IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_PARACHUTE GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_PARACHUTE 1 ENDIF SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PARACHUTE turbulence_status_M1 = 2 player_status_M1 ++ ENDIF BREAK CASE 1 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER player_status_M1 ++ BREAK CASE 2 IF LOCATE_CHAR_ON_FOOT_2D scplayer 1584.2921 -784.9141 2.75 2.75 FALSE TASK_JUMP scplayer TRUE player_timer_M1 = 0 turbulence_status_M1 = 3 SHAKE_CAM 0 player_status_M1 ++ ENDIF BREAK CASE 3 IF player_timer_M1 > 700 //para_force_chute_open = 1 player_timer_M1 = 0 DISPLAY_ZONE_NAMES TRUE DELETE_OBJECT cargo_plane_M1 DELETE_OBJECT cargo_ramp_M1 DELETE_OBJECT player_box_M1 MARK_MODEL_AS_NO_LONGER_NEEDED CARGO_REAR MARK_MODEL_AS_NO_LONGER_NEEDED D9_RAMP SET_PLAYER_CONTROL player1 ON SET_PLAYER_DUCK_BUTTON player1 TRUE SET_PLAYER_JUMP_BUTTON player1 TRUE SET_PLAYER_FIRE_BUTTON player1 TRUE DISPLAY_RADAR TRUE DISPLAY_HUD TRUE PRINT_NOW MAN1_03 8000 1 ADD_BLIP_FOR_COORD 1290.4906 -788.3314 95.4531 goto_blip_M1 player_status_M1 ++ ENDIF BREAK ENDSWITCH RETURN // ############################################################################################################### // subroutine runs once player has jumped from the plane mission_mansion1_SUB_player_outside: SWITCH player_status_M1 // check for player landing CASE 0 IF player_landed = 2 player_status_M1 = 2 ELSE IF player_landed = 3 player_status_M1 ++ ENDIF ENDIF BREAK // player has pressed triangle CASE 1 IF NOT IS_CHAR_IN_AIR scplayer player_status_M1 ++ ENDIF BREAK // player has landed CASE 2 //SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_M4 location_status_M1 = 0 GOSUB mission_mansion1_SUB_ped_location IF NOT IS_CHAR_DEAD scplayer IF NOT player_location_M1 = -1 IF player_location_M1 < 6 player_status_M1 = 5 ELSE PRINT_NOW MAN1_04 8000 1 player_status_M1 = 4 ENDIF ELSE PRINT_NOW MAN1_04 8000 1 player_status_M1 = 3 ENDIF ENDIF // make triads and lsv able to kill each other pointer_M1 = 0 WHILE pointer_M1 < 4 IF NOT IS_CHAR_DEAD lsv_outside_M1[pointer_M1] SET_CHAR_PROOFS lsv_outside_M1[pointer_M1] FALSE FALSE FALSE FALSE FALSE ENDIF pointer_M1 ++ ENDWHILE BREAK // player not landed on the mansion CASE 3 location_status_M1 = 0 GOSUB mission_mansion1_SUB_ped_location IF NOT player_location_M1 = -1 player_status_M1 ++ ENDIF BREAK // player on mansion but not on the roof CASE 4 location_status_M1 = 0 GOSUB mission_mansion1_SUB_ped_location IF NOT player_location_M1 = -1 AND player_location_M1 < 6 player_status_M1 ++ ENDIF BREAK // player on mansion roof CASE 5 REMOVE_BLIP goto_blip_M1 IF triad_alive_w2_M1 = 0 PRINT_NOW MAN1_06 8000 1 ELSE PRINT_NOW MAN1_05 8000 1 ENDIF CLEAR_WANTED_LEVEL player1 SET_MAX_WANTED_LEVEL 0 SET_POLICE_IGNORE_PLAYER player1 TRUE CREATE_CHAR PEDTYPE_MISSION1 TRIADA 1000.0 -785.0 200.0 triad_w3_M1[0] SET_CHAR_HEADING triad_w3_M1[0] 270.0 SET_CHAR_AREA_VISIBLE triad_w3_M1[0] 0 ADD_BLIP_FOR_CHAR triad_w3_M1[0] triad_w3_blip_M1[0] CHANGE_BLIP_DISPLAY triad_w3_blip_M1[0] BLIP_ONLY SET_BLIP_AS_FRIENDLY triad_w3_blip_M1[0] TRUE GIVE_WEAPON_TO_CHAR triad_w3_M1[0] WEAPONTYPE_M4 30000 SET_CURRENT_CHAR_WEAPON triad_w3_M1[0] WEAPONTYPE_M4 SET_CHAR_NEVER_TARGETTED triad_w3_M1[0] TRUE SET_CHAR_DECISION_MAKER triad_w3_M1[0] empty_dm_M1 triad_status_w3_M1[0] = 0 triad_timer_w3_M1[0] = 0 START_NEW_STREAMED_SCRIPT parachute.sc -1 -26.0 14.0 -3.0 -1.0 5.25 6.75 TRUE triad_w3_M1[0] STREAM_SCRIPT parachute.sc CREATE_CHAR PEDTYPE_MISSION1 TRIADB 1000.0 -770.0 200.0 triad_w3_M1[1] SET_CHAR_HEADING triad_w3_M1[1] 270.0 SET_CHAR_AREA_VISIBLE triad_w3_M1[1] 0 ADD_BLIP_FOR_CHAR triad_w3_M1[1] triad_w3_blip_M1[1] CHANGE_BLIP_DISPLAY triad_w3_blip_M1[1] BLIP_ONLY SET_BLIP_AS_FRIENDLY triad_w3_blip_M1[1] TRUE GIVE_WEAPON_TO_CHAR triad_w3_M1[1] WEAPONTYPE_M4 30000 SET_CURRENT_CHAR_WEAPON triad_w3_M1[1] WEAPONTYPE_M4 SET_CHAR_NEVER_TARGETTED triad_w3_M1[1] TRUE SET_CHAR_DECISION_MAKER triad_w3_M1[1] empty_dm_M1 triad_status_w3_M1[1] = 0 triad_timer_w3_M1[1] = 0 START_NEW_STREAMED_SCRIPT parachute.sc -1 -26.0 14.0 -3.0 -1.0 5.25 6.75 TRUE triad_w3_M1[1] STREAM_SCRIPT parachute.sc CREATE_CHAR PEDTYPE_MISSION1 TRIADA 1000.0 -800.0 200.0 triad_w3_M1[2] SET_CHAR_HEADING triad_w3_M1[2] 270.0 SET_CHAR_AREA_VISIBLE triad_w3_M1[2] 0 ADD_BLIP_FOR_CHAR triad_w3_M1[2] triad_w3_blip_M1[2] CHANGE_BLIP_DISPLAY triad_w3_blip_M1[2] BLIP_ONLY SET_BLIP_AS_FRIENDLY triad_w3_blip_M1[2] TRUE GIVE_WEAPON_TO_CHAR triad_w3_M1[2] WEAPONTYPE_M4 30000 SET_CURRENT_CHAR_WEAPON triad_w3_M1[2] WEAPONTYPE_M4 SET_CHAR_NEVER_TARGETTED triad_w3_M1[2] TRUE SET_CHAR_DECISION_MAKER triad_w3_M1[2] empty_dm_M1 triad_status_w3_M1[2] = 0 triad_timer_w3_M1[2] = 0 START_NEW_STREAMED_SCRIPT parachute.sc -1 -26.0 14.0 -3.0 -1.0 5.25 6.75 TRUE triad_w3_M1[2] STREAM_SCRIPT parachute.sc triad_landed_w3_M1 = 0 IF NOT IS_CHAR_DEAD triad_w2_M1[0] SET_CHAR_HEALTH triad_w2_M1[0] 20 ENDIF IF NOT IS_CHAR_DEAD triad_w2_M1[1] SET_CHAR_HEALTH triad_w2_M1[1] 40 ENDIF IF NOT IS_CHAR_DEAD triad_w2_M1[2] SET_CHAR_HEALTH triad_w2_M1[2] 30 ENDIF IF NOT IS_CHAR_DEAD triad_w2_M1[3] SET_CHAR_HEALTH triad_w2_M1[3] 25 ENDIF player_status_M1 ++ BREAK CASE 6 IF triad_landed_w3_M1 = 3 location_status_M1 = 0 GOSUB mission_mansion1_SUB_ped_location IF player_location_M1 < 6 AND NOT player_location_M1 = -1 PRINT_NOW MAN1_09 8000 1 player_status_M1 = 8 ELSE PRINT_NOW MAN1_10 8000 1 player_status_M1 = 7 ENDIF ENDIF BREAK CASE 7 location_status_M1 = 0 GOSUB mission_mansion1_SUB_ped_location IF player_location_M1 < 6 AND NOT player_location_M1 = -1 PRINT_NOW MAN1_09 8000 1 player_status_M1 = 8 ENDIF BREAK CASE 8 GOSUB mission_mansion1_SUB_add_w3_to_player_group roof_lsv_active_M1 = 3 ADD_BLIP_FOR_COORD 1257.9954 -785.4104 91.0302 goto_blip_M1 SWITCH_ENTRY_EXIT maddogs TRUE player_status_M1 ++ BREAK CASE 9 location_status_M1 = 0 GOSUB mission_mansion1_SUB_ped_location IF player_location_M1 = -1 OR player_location_M1 > 10 GOSUB mission_mansion1_SUB_remove_w3_from_player_group player_status_M1 ++ ENDIF BREAK CASE 10 location_status_M1 = 0 GOSUB mission_mansion1_SUB_ped_location IF NOT player_location_M1 = -1 AND player_location_M1 <= 10 GOSUB mission_mansion1_SUB_add_w3_to_player_group player_status_M1 -- ENDIF BREAK ENDSWITCH RETURN LVAR_INT lsv_guard_M1 LVAR_INT triad_W2_timer_M1[4] triad_timer_w3_M1[3] LVAR_INT triad_total_M1 triad_alive_w2_M1 triad_landed_w3_M1 // -- wave 1 // parachuting triad who plants the flare in front of the camera and shoots the guard mission_mansion1_SUB_triad_w1_2: IF NOT IS_CHAR_DEAD triad_w1_M1[2] SWITCH triad_w1_cut_status_M1[0] CASE 0 IF IS_CHAR_PLAYING_ANIM triad_w1_M1[2] PARA_land triad_w1_status_M1[2] = 1 triad_w1_cut_status_M1[0] ++ ELSE GET_CHAR_COORDINATES triad_w1_M1[2] x y z IF z < 99.0 camera_status_M1 = 1 ENDIF ENDIF BREAK CASE 1 IF NOT IS_CHAR_PLAYING_ANIM triad_w1_M1[2] PARA_land OPEN_SEQUENCE_TASK sequence_M1 TASK_TOGGLE_DUCK -1 TRUE //TASK_GO_STRAIGHT_TO_COORD -1 1291.5193 -779.1869 95.4531 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 1291.5193 -776.0716 95.4531 PEDMOVE_RUN -1 TASK_STAND_STILL -1 400 TASK_STAND_STILL -1 400 TASK_GO_STRAIGHT_TO_COORD -1 1280.9952 -780.3347 95.4610 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 110.0 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK triad_w1_M1[2] sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 triad_w1_cut_status_M1[0] ++ ENDIF BREAK CASE 2 GET_SEQUENCE_PROGRESS triad_w1_M1[2] sequence_progress_M1 IF sequence_progress_M1 = 4 PLAY_FX_SYSTEM signal_flare_M1[0] TIMERA = 0 triad_w1_cut_status_M1[0] ++ ENDIF BREAK CASE 3 IF TIMERA > 1500 triad_w1_cut_status_M1[0] ++ CREATE_CHAR PEDTYPE_MISSION2 LSV1 1281.4127 -785.8877 91.0302 lsv_guard_M1 SET_CHAR_HEADING lsv_guard_M1 90.0 SET_CHAR_AREA_VISIBLE lsv_guard_M1 0 TASK_GO_STRAIGHT_TO_COORD lsv_guard_M1 1268.3365 -785.9549 94.9688 PEDMOVE_WALK -1 SET_CHAR_DECISION_MAKER lsv_guard_M1 empty_dm_M1 GIVE_WEAPON_TO_CHAR lsv_guard_M1 WEAPONTYPE_MP5 1 SET_CURRENT_CHAR_WEAPON lsv_guard_M1 WEAPONTYPE_MP5 ENDIF BREAK CASE 4 IF cam_angle_M1 < 190.0 BREAK ENDIF TIMERA = 0 triad_w1_cut_status_M1[0] ++ CASE 5 IF TIMERA > 2000 IF NOT IS_CHAR_DEAD lsv_guard_M1 GET_CHAR_COORDINATES lsv_guard_M1 x y z ENDIF z += 1.0 TASK_SHOOT_AT_COORD triad_w1_M1[2] x y z 100 TIMERA = 0 triad_w1_cut_status_M1[0] ++ ENDIF BREAK CASE 6 IF TIMERA > 50 IF NOT IS_CHAR_DEAD lsv_guard_M1 EXPLODE_CHAR_HEAD lsv_guard_M1 ENDIF triad_w1_cut_status_M1[0] ++ ENDIF BREAK CASE 7 IF TIMERA > 2000 triad_w1_cut_status_M1[0] ++ ENDIF BREAK ENDSWITCH ELSE MARK_CHAR_AS_NO_LONGER_NEEDED triad_w1_M1[2] triad_w1_cut_status_M1[0] = -1 ENDIF RETURN // ############################################################################################################### // the other parachuting triad that plants flares mission_mansion1_SUB_triad_w1_3: IF NOT IS_CHAR_DEAD triad_w1_M1[3] SWITCH triad_w1_cut_status_M1[1] CASE 0 IF IS_CHAR_PLAYING_ANIM triad_w1_M1[3] PARA_land triad_w1_status_M1[3] = 1 triad_w1_cut_status_M1[1] ++ ENDIF BREAK CASE 1 IF NOT IS_CHAR_PLAYING_ANIM triad_w1_M1[3] PARA_land OPEN_SEQUENCE_TASK sequence_M1 TASK_TOGGLE_DUCK -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 1291.2129 -799.4603 95.4531 PEDMOVE_RUN -1 TASK_STAND_STILL -1 400 TASK_STAND_STILL -1 400 TASK_GO_STRAIGHT_TO_COORD -1 1302.1963 -788.2992 95.4531 PEDMOVE_RUN -1 TASK_STAND_STILL -1 400 TASK_STAND_STILL -1 400 TASK_GO_STRAIGHT_TO_COORD -1 1292.3834 -787.4926 95.4476 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK triad_w1_M1[3] sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 triad_w1_cut_status_M1[1] ++ ENDIF BREAK CASE 2 GET_SEQUENCE_PROGRESS triad_w1_M1[3] sequence_progress_M1 IF sequence_progress_M1 = 3 PLAY_FX_SYSTEM signal_flare_M1[2] triad_w1_cut_status_M1[1] ++ ENDIF BREAK CASE 3 GET_SEQUENCE_PROGRESS triad_w1_M1[3] sequence_progress_M1 IF sequence_progress_M1 = 6 PLAY_FX_SYSTEM signal_flare_M1[1] triad_w1_cut_status_M1[1] ++ ENDIF BREAK ENDSWITCH ELSE MARK_CHAR_AS_NO_LONGER_NEEDED triad_w1_M1[3] triad_w1_cut_status_M1[1] = -1 ENDIF RETURN // ############################################################################################################### // used for removing the first wave of triads used in the cutscenes mission_mansion1_SUB_remove_triad_w1: pointer_M1 = 0 WHILE pointer_M1 < triad_total_M1 IF NOT triad_w1_status_M1[pointer_M1] = -1 IF NOT IS_CHAR_DEAD triad_w1_M1[pointer_M1] SWITCH triad_w1_status_M1[pointer_M1] CASE 0 IF IS_CHAR_PLAYING_ANIM triad_w1_M1[pointer_M1] PARA_land triad_w1_status_M1[pointer_M1] ++ ENDIF BREAK CASE 1 IF NOT IS_CHAR_PLAYING_ANIM triad_w1_M1[pointer_M1] PARA_land TASK_DIE triad_w1_M1[pointer_M1] triad_w1_status_M1[pointer_M1] ++ ENDIF BREAK ENDSWITCH ELSE MARK_CHAR_AS_NO_LONGER_NEEDED triad_w1_M1[pointer_M1] triad_w1_status_M1[pointer_M1] = -1 ENDIF ENDIF pointer_M1 ++ ENDWHILE RETURN // ############################################################################################################### // wave 2 // controls the triads who jump from the plane with the player and land on the roof mission_mansion1_SUB_triad_W2_controller: pointer_M1 = 0 WHILE pointer_M1 < 4 IF NOT triad_w2_status_M1[pointer_M1] = -1 IF NOT IS_CHAR_DEAD triad_w2_M1[pointer_M1] SWITCH triad_w2_status_M1[pointer_M1] // wait for there turn to run CASE 0 IF TIMERA > triad_w2_wait_M1[pointer_M1] IF pointer_M1 = 0 OR pointer_M1 = 2 TASK_GO_TO_COORD_ANY_MEANS triad_w2_M1[pointer_M1] 1585.2931 -786.5728 347.0 PEDMOVE_RUN -1 ELSE IF pointer_M1 = 1 load_sample = SOUND_MAN1_DF $load_text = &MAN1_DF START_NEW_SCRIPT audio_load_and_play 2 100 audio_speaker_M1[audio_pointer_M1] ENDIF TASK_GO_TO_COORD_ANY_MEANS triad_w2_M1[pointer_M1] 1585.3225 -783.2303 347.0 PEDMOVE_RUN -1 ENDIF triad_w2_status_M1[pointer_M1] ++ ENDIF BREAK // jump if near edge CASE 1 GOSUB mission_mansion1_SUB_jumping_audio // IF pointer_M1 = 0 // OR pointer_M1 = 2 // IF LOCATE_CHAR_ON_FOOT_2D triad_w2_M1[pointer_M1] 1585.2931 -786.5728 1.2 1.2 FALSE // TASK_JUMP triad_w2_M1[pointer_M1] TRUE // triad_W2_timer_M1[pointer_M1] = 0 // triad_w2_status_M1[pointer_M1] ++ // ENDIF // ELSE // IF LOCATE_CHAR_ON_FOOT_2D triad_w2_M1[pointer_M1] 1585.3225 -783.2303 1.2 1.2 FALSE // TASK_JUMP triad_w2_M1[pointer_M1] TRUE // triad_W2_timer_M1[pointer_M1] = 0 // triad_w2_status_M1[pointer_M1] ++ // ENDIF // ENDIF BREAK // remove fake parachute and start parachute script CASE 2 IF triad_W2_timer_M1[pointer_M1] > 1200 DROP_OBJECT triad_w2_M1[pointer_M1] FALSE triad_W2_timer_M1[pointer_M1] = 0 GOSUB mission_mansion1_SUB_give_w2_parachute triad_w2_status_M1[pointer_M1] ++ ENDIF BREAK // delete fake parachute (must be done next frame after triad has dropped it) CASE 3 DELETE_OBJECT fake_parachute_M1[pointer_M1] triad_w2_status_M1[pointer_M1] ++ BREAK // wait around 45 seconds before checking if triads have landed (takes them roughly about 55) CASE 4 IF triad_W2_timer_M1[pointer_M1] >= 40000 IF pointer_M1 = 0 GOSUB mission_mansion1_SUB_create_lsv_on_roof ENDIF triad_w2_status_M1[pointer_M1] ++ ENDIF BREAK // check to see if triad is playing landed anim CASE 5 IF IS_CHAR_PLAYING_ANIM triad_w2_M1[pointer_M1] PARA_land triad_w2_status_M1[pointer_M1] ++ ENDIF BREAK // check to see if triad has stopped playing landed anim CASE 6 IF NOT IS_CHAR_PLAYING_ANIM triad_w2_M1[pointer_M1] PARA_land IF roof_lsv_active_M1 < 2 roof_lsv_active_M1 = 2 GOSUB mission_masnion1_SUB_lsv_attack ENDIF SET_CHAR_PROOFS triad_w2_M1[pointer_M1] FALSE FALSE FALSE FALSE FALSE triad_w2_status_M1[pointer_M1] = pointer_M1 + 7 ENDIF BREAK // triad_W2_M1[0] CASE 7 SET_CHAR_ALLOWED_TO_DUCK triad_W2_M1[0] FALSE OPEN_SEQUENCE_TASK sequence_M1 TASK_GO_TO_COORD_ANY_MEANS -1 1289.6985 -771.6924 94.9540 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 100.0 TASK_TOGGLE_DUCK -1 FALSE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 cover_dm_M1 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK triad_W2_M1[0] sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 triad_w2_status_M1[pointer_M1] = 11 BREAK // triad_W2_M1[1] CASE 8 OPEN_SEQUENCE_TASK sequence_M1 TASK_GO_TO_COORD_ANY_MEANS -1 1285.8242 -772.1167 94.9530 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 115.0 TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 cover_dm_M1 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK triad_W2_M1[1] sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 triad_w2_status_M1[pointer_M1] = 11 BREAK // triad_W2_M1[2] CASE 9 SET_CHAR_ALLOWED_TO_DUCK triad_W2_M1[2] FALSE OPEN_SEQUENCE_TASK sequence_M1 TASK_GO_TO_COORD_ANY_MEANS -1 1277.8701 -789.9062 95.4531 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 90.0 TASK_TOGGLE_DUCK -1 FALSE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 cover_dm_M1 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK triad_W2_M1[2] sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 triad_w2_status_M1[pointer_M1] = 11 BREAK // triad_W2_M1[3] CASE 10 OPEN_SEQUENCE_TASK sequence_M1 TASK_GO_TO_COORD_ANY_MEANS -1 1278.6093 -783.3164 95.4531 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 95.0 TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 cover_dm_M1 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK triad_W2_M1[3] sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 triad_w2_status_M1[pointer_M1] = 11 BREAK ENDSWITCH ELSE MARK_CHAR_AS_NO_LONGER_NEEDED triad_w2_M1[pointer_M1] triad_alive_w2_M1 -- triad_w2_status_M1[pointer_M1] = -1 ENDIF ENDIF pointer_M1 ++ ENDWHILE RETURN // ############################################################################################################### // plays the correct dialogue as the triads jump mission_mansion1_SUB_jumping_audio: SWITCH pointer_M1 CASE 0 CASE 2 IF NOT LOCATE_CHAR_ON_FOOT_2D triad_w2_M1[pointer_M1] 1585.2931 -786.5728 1.2 1.2 FALSE BREAK ENDIF IF pointer_M1 = 2 load_sample = SOUND_MAN1_DH // WhaaaHEEEEEE! $load_text = &MAN1_DH START_NEW_SCRIPT audio_load_and_play 2 100 triad_w2_M1[pointer_M1] ENDIF TASK_JUMP triad_w2_M1[pointer_M1] TRUE triad_W2_timer_M1[pointer_M1] = 0 triad_w2_status_M1[pointer_M1] ++ BREAK CASE 1 CASE 3 IF NOT LOCATE_CHAR_ON_FOOT_2D triad_w2_M1[pointer_M1] 1585.3225 -783.2303 1.2 1.2 FALSE BREAK ENDIF IF pointer_M1 = 1 load_sample = SOUND_MAN1_DG // WhaaaHOOOOOO! $load_text = &MAN1_DG ELSE load_sample = SOUND_MAN1_DJ // WhoooHOOOOOO! $load_text = &MAN1_DJ ENDIF START_NEW_SCRIPT audio_load_and_play 2 100 triad_w2_M1[pointer_M1] TASK_JUMP triad_w2_M1[pointer_M1] TRUE triad_W2_timer_M1[pointer_M1] = 0 triad_w2_status_M1[pointer_M1] ++ BREAK ENDSWITCH RETURN // ############################################################################################################### // sets the different parachuting speeds for the triads so the split up a bit mission_mansion1_SUB_give_w2_parachute: SWITCH pointer_M1 CASE 0 START_NEW_STREAMED_SCRIPT parachute.sc -1 -29.0 14.0 -3.0 -1.0 5.25 6.75 TRUE triad_w2_M1[0] STREAM_SCRIPT parachute.sc BREAK CASE 1 START_NEW_STREAMED_SCRIPT parachute.sc -1 -28.0 14.0 -3.0 -1.0 5.25 6.75 TRUE triad_w2_M1[1] STREAM_SCRIPT parachute.sc BREAK CASE 2 START_NEW_STREAMED_SCRIPT parachute.sc -1 -27.0 14.0 -3.0 -1.0 5.25 6.75 TRUE triad_w2_M1[2] STREAM_SCRIPT parachute.sc BREAK CASE 3 START_NEW_STREAMED_SCRIPT parachute.sc -1 -26.0 14.0 -3.0 -1.0 5.25 6.75 TRUE triad_w2_M1[3] STREAM_SCRIPT parachute.sc BREAK ENDSWITCH RETURN // ############################################################################################################### mission_mansion1_SUB_triad_w3_controller: pointer_M1 = 0 WHILE pointer_M1 < 3 IF NOT IS_CHAR_DEAD triad_w3_M1[pointer_M1] SWITCH triad_status_w3_M1[pointer_M1] CASE 0 IF triad_timer_w3_M1[pointer_M1] >= 35000 IF pointer_M1 = 0 location_status_M1 = 0 GOSUB mission_mansion1_SUB_ped_location IF player_location_M1 < 6 AND NOT player_location_M1 = -1 PRINT_NOW MAN1_07 8000 1 ELSE PRINT_NOW MAN1_08 8000 1 ENDIF ENDIF triad_status_w3_M1[pointer_M1] ++ ENDIF BREAK // check to see if triad is playing landed anim CASE 1 IF IS_CHAR_PLAYING_ANIM triad_w3_M1[pointer_M1] PARA_land triad_status_w3_M1[pointer_M1] ++ ENDIF BREAK // check to see if triad has stopped playing landed anim CASE 2 IF NOT IS_CHAR_PLAYING_ANIM triad_w3_M1[pointer_M1] PARA_land triad_landed_w3_M1 ++ triad_status_w3_M1[pointer_M1] = pointer_M1 + 3 ENDIF BREAK CASE 3 OPEN_SEQUENCE_TASK sequence_M1 TASK_GO_TO_COORD_ANY_MEANS -1 1279.6809 -786.5801 95.4531 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 86.7391 TASK_TOGGLE_DUCK -1 FALSE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 cover_dm_M1 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK triad_W3_M1[0] sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 triad_status_w3_M1[pointer_M1] = 6 BREAK CASE 4 OPEN_SEQUENCE_TASK sequence_M1 TASK_GO_TO_COORD_ANY_MEANS -1 1289.5647 -775.1545 95.4476 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 76.6970 TASK_TOGGLE_DUCK -1 FALSE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 cover_dm_M1 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK triad_W3_M1[1] sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 triad_status_w3_M1[pointer_M1] = 6 BREAK CASE 5 OPEN_SEQUENCE_TASK sequence_M1 TASK_GO_TO_COORD_ANY_MEANS -1 1281.6827 -779.4835 95.4531 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 84.4451 TASK_TOGGLE_DUCK -1 FALSE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 cover_dm_M1 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK triad_W3_M1[2] sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 triad_status_w3_M1[pointer_M1] = 6 BREAK ENDSWITCH ELSE fail_text_flag_M1 = 1 $fail_text_M1 = MAN1_11 ENDIF pointer_M1 ++ ENDWHILE RETURN // ############################################################################################################### mission_mansion1_SUB_add_w3_to_player_group: pointer_M1 = 0 WHILE pointer_M1 < 3 IF NOT IS_CHAR_DEAD triad_W3_M1[pointer_M1] CLEAR_CHAR_TASKS_IMMEDIATELY triad_w3_M1[pointer_M1] TASK_STAY_IN_SAME_PLACE triad_w3_M1[pointer_M1] FALSE SET_GROUP_MEMBER players_group_M1 triad_W3_M1[pointer_M1] SET_CHAR_NEVER_LEAVES_GROUP triad_W3_M1[pointer_M1] TRUE ENDIF pointer_M1 ++ ENDWHILE RETURN // ############################################################################################################### mission_mansion1_SUB_remove_w3_from_player_group: pointer_M1 = 0 WHILE pointer_M1 < 3 IF NOT IS_CHAR_DEAD triad_W3_M1[pointer_M1] CLEAR_CHAR_TASKS triad_w3_M1[pointer_M1] TASK_STAY_IN_SAME_PLACE triad_w3_M1[pointer_M1] FALSE REMOVE_CHAR_FROM_GROUP triad_W3_M1[pointer_M1] ENDIF pointer_M1 ++ ENDWHILE RETURN // ############################################################################################################### LVAR_INT lsv_outside_M1[6] lsv_status_M1[6] lsv_model_M1[6] lsv_timer_M1[6] lsv_jump_box_M1[6] LVAR_FLOAT lsv_X_M1 lsv_Y_M1 lsv_Z_M1 lsv_heading_M1 LVAR_INT random_M1 random_pointer_M1 LVAR_INT roof_lsv_active_M1 mission_mansion1_SUB_create_lsv_on_roof: CREATE_CHAR PEDTYPE_MISSION2 LSV1 1268.0691 -783.4940 94.9610 lsv_outside_M1[0] SET_CHAR_HEADING lsv_outside_M1[0] 275.8136 SET_CHAR_HEALTH lsv_outside_M1[0] 200 SET_CHAR_MAX_HEALTH lsv_outside_M1[0] 200 SET_CHAR_DECISION_MAKER lsv_outside_M1[0] empty_dm_M1 GIVE_WEAPON_TO_CHAR lsv_outside_M1[0] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_outside_M1[0] WEAPONTYPE_MP5 SET_CHAR_PROOFS lsv_outside_M1[0] TRUE FALSE FALSE FALSE FALSE SET_CHAR_IS_TARGET_PRIORITY lsv_outside_M1[0] TRUE SET_CHAR_SIGNAL_AFTER_KILL lsv_outside_M1[0] FALSE lsv_status_M1[0] = -2 CREATE_CHAR PEDTYPE_MISSION2 LSV2 1271.1556 -780.8453 94.9663 lsv_outside_M1[1] SET_CHAR_HEADING lsv_outside_M1[1] 254.8986 SET_CHAR_HEALTH lsv_outside_M1[1] 200 SET_CHAR_MAX_HEALTH lsv_outside_M1[1] 200 SET_CHAR_DECISION_MAKER lsv_outside_M1[1] empty_dm_M1 GIVE_WEAPON_TO_CHAR lsv_outside_M1[1] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_outside_M1[1] WEAPONTYPE_MP5 SET_CHAR_PROOFS lsv_outside_M1[1] TRUE FALSE FALSE FALSE FALSE SET_CHAR_IS_TARGET_PRIORITY lsv_outside_M1[1] TRUE SET_CHAR_SIGNAL_AFTER_KILL lsv_outside_M1[1] FALSE lsv_status_M1[1] = -2 CREATE_CHAR PEDTYPE_MISSION2 LSV1 1267.7373 -777.1963 94.9577 lsv_outside_M1[2] SET_CHAR_HEADING lsv_outside_M1[2] 302.1641 SET_CHAR_HEALTH lsv_outside_M1[2] 200 SET_CHAR_MAX_HEALTH lsv_outside_M1[2] 200 SET_CHAR_DECISION_MAKER lsv_outside_M1[2] empty_dm_M1 GIVE_WEAPON_TO_CHAR lsv_outside_M1[2] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_outside_M1[2] WEAPONTYPE_MP5 SET_CHAR_IS_TARGET_PRIORITY lsv_outside_M1[2] TRUE SET_CHAR_SIGNAL_AFTER_KILL lsv_outside_M1[2] FALSE lsv_status_M1[2] = -2 CREATE_CHAR PEDTYPE_MISSION2 LSV2 1272.5341 -774.9141 94.9466 lsv_outside_M1[3] SET_CHAR_HEADING lsv_outside_M1[3] 249.0140 SET_CHAR_HEALTH lsv_outside_M1[3] 200 SET_CHAR_MAX_HEALTH lsv_outside_M1[3] 200 SET_CHAR_DECISION_MAKER lsv_outside_M1[3] empty_dm_M1 GIVE_WEAPON_TO_CHAR lsv_outside_M1[3] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_outside_M1[3] WEAPONTYPE_MP5 SET_CHAR_IS_TARGET_PRIORITY lsv_outside_M1[3] TRUE SET_CHAR_SIGNAL_AFTER_KILL lsv_outside_M1[3] FALSE lsv_status_M1[3] = -2 IF player_status_M1 < 2 SET_CHAR_PROOFS lsv_outside_M1[0] TRUE FALSE FALSE FALSE FALSE SET_CHAR_PROOFS lsv_outside_M1[1] TRUE FALSE FALSE FALSE FALSE SET_CHAR_PROOFS lsv_outside_M1[2] TRUE FALSE FALSE FALSE FALSE SET_CHAR_PROOFS lsv_outside_M1[3] TRUE FALSE FALSE FALSE FALSE ENDIF TIMERB = 3000 roof_lsv_active_M1 = 1 RETURN // ############################################################################################################### mission_masnion1_SUB_lsv_attack: IF NOT IS_CHAR_DEAD lsv_outside_M1[0] SET_CHAR_DECISION_MAKER lsv_outside_M1[0] cover_dm_M1 SET_CHAR_PROOFS lsv_outside_M1[0] FALSE FALSE FALSE FALSE FALSE ENDIF IF NOT IS_CHAR_DEAD lsv_outside_M1[1] SET_CHAR_DECISION_MAKER lsv_outside_M1[1] cover_dm_M1 SET_CHAR_PROOFS lsv_outside_M1[1] FALSE FALSE FALSE FALSE FALSE ENDIF IF NOT IS_CHAR_DEAD lsv_outside_M1[2] SET_CHAR_DECISION_MAKER lsv_outside_M1[2] cover_dm_M1 SET_CHAR_PROOFS lsv_outside_M1[2] FALSE FALSE FALSE FALSE FALSE ENDIF IF NOT IS_CHAR_DEAD lsv_outside_M1[3] SET_CHAR_DECISION_MAKER lsv_outside_M1[3] cover_dm_M1 SET_CHAR_PROOFS lsv_outside_M1[3] FALSE FALSE FALSE FALSE FALSE ENDIF RETURN // ############################################################################################################### mission_mansion1_SUB_lsv_climbers: pointer_M1 = 0 WHILE pointer_M1 < 4 IF NOT IS_CHAR_DEAD lsv_outside_M1[pointer_M1] SWITCH lsv_status_M1[pointer_M1] CASE 0 IF lsv_timer_M1[pointer_M1] > 100 DELETE_OBJECT lsv_jump_box_M1[pointer_M1] lsv_status_M1[pointer_M1] ++ ENDIF BREAK CASE 1 GET_SEQUENCE_PROGRESS lsv_outside_M1[pointer_M1] sequence_progress_M1 IF sequence_progress_M1 >= 2 lsv_status_M1[pointer_M1] ++ ENDIF BREAK CASE 2 GET_CHAR_COORDINATES lsv_outside_M1[pointer_M1] x y z lsv_status_M1[pointer_M1] ++ BREAK ENDSWITCH ELSE IF NOT lsv_status_M1[pointer_M1] = -1 lsv_timer_M1[pointer_M1] = 0 lsv_status_M1[pointer_M1] = -1 ELSE IF lsv_timer_M1[pointer_M1] > 2000 REMOVE_CHAR_ELEGANTLY lsv_outside_M1[pointer_M1] IF roof_lsv_active_M1 < 3 // find out where player is so ped can respawn location_status_M1 = 0 GOSUB mission_mansion1_SUB_ped_location IF NOT player_location_M1 = -1 OR NOT rough_player_location_M1 = 0 // get random hidden position to spawn at random_pointer_M1 = pointer_M1 IF player_location_M1 = -1 IF NOT rough_player_location_M1 = 0 GOSUB mission_mansion1_SUB_rough_roof_position ENDIF ELSE GOSUB mission_mansion1_SUB_random_roof_position ENDIF // box platform that the gang will jump from CREATE_OBJECT cardboardbox2 lsv_X_M1 lsv_Y_M1 93.0 lsv_jump_box_M1[pointer_M1] SET_OBJECT_DYNAMIC lsv_jump_box_M1[pointer_M1] FALSE SET_OBJECT_VISIBLE lsv_jump_box_M1[pointer_M1] FALSE FREEZE_OBJECT_POSITION lsv_jump_box_M1[pointer_M1] TRUE CREATE_CHAR PEDTYPE_MISSION2 lsv_model_M1[pointer_M1] lsv_X_M1 lsv_Y_M1 lsv_Z_M1 lsv_outside_M1[pointer_M1] SET_CHAR_IS_TARGET_PRIORITY lsv_outside_M1[pointer_M1] TRUE SET_CHAR_HEALTH lsv_outside_M1[pointer_M1] 200 SET_CHAR_MAX_HEALTH lsv_outside_M1[pointer_M1] 200 SET_CHAR_HEADING lsv_outside_M1[pointer_M1] lsv_heading_M1 SET_CHAR_DECISION_MAKER lsv_outside_M1[pointer_M1] empty_dm_M1 GIVE_WEAPON_TO_CHAR lsv_outside_M1[pointer_M1] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_outside_M1[pointer_M1] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_outside_M1[pointer_M1] 70 SET_CHAR_SHOOT_RATE lsv_outside_M1[pointer_M1] 55 SET_CHAR_SIGNAL_AFTER_KILL lsv_outside_M1[pointer_M1] FALSE IF pointer_M1 < 4 IF NOT player_location_M1 = -1 OR rough_player_location_M1 > 0 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS lsv_outside_M1[pointer_M1] 0.0 3.5 0.0 x y z OPEN_SEQUENCE_TASK sequence_M1 TASK_CLIMB -1 TRUE TASK_TOGGLE_DUCK -1 TRUE TASK_GO_TO_COORD_ANY_MEANS -1 x y 94.95 PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_SET_CHAR_DECISION_MAKER -1 cover_dm_M1 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK lsv_outside_M1[pointer_M1] sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 lsv_timer_M1[pointer_M1] = 0 lsv_status_M1[pointer_M1] = 0 // jumping onto the roof ELSE TASK_STAY_IN_SAME_PLACE lsv_outside_M1[pointer_M1] TRUE TASK_SET_CHAR_DECISION_MAKER lsv_outside_M1[pointer_M1] cover_dm_M1 lsv_timer_M1[pointer_M1] = 0 lsv_status_M1[pointer_M1] = 3 ENDIF ELSE // task kill player ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF pointer_M1 ++ ENDWHILE RETURN // ############################################################################################################### // chooses a random position for the lsv to spawn at ( the random places will depend on the location of the player) mission_mansion1_SUB_random_roof_position: SWITCH player_location_M1 CASE 0 GENERATE_RANDOM_INT_IN_RANGE 0 5 random_M1 BREAK CASE 1 CASE 10 GENERATE_RANDOM_INT_IN_RANGE 2 5 random_M1 BREAK CASE 2 CASE 9 GENERATE_RANDOM_INT_IN_RANGE 3 5 random_M1 BREAK CASE 3 CASE 6 GENERATE_RANDOM_INT_IN_RANGE 0 3 random_M1 BREAK CASE 4 CASE 7 GENERATE_RANDOM_INT_IN_RANGE 0 2 random_M1 BREAK CASE 5 CASE 8 GENERATE_RANDOM_INT_IN_RANGE 0 4 random_M1 IF random_M1 > 1 random_M1 ++ ENDIF BREAK DEFAULT random_M1 = 5 BREAK ENDSWITCH IF random_M1 < 5 // spawn on side random_pointer_M1 *= 5 random_M1 += random_pointer_M1 lsv_Z_M1 = 94.0 ELSE // spawn on roof random_M1 *= 4 random_M1 += random_pointer_M1 lsv_Z_M1 = 95.0 ENDIF GOSUB mission_mansion1_SUB_spawn_locations RETURN // ############################################################################################################### mission_mansion1_SUB_rough_roof_position: SWITCH rough_player_location_M1 CASE 1 GENERATE_RANDOM_INT_IN_RANGE 0 5 random_M1 BREAK CASE 2 GENERATE_RANDOM_INT_IN_RANGE 3 5 random_M1 BREAK CASE 3 GENERATE_RANDOM_INT_IN_RANGE 2 5 random_M1 BREAK CASE 4 GENERATE_RANDOM_INT_IN_RANGE 0 2 random_M1 BREAK CASE 5 GENERATE_RANDOM_INT_IN_RANGE 0 3 random_M1 BREAK CASE -1 random_M1 = 5 BREAK ENDSWITCH IF random_M1 < 5 // spawn on side random_pointer_M1 *= 5 random_M1 += random_pointer_M1 lsv_Z_M1 = 94.0 ELSE // spawn on roof random_M1 *= 4 random_M1 += random_pointer_M1 lsv_Z_M1 = 95.0 ENDIF GOSUB mission_mansion1_SUB_spawn_locations RETURN // ############################################################################################################### mission_mansion1_SUB_spawn_locations: SWITCH random_M1 CASE 0 lsv_X_M1 = 1262.0 lsv_Y_M1 = -770.5 lsv_heading_M1 = 180.0 BREAK CASE 1 lsv_X_M1 = 1266.0 lsv_Y_M1 = -770.5 lsv_heading_M1 = 180.0 BREAK CASE 2 lsv_X_M1 = 1257.0 lsv_Y_M1 = -784.0 lsv_heading_M1 = 270.0 BREAK CASE 3 lsv_X_M1 = 1269.0 lsv_Y_M1 = -789.5 lsv_heading_M1 = 0.0 BREAK CASE 4 lsv_X_M1 = 1265.0 lsv_Y_M1 = -789.5 lsv_heading_M1 = 0.0 BREAK CASE 5 lsv_X_M1 = 1267.0 lsv_Y_M1 = -770.5 lsv_heading_M1 = 180.0 BREAK CASE 6 lsv_X_M1 = 1263.0 lsv_Y_M1 = -770.5 lsv_heading_M1 = 180.0 BREAK CASE 7 lsv_X_M1 = 1257.0 lsv_Y_M1 = -781.0 lsv_heading_M1 = 270.0 BREAK CASE 8 lsv_X_M1 = 1264.0 lsv_Y_M1 = -789.5 lsv_heading_M1 = 0.0 BREAK CASE 9 lsv_X_M1 = 1268.0 lsv_Y_M1 = -789.5 lsv_heading_M1 = 0.0 BREAK CASE 10 lsv_X_M1 = 1264.0 lsv_Y_M1 = -770.5 lsv_heading_M1 = 180.0 BREAK CASE 11 lsv_X_M1 = 1268.0 lsv_Y_M1 = -770.5 lsv_heading_M1 = 180.0 BREAK CASE 12 lsv_X_M1 = 1257.0 lsv_Y_M1 = -778.0 lsv_heading_M1 = 270.0 BREAK CASE 13 lsv_X_M1 = 1267.0 lsv_Y_M1 = -789.5 lsv_heading_M1 = 0.0 BREAK CASE 14 lsv_X_M1 = 1263.0 lsv_Y_M1 = -789.5 lsv_heading_M1 = 0.0 BREAK CASE 15 lsv_X_M1 = 1269.0 lsv_Y_M1 = -770.5 lsv_heading_M1 = 180.0 BREAK CASE 16 lsv_X_M1 = 1265.0 lsv_Y_M1 = -770.5 lsv_heading_M1 = 180.0 BREAK CASE 17 lsv_X_M1 = 1257.0 lsv_Y_M1 = -775.0 lsv_heading_M1 = 270.0 BREAK CASE 18 lsv_X_M1 = 1262.0 lsv_Y_M1 = -789.5 lsv_heading_M1 = 0.0 BREAK CASE 19 lsv_X_M1 = 1266.0 lsv_Y_M1 = -789.5 lsv_heading_M1 = 0.0 BREAK // on roof spawn areas CASE 20 lsv_X_M1 = 1268.0691 lsv_Y_M1 = -783.4940 lsv_heading_M1 = 270.0 BREAK CASE 21 lsv_X_M1 = 1271.1556 lsv_Y_M1 = -780.8453 lsv_heading_M1 = 270.0 BREAK CASE 22 lsv_X_M1 = 1267.7373 lsv_Y_M1 = -777.1963 lsv_heading_M1 = 270.0 BREAK CASE 23 lsv_X_M1 = 1272.5341 lsv_Y_M1 = -774.9141 lsv_heading_M1 = 270.0 BREAK ENDSWITCH RETURN // ############################################################################################################### LVAR_INT location_M1 location_status_M1 location_Z_status_M1 LVAR_INT player_location_M1 checked_player_location_M1 rough_player_location_M1 LVAR_INT lsv_location_M1 lsv_id_M1 LVAR_FLOAT locate_X_M1 locate_Y_M1 locate_Z_M1 // makes bullets fly past the player mission_mansion1_SUB_flying_bullets: IF TIMERB > 700 GET_CHAR_COORDINATES scplayer player_x player_y player_z GET_DISTANCE_BETWEEN_COORDS_2D 1269.6676 -778.8566 player_x player_y distance IF player_z > 105.0 AND distance > 65.0 AND distance < 130.0 GENERATE_RANDOM_FLOAT_IN_RANGE -6.0 6.1 x IF x > 0.0 x += 1.5 ELSE x -= 1.5 ENDIF GENERATE_RANDOM_FLOAT_IN_RANGE -6.0 6.1 z IF z > 0.0 z += 1.5 ELSE z -= 1.5 ENDIF GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer x -10.0 z player_x player_y player_z FIRE_SINGLE_BULLET 1269.6676 -778.8566 94.9557 player_x player_y player_z 0 ENDIF GENERATE_RANDOM_INT_IN_RANGE 100 401 random_M1 TIMERB = random_M1 ENDIF RETURN // script is used for finding the location of a ped on the mansion mission_mansion1_SUB_ped_location: IF location_status_M1 = 0 IF checked_player_location_M1 = 0 player_location_M1 = -1 rough_player_location_M1 = 0 GET_CHAR_COORDINATES scplayer locate_X_M1 locate_Y_M1 locate_Z_M1 ELSE RETURN // player has already been checked this frame so script knows where he is ENDIF ELSE lsv_location_M1 = -1 GET_CHAR_COORDINATES lsv_outside_M1[lsv_id_M1] locate_X_M1 locate_Y_M1 locate_Z_M1 ENDIF IF locate_Z_M1 > 94.5 location_Z_status_M1 = 0 ELSE IF locate_Z_M1 > 90.5 location_Z_status_M1 = 1 ELSE IF locate_Z_M1 > 86.0 location_Z_status_M1 = 2 ELSE location_Z_status_M1 = 3 ENDIF ENDIF ENDIF SWITCH location_Z_status_M1 // mansion roof CASE 0 IF locate_Y_M1 > -802.2 AND locate_Y_M1 < -766.75 AND locate_X_M1 > 1257.9 AND locate_X_M1 < 1304.4 IF locate_Y_M1 > -774.2 IF locate_X_M1 < 1262.7 location_M1 = 2 ELSE location_M1 = 1 ENDIF ELSE IF locate_Y_M1 < -785.85 IF locate_X_M1 < 1262.7 location_M1 = 4 ELSE location_M1 = 3 ENDIF ELSE IF locate_X_M1 < 1262.7 location_M1 = 5 ELSE location_M1 = 0 ENDIF ENDIF ENDIF ELSE location_M1 = -1 // not on mansion ENDIF BREAK // balcony CASE 1 IF locate_Y_M1 > -793.0 AND locate_Y_M1 < -767.6 AND locate_X_M1 > 1251.4 AND locate_X_M1 < 1295.7 IF locate_Y_M1 > -776.25 IF locate_X_M1 < 1265.9 location_M1 = 9 ELSE location_M1 = 10 ENDIF ELSE IF locate_Y_M1 < -783.5 IF locate_X_M1 < 1265.9 location_M1 = 7 ELSE location_M1 = 6 ENDIF ELSE location_M1 = 8 ENDIF ENDIF ELSE location_M1 = -1 // not on mansion ENDIF BREAK // swimming pool area CASE 2 IF locate_Y_M1 > -814.0 AND locate_Y_M1 < -785.0 AND locate_X_M1 > 1251.8 AND locate_X_M1 < 1303.5 IF locate_Y_M1 > -793.6 IF locate_X_M1 > 1298.8 location_M1 = 13 ELSE IF locate_X_M1 > 1259.4 location_M1 = 12 ELSE location_M1 = 11 ENDIF ENDIF ELSE IF locate_Y_M1 > -807.1 IF locate_X_M1 > 1298.8 location_M1 = 16 ELSE IF locate_X_M1 > 1259.4 location_M1 = 15 ELSE location_M1 = 14 ENDIF ENDIF ELSE IF locate_X_M1 > 1298.8 location_M1 = 19 ELSE IF locate_X_M1 > 1259.4 location_M1 = 18 ELSE location_M1 = 17 ENDIF ENDIF ENDIF ENDIF ELSE location_M1 = -1 // not on mansion ENDIF BREAK // garage area CASE 3 IF locate_Y_M1 > -834.35 AND locate_Y_M1 < -787.3 AND locate_X_M1 > 1239.9 AND locate_X_M1 < 1308.4 IF locate_Y_M1 < -804.2511 IF locate_X_M1 < 1254.75 location_M1 = 23 ELSE IF locate_X_M1 < 1298.6 location_M1 = 24 ELSE location_M1 = 25 ENDIF ENDIF ELSE IF locate_X_M1 < 1254.75 location_M1 = 20 ELSE IF locate_X_M1 < 1298.6 location_M1 = 21 ELSE location_M1 = 22 ENDIF ENDIF ENDIF ELSE location_M1 = -1 // not on mansion ENDIF BREAK ENDSWITCH // get a rough idea where he might be IF location_M1 = -1 IF locate_Z_M1 > 91.5 rough_player_location_M1 = 0 IF locate_X_M1 > 1279.3507 rough_player_location_M1 += 1 ENDIF IF locate_Y_M1 > -766.75 rough_player_location_M1 += 2 ENDIF IF locate_Y_M1 < -802.2 rough_player_location_M1 += 4 ENDIF ELSE rough_player_location_M1 = -1 // just spawn on the roof? ENDIF ENDIF IF location_status_M1 = 0 // player player_location_M1 = location_M1 checked_player_location_M1 = 1 ELSE lsv_location_M1 = location_M1 ENDIF RETURN // ############################################################################################################### LVAR_INT camera_status_M1 mission_mansion1_SUB_rotate_camera: SWITCH camera_status_M1 CASE 1 IF cam_angle_M1 < 190.0 cam_angle_M1 += 0.34 cam_Z_M1 -= 0.006 cam_L_Y_M1 += 0.01 cam_radius_M1 += 0.01 ENDIF BREAK ENDSWITCH COS cam_angle_M1 cos_angle_M1 SIN cam_angle_M1 sin_angle_M1 new_x_M1 = cam_radius_M1 * cos_angle_M1 new_y_M1 = cam_radius_M1 * sin_angle_M1 cam_X_M1 = cam_L_X_M1 + new_x_M1 cam_Y_M1 = cam_L_Y_M1 + new_y_M1 SET_FIXED_CAMERA_POSITION cam_X_M1 cam_Y_M1 cam_Z_M1 0.0 0.0 0.0 POINT_CAMERA_AT_POINT cam_L_X_M1 cam_L_Y_M1 cam_L_Z_M1 JUMP_CUT RETURN // ############################################################################################################### // opens the cargo door of the plane LVAR_INT cargo_door_status_M1 LVAR_FLOAT cargo_door_X_M1 mission_mansion1_SUB_open_cargo_door: SWITCH cargo_door_status_M1 CASE 0 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT cargo_ramp_M1 SOUND_CARGO_PLANE_DOOR_START cargo_door_status_M1 ++ CASE 1 IF cargo_door_X_M1 > -20.0 cargo_door_X_M1 += -0.1 SET_OBJECT_ROTATION cargo_ramp_M1 cargo_door_X_M1 0.0 90.0 ELSE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT cargo_ramp_M1 SOUND_CARGO_PLANE_DOOR_STOP cargo_door_status_M1 ++ ENDIF ENDSWITCH RETURN // ############################################################################################################### // plane turbulence for intro cutscene LVAR_INT turbulence_status_M1 turbulence_length_M1 turbulence_limit_M1 turbulence_strength_M1 rumble_strength_M1 mission_mansion1_plane_turbulence: SWITCH turbulence_status_M1 CASE 0 IF TIMERB >= turbulence_length_M1 GENERATE_RANDOM_INT_IN_RANGE 4000 6001 turbulence_limit_M1 TIMERB = 0 turbulence_status_M1 ++ ELSE SHAKE_CAM turbulence_strength_M1 ENDIF BREAK CASE 1 IF TIMERB >= turbulence_limit_M1 GENERATE_RANDOM_INT_IN_RANGE 40 51 turbulence_strength_M1 SHAKE_CAM turbulence_strength_M1 GENERATE_RANDOM_INT_IN_RANGE 2500 5001 turbulence_length_M1 rumble_strength_M1 = turbulence_strength_M1 * 2 rumble_strength_M1 += 150 SHAKE_PAD PAD1 turbulence_length_M1 rumble_strength_M1 TIMERB = 0 turbulence_status_M1 -- ELSE SHAKE_CAM 5 ENDIF BREAK CASE 2 SHAKE_CAM 20 BREAK ENDSWITCH RETURN // ############################################################################################################### mission_mansion1_SUB_cleanup_outside: KILL_FX_SYSTEM signal_flare_M1[0] KILL_FX_SYSTEM signal_flare_M1[1] KILL_FX_SYSTEM signal_flare_M1[2] REMOVE_BLIP goto_blip_M1 REMOVE_BLIP triad_w3_blip_M1[0] REMOVE_BLIP triad_w3_blip_M1[1] REMOVE_BLIP triad_w3_blip_M1[2] REMOVE_PICKUP health_pickup_M1 pointer_M1 = 0 WHILE pointer_M1 < 4 MARK_CHAR_AS_NO_LONGER_NEEDED triad_w1_M1[pointer_M1] MARK_CHAR_AS_NO_LONGER_NEEDED triad_w2_M1[pointer_M1] MARK_CHAR_AS_NO_LONGER_NEEDED lsv_outside_M1[pointer_M1] pointer_M1 ++ ENDWHILE MARK_CHAR_AS_NO_LONGER_NEEDED lsv_guard_M1 MARK_MODEL_AS_NO_LONGER_NEEDED PARACHUTE MARK_MODEL_AS_NO_LONGER_NEEDED PARA_PACK MARK_MODEL_AS_NO_LONGER_NEEDED GUN_PARA REMOVE_ANIMATION PARACHUTE MARK_MODEL_AS_NO_LONGER_NEEDED CARGO_REAR MARK_MODEL_AS_NO_LONGER_NEEDED D9_RAMP MARK_MODEL_AS_NO_LONGER_NEEDED CARDBOARDBOX2 MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE RETURN // ########################################################################################################## // ## // ## INSIDE MANSION // ## // ########################################################################################################## LVAR_INT lsv_inside_M1[20] lsv_inside_status_M1[20] lsv_inside_timer_M1[20] LVAR_INT lsv_room_M1[10] lsv_room_status_M1[10] lsv_room_timer_M1[10] LVAR_INT lsv_girl_M1[4] lsv_girl_status_M1[4] lsv_girl_timer_M1[4] LVAR_INT big_poppa_M1 big_poppa_blip_M1 big_poppa_active_M1 LVAR_INT lsv_spawn_sound_M1[4] lsv_spawn_sample_M1 LVAR_TEXT_LABEL lsv_spawn_text_M1[4] mission_mansion1_MAIN_inside: // remove triads from the players group GOSUB mission_mansion1_SUB_remove_w3_from_player_group // cleanup stuff from outside (mainly to free up memory) GOSUB mission_mansion1_SUB_cleanup_outside REMOVE_DECISION_MAKER players_group_dm_M1 // stop player getting out the mansion until the mission is passed DISABLE_ALL_ENTRY_EXITS TRUE LOAD_SCENE 1267.4294 -781.5715 1090.8906 // people in bar once chasing big poppa LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY bar_dm_M1 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE bar_dm_M1 EVENT_DAMAGE TASK_COMPLEX_SMART_FLEE_ENTITY 0.0 100.0 100.0 0.0 FALSE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE bar_dm_M1 EVENT_SHOT_FIRED TASK_SIMPLE_DUCK 0.0 100.0 100.0 0.0 FALSE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE bar_dm_M1 EVENT_GUN_AIMED_AT TASK_SIMPLE_HANDS_UP 0.0 100.0 0.0 0.0 FALSE TRUE REQUEST_MODEL LSV3 REQUEST_MODEL BFYST REQUEST_MODEL GANGRL3 WHILE NOT HAS_MODEL_LOADED LSV3 OR NOT HAS_MODEL_LOADED BFYST OR NOT HAS_MODEL_LOADED GANGRL3 WAIT 0 ENDWHILE CREATE_PICKUP HEALTH PICKUP_ONCE 1278.8804 -810.5082 1086.0 health_pickup_M1 SET_FIXED_CAMERA_POSITION 1266.8071 -782.0668 1092.6021 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1267.7859 -781.8895 1092.4996 JUMP_CUT SWITCH_WIDESCREEN ON // player SET_PLAYER_CONTROL player1 OFF SET_CHAR_COORDINATES scplayer 1267.7850 -781.2607 1090.8984 SET_CHAR_HEADING scplayer 185.3630 player_status_M1 = 0 // triads IF NOT IS_CHAR_DEAD triad_w3_M1[0] SET_CHAR_COORDINATES triad_w3_M1[0] 1263.0872 -782.9864 1090.8984 REMOVE_BLIP triad_w3_blip_M1[0] ELSE CREATE_CHAR PEDTYPE_MISSION1 TRIADA 1263.0872 -782.9864 1090.8984 triad_w3_M1[0] GIVE_WEAPON_TO_CHAR triad_w3_M1[0] WEAPONTYPE_M4 30000 SET_CURRENT_CHAR_WEAPON triad_w3_M1[0] WEAPONTYPE_M4 SET_CHAR_NEVER_TARGETTED triad_w3_M1[0] TRUE ENDIF SET_CHAR_HEADING triad_w3_M1[0] 269.9343 SET_CHAR_HEALTH triad_w3_M1[0] 300 SET_CHAR_AREA_VISIBLE triad_w3_M1[0] 5 SET_CHAR_DECISION_MAKER triad_w3_M1[0] empty_dm_M1 SET_CHAR_SIGNAL_AFTER_KILL triad_w3_M1[0] FALSE SET_CHAR_ACCURACY triad_w3_M1[0] 75 SET_CHAR_SHOOT_RATE triad_w3_M1[0] 60 triad_model_w3_M1[0] = TRIADA triad_status_w3_M1[0] = 0 IF NOT IS_CHAR_DEAD triad_w3_M1[1] SET_CHAR_COORDINATES triad_w3_M1[1] 1261.9670 -778.3527 1090.8984 REMOVE_BLIP triad_w3_blip_M1[1] ELSE CREATE_CHAR PEDTYPE_MISSION1 TRIADB 1261.9670 -778.3527 1090.8984 triad_w3_M1[1] GIVE_WEAPON_TO_CHAR triad_w3_M1[1] WEAPONTYPE_M4 30000 SET_CURRENT_CHAR_WEAPON triad_w3_M1[1] WEAPONTYPE_M4 SET_CHAR_NEVER_TARGETTED triad_w3_M1[1] TRUE ENDIF SET_CHAR_HEADING triad_w3_M1[1] 258.1764 SET_CHAR_HEALTH triad_w3_M1[1] 300 SET_CHAR_AREA_VISIBLE triad_w3_M1[1] 5 SET_CHAR_DECISION_MAKER triad_w3_M1[1] empty_dm_M1 SET_CHAR_SIGNAL_AFTER_KILL triad_w3_M1[1] FALSE SET_CHAR_ACCURACY triad_w3_M1[1] 75 SET_CHAR_SHOOT_RATE triad_w3_M1[1] 60 triad_status_w3_M1[1] = 1 triad_model_w3_M1[1] = TRIADB // triad who gets shot IF NOT IS_CHAR_DEAD triad_w3_M1[2] SET_CHAR_COORDINATES triad_w3_M1[2] 1267.9357 -782.3963 1090.9384 REMOVE_BLIP triad_w3_blip_M1[2] ELSE CREATE_CHAR PEDTYPE_MISSION1 TRIADB 1267.9357 -782.3963 1090.9384 triad_w3_M1[2] GIVE_WEAPON_TO_CHAR triad_w3_M1[2] WEAPONTYPE_M4 30000 SET_CURRENT_CHAR_WEAPON triad_w3_M1[2] WEAPONTYPE_M4 SET_CHAR_NEVER_TARGETTED triad_w3_M1[2] TRUE ENDIF SET_CHAR_HEADING triad_w3_M1[2] 7.0205 SET_CHAR_HEALTH triad_w3_M1[2] 300 SET_CHAR_AREA_VISIBLE triad_w3_M1[2] 5 SET_CHAR_DECISION_MAKER triad_w3_M1[2] empty_dm_M1 pointer_M1 = 0 WHILE pointer_M1 < 20 lsv_inside_status_M1[pointer_M1] = -2 pointer_M1 ++ ENDWHILE pointer_M1 = 0 WHILE pointer_M1 < 10 lsv_room_status_M1[pointer_M1] = -2 pointer_M1 ++ ENDWHILE lsv_girl_status_M1[0] = -2 lsv_girl_status_M1[1] = -2 lsv_girl_status_M1[2] = -2 lsv_girl_status_M1[3] = -2 LVAR_INT room_pointer_M1 cover_pointer_M1 LVAR_FLOAT triad_X_M1[16] triad_Y_M1[16] triad_Z_M1[16] triad_heading_M1[16] // variables // corridor triad_X_M1[0] = 1282.4808 // triad 0 corridor triad_Y_M1[0] = -783.0235 triad_Z_M1[0] = 1088.9297 triad_heading_M1[0] = 178.1922 triad_X_M1[1] = 1283.5040 // triad 1 corridor triad_Y_M1[1] = -782.3303 triad_Z_M1[1] = 1088.9297 triad_heading_M1[1] = 179.0122 // room room_pointer_M1 = 2 triad_X_M1[2] = 1280.7053 // room 1 triad_Y_M1[2] = -789.9243 triad_Z_M1[2] = 1088.9297 triad_heading_M1[2] = 86.8595 triad_X_M1[3] = 1283.7900 // room 2 triad_Y_M1[3] = -798.3011 triad_Z_M1[3] = 1088.9297 triad_heading_M1[3] = 282.0571 triad_X_M1[4] = 1280.7804 // room 3 triad_Y_M1[4] = -801.7443 triad_Z_M1[4] = 1088.9297 triad_heading_M1[4] = 94.8903 triad_X_M1[5] = 1283.5311 // room 4 triad_Y_M1[5] = -810.2070 triad_Z_M1[5] = 1088.9303 triad_heading_M1[5] = 277.6203 triad_X_M1[6] = 1280.7235 // room 5 triad_Y_M1[6] = -813.7949 triad_Z_M1[6] = 1088.9303 triad_heading_M1[6] = 92.4805 triad_X_M1[7] = 1283.6414 // room 6 triad_Y_M1[7] = -822.3738 triad_Z_M1[7] = 1088.9303 triad_heading_M1[7] = 281.8632 // cover cover_pointer_M1 = 8 triad_X_M1[8] = 1283.4906 // room 1 cover poinr triad_Y_M1[8] = -785.1840 triad_Z_M1[8] = 1088.9297 triad_heading_M1[8] = 178.5884 triad_X_M1[9] = 1281.0492 // room 2 cover point triad_Y_M1[9] = -792.4401 triad_Z_M1[9] = 1088.9297 triad_heading_M1[9] = 182.7310 triad_X_M1[10] = 1283.6973 // room 3 cover point triad_Y_M1[10] = -799.8134 triad_Z_M1[10] = 1088.9297 triad_heading_M1[10]= 177.1231 triad_X_M1[11] = 1280.9006 // room 4 cover poinr triad_Y_M1[11] = -804.8507 triad_Z_M1[11] = 1088.9297 triad_heading_M1[11]= 184.0353 triad_X_M1[12] = 1283.5002 // room 5 cover point triad_Y_M1[12] = -812.0164 triad_Z_M1[12] = 1088.9297 triad_heading_M1[12]= 175.5500 triad_X_M1[13] = 1280.8479 // room 6 cover point triad_Y_M1[13] = -816.8154 triad_Z_M1[13] = 1088.9297 triad_heading_M1[13]= 188.1912 // balcony triad_X_M1[14] = 1283.6543 // balcony position 0 triad_Y_M1[14] = -831.0235 triad_Z_M1[14] = 1088.9297 triad_heading_M1[14]= 71.1923 triad_X_M1[15] = 1282.4268 // balcony position 1 triad_Y_M1[15] = -834.7235 triad_Z_M1[15] = 1088.9297 triad_heading_M1[15]= 92.1225 // triad audio GENERATE_RANDOM_INT_IN_RANGE 0 4 clear_audio_pointer_M1 // triad 0 triad_clear_sound_M1[0] = SOUND_MAN1_FC $triad_clear_text_M1[0] = &MAN1_FC triad_clear_sound_M1[1] = SOUND_MAN1_FD $triad_clear_text_M1[1] = &MAN1_FD triad_clear_sound_M1[2] = SOUND_MAN1_FE $triad_clear_text_M1[2] = &MAN1_FE triad_clear_sound_M1[3] = SOUND_MAN1_FF $triad_clear_text_M1[3] = &MAN1_FF // triad 1 triad_clear_sound_M1[4] = SOUND_MAN1_FK $triad_clear_text_M1[4] = &MAN1_FK triad_clear_sound_M1[5] = SOUND_MAN1_FL $triad_clear_text_M1[5] = &MAN1_FL triad_clear_sound_M1[6] = SOUND_MAN1_FM $triad_clear_text_M1[6] = &MAN1_FM triad_clear_sound_M1[7] = SOUND_MAN1_FN $triad_clear_text_M1[7] = &MAN1_FN // lsv // in plant CREATE_CHAR PEDTYPE_MISSION2 LSV1 1275.6401 -776.5879 1089.7109 lsv_inside_M1[0] SET_CHAR_HEADING lsv_inside_M1[0] 127.9642 SET_CHAR_HEALTH lsv_inside_M1[0] 200 SET_CHAR_MAX_HEALTH lsv_inside_M1[0] 200 SET_CHAR_AREA_VISIBLE lsv_inside_M1[0] 5 GIVE_WEAPON_TO_CHAR lsv_inside_M1[0] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_inside_M1[0] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_inside_M1[0] 35 SET_CHAR_SHOOT_RATE lsv_inside_M1[0] 50 TASK_TOGGLE_DUCK lsv_inside_M1[0] TRUE SET_CHAR_DECISION_MAKER lsv_inside_M1[0] empty_dm_M1 lsv_inside_status_M1[0] = 0 // in plant CREATE_CHAR PEDTYPE_MISSION2 LSV3 1281.1083 -776.7111 1089.7039 lsv_inside_M1[1] SET_CHAR_HEADING lsv_inside_M1[1] 99.3570 SET_CHAR_HEALTH lsv_inside_M1[1] 200 SET_CHAR_MAX_HEALTH lsv_inside_M1[1] 200 SET_CHAR_AREA_VISIBLE lsv_inside_M1[1] 5 GIVE_WEAPON_TO_CHAR lsv_inside_M1[1] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_inside_M1[1] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_inside_M1[1] 35 SET_CHAR_SHOOT_RATE lsv_inside_M1[1] 60 TASK_TOGGLE_DUCK lsv_inside_M1[1] TRUE SET_CHAR_DECISION_MAKER lsv_inside_M1[1] empty_dm_M1 lsv_inside_status_M1[1] = 0 // rolls out CREATE_CHAR PEDTYPE_MISSION2 LSV1 1281.6173 -784.6133 1088.9297 lsv_inside_M1[2] SET_CHAR_HEADING lsv_inside_M1[2] 90.0 SET_CHAR_HEALTH lsv_inside_M1[2] 200 SET_CHAR_MAX_HEALTH lsv_inside_M1[2] 200 SET_CHAR_AREA_VISIBLE lsv_inside_M1[2] 5 GIVE_WEAPON_TO_CHAR lsv_inside_M1[2] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_inside_M1[2] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_inside_M1[2] 35 SET_CHAR_SHOOT_RATE lsv_inside_M1[2] 70 SET_CHAR_DECISION_MAKER lsv_inside_M1[2] empty_dm_M1 lsv_inside_status_M1[2] = 0 // runs out CREATE_CHAR PEDTYPE_MISSION2 LSV3 1283.1903 -786.4687 1088.9297 lsv_inside_M1[3] SET_CHAR_HEADING lsv_inside_M1[3] 0.0 SET_CHAR_HEALTH lsv_inside_M1[3] 200 SET_CHAR_MAX_HEALTH lsv_inside_M1[3] 200 SET_CHAR_AREA_VISIBLE lsv_inside_M1[3] 5 GIVE_WEAPON_TO_CHAR lsv_inside_M1[3] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_inside_M1[3] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_inside_M1[3] 35 SET_CHAR_SHOOT_RATE lsv_inside_M1[3] 50 SET_CHAR_DECISION_MAKER lsv_inside_M1[3] empty_dm_M1 lsv_inside_status_M1[3] = 0 // lsv spawn guys last_spawn_point_M1 = -1 room_X_M1[0] = 1275.3822 room_Y_M1[0] = -782.1158 room_Z_M1[0] = 1088.9297 room_heading_M1[0] = 270.0 room_X_M1[1] = 1290.6211 room_Y_M1[1] = -797.5714 room_Z_M1[1] = 1088.9297 room_heading_M1[1] = 90.0 room_X_M1[2] = 1276.3329 room_Y_M1[2] = -813.5852 room_Z_M1[2] = 1088.9303 room_heading_M1[2] = 270.0 room_X_M1[3] = 1274.8613 room_Y_M1[3] = -825.8968 room_Z_M1[3] = 1088.9297 room_heading_M1[3] = 270.0 room_X_M1[4] = 1226.3091 room_Y_M1[4] = -832.0841 room_Z_M1[4] = 1083.0078 room_heading_M1[4] = 180.0 room_X_M1[5] = 1288.0243 room_Y_M1[5] = -821.6524 room_Z_M1[5] = 1088.9297 room_heading_M1[5] = 90.0 // lsv spawn audio lsv_spawn_sound_M1[0] = SOUND_MAN1_AA $lsv_spawn_text_M1[0] = &MAN1_AA lsv_spawn_sound_M1[1] = SOUND_MAN1_AB $lsv_spawn_text_M1[1] = &MAN1_AB lsv_spawn_sound_M1[2] = SOUND_MAN1_AC $lsv_spawn_text_M1[2] = &MAN1_AC lsv_spawn_sound_M1[3] = SOUND_MAN1_AD $lsv_spawn_text_M1[3] = &MAN1_AD lsv_spawn_sample_M1 = 0 big_poppa_active_M1 = 0 SWITCH_AUDIO_ZONE MADDOGl TRUE STOP_CHAR_FACIAL_TALK scplayer DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE TIMERA = 0 cutscene_flag_M1 = 0 load_sample = SOUND_MAN1_EA $load_text = &MAN1_EA START_NEW_SCRIPT audio_load_and_play 2 100 triad_w3_M1[2] SKIP_CUTSCENE_START WHILE TIMERA < 4000 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD lsv_inside_M1[0] TASK_TOGGLE_DUCK lsv_inside_M1[0] FALSE cutscene_flag_M1 = 1 ENDIF WHILE TIMERA < 4400 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD lsv_inside_M1[0] TASK_SHOOT_AT_COORD lsv_inside_M1[0] 1267.7284 -782.9617 1092.6895 300 cutscene_flag_M1 = 2 ENDIF WHILE TIMERA < 4700 WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD lsv_inside_M1[0] AND NOT IS_CHAR_DEAD triad_w3_M1[2] CLEAR_CHAR_TASKS lsv_inside_M1[0] TASK_TOGGLE_DUCK lsv_inside_M1[0] TRUE EXPLODE_CHAR_HEAD triad_w3_M1[2] cutscene_flag_M1 = 3 ENDIF TASK_ACHIEVE_HEADING scplayer 270.0 WHILE TIMERA < 5400 WAIT 0 ENDWHILE SKIP_CUTSCENE_END SWITCH cutscene_flag_M1 CASE 2 IF NOT IS_CHAR_DEAD lsv_inside_M1[0] CLEAR_CHAR_TASKS lsv_inside_M1[0] ENDIF CASE 1 IF NOT IS_CHAR_DEAD lsv_inside_M1[0] TASK_TOGGLE_DUCK lsv_inside_M1[0] TRUE ENDIF CASE 0 IF NOT IS_CHAR_DEAD triad_w3_M1[2] EXPLODE_CHAR_HEAD triad_w3_M1[2] ENDIF BREAK ENDSWITCH SET_CHAR_HEADING scplayer 270.0 SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON load_sample = SOUND_MAN1_EB $load_text = &MAN1_EB START_NEW_SCRIPT audio_load_and_play 2 101 triad_w3_M1[0] TIMERB = 0 overall_text_status_M1 = 1 // playing text_status_M1[0] = 1 current_text_M1 = -1 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER IF NOT IS_CHAR_DEAD triad_w3_M1[0] OPEN_SEQUENCE_TASK sequence_M1 TASK_GO_STRAIGHT_TO_COORD -1 1266.8584 -782.4518 1090.8984 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 270.5538 TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 cover_dm_M1 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK triad_w3_M1[0] sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 ENDIF IF NOT IS_CHAR_DEAD triad_w3_M1[1] OPEN_SEQUENCE_TASK sequence_M1 TASK_GO_STRAIGHT_TO_COORD -1 1268.0199 -779.9092 1090.8984 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 267.5782 TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 cover_dm_M1 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK triad_w3_M1[1] sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 ENDIF IF NOT IS_CHAR_DEAD lsv_inside_M1[0] SET_CHAR_DECISION_MAKER lsv_inside_M1[0] cover_dm_M1 ENDIF IF NOT IS_CHAR_DEAD lsv_inside_M1[1] SET_CHAR_DECISION_MAKER lsv_inside_M1[1] cover_dm_M1 ENDIF IF NOT IS_CHAR_DEAD lsv_inside_M1[2] OPEN_SEQUENCE_TASK sequence_M1 TASK_STAND_STILL -1 1000 TASK_WEAPON_ROLL -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 cover_dm_M1 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK lsv_inside_M1[2] sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 ENDIF IF NOT IS_CHAR_DEAD lsv_inside_M1[3] OPEN_SEQUENCE_TASK sequence_M1 TASK_STAND_STILL -1 500 TASK_GO_STRAIGHT_TO_COORD -1 1283.2208 -779.9120 1088.9297 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 90.0 TASK_TOGGLE_DUCK -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 cover_dm_M1 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK lsv_inside_M1[3] sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 ENDIF GET_GAME_TIMER last_frame_time_M1 player_status_M1 = 0 mission_mansion1_MAIN_inside_loop: WAIT 0 // timers GET_GAME_TIMER this_frame_time_M1 time_diff_M1 = this_frame_time_M1 - last_frame_time_M1 last_frame_time_M1 = this_frame_time_M1 // triads triad_timer_w3_M1[0] += time_diff_M1 triad_timer_w3_M1[1] += time_diff_M1 // lsv timers (for removing bodies) pointer_M1 = 0 WHILE pointer_M1 < 20 lsv_inside_timer_M1[pointer_M1] += time_diff_M1 pointer_M1 ++ ENDWHILE // lsv timers (for removing bodies) pointer_M1 = 0 WHILE pointer_M1 < 10 lsv_room_timer_M1[pointer_M1] += time_diff_M1 pointer_M1 ++ ENDWHILE lsv_spawn_timer_M1[0] += time_diff_M1 lsv_spawn_timer_M1[1] += time_diff_M1 lsv_spawn_timer_M1[2] += time_diff_M1 lsv_girl_timer_M1[0] += time_diff_M1 lsv_girl_timer_M1[1] += time_diff_M1 lsv_girl_timer_M1[2] += time_diff_M1 lsv_girl_timer_M1[3] += time_diff_M1 GOSUB mission_mansion1_SUB_player_inside GOSUB mission_mansion1_SUB_triad_w3_controler GOSUB mission_mansion1_SUB_clean_up_lsv_inside GOSUB mission_mansion1_SUB_text_controller IF player_status_M1 > 0 GOSUB mission_mansion1_SUB_lsv_spawn_controller ENDIF IF big_poppa_active_M1 = 1 GOSUB mission_mansion1_SUB_big_poppa_controller ENDIF IF NOT setup_bar_M1 = 0 GOSUB mission_mansion1_SUB_setup_bar ENDIF // player gone outside for chase section IF big_poppa_status_M1 = 2 GOTO mission_mansion1_MAIN_outside_chase ENDIF run_this_frame_M1 = 0 GOTO mission_mansion1_MAIN_inside_loop // ########################################################################################################## // ## // ## INSIDE MANSION SUB's // ## // ########################################################################################################## LVAR_INT random_pos_M1 mission_mansion1_SUB_player_inside: SWITCH player_status_M1 CASE 0 IF IS_CHAR_IN_AREA_2D scplayer 1285.9373 -783.2331 1279.3602 -779.1484 FALSE OR triad_status_w3_M1[0] = 6 OR triad_status_w3_M1[1] = 7 // room 1 CREATE_CHAR PEDTYPE_MISSION2 LSV1 1271.9536 -786.6414 1088.9280 lsv_room_M1[0] SET_CHAR_HEADING lsv_room_M1[0] 248.4550 SET_CHAR_AREA_VISIBLE lsv_room_M1[0] 5 GIVE_WEAPON_TO_CHAR lsv_room_M1[0] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_room_M1[0] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_room_M1[0] 45 SET_CHAR_SHOOT_RATE lsv_room_M1[0] 35 TASK_STAY_IN_SAME_PLACE lsv_room_M1[0] TRUE SET_CHAR_DECISION_MAKER lsv_room_M1[0] cover_dm_M1 lsv_room_status_M1[0] = 0 CREATE_CHAR PEDTYPE_MISSION2 LSV3 1272.1650 -790.5964 1088.9283 lsv_room_M1[1] SET_CHAR_HEADING lsv_room_M1[1] 277.2843 SET_CHAR_AREA_VISIBLE lsv_room_M1[1] 5 GIVE_WEAPON_TO_CHAR lsv_room_M1[1] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_room_M1[1] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_room_M1[1] 45 SET_CHAR_SHOOT_RATE lsv_room_M1[1] 35 TASK_STAY_IN_SAME_PLACE lsv_room_M1[1] TRUE SET_CHAR_DECISION_MAKER lsv_room_M1[1] cover_dm_M1 lsv_room_status_M1[1] = 0 // room 2 CREATE_CHAR PEDTYPE_MISSION2 LSV3 1287.4893 -788.2037 1088.9297 lsv_room_M1[2] SET_CHAR_HEADING lsv_room_M1[2] 176.3381 SET_CHAR_AREA_VISIBLE lsv_room_M1[2] 5 GIVE_WEAPON_TO_CHAR lsv_room_M1[2] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_room_M1[2] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_room_M1[2] 50 SET_CHAR_SHOOT_RATE lsv_room_M1[2] 35 TASK_STAY_IN_SAME_PLACE lsv_room_M1[2] TRUE SET_CHAR_DECISION_MAKER lsv_room_M1[2] cover_dm_M1 lsv_room_status_M1[2] = 0 CREATE_CHAR PEDTYPE_MISSION2 LSV1 1292.4562 -788.2022 1088.9297 lsv_room_M1[3] SET_CHAR_HEADING lsv_room_M1[3] 145.1614 SET_CHAR_AREA_VISIBLE lsv_room_M1[3] 5 GIVE_WEAPON_TO_CHAR lsv_room_M1[3] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_room_M1[3] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_room_M1[3] 50 SET_CHAR_SHOOT_RATE lsv_room_M1[3] 35 TASK_STAY_IN_SAME_PLACE lsv_room_M1[3] TRUE SET_CHAR_DECISION_MAKER lsv_room_M1[3] cover_dm_M1 lsv_room_status_M1[3] = 0 // room 3 CREATE_CHAR PEDTYPE_MISSION2 LSV1 1271.3894 -800.9039 1088.9270 lsv_room_M1[4] SET_CHAR_HEADING lsv_room_M1[4] 263.9924 SET_CHAR_AREA_VISIBLE lsv_room_M1[4] 5 GIVE_WEAPON_TO_CHAR lsv_room_M1[4] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_room_M1[4] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_room_M1[4] 50 SET_CHAR_SHOOT_RATE lsv_room_M1[4] 35 TASK_STAY_IN_SAME_PLACE lsv_room_M1[4] TRUE SET_CHAR_DECISION_MAKER lsv_room_M1[4] cover_dm_M1 lsv_room_status_M1[4] = 0 // room 4 CREATE_CHAR PEDTYPE_MISSION2 LSV1 1291.7476 -810.5742 1088.9303 lsv_room_M1[5] SET_CHAR_HEADING lsv_room_M1[5] 87.4676 SET_CHAR_AREA_VISIBLE lsv_room_M1[5] 5 GIVE_WEAPON_TO_CHAR lsv_room_M1[5] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_room_M1[5] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_room_M1[5] 50 SET_CHAR_SHOOT_RATE lsv_room_M1[5] 35 TASK_STAY_IN_SAME_PLACE lsv_room_M1[5] TRUE SET_CHAR_DECISION_MAKER lsv_room_M1[5] cover_dm_M1 lsv_room_status_M1[5] = 0 CREATE_CHAR PEDTYPE_MISSION2 LSV3 1289.5624 -801.5370 1088.9297 lsv_room_M1[6] SET_CHAR_HEADING lsv_room_M1[6] 155.5354 SET_CHAR_AREA_VISIBLE lsv_room_M1[6] 5 GIVE_WEAPON_TO_CHAR lsv_room_M1[6] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_room_M1[6] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_room_M1[6] 50 SET_CHAR_SHOOT_RATE lsv_room_M1[6] 35 TASK_STAY_IN_SAME_PLACE lsv_room_M1[6] TRUE SET_CHAR_DECISION_MAKER lsv_room_M1[6] cover_dm_M1 lsv_room_status_M1[6] = 0 // room 5 CREATE_CHAR PEDTYPE_MISSION2 LSV3 1272.7966 -812.8729 1088.9303 lsv_room_M1[7] SET_CHAR_HEADING lsv_room_M1[7] 263.3181 SET_CHAR_AREA_VISIBLE lsv_room_M1[7] 5 GIVE_WEAPON_TO_CHAR lsv_room_M1[7] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_room_M1[7] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_room_M1[7] 60 SET_CHAR_SHOOT_RATE lsv_room_M1[7] 45 TASK_STAY_IN_SAME_PLACE lsv_room_M1[7] TRUE SET_CHAR_DECISION_MAKER lsv_room_M1[7] cover_dm_M1 lsv_room_status_M1[7] = 0 // room 6 CREATE_CHAR PEDTYPE_MISSION2 LSV3 1292.8157 -821.3403 1088.9303 lsv_room_M1[8] SET_CHAR_HEADING lsv_room_M1[8] 96.7033 SET_CHAR_AREA_VISIBLE lsv_room_M1[8] 5 GIVE_WEAPON_TO_CHAR lsv_room_M1[8] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_room_M1[8] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_room_M1[8] 60 SET_CHAR_SHOOT_RATE lsv_room_M1[8] 45 TASK_STAY_IN_SAME_PLACE lsv_room_M1[8] TRUE SET_CHAR_DECISION_MAKER lsv_room_M1[8] cover_dm_M1 lsv_room_status_M1[8] = 0 CREATE_CHAR PEDTYPE_MISSION2 LSV1 1292.1702 -814.6696 1088.9303 lsv_room_M1[9] SET_CHAR_HEADING lsv_room_M1[9] 136.5314 SET_CHAR_AREA_VISIBLE lsv_room_M1[9] 5 GIVE_WEAPON_TO_CHAR lsv_room_M1[9] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_room_M1[9] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_room_M1[9] 60 SET_CHAR_SHOOT_RATE lsv_room_M1[9] 45 TASK_STAY_IN_SAME_PLACE lsv_room_M1[9] TRUE SET_CHAR_DECISION_MAKER lsv_room_M1[9] cover_dm_M1 lsv_room_status_M1[9] = 0 lsv_spawn_status_M1[0] = -1 lsv_spawn_status_M1[1] = -1 lsv_spawn_status_M1[2] = -1 lsv_spawn_timer_M1[0] = 8000 lsv_spawn_timer_M1[1] = 4000 lsv_spawn_timer_M1[2] = 0 extra_man_M1 = 1 spawn_time_M1 = 8000 player_status_M1 ++ CHECKPOINT_SAVE 99 ENDIF BREAK CASE 1 area_X1_M1 = 1280.15 area_Y1_M1 = -791.93 area_X2_M1 = 1284.45 area_Y2_M1 = -795.42 GOSUB mission_mansion1_SUB_area_check IF in_area_M1 = 0 BREAK ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED triad_w3_M1[2] GENERATE_RANDOM_INT_IN_RANGE 0 2 random_pos_M1 IF random_pos_M1 = 0 // roll out guy CREATE_CHAR PEDTYPE_MISSION2 LSV1 1278.6074 -801.3676 1088.9297 lsv_inside_M1[4] // ganggirl CREATE_CHAR PEDTYPE_MISSION3 GANGRL3 1286.2810 -809.3582 1088.9297 lsv_girl_M1[0] ELSE CREATE_CHAR PEDTYPE_MISSION2 LSV1 1286.2810 -809.3582 1088.9297 lsv_inside_M1[4] CREATE_CHAR PEDTYPE_MISSION3 GANGRL3 1278.6074 -801.3676 1088.9297 lsv_girl_M1[0] ENDIF SET_CHAR_HEADING lsv_inside_M1[4] 0.0 SET_CHAR_HEALTH lsv_inside_M1[4] 200 SET_CHAR_MAX_HEALTH lsv_inside_M1[4] 200 SET_CHAR_AREA_VISIBLE lsv_inside_M1[4] 5 GIVE_WEAPON_TO_CHAR lsv_inside_M1[4] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_inside_M1[4] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_inside_M1[4] 70 SET_CHAR_SHOOT_RATE lsv_inside_M1[4] 60 SET_CHAR_DECISION_MAKER lsv_inside_M1[4] cover_dm_M1 // so he rolls correct way IF random_pos_M1 = 0 TASK_WEAPON_ROLL lsv_inside_M1[4] TRUE ELSE TASK_WEAPON_ROLL lsv_inside_M1[4] FALSE ENDIF lsv_inside_status_M1[4] = 0 SET_CHAR_HEADING lsv_girl_M1[0] 0.0 SET_CHAR_AREA_VISIBLE lsv_girl_M1[0] 5 SET_CHAR_DECISION_MAKER lsv_girl_M1[0] ganggirl_dm_M1 lsv_girl_status_M1[0] = 0 player_status_M1 ++ CASE 2 area_X1_M1 = 1284.9392 area_Y1_M1 = -799.5270 area_X2_M1 = 1279.6704 area_Y2_M1 = -803.5135 GOSUB mission_mansion1_SUB_area_check IF in_area_M1 = 0 BREAK ENDIF text_status_M1[2] = 1 ADD_BLIP_FOR_COORD 1227.2264 -834.4195 1083.0078 goto_blip_M1 SET_BLIP_ENTRY_EXIT goto_blip_M1 1258.3376 -785.4264 91.0313 SET_COORD_BLIP_APPEARANCE goto_blip_M1 COORD_BLIP_APPEARANCE_ENEMY extra_man_M1 = 0 spawn_time_M1 = 10000 player_status_M1 ++ CASE 3 area_X1_M1 = 1284.94 area_Y1_M1 = -823.43 area_X2_M1 = 1280.15 area_Y2_M1 = -818.35 GOSUB mission_mansion1_SUB_area_check IF in_area_M1 = 0 BREAK ENDIF CREATE_CHAR PEDTYPE_MISSION2 LSV3 1267.9357 -836.5694 1084.6328 lsv_inside_M1[5] SET_CHAR_HEADING lsv_inside_M1[5] 312.4274 SET_CHAR_HEALTH lsv_inside_M1[5] 200 SET_CHAR_MAX_HEALTH lsv_inside_M1[5] 200 SET_CHAR_AREA_VISIBLE lsv_inside_M1[5] 5 GIVE_WEAPON_TO_CHAR lsv_inside_M1[5] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_inside_M1[5] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_inside_M1[5] 60 SET_CHAR_SHOOT_RATE lsv_inside_M1[5] 60 TASK_TOGGLE_DUCK lsv_inside_M1[5] TRUE SET_CHAR_DECISION_MAKER lsv_inside_M1[5] cover_dm_M1 lsv_inside_status_M1[5] = 0 CREATE_CHAR PEDTYPE_MISSION2 LSV1 1272.9401 -837.6696 1084.6328 lsv_inside_M1[6] SET_CHAR_HEADING lsv_inside_M1[6] 325.2802 SET_CHAR_HEALTH lsv_inside_M1[6] 200 SET_CHAR_MAX_HEALTH lsv_inside_M1[6] 200 SET_CHAR_AREA_VISIBLE lsv_inside_M1[6] 5 GIVE_WEAPON_TO_CHAR lsv_inside_M1[6] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_inside_M1[6] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_inside_M1[6] 60 SET_CHAR_SHOOT_RATE lsv_inside_M1[6] 60 TASK_TOGGLE_DUCK lsv_inside_M1[6] TRUE SET_CHAR_DECISION_MAKER lsv_inside_M1[6] cover_dm_M1 lsv_inside_status_M1[6] = 0 CREATE_CHAR PEDTYPE_MISSION2 LSV3 1278.9363 -837.8117 1084.6328 lsv_inside_M1[7] SET_CHAR_HEADING lsv_inside_M1[7] 354.8666 SET_CHAR_HEALTH lsv_inside_M1[7] 200 SET_CHAR_MAX_HEALTH lsv_inside_M1[7] 200 SET_CHAR_AREA_VISIBLE lsv_inside_M1[7] 5 GIVE_WEAPON_TO_CHAR lsv_inside_M1[7] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_inside_M1[7] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_inside_M1[7] 60 SET_CHAR_SHOOT_RATE lsv_inside_M1[7] 60 TASK_TOGGLE_DUCK lsv_inside_M1[7] TRUE SET_CHAR_DECISION_MAKER lsv_inside_M1[7] cover_dm_M1 lsv_inside_status_M1[7] = 0 CREATE_CHAR PEDTYPE_MISSION2 LSV1 1293.4338 -837.4308 1084.6328 lsv_inside_M1[8] SET_CHAR_HEADING lsv_inside_M1[8] 84.6034 SET_CHAR_HEALTH lsv_inside_M1[8] 200 SET_CHAR_MAX_HEALTH lsv_inside_M1[8] 200 SET_CHAR_AREA_VISIBLE lsv_inside_M1[8] 5 GIVE_WEAPON_TO_CHAR lsv_inside_M1[8] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_inside_M1[8] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_inside_M1[8] 60 SET_CHAR_SHOOT_RATE lsv_inside_M1[8] 60 TASK_TOGGLE_DUCK lsv_inside_M1[8] TRUE SET_CHAR_DECISION_MAKER lsv_inside_M1[8] cover_dm_M1 lsv_inside_status_M1[8] = 0 CREATE_CHAR PEDTYPE_MISSION2 LSV3 1288.7882 -832.1437 1084.6328 lsv_inside_M1[9] SET_CHAR_HEADING lsv_inside_M1[9] 93.3971 SET_CHAR_HEALTH lsv_inside_M1[9] 200 SET_CHAR_MAX_HEALTH lsv_inside_M1[9] 200 SET_CHAR_AREA_VISIBLE lsv_inside_M1[9] 5 GIVE_WEAPON_TO_CHAR lsv_inside_M1[9] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_inside_M1[9] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_inside_M1[9] 60 SET_CHAR_SHOOT_RATE lsv_inside_M1[9] 60 TASK_TOGGLE_DUCK lsv_inside_M1[9] TRUE SET_CHAR_DECISION_MAKER lsv_inside_M1[9] cover_dm_M1 lsv_inside_status_M1[9] = 0 CREATE_CHAR PEDTYPE_MISSION2 LSV1 1279.4520 -818.7137 1084.6328 lsv_inside_M1[10] SET_CHAR_HEADING lsv_inside_M1[10] 169.7489 SET_CHAR_HEALTH lsv_inside_M1[10] 200 SET_CHAR_MAX_HEALTH lsv_inside_M1[10] 200 SET_CHAR_AREA_VISIBLE lsv_inside_M1[10] 5 GIVE_WEAPON_TO_CHAR lsv_inside_M1[10] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_inside_M1[10] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_inside_M1[10] 30 SET_CHAR_SHOOT_RATE lsv_inside_M1[10] 50 TASK_TOGGLE_DUCK lsv_inside_M1[10] TRUE SET_CHAR_DECISION_MAKER lsv_inside_M1[10] cover_dm_M1 lsv_inside_status_M1[10] = 0 // gang girl CREATE_CHAR PEDTYPE_MISSION3 BFYST 1292.7357 -832.9896 1084.6328 lsv_girl_M1[1] SET_CHAR_HEADING lsv_girl_M1[1] 90.0 SET_CHAR_AREA_VISIBLE lsv_girl_M1[1] 5 SET_CHAR_DECISION_MAKER lsv_girl_M1[1] ganggirl_dm_M1 lsv_girl_status_M1[1] = 0 CREATE_CHAR PEDTYPE_MISSION3 GANGRL3 1277.9844 -813.5414 1084.6403 lsv_girl_M1[2] SET_CHAR_HEADING lsv_girl_M1[2] 180.0 SET_CHAR_AREA_VISIBLE lsv_girl_M1[2] 5 SET_CHAR_DECISION_MAKER lsv_girl_M1[2] ganggirl_dm_M1 lsv_girl_status_M1[2] = 0 player_status_M1 ++ CASE 4 IF IS_CHAR_IN_AREA_2D scplayer 1266.5333 -831.5337 1261.2825 -838.8454 FALSE // guy in dining room CREATE_CHAR PEDTYPE_MISSION2 LSV3 1253.7582 -826.5505 1083.0078 lsv_inside_M1[11] SET_CHAR_HEADING lsv_inside_M1[11] 197.3586 SET_CHAR_HEALTH lsv_inside_M1[11] 200 SET_CHAR_MAX_HEALTH lsv_inside_M1[11] 200 SET_CHAR_AREA_VISIBLE lsv_inside_M1[11] 5 GIVE_WEAPON_TO_CHAR lsv_inside_M1[11] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_inside_M1[11] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_inside_M1[11] 60 SET_CHAR_SHOOT_RATE lsv_inside_M1[11] 70 TASK_TOGGLE_DUCK lsv_inside_M1[11] TRUE SET_CHAR_DECISION_MAKER lsv_inside_M1[11] cover_dm_M1 TASK_GO_STRAIGHT_TO_COORD lsv_inside_M1[11] 1255.4991 -831.5446 1083.0078 PEDMOVE_RUN -1 lsv_inside_status_M1[11] = 0 // guy in door way CREATE_CHAR PEDTYPE_MISSION2 LSV1 1233.7047 -827.7943 1083.0078 lsv_inside_M1[12] SET_CHAR_HEADING lsv_inside_M1[12] 180.0 SET_CHAR_HEALTH lsv_inside_M1[12] 200 SET_CHAR_MAX_HEALTH lsv_inside_M1[12] 200 SET_CHAR_AREA_VISIBLE lsv_inside_M1[12] 5 GIVE_WEAPON_TO_CHAR lsv_inside_M1[12] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_inside_M1[12] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_inside_M1[12] 60 SET_CHAR_SHOOT_RATE lsv_inside_M1[12] 70 SET_CHAR_DECISION_MAKER lsv_inside_M1[12] empty_dm_M1 lsv_inside_status_M1[12] = 0 OPEN_SEQUENCE_TASK sequence_M1 TASK_GO_STRAIGHT_TO_COORD -1 1234.1042 -832.2075 1083.0078 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 1238.8474 -833.2389 1083.0078 PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 cover_dm_M1 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK lsv_inside_M1[12] sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 // Big Poppa CREATE_CHAR PEDTYPE_MISSION2 LSV2 1227.2264 -834.4195 1083.0078 big_poppa_M1 SET_CHAR_HEADING big_poppa_M1 270.0 SET_CHAR_PROOFS big_poppa_M1 TRUE TRUE TRUE TRUE TRUE SET_CHAR_DECISION_MAKER big_poppa_M1 empty_dm_M1 SET_CHAR_NEVER_TARGETTED big_poppa_M1 TRUE REMOVE_BLIP goto_blip_M1 ADD_BLIP_FOR_CHAR big_poppa_M1 big_poppa_blip_M1 SET_BLIP_ENTRY_EXIT big_poppa_blip_M1 1258.3376 -785.4264 91.0313 CHANGE_BLIP_DISPLAY big_poppa_blip_M1 MARKER_ONLY poppa_X_M1 = 1227.3147 poppa_Y_M1 = -831.5784 OPEN_SEQUENCE_TASK sequence_M1 TASK_WEAPON_ROLL -1 TRUE TASK_STAND_STILL -1 2000 TASK_GO_STRAIGHT_TO_COORD -1 poppa_X_M1 poppa_Y_M1 1083.0078 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK big_poppa_M1 sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 poppa_posX_M1 = 1225.1938 poppa_posY_M1 = -816.5573 poppa_pos_heading_M1 = 270.0 big_poppa_status_M1 = 0 load_sample = SOUND_MAN1_BA $load_text = &MAN1_BA START_NEW_SCRIPT audio_load_and_play 2 200 big_poppa_M1 big_poppa_active_M1 = 1 overall_text_status_M1 = -1 // gang girl CREATE_CHAR PEDTYPE_MISSION3 BFYST 1240.8347 -826.6857 1082.1562 lsv_girl_M1[3] SET_CHAR_HEADING lsv_girl_M1[3] 143.0862 SET_CHAR_AREA_VISIBLE lsv_girl_M1[3] 5 SET_CHAR_DECISION_MAKER lsv_girl_M1[3] ganggirl_dm_M1 lsv_girl_status_M1[3] = 0 player_status_M1 ++ ENDIF CASE 5 //IF IS_CHAR_IN_AREA_2D scplayer 1229.9338 -835.5339 1224.8817 -838.8135 FALSE IF IS_CHAR_IN_AREA_3D scplayer 1229.9338 -835.5339 1082.5 1224.8817 -838.8135 1085.5 FALSE IF told_to_follow_M1 = 0 PRINT_NOW MAN1_21 8000 1 told_to_follow_M1 = 1 ENDIF IF NOT IS_CHAR_DEAD big_poppa_M1 CLEAR_CHAR_TASKS_IMMEDIATELY big_poppa_M1 SET_CHAR_COORDINATES big_poppa_M1 poppa_posX_M1 poppa_posY_M1 1083.01 SET_CHAR_HEADING big_poppa_M1 poppa_pos_heading_M1 poppa_X_M1 = 1231.2821 poppa_Y_M1 = -816.6354 TASK_GO_STRAIGHT_TO_COORD big_poppa_M1 poppa_X_M1 poppa_Y_M1 1083.0148 PEDMOVE_RUN -1 poppa_posX_M1 = 1256.5833 poppa_posY_M1 = -812.8542 poppa_pos_heading_M1 = 270.0 big_poppa_status_M1 = 0 ENDIF player_status_M1 ++ CHECKPOINT_SAVE 1 ENDIF BREAK CASE 6 //IF IS_CHAR_IN_AREA_2D scplayer 1228.6797 -829.9222 1224.8832 -825.2996 FALSE IF IS_CHAR_IN_AREA_3D scplayer 1228.6797 -829.9222 1082.5 1224.8832 -825.2996 1085.5 FALSE // guy who rolls out CREATE_CHAR PEDTYPE_MISSION2 LSV1 1228.8076 -812.9333 1083.0078 lsv_inside_M1[13] SET_CHAR_HEADING lsv_inside_M1[13] 180.0 SET_CHAR_HEALTH lsv_inside_M1[13] 200 SET_CHAR_MAX_HEALTH lsv_inside_M1[13] 200 SET_CHAR_AREA_VISIBLE lsv_inside_M1[13] 5 GIVE_WEAPON_TO_CHAR lsv_inside_M1[13] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_inside_M1[13] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_inside_M1[13] 60 SET_CHAR_SHOOT_RATE lsv_inside_M1[13] 70 SET_CHAR_DECISION_MAKER lsv_inside_M1[13] cover_dm_M1 TASK_WEAPON_ROLL lsv_inside_M1[13] TRUE lsv_inside_status_M1[13] = 0 player_status_M1 ++ ENDIF BREAK CASE 7 //IF IS_CHAR_IN_AREA_2D scplayer 1229.7991 -810.6401 1224.8843 -819.0158 FALSE IF IS_CHAR_IN_AREA_3D scplayer 1229.7991 -810.6401 1082.5 1224.8843 -819.0158 1085.5 FALSE IF NOT IS_CHAR_DEAD big_poppa_M1 CLEAR_CHAR_TASKS_IMMEDIATELY big_poppa_M1 SET_CHAR_COORDINATES big_poppa_M1 poppa_posX_M1 poppa_posY_M1 1083.01 SET_CHAR_HEADING big_poppa_M1 poppa_pos_heading_M1 poppa_X_M1 = 1262.6278 poppa_Y_M1 = -805.6454 OPEN_SEQUENCE_TASK sequence_M1 TASK_GO_STRAIGHT_TO_COORD -1 1261.4445 -812.2836 1083.0148 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 poppa_X_M1 poppa_Y_M1 1083.0148 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK big_poppa_M1 sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 poppa_posX_M1 = 1266.9276 poppa_posY_M1 = -801.9423 poppa_pos_heading_M1 = 270.0 big_poppa_status_M1 = 0 ENDIF player_status_M1 ++ ENDIF BREAK CASE 8 //IF IS_CHAR_IN_AREA_2D scplayer 1254.2812 -810.6465 1264.0446 -813.9205 FALSE IF IS_CHAR_IN_AREA_3D scplayer 1254.2812 -810.6465 1082.5 1264.0446 -813.9205 1085.5 FALSE IF NOT IS_CHAR_DEAD big_poppa_M1 CLEAR_CHAR_TASKS_IMMEDIATELY big_poppa_M1 SET_CHAR_COORDINATES big_poppa_M1 poppa_posX_M1 poppa_posY_M1 1083.01 SET_CHAR_HEADING big_poppa_M1 poppa_pos_heading_M1 poppa_X_M1 = 1274.6344 poppa_Y_M1 = -801.9045 TASK_GO_STRAIGHT_TO_COORD big_poppa_M1 poppa_X_M1 poppa_Y_M1 1083.0148 PEDMOVE_RUN -1 poppa_posX_M1 = 1257.3879 poppa_posY_M1 = -789.8594 poppa_pos_heading_M1 = 90.0 big_poppa_status_M1 = 0 load_sample = SOUND_MAN1_BB $load_text = &MAN1_BB START_NEW_SCRIPT audio_load_and_play 2 200 big_poppa_M1 ENDIF player_status_M1 ++ GOSUB mission_mansion1_SUB_clean_mansion_part1 ENDIF BREAK CASE 9 //IF IS_CHAR_IN_AREA_2D scplayer 1280.8965 -792.8988 1285.1869 -786.7327 FALSE IF IS_CHAR_IN_AREA_3D scplayer 1278.4686 -791.9025 1082.5 1285.1869 -786.7327 1085.5 FALSE IF NOT IS_CHAR_DEAD big_poppa_M1 CLEAR_CHAR_TASKS_IMMEDIATELY big_poppa_M1 SET_CHAR_COORDINATES big_poppa_M1 poppa_posX_M1 poppa_posY_M1 1083.01 SET_CHAR_HEADING big_poppa_M1 poppa_pos_heading_M1 poppa_X_M1 = 1249.6646 poppa_Y_M1 = -782.4513 OPEN_SEQUENCE_TASK sequence_M1 TASK_GO_STRAIGHT_TO_COORD -1 1250.0712 -788.7680 1083.0148 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 poppa_X_M1 poppa_Y_M1 1083.0148 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK big_poppa_M1 sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 poppa_posX_M1 = 1265.6135 poppa_posY_M1 = -769.7585 poppa_pos_heading_M1 = 270.0 big_poppa_status_M1 = 0 load_sample = SOUND_MAN1_BC $load_text = &MAN1_BC START_NEW_SCRIPT audio_load_and_play 2 200 big_poppa_M1 ENDIF player_status_M1 ++ ENDIF BREAK CASE 10 //IF IS_CHAR_IN_AREA_2D scplayer 1251.2849 -775.3042 1247.0049 -765.7498 FALSE IF IS_CHAR_IN_AREA_3D scplayer 1251.2849 -775.3042 1082.5 1247.0049 -765.7498 1085.5 FALSE IF NOT IS_CHAR_DEAD big_poppa_M1 CLEAR_CHAR_TASKS_IMMEDIATELY big_poppa_M1 SET_CHAR_COORDINATES big_poppa_M1 poppa_posX_M1 poppa_posY_M1 1083.01 SET_CHAR_HEADING big_poppa_M1 poppa_pos_heading_M1 poppa_X_M1 = 1269.6736 poppa_Y_M1 = -774.7773 OPEN_SEQUENCE_TASK sequence_M1 TASK_GO_STRAIGHT_TO_COORD -1 1269.4000 -769.4953 1083.0148 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 poppa_X_M1 poppa_Y_M1 1083.0148 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK big_poppa_M1 sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 poppa_posX_M1 = 1280.1145 poppa_posY_M1 = -781.6223 poppa_pos_heading_M1 = 270.0 big_poppa_status_M1 = 0 ENDIF player_status_M1 ++ ENDIF BREAK CASE 11 //IF IS_CHAR_IN_AREA_2D scplayer 1260.2893 -765.4207 1267.5243 -774.8633 FALSE IF IS_CHAR_IN_AREA_3D scplayer 1260.2893 -765.4207 1082.5 1267.5243 -774.8633 1085.5 FALSE IF NOT IS_CHAR_DEAD big_poppa_M1 CLEAR_CHAR_TASKS_IMMEDIATELY big_poppa_M1 SET_CHAR_COORDINATES big_poppa_M1 poppa_posX_M1 poppa_posY_M1 1083.01 SET_CHAR_HEADING big_poppa_M1 poppa_pos_heading_M1 poppa_X_M1 = 1301.0813 poppa_Y_M1 = -786.3077 OPEN_SEQUENCE_TASK sequence_M1 TASK_GO_STRAIGHT_TO_COORD -1 1288.8064 -780.5795 1083.0148 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 1300.8389 -781.0582 1083.0148 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 poppa_X_M1 poppa_Y_M1 1083.0148 PEDMOVE_RUN -1 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK big_poppa_M1 sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 poppa_posX_M1 = -1.0 big_poppa_status_M1 = 0 load_sample = SOUND_MAN1_BD $load_text = &MAN1_BD START_NEW_SCRIPT audio_load_and_play 2 200 big_poppa_M1 ENDIF player_status_M1 ++ ENDIF BREAK ENDSWITCH RETURN // ############################################################################################################### // used to stop dialogue text overwriting mission text and vice versa LVAR_INT text_status_M1[4] overall_text_status_M1 current_text_M1 mission_mansion1_SUB_text_controller: IF overall_text_status_M1 = 0 pointer_M1 = 0 WHILE pointer_M1 < 4 IF text_status_M1[pointer_M1] = 1 SWITCH pointer_M1 CASE 0 // Search mansion for big poppa PRINT_NOW MAN1_13 8000 1 overall_text_status_M1 = 1 current_text_M1 = pointer_M1 TIMERB = 0 pointer_M1 = 4 BREAK CASE 1 // Take corridor we will take rooms IF NOT IS_CHAR_DEAD triad_w3_M1[0] IF LOCATE_CHAR_ON_FOOT_CHAR_3D scplayer triad_w3_M1[0] 35.0 35.0 4.0 FALSE IF NOT IS_CHAR_DEAD triad_w3_M1[1] load_sample = SOUND_MAN1_FA $load_text = &MAN1_FA ELSE load_sample = SOUND_MAN1_FB $load_text = &MAN1_FB ENDIF START_NEW_SCRIPT audio_load_and_play 2 100 triad_w3_M1[0] ENDIF overall_text_status_M1 = 1 ELSE IF LOCATE_CHAR_ON_FOOT_CHAR_3D scplayer triad_w3_M1[1] 35.0 35.0 4.0 FALSE load_sample = SOUND_MAN1_FJ $load_text = &MAN1_FJ START_NEW_SCRIPT audio_load_and_play 2 100 triad_w3_M1[1] ENDIF overall_text_status_M1 = 1 ENDIF IF overall_text_status_M1 = 1 current_text_M1 = pointer_M1 TIMERB = 0 pointer_M1 = 4 ENDIF BREAK CASE 2 // The owner is downstairs PRINT_NOW MAN1_20 8000 1 overall_text_status_M1 = 1 current_text_M1 = pointer_M1 TIMERB = 0 pointer_M1 = 4 BREAK CASE 3 // hold the balcony IF NOT IS_CHAR_DEAD triad_w3_M1[0] IF LOCATE_CHAR_ON_FOOT_CHAR_3D scplayer triad_w3_M1[0] 35.0 35.0 4.0 FALSE IF NOT IS_CHAR_DEAD triad_w3_M1[1] load_sample = SOUND_MAN1_FG $load_text = &MAN1_FG ELSE load_sample = SOUND_MAN1_FH $load_text = &MAN1_FH ENDIF START_NEW_SCRIPT audio_load_and_play 2 100 triad_w3_M1[0] ENDIF overall_text_status_M1 = 1 ELSE IF LOCATE_CHAR_ON_FOOT_CHAR_3D scplayer triad_w3_M1[1] 35.0 35.0 4.0 FALSE load_sample = SOUND_MAN1_FO $load_text = &MAN1_FO START_NEW_SCRIPT audio_load_and_play 2 100 triad_w3_M1[1] ENDIF overall_text_status_M1 = 1 ENDIF IF overall_text_status_M1 = 1 current_text_M1 = pointer_M1 TIMERB = 0 pointer_M1 = 4 ENDIF ENDSWITCH ENDIF pointer_M1 ++ ENDWHILE ELSE IF overall_text_status_M1 = 1 IF TIMERB > 8000 IF NOT current_text_M1 = -1 text_status_M1[current_text_M1] = -1 ENDIF overall_text_status_M1 = 0 ENDIF ENDIF ENDIF RETURN // ############################################################################################################### LVAR_INT in_area_M1 LVAR_FLOAT area_X1_M1 area_Y1_M1 area_X2_M1 area_Y2_M1 mission_mansion1_SUB_area_check: in_area_M1 = 0 // player IF IS_CHAR_IN_AREA_2D scplayer area_X1_M1 area_Y1_M1 area_X2_M1 area_Y2_M1 FALSE in_area_M1 = 1 RETURN ENDIF // triad 0 IF NOT IS_CHAR_DEAD triad_w3_M1[0] IF IS_CHAR_IN_AREA_2D triad_w3_M1[0] area_X1_M1 area_Y1_M1 area_X2_M1 area_Y2_M1 FALSE in_area_M1 = 1 RETURN ENDIF ENDIF // triad 1 IF NOT IS_CHAR_DEAD triad_w3_M1[1] IF IS_CHAR_IN_AREA_2D triad_w3_M1[1] area_X1_M1 area_Y1_M1 area_X2_M1 area_Y2_M1 FALSE in_area_M1 = 1 RETURN ENDIF ENDIF RETURN // ############################################################################################################### LVAR_INT triad_movement_w3_M1[2] triad_moveto_w3_M1[2] triad_room_status_w3_M1[2] triad_model_w3_M1[2] LVAR_INT this_triad_M1 other_triad_M1 mission_mansion1_SUB_triad_w3_controler: this_triad_M1 = 0 other_triad_M1 = 1 WHILE this_triad_M1 < 2 IF NOT IS_CHAR_DEAD triad_w3_M1[this_triad_M1] SWITCH triad_status_w3_M1[this_triad_M1] /* ########################################################### START STUFF ########################################################### */ CASE 0 CASE 1 IF NOT lsv_inside_status_M1[0] = -1 OR NOT lsv_inside_status_M1[1] = -1 OR NOT lsv_inside_status_M1[2] = -1 OR NOT lsv_inside_status_M1[3] = -1 BREAK ENDIF triad_status_w3_M1[this_triad_M1] += 2 BREAK CASE 2 CASE 3 CLEAR_CHAR_TASKS triad_w3_M1[this_triad_M1] SET_CHAR_DECISION_MAKER triad_w3_M1[this_triad_M1] movement_dm_M1 triad_movement_w3_M1[this_triad_M1] = -1 triad_moveto_w3_M1[this_triad_M1] = this_triad_M1 triad_status_w3_M1[this_triad_M1] += 2 BREAK CASE 4 CASE 5 IF NOT triad_movement_w3_M1[this_triad_M1] = 3 GOSUB mission_mansion1_SUB_triad_movement ELSE CLEAR_CHAR_TASKS triad_w3_M1[this_triad_M1] SET_CHAR_DECISION_MAKER triad_w3_M1[this_triad_M1] cover_dm_M1 TASK_TOGGLE_DUCK triad_w3_M1[this_triad_M1] TRUE goto_M1 = triad_moveto_w3_M1[this_triad_M1] TASK_ACHIEVE_HEADING triad_w3_M1[this_triad_M1] triad_heading_M1[goto_M1] triad_movement_w3_M1[this_triad_M1] = -1 triad_status_w3_M1[this_triad_M1] += 2 ENDIF BREAK LVAR_INT audio_played_M1 CASE 6 // check for corridor being active before moving CASE 7 IF player_status_M1 > 0 // TEMP //> 1 triad_status_w3_M1[this_triad_M1] += 2 // audio IF audio_played_M1 = 0 text_status_M1[1] = 1 audio_played_M1 = 1 ENDIF ENDIF BREAK /* ########################################################### CORRIDOR STUFF ########################################################### */ /* CASE 8 is used for sending the triad into a room (just the movement) it will wait until another triad (if alive? is covering before they move) */ CASE 8 IF NOT IS_CHAR_DEAD triad_w3_M1[other_triad_M1] IF NOT triad_status_w3_M1[other_triad_M1] = 13 BREAK ENDIF ENDIF //CLEAR_CHAR_TASKS triad_w3_M1[this_triad_M1] SET_CHAR_DECISION_MAKER triad_w3_M1[this_triad_M1] movement_dm_M1 triad_movement_w3_M1[this_triad_M1] = -1 triad_moveto_w3_M1[this_triad_M1] = room_pointer_M1 triad_status_w3_M1[this_triad_M1] += 2 BREAK /* CASE 9 send a triad to cover the room */ CASE 9 //CLEAR_CHAR_TASKS triad_w3_M1[this_triad_M1] SET_CHAR_DECISION_MAKER triad_w3_M1[this_triad_M1] movement_dm_M1 triad_movement_w3_M1[this_triad_M1] = -1 triad_moveto_w3_M1[this_triad_M1] = cover_pointer_M1 triad_status_w3_M1[this_triad_M1] += 2 BREAK /* CASE 10 check for the triad arriving at the room */ CASE 10 IF NOT triad_movement_w3_M1[this_triad_M1] = 3 GOSUB mission_mansion1_SUB_triad_movement ELSE triad_room_status_w3_M1[this_triad_M1] = 1 triad_movement_w3_M1[this_triad_M1] = -1 triad_status_w3_M1[this_triad_M1] += 2 ENDIF BREAK /* CASE 11 triad moving to cover room */ CASE 11 IF NOT triad_movement_w3_M1[this_triad_M1] = 3 GOSUB mission_mansion1_SUB_triad_movement ELSE //CLEAR_CHAR_TASKS triad_w3_M1[this_triad_M1] SET_CHAR_DECISION_MAKER triad_w3_M1[this_triad_M1] cover_dm_M1 TASK_STAY_IN_SAME_PLACE triad_w3_M1[this_triad_M1] TRUE TASK_TOGGLE_DUCK triad_w3_M1[this_triad_M1] TRUE triad_movement_w3_M1[this_triad_M1] = -1 cover_pointer_M1 ++ triad_status_w3_M1[this_triad_M1] += 2 ENDIF BREAK /* CASE 12 move inside the room from the corridor */ CASE 12 IF NOT triad_movement_w3_M1[this_triad_M1] = 3 GOSUB mission_mansion1_SUB_triad_movement ELSE //CLEAR_CHAR_TASKS triad_w3_M1[this_triad_M1] SET_CHAR_DECISION_MAKER triad_w3_M1[this_triad_M1] cover_dm_M1 TASK_STAY_IN_SAME_PLACE triad_w3_M1[this_triad_M1] TRUE TASK_TOGGLE_DUCK triad_w3_M1[this_triad_M1] TRUE triad_movement_w3_M1[this_triad_M1] = -1 triad_clearing_w3_M1[this_triad_M1] = -1 triad_status_w3_M1[this_triad_M1] += 2 ENDIF BREAK /* CASE 13 triad covers room and if other triad dies takes his place */ CASE 13 IF NOT IS_CHAR_DEAD triad_w3_M1[other_triad_M1] IF NOT triad_status_w3_M1[other_triad_M1] = 11 BREAK ENDIF ENDIF triad_status_w3_M1[this_triad_M1] -= 5 BREAK /* CASE 14 triad clearing room */ CASE 14 GOSUB mission_mansion1_SUB_triad_clear_room IF room_clear_M1 = 1 room_clear_M1 = 0 //CLEAR_CHAR_TASKS triad_w3_M1[this_triad_M1] SET_CHAR_DECISION_MAKER triad_w3_M1[this_triad_M1] movement_dm_M1 TASK_TOGGLE_DUCK triad_w3_M1[this_triad_M1] FALSE triad_room_status_w3_M1[this_triad_M1] = 0 triad_movement_w3_M1[this_triad_M1] = -1 triad_status_w3_M1[this_triad_M1] ++ ENDIF BREAK /* CASE 15 triad runs out from room into corridor */ CASE 15 IF NOT triad_movement_w3_M1[this_triad_M1] = 3 GOSUB mission_mansion1_SUB_triad_movement ELSE IF room_pointer_M1 = 8 // send triads to balcony triad_status_w3_M1[this_triad_M1] = 16 IF NOT IS_CHAR_DEAD triad_w3_M1[other_triad_M1] triad_status_w3_M1[other_triad_M1] = 16 ENDIF text_status_M1[3] = 1 ELSE triad_movement_w3_M1[this_triad_M1] = -1 IF NOT IS_CHAR_DEAD triad_w3_M1[other_triad_M1] triad_moveto_w3_M1[this_triad_M1] = cover_pointer_M1 triad_status_w3_M1[this_triad_M1] -= 4 ELSE triad_status_w3_M1[this_triad_M1] -= 7 ENDIF ENDIF ENDIF BREAK /* ########################################################### BALCONY STUFF ########################################################### */ CASE 16 SET_CHAR_DECISION_MAKER triad_w3_M1[this_triad_M1] movement_dm_M1 triad_movement_w3_M1[this_triad_M1] = -1 goto_M1 = 14 + this_triad_M1 triad_moveto_w3_M1[this_triad_M1] = goto_M1 triad_status_w3_M1[this_triad_M1] ++ BREAK CASE 17 IF NOT triad_movement_w3_M1[this_triad_M1] = 3 GOSUB mission_mansion1_SUB_triad_movement ELSE SET_CHAR_DECISION_MAKER triad_w3_M1[this_triad_M1] cover_dm_M1 TASK_STAY_IN_SAME_PLACE triad_w3_M1[this_triad_M1] TRUE IF triad_moveto_w3_M1[this_triad_M1] = 14 TASK_TOGGLE_DUCK triad_w3_M1[this_triad_M1] TRUE ENDIF goto_M1 = triad_moveto_w3_M1[this_triad_M1] TASK_ACHIEVE_HEADING triad_w3_M1[this_triad_M1] triad_heading_M1[goto_M1] triad_status_w3_M1[this_triad_M1] ++ // finished just run decision maker until dead or mission passed ENDIF BREAK ENDSWITCH ELSE IF NOT triad_status_w3_M1[this_triad_M1] = -2 SWITCH triad_status_w3_M1[this_triad_M1] DEFAULT triad_timer_w3_M1[this_triad_M1] = 0 triad_status_w3_M1[this_triad_M1] = -1 BREAK CASE -1 IF triad_timer_w3_M1[this_triad_M1] < 10000 BREAK ENDIF REMOVE_CHAR_ELEGANTLY triad_w3_M1[this_triad_M1] MARK_MODEL_AS_NO_LONGER_NEEDED triad_model_w3_M1[this_triad_M1] triad_status_w3_M1[this_triad_M1] -- ENDSWITCH ENDIF ENDIF this_triad_M1 ++ other_triad_M1 -- ENDWHILE RETURN // ############################################################################################################### LVAR_INT goto_M1 LVAR_FLOAT goto_X_M1 goto_Y_M1 goto_Z_M1 mission_mansion1_SUB_triad_movement: goto_M1 = triad_moveto_w3_M1[this_triad_M1] goto_X_M1 = triad_X_M1[goto_M1] goto_Y_M1 = triad_Y_M1[goto_M1] goto_Z_M1 = triad_Z_M1[goto_M1] IF triad_room_status_w3_M1[this_triad_M1] = 1 SWITCH room_pointer_M1 CASE 2 CASE 4 CASE 6 goto_X_M1 -= 3.5 BREAK CASE 3 CASE 5 CASE 7 goto_X_M1 += 3.5 BREAK ENDSWITCH ENDIF SWITCH triad_movement_w3_M1[this_triad_M1] CASE -1 // start IF IS_CHAR_RESPONDING_TO_EVENT triad_w3_M1[this_triad_M1] -1 TASK_STAY_IN_SAME_PLACE triad_w3_M1[this_triad_M1] TRUE triad_movement_w3_M1[this_triad_M1] = 0 // not moving ELSE //CLEAR_CHAR_TASKS triad_w3_M1[this_triad_M1] TASK_STAY_IN_SAME_PLACE triad_w3_M1[this_triad_M1] FALSE TASK_TOGGLE_DUCK triad_w3_M1[this_triad_M1] FALSE TASK_GO_STRAIGHT_TO_COORD triad_w3_M1[this_triad_M1] goto_X_M1 goto_Y_M1 goto_Z_M1 PEDMOVE_RUN -2 triad_movement_w3_M1[this_triad_M1] = 1 // moving ENDIF BREAK CASE 0 // shooting IF NOT IS_CHAR_RESPONDING_TO_EVENT triad_w3_M1[this_triad_M1] -1 triad_timer_w3_M1[this_triad_M1] = 0 triad_movement_w3_M1[this_triad_M1] = 2 // timer just incase triad stops then starts shooting again ENDIF BREAK CASE 1 // moving IF IS_CHAR_RESPONDING_TO_EVENT triad_w3_M1[this_triad_M1] -1 //CLEAR_CHAR_TASKS triad_w3_M1[this_triad_M1] //TASK_STAY_IN_SAME_PLACE triad_w3_M1[this_triad_M1] TRUE triad_movement_w3_M1[this_triad_M1] = -1 ELSE IF LOCATE_CHAR_ON_FOOT_3D triad_w3_M1[this_triad_M1] goto_X_M1 goto_Y_M1 goto_Z_M1 1.2 1.2 1.5 FALSE triad_movement_w3_M1[this_triad_M1] = 3 // reached destination ELSE GET_SCRIPT_TASK_STATUS triad_w3_M1[this_triad_M1] TASK_GO_STRAIGHT_TO_COORD task_status_M1 IF task_status_M1 = FINISHED_TASK CLEAR_CHAR_TASKS triad_w3_M1[this_triad_M1] triad_movement_w3_M1[this_triad_M1] = -1 ENDIF ENDIF ENDIF BREAK CASE 2 // temp timer before setting triad moving again IF IS_CHAR_RESPONDING_TO_EVENT triad_w3_M1[this_triad_M1] -1 triad_movement_w3_M1[this_triad_M1] = 0 // not moving ELSE IF triad_timer_w3_M1[this_triad_M1] > 500 triad_movement_w3_M1[this_triad_M1] = -1 // restart moving ENDIF ENDIF BREAK ENDSWITCH RETURN // ############################################################################################################### LVAR_INT triad_clearing_w3_M1[2] mission_mansion1_SUB_triad_clear_room: SWITCH triad_clearing_w3_M1[this_triad_M1] CASE -1 IF NOT IS_CHAR_RESPONDING_TO_EVENT triad_w3_M1[this_triad_M1] -1 triad_timer_w3_M1[this_triad_M1] = 0 triad_clearing_w3_M1[this_triad_M1] ++ ENDIF BREAK CASE 0 IF IS_CHAR_RESPONDING_TO_EVENT triad_w3_M1[this_triad_M1] -1 triad_clearing_w3_M1[this_triad_M1] -- ELSE IF triad_timer_w3_M1[this_triad_M1] > 300 triad_clearing_w3_M1[this_triad_M1] ++ ENDIF ENDIF BREAK CASE 1 GOSUB mission_mansion1_SUB_room_clear_check IF room_clear_M1 = 0 triad_timer_w3_M1[this_triad_M1] = 150 triad_clearing_w3_M1[this_triad_M1] -- ENDIF BREAK ENDSWITCH RETURN // ############################################################################################################### // checks for the triad clearing the room and plays the corrent audio sample (only if players close by?) LVAR_INT room_clear_M1 LVAR_FLOAT room_check_TL_X room_check_TL_Y room_check_BR_X room_check_BR_Y LVAR_INT triad_clear_sound_M1[8] clear_audio_pointer_M1 LVAR_TEXT_LABEL triad_clear_text_M1[8] mission_mansion1_SUB_room_clear_check: room_clear_M1 = 0 // check guys in that room are dead SWITCH room_pointer_M1 CASE 2 // room 1 IF lsv_room_status_M1[0] = -1 AND lsv_room_status_M1[1] = -1 room_clear_M1 = 1 room_check_TL_X = 1271.3411 room_check_TL_Y = -785.5189 room_check_BR_X = 1278.6420 room_check_BR_Y = -798.1946 ENDIF BREAK CASE 3 IF lsv_room_status_M1[2] = -1 AND lsv_room_status_M1[3] = -1 room_clear_M1 = 1 room_check_TL_X = 1285.9703 room_check_TL_Y = -785.5347 room_check_BR_X = 1293.1008 room_check_BR_Y = -799.4673 ENDIF BREAK CASE 4 IF lsv_room_status_M1[4] = -1 room_clear_M1 = 1 room_check_TL_X = 1271.4166 room_check_TL_Y = -799.7592 room_check_BR_X = 1278.6387 room_check_BR_Y = -810.0243 ENDIF BREAK CASE 5 IF lsv_room_status_M1[5] = -1 AND lsv_room_status_M1[6] = -1 room_clear_M1 = 1 room_check_TL_X = 1285.9594 room_check_TL_Y = -800.8917 room_check_BR_X = 1293.1208 room_check_BR_Y = -811.5349 ENDIF BREAK CASE 6 IF lsv_room_status_M1[7] = -1 room_clear_M1 = 1 room_check_TL_X = 1271.4344 room_check_TL_Y = -811.7203 room_check_BR_X = 1278.5967 room_check_BR_Y = -822.8848 ENDIF BREAK CASE 7 IF lsv_room_status_M1[8] = -1 AND lsv_room_status_M1[9] = -1 room_clear_M1 = 1 room_check_TL_X = 1285.9441 room_check_TL_Y = -812.8881 room_check_BR_X = 1293.2382 room_check_BR_Y = -823.5223 ENDIF BREAK ENDSWITCH // check non-room lsv IF room_clear_M1 = 1 pointer_M1 = 0 WHILE pointer_M1 < 20 IF NOT IS_CHAR_DEAD lsv_inside_M1[pointer_M1] IF IS_CHAR_IN_AREA_2D lsv_inside_M1[pointer_M1] room_check_TL_X room_check_TL_Y room_check_BR_X room_check_BR_Y FALSE room_clear_M1 = 0 pointer_M1 = 20 // quit out of while loop ENDIF ENDIF pointer_M1 ++ ENDWHILE ENDIF // check spawn lsv IF room_clear_M1 = 1 pointer_M1 = 0 WHILE pointer_M1 < 3 IF NOT IS_CHAR_DEAD lsv_spawn_M1[pointer_M1] IF IS_CHAR_IN_AREA_2D lsv_spawn_M1[pointer_M1] room_check_TL_X room_check_TL_Y room_check_BR_X room_check_BR_Y FALSE room_clear_M1 = 0 pointer_M1 = 2 // quit out of while loop ENDIF ENDIF pointer_M1 ++ ENDWHILE ENDIF // play audio IF room_clear_M1 = 1 room_pointer_M1 ++ IF NOT IS_MESSAGE_BEING_DISPLAYED IF LOCATE_CHAR_ON_FOOT_CHAR_3D scplayer triad_w3_M1[this_triad_M1] 35.0 35.0 4.0 FALSE IF this_triad_M1 = 0 load_sample = triad_clear_sound_M1[clear_audio_pointer_M1] $load_text = $triad_clear_text_M1[clear_audio_pointer_M1] ELSE clear_audio_pointer_M1 += 4 load_sample = triad_clear_sound_M1[clear_audio_pointer_M1] $load_text = $triad_clear_text_M1[clear_audio_pointer_M1] clear_audio_pointer_M1 -= 4 ENDIF START_NEW_SCRIPT audio_load_and_play 2 100 triad_w3_M1[this_triad_M1] clear_audio_pointer_M1 ++ IF clear_audio_pointer_M1 = 4 clear_audio_pointer_M1 = 0 ENDIF ENDIF ENDIF ENDIF RETURN // ############################################################################################################### mission_mansion1_SUB_clean_up_lsv_inside: // non room lsv pointer_M1 = 0 WHILE pointer_M1 < 20 SWITCH lsv_inside_status_M1[pointer_M1] CASE 0 IF NOT IS_CHAR_DEAD lsv_inside_M1[pointer_M1] BREAK ELSE lsv_inside_timer_M1[pointer_M1] = 0 lsv_inside_status_M1[pointer_M1] = 1 ENDIF CASE 1 IF lsv_inside_timer_M1[pointer_M1] > 2500 MARK_CHAR_AS_NO_LONGER_NEEDED lsv_inside_M1[pointer_M1] lsv_inside_status_M1[pointer_M1] = -1 ENDIF BREAK ENDSWITCH pointer_M1 ++ ENDWHILE // room lsv pointer_M1 = 0 WHILE pointer_M1 < 10 SWITCH lsv_room_status_M1[pointer_M1] CASE 0 IF NOT IS_CHAR_DEAD lsv_room_M1[pointer_M1] BREAK ELSE lsv_room_timer_M1[pointer_M1] = 0 lsv_room_status_M1[pointer_M1] = 1 ENDIF CASE 1 IF lsv_room_timer_M1[pointer_M1] > 1800 MARK_CHAR_AS_NO_LONGER_NEEDED lsv_room_M1[pointer_M1] lsv_room_status_M1[pointer_M1] = -1 ENDIF BREAK ENDSWITCH pointer_M1 ++ ENDWHILE // gang girls pointer_M1 = 0 WHILE pointer_M1 < 4 SWITCH lsv_girl_status_M1[pointer_M1] CASE 0 IF NOT IS_CHAR_DEAD lsv_girl_M1[pointer_M1] BREAK ELSE lsv_girl_timer_M1[pointer_M1] = 0 lsv_girl_status_M1[pointer_M1] = 1 ENDIF CASE 1 IF lsv_girl_timer_M1[pointer_M1] > 1800 MARK_CHAR_AS_NO_LONGER_NEEDED lsv_girl_M1[pointer_M1] lsv_girl_status_M1[pointer_M1] = -1 ENDIF BREAK ENDSWITCH pointer_M1 ++ ENDWHILE RETURN // ############################################################################################################### LVAR_INT ped_area_M1 spawn_point_M1 run_this_frame_M1 extra_man_M1 random_room_M1 mission_mansion1_SUB_get_spawn_points: GET_CHAR_COORDINATES scplayer x y z IF z > 1089.0 // player upstairs IF y > -784.0 // start section ped_area_M1 = 0 ELSE IF x < 1271.0 OR x > 1294.0 ped_area_M1 = 0 ELSE IF y > -824.0 IF x < 1279.0 // room 1,3,5 IF y > -799.0 ped_area_M1 = 1 ELSE IF y > -811.0 ped_area_M1 = 3 ELSE ped_area_M1 = 5 ENDIF ENDIF ELSE IF x > 1285.0 // room 2,4,6 IF y > -800.0 ped_area_M1 = 2 ELSE IF y > -812.0 ped_area_M1 = 4 ELSE ped_area_M1 = 6 ENDIF ENDIF ELSE IF y > -806.0 ped_area_M1 = 7 ELSE ped_area_M1 = 8 ENDIF ENDIF ENDIF ELSE ped_area_M1 = 9 ENDIF ENDIF ENDIF ELSE stop_lsv_spawn_M1 = 1 ped_area_M1 = 10 // downstairs ENDIF IF extra_man_M1 = 1 GENERATE_RANDOM_INT_IN_RANGE 0 2 random_room_M1 ELSE random_room_M1 = 0 ENDIF spawn_point_M1 = 0 IF NOT stop_lsv_spawn_M1 = 1 SWITCH ped_area_M1 CASE 0 // player is in start area SET_BIT spawn_point_M1 1 SET_BIT spawn_point_M1 2 BREAK CASE 1 // player is in room 1 CASE 2 CASE 3 CASE 7 IF random_room_M1 = 0 SET_BIT spawn_point_M1 2 ELSE SET_BIT spawn_point_M1 5 ENDIF SET_BIT spawn_point_M1 3 BREAK CASE 4 // player is in room 4 CASE 5 SET_BIT spawn_point_M1 1 SET_BIT spawn_point_M1 3 BREAK CASE 6 // player is in room 6 SET_BIT spawn_point_M1 1 SET_BIT spawn_point_M1 0 BREAK CASE 8 // bottom of corridor CASE 9 SET_BIT spawn_point_M1 0 SET_BIT spawn_point_M1 4 BREAK CASE 10 // downstairs SET_BIT spawn_point_M1 2 SET_BIT spawn_point_M1 4 BREAK ENDSWITCH ENDIF run_this_frame_M1 = 1 RETURN // ############################################################################################################### LVAR_INT lsv_spawn_M1[3] lsv_spawn_status_M1[3] lsv_spawn_timer_M1[3] lsv_spawn_model_M1[3] lsv_spawn_pointer_M1 last_spawn_point_M1 spawn_time_M1 stop_lsv_spawn_M1 LVAR_FLOAT room_X_M1[6] room_Y_M1[6] room_Z_M1[6] room_heading_M1[6] mission_mansion1_SUB_lsv_spawn_controller: lsv_spawn_pointer_M1 = 0 WHILE lsv_spawn_pointer_M1 < 3 IF NOT IS_CHAR_DEAD lsv_spawn_M1[lsv_spawn_pointer_M1] SWITCH lsv_spawn_status_M1[lsv_spawn_pointer_M1] CASE 1 IF lsv_spawn_sample_M1 < 4 IF NOT IS_MESSAGE_BEING_DISPLAYED IF LOCATE_CHAR_ANY_MEANS_CHAR_2D lsv_spawn_M1[lsv_spawn_pointer_M1] scplayer 15.0 15.0 FALSE load_sample = lsv_spawn_sound_M1[lsv_spawn_sample_M1] $load_text = $lsv_spawn_text_M1[lsv_spawn_sample_M1] START_NEW_SCRIPT audio_load_and_play 2 50 lsv_spawn_M1[lsv_spawn_pointer_M1] lsv_spawn_status_M1[lsv_spawn_pointer_M1] = 0 lsv_spawn_sample_M1 ++ ENDIF ENDIF ENDIF BREAK ENDSWITCH ELSE SWITCH lsv_spawn_status_M1[lsv_spawn_pointer_M1] CASE -1 IF lsv_spawn_timer_M1[lsv_spawn_pointer_M1] < spawn_time_M1 BREAK ENDIF REMOVE_CHAR_ELEGANTLY lsv_spawn_M1[lsv_spawn_pointer_M1] IF lsv_spawn_pointer_M1 = 2 IF extra_man_M1 = 0 lsv_spawn_status_M1[lsv_spawn_pointer_M1] ++ ELSE lsv_spawn_status_M1[lsv_spawn_pointer_M1] -- ENDIF ENDIF CASE -2 IF NOT stop_lsv_spawn_M1 = 1 IF run_this_frame_M1 = 0 GOSUB mission_mansion1_SUB_get_spawn_points ENDIF pointer_M1 = 0 WHILE pointer_M1 < 6 IF IS_BIT_SET spawn_point_M1 pointer_M1 IF NOT pointer_M1 = last_spawn_point_M1 IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY room_X_M1[pointer_M1] room_Y_M1[pointer_M1] room_Z_M1[pointer_M1] 1.5 1.5 0.0 CREATE_CHAR PEDTYPE_MISSION2 LSV1 room_X_M1[pointer_M1] room_Y_M1[pointer_M1] room_Z_M1[pointer_M1] lsv_spawn_M1[lsv_spawn_pointer_M1] SET_CHAR_HEALTH lsv_spawn_M1[lsv_spawn_pointer_M1] 200 SET_CHAR_MAX_HEALTH lsv_spawn_M1[lsv_spawn_pointer_M1] 200 SET_CHAR_HEADING lsv_spawn_M1[lsv_spawn_pointer_M1] room_heading_M1[pointer_M1] SET_CHAR_AREA_VISIBLE lsv_spawn_M1[lsv_spawn_pointer_M1] 5 GIVE_WEAPON_TO_CHAR lsv_spawn_M1[lsv_spawn_pointer_M1] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_spawn_M1[lsv_spawn_pointer_M1] WEAPONTYPE_MP5 SET_CHAR_DECISION_MAKER lsv_spawn_M1[lsv_spawn_pointer_M1] cover_dm_M1 SET_CHAR_DROPS_WEAPONS_WHEN_DEAD lsv_spawn_M1[lsv_spawn_pointer_M1] FALSE //TASK_TOGGLE_DUCK lsv_spawn_M1[lsv_spawn_pointer_M1] TRUE TASK_KILL_CHAR_ON_FOOT lsv_spawn_M1[lsv_spawn_pointer_M1] scplayer SET_CHAR_ACCURACY lsv_spawn_M1[lsv_spawn_pointer_M1] 50 SET_CHAR_SHOOT_RATE lsv_spawn_M1[lsv_spawn_pointer_M1] 60 IF lsv_spawn_pointer_M1 = 0 lsv_spawn_status_M1[lsv_spawn_pointer_M1] = 1 ELSE lsv_spawn_status_M1[lsv_spawn_pointer_M1] = 0 ENDIF last_spawn_point_M1 = pointer_M1 pointer_M1 = 5 ENDIF ENDIF ENDIF ENDIF pointer_M1 ++ ENDWHILE BREAK DEFAULT lsv_spawn_timer_M1[lsv_spawn_pointer_M1] = 0 lsv_spawn_status_M1[lsv_spawn_pointer_M1] = -1 ENDSWITCH ENDIF lsv_spawn_pointer_M1 ++ ENDWHILE RETURN // ######################################################################################################### LVAR_INT big_poppa_status_M1 told_to_follow_M1 LVAR_FLOAT poppa_X_M1 poppa_Y_M1 LVAR_FLOAT poppa_posX_M1 poppa_posY_M1 poppa_pos_heading_M1 mission_mansion1_SUB_big_poppa_controller: IF NOT IS_CHAR_DEAD big_poppa_M1 SWITCH big_poppa_status_M1 CASE 0 IF NOT LOCATE_CHAR_ON_FOOT_2D big_poppa_M1 poppa_X_M1 poppa_Y_M1 1.0 1.0 FALSE BREAK ENDIF IF NOT poppa_posX_M1 = -1.0 IF told_to_follow_M1 = 0 PRINT_NOW MAN1_21 8000 1 told_to_follow_M1 = 1 ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY big_poppa_M1 SET_CHAR_COORDINATES big_poppa_M1 poppa_posX_M1 poppa_posY_M1 1083.01 SET_CHAR_HEADING big_poppa_M1 poppa_pos_heading_M1 ELSE DISABLE_ALL_ENTRY_EXITS FALSE SWITCH_ENTRY_EXIT mddogs TRUE ADD_BLIP_FOR_COORD 1298.7405 -795.9946 1083.0078 goto_blip_M1 SET_BLIP_ENTRY_EXIT goto_blip_M1 1258.3376 -785.4264 91.0313 PRINT_NOW MAN1_22 8000 1 SET_CHAR_COORDINATES big_poppa_M1 1261.0309 -815.6660 83.1484 SET_CHAR_HEADING big_poppa_M1 65.0097 SET_CHAR_AREA_VISIBLE big_poppa_M1 0 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION big_poppa_M1 TRUE big_poppa_status_M1 = 1 BREAK ENDIF big_poppa_status_M1 = -1 BREAK CASE 1 GET_AREA_VISIBLE current_area_M1 IF current_area_M1 = 0 big_poppa_status_M1 = 2 ENDIF ENDSWITCH ENDIF RETURN // ############################################################################################################### LVAR_INT setup_bar_M1 mission_mansion1_SUB_clean_mansion_part1: // triads DELETE_CHAR triad_w3_M1[0] DELETE_CHAR triad_w3_M1[1] MARK_MODEL_AS_NO_LONGER_NEEDED TRIADA MARK_MODEL_AS_NO_LONGER_NEEDED TRIADB MARK_MODEL_AS_NO_LONGER_NEEDED M4 // lsv pointer_M1 = 0 WHILE pointer_M1 < 10 DELETE_CHAR lsv_room_M1[pointer_M1] pointer_M1 ++ ENDWHILE pointer_M1 = 0 WHILE pointer_M1 < 13 MARK_CHAR_AS_NO_LONGER_NEEDED lsv_inside_M1[pointer_M1] pointer_M1 ++ ENDWHILE MARK_CHAR_AS_NO_LONGER_NEEDED lsv_spawn_M1[0] MARK_CHAR_AS_NO_LONGER_NEEDED lsv_spawn_M1[1] MARK_CHAR_AS_NO_LONGER_NEEDED lsv_spawn_M1[2] MARK_CHAR_AS_NO_LONGER_NEEDED lsv_girl_M1[0] MARK_CHAR_AS_NO_LONGER_NEEDED lsv_girl_M1[1] MARK_CHAR_AS_NO_LONGER_NEEDED lsv_girl_M1[2] MARK_CHAR_AS_NO_LONGER_NEEDED lsv_girl_M1[3] MARK_MODEL_AS_NO_LONGER_NEEDED BFYST MARK_MODEL_AS_NO_LONGER_NEEDED GANGRL3 REMOVE_DECISION_MAKER ganggirl_dm_M1 REMOVE_DECISION_MAKER movement_dm_M1 REQUEST_MODEL BMYBE REQUEST_MODEL BMYDJ REQUEST_MODEL BFYPRO REQUEST_MODEL BFYBE setup_bar_M1 = 1 RETURN // ############################################################################################################### LVAR_INT bar_peds_M1[5] mission_mansion1_SUB_setup_bar: SWITCH setup_bar_M1 CASE 1 CREATE_CHAR PEDTYPE_MISSION2 LSV3 1260.0638 -793.2798 1083.2415 lsv_inside_M1[14] SET_CHAR_HEADING lsv_inside_M1[14] 290.4863 SET_CHAR_HEALTH lsv_inside_M1[14] 200 SET_CHAR_MAX_HEALTH lsv_inside_M1[14] 200 SET_CHAR_AREA_VISIBLE lsv_inside_M1[14] 5 GIVE_WEAPON_TO_CHAR lsv_inside_M1[14] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_inside_M1[14] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_inside_M1[14] 80 SET_CHAR_SHOOT_RATE lsv_inside_M1[14] 60 SET_CHAR_DECISION_MAKER lsv_inside_M1[14] cover_dm_M1 lsv_inside_status_M1[14] = 0 CREATE_CHAR PEDTYPE_MISSION2 LSV3 1257.7017 -767.9689 1083.0078 lsv_inside_M1[15] SET_CHAR_HEADING lsv_inside_M1[15] 119.2357 SET_CHAR_HEALTH lsv_inside_M1[15] 200 SET_CHAR_MAX_HEALTH lsv_inside_M1[15] 200 SET_CHAR_AREA_VISIBLE lsv_inside_M1[15] 5 GIVE_WEAPON_TO_CHAR lsv_inside_M1[15] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_inside_M1[15] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_inside_M1[15] 70 SET_CHAR_SHOOT_RATE lsv_inside_M1[15] 50 SET_CHAR_DECISION_MAKER lsv_inside_M1[15] cover_dm_M1 lsv_inside_status_M1[15] = 0 CREATE_CHAR PEDTYPE_MISSION2 LSV3 1289.8137 -778.2963 1083.0078 lsv_inside_M1[16] SET_CHAR_HEADING lsv_inside_M1[16] 67.6874 SET_CHAR_HEALTH lsv_inside_M1[16] 200 SET_CHAR_MAX_HEALTH lsv_inside_M1[16] 200 SET_CHAR_AREA_VISIBLE lsv_inside_M1[16] 5 GIVE_WEAPON_TO_CHAR lsv_inside_M1[16] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_inside_M1[16] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_inside_M1[16] 70 SET_CHAR_SHOOT_RATE lsv_inside_M1[16] 60 SET_CHAR_DECISION_MAKER lsv_inside_M1[16] cover_dm_M1 lsv_inside_status_M1[16] = 0 CREATE_CHAR PEDTYPE_MISSION2 LSV3 1282.8859 -779.3019 1083.0148 lsv_inside_M1[17] SET_CHAR_HEADING lsv_inside_M1[17] 57.0420 SET_CHAR_HEALTH lsv_inside_M1[17] 200 SET_CHAR_MAX_HEALTH lsv_inside_M1[17] 200 SET_CHAR_AREA_VISIBLE lsv_inside_M1[17] 5 GIVE_WEAPON_TO_CHAR lsv_inside_M1[17] WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON lsv_inside_M1[17] WEAPONTYPE_MP5 SET_CHAR_ACCURACY lsv_inside_M1[17] 70 SET_CHAR_SHOOT_RATE lsv_inside_M1[17] 60 SET_CHAR_DECISION_MAKER lsv_inside_M1[17] cover_dm_M1 lsv_inside_status_M1[17] = 0 setup_bar_M1 ++ CASE 2 IF NOT HAS_MODEL_LOADED BMYBE OR NOT HAS_MODEL_LOADED BMYDJ OR NOT HAS_MODEL_LOADED BFYPRO OR NOT HAS_MODEL_LOADED BFYBE BREAK ENDIF CREATE_CHAR PEDTYPE_MISSION3 BMYDJ 1275.1547 -788.5061 1083.0078 bar_peds_M1[0] SET_CHAR_HEADING bar_peds_M1[0] 152.5500 SET_CHAR_AREA_VISIBLE bar_peds_M1[0] 5 SET_CHAR_DECISION_MAKER bar_peds_M1[0] bar_dm_M1 CREATE_CHAR PEDTYPE_MISSION3 BFYPRO 1274.5399 -790.0915 1083.0078 bar_peds_M1[1] SET_CHAR_HEADING bar_peds_M1[1] 349.0896 SET_CHAR_AREA_VISIBLE bar_peds_M1[1] 5 SET_CHAR_DECISION_MAKER bar_peds_M1[1] bar_dm_M1 CREATE_CHAR PEDTYPE_MISSION3 BMYBE 1273.2789 -788.6833 1083.0078 bar_peds_M1[2] SET_CHAR_HEADING bar_peds_M1[2] 221.2157 SET_CHAR_AREA_VISIBLE bar_peds_M1[2] 5 SET_CHAR_DECISION_MAKER bar_peds_M1[2] bar_dm_M1 CREATE_CHAR PEDTYPE_MISSION3 BFYBE 1261.4993 -788.9477 1083.0148 bar_peds_M1[3] SET_CHAR_HEADING bar_peds_M1[3] 154.0331 SET_CHAR_AREA_VISIBLE bar_peds_M1[3] 5 SET_CHAR_DECISION_MAKER bar_peds_M1[3] bar_dm_M1 CREATE_CHAR PEDTYPE_MISSION3 BMYBE 1260.8873 -790.4300 1083.0148 bar_peds_M1[4] SET_CHAR_HEADING bar_peds_M1[4] 332.9453 SET_CHAR_AREA_VISIBLE bar_peds_M1[4] 5 SET_CHAR_DECISION_MAKER bar_peds_M1[4] bar_dm_M1 setup_bar_M1 = 0 ENDSWITCH RETURN // ########################################################################################################## // ## // ## OUTSIDE MANSION CHASE // ## // ########################################################################################################## LVAR_INT big_poppa_car_M1 player_car_M1 mission_mansion1_MAIN_outside_chase: CLEAR_PRINTS current_area_M1 = 5 WHILE current_area_M1 = 5 WAIT 0 GET_CHAR_AREA_VISIBLE scplayer current_area_M1 ENDWHILE SWITCH_AUDIO_ZONE MADDOGl FALSE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_ENTRY_EXIT maddogs FALSE SWITCH_ENTRY_EXIT mddogs FALSE CLEAR_AREA_OF_CARS 1239.9044 -800.9069 80.0 1261.7509 -817.2160 90.0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON GOSUB mission_mansion1_SUB_clean_mansion_part2 SET_CAR_DENSITY_MULTIPLIER 0.5 REQUEST_MODEL PHOENIX REQUEST_MODEL WINDSOR REQUEST_CAR_RECORDING 708 WHILE NOT HAS_MODEL_LOADED PHOENIX OR NOT HAS_MODEL_LOADED WINDSOR OR NOT HAS_CAR_RECORDING_BEEN_LOADED 708 WAIT 0 ENDWHILE LOAD_SCENE 1265.0092 -816.3813 83.6305 CREATE_CAR PHOENIX 1250.5194 -812.1237 83.1484 big_poppa_car_M1 SET_CAR_HEADING big_poppa_car_M1 162.4757 CUSTOM_PLATE_FOR_NEXT_CAR WINDSOR J_LOMAX SET_CAR_MODEL_COMPONENTS WINDSOR 1 1 CREATE_CAR WINDSOR 1244.0258 -808.5705 83.1484 player_car_M1 SET_CAR_HEADING player_car_M1 177.4448 CHANGE_CAR_COLOUR player_car_M1 126 0 SET_RADIO_CHANNEL RS_DISCO_FUNK_SOUL IF NOT IS_CHAR_DEAD big_poppa_M1 CLEAR_CHAR_TASKS_IMMEDIATELY big_poppa_M1 SET_CHAR_DECISION_MAKER big_poppa_M1 empty_dm_M1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION big_poppa_M1 FALSE SET_CHAR_AREA_VISIBLE big_poppa_M1 0 SET_CHAR_COORDINATES big_poppa_M1 1268.6998 -813.0891 83.1484 SET_CHAR_HEADING big_poppa_M1 90.0 REMOVE_BLIP big_poppa_blip_M1 ENDIF SET_CHAR_COORDINATES scplayer 1268.6998 -813.0891 83.1484 SET_CHAR_HEADING scplayer 90.0 CAMERA_RESET_NEW_SCRIPTABLES CAMERA_SET_SHAKE_SIMULATION_SIMPLE 1 50000.0 0.5 SET_FIXED_CAMERA_POSITION 1265.0092 -816.3813 83.6305 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1264.0457 -816.1189 83.6842 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD big_poppa_M1 AND NOT IS_CAR_DEAD big_poppa_car_M1 OPEN_SEQUENCE_TASK sequence_M1 TASK_STAND_STILL -1 1500 TASK_ENTER_CAR_AS_DRIVER -1 big_poppa_car_M1 9999 CLOSE_SEQUENCE_TASK sequence_M1 PERFORM_SEQUENCE_TASK big_poppa_M1 sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 OPEN_SEQUENCE_TASK sequence_M1 TASK_STAND_STILL -1 7000 TASK_GO_STRAIGHT_TO_COORD -1 1251.6967 -812.2870 83.1484 PEDMOVE_RUN -2 TASK_LOOK_AT_CHAR -1 big_poppa_M1 1500 CLOSE_SEQUENCE_TASK sequence_M1 ENDIF PERFORM_SEQUENCE_TASK scplayer sequence_M1 CLEAR_SEQUENCE_TASK sequence_M1 TIMERA = 0 WHILE TIMERA < 1500 WAIT 0 ENDWHILE CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 1265.0092 -816.3813 83.6305 1253.4476 -815.4342 83.4116 7500 TRUE CAMERA_SET_VECTOR_TRACK 1264.0457 -816.1189 83.6842 1252.8605 -814.6353 83.5422 7500 TRUE cutscene_flag_M1 = 0 WHILE cutscene_flag_M1 = 0 WAIT 0 IF NOT IS_CHAR_DEAD big_poppa_M1 IF IS_CHAR_IN_ANY_CAR big_poppa_M1 cutscene_flag_M1 = 1 ENDIF ENDIF ENDWHILE IF NOT IS_CAR_DEAD big_poppa_car_M1 START_PLAYBACK_RECORDED_CAR big_poppa_car_M1 708 SET_CAR_FORWARD_SPEED big_poppa_car_M1 40.0 LOCK_CAR_DOORS big_poppa_car_M1 CARLOCK_LOCKED IF NOT IS_CHAR_DEAD big_poppa_M1 SET_CHAR_PROOFS big_poppa_M1 FALSE FALSE FALSE FALSE FALSE ENDIF ENDIF TIMERA = 0 WHILE TIMERA < 5000 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD big_poppa_car_M1 ADD_BLIP_FOR_CAR big_poppa_car_M1 big_poppa_blip_M1 ENDIF PRINT_NOW MAN1_23 8000 1 SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF CAMERA_RESET_NEW_SCRIPTABLES RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_MAX_WANTED_LEVEL 6 SET_CAR_DENSITY_MULTIPLIER 0.5 mission_mansion1_MAIN_outside_chase_loop: WAIT 0 IF NOT IS_CHAR_DEAD big_poppa_M1 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer big_poppa_M1 250.0 250.0 FALSE fail_text_flag_M1 = 1 $fail_text_M1 = MAN1_24 GOTO mission_mansion1_FAILED ENDIF IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer player_temp_car_M1 ENDIF GOSUB mission_mansion1_SUB_big_poppas_car ELSE // shot of mansion // 1221.7875 -856.6817 99.5425 1222.3300 -855.9062 99.2196 REMOVE_BLIP big_poppa_blip_M1 TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LVAR_INT radio_station_M1 GET_RADIO_CHANNEL radio_station_M1 SET_RADIO_CHANNEL RS_OFF SET_PLAYER_CONTROL player1 OFF SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE CLEAR_WANTED_LEVEL player1 SWITCH_WIDESCREEN ON LVAR_INT player_temp_car_M1 temp_car_health_M1 IF NOT IS_CAR_DEAD player_temp_car_M1 GET_CAR_HEALTH player_temp_car_M1 temp_car_health_M1 IF temp_car_health_M1 < 500 SET_CAR_HEALTH player_temp_car_M1 500 ENDIF SET_CAR_FORWARD_SPEED player_temp_car_M1 0.0 ENDIF REQUEST_MODEL drg_nu_ext WHILE NOT HAS_MODEL_LOADED drg_nu_ext WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION 1221.7875 -856.6817 99.5425 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1222.3300 -855.9062 99.2196 JUMP_CUT LOAD_SCENE_IN_DIRECTION 1248.9076 -804.6260 87.5350 297.0012 TIMERA = 0 WHILE TIMERA < 500 WAIT 0 ENDWHILE DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SKIP_CUTSCENE_START PRINT_NOW MAN1_30 7000 1 TIMERA = 0 WHILE TIMERA < 7000 WAIT 0 ENDWHILE DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SKIP_CUTSCENE_END DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE MARK_MODEL_AS_NO_LONGER_NEEDED drg_nu_ext RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF GET_CHAR_COORDINATES scplayer player_x player_y player_z GET_CHAR_HEADING scplayer heading LOAD_SCENE_IN_DIRECTION player_x player_y player_z heading TIMERA = 0 WHILE TIMERA < 500 WAIT 0 ENDWHILE SET_RADIO_CHANNEL radio_station_M1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE GOTO mission_mansion1_PASSED ENDIF GOTO mission_mansion1_MAIN_outside_chase_loop // ############################################################################################################### LVAR_INT poppas_car_status_M1 mission_mansion1_SUB_big_poppas_car: IF NOT IS_CAR_DEAD big_poppa_car_M1 SWITCH poppas_car_status_M1 CASE 0 IF IS_PLAYBACK_GOING_ON_FOR_CAR big_poppa_car_M1 BREAK ENDIF SET_CAR_CRUISE_SPEED big_poppa_car_M1 25.0 TASK_CAR_DRIVE_WANDER big_poppa_M1 big_poppa_car_M1 25.0 DRIVINGMODE_AVOIDCARS poppas_car_status_M1 ++ BREAK ENDSWITCH ENDIF RETURN // ############################################################################################################### mission_mansion1_SUB_clean_mansion_part2: REMOVE_BLIP goto_blip_M1 MARK_MODEL_AS_NO_LONGER_NEEDED LSV1 MARK_MODEL_AS_NO_LONGER_NEEDED LSV3 MARK_MODEL_AS_NO_LONGER_NEEDED BMYBE MARK_MODEL_AS_NO_LONGER_NEEDED BMYDJ MARK_MODEL_AS_NO_LONGER_NEEDED BFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED BFYBE MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG REMOVE_DECISION_MAKER cover_dm_M1 RETURN // ########################################################################################################## // ## // ## MAIN // ## // ########################################################################################################## mission_mansion1_FAILED: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" SWITCH_ENTRY_EXIT maddogs FALSE SWITCH_ENTRY_EXIT mddogs FALSE IF fail_text_flag_M1 = 1 PRINT_NOW $fail_text_M1 8000 1 ENDIF RETURN // ############################################################################################################### mission_mansion1_PASSED: pointer_M1 = 0 WHILE pointer_M1 < 16 IF NOT IS_CHAR_DEAD lsv_inside_M1[pointer_M1] CLEAR_CHAR_TASKS lsv_inside_M1[pointer_M1] SET_CHAR_ACCURACY lsv_inside_M1[pointer_M1] 20 SET_CHAR_SHOOT_RATE lsv_inside_M1[pointer_M1] 25 TASK_STAY_IN_SAME_PLACE lsv_inside_M1[pointer_M1] TRUE TASK_KILL_CHAR_ON_FOOT lsv_inside_M1[pointer_M1] scplayer SET_CHAR_KEEP_TASK lsv_inside_M1[pointer_M1] TRUE ELSE MARK_CHAR_AS_NO_LONGER_NEEDED lsv_inside_M1[pointer_M1] ENDIF pointer_M1 ++ ENDWHILE pointer_M1 = 0 WHILE pointer_M1 < 10 IF NOT IS_CHAR_DEAD lsv_room_M1[pointer_M1] CLEAR_CHAR_TASKS lsv_room_M1[pointer_M1] SET_CHAR_ACCURACY lsv_inside_M1[pointer_M1] 20 SET_CHAR_SHOOT_RATE lsv_inside_M1[pointer_M1] 25 TASK_STAY_IN_SAME_PLACE lsv_room_M1[pointer_M1] TRUE TASK_KILL_CHAR_ON_FOOT lsv_room_M1[pointer_M1] scplayer SET_CHAR_KEEP_TASK lsv_room_M1[pointer_M1] TRUE ELSE MARK_CHAR_AS_NO_LONGER_NEEDED lsv_room_M1[pointer_M1] ENDIF pointer_M1 ++ ENDWHILE pointer_M1 = 0 WHILE pointer_M1 < 2 IF NOT IS_CHAR_DEAD lsv_spawn_M1[pointer_M1] CLEAR_CHAR_TASKS lsv_spawn_M1[pointer_M1] TASK_KILL_CHAR_ON_FOOT lsv_spawn_M1[pointer_M1] scplayer SET_CHAR_KEEP_TASK lsv_spawn_M1[pointer_M1] TRUE ELSE MARK_CHAR_AS_NO_LONGER_NEEDED lsv_spawn_M1[pointer_M1] ENDIF pointer_M1 ++ ENDWHILE SWITCH_ENTRY_EXIT maddogs TRUE SWITCH_ENTRY_EXIT mddogs TRUE flag_mansion_mission_counter ++ REGISTER_MISSION_PASSED ( MAN_1 ) //Used in the stats PLAYER_MADE_PROGRESS 1 // car generator for sparrow on mansion roof SWITCH_CAR_GENERATOR car_gen_sparrow 101 // imy stuff PRINT_WITH_NUMBER_BIG ( M_PASSR ) 4 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 40//amount of respect CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 //stuff for craig REMOVE_BLIP casino_contact_blip ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT save_pickupX[1] save_pickupY[1] save_pickupZ[1] RADAR_SPRITE_SAVEHOUSE save_house_blip[1] CHANGE_BLIP_DISPLAY save_house_blip[1] BLIP_ONLY RETURN // ############################################################################################################### mission_mansion1_CLEANUP: DISPLAY_ZONE_NAMES TRUE SWITCH_AUDIO_ZONE MADDOGl FALSE IF IS_PLAYER_PLAYING player1 SET_PLAYER_GROUP_RECRUITMENT player1 TRUE SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 ENDIF START_NEW_SCRIPT terminate_audio_controller REMOVE_BLIP goto_blip_M1 REMOVE_BLIP big_poppa_blip_M1 DISABLE_ALL_ENTRY_EXITS FALSE SWITCH_AMBIENT_PLANES TRUE SET_MAX_WANTED_LEVEL 6 SET_CAR_DENSITY_MULTIPLIER 1.0 para_force_chute_open = 0 KILL_FX_SYSTEM signal_flare_M1[0] KILL_FX_SYSTEM signal_flare_M1[1] KILL_FX_SYSTEM signal_flare_M1[2] //REMOVE_PICKUP armour_pickup_M1 //REMOVE_PICKUP health_pickup_M1 REMOVE_BLIP goto_blip_M1 pointer_M1 = 0 WHILE pointer_M1 < 4 MARK_CHAR_AS_NO_LONGER_NEEDED triad_w1_M1[pointer_M1] MARK_CHAR_AS_NO_LONGER_NEEDED triad_w2_M1[pointer_M1] MARK_CHAR_AS_NO_LONGER_NEEDED lsv_outside_M1[pointer_M1] pointer_M1 ++ ENDWHILE pointer_M1 = 0 WHILE pointer_M1 < 3 MARK_CHAR_AS_NO_LONGER_NEEDED triad_w3_M1[pointer_M1] REMOVE_BLIP triad_w3_blip_M1[pointer_M1] pointer_M1 ++ ENDWHILE MARK_CHAR_AS_NO_LONGER_NEEDED lsv_guard_M1 MARK_CHAR_AS_NO_LONGER_NEEDED big_poppa_M1 MARK_CAR_AS_NO_LONGER_NEEDED big_poppa_car_M1 MARK_CAR_AS_NO_LONGER_NEEDED player_car_M1 MARK_MODEL_AS_NO_LONGER_NEEDED TRIADA MARK_MODEL_AS_NO_LONGER_NEEDED TRIADB MARK_MODEL_AS_NO_LONGER_NEEDED LSV1 MARK_MODEL_AS_NO_LONGER_NEEDED LSV2 MARK_MODEL_AS_NO_LONGER_NEEDED LSV3 MARK_MODEL_AS_NO_LONGER_NEEDED BFYST MARK_MODEL_AS_NO_LONGER_NEEDED GANGRL3 MARK_MODEL_AS_NO_LONGER_NEEDED BMYBE MARK_MODEL_AS_NO_LONGER_NEEDED BMYDJ MARK_MODEL_AS_NO_LONGER_NEEDED BFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED BFYBE MARK_MODEL_AS_NO_LONGER_NEEDED WINDSOR MARK_MODEL_AS_NO_LONGER_NEEDED PHOENIX MARK_MODEL_AS_NO_LONGER_NEEDED M4 MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED PARACHUTE MARK_MODEL_AS_NO_LONGER_NEEDED PARA_PACK MARK_MODEL_AS_NO_LONGER_NEEDED GUN_PARA MARK_MODEL_AS_NO_LONGER_NEEDED CARGO_REAR MARK_MODEL_AS_NO_LONGER_NEEDED D9_RAMP MARK_MODEL_AS_NO_LONGER_NEEDED CARDBOARDBOX2 MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE MARK_MODEL_AS_NO_LONGER_NEEDED drg_nu_ext MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED parachute.sc REMOVE_ANIMATION PARACHUTE GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } /* [MAN1_20:MAN_1] ~r~Big Poppa~s~ is downstairs, take him out.. [MAN1_21:MAN_1] ~r~Big Poppa~s~ is making a run for it, chase after him.. [MAN1_22:MAN_1] ~r~Big Poppa~s~ has left the ~y~mansion~s~, follow him.. [MAN1_23:MAN_1] ~s~Chase down ~r~Big Poppa~s~ and run him off the road. [MAN1_24:MAN_1] ~r~You lost Big Poppa. */ MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : Mansion2 // DESCRIPTION : Enter aircraft carrier, steal harrier, destroy spy boats // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** { // ************************************************************************************************************* // GENERAL INITIALISATION - Every level requires this // ************************************************************************************************************* SCRIPT_NAME Mansio2 // Mission Start stuff GOSUB Mansion2_Mission_Start IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB Mansion2_Mission_Failed ENDIF GOSUB Mansion2_Mission_Cleanup MISSION_END // Global Setup Mansion2_Mission_Start: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 // general variables that are in every mission - DON'T DECLARE MISSION SPECIFIC VARIABLES HERE LVAR_INT m_stage LVAR_INT m_goals LVAR_INT m_passed LVAR_INT m_failed LVAR_INT m_quit LVAR_INT m_pause LVAR_INT m_status LVAR_INT m_frame_num LVAR_INT m_this_frame_time LVAR_INT m_last_frame_time LVAR_INT m_time_diff LVAR_INT m_fail_reason // commonly used timers LVAR_INT m_mission_timer // Debug variables LVAR_INT display_debug VAR_INT Mansion2_view_debug[8] // GLOBAL (for output) // useful int variables LVAR_INT nLoop LVAR_INT nLoop2 LVAR_INT nTempInt LVAR_INT nTempInt2 LVAR_INT nTempPed LVAR_INT nTempObject LVAR_INT nTempAmmo LVAR_INT nTempTimer LVAR_INT nSeqTask // useful float variables LVAR_FLOAT xposTemp yposTemp zposTemp LVAR_FLOAT xposTemp2 yposTemp2 zposTemp2 LVAR_FLOAT headTemp LVAR_FLOAT xloTemp yloTemp zloTemp LVAR_FLOAT xhiTemp yhiTemp zhiTemp LVAR_FLOAT fTempFloat LVAR_FLOAT fTempFloat2 LVAR_FLOAT fTempDistance // useful flag variables LVAR_INT flagTempFlag LVAR_INT flagTempFlag2 LVAR_INT flagCutscenePlaying LVAR_INT flagCleaningUpSkippedCutscene LVAR_INT flagSkipCutscene // Clear cutscene flags flagCutscenePlaying = 0 flagCleaningUpSkippedCutscene = 0 flagSkipCutscene = 0 m_stage = 0 m_goals = 0 m_passed = 0 m_failed = 0 m_quit = 0 m_pause = 0 m_status = 0 m_fail_reason = 0 m_mission_timer = 0 display_debug = 0 TIMERA = 0 TIMERB = 0 // Consts // ...Mansion2 Stages CONST_INT MANSION2_STAGE_INITIALISATION 0 CONST_INT MANSION2_STAGE_INITIAL_CUTSCENE_PART1 1 CONST_INT MANSION2_STAGE_INITIAL_CUTSCENE_PART2 2 CONST_INT MANSION2_STAGE_HEAD_TOWARDS_CARRIER 3 CONST_INT MANSION2_STAGE_ENTER_AIRCRAFT_CARRIER 4 CONST_INT MANSION2_STAGE_ENTER_HARRIER 5 CONST_INT MANSION2_STAGE_DESTROY_SPY_BOATS 6 CONST_INT MANSION2_STAGE_LAND_HARRIER 7 CONST_INT MANSION2_STAGE_COMPLETE 8 // ...Toreno stuff CONST_INT MANSION2_TORENO_SPECIAL_CHARACTER_SLOT 1 // ...car recordings CONST_INT MANSION2_CAR_RECORDING_TORENO_CAR 208 CONST_INT MANSION2_CAR_RECORDING_HARRIER_TAKEOFF 209 CONST_INT MANSION2_CAR_RECORDING_HARRIER_LANDING 211 //210 // ...reasons for failure CONST_INT MANSION2_FAILED_UNKNOWN 0 CONST_INT MANSION2_FAILED_TORENO_CAR_DESTROYED 1 CONST_INT MANSION2_FAILED_TORENO_DEAD 2 CONST_INT MANSION2_FAILED_NO_PLANES_LEFT 3 CONST_INT MANSION2_FAILED_HARRIER_DEAD 4 CONST_INT MANSION2_FAILED_NOT_IN_CARRIER 5 CONST_INT MANSION2_FAILED_LEFT_CARRIER 6 // ...reasons for detection CONST_INT MANSION2_DETECTED_UNKNOWN 0 CONST_INT MANSION2_DETECTED_TOO_MUCH_NOISE 1 CONST_INT MANSION2_DETECTED_BY_MECHANIC 2 CONST_INT MANSION2_DETECTED_BY_GUARD 3 CONST_INT MANSION2_DETECTED_DEAD_BODY_BY_MECHANIC 4 CONST_INT MANSION2_DETECTED_DEAD_BODY_BY_GUARD 5 CONST_INT MANSION2_DETECTED_EXPLOSION 6 // ...plane IDs CONST_INT MANSION2_PLANE_INSIDE 0 CONST_INT MANSION2_PLANE_BIG_LIFT 1 CONST_INT MANSION2_PLANE_SMALL_LIFT 2 CONST_INT MANSION2_PLANE_TAKEOFF 3 // ...guard IDs CONST_INT MANSION2_GUARD_BOAT_DRIVER 0 CONST_INT MANSION2_GUARD_BOAT_BACK 1 CONST_INT MANSION2_GUARD_BOAT_FRONT 2 CONST_INT MANSION2_GUARD_PILOT_BIG_LIFT 3 CONST_INT MANSION2_GUARD_PILOT_SMALL_LIFT 4 CONST_INT MANSION2_GUARD_HARRIER_GUIDE 5 // ----- CONST_INT MANSION2_MAX_GUARDS 6 // above Guard number + 1 // ...mechanic IDs CONST_INT MANSION2_MECHANIC_UPSTAIRS 0 CONST_INT MANSION2_MECHANIC_DOWNSTAIRS 1 // ----- CONST_INT MANSION2_MAX_MECHANICS 2 // above Mechanic number + 1 // ...forklift IDs CONST_INT MANSION2_FORKLIFT_DOWNSTAIRS 0 CONST_INT MANSION2_FORKLIFT_UPSTAIRS 1 CONST_INT MANSION2_FORKLIFT_MISSILE 2 // ----- CONST_INT MANSION2_MAX_FORKLIFTS 3 // above Forklift number + 1 // ...Alarm IDs CONST_INT MANSION2_ALARM_DOWNSTAIRS 0 CONST_INT MANSION2_ALARM_UPSTAIRS_HARRIERS 1 CONST_INT MANSION2_ALARM_UPSTAIRS_CONTROL_ROOM 2 // ----- CONST_INT MANSION2_MAX_ALARMS 3 // above Alarm number + 1 // ...guard AI CONST_INT MANSION2_GUARDAI_DEAD -2 CONST_INT MANSION2_GUARDAI_NOT_INITIALISED -1 CONST_INT MANSION2_GUARDAI_STEER_BOAT_TO_SHIP 0 CONST_INT MANSION2_GUARDAI_STEERING_BOAT_TO_SHIP 1 CONST_INT MANSION2_GUARDAI_STEER_BOAT_INTO_SHIP 2 CONST_INT MANSION2_GUARDAI_STEERING_BOAT_INTO_SHIP 3 CONST_INT MANSION2_GUARDAI_BOAT_MOORED_IN_SHIP 4 CONST_INT MANSION2_GUARDAI_ACTIVATION 5 CONST_INT MANSION2_GUARDAI_WALK_HOME 6 CONST_INT MANSION2_GUARDAI_WALKING_HOME 7 CONST_INT MANSION2_GUARDAI_CHAT 8 CONST_INT MANSION2_GUARDAI_CHATTING 9 CONST_INT MANSION2_GUARDAI_SIT 10 CONST_INT MANSION2_GUARDAI_WANDER 11 CONST_INT MANSION2_GUARDAI_WANDERING 12 CONST_INT MANSION2_GUARDAI_WANDER_STOPPED 13 CONST_INT MANSION2_GUARDAI_EXIT_PLANE 14 CONST_INT MANSION2_GUARDAI_EXITING_PLANE 15 CONST_INT MANSION2_GUARDAI_WATCH_PLANE 16 CONST_INT MANSION2_GUARDAI_WATCHING_PLANE 17 CONST_INT MANSION2_GUARDAI_TELEPORT 18 CONST_INT MANSION2_GUARDAI_GOTO_ALERT_POSITION 19 CONST_INT MANSION2_GUARDAI_GOING_TO_ALERT_POSITION 20 CONST_INT MANSION2_GUARDAI_ORIENTATE_AT_ALERT_POSITION 21 CONST_INT MANSION2_GUARDAI_AT_ALERT_POSITION 22 CONST_INT MANSION2_GUARDAI_ATTACK 23 CONST_INT MANSION2_GUARDAI_RUN_ATTACK 24 CONST_INT MANSION2_GUARDAI_RUNNING_ATTACK 25 CONST_INT MANSION2_GUARDAI_ATTACKING 26 CONST_INT MANSION2_GUARDAI_TICKING_OVER 27 // ..mechanic AI CONST_INT MANSION2_MECHANICAI_DEAD -2 CONST_INT MANSION2_MECHANICAI_NOT_INITIALISED -1 CONST_INT MANSION2_MECHANICAI_ACTIVATION 0 CONST_INT MANSION2_MECHANICAI_ENTER_FORKLIFT 1 CONST_INT MANSION2_MECHANICAI_ENTERING_FORKLIFT 2 CONST_INT MANSION2_MECHANICAI_FORKLIFT_WANDER 3 CONST_INT MANSION2_MECHANICAI_FORKLIFT_WANDERING 4 CONST_INT MANSION2_MECHANICAI_FORKLIFT_WANDER_STOPPED 5 CONST_INT MANSION2_MECHANICAI_CHAT 6 CONST_INT MANSION2_MECHANICAI_CHATTING 7 CONST_INT MANSION2_MECHANICAI_GOTO_COWER_POSITION 8 CONST_INT MANSION2_MECHANICAI_GOING_TO_COWER_POSITION 9 CONST_INT MANSION2_MECHANICAI_AT_COWER_POSITION 10 CONST_INT MANSION2_MECHANICAI_CHANGE_COWER_POSITION 11 CONST_INT MANSION2_MECHANICAI_GOTO_ALARM 12 CONST_INT MANSION2_MECHANICAI_GOING_TO_ALARM 13 CONST_INT MANSION2_MECHANICAI_TRIGGER_ALARM 14 CONST_INT MANSION2_MECHANICAI_TRIGGERING_ALARM 15 CONST_INT MANSION2_MECHANICAI_TICKING_OVER 16 // ...General CONST_INT MANSION2_PERSIST -2 CONST_INT MANSION2_MAX_PLANES 4 CONST_INT MANSION2_MAX_ENEMY_PLANES 3 CONST_INT MANSION2_MAX_SPY_SHIPS 4 CONST_INT MANSION2_TIME_BEFORE_LOWER_BACK_DOOR_sec 60 CONST_FLOAT MANSION2_INFORM_PEDS_RANGE_m 20.0 CONST_FLOAT MANSION2_REACT_TO_DEATH_RANGE_m 10.0 //CONST_FLOAT MANSION2_RESPECTED_FRIENDS_DISTANCE_m 60.0 //CONST_INT MANSION2_NUMBER_OF_RESPECTED_FRIENDS 4 // Speech CONST_INT MANSION2_MAX_CONVERSATION_LINES 13 CONST_INT MANSION2_DELAY_BEFORE_NEXT_CONVERSATION_msec 120 // ...audio slot allocations CONST_INT MANSION2_TOTAL_AUDIO_SLOTS 2 // 3 available: generally 1 and 2 for speech; 3 for SFX CONST_INT MANSION2_AUDIO_SLOT_ARRAY_SIZE 3 // MANSION2_TOTAL_AUDIO_SLOTS+1 (slots numbered 1,2,3: so array pos0 wasted) CONST_INT MANSION2_FIRST_SPEECH_SLOT 1 CONST_INT MANSION2_LAST_SPEECH_SLOT 2 CONST_INT MANSION2_SFX_SLOT 3 // ...audio slot status CONST_INT MANSION2_AUDIO_SLOT_FREE 0 CONST_INT MANSION2_AUDIO_SLOT_LOADING 1 CONST_INT MANSION2_AUDIO_SLOT_LOADED 2 CONST_INT MANSION2_AUDIO_SLOT_PLAYING 3 // ...conversation status CONST_INT MANSION2_CONVERSATION_STATUS_NONE 0 CONST_INT MANSION2_CONVERSATION_STATUS_PREPARED 1 CONST_INT MANSION2_CONVERSATION_STATUS_PLAYING 2 CONST_INT MANSION2_CONVERSATION_STATUS_INTERRUPTED 3 CONST_INT MANSION2_CONVERSATION_STATUS_FINISHED 4 // ...speech conversations CONST_INT MANSION2_CONVERSATION_NONE 0 CONST_INT MANSION2_CONVERSATION_CARL_MEETS_TORENO 1 CONST_INT MANSION2_CONVERSATION_INSTRUCTIONS 2 CONST_INT MANSION2_CONVERSATION_GOTO_CARRIER 3 CONST_INT MANSION2_CONVERSATION_SNEAK_INTO_CARRIER 4 CONST_INT MANSION2_CONVERSATION_STOLEN_HARRIER 5 CONST_INT MANSION2_CONVERSATION_VAPOURISED 6 CONST_INT MANSION2_CONVERSATION_DESTROY_FLOTILLA 7 CONST_INT MANSION2_CONVERSATION_FLOTILLA_DESTROYED 8 // Audio variables LVAR_INT nSpeechCurrentSlot LVAR_INT nConversationStatus LVAR_INT nCurrentConversationID LVAR_INT nRequiredConversationID LVAR_INT nCurrentConversationLine LVAR_INT nCurrentMaxConversationLines LVAR_INT nNextPreloadConversationLine LVAR_INT bitsConversationsPlayed LVAR_INT timerDelayBeforeNextConversation LVAR_INT flagDisplaySpeechSubtitle LVAR_INT nAudioSlotStatus[MANSION2_AUDIO_SLOT_ARRAY_SIZE] LVAR_INT nConversationSequenceSpeechID[MANSION2_MAX_CONVERSATION_LINES] LVAR_TEXT_LABEL tlConversationSequenceSubtitle[MANSION2_MAX_CONVERSATION_LINES] // ...clear audio variables nSpeechCurrentSlot = MANSION2_FIRST_SPEECH_SLOT nConversationStatus = MANSION2_CONVERSATION_STATUS_NONE nCurrentConversationID = MANSION2_CONVERSATION_NONE nRequiredConversationID = MANSION2_CONVERSATION_NONE nCurrentConversationLine = -1 nCurrentMaxConversationLines = 0 nNextPreloadConversationLine = 0 timerDelayBeforeNextConversation = 0 bitsConversationsPlayed = MANSION2_CONVERSATION_NONE flagDisplaySpeechSubtitle = TRUE REPEAT MANSION2_AUDIO_SLOT_ARRAY_SIZE nLoop nAudioSlotStatus[nLoop] = MANSION2_AUDIO_SLOT_FREE ENDREPEAT // Mission Specific Variables // Integer Variables // ...chars (char) LVAR_INT charToreno LVAR_INT charGuards[MANSION2_MAX_GUARDS] LVAR_INT charMechanics[MANSION2_MAX_MECHANICS] // ...cars (car) LVAR_INT carToreno LVAR_INT carSpeedboat LVAR_INT carPlanes[MANSION2_MAX_PLANES] LVAR_INT carPlayerPlane LVAR_INT carEnemyPlanes[MANSION2_MAX_ENEMY_PLANES] LVAR_INT carSpyShips[MANSION2_MAX_SPY_SHIPS] LVAR_INT carEnemyBoat LVAR_INT carForklifts[MANSION2_MAX_FORKLIFTS] // ...objects (object) LVAR_INT objectCarrierBigLift LVAR_INT objectCarrierSmallLift LVAR_INT objectCarrierBackDoor LVAR_INT objectMissile LVAR_INT objectAlarms[MANSION2_MAX_ALARMS] // ...blips (blip) LVAR_INT blipSpeedboat LVAR_INT blipDestination LVAR_INT blipEnemyPlanes[MANSION2_MAX_ENEMY_PLANES] LVAR_INT blipSpyShips[MANSION2_MAX_SPY_SHIPS] LVAR_INT blipGuards[MANSION2_MAX_GUARDS] LVAR_INT blipPlayerPlane // ...pickups (pickup) // ...fx systems (fx) // ...decision makers (dm) LVAR_INT dmEmpty //LVAR_INT dmWeak LVAR_INT dmStealth LVAR_INT dmTough // ...AI Status (ai) LVAR_INT aiGuards[MANSION2_MAX_GUARDS] LVAR_INT aiMechanics[MANSION2_MAX_MECHANICS] // ...general status (status) LVAR_INT statusHarrierFlyPast LVAR_INT statusHarrierTakeoff LVAR_INT statusHarrierLanding // ...Timers (timer) LVAR_INT timerCutscene //LVAR_INT timerSpyShipsBlips LVAR_INT timerLowerBackDoor LVAR_INT timerFlyPast LVAR_INT timerTakeoff LVAR_INT timerGuardsAI[MANSION2_MAX_GUARDS] LVAR_INT timerMechanicsAI[MANSION2_MAX_MECHANICS] LVAR_INT timerHelpText LVAR_INT timerCarlLookAtToreno LVAR_INT timerTorenoLookAtCarl // ...Counters (count) // ...mission specific (n) LVAR_INT nMechanicDestination[MANSION2_MAX_MECHANICS] LVAR_INT nMechanicCowerHealth[MANSION2_MAX_MECHANICS] LVAR_INT nReasonForDetection // Text Label Variables // Float Variables // ...area variables (xlo, ylo, zlo, xhi, yhi, zhi) LVAR_FLOAT xloLand yloLand zloLand xhiLand yhiLand zhiLand // ...position variables (xpos, ypos, zpos) LVAR_FLOAT xposDestination yposDestination zposDestination // Boolean Variables // ...flags (flag) LVAR_INT flagTorenoCarRecordingPlaybackStarted LVAR_INT flagSpeedboatAlive LVAR_INT flagBeenInSpeedboat LVAR_INT flagBeenCloseToCarrier LVAR_INT flagBeenCloseToEnemyBoat LVAR_INT flagDisplayedGotoCarrierText LVAR_INT flagDisplayedControlRoomWarning LVAR_INT flagDisplayedFlyingHelp LVAR_INT flagDisplayedFlyingHelp2 LVAR_INT flagDisplayedDogfightHelp LVAR_INT flagDisplayedDogfightHelp2 LVAR_INT flagAllowSpyShipHelpText LVAR_INT flagDisplayedSpyShipHelp LVAR_INT flagDisplayedSpyShipHelp2 LVAR_INT flagDisplayedSpyShipHelp3 LVAR_INT flagReachedControlRoom LVAR_INT flagEnemyPlanesAlive[MANSION2_MAX_ENEMY_PLANES] LVAR_INT flagPlanesOnCarrier[MANSION2_MAX_PLANES] LVAR_INT flagLowerSmallLift LVAR_INT flagRaiseLifts LVAR_INT flagPlayerFlyingHarrier LVAR_INT flagShowingSmallLiftCamera LVAR_INT flagShowingBigLiftCamera LVAR_INT flagEnemyPlanesCreatedInAir //LVAR_INT flagFlashSpyShipsBlips //LVAR_INT flagSpyShipsBlipsFlashOn LVAR_INT flagSpyShipsAlive[MANSION2_MAX_SPY_SHIPS] LVAR_INT flagAllSpyShipsDead LVAR_INT flagAllHarriersDead LVAR_INT flagRaiseBackDoor LVAR_INT flagLowerBackDoor LVAR_INT flagLowerBackDoorQuickly LVAR_INT flagReorganisedPlanes LVAR_INT flagEnemyBoatMoving LVAR_INT flagPlayerInCarrier LVAR_INT flagPlayedHarrierTakeoff LVAR_INT flagPlayedHarrierLanding LVAR_INT flagDisplayedLandingHelp LVAR_INT flagCarrierOnAlert LVAR_INT flagDisplayedOnAlertText LVAR_INT flagGuardsAllowAlert[MANSION2_MAX_GUARDS] LVAR_INT flagGuardsOnAlert[MANSION2_MAX_GUARDS] LVAR_INT flagMechanicsOnAlert[MANSION2_MAX_MECHANICS] LVAR_INT flagAllowMechanicSensesUpdates LVAR_INT flagPlayerFiringGun LVAR_INT flagPlayerFiringSilencedGun LVAR_INT flagCarrierBackDoorAudioPlaying LVAR_INT flagCarrierBigLiftAudioPlaying LVAR_INT flagCarrierSmallLiftAudioPlaying LVAR_INT flagCarrierOnAlertAudioPlaying LVAR_INT flagLeftCarrierCutscenePlayed LVAR_INT flagGuardsImmediateActivation LVAR_INT flagTorenoCarDeleted LVAR_INT flagCarlLookingAtToreno LVAR_INT flagTorenoLookingAtCarl LVAR_INT flagAllowLookAt LVAR_INT flagDisplayedGotoHarrierText LVAR_INT flagInForklift // ...loaded flags // Clear Loaded Flags // Clear timers // Clear important flags flagTorenoCarRecordingPlaybackStarted = FALSE flagSpeedboatAlive = FALSE flagBeenInSpeedboat = FALSE flagBeenCloseToCarrier = FALSE flagBeenCloseToEnemyBoat = FALSE flagDisplayedGotoCarrierText = FALSE flagDisplayedControlRoomWarning = FALSE flagDisplayedFlyingHelp = FALSE flagDisplayedFlyingHelp2 = FALSE flagDisplayedDogfightHelp = FALSE flagDisplayedDogfightHelp2 = FALSE flagAllowSpyShipHelpText = FALSE flagDisplayedSpyShipHelp = FALSE flagDisplayedSpyShipHelp2 = FALSE flagDisplayedSpyShipHelp3 = FALSE flagReachedControlRoom = FALSE flagLowerSmallLift = FALSE flagRaiseLifts = FALSE flagPlayerFlyingHarrier = FALSE flagShowingSmallLiftCamera = FALSE flagShowingBigLiftCamera = FALSE flagEnemyPlanesCreatedInAir = FALSE //flagFlashSpyShipsBlips = FALSE //flagSpyShipsBlipsFlashOn = FALSE flagAllSpyShipsDead = FALSE flagAllHarriersDead = FALSE flagReorganisedPlanes = FALSE flagRaiseBackDoor = FALSE flagLowerBackDoor = FALSE flagLowerBackDoorQuickly = FALSE flagEnemyBoatMoving = FALSE flagPlayerInCarrier = FALSE flagPlayedHarrierTakeoff = FALSE flagPlayedHarrierLanding = FALSE flagDisplayedLandingHelp = FALSE flagCarrierOnAlert = FALSE flagDisplayedOnAlertText = FALSE flagAllowMechanicSensesUpdates = FALSE flagPlayerFiringGun = FALSE flagPlayerFiringSilencedGun = FALSE flagCarrierBackDoorAudioPlaying = FALSE flagCarrierBigLiftAudioPlaying = FALSE flagCarrierSmallLiftAudioPlaying = FALSE flagCarrierOnAlertAudioPlaying = FALSE flagLeftCarrierCutscenePlayed = FALSE flagGuardsImmediateActivation = FALSE flagTorenoCarDeleted = FALSE flagCarlLookingAtToreno = FALSE flagTorenoLookingAtCarl = FALSE flagAllowLookAt = FALSE flagDisplayedGotoHarrierText = FALSE flagInForklift = FALSE // ***** FAKE ENTITY CREATION TO FOOL THE COMPILER ***** // The compiler just needs to verify there is a CREATE_ before usage IF m_stage = -99 WRITE_DEBUG SHOULD_NEVER_BE_IN_FAKE_ENTITY_CREATION // Entities // ...cars CREATE_CAR WASHING 0.0 0.0 0.0 carToreno CREATE_CAR SQUALO 0.0 0.0 0.0 carSpeedboat CREATE_CAR HYDRA 0.0 0.0 0.0 carPlayerPlane CREATE_CAR LAUNCH 0.0 0.0 0.0 carEnemyBoat REPEAT MANSION2_MAX_PLANES nLoop CREATE_CAR HYDRA 0.0 0.0 0.0 carPlanes[nLoop] ENDREPEAT REPEAT MANSION2_MAX_ENEMY_PLANES nLoop CREATE_CAR HYDRA 0.0 0.0 0.0 carEnemyPlanes[nLoop] ENDREPEAT REPEAT MANSION2_MAX_SPY_SHIPS nLoop CREATE_CAR TROPIC 0.0 0.0 0.0 carSpyShips[nLoop] ENDREPEAT REPEAT MANSION2_MAX_FORKLIFTS nLoop CREATE_CAR FORKLIFT 0.0 0.0 0.0 carForklifts[nLoop] ENDREPEAT // ...chars CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 0.0 0.0 0.0 charToreno REPEAT MANSION2_MAX_GUARDS nLoop CREATE_CHAR PEDTYPE_MISSION2 ARMY 0.0 0.0 0.0 charGuards[nLoop] ENDREPEAT REPEAT MANSION2_MAX_MECHANICS nLoop CREATE_CHAR PEDTYPE_MISSION1 WMYMECH 0.0 0.0 0.0 charMechanics[nLoop] ENDREPEAT // ...objects CREATE_OBJECT_NO_OFFSET CARRIER_LIFT1_SFSE 0.0 0.0 0.0 objectCarrierBigLift CREATE_OBJECT_NO_OFFSET CARRIER_LIFT2_SFSE 0.0 0.0 0.0 objectCarrierSmallLift CREATE_OBJECT_NO_OFFSET CARRIER_DOOR_SFSE 0.0 0.0 0.0 objectCarrierBackDoor CREATE_OBJECT MISSILE_07_SFXR 0.0 0.0 0.0 objectMissile REPEAT MANSION2_MAX_ALARMS nLoop CREATE_OBJECT KMB_KEYPAD 0.0 0.0 0.0 objectAlarms[nLoop] ENDREPEAT // ...blips ADD_BLIP_FOR_CAR carSpeedboat blipSpeedboat ADD_BLIP_FOR_CAR carPlayerPlane blipPlayerPlane ADD_BLIP_FOR_COORD 0.0 0.0 0.0 blipDestination REPEAT MANSION2_MAX_ENEMY_PLANES nLoop ADD_BLIP_FOR_CAR carEnemyPlanes[nLoop] blipEnemyPlanes[nLoop] ENDREPEAT REPEAT MANSION2_MAX_SPY_SHIPS nLoop ADD_BLIP_FOR_CAR carSpyShips[nLoop] blipSpyShips[nLoop] ENDREPEAT ENDIF // Mission Text LOAD_MISSION_TEXT MAN_2 // Force the weather to be rainy because it disguises the gradual displaying of the // bridge and skyscrapers that occurs when the camera points towards the speedboat FORCE_WEATHER_NOW WEATHER_RAINY_COUNTRYSIDE // Intro Cutscene GOSUB Mansion2_Intro_Cutscene // Load Char Mission Decision Makers // NOTE: Do it before the Initialisation because they make the game pause. Done here, the pause is hidden by a fade. LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY dmEmpty //LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_WEAK dmWeak LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_STEAL dmStealth LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH dmTough // Decision Maker Mods CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE dmStealth EVENT_SOUND_QUIET // Mission Initialisation GOSUB Mansion2_Initialisation // ************************************************************************************************************* // MISSION LOOP // ************************************************************************************************************* Mansion2_Mission_Loop: WAIT 0 // Special shortcut for Craig F to test all missions in order IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S m_passed = 1 GOTO Mansion2_End_Of_Main_Loop ENDIF // Debug Stuff GOSUB Mansion2_Debug_Tools GOSUB Mansion2_Debug_Shortcuts IF m_quit = 1 OR m_pause = 1 GOTO Mansion2_End_Of_Main_Loop ENDIF // Housekeeping GOSUB Mansion2_Frame_Counter GOSUB Mansion2_Additional_Timers // Special conditions IF IS_CHAR_DEAD scplayer m_failed = 1 GOTO Mansion2_End_Of_Main_Loop ENDIF // Mission Stage processing // *** INITIALISATION NOW TAKES PLACE BEFORE THE MAIN LOOP *** IF m_stage = 0 WRITE_DEBUG STAGE_SHOULD_NEVER_BE_0_IN_MAIN_LOOP ENDIF SWITCH m_stage CASE MANSION2_STAGE_INITIAL_CUTSCENE_PART1 GOSUB Mansion2_Initial_Cutscene_Part1 BREAK CASE MANSION2_STAGE_INITIAL_CUTSCENE_PART2 GOSUB Mansion2_Initial_Cutscene_Part2 BREAK CASE MANSION2_STAGE_HEAD_TOWARDS_CARRIER GOSUB Mansion2_Head_Towards_Carrier BREAK CASE MANSION2_STAGE_ENTER_AIRCRAFT_CARRIER GOSUB Mansion2_Enter_Aircraft_Carrier BREAK CASE MANSION2_STAGE_ENTER_HARRIER GOSUB Mansion2_Enter_Harrier BREAK CASE MANSION2_STAGE_DESTROY_SPY_BOATS GOSUB Mansion2_Destroy_Spy_Boats BREAK CASE MANSION2_STAGE_LAND_HARRIER GOSUB Mansion2_Land_Harrier BREAK // Passed CASE MANSION2_STAGE_COMPLETE m_passed = TRUE BREAK ENDSWITCH // Continuous update methods and event checking // ...speech GOSUB Mansion2_Update_Speech // End of Main Loop // ***** DON'T CHANGE ***** Mansion2_End_Of_Main_Loop: IF m_quit = 0 IF m_failed = 0 IF m_passed = 0 // Restart main loop GOTO Mansion2_Mission_Loop ELSE // Mission passed GOSUB Mansion2_Mission_Passed RETURN ENDIF ELSE // Mission failed GOSUB Mansion2_Mission_Failed RETURN ENDIF ELSE RETURN // quits out - goes to cleanup ENDIF WRITE_DEBUG SHOULD_NEVER_BE_HERE_IN_END_OF_MAIN_LOOP RETURN // Should never reach here // ************************************************************************************************************* // MISSION STAGE GOSUBS // ************************************************************************************************************* // **************************************** // STAGE: Initial Cutscene Part1 (Carl and Toreno get in the car and start to drive) Mansion2_Initial_Cutscene_Part1: // Initialisation // -------------- IF m_goals = 0 // Set up Toreno's Car CUSTOM_PLATE_FOR_NEXT_CAR WASHING &_OMEGA__ CREATE_CAR WASHING 1248.6813 -815.9187 83.1484 carToreno CHANGE_CAR_COLOUR carToreno 84 84 SET_CAR_HEADING carToreno 180.0 SET_RADIO_CHANNEL RS_COUNTRY // Set up Toreno CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 1250.8958 -802.7902 83.1484 charToreno SET_CHAR_HEADING charToreno 180.0 // Make Carl and Toreno enter the car SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_DRIVER charToreno carToreno 10000 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER scplayer carToreno 10000 0 // Set up the cutscene camera SET_FIXED_CAMERA_POSITION 1246.4969 -822.7375 84.7111 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1246.7848 -821.7800 84.6972 JUMP_CUT // Prepare and Play the Carl meets Toreno conversation nRequiredConversationID = MANSION2_CONVERSATION_CARL_MEETS_TORENO GOSUB Mansion2_Conversation_Command_Prepare SET_CAR_DENSITY_MULTIPLIER 0.0 // Fade in DO_FADE 1000 FADE_IN // Control flags flagTorenoCarRecordingPlaybackStarted = FALSE flagTorenoCarDeleted = FALSE // 'Look at each other' control variables flagCarlLookingAtToreno = FALSE flagTorenoLookingAtCarl = FALSE flagAllowLookAt = TRUE timerCarlLookAtToreno = 0 timerTorenoLookAtCarl = 0 // Cutscene control variables (cutscene starts now) flagCutscenePlaying = TRUE flagCleaningUpSkippedCutscene = FALSE flagSkipCutscene = FALSE m_goals++ ENDIF // Failure Conditions // ------------------ IF IS_CAR_DEAD carToreno m_failed = TRUE m_fail_reason = MANSION2_FAILED_TORENO_CAR_DESTROYED RETURN ENDIF IF IS_CHAR_DEAD charToreno m_failed = TRUE m_fail_reason = MANSION2_FAILED_TORENO_DEAD RETURN ENDIF // Subgoals // -------- // Check if the speech is ready to play IF m_goals = 1 IF flagSkipCutscene = TRUE m_goals++ ELSE IF NOT nCurrentConversationID = MANSION2_CONVERSATION_CARL_MEETS_TORENO nRequiredConversationID = MANSION2_CONVERSATION_CARL_MEETS_TORENO GOSUB Mansion2_Conversation_Command_Prepare ENDIF IF nCurrentConversationID = MANSION2_CONVERSATION_CARL_MEETS_TORENO GOSUB Mansion2_Conversation_Command_Play m_goals++ ENDIF ENDIF ENDIF // Check if Carl and Toreno have entered the car IF m_goals = 2 IF flagSkipCutscene = TRUE m_goals++ ELSE IF IS_CHAR_IN_CAR scplayer carToreno AND IS_CHAR_IN_CAR charToreno carToreno // Play Car recording of Toreno's car driving from the Mansion START_PLAYBACK_RECORDED_CAR carToreno MANSION2_CAR_RECORDING_TORENO_CAR flagTorenoCarRecordingPlaybackStarted = TRUE // Swap to a new camera LOAD_SCENE_IN_DIRECTION 1239.2856 -836.2535 83.1477 27.7504 SET_FIXED_CAMERA_POSITION 1250.1882 -849.5969 93.6161 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1249.6897 -848.7883 93.3037 JUMP_CUT // Cancel 'look at' IF flagCarlLookingAtToreno = TRUE CLEAR_LOOK_AT scplayer flagCarlLookingAtToreno = FALSE timerCarlLookAtToreno = 0 ENDIF IF flagTorenoLookingAtCarl = TRUE CLEAR_LOOK_AT charToreno flagTorenoLookingAtCarl = FALSE timerTorenoLookAtCarl = 0 ENDIF flagAllowLookAt = FALSE // Start a timer before the next part of the cutscene timerCutscene = m_mission_timer + 1000 m_goals++ ENDIF ENDIF ENDIF // Wait for the cutscene timer to end IF m_goals = 3 IF flagSkipCutscene = TRUE m_goals++ ELSE IF timerCutscene < m_mission_timer // Start Fade out DO_FADE 2000 FADE_OUT timerCutscene = m_mission_timer + 2000 m_goals++ ENDIF ENDIF ENDIF // Wait for the fade out to finish IF m_goals = 4 IF flagSkipCutscene = TRUE m_goals = 50 ELSE IF timerCutscene < m_mission_timer AND NOT GET_FADING_STATUS // Stop the car recording playback STOP_PLAYBACK_RECORDED_CAR carToreno flagTorenoCarRecordingPlaybackStarted = FALSE // Cutscene wasn't skipped flagCutscenePlaying = FALSE m_goals++ ENDIF ENDIF ENDIF // RETURN HERE IF CUTSCENE SKIPPED IF m_goals = 5 // Remove the car recording REMOVE_CAR_RECORDING MANSION2_CAR_RECORDING_TORENO_CAR // Move Toreno's car to a new location CLEAR_AREA -610.7587 176.8072 18.9460 20.0 FALSE SET_CAR_COORDINATES carToreno -610.7587 176.8072 18.9460 SET_CAR_HEADING carToreno 40.0 // Set the Scene LOAD_SCENE_IN_DIRECTION -709.1310 232.4660 4.6980 250.0 SET_TIME_OF_DAY 20 00 // Set the camera SET_FIXED_CAMERA_POSITION -710.0532 232.8524 4.6799 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -709.1310 232.4660 4.6980 JUMP_CUT timerCutscene = m_mission_timer + 1500 m_goals++ ENDIF IF m_goals = 6 IF timerCutscene < m_mission_timer m_goals = 99 ENDIF ENDIF // Skipped Cutscene stuff // ---------------------- // Check if the cutscene was skipped // NOTE: Should never enter here unless skipped IF flagCutscenePlaying = TRUE AND flagSkipCutscene = FALSE // Cutscene was skipped IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flagSkipCutscene = TRUE ENDIF ENDIF // fade out IF m_goals = 50 DO_FADE 500 FADE_OUT timerCutscene = m_mission_timer + 500 flagCleaningUpSkippedCutscene = TRUE m_goals++ ENDIF // Clean up the skipped cutscene IF m_goals = 51 IF timerCutscene < m_mission_timer // Warp Toreno and Carl into the car if not already in the car IF NOT IS_CHAR_IN_CAR scplayer carToreno WARP_CHAR_INTO_CAR_AS_PASSENGER scplayer carToreno 0 ENDIF IF NOT IS_CHAR_IN_CAR charToreno carToreno TASK_WARP_CHAR_INTO_CAR_AS_DRIVER charToreno carToreno ENDIF // Stop the car recording playback IF flagTorenoCarRecordingPlaybackStarted = TRUE STOP_PLAYBACK_RECORDED_CAR carToreno ENDIF // If the speech hasn't finished then cancel it IF NOT IS_BIT_SET bitsConversationsPlayed MANSION2_CONVERSATION_CARL_MEETS_TORENO GOSUB Mansion2_Conversation_Command_Cancel ENDIF // Cancel 'look at' IF flagCarlLookingAtToreno = TRUE CLEAR_LOOK_AT scplayer flagCarlLookingAtToreno = FALSE timerCarlLookAtToreno = 0 ENDIF IF flagTorenoLookingAtCarl = TRUE CLEAR_LOOK_AT charToreno flagTorenoLookingAtCarl = FALSE timerTorenoLookAtCarl = 0 ENDIF flagAllowLookAt = FALSE timerCutscene = m_mission_timer + 200 m_goals++ ENDIF ENDIF // Resume normal service IF m_goals = 52 IF timerCutscene < m_mission_timer flagCleaningUpSkippedCutscene = FALSE flagSkipCutscene = FALSE flagCutscenePlaying = FALSE m_goals = 5 ENDIF ENDIF // Continuous updates // ------------------ // Look At IF flagAllowLookAt = TRUE // ...Carl IF timerCarlLookAtToreno = 0 // ...set up a 'look at' time GENERATE_RANDOM_INT_IN_RANGE 2000 3000 nTempInt timerCarlLookAtToreno = m_mission_timer + nTempInt ELSE // ...check if 'look at' time has expired IF timerCarlLookAtToreno < m_mission_timer // ...time to change 'look at' action IF flagCarlLookingAtToreno = TRUE // ...currently looking, so cancel CLEAR_LOOK_AT scplayer flagCarlLookingAtToreno = FALSE ELSE // ...currently not looking, so look TASK_LOOK_AT_CHAR scplayer charToreno MANSION2_PERSIST flagCarlLookingAtToreno = TRUE ENDIF timerCarlLookAtToreno = 0 ENDIF ENDIF // ...Toreno IF timerTorenoLookAtCarl = 0 // ...set up a 'look at' time GENERATE_RANDOM_INT_IN_RANGE 1000 4000 nTempInt timerTorenoLookAtCarl = m_mission_timer + nTempInt ELSE // ...check if 'look at' time has expired IF timerTorenoLookAtCarl < m_mission_timer // ...time to change 'look at' action IF flagTorenoLookingAtCarl = TRUE // ...currently looking, so cancel CLEAR_LOOK_AT charToreno flagTorenoLookingAtCarl = FALSE ELSE // ...currently not looking, so look TASK_LOOK_AT_CHAR charToreno scplayer MANSION2_PERSIST flagTorenoLookingAtCarl = TRUE ENDIF timerTorenoLookAtCarl = 0 ENDIF ENDIF // ...stop look at when speech finished IF IS_BIT_SET bitsConversationsPlayed MANSION2_CONVERSATION_CARL_MEETS_TORENO IF flagCarlLookingAtToreno = TRUE CLEAR_LOOK_AT scplayer flagCarlLookingAtToreno = FALSE timerCarlLookAtToreno = 0 ENDIF IF flagTorenoLookingAtCarl = TRUE CLEAR_LOOK_AT charToreno flagTorenoLookingAtCarl = FALSE timerTorenoLookAtCarl = 0 ENDIF flagAllowLookAt = FALSE ENDIF ENDIF // Player is in the car so make him look at Toreno IF IS_CHAR_IN_CAR scplayer carToreno IF flagCarlLookingAtToreno = FALSE TASK_LOOK_AT_CHAR scplayer charToreno MANSION2_PERSIST flagCarlLookingAtToreno = TRUE ENDIF ENDIF // Exit // ---- IF m_goals = 99 GOSUB Mansion2_Next_Stage ENDIF RETURN // **************************************** // STAGE: Initial Cutscene Part2 (Toreno tells Carl what to do and stops at the speedboat) Mansion2_Initial_Cutscene_Part2: IF flagTorenoCarDeleted = FALSE IF IS_CAR_DEAD carToreno m_failed = TRUE m_fail_reason = MANSION2_FAILED_TORENO_CAR_DESTROYED RETURN ENDIF IF IS_CHAR_DEAD charToreno m_failed = TRUE m_fail_reason = MANSION2_FAILED_TORENO_DEAD RETURN ENDIF ENDIF // Initialisation // -------------- IF m_goals = 0 // Create the speedboat CLEAR_AREA -760.8000 243.1655 -6.6249 20.0 TRUE // CREATE_CAR SQUALO -760.8000 243.1655 -6.6249 carSpeedboat CREATE_CAR SQUALO -759.4562 240.3460 -2.0951 carSpeedboat SET_CAR_HEADING carSpeedboat 121.0 ANCHOR_BOAT carSpeedboat TRUE // Set Toreno's car in motion TASK_CAR_DRIVE_TO_COORD charToreno carToreno -731.1018 223.2893 1.3815 12.0 MODE_NORMAL WASHING DRIVINGMODE_PLOUGHTHROUGH // Fade in DO_FADE 1500 FADE_IN // Prepare and Play the Carl meets Toreno conversation nRequiredConversationID = MANSION2_CONVERSATION_INSTRUCTIONS GOSUB Mansion2_Conversation_Command_Prepare // 'Look at each other' control variables flagCarlLookingAtToreno = FALSE flagTorenoLookingAtCarl = FALSE flagAllowLookAt = FALSE timerCarlLookAtToreno = 0 timerTorenoLookAtCarl = 0 // Let the car drive with only music playing for a while timerCutscene = m_mission_timer + 5000 // Set up the skipped cutscene control flags (NOTE: cutscene playing immediately) flagCutscenePlaying = TRUE flagCleaningUpSkippedCutscene = FALSE flagSkipCutscene = FALSE m_goals++ ENDIF // Failure Conditions // ------------------ // Subgoals // -------- // Has the speech loaded? IF m_goals = 1 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE IF NOT nCurrentConversationID = MANSION2_CONVERSATION_INSTRUCTIONS nRequiredConversationID = MANSION2_CONVERSATION_INSTRUCTIONS GOSUB Mansion2_Conversation_Command_Prepare ENDIF IF nCurrentConversationID = MANSION2_CONVERSATION_INSTRUCTIONS AND timerCutscene < m_mission_timer GOSUB Mansion2_Conversation_Command_Play // Let the car drive and the conversation play for a while timerCutscene = m_mission_timer + 6200 // 7000 m_goals++ ENDIF ENDIF ENDIF // Has the timer elapsed? IF m_goals = 2 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE IF timerCutscene < m_mission_timer // Set up a new camera angle SET_FIXED_CAMERA_POSITION -738.9800 227.2293 3.4204 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -738.0241 226.9390 3.3750 JUMP_CUT // Allow Carl and Toreno to look at each other flagAllowLookAt = TRUE m_goals++ ENDIF ENDIF ENDIF // Wait for Toreno's car to stop IF m_goals = 3 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE IF LOCATE_STOPPED_CAR_3D carToreno -731.1018 223.2893 1.3815 5.0 5.0 5.0 FALSE // Let the conversation continue for a while longer timerCutscene = m_mission_timer + 4600 //4000 m_goals++ ENDIF ENDIF ENDIF // Check if it is time to change the camera angle again IF m_goals = 4 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE IF timerCutscene < m_mission_timer SET_FIXED_CAMERA_POSITION -725.9466 218.6036 4.4433 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -726.7355 219.1785 4.2265 JUMP_CUT m_goals++ ENDIF ENDIF ENDIF // Check if the speech has finished IF m_goals = 5 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE IF IS_BIT_SET bitsConversationsPlayed MANSION2_CONVERSATION_INSTRUCTIONS // Cancel 'look at' IF flagCarlLookingAtToreno = TRUE CLEAR_LOOK_AT scplayer flagCarlLookingAtToreno = FALSE timerCarlLookAtToreno = 0 ENDIF IF flagTorenoLookingAtCarl = TRUE CLEAR_LOOK_AT charToreno flagTorenoLookingAtCarl = FALSE timerTorenoLookAtCarl = 0 ENDIF flagAllowLookAt = FALSE // Get the player out of the car TASK_LEAVE_CAR scplayer carToreno TASK_GO_STRAIGHT_TO_COORD scplayer -732.8385 225.4091 1.7180 PEDMOVE_WALK 10000 // Wait a short while timerCutscene = m_mission_timer + 1500 m_goals++ ENDIF ENDIF ENDIF // Check if it is time for the car to drive away IF m_goals = 6 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE IF timerCutscene < m_mission_timer TASK_CAR_DRIVE_TO_COORD charToreno carToreno -751.1168 113.9648 13.2849 15.0 MODE_NORMAL WASHING DRIVINGMODE_PLOUGHTHROUGH // Wait a while longer timerCutscene = m_mission_timer + 500 m_goals++ ENDIF ENDIF ENDIF // Check if it is time to end the cutscene IF m_goals = 7 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals = 50 ELSE IF timerCutscene < m_mission_timer SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON // Clear up stuff that's not needed anymore DELETE_CHAR charToreno DELETE_CAR carToreno UNLOAD_SPECIAL_CHARACTER MANSION2_TORENO_SPECIAL_CHARACTER_SLOT MARK_MODEL_AS_NO_LONGER_NEEDED WASHING flagTorenoCarDeleted = TRUE flagCutscenePlaying = FALSE m_goals++ ENDIF ENDIF ENDIF // RETURN TO HERE IF CUTSCENE SKIPPED // Tidy up ready for the next phase IF m_goals = 8 m_goals = 99 ENDIF // Skipped Cutscene stuff // ---------------------- // Check if the cutscene was skipped // NOTE: Should never enter here unless skipped IF flagCutscenePlaying = TRUE AND flagSkipCutscene = FALSE // Cutscene was skipped IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flagSkipCutscene = TRUE ENDIF ENDIF // fade out IF m_goals = 50 DO_FADE 500 FADE_OUT timerCutscene = m_mission_timer + 500 flagCleaningUpSkippedCutscene = TRUE m_goals++ ENDIF // Clean up the skipped cutscene IF m_goals = 51 IF timerCutscene < m_mission_timer // Cancel speech IF NOT IS_BIT_SET bitsConversationsPlayed MANSION2_CONVERSATION_INSTRUCTIONS GOSUB Mansion2_Conversation_Command_Cancel ENDIF // Cancel 'look at' IF flagCarlLookingAtToreno = TRUE CLEAR_LOOK_AT scplayer flagCarlLookingAtToreno = FALSE timerCarlLookAtToreno = 0 ENDIF IF flagTorenoLookingAtCarl = TRUE CLEAR_LOOK_AT charToreno flagTorenoLookingAtCarl = FALSE timerTorenoLookAtCarl = 0 ENDIF flagAllowLookAt = FALSE // Warp player IF IS_CHAR_IN_CAR scplayer carToreno WARP_CHAR_FROM_CAR_TO_COORD scplayer -732.8385 225.4091 1.7180 ELSE SET_CHAR_COORDINATES scplayer -732.8385 225.4091 1.7180 ENDIF SET_CHAR_HEADING scplayer 83.9578 // Restore player controls SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON // Clear up stuff that's not needed anymore DELETE_CHAR charToreno DELETE_CAR carToreno UNLOAD_SPECIAL_CHARACTER MANSION2_TORENO_SPECIAL_CHARACTER_SLOT MARK_MODEL_AS_NO_LONGER_NEEDED WASHING flagTorenoCarDeleted = TRUE // Introduce a short pause before fading in timerCutscene = m_mission_timer + 2000 m_goals++ ENDIF ENDIF // Short pause then fade in IF m_goals = 52 IF timerCutscene < m_mission_timer DO_FADE 1500 FADE_IN timerCutscene = m_mission_timer + 1500 m_goals++ ENDIF ENDIF // Resume normal service IF m_goals = 53 IF timerCutscene < m_mission_timer flagCleaningUpSkippedCutscene = FALSE flagSkipCutscene = FALSE flagCutscenePlaying = FALSE m_goals = 8 ENDIF ENDIF // Continuous updates // ------------------ // Look At IF flagAllowLookAt = TRUE // ...Carl IF timerCarlLookAtToreno = 0 // ...set up a 'look at' time GENERATE_RANDOM_INT_IN_RANGE 2000 3000 nTempInt timerCarlLookAtToreno = m_mission_timer + nTempInt ELSE // ...check if 'look at' time has expired IF timerCarlLookAtToreno < m_mission_timer // ...time to change 'look at' action IF flagCarlLookingAtToreno = TRUE // ...currently looking, so cancel CLEAR_LOOK_AT scplayer flagCarlLookingAtToreno = FALSE ELSE // ...currently not looking, so look TASK_LOOK_AT_CHAR scplayer charToreno MANSION2_PERSIST flagCarlLookingAtToreno = TRUE ENDIF timerCarlLookAtToreno = 0 ENDIF ENDIF // ...Toreno IF timerTorenoLookAtCarl = 0 // ...set up a 'look at' time GENERATE_RANDOM_INT_IN_RANGE 1000 4000 nTempInt timerTorenoLookAtCarl = m_mission_timer + nTempInt ELSE // ...check if 'look at' time has expired IF timerTorenoLookAtCarl < m_mission_timer // ...time to change 'look at' action IF flagTorenoLookingAtCarl = TRUE // ...currently looking, so cancel CLEAR_LOOK_AT charToreno flagTorenoLookingAtCarl = FALSE ELSE // ...currently not looking, so look TASK_LOOK_AT_CHAR charToreno scplayer MANSION2_PERSIST flagTorenoLookingAtCarl = TRUE ENDIF timerTorenoLookAtCarl = 0 ENDIF ENDIF ENDIF // Exit // ---- IF m_goals = 99 GOSUB Mansion2_Next_Stage ENDIF RETURN // **************************************** // STAGE: Carl enters speedboat and heads for big boat Mansion2_Head_Towards_Carrier: flagSpeedboatAlive = TRUE IF IS_CAR_DEAD carSpeedboat flagSpeedboatAlive = FALSE ENDIF // Initialisation // -------------- IF m_goals = 0 // Add Carrier's moveable parts CREATE_OBJECT_NO_OFFSET CARRIER_LIFT1_SFSE -1456.719 501.297 9.914 objectCarrierBigLift CREATE_OBJECT_NO_OFFSET CARRIER_LIFT2_SFSE -1414.453 516.453 16.688 objectCarrierSmallLift CREATE_OBJECT_NO_OFFSET CARRIER_DOOR_SFSE -1465.797 501.289 1.145 objectCarrierBackDoor // Add a blip on the speedboat ADD_BLIP_FOR_CAR carSpeedboat blipSpeedboat SET_BLIP_AS_FRIENDLY blipSpeedboat TRUE // Create Enemy Boat CLEAR_AREA -1519.8431 590.9230 0.0000 20.0 TRUE CREATE_CAR LAUNCH -1519.8431 590.9230 0.0000 carEnemyBoat SET_CAR_HEADING carEnemyBoat 202.1246 ANCHOR_BOAT carEnemyBoat TRUE // Create Guards on Enemy Boat // ...driver nTempInt = MANSION2_GUARD_BOAT_DRIVER CREATE_CHAR_INSIDE_CAR carEnemyBoat PEDTYPE_MISSION2 ARMY charGuards[nTempInt] SET_CHAR_DECISION_MAKER charGuards[nTempInt] dmEmpty GIVE_WEAPON_TO_CHAR charGuards[nTempInt] WEAPONTYPE_M4 300 SET_CURRENT_CHAR_WEAPON charGuards[nTempInt] WEAPONTYPE_M4 SET_CHAR_IS_TARGET_PRIORITY charGuards[nTempInt] TRUE // ...guy on back nTempInt = MANSION2_GUARD_BOAT_BACK CREATE_CHAR PEDTYPE_MISSION2 ARMY -1429.3545 497.0963 2.039 charGuards[nTempInt] SET_CHAR_DECISION_MAKER charGuards[nTempInt] dmEmpty ATTACH_CHAR_TO_CAR charGuards[nTempInt] carEnemyBoat 0.0 -3.5 1.3 FACING_FORWARD 0.0 WEAPONTYPE_M4 GIVE_WEAPON_TO_CHAR charGuards[nTempInt] WEAPONTYPE_M4 300 SET_CURRENT_CHAR_WEAPON charGuards[nTempInt] WEAPONTYPE_M4 SET_CHAR_IS_TARGET_PRIORITY charGuards[nTempInt] TRUE // ...guy in front nTempInt = MANSION2_GUARD_BOAT_FRONT CREATE_CHAR PEDTYPE_MISSION2 ARMY -1428.7229 500.4720 2.0391 charGuards[nTempInt] SET_CHAR_DECISION_MAKER charGuards[nTempInt] dmEmpty ATTACH_CHAR_TO_CAR charGuards[nTempInt] carEnemyBoat 0.0 4.0 1.3 FACING_FORWARD 0.0 WEAPONTYPE_M4 GIVE_WEAPON_TO_CHAR charGuards[nTempInt] WEAPONTYPE_M4 300 SET_CURRENT_CHAR_WEAPON charGuards[nTempInt] WEAPONTYPE_M4 SET_CHAR_IS_TARGET_PRIORITY charGuards[nTempInt] TRUE // Set up Harrier doing Fly Past statusHarrierFlyPast = 0 // Set up the destination xposDestination = -1459.1429 yposDestination = 501.0938 zposDestination = 2.7322 PRINT_NOW MAN2_20 7000 1 // ~s~There's a silenced pistol and a knife in the ~b~speedboat~s~. // Allow ambient cars again for now SET_CAR_DENSITY_MULTIPLIER 1.0 // Indicate that the 'Big Lift' plane isn't on board the carrier flagPlanesOnCarrier[MANSION2_PLANE_BIG_LIFT] = FALSE // Load the Mission Audio soundban LOAD_MISSION_AUDIO MANSION2_SFX_SLOT SOUND_BANK_VERTICAL_BIRD // Make sure the player doesn't get a 6* rating whenever he sets foot on the aircraft carrier SET_DISABLE_MILITARY_ZONES TRUE flagBeenInSpeedboat = FALSE flagBeenCloseToCarrier = FALSE flagBeenCloseToEnemyBoat = FALSE flagDisplayedGotoCarrierText = FALSE flagRaiseBackDoor = FALSE flagLowerBackDoor = FALSE flagLowerBackDoorQuickly = FALSE timerLowerBackDoor = 0 flagCutscenePlaying = FALSE flagCleaningUpSkippedCutscene = FALSE flagSkipCutscene = FALSE m_goals++ ENDIF // Failure Conditions // ------------------ // Subgoals // -------- // Check if it is time to trigger the cutscene IF m_goals = 1 IF flagBeenCloseToCarrier = TRUE OR flagBeenCloseToEnemyBoat = TRUE nRequiredConversationID = MANSION2_CONVERSATION_SNEAK_INTO_CARRIER GOSUB Mansion2_Conversation_Command_Prepare // Ensure checking for being close to enemy boat (for triggering cutscene) no longer occurs flagBeenCloseToEnemyBoat = TRUE // Clear the area near the Carrier CLEAR_AREA -1357.0 502.0 10.0 300.0 FALSE // Set Widescreen and remove player control SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF // Switch camera view // SET_FIXED_CAMERA_POSITION -1527.7502 551.4941 15.8335 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -1526.9746 550.8938 15.6386 JUMP_CUT SET_FIXED_CAMERA_POSITION -1513.6138 559.4036 22.2746 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1513.0756 558.6777 21.8463 JUMP_CUT // Start raising the back door flagRaiseBackDoor = TRUE IF flagCarrierBackDoorAudioPlaying = FALSE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierBackDoor SOUND_VERTICAL_BIRD_LIFT_START flagCarrierBackDoorAudioPlaying = TRUE ENDIF // Make the boat steer towards the ship aiGuards[MANSION2_GUARD_BOAT_DRIVER] = MANSION2_GUARDAI_STEER_BOAT_TO_SHIP flagCutscenePlaying = TRUE m_goals++ ENDIF ENDIF // Trigger the cutscene IF m_goals = 2 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE // When the speech has loaded, trigger it IF NOT nCurrentConversationID = MANSION2_CONVERSATION_SNEAK_INTO_CARRIER nRequiredConversationID = MANSION2_CONVERSATION_SNEAK_INTO_CARRIER GOSUB Mansion2_Conversation_Command_Prepare ENDIF IF nCurrentConversationID = MANSION2_CONVERSATION_SNEAK_INTO_CARRIER GOSUB Mansion2_Conversation_Command_Play // Keep this camera view for a while timerCutscene = m_mission_timer + 6800 m_goals++ ENDIF ENDIF ENDIF // When timer has elapsed, switch the camera view again IF m_goals = 3 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE IF timerCutscene < m_mission_timer // Switch to a different camera view SET_FIXED_CAMERA_POSITION -1474.7386 526.7202 16.2159 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1474.9915 525.8577 15.7775 JUMP_CUT timerCutscene = m_mission_timer + 3700 m_goals++ ENDIF ENDIF ENDIF // Check for speech completion IF m_goals = 4 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals = 50 ELSE IF timerCutscene < m_mission_timer IF IS_BIT_SET bitsConversationsPlayed MANSION2_CONVERSATION_SNEAK_INTO_CARRIER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER flagCutscenePlaying = FALSE m_goals++ ENDIF ENDIF ENDIF ENDIF // RETURN HERE WHEN CUTSCENE COMPLETE IF m_goals = 5 PRINT_NOW MAN2_32 8000 1 m_goals = 99 ENDIF // Skipped Cutscene stuff // ---------------------- // Check if the cutscene was skipped // NOTE: Should never enter here unless skipped IF flagCutscenePlaying = TRUE AND flagSkipCutscene = FALSE IF IS_SKIP_CUTSCENE_BUTTON_PRESSED // Cutscene was skipped flagSkipCutscene = TRUE ENDIF ENDIF // fade out IF m_goals = 50 DO_FADE 500 FADE_OUT timerCutscene = m_mission_timer + 500 flagCleaningUpSkippedCutscene = TRUE m_goals++ ENDIF // Clean up the skipped cutscene IF m_goals = 51 IF timerCutscene < m_mission_timer // Set all the stuff that needs set when the cutscene gets interrupted // Cancel speech IF NOT IS_BIT_SET bitsConversationsPlayed MANSION2_CONVERSATION_SNEAK_INTO_CARRIER GOSUB Mansion2_Conversation_Command_Cancel ENDIF // ...set the back door fully open SET_OBJECT_COORDINATES objectCarrierBackDoor -1468.492 501.289 11.109 // ...move the enemy boat closer to the carrier IF NOT IS_CAR_DEAD carEnemyBoat SET_CAR_COORDINATES carEnemyBoat -1446.2179 491.9281 0.0 SET_CAR_HEADING carEnemyBoat 270.0 ENDIF // ...update the boat driver's AI IF NOT IS_CHAR_DEAD charGuards[MANSION2_GUARD_BOAT_DRIVER] IF NOT aiGuards[MANSION2_GUARD_BOAT_DRIVER] = MANSION2_GUARDAI_STEERING_BOAT_INTO_SHIP aiGuards[MANSION2_GUARD_BOAT_DRIVER] = MANSION2_GUARDAI_STEER_BOAT_INTO_SHIP ENDIF ENDIF // ...switch off the cutscene camera stuff SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER DO_FADE 1500 FADE_IN timerCutscene = m_mission_timer + 1500 m_goals++ ENDIF ENDIF // Resume normal service IF m_goals = 52 IF timerCutscene < m_mission_timer flagCleaningUpSkippedCutscene = FALSE flagSkipCutscene = FALSE flagCutscenePlaying = FALSE m_goals = 5 ENDIF ENDIF // Continuous updates // ------------------ // Blip Maintenance IF flagBeenCloseToCarrier = FALSE IF flagSpeedboatAlive = TRUE IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1397.0 552.0 17.0 150.0 110.0 25.0 FALSE // Close to the ship, so display destination blip IF NOT DOES_BLIP_EXIST blipDestination ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination ENDIF // Remove speedboat blip REMOVE_BLIP blipSpeedboat // Cancel the 'where to go' speech if it hasn't been issued IF NOT IS_BIT_SET bitsConversationsPlayed MANSION2_CONVERSATION_GOTO_CARRIER SET_BIT bitsConversationsPlayed MANSION2_CONVERSATION_GOTO_CARRIER ENDIF flagBeenCloseToCarrier = TRUE ELSE // Not close to the ship, so display speedboat blip if not in it IF IS_CHAR_IN_CAR scplayer carSpeedboat // ...in speedboat, so display destination blip IF NOT DOES_BLIP_EXIST blipDestination ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination ENDIF // Remove speedboat blip REMOVE_BLIP blipSpeedboat ELSE // ...not in speedboat, so display speedboat blip IF NOT DOES_BLIP_EXIST blipSpeedboat ADD_BLIP_FOR_CAR carSpeedboat blipSpeedboat SET_BLIP_AS_FRIENDLY blipSpeedboat TRUE ENDIF // Remove destination blip REMOVE_BLIP blipDestination ENDIF ENDIF ELSE // ...speedboat dead REMOVE_BLIP blipSpeedboat // Display destination blip IF NOT DOES_BLIP_EXIST blipDestination ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination ENDIF ENDIF ENDIF // Speedboat weaponry IF flagBeenInSpeedboat = FALSE IF flagSpeedboatAlive = TRUE IF IS_CHAR_IN_CAR scplayer carSpeedboat // Give the player the silenced pistol and the knife GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_PISTOL_SILENCED 30 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_KNIFE 0 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PISTOL_SILENCED // Prepare and Play the 'Goto Carrier' Toreno speech nRequiredConversationID = MANSION2_CONVERSATION_GOTO_CARRIER GOSUB Mansion2_Conversation_Command_Prepare GOSUB Mansion2_Conversation_Command_Play flagBeenInSpeedboat = TRUE ENDIF ENDIF ENDIF // Display the 'goto carrier' text? IF flagDisplayedGotoCarrierText = FALSE IF flagBeenCloseToCarrier = FALSE IF DOES_BLIP_EXIST blipDestination IF IS_BIT_SET bitsConversationsPlayed MANSION2_CONVERSATION_GOTO_CARRIER PRINT_NOW MAN2_21 7000 1 flagDisplayedGotoCarrierText = TRUE ENDIF ENDIF ENDIF ENDIF // Check if the back door should be raised IF flagRaiseBackDoor = TRUE IF SLIDE_OBJECT objectCarrierBackDoor -1468.492 501.289 11.109 0.04 0.04 0.05 FALSE flagRaiseBackDoor = FALSE IF flagCarrierBackDoorAudioPlaying = TRUE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierBackDoor SOUND_VERTICAL_BIRD_LIFT_STOP flagCarrierBackDoorAudioPlaying = FALSE ENDIF ENDIF ENDIF // Trigger cutscene? IF flagBeenCloseToEnemyBoat = FALSE IF IS_CAR_DEAD carEnemyBoat // ...no longer do this check flagBeenCloseToEnemyBoat = TRUE ENDIF IF flagBeenCloseToEnemyBoat = FALSE GET_CAR_COORDINATES carEnemyBoat xposTemp yposTemp zposTemp IF LOCATE_CHAR_ANY_MEANS_3D scplayer xposTemp yposTemp zposTemp 100.0 100.0 30.0 FALSE flagBeenCloseToEnemyBoat = TRUE ENDIF ENDIF ENDIF // Update AI GOSUB Mansion2_Maintain_GuardAI GOSUB Mansion2_Maintain_MechanicAI // Update Harrier Fly Past GOSUB Mansion2_Maintain_Harrier_FlyPast // Exit // ---- IF m_goals = 99 GOSUB Mansion2_Next_Stage ENDIF RETURN // **************************************** // STAGE: Carl enters the aircraft carrier before the big ship's arse shuts Mansion2_Enter_Aircraft_Carrier: // Initialisation // -------------- IF m_goals = 0 flagLowerBackDoor = FALSE flagLowerBackDoorQuickly = FALSE flagPlayerInCarrier = FALSE flagGuardsImmediateActivation = FALSE // Delete flypast harrier if it still exists IF NOT IS_CAR_DEAD carPlanes[MANSION2_PLANE_BIG_LIFT] DELETE_CAR carPlanes[MANSION2_PLANE_BIG_LIFT] ENDIF flagCutscenePlaying = FALSE flagCleaningUpSkippedCutscene = FALSE flagSkipCutscene = FALSE m_goals++ ENDIF // Failure Conditions // ------------------ // Subgoals // -------- // Check for the player getting inside the aircraft carrier's arse IF m_goals = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer xposDestination yposDestination zposDestination 4.0 13.5 5.0 FALSE // Tidy up REMOVE_BLIP blipDestination REMOVE_BLIP blipSpeedboat // Player made it flagPlayerInCarrier = TRUE SET_PLAYER_CONTROL player1 OFF // Make the AI think it is in an interior for stealth-type lighting calculations FORCE_INTERIOR_LIGHTING_FOR_PLAYER player1 TRUE // Make the player shut up DISABLE_CHAR_SPEECH scplayer FALSE // Immediately start lowering the back door timerLowerBackDoor = 0 flagLowerBackDoor = TRUE flagLowerBackDoorQuickly = TRUE IF flagCarrierBackDoorAudioPlaying = FALSE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierBackDoor SOUND_VERTICAL_BIRD_LIFT_START flagCarrierBackDoorAudioPlaying = TRUE ENDIF flagLowerSmallLift = FALSE // Fade out SET_FADING_COLOUR 0 0 0 DO_FADE 200 FADE_OUT timerCutscene = m_mission_timer + 400 m_goals++ ENDIF ENDIF // Start cutscene: Move camera to SAM sites IF m_goals = 2 IF timerCutscene < m_mission_timer // Set up the cutscene ALTER_WANTED_LEVEL Player1 0 // Set up some stuff // LOAD_SCENE -1439.5457 489.3506 3.8546 LOAD_SCENE_IN_DIRECTION -1439.5457 489.3506 3.8546 300.0 // FORCE_WEATHER_NOW WEATHER_SUNNY_SF SET_RADAR_ZOOM 90 SHOW_BLIPS_ON_ALL_LEVELS TRUE // Add new blip for SAM site control room xposDestination = -1288.0844 yposDestination = 490.5533 zposDestination = 10.2026 ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination // Temporarily move player to keep him out of trouble and to ensure the SAM site control room highlight is displayed SET_CHAR_COORDINATES scplayer -1327.9574 507.4273 0.0000 SET_CHAR_HEADING scplayer 84.8851 // Create the 2 Harriers that will be shown in the cutscene nTempInt = MANSION2_PLANE_INSIDE CREATE_CAR HYDRA -1423.62 497.13 10.19 carPlanes[nTempInt] SET_CAR_HEADING carPlanes[nTempInt] 62.12 flagPlanesOnCarrier[nTempInt] = TRUE nTempInt = MANSION2_PLANE_SMALL_LIFT CREATE_CAR HYDRA -1416.47 515.36 16.91 carPlanes[nTempInt] SET_CAR_HEADING carPlanes[nTempInt] 270.0 flagPlanesOnCarrier[nTempInt] = TRUE // ...and pilot CREATE_CHAR_INSIDE_CAR carPlanes[nTempInt] PEDTYPE_MISSION2 ARMY charGuards[MANSION2_GUARD_PILOT_SMALL_LIFT] SET_CHAR_DECISION_MAKER charGuards[MANSION2_GUARD_PILOT_SMALL_LIFT] dmEmpty SET_CHAR_IS_TARGET_PRIORITY charGuards[MANSION2_GUARD_PILOT_SMALL_LIFT] TRUE // Wait briefly before fade in timerCutscene = m_mission_timer + 2000 flagCutscenePlaying = TRUE m_goals++ ENDIF ENDIF // Fade in, aiming at control room IF m_goals = 3 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE IF timerCutscene < m_mission_timer SWITCH_WIDESCREEN ON // Move camera to SAM site control room SET_FIXED_CAMERA_POSITION -1304.9261 489.9207 11.6599 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1304.0475 490.3978 11.6435 JUMP_CUT // INFO: switch off SAM sites PRINT_NOW MAN2_22 6000 1 timerCutscene = m_mission_timer + 4000 // Fade in DO_FADE 500 FADE_IN m_goals++ ENDIF ENDIF ENDIF // Display the SAM site control room highlight while waiting to start the lift IF m_goals = 4 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE // ...keep displaying control room highlight LOCATE_CHAR_ON_FOOT_3D scplayer xposDestination yposDestination zposDestination 1.0 1.0 2.0 TRUE IF timerCutscene < m_mission_timer // Start the Harrier lift moving, but keep displaying the SAM site for a while longer flagLowerSmallLift = TRUE IF flagCarrierSmallLiftAudioPlaying = FALSE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierSmallLift SOUND_VERTICAL_BIRD_LIFT_START flagCarrierSmallLiftAudioPlaying = TRUE ENDIF timerCutscene = m_mission_timer + 1800 m_goals++ ENDIF ENDIF ENDIF // Switch to the Harrier camera IF m_goals = 5 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE // ...keep displaying control room highlight LOCATE_CHAR_ON_FOOT_3D scplayer xposDestination yposDestination zposDestination 1.0 1.0 2.0 TRUE IF timerCutscene < m_mission_timer // Move camera to Harrier SET_FIXED_CAMERA_POSITION -1400.1672 517.7336 11.9235 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1401.0795 518.1353 12.0041 JUMP_CUT // INFO: steal a jet PRINT_NOW MAN2_25 5000 1 // ~s~Steal one of the military jets. timerCutscene = m_mission_timer + 3800 // Set up activation time for the Small Lift Harrier pilot's AI timerGuardsAI[MANSION2_GUARD_PILOT_SMALL_LIFT] = m_mission_timer + 2500 // Move the player back to a safe position IF IS_CHAR_IN_ANY_CAR scplayer // ...player is in a vehicle SET_CHAR_COORDINATES scplayer -1446.3328 506.7063 -2.0890 SET_CHAR_HEADING scplayer 256.1819 IF IS_CHAR_IN_ANY_BOAT scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car ANCHOR_BOAT car TRUE ENDIF // Make sure the guards react flagGuardsImmediateActivation = TRUE ELSE // ...player is swimming SET_CHAR_COORDINATES scplayer -1455.5585 497.0678 -2.0890 SET_CHAR_HEADING scplayer 256.1819 // ...check if the speedboat is inside the carrier IF NOT IS_CAR_DEAD carSpeedboat IF IS_CAR_IN_AREA_3D carSpeedboat -1466.0829 490.7395 -2.0 -1434.1390 511.8560 3.0 FALSE // ...reposition the speedboat SET_CAR_COORDINATES carSpeedboat -1446.3328 506.7063 -2.0890 SET_CAR_HEADING carSpeedboat 256.1819 // ...set the guards on alert flagGuardsImmediateActivation = TRUE ELSE // ...delete the speedboat DELETE_CAR carSpeedboat ENDIF ENDIF ENDIF m_goals++ ENDIF ENDIF ENDIF // While still displaying the Harrier camera, activate the walking guards IF m_goals = 6 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE IF timerGuardsAI[MANSION2_GUARD_PILOT_SMALL_LIFT] < m_mission_timer AND NOT timerGuardsAI[MANSION2_GUARD_PILOT_SMALL_LIFT] = 0 aiGuards[MANSION2_GUARD_PILOT_SMALL_LIFT] = MANSION2_GUARDAI_ACTIVATION timerGuardsAI[MANSION2_GUARD_PILOT_SMALL_LIFT] = 0 ENDIF IF timerCutscene < m_mission_timer // Activate Walking Guards nTempInt = MANSION2_GUARD_BOAT_BACK IF NOT aiGuards[nTempInt] = MANSION2_GUARDAI_DEAD aiGuards[nTempInt] = MANSION2_GUARDAI_WALK_HOME ENDIF nTempInt = MANSION2_GUARD_BOAT_FRONT IF NOT aiGuards[nTempInt] = MANSION2_GUARDAI_DEAD aiGuards[nTempInt] = MANSION2_GUARDAI_WALK_HOME ENDIF timerCutscene = m_mission_timer + 1000 m_goals++ ENDIF ENDIF ENDIF // Display the Harrier camera for a while, then switch to the Guards camera IF m_goals = 7 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE IF timerCutscene < m_mission_timer // Switch to Guards camera // SET_FIXED_CAMERA_POSITION -1392.5663 496.0909 3.6179 0.0 0.0 0.0 // // IF NOT IS_CHAR_DEAD charGuards[MANSION2_GUARD_BOAT_BACK] // POINT_CAMERA_AT_CHAR charGuards[MANSION2_GUARD_BOAT_BACK] FIXED JUMP_CUT // ENDIF SET_FIXED_CAMERA_POSITION -1395.6106 493.0729 5.3645 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1394.9767 493.8029 5.1090 JUMP_CUT // Change the weather FORCE_WEATHER_NOW WEATHER_SUNNY_SF // INFO: be wary of guards PRINT_NOW MAN2_23 6000 1 timerCutscene = m_mission_timer + 5800 m_goals++ ENDIF ENDIF ENDIF // Check if the cutscene should end IF m_goals = 8 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals = 50 ELSE IF timerCutscene < m_mission_timer // Give the player a decent heading SET_CHAR_HEADING scplayer 256.1819 // Restore player controls SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON flagCutscenePlaying = FALSE m_goals++ ENDIF ENDIF ENDIF // RETURN HERE WHEN CUTSCENE FINISHED IF m_goals = 9 CHECKPOINT_SAVE 99 // Activate the AI of the Guard on top watching the Harriers and give him a blip aiGuards[MANSION2_GUARD_HARRIER_GUIDE] = MANSION2_GUARDAI_ACTIVATION flagGuardsAllowAlert[MANSION2_GUARD_HARRIER_GUIDE] = TRUE // Show blips for all Guards (except small lift harrier pilot, whose blip will appear after teleport to avoid glitch) REPEAT MANSION2_MAX_GUARDS nLoop IF NOT aiGuards[nLoop] = MANSION2_GUARDAI_DEAD AND NOT aiGuards[nLoop] = MANSION2_GUARDAI_NOT_INITIALISED AND NOT IS_CHAR_DEAD charGuards[nLoop] IF NOT nLoop = MANSION2_GUARD_PILOT_SMALL_LIFT ADD_BLIP_FOR_CHAR charGuards[nLoop] blipGuards[nLoop] CHANGE_BLIP_DISPLAY blipGuards[nLoop] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR blipGuards[nLoop] TRUE ENDIF ENDIF ENDREPEAT // // Show blip for Harrier_Guide (he currently has no AI but should get his blip) // IF NOT DOES_BLIP_EXIST blipGuards[MANSION2_GUARD_HARRIER_GUIDE] // ADD_BLIP_FOR_CHAR charGuards[MANSION2_GUARD_HARRIER_GUIDE] blipGuards[MANSION2_GUARD_HARRIER_GUIDE] // CHANGE_BLIP_DISPLAY blipGuards[MANSION2_GUARD_HARRIER_GUIDE] BLIP_ONLY // SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR blipGuards[MANSION2_GUARD_HARRIER_GUIDE] TRUE // ENDIF // Teleport the Small Lift Harrier pilot (so he doesn't end up in the water) aiGuards[MANSION2_GUARD_PILOT_SMALL_LIFT] = MANSION2_GUARDAI_TELEPORT // If Carl has been detected, activate the Guard and the Mechanic // IF IS_CHAR_IN_ANY_CAR scplayer IF flagGuardsImmediateActivation = TRUE // ...player detected, so activate nReasonForDetection = MANSION2_DETECTED_TOO_MUCH_NOISE nTempInt = MANSION2_GUARD_BOAT_DRIVER IF NOT aiGuards[nTempInt] = MANSION2_GUARDAI_DEAD aiGuards[nTempInt] = MANSION2_GUARDAI_RUN_ATTACK ENDIF nTempInt = MANSION2_MECHANIC_DOWNSTAIRS IF NOT aiMechanics[nTempInt] = MANSION2_MECHANICAI_DEAD aiMechanics[nTempInt] = MANSION2_MECHANICAI_GOTO_ALARM ENDIF // The player made too much noise entering the Aircraft Carrier PRINT_NOW MAN2_46 5000 1 ELSE // ...player not detected, so make the Boat Driver chat to the Mechanic nTempInt = MANSION2_GUARD_BOAT_DRIVER IF NOT aiGuards[nTempInt] = MANSION2_GUARDAI_DEAD aiGuards[nTempInt] = MANSION2_GUARDAI_CHAT ENDIF nTempInt = MANSION2_MECHANIC_DOWNSTAIRS IF NOT aiMechanics[nTempInt] = MANSION2_MECHANICAI_DEAD aiMechanics[nTempInt] = MANSION2_MECHANICAI_CHAT ENDIF ENDIF // Allow Mechanic Senses updates flagAllowMechanicSensesUpdates = TRUE m_goals = 99 ENDIF // Skipped Cutscene stuff // ---------------------- // Check if the cutscene was skipped // NOTE: Should never enter here unless skipped IF flagCutscenePlaying = TRUE AND flagSkipCutscene = FALSE // Cutscene was skipped IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flagSkipCutscene = TRUE ENDIF ENDIF // fade out IF m_goals = 50 DO_FADE 500 FADE_OUT timerCutscene = m_mission_timer + 500 flagCleaningUpSkippedCutscene = TRUE m_goals++ ENDIF // Clean up the skipped cutscene IF m_goals = 51 IF timerCutscene < m_mission_timer // Set all the stuff that needs set when the cutscene gets interrupted // ...lower the small lift flagLowerSmallLift = TRUE IF flagCarrierSmallLiftAudioPlaying = FALSE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierSmallLift SOUND_VERTICAL_BIRD_LIFT_START flagCarrierSmallLiftAudioPlaying = TRUE ENDIF // ...move the player back to a safe position IF IS_CHAR_IN_ANY_CAR scplayer // ...player is in a vehicle SET_CHAR_COORDINATES scplayer -1446.3328 506.7063 -2.0890 SET_CHAR_HEADING scplayer 256.1819 IF IS_CHAR_IN_ANY_BOAT scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car ANCHOR_BOAT car TRUE ENDIF // Make sure the guards react flagGuardsImmediateActivation = TRUE ELSE // ...player is swimming SET_CHAR_COORDINATES scplayer -1455.5585 497.0678 -2.0890 SET_CHAR_HEADING scplayer 256.1819 // ...check if the speedboat is inside the carrier IF NOT IS_CAR_DEAD carSpeedboat IF IS_CAR_IN_AREA_3D carSpeedboat -1466.0829 490.7395 -2.0 -1434.1390 511.8560 3.0 FALSE // ...reposition the speedboat SET_CAR_COORDINATES carSpeedboat -1446.3328 506.7063 -2.0890 SET_CAR_HEADING carSpeedboat 256.1819 // ...set the guards on alert flagGuardsImmediateActivation = TRUE ELSE // ...delete the speedboat DELETE_CAR carSpeedboat ENDIF ENDIF ENDIF // ...activate Walking Guards nTempInt = MANSION2_GUARD_BOAT_BACK IF NOT aiGuards[nTempInt] = MANSION2_GUARDAI_DEAD aiGuards[nTempInt] = MANSION2_GUARDAI_WALK_HOME ENDIF nTempInt = MANSION2_GUARD_BOAT_FRONT IF NOT aiGuards[nTempInt] = MANSION2_GUARDAI_DEAD aiGuards[nTempInt] = MANSION2_GUARDAI_WALK_HOME ENDIF // Activate the Small Lift Harrier pilot's AI if skipped in cutscene IF aiGuards[MANSION2_GUARD_PILOT_SMALL_LIFT] = MANSION2_GUARDAI_NOT_INITIALISED aiGuards[MANSION2_GUARD_PILOT_SMALL_LIFT] = MANSION2_GUARDAI_ACTIVATION ENDIF // Change the weather FORCE_WEATHER_NOW WEATHER_SUNNY_SF // ...restore player controls SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON flagCutscenePlaying = FALSE DO_FADE 1500 FADE_IN timerCutscene = m_mission_timer + 1500 m_goals++ ENDIF ENDIF // Resume normal service IF m_goals = 52 IF timerCutscene < m_mission_timer flagCleaningUpSkippedCutscene = FALSE flagSkipCutscene = FALSE flagCutscenePlaying = FALSE m_goals = 9 ENDIF ENDIF // Continuous updates // ------------------ IF flagLowerSmallLift = TRUE IF SLIDE_OBJECT objectCarrierSmallLift -1414.453 516.453 9.648 0.05 0.05 0.05 FALSE flagLowerSmallLift = FALSE IF flagCarrierSmallLiftAudioPlaying = TRUE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierSmallLift SOUND_VERTICAL_BIRD_LIFT_STOP flagCarrierSmallLiftAudioPlaying = FALSE ENDIF ENDIF ENDIF // Check if the back door should be lowered IF flagLowerBackDoor = TRUE IF flagLowerBackDoorQuickly = TRUE IF SLIDE_OBJECT objectCarrierBackDoor -1465.797 501.289 1.145 0.04 0.04 0.30 FALSE flagLowerBackDoor = FALSE IF flagCarrierBackDoorAudioPlaying = TRUE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierBackDoor SOUND_VERTICAL_BIRD_LIFT_STOP flagCarrierBackDoorAudioPlaying = FALSE ENDIF ENDIF ELSE IF SLIDE_OBJECT objectCarrierBackDoor -1465.797 501.289 1.145 0.04 0.04 0.05 FALSE flagLowerBackDoor = FALSE IF flagCarrierBackDoorAudioPlaying = TRUE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierBackDoor SOUND_VERTICAL_BIRD_LIFT_STOP flagCarrierBackDoorAudioPlaying = FALSE ENDIF // Has the player made it into the Carrier? IF flagPlayerInCarrier = FALSE // ...no m_failed = TRUE m_fail_reason = MANSION2_FAILED_NOT_IN_CARRIER RETURN ENDIF ENDIF ENDIF ENDIF // Update AI GOSUB Mansion2_Maintain_GuardAI GOSUB Mansion2_Maintain_MechanicAI // Back Door maintenance IF NOT timerLowerBackDoor = 0 IF timerLowerBackDoor < m_mission_timer timerLowerBackDoor = 0 flagLowerBackDoor = TRUE IF flagCarrierBackDoorAudioPlaying = FALSE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierBackDoor SOUND_VERTICAL_BIRD_LIFT_START flagCarrierBackDoorAudioPlaying = TRUE ENDIF // Back Door closing PRINT_NOW MAN2_31 7000 1 ENDIF ENDIF // Exit // ---- IF m_goals = 99 GOSUB Mansion2_Next_Stage ENDIF RETURN // **************************************** // STAGE: Enter Harrier Mansion2_Enter_Harrier: // Initialisation // -------------- IF m_goals = 0 flagReachedControlRoom = FALSE // Switch off ambient cars and peds SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 SWITCH_AMBIENT_PLANES OFF // Create the other Harrier that starts on the Carrier nTempInt = MANSION2_PLANE_TAKEOFF CREATE_CAR HYDRA -1333.2310 507.6329 17.2266 carPlanes[nTempInt] SET_CAR_HEADING carPlanes[nTempInt] 270.0 flagPlanesOnCarrier[nTempInt] = TRUE // Create the three alarms nTempInt = MANSION2_ALARM_DOWNSTAIRS CREATE_OBJECT KMB_KEYPAD -1414.5495 514.4193 2.9391 objectAlarms[nTempInt] SET_OBJECT_HEADING objectAlarms[nTempInt] 180.0 nTempInt = MANSION2_ALARM_UPSTAIRS_HARRIERS CREATE_OBJECT KMB_KEYPAD -1313.1726 488.3687 11.1026 objectAlarms[nTempInt] nTempInt = MANSION2_ALARM_UPSTAIRS_CONTROL_ROOM CREATE_OBJECT KMB_KEYPAD -1412.1975 488.3644 11.1026 objectAlarms[nTempInt] // Switch off the radio for the next vehicle (which should be the plane, but could be a forklift) SET_RADIO_CHANNEL RS_OFF flagDisplayedFlyingHelp = FALSE flagDisplayedFlyingHelp2 = FALSE flagDisplayedControlRoomWarning = FALSE flagPlayerFlyingHarrier = FALSE flagShowingSmallLiftCamera = FALSE flagShowingBigLiftCamera = FALSE flagReorganisedPlanes = FALSE flagPlayedHarrierTakeoff = FALSE flagPlayedHarrierLanding = FALSE flagPlayerFiringGun = FALSE flagPlayerFiringSilencedGun = FALSE flagDisplayedGotoHarrierText = FALSE statusHarrierTakeoff = -1 statusHarrierLanding = -1 flagCutscenePlaying = FALSE flagCleaningUpSkippedCutscene = FALSE flagSkipCutscene = FALSE m_goals++ ENDIF // Failure Conditions // ------------------ // Have all enemy planes been destroyed? // NOTE: If flagTempFlag is TRUE then there is a plane on the Carrier that is not dead flagTempFlag = FALSE REPEAT MANSION2_MAX_PLANES nLoop IF flagPlanesOnCarrier[nLoop] = TRUE IF NOT IS_CAR_DEAD carPlanes[nLoop] flagTempFlag = TRUE ENDIF ENDIF ENDREPEAT IF flagTempFlag = FALSE // ...all planes dead m_failed = TRUE m_fail_reason = MANSION2_FAILED_NO_PLANES_LEFT RETURN ENDIF // Is the player outside the carrier? IF NOT IS_CHAR_IN_MODEL scplayer HYDRA GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp IF yposTemp < 484.0000 OR yposTemp > 523.0000 // ...player outside harrier m_failed = TRUE m_fail_reason = MANSION2_FAILED_LEFT_CARRIER RETURN ENDIF IF xposTemp < -1471.0000 OR xposTemp > -1246.0000 // ...player outside harrier m_failed = TRUE m_fail_reason = MANSION2_FAILED_LEFT_CARRIER RETURN ENDIF ENDIF // Subgoals // -------- // Check if player has reached SAM sites control room IF m_goals = 1 IF flagReachedControlRoom = TRUE SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_FIXED_CAMERA_POSITION -1291.5785 491.3468 13.2852 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1290.6862 491.1050 12.9042 JUMP_CUT SET_CHAR_COORDINATES scplayer xposDestination yposDestination zposDestination TASK_ACHIEVE_HEADING scplayer 270.0000 timerCutscene = m_mission_timer + 200 // ...remove SAM site control room blip REMOVE_BLIP blipDestination // ...add blip beside harriers ADD_BLIP_FOR_COORD -1432.4816 506.5725 10.1953 blipDestination // This warning won't be needed, so mark it as 'seen' flagDisplayedControlRoomWarning = TRUE flagCutscenePlaying = TRUE m_goals++ ENDIF // The player may have skipped past the control room section IF flagPlayerFlyingHarrier = TRUE m_goals = 6 ENDIF ENDIF // Check if the player has achieved the heading IF m_goals = 2 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE GET_SCRIPT_TASK_STATUS scplayer TASK_ACHIEVE_HEADING m_status IF NOT m_status = PERFORMING_TASK AND NOT m_status = WAITING_TO_START_TASK // Achieved heading, so play anim TASK_PLAY_ANIM scplayer Slot_bet_02 CASINO 4.0 FALSE FALSE FALSE FALSE 0 timerCutscene = m_mission_timer + 250 m_goals++ ENDIF ENDIF ENDIF // Check if the animation has finished IF m_goals = 3 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE IF timerCutscene < m_mission_timer IF NOT IS_CHAR_PLAYING_ANIM scplayer Slot_bet_02 // Animation finished, show SAM site // SET_FIXED_CAMERA_POSITION -1391.7766 490.7817 19.2745 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT -1392.5842 491.3141 19.5280 JUMP_CUT SET_FIXED_CAMERA_POSITION -1391.3046 490.2552 18.2899 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1392.1383 490.5674 18.7452 JUMP_CUT timerCutscene = m_mission_timer + 2000 m_goals++ ENDIF ENDIF ENDIF ENDIF // Wait for timeout IF m_goals = 4 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals++ ELSE IF timerCutscene < m_mission_timer // Switch off Aircraft Carrier SAM site SET_AIRCRAFT_CARRIER_SAM_SITE OFF timerCutscene = m_mission_timer + 1500 m_goals++ ENDIF ENDIF ENDIF // Wait for timeout IF m_goals = 5 IF flagSkipCutscene = TRUE // ...cutscene skipped m_goals = 50 ELSE IF timerCutscene < m_mission_timer // Restore player control HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON flagCutscenePlaying = FALSE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT // ...steal a harrier PRINT_NOW MAN2_25 15000 1 // ~s~Steal one of the military jets. m_goals++ ENDIF ENDIF ENDIF // RETURN HERE AFTER CUTSCENE FINISHED // NOTE: Goal 1 jumps to here, so if this goal number changes, update goal 1 // Check if player is flying a Harrier IF m_goals = 6 IF flagPlayerFlyingHarrier = TRUE IF flagShowingSmallLiftCamera = TRUE OR flagShowingBigLiftCamera = TRUE // ...restore the camera SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA ENDIF // ...remove SAM site control room blip REMOVE_BLIP blipDestination // ...remove all GUARD blips REPEAT MANSION2_MAX_GUARDS nLoop REMOVE_BLIP blipGuards[nLoop] ENDREPEAT m_goals = 99 ENDIF ENDIF // Skipped Cutscene stuff // ---------------------- // Check if the cutscene was skipped // NOTE: Should never enter here unless skipped IF flagCutscenePlaying = TRUE AND flagSkipCutscene = FALSE // Cutscene was skipped IF IS_SKIP_CUTSCENE_BUTTON_PRESSED flagSkipCutscene = TRUE ENDIF ENDIF // fade out IF m_goals = 50 DO_FADE 500 FADE_OUT timerCutscene = m_mission_timer + 500 flagCleaningUpSkippedCutscene = TRUE m_goals++ ENDIF // Clean up the skipped cutscene IF m_goals = 51 IF timerCutscene < m_mission_timer // Set all the stuff that needs set when the cutscene gets interrupted // ...switch off Aircraft Carrier SAM sites SET_AIRCRAFT_CARRIER_SAM_SITE OFF // Restore player control HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 1500 FADE_IN timerCutscene = m_mission_timer + 1500 m_goals++ ENDIF ENDIF // Resume normal service IF m_goals = 52 IF timerCutscene < m_mission_timer flagCleaningUpSkippedCutscene = FALSE flagSkipCutscene = FALSE flagCutscenePlaying = FALSE // ...steal a harrier PRINT_NOW MAN2_25 15000 1 // ~s~Steal one of the military jets. m_goals = 6 ENDIF ENDIF // Continuous updates // ------------------ // Has player reached control room? IF flagReachedControlRoom = FALSE IF LOCATE_CHAR_ON_FOOT_3D scplayer xposDestination yposDestination zposDestination 1.0 1.0 2.0 TRUE flagReachedControlRoom = TRUE ENDIF ENDIF // Has player climbed in a Harrier without switching off the SAM sites? IF flagDisplayedControlRoomWarning = FALSE IF IS_CHAR_IN_MODEL scplayer HYDRA PRINT_NOW MAN2_24 5000 1 flagDisplayedControlRoomWarning = TRUE ENDIF ENDIF // Has the flying help text been printed? IF flagDisplayedFlyingHelp = FALSE IF IS_CHAR_IN_MODEL scplayer HYDRA PRINT_HELP_FOREVER MAN2_70 // Use the steering controls to tilt the plane forward and back. PRINT_HELP_FOREVER MAN2_97 // Press ~m~~widget_explicit_flight_descend~ to toggle between jets mode and hover mode. flagDisplayedFlyingHelp = TRUE flagDisplayedFlyingHelp2 = FALSE timerHelpText = m_mission_timer + 15000 ENDIF ENDIF // Has help text 2 been displayed? IF flagDisplayedFlyingHelp = TRUE IF flagDisplayedFlyingHelp2 = FALSE IF timerHelpText < m_mission_timer CLEAR_HELP // Landing gear not used in mobile build. //PRINT_HELP_FOREVER MAN2_99 flagDisplayedFlyingHelp2 = TRUE timerHelpText = m_mission_timer + 10000 ENDIF ENDIF ENDIF // Has flying help 2 timed out? IF flagDisplayedFlyingHelp2 = TRUE IF NOT timerHelpText = 0 IF timerHelpText < m_mission_timer timerHelpText = 0 CLEAR_HELP ENDIF ENDIF ENDIF // Check if the Harrier Takeoff car recording should be played IF flagPlayedHarrierTakeoff = FALSE IF IS_CHAR_IN_MODEL scplayer HYDRA // ...player is in a Harrier IF IS_CHAR_IN_CAR scplayer carPlanes[MANSION2_PLANE_TAKEOFF] // ...player is in the takeoff harrier (somehow - shouldn't happen) flagPlayedHarrierTakeoff = TRUE ELSE // ...player is in any of the other Harriers START_PLAYBACK_RECORDED_CAR carPlanes[MANSION2_PLANE_TAKEOFF] MANSION2_CAR_RECORDING_HARRIER_TAKEOFF statusHarrierTakeoff = 0 flagPlayedHarrierTakeoff = TRUE ENDIF ELSE // ...player is not in a Harrier IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1347.6920 499.5881 17.2266 1.2 1.2 1.2 FALSE // ...player is at the top of the top staircase, so playback the recording START_PLAYBACK_RECORDED_CAR carPlanes[MANSION2_PLANE_TAKEOFF] MANSION2_CAR_RECORDING_HARRIER_TAKEOFF statusHarrierTakeoff = 0 flagPlayedHarrierTakeoff = TRUE ELSE IF IS_CHAR_TOUCHING_OBJECT scplayer objectCarrierSmallLift // ...player is touching the small lift, so playback the recording START_PLAYBACK_RECORDED_CAR carPlanes[MANSION2_PLANE_TAKEOFF] MANSION2_CAR_RECORDING_HARRIER_TAKEOFF statusHarrierTakeoff = 0 flagPlayedHarrierTakeoff = TRUE ENDIF ENDIF ENDIF ENDIF // Check if the Harrier Landing car recording should be played IF flagPlayedHarrierLanding = FALSE // Is the player at the top of the first flight of steps? IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1368.3029 496.5314 10.1854 5.0 5.0 4.0 FALSE statusHarrierLanding = 0 flagPlayedHarrierLanding = TRUE // ...also activate the Small Lift Harrier's wander IF flagGuardsOnAlert[MANSION2_GUARD_PILOT_SMALL_LIFT] = FALSE aiGuards[MANSION2_GUARD_PILOT_SMALL_LIFT] = MANSION2_GUARDAI_WANDER ENDIF ENDIF ENDIF // Slide the Small Lift if the player is in the Small Lift Harrier IF NOT IS_CAR_DEAD carPlanes[MANSION2_PLANE_SMALL_LIFT] flagTempFlag = FALSE IF IS_CHAR_IN_CAR scplayer carPlanes[MANSION2_PLANE_SMALL_LIFT] // ...slide the lift up IF SLIDE_OBJECT objectCarrierSmallLift -1414.453 516.453 16.688 0.05 0.05 0.05 FALSE flagTempFlag = TRUE ENDIF ELSE // ...slide down IF SLIDE_OBJECT objectCarrierSmallLift -1414.453 516.453 9.648 0.05 0.05 0.05 FALSE flagTempFlag = TRUE ENDIF ENDIF IF flagCarrierSmallLiftAudioPlaying = FALSE // ...audio is not playing. Should it be? IF flagTempFlag = FALSE // ...yes, so play it REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierSmallLift SOUND_VERTICAL_BIRD_LIFT_START flagCarrierSmallLiftAudioPlaying = TRUE ENDIF ELSE // ...audio is playing. Stop it? IF flagTempFlag = TRUE // ...yes, stop it REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierSmallLift SOUND_VERTICAL_BIRD_LIFT_STOP flagCarrierSmallLiftAudioPlaying = FALSE ENDIF ENDIF ENDIF // Slide the Big Lift if the player is in the Big Lift Harrier IF NOT IS_CAR_DEAD carPlanes[MANSION2_PLANE_BIG_LIFT] flagTempFlag = FALSE IF IS_CHAR_IN_CAR scplayer carPlanes[MANSION2_PLANE_BIG_LIFT] // ...slide the lift up IF SLIDE_OBJECT objectCarrierBigLift -1456.719 501.297 16.953 0.05 0.05 0.05 FALSE flagTempFlag = TRUE ENDIF ELSE // ...slide down IF SLIDE_OBJECT objectCarrierBigLift -1456.719 501.297 9.914 0.05 0.05 0.05 FALSE flagTempFlag = TRUE ENDIF ENDIF IF flagCarrierBigLiftAudioPlaying = FALSE // ...audio is not playing. Should it be? IF flagTempFlag = FALSE // ...yes, so play it REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierBigLift SOUND_VERTICAL_BIRD_LIFT_START flagCarrierBigLiftAudioPlaying = TRUE ENDIF ELSE // ...audio is playing. Stop it? IF flagTempFlag = TRUE // ...yes, stop it REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierBigLift SOUND_VERTICAL_BIRD_LIFT_STOP flagCarrierBigLiftAudioPlaying = FALSE ENDIF ENDIF ENDIF // Change the camera angle if the small lift harrier is being raised IF flagShowingSmallLiftCamera = FALSE // ...plane is in plane and plane is on lift IF NOT IS_CAR_DEAD carPlanes[MANSION2_PLANE_SMALL_LIFT] IF IS_CHAR_IN_CAR scplayer carPlanes[MANSION2_PLANE_SMALL_LIFT] GET_CAR_COORDINATES carPlanes[MANSION2_PLANE_SMALL_LIFT] xposTemp yposTemp zposTemp GET_OBJECT_COORDINATES objectCarrierSmallLift xposTemp2 yposTemp2 zposTemp2 fTempFloat = zposTemp - zposTemp2 IF fTempFloat >= 0.0 OR fTempFloat <= 3.0 // ...move camera to a better viewing position SET_FIXED_CAMERA_POSITION -1427.4083 516.3539 20.8899 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1426.4348 516.2787 20.6742 INTERPOLATION flagShowingSmallLiftCamera = TRUE ENDIF ENDIF ENDIF ELSE IF IS_CAR_DEAD carPlanes[MANSION2_PLANE_SMALL_LIFT] SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA flagShowingSmallLiftCamera = FALSE ELSE IF NOT IS_CHAR_IN_CAR scplayer carPlanes[MANSION2_PLANE_SMALL_LIFT] SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA flagShowingSmallLiftCamera = FALSE ENDIF ENDIF ENDIF // Change the camera angle if the big lift harrier is being raised IF flagShowingBigLiftCamera = FALSE // ...plane is in plane and plane is on lift IF NOT IS_CAR_DEAD carPlanes[MANSION2_PLANE_BIG_LIFT] IF IS_CHAR_IN_CAR scplayer carPlanes[MANSION2_PLANE_BIG_LIFT] GET_CAR_COORDINATES carPlanes[MANSION2_PLANE_BIG_LIFT] xposTemp yposTemp zposTemp GET_OBJECT_COORDINATES objectCarrierBigLift xposTemp2 yposTemp2 zposTemp2 fTempFloat = zposTemp - zposTemp2 IF fTempFloat >= 0.0 OR fTempFloat <= 3.0 // ...move camera to a better viewing position SET_FIXED_CAMERA_POSITION -1439.2832 507.3634 28.9545 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1440.0693 507.1481 28.3752 INTERPOLATION flagShowingBigLiftCamera = TRUE ENDIF ENDIF ENDIF ELSE IF IS_CAR_DEAD carPlanes[MANSION2_PLANE_BIG_LIFT] SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA flagShowingBigLiftCamera = FALSE ELSE IF NOT IS_CHAR_IN_CAR scplayer carPlanes[MANSION2_PLANE_BIG_LIFT] SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA flagShowingBigLiftCamera = FALSE ENDIF ENDIF ENDIF // Check if the player is flying a Harrier REPEAT MANSION2_MAX_PLANES nLoop IF NOT IS_CAR_DEAD carPlanes[nLoop] IF IS_CHAR_IN_CAR scplayer carPlanes[nLoop] // ...check if plane is in the air SWITCH nLoop CASE MANSION2_PLANE_SMALL_LIFT GET_CAR_COORDINATES carPlanes[nLoop] xposTemp yposTemp zposTemp GET_OBJECT_COORDINATES objectCarrierSmallLift xposTemp2 yposTemp2 zposTemp2 fTempFloat = zposTemp - zposTemp2 IF fTempFloat < 0.0 OR fTempFloat > 3.0 flagPlayerFlyingHarrier = TRUE ENDIF BREAK CASE MANSION2_PLANE_BIG_LIFT GET_CAR_COORDINATES carPlanes[nLoop] xposTemp yposTemp zposTemp GET_OBJECT_COORDINATES objectCarrierBigLift xposTemp2 yposTemp2 zposTemp2 fTempFloat = zposTemp - zposTemp2 IF fTempFloat < 0.0 OR fTempFloat > 3.0 flagPlayerFlyingHarrier = TRUE ENDIF BREAK CASE MANSION2_PLANE_INSIDE GET_CAR_COORDINATES carPlanes[nLoop] xposTemp yposTemp zposTemp IF zposTemp > 20.0 OR zposTemp < 5.0 flagPlayerFlyingHarrier = TRUE ENDIF BREAK DEFAULT IF IS_CAR_IN_AIR_PROPER carPlanes[nLoop] // ...player is flying a Harrier flagPlayerFlyingHarrier = TRUE ENDIF ENDSWITCH ENDIF ENDIF ENDREPEAT IF flagPlayerFlyingHarrier = TRUE AND flagReorganisedPlanes = FALSE // Start by setting all enemy plane's alive to false REPEAT MANSION2_MAX_ENEMY_PLANES nLoop flagEnemyPlanesAlive[nLoop] = FALSE ENDREPEAT // Record the player's plane and the enemy planes nTempInt = 0 REPEAT MANSION2_MAX_PLANES nLoop // ...the takeoff plane is special in that it'll be deleted (if not already deleted) and re-created later IF nLoop = MANSION2_PLANE_TAKEOFF IF NOT IS_CAR_DEAD carPlanes[nLoop] // ...plane is not dead, so kill it IF IS_PLAYBACK_GOING_ON_FOR_CAR carPlanes[nLoop] STOP_PLAYBACK_RECORDED_CAR carPlanes[nLoop] ENDIF IF NOT IS_CHAR_IN_CAR scplayer carPlanes[nLoop] DELETE_CAR carPlanes[nLoop] ENDIF ENDIF ENDIF // ...the landing plane is special in that it should be made to land immediately IF nLoop = MANSION2_PLANE_BIG_LIFT IF NOT IS_CAR_DEAD carPlanes[nLoop] IF NOT IS_CHAR_IN_CAR scplayer carPlanes[nLoop] // ...plane is not dead, so stop the recording if it is still going on IF NOT statusHarrierLanding = -1 STOP_PLAYBACK_RECORDED_CAR carPlanes[nLoop] SET_CAR_COORDINATES carPlanes[nLoop] -1457.6272 502.2539 9.0078 SET_CAR_HEADING carPlanes[nLoop] 185.0690 statusHarrierLanding = -1 ENDIF ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD carPlanes[nLoop] // ...this plane will either be an enemy plane or the player's plane, so store it in the appropriate place IF IS_CHAR_IN_CAR scplayer carPlanes[nLoop] // ...player's plane STORE_CAR_CHAR_IS_IN scplayer carPlayerPlane ELSE // ...an enemy plane carEnemyPlanes[nTempInt] = carPlanes[nLoop] flagEnemyPlanesAlive[nTempInt] = TRUE nTempInt++ ENDIF ENDIF ENDREPEAT flagReorganisedPlanes = TRUE ENDIF // Update AI GOSUB Mansion2_Maintain_Player GOSUB Mansion2_Maintain_GuardAI GOSUB Mansion2_Maintain_MechanicAI // Clear all the weapon damage taken so that I can detect if an AI got shot by the player // ...guards REPEAT MANSION2_MAX_GUARDS nLoop IF NOT IS_CHAR_DEAD charGuards[nLoop] CLEAR_CHAR_LAST_WEAPON_DAMAGE charGuards[nLoop] ENDIF ENDREPEAT // ...mechanics REPEAT MANSION2_MAX_MECHANICS nLoop IF NOT IS_CHAR_DEAD charMechanics[nLoop] CLEAR_CHAR_LAST_WEAPON_DAMAGE charMechanics[nLoop] ENDIF ENDREPEAT // ...forklifts REPEAT MANSION2_MAX_FORKLIFTS nLoop IF NOT IS_CAR_DEAD carForklifts[nLoop] CLEAR_CAR_LAST_WEAPON_DAMAGE carForklifts[nLoop] ENDIF ENDREPEAT // Update Takeoff Harrier status GOSUB Mansion2_Takeoff_Harrier // Update Harrier Landing status GOSUB Mansion2_Landing_Harrier // Trigger the Alarm IF flagDisplayedOnAlertText = FALSE IF flagCarrierOnAlert = TRUE SWITCH nReasonForDetection CASE MANSION2_DETECTED_TOO_MUCH_NOISE PRINT_NOW MAN2_47 7000 1 BREAK CASE MANSION2_DETECTED_BY_MECHANIC PRINT_NOW MAN2_49 7000 1 BREAK CASE MANSION2_DETECTED_BY_GUARD PRINT_NOW MAN2_40 7000 1 BREAK CASE MANSION2_DETECTED_DEAD_BODY_BY_MECHANIC PRINT_NOW MAN2_41 7000 1 BREAK CASE MANSION2_DETECTED_DEAD_BODY_BY_GUARD PRINT_NOW MAN2_42 7000 1 BREAK CASE MANSION2_DETECTED_EXPLOSION PRINT_NOW MAN2_43 7000 1 BREAK ENDSWITCH // Start the alarm looping audio REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_VERTICAL_BIRD_ALARM_START flagCarrierOnAlertAudioPlaying = TRUE flagDisplayedOnAlertText = TRUE ENDIF ENDIF // Check for a fire on the Aircraft Carrier (this will usually be caused by an explosion) IF flagCarrierOnAlert = FALSE GET_NUMBER_OF_FIRES_IN_AREA -1471.0000 484.0000 0.0 -1246.0000 523.0000 40.0 nTempInt IF nTempInt > 0 nReasonForDetection = MANSION2_DETECTED_EXPLOSION flagCarrierOnAlert = TRUE ENDIF ENDIF // Check if the player has reached the Harrier area IF flagReachedControlRoom = TRUE IF flagDisplayedGotoHarrierText = FALSE IF IS_CHAR_IN_AREA_3D scplayer -1466.9733 488.6672 7.1953 -1393.2196 521.5200 11.3953 FALSE REMOVE_BLIP blipDestination // ...steal a harrier PRINT_NOW MAN2_25 5000 1 // ~s~Steal one of the military jets. flagDisplayedGotoHarrierText = TRUE ENDIF ENDIF ENDIF // Radio controls IF flagInForklift = TRUE // ...was in forklift. Check if still in forklift IF NOT IS_CHAR_IN_MODEL scplayer FORKLIFT // ...no longer in forklift so switch radio off for the next vehicle (which should be the harrier) SET_RADIO_CHANNEL RS_OFF flagInForklift = FALSE ENDIF ELSE // ...was not in forklift, so check if now in forklift IF IS_CHAR_IN_MODEL scplayer FORKLIFT // ...now in forklift flagInForklift = TRUE ENDIF ENDIF // Exit // ---- IF m_goals = 99 GOSUB Mansion2_Next_Stage ENDIF RETURN // **************************************** // STAGE: Destroy Spy Boats Mansion2_Destroy_Spy_Boats: IF IS_CAR_DEAD carPlayerPlane m_failed = TRUE m_fail_reason = MANSION2_FAILED_HARRIER_DEAD RETURN ENDIF // Initialisation // -------------- IF m_goals = 0 // Create Spy Ships // ...first ship nTempInt = 0 CLEAR_AREA -1178.2198 2775.0396 40.0 20.0 TRUE CREATE_CAR TROPIC -1178.2198 2775.0396 40.0 carSpyShips[nTempInt] SET_CAR_HEALTH carSpyShips[nTempInt] 500 SET_CAR_HEADING carSpyShips[nTempInt] 327.1833 ANCHOR_BOAT carSpyShips[nTempInt] TRUE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION carSpyShips[nTempInt] TRUE ADD_BLIP_FOR_CAR carSpyShips[nTempInt] blipSpyShips[nTempInt] CHANGE_BLIP_COLOUR blipSpyShips[nTempInt] YELLOW flagSpyShipsAlive[nTempInt] = TRUE // ...second ship nTempInt++ CLEAR_AREA -1168.9192 2795.9902 40.0 20.0 TRUE CREATE_CAR TROPIC -1168.9192 2795.9902 40.0 carSpyShips[nTempInt] SET_CAR_HEALTH carSpyShips[nTempInt] 500 SET_CAR_HEADING carSpyShips[nTempInt] 171.1833 ANCHOR_BOAT carSpyShips[nTempInt] TRUE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION carSpyShips[nTempInt] TRUE ADD_BLIP_FOR_CAR carSpyShips[nTempInt] blipSpyShips[nTempInt] CHANGE_BLIP_COLOUR blipSpyShips[nTempInt] YELLOW flagSpyShipsAlive[nTempInt] = TRUE // ...third ship nTempInt++ CLEAR_AREA -930.1593 2641.6047 40.0 20.0 TRUE CREATE_CAR TROPIC -930.1593 2641.6047 40.0 carSpyShips[nTempInt] SET_CAR_HEALTH carSpyShips[nTempInt] 500 SET_CAR_HEADING carSpyShips[nTempInt] 124.0961 ANCHOR_BOAT carSpyShips[nTempInt] TRUE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION carSpyShips[nTempInt] TRUE ADD_BLIP_FOR_CAR carSpyShips[nTempInt] blipSpyShips[nTempInt] CHANGE_BLIP_COLOUR blipSpyShips[nTempInt] YELLOW flagSpyShipsAlive[nTempInt] = TRUE // ...fourth ship nTempInt++ CLEAR_AREA -973.0267 2484.0210 40.0 20.0 TRUE CREATE_CAR TROPIC -973.0267 2484.0210 40.0 carSpyShips[nTempInt] SET_CAR_HEALTH carSpyShips[nTempInt] 500 SET_CAR_HEADING carSpyShips[nTempInt] 171.8058 ANCHOR_BOAT carSpyShips[nTempInt] TRUE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION carSpyShips[nTempInt] TRUE ADD_BLIP_FOR_CAR carSpyShips[nTempInt] blipSpyShips[nTempInt] CHANGE_BLIP_COLOUR blipSpyShips[nTempInt] YELLOW flagSpyShipsAlive[nTempInt] = TRUE flagRaiseLifts = TRUE flagEnemyPlanesCreatedInAir = FALSE // flagFlashSpyShipsBlips = TRUE // flagSpyShipsBlipsFlashOn = FALSE flagAllSpyShipsDead = FALSE flagAllHarriersDead = FALSE flagLeftCarrierCutscenePlayed = FALSE flagDisplayedDogfightHelp = FALSE flagDisplayedDogfightHelp2 = FALSE flagAllowSpyShipHelpText = FALSE flagDisplayedSpyShipHelp = FALSE flagDisplayedSpyShipHelp2 = FALSE flagDisplayedSpyShipHelp2 = FALSE // timerSpyShipsBlips = 0 // Play lift audio IF flagCarrierSmallLiftAudioPlaying = FALSE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierSmallLift SOUND_VERTICAL_BIRD_LIFT_START flagCarrierSmallLiftAudioPlaying = TRUE ENDIF IF flagCarrierBigLiftAudioPlaying = FALSE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierBigLift SOUND_VERTICAL_BIRD_LIFT_START flagCarrierBigLiftAudioPlaying = TRUE ENDIF // Cancel Harrier Alarm audio IF flagCarrierOnAlertAudioPlaying = TRUE REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_VERTICAL_BIRD_ALARM_STOP flagCarrierOnAlertAudioPlaying = FALSE ENDIF // Give the player's harrier some more health GET_CAR_HEALTH carPlayerPlane nTempInt nTempInt += 1000 SET_CAR_HEALTH carPlayerPlane nTempInt nRequiredConversationID = MANSION2_CONVERSATION_STOLEN_HARRIER GOSUB Mansion2_Conversation_Command_Prepare SET_RADAR_ZOOM 0 m_goals++ ENDIF // Failure Conditions // ------------------ // Subgoals // -------- // Check for triggering Toreno 'well done' speech IF m_goals = 1 IF NOT nCurrentConversationID = MANSION2_CONVERSATION_STOLEN_HARRIER nRequiredConversationID = MANSION2_CONVERSATION_STOLEN_HARRIER GOSUB Mansion2_Conversation_Command_Prepare ENDIF IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer -1343.5 504.1 30.0 250.0 250.0 200.0 FALSE AND nCurrentConversationID = MANSION2_CONVERSATION_STOLEN_HARRIER IF IS_CHAR_IN_CAR scplayer carPlayerPlane // ...player a distance away from Carrier, so trigger cutscene GOSUB Mansion2_Conversation_Command_Play flagLeftCarrierCutscenePlayed = TRUE // Make sure the player gets a 6* rating again whenever he sets foot on the aircraft carrier SET_DISABLE_MILITARY_ZONES FALSE m_goals++ ELSE m_failed = TRUE m_fail_reason = MANSION2_FAILED_LEFT_CARRIER RETURN ENDIF ENDIF ENDIF // Check if Toreno speech finished IF m_goals = 2 IF IS_BIT_SET bitsConversationsPlayed MANSION2_CONVERSATION_STOLEN_HARRIER // Prepare the next speech nRequiredConversationID = MANSION2_CONVERSATION_VAPOURISED GOSUB Mansion2_Conversation_Command_Prepare m_goals++ ENDIF ENDIF // Check if speech ready to play IF m_goals = 3 IF NOT nCurrentConversationID = MANSION2_CONVERSATION_VAPOURISED nRequiredConversationID = MANSION2_CONVERSATION_VAPOURISED GOSUB Mansion2_Conversation_Command_Prepare ENDIF IF nCurrentConversationID = MANSION2_CONVERSATION_VAPOURISED // Create all the jets // First of all, need to re-create the TAKEOFF jet flagTempFlag = FALSE REPEAT MANSION2_MAX_ENEMY_PLANES nLoop IF flagTempFlag = FALSE IF flagEnemyPlanesAlive[nLoop] = FALSE // ...recreate the plane here CREATE_CAR HYDRA -1333.2310 507.6329 17.2266 carEnemyPlanes[nLoop] flagEnemyPlanesAlive[nLoop] = TRUE flagTempFlag = TRUE ENDIF ENDIF ENDREPEAT // ...first jet nTempInt = 0 IF flagEnemyPlanesAlive[nTempInt] = TRUE IF NOT IS_CAR_DEAD carEnemyPlanes[nTempInt] SET_CAR_COORDINATES carEnemyPlanes[nTempInt] -1293.86 481.91 81.18 SET_CAR_HEADING carEnemyPlanes[nTempInt] 0.0 SET_CAR_STATUS carEnemyPlanes[nTempInt] STATUS_PHYSICS SET_CAR_FORWARD_SPEED carEnemyPlanes[nTempInt] 30.0 SET_PLANE_THROTTLE carEnemyPlanes[nTempInt] 1.5 PLANE_STARTS_IN_AIR carEnemyPlanes[nTempInt] PLANE_FOLLOW_ENTITY carEnemyPlanes[nTempInt] scplayer -1 70.0 ADD_BLIP_FOR_CAR carEnemyPlanes[nTempInt] blipEnemyPlanes[nTempInt] CHANGE_BLIP_DISPLAY blipEnemyPlanes[nTempInt] BLIP_ONLY ENDIF ENDIF // ...second jet nTempInt++ IF flagEnemyPlanesAlive[nTempInt] = TRUE IF NOT IS_CAR_DEAD carEnemyPlanes[nTempInt] SET_CAR_COORDINATES carEnemyPlanes[nTempInt] -1273.86 481.91 81.18 SET_CAR_HEADING carEnemyPlanes[nTempInt] 0.0 SET_CAR_STATUS carEnemyPlanes[nTempInt] STATUS_PHYSICS SET_CAR_FORWARD_SPEED carEnemyPlanes[nTempInt] 30.0 SET_PLANE_THROTTLE carEnemyPlanes[nTempInt] 1.5 PLANE_STARTS_IN_AIR carEnemyPlanes[nTempInt] PLANE_FOLLOW_ENTITY carEnemyPlanes[nTempInt] scplayer -1 70.0 ADD_BLIP_FOR_CAR carEnemyPlanes[nTempInt] blipEnemyPlanes[nTempInt] CHANGE_BLIP_DISPLAY blipEnemyPlanes[nTempInt] BLIP_ONLY ENDIF ENDIF // ...third jet nTempInt++ IF flagEnemyPlanesAlive[nTempInt] = TRUE IF NOT IS_CAR_DEAD carEnemyPlanes[nTempInt] SET_CAR_COORDINATES carEnemyPlanes[nTempInt] -1253.86 481.91 81.18 SET_CAR_HEADING carEnemyPlanes[nTempInt] 0.0 SET_CAR_STATUS carEnemyPlanes[nTempInt] STATUS_PHYSICS SET_CAR_FORWARD_SPEED carEnemyPlanes[nTempInt] 30.0 SET_PLANE_THROTTLE carEnemyPlanes[nTempInt] 1.5 PLANE_STARTS_IN_AIR carEnemyPlanes[nTempInt] PLANE_FOLLOW_ENTITY carEnemyPlanes[nTempInt] scplayer -1 70.0 ADD_BLIP_FOR_CAR carEnemyPlanes[nTempInt] blipEnemyPlanes[nTempInt] CHANGE_BLIP_DISPLAY blipEnemyPlanes[nTempInt] BLIP_ONLY ENDIF ENDIF flagEnemyPlanesCreatedInAir = TRUE timerCutscene = m_mission_timer + 1000 m_goals++ ENDIF ENDIF // Check if it is time to trigger the vapourised speech IF m_goals = 4 IF timerCutscene < m_mission_timer // Switch to Flyby Camera nTempInt = -1 IF flagEnemyPlanesAlive[0] = TRUE IF NOT IS_CAR_DEAD carEnemyPlanes[0] nTempInt = 0 ENDIF ENDIF IF nTempInt = -1 IF flagEnemyPlanesAlive[1] = TRUE IF NOT IS_CAR_DEAD carEnemyPlanes[1] nTempInt = 1 ENDIF ENDIF ENDIF IF NOT nTempInt = -1 SET_FIXED_CAMERA_POSITION -1297.6329 489.9132 74.9315 0.0 0.0 0.0 POINT_CAMERA_AT_CAR carEnemyPlanes[nTempInt] FIXED JUMP_CUT IF IS_CHAR_IN_CAR scplayer carPlayerPlane FREEZE_CAR_POSITION carPlayerPlane TRUE ENDIF SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF ENDIF GOSUB Mansion2_Conversation_Command_Play m_goals++ ENDIF ENDIF // Check if the vapourised speech has finished IF m_goals = 5 IF IS_BIT_SET bitsConversationsPlayed MANSION2_CONVERSATION_VAPOURISED // Prepare the next speech nRequiredConversationID = MANSION2_CONVERSATION_DESTROY_FLOTILLA GOSUB Mansion2_Conversation_Command_Prepare m_goals++ ENDIF ENDIF // Check for the next speech being ready to play IF m_goals = 6 IF NOT nCurrentConversationID = MANSION2_CONVERSATION_DESTROY_FLOTILLA nRequiredConversationID = MANSION2_CONVERSATION_DESTROY_FLOTILLA GOSUB Mansion2_Conversation_Command_Prepare ENDIF IF nCurrentConversationID = MANSION2_CONVERSATION_DESTROY_FLOTILLA // ...ready to play, so switch back from flyby camera SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER IF IS_CHAR_IN_CAR scplayer carPlayerPlane FREEZE_CAR_POSITION carPlayerPlane FALSE SET_CAR_FORWARD_SPEED carPlayerPlane 30.0 SET_PLANE_THROTTLE carPlayerPlane 1.0 ENDIF // Wait briefly before triggering the rest of the conversation timerCutscene = m_mission_timer + 500 m_goals++ ENDIF ENDIF // Trigger the rest of the conversation IF m_goals = 7 IF timerCutscene < m_mission_timer GOSUB Mansion2_Conversation_Command_Play m_goals++ ENDIF ENDIF // If the speech has finished then display help text for combat IF m_goals = 8 IF IS_BIT_SET bitsConversationsPlayed MANSION2_CONVERSATION_DESTROY_FLOTILLA // Dogfight help PRINT_HELP_FOREVER MAN2_71 flagDisplayedDogfightHelp = TRUE timerHelpText = m_mission_timer + 15000 // Delay before Harriers attack timerCutscene = m_mission_timer + 5000 m_goals++ ENDIF ENDIF // Activate the enemy harriers IF m_goals = 9 IF timerCutscene < m_mission_timer nTempInt = 0 REPEAT MANSION2_MAX_ENEMY_PLANES nLoop IF flagEnemyPlanesAlive[nLoop] = TRUE IF NOT IS_CAR_DEAD carEnemyPlanes[nLoop] SET_PLANE_THROTTLE carEnemyPlanes[nLoop] 0.5 PLANE_ATTACK_PLAYER_USING_DOG_FIGHT carEnemyPlanes[nLoop] player1 30.0 nTempInt++ ENDIF ENDIF ENDREPEAT IF nTempInt > 0 IF nTempInt = 1 PRINT_NOW MAN2_36 7000 1 // ~s~There is a ~r~military jet~s~ after you. Take it out! ELSE PRINT_NOW MAN2_35 7000 1 // ~s~There are ~r~military jets~s~ on your tail. Take them out! ENDIF ENDIF m_goals++ ENDIF ENDIF // Check if the spy ships have all been destroyed IF m_goals = 10 IF flagAllSpyShipsDead = TRUE AND flagAllHarriersDead = TRUE m_goals = 99 ENDIF ENDIF // Continuous updates // ------------------ // Spy Ships alive flagTempFlag = FALSE nTempInt = 0 REPEAT MANSION2_MAX_SPY_SHIPS nLoop IF flagSpyShipsAlive[nLoop] = TRUE IF IS_CAR_DEAD carSpyShips[nLoop] flagSpyShipsAlive[nLoop] = FALSE REMOVE_BLIP blipSpyShips[nLoop] flagTempFlag = TRUE ELSE nTempInt++ ENDIF ENDIF ENDREPEAT IF flagTempFlag = TRUE IF nTempInt > 0 IF nTempInt = 1 // ...singular PRINT_WITH_NUMBER_NOW MAN2_30 nTempInt 5000 1 ELSE // ...plural PRINT_WITH_NUMBER_NOW MAN2_29 nTempInt 5000 1 ENDIF ELSE IF flagAllHarriersDead = FALSE PRINT_NOW MAN2_44 5000 1 ENDIF ENDIF // If the Spy Ship help text hasn't been displayed, then don't display it IF flagDisplayedSpyShipHelp = FALSE flagDisplayedSpyShipHelp = TRUE flagDisplayedSpyShipHelp2 = TRUE flagDisplayedSpyShipHelp2 = TRUE ENDIF ENDIF // Are all spy ships dead? flagAllSpyShipsDead = TRUE REPEAT MANSION2_MAX_SPY_SHIPS nLoop IF flagSpyShipsAlive[nLoop] = TRUE flagAllSpyShipsDead = FALSE ENDIF ENDREPEAT // Update the Harriers flagTempFlag = FALSE nTempInt = 0 REPEAT MANSION2_MAX_ENEMY_PLANES nLoop IF flagEnemyPlanesAlive[nLoop] = TRUE IF IS_CAR_DEAD carEnemyPlanes[nLoop] flagEnemyPlanesAlive[nLoop] = FALSE MARK_CAR_AS_NO_LONGER_NEEDED carEnemyPlanes[nLoop] REMOVE_BLIP blipEnemyPlanes[nLoop] IF flagEnemyPlanesCreatedInAir = TRUE flagTempFlag = TRUE ENDIF ELSE nTempInt++ ENDIF ENDIF ENDREPEAT IF flagTempFlag = TRUE IF nTempInt > 0 PRINT_WITH_NUMBER_NOW MAN2_27 nTempInt 5000 1 ELSE flagAllHarriersDead = TRUE IF flagAllSpyShipsDead = FALSE PRINT_NOW MAN2_28 5000 1 flagAllowSpyShipHelpText = TRUE ENDIF ENDIF ENDIF // Raise Lifts IF flagRaiseLifts = TRUE IF SLIDE_OBJECT objectCarrierSmallLift -1414.453 516.453 16.688 0.05 0.05 0.05 FALSE AND SLIDE_OBJECT objectCarrierBigLift -1456.719 501.297 16.953 0.05 0.05 0.05 FALSE flagRaiseLifts = FALSE IF flagCarrierSmallLiftAudioPlaying = TRUE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierSmallLift SOUND_VERTICAL_BIRD_LIFT_STOP flagCarrierSmallLiftAudioPlaying = FALSE ENDIF IF flagCarrierBigLiftAudioPlaying = TRUE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierBigLift SOUND_VERTICAL_BIRD_LIFT_STOP flagCarrierBigLiftAudioPlaying = FALSE ENDIF ENDIF ENDIF // Player Blip Maintenance IF NOT IS_CHAR_IN_CAR scplayer carPlayerPlane IF NOT DOES_BLIP_EXIST blipPlayerPlane PRINT_NOW MAN2_37 5000 1 ADD_BLIP_FOR_CAR carPlayerPlane blipPlayerPlane SET_BLIP_AS_FRIENDLY blipPlayerPlane TRUE ELSE IF flagLeftCarrierCutscenePlayed = FALSE // ...check if the player has instead climbed into one of the other hydras flagTempFlag = FALSE REPEAT MANSION2_MAX_ENEMY_PLANES nLoop IF flagEnemyPlanesAlive[nLoop] = TRUE IF flagTempFlag = FALSE IF NOT IS_CAR_DEAD carEnemyPlanes[nLoop] IF IS_CHAR_IN_CAR scplayer carEnemyPlanes[nLoop] // Swap the enemy plane and the player plane car = carEnemyPlanes[nLoop] carEnemyPlanes[nLoop] = carPlayerPlane carPlayerPlane = car flagTempFlag = TRUE ENDIF ENDIF ENDIF ENDIF ENDREPEAT ENDIF ENDIF ELSE IF DOES_BLIP_EXIST blipPlayerPlane REMOVE_BLIP blipPlayerPlane CLEAR_THIS_PRINT MAN2_37 ENDIF ENDIF // Has help text 2 been displayed? IF flagDisplayedFlyingHelp2 = FALSE IF timerHelpText < m_mission_timer CLEAR_HELP // Landing gear not used in mobile build. //PRINT_HELP_FOREVER MAN2_99 flagDisplayedFlyingHelp2 = TRUE timerHelpText = m_mission_timer + 10000 ENDIF ENDIF // Has flying help 2 timed out? IF flagDisplayedFlyingHelp2 = TRUE AND flagDisplayedDogfightHelp = FALSE IF NOT timerHelpText = 0 IF timerHelpText < m_mission_timer timerHelpText = 0 CLEAR_HELP ENDIF ENDIF ENDIF // Has Dogfight Help text timed out? IF flagDisplayedDogfightHelp = TRUE IF flagDisplayedDogfightHelp2 = FALSE IF timerHelpText < m_mission_timer CLEAR_HELP PRINT_HELP_FOREVER MAN2_98 // Press ~m~~widget_rocket~ to launch countermeasures to deter enemy rockets. flagDisplayedDogfightHelp2 = TRUE timerHelpText = m_mission_timer + 10000 ENDIF ENDIF ENDIF // Has dogfight help 2 timed out? IF flagDisplayedDogfightHelp2 = TRUE IF NOT timerHelpText = 0 IF timerHelpText < m_mission_timer timerHelpText = 0 CLEAR_HELP ENDIF ENDIF ENDIF // Is it time to display the spyship help? IF flagAllowSpyShipHelpText = TRUE IF flagDisplayedSpyShipHelp = FALSE IF flagDisplayedDogfightHelp2 = TRUE AND timerHelpText = 0 // ...the dogfight2 text has been removed // Check if the player is near any of the spyships IF IS_CHAR_IN_CAR scplayer carPlayerPlane flagTempFlag = FALSE REPEAT MANSION2_MAX_SPY_SHIPS nLoop IF flagTempFlag = FALSE IF flagSpyShipsAlive[nLoop] = TRUE IF LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer carSpyShips[nLoop] 300.0 300.0 300.0 FALSE flagTempFlag = TRUE ENDIF ENDIF ENDIF ENDREPEAT IF flagTempFlag = TRUE // ...player near one of the spy ships, so display help text CLEAR_HELP PRINT_HELP_FOREVER HYDHLP1 // Use the steering controls to tilt the plane forward and back. flagDisplayedSpyShipHelp = TRUE timerHelpText = m_mission_timer + 10000 ENDIF ENDIF ENDIF ENDIF // Has SpyShip Help text timed out? IF flagDisplayedSpyShipHelp = TRUE IF flagDisplayedSpyShipHelp2 = FALSE IF timerHelpText < m_mission_timer CLEAR_HELP PRINT_HELP_FOREVER HYDHLP2 // Press and hold ~m~~widget_handbrake~ - this will target an enemy ship~s~ and soon achieve ~r~lock-on~s~. flagDisplayedSpyShipHelp2 = TRUE timerHelpText = m_mission_timer + 10000 ENDIF ENDIF ENDIF // Has SpyShip help 2 timed out? IF flagDisplayedSpyShipHelp2 = TRUE IF flagDisplayedSpyShipHelp3 = FALSE IF timerHelpText < m_mission_timer CLEAR_HELP PRINT_HELP_FOREVER HYDHLP3 // Lock onto the ships and press ~m~~widget_rocket~ to fire. Each ship will need a few hits to destroy it. flagDisplayedSpyShipHelp3 = TRUE timerHelpText = m_mission_timer + 10000 ENDIF ENDIF ENDIF // Has SpyShip help 3 timed out? IF flagDisplayedSpyShipHelp3 = TRUE IF NOT timerHelpText = 0 IF timerHelpText < m_mission_timer timerHelpText = 0 CLEAR_HELP ENDIF ENDIF ENDIF ENDIF // Exit // ---- IF m_goals = 99 GOSUB Mansion2_Next_Stage ENDIF RETURN // **************************************** // STAGE: Land Harrier Mansion2_Land_Harrier: IF IS_CAR_DEAD carPlayerPlane m_failed = TRUE m_fail_reason = MANSION2_FAILED_HARRIER_DEAD RETURN ENDIF // Initialisation // -------------- IF m_goals = 0 // Setup Landing Strip xloLand = -76.4228 yloLand = 2478.6396 zloLand = 14.2844 xhiLand = 433.6483 yhiLand = 2525.6577 zhiLand = 18.6279 // Setup Blip Position xposDestination = xhiLand - xloLand xposDestination = xposDestination / 2.0 xposDestination = xposDestination + xloLand yposDestination = yhiLand - yloLand yposDestination = yposDestination / 2.0 yposDestination = yposDestination + yloLand zposDestination = zhiLand - zloLand zposDestination = zposDestination / 2.0 zposDestination = zposDestination + zloLand ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination // Prepare the final speech nRequiredConversationID = MANSION2_CONVERSATION_FLOTILLA_DESTROYED GOSUB Mansion2_Conversation_Command_Prepare timerCutscene = m_mission_timer + 1000 flagDisplayedLandingHelp = FALSE // Request the models for Toreno's special weapons REQUEST_MODEL ROCKETLA REQUEST_MODEL HEATSEEK REQUEST_MODEL MINIGUN REQUEST_MODEL FLAME m_goals++ ENDIF // Failure Conditions // ------------------ // Subgoals // -------- // After a pause, start the conversation IF m_goals = 1 IF NOT nCurrentConversationID = MANSION2_CONVERSATION_FLOTILLA_DESTROYED nRequiredConversationID = MANSION2_CONVERSATION_FLOTILLA_DESTROYED GOSUB Mansion2_Conversation_Command_Prepare ENDIF IF nCurrentConversationID = MANSION2_CONVERSATION_FLOTILLA_DESTROYED AND timerCutscene < m_mission_timer GOSUB Mansion2_Conversation_Command_Play m_goals++ ENDIF ENDIF // Check if the conversation has ended IF m_goals = 2 IF IS_BIT_SET bitsConversationsPlayed MANSION2_CONVERSATION_FLOTILLA_DESTROYED PRINT_NOW MAN2_26 10000 1 m_goals++ ENDIF ENDIF // Has the player landed on the landing strip? IF m_goals = 3 // A Locate to show where the runway is LOCATE_CHAR_ANY_MEANS_3D scplayer xposDestination yposDestination zposDestination 10.0 10.0 10.0 TRUE // The real test to see if the player is in the area IF IS_CHAR_IN_AREA_3D scplayer xloLand yloLand zloLand xhiLand yhiLand zhiLand FALSE AND IS_CHAR_IN_CAR scplayer carPlayerPlane IF IS_CAR_STOPPED carPlayerPlane AND NOT IS_CAR_IN_AIR_PROPER carPlayerPlane REMOVE_BLIP blipDestination m_goals++ ENDIF ELSE fTempFloat = zhiLand + 20.0 IF IS_CHAR_IN_AREA_3D scplayer xloLand yloLand zloLand xhiLand yhiLand fTempFloat FALSE AND IS_CHAR_IN_CAR scplayer carPlayerPlane AND flagDisplayedLandingHelp = FALSE GET_PLANE_UNDERCARRIAGE_POSITION carPlayerPlane fTempFloat2 IF fTempFloat2 > 0.1 PRINT_HELP MAN2_72 flagDisplayedLandingHelp = TRUE ENDIF ENDIF ENDIF ENDIF // Show the hanger blip IF m_goals = 4 xposDestination = 291.3149 yposDestination = 2535.2493 zposDestination = 15.8205 ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination PRINT_NOW MAN2_33 5000 1 m_goals++ ENDIF // Has the player guided the plane into the hanger? IF m_goals = 5 IF IS_CHAR_IN_CAR scplayer carPlayerPlane IF LOCATE_CHAR_ANY_MEANS_3D scplayer xposDestination yposDestination zposDestination 10.0 10.0 10.0 TRUE IF IS_CAR_STOPPED carPlayerPlane REMOVE_BLIP blipDestination m_goals = 99 ENDIF ENDIF ENDIF ENDIF // Continuous updates // ------------------ // Exit // ---- IF m_goals = 99 GOSUB Mansion2_Next_Stage ENDIF RETURN // ************************************************************************************************************* // MISSION SPECIFIC GOSUBS // ************************************************************************************************************* // ************************************************************************************************************* // Player // ************************************************************************************************************* // **************************************** // Maintain Player Mansion2_Maintain_Player: flagPlayerFiringSilencedGun = FALSE IF flagPlayerFiringGun = TRUE RETURN ENDIF IF IS_CHAR_SHOOTING scplayer IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PISTOL_SILENCED flagPlayerFiringSilencedGun = TRUE ELSE flagPlayerFiringGun = TRUE ENDIF ENDIF RETURN // ************************************************************************************************************* // Guard AI // ************************************************************************************************************* // **************************************** // Maintain Guard AI Mansion2_Maintain_GuardAI: // Check for any newly dead guards REPEAT MANSION2_MAX_GUARDS nTempPed IF NOT aiGuards[nTempPed] = MANSION2_GUARDAI_NOT_INITIALISED AND NOT aiGuards[nTempPed] = MANSION2_GUARDAI_DEAD IF IS_CHAR_DEAD charGuards[nTempPed] aiGuards[nTempPed] = MANSION2_GUARDAI_DEAD REMOVE_BLIP blipGuards[nTempPed] GOSUB Mansion2_Dead_Guard_Informs_Nearby_Peds ENDIF ENDIF ENDREPEAT REPEAT MANSION2_MAX_GUARDS nTempPed // Check for a change in the Guard's alert state IF flagGuardsAllowAlert[nTempPed] = TRUE GOSUB Mansion2_Update_Alert_State ENDIF SWITCH aiGuards[nTempPed] CASE MANSION2_GUARDAI_NOT_INITIALISED CASE MANSION2_GUARDAI_DEAD // ...nothing to do BREAK CASE MANSION2_GUARDAI_STEER_BOAT_TO_SHIP GOSUB Mansion2_AI_Steer_Boat BREAK CASE MANSION2_GUARDAI_STEERING_BOAT_TO_SHIP GOSUB Mansion2_AI_Steering_Boat BREAK CASE MANSION2_GUARDAI_STEER_BOAT_INTO_SHIP GOSUB Mansion2_AI_Steer_In BREAK CASE MANSION2_GUARDAI_STEERING_BOAT_INTO_SHIP GOSUB Mansion2_AI_Steering_In BREAK CASE MANSION2_GUARDAI_BOAT_MOORED_IN_SHIP GOSUB Mansion2_AI_Moored BREAK CASE MANSION2_GUARDAI_ACTIVATION GOSUB Mansion2_AI_Activation BREAK CASE MANSION2_GUARDAI_WALK_HOME GOSUB Mansion2_AI_Walk_Home BREAK CASE MANSION2_GUARDAI_WALKING_HOME GOSUB Mansion2_AI_Walking_Home BREAK CASE MANSION2_GUARDAI_CHAT GOSUB Mansion2_AI_Chat BREAK CASE MANSION2_GUARDAI_CHATTING GOSUB Mansion2_AI_Chatting BREAK CASE MANSION2_GUARDAI_SIT GOSUB Mansion2_AI_Sit BREAK CASE MANSION2_GUARDAI_WANDER GOSUB Mansion2_AI_Wander BREAK CASE MANSION2_GUARDAI_WANDERING GOSUB Mansion2_AI_Wandering BREAK CASE MANSION2_GUARDAI_WANDER_STOPPED GOSUB Mansion2_AI_WanderStop BREAK CASE MANSION2_GUARDAI_EXIT_PLANE GOSUB Mansion2_AI_ExitPlane BREAK CASE MANSION2_GUARDAI_EXITING_PLANE GOSUB Mansion2_AI_ExitingPlane BREAK CASE MANSION2_GUARDAI_WATCH_PLANE GOSUB Mansion2_AI_WatchPlane BREAK CASE MANSION2_GUARDAI_WATCHING_PLANE GOSUB Mansion2_AI_WatchingPlane BREAK CASE MANSION2_GUARDAI_TELEPORT GOSUB Mansion2_AI_Teleport BREAK CASE MANSION2_GUARDAI_GOTO_ALERT_POSITION GOSUB Mansion2_AI_GotoAlert BREAK CASE MANSION2_GUARDAI_GOING_TO_ALERT_POSITION GOSUB Mansion2_AI_GoingToAlert BREAK CASE MANSION2_GUARDAI_ORIENTATE_AT_ALERT_POSITION GOSUB Mansion2_AI_AlertOrientate BREAK CASE MANSION2_GUARDAI_AT_ALERT_POSITION GOSUB Mansion2_AI_Alert BREAK CASE MANSION2_GUARDAI_ATTACK GOSUB Mansion2_AI_Attack BREAK CASE MANSION2_GUARDAI_RUN_ATTACK GOSUB Mansion2_AI_RunAttack BREAK CASE MANSION2_GUARDAI_RUNNING_ATTACK GOSUB Mansion2_AI_RunningAttack BREAK CASE MANSION2_GUARDAI_ATTACKING GOSUB Mansion2_AI_Attacking BREAK CASE MANSION2_GUARDAI_TICKING_OVER // ...nothing to do for now BREAK DEFAULT WRITE_DEBUG Unknown_Guard_AI_Action ENDSWITCH ENDREPEAT RETURN // **************************************** // GuardAI: Update Alert State Mansion2_Update_Alert_State: // This updates the alert state for Guards when the ship is not on alert or the guard is not on alert // Is the ship on alert? IF flagCarrierOnAlert = TRUE // ...yes, so check if this Guard is already on alert IF flagGuardsOnAlert[nTempPed] = FALSE // ...no, so make this guard go on alert aiGuards[nTempPed] = MANSION2_GUARDAI_GOTO_ALERT_POSITION flagGuardsOnAlert[nTempPed] = TRUE IF NOT IS_CHAR_DEAD charGuards[nTempPed] SET_CHAR_DECISION_MAKER charGuards[nTempPed] dmTough ENDIF ENDIF RETURN ENDIF // Can the Guard see the player? IF flagGuardsOnAlert[nTempPed] = FALSE IF NOT IS_CHAR_DEAD charGuards[nTempPed] IF HAS_CHAR_SPOTTED_CHAR_IN_FRONT charGuards[nTempPed] scplayer // Restrict the distance GET_CHAR_COORDINATES charGuards[nTempPed] xposTemp yposTemp zposTemp GET_CHAR_COORDINATES scplayer xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance IF fTempDistance < 15.0 aiGuards[nTempPed] = MANSION2_GUARDAI_ATTACK GOSUB Mansion2_Guard_Informs_Nearby_Peds RETURN ENDIF ENDIF ENDIF ENDIF // Can the guard see a dead guy? IF flagGuardsOnAlert[nTempPed] = FALSE IF NOT IS_CHAR_DEAD charGuards[nTempPed] IF CAN_CHAR_SEE_DEAD_CHAR charGuards[nTempPed] PEDTYPE_MISSION2 OR CAN_CHAR_SEE_DEAD_CHAR charGuards[nTempPed] PEDTYPE_MISSION1 // ...dead body was found flagCarrierOnAlert = TRUE IF nReasonForDetection = MANSION2_DETECTED_UNKNOWN nReasonForDetection = MANSION2_DETECTED_DEAD_BODY_BY_GUARD ENDIF RETURN ENDIF ENDIF ENDIF // Has player fired a gun? IF flagGuardsOnAlert[nTempPed] = FALSE IF NOT IS_CHAR_DEAD charGuards[nTempPed] IF flagPlayerFiringGun = TRUE // ...player was heard firing a gun so put the carrier on alert flagCarrierOnAlert = TRUE IF nReasonForDetection = MANSION2_DETECTED_UNKNOWN nReasonForDetection = MANSION2_DETECTED_BY_GUARD ENDIF RETURN ENDIF IF flagPlayerFiringSilencedGun = TRUE // ...player fired a silenced gun, so check if the guard is close to the player GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp GET_CHAR_COORDINATES charGuards[nTempPed] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_2D xposTemp yposTemp xposTemp2 yposTemp2 fTempFloat IF fTempFloat < 12.0 fTempFloat2 = zposTemp - zposTemp2 IF fTempFloat2 < 0.0 fTempFloat2 *= -1.0 ENDIF IF fTempFloat2 < 5.0 // ...player was heard firing a silenced pistol on the same floor as this ped aiGuards[nTempPed] = MANSION2_GUARDAI_ATTACK GOSUB Mansion2_Guard_Informs_Nearby_Peds RETURN ENDIF ENDIF ENDIF ENDIF ENDIF // Has this ped been damaged by player? IF flagGuardsOnAlert[nTempPed] = FALSE IF NOT IS_CHAR_DEAD charGuards[nTempPed] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR charGuards[nTempPed] scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON charGuards[nTempPed] WEAPONTYPE_PISTOL_SILENCED // ...player has damaged this guard aiGuards[nTempPed] = MANSION2_GUARDAI_ATTACK GOSUB Mansion2_Guard_Informs_Nearby_Peds RETURN ENDIF ENDIF ENDIF RETURN // **************************************** // GuardAI: Update Active Alert State Mansion2_Update_Active_Alert_State: // This updates the alert state for Guards when the guard is already on alert IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF // flagTempFlag, if TRUE means make the Guard active and inform nearby peds flagTempFlag = FALSE // Can the Guard see the player? IF HAS_CHAR_SPOTTED_CHAR_IN_FRONT charGuards[nTempPed] scplayer flagTempFlag = TRUE ENDIF // Has player fired a gun close by? IF flagTempFlag = FALSE IF flagPlayerFiringGun = TRUE GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp GET_CHAR_COORDINATES charGuards[nTempPed] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_2D xposTemp yposTemp xposTemp2 yposTemp2 fTempFloat IF fTempFloat < 75.0 fTempFloat2 = zposTemp - zposTemp2 IF fTempFloat2 < 0.0 fTempFloat2 *= -1.0 ENDIF IF fTempFloat2 < 5.0 flagTempFlag = TRUE ENDIF ENDIF ENDIF ENDIF // Has player fired a silenced gun close by? IF flagTempFlag = FALSE IF flagPlayerFiringSilencedGun = TRUE // ...player fired a silenced gun, so check if the guard is close to the player GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp GET_CHAR_COORDINATES charGuards[nTempPed] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_2D xposTemp yposTemp xposTemp2 yposTemp2 fTempFloat IF fTempFloat < 12.0 fTempFloat2 = zposTemp - zposTemp2 IF fTempFloat2 < 0.0 fTempFloat2 *= -1.0 ENDIF IF fTempFloat2 < 5.0 flagTempFlag = TRUE ENDIF ENDIF ENDIF ENDIF // Has this ped been damaged by player? IF flagTempFlag = FALSE IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR charGuards[nTempPed] scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON charGuards[nTempPed] WEAPONTYPE_PISTOL_SILENCED flagTempFlag = TRUE ENDIF ENDIF // Should this Ped upgrade his alert state and inform nearby peds? IF flagTempFlag = TRUE // Upgrade this ped's reactions IF NOT aiGuards[nTempPed] = MANSION2_GUARDAI_ATTACK AND NOT aiGuards[nTempPed] = MANSION2_GUARDAI_ATTACKING AND NOT aiGuards[nTempPed] = MANSION2_GUARDAI_RUN_ATTACK AND NOT aiGuards[nTempPed] = MANSION2_GUARDAI_RUNNING_ATTACK aiGuards[nTempPed] = MANSION2_GUARDAI_ATTACK ENDIF // Upgrade nearby ped's reactions GOSUB Mansion2_Guard_Informs_Nearby_Peds ENDIF RETURN // **************************************** // GuardAI: Guard Informs Nearby Peds Mansion2_Guard_Informs_Nearby_Peds: // Inform nearby Guards and Mechanics that they also should react IF NOT IS_CHAR_DEAD charGuards[nTempPed] GET_CHAR_COORDINATES charGuards[nTempPed] xposTemp yposTemp zposTemp ELSE GET_DEAD_CHAR_COORDINATES charGuards[nTempPed] xposTemp yposTemp zposTemp ENDIF // ...check if any Guards should be informed REPEAT MANSION2_MAX_GUARDS nLoop IF NOT IS_CHAR_DEAD charGuards[nLoop] AND NOT nTempPed = nLoop GET_CHAR_COORDINATES charGuards[nLoop] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_2D xposTemp yposTemp xposTemp2 yposTemp2 fTempDistance IF fTempDistance < MANSION2_INFORM_PEDS_RANGE_m fTempFloat = zposTemp - zposTemp2 IF fTempFloat < 0.0 fTempFloat *= -1.0 ENDIF IF fTempFloat < 6.0 IF flagGuardsAllowAlert[nLoop] = TRUE // ...the Guard is allowed to go on alert // Make the Guard attack if not already doing so IF NOT aiGuards[nLoop] = MANSION2_GUARDAI_ATTACK AND NOT aiGuards[nLoop] = MANSION2_GUARDAI_ATTACKING AND NOT aiGuards[nLoop] = MANSION2_GUARDAI_RUN_ATTACK AND NOT aiGuards[nLoop] = MANSION2_GUARDAI_RUNNING_ATTACK aiGuards[nLoop] = MANSION2_GUARDAI_ATTACK ENDIF ENDIF ENDIF ENDIF ENDIF ENDREPEAT // ...check if any Mechanics should be informed REPEAT MANSION2_MAX_MECHANICS nLoop IF NOT IS_CHAR_DEAD charMechanics[nLoop] GET_CHAR_COORDINATES charMechanics[nLoop] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_2D xposTemp yposTemp xposTemp2 yposTemp2 fTempDistance IF fTempDistance < MANSION2_INFORM_PEDS_RANGE_m fTempFloat = zposTemp - zposTemp2 IF fTempFloat < 0.0 fTempFloat *= -1.0 ENDIF IF fTempFloat < 6.0 // Make the Mechanic react if not already doing so IF flagCarrierOnAlert = FALSE // ...if the Carrier is not on alert, make the Mechanic head for the alarm if not already doing so IF flagMechanicsOnAlert[nLoop] = FALSE // ...mechanic is not already on alert, so put him on alert aiMechanics[nLoop] = MANSION2_MECHANICAI_GOTO_ALARM // Mechanic has heard Guard's call of alarm IF NOT nReasonForDetection = MANSION2_DETECTED_TOO_MUCH_NOISE PRINT_NOW MAN2_45 7000 1 ENDIF flagMechanicsOnAlert[nLoop] = TRUE ENDIF ELSE ENDIF ENDIF ENDIF ENDIF ENDREPEAT RETURN // **************************************** // GuardAI: Dead Guard Informs Nearby Peds Mansion2_Dead_Guard_Informs_Nearby_Peds: // Nearby Guards and Mechanics should react to this seeing this Guard die GET_DEAD_CHAR_COORDINATES charGuards[nTempPed] xposTemp yposTemp zposTemp // ...check if any Guards should be informed REPEAT MANSION2_MAX_GUARDS nLoop IF NOT IS_CHAR_DEAD charGuards[nLoop] AND NOT nTempPed = nLoop GET_CHAR_COORDINATES charGuards[nLoop] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_2D xposTemp yposTemp xposTemp2 yposTemp2 fTempDistance IF fTempDistance < MANSION2_REACT_TO_DEATH_RANGE_m fTempFloat = zposTemp - zposTemp2 IF fTempFloat < 0.0 fTempFloat *= -1.0 ENDIF IF fTempFloat < 6.0 IF flagGuardsAllowAlert[nLoop] = TRUE // ...the Guard is allowed to go on alert // Make the Guard attack if not already doing so IF NOT aiGuards[nLoop] = MANSION2_GUARDAI_ATTACK AND NOT aiGuards[nLoop] = MANSION2_GUARDAI_ATTACKING AND NOT aiGuards[nLoop] = MANSION2_GUARDAI_RUN_ATTACK AND NOT aiGuards[nLoop] = MANSION2_GUARDAI_RUNNING_ATTACK aiGuards[nLoop] = MANSION2_GUARDAI_ATTACK ENDIF ENDIF ENDIF ENDIF ENDIF ENDREPEAT // ...check if any Mechanics should be informed REPEAT MANSION2_MAX_MECHANICS nLoop IF NOT IS_CHAR_DEAD charMechanics[nLoop] GET_CHAR_COORDINATES charMechanics[nLoop] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_2D xposTemp yposTemp xposTemp2 yposTemp2 fTempDistance IF fTempDistance < MANSION2_REACT_TO_DEATH_RANGE_m fTempFloat = zposTemp - zposTemp2 IF fTempFloat < 0.0 fTempFloat *= -1.0 ENDIF IF fTempFloat < 6.0 // Make the Mechanic react if not already doing so IF flagCarrierOnAlert = FALSE // ...if the Carrier is not on alert, make the Mechanic head for the alarm if not already doing so IF flagMechanicsOnAlert[nLoop] = FALSE // ...mechanic is not already on alert, so put him on alert aiMechanics[nLoop] = MANSION2_MECHANICAI_GOTO_ALARM // Mechanic is running for alarm IF NOT nReasonForDetection = MANSION2_DETECTED_TOO_MUCH_NOISE PRINT_NOW MAN2_45 7000 1 ENDIF flagMechanicsOnAlert[nLoop] = TRUE ENDIF ELSE ENDIF ENDIF ENDIF ENDIF ENDREPEAT RETURN // **************************************** // GuardAI: Steer Boat To Ship Mansion2_AI_Steer_Boat: IF IS_CAR_DEAD carEnemyBoat RETURN ENDIF // Steer towards the turning position ANCHOR_BOAT carEnemyBoat FALSE TASK_CAR_DRIVE_TO_COORD charGuards[nTempPed] carEnemyBoat -1493.4399 506.8398 0.0000 20.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH aiGuards[nTempPed] = MANSION2_GUARDAI_STEERING_BOAT_TO_SHIP RETURN // **************************************** // GuardAI: Steering Boat To Ship Mansion2_AI_Steering_Boat: IF IS_CAR_DEAD carEnemyBoat RETURN ENDIF IF NOT LOCATE_CAR_3D carEnemyBoat -1493.4399 506.8398 0.0000 10.0 15.0 5.0 FALSE GET_SCRIPT_TASK_STATUS charGuards[nTempPed] TASK_CAR_DRIVE_TO_COORD m_status IF m_status = PERFORMING_TASK OR m_status = WAITING_TO_START_TASK RETURN ENDIF // Give the task again TASK_CAR_DRIVE_TO_COORD charGuards[nTempPed] carEnemyBoat -1493.4399 506.8398 0.0000 25.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH RETURN ENDIF // Reached turning position, so now steer into ship aiGuards[nTempPed] = MANSION2_GUARDAI_STEER_BOAT_INTO_SHIP RETURN // **************************************** // GuardAI: Steer Boat Into Ship Mansion2_AI_Steer_In: IF IS_CAR_DEAD carEnemyBoat RETURN ENDIF // Steer into the ship TASK_CAR_DRIVE_TO_COORD charGuards[nTempPed] carEnemyBoat -1446.2179 493.9281 0.0000 10.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH aiGuards[nTempPed] = MANSION2_GUARDAI_STEERING_BOAT_INTO_SHIP RETURN // **************************************** // GuardAI: Steering Boat Into Ship Mansion2_AI_Steering_In: IF IS_CAR_DEAD carEnemyBoat RETURN ENDIF IF NOT LOCATE_CAR_3D carEnemyBoat -1446.2179 493.9281 0.0000 3.0 6.0 5.0 FALSE GET_SCRIPT_TASK_STATUS charGuards[nTempPed] TASK_CAR_DRIVE_TO_COORD m_status IF m_status = PERFORMING_TASK OR m_status = WAITING_TO_START_TASK RETURN ENDIF // Give the task again TASK_CAR_DRIVE_TO_COORD charGuards[nTempPed] carEnemyBoat -1446.2179 493.9281 0.0000 10.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH RETURN ENDIF // Reached destination, so moor the ship SET_CAR_COORDINATES carEnemyBoat -1446.2179 491.9281 0.0000 SET_CAR_HEADING carEnemyBoat 270.0 ANCHOR_BOAT carEnemyBoat TRUE // Set up a timer for lowering the Back Door timerLowerBackDoor = MANSION2_TIME_BEFORE_LOWER_BACK_DOOR_sec * 1000 timerLowerBackDoor += m_mission_timer // Update the Guard's AI aiGuards[nTempPed] = MANSION2_GUARDAI_BOAT_MOORED_IN_SHIP RETURN // **************************************** // GuardAI: Boat Moored In Ship Mansion2_AI_Moored: // Activate Guards // NOTE: Don't use nTempPed: it's being used nTempInt = MANSION2_GUARD_BOAT_DRIVER IF NOT aiGuards[nTempInt] = MANSION2_GUARDAI_DEAD aiGuards[nTempInt] = MANSION2_GUARDAI_ACTIVATION ENDIF nTempInt = MANSION2_GUARD_BOAT_BACK IF NOT aiGuards[nTempInt] = MANSION2_GUARDAI_DEAD aiGuards[nTempInt] = MANSION2_GUARDAI_ACTIVATION ENDIF nTempInt = MANSION2_GUARD_BOAT_FRONT IF NOT aiGuards[nTempInt] = MANSION2_GUARDAI_DEAD aiGuards[nTempInt] = MANSION2_GUARDAI_ACTIVATION ENDIF nTempInt = MANSION2_GUARD_HARRIER_GUIDE // Start on top deck facing small lift harrier, but don't give any AI yet CREATE_CHAR PEDTYPE_MISSION2 ARMY -1401.7865 504.5374 17.2266 charGuards[nTempInt] SET_CHAR_HEADING charGuards[nTempInt] 43.9825 GIVE_WEAPON_TO_CHAR charGuards[nTempInt] WEAPONTYPE_M4 300 SET_CURRENT_CHAR_WEAPON charGuards[nTempInt] WEAPONTYPE_M4 SET_CHAR_ACCURACY charGuards[nTempInt] 70 SET_CHAR_SHOOT_RATE charGuards[nTempInt] 70 SET_CHAR_DECISION_MAKER charGuards[nTempInt] dmStealth SET_CHAR_IS_TARGET_PRIORITY charGuards[nTempInt] TRUE // SET_INFORM_RESPECTED_FRIENDS charGuards[nTempPed] MANSION2_RESPECTED_FRIENDS_DISTANCE_m MANSION2_NUMBER_OF_RESPECTED_FRIENDS // Activate Mechanics nTempInt = MANSION2_MECHANIC_DOWNSTAIRS CREATE_CHAR PEDTYPE_MISSION1 WMYMECH -1421.7574 496.6105 2.0463 charMechanics[nTempInt] aiMechanics[nTempInt] = MANSION2_MECHANICAI_ACTIVATION nTempInt = MANSION2_MECHANIC_UPSTAIRS CREATE_CHAR PEDTYPE_MISSION1 WMYMECH -1346.2185 497.9554 10.1953 charMechanics[nTempInt] aiMechanics[nTempInt] = MANSION2_MECHANICAI_ACTIVATION // Create Forklifts nTempInt = MANSION2_FORKLIFT_DOWNSTAIRS CREATE_CAR FORKLIFT -1415.9326 502.7617 2.0391 carForklifts[nTempInt] SET_CAR_HEADING carForklifts[nTempInt] 250.5131 nTempInt = MANSION2_FORKLIFT_UPSTAIRS CREATE_CAR FORKLIFT -1312.8903 503.5017 10.1953 carForklifts[nTempInt] SET_CAR_HEADING carForklifts[nTempInt] 265.6291 nTempInt = MANSION2_FORKLIFT_MISSILE CREATE_CAR FORKLIFT -1405.7511 495.4972 10.2026 carForklifts[nTempInt] SET_CAR_HEADING carForklifts[nTempInt] 81.1713 // ...attach a missile to this forklift CREATE_OBJECT MISSILE_07_SFXR -1312.8903 503.5017 10.1953 objectMissile ATTACH_OBJECT_TO_CAR objectMissile carForklifts[nTempInt] 0.0 0.4 1.5 0.0 90.0 90.0 RETURN // **************************************** // GuardAI: Activation Mansion2_AI_Activation: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_GUARD_BOAT_DRIVER // Start at door of mooring area talking to a mechanic CLEAR_CHAR_TASKS_IMMEDIATELY charGuards[nTempPed] SET_CHAR_COORDINATES charGuards[nTempPed] -1423.1376 493.9279 2.0391 SET_CHAR_HEADING charGuards[nTempPed] 355.6815 aiGuards[nTempPed] = MANSION2_GUARDAI_TICKING_OVER flagGuardsAllowAlert[nTempPed] = TRUE BREAK CASE MANSION2_GUARD_BOAT_BACK // Start in downstairs boxes room DETACH_CHAR_FROM_CAR charGuards[nTempPed] CLEAR_CHAR_TASKS_IMMEDIATELY charGuards[nTempPed] SET_CHAR_COORDINATES charGuards[nTempPed] -1394.4768 500.6530 2.0463 SET_CHAR_HEADING charGuards[nTempPed] 214.6545 aiGuards[nTempPed] = MANSION2_GUARDAI_TICKING_OVER flagGuardsAllowAlert[nTempPed] = TRUE BREAK CASE MANSION2_GUARD_BOAT_FRONT // Start in downstairs boxes room DETACH_CHAR_FROM_CAR charGuards[nTempPed] CLEAR_CHAR_TASKS_IMMEDIATELY charGuards[nTempPed] SET_CHAR_COORDINATES charGuards[nTempPed] -1396.3969 500.5882 2.0391 SET_CHAR_HEADING charGuards[nTempPed] 233.6078 aiGuards[nTempPed] = MANSION2_GUARDAI_TICKING_OVER flagGuardsAllowAlert[nTempPed] = TRUE BREAK CASE MANSION2_GUARD_PILOT_BIG_LIFT // Start by exiting Harrier aiGuards[nTempPed] = MANSION2_GUARDAI_EXIT_PLANE BREAK CASE MANSION2_GUARD_HARRIER_GUIDE // Go Home aiGuards[nTempPed] = MANSION2_GUARDAI_WALK_HOME BREAK CASE MANSION2_GUARD_PILOT_SMALL_LIFT // Exit the Harrier aiGuards[nTempPed] = MANSION2_GUARDAI_EXIT_PLANE BREAK DEFAULT WRITE_DEBUG UNKNOWN_GUARD_FOR_ACTIVATION ENDSWITCH // Make all Guards have a Stealth decision maker // NOTE: Harier Guide gets this stuff on creation IF NOT nTempPed = MANSION2_GUARD_HARRIER_GUIDE GIVE_WEAPON_TO_CHAR charGuards[nTempPed] WEAPONTYPE_M4 300 SET_CURRENT_CHAR_WEAPON charGuards[nTempPed] WEAPONTYPE_M4 SET_CHAR_ACCURACY charGuards[nTempPed] 70 SET_CHAR_SHOOT_RATE charGuards[nTempPed] 70 SET_CHAR_DECISION_MAKER charGuards[nTempPed] dmStealth // SET_INFORM_RESPECTED_FRIENDS charGuards[nTempPed] MANSION2_RESPECTED_FRIENDS_DISTANCE_m MANSION2_NUMBER_OF_RESPECTED_FRIENDS ENDIF RETURN // **************************************** // GuardAI: Walk Home Mansion2_AI_Walk_Home: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_GUARD_BOAT_DRIVER // Walk to recreation room TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1348.1710 498.9987 10.1953 PEDMOVE_WALK MANSION2_PERSIST aiGuards[nTempPed] = MANSION2_GUARDAI_WALKING_HOME BREAK CASE MANSION2_GUARD_BOAT_BACK // Walk to upper deck Harrier TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1340.6578 500.8229 17.2266 PEDMOVE_WALK MANSION2_PERSIST aiGuards[nTempPed] = MANSION2_GUARDAI_WALKING_HOME BREAK CASE MANSION2_GUARD_BOAT_FRONT // Walk to control room TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1289.7054 489.1904 10.2026 PEDMOVE_WALK MANSION2_PERSIST aiGuards[nTempPed] = MANSION2_GUARDAI_WANDERING timerGuardsAI[nTempPed] = m_mission_timer + 5000 BREAK CASE MANSION2_GUARD_HARRIER_GUIDE // Walk to Big Lift to watch other plane TASK_GO_STRAIGHT_TO_COORD charGuards[nTempPed] -1445.2346 501.5114 17.2266 PEDMOVE_WALK MANSION2_PERSIST aiGuards[nTempPed] = MANSION2_GUARDAI_WALKING_HOME BREAK DEFAULT WRITE_DEBUG UNKNOWN_GUARD_FOR_WALK_HOME ENDSWITCH RETURN // **************************************** // GuardAI: Walking Home Mansion2_AI_Walking_Home: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_GUARD_BOAT_DRIVER // Walking to recreation room IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1348.1710 498.9987 10.1953 1.2 1.2 2.0 FALSE aiGuards[nTempPed] = MANSION2_GUARDAI_SIT ENDIF BREAK CASE MANSION2_GUARD_BOAT_BACK // Walk to upper deck Harrier IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1340.6578 500.8229 17.2266 1.2 1.2 2.0 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 303.0599 aiGuards[nTempPed] = MANSION2_GUARDAI_TICKING_OVER ENDIF BREAK CASE MANSION2_GUARD_HARRIER_GUIDE // Walk to upper deck Harrier IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1435.7202 501.0618 17.2266 1.2 1.2 2.0 FALSE aiGuards[nTempPed] = MANSION2_GUARDAI_WATCH_PLANE ENDIF BREAK DEFAULT WRITE_DEBUG UNKNOWN_GUARD_FOR_WALKING_HOME ENDSWITCH RETURN // **************************************** // GuardAI: Chat Mansion2_AI_Chat: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_GUARD_BOAT_DRIVER // Chat to Mechanic IF NOT IS_CHAR_DEAD charMechanics[MANSION2_MECHANIC_DOWNSTAIRS] TASK_CHAT_WITH_CHAR charGuards[nTempPed] charMechanics[MANSION2_MECHANIC_DOWNSTAIRS] TRUE TRUE TASK_CHAT_WITH_CHAR charMechanics[MANSION2_MECHANIC_DOWNSTAIRS] charGuards[nTempPed] FALSE TRUE ENDIF timerGuardsAI[nTempPed] = m_mission_timer + 7000 BREAK DEFAULT WRITE_DEBUG UNKNOWN_GUARD_FOR_CHAT ENDSWITCH aiGuards[nTempPed] = MANSION2_GUARDAI_CHATTING RETURN // **************************************** // GuardAI: Chatting Mansion2_AI_Chatting: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_GUARD_BOAT_DRIVER // Still chatting to Mechanic? IF timerGuardsAI[nTempPed] < m_mission_timer // ...cancel the chat, and walk home aiGuards[nTempPed] = MANSION2_GUARDAI_WALK_HOME ENDIF BREAK DEFAULT WRITE_DEBUG UNKNOWN_GUARD_FOR_CHAT ENDSWITCH RETURN // **************************************** // GuardAI: Sit Mansion2_AI_Sit: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_GUARD_BOAT_DRIVER // Sit on rec-room sofa OPEN_SEQUENCE_TASK nSeqTask TASK_GO_STRAIGHT_TO_COORD -1 -1348.0746 493.1958 10.1953 PEDMOVE_WALK MANSION2_PERSIST // Alongside Sofa TASK_GO_STRAIGHT_TO_COORD -1 -1345.7485 493.6958 10.2027 PEDMOVE_WALK MANSION2_PERSIST // Front of Sofa TASK_ACHIEVE_HEADING -1 180.0 // Achieve Heading TASK_SIT_DOWN -1 99999999 // Sit down (forever) CLOSE_SEQUENCE_TASK nSeqTask PERFORM_SEQUENCE_TASK charGuards[nTempPed] nSeqTask CLEAR_SEQUENCE_TASK nSeqTask aiGuards[nTempPed] = MANSION2_GUARDAI_TICKING_OVER BREAK DEFAULT WRITE_DEBUG UNKNOWN_GUARD_FOR_SIT ENDSWITCH RETURN // **************************************** // GuardAI: Wander Mansion2_AI_Wander: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_GUARD_BOAT_FRONT // Choose a new destination GOSUB Mansion2_AI_Wander_GBF aiGuards[nTempPed] = MANSION2_GUARDAI_WANDERING BREAK CASE MANSION2_GUARD_BOAT_BACK // Choose a new destination GOSUB Mansion2_AI_Wander_GBB aiGuards[nTempPed] = MANSION2_GUARDAI_WANDERING BREAK CASE MANSION2_GUARD_PILOT_BIG_LIFT // Choose a new destination GOSUB Mansion2_AI_Wander_GPBL aiGuards[nTempPed] = MANSION2_GUARDAI_WANDERING BREAK CASE MANSION2_GUARD_HARRIER_GUIDE // Choose a new destination GOSUB Mansion2_AI_Wander_GHG aiGuards[nTempPed] = MANSION2_GUARDAI_WANDERING BREAK CASE MANSION2_GUARD_PILOT_SMALL_LIFT // Choose a new destination GOSUB Mansion2_AI_Wander_GPSL aiGuards[nTempPed] = MANSION2_GUARDAI_WANDERING BREAK DEFAULT WRITE_DEBUG UNKNOWN_GUARD_FOR_WANDER ENDSWITCH RETURN // **************************************** // GuardAI: Wandering Mansion2_AI_Wandering: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_GUARD_BOAT_FRONT // Arrived at destination? IF timerGuardsAI[nTempPed] < m_mission_timer GOSUB Mansion2_AI_Wandering_GBF IF flagTempFlag = TRUE GENERATE_RANDOM_INT_IN_RANGE 5000 7000 nTempInt timerGuardsAI[nTempPed] = m_mission_timer + nTempInt aiGuards[nTempPed] = MANSION2_GUARDAI_WANDER_STOPPED ENDIF ENDIF BREAK CASE MANSION2_GUARD_BOAT_BACK // Arrived at destination? IF timerGuardsAI[nTempPed] < m_mission_timer GOSUB Mansion2_AI_Wandering_GBB IF flagTempFlag = TRUE GENERATE_RANDOM_INT_IN_RANGE 5000 7000 nTempInt timerGuardsAI[nTempPed] = m_mission_timer + nTempInt aiGuards[nTempPed] = MANSION2_GUARDAI_WANDER_STOPPED ENDIF ENDIF BREAK CASE MANSION2_GUARD_PILOT_BIG_LIFT // Arrived at destination? IF timerGuardsAI[nTempPed] < m_mission_timer GOSUB Mansion2_AI_Wandering_GPBL IF flagTempFlag = TRUE GENERATE_RANDOM_INT_IN_RANGE 5000 7000 nTempInt timerGuardsAI[nTempPed] = m_mission_timer + nTempInt aiGuards[nTempPed] = MANSION2_GUARDAI_WANDER_STOPPED ENDIF ENDIF BREAK CASE MANSION2_GUARD_HARRIER_GUIDE // Arrived at destination? IF timerGuardsAI[nTempPed] < m_mission_timer GOSUB Mansion2_AI_Wandering_GHG IF flagTempFlag = TRUE GENERATE_RANDOM_INT_IN_RANGE 5000 7000 nTempInt timerGuardsAI[nTempPed] = m_mission_timer + nTempInt aiGuards[nTempPed] = MANSION2_GUARDAI_WANDER_STOPPED ENDIF ENDIF BREAK CASE MANSION2_GUARD_PILOT_SMALL_LIFT // Arrived at destination? IF timerGuardsAI[nTempPed] < m_mission_timer GOSUB Mansion2_AI_Wandering_GPSL IF flagTempFlag = TRUE GENERATE_RANDOM_INT_IN_RANGE 5000 7000 nTempInt timerGuardsAI[nTempPed] = m_mission_timer + nTempInt aiGuards[nTempPed] = MANSION2_GUARDAI_WANDER_STOPPED ENDIF ENDIF BREAK DEFAULT WRITE_DEBUG UNKNOWN_GUARD_FOR_WANDERING ENDSWITCH RETURN // **************************************** // GuardAI: Wander Stopped Mansion2_AI_WanderStop: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF // Ready to Wander again? IF timerGuardsAI[nTempPed] < m_mission_timer aiGuards[nTempPed] = MANSION2_GUARDAI_WANDER ENDIF RETURN // **************************************** // GuardAI: Exit Plane Mansion2_AI_ExitPlane: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF // Exit Plane IF IS_CHAR_IN_ANY_PLANE charGuards[nTempPed] TASK_LEAVE_ANY_CAR charGuards[nTempPed] ENDIF aiGuards[nTempPed] = MANSION2_GUARDAI_EXITING_PLANE RETURN // **************************************** // GuardAI: Exiting Plane Mansion2_AI_ExitingPlane: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF // Has Guard left plane? IF IS_CHAR_IN_ANY_PLANE charGuards[nTempPed] RETURN ENDIF // Tell Ped what to do next SWITCH nTempPed CASE MANSION2_GUARD_PILOT_BIG_LIFT aiGuards[nTempPed] = MANSION2_GUARDAI_WANDER flagGuardsAllowAlert[nTempPed] = TRUE BREAK CASE MANSION2_GUARD_PILOT_SMALL_LIFT aiGuards[nTempPed] = MANSION2_GUARDAI_TICKING_OVER BREAK DEFAULT WRITE_DEBUG UNKNOWN_GUARD_FOR_EXITING_PLANE ENDSWITCH RETURN // **************************************** // GuardAI: Watch Plane Mansion2_AI_WatchPlane: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_GUARD_HARRIER_GUIDE // Watch the Big Lift plane coming in to land IF IS_CAR_DEAD carPlanes[MANSION2_PLANE_BIG_LIFT] // ...plane is dead, so wander aiGuards[nTempPed] = MANSION2_GUARDAI_WANDER CLEAR_LOOK_AT charGuards[nTempPed] ELSE IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR carPlanes[MANSION2_PLANE_BIG_LIFT] // ...plane has landed, so wander aiGuards[nTempPed] = MANSION2_GUARDAI_WANDER CLEAR_LOOK_AT charGuards[nTempPed] ELSE // Face plane again // ...guard coords GET_CHAR_COORDINATES charGuards[nTempPed] xposTemp yposTemp zposTemp xhiTemp = xposTemp yhiTemp = yposTemp // ...plane coords GET_CAR_COORDINATES carPlanes[MANSION2_PLANE_BIG_LIFT] xposTemp yposTemp zposTemp xloTemp = xposTemp yloTemp = yposTemp // ...calculate vector xposTemp = xloTemp - xhiTemp yposTemp = yloTemp - yhiTemp GET_HEADING_FROM_VECTOR_2D xposTemp yposTemp headTemp // ...turn towards vector TASK_ACHIEVE_HEADING charGuards[nTempPed] headTemp // Look at, if not already a task GET_SCRIPT_TASK_STATUS charGuards[nTempPed] TASK_LOOK_AT_CHAR m_status IF NOT m_status = PERFORMING_TASK IF NOT IS_CHAR_DEAD charGuards[MANSION2_GUARD_PILOT_BIG_LIFT] TASK_LOOK_AT_CHAR charGuards[nTempPed] charGuards[MANSION2_GUARD_PILOT_BIG_LIFT] MANSION2_PERSIST ENDIF ENDIF // Set up the timer to allow a re-adjustment of the heading timerGuardsAI[nTempPed] = m_mission_timer + 5000 aiGuards[nTempPed] = MANSION2_GUARDAI_WATCHING_PLANE ENDIF ENDIF BREAK DEFAULT WRITE_DEBUG UNKNOWN_GUARD_FOR_WATCH_PLANES ENDSWITCH RETURN // **************************************** // GuardAI: Watching Plane Mansion2_AI_WatchingPlane: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_GUARD_HARRIER_GUIDE IF timerGuardsAI[nTempPed] < m_mission_timer // ...timer has elapsed, so re-adjust heading aiGuards[nTempPed] = MANSION2_GUARDAI_WATCH_PLANE ENDIF BREAK DEFAULT WRITE_DEBUG UNKNOWN_GUARD_FOR_WATCHING_PLANE ENDSWITCH RETURN // **************************************** // GuardAI: Teleport Mansion2_AI_Teleport: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF IF IS_CHAR_IN_ANY_CAR charGuards[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_GUARD_PILOT_SMALL_LIFT // ...teleport off the lift to safety SET_CHAR_COORDINATES charGuards[nTempPed] -1413.0044 508.9740 10.1953 aiGuards[nTempPed] = MANSION2_GUARDAI_TICKING_OVER flagGuardsAllowAlert[nTempPed] = TRUE // Show blip after teleport to avoid glitch ADD_BLIP_FOR_CHAR charGuards[nTempPed] blipGuards[nTempPed] CHANGE_BLIP_DISPLAY blipGuards[nTempPed] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR blipGuards[nTempPed] TRUE BREAK DEFAULT WRITE_DEBUG UNKNOWN_GUARD_FOR_TELEPORT ENDSWITCH RETURN // **************************************** // GuardAI: Goto Alert Position Mansion2_AI_GotoAlert: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_GUARD_BOAT_DRIVER // Run to Middle Deck area TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1324.1584 508.4572 10.1953 PEDMOVE_RUN MANSION2_PERSIST aiGuards[nTempPed] = MANSION2_GUARDAI_GOING_TO_ALERT_POSITION BREAK CASE MANSION2_GUARD_BOAT_BACK // Run to Rec Room area TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1348.0607 492.4249 10.1953 PEDMOVE_RUN MANSION2_PERSIST aiGuards[nTempPed] = MANSION2_GUARDAI_GOING_TO_ALERT_POSITION BREAK CASE MANSION2_GUARD_BOAT_FRONT // Run to Control Room area TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1299.6533 509.2915 10.1953 PEDMOVE_RUN MANSION2_PERSIST aiGuards[nTempPed] = MANSION2_GUARDAI_GOING_TO_ALERT_POSITION BREAK CASE MANSION2_GUARD_PILOT_BIG_LIFT // Run to Harriers area TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1434.2120 508.0886 10.1953 PEDMOVE_RUN MANSION2_PERSIST aiGuards[nTempPed] = MANSION2_GUARDAI_GOING_TO_ALERT_POSITION BREAK CASE MANSION2_GUARD_HARRIER_GUIDE // Run to Top Deck area TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1418.2070 492.2773 17.2266 PEDMOVE_RUN MANSION2_PERSIST aiGuards[nTempPed] = MANSION2_GUARDAI_GOING_TO_ALERT_POSITION BREAK CASE MANSION2_GUARD_PILOT_SMALL_LIFT // Run to Boxes and missiles area TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1409.1537 506.4637 10.1953 PEDMOVE_RUN MANSION2_PERSIST aiGuards[nTempPed] = MANSION2_GUARDAI_GOING_TO_ALERT_POSITION BREAK DEFAULT WRITE_DEBUG UNKNOWN_GUARD_FOR_GOTO_ALERT ENDSWITCH RETURN // **************************************** // GuardAI: Going To Alert Position Mansion2_AI_GoingToAlert: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_GUARD_BOAT_DRIVER // Middle Deck area IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1324.1584 508.4572 10.1953 2.0 2.0 2.0 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 98.0823 aiGuards[nTempPed] = MANSION2_GUARDAI_ORIENTATE_AT_ALERT_POSITION timerGuardsAI[nTempPed] = 0 ENDIF BREAK CASE MANSION2_GUARD_BOAT_BACK // Rec Room area IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1348.0607 492.4249 10.1953 2.0 2.0 2.0 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 0.0 aiGuards[nTempPed] = MANSION2_GUARDAI_ORIENTATE_AT_ALERT_POSITION timerGuardsAI[nTempPed] = 0 ENDIF BREAK CASE MANSION2_GUARD_BOAT_FRONT // Control Room area IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1299.6533 509.2915 10.1953 2.0 2.0 2.0 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 122.1536 aiGuards[nTempPed] = MANSION2_GUARDAI_ORIENTATE_AT_ALERT_POSITION timerGuardsAI[nTempPed] = 0 ENDIF BREAK CASE MANSION2_GUARD_PILOT_BIG_LIFT // Harriers area IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1434.2120 508.0886 10.1953 2.0 2.0 2.0 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 261.6837 aiGuards[nTempPed] = MANSION2_GUARDAI_ORIENTATE_AT_ALERT_POSITION timerGuardsAI[nTempPed] = 0 ENDIF BREAK CASE MANSION2_GUARD_HARRIER_GUIDE // Top Deck area IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1418.2070 492.2773 17.2266 2.0 2.0 2.0 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 304.1052 aiGuards[nTempPed] = MANSION2_GUARDAI_ORIENTATE_AT_ALERT_POSITION timerGuardsAI[nTempPed] = 0 ENDIF BREAK CASE MANSION2_GUARD_PILOT_SMALL_LIFT // Boxes and Missiles area IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1409.1537 506.4637 10.1953 2.0 2.0 2.0 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 270.2725 aiGuards[nTempPed] = MANSION2_GUARDAI_ORIENTATE_AT_ALERT_POSITION timerGuardsAI[nTempPed] = 0 ENDIF BREAK DEFAULT WRITE_DEBUG UNKNOWN_GUARD_FOR_GOING_TO_ALERT ENDSWITCH GOSUB Mansion2_Update_Active_Alert_State RETURN // **************************************** // GuardAI: Alert Orientate Mansion2_AI_AlertOrientate: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF GET_SCRIPT_TASK_STATUS charGuards[nTempPed] TASK_ACHIEVE_HEADING m_status IF m_status = FINISHED_TASK SET_CHAR_KINDA_STAY_IN_SAME_PLACE charGuards[nTempPed] TRUE aiGuards[nTempPed] = MANSION2_GUARDAI_AT_ALERT_POSITION timerGuardsAI[nTempPed] = 0 ENDIF GOSUB Mansion2_Update_Active_Alert_State RETURN // **************************************** // GuardAI: At Alert Position Mansion2_AI_Alert: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF IF timerGuardsAI[nTempPed] > m_mission_timer RETURN ENDIF GET_SCRIPT_TASK_STATUS charGuards[nTempPed] TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING m_status IF m_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING charGuards[nTempPed] scplayer DUCK_RANDOMLY 3000 60 timerGuardsAI[nTempPed] = m_mission_timer + 1000 ENDIF GOSUB Mansion2_Update_Active_Alert_State RETURN // **************************************** // GuardAI: Attack Mansion2_AI_Attack: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF // Make the guy tough and allow him to move SET_CHAR_DECISION_MAKER charGuards[nTempPed] dmTough SET_CHAR_KINDA_STAY_IN_SAME_PLACE charGuards[nTempPed] FALSE aiGuards[nTempPed] = MANSION2_GUARDAI_ATTACKING flagGuardsOnAlert[nTempPed] = TRUE timerGuardsAI[nTempPed] = 0 RETURN // **************************************** // GuardAI: Run Attack Mansion2_AI_RunAttack: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_GUARD_BOAT_DRIVER // ...the run bit TASK_GO_STRAIGHT_TO_COORD charGuards[nTempPed] -1431.9436 500.2454 2.0391 PEDMOVE_RUN MANSION2_PERSIST // Corner of warehouse BREAK DEFAULT WRITE_DEBUG UNKNOWN_GUARD_FOR_RUN_ATTACK ENDSWITCH // Make the guy tough and allow him to move SET_CHAR_DECISION_MAKER charGuards[nTempPed] dmTough aiGuards[nTempPed] = MANSION2_GUARDAI_RUNNING_ATTACK flagGuardsOnAlert[nTempPed] = TRUE timerGuardsAI[nTempPed] = 0 RETURN // **************************************** // GuardAI: Running Attack Mansion2_AI_RunningAttack: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF // If this char is shooting then put the boat on alert IF flagCarrierOnAlert = FALSE IF IS_CHAR_SHOOTING charGuards[nTempPed] flagCarrierOnAlert = TRUE IF nReasonForDetection = MANSION2_DETECTED_UNKNOWN nReasonForDetection = MANSION2_DETECTED_BY_GUARD ENDIF ENDIF ENDIF SWITCH nTempPed CASE MANSION2_GUARD_BOAT_DRIVER IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1431.9436 500.2454 2.0391 1.2 1.2 2.0 FALSE timerGuardsAI[nTempPed] = 0 // ...the attack bit aiGuards[nTempPed] = MANSION2_GUARDAI_ATTACKING ENDIF BREAK DEFAULT WRITE_DEBUG UNKNOWN_GUARD_FOR_RUNNING_ATTACK ENDSWITCH GOSUB Mansion2_Update_Active_Alert_State RETURN // **************************************** // GuardAI: Attacking Mansion2_AI_Attacking: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF // If this char is shooting then put the boat on alert IF flagCarrierOnAlert = FALSE IF IS_CHAR_SHOOTING charGuards[nTempPed] flagCarrierOnAlert = TRUE IF nReasonForDetection = MANSION2_DETECTED_UNKNOWN nReasonForDetection = MANSION2_DETECTED_BY_GUARD ENDIF ENDIF ENDIF IF timerGuardsAI[nTempPed] > m_mission_timer RETURN ENDIF GET_SCRIPT_TASK_STATUS charGuards[nTempPed] TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING m_status IF m_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT_WHILE_DUCKING charGuards[nTempPed] scplayer DUCK_RANDOMLY 3000 60 timerGuardsAI[nTempPed] = m_mission_timer + 1000 ENDIF GOSUB Mansion2_Update_Active_Alert_State RETURN // **************************************** // GuardAI: Wander (Guard Boat Front) Mansion2_AI_Wander_GBF: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 6 nTempInt SWITCH nTempInt CASE 0 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1289.7054 489.1904 10.2026 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 1 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1325.6605 498.4251 10.2026 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 2 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1302.2484 504.2907 10.1953 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 3 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1292.3530 494.8264 10.1953 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 4 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1301.5991 509.8161 10.1953 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 5 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1294.2568 504.8536 10.1953 PEDMOVE_WALK MANSION2_PERSIST BREAK ENDSWITCH // Make sure the Guard gets a bit away from the current location before checking for a new location timerGuardsAI[nTempPed] = m_mission_timer + 5000 RETURN // **************************************** // GuardAI: Wandering (Guard Boat Front) Mansion2_AI_Wandering_GBF: flagTempFlag = FALSE IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1289.7054 489.1904 10.2026 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 155.3066 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1325.6605 498.4251 10.2026 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 77.7535 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1302.2484 504.2907 10.1953 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 275.9547 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1292.3530 494.8264 10.1953 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 248.8300 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1301.5991 509.8161 10.1953 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 14.8410 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1294.2568 504.8536 10.1953 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 157.6618 flagTempFlag = TRUE ENDIF RETURN // **************************************** // GuardAI: Wander (Guard Boat Back) Mansion2_AI_Wander_GBB: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 5 nTempInt SWITCH nTempInt CASE 0 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1311.8341 489.4401 17.2266 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 1 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1298.3593 512.5721 17.2266 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 2 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1247.3519 502.8824 17.2266 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 3 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1359.6558 512.5123 17.2266 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 4 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1349.6064 493.5821 17.2279 PEDMOVE_WALK MANSION2_PERSIST BREAK ENDSWITCH // Make sure the Guard gets a bit away from the current location before checking for a new location timerGuardsAI[nTempPed] = m_mission_timer + 5000 RETURN // **************************************** // GuardAI: Wandering (Guard Boat Back) Mansion2_AI_Wandering_GBB: flagTempFlag = FALSE IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1311.8341 489.4401 17.2266 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 180.0 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1298.3593 512.5721 17.2266 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 0.0 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1247.3519 502.8824 17.2266 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 270.0 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1359.6558 512.5123 17.2266 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 0.0 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1349.6064 493.5821 17.2279 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 80.0 flagTempFlag = TRUE ENDIF RETURN // **************************************** // GuardAI: Wander (Guard Pilot Big Lift) Mansion2_AI_Wander_GPBL: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 6 nTempInt SWITCH nTempInt CASE 0 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1444.2896 496.4273 10.1953 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 1 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1449.6210 506.0983 10.1953 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 2 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1424.2526 511.1483 10.1953 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 3 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1411.0833 511.8316 10.1953 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 4 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1417.3419 505.5704 10.1953 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 5 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1431.4982 501.8023 10.1953 PEDMOVE_WALK MANSION2_PERSIST BREAK ENDSWITCH // Make sure the Guard gets a bit away from the current location before checking for a new location timerGuardsAI[nTempPed] = m_mission_timer + 5000 RETURN // **************************************** // GuardAI: Wandering (Guard Pilot Big Lift) Mansion2_AI_Wandering_GPBL: flagTempFlag = FALSE IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1444.2896 496.4273 10.1953 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 56.0502 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1449.6210 506.0983 10.1953 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 123.3438 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1424.2526 511.1483 10.1953 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 318.9861 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1411.0833 511.8316 10.1953 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 28.0647 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1417.3419 505.5704 10.1953 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 139.4299 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1431.4982 501.8023 10.1953 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 242.7025 flagTempFlag = TRUE ENDIF RETURN // **************************************** // GuardAI: Wander (Guard Harrier Guide) Mansion2_AI_Wander_GHG: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 5 nTempInt SWITCH nTempInt CASE 0 TASK_GO_STRAIGHT_TO_COORD charGuards[nTempPed] -1445.2346 501.5114 17.2266 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 1 TASK_GO_STRAIGHT_TO_COORD charGuards[nTempPed] -1419.4803 510.3460 17.2295 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 2 TASK_GO_STRAIGHT_TO_COORD charGuards[nTempPed] -1412.2179 489.4574 17.2266 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 3 TASK_GO_STRAIGHT_TO_COORD charGuards[nTempPed] -1395.9346 498.2455 17.2266 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 4 TASK_GO_STRAIGHT_TO_COORD charGuards[nTempPed] -1373.5787 512.9980 17.2295 PEDMOVE_WALK MANSION2_PERSIST BREAK ENDSWITCH // Make sure the Guard gets a bit away from the current location before checking for a new location timerGuardsAI[nTempPed] = m_mission_timer + 5000 RETURN // **************************************** // GuardAI: Wandering (Guard Harrier Guide) Mansion2_AI_Wandering_GHG: flagTempFlag = FALSE IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1445.2346 501.5114 17.2266 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 90.0 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1419.4803 510.3460 17.2295 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 0.0 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1412.2179 489.4574 17.2266 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 180.0 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1395.9346 498.2455 17.2266 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 194.6539 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1373.5787 512.9980 17.2295 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 326.6510 flagTempFlag = TRUE ENDIF RETURN // **************************************** // GuardAI: Wander (Guard Pilot Small Lift) Mansion2_AI_Wander_GPSL: IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 5 nTempInt SWITCH nTempInt CASE 0 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1411.7139 512.2815 10.1953 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 1 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1406.4513 502.4760 10.1953 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 2 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1366.0299 505.7779 10.2026 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 3 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1366.4841 516.8234 10.1797 PEDMOVE_WALK MANSION2_PERSIST BREAK CASE 4 TASK_FOLLOW_PATH_NODES_TO_COORD charGuards[nTempPed] -1344.8208 499.0515 10.2027 PEDMOVE_WALK MANSION2_PERSIST BREAK ENDSWITCH // Make sure the Guard gets a bit away from the current location before checking for a new location timerGuardsAI[nTempPed] = m_mission_timer + 5000 RETURN // **************************************** // GuardAI: Wandering (Guard Pilot Small Lift) Mansion2_AI_Wandering_GPSL: flagTempFlag = FALSE IF IS_CHAR_DEAD charGuards[nTempPed] RETURN ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1411.7139 512.2815 10.1953 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 24.5074 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1406.4513 502.4760 10.1953 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 236.3499 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1366.0299 505.7779 10.2026 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 180.0 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1366.4841 516.8234 10.1797 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 341.4966 flagTempFlag = TRUE ENDIF IF LOCATE_CHAR_ANY_MEANS_3D charGuards[nTempPed] -1344.8208 499.0515 10.2027 1.2 1.2 1.2 FALSE TASK_ACHIEVE_HEADING charGuards[nTempPed] 192.1196 flagTempFlag = TRUE ENDIF RETURN // ************************************************************************************************************* // Mechanic AI // ************************************************************************************************************* // **************************************** // Maintain Mechanic AI Mansion2_Maintain_MechanicAI: // Check for any newly dead mechanics REPEAT MANSION2_MAX_MECHANICS nTempPed IF NOT aiMechanics[nTempPed] = MANSION2_MECHANICAI_NOT_INITIALISED AND NOT aiMechanics[nTempPed] = MANSION2_MECHANICAI_DEAD IF IS_CHAR_DEAD charMechanics[nTempPed] aiMechanics[nTempPed] = MANSION2_MECHANICAI_DEAD GOSUB Mansion2_Dead_Mechanic_Informs_Nearby_Peds ENDIF ENDIF ENDREPEAT REPEAT MANSION2_MAX_MECHANICS nTempPed // Check for a change in the Mechanic's alert state GOSUB Mansion2_Update_Mech_Alert_State SWITCH aiMechanics[nTempPed] CASE MANSION2_MECHANICAI_NOT_INITIALISED CASE MANSION2_MECHANICAI_DEAD // ...nothing to do BREAK CASE MANSION2_MECHANICAI_ACTIVATION GOSUB Mansion2_MechAI_Activation BREAK CASE MANSION2_MECHANICAI_CHAT GOSUB Mansion2_MechAI_Chat BREAK CASE MANSION2_MECHANICAI_CHATTING GOSUB Mansion2_MechAI_Chatting BREAK CASE MANSION2_MECHANICAI_ENTER_FORKLIFT GOSUB Mansion2_MechAI_Enter BREAK CASE MANSION2_MECHANICAI_ENTERING_FORKLIFT GOSUB Mansion2_MechAI_Entering BREAK CASE MANSION2_MECHANICAI_FORKLIFT_WANDER GOSUB Mansion2_MechAI_Wander BREAK CASE MANSION2_MECHANICAI_FORKLIFT_WANDERING GOSUB Mansion2_MechAI_Wandering BREAK CASE MANSION2_MECHANICAI_FORKLIFT_WANDER_STOPPED GOSUB Mansion2_MechAI_WanderStop BREAK CASE MANSION2_MECHANICAI_GOTO_COWER_POSITION GOSUB Mansion2_MechAI_GotoCower BREAK CASE MANSION2_MECHANICAI_GOING_TO_COWER_POSITION GOSUB Mansion2_MechAI_GoingToCower BREAK CASE MANSION2_MECHANICAI_AT_COWER_POSITION GOSUB Mansion2_MechAI_Cower BREAK CASE MANSION2_MECHANICAI_CHANGE_COWER_POSITION GOSUB Mansion2_MechAI_ChangeCower BREAK CASE MANSION2_MECHANICAI_GOTO_ALARM GOSUB Mansion2_MechAI_GotoAlarm BREAK CASE MANSION2_MECHANICAI_GOING_TO_ALARM GOSUB Mansion2_MechAI_GoingToAlarm BREAK CASE MANSION2_MECHANICAI_TRIGGER_ALARM GOSUB Mansion2_MechAI_TriggerAlarm BREAK CASE MANSION2_MECHANICAI_TRIGGERING_ALARM GOSUB Mansion2_MechAI_TriggeringAlarm BREAK CASE MANSION2_MECHANICAI_TICKING_OVER // ...nothing to do for now BREAK DEFAULT WRITE_DEBUG Unknown_MechanicAI ENDSWITCH ENDREPEAT RETURN // **************************************** // MechanicAI: Update Mechanic Alert State Mansion2_Update_Mech_Alert_State: // This routine is called when the ped is not on alert IF flagAllowMechanicSensesUpdates = FALSE RETURN ENDIF // Is the ship on alert? IF flagCarrierOnAlert = TRUE // ...yes, so check if this Mechanic is already on alert IF flagMechanicsOnAlert[nTempPed] = FALSE // ...no, so make this mechanic go on alert aiMechanics[nTempPed] = MANSION2_MECHANICAI_GOTO_COWER_POSITION flagMechanicsOnAlert[nTempPed] = TRUE ENDIF RETURN ENDIF // Can the Mechanic see the player? IF flagMechanicsOnAlert[nTempPed] = FALSE IF NOT IS_CHAR_DEAD charMechanics[nTempPed] IF HAS_CHAR_SPOTTED_CHAR_IN_FRONT charMechanics[nTempPed] scplayer // Restrict the distance GET_CHAR_COORDINATES charMechanics[nTempPed] xposTemp yposTemp zposTemp GET_CHAR_COORDINATES scplayer xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance IF fTempDistance < 15.0 aiMechanics[nTempPed] = MANSION2_MECHANICAI_GOTO_ALARM // Mechanic is running for alarm IF NOT nReasonForDetection = MANSION2_DETECTED_TOO_MUCH_NOISE PRINT_NOW MAN2_45 7000 1 ENDIF flagMechanicsOnAlert[nTempPed] = TRUE GOSUB Mansion2_Mechanic_Informs_Nearby_Peds RETURN ENDIF ENDIF ENDIF ENDIF // Can the Mechanic see a dead army guy? IF flagMechanicsOnAlert[nTempPed] = FALSE IF NOT IS_CHAR_DEAD charMechanics[nTempPed] IF CAN_CHAR_SEE_DEAD_CHAR charMechanics[nTempPed] PEDTYPE_MISSION2 aiMechanics[nTempPed] = MANSION2_MECHANICAI_GOTO_ALARM flagMechanicsOnAlert[nTempPed] = TRUE // Mechanic has seen dead body and is running for alarm PRINT_NOW MAN2_48 7000 1 GOSUB Mansion2_Mechanic_Informs_Nearby_Peds IF nReasonForDetection = MANSION2_DETECTED_UNKNOWN nReasonForDetection = MANSION2_DETECTED_DEAD_BODY_BY_MECHANIC ENDIF RETURN ENDIF ENDIF ENDIF // Has player fired a gun? IF flagMechanicsOnAlert[nTempPed] = FALSE IF NOT IS_CHAR_DEAD charMechanics[nTempPed] IF flagPlayerFiringGun = TRUE // ...Player fired a gun, so goto alarm aiMechanics[nTempPed] = MANSION2_MECHANICAI_GOTO_ALARM // Mechanic is running for alarm IF NOT nReasonForDetection = MANSION2_DETECTED_TOO_MUCH_NOISE PRINT_NOW MAN2_45 7000 1 ENDIF flagMechanicsOnAlert[nTempPed] = TRUE GOSUB Mansion2_Mechanic_Informs_Nearby_Peds IF nReasonForDetection = MANSION2_DETECTED_UNKNOWN nReasonForDetection = MANSION2_DETECTED_BY_MECHANIC ENDIF RETURN ENDIF IF flagPlayerFiringSilencedGun = TRUE // ...player fired a silenced gun, so check if the mechanic is close to the player GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp GET_CHAR_COORDINATES charMechanics[nTempPed] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_2D xposTemp yposTemp xposTemp2 yposTemp2 fTempFloat IF fTempFloat < 12.0 fTempFloat2 = zposTemp - zposTemp2 IF fTempFloat2 < 0.0 fTempFloat2 *= -1.0 ENDIF IF fTempFloat2 < 5.0 // ...player was heard firing a silenced pistol on the same floor as this ped aiMechanics[nTempPed] = MANSION2_MECHANICAI_GOTO_ALARM // Mechanic is running for alarm IF NOT nReasonForDetection = MANSION2_DETECTED_TOO_MUCH_NOISE PRINT_NOW MAN2_45 7000 1 ENDIF flagMechanicsOnAlert[nTempPed] = TRUE GOSUB Mansion2_Mechanic_Informs_Nearby_Peds RETURN ENDIF ENDIF ENDIF ENDIF ENDIF // Has this ped been damaged by player? IF flagMechanicsOnAlert[nTempPed] = FALSE IF NOT IS_CHAR_DEAD charMechanics[nTempPed] IF IS_CHAR_IN_ANY_CAR charMechanics[nTempPed] STORE_CAR_CHAR_IS_IN_NO_SAVE charMechanics[nTempPed] car IF HAS_CAR_BEEN_DAMAGED_BY_CHAR car scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR charMechanics[nTempPed] scplayer // ...mechanic or vehicle has been damaged by player aiMechanics[nTempPed] = MANSION2_MECHANICAI_GOTO_ALARM // Mechanic is running for alarm IF NOT nReasonForDetection = MANSION2_DETECTED_TOO_MUCH_NOISE PRINT_NOW MAN2_45 7000 1 ENDIF flagMechanicsOnAlert[nTempPed] = TRUE GOSUB Mansion2_Mechanic_Informs_Nearby_Peds RETURN ENDIF ELSE IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR charMechanics[nTempPed] scplayer // ...mechanic has been damaged by player aiMechanics[nTempPed] = MANSION2_MECHANICAI_GOTO_ALARM // Mechanic is running for alarm IF NOT nReasonForDetection = MANSION2_DETECTED_TOO_MUCH_NOISE PRINT_NOW MAN2_45 7000 1 ENDIF flagMechanicsOnAlert[nTempPed] = TRUE GOSUB Mansion2_Mechanic_Informs_Nearby_Peds RETURN ENDIF ENDIF ENDIF ENDIF RETURN // **************************************** // MechanicAI: Update Mechanic Active Alert State Mansion2_Update_Mech_Active_Alert_State: // This updates the alert state for Mechanics when the mechanic is already on alert IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF IF flagAllowMechanicSensesUpdates = FALSE RETURN ENDIF // flagTempFlag, if TRUE means make the Mechanic active and inform nearby peds flagTempFlag = FALSE // Can the Mechanic see the player? IF HAS_CHAR_SPOTTED_CHAR_IN_FRONT charMechanics[nTempPed] scplayer flagTempFlag = TRUE ENDIF // Has player fired a gun close by? IF flagTempFlag = FALSE IF flagPlayerFiringGun = TRUE GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp GET_CHAR_COORDINATES charMechanics[nTempPed] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_2D xposTemp yposTemp xposTemp2 yposTemp2 fTempFloat IF fTempFloat < 75.0 fTempFloat2 = zposTemp - zposTemp2 IF fTempFloat2 < 0.0 fTempFloat2 *= -1.0 ENDIF IF fTempFloat2 < 5.0 flagTempFlag = TRUE ENDIF ENDIF ENDIF ENDIF // Has player fired a silence gun close by? IF flagTempFlag = FALSE IF flagPlayerFiringSilencedGun = TRUE // ...player fired a silenced gun, so check if the mechanic is close to the player GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp GET_CHAR_COORDINATES charMechanics[nTempPed] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_2D xposTemp yposTemp xposTemp2 yposTemp2 fTempFloat IF fTempFloat < 12.0 fTempFloat2 = zposTemp - zposTemp2 IF fTempFloat2 < 0.0 fTempFloat2 *= -1.0 ENDIF IF fTempFloat2 < 5.0 flagTempFlag = TRUE ENDIF ENDIF ENDIF ENDIF // Has this ped been damaged by player? IF flagTempFlag = FALSE IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR charMechanics[nTempPed] scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON charMechanics[nTempPed] WEAPONTYPE_PISTOL_SILENCED flagTempFlag = TRUE ENDIF ENDIF // Should this Ped inform nearby peds? IF flagTempFlag = TRUE // Upgrade nearby ped's reactions GOSUB Mansion2_Mechanic_Informs_Nearby_Peds ENDIF RETURN // **************************************** // MechanicAI: Mechanic Informs Nearby Peds Mansion2_Mechanic_Informs_Nearby_Peds: // Inform nearby Guards and Mechanics that they also should react IF NOT IS_CHAR_DEAD charMechanics[nTempPed] GET_CHAR_COORDINATES charMechanics[nTempPed] xposTemp yposTemp zposTemp ELSE GET_DEAD_CHAR_COORDINATES charMechanics[nTempPed] xposTemp yposTemp zposTemp ENDIF // ...check if any Guards should be informed REPEAT MANSION2_MAX_GUARDS nLoop IF NOT IS_CHAR_DEAD charGuards[nLoop] GET_CHAR_COORDINATES charGuards[nLoop] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_2D xposTemp yposTemp xposTemp2 yposTemp2 fTempDistance IF fTempDistance < MANSION2_INFORM_PEDS_RANGE_m fTempFloat = zposTemp - zposTemp2 IF fTempFloat < 0.0 fTempFloat *= -1.0 ENDIF IF fTempFloat < 6.0 IF flagGuardsAllowAlert[nLoop] = TRUE // ...the Guard is allowed to go on alert // Make the Guard attack if not already doing so IF NOT aiGuards[nLoop] = MANSION2_GUARDAI_ATTACK AND NOT aiGuards[nLoop] = MANSION2_GUARDAI_ATTACKING AND NOT aiGuards[nLoop] = MANSION2_GUARDAI_RUN_ATTACK AND NOT aiGuards[nLoop] = MANSION2_GUARDAI_RUNNING_ATTACK aiGuards[nLoop] = MANSION2_GUARDAI_ATTACK ENDIF ENDIF ENDIF ENDIF ENDIF ENDREPEAT // ...check if any Mechanics should be informed REPEAT MANSION2_MAX_MECHANICS nLoop IF NOT IS_CHAR_DEAD charMechanics[nLoop] AND NOT nTempPed = nLoop GET_CHAR_COORDINATES charMechanics[nLoop] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_2D xposTemp yposTemp xposTemp2 yposTemp2 fTempDistance IF fTempDistance < MANSION2_INFORM_PEDS_RANGE_m fTempFloat = zposTemp - zposTemp2 IF fTempFloat < 0.0 fTempFloat *= -1.0 ENDIF IF fTempFloat < 6.0 // Make the Mechanic react if not already doing so IF flagCarrierOnAlert = FALSE // ...if the Carrier is not on alert, make the Mechanic head for the alarm if not already doing so IF flagMechanicsOnAlert[nLoop] = FALSE // ...mechanic is not already on alert, so put him on alert aiMechanics[nLoop] = MANSION2_MECHANICAI_GOTO_ALARM flagMechanicsOnAlert[nLoop] = TRUE ENDIF ELSE ENDIF ENDIF ENDIF ENDIF ENDREPEAT RETURN // **************************************** // MechanicAI: Dead Mechanic Informs Nearby Peds Mansion2_Dead_Mechanic_Informs_Nearby_Peds: // Nearby Guards and Mechanics should react to this seeing this Mechanic die GET_DEAD_CHAR_COORDINATES charMechanics[nTempPed] xposTemp yposTemp zposTemp // ...check if any Guards should be informed REPEAT MANSION2_MAX_GUARDS nLoop IF NOT IS_CHAR_DEAD charGuards[nLoop] AND NOT nTempPed = nLoop GET_CHAR_COORDINATES charGuards[nLoop] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_2D xposTemp yposTemp xposTemp2 yposTemp2 fTempDistance IF fTempDistance < MANSION2_REACT_TO_DEATH_RANGE_m fTempFloat = zposTemp - zposTemp2 IF fTempFloat < 0.0 fTempFloat *= -1.0 ENDIF IF fTempFloat < 6.0 IF flagGuardsAllowAlert[nLoop] = TRUE // ...the Guard is allowed to go on alert // Make the Guard attack if not already doing so IF NOT aiGuards[nLoop] = MANSION2_GUARDAI_ATTACK AND NOT aiGuards[nLoop] = MANSION2_GUARDAI_ATTACKING AND NOT aiGuards[nLoop] = MANSION2_GUARDAI_RUN_ATTACK AND NOT aiGuards[nLoop] = MANSION2_GUARDAI_RUNNING_ATTACK aiGuards[nLoop] = MANSION2_GUARDAI_ATTACK ENDIF ENDIF ENDIF ENDIF ENDIF ENDREPEAT // ...check if any Mechanics should be informed REPEAT MANSION2_MAX_MECHANICS nLoop IF NOT IS_CHAR_DEAD charMechanics[nLoop] GET_CHAR_COORDINATES charMechanics[nLoop] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_2D xposTemp yposTemp xposTemp2 yposTemp2 fTempDistance IF fTempDistance < MANSION2_REACT_TO_DEATH_RANGE_m fTempFloat = zposTemp - zposTemp2 IF fTempFloat < 0.0 fTempFloat *= -1.0 ENDIF IF fTempFloat < 6.0 // Make the Mechanic react if not already doing so IF flagCarrierOnAlert = FALSE // ...if the Carrier is not on alert, make the Mechanic head for the alarm if not already doing so IF flagMechanicsOnAlert[nLoop] = FALSE // ...mechanic is not already on alert, so put him on alert aiMechanics[nLoop] = MANSION2_MECHANICAI_GOTO_ALARM // Mechanic is running for alarm IF NOT nReasonForDetection = MANSION2_DETECTED_TOO_MUCH_NOISE PRINT_NOW MAN2_45 7000 1 ENDIF flagMechanicsOnAlert[nLoop] = TRUE ENDIF ELSE ENDIF ENDIF ENDIF ENDIF ENDREPEAT RETURN // **************************************** // MechanicAI: Activation Mansion2_MechAI_Activation: IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_MECHANIC_DOWNSTAIRS // Start at door of mooring area talking to a Guard SET_CHAR_COORDINATES charMechanics[nTempPed] -1421.7574 496.6105 2.0463 SET_CHAR_HEADING charMechanics[nTempPed] 175.6815 aiMechanics[nTempPed] = MANSION2_MECHANICAI_TICKING_OVER BREAK CASE MANSION2_MECHANIC_UPSTAIRS // Start in rec room SET_CHAR_COORDINATES charMechanics[nTempPed] -1346.2185 497.9554 10.1953 SET_CHAR_HEADING charMechanics[nTempPed] 270.000 aiMechanics[nTempPed] = MANSION2_MECHANICAI_ENTER_FORKLIFT BREAK DEFAULT WRITE_DEBUG UNKNOWN_MECHANIC ENDSWITCH // Make all Mechanics have no decision maker SET_CHAR_DECISION_MAKER charMechanics[nTempPed] dmEmpty // SET_INFORM_RESPECTED_FRIENDS charMechanics[nTempPed] MANSION2_RESPECTED_FRIENDS_DISTANCE_m MANSION2_NUMBER_OF_RESPECTED_FRIENDS RETURN // **************************************** // MechanicAI: Chat Mansion2_MechAI_Chat: IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_MECHANIC_DOWNSTAIRS // Chat to Boat Driver // NOTE: The 'chat' task is now handled within the Guard AI so they are both issued at the same time // IF NOT IS_CHAR_DEAD charGuards[MANSION2_GUARD_BOAT_DRIVER] // TASK_CHAT_WITH_CHAR charMechanics[nTempPed] charGuards[MANSION2_GUARD_BOAT_DRIVER] FALSE TRUE // ENDIF timerMechanicsAI[nTempPed] = m_mission_timer + 7000 BREAK DEFAULT WRITE_DEBUG UNKNOWN_MECHANIC_FOR_CHAT ENDSWITCH aiMechanics[nTempPed] = MANSION2_MECHANICAI_CHATTING RETURN // **************************************** // MechanicAI: Chatting Mansion2_MechAI_Chatting: IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_MECHANIC_DOWNSTAIRS // Still chatting to Boat Driver? IF timerMechanicsAI[nTempPed] < m_mission_timer // ...cancel the chat, and enter the forklift aiMechanics[nTempPed] = MANSION2_MECHANICAI_ENTER_FORKLIFT ENDIF BREAK DEFAULT WRITE_DEBUG UNKNOWN_MECHANIC_FOR_CHATTING ENDSWITCH RETURN // **************************************** // MechanicAI: Enter Forklift Mansion2_MechAI_Enter: IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_MECHANIC_DOWNSTAIRS IF NOT IS_CAR_DEAD carForklifts[MANSION2_FORKLIFT_DOWNSTAIRS] SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_DRIVER charMechanics[nTempPed] carForklifts[MANSION2_FORKLIFT_DOWNSTAIRS] MANSION2_PERSIST ENDIF BREAK CASE MANSION2_MECHANIC_UPSTAIRS IF NOT IS_CAR_DEAD carForklifts[MANSION2_FORKLIFT_UPSTAIRS] SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_DRIVER charMechanics[nTempPed] carForklifts[MANSION2_FORKLIFT_UPSTAIRS] MANSION2_PERSIST ENDIF BREAK DEFAULT WRITE_DEBUG UNKNOWN_MECHANIC_FOR_ENTER ENDSWITCH aiMechanics[nTempPed] = MANSION2_MECHANICAI_ENTERING_FORKLIFT RETURN // **************************************** // MechanicAI: Entering Forklift Mansion2_MechAI_Entering: IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF // Has mechanic entered forklift? SWITCH nTempPed CASE MANSION2_MECHANIC_DOWNSTAIRS IF IS_CAR_DEAD carForklifts[MANSION2_FORKLIFT_DOWNSTAIRS] // ...leave the mechanic ticking over aiMechanics[nTempPed] = MANSION2_MECHANICAI_TICKING_OVER ELSE IF IS_CHAR_IN_CAR charMechanics[nTempPed] carForklifts[MANSION2_FORKLIFT_DOWNSTAIRS] // ...tell the mechanic what to do now aiMechanics[nTempPed] = MANSION2_MECHANICAI_FORKLIFT_WANDER ENDIF ENDIF BREAK CASE MANSION2_MECHANIC_UPSTAIRS IF IS_CAR_DEAD carForklifts[MANSION2_FORKLIFT_UPSTAIRS] // ...leave the mechanic ticking over aiMechanics[nTempPed] = MANSION2_MECHANICAI_TICKING_OVER ELSE IF IS_CHAR_IN_CAR charMechanics[nTempPed] carForklifts[MANSION2_FORKLIFT_UPSTAIRS] // ...tell the mechanic what to do now aiMechanics[nTempPed] = MANSION2_MECHANICAI_FORKLIFT_WANDER ENDIF ENDIF BREAK DEFAULT WRITE_DEBUG UNKNOWN_MECHANIC_FOR_ENTERING ENDSWITCH RETURN // **************************************** // MechanicAI: Forklift Wander Mansion2_MechAI_Wander: IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_MECHANIC_DOWNSTAIRS // Choose a new destination GOSUB Mansion2_MechAI_Wander_MD aiMechanics[nTempPed] = MANSION2_MECHANICAI_FORKLIFT_WANDERING BREAK CASE MANSION2_MECHANIC_UPSTAIRS // Choose a new destination GOSUB Mansion2_MechAI_Wander_MU aiMechanics[nTempPed] = MANSION2_MECHANICAI_FORKLIFT_WANDERING BREAK DEFAULT WRITE_DEBUG UNKNOWN_MECHANIC_FOR_WANDER ENDSWITCH RETURN // **************************************** // MechanicAI: Forklift Wandering Mansion2_MechAI_Wandering: IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_MECHANIC_DOWNSTAIRS // Arrived at destination? IF timerMechanicsAI[nTempPed] < m_mission_timer GOSUB Mansion2_MechAI_Wandering_MD IF flagTempFlag = TRUE GENERATE_RANDOM_INT_IN_RANGE 2000 4000 nTempInt timerMechanicsAI[nTempPed] = m_mission_timer + nTempInt aiMechanics[nTempPed] = MANSION2_MECHANICAI_FORKLIFT_WANDER_STOPPED ENDIF ENDIF BREAK CASE MANSION2_MECHANIC_UPSTAIRS // Arrived at destination? IF timerMechanicsAI[nTempPed] < m_mission_timer GOSUB Mansion2_MechAI_Wandering_MU IF flagTempFlag = TRUE GENERATE_RANDOM_INT_IN_RANGE 2000 4000 nTempInt timerMechanicsAI[nTempPed] = m_mission_timer + nTempInt aiMechanics[nTempPed] = MANSION2_MECHANICAI_FORKLIFT_WANDER_STOPPED ENDIF ENDIF BREAK DEFAULT WRITE_DEBUG UNKNOWN_MECHANIC_FOR_WANDERING ENDSWITCH RETURN // **************************************** // MechanicAI: Forklift Wander Stopped Mansion2_MechAI_WanderStop: IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF // Ready to Wander again? IF timerMechanicsAI[nTempPed] < m_mission_timer aiMechanics[nTempPed] = MANSION2_MECHANICAI_FORKLIFT_WANDER ENDIF RETURN // **************************************** // MechanicAI: Goto Cower Position Mansion2_MechAI_GotoCower: IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_MECHANIC_DOWNSTAIRS // Run to corner OPEN_SEQUENCE_TASK nSeqTask TASK_LEAVE_ANY_CAR -1 // Leave forklift if in it TASK_FOLLOW_PATH_NODES_TO_COORD -1 -1420.1246 512.2188 2.0463 PEDMOVE_RUN MANSION2_PERSIST // Corner of warehouse CLOSE_SEQUENCE_TASK nSeqTask PERFORM_SEQUENCE_TASK charMechanics[nTempPed] nSeqTask CLEAR_SEQUENCE_TASK nSeqTask aiMechanics[nTempPed] = MANSION2_MECHANICAI_GOING_TO_COWER_POSITION timerMechanicsAI[nTempPed] = 0 BREAK CASE MANSION2_MECHANIC_UPSTAIRS GET_CHAR_COORDINATES charMechanics[nTempPed] xposTemp yposTemp zposTemp GET_CHAR_COORDINATES scplayer xposTemp2 yposTemp2 zposTemp2 IF xposTemp > xposTemp2 // Run away from player towards corner beside Harriers OPEN_SEQUENCE_TASK nSeqTask TASK_LEAVE_ANY_CAR -1 // Leave forklift if in it TASK_FOLLOW_PATH_NODES_TO_COORD -1 -1316.8624 490.2876 10.2026 PEDMOVE_RUN MANSION2_PERSIST // Corner beside COntrol Room CLOSE_SEQUENCE_TASK nSeqTask ELSE // Run away from player towards corner beside Control Room OPEN_SEQUENCE_TASK nSeqTask TASK_LEAVE_ANY_CAR -1 // Leave forklift if in it TASK_FOLLOW_PATH_NODES_TO_COORD -1 -1394.8461 491.5163 10.1953 PEDMOVE_RUN MANSION2_PERSIST // Corner beside Harriers CLOSE_SEQUENCE_TASK nSeqTask ENDIF PERFORM_SEQUENCE_TASK charMechanics[nTempPed] nSeqTask CLEAR_SEQUENCE_TASK nSeqTask aiMechanics[nTempPed] = MANSION2_MECHANICAI_GOING_TO_COWER_POSITION timerMechanicsAI[nTempPed] = 0 BREAK DEFAULT WRITE_DEBUG UNKNOWN_MECHANIC_FOR_GOTO_COWER ENDSWITCH RETURN // **************************************** // MechanicAI: Going To Cower Position Mansion2_MechAI_GoingToCower: IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF IF timerMechanicsAI[nTempPed] > m_mission_timer RETURN ENDIF SWITCH nTempPed CASE MANSION2_MECHANIC_DOWNSTAIRS // Warehouse Corner IF LOCATE_CHAR_ANY_MEANS_3D charMechanics[nTempPed] -1420.1246 512.2188 2.0463 2.0 2.0 2.0 FALSE aiMechanics[nTempPed] = MANSION2_MECHANICAI_AT_COWER_POSITION timerMechanicsAI[nTempPed] = 0 ELSE // Corner under the stairs IF LOCATE_CHAR_ANY_MEANS_3D charMechanics[nTempPed] -1389.8097 491.2630 2.0463 2.0 2.0 2.0 FALSE aiMechanics[nTempPed] = MANSION2_MECHANICAI_AT_COWER_POSITION timerMechanicsAI[nTempPed] = 0 ENDIF ENDIF // Record Health when reached Cower position GET_CHAR_HEALTH charMechanics[nTempPed] nMechanicCowerHealth[nTempPed] BREAK CASE MANSION2_MECHANIC_UPSTAIRS // Corner beside Harriers IF LOCATE_CHAR_ANY_MEANS_3D charMechanics[nTempPed] -1394.8461 491.5163 10.1953 2.0 2.0 2.0 FALSE aiMechanics[nTempPed] = MANSION2_MECHANICAI_AT_COWER_POSITION timerMechanicsAI[nTempPed] = 0 ELSE // Corner beside control room IF LOCATE_CHAR_ANY_MEANS_3D charMechanics[nTempPed] -1316.8624 490.2876 10.2026 2.0 2.0 2.0 FALSE aiMechanics[nTempPed] = MANSION2_MECHANICAI_AT_COWER_POSITION timerMechanicsAI[nTempPed] = 0 ENDIF ENDIF // Record Health when reached Cower position GET_CHAR_HEALTH charMechanics[nTempPed] nMechanicCowerHealth[nTempPed] BREAK DEFAULT WRITE_DEBUG UNKNOWN_MECHANIC_FOR_GOING_TO_COWER ENDSWITCH GOSUB Mansion2_Update_Mech_Active_Alert_State RETURN // **************************************** // MechanicAI: At Cower Position Mansion2_MechAI_Cower: IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF GET_CHAR_HEALTH charMechanics[nTempPed] nTempInt IF nTempInt < nMechanicCowerHealth[nTempPed] aiMechanics[nTempPed] = MANSION2_MECHANICAI_CHANGE_COWER_POSITION nMechanicCowerHealth[nTempPed] = nTempInt timerMechanicsAI[nTempPed] = 0 RETURN ENDIF IF timerMechanicsAI[nTempPed] > m_mission_timer RETURN ENDIF GET_SCRIPT_TASK_STATUS charMechanics[nTempPed] TASK_DUCK m_status IF m_status = FINISHED_TASK TASK_DUCK charMechanics[nTempPed] MANSION2_PERSIST timerMechanicsAI[nTempPed] = m_mission_timer + 1000 ENDIF GOSUB Mansion2_Update_Mech_Active_Alert_State RETURN // **************************************** // MechanicAI: Change Cower Position Mansion2_MechAI_ChangeCower: IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_MECHANIC_DOWNSTAIRS IF LOCATE_CHAR_ANY_MEANS_3D charMechanics[nTempPed] -1420.1246 512.2188 2.0463 2.0 2.0 2.0 FALSE // Run to corner under the stairs TASK_FOLLOW_PATH_NODES_TO_COORD charMechanics[nTempPed] -1389.8097 491.2630 2.0463 PEDMOVE_RUN MANSION2_PERSIST // Corner beside COntrol Room ELSE // Run to corner beside alarm TASK_FOLLOW_PATH_NODES_TO_COORD charMechanics[nTempPed] -1420.1246 512.2188 2.0463 PEDMOVE_RUN MANSION2_PERSIST // Corner beside Harriers ENDIF aiMechanics[nTempPed] = MANSION2_MECHANICAI_GOING_TO_COWER_POSITION timerMechanicsAI[nTempPed] = m_mission_timer + 10000 BREAK CASE MANSION2_MECHANIC_UPSTAIRS IF LOCATE_CHAR_ANY_MEANS_3D charMechanics[nTempPed] -1394.8461 491.5163 10.1953 2.0 2.0 2.0 FALSE // Run away from player towards corner beside Harriers TASK_FOLLOW_PATH_NODES_TO_COORD charMechanics[nTempPed] -1316.8624 490.2876 10.2026 PEDMOVE_RUN MANSION2_PERSIST // Corner beside COntrol Room ELSE // Run away from player towards corner beside Control Room TASK_FOLLOW_PATH_NODES_TO_COORD charMechanics[nTempPed] -1394.8461 491.5163 10.1953 PEDMOVE_RUN MANSION2_PERSIST // Corner beside Harriers ENDIF aiMechanics[nTempPed] = MANSION2_MECHANICAI_GOING_TO_COWER_POSITION timerMechanicsAI[nTempPed] = m_mission_timer + 10000 BREAK DEFAULT WRITE_DEBUG UNKNOWN_MECHANIC_FOR_CHANGE_COWER ENDSWITCH RETURN // **************************************** // MechanicAI: Goto Alarm Position Mansion2_MechAI_GotoAlarm: IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_MECHANIC_DOWNSTAIRS // Run to downstairs OPEN_SEQUENCE_TASK nSeqTask TASK_LEAVE_ANY_CAR -1 // Leave forklift if in it TASK_FOLLOW_PATH_NODES_TO_COORD -1 -1414.3495 514.0193 2.0391 PEDMOVE_RUN MANSION2_PERSIST // Corner of warehouse CLOSE_SEQUENCE_TASK nSeqTask PERFORM_SEQUENCE_TASK charMechanics[nTempPed] nSeqTask CLEAR_SEQUENCE_TASK nSeqTask aiMechanics[nTempPed] = MANSION2_MECHANICAI_GOING_TO_ALARM BREAK CASE MANSION2_MECHANIC_UPSTAIRS GET_CHAR_COORDINATES charMechanics[nTempPed] xposTemp yposTemp zposTemp GET_CHAR_COORDINATES scplayer xposTemp2 yposTemp2 zposTemp2 IF xposTemp > xposTemp2 // Run away from player towards corner beside Harriers OPEN_SEQUENCE_TASK nSeqTask TASK_LEAVE_ANY_CAR -1 // Leave forklift if in it TASK_FOLLOW_PATH_NODES_TO_COORD -1 -1313.3726 488.6687 10.2026 PEDMOVE_RUN MANSION2_PERSIST // Corner beside Harriers CLOSE_SEQUENCE_TASK nSeqTask ELSE // Run away from player towards corner beside Control Room OPEN_SEQUENCE_TASK nSeqTask TASK_LEAVE_ANY_CAR -1 // Leave forklift if in it TASK_FOLLOW_PATH_NODES_TO_COORD -1 -1412.3975 488.6644 10.2026 PEDMOVE_RUN MANSION2_PERSIST // Corner beside COntrol Room CLOSE_SEQUENCE_TASK nSeqTask ENDIF PERFORM_SEQUENCE_TASK charMechanics[nTempPed] nSeqTask CLEAR_SEQUENCE_TASK nSeqTask aiMechanics[nTempPed] = MANSION2_MECHANICAI_GOING_TO_ALARM BREAK DEFAULT WRITE_DEBUG UNKNOWN_MECHANIC_FOR_GOTO_ALARM ENDSWITCH RETURN // **************************************** // MechanicAI: Going To Alarm Position Mansion2_MechAI_GoingToAlarm: IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_MECHANIC_DOWNSTAIRS // Warehouse Corner IF flagCarrierOnAlert = TRUE aiMechanics[nTempPed] = MANSION2_MECHANICAI_GOTO_COWER_POSITION RETURN ELSE IF LOCATE_CHAR_ANY_MEANS_3D charMechanics[nTempPed] -1414.3495 514.8193 2.0391 1.2 1.2 1.2 FALSE aiMechanics[nTempPed] = MANSION2_MECHANICAI_TRIGGER_ALARM timerMechanicsAI[nTempPed] = 0 ENDIF ENDIF BREAK CASE MANSION2_MECHANIC_UPSTAIRS // Corner beside Harriers IF flagCarrierOnAlert = TRUE aiMechanics[nTempPed] = MANSION2_MECHANICAI_GOTO_COWER_POSITION RETURN ELSE IF LOCATE_CHAR_ANY_MEANS_3D charMechanics[nTempPed] -1313.3726 487.8687 10.2026 1.2 1.2 1.2 FALSE aiMechanics[nTempPed] = MANSION2_MECHANICAI_TRIGGER_ALARM timerMechanicsAI[nTempPed] = 0 ELSE IF LOCATE_CHAR_ANY_MEANS_3D charMechanics[nTempPed] -1412.3975 487.8644 10.2026 1.2 1.2 1.2 FALSE aiMechanics[nTempPed] = MANSION2_MECHANICAI_TRIGGER_ALARM timerMechanicsAI[nTempPed] = 0 ENDIF ENDIF ENDIF BREAK DEFAULT WRITE_DEBUG UNKNOWN_MECHANIC_FOR_GOING_TO_ALARM ENDSWITCH GOSUB Mansion2_Update_Mech_Active_Alert_State RETURN // **************************************** // MechanicAI: Trigger Alarm Mansion2_MechAI_TriggerAlarm: IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_MECHANIC_DOWNSTAIRS TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM charMechanics[nTempPed] -1414.3495 513.4193 2.0391 0.0 0.2 CARDS_RAISE CASINO 10.0 FALSE FALSE FALSE FALSE -1 // TASK_ACHIEVE_HEADING charMechanics[nTempPed] 0.0 timerMechanicsAI[nTempPed] = m_mission_timer + 2000 aiMechanics[nTempPed] = MANSION2_MECHANICAI_TRIGGERING_ALARM BREAK CASE MANSION2_MECHANIC_UPSTAIRS IF LOCATE_CHAR_ANY_MEANS_3D charMechanics[nTempPed] -1313.3726 487.8687 10.2026 1.2 1.2 1.2 FALSE TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM charMechanics[nTempPed] -1313.3726 489.3687 10.2026 180.0 0.2 CARDS_RAISE CASINO 10.0 FALSE FALSE FALSE FALSE -1 ELSE TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM charMechanics[nTempPed] -1412.3975 489.3644 10.2026 180.0 0.2 CARDS_RAISE CASINO 10.0 FALSE FALSE FALSE FALSE -1 ENDIF // TASK_ACHIEVE_HEADING charMechanics[nTempPed] 180.0 timerMechanicsAI[nTempPed] = m_mission_timer + 2000 aiMechanics[nTempPed] = MANSION2_MECHANICAI_TRIGGERING_ALARM BREAK DEFAULT WRITE_DEBUG UNKNOWN_MECHANIC_FOR_TRIGGER_ALARM ENDSWITCH RETURN // **************************************** // MechanicAI: Triggering Alarm Mansion2_MechAI_TriggeringAlarm: IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF SWITCH nTempPed CASE MANSION2_MECHANIC_DOWNSTAIRS IF timerMechanicsAI[nTempPed] < m_mission_timer aiMechanics[nTempPed] = MANSION2_MECHANICAI_GOTO_COWER_POSITION flagCarrierOnAlert = TRUE IF nReasonForDetection = MANSION2_DETECTED_UNKNOWN nReasonForDetection = MANSION2_DETECTED_BY_MECHANIC ENDIF ENDIF BREAK CASE MANSION2_MECHANIC_UPSTAIRS IF timerMechanicsAI[nTempPed] < m_mission_timer aiMechanics[nTempPed] = MANSION2_MECHANICAI_GOTO_COWER_POSITION flagCarrierOnAlert = TRUE IF nReasonForDetection = MANSION2_DETECTED_UNKNOWN nReasonForDetection = MANSION2_DETECTED_BY_MECHANIC ENDIF ENDIF BREAK DEFAULT WRITE_DEBUG UNKNOWN_MECHANIC_FOR_TRIGGERING_ALARM ENDSWITCH GOSUB Mansion2_Update_Mech_Active_Alert_State RETURN // **************************************** // MechanicAI: Wandering (Mechanic Downstairs) Mansion2_MechAI_Wander_MD: IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF IF IS_CAR_DEAD carForklifts[MANSION2_FORKLIFT_DOWNSTAIRS] aiMechanics[nTempPed] = MANSION2_MECHANICAI_TICKING_OVER RETURN ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 4 nTempInt SWITCH nTempInt CASE 0 // TASK_CAR_DRIVE_TO_COORD charMechanics[nTempPed] carForklifts[MANSION2_FORKLIFT_DOWNSTAIRS] -1392.3628 507.1703 2.0463 2.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_STOPFORCARS TASK_CAR_DRIVE_TO_COORD charMechanics[nTempPed] carForklifts[MANSION2_FORKLIFT_DOWNSTAIRS] -1400.2054 507.2590 2.0463 2.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_STOPFORCARS BREAK CASE 1 // TASK_CAR_DRIVE_TO_COORD charMechanics[nTempPed] carForklifts[MANSION2_FORKLIFT_DOWNSTAIRS] -1404.5876 498.4576 2.0391 2.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_STOPFORCARS TASK_CAR_DRIVE_TO_COORD charMechanics[nTempPed] carForklifts[MANSION2_FORKLIFT_DOWNSTAIRS] -1394.3872 506.6834 2.0463 2.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_STOPFORCARS BREAK CASE 2 // TASK_CAR_DRIVE_TO_COORD charMechanics[nTempPed] carForklifts[MANSION2_FORKLIFT_DOWNSTAIRS] -1411.9678 510.0882 2.0391 2.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_STOPFORCARS TASK_CAR_DRIVE_TO_COORD charMechanics[nTempPed] carForklifts[MANSION2_FORKLIFT_DOWNSTAIRS] -1399.3480 501.5815 2.0463 2.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_STOPFORCARS BREAK CASE 3 // TASK_CAR_DRIVE_TO_COORD charMechanics[nTempPed] carForklifts[MANSION2_FORKLIFT_DOWNSTAIRS] -1400.8392 507.0317 2.0463 2.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_STOPFORCARS TASK_CAR_DRIVE_TO_COORD charMechanics[nTempPed] carForklifts[MANSION2_FORKLIFT_DOWNSTAIRS] -1410.6714 501.3295 2.0391 2.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_STOPFORCARS BREAK ENDSWITCH // Store the destination nMechanicDestination[nTempPed] = nTempInt // Make sure the Forklift gets a bit away from the current location before checking for a new location timerMechanicsAI[nTempPed] = m_mission_timer + 10000 RETURN // **************************************** // MechanicAI: Wandering (Mechanic Downstairs) Mansion2_MechAI_Wandering_MD: flagTempFlag = FALSE IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF IF IS_CAR_DEAD carForklifts[MANSION2_FORKLIFT_DOWNSTAIRS] aiMechanics[nTempPed] = MANSION2_MECHANICAI_TICKING_OVER RETURN ENDIF SWITCH nMechanicDestination[nTempPed] CASE 0 IF LOCATE_CHAR_ANY_MEANS_3D charMechanics[nTempPed] -1400.2054 507.2590 2.0463 4.0 4.0 4.0 FALSE flagTempFlag = TRUE ENDIF BREAK CASE 1 IF LOCATE_CHAR_ANY_MEANS_3D charMechanics[nTempPed] -1394.3872 506.6834 2.0463 4.0 4.0 4.0 FALSE flagTempFlag = TRUE ENDIF BREAK CASE 2 IF LOCATE_CHAR_ANY_MEANS_3D charMechanics[nTempPed] -1399.3480 501.5815 2.0463 4.0 4.0 4.0 FALSE flagTempFlag = TRUE ENDIF BREAK CASE 3 IF LOCATE_CHAR_ANY_MEANS_3D charMechanics[nTempPed] -1410.6714 501.3295 2.0391 4.0 4.0 4.0 FALSE flagTempFlag = TRUE ENDIF BREAK ENDSWITCH RETURN // **************************************** // MechanicAI: Wandering (Mechanic Upstairs) Mansion2_MechAI_Wander_MU: IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF IF IS_CAR_DEAD carForklifts[MANSION2_FORKLIFT_UPSTAIRS] aiMechanics[nTempPed] = MANSION2_MECHANICAI_TICKING_OVER RETURN ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 4 nTempInt SWITCH nTempInt CASE 0 TASK_CAR_DRIVE_TO_COORD charMechanics[nTempPed] carForklifts[MANSION2_FORKLIFT_UPSTAIRS] -1321.4218 495.9306 10.2026 2.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_AVOIDCARS BREAK CASE 1 TASK_CAR_DRIVE_TO_COORD charMechanics[nTempPed] carForklifts[MANSION2_FORKLIFT_UPSTAIRS] -1305.4445 497.4329 10.2026 2.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_AVOIDCARS BREAK CASE 2 TASK_CAR_DRIVE_TO_COORD charMechanics[nTempPed] carForklifts[MANSION2_FORKLIFT_UPSTAIRS] -1307.4249 503.4752 10.1953 2.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_AVOIDCARS BREAK CASE 3 TASK_CAR_DRIVE_TO_COORD charMechanics[nTempPed] carForklifts[MANSION2_FORKLIFT_UPSTAIRS] -1351.0980 506.4217 10.1953 2.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_AVOIDCARS BREAK CASE 4 TASK_CAR_DRIVE_TO_COORD charMechanics[nTempPed] carForklifts[MANSION2_FORKLIFT_UPSTAIRS] -1390.8839 507.6548 10.1953 3.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_AVOIDCARS BREAK ENDSWITCH // Store the destination nMechanicDestination[nTempPed] = nTempInt // Make sure the Forklift gets a bit away from the current location before checking for a new location timerMechanicsAI[nTempPed] = m_mission_timer + 10000 RETURN // **************************************** // MechanicAI: Wandering (Mechanic Upstairs) Mansion2_MechAI_Wandering_MU: flagTempFlag = FALSE IF IS_CHAR_DEAD charMechanics[nTempPed] RETURN ENDIF IF IS_CAR_DEAD carForklifts[MANSION2_FORKLIFT_DOWNSTAIRS] aiMechanics[nTempPed] = MANSION2_MECHANICAI_TICKING_OVER RETURN ENDIF SWITCH nMechanicDestination[nTempPed] CASE 0 IF LOCATE_CHAR_ANY_MEANS_3D charMechanics[nTempPed] -1321.4218 495.9306 10.2026 4.0 4.0 4.0 FALSE flagTempFlag = TRUE ENDIF BREAK CASE 1 IF LOCATE_CHAR_ANY_MEANS_3D charMechanics[nTempPed] -1305.4445 497.4329 10.2026 4.0 4.0 4.0 FALSE flagTempFlag = TRUE ENDIF BREAK CASE 2 IF LOCATE_CHAR_ANY_MEANS_3D charMechanics[nTempPed] -1307.4249 503.4752 10.1953 4.0 4.0 4.0 FALSE flagTempFlag = TRUE ENDIF BREAK CASE 3 IF LOCATE_CHAR_ANY_MEANS_3D charMechanics[nTempPed] -1351.0980 506.4217 10.1953 4.0 4.0 4.0 FALSE flagTempFlag = TRUE ENDIF BREAK CASE 4 IF LOCATE_CHAR_ANY_MEANS_3D charMechanics[nTempPed] -1390.8839 507.6548 10.1953 4.0 4.0 4.0 FALSE flagTempFlag = TRUE ENDIF BREAK ENDSWITCH RETURN // ************************************************************************************************************* // MISCELLANEOUS // ************************************************************************************************************* // **************************************** // Maintain Harrier Flypast Mansion2_Maintain_Harrier_FlyPast: IF statusHarrierFlyPast = -1 RETURN ENDIF nTempInt = MANSION2_PLANE_BIG_LIFT IF NOT statusHarrierFlyPast = 0 IF IS_CAR_DEAD carPlanes[nTempInt] statusHarrierFlyPast = -1 MARK_CAR_AS_NO_LONGER_NEEDED carPlanes[nTempInt] RETURN ENDIF ENDIF SWITCH statusHarrierFlyPast CASE 0 // Goto first coordinates CREATE_CAR HYDRA -84.0771 418.3652 92.2066 carPlanes[nTempInt] SET_CAR_COORDINATES carPlanes[nTempInt] -84.0771 418.3652 92.2066 SET_CAR_HEADING carPlanes[nTempInt] 91.2218 SET_CAR_STATUS carPlanes[nTempInt] STATUS_PHYSICS SET_CAR_FORWARD_SPEED carPlanes[nTempInt] 70.0 SET_PLANE_THROTTLE carPlanes[nTempInt] 1.5 PLANE_STARTS_IN_AIR carPlanes[nTempInt] // CAR_GOTO_COORDINATES carPlanes[nTempInt] -2877.4304 185.3741 358.0352 PLANE_FLY_IN_DIRECTION carPlanes[nTempInt] 190.0 20.0 30.0 timerFlyPast = m_mission_timer + 25000 statusHarrierFlyPast++ BREAK CASE 1 // Has plane reached first coords? IF timerFlyPast < m_mission_timer // ...delete plane DELETE_CAR carPlanes[nTempInt] statusHarrierFlyPast = -1 ENDIF BREAK ENDSWITCH RETURN // **************************************** // Maintain Harrier Takeoff Mansion2_Takeoff_Harrier: IF statusHarrierTakeoff = -1 RETURN ENDIF nTempInt = MANSION2_PLANE_TAKEOFF IF IS_CAR_DEAD carPlanes[nTempInt] // ...plane is dead, so delete it statusHarrierTakeoff = -1 DELETE_CAR carPlanes[nTempInt] RETURN ENDIF SWITCH statusHarrierTakeoff CASE 0 // ...playback has began, so set up a timer to decide when it should not be classed as being on the Carrier timerTakeoff = m_mission_timer + 6000 statusHarrierTakeoff++ BREAK CASE 1 // ...still on the Carrier but taking off IF timerTakeoff < m_mission_timer flagPlanesOnCarrier[nTempInt] = FALSE // ...also allow Guard watching Harrier to move IF flagGuardsOnAlert[MANSION2_GUARD_BOAT_BACK] = FALSE aiGuards[MANSION2_GUARD_BOAT_BACK] = MANSION2_GUARDAI_WANDER ENDIF statusHarrierTakeoff++ ENDIF BREAK CASE 2 // ...playing recording IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR carPlanes[nTempInt] // ...playback finished, so delete place DELETE_CAR carPlanes[nTempInt] statusHarrierTakeoff = -1 ENDIF BREAK ENDSWITCH RETURN // **************************************** // Maintain Harrier Landing Mansion2_Landing_Harrier: IF statusHarrierLanding = -1 RETURN ENDIF nTempInt = MANSION2_PLANE_BIG_LIFT IF statusHarrierLanding > 0 IF IS_CAR_DEAD carPlanes[nTempInt] statusHarrierLanding = -1 DELETE_CAR carPlanes[nTempInt] RETURN ENDIF ENDIF SWITCH statusHarrierLanding CASE 0 // ...create car CREATE_CAR HYDRA -1354.5869 6.2662 13.1485 carPlanes[nTempInt] // ...and pilot CREATE_CHAR_INSIDE_CAR carPlanes[nTempInt] PEDTYPE_MISSION2 ARMY charGuards[MANSION2_GUARD_PILOT_BIG_LIFT] SET_CHAR_DECISION_MAKER charGuards[MANSION2_GUARD_PILOT_BIG_LIFT] dmEmpty SET_CHAR_IS_TARGET_PRIORITY charGuards[MANSION2_GUARD_PILOT_BIG_LIFT] TRUE // ...start playback START_PLAYBACK_RECORDED_CAR carPlanes[nTempInt] MANSION2_CAR_RECORDING_HARRIER_LANDING statusHarrierLanding++ BREAK CASE 1 // ...check if Harrier should be classed as on Carrier IF LOCATE_CAR_3D carPlanes[nTempInt] -1456.3562 501.1173 9.0078 10.0 15.0 20.0 FALSE flagPlanesOnCarrier[nTempInt] = TRUE statusHarrierLanding++ ENDIF BREAK CASE 2 // ...check if recording has ended IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR carPlanes[nTempInt] // ...activate the pilot's AI aiGuards[MANSION2_GUARD_PILOT_BIG_LIFT] = MANSION2_GUARDAI_ACTIVATION ADD_BLIP_FOR_CHAR charGuards[MANSION2_GUARD_PILOT_BIG_LIFT] blipGuards[MANSION2_GUARD_PILOT_BIG_LIFT] CHANGE_BLIP_DISPLAY blipGuards[MANSION2_GUARD_PILOT_BIG_LIFT] BLIP_ONLY SET_BLIP_ALWAYS_DISPLAY_ON_ZOOMED_RADAR blipGuards[MANSION2_GUARD_PILOT_BIG_LIFT] TRUE statusHarrierLanding = -1 ENDIF BREAK ENDSWITCH RETURN // ************************************************************************************************************* // AUDIO ROUTINES // ************************************************************************************************************* // ------------------------------ // SPEECH ENGINE // ------------------------------ // **************************************** // UPDATE SPEECH Mansion2_Update_Speech: SWITCH nConversationStatus CASE MANSION2_CONVERSATION_STATUS_NONE CASE MANSION2_CONVERSATION_STATUS_PREPARED CASE MANSION2_CONVERSATION_STATUS_INTERRUPTED CASE MANSION2_CONVERSATION_STATUS_FINISHED // ...nothing to do BREAK CASE MANSION2_CONVERSATION_STATUS_PLAYING // ...playing the conversation GOSUB Mansion2_Playing_Conversation BREAK DEFAULT WRITE_DEBUG UNKNOWN_CONVERSATION_STATUS_ID RETURN ENDSWITCH RETURN // **************************************** // Initial Speech Slot Preloads Mansion2_Initial_Speech_Slot_Preloads: // Preload the first two slots if possible IF nNextPreloadConversationLine = nCurrentMaxConversationLines RETURN ENDIF // ...slot 1 nTempInt = MANSION2_FIRST_SPEECH_SLOT nAudioSlotStatus[nTempInt] = MANSION2_AUDIO_SLOT_LOADING LOAD_MISSION_AUDIO nTempInt nConversationSequenceSpeechID[nNextPreloadConversationLine] nNextPreloadConversationLine++ // Are there more lines to be preloaded IF nNextPreloadConversationLine = nCurrentMaxConversationLines RETURN ENDIF // ...slot 2 nTempInt++ IF nTempInt > MANSION2_LAST_SPEECH_SLOT RETURN ENDIF nAudioSlotStatus[nTempInt] = MANSION2_AUDIO_SLOT_LOADING LOAD_MISSION_AUDIO nTempInt nConversationSequenceSpeechID[nNextPreloadConversationLine] nNextPreloadConversationLine++ RETURN // **************************************** // Playing Conversation Mansion2_Playing_Conversation: // Check if the conversation should be interrupted GOSUB Mansion2_Check_If_Interrupt_Conversation IF nConversationStatus = MANSION2_CONVERSATION_STATUS_INTERRUPTED GOSUB Mansion2_Interrupt_Conversation RETURN ENDIF // Check the status of the current slot SWITCH nAudioSlotStatus[nSpeechCurrentSlot] CASE MANSION2_AUDIO_SLOT_FREE RETURN BREAK CASE MANSION2_AUDIO_SLOT_LOADING // ...check if the speech has loaded IF NOT HAS_MISSION_AUDIO_LOADED nSpeechCurrentSlot // ...no RETURN ENDIF // Speech has loaded nAudioSlotStatus[nSpeechCurrentSlot] = MANSION2_AUDIO_SLOT_LOADED BREAK CASE MANSION2_AUDIO_SLOT_LOADED // ...play the speech and display the subtitles PLAY_MISSION_AUDIO nSpeechCurrentSlot IF flagDisplaySpeechSubtitle = TRUE PRINT_NOW $tlConversationSequenceSubtitle[nCurrentConversationLine] 10000 1 ENDIF nAudioSlotStatus[nSpeechCurrentSlot] = MANSION2_AUDIO_SLOT_PLAYING RETURN BREAK CASE MANSION2_AUDIO_SLOT_PLAYING // ...check if the speech has finished playing IF NOT HAS_MISSION_AUDIO_FINISHED nSpeechCurrentSlot // ...still playing RETURN ENDIF // Speech has finished playing, so move on to the next piece GOSUB Mansion2_Current_Speech_Finished BREAK DEFAULT WRITE_DEBUG UNKNOWN_AUDIO_SLOT_STATUS RETURN ENDSWITCH RETURN // **************************************** // Current Conversation has been interrupted Mansion2_Interrupt_Conversation: // Clear mission audio nTempInt = MANSION2_FIRST_SPEECH_SLOT WHILE nTempInt <= MANSION2_LAST_SPEECH_SLOT CLEAR_MISSION_AUDIO nTempInt nTempInt++ ENDWHILE GOSUB Mansion2_Finish_Conversation RETURN // **************************************** // Current Speech has finished Mansion2_Current_Speech_Finished: // Housekeeping nAudioSlotStatus[nSpeechCurrentSlot] = MANSION2_AUDIO_SLOT_FREE nCurrentConversationLine++ IF nCurrentConversationLine = nCurrentMaxConversationLines // ...conversation over GOSUB Mansion2_Finish_Conversation RETURN ENDIF // Preload the next piece of audio that will be played in this slot IF nNextPreloadConversationLine < nCurrentMaxConversationLines // ...there is another piece of speech required in this slot nAudioSlotStatus[nSpeechCurrentSlot] = MANSION2_AUDIO_SLOT_LOADING LOAD_MISSION_AUDIO nSpeechCurrentSlot nConversationSequenceSpeechID[nNextPreloadConversationLine] nNextPreloadConversationLine++ ENDIF // Switch to the next speech slot nSpeechCurrentSlot++ IF nSpeechCurrentSlot > MANSION2_LAST_SPEECH_SLOT nSpeechCurrentSlot = MANSION2_FIRST_SPEECH_SLOT ENDIF RETURN // **************************************** // Current Conversation has finished Mansion2_Finish_Conversation: // Mark this conversation as 'played' SET_BIT bitsConversationsPlayed nCurrentConversationID nCurrentConversationID = MANSION2_CONVERSATION_NONE nConversationStatus = MANSION2_CONVERSATION_STATUS_NONE nRequiredConversationID = MANSION2_CONVERSATION_NONE nSpeechCurrentSlot = MANSION2_FIRST_SPEECH_SLOT nCurrentConversationLine = 0 nCurrentMaxConversationLines = 0 nNextPreloadConversationLine = 0 nTempInt = MANSION2_FIRST_SPEECH_SLOT WHILE nTempInt < MANSION2_LAST_SPEECH_SLOT nAudioSlotStatus[nTempInt] = MANSION2_AUDIO_SLOT_FREE nTempInt++ ENDWHILE // Clear subtitles CLEAR_SMALL_PRINTS // Introduce a delay before the next conversation can be prepared timerDelayBeforeNextConversation = m_mission_timer + MANSION2_DELAY_BEFORE_NEXT_CONVERSATION_msec RETURN // ------------------------------ // EXTERNAL SPEECH CONTROLS // ------------------------------ // **************************************** // Conversation Command Prepare Mansion2_Conversation_Command_Prepare: // Prepare a conversation IF NOT nConversationStatus = MANSION2_CONVERSATION_STATUS_NONE GOSUB Mansion2_Conversation_Command_Cancel ENDIF // Wait for the timer to elapse before preparing the next conversation IF timerDelayBeforeNextConversation > m_mission_timer RETURN ENDIF timerDelayBeforeNextConversation = 0 nCurrentConversationID = nRequiredConversationID nRequiredConversationID = MANSION2_CONVERSATION_NONE nSpeechCurrentSlot = MANSION2_FIRST_SPEECH_SLOT nCurrentConversationLine = 0 nCurrentMaxConversationLines = 0 nNextPreloadConversationLine = 0 nTempInt = MANSION2_FIRST_SPEECH_SLOT WHILE nTempInt < MANSION2_LAST_SPEECH_SLOT nAudioSlotStatus[nTempInt] = MANSION2_AUDIO_SLOT_FREE nTempInt++ ENDWHILE // Prepare the next conversation GOSUB Mansion2_Prepare_Next_Conversation RETURN // **************************************** // Conversation Command Play Mansion2_Conversation_Command_Play: // Ensure the conversation has been prepared IF NOT nConversationStatus = MANSION2_CONVERSATION_STATUS_PREPARED RETURN ENDIF nConversationStatus = MANSION2_CONVERSATION_STATUS_PLAYING RETURN // **************************************** // Conversation Command Cancel Mansion2_Conversation_Command_Cancel: // Ensure the conversation has been prepared IF nConversationStatus = MANSION2_CONVERSATION_STATUS_NONE RETURN ENDIF GOSUB Mansion2_Interrupt_Conversation RETURN // ------------------------------ // MISSION SPECIFIC SPEECH SETUP // ------------------------------ // **************************************** // Prepare Next Conversation Mansion2_Prepare_Next_Conversation: SWITCH nCurrentConversationID CASE MANSION2_CONVERSATION_CARL_MEETS_TORENO GOSUB Mansion2_Prepare_Conversation_Carl_Meets_Toreno BREAK CASE MANSION2_CONVERSATION_INSTRUCTIONS GOSUB Mansion2_Prepare_Conversation_Instructions BREAK CASE MANSION2_CONVERSATION_GOTO_CARRIER GOSUB Mansion2_Prepare_Conversation_Goto_Carrier BREAK CASE MANSION2_CONVERSATION_SNEAK_INTO_CARRIER GOSUB Mansion2_Prepare_Conversation_Sneak_Into_Carrier BREAK CASE MANSION2_CONVERSATION_STOLEN_HARRIER GOSUB Mansion2_Prepare_Conversation_Stolen_Harrier BREAK CASE MANSION2_CONVERSATION_VAPOURISED GOSUB Mansion2_Prepare_Conversation_Vapourised BREAK CASE MANSION2_CONVERSATION_DESTROY_FLOTILLA GOSUB Mansion2_Prepare_Conversation_Destroy_Flotilla BREAK CASE MANSION2_CONVERSATION_FLOTILLA_DESTROYED GOSUB Mansion2_Prepare_Conversation_Flotilla_Destroyed BREAK DEFAULT WRITE_DEBUG UNKNOWN_CONVERSATION RETURN ENDSWITCH // Preload the first two pieces of speech GOSUB Mansion2_Initial_Speech_Slot_Preloads nConversationStatus = MANSION2_CONVERSATION_STATUS_PREPARED RETURN // **************************************** // Check if the current conversation should be interrupted Mansion2_Check_If_Interrupt_Conversation: // Is Carl Dead? SWITCH nCurrentConversationID CASE MANSION2_CONVERSATION_CARL_MEETS_TORENO CASE MANSION2_CONVERSATION_INSTRUCTIONS CASE MANSION2_CONVERSATION_GOTO_CARRIER CASE MANSION2_CONVERSATION_SNEAK_INTO_CARRIER CASE MANSION2_CONVERSATION_STOLEN_HARRIER CASE MANSION2_CONVERSATION_VAPOURISED CASE MANSION2_CONVERSATION_DESTROY_FLOTILLA CASE MANSION2_CONVERSATION_FLOTILLA_DESTROYED IF IS_CHAR_DEAD scplayer nConversationStatus = MANSION2_CONVERSATION_STATUS_INTERRUPTED RETURN ENDIF BREAK ENDSWITCH // Is Toreno dead? SWITCH nCurrentConversationID CASE MANSION2_CONVERSATION_CARL_MEETS_TORENO CASE MANSION2_CONVERSATION_INSTRUCTIONS IF IS_CHAR_DEAD charToreno nConversationStatus = MANSION2_CONVERSATION_STATUS_INTERRUPTED RETURN ENDIF BREAK ENDSWITCH RETURN // **************************************** // Prepare Conversation: Carl Meets Toreno Mansion2_Prepare_Conversation_Carl_Meets_Toreno: // Conversation between Toreno and Carl nTempInt = 0 nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_AA $tlConversationSequenceSubtitle[nTempInt] = MAN2_AA nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_AB $tlConversationSequenceSubtitle[nTempInt] = MAN2_AB nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_AC $tlConversationSequenceSubtitle[nTempInt] = MAN2_AC nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_AD $tlConversationSequenceSubtitle[nTempInt] = MAN2_AD nTempInt++ IF nTempInt > MANSION2_MAX_CONVERSATION_LINES WRITE_DEBUG TOO_MANY_CONVERSATION_LINES ENDIF nCurrentMaxConversationLines = nTempInt RETURN // **************************************** // Prepare Conversation: Instructions Mansion2_Prepare_Conversation_Instructions: // Instructions from Toreno for Carl nTempInt = 0 nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_BA $tlConversationSequenceSubtitle[nTempInt] = MAN2_BA nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_BB $tlConversationSequenceSubtitle[nTempInt] = MAN2_BB nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_BC $tlConversationSequenceSubtitle[nTempInt] = MAN2_BC nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_BD $tlConversationSequenceSubtitle[nTempInt] = MAN2_BD nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_BE $tlConversationSequenceSubtitle[nTempInt] = MAN2_BE nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_BF $tlConversationSequenceSubtitle[nTempInt] = MAN2_BF nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_BG $tlConversationSequenceSubtitle[nTempInt] = MAN2_BG nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_BH $tlConversationSequenceSubtitle[nTempInt] = MAN2_BH nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_BJ $tlConversationSequenceSubtitle[nTempInt] = MAN2_BJ nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_BK $tlConversationSequenceSubtitle[nTempInt] = MAN2_BK nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_BL $tlConversationSequenceSubtitle[nTempInt] = MAN2_BL nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_BM $tlConversationSequenceSubtitle[nTempInt] = MAN2_BM nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_BN $tlConversationSequenceSubtitle[nTempInt] = MAN2_BN nTempInt++ IF nTempInt > MANSION2_MAX_CONVERSATION_LINES WRITE_DEBUG TOO_MANY_CONVERSATION_LINES ENDIF nCurrentMaxConversationLines = nTempInt RETURN // **************************************** // Prepare Conversation: Goto Carrier Mansion2_Prepare_Conversation_Goto_Carrier: // Information from Toreno (talking through earpiece) to Carl nTempInt = 0 nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_CA $tlConversationSequenceSubtitle[nTempInt] = MAN2_CA nCurrentMaxConversationLines = 1 RETURN // **************************************** // Prepare Conversation: Sneak Into Carrier Mansion2_Prepare_Conversation_Sneak_Into_Carrier: // Conversation between Toreno (through earpiece) and Carl nTempInt = 0 nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_DA $tlConversationSequenceSubtitle[nTempInt] = MAN2_DA nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_DB $tlConversationSequenceSubtitle[nTempInt] = MAN2_DB nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_DC $tlConversationSequenceSubtitle[nTempInt] = MAN2_DC nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_DD $tlConversationSequenceSubtitle[nTempInt] = MAN2_DD nTempInt++ IF nTempInt > MANSION2_MAX_CONVERSATION_LINES WRITE_DEBUG TOO_MANY_CONVERSATION_LINES ENDIF nCurrentMaxConversationLines = nTempInt RETURN // **************************************** // Prepare Conversation: Flotilla Destroyed Mansion2_Prepare_Conversation_Flotilla_Destroyed: // Final Conversation between Toreno and Carl nTempInt = 0 nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_FA $tlConversationSequenceSubtitle[nTempInt] = MAN2_FA nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_FB $tlConversationSequenceSubtitle[nTempInt] = MAN2_FB nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_FC $tlConversationSequenceSubtitle[nTempInt] = MAN2_FC nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_FD $tlConversationSequenceSubtitle[nTempInt] = MAN2_FD nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_FE $tlConversationSequenceSubtitle[nTempInt] = MAN2_FE nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_FF $tlConversationSequenceSubtitle[nTempInt] = MAN2_FF nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_FG $tlConversationSequenceSubtitle[nTempInt] = MAN2_FG nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_FK $tlConversationSequenceSubtitle[nTempInt] = MAN2_FK nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_FL $tlConversationSequenceSubtitle[nTempInt] = MAN2_FL nTempInt++ IF nTempInt > MANSION2_MAX_CONVERSATION_LINES WRITE_DEBUG TOO_MANY_CONVERSATION_LINES ENDIF nCurrentMaxConversationLines = nTempInt RETURN // **************************************** // Prepare Conversation: Stolen Harrier Mansion2_Prepare_Conversation_Stolen_Harrier: // Toreno Congratulates Carl nTempInt = 0 nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_EA $tlConversationSequenceSubtitle[nTempInt] = MAN2_EA nCurrentMaxConversationLines = 1 RETURN // **************************************** // Prepare Conversation: Vapourised Mansion2_Prepare_Conversation_Vapourised: // Enemy Harrier pilot nTempInt = 0 nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_EB $tlConversationSequenceSubtitle[nTempInt] = MAN2_EB nCurrentMaxConversationLines = 1 RETURN // **************************************** // Prepare Conversation: Destroy Flotilla Mansion2_Prepare_Conversation_Destroy_Flotilla: // Toreno tells Carl to destroy the flotilla nTempInt = 0 nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_EC $tlConversationSequenceSubtitle[nTempInt] = MAN2_EC nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_EE $tlConversationSequenceSubtitle[nTempInt] = MAN2_EE nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_EF $tlConversationSequenceSubtitle[nTempInt] = MAN2_EF nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_EG $tlConversationSequenceSubtitle[nTempInt] = MAN2_EG nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_EH $tlConversationSequenceSubtitle[nTempInt] = MAN2_EH nTempInt++ nConversationSequenceSpeechID[nTempInt] = SOUND_MAN2_EJ $tlConversationSequenceSubtitle[nTempInt] = MAN2_EJ nTempInt++ IF nTempInt > MANSION2_MAX_CONVERSATION_LINES WRITE_DEBUG TOO_MANY_CONVERSATION_LINES ENDIF nCurrentMaxConversationLines = nTempInt RETURN // ************************************************************************************************************* // HOUSEKEEPING GOSUBS // ************************************************************************************************************* // **************************************** // DEBUG TOOLS Mansion2_Debug_Tools: // Display mission stage variables for debug IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_SPACE display_debug++ IF display_debug > 2 display_debug = 0 ENDIF CLEAR_ALL_VIEW_VARIABLES ENDIF IF display_debug = 1 // system variables Mansion2_view_debug[0] = m_stage Mansion2_view_debug[1] = m_goals Mansion2_view_debug[2] = m_mission_timer Mansion2_view_debug[3] = 0 Mansion2_view_debug[4] = 0 Mansion2_view_debug[5] = 0 Mansion2_view_debug[6] = 0 Mansion2_view_debug[7] = 0 // First two lines are so that the important data displayed is not hidden by other text VIEW_INTEGER_VARIABLE Mansion2_view_debug[0] m_stage VIEW_INTEGER_VARIABLE Mansion2_view_debug[1] m_goals VIEW_INTEGER_VARIABLE Mansion2_view_debug[2] m_mission_timer ENDIF IF display_debug = 2 // A second page of variable output (if required - just copy format above) ENDIF // Quit level - no mission pass/fail - cleanup only IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ESC m_quit = 1 ENDIF // Pause level IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_P IF m_pause = 0 m_pause = 1 WRITE_DEBUG LEVEL_PAUSED ELSE m_pause = 0 WRITE_DEBUG LEVEL_UNPAUSED ENDIF ENDIF RETURN // **************************************** // DEBUG SHORTCUTS Mansion2_Debug_Shortcuts: // Jumps // ----- IF NOT IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_J RETURN ENDIF IF m_stage = MANSION2_STAGE_HEAD_TOWARDS_CARRIER CLEAR_AREA xposDestination yposDestination zposDestination 50.0 FALSE SET_CHAR_COORDINATES scplayer -1460.1915 513.4575 2.0030 SET_CHAR_HEADING scplayer 270.0000 GOSUB Mansion2_Next_Stage RETURN ENDIF IF m_stage = MANSION2_STAGE_ENTER_AIRCRAFT_CARRIER AND m_goals > 1 AND m_goals < 8 // ...skips past cutscene m_goals = 8 RETURN ENDIF IF m_stage = MANSION2_STAGE_ENTER_HARRIER AND m_goals = 1 CLEAR_AREA -1403.1462 509.5356 17.2266 1.0 FALSE SET_CHAR_COORDINATES scplayer -1403.1462 509.5356 17.2266 SET_CHAR_HEADING scplayer 78.0000 SET_AIRCRAFT_CARRIER_SAM_SITE OFF flagReachedControlRoom = TRUE flagDisplayedControlRoomWarning = TRUE REMOVE_BLIP blipDestination m_goals = 6 RETURN ENDIF RETURN // **************************************** // FRAME COUNTER (Useful if processor scheduling is needed) Mansion2_Frame_Counter: m_frame_num++ IF m_frame_num > 9 m_frame_num = 0 ENDIF RETURN // **************************************** // ADDITIONAL TIMERS Mansion2_Additional_Timers: GET_GAME_TIMER m_this_frame_time m_time_diff = m_this_frame_time - m_last_frame_time m_last_frame_time = m_this_frame_time m_mission_timer += m_time_diff RETURN // ================================================================= // GOSUB: Next_Stage (sets flags and timers for next mission stage) // ================================================================= Mansion2_Next_Stage: m_stage++ m_goals = 0 TIMERA = 0 TIMERB = 0 RETURN // ************************************************************************************************************* // INTRO CUTSCENE GOSUB // ************************************************************************************************************* Mansion2_Intro_Cutscene: SET_PLAYER_CONTROL player1 OFF SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 5 LOAD_CUTSCENE BHILL2 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_FADING_COLOUR 0 0 0 DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 RETURN // ************************************************************************************************************* // INITIALISATION GOSUBS // ************************************************************************************************************* Mansion2_Initialisation: m_stage = MANSION2_STAGE_INITIALISATION // About to play an in-game cutscene, so keep widescreen mode ON and player control OFF SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF WHILE NOT IS_PLAYER_PLAYING player1 WAIT 0 ENDWHILE GOSUB Mansion2_Load_All_Models GOSUB Mansion2_Load_All_Anims GOSUB Mansion2_Load_All_Car_Recordings // Clear out the Guards AI REPEAT MANSION2_MAX_GUARDS nLoop aiGuards[nLoop] = MANSION2_GUARDAI_NOT_INITIALISED flagGuardsAllowAlert[nLoop] = FALSE flagGuardsOnAlert[nLoop] = FALSE ENDREPEAT // Clear out the Mechanics AI REPEAT MANSION2_MAX_MECHANICS nLoop aiMechanics[nLoop] = MANSION2_MECHANICAI_NOT_INITIALISED flagMechanicsOnAlert[nLoop] = FALSE ENDREPEAT // Switch off emergency services and clear the wanted multiplier SWITCH_EMERGENCY_SERVICES OFF SET_WANTED_MULTIPLIER 0.0 // Clear the reason for detection nReasonForDetection = MANSION2_DETECTED_UNKNOWN // Position the player CLEAR_AREA 1248.6813 -807.9187 83.1484 100.0 TRUE LOAD_SCENE 1248.6813 -807.9187 83.1484 SET_CHAR_COORDINATES scplayer 1246.0164 -803.2319 83.1484 SET_CHAR_HEADING scplayer 180.0 SET_CAMERA_BEHIND_PLAYER // Set time of day (so that it's not midnight and therefore not dark and rainy) SET_TIME_OF_DAY 8 0 WAIT 2000 // Fade in SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN // Set up Ped relationships SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 PEDTYPE_MISSION2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION2 PEDTYPE_MISSION1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION2 PEDTYPE_MISSION2 // Player control // NOTE: About to play an in-game cutscene so don't switch on player control // Switch on the Aircraft Carrier's SAM sites SET_AIRCRAFT_CARRIER_SAM_SITE ON // Delete the Permanent Carrier objects DELETE_OBJECT g_VB_REAR_DOOR DELETE_OBJECT g_VB_SMALL_LIFT DELETE_OBJECT g_VB_BIG_LIFT // Respawn point SET_RESPAWN_POINT_FOR_DURATION_OF_MISSION 1250.6500 -785.9349 89.2412 GOSUB Mansion2_Next_Stage RETURN // *********************************** // LOAD ALL MODELS Mansion2_Load_All_Models: // CARS REQUEST_MODEL WASHING // Toreno's car REQUEST_MODEL SQUALO // Player's speedboat REQUEST_MODEL HYDRA // Harriers REQUEST_MODEL TROPIC // Spy ships REQUEST_MODEL LAUNCH // Enemy boat REQUEST_MODEL FORKLIFT // Forklift! // PEDS REQUEST_MODEL ARMY REQUEST_MODEL WMYMECH // SPECIAL CHARACTERS LOAD_SPECIAL_CHARACTER MANSION2_TORENO_SPECIAL_CHARACTER_SLOT TORINO // WEAPONS REQUEST_MODEL SILENCED REQUEST_MODEL KNIFECUR REQUEST_MODEL M4 // OBJECTS REQUEST_MODEL CARRIER_LIFT1_SFSE REQUEST_MODEL CARRIER_LIFT2_SFSE REQUEST_MODEL CARRIER_DOOR_SFSE REQUEST_MODEL MISSILE_07_SFXR REQUEST_MODEL KMB_KEYPAD LOAD_ALL_MODELS_NOW // Are Cars Loaded? WHILE NOT HAS_MODEL_LOADED WASHING OR NOT HAS_MODEL_LOADED SQUALO OR NOT HAS_MODEL_LOADED HYDRA OR NOT HAS_MODEL_LOADED TROPIC OR NOT HAS_MODEL_LOADED LAUNCH OR NOT HAS_MODEL_LOADED FORKLIFT WAIT 0 ENDWHILE // Are Peds Loaded? WHILE NOT HAS_MODEL_LOADED ARMY OR NOT HAS_MODEL_LOADED WMYMECH WAIT 0 ENDWHILE // Are Special Characters Loaded? WHILE NOT HAS_SPECIAL_CHARACTER_LOADED MANSION2_TORENO_SPECIAL_CHARACTER_SLOT WAIT 0 ENDWHILE // Are weapons loaded? WHILE NOT HAS_MODEL_LOADED SILENCED OR NOT HAS_MODEL_LOADED KNIFECUR OR NOT HAS_MODEL_LOADED M4 WAIT 0 ENDWHILE // Are the Objects loaded? WHILE NOT HAS_MODEL_LOADED CARRIER_LIFT1_SFSE OR NOT HAS_MODEL_LOADED CARRIER_LIFT2_SFSE OR NOT HAS_MODEL_LOADED CARRIER_DOOR_SFSE OR NOT HAS_MODEL_LOADED MISSILE_07_SFXR OR NOT HAS_MODEL_LOADED KMB_KEYPAD WAIT 0 ENDWHILE RETURN // *********************************** // LOAD ALL ANIMS Mansion2_Load_All_Anims: REQUEST_ANIMATION CASINO // for player deactivating SAMs // Are anims loaded? WHILE NOT HAS_ANIMATION_LOADED CASINO WAIT 0 ENDWHILE RETURN // *********************************** // LOAD ALL CAR RECORDINGS Mansion2_Load_All_Car_Recordings: REQUEST_CAR_RECORDING MANSION2_CAR_RECORDING_TORENO_CAR REQUEST_CAR_RECORDING MANSION2_CAR_RECORDING_HARRIER_TAKEOFF REQUEST_CAR_RECORDING MANSION2_CAR_RECORDING_HARRIER_LANDING WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED MANSION2_CAR_RECORDING_TORENO_CAR OR NOT HAS_CAR_RECORDING_BEEN_LOADED MANSION2_CAR_RECORDING_HARRIER_TAKEOFF OR NOT HAS_CAR_RECORDING_BEEN_LOADED MANSION2_CAR_RECORDING_HARRIER_LANDING WAIT 0 ENDWHILE RETURN // ************************************************************************************************************* // END OF LEVEL GOSUBS - fail, pass, cleanup // ************************************************************************************************************* // FAIL Mansion2_Mission_Failed: PRINT_BIG M_FAIL 5000 1 // Display reason for failure (if there is a reason) CLEAR_SMALL_PRINTS SWITCH m_fail_reason CASE MANSION2_FAILED_TORENO_CAR_DESTROYED PRINT_NOW MAN2_80 5000 1 BREAK CASE MANSION2_FAILED_TORENO_DEAD PRINT_NOW MAN2_81 5000 1 BREAK CASE MANSION2_FAILED_NO_PLANES_LEFT PRINT_NOW MAN2_82 5000 1 BREAK CASE MANSION2_FAILED_HARRIER_DEAD PRINT_NOW MAN2_83 5000 1 BREAK CASE MANSION2_FAILED_NOT_IN_CARRIER PRINT_NOW MAN2_84 5000 1 BREAK CASE MANSION2_FAILED_LEFT_CARRIER PRINT_NOW MAN2_ZZ 5000 1 BREAK ENDSWITCH // Get rid of the Player's mission specific weapons IF IS_PLAYER_PLAYING player1 REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_PISTOL_SILENCED REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_KNIFE ENDIF RETURN // PASS Mansion2_Mission_Passed: // This mission gives $50,000 reward PRINT_WITH_NUMBER_BIG M_PASS 50000 5000 1 ADD_SCORE player1 50000 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 REGISTER_MISSION_PASSED MAN_2 PLAYER_MADE_PROGRESS 1 SET_INT_STAT PASSED_MANSION2 1 PRINT_NOW MAN2_34 7000 1 flag_mansion_mission_counter ++ // Create powerful / exotic weapons in Toreno's mansion CREATE_PICKUP ROCKETLA PICKUP_ON_STREET_SLOW -686.0000 934.0000 13.5000 gun_toreno1 // Rocket Launcher CREATE_PICKUP HEATSEEK PICKUP_ON_STREET_SLOW -690.0000 934.0000 13.5000 gun_toreno2 // Stinger-type Rocket Launcher CREATE_PICKUP MINIGUN PICKUP_ON_STREET_SLOW -690.0000 939.0000 13.5000 gun_toreno3 // Minigun CREATE_PICKUP FLAME PICKUP_ON_STREET_SLOW -686.0000 939.0000 13.5000 gun_toreno4 // Flamethrower // Switch on Harrier car generators SWITCH_CAR_GENERATOR gen_car_flying[8] 101 SWITCH_CAR_GENERATOR gen_car_flying[9] 101 SWITCH_CAR_GENERATOR area51_gen[2] 101 SWITCH_CAR_GENERATOR area51_gen[3] 101 RETURN // CLEANUP Mansion2_Mission_Cleanup: // Entity Task Removal, etc. // ------------------------- // Audio Clearup // ------------- IF flagCarrierBackDoorAudioPlaying = TRUE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierBackDoor SOUND_VERTICAL_BIRD_LIFT_STOP flagCarrierBackDoorAudioPlaying = FALSE ENDIF IF flagCarrierSmallLiftAudioPlaying = TRUE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierSmallLift SOUND_VERTICAL_BIRD_LIFT_STOP flagCarrierSmallLiftAudioPlaying = FALSE ENDIF IF flagCarrierBigLiftAudioPlaying = TRUE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT objectCarrierBigLift SOUND_VERTICAL_BIRD_LIFT_STOP flagCarrierBigLiftAudioPlaying = FALSE ENDIF IF flagCarrierOnAlertAudioPlaying = TRUE REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_VERTICAL_BIRD_ALARM_STOP flagCarrierOnAlertAudioPlaying = FALSE ENDIF // Entity Clearup // -------------- // NOTE: The Player Plane and the Enemy Planes will be cleared up by the 'Planes' loop // because the Player and Enemy planes are just copies of these variables MARK_CAR_AS_NO_LONGER_NEEDED carToreno MARK_CAR_AS_NO_LONGER_NEEDED carSpeedboat MARK_CAR_AS_NO_LONGER_NEEDED carEnemyBoat MARK_CHAR_AS_NO_LONGER_NEEDED charToreno MARK_OBJECT_AS_NO_LONGER_NEEDED objectCarrierBigLift MARK_OBJECT_AS_NO_LONGER_NEEDED objectCarrierSmallLift MARK_OBJECT_AS_NO_LONGER_NEEDED objectCarrierBackDoor MARK_OBJECT_AS_NO_LONGER_NEEDED objectMissile REPEAT MANSION2_MAX_PLANES nLoop MARK_CAR_AS_NO_LONGER_NEEDED carPlanes[nLoop] ENDREPEAT REPEAT MANSION2_MAX_ENEMY_PLANES nLoop MARK_CAR_AS_NO_LONGER_NEEDED carEnemyPlanes[nLoop] ENDREPEAT REPEAT MANSION2_MAX_SPY_SHIPS nLoop MARK_CAR_AS_NO_LONGER_NEEDED carSpyShips[nLoop] ENDREPEAT REPEAT MANSION2_MAX_FORKLIFTS nLoop MARK_CAR_AS_NO_LONGER_NEEDED carForklifts[nLoop] ENDREPEAT REPEAT MANSION2_MAX_GUARDS nLoop MARK_CHAR_AS_NO_LONGER_NEEDED charGuards[nLoop] ENDREPEAT // Blip Clearup // ------------ REMOVE_BLIP blipSpeedboat REMOVE_BLIP blipDestination REMOVE_BLIP blipPlayerPlane REPEAT MANSION2_MAX_ENEMY_PLANES nLoop REMOVE_BLIP blipEnemyPlanes[nLoop] ENDREPEAT REPEAT MANSION2_MAX_SPY_SHIPS nLoop REMOVE_BLIP blipSpyShips[nLoop] ENDREPEAT REPEAT MANSION2_MAX_GUARDS nLoop REMOVE_BLIP blipGuards[nLoop] ENDREPEAT // Help Text Clearup // ----------------- CLEAR_HELP // Counters and Timers Clearup // --------------------------- // Animation Clearup // ----------------- REMOVE_ANIMATION CASINO // Models Clearup // -------------- MARK_MODEL_AS_NO_LONGER_NEEDED WASHING MARK_MODEL_AS_NO_LONGER_NEEDED SQUALO MARK_MODEL_AS_NO_LONGER_NEEDED HYDRA MARK_MODEL_AS_NO_LONGER_NEEDED TROPIC MARK_MODEL_AS_NO_LONGER_NEEDED LAUNCH MARK_MODEL_AS_NO_LONGER_NEEDED FORKLIFT MARK_MODEL_AS_NO_LONGER_NEEDED ARMY MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH MARK_MODEL_AS_NO_LONGER_NEEDED SILENCED MARK_MODEL_AS_NO_LONGER_NEEDED KNIFECUR MARK_MODEL_AS_NO_LONGER_NEEDED M4 MARK_MODEL_AS_NO_LONGER_NEEDED CARRIER_LIFT1_SFSE MARK_MODEL_AS_NO_LONGER_NEEDED CARRIER_LIFT2_SFSE MARK_MODEL_AS_NO_LONGER_NEEDED CARRIER_DOOR_SFSE MARK_MODEL_AS_NO_LONGER_NEEDED MISSILE_07_SFXR MARK_MODEL_AS_NO_LONGER_NEEDED KMB_KEYPAD // Toreno's special weapons MARK_MODEL_AS_NO_LONGER_NEEDED ROCKETLA MARK_MODEL_AS_NO_LONGER_NEEDED HEATSEEK MARK_MODEL_AS_NO_LONGER_NEEDED MINIGUN MARK_MODEL_AS_NO_LONGER_NEEDED FLAME UNLOAD_SPECIAL_CHARACTER MANSION2_TORENO_SPECIAL_CHARACTER_SLOT // Car Recording Clearup // --------------------- REMOVE_CAR_RECORDING MANSION2_CAR_RECORDING_TORENO_CAR REMOVE_CAR_RECORDING MANSION2_CAR_RECORDING_HARRIER_TAKEOFF REMOVE_CAR_RECORDING MANSION2_CAR_RECORDING_HARRIER_LANDING // === RESTORE ENVIRONMENT SETTINGS === // ------------------------------------ SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_WANTED_MULTIPLIER 1.0 SWITCH_EMERGENCY_SERVICES ON SWITCH_RANDOM_TRAINS ON SWITCH_AMBIENT_PLANES ON RELEASE_WEATHER // Make sure the player gets a 6* rating again whenever he sets foot on the aircraft carrier SET_DISABLE_MILITARY_ZONES FALSE // Switch off the Aircraft Carrier's SAM sites SET_AIRCRAFT_CARRIER_SAM_SITE ON // Don't force interior lighting again FORCE_INTERIOR_LIGHTING_FOR_PLAYER player1 FALSE // Make sure the player can talk again IF NOT IS_CHAR_DEAD scplayer ENABLE_CHAR_SPEECH scplayer ENDIF // Restore switched off road // ------------------------- // SWITCH_ROADS_BACK_TO_ORIGINAL xlo ylo zlo xhi yhi zhi // Make sure the mobile phone doesn't ring immediately after a mission // ------------------------------------------------------------------- GET_GAME_TIMER timer_mobile_start // Re-create the permanent objects // ...Rear Door for Aircraft Carrier CREATE_OBJECT_NO_OFFSET CARRIER_DOOR_SFSE -1465.797 501.289 1.145 g_VB_REAR_DOOR SET_OBJECT_DYNAMIC g_VB_REAR_DOOR FALSE SET_OBJECT_COLLISION_DAMAGE_EFFECT g_VB_REAR_DOOR FALSE SET_OBJECT_PROOFS g_VB_REAR_DOOR TRUE TRUE TRUE TRUE TRUE DONT_REMOVE_OBJECT g_VB_REAR_DOOR // ...Small Lift for Aircraft Carrier CREATE_OBJECT_NO_OFFSET CARRIER_LIFT2_SFSE -1414.453 516.453 16.688 g_VB_SMALL_LIFT SET_OBJECT_DYNAMIC g_VB_SMALL_LIFT FALSE SET_OBJECT_COLLISION_DAMAGE_EFFECT g_VB_SMALL_LIFT FALSE SET_OBJECT_PROOFS g_VB_SMALL_LIFT TRUE TRUE TRUE TRUE TRUE DONT_REMOVE_OBJECT g_VB_SMALL_LIFT // ...Big Lift for Aircraft Carrier CREATE_OBJECT_NO_OFFSET CARRIER_LIFT1_SFSE -1456.719 501.297 16.953 g_VB_BIG_LIFT SET_OBJECT_DYNAMIC g_VB_BIG_LIFT FALSE SET_OBJECT_COLLISION_DAMAGE_EFFECT g_VB_BIG_LIFT FALSE SET_OBJECT_PROOFS g_VB_BIG_LIFT TRUE TRUE TRUE TRUE TRUE DONT_REMOVE_OBJECT g_VB_BIG_LIFT // Housekeeping // ------------ flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* Mansion 3 ***************************************** // *********************************** Pick Up Sweet *************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME MANSIO3 // Mission start stuff GOSUB mission_start_mansion3 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_mansion3_failed ENDIF GOSUB mission_cleanup_mansion3 MISSION_END // Variables for mission VAR_INT has_seen_this_cutscene { // NPC's LVAR_INT m3_dealer_blip[6] m3_dealer[6] m3_cracker[6] LVAR_INT dummy_dealer // this ped is just used to stop dealer.sc being streamed out LVAR_FLOAT sw_X sw_Y sw_Z // Blips LVAR_INT m3_grove_blip m3_bus_blip m3_sweet_blip m3_display_txt // Vehicles LVAR_INT m3_ply_car m3_cut_car passengers_cut_car m3_stolen_car // Mission LVAR_INT m3_mission_status m3_has_been_passed LVAR_INT flying_drugs LVAR_FLOAT m3_drug_X m3_drug_Y m3_drug_Z LVAR_INT m3_once_only m3_bus_sign1 LVAR_FLOAT m3_ply_heading LVAR_INT m3_dealers_killed LVAR_INT m3_hood_taken LVAR_INT m3_gan1 m3_gan2 LVAR_INT m3_help_take_hood LVAR_INT m3_switch LVAR_INT m3_hood_blip LVAR_INT v m3_taken_txt LVAR_INT m3_playing LVAR_INT m3_audio LVAR_INT passengers_in_cut_car LVAR_INT m3_can_trigger_a_war LVAR_TEXT_LABEL m3_print VAR_INT m3_in_the_zone m3_sweets_health // **************************************** Mission Start ********************************** mission_start_mansion3: LOAD_MISSION_TEXT MAN_3 SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 TRUE CAN_TRIGGER_GANG_WAR_WHEN_ON_A_MISSION TRUE SET_FADING_COLOUR 0 0 0 REGISTER_MISSION_GIVEN flag_player_on_mission = 1 m3_playing = 2 WAIT 0 LOAD_SPECIAL_CHARACTER 1 sweet //intro cut scene SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE FORCE_WEATHER_NOW WEATHER_SUNNY_LA SET_AREA_VISIBLE 5 LOAD_CUTSCENE BHILL3a WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_FADING_COLOUR 0 0 0 DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 RELEASE_WEATHER // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** REQUEST_MODEL vincent REQUEST_MODEL bmydrug REQUEST_MODEL FAM2 REQUEST_MODEL ak47 REQUEST_MODEL WMYDRUG REQUEST_ANIMATION GANGS REQUEST_ANIMATION CRACK REQUEST_CAR_RECORDING 488 STREAM_SCRIPT Dealer.sc LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED vincent OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_MODEL_LOADED FAM2 WAIT 0 ENDWHILE WHILE NOT HAS_ANIMATION_LOADED GANGS OR NOT HAS_ANIMATION_LOADED CRACK OR NOT HAS_MODEL_LOADED bmydrug WAIT 0 ENDWHILE WHILE NOT HAS_STREAMED_SCRIPT_LOADED Dealer.sc OR NOT HAS_CAR_RECORDING_BEEN_LOADED 488 OR NOT HAS_MODEL_LOADED ak47 OR NOT HAS_MODEL_LOADED WMYDRUG WAIT 0 ENDWHILE REQUEST_COLLISION 1251.5413 -808.7633 // Gang stuff it'll work fine ************************************************************** SET_ZONE_GANG_STRENGTH GAN1 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH GAN1 GANG_FLAT 40 CAN_TRIGGER_GANG_WAR_WHEN_ON_A_MISSION FALSE // ***************************************************************************************** CREATE_CHAR PEDTYPE_CIVMALE bmydrug 2488.6169 -1671.5364 -10.0 dummy_dealer // This ped is just used to stop dealer.sc being streamed out START_NEW_STREAMED_SCRIPT Dealer.sc dummy_dealer // ****************************************START OF CUTSCENE******************************** ADD_BLIP_FOR_COORD 2514.4614 -1674.1044 12.6425 m3_grove_blip ADD_BLIP_FOR_COORD 1521.2521 -1673.3357 12.5607 m3_bus_blip CHANGE_BLIP_DISPLAY m3_grove_blip NEITHER CHANGE_BLIP_DISPLAY m3_bus_blip BOTH CLEAR_AREA 1245.0488 -811.1318 83.1477 10.0 TRUE CREATE_CAR vincent 1245.0488 -811.1318 83.1477 m3_ply_car CHANGE_CAR_COLOUR m3_ply_car CARCOLOUR_BLACK CARCOLOUR_BLACK SET_CAR_HEADING m3_ply_car 181.4888 SET_CAR_TRACTION m3_ply_car 2.0 SET_CHAR_COORDINATES scplayer 1251.5413 -808.7633 83.1484 SET_CHAR_HEADING scplayer 109.0044 ADD_BLIP_FOR_COORD 2485.5271 -1668.5282 12.3438 m3_hood_blip CHANGE_BLIP_DISPLAY m3_hood_blip NEITHER SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT LOAD_SCENE_IN_DIRECTION 1251.5413 -808.7633 83.1484 109.0044 GOSUB mansion3_fade_in PRINT_NOW ( MAN3_01 ) 7000 1 // ~s~Pick up Sweet from the ~y~Precinct~s~. WHILE NOT IS_CHAR_DEAD scplayer WAIT 0 IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S GOTO mission_mansion3_passed ENDIF GOSUB man3_keys GOSUB m3_play_sample // ****************************** Going to bus stop to get sweet *********************** IF m3_mission_status = 0 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer m3_cut_car GET_MAXIMUM_NUMBER_OF_PASSENGERS m3_cut_car passengers_cut_car GET_NUMBER_OF_PASSENGERS m3_cut_car passengers_in_cut_car ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1521.1943 -1671.9128 12.5625 3.0 3.0 3.0 TRUE IF passengers_cut_car = 0 PRINT_NOW ( MAN3_19 ) 3000 1 // ~s~Get a bigger vehicle! ENDIF IF passengers_in_cut_car = passengers_cut_car IF IS_CHAR_IN_ANY_HELI scplayer OR IS_CHAR_IN_ANY_PLANE scplayer OR IS_CHAR_IN_FLYING_VEHICLE scplayer PRINT_NOW ( MAN3_69 ) 3000 1 // The vehicle is too full, there's no room for Sweet! ELSE PRINT_NOW ( MAN3_08 ) 3000 1 // You need a vehicle to pick up Sweet. ENDIF ENDIF // Player has arrived at the bus stop ******************************************** IF passengers_cut_car > 0 AND NOT passengers_in_cut_car = passengers_cut_car IF IS_CHAR_IN_ANY_CAR scplayer SET_PLAYER_CONTROL player1 OFF IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer car TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF //CLEAR_ONSCREEN_TIMER m3_bus_clock SET_PLAYER_CONTROL player1 FALSE //outside LA police station SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE MAKE_PLAYER_SAFE_FOR_CUTSCENE Player1 IF NOT IS_CAR_DEAD m3_ply_car IF LOCATE_CAR_3D m3_ply_car 1542.7299 -1675.6971 12.5551 15.0 15.0 15.0 FALSE DELETE_CAR m3_ply_car ENDIF ENDIF CLEAR_AREA 1542.7299 -1675.6971 12.5551 60.0 TRUE LOAD_CUTSCENE BHILL3b WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF IS_CHAR_IN_ANY_CAR scplayer IF NOT IS_CAR_DEAD car SET_CAR_COORDINATES car 1521.1943 -1671.9128 12.5625 ENDIF ENDIF IF NOT IS_CAR_DEAD car MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 CREATE_CHAR_AS_PASSENGER car PEDTYPE_MISSION2 SPECIAL01 0 sweet SET_CHAR_HEALTH sweet 700 SET_CHAR_MAX_HEALTH sweet 700 SET_ANIM_GROUP_FOR_CHAR sweet gang2 SET_CHAR_NEVER_TARGETTED sweet TRUE SET_CHAR_SUFFERS_CRITICAL_HITS sweet FALSE SET_CHAR_ACCURACY sweet 90 ENDIF IF NOT IS_CHAR_DEAD sweet AND NOT IS_CAR_DEAD car AND NOT IS_CHAR_DEAD scplayer IF NOT IS_CHAR_IN_CAR scplayer car WARP_CHAR_INTO_CAR scplayer car ENDIF ADD_BLIP_FOR_CHAR sweet m3_sweet_blip SET_BLIP_AS_FRIENDLY m3_sweet_blip TRUE CHANGE_BLIP_DISPLAY m3_sweet_blip NEITHER ENDIF TIMERB = 0 CHANGE_BLIP_DISPLAY m3_grove_blip BOTH CHANGE_BLIP_DISPLAY m3_bus_blip NEITHER IF NOT IS_CHAR_DEAD sweet MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_group sweet ENDIF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON GET_CHAR_HEADING scplayer m3_ply_heading IF NOT IS_CAR_DEAD car IF m3_ply_heading > 90.0 AND m3_ply_heading < 270.0 LOAD_SCENE_IN_DIRECTION 1521.1943 -1671.9128 12.5625 180.0000 SET_CAR_HEADING car 180.0000 ELSE LOAD_SCENE_IN_DIRECTION 1521.1943 -1671.9128 12.5625 0.0000 SET_CAR_HEADING car 0.0000 ENDIF ENDIF GOSUB mansion3_fade_in m3_display_txt = 1 m3_mission_status = 1 ELSE PRINT_NOW ( MAN3_08 ) 4000 1 // You need a car to pick up sweet ENDIF ENDIF ENDIF ENDIF // mission_status = 0 IF NOT m3_display_txt = 0 IF TIMERB > 1000 AND m3_display_txt = 1 IF NOT IS_CHAR_DEAD ryder SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryder TRUE ENDIF IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE ENDIF $m3_print = &MAN3_AA // Shit is all fucked up now, dude. m3_audio = SOUND_MAN3_AA GOSUB m3_load_sample m3_display_txt = 2 ENDIF IF m3_playing = 2 AND m3_display_txt = 2 $m3_print = &MAN3_AB // Yeah. m3_audio = SOUND_MAN3_AB GOSUB m3_load_sample m3_display_txt = 3 ENDIF IF m3_playing = 2 AND m3_display_txt = 3 $m3_print = &MAN3_AC // What you want, it ain’t round here no more. m3_audio = SOUND_MAN3_AC GOSUB m3_load_sample m3_display_txt = 4 ENDIF IF m3_playing = 2 AND m3_display_txt = 4 $m3_print = &MAN3_AD // Just take me to mom’s house. m3_audio = SOUND_MAN3_AD GOSUB m3_load_sample m3_display_txt = 5 ENDIF IF m3_playing = 2 AND m3_display_txt = 5 PRINT_NOW ( MAN3_05 ) 7000 1 // ~s~Drive Sweet to ~y~Grove Street m3_display_txt = 0 IF NOT IS_CHAR_DEAD ryder SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH ryder FALSE ENDIF IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF CHECKPOINT_SAVE 99 ENDIF ENDIF // ****************************************************************************************************** // * * // * DRIVING TO GROVE * // * * // ****************************************************************************************************** IF m3_mission_status = 1 OR m3_mission_status = 2 IF IS_CHAR_DEAD sweet PRINT_NOW ( MAN3_11 ) 4000 1 // ~r~You let Sweet get killed GOTO mission_mansion3_failed ENDIF IF NOT IS_CHAR_DEAD sweet GET_CHAR_COORDINATES sweet sw_X sw_Y sw_Z ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer sw_X sw_Y sw_Z 30.0 30.0 30.0 FALSE CHANGE_BLIP_DISPLAY m3_sweet_blip NEITHER CHANGE_BLIP_DISPLAY m3_grove_blip BOTH IF NOT IS_GROUP_MEMBER sweet Players_group MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_group sweet ENDIF m3_mission_status = 1 ELSE PRINT_NOW ( MAN3_03 ) 4000 1 // You lost sweet, go back and get him CHANGE_BLIP_DISPLAY m3_sweet_blip BOTH CHANGE_BLIP_DISPLAY m3_grove_blip NEITHER IF IS_GROUP_MEMBER sweet Players_group REMOVE_CHAR_FROM_GROUP sweet ENDIF m3_mission_status = 2 ENDIF IF m3_mission_status = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2514.4614 -1674.1044 12.6425 4.0 4.0 4.0 TRUE SET_PLAYER_CONTROL player1 OFF IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF stick_me_in_here_instead: SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE MAKE_PLAYER_SAFE_FOR_CUTSCENE Player1 IF NOT IS_CAR_DEAD m3_ply_car IF LOCATE_CAR_3D m3_ply_car 2492.8887 -1666.5640 12.3438 15.0 15.0 15.0 FALSE CLEAR_AREA 2482.9939 -1653.6089 12.4610 10.0 TRUE SET_CAR_COORDINATES m3_ply_car 2482.9939 -1653.6089 12.4610 SET_CAR_HEADING m3_ply_car 273.1021 ENDIF ENDIF CLEAR_AREA 2492.8887 -1666.5640 12.3438 60.0 TRUE LOAD_CUTSCENE BHILL3c WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LVAR_INT m3_deal_seq m3_buy_seq OPEN_SEQUENCE_TASK m3_deal_seq TASK_PLAY_ANIM -1 IDLE_chat PED 1.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT m3_deal_seq 1 CLOSE_SEQUENCE_TASK m3_deal_seq OPEN_SEQUENCE_TASK m3_buy_seq TASK_PAUSE -1 1000 SET_SEQUENCE_TO_REPEAT m3_buy_seq 1 CLOSE_SEQUENCE_TASK m3_buy_seq CHANGE_BLIP_DISPLAY m3_grove_blip NEITHER m3_mission_status = 3 CREATE_CHAR PEDTYPE_CIVMALE bmydrug 2429.1899 -1677.5370 12.7231 m3_dealer[0] SET_CHAR_HEADING m3_dealer[0] 306.1672 PERFORM_SEQUENCE_TASK m3_dealer[0] m3_deal_seq ADD_BLIP_FOR_CHAR m3_dealer[0] m3_dealer_blip[0] CREATE_CHAR PEDTYPE_CIVMALE FAM2 2430.5864 -1677.0746 12.7135 m3_cracker[1] SET_CHAR_HEADING m3_cracker[1] 80.5280 PERFORM_SEQUENCE_TASK m3_cracker[1] m3_buy_seq CREATE_CHAR PEDTYPE_CIVMALE FAM2 2513.3638 -1649.8652 13.5588 m3_cracker[2] SET_CHAR_HEADING m3_cracker[2] 140.4164 TASK_PLAY_ANIM m3_cracker[2] crckidle1 CRACK 1.0 TRUE FALSE FALSE FALSE -1 APPLY_BRAKES_TO_PLAYERS_CAR player1 OFF GOSUB mansion3_set_camera LOAD_SCENE_IN_DIRECTION 2424.1841 -1679.5802 12.7653 322.7617 SET_FIXED_CAMERA_POSITION 2427.2271 -1681.1195 13.8910 0.0 0.0 0.0 // Bike from front POINT_CAMERA_AT_POINT 2427.8079 -1680.3058 13.8707 JUMP_CUT PRINT_NOW ( MAN3_20 ) 5000 1 // Kill any crack dealers in your hood to keep your gang healthy GOSUB mansion3_fade_in WAIT 1000 TIMERB = 0 WHILE TIMERB < 4000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED AND has_seen_this_cutscene = 0 GOTO m3_skip_the_cut_2 ENDIF ENDWHILE SET_FIXED_CAMERA_POSITION 2507.9839 -1652.1989 15.6974 0.0 0.0 0.0 // Bike from front POINT_CAMERA_AT_POINT 2508.8923 -1651.9133 15.3924 JUMP_CUT PRINT_NOW ( MAN3_21 ) 5000 1 // If a gang member is fucked on crack you won't be able to use him TIMERB = 0 WHILE TIMERB < 5000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED AND has_seen_this_cutscene = 0 GOTO m3_skip_the_cut_2 ENDIF ENDWHILE m3_skip_the_cut_2: has_seen_this_cutscene = 1 m3_can_trigger_a_war = 1 CAN_TRIGGER_GANG_WAR_WHEN_ON_A_MISSION TRUE IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2506.0593 -1671.9681 12.3790 ELSE SET_CHAR_COORDINATES scplayer 2506.0593 -1671.9681 12.3790 ENDIF SET_CAMERA_BEHIND_PLAYER SET_CHAR_HEADING scplayer 62.4295 ENDIF IF NOT IS_CHAR_DEAD sweet IF IS_CHAR_IN_ANY_CAR sweet WARP_CHAR_FROM_CAR_TO_COORD sweet 2506.5671 -1670.2120 12.3822 ELSE SET_CHAR_COORDINATES sweet 2506.5671 -1670.2120 12.3822 ENDIF GIVE_WEAPON_TO_CHAR sweet WEAPONTYPE_AK47 300 SET_CURRENT_CHAR_WEAPON sweet WEAPONTYPE_AK47 SET_CHAR_HEADING sweet 113.0677 ENDIF IF NOT IS_GROUP_MEMBER sweet Players_group MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_group sweet ENDIF SET_ZONE_GANG_STRENGTH GAN1 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH GAN1 GANG_FLAT 40 SET_ZONE_GANG_STRENGTH GAN2 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH GAN2 GANG_FLAT 40 DELETE_CHAR m3_cracker[1] m3_display_txt = 0 GOSUB mansion3_restore_camera IF NOT IS_CHAR_DEAD sweet SET_CHAR_HEALTH sweet 700 SET_CHAR_MAX_HEALTH sweet 700 GET_CHAR_HEALTH sweet m3_sweets_health ENDIF m3_sweets_health = m3_sweets_health / 7 DISPLAY_ONSCREEN_COUNTER_WITH_STRING m3_sweets_health COUNTER_DISPLAY_BAR ( MAN3_32 ) // Sweet // GOTO mission_mansion3_passed ENDIF ENDIF ENDIF // mission_status = 1 or 2 // *********************************************************************************************** // * * // * Spawn the dealers * // * * // *********************************************************************************************** IF m3_mission_status = 3 PRINT_NOW ( MAN3_22 ) 7000 1 // ~s~Clean the hood of any ~r~dealers~s~! CREATE_CHAR PEDTYPE_DEALER WMYDRUG 2482.0872 -1696.1189 12.5267 m3_dealer[1] SET_CHAR_HEADING m3_dealer[1] 0.0950 ADD_BLIP_FOR_CHAR m3_dealer[1] m3_dealer_blip[1] CREATE_CHAR PEDTYPE_DEALER bmydrug 2451.6807 -1644.0833 12.4570 m3_dealer[2] SET_CHAR_HEADING m3_dealer[2] 186.2393 ADD_BLIP_FOR_CHAR m3_dealer[2] m3_dealer_blip[2] CREATE_CHAR PEDTYPE_DEALER WMYDRUG 2415.7903 -1631.1433 12.5114 m3_dealer[3] SET_CHAR_HEADING m3_dealer[3] 287.5167 ADD_BLIP_FOR_CHAR m3_dealer[3] m3_dealer_blip[3] CREATE_CHAR PEDTYPE_DEALER bmydrug 2364.3608 -1666.7748 12.5469 m3_dealer[4] SET_CHAR_HEADING m3_dealer[4] 343.1245 ADD_BLIP_FOR_CHAR m3_dealer[4] m3_dealer_blip[4] CREATE_CHAR PEDTYPE_DEALER bmydrug 2370.3333 -1637.4197 12.4770 m3_dealer[5] SET_CHAR_HEADING m3_dealer[5] 140.6299 ADD_BLIP_FOR_CHAR m3_dealer[5] m3_dealer_blip[5] START_NEW_STREAMED_SCRIPT Dealer.sc m3_dealer[0] START_NEW_STREAMED_SCRIPT Dealer.sc m3_dealer[1] START_NEW_STREAMED_SCRIPT Dealer.sc m3_dealer[2] START_NEW_STREAMED_SCRIPT Dealer.sc m3_dealer[3] START_NEW_STREAMED_SCRIPT Dealer.sc m3_dealer[4] START_NEW_STREAMED_SCRIPT Dealer.sc m3_dealer[5] DELETE_CHAR dummy_dealer // This ped is just used to stop dealer.sc being streamed out m3_mission_status = 4 CHECKPOINT_SAVE 99 ENDIF IF m3_mission_status = 4 IF NOT IS_CHAR_DEAD sweet GET_CHAR_HEALTH sweet m3_sweets_health m3_sweets_health = m3_sweets_health / 7 ENDIF GET_ZONE_GANG_STRENGTH GAN1 GANG_FLAT m3_gan1 IF m3_gan1 = 0 IF m3_hood_taken = 0 m3_hood_taken = 1 IF m3_dealers_killed = 0 GOSUB mansion3_set_camera IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer PRTIAL_HNDSHK_01 GANGS 4.0 FALSE FALSE FALSE FALSE -1 ENDIF IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS_IMMEDIATELY sweet TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet PRTIAL_HNDSHK_01 GANGS 4.0 FALSE FALSE FALSE FALSE -1 ENDIF PRINT_NOW ( MAN3_33 ) 4000 1 // The Hood is yours! WAIT 4000 SET_ZONE_GANG_STRENGTH GAN1 GANG_GROVE 40 SET_ZONE_GANG_STRENGTH GAN1 GANG_FLAT 0 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_GROVE PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_GROVE PEDTYPE_GANG_FLAT GOSUB mansion3_restore_camera TIMERB = 0 ELSE GOTO m3_end_cutscene ENDIF ENDIF ENDIF IF m3_hood_taken = 1 AND TIMERB > 4000 AND m3_taken_txt = 0 PRINT_NOW ( MAN3_29 ) 10000 1 // Now kill the dealers! m3_taken_txt = 1 ENDIF // *********************************************************************************************** // * * // * Make sure player activates correct zone * // * * // *********************************************************************************************** IF IS_PLAYER_IN_INFO_ZONE player1 GAN1 AND m3_hood_taken = 0 AND m3_can_trigger_a_war = 1 IF m3_switch = 0 AND NOT IS_GANG_WAR_GOING_ON CAN_TRIGGER_GANG_WAR_WHEN_ON_A_MISSION TRUE SET_GANG_WARS_ACTIVE TRUE IF DOES_BLIP_EXIST m3_hood_blip REMOVE_BLIP m3_hood_blip ENDIF m3_switch = 1 ENDIF m3_in_the_zone = 1 ENDIF IF NOT IS_PLAYER_IN_INFO_ZONE player1 GAN1 AND m3_hood_taken = 0 AND m3_can_trigger_a_war = 1 IF m3_switch = 1 AND NOT IS_GANG_WAR_GOING_ON CAN_TRIGGER_GANG_WAR_WHEN_ON_A_MISSION FALSE SET_GANG_WARS_ACTIVE FALSE PRINT_NOW ( MAN3_31 ) 6000 1 // ~s~Go back and take the hood at ~y~Grove Street~s~. IF NOT DOES_BLIP_EXIST m3_hood_blip ADD_BLIP_FOR_COORD 2485.5271 -1668.5282 12.3438 m3_hood_blip ENDIF m3_switch = 0 ENDIF m3_in_the_zone = 0 ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW ( MAN3_11 ) 4000 1 // ~r~You let Sweet get killed GOTO mission_mansion3_failed ENDIF IF NOT IS_CHAR_DEAD sweet GET_CHAR_COORDINATES sweet sw_X sw_Y sw_Z ENDIF // *********************************************************************************************** // * * // * Left Sweet behind * // * * // *********************************************************************************************** IF LOCATE_CHAR_ANY_MEANS_3D scplayer sw_X sw_Y sw_Z 35.0 35.0 35.0 FALSE IF m3_once_only = 1 CHANGE_BLIP_DISPLAY m3_sweet_blip NEITHER CHANGE_BLIP_DISPLAY m3_dealer_blip[0] BOTH CHANGE_BLIP_DISPLAY m3_dealer_blip[1] BOTH CHANGE_BLIP_DISPLAY m3_dealer_blip[2] BOTH CHANGE_BLIP_DISPLAY m3_dealer_blip[3] BOTH CHANGE_BLIP_DISPLAY m3_dealer_blip[4] BOTH CHANGE_BLIP_DISPLAY m3_dealer_blip[5] BOTH IF NOT IS_CHAR_DEAD sweet MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_group sweet ENDIF m3_once_only = 0 ENDIF ELSE IF m3_once_only = 0 PRINT_NOW ( MAN3_03 ) 10000 1 // You lost sweet, go back and get him CHANGE_BLIP_DISPLAY m3_sweet_blip BOTH CHANGE_BLIP_DISPLAY m3_dealer_blip[0] NEITHER CHANGE_BLIP_DISPLAY m3_dealer_blip[1] NEITHER CHANGE_BLIP_DISPLAY m3_dealer_blip[2] NEITHER CHANGE_BLIP_DISPLAY m3_dealer_blip[3] NEITHER CHANGE_BLIP_DISPLAY m3_dealer_blip[4] NEITHER CHANGE_BLIP_DISPLAY m3_dealer_blip[5] NEITHER IF NOT IS_CHAR_DEAD sweet REMOVE_CHAR_FROM_GROUP sweet ENDIF m3_once_only = 1 ENDIF ENDIF // *********************************************************************************************** // * * // * Dealer dies remove his blip * // * * // *********************************************************************************************** IF IS_CHAR_DEAD m3_dealer[0] AND DOES_BLIP_EXIST m3_dealer_blip[0] REMOVE_BLIP m3_dealer_blip[0] ENDIF IF IS_CHAR_DEAD m3_dealer[1] AND DOES_BLIP_EXIST m3_dealer_blip[1] REMOVE_BLIP m3_dealer_blip[1] ENDIF IF IS_CHAR_DEAD m3_dealer[2] AND DOES_BLIP_EXIST m3_dealer_blip[2] REMOVE_BLIP m3_dealer_blip[2] ENDIF IF IS_CHAR_DEAD m3_dealer[3] AND DOES_BLIP_EXIST m3_dealer_blip[3] REMOVE_BLIP m3_dealer_blip[3] ENDIF IF IS_CHAR_DEAD m3_dealer[4] AND DOES_BLIP_EXIST m3_dealer_blip[4] REMOVE_BLIP m3_dealer_blip[4] ENDIF IF IS_CHAR_DEAD m3_dealer[5] AND DOES_BLIP_EXIST m3_dealer_blip[5] REMOVE_BLIP m3_dealer_blip[5] ENDIF IF m3_help_take_hood = 1 AND TIMERA > 4000 PRINT_HELP ( MAN3_30 ) // ~s~Shoot some Ballas to start a gang war! m3_help_take_hood = 2 ENDIF // *********************************************************************************************** // * * // * Player kills all the dealers * // * * // *********************************************************************************************** IF IS_CHAR_DEAD m3_dealer[0] AND IS_CHAR_DEAD m3_dealer[1] AND IS_CHAR_DEAD m3_dealer[2] AND IS_CHAR_DEAD m3_dealer[3] AND IS_CHAR_DEAD m3_dealer[4] AND IS_CHAR_DEAD m3_dealer[5] IF m3_dealers_killed = 0 m3_dealers_killed = 1 IF m3_hood_taken = 0 PRINT_NOW ( MAN3_28 ) 10000 1 // Now take back the hood! TIMERA = 0 m3_help_take_hood = 1 ELSE GOTO m3_end_cutscene ENDIF ENDIF ENDIF ENDIF ENDWHILE GOTO mission_mansion3_failed // *********************************************************************************************** // * * // * The Last Cutscene * // * * // *********************************************************************************************** m3_end_cutscene: GOSUB mansion3_fade_out GOSUB mansion3_set_camera IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD sweet REMOVE_CHAR_FROM_GROUP sweet CLEAR_AREA 2512.7610 -1672.5204 12.5034 20.0 TRUE DELETE_CAR m3_ply_car IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2512.7610 -1672.5204 12.5034 WARP_CHAR_FROM_CAR_TO_COORD sweet 2514.7876 -1673.9382 12.6861 ELSE SET_CHAR_COORDINATES scplayer 2512.7610 -1672.5204 12.5034 SET_CHAR_COORDINATES sweet 2514.7876 -1673.9382 12.6861 ENDIF DELETE_CAR m3_ply_car SET_CHAR_HEADING scplayer 240.2609 TASK_TURN_CHAR_TO_FACE_CHAR scplayer sweet SET_CHAR_HEADING sweet 73.5014 TASK_TURN_CHAR_TO_FACE_CHAR sweet scplayer TASK_TOGGLE_PED_THREAT_SCANNER sweet FALSE FALSE FALSE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY sweet SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED SET_CURRENT_CHAR_WEAPON sweet WEAPONTYPE_UNARMED ENDIF LOAD_SCENE 2512.7610 -1672.5204 12.5034 LOAD_SCENE_IN_DIRECTION 2512.7610 -1672.5204 12.5034 240.2609 SET_FIXED_CAMERA_POSITION 2509.7981 -1672.1747 13.4192 0.0 0.0 0.0 // Player enters car POINT_CAMERA_AT_POINT 2510.7522 -1672.4573 13.5178 JUMP_CUT GOSUB mansion3_fade_in IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer PRTIAL_HNDSHK_01 GANGS 4.0 FALSE FALSE FALSE FALSE -1 WAIT 500 ENDIF IF NOT IS_CHAR_DEAD sweet TASK_PLAY_ANIM sweet PRTIAL_HNDSHK_01 GANGS 4.0 FALSE FALSE FALSE FALSE -1 WAIT 500 ENDIF CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_MAN3_BA // Alright, lets get out of here. Go see Kendl. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( MAN3_BA ) 4000 1 // Alright, lets get out of here. Go see Kendl. TIMERB = 0 WHILE TIMERB < 4000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO m3_skip_the_cut_10 ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_MAN3_BB // Kendl can come see me, at her home. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( MAN3_BB ) 3000 1 // Kendl can come see me, at her home. IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS_IMMEDIATELY sweet TASK_PLAY_ANIM sweet IDLE_chat PED 4.0 FALSE FALSE FALSE FALSE -1 ENDIF TIMERB = 0 WHILE TIMERB < 3000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO m3_skip_the_cut_10 ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_MAN3_BC // There’s nothing here no more. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( MAN3_BC ) 3000 1 // There’s nothing here no more. IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_PLAY_ANIM scplayer IDLE_chat PED 4.0 FALSE FALSE FALSE FALSE -1 ENDIF TIMERB = 0 WHILE TIMERB < 3000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO m3_skip_the_cut_10 ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_MAN3_BD // Rome wasn’t built in a day. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( MAN3_BD ) 3000 1 // Rome wasn’t built in a day. TIMERB = 0 WHILE TIMERB < 3000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO m3_skip_the_cut_10 ENDIF ENDWHILE IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_GO_TO_COORD_ANY_MEANS scplayer 2507.7935 -1668.9266 12.3879 PEDMOVE_WALK -1 ENDIF CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_MAN3_BE // My brother is a pain in the ass WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( MAN3_BE ) 2000 1 // My brother is a pain in the ass TIMERB = 0 WHILE TIMERB < 2000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO m3_skip_the_cut_10 ENDIF ENDWHILE m3_skip_the_cut_10: GOSUB mansion3_restore_camera SET_CAMERA_BEHIND_PLAYER DELETE_CHAR sweet GOTO mission_mansion3_passed // *********************************************************************************************** // * * // * Mission Failed * // * * // *********************************************************************************************** mission_mansion3_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // *********************************************************************************************** // * * // * Mission Passed * // * * // *********************************************************************************************** mission_mansion3_passed: CAN_TRIGGER_GANG_WAR_WHEN_ON_A_MISSION TRUE SET_GANG_WARS_ACTIVE TRUE SET_ZONE_GANG_STRENGTH GAN1 GANG_GROVE 40 SET_ZONE_GANG_STRENGTH GAN2 GANG_GROVE 40 SET_ZONE_GANG_STRENGTH GAN1 GANG_FLAT 0 SET_ZONE_GANG_STRENGTH GAN2 GANG_FLAT 0 START_NEW_SCRIPT grove_mission_loop REMOVE_BLIP grove_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT introX introY introZ grove_blip_icon grove_contact_blip flag_mansion_mission_counter ++ PLAYER_MADE_PROGRESS 1 REGISTER_MISSION_PASSED ( MAN_3 ) //Used in the stats PRINT_WITH_NUMBER_BIG ( M_PASSR ) 40 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 40 //amount of respect CREATE_PROTECTION_PICKUP 2502.10 -1686.38 13.0 10000 territory_cash territory_pickup START_NEW_SCRIPT territory_cash_loop terminted_territory_pickup = 0 PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL player1 SET_INT_STAT PASSED_MANSION3 1 m3_has_been_passed = 1 RETURN // *********************************************************************************************** // * * // * Clean-up Mission * // * * // *********************************************************************************************** mission_cleanup_mansion3: IF m3_has_been_passed = 0 CAN_TRIGGER_GANG_WAR_WHEN_ON_A_MISSION FALSE SET_GANG_WARS_ACTIVE FALSE SET_ZONE_GANG_STRENGTH GAN1 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH GAN2 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH GAN1 GANG_FLAT 40 SET_ZONE_GANG_STRENGTH GAN2 GANG_FLAT 40 ENDIF CLEAR_ONSCREEN_COUNTER m3_sweets_health SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_GROVE PEDTYPE_PLAYER1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_GROVE PEDTYPE_GANG_FLAT flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start //Used to reset the mobile phone timer so it doesn't ring immediately after the mission GET_GAME_TIMER gf_game_timer MARK_MODEL_AS_NO_LONGER_NEEDED vincent MARK_MODEL_AS_NO_LONGER_NEEDED coach MARK_MODEL_AS_NO_LONGER_NEEDED bmydrug MARK_MODEL_AS_NO_LONGER_NEEDED FAM2 MARK_MODEL_AS_NO_LONGER_NEEDED ak47 MARK_MODEL_AS_NO_LONGER_NEEDED WMYDRUG MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED Dealer.sc UNLOAD_SPECIAL_CHARACTER 1 REMOVE_ANIMATION GANGS REMOVE_ANIMATION CRACK IF NOT IS_CHAR_DEAD sweet REMOVE_CHAR_ELEGANTLY sweet ENDIF IF DOES_BLIP_EXIST m3_hood_blip REMOVE_BLIP m3_hood_blip ENDIF IF DOES_BLIP_EXIST m3_dealer_blip[0] REMOVE_BLIP m3_dealer_blip[0] ENDIF IF DOES_BLIP_EXIST m3_dealer_blip[1] REMOVE_BLIP m3_dealer_blip[1] ENDIF IF DOES_BLIP_EXIST m3_bus_blip REMOVE_BLIP m3_bus_blip ENDIF IF DOES_BLIP_EXIST m3_grove_blip REMOVE_BLIP m3_grove_blip ENDIF IF DOES_BLIP_EXIST m3_sweet_blip REMOVE_BLIP m3_sweet_blip ENDIF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER MISSION_HAS_FINISHED RETURN mansion3_set_camera: SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF RETURN mansion3_restore_camera: CLEAR_PRINTS SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT RETURN mansion3_fade_out: DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN mansion3_fade_in: DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN // *********************************************************************************************** // * * // * Keyboard * // * * // *********************************************************************************************** man3_keys: LVAR_INT m3_dummy_car IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_W IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer 1522.0896 -1662.0824 12.5469 SET_CHAR_HEADING scplayer 175.5419 SET_CAMERA_BEHIND_PLAYER ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer 2503.6875 -1671.4528 12.3707 SET_CHAR_HEADING scplayer 255.1807 SET_CAMERA_BEHIND_PLAYER ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K GOSUB mansion3_set_camera IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer PRTIAL_HNDSHK_01 GANGS 4.0 FALSE FALSE FALSE FALSE -1 ENDIF IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS_IMMEDIATELY sweet TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet PRTIAL_HNDSHK_01 GANGS 4.0 FALSE FALSE FALSE FALSE -1 ENDIF PRINT_NOW ( MAN3_33 ) 4000 1 // The Hood is yours! WAIT 4000 GOSUB mansion3_restore_camera ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H GOTO m3_end_cutscene ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_Z IF NOT IS_CAR_DEAD m3_cut_car CREATE_CHAR_AS_PASSENGER m3_cut_car PEDTYPE_CIVMALE FAM2 0 m3_cracker[0] CREATE_CHAR_AS_PASSENGER m3_cut_car PEDTYPE_CIVMALE FAM2 1 m3_cracker[1] CREATE_CHAR_AS_PASSENGER m3_cut_car PEDTYPE_CIVMALE FAM2 2 m3_cracker[2] ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_M ENDIF RETURN m3_load_sample: CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 m3_audio m3_playing = 0 RETURN m3_play_sample: IF HAS_MISSION_AUDIO_LOADED 1 AND m3_playing = 0 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $m3_print ) 10000 1 m3_playing = 1 ENDIF IF HAS_MISSION_AUDIO_FINISHED 1 AND m3_playing = 1 CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT $m3_print m3_playing = 2 ENDIF RETURN } /* {---------------------------------------MANSION3--------------------------------------------} [MAN3_01:MAN_3] ~s~Pick up Sweet from the ~y~Precinct~s~. [MAN3_02:MAN_3] ~r~You missed the bus. [MAN3_03:MAN_3] ~s~You lost ~b~Sweet~s~, go back and get him. [MAN3_05:MAN_3] ~s~Drive Sweet to ~y~Grove Street~s~. [MAN3_08:MAN_3] You need a car to pick up sweet. [MAN3_11:MAN_3] ~r~You let Sweet get killed. [MAN3_18:MAN_3] Sweet's out of jail, he's going to need a ride. [MAN3_19:MAN_3] ~s~Get a bigger vehicle! [MAN3_20:MAN_3] Kill any crack dealers in your hood to keep your gang healthy. [MAN3_21:MAN_3] If a gang member is fucked on crack you won't be able to use him. [MAN3_22:MAN_3] ~s~Clean the hood of any ~r~Dealers~s~! [MAN3_27:MAN_3] Time Left : */ MISSION_START // ########################## // ## // ## Mansion5.sc // ## // ## Cut Throat Business // ## // ## Simon Lashley // ## // ########################## SCRIPT_NAME MANSON5 GOSUB mission_mansion5_START IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_mansion5_FAILED ENDIF GOSUB mission_mansion5_CLEANUP MISSION_END { //chars LVAR_INT md_M5 og_M5 // blips LVAR_INT p_blip_M5 md_blip_M5 og_blip_M5 // gameplay vehicles LVAR_INT p_vortex_M5 md_vortex_M5 og_vortex_M5 LVAR_INT p_kart_M5 md_kart_M5 og_kart_M5 // mansion stuff LVAR_INT man_bullet_M5 man_quad_M5 man_status_M5 // general LVAR_INT pointer_M5 sequence_M5 goto_blip_M5 players_group_M5 empty_dm_M5 cutscene_status_M5 mission_passed_M5 LVAR_FLOAT cam_pos_X_M5 cam_pos_Y_M5 cam_pos_Z_M5 cam_look_X_M5 cam_look_Y_M5 cam_look_Z_M5 LVAR_FLOAT speed_inc_M5 VAR_INT trip_skip_M5 // fail text LVAR_INT fail_text_flag_M5 LVAR_TEXT_LABEL fail_text_M5 mission_mansion5_START: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 // text LOAD_MISSION_TEXT MAN_5 SET_PLAYER_GROUP_RECRUITMENT player1 FALSE SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 // **************************************** START OF CUTSCENE SET_AREA_VISIBLE 5 LOAD_CUTSCENE BHILL5a WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 // **************************************** END OF CUTSCENE SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 // audio START_NEW_SCRIPT start_audio_controller // weather FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_LA LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY empty_dm_M5 // special LOAD_SPECIAL_CHARACTER 1 MADDOGG //REQUEST_MODEL VBMYCR // temp madd dogg // cars REQUEST_MODEL BFINJECT //REQUEST_MODEL QUAD WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_MODEL_LOADED BFINJECT //OR NOT HAS_MODEL_LOADED QUAD WAIT 0 ENDWHILE CLEAR_AREA 1252.4712 -805.5187 83.1484 400.0 TRUE LOAD_SCENE 1252.4712 -805.5187 83.1484 REQUEST_COLLISION 1252.4712 -805.5187 // player SET_CHAR_COORDINATES scplayer 1252.4712 -805.5187 83.1484 SET_CHAR_HEADING scplayer 144.1434 GET_PLAYER_GROUP player1 players_group_M5 SET_GROUP_DEFAULT_TASK_ALLOCATOR players_group_M5 DEFAULT_TASK_ALLOCATOR_FOLLOW_ANY_MEANS // madd dogg CREATE_CHAR PEDTYPE_SPECIAL SPECIAL01 1254.3110 -810.8859 83.1484 md_M5 SET_CHAR_HEADING md_M5 60.7435 SET_CHAR_NEVER_LEAVES_GROUP md_M5 TRUE SET_GROUP_MEMBER players_group_M5 md_M5 SET_CHAR_DROWNS_IN_WATER md_M5 TRUE SET_CHAR_DECISION_MAKER md_M5 empty_dm_M5 SET_CHAR_NEVER_TARGETTED md_M5 TRUE SET_CHAR_CANT_BE_DRAGGED_OUT md_M5 TRUE ADD_BLIP_FOR_CHAR md_M5 md_blip_M5 SET_BLIP_AS_FRIENDLY md_blip_M5 TRUE CHANGE_BLIP_DISPLAY md_blip_M5 BLIP_ONLY // mansion vehicles CUSTOM_PLATE_FOR_NEXT_CAR BFINJECT LA5H_L3Y CUSTOM_PLATE_DESIGN_FOR_NEXT_CAR BFINJECT CARPLATE_DESIGN_LA CREATE_CAR BFINJECT 1248.9071 -804.3519 83.1484 man_bullet_M5 SET_CAR_HEADING man_bullet_M5 180.0 CHANGE_CAR_COLOUR man_bullet_M5 0 3 // CREATE_CAR QUAD 1305.8279 -797.5150 83.1477 man_quad_M5 // SET_CAR_HEADING man_quad_M5 180.0 ADD_BLIP_FOR_COORD -12.2064 -1117.8765 7.0705 goto_blip_M5 // audio stuff audio_status_M5 = 0 //slot_status_M5 = 0 audio_pointer_M5 = 0 // start audio $audio_text_label_M5[0] = &MAN5_AA audio_sound_label_M5[0]= SOUND_MAN5_AA audio_speaker_M5[0] = scplayer $audio_text_label_M5[1] = &MAN5_AB audio_sound_label_M5[1]= SOUND_MAN5_AB audio_speaker_M5[1] = scplayer $audio_text_label_M5[2] = &MAN5_AC audio_sound_label_M5[2]= SOUND_MAN5_AC audio_speaker_M5[2] = md_M5 // car banter $audio_text_label_M5[3] = &MAN5_BA audio_sound_label_M5[3]= SOUND_MAN5_BA audio_speaker_M5[3] = md_M5 $audio_text_label_M5[4] = &MAN5_BB audio_sound_label_M5[4]= SOUND_MAN5_BB audio_speaker_M5[4] = scplayer $audio_text_label_M5[5] = &MAN5_BC audio_sound_label_M5[5]= SOUND_MAN5_BC audio_speaker_M5[5] = md_M5 $audio_text_label_M5[6] = &MAN5_BD audio_sound_label_M5[6]= SOUND_MAN5_BD audio_speaker_M5[6] = scplayer $audio_text_label_M5[7] = &MAN5_BE audio_sound_label_M5[7]= SOUND_MAN5_BE audio_speaker_M5[7] = scplayer $audio_text_label_M5[8] = &MAN5_BF audio_sound_label_M5[8]= SOUND_MAN5_BF audio_speaker_M5[8] = scplayer $audio_text_label_M5[9] = &MAN5_BG audio_sound_label_M5[9]= SOUND_MAN5_BG audio_speaker_M5[9] = md_M5 $audio_text_label_M5[10] = &MAN5_BH audio_sound_label_M5[10]= SOUND_MAN5_BH audio_speaker_M5[10] = scplayer $audio_text_label_M5[11] = &MAN5_BJ audio_sound_label_M5[11]= SOUND_MAN5_BJ audio_speaker_M5[11] = scplayer $audio_text_label_M5[12] = &MAN5_BK audio_sound_label_M5[12]= SOUND_MAN5_BK audio_speaker_M5[12] = scplayer $audio_text_label_M5[13] = &MAN5_BL audio_sound_label_M5[13]= SOUND_MAN5_BL audio_speaker_M5[13] = scplayer $audio_text_label_M5[14] = &MAN5_BM audio_sound_label_M5[14]= SOUND_MAN5_BM audio_speaker_M5[14] = scplayer $audio_text_label_M5[15] = &MAN5_BN audio_sound_label_M5[15]= SOUND_MAN5_BN audio_speaker_M5[15] = md_M5 // approach interview $audio_text_label_M5[16] = &MAN5_CA audio_sound_label_M5[16]= SOUND_MAN5_CA audio_speaker_M5[16] = scplayer $audio_text_label_M5[17] = &MAN5_CB audio_sound_label_M5[17]= SOUND_MAN5_CB audio_speaker_M5[17] = scplayer // cutscene $audio_text_label_M5[18] = &MAN5_DA audio_sound_label_M5[18]= SOUND_MAN5_DA audio_speaker_M5[18] = md_M5 $audio_text_label_M5[19] = &MAN5_DB audio_sound_label_M5[19]= SOUND_MAN5_DB audio_speaker_M5[19] = md_M5 $audio_text_label_M5[20] = &MAN5_DC audio_sound_label_M5[20]= SOUND_MAN5_DC audio_speaker_M5[20] = md_M5 $audio_text_label_M5[21] = &MAN5_DD audio_sound_label_M5[21]= SOUND_MAN5_DD audio_speaker_M5[21] = md_M5 $audio_text_label_M5[22] = &MAN5_EA audio_sound_label_M5[22]= SOUND_MAN5_EA audio_speaker_M5[22] = scplayer $audio_text_label_M5[23] = &MAN5_EB audio_sound_label_M5[23]= SOUND_MAN5_EB audio_speaker_M5[23] = scplayer SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF DO_FADE 0 FADE_IN md_text_status_M5 = 0 man_status_M5 = 0 interview_status_M5 = 0 mission_passed_M5 = 0 TIMERB = 0 PRINT_NOW MAN5_G0 7500 1 // ################ player and madd dogg going to marker // ################ LVAR_INT visible_area_M5 mission_mansion5_MAIN_getting_to_og: WAIT 0 IF NOT IS_CHAR_DEAD md_M5 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_mansion5_PASSED ELSE IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_W IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer p_vehicle_M5 IF IS_CHAR_IN_CAR md_M5 p_vehicle_M5 SET_CAR_COORDINATES p_vehicle_M5 -127.1875 -1260.7383 2.0469 ENDIF ENDIF ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_2D scplayer -12.2064 -1117.8765 60.0 60.0 FALSE GET_CHAR_COORDINATES md_M5 x y z GET_DISTANCE_BETWEEN_COORDS_2D -12.2064 -1117.8765 x y distance IF distance < 75.0 CLEAR_MISSION_AUDIO 1 MARK_CAR_AS_NO_LONGER_NEEDED man_bullet_M5 //MARK_CAR_AS_NO_LONGER_NEEDED man_quad_M5 MARK_MODEL_AS_NO_LONGER_NEEDED BFINJECT MARK_MODEL_AS_NO_LONGER_NEEDED QUAD DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON // player IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -13.4832 -1139.6417 7.0664 ELSE SET_CHAR_COORDINATES scplayer -13.4832 -1139.6417 7.0664 ENDIF SET_CHAR_HEADING scplayer 347.9809 // md IF NOT IS_CHAR_DEAD md_M5 REMOVE_CHAR_FROM_GROUP md_M5 IF IS_CHAR_IN_ANY_CAR md_M5 WARP_CHAR_FROM_CAR_TO_COORD md_M5 -11.4883 -1140.9708 6.8764 ELSE SET_CHAR_COORDINATES md_M5 -11.4883 -1140.9708 6.8764 ENDIF SET_CHAR_HEADING md_M5 359.6364 ENDIF GOTO mission_mansion5_CUT_interview ELSE IF md_text_status_M5 < 2 md_text_status_M5 = 2 ENDIF GOSUB mission_mansion5_SUB_md_text ENDIF ELSE GOSUB mission_mansion5_SUB_md_blip GOSUB mission_mansion5_SUB_md_text GOSUB mission_mansion5_SUB_man_tidy GOSUB mission_mansion5_SUB_interview_setup IF TIMERB > 8000 GOSUB mission_mansion5_AUDIO_dialogue ENDIF ENDIF // interior check GET_AREA_VISIBLE visible_area_M5 IF NOT visible_area_M5 = 0 CLEAR_PRINTS // GET_POSITION_OF_ENTRY_EXIT_CHAR_USED scplayer x y z heading // GET_CLOSEST_CHAR_NODE x y z ped_node_X_M5 ped_node_Y_M5 ped_node_Z_M5 FREEZE_CHAR_POSITION md_M5 TRUE REMOVE_BLIP goto_blip_M5 REMOVE_BLIP md_blip_M5 REMOVE_CHAR_FROM_GROUP md_M5 GOTO mission_mansion5_MAIN_md_interior ENDIF ELSE fail_text_flag_M5 = 1 $fail_text_M5 = MAN5_F0 GOTO mission_mansion5_FAILED ENDIF GOTO mission_mansion5_MAIN_getting_to_og LVAR_INT md_blip_status_M5 p_vehicle_M5 mission_mansion5_SUB_md_blip: SWITCH md_blip_status_M5 CASE 0 IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer p_vehicle_M5 IF IS_CHAR_IN_CAR md_M5 p_vehicle_M5 IF trip_skip_M5 = 1 SET_UP_SKIP -126.6673 -1260.8041 2.0469 280.0 ENDIF REMOVE_BLIP md_blip_M5 md_blip_status_M5 ++ ENDIF ENDIF BREAK CASE 1 IF NOT IS_CHAR_IN_ANY_CAR md_M5 CLEAR_SKIP ADD_BLIP_FOR_CHAR md_M5 md_blip_M5 SET_BLIP_AS_FRIENDLY md_blip_M5 TRUE CHANGE_BLIP_DISPLAY md_blip_M5 BLIP_ONLY md_blip_status_M5 -- ENDIF BREAK ENDSWITCH RETURN LVAR_INT md_text_status_M5 mission_mansion5_SUB_md_text: SWITCH md_text_status_M5 CASE 0 GET_CHAR_COORDINATES scplayer player_x player_y player_z GET_CHAR_COORDINATES md_M5 x y z GET_DISTANCE_BETWEEN_COORDS_2D player_x player_y x y distance IF distance > 75.0 PRINT_NOW MAN5_G1 8000 1 TIMERA = 0 md_text_status_M5 ++ ENDIF BREAK CASE 1 IF TIMERA > 20000 md_text_status_M5 -- ENDIF BREAK CASE 2 PRINT_NOW MAN5_G2 8000 1 TIMERA = 0 md_text_status_M5 ++ BREAK CASE 3 IF TIMERA > 20000 md_text_status_M5 = 0 ENDIF BREAK ENDSWITCH RETURN mission_mansion5_SUB_man_tidy: IF man_status_M5 = 0 GET_CHAR_COORDINATES scplayer player_x player_y player_z IF NOT IS_CAR_DEAD man_bullet_M5 GET_CAR_COORDINATES man_bullet_M5 x y z GET_DISTANCE_BETWEEN_COORDS_2D player_x player_y x y distance IF distance > 150.0 MARK_CAR_AS_NO_LONGER_NEEDED man_bullet_M5 MARK_MODEL_AS_NO_LONGER_NEEDED BFINJECT man_status_M5 ++ ENDIF ENDIF ENDIF RETURN LVAR_INT interview_status_M5 mission_mansion5_SUB_interview_setup: SWITCH interview_status_M5 CASE 0 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -12.2064 -1117.8765 250.0 250.0 FALSE // og loc LOAD_SPECIAL_CHARACTER 2 OGLOC REQUEST_MODEL SBFYRI // newsreader? REQUEST_MODEL NEWSVAN REQUEST_MODEL VORTEX interview_status_M5 ++ ENDIF BREAK CASE 1 IF NOT HAS_SPECIAL_CHARACTER_LOADED 2 OR NOT HAS_MODEL_LOADED SBFYRI OR NOT HAS_MODEL_LOADED NEWSVAN OR NOT HAS_MODEL_LOADED VORTEX BREAK ELSE interview_status_M5 ++ ENDIF CASE 2 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -12.2064 -1117.8765 150.0 150.0 FALSE // og CREATE_CHAR PEDTYPE_SPECIAL SPECIAL02 -6.4990 -1109.1108 6.5441 og_M5 SET_CHAR_HEADING og_M5 333.1959 FREEZE_CHAR_POSITION og_M5 TRUE SET_CHAR_PROOFS og_M5 TRUE TRUE TRUE TRUE TRUE SET_CHAR_DECISION_MAKER og_M5 empty_dm_M5 SET_CHAR_NEVER_TARGETTED og_M5 TRUE SET_CHAR_CANT_BE_DRAGGED_OUT og_M5 TRUE // reporter CREATE_CHAR PEDTYPE_MISSION1 SBFYRI -7.1740 -1108.2 6.4475 reporter_M5 SET_CHAR_HEADING reporter_M5 210.4687 FREEZE_CHAR_POSITION reporter_M5 TRUE SET_CHAR_PROOFS reporter_M5 TRUE TRUE TRUE TRUE TRUE // newsvan CREATE_CAR NEWSVAN -12.3019 -1108.9266 6.8370 newsvan_M5 SET_CAR_HEADING newsvan_M5 153.1079 FREEZE_CAR_POSITION newsvan_M5 TRUE CHANGE_CAR_COLOUR newsvan_M5 1 1 SET_CAR_PROOFS newsvan_M5 TRUE TRUE TRUE TRUE TRUE // vortex CREATE_CAR VORTEX -7.4398 -1116.8502 7.0583 p_vortex_M5 SET_CAR_HEADING p_vortex_M5 278.5895 FREEZE_CAR_POSITION p_vortex_M5 TRUE CHANGE_CAR_COLOUR p_vortex_M5 1 1 SET_CAR_PROOFS p_vortex_M5 TRUE TRUE TRUE TRUE TRUE CREATE_CAR VORTEX -4.8620 -1120.4532 7.0799 md_vortex_M5 SET_CAR_HEADING md_vortex_M5 266.0038 FREEZE_CAR_POSITION md_vortex_M5 TRUE CHANGE_CAR_COLOUR md_vortex_M5 1 1 SET_CAR_PROOFS md_vortex_M5 TRUE TRUE TRUE TRUE TRUE CREATE_CAR VORTEX -7.0309 -1111.9088 6.7260 og_vortex_M5 SET_CAR_HEADING og_vortex_M5 269.4002 FREEZE_CAR_POSITION og_vortex_M5 TRUE CHANGE_CAR_COLOUR og_vortex_M5 8 0 SET_CAR_PROOFS og_vortex_M5 TRUE TRUE TRUE TRUE TRUE interview_status_M5 ++ ENDIF BREAK ENDSWITCH RETURN LVAR_FLOAT ped_node_X_M5 ped_node_Y_M5 ped_node_Z_M5 mission_mansion5_MAIN_md_interior: WAIT 0 IF NOT IS_CHAR_DEAD md_M5 GET_CHAR_AREA_VISIBLE scplayer visible_area_M5 IF visible_area_M5 = 0 FREEZE_CHAR_POSITION md_M5 FALSE SET_CHAR_NEVER_LEAVES_GROUP md_M5 TRUE SET_GROUP_MEMBER players_group_M5 md_M5 ADD_BLIP_FOR_CHAR md_M5 md_blip_M5 SET_BLIP_AS_FRIENDLY md_blip_M5 TRUE CHANGE_BLIP_DISPLAY md_blip_M5 BLIP_ONLY ADD_BLIP_FOR_COORD -12.2064 -1117.8765 7.0705 goto_blip_M5 GOTO mission_mansion5_MAIN_getting_to_og ENDIF ELSE // just in for safety reasons fail_text_flag_M5 = 1 $fail_text_M5 = MAN5_F0 GOTO mission_mansion5_FAILED ENDIF GOTO mission_mansion5_MAIN_md_interior // ################ cutscene of og being interviewed // ################ LVAR_INT reporter_M5 newsvan_M5 mission_mansion5_CUT_interview: DISPLAY_RADAR 2 // PATHING OFF // while loops sets up the interview scene incase it wasnt loaded WHILE interview_status_M5 < 3 WAIT 0 GOSUB mission_mansion5_SUB_interview_setup ENDWHILE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 DELETE_CAR man_bullet_M5 REQUEST_MODEL MARQUIS REQUEST_MODEL REEFER REQUEST_MODEL WATERJUMPX2 REQUEST_CAR_RECORDING 700 // og vortex REQUEST_CAR_RECORDING 701 // md vortex WHILE NOT HAS_MODEL_LOADED MARQUIS OR NOT HAS_MODEL_LOADED REEFER OR NOT HAS_MODEL_LOADED WATERJUMPX2 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 700 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 701 WAIT 0 ENDWHILE // everyone was frozen to stop the player breaking the cutscene IF NOT IS_CHAR_DEAD og_M5 FREEZE_CHAR_POSITION og_M5 FALSE ENDIF IF NOT IS_CHAR_DEAD reporter_M5 FREEZE_CHAR_POSITION reporter_M5 FALSE ENDIF IF NOT IS_CAR_DEAD newsvan_M5 FREEZE_CAR_POSITION newsvan_M5 FALSE ENDIF IF NOT IS_CAR_DEAD p_vortex_M5 FREEZE_CAR_POSITION p_vortex_M5 FALSE ENDIF IF NOT IS_CAR_DEAD md_vortex_M5 FREEZE_CAR_POSITION md_vortex_M5 FALSE ENDIF IF NOT IS_CAR_DEAD og_vortex_M5 FREEZE_CAR_POSITION og_vortex_M5 FALSE ENDIF // trip skip IF trip_skip_M5 = 0 trip_skip_M5 ++ ENDIF SET_FIXED_CAMERA_POSITION -5.0753 -1108.2650 7.9567 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -6.0040 -1108.6302 7.8925 JUMP_CUT cutscene_status_M5 = 0 CLEAR_AREA -12.3019 -1108.9266 6.8370 500.0 TRUE CLEAR_SKIP audio_status_M5 = 6 audio_pointer_M5 = 18 DO_FADE 0 FADE_IN SKIP_CUTSCENE_START // og just talking TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 GOSUB mission_mansion5_AUDIO_dialogue ENDWHILE CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_SET_VECTOR_TRACK -6.0040 -1108.6302 7.8925 -5.5642 -1108.8347 7.8925 2000 TRUE IF NOT IS_CHAR_DEAD og_M5 AND NOT IS_CHAR_DEAD md_M5 AND NOT IS_CHAR_DEAD reporter_M5 TASK_TURN_CHAR_TO_FACE_CHAR og_M5 md_M5 TASK_TURN_CHAR_TO_FACE_CHAR reporter_M5 md_M5 ENDIF TIMERA = 0 WHILE TIMERA < 1800 WAIT 0 GOSUB mission_mansion5_AUDIO_dialogue ENDWHILE // getting in the vortex // player sequence IF NOT IS_CAR_DEAD p_vortex_M5 OPEN_SEQUENCE_TASK sequence_M5 TASK_GO_STRAIGHT_TO_COORD -1 -8.0333 -1118.5197 7.0531 PEDMOVE_RUN -2 TASK_ENTER_CAR_AS_DRIVER -1 p_vortex_M5 -2 CLOSE_SEQUENCE_TASK sequence_M5 PERFORM_SEQUENCE_TASK scplayer sequence_M5 CLEAR_SEQUENCE_TASK sequence_M5 ENDIF // md sequence IF NOT IS_CHAR_DEAD md_M5 AND NOT IS_CAR_DEAD md_vortex_M5 OPEN_SEQUENCE_TASK sequence_M5 TASK_GO_STRAIGHT_TO_COORD -1 -4.9313 -1122.0544 7.0188 PEDMOVE_RUN -2 TASK_ENTER_CAR_AS_DRIVER -1 md_vortex_M5 -2 CLOSE_SEQUENCE_TASK sequence_M5 PERFORM_SEQUENCE_TASK md_M5 sequence_M5 CLEAR_SEQUENCE_TASK sequence_M5 ENDIF TIMERA = 0 WHILE TIMERA < 250 WAIT 0 GOSUB mission_mansion5_AUDIO_dialogue ENDWHILE // md sequence IF NOT IS_CHAR_DEAD og_M5 AND NOT IS_CAR_DEAD og_vortex_M5 TASK_ENTER_CAR_AS_DRIVER og_M5 og_vortex_M5 -2 ENDIF pointer_M5 = 0 WHILE pointer_M5 = 0 WAIT 0 IF NOT IS_CHAR_DEAD og_M5 AND NOT IS_CAR_DEAD og_vortex_M5 IF IS_CHAR_IN_CAR og_M5 og_vortex_M5 pointer_M5 = 1 SET_CAR_FORWARD_SPEED og_vortex_M5 8.0 ENDIF ENDIF GOSUB mission_mansion5_AUDIO_dialogue ENDWHILE GET_ACTIVE_CAMERA_COORDINATES cam_pos_X_M5 cam_pos_Y_M5 cam_pos_Z_M5 GET_ACTIVE_CAMERA_POINT_AT cam_look_X_M5 cam_look_Y_M5 cam_look_Z_M5 CAMERA_RESET_NEW_SCRIPTABLES SET_FIXED_CAMERA_POSITION cam_pos_X_M5 cam_pos_Y_M5 cam_pos_Z_M5 0.0 0.0 0.0 POINT_CAMERA_AT_POINT cam_look_X_M5 cam_look_Y_M5 cam_look_Z_M5 JUMP_CUT TIMERA = 0 TIMERB = 0 pointer_M5 = 0 WHILE TIMERA < 4500 WAIT 0 cam_pos_X_M5 += 0.0085 cam_pos_Y_M5 -= 0.05 cam_look_X_M5 += 0.0085 cam_look_Y_M5 -= 0.05 SET_FIXED_CAMERA_POSITION cam_pos_X_M5 cam_pos_Y_M5 cam_pos_Z_M5 0.0 0.0 0.0 POINT_CAMERA_AT_POINT cam_look_X_M5 cam_look_Y_M5 cam_look_Z_M5 JUMP_CUT IF TIMERB > 800 AND pointer_M5 = 0 IF NOT IS_CAR_DEAD og_vortex_M5 SET_CAR_FORWARD_SPEED og_vortex_M5 0.0 SET_CAR_COORDINATES og_vortex_M5 -15.1910 -1107.9696 7.0385 SET_CAR_HEADING og_vortex_M5 345.9100 pointer_M5 ++ ENDIF ENDIF GOSUB mission_mansion5_AUDIO_dialogue ENDWHILE TIMERA = 0 WHILE TIMERA < 1800 WAIT 0 GOSUB mission_mansion5_AUDIO_dialogue ENDWHILE cutscene_status_M5 = 1 SKIP_CUTSCENE_END // audio CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 $audio_text_label_M5[0] = &MAN5_FA audio_sound_label_M5[0]= SOUND_MAN5_FA $audio_text_label_M5[1] = &MAN5_FB audio_sound_label_M5[1]= SOUND_MAN5_FB $audio_text_label_M5[2] = &MAN5_FC audio_sound_label_M5[2]= SOUND_MAN5_FC $audio_text_label_M5[3] = &MAN5_FD audio_sound_label_M5[3]= SOUND_MAN5_FD $audio_text_label_M5[4] = &MAN5_FE audio_sound_label_M5[4]= SOUND_MAN5_FE $audio_text_label_M5[5] = &MAN5_FF audio_sound_label_M5[5]= SOUND_MAN5_FF $audio_text_label_M5[6] = &MAN5_FG audio_sound_label_M5[6]= SOUND_MAN5_FG $audio_text_label_M5[7] = &MAN5_FH audio_sound_label_M5[7]= SOUND_MAN5_FH $audio_text_label_M5[8] = &MAN5_FJ audio_sound_label_M5[8]= SOUND_MAN5_FJ audio_status_M5 = 8 audio_pointer_M5 = 0 IF cutscene_status_M5 = 0 DO_FADE 0 FADE_OUT // og IF NOT IS_CHAR_DEAD og_M5 AND NOT IS_CAR_DEAD og_vortex_M5 IF NOT IS_CHAR_IN_CAR og_M5 og_vortex_M5 CLEAR_CHAR_TASKS og_M5 WARP_CHAR_INTO_CAR og_M5 og_vortex_M5 ENDIF ENDIF // md IF NOT IS_CHAR_DEAD md_M5 AND NOT IS_CAR_DEAD md_vortex_M5 IF NOT IS_CHAR_IN_CAR md_M5 md_vortex_M5 CLEAR_CHAR_TASKS md_M5 WARP_CHAR_INTO_CAR md_M5 md_vortex_M5 ENDIF ENDIF // player IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CAR_DEAD p_vortex_M5 IF NOT IS_CHAR_IN_CAR scplayer p_vortex_M5 CLEAR_CHAR_TASKS scplayer WARP_CHAR_INTO_CAR scplayer p_vortex_M5 ENDIF ENDIF CAMERA_RESET_NEW_SCRIPTABLES DO_FADE 0 FADE_IN ENDIF PRINT_NOW MAN5_G4 8000 1 SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON CHECKPOINT_SAVE 99 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER IF NOT IS_CHAR_DEAD reporter_M5 FREEZE_CHAR_POSITION reporter_M5 FALSE SET_CHAR_PROOFS reporter_M5 FALSE FALSE FALSE FALSE FALSE MARK_CHAR_AS_NO_LONGER_NEEDED reporter_M5 ENDIF IF NOT IS_CAR_DEAD newsvan_M5 FREEZE_CAR_POSITION newsvan_M5 FALSE SET_CAR_PROOFS newsvan_M5 FALSE FALSE FALSE FALSE FALSE MARK_CAR_AS_NO_LONGER_NEEDED newsvan_M5 ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED SBFYRI MARK_MODEL_AS_NO_LONGER_NEEDED NEWSVAN IF NOT IS_CAR_DEAD og_vortex_M5 AND NOT IS_CAR_DEAD md_vortex_M5 SET_CAR_PROOFS og_vortex_M5 FALSE FALSE FALSE TRUE FALSE SET_CAR_PROOFS md_vortex_M5 FALSE FALSE FALSE TRUE FALSE SYNC_WATER START_PLAYBACK_RECORDED_CAR og_vortex_M5 700 START_PLAYBACK_RECORDED_CAR md_vortex_M5 701 REMOVE_BLIP goto_blip_M5 REMOVE_BLIP md_blip_M5 ADD_BLIP_FOR_CAR og_vortex_M5 og_blip_M5 ADD_BLIP_FOR_CAR md_vortex_M5 md_blip_M5 SET_BLIP_AS_FRIENDLY md_blip_M5 TRUE ENDIF IF NOT IS_CHAR_DEAD og_M5 AND NOT IS_CHAR_DEAD md_M5 AND NOT IS_CAR_DEAD p_vortex_M5 SET_CHAR_PROOFS og_M5 FALSE FALSE FALSE TRUE FALSE SET_CHAR_PROOFS md_M5 FALSE FALSE FALSE TRUE FALSE SET_CAR_PROOFS p_vortex_M5 FALSE FALSE FALSE FALSE FALSE ENDIF LVAR_INT boats_M5[8] waterjump_M5 CREATE_CAR MARQUIS 64.6248 -1577.0203 1.0 boats_M5[0] SET_CAR_HEADING boats_M5[0] 120.3362 ANCHOR_BOAT boats_M5[0] TRUE CREATE_CAR MARQUIS 33.6099 -1568.4618 1.0 boats_M5[1] SET_CAR_HEADING boats_M5[1] 284.2679 ANCHOR_BOAT boats_M5[1] TRUE CREATE_CAR REEFER 44.5020 -1623.9836 1.0 boats_M5[2] SET_CAR_HEADING boats_M5[2] 75.0 ANCHOR_BOAT boats_M5[2] TRUE CREATE_CAR MARQUIS 27.4441 -1654.8044 1.0 boats_M5[3] SET_CAR_HEADING boats_M5[3] 60.0 ANCHOR_BOAT boats_M5[3] TRUE CREATE_CAR MARQUIS 65.1404 -1664.8699 1.0 boats_M5[4] SET_CAR_HEADING boats_M5[4] 95.0 ANCHOR_BOAT boats_M5[4] TRUE CREATE_CAR REEFER 53.4007 -1694.9565 1.0 boats_M5[5] SET_CAR_HEADING boats_M5[5] 231.9938 ANCHOR_BOAT boats_M5[5] TRUE CREATE_CAR REEFER 33.4799 -1697.4623 1.0 boats_M5[6] SET_CAR_HEADING boats_M5[6] 106.8489 ANCHOR_BOAT boats_M5[6] TRUE CREATE_CAR MARQUIS 57.1376 -1767.3013 1.0 boats_M5[7] SET_CAR_HEADING boats_M5[7] 286.5185 ANCHOR_BOAT boats_M5[7] TRUE CREATE_OBJECT_NO_OFFSET WATERJUMPX2 137.9184 -1895.0603 0.9 waterjump_M5 SET_OBJECT_HEADING waterjump_M5 235.0 // recording stuff md_status_M5 = 0 og_status_M5 = 0 TIMERA = 0 CHECKPOINT_SAVE 99 mission_mansion5_MAIN_vortex_chase: WAIT 0 IF NOT IS_CHAR_DEAD md_M5 IF NOT IS_CHAR_DEAD og_M5 GET_CHAR_COORDINATES scplayer player_x player_y player_z GOSUB mission_mansion5_SUB_md_vortex_speed GOSUB mission_mansion5_SUB_og_vortex_speed GET_CHAR_COORDINATES og_M5 x y z GET_DISTANCE_BETWEEN_COORDS_2D x y player_x player_y distance IF distance >= 240.0 fail_text_flag_M5 = 1 $fail_text_M5 = MAN5_F2 GOTO mission_mansion5_FAILED ENDIF // check if players on the pier IF IS_CHAR_IN_AREA_3D scplayer 820.3243 -1918.4197 11.8624 852.5646 -1894.7251 13.0 FALSE GOTO mission_mansion5_CUT_on_pier ENDIF GOSUB mission_mansion5_AUDIO_dialogue ELSE fail_text_flag_M5 = 1 $fail_text_M5 = MAN5_F3 GOTO mission_mansion5_FAILED ENDIF ELSE fail_text_flag_M5 = 1 $fail_text_M5 = MAN5_F0 GOTO mission_mansion5_FAILED ENDIF GOTO mission_mansion5_MAIN_vortex_chase // ################ cutscene on pier // ################ mission_mansion5_CUT_on_pier: DO_FADE 0 FADE_OUT SET_RADIO_CHANNEL RS_OFF SET_PED_DENSITY_MULTIPLIER 0.3 // player IF NOT IS_CAR_DEAD p_vortex_M5 SET_CAR_HEALTH p_vortex_M5 2000 SET_CAR_FORWARD_SPEED p_vortex_M5 0.0 SET_CAR_COORDINATES p_vortex_M5 824.9831 -1843.1456 11.6654 SET_CAR_HEADING p_vortex_M5 192.0245 ENDIF // md IF NOT IS_CAR_DEAD md_vortex_M5 IF IS_PLAYBACK_GOING_ON_FOR_CAR md_vortex_M5 STOP_PLAYBACK_RECORDED_CAR md_vortex_M5 ENDIF SET_CAR_FORWARD_SPEED md_vortex_M5 0.0 SET_CAR_COORDINATES md_vortex_M5 846.0862 -1842.4211 11.6367 SET_CAR_HEADING md_vortex_M5 170.9990 REMOVE_BLIP md_blip_M5 ENDIF // og IF NOT IS_CAR_DEAD og_vortex_M5 IF IS_PLAYBACK_GOING_ON_FOR_CAR og_vortex_M5 STOP_PLAYBACK_RECORDED_CAR og_vortex_M5 ENDIF SET_CAR_FORWARD_SPEED og_vortex_M5 0.0 SET_CAR_COORDINATES og_vortex_M5 832.5709 -2045.7067 11.8672 SET_CAR_HEADING og_vortex_M5 180.0 REMOVE_BLIP og_blip_M5 ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED reporter_M5 pointer_M5 = 0 WHILE pointer_M5 < 8 MARK_CAR_AS_NO_LONGER_NEEDED boats_M5[pointer_M5] pointer_M5 ++ ENDWHILE MARK_OBJECT_AS_NO_LONGER_NEEDED waterjump_M5 MARK_MODEL_AS_NO_LONGER_NEEDED MARQUIS MARK_MODEL_AS_NO_LONGER_NEEDED REEFER MARK_MODEL_AS_NO_LONGER_NEEDED WATERJUMPX2 REMOVE_CAR_RECORDING 700 REMOVE_CAR_RECORDING 701 REQUEST_MODEL KART REQUEST_CAR_RECORDING 702 REQUEST_CAR_RECORDING 703 REQUEST_CAR_RECORDING 704 REQUEST_CAR_RECORDING 705 WHILE NOT HAS_MODEL_LOADED KART OR NOT HAS_CAR_RECORDING_BEEN_LOADED 702 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 703 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 704 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 705 WAIT 0 ENDWHILE CREATE_CAR KART 832.4061 -2046.0251 11.8672 p_kart_M5 SET_CAR_HEADING p_kart_M5 343.6256 CREATE_CAR KART 835.5082 -2047.9781 11.8672 md_kart_M5 SET_CAR_HEADING md_kart_M5 0.0 CREATE_CAR KART 839.2866 -2050.3223 11.8672 og_kart_M5 SET_CAR_HEADING og_kart_M5 21.8433 FREEZE_CAR_POSITION og_kart_M5 TRUE //SET_FIXED_CAMERA_POSITION 839.6265 -2056.3994 12.9973 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 839.5886 -2055.4185 12.8065 JUMP_CUT cam_angle_M5 = 15.0 cam_radius_M5 = 10.0 cam_Z_M5 = 15.0 cam_L_X_M5 = 835.5082 cam_L_Y_M5 = -2047.9781 cam_L_Z_M5 = 11.8672 GOSUB mission_mansion5_SUB_rotate_camera IF NOT IS_CAR_DEAD og_vortex_M5 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR og_vortex_M5 START_PLAYBACK_RECORDED_CAR og_vortex_M5 702 ENDIF ENDIF SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_IN TIMERA = 0 WHILE TIMERA < 1000 WAIT 0 GOSUB mission_mansion5_SUB_rotate_camera ENDWHILE cutscene_status_M5 = 0 SKIP_CUTSCENE_START TIMERA = 0 WHILE TIMERA < 3400 WAIT 0 GOSUB mission_mansion5_SUB_rotate_camera ENDWHILE // SET_FIXED_CAMERA_POSITION 840.8270 -2048.5452 12.7166 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 840.1081 -2049.2051 12.4981 JUMP_CUT // player IF NOT IS_CAR_DEAD p_vortex_M5 SET_CAR_COORDINATES p_vortex_M5 827.2987 -2036.8510 11.8672 SET_CAR_HEADING p_vortex_M5 176.4310 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 828.7999 -2036.7567 11.8672 ELSE SET_CHAR_COORDINATES scplayer 828.7999 -2036.7567 11.8672 ENDIF SET_CHAR_HEADING scplayer 129.8786 // md IF NOT IS_CAR_DEAD md_vortex_M5 SET_CAR_COORDINATES md_vortex_M5 846.0646 -2039.7368 11.8672 SET_CAR_HEADING md_vortex_M5 162.7406 ENDIF IF NOT IS_CHAR_DEAD md_M5 IF IS_CHAR_IN_ANY_CAR md_M5 WARP_CHAR_FROM_CAR_TO_COORD md_M5 844.8756 -2038.4553 11.8672 ELSE SET_CHAR_COORDINATES md_M5 844.8756 -2038.4553 11.8672 ENDIF SET_CHAR_HEADING md_M5 132.7607 ENDIF pointer_M5 = 0 WHILE pointer_M5 = 0 WAIT 0 IF NOT IS_CAR_DEAD og_vortex_M5 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR og_vortex_M5 pointer_M5 = 1 ENDIF ENDIF GOSUB mission_mansion5_SUB_rotate_camera ENDWHILE //SET_FIXED_CAMERA_POSITION 831.6954 -2041.4028 13.5385 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT 832.1078 -2042.2263 13.1490 JUMP_CUT IF NOT IS_CHAR_DEAD og_M5 AND NOT IS_CAR_DEAD og_kart_M5 OPEN_SEQUENCE_TASK sequence_M5 TASK_LEAVE_ANY_CAR -1 TASK_ENTER_CAR_AS_DRIVER -1 og_kart_M5 -2 CLOSE_SEQUENCE_TASK sequence_M5 PERFORM_SEQUENCE_TASK og_M5 sequence_M5 CLEAR_SEQUENCE_TASK sequence_M5 ENDIF pointer_M5 = 0 WHILE pointer_M5 = 0 WAIT 0 IF NOT IS_CHAR_DEAD og_M5 AND NOT IS_CAR_DEAD og_kart_M5 IF IS_CHAR_IN_CAR og_M5 og_kart_M5 pointer_M5 = 1 ENDIF ENDIF GOSUB mission_mansion5_SUB_rotate_camera ENDWHILE IF NOT IS_CAR_DEAD og_kart_M5 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR og_kart_M5 START_PLAYBACK_RECORDED_CAR og_kart_M5 703 ENDIF ENDIF IF NOT IS_CAR_DEAD p_kart_M5 TASK_ENTER_CAR_AS_DRIVER scplayer p_kart_M5 -2 ENDIF IF NOT IS_CHAR_DEAD md_M5 AND NOT IS_CAR_DEAD md_kart_M5 TASK_ENTER_CAR_AS_DRIVER md_M5 md_kart_M5 -2 ENDIF TIMERA = 0 WHILE TIMERA < 4500 WAIT 0 GOSUB mission_mansion5_SUB_rotate_camera ENDWHILE cutscene_status_M5 = 1 SKIP_CUTSCENE_END IF cutscene_status_M5 = 0 DO_FADE 0 FADE_OUT ENDIF // player IF NOT IS_CAR_DEAD p_kart_M5 IF NOT IS_CHAR_IN_CAR scplayer p_kart_M5 IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 0.0 0.0 0.0 ENDIF WARP_CHAR_INTO_CAR scplayer p_kart_M5 ENDIF ENDIF IF NOT IS_CAR_DEAD p_vortex_M5 SET_CAR_COORDINATES p_vortex_M5 827.2987 -2036.8510 11.8672 SET_CAR_HEADING p_vortex_M5 176.4310 ENDIF // md IF NOT IS_CHAR_DEAD md_M5 AND NOT IS_CAR_DEAD md_kart_M5 IF NOT IS_CHAR_IN_CAR md_M5 md_kart_M5 IF IS_CHAR_IN_ANY_CAR md_M5 WARP_CHAR_FROM_CAR_TO_COORD md_M5 0.0 0.0 0.0 ENDIF WARP_CHAR_INTO_CAR md_M5 md_kart_M5 ENDIF ENDIF IF NOT IS_CAR_DEAD md_vortex_M5 SET_CAR_COORDINATES md_vortex_M5 846.0646 -2039.7368 11.8672 SET_CAR_HEADING md_vortex_M5 162.7406 ENDIF // og IF NOT IS_CHAR_DEAD og_M5 AND NOT IS_CAR_DEAD og_kart_M5 FREEZE_CAR_POSITION og_kart_M5 FALSE IF NOT IS_CHAR_IN_CAR og_M5 og_kart_M5 IF IS_CHAR_IN_ANY_CAR og_M5 WARP_CHAR_FROM_CAR_TO_COORD og_M5 0.0 0.0 0.0 ENDIF WARP_CHAR_INTO_CAR og_M5 og_kart_M5 ENDIF ENDIF IF NOT IS_CAR_DEAD og_vortex_M5 IF IS_PLAYBACK_GOING_ON_FOR_CAR og_vortex_M5 SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_CAR og_vortex_M5 ENDIF ENDIF md_status_M5 = 0 og_status_M5 = 0 og_rec_total_M5 = 0.0 ambient_status_M5 = 0 van_status_M5 = 0 IF NOT IS_CAR_DEAD og_kart_M5 IF IS_PLAYBACK_GOING_ON_FOR_CAR og_kart_M5 STOP_PLAYBACK_RECORDED_CAR og_kart_M5 ENDIF START_PLAYBACK_RECORDED_CAR og_kart_M5 704 ADD_BLIP_FOR_CAR og_kart_M5 og_blip_M5 ENDIF IF NOT IS_CAR_DEAD md_kart_M5 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR md_kart_M5 START_PLAYBACK_RECORDED_CAR md_kart_M5 705 ENDIF ADD_BLIP_FOR_CAR md_kart_M5 md_blip_M5 SET_BLIP_AS_FRIENDLY md_blip_M5 TRUE ENDIF audio_status_M5 = 10 audio_pointer_M5 = 4 DO_FADE 0 FADE_IN SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER PRINT_NOW MAN5_G5 8000 1 TIMERA = 0 mission_mansion5_MAIN_kart_chase: WAIT 0 IF NOT IS_CHAR_DEAD md_M5 IF NOT IS_CHAR_DEAD og_M5 GET_CHAR_COORDINATES scplayer player_x player_y player_z GOSUB mission_mansion5_SUB_md_kart_speed GOSUB mission_mansion5_SUB_og_kart_speed GOSUB mission_mansion5_SUB_ambient_controller GOSUB mission_mansion5_SUB_guard_vans IF mission_passed_M5 = 1 GOTO mission_mansion5_MAIN_final_cut ELSE IF NOT IS_CHAR_DEAD og_M5 GET_CHAR_COORDINATES og_M5 x y z GET_DISTANCE_BETWEEN_COORDS_2D x y player_x player_y distance IF distance >= 130.0 fail_text_flag_M5 = 1 $fail_text_M5 = MAN5_F2 GOTO mission_mansion5_FAILED ENDIF ENDIF ENDIF GOSUB mission_mansion5_AUDIO_dialogue ELSE fail_text_flag_M5 = 1 $fail_text_M5 = MAN5_F3 GOTO mission_mansion5_FAILED ENDIF ELSE fail_text_flag_M5 = 1 $fail_text_M5 = MAN5_F0 GOTO mission_mansion5_FAILED ENDIF GOTO mission_mansion5_MAIN_kart_chase LVAR_INT players_vehicle_M5 mission_mansion5_MAIN_final_cut: DO_FADE 0 FADE_OUT SET_RADIO_CHANNEL RS_OFF REMOVE_BLIP md_blip_M5 REMOVE_BLIP og_blip_M5 IF IS_CHAR_IN_ANY_CAR scplayer GET_CAR_CHAR_IS_USING scplayer players_vehicle_M5 SET_CAR_FORWARD_SPEED players_vehicle_M5 0.0 ENDIF IF NOT IS_CHAR_DEAD md_M5 MARK_CHAR_AS_NO_LONGER_NEEDED md_M5 MARK_MODEL_AS_NO_LONGER_NEEDED VBMYCR ENDIF IF NOT IS_CAR_DEAD md_kart_M5 IF IS_PLAYBACK_GOING_ON_FOR_CAR md_kart_M5 STOP_PLAYBACK_RECORDED_CAR md_kart_M5 ENDIF MARK_CAR_AS_NO_LONGER_NEEDED md_kart_M5 ENDIF SET_FIXED_CAMERA_POSITION 1045.3710 -1221.8405 18.9362 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1046.2407 -1221.4474 18.6378 JUMP_CUT CLEAR_AREA_OF_CARS 1071.5037 -1195.5579 18.6451 1044.9419 -1242.4774 14.9051 IF NOT IS_CAR_DEAD og_kart_M5 IF IS_PLAYBACK_GOING_ON_FOR_CAR og_kart_M5 UNPAUSE_PLAYBACK_RECORDED_CAR og_kart_M5 SET_PLAYBACK_SPEED og_kart_M5 1.0 ENDIF ENDIF SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SKIP_CUTSCENE_START pointer_M5 = 0 WHILE pointer_M5 = 0 WAIT 0 IF NOT IS_CAR_DEAD og_kart_M5 IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR og_kart_M5 pointer_M5 = 1 ENDIF ELSE pointer_M5 = 1 ENDIF ENDWHILE SKIP_CUTSCENE_END DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // **************************************** START OF OUTRO CUTSCENE SET_AREA_VISIBLE 3 MAKE_PLAYER_SAFE_FOR_CUTSCENE player1 //switching the streaming off whilst the visible area is set to 3 is causing a crase on windows phone //SWITCH_STREAMING OFF LOAD_CUTSCENE BHILL5b WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 // **************************************** END OF OUTRO CUTSCENE LOAD_SCENE 1180.7324 -1159.1143 22.8578 REQUEST_COLLISION 1180.7324 -1159.1143 IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1180.7324 -1159.1143 22.8578 ELSE SET_CHAR_COORDINATES_NO_OFFSET scplayer 1180.7324 -1159.1143 22.8578 ENDIF SET_CHAR_HEADING scplayer 25.4307 TIMERA = 0 WHILE TIMERA < 400 WAIT 0 ENDWHILE DO_FADE 500 FADE_IN SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER GOTO mission_mansion5_PASSED // ################ car recording controllers // ################ LVAR_FLOAT X1_M5 Y1_M5 X2_M5 Y2_M5 X3_M5 Y3_M5 distance1_M5 distance2_M5 distance3_M5 og_rec_total_M5 LVAR_INT md_status_M5 LVAR_FLOAT md_rec_speed_M5 mission_mansion5_SUB_md_vortex_speed: // IF NOT IS_CAR_DEAD md_vortex_M5 // // GET_CAR_COORDINATES md_vortex_M5 x y z // // GET_DISTANCE_BETWEEN_COORDS_2D player_x player_y x y distance2_M5 // // IF distance2_M5 < 4.0 // speed_inc_M5 = -0.17 // ELSE // GET_OFFSET_FROM_CAR_IN_WORLD_COORDS md_vortex_M5 0.0 8.0 0.0 X1_M5 Y1_M5 z // GET_DISTANCE_BETWEEN_COORDS_2D player_x player_y X1_M5 Y1_M5 distance1_M5 // speed_inc_M5 = distance2_M5 - distance1_M5 // speed_inc_M5 /= 60.0 // ENDIF // // md_rec_speed_M5 += speed_inc_M5 // // IF md_rec_speed_M5 < 0.0 // md_rec_speed_M5 = 0.0 // ELSE // IF md_rec_speed_M5 > 1.0 // md_rec_speed_M5 = 1.0 // ENDIF // ENDIF // // SET_PLAYBACK_SPEED md_vortex_M5 md_rec_speed_M5 // // ENDIF IF NOT IS_CAR_DEAD md_vortex_M5 AND NOT IS_CHAR_DEAD md_M5 IF md_status_M5 = 0 IF IS_PLAYBACK_GOING_ON_FOR_CAR md_vortex_M5 IF LOCATE_CHAR_IN_CAR_CHAR_2D md_M5 scplayer 6.0 6.0 FALSE md_rec_speed_M5 -= 0.2 ELSE GET_OFFSET_FROM_CAR_IN_WORLD_COORDS md_vortex_M5 0.0 4.0 0.0 X1_M5 Y1_M5 z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS md_vortex_M5 2.0 2.0 0.0 X2_M5 Y2_M5 z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS md_vortex_M5 -2.0 2.0 0.0 X3_M5 Y3_M5 z GET_DISTANCE_BETWEEN_COORDS_2D X1_M5 Y1_M5 player_x player_y distance1_M5 distance1_M5 *= 2.0 GET_DISTANCE_BETWEEN_COORDS_2D X2_M5 Y2_M5 player_x player_y distance2_M5 GET_DISTANCE_BETWEEN_COORDS_2D X3_M5 Y3_M5 player_x player_y distance3_M5 speed_inc_M5 = distance1_M5 - distance2_M5 speed_inc_M5 -= distance3_M5 speed_inc_M5 /= 300.0 speed_inc_M5 *= -1.0 md_rec_speed_M5 += speed_inc_M5 ENDIF IF md_rec_speed_M5 > 1.0 md_rec_speed_M5 = 1.0 ELSE IF md_rec_speed_M5 < 0.0 md_rec_speed_M5 = 0.0 ENDIF ENDIF //VIEW_FLOAT_VARIABLE md_rec_speed_M5 md_vortex_speed_M5 SET_PLAYBACK_SPEED md_vortex_M5 md_rec_speed_M5 ELSE SET_CAR_FORWARD_SPEED md_vortex_M5 0.0 md_status_M5 = -1 // finished recording ENDIF ENDIF ENDIF RETURN LVAR_INT og_status_M5 LVAR_FLOAT og_rec_speed_M5 mission_mansion5_SUB_og_vortex_speed: IF NOT IS_CAR_DEAD og_vortex_M5 IF og_status_M5 = 0 IF IS_PLAYBACK_GOING_ON_FOR_CAR og_vortex_M5 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS og_vortex_M5 0.0 -18.0 0.0 X1_M5 Y1_M5 z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS og_vortex_M5 2.0 -11.0 0.0 X2_M5 Y2_M5 z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS og_vortex_M5 -2.0 -11.0 0.0 X3_M5 Y3_M5 z GET_DISTANCE_BETWEEN_COORDS_2D X1_M5 Y1_M5 player_x player_y distance1_M5 distance1_M5 *= 2.0 GET_DISTANCE_BETWEEN_COORDS_2D X2_M5 Y2_M5 player_x player_y distance2_M5 GET_DISTANCE_BETWEEN_COORDS_2D X3_M5 Y3_M5 player_x player_y distance3_M5 speed_inc_M5 = distance1_M5 - distance2_M5 speed_inc_M5 -= distance3_M5 speed_inc_M5 /= 300.0 og_rec_speed_M5 += speed_inc_M5 IF og_rec_speed_M5 > 1.4 og_rec_speed_M5 = 1.4 ELSE IF og_rec_speed_M5 < 0.9 og_rec_speed_M5 = 0.9 ENDIF ENDIF //VIEW_FLOAT_VARIABLE og_rec_speed_M5 og_vortex_speed_M5 SET_PLAYBACK_SPEED og_vortex_M5 og_rec_speed_M5 ELSE SET_CAR_FORWARD_SPEED og_vortex_M5 0.0 og_status_M5 = -1 // finished recording ENDIF ENDIF ENDIF RETURN // KARTS mission_mansion5_SUB_md_kart_speed: // IF NOT IS_CAR_DEAD md_kart_M5 // // GET_CAR_COORDINATES md_kart_M5 x y z // // GET_DISTANCE_BETWEEN_COORDS_2D player_x player_y x y distance2_M5 // // IF distance2_M5 < 4.0 // speed_inc_M5 = -0.15 // ELSE // GET_OFFSET_FROM_CAR_IN_WORLD_COORDS md_kart_M5 0.0 8.0 0.0 X1_M5 Y1_M5 z // GET_DISTANCE_BETWEEN_COORDS_2D player_x player_y X1_M5 Y1_M5 distance1_M5 // speed_inc_M5 = distance2_M5 - distance1_M5 // speed_inc_M5 /= 60.0 // ENDIF // // md_rec_speed_M5 += speed_inc_M5 // // IF md_rec_speed_M5 < 0.0 // md_rec_speed_M5 = 0.0 // ELSE // IF md_rec_speed_M5 > 1.0 // md_rec_speed_M5 = 1.0 // ENDIF // ENDIF // // SET_PLAYBACK_SPEED md_kart_M5 md_rec_speed_M5 // // ENDIF // IF NOT IS_CAR_DEAD md_kart_M5 AND NOT IS_CHAR_DEAD md_M5 IF md_status_M5 = 0 IF IS_PLAYBACK_GOING_ON_FOR_CAR md_kart_M5 IF LOCATE_CHAR_IN_CAR_CHAR_2D md_M5 scplayer 6.0 6.0 FALSE md_rec_speed_M5 -= 0.2 ELSE GET_OFFSET_FROM_CAR_IN_WORLD_COORDS md_kart_M5 0.0 4.0 0.0 X1_M5 Y1_M5 z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS md_kart_M5 2.0 2.0 0.0 X2_M5 Y2_M5 z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS md_kart_M5 -2.0 2.0 0.0 X3_M5 Y3_M5 z GET_DISTANCE_BETWEEN_COORDS_2D X1_M5 Y1_M5 player_x player_y distance1_M5 distance1_M5 *= 2.0 GET_DISTANCE_BETWEEN_COORDS_2D X2_M5 Y2_M5 player_x player_y distance2_M5 GET_DISTANCE_BETWEEN_COORDS_2D X3_M5 Y3_M5 player_x player_y distance3_M5 speed_inc_M5 = distance1_M5 - distance2_M5 speed_inc_M5 -= distance3_M5 speed_inc_M5 /= 150.0 speed_inc_M5 *= -1.0 md_rec_speed_M5 += speed_inc_M5 ENDIF IF md_rec_speed_M5 > 1.05 md_rec_speed_M5 = 1.05 ELSE IF md_rec_speed_M5 < 0.0 md_rec_speed_M5 = 0.0 ENDIF ENDIF //VIEW_FLOAT_VARIABLE md_rec_speed_M5 md_kart_speed_M5 SET_PLAYBACK_SPEED md_kart_M5 md_rec_speed_M5 ELSE SET_CAR_FORWARD_SPEED md_kart_M5 0.0 md_status_M5 = -1 // finished recording ENDIF ENDIF ENDIF RETURN mission_mansion5_SUB_og_kart_speed: IF NOT IS_CAR_DEAD og_kart_M5 IF og_status_M5 = 0 IF IS_PLAYBACK_GOING_ON_FOR_CAR og_kart_M5 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS og_kart_M5 0.0 -18.0 0.0 X1_M5 Y1_M5 z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS og_kart_M5 2.0 -11.0 0.0 X2_M5 Y2_M5 z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS og_kart_M5 -2.0 -11.0 0.0 X3_M5 Y3_M5 z GET_DISTANCE_BETWEEN_COORDS_2D X1_M5 Y1_M5 player_x player_y distance1_M5 distance1_M5 *= 2.0 GET_DISTANCE_BETWEEN_COORDS_2D X2_M5 Y2_M5 player_x player_y distance2_M5 GET_DISTANCE_BETWEEN_COORDS_2D X3_M5 Y3_M5 player_x player_y distance3_M5 speed_inc_M5 = distance1_M5 - distance2_M5 speed_inc_M5 -= distance3_M5 speed_inc_M5 /= 300.0 og_rec_speed_M5 += speed_inc_M5 IF og_rec_speed_M5 > 1.2 og_rec_speed_M5 = 1.2 ELSE IF og_rec_speed_M5 < 0.6 og_rec_speed_M5 = 0.6 ENDIF ENDIF SET_PLAYBACK_SPEED og_kart_M5 og_rec_speed_M5 ELSE SET_CAR_FORWARD_SPEED og_kart_M5 0.0 og_kart_M5 = -1 // finished recording ENDIF ENDIF ENDIF RETURN LVAR_INT camera_status_M5 LVAR_FLOAT cam_X_M5 cam_Y_M5 cam_Z_M5 cam_angle_M5 cam_radius_M5 LVAR_FLOAT cam_L_X_M5 cam_L_Y_M5 cam_L_Z_M5 LVAR_FLOAT new_x_M5 new_y_M5 LVAR_FLOAT cos_angle_M5 sin_angle_M5 mission_mansion5_SUB_rotate_camera: SWITCH camera_status_M5 CASE 0 IF cam_angle_M5 < 255.0 cam_angle_M5 += 0.35 // IF cam_angle_M5 >= 360.0 // cam_angle_M5 -= 360.0 // ENDIF //cam_Z_M5 -= 0.006 //cam_L_Y_M5 += 0.01 //cam_radius_M5 += 0.01 ENDIF BREAK ENDSWITCH COS cam_angle_M5 cos_angle_M5 SIN cam_angle_M5 sin_angle_M5 new_x_M5 = cam_radius_M5 * cos_angle_M5 new_y_M5 = cam_radius_M5 * sin_angle_M5 cam_X_M5 = cam_L_X_M5 + new_x_M5 cam_Y_M5 = cam_L_Y_M5 + new_y_M5 SET_FIXED_CAMERA_POSITION cam_X_M5 cam_Y_M5 cam_Z_M5 0.0 0.0 0.0 POINT_CAMERA_AT_POINT cam_L_X_M5 cam_L_Y_M5 cam_L_Z_M5 JUMP_CUT RETURN // ################ ambient kart stuff // ################ LVAR_INT ambient_status_M5 LVAR_INT a_runner_M5 a_hotdog_M5 mission_mansion5_SUB_ambient_controller: IF NOT IS_CHAR_DEAD og_M5 SWITCH ambient_status_M5 CASE 0 IF LOCATE_CHAR_IN_CAR_2D og_M5 748.4916 -1812.3613 2.0 2.0 FALSE IF NOT IS_LINE_OF_SIGHT_CLEAR player_x player_y player_z 748.4916 -1812.3613 12.0297 TRUE FALSE FALSE FALSE FALSE // ENDIF REQUEST_MODEL HOTDOG ambient_status_M5 ++ ENDIF BREAK CASE 1 IF LOCATE_CHAR_IN_CAR_2D og_M5 662.4983 -1791.8445 2.0 2.0 FALSE IF HAS_MODEL_LOADED HOTDOG IF NOT IS_LINE_OF_SIGHT_CLEAR player_x player_y player_z 532.9616 -1768.6559 4.6980 TRUE FALSE FALSE FALSE FALSE CREATE_CAR HOTDOG 532.9616 -1768.6559 4.6980 a_hotdog_M5 SET_CAR_HEADING a_hotdog_M5 270.0 ENDIF ENDIF //MARK_CHAR_AS_NO_LONGER_NEEDED a_runner_M5 // ped that runs across path SWITCH_ROADS_OFF 226.1833 -1631.0071 40.0 546.4532 -1423.9912 12.0 SWITCH_ROADS_OFF 510.3661 -1431.6556 10.0 645.8312 -1387.3116 20.0 SWITCH_ROADS_OFF 646.6142 -1389.0164 10.0 620.9656 -1310.4675 20.0 SWITCH_ROADS_OFF 620.9656 -1310.4675 10.0 947.8110 -1335.0125 20.0 SWITCH_ROADS_OFF 948.2631 -1335.4061 10.0 934.2357 -1229.9386 20.0 SWITCH_ROADS_OFF 804.0421 -1329.1908 10.0 789.3583 -1159.0081 24.0 ambient_status_M5 ++ ENDIF BREAK CASE 2 IF LOCATE_CHAR_IN_CAR_2D og_M5 394.1295 -1801.1277 2.0 2.0 FALSE MARK_MODEL_AS_NO_LONGER_NEEDED HOTDOG MARK_CAR_AS_NO_LONGER_NEEDED a_hotdog_M5 ambient_status_M5 ++ ENDIF BREAK CASE 3 IF LOCATE_CHAR_IN_CAR_2D og_M5 1030.7583 -1223.5798 2.0 2.0 FALSE PAUSE_PLAYBACK_RECORDED_CAR og_kart_M5 // mission passed ambient_status_M5 ++ ELSE BREAK ENDIF CASE 4 IF NOT IS_CHAR_DEAD og_M5 GET_CHAR_COORDINATES og_M5 x y z GET_DISTANCE_BETWEEN_COORDS_2D x y player_x player_y distance IF distance <= 40.0 mission_passed_M5 = 1 ENDIF ENDIF BREAK ENDSWITCH ENDIF RETURN LVAR_INT van_M5[2] van_status_M5 mission_mansion5_SUB_guard_vans: SWITCH van_status_M5 CASE 0 GET_DISTANCE_BETWEEN_COORDS_2D player_x player_y 1064.5472 -1218.0834 distance IF distance < 250.0 REQUEST_MODEL BURRITO van_status_M5 ++ ENDIF BREAK CASE 1 IF HAS_MODEL_LOADED BURRITO GET_DISTANCE_BETWEEN_COORDS_2D player_x player_y 1064.5472 -1218.0834 distance IF distance < 80.0 CREATE_CAR BURRITO 1064.5472 -1218.0834 15.9280 van_M5[0] SET_CAR_HEADING van_M5[0] 191.9481 CREATE_CAR BURRITO 1050.5997 -1222.6919 15.8704 van_M5[1] SET_CAR_HEADING van_M5[1] 111.6362 van_status_M5 ++ ENDIF ENDIF BREAK ENDSWITCH RETURN // ################ audio dialogue // ################ LVAR_INT audio_status_M5 audio_pointer_M5 audio_sound_label_M5[24] audio_speaker_M5[24] LVAR_TEXT_LABEL audio_text_label_M5[24] LVAR_INT soundlabel_M5 LVAR_TEXT_LABEL textlabel_M5 mission_mansion5_AUDIO_dialogue: // VIEW_INTEGER_VARIABLE SLOT_status[0] SLOT_status[0] // VIEW_INTEGER_VARIABLE SLOT_status[1] SLOT_status[1] SWITCH audio_status_M5 // start dialogue CASE 0 IF audio_pointer_M5 < 3 load_sample = audio_sound_label_M5[audio_pointer_M5] $load_text = $audio_text_label_M5[audio_pointer_M5] START_NEW_SCRIPT audio_load_and_play 2 100 audio_speaker_M5[audio_pointer_M5] audio_pointer_M5 ++ audio_status_M5 ++ //TIMERA = 0 ELSE audio_status_M5 = 2 //SLOT_status[preload_slot] = -3 BREAK ENDIF CASE 1 IF SLOT_status[preload_slot] = -3 audio_status_M5 = 0 SLOT_status[preload_slot] = -4 ENDIF BREAK // in car dialogue CASE 2 IF interview_status_M5 = 3 IF LOCATE_CHAR_ANY_MEANS_2D scplayer -12.2064 -1117.8765 120.0 120.0 FALSE audio_status_M5 += 2 audio_pointer_M5 = 16 BREAK ENDIF ENDIF IF md_blip_status_M5 = 1 IF audio_pointer_M5 < 16 load_sample = audio_sound_label_M5[audio_pointer_M5] $load_text = $audio_text_label_M5[audio_pointer_M5] START_NEW_SCRIPT audio_load_and_play 2 100 audio_speaker_M5[audio_pointer_M5] audio_pointer_M5 ++ audio_status_M5 ++ //TIMERA = 0 ENDIF ELSE IF NOT audio_pointer_M5 = 3 IF NOT SLOT_status[0] < 0 SLOT_status[0] = -2 ENDIF IF NOT SLOT_status[0] < 0 SLOT_status[1] = -2 ENDIF //audio_pointer_M5 -- ENDIF BREAK ENDIF CASE 3 IF SLOT_status[preload_slot] = -3 audio_status_M5 = 2 SLOT_status[preload_slot] = -4 ENDIF BREAK // in car dialogue CASE 4 IF audio_pointer_M5 < 18 load_sample = audio_sound_label_M5[audio_pointer_M5] $load_text = $audio_text_label_M5[audio_pointer_M5] START_NEW_SCRIPT audio_load_and_play 2 100 audio_speaker_M5[audio_pointer_M5] audio_pointer_M5 ++ audio_status_M5 ++ //TIMERA = 0 ENDIF CASE 5 IF SLOT_status[preload_slot] = -3 audio_status_M5 = 4 SLOT_status[preload_slot] = -4 ENDIF BREAK // cutscene dialogue CASE 6 IF audio_pointer_M5 < 24 load_sample = audio_sound_label_M5[audio_pointer_M5] $load_text = $audio_text_label_M5[audio_pointer_M5] START_NEW_SCRIPT audio_load_and_play 2 100 audio_speaker_M5[audio_pointer_M5] audio_pointer_M5 ++ audio_status_M5 ++ //TIMERA = 0 ENDIF CASE 7 IF SLOT_status[preload_slot] = -3 audio_status_M5 = 6 SLOT_status[preload_slot] = -4 ENDIF BREAK // hovercraft CASE 8 IF audio_pointer_M5 < 4 IF TIMERA > 8000 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer og_M5 60.0 60.0 FALSE load_sample = audio_sound_label_M5[audio_pointer_M5] $load_text = $audio_text_label_M5[audio_pointer_M5] START_NEW_SCRIPT audio_load_and_play 2 100 og_M5 audio_pointer_M5 ++ audio_status_M5 ++ TIMERA = 0 ELSE TIMERA = 7000 ENDIF ENDIF ENDIF CASE 9 IF SLOT_status[preload_slot] = -3 audio_status_M5 = 8 SLOT_status[preload_slot] = -4 ENDIF BREAK // go karts CASE 10 IF audio_pointer_M5 < 9 IF TIMERA > 8000 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer og_M5 50.0 50.0 FALSE load_sample = audio_sound_label_M5[audio_pointer_M5] $load_text = $audio_text_label_M5[audio_pointer_M5] START_NEW_SCRIPT audio_load_and_play 2 100 og_M5 audio_pointer_M5 ++ audio_status_M5 ++ TIMERA = 0 ELSE TIMERA = 7000 ENDIF ENDIF ENDIF CASE 11 IF SLOT_status[preload_slot] = -3 audio_status_M5 = 10 SLOT_status[preload_slot] = -4 ENDIF BREAK ENDSWITCH RETURN // ########################### // ## // ## END OF MISSION SCRIPTS // ## // ########################### mission_mansion5_PASSED: flag_mansion_mission_counter ++ //Used to terminate this mission loop in the main script. These varibles will be set up in the main.sc REGISTER_MISSION_PASSED ( MAN_5 ) //Used in the stats PLAYER_MADE_PROGRESS 1 // go kart and hovercraft generators SWITCH_CAR_GENERATOR car_gen_go_kart[0] 101 SWITCH_CAR_GENERATOR car_gen_go_kart[1] 101 SWITCH_CAR_GENERATOR car_gen_go_kart[2] 101 SWITCH_CAR_GENERATOR car_gen_go_kart[3] 101 SWITCH_CAR_GENERATOR car_gen_go_kart[4] 101 SWITCH_CAR_GENERATOR car_gen_go_kart[5] 101 SWITCH_CAR_GENERATOR car_gen_go_kart[6] 101 SWITCH_CAR_GENERATOR car_gen_go_kart[7] 101 SWITCH_CAR_GENERATOR car_gen_go_kart[8] 101 SWITCH_CAR_GENERATOR car_gen_go_kart[9] 101 SWITCH_CAR_GENERATOR car_gen_go_kart[10] 101 SWITCH_CAR_GENERATOR car_gen_go_kart[11] 101 SWITCH_CAR_GENERATOR car_gen_go_kart[12] 101 SWITCH_CAR_GENERATOR car_gen_go_kart[13] 101 SWITCH_CAR_GENERATOR car_gen_go_kart[14] 101 SWITCH_CAR_GENERATOR car_gen_hover[0] 101 SWITCH_CAR_GENERATOR car_gen_hover[1] 101 SWITCH_CAR_GENERATOR car_gen_hover[2] 101 SWITCH_CAR_GENERATOR car_gen_hover[3] 101 SWITCH_CAR_GENERATOR car_gen_hover[4] 101 SWITCH_CAR_GENERATOR car_gen_hover[5] 101 // imy stuff PRINT_WITH_NUMBER_BIG ( M_PASSR ) 4 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 50 //amount of respect CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 // stuff for craig REMOVE_BLIP mansion_contact_blip RETURN mission_mansion5_FAILED: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" IF fail_text_flag_M5 = 1 PRINT_NOW $fail_text_M5 5000 1 ENDIF RETURN mission_mansion5_CLEANUP: DISPLAY_RADAR 3 // PATHING ON IF IS_PLAYER_PLAYING player1 SET_PLAYER_GROUP_RECRUITMENT player1 TRUE SET_SCRIPT_LIMIT_TO_GANG_SIZE 99 ENDIF START_NEW_SCRIPT terminate_audio_controller SET_PED_DENSITY_MULTIPLIER 1.0 SWITCH_ROADS_BACK_TO_ORIGINAL 226.1833 -1631.0071 40.0 546.4532 -1423.9912 12.0 SWITCH_ROADS_BACK_TO_ORIGINAL 510.3661 -1431.6556 10.0 645.8312 -1387.3116 20.0 SWITCH_ROADS_BACK_TO_ORIGINAL 646.6142 -1389.0164 10.0 620.9656 -1310.4675 20.0 SWITCH_ROADS_BACK_TO_ORIGINAL 620.9656 -1310.4675 10.0 947.8110 -1335.0125 20.0 SWITCH_ROADS_BACK_TO_ORIGINAL 948.2631 -1335.4061 10.0 934.2357 -1229.9386 20.0 SWITCH_ROADS_BACK_TO_ORIGINAL 804.0421 -1329.1908 10.0 789.3583 -1159.0081 24.0 REMOVE_BLIP goto_blip_M5 REMOVE_BLIP md_blip_M5 REMOVE_BLIP og_blip_M5 IF NOT IS_CHAR_DEAD md_M5 REMOVE_CHAR_FROM_GROUP md_M5 ENDIF REMOVE_CHAR_ELEGANTLY md_M5 REMOVE_CHAR_ELEGANTLY og_M5 UNLOAD_SPECIAL_CHARACTER 1 // madd UNLOAD_SPECIAL_CHARACTER 2 // og MARK_CHAR_AS_NO_LONGER_NEEDED reporter_M5 IF NOT IS_CHAR_DEAD reporter_M5 FREEZE_CHAR_POSITION reporter_M5 FALSE SET_CHAR_PROOFS reporter_M5 FALSE FALSE FALSE FALSE FALSE ENDIF MARK_CAR_AS_NO_LONGER_NEEDED newsvan_M5 IF NOT IS_CAR_DEAD newsvan_M5 FREEZE_CAR_POSITION newsvan_M5 FALSE SET_CAR_PROOFS newsvan_M5 FALSE FALSE FALSE FALSE FALSE ENDIF MARK_CAR_AS_NO_LONGER_NEEDED p_vortex_M5 IF NOT IS_CAR_DEAD md_vortex_M5 IF IS_PLAYBACK_GOING_ON_FOR_CAR md_vortex_M5 STOP_PLAYBACK_RECORDED_CAR md_vortex_M5 ENDIF ENDIF MARK_CAR_AS_NO_LONGER_NEEDED md_vortex_M5 IF NOT IS_CAR_DEAD og_vortex_M5 IF IS_PLAYBACK_GOING_ON_FOR_CAR og_vortex_M5 STOP_PLAYBACK_RECORDED_CAR og_vortex_M5 ENDIF ENDIF MARK_CAR_AS_NO_LONGER_NEEDED og_vortex_M5 MARK_CAR_AS_NO_LONGER_NEEDED p_kart_M5 IF NOT IS_CAR_DEAD md_kart_M5 IF IS_PLAYBACK_GOING_ON_FOR_CAR md_kart_M5 STOP_PLAYBACK_RECORDED_CAR md_kart_M5 ENDIF ENDIF MARK_CAR_AS_NO_LONGER_NEEDED md_kart_M5 IF NOT IS_CAR_DEAD og_kart_M5 IF IS_PLAYBACK_GOING_ON_FOR_CAR og_kart_M5 STOP_PLAYBACK_RECORDED_CAR og_kart_M5 ENDIF ENDIF MARK_CAR_AS_NO_LONGER_NEEDED og_kart_M5 MARK_CAR_AS_NO_LONGER_NEEDED man_bullet_M5 //MARK_CAR_AS_NO_LONGER_NEEDED man_quad_M5 MARK_CAR_AS_NO_LONGER_NEEDED a_hotdog_M5 MARK_CAR_AS_NO_LONGER_NEEDED van_M5[0] MARK_CAR_AS_NO_LONGER_NEEDED van_M5[1] pointer_M5 = 0 WHILE pointer_M5 < 8 MARK_CAR_AS_NO_LONGER_NEEDED boats_M5[pointer_M5] pointer_M5 ++ ENDWHILE MARK_OBJECT_AS_NO_LONGER_NEEDED waterjump_M5 MARK_MODEL_AS_NO_LONGER_NEEDED SBFYRI //MARK_MODEL_AS_NO_LONGER_NEEDED VBMYCR MARK_MODEL_AS_NO_LONGER_NEEDED BFINJECT //MARK_MODEL_AS_NO_LONGER_NEEDED QUAD MARK_MODEL_AS_NO_LONGER_NEEDED VORTEX MARK_MODEL_AS_NO_LONGER_NEEDED KART MARK_MODEL_AS_NO_LONGER_NEEDED NEWSVAN MARK_MODEL_AS_NO_LONGER_NEEDED MARQUIS MARK_MODEL_AS_NO_LONGER_NEEDED REEFER MARK_MODEL_AS_NO_LONGER_NEEDED HOTDOG MARK_MODEL_AS_NO_LONGER_NEEDED BURRITO MARK_MODEL_AS_NO_LONGER_NEEDED WATERJUMPX2 flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } /* */ MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // *************************************** Grove 1 ***************************************** // ********************************** Beat Down on B-Dup *********************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME grove1 // Mission start stuff GOSUB mission_start_grove1 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_grove1_failed ENDIF GOSUB mission_cleanup_grove1 MISSION_END { // Variables for mission // general stuff LVAR_INT tough_decisionmaker_grove1 LVAR_INT tough_duck_dm_grove1 LVAR_INT dbup_house_blip_grove1 // players group stuff LVAR_INT player_had_group_warning_grove1 // sweet stuff LVAR_INT sweet_grove1 sweet_blip_grove1 VAR_INT sweets_health_grove1 // This has to be declared as a GLOBAL VAR as it is used in a counter onscreen!! LVAR_INT park_blip_grove1 // bdups house guards LVAR_INT counter_dbup_guards_dead LVAR_INT bdup_guard1_grove1 bdup_guard1_blip_grove1 bdup_guard1_dead_grove1 LVAR_INT bdup_guard2_grove1 bdup_guard2_blip_grove1 bdup_guard2_dead_grove1 LVAR_INT bdup_guard3_grove1 bdup_guard3_blip_grove1 bdup_guard3_dead_grove1 LVAR_INT bdup_guard4_grove1 bdup_guard4_blip_grove1 bdup_guard4_dead_grove1 LVAR_INT bdup_guard5_grove1 bdup_guard5_blip_grove1 bdup_guard5_dead_grove1 guard5_seq_grove1 LVAR_INT bdup_guard6_grove1 bdup_guard6_blip_grove1 bdup_guard6_dead_grove1 guard6_seq_grove1 LVAR_INT bdup_guard7_grove1 bdup_guard7_blip_grove1 bdup_guard7_dead_grove1 guard7_seq_grove1 LVAR_INT bdup_guard8_grove1 bdup_guard8_blip_grove1 bdup_guard8_dead_grove1 guard8_seq_grove1 LVAR_INT flag_kill_player_grove1 // used for when the player is playing the dbup house part LVAR_INT dbup_guys_got_ai_grove1 // used to set dbup and his crew to kill player // big bear LVAR_INT big_bear_grove1 // flag for flying vehicles LVAR_INT flag_has_flying_message_grove1 // flag to say wheather player watched cutscene or not LVAR_INT cut_watched_grove1 // car that is used for checks for cutscenes LVAR_INT car2_grove1 bdup_car_grove1 // gang zone stuff LVAR_INT gang_strenth1_grove1 gang_strenth2_grove1 gang_strenth3_grove1 gang_strenth4_grove1 flag_player_in_area_grove1 LVAR_INT flag_player_taken_terr_grove1 // car check stuff LVAR_INT stored_car_grove1 max_passenger_grove1 passenger_count_grove1 no_of_space_grove1 had_room_message_grove1 // flag to tell player gang war is off LVAR_INT flag_gang_war_off_grove1 LVAR_INT old_house_blip_grove1 dummy_car_grove1 // stored gang war values LVAR_INT stored_nmex_strength_grove1 stored_smex_strength_grove1 // Audio stuff LVAR_INT grove1_index grove1_audio_is_playing grove1_cutscene_flag grove1_chat_switch grove1_audio_chat[17] VAR_TEXT_LABEL $grove1_chat[17] LVAR_INT flag_start_audio1_grove1 flag_start_audio2_grove1 flag_start_audio3_grove1 LVAR_INT flag_print_on_grove1 // used to remove a print after the audio for no space or a plane is done // player gang strenth stuff LVAR_INT player_gang_strenth_grove1 // Sweet audio for room in vehicles LVAR_INT room_audio_playing_grove1 // car wheel check LVAR_INT flag_car_on_wheels_grove1 LVAR_INT guard1_attacking_coord_grove1 guard1_attacking_player_grove1 guard2_attacking_coord_grove1 guard2_attacking_player_grove1 LVAR_INT guard3_attacking_coord_grove1 guard3_attacking_player_grove1 guard4_attacking_coord_grove1 guard4_attacking_player_grove1 LVAR_INT guard5_attacking_coord_grove1 guard5_attacking_player_grove1 guard6_attacking_coord_grove1 guard6_attacking_player_grove1 LVAR_INT guard7_attacking_coord_grove1 guard7_attacking_player_grove1 guard8_attacking_coord_grove1 guard8_attacking_player_grove1 // ************************************* SETS UP THE AUDIO FOR THE MISSIO ************************* grove1_chat_switch: SWITCH grove1_chat_switch CONST_INT GROVE1_CHAT1 0 CONST_INT GROVE1_CHAT2 1 CONST_INT GROVE1_CHAT3 2 CONST_INT GROVE1_CHAT4 3 CASE GROVE1_CHAT1 $grove1_chat[0] = &GRO1_FA //What were you thinking back there, bro? $grove1_chat[1] = &GRO1_FB //I’m tired, man, real tired. $grove1_chat[2] = &GRO1_FC //Tired of putting the work in and still shit don’t get better. $grove1_chat[3] = &GRO1_FD //Tired of seeing my family fall apart. $grove1_chat[4] = &GRO1_FE //Sweet, man, you got more heart than that. $grove1_chat[5] = &GRO1_FF //Sure things are screwed up now, but we fittin’ to turn a corner, man. $grove1_chat[6] = &GRO1_FG //The day is comin’ when the Johnson family will be at the top. $grove1_chat[7] = &GRO1_FH //And it’s coming real soon. $grove1_chat[8] = &GRO1_FJ //I hear you, CJ, you’re there for us, I know that. grove1_audio_chat[0] = SOUND_GRO1_FA //What were you thinking back there, bro? grove1_audio_chat[1] = SOUND_GRO1_FB //I’m tired, man, real tired. grove1_audio_chat[2] = SOUND_GRO1_FC //Tired of putting the work in and still shit don’t get better. grove1_audio_chat[3] = SOUND_GRO1_FD //Tired of seeing my family fall apart. grove1_audio_chat[4] = SOUND_GRO1_FE //Sweet, man, you got more heart than that. grove1_audio_chat[5] = SOUND_GRO1_FF //Sure things are screwed up now, but we fittin’ to turn a corner, man. grove1_audio_chat[6] = SOUND_GRO1_FG //The day is comin’ when the Johnson family will be at the top. grove1_audio_chat[7] = SOUND_GRO1_FH //And it’s coming real soon. grove1_audio_chat[8] = SOUND_GRO1_FJ //I hear you, CJ, you’re there for us, I know that. cell_index_end = 8 BREAK CASE GROVE1_CHAT2 $grove1_chat[0] = &GRO1_JA //Oh man, Glen Park! $grove1_chat[1] = &GRO1_JB //Heart of Kilo Trays country, dude. $grove1_chat[2] = &GRO1_JC //Fuck it, I’m down, and that fool had it coming too long. $grove1_chat[3] = &GRO1_JD //We’ll take the whole neighbourhood apart! $grove1_chat[4] = &GRO1_JE //Word. Let’s roll. grove1_audio_chat[0] = SOUND_GRO1_JA //Oh man, Glen Park! grove1_audio_chat[1] = SOUND_GRO1_JB //Heart of Kilo Trays country, dude. grove1_audio_chat[2] = SOUND_GRO1_JC //Fuck it, I’m down, and that fool had it coming too long. grove1_audio_chat[3] = SOUND_GRO1_JD //We’ll take the whole neighbourhood apart! grove1_audio_chat[4] = SOUND_GRO1_JE //Word. Let’s roll. cell_index_end = 4 BREAK CASE GROVE1_CHAT3 $grove1_chat[0] = &GRO1_LA //That’s the neighbourhood sewn up! $grove1_chat[1] = &GRO1_LB //No sign of B Dup though, dog. $grove1_chat[2] = &GRO1_LC //Yo, check that place over there. $grove1_chat[3] = &GRO1_LD //That’s it, I know it! grove1_audio_chat[0] = SOUND_GRO1_LA //That’s the neighbourhood sewn up! grove1_audio_chat[1] = SOUND_GRO1_LB //No sign of B Dup though, dog. grove1_audio_chat[2] = SOUND_GRO1_LC //Yo, check that place over there. grove1_audio_chat[3] = SOUND_GRO1_LD //That’s it, I know it! cell_index_end = 3 BREAK CASE GROVE1_CHAT4 $grove1_chat[0] = &GRO1_KA //Hit those Ballas hard! $grove1_chat[1] = &GRO1_KB //Johnson boys rollin’ through! grove1_audio_chat[0] = SOUND_GRO1_KA //Hit those Ballas hard! grove1_audio_chat[1] = SOUND_GRO1_KB //Johnson boys rollin’ through! cell_index_end = 1 BREAK ENDSWITCH RETURN // **************************************** Mission Start ********************************** mission_start_grove1: flag_player_on_mission = 1 // gang zone stuff gang_strenth1_grove1 = 50 gang_strenth2_grove1 = 50 gang_strenth3_grove1 = 50 gang_strenth4_grove1 = 50 flag_player_in_area_grove1 = 0 // sweets stuff sweets_health_grove1 = 1000 // players group stuff player_had_group_warning_grove1 = 0 // bdups house guards counter_dbup_guards_dead = 0 bdup_guard1_dead_grove1 = 0 bdup_guard2_dead_grove1 = 0 bdup_guard3_dead_grove1 = 0 bdup_guard4_dead_grove1 = 0 bdup_guard5_dead_grove1 = 0 bdup_guard6_dead_grove1 = 0 bdup_guard7_dead_grove1 = 0 bdup_guard8_dead_grove1 = 0 flag_kill_player_grove1 = 0 dbup_guys_got_ai_grove1 = 0 // flaying vehicle message flag_has_flying_message_grove1 = 0 // flag for watching cut cut_watched_grove1 = 0 // Territory stuff flag_player_taken_terr_grove1 = 0 // car variable stuff max_passenger_grove1 = 0 passenger_count_grove1 = 0 no_of_space_grove1 = 0 had_room_message_grove1 = 0 flag_gang_war_off_grove1 = 0 // audio stuff flag_start_audio1_grove1 = 0 flag_start_audio2_grove1 = 0 flag_start_audio3_grove1 = 0 flag_print_on_grove1 = 0 // gang war stored_nmex_strength_grove1 = 0 stored_smex_strength_grove1 = 0 player_gang_strenth_grove1 = 0 // sweet room message for vehicles room_audio_playing_grove1 = 0 // car wheel check flag_car_on_wheels_grove1 = 0 guard1_attacking_coord_grove1 = 0 guard1_attacking_player_grove1 = 0 guard2_attacking_coord_grove1 = 0 guard2_attacking_player_grove1 = 0 guard3_attacking_coord_grove1 = 0 guard3_attacking_player_grove1 = 0 guard4_attacking_coord_grove1 = 0 guard4_attacking_player_grove1 = 0 guard5_attacking_coord_grove1 = 0 guard5_attacking_player_grove1 = 0 guard6_attacking_coord_grove1 = 0 guard6_attacking_player_grove1 = 0 guard7_attacking_coord_grove1 = 0 guard7_attacking_player_grove1 = 0 guard8_attacking_coord_grove1 = 0 guard8_attacking_player_grove1 = 0 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT GROVE1 // ****************************************START OF CUTSCENE******************************** WAIT 0 SET_AREA_VISIBLE 3 LOAD_CUTSCENE GROVE1A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 // *****************************************END OF CUTSCENE********************************* SET_SCRIPT_LIMIT_TO_GANG_SIZE 5 // stuff to fool compiler GOTO fool_compiler_stuff ADD_BLIP_FOR_COORD 0.0 0.0 0.0 sweet_blip_grove1 OPEN_SEQUENCE_TASK guard5_seq_grove1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 TRUE CLOSE_SEQUENCE_TASK guard5_seq_grove1 OPEN_SEQUENCE_TASK guard6_seq_grove1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 TRUE CLOSE_SEQUENCE_TASK guard6_seq_grove1 OPEN_SEQUENCE_TASK guard7_seq_grove1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 TRUE CLOSE_SEQUENCE_TASK guard7_seq_grove1 OPEN_SEQUENCE_TASK guard8_seq_grove1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 TRUE CLOSE_SEQUENCE_TASK guard8_seq_grove1 fool_compiler_stuff: // Decision Makers LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH tough_decisionmaker_grove1 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH tough_duck_dm_grove1 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE tough_duck_dm_grove1 EVENT_SHOT_FIRED_WHIZZED_BY TASK_SIMPLE_DUCK_WHILE_SHOTS_WHIZZING 0.0 100.0 100.0 100.0 FALSE TRUE LOAD_SPECIAL_CHARACTER 1 SWEET REQUEST_MODEL BALLAS3 REQUEST_MODEL BALLAS1 REQUEST_MODEL AK47 REQUEST_MODEL INFERNUS LOAD_MISSION_AUDIO 2 SOUND_GRO1_GA LOAD_ALL_MODELS_NOW WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_MODEL_LOADED AK47 OR NOT HAS_MODEL_LOADED BALLAS3 OR NOT HAS_MODEL_LOADED BALLAS1 OR NOT HAS_MODEL_LOADED INFERNUS OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer 2497.324 -1684.744 12.44 SET_CHAR_HEADING scplayer 0.0 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT LOAD_SCENE 2497.324 -1684.744 12.44 CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 2496.633 -1684.573 12.435 sweet_grove1 SET_CHAR_HEADING sweet_grove1 0.0 SET_CHAR_DECISION_MAKER sweet_grove1 DM_PED_EMPTY SET_ANIM_GROUP_FOR_CHAR sweet_grove1 gang2 GIVE_WEAPON_TO_CHAR sweet_grove1 WEAPONTYPE_AK47 30000 // set to infinate ammo SET_CHAR_NEVER_TARGETTED sweet_grove1 TRUE SET_CHAR_SUFFERS_CRITICAL_HITS sweet_grove1 FALSE SET_GROUP_FOLLOW_STATUS Players_Group TRUE SET_GROUP_MEMBER Players_Group sweet_grove1 SET_CHAR_ACCURACY sweet_grove1 90 SET_CHAR_HEALTH sweet_grove1 1000 SET_CHAR_MAX_HEALTH sweet_grove1 1000 SET_CHAR_RELATIONSHIP sweet_grove1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 SET_CHAR_PROOFS sweet_grove1 TRUE TRUE TRUE TRUE TRUE SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 TRUE SWITCH_WIDESCREEN OFF SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE NOT GET_FADING_STATUS WAIT 0 // IF IS_CHAR_DEAD sweet_grove1 // PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" // GOTO mission_grove1_failed // ENDIF ENDWHILE SET_PLAYER_CONTROL player1 ON IF IS_CHAR_DEAD sweet_grove1 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ELSE SET_CHAR_PROOFS sweet_grove1 FALSE FALSE FALSE FALSE FALSE ENDIF PRINT_NOW (GM1_18) 8000 1 //"Get to Bdups house!" ADD_BLIP_FOR_COORD 2293.0325 -1795.7672 12.5469 old_house_blip_grove1 blob_flag = 1 TIMERA = 0 grove1_index = 0 grove1_audio_is_playing = 0 grove1_cutscene_flag = 0 grove1_chat_switch = GROVE1_CHAT1 GOSUB grove1_chat_switch room_audio_playing_grove1 = 0 flag_car_on_wheels_grove1 = 0 WHILE NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2293.0325 -1795.7672 12.5469 4.0 4.0 4.0 blob_flag OR NOT IS_GROUP_MEMBER sweet_grove1 Players_Group OR NOT flag_car_on_wheels_grove1 = 1 WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_grove1_passed ENDIF IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer stored_car_grove1 IF NOT IS_CAR_DEAD stored_car_grove1 IF IS_VEHICLE_ON_ALL_WHEELS stored_car_grove1 flag_car_on_wheels_grove1 = 1 ELSE flag_car_on_wheels_grove1 = 0 ENDIF ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2293.0325 -1795.7672 12.5469 4.0 4.0 4.0 FALSE IF IS_GROUP_MEMBER sweet_grove1 Players_Group flag_car_on_wheels_grove1 = 1 ELSE flag_car_on_wheels_grove1 = 0 ENDIF ELSE flag_car_on_wheels_grove1 = 0 ENDIF ENDIF // Starts talking code IF flag_start_audio1_grove1 = 0 IF TIMERA >= 5000 CLEAR_THIS_PRINT (GM1_18) flag_start_audio1_grove1 = 1 ENDIF ENDIF IF flag_start_audio1_grove1 = 1 IF NOT IS_CHAR_DEAD sweet_grove1 IF IS_GROUP_MEMBER sweet_grove1 Players_Group IF LOCATE_CHAR_ANY_MEANS_CHAR_3D sweet_grove1 scplayer 10.0 10.0 8.0 FALSE IF IS_CHAR_ON_FOOT scplayer AND IS_CHAR_ON_FOOT sweet_grove1 GOSUB load_and_play_audio_grove1 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer AND IS_CHAR_IN_ANY_CAR sweet_grove1 GOSUB load_and_play_audio_grove1 ENDIF ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT (GRO1_FA) CLEAR_THIS_PRINT (GRO1_FB) CLEAR_THIS_PRINT (GRO1_FC) CLEAR_THIS_PRINT (GRO1_FD) CLEAR_THIS_PRINT (GRO1_FE) CLEAR_THIS_PRINT (GRO1_FF) CLEAR_THIS_PRINT (GRO1_FG) CLEAR_THIS_PRINT (GRO1_FH) CLEAR_THIS_PRINT (GRO1_FJ) ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" IF player_had_group_warning_grove1 = 1 REMOVE_BLIP sweet_blip_grove1 ENDIF GOTO mission_grove1_failed ENDIF ENDIF IF IS_CHAR_DEAD sweet_grove1 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" IF player_had_group_warning_grove1 = 1 REMOVE_BLIP sweet_blip_grove1 ENDIF GOTO mission_grove1_failed ELSE GET_CHAR_HEALTH sweet_grove1 sweets_health_grove1 sweets_health_grove1 = sweets_health_grove1 / 10 // clear the not enough room print IF flag_print_on_grove1 = 1 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT (GRO1_GA) flag_print_on_grove1 = 0 ENDIF ENDIF IF NOT IS_GROUP_MEMBER sweet_grove1 Players_Group AND player_had_group_warning_grove1 = 0 REMOVE_BLIP old_house_blip_grove1 ADD_BLIP_FOR_CHAR sweet_grove1 sweet_blip_grove1 SET_BLIP_AS_FRIENDLY sweet_blip_grove1 TRUE PRINT_NOW (GM1_2) 8000 1 //"You have left Sweet behind go get him." blob_flag = 0 flag_has_flying_message_grove1 = 0 player_had_group_warning_grove1 = 1 ENDIF IF player_had_group_warning_grove1 = 1 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sweet_grove1 8.0 8.0 FALSE IF NOT IS_CHAR_IN_FLYING_VEHICLE scplayer IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer stored_car_grove1 GET_MAXIMUM_NUMBER_OF_PASSENGERS stored_car_grove1 max_passenger_grove1 GET_NUMBER_OF_PASSENGERS stored_car_grove1 passenger_count_grove1 no_of_space_grove1 = max_passenger_grove1 - passenger_count_grove1 IF no_of_space_grove1 >= 1 SET_GROUP_FOLLOW_STATUS Players_Group TRUE SET_GROUP_MEMBER Players_Group sweet_grove1 REMOVE_BLIP sweet_blip_grove1 ADD_BLIP_FOR_COORD 2293.0325 -1795.7672 12.5469 old_house_blip_grove1 PRINT_NOW (GM1_18) 8000 1 //"Get to Bdups house!" blob_flag = 1 had_room_message_grove1 = 0 player_had_group_warning_grove1 = 0 ELSE IF had_room_message_grove1 = 0 IF HAS_MISSION_AUDIO_FINISHED 1 PLAY_MISSION_AUDIO 2 PRINT_NOW (GRO1_GA) 8000 1 //"Homes there ain't enough room get a bigger vehicle!" START_CHAR_FACIAL_TALK sweet_grove1 999999 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 TRUE ENDIF room_audio_playing_grove1 = 1 flag_print_on_grove1 = 1 had_room_message_grove1 = 1 ELSE IF room_audio_playing_grove1 = 1 IF HAS_MISSION_AUDIO_FINISHED 2 STOP_CHAR_FACIAL_TALK sweet_grove1 CLEAR_THIS_PRINT (GRO1_GA) SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 FALSE room_audio_playing_grove1 = 0 ENDIF ENDIF ENDIF ENDIF ELSE SET_GROUP_FOLLOW_STATUS Players_Group TRUE SET_GROUP_MEMBER Players_Group sweet_grove1 REMOVE_BLIP sweet_blip_grove1 ADD_BLIP_FOR_COORD 2293.0325 -1795.7672 12.5469 old_house_blip_grove1 PRINT_NOW (GM1_18) 8000 1 //"Get to Bdups house!" blob_flag = 1 player_had_group_warning_grove1 = 0 ENDIF ELSE IF flag_has_flying_message_grove1 = 0 IF HAS_MISSION_AUDIO_FINISHED 1 PLAY_MISSION_AUDIO 2 PRINT_NOW (GRO1_GA) 8000 1 //"Homes there ain't enough room get a bigger vehicle!" START_CHAR_FACIAL_TALK sweet_grove1 999999 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 TRUE ENDIF room_audio_playing_grove1 = 1 flag_print_on_grove1 = 1 flag_has_flying_message_grove1 = 1 ELSE IF room_audio_playing_grove1 = 1 IF HAS_MISSION_AUDIO_FINISHED 2 STOP_CHAR_FACIAL_TALK sweet_grove1 CLEAR_THIS_PRINT (GRO1_GA) SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 FALSE room_audio_playing_grove1 = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS REMOVE_BLIP old_house_blip_grove1 SET_PLAYER_CONTROL player1 OFF SET_POLICE_IGNORE_PLAYER player1 ON SET_EVERYONE_IGNORE_PLAYER player1 ON IF NOT IS_CHAR_DEAD sweet_grove1 SET_CHAR_PROOFS sweet_grove1 TRUE TRUE TRUE TRUE TRUE ELSE PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ENDIF SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 IF IS_CHAR_DEAD sweet_grove1 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ENDIF ENDWHILE MAKE_PLAYER_GANG_DISAPPEAR CLEAR_AREA 2294.323 -1797.048 12.586 7.0 TRUE IF NOT IS_CHAR_IN_ANY_CAR scplayer CLEAR_AREA 2294.323 -1797.048 12.586 3.0 TRUE SET_CHAR_COORDINATES scplayer 2294.323 -1797.048 12.586 SET_CHAR_HEADING scplayer 270.0 ELSE STORE_CAR_CHAR_IS_IN scplayer dummy_car_grove1 WARP_CHAR_FROM_CAR_TO_COORD scplayer 2294.323 -1797.048 12.586 WHILE IS_CHAR_IN_ANY_CAR scplayer WAIT 0 IF IS_CHAR_DEAD sweet_grove1 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ENDIF ENDWHILE SET_CHAR_HEADING scplayer 270.0 ENDIF IF NOT IS_CHAR_DEAD sweet_grove1 IF NOT IS_CHAR_IN_ANY_CAR sweet_grove1 CLEAR_AREA 2294.323 -1794.911 12.586 3.0 TRUE CLEAR_CHAR_TASKS_IMMEDIATELY sweet_grove1 SET_CHAR_COORDINATES sweet_grove1 2294.323 -1794.911 12.586 SET_CHAR_HEADING sweet_grove1 270.0 ELSE STORE_CAR_CHAR_IS_IN sweet_grove1 dummy_car_grove1 WARP_CHAR_FROM_CAR_TO_COORD sweet_grove1 2294.323 -1794.911 12.586 WHILE IS_CHAR_IN_ANY_CAR sweet_grove1 WAIT 0 IF IS_CHAR_DEAD sweet_grove1 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ENDIF ENDWHILE SET_CHAR_HEADING sweet_grove1 270.0 ENDIF ELSE PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ENDIF CLEAR_AREA 2294.323 -1797.048 12.586 6.0 TRUE IF DOES_VEHICLE_EXIST dummy_car_grove1 IF NOT IS_CAR_DEAD dummy_car_grove1 CLEAR_AREA 2299.243 -1784.565 12.591 3.0 FALSE SET_CAR_COORDINATES dummy_car_grove1 2299.243 -1784.565 12.591 SET_CAR_HEADING dummy_car_grove1 0.0 ENDIF ENDIF // *********************** CUT SCENE OF PLAYER AND SWEET AT BDUPS OLD PLACE *********************** MAKE_PLAYER_SAFE_FOR_CUTSCENE player1 SET_AREA_VISIBLE 3 LOAD_CUTSCENE GROVE1b WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_AREA_VISIBLE 0 // **************************************** END OF CUT SCENE ************************************** SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT MAKE_PLAYER_GANG_REAPPEAR LOAD_SCENE 2294.323 -1797.048 12.586 SET_FADING_COLOUR 0 0 0 DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD sweet_grove1 SET_CHAR_PROOFS sweet_grove1 FALSE FALSE FALSE FALSE FALSE ELSE PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ENDIF SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 OFF SET_POLICE_IGNORE_PLAYER player1 OFF PRINT_NOW (GM1_1) 5000 1 //"Go to Glen Park." ADD_SPRITE_BLIP_FOR_COORD 1988.316 -1199.675 19.135 RADAR_SPRITE_GANG_G park_blip_grove1 SET_ZONE_GANG_STRENGTH GLN1 GANG_FLAT 40 SET_ZONE_GANG_STRENGTH GLN1 GANG_GROVE 0 GET_ZONE_GANG_STRENGTH GLN1 GANG_NMEX stored_nmex_strength_grove1 GET_ZONE_GANG_STRENGTH GLN1 GANG_SMEX stored_smex_strength_grove1 SET_ZONE_GANG_STRENGTH GLN1 GANG_NMEX 0 SET_ZONE_GANG_STRENGTH GLN1 GANG_SMEX 0 SET_SPECIFIC_ZONE_TO_TRIGGER_GANG_WAR GLN1 SET_WANTED_MULTIPLIER 0.5 SET_GANG_WARS_ACTIVE TRUE CAN_TRIGGER_GANG_WAR_WHEN_ON_A_MISSION TRUE TIMERB = 0 grove1_index = 0 grove1_audio_is_playing = 0 grove1_cutscene_flag = 0 grove1_chat_switch = GROVE1_CHAT2 GOSUB grove1_chat_switch room_audio_playing_grove1 = 0 CHECKPOINT_SAVE 1 WHILE NOT flag_player_in_area_grove1 = 1 OR NOT IS_GROUP_MEMBER sweet_grove1 Players_Group WAIT 0 // mission audio IF flag_start_audio2_grove1 = 0 IF TIMERB >= 5000 CLEAR_THIS_PRINT (GM1_1) flag_start_audio2_grove1 = 1 ENDIF ENDIF IF flag_start_audio2_grove1 = 1 IF NOT IS_CHAR_DEAD sweet_grove1 IF IS_GROUP_MEMBER sweet_grove1 Players_Group IF LOCATE_CHAR_ANY_MEANS_CHAR_3D sweet_grove1 scplayer 10.0 10.0 8.0 FALSE IF IS_CHAR_ON_FOOT scplayer AND IS_CHAR_ON_FOOT sweet_grove1 GOSUB load_and_play_audio_grove1 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer AND IS_CHAR_IN_ANY_CAR sweet_grove1 GOSUB load_and_play_audio_grove1 ENDIF ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT (GRO1_JA) CLEAR_THIS_PRINT (GRO1_JB) CLEAR_THIS_PRINT (GRO1_JC) CLEAR_THIS_PRINT (GRO1_JD) CLEAR_THIS_PRINT (GRO1_JE) ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS REMOVE_BLIP park_blip_grove1 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" IF player_had_group_warning_grove1 = 1 REMOVE_BLIP sweet_blip_grove1 ENDIF GOTO mission_grove1_failed ENDIF ENDIF IF IS_PLAYER_IN_INFO_ZONE player1 GLN1 flag_player_in_area_grove1 = 1 ELSE flag_player_in_area_grove1 = 0 ENDIF IF IS_CHAR_DEAD sweet_grove1 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" IF player_had_group_warning_grove1 = 1 REMOVE_BLIP sweet_blip_grove1 ENDIF GOTO mission_grove1_failed ELSE GET_CHAR_HEALTH sweet_grove1 sweets_health_grove1 sweets_health_grove1 = sweets_health_grove1 / 10 // clear the not enough room print IF flag_print_on_grove1 = 1 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT (GRO1_GA) flag_print_on_grove1 = 0 ENDIF ENDIF IF NOT IS_GROUP_MEMBER sweet_grove1 Players_Group AND player_had_group_warning_grove1 = 0 // REMOVE_BLIP park_blip_grove1 ADD_BLIP_FOR_CHAR sweet_grove1 sweet_blip_grove1 SET_BLIP_AS_FRIENDLY sweet_blip_grove1 TRUE PRINT_NOW (GM1_2) 8000 1 //"You have left Sweet behind go get him." blob_flag = 0 flag_has_flying_message_grove1 = 0 player_had_group_warning_grove1 = 1 ENDIF IF player_had_group_warning_grove1 = 1 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sweet_grove1 8.0 8.0 FALSE IF NOT IS_CHAR_IN_FLYING_VEHICLE scplayer IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer stored_car_grove1 GET_MAXIMUM_NUMBER_OF_PASSENGERS stored_car_grove1 max_passenger_grove1 GET_NUMBER_OF_PASSENGERS stored_car_grove1 passenger_count_grove1 no_of_space_grove1 = max_passenger_grove1 - passenger_count_grove1 IF no_of_space_grove1 >= 1 SET_GROUP_FOLLOW_STATUS Players_Group TRUE SET_GROUP_MEMBER Players_Group sweet_grove1 REMOVE_BLIP sweet_blip_grove1 // ADD_BLIP_FOR_COORD 1985.176 -1233.743 19.135 park_blip_grove1 blob_flag = 1 had_room_message_grove1 = 0 player_had_group_warning_grove1 = 0 ELSE IF had_room_message_grove1 = 0 IF HAS_MISSION_AUDIO_FINISHED 1 PLAY_MISSION_AUDIO 2 PRINT_NOW (GRO1_GA) 8000 1 //"Homes there ain't enough room get a bigger vehicle!" START_CHAR_FACIAL_TALK sweet_grove1 999999 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 TRUE ENDIF room_audio_playing_grove1 = 1 flag_print_on_grove1 = 1 had_room_message_grove1 = 1 ELSE IF room_audio_playing_grove1 = 1 IF HAS_MISSION_AUDIO_FINISHED 2 STOP_CHAR_FACIAL_TALK sweet_grove1 CLEAR_THIS_PRINT (GRO1_GA) SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 FALSE room_audio_playing_grove1 = 0 ENDIF ENDIF ENDIF ENDIF ELSE SET_GROUP_FOLLOW_STATUS Players_Group TRUE SET_GROUP_MEMBER Players_Group sweet_grove1 REMOVE_BLIP sweet_blip_grove1 // ADD_BLIP_FOR_COORD 1985.176 -1233.743 19.135 park_blip_grove1 blob_flag = 1 player_had_group_warning_grove1 = 0 ENDIF ELSE IF flag_has_flying_message_grove1 = 0 IF HAS_MISSION_AUDIO_FINISHED 1 PLAY_MISSION_AUDIO 2 PRINT_NOW (GRO1_GA) 8000 1 //"Homes there ain't enough room get a bigger vehicle!" START_CHAR_FACIAL_TALK sweet_grove1 999999 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 TRUE ENDIF room_audio_playing_grove1 = 1 flag_print_on_grove1 = 1 flag_has_flying_message_grove1 = 1 ELSE IF room_audio_playing_grove1 = 1 IF HAS_MISSION_AUDIO_FINISHED 2 STOP_CHAR_FACIAL_TALK sweet_grove1 CLEAR_THIS_PRINT (GRO1_GA) SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 FALSE room_audio_playing_grove1 = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDWHILE PRINT_NOW (GM1_3) 8000 1 //"Attack the Ballas and take over their territory." TIMERB = 0 grove1_index = 0 grove1_audio_is_playing = 0 grove1_cutscene_flag = 0 grove1_chat_switch = GROVE1_CHAT4 GOSUB grove1_chat_switch IF NOT IS_CHAR_DEAD sweet_grove1 GET_CHAR_HEALTH sweet_grove1 sweets_health_grove1 ELSE CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS REMOVE_BLIP park_blip_grove1 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" IF player_had_group_warning_grove1 = 1 REMOVE_BLIP sweet_blip_grove1 ENDIF GOTO mission_grove1_failed ENDIF sweets_health_grove1 = sweets_health_grove1 / 10 DISPLAY_ONSCREEN_COUNTER_WITH_STRING sweets_health_grove1 COUNTER_DISPLAY_BAR (GM1_7) //"SWEETS HEALTH" room_audio_playing_grove1 = 0 // waiting for the player to take over the zone WHILE NOT flag_player_taken_terr_grove1 = 1 OR NOT IS_GROUP_MEMBER sweet_grove1 Players_Group WAIT 0 IF flag_start_audio3_grove1 = 0 IF TIMERB >= 5000 CLEAR_THIS_PRINT (GM1_3) flag_start_audio3_grove1 = 1 ENDIF ENDIF IF flag_start_audio3_grove1 = 1 IF NOT IS_CHAR_DEAD sweet_grove1 IF IS_GROUP_MEMBER sweet_grove1 Players_Group IF LOCATE_CHAR_ANY_MEANS_CHAR_3D sweet_grove1 scplayer 10.0 10.0 8.0 FALSE IF IS_CHAR_ON_FOOT scplayer AND IS_CHAR_ON_FOOT sweet_grove1 GOSUB load_and_play_audio_grove1 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer AND IS_CHAR_IN_ANY_CAR sweet_grove1 GOSUB load_and_play_audio_grove1 ENDIF ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT (GRO1_KA) CLEAR_THIS_PRINT (GRO1_KB) ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS REMOVE_BLIP park_blip_grove1 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" IF player_had_group_warning_grove1 = 1 REMOVE_BLIP sweet_blip_grove1 ENDIF GOTO mission_grove1_failed ENDIF ENDIF GET_ZONE_GANG_STRENGTH GLN1 GANG_FLAT gang_strenth1_grove1 GET_ZONE_GANG_STRENGTH GLN1 GANG_GROVE player_gang_strenth_grove1 IF IS_CHAR_DEAD sweet_grove1 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" IF player_had_group_warning_grove1 = 1 REMOVE_BLIP sweet_blip_grove1 ENDIF GOTO mission_grove1_failed ELSE GET_CHAR_HEALTH sweet_grove1 sweets_health_grove1 sweets_health_grove1 = sweets_health_grove1 / 10 // clear the not enough room print IF flag_print_on_grove1 = 1 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT (GRO1_GA) flag_print_on_grove1 = 0 ENDIF ENDIF IF NOT IS_GROUP_MEMBER sweet_grove1 Players_Group AND player_had_group_warning_grove1 = 0 ADD_BLIP_FOR_CHAR sweet_grove1 sweet_blip_grove1 SET_BLIP_AS_FRIENDLY sweet_blip_grove1 TRUE PRINT_NOW (GM1_2) 8000 1 //"You have left Sweet behind go get him." blob_flag = 0 flag_has_flying_message_grove1 = 0 player_had_group_warning_grove1 = 1 ENDIF IF player_had_group_warning_grove1 = 1 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sweet_grove1 8.0 8.0 FALSE IF NOT IS_CHAR_IN_FLYING_VEHICLE scplayer IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer stored_car_grove1 GET_MAXIMUM_NUMBER_OF_PASSENGERS stored_car_grove1 max_passenger_grove1 GET_NUMBER_OF_PASSENGERS stored_car_grove1 passenger_count_grove1 no_of_space_grove1 = max_passenger_grove1 - passenger_count_grove1 IF no_of_space_grove1 >= 1 SET_GROUP_FOLLOW_STATUS Players_Group TRUE SET_GROUP_MEMBER Players_Group sweet_grove1 REMOVE_BLIP sweet_blip_grove1 // //IF flag_player_in_area_grove1 = 0 // IF flag_gang_war_off_grove1 = 1 // // ADD_BLIP_FOR_COORD 1985.176 -1233.743 19.135 park_blip_grove1 // ENDIF blob_flag = 1 had_room_message_grove1 = 0 player_had_group_warning_grove1 = 0 ELSE IF had_room_message_grove1 = 0 IF HAS_MISSION_AUDIO_FINISHED 1 PLAY_MISSION_AUDIO 2 PRINT_NOW (GRO1_GA) 8000 1 //"Homes there ain't enough room get a bigger vehicle!" START_CHAR_FACIAL_TALK sweet_grove1 999999 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 TRUE ENDIF room_audio_playing_grove1 = 1 flag_print_on_grove1 = 1 had_room_message_grove1 = 1 ELSE IF room_audio_playing_grove1 = 1 IF HAS_MISSION_AUDIO_FINISHED 2 STOP_CHAR_FACIAL_TALK sweet_grove1 CLEAR_THIS_PRINT (GRO1_GA) SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 FALSE room_audio_playing_grove1 = 0 ENDIF ENDIF ENDIF ENDIF ELSE SET_GROUP_FOLLOW_STATUS Players_Group TRUE SET_GROUP_MEMBER Players_Group sweet_grove1 REMOVE_BLIP sweet_blip_grove1 // IF flag_player_in_area_grove1 = 0 // // ADD_BLIP_FOR_COORD 1985.176 -1233.743 // ENDIF blob_flag = 1 player_had_group_warning_grove1 = 0 ENDIF ELSE IF flag_has_flying_message_grove1 = 0 IF HAS_MISSION_AUDIO_FINISHED 1 PLAY_MISSION_AUDIO 2 PRINT_NOW (GRO1_GA) 8000 1 //"Homes there ain't enough room get a bigger vehicle!" START_CHAR_FACIAL_TALK sweet_grove1 999999 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 TRUE ENDIF room_audio_playing_grove1 = 1 flag_print_on_grove1 = 1 flag_has_flying_message_grove1 = 1 ELSE IF room_audio_playing_grove1 = 1 IF HAS_MISSION_AUDIO_FINISHED 2 STOP_CHAR_FACIAL_TALK sweet_grove1 CLEAR_THIS_PRINT (GRO1_GA) SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 FALSE room_audio_playing_grove1 = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF gang_strenth1_grove1 = 0 flag_player_taken_terr_grove1 = 1 ENDIF IF IS_PLAYER_IN_INFO_ZONE player1 GLN1 flag_player_in_area_grove1 = 1 ELSE IF NOT IS_GANG_WAR_GOING_ON IF IS_GROUP_MEMBER sweet_grove1 Players_Group IF player_gang_strenth_grove1 = 0 IF flag_gang_war_off_grove1 = 0 PRINT_NOW (GM1_16) 8000 1 //"The enemy have retaken the territory!" flag_gang_war_off_grove1 = 1 ENDIF ENDIF ENDIF ELSE flag_gang_war_off_grove1 = 0 ENDIF ENDIF ENDWHILE REMOVE_BLIP park_blip_grove1 CLEAR_THIS_PRINT (GM1_16) CLEAR_THIS_PRINT (GRO1_GA) CLEAR_THIS_PRINT (GM1_2) CLEAR_THIS_PRINT (GM1_4) CLEAR_THIS_PRINT (GM1_3) CAN_TRIGGER_GANG_WAR_WHEN_ON_A_MISSION FALSE WAIT 5000 // ********************************* Small cutscene showing Bdups house ***************** GOSUB check_player_is_safe WHILE NOT player_is_completely_safe = 1 WAIT 0 IF IS_CHAR_DEAD sweet_grove1 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" REMOVE_BLIP sweet_blip_grove1 GOTO mission_grove1_failed ENDIF GOSUB check_player_is_safe ENDWHILE SET_PLAYER_CONTROL player1 OFF SET_POLICE_IGNORE_PLAYER player1 ON SET_EVERYONE_IGNORE_PLAYER player1 ON IF NOT IS_CHAR_DEAD sweet_grove1 SET_CHAR_PROOFS sweet_grove1 TRUE TRUE TRUE TRUE TRUE ELSE PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ENDIF SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 // IF IS_CHAR_DEAD sweet_grove1 // // CLEAR_MISSION_AUDIO 1 // // CLEAR_PRINTS // // REMOVE_BLIP park_blip_grove1 // // PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" // // IF player_had_group_warning_grove1 = 1 // REMOVE_BLIP sweet_blip_grove1 // ENDIF // // GOTO mission_grove1_failed // // ENDIF ENDWHILE MAKE_PLAYER_GANG_DISAPPEAR IF NOT IS_CHAR_IN_ANY_CAR scplayer LOAD_SCENE 2038.184 -1143.772 23.455 CLEAR_AREA 2038.184 -1143.772 23.455 3.0 TRUE SET_CHAR_COORDINATES scplayer 2038.184 -1143.772 23.455 SET_CHAR_HEADING scplayer 56.5 ELSE STORE_CAR_CHAR_IS_IN scplayer dummy_car_grove1 WARP_CHAR_FROM_CAR_TO_COORD scplayer 2038.184 -1143.772 23.455 WHILE IS_CHAR_IN_ANY_CAR scplayer WAIT 0 IF IS_CHAR_DEAD sweet_grove1 // REMOVE_BLIP park_blip_grove1 // PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" // // IF player_had_group_warning_grove1 = 1 // REMOVE_BLIP sweet_blip_grove1 // ENDIF // // GOTO mission_grove1_failed ENDIF IF IS_CAR_DEAD dummy_car_grove1 // PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" // // IF player_had_group_warning_grove1 = 1 // REMOVE_BLIP sweet_blip_grove1 // ENDIF // // GOTO mission_grove1_failed ENDIF ENDWHILE SET_CHAR_HEADING scplayer 56.5 ENDIF IF NOT IS_CHAR_DEAD sweet_grove1 IF NOT IS_CHAR_IN_ANY_CAR sweet_grove1 CLEAR_AREA 2037.048 -1144.896 23.487 3.0 TRUE SET_CHAR_COORDINATES scplayer 2037.048 -1144.896 23.487 SET_CHAR_HEADING sweet_grove1 56.5 ELSE STORE_CAR_CHAR_IS_IN sweet_grove1 dummy_car_grove1 WARP_CHAR_FROM_CAR_TO_COORD sweet_grove1 2037.048 -1144.896 23.487 WHILE IS_CHAR_IN_ANY_CAR sweet_grove1 WAIT 0 IF IS_CHAR_DEAD sweet_grove1 // REMOVE_BLIP park_blip_grove1 // PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" // // IF player_had_group_warning_grove1 = 1 // REMOVE_BLIP sweet_blip_grove1 // ENDIF // // GOTO mission_grove1_failed ENDIF IF IS_CAR_DEAD dummy_car_grove1 // PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" // // IF player_had_group_warning_grove1 = 1 // REMOVE_BLIP sweet_blip_grove1 // ENDIF // // GOTO mission_grove1_failed ENDIF ENDWHILE SET_CHAR_HEADING sweet_grove1 56.5 ENDIF ENDIF CLEAR_AREA 2038.184 -1143.772 23.455 6.0 TRUE SWITCH_WIDESCREEN ON CLEAR_AREA 2006.3556 -1125.6630 25.6347 1.0 TRUE SET_FIXED_CAMERA_POSITION 2006.3556 -1125.6630 25.6347 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2005.6663 -1124.9659 25.8323 JUMP_CUT // Create car CLEAR_AREA 1992.437 -1120.185 25.813 4.0 FALSE CREATE_CAR INFERNUS 1992.437 -1120.185 25.813 bdup_car_grove1 SET_CAR_HEADING bdup_car_grove1 260.0 LOCK_CAR_DOORS bdup_car_grove1 CARLOCK_LOCKED REQUEST_COLLISION 1994.668 -1119.022 LOAD_SCENE_IN_DIRECTION 1994.668 -1119.022 25.813 56.5 // creates Bdups guard CLEAR_AREA 1994.668 -1119.022 25.813 2.0 FALSE CREATE_CHAR PEDTYPE_MISSION2 BALLAS1 1994.668 -1119.022 25.813 bdup_guard1_grove1 // GIVE_WEAPON_TO_CHAR bdup_guard1_grove1 WEAPONTYPE_AK47 30000 // set to infinate ammo SET_CHAR_HEADING bdup_guard1_grove1 207.710 SET_CHAR_DECISION_MAKER bdup_guard1_grove1 tough_duck_dm_grove1 TASK_PLAY_ANIM bdup_guard1_grove1 WEAPON_CROUCH PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_STAY_IN_SAME_PLACE bdup_guard1_grove1 TRUE TASK_KILL_CHAR_ON_FOOT bdup_guard1_grove1 scplayer SET_CHAR_IS_TARGET_PRIORITY bdup_guard1_grove1 TRUE SET_CHAR_RELATIONSHIP bdup_guard1_grove1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP bdup_guard1_grove1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 CLEAR_AREA 2005.848 -1116.500 26.179 2.0 FALSE CREATE_CHAR PEDTYPE_MISSION2 BALLAS3 2005.848 -1116.500 26.179 bdup_guard2_grove1 // GIVE_WEAPON_TO_CHAR bdup_guard2_grove1 WEAPONTYPE_AK47 30000 // set to infinate ammo SET_CHAR_HEADING bdup_guard2_grove1 185.395 SET_CHAR_DECISION_MAKER bdup_guard2_grove1 tough_duck_dm_grove1 TASK_PLAY_ANIM bdup_guard2_grove1 WEAPON_CROUCH PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_STAY_IN_SAME_PLACE bdup_guard2_grove1 TRUE TASK_KILL_CHAR_ON_FOOT bdup_guard2_grove1 scplayer SET_CHAR_IS_TARGET_PRIORITY bdup_guard2_grove1 TRUE SET_CHAR_RELATIONSHIP bdup_guard2_grove1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP bdup_guard2_grove1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 CLEAR_AREA 2002.672 -1116.134 26.172 2.0 FALSE CREATE_CHAR PEDTYPE_MISSION2 BALLAS1 2002.672 -1116.134 26.172 bdup_guard3_grove1 // GIVE_WEAPON_TO_CHAR bdup_guard3_grove1 WEAPONTYPE_AK47 30000 // set to infinate ammo SET_CHAR_HEADING bdup_guard3_grove1 200.691 SET_CHAR_DECISION_MAKER bdup_guard3_grove1 tough_duck_dm_grove1 TASK_PLAY_ANIM bdup_guard3_grove1 WEAPON_CROUCH PED 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_STAY_IN_SAME_PLACE bdup_guard3_grove1 TRUE TASK_KILL_CHAR_ON_FOOT bdup_guard3_grove1 scplayer SET_CHAR_IS_TARGET_PRIORITY bdup_guard3_grove1 TRUE SET_CHAR_RELATIONSHIP bdup_guard3_grove1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP bdup_guard3_grove1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 CLEAR_AREA 1988.934 -1120.135 25.813 2.0 FALSE CREATE_CHAR PEDTYPE_MISSION2 BALLAS3 1988.934 -1120.135 25.813 bdup_guard4_grove1 // GIVE_WEAPON_TO_CHAR bdup_guard4_grove1 WEAPONTYPE_AK47 30000 // set to infinate ammo SET_CHAR_HEADING bdup_guard4_grove1 220.163 SET_CHAR_DECISION_MAKER bdup_guard4_grove1 tough_duck_dm_grove1 SET_CHAR_STAY_IN_SAME_PLACE bdup_guard4_grove1 TRUE TASK_KILL_CHAR_ON_FOOT bdup_guard4_grove1 scplayer SET_CHAR_IS_TARGET_PRIORITY bdup_guard4_grove1 TRUE SET_CHAR_RELATIONSHIP bdup_guard4_grove1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP bdup_guard4_grove1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 TASK_PLAY_ANIM bdup_guard3_grove1 WEAPON_CROUCH PED 4.0 TRUE FALSE FALSE FALSE -1 CLEAR_AREA 1994.062 -1115.618 25.813 2.0 FALSE CREATE_CHAR PEDTYPE_MISSION2 BALLAS3 1994.062 -1115.618 25.813 bdup_guard5_grove1 GIVE_WEAPON_TO_CHAR bdup_guard5_grove1 WEAPONTYPE_AK47 30000 // set to infinate ammo SET_CHAR_HEADING bdup_guard5_grove1 235.0 SET_CHAR_DECISION_MAKER bdup_guard5_grove1 tough_decisionmaker_grove1 SET_CHAR_STAY_IN_SAME_PLACE bdup_guard5_grove1 TRUE SET_CHAR_IS_TARGET_PRIORITY bdup_guard5_grove1 TRUE SET_CHAR_RELATIONSHIP bdup_guard5_grove1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP bdup_guard5_grove1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 CLEAR_AREA 1997.480 -1114.998 25.813 2.0 FALSE CREATE_CHAR PEDTYPE_MISSION2 BALLAS1 1997.480 -1118.998 25.813 bdup_guard6_grove1 GIVE_WEAPON_TO_CHAR bdup_guard6_grove1 WEAPONTYPE_AK47 30000 // set to infinate ammo SET_CHAR_HEADING bdup_guard6_grove1 176.0 SET_CHAR_DECISION_MAKER bdup_guard6_grove1 tough_decisionmaker_grove1 SET_CHAR_STAY_IN_SAME_PLACE bdup_guard6_grove1 TRUE SET_CHAR_IS_TARGET_PRIORITY bdup_guard6_grove1 TRUE SET_CHAR_RELATIONSHIP bdup_guard6_grove1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP bdup_guard6_grove1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 CLEAR_AREA 2008.344 -1113.057 25.584 2.0 FALSE CREATE_CHAR PEDTYPE_MISSION2 BALLAS3 2008.344 -1113.057 25.584 bdup_guard7_grove1 GIVE_WEAPON_TO_CHAR bdup_guard7_grove1 WEAPONTYPE_AK47 30000 // set to infinate ammo SET_CHAR_HEADING bdup_guard7_grove1 177.195 SET_CHAR_DECISION_MAKER bdup_guard7_grove1 tough_decisionmaker_grove1 SET_CHAR_STAY_IN_SAME_PLACE bdup_guard7_grove1 TRUE SET_CHAR_IS_TARGET_PRIORITY bdup_guard7_grove1 TRUE SET_CHAR_RELATIONSHIP bdup_guard7_grove1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP bdup_guard7_grove1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 CLEAR_AREA 2014.768 -1111.447 25.235 2.0 FALSE CREATE_CHAR PEDTYPE_MISSION2 BALLAS1 2014.768 -1111.447 25.235 bdup_guard8_grove1 GIVE_WEAPON_TO_CHAR bdup_guard8_grove1 WEAPONTYPE_AK47 30000 // set to infinate ammo SET_CHAR_HEADING bdup_guard8_grove1 164.890 SET_CHAR_DECISION_MAKER bdup_guard8_grove1 tough_decisionmaker_grove1 SET_CHAR_IS_TARGET_PRIORITY bdup_guard8_grove1 TRUE SET_CHAR_RELATIONSHIP bdup_guard8_grove1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP bdup_guard8_grove1 ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_IN grove1_index = 0 grove1_audio_is_playing = 0 grove1_cutscene_flag = 0 grove1_chat_switch = GROVE1_CHAT3 GOSUB grove1_chat_switch GOSUB load_and_play_audio_grove1 WHILE GET_FADING_STATUS WAIT 0 // IF NOT IS_CHAR_DEAD sweet_grove1 // GOSUB load_and_play_audio_grove1 // ELSE // CLEAR_PRINTS // CLEAR_MISSION_AUDIO 1 // CLEAR_MISSION_AUDIO 2 // REMOVE_BLIP park_blip_grove1 // PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" // // IF player_had_group_warning_grove1 = 1 // REMOVE_BLIP sweet_blip_grove1 // ENDIF // // GOTO mission_grove1_failed // // ENDIF // // GOSUB guard_death_check_grove1 ENDWHILE //grove1_index = 0 //grove1_audio_is_playing = 0 //grove1_cutscene_flag = 0 //grove1_chat_switch = GROVE1_CHAT3 //GOSUB grove1_chat_switch IF NOT IS_CHAR_DEAD sweet_grove1 GOSUB load_and_play_audio_grove1 ELSE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 REMOVE_BLIP park_blip_grove1 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" IF player_had_group_warning_grove1 = 1 REMOVE_BLIP sweet_blip_grove1 ENDIF GOTO mission_grove1_failed ENDIF SKIP_CUTSCENE_START WHILE NOT grove1_index = 3 WAIT 0 GOSUB guard_death_check_grove1 IF NOT IS_CHAR_DEAD sweet_grove1 GOSUB load_and_play_audio_grove1 ELSE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 REMOVE_BLIP park_blip_grove1 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" IF player_had_group_warning_grove1 = 1 REMOVE_BLIP sweet_blip_grove1 ENDIF GOTO mission_grove1_failed ENDIF IF grove1_index > 0 IF dbup_guys_got_ai_grove1 = 0 GOSUB give_dbup_ai_grove1 ENDIF ENDIF ENDWHILE SKIP_CUTSCENE_END CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE MAKE_PLAYER_GANG_REAPPEAR IF bdup_guard1_dead_grove1 = 0 IF NOT IS_CHAR_DEAD bdup_guard1_grove1 ADD_BLIP_FOR_CHAR bdup_guard1_grove1 bdup_guard1_blip_grove1 ELSE REMOVE_BLIP bdup_guard1_blip_grove1 ++ counter_dbup_guards_dead bdup_guard1_dead_grove1 = 1 ENDIF ENDIF IF bdup_guard2_dead_grove1 = 0 IF NOT IS_CHAR_DEAD bdup_guard2_grove1 ADD_BLIP_FOR_CHAR bdup_guard2_grove1 bdup_guard2_blip_grove1 ELSE REMOVE_BLIP bdup_guard2_blip_grove1 ++ counter_dbup_guards_dead bdup_guard2_dead_grove1 = 1 ENDIF ENDIF IF bdup_guard3_dead_grove1 = 0 IF NOT IS_CHAR_DEAD bdup_guard3_grove1 ADD_BLIP_FOR_CHAR bdup_guard3_grove1 bdup_guard3_blip_grove1 ELSE REMOVE_BLIP bdup_guard3_blip_grove1 ++ counter_dbup_guards_dead bdup_guard3_dead_grove1 = 1 ENDIF ENDIF IF bdup_guard4_dead_grove1 = 0 IF NOT IS_CHAR_DEAD bdup_guard4_grove1 ADD_BLIP_FOR_CHAR bdup_guard4_grove1 bdup_guard4_blip_grove1 ELSE REMOVE_BLIP bdup_guard4_blip_grove1 ++ counter_dbup_guards_dead bdup_guard4_dead_grove1 = 1 ENDIF ENDIF IF bdup_guard5_dead_grove1 = 0 IF NOT IS_CHAR_DEAD bdup_guard5_grove1 ADD_BLIP_FOR_CHAR bdup_guard5_grove1 bdup_guard5_blip_grove1 ELSE REMOVE_BLIP bdup_guard5_blip_grove1 ++ counter_dbup_guards_dead bdup_guard5_dead_grove1 = 1 ENDIF ENDIF IF bdup_guard6_dead_grove1 = 0 IF NOT IS_CHAR_DEAD bdup_guard6_grove1 ADD_BLIP_FOR_CHAR bdup_guard6_grove1 bdup_guard6_blip_grove1 ELSE REMOVE_BLIP bdup_guard6_blip_grove1 ++ counter_dbup_guards_dead bdup_guard6_dead_grove1 = 1 ENDIF ENDIF IF bdup_guard7_dead_grove1 = 0 IF NOT IS_CHAR_DEAD bdup_guard7_grove1 ADD_BLIP_FOR_CHAR bdup_guard7_grove1 bdup_guard7_blip_grove1 ELSE REMOVE_BLIP bdup_guard7_blip_grove1 ++ counter_dbup_guards_dead bdup_guard7_dead_grove1 = 1 ENDIF ENDIF IF bdup_guard8_dead_grove1 = 0 IF NOT IS_CHAR_DEAD bdup_guard8_grove1 ADD_BLIP_FOR_CHAR bdup_guard8_grove1 bdup_guard8_blip_grove1 ELSE REMOVE_BLIP bdup_guard8_blip_grove1 ++ counter_dbup_guards_dead bdup_guard8_dead_grove1 = 1 ENDIF ENDIF SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 // IF IS_CHAR_DEAD sweet_grove1 // REMOVE_BLIP park_blip_grove1 // PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" // // IF player_had_group_warning_grove1 = 1 // REMOVE_BLIP sweet_blip_grove1 // ENDIF // // GOTO mission_grove1_failed // // ENDIF // // GOSUB guard_death_check_grove1 ENDWHILE SET_PLAYER_CONTROL player1 ON SET_POLICE_IGNORE_PLAYER player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 OFF IF NOT IS_CHAR_DEAD sweet_grove1 SET_CHAR_PROOFS sweet_grove1 FALSE FALSE FALSE FALSE FALSE ELSE PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ENDIF PRINT_NOW (GM1_9) 8000 1 //"Kill Bdups Guards!" room_audio_playing_grove1 = 0 CHECKPOINT_SAVE 1 // waiting for all bdups guys to be dead WHILE NOT counter_dbup_guards_dead = 8 OR NOT IS_GROUP_MEMBER sweet_grove1 Players_Group WAIT 0 GET_CHAR_COORDINATES scplayer player_x player_y player_z IF IS_CHAR_DEAD sweet_grove1 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" IF player_had_group_warning_grove1 = 1 REMOVE_BLIP sweet_blip_grove1 ENDIF GOTO mission_grove1_failed ELSE GET_CHAR_HEALTH sweet_grove1 sweets_health_grove1 sweets_health_grove1 = sweets_health_grove1 / 10 // clear the not enough room print IF flag_print_on_grove1 = 1 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT (GRO1_GA) flag_print_on_grove1 = 0 ENDIF ENDIF IF NOT IS_GROUP_MEMBER sweet_grove1 Players_Group AND player_had_group_warning_grove1 = 0 ADD_BLIP_FOR_CHAR sweet_grove1 sweet_blip_grove1 SET_BLIP_AS_FRIENDLY sweet_blip_grove1 TRUE PRINT_NOW (GM1_2) 8000 1 //"You have left Sweet behind go get him." blob_flag = 0 flag_has_flying_message_grove1 = 0 IF NOT IS_CHAR_DEAD bdup_guard1_grove1 REMOVE_BLIP bdup_guard1_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard2_grove1 REMOVE_BLIP bdup_guard2_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard3_grove1 REMOVE_BLIP bdup_guard3_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard4_grove1 REMOVE_BLIP bdup_guard4_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard5_grove1 REMOVE_BLIP bdup_guard5_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard6_grove1 REMOVE_BLIP bdup_guard6_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard7_grove1 REMOVE_BLIP bdup_guard7_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard8_grove1 REMOVE_BLIP bdup_guard8_blip_grove1 ENDIF player_had_group_warning_grove1 = 1 ENDIF IF player_had_group_warning_grove1 = 1 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sweet_grove1 8.0 8.0 FALSE IF NOT IS_CHAR_IN_FLYING_VEHICLE scplayer IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer stored_car_grove1 GET_MAXIMUM_NUMBER_OF_PASSENGERS stored_car_grove1 max_passenger_grove1 GET_NUMBER_OF_PASSENGERS stored_car_grove1 passenger_count_grove1 no_of_space_grove1 = max_passenger_grove1 - passenger_count_grove1 IF no_of_space_grove1 >= 1 SET_GROUP_FOLLOW_STATUS Players_Group TRUE SET_GROUP_MEMBER Players_Group sweet_grove1 REMOVE_BLIP sweet_blip_grove1 IF NOT IS_CHAR_DEAD bdup_guard1_grove1 ADD_BLIP_FOR_CHAR bdup_guard1_grove1 bdup_guard1_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard2_grove1 ADD_BLIP_FOR_CHAR bdup_guard2_grove1 bdup_guard2_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard3_grove1 ADD_BLIP_FOR_CHAR bdup_guard3_grove1 bdup_guard3_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard4_grove1 ADD_BLIP_FOR_CHAR bdup_guard4_grove1 bdup_guard4_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard5_grove1 ADD_BLIP_FOR_CHAR bdup_guard5_grove1 bdup_guard5_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard6_grove1 ADD_BLIP_FOR_CHAR bdup_guard6_grove1 bdup_guard6_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard7_grove1 ADD_BLIP_FOR_CHAR bdup_guard7_grove1 bdup_guard7_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard8_grove1 ADD_BLIP_FOR_CHAR bdup_guard8_grove1 bdup_guard8_blip_grove1 ENDIF blob_flag = 1 had_room_message_grove1 = 0 player_had_group_warning_grove1 = 0 ELSE IF had_room_message_grove1 = 0 IF HAS_MISSION_AUDIO_FINISHED 1 PLAY_MISSION_AUDIO 2 PRINT_NOW (GRO1_GA) 8000 1 //"Homes there ain't enough room get a bigger vehicle!" START_CHAR_FACIAL_TALK sweet_grove1 999999 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 TRUE ENDIF room_audio_playing_grove1 = 1 flag_print_on_grove1 = 1 had_room_message_grove1 = 1 ELSE IF room_audio_playing_grove1 = 1 IF HAS_MISSION_AUDIO_FINISHED 2 STOP_CHAR_FACIAL_TALK sweet_grove1 CLEAR_THIS_PRINT (GRO1_GA) SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 FALSE room_audio_playing_grove1 = 0 ENDIF ENDIF ENDIF ENDIF ELSE SET_GROUP_FOLLOW_STATUS Players_Group TRUE SET_GROUP_MEMBER Players_Group sweet_grove1 REMOVE_BLIP sweet_blip_grove1 blob_flag = 1 IF NOT IS_CHAR_DEAD bdup_guard1_grove1 ADD_BLIP_FOR_CHAR bdup_guard1_grove1 bdup_guard1_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard2_grove1 ADD_BLIP_FOR_CHAR bdup_guard2_grove1 bdup_guard2_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard3_grove1 ADD_BLIP_FOR_CHAR bdup_guard3_grove1 bdup_guard3_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard4_grove1 ADD_BLIP_FOR_CHAR bdup_guard4_grove1 bdup_guard4_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard5_grove1 ADD_BLIP_FOR_CHAR bdup_guard5_grove1 bdup_guard5_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard6_grove1 ADD_BLIP_FOR_CHAR bdup_guard6_grove1 bdup_guard6_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard7_grove1 ADD_BLIP_FOR_CHAR bdup_guard7_grove1 bdup_guard7_blip_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard8_grove1 ADD_BLIP_FOR_CHAR bdup_guard8_grove1 bdup_guard8_blip_grove1 ENDIF player_had_group_warning_grove1 = 0 ENDIF ELSE IF flag_has_flying_message_grove1 = 0 IF HAS_MISSION_AUDIO_FINISHED 1 PLAY_MISSION_AUDIO 2 PRINT_NOW (GRO1_GA) 8000 1 //"Homes there ain't enough room get a bigger vehicle!" START_CHAR_FACIAL_TALK sweet_grove1 999999 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 TRUE ENDIF room_audio_playing_grove1 = 1 flag_print_on_grove1 = 1 flag_has_flying_message_grove1 = 1 ELSE IF room_audio_playing_grove1 = 1 IF HAS_MISSION_AUDIO_FINISHED 2 STOP_CHAR_FACIAL_TALK sweet_grove1 CLEAR_THIS_PRINT (GRO1_GA) SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 FALSE room_audio_playing_grove1 = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF bdup_guard1_dead_grove1 = 0 IF IS_CHAR_DEAD bdup_guard1_grove1 REMOVE_BLIP bdup_guard1_blip_grove1 ++ counter_dbup_guards_dead bdup_guard1_dead_grove1 = 1 ELSE IF flag_kill_player_grove1 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 bdup_guard1_grove1 OR HAS_CHAR_SPOTTED_CHAR bdup_guard1_grove1 scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON bdup_guard1_grove1 WEAPONTYPE_ANYWEAPON flag_kill_player_grove1 = 1 ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bdup_guard1_grove1 100.0 100.0 30.0 FALSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bdup_guard1_grove1 29.0 29.0 30.0 FALSE IF guard1_attacking_player_grove1 = 0 CLEAR_CHAR_TASKS bdup_guard1_grove1 TASK_KILL_CHAR_ON_FOOT bdup_guard1_grove1 scplayer TASK_STAY_IN_SAME_PLACE bdup_guard1_grove1 TRUE guard1_attacking_player_grove1 = 1 ENDIF ELSE IF guard1_attacking_coord_grove1 = 0 CLEAR_CHAR_TASKS bdup_guard1_grove1 TASK_STAY_IN_SAME_PLACE bdup_guard1_grove1 TRUE TASK_SET_IGNORE_WEAPON_RANGE_FLAG bdup_guard1_grove1 TRUE TASK_SHOOT_AT_CHAR bdup_guard1_grove1 scplayer -1 guard1_attacking_coord_grove1 = 1 ENDIF ENDIF ELSE IF guard1_attacking_coord_grove1 = 1 OR guard1_attacking_player_grove1 = 1 CLEAR_CHAR_TASKS bdup_guard1_grove1 TASK_STAY_IN_SAME_PLACE bdup_guard1_grove1 TRUE guard1_attacking_player_grove1 = 0 guard1_attacking_coord_grove1 = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF bdup_guard2_dead_grove1 = 0 IF IS_CHAR_DEAD bdup_guard2_grove1 REMOVE_BLIP bdup_guard2_blip_grove1 ++ counter_dbup_guards_dead bdup_guard2_dead_grove1 = 1 ELSE IF flag_kill_player_grove1 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 bdup_guard2_grove1 OR HAS_CHAR_SPOTTED_CHAR bdup_guard2_grove1 scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON bdup_guard2_grove1 WEAPONTYPE_ANYWEAPON flag_kill_player_grove1 = 1 ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bdup_guard2_grove1 100.0 100.0 30.0 FALSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bdup_guard2_grove1 29.0 29.0 30.0 FALSE IF guard2_attacking_player_grove1 = 0 CLEAR_CHAR_TASKS bdup_guard2_grove1 TASK_KILL_CHAR_ON_FOOT bdup_guard2_grove1 scplayer TASK_STAY_IN_SAME_PLACE bdup_guard2_grove1 TRUE guard2_attacking_player_grove1 = 1 ENDIF ELSE IF guard2_attacking_coord_grove1 = 0 CLEAR_CHAR_TASKS bdup_guard2_grove1 TASK_STAY_IN_SAME_PLACE bdup_guard2_grove1 TRUE TASK_SET_IGNORE_WEAPON_RANGE_FLAG bdup_guard2_grove1 TRUE TASK_SHOOT_AT_CHAR bdup_guard2_grove1 scplayer -1 guard2_attacking_coord_grove1 = 1 ENDIF ENDIF ELSE IF guard2_attacking_coord_grove1 = 1 OR guard2_attacking_player_grove1 = 1 CLEAR_CHAR_TASKS bdup_guard2_grove1 TASK_STAY_IN_SAME_PLACE bdup_guard2_grove1 TRUE guard2_attacking_player_grove1 = 0 guard2_attacking_coord_grove1 = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF bdup_guard3_dead_grove1 = 0 IF IS_CHAR_DEAD bdup_guard3_grove1 REMOVE_BLIP bdup_guard3_blip_grove1 ++ counter_dbup_guards_dead bdup_guard3_dead_grove1 = 1 ELSE IF flag_kill_player_grove1 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 bdup_guard3_grove1 OR HAS_CHAR_SPOTTED_CHAR bdup_guard3_grove1 scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON bdup_guard3_grove1 WEAPONTYPE_ANYWEAPON flag_kill_player_grove1 = 1 ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bdup_guard3_grove1 100.0 100.0 30.0 FALSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bdup_guard3_grove1 29.0 29.0 30.0 FALSE IF guard3_attacking_player_grove1 = 0 CLEAR_CHAR_TASKS bdup_guard3_grove1 TASK_KILL_CHAR_ON_FOOT bdup_guard3_grove1 scplayer TASK_STAY_IN_SAME_PLACE bdup_guard3_grove1 TRUE guard3_attacking_player_grove1 = 1 ENDIF ELSE IF guard3_attacking_coord_grove1 = 0 CLEAR_CHAR_TASKS bdup_guard3_grove1 TASK_STAY_IN_SAME_PLACE bdup_guard3_grove1 TRUE TASK_SET_IGNORE_WEAPON_RANGE_FLAG bdup_guard3_grove1 TRUE TASK_SHOOT_AT_CHAR bdup_guard3_grove1 scplayer -1 guard3_attacking_coord_grove1 = 1 ENDIF ENDIF ELSE IF guard3_attacking_coord_grove1 = 1 OR guard3_attacking_player_grove1 = 1 CLEAR_CHAR_TASKS bdup_guard3_grove1 TASK_STAY_IN_SAME_PLACE bdup_guard3_grove1 TRUE guard3_attacking_player_grove1 = 0 guard3_attacking_coord_grove1 = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF bdup_guard4_dead_grove1 = 0 IF IS_CHAR_DEAD bdup_guard4_grove1 REMOVE_BLIP bdup_guard4_blip_grove1 ++ counter_dbup_guards_dead bdup_guard4_dead_grove1 = 1 ELSE IF flag_kill_player_grove1 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 bdup_guard4_grove1 OR HAS_CHAR_SPOTTED_CHAR bdup_guard4_grove1 scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON bdup_guard4_grove1 WEAPONTYPE_ANYWEAPON flag_kill_player_grove1 = 1 ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bdup_guard4_grove1 100.0 100.0 30.0 FALSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bdup_guard4_grove1 29.0 29.0 30.0 FALSE IF guard4_attacking_player_grove1 = 0 CLEAR_CHAR_TASKS bdup_guard4_grove1 TASK_KILL_CHAR_ON_FOOT bdup_guard4_grove1 scplayer TASK_STAY_IN_SAME_PLACE bdup_guard4_grove1 TRUE guard4_attacking_player_grove1 = 1 ENDIF ELSE IF guard4_attacking_coord_grove1 = 0 CLEAR_CHAR_TASKS bdup_guard4_grove1 TASK_STAY_IN_SAME_PLACE bdup_guard4_grove1 TRUE TASK_SET_IGNORE_WEAPON_RANGE_FLAG bdup_guard4_grove1 TRUE TASK_SHOOT_AT_CHAR bdup_guard4_grove1 scplayer -1 guard4_attacking_coord_grove1 = 1 ENDIF ENDIF ELSE IF guard4_attacking_coord_grove1 = 1 OR guard4_attacking_player_grove1 = 1 CLEAR_CHAR_TASKS bdup_guard4_grove1 TASK_STAY_IN_SAME_PLACE bdup_guard4_grove1 TRUE guard4_attacking_player_grove1 = 0 guard4_attacking_coord_grove1 = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF bdup_guard5_dead_grove1 = 0 IF IS_CHAR_DEAD bdup_guard5_grove1 REMOVE_BLIP bdup_guard5_blip_grove1 ++ counter_dbup_guards_dead bdup_guard5_dead_grove1 = 1 ELSE IF flag_kill_player_grove1 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 bdup_guard5_grove1 OR HAS_CHAR_SPOTTED_CHAR bdup_guard5_grove1 scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON bdup_guard5_grove1 WEAPONTYPE_ANYWEAPON flag_kill_player_grove1 = 1 ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bdup_guard5_grove1 100.0 100.0 30.0 FALSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bdup_guard5_grove1 29.0 29.0 30.0 FALSE IF guard5_attacking_player_grove1 = 0 CLEAR_CHAR_TASKS bdup_guard5_grove1 TASK_KILL_CHAR_ON_FOOT bdup_guard5_grove1 scplayer TASK_STAY_IN_SAME_PLACE bdup_guard5_grove1 TRUE guard5_attacking_player_grove1 = 1 ENDIF ELSE IF guard5_attacking_coord_grove1 = 0 CLEAR_CHAR_TASKS bdup_guard5_grove1 TASK_STAY_IN_SAME_PLACE bdup_guard5_grove1 TRUE TASK_SET_IGNORE_WEAPON_RANGE_FLAG bdup_guard5_grove1 TRUE TASK_SHOOT_AT_CHAR bdup_guard5_grove1 scplayer -1 guard5_attacking_coord_grove1 = 1 ENDIF ENDIF ELSE IF guard5_attacking_coord_grove1 = 1 OR guard5_attacking_player_grove1 = 1 CLEAR_CHAR_TASKS bdup_guard5_grove1 TASK_STAY_IN_SAME_PLACE bdup_guard5_grove1 TRUE guard5_attacking_player_grove1 = 0 guard5_attacking_coord_grove1 = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF bdup_guard6_dead_grove1 = 0 IF IS_CHAR_DEAD bdup_guard6_grove1 REMOVE_BLIP bdup_guard6_blip_grove1 ++ counter_dbup_guards_dead bdup_guard6_dead_grove1 = 1 ELSE IF flag_kill_player_grove1 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 bdup_guard6_grove1 OR HAS_CHAR_SPOTTED_CHAR bdup_guard6_grove1 scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON bdup_guard6_grove1 WEAPONTYPE_ANYWEAPON flag_kill_player_grove1 = 1 ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bdup_guard6_grove1 100.0 100.0 30.0 FALSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bdup_guard6_grove1 29.0 29.0 30.0 FALSE IF guard6_attacking_player_grove1 = 0 CLEAR_CHAR_TASKS bdup_guard6_grove1 TASK_KILL_CHAR_ON_FOOT bdup_guard6_grove1 scplayer TASK_STAY_IN_SAME_PLACE bdup_guard6_grove1 TRUE guard6_attacking_player_grove1 = 1 ENDIF ELSE IF guard6_attacking_coord_grove1 = 0 CLEAR_CHAR_TASKS bdup_guard6_grove1 TASK_STAY_IN_SAME_PLACE bdup_guard6_grove1 TRUE TASK_SET_IGNORE_WEAPON_RANGE_FLAG bdup_guard6_grove1 TRUE TASK_SHOOT_AT_CHAR bdup_guard6_grove1 scplayer -1 guard6_attacking_coord_grove1 = 1 ENDIF ENDIF ELSE IF guard6_attacking_coord_grove1 = 1 OR guard6_attacking_player_grove1 = 1 CLEAR_CHAR_TASKS bdup_guard6_grove1 TASK_STAY_IN_SAME_PLACE bdup_guard6_grove1 TRUE guard6_attacking_player_grove1 = 0 guard6_attacking_coord_grove1 = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF bdup_guard7_dead_grove1 = 0 IF IS_CHAR_DEAD bdup_guard7_grove1 REMOVE_BLIP bdup_guard7_blip_grove1 ++ counter_dbup_guards_dead bdup_guard7_dead_grove1 = 1 ELSE IF flag_kill_player_grove1 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 bdup_guard7_grove1 OR HAS_CHAR_SPOTTED_CHAR bdup_guard7_grove1 scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON bdup_guard7_grove1 WEAPONTYPE_ANYWEAPON flag_kill_player_grove1 = 1 ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bdup_guard7_grove1 100.0 100.0 30.0 FALSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bdup_guard7_grove1 29.0 29.0 30.0 FALSE IF guard7_attacking_player_grove1 = 0 CLEAR_CHAR_TASKS bdup_guard7_grove1 TASK_KILL_CHAR_ON_FOOT bdup_guard7_grove1 scplayer TASK_STAY_IN_SAME_PLACE bdup_guard7_grove1 TRUE guard7_attacking_player_grove1 = 1 ENDIF ELSE IF guard7_attacking_coord_grove1 = 0 CLEAR_CHAR_TASKS bdup_guard7_grove1 TASK_STAY_IN_SAME_PLACE bdup_guard7_grove1 TRUE TASK_SET_IGNORE_WEAPON_RANGE_FLAG bdup_guard7_grove1 TRUE TASK_SHOOT_AT_CHAR bdup_guard7_grove1 scplayer -1 guard7_attacking_coord_grove1 = 1 ENDIF ENDIF ELSE IF guard7_attacking_coord_grove1 = 1 OR guard7_attacking_player_grove1 = 1 CLEAR_CHAR_TASKS bdup_guard7_grove1 TASK_STAY_IN_SAME_PLACE bdup_guard7_grove1 TRUE guard7_attacking_player_grove1 = 0 guard7_attacking_coord_grove1 = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF bdup_guard8_dead_grove1 = 0 IF IS_CHAR_DEAD bdup_guard8_grove1 REMOVE_BLIP bdup_guard8_blip_grove1 ++ counter_dbup_guards_dead bdup_guard8_dead_grove1 = 1 ELSE IF flag_kill_player_grove1 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 bdup_guard8_grove1 OR HAS_CHAR_SPOTTED_CHAR bdup_guard8_grove1 scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON bdup_guard8_grove1 WEAPONTYPE_ANYWEAPON flag_kill_player_grove1 = 1 ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bdup_guard8_grove1 100.0 100.0 30.0 FALSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bdup_guard8_grove1 29.0 29.0 30.0 FALSE IF guard8_attacking_player_grove1 = 0 CLEAR_CHAR_TASKS bdup_guard8_grove1 TASK_KILL_CHAR_ON_FOOT bdup_guard8_grove1 scplayer TASK_STAY_IN_SAME_PLACE bdup_guard8_grove1 TRUE guard8_attacking_player_grove1 = 1 ENDIF ELSE IF guard8_attacking_coord_grove1 = 0 CLEAR_CHAR_TASKS bdup_guard8_grove1 TASK_STAY_IN_SAME_PLACE bdup_guard8_grove1 TRUE TASK_SET_IGNORE_WEAPON_RANGE_FLAG bdup_guard8_grove1 TRUE TASK_SHOOT_AT_CHAR bdup_guard8_grove1 scplayer -1 guard8_attacking_coord_grove1 = 1 ENDIF ENDIF ELSE IF guard8_attacking_coord_grove1 = 1 OR guard8_attacking_player_grove1 = 1 CLEAR_CHAR_TASKS bdup_guard8_grove1 TASK_STAY_IN_SAME_PLACE bdup_guard8_grove1 TRUE guard8_attacking_player_grove1 = 0 guard8_attacking_coord_grove1 = 0 ENDIF ENDIF ENDIF ENDIF ENDIF IF flag_kill_player_grove1 = 1 IF dbup_guys_got_ai_grove1 = 0 GOSUB give_dbup_ai_grove1 ENDIF ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS PRINT_NOW (GM1_15) 8000 1 //"Go and confront Bdup!" ADD_BLIP_FOR_COORD 2000.269 -1117.084 25.821 dbup_house_blip_grove1 blob_flag = 1 room_audio_playing_grove1 = 0 WHILE NOT LOCATE_CHAR_ON_FOOT_3D scplayer 2000.269 -1117.084 25.821 2.0 2.0 2.0 blob_flag OR NOT IS_GROUP_MEMBER sweet_grove1 Players_Group WAIT 0 IF IS_CHAR_DEAD sweet_grove1 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" IF player_had_group_warning_grove1 = 1 REMOVE_BLIP sweet_blip_grove1 ENDIF GOTO mission_grove1_failed ELSE GET_CHAR_HEALTH sweet_grove1 sweets_health_grove1 sweets_health_grove1 = sweets_health_grove1 / 10 // clear the not enough room print IF flag_print_on_grove1 = 1 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT (GRO1_GA) flag_print_on_grove1 = 0 ENDIF ENDIF IF NOT IS_GROUP_MEMBER sweet_grove1 Players_Group AND player_had_group_warning_grove1 = 0 REMOVE_BLIP dbup_house_blip_grove1 ADD_BLIP_FOR_CHAR sweet_grove1 sweet_blip_grove1 SET_BLIP_AS_FRIENDLY sweet_blip_grove1 TRUE PRINT_NOW (GM1_2) 8000 1 //"You have left Sweet behind go get him." blob_flag = 0 flag_has_flying_message_grove1 = 0 player_had_group_warning_grove1 = 1 ENDIF IF player_had_group_warning_grove1 = 1 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sweet_grove1 8.0 8.0 FALSE IF NOT IS_CHAR_IN_FLYING_VEHICLE scplayer IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer stored_car_grove1 GET_MAXIMUM_NUMBER_OF_PASSENGERS stored_car_grove1 max_passenger_grove1 GET_NUMBER_OF_PASSENGERS stored_car_grove1 passenger_count_grove1 no_of_space_grove1 = max_passenger_grove1 - passenger_count_grove1 IF no_of_space_grove1 >= 1 SET_GROUP_FOLLOW_STATUS Players_Group TRUE SET_GROUP_MEMBER Players_Group sweet_grove1 REMOVE_BLIP sweet_blip_grove1 ADD_BLIP_FOR_COORD 2000.269 -1117.084 25.821 dbup_house_blip_grove1 blob_flag = 1 had_room_message_grove1 = 0 player_had_group_warning_grove1 = 0 ELSE IF had_room_message_grove1 = 0 IF HAS_MISSION_AUDIO_FINISHED 1 PLAY_MISSION_AUDIO 2 PRINT_NOW (GRO1_GA) 8000 1 //"Homes there ain't enough room get a bigger vehicle!" START_CHAR_FACIAL_TALK sweet_grove1 999999 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 TRUE ENDIF room_audio_playing_grove1 = 1 flag_print_on_grove1 = 1 had_room_message_grove1 = 1 ELSE IF room_audio_playing_grove1 = 1 IF HAS_MISSION_AUDIO_FINISHED 2 STOP_CHAR_FACIAL_TALK sweet_grove1 CLEAR_THIS_PRINT (GRO1_GA) SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 FALSE room_audio_playing_grove1 = 0 ENDIF ENDIF ENDIF ENDIF ELSE SET_GROUP_FOLLOW_STATUS Players_Group TRUE SET_GROUP_MEMBER Players_Group sweet_grove1 REMOVE_BLIP sweet_blip_grove1 ADD_BLIP_FOR_COORD 2000.269 -1117.084 25.821 dbup_house_blip_grove1 blob_flag = 1 player_had_group_warning_grove1 = 0 ENDIF ELSE IF flag_has_flying_message_grove1 = 0 IF HAS_MISSION_AUDIO_FINISHED 1 PLAY_MISSION_AUDIO 2 PRINT_NOW (GRO1_GA) 8000 1 //"Homes there ain't enough room get a bigger vehicle!" START_CHAR_FACIAL_TALK sweet_grove1 999999 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 TRUE ENDIF room_audio_playing_grove1 = 1 flag_print_on_grove1 = 1 flag_has_flying_message_grove1 = 1 ELSE IF room_audio_playing_grove1 = 1 IF HAS_MISSION_AUDIO_FINISHED 2 STOP_CHAR_FACIAL_TALK sweet_grove1 CLEAR_THIS_PRINT (GRO1_GA) SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 FALSE room_audio_playing_grove1 = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDWHILE CLEAR_ONSCREEN_COUNTER sweets_health_grove1 REMOVE_BLIP dbup_house_blip_grove1 CLEAR_PRINTS // ********************************************** MID MISSION ANIMATED CUT ******************************************** SET_PLAYER_CONTROL player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 TRUE SET_POLICE_IGNORE_PLAYER player1 TRUE IF NOT IS_CHAR_DEAD sweet_grove1 SET_CHAR_PROOFS sweet_grove1 TRUE TRUE TRUE TRUE TRUE ELSE PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ENDIF SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 // IF IS_CHAR_DEAD sweet_grove1 // PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" // // IF player_had_group_warning_grove1 = 1 // REMOVE_BLIP sweet_blip_grove1 // ENDIF // // GOTO mission_grove1_failed // ENDIF ENDWHILE MAKE_PLAYER_GANG_DISAPPEAR DELETE_CHAR sweet_grove1 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS3 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED AK47 SET_AREA_VISIBLE 11 MAKE_PLAYER_SAFE_FOR_CUTSCENE player1 SET_CHAR_COORDINATES scplayer 1044.8799 -1334.3197 12.5500 //At B-dups new place SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 2 LOAD_CUTSCENE GROVE1c WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF SET_AREA_VISIBLE 0 // ************** BIG BEAR CUTSCENE ******************* LOAD_SPECIAL_CHARACTER 1 SWEET LOAD_SPECIAL_CHARACTER 2 BBTHIN REQUEST_ANIMATION GANGS LOAD_MISSION_AUDIO 1 SOUND_GRO1_BA LOAD_MISSION_AUDIO 2 SOUND_GRO1_BB WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_SPECIAL_CHARACTER_LOADED 2 OR NOT HAS_ANIMATION_LOADED GANGS OR NOT HAS_MISSION_AUDIO_LOADED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE SWITCH_WIDESCREEN ON SWITCH_PED_ROADS_OFF 1965.968 -1096.668 20.0 2081.465 -1163.309 30.0 CLEAR_AREA 2003.217 -1132.552 24.278 2.0 FALSE CREATE_CAR INFERNUS 2003.217 -1132.552 24.278 car2_grove1 SET_CAR_PROOFS car2_grove1 TRUE TRUE TRUE TRUE TRUE SET_CAR_HEADING car2_grove1 90.0 CREATE_CHAR_AS_PASSENGER car2_grove1 PEDTYPE_MISSION1 SPECIAL02 0 big_bear_grove1 SET_CHAR_PROOFS big_bear_grove1 TRUE TRUE TRUE TRUE TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH big_bear_grove1 TRUE REQUEST_COLLISION 2002.105 -1129.403 CLEAR_AREA 2002.105 -1129.403 24.484 1.0 TRUE SET_CHAR_COORDINATES scplayer 2002.105 -1129.403 24.484 SET_CHAR_HEADING scplayer 270.0 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE LOAD_SCENE 2002.105 -1129.403 24.484 CLEAR_AREA 2003.105 -1129.403 24.484 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 2003.105 -1129.403 24.484 sweet_grove1 SET_CHAR_PROOFS sweet_grove1 TRUE TRUE TRUE TRUE TRUE SET_CHAR_HEADING sweet_grove1 90.0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 TRUE CLEAR_AREA 2016.976 -1130.804 24.620 60.0 TRUE SET_FIXED_CAMERA_POSITION 2006.7113 -1126.8674 24.6168 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2006.0042 -1127.5514 24.7956 JUMP_CUT SET_FADING_COLOUR 0 0 0 DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SKIP_CUTSCENE_START IF NOT IS_CHAR_DEAD sweet_grove1 TASK_PLAY_ANIM sweet_grove1 hndshkfa GANGS 4.0 FALSE FALSE FALSE FALSE -1 PLAY_MISSION_AUDIO 1 PRINT_NOW (GRO1_BA) 10000 1 //"I’ll take care of Bear, man. START_CHAR_FACIAL_TALK sweet_grove1 999999 ELSE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ENDIF TASK_PLAY_ANIM scplayer hndshkfa GANGS 4.0 FALSE FALSE FALSE FALSE -1 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CHAR_DEAD sweet_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ENDIF IF IS_CHAR_DEAD big_bear_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_12) 8000 1 //"Big Bear is dead!" GOTO mission_grove1_failed ENDIF IF IS_CAR_DEAD car2_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_12) 8000 1 //"Big Bear is dead!" GOTO mission_grove1_failed ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT (GRO1_BA) IF NOT IS_CHAR_DEAD sweet_grove1 STOP_CHAR_FACIAL_TALK sweet_grove1 ELSE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ENDIF LOAD_MISSION_AUDIO 1 SOUND_GRO1_BC PLAY_MISSION_AUDIO 2 PRINT_NOW (GRO1_BB) 10000 1 //"Ok. See you in while, Big Bear! START_CHAR_FACIAL_TALK scplayer 999999 WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 OR NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CHAR_DEAD sweet_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ENDIF IF IS_CHAR_DEAD big_bear_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_12) 8000 1 //"Big Bear is dead!" GOTO mission_grove1_failed ENDIF IF IS_CAR_DEAD car2_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_12) 8000 1 //"Big Bear is dead!" GOTO mission_grove1_failed ENDIF ENDWHILE CLEAR_THIS_PRINT (GRO1_BB) CLEAR_MISSION_AUDIO 2 STOP_CHAR_FACIAL_TALK scplayer LOAD_MISSION_AUDIO 2 SOUND_GRO1_BD PLAY_MISSION_AUDIO 1 PRINT_NOW (GRO1_BC) 10000 1 //"Where we going, Sweet?" IF NOT IS_CHAR_DEAD big_bear_grove1 START_CHAR_FACIAL_TALK big_bear_grove1 999999 ELSE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_12) 8000 1 //"Big Bear is dead!" GOTO mission_grove1_failed ENDIF TASK_ACHIEVE_HEADING scplayer 180.0 IF NOT IS_CAR_DEAD car2_grove1 IF NOT IS_CHAR_DEAD sweet_grove1 TASK_ENTER_CAR_AS_DRIVER sweet_grove1 car2_grove1 -1 ELSE PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ENDIF ELSE PRINT_NOW (GM1_12) 8000 1 //"Big Bear is dead!" GOTO mission_grove1_failed ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 IF IS_CHAR_DEAD sweet_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ENDIF IF IS_CHAR_DEAD big_bear_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_12) 8000 1 //"Big Bear is dead!" GOTO mission_grove1_failed ELSE IF HAS_MISSION_AUDIO_FINISHED 1 STOP_CHAR_FACIAL_TALK big_bear_grove1 ENDIF ENDIF IF IS_CAR_DEAD car2_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_12) 8000 1 //"Big Bear is dead!" GOTO mission_grove1_failed ENDIF ENDWHILE CLEAR_THIS_PRINT (GRO1_BC) CLEAR_MISSION_AUDIO 1 IF IS_CHAR_DEAD big_bear_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_12) 8000 1 //"Big Bear is dead!" GOTO mission_grove1_failed ELSE STOP_CHAR_FACIAL_TALK big_bear_grove1 ENDIF LOAD_MISSION_AUDIO 1 SOUND_GRO1_BE PLAY_MISSION_AUDIO 2 PRINT_NOW (GRO1_BD) 10000 1 //"Someplace we can get the old Bear back, man. IF NOT IS_CHAR_DEAD sweet_grove1 START_CHAR_FACIAL_TALK sweet_grove1 999999 ELSE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 2 OR NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_CHAR_DEAD sweet_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ELSE IF HAS_MISSION_AUDIO_FINISHED 2 STOP_CHAR_FACIAL_TALK sweet_grove1 ENDIF ENDIF IF IS_CHAR_DEAD big_bear_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_12) 8000 1 //"Big Bear is dead!" GOTO mission_grove1_failed ENDIF IF IS_CAR_DEAD car2_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_12) 8000 1 //"Big Bear is dead!" GOTO mission_grove1_failed ENDIF ENDWHILE CLEAR_THIS_PRINT (GRO1_BD) CLEAR_MISSION_AUDIO 2 IF IS_CHAR_DEAD sweet_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ELSE STOP_CHAR_FACIAL_TALK sweet_grove1 ENDIF PLAY_MISSION_AUDIO 1 PRINT_NOW (GRO1_BE) 10000 1 //"Aigh’t. I’m down for that... IF NOT IS_CHAR_DEAD big_bear_grove1 START_CHAR_FACIAL_TALK big_bear_grove1 999999 ELSE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_12) 8000 1 //"Big Bear is dead!" GOTO mission_grove1_failed ENDIF WHILE NOT IS_CHAR_IN_ANY_CAR sweet_grove1 WAIT 0 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_THIS_PRINT (GRO1_BE) IF NOT IS_CHAR_DEAD big_bear_grove1 STOP_CHAR_FACIAL_TALK big_bear_grove1 ELSE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_12) 8000 1 //"Big Bear is dead!" GOTO mission_grove1_failed ENDIF ENDIF IF IS_CHAR_DEAD sweet_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ENDIF IF IS_CHAR_DEAD big_bear_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_12) 8000 1 //"Big Bear is dead!" GOTO mission_grove1_failed ENDIF IF IS_CAR_DEAD car2_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_12) 8000 1 //"Big Bear is dead!" GOTO mission_grove1_failed ENDIF ENDWHILE IF NOT IS_CAR_DEAD car2_grove1 SET_CAR_DRIVING_STYLE car2_grove1 2 SET_CAR_CRUISE_SPEED car2_grove1 30.0 CAR_GOTO_COORDINATES car2_grove1 1946.0 -1132.0 25.0 ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS PRINT_NOW (GM1_12) 8000 1 //"Big Bear is dead!" GOTO mission_grove1_failed ENDIF WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_CHAR_DEAD sweet_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_4) 5000 1 //"Sweets dead!" GOTO mission_grove1_failed ENDIF IF IS_CHAR_DEAD big_bear_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_12) 8000 1 //"Big Bear is dead!" GOTO mission_grove1_failed ENDIF IF IS_CAR_DEAD car2_grove1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_12) 8000 1 //"Big Bear is dead!" GOTO mission_grove1_failed ENDIF ENDWHILE CLEAR_THIS_PRINT (GRO1_BE) CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 IF NOT IS_CHAR_DEAD big_bear_grove1 STOP_CHAR_FACIAL_TALK big_bear_grove1 ELSE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 PRINT_NOW (GM1_12) 8000 1 //"Big Bear is dead!" GOTO mission_grove1_failed ENDIF WAIT 2000 REMOVE_CHAR_ELEGANTLY big_bear_grove1 REMOVE_CHAR_ELEGANTLY sweet_grove1 DELETE_CAR car2_grove1 MAKE_PLAYER_GANG_REAPPEAR SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_EVERYONE_IGNORE_PLAYER player1 FALSE SET_POLICE_IGNORE_PLAYER player1 FALSE SWITCH_PED_ROADS_BACK_TO_ORIGINAL 1965.968 -1096.668 20.0 2081.465 -1163.309 30.0 cut_watched_grove1 = 1 SKIP_CUTSCENE_END IF cut_watched_grove1 = 0 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE MAKE_PLAYER_GANG_REAPPEAR SWITCH_WIDESCREEN OFF CLEAR_PRINTS REMOVE_CHAR_ELEGANTLY big_bear_grove1 REMOVE_CHAR_ELEGANTLY sweet_grove1 DELETE_CAR car2_grove1 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 1965.968 -1096.668 20.0 2081.465 -1163.309 30.0 SET_CHAR_COORDINATES scplayer 2002.105 -1129.403 24.484 SET_CHAR_HEADING scplayer 180.0 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF SWITCH_WIDESCREEN OFF SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_EVERYONE_IGNORE_PLAYER player1 OFF SET_POLICE_IGNORE_PLAYER player1 OFF GOTO mission_grove1_passed // **************************************** Mission grove1 failed ************************ mission_grove1_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" SET_ZONE_GANG_STRENGTH GLN1 GANG_FLAT 40 SET_ZONE_GANG_STRENGTH GLN1 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH GLN1 GANG_NMEX stored_nmex_strength_grove1 SET_ZONE_GANG_STRENGTH GLN1 GANG_SMEX stored_smex_strength_grove1 CAN_TRIGGER_GANG_WAR_WHEN_ON_A_MISSION FALSE RETURN // **************************************** mission grove1 passed ************************* mission_grove1_passed: flag_grove_mission_counter ++ REGISTER_MISSION_PASSED (GROVE_1) //Used in the stats PLAYER_MADE_PROGRESS 1 PRINT_WITH_NUMBER_BIG ( M_PASSR ) 10 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 40 //amount of respect CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 REMOVE_BLIP grove_contact_blip REMOVE_BLIP intro_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ grove_blip_icon grove_contact_blip RETURN // ********************************** mission cleanup ************************************ mission_cleanup_grove1: REMOVE_CHAR_ELEGANTLY sweet_grove1 flag_player_on_mission = 0 SWITCH_PED_ROADS_BACK_TO_ORIGINAL 1965.968 -1096.668 20.0 2081.465 -1163.309 30.0 SET_AREA_VISIBLE 0 CLEAR_SPECIFIC_ZONES_TO_TRIGGER_GANG_WAR GET_GAME_TIMER timer_mobile_start CLEAR_ONSCREEN_COUNTER sweets_health_grove1 UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS3 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED AK47 MARK_MODEL_AS_NO_LONGER_NEEDED INFERNUS REMOVE_ANIMATION GANGS // old house blip REMOVE_BLIP old_house_blip_grove1 // park stuff REMOVE_BLIP park_blip_grove1 // sweet REMOVE_BLIP sweet_blip_grove1 // bdup REMOVE_BLIP dbup_house_blip_grove1 // guard blips REMOVE_BLIP bdup_guard1_blip_grove1 REMOVE_BLIP bdup_guard2_blip_grove1 REMOVE_BLIP bdup_guard3_blip_grove1 REMOVE_BLIP bdup_guard4_blip_grove1 REMOVE_BLIP bdup_guard5_blip_grove1 REMOVE_BLIP bdup_guard6_blip_grove1 REMOVE_BLIP bdup_guard7_blip_grove1 REMOVE_BLIP bdup_guard8_blip_grove1 // sequences CLEAR_SEQUENCE_TASK guard5_seq_grove1 CLEAR_SEQUENCE_TASK guard6_seq_grove1 CLEAR_SEQUENCE_TASK guard7_seq_grove1 CLEAR_SEQUENCE_TASK guard8_seq_grove1 // Decision Makers REMOVE_DECISION_MAKER tough_duck_dm_grove1 REMOVE_DECISION_MAKER tough_decisionmaker_grove1 CAN_TRIGGER_GANG_WAR_WHEN_ON_A_MISSION FALSE MISSION_HAS_FINISHED RETURN // gives dbup guys ai to attack player give_dbup_ai_grove1: IF NOT IS_CHAR_DEAD bdup_guard5_grove1 OPEN_SEQUENCE_TASK guard5_seq_grove1 TASK_GO_STRAIGHT_TO_COORD -1 1996.934 -1122.258 25.760 PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE // TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK guard5_seq_grove1 CLEAR_CHAR_TASKS bdup_guard5_grove1 PERFORM_SEQUENCE_TASK bdup_guard5_grove1 guard5_seq_grove1 CLEAR_SEQUENCE_TASK guard5_seq_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard6_grove1 OPEN_SEQUENCE_TASK guard6_seq_grove1 TASK_GO_STRAIGHT_TO_COORD -1 2004.069 -1122.884 25.584 PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE // TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK guard6_seq_grove1 CLEAR_CHAR_TASKS bdup_guard6_grove1 PERFORM_SEQUENCE_TASK bdup_guard6_grove1 guard6_seq_grove1 CLEAR_SEQUENCE_TASK guard6_seq_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard7_grove1 OPEN_SEQUENCE_TASK guard7_seq_grove1 TASK_GO_STRAIGHT_TO_COORD -1 2006.758 -1122.695 25.493 PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE // TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK guard7_seq_grove1 CLEAR_CHAR_TASKS bdup_guard7_grove1 PERFORM_SEQUENCE_TASK bdup_guard7_grove1 guard7_seq_grove1 CLEAR_SEQUENCE_TASK guard7_seq_grove1 ENDIF IF NOT IS_CHAR_DEAD bdup_guard8_grove1 OPEN_SEQUENCE_TASK guard8_seq_grove1 TASK_GO_STRAIGHT_TO_COORD -1 2015.458 -1121.923 25.243 PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 TRUE TASK_STAY_IN_SAME_PLACE -1 TRUE // TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK guard8_seq_grove1 CLEAR_CHAR_TASKS bdup_guard8_grove1 PERFORM_SEQUENCE_TASK bdup_guard8_grove1 guard8_seq_grove1 CLEAR_SEQUENCE_TASK guard8_seq_grove1 ENDIF dbup_guys_got_ai_grove1 = 1 RETURN load_and_play_audio_grove1: IF grove1_audio_is_playing = 0 OR grove1_audio_is_playing = 1 IF grove1_index <= cell_index_end GOSUB play_grove1_audio ENDIF ENDIF IF grove1_audio_is_playing = 2 IF HAS_MISSION_AUDIO_FINISHED 1 GOSUB stop_mouths_move_grove1 grove1_audio_is_playing = 0 grove1_index ++ grove1_cutscene_flag = 0 CLEAR_PRINTS ENDIF ENDIF RETURN play_grove1_audio: IF grove1_audio_is_playing = 0 LOAD_MISSION_AUDIO 1 grove1_audio_chat[grove1_index] grove1_audio_is_playing = 1 ENDIF IF grove1_audio_is_playing = 1 IF HAS_MISSION_AUDIO_LOADED 1 IF HAS_MISSION_AUDIO_FINISHED 2 PRINT_NOW ( $grove1_chat[grove1_index] ) 4000 1 //Dummy message" PLAY_MISSION_AUDIO 1 GOSUB make_mouths_move_grove1 grove1_audio_is_playing = 2 ENDIF ENDIF ENDIF RETURN make_mouths_move_grove1: IF grove1_chat_switch = GROVE1_CHAT1 IF grove1_index = 0 OR grove1_index = 4 OR grove1_index = 5 OR grove1_index = 6 OR grove1_index = 7 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE START_CHAR_FACIAL_TALK scplayer 999999 ELSE IF NOT IS_CHAR_DEAD sweet_grove1 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 TRUE START_CHAR_FACIAL_TALK sweet_grove1 999999 ENDIF ENDIF ENDIF IF grove1_chat_switch = GROVE1_CHAT2 IF grove1_index = 0 OR grove1_index = 2 OR grove1_index = 3 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE START_CHAR_FACIAL_TALK scplayer 999999 ELSE IF NOT IS_CHAR_DEAD sweet_grove1 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 TRUE START_CHAR_FACIAL_TALK sweet_grove1 999999 ENDIF ENDIF ENDIF IF grove1_chat_switch = GROVE1_CHAT3 IF grove1_index = 1 OR grove1_index = 3 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE START_CHAR_FACIAL_TALK scplayer 999999 ELSE IF NOT IS_CHAR_DEAD sweet_grove1 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 TRUE START_CHAR_FACIAL_TALK sweet_grove1 999999 ENDIF ENDIF ENDIF IF grove1_chat_switch = GROVE1_CHAT4 IF grove1_index = 1 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE START_CHAR_FACIAL_TALK scplayer 999999 ELSE IF NOT IS_CHAR_DEAD sweet_grove1 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 TRUE START_CHAR_FACIAL_TALK sweet_grove1 999999 ENDIF ENDIF ENDIF RETURN stop_mouths_move_grove1: IF grove1_chat_switch = GROVE1_CHAT1 IF grove1_index = 0 OR grove1_index = 4 OR grove1_index = 5 OR grove1_index = 6 OR grove1_index = 7 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer ELSE IF NOT IS_CHAR_DEAD sweet_grove1 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 FALSE STOP_CHAR_FACIAL_TALK sweet_grove1 ENDIF ENDIF ENDIF IF grove1_chat_switch = GROVE1_CHAT2 IF grove1_index = 0 OR grove1_index = 2 OR grove1_index = 3 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer ELSE IF NOT IS_CHAR_DEAD sweet_grove1 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 FALSE STOP_CHAR_FACIAL_TALK sweet_grove1 ENDIF ENDIF ENDIF IF grove1_chat_switch = GROVE1_CHAT3 IF grove1_index = 1 OR grove1_index = 3 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer ELSE IF NOT IS_CHAR_DEAD sweet_grove1 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 FALSE STOP_CHAR_FACIAL_TALK sweet_grove1 ENDIF ENDIF ENDIF IF grove1_chat_switch = GROVE1_CHAT4 IF grove1_index = 1 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE STOP_CHAR_FACIAL_TALK scplayer ELSE IF NOT IS_CHAR_DEAD sweet_grove1 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet_grove1 FALSE STOP_CHAR_FACIAL_TALK sweet_grove1 ENDIF ENDIF ENDIF RETURN // does the guards death checks for the cutscenes guard_death_check_grove1: IF bdup_guard1_dead_grove1 = 0 IF IS_CHAR_DEAD bdup_guard1_grove1 REMOVE_BLIP bdup_guard1_blip_grove1 ++ counter_dbup_guards_dead bdup_guard1_dead_grove1 = 1 ELSE IF flag_kill_player_grove1 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 bdup_guard1_grove1 OR HAS_CHAR_SPOTTED_CHAR bdup_guard1_grove1 scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON bdup_guard1_grove1 WEAPONTYPE_ANYWEAPON flag_kill_player_grove1 = 1 ENDIF ENDIF ENDIF ENDIF IF bdup_guard2_dead_grove1 = 0 IF IS_CHAR_DEAD bdup_guard2_grove1 REMOVE_BLIP bdup_guard2_blip_grove1 ++ counter_dbup_guards_dead bdup_guard2_dead_grove1 = 1 ELSE IF flag_kill_player_grove1 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 bdup_guard2_grove1 OR HAS_CHAR_SPOTTED_CHAR bdup_guard2_grove1 scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON bdup_guard2_grove1 WEAPONTYPE_ANYWEAPON flag_kill_player_grove1 = 1 ENDIF ENDIF ENDIF ENDIF IF bdup_guard3_dead_grove1 = 0 IF IS_CHAR_DEAD bdup_guard3_grove1 REMOVE_BLIP bdup_guard3_blip_grove1 ++ counter_dbup_guards_dead bdup_guard3_dead_grove1 = 1 ELSE IF flag_kill_player_grove1 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 bdup_guard3_grove1 OR HAS_CHAR_SPOTTED_CHAR bdup_guard3_grove1 scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON bdup_guard3_grove1 WEAPONTYPE_ANYWEAPON flag_kill_player_grove1 = 1 ENDIF ENDIF ENDIF ENDIF IF bdup_guard4_dead_grove1 = 0 IF IS_CHAR_DEAD bdup_guard4_grove1 REMOVE_BLIP bdup_guard4_blip_grove1 ++ counter_dbup_guards_dead bdup_guard4_dead_grove1 = 1 ELSE IF flag_kill_player_grove1 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 bdup_guard4_grove1 OR HAS_CHAR_SPOTTED_CHAR bdup_guard4_grove1 scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON bdup_guard4_grove1 WEAPONTYPE_ANYWEAPON flag_kill_player_grove1 = 1 ENDIF ENDIF ENDIF ENDIF IF bdup_guard5_dead_grove1 = 0 IF IS_CHAR_DEAD bdup_guard5_grove1 REMOVE_BLIP bdup_guard5_blip_grove1 ++ counter_dbup_guards_dead bdup_guard5_dead_grove1 = 1 ELSE IF flag_kill_player_grove1 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 bdup_guard5_grove1 OR HAS_CHAR_SPOTTED_CHAR bdup_guard5_grove1 scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON bdup_guard5_grove1 WEAPONTYPE_ANYWEAPON flag_kill_player_grove1 = 1 ENDIF ENDIF ENDIF ENDIF IF bdup_guard6_dead_grove1 = 0 IF IS_CHAR_DEAD bdup_guard6_grove1 REMOVE_BLIP bdup_guard6_blip_grove1 ++ counter_dbup_guards_dead bdup_guard6_dead_grove1 = 1 ELSE IF flag_kill_player_grove1 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 bdup_guard6_grove1 OR HAS_CHAR_SPOTTED_CHAR bdup_guard6_grove1 scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON bdup_guard6_grove1 WEAPONTYPE_ANYWEAPON flag_kill_player_grove1 = 1 ENDIF ENDIF ENDIF ENDIF IF bdup_guard7_dead_grove1 = 0 IF IS_CHAR_DEAD bdup_guard7_grove1 REMOVE_BLIP bdup_guard7_blip_grove1 ++ counter_dbup_guards_dead bdup_guard7_dead_grove1 = 1 ELSE IF flag_kill_player_grove1 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 bdup_guard7_grove1 OR HAS_CHAR_SPOTTED_CHAR bdup_guard7_grove1 scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON bdup_guard7_grove1 WEAPONTYPE_ANYWEAPON flag_kill_player_grove1 = 1 ENDIF ENDIF ENDIF ENDIF IF bdup_guard8_dead_grove1 = 0 IF IS_CHAR_DEAD bdup_guard8_grove1 REMOVE_BLIP bdup_guard8_blip_grove1 ++ counter_dbup_guards_dead bdup_guard8_dead_grove1 = 1 ELSE IF flag_kill_player_grove1 = 0 IF IS_PLAYER_TARGETTING_CHAR player1 bdup_guard8_grove1 OR HAS_CHAR_SPOTTED_CHAR bdup_guard8_grove1 scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_WEAPON bdup_guard8_grove1 WEAPONTYPE_ANYWEAPON flag_kill_player_grove1 = 1 ENDIF ENDIF ENDIF ENDIF RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // *************************************** Grove 2 ***************************************** // ************************************ Grove 4 Life ************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME grove2 // Mission start stuff GOSUB mission_start_grove2 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_grove2_failed ENDIF GOSUB mission_cleanup_grove2 MISSION_END // **************************************** Mission Start ********************************** { mission_start_grove2: // Cutscene MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 LOAD_MISSION_TEXT GROVE2 SET_FADING_COLOUR 0 0 0 REGISTER_MISSION_GIVEN SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE FORCE_WEATHER_NOW WEATHER_SUNNY_LA SET_AREA_VISIBLE 1 LOAD_CUTSCENE GROVE2 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_FADING_COLOUR 0 0 0 DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE RELEASE_WEATHER LOAD_SPECIAL_CHARACTER 1 SWEET REQUEST_MODEL AK47 REQUEST_MODEL GREENWOO LOAD_ALL_MODELS_NOW WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_MODEL_LOADED AK47 OR NOT HAS_MODEL_LOADED GREENWOO WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 // ***************************************************************************************** SWITCH_WIDESCREEN OFF // ***************************************************************************************** LVAR_INT g2_sweet_blip g2_a_var g2_idlewood LVAR_INT g2_message_displayed g2_start_txt g2_bobcat LVAR_INT gang_strength1_grove1 gang_strength1_grove2 LVAR_INT gang_strength1_grove3 gang_strength1_grove4 LVAR_INT gang_strength1_grove5 LVAR_INT g2_flag VAR_INT g2_sweet_hlth g2_idlewood_off g2_rnd LVAR_INT g2_audio LVAR_INT g2_playing LVAR_INT g2_switch[4] LVAR_INT g2_end_level LVAR_INT g2_display_txt LVAR_INT g2_mission LVAR_INT g2_grove LVAR_INT g2_in_the_turf LVAR_INT g2_in_sweets_car LVAR_INT g2_fx_take_a_hood LVAR_TEXT_LABEL g2_print VAR_TEXT_LABEL g2_lab g2_sweet_hlth = 0 g2_idlewood_off = 0 g2_playing = 2 WAIT 0 IF NOT IS_CHAR_DEAD scplayer CLEAR_WANTED_LEVEL player1 // SET_WANTED_MULTIPLIER 0.0 ENDIF SET_PLAYER_GROUP_TO_FOLLOW_ALWAYS player1 TRUE SET_GANG_WARS_ACTIVE TRUE CAN_TRIGGER_GANG_WAR_WHEN_ON_A_MISSION TRUE LOAD_SCENE 2497.324 -1684.744 12.44 SET_CHAR_COORDINATES scplayer 2497.324 -1684.744 12.44 SET_CHAR_HEADING scplayer 0.0 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 2496.633 -1684.573 12.435 sweet // Create car at Hub CUSTOM_PLATE_FOR_NEXT_CAR GREENWOO &GROVE4L_ CREATE_CAR GREENWOO 2507.6990 -1671.7157 12.3823 g2_bobcat CHANGE_CAR_COLOUR g2_bobcat 59 34 SET_CAR_HEADING g2_bobcat 355.4549 SET_CHAR_HEADING sweet 0.0 SET_ANIM_GROUP_FOR_CHAR sweet gang2 GIVE_WEAPON_TO_CHAR sweet WEAPONTYPE_AK47 30000 // set to infinite ammo SET_CHAR_NEVER_TARGETTED sweet TRUE SET_CHAR_SUFFERS_CRITICAL_HITS sweet FALSE MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_Group sweet SET_CHAR_ACCURACY sweet 90 SET_CHAR_HEALTH sweet 1000 SET_CHAR_MAX_HEALTH sweet 1000 SET_CHAR_RELATIONSHIP sweet ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 GET_CHAR_HEALTH sweet g2_sweet_hlth g2_sweet_hlth = g2_sweet_hlth / 10 DISPLAY_ONSCREEN_COUNTER_WITH_STRING g2_sweet_hlth COUNTER_DISPLAY_BAR ( GR2_01 ) //"SWEETS HEALTH" ADD_BLIP_FOR_CHAR sweet g2_sweet_blip SET_BLIP_AS_FRIENDLY g2_sweet_blip TRUE ADD_BLIP_FOR_COORD 2002.8149 -1613.0845 12.3828 g2_idlewood ADD_BLIP_FOR_COORD 2507.1843 -1672.9060 12.3824 g2_grove CHANGE_BLIP_DISPLAY g2_sweet_blip NEITHER CHANGE_BLIP_DISPLAY g2_grove NEITHER // ************************************************************************************************** // // DGG for Grove Gang // // ************************************************************************************************** SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 2.0 TIMERA = 0 SET_ZONE_GANG_STRENGTH IWD3a GANG_GROVE 0 SET_ZONE_GANG_STRENGTH IWD3a GANG_FLAT 100 SET_ZONE_GANG_STRENGTH IWD3b GANG_GROVE 0 SET_ZONE_GANG_STRENGTH IWD3b GANG_FLAT 100 SET_ZONE_GANG_STRENGTH IWD1 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH IWD1 GANG_FLAT 100 SET_ZONE_GANG_STRENGTH IWD4 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH IWD4 GANG_FLAT 100 SET_SPECIFIC_ZONE_TO_TRIGGER_GANG_WAR IWD3a SET_SPECIFIC_ZONE_TO_TRIGGER_GANG_WAR IWD3b SET_SPECIFIC_ZONE_TO_TRIGGER_GANG_WAR IWD1 SET_SPECIFIC_ZONE_TO_TRIGGER_GANG_WAR IWD4 SET_ZONE_NO_COPS IWD3a TRUE SET_ZONE_NO_COPS IWD3b TRUE SET_ZONE_NO_COPS IWD1 TRUE SET_ZONE_NO_COPS IWD4 TRUE WHILE NOT IS_CHAR_DEAD scplayer WAIT 0 GOSUB grove2_keys GOSUB g2_play_sample IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S GOTO mission_grove2_passed ENDIF IF NOT IS_CAR_DEAD g2_bobcat AND NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_CAR scplayer g2_bobcat IF g2_in_sweets_car = 0 SET_RADIO_CHANNEL RS_DISCO_FUNK_SOUL g2_in_sweets_car = 1 ENDIF ENDIF ENDIF IF TIMERA > 4000 AND g2_fx_take_a_hood = 1 GENERATE_RANDOM_INT_IN_RANGE 0 4 g2_rnd SWITCH g2_rnd CASE 0 $g2_print = &GRO2_DA // C'mon, CJ, we gotta take more turf! g2_audio = SOUND_GRO2_DA GOSUB g2_load_sample BREAK CASE 1 $g2_print = &GRO2_DB // We gotta hit another 'hood, keep those Ballas down! g2_audio = SOUND_GRO2_DB GOSUB g2_load_sample BREAK CASE 2 $g2_print = &GRO2_DC // Which Ballas turf we gonna take next, CJ? g2_audio = SOUND_GRO2_DC GOSUB g2_load_sample BREAK CASE 3 $g2_print = &GRO2_DD // We gotta take it to another Ballas neighborhood! g2_audio = SOUND_GRO2_DD GOSUB g2_load_sample BREAK ENDSWITCH g2_fx_take_a_hood = 2 ENDIF IF g2_playing = 2 AND g2_fx_take_a_hood = 2 GENERATE_RANDOM_INT_IN_RANGE 0 2 g2_rnd SWITCH g2_rnd CASE 0 $g2_print = &GRO2_EA // We gotta take another neighbourhood back! g2_audio = SOUND_GRO2_EA GOSUB g2_load_sample BREAK CASE 1 $g2_print = &GRO2_EB // Let's go hoo-ride on these Ballas! g2_audio = SOUND_GRO2_EB GOSUB g2_load_sample BREAK ENDSWITCH g2_fx_take_a_hood = 3 ENDIF IF g2_playing = 2 AND g2_fx_take_a_hood = 3 PRINT_NOW ( GR2_10 ) 7000 1 // ~s~Take over another Idlewood hood. g2_fx_take_a_hood = 4 CHECKPOINT_SAVE 1 ENDIF IF g2_mission = 0 GET_ZONE_GANG_STRENGTH IWD3a GANG_FLAT gang_strength1_grove1 GET_ZONE_GANG_STRENGTH IWD3b GANG_FLAT gang_strength1_grove2 GET_ZONE_GANG_STRENGTH IWD1 GANG_FLAT gang_strength1_grove4 GET_ZONE_GANG_STRENGTH IWD4 GANG_FLAT gang_strength1_grove5 IF g2_start_txt = 0 $g2_print = &GRO2_AA // You got a plan? g2_audio = SOUND_GRO2_AA GOSUB g2_load_sample g2_start_txt = 1 ENDIF IF g2_playing = 2 AND g2_start_txt = 1 $g2_print = &GRO2_AB // Yeah I've got a plan. g2_audio = SOUND_GRO2_AB GOSUB g2_load_sample g2_start_txt = 2 ENDIF IF g2_playing = 2 AND g2_start_txt = 2 $g2_print = &GRO2_AC // We're gonna roll into Ballas turf and take it back for the Grove! g2_audio = SOUND_GRO2_AC GOSUB g2_load_sample g2_start_txt = 3 ENDIF IF g2_playing = 2 AND g2_start_txt = 3 $g2_print = &GRO2_AD // Ok, let's get those motherfuckers! g2_audio = SOUND_GRO2_AD GOSUB g2_load_sample g2_start_txt = 4 ENDIF IF g2_playing = 2 AND g2_start_txt = 4 PRINT_NOW ( GR2_09 ) 7000 1 // ~s~Go and take back ~y~Idlewood~s~! g2_start_txt = 5 ENDIF IF g2_in_the_turf = 1 GENERATE_RANDOM_INT_IN_RANGE 0 4 g2_rnd SWITCH g2_rnd CASE 0 $g2_print = &GRO2_CA // Let's take this hood back for the Grove! g2_audio = SOUND_GRO2_CA GOSUB g2_load_sample BREAK CASE 1 $g2_print = &GRO2_CB // Time to put in some work, CJ! g2_audio = SOUND_GRO2_CB GOSUB g2_load_sample BREAK CASE 2 $g2_print = &GRO2_CC // Let's hit these fools! g2_audio = SOUND_GRO2_CC GOSUB g2_load_sample BREAK CASE 3 $g2_print = &GRO2_CE // Hit 'em hard, CJ! g2_audio = SOUND_GRO2_CE GOSUB g2_load_sample BREAK ENDSWITCH g2_in_the_turf = 2 ENDIF IF g2_playing = 2 AND g2_in_the_turf = 2 PRINT_NOW ( GR2_05 ) 4000 1 // ~s~Shoot some Ballas to start a war! g2_in_the_turf = 3 ENDIF IF IS_PLAYER_IN_INFO_ZONE player1 IWD3a OR IS_PLAYER_IN_INFO_ZONE player1 IWD3b OR IS_PLAYER_IN_INFO_ZONE player1 IWD1 OR IS_PLAYER_IN_INFO_ZONE player1 IWD4 IF g2_message_displayed = 0 g2_message_displayed = 1 IF g2_in_the_turf = 0 g2_in_the_turf = 1 ENDIF ENDIF CHANGE_BLIP_DISPLAY g2_idlewood NEITHER ELSE IF g2_a_var = 1 CHANGE_BLIP_DISPLAY g2_idlewood BOTH ENDIF ENDIF IF gang_strength1_grove1 = 0 AND g2_switch[0] = 0 GOSUB g2_took_the_turf g2_switch[0] = 1 ENDIF IF gang_strength1_grove2 = 0 AND g2_switch[1] = 0 GOSUB g2_took_the_turf g2_switch[1] = 1 ENDIF IF gang_strength1_grove4 = 0 AND g2_switch[2] = 0 GOSUB g2_took_the_turf g2_switch[2] = 1 ENDIF IF gang_strength1_grove5 = 0 AND g2_switch[3] = 0 GOSUB g2_took_the_turf g2_switch[3] = 1 ENDIF ENDIF // ***************************************************************************************** // * * // * Sweet death check * // * * // ***************************************************************************************** IF NOT IS_CHAR_DEAD sweet GET_CHAR_HEALTH sweet g2_sweet_hlth g2_sweet_hlth = g2_sweet_hlth / 10 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sweet 30.0 30.0 FALSE IF g2_a_var = 0 IF NOT IS_GROUP_MEMBER sweet Players_Group MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_Group sweet ENDIF CHANGE_BLIP_DISPLAY g2_sweet_blip NEITHER IF g2_mission = 0 // CHANGE_BLIP_DISPLAY g2_idlewood BOTH ENDIF IF g2_mission = 1 // CHANGE_BLIP_DISPLAY g2_grove BOTH ENDIF g2_idlewood_off = 0 g2_a_var = 1 ENDIF ELSE IF g2_a_var = 1 PRINT_NOW ( GR2_02 ) 4000 1 // ~s~You have left Sweet behind go get him. CHANGE_BLIP_DISPLAY g2_sweet_blip BOTH IF g2_mission = 0 // CHANGE_BLIP_DISPLAY g2_idlewood NEITHER ENDIF IF g2_mission = 1 // CHANGE_BLIP_DISPLAY g2_grove NEITHER ENDIF g2_idlewood_off = 1 g2_a_var = 0 ENDIF ENDIF ELSE PRINT_NOW ( GR2_03 ) 4000 1 // ~r~Sweet's dead! GOTO mission_grove2_failed ENDIF // ***************************************************************************************** // * * // * Going back to Grove Street * // * * // ***************************************************************************************** IF g2_mission = 1 IF g2_display_txt = 1 AND g2_playing = 2 PRINT_NOW ( GR2_11 ) 7000 1 // ~s~Take Sweet back to Grove Street. g2_display_txt = 2 ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2507.1843 -1672.9060 12.3824 4.0 4.0 4.0 TRUE GOTO g2_end_cutscene ENDIF ENDIF ENDWHILE GOTO mission_grove2_failed // **************************************** Took the turf ********************************* g2_took_the_turf: g2_end_level ++ IF g2_fx_take_a_hood = 0 TIMERA = 0 g2_fx_take_a_hood = 1 ENDIF IF g2_end_level = 2 $g2_print = &GRO2_FA // We did it, CJ! let's bail back to Grove Street. g2_audio = SOUND_GRO2_FA GOSUB g2_load_sample g2_mission = 1 CHANGE_BLIP_DISPLAY g2_grove BOTH CHANGE_BLIP_DISPLAY g2_idlewood NEITHER CLEAR_AREA 2507.1843 -1672.9060 12.3824 10.0 TRUE IF NOT IS_CAR_DEAD g2_bobcat IF LOCATE_CAR_3D g2_bobcat 2507.1843 -1672.9060 12.3824 4.0 4.0 4.0 FALSE DELETE_CAR g2_bobcat ENDIF ENDIF ENDIF RETURN // **************************************** mission grove2 failed ************************** mission_grove2_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // **************************************** mission grove2 passed ************************** mission_grove2_passed: REMOVE_BLIP grove_contact_blip flag_grove_mission_counter ++ PLAYER_MADE_PROGRESS 1 REGISTER_MISSION_PASSED ( GROVE_2 ) //Used in the stats PRINT_WITH_NUMBER_BIG ( M_PASSS ) 10000 5000 1 //"Mission Passed!" //100 being the amount of cash ADD_SCORE player1 10000//amount of cash AWARD_PLAYER_MISSION_RESPECT 40 //amount of respect PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL player1 RETURN // ********************************** mission cleanup ************************************ mission_cleanup_grove2: SET_ZONE_NO_COPS IWD3a FALSE SET_ZONE_NO_COPS IWD3b FALSE SET_ZONE_NO_COPS IWD1 FALSE SET_ZONE_NO_COPS IWD4 FALSE CLEAR_SPECIFIC_ZONES_TO_TRIGGER_GANG_WAR CAN_TRIGGER_GANG_WAR_WHEN_ON_A_MISSION FALSE SET_GANG_WARS_ACTIVE TRUE flag_player_on_mission = 0 IF NOT IS_CHAR_DEAD sweet REMOVE_CHAR_ELEGANTLY sweet ENDIF IF DOES_BLIP_EXIST g2_sweet_blip REMOVE_BLIP g2_sweet_blip ENDIF IF DOES_BLIP_EXIST g2_idlewood REMOVE_BLIP g2_idlewood ENDIF IF DOES_BLIP_EXIST g2_grove REMOVE_BLIP g2_grove ENDIF CLEAR_ONSCREEN_COUNTER g2_sweet_hlth UNLOAD_SPECIAL_CHARACTER 1 MARK_MODEL_AS_NO_LONGER_NEEDED AK47 MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO REMOVE_ANIMATION GANGS GET_GAME_TIMER timer_mobile_start SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 MISSION_HAS_FINISHED RETURN // ********************************** camera stuff ************************************ grove2_set_camera: CLEAR_PRINTS SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF RETURN grove2_restore_camera: CLEAR_PRINTS SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER RETURN grove2_fade_out: DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN grove2_fade_in: DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN grove2_fade: DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN // ***************************************************************************************** // * * // * Keyboard shortcuts * // * * // ***************************************************************************************** grove2_keys: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A gang_strength1_grove2 = 0 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D gang_strength1_grove1 = 0 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F GOTO g2_end_cutscene ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_G SET_CHAR_COORDINATES scplayer 2487.6445 -1668.2043 12.3438 SET_CHAR_HEADING scplayer 265.0722 g2_end_level = 2 g2_mission = 1 CHANGE_BLIP_DISPLAY g2_grove BOTH CLEAR_AREA 2507.1843 -1672.9060 12.3824 10.0 TRUE ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K GOSUB g2_took_the_turf ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H ENDIF RETURN g2_end_cutscene: GOSUB grove2_fade_out GOSUB grove2_set_camera CLEAR_PRINTS REQUEST_ANIMATION GANGS WHILE NOT HAS_ANIMATION_LOADED GANGS WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD sweet REMOVE_CHAR_FROM_GROUP sweet CLEAR_AREA 2512.7610 -1672.5204 12.5034 50.0 TRUE IF IS_CHAR_IN_ANY_CAR scplayer SET_CHAR_COORDINATES scplayer 2496.5525 -1682.4392 12.3542 // The added coordinates lines fix a problem with the release build where Sweet is not being moved into the cutscene, // which is deleting him from the pool of peds and crashing when CJ is tasked to look at him, (TASK_LOOK_AT_CHAR @ line 1082) SET_CHAR_COORDINATES sweet 2514.7876 -1673.9382 12.6861 // WDAaron SET_CHAR_HEADING scplayer 270.6489 WARP_CHAR_FROM_CAR_TO_COORD scplayer 2512.7610 -1672.5204 12.5034 WARP_CHAR_FROM_CAR_TO_COORD sweet 2514.7876 -1673.9382 12.6861 // WDAaron ELSE SET_CHAR_COORDINATES scplayer 2512.7610 -1672.5204 12.5034 SET_CHAR_COORDINATES sweet 2514.7876 -1673.9382 12.6861 // WDAaron ENDIF IF NOT IS_CAR_DEAD g2_bobcat DELETE_CAR g2_bobcat ENDIF SET_CHAR_HEADING scplayer 240.2609 TASK_TURN_CHAR_TO_FACE_CHAR scplayer sweet IF IS_CHAR_IN_ANY_CAR sweet WARP_CHAR_FROM_CAR_TO_COORD sweet 2514.7876 -1673.9382 12.6861 ELSE SET_CHAR_COORDINATES sweet 2514.7876 -1673.9382 12.6861 ENDIF SET_CHAR_HEADING sweet 73.5014 TASK_TURN_CHAR_TO_FACE_CHAR sweet scplayer TASK_TOGGLE_PED_THREAT_SCANNER sweet FALSE FALSE FALSE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY sweet SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED SET_CURRENT_CHAR_WEAPON sweet WEAPONTYPE_UNARMED ENDIF SET_PED_DENSITY_MULTIPLIER 0.0 SET_FIXED_CAMERA_POSITION 2509.7981 -1672.1747 13.4192 0.0 0.0 0.0 // Player enters car POINT_CAMERA_AT_POINT 2510.7522 -1672.4573 13.5178 JUMP_CUT CLEAR_PRINTS GOSUB grove2_fade_in IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer PRTIAL_HNDSHK_01 GANGS 4.0 FALSE FALSE FALSE FALSE -1 WAIT 500 ENDIF IF NOT IS_CHAR_DEAD sweet TASK_PLAY_ANIM sweet PRTIAL_HNDSHK_01 GANGS 4.0 FALSE FALSE FALSE FALSE -1 WAIT 500 ENDIF CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_GRO2_GA // You helped the Grove Street Families hammer those Ballas fools! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( GRO2_GA ) 4000 1 // You helped the Grove Street Families hammer those Ballas fools! TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO g2_skip_the_cut_10 ENDIF ENDWHILE IF NOT IS_CHAR_DEAD sweet TASK_PLAY_ANIM sweet PRTIAL_gngtlkC GANGS 4.0 FALSE FALSE FALSE FALSE -1 ENDIF CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_GRO2_GB // Johnson boys rolled right over them! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( GRO2_GB ) 4000 1 // Johnson boys rolled right over them! TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO g2_skip_the_cut_10 ENDIF ENDWHILE CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_GRO2_GC // Ok, dog, I'm going to get some sleep, I'm beat. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( GRO2_GC ) 4000 1 // Ok, dog, I'm going to get some sleep, I'm beat. TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO g2_skip_the_cut_10 ENDIF ENDWHILE // SET_FIXED_CAMERA_POSITION 2511.7495 -1673.3112 13.3167 0.0 0.0 0.0 // Player enters car // POINT_CAMERA_AT_POINT 2512.6335 -1672.9690 13.6351 JUMP_CUT IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS_IMMEDIATELY sweet TASK_GO_TO_COORD_ANY_MEANS sweet 2513.6831 -1672.8765 12.5412 PEDMOVE_WALK -1 ENDIF IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_LOOK_AT_CHAR scplayer sweet 10000 ENDIF CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_GRO2_GD // Here, I took this from one of those Ballas fools. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( GRO2_GD ) 4000 1 // Here, I took this from one of those Ballas fools. TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO g2_skip_the_cut_10 ENDIF ENDWHILE IF NOT IS_CHAR_DEAD sweet TASK_PLAY_ANIM sweet PRTIAL_HNDSHK_biz_01 GANGS 4.0 FALSE FALSE FALSE FALSE -1 ENDIF IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer PRTIAL_HNDSHK_biz_01 GANGS 4.0 FALSE FALSE FALSE FALSE -1 ENDIF CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_GRO2_GE // Probably base money, here's your half WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( GRO2_GE ) 4000 1 // Probably base money, here's your half TIMERB = 0 WHILE NOT HAS_MISSION_AUDIO_FINISHED 1 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO g2_skip_the_cut_10 ENDIF ENDWHILE IF NOT IS_CHAR_DEAD sweet CLEAR_CHAR_TASKS_IMMEDIATELY sweet TASK_GO_TO_COORD_ANY_MEANS sweet 2516.2642 -1675.2539 12.9287 PEDMOVE_WALK -1 ENDIF TIMERB = 0 WHILE TIMERB < 2000 WAIT 0 IF IS_SKIP_CUTSCENE_BUTTON_PRESSED GOTO g2_skip_the_cut_10 ENDIF ENDWHILE GOSUB grove2_fade_out g2_skip_the_cut_10: REMOVE_ANIMATION GANGS DELETE_CHAR sweet IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer 2512.4070 -1672.1110 12.4895 SET_CHAR_HEADING scplayer 78.5658 ENDIF GOSUB grove2_restore_camera SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAMERA_BEHIND_PLAYER GOSUB grove2_fade_in GOTO mission_grove2_passed g2_load_sample: CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 g2_audio g2_playing = 0 RETURN g2_play_sample: IF HAS_MISSION_AUDIO_LOADED 1 AND g2_playing = 0 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $g2_print ) 10000 1 g2_playing = 1 ENDIF IF HAS_MISSION_AUDIO_FINISHED 1 AND g2_playing = 1 CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT $g2_print g2_playing = 2 ENDIF RETURN } /* {--------------------------------------GROVE2---------------------------------------------} [GR2_01:GROVE2] SWEETS HEALTH: [GR2_02:GROVE2] ~s~You have left Sweet behind go get him. [GR2_03:GROVE2] ~r~Sweets dead! [GR2_04:GROVE2] Sweet : Let's do it Carl! shoot those mofo's [GR2_05:GROVE2] ~s~Shoot some Ballas to start a war! [GR2_06:GROVE2] Sweet : Where we going, homie? [GR2_07:GROVE2] Carl : Ballas turf, you ready Dog? [GR2_08:GROVE2] Sweet : Let's get those motherfuckers! [GR2_09:GROVE2] ~s~Go and take back Idlewood! */ MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // *************************************** Riot 1 ****************************************** // **************************************** Riot ******************************************* // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME riot1 // Mission start stuff GOSUB mission_start_riot1 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_riot1_failed ENDIF GOSUB mission_cleanup_riot1 MISSION_END { // Variables for mission //people VAR_INT r1_sweets_car r1_cesars_car r1_mothership //blips LVAR_INT r1_control_blip //flags LVAR_INT r1_goals r1_control_flag r1_skip_cutscene_flag r1_deathcheck_flag LVAR_INT r1_car_check_flag //speech LVAR_INT r1_speech_goals r1_speech_control_flag r1_speech_flag r1_random_last_label LVAR_TEXT_LABEL r1_print_label[15] LVAR_INT r1_audio_label[15] LVAR_INT r1_last_label LVAR_INT r1_slot1 r1_slot2 r1_slot_load r1_play_which_slot LVAR_INT r1_storing_speech_goals_number r1_storing_speech_control_number //coords //sequences/decision makers/threat lists/attractors/groups VAR_INT r1_empty_decision_maker r1_seq // **************************************** Mission Start ********************************** mission_start_riot1: REGISTER_MISSION_GIVEN flag_player_on_mission = 1 LOAD_MISSION_TEXT RIOT1 CLEAR_PRINTS WAIT 0 // *************************************Set Flags/variables********************************* r1_goals = 0 r1_control_flag = 0 r1_skip_cutscene_flag = 0 r1_deathcheck_flag = 0 r1_car_check_flag = 0 r1_speech_goals = 0 r1_speech_control_flag = 0 r1_speech_flag = 0 r1_random_last_label = 0 r1_last_label = 0 r1_slot1 = 0 r1_slot2 = 0 r1_slot_load = 0 r1_play_which_slot = 0 r1_storing_speech_goals_number = 0 r1_storing_speech_control_number = 0 // ****************************************START OF CUTSCENE******************************** MAKE_PLAYER_GANG_DISAPPEAR SET_AREA_VISIBLE 5 LOAD_CUTSCENE RIOT_1A WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE IF NOT WAS_CUTSCENE_SKIPPED LOAD_CUTSCENE RIOT_1B WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_CUTSCENE ENDIF SET_AREA_VISIBLE 0 MAKE_PLAYER_GANG_REAPPEAR SET_PLAYER_CONTROL player1 OFF // *****************************************END OF CUTSCENE******************************* SET_FADING_COLOUR 0 0 0 WAIT 0 //------------------REQUEST_MODELS ------------------------------ SET_LA_RIOTS ON SET_INT_STAT STARTED_RIOT1 1 REQUEST_MODEL GREENWOO REQUEST_MODEL SAVANNA REQUEST_MODEL CAMPER LOAD_SPECIAL_CHARACTER 1 sweet LOAD_ALL_MODELS_NOW COPY_CHAR_DECISION_MAKER DM_PED_EMPTY r1_empty_decision_maker LOAD_SCENE 1254.68 -789.39 91.03 //creating truth's car CLEAR_AREA 1242.9 -805.4 82.9 20.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR CAMPER OUTTHERE CREATE_CAR CAMPER 1242.9 -805.4 82.9 r1_mothership SET_CAR_HEADING r1_mothership 0.0 CHANGE_CAR_COLOUR r1_mothership 1 1 GIVE_VEHICLE_PAINTJOB r1_mothership 0 SET_CAN_RESPRAY_CAR r1_mothership FALSE //creating cesar's car CLEAR_AREA 1249.1 -804.9 82.9 5.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR SAVANNA &_LVA4L__ CREATE_CAR SAVANNA 1249.1 -804.9 82.9 r1_cesars_car SET_CAR_HEADING r1_cesars_car 177.7 CHANGE_CAR_COLOUR r1_cesars_car 3 3 //sweets car CLEAR_AREA 1254.3 -806.6 82.9 5.0 TRUE CUSTOM_PLATE_FOR_NEXT_CAR GREENWOO GROVE4L_ CREATE_CAR GREENWOO 1254.3 -806.6 82.9 r1_sweets_car CHANGE_CAR_COLOUR r1_sweets_car 59 34 SET_CAR_HEADING r1_sweets_car 177.7 //player CLEAR_AREA 1258.2 -814.4 83.1 60.0 TRUE SET_CHAR_COORDINATES scplayer 1258.2 -814.4 83.1 SET_CHAR_HEADING scplayer 40.0 //sweet CLEAR_AREA 1257.6 -816.6 83.1 5.0 TRUE CREATE_CHAR PEDTYPE_MISSION2 SPECIAL01 1257.6 -816.6 83.1 sweet SET_CHAR_HEADING sweet 39.9 SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR sweet FALSE SET_CHAR_NEVER_TARGETTED sweet TRUE SET_CHAR_CANT_BE_DRAGGED_OUT sweet TRUE SET_CHAR_DECISION_MAKER sweet r1_empty_decision_maker SET_CHAR_ONLY_DAMAGED_BY_PLAYER sweet TRUE OPEN_SEQUENCE_TASK r1_seq TASK_GO_STRAIGHT_TO_COORD -1 1252.4 -810.3 83.1 PEDMOVE_WALK -1 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER -1 r1_sweets_car -1 0 CLOSE_SEQUENCE_TASK r1_seq PERFORM_SEQUENCE_TASK sweet r1_seq CLEAR_SEQUENCE_TASK r1_seq //starting intro scripted cut of player, smoke and sweet getting into the car SWITCH_WIDESCREEN ON HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_FIXED_CAMERA_POSITION 1257.8 -815.0 84.7 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1246.3 -802.5 82.7 JUMP_CUT SHUT_ALL_CHARS_UP TRUE ENABLE_AMBIENT_CRIME FALSE mission_riot1_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_riot1_passed ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// DEATHCHECKS /////////////////////////////////////////////////////////////////////////////////// GOSUB r1_death_checks IF r1_deathcheck_flag = 1 GOTO mission_riot1_failed ENDIF IF r1_goals = 0 IF r1_control_flag = 0 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 r1_speech_goals = 0 //player entering car SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_DRIVER scplayer r1_sweets_car -1 //sweet entering car OPEN_SEQUENCE_TASK r1_seq TASK_GO_STRAIGHT_TO_COORD -1 1252.4 -810.3 83.1 PEDMOVE_WALK -1 SET_NEXT_DESIRED_MOVE_STATE PEDMOVE_WALK TASK_ENTER_CAR_AS_PASSENGER -1 r1_sweets_car -1 0 CLOSE_SEQUENCE_TASK r1_seq PERFORM_SEQUENCE_TASK sweet r1_seq CLEAR_SEQUENCE_TASK r1_seq DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r1_death_checks IF r1_deathcheck_flag = 1 GOTO mission_riot1_failed ENDIF //Ok, so what's the plan? r1_speech_goals = 1 r1_speech_control_flag = 0 GOSUB r1_dialogue_setup r1_control_flag = 1 r1_skip_cutscene_flag = 1 SKIP_CUTSCENE_START ENDIF IF r1_control_flag = 1 IF r1_speech_goals = 0 IF IS_CHAR_IN_CAR scplayer r1_sweets_car IF IS_CHAR_IN_CAR sweet r1_sweets_car r1_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB r1_death_checks IF r1_deathcheck_flag = 1 GOTO mission_riot1_failed ENDIF IF r1_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 r1_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r1_death_checks IF r1_deathcheck_flag = 1 GOTO mission_riot1_failed ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer WARP_CHAR_INTO_CAR scplayer r1_sweets_car CLEAR_CHAR_TASKS_IMMEDIATELY sweet WARP_CHAR_INTO_CAR_AS_PASSENGER sweet r1_sweets_car 0 ENDIF r1_car_check_flag = 1 SHUT_ALL_CHARS_UP FALSE ADD_BLIP_FOR_COORD 2505.4 -1670.6 12.1 r1_control_blip HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON PRINT_NOW ( R1_01 ) 7000 1 //Drive back to Grove. timerb = 0 //if cutscene has been skipped IF r1_skip_cutscene_flag = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r1_death_checks IF r1_deathcheck_flag = 1 GOTO mission_riot1_failed ENDIF ENDIF r1_goals = 1 ENDIF ENDIF ENDIF ENDIF ENDIF //waiting for player to reach sweets house IF r1_goals = 1 ////////////DEBUG////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q IF IS_CHAR_IN_CAR scplayer r1_sweets_car SET_CAR_COORDINATES r1_sweets_car 2495.7 -1666.3 12.1 SET_CAR_HEADING r1_sweets_car 254.2 ENDIF ENDIF ////////////DEBUG////////////////// // PLAYING RANDOM SPEECH IF r1_speech_flag = 0 IF r1_speech_goals = 0 IF timerb > 10000 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet TRUE // There ain't no justice, man. r1_speech_goals = 2 r1_speech_control_flag = 0 GOSUB r1_dialogue_setup r1_speech_flag = 1 ENDIF ENDIF ENDIF IF r1_speech_flag = 1 IF r1_speech_goals = 0 IF timerb > 7000 // So who's the weird brit? r1_speech_goals = 3 r1_speech_control_flag = 0 GOSUB r1_dialogue_setup r1_speech_flag = 2 ENDIF ENDIF ENDIF IF r1_speech_flag = 2 IF IS_CHAR_IN_CAR scplayer r1_sweets_car IF IS_CHAR_IN_AREA_2D scplayer 2955.5 -1240.1 1192.2 -1855.3 FALSE IF r1_speech_goals = 0 IF timerb > 7000 MARK_CAR_AS_NO_LONGER_NEEDED r1_mothership MARK_CAR_AS_NO_LONGER_NEEDED r1_cesars_car // Shit, look at this place, even old ladies robbing shit! r1_speech_goals = 4 r1_speech_control_flag = 0 GOSUB r1_dialogue_setup r1_speech_flag = 3 ENDIF ENDIF ENDIF ENDIF ENDIF IF r1_speech_flag = 3 IF IS_CHAR_IN_CAR scplayer r1_sweets_car IF IS_CHAR_IN_AREA_2D scplayer 2955.5 -1240.1 1192.2 -1855.3 FALSE IF r1_speech_goals = 0 IF timerb > 7000 // Shit, man, people real mad! r1_speech_goals = 5 r1_speech_control_flag = 0 GOSUB r1_dialogue_setup r1_speech_flag = 4 ENDIF ENDIF ENDIF ENDIF ENDIF IF r1_speech_flag = 4 IF IS_CHAR_IN_CAR scplayer r1_sweets_car IF IS_CHAR_IN_AREA_2D scplayer 2955.5 -1240.1 1192.2 -1855.3 FALSE IF r1_speech_goals = 0 IF timerb > 7000 // Everything's burning. r1_speech_goals = 6 r1_speech_control_flag = 0 GOSUB r1_dialogue_setup r1_speech_flag = 5 ENDIF ENDIF ENDIF ENDIF ENDIF IF r1_speech_flag = 5 IF r1_speech_goals = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH sweet FALSE r1_speech_flag = 6 ENDIF ENDIF // MAIN BIT IF IS_CHAR_IN_CAR scplayer r1_sweets_car IF IS_CHAR_IN_CAR sweet r1_sweets_car IF LOCATE_CHAR_IN_CAR_3D scplayer 2505.4 -1670.6 12.1 4.0 4.0 4.0 TRUE SET_PLAYER_CONTROL player1 OFF r1_control_flag = 0 r1_goals = 2 ENDIF ENDIF ENDIF ENDIF //end cutscene IF r1_goals = 2 IF r1_control_flag = 0 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 r1_speech_goals = 0 SWITCH_WIDESCREEN ON HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SHUT_ALL_CHARS_UP TRUE //Shit don't look too bad... r1_speech_goals = 7 r1_speech_control_flag = 0 GOSUB r1_dialogue_setup r1_control_flag = 1 r1_control_flag = 1 ENDIF IF r1_control_flag = 1 IF r1_speech_goals = 0 OPEN_SEQUENCE_TASK r1_seq TASK_LEAVE_ANY_CAR -1 TASK_GO_STRAIGHT_TO_COORD -1 2518.9 -1678.2 13.5 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK r1_seq PERFORM_SEQUENCE_TASK sweet r1_seq CLEAR_SEQUENCE_TASK r1_seq timera = 0 r1_control_flag = 2 ENDIF ENDIF IF r1_control_flag = 2 IF timera > 4000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DELETE_CHAR sweet HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SHUT_ALL_CHARS_UP FALSE DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_riot1_passed ENDIF ENDIF ENDIF //blippage IF r1_goals > 0 GOSUB r1_blippage ENDIF //dialogue GOSUB r1_overall_dialogue GOTO mission_riot1_loop // **************************************** Mission riot1 failed ************************ mission_riot1_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // **************************************** mission riot1 passed ************************* mission_riot1_passed: flag_riot_mission_counter ++ SET_INT_STAT PASSED_RIOT1 1 REGISTER_MISSION_PASSED ( RIOT_1 ) //Used in the stats PRINT_WITH_NUMBER_BIG ( M_PASSD ) 0 5000 1 //mission passed PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL player1 REMOVE_BLIP mansion_contact_blip REMOVE_BLIP sweet_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip PLAYER_MADE_PROGRESS 1 RETURN // ********************************** mission cleanup ************************************ mission_cleanup_riot1: IF IS_STRING_EMPTY $shop_name RESTORE_CAMERA_JUMPCUT ENDIF SHUT_ALL_CHARS_UP FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO MARK_MODEL_AS_NO_LONGER_NEEDED SAVANNA MARK_MODEL_AS_NO_LONGER_NEEDED CAMPER REMOVE_CHAR_ELEGANTLY sweet UNLOAD_SPECIAL_CHARACTER 1 REMOVE_BLIP r1_control_blip ENABLE_AMBIENT_CRIME TRUE GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////// GOSUBS /////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// r1_death_checks://///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF IS_CHAR_DEAD sweet CLEAR_PRINTS PRINT_NOW ( R1_02 ) 7000 1 //You killed Sweet! r1_deathcheck_flag = 1 ENDIF IF IS_CAR_DEAD r1_sweets_car CLEAR_PRINTS PRINT_NOW ( R1_04 ) 7000 1 //Sweet's car has been destroyed! r1_deathcheck_flag = 1 ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// r1_blippage://///////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //sorting the blippage IF r1_car_check_flag = 0 IF IS_CHAR_IN_CAR scplayer r1_sweets_car CLEAR_THIS_PRINT R1_03 REMOVE_BLIP r1_control_blip ADD_BLIP_FOR_COORD 2505.4 -1670.6 12.1 r1_control_blip // sweets house r1_car_check_flag = 1 ENDIF ENDIF IF r1_car_check_flag = 1 IF NOT IS_CHAR_IN_CAR scplayer r1_sweets_car REMOVE_BLIP r1_control_blip ADD_BLIP_FOR_CAR r1_sweets_car r1_control_blip SET_BLIP_AS_FRIENDLY r1_control_blip TRUE r1_car_check_flag = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// r1_overall_dialogue://///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF r1_goals = 1 IF IS_CHAR_SITTING_IN_CAR scplayer r1_sweets_car IF r1_speech_goals = 2 //There ain't no justice, man. OR r1_speech_goals = 3 //So who's the weird brit? OR r1_speech_goals = 4 //Shit, look at this place, even old ladies robbing shit! OR r1_speech_goals = 5 //Shit, man, people real mad! OR r1_speech_goals = 6 //Put your foot down! IF r1_speech_control_flag < r1_last_label GOSUB r1_loading_dialogue GOSUB r1_playing_dialogue IF NOT IS_CHAR_DEAD sweet GOSUB r1_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $r1_print_label[r1_speech_control_flag] r1_slot1 = 0 r1_slot2 = 0 ENDIF ELSE timerb = 0 r1_speech_goals = 0 ENDIF ENDIF ENDIF IF NOT IS_CHAR_IN_CAR scplayer r1_sweets_car IF r1_speech_goals < 11 IF r1_speech_control_flag < r1_last_label r1_speech_control_flag ++ ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_PRINTS CLEAR_THIS_PRINT $r1_print_label[r1_speech_control_flag] r1_storing_speech_goals_number = r1_speech_goals r1_storing_speech_control_number = r1_speech_control_flag r1_speech_goals = 11 GENERATE_RANDOM_INT_IN_RANGE 0 4 r1_speech_control_flag r1_random_last_label = r1_speech_control_flag + 1 GOSUB r1_dialogue_setup ENDIF ENDIF IF r1_speech_goals = 11 //carl is out of car IF NOT IS_CHAR_IN_CAR scplayer r1_sweets_car IF r1_speech_control_flag < r1_last_label GOSUB r1_loading_dialogue GOSUB r1_playing_dialogue IF r1_control_flag = 0 IF NOT IS_CHAR_DEAD big_smoke OR NOT IS_CHAR_DEAD sweet GOSUB r1_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $r1_print_label[r1_speech_control_flag] r1_slot1 = 0 r1_slot2 = 0 ENDIF ENDIF IF r1_control_flag = 1 IF NOT IS_CHAR_DEAD big_smoke OR NOT IS_CHAR_DEAD sweet OR NOT IS_CHAR_DEAD mc_strap GOSUB r1_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $r1_print_label[r1_speech_control_flag] r1_slot1 = 0 r1_slot2 = 0 ENDIF ENDIF ELSE PRINT_NOW ( R1_03 ) 11000 1 //Get back in Sweet's car. r1_speech_goals = 12 ENDIF ENDIF IF IS_CHAR_SITTING_IN_CAR scplayer r1_sweets_car CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $r1_print_label[r1_speech_control_flag] r1_speech_goals = 13 r1_speech_control_flag = 0 CLEAR_PRINTS ENDIF ENDIF IF r1_speech_goals = 12 //carl has been out of car and has returned IF IS_CHAR_SITTING_IN_CAR scplayer r1_sweets_car r1_speech_goals = 13 r1_speech_control_flag = 0 CLEAR_PRINTS ENDIF ENDIF IF r1_speech_goals = 13 //where player has returned to the car IF IS_CHAR_SITTING_IN_CAR scplayer r1_sweets_car timerb = 0 r1_speech_goals = r1_storing_speech_goals_number r1_speech_control_flag = r1_storing_speech_control_number GOSUB r1_dialogue_setup IF r1_storing_speech_goals_number = 0 PRINT_NOW ( R1_01 ) 7000 1 //Drive back to Grove. ENDIF ENDIF IF NOT IS_CHAR_IN_CAR scplayer r1_sweets_car CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $r1_print_label[r1_speech_control_flag] r1_speech_goals = 11 GENERATE_RANDOM_INT_IN_RANGE 0 4 r1_speech_control_flag r1_random_last_label = r1_speech_control_flag + 1 GOSUB r1_dialogue_setup ENDIF ENDIF ENDIF IF r1_speech_goals = 1 //cutscene at start OR r1_speech_goals = 7 //cutscene at end IF r1_speech_control_flag < r1_last_label GOSUB r1_loading_dialogue GOSUB r1_playing_dialogue GOSUB r1_finishing_dialogue ELSE r1_speech_goals = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// r1_dialogue_setup:///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF r1_speech_goals = 1 $r1_print_label[0] = &ROT1_AA // Shit's real fucked up, man. $r1_print_label[1] = &ROT1_AB // Yeah, but we gonna handle this ourselves. r1_audio_label[0] = SOUND_ROT1_AA r1_audio_label[1] = SOUND_ROT1_AB r1_last_label = 2 ENDIF IF r1_speech_goals = 2 $r1_print_label[0] = &ROT1_BA // There ain't no justice, man. $r1_print_label[1] = &ROT1_BB // How does scum like Tenpennny stay on the streets? $r1_print_label[2] = &ROT1_BC // Man, I dunno, just the way shit stacked I guess. $r1_print_label[3] = &ROT1_BD // Man, this is fucked up. We should take that bastard down ourselves. $r1_print_label[4] = &ROT1_BE // And we will Sweet. r1_audio_label[0] = SOUND_ROT1_BA r1_audio_label[1] = SOUND_ROT1_BB r1_audio_label[2] = SOUND_ROT1_BC r1_audio_label[3] = SOUND_ROT1_BD r1_audio_label[4] = SOUND_ROT1_BE r1_last_label = 5 ENDIF IF r1_speech_goals = 3 $r1_print_label[0] = &ROT1_EA // So who's the weird brit? $r1_print_label[1] = &ROT1_EB // What? Oh, Maccer! $r1_print_label[2] = &ROT1_EC // He got a little problem he can't control. $r1_print_label[3] = &ROT1_ED // What kind of problem? $r1_print_label[4] = &ROT1_EE // He can't, you know, giving himself a little bit. $r1_print_label[5] = &ROT1_EF // What, you mean he likes to consult Professor Hans Jerkov? $r1_print_label[6] = &ROT1_EG // Yeah, regularly. $r1_print_label[7] = &ROT1_EH // Spank the monkey? $r1_print_label[8] = &ROT1_EJ // Yeah! $r1_print_label[9] = &ROT1_EK // Take Palm-ela out? $r1_print_label[10] = &ROT1_EL // Quit it! $r1_print_label[11] = &ROT1_EM // Burp the worm? $r1_print_label[12] = &ROT1_EN // Enough, man! r1_audio_label[0] = SOUND_ROT1_EA r1_audio_label[1] = SOUND_ROT1_EB r1_audio_label[2] = SOUND_ROT1_EC r1_audio_label[3] = SOUND_ROT1_ED r1_audio_label[4] = SOUND_ROT1_EE r1_audio_label[5] = SOUND_ROT1_EF r1_audio_label[6] = SOUND_ROT1_EG r1_audio_label[7] = SOUND_ROT1_EH r1_audio_label[8] = SOUND_ROT1_EJ r1_audio_label[9] = SOUND_ROT1_EK r1_audio_label[10] = SOUND_ROT1_EL r1_audio_label[11] = SOUND_ROT1_EM r1_audio_label[12] = SOUND_ROT1_EN r1_last_label = 13 ENDIF IF r1_speech_goals = 4 $r1_print_label[0] = &ROT1_DA // Shit, look at this place, even old ladies robbing shit! $r1_print_label[1] = &ROT1_DB // I guess it's better than staying home and watching the shopping channel. $r1_print_label[2] = &ROT1_DC // Yeah, go out there and get yourself a bargain! r1_audio_label[0] = SOUND_ROT1_DA r1_audio_label[1] = SOUND_ROT1_DB r1_audio_label[2] = SOUND_ROT1_DC r1_last_label = 3 ENDIF IF r1_speech_goals = 5 $r1_print_label[0] = &ROT1_FA // Shit, man, people real mad! $r1_print_label[1] = &ROT1_FB // Tenpenny's responsible for ALL of this! $r1_print_label[2] = &ROT1_FC // As if the ghetto ain't wrecked enough! $r1_print_label[3] = &ROT1_FD // Come tomorrow, most the Centrals gonna have new TVs. $r1_print_label[4] = &ROT1_FE // Look at them, like angry kids or some shit! $r1_print_label[5] = &ROT1_FF // They just tearing up their own neighbourhoods! $r1_print_label[6] = &ROT1_FG // Nothing good is gonna come of this. r1_audio_label[0] = SOUND_ROT1_FA r1_audio_label[1] = SOUND_ROT1_FB r1_audio_label[2] = SOUND_ROT1_FC r1_audio_label[3] = SOUND_ROT1_FD r1_audio_label[4] = SOUND_ROT1_FE r1_audio_label[5] = SOUND_ROT1_FF r1_audio_label[6] = SOUND_ROT1_FG r1_last_label = 7 ENDIF IF r1_speech_goals = 6 $r1_print_label[0] = &ROT1_GL // Everything's burning. $r1_print_label[1] = &ROT1_GA // Put your foot down! $r1_print_label[2] = &ROT1_FH // Man, the ghetto's tearing itself apart! //$r1_print_label[2] = &ROT1_GB // They coming after us! //$r1_print_label[2] = &ROT1_GC // Ain't this Ballas turf? //$r1_print_label[3] = &ROT1_GD // Ain't this Vagos country? //$r1_print_label[4] = &ROT1_GE // Back up, CJ, back up! //$r1_print_label[5] = &ROT1_GF // Man, most these roads are blocked with shit! //$r1_print_label[6] = &ROT1_GG // The road's blocked! Back up! //$r1_print_label[7] = &ROT1_GH // They've barricaded the road! //$r1_print_label[8] = &ROT1_GJ // Stay away from the National Guard! //$r1_print_label[9] = &ROT1_GK // Stay away from those soldiers, CJ! //$r1_print_label[11] = &ROT1_GM // Can't see shit through this smoke! r1_audio_label[0] = SOUND_ROT1_GL r1_audio_label[1] = SOUND_ROT1_GA r1_audio_label[2] = SOUND_ROT1_FH //r1_audio_label[2] = SOUND_ROT1_GB //r1_audio_label[2] = SOUND_ROT1_GC //r1_audio_label[3] = SOUND_ROT1_GD //r1_audio_label[4] = SOUND_ROT1_GE //r1_audio_label[5] = SOUND_ROT1_GF //r1_audio_label[6] = SOUND_ROT1_GG //r1_audio_label[7] = SOUND_ROT1_GH //r1_audio_label[8] = SOUND_ROT1_GJ //r1_audio_label[9] = SOUND_ROT1_GK //r1_audio_label[11] = SOUND_ROT1_GM r1_last_label = 3 ENDIF IF r1_speech_goals = 7 //$r1_print_label[0] = &ROT1_HA // Shit don't look too bad... //$r1_print_label[1] = &ROT1_HB // It only takes one fool to spread this shit to the Grove. $r1_print_label[0] = &ROT1_HC // I'm gonna gather up some homies, and get the hood locked down. $r1_print_label[1] = &ROT1_HD // You need anything, give me a call. $r1_print_label[2] = &ROT1_HE // I'm gonna check out the city and see what I can see. $r1_print_label[3] = &ROT1_HF // You be careful out there, CJ. //r1_audio_label[0] = SOUND_ROT1_HA //r1_audio_label[1] = SOUND_ROT1_HB r1_audio_label[0] = SOUND_ROT1_HC r1_audio_label[1] = SOUND_ROT1_HD r1_audio_label[2] = SOUND_ROT1_HE r1_audio_label[3] = SOUND_ROT1_HF r1_last_label = 4 ENDIF IF r1_speech_goals = 11 $r1_print_label[0] = &SWE1_BG // CJ, GET IN! $r1_print_label[1] = &SWE1_BK // CJ, c'mon man, hop in. $r1_print_label[2] = &SWE1_BL // C'mon, let's roll, let's step on it. $r1_print_label[3] = &SWE1_BM // Get in, nigga! r1_audio_label[0] = SOUND_SWE1_BG r1_audio_label[1] = SOUND_SWE1_BK r1_audio_label[2] = SOUND_SWE1_BL r1_audio_label[3] = SOUND_SWE1_BM r1_last_label = r1_random_last_label ENDIF r1_slot_load = r1_speech_control_flag r1_slot1 = 0 r1_slot2 = 0 r1_play_which_slot = 1 //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// r1_loading_dialogue://///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF r1_slot_load < r1_last_label //slot 1 IF r1_slot1 = 0 LOAD_MISSION_AUDIO 1 r1_audio_label[r1_slot_load] r1_slot_load ++ r1_slot1 = 1 ENDIF //slot 2 IF r1_slot2 = 0 LOAD_MISSION_AUDIO 2 r1_audio_label[r1_slot_load] r1_slot_load ++ r1_slot2 = 1 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// r1_playing_dialogue://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //slot 1 IF r1_play_which_slot = 1 IF r1_slot1 = 1 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $r1_print_label[r1_speech_control_flag] ) 4500 1 r1_slot1 = 2 ENDIF ENDIF ENDIF //slot 2 IF r1_play_which_slot = 2 IF r1_slot2 = 1 IF HAS_MISSION_AUDIO_LOADED 2 PLAY_MISSION_AUDIO 2 PRINT_NOW ( $r1_print_label[r1_speech_control_flag] ) 4500 1 r1_slot2 = 2 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// r1_finishing_dialogue:////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //slot 1 IF r1_slot1 = 2 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_THIS_PRINT $r1_print_label[r1_speech_control_flag] r1_speech_control_flag ++ r1_play_which_slot = 2 r1_slot1 = 0 ENDIF ENDIF //slot 2 IF r1_slot2 = 2 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT $r1_print_label[r1_speech_control_flag] r1_speech_control_flag ++ r1_play_which_slot = 1 r1_slot2 = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // *************************************** Riot 2 ****************************************** // ************************************* Desperados **************************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME riot2 // Mission start stuff GOSUB mission_start_riot2 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_riot2_failed ENDIF GOSUB mission_cleanup_riot2 MISSION_END { // Variables for mission //people LVAR_INT r2_flame r2_launcher r2_katana LVAR_INT r2_flats_lookout[6] LVAR_INT r2_NW_goons[6] LVAR_INT r2_NE_goons[6] LVAR_INT r2_SW_goons[6] LVAR_INT r2_SE_goons[6] LVAR_INT r2_junk[2] LVAR_INT r2_car_mechanics[6] LVAR_INT r2_garage[4] LVAR_INT r2_climbers[6] LVAR_INT r2_health LVAR_INT r2_gun LVAR_INT r2_random_car LVAR_INT r2_ball //blips LVAR_INT r2_control_blip r2_final_blips[6] LVAR_INT r2_flats_lookout_blips[6] r2_NW_goons_blips[6] r2_NE_goons_blips[6] r2_SW_goons_blips[6] r2_SE_goons_blips[6] LVAR_INT r2_car_mechanics_blips[6] r2_climbers_blips[6] r2_garage_blips[4] //flags LVAR_INT r2_goals r2_control_flag r2_skip_cutscene_flag r2_deathcheck_flag LVAR_INT r2_char_select[2] r2_char_select_flag LVAR_INT r2_runner_control_flag LVAR_INT r2_flats_lookout_control_flag LVAR_INT r2_flats_lookout_flag LVAR_INT r2_NW_control_flag[3] r2_NE_control_flag[3] r2_SW_control_flag[3] r2_SE_control_flag[3] LVAR_INT r2_char_health LVAR_INT r2_og_control_flag LVAR_INT r2_attack_flag LVAR_INT r2_flag_cesar_in_group LVAR_INT r2_random_number LVAR_INT r2_triggering_launcher_death LVAR_INT m5_NE_gang_timer m5_NW_gang_timer m5_SE_gang_timer m5_SW_gang_timer m5_timer_ended m5_timer_difference m5_timer_started LVAR_INT r2_group_size LVAR_INT r2_checking_group_size LVAR_INT random_time LVAR_INT r2_health_check LVAR_INT r2_char_accuracy LVAR_INT r2_context LVAR_FLOAT r2_anim_time LVAR_INT r2_pickup_health //speech LVAR_INT r2_speech_goals r2_speech_control_flag r2_speech_flag r2_random_last_label LVAR_TEXT_LABEL r2_print_label[22] LVAR_INT r2_audio_label[22] LVAR_INT r2_last_label //r2_played_random_speech[2] LVAR_INT r2_slot1 r2_slot2 r2_slot_load r2_play_which_slot LVAR_INT r2_storing_speech_goals_number r2_storing_speech_control_number //coords LVAR_FLOAT r2_x r2_y r2_z //sequences/decision makers/threat lists/attractors/groups LVAR_INT r2_ped_decisions r2_empty_ped_decision_maker r2_group_decisions r2_seq r2_seq2 r2_seq_progress //debug // ****************************************Mission Start************************************ mission_start_riot2: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT riot2 IF flag_player_on_mission = 0 CREATE_OBJECT BBALL_INGAME 0.0 0.0 0.0 r2_ball ADD_BLIP_FOR_COORD 1774.9 -1974.9 13.1 r2_control_blip CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1831.9 -2004.6 12.6 r2_flats_lookout[0] CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1831.9 -2004.6 12.6 r2_NW_goons[0] CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1831.9 -2004.6 12.6 r2_NE_goons[0] CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1831.9 -2004.6 12.6 r2_SW_goons[0] CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1831.9 -2004.6 12.6 r2_SE_goons[0] CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1831.9 -2004.6 12.6 r2_climbers[0] ADD_BLIP_FOR_CHAR r2_flats_lookout[0] r2_flats_lookout_blips[0] ADD_BLIP_FOR_CHAR r2_NW_goons[0] r2_NW_goons_blips[0] ADD_BLIP_FOR_CHAR r2_NE_goons[0] r2_NE_goons_blips[0] ADD_BLIP_FOR_CHAR r2_SW_goons[0] r2_SW_goons_blips[0] ADD_BLIP_FOR_CHAR r2_SE_goons[0] r2_SE_goons_blips[0] ADD_BLIP_FOR_CHAR r2_climbers[0] r2_climbers_blips[0] ENDIF CLEAR_PRINTS WAIT 0 // *************************************Set Flags/variables********************************* r2_goals = 0 r2_control_flag = 0 r2_skip_cutscene_flag = 0 r2_deathcheck_flag = 0 r2_speech_flag = 0 r2_char_select[0] = LSV1 r2_char_select[1] = LSV2 r2_char_select_flag = 0 r2_runner_control_flag = 2 r2_flats_lookout_control_flag = 0 r2_NW_control_flag[0] = 0 r2_NW_control_flag[1] = 0 r2_NW_control_flag[2] = 0 r2_NE_control_flag[0] = 0 r2_NE_control_flag[1] = 0 r2_NE_control_flag[2] = 0 r2_SW_control_flag[0] = 0 r2_SW_control_flag[1] = 0 r2_SW_control_flag[2] = 0 r2_SE_control_flag[0] = 0 r2_SE_control_flag[1] = 0 r2_SE_control_flag[2] = 0 r2_char_health = 0 r2_og_control_flag = 0 r2_attack_flag = 0 r2_flag_cesar_in_group = 0 m5_NE_gang_timer = 0 m5_NW_gang_timer = 0 m5_SE_gang_timer = 0 m5_SW_gang_timer = 0 m5_timer_ended = 0 m5_timer_difference = 0 m5_timer_started = 0 r2_x = 0.0 r2_y = 0.0 r2_z = 0.0 r2_random_number = 0 r2_triggering_launcher_death = 0 r2_group_size = 0 r2_checking_group_size = 0 r2_speech_goals = 0 //r2_played_random_speech[0] = 0 //r2_played_random_speech[1] = 0 r2_random_last_label = 0 r2_last_label = 0 r2_slot1 = 0 r2_slot2 = 0 r2_slot_load = 0 r2_play_which_slot = 0 r2_storing_speech_goals_number = 0 r2_storing_speech_control_number = 0 r2_anim_time = 0.0 r2_health_check = 0 r2_char_accuracy = 60 r2_seq_progress = 0 // ****************************************START OF CUTSCENE******************************** MAKE_PLAYER_GANG_DISAPPEAR SET_AREA_VISIBLE 1 LOAD_CUTSCENE RIOT_2 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF MAKE_PLAYER_GANG_REAPPEAR // ****************************************END OF CUTSCENE********************************** SET_FADING_COLOUR 0 0 0 WAIT 0 //------------------REQUEST_MODELS ------------------------------ /////////////INFO////////////// // Hazer = Katanaman // // Sunny = Launcher // // Gal = Two Guns (flame) // /////////////////////////////// LOAD_SPECIAL_CHARACTER 1 cesar //good gang models REQUEST_MODEL VLA1 //Launcher OG - normal guy REQUEST_MODEL VLA2 //Flame OG - baldy guy REQUEST_MODEL VLA3 //Katana OG - guy with sunglasses //REQUEST_MODEL FAM1 //2 goons along with player //Baddie Gang models //REQUEST_MODEL MEX //main baddie REQUEST_MODEL LSV1 REQUEST_MODEL LSV2 //REQUEST_MODEL LSV3 REQUEST_MODEL KATANA REQUEST_MODEL DESERT_EAGLE REQUEST_MODEL TEC9 LOAD_ALL_MODELS_NOW /////////////////////////////// DECISION MAKER SHIT ////////////////////////////////////////////// SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_MISSION2 ////1 is good GUYS SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 PEDTYPE_PLAYER1 ////1 is good GUYS SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 PEDTYPE_MISSION1 ////2 is bad GUYS SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 PEDTYPE_PLAYER1 ////2 is bad GUYS SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION2 PEDTYPE_MISSION2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 PEDTYPE_MISSION1 //SET_PED_DENSITY_MULTIPLIER 0.0 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH r2_ped_decisions //CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE r2_ped_decisions EVENT_ACQUAINTANCE_PED_HATE //CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE r2_ped_decisions EVENT_ACQUAINTANCE_PED_DISLIKE COPY_CHAR_DECISION_MAKER DM_PED_EMPTY r2_empty_ped_decision_maker LOAD_GROUP_DECISION_MAKER DM_GROUP_MISSION_NORM r2_group_decisions CLEAR_AREA 2520.8 -1678.5 14.2 30.0 TRUE LOAD_SCENE 2520.8 -1678.5 14.2 SET_CHAR_COORDINATES scplayer 2520.8 -1678.5 14.2 SET_CHAR_HEADING scplayer 68.6 CLEAR_AREA 2520.8 -1678.5 14.2 1.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 2519.8 -1677.5 13.7 cesar SET_CHAR_HEADING cesar 68.6 GIVE_WEAPON_TO_CHAR cesar WEAPONTYPE_DESERT_EAGLE 30000 SET_CHAR_NEVER_TARGETTED cesar TRUE ADD_ARMOUR_TO_CHAR cesar 100 SET_CHAR_RELATIONSHIP cesar ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER cesar TRUE SET_CHAR_SUFFERS_CRITICAL_HITS cesar FALSE SET_CHAR_DECISION_MAKER cesar r2_ped_decisions SWITCH_PED_ROADS_OFF 1945.8 -1956.5 0.0 1642.9 -2174.3 50.0 //Launcher OG CLEAR_AREA 1784.6 -1969.5 13.1 30.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 VLA1 1784.6 -1969.5 13.1 r2_launcher SET_CHAR_HEADING r2_launcher 103.1 GIVE_WEAPON_TO_CHAR r2_launcher WEAPONTYPE_TEC9 30000 //GIVE_WEAPON_TO_CHAR r2_launcher WEAPONTYPE_ROCKETLAUNCHER 30000 SET_CHAR_NEVER_TARGETTED r2_launcher TRUE ADD_ARMOUR_TO_CHAR r2_launcher 100 SET_CHAR_RELATIONSHIP r2_launcher ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER r2_launcher TRUE SET_CHAR_SUFFERS_CRITICAL_HITS r2_launcher FALSE SET_CHAR_DECISION_MAKER r2_launcher r2_empty_ped_decision_maker //Flame OG CREATE_CHAR PEDTYPE_MISSION1 VLA2 1784.4 -1971.1 13.1 r2_flame SET_CHAR_HEADING r2_flame 52.8 GIVE_WEAPON_TO_CHAR r2_flame WEAPONTYPE_TEC9 30000 //GIVE_WEAPON_TO_CHAR r2_flame WEAPONTYPE_FLAMETHROWER 30000 SET_CHAR_NEVER_TARGETTED r2_flame TRUE ADD_ARMOUR_TO_CHAR r2_flame 100 SET_CHAR_RELATIONSHIP r2_flame ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER r2_flame TRUE SET_CHAR_SUFFERS_CRITICAL_HITS r2_flame FALSE SET_CHAR_DECISION_MAKER r2_flame r2_empty_ped_decision_maker //Katana OG CREATE_CHAR PEDTYPE_MISSION1 VLA3 1782.6 -1969.4 13.1 r2_katana SET_CHAR_HEADING r2_katana 250.2 GIVE_WEAPON_TO_CHAR r2_katana WEAPONTYPE_KATANA 30000 SET_CHAR_NEVER_TARGETTED r2_katana TRUE ADD_ARMOUR_TO_CHAR r2_katana 100 SET_CHAR_RELATIONSHIP r2_katana ACQUAINTANCE_TYPE_PED_RESPECT PEDTYPE_MISSION1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER r2_katana TRUE SET_CHAR_SUFFERS_CRITICAL_HITS r2_katana FALSE SET_CHAR_PROOFS r2_katana TRUE FALSE FALSE FALSE FALSE SET_CHAR_DECISION_MAKER r2_katana r2_empty_ped_decision_maker CHANGE_GARAGE_TYPE duf_las GARAGE_FOR_SCRIPT_TO_OPEN SWITCH_EMERGENCY_SERVICES OFF //fudge crap coz ai sucks //SET_GUNSHOT_SENSE_RANGE_FOR_RIOT2 25.0 CLOSE_GARAGE duf_las SET_ZONE_NO_COPS ELCO TRUE CREATE_PICKUP health PICKUP_ON_STREET_SLOW 1877.54 -1982.63 13.48 r2_pickup_health ENABLE_AMBIENT_CRIME FALSE /* //////////////////// DEBUG- for skipping driving bit ////////////// HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON DO_FADE 0 FADE_IN r2_goals = 1 */ /* ////////////DEBUG - for starting at r2_goals = 3 /////////////////// HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON DO_FADE 0 FADE_IN REMOVE_BLIP r2_control_blip SET_CHAR_COORDINATES scplayer 1922.2 -2073.9 12.5 SET_CHAR_HEADING scplayer 166.7 SET_CHAR_COORDINATES cesar 1921.6 -2077.1 12.5 SET_CHAR_HEADING cesar 5.1 REMOVE_CHAR_FROM_GROUP cesar r2_goals = 3 */ /* //////////////////////DEBUG- for testing last cutscene////////////// HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON DO_FADE 0 FADE_IN r2_goals = 8 r2_control_flag = 1 timera = 1000 REMOVE_CHAR_FROM_GROUP cesar */ mission_riot2_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_riot2_passed ENDIF ALTER_WANTED_LEVEL player1 0 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// DEATHCHECKS /////////////////////////////////////////////////////////////////////////////////// GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// SETTING UP TIMERS FOR THE ANIMS /////////////////////////////////////////////////////////////// // timer stuff --------------------------- GET_GAME_TIMER m5_timer_ended m5_timer_difference = m5_timer_ended - m5_timer_started m5_timer_started = m5_timer_ended m5_NE_gang_timer += m5_timer_difference m5_NW_gang_timer += m5_timer_difference m5_SE_gang_timer += m5_timer_difference m5_SW_gang_timer += m5_timer_difference ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// INITIAL CUTSCENE AND DRIVE TO SEE OG'S //////////////////////////////////////////////////////// ////////////DEBUG////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q SET_CHAR_COORDINATES scplayer 1776.0 -1988.1 12.9 SET_CHAR_COORDINATES cesar 1776.0 -1990.1 12.9 ENDIF ////////////DEBUG////////////////// GET_GROUP_SIZE Players_Group minutes r2_group_size IF r2_goals = 0 IF r2_control_flag = 0 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 r2_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_FIXED_CAMERA_POSITION 2509.0 -1672.7 13.3 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2523.1 -1678.2 15.2 JUMP_CUT SHUT_ALL_CHARS_UP TRUE OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 2512.8 -1673.2 12.5 PEDMOVE_WALK -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK cesar r2_seq CLEAR_SEQUENCE_TASK r2_seq OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 2514.1 -1675.2 12.5 PEDMOVE_WALK -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 cesar CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK scplayer r2_seq CLEAR_SEQUENCE_TASK r2_seq DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF //Ok, so what's the plan? r2_speech_goals = 1 r2_speech_control_flag = 0 GOSUB r2_dialogue_setup r2_control_flag = 1 //r2_skip_cutscene_flag = 1 //SKIP_CUTSCENE_START ENDIF IF r2_control_flag = 1 GET_SCRIPT_TASK_STATUS scplayer PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK //making them chat with each other TASK_PLAY_ANIM scplayer IDLE_CHAT PED 4.0 TRUE FALSE FALSE FALSE -1 r2_control_flag = 2 ENDIF ENDIF IF r2_control_flag = 2 IF r2_speech_goals = 0 r2_skip_cutscene_flag = 0 //SKIP_CUTSCENE_END GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF //if cutscene has been skipped IF r2_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 r2_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF SET_CHAR_COORDINATES scplayer 2512.8 -1673.2 12.5 SET_CHAR_HEADING scplayer 40.6 SET_CHAR_COORDINATES cesar 2514.1 -1675.2 12.5 SET_CHAR_HEADING cesar 220.0 ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_Group cesar r2_flag_cesar_in_group = 1 SET_GROUP_DECISION_MAKER Players_Group r2_group_decisions SHUT_ALL_CHARS_UP FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON PRINT_NOW ( R2_01 ) 60000 1 // Get a couple of Families to join your gang. /* //if cutscene has been skipped IF r2_skip_cutscene_flag = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF ENDIF */ r2_control_flag = 3 ENDIF ENDIF //checking Cesar is still in players group IF r2_control_flag > 2 GOSUB r2_mc_strap_group ENDIF //waiting for player to get the correct number in gang IF r2_control_flag = 3 IF r2_group_size > 2 REMOVE_BLIP r2_control_blip ADD_BLIP_FOR_COORD 1774.9 -1974.9 13.1 r2_control_blip SET_BLIP_AS_FRIENDLY r2_control_blip FALSE PRINT_NOW ( R2_13 ) 7000 1 // Go and meet up with the veterano's at Unity Station. timerb = 0 r2_control_flag = 4 ENDIF ENDIF //waiting for player to reach veterano's IF r2_control_flag = 4 /// DIALOGUE FOR THIS SECTION IF r2_speech_flag = 0 IF timerb > 7000 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar TRUE // Shit's real serious, man, look at the streets, eh. r2_speech_goals = 2 r2_speech_control_flag = 0 GOSUB r2_dialogue_setup r2_speech_flag = 1 ENDIF ENDIF //waiting for first convo to end IF r2_speech_flag = 1 IF r2_speech_goals = 0 timerb = 0 r2_speech_flag = 2 ENDIF ENDIF //waiting for second convo to end IF r2_speech_flag = 2 IF timerb > 7000 // While we here, I, eerr, I have a question to ask you. r2_speech_goals = 3 r2_speech_control_flag = 0 GOSUB r2_dialogue_setup r2_speech_flag = 3 ENDIF ENDIF IF r2_speech_flag = 3 IF r2_speech_goals = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar FALSE r2_speech_flag = 4 ENDIF ENDIF /// MAIN BIT FOR THIS SECTION //checking player still has the correct amount of gang dudes IF r2_flag_cesar_in_group = 1 GET_GROUP_SIZE Players_Group minutes r2_group_size IF r2_checking_group_size = 0 IF r2_group_size < 3 REMOVE_BLIP r2_control_blip CLEAR_THIS_PRINT R2_13 PRINT_NOW ( R2_01 ) 60000 1 // Get a couple of Families to join your gang. r2_checking_group_size = 1 ENDIF ENDIF IF r2_checking_group_size = 1 IF r2_group_size > 2 REMOVE_BLIP r2_control_blip ADD_BLIP_FOR_COORD 1774.9 -1974.9 13.1 r2_control_blip SET_BLIP_AS_FRIENDLY r2_control_blip FALSE CLEAR_THIS_PRINT R2_01 PRINT_NOW ( R2_13 ) 7000 1 // Go and meet up with the veterano's at Unity Station. r2_checking_group_size = 0 ENDIF ENDIF ENDIF //waiting for player to reach the OG's IF r2_checking_group_size = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1774.9 -1974.9 13.1 4.0 4.0 4.0 TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar FALSE r2_speech_flag = 0 r2_control_flag = 0 r2_goals = 1 ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// Player has reached OG's - Cutscene //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF r2_goals = 1 //getting player and guys to leave their car IF r2_control_flag = 0 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 r2_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF CLEAR_AREA 1781.1 -1974.8 13.1 30.0 TRUE SHUT_ALL_CHARS_UP TRUE SET_PED_DENSITY_MULTIPLIER 0.0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE REMOVE_CHAR_FROM_GROUP cesar REQUEST_MODEL BBALL_INGAME REQUEST_ANIMATION BSKTBALL REQUEST_ANIMATION SMOKING REQUEST_ANIMATION GANGS LOAD_ALL_MODELS_NOW MAKE_PLAYER_GANG_DISAPPEAR IF NOT IS_CHAR_IN_ANY_CAR scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 1781.1 -1974.8 13.1 SET_CHAR_HEADING scplayer 325.3 CLEAR_CHAR_TASKS_IMMEDIATELY cesar SET_CHAR_COORDINATES cesar 1781.8 -1976.4 13.1 SET_CHAR_HEADING cesar 302.3 ELSE STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer r2_random_car SET_CAR_COORDINATES r2_random_car 1774.9 -1974.9 13.1 TASK_LEAVE_ANY_CAR scplayer TASK_LEAVE_ANY_CAR cesar ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 1781.1 -1974.8 13.1 SET_CHAR_HEADING scplayer 325.3 CLEAR_CHAR_TASKS_IMMEDIATELY cesar SET_CHAR_COORDINATES cesar 1781.8 -1976.4 13.1 SET_CHAR_HEADING cesar 302.3 OPEN_SEQUENCE_TASK r2_seq TASK_PLAY_ANIM -1 prtial_gngtlkA GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 prtial_gngtlkB GANGS 4.0 FALSE FALSE FALSE FALSE -1 //TASK_PLAY_ANIM -1 prtial_gngtlkC GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_launcher r2_seq CLEAR_SEQUENCE_TASK r2_seq SET_FIXED_CAMERA_POSITION 1781.1 -1970.4 14.7 0.0 0.0 0.0 //looking at trio POINT_CAMERA_AT_POINT 1783.2 -1969.9 14.5 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF r2_control_flag = 1 r2_skip_cutscene_flag = 1 //SKIP_CUTSCENE_START ENDIF IF r2_control_flag = 1 // those Vagos, man, I'm gonna gut those cacos. | Raspalo hasta el hueso! r2_speech_goals = 4 r2_speech_control_flag = 0 r2_random_last_label = 2 GOSUB r2_dialogue_setup r2_control_flag = 2 ENDIF IF r2_control_flag = 2 IF r2_speech_goals = 0 SET_FIXED_CAMERA_POSITION 1784.5 -1967.7 14.7 0.0 0.0 0.0 //looking through trio towards player and cesar POINT_CAMERA_AT_POINT 1781.4 -1973.5 14.3 JUMP_CUT TASK_GO_STRAIGHT_TO_COORD scplayer 1782.3 -1972.8 13.1 PEDMOVE_WALK -1 TASK_TURN_CHAR_TO_FACE_CHAR r2_katana scplayer TASK_GO_STRAIGHT_TO_COORD r2_flame 1783.8 -1972.4 13.1 PEDMOVE_WALK -1 OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1783.3 -1973.0 13.1 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK cesar r2_seq CLEAR_SEQUENCE_TASK r2_seq // Hey, carneles, how my Guerreros, eh? | Cesar! And you must be CJ. r2_speech_goals = 4 r2_speech_control_flag = 2 r2_random_last_label = 4 GOSUB r2_dialogue_setup timera = 0 r2_control_flag = 3 ENDIF ENDIF IF r2_control_flag = 3 IF r2_speech_goals = 0 OPEN_SEQUENCE_TASK r2_seq TASK_PLAY_ANIM -1 prtial_gngtlkD GANGS 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK cesar r2_seq CLEAR_SEQUENCE_TASK r2_seq r2_control_flag = 4 ENDIF ENDIF IF r2_control_flag = 4 IF r2_speech_goals = 0 GET_SCRIPT_TASK_STATUS cesar PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK CLEAR_CHAR_TASKS r2_flame OPEN_SEQUENCE_TASK r2_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_PLAY_ANIM -1 prtial_gngtlkC GANGS 4.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM -1 prtial_gngtlkE GANGS 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_flame r2_seq CLEAR_SEQUENCE_TASK r2_seq // Cesar says you cool, so we cool, holmes. r2_speech_goals = 4 r2_speech_control_flag = 4 r2_random_last_label = 5 GOSUB r2_dialogue_setup r2_control_flag = 5 ENDIF ENDIF ENDIF IF r2_control_flag = 5 IF r2_speech_goals = 0 timera = 0 r2_control_flag = 6 ENDIF ENDIF IF r2_control_flag = 6 IF timera > 1000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF CLEAR_AREA 1793.8 -1970.6 12.5 30.0 TRUE CLEAR_CHAR_TASKS scplayer SET_CHAR_COORDINATES scplayer 1789.5 -1968.5 12.5 SET_CHAR_HEADING scplayer 234.3 TASK_GO_STRAIGHT_TO_COORD scplayer 1798.2 -1974.4 12.5 PEDMOVE_WALK -1 CLEAR_CHAR_TASKS cesar SET_CHAR_COORDINATES cesar 1789.0 -1970.6 12.5 SET_CHAR_HEADING cesar 231.5 TASK_GO_STRAIGHT_TO_COORD cesar 1794.0 -1973.5 12.5 PEDMOVE_WALK -1 SET_CHAR_COORDINATES r2_launcher 1789.3 -1967.4 12.5 SET_CHAR_HEADING r2_launcher 231.5 TASK_GO_STRAIGHT_TO_COORD r2_launcher 1796.3 -1970.7 12.5 PEDMOVE_WALK -1 SET_CHAR_COORDINATES r2_katana 1787.4 -1967.2 12.5 SET_CHAR_HEADING r2_katana 234.5 TASK_GO_STRAIGHT_TO_COORD r2_katana 1792.9 -1972.3 12.5 PEDMOVE_WALK -1 SET_CHAR_COORDINATES r2_flame 1786.3 -1966.7 12.5 SET_CHAR_HEADING r2_flame 251.5 TASK_GO_STRAIGHT_TO_COORD r2_flame 1793.8 -1970.6 12.5 PEDMOVE_WALK -1 //CREATING_ALL_THE_LOOKOUTS IF r2_flats_lookout_control_flag = 0 GOSUB creating_flats_lookouts r2_flats_lookout_control_flag = 1 ENDIF SET_FIXED_CAMERA_POSITION 1788.0 -1968.0 14.5 0.0 0.0 0.0 //looking over gang's shoulders towards flats POINT_CAMERA_AT_POINT 1799.5 -1973.8 13.6 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF // Ok. We will have to work our way through this neighborhood | to get to my house. r2_speech_goals = 4 r2_speech_control_flag = 5 r2_random_last_label = 6 GOSUB r2_dialogue_setup timera = 0 r2_control_flag = 7 ENDIF ENDIF IF r2_control_flag = 7 IF r2_speech_goals = 0 IF timera > 4000 // If we stick together those Vagos bendejos won't stand a chance! | Watch each others' backs, amigos. r2_speech_goals = 4 r2_speech_control_flag = 8 r2_random_last_label = 10 GOSUB r2_dialogue_setup SET_FIXED_CAMERA_POSITION 1823.1 -1997.4 13.5 0.0 0.0 0.0 //looking at flats lookouts POINT_CAMERA_AT_POINT 1829.3 -2003.7 14.4 JUMP_CUT timera = 0 r2_control_flag = 8 ENDIF ENDIF ENDIF IF r2_control_flag = 8 IF NOT IS_CHAR_DEAD r2_flats_lookout[1] IF IS_OBJECT_ATTACHED r2_ball // idle bounce IF IS_CHAR_PLAYING_ANIM r2_flats_lookout[1] BBALL_idleloop GET_CHAR_ANIM_CURRENT_TIME r2_flats_lookout[1] BBALL_idleloop r2_anim_time IF IS_OBJECT_PLAYING_ANIM r2_ball BBALL_IDLELOOP_O SET_OBJECT_ANIM_CURRENT_TIME r2_ball BBALL_IDLELOOP_O r2_anim_time ELSE IF PLAY_OBJECT_ANIM r2_ball BBALL_IDLELOOP_O BSKTBALL 10000.0 FALSE FALSE SET_OBJECT_ANIM_SPEED r2_ball BBALL_IDLELOOP_O 0.0 ENDIF ENDIF ENDIF ELSE ATTACH_OBJECT_TO_CHAR r2_ball r2_flats_lookout[1] 0.0 0.5 -1.0 0.0 0.0 0.0 ENDIF ENDIF IF r2_speech_goals = 0 IF timera > 4000 SET_FIXED_CAMERA_POSITION 1827.4 -1998.7 13.1 0.0 0.0 0.0 //looking at flat lookout coming out of door POINT_CAMERA_AT_POINT 1830.2 -1995.2 13.4 JUMP_CUT IF NOT IS_CHAR_DEAD r2_flats_lookout[5] OPEN_SEQUENCE_TASK r2_seq TASK_FOLLOW_PATH_NODES_TO_COORD -1 1831.1 -1995.9 12.6 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 180.0 TASK_PLAY_ANIM -1 M_smk_in SMOKING 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_flats_lookout[5] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF // Hasta le muerte! | HASTA LE MUERTE! r2_speech_goals = 4 r2_speech_control_flag = 10 r2_random_last_label = 12 GOSUB r2_dialogue_setup timera = 0 r2_control_flag = 9 ENDIF ENDIF ENDIF IF r2_control_flag = 9 IF r2_speech_goals = 0 IF timera > 4000 IF r2_speech_goals = 0 r2_skip_cutscene_flag = 0 //SKIP_CUTSCENE_END GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF //if cutscene has been skipped IF r2_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 r2_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF IF r2_flats_lookout_control_flag = 0 GOSUB creating_flats_lookouts r2_flats_lookout_control_flag = 1 ENDIF IF NOT IS_CHAR_DEAD r2_flats_lookout[5] CLEAR_CHAR_TASKS_IMMEDIATELY r2_flats_lookout[5] SET_CHAR_COORDINATES r2_flats_lookout[5] 1831.1 -1995.9 12.6 SET_CHAR_HEADING r2_flats_lookout[5] 180.0 OPEN_SEQUENCE_TASK r2_seq TASK_PLAY_ANIM -1 M_smk_in SMOKING 4.0 FALSE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_flats_lookout[5] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 1793.8 -1970.6 12.5 SET_CHAR_HEADING scplayer 234.3 CLEAR_CHAR_TASKS_IMMEDIATELY cesar SET_CHAR_COORDINATES cesar 1792.9 -1972.3 12.5 SET_CHAR_HEADING cesar 231.5 CLEAR_CHAR_TASKS_IMMEDIATELY r2_launcher SET_CHAR_COORDINATES r2_launcher 1794.8 -1969.8 12.5 SET_CHAR_HEADING r2_launcher 231.5 CLEAR_CHAR_TASKS_IMMEDIATELY r2_katana SET_CHAR_COORDINATES r2_katana 1791.8 -1971.1 12.5 SET_CHAR_HEADING r2_katana 234.5 CLEAR_CHAR_TASKS_IMMEDIATELY r2_flame SET_CHAR_COORDINATES r2_flame 1792.5 -1970.4 12.5 SET_CHAR_HEADING r2_flame 251.5 ENDIF DELETE_OBJECT r2_ball MARK_MODEL_AS_NO_LONGER_NEEDED BBALL_INGAME IF NOT IS_CHAR_DEAD r2_flats_lookout[1] GIVE_WEAPON_TO_CHAR r2_flats_lookout[1] WEAPONTYPE_TEC9 3000 CLEAR_CHAR_TASKS_IMMEDIATELY r2_flats_lookout[1] ENDIF IF NOT IS_CHAR_DEAD r2_flats_lookout[2] CLEAR_CHAR_TASKS_IMMEDIATELY r2_flats_lookout[1] ENDIF IF NOT IS_CHAR_DEAD r2_flats_lookout[1] IF NOT IS_CHAR_DEAD r2_flats_lookout[2] TASK_CHAT_WITH_CHAR r2_flats_lookout[1] r2_flats_lookout[2] TRUE TRUE TASK_CHAT_WITH_CHAR r2_flats_lookout[2] r2_flats_lookout[1] FALSE TRUE ENDIF ENDIF IF NOT IS_CHAR_DEAD r2_flats_lookout[5] GIVE_WEAPON_TO_CHAR r2_flats_lookout[5] WEAPONTYPE_TEC9 3000 ENDIF SET_CHAR_DECISION_MAKER r2_launcher r2_ped_decisions SET_CHAR_DECISION_MAKER r2_flame r2_ped_decisions SET_CHAR_DECISION_MAKER r2_katana r2_ped_decisions MAKE_PLAYER_GANG_REAPPEAR SET_GUNSHOT_SENSE_RANGE_FOR_RIOT2 15.0 REMOVE_ANIMATION GANGS SHUT_ALL_CHARS_UP FALSE REMOVE_BLIP r2_control_blip ADD_BLIP_FOR_CHAR cesar r2_control_blip SET_BLIP_AS_FRIENDLY r2_control_blip TRUE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON PRINT_NOW ( R2_03 ) 7000 1 //Help Cesar and the OG's clear out the neighbourhood. //if cutscene has been skipped IF r2_skip_cutscene_flag = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF ENDIF r2_control_flag = 0 r2_goals = 2 timerb = 0 CHECKPOINT_SAVE 99 ENDIF ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// START OF THE MISSION - PART 1 - The Flats //////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF r2_goals = 2 ////////////// SECTION 1 - the flats /////////////////// //// THE LOOKOUTS - need to be doing stuff (playing cards, shooting hoops, chatting or something?) //// //waiting// IF r2_flats_lookout_control_flag = 1 IF r2_flats_lookout_flag < 6 IF NOT IS_CHAR_DEAD r2_flats_lookout[r2_flats_lookout_flag] IF HAS_CHAR_SPOTTED_CHAR r2_flats_lookout[r2_flats_lookout_flag] scplayer IF NOT IS_CHAR_DEAD r2_flats_lookout[3] OPEN_SEQUENCE_TASK r2_seq TASK_GOTO_CHAR_OFFSET -1 scplayer -1 1.5 0.0 SET_SEQUENCE_TO_REPEAT r2_seq 1 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_flats_lookout[3] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF IF NOT IS_CHAR_DEAD r2_flats_lookout[4] OPEN_SEQUENCE_TASK r2_seq TASK_GOTO_CHAR_OFFSET -1 scplayer -1 3.0 0.0 SET_SEQUENCE_TO_REPEAT r2_seq 1 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_flats_lookout[4] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF r2_flats_lookout_control_flag = 3 ENDIF GET_CHAR_HEALTH r2_flats_lookout[r2_flats_lookout_flag] r2_char_health IF r2_char_health < 100 r2_flats_lookout_control_flag = 4 ENDIF ELSE r2_flats_lookout_control_flag = 4 ENDIF r2_flats_lookout_flag ++ ELSE r2_flats_lookout_flag = 0 ENDIF ENDIF //controlling// // having guys check out the player // IF r2_flats_lookout_control_flag = 3 //checking if one of the lookout guys is dead IF r2_flats_lookout_flag < 6 IF NOT IS_CHAR_DEAD r2_flats_lookout[r2_flats_lookout_flag] GET_CHAR_HEALTH r2_flats_lookout[r2_flats_lookout_flag] r2_char_health IF r2_char_health < 100 r2_flats_lookout_control_flag = 4 ENDIF IF NOT IS_CHAR_DEAD r2_flats_lookout[0] IF HAS_CHAR_SPOTTED_CHAR r2_flats_lookout[0] scplayer r2_flats_lookout_control_flag = 4 ENDIF ENDIF IF IS_PLAYER_TARGETTING_CHAR player1 r2_flats_lookout[r2_flats_lookout_flag] r2_flats_lookout_control_flag = 4 ENDIF ELSE r2_flats_lookout_control_flag = 4 ENDIF r2_flats_lookout_flag ++ ELSE r2_flats_lookout_flag = 0 ENDIF ENDIF //lookout's kicking off - setting the scout off to wake up the rest IF r2_flats_lookout_control_flag = 4 //at this point.. the runner will head off and wake up the neighbourhood IF r2_speech_goals = 0 IF NOT IS_CHAR_DEAD cesar IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer cesar 60.0 60.0 FALSE // Northside Vagos assholes! r2_speech_goals = 5 r2_speech_control_flag = 11 r2_random_last_label = 12 GOSUB r2_dialogue_setup ENDIF ENDIF ENDIF r2_flats_lookout_control_flag = 5 ENDIF IF r2_flats_lookout_control_flag > 3 IF r2_SW_control_flag[0] = 0 OR r2_SE_control_flag[0] = 0 OR r2_NW_control_flag[0] = 0 OR r2_NE_control_flag[0] = 0 IF NOT IS_CHAR_DEAD r2_flats_lookout[0] IF r2_runner_control_flag = 2 r2_runner_control_flag = 0 ENDIF GOSUB waking_up_the_neighbourhood ENDIF ENDIF IF r2_SW_control_flag[0] > 0 IF r2_SE_control_flag[0] > 0 IF r2_NW_control_flag[0] > 0 IF r2_NE_control_flag[0] > 0 IF NOT IS_CHAR_DEAD r2_flats_lookout[0] GET_SCRIPT_TASK_STATUS r2_flats_lookout[0] TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT r2_flats_lookout[0] scplayer r2_runner_control_flag = 3 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //clearing// IF r2_flats_lookout_control_flag = 5 IF IS_CHAR_DEAD r2_flats_lookout[0] IF IS_CHAR_DEAD r2_flats_lookout[1] IF IS_CHAR_DEAD r2_flats_lookout[2] IF IS_CHAR_DEAD r2_flats_lookout[3] IF IS_CHAR_DEAD r2_flats_lookout[4] IF IS_CHAR_DEAD r2_flats_lookout[5] REMOVE_BLIP r2_flats_lookout_blips[0] REMOVE_BLIP r2_flats_lookout_blips[1] REMOVE_BLIP r2_flats_lookout_blips[2] REMOVE_BLIP r2_flats_lookout_blips[3] REMOVE_BLIP r2_flats_lookout_blips[4] REMOVE_BLIP r2_flats_lookout_blips[5] MARK_CHAR_AS_NO_LONGER_NEEDED r2_flats_lookout[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_flats_lookout[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_flats_lookout[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_flats_lookout[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_flats_lookout[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_flats_lookout[5] IF r2_SW_control_flag[0] = 0 AND r2_SE_control_flag[0] = 0 AND r2_NW_control_flag[0] = 0 AND r2_NE_control_flag[0] = 0 r2_SW_control_flag[0] = 1 ENDIF REMOVE_ANIMATION BSKTBALL REMOVE_ANIMATION SMOKING r2_flats_lookout_control_flag = 6 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //removing blips// IF r2_flats_lookout_control_flag < 6 IF IS_CHAR_DEAD r2_flats_lookout[0] REMOVE_BLIP r2_flats_lookout_blips[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_flats_lookout[0] ENDIF IF IS_CHAR_DEAD r2_flats_lookout[1] REMOVE_BLIP r2_flats_lookout_blips[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_flats_lookout[1] ENDIF IF IS_CHAR_DEAD r2_flats_lookout[2] REMOVE_BLIP r2_flats_lookout_blips[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_flats_lookout[2] ENDIF IF IS_CHAR_DEAD r2_flats_lookout[3] REMOVE_BLIP r2_flats_lookout_blips[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_flats_lookout[3] ENDIF IF IS_CHAR_DEAD r2_flats_lookout[4] REMOVE_BLIP r2_flats_lookout_blips[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_flats_lookout[4] ENDIF IF IS_CHAR_DEAD r2_flats_lookout[5] REMOVE_BLIP r2_flats_lookout_blips[5] MARK_CHAR_AS_NO_LONGER_NEEDED r2_flats_lookout[5] ENDIF ENDIF //////////////////////////////////////////////////////// NW houses //////////////////////////////////////////////////// //// House 0 //// //creating// IF r2_NW_control_flag[0] = 1 GOSUB creating_NW_goons m5_NW_gang_timer = 0 r2_NW_control_flag[0] = 2 ENDIF //clearing// IF r2_NW_control_flag[0] = 2 IF IS_CHAR_DEAD r2_NW_goons[0] IF IS_CHAR_DEAD r2_NW_goons[1] REMOVE_BLIP r2_NW_goons_blips[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NW_goons[0] REMOVE_BLIP r2_NW_goons_blips[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NW_goons[1] r2_NW_control_flag[0] = 3 ENDIF ENDIF ENDIF //removing blips// IF r2_NW_control_flag[0] < 3 IF IS_CHAR_DEAD r2_NW_goons[0] REMOVE_BLIP r2_NW_goons_blips[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NW_goons[0] ENDIF IF IS_CHAR_DEAD r2_NW_goons[1] REMOVE_BLIP r2_NW_goons_blips[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NW_goons[1] ENDIF ENDIF //// House 1 //// //creating// IF r2_NW_control_flag[0] > 0 IF r2_NW_control_flag[1] = 0 IF m5_NW_gang_timer > 500 r2_NW_control_flag[1] = 1 GOSUB creating_NW_goons r2_NW_control_flag[1] = 2 m5_NW_gang_timer = 0 ENDIF ENDIF ENDIF //clearing// IF r2_NW_control_flag[1] = 2 IF IS_CHAR_DEAD r2_NW_goons[2] IF IS_CHAR_DEAD r2_NW_goons[3] REMOVE_BLIP r2_NW_goons_blips[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NW_goons[2] REMOVE_BLIP r2_NW_goons_blips[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NW_goons[3] r2_NW_control_flag[1] = 3 ENDIF ENDIF ENDIF //removing blips// IF r2_NW_control_flag[1] < 3 IF IS_CHAR_DEAD r2_NW_goons[2] REMOVE_BLIP r2_NW_goons_blips[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NW_goons[2] ENDIF IF IS_CHAR_DEAD r2_NW_goons[3] REMOVE_BLIP r2_NW_goons_blips[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NW_goons[3] ENDIF ENDIF //// House 2 //// //creating// IF r2_NW_control_flag[0] > 0 IF r2_NW_control_flag[1] > 0 IF r2_NW_control_flag[2] = 0 IF m5_NW_gang_timer > 500 r2_NW_control_flag[2] = 1 GOSUB creating_NW_goons r2_NW_control_flag[2] = 2 m5_NW_gang_timer = 0 ENDIF ENDIF ENDIF ENDIF //clearing// IF r2_NW_control_flag[2] = 2 IF IS_CHAR_DEAD r2_NW_goons[4] IF IS_CHAR_DEAD r2_NW_goons[5] REMOVE_BLIP r2_NW_goons_blips[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NW_goons[4] REMOVE_BLIP r2_NW_goons_blips[5] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NW_goons[5] r2_NW_control_flag[2] = 3 ENDIF ENDIF ENDIF //removing blips// IF r2_NW_control_flag[2] < 3 IF IS_CHAR_DEAD r2_NW_goons[4] REMOVE_BLIP r2_NW_goons_blips[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NW_goons[4] ENDIF IF IS_CHAR_DEAD r2_NW_goons[5] REMOVE_BLIP r2_NW_goons_blips[5] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NW_goons[5] ENDIF ENDIF //triggering next house// IF r2_NW_control_flag[0] = 3 IF r2_NW_control_flag[1] = 3 IF r2_NW_control_flag[2] = 3 IF r2_NE_control_flag[0] = 0 r2_NE_control_flag[0] = 1 ELSE IF r2_SW_control_flag[0] = 0 r2_SW_control_flag[0] = 1 ELSE IF r2_SE_control_flag[0] = 0 r2_SE_control_flag[0] = 1 ENDIF ENDIF ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED r2_NW_goons[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NW_goons[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NW_goons[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NW_goons[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NW_goons[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NW_goons[5] REMOVE_BLIP r2_NW_goons_blips[0] REMOVE_BLIP r2_NW_goons_blips[1] REMOVE_BLIP r2_NW_goons_blips[2] REMOVE_BLIP r2_NW_goons_blips[3] REMOVE_BLIP r2_NW_goons_blips[4] REMOVE_BLIP r2_NW_goons_blips[5] r2_NW_control_flag[0] = 4 r2_NW_control_flag[1] = 4 r2_NW_control_flag[2] = 4 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////// NE houses //////////////////////////////////////////////////// //// House 0 //// //creating// IF r2_NE_control_flag[0] = 1 GOSUB creating_NE_goons m5_NE_gang_timer = 0 r2_NE_control_flag[0] = 2 ENDIF //clearing// IF r2_NE_control_flag[0] = 2 IF IS_CHAR_DEAD r2_NE_goons[0] IF IS_CHAR_DEAD r2_NE_goons[1] REMOVE_BLIP r2_NE_goons_blips[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NE_goons[0] REMOVE_BLIP r2_NE_goons_blips[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NE_goons[1] r2_NE_control_flag[0] = 3 ENDIF ENDIF ENDIF //removing blips// IF r2_NE_control_flag[0] < 3 IF IS_CHAR_DEAD r2_NE_goons[0] REMOVE_BLIP r2_NE_goons_blips[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NE_goons[0] ENDIF IF IS_CHAR_DEAD r2_NE_goons[1] REMOVE_BLIP r2_NE_goons_blips[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NE_goons[1] ENDIF ENDIF //// House 1 //// //creating// IF r2_NE_control_flag[0] > 0 IF r2_NE_control_flag[1] = 0 IF m5_NE_gang_timer > 500 r2_NE_control_flag[1] = 1 GOSUB creating_NE_goons r2_NE_control_flag[1] = 2 m5_NE_gang_timer = 0 ENDIF ENDIF ENDIF //clearing// IF r2_NE_control_flag[1] = 2 IF IS_CHAR_DEAD r2_NE_goons[2] IF IS_CHAR_DEAD r2_NE_goons[3] REMOVE_BLIP r2_NE_goons_blips[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NE_goons[2] REMOVE_BLIP r2_NE_goons_blips[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NE_goons[3] r2_NE_control_flag[1] = 3 ENDIF ENDIF ENDIF //removing blips// IF r2_NE_control_flag[1] < 3 IF IS_CHAR_DEAD r2_NE_goons[2] REMOVE_BLIP r2_NE_goons_blips[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NE_goons[2] ENDIF IF IS_CHAR_DEAD r2_NE_goons[3] REMOVE_BLIP r2_NE_goons_blips[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NE_goons[3] ENDIF ENDIF //// House 2 //// //creating// IF r2_NE_control_flag[0] > 0 IF r2_NE_control_flag[1] > 0 IF r2_NE_control_flag[2] = 0 IF m5_NE_gang_timer > 500 r2_NE_control_flag[2] = 1 GOSUB creating_NE_goons r2_NE_control_flag[2] = 2 m5_NE_gang_timer = 0 ENDIF ENDIF ENDIF ENDIF //clearing// IF r2_NE_control_flag[2] = 2 IF IS_CHAR_DEAD r2_NE_goons[4] IF IS_CHAR_DEAD r2_NE_goons[5] REMOVE_BLIP r2_NE_goons_blips[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NE_goons[4] REMOVE_BLIP r2_NE_goons_blips[5] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NE_goons[5] r2_NE_control_flag[2] = 3 ENDIF ENDIF ENDIF //removing blips// IF r2_NE_control_flag[2] < 3 IF IS_CHAR_DEAD r2_NE_goons[4] REMOVE_BLIP r2_NE_goons_blips[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NE_goons[4] ENDIF IF IS_CHAR_DEAD r2_NE_goons[5] REMOVE_BLIP r2_NE_goons_blips[5] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NE_goons[5] ENDIF ENDIF //triggering next house// IF r2_NE_control_flag[0] = 3 IF r2_NE_control_flag[1] = 3 IF r2_NE_control_flag[2] = 3 IF r2_SE_control_flag[0] = 0 r2_SE_control_flag[0] = 1 ELSE IF r2_NW_control_flag[0] = 0 r2_NW_control_flag[0] = 1 ELSE IF r2_SW_control_flag[0] = 0 r2_SW_control_flag[0] = 1 ENDIF ENDIF ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED r2_NE_goons[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NE_goons[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NE_goons[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NE_goons[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NE_goons[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_NE_goons[5] REMOVE_BLIP r2_NE_goons_blips[0] REMOVE_BLIP r2_NE_goons_blips[1] REMOVE_BLIP r2_NE_goons_blips[2] REMOVE_BLIP r2_NE_goons_blips[3] REMOVE_BLIP r2_NE_goons_blips[4] REMOVE_BLIP r2_NE_goons_blips[5] r2_NE_control_flag[0] = 4 r2_NE_control_flag[1] = 4 r2_NE_control_flag[2] = 4 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////// SW houses //////////////////////////////////////////////////// //// House 0 //// //creating// IF r2_SW_control_flag[0] = 1 GOSUB creating_SW_goons m5_SW_gang_timer = 0 r2_SW_control_flag[0] = 2 ENDIF //clearing// IF r2_SW_control_flag[0] = 2 IF IS_CHAR_DEAD r2_SW_goons[0] IF IS_CHAR_DEAD r2_SW_goons[1] REMOVE_BLIP r2_SW_goons_blips[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SW_goons[0] REMOVE_BLIP r2_SW_goons_blips[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SW_goons[1] r2_SW_control_flag[0] = 3 ENDIF ENDIF ENDIF //removing blips// IF r2_SW_control_flag[0] < 3 IF IS_CHAR_DEAD r2_SW_goons[0] REMOVE_BLIP r2_SW_goons_blips[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SW_goons[0] ENDIF IF IS_CHAR_DEAD r2_SW_goons[1] REMOVE_BLIP r2_SW_goons_blips[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SW_goons[1] ENDIF ENDIF //// House 1 //// //creating// IF r2_SW_control_flag[0] > 0 IF r2_SW_control_flag[1] = 0 IF m5_SW_gang_timer > 500 r2_SW_control_flag[1] = 1 GOSUB creating_SW_goons r2_SW_control_flag[1] = 2 m5_SW_gang_timer = 0 ENDIF ENDIF ENDIF //clearing// IF r2_SW_control_flag[1] = 2 IF IS_CHAR_DEAD r2_SW_goons[2] IF IS_CHAR_DEAD r2_SW_goons[3] REMOVE_BLIP r2_SW_goons_blips[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SW_goons[2] REMOVE_BLIP r2_SW_goons_blips[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SW_goons[3] r2_SW_control_flag[1] = 3 ENDIF ENDIF ENDIF //removing blips// IF r2_SW_control_flag[1] < 3 IF IS_CHAR_DEAD r2_SW_goons[2] REMOVE_BLIP r2_SW_goons_blips[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SW_goons[2] ENDIF IF IS_CHAR_DEAD r2_SW_goons[3] REMOVE_BLIP r2_SW_goons_blips[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SW_goons[3] ENDIF ENDIF //// House 2 //// //creating// IF r2_SW_control_flag[0] > 0 IF r2_SW_control_flag[1] > 0 IF r2_SW_control_flag[2] = 0 IF m5_SW_gang_timer > 500 r2_SW_control_flag[2] = 1 GOSUB creating_SW_goons r2_SW_control_flag[2] = 2 m5_SW_gang_timer = 0 ENDIF ENDIF ENDIF ENDIF //clearing// IF r2_SW_control_flag[2] = 2 IF IS_CHAR_DEAD r2_SW_goons[4] IF IS_CHAR_DEAD r2_SW_goons[5] REMOVE_BLIP r2_SW_goons_blips[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SW_goons[4] REMOVE_BLIP r2_SW_goons_blips[5] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SW_goons[5] r2_SW_control_flag[2] = 3 ENDIF ENDIF ENDIF //removing blips// IF r2_SW_control_flag[2] < 3 IF IS_CHAR_DEAD r2_SW_goons[4] REMOVE_BLIP r2_SW_goons_blips[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SW_goons[4] ENDIF IF IS_CHAR_DEAD r2_SW_goons[5] REMOVE_BLIP r2_SW_goons_blips[5] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SW_goons[5] ENDIF ENDIF //triggering next house// IF r2_SW_control_flag[0] = 3 IF r2_SW_control_flag[1] = 3 IF r2_SW_control_flag[2] = 3 IF r2_NW_control_flag[0] = 0 r2_NW_control_flag[0] = 1 ELSE IF r2_SE_control_flag[0] = 0 r2_SE_control_flag[0] = 1 ELSE IF r2_NE_control_flag[0] = 0 r2_NE_control_flag[0] = 1 ENDIF ENDIF ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED r2_SW_goons[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SW_goons[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SW_goons[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SW_goons[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SW_goons[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SW_goons[5] REMOVE_BLIP r2_SW_goons_blips[0] REMOVE_BLIP r2_SW_goons_blips[1] REMOVE_BLIP r2_SW_goons_blips[2] REMOVE_BLIP r2_SW_goons_blips[3] REMOVE_BLIP r2_SW_goons_blips[4] REMOVE_BLIP r2_SW_goons_blips[5] r2_SW_control_flag[0] = 4 r2_SW_control_flag[1] = 4 r2_SW_control_flag[2] = 4 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////// SE houses //////////////////////////////////////////////////// //// House 0 //// //creating// IF r2_SE_control_flag[0] = 1 GOSUB creating_SE_goons m5_SE_gang_timer = 0 r2_SE_control_flag[0] = 2 ENDIF //clearing// IF r2_SE_control_flag[0] = 2 IF IS_CHAR_DEAD r2_SE_goons[0] IF IS_CHAR_DEAD r2_SE_goons[1] REMOVE_BLIP r2_SE_goons_blips[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SE_goons[0] REMOVE_BLIP r2_SE_goons_blips[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SE_goons[1] r2_SE_control_flag[0] = 3 ENDIF ENDIF ENDIF //removing blips// IF r2_SE_control_flag[0] < 3 IF IS_CHAR_DEAD r2_SE_goons[0] REMOVE_BLIP r2_SE_goons_blips[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SE_goons[0] ENDIF IF IS_CHAR_DEAD r2_SE_goons[1] REMOVE_BLIP r2_SE_goons_blips[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SE_goons[1] ENDIF ENDIF //// House 1 //// //creating// IF r2_SE_control_flag[0] > 0 IF r2_SE_control_flag[1] = 0 IF m5_SE_gang_timer > 500 r2_SE_control_flag[1] = 1 GOSUB creating_SE_goons r2_SE_control_flag[1] = 2 m5_SE_gang_timer = 0 ENDIF ENDIF ENDIF //clearing// IF r2_SE_control_flag[1] = 2 IF IS_CHAR_DEAD r2_SE_goons[2] IF IS_CHAR_DEAD r2_SE_goons[3] REMOVE_BLIP r2_SE_goons_blips[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SE_goons[2] REMOVE_BLIP r2_SE_goons_blips[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SE_goons[3] r2_SE_control_flag[1] = 3 ENDIF ENDIF ENDIF //removing blips// IF r2_SE_control_flag[1] < 3 IF IS_CHAR_DEAD r2_SE_goons[2] REMOVE_BLIP r2_SE_goons_blips[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SE_goons[2] ENDIF IF IS_CHAR_DEAD r2_SE_goons[3] REMOVE_BLIP r2_SE_goons_blips[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SE_goons[3] ENDIF ENDIF //// House 2 //// //creating// IF r2_SE_control_flag[0] > 0 IF r2_SE_control_flag[1] > 0 IF r2_SE_control_flag[2] = 0 IF m5_SE_gang_timer > 500 r2_SE_control_flag[2] = 1 GOSUB creating_SE_goons r2_SE_control_flag[2] = 2 m5_SE_gang_timer = 0 ENDIF ENDIF ENDIF ENDIF //clearing// IF r2_SE_control_flag[2] = 2 IF IS_CHAR_DEAD r2_SE_goons[4] IF IS_CHAR_DEAD r2_SE_goons[5] REMOVE_BLIP r2_SE_goons_blips[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SE_goons[4] REMOVE_BLIP r2_SE_goons_blips[5] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SE_goons[5] r2_SE_control_flag[2] = 3 ENDIF ENDIF ENDIF //removing blips// IF r2_SE_control_flag[2] < 3 IF IS_CHAR_DEAD r2_SE_goons[4] REMOVE_BLIP r2_SE_goons_blips[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SE_goons[4] ENDIF IF IS_CHAR_DEAD r2_SE_goons[5] REMOVE_BLIP r2_SE_goons_blips[5] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SE_goons[5] ENDIF ENDIF //triggering next house// IF r2_SE_control_flag[0] = 3 IF r2_SE_control_flag[1] = 3 IF r2_SE_control_flag[2] = 3 IF r2_SW_control_flag[0] = 0 r2_SW_control_flag[0] = 1 ELSE IF r2_NE_control_flag[0] = 0 r2_NE_control_flag[0] = 1 ELSE IF r2_NW_control_flag[0] = 0 r2_NW_control_flag[0] = 1 ENDIF ENDIF ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED r2_SE_goons[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SE_goons[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SE_goons[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SE_goons[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SE_goons[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_SE_goons[5] REMOVE_BLIP r2_SE_goons_blips[0] REMOVE_BLIP r2_SE_goons_blips[1] REMOVE_BLIP r2_SE_goons_blips[2] REMOVE_BLIP r2_SE_goons_blips[3] REMOVE_BLIP r2_SE_goons_blips[4] REMOVE_BLIP r2_SE_goons_blips[5] r2_SE_control_flag[0] = 4 r2_SE_control_flag[1] = 4 r2_SE_control_flag[2] = 4 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// CONTROLLING THE AI OF THE OG'S AND CESAR ////////////////////////////////////////////////////// ///initial speech IF r2_speech_flag = 0 IF r2_og_control_flag < 6 IF timerb > 7000 IF NOT IS_CHAR_DEAD cesar IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer cesar 60.0 60.0 FALSE IF r2_speech_goals = 0 SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar TRUE // Quickly, go! GO! r2_speech_goals = 5 r2_speech_control_flag = 3 r2_random_last_label = 4 GOSUB r2_dialogue_setup r2_speech_flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF /// moving them to the lookout place IF r2_og_control_flag = 0 CLEAR_CHAR_TASKS r2_flame CLEAR_CHAR_TASKS r2_launcher CLEAR_CHAR_TASKS r2_katana CLEAR_CHAR_TASKS cesar TASK_FOLLOW_PATH_NODES_TO_COORD r2_flame 1824.9 -1986.7 12.6 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD r2_launcher 1822.3 -1986.7 12.6 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD r2_katana 1820.9 -1984.7 12.6 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD cesar 1824.5 -1984.0 12.6 PEDMOVE_WALK -2 r2_og_control_flag = 1 ENDIF /// moving them to the SW houses IF r2_og_control_flag = 1 IF r2_flats_lookout_control_flag = 6 CLEAR_CHAR_TASKS r2_flame CLEAR_CHAR_TASKS r2_launcher CLEAR_CHAR_TASKS r2_katana CLEAR_CHAR_TASKS cesar TASK_FOLLOW_PATH_NODES_TO_COORD r2_flame 1856.6 -2008.5 12.6 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD r2_launcher 1859.6 -2007.5 12.6 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD r2_katana 1853.6 -2007.5 12.6 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD cesar 1854.8 -2005.5 12.6 PEDMOVE_WALK -2 IF NOT IS_CHAR_DEAD cesar IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer cesar 60.0 60.0 FALSE IF r2_speech_goals = 0 // Follow me! r2_speech_goals = 5 r2_speech_control_flag = 4 r2_random_last_label = 5 GOSUB r2_dialogue_setup ENDIF ENDIF ENDIF r2_og_control_flag = 2 ENDIF IF IS_CHAR_DEAD r2_flats_lookout[1] IF IS_CHAR_DEAD r2_flats_lookout[2] IF IS_CHAR_DEAD r2_flats_lookout[3] IF IS_CHAR_DEAD r2_flats_lookout[4] IF IS_CHAR_DEAD r2_flats_lookout[5] CLEAR_CHAR_TASKS r2_flame CLEAR_CHAR_TASKS r2_launcher CLEAR_CHAR_TASKS r2_katana CLEAR_CHAR_TASKS cesar TASK_FOLLOW_PATH_NODES_TO_COORD r2_flame 1856.6 -2008.5 12.6 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD r2_launcher 1859.6 -2007.5 12.6 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD r2_katana 1853.6 -2007.5 12.6 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD cesar 1854.8 -2005.5 12.6 PEDMOVE_WALK -2 IF NOT IS_CHAR_DEAD cesar IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer cesar 60.0 60.0 FALSE IF r2_speech_goals = 0 // Keep close! r2_speech_goals = 5 r2_speech_control_flag = 5 r2_random_last_label = 6 GOSUB r2_dialogue_setup ENDIF ENDIF ENDIF r2_og_control_flag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF /// moving them to the NW houses IF r2_og_control_flag = 2 IF r2_SW_control_flag[0] = 4 CLEAR_CHAR_TASKS r2_flame CLEAR_CHAR_TASKS r2_launcher CLEAR_CHAR_TASKS r2_katana CLEAR_CHAR_TASKS cesar TASK_FOLLOW_PATH_NODES_TO_COORD r2_flame 1858.8 -1993.7 12.6 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD r2_launcher 1858.8 -1991.6 12.6 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD r2_katana 1858.8 -1989.7 12.6 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD cesar 1858.8 -1987.7 12.6 PEDMOVE_WALK -2 IF NOT IS_CHAR_DEAD cesar IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer cesar 60.0 60.0 FALSE IF r2_speech_goals = 0 // Keep together! r2_speech_goals = 5 r2_speech_control_flag = 6 r2_random_last_label = 7 GOSUB r2_dialogue_setup ENDIF ENDIF ENDIF r2_og_control_flag = 3 ENDIF ENDIF /// moving them to the NE houses IF r2_og_control_flag = 3 IF r2_NW_control_flag[0] = 4 CLEAR_CHAR_TASKS r2_flame CLEAR_CHAR_TASKS r2_launcher CLEAR_CHAR_TASKS r2_katana CLEAR_CHAR_TASKS cesar TASK_FOLLOW_PATH_NODES_TO_COORD r2_flame 1886.2 -1995.2 12.6 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD r2_launcher 1886.2 -1993.2 12.6 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD r2_katana 1886.2 -1991.2 12.6 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD cesar 1886.2 -1989.2 12.6 PEDMOVE_WALK -2 IF NOT IS_CHAR_DEAD cesar IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer cesar 60.0 60.0 FALSE IF r2_speech_goals = 0 // Stay close. r2_speech_goals = 5 r2_speech_control_flag = 7 r2_random_last_label = 8 GOSUB r2_dialogue_setup ENDIF ENDIF ENDIF r2_og_control_flag = 4 ENDIF ENDIF /// moving them to the SE houses IF r2_og_control_flag = 4 IF r2_NE_control_flag[0] = 4 CLEAR_CHAR_TASKS r2_flame CLEAR_CHAR_TASKS r2_launcher CLEAR_CHAR_TASKS r2_katana CLEAR_CHAR_TASKS cesar TASK_FOLLOW_PATH_NODES_TO_COORD r2_flame 1903.1 -2009.3 12.6 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD r2_launcher 1905.1 -2009.3 12.6 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD r2_katana 1907.1 -2009.3 12.6 PEDMOVE_WALK -2 TASK_FOLLOW_PATH_NODES_TO_COORD cesar 1909.1 -2009.3 12.6 PEDMOVE_WALK -2 IF NOT IS_CHAR_DEAD cesar IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer cesar 60.0 60.0 FALSE IF r2_speech_goals = 0 // Keep it tight! r2_speech_goals = 5 r2_speech_control_flag = 8 r2_random_last_label = 9 GOSUB r2_dialogue_setup ENDIF ENDIF ENDIF r2_og_control_flag = 5 ENDIF ENDIF //// Heading to the second part of the mission IF r2_og_control_flag = 5 IF r2_SE_control_flag[0] = 4 CLEAR_CHAR_TASKS r2_flame CLEAR_CHAR_TASKS r2_launcher CLEAR_CHAR_TASKS r2_katana CLEAR_CHAR_TASKS cesar OPEN_SEQUENCE_TASK r2_seq TASK_FOLLOW_PATH_NODES_TO_COORD -1 1916.8 -2059.2 12.4 PEDMOVE_RUN -2 TASK_GO_STRAIGHT_TO_COORD -1 1921.6 -2077.1 12.5 PEDMOVE_RUN -2 TASK_ACHIEVE_HEADING -1 5.1 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK cesar r2_seq CLEAR_SEQUENCE_TASK r2_seq OPEN_SEQUENCE_TASK r2_seq TASK_FOLLOW_PATH_NODES_TO_COORD -1 1914.5 -2058.4 12.4 PEDMOVE_RUN -2 TASK_GO_STRAIGHT_TO_COORD -1 1922.6 -2077.1 12.5 PEDMOVE_RUN -2 TASK_ACHIEVE_HEADING -1 5.1 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_flame r2_seq CLEAR_SEQUENCE_TASK r2_seq OPEN_SEQUENCE_TASK r2_seq TASK_FOLLOW_PATH_NODES_TO_COORD -1 1918.1 -2061.8 12.4 PEDMOVE_RUN -2 TASK_GO_STRAIGHT_TO_COORD -1 1923.6 -2077.1 12.5 PEDMOVE_RUN -2 TASK_ACHIEVE_HEADING -1 5.1 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_launcher r2_seq CLEAR_SEQUENCE_TASK r2_seq OPEN_SEQUENCE_TASK r2_seq TASK_FOLLOW_PATH_NODES_TO_COORD -1 1919.8 -2059.6 12.4 PEDMOVE_RUN -2 TASK_GO_STRAIGHT_TO_COORD -1 1924.6 -2077.1 12.5 PEDMOVE_RUN -2 TASK_ACHIEVE_HEADING -1 5.1 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_katana r2_seq CLEAR_SEQUENCE_TASK r2_seq IF NOT IS_CHAR_DEAD cesar IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer cesar 60.0 60.0 FALSE // That's the last of them, let's move out! r2_speech_goals = 5 r2_speech_control_flag = 0 r2_random_last_label = 1 GOSUB r2_dialogue_setup ENDIF ENDIF REMOVE_BLIP r2_control_blip ADD_BLIP_FOR_COORD 1922.8 -2075.0 12.5 r2_control_blip r2_speech_flag = 0 r2_og_control_flag = 6 ENDIF ENDIF IF r2_og_control_flag = 6 IF r2_speech_flag = 0 IF r2_speech_goals = 0 PRINT_NOW ( R2_04 ) 11000 1 //Head to the alleyway! r2_speech_flag = 1 ENDIF ENDIF IF LOCATE_CHAR_ON_FOOT_3D scplayer 1922.8 -2075.0 12.5 1.2 1.2 2.0 TRUE CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 r2_speech_goals = 0 r2_control_flag = 0 r2_goals = 3 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// SETTING BOTH GANGS TO HATE EACH OTHER ///////////////////////////////////////////////////////// /* IF r2_attack_flag = 0 IF r2_flats_lookout_control_flag > 3 ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE r2_ped_decisions EVENT_ACQUAINTANCE_PED_HATE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 FALSE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE r2_ped_decisions EVENT_ACQUAINTANCE_PED_DISLIKE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 FALSE TRUE r2_attack_flag = 1 ENDIF IF NOT IS_CHAR_DEAD r2_flats_lookout[0] IF HAS_CHAR_SPOTTED_CHAR cesar r2_flats_lookout[0] ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE r2_ped_decisions EVENT_ACQUAINTANCE_PED_HATE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 FALSE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE r2_ped_decisions EVENT_ACQUAINTANCE_PED_DISLIKE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 FALSE TRUE r2_attack_flag = 1 ENDIF ENDIF ENDIF */ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// PART 2 - Cutscene in the back alleyway - STAGE 1////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF r2_goals = 3 IF r2_control_flag = 0 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 r2_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SHUT_ALL_CHARS_UP TRUE SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH cesar FALSE SET_CAR_DENSITY_MULTIPLIER 0.0 IF NOT IS_GARAGE_CLOSED duf_las CLOSE_GARAGE duf_las ENDIF REQUEST_MODEL GLENDALE REQUEST_MODEL ROCKETLA REQUEST_ANIMATION CAR REQUEST_ANIMATION SWAT REQUEST_ANIMATION CRACK REQUEST_ANIMATION CASINO LOAD_ALL_MODELS_NOW CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE r2_ped_decisions EVENT_ACQUAINTANCE_PED_HATE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE r2_ped_decisions EVENT_ACQUAINTANCE_PED_DISLIKE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF CLEAR_AREA 1897.0 -2103.8 12.3 300.0 TRUE //car that launcher hides behind CREATE_CAR GLENDALE 1897.0 -2103.8 12.3 r2_junk[0] SET_CAR_HEADING r2_junk[0] 2.4 FREEZE_CAR_POSITION r2_junk[0] TRUE LOCK_CAR_DOORS r2_junk[0] CARLOCK_LOCKED SET_CAR_PROOFS r2_junk[0] TRUE TRUE TRUE TRUE TRUE ///debug - car should be made into a wreck //EXPLODE_CAR r2_junk[0] //car that other guys are working on CREATE_CAR GLENDALE 1857.3 -2101.3 12.3 r2_junk[1] FREEZE_CAR_POSITION r2_junk[1] TRUE SET_CAR_HEADING r2_junk[1] 359.7 LOCK_CAR_DOORS r2_junk[1] CARLOCK_LOCKED //guy underneath car GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1860.9 -2099.6 12.6 r2_car_mechanics[0] SET_CHAR_HEADING r2_car_mechanics[0] 270.0 GIVE_WEAPON_TO_CHAR r2_car_mechanics[0] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_car_mechanics[0] r2_empty_ped_decision_maker TASK_PLAY_ANIM r2_car_mechanics[0] Fixn_Car_loop CAR 4.0 TRUE FALSE FALSE FALSE -1 ADD_BLIP_FOR_CHAR r2_car_mechanics[0] r2_car_mechanics_blips[0] CHANGE_BLIP_SCALE r2_car_mechanics_blips[0] 1 SET_CHAR_ACCURACY r2_car_mechanics[0] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_car_mechanics[0] 50 //guy watching guy under the car GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1859.9 -2102.5 12.5 r2_car_mechanics[1] SET_CHAR_HEADING r2_car_mechanics[1] 48.0 GIVE_WEAPON_TO_CHAR r2_car_mechanics[1] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_car_mechanics[1] r2_empty_ped_decision_maker ADD_BLIP_FOR_CHAR r2_car_mechanics[1] r2_car_mechanics_blips[1] CHANGE_BLIP_SCALE r2_car_mechanics_blips[1] 1 SET_CHAR_ACCURACY r2_car_mechanics[1] r2_char_accuracy //guy ducking behind car (right as you look towards player) GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1855.6 -2102.6 12.5 r2_car_mechanics[2] SET_CHAR_HEADING r2_car_mechanics[2] 282.0 GIVE_WEAPON_TO_CHAR r2_car_mechanics[2] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_car_mechanics[2] r2_empty_ped_decision_maker TASK_PLAY_ANIM r2_car_mechanics[2] weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 ADD_BLIP_FOR_CHAR r2_car_mechanics[2] r2_car_mechanics_blips[2] CHANGE_BLIP_SCALE r2_car_mechanics_blips[2] 1 SET_CHAR_ACCURACY r2_car_mechanics[2] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_car_mechanics[2] 50 //guy ducking behind car (left as you look towards player) GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1855.6 -2099.6 12.5 r2_car_mechanics[3] SET_CHAR_HEADING r2_car_mechanics[3] 282.0 GIVE_WEAPON_TO_CHAR r2_car_mechanics[3] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_car_mechanics[3] r2_empty_ped_decision_maker TASK_PLAY_ANIM r2_car_mechanics[3] weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 ADD_BLIP_FOR_CHAR r2_car_mechanics[3] r2_car_mechanics_blips[3] CHANGE_BLIP_SCALE r2_car_mechanics_blips[3] 1 SET_CHAR_ACCURACY r2_car_mechanics[3] r2_char_accuracy r2_skip_cutscene_flag = 1 SKIP_CUTSCENE_START CLEAR_AREA 1918.1 -2076.9 12.5 30.0 TRUE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 1918.1 -2076.9 12.5 SET_CHAR_HEADING scplayer 171.1 TASK_GO_STRAIGHT_TO_COORD scplayer 1916.1 -2093.3 12.5 PEDMOVE_WALK -1 CLEAR_CHAR_TASKS_IMMEDIATELY cesar SET_CHAR_COORDINATES cesar 1919.1 -2077.7 12.5 SET_CHAR_HEADING cesar 171.5 TASK_GO_STRAIGHT_TO_COORD cesar 1917.1 -2094.1 12.5 PEDMOVE_WALK -1 SET_CHAR_DECISION_MAKER cesar r2_empty_ped_decision_maker CLEAR_CHAR_TASKS_IMMEDIATELY r2_launcher SET_CHAR_COORDINATES r2_launcher 1920.3 -2075.3 12.5 SET_CHAR_HEADING r2_launcher 189.5 GIVE_WEAPON_TO_CHAR r2_launcher WEAPONTYPE_ROCKETLAUNCHER 1 TASK_GO_STRAIGHT_TO_COORD r2_launcher 1918.3 -2091.7 12.5 PEDMOVE_WALK -1 SET_CHAR_DECISION_MAKER r2_launcher r2_empty_ped_decision_maker CLEAR_CHAR_TASKS_IMMEDIATELY r2_flame SET_CHAR_COORDINATES r2_flame 1918.8 -2075.3 12.5 SET_CHAR_HEADING r2_flame 165.9 TASK_GO_STRAIGHT_TO_COORD r2_flame 1916.8 -2091.7 12.5 PEDMOVE_WALK -1 SET_CHAR_DECISION_MAKER r2_flame r2_empty_ped_decision_maker CLEAR_CHAR_TASKS_IMMEDIATELY r2_katana SET_CHAR_COORDINATES r2_katana 1919.6 -2074.0 12.5 SET_CHAR_HEADING r2_katana 173.0 TASK_GO_STRAIGHT_TO_COORD r2_katana 1917.6 -2090.4 12.5 PEDMOVE_WALK -1 SET_CHAR_DECISION_MAKER r2_katana r2_empty_ped_decision_maker SET_FIXED_CAMERA_POSITION 1914.65 -2087.8 13.4 0.0 0.0 0.0 //POINT_CAMERA_AT_CHAR scplayer FIXED JUMP_CUT POINT_CAMERA_AT_POINT 1917.9 -2080.7 13.0 JUMP_CUT //- debug for fixed cam if les wants to lose pan cam DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF // That was the easy bit, eh. r2_speech_goals = 6 r2_speech_control_flag = 0 r2_random_last_label = 6 GOSUB r2_dialogue_setup timera = 0 r2_control_flag = 1 ENDIF IF r2_control_flag = 1 IF timera > 8000 CLEAR_AREA 1916.9 -2101.1 12.6 30.0 TRUE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 1916.9 -2101.1 12.6 SET_CHAR_HEADING scplayer 90.0 TASK_GO_STRAIGHT_TO_COORD scplayer 1912.4 -2101.1 12.5 PEDMOVE_WALK -1 CLEAR_CHAR_TASKS_IMMEDIATELY cesar SET_CHAR_COORDINATES cesar 1916.9 -2102.1 12.6 SET_CHAR_HEADING cesar 90.0 TASK_GO_STRAIGHT_TO_COORD cesar 1912.4 -2102.1 12.5 PEDMOVE_WALK -1 CLEAR_CHAR_TASKS_IMMEDIATELY r2_launcher SET_CHAR_COORDINATES r2_launcher 1916.9 -2103.1 12.6 SET_CHAR_HEADING r2_launcher 90.0 TASK_GO_STRAIGHT_TO_COORD r2_launcher 1912.4 -2103.1 12.5 PEDMOVE_WALK -1 CLEAR_CHAR_TASKS_IMMEDIATELY r2_katana SET_CHAR_COORDINATES r2_katana 1916.9 -2100.1 12.6 SET_CHAR_HEADING r2_katana 90.0 TASK_GO_STRAIGHT_TO_COORD r2_katana 1912.4 -2100.1 12.5 PEDMOVE_WALK -1 CLEAR_CHAR_TASKS_IMMEDIATELY r2_flame SET_CHAR_COORDINATES r2_flame 1916.9 -2099.1 12.6 SET_CHAR_HEADING r2_flame 90.0 TASK_GO_STRAIGHT_TO_COORD r2_flame 1912.4 -2099.1 12.5 PEDMOVE_WALK -1 SET_FIXED_CAMERA_POSITION 1916.5 -2100.9 12.8 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1906.2 -2101.0 14.8 JUMP_CUT timera = 0 r2_control_flag = 2 ENDIF ENDIF IF r2_control_flag = 2 IF r2_speech_goals = 0 IF timera > 4000 CHECKPOINT_SAVE 99 IF NOT IS_CHAR_DEAD r2_car_mechanics[0] OPEN_SEQUENCE_TASK r2_seq TASK_PLAY_ANIM -1 fixn_car_out CAR 4.0 FALSE FALSE FALSE FALSE -1 TASK_SHOOT_AT_COORD -1 1916.5 -2100.9 12.8 3000 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_car_mechanics[0] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF IF NOT IS_CHAR_DEAD r2_car_mechanics[1] OPEN_SEQUENCE_TASK r2_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer //TASK_PAUSE -1 1000 TASK_TOGGLE_DUCK -1 TRUE TASK_SHOOT_AT_COORD -1 1916.5 -2100.9 12.8 3000 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_car_mechanics[1] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF IF NOT IS_CHAR_DEAD r2_car_mechanics[2] OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 700 TASK_STAND_STILL -1 100 TASK_SHOOT_AT_COORD -1 1916.5 -2100.9 12.8 3000 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_car_mechanics[2] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF IF NOT IS_CHAR_DEAD r2_car_mechanics[3] OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 1000 TASK_STAND_STILL -1 100 TASK_SHOOT_AT_COORD -1 1916.5 -2100.9 12.8 3000 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_car_mechanics[3] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF // C'mon, I want to take my house back! r2_speech_goals = 6 r2_speech_control_flag = 6 r2_random_last_label = 7 GOSUB r2_dialogue_setup SET_FIXED_CAMERA_POSITION 1866.1 -2101.8 13.4 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1849.9 -2101.0 14.98 JUMP_CUT timera = 0 r2_control_flag = 3 ENDIF ENDIF ENDIF IF r2_control_flag = 3 IF r2_speech_goals = 0 IF timera > 4000 r2_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF //mission has been skipped IF r2_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 r2_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 1912.4 -2101.1 12.5 SET_CHAR_HEADING scplayer 90.0 CLEAR_CHAR_TASKS_IMMEDIATELY cesar SET_CHAR_COORDINATES cesar 1912.4 -2102.1 12.5 SET_CHAR_HEADING cesar 90.0 CLEAR_CHAR_TASKS_IMMEDIATELY r2_launcher SET_CHAR_COORDINATES r2_launcher 1912.4 -2103.1 12.5 SET_CHAR_HEADING r2_launcher 90.0 CLEAR_CHAR_TASKS_IMMEDIATELY r2_katana SET_CHAR_COORDINATES r2_katana 1912.4 -2100.1 12.5 SET_CHAR_HEADING r2_katana 90.0 CLEAR_CHAR_TASKS_IMMEDIATELY r2_flame SET_CHAR_COORDINATES r2_flame 1912.4 -2099.1 12.5 SET_CHAR_HEADING r2_flame 90.0 IF NOT IS_CHAR_DEAD r2_car_mechanics[0] CLEAR_CHAR_TASKS_IMMEDIATELY r2_car_mechanics[0] ENDIF IF NOT IS_CHAR_DEAD r2_car_mechanics[1] CLEAR_CHAR_TASKS_IMMEDIATELY r2_car_mechanics[1] ENDIF IF NOT IS_CHAR_DEAD r2_car_mechanics[2] CLEAR_CHAR_TASKS_IMMEDIATELY r2_car_mechanics[2] ENDIF IF NOT IS_CHAR_DEAD r2_car_mechanics[3] CLEAR_CHAR_TASKS_IMMEDIATELY r2_car_mechanics[3] ENDIF ENDIF //cesar SET_CHAR_STAY_IN_SAME_PLACE cesar TRUE OPEN_SEQUENCE_TASK r2_seq2 TASK_PLAY_ANIM -1 gun_stand PED 8.0 FALSE FALSE FALSE FALSE 10 GENERATE_RANDOM_INT_IN_RANGE 1500 4000 r2_random_number TASK_SHOOT_AT_COORD -1 1871.1 -2102.3 14.6 r2_random_number TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 GENERATE_RANDOM_INT_IN_RANGE 1500 4000 r2_random_number TASK_PAUSE -1 r2_random_number SET_SEQUENCE_TO_REPEAT r2_seq2 1 CLOSE_SEQUENCE_TASK r2_seq2 OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1898.7 -2102.1 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 90.0 PERFORM_SEQUENCE_TASK -1 r2_seq2 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK cesar r2_seq CLEAR_SEQUENCE_TASK r2_seq CLEAR_SEQUENCE_TASK r2_seq2 //launcher CLEAR_CHAR_TASKS_IMMEDIATELY r2_launcher SET_CHAR_COORDINATES r2_launcher 1912.4 -2103.1 12.5 SET_CHAR_HEADING r2_launcher 90.0 SET_CHAR_STAY_IN_SAME_PLACE r2_launcher TRUE OPEN_SEQUENCE_TASK r2_seq2 TASK_PLAY_ANIM -1 gun_stand PED 8.0 FALSE FALSE FALSE FALSE 10 GENERATE_RANDOM_INT_IN_RANGE 1500 4000 r2_random_number TASK_SHOOT_AT_COORD -1 1878.7 -2105.5 14.6 r2_random_number TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 GENERATE_RANDOM_INT_IN_RANGE 1500 4000 r2_random_number TASK_PAUSE -1 r2_random_number SET_SEQUENCE_TO_REPEAT r2_seq2 1 CLOSE_SEQUENCE_TASK r2_seq2 OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1898.7 -2106.1 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 90.0 IF NOT IS_CAR_DEAD r2_junk[1] TASK_DESTROY_CAR -1 r2_junk[1] ENDIF TASK_PAUSE -1 500 TASK_PLAY_ANIM -1 manwinb CASINO 8.0 FALSE FALSE FALSE FALSE -1 PERFORM_SEQUENCE_TASK -1 r2_seq2 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_launcher r2_seq CLEAR_SEQUENCE_TASK r2_seq CLEAR_SEQUENCE_TASK r2_seq2 //flame guy - guy with two guns SET_CHAR_STAY_IN_SAME_PLACE r2_flame TRUE OPEN_SEQUENCE_TASK r2_seq2 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_R SWAT 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_in_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE GENERATE_RANDOM_INT_IN_RANGE 1500 4000 r2_random_number TASK_SHOOT_AT_COORD -1 1891.2 -2099.6 14.0 r2_random_number TASK_STAY_IN_SAME_PLACE -1 FALSE //TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_out_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM -1 1903.7 -2096.6 12.5 75.0 -1.0 swt_wllshoot_out_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_R_back SWAT 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT r2_seq2 1 CLOSE_SEQUENCE_TASK r2_seq2 OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1903.5 -2096.6 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 75.0 PERFORM_SEQUENCE_TASK -1 r2_seq2 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_flame r2_seq CLEAR_SEQUENCE_TASK r2_seq CLEAR_SEQUENCE_TASK r2_seq2 //katana guy OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1894.6 -2099.2 12.4 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 90.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 Crouch_Roll_L PED 8.0 FALSE TRUE TRUE FALSE -1 TASK_GO_STRAIGHT_TO_COORD -1 1884.6 -2107.6 12.4 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 1874.9 -2102.8 12.4 PEDMOVE_RUN -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 KO_spin_L PED 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 crckidle4 CRACK 8.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_katana r2_seq CLEAR_SEQUENCE_TASK r2_seq //guy underneath car IF NOT IS_CHAR_DEAD r2_car_mechanics[0] SET_CHAR_STAY_IN_SAME_PLACE r2_car_mechanics[0] TRUE OPEN_SEQUENCE_TASK r2_seq2 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_L SWAT 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_in_L SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE GENERATE_RANDOM_INT_IN_RANGE 1500 4000 r2_random_number TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer r2_random_number TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM -1 1872.8 -2096.1 12.5 275.0 -1.0 swt_wllshoot_out_L SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_L_back SWAT 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT r2_seq2 1 CLOSE_SEQUENCE_TASK r2_seq2 OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1872.8 -2096.1 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 275.0 PERFORM_SEQUENCE_TASK -1 r2_seq2 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_car_mechanics[0] r2_seq CLEAR_SEQUENCE_TASK r2_seq CLEAR_SEQUENCE_TASK r2_seq2 ENDIF //guy watching guy under the car IF NOT IS_CHAR_DEAD r2_car_mechanics[1] TASK_KILL_CHAR_ON_FOOT r2_car_mechanics[1] scplayer ENDIF //guy ducking behind car (right as you look towards player) IF NOT IS_CHAR_DEAD r2_car_mechanics[2] SET_CHAR_STAY_IN_SAME_PLACE r2_car_mechanics[2] TRUE OPEN_SEQUENCE_TASK r2_seq2 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_R SWAT 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_in_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE GENERATE_RANDOM_INT_IN_RANGE 1500 4000 r2_random_number TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer r2_random_number TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM -1 1864.1 -2107.4 12.6 275.0 -0.1 swt_wllshoot_out_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_R_back SWAT 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT r2_seq2 1 CLOSE_SEQUENCE_TASK r2_seq2 OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1864.1 -2107.4 12.6 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 275.0 PERFORM_SEQUENCE_TASK -1 r2_seq2 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_car_mechanics[2] r2_seq CLEAR_SEQUENCE_TASK r2_seq CLEAR_SEQUENCE_TASK r2_seq2 ENDIF //guy ducking behind car (left as you look towards player) IF NOT IS_CHAR_DEAD r2_car_mechanics[3] TASK_KILL_CHAR_ON_FOOT r2_car_mechanics[3] scplayer ENDIF //guards coming from house (right of the door as you look at it) GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1806.1 -2121.7 12.5 r2_car_mechanics[4] SET_CHAR_HEADING r2_car_mechanics[4] 357.8 GIVE_WEAPON_TO_CHAR r2_car_mechanics[4] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_car_mechanics[4] r2_empty_ped_decision_maker OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1837.5 -2102.3 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 275.0 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_car_mechanics[4] r2_seq CLEAR_SEQUENCE_TASK r2_seq ADD_BLIP_FOR_CHAR r2_car_mechanics[4] r2_car_mechanics_blips[4] CHANGE_BLIP_SCALE r2_car_mechanics_blips[4] 1 SET_CHAR_ACCURACY r2_car_mechanics[4] r2_char_accuracy //guards coming from house (left of the door as you look at it) GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1801.5 -2120.7 12.5 r2_car_mechanics[5] SET_CHAR_HEADING r2_car_mechanics[5] 357.8 GIVE_WEAPON_TO_CHAR r2_car_mechanics[5] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_car_mechanics[5] r2_empty_ped_decision_maker OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1833.8 -2097.8 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 275.0 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_car_mechanics[5] r2_seq CLEAR_SEQUENCE_TASK r2_seq ADD_BLIP_FOR_CHAR r2_car_mechanics[5] r2_car_mechanics_blips[5] CHANGE_BLIP_SCALE r2_car_mechanics_blips[5] 1 SET_CHAR_ACCURACY r2_car_mechanics[5] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_car_mechanics[5] 50 //first guy will go to the wall and pop in and out GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1879.7 -2094.9 12.5 r2_garage[0] SET_CHAR_HEADING r2_garage[0] 180.0 GIVE_WEAPON_TO_CHAR r2_garage[0] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_garage[0] r2_empty_ped_decision_maker SET_CHAR_STAY_IN_SAME_PLACE r2_garage[0] TRUE SET_CHAR_ACCURACY r2_garage[0] r2_char_accuracy //second guy GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1878.7 -2094.9 12.5 r2_garage[1] SET_CHAR_HEADING r2_garage[1] 180.0 GIVE_WEAPON_TO_CHAR r2_garage[1] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_garage[1] r2_empty_ped_decision_maker SET_CHAR_STAY_IN_SAME_PLACE r2_garage[1] TRUE SET_CHAR_ACCURACY r2_garage[1] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_garage[1] 50 //third guy will duck walk out GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1876.7 -2094.9 12.5 r2_garage[2] SET_CHAR_HEADING r2_garage[2] 180.0 GIVE_WEAPON_TO_CHAR r2_garage[2] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_garage[2] r2_empty_ped_decision_maker SET_CHAR_STAY_IN_SAME_PLACE r2_garage[2] TRUE SET_CHAR_ACCURACY r2_garage[2] r2_char_accuracy //fourth guy will duck but stay in same place GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1875.2 -2094.9 12.5 r2_garage[3] SET_CHAR_HEADING r2_garage[3] 180.0 GIVE_WEAPON_TO_CHAR r2_garage[3] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_garage[3] r2_empty_ped_decision_maker SET_CHAR_PROOFS r2_garage[3] TRUE TRUE TRUE TRUE TRUE SET_CHAR_STAY_IN_SAME_PLACE r2_garage[3] TRUE SET_CHAR_ACCURACY r2_garage[3] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_garage[3] 50 REMOVE_BLIP r2_control_blip ADD_BLIP_FOR_CHAR cesar r2_control_blip SET_BLIP_AS_FRIENDLY r2_control_blip TRUE SET_GUNSHOT_SENSE_RANGE_FOR_RIOT2 -1.0 SHUT_ALL_CHARS_UP TRUE REMOVE_ANIMATION CAR SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT PRINT_NOW ( R2_05 ) 7000 1 //Stay close to Cesar and clear out the alleyway. //if cutscene has been skipped IF r2_skip_cutscene_flag = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF ENDIF r2_control_flag = 0 r2_goals = 4 ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// Waiting for all the baddies to die from - STAGE 1 ///////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF r2_goals = 4 //deathchecks for the guys peeking IF NOT IS_CHAR_DEAD r2_car_mechanics[0] IF IS_CHAR_IN_AREA_2D scplayer 1877.6 -2050.8 1815.3 -2171.4 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR r2_car_mechanics[0] scplayer GET_SCRIPT_TASK_STATUS r2_car_mechanics[0] TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT r2_car_mechanics[0] scplayer ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD r2_car_mechanics[2] IF IS_CHAR_IN_AREA_2D scplayer 1872.6 -2050.8 1815.3 -2171.4 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR r2_car_mechanics[2] scplayer GET_SCRIPT_TASK_STATUS r2_car_mechanics[2] TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT r2_car_mechanics[2] scplayer ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD cesar GET_CHAR_HEALTH cesar r2_health_check IF r2_health_check < 50 TASK_DIE_NAMED_ANIM cesar KO_SHOT_STOM PED 8.0 FALSE ENDIF ENDIF IF NOT IS_CHAR_DEAD r2_flame GET_CHAR_HEALTH r2_flame r2_health_check IF r2_health_check < 50 TASK_DIE_NAMED_ANIM r2_flame KO_SHOT_STOM PED 8.0 FALSE ENDIF ENDIF // MAIN BIT IF r2_control_flag = 0 GET_SCRIPT_TASK_STATUS r2_katana PERFORM_SEQUENCE_TASK task_status IF NOT task_status = FINISHED_TASK GET_SEQUENCE_PROGRESS r2_katana r2_seq_progress IF r2_seq_progress >= 3 OPEN_GARAGE duf_las r2_control_flag = 1 ENDIF ENDIF ENDIF IF r2_control_flag = 1 GET_SCRIPT_TASK_STATUS r2_katana PERFORM_SEQUENCE_TASK task_status IF NOT task_status = FINISHED_TASK GET_SEQUENCE_PROGRESS r2_katana r2_seq_progress IF r2_seq_progress >= 5 //first guy will kill player IF NOT IS_CHAR_DEAD r2_garage[0] OPEN_SEQUENCE_TASK r2_seq2 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK r2_seq2 OPEN_SEQUENCE_TASK r2_seq TASK_KILL_CHAR_ON_FOOT_TIMED -1 r2_katana 3000 TASK_GO_STRAIGHT_TO_COORD -1 1872.8 -2096.1 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 275.0 PERFORM_SEQUENCE_TASK -1 r2_seq2 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_garage[0] r2_seq CLEAR_SEQUENCE_TASK r2_seq CLEAR_SEQUENCE_TASK r2_seq2 ADD_BLIP_FOR_CHAR r2_garage[0] r2_garage_blips[0] CHANGE_BLIP_SCALE r2_garage_blips[0] 1 ENDIF //second guy IF NOT IS_CHAR_DEAD r2_garage[1] SET_CHAR_STAY_IN_SAME_PLACE r2_garage[1] FALSE OPEN_SEQUENCE_TASK r2_seq TASK_KILL_CHAR_ON_FOOT_TIMED -1 r2_katana 3000 TASK_GO_STRAIGHT_TO_COORD -1 1872.8 -2096.1 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 275.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 Crouch_Roll_R PED 8.0 FALSE TRUE TRUE FALSE -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_garage[1] r2_seq CLEAR_SEQUENCE_TASK r2_seq ADD_BLIP_FOR_CHAR r2_garage[1] r2_garage_blips[1] CHANGE_BLIP_SCALE r2_garage_blips[1] 1 ENDIF //third guy will duck walk out IF NOT IS_CHAR_DEAD r2_garage[2] SET_CHAR_STAY_IN_SAME_PLACE r2_garage[2] FALSE OPEN_SEQUENCE_TASK r2_seq TASK_KILL_CHAR_ON_FOOT_TIMED -1 r2_katana 3000 TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_TOGGLE_DUCK -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_garage[2] r2_seq CLEAR_SEQUENCE_TASK r2_seq SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_garage[2] TRUE ADD_BLIP_FOR_CHAR r2_garage[2] r2_garage_blips[2] CHANGE_BLIP_SCALE r2_garage_blips[2] 1 ENDIF //fourth guy will duck but stay in same place IF NOT IS_CHAR_DEAD r2_garage[3] SET_CHAR_STAY_IN_SAME_PLACE r2_garage[3] FALSE SET_CHAR_PROOFS r2_garage[3] FALSE FALSE FALSE FALSE FALSE OPEN_SEQUENCE_TASK r2_seq TASK_KILL_CHAR_ON_FOOT_TIMED -1 r2_katana 3000 TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_TOGGLE_DUCK -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_garage[3] r2_seq CLEAR_SEQUENCE_TASK r2_seq SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_garage[3] TRUE ADD_BLIP_FOR_CHAR r2_garage[3] r2_garage_blips[3] CHANGE_BLIP_SCALE r2_garage_blips[3] 1 ENDIF CLEAR_PRINTS //Hazer! r2_speech_goals = 7 r2_speech_control_flag = 0 GOSUB r2_dialogue_setup SET_CHAR_BLEEDING r2_katana TRUE timerb = 0 r2_control_flag = 2 ENDIF ENDIF ENDIF IF r2_control_flag = 2 IF timerb > 1000 SET_CHAR_COLLISION r2_katana FALSE r2_control_flag = 3 ENDIF ENDIF IF r2_control_flag = 3 IF IS_CHAR_DEAD r2_car_mechanics[0] IF IS_CHAR_DEAD r2_car_mechanics[1] IF IS_CHAR_DEAD r2_car_mechanics[2] IF IS_CHAR_DEAD r2_car_mechanics[3] IF IS_CHAR_DEAD r2_car_mechanics[4] IF IS_CHAR_DEAD r2_car_mechanics[5] IF IS_CHAR_DEAD r2_garage[0] IF IS_CHAR_DEAD r2_garage[1] IF IS_CHAR_DEAD r2_garage[2] IF IS_CHAR_DEAD r2_garage[3] REMOVE_BLIP r2_car_mechanics_blips[0] REMOVE_BLIP r2_car_mechanics_blips[1] REMOVE_BLIP r2_car_mechanics_blips[2] REMOVE_BLIP r2_car_mechanics_blips[3] REMOVE_BLIP r2_car_mechanics_blips[4] REMOVE_BLIP r2_car_mechanics_blips[5] REMOVE_BLIP r2_garage_blips[0] REMOVE_BLIP r2_garage_blips[1] REMOVE_BLIP r2_garage_blips[2] REMOVE_BLIP r2_garage_blips[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[5] MARK_CHAR_AS_NO_LONGER_NEEDED r2_garage[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_garage[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_garage[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_garage[3] timera = 0 r2_control_flag = 0 r2_goals = 5 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //removing blips// IF IS_CHAR_DEAD r2_car_mechanics[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[0] REMOVE_BLIP r2_car_mechanics_blips[0] ENDIF IF IS_CHAR_DEAD r2_car_mechanics[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[1] REMOVE_BLIP r2_car_mechanics_blips[1] ENDIF IF IS_CHAR_DEAD r2_car_mechanics[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[2] REMOVE_BLIP r2_car_mechanics_blips[2] ENDIF IF IS_CHAR_DEAD r2_car_mechanics[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[3] REMOVE_BLIP r2_car_mechanics_blips[3] ENDIF IF IS_CHAR_DEAD r2_car_mechanics[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[4] REMOVE_BLIP r2_car_mechanics_blips[4] ENDIF IF IS_CHAR_DEAD r2_car_mechanics[5] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[5] REMOVE_BLIP r2_car_mechanics_blips[5] ENDIF IF r2_control_flag > 1 IF IS_CHAR_DEAD r2_garage[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_garage[0] REMOVE_BLIP r2_garage_blips[0] ENDIF IF IS_CHAR_DEAD r2_garage[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_garage[1] REMOVE_BLIP r2_garage_blips[1] ENDIF IF IS_CHAR_DEAD r2_garage[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_garage[2] REMOVE_BLIP r2_garage_blips[2] ENDIF IF IS_CHAR_DEAD r2_garage[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_garage[3] REMOVE_BLIP r2_garage_blips[3] ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// Starting Cutscene - STAGE 2 /////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF r2_goals = 5 IF r2_control_flag = 0 IF timera > 2000 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 r2_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE //deleting blown up car DELETE_CAR r2_junk[1] CLEAR_AREA 1905.1 -2103.9 12.5 60.0 TRUE SET_CHAR_COORDINATES scplayer 1905.1 -2103.9 12.5 SET_CHAR_HEADING scplayer 80.2 //cesar CLEAR_CHAR_TASKS cesar OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1897.8 -2099.5 12.5 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 1890.8 -2099.5 12.5 PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 1877.2 -2101.2 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 110.0 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK cesar r2_seq CLEAR_SEQUENCE_TASK r2_seq //flame CLEAR_CHAR_TASKS_IMMEDIATELY r2_flame SET_CHAR_COORDINATES r2_flame 1900.4 -2098.2 12.5 SET_CHAR_HEADING r2_flame 92.3 OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1875.7 -2102.4 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 95.0 TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_flame r2_seq CLEAR_SEQUENCE_TASK r2_seq r2_skip_cutscene_flag = 1 SKIP_CUTSCENE_START SET_FIXED_CAMERA_POSITION 1900.4 -2099.6 12.8 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1879.4 -2107.7 17.9 JUMP_CUT timera = 0 r2_control_flag = 1 ENDIF ENDIF IF r2_control_flag = 1 IF timera > 3000 CLEAR_CHAR_TASKS_IMMEDIATELY r2_flame SET_CHAR_COORDINATES r2_flame 1875.7 -2102.4 12.5 SET_CHAR_HEADING r2_flame 95.0 TASK_PLAY_ANIM r2_flame weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 SET_CHAR_COORDINATES cesar 1881.2 -2099.6 12.5 SET_CHAR_HEADING cesar 69.4 SET_CHAR_COORDINATES scplayer 1886.2 -2099.6 12.5 SET_CHAR_HEADING scplayer 69.4 TASK_GO_STRAIGHT_TO_COORD scplayer 1877.6 -2099.8 12.5 PEDMOVE_WALK -1 GOSUB r2_creating_climbers SET_FIXED_CAMERA_POSITION 1880.2 -2103.1 14.46 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1874.3 -2100.77 12.80 JUMP_CUT // Shit, Hazer... r2_speech_goals = 8 r2_speech_control_flag = 0 GOSUB r2_dialogue_setup timera = 0 r2_control_flag = 2 ENDIF ENDIF IF r2_control_flag = 2 IF r2_speech_goals = 0 IF timera > 8000 r2_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF //if cutscene has been skipped IF r2_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 r2_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF GOSUB r2_creating_climbers CLEAR_CHAR_TASKS_IMMEDIATELY r2_flame SET_CHAR_COORDINATES r2_flame 1875.7 -2102.4 12.5 SET_CHAR_HEADING r2_flame 95.0 TASK_PLAY_ANIM r2_flame weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 CLEAR_CHAR_TASKS_IMMEDIATELY cesar SET_CHAR_COORDINATES cesar 1881.2 -2099.6 12.5 SET_CHAR_HEADING cesar 69.4 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 1879.7 -2101.7 12.5 SET_CHAR_HEADING scplayer 90.0 CLEAR_CHAR_TASKS_IMMEDIATELY r2_climbers[0] SET_CHAR_DECISION_MAKER r2_climbers[0] r2_ped_decisions SET_CHAR_COORDINATES r2_climbers[0] 1861.1 -2096.9 12.5 SET_CHAR_HEADING r2_climbers[0] 270.3 GET_SCRIPT_TASK_STATUS r2_climbers[1] PERFORM_SEQUENCE_TASK task_status IF NOT task_status = FINISHED_TASK CLEAR_CHAR_TASKS_IMMEDIATELY r2_climbers[1] TASK_PLAY_ANIM r2_climbers[1] weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 OPEN_SEQUENCE_TASK r2_seq TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_CLIMB -1 TRUE TASK_SHOOT_AT_COORD -1 1874.4 -2101.5 14.8 2000 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_climbers[1] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF GET_SCRIPT_TASK_STATUS r2_climbers[2] PERFORM_SEQUENCE_TASK task_status IF NOT task_status = FINISHED_TASK CLEAR_CHAR_TASKS_IMMEDIATELY r2_climbers[2] TASK_PLAY_ANIM r2_climbers[2] weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 OPEN_SEQUENCE_TASK r2_seq TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PAUSE -1 2000 TASK_CLIMB -1 TRUE TASK_SHOOT_AT_COORD -1 1874.4 -2101.5 14.8 2000 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_climbers[2] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY r2_climbers[3] SET_CHAR_DECISION_MAKER r2_climbers[3] r2_ped_decisions SET_CHAR_COORDINATES r2_climbers[3] 1859.1 -2106.0 14.0 SET_CHAR_HEADING r2_climbers[3] 264.4 GET_SCRIPT_TASK_STATUS r2_climbers[4] PERFORM_SEQUENCE_TASK task_status IF NOT task_status = FINISHED_TASK CLEAR_CHAR_TASKS_IMMEDIATELY r2_climbers[4] TASK_PLAY_ANIM r2_climbers[4] weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 OPEN_SEQUENCE_TASK r2_seq TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_CLIMB -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_climbers[4] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF GET_SCRIPT_TASK_STATUS r2_climbers[5] PERFORM_SEQUENCE_TASK task_status IF NOT task_status = FINISHED_TASK CLEAR_CHAR_TASKS_IMMEDIATELY r2_climbers[5] TASK_PLAY_ANIM r2_climbers[5] weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 OPEN_SEQUENCE_TASK r2_seq TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PAUSE -1 3000 TASK_CLIMB -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_climbers[5] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF ENDIF ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE r2_ped_decisions EVENT_ACQUAINTANCE_PED_HATE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 FALSE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE r2_ped_decisions EVENT_ACQUAINTANCE_PED_DISLIKE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 FALSE TRUE CREATE_PICKUP health PICKUP_ON_STREET_SLOW 1875.6 -2091.4 13.5 r2_health //debug - move inside garage CREATE_PICKUP_WITH_AMMO TEC9 PICKUP_ON_STREET_SLOW 48 1878.3 -2091.1 13.5 r2_gun //debug - move inside garage //cesar OPEN_SEQUENCE_TASK r2_seq2 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_R SWAT 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_in_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE GENERATE_RANDOM_INT_IN_RANGE 1500 4000 r2_random_number TASK_SHOOT_AT_COORD -1 1864.9 -2101.2 14.0 r2_random_number TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM -1 1874.9 -2096.5 12.5 75.0 -0.1 swt_wllshoot_out_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_R_back SWAT 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT r2_seq2 1 CLOSE_SEQUENCE_TASK r2_seq2 OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1874.9 -2096.5 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 75.0 PERFORM_SEQUENCE_TASK -1 r2_seq2 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK cesar r2_seq CLEAR_SEQUENCE_TASK r2_seq CLEAR_SEQUENCE_TASK r2_seq2 //two guns OPEN_SEQUENCE_TASK r2_seq2 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_L SWAT 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_in_L SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE GENERATE_RANDOM_INT_IN_RANGE 1500 4000 r2_random_number TASK_SHOOT_AT_COORD -1 1862.6 -2104.1 14.0 r2_random_number TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM -1 1873.3 -2107.4 12.5 98.8 -0.1 swt_wllshoot_out_L SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_L_back SWAT 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT r2_seq2 1 CLOSE_SEQUENCE_TASK r2_seq2 OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1873.3 -2107.4 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 98.8 PERFORM_SEQUENCE_TASK -1 r2_seq2 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_flame r2_seq CLEAR_SEQUENCE_TASK r2_seq CLEAR_SEQUENCE_TASK r2_seq2 //launcher GIVE_WEAPON_TO_CHAR r2_launcher WEAPONTYPE_ROCKETLAUNCHER 1 OPEN_SEQUENCE_TASK r2_seq2 TASK_PLAY_ANIM -1 gun_stand PED 8.0 FALSE FALSE FALSE FALSE 10 GENERATE_RANDOM_INT_IN_RANGE 1500 4000 r2_random_number TASK_SHOOT_AT_COORD -1 1878.7 -2105.5 14.6 r2_random_number TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 GENERATE_RANDOM_INT_IN_RANGE 1500 4000 r2_random_number TASK_PAUSE -1 r2_random_number SET_SEQUENCE_TO_REPEAT r2_seq2 1 CLOSE_SEQUENCE_TASK r2_seq2 OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1898.7 -2106.1 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 90.0 TASK_SHOOT_AT_COORD -1 1852.1 -2096.6 16.5 10 PERFORM_SEQUENCE_TASK -1 r2_seq2 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_launcher r2_seq CLEAR_SEQUENCE_TASK r2_seq CLEAR_SEQUENCE_TASK r2_seq2 //two guys that kill Launcher dude GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1913.7 -2109.2 12.6 r2_car_mechanics[0] SET_CHAR_HEADING r2_car_mechanics[0] 90.5 GIVE_WEAPON_TO_CHAR r2_car_mechanics[0] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_car_mechanics[0] r2_empty_ped_decision_maker SET_CHAR_STAY_IN_SAME_PLACE r2_car_mechanics[0] TRUE SET_CHAR_PROOFS r2_car_mechanics[0] TRUE TRUE TRUE TRUE TRUE SET_CHAR_ACCURACY r2_car_mechanics[0] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_car_mechanics[0] 50 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1916.5 -2113.1 12.6 r2_car_mechanics[1] SET_CHAR_HEADING r2_car_mechanics[1] 20.1 GIVE_WEAPON_TO_CHAR r2_car_mechanics[1] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_car_mechanics[1] r2_empty_ped_decision_maker SET_CHAR_STAY_IN_SAME_PLACE r2_car_mechanics[1] TRUE SET_CHAR_PROOFS r2_car_mechanics[1] TRUE TRUE TRUE TRUE TRUE SET_CHAR_ACCURACY r2_car_mechanics[1] r2_char_accuracy //guards coming from house (right of the door as you look at it) GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1806.1 -2121.7 12.5 r2_car_mechanics[4] SET_CHAR_HEADING r2_car_mechanics[4] 357.8 GIVE_WEAPON_TO_CHAR r2_car_mechanics[4] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_car_mechanics[4] r2_ped_decisions OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1837.5 -2102.3 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 275.0 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_car_mechanics[4] r2_seq CLEAR_SEQUENCE_TASK r2_seq REMOVE_BLIP r2_car_mechanics_blips[4] ADD_BLIP_FOR_CHAR r2_car_mechanics[4] r2_car_mechanics_blips[4] CHANGE_BLIP_SCALE r2_car_mechanics_blips[4] 1 SET_CHAR_ACCURACY r2_car_mechanics[4] r2_char_accuracy //guards coming from house (left of the door as you look at it) GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1801.5 -2120.7 12.5 r2_car_mechanics[5] SET_CHAR_HEADING r2_car_mechanics[5] 357.8 GIVE_WEAPON_TO_CHAR r2_car_mechanics[5] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_car_mechanics[5] r2_ped_decisions OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1833.8 -2097.8 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 275.0 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_car_mechanics[5] r2_seq CLEAR_SEQUENCE_TASK r2_seq REMOVE_BLIP r2_car_mechanics_blips[5] ADD_BLIP_FOR_CHAR r2_car_mechanics[5] r2_car_mechanics_blips[5] CHANGE_BLIP_SCALE r2_car_mechanics_blips[5] 1 SET_CHAR_ACCURACY r2_car_mechanics[5] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_car_mechanics[5] 50 SHUT_ALL_CHARS_UP FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT PRINT_NOW ( R2_06 ) 4000 1 //Defend Cesar. //if cutscene has been skipped IF r2_skip_cutscene_flag = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF ENDIF timera = 0 r2_control_flag = 0 r2_goals = 6 ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// Waiting for all the baddies to die from - STAGE 2 ///////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF r2_goals = 6 //deathchecks for the guys peeking IF NOT IS_CHAR_DEAD cesar GET_CHAR_HEALTH cesar r2_health_check IF r2_health_check < 50 TASK_DIE_NAMED_ANIM cesar KO_SHOT_STOM PED 8.0 FALSE ENDIF ENDIF IF NOT IS_CHAR_DEAD r2_flame GET_CHAR_HEALTH r2_flame r2_health_check IF r2_health_check < 50 TASK_DIE_NAMED_ANIM r2_flame KO_SHOT_STOM PED 8.0 FALSE ENDIF ENDIF //triggering the death of launcher IF r2_triggering_launcher_death = 0 IF IS_CHAR_DEAD r2_climbers[0] IF IS_CHAR_DEAD r2_climbers[1] IF IS_CHAR_DEAD r2_climbers[2] IF IS_CHAR_DEAD r2_climbers[3] IF IS_CHAR_DEAD r2_climbers[4] IF IS_CHAR_DEAD r2_climbers[5] r2_triggering_launcher_death = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF timera > 15000 OR IS_CHAR_IN_AREA_2D scplayer 1893.6 -2043.3 1888.1 -2175.6 FALSE r2_triggering_launcher_death = 1 ENDIF ENDIF IF r2_triggering_launcher_death = 1 // Behind us! r2_speech_goals = 9 GENERATE_RANDOM_INT_IN_RANGE 0 3 r2_speech_control_flag r2_random_last_label = r2_speech_control_flag + 1 GOSUB r2_dialogue_setup IF NOT IS_CHAR_DEAD r2_car_mechanics[0] REMOVE_BLIP r2_car_mechanics_blips[0] ADD_BLIP_FOR_CHAR r2_car_mechanics[0] r2_car_mechanics_blips[0] CHANGE_BLIP_SCALE r2_car_mechanics_blips[0] 1 ENDIF IF NOT IS_CHAR_DEAD r2_car_mechanics[1] REMOVE_BLIP r2_car_mechanics_blips[1] ADD_BLIP_FOR_CHAR r2_car_mechanics[1] r2_car_mechanics_blips[1] CHANGE_BLIP_SCALE r2_car_mechanics_blips[1] 1 ENDIF r2_triggering_launcher_death = 2 ENDIF IF r2_triggering_launcher_death = 2 IF IS_CHAR_ON_SCREEN r2_launcher //two guys that kill Launcher dude IF NOT IS_CHAR_DEAD r2_car_mechanics[0] OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1913.5 -2106.1 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 90.0 TASK_SHOOT_AT_COORD -1 1900.8 -2106.2 12.6 1500 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_car_mechanics[0] r2_seq CLEAR_SEQUENCE_TASK r2_seq SET_CHAR_PROOFS r2_car_mechanics[0] FALSE FALSE FALSE FALSE FALSE ENDIF IF NOT IS_CHAR_DEAD r2_car_mechanics[1] OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1914.2 -2104.2 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 90.0 TASK_SHOOT_AT_COORD -1 1900.8 -2106.2 12.6 1500 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_car_mechanics[1] r2_seq CLEAR_SEQUENCE_TASK r2_seq SET_CHAR_PROOFS r2_car_mechanics[1] FALSE FALSE FALSE FALSE FALSE ENDIF //launcher dude GIVE_WEAPON_TO_CHAR r2_launcher WEAPONTYPE_ROCKETLAUNCHER 1 OPEN_SEQUENCE_TASK r2_seq TASK_ACHIEVE_HEADING -1 269.0 TASK_PAUSE -1 200 TASK_SHOOT_AT_COORD -1 1951.1 -2103.9 19.3 500 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 KO_shot_face PED 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 crckidle1 CRACK 1000.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_launcher r2_seq CLEAR_SEQUENCE_TASK r2_seq SET_CHAR_BLEEDING r2_launcher TRUE timera = 0 r2_triggering_launcher_death = 3 ENDIF ENDIF IF r2_control_flag = 0 IF IS_CHAR_DEAD r2_climbers[0] IF IS_CHAR_DEAD r2_climbers[1] IF IS_CHAR_DEAD r2_climbers[2] IF IS_CHAR_DEAD r2_climbers[3] IF IS_CHAR_DEAD r2_climbers[4] IF IS_CHAR_DEAD r2_climbers[5] IF IS_CHAR_DEAD r2_car_mechanics[4] IF IS_CHAR_DEAD r2_car_mechanics[5] OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1895.3 -2102.2 12.6 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 274.7 TASK_SHOOT_AT_COORD -1 1913.5 -2104.4 13.9 -2 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK cesar r2_seq CLEAR_SEQUENCE_TASK r2_seq OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1895.6 -2104.2 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 271.0 TASK_SHOOT_AT_COORD -1 1912.9 -2106.4 13.9 -2 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_flame r2_seq CLEAR_SEQUENCE_TASK r2_seq r2_control_flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF r2_control_flag = 1 IF IS_CHAR_DEAD r2_car_mechanics[0] IF IS_CHAR_DEAD r2_car_mechanics[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[5] REMOVE_ANIMATION CASINO timera = 0 r2_control_flag = 0 r2_goals = 7 ENDIF ENDIF ENDIF //removing blips// IF IS_CHAR_DEAD r2_car_mechanics[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[0] REMOVE_BLIP r2_car_mechanics_blips[0] ENDIF IF IS_CHAR_DEAD r2_car_mechanics[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[1] REMOVE_BLIP r2_car_mechanics_blips[1] ENDIF IF IS_CHAR_DEAD r2_car_mechanics[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[4] REMOVE_BLIP r2_car_mechanics_blips[4] ENDIF IF IS_CHAR_DEAD r2_car_mechanics[5] MARK_CHAR_AS_NO_LONGER_NEEDED r2_car_mechanics[5] REMOVE_BLIP r2_car_mechanics_blips[5] ENDIF IF IS_CHAR_DEAD r2_climbers[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_climbers[0] REMOVE_BLIP r2_climbers_blips[0] ENDIF IF IS_CHAR_DEAD r2_climbers[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_climbers[1] REMOVE_BLIP r2_climbers_blips[1] ENDIF IF IS_CHAR_DEAD r2_climbers[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_climbers[2] REMOVE_BLIP r2_climbers_blips[2] ENDIF IF IS_CHAR_DEAD r2_climbers[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_climbers[3] REMOVE_BLIP r2_climbers_blips[3] ENDIF IF IS_CHAR_DEAD r2_climbers[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_climbers[4] REMOVE_BLIP r2_climbers_blips[4] ENDIF IF IS_CHAR_DEAD r2_climbers[5] MARK_CHAR_AS_NO_LONGER_NEEDED r2_climbers[5] REMOVE_BLIP r2_climbers_blips[5] ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// Starting Cutscene - STAGE 3 /////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF r2_goals = 7 IF r2_control_flag = 0 IF timera > 2000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 r2_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SHUT_ALL_CHARS_UP TRUE REMOVE_ANIMATION SWAT REQUEST_MODEL FLAME CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE r2_ped_decisions EVENT_ACQUAINTANCE_PED_HATE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE r2_ped_decisions EVENT_ACQUAINTANCE_PED_DISLIKE LOAD_SCENE 1855.5 -2101.8 12.5 //lead guy on top of the house //GENERATE_RANDOM_INT_IN_RANGE 0 3 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 LSV1 1805.0 -2126.0 17.8 r2_car_mechanics[0] SET_CHAR_HEADING r2_car_mechanics[0] 306.5 SET_CHAR_STAY_IN_SAME_PLACE r2_car_mechanics[0] TRUE ADD_ARMOUR_TO_CHAR r2_car_mechanics[0] 100 SET_CHAR_SUFFERS_CRITICAL_HITS r2_car_mechanics[0] FALSE GIVE_WEAPON_TO_CHAR r2_car_mechanics[0] WEAPONTYPE_ROCKETLAUNCHER 30000 SET_CHAR_DECISION_MAKER r2_car_mechanics[0] r2_empty_ped_decision_maker ADD_BLIP_FOR_CHAR r2_car_mechanics[0] r2_final_blips[0] CHANGE_BLIP_SCALE r2_final_blips[0] 1 SET_CHAR_ACCURACY r2_car_mechanics[0] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_car_mechanics[0] 100 //flamethrower enemy GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1811.8 -2124.0 12.6 r2_car_mechanics[1] SET_CHAR_HEADING r2_car_mechanics[1] 287.5 SET_CHAR_STAY_IN_SAME_PLACE r2_car_mechanics[1] TRUE GIVE_WEAPON_TO_CHAR r2_car_mechanics[1] WEAPONTYPE_FLAMETHROWER 30000 SET_CHAR_DECISION_MAKER r2_car_mechanics[1] r2_empty_ped_decision_maker ADD_BLIP_FOR_CHAR r2_car_mechanics[1] r2_final_blips[1] CHANGE_BLIP_SCALE r2_final_blips[1] 1 SET_CHAR_ACCURACY r2_car_mechanics[1] r2_char_accuracy //two guards coming from the garage area of cesars house GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1795.0 -2126.7 12.5 r2_car_mechanics[2] SET_CHAR_HEADING r2_car_mechanics[2] 358.6 GIVE_WEAPON_TO_CHAR r2_car_mechanics[2] WEAPONTYPE_TEC9 3000 SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_car_mechanics[2] TRUE SET_CHAR_DECISION_MAKER r2_car_mechanics[2] r2_empty_ped_decision_maker ADD_BLIP_FOR_CHAR r2_car_mechanics[2] r2_final_blips[2] CHANGE_BLIP_SCALE r2_final_blips[2] 1 SET_CHAR_ACCURACY r2_car_mechanics[2] r2_char_accuracy GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1795.0 -2130.7 12.5 r2_car_mechanics[3] SET_CHAR_HEADING r2_car_mechanics[3] 357.8 GIVE_WEAPON_TO_CHAR r2_car_mechanics[3] WEAPONTYPE_TEC9 3000 SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_car_mechanics[3] TRUE SET_CHAR_DECISION_MAKER r2_car_mechanics[3] r2_empty_ped_decision_maker ADD_BLIP_FOR_CHAR r2_car_mechanics[3] r2_final_blips[3] CHANGE_BLIP_SCALE r2_final_blips[3] 1 SET_CHAR_ACCURACY r2_car_mechanics[3] r2_char_accuracy //guards coming from house (right of the door as you look at it) GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1806.1 -2121.7 12.5 r2_car_mechanics[4] SET_CHAR_HEADING r2_car_mechanics[4] 357.8 GIVE_WEAPON_TO_CHAR r2_car_mechanics[4] WEAPONTYPE_TEC9 3000 SET_CHAR_STAY_IN_SAME_PLACE r2_car_mechanics[4] TRUE SET_CHAR_DECISION_MAKER r2_car_mechanics[4] r2_empty_ped_decision_maker ADD_BLIP_FOR_CHAR r2_car_mechanics[4] r2_final_blips[4] CHANGE_BLIP_SCALE r2_final_blips[4] 1 SET_CHAR_ACCURACY r2_car_mechanics[4] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_car_mechanics[4] 100 //guards coming from house (left of the door as you look at it) GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1801.5 -2120.7 12.5 r2_car_mechanics[5] SET_CHAR_HEADING r2_car_mechanics[5] 357.8 GIVE_WEAPON_TO_CHAR r2_car_mechanics[5] WEAPONTYPE_TEC9 3000 SET_CHAR_STAY_IN_SAME_PLACE r2_car_mechanics[5] TRUE SET_CHAR_DECISION_MAKER r2_car_mechanics[5] r2_empty_ped_decision_maker ADD_BLIP_FOR_CHAR r2_car_mechanics[5] r2_final_blips[5] CHANGE_BLIP_SCALE r2_final_blips[5] 1 SET_CHAR_ACCURACY r2_car_mechanics[5] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_car_mechanics[5] 100 CLEAR_AREA 1855.5 -2101.8 12.5 30.0 TRUE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 1855.5 -2101.8 12.5 SET_CHAR_HEADING scplayer 90.0 TASK_GO_STRAIGHT_TO_COORD scplayer 1846.6 -2102.8 12.5 PEDMOVE_WALK -1 CLEAR_CHAR_TASKS_IMMEDIATELY cesar SET_CHAR_COORDINATES cesar 1855.5 -2102.8 12.5 SET_CHAR_HEADING cesar 90.0 TASK_GO_STRAIGHT_TO_COORD cesar 1846.6 -2102.8 12.5 PEDMOVE_WALK -1 CLEAR_CHAR_TASKS_IMMEDIATELY r2_flame SET_CHAR_COORDINATES r2_flame 1855.5 -2100.8 12.5 SET_CHAR_HEADING r2_flame 90.0 TASK_GO_STRAIGHT_TO_COORD r2_flame 1846.6 -2100.8 12.5 PEDMOVE_WALK -1 SET_FIXED_CAMERA_POSITION 1846.6 -2101.8 13.88 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1853.9 -2101.4 12.7 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF r2_skip_cutscene_flag = 1 SKIP_CUTSCENE_START // Let's fucking finish this! r2_speech_goals = 10 r2_speech_control_flag = 0 GOSUB r2_dialogue_setup timera = 0 r2_control_flag = 1 ENDIF ENDIF IF r2_control_flag = 1 IF r2_speech_goals = 0 IF timera > 4000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF LOAD_SCENE 1809.8 -2123.4 12.7 SET_FIXED_CAMERA_POSITION 1816.2 -2116.8 13.16 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1808.6 -2123.8 15.0 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF // This is a Vagos neighborhood now! r2_speech_goals = 11 GENERATE_RANDOM_INT_IN_RANGE 0 3 r2_speech_control_flag r2_random_last_label = r2_speech_control_flag + 1 GOSUB r2_dialogue_setup timera = 0 r2_control_flag = 2 ENDIF ENDIF ENDIF IF r2_control_flag = 2 IF r2_speech_goals = 0 IF timera > 4000 SET_FIXED_CAMERA_POSITION 1816.2 -2116.8 13.16 0.0 0.0 0.0 IF NOT IS_CHAR_DEAD r2_car_mechanics[1] POINT_CAMERA_AT_CHAR r2_car_mechanics[1] FIXED INTERPOLATION TASK_SHOOT_AT_COORD r2_car_mechanics[1] 1831.6 -2118.9 12.5 4000 ENDIF // Torch those Aztecas! r2_speech_goals = 12 GENERATE_RANDOM_INT_IN_RANGE 0 3 r2_speech_control_flag r2_random_last_label = r2_speech_control_flag + 1 GOSUB r2_dialogue_setup timera = 0 r2_control_flag = 3 ENDIF ENDIF ENDIF IF r2_control_flag = 3 IF r2_speech_goals = 0 IF timera > 4000 r2_skip_cutscene_flag = 0 SKIP_CUTSCENE_END GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF //mission has been skipped IF r2_skip_cutscene_flag = 1 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 r2_speech_goals = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF ENDIF //lead guy on top of the house IF NOT IS_CHAR_DEAD r2_car_mechanics[0] OPEN_SEQUENCE_TASK r2_seq TASK_SHOOT_AT_COORD -1 1832.7 -2090.1 14.1 500 TASK_PLAY_ANIM -1 gun_stand PED 8.0 FALSE FALSE FALSE FALSE 1000 TASK_SHOOT_AT_COORD -1 1853.6 -2087.0 20.5 500 TASK_PLAY_ANIM -1 gun_stand PED 8.0 FALSE FALSE FALSE TRUE 1000 TASK_SHOOT_AT_COORD -1 1819.5 -2113.1 12.9 500 TASK_PLAY_ANIM -1 gun_stand PED 8.0 FALSE FALSE FALSE FALSE 1000 SET_SEQUENCE_TO_REPEAT r2_seq 1 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_car_mechanics[0] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF //flamethrower enemy IF NOT IS_CHAR_DEAD r2_car_mechanics[1] OPEN_SEQUENCE_TASK r2_seq TASK_SHOOT_AT_COORD -1 1831.6 -2118.9 12.5 2000 TASK_PAUSE -1 2000 SET_SEQUENCE_TO_REPEAT r2_seq 1 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_car_mechanics[1] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF //two guards coming from the garage area of cesars house IF NOT IS_CHAR_DEAD r2_car_mechanics[2] OPEN_SEQUENCE_TASK r2_seq TASK_TOGGLE_DUCK -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 1795.0 -2106.7 12.5 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 277.9 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_car_mechanics[2] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF IF NOT IS_CHAR_DEAD r2_car_mechanics[3] OPEN_SEQUENCE_TASK r2_seq TASK_TOGGLE_DUCK -1 TRUE TASK_GO_STRAIGHT_TO_COORD -1 1792.0 -2103.7 12.5 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 277.9 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_car_mechanics[3] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF //guards coming from house (right of the door as you look at it) IF NOT IS_CHAR_DEAD r2_car_mechanics[4] OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1809.4 -2116.3 12.5 PEDMOVE_RUN -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_car_mechanics[4] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF //guards coming from house (left of the door as you look at it) IF NOT IS_CHAR_DEAD r2_car_mechanics[5] OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1809.4 -2111.8 12.5 PEDMOVE_RUN -1 TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_car_mechanics[5] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 1833.9 -2104.2 12.5 SET_CHAR_HEADING scplayer 122.4 CLEAR_CHAR_TASKS_IMMEDIATELY cesar SET_CHAR_COORDINATES cesar 1833.0 -2106.6 12.5 SET_CHAR_HEADING cesar 122.3 SET_CHAR_STAY_IN_SAME_PLACE cesar TRUE SET_CHAR_DECISION_MAKER cesar r2_ped_decisions CLEAR_CHAR_TASKS_IMMEDIATELY r2_flame SET_CHAR_COORDINATES r2_flame 1834.4 -2102.0 12.5 SET_CHAR_HEADING r2_flame 99.6 SET_CHAR_STAY_IN_SAME_PLACE r2_flame TRUE OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1814.1 -2102.4 12.5 PEDMOVE_RUN -1 TASK_ACHIEVE_HEADING -1 112.7 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_flame r2_seq CLEAR_SEQUENCE_TASK r2_seq MARK_CHAR_AS_NO_LONGER_NEEDED r2_climbers[0] MARK_CHAR_AS_NO_LONGER_NEEDED r2_climbers[1] MARK_CHAR_AS_NO_LONGER_NEEDED r2_climbers[2] MARK_CHAR_AS_NO_LONGER_NEEDED r2_climbers[3] MARK_CHAR_AS_NO_LONGER_NEEDED r2_climbers[4] MARK_CHAR_AS_NO_LONGER_NEEDED r2_climbers[5] ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE r2_ped_decisions EVENT_ACQUAINTANCE_PED_HATE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 FALSE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE r2_ped_decisions EVENT_ACQUAINTANCE_PED_DISLIKE TASK_COMPLEX_KILL_PED_ON_FOOT 0.0 100.0 0.0 0.0 FALSE TRUE SHUT_ALL_CHARS_UP FALSE SWITCH_WIDESCREEN OFF MAKE_PLAYER_GANG_REAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT PRINT_NOW ( R2_07 ) 4000 1 //Finish off the last Vagos. //if cutscene has been skipped IF r2_skip_cutscene_flag = 1 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF ENDIF r2_control_flag = 0 r2_goals = 8 ENDIF ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// Waiting for all the baddies to die from - STAGE 3 ///////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF r2_goals = 8 IF r2_control_flag = 0 IF IS_CHAR_DEAD r2_car_mechanics[0] REMOVE_BLIP r2_final_blips[0] ENDIF IF IS_CHAR_DEAD r2_car_mechanics[1] REMOVE_BLIP r2_final_blips[1] ENDIF IF IS_CHAR_DEAD r2_car_mechanics[2] REMOVE_BLIP r2_final_blips[2] ENDIF IF IS_CHAR_DEAD r2_car_mechanics[3] REMOVE_BLIP r2_final_blips[3] ENDIF IF IS_CHAR_DEAD r2_car_mechanics[4] REMOVE_BLIP r2_final_blips[4] ENDIF IF IS_CHAR_DEAD r2_car_mechanics[5] REMOVE_BLIP r2_final_blips[5] ENDIF IF IS_CHAR_DEAD r2_car_mechanics[0] IF IS_CHAR_DEAD r2_car_mechanics[1] IF IS_CHAR_DEAD r2_car_mechanics[2] IF IS_CHAR_DEAD r2_car_mechanics[3] IF IS_CHAR_DEAD r2_car_mechanics[4] IF IS_CHAR_DEAD r2_car_mechanics[5] timera = 0 r2_control_flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF r2_control_flag = 1 IF timera > 2000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 r2_speech_goals = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON MAKE_PLAYER_GANG_DISAPPEAR HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SHUT_ALL_CHARS_UP TRUE //player LOAD_SCENE 1814.9 -2112.1 12.4 CLEAR_AREA 1814.9 -2112.1 12.4 30.0 TRUE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 1814.9 -2112.1 12.4 SET_CHAR_HEADING scplayer 127.9 OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1807.8 -2122.0 12.5 PEDMOVE_WALK -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 cesar CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK scplayer r2_seq CLEAR_SEQUENCE_TASK r2_seq //cesar CLEAR_CHAR_TASKS_IMMEDIATELY cesar SET_CHAR_COORDINATES cesar 1812.4 -2111.3 12.4 SET_CHAR_HEADING cesar 127.9 OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1804.8 -2120.2 12.5 PEDMOVE_WALK -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK cesar r2_seq CLEAR_SEQUENCE_TASK r2_seq //galavet CLEAR_CHAR_TASKS_IMMEDIATELY r2_flame SET_CHAR_COORDINATES r2_flame 1810.4 -2111.0 12.4 SET_CHAR_HEADING r2_flame 135.1 OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1807.0 -2118.8 12.5 PEDMOVE_WALK -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_flame r2_seq CLEAR_SEQUENCE_TASK r2_seq SET_FIXED_CAMERA_POSITION 1812.6 -2114.5 13.0 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1804.5 -2123.6 15.0 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB r2_death_checks IF r2_deathcheck_flag = 1 GOTO mission_riot2_failed ENDIF r2_speech_goals = 13 r2_speech_control_flag = 0 r2_random_last_label = 4 GOSUB r2_dialogue_setup r2_control_flag = 2 ENDIF ENDIF IF r2_control_flag = 2 IF r2_speech_goals = 0 //player OPEN_SEQUENCE_TASK r2_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 cesar CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK scplayer r2_seq CLEAR_SEQUENCE_TASK r2_seq //cesar OPEN_SEQUENCE_TASK r2_seq TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK cesar r2_seq CLEAR_SEQUENCE_TASK r2_seq r2_speech_goals = 13 r2_speech_control_flag = 4 r2_random_last_label = 8 GOSUB r2_dialogue_setup r2_control_flag = 3 ENDIF ENDIF IF r2_control_flag = 3 IF r2_speech_goals = 0 OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1794.8 -2124.5 12.5 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 1794.8 -2137.2 12.5 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK cesar r2_seq CLEAR_SEQUENCE_TASK r2_seq OPEN_SEQUENCE_TASK r2_seq TASK_GO_STRAIGHT_TO_COORD -1 1794.8 -2122.5 12.4 PEDMOVE_WALK -1 TASK_GO_STRAIGHT_TO_COORD -1 1794.8 -2137.2 12.5 PEDMOVE_WALK -1 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_flame r2_seq CLEAR_SEQUENCE_TASK r2_seq timera = 0 r2_control_flag = 4 ENDIF ENDIF IF r2_control_flag = 4 IF timera > 3000 SHUT_ALL_CHARS_UP FALSE DELETE_CHAR cesar DELETE_CHAR r2_flame GOTO mission_riot2_passed ENDIF ENDIF ENDIF ///ingame dialogue/// GOSUB r2_overall_dialogue GOTO mission_riot2_loop // **************************************** Mission riot2 failed ************************ mission_riot2_failed: PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" RETURN // **************************************** mission riot2 passed ************************* mission_riot2_passed: flag_riot_mission_counter ++ PRINT_WITH_NUMBER_BIG ( M_PASSR ) 60 5000 1 //"Mission Passed!" AWARD_PLAYER_MISSION_RESPECT 60//amount of respect REMOVE_BLIP sweet_contact_blip // El Corona SET_ZONE_GANG_STRENGTH ELCO1 GANG_SMEX 40 SET_ZONE_GANG_STRENGTH ELCO2 GANG_SMEX 40 SET_ZONE_GANG_STRENGTH ELCO1 GANG_NMEX 0 SET_ZONE_GANG_STRENGTH ELCO2 GANG_NMEX 0 SET_ZONE_GANG_STRENGTH ELCO1 GANG_GROVE 0 SET_ZONE_GANG_STRENGTH ELCO2 GANG_GROVE 0 // Little Mexico SET_ZONE_GANG_STRENGTH LMEX1a GANG_SMEX 40 SET_ZONE_GANG_STRENGTH LMEX1b GANG_SMEX 40 SET_ZONE_GANG_STRENGTH LMEX1a GANG_NMEX 0 SET_ZONE_GANG_STRENGTH LMEX1b GANG_NMEX 0 SET_ZONE_GANG_STRENGTH LMEX1a GANG_GROVE 0 SET_ZONE_GANG_STRENGTH LMEX1b GANG_GROVE 0 PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL PLAYER1 REGISTER_MISSION_PASSED RIOT_2 PLAYER_MADE_PROGRESS 1 RETURN // ********************************** mission cleanup ************************************ mission_cleanup_riot2: //SET_CAMERA_BEHIND_PLAYER IF IS_STRING_EMPTY $shop_name RESTORE_CAMERA_JUMPCUT ENDIF SET_ZONE_NO_COPS ELCO FALSE IF NOT IS_CHAR_DEAD r2_katana SET_CHAR_COLLISION r2_katana TRUE REMOVE_CHAR_ELEGANTLY r2_katana ENDIF START_NEW_SCRIPT andys_door_madness //GOSUB r2_closing_doors MARK_MODEL_AS_NO_LONGER_NEEDED VLA1 MARK_MODEL_AS_NO_LONGER_NEEDED VLA2 MARK_MODEL_AS_NO_LONGER_NEEDED VLA3 //MARK_MODEL_AS_NO_LONGER_NEEDED FAM1 //MARK_MODEL_AS_NO_LONGER_NEEDED MEX MARK_MODEL_AS_NO_LONGER_NEEDED LSV1 MARK_MODEL_AS_NO_LONGER_NEEDED LSV2 //MARK_MODEL_AS_NO_LONGER_NEEDED LSV3 //MARK_MODEL_AS_NO_LONGER_NEEDED SENTINEL SWITCH_EMERGENCY_SERVICES ON MARK_MODEL_AS_NO_LONGER_NEEDED KATANA MARK_MODEL_AS_NO_LONGER_NEEDED DESERT_EAGLE MARK_MODEL_AS_NO_LONGER_NEEDED TEC9 MARK_MODEL_AS_NO_LONGER_NEEDED ROCKETLA MARK_MODEL_AS_NO_LONGER_NEEDED FLAME MARK_MODEL_AS_NO_LONGER_NEEDED GLENDALE MARK_MODEL_AS_NO_LONGER_NEEDED BBALL_INGAME SWITCH_PED_ROADS_BACK_TO_ORIGINAL 1945.8 -1956.5 0.0 1642.9 -2174.3 50.0 REMOVE_PICKUP r2_health REMOVE_PICKUP r2_gun REMOVE_PICKUP r2_pickup_health REMOVE_ANIMATION CAR REMOVE_ANIMATION BSKTBALL REMOVE_ANIMATION SMOKING REMOVE_ANIMATION SWAT REMOVE_ANIMATION CASINO REMOVE_ANIMATION CRACK REMOVE_ANIMATION GANGS IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF SHUT_ALL_CHARS_UP FALSE REMOVE_CHAR_ELEGANTLY cesar UNLOAD_SPECIAL_CHARACTER 1 SET_GUNSHOT_SENSE_RANGE_FOR_RIOT2 -1.0 REMOVE_BLIP r2_control_blip REMOVE_BLIP r2_final_blips[0] REMOVE_BLIP r2_final_blips[1] REMOVE_BLIP r2_final_blips[2] REMOVE_BLIP r2_final_blips[3] REMOVE_BLIP r2_final_blips[4] REMOVE_BLIP r2_final_blips[5] REMOVE_BLIP r2_flats_lookout_blips[0] REMOVE_BLIP r2_flats_lookout_blips[1] REMOVE_BLIP r2_flats_lookout_blips[2] REMOVE_BLIP r2_flats_lookout_blips[3] REMOVE_BLIP r2_flats_lookout_blips[4] REMOVE_BLIP r2_flats_lookout_blips[5] REMOVE_BLIP r2_NW_goons_blips[0] REMOVE_BLIP r2_NW_goons_blips[1] REMOVE_BLIP r2_NW_goons_blips[2] REMOVE_BLIP r2_NW_goons_blips[3] REMOVE_BLIP r2_NW_goons_blips[4] REMOVE_BLIP r2_NW_goons_blips[5] REMOVE_BLIP r2_NE_goons_blips[0] REMOVE_BLIP r2_NE_goons_blips[1] REMOVE_BLIP r2_NE_goons_blips[2] REMOVE_BLIP r2_NE_goons_blips[3] REMOVE_BLIP r2_NE_goons_blips[4] REMOVE_BLIP r2_NE_goons_blips[5] REMOVE_BLIP r2_SW_goons_blips[0] REMOVE_BLIP r2_SW_goons_blips[1] REMOVE_BLIP r2_SW_goons_blips[2] REMOVE_BLIP r2_SW_goons_blips[3] REMOVE_BLIP r2_SW_goons_blips[4] REMOVE_BLIP r2_SW_goons_blips[5] REMOVE_BLIP r2_SE_goons_blips[0] REMOVE_BLIP r2_SE_goons_blips[1] REMOVE_BLIP r2_SE_goons_blips[2] REMOVE_BLIP r2_SE_goons_blips[3] REMOVE_BLIP r2_SE_goons_blips[4] REMOVE_BLIP r2_SE_goons_blips[5] REMOVE_BLIP r2_car_mechanics_blips[0] REMOVE_BLIP r2_car_mechanics_blips[1] REMOVE_BLIP r2_car_mechanics_blips[2] REMOVE_BLIP r2_car_mechanics_blips[3] REMOVE_BLIP r2_car_mechanics_blips[4] REMOVE_BLIP r2_car_mechanics_blips[5] REMOVE_BLIP r2_climbers_blips[0] REMOVE_BLIP r2_climbers_blips[1] REMOVE_BLIP r2_climbers_blips[2] REMOVE_BLIP r2_climbers_blips[3] REMOVE_BLIP r2_climbers_blips[4] REMOVE_BLIP r2_climbers_blips[5] REMOVE_BLIP r2_garage_blips[0] REMOVE_BLIP r2_garage_blips[1] REMOVE_BLIP r2_garage_blips[2] REMOVE_BLIP r2_garage_blips[3] ENABLE_AMBIENT_CRIME TRUE GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////// GOSUBS /////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// r2_death_checks://///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF IS_CHAR_DEAD cesar CLEAR_PRINTS PRINT_NOW ( R2_08 ) 7000 1 //You killed Cesar! r2_deathcheck_flag = 1 ENDIF IF IS_CHAR_DEAD r2_launcher CLEAR_PRINTS PRINT_NOW ( R2_09 ) 7000 1 //You killed larry the launcher! r2_deathcheck_flag = 1 ENDIF IF IS_CHAR_DEAD r2_flame CLEAR_PRINTS PRINT_NOW ( R2_10 ) 7000 1 //You killed flameboy! r2_deathcheck_flag = 1 ENDIF IF IS_CHAR_DEAD r2_katana CLEAR_PRINTS PRINT_NOW ( R2_11 ) 7000 1 //You killed katanacunt! r2_deathcheck_flag = 1 ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// creating_flats_lookouts://////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //lookout 0 - leaning agaisnt the wall smoking - RUNNER!!! GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1831.6 -2004.6 12.6 r2_flats_lookout[0] SET_INFORM_RESPECTED_FRIENDS r2_flats_lookout[0] 8.0 6 SET_CHAR_HEADING r2_flats_lookout[0] 90.0 GIVE_WEAPON_TO_CHAR r2_flats_lookout[0] WEAPONTYPE_TEC9 3000 TASK_PLAY_ANIM r2_flats_lookout[0] M_smklean_loop SMOKING 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER r2_flats_lookout[0] r2_empty_ped_decision_maker ADD_BLIP_FOR_CHAR r2_flats_lookout[0] r2_flats_lookout_blips[0] CHANGE_BLIP_SCALE r2_flats_lookout_blips[0] 1 SET_CHAR_ACCURACY r2_flats_lookout[0] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_flats_lookout[0] 100 //lookout 1 - playing basketball offense GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1825.5 -2002.4 12.6 r2_flats_lookout[1] SET_INFORM_RESPECTED_FRIENDS r2_flats_lookout[1] 8.0 6 SET_CHAR_HEADING r2_flats_lookout[1] 89.7 TASK_PLAY_ANIM r2_flats_lookout[1] BBALL_idleloop BSKTBALL 4.0 TRUE FALSE FALSE FALSE -1 CREATE_OBJECT BBALL_INGAME 0.0 0.0 0.0 r2_ball ADD_BLIP_FOR_CHAR r2_flats_lookout[1] r2_flats_lookout_blips[1] CHANGE_BLIP_SCALE r2_flats_lookout_blips[1] 1 SET_CHAR_ACCURACY r2_flats_lookout[1] r2_char_accuracy SET_CHAR_DECISION_MAKER r2_flats_lookout[1] r2_ped_decisions SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_flats_lookout[1] TRUE //lookout 2 - playing basketball defense GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1824.3 -2002.4 12.6 r2_flats_lookout[2] SET_INFORM_RESPECTED_FRIENDS r2_flats_lookout[2] 8.0 6 SET_CHAR_HEADING r2_flats_lookout[2] 270.0 GIVE_WEAPON_TO_CHAR r2_flats_lookout[2] WEAPONTYPE_TEC9 3000 TASK_PLAY_ANIM r2_flats_lookout[2] BBALL_def_loop BSKTBALL 4.0 TRUE FALSE FALSE FALSE -1 SET_CHAR_DECISION_MAKER r2_flats_lookout[2] r2_ped_decisions SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_flats_lookout[2] TRUE ADD_BLIP_FOR_CHAR r2_flats_lookout[2] r2_flats_lookout_blips[2] CHANGE_BLIP_SCALE r2_flats_lookout_blips[2] 1 SET_CHAR_ACCURACY r2_flats_lookout[2] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_flats_lookout[2] 100 //lookout 3 - watching the basketball right GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1827.7 -1999.1 12.6 r2_flats_lookout[3] SET_INFORM_RESPECTED_FRIENDS r2_flats_lookout[3] 8.0 6 SET_CHAR_HEADING r2_flats_lookout[3] 133.6 GIVE_WEAPON_TO_CHAR r2_flats_lookout[3] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_flats_lookout[3] r2_ped_decisions SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_flats_lookout[3] TRUE ADD_BLIP_FOR_CHAR r2_flats_lookout[3] r2_flats_lookout_blips[3] CHANGE_BLIP_SCALE r2_flats_lookout_blips[3] 1 SET_CHAR_ACCURACY r2_flats_lookout[3] r2_char_accuracy //lookout 4 - watching the basketball left GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1828.2 -2000.4 12.6 r2_flats_lookout[4] SET_INFORM_RESPECTED_FRIENDS r2_flats_lookout[4] 8.0 6 SET_CHAR_HEADING r2_flats_lookout[4] 108.2 GIVE_WEAPON_TO_CHAR r2_flats_lookout[4] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_flats_lookout[4] r2_ped_decisions SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_flats_lookout[4] TRUE ADD_BLIP_FOR_CHAR r2_flats_lookout[4] r2_flats_lookout_blips[4] CHANGE_BLIP_SCALE r2_flats_lookout_blips[4] 1 SET_CHAR_ACCURACY r2_flats_lookout[4] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_flats_lookout[4] 100 //lookout 5 - walking to the fence then starting to smoke GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1834.3 -1995.9 12.6 r2_flats_lookout[5] SET_INFORM_RESPECTED_FRIENDS r2_flats_lookout[5] 8.0 6 SET_CHAR_HEADING r2_flats_lookout[5] 88.1 SET_CHAR_DECISION_MAKER r2_flats_lookout[5] r2_ped_decisions SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_flats_lookout[5] TRUE ADD_BLIP_FOR_CHAR r2_flats_lookout[5] r2_flats_lookout_blips[5] CHANGE_BLIP_SCALE r2_flats_lookout_blips[5] 1 SET_CHAR_ACCURACY r2_flats_lookout[5] r2_char_accuracy //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// waking_up_the_neighbourhood://////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF r2_SW_control_flag[0] = 0 r2_x = 1857.2 r2_y = -2020.6 r2_z = 12.6 ELSE IF r2_NW_control_flag[0] = 0 r2_x = 1865.3 r2_y = -1992.2 r2_z = 12.6 ELSE IF r2_NE_control_flag[0] = 0 r2_x = 1899.3 r2_y = -1991.7 r2_z = 12.6 ELSE IF r2_SE_control_flag[0] = 0 r2_x = 1908.3 r2_y = -2020.1 r2_z = 12.6 ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD r2_flats_lookout[0] IF r2_runner_control_flag = 0 OPEN_SEQUENCE_TASK r2_seq TASK_FOLLOW_PATH_NODES_TO_COORD -1 r2_x r2_y r2_z PEDMOVE_SPRINT -2 CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_flats_lookout[0] r2_seq CLEAR_SEQUENCE_TASK r2_seq r2_runner_control_flag = 1 ENDIF IF r2_runner_control_flag = 1 GET_SCRIPT_TASK_STATUS r2_flats_lookout[0] PERFORM_SEQUENCE_TASK task_status IF task_status = FINISHED_TASK IF r2_SW_control_flag[0] = 0 SET_CHAR_SAY_CONTEXT r2_flats_lookout[0] CONTEXT_GLOBAL_COVER_ME r2_context r2_SW_control_flag[0] = 1 ELSE IF r2_NW_control_flag[0] = 0 SET_CHAR_SAY_CONTEXT r2_flats_lookout[0] CONTEXT_GLOBAL_COVER_ME r2_context r2_NW_control_flag[0] = 1 ELSE IF r2_NE_control_flag[0] = 0 SET_CHAR_SAY_CONTEXT r2_flats_lookout[0] CONTEXT_GLOBAL_COVER_ME r2_context r2_NE_control_flag[0] = 1 ELSE IF r2_SE_control_flag[0] = 0 SET_CHAR_SAY_CONTEXT r2_flats_lookout[0] CONTEXT_GLOBAL_COVER_ME r2_context r2_SE_control_flag[0] = 1 ENDIF ENDIF ENDIF ENDIF r2_runner_control_flag = 2 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// creating_NW_goons:////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF r2_NW_control_flag[0] = 1 //NW house 0 ROTATE_OBJECT riot2_door[3] 270.0 360.0 FALSE //House 0 - Goon 0 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1850.3 -1990.0 12.6 r2_NW_goons[0] SET_INFORM_RESPECTED_FRIENDS r2_NW_goons[0] 8.0 6 SET_CHAR_HEADING r2_NW_goons[0] 270.0 GIVE_WEAPON_TO_CHAR r2_NW_goons[0] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_NW_goons[0] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_NW_goons[0] TRUE ADD_BLIP_FOR_CHAR r2_NW_goons[0] r2_NW_goons_blips[0] CHANGE_BLIP_SCALE r2_NW_goons_blips[0] 1 SET_CHAR_ACCURACY r2_NW_goons[0] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_NW_goons[0] 100 OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 200 TASK_GO_STRAIGHT_TO_COORD -1 1852.9 -1990.0 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1853.9 -1984.1 12.6 PEDMOVE_SPRINT -2 /// going to the north corner of house 0 TASK_ACHIEVE_HEADING -1 355.4 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_NW_goons[0] r2_seq CLEAR_SEQUENCE_TASK r2_seq //House 0 - Goon 1 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1851.7 -1989.9 12.6 r2_NW_goons[1] SET_INFORM_RESPECTED_FRIENDS r2_NW_goons[1] 8.0 6 SET_CHAR_HEADING r2_NW_goons[1] 270.7 GIVE_WEAPON_TO_CHAR r2_NW_goons[1] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_NW_goons[1] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_NW_goons[1] TRUE ADD_BLIP_FOR_CHAR r2_NW_goons[1] r2_NW_goons_blips[1] CHANGE_BLIP_SCALE r2_NW_goons_blips[1] 1 SET_CHAR_ACCURACY r2_NW_goons[1] r2_char_accuracy OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 400 TASK_GO_STRAIGHT_TO_COORD -1 1852.9 -1990.0 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1854.5 -1985.1 12.6 PEDMOVE_SPRINT -2 /// going to the north corner of house 0 TASK_ACHIEVE_HEADING -1 186.2 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_NW_goons[1] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF IF r2_NW_control_flag[1] = 1 //NW house 1 ROTATE_OBJECT riot2_door[4] 180.0 360.0 FALSE //House 1 - Goon 2 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1867.7 -1983.7 12.6 r2_NW_goons[2] SET_INFORM_RESPECTED_FRIENDS r2_NW_goons[2] 8.0 6 SET_CHAR_HEADING r2_NW_goons[2] 180.0 GIVE_WEAPON_TO_CHAR r2_NW_goons[2] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_NW_goons[2] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_NW_goons[2] TRUE ADD_BLIP_FOR_CHAR r2_NW_goons[2] r2_NW_goons_blips[2] CHANGE_BLIP_SCALE r2_NW_goons_blips[2] 1 SET_CHAR_ACCURACY r2_NW_goons[2] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_NW_goons[2] 100 OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 400 TASK_GO_STRAIGHT_TO_COORD -1 1867.7 -1986.8 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1854.5 -1999.6 12.6 PEDMOVE_SPRINT -2 /// going to the south corner of house 0 TASK_ACHIEVE_HEADING -1 198.8 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_NW_goons[2] r2_seq CLEAR_SEQUENCE_TASK r2_seq //House 1 - Goon 3 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1867.7 -1984.7 12.6 r2_NW_goons[3] SET_INFORM_RESPECTED_FRIENDS r2_NW_goons[3] 8.0 6 SET_CHAR_HEADING r2_NW_goons[3] 180.0 GIVE_WEAPON_TO_CHAR r2_NW_goons[3] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_NW_goons[3] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_NW_goons[3] TRUE ADD_BLIP_FOR_CHAR r2_NW_goons[3] r2_NW_goons_blips[3] CHANGE_BLIP_SCALE r2_NW_goons_blips[3] 1 SET_CHAR_ACCURACY r2_NW_goons[3] r2_char_accuracy OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 200 TASK_GO_STRAIGHT_TO_COORD -1 1867.7 -1986.8 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1854.5 -1997.6 12.6 PEDMOVE_SPRINT -2 /// going to the south corner of house 0 TASK_ACHIEVE_HEADING -1 315.1 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_NW_goons[3] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF IF r2_NW_control_flag[2] = 1 //NW house 2 ROTATE_OBJECT riot2_door[5] 0.0 360.0 FALSE //House 2 - Goon 4 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1866.2 -1999.7 12.6 r2_NW_goons[4] SET_INFORM_RESPECTED_FRIENDS r2_NW_goons[4] 8.0 6 SET_CHAR_HEADING r2_NW_goons[4] 0.0 GIVE_WEAPON_TO_CHAR r2_NW_goons[4] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_NW_goons[4] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_NW_goons[4] TRUE ADD_BLIP_FOR_CHAR r2_NW_goons[4] r2_NW_goons_blips[4] CHANGE_BLIP_SCALE r2_NW_goons_blips[4] 1 SET_CHAR_ACCURACY r2_NW_goons[4] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_NW_goons[4] 100 OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 200 TASK_GO_STRAIGHT_TO_COORD -1 1866.2 -1997.0 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1859.5 -1996.2 12.6 PEDMOVE_SPRINT -2 /// going to the west corner of house 2 TASK_ACHIEVE_HEADING -1 148.0 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_NW_goons[4] r2_seq CLEAR_SEQUENCE_TASK r2_seq //House 2 - Goon 5 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1865.9 -1998.7 12.6 r2_NW_goons[5] SET_INFORM_RESPECTED_FRIENDS r2_NW_goons[5] 8.0 6 SET_CHAR_HEADING r2_NW_goons[5] 0.0 GIVE_WEAPON_TO_CHAR r2_NW_goons[5] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_NW_goons[5] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_NW_goons[5] TRUE ADD_BLIP_FOR_CHAR r2_NW_goons[5] r2_NW_goons_blips[5] CHANGE_BLIP_SCALE r2_NW_goons_blips[5] 1 SET_CHAR_ACCURACY r2_NW_goons[5] r2_char_accuracy OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 400 TASK_GO_STRAIGHT_TO_COORD -1 1866.2 -1997.0 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1860.0 -1994.0 12.6 PEDMOVE_SPRINT -2 /// going to the west corner of house 2 TASK_ACHIEVE_HEADING -1 280.2 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_NW_goons[5] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// creating_NE_goons:////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF r2_NE_control_flag[0] = 1 //NE house 0 ROTATE_OBJECT riot2_door[6] 180.0 360.0 FALSE //House 0 - Goon 0 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1900.1 -1983.5 12.6 r2_NE_goons[0] SET_INFORM_RESPECTED_FRIENDS r2_NE_goons[0] 8.0 6 SET_CHAR_HEADING r2_NE_goons[0] 180.0 GIVE_WEAPON_TO_CHAR r2_NE_goons[0] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_NE_goons[0] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_NE_goons[0] TRUE ADD_BLIP_FOR_CHAR r2_NE_goons[0] r2_NE_goons_blips[0] CHANGE_BLIP_SCALE r2_NE_goons_blips[0] 1 SET_CHAR_ACCURACY r2_NE_goons[0] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_NE_goons[0] 100 OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 400 TASK_GO_STRAIGHT_TO_COORD -1 1900.1 -1987.4 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1905.0 -1987.2 12.6 PEDMOVE_SPRINT -2 /// going to the east corner of house 0 TASK_ACHIEVE_HEADING -1 267.4 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_NE_goons[0] r2_seq CLEAR_SEQUENCE_TASK r2_seq //House 0 - Goon 1 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1900.1 -1984.5 12.6 r2_NE_goons[1] SET_INFORM_RESPECTED_FRIENDS r2_NE_goons[1] 8.0 6 SET_CHAR_HEADING r2_NE_goons[1] 180.7 GIVE_WEAPON_TO_CHAR r2_NE_goons[1] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_NE_goons[1] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_NE_goons[1] TRUE ADD_BLIP_FOR_CHAR r2_NE_goons[1] r2_NE_goons_blips[1] CHANGE_BLIP_SCALE r2_NE_goons_blips[1] 1 SET_CHAR_ACCURACY r2_NE_goons[1] r2_char_accuracy OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 200 TASK_GO_STRAIGHT_TO_COORD -1 1900.1 -1987.4 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1904.4 -1988.1 12.6 PEDMOVE_SPRINT -2 /// going to the east corner of house 0 TASK_ACHIEVE_HEADING -1 108.9 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_NE_goons[1] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF IF r2_NE_control_flag[1] = 1 //NE house 1 ROTATE_OBJECT riot2_door[7] 90.0 360.0 FALSE //House 1 - Goon 2 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1915.8 -1993.5 12.6 r2_NE_goons[2] SET_INFORM_RESPECTED_FRIENDS r2_NE_goons[2] 8.0 6 SET_CHAR_HEADING r2_NE_goons[2] 90.0 GIVE_WEAPON_TO_CHAR r2_NE_goons[2] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_NE_goons[2] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_NE_goons[2] TRUE ADD_BLIP_FOR_CHAR r2_NE_goons[2] r2_NE_goons_blips[2] CHANGE_BLIP_SCALE r2_NE_goons_blips[2] 1 SET_CHAR_ACCURACY r2_NE_goons[2] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_NE_goons[2] 100 OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 400 TASK_GO_STRAIGHT_TO_COORD -1 1912.1 -1993.2 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1911.9 -1998.5 12.6 PEDMOVE_SPRINT -2 /// going to the south corner of house 1 TASK_ACHIEVE_HEADING -1 198.9 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_NE_goons[2] r2_seq CLEAR_SEQUENCE_TASK r2_seq //House 1 - Goon 3 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1914.8 -1993.5 12.6 r2_NE_goons[3] SET_INFORM_RESPECTED_FRIENDS r2_NE_goons[3] 8.0 6 SET_CHAR_HEADING r2_NE_goons[3] 90.0 GIVE_WEAPON_TO_CHAR r2_NE_goons[3] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_NE_goons[3] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_NE_goons[3] TRUE ADD_BLIP_FOR_CHAR r2_NE_goons[3] r2_NE_goons_blips[3] CHANGE_BLIP_SCALE r2_NE_goons_blips[3] 1 SET_CHAR_ACCURACY r2_NE_goons[3] r2_char_accuracy OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 200 TASK_GO_STRAIGHT_TO_COORD -1 1912.1 -1993.2 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1911.0 -1997.1 12.6 PEDMOVE_SPRINT -2 /// going to the south corner of house 1 TASK_ACHIEVE_HEADING -1 36.7 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_NE_goons[3] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF IF r2_NE_control_flag[2] = 1 //NE house 2 ROTATE_OBJECT riot2_door[8] 0.0 360.0 FALSE //House 2 - Goon 4 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1898.3 -1999.9 12.6 r2_NE_goons[4] SET_INFORM_RESPECTED_FRIENDS r2_NE_goons[4] 8.0 6 SET_CHAR_HEADING r2_NE_goons[4] 0.0 GIVE_WEAPON_TO_CHAR r2_NE_goons[4] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_NE_goons[4] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_NE_goons[4] TRUE ADD_BLIP_FOR_CHAR r2_NE_goons[4] r2_NE_goons_blips[4] CHANGE_BLIP_SCALE r2_NE_goons_blips[4] 1 SET_CHAR_ACCURACY r2_NE_goons[4] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_NE_goons[4] 100 OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 400 TASK_GO_STRAIGHT_TO_COORD -1 1898.4 -1996.8 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1891.8 -1996.0 12.6 PEDMOVE_SPRINT -2 /// going to the west corner of house 2 TASK_ACHIEVE_HEADING -1 71.9 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_NE_goons[4] r2_seq CLEAR_SEQUENCE_TASK r2_seq //House 2 - Goon 5 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1898.3 -1998.9 12.6 r2_NE_goons[5] SET_INFORM_RESPECTED_FRIENDS r2_NE_goons[5] 8.0 6 SET_CHAR_HEADING r2_NE_goons[5] 0.0 GIVE_WEAPON_TO_CHAR r2_NE_goons[5] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_NE_goons[5] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_NE_goons[5] TRUE ADD_BLIP_FOR_CHAR r2_NE_goons[5] r2_NE_goons_blips[5] CHANGE_BLIP_SCALE r2_NE_goons_blips[5] 1 SET_CHAR_ACCURACY r2_NE_goons[5] r2_char_accuracy OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 200 TASK_GO_STRAIGHT_TO_COORD -1 1898.4 -1996.8 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1892.4 -1995.1 12.6 PEDMOVE_SPRINT -2 /// going to the west corner of house 2 TASK_ACHIEVE_HEADING -1 302.4 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_NE_goons[5] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// creating_SW_goons:////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF r2_SW_control_flag[0] = 1 //SW house 0 ROTATE_OBJECT riot2_door[12] 270.0 360.0 FALSE //House 0 - Goon 0 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1850.4 -2019.5 12.6 r2_SW_goons[0] SET_INFORM_RESPECTED_FRIENDS r2_SW_goons[0] 8.0 6 SET_CHAR_HEADING r2_SW_goons[0] 270.0 GIVE_WEAPON_TO_CHAR r2_SW_goons[0] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_SW_goons[0] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_SW_goons[0] TRUE ADD_BLIP_FOR_CHAR r2_SW_goons[0] r2_SW_goons_blips[0] CHANGE_BLIP_SCALE r2_SW_goons_blips[0] 1 SET_CHAR_ACCURACY r2_SW_goons[0] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_SW_goons[0] 100 OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 400 TASK_GO_STRAIGHT_TO_COORD -1 1854.1 -2019.4 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1855.3 -2010.4 12.6 PEDMOVE_SPRINT -2 /// going to the north corner of house 0 TASK_ACHIEVE_HEADING -1 30.7 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_SW_goons[0] r2_seq CLEAR_SEQUENCE_TASK r2_seq //House 0 - Goon 1 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1851.7 -2019.5 12.6 r2_SW_goons[1] SET_INFORM_RESPECTED_FRIENDS r2_SW_goons[1] 8.0 6 SET_CHAR_HEADING r2_SW_goons[1] 270.7 GIVE_WEAPON_TO_CHAR r2_SW_goons[1] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_SW_goons[1] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_SW_goons[1] TRUE ADD_BLIP_FOR_CHAR r2_SW_goons[1] r2_SW_goons_blips[1] CHANGE_BLIP_SCALE r2_SW_goons_blips[1] 1 SET_CHAR_ACCURACY r2_SW_goons[1] r2_char_accuracy OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 200 TASK_GO_STRAIGHT_TO_COORD -1 1854.1 -2019.4 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1855.3 -2012.4 12.6 PEDMOVE_SPRINT -2 /// going to the north corner of house 0 TASK_ACHIEVE_HEADING -1 195.4 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_SW_goons[1] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF IF r2_SW_control_flag[1] = 1 //SW house 1 ROTATE_OBJECT riot2_door[13] 90.0 360.0 FALSE //House 1 - Goon 2 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1866.7 -2021.1 12.6 r2_SW_goons[2] SET_INFORM_RESPECTED_FRIENDS r2_SW_goons[2] 8.0 6 SET_CHAR_HEADING r2_SW_goons[2] 90.0 GIVE_WEAPON_TO_CHAR r2_SW_goons[2] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_SW_goons[2] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_SW_goons[2] TRUE ADD_BLIP_FOR_CHAR r2_SW_goons[2] r2_SW_goons_blips[2] CHANGE_BLIP_SCALE r2_SW_goons_blips[2] 1 SET_CHAR_ACCURACY r2_SW_goons[2] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_SW_goons[2] 100 OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 400 TASK_GO_STRAIGHT_TO_COORD -1 1863.3 -2021.2 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1862.9 -2011.7 12.6 PEDMOVE_SPRINT -2 /// going to the north corner of house 1 TASK_ACHIEVE_HEADING -1 43.3 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_SW_goons[2] r2_seq CLEAR_SEQUENCE_TASK r2_seq //House 1 - Goon 3 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1865.5 -2021.3 12.6 r2_SW_goons[3] SET_INFORM_RESPECTED_FRIENDS r2_SW_goons[3] 8.0 6 SET_CHAR_HEADING r2_SW_goons[3] 90.0 GIVE_WEAPON_TO_CHAR r2_SW_goons[3] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_SW_goons[3] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_SW_goons[3] TRUE ADD_BLIP_FOR_CHAR r2_SW_goons[3] r2_SW_goons_blips[3] CHANGE_BLIP_SCALE r2_SW_goons_blips[3] 1 SET_CHAR_ACCURACY r2_SW_goons[3] r2_char_accuracy OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 200 TASK_GO_STRAIGHT_TO_COORD -1 1863.3 -2021.2 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1863.4 -2013.9 12.6 PEDMOVE_SPRINT -2 /// going to the north corner of house 1 TASK_ACHIEVE_HEADING -1 154.0 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_SW_goons[3] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF IF r2_SW_control_flag[2] = 1 //SW house 2 ROTATE_OBJECT riot2_door[14] 0.0 360.0 FALSE //House 2 - Goon 4 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1857.2 -2036.9 12.6 r2_SW_goons[4] SET_INFORM_RESPECTED_FRIENDS r2_SW_goons[4] 8.0 6 SET_CHAR_HEADING r2_SW_goons[4] 0.0 GIVE_WEAPON_TO_CHAR r2_SW_goons[4] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_SW_goons[4] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_SW_goons[4] TRUE ADD_BLIP_FOR_CHAR r2_SW_goons[4] r2_SW_goons_blips[4] CHANGE_BLIP_SCALE r2_SW_goons_blips[4] 1 SET_CHAR_ACCURACY r2_SW_goons[4] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_SW_goons[4] 100 OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 400 TASK_GO_STRAIGHT_TO_COORD -1 1857.2 -2032.9 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1854.5 -2026.5 12.6 PEDMOVE_SPRINT -2 /// going to the south corner of house 0 TASK_ACHIEVE_HEADING -1 198.8 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_SW_goons[4] r2_seq CLEAR_SEQUENCE_TASK r2_seq //House 2 - Goon 5 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1857.1 -2035.8 12.6 r2_SW_goons[5] SET_INFORM_RESPECTED_FRIENDS r2_SW_goons[5] 8.0 6 SET_CHAR_HEADING r2_SW_goons[5] 0.0 GIVE_WEAPON_TO_CHAR r2_SW_goons[5] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_SW_goons[5] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_SW_goons[5] TRUE ADD_BLIP_FOR_CHAR r2_SW_goons[5] r2_SW_goons_blips[5] CHANGE_BLIP_SCALE r2_SW_goons_blips[5] 1 SET_CHAR_ACCURACY r2_SW_goons[5] r2_char_accuracy OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 200 TASK_GO_STRAIGHT_TO_COORD -1 1857.2 -2032.9 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1854.5 -2024.3 12.6 PEDMOVE_SPRINT -2 /// going to the south corner of house 0 TASK_ACHIEVE_HEADING -1 346.3 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_SW_goons[5] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// creating_SE_goons:////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF r2_SE_control_flag[0] = 1 //SE house 0 ROTATE_OBJECT riot2_door[9] 270.0 360.0 FALSE //House 0 - Goon 0 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1899.3 -2019.5 12.6 r2_SE_goons[0] SET_INFORM_RESPECTED_FRIENDS r2_SE_goons[0] 8.0 6 SET_CHAR_HEADING r2_SE_goons[0] 270.0 GIVE_WEAPON_TO_CHAR r2_SE_goons[0] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_SE_goons[0] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_SE_goons[0] TRUE ADD_BLIP_FOR_CHAR r2_SE_goons[0] r2_SE_goons_blips[0] CHANGE_BLIP_SCALE r2_SE_goons_blips[0] 1 SET_CHAR_ACCURACY r2_SE_goons[0] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_SE_goons[0] 100 OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 400 TASK_GO_STRAIGHT_TO_COORD -1 1902.1 -2019.7 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1903.2 -2012.3 12.6 PEDMOVE_SPRINT -2 /// going to the north corner of house 0 TASK_ACHIEVE_HEADING -1 330.8 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_SE_goons[0] r2_seq CLEAR_SEQUENCE_TASK r2_seq //House 0 - Goon 1 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1900.3 -2019.5 12.6 r2_SE_goons[1] SET_INFORM_RESPECTED_FRIENDS r2_SE_goons[1] 8.0 6 SET_CHAR_HEADING r2_SE_goons[1] 270.7 GIVE_WEAPON_TO_CHAR r2_SE_goons[1] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_SE_goons[1] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_SE_goons[1] TRUE ADD_BLIP_FOR_CHAR r2_SE_goons[1] r2_SE_goons_blips[1] CHANGE_BLIP_SCALE r2_SE_goons_blips[1] 1 SET_CHAR_ACCURACY r2_SE_goons[1] r2_char_accuracy OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 200 TASK_GO_STRAIGHT_TO_COORD -1 1902.1 -2019.7 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1903.2 -2013.6 12.6 PEDMOVE_SPRINT -2 /// going to the north corner of house 0 TASK_ACHIEVE_HEADING -1 195.6 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_SE_goons[1] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF IF r2_SE_control_flag[1] = 1 //SE house 1 ROTATE_OBJECT riot2_door[10] 90.0 360.0 FALSE //House 1 - Goon 2 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1915.8 -2021.5 12.6 r2_SE_goons[2] SET_INFORM_RESPECTED_FRIENDS r2_SE_goons[2] 8.0 6 SET_CHAR_HEADING r2_SE_goons[2] 90.0 GIVE_WEAPON_TO_CHAR r2_SE_goons[2] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_SE_goons[2] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_SE_goons[2] TRUE ADD_BLIP_FOR_CHAR r2_SE_goons[2] r2_SE_goons_blips[2] CHANGE_BLIP_SCALE r2_SE_goons_blips[2] 1 SET_CHAR_ACCURACY r2_SE_goons[2] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_SE_goons[2] 100 OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 400 TASK_GO_STRAIGHT_TO_COORD -1 1912.8 -2021.4 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1912.1 -2012.8 12.6 PEDMOVE_SPRINT -2 /// going to the north corner of house 1 TASK_ACHIEVE_HEADING -1 21.8 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_SE_goons[2] r2_seq CLEAR_SEQUENCE_TASK r2_seq //House 1 - Goon 3 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1914.8 -2021.5 12.6 r2_SE_goons[3] SET_INFORM_RESPECTED_FRIENDS r2_SE_goons[3] 8.0 6 SET_CHAR_HEADING r2_SE_goons[3] 90.0 GIVE_WEAPON_TO_CHAR r2_SE_goons[3] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_SE_goons[3] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_SE_goons[3] TRUE ADD_BLIP_FOR_CHAR r2_SE_goons[3] r2_SE_goons_blips[3] CHANGE_BLIP_SCALE r2_SE_goons_blips[3] 1 SET_CHAR_ACCURACY r2_SE_goons[3] r2_char_accuracy OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 200 TASK_GO_STRAIGHT_TO_COORD -1 1912.8 -2021.4 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1911.7 -2014.3 12.6 PEDMOVE_SPRINT -2 /// going to the north corner of house 1 TASK_ACHIEVE_HEADING -1 171.0 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_SE_goons[3] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF IF r2_SE_control_flag[2] = 1 //SE house 2 ROTATE_OBJECT riot2_door[11] 0.0 360.0 FALSE //House 2 - Goon 4 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1906.1 -2036.9 12.6 r2_SE_goons[4] SET_INFORM_RESPECTED_FRIENDS r2_SE_goons[4] 8.0 6 SET_CHAR_HEADING r2_SE_goons[4] 0.0 GIVE_WEAPON_TO_CHAR r2_SE_goons[4] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_SE_goons[4] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_SE_goons[4] TRUE ADD_BLIP_FOR_CHAR r2_SE_goons[4] r2_SE_goons_blips[4] CHANGE_BLIP_SCALE r2_SE_goons_blips[4] 1 SET_CHAR_ACCURACY r2_SE_goons[4] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_SE_goons[4] 100 OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 400 TASK_GO_STRAIGHT_TO_COORD -1 1906.0 -2033.5 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1907.3 -2033.3 12.6 PEDMOVE_SPRINT -2 /// going to the west corner of house 2 TASK_ACHIEVE_HEADING -1 32.4 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_SE_goons[4] r2_seq CLEAR_SEQUENCE_TASK r2_seq //House 2 - Goon 5 GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1906.1 -2035.9 12.6 r2_SE_goons[5] SET_INFORM_RESPECTED_FRIENDS r2_SE_goons[5] 8.0 6 SET_CHAR_HEADING r2_SE_goons[5] 0.0 GIVE_WEAPON_TO_CHAR r2_SE_goons[5] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_SE_goons[5] r2_empty_ped_decision_maker SET_CHAR_KINDA_STAY_IN_SAME_PLACE r2_SE_goons[5] TRUE ADD_BLIP_FOR_CHAR r2_SE_goons[5] r2_SE_goons_blips[5] CHANGE_BLIP_SCALE r2_SE_goons_blips[5] 1 SET_CHAR_ACCURACY r2_SE_goons[5] r2_char_accuracy OPEN_SEQUENCE_TASK r2_seq TASK_PAUSE -1 200 TASK_GO_STRAIGHT_TO_COORD -1 1906.0 -2033.5 12.5 PEDMOVE_WALK -1 TASK_FOLLOW_PATH_NODES_TO_COORD -1 1906.3 -2030.3 12.6 PEDMOVE_SPRINT -2 /// going to the west corner of house 2 TASK_ACHIEVE_HEADING -1 315.5 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_SE_goons[5] r2_seq CLEAR_SEQUENCE_TASK r2_seq ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// r2_mc_strap_group:///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF r2_flag_cesar_in_group = 1 IF NOT IS_GROUP_MEMBER cesar Players_Group REMOVE_BLIP r2_control_blip ADD_BLIP_FOR_CHAR cesar r2_control_blip SET_BLIP_AS_FRIENDLY r2_control_blip TRUE r2_flag_cesar_in_group = 0 ENDIF ENDIF IF r2_flag_cesar_in_group = 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer cesar 8.0 8.0 8.0 FALSE IF NOT IS_GROUP_MEMBER cesar Players_Group MAKE_ROOM_IN_PLAYER_GANG_FOR_MISSION_PEDS 1 SET_GROUP_MEMBER Players_Group cesar ENDIF REMOVE_BLIP r2_control_blip IF r2_group_size > 2 ADD_BLIP_FOR_COORD 1774.9 -1974.9 13.1 r2_control_blip SET_BLIP_AS_FRIENDLY r2_control_blip FALSE ENDIF r2_flag_cesar_in_group = 1 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// r2_creating_climbers://///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF IS_CHAR_DEAD r2_climbers[0] //climber 0 - 1st set right front GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1860.1 -2094.8 14.0 r2_climbers[0] SET_CHAR_HEADING r2_climbers[0] 187.0 GIVE_WEAPON_TO_CHAR r2_climbers[0] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_climbers[0] r2_empty_ped_decision_maker OPEN_SEQUENCE_TASK r2_seq TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PAUSE -1 4000 TASK_CLIMB -1 TRUE TASK_SHOOT_AT_COORD -1 1874.4 -2101.5 14.8 2000 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_climbers[0] r2_seq CLEAR_SEQUENCE_TASK r2_seq ADD_BLIP_FOR_CHAR r2_climbers[0] r2_climbers_blips[0] CHANGE_BLIP_SCALE r2_climbers_blips[0] 1 SET_CHAR_ACCURACY r2_climbers[0] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_climbers[0] 50 ENDIF IF IS_CHAR_DEAD r2_climbers[1] //climber 1 - 1st set right middle GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1857.3 -2094.8 14.0 r2_climbers[1] SET_CHAR_HEADING r2_climbers[1] 187.0 GIVE_WEAPON_TO_CHAR r2_climbers[1] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_climbers[1] r2_empty_ped_decision_maker TASK_PLAY_ANIM r2_climbers[1] weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 OPEN_SEQUENCE_TASK r2_seq TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PAUSE -1 6000 TASK_CLIMB -1 TRUE TASK_SHOOT_AT_COORD -1 1874.4 -2101.5 14.8 2000 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_climbers[1] r2_seq CLEAR_SEQUENCE_TASK r2_seq ADD_BLIP_FOR_CHAR r2_climbers[1] r2_climbers_blips[1] CHANGE_BLIP_SCALE r2_climbers_blips[1] 1 SET_CHAR_ACCURACY r2_climbers[1] r2_char_accuracy ENDIF IF IS_CHAR_DEAD r2_climbers[2] //climber 2 - 1st set right back GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1854.3 -2094.8 14.0 r2_climbers[2] SET_CHAR_HEADING r2_climbers[2] 187.0 GIVE_WEAPON_TO_CHAR r2_climbers[2] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_climbers[2] r2_empty_ped_decision_maker TASK_PLAY_ANIM r2_climbers[2] weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 OPEN_SEQUENCE_TASK r2_seq TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PAUSE -1 8000 TASK_CLIMB -1 TRUE TASK_SHOOT_AT_COORD -1 1874.4 -2101.5 14.8 2000 TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_climbers[2] r2_seq CLEAR_SEQUENCE_TASK r2_seq ADD_BLIP_FOR_CHAR r2_climbers[2] r2_climbers_blips[2] CHANGE_BLIP_SCALE r2_climbers_blips[2] 1 SET_CHAR_ACCURACY r2_climbers[2] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_climbers[2] 50 ENDIF IF IS_CHAR_DEAD r2_climbers[3] //climber 3 - 1st set left front GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1859.1 -2108.8 14.0 r2_climbers[3] SET_CHAR_HEADING r2_climbers[3] 2.0 GIVE_WEAPON_TO_CHAR r2_climbers[3] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_climbers[3] r2_empty_ped_decision_maker TASK_PLAY_ANIM r2_climbers[3] weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 OPEN_SEQUENCE_TASK r2_seq TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PAUSE -1 5000 TASK_CLIMB -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_climbers[3] r2_seq CLEAR_SEQUENCE_TASK r2_seq ADD_BLIP_FOR_CHAR r2_climbers[3] r2_climbers_blips[3] CHANGE_BLIP_SCALE r2_climbers_blips[3] 1 SET_CHAR_ACCURACY r2_climbers[3] r2_char_accuracy ENDIF IF IS_CHAR_DEAD r2_climbers[4] //climber 4 - 1st set left middle GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1856.3 -2108.8 14.0 r2_climbers[4] SET_CHAR_HEADING r2_climbers[4] 2.0 GIVE_WEAPON_TO_CHAR r2_climbers[4] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_climbers[4] r2_empty_ped_decision_maker TASK_PLAY_ANIM r2_climbers[4] weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 OPEN_SEQUENCE_TASK r2_seq TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PAUSE -1 7000 TASK_CLIMB -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_climbers[4] r2_seq CLEAR_SEQUENCE_TASK r2_seq ADD_BLIP_FOR_CHAR r2_climbers[4] r2_climbers_blips[4] CHANGE_BLIP_SCALE r2_climbers_blips[4] 1 SET_CHAR_ACCURACY r2_climbers[4] r2_char_accuracy ADD_ARMOUR_TO_CHAR r2_climbers[4] 50 ENDIF IF IS_CHAR_DEAD r2_climbers[5] //climber 5 - 1st set left back GENERATE_RANDOM_INT_IN_RANGE 0 2 r2_char_select_flag CREATE_CHAR PEDTYPE_MISSION2 r2_char_select[r2_char_select_flag] 1853.3 -2108.8 14.0 r2_climbers[5] SET_CHAR_HEADING r2_climbers[5] 2.0 GIVE_WEAPON_TO_CHAR r2_climbers[5] WEAPONTYPE_TEC9 3000 SET_CHAR_DECISION_MAKER r2_climbers[5] r2_empty_ped_decision_maker TASK_PLAY_ANIM r2_climbers[5] weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 OPEN_SEQUENCE_TASK r2_seq TASK_PLAY_ANIM -1 weapon_crouch PED 4.0 FALSE FALSE FALSE TRUE -1 TASK_PAUSE -1 9000 TASK_CLIMB -1 TRUE TASK_SET_CHAR_DECISION_MAKER -1 r2_ped_decisions CLOSE_SEQUENCE_TASK r2_seq PERFORM_SEQUENCE_TASK r2_climbers[5] r2_seq CLEAR_SEQUENCE_TASK r2_seq ADD_BLIP_FOR_CHAR r2_climbers[5] r2_climbers_blips[5] CHANGE_BLIP_SCALE r2_climbers_blips[5] 1 SET_CHAR_ACCURACY r2_climbers[5] r2_char_accuracy ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// r2_overall_dialogue://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF r2_speech_goals = 1 //Initial convo outside sweets OR r2_speech_goals = 4 //cutscene with OG's OR r2_speech_goals = 6 //cutscene in alleyway OR r2_speech_goals = 8 //cutscene checking on how hazer is OR r2_speech_goals = 9 // Behind us! IF r2_speech_control_flag < r2_last_label GOSUB r2_loading_dialogue GOSUB r2_playing_dialogue GOSUB r2_finishing_dialogue ELSE r2_speech_goals = 0 ENDIF ENDIF IF r2_speech_goals = 10 // Let's fucking finish this! OR r2_speech_goals = 11 // This is a Vagos neighborhood now! OR r2_speech_goals = 12 // Torch those Aztecas! OR r2_speech_goals = 13 //final cutscene IF r2_speech_control_flag < r2_last_label GOSUB r2_loading_dialogue GOSUB r2_playing_dialogue GOSUB r2_finishing_dialogue ELSE r2_speech_goals = 0 ENDIF ENDIF IF r2_speech_goals = 5 //dialogue where cesar is shouting about killing the enemy in the huts OR r2_speech_goals = 7 // Hazer! IF r2_speech_control_flag < r2_last_label GOSUB r2_loading_dialogue GOSUB r2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB r2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $r2_print_label[r2_speech_control_flag] r2_slot1 = 0 r2_slot2 = 0 ENDIF ELSE r2_speech_goals = 0 ENDIF ENDIF IF r2_speech_goals = 9 //Behind us! IF r2_speech_control_flag < r2_last_label GOSUB r2_loading_dialogue GOSUB r2_playing_dialogue IF NOT IS_CHAR_DEAD r2_launcher GOSUB r2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $r2_print_label[r2_speech_control_flag] r2_slot1 = 0 r2_slot2 = 0 ENDIF ELSE r2_speech_goals = 0 ENDIF ENDIF IF r2_goals = 0 IF r2_control_flag > 2 IF IS_GROUP_MEMBER cesar Players_Group IF LOCATE_CHAR_ANY_MEANS_CHAR_3D cesar scplayer 10.0 10.0 8.0 FALSE IF IS_CHAR_ON_FOOT scplayer AND IS_CHAR_ON_FOOT cesar IF r2_speech_goals = 2 //convo about tenpenny bringing the streets to its knees OR r2_speech_goals = 3 //convo of cesar asking carl if it's ok to marry kendl IF r2_speech_control_flag < r2_last_label GOSUB r2_loading_dialogue GOSUB r2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB r2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $r2_print_label[r2_speech_control_flag] r2_slot1 = 0 r2_slot2 = 0 ENDIF ELSE r2_speech_goals = 0 ENDIF ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR scplayer AND IS_CHAR_IN_ANY_CAR cesar IF r2_speech_goals = 2 //convo about tenpenny bringing the streets to its knees OR r2_speech_goals = 3 //convo of cesar asking carl if it's ok to marry kendl IF r2_speech_control_flag < r2_last_label GOSUB r2_loading_dialogue GOSUB r2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB r2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $r2_print_label[r2_speech_control_flag] r2_slot1 = 0 r2_slot2 = 0 ENDIF ELSE r2_speech_goals = 0 ENDIF ENDIF ENDIF ENDIF /* IF r2_speech_goals = 2 //convo about tenpenny bringing the streets to its knees OR r2_speech_goals = 3 //convo of cesar asking carl if it's ok to marry kendl IF r2_speech_control_flag < r2_last_label GOSUB r2_loading_dialogue GOSUB r2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB r2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $r2_print_label[r2_speech_control_flag] r2_slot1 = 0 r2_slot2 = 0 ENDIF ELSE r2_speech_goals = 0 ENDIF ENDIF */ ELSE IF r2_speech_goals < 14 IF r2_speech_control_flag < r2_last_label r2_speech_control_flag ++ ENDIF CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $r2_print_label[r2_speech_control_flag] CLEAR_PRINTS r2_storing_speech_goals_number = r2_speech_goals r2_storing_speech_control_number = r2_speech_control_flag r2_speech_goals = 14 GENERATE_RANDOM_INT_IN_RANGE 0 4 r2_speech_control_flag r2_random_last_label = r2_speech_control_flag + 1 GOSUB r2_dialogue_setup ENDIF ENDIF IF r2_speech_goals = 14 //cesar is out of the group IF NOT IS_GROUP_MEMBER cesar Players_Group IF r2_speech_control_flag < r2_last_label GOSUB r2_loading_dialogue GOSUB r2_playing_dialogue IF NOT IS_CHAR_DEAD cesar GOSUB r2_finishing_dialogue ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $r2_print_label[r2_speech_control_flag] r2_slot1 = 0 r2_slot2 = 0 ENDIF ELSE PRINT_NOW ( R2_12 ) 7000 1 // You have left Cesar behind. r2_speech_goals = 15 ENDIF ELSE PRINT_NOW ( R2_12 ) 7000 1 // You have left Cesar behind. r2_speech_goals = 15 ENDIF ENDIF IF r2_speech_goals = 15 //cesar has been out of the group and has returned IF IS_GROUP_MEMBER cesar Players_Group r2_speech_goals = 16 r2_speech_control_flag = 0 CLEAR_PRINTS //GOSUB r2_dialogue_setup ENDIF ENDIF IF r2_speech_goals = 16 //cesar is back in group IF IS_GROUP_MEMBER cesar Players_Group timerb = 0 r2_speech_goals = r2_storing_speech_goals_number r2_speech_control_flag = r2_storing_speech_control_number GOSUB r2_dialogue_setup IF r2_storing_speech_goals_number = 0 IF r2_group_size < 3 PRINT_NOW ( R2_01 ) 60000 1 // Get a couple of Families to join your gang. ELSE PRINT_NOW ( R2_13 ) 7000 1 // Go and meet up with the veterano's at Unity Station. ENDIF timerb = 0 ENDIF ELSE CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 CLEAR_THIS_PRINT $r2_print_label[r2_speech_control_flag] r2_speech_goals = 14 GENERATE_RANDOM_INT_IN_RANGE 0 4 r2_speech_control_flag r2_random_last_label = r2_speech_control_flag + 1 GOSUB r2_dialogue_setup ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// r2_dialogue_setup:////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF r2_speech_goals = 1 $r2_print_label[0] = &ROT2_AA // Ok, so what's the plan? $r2_print_label[1] = &ROT2_AB // We're going to meet three of my veterano's over at Unity Station. $r2_print_label[2] = &ROT2_AD // Three, is that all? $r2_print_label[3] = &ROT2_AE // Ok, I'm gonna get a couple Families boys to come along too. r2_audio_label[0] = SOUND_ROT2_AA r2_audio_label[1] = SOUND_ROT2_AB r2_audio_label[2] = SOUND_ROT2_AD r2_audio_label[3] = SOUND_ROT2_AE r2_last_label = 4 ENDIF IF r2_speech_goals = 2 $r2_print_label[0] = &ROT2_BA // Shit's real serious, man, look at the streets, eh. $r2_print_label[1] = &ROT2_BB // Yeah, we better watch ourselves. $r2_print_label[2] = &ROT2_BC // Don't want to get caught on Ballas turf while this shit's going down. $r2_print_label[3] = &ROT2_BD // Man, Tenpenny's brought South Central to it's knees... r2_audio_label[0] = SOUND_ROT2_BA r2_audio_label[1] = SOUND_ROT2_BB r2_audio_label[2] = SOUND_ROT2_BC r2_audio_label[3] = SOUND_ROT2_BD r2_last_label = 4 ENDIF IF r2_speech_goals = 3 $r2_print_label[0] = &ROT2_CA // While we here, I, eerr, I have a question to ask you. $r2_print_label[1] = &ROT2_CB // Yeah? What? $r2_print_label[2] = &ROT2_CC // Well it's... it's personal. $r2_print_label[3] = &ROT2_CD // Come on, man, we're brothers, you and me. $r2_print_label[4] = &ROT2_CE // You can ask me anything. $r2_print_label[5] = &ROT2_CF // Ok, here goes. $r2_print_label[6] = &ROT2_CG // I want to ask Kendl the question. $r2_print_label[7] = &ROT2_CH // What's the problem? $r2_print_label[8] = &ROT2_CJ // Call her, dude, here, use my phone. $r2_print_label[9] = &ROT2_CK // Noo, holmes, THE question! $r2_print_label[10] = &ROT2_CL // What? Oh shit, you mean POP THE question. $r2_print_label[11] = &ROT2_CM // Well, I'm ok with that, I appreciate you asking my permission and shit, but - $r2_print_label[12] = &ROT2_CN // Si. I know you cool. $r2_print_label[13] = &ROT2_CO // Is Sweet that is the problem, could you talk to him? $r2_print_label[14] = &ROT2_CP // Sure thing, Cesar, I'll talk to him. $r2_print_label[15] = &ROT2_CQ // Thank you, CJ, that means a lot to me. r2_audio_label[0] = SOUND_ROT2_CA r2_audio_label[1] = SOUND_ROT2_CB r2_audio_label[2] = SOUND_ROT2_CC r2_audio_label[3] = SOUND_ROT2_CD r2_audio_label[4] = SOUND_ROT2_CE r2_audio_label[5] = SOUND_ROT2_CF r2_audio_label[6] = SOUND_ROT2_CG r2_audio_label[7] = SOUND_ROT2_CH r2_audio_label[8] = SOUND_ROT2_CJ r2_audio_label[9] = SOUND_ROT2_CK r2_audio_label[10] = SOUND_ROT2_CL r2_audio_label[11] = SOUND_ROT2_CM r2_audio_label[12] = SOUND_ROT2_CN r2_audio_label[13] = SOUND_ROT2_CO r2_audio_label[14] = SOUND_ROT2_CP r2_audio_label[15] = SOUND_ROT2_CQ r2_last_label = 16 ENDIF IF r2_speech_goals = 4 $r2_print_label[0] = &ROT2_DA // Those Vagos, man, I'm gonna gut those cacos. $r2_print_label[1] = &ROT2_DB // Raspalo hasta el hueso! $r2_print_label[2] = &ROT2_DC // Hey, carneles, how my Guerreros, eh? $r2_print_label[3] = &ROT2_DD // Cesar! And you must be CJ. $r2_print_label[4] = &ROT2_DE // Cesar says you cool, so we cool, holmes. $r2_print_label[5] = &ROT2_DF // Ok. We will have to work our way through this neighborhood to get to my house. //$r2_print_label[7] = &ROT2_DH // We will approach from the rear alleyway, ok? $r2_print_label[8] = &ROT2_DJ // If we stick together those Vagos bendejos won't stand a chance! $r2_print_label[9] = &ROT2_DK // Watch each others' backs, amigos. $r2_print_label[10] = &ROT2_DL // Hasta le muerte! $r2_print_label[11] = &ROT2_DM // HASTA LE MUERTE! r2_audio_label[0] = SOUND_ROT2_DA r2_audio_label[1] = SOUND_ROT2_DB r2_audio_label[2] = SOUND_ROT2_DC r2_audio_label[3] = SOUND_ROT2_DD r2_audio_label[4] = SOUND_ROT2_DE r2_audio_label[5] = SOUND_ROT2_DF //r2_audio_label[7] = SOUND_ROT2_DH r2_audio_label[8] = SOUND_ROT2_DJ r2_audio_label[9] = SOUND_ROT2_DK r2_audio_label[10] = SOUND_ROT2_DL r2_audio_label[11] = SOUND_ROT2_DM r2_last_label = r2_random_last_label ENDIF IF r2_speech_goals = 5 $r2_print_label[0] = &ROT2_EA // That's the last of them, let's move out! DONE //$r2_print_label[1] = &ROT2_EB // Everybody ok? Let's hit 'em! //$r2_print_label[2] = &ROT2_EC // Vagos fools didn't stand a chance! $r2_print_label[3] = &ROT2_ED // Quickly, go! GO! DONE $r2_print_label[4] = &ROT2_EE // Follow me! DONE $r2_print_label[5] = &ROT2_EF // Keep close! DONE $r2_print_label[6] = &ROT2_EG // Keep together! DONE $r2_print_label[7] = &ROT2_EH // Stay close. DONE $r2_print_label[8] = &ROT2_EJ // Keep it tight! DONE $r2_print_label[11] = &ROT2_EM // Northside Vagos assholes! DONE $r2_print_label[12] = &ROT2_EN // Up ahead! //$r2_print_label[13] = &ROT2_EO // Nearly there! //$r2_print_label[14] = &ROT2_EP // Careful, we are close! //$r2_print_label[15] = &ROT2_EQ // Behind us! //$r2_print_label[16] = &ROT2_ER // Watch our backs! //$r2_print_label[17] = &ROT2_ES // Watch your backs! r2_audio_label[0] = SOUND_ROT2_EA //r2_audio_label[1] = SOUND_ROT2_EB //r2_audio_label[2] = SOUND_ROT2_EC r2_audio_label[3] = SOUND_ROT2_ED r2_audio_label[4] = SOUND_ROT2_EE r2_audio_label[5] = SOUND_ROT2_EF r2_audio_label[6] = SOUND_ROT2_EG r2_audio_label[7] = SOUND_ROT2_EH r2_audio_label[8] = SOUND_ROT2_EJ r2_audio_label[11] = SOUND_ROT2_EM r2_audio_label[12] = SOUND_ROT2_EN //r2_audio_label[13] = SOUND_ROT2_EO //r2_audio_label[14] = SOUND_ROT2_EP //r2_audio_label[15] = SOUND_ROT2_EQ //r2_audio_label[16] = SOUND_ROT2_ER //r2_audio_label[17] = SOUND_ROT2_ES r2_last_label = r2_random_last_label ENDIF //$r2_print_label[9] = &ROT2_EK // Vagos boys! //$r2_print_label[10] = &ROT2_EL // LSV's! //$r2_print_label[18] = &ROT2_EV // Watch that alleyway! //$r2_print_label[19] = &ROT2_EX // Vagos to our left! //$r2_print_label[20] = &ROT2_EY // Northside on our right! //$r2_print_label[21] = &ROT2_ET // On the rooftops! //$r2_print_label[22] = &ROT2_EU // They're on the roofs! IF r2_speech_goals = 6 $r2_print_label[0] = &ROT2_FA // That was the easy bit, eh. $r2_print_label[1] = &ROT2_FB // Now we go into the viper's nest. $r2_print_label[2] = &ROT2_FC // This is where it gets tough. $r2_print_label[3] = &ROT2_FD // Luckily we have a little surprise up our sleeves, eh, Sunny! $r2_print_label[4] = &ROT2_FE // That's a rocket launcher! We'll bring the Natiional Guard down on us! $r2_print_label[5] = &ROT2_FG // Look around you, CJ, the whole city is a war zone! $r2_print_label[6] = &ROT2_FH // C'mon, I want to take my house back! r2_audio_label[0] = SOUND_ROT2_FA r2_audio_label[1] = SOUND_ROT2_FB r2_audio_label[2] = SOUND_ROT2_FC r2_audio_label[3] = SOUND_ROT2_FD r2_audio_label[4] = SOUND_ROT2_FE r2_audio_label[5] = SOUND_ROT2_FG r2_audio_label[6] = SOUND_ROT2_FH r2_last_label = r2_random_last_label ENDIF IF r2_speech_goals = 7 $r2_print_label[0] = &ROT2_GA // Hazer! r2_audio_label[0] = SOUND_ROT2_GA r2_last_label = 1 ENDIF IF r2_speech_goals = 8 $r2_print_label[0] = &ROT2_GB // Shit, Hazer... $r2_print_label[1] = &ROT2_GC // He is pretty bad, Cesar... $r2_print_label[2] = &ROT2_GD // Heads up! More Vagos! $r2_print_label[3] = &ROT2_EW // They're coming over the walls! r2_audio_label[0] = SOUND_ROT2_GB r2_audio_label[1] = SOUND_ROT2_GC r2_audio_label[2] = SOUND_ROT2_GD r2_audio_label[3] = SOUND_ROT2_EW r2_last_label = 4 ENDIF IF r2_speech_goals = 9 $r2_print_label[0] = &ROT2_HA // Behind us! $r2_print_label[1] = &ROT2_HB // More Vagos Behind us! $r2_print_label[2] = &ROT2_HC // Northsiders behind us! r2_audio_label[0] = SOUND_ROT2_HA r2_audio_label[1] = SOUND_ROT2_HB r2_audio_label[2] = SOUND_ROT2_HC r2_last_label = r2_random_last_label ENDIF IF r2_speech_goals = 10 $r2_print_label[0] = &ROT2_JA // Let's fucking finish this! $r2_print_label[1] = &ROT2_JB // I'm with you, man, let's take 'em! r2_audio_label[0] = SOUND_ROT2_JA r2_audio_label[1] = SOUND_ROT2_JB r2_last_label = 2 ENDIF IF r2_speech_goals = 11 $r2_print_label[0] = &ROT2_KA // This is a Vagos neighborhood now! $r2_print_label[1] = &ROT2_KB // Vagos rule this varrio now - Aztecas are no more! $r2_print_label[2] = &ROT2_KC // Find a new home, assholes, Vagos own this 'hood! r2_audio_label[0] = SOUND_ROT2_KA r2_audio_label[1] = SOUND_ROT2_KB r2_audio_label[2] = SOUND_ROT2_KC r2_last_label = r2_random_last_label ENDIF IF r2_speech_goals = 12 $r2_print_label[0] = &ROT2_LA // Torch those Aztecas! $r2_print_label[1] = &ROT2_LB // Burn them! $r2_print_label[2] = &ROT2_LC // Burn, Aztecas, burn! r2_audio_label[0] = SOUND_ROT2_LA r2_audio_label[1] = SOUND_ROT2_LB r2_audio_label[2] = SOUND_ROT2_LC r2_last_label = r2_random_last_label ENDIF IF r2_speech_goals = 13 $r2_print_label[0] = &ROT2_MA // That's the last of 'em. $r2_print_label[1] = &ROT2_MB // How is Hazer? $r2_print_label[2] = &ROT2_MC // We need to get him to a hospital. $r2_print_label[3] = &ROT2_MD // I'll take him. $r2_print_label[4] = &ROT2_ME // CJ, you have done more than enough. $r2_print_label[5] = &ROT2_MF // You should get back to Grove. $r2_print_label[6] = &ROT2_MG // Sure thing, esse, I'll see you after all this has settled. $r2_print_label[7] = &ROT2_MH // Thank you, CJ and good luck, my friend. r2_audio_label[0] = SOUND_ROT2_MA r2_audio_label[1] = SOUND_ROT2_MB r2_audio_label[2] = SOUND_ROT2_MC r2_audio_label[3] = SOUND_ROT2_MD r2_audio_label[4] = SOUND_ROT2_ME r2_audio_label[5] = SOUND_ROT2_MF r2_audio_label[6] = SOUND_ROT2_MG r2_audio_label[7] = SOUND_ROT2_MH r2_last_label = r2_random_last_label ENDIF IF r2_speech_goals = 14 $r2_print_label[0] = &CESX_BA // Wait up, CJ! $r2_print_label[1] = &CESX_BB // Hang ten, CJ! $r2_print_label[2] = &CESX_BC // Hold up! $r2_print_label[3] = &CESX_BD // Slow down, Carl! r2_audio_label[0] = SOUND_CESX_BA r2_audio_label[1] = SOUND_CESX_BB r2_audio_label[2] = SOUND_CESX_BC r2_audio_label[3] = SOUND_CESX_BD r2_last_label = r2_random_last_label ENDIF r2_slot_load = r2_speech_control_flag r2_slot1 = 0 r2_slot2 = 0 r2_play_which_slot = 1 //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// r2_loading_dialogue://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF r2_slot_load < r2_last_label //slot 1 IF r2_slot1 = 0 LOAD_MISSION_AUDIO 1 r2_audio_label[r2_slot_load] r2_slot_load ++ r2_slot1 = 1 ENDIF //slot 2 IF r2_slot2 = 0 LOAD_MISSION_AUDIO 2 r2_audio_label[r2_slot_load] r2_slot_load ++ r2_slot2 = 1 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// r2_playing_dialogue://////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //slot 1 IF r2_play_which_slot = 1 IF r2_slot1 = 1 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $r2_print_label[r2_speech_control_flag] ) 4500 1 r2_slot1 = 2 ENDIF ENDIF ENDIF //slot 2 IF r2_play_which_slot = 2 IF r2_slot2 = 1 IF HAS_MISSION_AUDIO_LOADED 2 PLAY_MISSION_AUDIO 2 PRINT_NOW ( $r2_print_label[r2_speech_control_flag] ) 4500 1 r2_slot2 = 2 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// r2_finishing_dialogue:////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //slot 1 IF r2_slot1 = 2 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_THIS_PRINT $r2_print_label[r2_speech_control_flag] r2_speech_control_flag ++ r2_play_which_slot = 2 r2_slot1 = 0 ENDIF ENDIF //slot 2 IF r2_slot2 = 2 IF HAS_MISSION_AUDIO_FINISHED 2 CLEAR_THIS_PRINT $r2_print_label[r2_speech_control_flag] r2_speech_control_flag ++ r2_play_which_slot = 1 r2_slot2 = 0 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ************************************* final part A ************************************** // ************************************* Carter Block ************************************** // *********** Inspired by Zelda, Metroid, MGS, Perfect Dark, Time Crisis, GTA ************* // ***************************************************************************************** // ***************************************************************************************** // Mission start stuff GOSUB mission_start_finaleA IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_finaleA_failed ENDIF GOSUB mission_cleanup_finaleA MISSION_END { // ********************************** Variables for shootout ********************************* LVAR_FLOAT speed_fa LVAR_FLOAT camposX_fa camposY_fa camposZ_fa camlookX_fa camlookY_fa camlookZ_fa LVAR_FLOAT camposincX_fa camposincY_fa camposincZ_fa camlookincX_fa camlookincY_fa camlookincZ_fa LVAR_INT carter_DM LVAR_INT cartercoward_DM LVAR_INT cartertough_DM LVAR_INT swatgroup_GMD LVAR_INT ganggroup_GMD LVAR_INT gang2group_GMD LVAR_INT carter_interior LVAR_INT copcar1_fa LVAR_INT copcar2_fa LVAR_INT copcar3_fa LVAR_INT swatvan_fa LVAR_INT car1_fa LVAR_INT car2_fa LVAR_INT car3_fa LVAR_INT car4_fa LVAR_INT car5_fa LVAR_INT bmx_fa LVAR_INT swat1_fa LVAR_INT swat2_fa LVAR_INT swat3_fa LVAR_INT swat4_fa LVAR_INT swat5_fa LVAR_INT swat6_fa LVAR_INT swat7_fa LVAR_INT gang1_fa LVAR_INT gang2_fa LVAR_INT gang3_fa LVAR_INT gang4_fa LVAR_INT gang5_fa LVAR_INT gang6_fa LVAR_INT gang7_fa LVAR_INT gang8_fa LVAR_INT gang9_fa LVAR_INT gang10_fa LVAR_INT gang11_fa LVAR_INT gang12_fa LVAR_INT gang13_fa LVAR_INT gang14_fa LVAR_INT gang15_fa LVAR_INT gang16_fa LVAR_INT gang17_fa LVAR_INT gang18_fa LVAR_INT gang19_fa LVAR_INT gang20_fa LVAR_INT hoochie1_fa LVAR_INT hoochie3_fa LVAR_INT hoochie4_fa LVAR_INT healthforsmoke_fa LVAR_INT wallhealth_fa //objects LVAR_INT barrel1_fa LVAR_INT barrel2_fa LVAR_INT barrel3_fa LVAR_INT barrel4_fa LVAR_INT door_fa LVAR_INT wall_fa //fx LVAR_INT wallsmashfx_fa //counters VAR_INT smokehealth_fa //sequences LVAR_INT runnostay_faseq LVAR_INT stayshoot_faseq LVAR_INT stayshootnoduck_faseq LVAR_INT rolloutr_faseq LVAR_INT rolloutl_faseq LVAR_INT peekright_faseq LVAR_INT enemy_fa LVAR_INT peekleft_faseq LVAR_FLOAT enemyx_fa LVAR_FLOAT enemyy_fa LVAR_FLOAT enemyz_fa LVAR_INT enemytarget_fa LVAR_INT enemytarget2_fa LVAR_INT run2shoot_faseq LVAR_INT shootimer_s4 LVAR_FLOAT enemyx2_fa LVAR_FLOAT enemyy2_fa LVAR_FLOAT enemyz2_fa LVAR_FLOAT heading_fa LVAR_INT flee_faseq //text LVAR_TEXT_LABEL $text_label_fa LVAR_INT audio_label_fa LVAR_TEXT_LABEL $input_text_fa //blips LVAR_INT sweet_fablip LVAR_INT swatvan_fablip LVAR_INT carter_fablip LVAR_INT smoke_fablip LVAR_INT irgoggles_fablip //pickups LVAR_INT armour1_fa LVAR_INT armour2_fa LVAR_INT armour3_fa LVAR_INT armour4_fa LVAR_INT health1_fa LVAR_INT health2_fa LVAR_INT health3_fa LVAR_INT m4pickup_fa LVAR_INT shotgunpickup_fa LVAR_INT irgoggles_fa LVAR_INT shotgunpickup2_fa //added to stop ped already has this command bug LVAR_INT smoke_progress_fa smoke_can_kill_player_fa // //flags LVAR_INT ram_faflag LVAR_INT carter_faflag LVAR_INT lockcar_faflag LVAR_INT playerincar_faflag LVAR_INT coordshoot_faflag LVAR_INT skipcutscene_faflag LVAR_INT swatvan_faflag LVAR_INT swat1_faflag LVAR_INT swat5_faflag LVAR_INT floorg_faflag LVAR_INT floor1_faflag LVAR_INT floor2_faflag LVAR_INT floor3_faflag LVAR_INT gang1_faflag LVAR_INT gang2_faflag LVAR_INT gang3_faflag LVAR_INT gang4_faflag LVAR_INT gang5_faflag LVAR_INT gang6_faflag LVAR_INT gang7_faflag LVAR_INT gang8_faflag LVAR_INT gang9_faflag LVAR_INT gang10_faflag LVAR_INT gang11_faflag LVAR_INT gang12_faflag LVAR_INT gang13_faflag LVAR_INT gang14_faflag LVAR_INT gang15_faflag LVAR_INT gang16_faflag LVAR_INT gang17_faflag LVAR_INT gang18_faflag LVAR_INT gang19_faflag LVAR_INT gang20_faflag LVAR_INT swat2_faflag LVAR_INT firstfloorcounter_fa LVAR_INT slidedoor_faflag LVAR_INT createguysfirst_faflag LVAR_INT secondfloorcounter_fa LVAR_INT druglabguys1_faflag LVAR_INT druglabguys2_faflag LVAR_INT rightroom_faflag LVAR_INT leftroom_faflag LVAR_INT bossbattle_faflag LVAR_INT smokerun_faflag LVAR_INT tellsmoke_faflag LVAR_INT switch_faflag LVAR_INT irgoggles_faflag LVAR_INT progressaudio_faflag LVAR_INT handlingudio_faflag LVAR_INT bossbattleaudio_faflag LVAR_INT lightsout_faflag LVAR_INT ped1_faflag LVAR_INT ped2_faflag LVAR_INT ped3_faflag LVAR_INT ped4_faflag LVAR_INT finaleaplayerpass_flag // **************************************** Mission Start ************************************ mission_start_finaleA: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN SCRIPT_NAME finaleA WAIT 0 LOAD_MISSION_TEXT RIOT4 //intro cut scene SET_AREA_VISIBLE 1 LOAD_CUTSCENE RIOT_4a WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 REQUEST_MODEL SWATVAN REQUEST_MODEL COPCARLA REQUEST_MODEL SWAT REQUEST_MODEL BALLAS1 REQUEST_MODEL GREENWOO LOAD_SPECIAL_CHARACTER 1 SWEET REMOVE_IPL carter REQUEST_IPL carter LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED GREENWOO OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED SWATVAN OR NOT HAS_MODEL_LOADED COPCARLA OR NOT HAS_MODEL_LOADED SWAT OR NOT HAS_MODEL_LOADED BALLAS1 WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer 2514.745 -1673.838 12.8 SET_CHAR_HEADING scplayer 60.891 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY carter_DM LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH cartertough_DM LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_WEAK cartercoward_DM SET_MAX_WANTED_LEVEL 0 SWITCH_EMERGENCY_SERVICES OFF DELETE_OBJECT carterwall CREATE_OBJECT_NO_OFFSET imy_shash_wall 2522.008 -1272.93 35.609 carterwall SET_OBJECT_HEALTH carterwall 100 SET_OBJECT_COLLISION_DAMAGE_EFFECT carterwall FALSE FREEZE_OBJECT_POSITION carterwall TRUE SET_OBJECT_COLLISION_DAMAGE_EFFECT carterwall TRUE //create car CUSTOM_PLATE_FOR_NEXT_CAR GREENWOO &GROVE4L_ CREATE_CAR GREENWOO 2507.823 -1671.88 12.1678 sweet_car SET_CAR_HEADING sweet_car 347.15 SET_CAR_ONLY_DAMAGED_BY_PLAYER sweet_car TRUE ADD_BLIP_FOR_CAR sweet_car sweet_fablip SET_BLIP_AS_FRIENDLY sweet_fablip TRUE CHANGE_CAR_COLOUR sweet_car 59 34 SET_CAR_HEALTH sweet_car 2000 SET_CAN_BURST_CAR_TYRES sweet_car FALSE SET_CAR_CAN_BE_VISIBLY_DAMAGED sweet_car FALSE //create buddies CREATE_CHAR PEDTYPE_SPECIAL SPECIAL01 2511.169 -1672.747 12.493 sweet SET_CHAR_GET_OUT_UPSIDE_DOWN_CAR sweet FALSE SET_CHAR_HEADING sweet 68.365 SET_CHAR_NEVER_TARGETTED sweet TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER sweet TRUE TASK_ENTER_CAR_AS_PASSENGER sweet sweet_car 5000 0 SET_CHAR_CANT_BE_DRAGGED_OUT sweet TRUE SET_CHAR_STAY_IN_CAR_WHEN_JACKED sweet TRUE SET_CHAR_DECISION_MAKER sweet carter_DM SET_CHAR_NEVER_TARGETTED sweet TRUE SET_CHAR_SUFFERS_CRITICAL_HITS sweet FALSE CREATE_FX_SYSTEM wallbust 2521.86 -1272.66 35.04 TRUE wallsmashfx_fa SET_TIME_OF_DAY 21 30 SET_MAX_FIRE_GENERATIONS 0 SWITCH_WIDESCREEN OFF LOAD_SCENE 2511.75 -1672.15 14.0 DO_FADE 1000 FADE_IN SET_PLAYER_CONTROL PLAYER1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER PRINT_NOW RM4_1 7000 1 //~s~Get in the car with ~b~Sweet~s~. SET_PLAYER_GROUP_RECRUITMENT PLAYER1 FALSE // **************************************** Declare Variables ************************************ //initial cut scene camposincX_fa = 2505.2148 - 2508.1704 camposincY_fa = -1261.3512 - -1267.8781 camposincZ_fa = 43.8341 - 48.0744 camlookincX_fa = 2506.0029 - 2508.3508 camlookincY_fa = -1261.8015 - -1268.8573 camlookincZ_fa = 43.4146 - 47.9824 camposX_fa = 2508.1704 camposY_fa = -1267.8781 camposZ_fa = 48.0744 camlookX_fa = 2508.3508 camlookY_fa = -1268.8573 camlookZ_fa = 47.9824 speed_fa = 160.0 camposincX_fa /= speed_fa camposincY_fa /= speed_fa camposincZ_fa /= speed_fa camlookincX_fa /= speed_fa camlookincY_fa /= speed_fa camlookincZ_fa /= speed_fa //flags ram_faflag = 0 carter_faflag = 0 lockcar_faflag = 0 playerincar_faflag = 0 coordshoot_faflag = 0 skipcutscene_faflag = 0 swatvan_faflag = 0 swat1_faflag = 0 swat5_faflag = 0 floorg_faflag = 0 floor1_faflag = 0 floor2_faflag = 0 floor3_faflag = 0 gang1_faflag = 0 gang2_faflag = 0 gang3_faflag = 0 gang4_faflag = 0 gang5_faflag = 0 gang6_faflag = 0 gang7_faflag = 0 gang8_faflag = 0 gang9_faflag = 0 gang10_faflag = 0 gang11_faflag = 0 gang12_faflag = 0 gang13_faflag = 0 gang14_faflag = 0 gang15_faflag = 0 gang16_faflag = 0 gang17_faflag = 0 gang18_faflag = 0 gang19_faflag = 0 gang20_faflag = 0 swat2_faflag = 0 firstfloorcounter_fa = 0 slidedoor_faflag = 0 createguysfirst_faflag = 0 secondfloorcounter_fa = 0 druglabguys1_faflag = 0 druglabguys2_faflag = 0 rightroom_faflag = 0 leftroom_faflag = 0 bossbattle_faflag = 0 smokerun_faflag = 0 tellsmoke_faflag = 0 switch_faflag = 0 irgoggles_faflag = 0 progressaudio_faflag = 0 handlingudio_faflag = 0 bossbattleaudio_faflag = 0 lightsout_faflag = 0 ped1_faflag = 0 ped2_faflag = 0 ped3_faflag = 0 ped4_faflag = 0 finaleaplayerpass_flag = 0 // ********************************************************************************************** //omway CREATE_SCRIPT_ROADBLOCK 2336.63 -1548.68 23.99 2347.01 -1548.37 23.68 TRUE CREATE_SCRIPT_ROADBLOCK 2506.76 -1432.29 28.13 2516.63 -1430.51 27.82 TRUE CREATE_SCRIPT_ROADBLOCK 2462.0 -1449.0 24.0 2463.0 -1439.0 24.0 TRUE mission_finaleA_loop: WAIT 0 //VIEW_INTEGER_VARIABLE carter_faflag carter_faflag //VIEW_INTEGER_VARIABLE ram_faflag ram_faflag //VIEW_INTEGER_VARIABLE floor1_faflag floor1_faflag //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////// Getting into the Carter Block //////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_finalea_passed ENDIF IF carter_faflag = 0 IF ram_faflag = 0 IF NOT IS_CAR_DEAD sweet_car IF NOT IS_CHAR_DEAD sweet IF IS_CHAR_IN_CAR scplayer sweet_car REMOVE_BLIP sweet_fablip ADD_BLIP_FOR_COORD 2507.8201 -1309.2263 33.6726 sweet_fablip PRINT_NOW RM4_2 5000 1 //~s~Drive to ~y~Big Smoke's Crack Fortress~s~. TIMERB = 0 ram_faflag = 1 ENDIF ENDIF ENDIF ENDIF //text IF ram_faflag = 1 GOSUB process_audio_fa //play mission audio IF progressaudio_faflag = 0 IF handlingudio_faflag = 0 IF TIMERB > 5500 audio_label_fa = SOUND_ROT4_AA //We sure he’s in Eat Los Santos? $input_text_fa = ROT4_AA //We sure he’s in Eat Los Santos? GOSUB load_audio_fa ENDIF ENDIF ENDIF IF progressaudio_faflag = 1 IF handlingudio_faflag = 0 audio_label_fa = SOUND_ROT4_AB //Yeah, right on the edge of Los Flores – some old apartments and a warehouse. $input_text_fa = ROT4_AB //Yeah, right on the edge of Los Flores – some old apartments and a warehouse. GOSUB load_audio_fa ENDIF ENDIF IF progressaudio_faflag = 2 IF handlingudio_faflag = 0 audio_label_fa = SOUND_ROT4_AC //He’s as good as dead! $input_text_fa = ROT4_AC //He’s as good as dead! GOSUB load_audio_fa TIMERB = 0 ENDIF ENDIF IF progressaudio_faflag = 3 IF handlingudio_faflag = 0 IF TIMERB > 3000 audio_label_fa = SOUND_ROT4_BA //I can’t believe you bought the same crap car! $input_text_fa = ROT4_BA //I can’t believe you bought the same crap car! GOSUB load_audio_fa ENDIF ENDIF ENDIF IF progressaudio_faflag = 4 IF handlingudio_faflag = 0 audio_label_fa = SOUND_ROT4_BB //Hey, if it ain’t broke, don’t fix it. $input_text_fa = ROT4_BB //Hey, if it ain’t broke, don’t fix it. GOSUB load_audio_fa TIMERA = 0 ENDIF ENDIF IF progressaudio_faflag = 5 IF handlingudio_faflag = 0 IF TIMERB > 12000 audio_label_fa = SOUND_ROT4_BC //So this is it, huh? $input_text_fa = ROT4_BC //So this is it, huh? GOSUB load_audio_fa ENDIF ENDIF ENDIF IF progressaudio_faflag = 6 IF handlingudio_faflag = 0 audio_label_fa = SOUND_ROT4_BE //Johnson boys sorting shit out. $input_text_fa = ROT4_BE //Johnson boys sorting shit out. GOSUB load_audio_fa ENDIF ENDIF IF progressaudio_faflag = 7 IF handlingudio_faflag = 0 audio_label_fa = SOUND_ROT4_BF //Yeah. $input_text_fa = ROT4_BF //Yeah. GOSUB load_audio_fa ENDIF ENDIF IF progressaudio_faflag = 8 IF handlingudio_faflag = 0 audio_label_fa = SOUND_ROT4_BG //Nervous? $input_text_fa = ROT4_BG //Nervous? GOSUB load_audio_fa ENDIF ENDIF IF progressaudio_faflag = 9 IF handlingudio_faflag = 0 audio_label_fa = SOUND_ROT4_BH //Yeah. $input_text_fa = ROT4_BH //Yeah. GOSUB load_audio_fa ENDIF ENDIF IF progressaudio_faflag = 10 IF handlingudio_faflag = 0 audio_label_fa = SOUND_ROT4_BJ //Me too, me too. $input_text_fa = ROT4_BJ //Me too, me too. GOSUB load_audio_fa ENDIF ENDIF ENDIF IF ram_faflag = 1 IF NOT IS_CHAR_DEAD sweet IF NOT IS_CAR_DEAD sweet_car IF LOCATE_CAR_3D sweet_car 2507.8201 -1309.2263 33.85 4.0 4.0 4.0 TRUE IF IS_CHAR_SITTING_IN_CAR sweet sweet_car IF IS_CHAR_SITTING_IN_CAR scplayer sweet_car SET_PLAYER_CONTROL player1 OFF STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car TASK_CAR_TEMP_ACTION scplayer car TEMPACT_HANDBRAKESTRAIGHT 2000000 REMOVE_BLIP sweet_fablip CLEAR_ALL_SCRIPT_ROADBLOCKS //outside Carter Block in car with Sweet SET_CHAR_PROOFS sweet TRUE TRUE TRUE TRUE TRUE SET_CAR_PROOFS sweet_car TRUE TRUE TRUE TRUE TRUE LOAD_MISSION_AUDIO 3 SOUND_SWAT_WALL_BREAK LOAD_MISSION_AUDIO 2 SOUND_ROT4_CA //CJ, you lost your nerve or what? LOAD_ALL_MODELS_NOW SET_FADING_COLOUR 0 0 0 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE WHILE NOT HAS_MISSION_AUDIO_LOADED 3 OR NOT HAS_MISSION_AUDIO_LOADED 2 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD sweet_car SET_CAR_COORDINATES sweet_car 2536.709 -1278.253 52.57 SET_CAR_HEADING sweet_car 359.954 LOCK_CAR_DOORS sweet_car CARLOCK_LOCKED ENDIF SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 CLEAR_AREA 2536.709 -1278.253 100.0 100.0 TRUE LOAD_CUTSCENE RIOT_4b WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE CLEAR_AREA 2536.709 -1278.253 100.0 100.0 TRUE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // SET_PLAYER_CONTROL player1 OFF CLEAR_AREA 2372.0105 -1306.6090 300.0 300.0 FALSE IF NOT IS_CAR_DEAD sweet_car SET_CAR_COORDINATES sweet_car 2507.8201 -1309.2263 33.2726 SET_CAR_HEADING sweet_car 1.7082 LOCK_CAR_DOORS sweet_car CARLOCK_LOCKED ENDIF IF IS_CHAR_SITTING_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2509.781 -1308.965 34.7125 ELSE SET_CHAR_COORDINATES scplayer 2509.781 -1308.965 34.7125 ENDIF SET_CHAR_HEADING scplayer 352.414 CLEAR_AREA 2372.0105 -1306.6090 300.0 300.0 FALSE WAIT 2000 SET_FIXED_CAMERA_POSITION camposX_fa camposY_fa camposZ_fa 0.0 0.0 0.0 POINT_CAMERA_AT_POINT camlookX_fa camlookY_fa camlookZ_fa JUMP_CUT REQUEST_MODEL BMX REQUEST_MODEL MP5LNG REQUEST_MODEL AK47 REQUEST_MODEL BFYPRO REQUEST_ANIMATION CRACK SWITCH_ROADS_OFF 2356.4 -1233.16 30.6 2382.19 -1329.65 21.49 SWITCH_PED_ROADS_OFF 2356.4 -1233.16 30.6 2382.19 -1329.65 21.49 SWITCH_ROADS_OFF 2522.74 -1260.01 30.28 2499.0 -1322.01 31.76 SWITCH_PED_ROADS_OFF 2522.74 -1260.01 30.28 2499.0 -1322.01 31.76 SWITCH_ROADS_OFF 2431.9 -1268.06 30.6 2474.9 -1240.38 20.84 SWITCH_PED_ROADS_OFF 2431.9 -1268.06 30.6 2474.9 -1240.38 20.84 CLEAR_AREA 2356.4 -1233.16 300.0 300.0 TRUE LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED BMX OR NOT HAS_MODEL_LOADED MP5LNG OR NOT HAS_MODEL_LOADED AK47 OR NOT HAS_ANIMATION_LOADED CRACK OR NOT HAS_MODEL_LOADED BFYPRO WAIT 0 ENDWHILE CREATE_GROUP DEFAULT_TASK_ALLOCATOR_STAND_STILL swatgroup_GMD CREATE_GROUP DEFAULT_TASK_ALLOCATOR_STAND_STILL ganggroup_GMD CREATE_GROUP DEFAULT_TASK_ALLOCATOR_STAND_STILL gang2group_GMD //main road block section CREATE_CAR COPCARLA 2373.8030 -1314.1724 22.8398 copcar1_fa SET_CAR_HEADING copcar1_fa 292.1921 SET_CAR_ONLY_DAMAGED_BY_PLAYER copcar1_fa TRUE SET_CAR_HEALTH copcar1_fa 500 CREATE_CAR COPCARLA 2368.0403 -1315.7059 22.8459 copcar2_fa SET_CAR_HEADING copcar2_fa 96.2549 SET_CAR_ONLY_DAMAGED_BY_PLAYER copcar2_fa TRUE LOCK_CAR_DOORS copcar2_fa CARLOCK_UNLOCKED CREATE_CAR SWATVAN 2374.3599 -1323.7917 22.8389 swatvan_fa SET_CAR_HEADING swatvan_fa 3.7561 SET_CAR_HEALTH swatvan_fa 3000 SET_CAR_HEAVY swatvan_fa TRUE SET_CAR_PROOFS swatvan_fa TRUE TRUE FALSE FALSE FALSE SET_CAR_ONLY_DAMAGED_BY_PLAYER swatvan_fa TRUE LOCK_CAR_DOORS swatvan_fa CARLOCK_UNLOCKED SET_CAN_BURST_CAR_TYRES swatvan_fa FALSE CREATE_CAR GREENWOO 2365.6116 -1294.8286 22.8433 car1_fa SET_CAR_HEADING car1_fa 97.3729 SET_CAR_HEALTH car1_fa 500 SET_CAR_ONLY_DAMAGED_BY_PLAYER car1_fa TRUE CREATE_CAR GREENWOO 2372.4312 -1295.2722 22.8418 car2_fa SET_CAR_HEADING car2_fa 75.2267 SET_CAR_ONLY_DAMAGED_BY_PLAYER car2_fa TRUE CREATE_CAR BMX 2507.2007 -1300.8408 33.6726 bmx_fa SET_CAR_HEADING bmx_fa 1.6501 CREATE_CHAR PEDTYPE_MISSION2 SWAT 2366.3423 -1317.3771 22.8438 swat1_fa SET_CHAR_HEADING swat1_fa 3.9226 SET_CHAR_DECISION_MAKER swat1_fa cartertough_DM SET_CHAR_RELATIONSHIP swat1_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP swat1_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat1_fa TRUE GIVE_WEAPON_TO_CHAR swat1_fa WEAPONTYPE_MP5 99999 TASK_STAY_IN_SAME_PLACE swat1_fa TRUE SET_GROUP_LEADER swatgroup_GMD swat1_fa CREATE_CHAR PEDTYPE_MISSION2 SWAT 2375.8479 -1315.3252 22.8368 swat2_fa SET_CHAR_HEADING swat2_fa 4.8178 SET_CHAR_DECISION_MAKER swat2_fa cartertough_DM SET_CHAR_RELATIONSHIP swat2_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 SET_CHAR_RELATIONSHIP swat2_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat2_fa TRUE GIVE_WEAPON_TO_CHAR swat2_fa WEAPONTYPE_MP5 99999 TASK_STAY_IN_SAME_PLACE swat2_fa TRUE SET_GROUP_MEMBER swatgroup_GMD swat2_fa CREATE_CHAR PEDTYPE_MISSION2 SWAT 2371.6758 -1316.8058 22.8429 swat3_fa SET_CHAR_HEADING swat3_fa 0.5529 SET_CHAR_DECISION_MAKER swat3_fa cartertough_DM SET_CHAR_RELATIONSHIP swat3_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 SET_CHAR_RELATIONSHIP swat3_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat3_fa TRUE GIVE_WEAPON_TO_CHAR swat3_fa WEAPONTYPE_MP5 99999 TASK_STAY_IN_SAME_PLACE swat3_fa TRUE SET_GROUP_MEMBER swatgroup_GMD swat3_fa // This character is created way outside the map, typo in the original script //CREATE_CHAR PEDTYPE_MISSION2 SWAT 22370.3606 -1319.4922 22.8515 swat4_fa CREATE_CHAR PEDTYPE_MISSION2 SWAT 2370.3606 -1319.4922 22.8515 swat4_fa SET_CHAR_HEADING swat4_fa 177.5538 SET_CHAR_DECISION_MAKER swat4_fa cartertough_DM SET_CHAR_RELATIONSHIP swat4_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 SET_CHAR_RELATIONSHIP swat4_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat4_fa TRUE GIVE_WEAPON_TO_CHAR swat4_fa WEAPONTYPE_MP5 99999 TASK_STAY_IN_SAME_PLACE swat4_fa TRUE SET_GROUP_MEMBER swatgroup_GMD swat4_fa // in the previous script, this call asserts swat4_fa ped "out of the map" during AssertEntityPointerValid CREATE_CHAR PEDTYPE_MISSION2 SWAT 2376.4399 -1321.6250 22.9844 swat5_fa SET_CHAR_HEADING swat5_fa 177.5538 GIVE_WEAPON_TO_CHAR swat5_fa WEAPONTYPE_MP5 99999 SET_CHAR_DECISION_MAKER swat5_fa cartertough_DM SET_CHAR_RELATIONSHIP swat5_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP swat5_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat5_fa TRUE GIVE_WEAPON_TO_CHAR swat5_fa WEAPONTYPE_MP5 99999 TASK_STAY_IN_SAME_PLACE swat5_fa TRUE SET_GROUP_MEMBER swatgroup_GMD swat5_fa CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2364.4321 -1294.0126 22.9882 gang1_fa SET_CHAR_HEADING gang1_fa 177.5538 SET_CHAR_DECISION_MAKER gang1_fa cartertough_DM SET_CHAR_RELATIONSHIP gang1_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP gang1_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang1_fa TRUE GIVE_WEAPON_TO_CHAR gang1_fa WEAPONTYPE_AK47 99999 TASK_STAY_IN_SAME_PLACE gang1_fa TRUE SET_GROUP_LEADER ganggroup_GMD gang1_fa CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2369.5271 -1292.2279 22.8515 gang2_fa SET_CHAR_HEADING gang2_fa 177.5538 SET_CHAR_DECISION_MAKER gang2_fa cartertough_DM SET_CHAR_RELATIONSHIP gang2_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 SET_CHAR_RELATIONSHIP gang2_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang2_fa TRUE GIVE_WEAPON_TO_CHAR gang2_fa WEAPONTYPE_MP5 99999 TASK_STAY_IN_SAME_PLACE gang2_fa TRUE SET_GROUP_MEMBER ganggroup_GMD gang2_fa CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2371.1680 -1293.3701 22.8436 gang3_fa SET_CHAR_HEADING gang3_fa 177.5538 SET_CHAR_DECISION_MAKER gang3_fa cartertough_DM SET_CHAR_RELATIONSHIP gang3_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP gang3_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang3_fa TRUE GIVE_WEAPON_TO_CHAR gang3_fa WEAPONTYPE_AK47 99999 TASK_STAY_IN_SAME_PLACE gang3_fa TRUE SET_GROUP_MEMBER ganggroup_GMD gang3_fa CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2374.9871 -1294.0789 22.8380 gang4_fa SET_CHAR_HEADING gang4_fa 177.5538 SET_CHAR_DECISION_MAKER gang4_fa cartertough_DM SET_CHAR_RELATIONSHIP gang4_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 SET_CHAR_RELATIONSHIP gang4_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang4_fa TRUE GIVE_WEAPON_TO_CHAR gang4_fa WEAPONTYPE_MP5 99999 TASK_STAY_IN_SAME_PLACE gang4_fa TRUE SET_GROUP_MEMBER ganggroup_GMD gang4_fa CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2521.5095 -1270.2585 33.9206 gang5_fa SET_CHAR_HEADING gang5_fa 100.2518 SET_CHAR_DECISION_MAKER gang5_fa cartertough_DM SET_CHAR_RELATIONSHIP gang5_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang5_fa TRUE GIVE_WEAPON_TO_CHAR gang5_fa WEAPONTYPE_MP5 99999 TASK_STAY_IN_SAME_PLACE gang5_fa TRUE SET_GROUP_LEADER gang2group_GMD gang5_fa CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2521.7202 -1274.9811 33.8748 gang6_fa SET_CHAR_HEADING gang6_fa 98.0309 SET_CHAR_DECISION_MAKER gang6_fa cartertough_DM SET_CHAR_RELATIONSHIP gang6_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang6_fa TRUE GIVE_WEAPON_TO_CHAR gang6_fa WEAPONTYPE_MP5 99999 TASK_STAY_IN_SAME_PLACE gang6_fa TRUE SET_GROUP_MEMBER gang2group_GMD gang6_fa ram_faflag = 2 SWITCH_WIDESCREEN ON DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PRINT_NOW RM4_4 5000 1 //~s~Security is tight in the Crack Fortress there is only one way in but the door is locked down because of the riots. PRINT RM4_14 5000 1//~s~The only way passed that reinforced entrance is to knock it down. TIMERA = 0 ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// skipcutscene_faflag = 0 SKIP_CUTSCENE_START ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // cut scene IF ram_faflag = 2 camposX_fa += camposincX_fa camposY_fa += camposincY_fa camposZ_fa += camposincZ_fa SET_FIXED_CAMERA_POSITION camposX_fa camposY_fa camposZ_fa 0.0 0.0 0.0 camlookX_fa += camlookincX_fa camlookY_fa += camlookincY_fa camlookZ_fa += camlookincZ_fa POINT_CAMERA_AT_POINT camlookX_fa camlookY_fa camlookZ_fa JUMP_CUT IF camposX_fa <= 2505.2148 OR TIMERA > 8999 ram_faflag = 3 ENDIF ENDIF IF ram_faflag = 3 IF TIMERA > 8999 ram_faflag = 4 ENDIF ENDIF IF ram_faflag = 4 SET_FIXED_CAMERA_POSITION 2370.9019 -1328.8146 23.0473 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2371.4600 -1328.0050 23.2292 JUMP_CUT TIMERA = 0 CLEAR_PRINTS PRINT_NOW RM4_5 8000 1 //~s~You will need to find a way to knock it down, a heavy vehicle like the SWAT Tank would be able to smash it down. ram_faflag = 5 ENDIF IF ram_faflag = 5 IF TIMERA > 3999 SET_FIXED_CAMERA_POSITION 2372.9490 -1326.9136 24.7902 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2372.8738 -1325.9204 24.7010 JUMP_CUT TIMERA = 0 ram_faflag = 6 ENDIF ENDIF IF ram_faflag = 6 IF TIMERA > 3999 ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// skipcutscene_faflag = 1 SKIP_CUTSCENE_END ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// //PLAYER HAS SKIPPED CUTSCENE IF skipcutscene_faflag = 0 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF IF NOT IS_CAR_DEAD swatvan_fa ADD_BLIP_FOR_CAR swatvan_fa swatvan_fablip SET_BLIP_AS_FRIENDLY swatvan_fablip TRUE PRINT_NOW RM4_6 7000 1//~s~Go get the ~b~SWAT Tank~s~. swatvan_faflag = 1 CHECKPOINT_SAVE 1 // 3master - set these again because they dont get saved! // HACKED - these just resets the created-by indicator, completely breaks groups otherwise!!! SET_GROUP_DECISION_MAKER swatgroup_GMD -99 SET_GROUP_DECISION_MAKER ganggroup_GMD -99 SET_GROUP_DECISION_MAKER gang2group_GMD -99 SET_CHAR_DECISION_MAKER swat1_fa cartertough_DM SET_CHAR_RELATIONSHIP swat1_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP swat1_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat1_fa TRUE SET_CHAR_DECISION_MAKER swat2_fa cartertough_DM SET_CHAR_RELATIONSHIP swat2_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 SET_CHAR_RELATIONSHIP swat2_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat2_fa TRUE SET_CHAR_DECISION_MAKER swat3_fa cartertough_DM SET_CHAR_RELATIONSHIP swat3_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 SET_CHAR_RELATIONSHIP swat3_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat3_fa TRUE SET_CHAR_DECISION_MAKER swat4_fa cartertough_DM SET_CHAR_RELATIONSHIP swat4_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 SET_CHAR_RELATIONSHIP swat4_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat4_fa TRUE SET_CHAR_DECISION_MAKER swat5_fa cartertough_DM SET_CHAR_RELATIONSHIP swat5_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP swat5_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat5_fa TRUE SET_CHAR_DECISION_MAKER gang1_fa cartertough_DM SET_CHAR_RELATIONSHIP gang1_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP gang1_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang1_fa TRUE SET_CHAR_DECISION_MAKER gang2_fa cartertough_DM SET_CHAR_RELATIONSHIP gang2_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 SET_CHAR_RELATIONSHIP gang2_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang2_fa TRUE SET_CHAR_DECISION_MAKER gang3_fa cartertough_DM SET_CHAR_RELATIONSHIP gang3_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP gang3_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang3_fa TRUE SET_CHAR_DECISION_MAKER gang4_fa cartertough_DM SET_CHAR_RELATIONSHIP gang4_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION2 SET_CHAR_RELATIONSHIP gang4_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang4_fa TRUE SET_CHAR_DECISION_MAKER gang5_fa cartertough_DM SET_CHAR_RELATIONSHIP gang5_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang5_fa TRUE SET_CHAR_DECISION_MAKER gang6_fa cartertough_DM SET_CHAR_RELATIONSHIP gang6_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang6_fa TRUE ENDIF IF NOT IS_CAR_DEAD sweet_car FREEZE_CAR_POSITION sweet_car TRUE //SET_VEHICLE_IS_CONSIDERED_BY_PLAYER sweet_car FALSE ENDIF SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER CREATE_SCRIPT_ROADBLOCK 2456.468 -1262.2 23.87 2455.625 -1250.55 23.89 TRUE CREATE_SCRIPT_ROADBLOCK 2375.778 -1358.43 23.878 2365.675 -1358.34 24.036 TRUE SET_PED_DENSITY_MULTIPLIER 0.5 ram_faflag = 7 ENDIF ENDIF // Getting SWAT Tank IF ram_faflag = 7 IF swat5_faflag = 0 IF NOT IS_CHAR_DEAD swat5_fa IF HAS_CHAR_SPOTTED_CHAR swat5_fa scplayer enemy_fa = swat5_fa enemytarget_fa = scplayer SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat5_fa FALSE GOSUB stayshootnoduck_falabel swat5_faflag = 1 ENDIF ENDIF ENDIF IF swat1_faflag = 0 IF NOT IS_CAR_DEAD swatvan_fa IF IS_CHAR_IN_CAR scplayer swatvan_fa IF NOT IS_CHAR_DEAD swat1_fa enemy_fa = swat1_fa enemytarget_fa = scplayer SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat1_fa FALSE GOSUB stayshootnoduck_falabel ENDIF IF NOT IS_CHAR_DEAD swat2_fa enemy_fa = swat2_fa enemytarget_fa = scplayer SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat2_fa FALSE GOSUB stayshootnoduck_falabel ENDIF IF NOT IS_CHAR_DEAD swat3_fa enemy_fa = swat3_fa enemytarget_fa = scplayer SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat3_fa FALSE GOSUB stayshootnoduck_falabel ENDIF IF NOT IS_CHAR_DEAD swat4_fa enemy_fa = swat4_fa enemytarget_fa = scplayer SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat4_fa FALSE GOSUB stayshootnoduck_falabel ENDIF IF NOT IS_CHAR_DEAD swat5_fa enemy_fa = swat5_fa enemytarget_fa = scplayer SET_CHAR_ONLY_DAMAGED_BY_PLAYER swat5_fa FALSE GOSUB stayshootnoduck_falabel ENDIF IF NOT IS_CHAR_DEAD gang1_fa SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang1_fa FALSE ENDIF IF NOT IS_CHAR_DEAD gang2_fa SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang2_fa FALSE ENDIF IF NOT IS_CHAR_DEAD gang3_fa SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang3_fa FALSE ENDIF IF NOT IS_CHAR_DEAD gang4_fa SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang4_fa FALSE ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED BMX MARK_CAR_AS_NO_LONGER_NEEDED bmx_fa swat1_faflag = 1 ENDIF ENDIF ENDIF IF swat1_faflag = 1 IF NOT IS_CAR_DEAD swatvan_fa IF LOCATE_CHAR_IN_CAR_2D scplayer 2521.91 -1273.05 30.0 30.0 FALSE IF IS_CHAR_IN_CAR scplayer swatvan_Fa PRINT_NOW RM4_15 5000 1 //~s~Smash through the ~y~wall ~s~to gain entry! MARK_MODEL_AS_NO_LONGER_NEEDED COPCARLA MARK_MODEL_AS_NO_LONGER_NEEDED SWAT MARK_CHAR_AS_NO_LONGER_NEEDED swat1_fa MARK_CHAR_AS_NO_LONGER_NEEDED swat2_fa MARK_CHAR_AS_NO_LONGER_NEEDED swat3_fa MARK_CHAR_AS_NO_LONGER_NEEDED swat4_fa MARK_CHAR_AS_NO_LONGER_NEEDED swat5_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang1_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang2_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang3_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang4_fa MARK_CAR_AS_NO_LONGER_NEEDED copcar1_fa MARK_CAR_AS_NO_LONGER_NEEDED copcar2_fa MARK_CAR_AS_NO_LONGER_NEEDED car1_fa MARK_CAR_AS_NO_LONGER_NEEDED car2_fa swat1_faflag = 2 ENDIF ENDIF ENDIF ENDIF IF HAS_OBJECT_OF_TYPE_BEEN_SMASHED 2522.008 -1272.93 35.609 30.0 imy_shash_wall PLAY_AND_KILL_FX_SYSTEM wallsmashfx_fa PLAY_MISSION_AUDIO 3 DELETE_CHAR swat1_fa DELETE_CHAR swat2_fa DELETE_CHAR swat3_fa DELETE_CHAR swat4_fa DELETE_CHAR swat5_fa DELETE_CHAR gang1_fa DELETE_CHAR gang2_fa DELETE_CHAR gang3_fa DELETE_CHAR gang4_fa DELETE_CAR copcar1_fa DELETE_CAR car1_fa DELETE_CAR car2_fa REMOVE_BLIP swatvan_fablip CLEAR_PRINTS carter_faflag = 1 ENDIF ENDIF IF swatvan_faflag = 1 IF NOT IS_CAR_DEAD swatvan_fa IF IS_CHAR_SITTING_IN_CAR scplayer swatvan_fa REMOVE_BLIP swatvan_fablip PRINT_NOW RM4_8 5000 1 //~s~Use the SWAT Tank to ram right through the entrance of ~y~Big Smoke's Crack Fortess~s~. ADD_BLIP_FOR_COORD 2522.79 -1272.85 34.19 carter_fablip swatvan_faflag = 2 ENDIF ENDIF ENDIF IF swatvan_faflag = 2 IF NOT IS_CAR_DEAD swatvan_fa IF NOT IS_CHAR_SITTING_IN_CAR scplayer swatvan_fa REMOVE_BLIP carter_fablip ADD_BLIP_FOR_CAR swatvan_fa swatvan_fablip SET_BLIP_AS_FRIENDLY swatvan_fablip TRUE PRINT_NOW RM4_9 5000 1 //You need to ram that wall right through, get back in the ~b~SWAT Tank~s~! swatvan_faflag = 1 ENDIF ENDIF ENDIF IF swatvan_faflag = 1 OR swatvan_faflag = 2 IF IS_CAR_DEAD swatvan_fa PRINT_NOW RM4_10 7000 1 //~r~The SWAT Tank has been destroyed how are you going to get into ~y~Big Smoke's Crack Fortess~r~ now? GOTO mission_finaleA_failed ENDIF ENDIF ///////////////////////////////////////////////////////// sweet tells player to go and finish off Smoke IF lockcar_faflag = 0 IF NOT IS_CAR_DEAD sweet_car IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2507.8201 -1309.2263 3.5 3.5 FALSE IF IS_BUTTON_PRESSED PAD1 TRIANGLE //OR IS_CHAR_TOUCHING_VEHICLE scplayer sweet_car //Hey man find a way inside PLAY_MISSION_AUDIO 2 //ROT4_CA CJ, you lost your nerve or what? PRINT_NOW ROT4_CA 2000 1 //CJ, you lost your nerve or what? lockcar_faflag = 1 ENDIF ENDIF ENDIF ENDIF IF lockcar_faflag = 1 IF HAS_MISSION_AUDIO_FINISHED 2 IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer 2507.8201 -1309.2263 3.5 3.5 FALSE OR NOT IS_BUTTON_PRESSED PAD1 TRIANGLE lockcar_faflag = 0 ENDIF ENDIF ENDIF ///////////////////////////////////////////////////////// Getting in and out of car stuff IF ram_faflag = 1 OR ram_faflag = 100 //tell player to get back in the car if they leave it IF NOT IS_CAR_DEAD sweet_car IF playerincar_faflag = 1 IF NOT IS_CHAR_IN_CAR scplayer sweet_car REMOVE_BLIP sweet_fablip ADD_BLIP_FOR_CAR sweet_car sweet_fablip SET_BLIP_AS_FRIENDLY sweet_fablip TRUE PRINT_NOW RM4_7 5000 1 //~s~Get back in the ~b~car~s~! ram_faflag = 100 playerincar_faflag = 0 ENDIF ENDIF IF playerincar_faflag = 0 IF IS_CHAR_IN_CAR scplayer sweet_car REMOVE_BLIP sweet_fablip ADD_BLIP_FOR_COORD 2507.8201 -1309.2263 33.6726 sweet_fablip PRINT_NOW RM4_2 5000 1 //~s~Drive to ~y~Big Smoke's Crack Fortress~s~. ram_faflag = 1 playerincar_faflag = 1 ENDIF ENDIF ENDIF ENDIF //sweet dies // IF ram_faflag = 0 // OR ram_faflag = 1 // OR ram_faflag = 100 //any of the crew get wasted IF IS_CHAR_DEAD sweet PRINT_NOW RM4_11 5000 1 //~r~Sweet died! GOTO mission_finaleA_failed ENDIF //car gets wasted IF IS_CAR_DEAD sweet_car PRINT_NOW RM4_12 5000 1 //~r~You wrecked the car! GOTO mission_finaleA_failed ENDIF //////////////////////////////////////////////////////////////////////////////////////// ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////// Carter Wall has been smashed //////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF carter_faflag = 1 IF floorg_faflag = 0 REMOVE_BLIP carter_fablip REMOVE_GROUP swatgroup_GMD REMOVE_GROUP ganggroup_GMD CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2528.2524 -1273.7610 33.9609 gang1_fa SET_CHAR_HEADING gang1_fa 91.4211 SET_CHAR_DECISION_MAKER gang1_fa cartertough_DM TASK_STAY_IN_SAME_PLACE gang1_fa TRUE GIVE_WEAPON_TO_CHAR gang1_fa WEAPONTYPE_AK47 99999 SET_CHAR_RELATIONSHIP gang1_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_HEALTH gang1_fa 20 SET_SENSE_RANGE gang1_fa 50.0 CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2530.7715 -1271.3906 33.9602 gang2_fa SET_CHAR_HEADING gang2_fa 91.5182 SET_CHAR_DECISION_MAKER gang2_fa cartertough_DM GIVE_WEAPON_TO_CHAR gang2_fa WEAPONTYPE_AK47 99999 TASK_STAY_IN_SAME_PLACE gang2_fa TRUE SET_CHAR_RELATIONSHIP gang2_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_HEALTH gang2_fa 20 SET_SENSE_RANGE gang2_fa 50.0 CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2532.0796 -1272.2800 33.9602 gang3_fa //2541.4548 -1277.1276 33.9609 233.7332 SET_CHAR_HEADING gang3_fa 177.5538 SET_CHAR_DECISION_MAKER gang3_fa cartertough_DM GIVE_WEAPON_TO_CHAR gang3_fa WEAPONTYPE_AK47 99999 TASK_STAY_IN_SAME_PLACE gang3_fa TRUE SET_CHAR_RELATIONSHIP gang3_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_HEALTH gang3_fa 20 SET_SENSE_RANGE gang3_fa 50.0 CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2539.9688 -1279.5626 33.9609 gang4_fa SET_CHAR_HEADING gang4_fa 25.3324 SET_CHAR_DECISION_MAKER gang4_fa cartertough_DM GIVE_WEAPON_TO_CHAR gang4_fa WEAPONTYPE_MP5 99999 TASK_STAY_IN_SAME_PLACE gang4_fa TRUE SET_CHAR_RELATIONSHIP gang4_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_HEALTH gang4_fa 20 SET_SENSE_RANGE gang4_fa 50.0 CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2533.2791 -1295.5552 33.9609 gang7_fa SET_CHAR_HEADING gang7_fa 327.5814 SET_CHAR_DECISION_MAKER gang7_fa cartertough_DM GIVE_WEAPON_TO_CHAR gang7_fa WEAPONTYPE_MP5 99999 TASK_STAY_IN_SAME_PLACE gang7_fa TRUE SET_CHAR_RELATIONSHIP gang7_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_HEALTH gang7_fa 20 SET_SENSE_RANGE gang7_fa 50.0 CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2529.1777 -1304.4725 33.9609 gang8_fa SET_CHAR_HEADING gang8_fa 351.5292 SET_CHAR_DECISION_MAKER gang8_fa cartertough_DM GIVE_WEAPON_TO_CHAR gang8_fa WEAPONTYPE_MP5 99999 TASK_STAY_IN_SAME_PLACE gang8_fa TRUE SET_CHAR_RELATIONSHIP gang8_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_HEALTH gang8_fa 20 CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 2538.0 -1307.0 34.0 gang9_fa SET_CHAR_HEADING gang9_fa 35.0 SET_CHAR_HEALTH gang9_fa 3 // SET_CHAR_DECISION_MAKER gang9_fa cartercoward_DM TASK_PLAY_ANIM gang9_fa CRCKIDLE4 CRACK 1000.0 TRUE FALSE FALSE TRUE -1 CREATE_CHAR PEDTYPE_MISSION1 MALE01 2540.04 -1307.37 33.9609 gang10_fa SET_CHAR_HEADING gang10_fa 92.5436 SET_CHAR_HEALTH gang10_fa 3 // SET_CHAR_DECISION_MAKER gang10_fa cartercoward_DM TASK_PLAY_ANIM gang10_fa CRCKIDLE3 CRACK 1000.0 TRUE FALSE FALSE TRUE -1 CREATE_CHAR PEDTYPE_MISSION1 BFYPRO 2533.5525 -1308.2837 33.9609 gang11_fa SET_CHAR_HEADING gang11_fa 67.9508 SET_CHAR_HEALTH gang11_fa 3 // SET_CHAR_DECISION_MAKER gang11_fa cartercoward_DM TASK_PLAY_ANIM gang11_fa CRCKIDLE2 CRACK 1000.0 TRUE FALSE FALSE TRUE -1 CREATE_CHAR PEDTYPE_MISSION1 MALE01 2534.682 -1287.199 33.9609 gang12_fa SET_CHAR_HEADING gang12_fa 104.5 SET_CHAR_HEALTH gang12_fa 3 // SET_CHAR_DECISION_MAKER gang12_fa cartercoward_DM TASK_PLAY_ANIM gang12_fa CRCKIDLE4 CRACK 1000.0 TRUE FALSE FALSE TRUE -1 PRINT_NOW RM4_13 5000 1 //~s~There is an entrance into the ~y~upper floor towards the back of this area. ADD_BLIP_FOR_COORD 2542.1 -1303.99 34.03 carter_fablip //SET_BLIP_ENTRY_EXIT carter_fablip 2540.83 -1304.05 1.0 floorg_faflag = 1 ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW RM4_11 5000 1 //~r~Sweet died! GOTO mission_finaleA_failed ENDIF IF floorg_faflag = 1 GET_AREA_VISIBLE carter_interior IF ped1_faflag = 0 IF NOT IS_CHAR_DEAD gang9_fa IF IS_CHAR_TOUCHING_char gang9_fa scplayer TASK_FLEE_CHAR gang9_fa scplayer 100.0 30000 ped1_faflag = 1 ENDIF ENDIF ENDIF IF ped2_faflag = 0 IF NOT IS_CHAR_DEAD gang10_fa IF IS_CHAR_TOUCHING_char gang10_fa scplayer TASK_FLEE_CHAR gang10_fa scplayer 100.0 30000 ped2_faflag = 1 ENDIF ENDIF ENDIF IF ped3_faflag = 0 IF NOT IS_CHAR_DEAD gang11_fa IF IS_CHAR_TOUCHING_char gang11_fa scplayer TASK_FLEE_CHAR gang11_fa scplayer 100.0 30000 ped3_faflag = 1 ENDIF ENDIF ENDIF IF ped4_faflag = 0 IF NOT IS_CHAR_DEAD gang12_fa IF IS_CHAR_TOUCHING_char gang12_fa scplayer TASK_FLEE_CHAR gang12_fa scplayer 100.0 30000 ped4_faflag = 1 ENDIF ENDIF ENDIF IF carter_interior = 2 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE carter_faflag = 2 floor1_faflag = 1 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////// 1st Floor //////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF carter_faflag = 2 IF floor1_faflag = 1 CHECKPOINT_SAVE 1 IF IS_CHECKPOINT_RESUMING TRUE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY carter_DM LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH cartertough_DM LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_WEAK cartercoward_DM ENDIF SET_PLAYER_CONTROL PLAYER1 OFF SWITCH_WIDESCREEN ON DO_FADE 1000 FADE_OUT CLEAR_ALL_SCRIPT_ROADBLOCKS WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_MOOD PLAYER1 MOOD_PR 360000 CLEAR_MISSION_AUDIO 2 REMOVE_BLIP carter_fablip DELETE_CHAR gang1_fa DELETE_CHAR gang2_fa DELETE_CHAR gang3_fa DELETE_CHAR gang4_fa DELETE_CHAR gang7_fa DELETE_CHAR gang8_fa DELETE_CHAR gang9_fa DELETE_CHAR gang10_fa DELETE_CHAR gang11_fa DELETE_CHAR gang12_fa DELETE_CAR swatvan_fa DELETE_CHAR sweet REMOVE_ANIMATION CRACK UNLOAD_SPECIAL_CHARACTER 1 MARK_MODEL_AS_NO_LONGER_NEEDED BFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO SET_CHAR_COORDINATES scplayer 2543.2600 -1303.8445 1024.0742 SET_CHAR_HEADING scplayer 175.5166 SET_FIXED_CAMERA_POSITION 2544.6160 -1302.8993 1024.4072 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2544.1931 -1303.7017 1024.8282 JUMP_CUT SET_CHAR_AREA_VISIBLE scplayer 2 //2543.199 -1304.003 20.0 ADD_BLIP_FOR_COORD 2579.85 -1305.76 1037.07 carter_fablip SET_BLIP_ENTRY_EXIT carter_fablip 2540.83 -1304.05 1.0 CLEAR_AREA 2578.0 -1306.0 200.0 200.0 TRUE DO_FADE 1000 FADE_IN PRINT_BIG RM4_17 1000 2 //Floor 1: Security Area WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //pickups CREATE_PICKUP BODYARMOUR PICKUP_ONCE 2527.7830 -1288.8158 1031.4297 armour1_fa CREATE_PICKUP HEALTH PICKUP_ONCE 2575.0945 -1286.0415 1037.7812 health1_fa CREATE_PICKUP_WITH_AMMO shotgspa PICKUP_ONCE 20 2568.5022 -1282.3447 1037.7812 shotgunpickup2_fa REQUEST_MODEL BALLAS2 REQUEST_MODEL LSV1 REQUEST_MODEL SWAT REQUEST_MODEL SWATVAN REQUEST_ANIMATION SWAT REQUEST_MODEL imcompmovedr1_las REQUEST_CAR_RECORDING 287 LOAD_ALL_MODELS_NOW LOAD_SCENE 2541.81 -1311.32 1028.22 //top of the stairs @ 2543.38 -1310.38 1028.26 5.0 -> 2527.5789 -1318.7618 1030.4297 91.9142 CREATE_CHAR PEDTYPE_MISSION1 BALLAS2 2543.2439 -1318.5378 1030.4274 gang15_fa SET_CHAR_HEADING gang15_fa 3.2815 SET_CHAR_DECISION_MAKER gang15_fa carter_DM GIVE_WEAPON_TO_CHAR gang15_fa WEAPONTYPE_MP5 99999 TASK_PLAY_ANIM gang15_fa ROADCROSS PED 4.0 FALSE FALSE FALSE TRUE -1 SET_CHAR_AREA_VISIBLE gang15_fa 2 SET_CHAR_HEALTH gang15_fa 200 SET_CHAR_MAX_HEALTH gang15_fa 200 gang15_faflag = 0 //roll left 2d @ 2540.95 -1314.42 1030.79/ 2529.24 -1323.21 1031.04 CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2536.0710 -1321.4709 1030.4297 gang16_fa SET_CHAR_HEADING gang16_fa 263.8364 SET_CHAR_DECISION_MAKER gang16_fa carter_DM GIVE_WEAPON_TO_CHAR gang16_fa WEAPONTYPE_MP5 99999 SET_CHAR_AREA_VISIBLE gang16_fa 2 SET_CHAR_HEALTH gang16_fa 200 SET_CHAR_MAX_HEALTH gang16_fa 200 gang16_faflag = 0 //roll left 2d 2d @ 2532.14 -1315.59 1030.8 / 2518.25 -1307.07 1041.71 CREATE_CHAR PEDTYPE_MISSION1 LSV1 2524.7366 -1298.3278 1030.4274 gang17_fa SET_CHAR_HEADING gang17_fa 175.4097 SET_CHAR_DECISION_MAKER gang17_fa carter_DM GIVE_WEAPON_TO_CHAR gang17_fa WEAPONTYPE_MP5 99999 SET_CHAR_AREA_VISIBLE gang17_fa 2 SET_CHAR_ACCURACY gang17_fa 80 SET_CHAR_HEALTH gang17_fa 200 SET_CHAR_MAX_HEALTH gang17_fa 200 gang17_faflag = 0 //security stay still no duck @ 2532.14 -1315.59 1030.8 / 2518.25 -1307.07 1041.71 CREATE_CHAR PEDTYPE_MISSION1 BALLAS2 2527.8145 -1289.8164 1030.4274 gang18_fa SET_CHAR_HEADING gang18_fa 178.5987 SET_CHAR_DECISION_MAKER gang18_fa carter_DM GIVE_WEAPON_TO_CHAR gang18_fa WEAPONTYPE_AK47 99999 SET_CHAR_AREA_VISIBLE gang18_fa 2 SET_CHAR_ACCURACY gang17_fa 80 SET_CHAR_SHOOT_RATE gang17_fa 70 SET_CHAR_HEALTH gang18_fa 200 SET_CHAR_MAX_HEALTH gang18_fa 200 gang18_faflag = 0 WAIT 3000 //->2560.0554 -1304.9164 1030.4297 275.5342 duck and shoot CREATE_CHAR PEDTYPE_MISSION1 BALLAS2 2531.0645 -1304.3324 1030.4297 gang1_fa SET_CHAR_HEADING gang1_fa 264.7670 SET_CHAR_DECISION_MAKER gang1_fa carter_DM GIVE_WEAPON_TO_CHAR gang1_fa WEAPONTYPE_MP5 99999 SET_CHAR_AREA_VISIBLE gang1_fa 2 SET_CHAR_ACCURACY gang1_fa 80 SET_CHAR_HEALTH gang1_fa 200 SET_CHAR_MAX_HEALTH gang1_fa 200 gang1_faflag = 0 //two at the top room looking through window. //right, stay in same place no duck CREATE_CHAR PEDTYPE_MISSION1 LSV1 2566.6731 -1297.7087 1036.7805 gang3_fa SET_CHAR_HEADING gang3_fa 85.3469 SET_CHAR_DECISION_MAKER gang3_fa carter_DM GIVE_WEAPON_TO_CHAR gang3_fa WEAPONTYPE_AK47 99999 SET_CHAR_AREA_VISIBLE gang3_fa 2 SET_CHAR_ACCURACY gang3_fa 80 SET_CHAR_SHOOT_RATE gang3_fa 60 gang3_faflag = 0 //left stay in same place no duck CREATE_CHAR PEDTYPE_MISSION1 BALLAS2 2566.7266 -1287.2239 1036.7812 gang4_fa SET_CHAR_HEADING gang4_fa 96.3687 SET_CHAR_DECISION_MAKER gang4_fa carter_DM GIVE_WEAPON_TO_CHAR gang4_fa WEAPONTYPE_AK47 99999 SET_CHAR_AREA_VISIBLE gang4_fa 2 SET_CHAR_HEALTH gang4_fa 200 SET_CHAR_MAX_HEALTH gang4_fa 200 SET_CHAR_ACCURACY gang4_fa 80 gang4_faflag = 0 //first left pillar shooting inside CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2540.859 -1287.161 1030.419 gang5_fa SET_CHAR_HEADING gang5_fa 90.0 SET_CHAR_DECISION_MAKER gang5_fa carter_DM GIVE_WEAPON_TO_CHAR gang5_fa WEAPONTYPE_MP5 99999 SET_CHAR_AREA_VISIBLE gang5_fa 2 SET_CHAR_HEALTH gang5_fa 200 SET_CHAR_MAX_HEALTH gang5_fa 200 SET_CHAR_ACCURACY gang5_fa 80 SET_CHAR_SHOOT_RATE gang5_fa 60 gang5_faflag = 0 //third left pillar shooting inside CREATE_CHAR PEDTYPE_MISSION1 LSV1 2556.854 -1287.161 1030.419 gang6_fa SET_CHAR_HEADING gang6_fa 90.0 SET_CHAR_DECISION_MAKER gang6_fa carter_DM GIVE_WEAPON_TO_CHAR gang6_fa WEAPONTYPE_AK47 99999 SET_CHAR_AREA_VISIBLE gang6_fa 2 SET_CHAR_HEALTH gang6_fa 200 SET_CHAR_MAX_HEALTH gang6_fa 200 gang6_faflag = 0 //duck and shoot stay in same place behind boxes in on right CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2556.854 -1300.628 1030.419 gang7_fa SET_CHAR_HEADING gang7_fa 90.0 SET_CHAR_DECISION_MAKER gang7_fa carter_DM GIVE_WEAPON_TO_CHAR gang7_fa WEAPONTYPE_MP5 99999 SET_CHAR_AREA_VISIBLE gang7_fa 2 SET_CHAR_HEALTH gang7_fa 200 SET_CHAR_MAX_HEALTH gang7_fa 200 gang7_faflag = 0 //Duck and shoot stay in same place behind boxes in on right CREATE_CHAR PEDTYPE_MISSION1 BALLAS2 2539.8049 -1298.6069 1030.4297 gang8_fa SET_CHAR_HEADING gang8_fa 64.7154 SET_CHAR_DECISION_MAKER gang8_fa carter_DM GIVE_WEAPON_TO_CHAR gang8_fa WEAPONTYPE_AK47 99999 SET_CHAR_AREA_VISIBLE gang8_fa 2 SET_CHAR_HEALTH gang8_fa 200 SET_CHAR_SHOOT_RATE gang8_fa 70 SET_CHAR_MAX_HEALTH gang8_fa 200 gang8_faflag = 0 //third right pillar just infront shoot normally CREATE_CHAR PEDTYPE_MISSION1 BALLAS2 2552.7976 -1300.9926 1030.4297 gang10_fa SET_CHAR_HEADING gang10_fa 87.5663 SET_CHAR_DECISION_MAKER gang10_fa carter_DM GIVE_WEAPON_TO_CHAR gang10_fa WEAPONTYPE_AK47 99999 SET_CHAR_AREA_VISIBLE gang10_fa 2 SET_CHAR_HEALTH gang10_fa 200 SET_CHAR_MAX_HEALTH gang10_fa 200 SET_CHAR_ACCURACY gang10_fa 80 SET_CHAR_SHOOT_RATE gang10_fa 60 gang10_faflag = 0 //back centre just infront of shutters shoot normally CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2563.2339 -1294.0665 1030.4297 gang11_fa SET_CHAR_HEADING gang11_fa 93.2190 SET_CHAR_DECISION_MAKER gang11_fa carter_DM GIVE_WEAPON_TO_CHAR gang11_fa WEAPONTYPE_MP5 99999 SET_CHAR_AREA_VISIBLE gang11_fa 2 SET_CHAR_HEALTH gang11_fa 200 SET_CHAR_MAX_HEALTH gang11_fa 200 gang11_faflag = 0 //middle centre shoot normally CREATE_CHAR PEDTYPE_MISSION1 BALLAS2 2550.9922 -1290.2742 1030.4297 gang12_fa SET_CHAR_HEADING gang12_fa 103.6499 SET_CHAR_DECISION_MAKER gang12_fa carter_DM GIVE_WEAPON_TO_CHAR gang12_fa WEAPONTYPE_AK47 99999 SET_CHAR_AREA_VISIBLE gang12_fa 2 SET_CHAR_HEALTH gang12_fa 200 SET_CHAR_SHOOT_RATE gang12_fa 60 SET_CHAR_MAX_HEALTH gang12_fa 200 gang12_faflag = 0 //left railings stay in same place CREATE_CHAR PEDTYPE_MISSION1 LSV1 2556.1907 -1281.4457 1036.7812 gang13_fa SET_CHAR_HEADING gang13_fa 183.4208 SET_CHAR_DECISION_MAKER gang13_fa carter_DM GIVE_WEAPON_TO_CHAR gang13_fa WEAPONTYPE_MP5 99999 SET_CHAR_AREA_VISIBLE gang13_fa 2 gang13_faflag = 0 CREATE_CAR SWATVAN 2561.818 -1275.167 1031.0189 swatvan_fa FREEZE_CAR_POSITION swatvan_fa TRUE SET_CAR_HEADING swatvan_fa 178.9 SET_VEHICLE_AREA_VISIBLE swatvan_fa 2 CREATE_CHAR_INSIDE_CAR swatvan_fa PEDTYPE_MISSION2 SWAT swat1_fa SET_CHAR_DECISION_MAKER swat1_fa carter_DM GIVE_WEAPON_TO_CHAR swat1_fa WEAPONTYPE_MP5 9999 SET_CHAR_AREA_VISIBLE swat1_fa 2 SET_CHAR_SHOOT_RATE swat1_fa 80 SET_CHAR_HEALTH swat1_fa 200 SET_CHAR_MAX_HEALTH swat1_fa 200 SET_CHAR_ACCURACY swat1_fa 80 CREATE_CHAR_AS_PASSENGER swatvan_fa PEDTYPE_MISSION2 SWAT 0 swat2_fa SET_CHAR_DECISION_MAKER swat2_fa carter_DM SET_CHAR_HEALTH swat2_fa 200 SET_CHAR_MAX_HEALTH swat2_fa 200 GIVE_WEAPON_TO_CHAR swat2_fa WEAPONTYPE_MP5 9999 SET_CHAR_RELATIONSHIP swat2_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 SET_CHAR_RELATIONSHIP swat2_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_AREA_VISIBLE swat2_fa 2 swat1_faflag = 0 swat2_faflag = 0 swatvan_faflag = 0 CREATE_OBJECT_NO_OFFSET imcompmovedr1_las 2565.814 -1303.566 1033.173 door_fa SET_OBJECT_HEADING door_fa 90.0 CREATE_OBJECT_NO_OFFSET CJ_WIN_POP2 2561.811 -1279.639 1032.128 wall_fa FREEZE_OBJECT_POSITION wall_fa TRUE CREATE_FX_SYSTEM wallbust 2562.0 -1282.0 1031.0 TRUE wallsmashfx_fa DISABLE_ALL_ENTRY_EXITS TRUE RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL PLAYER1 ON SWITCH_WIDESCREEN OFF CLEAR_PRINTS PRINT_NOW RM4_16 7000 1 //~s~Smoke is on the Fourth floor in his ~y~Penthouse Suite~s~. You will have to work your way through three floors to get there. floor1_faflag = 2 //CHECKPOINT_SAVE 1 ENDIF //first guy running away IF floor1_faflag = 2 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2543.38 -1310.38 1028.26 5.0 5.0 5.0 FALSE OR IS_CHAR_SHOOTING scplayer IF gang15_faflag = 0 IF NOT IS_CHAR_DEAD gang15_fa enemy_fa = gang15_fa enemyx_fa = 2527.5789 enemyy_fa = -1318.7618 enemyz_fa = 1030.4297 GOSUB runnostay_falabel gang15_faflag = 1 ENDIF ENDIF IF gang18_faflag = 0 IF NOT IS_CHAR_DEAD gang18_fa enemy_fa = gang18_fa GOSUB stayshootnoduck_falabel gang18_faflag = 1 ENDIF ENDIF floor1_faflag = 3 ENDIF ENDIF IF floor1_faflag = 3 IF IS_CHAR_IN_AREA_3D scplayer 2540.95 -1314.42 1028.79 2529.24 -1333.21 1035.04 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer 2534.44 -1318.92 1031.17 5.5 5.5 4.0 FALSE IF gang16_faflag = 0 IF NOT IS_CHAR_DEAD gang16_fa enemy_fa = gang16_fa GOSUB rolloutl_falabel gang16_faflag = 1 ENDIF ENDIF floor1_faflag = 4 ENDIF IF gang16_faflag = 0 IF NOT IS_CHAR_DEAD gang16_fa IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang16_fa scplayer enemy_fa = gang16_fa GOSUB rolloutl_falabel gang16_faflag = 1 floor1_faflag = 4 ENDIF ENDIF ENDIF ENDIF IF floor1_faflag = 4 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2527.18 -1304.24 1027.0 6.0 6.0 5.0 FALSE OR IS_CHAR_DEAD gang18_fa IF gang17_faflag = 0 IF NOT IS_CHAR_DEAD gang17_fa enemy_fa = gang17_fa GOSUB rolloutl_falabel gang17_faflag = 1 ENDIF ENDIF floor1_faflag = 5 ENDIF ENDIF IF floor1_faflag = 5 IF IS_CHAR_IN_AREA_3D scplayer 2529.33 -1308.3 1027.55 2537.78 -1272.14 1035.76 FALSE OR IS_CHAR_SHOOTING_IN_AREA scplayer 2522.87 -1299.61 2529.85 -1287.66 FALSE IF gang5_faflag = 0 IF NOT IS_CHAR_DEAD gang5_fa enemy_fa = gang5_fa enemyx_fa = 2540.859 enemyy_fa = -1287.161 enemyz_fa = 1030.419 shootimer_s4 = 1500 heading_fa = 90.0 GOSUB peekright_falabel gang5_faflag = 1 ENDIF ENDIF IF gang6_faflag = 0 IF NOT IS_CHAR_DEAD gang6_fa enemy_fa = gang6_fa enemyx_fa = 2556.854 enemyy_fa = -1287.161 enemyz_fa = 1030.419 shootimer_s4 = 2000 heading_fa = 90.0 GOSUB peekright_falabel gang6_faflag = 1 ENDIF ENDIF IF gang7_faflag = 0 IF NOT IS_CHAR_DEAD gang7_fa enemy_fa = gang7_fa enemyx_fa = 2556.854 enemyy_fa = -1300.628 enemyz_fa = 1030.419 shootimer_s4 = 1200 heading_fa = 90.0 GOSUB peekleft_falabel gang7_faflag = 1 ENDIF ENDIF IF gang3_faflag = 0 IF NOT IS_CHAR_DEAD gang3_fa enemy_fa = gang3_fa GOSUB stayshootnoduck_falabel gang3_faflag = 1 ENDIF ENDIF IF gang4_faflag = 0 IF NOT IS_CHAR_DEAD gang4_fa enemy_fa = gang4_fa GOSUB stayshootnoduck_falabel gang4_faflag = 1 ENDIF ENDIF IF gang13_faflag = 0 IF NOT IS_CHAR_DEAD gang13_fa enemy_fa = gang13_fa GOSUB stayshootnoduck_falabel gang13_faflag = 1 ENDIF ENDIF //Duck and shoot stay in same place behind boxes in on right IF gang8_faflag = 0 IF NOT IS_CHAR_DEAD gang8_fa enemy_fa = gang8_fa GOSUB stayshoot_falabel gang8_faflag = 1 ENDIF ENDIF //third right pillar just infront shoot normally IF gang10_faflag = 0 IF NOT IS_CHAR_DEAD gang10_fa TASK_KILL_CHAR_ON_FOOT gang10_fa scplayer gang10_faflag = 1 ENDIF ENDIF //back centre just infront of shutters shoot normally IF gang11_faflag = 0 IF NOT IS_CHAR_DEAD gang11_fa TASK_KILL_CHAR_ON_FOOT gang11_fa scplayer gang11_faflag = 1 ENDIF ENDIF //middle centre shoot normally IF gang12_faflag = 0 IF NOT IS_CHAR_DEAD gang12_fa TASK_KILL_CHAR_ON_FOOT gang12_fa scplayer gang12_faflag = 1 ENDIF ENDIF floor1_faflag = 6 ENDIF ENDIF IF floor1_faflag = 6 IF IS_CHAR_IN_AREA_3D scplayer 2529.88 -1307.89 1027.0 2538.32 -1277.63 1032.54 FALSE MARK_CHAR_AS_NO_LONGER_NEEDED gang15_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang16_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang17_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang18_fa //2560.0554 -1304.9164 1030.4297 duck and shoot IF gang1_faflag = 0 IF NOT IS_CHAR_DEAD gang1_fa enemy_fa = gang1_fa enemyx_fa = 2560.0554 enemyy_fa = -1304.9164 enemyz_fa = 1030.4297 GOSUB runnostay_falabel gang1_faflag = 1 ENDIF ENDIF floor1_faflag = 7 ENDIF ENDIF //player is near door IF floor1_faflag = 7 IF IS_CHAR_IN_AREA_3D scplayer 2546.43 -1277.49 1027.0 2568.06 -1310.79 1032.54 FALSE floor1_faflag = 8 ENDIF ENDIF //start the swat truck coming out IF floor1_faflag = 8 OR firstfloorcounter_fa > 6 IF swatvan_faflag = 0 IF NOT IS_CAR_DEAD swatvan_fa FREEZE_CAR_POSITION swatvan_fa FALSE START_PLAYBACK_RECORDED_CAR swatvan_fa 287 TIMERB = 0 swatvan_faflag = 1 ENDIF ENDIF ENDIF //smash wall IF swatvan_faflag = 1 IF IS_CLOSEST_OBJECT_OF_TYPE_SMASHED_OR_DAMAGED 2561.811 -1279.639 1032.128 10.0 CJ_WIN_POP2 TRUE TRUE OR TIMERB > 250 PLAY_AND_KILL_FX_SYSTEM wallsmashfx_fa SET_MISSION_AUDIO_POSITION 3 2557.88 -1288.65 1031.91 PLAY_MISSION_AUDIO 3 BREAK_OBJECT wall_fa TRUE swatvan_faflag = 2 ENDIF ENDIF IF swatvan_faflag = 2 IF NOT IS_CAR_DEAD swatvan_fa IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR swatvan_fa IF NOT IS_CHAR_DEAD swat1_fa TASK_KILL_CHAR_ON_FOOT swat1_fa scplayer ENDIF IF NOT IS_CHAR_DEAD swat2_fa TASK_KILL_CHAR_ON_FOOT swat2_fa scplayer ENDIF swatvan_faflag = 3 ENDIF ENDIF ENDIF IF gang5_faflag = 1 IF NOT IS_CHAR_DEAD gang5_fa IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang5_fa scplayer OR LOCATE_CHAR_ANY_MEANS_CHAR_3D gang5_fa scplayer 4.0 4.0 3.0 FALSE IF NOT IS_CHAR_DEAD gang5_fa TASK_KILL_CHAR_ON_FOOT gang5_fa scplayer gang5_faflag = 2 ELSE MARK_CHAR_AS_NO_LONGER_NEEDED gang5_fa gang5_faflag = 2 ENDIF ENDIF ENDIF ENDIF IF gang6_faflag = 1 IF NOT IS_CHAR_DEAD gang6_fa IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang6_fa scplayer OR LOCATE_CHAR_ANY_MEANS_CHAR_3D gang6_fa scplayer 4.0 4.0 3.0 FALSE IF NOT IS_CHAR_DEAD gang6_fa TASK_KILL_CHAR_ON_FOOT gang6_fa scplayer gang6_faflag = 2 ELSE MARK_CHAR_AS_NO_LONGER_NEEDED gang6_fa gang6_faflag = 2 ENDIF ENDIF ENDIF ENDIF IF gang7_faflag = 1 IF NOT IS_CHAR_DEAD gang7_fa IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang7_fa scplayer OR LOCATE_CHAR_ANY_MEANS_CHAR_3D gang7_fa scplayer 5.0 5.0 3.0 FALSE IF NOT IS_CHAR_DEAD gang7_fa TASK_KILL_CHAR_ON_FOOT gang7_fa scplayer gang7_faflag = 2 ELSE MARK_CHAR_AS_NO_LONGER_NEEDED gang7_fa gang7_faflag = 2 ENDIF ENDIF ENDIF ENDIF //mark as no longer needed IF gang1_faflag = 1 IF IS_CHAR_DEAD gang1_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang1_fa firstfloorcounter_fa++ gang1_faflag = 2 ENDIF ENDIF IF gang3_faflag = 1 IF IS_CHAR_DEAD gang3_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang3_fa firstfloorcounter_fa++ gang3_faflag = 2 ENDIF ENDIF IF gang4_faflag = 1 IF IS_CHAR_DEAD gang4_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang4_fa firstfloorcounter_fa++ gang4_faflag = 2 ENDIF ENDIF IF gang5_faflag = 1 OR gang5_faflag = 2 IF IS_CHAR_DEAD gang5_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang5_fa firstfloorcounter_fa++ gang5_faflag = 3 ENDIF ENDIF IF gang6_faflag = 1 OR gang6_faflag = 2 IF IS_CHAR_DEAD gang6_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang6_fa firstfloorcounter_fa++ gang6_faflag = 3 ENDIF ENDIF IF gang7_faflag = 1 OR gang7_faflag = 2 IF IS_CHAR_DEAD gang7_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang7_fa firstfloorcounter_fa++ gang7_faflag = 3 ENDIF ENDIF IF gang8_faflag = 1 IF IS_CHAR_DEAD gang8_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang8_fa firstfloorcounter_fa++ gang8_faflag = 2 ENDIF ENDIF IF gang10_faflag = 1 IF IS_CHAR_DEAD gang10_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang10_fa firstfloorcounter_fa++ gang10_faflag = 2 ENDIF ENDIF IF gang11_faflag = 1 IF IS_CHAR_DEAD gang11_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang11_fa firstfloorcounter_fa++ gang11_faflag = 2 ENDIF ENDIF IF gang12_faflag = 1 IF IS_CHAR_DEAD gang12_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang12_fa firstfloorcounter_fa++ gang12_faflag = 2 ENDIF ENDIF IF gang13_faflag = 1 IF IS_CHAR_DEAD gang13_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang13_fa firstfloorcounter_fa++ gang13_faflag = 2 ENDIF ENDIF IF swat1_faflag = 0 IF IS_CHAR_DEAD swat1_fa MARK_CHAR_AS_NO_LONGER_NEEDED swat1_fa firstfloorcounter_fa++ swat1_faflag = 1 ENDIF ENDIF IF swat2_faflag = 0 IF IS_CHAR_DEAD swat2_fa MARK_CHAR_AS_NO_LONGER_NEEDED swat2_fa firstfloorcounter_fa++ swat2_faflag = 1 ENDIF ENDIF //checking if guys are dead, once atleast 12 are taken out open the door providing the player has been in that area. IF firstfloorcounter_fa > 8 IF floor1_faflag = 8 IF slidedoor_faflag = 0 IF DOES_OBJECT_EXIST door_fa IF createguysfirst_faflag = 0 //runs through door //-> 2564.1860 -1301.6758 1030.4297 86.0738 CREATE_CHAR PEDTYPE_MISSION1 BALLAS2 2571.6353 -1302.1888 1030.4274 gang15_fa SET_CHAR_HEADING gang15_fa 84.9134 SET_CHAR_DECISION_MAKER gang15_fa cartertough_DM GIVE_WEAPON_TO_CHAR gang15_fa WEAPONTYPE_MP5 99999 TASK_PLAY_ANIM gang15_fa ROADCROSS PED 4.0 FALSE FALSE FALSE TRUE -1 SET_CHAR_AREA_VISIBLE gang15_fa 2 SET_CHAR_ACCURACY gang15_fa 80 SET_CHAR_HEALTH gang15_fa 150 SET_CHAR_MAX_HEALTH gang15_fa 150 gang15_faflag = 0 //duck and shoot CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2570.3979 -1299.2329 1030.4274 gang16_fa SET_CHAR_HEADING gang16_fa 119.2958 SET_CHAR_DECISION_MAKER gang16_fa carter_DM GIVE_WEAPON_TO_CHAR gang16_fa WEAPONTYPE_MP5 99999 SET_CHAR_AREA_VISIBLE gang16_fa 2 SET_CHAR_HEALTH gang16_fa 200 SET_CHAR_MAX_HEALTH gang16_fa 200 gang16_faflag = 0 //duck and shoot CREATE_CHAR PEDTYPE_MISSION1 LSV1 2566.8992 -1290.1445 1030.4297 gang17_fa SET_CHAR_HEADING gang17_fa 180.0082 SET_CHAR_DECISION_MAKER gang17_fa carter_DM GIVE_WEAPON_TO_CHAR gang17_fa WEAPONTYPE_MP5 99999 SET_CHAR_AREA_VISIBLE gang17_fa 2 SET_CHAR_HEALTH gang17_fa 200 SET_CHAR_MAX_HEALTH gang17_fa 200 gang17_faflag = 0 //duck and shoot CREATE_CHAR PEDTYPE_MISSION1 BALLAS2 2570.6372 -1286.8409 1030.4297 gang18_fa SET_CHAR_HEADING gang18_fa 182.7895 SET_CHAR_DECISION_MAKER gang18_fa carter_DM GIVE_WEAPON_TO_CHAR gang18_fa WEAPONTYPE_MP5 99999 SET_CHAR_AREA_VISIBLE gang18_fa 2 SET_CHAR_HEALTH gang18_fa 200 SET_CHAR_MAX_HEALTH gang18_fa 200 gang18_faflag = 0 //-> 2575.5647 -1284.9652 1030.4274 264.3392 -> 2575.5127 -1303.2421 1036.7812 179.2655 CREATE_CHAR PEDTYPE_MISSION1 BALLAS2 2569.7278 -1284.5280 1030.4297 gang14_fa SET_CHAR_HEADING gang14_fa 168.4302 SET_CHAR_DECISION_MAKER gang14_fa carter_DM GIVE_WEAPON_TO_CHAR gang14_fa WEAPONTYPE_MP5 99999 SET_CHAR_AREA_VISIBLE gang14_fa 2 SET_CHAR_HEALTH gang14_fa 200 SET_CHAR_MAX_HEALTH gang14_fa 200 gang14_faflag = 0 createguysfirst_faflag = 1 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT door_fa SOUND_SHUTTER_DOOR_START ENDIF IF SLIDE_OBJECT door_fa 2565.814 -1303.566 1035.362 0.0 0.0 0.15 FALSE REPORT_MISSION_AUDIO_EVENT_AT_OBJECT door_fa SOUND_SHUTTER_DOOR_STOP floor1_faflag = 9 IF gang15_faflag = 0 IF NOT IS_CHAR_DEAD gang15_fa enemy_fa = gang15_fa enemyx_fa = 2564.1860 enemyy_fa = -1301.6758 enemyz_fa = 1030.4297 GOSUB runnostay_falabel gang15_faflag = 1 ENDIF ENDIF IF gang16_faflag = 0 IF NOT IS_CHAR_DEAD gang16_fa enemy_fa = gang16_fa GOSUB stayshoot_falabel gang16_faflag = 1 ENDIF ENDIF IF gang14_faflag = 0 IF NOT IS_CHAR_DEAD gang14_fa enemy_fa = gang14_fa GOSUB stayshoot_falabel gang14_faflag = 1 ENDIF ENDIF IF gang17_faflag = 0 IF NOT IS_CHAR_DEAD gang17_fa enemy_fa = gang17_fa GOSUB stayshoot_falabel gang17_faflag = 1 ENDIF ENDIF IF gang18_faflag = 0 IF NOT IS_CHAR_DEAD gang18_fa enemy_fa = gang18_fa GOSUB stayshoot_falabel gang18_faflag = 1 ENDIF ENDIF slidedoor_faflag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF floor1_faflag = 9 IF IS_CHAR_IN_AREA_3D scplayer 2566.14 -1307.43 1027.0 2580.06 -1279.36 1034.16 FALSE IF gang14_faflag = 1 IF NOT IS_CHAR_DEAD gang14_fa enemy_fa = gang14_fa enemyx_fa = 2575.5647 enemyy_fa = -1284.9652 enemyz_fa = 1030.4274 enemyx2_fa = 2575.5127 enemyy2_fa = -1303.2421 enemyz2_fa = 1036.7812 GOSUB run2shoot_falabel gang14_faflag = 2 ENDIF ENDIF floor1_faflag = 10 ENDIF ENDIF //player goes to the next floor IF floor1_faflag = 10 IF IS_CHAR_IN_AREA_3D scplayer 2577.98 -1307.44 1034.5 2583.49 -1298.94 1039.3 FALSE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL PLAYER1 OFF REMOVE_BLIP carter_fablip CLEAR_MISSION_AUDIO 3 SET_CHAR_COORDINATES scplayer 2575.0364 -1305.7413 1036.7812 SET_CHAR_HEADING scplayer 273.5172 DELETE_CHAR gang7_fa DELETE_CHAR gang8_fa DELETE_CHAR gang10_fa DELETE_CHAR gang11_fa DELETE_CHAR gang12_fa DELETE_CHAR gang13_fa DELETE_CHAR gang1_fa DELETE_CHAR gang3_fa DELETE_CHAR gang4_fa DELETE_CHAR gang5_fa DELETE_CHAR gang6_fa DELETE_CHAR gang7_fa DELETE_CHAR gang8_fa DELETE_CHAR gang10_fa DELETE_CHAR gang11_fa DELETE_CHAR gang12_fa DELETE_CHAR gang13_fa DELETE_CHAR swat1_fa DELETE_CHAR swat2_fa DELETE_CAR swatvan_fa DELETE_CHAR gang14_fa DELETE_CHAR gang15_fa DELETE_CHAR gang16_fa DELETE_CHAR gang17_fa DELETE_CHAR gang18_fa DELETE_OBJECT door_fa MARK_MODEL_AS_NO_LONGER_NEEDED SWAT MARK_MODEL_AS_NO_LONGER_NEEDED SWATVAN MARK_MODEL_AS_NO_LONGER_NEEDED AK47 MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS2 MARK_MODEL_AS_NO_LONGER_NEEDED LSV1 MARK_MODEL_AS_NO_LONGER_NEEDED imcompmovedr1_las SET_FIXED_CAMERA_POSITION 2579.6863 -1310.0020 1037.2235 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2579.7361 -1309.0225 1037.4183 JUMP_CUT PRINT_BIG RM4_18 1000 2 //Floor 2: Drug Lab WAIT 1000 TASK_GO_STRAIGHT_TO_COORD scplayer 2580.0911 -1305.6494 1036.7734 PEDMOVE_WALK 4000 floor1_faflag = 11 ENDIF ENDIF IF floor1_faflag = 11 IF LOCATE_STOPPED_CHAR_ON_FOOT_2D scplayer 2580.0911 -1305.6494 3.0 3.0 FALSE ADD_BLIP_FOR_COORD 2521.52 -1301.89 1047.37 carter_fablip SET_BLIP_ENTRY_EXIT carter_fablip 2540.83 -1304.05 1.0 REQUEST_MODEL BMYCG REQUEST_MODEL HMYCM REQUEST_MODEL SFR1 REQUEST_MODEL M4 REQUEST_MODEL COLT45 REQUEST_MODEL BARREL4 LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED BMYCG OR NOT HAS_MODEL_LOADED HMYCM OR NOT HAS_MODEL_LOADED SFR1 OR NOT HAS_MODEL_LOADED M4 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED BARREL4 WAIT 0 ENDWHILE CREATE_PICKUP BODYARMOUR PICKUP_ONCE 2580.953 -1285.117 1044.173 armour2_fa CREATE_PICKUP HEALTH PICKUP_ONCE 2528.456 -1282.385 1048.337 health2_fa CREATE_OBJECT BARREL4 2560.3086 -1290.7020 1043.1328 barrel1_fa SET_OBJECT_ONLY_DAMAGED_BY_PLAYER barrel1_fa TRUE MAKE_OBJECT_TARGETTABLE barrel1_fa TRUE CREATE_OBJECT BARREL4 2540.4673 -1306.6808 1047.2969 barrel2_fa SET_OBJECT_ONLY_DAMAGED_BY_PLAYER barrel2_fa TRUE MAKE_OBJECT_TARGETTABLE barrel2_fa TRUE CREATE_OBJECT BARREL4 2545.4915 -1296.2844 1043.1305 barrel3_fa SET_OBJECT_ONLY_DAMAGED_BY_PLAYER barrel3_fa TRUE MAKE_OBJECT_TARGETTABLE barrel3_fa TRUE CREATE_OBJECT BARREL4 2538.1714 -1289.8064 1043.1328 barrel4_fa SET_OBJECT_ONLY_DAMAGED_BY_PLAYER barrel4_fa TRUE MAKE_OBJECT_TARGETTABLE barrel4_fa TRUE //1 in security room CREATE_CHAR PEDTYPE_MISSION1 SFR1 2580.8091 -1285.6500 1043.1328 gang1_fa SET_CHAR_HEADING gang1_fa 178.4956 SET_CHAR_DECISION_MAKER gang1_fa carter_DM GIVE_WEAPON_TO_CHAR gang1_fa WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang1_fa 2 SET_CHAR_HEALTH gang1_fa 150 SET_CHAR_MAX_HEALTH gang1_fa 150 gang1_faflag = 0 //2 tough guy back to player CREATE_CHAR PEDTYPE_MISSION1 SFR1 2574.7358 -1295.8608 1043.1328 gang2_fa SET_CHAR_HEADING gang2_fa 183.0452 SET_CHAR_DECISION_MAKER gang2_fa carter_DM GIVE_WEAPON_TO_CHAR gang2_fa WEAPONTYPE_PISTOL 99999 SET_CHAR_WEAPON_SKILL gang2_fa WEAPONSKILL_PRO SET_CHAR_RELATIONSHIP gang2_fa ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_AREA_VISIBLE gang2_fa 2 SET_SENSE_RANGE gang2_fa 10.0 SET_CHAR_ACCURACY gang2_fa 60 gang2_faflag = 0 //shoot in CREATE_CHAR PEDTYPE_MISSION1 HMYCM 2561.648 -1300.648 1043.17 gang3_fa SET_CHAR_HEADING gang3_fa 270.0 SET_CHAR_DECISION_MAKER gang3_fa carter_DM GIVE_WEAPON_TO_CHAR gang3_fa WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang3_fa 2 SET_CHAR_PROOFS gang3_fa FALSE FALSE TRUE FALSE FALSE SET_CHAR_HEALTH gang3_fa 200 SET_CHAR_MAX_HEALTH gang3_fa 200 gang3_faflag = 0 //shoot in CREATE_CHAR PEDTYPE_MISSION1 BMYCG 2545.648 -1300.648 1043.17 gang4_fa SET_CHAR_HEADING gang4_fa 270.0 SET_CHAR_DECISION_MAKER gang4_fa carter_DM GIVE_WEAPON_TO_CHAR gang4_fa WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang4_fa 2 SET_CHAR_PROOFS gang4_fa FALSE FALSE TRUE FALSE FALSE SET_CHAR_HEALTH gang4_fa 200 SET_CHAR_MAX_HEALTH gang4_fa 200 SET_CHAR_SHOOT_RATE gang4_fa 70 gang4_faflag = 0 //shoot in CREATE_CHAR PEDTYPE_MISSION1 HMYCM 2538.348 -1287.148 1043.1328 gang5_fa SET_CHAR_HEADING gang5_fa 270.0 SET_CHAR_DECISION_MAKER gang5_fa carter_DM GIVE_WEAPON_TO_CHAR gang5_fa WEAPONTYPE_M4 99999 SET_CHAR_PROOFS gang5_fa FALSE FALSE TRUE FALSE FALSE SET_CHAR_AREA_VISIBLE gang5_fa 2 SET_CHAR_HEALTH gang5_fa 200 SET_CHAR_MAX_HEALTH gang5_fa 200 gang5_faflag = 0 //shoot in CREATE_CHAR PEDTYPE_MISSION1 BMYCG 2553.648 -1287.148 1043.1328 gang6_fa SET_CHAR_HEADING gang6_fa 270.0 SET_CHAR_DECISION_MAKER gang6_fa carter_DM GIVE_WEAPON_TO_CHAR gang6_fa WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang6_fa 2 SET_CHAR_HEALTH gang6_fa 200 SET_CHAR_MAX_HEALTH gang6_fa 200 SET_CHAR_SHOOT_RATE gang6_fa 60 gang6_faflag = 0 WAIT 250 //7 near tables kill normally CREATE_CHAR PEDTYPE_MISSION1 HMYCM 2552.7480 -1304.3599 1043.1328 gang7_fa SET_CHAR_HEADING gang7_fa 87.8604 SET_CHAR_DECISION_MAKER gang7_fa carter_DM GIVE_WEAPON_TO_CHAR gang7_fa WEAPONTYPE_PISTOL 99999 SET_CHAR_WEAPON_SKILL gang7_fa WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang7_fa 2 SET_CHAR_HEALTH gang7_fa 200 SET_CHAR_MAX_HEALTH gang7_fa 200 SET_CHAR_SHOOT_RATE gang7_fa 80 gang7_faflag = 0 //9 breakable table first one on left kill normally CREATE_CHAR PEDTYPE_MISSION1 HMYCM 2555.8508 -1296.1154 1043.1305 gang9_fa SET_CHAR_HEADING gang9_fa 348.0356 SET_CHAR_DECISION_MAKER gang9_fa carter_DM GIVE_WEAPON_TO_CHAR gang9_fa WEAPONTYPE_PISTOL 99999 SET_CHAR_WEAPON_SKILL gang9_fa WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang9_fa 2 SET_CHAR_PROOFS gang9_fa FALSE FALSE TRUE FALSE FALSE SET_CHAR_HEALTH gang9_fa 200 SET_CHAR_MAX_HEALTH gang9_fa 200 SET_CHAR_ACCURACY gang9_fa 80 gang9_faflag = 0 //10 breakable table far left stay in the same place CREATE_CHAR PEDTYPE_MISSION1 BMYCG 2542.6062 -1296.0956 1043.1328 gang10_fa SET_CHAR_HEADING gang10_fa 353.9691 SET_CHAR_DECISION_MAKER gang10_fa carter_DM GIVE_WEAPON_TO_CHAR gang10_fa WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang10_fa 2 SET_CHAR_HEALTH gang10_fa 200 SET_CHAR_MAX_HEALTH gang10_fa 200 gang10_faflag = 0 //11 breakable stay in same place first right CREATE_CHAR PEDTYPE_MISSION1 HMYCM 2552.9243 -1290.8783 1043.1328 gang11_fa SET_CHAR_HEADING gang11_fa 187.0611 SET_CHAR_DECISION_MAKER gang11_fa carter_DM GIVE_WEAPON_TO_CHAR gang11_fa WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang11_fa 2 SET_CHAR_HEALTH gang11_fa 200 SET_CHAR_MAX_HEALTH gang11_fa 200 SET_CHAR_ACCURACY gang11_fa 70 gang11_faflag = 0 //13 stay in same place back right solid tables CREATE_CHAR PEDTYPE_MISSION1 BMYCG 2550.0588 -1281.2484 1043.1328 gang13_fa SET_CHAR_HEADING gang13_fa 230.8361 SET_CHAR_DECISION_MAKER gang13_fa carter_DM GIVE_WEAPON_TO_CHAR gang13_fa WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang13_fa 2 SET_CHAR_HEALTH gang13_fa 200 SET_CHAR_MAX_HEALTH gang13_fa 200 SET_CHAR_SHOOT_RATE gang13_fa 80 gang13_faflag = 0 WAIT 250 //14 top of stairs stay in same place CREATE_CHAR PEDTYPE_MISSION1 BMYCG 2531.9060 -1283.0620 1047.2969 gang14_fa SET_CHAR_HEADING gang14_fa 233.2448 SET_CHAR_DECISION_MAKER gang14_fa carter_DM GIVE_WEAPON_TO_CHAR gang14_fa WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang14_fa 2 SET_CHAR_HEALTH gang14_fa 200 SET_CHAR_MAX_HEALTH gang14_fa 200 SET_CHAR_ACCURACY gang14_fa 50 gang14_faflag = 0 //15 same side CREATE_CHAR PEDTYPE_MISSION1 BMYCG 2548.9773 -1282.4260 1047.2969 gang15_fa SET_CHAR_HEADING gang15_fa 234.0824 SET_CHAR_DECISION_MAKER gang15_fa carter_DM GIVE_WEAPON_TO_CHAR gang15_fa WEAPONTYPE_PISTOL 99999 SET_CHAR_WEAPON_SKILL gang15_fa WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang15_fa 2 SET_CHAR_HEALTH gang15_fa 200 SET_CHAR_MAX_HEALTH gang15_fa 200 gang15_faflag = 0 //16 at the back CREATE_CHAR PEDTYPE_MISSION1 BMYCG 2530.0352 -1293.182 1047.36 gang16_fa SET_CHAR_HEADING gang16_fa 268.475 SET_CHAR_DECISION_MAKER gang16_fa carter_DM GIVE_WEAPON_TO_CHAR gang16_fa WEAPONTYPE_M4 99999 SET_CHAR_HEALTH gang16_fa 200 SET_CHAR_MAX_HEALTH gang16_fa 200 SET_CHAR_AREA_VISIBLE gang16_fa 2 SET_CHAR_ACCURACY gang16_fa 80 gang16_faflag = 0 SET_PLAYER_CONTROL PLAYER1 ON SWITCH_WIDESCREEN OFF SET_CHAR_HEADING scplayer 0.0 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER CLEAR_PRINTS PRINT_NOW RM4_23 7000 1 //~s~Make your way to ~y~Floor 3~s~. carter_faflag = 3 floor2_faflag = 1 floor1_faflag = 12 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////// 2nd Floor //////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF carter_faflag = 3 IF floor2_faflag = 1 IF IS_CHAR_IN_AREA_3D scplayer 2576.3 -1299.12 1039.71 2584.46 -1281.22 1046.6 FALSE IF gang1_faflag = 0 IF NOT IS_CHAR_DEAD gang1_fa enemy_fa = gang1_fa GOSUB stayshootnoduck_falabel gang1_faflag = 1 ENDIF ENDIF floor2_faflag = 2 ENDIF ENDIF IF gang2_faflag = 0 IF NOT IS_CHAR_DEAD gang2_fa IF HAS_CHAR_SPOTTED_CHAR gang2_fa scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang2_fa scplayer TASK_KILL_CHAR_ON_FOOT gang2_fa scplayer gang2_faflag = 1 ENDIF ENDIF ENDIF IF floor2_faflag = 2 IF IS_CHAR_IN_AREA_3D scplayer 2571.5020 -1311.9929 1041.8575 2560.8064 -1276.3655 1046.7268 FALSE IF gang1_faflag = 0 MARK_CHAR_AS_NO_LONGER_NEEDED gang1_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang2_fa gang1_faflag = 1 ENDIF IF gang3_faflag = 0 IF NOT IS_CHAR_DEAD gang3_fa enemy_fa = gang3_fa enemyx_fa = 2561.648 enemyy_fa = -1300.648 enemyz_fa = 1043.17 shootimer_s4 = 3000 heading_fa = 270.0 GOSUB peekright_falabel gang3_faflag = 1 ENDIF ENDIF IF gang4_faflag = 0 IF NOT IS_CHAR_DEAD gang4_fa enemy_fa = gang4_fa enemyx_fa = 2545.648 enemyy_fa = -1300.648 enemyz_fa = 1043.17 shootimer_s4 = 1200 heading_fa = 270.0 GOSUB peekright_falabel gang4_faflag = 1 ENDIF ENDIF IF gang5_faflag = 0 IF NOT IS_CHAR_DEAD gang5_fa enemy_fa = gang5_fa enemyx_fa = 2538.348 enemyy_fa = -1287.148 enemyz_fa = 1043.1328 shootimer_s4 = 1500 heading_fa = 270.0 GOSUB peekleft_falabel gang5_faflag = 1 ENDIF ENDIF IF gang6_faflag = 0 IF NOT IS_CHAR_DEAD gang6_fa enemy_fa = gang6_fa enemyx_fa = 2553.648 enemyy_fa = -1287.148 enemyz_fa = 1043.1328 shootimer_s4 = 2000 heading_fa = 270.0 GOSUB peekleft_falabel gang6_faflag = 1 ENDIF ENDIF //7 near tables kill normally IF gang7_faflag = 0 IF NOT IS_CHAR_DEAD gang7_fa TASK_KILL_CHAR_ON_FOOT gang7_fa scplayer gang7_faflag = 1 ENDIF ENDIF //9 breakable table first one on left kill normally IF gang9_faflag = 0 IF NOT IS_CHAR_DEAD gang9_fa TASK_KILL_CHAR_ON_FOOT gang9_fa scplayer gang9_faflag = 1 ENDIF ENDIF //10 breakable table far left stay in the same place IF gang10_faflag = 0 IF NOT IS_CHAR_DEAD gang10_fa enemy_fa = gang10_fa GOSUB stayshoot_falabel gang10_faflag = 1 ENDIF ENDIF //11 breakable stay in same place first right IF gang11_faflag = 0 IF NOT IS_CHAR_DEAD gang11_fa enemy_fa = gang11_fa GOSUB stayshoot_falabel gang10_faflag = 1 ENDIF ENDIF //13 stay in same place back right solid tables IF gang13_faflag = 0 IF NOT IS_CHAR_DEAD gang13_fa TASK_KILL_CHAR_ON_FOOT gang13_fa scplayer gang13_faflag = 1 ENDIF ENDIF //14 top of stairs stay in same place IF gang14_faflag = 0 IF NOT IS_CHAR_DEAD gang14_fa enemy_fa = gang14_fa GOSUB stayshoot_falabel gang14_faflag = 1 ENDIF ENDIF //15 same side IF gang15_faflag = 0 IF NOT IS_CHAR_DEAD gang15_fa enemy_fa = gang15_fa GOSUB stayshootnoduck_falabel gang15_faflag = 1 ENDIF ENDIF //16 at the back IF gang16_faflag = 0 IF NOT IS_CHAR_DEAD gang16_fa enemy_fa = gang16_fa GOSUB stayshootnoduck_falabel gang16_faflag = 1 ENDIF ENDIF floor2_faflag = 3 ENDIF ENDIF IF floor2_faflag = 3 //mark as no longer needed IF gang3_faflag = 1 IF NOT IS_CHAR_DEAD gang3_fa IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang3_fa scplayer IF NOT IS_CHAR_DEAD gang3_fa OR LOCATE_CHAR_ANY_MEANS_CHAR_3D gang3_fa scplayer 4.0 4.0 3.0 FALSE TASK_KILL_CHAR_ON_FOOT gang3_fa scplayer gang3_faflag = 2 ELSE MARK_CHAR_AS_NO_LONGER_NEEDED gang3_fa gang3_faflag = 2 ENDIF ENDIF ENDIF ENDIF IF gang4_faflag = 1 IF NOT IS_CHAR_DEAD gang4_fa IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang4_fa scplayer OR LOCATE_CHAR_ANY_MEANS_CHAR_3D gang4_fa scplayer 4.0 4.0 3.0 FALSE IF NOT IS_CHAR_DEAD gang4_fa TASK_KILL_CHAR_ON_FOOT gang4_fa scplayer gang4_faflag = 2 ELSE MARK_CHAR_AS_NO_LONGER_NEEDED gang4_fa gang4_faflag = 2 ENDIF ENDIF ENDIF ENDIF IF gang5_faflag = 1 IF NOT IS_CHAR_DEAD gang5_fa IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang5_fa scplayer OR LOCATE_CHAR_ANY_MEANS_CHAR_3D gang5_fa scplayer 5.0 5.0 3.0 FALSE IF NOT IS_CHAR_DEAD gang5_fa TASK_KILL_CHAR_ON_FOOT gang5_fa scplayer gang5_faflag = 2 ELSE MARK_CHAR_AS_NO_LONGER_NEEDED gang5_fa gang5_faflag = 2 ENDIF ENDIF ENDIF ENDIF IF gang6_faflag = 1 IF NOT IS_CHAR_DEAD gang6_fa IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang6_fa scplayer OR LOCATE_CHAR_ANY_MEANS_CHAR_3D gang6_fa scplayer 5.0 5.0 3.0 FALSE IF NOT IS_CHAR_DEAD gang6_fa TASK_KILL_CHAR_ON_FOOT gang6_fa scplayer gang6_faflag = 2 ELSE gang6_faflag = 2 ENDIF ENDIF ENDIF ENDIF IF gang3_faflag = 1 OR gang3_faflag = 2 IF IS_CHAR_DEAD gang3_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang3_fa secondfloorcounter_fa++ gang3_faflag = 3 ENDIF ENDIF IF gang4_faflag = 1 OR gang4_faflag = 2 IF IS_CHAR_DEAD gang4_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang4_fa secondfloorcounter_fa++ gang4_faflag = 3 ENDIF ENDIF IF gang5_faflag = 1 OR gang5_faflag = 2 IF IS_CHAR_DEAD gang5_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang5_fa secondfloorcounter_fa++ gang5_faflag = 3 ENDIF ENDIF IF gang6_faflag = 1 OR gang6_faflag = 2 IF IS_CHAR_DEAD gang6_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang6_fa secondfloorcounter_fa++ gang6_faflag = 3 ENDIF ENDIF IF gang7_faflag = 1 IF IS_CHAR_DEAD gang7_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang7_fa secondfloorcounter_fa++ gang7_faflag = 2 ENDIF ENDIF IF gang10_faflag = 1 IF IS_CHAR_DEAD gang10_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang10_fa secondfloorcounter_fa++ gang10_faflag = 2 ENDIF ENDIF IF gang11_faflag = 1 IF IS_CHAR_DEAD gang11_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang11_fa secondfloorcounter_fa++ gang11_faflag = 2 ENDIF ENDIF IF gang13_faflag = 1 IF IS_CHAR_DEAD gang13_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang13_fa secondfloorcounter_fa++ gang13_faflag = 2 ENDIF ENDIF IF gang14_faflag = 1 IF IS_CHAR_DEAD gang14_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang14_fa secondfloorcounter_fa++ gang14_faflag = 2 ENDIF ENDIF IF gang15_faflag = 1 IF IS_CHAR_DEAD gang15_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang15_fa secondfloorcounter_fa++ gang15_faflag = 2 ENDIF ENDIF IF gang16_faflag = 1 IF IS_CHAR_DEAD gang16_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang16_fa secondfloorcounter_fa++ gang16_faflag = 2 ENDIF ENDIF //two guys come in from the bottom IF druglabguys1_faflag = 0 IF secondfloorcounter_fa > 5 IF IS_CHAR_IN_AREA_3D scplayer 2551.12 -1276.34 1046.55 2543.07 -1287.63 1050.46 FALSE //-> 2566.2883 -1301.6373 1043.1328 86.8088 ->2565.7402 -1297.0906 1043.1328 71.4430 stay CREATE_CHAR PEDTYPE_MISSION1 SFR1 2573.4482 -1301.9808 1043.1328 gang17_fa SET_CHAR_HEADING gang17_fa 87.1597 SET_CHAR_DECISION_MAKER gang17_fa carter_DM GIVE_WEAPON_TO_CHAR gang17_fa WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang17_fa 2 SET_CHAR_HEALTH gang17_fa 200 SET_CHAR_MAX_HEALTH gang17_fa 200 enemy_fa = gang17_fa enemyx_fa = 2566.2883 enemyy_fa = -1301.6373 enemyz_fa = 1043.1328 enemyx2_fa = 2565.7402 enemyy2_fa = -1297.0906 enemyz2_fa = 1043.1328 GOSUB run2shoot_falabel gang17_faflag = 1 //-> 2566.9844 -1302.0898 1043.1328 91.2501 kill normally CREATE_CHAR PEDTYPE_MISSION1 SFR1 2575.3083 -1301.9081 1043.1328 gang18_fa SET_CHAR_HEADING gang18_fa 91.2377 SET_CHAR_DECISION_MAKER gang18_fa carter_DM GIVE_WEAPON_TO_CHAR gang18_fa WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang18_fa 2 SET_CHAR_HEALTH gang18_fa 200 SET_CHAR_MAX_HEALTH gang18_fa 200 enemy_fa = gang18_fa enemyx_fa = 2566.9844 enemyy_fa = -1302.0898 enemyz_fa = 1043.1328 GOSUB runnostay_falabel gang18_faflag = 1 druglabguys1_faflag = 1 ENDIF ENDIF ENDIF //two guys come in from the side IF druglabguys2_faflag = 0 IF secondfloorcounter_fa > 8 IF IS_CHAR_IN_AREA_3D scplayer 2566.09 -1301.26 1046.91 2554.56 -1309.06 1050.0 FALSE //-> 2542.3171 -1305.6744 1047.2969 CREATE_CHAR PEDTYPE_MISSION1 SFR1 2527.2715 -1305.6477 1047.2969 gang19_fa SET_CHAR_HEADING gang19_fa 269.5592 SET_CHAR_DECISION_MAKER gang19_fa carter_DM GIVE_WEAPON_TO_CHAR gang19_fa WEAPONTYPE_PISTOL 99999 SET_CHAR_WEAPON_SKILL gang19_fa WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang19_fa 2 enemy_fa = gang19_fa enemyx_fa = 2542.3171 enemyy_fa = -1305.6744 enemyz_fa = 1047.2969 GOSUB runnostay_falabel gang19_faflag = 1 //-> 2534.5671 -1305.5472 1047.2969 CREATE_CHAR PEDTYPE_MISSION1 SFR1 2523.7000 -1305.8778 1047.2969 gang20_fa SET_CHAR_HEADING gang20_fa 273.1955 SET_CHAR_DECISION_MAKER gang20_fa carter_DM GIVE_WEAPON_TO_CHAR gang20_fa WEAPONTYPE_PISTOL 99999 SET_CHAR_WEAPON_SKILL gang20_fa WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang20_fa 2 enemy_fa = gang20_fa enemyx_fa = 2534.5671 enemyy_fa = -1305.5472 enemyz_fa = 1047.2969 GOSUB runnostay_falabel gang20_faflag = 1 druglabguys2_faflag = 1 ENDIF ENDIF ENDIF IF gang17_faflag = 1 IF IS_CHAR_DEAD gang17_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang17_fa secondfloorcounter_fa++ gang17_faflag = 2 ENDIF ENDIF IF gang18_faflag = 1 IF IS_CHAR_DEAD gang18_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang18_fa secondfloorcounter_fa++ gang18_faflag = 2 ENDIF ENDIF IF gang19_faflag = 1 IF IS_CHAR_DEAD gang19_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang19_fa secondfloorcounter_fa++ gang19_faflag = 2 ENDIF ENDIF IF gang20_faflag = 1 IF IS_CHAR_DEAD gang20_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang20_fa secondfloorcounter_fa++ gang20_faflag = 2 ENDIF ENDIF IF IS_CHAR_IN_AREA_3D scplayer 2522.35 -1309.65 1045.6 2513.5 -1295.97 1050.32 FALSE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL PLAYER1 OFF SET_CHAR_COORDINATES scplayer 2525.0786 -1301.8910 1047.2969 SET_CHAR_HEADING scplayer 89.7295 DELETE_CHAR gang1_fa DELETE_CHAR gang2_fa DELETE_CHAR gang3_fa DELETE_CHAR gang4_fa DELETE_CHAR gang5_fa DELETE_CHAR gang6_fa DELETE_CHAR gang7_fa DELETE_CHAR gang10_fa DELETE_CHAR gang11_fa DELETE_CHAR gang13_fa DELETE_CHAR gang14_fa DELETE_CHAR gang15_fa DELETE_CHAR gang16_fa DELETE_CHAR gang17_fa DELETE_CHAR gang18_fa DELETE_CHAR gang19_fa DELETE_CHAR gang20_fa DELETE_OBJECT barrel1_fa DELETE_OBJECT barrel2_fa DELETE_OBJECT barrel3_fa DELETE_OBJECT barrel4_fa MARK_MODEL_AS_NO_LONGER_NEEDED BMYCG MARK_MODEL_AS_NO_LONGER_NEEDED WFYCRK MARK_MODEL_AS_NO_LONGER_NEEDED HMYCM MARK_MODEL_AS_NO_LONGER_NEEDED SFR1 MARK_MODEL_AS_NO_LONGER_NEEDED M4 MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED BARREL4 SET_FIXED_CAMERA_POSITION 2520.2822 -1306.3627 1047.5994 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2520.2996 -1305.3882 1047.8229 JUMP_CUT PRINT_BIG RM4_19 1000 2 //Floor 3: Baller's Lounge WAIT 1000 TASK_GO_STRAIGHT_TO_COORD scplayer 2520.0254 -1301.8455 1047.2891 PEDMOVE_WALK 5000 floor2_faflag = 4 ENDIF ENDIF IF floor2_faflag = 4 IF LOCATE_STOPPED_CHAR_ON_FOOT_2D scplayer 2520.0254 -1301.8455 3.0 3.0 FALSE REQUEST_MODEL BALLAS3 REQUEST_MODEL MAFFA REQUEST_MODEL LSV2 REQUEST_MODEL MICRO_UZI REQUEST_MODEL CHROMEGUN REQUEST_MODEL BFYRI REQUEST_ANIMATION STRIP REQUEST_MODEL SBFYSTR LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED BALLAS3 OR NOT HAS_MODEL_LOADED MAFFA OR NOT HAS_MODEL_LOADED LSV2 OR NOT HAS_MODEL_LOADED MICRO_UZI OR NOT HAS_MODEL_LOADED CHROMEGUN WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED BFYRI OR NOT HAS_ANIMATION_LOADED STRIP OR NOT HAS_MODEL_LOADED SBFYSTR WAIT 0 ENDWHILE CREATE_PICKUP BODYARMOUR PICKUP_ONCE 2520.4 -1281.287 1054.681 armour3_fa WAIT 250 //19 out front security gate CREATE_CHAR PEDTYPE_MISSION1 BALLAS3 2520.891 -1281.763 1053.681 gang19_fa SET_CHAR_HEADING gang19_fa 180.628 SET_CHAR_DECISION_MAKER gang19_fa carter_DM GIVE_WEAPON_TO_CHAR gang19_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang19_fa WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang19_fa 2 gang19_faflag = 0 //1 chatting CREATE_CHAR PEDTYPE_MISSION1 LSV2 2529.8130 -1285.0626 1053.6406 gang1_fa SET_CHAR_HEADING gang1_fa 182.0171 SET_CHAR_DECISION_MAKER gang1_fa carter_DM GIVE_WEAPON_TO_CHAR gang1_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_AREA_VISIBLE gang1_fa 2 SET_CHAR_ACCURACY gang1_fa 50 gang1_faflag = 0 //2 chatting CREATE_CHAR PEDTYPE_MISSION1 BALLAS3 2529.9204 -1286.8298 1053.6406 gang2_fa SET_CHAR_HEADING gang2_fa 358.5364 SET_CHAR_DECISION_MAKER gang2_fa carter_DM GIVE_WEAPON_TO_CHAR gang2_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang2_fa WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang2_fa 2 SET_CHAR_ACCURACY gang2_fa 50 gang2_faflag = 0 TASK_CHAT_WITH_CHAR gang2_fa gang1_fa TRUE TRUE TASK_CHAT_WITH_CHAR gang1_fa gang2_fa FALSE TRUE //hoochie -> cower 2537.7356 -1306.4485 1053.6406 183.9341 CREATE_CHAR PEDTYPE_MISSION1 BFYRI 2537.1504 -1288.1250 1053.6406 hoochie1_fa SET_CHAR_HEADING hoochie1_fa 280.1631 SET_CHAR_DECISION_MAKER hoochie1_fa carter_DM SET_CHAR_HEALTH hoochie1_fa 1 //3 -> 2540.3699 -1280.7904 1053.6470 358.1396 //TASK_TOGGLE_DUCK gang3_fa -1 CREATE_CHAR PEDTYPE_MISSION1 MAFFA 2540.3643 -1287.5535 1053.6470 gang3_fa SET_CHAR_HEADING gang3_fa 89.7930 SET_CHAR_DECISION_MAKER gang3_fa carter_DM GIVE_WEAPON_TO_CHAR gang3_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang3_fa WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang3_fa 2 SET_CHAR_ACCURACY gang3_fa 30 SET_CHAR_HEALTH gang3_fa 200 SET_CHAR_MAX_HEALTH gang3_fa 200 gang3_faflag = 0 CREATE_CHAR PEDTYPE_MISSION1 LSV2 2537.074 -1287.274 1053.681 gang4_fa SET_CHAR_HEADING gang4_fa 265.803 SET_CHAR_DECISION_MAKER gang4_fa carter_DM GIVE_WEAPON_TO_CHAR gang4_fa WEAPONTYPE_SHOTGUN 99999 SET_CHAR_AREA_VISIBLE gang4_fa 2 SET_CHAR_PROOFS gang4_fa FALSE FALSE TRUE FALSE FALSE SET_CHAR_HEALTH gang4_fa 150 SET_CHAR_MAX_HEALTH gang4_fa 150 gang4_faflag = 0 //5 sitting down CREATE_CHAR PEDTYPE_MISSION1 BALLAS3 2542.2263 -1294.3811 1053.6406 gang5_fa SET_CHAR_HEADING gang5_fa 89.8814 SET_CHAR_DECISION_MAKER gang5_fa carter_DM GIVE_WEAPON_TO_CHAR gang5_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang5_fa WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang5_fa 2 TASK_SIT_DOWN gang5_fa 400000 SET_CHAR_ACCURACY gang5_fa 30 SET_CHAR_HEALTH gang5_fa 200 SET_CHAR_MAX_HEALTH gang5_fa 200 gang5_faflag = 0 WAIT 250 //7 stay in same place ducking CREATE_CHAR PEDTYPE_MISSION1 LSV2 2539.4766 -1303.4313 1053.6406 gang7_fa SET_CHAR_HEADING gang7_fa 10.5492 SET_CHAR_DECISION_MAKER gang7_fa carter_DM GIVE_WEAPON_TO_CHAR gang7_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang7_fa WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang7_fa 2 SET_CHAR_HEALTH gang7_fa 150 SET_CHAR_MAX_HEALTH gang7_fa 150 gang7_faflag = 0 //8 stay and shoot ducking CREATE_CHAR PEDTYPE_MISSION1 MAFFA 2533.9622 -1306.9164 1053.6406 gang8_fa SET_CHAR_HEADING gang8_fa 338.7091 SET_CHAR_DECISION_MAKER gang8_fa carter_DM GIVE_WEAPON_TO_CHAR gang8_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang8_fa WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang8_fa 2 SET_CHAR_HEALTH gang8_fa 200 SET_CHAR_MAX_HEALTH gang8_fa 200 gang8_faflag = 0 REMOVE_BLIP carter_fablip ADD_BLIP_FOR_COORD 2579.0 -1284.0 1054.686 carter_fablip SET_BLIP_ENTRY_EXIT carter_fablip 2540.83 -1304.05 1.0 SET_PLAYER_CONTROL PLAYER1 ON SWITCH_WIDESCREEN OFF SET_CHAR_HEADING scplayer 0.0 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER CLEAR_PRINTS PRINT_NOW RM4_21 5000 1 //~s~Make your way to ~y~Floor 4~s~. carter_faflag = 4 floor3_faflag = 1 floor2_faflag = 5 CHECKPOINT_SAVE 1 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////// 3rd Floor //////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF carter_faflag = 4 //first area where there are two guards + guard in security bit IF floor3_faflag = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2520.23 -1293.09 1051.49 6.0 6.0 5.0 FALSE IF gang19_faflag = 0 IF NOT IS_CHAR_DEAD gang19_fa enemy_fa = gang19_fa GOSUB stayshootnoduck_falabel gang19_faflag = 1 ENDIF ENDIF floor3_faflag = 2 ENDIF ENDIF IF floor3_faflag = 2 IF IS_CHAR_IN_AREA_3D scplayer 2522.32 -1293.64 1052.5 2532.41 -1273.44 1055.89 FALSE TIMERA = 0 IF gang2_faflag = 0 IF NOT IS_CHAR_DEAD gang2_fa TASK_KILL_CHAR_ON_FOOT gang2_fa scplayer gang2_faflag = 1 ENDIF ENDIF floor3_faflag = 3 ELSE IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang1_fa scplayer OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang2_fa scplayer IF gang2_faflag = 0 IF NOT IS_CHAR_DEAD gang2_fa TASK_KILL_CHAR_ON_FOOT gang2_fa scplayer gang2_faflag = 1 ENDIF ENDIF floor3_faflag = 3 ENDIF ENDIF ENDIF IF floor3_faflag = 3 IF TIMERA > 250 IF gang1_faflag = 0 IF NOT IS_CHAR_DEAD gang1_fa TASK_KILL_CHAR_ON_FOOT gang1_fa scplayer gang1_faflag = 1 ENDIF ENDIF floor3_faflag = 4 ENDIF ENDIF //the bar area IF floor3_faflag = 4 IF IS_CHAR_IN_AREA_3D scplayer 2530.68 -1306.62 1052.16 2542.05 -1275.19 1057.08 FALSE IF NOT IS_CHAR_DEAD hoochie1_fa enemy_fa = hoochie1_fa enemyx_fa = 2537.7356 enemyy_fa = -1306.4485 enemyz_fa = 1053.6406 GOSUB flee_falable ENDIF IF gang3_faflag = 0 IF NOT IS_CHAR_DEAD gang3_fa TASK_TOGGLE_DUCK gang3_fa -1 enemy_fa = gang3_fa enemyx_fa = 2540.3699 enemyy_fa = -1280.7904 enemyz_fa = 1053.6470 GOSUB runnostay_falabel gang3_faflag = 1 ENDIF ENDIF IF gang4_faflag = 0 IF NOT IS_CHAR_DEAD gang4_fa TASK_KILL_CHAR_ON_FOOT gang4_fa scplayer gang4_faflag = 1 ENDIF ENDIF IF gang5_faflag = 0 IF NOT IS_CHAR_DEAD gang5_fa TASK_KILL_CHAR_ON_FOOT gang5_fa scplayer gang5_faflag = 1 ENDIF ENDIF IF gang7_faflag = 0 IF NOT IS_CHAR_DEAD gang7_fa enemy_fa = gang7_fa GOSUB stayshoot_falabel gang7_faflag = 1 ENDIF ENDIF IF gang8_faflag = 0 IF NOT IS_CHAR_DEAD gang8_fa enemy_fa = gang8_fa GOSUB stayshootnoduck_falabel gang8_faflag = 1 ENDIF ENDIF floor3_faflag = 5 ENDIF ENDIF IF floor3_faflag = 5 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2537.78 -1298.62 1055.1 5.0 5.0 5.0 FALSE //6 run to then kill normally but ducking -> 2545.2378 -1291.7911 1053.6406 359.7367 shotgun CREATE_CHAR PEDTYPE_MISSION1 MAFFA 2545.1926 -1302.5448 1053.6470 gang6_fa SET_CHAR_HEADING gang6_fa 359.6221 SET_CHAR_DECISION_MAKER gang6_fa carter_DM GIVE_WEAPON_TO_CHAR gang6_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang6_fa WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang6_fa 2 SET_CHAR_HEALTH gang6_fa 150 SET_CHAR_MAX_HEALTH gang6_fa 150 TASK_TOGGLE_DUCK gang6_fa -1 gang6_faflag = 0 //9 stay in same place uzi double CREATE_CHAR PEDTYPE_MISSION1 BALLAS3 2548.8081 -1288.9451 1053.6406 gang9_fa SET_CHAR_HEADING gang9_fa 168.1978 SET_CHAR_DECISION_MAKER gang9_fa carter_DM GIVE_WEAPON_TO_CHAR gang9_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang9_fa WEAPONSKILL_PRO SET_CHAR_ACCURACY gang9_fa 50 SET_CHAR_AREA_VISIBLE gang9_fa 2 SET_CHAR_HEALTH gang9_fa 150 SET_CHAR_MAX_HEALTH gang9_fa 150 gang9_faflag = 0 //11 and 12 chat 11 runs to coord then kill normally 12 runs to coords then stay still //11 run and kill -> 2553.8767 -1292.1445 1053.6470 CREATE_CHAR PEDTYPE_MISSION1 LSV2 2548.2112 -1293.4908 1053.6406 gang11_fa SET_CHAR_HEADING gang11_fa 177.2480 SET_CHAR_DECISION_MAKER gang11_fa carter_DM GIVE_WEAPON_TO_CHAR gang11_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang11_fa WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang11_fa 2 SET_CHAR_HEALTH gang11_fa 150 SET_CHAR_MAX_HEALTH gang11_fa 150 SET_CHAR_ACCURACY gang11_fa 30 gang11_faflag = 0 //12 run2stay //-> 2553.2173 -1296.9026 1053.6470 274.2116 //-> 2557.1714 -1296.6177 1053.6406 274.1124 CREATE_CHAR PEDTYPE_MISSION1 BALLAS3 2548.4727 -1295.8341 1053.6470 gang12_fa SET_CHAR_HEADING gang12_fa 6.5626 SET_CHAR_DECISION_MAKER gang12_fa carter_DM GIVE_WEAPON_TO_CHAR gang12_fa WEAPONTYPE_SHOTGUN 99999 SET_CHAR_ACCURACY gang12_fa 30 SET_CHAR_AREA_VISIBLE gang12_fa 2 SET_CHAR_HEALTH gang12_fa 150 SET_CHAR_MAX_HEALTH gang12_fa 150 gang12_faflag = 0 //kill normally CREATE_CHAR PEDTYPE_MISSION1 BALLAS3 2568.735 -1294.134 1053.681 gang18_fa SET_CHAR_HEADING gang18_fa 270.3791 SET_CHAR_DECISION_MAKER gang18_fa carter_DM GIVE_WEAPON_TO_CHAR gang18_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang18_fa WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang18_fa 2 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang18_fa TRUE SET_CHAR_HEALTH gang18_fa 150 SET_CHAR_MAX_HEALTH gang18_fa 150 gang18_faflag = 0 //wall huggers //10 CREATE_CHAR PEDTYPE_MISSION1 BALLAS3 2571.7 -1294.298 1053.680 gang10_fa SET_CHAR_HEADING gang10_fa 90.0 SET_CHAR_DECISION_MAKER gang10_fa carter_DM GIVE_WEAPON_TO_CHAR gang10_fa WEAPONTYPE_SHOTGUN 99999 SET_CHAR_AREA_VISIBLE gang10_fa 2 gang10_faflag = 0 //13 CREATE_CHAR PEDTYPE_MISSION1 MAFFA 2571.8015 -1289.5913 1053.6406 gang13_fa SET_CHAR_HEADING gang13_fa 90.3346 SET_CHAR_DECISION_MAKER gang13_fa carter_DM GIVE_WEAPON_TO_CHAR gang13_fa WEAPONTYPE_SHOTGUN 99999 SET_CHAR_ACCURACY gang13_fa 50 SET_CHAR_AREA_VISIBLE gang13_fa 2 SET_CHAR_HEALTH gang13_fa 150 SET_CHAR_MAX_HEALTH gang13_fa 150 gang13_faflag = 0 floor3_faflag = 6 ENDIF ENDIF //hallway IF floor3_faflag = 6 IF IS_CHAR_IN_AREA_3D scplayer 2543.87 -1308.98 1050.78 2553.03 -1276.55 1059.5 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer 2543.88 -1304.9 1053.81 3.0 3.0 3.0 FALSE DELETE_CHAR gang19_fa DELETE_CHAR gang1_fa DELETE_CHAR gang2_fa IF gang6_faflag = 0 IF NOT IS_CHAR_DEAD gang6_fa TASK_TOGGLE_DUCK gang6_fa -1 enemy_fa = gang6_fa enemyx_fa = 2545.2378 enemyy_fa = -1291.7911 enemyz_fa = 1053.6406 GOSUB runnostay_falabel gang6_faflag = 1 ENDIF ENDIF //9 stay in same place uzi double IF gang9_faflag = 0 IF NOT IS_CHAR_DEAD gang9_fa enemy_fa = gang9_fa GOSUB stayshootnoduck_falabel gang9_faflag = 1 ENDIF ENDIF IF gang11_faflag = 0 IF NOT IS_CHAR_DEAD gang11_fa enemy_fa = gang11_fa enemyx_fa = 2553.8767 enemyy_fa = -1292.1445 enemyz_fa = 1053.6470 GOSUB runnostay_falabel gang11_faflag = 1 ENDIF ENDIF IF gang12_faflag = 0 IF NOT IS_CHAR_DEAD gang12_fa enemy_fa = gang12_fa enemyx_fa = 2553.2173 enemyy_fa = -1296.9026 enemyz_fa = 1053.6470 enemyx2_fa = 2557.1714 enemyy2_fa = -1296.6177 enemyz2_fa = 1053.6406 GOSUB run2shoot_falabel gang12_faflag = 1 ENDIF ENDIF IF gang18_faflag = 0 IF NOT IS_CHAR_DEAD gang18_fa TASK_KILL_CHAR_ON_FOOT gang18_fa scplayer gang18_faflag = 1 ENDIF ENDIF IF gang10_faflag = 0 IF NOT IS_CHAR_DEAD gang10_fa enemy_fa = gang10_fa enemyx_fa = 2571.7 enemyy_fa = -1294.298 enemyz_fa = 1053.680 shootimer_s4 = 1200 heading_fa = 90.0 GOSUB peekright_falabel gang10_faflag = 1 ENDIF ENDIF IF gang13_faflag = 0 IF NOT IS_CHAR_DEAD gang13_fa enemy_fa = gang13_fa enemyx_fa = 2571.8015 enemyy_fa = -1289.5913 enemyz_fa = 1053.6406 shootimer_s4 = 2000 heading_fa = 90.0 GOSUB peekright_falabel gang13_faflag = 1 ENDIF ENDIF floor3_faflag = 7 ENDIF ENDIF //guys coming out of door IF floor3_faflag = 7 IF IS_CHAR_IN_AREA_3D scplayer 2544.0 -1298.31 1051.84 2577.11 -1278.61 1057.06 FALSE DELETE_CHAR hoochie1_fa DELETE_CHAR gang4_fa DELETE_CHAR gang5_fa DELETE_CHAR gang7_fa DELETE_CHAR gang8_fa //14 -> 2561.0762 -1295.2528 1053.6470 kill normally dual uzi CREATE_CHAR PEDTYPE_MISSION1 MAFFA 2561.1443 -1302.8541 1053.6406 gang14_fa SET_CHAR_HEADING gang14_fa 357.9032 SET_CHAR_DECISION_MAKER gang14_fa carter_DM GIVE_WEAPON_TO_CHAR gang14_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang14_fa WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang14_fa 2 SET_CHAR_HEALTH gang14_fa 200 SET_CHAR_MAX_HEALTH gang14_fa 200 SET_CHAR_ACCURACY gang14_fa 40 gang14_faflag = 0 IF gang14_faflag = 0 IF NOT IS_CHAR_DEAD gang14_fa TASK_TOGGLE_DUCK gang14_fa -1 enemy_fa = gang14_fa enemyx_fa = 2561.0762 enemyy_fa = -1295.2528 enemyz_fa = 1053.6470 GOSUB runnostay_falabel gang14_faflag = 1 ENDIF ENDIF //15 ->2561.2412 -1292.8021 1053.6470 180.8039 kill normally dual uzi CREATE_CHAR PEDTYPE_MISSION1 MAFFA 2561.1284 -1284.6572 1053.6406 gang15_fa SET_CHAR_HEADING gang15_fa 180.8092 SET_CHAR_DECISION_MAKER gang15_fa carter_DM GIVE_WEAPON_TO_CHAR gang15_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang15_fa WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang15_fa 2 SET_CHAR_ACCURACY gang15_fa 40 SET_CHAR_HEALTH gang15_fa 150 SET_CHAR_MAX_HEALTH gang15_fa 150 gang15_faflag = 0 IF gang15_faflag = 0 IF NOT IS_CHAR_DEAD gang15_fa enemy_fa = gang15_fa enemyx_fa = 2561.2412 enemyy_fa = -1292.8021 enemyz_fa = 1053.6470 GOSUB runnostay_falabel gang15_faflag = 1 ENDIF ENDIF floor3_faflag = 8 ENDIF ENDIF IF leftroom_faflag = 0 IF IS_CHAR_IN_AREA_3D scplayer 2556.98 -1298.58 1052.0 2569.69 -1035.12 1056.21 FALSE CREATE_PICKUP HEALTH PICKUP_ONCE 2552.298 -1306.06 1054.681 health3_fa //17 stay in same place ducking and shoot CREATE_CHAR PEDTYPE_MISSION1 MAFFA 2566.716 -1305.75 1053.681 gang17_fa SET_CHAR_HEADING gang17_fa 4.514 SET_CHAR_DECISION_MAKER gang17_fa carter_DM GIVE_WEAPON_TO_CHAR gang17_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_ACCURACY gang17_fa 70 SET_CHAR_AREA_VISIBLE gang17_fa 2 gang17_faflag = 1 TASK_KILL_CHAR_ON_FOOT gang17_fa scplayer CREATE_CHAR PEDTYPE_MISSION1 SBFYSTR 2557.0718 -1302.7988 1053.8751 hoochie3_fa SET_CHAR_HEADING hoochie3_fa 53.1978 SET_CHAR_DECISION_MAKER hoochie3_fa carter_DM SET_CHAR_HEALTH hoochie3_fa 5 TASK_PLAY_ANIM hoochie3_fa STRIP_E STRIP 8.0 TRUE TRUE TRUE FALSE -1 leftroom_faflag = 1 ENDIF ENDIF IF rightroom_faflag = 0 IF IS_CHAR_IN_AREA_3D scplayer 2558.94 -1290.24 1052.74 2568.72 -1283.56 1057.43 FALSE //16 stay in same place ducking and shoot CREATE_PICKUP BODYARMOUR PICKUP_ONCE 2552.475 -1280.687 1054.686 armour4_fa CREATE_CHAR PEDTYPE_MISSION1 MAFFA 2567.987 -1281.41 1053.687 gang16_fa SET_CHAR_HEADING gang16_fa 178.685 SET_CHAR_DECISION_MAKER gang16_fa carter_DM GIVE_WEAPON_TO_CHAR gang16_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_ACCURACY gang16_fa 30 SET_CHAR_AREA_VISIBLE gang16_fa 2 gang16_faflag = 1 TASK_KILL_CHAR_ON_FOOT gang16_fa scplayer CREATE_CHAR PEDTYPE_MISSION1 SBFYSTR 2557.8174 -1285.2181 1053.8762 hoochie4_fa SET_CHAR_HEADING hoochie4_fa 288.0473 SET_CHAR_DECISION_MAKER hoochie4_fa carter_DM SET_CHAR_HEALTH hoochie4_fa 5 TASK_PLAY_ANIM hoochie4_fa STRIP_A STRIP 8.0 TRUE TRUE TRUE FALSE -1 rightroom_faflag = 1 ENDIF ENDIF //mark as no longer needed IF gang10_faflag = 1 IF NOT IS_CHAR_DEAD gang10_fa IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang10_fa scplayer IF NOT IS_CHAR_DEAD gang10_fa OR LOCATE_CHAR_ANY_MEANS_CHAR_3D gang10_fa scplayer 5.0 5.0 3.0 FALSE TASK_KILL_CHAR_ON_FOOT gang10_fa scplayer gang10_faflag = 2 ELSE MARK_CHAR_AS_NO_LONGER_NEEDED gang10_fa gang10_faflag = 2 ENDIF ENDIF ENDIF ENDIF IF gang13_faflag = 1 IF NOT IS_CHAR_DEAD gang13_fa IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang13_fa scplayer OR LOCATE_CHAR_ANY_MEANS_CHAR_3D gang13_fa scplayer 5.0 5.0 3.0 FALSE IF NOT IS_CHAR_DEAD gang13_fa TASK_KILL_CHAR_ON_FOOT gang13_fa scplayer gang13_faflag = 2 ELSE MARK_CHAR_AS_NO_LONGER_NEEDED gang13_fa gang13_faflag = 2 ENDIF ENDIF ENDIF ENDIF IF gang1_faflag = 1 IF IS_CHAR_DEAD gang1_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang1_fa firstfloorcounter_fa++ gang1_faflag = 2 ENDIF ENDIF IF gang3_faflag = 1 IF IS_CHAR_DEAD gang3_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang3_fa firstfloorcounter_fa++ gang3_faflag = 2 ENDIF ENDIF IF gang4_faflag = 1 IF IS_CHAR_DEAD gang4_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang4_fa firstfloorcounter_fa++ gang4_faflag = 2 ENDIF ENDIF IF gang5_faflag = 1 IF IS_CHAR_DEAD gang5_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang5_fa firstfloorcounter_fa++ gang5_faflag = 2 ENDIF ENDIF IF gang6_faflag = 1 IF IS_CHAR_DEAD gang6_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang6_fa firstfloorcounter_fa++ gang6_faflag = 2 ENDIF ENDIF IF gang7_faflag = 1 IF IS_CHAR_DEAD gang7_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang7_fa firstfloorcounter_fa++ gang7_faflag = 3 ENDIF ENDIF IF gang8_faflag = 1 IF IS_CHAR_DEAD gang8_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang8_fa firstfloorcounter_fa++ gang8_faflag = 2 ENDIF ENDIF IF gang10_faflag = 1 OR gang10_faflag = 2 IF IS_CHAR_DEAD gang10_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang10_fa firstfloorcounter_fa++ gang10_faflag = 3 ENDIF ENDIF IF gang11_faflag = 1 IF IS_CHAR_DEAD gang11_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang11_fa firstfloorcounter_fa++ gang11_faflag = 2 ENDIF ENDIF IF gang12_faflag = 1 IF IS_CHAR_DEAD gang12_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang12_fa firstfloorcounter_fa++ gang12_faflag = 2 ENDIF ENDIF IF gang13_faflag = 1 OR gang13_faflag = 2 IF IS_CHAR_DEAD gang13_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang13_fa firstfloorcounter_fa++ gang13_faflag = 3 ENDIF ENDIF IF gang14_faflag = 1 IF IS_CHAR_DEAD gang14_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang14_fa secondfloorcounter_fa++ gang14_faflag = 2 ENDIF ENDIF IF gang15_faflag = 1 IF IS_CHAR_DEAD gang15_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang15_fa secondfloorcounter_fa++ gang15_faflag = 2 ENDIF ENDIF IF gang16_faflag = 1 IF IS_CHAR_DEAD gang16_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang16_fa secondfloorcounter_fa++ gang16_faflag = 2 ENDIF ENDIF IF gang17_faflag = 1 IF IS_CHAR_DEAD gang17_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang17_fa secondfloorcounter_fa++ gang17_faflag = 2 ENDIF ENDIF IF gang18_faflag = 1 IF IS_CHAR_DEAD gang18_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang18_fa secondfloorcounter_fa++ gang18_faflag = 2 ENDIF ENDIF IF gang19_faflag = 1 IF IS_CHAR_DEAD gang19_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang19_fa secondfloorcounter_fa++ gang19_faflag = 2 ENDIF ENDIF IF floor3_faflag = 8 IF IS_CHAR_IN_AREA_3D scplayer 2577.43 -1281.21 1050.83 2584.7 -1291.47 1055.35 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer 2579.82 -1284.91 1054.12 3.0 3.0 3.0 FALSE PRINT_NOW RM4_24 5000 1//~s~Go get ~r~Big Smoke~s~. REMOVE_BLIP carter_fablip ADD_BLIP_FOR_COORD 2550.74 -1285.02 1060.62 carter_fablip SET_BLIP_ENTRY_EXIT carter_fablip 2540.83 -1304.05 1.0 floor3_faflag = 9 ENDIF ENDIF IF floor3_faflag = 9 IF IS_CHAR_IN_AREA_3D scplayer 2577.46 -1306.59 1058.27 2571.97 -1275.1 1063.08 FALSE OR LOCATE_CHAR_ANY_MEANS_3D scplayer 2575.4 -1300.35 1061.016 3.0 3.0 3.0 FALSE REMOVE_BLIP carter_fablip DELETE_CHAR hoochie3_fa DELETE_CHAR hoochie4_fa DELETE_CHAR gang1_fa DELETE_CHAR gang2_fa DELETE_CHAR gang3_fa DELETE_CHAR gang4_fa DELETE_CHAR gang5_fa DELETE_CHAR gang6_fa DELETE_CHAR gang7_fa DELETE_CHAR gang8_fa DELETE_CHAR gang9_fa DELETE_CHAR gang10_fa DELETE_CHAR gang11_fa DELETE_CHAR gang12_fa DELETE_CHAR gang13_fa DELETE_CHAR gang14_fa DELETE_CHAR gang15_fa DELETE_CHAR gang16_fa DELETE_CHAR gang17_fa DELETE_CHAR gang18_fa DELETE_CHAR gang19_fa DELETE_CHAR gang20_fa SET_PLAYER_CONTROL PLAYER1 OFF //Smokes room in Carter block SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 2 LOAD_CUTSCENE RIOT_4c WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS3 MARK_MODEL_AS_NO_LONGER_NEEDED MAFFA MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_MODEL_AS_NO_LONGER_NEEDED BFYRI REMOVE_ANIMATION STRIP REMOVE_ANIMATION SWAT MARK_MODEL_AS_NO_LONGER_NEEDED SBFYSTR REQUEST_MODEL LSV2 REQUEST_MODEL BALLAS1 REQUEST_MODEL SFR1 REQUEST_MODEL AK47 REQUEST_MODEL IRGOGGLES LOAD_SPECIAL_CHARACTER 2 SMOKEV LOAD_ALL_MODELS_NOW WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 2 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED LSV2 OR NOT HAS_MODEL_LOADED BALLAS1 OR NOT HAS_MODEL_LOADED SFR1 OR NOT HAS_MODEL_LOADED AK47 OR NOT HAS_MODEL_LOADED IRGOGGLES WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_SPECIAL SPECIAL02 2549.918 -1284.457 1060.0165 big_smoke SET_CHAR_HEADING big_smoke 250.566 SET_CHAR_DECISION_MAKER big_smoke carter_DM GIVE_WEAPON_TO_CHAR big_smoke WEAPONTYPE_AK47 999999 SET_CHAR_ACCURACY big_smoke 70 SET_CHAR_BULLETPROOF_VEST big_smoke TRUE SET_CHAR_HEALTH big_smoke 10000 SET_CHAR_MAX_HEALTH big_smoke 2000//1000 SET_CHAR_SUFFERS_CRITICAL_HITS big_smoke FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER big_smoke TRUE ADD_BLIP_FOR_CHAR big_smoke smoke_fablip SET_CHAR_HAS_USED_ENTRY_EXIT big_smoke 2540.83 -1304.05 1.0 SET_FOLLOW_NODE_THRESHOLD_DISTANCE big_smoke 2.0 SET_CHAR_AREA_VISIBLE big_smoke 2 DISPLAY_ONSCREEN_COUNTER_WITH_STRING smokehealth_fa COUNTER_DISPLAY_BAR RM4_39 SET_CHAR_USES_UPPERBODY_DAMAGE_ANIMS_ONLY big_smoke TRUE SET_CHAR_COORDINATES scplayer 2564.447 -1292.822 1060.016 //2565.355 -1292.374 1061.016 SET_CHAR_HEADING scplayer 58.5 REMOVE_PICKUP armour1_fa REMOVE_PICKUP armour2_fa REMOVE_PICKUP armour3_fa REMOVE_PICKUP armour4_fa REMOVE_PICKUP health1_fa REMOVE_PICKUP health2_fa REMOVE_PICKUP health3_fa CREATE_PICKUP HEALTH PICKUP_ONCE 2582.848 -1282.741 1065.391 health1_fa CREATE_PICKUP HEALTH PICKUP_ONCE 2578.784 -1282.572 1065.40 health2_fa CREATE_PICKUP_WITH_AMMO IRGOGGLES PICKUP_ONCE 1 2575.03 -1281.598 1061.02 irgoggles_fa CREATE_PICKUP BODYARMOUR PICKUP_ONCE 2549.429 -1291.612 1061.024 armour1_fa CREATE_PICKUP_WITH_AMMO M4 PICKUP_ON_STREET 60 2549.632 -1294.612 1061.024 m4pickup_fa CREATE_PICKUP_WITH_AMMO CHROMEGUN PICKUP_ON_STREET 60 2552.09 -1294.106 1061.024 shotgunpickup_fa LOAD_SCENE 2552.31 -1286.25 1061.04 SET_TIME_OF_DAY 22 00 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL PLAYER1 ON progressaudio_faflag = 0 handlingudio_faflag = 0 bossbattleaudio_faflag = 1 PRINT_HELP RM4_28 //Smoke is wearing a bullet proof vest to maximise the damage you inflict on him aim at other parts of his body. floor3_faflag = 10 carter_faflag = 5 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////// Boss Battle with Smoke /////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF carter_faflag = 5 IF NOT IS_CHAR_DEAD big_smoke IF bossbattle_faflag = 0 TASK_KILL_CHAR_ON_FOOT big_smoke scplayer smoke_can_kill_player_fa = FALSE CREATE_CHAR PEDTYPE_MISSION1 SFR1 2554.729 -1281.952 1060.024 gang5_fa SET_CHAR_HEADING gang5_fa 180.771 SET_CHAR_DECISION_MAKER gang5_fa carter_DM GIVE_WEAPON_TO_CHAR gang5_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang5_fa WEAPONSKILL_PRO TASK_TOGGLE_DUCK gang5_fa -1 SET_CHAR_HEALTH gang5_fa 200 SET_CHAR_MAX_HEALTH gang5_fa 200 enemy_fa = gang5_fa enemyx_fa = 2554.46 enemyy_fa = -1284.412 enemyz_fa = 1061.024 GOSUB runnostay_falabel gang5_faflag = 1 CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2551.236 -1292.18 1060.02 gang4_fa SET_CHAR_HEADING gang4_fa 6.0 SET_CHAR_DECISION_MAKER gang4_fa carter_DM GIVE_WEAPON_TO_CHAR gang4_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang4_fa WEAPONSKILL_PRO SET_CHAR_HEALTH gang4_fa 200 SET_CHAR_MAX_HEALTH gang4_fa 200 enemy_fa = gang4_fa enemyx_fa = 2551.259 enemyy_fa = -1288.081 enemyz_fa = 1061.02 GOSUB runnostay_falabel gang4_faflag = 1 TIMERA = 0 TIMERB = 0 bossbattle_faflag = 1 ENDIF //spawning guys IF bossbattle_faflag = 1 IF TIMERB > 6000 //armoury IF gang1_faflag = 0 IF NOT IS_POINT_ON_SCREEN 2551.2 -1291.727 1060.02 5.0 CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2551.2 -1291.727 1060.02 gang1_fa SET_CHAR_HEADING gang1_fa 0.0 SET_CHAR_DECISION_MAKER gang1_fa carter_DM GIVE_WEAPON_TO_CHAR gang1_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang1_fa WEAPONSKILL_PRO TASK_KILL_CHAR_ON_FOOT gang1_fa scplayer SET_CHAR_ACCURACY gang1_fa 30 SET_CHAR_HEALTH gang1_fa 200 SET_CHAR_MAX_HEALTH gang1_fa 200 gang1_faflag = 1 ENDIF ENDIF //bathroom IF gang2_faflag = 0 IF NOT IS_POINT_ON_SCREEN 2579.04 -1284.275 1064.4 5.0 CREATE_CHAR PEDTYPE_MISSION1 LSV2 2579.04 -1284.275 1064.4 gang2_fa SET_CHAR_HEADING gang2_fa 0.0 SET_CHAR_DECISION_MAKER gang2_fa carter_DM GIVE_WEAPON_TO_CHAR gang2_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang2_fa WEAPONSKILL_PRO TASK_KILL_CHAR_ON_FOOT gang2_fa scplayer SET_CHAR_HEALTH gang2_fa 150 SET_CHAR_MAX_HEALTH gang2_fa 150 gang2_faflag = 1 ENDIF ENDIF //door IF gang3_faflag = 0 IF NOT IS_POINT_ON_SCREEN 2576.94 -1300.388 1060.016 1.0 CREATE_CHAR PEDTYPE_MISSION1 SFR1 2576.94 -1300.388 1060.016 gang3_fa SET_CHAR_HEADING gang3_fa 0.0 SET_CHAR_DECISION_MAKER gang3_fa carter_DM GIVE_WEAPON_TO_CHAR gang3_fa WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang3_fa WEAPONSKILL_PRO TASK_KILL_CHAR_ON_FOOT gang3_fa scplayer SET_CHAR_ACCURACY gang3_fa 30 SET_CHAR_HEALTH gang3_fa 200 SET_CHAR_MAX_HEALTH gang3_fa 200 gang3_faflag = 1 ENDIF ENDIF IF gang1_faflag = 1 OR gang2_faflag = 1 OR gang3_faflag = 1 TIMERB = 0 bossbattle_faflag = 2 ENDIF ENDIF ENDIF IF bossbattle_faflag = 2 //armoury IF gang1_faflag = 1 IF IS_CHAR_DEAD gang1_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang1_fa bossbattle_faflag = 1 gang1_faflag = 0 ENDIF ENDIF //bathroom IF gang2_faflag = 1 IF IS_CHAR_DEAD gang2_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang2_fa bossbattle_faflag = 1 gang2_faflag = 0 ENDIF ENDIF //door IF gang3_faflag = 1 IF IS_CHAR_DEAD gang3_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang3_fa bossbattle_faflag = 1 gang3_faflag = 0 ENDIF ENDIF IF gang4_faflag = 1 IF IS_CHAR_DEAD gang4_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang4_fa //bossbattle_faflag = 1 gang4_faflag = 0 ENDIF ENDIF IF gang5_faflag = 1 IF IS_CHAR_DEAD gang5_fa MARK_CHAR_AS_NO_LONGER_NEEDED gang5_fa //bossbattle_faflag = 1 gang5_faflag = 0 ENDIF ENDIF ENDIF /////////////////////////////////////////////// check to stop ped already has this script command IF smoke_can_kill_player_fa = FALSE GET_SCRIPT_TASK_STATUS big_smoke TASK_KILL_CHAR_ON_FOOT smoke_progress_fa IF smoke_progress_fa = FINISHED_TASK smoke_can_kill_player_fa = TRUE ENDIF ENDIF /////////////////////////////////////////////////// //start smoke IF smokerun_faflag = 0 IF tellsmoke_faflag = 0 IF TIMERA > 1000 TIMERA = 10000 tellsmoke_faflag = 1 smokerun_faflag = 1 ENDIF ENDIF ENDIF //up stairs IF smokerun_faflag = 1 IF tellsmoke_faflag = 1 IF TIMERA > 5999 IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2564.242 -1282.221 1064.41 3.5 3.5 3.0 FALSE TASK_FOLLOW_PATH_NODES_TO_COORD big_smoke 2564.242 -1282.221 1064.41 PEDMOVE_RUN 20000 tellsmoke_faflag = 2 ELSE smokerun_faflag = 3 //at beginning runs to the kitchen ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D big_smoke scplayer 3.0 3.0 1.5 FALSE smokerun_faflag = 2 //at beginning runs to the kitchen TIMERA = 10000 ENDIF ENDIF ENDIF ENDIF IF smokerun_faflag = 1 IF LOCATE_CHAR_ANY_MEANS_3D big_smoke 2564.242 -1282.221 1064.41 3.5 3.5 3.0 FALSE IF smoke_can_kill_player_fa = TRUE TASK_KILL_CHAR_ON_FOOT big_smoke scplayer smoke_can_kill_player_fa = FALSE ENDIF TIMERA = 0 tellsmoke_faflag = 1 smokerun_faflag = 2 ENDIF ENDIF //bottom of stairs IF smokerun_faflag = 2 IF tellsmoke_faflag = 1 IF TIMERA > 4999 IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2575.35 -1295.873 1061.85 5.5 5.5 3.5 FALSE TASK_FOLLOW_PATH_NODES_TO_COORD big_smoke 2575.35 -1295.873 1061.85 PEDMOVE_RUN 20000 tellsmoke_faflag = 2 ELSE smokerun_faflag = 4 //at stairs runs back down ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D big_smoke scplayer 3.0 3.0 1.5 FALSE smokerun_faflag = 4 //at stairs runs back down TIMERA = 10000 ENDIF ENDIF ENDIF ENDIF IF smokerun_faflag = 2 IF LOCATE_CHAR_ANY_MEANS_3D big_smoke 2575.35 -1295.873 1061.85 3.5 3.5 3.0 FALSE IF smoke_can_kill_player_fa = TRUE TASK_KILL_CHAR_ON_FOOT big_smoke scplayer smoke_can_kill_player_fa = FALSE ENDIF TIMERA = 0 tellsmoke_faflag = 1 smokerun_faflag = 3 ENDIF ENDIF //kitchen IF smokerun_faflag = 3 IF tellsmoke_faflag = 1 IF TIMERA > 4999 IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2558.181 -1303.748 1061.024 6.0 6.0 3.5 FALSE TASK_FOLLOW_PATH_NODES_TO_COORD big_smoke 2558.181 -1303.748 1061.024 PEDMOVE_RUN 200000 tellsmoke_faflag = 2 ELSE smokerun_faflag = 1 //at bottom stairs runs back up ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D big_smoke scplayer 3.0 3.0 1.5 FALSE smokerun_faflag = 1 //at stairs runs back down TIMERA = 10000 ENDIF ENDIF ENDIF ENDIF IF smokerun_faflag = 3 IF LOCATE_CHAR_ANY_MEANS_3D big_smoke 2558.181 -1303.748 1061.024 3.5 3.5 3.0 FALSE IF smoke_can_kill_player_fa = TRUE TASK_KILL_CHAR_ON_FOOT big_smoke scplayer smoke_can_kill_player_fa = FALSE ENDIF TIMERA = 0 tellsmoke_faflag = 1 smokerun_faflag = 4 ENDIF ENDIF //near beginning IF smokerun_faflag = 4 IF tellsmoke_faflag = 1 IF TIMERA > 5999 IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2553.233 -1282.609 1061.024 4.0 4.0 3.5 FALSE TASK_FOLLOW_PATH_NODES_TO_COORD big_smoke 2553.233 -1282.609 1061.024 PEDMOVE_RUN 20000 tellsmoke_faflag = 2 ELSE smokerun_faflag = 2 //at kitchen run to bottom of stairs ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_3D big_smoke scplayer 3.0 3.0 1.5 FALSE smokerun_faflag = 2 //at stairs runs back down TIMERA = 10000 ENDIF ENDIF ENDIF ENDIF IF smokerun_faflag = 4 IF LOCATE_CHAR_ANY_MEANS_3D big_smoke 2553.233 -1282.609 1061.024 4.0 4.0 3.0 FALSE IF smoke_can_kill_player_fa = TRUE TASK_KILL_CHAR_ON_FOOT big_smoke scplayer smoke_can_kill_player_fa = FALSE ENDIF TIMERA = 0 tellsmoke_faflag = 1 smokerun_faflag = 1 ENDIF ENDIF IF NOT IS_CHAR_DEAD big_smoke GET_CHAR_HEALTH big_smoke smokehealth_fa smokehealth_fa = smokehealth_fa - 8000 //8000 smokehealth_fa = smokehealth_fa / 20 IF smokehealth_fa <= 0 smokehealth_fa = 0 ENDIF IF switch_faflag = 0 IF smokehealth_fa < 80 lightsout_faflag = 1 SET_DARKNESS_EFFECT TRUE 200 switch_faflag = 1 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD big_smoke GET_CHAR_HEALTH big_smoke healthforsmoke_fa IF healthforsmoke_fa <= 8000//9100 //8000 smokehealth_fa = 0 TASK_DIE big_smoke SET_DARKNESS_EFFECT FALSE -1 SET_INFRARED_VISION FALSE CLEAR_ONSCREEN_COUNTER smokehealth_fa // CHANGE THIS CHANGE THIS CHANGE THIS CHANGE THIS CHANGE THISCHANGE THIS CHANGE THIS CHANGE THIS CHANGE THIS CHANGE THISCHANGE THIS CHANGE THIS CHANGE THIS CHANGE THIS CHANGE THIS SET_PLAYER_CONTROL PLAYER1 OFF GET_CHAR_COORDINATES scplayer player_x player_y player_z CLEAR_AREA player_x player_y 100.0 100.0 TRUE IF NOT IS_CHAR_DEAD gang1_fa TASK_DIE gang1_fa ENDIF IF NOT IS_CHAR_DEAD gang2_fa TASK_DIE gang2_fa ENDIF IF NOT IS_CHAR_DEAD gang3_fa TASK_DIE gang3_fa ENDIF IF NOT IS_CHAR_DEAD gang4_fa TASK_DIE gang4_fa ENDIF IF NOT IS_CHAR_DEAD gang5_fa TASK_DIE gang5_fa ENDIF TIMERA = 0 TIMERB = 0 CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS bossbattleaudio_faflag = 2 DO_FADE 2500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_finaleA_passed // CHANGE THIS CHANGE THIS CHANGE THIS CHANGE THIS CHANGE THISCHANGE THIS CHANGE THIS CHANGE THIS CHANGE THIS CHANGE THISCHANGE THIS CHANGE THIS CHANGE THIS CHANGE THIS CHANGE THIS TIMERA = 0 ENDIF ENDIF IF switch_faflag = 1 IF irgoggles_faflag = 0 IF HAS_PICKUP_BEEN_COLLECTED irgoggles_fa PRINT_HELP RM4_36 //~s~Use the thermal vision to spot ~r~Smoke ~s~and his goons easier. irgoggles_faflag = 3 ELSE ADD_BLIP_FOR_PICKUP irgoggles_fa irgoggles_fablip SET_BLIP_ENTRY_EXIT irgoggles_fablip 2540.83 -1304.05 1.0 PRINT_NOW RM4_31 7000 1 //~s~Smoke has switched the lights off go get the ~y~thermal goggles ~s~by the tv. irgoggles_faflag = 1 ENDIF ENDIF IF irgoggles_faflag = 1 IF HAS_PICKUP_BEEN_COLLECTED irgoggles_fa REMOVE_BLIP irgoggles_fablip PRINT_HELP RM4_36 //~s~Use the thermal vision to spot ~r~Smoke ~s~and his goons easier. irgoggles_faflag = 2 ENDIF ENDIF ENDIF //audio IF bossbattleaudio_faflag = 1 GOSUB process_audio_fa //play mission audio IF progressaudio_faflag = 0 IF handlingudio_faflag = 0 audio_label_fa = SOUND_ROT4_UA //You wearing body armour, Smoke? $input_text_fa = ROT4_UA //You wearing body armour, Smoke? GOSUB load_audio_fa ENDIF ENDIF IF progressaudio_faflag = 1 IF handlingudio_faflag = 0 audio_label_fa = SOUND_ROT4_UB //Man, I’m disappointed in you – thought you were gangsta! $input_text_fa = ROT4_UB //Man, I’m disappointed in you – thought you were gangsta! GOSUB load_audio_fa ENDIF ENDIF IF progressaudio_faflag = 2 IF handlingudio_faflag = 0 audio_label_fa = SOUND_ROT4_UC //Hey, I’m a motherfucking celebrity. $input_text_fa = ROT4_UC //Hey, I’m a motherfucking celebrity. GOSUB load_audio_fa ENDIF ENDIF IF progressaudio_faflag = 3 IF handlingudio_faflag = 0 audio_label_fa = SOUND_ROT4_UD //All kinds of crazy cats out there want a piece of me! $input_text_fa = ROT4_UD //All kinds of crazy cats out there want a piece of me! GOSUB load_audio_fa ENDIF ENDIF IF progressaudio_faflag = 4 IF handlingudio_faflag = 0 audio_label_fa = SOUND_ROT4_ZB //Somebody save the Smoke! $input_text_fa = ROT4_ZB //Somebody save the Smoke! GOSUB load_audio_fa ENDIF ENDIF IF lightsout_faflag = 1 IF progressaudio_faflag = 5 IF handlingudio_faflag = 0 audio_label_fa = SOUND_ROT4_ZA //Shoot 'em! Help me! $input_text_fa = RM4_31 //Shoot 'em! Help me! GOSUB load_audio_fa ENDIF ENDIF ENDIF ENDIF ELSE smokehealth_fa = 0 SET_DARKNESS_EFFECT FALSE -1 SET_INFRARED_VISION FALSE CLEAR_ONSCREEN_COUNTER smokehealth_fa // CHANGE THIS CHANGE THIS CHANGE THIS CHANGE THIS CHANGE THISCHANGE THIS CHANGE THIS CHANGE THIS CHANGE THIS CHANGE THISCHANGE THIS CHANGE THIS CHANGE THIS CHANGE THIS CHANGE THIS SET_PLAYER_CONTROL PLAYER1 OFF GET_CHAR_COORDINATES scplayer player_x player_y player_z CLEAR_AREA player_x player_y 100.0 100.0 TRUE IF NOT IS_CHAR_DEAD gang1_fa TASK_DIE gang1_fa ENDIF IF NOT IS_CHAR_DEAD gang2_fa TASK_DIE gang2_fa ENDIF IF NOT IS_CHAR_DEAD gang3_fa TASK_DIE gang3_fa ENDIF IF NOT IS_CHAR_DEAD gang4_fa TASK_DIE gang4_fa ENDIF IF NOT IS_CHAR_DEAD gang5_fa TASK_DIE gang5_fa ENDIF TIMERA = 0 TIMERB = 0 CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS bossbattleaudio_faflag = 2 DO_FADE 2500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_finaleA_passed ENDIF ENDIF GOTO mission_finaleA_loop load_audio_fa: IF handlingudio_faflag = 0 LOAD_MISSION_AUDIO 1 audio_label_fa $text_label_fa = $input_text_fa handlingudio_faflag = 1 ENDIF RETURN process_audio_fa: IF handlingudio_faflag = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW $text_label_fa 4000 1 //Dummy message" PLAY_MISSION_AUDIO 1 handlingudio_faflag = 2 ENDIF ENDIF IF handlingudio_faflag = 2 IF HAS_MISSION_AUDIO_FINISHED 1 progressaudio_faflag++ CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS handlingudio_faflag = 0 ENDIF ENDIF RETURN runnostay_falabel: OPEN_SEQUENCE_TASK runnostay_faseq TASK_GO_STRAIGHT_TO_COORD -1 enemyx_fa enemyy_fa enemyz_fa PEDMOVE_RUN -1 //TASK_TOGGLE_DUCK -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK runnostay_faseq PERFORM_SEQUENCE_TASK enemy_fa runnostay_faseq CLEAR_SEQUENCE_TASK runnostay_faseq RETURN stayshoot_falabel: OPEN_SEQUENCE_TASK stayshoot_faseq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_TOGGLE_DUCK -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK stayshoot_faseq PERFORM_SEQUENCE_TASK enemy_fa stayshoot_faseq CLEAR_SEQUENCE_TASK stayshoot_faseq RETURN stayshootnoduck_falabel: OPEN_SEQUENCE_TASK stayshootnoduck_faseq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK stayshootnoduck_faseq PERFORM_SEQUENCE_TASK enemy_fa stayshootnoduck_faseq CLEAR_SEQUENCE_TASK stayshootnoduck_faseq RETURN run2shoot_falabel: OPEN_SEQUENCE_TASK run2shoot_faseq TASK_GO_STRAIGHT_TO_COORD -1 enemyx_fa enemyy_fa enemyz_fa PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 enemyx2_fa enemyy2_fa enemyz2_fa PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK run2shoot_faseq PERFORM_SEQUENCE_TASK enemy_fa run2shoot_faseq CLEAR_SEQUENCE_TASK run2shoot_faseq RETURN rolloutr_falabel: OPEN_SEQUENCE_TASK rolloutr_faseq TASK_PLAY_ANIM -1 Crouch_Roll_R PED 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_TOGGLE_DUCK -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer //TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK rolloutr_faseq PERFORM_SEQUENCE_TASK enemy_fa rolloutr_faseq CLEAR_SEQUENCE_TASK rolloutr_faseq RETURN rolloutl_falabel: OPEN_SEQUENCE_TASK rolloutl_faseq TASK_PLAY_ANIM -1 Crouch_Roll_L PED 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_TOGGLE_DUCK -1 TRUE //TASK_KILL_CHAR_ON_FOOT -1 scplayer TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK rolloutl_faseq PERFORM_SEQUENCE_TASK enemy_fa rolloutl_faseq CLEAR_SEQUENCE_TASK rolloutl_faseq RETURN peekright_falabel: OPEN_SEQUENCE_TASK peekright_faseq TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_R SWAT 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_in_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer shootimer_s4 TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM -1 enemyx_fa enemyy_fa enemyz_fa heading_fa -1.0 swt_wllshoot_out_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 //TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_out_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_R_back SWAT 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT peekright_faseq 1 CLOSE_SEQUENCE_TASK peekright_faseq PERFORM_SEQUENCE_TASK enemy_fa peekright_faseq CLEAR_SEQUENCE_TASK peekright_faseq RETURN peekleft_falabel: OPEN_SEQUENCE_TASK peekleft_faseq TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_L SWAT 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_in_L SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer shootimer_s4 TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM -1 enemyx_fa enemyy_fa enemyz_fa heading_fa -1.0 swt_wllshoot_out_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 //TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_out_L SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_L_back SWAT 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT peekleft_faseq 1 CLOSE_SEQUENCE_TASK peekleft_faseq PERFORM_SEQUENCE_TASK enemy_fa peekleft_faseq CLEAR_SEQUENCE_TASK peekleft_faseq RETURN flee_falable: OPEN_SEQUENCE_TASK flee_faseq TASK_GO_STRAIGHT_TO_COORD -1 enemyx_fa enemyy_fa enemyz_fa PEDMOVE_SPRINT -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_DUCK -1 -1 CLOSE_SEQUENCE_TASK flee_faseq PERFORM_SEQUENCE_TASK enemy_fa flee_faseq CLEAR_SEQUENCE_TASK flee_faseq RETURN // Mission finaleA failed mission_finaleA_failed: PRINT_BIG M_FAIL 5000 1 REMOVE_IPL_DISCREETLY carter DELETE_OBJECT carterwall CREATE_OBJECT_NO_OFFSET imy_shash_wall 2522.008 -1272.93 35.609 carterwall DONT_REMOVE_OBJECT carterwall SET_OBJECT_HEALTH carterwall 100 SET_OBJECT_COLLISION_DAMAGE_EFFECT carterwall FALSE FREEZE_OBJECT_POSITION carterwall TRUE //remember to warp player out if he is in that area RETURN // mission finaleA passed mission_finaleA_passed: finaleaplayerpass_flag = 1 flag_riot_mission_counter++ CLEAR_WANTED_LEVEL player1 REQUEST_IPL carter RETURN // mission cleanup mission_cleanup_finaleA: CLEAR_ALL_SCRIPT_ROADBLOCKS DISABLE_ALL_ENTRY_EXITS FALSE IF NOT IS_CAR_DEAD sweet_car SET_VEHICLE_IS_CONSIDERED_BY_PLAYER sweet_car TRUE ENDIF // chars need cleanin! REMOVE_CHAR_ELEGANTLY hoochie3_fa REMOVE_CHAR_ELEGANTLY hoochie4_fa REMOVE_CHAR_ELEGANTLY gang1_fa REMOVE_CHAR_ELEGANTLY gang2_fa REMOVE_CHAR_ELEGANTLY gang3_fa REMOVE_CHAR_ELEGANTLY gang4_fa REMOVE_CHAR_ELEGANTLY gang5_fa REMOVE_CHAR_ELEGANTLY gang6_fa REMOVE_CHAR_ELEGANTLY gang7_fa REMOVE_CHAR_ELEGANTLY gang8_fa REMOVE_CHAR_ELEGANTLY gang9_fa REMOVE_CHAR_ELEGANTLY gang10_fa REMOVE_CHAR_ELEGANTLY gang11_fa REMOVE_CHAR_ELEGANTLY gang12_fa REMOVE_CHAR_ELEGANTLY gang13_fa REMOVE_CHAR_ELEGANTLY gang14_fa REMOVE_CHAR_ELEGANTLY gang15_fa REMOVE_CHAR_ELEGANTLY gang16_fa REMOVE_CHAR_ELEGANTLY gang17_fa REMOVE_CHAR_ELEGANTLY gang18_fa REMOVE_CHAR_ELEGANTLY gang19_fa REMOVE_CHAR_ELEGANTLY gang20_fa //blips REMOVE_BLIP sweet_fablip REMOVE_BLIP swatvan_fablip REMOVE_BLIP carter_fablip REMOVE_BLIP smoke_fablip REMOVE_BLIP irgoggles_fablip //pickups REMOVE_PICKUP armour1_fa REMOVE_PICKUP armour2_fa REMOVE_PICKUP armour3_fa REMOVE_PICKUP armour4_fa REMOVE_PICKUP health1_fa REMOVE_PICKUP health2_fa REMOVE_PICKUP health3_fa REMOVE_PICKUP m4pickup_fa REMOVE_PICKUP shotgunpickup_fa REMOVE_PICKUP irgoggles_fa REMOVE_PICKUP shotgunpickup2_fa //counters CLEAR_ONSCREEN_COUNTER smokehealth_fa //fx KILL_FX_SYSTEM wallsmashfx_fa //objects DELETE_OBJECT barrel1_fa DELETE_OBJECT barrel2_fa DELETE_OBJECT barrel3_fa DELETE_OBJECT barrel4_fa DELETE_OBJECT door_fa DELETE_OBJECT wall_fa //models and anims MARK_MODEL_AS_NO_LONGER_NEEDED SWATVAN MARK_MODEL_AS_NO_LONGER_NEEDED COPCARLA MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO UNLOAD_SPECIAL_CHARACTER 1 MARK_MODEL_AS_NO_LONGER_NEEDED BMX MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG MARK_MODEL_AS_NO_LONGER_NEEDED AK47 MARK_MODEL_AS_NO_LONGER_NEEDED BFYPRO REMOVE_ANIMATION CRACK MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS2 MARK_MODEL_AS_NO_LONGER_NEEDED LSV1 MARK_MODEL_AS_NO_LONGER_NEEDED SWAT REMOVE_ANIMATION SWAT MARK_MODEL_AS_NO_LONGER_NEEDED imcompmovedr1_las REMOVE_CAR_RECORDING 287 MARK_MODEL_AS_NO_LONGER_NEEDED BMYCG MARK_MODEL_AS_NO_LONGER_NEEDED HMYCM MARK_MODEL_AS_NO_LONGER_NEEDED SFR1 MARK_MODEL_AS_NO_LONGER_NEEDED M4 MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED BARREL4 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS3 MARK_MODEL_AS_NO_LONGER_NEEDED MAFFA MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_MODEL_AS_NO_LONGER_NEEDED BFYRI REMOVE_ANIMATION STRIP MARK_MODEL_AS_NO_LONGER_NEEDED SBFYSTR MARK_MODEL_AS_NO_LONGER_NEEDED LSV2 MARK_MODEL_AS_NO_LONGER_NEEDED IRGOGGLES UNLOAD_SPECIAL_CHARACTER 2 //misc SWITCH_EMERGENCY_SERVICES ON SET_WANTED_MULTIPLIER 1.0 SET_MAX_WANTED_LEVEL 6 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 //nodes SWITCH_ROADS_ON 2356.4 -1233.16 30.6 2382.19 -1329.65 21.49 SWITCH_PED_ROADS_ON 2356.4 -1233.16 30.6 2382.19 -1329.65 21.49 SWITCH_ROADS_ON 2522.74 -1260.01 30.28 2499.0 -1322.01 31.76 SWITCH_PED_ROADS_ON 2522.74 -1260.01 30.28 2499.0 -1322.01 31.76 SWITCH_ROADS_ON 2431.9 -1268.06 30.6 2474.9 -1240.38 20.84 SWITCH_PED_ROADS_ON 2431.9 -1268.06 30.6 2474.9 -1240.38 20.84 REMOVE_ALL_SCRIPT_FIRES GET_GAME_TIMER timer_mobile_start IF IS_PLAYER_PLAYING PLAYER1 SET_PLAYER_GROUP_RECRUITMENT PLAYER1 TRUE ENDIF IF NOT IS_CAR_DEAD swatvan_fa SET_CAR_ONLY_DAMAGED_BY_PLAYER swatvan_fa FALSE SET_CAR_PROOFS swatvan_fa FALSE FALSE FALSE FALSE FALSE ENDIF IF NOT IS_CAR_DEAD sweet_car SET_CAR_PROOFS sweet_car FALSE FALSE FALSE FALSE FALSE ENDIF flag_player_on_mission = 0 MISSION_HAS_FINISHED IF finaleaplayerpass_flag = 1 DO_FADE 0 FADE_OUT ENDIF RETURN } MISSION_START // ***************************************************************************************** // ************************************* finaleB **************************************** // ************************************* Carter Block ************************************** // *********** Inspired by Zelda, Metroid, MGS, Perfect Dark, Time Crisis, GTA ************* // ***************************************************************************************** // ***************************************************************************************** // Mission start stuff GOSUB mission_start_finaleB IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_finaleB_failed ENDIF GOSUB mission_cleanup_finaleB MISSION_END { // ********************************** Variables for shootout ********************************* LVAR_INT gang1_fb LVAR_INT gang2_fb LVAR_INT gang3_fb LVAR_INT gang4_fb LVAR_INT gang5_fb LVAR_INT gang6_fb LVAR_INT gang7_fb LVAR_INT gang8_fb LVAR_INT gang9_fb LVAR_INT gang10_fb LVAR_INT gang11_fb LVAR_INT gang12_fb LVAR_INT gang13_fb LVAR_INT gang14_fb LVAR_INT gang15_fb LVAR_INT tenpenny_fb LVAR_INT playervisible_fb VAR_FLOAT camx_fb VAR_FLOAT camy_fb VAR_FLOAT camz_fb VAR_FLOAT lookcamx_fb VAR_FLOAT lookcamy_fb VAR_FLOAT lookcamz_fb //timer VAR_INT escapetimer_fb //particles & fire LVAR_INT fxPlayerSmoke_fb[9] LVAR_INT nLoop_fb LVAR_INT fire1_fb LVAR_INT fire2_fb LVAR_INT fire3_fb LVAR_INT fire4_fb LVAR_INT fire5_fb LVAR_INT fire6_fb LVAR_INT fire7_fb LVAR_INT fire8_fb LVAR_INT fire9_fb LVAR_INT fire10_fb LVAR_INT fire11_fb LVAR_INT fire12_fb LVAR_INT fire13_fb LVAR_INT fire14_fb LVAR_INT fire15_fb LVAR_INT fire16_fb LVAR_INT fire17_fb LVAR_INT fire18_fb LVAR_INT fire19_fb LVAR_INT fire20_fb LVAR_INT fire21_fb LVAR_INT fire22_fb LVAR_INT fire23_fb LVAR_INT fire24_fb LVAR_INT fire25_fb LVAR_INT fire26_fb LVAR_INT fire27_fb LVAR_INT fire28_fb LVAR_INT fire29_fb LVAR_INT fire30_fb LVAR_INT fire31_fb LVAR_INT fire32_fb LVAR_INT fire33_fb LVAR_INT fire34_fb LVAR_INT fire35_fb LVAR_INT fire36_fb //sequences LVAR_INT carterb_DM LVAR_INT cartertoughb_DM LVAR_INT runnostay_fbseq LVAR_INT stayshoot_fbseq LVAR_INT stayshootnoduck_fbseq LVAR_INT rolloutr_fbseq LVAR_INT peekright_fbseq LVAR_INT enemy_fb LVAR_INT peekleft_fbseq LVAR_FLOAT enemyx_fb LVAR_FLOAT enemyy_fb LVAR_FLOAT enemyz_fb LVAR_INT enemytarget_fb LVAR_INT enemytarget2_fb LVAR_INT run2shoot_fbseq LVAR_INT shootimer_s4 LVAR_FLOAT enemyx2_fb LVAR_FLOAT enemyy2_fb LVAR_FLOAT enemyz2_fb LVAR_FLOAT heading_fb //blips LVAR_INT sweet_fbblip LVAR_INT carter_fbblip LVAR_INT extinguisher1_fbblip //pickups LVAR_INT armour1_fb LVAR_INT armour2_fb LVAR_INT armour3_fb LVAR_INT armour4_fb LVAR_INT armour5_fb LVAR_INT health1_fb LVAR_INT health2_fb LVAR_INT health3_fb LVAR_INT nightvision_fb LVAR_INT extinguisher1_fb LVAR_INT extinguisher2_fb LVAR_INT ak_fb //flags LVAR_INT finaleb_fbflag LVAR_INT floorg_fbflag LVAR_INT floor1_fbflag LVAR_INT floor2_fbflag LVAR_INT floor3_fbflag LVAR_INT gang1_fbflag LVAR_INT gang2_fbflag LVAR_INT gang3_fbflag LVAR_INT gang4_fbflag LVAR_INT gang5_fbflag LVAR_INT gang6_fbflag LVAR_INT gang7_fbflag LVAR_INT gang8_fbflag LVAR_INT gang9_fbflag LVAR_INT gang10_fbflag LVAR_INT gang11_fbflag LVAR_INT gang12_fbflag LVAR_INT gang13_fbflag LVAR_INT gang14_fbflag LVAR_INT gang15_fbflag LVAR_INT tenpennycut_fbflag LVAR_INT explosion_fbflag LVAR_INT timerout_fbflag LVAR_INT helptext_fbflag LVAR_INT finalebplayerpass_flag // ********************************** Variables for chase ********************************* //new variables LVAR_INT firetruck_fb LVAR_INT benz_fb LVAR_INT cop1_fb LVAR_INT cop2_fb LVAR_INT cop3_fb LVAR_INT train_fb LVAR_INT copladder_fb LVAR_INT coptruck_fb LVAR_INT gangcar1_fb LVAR_INT gangcar2_fb LVAR_INT gangcar3_fb LVAR_INT gangcar4_fb LVAR_INT gangcar5_fb //sequences LVAR_INT chasekill_fbseq //flags LVAR_INT sweethang_fbflag LVAR_INT finalebchase_fbflag LVAR_INT sweetlegsup_fbflag LVAR_INT locatestage_fbflag LVAR_INT speedup_fbflag LVAR_INT createtrain_fbflag LVAR_INT copladder_fbflag LVAR_INT coptruck_fbflag LVAR_INT displaygripbar_fbflag LVAR_INT cardensity_fbflag LVAR_INT notincar_fbflag LVAR_INT cardead_fbflag LVAR_INT lostsweet_fbflag // **************************************** Mission Start ************************************ mission_start_finaleB: flag_player_on_mission = 1 SCRIPT_NAME finaleB WAIT 0 LOAD_MISSION_TEXT RIOT4 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY carterb_DM LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH cartertoughb_DM /////////////////////////////////////////////////////// SET_MAX_WANTED_LEVEL 0 //REQUEST_IPL carter //DELETE_OBJECT carterwall /////////////////////////////////////////////////////// SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON //Smokes dying in Carter block SET_FADING_COLOUR 0 0 0 SET_AREA_VISIBLE 2 //DO_FADE 1000 FADE_OUT // //WHILE GET_FADING_STATUS // WAIT 0 //ENDWHILE LOAD_CUTSCENE RIOT_4d WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REQUEST_MODEL BALLAS1 REQUEST_MODEL BALLAS3 REQUEST_MODEL LSV2 REQUEST_MODEL NVGOGGLES REQUEST_MODEL CHROMEGUN REQUEST_MODEL MICRO_UZI REQUEST_MODEL M4 REQUEST_ANIMATION SWAT REQUEST_MODEL FIRE_EX LOAD_SPECIAL_CHARACTER 1 SMOKEV LOAD_SPECIAL_CHARACTER 2 TENPEN LOAD_MISSION_AUDIO 1 SOUND_ROT4_ZC LOAD_ALL_MODELS_NOW WHILE NOT HAS_SPECIAL_CHARACTER_LOADED 1 OR NOT HAS_SPECIAL_CHARACTER_LOADED 2 OR NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED BALLAS1 OR NOT HAS_MODEL_LOADED BALLAS3 OR NOT HAS_MODEL_LOADED LSV2 OR NOT HAS_MODEL_LOADED NVGOGGLES WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED CHROMEGUN OR NOT HAS_MODEL_LOADED MICRO_UZI OR NOT HAS_MODEL_LOADED M4 OR NOT HAS_ANIMATION_LOADED SWAT OR NOT HAS_MODEL_LOADED FIRE_EX WAIT 0 ENDWHILE // **************************************** Declare Variables ************************************ //shootout finaleb_fbflag = 0 floorg_fbflag = 0 floor1_fbflag = 0 floor2_fbflag = 0 floor3_fbflag = 0 gang1_fbflag = 0 gang2_fbflag = 0 gang3_fbflag = 0 gang4_fbflag = 0 gang5_fbflag = 0 gang6_fbflag = 0 gang7_fbflag = 0 gang8_fbflag = 0 gang9_fbflag = 0 gang10_fbflag = 0 gang11_fbflag = 0 gang12_fbflag = 0 gang13_fbflag = 0 gang14_fbflag = 0 gang15_fbflag = 0 tenpennycut_fbflag = 0 explosion_fbflag = 0 timerout_fbflag = 0 helptext_fbflag = 0 escapetimer_fb = 420000 finalebplayerpass_flag = 0 //rails sweethang_fbflag = 0 finalebchase_fbflag = 0 sweetlegsup_fbflag = 0 locatestage_fbflag = 0 speedup_fbflag = 0 createtrain_fbflag = 0 copladder_fbflag = 0 coptruck_fbflag = 0 displaygripbar_fbflag = 0 cardensity_fbflag = 0 notincar_fbflag = 0 cardead_fbflag = 0 lostsweet_fbflag = 0 // ********************************************************************************************** SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 SET_MAX_FIRE_GENERATIONS 0 SET_WANTED_MULTIPLIER 0.0 SWITCH_EMERGENCY_SERVICES OFF mission_finaleB_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_finaleb_passed ENDIF //player fails - if he runs out of time IF finaleb_fbflag < 9 IF timerout_fbflag = 0 IF escapetimer_fb <= 0 GET_CHAR_COORDINATES scplayer player_x player_y player_z ADD_EXPLOSION player_x player_y player_z EXPLOSION_GRENADE player_x = player_x + 0.0 player_y = player_y - 0.5 player_z = player_z + 0.7 ADD_EXPLOSION player_x player_y player_z EXPLOSION_ROCKET player_x = player_x - 1.0 player_y = player_y + 2.0 ADD_EXPLOSION player_x player_y player_z EXPLOSION_CAR player_x = player_x + 1.5 player_y = player_y + 2.0 ADD_EXPLOSION player_x player_y player_z EXPLOSION_GRENADE TIMERB = 0 timerout_fbflag = 1 ENDIF ENDIF IF timerout_fbflag = 1 IF TIMERB > 3000 TASK_DIE scplayer timerout_fbflag = 2 ENDIF ENDIF ENDIF //play cut scene's IF finaleb_fbflag = 0 IF tenpennycut_fbflag = 0 CREATE_CHAR PEDTYPE_SPECIAL SPECIAL01 2553.2 -1284.857 1060.0242 big_smoke SET_CHAR_HEADING big_smoke 90.0 SET_CHAR_AREA_VISIBLE big_smoke 2 TASK_DIE big_smoke CREATE_PICKUP BODYARMOUR PICKUP_ONCE 2552.31 -1286.274 1061.024 armour5_fb CREATE_PICKUP_WITH_AMMO AK47 PICKUP_ONCE 60 2552.36 -1283.15 1061.02 ak_fb SET_CHAR_COORDINATES scplayer 2553.734 -1285.256 1060.024 SET_CHAR_HEADING scplayer 79.954 SET_CHAR_AREA_VISIBLE scplayer 2 SET_PLAYER_CONTROL PLAYER1 OFF SWITCH_WIDESCREEN ON SET_FIXED_CAMERA_POSITION 2550.6038 -1294.5857 1044.8022 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2551.6008 -1294.6489 1044.7625 JUMP_CUT CREATE_CHAR PEDTYPE_SPECIAL SPECIAL02 2556.9880 -1297.4994 1043.1305 tenpenny_fb SET_CHAR_HEADING tenpenny_fb 27.2743 SET_CHAR_DECISION_MAKER tenpenny_fb carterb_DM GIVE_WEAPON_TO_CHAR tenpenny_fb WEAPONTYPE_SHOTGUN 99999 LOAD_SCENE 2552.29 -1294.24 1044.84 CLEAR_AREA 2552.38 -1294.06 1044.84 100.0 FALSE LOAD_SCENE 2552.29 -1294.24 1044.84 SET_TIME_OF_DAY 00 00 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE tenpennycut_fbflag = 1 ENDIF ENDIF IF tenpennycut_fbflag = 1 IF NOT IS_CHAR_DEAD tenpenny_fb TASK_SHOOT_AT_COORD tenpenny_fb 2552.29 -1294.24 1044.84 1000 IF HAS_MISSION_AUDIO_LOADED 1 PLAY_MISSION_AUDIO 1 PRINT_NOW ROT4_ZC 3500 1 ENDIF WAIT 500 START_SCRIPT_FIRE 2552.38 -1294.06 1044.84 0 1 fire1_fb //machine ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// SKIP_CUTSCENE_START ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// WAIT 200 START_SCRIPT_FIRE 2553.33 -1293.89 1044.87 0 2 fire2_fb //machine WAIT 300 IF NOT IS_CHAR_DEAD tenpenny_fb TASK_GO_STRAIGHT_TO_COORD tenpenny_fb 25566.84 -1297.272 1043.17 PEDMOVE_WALK -1 ENDIF WAIT 2500 SET_FIXED_CAMERA_POSITION 2565.8159 -1296.7323 1044.4026 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2564.8240 -1296.6128 1044.4437 JUMP_CUT PRINT_NOW RM4_38 10000 1 //~s~Tenpenny has caused an explosion, the lighting in the building is off and the whole place is beginning to burn down. You need to get out of here quick! WAIT 3250 ADD_EXPLOSION_VARIABLE_SHAKE 2553.19 -1293.58 1044.29 EXPLOSION_CAR 0.4 WAIT 200 ADD_EXPLOSION_VARIABLE_SHAKE 2558.53 -1293.88 1044.58 EXPLOSION_GRENADE 0.3 WAIT 500 ADD_EXPLOSION_VARIABLE_SHAKE 2552.78 -1293.24 1045.32 EXPLOSION_GRENADE 0.4 SET_DARKNESS_EFFECT FALSE 175 WAIT 100 ADD_EXPLOSION_VARIABLE_SHAKE 2557.6 -1294.57 1043.49 EXPLOSION_ROCKET 0.5 WAIT 500 ADD_EXPLOSION_VARIABLE_SHAKE 2555.86 -1293.27 1043.91 EXPLOSION_ROCKET 0.6 WAIT 50 ADD_EXPLOSION_VARIABLE_SHAKE 2558.73 -1293.4 1044.36 EXPLOSION_CAR 0.6 WAIT 50 SET_TIME_OF_DAY 00 00 SET_HEATHAZE_EFFECT TRUE SET_DARKNESS_EFFECT TRUE 100 START_SCRIPT_FIRE 2567.77 -1294.03 1045.5 0 3 fire17_fb START_SCRIPT_FIRE 2541.687 -1289.68 1043.0 1 1 fire8_fb START_SCRIPT_FIRE 2559.45 -1303.65 1044.0 0 2 fire23_fb START_SCRIPT_FIRE 2564.72 -1296.06 1042.91 0 2 fire25_fb START_SCRIPT_FIRE 2570.115 -1301.434 1043.8 0 2 fire15_fb WAIT 250 SET_DARKNESS_EFFECT FALSE 120 START_SCRIPT_FIRE 2559.37 -1284.76 1044.1 0 2 fire21_fb WAIT 500 SET_DARKNESS_EFFECT TRUE 140 START_SCRIPT_FIRE 2538.751 -1291.7 1044.17 0 2 fire10_fb START_SCRIPT_FIRE 2541.56 -1292.35 1044.1 0 3 fire13_fb START_SCRIPT_FIRE 2551.47 -1297.2 1044.17 0 2 fire28_fb START_SCRIPT_FIRE 2551.425 -1298.4 1044.1 0 2 fire29_fb WAIT 400 SET_DARKNESS_EFFECT FALSE 150 WAIT 500 START_SCRIPT_FIRE 2551.33 -1295.311 1043.8 0 3 fire34_fb START_SCRIPT_FIRE 2541.36 -1300.36 1044.1 0 2 fire31_fb SET_DARKNESS_EFFECT TRUE 180 WAIT 3000 tenpennycut_fbflag = 2 ENDIF ENDIF IF tenpennycut_fbflag = 2 ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// SKIP_CUTSCENE_END ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// CLEAR_THIS_PRINT ROT4_ZC CLEAR_MISSION_AUDIO 1 SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER DELETE_CHAR tenpenny_fb SET_HEATHAZE_EFFECT FALSE SET_DARKNESS_EFFECT TRUE 200 SET_TIME_OF_DAY 00 00 SET_PLAYER_MOOD PLAYER1 MOOD_PR 360000 REMOVE_ALL_SCRIPT_FIRES CREATE_PICKUP HEALTH PICKUP_ONCE 2524.0 -1283.0 1048.337 health1_fb CREATE_PICKUP BODYARMOUR PICKUP_ONCE 2527.7830 -1288.8158 1031.4297 armour1_fb CREATE_PICKUP BODYARMOUR PICKUP_ONCE 2580.953 -1285.117 1044.173 armour2_fb CREATE_PICKUP BODYARMOUR PICKUP_ONCE 2520.4 -1281.287 1054.681 armour3_fb CREATE_PICKUP HEALTH PICKUP_ONCE 2552.298 -1306.06 1054.681 health2_fb CREATE_PICKUP HEALTH PICKUP_ONCE 2570.839 -1285.818 1037.821 health3_fb CREATE_PICKUP BODYARMOUR PICKUP_ONCE 2552.475 -1280.687 1054.686 armour4_fb GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_NIGHTVISION 1 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_NIGHTVISION MARK_MODEL_AS_NO_LONGER_NEEDED NVGOGGLES PRINT_NOW RM4_33 10000 1 //~s~Use the night vision goggles you have just picked up from Big Smoke to help you see in the dark and ~y~escape ~s~the building as quick as possible. DISPLAY_ONSCREEN_TIMER_WITH_STRING escapetimer_fb TIMER_DOWN RM4_34 SET_TIMER_BEEP_COUNTDOWN_TIME escapetimer_fb 32 ADD_BLIP_FOR_COORD 2577.82 -1284.6 1053.99 carter_fbblip SET_BLIP_ENTRY_EXIT carter_fbblip 2540.83 -1304.05 1.0 TIMERA = 0 finaleb_fbflag = 1 tenpennycut_fbflag = 3 CHECKPOINT_SAVE 1 ENDIF IF finaleb_fbflag < 3 IF helptext_fbflag = 0 IF TIMERA > 7000 CLEAR_PRINTS PRINT_HELP RM4_32 // To use the night vision goggles select them from your inventory and press ~m~~widget_attack~. helptext_fbflag = 1 ENDIF ENDIF ENDIF IF finaleb_fbflag < 4 IF helptext_fbflag = 2 IF TIMERA > 8000 CLEAR_PRINTS PRINT_HELP RM4_40 //Nightvision can brighten up fires helptext_fbflag = 3 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////// 3rd Floor //////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF finaleb_fbflag = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2578.21 -1284.87 1053.95 5.0 5.0 5.0 FALSE REMOVE_BLIP carter_fbblip ADD_BLIP_FOR_COORD 2521.89 -1301.98 1047.54 carter_fbblip //2528.213 -1297.409 1048.3367 SET_BLIP_ENTRY_EXIT carter_fbblip 2540.83 -1304.05 1.0 CLEAR_PRINTS //kill normally CREATE_CHAR PEDTYPE_MISSION1 LSV2 2574.5 -1296.029 1054.687 gang1_fb SET_CHAR_HEADING gang1_fb 4.7018 SET_CHAR_DECISION_MAKER gang1_fb carterb_DM GIVE_WEAPON_TO_CHAR gang1_fb WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang1_fb WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang1_fb 2 SET_CHAR_ACCURACY gang1_fb 20 SET_CHAR_HEALTH gang1_fb 150 SET_CHAR_MAX_HEALTH gang1_fb 150 gang1_fbflag = 1 TASK_KILL_CHAR_ON_FOOT gang1_fb scplayer //2 peek shotgun CREATE_CHAR PEDTYPE_MISSION1 BALLAS3 2553.7642 -1294.5363 1053.6470 gang2_fb SET_CHAR_HEADING gang2_fb 266.9614 SET_CHAR_DECISION_MAKER gang2_fb carterb_DM GIVE_WEAPON_TO_CHAR gang2_fb WEAPONTYPE_SHOTGUN 99999 SET_CHAR_AREA_VISIBLE gang2_fb 2 gang2_fbflag = 0 IF gang2_fbflag = 0 IF NOT IS_CHAR_DEAD gang2_fb enemy_fb = gang2_fb enemyx_fb = 2553.7642 enemyy_fb = -1294.5363 enemyz_fb = 1053.6470 shootimer_s4 = 2700 heading_fb = 270.0 GOSUB peekright_fblabel gang2_fbflag = 1 ENDIF ENDIF //kill normally CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2575.266 -1296.4 1054.687 gang3_fb SET_CHAR_HEADING gang3_fb 89.298 SET_CHAR_DECISION_MAKER gang3_fb carterb_DM GIVE_WEAPON_TO_CHAR gang3_fb WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang3_fb WEAPONSKILL_PRO SET_CHAR_HEALTH gang3_fb 150 SET_CHAR_MAX_HEALTH gang3_fb 150 SET_CHAR_AREA_VISIBLE gang3_fb 2 IF gang3_fbflag = 0 IF NOT IS_CHAR_DEAD gang3_fb enemy_fb = gang3_fb enemyx_fb = 2556.3096 enemyy_fb = -1297.2192 enemyz_fb = 1053.6406 GOSUB runnostay_fblabel gang3_fbflag = 1 ENDIF ENDIF //stay in same place CREATE_CHAR PEDTYPE_MISSION1 BALLAS3 2547.426 -1306.462 1054.681 gang4_fb SET_CHAR_HEADING gang4_fb 359.0 SET_CHAR_DECISION_MAKER gang4_fb carterb_DM GIVE_WEAPON_TO_CHAR gang4_fb WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang4_fb WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang4_fb 2 gang4_fbflag = 0 IF gang4_fbflag = 0 IF NOT IS_CHAR_DEAD gang4_fb enemy_fb = gang4_fb GOSUB stayshoot_fblabel gang4_fbflag = 1 ENDIF ENDIF //stay in same place CREATE_CHAR PEDTYPE_MISSION1 LSV2 2534.0447 -1304.8566 1053.6406 gang5_fb SET_CHAR_HEADING gang5_fb 273.9959 SET_CHAR_DECISION_MAKER gang5_fb carterb_DM GIVE_WEAPON_TO_CHAR gang5_fb WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang5_fb WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang5_fb 2 SET_CHAR_HEALTH gang5_fb 150 SET_CHAR_MAX_HEALTH gang5_fb 150 gang5_fbflag = 0 IF gang5_fbflag = 0 IF NOT IS_CHAR_DEAD gang5_fb enemy_fb = gang5_fb GOSUB stayshoot_fblabel gang5_fbflag = 1 ENDIF ENDIF //stay in same place CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2540.1919 -1287.6666 1053.6470 gang6_fb SET_CHAR_HEADING gang6_fb 165.9748 SET_CHAR_DECISION_MAKER gang6_fb carterb_DM GIVE_WEAPON_TO_CHAR gang6_fb WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang6_fb WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang6_fb 2 SET_CHAR_ALLOWED_TO_DUCK gang6_fb FALSE gang6_fbflag = 0 IF gang6_fbflag = 0 IF NOT IS_CHAR_DEAD gang6_fb enemy_fb = gang6_fb GOSUB stayshootnoduck_fblabel gang6_fbflag = 1 ENDIF ENDIF //body armour //2521.159 -1281.722 1054.68 finaleb_fbflag = 2 ENDIF ENDIF IF finaleb_fbflag = 2 //mark as no longer needed IF gang1_fbflag = 1 IF IS_CHAR_DEAD gang1_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang1_fb gang1_fbflag = 2 ENDIF ENDIF IF gang2_fbflag = 1 IF NOT IS_CHAR_DEAD gang2_fb IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang2_fb scplayer OR LOCATE_CHAR_ANY_MEANS_CHAR_3D gang2_fb scplayer 5.0 5.0 3.0 FALSE IF NOT IS_CHAR_DEAD gang2_fb TASK_KILL_CHAR_ON_FOOT gang2_fb scplayer gang2_fbflag = 2 ELSE MARK_CHAR_AS_NO_LONGER_NEEDED gang2_fb gang2_fbflag = 2 ENDIF ENDIF ENDIF ENDIF IF gang2_fbflag = 1 OR gang2_fbflag = 2 IF IS_CHAR_DEAD gang2_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang2_fb gang2_fbflag = 3 ENDIF ENDIF IF gang3_fbflag = 1 IF IS_CHAR_DEAD gang3_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang3_fb gang3_fbflag = 2 ENDIF ENDIF IF gang4_fbflag = 1 IF IS_CHAR_DEAD gang4_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang4_fb gang4_fbflag = 2 ENDIF ENDIF IF gang5_fbflag = 1 IF IS_CHAR_DEAD gang5_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang5_fb gang5_fbflag = 2 ENDIF ENDIF IF gang6_fbflag = 1 IF IS_CHAR_DEAD gang6_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang6_fb gang6_fbflag = 2 ENDIF ENDIF IF gang7_fbflag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2543.46 -1304.9 1054.68 5.0 5.0 5.0 FALSE //kill normally CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2532.4 -1286.7 1053.68 gang7_fb SET_CHAR_HEADING gang7_fb 230.835 SET_CHAR_DECISION_MAKER gang7_fb carterb_DM GIVE_WEAPON_TO_CHAR gang7_fb WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang7_fb WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang7_fb 2 TASK_KILL_CHAR_ON_FOOT gang7_fb scplayer gang7_fbflag = 1 ENDIF ENDIF IF gang7_fbflag = 1 IF IS_CHAR_DEAD gang7_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang7_fb gang7_fbflag = 2 ENDIF ENDIF IF gang8_fbflag = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2519.93 -1285.547 1054.673 5.0 5.0 5.0 FALSE //kill normally CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2519.93 -1285.54 1054.673 gang8_fb SET_CHAR_HEADING gang8_fb 200.537 SET_CHAR_DECISION_MAKER gang8_fb carterb_DM GIVE_WEAPON_TO_CHAR gang8_fb WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_AREA_VISIBLE gang8_fb 2 SET_CHAR_HEALTH gang8_fb 150 SET_CHAR_MAX_HEALTH gang8_fb 150 enemy_fb = gang8_fb enemyx_fb = 2520.05 enemyy_fb = -1301.518 enemyz_fb = 1048.33 GOSUB runnostay_fblabel gang8_fbflag = 1 ENDIF ENDIF IF gang8_fbflag = 1 IF IS_CHAR_DEAD gang8_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang8_fb gang8_fbflag = 2 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////// 2nd Floor //////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF finaleb_fbflag = 2 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2521.9 -1301.86 1047.5 6.0 6.0 3.0 FALSE PRINT_NOW RM4_35 7000 1 //~s~This floor is on fire use a ~g~fire extinguisher ~s~to help you get out! TIMERA = 0 helptext_fbflag = 2 DELETE_CHAR gang1_fb DELETE_CHAR gang2_fb DELETE_CHAR gang3_fb DELETE_CHAR gang4_fb DELETE_CHAR gang5_fb DELETE_CHAR gang6_fb REMOVE_BLIP carter_fbblip ADD_BLIP_FOR_COORD 2572.08 -1301.88 1043.32 carter_fbblip SET_BLIP_ENTRY_EXIT carter_fbblip 2540.83 -1304.05 1.0 SET_HEATHAZE_EFFECT TRUE DELETE_CHAR big_smoke UNLOAD_SPECIAL_CHARACTER 2 CREATE_FX_SYSTEM_ON_CHAR teargas scplayer 0.0 0.0 2.2 TRUE fxPlayerSmoke_fb[0] //directly above //all z had 0.2 added to them apart from behind CREATE_FX_SYSTEM_ON_CHAR teargas scplayer 0.0 2.0 2.0 TRUE fxPlayerSmoke_fb[1] //in front CREATE_FX_SYSTEM_ON_CHAR teargas scplayer 0.0 -2.0 2.0 TRUE fxPlayerSmoke_fb[2] //behind CREATE_FX_SYSTEM_ON_CHAR teargas scplayer 1.0 5.0 1.7 TRUE fxPlayerSmoke_fb[3] //5m in front CREATE_FX_SYSTEM_ON_CHAR teargas scplayer -1.0 8.0 2.0 TRUE fxPlayerSmoke_fb[4] //8m in front CREATE_FX_SYSTEM_ON_CHAR teargas scplayer 2.0 0.0 1.7 TRUE fxPlayerSmoke_fb[5] //side CREATE_FX_SYSTEM_ON_CHAR teargas scplayer -2.0 0.0 1.7 TRUE fxPlayerSmoke_fb[6] //side CREATE_FX_SYSTEM_ON_CHAR teargas scplayer -2.0 2.0 1.7 TRUE fxPlayerSmoke_fb[7] //front diag CREATE_FX_SYSTEM_ON_CHAR teargas scplayer 2.0 2.0 1.7 TRUE fxPlayerSmoke_fb[8] //front diag nLoop_fb = 0 WHILE nLoop_fb < 9 PLAY_FX_SYSTEM fxPlayerSmoke_fb[nLoop_fb] nLoop_fb ++ ENDWHILE //small room START_SCRIPT_FIRE 2529.62 -1306.62 1048.0 0 2 fire1_fb //infront of door START_SCRIPT_FIRE 2529.497 -1304.791 1048.0 0 2 fire2_fb //infront of door START_SCRIPT_FIRE 2530.12 -1296.96 1047.8 0 3 fire3_fb //left of building // START_SCRIPT_FIRE 2529.89 -1299.77 1048.0 0 2 fire19_fb START_SCRIPT_FIRE 2529.49 -1287.93 1048.0 0 3 fire4_fb //guy putting out //ped @ 2528.6 -1290.47 1047.337 h344.715 //walk way START_SCRIPT_FIRE 2543.98 -1305.709 1047.445 0 3 fire4_fb //1st one that player comes across START_SCRIPT_FIRE 2544.54 -1304.47 1047.55 0 3 fire5_fb START_SCRIPT_FIRE 2543.94 -1306.83 1047.62 0 3 fire30_fb START_SCRIPT_FIRE 2545.139 -1281.497 1047.5 0 2 fire6_fb //3rd that player comes across START_SCRIPT_FIRE 2567.77 -1294.03 1047.5 0 3 fire17_fb START_SCRIPT_FIRE 2570.2 -1294.4 1047.5 0 3 fire18_fb START_SCRIPT_FIRE 2568.72 -1294.32 1047.5 0 2 fire15_fb //left when you come down START_SCRIPT_FIRE 2540.247 -1288.566 1044.0 0 3 fire7_fb START_SCRIPT_FIRE 2541.687 -1289.68 1044.0 1 1 fire8_fb START_SCRIPT_FIRE 2540.214 -1290.218 1044.0 0 2 fire9_fb START_SCRIPT_FIRE 2538.751 -1291.7 1044.17 0 2 fire10_fb START_SCRIPT_FIRE 2537.339 -1286.56 1044.1 1 3 fire11_fb START_SCRIPT_FIRE 2541.56 -1292.35 1044.1 0 3 fire13_fb //table ends //desks START_SCRIPT_FIRE 2570.77 -1303.14 1043.35 0 2 fire20_fb START_SCRIPT_FIRE 2559.37 -1284.76 1044.1 0 2 fire21_fb START_SCRIPT_FIRE 2551.4 -1301.3 1044.0 0 2 fire22_fb START_SCRIPT_FIRE 2570.52 -1301.42 1043.47 0 2 fire23_fb START_SCRIPT_FIRE 2550.94 -1301.81 1044.0 0 3 fire24_fb //right START_SCRIPT_FIRE 2537.69 -1301.34 1044.0 0 2 fire25_fb START_SCRIPT_FIRE 2536.42 -1302.01 1044.0 0 2 fire26_fb START_SCRIPT_FIRE 2536.82 -1290.5 1044.0 0 2 fire27_fb START_SCRIPT_FIRE 2551.47 -1297.2 1044.17 0 2 fire28_fb START_SCRIPT_FIRE 2570.54 -1301.22 1043.36 0 3 fire29_fb START_SCRIPT_FIRE 2551.33 -1295.311 1043.8 0 3 fire34_fb //pillars START_SCRIPT_FIRE 2541.36 -1300.36 1044.1 0 2 fire31_fb START_SCRIPT_FIRE 2545.328 -1300.739 1044.1 0 2 fire32_fb START_SCRIPT_FIRE 2548.77 -1300.375 1044.04 0 3 fire33_fb START_SCRIPT_FIRE 2544.16 -1306.56 1043.8 0 2 fire16_fb START_SCRIPT_FIRE 2570.43 -1302.43 1043.4 0 1 fire12_fb START_SCRIPT_FIRE 2549.05 -1287.54 1043.8 0 3 fire14_fb START_SCRIPT_FIRE 2570.482 -1302.438 1043.8 0 2 fire35_fb START_SCRIPT_FIRE 2565.705 -1298.03 1043.7 0 3 fire36_fb START_SCRIPT_FIRE 2565.528 -1289.17 1043.7 0 3 fire19_fb //fire extinguisher CREATE_PICKUP_WITH_AMMO FIRE_EX PICKUP_ONCE 99999 2529.829 -1303.027 1048.337 extinguisher1_fb ADD_BLIP_FOR_PICKUP extinguisher1_fb extinguisher1_fbblip SET_BLIP_ENTRY_EXIT extinguisher1_fbblip 2540.83 -1304.05 1.0 CREATE_PICKUP_WITH_AMMO FIRE_EX PICKUP_ONCE 99999 2567.948 -1292.879 1044.173 extinguisher2_fb //guy putting out fire CREATE_CHAR PEDTYPE_MISSION1 BALLAS3 2528.539 -1289.935 1048.336 gang9_fb SET_CHAR_HEADING gang9_fb 359.0 SET_CHAR_HEALTH gang9_fb 10 SET_CHAR_DECISION_MAKER gang9_fb cartertoughb_DM GIVE_WEAPON_TO_CHAR gang9_fb WEAPONTYPE_EXTINGUISHER 99999 SET_CHAR_SHOOT_RATE gang9_fb 20 SET_CHAR_AREA_VISIBLE gang9_fb 2 SET_CHAR_HEALTH gang9_fb 5 SET_CHAR_MAX_HEALTH gang9_fb 5 SET_CHAR_ACCURACY gang9_fb 20 gang9_fbflag = 1 TASK_SHOOT_AT_COORD gang9_fb 2529.49 -1287.93 1048.0 650000 CREATE_CHAR PEDTYPE_MISSION1 LSV2 2538.2744 -1293.3219 1043.1328 gang10_fb SET_CHAR_HEADING gang10_fb 351.1779 SET_CHAR_HEALTH gang10_fb 5 SET_CHAR_DECISION_MAKER gang10_fb cartertoughb_DM GIVE_WEAPON_TO_CHAR gang10_fb WEAPONTYPE_EXTINGUISHER 99999 SET_CHAR_SHOOT_RATE gang10_fb 20 SET_CHAR_AREA_VISIBLE gang10_fb 2 SET_CHAR_ACCURACY gang10_fb 20 gang10_fbflag = 1 TASK_SHOOT_AT_COORD gang10_fb 2538.5688 -1291.4803 1043.6042 650000 //stay in same place CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2539.5339 -1297.7778 1043.1305 gang11_fb SET_CHAR_HEADING gang11_fb 43.6277 SET_CHAR_DECISION_MAKER gang11_fb carterb_DM GIVE_WEAPON_TO_CHAR gang11_fb WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang11_fb 2 SET_CHAR_ACCURACY gang11_fb 20 gang11_fbflag = 0 IF gang11_fbflag = 0 IF NOT IS_CHAR_DEAD gang11_fb enemy_fb = gang11_fb GOSUB stayshootnoduck_fblabel gang11_fbflag = 1 ENDIF ENDIF CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2548.2446 -1294.1420 1043.1305 gang12_fb SET_CHAR_HEADING gang12_fb 105.3104 SET_CHAR_DECISION_MAKER gang12_fb carterb_DM GIVE_WEAPON_TO_CHAR gang12_fb WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang12_fb 2 SET_CHAR_HEALTH gang12_fb 150 SET_CHAR_MAX_HEALTH gang12_fb 150 gang12_fbflag = 0 IF gang12_fbflag = 0 IF NOT IS_CHAR_DEAD gang12_fb enemy_fb = gang12_fb GOSUB stayshoot_fblabel gang12_fbflag = 1 ENDIF ENDIF CREATE_CHAR PEDTYPE_MISSION1 BALLAS3 2558.4517 -1289.5217 1043.1328 gang13_fb SET_CHAR_HEADING gang13_fb 91.8235 SET_CHAR_DECISION_MAKER gang13_fb carterb_DM GIVE_WEAPON_TO_CHAR gang13_fb WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang13_fb 2 SET_CHAR_ACCURACY gang13_fb 20 gang13_fbflag = 0 IF gang13_fbflag = 0 IF NOT IS_CHAR_DEAD gang13_fb enemy_fb = gang13_fb GOSUB stayshootnoduck_fblabel gang13_fbflag = 1 ENDIF ENDIF CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2565.7219 -1293.1332 1044.0703 gang14_fb SET_CHAR_HEADING gang14_fb 85.0916 SET_CHAR_DECISION_MAKER gang14_fb carterb_DM GIVE_WEAPON_TO_CHAR gang14_fb WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang14_fb 2 SET_CHAR_HEALTH gang14_fb 150 SET_CHAR_MAX_HEALTH gang14_fb 150 gang14_fbflag = 0 IF gang14_fbflag = 0 IF NOT IS_CHAR_DEAD gang14_fb enemy_fb = gang14_fb GOSUB stayshoot_fblabel gang14_fbflag = 1 ENDIF ENDIF CREATE_CHAR PEDTYPE_MISSION1 BALLAS3 2557.1443 -1297.8053 1043.1305 gang15_fb SET_CHAR_HEADING gang15_fb 65.8333 SET_CHAR_DECISION_MAKER gang15_fb carterb_DM GIVE_WEAPON_TO_CHAR gang15_fb WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang15_fb 2 gang15_fbflag = 0 IF gang15_fbflag = 0 IF NOT IS_CHAR_DEAD gang15_fb enemy_fb = gang15_fb GOSUB stayshootnoduck_fblabel gang15_fbflag = 1 ENDIF ENDIF //mark as no longer needed IF gang9_fbflag = 1 IF IS_CHAR_DEAD gang9_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang9_fb gang9_fbflag = 2 ENDIF ENDIF IF gang10_fbflag = 1 IF IS_CHAR_DEAD gang10_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang10_fb gang10_fbflag = 2 ENDIF ENDIF IF gang11_fbflag = 1 IF IS_CHAR_DEAD gang11_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang11_fb gang11_fbflag = 2 ENDIF ENDIF IF gang12_fbflag = 1 IF IS_CHAR_DEAD gang12_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang12_fb gang12_fbflag = 2 ENDIF ENDIF IF gang13_fbflag = 1 IF IS_CHAR_DEAD gang13_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang13_fb gang13_fbflag = 2 ENDIF ENDIF IF gang14_fbflag = 1 IF IS_CHAR_DEAD gang14_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang14_fb gang14_fbflag = 2 ENDIF ENDIF IF gang15_fbflag = 1 IF IS_CHAR_DEAD gang15_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang15_fb gang15_fbflag = 2 ENDIF ENDIF finaleb_fbflag = 3 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////// 1st Floor //////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////// Corridor //////////////////////////////////////////////////////// IF finaleb_fbflag = 3 IF IS_CHAR_IN_AREA_3D scplayer 2571.39 -1308.59 1041.4 2584.08 -1272.85 1047.02 FALSE MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN REMOVE_BLIP extinguisher1_fbblip REMOVE_BLIP carter_fbblip ADD_BLIP_FOR_COORD 2565.56 -1301.7 1030.97 carter_fbblip SET_BLIP_ENTRY_EXIT carter_fbblip 2540.83 -1304.05 1.0 REMOVE_BLIP extinguisher1_fbblip REMOVE_ALL_SCRIPT_FIRES DELETE_CHAR gang7_fb DELETE_CHAR gang8_fb MARK_MODEL_AS_NO_LONGER_NEEDED FIRE_EX START_SCRIPT_FIRE 2575.7742 -1283.0548 1042.1328 0 3 fire1_fb START_SCRIPT_FIRE 2581.7437 -1297.5173 1039.0199 0 1 fire2_fb START_SCRIPT_FIRE 2570.4136 -1300.0470 1036.7812 0 3 fire3_fb START_SCRIPT_FIRE 2568.7798 -1299.9869 1036.7812 0 3 fire4_fb START_SCRIPT_FIRE 2577.2471 -1294.8145 1034.0480 0 1 fire5_fb START_SCRIPT_FIRE 2566.8335 -1282.4888 1030.4297 0 3 fire6_fb START_SCRIPT_FIRE 2567.9844 -1284.9739 1030.4297 0 2 fire7_fb START_SCRIPT_FIRE 2572.4019 -1304.5807 1030.4297 0 2 fire8_fb START_SCRIPT_FIRE 2570.7896 -1305.2994 1030.4297 0 1 fire9_fb //main room START_SCRIPT_FIRE 2556.55 -1301.88 1029.82 0 3 fire10_fb START_SCRIPT_FIRE 2556.83 -1303.91 1029.42 0 2 fire11_fb START_SCRIPT_FIRE 2556.01 -1305.31 1029.82 0 3 fire12_fb START_SCRIPT_FIRE 2553.16 -1297.94 1029.42 0 2 fire13_fb START_SCRIPT_FIRE 2552.43 -1297.31 1029.82 0 2 fire14_fb START_SCRIPT_FIRE 2552.15 -1294.97 1029.42 0 3 fire15_fb START_SCRIPT_FIRE 2547.77 -1285.41 1029.82 0 3 fire16_fb START_SCRIPT_FIRE 2547.40 -1284.33 1029.42 0 1 fire17_fb START_SCRIPT_FIRE 2547.77 -1282.32 1029.82 0 3 fire18_fb START_SCRIPT_FIRE 2545.93 -1292.47 1029.42 0 3 fire19_fb START_SCRIPT_FIRE 2545.48 -1290.81 1029.82 0 1 fire20_fb START_SCRIPT_FIRE 2544.11 -1292.71 1029.42 0 2 fire21_fb START_SCRIPT_FIRE 2539.75 -1299.17 1029.82 0 1 fire22_fb START_SCRIPT_FIRE 2539.25 -1297.76 1029.42 0 2 fire23_fb START_SCRIPT_FIRE 2540.58 -1280.24 1036.78 0 2 fire24_fb START_SCRIPT_FIRE 2540.40 -1281.22 1036.78 0 1 fire25_fb START_SCRIPT_FIRE 2529.85 -1294.27 1036.8 0 2 fire26_fb START_SCRIPT_FIRE 2545.85 -1307.04 1036.78 0 2 fire27_fb START_SCRIPT_FIRE 2547.47 -1306.59 1036.78 0 1 fire28_fb //gang1 //gang1 CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2579.9053 -1291.1630 1043.1250 gang1_fb SET_CHAR_HEADING gang1_fb 177.191 SET_CHAR_DECISION_MAKER gang1_fb carterb_DM GIVE_WEAPON_TO_CHAR gang1_fb WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang1_fb 2 gang1_fbflag = 0 // CREATE_CHAR PEDTYPE_MISSION1 BALLAS3 2567.4128 -1305.3245 1036.7812 gang2_fb SET_CHAR_HEADING gang2_fb 268.0134 SET_CHAR_DECISION_MAKER gang2_fb carterb_DM GIVE_WEAPON_TO_CHAR gang2_fb WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang2_fb WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang2_fb 2 SET_CHAR_HEALTH gang2_fb 150 SET_CHAR_MAX_HEALTH gang2_fb 150 gang2_fbflag = 0 CREATE_CHAR PEDTYPE_MISSION1 LSV2 2572.1150 -1301.5042 1036.7812 gang3_fb SET_CHAR_HEADING gang3_fb 61.2775 SET_CHAR_DECISION_MAKER gang3_fb carterb_DM GIVE_WEAPON_TO_CHAR gang3_fb WEAPONTYPE_EXTINGUISHER 99999 SET_CHAR_SHOOT_RATE gang3_fb 20 SET_CHAR_AREA_VISIBLE gang3_fb 2 SET_CHAR_HEALTH gang3_fb 5 TASK_SHOOT_AT_COORD gang3_fb 2570.2073 -1300.2378 1037.059 650000 gang3_fbflag = 0 CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2575.0068 -1284.8375 1030.4274 gang4_fb SET_CHAR_HEADING gang4_fb 170.5391 SET_CHAR_DECISION_MAKER gang4_fb carterb_DM GIVE_WEAPON_TO_CHAR gang4_fb WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang4_fb WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang4_fb 2 gang4_fbflag = 0 IF gang4_fbflag = 0 IF NOT IS_CHAR_DEAD gang4_fb enemy_fb = gang4_fb GOSUB stayshootnoduck_fblabel gang4_fbflag = 1 ENDIF ENDIF CREATE_CHAR PEDTYPE_MISSION1 BALLAS3 2568.0752 -1293.6281 1030.4297 gang5_fb SET_CHAR_HEADING gang5_fb 356.7112 SET_CHAR_DECISION_MAKER gang5_fb carterb_DM GIVE_WEAPON_TO_CHAR gang5_fb WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang5_fb 2 SET_CHAR_HEALTH gang5_fb 150 SET_CHAR_MAX_HEALTH gang5_fb 150 gang5_fbflag = 0 IF gang5_fbflag = 0 IF NOT IS_CHAR_DEAD gang5_fb enemy_fb = gang5_fb GOSUB stayshoot_fblabel gang5_fbflag = 1 ENDIF ENDIF CREATE_CHAR PEDTYPE_MISSION1 LSV2 2570.6257 -1297.4996 1030.4274 gang6_fb SET_CHAR_HEADING gang6_fb 3.5755 SET_CHAR_DECISION_MAKER gang6_fb carterb_DM GIVE_WEAPON_TO_CHAR gang6_fb WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang6_fb 2 gang6_fbflag = 0 IF gang6_fbflag = 0 IF NOT IS_CHAR_DEAD gang6_fb enemy_fb = gang6_fb GOSUB stayshoot_fblabel gang6_fbflag = 1 ENDIF ENDIF CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2570.9470 -1301.7192 1030.4297 gang7_fb SET_CHAR_HEADING gang7_fb 359.8018 SET_CHAR_DECISION_MAKER gang7_fb carterb_DM GIVE_WEAPON_TO_CHAR gang7_fb WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang7_fb 2 gang7_fbflag = 0 IF gang7_fbflag = 0 IF NOT IS_CHAR_DEAD gang7_fb enemy_fb = gang7_fb GOSUB stayshoot_fblabel gang7_fbflag = 1 ENDIF ENDIF finaleb_fbflag = 4 ENDIF ENDIF IF finaleb_fbflag = 4 IF gang1_fbflag = 0 IF NOT IS_CHAR_DEAD gang1_fb IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2577.6 -1289.91 1043.77 5.0 5.0 3.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang1_fb scplayer enemy_fb = gang1_fb enemyx_fb = 2579.9053 enemyy_fb = -1304.9850 enemyz_fb = 1036.7734 GOSUB runnostay_fblabel gang1_fbflag = 1 ENDIF ENDIF ENDIF IF gang2_fbflag = 0 IF NOT IS_CHAR_DEAD gang2_fb IF IS_CHAR_IN_AREA_3D scplayer 2577.88 -1309.87 1036.2 2563.87 -1289.87 1042.68 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang2_fb scplayer TASK_KILL_CHAR_ON_FOOT gang2_fb scplayer gang2_fbflag = 1 ENDIF ENDIF ENDIF IF gang7_fbflag = 1 IF NOT IS_CHAR_DEAD gang7_fb IF IS_CHAR_IN_AREA_3D scplayer 2573.3 -1281.03 1028.8 2563.7 -1300.61 1034.0 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang7_fb scplayer enemy_fb = gang7_fb enemyx_fb = 2570.9470 enemyy_fb = -1301.7192 enemyz_fb = 1030.4297 enemyx2_fb = 2558.7222 enemyy2_fb = -1301.8295 enemyz2_fb = 1030.4297 GOSUB run2shoot_fblabel gang7_fbflag = 2 ENDIF ENDIF ENDIF //mark as no longer needed IF gang1_fbflag = 1 IF IS_CHAR_DEAD gang1_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang1_fb gang1_fbflag = 2 ENDIF ENDIF IF gang2_fbflag = 1 IF IS_CHAR_DEAD gang2_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang2_fb gang2_fbflag = 2 ENDIF ENDIF IF gang3_fbflag = 1 IF IS_CHAR_DEAD gang3_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang3_fb gang3_fbflag = 2 ENDIF ENDIF IF gang4_fbflag = 1 IF IS_CHAR_DEAD gang4_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang4_fb gang4_fbflag = 2 ENDIF ENDIF IF gang5_fbflag = 1 IF IS_CHAR_DEAD gang5_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang5_fb gang5_fbflag = 2 ENDIF ENDIF IF gang6_fbflag = 1 IF IS_CHAR_DEAD gang6_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang6_fb gang6_fbflag = 2 ENDIF ENDIF IF gang7_fbflag = 1 OR gang7_fbflag = 1 IF IS_CHAR_DEAD gang7_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang7_fb gang7_fbflag = 2 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2565.94 -1301.96 1030.77 8.0 8.0 3.0 FALSE REMOVE_BLIP carter_fbblip ADD_BLIP_FOR_COORD 2528.78 -1293.94 1030.86 carter_fbblip SET_BLIP_ENTRY_EXIT carter_fbblip 2540.83 -1304.05 1.0 DELETE_CHAR gang9_fb DELETE_CHAR gang10_fb DELETE_CHAR gang11_fb DELETE_CHAR gang12_fb DELETE_CHAR gang13_fb DELETE_CHAR gang14_fb DELETE_CHAR gang15_fb //locate 2553.85 -1308.35 1028.6 2540.27 -1275.04 1033.2 CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2549.162 -1291.369 1030.467 gang10_fb SET_CHAR_HEADING gang10_fb 275.0 SET_CHAR_DECISION_MAKER gang10_fb carterb_DM GIVE_WEAPON_TO_CHAR gang10_fb WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang10_fb 2 SET_CHAR_HEALTH gang10_fb 150 SET_CHAR_MAX_HEALTH gang10_fb 150 gang10_fbflag = 0 IF gang10_fbflag = 0 IF NOT IS_CHAR_DEAD gang10_fb enemy_fb = gang10_fb GOSUB stayshoot_fblabel gang10_fbflag = 1 ENDIF ENDIF //locate 2542.24 -1308.67 1028.09 2527.86 -1276.9 1033.19 CREATE_CHAR PEDTYPE_MISSION1 BALLAS3 2534.88 -1292.009 1031.469 gang11_fb SET_CHAR_HEADING gang11_fb 275.0 SET_CHAR_DECISION_MAKER gang11_fb carterb_DM GIVE_WEAPON_TO_CHAR gang11_fb WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang11_fb WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang11_fb 2 gang11_fbflag = 0 IF gang11_fbflag = 0 IF NOT IS_CHAR_DEAD gang11_fb enemy_fb = gang11_fb GOSUB stayshootnoduck_fblabel gang11_fbflag = 1 ENDIF ENDIF CREATE_CHAR PEDTYPE_MISSION1 BALLAS3 2554.0334 -1287.0798 1030.4297 gang12_fb SET_CHAR_HEADING gang12_fb 270.0 SET_CHAR_DECISION_MAKER gang12_fb carterb_DM GIVE_WEAPON_TO_CHAR gang12_fb WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang12_fb 2 gang12_fbflag = 0 IF gang12_fbflag = 0 IF NOT IS_CHAR_DEAD gang12_fb enemy_fb = gang12_fb enemyx_fb = 2554.0334 enemyy_fb = -1287.0798 enemyz_fb = 1030.4297 shootimer_s4 = 1200 heading_fb = 270.0 GOSUB peekleft_fblabel gang12_fbflag = 1 ENDIF ENDIF CREATE_CHAR PEDTYPE_MISSION1 BALLAS3 2546.0071 -1287.1501 1030.4274 gang13_fb SET_CHAR_HEADING gang13_fb 270.0 SET_CHAR_DECISION_MAKER gang13_fb carterb_DM GIVE_WEAPON_TO_CHAR gang13_fb WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang13_fb 2 gang13_fbflag = 0 IF gang13_fbflag = 0 IF NOT IS_CHAR_DEAD gang13_fb enemy_fb = gang13_fb enemyx_fb = 2546.0071 enemyy_fb = -1287.1501 enemyz_fb = 1030.4274 shootimer_s4 = 2000 heading_fb = 270.0 GOSUB peekleft_fblabel gang13_fbflag = 1 ENDIF ENDIF CREATE_CHAR PEDTYPE_MISSION1 LSV2 2530.3970 -1291.3810 1036.7812 gang14_fb SET_CHAR_HEADING gang14_fb 278.2231 SET_CHAR_DECISION_MAKER gang14_fb carterb_DM GIVE_WEAPON_TO_CHAR gang14_fb WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang14_fb 2 gang14_fbflag = 0 IF gang14_fbflag = 0 IF NOT IS_CHAR_DEAD gang14_fb enemy_fb = gang14_fb GOSUB stayshootnoduck_fblabel gang14_fbflag = 1 ENDIF ENDIF CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2540.4434 -1306.6213 1036.7812 gang15_fb SET_CHAR_HEADING gang15_fb 328.6817 SET_CHAR_DECISION_MAKER gang15_fb carterb_DM GIVE_WEAPON_TO_CHAR gang15_fb WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang15_fb 2 gang15_fbflag = 0 IF gang15_fbflag = 0 IF NOT IS_CHAR_DEAD gang15_fb enemy_fb = gang15_fb GOSUB stayshootnoduck_fblabel gang15_fbflag = 1 ENDIF ENDIF CREATE_CHAR PEDTYPE_MISSION1 LSV2 2535.1111 -1304.9923 1030.4297 gang9_fb SET_CHAR_HEADING gang9_fb 328.6817 SET_CHAR_DECISION_MAKER gang9_fb carterb_DM GIVE_WEAPON_TO_CHAR gang9_fb WEAPONTYPE_M4 99999 SET_CHAR_AREA_VISIBLE gang9_fb 2 TASK_KILL_CHAR_ON_FOOT gang9_fb scplayer gang9_fbflag = 0 finaleb_fbflag = 5 ENDIF ENDIF ////////////////////////////////////////////////// Main room //////////////////////////////////////////////////////// IF finaleb_fbflag = 5 IF gang10_fbflag = 1 IF NOT IS_CHAR_DEAD gang10_fb IF IS_CHAR_IN_AREA_3D scplayer 2553.85 -1308.35 1028.6 2540.27 -1275.04 1033.2 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang10_fb scplayer OR IS_PLAYER_TARGETTING_CHAR PLAYER1 gang10_fb TASK_KILL_CHAR_ON_FOOT gang10_fb scplayer gang10_fbflag = 2 ENDIF ENDIF ENDIF IF gang11_fbflag = 1 IF NOT IS_CHAR_DEAD gang11_fb IF IS_CHAR_IN_AREA_3D scplayer 2542.24 -1308.67 1028.09 2527.86 -1276.9 1033.19 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang11_fb scplayer OR IS_PLAYER_TARGETTING_CHAR PLAYER1 gang11_fb TASK_KILL_CHAR_ON_FOOT gang11_fb scplayer gang11_fbflag = 2 ENDIF ENDIF ENDIF //mark as no longer needed IF gang10_fbflag = 1 OR gang9_fbflag = 2 IF IS_CHAR_DEAD gang10_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang10_fb gang10_fbflag = 3 ENDIF ENDIF IF gang11_fbflag = 1 OR gang9_fbflag = 2 IF IS_CHAR_DEAD gang11_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang11_fb gang11_fbflag = 3 ENDIF ENDIF IF gang12_fbflag = 1 IF NOT IS_CHAR_DEAD gang12_fb IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang12_fb scplayer OR LOCATE_CHAR_ANY_MEANS_CHAR_3D gang12_fb scplayer 5.0 5.0 3.0 FALSE IF NOT IS_CHAR_DEAD gang12_fb TASK_KILL_CHAR_ON_FOOT gang12_fb scplayer gang12_fbflag = 2 ELSE MARK_CHAR_AS_NO_LONGER_NEEDED gang12_fb gang12_fbflag = 2 ENDIF ENDIF ENDIF ENDIF IF gang12_fbflag = 1 OR gang12_fbflag = 2 IF IS_CHAR_DEAD gang12_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang12_fb gang12_fbflag = 3 ENDIF ENDIF IF gang13_fbflag = 1 IF NOT IS_CHAR_DEAD gang13_fb IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang13_fb scplayer OR LOCATE_CHAR_ANY_MEANS_CHAR_3D gang13_fb scplayer 5.0 5.0 3.0 FALSE IF NOT IS_CHAR_DEAD gang13_fb TASK_KILL_CHAR_ON_FOOT gang13_fb scplayer gang13_fbflag = 2 ELSE MARK_CHAR_AS_NO_LONGER_NEEDED gang13_fb gang13_fbflag = 2 ENDIF ENDIF ENDIF ENDIF IF gang13_fbflag = 1 OR gang13_fbflag = 2 IF IS_CHAR_DEAD gang13_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang13_fb gang13_fbflag = 3 ENDIF ENDIF IF gang14_fbflag = 1 IF IS_CHAR_DEAD gang14_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang14_fb gang14_fbflag = 2 ENDIF ENDIF IF gang15_fbflag = 1 IF IS_CHAR_DEAD gang15_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang15_fb gang15_fbflag = 2 ENDIF ENDIF IF gang9_fbflag = 1 IF IS_CHAR_DEAD gang9_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang9_fb gang9_fbflag = 2 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2528.53 -1293.96 1030.86 8.0 8.0 4.0 FALSE DELETE_CHAR gang1_fb DELETE_CHAR gang2_fb DELETE_CHAR gang3_fb DELETE_CHAR gang4_fb DELETE_CHAR gang5_fb DELETE_CHAR gang6_fb DELETE_CHAR gang7_fb REMOVE_SCRIPT_FIRE fire1_fb REMOVE_SCRIPT_FIRE fire2_fb REMOVE_SCRIPT_FIRE fire3_fb REMOVE_SCRIPT_FIRE fire4_fb REMOVE_SCRIPT_FIRE fire5_fb REMOVE_SCRIPT_FIRE fire6_fb REMOVE_SCRIPT_FIRE fire7_fb REMOVE_SCRIPT_FIRE fire8_fb REMOVE_SCRIPT_FIRE fire9_fb REMOVE_SCRIPT_FIRE fire10_fb REMOVE_SCRIPT_FIRE fire11_fb REMOVE_SCRIPT_FIRE fire12_fb REMOVE_SCRIPT_FIRE fire13_fb REMOVE_SCRIPT_FIRE fire14_fb REMOVE_SCRIPT_FIRE fire16_fb REMOVE_SCRIPT_FIRE fire18_fb REMOVE_SCRIPT_FIRE fire22_fb REMOVE_SCRIPT_FIRE fire24_fb REMOVE_SCRIPT_FIRE fire25_fb REMOVE_SCRIPT_FIRE fire26_fb START_SCRIPT_FIRE 2523.92 -1299.21 1030.78 0 3 fire1_fb START_SCRIPT_FIRE 2523.66 -1297.4 1030.8 0 1 fire2_fb START_SCRIPT_FIRE 2528.97 -1304.32 1030.77 0 2 fire3_fb START_SCRIPT_FIRE 2525.5 -1321.59 1030.75 0 2 fire4_fb START_SCRIPT_FIRE 2541.0 -1311.02 1028.09 0 2 fire6_fb REMOVE_PICKUP extinguisher2_fb CREATE_PICKUP_WITH_AMMO FIRE_EX PICKUP_ONCE 99999 2534.036 -1321.212 1031.469 extinguisher2_fb //corridor START_SCRIPT_FIRE 2540.69 -1320.01 1030.68 0 3 fire7_fb START_SCRIPT_FIRE 2540.2 -1316.76 1030.64 0 3 fire8_fb START_SCRIPT_FIRE 2540.61 -1317.43 1030.62 0 3 fire9_fb START_SCRIPT_FIRE 2540.35 -1318.39 1030.59 0 3 fire10_fb START_SCRIPT_FIRE 2540.5 -1319.58 1030.61 0 3 fire11_fb REMOVE_BLIP carter_fbblip ADD_BLIP_FOR_COORD 2540.92 -1304.14 1024.39 carter_fbblip SET_BLIP_ENTRY_EXIT carter_fbblip 2540.83 -1304.05 1.0 //gang1 CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2527.3677 -1319.5874 1030.4297 gang1_fb SET_CHAR_HEADING gang1_fb 1.4222 SET_CHAR_DECISION_MAKER gang1_fb carterb_DM GIVE_WEAPON_TO_CHAR gang1_fb WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang1_fb WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang1_fb 2 SET_CHAR_ACCURACY gang1_fb 30 gang1_fbflag = 0 // CREATE_CHAR PEDTYPE_MISSION1 BALLAS3 2528.2844 -1314.8649 1030.4297 gang2_fb SET_CHAR_HEADING gang2_fb 3.4628 SET_CHAR_DECISION_MAKER gang2_fb carterb_DM GIVE_WEAPON_TO_CHAR gang2_fb WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang2_fb WEAPONSKILL_PRO SET_CHAR_AREA_VISIBLE gang2_fb 2 gang2_fbflag = 0 IF gang2_fbflag = 0 IF NOT IS_CHAR_DEAD gang2_fb enemy_fb = gang2_fb GOSUB stayshoot_fblabel gang2_fbflag = 1 ENDIF ENDIF CREATE_CHAR PEDTYPE_MISSION1 LSV2 2524.0547 -1309.5328 1030.4297 gang3_fb SET_CHAR_HEADING gang3_fb 7.0010 SET_CHAR_DECISION_MAKER gang3_fb carterb_DM GIVE_WEAPON_TO_CHAR gang3_fb WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_AREA_VISIBLE gang3_fb 2 SET_CHAR_ACCURACY gang3_fb 30 gang3_fbflag = 0 finaleb_fbflag = 6 ENDIF ENDIF IF finaleb_fbflag = 6 IF gang1_fbflag = 0 IF NOT IS_CHAR_DEAD gang1_fb IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2527.07 -1293.72 1029.5 3.0 3.0 3.5 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang1_fb scplayer OR IS_PLAYER_TARGETTING_CHAR PLAYER1 gang1_fb TASK_KILL_CHAR_ON_FOOT gang1_fb scplayer gang1_fbflag = 1 ENDIF ENDIF ENDIF IF gang3_fbflag = 0 IF NOT IS_CHAR_DEAD gang3_fb IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer gang3_fb 7.0 7.0 3.5 FALSE OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR gang3_fb scplayer OR IS_PLAYER_TARGETTING_CHAR PLAYER1 gang3_fb enemy_fb = gang3_fb GOSUB rolloutr_fblabel gang3_fbflag = 1 ENDIF ENDIF ENDIF IF gang1_fbflag = 1 IF IS_CHAR_DEAD gang1_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang1_fb gang1_fbflag = 2 ENDIF ENDIF IF gang2_fbflag = 1 IF IS_CHAR_DEAD gang2_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang2_fb gang2_fbflag = 2 ENDIF ENDIF IF gang3_fbflag = 1 IF IS_CHAR_DEAD gang3_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang3_fb gang3_fbflag = 2 ENDIF ENDIF GET_CHAR_AREA_VISIBLE scplayer playervisible_fb IF playervisible_fb = 0 finaleb_fbflag = 7 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////// Ground Floor //////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF finaleb_fbflag = 7 SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 CLEAR_AREA 2506.2175 -1293.0929 200.0 200.0 FALSE REQUEST_ANIMATION DAM_JUMP REQUEST_ANIMATION FINALE LOAD_ALL_MODELS_NOW WHILE NOT HAS_ANIMATION_LOADED DAM_JUMP OR NOT HAS_ANIMATION_LOADED FINALE WAIT 0 ENDWHILE REMOVE_BLIP carter_fbblip ADD_BLIP_FOR_COORD 2522.82 -1272.52 34.151 carter_fbblip SET_CHAR_COORDINATES scplayer 2538.657 -1304.358 34.0 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS3 MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN REMOVE_ANIMATION SWAT MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED LSV2 MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED M4 MARK_MODEL_AS_NO_LONGER_NEEDED FIRE_EX DELETE_CHAR gang4_fb DELETE_CHAR gang5_fb DELETE_CHAR gang6_fb DELETE_CHAR gang7_fb DELETE_CHAR gang8_fb DELETE_CHAR gang9_fb DELETE_CHAR gang10_fb DELETE_CHAR gang11_fb DELETE_CHAR gang12_fb DELETE_CHAR gang13_fb DELETE_CHAR gang14_fb DELETE_CHAR gang15_fb REMOVE_PICKUP extinguisher1_fb REMOVE_PICKUP extinguisher2_fb REMOVE_PICKUP health1_fb REMOVE_PICKUP armour1_fb REMOVE_PICKUP armour2_fb REMOVE_PICKUP armour3_fb REMOVE_PICKUP health2_fb REMOVE_PICKUP armour4_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang1_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang2_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang3_fb CREATE_CHAR PEDTYPE_MISSION1 LSV2 2543.2000 -1277.6451 33.9609 gang1_fb SET_CHAR_HEADING gang1_fb 7.0010 SET_CHAR_DECISION_MAKER gang1_fb carterb_DM GIVE_WEAPON_TO_CHAR gang1_fb WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang1_fb WEAPONSKILL_PRO TASK_KILL_CHAR_ON_FOOT gang1_fb scplayer SET_CHAR_ACCURACY gang1_fb 10 gang1_fbflag = 1 CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2536.9165 -1283.4459 33.9609 gang2_fb SET_CHAR_HEADING gang2_fb 7.0010 SET_CHAR_DECISION_MAKER gang2_fb carterb_DM GIVE_WEAPON_TO_CHAR gang2_fb WEAPONTYPE_M4 99999 SET_CHAR_ACCURACY gang2_fb 10 gang2_fbflag = 0 IF gang2_fbflag = 0 IF NOT IS_CHAR_DEAD gang2_fb enemy_fb = gang2_fb GOSUB stayshootnoduck_fblabel gang2_fbflag = 1 ENDIF ENDIF CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2531.6565 -1287.2700 33.9602 gang3_fb SET_CHAR_HEADING gang3_fb 7.0010 SET_CHAR_DECISION_MAKER gang3_fb carterb_DM GIVE_WEAPON_TO_CHAR gang3_fb WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang3_fb WEAPONSKILL_PRO SET_CHAR_ACCURACY gang3_fb 10 gang3_fbflag = 0 IF gang3_fbflag = 0 IF NOT IS_CHAR_DEAD gang3_fb enemy_fb = gang3_fb GOSUB stayshoot_fblabel gang3_fbflag = 1 ENDIF ENDIF CREATE_CHAR PEDTYPE_MISSION1 LSV2 2539.5686 -1268.4714 33.9609 gang4_fb SET_CHAR_HEADING gang4_fb 2.21 SET_CHAR_DECISION_MAKER gang4_fb carterb_DM GIVE_WEAPON_TO_CHAR gang4_fb WEAPONTYPE_M4 99999 TASK_KILL_CHAR_ON_FOOT gang4_fb scplayer SET_CHAR_ACCURACY gang4_fb 20 gang4_fbflag = 1 REMOVE_ALL_SCRIPT_FIRES START_SCRIPT_FIRE 2538.45 -1281.4 34.34 0 3 fire19_fb START_SCRIPT_FIRE 2527.64 -1312.0 33.9 0 2 fire1_fb START_SCRIPT_FIRE 2527.58 -1303.3 34.4 0 1 fire2_fb START_SCRIPT_FIRE 2532.52 -1306.39 33.9 0 2 fire3_fb START_SCRIPT_FIRE 2528.08 -1284.9 34.3 0 2 fire4_fb START_SCRIPT_FIRE 2544.03 -1269.3 34.2 0 1 fire5_fb // START_SCRIPT_FIRE 2535.05 -1276.7 34.1 0 2 fire5_fb START_SCRIPT_FIRE 2536.26 -1302.49 34.0 0 2 fire6_fb START_SCRIPT_FIRE 2532.58 -1291.07 34.0 0 1 fire7_fb // START_SCRIPT_FIRE 2544.09 -1285.29 33.88 0 3 fire8_fb START_SCRIPT_FIRE 2528.64 -1269.64 34.0 0 1 fire11_fb START_SCRIPT_FIRE 2534.57 -1284.5 34.04 0 1 fire12_fb // START_SCRIPT_FIRE 2544.21 -1295.652 34.0 0 3 fire13_fb START_SCRIPT_FIRE 2531.99 -1268.71 34.0 0 2 fire10_fb START_SCRIPT_FIRE 2530.987 -1269.858 33.8 0 3 fire9_fb START_SCRIPT_FIRE 2532.39 -1270.4 34.0 0 3 fire14_fb START_SCRIPT_FIRE 2531.165 -1271.961 34.0 0 2 fire15_fb START_SCRIPT_FIRE 2532.529 -1272.169 34.0 0 1 fire16_fb START_SCRIPT_FIRE 2532.395 -1273.24 34.0 0 2 fire17_fb START_SCRIPT_FIRE 2531.94 -1274.46 33.8 0 3 fire18_fb finaleb_fbflag = 8 ENDIF IF finaleb_fbflag = 8 //mark as no longer needed IF gang1_fbflag = 1 IF IS_CHAR_DEAD gang1_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang1_fb gang1_fbflag = 2 ENDIF ENDIF IF gang2_fbflag = 1 IF IS_CHAR_DEAD gang2_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang2_fb gang2_fbflag = 2 ENDIF ENDIF IF gang3_fbflag = 1 IF IS_CHAR_DEAD gang3_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang3_fb gang3_fbflag = 2 ENDIF ENDIF IF gang4_fbflag = 1 IF IS_CHAR_DEAD gang4_fb MARK_CHAR_AS_NO_LONGER_NEEDED gang4_fb gang4_fbflag = 2 ENDIF ENDIF IF IS_CHAR_IN_AREA_3D scplayer 2545.59 -1278.26 31.36 2516.65 -1259.84 37.0 FALSE REMOVE_ALL_SCRIPT_FIRES SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED nLoop_fb = 0 WHILE nLoop_fb < 9 KILL_FX_SYSTEM fxPlayerSmoke_fb[nLoop_fb] nLoop_fb ++ ENDWHILE finaleb_fbflag = 9 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// Exit Cutscene ///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF finaleb_fbflag = 9 REMOVE_BLIP carter_fbblip SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL PLAYER1 OFF SET_DARKNESS_EFFECT FALSE -1 SET_NIGHT_VISION FALSE PLAYER_TAKE_OFF_GOGGLES PLAYER1 FALSE START_SCRIPT_FIRE 2532.62 -1272.65 34.31 0 1 fire1_fb START_SCRIPT_FIRE 2532.88 -1272.75 34.12 0 2 fire2_fb START_SCRIPT_FIRE 2527.9 -1272.5 34.8 0 2 fire4_fb START_SCRIPT_FIRE 2533.743 -1272.434 34.0 0 3 fire5_fb START_SCRIPT_FIRE 2533.743 -1272.434 34.0 0 2 fire6_fb START_SCRIPT_FIRE 2531.99 -1268.71 34.0 0 2 fire10_fb START_SCRIPT_FIRE 2530.987 -1269.858 33.8 0 3 fire9_fb START_SCRIPT_FIRE 2532.39 -1270.4 34.0 0 1 fire14_fb START_SCRIPT_FIRE 2531.165 -1271.961 34.0 0 2 fire15_fb START_SCRIPT_FIRE 2532.529 -1272.169 34.0 0 1 fire16_fb START_SCRIPT_FIRE 2532.395 -1273.24 34.0 0 3 fire17_fb START_SCRIPT_FIRE 2531.94 -1274.46 33.8 0 1 fire13_fb START_SCRIPT_FIRE 2532.433 -1275.658 34.0 0 3 fire3_fb SET_MAX_FIRE_GENERATIONS 3 camx_fb = 2526.9885 camy_fb = -1272.5771 camz_fb = 34.8419 lookcamx_fb = 2527.9875 lookcamy_fb = -1272.5565 lookcamz_fb = 34.8799 DELETE_CHAR gang1_fb DELETE_CHAR gang2_fb DELETE_CHAR gang3_fb DELETE_CHAR gang4_fb DELETE_CHAR gang5_fb SET_CHAR_COORDINATES scplayer 2538.45 -1281.4 34.34 SET_CHAR_HEADING scplayer 270.0 //76.23 SET_FIXED_CAMERA_POSITION camx_fb camy_fb camz_fb 0.0 0.0 0.0 //2517.78 1272.76 POINT_CAMERA_AT_POINT lookcamx_fb lookcamy_fb lookcamz_fb JUMP_CUT WAIT 2000 SET_CHAR_COORDINATES scplayer 2533.743 -1272.434 34.0 SET_CHAR_HEADING scplayer 90.0 //76.23 WAIT 500 //TASK_GO_STRAIGHT_TO_COORD scplayer 2508.62 -1272.47 34.938 PEDMOVE_SPRINT -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer Jump_Roll DAM_JUMP 8.0 FALSE FALSE FALSE TRUE -1 //VAR_INT camtime SET_TIME_OF_DAY 17 00 TIMERA = 0 SET_TIME_SCALE 0.3 finaleb_fbflag = 10 ENDIF //IF finaleb_fbflag > 9 // camtime = TIMERA // VIEW_INTEGER_VARIABLE camtime camtime //ENDIF IF finaleb_fbflag = 10 SET_FIXED_CAMERA_POSITION camx_fb camy_fb camz_fb 0.0 0.0 0.0 //2517.78 1272.76 POINT_CAMERA_AT_POINT lookcamx_fb lookcamy_fb lookcamz_fb JUMP_CUT IF camx_fb <= 2512.28 //LOCATE_CHAR_ANY_MEANS_2D scplayer 2515.62 -1272.47 2.0 2.0 FALSE TIMERA = 0 explosion_fbflag = 12 finaleb_fbflag = 11 ENDIF IF TIMERA > 500 // camx_fb = camx_fb - 0.27 //31 camx_fb -=@ 0.18 //15 //11 ENDIF IF TIMERA > 0 IF explosion_fbflag = 0 ADD_EXPLOSION_VARIABLE_SHAKE 2538.4 -1278.4 34.04 EXPLOSION_CAR 0.2 //0 explosion_fbflag = 1 ENDIF ENDIF IF TIMERA > 100 IF explosion_fbflag = 1 //ADD_EXPLOSION_VARIABLE_SHAKE 2540.36 -1275.04 34.34 EXPLOSION_GRENADE //100 explosion_fbflag = 2 ENDIF ENDIF IF TIMERA > 250 IF explosion_fbflag = 2 ADD_EXPLOSION_VARIABLE_SHAKE 2540.24 -1270.59 34.07 EXPLOSION_GRENADE 0.2 //250 REMOVE_SCRIPT_FIRE fire4_fb REMOVE_SCRIPT_FIRE fire1_fb explosion_fbflag = 3 ENDIF ENDIF IF TIMERA > 500 IF explosion_fbflag = 3 ADD_EXPLOSION_VARIABLE_SHAKE 2535.66 -1276.3 34.34 EXPLOSION_ROCKET 0.2 //500 explosion_fbflag = 4 ENDIF ENDIF IF TIMERA > 850 IF explosion_fbflag = 4 ADD_EXPLOSION_VARIABLE_SHAKE 2531.74 -1270.35 34.39 EXPLOSION_MOLOTOV 0.2 //500 REMOVE_SCRIPT_FIRE fire4_fb explosion_fbflag = 5 ENDIF ENDIF IF TIMERA > 1100 IF explosion_fbflag = 5 SET_TIME_SCALE 0.35 //ADD_EXPLOSION_VARIABLE_SHAKE 2534.36 -1272.31 34.36 EXPLOSION_CAR //1000 explosion_fbflag = 6 ENDIF ENDIF IF TIMERA > 1298 IF explosion_fbflag = 6 SET_TIME_SCALE 0.39 ADD_EXPLOSION_VARIABLE_SHAKE 2527.72 -1272.82 34.26 EXPLOSION_GRENADE 0.2 //1298 REMOVE_SCRIPT_FIRE fire5_fb explosion_fbflag = 7 ENDIF ENDIF IF TIMERA > 1400 IF explosion_fbflag = 7 SET_TIME_SCALE 0.42 ADD_EXPLOSION_VARIABLE_SHAKE 2529.54 -1270.12 34.31 EXPLOSION_ROCKET 0.22 //1298 explosion_fbflag = 8 ENDIF ENDIF IF TIMERA > 1500 IF explosion_fbflag = 8 SET_TIME_SCALE 0.44 ADD_EXPLOSION_VARIABLE_SHAKE 2524.15 -1272.31 34.42 EXPLOSION_CAR 0.25 //1298 REMOVE_SCRIPT_FIRE fire10_fb explosion_fbflag = 9 ENDIF ENDIF IF TIMERA > 1600 IF explosion_fbflag = 9 SET_TIME_SCALE 0.5 ADD_EXPLOSION_VARIABLE_SHAKE 2522.33 -1270.19 34.19 EXPLOSION_MOLOTOV 0.3 //1592 REMOVE_SCRIPT_FIRE fire1_fb REMOVE_SCRIPT_FIRE fire2_fb REMOVE_SCRIPT_FIRE fire5_fb REMOVE_SCRIPT_FIRE fire10_fb REMOVE_SCRIPT_FIRE fire9_fb REMOVE_SCRIPT_FIRE fire15_fb REMOVE_SCRIPT_FIRE fire16_fb REMOVE_SCRIPT_FIRE fire13_fb REMOVE_SCRIPT_FIRE fire3_fb explosion_fbflag = 10 ENDIF ENDIF IF TIMERA > 1700 IF explosion_fbflag = 10 ADD_EXPLOSION_VARIABLE_SHAKE 2524.14 -1270.04 34.19 EXPLOSION_ROCKET 0.25 //2076 START_SCRIPT_FIRE 2523.17 -1269.18 34.04 0 3 fire1_fb START_SCRIPT_FIRE 2522.47 -1271.46 34.15 0 2 fire2_fb START_SCRIPT_FIRE 2523.68 -1272.35 34.19 0 3 fire5_fb START_SCRIPT_FIRE 2523.18 -1273.32 34.06 0 2 fire10_fb START_SCRIPT_FIRE 2522.8 -1274.45 34.05 0 3 fire9_fb START_SCRIPT_FIRE 2522.42 -1276.4 34.05 0 2 fire15_fb START_SCRIPT_FIRE 2520.32 -1273.41 34.0 0 1 fire16_fb START_SCRIPT_FIRE 2521.32 -1273.41 34.0 0 1 fire13_fb START_SCRIPT_FIRE 2520.93 -1269.28 34.0 0 2 fire3_fb explosion_fbflag = 11 ENDIF ENDIF IF TIMERA > 1916 IF explosion_fbflag = 11 ADD_EXPLOSION_VARIABLE_SHAKE 2522.01 -1274.06 34.2 EXPLOSION_CAR 0.2 //2516 explosion_fbflag = 12 ENDIF ENDIF // IF TIMERA > 1916 // IF explosion_fbflag = 9 // ADD_EXPLOSION_VARIABLE_SHAKE 2519.3 -1272.06 34.05 EXPLOSION_ROCKET //2936 // explosion_fbflag = 10 // ENDIF // ENDIF ENDIF IF finaleb_fbflag = 11 //camtime = TIMERA //VIEW_INTEGER_VARIABLE camtime camtime IF camz_fb < 61.0 camz_fb +=@ 0.1 //05 camx_fb -=@ 0.02 lookcamz_fb +=@ 0.008 ENDIF SET_FIXED_CAMERA_POSITION camx_fb camy_fb camz_fb 0.0 0.0 0.0 //2517.78 1272.76 POINT_CAMERA_AT_POINT lookcamx_fb lookcamy_fb lookcamz_fb JUMP_CUT //1st floor IF explosion_fbflag = 12 IF TIMERA > 1400 ADD_EXPLOSION_VARIABLE_SHAKE 2521.46 -1268.02 39.8 EXPLOSION_GRENADE 0.2 //100 explosion_fbflag = 13 ENDIF ENDIF IF explosion_fbflag = 13 IF TIMERA > 1670 ADD_EXPLOSION_VARIABLE_SHAKE 2521.48 -1270.67 40.32 EXPLOSION_CAR 0.25 //100 explosion_fbflag = 14 ENDIF ENDIF IF explosion_fbflag = 14 IF TIMERA > 1800 ADD_EXPLOSION_VARIABLE_SHAKE 2521.32 -1275.86 40.47 EXPLOSION_ROCKET 0.2 //100 REMOVE_SCRIPT_FIRE fire4_fb REMOVE_SCRIPT_FIRE fire6_fb REMOVE_SCRIPT_FIRE fire14_fb REMOVE_SCRIPT_FIRE fire9_fb START_SCRIPT_FIRE 2521.46 -1268.02 39.8 1 2 fire4_fb START_SCRIPT_FIRE 22521.48 -1270.67 40.32 1 2 fire6_fb START_SCRIPT_FIRE 2521.32 -1275.86 40.47 1 1 fire14_fb explosion_fbflag = 15 ENDIF ENDIF IF explosion_fbflag = 15 IF TIMERA > 1950 ADD_EXPLOSION_VARIABLE_SHAKE 2521.42 -1273.18 39.83 EXPLOSION_ROCKET 0.2 //100 2525.43 -1280.65 40.28 ADD_EXPLOSION_VARIABLE_SHAKE 2525.43 -1280.65 40.28 EXPLOSION_CAR 0.2 //side explosion_fbflag = 16 ENDIF ENDIF //2nd floor IF explosion_fbflag = 16 IF TIMERA > 2200 ADD_EXPLOSION_VARIABLE_SHAKE 2521.27 -1270.64 43.25 EXPLOSION_ROCKET 0.2 //100 REMOVE_SCRIPT_FIRE fire17_fb REMOVE_SCRIPT_FIRE fire3_fb REMOVE_SCRIPT_FIRE fire19_fb REMOVE_SCRIPT_FIRE fire18_fb REMOVE_SCRIPT_FIRE fire10_fb START_SCRIPT_FIRE 2525.43 -1280.65 40.28 1 2 fire9_fb explosion_fbflag = 17 ENDIF ENDIF IF explosion_fbflag = 17 IF TIMERA > 2568 ADD_EXPLOSION_VARIABLE_SHAKE 2521.15 -1267.91 43.37 EXPLOSION_ROCKET 0.2 //100 ADD_EXPLOSION_VARIABLE_SHAKE 2525.89 -1281.0 43.79 EXPLOSION_CAR 0.2 //side START_SCRIPT_FIRE 2525.89 -1281.0 43.79 3 3 fire10_fb explosion_fbflag = 18 ENDIF ENDIF IF explosion_fbflag = 18 IF TIMERA > 3241 ADD_EXPLOSION_VARIABLE_SHAKE 2520.86 -1273.39 43.2 EXPLOSION_GRENADE 0.2 //100 START_SCRIPT_FIRE 2521.27 -1270.64 43.25 1 3 fire17_fb START_SCRIPT_FIRE 2521.15 -1267.91 43.37 2 2 fire3_fb START_SCRIPT_FIRE 2521.34 -1275.7 43.26 3 1 fire19_fb explosion_fbflag = 19 ENDIF ENDIF IF explosion_fbflag = 19 IF TIMERA > 3485 ADD_EXPLOSION_VARIABLE_SHAKE 2521.34 -1275.7 43.26 EXPLOSION_CAR 0.2 // explosion_fbflag = 20 ENDIF ENDIF //3rd floor IF explosion_fbflag = 20 IF TIMERA > 3708 ADD_EXPLOSION_VARIABLE_SHAKE 2521.15 -1275.61 47.83 EXPLOSION_ROCKET 0.2 //100 explosion_fbflag = 21 ENDIF ENDIF IF explosion_fbflag = 21 IF TIMERA > 4246 ADD_EXPLOSION_VARIABLE_SHAKE 2521.04 -1272.97 47.91 EXPLOSION_GRENADE 0.2 //100 REMOVE_SCRIPT_FIRE fire15_fb START_SCRIPT_FIRE 2525.88 -1279.99 48.43 3 2 fire2_fb explosion_fbflag = 22 ENDIF ENDIF IF explosion_fbflag = 22 IF TIMERA > 4708 ADD_EXPLOSION_VARIABLE_SHAKE 2521.24 -1267.9 48.15 EXPLOSION_CAR 0.2 //100 REMOVE_SCRIPT_FIRE fire1_fb REMOVE_SCRIPT_FIRE fire2_fb ADD_EXPLOSION_VARIABLE_SHAKE 2525.88 -1279.99 48.43 EXPLOSION_ROCKET 0.2 //side explosion_fbflag = 23 ENDIF ENDIF IF explosion_fbflag = 23 IF TIMERA > 5000 ADD_EXPLOSION_VARIABLE_SHAKE 2521.37 -1270.86 48.35 EXPLOSION_GRENADE 0.2 //100 START_SCRIPT_FIRE 2521.15 -1275.61 47.83 3 1 fire18_fb START_SCRIPT_FIRE 2521.04 -1272.97 47.91 2 2 fire1_fb START_SCRIPT_FIRE 2521.24 -1267.9 48.15 3 2 fire2_fb explosion_fbflag = 24 ENDIF ENDIF IF explosion_fbflag = 24 IF TIMERA > 3000 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_ONSCREEN_TIMER escapetimer_fb REMOVE_ANIMATION DAM_JUMP MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_MODEL_AS_NO_LONGER_NEEDED M4 MARK_MODEL_AS_NO_LONGER_NEEDED FIRE_EX SET_HEATHAZE_EFFECT FALSE DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_finaleB_passed finaleb_fbflag = 11 explosion_fbflag = 25 ENDIF ENDIF ENDIF GOTO mission_finaleB_loop runnostay_fblabel: OPEN_SEQUENCE_TASK runnostay_fbseq TASK_GO_STRAIGHT_TO_COORD -1 enemyx_fb enemyy_fb enemyz_fb PEDMOVE_RUN -1 TASK_TOGGLE_DUCK -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK runnostay_fbseq PERFORM_SEQUENCE_TASK enemy_fb runnostay_fbseq CLEAR_SEQUENCE_TASK runnostay_fbseq RETURN stayshoot_fblabel: OPEN_SEQUENCE_TASK stayshoot_fbseq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_TOGGLE_DUCK -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK stayshoot_fbseq PERFORM_SEQUENCE_TASK enemy_fb stayshoot_fbseq CLEAR_SEQUENCE_TASK stayshoot_fbseq RETURN stayshootnoduck_fblabel: OPEN_SEQUENCE_TASK stayshootnoduck_fbseq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK stayshootnoduck_fbseq PERFORM_SEQUENCE_TASK enemy_fb stayshootnoduck_fbseq CLEAR_SEQUENCE_TASK stayshootnoduck_fbseq RETURN run2shoot_fblabel: OPEN_SEQUENCE_TASK run2shoot_fbseq TASK_GO_STRAIGHT_TO_COORD -1 enemyx_fb enemyy_fb enemyz_fb PEDMOVE_RUN -1 TASK_GO_STRAIGHT_TO_COORD -1 enemyx2_fb enemyy2_fb enemyz2_fb PEDMOVE_RUN -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK run2shoot_fbseq PERFORM_SEQUENCE_TASK enemy_fb run2shoot_fbseq CLEAR_SEQUENCE_TASK run2shoot_fbseq RETURN rolloutr_fblabel: OPEN_SEQUENCE_TASK rolloutr_fbseq TASK_PLAY_ANIM -1 Crouch_Roll_R PED 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_TOGGLE_DUCK -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer //TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK rolloutr_fbseq PERFORM_SEQUENCE_TASK enemy_fb rolloutr_fbseq CLEAR_SEQUENCE_TASK rolloutr_fbseq RETURN peekright_fblabel: OPEN_SEQUENCE_TASK peekright_fbseq TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_R SWAT 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_in_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer shootimer_s4 TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM -1 enemyx_fb enemyy_fb enemyz_fb heading_fb -1.0 swt_wllshoot_out_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 //TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_out_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_R_back SWAT 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT peekright_fbseq 1 CLOSE_SEQUENCE_TASK peekright_fbseq PERFORM_SEQUENCE_TASK enemy_fb peekright_fbseq CLEAR_SEQUENCE_TASK peekright_fbseq RETURN peekleft_fblabel: OPEN_SEQUENCE_TASK peekleft_fbseq TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_L SWAT 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_in_L SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT_TIMED -1 scplayer shootimer_s4 TASK_STAY_IN_SAME_PLACE -1 FALSE TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM -1 enemyx_fb enemyy_fb enemyz_fb heading_fb -1.0 swt_wllshoot_out_R SWAT 8.0 FALSE TRUE TRUE FALSE -1 //TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllshoot_out_L SWAT 8.0 FALSE TRUE TRUE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 swt_wllpk_L_back SWAT 8.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT peekleft_fbseq 1 CLOSE_SEQUENCE_TASK peekleft_fbseq PERFORM_SEQUENCE_TASK enemy_fb peekleft_fbseq CLEAR_SEQUENCE_TASK peekleft_fbseq RETURN // Mission finaleB failed mission_finaleB_failed: PRINT_BIG M_FAIL 5000 1 IF cardead_fbflag = 1 PRINT_NOW RM4_46 5000 1 //~r~You wrecked your car! ENDIF IF displaygripbar_fbflag = 7 PRINT_NOW RM4_45 7000 1 //~r~Sweet died! You are supposed to catch him, next time get your car underneath Sweet when he begins to lose grip! ENDIF IF lostsweet_fbflag = 1 PRINT_NOW RM4_50 5000 1 //~r~You lost Sweet! Next time stay closer! ENDIF RETURN // mission finaleB passed mission_finaleB_passed: finalebplayerpass_flag = 1 CLEAR_WANTED_LEVEL player1 flag_riot_mission_counter++ RETURN // mission cleanup mission_cleanup_finaleB: SET_HEATHAZE_EFFECT FALSE SET_DARKNESS_EFFECT FALSE -1 REMOVE_ALL_SCRIPT_FIRES SET_WANTED_MULTIPLIER 1.0 SET_MAX_WANTED_LEVEL 6 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 CLEAR_ONSCREEN_TIMER escapetimer_fb MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS3 MARK_MODEL_AS_NO_LONGER_NEEDED LSV2 MARK_MODEL_AS_NO_LONGER_NEEDED NVGOGGLES MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED M4 MARK_MODEL_AS_NO_LONGER_NEEDED FIRE_EX REMOVE_CHAR_ELEGANTLY big_smoke REMOVE_CHAR_ELEGANTLY tenpenny_fb UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 REMOVE_ANIMATION SWAT REMOVE_ANIMATION DAM_JUMP MARK_MODEL_AS_NO_LONGER_NEEDED FIRELA MARK_MODEL_AS_NO_LONGER_NEEDED LAPD1 MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO MARK_MODEL_AS_NO_LONGER_NEEDED FELTZER MARK_MODEL_AS_NO_LONGER_NEEDED LSV2 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED MOLOTOV MARK_MODEL_AS_NO_LONGER_NEEDED la_fuckcar1 MARK_MODEL_AS_NO_LONGER_NEEDED la_fuckcar2 REMOVE_ANIMATION FINALE REMOVE_ANIMATION FINALE2 //REMOVE_BLIP sweet_fbblip REMOVE_BLIP carter_fbblip REMOVE_BLIP extinguisher1_fbblip //pickups REMOVE_PICKUP armour1_fb REMOVE_PICKUP armour2_fb REMOVE_PICKUP armour3_fb REMOVE_PICKUP armour4_fb REMOVE_PICKUP armour5_fb REMOVE_PICKUP health1_fb REMOVE_PICKUP health2_fb REMOVE_PICKUP health3_fb REMOVE_PICKUP extinguisher1_fb REMOVE_PICKUP extinguisher2_fb REMOVE_PICKUP ak_fb SWITCH_EMERGENCY_SERVICES ON SET_WANTED_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 nLoop_fb = 0 WHILE nLoop_fb < 9 KILL_FX_SYSTEM fxPlayerSmoke_fb[nLoop_fb] nLoop_fb ++ ENDWHILE //delete doors flag_player_on_mission = 0 MISSION_HAS_FINISHED IF finalebplayerpass_flag = 1 DO_FADE 0 FADE_OUT ENDIF RETURN } MISSION_START // ***************************************************************************************** // ************************************* finaleC **************************************** // ************************************* Carter Block ************************************** // *********** Inspired by Zelda, Metroid, MGS, Perfect Dark, Time Crisis, GTA ************* // ***************************************************************************************** // ***************************************************************************************** // Mission start stuff GOSUB mission_start_finaleC IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_finaleC_failed ENDIF GOSUB mission_cleanup_finaleC MISSION_END { LVAR_INT watched // if the player has watched all the credits // ********************************** Variables for shootout ********************************* LVAR_INT gang1_fc LVAR_INT gang2_fc LVAR_INT gang3_fc LVAR_INT gang4_fc LVAR_INT gang5_fc LVAR_INT gang6_fc LVAR_INT gang7_fc LVAR_INT gang8_fc LVAR_INT gang9_fc LVAR_INT gang10_fc LVAR_INT gang11_fc LVAR_INT gang12_fc LVAR_INT gang13_fc LVAR_INT gang14_fc LVAR_INT gang15_fc LVAR_INT tenpenny_fc LVAR_INT playervisible_fc //timer VAR_INT escapetimer_fc //particles & fire LVAR_INT fxPlayerSmoke_fc[9] LVAR_INT nLoop_fc LVAR_INT fire1_fc LVAR_INT fire2_fc LVAR_INT fire3_fc LVAR_INT fire4_fc LVAR_INT fire5_fc LVAR_INT fire6_fc LVAR_INT fire7_fc LVAR_INT fire8_fc LVAR_INT fire9_fc LVAR_INT fire10_fc LVAR_INT fire11_fc LVAR_INT fire12_fc LVAR_INT fire13_fc LVAR_INT fire14_fc LVAR_INT fire15_fc LVAR_INT fire16_fc LVAR_INT fire17_fc LVAR_INT fire18_fc LVAR_INT fire19_fc LVAR_INT fire20_fc LVAR_INT fire21_fc LVAR_INT fire22_fc LVAR_INT fire23_fc LVAR_INT fire24_fc LVAR_INT fire25_fc LVAR_INT fire26_fc LVAR_INT fire27_fc LVAR_INT fire28_fc LVAR_INT fire29_fc LVAR_INT fire30_fc LVAR_INT fire31_fc LVAR_INT fire32_fc LVAR_INT fire33_fc LVAR_INT fire34_fc LVAR_INT fire35_fc LVAR_INT fire36_fc //sequences LVAR_INT carterc_DM LVAR_INT stayshoot_fcseq LVAR_INT stayshootnoduck_fcseq LVAR_INT rolloutr_fcseq LVAR_INT peekright_fcseq LVAR_INT enemy_fc LVAR_INT peekleft_fcseq LVAR_FLOAT enemyx_fc LVAR_FLOAT enemyy_fc LVAR_FLOAT enemyz_fc LVAR_INT enemytarget_fc LVAR_INT enemytarget2_fc LVAR_INT run2shoot_fcseq LVAR_INT shootimer_s4 LVAR_FLOAT enemyx2_fc LVAR_FLOAT enemyy2_fc LVAR_FLOAT enemyz2_fc LVAR_FLOAT heading_fc //blips LVAR_INT sweet_fcblip LVAR_INT carter_fcblip LVAR_INT extinguisher1_fcblip //pickups LVAR_INT armour1_fc LVAR_INT armour2_fc LVAR_INT armour3_fc LVAR_INT armour4_fc LVAR_INT health1_fc LVAR_INT health2_fc LVAR_INT health3_fc LVAR_INT nightvision_fc LVAR_INT extinguisher1_fc LVAR_INT extinguisher2_fc //flags LVAR_INT finaleC_fcflag LVAR_INT floorg_fcflag LVAR_INT floor1_fcflag LVAR_INT floor2_fcflag LVAR_INT floor3_fcflag LVAR_INT gang1_fcflag LVAR_INT gang2_fcflag LVAR_INT gang3_fcflag LVAR_INT gang4_fcflag LVAR_INT gang5_fcflag LVAR_INT gang6_fcflag LVAR_INT gang7_fcflag LVAR_INT gang8_fcflag LVAR_INT gang9_fcflag LVAR_INT gang10_fcflag LVAR_INT gang11_fcflag LVAR_INT gang12_fcflag LVAR_INT gang13_fcflag LVAR_INT gang14_fcflag LVAR_INT gang15_fcflag LVAR_INT tenpennycut_fcflag LVAR_INT explosion_fcflag LVAR_INT timerout_fcflag LVAR_INT helptext_fcflag ////////////////////////////////////////////////// chase stuff LVAR_INT firetruck_fc LVAR_INT benz_fc LVAR_INT cop1_fc LVAR_INT cop2_fc LVAR_INT cop3_fc LVAR_INT train_fc LVAR_INT copladder_fc LVAR_INT coptruck_fc LVAR_FLOAT carheading_fc LVAR_FLOAT sweet_thisheading_fc LVAR_FLOAT sweet_lastheading_fc LVAR_FLOAT headingdiff_fc LVAR_FLOAT sweetanimtime_fc LVAR_INT gangcar1_fc LVAR_INT gangcar2_fc LVAR_INT gangcar3_fc LVAR_INT gangcar4_fc LVAR_INT gangcar5_fc LVAR_FLOAT copladder_fcanimtime LVAR_FLOAT number_of_frames_fc LVAR_FLOAT diffx_fc LVAR_FLOAT diffy_fc LVAR_FLOAT diffz_fc LVAR_FLOAT Worldx_fc LVAR_FLOAT Worldy_fc LVAR_FLOAT Worldz_fc LVAR_FLOAT stepx_fc LVAR_FLOAT stepy_fc LVAR_FLOAT stepz_fc LVAR_FLOAT sweetx_fc LVAR_FLOAT sweety_fc LVAR_FLOAT sweetz_fc //counter VAR_INT gripbar_fc VAR_FLOAT fgripbardisplay_fc VAR_INT igripbardisplay_fc //this is actual display //sequences LVAR_INT chasekill_fcseq //text LVAR_TEXT_LABEL $text_label_fc LVAR_INT audio_label_fc LVAR_TEXT_LABEL $input_text_fc //flags LVAR_INT sweethang_fcflag LVAR_INT finaleCchase_fcflag LVAR_INT sweetlegsup_fcflag LVAR_INT locatestage_fcflag LVAR_INT speedup_fcflag LVAR_INT createtrain_fcflag LVAR_INT copladder_fcflag LVAR_INT coptruck_fcflag LVAR_INT displaygripbar_fcflag LVAR_INT cardensity_fcflag LVAR_INT notincar_fcflag LVAR_INT cardead_fcflag LVAR_INT lostsweet_fcflag LVAR_INT progressaudio_fcflag LVAR_INT handlingudio_fcflag LVAR_INT stagechase_fcflag LVAR_INT actiontext_fcflag ///////////////////////////////////////////////// ////////////////////////////////////////////////// rails1 stuff LVAR_INT cop4_fc VAR_INT health_fc LVAR_INT mexcar1_fc LVAR_INT mexcar2_fc LVAR_INT mexcar3_fc LVAR_INT ecar1_fc LVAR_INT ecar2_fc LVAR_INT bike1_fc LVAR_INT bike2_fc LVAR_INT bike3_fc LVAR_INT bike4_fc LVAR_INT copcar1_fc LVAR_INT copcar2_fc LVAR_INT driverofcar_fc LVAR_INT gang16_fc LVAR_INT gang17_fc LVAR_INT gang18_fc LVAR_INT rioter1_fc LVAR_INT rioter2_fc LVAR_INT rioter3_fc LVAR_INT rioter4_fc LVAR_INT rioter5_fc LVAR_INT rioter6_fc LVAR_INT rioter7_fc LVAR_INT rioter8_fc LVAR_INT rioter9_fc LVAR_INT rioter10_fc LVAR_INT rioter11_fc LVAR_INT rioter12_fc LVAR_INT rioter13_fc LVAR_INT rioter14_fc LVAR_INT parkedcar_fc //counter VAR_INT carhealth_fc //blips LVAR_INT mexcar1_fcblip LVAR_INT mexcar2_fcblip LVAR_INT mexcar3_fcblip LVAR_INT ecar1_fcblip LVAR_INT ecar2_fcblip LVAR_INT bike1_fcblip LVAR_INT bike2_fcblip LVAR_INT bike3_fcblip LVAR_INT bike4_fcblip LVAR_INT copcar1_fcblip LVAR_INT copcar2_fcblip //flags VAR_INT finalerails_fcflag VAR_INT rails_fcflag VAR_INT rioters_fcflag LVAR_INT copcar1_fcflag LVAR_INT copcar2_fcflag LVAR_INT mexcar1_fcflag LVAR_INT mexcar2_fcflag LVAR_INT mexcar3_fcflag LVAR_INT ecar1_fcflag LVAR_INT ecar2_fcflag LVAR_INT bike1_fcflag LVAR_INT bike2_fcflag LVAR_INT bike3_fcflag LVAR_INT bike4_fcflag LVAR_INT copcar1swap_fcflag LVAR_INT copcar2swap_fcflag LVAR_INT mexcar1swap_fcflag LVAR_INT mexcar2swap_fcflag LVAR_INT mexcar3swap_fcflag LVAR_INT ecar1swap_fcflag LVAR_INT ecar2swap_fcflag LVAR_INT bike1swap_fcflag LVAR_INT bike2swap_fcflag LVAR_INT bike3swap_fcflag LVAR_INT bike4swap_fcflag ///////////////////////////////////////////////// ////////////////////////////////////////////////// rails2 stuff LVAR_INT policeheli_fc LVAR_INT copcar3_fc LVAR_INT cop5_fc LVAR_INT cop6_fc LVAR_INT copcar4_fc LVAR_INT cop7_fc LVAR_INT cop8_fc //blips LVAR_INT copcar3_fcblip LVAR_INT copcar4_fcblip //fx LVAR_INT spark1_fxfc LVAR_INT spark2_fxfc LVAR_INT spark3_fxfc LVAR_INT spark4_fxfc LVAR_INT spark5_fxfc LVAR_INT spark6_fxfc LVAR_INT spark7_fxfc LVAR_INT spark8_fxfc //flags LVAR_INT finalcut_fcflag LVAR_INT lastrails_fcflag LVAR_INT playercontrol_fcflag LVAR_INT explodecar_fcflag LVAR_INT rioters2_fcflag LVAR_INT copcar3_fcflag LVAR_INT copcar3swap_fcflag LVAR_INT copcar4_fcflag LVAR_INT copcar4swap_fcflag LVAR_INT skipcredits_fcflag ///////////////////////////////////////////////// // **************************************** Mission Start ************************************ mission_start_finaleC: flag_player_on_mission = 1 SCRIPT_NAME finaleC WAIT 0 LOAD_MISSION_TEXT RIOT4 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY carterc_DM // **************************************** Declare Variables ************************************ watched = 0 finaleC_fcflag = 11 floorg_fcflag = 0 floor1_fcflag = 0 floor2_fcflag = 0 floor3_fcflag = 0 gang1_fcflag = 0 gang2_fcflag = 0 gang3_fcflag = 0 gang4_fcflag = 0 gang5_fcflag = 0 gang6_fcflag = 0 gang7_fcflag = 0 gang8_fcflag = 0 gang9_fcflag = 0 gang10_fcflag = 0 gang11_fcflag = 0 gang12_fcflag = 0 gang13_fcflag = 0 gang14_fcflag = 0 gang15_fcflag = 0 tenpennycut_fcflag = 0 explosion_fcflag = 0 timerout_fcflag = 0 helptext_fcflag = 0 escapetimer_fc = 450000 //chase sweethang_fcflag = 0 finaleCchase_fcflag = 0 sweetlegsup_fcflag = 0 locatestage_fcflag = 0 speedup_fcflag = 0 createtrain_fcflag = 0 copladder_fcflag = 0 coptruck_fcflag = 0 displaygripbar_fcflag = 0 cardensity_fcflag = 0 notincar_fcflag = 0 cardead_fcflag = 0 lostsweet_fcflag = 0 progressaudio_fcflag = 0 handlingudio_fcflag = 0 stagechase_fcflag = 0 //rails 1 //flags finalerails_fcflag = 0 rails_fcflag = 0 rioters_fcflag = 0 copcar1_fcflag = 0 copcar2_fcflag = 0 mexcar1_fcflag = 0 mexcar2_fcflag = 0 mexcar3_fcflag = 0 ecar1_fcflag = 0 ecar2_fcflag = 0 bike1_fcflag = 0 bike2_fcflag = 0 bike3_fcflag = 0 bike4_fcflag = 0 copcar1swap_fcflag = 0 copcar2swap_fcflag = 0 mexcar1swap_fcflag = 0 mexcar2swap_fcflag = 0 mexcar3swap_fcflag = 0 ecar1swap_fcflag = 0 ecar2swap_fcflag = 0 bike1swap_fcflag = 0 bike2swap_fcflag = 0 bike3swap_fcflag = 0 bike4swap_fcflag = 0 actiontext_fcflag = 0 //rails 2 //flag finalcut_fcflag = 0 lastrails_fcflag = 0 playercontrol_fcflag = 0 explodecar_fcflag = 0 rioters2_fcflag = 0 copcar3_fcflag = 0 copcar3swap_fcflag = 0 copcar4_fcflag = 0 copcar4swap_fcflag = 0 skipcredits_fcflag = 0 // ********************************************************************************************** SET_MAX_FIRE_GENERATIONS 0 SET_WANTED_MULTIPLIER 0.0 SWITCH_EMERGENCY_SERVICES OFF REQUEST_MODEL FIRELA REQUEST_MODEL LAPD1 REQUEST_MODEL GREENWOO REQUEST_MODEL FELTZER REQUEST_MODEL LSV2 REQUEST_MODEL BALLAS1 REQUEST_MODEL MICRO_UZI REQUEST_MODEL MOLOTOV REQUEST_MODEL la_fuckcar1 REQUEST_MODEL la_fuckcar2 REQUEST_ANIMATION FINALE REQUEST_ANIMATION FINALE2 REQUEST_CAR_RECORDING 288 REQUEST_CAR_RECORDING 289 LOAD_SPECIAL_CHARACTER 1 SWEET LOAD_SPECIAL_CHARACTER 2 TENPEN REQUEST_CAR_RECORDING 290 //for on rails REQUEST_CAR_RECORDING 291 LOAD_MISSION_AUDIO 1 SOUND_ROT4_HA //Tenpenny, you motherfucking piece of shit! LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED FIRELA OR NOT HAS_MODEL_LOADED LAPD1 OR NOT HAS_MODEL_LOADED GREENWOO OR NOT HAS_MODEL_LOADED FELTZER OR NOT HAS_MODEL_LOADED LSV2 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED BALLAS1 OR NOT HAS_MODEL_LOADED MICRO_UZI OR NOT HAS_MODEL_LOADED MOLOTOV OR NOT HAS_MODEL_LOADED la_fuckcar1 OR NOT HAS_MODEL_LOADED la_fuckcar2 WAIT 0 ENDWHILE WHILE NOT REQUEST_ANIMATION FINALE OR NOT REQUEST_ANIMATION FINALE2 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 288 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 289 OR NOT HAS_SPECIAL_CHARACTER_LOADED 1 WAIT 0 ENDWHILE WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 290 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 291 WAIT 0 ENDWHILE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL PLAYER1 OFF SET_CHAR_COORDINATES scplayer 2515.771 -1277.474 33.728 SET_CHAR_HEADING scplayer 144.159 TASK_PLAY_ANIM scplayer KO_SKID_BACK PED 1000.0 FALSE FALSE FALSE TRUE -1 WAIT 250 CREATE_CAR FIRELA 2508.649 -1295.866 33.92 firetruck_fc SET_CAR_HEADING firetruck_fc 0.3186 CONTROL_MOVABLE_VEHICLE_PART firetruck_fc 0.7 SET_CAR_PROOFS firetruck_fc TRUE TRUE TRUE TRUE TRUE SET_CAR_CAN_BE_VISIBLY_DAMAGED firetruck_fc FALSE // CREATE_CAR GREENWOO 2508.941 -1306.517 33.92 sweet_car SET_CAR_HEADING sweet_car 165.3186 CHANGE_CAR_COLOUR sweet_car 59 34 CUSTOM_PLATE_FOR_NEXT_CAR FELTZER &_IMY_AK CREATE_CAR FELTZER 2515.8948 -1269.4077 33.7844 benz_fc SET_CAR_HEADING benz_fc 359.2572 SET_CAR_PROOFS benz_fc TRUE TRUE TRUE TRUE TRUE SET_CAR_HEALTH benz_fc 2000 SET_CAN_BURST_CAR_TYRES benz_fc FALSE SET_CAR_CAN_BE_VISIBLY_DAMAGED benz_fc FALSE CHANGE_CAR_COLOUR benz_fc 1 CARCOLOUR_LIGHTBLUEGREY CREATE_CHAR PEDTYPE_SPECIAL SPECIAL02 2506.2175 -1293.0929 33.8438 tenpenny_fc SET_CHAR_HEADING tenpenny_fc 271.9809 SET_CHAR_PROOFS tenpenny_fc TRUE TRUE TRUE TRUE TRUE SET_CHAR_DECISION_MAKER tenpenny_fc carterc_DM CREATE_CHAR_AS_PASSENGER firetruck_fc PEDTYPE_MISSION1 LAPD1 0 copladder_fc SET_CHAR_PROOFS copladder_fc TRUE TRUE TRUE TRUE TRUE SET_CHAR_DECISION_MAKER copladder_fc carterc_DM CREATE_CHAR PEDTYPE_SPECIAL SPECIAL01 0.0 0.0 0.0 sweet SET_CHAR_PROOFS sweet TRUE TRUE TRUE TRUE TRUE SET_CHAR_HEADING sweet 0.3186 SET_CHAR_DECISION_MAKER sweet carterc_DM IF NOT IS_CAR_DEAD firetruck_fc ATTACH_CHAR_TO_CAR sweet firetruck_fc 0.0 -8.227 -1000.156 FACING_FORWARD 0.0 WEAPONTYPE_UNARMED //0.0 -7.48 -1000.316 ENDIF SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_DENSITY_MULTIPLIER 0.0 CLEAR_AREA 2506.2175 -1293.0929 200.0 200.0 FALSE SWITCH_RANDOM_TRAINS OFF DELETE_ALL_TRAINS SET_TIME_SCALE 1.0 SUPPRESS_CAR_MODEL FELTZER SUPPRESS_CAR_MODEL FIRELA START_SCRIPT_FIRE 2521.3916 -1269.3434 34.1609 0 3 fire10_fc START_SCRIPT_FIRE 2521.7007 -1270.2931 34.2031 0 2 fire11_fc START_SCRIPT_FIRE 2523.5796 -1271.2247 34.2918 0 3 fire12_fc START_SCRIPT_FIRE 2518.5759 -1284.4672 34.0265 0 2 fire13_fc START_SCRIPT_FIRE 2521.5996 -1270.8846 40.4338 0 3 fire14_fc START_SCRIPT_FIRE 2521.6619 -1267.6564 43.8955 0 2 fire15_fc START_SCRIPT_FIRE 2521.6736 -1275.7067 43.7437 0 3 fire16_fc START_SCRIPT_FIRE 2521.5059 -1275.7814 40.4019 0 2 fire17_fc START_SCRIPT_FIRE 2522.6797 -1280.3970 39.1158 0 3 fire18_fc START_SCRIPT_FIRE 2521.6755 -1279.3521 39.1120 0 3 fire19_fc START_SCRIPT_FIRE 2521.7136 -1278.6392 37.4041 0 2 fire20_fc SHUT_CHAR_UP scplayer TRUE SET_RAILTRACK_RESISTANCE_MULT 0.3 WAIT 500 LOAD_SCENE_IN_DIRECTION 2504.96 -1309.16 34.44 334.0 SET_TIME_OF_DAY 17 00 SET_MAX_WANTED_LEVEL 0 DO_FADE 1000 FADE_IN finaleC_fcflag = 11 mission_finaleC_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S GOTO mission_finalec_passed ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// Firetruck Cutscene //////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD firetruck_fc IF NOT IS_CHAR_DEAD sweet IF NOT IS_CHAR_DEAD tenpenny_fc IF NOT IS_CAR_DEAD benz_fc IF finaleC_fcflag = 11 SET_FIXED_CAMERA_POSITION 2502.7925 -1296.2798 35.3797 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2503.3779 -1295.4691 35.3873 JUMP_CUT TASK_ENTER_CAR_AS_DRIVER tenpenny_fc firetruck_fc -1 TIMERA = 0 finaleC_fcflag = 12 ENDIF IF finaleC_fcflag = 12 IF TIMERA > 1750 TASK_PLAY_ANIM scplayer GETUP_FRONT PED 8.0 FALSE FALSE FALSE FALSE -1 finaleC_fcflag = 13 ENDIF ENDIF IF finaleC_fcflag = 13 IF IS_CHAR_SITTING_IN_CAR tenpenny_fc firetruck_fc TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_jump_on FINALE 1000.0 FALSE FALSE FALSE TRUE -1 LOCK_CAR_DOORS firetruck_fc CARLOCK_LOCKED sweethang_fcflag = 1 TIMERA = 0 finaleC_fcflag = 14 ENDIF ENDIF IF finaleC_fcflag = 14 SET_FIXED_CAMERA_POSITION 2515.4448 -1299.7101 36.5622 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2514.6670 -1300.3102 36.4758 JUMP_CUT finaleC_fcflag = 15 ENDIF IF finaleC_fcflag = 15 IF TIMERA > 1400 CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE SET_NEAR_CLIP 0.1 CAMERA_SET_VECTOR_TRACK 2514.6670 -1300.3102 36.4758 2514.9463 -1282.2650 35.6876 4000 FALSE CAMERA_SET_VECTOR_MOVE 2515.4448 -1299.7101 36.5622 2515.4819 -1282.2650 35.7130 4000 FALSE finaleC_fcflag = 16 ENDIF ENDIF IF finaleC_fcflag = 16 IF TIMERA > 2220 //2220 START_PLAYBACK_RECORDED_CAR firetruck_fc 288 SET_CHAR_COORDINATES scplayer 2513.49 -1277.77 34.19 finaleC_fcflag = 17 ENDIF ENDIF IF finaleC_fcflag = 17 IF NOT CAMERA_IS_VECTOR_TRACK_RUNNING CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE 2515.4819 -1282.2650 35.7130 2515.4819 -1283.1001 35.7130 4000 FALSE CAMERA_SET_VECTOR_TRACK 2514.9463 -1282.2650 35.6876 2515.7190 -1282.1357 35.6959 4000 FALSE finaleC_fcflag = 18 ENDIF ENDIF IF finaleC_fcflag = 18 IF IS_PLAYBACK_GOING_ON_FOR_CAR firetruck_fc IF TIMERA > 4999 SET_PLAYBACK_SPEED firetruck_fc 0.75 finaleC_fcflag = 19 ENDIF ENDIF ENDIF IF finaleC_fcflag = 19 IF TIMERA > 6000 TASK_ENTER_CAR_AS_DRIVER scplayer benz_fc -1 finaleC_fcflag = 20 ENDIF ENDIF IF finaleC_fcflag = 20 IF TIMERA > 10500 IF IS_CHAR_IN_CAR scplayer benz_fc CAMERA_RESET_NEW_SCRIPTABLES RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL PLAYER1 ON helptext_fcflag = 1 CLEAR_PRINTS PRINT_NOW RM4_41 8000 1 //~s~Follow Tenpenny and make sure ~b~Sweet ~s~is safe stay close to the firetruck and do not lose Tenpenny. PRINT RM4_42 5000 1 //~s~Do not attempt to damage the firetruck or you may injure ~b~Sweet~s~. SET_PED_DENSITY_MULTIPLIER 0.2 MARK_CAR_AS_NO_LONGER_NEEDED sweet_car MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO CREATE_OBJECT la_fuckcar2 2597.36 -1044.735 69.196 gangcar3_fc SET_OBJECT_DYNAMIC gangcar3_fc TRUE SET_OBJECT_HEADING gangcar3_fc 0.0 SET_OBJECT_ROTATION gangcar3_fc 0.0 180.0 0.0 CREATE_OBJECT la_fuckcar1 2598.7 -1050.94 69.23 gangcar4_fc SET_OBJECT_HEADING gangcar4_fc 180.0 SET_OBJECT_DYNAMIC gangcar4_fc TRUE CREATE_CHAR PEDTYPE_MISSION1 LSV2 2600.99 -1050.01 69.04 gang11_fc SET_CHAR_HEADING gang11_fc 274.892 SET_CHAR_DECISION_MAKER gang11_fc carterc_DM GIVE_WEAPON_TO_CHAR gang11_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang11_fc TRUE enemy_fc = gang11_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV2 2597.21 -1040.14 69.48 gang12_fc SET_CHAR_HEADING gang12_fc 274.892 SET_CHAR_DECISION_MAKER gang12_fc carterc_DM GIVE_WEAPON_TO_CHAR gang12_fc WEAPONTYPE_MICRO_UZI 99999 SET_CHAR_WEAPON_SKILL gang12_fc WEAPONSKILL_PRO SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang12_fc TRUE enemy_fc = gang12_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV2 2604.991 -1038.172 69.619 gang13_fc SET_CHAR_HEADING gang13_fc 274.892 SET_CHAR_DECISION_MAKER gang13_fc carterc_DM GIVE_WEAPON_TO_CHAR gang13_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang13_fc TRUE enemy_fc = gang13_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel START_SCRIPT_FIRE 2598.54 -1044.53 68.5 0 3 fire1_fc START_SCRIPT_FIRE 2600.99 -1050.01 69.04 0 3 fire2_fc START_SCRIPT_FIRE 2599.88 -1052.4 68.06 0 3 fire3_fc finaleC_fcflag = 21 ENDIF ENDIF ENDIF IF finaleC_fcflag = 21 STOP_PLAYBACK_RECORDED_CAR firetruck_fc START_PLAYBACK_RECORDED_CAR firetruck_fc 289 ADD_BLIP_FOR_CHAR sweet sweet_fcblip SET_BLIP_AS_FRIENDLY sweet_fcblip TRUE CHANGE_BLIP_DISPLAY sweet_fcblip BLIP_ONLY TIMERA = 0 CLEAR_MISSION_AUDIO 1 progressaudio_fcflag = 0 handlingudio_fcflag = 0 finaleCchase_fcflag = 1 finaleC_fcflag = 22 ENDIF //get sweet hanging initially IF sweethang_fcflag = 1 IF IS_CHAR_PLAYING_ANIM sweet FIN_jump_on GET_CHAR_ANIM_CURRENT_TIME sweet FIN_jump_on sweetanimtime_fc IF sweetanimtime_fc = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_HANG_LOOP FINALE 4.0 FALSE FALSE FALSE TRUE -1 sweethang_fcflag = 2 ENDIF ENDIF ENDIF IF finaleC_fcflag > 13 IF helptext_fcflag = 0 GOSUB process_audio_fc //play mission audio IF progressaudio_fcflag = 0 IF handlingudio_fcflag = 0 audio_label_fc = SOUND_ROT4_HA //Tenpenny, you motherfucking piece of shit! $input_text_fc = ROT4_HA //Tenpenny, you motherfucking piece of shit! GOSUB load_audio_fc ENDIF ENDIF IF progressaudio_fcflag = 1 IF handlingudio_fcflag = 0 audio_label_fc = SOUND_ROT4_HB //I ain’t letting you get away with all you’ve done! $input_text_fc = ROT4_HB //I ain’t letting you get away with all you’ve done! GOSUB load_audio_fc ENDIF ENDIF IF progressaudio_fcflag = 2 IF handlingudio_fcflag = 0 audio_label_fc = SOUND_ROT4_DB //Sweet, no! $input_text_fc = ROT4_DB //Sweet, no! GOSUB load_audio_fc ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //car dead IF finaleCchase_fcflag = 1 OR finaleCchase_fcflag = 2 IF IS_CAR_DEAD benz_fc cardead_fcflag = 1 GOTO mission_finaleC_failed ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// Firetruck Chase /////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF finaleCchase_fcflag = 1 IF NOT IS_CAR_DEAD firetruck_fc IF NOT IS_CHAR_DEAD sweet IF NOT IS_CHAR_DEAD tenpenny_fc IF NOT IS_CAR_DEAD benz_fc IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D sweet benz_fc 125.0 125.0 FALSE IF NOT IS_CHAR_ON_SCREEN sweet lostsweet_fcflag = 1 GOTO mission_finaleC_failed PRINT_NOW RM4_50 5000 1 //~r~You lost Sweet! Next time stay closer! ENDIF ENDIF //not in car check IF notincar_fcflag = 0 IF NOT IS_CHAR_SITTING_IN_CAR scplayer benz_fc REMOVE_BLIP sweet_fcblip ADD_BLIP_FOR_CAR benz_fc sweet_fcblip SET_BLIP_AS_FRIENDLY sweet_fcblip TRUE PRINT_NOW RM4_48 5000 1 //~s~Get back in the ~b~car~s~! notincar_fcflag = 1 ENDIF ENDIF IF notincar_fcflag = 1 IF IS_CHAR_SITTING_IN_CAR scplayer benz_fc REMOVE_BLIP sweet_fcblip ADD_BLIP_FOR_CHAR sweet sweet_fcblip SET_BLIP_AS_FRIENDLY sweet_fcblip TRUE CHANGE_BLIP_DISPLAY sweet_fcblip BLIP_ONLY IF displaygripbar_fcflag > 0 CHANGE_BLIP_DISPLAY sweet_fcblip BOTH ENDIF PRINT_NOW RM4_49 5000 1 //~s~Chase the firetruck! notincar_fcflag = 0 ENDIF ENDIF //speed up slow down truck IF NOT IS_CAR_DEAD firetruck_fc IF NOT IS_CHAR_DEAD sweet IF IS_PLAYBACK_GOING_ON_FOR_CAR firetruck_fc SWITCH speedup_fcflag CASE 0 // car recording at 1.0 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D sweet scplayer 60.0 60.0 FALSE SET_PLAYBACK_SPEED firetruck_fc 0.5 speedup_fcflag = 1 ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_2D sweet scplayer 15.0 15.0 FALSE IF NOT locatestage_fcflag = 5 //highway OR NOT locatestage_fcflag = 1 //bank where rioters are SET_PLAYBACK_SPEED firetruck_fc 1.30 //1.15 speedup_fcflag = 2 ENDIF ENDIF ENDIF BREAK CASE 1 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D sweet scplayer 55.0 55.0 FALSE SET_PLAYBACK_SPEED firetruck_fc 1.0 speedup_fcflag = 0 ENDIF BREAK CASE 2 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D sweet scplayer 20.0 20.0 FALSE SET_PLAYBACK_SPEED firetruck_fc 1.0 speedup_fcflag = 0 ENDIF BREAK ENDSWITCH ENDIF ENDIF ENDIF //guy climbing out IF NOT IS_CHAR_DEAD copladder_fc IF copladder_fcflag = 1 GET_CAR_COORDINATES firetruck_fc player_x player_y player_z player_z = player_z - 15.0 WARP_CHAR_FROM_CAR_TO_COORD copladder_fc player_x player_y player_z ATTACH_CHAR_TO_CAR copladder_fc firetruck_fc 0.0 0.656 2.408 FACING_FORWARD 0.0 WEAPONTYPE_UNARMED copladder_fcflag = 2 ENDIF IF copladder_fcflag = 2 OPEN_CAR_DOOR firetruck_fc FRONT_RIGHT_DOOR TASK_PLAY_ANIM_NON_INTERRUPTABLE copladder_fc FIN_Cop1_ClimbOut FINALE2 1000.0 FALSE FALSE FALSE TRUE -1 //FIN_copladder_fc_ClimbOut2 copladder_fcflag = 3 ENDIF IF copladder_fcflag = 3 IF IS_CHAR_PLAYING_ANIM copladder_fc FIN_Cop1_ClimbOut GET_CHAR_ANIM_CURRENT_TIME copladder_fc FIN_Cop1_ClimbOut copladder_fcanimtime IF copladder_fcanimtime = 1.0 DETACH_CHAR_FROM_CAR copladder_fc ATTACH_CHAR_TO_CAR copladder_fc firetruck_fc -0.014 -7.40 -999.253 FACING_BACK 0.0 WEAPONTYPE_UNARMED TASK_PLAY_ANIM_NON_INTERRUPTABLE copladder_fc FIN_Cop1_ClimbOut2 FINALE 1000.0 FALSE FALSE FALSE TRUE -1 TIMERA = 0 displaygripbar_fcflag = 1 copladder_fcflag = 4 ENDIF ENDIF ENDIF //stomp cop IF copladder_fcflag = 4 IF IS_CHAR_PLAYING_ANIM copladder_fc FIN_Cop1_ClimbOut2 GET_CHAR_ANIM_CURRENT_TIME copladder_fc FIN_Cop1_ClimbOut2 copladder_fcanimtime IF copladder_fcanimtime = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE copladder_fc FIN_COP1_STOMP FINALE 8.0 FALSE FALSE FALSE TRUE -1 TIMERB = 0 PRINT_NOW RM4_43 7000 1 //~s~The cop is stamping on ~s~Sweet's fingers get your car close to him in case he loses his grip. copladder_fcflag = 5 ENDIF ENDIF ENDIF //slip reaction sweet IF copladder_fcflag = 5 IF TIMERB > 499 TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_HANG_SLIP FINALE 8.0 FALSE FALSE FALSE TRUE -1 copladder_fcflag = 6 ENDIF ENDIF //loop cop IF copladder_fcflag = 6 IF IS_CHAR_PLAYING_ANIM copladder_fc FIN_COP1_STOMP GET_CHAR_ANIM_CURRENT_TIME copladder_fc FIN_COP1_STOMP copladder_fcanimtime IF copladder_fcanimtime = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE copladder_fc FIN_COP1_LOOP FINALE 8.0 FALSE FALSE FALSE TRUE -1 copladder_fcflag = 7 ENDIF ENDIF ENDIF //loop sweet IF copladder_fcflag = 7 IF IS_CHAR_PLAYING_ANIM sweet FIN_HANG_SLIP GET_CHAR_ANIM_CURRENT_TIME sweet FIN_HANG_SLIP sweetanimtime_fc IF sweetanimtime_fc = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_HANG_LOOP FINALE 8.0 TRUE FALSE FALSE TRUE -1 TIMERB = 0 copladder_fcflag = 8 ENDIF ENDIF ENDIF //stomp cop IF copladder_fcflag = 8 IF TIMERB > 750 IF IS_CHAR_PLAYING_ANIM copladder_fc FIN_COP1_LOOP GET_CHAR_ANIM_CURRENT_TIME copladder_fc FIN_COP1_LOOP copladder_fcanimtime IF copladder_fcanimtime = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE copladder_fc FIN_COP1_STOMP FINALE 8.0 FALSE FALSE FALSE TRUE -1 TIMERB = 0 copladder_fcflag = 5 ENDIF ENDIF ENDIF ENDIF //grip bar IF displaygripbar_fcflag = 1 IF TIMERA > 8999 IF DOES_BLIP_EXIST sweet_fcblip CHANGE_BLIP_DISPLAY sweet_fcblip BOTH ENDIF gripbar_fc = 15 //(12 + 3) fgripbardisplay_fc =# gripbar_fc fgripbardisplay_fc *= 100.0 fgripbardisplay_fc /= 15.0 igripbardisplay_fc =# fgripbardisplay_fc DISPLAY_ONSCREEN_COUNTER_WITH_STRING igripbardisplay_fc COUNTER_DISPLAY_BAR RM4_47 TIMERA = 0 displaygripbar_fcflag = 2 ENDIF ENDIF IF displaygripbar_fcflag = 2 //counting down for three seconds after which player can catch IF TIMERA > 999 gripbar_fc = gripbar_fc - 1 TIMERA = 0 displaygripbar_fcflag = 3 ENDIF ENDIF IF displaygripbar_fcflag = 3 IF TIMERA > 999 gripbar_fc = gripbar_fc - 1 TIMERA = 0 displaygripbar_fcflag = 4 ENDIF ENDIF IF displaygripbar_fcflag = 4 IF TIMERA > 999 gripbar_fc = gripbar_fc - 1 TIMERA = 0 SET_CAR_DENSITY_MULTIPLIER 0.0 displaygripbar_fcflag = 5 ENDIF ENDIF IF displaygripbar_fcflag = 5 //player can now catch IF TIMERA > 999 gripbar_fc = gripbar_fc - 1 stagechase_fcflag = 4 TIMERA = 0 ENDIF //player did not catch IF gripbar_fc <= 0 gripbar_fc = 0 copladder_fcflag = 10 TASK_PLAY_ANIM_NON_INTERRUPTABLE copladder_fc FIN_COP1_LOOP FINALE 8.0 TRUE FALSE FALSE FALSE -1 DETACH_CHAR_FROM_CAR sweet SET_CHAR_COLLISION sweet TRUE TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_Land_Die FINALE 4.0 FALSE TRUE TRUE TRUE -1 TIMERA = 0 displaygripbar_fcflag = 6 ENDIF //player catches IF gripbar_fc > 0 GET_CHAR_COORDINATES sweet player_x player_y player_z player_z = player_z - 1.0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer player_x player_y player_z 3.0 3.0 4.0 FALSE CLEAR_ONSCREEN_COUNTER gripbar_fc number_of_frames_fc = 4.0 DETACH_CHAR_FROM_CAR sweet GET_CHAR_COORDINATES sweet sweetx_fc sweety_fc sweetz_fc SET_CHAR_COLLISION sweet FALSE sweetz_fc = sweetz_fc - 1.0 CLEAR_CHAR_TASKS_IMMEDIATELY sweet SET_CHAR_COORDINATES sweet sweetx_fc sweety_fc sweetz_fc TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_LET_GO FINALE 1000.0 FALSE FALSE FALSE TRUE -1 WAIT 0 IF NOT IS_CAR_DEAD benz_fc IF NOT IS_CHAR_DEAD sweet IF NOT IS_CAR_DEAD firetruck_fc GET_CHAR_COORDINATES sweet sweetx_fc sweety_fc sweetz_fc GET_OFFSET_FROM_CAR_IN_WORLD_COORDS benz_fc 0.0 1.5 0.5 WorldX_fc WorldY_fc WorldZ_fc diffx_fc = sweetx_fc - WorldX_fc diffy_fc = sweety_fc - Worldy_fc diffz_fc = sweetz_fc - Worldz_fc stepx_fc = diffx_fc / number_of_frames_fc stepy_fc = diffy_fc / number_of_frames_fc stepz_fc = diffz_fc / number_of_frames_fc CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS handlingudio_fcflag = 0 progressaudio_fcflag = 0 finaleCchase_fcflag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //get bar values spot on IF displaygripbar_fcflag > 1 fgripbardisplay_fc =# gripbar_fc fgripbardisplay_fc *= 100.0 fgripbardisplay_fc /= 15.0 igripbardisplay_fc =# fgripbardisplay_fc ENDIF ENDIF IF displaygripbar_fcflag = 6 //next bit if caught or mission failed if dropped IF TIMERA > 2000 displaygripbar_fcflag = 7 CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS GOTO mission_finaleC_failed ENDIF ENDIF //car density IF cardensity_fcflag = 1 //1st alleyway IF LOCATE_CAR_2D firetruck_fc 2003.29 -1097.0 20.0 20.0 FALSE SET_CAR_DENSITY_MULTIPLIER 1.0 cardensity_fcflag = 2 ENDIF ENDIF IF cardensity_fcflag = 1 //just before bridge IF LOCATE_CAR_2D firetruck_fc 2112.84 -1406.01 20.0 20.0 FALSE SET_CAR_DENSITY_MULTIPLIER 0.0 cardensity_fcflag = 2 ENDIF ENDIF IF cardensity_fcflag = 2 //end of the bridge IF LOCATE_CAR_2D firetruck_fc 2112.51 -1631.72 20.0 20.0 FALSE SET_CAR_DENSITY_MULTIPLIER 0.9 cardensity_fcflag = 3 ENDIF ENDIF //creates train IF createtrain_fcflag = 1 IF HAS_MODEL_LOADED STREAK CREATE_MISSION_TRAIN 15 2135.04 -1953.25 12.84 FALSE train_fc SET_TRAIN_SPEED train_fc 30.0 SET_TRAIN_CRUISE_SPEED train_fc 12.5 SET_CAR_PROOFS train_fc TRUE TRUE TRUE TRUE TRUE createtrain_fcflag = 2 ELSE MARK_MODEL_AS_NO_LONGER_NEEDED STREAK createtrain_fcflag = 2 ENDIF ENDIF IF createtrain_fcflag = 2 IF NOT IS_CAR_DEAD train_fc IF LOCATE_CAR_2D train_fc 2226.64 -1603.62 15.0 15.0 FALSE MARK_MISSION_TRAINS_AS_NO_LONGER_NEEDED MARK_MODEL_AS_NO_LONGER_NEEDED STREAK createtrain_fcflag = 3 ENDIF ELSE MARK_MISSION_TRAINS_AS_NO_LONGER_NEEDED MARK_MODEL_AS_NO_LONGER_NEEDED STREAK createtrain_fcflag = 3 ENDIF ENDIF IF createtrain_fcflag = 3 DELETE_ALL_TRAINS createtrain_fcflag = 4 ENDIF //tells sweet when to put his legs up/down //near countryside fence IF locatestage_fcflag = 0 IF sweetlegsup_fcflag = 0 IF LOCATE_CAR_2D firetruck_fc 2339.11 -1038.88 14.0 14.0 FALSE stagechase_fcflag = 1 REMOVE_ALL_SCRIPT_FIRES MARK_OBJECT_AS_NO_LONGER_NEEDED gangcar3_fc MARK_OBJECT_AS_NO_LONGER_NEEDED gangcar4_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang11_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang12_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang13_fc CREATE_CHAR PEDTYPE_MISSION1 LSV2 2246.362 -1059.161 61.2275 gang1_fc SET_CHAR_HEADING gang1_fc 255.0 SET_CHAR_DECISION_MAKER gang1_fc carterc_DM GIVE_WEAPON_TO_CHAR gang1_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang1_fc TRUE enemy_fc = gang1_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV2 2212.216 -1001.041 67.22 gang4_fc SET_CHAR_HEADING gang4_fc 183.4 SET_CHAR_DECISION_MAKER gang4_fc carterc_DM GIVE_WEAPON_TO_CHAR gang4_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang4_fc TRUE enemy_fc = gang4_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV2 2197.558 -1000.418 67.367 gang5_fc SET_CHAR_HEADING gang5_fc 209.7 SET_CHAR_DECISION_MAKER gang5_fc carterc_DM GIVE_WEAPON_TO_CHAR gang5_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang5_fc TRUE enemy_fc = gang5_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV2 2188.512 -1020.8 70.33 gang6_fc SET_CHAR_HEADING gang6_fc 287.39 SET_CHAR_DECISION_MAKER gang6_fc carterc_DM GIVE_WEAPON_TO_CHAR gang6_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang6_fc TRUE SET_CHAR_ACCURACY gang6_fc 90 enemy_fc = gang6_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_OBJECT la_fuckcar2 2171.57 -1008.76 62.56 gangcar1_fc SET_OBJECT_DYNAMIC gangcar1_fc TRUE SET_OBJECT_HEADING gangcar1_fc 168.0 SET_OBJECT_ROTATION gangcar1_fc 0.0 90.0 0.0 START_SCRIPT_FIRE 2172.57 -1008.76 61.56 0 3 fire1_fc START_SCRIPT_FIRE 2171.57 -1007.76 62.56 0 3 fire2_fc CREATE_CHAR PEDTYPE_MISSION1 LSV2 2172.91 -1001.84 62.83 gang7_fc SET_CHAR_HEADING gang7_fc 258.18 SET_CHAR_DECISION_MAKER gang7_fc carterc_DM GIVE_WEAPON_TO_CHAR gang7_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang7_fc TRUE enemy_fc = gang7_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel sweetlegsup_fcflag = 1 ENDIF ENDIF IF sweetlegsup_fcflag = 1 IF LOCATE_CAR_2D firetruck_fc 2252.01 -1046.41 14.0 14.0 FALSE IF IS_CHAR_PLAYING_ANIM sweet FIN_LegsUp_Loop TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_HANG_LOOP FINALE 1.5 TRUE FALSE FALSE TRUE -1 ENDIF IF NOT IS_POINT_ON_SCREEN 2600.99 -1050.01 69.04 10.0 DELETE_OBJECT gangcar3_fc DELETE_OBJECT gangcar4_fc DELETE_CHAR gang11_fc DELETE_CHAR gang12_fc DELETE_CHAR gang13_fc ENDIF CREATE_OBJECT la_fuckcar2 2033.39 -938.0 39.99 gangcar2_fc SET_OBJECT_HEADING gangcar2_fc 24.8 SET_OBJECT_DYNAMIC gangcar2_fc TRUE SET_OBJECT_ROTATION gangcar2_fc 0.0 0.0 0.0 START_SCRIPT_FIRE 2033.39 -938.0 38.99 0 3 fire3_fc START_SCRIPT_FIRE 2032.39 -937.0 38.99 0 3 fire4_fc CREATE_CHAR PEDTYPE_MISSION1 LSV2 2035.09 -979.33 40.9 gang8_fc SET_CHAR_HEADING gang8_fc 263.9 SET_CHAR_DECISION_MAKER gang8_fc carterc_DM GIVE_WEAPON_TO_CHAR gang8_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang8_fc TRUE enemy_fc = gang8_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV2 2053.81 -983.87 45.33 gang9_fc SET_CHAR_HEADING gang9_fc 287.5 SET_CHAR_DECISION_MAKER gang9_fc carterc_DM GIVE_WEAPON_TO_CHAR gang9_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang9_fc TRUE enemy_fc = gang9_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV2 2089.93 -971.49 54.556 gang10_fc SET_CHAR_HEADING gang10_fc 219.88 SET_CHAR_DECISION_MAKER gang10_fc carterc_DM GIVE_WEAPON_TO_CHAR gang10_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang10_fc TRUE enemy_fc = gang10_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV2 2026.056 -971.93 41.5 gang11_fc SET_CHAR_HEADING gang11_fc 219.88 SET_CHAR_DECISION_MAKER gang11_fc carterc_DM GIVE_WEAPON_TO_CHAR gang11_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang11_fc TRUE enemy_fc = gang11_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV2 1989.918 -1017.65 34.05 gang12_fc SET_CHAR_HEADING gang12_fc 317.6 SET_CHAR_DECISION_MAKER gang12_fc carterc_DM GIVE_WEAPON_TO_CHAR gang12_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang12_fc TRUE enemy_fc = gang12_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV2 1999.8 -1018.65 35.33 gang13_fc SET_CHAR_HEADING gang13_fc 317.6 SET_CHAR_DECISION_MAKER gang13_fc carterc_DM GIVE_WEAPON_TO_CHAR gang13_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang13_fc TRUE enemy_fc = gang13_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel //roadblock near alleyway CREATE_CHAR PEDTYPE_MISSION1 LSV2 1970.674 -1088.046 24.163 gang14_fc SET_CHAR_HEADING gang14_fc 345.24 SET_CHAR_DECISION_MAKER gang14_fc carterc_DM GIVE_WEAPON_TO_CHAR gang14_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang14_fc TRUE enemy_fc = gang14_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV2 1977.545 -1096.913 24.35 gang15_fc SET_CHAR_HEADING gang15_fc 24.331 SET_CHAR_DECISION_MAKER gang15_fc carterc_DM GIVE_WEAPON_TO_CHAR gang15_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang15_fc TRUE enemy_fc = gang15_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel CREATE_OBJECT la_fuckcar1 1975.31 -1099.27 24.118 gangcar3_fc SET_OBJECT_DYNAMIC gangcar3_fc TRUE SET_OBJECT_HEADING gangcar3_fc 270.894 SET_OBJECT_ROTATION gangcar3_fc 0.0 180.0 0.0 REMOVE_SCRIPT_FIRE fire1_fc REMOVE_SCRIPT_FIRE fire2_fc START_SCRIPT_FIRE 1975.31 -1099.27 24.118 0 3 fire1_fc START_SCRIPT_FIRE 1977.0 -1098.0 24.0 0 3 fire2_fc sweetlegsup_fcflag = 0 cardensity_fcflag = 1 locatestage_fcflag = 1 ENDIF ENDIF ENDIF //alleyway IF locatestage_fcflag = 1 IF sweetlegsup_fcflag = 0 IF LOCATE_CAR_2D firetruck_fc 2073.51 -1260.18 14.0 14.0 FALSE stagechase_fcflag = 2 MARK_OBJECT_AS_NO_LONGER_NEEDED gangcar1_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang1_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang4_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang5_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang6_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang7_fc //roadblock along the bridge CREATE_OBJECT la_fuckcar2 2117.46 -1490.22 22.6 gangcar5_fc SET_OBJECT_DYNAMIC gangcar5_fc TRUE SET_OBJECT_HEADING gangcar5_fc 276.0 CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2108.6 -1491.5 23.85 gang11_fc SET_CHAR_HEADING gang11_fc 340.0 SET_CHAR_DECISION_MAKER gang11_fc carterc_DM GIVE_WEAPON_TO_CHAR gang11_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang11_fc TRUE enemy_fc = gang11_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2116.48 -1492.219 22.85 gang12_fc SET_CHAR_HEADING gang12_fc 340.0 SET_CHAR_DECISION_MAKER gang12_fc carterc_DM GIVE_WEAPON_TO_CHAR gang12_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang12_fc TRUE enemy_fc = gang12_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel sweetlegsup_fcflag = 1 ENDIF ENDIF IF sweetlegsup_fcflag = 1 IF LOCATE_CAR_2D firetruck_fc 2268.94 -1260.26 14.0 14.0 FALSE IF IS_CHAR_PLAYING_ANIM sweet FIN_LegsUp_Loop TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_HANG_LOOP FINALE 1.5 TRUE FALSE FALSE TRUE -1 ENDIF REMOVE_ALL_SCRIPT_FIRES MARK_MODEL_AS_NO_LONGER_NEEDED LSV2 MARK_OBJECT_AS_NO_LONGER_NEEDED gangcar2_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang8_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang9_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang10_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang11_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang13_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang14_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang15_fc MARK_OBJECT_AS_NO_LONGER_NEEDED gangcar3_fc DELETE_OBJECT gangcar1_fc DELETE_CHAR gang1_fc DELETE_CHAR gang4_fc DELETE_CHAR gang5_fc DELETE_CHAR gang6_fc DELETE_CHAR gang7_fc DELETE_OBJECT gangcar2_fc DELETE_CHAR gang8_fc REQUEST_MODEL STREAK //roadblock along the bridge CREATE_OBJECT la_fuckcar1 2109.492 -1531.4 22.82 gangcar1_fc SET_OBJECT_HEADING gangcar1_fc 276.274 SET_OBJECT_DYNAMIC gangcar1_fc TRUE CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2110.39 -1529.04 22.928 gang1_fc SET_CHAR_HEADING gang1_fc 10.19 SET_CHAR_DECISION_MAKER gang1_fc carterc_DM GIVE_WEAPON_TO_CHAR gang1_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang1_fc TRUE enemy_fc = gang1_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2118.376 -1531.8 23.189 gang2_fc SET_CHAR_HEADING gang2_fc 340.0 SET_CHAR_DECISION_MAKER gang2_fc carterc_DM GIVE_WEAPON_TO_CHAR gang2_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang2_fc TRUE enemy_fc = gang2_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel START_SCRIPT_FIRE 2116.7 -1530.846 22.99 0 3 fire1_fc START_SCRIPT_FIRE 2115.5 -1530.282 22.97 0 2 fire2_fc START_SCRIPT_FIRE 2114.06 -1529.88 22.96 0 3 fire3_fc START_SCRIPT_FIRE 2112.3 -1529.92 22.9 0 2 fire4_fc //roadblock along the bridge CREATE_OBJECT la_fuckcar2 2115.75 -1620.69 22.11 gangcar4_fc SET_OBJECT_DYNAMIC gangcar4_fc TRUE SET_OBJECT_HEADING gangcar4_fc 95.114 CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2111.57 -1585.135 25.1 gang3_fc SET_CHAR_HEADING gang3_fc 12.0 SET_CHAR_DECISION_MAKER gang3_fc carterc_DM GIVE_WEAPON_TO_CHAR gang3_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang3_fc TRUE enemy_fc = gang3_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2104.487 -1586.327 25.07 gang4_fc SET_CHAR_HEADING gang4_fc 306.26 SET_CHAR_DECISION_MAKER gang4_fc carterc_DM GIVE_WEAPON_TO_CHAR gang4_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang4_fc TRUE enemy_fc = gang4_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel START_SCRIPT_FIRE 2108.28 -1637.23 18.3 0 3 fire5_fc START_SCRIPT_FIRE 2110.65 -1637.93 18.36 0 2 fire6_fc START_SCRIPT_FIRE 2112.18 -1637.2 18.52 0 1 fire7_fc START_SCRIPT_FIRE 2115.36 -1637.43 18.47 0 2 fire8_fc START_SCRIPT_FIRE 2117.39 -1636.75 18.62 0 3 fire9_fc START_SCRIPT_FIRE 2107.91 -1586.498 24.8 0 3 fire10_fc START_SCRIPT_FIRE 2110.28 -1586.29 24.89 0 2 fire11_fc START_SCRIPT_FIRE 2112.755 -1586.081 24.8 0 2 fire12_fc CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2094.0 -1763.0 12.5 gang5_fc SET_CHAR_HEADING gang5_fc 322.0 SET_CHAR_DECISION_MAKER gang5_fc carterc_DM GIVE_WEAPON_TO_CHAR gang5_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang5_fc TRUE enemy_fc = gang5_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 BALLAS1 2088.0 -1761.0 12.5 gang6_fc SET_CHAR_HEADING gang6_fc 306.26 SET_CHAR_DECISION_MAKER gang6_fc carterc_DM GIVE_WEAPON_TO_CHAR gang6_fc WEAPONTYPE_MOLOTOV 99999 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang6_fc TRUE enemy_fc = gang6_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel sweetlegsup_fcflag = 0 locatestage_fcflag = 2 ENDIF ENDIF ENDIF //beginning of the train track IF locatestage_fcflag = 2 IF sweetlegsup_fcflag = 0 IF LOCATE_CAR_2D firetruck_fc 2203.69 -1724.39 14.0 14.0 FALSE createtrain_fcflag = 1 DELETE_CHAR gang8_fc DELETE_CHAR gang9_fc DELETE_CHAR gang10_fc DELETE_CHAR gang11_fc DELETE_CHAR gang13_fc DELETE_CHAR gang14_fc DELETE_CHAR gang15_fc DELETE_OBJECT gangcar3_fc MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED la_fuckcar1 MARK_MODEL_AS_NO_LONGER_NEEDED la_fuckcar2 MARK_MODEL_AS_NO_LONGER_NEEDED MOLOTOV SET_CAR_DENSITY_MULTIPLIER 1.0 sweetlegsup_fcflag = 1 ENDIF ENDIF IF sweetlegsup_fcflag = 1 IF LOCATE_CAR_2D firetruck_fc 2202.32 -1890.45 14.0 14.0 FALSE stagechase_fcflag = 3 IF IS_CHAR_PLAYING_ANIM sweet FIN_LegsUp_Loop TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_HANG_LOOP FINALE 1.5 TRUE FALSE FALSE TRUE -1 ENDIF REMOVE_ALL_SCRIPT_FIRES sweetlegsup_fcflag = 0 locatestage_fcflag = 3 ENDIF ENDIF ENDIF //Turning on the train track IF locatestage_fcflag = 3 IF sweetlegsup_fcflag = 0 IF LOCATE_CAR_2D firetruck_fc 2115.45 -1954.4 14.0 14.0 FALSE sweetlegsup_fcflag = 1 ENDIF ENDIF IF sweetlegsup_fcflag = 1 IF LOCATE_CAR_2D firetruck_fc 2179.19 -2017.63 14.0 14.0 FALSE IF IS_CHAR_PLAYING_ANIM sweet FIN_LegsUp_Loop TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_HANG_LOOP FINALE 1.5 TRUE FALSE FALSE TRUE -1 ENDIF REMOVE_ALL_SCRIPT_FIRES //roadblock along the bridge MARK_OBJECT_AS_NO_LONGER_NEEDED gangcar1_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang1_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang2_fc MARK_OBJECT_AS_NO_LONGER_NEEDED gangcar5_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang11_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang12_fc MARK_OBJECT_AS_NO_LONGER_NEEDED gangcar4_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang3_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang4_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang5_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang6_fc sweetlegsup_fcflag = 0 locatestage_fcflag = 4 ENDIF ENDIF ENDIF //End of the train track IF locatestage_fcflag = 4 IF sweetlegsup_fcflag = 0 IF LOCATE_CAR_2D firetruck_fc 2318.03 -2165.94 14.0 14.0 FALSE DELETE_OBJECT gangcar1_fc DELETE_CHAR gang1_fc DELETE_CHAR gang2_fc DELETE_OBJECT gangcar5_fc DELETE_CHAR gang11_fc DELETE_CHAR gang12_fc DELETE_OBJECT gangcar4_fc DELETE_CHAR gang3_fc DELETE_CHAR gang4_fc DELETE_CHAR gang5_fc DELETE_CHAR gang6_fc sweetlegsup_fcflag = 1 ENDIF ENDIF IF sweetlegsup_fcflag = 1 IF LOCATE_CAR_2D firetruck_fc 2452.6 -2170.27 14.0 14.0 FALSE IF IS_CHAR_PLAYING_ANIM sweet FIN_LegsUp_Loop TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_HANG_LOOP FINALE 1.5 TRUE FALSE FALSE TRUE -1 ENDIF copladder_fcflag = 1 sweetlegsup_fcflag = 0 locatestage_fcflag = 5 ENDIF ENDIF ENDIF //get sweet hanging initially IF sweethang_fcflag = 1 IF IS_CHAR_PLAYING_ANIM sweet FIN_jump_on GET_CHAR_ANIM_CURRENT_TIME sweet FIN_jump_on sweetanimtime_fc IF sweetanimtime_fc = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_HANG_LOOP FINALE 4.0 TRUE FALSE FALSE TRUE -1 sweethang_fcflag = 2 ENDIF ENDIF ENDIF //swinging animations IF sweethang_fcflag > 1 //every frame GET_CAR_HEADING firetruck_fc carheading_fc GET_DOOR_ANGLE_RATIO firetruck_fc EXTRA_DOOR sweet_thisheading_fc //calcs sweet_thisheading_fc -= 0.5 sweet_thisheading_fc *= 2.0 // 10 degrees sweet_thisheading_fc *= 10.0 sweet_thisheading_fc += carheading_fc // set char heading and get roll headingdiff_fc = sweet_thisheading_fc - sweet_lastheading_fc IF headingdiff_fc < -180.0 headingdiff_fc += 360.0 ENDIF IF headingdiff_fc > 180.0 headingdiff_fc += -360.0 ENDIF sweet_lastheading_fc = sweet_thisheading_fc IF copladder_fcflag = 0 IF sweetlegsup_fcflag = 0 IF headingdiff_fc < -1.5 //-2.0 IF NOT sweethang_fcflag = 4 TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_HANG_L FINALE 1.5 FALSE FALSE FALSE TRUE -1 sweethang_fcflag = 4 ENDIF ELSE IF headingdiff_fc > 1.5 //2.0 IF NOT sweethang_fcflag = 3 TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_HANG_R FINALE 1.5 FALSE FALSE FALSE TRUE -1 sweethang_fcflag = 3 ENDIF ELSE IF NOT sweethang_fcflag = 2 TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_HANG_LOOP FINALE 2.5 TRUE FALSE FALSE TRUE -1 sweethang_fcflag = 2 ENDIF ENDIF ENDIF ELSE IF headingdiff_fc < -1.5 //-2.0 IF NOT sweethang_fcflag = 4 TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_LegsUp_L FINALE 1.5 FALSE FALSE FALSE TRUE -1 sweethang_fcflag = 4 ENDIF ELSE IF headingdiff_fc > 1.5 //2.0 IF NOT sweethang_fcflag = 3 TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_LegsUp_R FINALE 1.5 FALSE FALSE FALSE TRUE -1 sweethang_fcflag = 3 ENDIF ELSE IF NOT sweethang_fcflag = 2 TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_LegsUp_Loop FINALE 2.5 TRUE FALSE FALSE TRUE -1 sweethang_fcflag = 2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF finaleCchase_fcflag < 2 //audio for chase GOSUB process_audio_fc //play mission audio IF progressaudio_fcflag = 0 IF handlingudio_fcflag = 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sweet 15.0 15.0 FALSE audio_label_fc = SOUND_ROT4_EA ///Hang on Sweet! $input_text_fc = ROT4_EA ///Hang on Sweet! GOSUB load_audio_fc ENDIF ENDIF ENDIF IF stagechase_fcflag = 1 IF handlingudio_fcflag = 0 IF progressaudio_fcflag < 1 progressaudio_fcflag = 1 ENDIF IF progressaudio_fcflag = 1 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sweet 30.0 30.0 FALSE audio_label_fc = SOUND_ROT4_HC //I’m gonna piss on your corpse, Tenpenny! $input_text_fc = ROT4_HC //I’m gonna piss on your corpse, Tenpenny! GOSUB load_audio_fc ENDIF ENDIF ENDIF ENDIF IF progressaudio_fcflag = 2 IF handlingudio_fcflag = 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sweet 30.0 30.0 FALSE audio_label_fc = SOUND_ROT4_FA //I ain't loosin' this fool! $input_text_fc = ROT4_FA //I ain't loosin' this fool! GOSUB load_audio_fc ENDIF ENDIF ENDIF IF progressaudio_fcflag = 3 IF handlingudio_fcflag = 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sweet 30.0 30.0 FALSE audio_label_fc = SOUND_ROT4_MB //Oh shiiiiit! $input_text_fc = ROT4_MB //Oh shiiiiit! GOSUB load_audio_fc ENDIF ENDIF ENDIF IF handlingudio_fcflag = 0 IF stagechase_fcflag = 2 IF progressaudio_fcflag < 4 progressaudio_fcflag = 4 ENDIF IF progressaudio_fcflag = 4 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sweet 30.0 30.0 FALSE audio_label_fc = SOUND_ROT4_KJ //CJ, do something! $input_text_fc = ROT4_KJ //CJ, do something! GOSUB load_audio_fc ENDIF ENDIF ENDIF ENDIF IF progressaudio_fcflag = 5 IF handlingudio_fcflag = 0 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sweet 30.0 30.0 FALSE audio_label_fc = SOUND_ROT4_EB //Just keep hanging on, bro! $input_text_fc = ROT4_EB //Just keep hanging on, bro! GOSUB load_audio_fc ENDIF ENDIF ENDIF IF handlingudio_fcflag = 0 IF stagechase_fcflag = 3 IF progressaudio_fcflag < 6 progressaudio_fcflag = 6 ENDIF IF progressaudio_fcflag = 6 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sweet 30.0 30.0 FALSE audio_label_fc = SOUND_ROT4_GB //Oh man, that was a close call! $input_text_fc = ROT4_GB //Oh man, that was a close call! GOSUB load_audio_fc ENDIF ENDIF ENDIF ENDIF IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 7 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sweet 30.0 30.0 FALSE audio_label_fc = SOUND_ROT4_FB //I ain’t letting this bastard go! $input_text_fc = ROT4_FB //I ain’t letting this bastard go! GOSUB load_audio_fc ENDIF ENDIF ENDIF IF handlingudio_fcflag = 0 IF stagechase_fcflag = 4 IF progressaudio_fcflag < 8 progressaudio_fcflag = 8 ENDIF IF progressaudio_fcflag = 8 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sweet 30.0 30.0 FALSE audio_label_fc = SOUND_ROT4_KB //Let go, you dumb bastard! $input_text_fc = ROT4_KB //Let go, you dumb bastard! GOSUB load_audio_fc ENDIF ENDIF ENDIF ENDIF IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 9 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sweet 30.0 30.0 FALSE audio_label_fc = SOUND_ROT4_KD //Fuck you, pig! $input_text_fc = ROT4_KD //Fuck you, pig! GOSUB load_audio_fc ENDIF ENDIF ENDIF IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 10 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer sweet 30.0 30.0 FALSE audio_label_fc = SOUND_ROT4_KE //Argh! My fingers! $input_text_fc = ROT4_KE //Argh! My fingers! GOSUB load_audio_fc ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// Player catches Sweet ////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD benz_fc IF NOT IS_CHAR_DEAD sweet IF NOT IS_CAR_DEAD firetruck_fc IF finaleCchase_fcflag = 2 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS benz_fc 0.0 1.5 0.5 WorldX_fc WorldY_fc WorldZ_fc number_of_frames_fc -= 1.0 diffx_fc -= stepx_fc diffy_fc -= stepy_fc diffz_fc -= stepz_fc sweetx_fc = WorldX_fc + diffx_fc sweety_fc = WorldY_fc + diffy_fc sweetz_fc = WorldZ_fc + diffz_fc sweetz_fc = sweetz_fc - 1.0 SET_CHAR_COORDINATES sweet sweetx_fc sweety_fc sweetz_fc IF number_of_frames_fc = 0.0 ATTACH_CHAR_TO_CAR sweet benz_fc 0.0 1.5 0.5. FACING_FORWARD 0.0 WEAPONTYPE_UNARMED TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_LAND_CAR FINALE 4.0 FALSE FALSE FALSE TRUE -1 IF DOES_BLIP_EXIST sweet_fcblip CHANGE_BLIP_DISPLAY sweet_fcblip BLIP_ONLY ENDIF TIMERA = 0 finaleCchase_fcflag = 3 ENDIF ENDIF IF finaleCchase_fcflag = 3 IF IS_CHAR_PLAYING_ANIM sweet FIN_LAND_CAR GET_CHAR_ANIM_CURRENT_TIME sweet FIN_LAND_CAR sweetanimtime_fc IF sweetanimtime_fc = 1.0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION sweetx_fc sweety_fc sweetz_fc SOUND_BONNET_DENT TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_CLIMB_IN FINALE 4.0 FALSE FALSE FALSE TRUE -1 TIMERA = 0 finaleCchase_fcflag = 4 ENDIF ENDIF ENDIF IF finaleCchase_fcflag < 4 IF finaleCchase_fcflag > 1 GOSUB process_audio_fc IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 0 audio_label_fc = SOUND_ROT4_MC //Gotcha! $input_text_fc = ROT4_MC //Gotcha! GOSUB load_audio_fc ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// Switching Seats Cutscene ////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF finalerails_fcflag = 0 IF NOT IS_CAR_DEAD benz_fc IF NOT IS_CAR_DEAD firetruck_fc IF NOT IS_CHAR_DEAD sweet IF finaleCchase_fcflag = 4 IF TIMERA > 2800 CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS handlingudio_fcflag = 0 progressaudio_fcflag = 0 SET_FIXED_CAMERA_POSITION 2908.9490 -1565.1792 15.6092 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2908.9958 -1565.0142 14.6240 JUMP_CUT SET_INTERPOLATION_PARAMETERS 0.0 1500 FORCE_CAR_LIGHTS firetruck_fc FORCE_CAR_LIGHTS_OFF SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL PLAYER1 OFF SET_CAR_PROOFS benz_fc TRUE TRUE TRUE TRUE TRUE CLEAR_ONSCREEN_COUNTER igripbardisplay_fc DELETE_CHAR copladder_fc IF IS_PLAYBACK_GOING_ON_FOR_CAR firetruck_fc STOP_PLAYBACK_RECORDED_CAR firetruck_fc ENDIF START_PLAYBACK_RECORDED_CAR firetruck_fc 290 SET_PLAYBACK_SPEED firetruck_fc 0.9 START_PLAYBACK_RECORDED_CAR benz_fc 291 finaleCchase_fcflag = 5 ENDIF ENDIF IF finaleCchase_fcflag = 5 IF IS_PLAYBACK_GOING_ON_FOR_CAR firetruck_fc IF IS_PLAYBACK_GOING_ON_FOR_CAR benz_fc PAUSE_PLAYBACK_RECORDED_CAR firetruck_fc PAUSE_PLAYBACK_RECORDED_CAR benz_fc REQUEST_CAR_RECORDING 230 //copcar1 REQUEST_CAR_RECORDING 231 //copcar1 REQUEST_CAR_RECORDING 232 //ballas1 REQUEST_CAR_RECORDING 233 //ballas2 REQUEST_CAR_RECORDING 234 //mexcar1 REQUEST_CAR_RECORDING 235 //mexcar2 REQUEST_CAR_RECORDING 236 //bike1 REQUEST_CAR_RECORDING 237 //bike2 REQUEST_CAR_RECORDING 238 //bike3 REQUEST_CAR_RECORDING 239 //mexcar3 REQUEST_CAR_RECORDING 240 //bike4 REQUEST_MODEL MICRO_UZI REQUEST_MODEL COPCARLA REQUEST_MODEL SANCHEZ REQUEST_MODEL MOLOTOV REQUEST_MODEL LSV3 REQUEST_MODEL TORNADO LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED MICRO_UZI OR NOT HAS_MODEL_LOADED COPCARLA OR NOT HAS_MODEL_LOADED SANCHEZ WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED LSV3 OR NOT HAS_MODEL_LOADED TORNADO OR NOT HAS_MODEL_LOADED MOLOTOV WAIT 0 ENDWHILE WAIT 2000 IF NOT IS_CHAR_DEAD sweet IF NOT IS_CAR_DEAD firetruck_fc IF NOT IS_CAR_DEAD benz_fc //sweet and player in car GET_CHAR_COORDINATES scplayer player_x player_y player_z player_z = player_z - 10.0 IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer player_x player_y player_z ENDIF GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_MICRO_UZI 99999 GET_CHAR_COORDINATES sweet player_x player_y player_z player_z = player_z - 10.0 IF IS_CHAR_IN_ANY_CAR sweet WARP_CHAR_FROM_CAR_TO_COORD sweet player_x player_y player_z ELSE DETACH_CHAR_FROM_CAR sweet SET_CHAR_COORDINATES sweet player_x player_y player_z ENDIF WARP_CHAR_INTO_CAR sweet benz_fc WARP_CHAR_INTO_CAR_AS_PASSENGER scplayer benz_fc 0 //cop ladder //DELETE_CHAR copladder_fc CREATE_CHAR PEDTYPE_MISSION1 LAPD1 player_x player_y player_z copladder_fc SET_CHAR_DECISION_MAKER copladder_fc carterc_dm ATTACH_CHAR_TO_CAR copladder_fc firetruck_fc -0.014 -7.40 -999.253 FACING_BACK 0.0 WEAPONTYPE_MICRO_UZI CONTROL_MOVABLE_VEHICLE_PART firetruck_fc 0.2 SET_CHAR_HEALTH copladder_fc 1000 SET_CHAR_ACCURACY copladder_fc 50 enemy_fc = copladder_fc GOSUB stayshoot_fclabel CREATE_CHAR PEDTYPE_MISSION1 LAPD1 player_x player_y player_z coptruck_fc SET_CHAR_DECISION_MAKER coptruck_fc carterc_dm ATTACH_CHAR_TO_CAR coptruck_fc firetruck_fc 0.0 0.656 2.408 FACING_FORWARD 0.0 WEAPONTYPE_MICRO_UZI TASK_PLAY_ANIM_NON_INTERRUPTABLE coptruck_fc FIN_Cop1_ClimbOut FINALE2 1000.0 FALSE FALSE FALSE TRUE -1 //FIN_copladder_fc_ClimbOut2 SET_CHAR_HEALTH coptruck_fc 1000 ENDIF ENDIF ENDIF IF IS_CHAR_PLAYING_ANIM coptruck_fc FIN_Cop1_ClimbOut GET_CHAR_ANIM_CURRENT_TIME coptruck_fc FIN_Cop1_ClimbOut copladder_fcanimtime IF copladder_fcanimtime > 0.0 SET_CHAR_ANIM_SPEED coptruck_fc FIN_Cop1_ClimbOut 0.0 ENDIF ENDIF IF NOT IS_CHAR_DEAD sweet TASK_PLAY_ANIM_NON_INTERRUPTABLE sweet FIN_Switch_S FINALE2 8.0 FALSE FALSE FALSE FALSE -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer FIN_Switch_P FINALE2 8.0 FALSE FALSE FALSE FALSE -1 ENDIF IF NOT IS_CAR_DEAD benz_fc IF NOT IS_CAR_DEAD firetruck_fc TIMERA = 0 finaleCchase_fcflag = 6 ENDIF ENDIF ENDIF ENDIF ENDIF IF finaleCchase_fcflag = 6 IF NOT IS_CHAR_DEAD sweet IF IS_CHAR_PLAYING_ANIM sweet FIN_Switch_S IF IS_CHAR_PLAYING_ANIM scplayer FIN_Switch_P GET_CHAR_ANIM_CURRENT_TIME scplayer FIN_Switch_P copladder_fcanimtime IF copladder_fcanimtime > 0.0 SET_CHAR_ANIM_SPEED scplayer FIN_Switch_P 0.0 GET_CHAR_ANIM_CURRENT_TIME sweet FIN_Switch_S copladder_fcanimtime IF copladder_fcanimtime > 0.0 SET_CHAR_ANIM_SPEED sweet FIN_Switch_S 0.0 //coptruck IF NOT IS_CHAR_DEAD coptruck_fc IF IS_CHAR_PLAYING_ANIM coptruck_fc FIN_Cop1_ClimbOut // GET_CHAR_ANIM_CURRENT_TIME coptruck_fc FIN_Cop1_ClimbOut copladder_fcanimtime // IF copladder_fcanimtime > 0.0 SET_CHAR_ANIM_SPEED coptruck_fc FIN_Cop1_ClimbOut 0.0 // ENDIF ENDIF ENDIF finaleCchase_fcflag = 7 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF finaleCchase_fcflag = 7 IF NOT IS_CAR_DEAD benz_fc IF NOT IS_CAR_DEAD firetruck_fc IF IS_PLAYBACK_GOING_ON_FOR_CAR firetruck_fc IF IS_PLAYBACK_GOING_ON_FOR_CAR benz_fc UNPAUSE_PLAYBACK_RECORDED_CAR firetruck_fc UNPAUSE_PLAYBACK_RECORDED_CAR benz_fc FORCE_CAR_LIGHTS firetruck_fc FORCE_CAR_LIGHTS_ON TIMERA = 0 finaleCchase_fcflag = 8 ENDIF ENDIF ENDIF ENDIF ENDIF IF finaleCchase_fcflag = 8 IF TIMERA > 599 IF NOT IS_CAR_DEAD benz_fc IF NOT IS_CAR_DEAD firetruck_fc POINT_CAMERA_AT_POINT 2909.1978 -1564.3035 15.1955 INTERPOLATION finaleCchase_fcflag = 9 ENDIF ENDIF ENDIF ENDIF IF finaleCchase_fcflag = 9 IF TIMERA > 2500 IF NOT IS_CAR_DEAD benz_fc IF NOT IS_CAR_DEAD firetruck_fc RESTORE_CAMERA handlingudio_fcflag = 0 progressaudio_fcflag = 0 finaleCchase_fcflag = 10 ENDIF ENDIF ENDIF ENDIF IF finaleCchase_fcflag = 10 IF TIMERA > 4600 SWITCH_WIDESCREEN OFF SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE SET_CHAR_PROOFS sweet TRUE TRUE TRUE TRUE TRUE //dialogue here finaleCchase_fcflag = 11 ENDIF ENDIF IF finaleCchase_fcflag = 11 IF TIMERA > 5000 IF IS_CHAR_PLAYING_ANIM scplayer FIN_Switch_P IF IS_CHAR_PLAYING_ANIM sweet FIN_Switch_S SET_CHAR_ANIM_SPEED scplayer FIN_Switch_P 1.0 SET_CHAR_ANIM_SPEED sweet FIN_Switch_S 1.0 finaleCchase_fcflag = 12 ENDIF ENDIF ENDIF ENDIF IF finaleCchase_fcflag = 12 IF IS_CHAR_PLAYING_ANIM scplayer FIN_Switch_P GET_CHAR_ANIM_CURRENT_TIME scplayer FIN_Switch_P copladder_fcanimtime IF copladder_fcanimtime = 1.0 TASK_DRIVE_BY scplayer -1 -1 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 100 SET_PLAYER_CONTROL PLAYER1 ON SET_PLAYER_ENTER_CAR_BUTTON PLAYER1 FALSE //cleanup SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE SET_CAR_PROOFS benz_fc FALSE TRUE TRUE TRUE TRUE SET_CAR_HEALTH benz_fc 20000 GET_CAR_HEALTH benz_fc carhealth_fc carhealth_fc = carhealth_fc / 200 DISPLAY_ONSCREEN_COUNTER_WITH_STRING carhealth_fc COUNTER_DISPLAY_BAR RM4_52 IF NOT IS_CHAR_DEAD copladder_fc SET_CHAR_PROOFS copladder_fc FALSE TRUE TRUE FALSE FALSE ENDIF IF NOT IS_CHAR_DEAD coptruck_fc SET_CHAR_PROOFS coptruck_fc TRUE TRUE TRUE TRUE TRUE ENDIF copladder_fcflag = 0 coptruck_fcflag = 1 //get that cop guy coming out of the truck finalerails_fcflag = 1 rioters_fcflag = 1 finaleCchase_fcflag = 13 PRINT_HELP RM4_54 // To look around swipe across the center of the screen. To fire press ~m~~widget_vc_shoot~. handlingudio_fcflag = 0 progressaudio_fcflag = 0 ENDIF ENDIF ENDIF IF finaleCchase_fcflag > 10 IF finaleCchase_fcflag < 13 //audio for chase GOSUB process_audio_fc IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 0 audio_label_fc = SOUND_ROT4_ME //Take the wheel, it’s payback time! $input_text_fc = ROT4_ME //Take the wheel, it’s payback time! GOSUB load_audio_fc ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// Shootout part 1 ////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF finalerails_fcflag = 1 IF NOT IS_CAR_DEAD benz_fc IF NOT IS_CAR_DEAD firetruck_fc //car health GET_CAR_HEALTH benz_fc carhealth_fc carhealth_fc = carhealth_fc - 12000 //80 IF carhealth_fc <= 0 carhealth_fc = 0 SET_CAR_PROOFS benz_fc FALSE FALSE FALSE FALSE FALSE SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE IF NOT IS_CHAR_DEAD sweet TASK_DIE sweet ENDIF EXPLODE_CAR benz_fc PRINT_NOW RM4_53 5000 1 //~r~You wrecked your car GOTO mission_finaleC_failed ELSE carhealth_fc = carhealth_fc / 80 ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW RM4_53 5000 1 //~r~You wrecked your car GOTO mission_finaleC_failed ENDIF //cop ladder IF copladder_fcflag < 5 IF NOT IS_CHAR_DEAD copladder_fc IF copladder_fcflag = 0 GET_CHAR_HEALTH copladder_fc health_fc IF health_fc < 970 SET_CHAR_PROOFS copladder_fc TRUE TRUE TRUE TRUE TRUE SET_CURRENT_CHAR_WEAPON copladder_fc WEAPONTYPE_UNARMED TASK_PLAY_ANIM_NON_INTERRUPTABLE copladder_fc FIN_Cop1_Shot FINALE2 1000.0 FALSE FALSE FALSE TRUE -1 copladder_fcflag = 1 ENDIF ENDIF IF copladder_fcflag = 1 IF IS_CHAR_PLAYING_ANIM copladder_fc FIN_Cop1_Shot GET_CHAR_ANIM_CURRENT_TIME copladder_fc FIN_Cop1_Shot copladder_fcanimtime IF copladder_fcanimtime = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE copladder_fc FIN_Cop1_Swing FINALE2 1000.0 TRUE FALSE FALSE TRUE -1 copladder_fcflag = 2 ENDIF ENDIF ENDIF //has to get set to 3 IF copladder_fcflag = 3 DETACH_CHAR_FROM_CAR copladder_fc TASK_PLAY_ANIM_NON_INTERRUPTABLE copladder_fc FIN_Cop1_Shot FINALE2 1000.0 FALSE TRUE TRUE TRUE -1 copladder_fcflag = 4 ENDIF IF copladder_fcflag = 4 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer copladder_fc 20.0 20.0 FALSE IF NOT IS_CHAR_ON_SCREEN copladder_fc MARK_CHAR_AS_NO_LONGER_NEEDED copladder_fc copladder_fcflag = 5 ENDIF ENDIF ENDIF ELSE IF DOES_CHAR_EXIST copladder_fc DETACH_CHAR_FROM_CAR copladder_fc ENDIF ENDIF ENDIF //cop truck IF coptruck_fcflag < 6 IF NOT IS_CHAR_DEAD coptruck_fc IF coptruck_fcflag = 1 IF IS_CHAR_PLAYING_ANIM coptruck_fc FIN_Cop1_ClimbOut SET_CHAR_ANIM_SPEED coptruck_fc FIN_Cop1_ClimbOut 1.0 coptruck_fcflag = 2 ENDIF ENDIF IF coptruck_fcflag = 2 IF IS_CHAR_PLAYING_ANIM coptruck_fc FIN_Cop1_ClimbOut GET_CHAR_ANIM_CURRENT_TIME coptruck_fc FIN_Cop1_ClimbOut copladder_fcanimtime IF copladder_fcanimtime = 1.0 DETACH_CHAR_FROM_CAR coptruck_fc ATTACH_CHAR_TO_CAR coptruck_fc firetruck_fc -0.991 -4.12 0.297 FACING_BACK 0.0 WEAPONTYPE_MICRO_UZI //-0.991 -3.802 0.297 TASK_PLAY_ANIM_NON_INTERRUPTABLE coptruck_fc FIN_Cop2_ClimbOut FINALE2 1000.0 FALSE FALSE FALSE TRUE -1 SET_CHAR_HEALTH coptruck_fc 1000 SET_CHAR_ACCURACY coptruck_fc 5 coptruck_fcflag = 3 ENDIF ENDIF ENDIF IF coptruck_fcflag = 3 IF IS_CHAR_PLAYING_ANIM coptruck_fc FIN_Cop2_ClimbOut GET_CHAR_ANIM_CURRENT_TIME coptruck_fc FIN_Cop2_ClimbOut copladder_fcanimtime IF copladder_fcanimtime = 1.0 TIMERB = 0 GET_CHAR_HEALTH coptruck_fc health_fc IF health_fc > 950 SET_CHAR_HEALTH coptruck_fc 1100 ELSE SET_CHAR_HEALTH coptruck_fc 1050 ENDIF enemy_fc = coptruck_fc SET_CHAR_PROOFS coptruck_fc FALSE FALSE FALSE FALSE FALSE GOSUB stayshootnoduck_fclabel coptruck_fcflag = 4 ENDIF ENDIF ENDIF IF coptruck_fcflag = 4 GET_CHAR_HEALTH coptruck_fc health_fc IF health_fc < 1000 OR TIMERB > 60000 DETACH_CHAR_FROM_CAR coptruck_fc TASK_PLAY_ANIM_NON_INTERRUPTABLE coptruck_fc KO_SKID_BACK PED 1000.0 FALSE TRUE TRUE TRUE -1 coptruck_fcflag = 5 ENDIF ENDIF IF coptruck_fcflag = 5 IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer coptruck_fc 30.0 30.0 FALSE IF NOT IS_CHAR_ON_SCREEN coptruck_fc MARK_CHAR_AS_NO_LONGER_NEEDED coptruck_fc coptruck_fcflag = 6 ENDIF ENDIF ENDIF ELSE IF DOES_CHAR_EXIST coptruck_fc DETACH_CHAR_FROM_CAR coptruck_fc ENDIF ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////// mission cars IF rails_fcflag = 0 IF LOCATE_CAR_2D firetruck_fc 2861.28 -1298.8 25.0 25.0 FALSE CREATE_CAR COPCARLA 2816.01 -1186.56 23.95 copcar1_fc SET_CAR_HEADING copcar1_fc 279.03 SET_CAR_HEALTH copcar1_fc 400 SET_CAR_ONLY_DAMAGED_BY_PLAYER copcar1_fc TRUE CREATE_CHAR_INSIDE_CAR copcar1_fc PEDTYPE_MISSION1 LAPD1 cop1_fc SET_CHAR_DECISION_MAKER cop1_fc carterc_dm SET_CHAR_SUFFERS_CRITICAL_HITS cop1_fc FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop1_fc TRUE CREATE_CHAR_AS_PASSENGER copcar1_fc PEDTYPE_MISSION1 LAPD1 0 cop2_fc SET_CHAR_DECISION_MAKER cop2_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop2_fc TRUE GIVE_WEAPON_TO_CHAR cop2_fc WEAPONTYPE_MICRO_UZI 9999 CREATE_CAR COPCARLA 2803.0 -1183.0 26.0 copcar2_fc SET_CAR_HEADING copcar2_fc 261.0 SET_CAR_HEALTH copcar2_fc 600 SET_CAR_ONLY_DAMAGED_BY_PLAYER copcar2_fc TRUE CREATE_CHAR_INSIDE_CAR copcar2_fc PEDTYPE_MISSION1 LAPD1 cop3_fc SET_CHAR_DECISION_MAKER cop3_fc carterc_dm SET_CHAR_SUFFERS_CRITICAL_HITS cop3_fc FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop3_fc TRUE CREATE_CHAR_AS_PASSENGER copcar2_fc PEDTYPE_MISSION1 LAPD1 0 cop4_fc SET_CHAR_DECISION_MAKER cop4_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop4_fc TRUE GIVE_WEAPON_TO_CHAR cop4_fc WEAPONTYPE_MICRO_UZI 9999 SET_CAR_PROOFS copcar2_fc FALSE TRUE TRUE FALSE FALSE rails_fcflag = 1 ENDIF ENDIF IF rails_fcflag = 1 IF LOCATE_CAR_2D firetruck_fc 2849.39 -1232.93 20.0 20.0 FALSE IF NOT IS_CAR_DEAD copcar1_fc START_PLAYBACK_RECORDED_CAR copcar1_fc 230 SWITCH_CAR_SIREN copcar1_fc ON IF NOT IS_CHAR_DEAD cop2_fc TASK_DRIVE_BY cop2_fc -1 benz_fc 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 80 ENDIF ADD_BLIP_FOR_CAR copcar1_fc copcar1_fcblip CHANGE_BLIP_DISPLAY copcar1_fcblip BLIP_ONLY copcar1_fcflag = 1 copcar1swap_fcflag = 1 ENDIF IF NOT IS_CAR_DEAD copcar2_fc SWITCH_CAR_SIREN copcar2_fc ON START_PLAYBACK_RECORDED_CAR copcar2_fc 231 IF NOT IS_CHAR_DEAD cop4_fc TASK_DRIVE_BY cop4_fc -1 benz_fc 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 80 ENDIF ADD_BLIP_FOR_CAR copcar2_fc copcar2_fcblip CHANGE_BLIP_DISPLAY copcar2_fcblip BLIP_ONLY copcar2_fcflag = 1 copcar2swap_fcflag = 1 ENDIF actiontext_fcflag = 1 CREATE_CAR TORNADO 2735.333 -1081.0465 69.033 ecar1_fc SET_CAR_HEADING ecar1_fc 37.918 SET_CAR_HEALTH ecar1_fc 275 SET_CAR_ONLY_DAMAGED_BY_PLAYER ecar1_fc TRUE CREATE_CHAR_INSIDE_CAR ecar1_fc PEDTYPE_MISSION1 MALE01 gang1_fc SET_CHAR_DECISION_MAKER gang1_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang1_fc TRUE CREATE_CHAR_AS_PASSENGER ecar1_fc PEDTYPE_MISSION1 MALE01 0 gang2_fc SET_CHAR_DECISION_MAKER gang2_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang2_fc TRUE GIVE_WEAPON_TO_CHAR gang2_fc WEAPONTYPE_MICRO_UZI 9999 SET_CAR_PROOFS ecar1_fc FALSE TRUE TRUE FALSE FALSE CREATE_CAR TORNADO 2595.742 -1003.581 75.038 ecar2_fc SET_CAR_HEADING ecar2_fc 180.0 SET_CAR_ONLY_DAMAGED_BY_PLAYER ecar2_fc TRUE CREATE_CHAR_INSIDE_CAR ecar2_fc PEDTYPE_MISSION1 MALE01 gang3_fc SET_CHAR_DECISION_MAKER gang3_fc carterc_dm SET_CHAR_SUFFERS_CRITICAL_HITS gang3_fc FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang3_fc TRUE CREATE_CHAR_AS_PASSENGER ecar2_fc PEDTYPE_MISSION1 MALE01 0 gang4_fc SET_CHAR_DECISION_MAKER gang4_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang4_fc TRUE GIVE_WEAPON_TO_CHAR gang4_fc WEAPONTYPE_MICRO_UZI 9999 SET_CAR_PROOFS ecar2_fc FALSE TRUE TRUE FALSE FALSE rails_fcflag = 2 ENDIF ENDIF //imran IF rails_fcflag = 2 IF LOCATE_CAR_2D benz_fc 2717.71 -1047.36 20.0 20.0 FALSE MARK_MODEL_AS_NO_LONGER_NEEDED COPCARLA actiontext_fcflag = 2 IF NOT IS_CAR_DEAD ecar1_fc START_PLAYBACK_RECORDED_CAR ecar1_fc 232 IF NOT IS_CHAR_DEAD gang2_fc TASK_DRIVE_BY gang2_fc -1 benz_fc 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 60 ENDIF ADD_BLIP_FOR_CAR ecar1_fc ecar1_fcblip CHANGE_BLIP_DISPLAY ecar1_fcblip BLIP_ONLY ecar1_fcflag = 1 ecar1swap_fcflag = 1 ENDIF IF NOT IS_CAR_DEAD ecar2_fc START_PLAYBACK_RECORDED_CAR ecar2_fc 233 IF NOT IS_CHAR_DEAD gang4_fc TASK_DRIVE_BY gang4_fc -1 benz_fc 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 60 ENDIF ADD_BLIP_FOR_CAR ecar2_fc ecar2_fcblip CHANGE_BLIP_DISPLAY ecar2_fcblip BLIP_ONLY ecar2_fcflag = 1 ecar2swap_fcflag = 1 ENDIF CREATE_CAR TORNADO 2707.499 -1329.559 47.3 mexcar1_fc SET_CAR_HEADING mexcar1_fc 265.83 SET_CAR_ONLY_DAMAGED_BY_PLAYER mexcar1_fc TRUE CREATE_CHAR_INSIDE_CAR mexcar1_fc PEDTYPE_MISSION1 LSV3 gang5_fc SET_CHAR_DECISION_MAKER gang5_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang5_fc TRUE CREATE_CHAR_AS_PASSENGER mexcar1_fc PEDTYPE_MISSION1 LSV3 0 gang6_fc SET_CHAR_DECISION_MAKER gang6_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang6_fc TRUE GIVE_WEAPON_TO_CHAR gang6_fc WEAPONTYPE_MICRO_UZI 99999 SET_CAR_PROOFS mexcar1_fc FALSE TRUE TRUE FALSE FALSE SET_CAR_HEALTH mexcar1_fc 300 CREATE_CAR TORNADO 2759.875 -1373.294 38.777 mexcar2_fc SET_CAR_HEADING mexcar2_fc 90.9 SET_CAR_ONLY_DAMAGED_BY_PLAYER mexcar2_fc TRUE CREATE_CHAR_INSIDE_CAR mexcar2_fc PEDTYPE_MISSION1 LSV3 gang7_fc SET_CHAR_DECISION_MAKER gang7_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang7_fc TRUE CREATE_CHAR_AS_PASSENGER mexcar2_fc PEDTYPE_MISSION1 LSV3 0 gang8_fc SET_CHAR_DECISION_MAKER gang8_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang8_fc TRUE GIVE_WEAPON_TO_CHAR gang8_fc WEAPONTYPE_MICRO_UZI 99999 SET_CAR_PROOFS mexcar2_fc FALSE TRUE TRUE FALSE FALSE SET_CAR_HEALTH mexcar2_fc 800 CREATE_OBJECT la_fuckcar2 2722.599 -1324.889 49.47 gangcar5_fc SET_OBJECT_DYNAMIC gangcar5_fc TRUE SET_OBJECT_HEADING gangcar5_fc 83.325 //and on the bridge CREATE_CHAR PEDTYPE_MISSION1 LSV3 2631.18 -1244.17 50.58 rioter6_fc SET_CHAR_HEADING rioter6_fc 62.09 SET_CHAR_PROOFS rioter6_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER rioter6_fc TRUE SET_CHAR_HEALTH rioter6_fc 10 SET_CHAR_DECISION_MAKER rioter6_fc carterc_dm GIVE_WEAPON_TO_CHAR rioter6_fc WEAPONTYPE_MOLOTOV 9999 IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter6_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF CREATE_CHAR PEDTYPE_MISSION1 LSV3 2646.11 -1193.27 66.1 rioter10_fc SET_CHAR_HEADING rioter10_fc 285.845 GIVE_WEAPON_TO_CHAR rioter10_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter10_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter10_fc 10 SET_CHAR_DECISION_MAKER rioter10_fc carterc_dm enemy_fc = rioter10_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV3 2653.935 -1211.778 61.667 rioter11_fc SET_CHAR_HEADING rioter11_fc 360.0 GIVE_WEAPON_TO_CHAR rioter11_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter11_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter11_fc 10 SET_CHAR_DECISION_MAKER rioter11_fc carterc_dm IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter11_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF CREATE_CHAR PEDTYPE_MISSION1 LSV3 2664.336 -1173.326 66.69 rioter12_fc SET_CHAR_HEADING rioter12_fc 53.93 GIVE_WEAPON_TO_CHAR rioter12_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter12_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter12_fc 10 SET_CHAR_DECISION_MAKER rioter12_fc carterc_dm enemy_fc = rioter12_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV3 2639.27 -1175.4 66.5 rioter13_fc SET_CHAR_HEADING rioter13_fc 2.3 GIVE_WEAPON_TO_CHAR rioter13_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter13_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter13_fc 10 SET_CHAR_DECISION_MAKER rioter13_fc carterc_dm enemy_fc = rioter10_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel rails_fcflag = 3 ENDIF ENDIF IF rails_fcflag = 3 IF LOCATE_CAR_2D firetruck_fc 2737.48 -1309.88 30.0 30.0 FALSE actiontext_fcflag = 3 IF NOT IS_CAR_DEAD mexcar1_fc START_PLAYBACK_RECORDED_CAR mexcar1_fc 234 IF NOT IS_CHAR_DEAD gang6_fc TASK_DRIVE_BY gang6_fc -1 benz_fc 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 80 ENDIF ADD_BLIP_FOR_CAR mexcar1_fc mexcar1_fcblip CHANGE_BLIP_DISPLAY mexcar1_fcblip BLIP_ONLY mexcar1_fcflag = 1 mexcar1swap_fcflag = 1 ENDIF IF NOT IS_CAR_DEAD mexcar2_fc START_PLAYBACK_RECORDED_CAR mexcar2_fc 235 IF NOT IS_CHAR_DEAD gang8_fc TASK_DRIVE_BY gang8_fc -1 benz_fc 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 60 ENDIF ADD_BLIP_FOR_CAR mexcar2_fc mexcar2_fcblip CHANGE_BLIP_DISPLAY mexcar2_fcblip BLIP_ONLY mexcar2_fcflag = 1 mexcar2swap_fcflag = 1 ENDIF rails_fcflag = 4 ENDIF ENDIF IF rails_fcflag = 4 IF NOT IS_CAR_DEAD benz_fc IF LOCATE_CAR_2D benz_fc 2662.6 -1404.83 20.0 20.0 FALSE actiontext_fcflag = 4 //create roadblocks CREATE_CAR SANCHEZ 2657.455 -1594.463 12.685 bike1_fc SET_CAR_HEADING bike1_fc 85.0 CREATE_CHAR_INSIDE_CAR bike1_fc PEDTYPE_MISSION1 LSV3 gang9_fc SET_CHAR_DECISION_MAKER gang9_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang9_fc TRUE CREATE_CHAR_AS_PASSENGER bike1_fc PEDTYPE_MISSION1 LSV3 0 gang10_fc SET_CHAR_DECISION_MAKER gang10_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang10_fc TRUE GIVE_WEAPON_TO_CHAR gang10_fc WEAPONTYPE_MICRO_UZI 99999 SET_CAR_ONLY_DAMAGED_BY_PLAYER bike1_fc TRUE SET_CAR_PROOFS bike1_fc FALSE TRUE TRUE FALSE FALSE CREATE_CAR SANCHEZ 2642.0 -1615.0 19.0 bike2_fc SET_CAR_HEADING bike2_fc 181.0 CREATE_CHAR_INSIDE_CAR bike2_fc PEDTYPE_MISSION1 LSV3 gang11_fc SET_CHAR_DECISION_MAKER gang11_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang11_fc TRUE CREATE_CHAR_AS_PASSENGER bike2_fc PEDTYPE_MISSION1 LSV3 0 gang12_fc SET_CHAR_DECISION_MAKER gang12_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang12_fc TRUE GIVE_WEAPON_TO_CHAR gang12_fc WEAPONTYPE_MICRO_UZI 99999 SET_CAR_ONLY_DAMAGED_BY_PLAYER bike2_fc TRUE SET_CAR_PROOFS bike2_fc FALSE TRUE TRUE FALSE FALSE CREATE_CAR SANCHEZ 2650.0 -1621.0 19.0 bike3_fc SET_CAR_HEADING bike3_fc 170.0 CREATE_CHAR_INSIDE_CAR bike3_fc PEDTYPE_MISSION1 LSV3 gang13_fc SET_CHAR_DECISION_MAKER gang13_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang13_fc TRUE CREATE_CHAR_AS_PASSENGER bike3_fc PEDTYPE_MISSION1 LSV3 0 gang14_fc SET_CHAR_DECISION_MAKER gang14_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang14_fc TRUE GIVE_WEAPON_TO_CHAR gang14_fc WEAPONTYPE_MICRO_UZI 99999 SET_CAR_ONLY_DAMAGED_BY_PLAYER bike3_fc TRUE SET_CAR_PROOFS bike3_fc FALSE TRUE TRUE FALSE FALSE rails_fcflag = 5 ENDIF ENDIF ENDIF IF rails_fcflag = 5 IF LOCATE_CAR_2D firetruck_fc 2642.71 -1570.03 20.0 20.0 FALSE actiontext_fcflag = 5 IF NOT IS_CAR_DEAD bike1_fc START_PLAYBACK_RECORDED_CAR bike1_fc 236 IF NOT IS_CHAR_DEAD gang10_fc TASK_DRIVE_BY gang10_fc -1 benz_fc 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 60 ENDIF ADD_BLIP_FOR_CAR bike1_fc bike1_fcblip CHANGE_BLIP_DISPLAY bike1_fcblip BLIP_ONLY bike1_fcflag = 1 bike1swap_fcflag = 1 ENDIF IF NOT IS_CAR_DEAD bike2_fc START_PLAYBACK_RECORDED_CAR bike2_fc 237 IF NOT IS_CHAR_DEAD gang12_fc TASK_DRIVE_BY gang12_fc -1 benz_fc 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 60 ENDIF ADD_BLIP_FOR_CAR bike2_fc bike2_fcblip CHANGE_BLIP_DISPLAY bike2_fcblip BLIP_ONLY bike2_fcflag = 1 bike2swap_fcflag = 1 ENDIF IF NOT IS_CAR_DEAD bike3_fc START_PLAYBACK_RECORDED_CAR bike3_fc 238 IF NOT IS_CHAR_DEAD gang14_fc TASK_DRIVE_BY gang14_fc -1 benz_fc 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 60 ENDIF ADD_BLIP_FOR_CAR bike3_fc bike3_fcblip CHANGE_BLIP_DISPLAY bike3_fcblip BLIP_ONLY bike3_fcflag = 1 bike3swap_fcflag = 1 ENDIF CREATE_CAR TORNADO 2704.0 -1654.0 10.0 mexcar3_fc SET_CAR_HEADING mexcar3_fc 90.0 SET_CAR_HEALTH mexcar3_fc 300 CREATE_CHAR_INSIDE_CAR mexcar3_fc PEDTYPE_MISSION1 LSV3 gang17_fc SET_CHAR_DECISION_MAKER gang17_fc carterc_dm SET_CHAR_SUFFERS_CRITICAL_HITS gang17_fc FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang17_fc TRUE CREATE_CHAR_AS_PASSENGER mexcar3_fc PEDTYPE_MISSION1 LSV3 0 gang18_fc SET_CHAR_DECISION_MAKER gang18_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang18_fc TRUE GIVE_WEAPON_TO_CHAR gang18_fc WEAPONTYPE_MICRO_UZI 99999 SET_CAR_ONLY_DAMAGED_BY_PLAYER mexcar3_fc TRUE rails_fcflag = 6 ENDIF ENDIF IF rails_fcflag = 6 IF LOCATE_CAR_2D benz_fc 2642.98 -1619.8 20.0 20.0 FALSE IF NOT IS_CAR_DEAD mexcar3_fc START_PLAYBACK_RECORDED_CAR mexcar3_fc 239 IF NOT IS_CHAR_DEAD gang18_fc TASK_DRIVE_BY gang18_fc -1 benz_fc 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 60 ENDIF ADD_BLIP_FOR_CAR mexcar3_fc mexcar3_fcblip CHANGE_BLIP_DISPLAY mexcar3_fcblip BLIP_ONLY mexcar3_fcflag = 1 mexcar3swap_fcflag = 1 ENDIF rails_fcflag = 7 ENDIF ENDIF // cutscene IF rails_fcflag = 7 IF LOCATE_CAR_2D firetruck_fc 2407.93 -1918.34 15.0 15.0 FALSE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL PLAYER1 OFF SET_CAR_PROOFS benz_fc TRUE TRUE TRUE TRUE TRUE SET_FIXED_CAMERA_POSITION 2409.0322 -1921.4258 14.0992 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2408.9939 -1920.4310 14.0044 JUMP_CUT TIMERA = 0 rails_fcflag = 8 ENDIF ENDIF IF rails_fcflag = 8 IF TIMERA > 5000 CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS DELETE_CHAR copladder_fc DELETE_CHAR coptruck_fc //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////// LOAD DATA FOR NEXT PART OF THE MISSION ///////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// REQUEST_CAR_RECORDING 241 //firetruck REQUEST_CAR_RECORDING 242 //player car REQUEST_CAR_RECORDING 243 //bike1 REQUEST_CAR_RECORDING 244 //bike2 REQUEST_CAR_RECORDING 245 //copcar1 REQUEST_CAR_RECORDING 246 //copcar2 REQUEST_CAR_RECORDING 247 //oceanic1 REQUEST_CAR_RECORDING 248 //copcar3 REQUEST_CAR_RECORDING 249 //copcar4 REQUEST_CAR_RECORDING 229 //firetruck crash at the end REQUEST_MODEL COPCARLA LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED COPCARLA OR NOT HAS_CAR_RECORDING_BEEN_LOADED 241 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 242 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 243 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 244 WAIT 0 ENDWHILE WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 245 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 246 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 247 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 248 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 249 WAIT 0 ENDWHILE WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 229 WAIT 0 ENDWHILE REMOVE_ANIMATION FINALE REMOVE_ANIMATION FINALE2 finalerails_fcflag = 2 rails_fcflag = 9 ENDIF ENDIF /////////////////////////////////////////////////////////////////// mission peds IF rioters_fcflag = 1 IF LOCATE_CAR_2D firetruck_fc 2835.29 -1049.49 20.0 20.0 FALSE //create guys at the top of the hill CREATE_OBJECT la_fuckcar2 2806.984 -1057.249 27.0 gangcar1_fc SET_OBJECT_DYNAMIC gangcar1_fc TRUE SET_OBJECT_HEADING gangcar1_fc 189.735 START_SCRIPT_FIRE 2806.984 -1055.249 28.6 0 2 fire1_fc CREATE_CHAR PEDTYPE_MISSION1 LSV3 2798.46 -1055.99 30.43 rioter1_fc SET_CHAR_HEADING rioter1_fc 285.845 GIVE_WEAPON_TO_CHAR rioter1_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter1_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter1_fc 10 SET_CHAR_DECISION_MAKER rioter1_fc carterc_dm enemy_fc = rioter1_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CAR TORNADO 2785.06 -1043.915 35.916 parkedcar_fc SET_CAR_HEADING parkedcar_fc 4.2 SET_CAR_HEALTH parkedcar_fc 250 SET_CAR_ONLY_DAMAGED_BY_PLAYER parkedcar_fc TRUE CREATE_CHAR PEDTYPE_MISSION1 LSV3 2774.56 -1011.43 58.08 rioter2_fc SET_CHAR_HEADING rioter2_fc 285.845 SET_CHAR_PROOFS rioter2_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter2_fc 10 SET_CHAR_DECISION_MAKER rioter2_fc carterc_dm GIVE_WEAPON_TO_CHAR rioter2_fc WEAPONTYPE_MOLOTOV 9999 enemy_fc = rioter2_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV3 2782.984 -1041.284 36.62 rioter4_fc SET_CHAR_HEADING rioter4_fc 285.845 GIVE_WEAPON_TO_CHAR rioter4_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter4_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter4_fc 10 SET_CHAR_DECISION_MAKER rioter4_fc carterc_dm IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter4_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF CREATE_CHAR PEDTYPE_MISSION1 LSV3 2749.393 -1063.34 53.0 rioter5_fc SET_CHAR_HEADING rioter5_fc 309.534 SET_CHAR_PROOFS rioter5_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter5_fc 10 SET_CHAR_DECISION_MAKER rioter5_fc carterc_dm GIVE_WEAPON_TO_CHAR rioter5_fc WEAPONTYPE_MOLOTOV 9999 IF NOT IS_CHAR_DEAD cop1_fc enemy_fc = rioter5_fc enemytarget_fc = cop1_fc GOSUB chasekill_fclabel ELSE IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter5_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF ENDIF CREATE_OBJECT la_fuckcar2 2688.94 -1054.034 69.57 gangcar3_fc SET_OBJECT_DYNAMIC gangcar3_fc TRUE SET_OBJECT_HEADING gangcar3_fc 210.579 START_SCRIPT_FIRE 2806.984 -1055.249 28.6 0 2 fire2_fc START_SCRIPT_FIRE 2807.984 -1056.249 28.6 0 1 fire3_fc CREATE_CHAR PEDTYPE_MISSION1 LSV3 2724.045 -1058.115 69.88 rioter7_fc SET_CHAR_HEADING rioter7_fc 360.0 GIVE_WEAPON_TO_CHAR rioter7_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter7_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter7_fc 10 SET_CHAR_DECISION_MAKER rioter7_fc carterc_dm enemy_fc = rioter2_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV3 2632.0 -114.0 68.0 rioter8_fc SET_CHAR_HEADING rioter8_fc 254.974 GIVE_WEAPON_TO_CHAR rioter8_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter8_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter8_fc 10 SET_CHAR_DECISION_MAKER rioter8_fc carterc_dm enemy_fc = rioter8_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel //wreck car CREATE_OBJECT la_fuckcar2 2650.39 -1056.09 69.66 gangcar4_fc SET_OBJECT_DYNAMIC gangcar4_fc TRUE SET_OBJECT_HEADING gangcar4_fc 228.58 START_SCRIPT_FIRE 2650.39 -1056.09 69.66 0 2 fire4_fc CREATE_CHAR PEDTYPE_MISSION1 LSV3 2649.78 -1052.49 69.44 rioter9_fc SET_CHAR_HEADING rioter9_fc 254.974 GIVE_WEAPON_TO_CHAR rioter9_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter9_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter9_fc 10 SET_CHAR_DECISION_MAKER rioter9_fc carterc_dm enemy_fc = rioter9_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV3 2650.4 -1115.05 67.12 rioter6_fc SET_CHAR_HEADING rioter6_fc 360.0 GIVE_WEAPON_TO_CHAR rioter6_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter6_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter6_fc 10 SET_CHAR_DECISION_MAKER rioter6_fc carterc_dm IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter6_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF rioters_fcflag = 2 ENDIF ENDIF IF rioters_fcflag = 2 IF LOCATE_CAR_2D benz_fc 2642.81 -1193.87 20.0 20.0 FALSE //get rid of guys at the bottom of the hill DELETE_OBJECT gangcar1_fc DELETE_CHAR rioter1_fc MARK_CAR_AS_NO_LONGER_NEEDED parkedcar_fc DELETE_CAR parkedcar_fc DELETE_CHAR rioter2_fc DELETE_CHAR rioter4_fc DELETE_CHAR rioter5_fc DELETE_OBJECT gangcar3_fc DELETE_CHAR rioter7_fc DELETE_OBJECT gangcar4_fc DELETE_CHAR rioter9_fc DELETE_CHAR rioter6_fc DELETE_CHAR rioter8_fc REMOVE_ALL_SCRIPT_FIRES rioters_fcflag = 3 ENDIF ENDIF IF rioters_fcflag = 3 IF LOCATE_CAR_2D benz_fc 2723.81 -1275.64 20.0 20.0 FALSE //get rid of guys on the bridge DELETE_CHAR rioter10_fc DELETE_CHAR rioter11_fc DELETE_CHAR rioter12_fc DELETE_CHAR rioter13_fc //create guys on the hill IF NOT IS_CAR_DEAD ecar2_fc SET_CAR_HEALTH ecar2_fc 250 SET_CAR_ONLY_DAMAGED_BY_PLAYER ecar2_fc FALSE ENDIF CREATE_CHAR PEDTYPE_MISSION1 LSV3 2718.29 -1324.342 48.5 rioter1_fc SET_CHAR_HEADING rioter1_fc 352.57 GIVE_WEAPON_TO_CHAR rioter1_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter1_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter1_fc 10 SET_CHAR_DECISION_MAKER rioter1_fc carterc_dm IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter1_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF CREATE_CHAR PEDTYPE_MISSION1 LSV3 2726.95 -1324.49 49.5 rioter2_fc SET_CHAR_HEADING rioter2_fc 327.185 SET_CHAR_PROOFS rioter2_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter2_fc 10 SET_CHAR_DECISION_MAKER rioter2_fc carterc_dm GIVE_WEAPON_TO_CHAR rioter2_fc WEAPONTYPE_MOLOTOV 9999 enemy_fc = rioter2_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV3 2710.591 -1315.29 74.34 rioter4_fc SET_CHAR_HEADING rioter4_fc 303.711 GIVE_WEAPON_TO_CHAR rioter4_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter4_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter4_fc 10 SET_CHAR_DECISION_MAKER rioter4_fc carterc_dm IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter4_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF CREATE_CHAR PEDTYPE_MISSION1 LSV3 2748.244 -1375.115 49.5 rioter5_fc SET_CHAR_HEADING rioter5_fc 309.534 SET_CHAR_PROOFS rioter5_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter5_fc 10 SET_CHAR_DECISION_MAKER rioter5_fc carterc_dm GIVE_WEAPON_TO_CHAR rioter5_fc WEAPONTYPE_MOLOTOV 9999 enemy_fc = rioter5_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV3 2750.615 -1388.75 39.0 rioter6_fc SET_CHAR_HEADING rioter6_fc 62.09 SET_CHAR_PROOFS rioter6_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter6_fc 10 SET_CHAR_DECISION_MAKER rioter6_fc carterc_dm GIVE_WEAPON_TO_CHAR rioter6_fc WEAPONTYPE_MOLOTOV 9999 enemy_fc = rioter5_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV3 2713.137 -1448.169 41.95 rioter7_fc SET_CHAR_HEADING rioter7_fc 267.04 GIVE_WEAPON_TO_CHAR rioter7_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter7_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter7_fc 10 SET_CHAR_DECISION_MAKER rioter7_fc carterc_dm enemy_fc = rioter7_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV3 2711.935 -1399.32 54.0 rioter8_fc SET_CHAR_HEADING rioter8_fc 295.712 GIVE_WEAPON_TO_CHAR rioter8_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter8_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter8_fc 10 SET_CHAR_DECISION_MAKER rioter8_fc carterc_dm IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter8_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF CREATE_CHAR PEDTYPE_MISSION1 LSV3 2754.71 -1309.956 70.0 rioter9_fc SET_CHAR_HEADING rioter9_fc 77.189 GIVE_WEAPON_TO_CHAR rioter9_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter9_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter9_fc 10 SET_CHAR_DECISION_MAKER rioter9_fc carterc_dm enemy_fc = rioter9_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV3 2750.615 -1419.473 38.5 rioter10_fc SET_CHAR_HEADING rioter10_fc 77.189 GIVE_WEAPON_TO_CHAR rioter10_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter10_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter10_fc 10 SET_CHAR_DECISION_MAKER rioter10_fc carterc_dm IF NOT IS_CHAR_DEAD gang7_fc enemy_fc = rioter10_fc enemytarget_fc = gang7_fc GOSUB chasekill_fclabel ELSE enemy_fc = rioter10_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel ENDIF rioters_fcflag = 4 ENDIF ENDIF IF rioters_fcflag = 4 IF LOCATE_CAR_2D benz_fc 2682.55 -1494.04 20.0 20.0 FALSE //delete guys on hill create major rioters on the road and bridge down DELETE_CHAR rioter1_fc DELETE_CHAR rioter2_fc DELETE_CHAR rioter4_fc DELETE_CHAR rioter5_fc DELETE_CHAR rioter6_fc DELETE_CHAR rioter7_fc DELETE_CHAR rioter8_fc DELETE_CHAR rioter9_fc DELETE_CHAR rioter10_fc DELETE_OBJECT gangcar1_fc REMOVE_ALL_SCRIPT_FIRES CREATE_OBJECT la_fuckcar2 2649.1943 -1514.1853 26.6789 gangcar1_fc SET_OBJECT_HEADING gangcar1_fc 329.3793 SET_OBJECT_DYNAMIC gangcar1_fc TRUE CREATE_CAR TORNADO 2638.9883 -1555.9426 18.9832 parkedcar_fc SET_CAR_HEADING parkedcar_fc 290.7073 SET_CAR_HEALTH parkedcar_fc 250 SET_CAR_ONLY_DAMAGED_BY_PLAYER parkedcar_fc TRUE CREATE_OBJECT la_fuckcar2 2635.0969 -1576.9958 15.3271 gangcar3_fc SET_OBJECT_HEADING gangcar3_fc 77.1610 SET_OBJECT_DYNAMIC gangcar3_fc TRUE CREATE_OBJECT la_fuckcar2 2650.3945 -1586.5383 13.6033 gangcar4_fc SET_OBJECT_HEADING gangcar4_fc 295.7696 SET_OBJECT_DYNAMIC gangcar4_fc TRUE CREATE_OBJECT la_fuckcar2 2649.9392 -1629.9374 9.8785 gangcar5_fc SET_OBJECT_HEADING gangcar5_fc 270.0938 SET_OBJECT_DYNAMIC gangcar5_fc TRUE CREATE_CHAR PEDTYPE_MISSION1 LSV3 2647.5835 -1518.5471 25.7427 rioter1_fc SET_CHAR_HEADING rioter1_fc 12.7483 GIVE_WEAPON_TO_CHAR rioter1_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter1_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter1_fc 10 SET_CHAR_DECISION_MAKER rioter1_fc carterc_dm IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter1_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF CREATE_CHAR PEDTYPE_MISSION1 LSV3 2651.0447 -1515.1112 26.5111 rioter2_fc SET_CHAR_HEADING rioter2_fc 12.4201 GIVE_WEAPON_TO_CHAR rioter2_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter2_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter2_fc 10 SET_CHAR_DECISION_MAKER rioter2_fc carterc_dm enemy_fc = rioter2_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV3 2636.1875 -1559.3972 18.5108 rioter3_fc SET_CHAR_HEADING rioter3_fc 276.3582 GIVE_WEAPON_TO_CHAR rioter3_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter3_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter3_fc 10 SET_CHAR_DECISION_MAKER rioter3_fc carterc_dm enemy_fc = rioter3_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV3 2641.4182 -1558.0044 18.6112 rioter4_fc SET_CHAR_HEADING rioter4_fc 339.6795 GIVE_WEAPON_TO_CHAR rioter4_fc WEAPONTYPE_MICRO_UZI 9999 SET_CHAR_PROOFS rioter4_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter4_fc 10 SET_CHAR_DECISION_MAKER rioter4_fc carterc_dm enemy_fc = rioter4_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV3 2649.3247 -1589.4099 13.0846 rioter5_fc SET_CHAR_HEADING rioter5_fc 318.9207 GIVE_WEAPON_TO_CHAR rioter5_fc WEAPONTYPE_MICRO_UZI 9999 SET_CHAR_PROOFS rioter5_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter5_fc 10 SET_CHAR_DECISION_MAKER rioter5_fc carterc_dm enemy_fc = rioter5_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel rioters_fcflag = 5 ENDIF ENDIF IF rioters_fcflag = 5 IF LOCATE_CAR_2D benz_fc 2652.95 -1404.16 20.0 20.0 FALSE START_SCRIPT_FIRE 2641.66 -1514.55 26.82 0 2 fire1_fc START_SCRIPT_FIRE 2638.68 -1515.3 26.5 0 3 fire1_fc START_SCRIPT_FIRE 2641.58 -1538.54 22.46 0 3 fire1_fc START_SCRIPT_FIRE 2635.64 -1605.36 10.7 0 2 fire1_fc START_SCRIPT_FIRE 2643.52 -1599.47 18.71 0 3 fire1_fc CREATE_CHAR PEDTYPE_MISSION1 LSV3 2647.5835 -1518.5471 25.7427 rioter6_fc SET_CHAR_HEADING rioter6_fc 12.7483 GIVE_WEAPON_TO_CHAR rioter6_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter6_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter6_fc 10 SET_CHAR_DECISION_MAKER rioter6_fc carterc_dm IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter6_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF CREATE_CHAR PEDTYPE_MISSION1 LSV3 2652.5154 -1587.5516 13.4203 rioter7_fc SET_CHAR_HEADING rioter7_fc 12.4201 GIVE_WEAPON_TO_CHAR rioter7_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter7_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter7_fc 10 SET_CHAR_DECISION_MAKER rioter7_fc carterc_dm enemy_fc = rioter7_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV3 2647.3679 -1629.5948 9.7270 rioter8_fc SET_CHAR_HEADING rioter8_fc 276.3582 GIVE_WEAPON_TO_CHAR rioter8_fc WEAPONTYPE_MICRO_UZI 9999 SET_CHAR_PROOFS rioter8_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter8_fc 10 SET_CHAR_DECISION_MAKER rioter8_fc carterc_dm enemy_fc = rioter8_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV3 2651.1484 -1631.9159 9.8767 rioter9_fc SET_CHAR_HEADING rioter9_fc 339.6795 GIVE_WEAPON_TO_CHAR rioter9_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter9_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter9_fc 10 SET_CHAR_DECISION_MAKER rioter9_fc carterc_dm IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter9_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF CREATE_CHAR PEDTYPE_MISSION1 LSV3 2635.9316 -1598.6659 18.7482 rioter10_fc SET_CHAR_HEADING rioter10_fc 318.9207 GIVE_WEAPON_TO_CHAR rioter10_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter10_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter10_fc 10 SET_CHAR_DECISION_MAKER rioter10_fc carterc_dm enemy_fc = rioter10_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV3 2650.4944 -1600.3645 18.1152 rioter11_fc SET_CHAR_HEADING rioter11_fc 318.9207 GIVE_WEAPON_TO_CHAR rioter11_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter11_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter11_fc 10 SET_CHAR_DECISION_MAKER rioter11_fc carterc_dm enemy_fc = rioter11_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV3 2635.9316 -1598.6659 18.7482 rioter12_fc SET_CHAR_HEADING rioter12_fc 318.9207 GIVE_WEAPON_TO_CHAR rioter12_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter12_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter12_fc 10 SET_CHAR_DECISION_MAKER rioter12_fc carterc_dm enemy_fc = rioter12_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 LSV3 2646.5981 -1599.9045 18.295 rioter13_fc SET_CHAR_HEADING rioter13_fc 318.9207 GIVE_WEAPON_TO_CHAR rioter13_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter13_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter13_fc 10 SET_CHAR_DECISION_MAKER rioter13_fc carterc_dm IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter13_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF CREATE_CHAR PEDTYPE_MISSION1 LSV3 2634.6890 -1629.5061 18.7081 rioter14_fc SET_CHAR_HEADING rioter14_fc 318.9207 GIVE_WEAPON_TO_CHAR rioter14_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter14_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter14_fc 10 SET_CHAR_DECISION_MAKER rioter14_fc carterc_dm IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter14_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF rioters_fcflag = 6 ENDIF ENDIF IF rioters_fcflag = 6 IF LOCATE_CAR_2D benz_fc 2598.57 -1729.65 20.0 20.0 FALSE DELETE_CHAR rioter1_fc DELETE_CHAR rioter2_fc DELETE_CHAR rioter4_fc DELETE_CHAR rioter5_fc DELETE_CHAR rioter6_fc DELETE_CHAR rioter7_fc DELETE_CHAR rioter8_fc DELETE_CHAR rioter9_fc DELETE_CHAR rioter10_fc DELETE_CHAR rioter11_fc DELETE_CHAR rioter12_fc DELETE_CHAR rioter13_fc DELETE_CHAR rioter14_fc DELETE_CAR parkedcar_fc DELETE_OBJECT gangcar1_fc DELETE_OBJECT gangcar3_fc DELETE_OBJECT gangcar4_fc DELETE_OBJECT gangcar5_fc REMOVE_ALL_SCRIPT_FIRES rioters_fcflag = 7 ENDIF ENDIF //seat swapping //cars IF copcar1swap_fcflag = 1 IF NOT IS_CAR_DEAD copcar1_fc IF NOT IS_CHAR_DEAD cop1_fc ELSE IF NOT IS_CHAR_DEAD cop2_fc IF IS_CHAR_IN_CAR cop2_fc copcar1_fc GET_DRIVER_OF_CAR copcar1_fc driverofcar_fc IF driverofcar_fc = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT cop2_fc copcar1_fc copcar1swap_fcflag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR copcar1_fc copcar1swap_fcflag = 2 ENDIF ENDIF ENDIF ENDIF IF copcar1swap_fcflag = 2 IF IS_CHAR_DEAD cop2_fc STOP_PLAYBACK_RECORDED_CAR copcar1_fc copcar1swap_fcflag = 3 ENDIF ENDIF IF copcar1_fcflag = 1 IF NOT IS_CAR_DEAD copcar1_fc IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR copcar1_fc MARK_CAR_AS_NO_LONGER_NEEDED copcar1_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop1_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop2_fc REMOVE_BLIP copcar1_fcblip copcar1_fcflag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR copcar1_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop1_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop2_fc MARK_CAR_AS_NO_LONGER_NEEDED copcar1_fc REMOVE_BLIP copcar1_fcblip copcar1_fcflag = 2 ENDIF ENDIF IF copcar2swap_fcflag = 1 IF NOT IS_CAR_DEAD copcar2_fc IF NOT IS_CHAR_DEAD cop3_fc ELSE IF NOT IS_CHAR_DEAD cop4_fc IF IS_CHAR_IN_CAR cop4_fc copcar2_fc GET_DRIVER_OF_CAR copcar2_fc driverofcar_fc IF driverofcar_fc = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT cop4_fc copcar2_fc copcar2swap_fcflag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR copcar2_fc copcar2swap_fcflag = 2 ENDIF ENDIF ENDIF ENDIF IF copcar2swap_fcflag = 2 IF IS_CHAR_DEAD cop4_fc STOP_PLAYBACK_RECORDED_CAR copcar2_fc copcar2swap_fcflag = 3 ENDIF ENDIF IF copcar2_fcflag = 1 IF NOT IS_CAR_DEAD copcar2_fc IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR copcar2_fc MARK_CAR_AS_NO_LONGER_NEEDED copcar2_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop3_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop4_fc REMOVE_BLIP copcar2_fcblip copcar2_fcflag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR copcar2_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop3_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop4_fc MARK_CAR_AS_NO_LONGER_NEEDED copcar2_fc REMOVE_BLIP copcar2_fcblip copcar2_fcflag = 2 ENDIF ENDIF IF ecar1swap_fcflag = 1 IF NOT IS_CAR_DEAD ecar1_fc IF NOT IS_CHAR_DEAD gang1_fc ELSE IF NOT IS_CHAR_DEAD gang2_fc IF IS_CHAR_IN_CAR gang2_fc ecar1_fc GET_DRIVER_OF_CAR ecar1_fc driverofcar_fc IF driverofcar_fc = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT gang2_fc ecar1_fc ecar1swap_fcflag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR ecar1_fc ecar1swap_fcflag = 2 ENDIF ENDIF ENDIF ENDIF IF ecar1swap_fcflag = 2 IF IS_CHAR_DEAD gang2_fc STOP_PLAYBACK_RECORDED_CAR ecar1_fc ecar1swap_fcflag = 3 ENDIF ENDIF IF ecar1_fcflag = 1 IF NOT IS_CAR_DEAD ecar1_fc IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR ecar1_fc MARK_CAR_AS_NO_LONGER_NEEDED ecar1_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang1_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang2_fc REMOVE_BLIP ecar1_fcblip ecar1_fcflag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR ecar1_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang1_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang2_fc MARK_CAR_AS_NO_LONGER_NEEDED ecar1_fc REMOVE_BLIP ecar1_fcblip ecar1_fcflag = 2 ENDIF ENDIF IF ecar2swap_fcflag = 1 IF NOT IS_CAR_DEAD ecar2_fc IF NOT IS_CHAR_DEAD gang3_fc ELSE IF NOT IS_CHAR_DEAD gang4_fc IF IS_CHAR_IN_CAR gang4_fc ecar2_fc GET_DRIVER_OF_CAR ecar2_fc driverofcar_fc IF driverofcar_fc = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT gang4_fc ecar2_fc ecar2swap_fcflag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR ecar2_fc ecar2swap_fcflag = 2 ENDIF ENDIF ENDIF ENDIF IF ecar2swap_fcflag = 2 IF IS_CHAR_DEAD gang4_fc STOP_PLAYBACK_RECORDED_CAR ecar2_fc ecar2swap_fcflag = 3 ENDIF ENDIF IF ecar2_fcflag = 1 IF NOT IS_CAR_DEAD ecar2_fc IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR ecar2_fc MARK_CAR_AS_NO_LONGER_NEEDED ecar2_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang3_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang4_fc REMOVE_BLIP ecar2_fcblip ecar2_fcflag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR ecar2_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang3_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang4_fc MARK_CAR_AS_NO_LONGER_NEEDED ecar2_fc REMOVE_BLIP ecar2_fcblip ecar2_fcflag = 2 ENDIF ENDIF IF mexcar1swap_fcflag = 1 IF NOT IS_CAR_DEAD mexcar1_fc IF NOT IS_CHAR_DEAD gang5_fc ELSE IF NOT IS_CHAR_DEAD gang6_fc IF IS_CHAR_IN_CAR gang6_fc mexcar1_fc GET_DRIVER_OF_CAR mexcar1_fc driverofcar_fc IF driverofcar_fc = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT gang6_fc mexcar1_fc mexcar1swap_fcflag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR mexcar1_fc mexcar1swap_fcflag = 2 ENDIF ENDIF ENDIF ENDIF IF mexcar1swap_fcflag = 2 IF IS_CHAR_DEAD gang6_fc STOP_PLAYBACK_RECORDED_CAR mexcar1_fc mexcar1swap_fcflag = 3 ENDIF ENDIF IF mexcar1_fcflag = 1 IF NOT IS_CAR_DEAD mexcar1_fc IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR mexcar1_fc MARK_CAR_AS_NO_LONGER_NEEDED mexcar1_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang5_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang6_fc REMOVE_BLIP mexcar1_fcblip mexcar1_fcflag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR mexcar1_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang5_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang6_fc MARK_CAR_AS_NO_LONGER_NEEDED mexcar1_fc REMOVE_BLIP mexcar1_fcblip mexcar1_fcflag = 2 ENDIF ENDIF IF mexcar2swap_fcflag = 1 IF NOT IS_CAR_DEAD mexcar2_fc IF NOT IS_CHAR_DEAD gang7_fc ELSE IF NOT IS_CHAR_DEAD gang8_fc IF IS_CHAR_IN_CAR gang8_fc mexcar2_fc GET_DRIVER_OF_CAR mexcar2_fc driverofcar_fc IF driverofcar_fc = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT gang8_fc mexcar2_fc mexcar2swap_fcflag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR mexcar2_fc mexcar2swap_fcflag = 2 ENDIF ENDIF ENDIF ENDIF IF mexcar2swap_fcflag = 2 IF IS_CHAR_DEAD gang8_fc STOP_PLAYBACK_RECORDED_CAR mexcar2_fc mexcar2swap_fcflag = 3 ENDIF ENDIF IF mexcar2_fcflag = 1 IF NOT IS_CAR_DEAD mexcar2_fc IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR mexcar2_fc MARK_CAR_AS_NO_LONGER_NEEDED mexcar2_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang7_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang8_fc REMOVE_BLIP mexcar2_fcblip mexcar2_fcflag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR mexcar2_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang7_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang8_fc MARK_CAR_AS_NO_LONGER_NEEDED mexcar2_fc REMOVE_BLIP mexcar2_fcblip mexcar2_fcflag = 2 ENDIF ENDIF IF mexcar3swap_fcflag = 1 IF NOT IS_CAR_DEAD mexcar3_fc IF NOT IS_CHAR_DEAD gang17_fc ELSE IF NOT IS_CHAR_DEAD gang18_fc IF IS_CHAR_IN_CAR gang18_fc mexcar3_fc GET_DRIVER_OF_CAR mexcar3_fc driverofcar_fc IF driverofcar_fc = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT gang18_fc mexcar3_fc mexcar3swap_fcflag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR mexcar3_fc mexcar3swap_fcflag = 2 ENDIF ENDIF ENDIF ENDIF IF mexcar3swap_fcflag = 2 IF IS_CHAR_DEAD gang18_fc STOP_PLAYBACK_RECORDED_CAR mexcar3_fc mexcar3swap_fcflag = 3 ENDIF ENDIF IF mexcar3_fcflag = 1 IF NOT IS_CAR_DEAD mexcar3_fc IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR mexcar3_fc MARK_CAR_AS_NO_LONGER_NEEDED mexcar3_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang17_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang18_fc REMOVE_BLIP mexcar3_fcblip mexcar3_fcflag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR mexcar3_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang17_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang18_fc MARK_CAR_AS_NO_LONGER_NEEDED mexcar3_fc REMOVE_BLIP mexcar3_fcblip mexcar3_fcflag = 2 ENDIF ENDIF //bikes IF bike1swap_fcflag = 1 IF NOT IS_CAR_DEAD bike1_fc IF NOT IS_CHAR_DEAD gang9_fc ELSE IF NOT IS_CHAR_DEAD gang10_fc IF IS_CHAR_IN_CAR gang10_fc bike1_fc GET_DRIVER_OF_CAR bike1_fc driverofcar_fc IF driverofcar_fc = -1 GET_CAR_COORDINATES benz_fc player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD gang10_fc player_x player_y -10.0 WARP_CHAR_INTO_CAR gang10_fc bike1_fc bike1swap_fcflag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike1_fc 18.0 STOP_PLAYBACK_RECORDED_CAR bike1_fc SET_CAR_ROTATION_VELOCITY bike1_fc 3.5 7.3999 8.1003 bike1swap_fcflag = 2 ENDIF ENDIF ENDIF ENDIF IF bike1swap_fcflag = 2 IF IS_CHAR_DEAD gang10_fc STOP_PLAYBACK_RECORDED_CAR bike1_fc IF NOT IS_CAR_DEAD bike1_fc SET_CAR_FORWARD_SPEED bike1_fc 18.0 SET_CAR_ROTATION_VELOCITY bike1_fc 3.5 7.3999 8.1003 ENDIF bike1swap_fcflag = 3 ENDIF ENDIF IF bike1_fcflag = 1 IF IS_CHAR_DEAD gang9_fc IF IS_CHAR_DEAD gang10_fc OR IS_CAR_DEAD bike1_fc STOP_PLAYBACK_RECORDED_CAR bike1_fc REMOVE_BLIP bike1_fcblip MARK_CAR_AS_NO_LONGER_NEEDED bike1_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang9_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang10_fc bike1_fcflag = 2 ENDIF ENDIF ENDIF IF bike2swap_fcflag = 1 IF NOT IS_CAR_DEAD bike2_fc IF NOT IS_CHAR_DEAD gang11_fc ELSE IF NOT IS_CHAR_DEAD gang12_fc IF IS_CHAR_IN_CAR gang12_fc bike2_fc GET_DRIVER_OF_CAR bike2_fc driverofcar_fc IF driverofcar_fc = -1 GET_CAR_COORDINATES benz_fc player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD gang12_fc player_x player_y -10.0 WARP_CHAR_INTO_CAR gang12_fc bike2_fc bike2swap_fcflag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike2_fc 18.0 STOP_PLAYBACK_RECORDED_CAR bike2_fc SET_CAR_ROTATION_VELOCITY bike2_fc 3.5 7.3999 8.1003 bike2swap_fcflag = 2 ENDIF ENDIF ENDIF ENDIF IF bike2swap_fcflag = 2 IF IS_CHAR_DEAD gang12_fc STOP_PLAYBACK_RECORDED_CAR bike2_fc IF NOT IS_CAR_DEAD bike2_fc SET_CAR_FORWARD_SPEED bike2_fc 18.0 SET_CAR_ROTATION_VELOCITY bike2_fc 3.5 7.3999 8.1003 ENDIF bike2swap_fcflag = 3 ENDIF ENDIF IF bike2_fcflag = 1 IF IS_CHAR_DEAD gang11_fc IF IS_CHAR_DEAD gang12_fc OR IS_CAR_DEAD bike2_fc STOP_PLAYBACK_RECORDED_CAR bike2_fc REMOVE_BLIP bike2_fcblip MARK_CAR_AS_NO_LONGER_NEEDED bike2_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang11_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang12_fc bike2_fcflag = 2 ENDIF ENDIF ENDIF IF bike3swap_fcflag = 1 IF NOT IS_CAR_DEAD bike3_fc IF NOT IS_CHAR_DEAD gang13_fc ELSE IF NOT IS_CHAR_DEAD gang14_fc IF IS_CHAR_IN_CAR gang14_fc bike3_fc GET_DRIVER_OF_CAR bike3_fc driverofcar_fc IF driverofcar_fc = -1 GET_CAR_COORDINATES benz_fc player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD gang14_fc player_x player_y -10.0 WARP_CHAR_INTO_CAR gang14_fc bike3_fc bike3swap_fcflag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike3_fc 18.0 STOP_PLAYBACK_RECORDED_CAR bike3_fc SET_CAR_ROTATION_VELOCITY bike3_fc 3.5 7.3999 8.1003 bike3swap_fcflag = 2 ENDIF ENDIF ENDIF ENDIF IF bike3swap_fcflag = 2 IF IS_CHAR_DEAD gang14_fc STOP_PLAYBACK_RECORDED_CAR bike3_fc IF NOT IS_CAR_DEAD bike3_fc SET_CAR_FORWARD_SPEED bike3_fc 18.0 SET_CAR_ROTATION_VELOCITY bike3_fc 3.5 7.3999 8.1003 ENDIF bike3swap_fcflag = 3 ENDIF ENDIF IF bike3_fcflag = 1 IF IS_CHAR_DEAD gang13_fc IF IS_CHAR_DEAD gang14_fc OR IS_CAR_DEAD bike3_fc STOP_PLAYBACK_RECORDED_CAR bike3_fc REMOVE_BLIP bike3_fcblip MARK_CAR_AS_NO_LONGER_NEEDED bike3_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang13_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang14_fc bike3_fcflag = 2 ENDIF ENDIF ENDIF //audio for chase GOSUB process_audio_fc //imran IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 0 audio_label_fc = SOUND_ROT4_MD //Motherfucker! $input_text_fc = ROT4_MD //Motherfucker! GOSUB load_audio_fc ENDIF ENDIF IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 1 audio_label_fc = SOUND_ROT4_NL //Take that pig bastard down! $input_text_fc = ROT4_NL //Take that pig bastard down! GOSUB load_audio_fc ENDIF ENDIF IF actiontext_fcflag = 1 IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 2 audio_label_fc = SOUND_ROT4_QA //Those firetrucks are indestructible! $input_text_fc = ROT4_QA //Those firetrucks are indestructible! GOSUB load_audio_fc ENDIF ENDIF ENDIF IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 3 audio_label_fc = SOUND_ROT4_QB //We ain’t gonna dent it! $input_text_fc = ROT4_QB //We ain’t gonna dent it! GOSUB load_audio_fc ENDIF ENDIF IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 4 audio_label_fc = SOUND_ROT4_TF //Watch our six! $input_text_fc = ROT4_TF //Watch our six! GOSUB load_audio_fc ENDIF ENDIF IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 5 audio_label_fc = SOUND_ROT4_NR //Cops on our tail! $input_text_fc = ROT4_NR //Cops on our tail! GOSUB load_audio_fc ENDIF ENDIF IF actiontext_fcflag = 2 IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 6 audio_label_fc = SOUND_ROT4_NE //Vagos rioters coming up! $input_text_fc = ROT4_NE //Vagos rioters coming up! GOSUB load_audio_fc ENDIF ENDIF ENDIF IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 7 audio_label_fc = SOUND_ROT4_TK //This city’s gone nuts! $input_text_fc = ROT4_TK //This city’s gone nuts! GOSUB load_audio_fc ENDIF ENDIF IF actiontext_fcflag = 3 IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 8 audio_label_fc = SOUND_ROT4_TM //I’ll keep up with Tenpenny, don’t you worry!! $input_text_fc = ROT4_TM //I’ll keep up with Tenpenny, don’t you worry! GOSUB load_audio_fc ENDIF ENDIF ENDIF IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 9 audio_label_fc = SOUND_ROT4_TG //Concentrate on keepin g all these other lunatics off our case, CJ. $input_text_fc = ROT4_TG //Concentrate on keepin g all these other lunatics off our case, CJ. GOSUB load_audio_fc ENDIF ENDIF IF actiontext_fcflag = 5 IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 10 audio_label_fc = SOUND_ROT4_NA //Rioters on the bridge up ahead! $input_text_fc = ROT4_NA //Rioters on the bridge up ahead! GOSUB load_audio_fc ENDIF ENDIF ENDIF IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 11 audio_label_fc = SOUND_ROT4_NB //They’re dropping shit from that bridge! $input_text_fc = ROT4_NB //They’re dropping shit from that bridge! GOSUB load_audio_fc ENDIF ENDIF IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 12 audio_label_fc = SOUND_ROT4_TC //Look out, CJ! $input_text_fc = ROT4_TC //Look out, CJ! GOSUB load_audio_fc ENDIF ENDIF IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 13 audio_label_fc = SOUND_ROT4_TF //Watch our six! $input_text_fc = ROT4_TF //Watch our six! GOSUB load_audio_fc ENDIF ENDIF IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 14 audio_label_fc = SOUND_ROT4_TA //Some rioters after us on bikes! $input_text_fc = ROT4_TA //Some rioters after us on bikes! GOSUB load_audio_fc ENDIF ENDIF ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// Second Shooting Section /////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF finalerails_fcflag = 2 IF NOT IS_CAR_DEAD firetruck_fc IF NOT IS_CAR_DEAD benz_fc //car health GET_CAR_HEALTH benz_fc carhealth_fc carhealth_fc = carhealth_fc - 12000 IF carhealth_fc <= 0 carhealth_fc = 0 SET_CAR_PROOFS benz_fc FALSE FALSE FALSE FALSE FALSE SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE IF NOT IS_CHAR_DEAD sweet TASK_DIE sweet ENDIF EXPLODE_CAR benz_fc PRINT_NOW RM4_53 5000 1 //~r~You wrecked your car GOTO mission_finaleC_failed ELSE carhealth_fc = carhealth_fc / 80 ENDIF IF IS_CHAR_DEAD sweet PRINT_NOW RM4_53 5000 1 //~r~You wrecked your car GOTO mission_finaleC_failed ENDIF ENDIF IF lastrails_fcflag = 0 //delete cars and bikes and everything that was created copcar1_fcflag = 0 copcar1swap_fcflag = 0 copcar2_fcflag = 0 copcar2swap_fcflag = 0 mexcar1_fcflag = 0 mexcar1swap_fcflag = 0 bike1_fcflag = 0 bike1swap_fcflag = 0 bike2_fcflag = 0 bike2swap_fcflag = 0 REMOVE_BLIP mexcar1_fcblip REMOVE_BLIP mexcar2_fcblip REMOVE_BLIP mexcar3_fcblip REMOVE_BLIP ecar1_fcblip REMOVE_BLIP ecar2_fcblip REMOVE_BLIP bike1_fcblip REMOVE_BLIP bike2_fcblip REMOVE_BLIP bike3_fcblip REMOVE_BLIP copcar1_fcblip REMOVE_BLIP copcar2_fcblip DELETE_CAR bike1_fc DELETE_CHAR gang9_fc DELETE_CHAR gang10_fc DELETE_CAR bike2_fc DELETE_CHAR gang11_fc DELETE_CHAR gang12_fc DELETE_CAR bike3_fc DELETE_CHAR gang13_fc DELETE_CHAR gang14_fc DELETE_CAR copcar1_fc DELETE_CAR copcar2_fc DELETE_CAR mexcar1_fc DELETE_CAR mexcar2_fc DELETE_CAR mexcar3_fc DELETE_CAR ecar1_fc DELETE_CAR ecar2_fc CREATE_CAR SANCHEZ 2375.0 -1918.0 12.5 bike1_fc SET_CAR_HEADING bike1_fc 176.0 CREATE_CHAR_INSIDE_CAR bike1_fc PEDTYPE_MISSION1 LSV3 gang9_fc SET_CHAR_DECISION_MAKER gang9_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang9_fc TRUE CREATE_CHAR_AS_PASSENGER bike1_fc PEDTYPE_MISSION1 LSV3 0 gang10_fc SET_CHAR_HEALTH gang10_fc 10 SET_CHAR_DECISION_MAKER gang10_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang10_fc TRUE GIVE_WEAPON_TO_CHAR gang10_fc WEAPONTYPE_MICRO_UZI 99999 SET_CAR_ONLY_DAMAGED_BY_PLAYER bike1_fc TRUE SET_CAR_PROOFS bike1_fc FALSE TRUE TRUE FALSE FALSE CREATE_CAR SANCHEZ 2377.0 -1911.0 12.5 bike2_fc SET_CAR_HEADING bike2_fc 186.0 CREATE_CHAR_INSIDE_CAR bike2_fc PEDTYPE_MISSION1 LSV3 gang11_fc SET_CHAR_DECISION_MAKER gang11_fc carterc_dm SET_CHAR_HEALTH gang11_fc 10 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang11_fc TRUE CREATE_CHAR_AS_PASSENGER bike2_fc PEDTYPE_MISSION1 LSV3 0 gang12_fc SET_CHAR_DECISION_MAKER gang12_fc carterc_dm SET_CHAR_HEALTH gang12_fc 10 SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang12_fc TRUE GIVE_WEAPON_TO_CHAR gang12_fc WEAPONTYPE_MICRO_UZI 99999 SET_CAR_ONLY_DAMAGED_BY_PLAYER bike2_fc TRUE SET_CAR_PROOFS bike2_fc FALSE TRUE TRUE FALSE FALSE SET_FIXED_CAMERA_POSITION 2347.5261 -1914.9288 15.1567 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2348.2241 -1915.6173 14.9604 JUMP_CUT lastrails_fcflag = 1 ENDIF ENDIF IF NOT IS_CAR_DEAD firetruck_fc IF NOT IS_CAR_DEAD benz_fc //rioters IF rioters2_fcflag = 0 CREATE_CHAR PEDTYPE_MISSION1 MALE01 2300.89 -1947.97 24.5 rioter1_fc SET_CHAR_HEADING rioter1_fc 329.17 GIVE_WEAPON_TO_CHAR rioter1_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter1_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter1_fc 10 SET_CHAR_DECISION_MAKER rioter1_fc carterc_dm IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter1_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF CREATE_CHAR PEDTYPE_MISSION1 MALE01 2302.33 -1925.32 12.6 rioter2_fc SET_CHAR_HEADING rioter2_fc 311.22 GIVE_WEAPON_TO_CHAR rioter2_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter2_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter2_fc 10 SET_CHAR_DECISION_MAKER rioter2_fc carterc_dm enemy_fc = rioter2_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 MALE01 2324.569 -1951.436 20.59 rioter3_fc SET_CHAR_HEADING rioter3_fc 44.92 GIVE_WEAPON_TO_CHAR rioter3_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter3_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter3_fc 10 SET_CHAR_DECISION_MAKER rioter3_fc carterc_dm IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter3_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF CREATE_CHAR PEDTYPE_MISSION1 MALE01 2362.397 -1982.99 18.4 rioter4_fc SET_CHAR_HEADING rioter4_fc 44.93 GIVE_WEAPON_TO_CHAR rioter4_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter4_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter4_fc 10 SET_CHAR_DECISION_MAKER rioter4_fc carterc_dm enemy_fc = rioter4_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel rioters2_fcflag = 1 ENDIF IF lastrails_fcflag = 1 START_PLAYBACK_RECORDED_CAR firetruck_fc 241 START_PLAYBACK_RECORDED_CAR benz_fc 242 IF NOT IS_CAR_DEAD bike1_fc START_PLAYBACK_RECORDED_CAR bike1_fc 243 IF NOT IS_CHAR_DEAD gang10_fc TASK_DRIVE_BY gang10_fc -1 benz_fc 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 60 ENDIF ADD_BLIP_FOR_CAR bike1_fc bike1_fcblip CHANGE_BLIP_DISPLAY bike1_fcblip BLIP_ONLY bike1_fcflag = 1 bike1swap_fcflag = 1 ENDIF IF NOT IS_CAR_DEAD bike2_fc START_PLAYBACK_RECORDED_CAR bike2_fc 244 IF NOT IS_CHAR_DEAD gang12_fc TASK_DRIVE_BY gang12_fc -1 benz_fc 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 60 ENDIF ADD_BLIP_FOR_CAR bike2_fc bike2_fcblip CHANGE_BLIP_DISPLAY bike2_fcblip BLIP_ONLY bike2_fcflag = 1 bike2swap_fcflag = 1 ENDIF CREATE_CAR COPCARLA 2337.0 -2013.0 12.5 copcar1_fc SET_CAR_HEADING copcar1_fc 325.0 SET_CAR_ONLY_DAMAGED_BY_PLAYER copcar1_fc TRUE CREATE_CHAR_INSIDE_CAR copcar1_fc PEDTYPE_MISSION1 LAPD1 cop1_fc SET_CHAR_DECISION_MAKER cop1_fc carterc_dm SET_CHAR_SUFFERS_CRITICAL_HITS cop1_fc FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop1_fc TRUE CREATE_CHAR_AS_PASSENGER copcar1_fc PEDTYPE_MISSION1 LAPD1 0 cop2_fc SET_CHAR_DECISION_MAKER cop2_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop2_fc TRUE GIVE_WEAPON_TO_CHAR cop2_fc WEAPONTYPE_MICRO_UZI 9999 SET_CAR_PROOFS copcar1_fc FALSE TRUE TRUE FALSE FALSE CREATE_CAR COPCARLA 2266.0 -1970.0 12.5 copcar2_fc SET_CAR_HEADING copcar2_fc 178.0 SET_CAR_ONLY_DAMAGED_BY_PLAYER copcar2_fc TRUE CREATE_CHAR_INSIDE_CAR copcar2_fc PEDTYPE_MISSION1 LAPD1 cop3_fc SET_CHAR_DECISION_MAKER cop3_fc carterc_dm SET_CHAR_SUFFERS_CRITICAL_HITS cop3_fc FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop3_fc TRUE CREATE_CHAR_AS_PASSENGER copcar2_fc PEDTYPE_MISSION1 LAPD1 0 cop4_fc SET_CHAR_DECISION_MAKER cop4_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop4_fc TRUE GIVE_WEAPON_TO_CHAR cop4_fc WEAPONTYPE_MICRO_UZI 9999 SET_CAR_PROOFS copcar2_fc FALSE TRUE TRUE FALSE FALSE TIMERB = 0 lastrails_fcflag = 2 playercontrol_fcflag = 1 ENDIF IF playercontrol_fcflag = 1 IF TIMERB > 6000 CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS handlingudio_fcflag = 0 progressaudio_fcflag = 0 actiontext_fcflag = 0 RESTORE_CAMERA SET_PLAYER_CONTROL PLAYER1 ON SWITCH_WIDESCREEN OFF TASK_DRIVE_BY scplayer -1 -1 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 100 SET_HEADING_FOR_ATTACHED_PLAYER PLAYER1 120.5 200.0 IF NOT IS_CAR_DEAD benz_fc SET_CAR_PROOFS benz_fc FALSE TRUE TRUE TRUE TRUE ENDIF playercontrol_fcflag = 2 ENDIF ENDIF IF explodecar_fcflag = 0 IF lastrails_fcflag > 4 IF NOT IS_CAR_DEAD copcar1_fc IF LOCATE_CAR_2D copcar1_fc 2210.19 -1864.8 5.0 5.0 FALSE SET_CAR_HEALTH copcar1_fc 100 TIMERB = 0 explodecar_fcflag = 1 ENDIF ENDIF ENDIF ENDIF IF explodecar_fcflag = 1 IF NOT IS_CAR_DEAD copcar1_fc IF TIMERB > 1250 EXPLODE_CAR copcar1_fc explodecar_fcflag = 2 ENDIF ENDIF ENDIF IF lastrails_fcflag = 2 IF LOCATE_CAR_2D firetruck_fc 2347.96 -1972.42 20.0 20.0 FALSE actiontext_fcflag = 1 IF NOT IS_CAR_DEAD copcar1_fc START_PLAYBACK_RECORDED_CAR copcar1_fc 245 SWITCH_CAR_SIREN copcar1_fc ON IF NOT IS_CHAR_DEAD cop2_fc TASK_DRIVE_BY cop2_fc -1 benz_fc 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 50 ENDIF ADD_BLIP_FOR_CAR copcar1_fc copcar1_fcblip CHANGE_BLIP_DISPLAY copcar1_fcblip BLIP_ONLY copcar1_fcflag = 1 copcar1swap_fcflag = 1 ENDIF IF NOT IS_CAR_DEAD copcar2_fc SWITCH_CAR_SIREN copcar2_fc ON START_PLAYBACK_RECORDED_CAR copcar2_fc 246 IF NOT IS_CHAR_DEAD cop4_fc TASK_DRIVE_BY cop4_fc -1 benz_fc 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 10 ENDIF ADD_BLIP_FOR_CAR copcar2_fc copcar2_fcblip CHANGE_BLIP_DISPLAY copcar2_fcblip BLIP_ONLY copcar2_fcflag = 1 copcar2swap_fcflag = 1 ENDIF CREATE_CAR COPCARLA 2283.0 -2077.0 14.0 copcar4_fc SET_CAR_HEADING copcar4_fc 48.0 SET_CAR_ONLY_DAMAGED_BY_PLAYER copcar4_fc TRUE CREATE_CHAR_INSIDE_CAR copcar4_fc PEDTYPE_MISSION1 LAPD1 cop7_fc SET_CHAR_DECISION_MAKER cop7_fc carterc_dm SET_CHAR_SUFFERS_CRITICAL_HITS cop7_fc FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop7_fc TRUE CREATE_CHAR_AS_PASSENGER copcar4_fc PEDTYPE_MISSION1 LAPD1 0 cop8_fc SET_CHAR_DECISION_MAKER cop8_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop8_fc TRUE GIVE_WEAPON_TO_CHAR cop8_fc WEAPONTYPE_MICRO_UZI 9999 SET_CAR_PROOFS copcar4_fc FALSE TRUE TRUE FALSE FALSE SET_CAR_HEALTH copcar4_fc 700 lastrails_fcflag = 3 ENDIF ENDIF IF lastrails_fcflag = 3 IF LOCATE_CAR_2D benz_fc 2260.92 -2021.7 25.0 25.0 FALSE actiontext_fcflag = 2 IF NOT IS_CAR_DEAD copcar4_fc START_PLAYBACK_RECORDED_CAR copcar4_fc 249 SWITCH_CAR_SIREN copcar4_fc ON IF NOT IS_CHAR_DEAD cop8_fc TASK_DRIVE_BY cop8_fc -1 benz_fc 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 50 ENDIF ADD_BLIP_FOR_CAR copcar4_fc copcar4_fcblip CHANGE_BLIP_DISPLAY copcar4_fcblip BLIP_ONLY copcar4_fcflag = 1 copcar4swap_fcflag = 1 ENDIF DELETE_CHAR rioter1_fc DELETE_CHAR rioter2_fc DELETE_CHAR rioter3_fc DELETE_CHAR rioter4_fc CREATE_CHAR PEDTYPE_MISSION1 MALE01 2226.86 -1966.5 24.5 rioter1_fc SET_CHAR_HEADING rioter1_fc 329.17 GIVE_WEAPON_TO_CHAR rioter1_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter1_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter1_fc 10 SET_CHAR_DECISION_MAKER rioter1_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER rioter1_fc TRUE IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter1_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF CREATE_CHAR PEDTYPE_MISSION1 MALE01 2224.944 -1977.119 24.5 rioter2_fc SET_CHAR_HEADING rioter2_fc 311.22 GIVE_WEAPON_TO_CHAR rioter2_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter2_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter2_fc 10 SET_CHAR_DECISION_MAKER rioter2_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER rioter2_fc TRUE IF NOT IS_CHAR_DEAD cop3_fc enemy_fc = rioter2_fc enemytarget_fc = cop3_fc GOSUB chasekill_fclabel ELSE enemy_fc = rioter2_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel ENDIF CREATE_OBJECT la_fuckcar2 2227.617 -1894.91 12.2 gangcar1_fc SET_OBJECT_DYNAMIC gangcar1_fc TRUE SET_OBJECT_HEADING gangcar1_fc 352.399 // CREATE_CHAR PEDTYPE_MISSION1 MALE01 2230.15 -1891.29 12.5 rioter3_fc SET_CHAR_HEADING rioter3_fc 329.17 GIVE_WEAPON_TO_CHAR rioter3_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter3_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter3_fc 10 SET_CHAR_DECISION_MAKER rioter3_fc carterc_dm enemy_fc = rioter3_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 MALE01 2229.57 -1898.48 12.415 rioter4_fc SET_CHAR_HEADING rioter4_fc 311.22 GIVE_WEAPON_TO_CHAR rioter4_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter4_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter4_fc 10 SET_CHAR_DECISION_MAKER rioter4_fc carterc_dm IF NOT IS_CHAR_DEAD cop3_fc enemy_fc = rioter4_fc enemytarget_fc = cop3_fc GOSUB chasekill_fclabel ELSE enemy_fc = rioter4_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel ENDIF CREATE_OBJECT la_fuckcar2 2222.927 -1973.632 12.25 gangcar5_fc SET_OBJECT_DYNAMIC gangcar5_fc TRUE SET_OBJECT_HEADING gangcar5_fc 352.399 lastrails_fcflag = 4 ENDIF ENDIF IF lastrails_fcflag = 4 IF LOCATE_CAR_2D firetruck_fc 2215.75 -1931.8 25.0 25.0 FALSE actiontext_fcflag = 3 DELETE_CAR bike1_fc DELETE_CHAR gang9_fc DELETE_CHAR gang10_fc REMOVE_BLIP bike1_fcblip DELETE_CAR bike2_fc DELETE_CHAR gang11_fc DELETE_CHAR gang12_fc REMOVE_BLIP bike2_fcblip MARK_MODEL_AS_NO_LONGER_NEEDED LSV3 MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ CREATE_CAR COPCARLA 2169.74 -1726.16 12.5 copcar3_fc SET_CAR_HEADING copcar3_fc 268.0 SET_CAR_ONLY_DAMAGED_BY_PLAYER copcar3_fc TRUE CREATE_CHAR_INSIDE_CAR copcar3_fc PEDTYPE_MISSION1 LAPD1 cop5_fc SET_CHAR_DECISION_MAKER cop5_fc carterc_dm SET_CHAR_SUFFERS_CRITICAL_HITS cop5_fc FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop5_fc TRUE CREATE_CHAR_AS_PASSENGER copcar3_fc PEDTYPE_MISSION1 LAPD1 0 cop6_fc SET_CHAR_DECISION_MAKER cop6_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER cop6_fc TRUE GIVE_WEAPON_TO_CHAR cop6_fc WEAPONTYPE_MICRO_UZI 9999 SET_CAR_PROOFS copcar3_fc FALSE TRUE TRUE FALSE FALSE SET_CAR_HEALTH copcar3_fc 600 lastrails_fcflag = 5 ENDIF ENDIF IF lastrails_fcflag = 5 IF LOCATE_CAR_2D firetruck_fc 2215.93 -1765.08 20.0 20.0 FALSE IF NOT IS_CAR_DEAD copcar3_fc START_PLAYBACK_RECORDED_CAR copcar3_fc 248 SWITCH_CAR_SIREN copcar3_fc ON IF NOT IS_CHAR_DEAD cop6_fc TASK_DRIVE_BY cop6_fc -1 benz_fc 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 50 ENDIF ADD_BLIP_FOR_CAR copcar3_fc copcar3_fcblip CHANGE_BLIP_DISPLAY copcar3_fcblip BLIP_ONLY copcar3_fcflag = 1 copcar3swap_fcflag = 1 ENDIF CREATE_CAR COPCARLA 2323.318 -1656.886 12.53 mexcar1_fc SET_CAR_HEADING mexcar1_fc 272.4 SET_CAR_ONLY_DAMAGED_BY_PLAYER mexcar1_fc TRUE CREATE_CHAR_INSIDE_CAR mexcar1_fc PEDTYPE_MISSION1 LAPD1 gang5_fc SET_CHAR_DECISION_MAKER gang5_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang5_fc TRUE CREATE_CHAR_AS_PASSENGER mexcar1_fc PEDTYPE_MISSION1 LAPD1 0 gang6_fc SET_CHAR_DECISION_MAKER gang6_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER gang6_fc TRUE GIVE_WEAPON_TO_CHAR gang6_fc WEAPONTYPE_MICRO_UZI 99999 SET_CAR_PROOFS mexcar1_fc FALSE TRUE TRUE FALSE FALSE lastrails_fcflag = 6 ENDIF ENDIF IF lastrails_fcflag = 6 IF LOCATE_CAR_2D firetruck_fc 2343.45 -1658.96 30.0 30.0 FALSE actiontext_fcflag = 4 IF NOT IS_CAR_DEAD mexcar1_fc START_PLAYBACK_RECORDED_CAR mexcar1_fc 247 IF NOT IS_CHAR_DEAD gang6_fc TASK_DRIVE_BY gang6_fc -1 benz_fc 0.0 0.0 0.0 300.0 DRIVEBY_AI_ALL_DIRN TRUE 50 ENDIF ADD_BLIP_FOR_CAR mexcar1_fc mexcar1_fcblip CHANGE_BLIP_DISPLAY mexcar1_fcblip BLIP_ONLY mexcar1_fcflag = 1 mexcar1swap_fcflag = 1 ENDIF lastrails_fcflag = 7 ENDIF ENDIF //player completed IF lastrails_fcflag = 7 IF LOCATE_CAR_2D firetruck_fc 2431.0 -1644.0 30.0 30.0 FALSE finalerails_fcflag = 3 lastrails_fcflag = 8 ENDIF ENDIF //rioters IF rioters2_fcflag = 1 IF LOCATE_CAR_2D benz_fc 2215.9 -1791.82 20.0 20.0 FALSE DELETE_CHAR rioter1_fc DELETE_CHAR rioter2_fc DELETE_CHAR rioter3_fc DELETE_CHAR rioter4_fc DELETE_OBJECT gangcar1_fc DELETE_OBJECT gangcar5_fc CREATE_OBJECT la_fuckcar2 2237.0442 -1744.5001 12.5425 gangcar1_fc SET_OBJECT_DYNAMIC gangcar1_fc TRUE SET_OBJECT_HEADING gangcar1_fc 1.2003 CREATE_CHAR PEDTYPE_MISSION1 MALE01 2239.1538 -1747.3259 12.5420 rioter1_fc SET_CHAR_HEADING rioter1_fc 329.17 GIVE_WEAPON_TO_CHAR rioter1_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter1_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter1_fc 10 SET_CHAR_DECISION_MAKER rioter1_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER rioter1_fc TRUE enemy_fc = rioter1_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel // CREATE_OBJECT la_fuckcar2 2297.8909 -1742.1051 12.5469 gangcar3_fc SET_OBJECT_DYNAMIC gangcar3_fc TRUE SET_OBJECT_HEADING gangcar3_fc 185.7601 CREATE_CHAR PEDTYPE_MISSION1 MALE01 2300.6187 -1745.2543 12.5469 rioter2_fc SET_CHAR_HEADING rioter2_fc 311.22 GIVE_WEAPON_TO_CHAR rioter2_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter2_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter2_fc 10 SET_CHAR_DECISION_MAKER rioter2_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER rioter2_fc TRUE IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter2_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF // CREATE_OBJECT la_fuckcar2 2355.7935 -1734.0632 12.3828 gangcar5_fc SET_OBJECT_DYNAMIC gangcar5_fc TRUE SET_OBJECT_HEADING gangcar5_fc 1.2003 CREATE_CHAR PEDTYPE_MISSION1 MALE01 2357.7156 -1730.0507 12.3828 rioter3_fc SET_CHAR_HEADING rioter3_fc 329.17 GIVE_WEAPON_TO_CHAR rioter3_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter3_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter3_fc 10 SET_CHAR_DECISION_MAKER rioter3_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER rioter3_fc TRUE enemy_fc = rioter3_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel // CREATE_CHAR PEDTYPE_MISSION1 MALE01 2365.0671 -1758.1493 12.5469 rioter4_fc SET_CHAR_HEADING rioter4_fc 329.17 GIVE_WEAPON_TO_CHAR rioter4_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter4_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter4_fc 10 SET_CHAR_DECISION_MAKER rioter4_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER rioter4_fc TRUE IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter4_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF CREATE_CHAR PEDTYPE_MISSION1 MALE01 2308.3191 -1721.5842 12.7420 rioter5_fc SET_CHAR_HEADING rioter5_fc 329.17 GIVE_WEAPON_TO_CHAR rioter5_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter5_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter5_fc 10 SET_CHAR_DECISION_MAKER rioter5_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER rioter5_fc TRUE enemy_fc = rioter5_fc enemytarget_fc = scplayer GOSUB chasekill_fclabel CREATE_CHAR PEDTYPE_MISSION1 MALE01 2308.3191 -1721.5842 12.7420 rioter6_fc SET_CHAR_HEADING rioter6_fc 329.17 GIVE_WEAPON_TO_CHAR rioter6_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter6_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter6_fc 10 SET_CHAR_DECISION_MAKER rioter6_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER rioter6_fc TRUE IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter6_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF rioters2_fcflag = 2 ENDIF ENDIF IF rioters2_fcflag = 2 IF LOCATE_CAR_2D benz_fc 2342.56 -1603.76 20.0 20.0 FALSE DELETE_CHAR rioter1_fc DELETE_CHAR rioter2_fc DELETE_CHAR rioter3_fc DELETE_CHAR rioter4_fc DELETE_CHAR rioter5_fc DELETE_CHAR rioter6_fc DELETE_OBJECT gangcar1_fc DELETE_OBJECT gangcar3_fc DELETE_OBJECT gangcar5_fc rioters2_fcflag = 3 ENDIF ENDIF //on the bridge IF rioters2_fcflag = 2 IF LOCATE_CAR_2D benz_fc 2430.81 -1595.72 20.0 20.0 FALSE CREATE_OBJECT la_fuckcar2 2430.76 -1653.03 25.34 gangcar1_fc SET_OBJECT_DYNAMIC gangcar1_fc TRUE SET_OBJECT_HEADING gangcar1_fc 268.0927 CREATE_CHAR PEDTYPE_MISSION1 MALE01 2426.7 -1653.77 25.595 rioter1_fc SET_CHAR_HEADING rioter1_fc 4.29 GIVE_WEAPON_TO_CHAR rioter1_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter1_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter1_fc 10 SET_CHAR_DECISION_MAKER rioter1_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER rioter1_fc TRUE IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter1_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF CREATE_CHAR PEDTYPE_MISSION1 MALE01 2435.959 -1653.318 25.64 rioter2_fc SET_CHAR_HEADING rioter2_fc 0.0 GIVE_WEAPON_TO_CHAR rioter2_fc WEAPONTYPE_MOLOTOV 9999 SET_CHAR_PROOFS rioter2_fc FALSE TRUE FALSE FALSE FALSE SET_CHAR_HEALTH rioter2_fc 10 SET_CHAR_DECISION_MAKER rioter2_fc carterc_dm SET_CHAR_ONLY_DAMAGED_BY_PLAYER rioter2_fc TRUE IF NOT IS_CHAR_DEAD tenpenny_fc enemy_fc = rioter2_fc enemytarget_fc = tenpenny_fc GOSUB chasekill_fclabel ENDIF rioters2_fcflag = 3 ENDIF ENDIF //imran IF lastrails_fcflag < 8 IF playercontrol_fcflag = 2 //audio for chase GOSUB process_audio_fc //imran IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 0 audio_label_fc = SOUND_ROT4_TC //Look out, CJ! $input_text_fc = ROT4_TC //Look out, CJ! GOSUB load_audio_fc ENDIF ENDIF IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 1 audio_label_fc = SOUND_ROT4_TB //Crazy bikers on a rampage! $input_text_fc = ROT4_TB //Crazy bikers on a rampage! GOSUB load_audio_fc ENDIF ENDIF IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 2 audio_label_fc = SOUND_ROT4_TH //I’m on Tenpenny, he ain’t getting away! $input_text_fc = ROT4_TH //I’m on Tenpenny, he ain’t getting away! GOSUB load_audio_fc ENDIF ENDIF IF actiontext_fcflag = 1 IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 3 audio_label_fc = SOUND_ROT4_NR //Cops on our tail! $input_text_fc = ROT4_NR //Cops on our tail! GOSUB load_audio_fc ENDIF ENDIF ENDIF IF actiontext_fcflag = 2 IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 4 audio_label_fc = SOUND_ROT4_NS //Cops up ahead! $input_text_fc = ROT4_NS //Cops up ahead! GOSUB load_audio_fc ENDIF ENDIF ENDIF IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 5 audio_label_fc = SOUND_ROT4_TJ //Where did all these assholes come from? $input_text_fc = ROT4_TJ //Where did all these assholes come from? GOSUB load_audio_fc ENDIF ENDIF IF actiontext_fcflag = 3 IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 6 audio_label_fc = SOUND_ROT4_SB //Down in flames! DOWN IN FLAMES! $input_text_fc = ROT4_SB //Down in flames! DOWN IN FLAMES! GOSUB load_audio_fc ENDIF ENDIF ENDIF IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 7 audio_label_fc = SOUND_ROT4_PC //That’s my dog! $input_text_fc = ROT4_PC //That’s my dog! GOSUB load_audio_fc ENDIF ENDIF IF actiontext_fcflag = 4 IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 8 audio_label_fc = SOUND_ROT4_OA //It’s over, Tenpenny, OVER! $input_text_fc = ROT4_OA //It’s over, Tenpenny, OVER! GOSUB load_audio_fc ENDIF ENDIF ENDIF IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 9 audio_label_fc = SOUND_ROT4_OD //I’m gonna stop you, motherfucker! $input_text_fc = ROT4_OD //I’m gonna stop you, motherfucker! GOSUB load_audio_fc ENDIF ENDIF IF actiontext_fcflag = 4 IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2431.32 -1528.48 20.0 20.0 FALSE IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 10 audio_label_fc = SOUND_ROT4_RA //He’s losing control! $input_text_fc = ROT4_RA //He’s losing control! GOSUB load_audio_fc ENDIF ENDIF ENDIF ENDIF IF handlingudio_fcflag = 0 IF progressaudio_fcflag = 11 audio_label_fc = SOUND_ROT4_RD //We’ve got the motherfucker! $input_text_fc = ROT4_RD //We’ve got the motherfucker! GOSUB load_audio_fc ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //cars IF copcar1swap_fcflag = 1 IF NOT IS_CAR_DEAD copcar1_fc IF NOT IS_CHAR_DEAD cop1_fc ELSE IF NOT IS_CHAR_DEAD cop2_fc IF IS_CHAR_IN_CAR cop2_fc copcar1_fc GET_DRIVER_OF_CAR copcar1_fc driverofcar_fc IF driverofcar_fc = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT cop2_fc copcar1_fc copcar1swap_fcflag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR copcar1_fc copcar1swap_fcflag = 2 ENDIF ENDIF ENDIF ENDIF IF copcar1swap_fcflag = 2 IF IS_CHAR_DEAD cop2_fc STOP_PLAYBACK_RECORDED_CAR copcar1_fc copcar1swap_fcflag = 3 ENDIF ENDIF IF copcar1_fcflag = 1 IF NOT IS_CAR_DEAD copcar1_fc IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR copcar1_fc MARK_CAR_AS_NO_LONGER_NEEDED copcar1_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop1_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop2_fc REMOVE_BLIP copcar1_fcblip copcar1_fcflag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR copcar1_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop1_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop2_fc MARK_CAR_AS_NO_LONGER_NEEDED copcar1_fc REMOVE_BLIP copcar1_fcblip copcar1_fcflag = 2 ENDIF ENDIF // IF copcar2swap_fcflag = 1 IF NOT IS_CAR_DEAD copcar2_fc IF NOT IS_CHAR_DEAD cop3_fc ELSE IF NOT IS_CHAR_DEAD cop4_fc IF IS_CHAR_IN_CAR cop4_fc copcar2_fc GET_DRIVER_OF_CAR copcar2_fc driverofcar_fc IF driverofcar_fc = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT cop4_fc copcar2_fc copcar2swap_fcflag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR copcar2_fc copcar2swap_fcflag = 2 ENDIF ENDIF ENDIF ENDIF IF copcar2swap_fcflag = 2 IF IS_CHAR_DEAD cop4_fc STOP_PLAYBACK_RECORDED_CAR copcar2_fc copcar2swap_fcflag = 3 ENDIF ENDIF IF copcar2_fcflag = 1 IF NOT IS_CAR_DEAD copcar2_fc IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR copcar2_fc MARK_CAR_AS_NO_LONGER_NEEDED copcar2_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop3_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop4_fc REMOVE_BLIP copcar2_fcblip copcar2_fcflag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR copcar2_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop3_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop4_fc MARK_CAR_AS_NO_LONGER_NEEDED copcar2_fc REMOVE_BLIP copcar2_fcblip copcar2_fcflag = 2 ENDIF ENDIF // IF copcar3swap_fcflag = 1 IF NOT IS_CAR_DEAD copcar3_fc IF NOT IS_CHAR_DEAD cop5_fc ELSE IF NOT IS_CHAR_DEAD cop6_fc IF IS_CHAR_IN_CAR cop6_fc copcar3_fc GET_DRIVER_OF_CAR copcar3_fc driverofcar_fc IF driverofcar_fc = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT cop6_fc copcar3_fc copcar3swap_fcflag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR copcar3_fc copcar3swap_fcflag = 2 ENDIF ENDIF ENDIF ENDIF IF copcar3swap_fcflag = 2 IF IS_CHAR_DEAD cop6_fc STOP_PLAYBACK_RECORDED_CAR copcar3_fc copcar3swap_fcflag = 3 ENDIF ENDIF IF copcar3_fcflag = 1 IF NOT IS_CAR_DEAD copcar3_fc IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR copcar3_fc MARK_CAR_AS_NO_LONGER_NEEDED copcar3_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop5_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop6_fc REMOVE_BLIP copcar3_fcblip copcar3_fcflag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR copcar3_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop5_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop6_fc MARK_CAR_AS_NO_LONGER_NEEDED copcar3_fc REMOVE_BLIP copcar3_fcblip copcar3_fcflag = 2 ENDIF ENDIF // IF copcar4swap_fcflag = 1 IF NOT IS_CAR_DEAD copcar4_fc IF NOT IS_CHAR_DEAD cop7_fc ELSE IF NOT IS_CHAR_DEAD cop8_fc IF IS_CHAR_IN_CAR cop8_fc copcar4_fc GET_DRIVER_OF_CAR copcar4_fc driverofcar_fc IF driverofcar_fc = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT cop8_fc copcar4_fc copcar4swap_fcflag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR copcar4_fc copcar4swap_fcflag = 2 ENDIF ENDIF ENDIF ENDIF IF copcar4swap_fcflag = 2 IF IS_CHAR_DEAD cop8_fc STOP_PLAYBACK_RECORDED_CAR copcar4_fc copcar4swap_fcflag = 3 ENDIF ENDIF IF copcar4_fcflag = 1 IF NOT IS_CAR_DEAD copcar4_fc IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR copcar4_fc MARK_CAR_AS_NO_LONGER_NEEDED copcar4_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop7_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop8_fc REMOVE_BLIP copcar4_fcblip copcar4_fcflag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR copcar4_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop7_fc MARK_CHAR_AS_NO_LONGER_NEEDED cop8_fc MARK_CAR_AS_NO_LONGER_NEEDED copcar4_fc REMOVE_BLIP copcar4_fcblip copcar4_fcflag = 2 ENDIF ENDIF // IF mexcar1swap_fcflag = 1 IF NOT IS_CAR_DEAD mexcar1_fc IF NOT IS_CHAR_DEAD gang5_fc ELSE IF NOT IS_CHAR_DEAD gang6_fc IF IS_CHAR_IN_CAR gang6_fc mexcar1_fc GET_DRIVER_OF_CAR mexcar1_fc driverofcar_fc IF driverofcar_fc = -1 TASK_SHUFFLE_TO_NEXT_CAR_SEAT gang6_fc mexcar1_fc mexcar1swap_fcflag = 2 ENDIF ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR mexcar1_fc mexcar1swap_fcflag = 2 ENDIF ENDIF ENDIF ENDIF IF mexcar1swap_fcflag = 2 IF IS_CHAR_DEAD gang6_fc STOP_PLAYBACK_RECORDED_CAR mexcar1_fc mexcar1swap_fcflag = 3 ENDIF ENDIF IF mexcar1_fcflag = 1 IF NOT IS_CAR_DEAD mexcar1_fc IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR mexcar1_fc MARK_CAR_AS_NO_LONGER_NEEDED mexcar1_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang5_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang6_fc REMOVE_BLIP mexcar1_fcblip mexcar1_fcflag = 2 ENDIF ELSE STOP_PLAYBACK_RECORDED_CAR mexcar1_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang5_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang6_fc MARK_CAR_AS_NO_LONGER_NEEDED mexcar1_fc REMOVE_BLIP mexcar1_fcblip mexcar1_fcflag = 2 ENDIF ENDIF // IF bike1swap_fcflag = 1 IF NOT IS_CAR_DEAD bike1_fc IF NOT IS_CHAR_DEAD gang9_fc ELSE IF NOT IS_CHAR_DEAD gang10_fc IF IS_CHAR_IN_CAR gang10_fc bike1_fc GET_DRIVER_OF_CAR bike1_fc driverofcar_fc IF driverofcar_fc = -1 GET_CAR_COORDINATES benz_fc player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD gang10_fc player_x player_y -10.0 WARP_CHAR_INTO_CAR gang10_fc bike1_fc bike1swap_fcflag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike1_fc 18.0 STOP_PLAYBACK_RECORDED_CAR bike1_fc SET_CAR_ROTATION_VELOCITY bike1_fc 3.5 7.3999 8.1003 bike1swap_fcflag = 2 ENDIF ENDIF ENDIF ENDIF IF bike1swap_fcflag = 2 IF IS_CHAR_DEAD gang10_fc STOP_PLAYBACK_RECORDED_CAR bike1_fc IF NOT IS_CAR_DEAD bike1_fc SET_CAR_FORWARD_SPEED bike1_fc 18.0 SET_CAR_ROTATION_VELOCITY bike1_fc 3.5 7.3999 8.1003 ENDIF bike1swap_fcflag = 3 ENDIF ENDIF IF bike1_fcflag = 1 IF IS_CHAR_DEAD gang9_fc IF IS_CHAR_DEAD gang10_fc OR IS_CAR_DEAD bike1_fc STOP_PLAYBACK_RECORDED_CAR bike1_fc REMOVE_BLIP bike1_fcblip MARK_CAR_AS_NO_LONGER_NEEDED bike1_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang9_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang10_fc bike1_fcflag = 2 ENDIF ENDIF ENDIF IF bike2swap_fcflag = 1 IF NOT IS_CAR_DEAD bike2_fc IF NOT IS_CHAR_DEAD gang11_fc ELSE IF NOT IS_CHAR_DEAD gang12_fc IF IS_CHAR_IN_CAR gang12_fc bike2_fc GET_DRIVER_OF_CAR bike2_fc driverofcar_fc IF driverofcar_fc = -1 GET_CAR_COORDINATES benz_fc player_x player_y player_z WARP_CHAR_FROM_CAR_TO_COORD gang12_fc player_x player_y -10.0 WARP_CHAR_INTO_CAR gang12_fc bike2_fc bike2swap_fcflag = 2 ENDIF ENDIF ELSE SET_CAR_FORWARD_SPEED bike2_fc 18.0 STOP_PLAYBACK_RECORDED_CAR bike2_fc SET_CAR_ROTATION_VELOCITY bike2_fc 3.5 7.3999 8.1003 bike2swap_fcflag = 2 ENDIF ENDIF ENDIF ENDIF IF bike2swap_fcflag = 2 IF IS_CHAR_DEAD gang12_fc STOP_PLAYBACK_RECORDED_CAR bike2_fc IF NOT IS_CAR_DEAD bike2_fc SET_CAR_FORWARD_SPEED bike2_fc 18.0 SET_CAR_ROTATION_VELOCITY bike2_fc 3.5 7.3999 8.1003 ENDIF bike2swap_fcflag = 3 ENDIF ENDIF IF bike2_fcflag = 1 IF IS_CHAR_DEAD gang11_fc IF IS_CHAR_DEAD gang12_fc OR IS_CAR_DEAD bike2_fc STOP_PLAYBACK_RECORDED_CAR bike2_fc REMOVE_BLIP bike2_fcblip MARK_CAR_AS_NO_LONGER_NEEDED bike2_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang11_fc MARK_CHAR_AS_NO_LONGER_NEEDED gang12_fc bike2_fcflag = 2 ENDIF ENDIF ENDIF ENDIF // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// End of Chase /////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF finalerails_fcflag = 3 IF finalcut_fcflag = 0 IF NOT IS_CAR_DEAD benz_fc IF NOT IS_CAR_DEAD firetruck_fc SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL PLAYER1 OFF SET_CAR_PROOFS benz_fc FALSE TRUE TRUE TRUE TRUE IF IS_PLAYBACK_GOING_ON_FOR_CAR firetruck_fc STOP_PLAYBACK_RECORDED_CAR firetruck_fc ENDIF STOP_PLAYBACK_RECORDED_CAR firetruck_fc IF IS_PLAYBACK_GOING_ON_FOR_CAR benz_fc STOP_PLAYBACK_RECORDED_CAR benz_fc ENDIF STOP_PLAYBACK_RECORDED_CAR benz_fc SET_FIXED_CAMERA_POSITION 2453.8613 -1651.5190 11.6415 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2453.1313 -1651.2875 12.2845 JUMP_CUT START_PLAYBACK_RECORDED_CAR firetruck_fc 229 SET_LA_RIOTS OFF CLEAR_AREA 2453.8613 -1651.5190 11.6415 100.0 TRUE SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 SET_CAR_COORDINATES benz_fc 2431.88 -1600.34 25.26 DELETE_CHAR sweet IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 2422.97 -1607.87 25.55 ELSE SET_CHAR_COORDINATES scplayer 2422.97 -1607.87 25.55 ENDIF TIMERA = 0 TIMERB = 0 DELETE_CAR benz_fc DELETE_CAR bike1_fc DELETE_CAR bike2_fc DELETE_CAR copcar1_fc DELETE_CAR copcar2_fc DELETE_CAR copcar3_fc DELETE_CAR copcar4_fc DELETE_CAR mexcar1_fc DELETE_OBJECT gangcar1_fc DELETE_OBJECT gangcar3_fc DELETE_OBJECT gangcar5_fc // DELETE_CHAR coptruck_fc // DELETE_CHAR copladder_fc DELETE_CHAR gang9_fc DELETE_CHAR gang10_fc DELETE_CHAR gang11_fc DELETE_CHAR gang12_fc DELETE_CHAR cop1_fc DELETE_CHAR cop2_fc DELETE_CHAR cop3_fc DELETE_CHAR cop4_fc DELETE_CHAR cop5_fc DELETE_CHAR cop6_fc DELETE_CHAR cop7_fc DELETE_CHAR cop8_fc DELETE_CHAR rioter1_fc DELETE_CHAR rioter2_fc DELETE_CHAR rioter3_fc DELETE_CHAR rioter4_fc DELETE_CHAR rioter5_fc DELETE_CHAR rioter6_fc finalcut_fcflag = 1 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD firetruck_fc IF finalcut_fcflag = 1 IF TIMERB > 1500 CLEAR_PRINTS CLEAR_MISSION_AUDIO 1 SET_TIME_SCALE 0.8 finalcut_fcflag = 2 ENDIF ENDIF IF finalcut_fcflag = 2 IF TIMERB > 1700 SET_TIME_SCALE 0.7 finalcut_fcflag = 3 ENDIF ENDIF IF finalcut_fcflag = 3 IF TIMERB > 1900 SET_TIME_SCALE 0.6 finalcut_fcflag = 4 ENDIF ENDIF IF finalcut_fcflag = 4 IF TIMERB > 2100 SET_TIME_SCALE 0.5 finalcut_fcflag = 5 ENDIF ENDIF IF finalcut_fcflag = 5 IF TIMERB > 2300 SET_TIME_SCALE 0.4 finalcut_fcflag = 6 ENDIF ENDIF IF finalcut_fcflag = 6 IF TIMERB > 2500 SET_TIME_SCALE 0.3 finalcut_fcflag = 7 ENDIF ENDIF IF finalcut_fcflag = 7 IF TIMERB > 2700 SET_TIME_SCALE 0.2 finalcut_fcflag = 8 ENDIF ENDIF IF finalcut_fcflag = 8 IF TIMERB > 3360 CREATE_FX_SYSTEM_ON_CAR PRT_SPARK firetruck_fc -1.69 3.607 -0.271 TRUE spark1_fxfc PLAY_FX_SYSTEM spark1_fxfc CREATE_FX_SYSTEM_ON_CAR PRT_SPARK firetruck_fc -1.137 3.674 -0.271 TRUE spark2_fxfc PLAY_FX_SYSTEM spark2_fxfc CREATE_FX_SYSTEM_ON_CAR PRT_SPARK firetruck_fc -1.076 3.706 -0.271 TRUE spark3_fxfc PLAY_FX_SYSTEM spark3_fxfc finalcut_fcflag = 9 ENDIF ENDIF IF finalcut_fcflag = 9 IF TIMERB > 4250 SET_FIXED_CAMERA_POSITION 2463.7458 -1663.4254 12.4388 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2462.8306 -1663.0225 12.4479 JUMP_CUT SET_TIME_SCALE 0.7 KILL_FX_SYSTEM spark1_fxfc KILL_FX_SYSTEM spark2_fxfc KILL_FX_SYSTEM spark3_fxfc //cab top CREATE_FX_SYSTEM_ON_CAR_WITH_DIRECTION PRT_SPARK firetruck_fc -1.066 3.027 1.4 1.0 0.0 0.4 TRUE spark4_fxfc PLAY_FX_SYSTEM spark4_fxfc CREATE_FX_SYSTEM_ON_CAR_WITH_DIRECTION PRT_SPARK firetruck_fc -1.066 2.444 1.4 1.0 0.0 0.4 TRUE spark5_fxfc PLAY_FX_SYSTEM spark5_fxfc CREATE_FX_SYSTEM_ON_CAR_WITH_DIRECTION PRT_SPARK firetruck_fc -1.066 1.872 1.4 1.0 0.0 0.4 TRUE spark6_fxfc PLAY_FX_SYSTEM spark6_fxfc //ladder top CREATE_FX_SYSTEM_ON_CAR_WITH_DIRECTION PRT_SPARK firetruck_fc -0.462 0.761 1.7 1.0 0.0 0.4 TRUE spark7_fxfc PLAY_FX_SYSTEM spark7_fxfc CREATE_FX_SYSTEM_ON_CAR_WITH_DIRECTION PRT_SPARK firetruck_fc -0.462 0.197 1.7 1.0 0.0 0.4 TRUE spark8_fxfc PLAY_FX_SYSTEM spark8_fxfc TIMERA = 0 finalcut_fcflag = 10 ENDIF ENDIF ENDIF IF finalcut_fcflag = 10 IF TIMERA > 3000 SET_TIME_SCALE 1.0 //Grove street finale cut SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ADD_SCORE PLAYER1 250000 CLEAR_ONSCREEN_COUNTER carhealth_fc DELETE_CHAR sweet MARK_MODEL_AS_NO_LONGER_NEEDED STREAK //finaleD MARK_MODEL_AS_NO_LONGER_NEEDED FIRELA MARK_MODEL_AS_NO_LONGER_NEEDED LAPD1 MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO MARK_MODEL_AS_NO_LONGER_NEEDED FELTZER REMOVE_ANIMATION FINALE REMOVE_ANIMATION FINALE2 MARK_MODEL_AS_NO_LONGER_NEEDED LSV2 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED la_fuckcar1 MARK_MODEL_AS_NO_LONGER_NEEDED la_fuckcar2 UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 //finaleE MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED COPCARLA MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ MARK_MODEL_AS_NO_LONGER_NEEDED MOLOTOV MARK_MODEL_AS_NO_LONGER_NEEDED LSV3 MARK_MODEL_AS_NO_LONGER_NEEDED TORNADO DELETE_CAR firetruck_fc DELETE_CHAR tenpenny_fc KILL_FX_SYSTEM spark1_fxfc KILL_FX_SYSTEM spark2_fxfc KILL_FX_SYSTEM spark3_fxfc KILL_FX_SYSTEM spark4_fxfc KILL_FX_SYSTEM spark5_fxfc KILL_FX_SYSTEM spark6_fxfc KILL_FX_SYSTEM spark7_fxfc KILL_FX_SYSTEM spark8_fxfc LOAD_SCENE_IN_DIRECTION 2445.64 -1650.53 14.63 0.0 LOAD_CUTSCENE RIOT4E1 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT WAS_CUTSCENE_SKIPPED LOAD_CUTSCENE RIOT4E2 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF WRITE_LOG "UNLOCK_ACHIEVEMENT THE_END_OF_THE_LINE" //Epilogue SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 3 LOAD_CUTSCENE EPILOG WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_PLAYER_CONTROL player1 OFF DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 //////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////// CREDITS //////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////// SET_PLAYER_CONTROL PLAYER1 OFF SWITCH_WIDESCREEN ON SET_CHAR_COORDINATES SCPLAYER 2523.9749 -1749.9615 58.7020 FREEZE_CHAR_POSITION SCPLAYER TRUE SET_CAR_DENSITY_MULTIPLIER 2.0 SET_PED_DENSITY_MULTIPLIER 1.5 SET_LA_RIOTS OFF LOAD_SCENE 2514.6677 -1733.4613 56.3075 FORCE_WEATHER_NOW WEATHER_SUNNY_SMOG_LA SET_TIME_OF_DAY 12 00 PRELOAD_BEAT_TRACK 9 //////////////////////////////////////////////////////////////////////////////////////////// LVAR_INT test_credit WHILE NOT test_credit = 2 WAIT 0 GET_BEAT_TRACK_STATUS test_credit ENDWHILE PLAY_BEAT_TRACK SET_MUSIC_DOES_FADE FALSE //////////////////////////////////////////////////////////////////////////////////////////// SET_DARKNESS_EFFECT TRUE -1 START_CREDITS DO_FADE 250 FADE_IN SKIP_CUTSCENE_START CAMERA_RESET_NEW_SCRIPTABLES CAMERA_SET_VECTOR_MOVE 2523.9749 -1749.9615 57.2020 2514.8875 -1733.8508 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2523.7551 -1749.5720 56.3075 2514.6677 -1733.4613 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2514.8875 -1733.8508 57.2020 2503.3440 -1713.3859 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2514.6677 -1733.4613 56.3075 2503.1243 -1712.9963 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2503.3440 -1713.3859 57.2020 2491.5549 -1692.4855 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2503.1243 -1712.9963 56.3075 2491.3352 -1692.0959 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2491.5549 -1692.4855 57.2020 2479.7659 -1671.5851 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2491.3352 -1692.0959 56.3075 2479.5461 -1671.1956 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2479.7659 -1671.5851 57.2020 2467.7312 -1650.2493 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2479.5461 -1671.1956 56.3075 2467.5115 -1649.8597 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2467.7312 -1650.2493 57.2020 2455.4509 -1628.4780 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2467.5115 -1649.8597 56.3075 2455.2312 -1628.0885 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2455.4509 -1628.4780 57.2020 2445.1355 -1610.1902 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2455.2312 -1628.0885 56.3075 2444.9158 -1609.8007 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2445.1355 -1610.1902 57.2020 2433.8376 -1590.1606 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2444.9158 -1609.8007 56.3075 2433.6179 -1589.7711 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2433.8376 -1590.1606 57.2020 2423.2766 -1571.4374 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2433.6179 -1589.7711 56.3075 2423.0569 -1571.0479 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2423.2766 -1571.4374 57.2020 2412.7156 -1552.7141 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2423.0569 -1571.0479 56.3075 2412.4958 -1552.3246 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2412.7156 -1552.7141 57.2020 2401.9089 -1533.5554 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2412.4958 -1552.3246 56.3075 2401.6892 -1533.1659 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2401.9089 -1533.5554 57.2020 2390.6111 -1513.5259 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2401.6892 -1533.1659 56.3075 2390.3914 -1513.1364 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2390.6111 -1513.5259 57.2020 2379.3132 -1493.4963 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2390.3914 -1513.1364 56.3075 2379.0935 -1493.1068 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2379.3132 -1493.4963 57.2020 2367.2786 -1472.1605 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2379.0935 -1493.1068 56.3075 2367.0588 -1471.7710 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2367.2786 -1472.1605 57.2020 2355.9807 -1452.1310 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2367.0588 -1471.7710 56.3075 2355.7610 -1451.7415 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2355.9807 -1452.1310 57.2020 2343.9460 -1430.7952 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2355.7610 -1451.7415 56.3075 2343.7263 -1430.4056 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2343.9460 -1430.7952 57.2020 2332.4026 -1410.3302 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2343.7263 -1430.4056 56.3075 2332.1829 -1409.9407 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2332.4026 -1410.3302 57.2020 2321.5959 -1391.1715 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2332.1829 -1409.9407 56.3075 2321.3762 -1390.7820 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2321.5959 -1391.1715 57.2020 2312.0173 -1374.1899 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2321.3762 -1390.7820 56.3075 2311.7976 -1373.8004 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE DO_FADE 6000 FADE_OUT CAMERA_SET_VECTOR_MOVE 2312.0173 -1374.1899 57.2020 2300.9651 -1354.5958 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2311.7976 -1373.8004 56.3075 2300.7454 -1354.2063 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2300.9651 -1354.5958 57.2020 2289.6672 -1334.5663 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2300.7454 -1354.2063 56.3075 2289.4475 -1334.1768 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2289.6672 -1334.5663 57.2020 2277.8782 -1313.6659 57.2020 2000 FALSE CAMERA_SET_VECTOR_TRACK 2289.4475 -1334.1768 56.3075 2277.6584 -1313.2764 56.3075 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE /////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////// Country side /////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////// SET_CHAR_COORDINATES SCPLAYER -1014.5570 -1422.2545 186.1819 FREEZE_CHAR_POSITION SCPLAYER TRUE SET_TIME_OF_DAY 10 00 FORCE_WEATHER_NOW WEATHER_SUNNY_COUNTRYSIDE WAIT 11000 DO_FADE 6000 FADE_IN CAMERA_SET_VECTOR_MOVE -1014.5570 -1422.2545 184.6819 -1037.9375 -1423.0750 186.8606 2000 FALSE CAMERA_SET_VECTOR_TRACK -1015.5563 -1422.2897 184.6751 -1038.9368 -1423.1101 186.8538 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1037.9375 -1423.0750 186.8606 -1063.3068 -1423.9652 189.2248 2000 FALSE CAMERA_SET_VECTOR_TRACK -1038.9368 -1423.1101 186.8538 -1064.3060 -1424.0004 189.2180 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1063.3068 -1423.9652 189.2248 -1089.1586 -1425.2170 191.6353 2000 FALSE CAMERA_SET_VECTOR_TRACK -1064.3060 -1424.0004 189.2180 -1090.1562 -1425.2841 191.6285 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1089.1586 -1425.2170 191.6353 -1114.4905 -1426.9166 193.9995 2000 FALSE CAMERA_SET_VECTOR_TRACK -1090.1562 -1425.2841 191.6285 -1115.4882 -1426.9836 193.9927 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1114.4905 -1426.9166 193.9995 -1139.8224 -1428.6162 196.3636 2000 FALSE CAMERA_SET_VECTOR_TRACK -1115.4882 -1426.9836 193.9927 -1140.8201 -1428.6832 196.3568 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1139.8224 -1428.6162 196.3636 -1165.6510 -1430.3491 198.7742 2000 FALSE CAMERA_SET_VECTOR_TRACK -1140.8201 -1428.6832 196.3568 -1166.6487 -1430.4161 198.7673 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1165.6510 -1430.3491 198.7742 -1191.4796 -1432.0820 201.1847 2000 FALSE CAMERA_SET_VECTOR_TRACK -1166.6487 -1430.4161 198.7673 -1192.4773 -1432.1490 201.1779 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1191.4796 -1432.0820 201.1847 -1216.8115 -1433.7816 203.5488 2000 FALSE CAMERA_SET_VECTOR_TRACK -1192.4773 -1432.1490 201.1779 -1217.8092 -1433.8486 203.5420 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1216.8115 -1433.7816 203.5488 -1242.1434 -1435.4812 205.9130 2000 FALSE CAMERA_SET_VECTOR_TRACK -1217.8092 -1433.8486 203.5420 -1243.1411 -1435.5482 205.9062 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1242.1434 -1435.4812 205.9130 -1267.9720 -1437.2141 208.3235 2000 FALSE CAMERA_SET_VECTOR_TRACK -1243.1411 -1435.5482 205.9062 -1268.9697 -1437.2811 208.3167 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1267.9720 -1437.2141 208.3235 -1293.8007 -1438.9470 210.7341 2000 FALSE CAMERA_SET_VECTOR_TRACK -1268.9697 -1437.2811 208.3167 -1294.7983 -1439.0140 210.7272 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1293.8007 -1438.9470 210.7341 -1319.6293 -1440.6799 213.1446 2000 FALSE CAMERA_SET_VECTOR_TRACK -1294.7983 -1439.0140 210.7272 -1320.6270 -1440.7469 213.1378 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1319.6293 -1440.6799 213.1446 -1345.4579 -1442.4128 215.5551 2000 FALSE CAMERA_SET_VECTOR_TRACK -1320.6270 -1440.7469 213.1378 -1346.4556 -1442.4799 215.5483 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1345.4579 -1442.4128 215.5551 -1370.7898 -1444.1124 217.9193 2000 FALSE CAMERA_SET_VECTOR_TRACK -1346.4556 -1442.4799 215.5483 -1371.7875 -1444.1794 217.9125 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1370.7898 -1444.1124 217.9193 -1396.1217 -1445.8120 220.2834 2000 FALSE CAMERA_SET_VECTOR_TRACK -1371.7875 -1444.1794 217.9125 -1397.1194 -1445.8790 220.2766 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1396.1217 -1445.8120 220.2834 -1420.9569 -1447.4783 222.6012 2000 FALSE CAMERA_SET_VECTOR_TRACK -1397.1194 -1445.8790 220.2766 -1421.9546 -1447.5453 222.5944 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1420.9569 -1447.4783 222.6012 -1446.2888 -1449.1779 224.9654 2000 FALSE CAMERA_SET_VECTOR_TRACK -1421.9546 -1447.5453 222.5944 -1447.2865 -1449.2449 224.9586 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1446.2888 -1449.1779 224.9654 -1471.6207 -1450.8774 227.3296 2000 FALSE CAMERA_SET_VECTOR_TRACK -1447.2865 -1449.2449 224.9586 -1472.6184 -1450.9445 227.3228 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1471.6207 -1450.8774 227.3296 -1496.9526 -1452.5770 229.6937 2000 FALSE CAMERA_SET_VECTOR_TRACK -1472.6184 -1450.9445 227.3228 -1497.9503 -1452.6440 229.6869 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE DO_FADE 6000 FADE_OUT CAMERA_SET_VECTOR_MOVE -1496.9526 -1452.5770 229.6937 -1522.2845 -1454.2766 232.0579 2000 FALSE CAMERA_SET_VECTOR_TRACK -1497.9503 -1452.6440 229.6869 -1523.2822 -1454.3436 232.0511 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1522.2845 -1454.2766 232.0579 -1547.6165 -1455.9762 234.4221 2000 FALSE CAMERA_SET_VECTOR_TRACK -1523.2822 -1454.3436 232.0511 -1548.6141 -1456.0432 234.4153 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1547.6165 -1455.9762 234.4221 -1572.4517 -1457.6425 236.7399 2000 FALSE CAMERA_SET_VECTOR_TRACK -1548.6141 -1456.0432 234.4153 -1573.4493 -1457.7095 236.7331 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE /////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////// San Fran 1 /////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////// SET_DARKNESS_EFFECT FALSE -1 SET_CHAR_COORDINATES SCPLAYER -2551.8245 1438.7454 -6.4582 FREEZE_CHAR_POSITION SCPLAYER TRUE FORCE_WEATHER_NOW WEATHER_RAINY_SF SET_TIME_OF_DAY 22 15 WAIT 11000 DO_FADE 6000 FADE_IN CAMERA_SET_VECTOR_MOVE -2551.8245 1438.7454 -7.9582 -2555.0500 1456.4509 -7.9582 2000 FALSE CAMERA_SET_VECTOR_TRACK -2552.0029 1439.7242 -8.0577 -2555.2285 1457.4298 -8.0577 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2555.0500 1456.4509 -7.9582 -2558.9810 1478.0219 -6.5912 2000 FALSE CAMERA_SET_VECTOR_TRACK -2555.2285 1457.4298 -8.0577 -2559.1604 1479.0054 -6.5742 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2558.9810 1478.0219 -6.5912 -2562.7661 1498.7935 -2.7267 2000 FALSE CAMERA_SET_VECTOR_TRACK -2559.1604 1479.0054 -6.5742 -2562.9434 1499.7650 -2.5699 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2562.7661 1498.7935 -2.7267 -2566.4202 1518.8525 4.0086 2000 FALSE CAMERA_SET_VECTOR_TRACK -2562.9434 1499.7650 -2.5699 -2566.5935 1519.8026 4.2679 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2566.4202 1518.8525 4.0086 -2570.0210 1538.6309 11.6223 2000 FALSE CAMERA_SET_VECTOR_TRACK -2566.5935 1519.8026 4.2679 -2570.1943 1539.5809 11.8816 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2570.0210 1538.6309 11.6223 -2573.7056 1558.8691 19.4130 2000 FALSE CAMERA_SET_VECTOR_TRACK -2570.1943 1539.5809 11.8816 -2573.8789 1559.8192 19.6724 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2573.7056 1558.8691 19.4130 -2577.2227 1578.1875 26.8497 2000 FALSE CAMERA_SET_VECTOR_TRACK -2573.8789 1559.8192 19.6724 -2577.3960 1579.1376 27.1090 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2577.2227 1578.1875 26.8497 -2580.9072 1598.4258 34.6405 2000 FALSE CAMERA_SET_VECTOR_TRACK -2577.3960 1579.1376 27.1090 -2581.0806 1599.3759 34.8998 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2580.9072 1598.4258 34.6405 -2584.5137 1618.2250 42.1997 2000 FALSE CAMERA_SET_VECTOR_TRACK -2581.0806 1599.3759 34.8998 -2584.6875 1619.1782 42.4465 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2584.5137 1618.2250 42.1997 -2588.2334 1638.6407 49.4991 2000 FALSE CAMERA_SET_VECTOR_TRACK -2584.6875 1619.1782 42.4465 -2588.4082 1639.5990 49.7249 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2588.2334 1638.6407 49.4991 -2591.9778 1659.1760 56.4439 2000 FALSE CAMERA_SET_VECTOR_TRACK -2588.4082 1639.5990 49.7249 -2592.1528 1660.1361 56.6616 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2591.9778 1659.1760 56.4439 -2595.6416 1679.2588 63.1876 2000 FALSE CAMERA_SET_VECTOR_TRACK -2592.1528 1660.1361 56.6616 -2595.8167 1680.2189 63.4053 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2595.6416 1679.2588 63.1876 -2599.3936 1699.8424 69.9817 2000 FALSE CAMERA_SET_VECTOR_TRACK -2595.8167 1680.2189 63.4053 -2599.5693 1700.8060 70.1827 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2599.3936 1699.8424 69.9817 -2603.1702 1720.5684 76.3148 2000 FALSE CAMERA_SET_VECTOR_TRACK -2599.5693 1700.8060 70.1827 -2603.3467 1721.5359 76.4955 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2603.1702 1720.5684 76.3148 -2606.9680 1741.4113 82.2359 2000 FALSE CAMERA_SET_VECTOR_TRACK -2603.3467 1721.5359 76.4955 -2607.1450 1742.3820 82.3978 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2606.9680 1741.4113 82.2359 -2610.6992 1761.8849 87.6284 2000 FALSE CAMERA_SET_VECTOR_TRACK -2607.1450 1742.3820 82.3978 -2610.8767 1762.8584 87.7717 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2610.6992 1761.8849 87.6284 -2614.4475 1782.4547 92.6294 2000 FALSE CAMERA_SET_VECTOR_TRACK -2610.8767 1762.8584 87.7717 -2614.6255 1783.4308 92.7541 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2614.4475 1782.4547 92.6294 -2618.2144 1803.1271 97.1743 2000 FALSE CAMERA_SET_VECTOR_TRACK -2614.6255 1783.4308 92.7541 -2618.3928 1804.1060 97.2734 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2618.2144 1803.1271 97.1743 -2622.0010 1823.9093 101.1663 2000 FALSE CAMERA_SET_VECTOR_TRACK -2618.3928 1804.1060 97.2734 -2622.1799 1824.8904 101.2393 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2622.0010 1823.9093 101.1663 -2625.8059 1844.7877 104.6021 2000 FALSE CAMERA_SET_VECTOR_TRACK -2622.1799 1824.8904 101.2393 -2625.9851 1845.7704 104.6488 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE DO_FADE 6000 FADE_OUT CAMERA_SET_VECTOR_MOVE -2625.8059 1844.7877 104.6021 -2629.4468 1864.7711 107.3578 2000 FALSE CAMERA_SET_VECTOR_TRACK -2625.9851 1845.7704 104.6488 -2629.6262 1865.7545 107.3795 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2629.4468 1864.7711 107.3578 -2633.2776 1885.7935 109.7129 2000 FALSE CAMERA_SET_VECTOR_TRACK -2629.6262 1865.7545 107.3795 -2633.4570 1886.7771 109.7149 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -2633.2776 1885.7935 109.7129 -2637.1094 1906.8315 111.8949 2000 FALSE CAMERA_SET_VECTOR_TRACK -2633.4570 1886.7771 109.7149 -2637.2888 1907.8152 111.8969 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE /////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////// San Fran 2 /////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////// FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_LA SET_TIME_OF_DAY 05 30 SET_CHAR_COORDINATES SCPLAYER -922.5345 669.1976 86.8181 FREEZE_CHAR_POSITION SCPLAYER TRUE SET_DARKNESS_EFFECT TRUE -1 WAIT 11000 DO_FADE 6000 FADE_IN CAMERA_SET_VECTOR_MOVE -922.5345 669.1976 85.3181 -944.3385 676.5142 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -923.4778 669.5142 85.2186 -945.2818 676.8308 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -944.3385 676.5142 85.3181 -968.5125 684.6262 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -945.2818 676.8308 85.2186 -969.4557 684.9427 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -968.5125 684.6262 85.3181 -993.1604 692.8972 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -969.4557 684.9427 85.2186 -994.1037 693.2137 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -993.1604 692.8972 85.3181 -1017.8083 701.1682 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -994.1037 693.2137 85.2186 -1018.7516 701.4847 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1017.8083 701.1682 85.3181 -1041.9823 709.2801 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1018.7516 701.4847 85.2186 -1042.9255 709.5967 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1041.9823 709.2801 85.3181 -1066.1562 717.3920 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1042.9255 709.5967 85.2186 -1067.0995 717.7086 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1066.1562 717.3920 85.3181 -1090.3302 725.5040 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1067.0995 717.7086 85.2186 -1091.2734 725.8206 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1090.3302 725.5040 85.3181 -1114.5042 733.6159 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1091.2734 725.8206 85.2186 -1115.4474 733.9325 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1114.5042 733.6159 85.3181 -1138.6781 741.7278 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1115.4474 733.9325 85.2186 -1139.6213 742.0444 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1138.6781 741.7278 85.3181 -1162.3781 749.6807 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1139.6213 742.0444 85.2186 -1163.3213 749.9973 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1162.3781 749.6807 85.3181 -1186.0780 757.6336 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1163.3213 749.9973 85.2186 -1187.0212 757.9502 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1186.0780 757.6336 85.3181 -1209.7780 765.5865 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1187.0212 757.9502 85.2186 -1210.7212 765.9031 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1209.7780 765.5865 85.3181 -1233.9519 773.6984 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1210.7212 765.9031 85.2186 -1234.8951 774.0150 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1233.9519 773.6984 85.3181 -1258.1259 781.8104 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1234.8951 774.0150 85.2186 -1259.0691 782.1270 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1258.1259 781.8104 85.3181 -1281.8258 789.7632 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1259.0691 782.1270 85.2186 -1282.7690 790.0798 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1281.8258 789.7632 85.3181 -1305.5258 797.7161 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1282.7690 790.0798 85.2186 -1306.4690 798.0327 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1305.5258 797.7161 85.3181 -1329.2257 805.6690 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1306.4690 798.0327 85.2186 -1330.1689 805.9856 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1329.2257 805.6690 85.3181 -1353.3997 813.7809 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1330.1689 805.9856 85.2186 -1354.3429 814.0975 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1353.3997 813.7809 85.3181 -1377.5736 821.8929 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1354.3429 814.0975 85.2186 -1378.5168 822.2095 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1377.5736 821.8929 85.3181 -1401.2736 829.8458 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1378.5168 822.2095 85.2186 -1402.2168 830.1624 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1401.2736 829.8458 85.3181 -1423.5515 837.3215 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1402.2168 830.1624 85.2186 -1424.4948 837.6381 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1423.5515 837.3215 85.3181 -1446.7775 845.1153 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1424.4948 837.6381 85.2186 -1447.7207 845.4319 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1446.7775 845.1153 85.3181 -1470.4774 853.0682 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1447.7207 845.4319 85.2186 -1471.4207 853.3848 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1470.4774 853.0682 85.3181 -1493.7034 860.8620 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1471.4207 853.3848 85.2186 -1494.6466 861.1786 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE DO_FADE 5900 FADE_OUT CAMERA_SET_VECTOR_MOVE -1493.7034 860.8620 85.3181 -1515.9813 868.3377 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1494.6466 861.1786 85.2186 -1516.9246 868.6543 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE // CAMERA_SET_VECTOR_MOVE -1515.9813 868.3377 85.3181 -1538.2593 875.8134 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1516.9246 868.6543 85.2186 -1539.2025 876.1300 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE -1538.2593 875.8134 85.3181 -1561.0112 883.4482 85.3181 2250 FALSE CAMERA_SET_VECTOR_TRACK -1539.2025 876.1300 85.2186 -1561.9545 883.7648 85.2186 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE // DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE /////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////// Desert /////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////// FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT SET_DARKNESS_EFFECT TRUE -1 SET_CHAR_COORDINATES SCPLAYER 370.7745 2441.2339 19.0844 FREEZE_CHAR_POSITION SCPLAYER TRUE SET_TIME_OF_DAY 12 00 WAIT 11000 DO_FADE 6000 FADE_IN CAMERA_SET_VECTOR_MOVE 370.7745 2441.2339 17.5844 366.5777 2438.9019 17.5844 2250 FALSE CAMERA_SET_VECTOR_TRACK 369.9044 2440.7512 17.4849 365.7076 2438.4192 17.4849 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 366.5777 2438.9019 17.5844 362.0319 2436.3760 17.5835 2250 FALSE CAMERA_SET_VECTOR_TRACK 365.7076 2438.4192 17.4849 361.1612 2435.8928 17.4921 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 362.0319 2436.3760 17.5835 357.4894 2433.8516 17.6536 2250 FALSE CAMERA_SET_VECTOR_TRACK 361.1612 2435.8928 17.4921 356.6158 2433.3669 17.6101 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 357.4894 2433.8516 17.6536 352.8694 2431.2900 17.9960 2250 FALSE CAMERA_SET_VECTOR_TRACK 356.6158 2433.3669 17.6101 351.9951 2430.8049 18.0046 2250 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 352.8694 2431.2900 17.9960 348.2637 2428.7283 18.5695 2200 FALSE CAMERA_SET_VECTOR_TRACK 351.9951 2430.8049 18.0046 347.3847 2428.2515 18.5783 2200 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 348.2637 2428.7283 18.5695 343.6016 2426.2739 19.1432 2150 FALSE CAMERA_SET_VECTOR_TRACK 347.3847 2428.2515 18.5783 342.7046 2425.8320 19.1520 2150 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 343.6016 2426.2739 19.1432 338.9370 2424.0457 19.7060 2100 FALSE CAMERA_SET_VECTOR_TRACK 342.7046 2425.8320 19.1520 338.0236 2423.6387 19.7148 2100 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 338.9370 2424.0457 19.7060 334.2820 2422.0376 20.2581 2000 FALSE CAMERA_SET_VECTOR_TRACK 338.0236 2423.6387 19.7148 333.3536 2421.6660 20.2669 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 334.2820 2422.0376 20.2581 329.5525 2420.2117 20.8101 2000 FALSE CAMERA_SET_VECTOR_TRACK 333.3536 2421.6660 20.2669 328.6110 2419.8748 20.8189 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 329.5525 2420.2117 20.8101 324.7735 2418.5161 21.3621 2000 FALSE CAMERA_SET_VECTOR_TRACK 328.6110 2419.8748 20.8189 323.8303 2418.1841 21.3710 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 324.7735 2418.5161 21.3621 320.0809 2416.8789 21.9034 2000 FALSE CAMERA_SET_VECTOR_TRACK 323.8303 2418.1841 21.3710 319.1361 2416.5515 21.9122 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 320.0809 2416.8789 21.9034 315.1030 2415.1558 22.4770 2000 FALSE CAMERA_SET_VECTOR_TRACK 319.1361 2416.5515 21.9122 314.1573 2414.8311 22.4858 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 315.1030 2415.1558 22.4770 310.2042 2413.5056 23.0399 2000 FALSE CAMERA_SET_VECTOR_TRACK 314.1573 2414.8311 22.4858 309.2525 2413.1985 23.0487 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 310.2042 2413.5056 23.0399 305.2758 2411.9458 23.6028 2000 FALSE CAMERA_SET_VECTOR_TRACK 309.2525 2413.1985 23.0487 304.3187 2411.6560 23.6116 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 305.2758 2411.9458 23.6028 300.3198 2410.4758 24.1656 2000 FALSE CAMERA_SET_VECTOR_TRACK 304.3187 2411.6560 23.6116 299.3576 2410.2036 24.1744 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 300.3198 2410.4758 24.1656 295.4340 2409.1216 24.7176 2000 FALSE CAMERA_SET_VECTOR_TRACK 299.3576 2410.2036 24.1744 294.4671 2408.8665 24.7265 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 295.4340 2409.1216 24.7176 290.4283 2407.8308 25.2805 2000 FALSE CAMERA_SET_VECTOR_TRACK 294.4671 2408.8665 24.7265 289.4569 2407.5933 25.2893 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 290.4283 2407.8308 25.2805 285.3999 2406.6309 25.8434 2000 FALSE CAMERA_SET_VECTOR_TRACK 289.4569 2407.5933 25.2893 284.4244 2406.4109 25.8522 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 285.3999 2406.6309 25.8434 280.3567 2405.4883 26.4062 2000 FALSE CAMERA_SET_VECTOR_TRACK 284.4244 2406.4109 25.8522 279.3812 2405.2683 26.4150 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 280.3567 2405.4883 26.4062 275.3135 2404.3457 26.9691 2000 FALSE CAMERA_SET_VECTOR_TRACK 279.3812 2405.2683 26.4150 274.3380 2404.1257 26.9779 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 275.3135 2404.3457 26.9691 270.3673 2403.2251 27.5211 2000 FALSE CAMERA_SET_VECTOR_TRACK 274.3380 2404.1257 26.9779 269.3918 2403.0051 27.5299 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 270.3673 2403.2251 27.5211 265.4211 2402.1045 28.0732 2000 FALSE CAMERA_SET_VECTOR_TRACK 269.3918 2403.0051 27.5299 264.4456 2401.8845 28.0820 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 265.4211 2402.1045 28.0732 262.4145 2401.4233 28.4087 2000 FALSE CAMERA_SET_VECTOR_TRACK 264.4456 2401.8845 28.0820 261.4390 2401.2034 28.4175 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 262.4145 2401.4233 28.4087 258.8261 2400.6104 28.8092 2000 FALSE CAMERA_SET_VECTOR_TRACK 261.4390 2401.2034 28.4175 257.8506 2400.3904 28.8180 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE DO_FADE 6000 FADE_OUT CAMERA_SET_VECTOR_MOVE 258.8261 2400.6104 28.8092 253.8804 2399.4897 29.3612 2000 FALSE CAMERA_SET_VECTOR_TRACK 257.8506 2400.3904 28.8180 252.9049 2399.2698 29.3700 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 253.8804 2399.4897 29.3612 248.8379 2398.3472 29.9241 2000 FALSE CAMERA_SET_VECTOR_TRACK 252.9049 2399.2698 29.3700 247.8624 2398.1272 29.9329 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 248.8379 2398.3472 29.9241 244.0864 2397.2705 30.4545 2000 FALSE CAMERA_SET_VECTOR_TRACK 247.8624 2398.1272 29.9329 243.1109 2397.0505 30.4633 2000 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE /////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////// Vegas /////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////// SET_CHAR_COORDINATES SCPLAYER 2012.4438 2140.3826 78.0505 FREEZE_CHAR_POSITION SCPLAYER TRUE SET_TIME_OF_DAY 00 00 WAIT 11000 DO_FADE 6000 FADE_IN CAMERA_SET_VECTOR_MOVE 2012.4438 2140.3826 76.5505 2030.9395 2140.4187 76.5504 2900 FALSE CAMERA_SET_VECTOR_TRACK 2013.4388 2140.3845 76.4510 2031.9343 2140.4207 76.4497 2900 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2030.9395 2140.4187 76.5504 2051.3752 2140.4587 75.0916 2900 FALSE CAMERA_SET_VECTOR_TRACK 2031.9343 2140.4207 76.4497 2052.3489 2140.4607 74.8638 2900 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2051.3752 2140.4587 75.0916 2072.1094 2140.4998 71.7815 2900 FALSE CAMERA_SET_VECTOR_TRACK 2052.3489 2140.4607 74.8638 2073.0610 2140.5017 71.4748 2900 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2072.1094 2140.4998 71.7815 2092.6179 2140.5408 67.3086 2900 FALSE CAMERA_SET_VECTOR_TRACK 2073.0610 2140.5017 71.4748 2093.5688 2140.5427 66.9993 2900 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2092.6179 2140.5408 67.3086 2114.1023 2140.5837 62.6200 2900 FALSE CAMERA_SET_VECTOR_TRACK 2093.5688 2140.5427 66.9993 2115.0532 2140.5857 62.3108 2900 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2114.1023 2140.5837 62.6200 2135.5867 2140.6267 57.9315 2900 FALSE CAMERA_SET_VECTOR_TRACK 2115.0532 2140.5857 62.3108 2136.5376 2140.6287 57.6223 2900 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2135.5867 2140.6267 57.9315 2157.0710 2140.6697 53.2431 2900 FALSE CAMERA_SET_VECTOR_TRACK 2136.5376 2140.6287 57.6223 2158.0220 2140.6716 52.9338 2900 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2157.0710 2140.6697 53.2431 2179.0437 2140.7136 48.4481 2900 FALSE CAMERA_SET_VECTOR_TRACK 2158.0220 2140.6716 52.9338 2179.9946 2140.7156 48.1388 2900 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2179.0437 2140.7136 48.4481 2201.0166 2140.7576 43.6528 2900 FALSE CAMERA_SET_VECTOR_TRACK 2179.9946 2140.7156 48.1388 2201.9675 2140.7595 43.3440 2900 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2201.0166 2140.7576 43.6528 2222.6650 2140.8005 39.8525 2900 FALSE CAMERA_SET_VECTOR_TRACK 2201.9675 2140.7595 43.3440 2223.6355 2140.8025 39.6117 2900 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2222.6650 2140.8005 39.8525 2244.4712 2140.8435 37.0436 2900 FALSE CAMERA_SET_VECTOR_TRACK 2223.6355 2140.8025 39.6117 2245.4524 2140.8455 36.8518 2900 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2244.4712 2140.8435 37.0436 2266.3867 2140.8865 35.2987 2900 FALSE CAMERA_SET_VECTOR_TRACK 2245.4524 2140.8455 36.8518 2267.3777 2140.8884 35.1659 2900 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2266.3867 2140.8865 35.2987 2287.8674 2140.9285 34.9542 2900 FALSE CAMERA_SET_VECTOR_TRACK 2267.3777 2140.8884 35.1659 2288.8638 2140.9304 34.8693 2900 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2287.8674 2140.9285 34.9542 2310.3564 2140.9724 35.2840 2900 FALSE CAMERA_SET_VECTOR_TRACK 2288.8638 2140.9304 34.8693 2311.3528 2140.9744 35.1991 2900 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2310.3564 2140.9724 35.2840 2332.8455 2141.0164 35.6137 2900 FALSE CAMERA_SET_VECTOR_TRACK 2311.3528 2140.9744 35.1991 2333.8418 2141.0183 35.5288 2900 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE SET_MUSIC_DOES_FADE TRUE CAMERA_SET_VECTOR_MOVE 2332.8455 2141.0164 35.6137 2354.3350 2141.0583 35.9288 2900 FALSE CAMERA_SET_VECTOR_TRACK 2333.8418 2141.0183 35.5288 2355.3313 2141.0603 35.8439 2900 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE DO_FADE 4000 FADE_OUT CAMERA_SET_VECTOR_MOVE 2354.3350 2141.0583 35.9288 2376.8240 2141.1023 36.2586 2900 FALSE CAMERA_SET_VECTOR_TRACK 2355.3313 2141.0603 35.8439 2377.8203 2141.1042 36.1737 2900 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE CAMERA_SET_VECTOR_MOVE 2376.8240 2141.1023 36.2586 2399.8127 2141.1472 36.5957 2900 FALSE CAMERA_SET_VECTOR_TRACK 2377.8203 2141.1042 36.1737 2400.8091 2141.1492 36.5108 2900 FALSE WHILE CAMERA_IS_VECTOR_MOVE_RUNNING WAIT 0 GOSUB CREDITS_UPDATE_PLAYER_POS ENDWHILE watched = 1 /////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////// END /////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////// skipcredits_fcflag = 1 SKIP_CUTSCENE_END //////////////////////////////////////////////////////////////////////////////////////////// IF skipcredits_fcflag = 0 STOP_CREDITS ENDIF SET_MUSIC_DOES_FADE TRUE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_WIDESCREEN OFF RELEASE_WEATHER FORCE_WEATHER_NOW WEATHER_SUNNY_SMOG_LA STOP_BEAT_TRACK FREEZE_CHAR_POSITION SCPLAYER FALSE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer 2494.483 -1684.639 12.51//2495.111 -1687.04 12.55 SET_CHAR_HEADING scplayer 3.546 CAMERA_RESET_NEW_SCRIPTABLES RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_DARKNESS_EFFECT FALSE -1 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 WHILE NOT ARE_CREDITS_FINISHED WAIT 0 ENDWHILE STOP_BEAT_TRACK STOP_CREDITS LOAD_SCENE_IN_DIRECTION 2495.111 -1687.04 12.55 0.0 WAIT 500 //////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////// GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_MICRO_UZI 300 DO_FADE 3500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_WANTED_LEVEL PLAYER1 SET_PLAYER_CONTROL PLAYER1 ON REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_MICRO_UZI GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_MICRO_UZI 120 GOTO mission_finaleC_passed finalcut_fcflag = 11 ENDIF ENDIF ENDIF GOTO mission_finaleC_loop load_audio_fc: IF handlingudio_fcflag = 0 LOAD_MISSION_AUDIO 1 audio_label_fc $text_label_fc = $input_text_fc handlingudio_fcflag = 1 ENDIF RETURN process_audio_fc: IF handlingudio_fcflag = 1 IF HAS_MISSION_AUDIO_LOADED 1 PRINT_NOW $text_label_fc 4000 1 //Dummy message" PLAY_MISSION_AUDIO 1 handlingudio_fcflag = 2 ENDIF ENDIF IF handlingudio_fcflag = 2 IF HAS_MISSION_AUDIO_FINISHED 1 progressaudio_fcflag++ CLEAR_MISSION_AUDIO 1 CLEAR_PRINTS handlingudio_fcflag = 0 ENDIF ENDIF RETURN CREDITS_UPDATE_PLAYER_POS: GET_ACTIVE_CAMERA_COORDINATES PLAYER_X PLAYER_Y PLAYER_Z PLAYER_Z += 1.5 SET_CHAR_COORDINATES SCPLAYER PLAYER_X PLAYER_Y PLAYER_Z RETURN chasekill_fclabel: OPEN_SEQUENCE_TASK chasekill_fcseq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 enemytarget_fc CLOSE_SEQUENCE_TASK chasekill_fcseq PERFORM_SEQUENCE_TASK enemy_fc chasekill_fcseq CLEAR_SEQUENCE_TASK chasekill_fcseq RETURN stayshoot_fclabel: OPEN_SEQUENCE_TASK stayshoot_fcseq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_TOGGLE_DUCK -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK stayshoot_fcseq PERFORM_SEQUENCE_TASK enemy_fc stayshoot_fcseq CLEAR_SEQUENCE_TASK stayshoot_fcseq RETURN stayshootnoduck_fclabel: OPEN_SEQUENCE_TASK stayshootnoduck_fcseq TASK_STAY_IN_SAME_PLACE -1 TRUE TASK_KILL_CHAR_ON_FOOT -1 scplayer CLOSE_SEQUENCE_TASK stayshootnoduck_fcseq PERFORM_SEQUENCE_TASK enemy_fc stayshootnoduck_fcseq CLEAR_SEQUENCE_TASK stayshootnoduck_fcseq RETURN // Mission finaleC failed mission_finaleC_failed: CLEAR_PRINTS PRINT_BIG M_FAIL 5000 1 IF cardead_fcflag = 1 PRINT_NOW RM4_46 5000 1 //~r~You wrecked your car! ENDIF IF displaygripbar_fcflag = 7 PRINT_NOW RM4_45 7000 1 //~r~Sweet died! You are supposed to catch him, next time get your car underneath Sweet when he begins to lose grip! ENDIF IF lostsweet_fcflag = 1 PRINT_NOW RM4_50 5000 1 //~r~You lost Sweet! Next time stay closer! ENDIF RETURN // mission finaleC passed mission_finaleC_passed: IF watched = 1 WRITE_LOG "UNLOCK_ACHIEVEMENT TIME_TO_KILL" ENDIF CLEAR_WANTED_LEVEL player1 REGISTER_MISSION_PASSED RIOT_4 PLAYER_MADE_PROGRESS 1 SET_INT_STAT CITIES_PASSED 4 REMOVE_BLIP mansion_contact_blip REMOVE_BLIP sweet_contact_blip flag_riot_mission_counter++ PRINT_WITH_NUMBER_BIG ( M_PASSR ) 150 5000 1 //"Mission Passed!" PLAY_MISSION_PASSED_TUNE 1 AWARD_PLAYER_MISSION_RESPECT 150//amount of respect SWITCH_ENTRY_EXIT CARLS TRUE RETURN // mission cleanup mission_cleanup_finaleC: SET_RAILTRACK_RESISTANCE_MULT -1.0 //counter CLEAR_ONSCREEN_COUNTER igripbardisplay_fc //counter CLEAR_ONSCREEN_COUNTER carhealth_fc //triangle button SET_PLAYER_ENTER_CAR_BUTTON PLAYER1 TRUE //blips REMOVE_BLIP sweet_fcblip REMOVE_BLIP mexcar1_fcblip REMOVE_BLIP mexcar2_fcblip REMOVE_BLIP mexcar3_fcblip REMOVE_BLIP ecar1_fcblip REMOVE_BLIP ecar2_fcblip REMOVE_BLIP bike1_fcblip REMOVE_BLIP bike2_fcblip REMOVE_BLIP bike3_fcblip REMOVE_BLIP copcar1_fcblip REMOVE_BLIP copcar2_fcblip //blips REMOVE_BLIP copcar3_fcblip REMOVE_BLIP copcar4_fcblip //fx KILL_FX_SYSTEM spark1_fxfc KILL_FX_SYSTEM spark2_fxfc KILL_FX_SYSTEM spark3_fxfc KILL_FX_SYSTEM spark4_fxfc KILL_FX_SYSTEM spark5_fxfc KILL_FX_SYSTEM spark6_fxfc KILL_FX_SYSTEM spark7_fxfc //remove chars REMOVE_CHAR_ELEGANTLY sweet REMOVE_CHAR_ELEGANTLY tenpenny_fc REMOVE_CHAR_ELEGANTLY copladder_fc REMOVE_CHAR_ELEGANTLY coptruck_fc REMOVE_ALL_SCRIPT_FIRES SET_WANTED_MULTIPLIER 1.0 SET_MAX_WANTED_LEVEL 6 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 MARK_MODEL_AS_NO_LONGER_NEEDED STREAK //finaleD MARK_MODEL_AS_NO_LONGER_NEEDED FIRELA MARK_MODEL_AS_NO_LONGER_NEEDED LAPD1 MARK_MODEL_AS_NO_LONGER_NEEDED GREENWOO MARK_MODEL_AS_NO_LONGER_NEEDED FELTZER REMOVE_ANIMATION FINALE REMOVE_ANIMATION FINALE2 MARK_MODEL_AS_NO_LONGER_NEEDED LSV2 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 MARK_MODEL_AS_NO_LONGER_NEEDED la_fuckcar1 MARK_MODEL_AS_NO_LONGER_NEEDED la_fuckcar2 //finaleE MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED COPCARLA MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ MARK_MODEL_AS_NO_LONGER_NEEDED MOLOTOV MARK_MODEL_AS_NO_LONGER_NEEDED LSV3 MARK_MODEL_AS_NO_LONGER_NEEDED TORNADO UNLOAD_SPECIAL_CHARACTER 1 UNLOAD_SPECIAL_CHARACTER 2 //car proofs IF NOT IS_CAR_DEAD benz_fc SET_CAR_PROOFS benz_fc FALSE FALSE FALSE FALSE FALSE ENDIF IF NOT IS_CAR_DEAD firetruck_fc LOCK_CAR_DOORS firetruck_fc CARLOCK_UNLOCKED SET_CAR_PROOFS firetruck_fc FALSE FALSE FALSE FALSE FALSE ENDIF //char proofs IF IS_PLAYER_PLAYING PLAYER1 SHUT_CHAR_UP scplayer FALSE SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE ENDIF RELEASE_WEATHER SWITCH_RANDOM_TRAINS ON SWITCH_EMERGENCY_SERVICES ON SET_WANTED_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } MISSION_START { // ****************************************Mission Start************************************ // shooting_range_script: SCRIPT_NAME SHRANGE // Initialise variables //REGISTER_MISSION_GIVEN SET_DEATHARREST_STATE FALSE flag_player_on_mission = 1 flag_shooting_range_mission = 1 //coords to check to trigger shooting challenge - use x,y of near, right corner for each range VAR_FLOAT Schallenge_X[4] Schallenge_Y[4] LVAR_INT SR_quit_range // coords of initial booth in each range LVAR_FLOAT booth_x[4] booth_y[4] booth_z[4] // offset from initial booth to two subsequent booths LVAR_FLOAT booth_offset_1[4] booth_offset_2[4] // range of the range LVAR_FLOAT far_range_offset[4] //level being played in range VAR_INT SR_range_level[3] // range heading LVAR_FLOAT range_heading[4] h // chars weapon VAR_INT SR_ped_weapon[4] //targets VAR_INT SR_target_state[3] sr_destroyed_elements[3] // offset for each element - GLOBAL cos run out of available locals VAR_FLOAT target_offset_x[8] target_offset_z[8] //object rotation VAR_FLOAT sr_target_rotation[3] // object names VAR_INT sr_object_name[8] sr_obj // advance time VAR_INT sr_target_advance_time[3] // flags VAR_INT sr_Dec SR_mission_state SR_targets_created[3] sr_area //cutscenes VAR_INT SR_flag SR_time_check // general VAR_INT sr_int1 sr_int2 sr_seq sr_direction VAR_FLOAT sr_float1 sr_float2 sr_float3 sr_float4 sr_yoffset VAR_INT SR_ped_state[3] SR_ped_can_be_created[3] sr_j sr_obj_number SR_ped[3] VAR_INT sr_target[24] sr_time_to_new_target[3] //awards VAR_INT SR_skill_won sr_Score[3] REMOVE_WIDGET_FLAG WIDGET_MISSION_CANCEL 16 // WIDGET_FLAG_DRAW_AFTER_FADE // coords to check to trigger challenge - WARNING coords local to axis of range Schallenge_X[0] = 286.1649 Schallenge_Y[0] = -30.9591 Schallenge_X[1] = 301.8877 Schallenge_Y[1] = -77.2586 Schallenge_X[2] = 306.4883 Schallenge_Y[2] = -141.9047 Schallenge_X[3] = 307.0919 Schallenge_Y[3] = -159.2197 // object anmes for the target elements sr_object_name[0] = target_frame sr_object_name[1] = target_lleg sr_object_name[2] = target_rleg sr_object_name[3] = target_ltorso sr_object_name[4] = target_rtorso sr_object_name[5] = target_larm sr_object_name[6] = target_rarm sr_object_name[7] = target_head // Offset of each target element target_offset_x[1] = 0.275 target_offset_z[1] = -3.502 target_offset_x[2] = -0.214 target_offset_z[2] = -3.479 target_offset_x[3] = 0.245 target_offset_z[3] = -2.791 target_offset_x[4] = -0.168 target_offset_z[4] = -2.806 target_offset_x[5] = 0.079 target_offset_z[5] = -2.123 target_offset_x[6] = -0.589 target_offset_z[6] = -2.317 target_offset_x[7] = -0.357 target_offset_z[7] = -1.855 // coords at which target will be nearest the booths // (target for furthest left target - other targets will be created as an offset to this) // all coords are calculates as an offset from this point // position of left booth - ammun1 booth_x[0] = 290.6264 booth_y[0] = -24.5548 booth_z[0] = 1000.5229 booth_offset_1[0] = 3.0583 booth_offset_2[0] = 6.1726 // in x axis far_range_offset[0] = -13.6242 range_heading[0] = 0.0 // position of left booth - ammun2 booth_x[1] = 303.0788 booth_y[1] = -61.2269 booth_z[1] = 1000.5234 booth_offset_1[1] = 2.9464 booth_offset_2[1] = 6.0799 // in x axis far_range_offset[1] = -13.6242 range_heading[1] = 270.0 // position of left booth - ammun4 booth_x[2] = 300.1018 booth_y[2] = -137.0399 booth_z[2] = 1003.0547 booth_offset_1[2] = 3.1341 booth_offset_2[2] = 6.1264 // in x axis far_range_offset[2] = -13.6242 range_heading[2] = 90.0 // position of left booth - ammun5 booth_x[3] = 299.4518 booth_y[3] = -166.3517 booth_z[3] = 998.6105 booth_offset_1[3] = 3.0055 booth_offset_2[3] = 4.6018 // in x axis far_range_offset[3] = -13.6242 range_heading[3] = 90.0 sr_i = 0 WHILE sr_i < 3 SR_ped_can_be_created[sr_i] = 1 SR_ped_state[sr_i] = 0 SR_ped_weapon[sr_i] = 0 SR_range_level[sr_i] = 0 SR_target_state[sr_i] = 0 sr_target_rotation[sr_i] = 90.0 sr_time_to_new_target[sr_i] = 0 SR_targets_created[sr_i] = 0 sr_i ++ ENDWHILE SR_mission_state = 0 SR_flag = 0 SR_time_check = 0 GET_INT_STAT CITIES_PASSED Return_cities_passed IF Return_cities_passed = 0 range_weapons_open = 2 ENDIF IF Return_cities_passed = 1 IF range_weapons_open = 2 trigger_new_range_level = 1 ENDIF range_weapons_open = 3 ENDIF IF Return_cities_passed > 1 IF range_weapons_open < 4 trigger_new_range_level = 1 ENDIF range_weapons_open = 4 ENDIF // IF flag_player_on_mission = 0 // flag_shooting_range_mission = 1 COPY_CHAR_DECISION_MAKER DM_PED_RANDOM_NORM sr_dec CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE sr_dec EVENT_SHOT_FIRED ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE sr_dec EVENT_SHOT_FIRED TASK_SIMPLE_LOOK_AT_ENTITY_OR_COORD 100.0 100.0 100.0 100.0 TRUE TRUE LOAD_MISSION_AUDIO 4 SOUND_BANK_SHOOTING_RANGE REQUEST_MODEL target_head REQUEST_MODEL target_larm REQUEST_MODEL target_rarm REQUEST_MODEL target_lleg REQUEST_MODEL target_rleg REQUEST_MODEL target_rtorso REQUEST_MODEL target_ltorso REQUEST_MODEL target_frame REQUEST_MODEL COLT45 REQUEST_MODEL MICRO_UZI REQUEST_MODEL CHROMEGUN REQUEST_MODEL AK47 WHILE NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED MICRO_UZI OR NOT HAS_MODEL_LOADED CHROMEGUN OR NOT HAS_MODEL_LOADED AK47 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED target_head OR NOT HAS_MODEL_LOADED target_larm OR NOT HAS_MODEL_LOADED target_rarm OR NOT HAS_MODEL_LOADED target_lleg OR NOT HAS_MODEL_LOADED target_rleg WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED target_rtorso OR NOT HAS_MODEL_LOADED target_ltorso OR NOT HAS_MODEL_LOADED target_frame OR NOT HAS_MISSION_AUDIO_LOADED 4 WAIT 0 ENDWHILE // ENDIF VAR_INT SR_temp_target[3] IF flag_shooting_range_mission = 47 CREATE_OBJECT_NO_OFFSET sr_object_name[sr_i] 293.7570 1.0 1000.5156 sr_target[0] CREATE_RANDOM_CHAR X Y Z SR_ped[0] CREATE_OBJECT poolcue x y z sr_obj ENDIF GET_AREA_VISIBLE sr_area SR_loop: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_W sr_i = 9 WHILE sr_i < 16 IF DOES_OBJECT_EXIST sr_target[sr_i] BREAK_OBJECT sr_target[sr_i] TRUE ENDIF sr_i ++ ENDWHILE sr_score[1] = 20 ENDIF WAIT 0 GET_AREA_VISIBLE sr_i IF NOT sr_i = sr_area GOTO SR_cleanup ENDIF IF IS_PLAYER_PLAYING Player1 GOSUB SR_targets GOSUB SR_AI GOSUB SR_mission ENDIF GOTO SR_loop TERMINATE_THIS_SCRIPT // should never get here SR_mission: IF SR_mission_state > 0 IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL IF NOT SR_mission_state = 0 CLEAR_PRINTS SR_quit_range = 1 SR_mission_state = 20 SR_flag = 1 SR_time_check = 0 ENDIF ENDIF ENDIF SWITCH SR_mission_state CASE 0 //player not on shooting range mission // GET_CHAR_COORDINATES scplayer player_x player_y player_z IF SR_range_id = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 286.1649 -30.9591 1000.5156 2.0 2.0 2.0 TRUE SR_mission_state = 1 ENDIF ENDIF IF SR_range_id = 1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 301.8877 -77.2586 1000.5234 2.0 2.0 2.0 TRUE SR_mission_state = 1 ENDIF ENDIF IF SR_range_id = 2 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 306.4883 -141.9047 1003.0547 2.0 2.0 2.0 TRUE SR_mission_state = 1 ENDIF ENDIF IF SR_range_id = 3 IF LOCATE_CHAR_ANY_MEANS_3D scplayer 307.0919 -159.2197 998.6010 2.0 2.0 2.0 TRUE SR_mission_state = 1 ENDIF ENDIF local_flag = 0 BREAK CASE 1 // range missions triggered for first time. IF range_cuts_watched > 0 IF SR_flag < 7 AND sr_flag > 0 SR_flag = 7 SR_time_check = TIMERA + 1000 CLEAR_PRINTS ENDIF ENDIF // fade out IF SR_flag = 0 SR_quit_range = 0 SET_PLAYER_CYCLE_WEAPON_BUTTON Player1 FALSE VAR_INT ammo[4] WeaponType[4] ModelForWeaponType[4] GET_CHAR_WEAPON_IN_SLOT scplayer 3 WeaponType[0] ammo[0] ModelForWeaponType[0] GET_CHAR_WEAPON_IN_SLOT scplayer 4 weapontype[1] ammo[1] ModelForweapontype[1] GET_CHAR_WEAPON_IN_SLOT scplayer 5 weapontype[2] ammo[2] ModelForweapontype[2] GET_CHAR_WEAPON_IN_SLOT scplayer 6 weapontype[3] ammo[3] ModelForweapontype[3] sr_skill_won = 0 SET_PLAYER_CONTROL player1 OFF SET_FADING_COLOUR 0 0 0 SHOW_UPDATE_STATS FALSE DO_FADE 1000 FADE_OUT SR_flag = 1 SR_time_check = TIMERA + 1500 ENDIF // shows cut of guns shooting down range IF SR_flag = 1 IF TIMERA > SR_time_check // Mission level1 Pistol SWITCH_WIDESCREEN ON CLEAR_PRINTS PRINT ANR_1 4000 1 PRINT ANR_2 4000 1 PRINT ANR_3 4000 1 SR_float3 = -0.83 SR_float4 = 0.47 z = 1.7 GOSUB getWorldXYZ SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 SR_float3 = 0.17 SR_float4 = 0.63 z = 1.7 GOSUB getWorldXYZ POINT_CAMERA_AT_POINT x y z JUMP_CUT DO_FADE 1000 FADE_IN SR_flag = 2 SR_time_check = TIMERA + 4000 ENDIF ENDIF // shows cut of ped leaving the range and player walks in IF SR_flag = 2 IF TIMERA > SR_time_check SR_ped_state[1] = 3 SR_ped_can_be_created[1] = 0 SR_float3 = -0.63 SR_float4 = -3.47 z = 0.2 GOSUB getWorldXYZ SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 SR_float3 = 0.4 SR_float4 = -2.5 z = 0.5 GOSUB getWorldXYZ POINT_CAMERA_AT_POINT x y z JUMP_CUT DO_FADE 1000 FADE_IN SR_flag = 3 SR_time_check = TIMERA + 2000 ENDIF ENDIF // player walks in with pistol IF SR_flag = 3 IF TIMERA > SR_time_check GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_PISTOL 99999 SR_float3 = 0.0 + booth_offset_1[SR_range_id] SR_float4 = -1.0 GOSUB getWorldXYZ TASK_GO_STRAIGHT_TO_COORD scplayer x y z PEDMOVE_WALK -2 SR_flag = 4 SR_time_check = TIMERA + 3000 ENDIF ENDIF //close up of booth IF SR_flag = 4 IF TIMERA > SR_time_check SR_ped_state[1] = 4 SR_float1 = range_heading[SR_range_id] SR_float1 += 90.0 SET_CHAR_HEADING scplayer SR_float1 SR_float3 = booth_offset_1[SR_range_id] - 0.8201 SR_float4 = -0.4944 z = 2.1312 GOSUB getWorldXYZ SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 SR_float3 = booth_offset_1[SR_range_id] - 0.1125 SR_float4 = -0.0237 z = 1.6042 GOSUB getWorldXYZ POINT_CAMERA_AT_POINT x y z JUMP_CUT sr_float3 = booth_offset_1[SR_range_id] sr_float4 = -2.0 z = 0.0 GOSUB getWorldXYZ SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer x y z sr_float3 = booth_offset_1[SR_range_id] sr_float4 = 0.0 z = 0.0 GOSUB getWorldXYZ SET_CHAR_HEADING scplayer range_heading[SR_range_id] TASK_GO_STRAIGHT_TO_COORD scplayer x y z PEDMOVE_WALK -2 IF sr_skill_won = 0 SR_ped_weapon[0] = 1 SR_ped_weapon[2] = 1 ENDIF SR_ped_state[0] = 1 SR_ped_state[2] = 1 SR_target_state[0] = 0 SR_target_state[1] = 0 SR_target_state[2] = 0 SR_range_level[0] = 1 SR_range_level[1] = 1 SR_range_level[2] = 1 SR_flag = 5 SR_time_check = TIMERA + 3000 ENDIF ENDIF //peds shooting down range IF SR_flag = 5 IF TIMERA > SR_time_check CLEAR_PRINTS PRINT_BIG ANR_6 2000 1 SR_float3 = 2.1566 SR_float4 = 2.4369 z = 1.4565 GOSUB getWorldXYZ SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 SR_float3 = 1.9771 SR_float4 = 3.4129 z = 1.3326 GOSUB getWorldXYZ POINT_CAMERA_AT_POINT x y z JUMP_CUT SR_flag = 6 SR_time_check = TIMERA + 3000 ENDIF ENDIF // camera showing ped shooting targets IF sr_flag = 6 IF TIMERA > SR_time_check IF NOT IS_CHAR_DEAD SR_ped[0] SET_CHAR_ACCURACY SR_ped[0] 85 ENDIF CLEAR_THIS_BIG_PRINT ANR_6 PRINT ANR_7 4000 1 PRINT ANR_10 4000 1 SR_float3 = 0.7525 SR_float4 = -0.3628 z = 1.6174 GOSUB getWorldXYZ SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 SR_float3 = 0.1734 SR_float4 = 0.446 z = 1.5146 GOSUB getWorldXYZ POINT_CAMERA_AT_POINT x y z JUMP_CUT SR_flag = 7 SR_time_check = TIMERA + 8000 ENDIF ENDIF IF SR_flag = 7 IF TIMERA > SR_time_check IF NOT IS_CHAR_DEAD scplayer ENDIF IF range_cuts_watched = 0 range_cuts_watched = 1 DO_FADE 1000 FADE_OUT //add time check incase get_fading_status hasn't rregisterd. sr_time_check = TIMERA + 1000 ELSE PRINT_BIG ANR_6 2000 1 ENDIF SR_flag = 8 ENDIF ENDIF IF SR_flag = 8 IF NOT GET_FADING_STATUS AND TIMERA > sr_time_check sr_float3 = booth_offset_1[SR_range_id] sr_float4 = 0.0 z = 0.0 GOSUB getWorldXYZ IF NOT DOES_OBJECT_EXIST sr_obj CREATE_OBJECT poolcue x y z sr_obj SET_OBJECT_VISIBLE sr_obj FALSE SET_CHAR_HEADING scplayer range_heading[SR_range_id] ENDIF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer ATTACH_CHAR_TO_OBJECT scplayer sr_obj 0.0 0.0 1.0 FACING_FORWARD 90.0 WEAPONTYPE_PISTOL SET_PLAYER_DUCK_BUTTON Player1 FALSE IF SR_skill_won = 0 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_PISTOL 99999 ENDIF SR_ped_state[1] = 4 SR_ped_can_be_created[1] = 0 SR_flag = 9 SR_time_check = TIMERA + 800 IF sr_skill_won = 0 SR_ped_weapon[0] = 1 SR_ped_weapon[2] = 1 ENDIF SR_ped_state[0] = 1 SR_ped_state[2] = 1 SR_target_state[0] = 4 SR_target_state[1] = 4 SR_target_state[2] = 4 ENDIF ENDIF IF SR_flag = 9 IF TIMERA > SR_time_check DO_FADE 1000 FADE_IN DETACH_CHAR_FROM_CAR scplayer ATTACH_CHAR_TO_OBJECT scplayer sr_obj 0.0 0.0 1.0 FACING_FORWARD 90.0 WEAPONTYPE_PISTOL RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON SR_target_state[0] = 0 SR_target_state[1] = 0 SR_target_state[2] = 0 SR_range_level[0] = 1 SR_range_level[1] = 1 SR_range_level[2] = 1 IF trigger_new_range_level = 1 PRINT_HELP ANR_56 // A new weapon challenge is available. trigger_new_range_level = 0 ENDIF SR_flag = 10 ENDIF ENDIF IF SR_flag = 10 IF TIMERA > sr_time_check PRINT_BIG ( RACE2 ) 1000 4 //"3" SR_flag = 11 SR_time_check = TIMERA + 1000 SET_PLAYER_CONTROL player1 ON ENDIF ENDIF IF SR_FLAG = 11 IF TIMERA > SR_time_check PRINT_BIG ( RACE3 ) 1000 4 //"2" SR_flag = 12 SR_time_check = TIMERA + 1000 ENDIF ENDIF IF SR_FLAG = 12 IF TIMERA > SR_time_check PRINT_BIG ( RACE4 ) 1000 4 //"1" SR_flag = 13 SR_time_check = TIMERA + 1000 ENDIF ENDIF IF SR_FLAG = 13 IF TIMERA > SR_time_check PRINT_BIG ( RACE5 ) 1000 4 //"GO" SR_flag = 14 IF NOT IS_CHAR_DEAD SR_ped[0] SET_CHAR_ACCURACY SR_ped[0] 80 ENDIF ENDIF ENDIF IF SR_Flag = 14 SR_mission_state = 2 SR_flag = 0 ENDIF // alternative start IF sr_flag = 16 IF TIMERA > SR_time_check IF NOT IS_CHAR_DEAD scplayer IF NOT DOES_OBJECT_EXIST sr_obj sr_float3 = booth_offset_1[SR_range_id] sr_float4 = 0.0 z = 0.0 GOSUB getWorldXYZ CREATE_OBJECT poolcue x y z sr_obj SET_OBJECT_VISIBLE sr_obj FALSE SET_CHAR_HEADING scplayer range_heading[SR_range_id] ATTACH_CHAR_TO_OBJECT scplayer sr_obj 0.0 0.0 1.0 FACING_FORWARD 90.0 WEAPONTYPE_PISTOL RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_DUCK_BUTTON Player1 FALSE ENDIF ENDIF DO_FADE 1000 FADE_OUT SR_time_check = TIMERA + 2500 SR_flag = 17 ENDIF ENDIF IF sr_flag = 17 IF TIMERA > sr_time_check IF SR_skill_won = 3 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_MICRO_UZI 99999 DETACH_CHAR_FROM_CAR scplayer ATTACH_CHAR_TO_OBJECT scplayer sr_obj 0.0 0.0 1.0 FACING_FORWARD 90.0 WEAPONTYPE_MICRO_UZI ENDIF IF SR_skill_won = 6 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_SHOTGUN 99999 DETACH_CHAR_FROM_CAR scplayer ATTACH_CHAR_TO_OBJECT scplayer sr_obj 0.0 0.0 1.0 FACING_FORWARD 90.0 WEAPONTYPE_SHOTGUN ENDIF IF SR_skill_won = 9 GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_AK47 99999 DETACH_CHAR_FROM_CAR scplayer ATTACH_CHAR_TO_OBJECT scplayer sr_obj 0.0 0.0 1.0 FACING_FORWARD 90.0 WEAPONTYPE_AK47 ENDIF DO_FADE 1000 FADE_IN CLEAR_PRINTS RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON IF sr_skill_won = 3 PRINT_BIG ANR_47 3000 1 ENDIF IF sr_skill_won = 6 PRINT_BIG ANR_23 3000 1 ENDIF IF sr_skill_won = 9 PRINT_BIG ANR_50 3000 1 ENDIF sr_time_check = TIMERA + 4000 sr_flag = 18 ENDIF ENDIF IF sr_flag = 18 IF TIMERA > sr_time_check SR_target_state[0] = 0 SR_target_state[1] = 0 SR_target_state[2] = 0 local_flag = 0 SR_range_level[0] = 1 SR_range_level[1] = 1 SR_range_level[2] = 1 sr_flag = 10 ENDIF ENDIF BREAK CASE 2 // Shoot 3 targets at progressively further distances IF SR_flag = 0 IF NOT IS_CHAR_DEAD SR_ped[0] SET_CHAR_ACCURACY SR_ped[0] 75 ENDIF IF NOT IS_CHAR_DEAD SR_ped[2] SET_CHAR_ACCURACY SR_ped[2] 75 ENDIF SR_flag = 1 ENDIF IF SR_flag = 1 // You were too slow IF SR_target_state[0] = 3 AND SR_range_level[0] = 3 SR_mission_state = 20 //fail SR_flag = 0 ENDIF IF SR_target_state[2] = 3 AND SR_range_level[2] = 3 SR_mission_state = 20 //fail SR_flag = 0 ENDIF IF SR_target_state[1] = 3 AND SR_range_level[1] = 3 SR_mission_state = 3 //pass SR_flag = 0 ENDIF ENDIF BREAK CASE 3 IF SR_flag = 0 //passed IF SR_skill_won = 0 OR SR_skill_won = 3 OR SR_skill_won = 6 OR SR_skill_won = 9 PRINT_BIG ANR_41 2000 1 ENDIF IF SR_skill_won = 1 OR SR_skill_won = 4 OR SR_skill_won = 7 OR SR_skill_won = 10 // CLEAR_THIS_BIG_PRINT ANR_41 PRINT_BIG ANR_42 2000 1 ENDIF IF SR_skill_won = 2 OR SR_skill_won = 5 OR SR_skill_won = 8 sr_time_check = TIMERA + 5500 SR_target_state[0] = 5 SR_target_state[1] = 5 SR_target_state[2] = 5 ENDIF IF SR_skill_won = 11 PRINT_BIG ANR_45 3000 1 sr_time_check = TIMERA + 5500 SR_target_state[0] = 5 SR_target_state[1] = 5 SR_target_state[2] = 5 ENDIF IF SR_skill_won = SR_skill_award_given // these only ever happen once. IF SR_skill_won = 0 OR SR_skill_won = 1 INCREMENT_FLOAT_STAT WEAPONTYPE_PISTOL_SKILL 50.0 ENDIF IF SR_skill_won = 3 OR SR_skill_won = 4 INCREMENT_FLOAT_STAT WEAPONTYPE_MICRO_UZI_SKILL 50.0 ENDIF IF SR_skill_won = 6 OR SR_skill_won = 7 INCREMENT_FLOAT_STAT WEAPONTYPE_SHOTGUN_SKILL 50.0 ENDIF IF SR_skill_won = 9 OR SR_skill_won = 10 INCREMENT_FLOAT_STAT WEAPONTYPE_AK47_SKILL 50.0 ENDIF IF SR_skill_won = 2 INCREMENT_FLOAT_STAT WEAPONTYPE_PISTOL_SKILL 100.0 PLAYER_MADE_PROGRESS 1 ENDIF IF SR_skill_won = 5 INCREMENT_FLOAT_STAT WEAPONTYPE_MICRO_UZI_SKILL 100.0 PLAYER_MADE_PROGRESS 1 ENDIF IF SR_skill_won = 8 INCREMENT_FLOAT_STAT WEAPONTYPE_SHOTGUN_SKILL 100.0 PLAYER_MADE_PROGRESS 1 ENDIF IF SR_skill_won = 11 INCREMENT_FLOAT_STAT WEAPONTYPE_AK47_SKILL 100.0 SET_FLOAT_STAT WEAPONTYPE_PISTOL_SKILL 1000.0 ADD_SCORE Player1 10000 //amount of cash reward PLAYER_MADE_PROGRESS 1 // PRINT_HELP ANR_54 PLAY_MISSION_PASSED_TUNE 2 // VIEW_INTEGER_VARIABLE player_has_Fast_reload player_has_Fast_reload player_has_Fast_reload = 1 // SET_PLAYER_FAST_RELOAD Player1 TRUE ENDIF SR_skill_award_given ++ SET_INT_STAT SHOOTING_RANGE_SCORE SR_skill_award_given ENDIF SR_flag = 1 ENDIF IF SR_flag = 1 IF SR_skill_won = 0 SR_mission_state = 4 SR_flag = 0 ENDIF IF SR_skill_won = 3 OR SR_skill_won = 6 OR SR_skill_won = 9 SR_mission_state = 4 SR_flag = 10 ENDIF IF SR_skill_won = 1 SR_mission_state = 5 SR_flag = 0 ENDIF IF SR_skill_won = 4 OR SR_skill_won = 7 OR SR_skill_won = 10 SR_mission_state = 5 SR_flag = 10 ENDIF IF SR_skill_won = 2 OR SR_skill_won = 5 OR SR_skill_won = 8 SR_mission_state = 1 SR_flag = 16 ENDIF IF SR_skill_won = 2 SR_ped_weapon[0] = 2 SR_ped_weapon[2] = 2 SR_ped_state[0] = 1 SR_ped_state[2] = 1 PRINT_BIG ANR_29 2000 1 ENDIF IF SR_skill_won = 5 SR_ped_weapon[0] = 3 SR_ped_weapon[2] = 3 SR_ped_state[0] = 1 SR_ped_state[2] = 1 PRINT_BIG ANR_53 2000 1 ENDIF IF SR_skill_won = 8 SR_ped_weapon[0] = 4 SR_ped_weapon[2] = 4 SR_ped_state[0] = 1 SR_ped_state[2] = 1 PRINT_BIG ANR_31 2000 1 ENDIF IF SR_skill_won = 5 //SMG round passed. Can we go to next round? IF range_weapons_open <= 2 SR_mission_state = 20 sr_flag = 1 ELSE PRINT ANR_44 4000 1 ENDIF ENDIF IF SR_skill_won = 8 //Shotgun round passed. Can we go to next round? IF range_weapons_open <= 3 SR_mission_state = 20 sr_flag = 1 ELSE PRINT ANR_44 4000 1 ENDIF ENDIF IF SR_skill_won = 11 sr_mission_state = 20 sr_flag = 1 ENDIF SR_skill_won ++ ENDIF BREAK CASE 4 IF SR_flag = 0 // rotate up targets and dlete SR_targets_created[0] = 0 SR_targets_created[1] = 0 SR_targets_created[2] = 0 SR_target_state[0] = 5 SR_target_state[1] = 5 SR_target_state[2] = 5 SR_range_level[0] = 4 SR_range_level[1] = 4 SR_range_level[2] = 4 SR_flag = 1 sr_time_check = TIMERA + 6000 local_flag = 0 ENDIF IF SR_flag = 1 IF TIMERA > sr_time_check IF range_cuts_watched < 3 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT ENDIF SR_flag = 2 SR_time_check = TIMERA + 1500 ENDIF ENDIF // shows cut of guns shooting down range IF SR_flag = 2 IF range_cuts_watched > 1 CLEAR_PRINTS IF DOES_OBJECT_EXIST sr_target[8] DELETE_OBJECT sr_target[8] ENDIF CLEAR_THIS_BIG_PRINT ANR_18 CLEAR_THIS_BIG_PRINT ANR_19 sr_time_check = 0 SR_flag = 3 SR_time_check = 0 ELSE IF TIMERA > SR_time_check // Mission level1 Pistol SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON CLEAR_THIS_BIG_PRINT ANR_41 PRINT_BIG ANR_18 4000 1 PRINT ANR_9 4000 1 PRINT ANR_10 3000 1 SR_float3 = -2.0835 SR_float4 = 6.0428 z = 0.0387 GOSUB getWorldXYZ SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 SR_flag = 3 SR_time_check = TIMERA + 1000 SR_target_state[0] = 0 SR_target_state[1] = 0 SR_target_state[2] = 0 ENDIF ENDIF ENDIF IF SR_flag = 3 IF TIMERA > SR_time_check DO_FADE 1000 FADE_IN SR_flag = 4 SR_time_check = TIMERA + 6000 local_flag = 0 ENDIF ENDIF IF SR_flag = 4 LVAR_INT local_flag IF range_cuts_watched = 1 IF DOES_OBJECT_EXIST sr_target[8] GET_OBJECT_COORDINATES sr_target[8] x y z z -= 2.0 POINT_CAMERA_AT_POINT x y z JUMP_CUT ENDIF ENDIF IF TIMERA > SR_time_check OR range_cuts_watched > 1 IF NOT GET_FADING_STATUS IF range_cuts_watched = 1 IF local_flag = 0 DO_FADE 1000 FADE_OUT local_flag = 1 ENDIF ELSE IF local_flag = 0 IF sr_skill_won = 1 PRINT_BIG ANR_18 3000 1 ENDIF IF sr_skill_won = 4 PRINT_BIG ANR_48 3000 1 ENDIF IF sr_skill_won = 7 PRINT_BIG ANR_24 3000 1 ENDIF IF sr_skill_won = 10 PRINT_BIG ANR_51 3000 1 ENDIF sr_time_check = TIMERA + 1000 local_flag = 1 ENDIF ENDIF ENDIF IF NOT GET_FADING_STATUS IF TIMERA > sr_time_check IF range_cuts_watched < 2 IF local_flag = 1 local_flag = 2 DO_FADE 700 FADE_IN range_cuts_watched = 2 RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF DETACH_CHAR_FROM_CAR scplayer ATTACH_CHAR_TO_OBJECT scplayer sr_obj 0.0 0.0 1.0 FACING_FORWARD 90.0 WEAPONTYPE_PISTOL ENDIF ENDIF SR_target_state[0] = 0 SR_target_state[1] = 0 SR_target_state[2] = 0 SR_targets_created[0] = 0 SR_targets_created[1] = 0 SR_targets_created[2] = 0 PRINT_BIG ( RACE2 ) 1000 4 //"3" SR_flag = 5 SR_time_check = TIMERA + 1000 SET_PLAYER_CONTROL player1 ON ENDIF ENDIF ENDIF ENDIF IF SR_FLAG = 5 IF TIMERA > SR_time_check PRINT_BIG ( RACE3 ) 1000 4 //"2" SR_flag = 6 SR_time_check = TIMERA + 1000 ENDIF ENDIF IF SR_FLAG = 6 IF TIMERA > SR_time_check PRINT_BIG ( RACE4 ) 1000 4 //"1" SR_flag = 7 SR_time_check = TIMERA + 1000 ENDIF ENDIF IF SR_FLAG = 7 IF TIMERA > SR_time_check PRINT_BIG ( RACE5 ) 1000 4 //"GO" SR_flag = 8 ENDIF ENDIF IF SR_flag = 8 IF SR_target_state[0] = 3 AND SR_targets_created[0] = 3 SR_mission_state = 20 //fail SR_flag = 0 ENDIF IF SR_target_state[2] = 3 AND SR_targets_created[2] = 3 SR_mission_state = 20 //fail SR_flag = 0 ENDIF IF SR_target_state[1] = 3 AND SR_targets_created[1] = 3 SR_mission_state = 3 //pass SR_flag = 0 ENDIF ENDIF // rotate existing objects away. IF sr_flag = 10 SR_target_state[0] = 5 SR_target_state[1] = 5 SR_target_state[2] = 5 sr_flag = 11 ENDIF IF sr_flag = 11 IF SR_target_state[0] = 99 AND SR_target_state[1] = 99 AND SR_target_state[2] = 99 CLEAR_PRINTS IF sr_skill_won = 4 PRINT_BIG ANR_48 3000 1 ENDIF IF sr_skill_won = 7 PRINT_BIG ANR_24 3000 1 ENDIF IF sr_skill_won = 10 PRINT_BIG ANR_51 3000 1 ENDIF sr_time_check = TIMERA + 4000 sr_flag = 12 ENDIF ENDIF IF sr_flag = 12 IF TIMERA > sr_time_check SR_range_level[0] = 4 SR_range_level[1] = 4 SR_range_level[2] = 4 SR_targets_created[0] = 0 SR_targets_created[1] = 0 SR_targets_created[2] = 0 SR_flag = 4 SR_time_check = TIMERA + 1000 SET_PLAYER_CONTROL player1 ON ENDIF ENDIF BREAK CASE 5 IF range_cuts_watched > 2 IF SR_flag < 4 AND sr_flag > 1 sr_time_check = 0 SR_flag = 4 ENDIF ENDIF IF SR_flag = 0 // rotate up targets and dlete SR_score[0] = 0 SR_score[1] = 0 SR_score[2] = 0 SR_targets_created[0] = 0 SR_targets_created[1] = 0 SR_targets_created[2] = 0 SR_target_state[0] = 5 SR_target_state[1] = 5 SR_target_state[2] = 5 SR_range_level[0] = 0 SR_range_level[1] = 5 SR_range_level[2] = 0 SR_flag = 1 sr_time_check = TIMERA + 8000 ENDIF IF SR_flag = 1 IF TIMERA > sr_time_check IF range_cuts_watched < 3 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT ENDIF SR_flag = 2 SR_time_check = TIMERA + 1500 ENDIF ENDIF // shows cut of guns shooting down range IF SR_flag = 2 IF TIMERA > SR_time_check // Mission level1 Pistol SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF CLEAR_THIS_BIG_PRINT ANR_41 PRINT_BIG ANR_19 4000 1 PRINT ANR_33 3000 1 PRINT ANR_34 3000 1 PRINT ANR_35 3000 1 PRINT ANR_46 3000 1 SR_float3 = 3.0583 SR_float4 = 0.6889 z = 1.2953 GOSUB getWorldXYZ SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 SR_float3 = 2.9703 SR_float4 = 1.684 z = 1.2513 GOSUB getWorldXYZ POINT_CAMERA_AT_POINT x y z JUMP_CUT DO_FADE 1000 FADE_IN SR_flag = 3 SR_time_check = TIMERA + 12000 SR_target_state[0] = 5 SR_target_state[1] = 0 SR_target_state[2] = 5 ENDIF ENDIF IF SR_flag = 3 IF TIMERA > SR_time_check IF range_cuts_watched < 3 DO_FADE 1000 FADE_OUT ENDIF SR_time_check = TIMERA + 1500 SR_flag = 4 sr_score[0] = 0 sr_score[1] = 0 sr_score[2] = 0 ENDIF ENDIF IF SR_flag = 4 IF TIMERA > SR_time_check IF NOT GET_FADING_STATUS DISPLAY_ONSCREEN_COUNTER_WITH_STRING sr_Score[0] COUNTER_DISPLAY_NUMBER ANR_37 DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING sr_Score[1] COUNTER_DISPLAY_NUMBER 2 ANR_39 DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING sr_Score[2] COUNTER_DISPLAY_NUMBER 3 ANR_38 DO_FADE 1000 FADE_IN IF range_cuts_watched < 3 DETACH_CHAR_FROM_CAR scplayer ATTACH_CHAR_TO_OBJECT scplayer sr_obj 0.0 0.0 1.0 FACING_FORWARD 90.0 WEAPONTYPE_PISTOL RESTORE_CAMERA_JUMPCUT ENDIF IF range_cuts_watched = 2 range_cuts_watched = 3 ELSE PRINT_BIG ANR_19 2000 1 ENDIF SR_targets_created[0] = 0 SR_targets_created[1] = 0 SR_targets_created[2] = 0 SR_target_state[0] = 5 SR_target_state[1] = 0 SR_target_state[2] = 5 PRINT_BIG ( RACE2 ) 1000 4 //"3" SR_flag = 5 SR_time_check = TIMERA + 1000 SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF ENDIF ENDIF ENDIF IF SR_FLAG = 5 IF TIMERA > SR_time_check PRINT_BIG ( RACE3 ) 1000 4 //"2" SR_flag = 6 SR_time_check = TIMERA + 1000 ENDIF ENDIF IF SR_FLAG = 6 IF TIMERA > SR_time_check PRINT_BIG ( RACE4 ) 1000 4 //"1" SR_flag = 7 SR_time_check = TIMERA + 1000 ENDIF ENDIF IF SR_FLAG = 7 IF TIMERA > SR_time_check PRINT_BIG ( RACE5 ) 1000 4 //"GO" SR_flag = 8 sr_score[0] = 0 sr_score[1] = 0 sr_score[2] = 0 ENDIF ENDIF IF SR_Flag = 8 IF sr_score[1] >= 20 SR_mission_state = 3 SR_flag = 0 CLEAR_ONSCREEN_COUNTER sr_Score[0] CLEAR_ONSCREEN_COUNTER sr_Score[1] CLEAR_ONSCREEN_COUNTER sr_Score[2] // player wins - end of pistol round // increase pistol stats // change weapon to uzi ENDIF IF sr_score[0] >= 20 OR sr_score[2] >= 20 SR_mission_state = 20 sr_flag = 0 CLEAR_ONSCREEN_COUNTER sr_Score[0] CLEAR_ONSCREEN_COUNTER sr_Score[1] CLEAR_ONSCREEN_COUNTER sr_Score[2] ENDIF ENDIF // rotate existing objects away. IF sr_flag = 10 SR_target_state[0] = 5 SR_target_state[1] = 5 SR_target_state[2] = 5 sr_time_check = TIMERA + 7000 sr_flag = 11 ENDIF IF sr_flag = 11 IF SR_target_state[0] = 99 AND SR_target_state[1] = 99 AND SR_target_state[2] = 99 AND TIMERA > sr_time_check IF sr_skill_won = 5 PRINT_BIG ANR_49 2000 1 ENDIF IF sr_skill_won = 8 PRINT_BIG ANR_25 2000 1 ENDIF IF sr_skill_won = 11 PRINT_BIG ANR_52 2000 1 ENDIF sr_time_check = TIMERA + 4000 sr_flag = 12 ENDIF ENDIF IF sr_flag = 12 IF TIMERA > sr_time_check SR_score[0] = 0 SR_score[1] = 0 SR_score[2] = 0 SR_targets_created[1] = 0 SR_target_state[1] = 0 SR_range_level[0] = 0 SR_range_level[1] = 5 SR_range_level[2] = 0 sr_score[0] = 0 sr_score[1] = 0 sr_score[2] = 0 DISPLAY_ONSCREEN_COUNTER_WITH_STRING sr_Score[0] COUNTER_DISPLAY_NUMBER ANR_37 DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING sr_Score[1] COUNTER_DISPLAY_NUMBER 2 ANR_39 DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING sr_Score[2] COUNTER_DISPLAY_NUMBER 3 ANR_38 PRINT_BIG ( RACE2 ) 1000 4 //"3" SR_flag = 5 SR_time_check = TIMERA + 1000 SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF ENDIF ENDIF BREAK CASE 20 IF SR_flag = 0 PRINT_BIG ANR_16 3000 1 //failed sr_time_check = TIMERA + 3000 SR_flag = 1 ENDIF IF SR_flag = 1 IF TIMERA > sr_time_check DO_FADE 1000 FADE_OUT SR_flag = 2 ENDIF ENDIF IF SR_flag = 2 IF NOT GET_FADING_STATUS sr_time_check = TIMERA + 500 SHOW_UPDATE_STATS TRUE SR_flag = 3 ENDIF ENDIF IF SR_flag = 3 IF TIMERA > sr_time_check sr_float3 = 2.0 sr_float4 = -12.0 z = 0.0 CLEAR_ONSCREEN_COUNTER sr_Score[0] CLEAR_ONSCREEN_COUNTER sr_Score[1] CLEAR_ONSCREEN_COUNTER sr_Score[2] DETACH_CHAR_FROM_CAR scplayer GOSUB getWorldXYZ SET_PLAYER_CYCLE_WEAPON_BUTTON Player1 TRUE REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_PISTOL IF ammo[0] > 0 WHILE NOT HAS_MODEL_LOADED ModelForweapontype[0] REQUEST_MODEL ModelForweapontype[0] WAIT 0 ENDWHILE GIVE_WEAPON_TO_CHAR scplayer weapontype[0] ammo[0] ENDIF REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_SHOTGUN IF ammo[1] > 0 WHILE NOT HAS_MODEL_LOADED ModelForweapontype[1] REQUEST_MODEL ModelForweapontype[1] WAIT 0 ENDWHILE GIVE_WEAPON_TO_CHAR scplayer weapontype[1] ammo[1] ENDIF REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_MICRO_UZI IF ammo[2] > 0 WHILE NOT HAS_MODEL_LOADED ModelForweapontype[2] REQUEST_MODEL ModelForweapontype[2] WAIT 0 ENDWHILE GIVE_WEAPON_TO_CHAR scplayer weapontype[2] ammo[2] ENDIF REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_AK47 IF ammo[3] > 0 WHILE NOT HAS_MODEL_LOADED ModelForweapontype[3] REQUEST_MODEL ModelForweapontype[3] WAIT 0 ENDWHILE GIVE_WEAPON_TO_CHAR scplayer weapontype[3] ammo[3] ENDIF SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED SET_PLAYER_DUCK_BUTTON Player1 TRUE DELETE_OBJECT sr_obj CLEAR_PRINTS SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer x y z IF NOT IS_CHAR_DEAD scplayer FREEZE_CHAR_POSITION scplayer FALSE ENDIF SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF IF NOT IS_CHAR_DEAD scplayer SET_CHAR_HEADING scplayer range_heading[SR_range_id] ENDIF SR_ped_can_be_created[1] = 1 DO_FADE 1000 FADE_IN SR_mission_state = 0 SR_flag = 0 SR_targets_created[0] = 0 SR_targets_created[1] = 0 SR_targets_created[2] = 0 SR_ped_weapon[0] = 0 SR_ped_weapon[1] = 0 SR_ped_weapon[2] = 0 SR_ped_state[0] = 1 IF IS_CHAR_DEAD sr_ped[1] SR_ped_state[1] = 0 ENDIF SR_ped_state[2] = 1 SR_range_level[0] = 0 SR_range_level[1] = 0 SR_range_level[2] = 0 SR_target_state[0] = 0 SR_target_state[1] = 0 SR_target_state[2] = 0 IF SR_quit_range = 1 CLEAR_THIS_PRINT_BIG_NOW 1 PRINT ANR_A1 4000 1 SR_quit_range = 0 ENDIF IF NOT range_weapons_open = 4 AND NOT SR_quit_range = 1 PRINT ANR_55 4000 1 ENDIF //used to clear target lock SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player1 ON ENDIF ENDIF BREAK ENDSWITCH RETURN SR_AI: SR_i = 0 VAR_INT this_Watch[9] this_watch[0] = SR_target_state[0] this_watch[3] = SR_target_state[1] this_watch[6] = SR_target_state[2] WHILE SR_i < 3 SWITCH SR_ped_state[sr_i] CASE 0 //ped no created IF SR_ped_can_be_created[sr_i] = 1 SR_ped_state[sr_i] = 1 x = booth_x[SR_range_id] y = booth_y[SR_range_id] z = booth_z[SR_range_id] h = range_heading[SR_range_id] IF sr_i = 1 IF h = 90.0 y += booth_offset_1[SR_range_id] ENDIF IF h = 270.0 y -= booth_offset_1[SR_range_id] ENDIF IF h = 0.0 x += booth_offset_1[SR_range_id] ENDIF ENDIF IF sr_i = 2 IF h = 90.0 y += booth_offset_2[SR_range_id] ENDIF IF h = 270.0 y -= booth_offset_2[SR_range_id] ENDIF IF h = 0.0 x += booth_offset_2[SR_range_id] ENDIF ENDIF CREATE_RANDOM_CHAR X Y Z SR_ped[sr_i] IF NOT IS_CHAR_DEAD SR_ped[sr_i] SET_CHAR_PROOFS SR_ped[sr_i] TRUE TRUE TRUE TRUE TRUE SET_CHAR_DECISION_MAKER SR_ped[sr_i] SR_dec SET_CHAR_ACCURACY sr_ped[sr_i] 80 SET_CHAR_HEADING SR_ped[sr_i] h ENDIF ENDIF BREAK CASE 1 // select weapon IF NOT IS_CHAR_DEAD SR_ped[sr_i] IF SR_ped_weapon[sr_i] = 0 // select a random weapon GENERATE_RANDOM_INT_IN_RANGE 1 5 SR_ped_weapon[sr_i] ENDIF IF SR_ped_weapon[sr_i] = 1 GIVE_WEAPON_TO_CHAR SR_ped[sr_i] WEAPONTYPE_PISTOL 99999 SET_CURRENT_CHAR_WEAPON SR_ped[sr_i] WEAPONTYPE_PISTOL ENDIF IF SR_ped_weapon[sr_i] = 2 GIVE_WEAPON_TO_CHAR SR_ped[sr_i] WEAPONTYPE_MICRO_UZI 99999 SET_CURRENT_CHAR_WEAPON SR_ped[sr_i] WEAPONTYPE_MICRO_UZI ENDIF IF SR_ped_weapon[sr_i] = 3 GIVE_WEAPON_TO_CHAR SR_ped[sr_i] WEAPONTYPE_SHOTGUN 99999 SET_CURRENT_CHAR_WEAPON SR_ped[sr_i] WEAPONTYPE_SHOTGUN ENDIF IF SR_ped_weapon[sr_i] = 4 GIVE_WEAPON_TO_CHAR SR_ped[sr_i] WEAPONTYPE_AK47 99999 SET_CURRENT_CHAR_WEAPON SR_ped[sr_i] WEAPONTYPE_AK47 ENDIF SR_ped_state[sr_i] = 2 ENDIF BREAK CASE 2 //shoot at targets sr_int1 = 0 IF SR_target_state[sr_i] = 2 sr_int1 = 1 ENDIF IF sr_mission_state = 5 AND SR_target_state[1] = 2 sr_int1 = 1 ENDIF IF sr_i = 0 this_watch[1] = sr_int1 ENDIF IF sr_i = 1 this_watch[4] = sr_int1 ENDIF IF sr_i = 2 this_watch[7] = sr_int1 ENDIF IF sr_int1 = 1 IF TIMERA > sr_time_to_new_target[sr_i] //choose an element to aim at GENERATE_RANDOM_INT_IN_RANGE 1 8 sr_int1 IF sr_mission_state = 5 sr_int1 += 8 ELSE IF sr_i = 2 sr_int1 += 16 ENDIF IF sr_i = 1 sr_int1 += 8 ENDIF ENDIF sr_j = 0 WHILE HAS_OBJECT_BEEN_DAMAGED sr_target[sr_int1] AND sr_j < 8 sr_int1 ++ sr_j ++ IF sr_int1 = 8 OR sr_int1 = 24 OR sr_int1 = 16 sr_int1 -= 7 ENDIF ENDWHILE IF sr_i = 0 this_watch[2] = sr_j ENDIF IF sr_i = 1 this_watch[5] = sr_j ENDIF IF sr_i = 2 this_watch[8] = sr_j ENDIF IF NOT IS_CHAR_DEAD SR_ped[sr_i] GET_OBJECT_COORDINATES sr_target[sr_int1] x y z IF sr_int1 > 8 AND sr_int1 < 16 sr_int1 -= 8 ENDIF IF sr_int1 > 16 AND sr_int1 < 24 sr_int1 -= 16 ENDIF IF h = 0.0 x += target_offset_x[sr_int1] ENDIF IF h = 90.0 y += target_offset_x[sr_int1] ENDIF IF h = 270.0 y -= target_offset_x[sr_int1] ENDIF z += target_offset_z[sr_int1] IF SR_skill_won >= 8 GET_SCRIPT_TASK_STATUS SR_ped[sr_i] TASK_SHOOT_AT_COORD sr_int1 IF sr_int1 = FINISHED_TASK FREEZE_CHAR_POSITION SR_ped[sr_i] TRUE TASK_SHOOT_AT_COORD SR_ped[sr_i] x y z 800 SET_CHAR_ACCURACY SR_ped[sr_i] 80 ENDIF ELSE GET_SCRIPT_TASK_STATUS SR_ped[sr_i] TASK_SHOOT_AT_COORD sr_int1 IF sr_int1 = FINISHED_TASK FREEZE_CHAR_POSITION SR_ped[sr_i] TRUE TASK_SHOOT_AT_COORD SR_ped[sr_i] x y z 1500 ENDIF ENDIF IF SR_skill_won >= 8 GENERATE_RANDOM_INT_IN_RANGE 200 400 sr_int1 sr_time_to_new_target[sr_i] += 600 ELSE GENERATE_RANDOM_INT_IN_RANGE 200 1600 sr_int1 ENDIF sr_time_to_new_target[sr_i] = TIMERA + sr_int1 ENDIF ENDIF ELSE IF NOT IS_CHAR_DEAD SR_ped[sr_i] GET_SCRIPT_TASK_STATUS SR_ped[sr_i] TASK_SHOOT_AT_COORD sr_int1 IF NOT sr_int1 = FINISHED_TASK CLEAR_CHAR_TASKS SR_ped[sr_i] ENDIF ENDIF ENDIF BREAK CASE 3 //leave range IF NOT IS_CHAR_DEAD SR_ped[sr_i] GET_CHAR_COORDINATES SR_ped[sr_i] x y z FREEZE_CHAR_POSITION SR_ped[sr_i] FALSE FLUSH_ROUTE OPEN_SEQUENCE_TASK SR_seq SR_float3 = 0.0 + booth_offset_1[SR_range_id] SR_float4 = -1.0 COS range_heading[SR_range_id] SR_float1 SIN range_heading[SR_range_id] SR_float2 IF range_heading[SR_range_id] = 0.0 x = SR_float3 * SR_float1 y = SR_float4 * SR_float1 ELSE SR_float4 *= -1.0 x = SR_float4 * SR_float2 y = SR_float3 * SR_float2 ENDIF x += booth_x[SR_range_id] y += booth_y[SR_range_id] z += booth_z[SR_range_id] h = range_heading[SR_range_id] h -= 180.0 TASK_ACHIEVE_HEADING -1 h h = range_heading[SR_range_id] EXTEND_ROUTE x y z SR_float3 = -0.5 + booth_offset_1[SR_range_id] SR_float4 = -4.5 IF range_heading[SR_range_id] = 0.0 x = SR_float3 * SR_float1 y = SR_float4 * SR_float1 ELSE SR_float4 *= -1.0 x = SR_float4 * SR_float2 y = SR_float3 * SR_float2 ENDIF x += booth_x[SR_range_id] y += booth_y[SR_range_id] z += booth_z[SR_range_id] EXTEND_ROUTE x y z TASK_FOLLOW_POINT_ROUTE -1 PEDMOVE_WALK FOLLOW_ROUTE_ONCE CLOSE_SEQUENCE_TASK SR_seq PERFORM_SEQUENCE_TASK SR_ped[sr_i] SR_seq CLEAR_SEQUENCE_TASK SR_seq SR_ped_state[sr_i] = 99 ENDIF BREAK CASE 4 //remove ped IF NOT IS_CHAR_DEAD SR_ped[sr_i] DELETE_CHAR SR_ped[sr_i] ENDIF SR_ped_state[sr_i] = 0 BREAK ENDSWITCH SR_i ++ ENDWHILE RETURN SR_targets: SR_i = 0 WHILE SR_i < 3 SWITCH SR_target_state[sr_i] CASE 0 //create target CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE SR_dec EVENT_SHOT_FIRED SR_target_state[sr_i] = 1 IF SR_range_level[sr_i] = 0 GENERATE_RANDOM_INT_IN_RANGE 1 3 SR_range_level[sr_i] IF SR_range_level[sr_i] = 2 SR_range_level[sr_i] = 4 ENDIF ENDIF x = 0.0 y = 5.0 z = 4.0 h = range_heading[SR_range_id] IF SR_range_level[sr_i] < 5 IF sr_i = 1 x += booth_offset_1[SR_range_id] ENDIF IF sr_i = 2 x += booth_offset_2[SR_range_id] ENDIF //Set the Distance of the target from the player, for each round IF SR_range_level[sr_i] = 1 y += 0.0 ENDIF IF SR_range_level[sr_i] = 2 y += 2.5 ENDIF IF SR_range_level[sr_i] = 3 OR SR_range_level[sr_i] = 4 y += 5.0 ENDIF ENDIF IF SR_range_level[sr_i] = 5 // create target at random side of room going left or right. GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 10.0 sr_yoffset y += sr_yoffset GENERATE_RANDOM_INT_IN_RANGE 0 2 sr_direction IF sr_direction = 1 x += booth_offset_2[SR_range_id] ENDIF ENDIF SR_float3 = x SR_float4 = y GOSUB getWorldXYZ sr_int1 = sr_i * 8 IF DOES_OBJECT_EXIST sr_target[sr_int1] DELETE_OBJECT sr_target[sr_int1] ENDIF CREATE_OBJECT_NO_OFFSET sr_object_name[0] x y z sr_target[sr_int1] SET_OBJECT_ROTATION sr_target[sr_int1] 90.0 0.0 h REPORT_MISSION_AUDIO_EVENT_AT_OBJECT sr_target[sr_int1] SOUND_SHOOTING_RANGE_TARGET_DROP sr_target_rotation[sr_i] = 90.0 sr_j = 1 WHILE sr_j < 8 sr_obj_number = sr_i * 8 sr_obj_number += sr_j IF DOES_OBJECT_EXIST sr_target[sr_obj_number] DELETE_OBJECT sr_target[sr_obj_number] ENDIF CREATE_OBJECT_NO_OFFSET sr_object_name[sr_j] x y z sr_target[sr_obj_number] ATTACH_OBJECT_TO_OBJECT sr_target[sr_obj_number] sr_target[sr_int1] 0.0 0.0 0.0 0.0 0.0 0.0 IF DOES_OBJECT_EXIST sr_target[sr_obj_number] SET_OBJECT_ROTATION sr_target[sr_obj_number] 90.0 0.0 h SET_OBJECT_COLLISION sr_target[sr_obj_number] FALSE ENDIF sr_j ++ ENDWHILE SR_targets_created[sr_i] ++ sr_target_advance_time[sr_i] = TIMERA BREAK CASE 1 // rotate object sr_int1 = TIMERA - sr_target_advance_time[sr_i] IF sr_int1 > 3000 sr_int1 = 3000 ENDIF sr_float1 =# sr_int1 sr_float1 /= 3000.0 sr_float1 *= -90.0 sr_float1 += 90.0 sr_target_rotation[sr_i] = sr_float1 sr_obj_number = sr_i * 8 IF DOES_OBJECT_EXIST sr_target[sr_obj_number] SET_OBJECT_ROTATION sr_target[sr_obj_number] sr_target_rotation[sr_i] 0.0 h ENDIF IF sr_target_rotation[sr_i] <= 0.0 SR_target_state[sr_i] = 2 sr_target_advance_time[sr_i] = TIMERA IF sr_range_level[sr_i] = 4 OR sr_range_level[sr_i] = 5 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT sr_target[sr_obj_number] SOUND_SHOOTING_RANGE_TARGET_MOVE_START // temp_audio_flag[sr_obj_number] = 3 ENDIF sr_j = 0 WHILE sr_j < 8 sr_obj_number = sr_i * 8 sr_obj_number += sr_j SET_OBJECT_COLLISION sr_target[sr_obj_number] TRUE sr_j ++ ENDWHILE ENDIF BREAK CASE 2 //move object IF SR_range_level[sr_i] = 4 sr_int1 = TIMERA - sr_target_advance_time[sr_i] IF SR_targets_created[sr_i] = 4 SR_targets_created[sr_i] = 1 ENDIF IF SR_targets_created[sr_i] = 1 IF sr_int1 > 12000 sr_int1 = 12000 sr_obj_number = sr_i * 8 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT sr_target[sr_obj_number] SOUND_SHOOTING_RANGE_TARGET_MOVE_STOP ENDIF ENDIF IF SR_targets_created[sr_i] = 2 IF sr_int1 > 9000 sr_int1 = 9000 sr_obj_number = sr_i * 8 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT sr_target[sr_obj_number] SOUND_SHOOTING_RANGE_TARGET_MOVE_STOP ENDIF ENDIF IF SR_targets_created[sr_i] = 3 IF sr_int1 > 6000 sr_int1 = 6000 sr_obj_number = sr_i * 8 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT sr_target[sr_obj_number] SOUND_SHOOTING_RANGE_TARGET_MOVE_STOP ENDIF ENDIF sr_float1 =# sr_int1 IF SR_targets_created[sr_i] = 1 sr_float1 /= 20000.0 ENDIF IF SR_targets_created[sr_i] = 2 sr_float1 /= 15000.0 ENDIF IF SR_targets_created[sr_i] = 3 sr_float1 /= 10000.0 ENDIF sr_float1 *= 10.0 sr_obj_number = sr_i * 8 GET_OBJECT_COORDINATES sr_target[sr_obj_number] x y z IF h = 90.0 x = booth_x[SR_range_id] x -= 15.0 x += sr_float1 ENDIF IF h = 270.0 x = booth_x[SR_range_id] x += 10.0 x -= sr_float1 ENDIF IF h = 0.0 y = booth_y[SR_range_id] y += 15.0 y -= sr_float1 IF SR_range_level[sr_i] = 2 y -= 2.5 ENDIF IF SR_range_level[sr_i] = 3 OR SR_range_level[sr_i] = 4 y -= 5.0 ENDIF ENDIF //set the target position sr_obj_number = sr_i * 8 SET_OBJECT_COORDINATES sr_target[sr_obj_number] x y z ENDIF IF SR_range_level[sr_i] = 5 sr_int1 = TIMERA - sr_target_advance_time[sr_i] IF sr_int1 > 10000 sr_int1 = 10000 SR_target_state[sr_i] = 3 sr_obj_number = sr_i * 8 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT sr_target[sr_obj_number] SOUND_SHOOTING_RANGE_TARGET_MOVE_STOP REPORT_MISSION_AUDIO_EVENT_AT_POSITION x y z SOUND_SHOOTING_RANGE_TARGET_DROP sr_target_advance_time[sr_i] = TIMERA sr_j = 0 WHILE sr_j < 8 sr_obj_number = sr_i * 8 sr_obj_number += sr_j SET_OBJECT_COLLISION sr_target[sr_obj_number] FALSE sr_j ++ ENDWHILE ENDIF sr_float1 =# sr_int1 sr_float1 /= 10000.0 sr_float1 *= booth_offset_2[SR_range_id] sr_obj_number = sr_i * 8 IF sr_direction = 0 sr_float3 = sr_float1 ELSE sr_float3 = booth_offset_2[SR_range_id] - sr_float1 ENDIF z = 4.0 sr_float4 = sr_yoffset + 5.0 GOSUB getWOrldXYZ SET_OBJECT_COORDINATES sr_target[sr_obj_number] x y z ENDIF sr_int1 = sr_destroyed_elements[sr_i] sr_destroyed_elements[sr_i] = 0 sr_j = 0 WHILE sr_j < 8 sr_obj_number = sr_i * 8 sr_obj_number += sr_j IF HAS_OBJECT_BEEN_DAMAGED sr_target[sr_obj_number] sr_destroyed_elements[sr_i] ++ ENDIF sr_j++ ENDWHILE IF sr_destroyed_elements[sr_i] > sr_int1 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT sr_target[sr_obj_number] SOUND_SHOOTING_RANGE_TARGET_SHATTER ENDIF IF sr_i = 1 IF sr_destroyed_elements[1] > sr_int1 sr_int2 = sr_destroyed_elements[1] - sr_int1 GENERATE_RANDOM_INT_IN_RANGE 0 2 sr_int1 IF sr_int1 = 0 IF NOT IS_CHAR_DEAD sr_ped[0] IF IS_CHAR_SHOOTING sr_ped[0] sr_score[0] += sr_int2 ELSE IF IS_CHAR_SHOOTING scplayer sr_score[1] += sr_int2 ELSE IF NOT IS_CHAR_DEAD sr_ped[2] IF IS_CHAR_SHOOTING sr_ped[2] sr_score[2] += sr_int2 ENDIF ENDIF ENDIF ENDIF ENDIF ELSE IF NOT IS_CHAR_DEAD sr_ped[2] IF IS_CHAR_SHOOTING sr_ped[2] sr_score[2] += sr_int2 ELSE IF IS_CHAR_SHOOTING scplayer sr_score[1] += sr_int2 ELSE IF NOT IS_CHAR_DEAD sr_ped[0] IF IS_CHAR_SHOOTING sr_ped[0] sr_score[0] += sr_int2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF sr_destroyed_elements[sr_i] = 7 sr_target_advance_time[sr_i] = TIMERA SR_target_state[sr_i] = 3 sr_obj_number = sr_i * 8 // temp_audio_flag[sr_obj_number] = 4 REPORT_MISSION_AUDIO_EVENT_AT_OBJECT sr_target[sr_obj_number] SOUND_SHOOTING_RANGE_TARGET_MOVE_STOP REPORT_MISSION_AUDIO_EVENT_AT_POSITION x y z SOUND_SHOOTING_RANGE_TARGET_DROP CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE SR_dec EVENT_SHOT_FIRED ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE SR_dec EVENT_SHOT_FIRED TASK_SIMPLE_LOOK_AT_ENTITY_OR_COORD 100.0 100.0 100.0 100.0 TRUE TRUE ENDIF BREAK CASE 3 //rotate object up sr_int1 = TIMERA - sr_target_advance_time[sr_i] IF sr_int1 > 2000 sr_int1 = 2000 ENDIF sr_float1 =# sr_int1 sr_float1 /= 2000.0 sr_float1 *= 90.0 sr_target_rotation[sr_i] = sr_float1 sr_obj_number = sr_i * 8 IF DOES_OBJECT_EXIST sr_target[sr_obj_number] SET_OBJECT_ROTATION sr_target[sr_obj_number] sr_target_rotation[sr_i] 0.0 h ENDIF IF sr_target_rotation[sr_i] >= 90.0 SR_target_state[sr_i] = 0 IF SR_range_level[sr_i] = 3 SR_range_level[sr_i] = 1 ELSE IF SR_range_level[sr_i] = 2 SR_range_level[sr_i] = 3 ELSE IF SR_range_level[sr_i] = 1 SR_range_level[sr_i] = 2 ENDIF ENDIF ENDIF ENDIF BREAK CASE 4 //force delete object sr_j = 0 WHILE sr_j < 8 sr_obj_number = sr_i * 8 sr_obj_number += sr_j IF DOES_OBJECT_EXIST sr_target[sr_j] REPORT_MISSION_AUDIO_EVENT_AT_OBJECT sr_target[sr_j] SOUND_SHOOTING_RANGE_TARGET_MOVE_STOP DELETE_OBJECT sr_target[sr_j] ENDIF sr_j++ ENDWHILE SR_target_state[sr_i] = 99 BREAK CASE 5 //rotate object up and delete sr_target_rotation[sr_i] += 1.0 sr_obj_number = sr_i * 8 IF DOES_OBJECT_EXIST sr_target[sr_obj_number] REPORT_MISSION_AUDIO_EVENT_AT_OBJECT sr_target[sr_obj_number] SOUND_SHOOTING_RANGE_TARGET_MOVE_STOP SET_OBJECT_ROTATION sr_target[sr_obj_number] sr_target_rotation[sr_i] 0.0 h ENDIF IF sr_target_rotation[sr_i] >= 90.0 SR_target_state[sr_i] = 4 ENDIF BREAK ENDSWITCH sr_i ++ ENDWHILE RETURN getWorldXYZ: COS range_heading[SR_range_id] SR_float1 SIN range_heading[SR_range_id] SR_float2 IF range_heading[SR_range_id] = 0.0 x = SR_float3 * SR_float1 y = SR_float4 * SR_float1 ELSE SR_float4 *= -1.0 x = SR_float4 * SR_float2 y = SR_float3 * SR_float2 ENDIF x += booth_x[SR_range_id] y += booth_y[SR_range_id] z += booth_z[SR_range_id] RETURN SR_cleanup: ADD_WIDGET_FLAG WIDGET_MISSION_CANCEL 16 // WIDGET_FLAG_DRAW_AFTER_FADE DELETE_CHAR SR_ped[0] DELETE_CHAR SR_ped[1] DELETE_CHAR SR_ped[2] CLEAR_ONSCREEN_COUNTER sr_Score[0] CLEAR_ONSCREEN_COUNTER sr_Score[1] CLEAR_ONSCREEN_COUNTER sr_Score[2] MARK_MODEL_AS_NO_LONGER_NEEDED target_head MARK_MODEL_AS_NO_LONGER_NEEDED target_larm MARK_MODEL_AS_NO_LONGER_NEEDED target_rarm MARK_MODEL_AS_NO_LONGER_NEEDED target_lleg MARK_MODEL_AS_NO_LONGER_NEEDED target_rleg MARK_MODEL_AS_NO_LONGER_NEEDED target_rtorso MARK_MODEL_AS_NO_LONGER_NEEDED target_ltorso MARK_MODEL_AS_NO_LONGER_NEEDED target_frame MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_MODEL_AS_NO_LONGER_NEEDED AK47 REMOVE_DECISION_MAKER sr_dec CLEAR_MISSION_AUDIO 4 sr_j = 0 WHILE sr_j < 24 IF DOES_OBJECT_EXIST sr_target[sr_j] DELETE_OBJECT sr_target[sr_j] ENDIF sr_j ++ ENDWHILE flag_shooting_range_mission = 0 flag_player_on_mission = 0 IF NOT IS_CHAR_DEAD scplayer FREEZE_CHAR_POSITION scplayer FALSE ENDIF TERMINATE_THIS_SCRIPT RETURN } MISSION_END MISSION_START // ***************************************************************************************** // ************************************* Gym L.A ******************************************* // ***************************************************************************************** // Mission start stuff SCRIPT_NAME gymls GOSUB mission_start_gymls SET_FADING_COLOUR 0 0 0 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_gymls_failed ENDIF GOSUB mission_cleanup_gymls MISSION_END { LVAR_INT boxer1_lsgym LVAR_INT boxer2_lsgym LVAR_INT boxer3_lsgym LVAR_INT spec_lsgym LVAR_INT sensei_lsgym LVAR_INT sensei1_lsgym LVAR_INT seq_punchbag1 LVAR_INT seq_punchbag2 LVAR_INT gym_hlth LVAR_INT gym_decision_none LVAR_INT gym_teach LVAR_INT gym_inside[3] LVAR_INT ls_has_move LVAR_INT ls_cheer[3] LVAR_INT seq_punchbag seq_boxer seq_dj LVAR_INT gymls_display LVAR_INT gym_help_txt LVAR_INT gym_decision_tough LVAR_INT gym_decision_norm LVAR_INT gymls_inside_ring VAR_INT ls_has_the_knuckle_duster LVAR_FLOAT gym_ls_muscle VAR_INT gym_ls_defeated LVAR_TEXT_LABEL ls_print LVAR_INT ls_audio LVAR_INT ls_playing LVAR_INT ls_cheering LVAR_INT ls_sfx // ****************************************Mission Start************************************ REGISTER_MISSION_GIVEN mission_start_gymls: IF NOT IS_CHAR_DEAD scplayer LISTEN_TO_PLAYER_GROUP_COMMANDS scplayer FALSE ENDIF flag_player_on_mission = 1 ls_has_the_knuckle_duster = 0 INCREMENT_INT_STAT VISITS_TO_GYM 1 gym_is_running = 1 LOAD_MISSION_TEXT GYM // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** REQUEST_MODEL vbmybox REQUEST_MODEL vwmybox REQUEST_MODEL BMYDJ REQUEST_ANIMATION RIOT REQUEST_ANIMATION FIGHT_B REQUEST_ANIMATION INT_SHOP REQUEST_ANIMATION GYMNASIUM LOAD_ALL_MODELS_NOW WHILE NOT HAS_ANIMATION_LOADED GYMNASIUM OR NOT HAS_MODEL_LOADED vbmybox OR NOT HAS_MODEL_LOADED vwmybox WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED BMYDJ OR NOT HAS_ANIMATION_LOADED RIOT OR NOT HAS_ANIMATION_LOADED FIGHT_B OR NOT HAS_ANIMATION_LOADED INT_SHOP WAIT 0 ENDWHILE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY gym_decision_none LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_NORM gym_decision_norm LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH gym_decision_tough SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_MISSION2 PEDTYPE_PLAYER1 CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE gym_decision_norm EVENT_GUN_AIMED_AT CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE gym_decision_tough EVENT_GUN_AIMED_AT CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE gym_decision_norm EVENT_DAMAGE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE gym_decision_norm EVENT_SHOT_FIRED CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE gym_decision_norm EVENT_ACQUAINTANCE_PED_DISLIKE CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE gym_decision_tough EVENT_ACQUAINTANCE_PED_DISLIKE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE gym_decision_norm EVENT_GUN_AIMED_AT TASK_SIMPLE_HANDS_UP 100.0 100.0 100.0 100.0 TRUE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE gym_decision_norm EVENT_DAMAGE TASK_SIMPLE_DUCK 100.0 100.0 100.0 100.0 TRUE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE gym_decision_norm EVENT_SHOT_FIRED TASK_SIMPLE_LOOK_AT_ENTITY_OR_COORD 100.0 100.0 100.0 100.0 TRUE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE gym_decision_tough EVENT_GUN_AIMED_AT TASK_SIMPLE_HANDS_UP 100.0 100.0 100.0 100.0 TRUE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE gym_decision_tough EVENT_SHOT_FIRED TASK_SIMPLE_LOOK_AT_ENTITY_OR_COORD 100.0 100.0 100.0 100.0 TRUE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE gym_decision_norm EVENT_ACQUAINTANCE_PED_DISLIKE TASK_SIMPLE_LOOK_AT_ENTITY_OR_COORD 0.0 100.0 0.0 0.0 TRUE TRUE ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE gym_decision_tough EVENT_ACQUAINTANCE_PED_DISLIKE TASK_SIMPLE_LOOK_AT_ENTITY_OR_COORD 0.0 100.0 0.0 0.0 TRUE TRUE // ************************************** Declare Variables Values *************************** OPEN_SEQUENCE_TASK seq_punchbag1 TASK_GO_TO_COORD_ANY_MEANS -1 762.8681 7.4928 999.7141 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 13.3401 TASK_PLAY_ANIM -1 RIOT_PUNCHES RIOT 4.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT seq_punchbag1 1 CLOSE_SEQUENCE_TASK seq_punchbag1 OPEN_SEQUENCE_TASK seq_dj TASK_GO_TO_COORD_ANY_MEANS -1 765.2909 16.0319 999.6980 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 198.8789 SET_SEQUENCE_TO_REPEAT seq_dj 1 CLOSE_SEQUENCE_TASK seq_dj OPEN_SEQUENCE_TASK seq_boxer TASK_GO_TO_COORD_ANY_MEANS -1 767.2571 14.4044 999.6998 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 263.2938 TASK_PLAY_ANIM -1 gymshadowbox GYMNASIUM 4.0 FALSE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT seq_boxer 1 CLOSE_SEQUENCE_TASK seq_boxer OPEN_SEQUENCE_TASK ls_cheer[0] TASK_PLAY_ANIM -1 RIOT_shout RIOT 4.0 FALSE FALSE FALSE FALSE -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_PAUSE -1 1000 SET_SEQUENCE_TO_REPEAT ls_cheer[0] 1 CLOSE_SEQUENCE_TASK ls_cheer[0] OPEN_SEQUENCE_TASK ls_cheer[1] TASK_PAUSE -1 500 TASK_PLAY_ANIM -1 RIOT_shout RIOT 4.0 FALSE FALSE FALSE FALSE -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer SET_SEQUENCE_TO_REPEAT ls_cheer[1] 1 CLOSE_SEQUENCE_TASK ls_cheer[1] OPEN_SEQUENCE_TASK ls_cheer[2] TASK_PAUSE -1 750 TASK_PLAY_ANIM -1 RIOT_shout RIOT 4.0 FALSE FALSE FALSE FALSE -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer SET_SEQUENCE_TO_REPEAT ls_cheer[2] 1 CLOSE_SEQUENCE_TASK ls_cheer[2] CREATE_CHAR PEDTYPE_MISSION2 vwmybox 761.6263 11.4876 1000.1639 boxer1_lsgym SET_CHAR_HEADING boxer1_lsgym 128.1297 SET_CHAR_DECISION_MAKER boxer1_lsgym gym_decision_norm SET_CHAR_ONLY_DAMAGED_BY_PLAYER boxer1_lsgym TRUE SHUT_CHAR_UP boxer1_lsgym TRUE CREATE_CHAR PEDTYPE_MISSION2 vwmybox 760.3430 10.1973 999.7099 boxer2_lsgym SET_CHAR_HEADING boxer2_lsgym 310.2206 SET_CHAR_DECISION_MAKER boxer2_lsgym gym_decision_norm SET_CHAR_ONLY_DAMAGED_BY_PLAYER boxer2_lsgym TRUE SHUT_CHAR_UP boxer1_lsgym TRUE OPEN_SEQUENCE_TASK seq_punchbag TASK_GO_TO_COORD_ANY_MEANS -1 761.6263 11.4876 1000.1639 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 128.1297 IF NOT IS_CHAR_DEAD boxer1_lsgym TASK_KILL_CHAR_ON_FOOT -1 boxer2_lsgym ENDIF SET_SEQUENCE_TO_REPEAT seq_punchbag 1 CLOSE_SEQUENCE_TASK seq_punchbag OPEN_SEQUENCE_TASK seq_punchbag2 TASK_GO_TO_COORD_ANY_MEANS -1 760.3430 10.1973 999.7099 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 310.2206 IF NOT IS_CHAR_DEAD boxer1_lsgym TASK_KILL_CHAR_ON_FOOT -1 boxer1_lsgym ENDIF SET_SEQUENCE_TO_REPEAT seq_punchbag2 1 CLOSE_SEQUENCE_TASK seq_punchbag2 PERFORM_SEQUENCE_TASK boxer1_lsgym seq_punchbag PERFORM_SEQUENCE_TASK boxer2_lsgym seq_punchbag2 // Dj ringside CREATE_CHAR PEDTYPE_MISSION2 BMYDJ 762.8681 7.4928 999.7141 spec_lsgym SET_CHAR_HEADING spec_lsgym 13.3401 PERFORM_SEQUENCE_TASK spec_lsgym seq_punchbag1 SET_CHAR_DECISION_MAKER spec_lsgym gym_decision_tough // Black Boxer CREATE_CHAR PEDTYPE_MISSION2 vbmybox 767.2571 14.4044 999.6998 sensei1_lsgym SET_CHAR_HEADING sensei1_lsgym 263.2938 SET_CHAR_DECISION_MAKER sensei1_lsgym gym_decision_tough PERFORM_SEQUENCE_TASK sensei1_lsgym seq_boxer GIVE_MELEE_ATTACK_TO_CHAR sensei1_lsgym MCOMBO_UNARMED_2 6 CLEAR_MISSION_AUDIO 4 LOAD_MISSION_AUDIO 4 SOUND_BANK_GYM WHILE NOT HAS_MISSION_AUDIO_LOADED 4 WAIT 0 ENDWHILE // ************************************** Main Mission Loop ********************************** TIMERA = 0 ls_playing = 2 IF gym_day > gym_final_day OR gym_month > gym_final_month gym_day_fitness = 0.0 ENDIF gymls_loop: WAIT 0 GOSUB ls_play_sample IF ls_has_move = 0 IF NOT IS_CHAR_DEAD boxer1_lsgym IF IS_CHAR_PLAYING_ANIM boxer1_lsgym gym_shadowbox SET_CHAR_ANIM_CURRENT_TIME boxer1_lsgym gymshadowbox 0.0 ENDIF ENDIF IF NOT IS_CHAR_DEAD boxer2_lsgym IF IS_CHAR_PLAYING_ANIM boxer2_lsgym gym_shadowbox SET_CHAR_ANIM_CURRENT_TIME boxer2_lsgym gymshadowbox 0.5 ENDIF ENDIF ls_has_move = 1 ENDIF // ********************************************************************************************************** // * * // * Player in ring fight * // * * // ********************************************************************************************************** IF IS_CHAR_DEAD boxer1_lsgym AND TIMERA > 20000 IF NOT IS_CHAR_DEAD boxer2_lsgym CLEAR_CHAR_TASKS boxer2_lsgym TASK_DUCK boxer2_lsgym 20000 TIMERA = 0 ENDIF ENDIF IF IS_CHAR_DEAD boxer2_lsgym AND TIMERA > 20000 IF NOT IS_CHAR_DEAD boxer1_lsgym CLEAR_CHAR_TASKS boxer1_lsgym TASK_DUCK boxer1_lsgym 20000 TIMERA = 0 ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_3D scplayer 760.8566 11.0630 1000.1639 3.0 3.0 2.0 FALSE IF gymls_inside_ring = 0 IF NOT IS_CHAR_DEAD boxer1_lsgym CLEAR_CHAR_TASKS_IMMEDIATELY boxer1_lsgym SET_CHAR_DECISION_MAKER boxer1_lsgym gym_decision_tough TASK_KILL_CHAR_ON_FOOT boxer1_lsgym scplayer ENDIF IF NOT IS_CHAR_DEAD boxer2_lsgym CLEAR_CHAR_TASKS_IMMEDIATELY boxer2_lsgym SET_CHAR_DECISION_MAKER boxer2_lsgym gym_decision_tough TASK_KILL_CHAR_ON_FOOT boxer2_lsgym scplayer ENDIF gymls_inside_ring = 1 ENDIF ELSE IF gymls_inside_ring = 1 IF NOT IS_CHAR_DEAD boxer1_lsgym AND NOT IS_CHAR_DEAD boxer2_lsgym CLEAR_CHAR_TASKS_IMMEDIATELY boxer1_lsgym SET_CHAR_DECISION_MAKER boxer1_lsgym gym_decision_norm PERFORM_SEQUENCE_TASK boxer1_lsgym seq_punchbag CLEAR_CHAR_TASKS_IMMEDIATELY boxer2_lsgym SET_CHAR_DECISION_MAKER boxer2_lsgym gym_decision_norm PERFORM_SEQUENCE_TASK boxer2_lsgym seq_punchbag2 ENDIF gymls_inside_ring = 0 ENDIF ENDIF // ********************************************************************************************************** // * * // * Clean Up * // * * // ********************************************************************************************************** GET_CHAR_AREA_VISIBLE scplayer main_visible_area IF main_visible_area = 0 GOTO mission_gymls_failed ENDIF // Black Boxer IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 767.1368 12.5110 999.7036 2.5 2.5 4.0 FALSE gym_inside[1] = 0 ENDIF // ********************************************************************************************************** // * * // * Black Boxer * // * * // ********************************************************************************************************** IF NOT IS_CHAR_DEAD sensei1_lsgym IF gym_inside[1] = 0 AND LOCATE_CHAR_ANY_MEANS_3D sensei1_lsgym 767.2571 14.4044 999.6998 1.0 1.0 1.2 FALSE IF LOCATE_STOPPED_CHAR_ANY_MEANS_3D scplayer 767.1368 12.5110 999.7036 0.6 0.6 1.0 TRUE ENDIF IF LOCATE_STOPPED_CHAR_ANY_MEANS_3D scplayer 767.1368 12.5110 999.7036 1.2 1.2 1.2 FALSE AND NOT IS_CHAR_DEAD sensei1_lsgym IF NOT IS_CHAR_DEAD sensei1_lsgym AND NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 OFF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY sensei1_lsgym TASK_TURN_CHAR_TO_FACE_CHAR sensei1_lsgym scplayer TASK_TURN_CHAR_TO_FACE_CHAR scplayer sensei1_lsgym ENDIF IF player_been_taught_move[1] = 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_BBOX_1 WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( BBOX_1 ) 3000 1 // Yo, you want to learn some new moves? ENDIF IF player_been_taught_move[1] = 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_BBOX_4 WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( BBOX_4 ) 3000 1 // Hey, you want to go a round with me? ENDIF PRINT_HELP_FOREVER ( TALK_1 ) //Press ~<~ to answer NO or ~>~ for YES WHILE NOT IS_CHAR_DEAD scplayer WAIT 0 //fuck you fuck you fuck you IS_WIDGET_RELEASED WIDGET_GANG_REGION IF IS_WIDGET_RELEASED WIDGET_POSITIVE GET_FLOAT_STAT BODY_MUSCLE gym_ls_muscle IF gym_ls_muscle > 349.0 gym_teach = 1 CLEAR_HELP GOTO gym_next_step_1 ELSE gym_teach = 0 gym_inside[1] = 1 CLEAR_HELP CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_BBOX_3 WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( BBOX_3 ) 3000 1 // Man, you're an embarrasment! Get yourself some muscles first! SET_PLAYER_CONTROL player1 ON IF NOT IS_CHAR_DEAD sensei1_lsgym PERFORM_SEQUENCE_TASK sensei1_lsgym seq_boxer ENDIF TIMERA = 0 gymls_display = 1 GOTO gymls_loop ENDIF ENDIF IF IS_WIDGET_RELEASED WIDGET_NEGATIVE gym_teach = 0 gym_inside[1] = 1 CLEAR_HELP CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_BBOX_2 WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( BBOX_2 ) 3000 1 // Suit yourself, holmes, but the streets are mean, dude! SET_PLAYER_CONTROL player1 ON IF NOT IS_CHAR_DEAD sensei1_lsgym PERFORM_SEQUENCE_TASK sensei1_lsgym seq_boxer ENDIF GOTO gymls_loop ENDIF ENDWHILE gym_next_step_1: CLEAR_HELP CLEAR_PRINTS SET_PLAYER_CYCLE_WEAPON_BUTTON player1 FALSE SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED GOSUB gym_fade_out DELETE_CHAR spec_lsgym DELETE_CHAR boxer1_lsgym DELETE_CHAR boxer2_lsgym CREATE_CHAR PEDTYPE_MISSION2 vwmybox 761.6934 4.2203 999.7099 boxer1_lsgym SET_CHAR_HEADING boxer1_lsgym 171.4614 PERFORM_SEQUENCE_TASK boxer1_lsgym ls_cheer[0] CREATE_CHAR PEDTYPE_MISSION2 vwmybox 764.7962 0.7163 999.7150 boxer2_lsgym SET_CHAR_HEADING boxer2_lsgym 93.8066 PERFORM_SEQUENCE_TASK boxer2_lsgym ls_cheer[1] CREATE_CHAR PEDTYPE_MISSION2 BMYDJ 759.5085 4.2343 999.7051 spec_lsgym SET_CHAR_HEADING spec_lsgym 189.7654 PERFORM_SEQUENCE_TASK spec_lsgym ls_cheer[2] IF NOT IS_CHAR_DEAD sensei1_lsgym SET_CHAR_COORDINATES_DONT_WARP_GANG sensei1_lsgym 762.6160 2.1235 1000.5942 SET_CHAR_HEADING sensei1_lsgym 135.5749 SET_CHAR_HEALTH sensei1_lsgym 1000 SET_CHAR_MAX_HEALTH sensei1_lsgym 1000 ENDIF IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 759.0147 -1.7235 1000.5942 SET_CHAR_HEADING scplayer 312.9747 ENDIF IF NOT IS_CHAR_DEAD sensei1_lsgym SET_CHAR_DECISION_MAKER sensei1_lsgym gym_decision_tough TASK_KILL_CHAR_ON_FOOT sensei1_lsgym scplayer // Give the boxer the moves GIVE_MELEE_ATTACK_TO_CHAR sensei1_lsgym MCOMBO_UNARMED_2 6 SET_CHAR_SHOOT_RATE sensei1_lsgym 100 ENDIF SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 ON IF player_been_taught_move[1] = 0 PRINT_HELP_FOREVER GYM1101 // Defeat your opponent to learn a new moves! ENDIF IF player_been_taught_move[1] = 1 PRINT_HELP_FOREVER GYM1_84 // Run and press ~m~~widget_attack~! ENDIF GOSUB gym_fade_in // ******************************************************************************************************************* // * * // * Fighting in the ring * // * * // ******************************************************************************************************************* TIMERA = 0 TIMERB = 0 IF HAS_MISSION_AUDIO_LOADED 4 AND NOT IS_CHAR_DEAD scplayer REPORT_MISSION_AUDIO_EVENT_AT_CHAR scplayer SOUND_GYM_BOXING_BELL ENDIF WHILE NOT IS_CHAR_DEAD scplayer WAIT 0 IF NOT IS_CHAR_DEAD boxer2_lsgym IF NOT LOCATE_CHAR_ANY_MEANS_3D boxer2_lsgym 761.0182 0.6609 1000.5942 6.0 6.0 6.0 FALSE GOTO ls_fight2_over ENDIF ENDIF IF NOT IS_CHAR_DEAD boxer1_lsgym IF TIMERB > 3000 AND ls_cheering = 0 // SET_CHAR_SAY_CONTEXT boxer1_lsgym CONTEXT_GLOBAL_BOXING_CHEER ls_sfx ls_cheering = 1 ENDIF TIMERB = 0 ENDIF IF NOT IS_CHAR_DEAD boxer2_lsgym IF TIMERB > 3000 AND ls_cheering = 1 // SET_CHAR_SAY_CONTEXT boxer2_lsgym CONTEXT_GLOBAL_BOXING_CHEER ls_sfx ls_cheering = 0 ENDIF TIMERB = 0 ENDIF IF player_been_taught_move[1] = 1 IF gym_help_txt = 0 TIMERA = 0 CLEAR_HELP PRINT_HELP_FOREVER ( GYM1_94 ) // While running, press ~m~~widget_attack~. gym_help_txt = 1 ENDIF IF NOT IS_GERMAN_GAME IF TIMERA > 6000 AND gym_help_txt = 1 CLEAR_HELP PRINT_HELP_FOREVER ( GYM195T ) // Attack a downed opponent by pressing ~m~~widget_attack~. TIMERA = 0 gym_help_txt = 2 ENDIF IF TIMERA > 6000 AND gym_help_txt = 2 CLEAR_HELP PRINT_HELP_FOREVER ( GYM1_96 ) // Press ~m~~widget_attack~ repeatedly. TIMERA = 0 gym_help_txt = 3 ENDIF ELSE IF TIMERA > 6000 AND gym_help_txt = 1 CLEAR_HELP PRINT_HELP_FOREVER ( GYM1_96 ) // Press ~m~~widget_attack~ repeatedly. TIMERA = 0 gym_help_txt = 3 ENDIF ENDIF IF TIMERA > 6000 AND gym_help_txt = 3 CLEAR_HELP TIMERA = 0 gym_help_txt = 0 ENDIF ENDIF IF IS_CHAR_DEAD sensei1_lsgym GOTO ls_fight2_over ENDIF ENDWHILE ls_fight2_over: CLEAR_HELP IF player_been_taught_move[1] = 1 GOTO gym_skip_cutscene ENDIF GOSUB gym_fade_out DELETE_CHAR sensei1_lsgym CLEAR_AREA 760.7445 0.6538 1000.5942 10.0 TRUE GOSUB gym_set_camera CREATE_CHAR PEDTYPE_MISSION2 vbmybox 762.6160 2.1235 1000.5942 sensei1_lsgym SET_CHAR_HEADING sensei1_lsgym 135.5749 SET_CHAR_DECISION_MAKER sensei1_lsgym gym_decision_none CLEAR_CHAR_TASKS_IMMEDIATELY sensei1_lsgym SET_CHAR_DECISION_MAKER sensei1_lsgym gym_decision_none GIVE_MELEE_ATTACK_TO_CHAR sensei1_lsgym MCOMBO_UNARMED_2 6 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 759.0147 -1.7235 1000.5942 SET_CHAR_HEADING scplayer 312.9747 ENDIF DELETE_CHAR boxer1_lsgym DELETE_CHAR boxer2_lsgym DELETE_CHAR spec_lsgym SET_FIXED_CAMERA_POSITION 764.0964 -4.8216 1003.0615 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 763.5206 -4.0516 1002.7866 JUMP_CUT GOSUB gym_fade_in PRINT_NOW ( BBOX_5 ) 4000 1 // Heres the new moves watch and learn // ****************************** Audio ********************************************************* CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_BBOX_5 // Pay attention and you might learn something. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 // ********************************************************************************************** WAIT 1000 TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE SET_FIXED_CAMERA_POSITION 762.5212 -0.4172 1001.8427 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 762.5431 0.5793 1001.7621 JUMP_CUT PRINT_NOW ( GYM1_97 ) 2000 1 // Running Attack TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE // ****************************** Audio ********************************************************* CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_BBOX_6 // Charge in and battter your opponent! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 // ********************************************************************************************** PRINT_NOW ( GYM1_94 ) 4000 1 // While running, press ~m~~widget_attack~. TIMERA = 0 WHILE TIMERA < 4000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE IF NOT IS_CHAR_DEAD sensei1_lsgym TASK_PLAY_ANIM sensei1_lsgym FIGHTB_M FIGHT_B 4.0 FALSE TRUE TRUE FALSE -1 ENDIF IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer fucku PED 4.0 FALSE TRUE TRUE FALSE -1 ENDIF TIMERA = 0 WHILE TIMERA < 3000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE IF NOT IS_GERMAN_GAME SET_FIXED_CAMERA_POSITION 759.6699 1.9955 1001.0680 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 760.6637 2.0051 1001.1784 JUMP_CUT PRINT_NOW ( GYM1_98 ) 2000 1 // Ground Attack TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE // ****************************** Audio ********************************************************* CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_BBOX_7 // Make sure your opponent is down AND out! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 // ********************************************************************************************** PRINT_NOW ( GYM195T ) 4000 1 // Attack a downed opponent by pressing ~m~~widget_attack~. TIMERA = 0 WHILE TIMERA < 4000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE IF NOT IS_CHAR_DEAD sensei1_lsgym TASK_PLAY_ANIM sensei1_lsgym FIGHTB_G FIGHT_B 4.0 FALSE TRUE TRUE FALSE -1 ENDIF IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer fucku PED 4.0 FALSE TRUE TRUE FALSE -1 ENDIF TIMERA = 0 WHILE TIMERA < 3000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE ENDIF SET_FIXED_CAMERA_POSITION 764.5368 3.1767 1002.3495 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 763.7495 2.6046 1002.1198 JUMP_CUT PRINT_NOW ( GYM1_99 ) 2000 1 // Combo Attack TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE // ****************************** Audio ********************************************************* CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_BBOX_8 // Never give your opponent time to recover! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 // ********************************************************************************************** PRINT_NOW ( GYM1_96 ) 4000 1 // Press ~m~~widget_attack~ repeatedly. TIMERA = 0 WHILE TIMERA < 4000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE IF NOT IS_CHAR_DEAD sensei1_lsgym FREEZE_CHAR_POSITION sensei1_lsgym TRUE // TASK_PLAY_ANIM_WITH_FLAGS sensei1_lsgym FIGHTB_3 FIGHT_B 4.0 FALSE FALSE FALSE FALSE -1 FALSE TRUE TASK_PLAY_ANIM sensei1_lsgym FIGHTB_3 FIGHT_B 4.0 FALSE TRUE TRUE FALSE -1 ENDIF IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer fucku PED 4.0 FALSE FALSE FALSE TRUE -1 ENDIF TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE gym_skip_cutscene: DELETE_CHAR spec_lsgym DELETE_CHAR boxer1_lsgym DELETE_CHAR boxer2_lsgym GOSUB gym_fade_out CREATE_CHAR PEDTYPE_MISSION2 vwmybox 761.6263 11.4876 1000.1639 boxer1_lsgym SET_CHAR_HEADING boxer1_lsgym 128.1297 SET_CHAR_DECISION_MAKER boxer1_lsgym gym_decision_norm SET_CHAR_ONLY_DAMAGED_BY_PLAYER boxer1_lsgym TRUE SHUT_CHAR_UP boxer1_lsgym TRUE CREATE_CHAR PEDTYPE_MISSION2 vwmybox 760.3430 10.1973 999.7099 boxer2_lsgym SET_CHAR_HEADING boxer2_lsgym 310.2206 SET_CHAR_DECISION_MAKER boxer2_lsgym gym_decision_norm SET_CHAR_ONLY_DAMAGED_BY_PLAYER boxer2_lsgym TRUE SHUT_CHAR_UP boxer1_lsgym TRUE PERFORM_SEQUENCE_TASK boxer1_lsgym seq_punchbag PERFORM_SEQUENCE_TASK boxer2_lsgym seq_punchbag2 CREATE_CHAR PEDTYPE_MISSION2 BMYDJ 762.8681 7.4928 999.7141 spec_lsgym SET_CHAR_HEADING spec_lsgym 13.3401 PERFORM_SEQUENCE_TASK spec_lsgym seq_punchbag1 SET_CHAR_DECISION_MAKER spec_lsgym gym_decision_tough DELETE_CHAR sensei1_lsgym // Black Boxer CREATE_CHAR PEDTYPE_MISSION2 vbmybox 767.2571 14.4044 999.6998 sensei1_lsgym SET_CHAR_HEADING sensei1_lsgym 263.2938 SET_CHAR_DECISION_MAKER sensei1_lsgym gym_decision_tough PERFORM_SEQUENCE_TASK sensei1_lsgym seq_boxer GIVE_MELEE_ATTACK_TO_CHAR sensei1_lsgym MCOMBO_UNARMED_2 6 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 765.6662 2.7963 999.7180 SET_CHAR_HEADING scplayer 277.3348 ENDIF GOSUB gym_restore_camera GOSUB gym_fade_in IF gym_ls_defeated = 0 PLAYER_MADE_PROGRESS 1 gym_ls_defeated = 1 ENDIF // Give the player the moves GIVE_MELEE_ATTACK_TO_CHAR scplayer MCOMBO_UNARMED_2 6 IF player_been_taught_move[1] = 0 PRINT_NOW ( GYM1_93 ) 3000 1 // New moves learned! ENDIF player_been_taught_move[0] = 0 player_been_taught_move[1] = 1 player_been_taught_move[2] = 0 SET_PLAYER_CYCLE_WEAPON_BUTTON player1 TRUE ENDIF ENDIF ENDIF GOTO gymls_loop mission_gymls_failed: RETURN // mission gymls 1 passed mission_gymls_passed: PRINT_WITH_NUMBER_BIG M_PASS 30000 5000 1 ADD_SCORE player1 30000 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 RETURN // mission cleanup mission_cleanup_gymls: IF NOT IS_CHAR_DEAD scplayer LISTEN_TO_PLAYER_GROUP_COMMANDS scplayer TRUE ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED vbmybox MARK_MODEL_AS_NO_LONGER_NEEDED vwmybox MARK_MODEL_AS_NO_LONGER_NEEDED BMYDJ REMOVE_ANIMATION GYMNASIUM REMOVE_ANIMATION RIOT REMOVE_ANIMATION FIGHT_B REMOVE_ANIMATION INT_SHOP CLEAR_MISSION_AUDIO 4 gym_is_running = 0 flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN gym_set_camera: CLEAR_HELP CLEAR_PRINTS SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 TRUE RETURN gym_restore_camera: CLEAR_HELP CLEAR_PRINTS SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT SET_EVERYONE_IGNORE_PLAYER player1 FALSE RETURN gym_fade_out: DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS DO_FADE 1 FADE_OUT ENDIF ENDWHILE RETURN gym_fade_in: DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN ls_load_sample: CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 ls_audio ls_playing = 0 RETURN ls_play_sample: IF HAS_MISSION_AUDIO_LOADED 1 AND ls_playing = 0 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $ls_print ) 10000 1 ls_playing = 1 ENDIF IF HAS_MISSION_AUDIO_FINISHED 1 AND ls_playing = 1 CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT $ls_print ls_playing = 2 ENDIF RETURN } MISSION_START // ***************************************************************************************** // ************************************* Gym L.A ******************************************* // ***************************************************************************************** // ************************************ Paul Davis ***************************************** // ***************************************************************************************** // Mission start stuff OMYKARA WMYKARA SCRIPT_NAME gymsf DO_FADE 0 FADE_OUT GOSUB mission_start_gymsf SET_FADING_COLOUR 0 0 0 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_gymsf_failed ENDIF GOSUB mission_cleanup_gymsf MISSION_END { LVAR_INT SF_white_boxer LVAR_INT SF_black_boxer LVAR_INT SF_boxer_A LVAR_INT SF_boxer_B LVAR_INT SF_DJ LVAR_INT gym_hlth LVAR_INT gym_decision_none LVAR_INT gym_decision_tough LVAR_INT seq_fight_a seq_fight_b LVAR_INT gymsf_teach LVAR_INT gymsf_inside[3] LVAR_INT sf_seq_dj_boxer sf_seq_black_boxer sf_seq_white_boxer LVAR_INT sf_has_move LVAR_INT seq_punchbag seq_punchbag1 seq_punchbag2 LVAR_INT gymsf_display LVAR_INT gymsf_help_txt LVAR_INT gym_decision LVAR_INT sf_left_ring LVAR_FLOAT gym_sf_muscle VAR_INT gym_sf_defeated player_been_taught_move[3] LVAR_TEXT_LABEL sf_print LVAR_INT sf_audio LVAR_INT sf_playing // ****************************************Mission Start************************************ REGISTER_MISSION_GIVEN mission_start_gymsf: IF NOT IS_CHAR_DEAD scplayer LISTEN_TO_PLAYER_GROUP_COMMANDS scplayer FALSE ENDIF gym_is_running = 1 sf_playing = 2 flag_player_on_mission = 1 INCREMENT_INT_STAT VISITS_TO_GYM 1 LOAD_MISSION_TEXT GYM // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** REQUEST_MODEL WMYJG REQUEST_MODEL OMYKARA REQUEST_MODEL WMYlG REQUEST_MODEL OMOkung REQUEST_MODEL WMYKARA WHILE NOT HAS_MODEL_LOADED WMYJG OR NOT HAS_MODEL_LOADED OMYKARA OR NOT HAS_MODEL_LOADED WMYlG OR NOT HAS_MODEL_LOADED OMOkung OR NOT HAS_MODEL_LOADED WMYKARA WAIT 0 ENDWHILE REQUEST_ANIMATION PARK REQUEST_ANIMATION FIGHT_C REQUEST_ANIMATION GYMNASIUM WHILE NOT HAS_ANIMATION_LOADED PARK OR NOT HAS_ANIMATION_LOADED FIGHT_C OR NOT HAS_ANIMATION_LOADED GYMNASIUM WAIT 0 ENDWHILE CLEAR_MISSION_AUDIO 4 LOAD_MISSION_AUDIO 4 SOUND_BANK_GYM WHILE NOT HAS_MISSION_AUDIO_LOADED 4 WAIT 0 ENDWHILE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY gym_decision_none LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_NORM gym_decision LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH gym_decision_tough // ************************************** Declare Variables Values *************************** // DJ OPEN_SEQUENCE_TASK seq_punchbag TASK_GO_TO_COORD_ANY_MEANS -1 768.0640 -41.5728 999.6865 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 358.0992 TASK_LOOK_ABOUT -1 -2 CLOSE_SEQUENCE_TASK seq_punchbag // Black Boxer OPEN_SEQUENCE_TASK seq_punchbag1 TASK_GO_TO_COORD_ANY_MEANS -1 770.3961 -23.0853 999.5938 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 87.3049 TASK_PLAY_ANIM -1 Tai_Chi_Loop PARK 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK seq_punchbag1 // White Boxer OPEN_SEQUENCE_TASK seq_punchbag2 TASK_PAUSE -1 1000 TASK_GO_TO_COORD_ANY_MEANS -1 766.3062 -23.0554 999.5938 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 272.4196 TASK_PLAY_ANIM -1 Tai_Chi_Loop PARK 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK seq_punchbag2 OPEN_SEQUENCE_TASK seq_fight_a TASK_PAUSE -1 1000 TASK_GO_TO_COORD_ANY_MEANS -1 769.8199 -36.4933 999.6865 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 88.5480 TASK_PLAY_ANIM -1 FightC_IDLE FIGHT_C 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT seq_fight_a 1 CLOSE_SEQUENCE_TASK seq_fight_a OPEN_SEQUENCE_TASK seq_fight_b TASK_GO_TO_COORD_ANY_MEANS -1 767.0570 -37.0465 999.6865 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 270.0000 TASK_PLAY_ANIM -1 FightC_IDLE FIGHT_C 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT seq_fight_b 1 CLOSE_SEQUENCE_TASK seq_fight_b // **************************************************************************************** // * Dj Boxer * // **************************************************************************************** OPEN_SEQUENCE_TASK sf_seq_dj_boxer TASK_GO_TO_COORD_ANY_MEANS -1 768.0640 -41.5728 999.6865 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 358.0992 TASK_LOOK_ABOUT -1 -2 SET_SEQUENCE_TO_REPEAT sf_seq_dj_boxer 1 CLOSE_SEQUENCE_TASK sf_seq_dj_boxer // DJ CREATE_CHAR PEDTYPE_CIVMALE OMOkung 768.0640 -41.5728 999.6865 SF_DJ SET_CHAR_HEADING SF_DJ 358.0992 PERFORM_SEQUENCE_TASK SF_DJ sf_seq_dj_boxer SET_CHAR_DECISION_MAKER SF_DJ gym_decision GIVE_MELEE_ATTACK_TO_CHAR SF_DJ MCOMBO_UNARMED_3 6 // **************************************************************************************** // * Black Boxer * // **************************************************************************************** OPEN_SEQUENCE_TASK sf_seq_black_boxer TASK_GO_TO_COORD_ANY_MEANS -1 770.3961 -23.0853 999.5938 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 87.3049 TASK_PLAY_ANIM -1 Tai_Chi_Loop PARK 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT sf_seq_black_boxer 1 CLOSE_SEQUENCE_TASK sf_seq_black_boxer // Black Boxer CREATE_CHAR PEDTYPE_CIVMALE WMYJG 770.3961 -23.0853 999.5938 SF_black_boxer SET_CHAR_HEADING SF_black_boxer 87.3049 PERFORM_SEQUENCE_TASK SF_black_boxer sf_seq_black_boxer SET_CHAR_DECISION_MAKER SF_black_boxer gym_decision_tough GIVE_MELEE_ATTACK_TO_CHAR SF_black_boxer MCOMBO_UNARMED_3 6 // **************************************************************************************** // * White Boxer * // **************************************************************************************** OPEN_SEQUENCE_TASK sf_seq_white_boxer TASK_PAUSE -1 1000 TASK_GO_TO_COORD_ANY_MEANS -1 766.3062 -23.0554 999.5938 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 272.4196 TASK_PLAY_ANIM -1 Tai_Chi_Loop PARK 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT sf_seq_white_boxer 1 CLOSE_SEQUENCE_TASK sf_seq_white_boxer // White Boxer CREATE_CHAR PEDTYPE_CIVMALE WMYlG 766.3062 -23.0554 999.5938 SF_white_boxer SET_CHAR_HEADING SF_white_boxer 272.4196 PERFORM_SEQUENCE_TASK SF_white_boxer sf_seq_white_boxer SET_CHAR_DECISION_MAKER SF_white_boxer gym_decision_tough GIVE_MELEE_ATTACK_TO_CHAR SF_white_boxer MCOMBO_UNARMED_3 6 // **************************************************************************************** // * Others * // **************************************************************************************** // Boxer A CREATE_CHAR PEDTYPE_CIVMALE OMYKARA 769.8199 -36.4933 999.6865 SF_boxer_A SET_CHAR_HEADING SF_boxer_A 95.1885 PERFORM_SEQUENCE_TASK SF_boxer_A seq_fight_a SET_CHAR_DECISION_MAKER SF_boxer_A gym_decision_tough GIVE_MELEE_ATTACK_TO_CHAR SF_boxer_A MCOMBO_UNARMED_3 6 // Boxer B CREATE_CHAR PEDTYPE_CIVMALE WMYKARA 766.1017 -37.3952 999.6865 SF_boxer_B SET_CHAR_HEADING SF_boxer_B 271.1251 PERFORM_SEQUENCE_TASK SF_boxer_B seq_fight_b SET_CHAR_DECISION_MAKER SF_boxer_B gym_decision_tough GIVE_MELEE_ATTACK_TO_CHAR SF_boxer_B MCOMBO_UNARMED_3 6 // ************************************** Main Mission Loop ********************************** GOSUB gymsf_fade_in IF gym_day > gym_final_day OR gym_month > gym_final_month gym_day_fitness = 0.0 ENDIF gymsf_loop: WAIT 0 GOSUB sf_play_sample IF sf_has_move = 0 IF NOT IS_CHAR_DEAD SF_boxer_B IF IS_CHAR_PLAYING_ANIM SF_boxer_B FightC_Spar SET_CHAR_ANIM_CURRENT_TIME SF_boxer_B FightC_Spar 0.45 sf_has_move = 1 ENDIF ENDIF ENDIF // ********************************************************************************************************** // * * // * Clean Up * // * * // ********************************************************************************************************** GET_CHAR_AREA_VISIBLE scplayer main_visible_area IF main_visible_area = 0 GOTO mission_gymsf_failed ENDIF // ********************************************************************************************************** // * * // * Reset Locates * // * * // ********************************************************************************************************** // Dj Boxer IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 769.7938 -42.1122 999.6865 2.5 2.5 4.0 FALSE gymsf_inside[2] = 0 ENDIF // ********************************************************************************************************** // * * // * DJ * // * * // ********************************************************************************************************** IF NOT IS_CHAR_DEAD SF_DJ IF gymsf_inside[2] = 0 AND LOCATE_CHAR_ANY_MEANS_3D SF_DJ 768.0640 -41.5728 999.6865 1.0 1.0 1.2 FALSE IF LOCATE_STOPPED_CHAR_ANY_MEANS_3D scplayer 769.7938 -42.1122 999.6865 0.6 0.6 1.0 TRUE ENDIF IF LOCATE_STOPPED_CHAR_ANY_MEANS_3D scplayer 769.7938 -42.1122 999.6865 1.2 1.2 1.2 FALSE AND NOT IS_CHAR_DEAD SF_DJ IF NOT IS_CHAR_DEAD SF_DJ AND NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 OFF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer TASK_TURN_CHAR_TO_FACE_CHAR SF_DJ scplayer TASK_TURN_CHAR_TO_FACE_CHAR scplayer SF_DJ ENDIF IF player_been_taught_move[0] = 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_KUNG_1 WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( KUNG_1 ) 3000 1 // So, you wish to become a warrior! ENDIF IF player_been_taught_move[0] = 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_KUNG_4 WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( KUNG_4 ) 3000 1 // Would you like to spar with your master? // PRINT_NOW ( GYM1_82 ) 7000 1 // Do you want to spar? ENDIF PRINT_HELP_FOREVER ( GYM1_73 ) //Press ~<~ to answer NO or ~>~ for YES WHILE NOT IS_CHAR_DEAD scplayer WAIT 0 //fuck you fuck you fuck you IS_WIDGET_RELEASED WIDGET_GANG_REGION // YES IF IS_WIDGET_RELEASED WIDGET_POSITIVE GET_FLOAT_STAT BODY_MUSCLE gym_sf_muscle IF gym_sf_muscle > 349.0 gymsf_teach = 1 CLEAR_HELP GOTO gymsf_next_step2 ELSE gymsf_teach = 0 gymsf_inside[2] = 1 CLEAR_HELP CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_KUNG_3 WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( KUNG_3 ) 3000 1 // You are weak, like a wilted weed! Condition your body! // PRINT_NOW ( GYM1_91 ) 5000 1 // Your too weak to fight me, build some muscles and come back. SET_PLAYER_CONTROL player1 ON TIMERA = 0 gymsf_display = 1 GOTO gymsf_loop ENDIF ENDIF // NO IF IS_WIDGET_RELEASED WIDGET_NEGATIVE gymsf_teach = 0 gymsf_inside[2] = 1 CLEAR_HELP CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_KUNG_2 WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( KUNG_2 ) 3000 1 // You are weak, like a wilted weed! Condition your body! // PRINT_NOW ( GYM1_75 ) 3000 1 // Ok, I can see your in a hurry IF NOT IS_CHAR_DEAD SF_DJ PERFORM_SEQUENCE_TASK SF_DJ sf_seq_dj_boxer ENDIF SET_PLAYER_CONTROL player1 ON GOTO gymsf_loop ENDIF ENDWHILE CLEAR_HELP gymsf_next_step2: CLEAR_HELP CLEAR_PRINTS SET_PLAYER_CYCLE_WEAPON_BUTTON player1 FALSE SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED IF gymsf_teach = 1 GOSUB gymsf_fade_out DELETE_CHAR SF_boxer_A DELETE_CHAR SF_boxer_B IF NOT IS_CHAR_DEAD SF_DJ SET_CHAR_COORDINATES_DONT_WARP_GANG SF_DJ 771.4357 -36.9728 999.6865 SET_CHAR_HEADING SF_DJ 88.1801 SET_CHAR_HEALTH SF_DJ 1000 SET_CHAR_MAX_HEALTH SF_DJ 1000 ENDIF IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 764.6453 -37.1052 999.6865 SET_CHAR_HEADING scplayer 273.9816 ENDIF IF NOT IS_CHAR_DEAD SF_DJ SET_CHAR_DECISION_MAKER SF_DJ gym_decision_tough TASK_KILL_CHAR_ON_FOOT SF_DJ scplayer // Give the boxer the moves GIVE_MELEE_ATTACK_TO_CHAR SF_DJ MCOMBO_UNARMED_3 6 SET_CHAR_SHOOT_RATE SF_DJ 100 ENDIF SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 ON IF player_been_taught_move[0] = 0 PRINT_HELP_FOREVER ( GYM1106 ) // Defeat your opponent to learn new moves if you leave the ring you lose! ENDIF IF player_been_taught_move[0] = 1 PRINT_HELP_FOREVER GYM1_84 // Run and press ~m~~widget_attack~! ENDIF GOSUB gymsf_fade_in sf_left_ring = 0 // ******************************************************************************************************************* // * * // * Fighting in the ring * // * * // ******************************************************************************************************************* IF HAS_MISSION_AUDIO_LOADED 4 AND NOT IS_CHAR_DEAD scplayer REPORT_MISSION_AUDIO_EVENT_AT_CHAR scplayer SOUND_GYM_BOXING_BELL ENDIF WHILE NOT IS_CHAR_DEAD scplayer WAIT 0 IF player_been_taught_move[0] = 1 IF gymsf_help_txt = 0 TIMERA = 0 CLEAR_HELP PRINT_HELP_FOREVER ( GYM1_94 ) // While running, press ~m~~widget_attack~. gymsf_help_txt = 1 ENDIF IF NOT IS_GERMAN_GAME IF TIMERA > 6000 AND gymsf_help_txt = 1 CLEAR_HELP PRINT_HELP_FOREVER ( GYM195T ) // Attack a downed opponent by pressing ~m~~widget_attack~. TIMERA = 0 gymsf_help_txt = 2 ENDIF IF TIMERA > 6000 AND gymsf_help_txt = 2 CLEAR_HELP PRINT_HELP_FOREVER ( GYM1_96 ) // Press ~m~~widget_attack~ repeatedly. TIMERA = 0 gymsf_help_txt = 3 ENDIF ELSE IF TIMERA > 6000 AND gymsf_help_txt = 1 CLEAR_HELP PRINT_HELP_FOREVER ( GYM1_96 ) // Press ~m~~widget_attack~ repeatedly. TIMERA = 0 gymsf_help_txt = 3 ENDIF ENDIF IF TIMERA > 6000 AND gymsf_help_txt = 3 CLEAR_HELP TIMERA = 0 gymsf_help_txt = 0 ENDIF ENDIF IF NOT IS_CHAR_DEAD SF_DJ IF NOT LOCATE_CHAR_ANY_MEANS_3D SF_DJ 768.4611 -36.6685 999.6865 6.0 6.0 6.0 FALSE GOTO sf_fight2_over ENDIF ENDIF IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 768.4611 -36.6685 999.6865 6.0 6.0 6.0 FALSE GOSUB gymsf_fade_out //DELETE_CHAR SF_DJ // DJ //CREATE_CHAR PEDTYPE_CIVMALE OMOkung 768.0640 -41.5728 999.6865 SF_DJ // 3master - just move this dude so he doesn't get recreated with new clothes SET_CHAR_COORDINATES SF_DJ 768.0640 -41.5728 999.6865 SET_CHAR_HEADING SF_DJ 358.0992 PERFORM_SEQUENCE_TASK SF_DJ sf_seq_dj_boxer SET_CHAR_DECISION_MAKER SF_DJ gym_decision_tough GIVE_MELEE_ATTACK_TO_CHAR SF_DJ MCOMBO_UNARMED_3 6 // **************************************************************************************** // * Others * // **************************************************************************************** // Boxer A CREATE_CHAR PEDTYPE_CIVMALE OMYKARA 769.8199 -36.4933 999.6865 SF_boxer_A SET_CHAR_HEADING SF_boxer_A 95.1885 PERFORM_SEQUENCE_TASK SF_boxer_A seq_fight_a SET_CHAR_DECISION_MAKER SF_boxer_A gym_decision_tough GIVE_MELEE_ATTACK_TO_CHAR SF_boxer_A MCOMBO_UNARMED_3 6 // Boxer B CREATE_CHAR PEDTYPE_CIVMALE WMYKARA 766.1017 -37.3952 999.6865 SF_boxer_B SET_CHAR_HEADING SF_boxer_B 271.1251 PERFORM_SEQUENCE_TASK SF_boxer_B seq_fight_b SET_CHAR_DECISION_MAKER SF_boxer_B gym_decision_tough GIVE_MELEE_ATTACK_TO_CHAR SF_boxer_B MCOMBO_UNARMED_3 6 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 762.7560 -37.2153 999.6865 SET_CHAR_HEADING scplayer 90.0000 SET_PLAYER_CONTROL player1 ON ENDIF CLEAR_PRINTS CLEAR_HELP GOSUB gymsf_fade_in IF player_been_taught_move[0] = 0 PRINT_NOW ( GYM1_92 ) 5000 1 // ~r~You left the ring and forfeited ENDIF GOTO gymsf_loop ENDIF IF IS_CHAR_DEAD SF_DJ GOTO sf_fight2_over ENDIF ENDWHILE sf_fight2_over: CLEAR_HELP IF player_been_taught_move[0] = 1 GOSUB gymsf_fade_out GOTO gymsf_skip_cutscene ENDIF GOSUB gymsf_fade_out //DELETE_CHAR SF_DJ CLEAR_AREA 768.1746 -36.6986 999.6865 5.0 TRUE // DJ //CREATE_CHAR PEDTYPE_CIVMALE OMOkung 768.0640 -41.5728 999.6865 SF_DJ // 3master - just move this dude so he doesn't get recreated with new clothes SET_CHAR_COORDINATES SF_DJ 768.0640 -41.5728 999.6865 SET_CHAR_HEADING SF_DJ 358.0992 SET_CHAR_DECISION_MAKER SF_DJ gym_decision_none IF NOT IS_CHAR_DEAD SF_DJ SET_CHAR_COORDINATES_DONT_WARP_GANG SF_DJ 771.4357 -36.9728 999.6865 SET_CHAR_HEADING SF_DJ 88.1801 ENDIF IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 764.6453 -37.1052 999.6865 SET_CHAR_HEADING scplayer 273.9816 ENDIF IF NOT IS_CHAR_DEAD SF_DJ SET_CHAR_DECISION_MAKER SF_DJ DM_PED_EMPTY ENDIF GOSUB gymsf_set_camera SET_FIXED_CAMERA_POSITION 762.8773 -35.4754 1001.5452 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 763.8198 -35.7030 1001.3005 JUMP_CUT GOSUB gymsf_fade_in PRINT_NOW ( KUNG_5 ) 4000 1 // Heres the new moves watch and learn // ****************************** Audio ********************************************************* CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_KUNG_5 // Absorb with the eyes, young student, and you will learn! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 // ********************************************************************************************** WAIT 1000 TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE SET_FIXED_CAMERA_POSITION 767.4280 -39.4061 1000.4160 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 768.1919 -38.7609 1000.4003 JUMP_CUT PRINT_NOW ( GYM1_97 ) 2000 1 // Running Attack TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE // ****************************** Audio ********************************************************* CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_KUNG_6 // Strike like an atomic cobra! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 // ********************************************************************************************** PRINT_NOW ( GYM1_94 ) 4000 1 // While running, press ~m~~widget_attack~. TIMERA = 0 WHILE TIMERA < 4000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE IF NOT IS_CHAR_DEAD SF_DJ TASK_PLAY_ANIM SF_DJ FIGHTC_M FIGHT_C 4.0 FALSE TRUE TRUE FALSE -1 ENDIF IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer fucku PED 4.0 FALSE TRUE TRUE FALSE -1 ENDIF TIMERA = 0 WHILE TIMERA < 3000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE IF NOT IS_GERMAN_GAME SET_FIXED_CAMERA_POSITION 768.0062 -35.1731 1000.2761 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 768.7570 -35.8325 1000.3144 JUMP_CUT PRINT_NOW ( GYM1_98 ) 2000 1 // Ground Attack TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE // ****************************** Audio ********************************************************* CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_KUNG_7 // Nothing clever here, just kick’em while they’re down! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 // ********************************************************************************************** PRINT_NOW ( GYM195T ) 4000 1 // Attack a downed opponent by pressing ~m~~widget_attack~. TIMERA = 0 WHILE TIMERA < 4000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE IF NOT IS_CHAR_DEAD SF_DJ TASK_PLAY_ANIM SF_DJ FIGHTC_G FIGHT_C 4.0 FALSE TRUE TRUE FALSE -1 ENDIF IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer fucku PED 4.0 FALSE TRUE TRUE FALSE -1 ENDIF TIMERA = 0 WHILE TIMERA < 3000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE ENDIF SET_FIXED_CAMERA_POSITION 772.6448 -38.0110 1000.4780 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 771.6790 -37.7522 1000.4850 JUMP_CUT PRINT_NOW ( GYM1_99 ) 2000 1 // Combo Attack TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE // ****************************** Audio ********************************************************* CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_KUNG_8 // Become the avalanche and bury your opponent! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 // ********************************************************************************************** PRINT_NOW ( GYM1_96 ) 4000 1 // Press ~m~~widget_attack~ repeatedly. TIMERA = 0 WHILE TIMERA < 4000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE IF NOT IS_CHAR_DEAD SF_DJ FREEZE_CHAR_POSITION SF_DJ TRUE TASK_PLAY_ANIM SF_DJ FIGHTC_3 FIGHT_C 4.0 FALSE TRUE TRUE FALSE -1 ENDIF IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer fucku PED 4.0 FALSE FALSE FALSE TRUE -1 ENDIF TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE gymsf_skip_cutscene: GOSUB gymsf_fade_out //DELETE_CHAR SF_DJ // DJ //CREATE_CHAR PEDTYPE_CIVMALE OMOkung 768.0640 -41.5728 999.6865 SF_DJ // 3master - just move this dude so he doesn't get recreated with new clothes SET_CHAR_COORDINATES SF_DJ 768.0640 -41.5728 999.6865 SET_CHAR_HEADING SF_DJ 358.0992 PERFORM_SEQUENCE_TASK SF_DJ sf_seq_dj_boxer SET_CHAR_DECISION_MAKER SF_DJ gym_decision_tough GIVE_MELEE_ATTACK_TO_CHAR SF_DJ MCOMBO_UNARMED_3 6 // Boxer A CREATE_CHAR PEDTYPE_CIVMALE OMYKARA 769.8199 -36.4933 999.6865 SF_boxer_A SET_CHAR_HEADING SF_boxer_A 95.1885 PERFORM_SEQUENCE_TASK SF_boxer_A seq_fight_a SET_CHAR_DECISION_MAKER SF_boxer_A gym_decision_tough GIVE_MELEE_ATTACK_TO_CHAR SF_boxer_A MCOMBO_UNARMED_3 6 // Boxer B CREATE_CHAR PEDTYPE_CIVMALE WMYKARA 766.1017 -37.3952 999.6865 SF_boxer_B SET_CHAR_HEADING SF_boxer_B 271.1251 PERFORM_SEQUENCE_TASK SF_boxer_B seq_fight_b SET_CHAR_DECISION_MAKER SF_boxer_B gym_decision_tough GIVE_MELEE_ATTACK_TO_CHAR SF_boxer_B MCOMBO_UNARMED_3 6 GOSUB gymsf_restore_camera IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 765.9402 -41.6020 999.6865 SET_CHAR_HEADING scplayer 265.0070 SET_PLAYER_CONTROL player1 ON SET_CAMERA_BEHIND_PLAYER ENDIF GOSUB gymsf_fade_in /* IF player_been_taught_move[0] = 1 GOSUB gymsf_fade_in ENDIF */ IF gym_sf_defeated = 0 PLAYER_MADE_PROGRESS 1 gym_sf_defeated = 1 ENDIF IF player_been_taught_move[0] = 0 PRINT_NOW ( GYM1_93 ) 3000 1 // New moves learned! ENDIF GIVE_MELEE_ATTACK_TO_CHAR scplayer MCOMBO_UNARMED_3 6 SET_PLAYER_CYCLE_WEAPON_BUTTON player1 TRUE player_been_taught_move[0] = 1 player_been_taught_move[1] = 0 player_been_taught_move[2] = 0 ENDIF ENDIF ENDIF ENDIF /* IF NOT IS_CHAR_DEAD SF_DJ GET_CHAR_HEALTH SF_DJ gym_hlth IF gym_hlth < 100 SET_CHAR_HEALTH SF_DJ 100 ENDIF ENDIF */ GOTO gymsf_loop ///////////////////////////////////////// EXIT EXERCISE ////////////////////////////////////// // Mission gymsf failed mission_gymsf_failed: RETURN // mission gymsf 1 passed mission_gymsf_passed: //flag_XXXX_mission1_passed = 1 PRINT_WITH_NUMBER_BIG M_PASS 30000 5000 1 ADD_SCORE player1 30000 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 //REGISTER_MISSION_PASSED XXXX //PLAYER_MADE_PROGRESS 1 //START_NEW_SCRIPT XXXX_missionX_loop RETURN // mission cleanup mission_cleanup_gymsf: IF NOT IS_CHAR_DEAD scplayer LISTEN_TO_PLAYER_GROUP_COMMANDS scplayer TRUE ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED WMYJG MARK_MODEL_AS_NO_LONGER_NEEDED OMYKARA MARK_MODEL_AS_NO_LONGER_NEEDED WMYlG MARK_MODEL_AS_NO_LONGER_NEEDED OMOkung MARK_MODEL_AS_NO_LONGER_NEEDED WMYKARA REMOVE_ANIMATION GYMNASIUM REMOVE_ANIMATION PARK REMOVE_ANIMATION FIGHT_C CLEAR_MISSION_AUDIO 4 gym_is_running = 0 flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN gymsf_set_camera: SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 TRUE RETURN gymsf_restore_camera: SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT SET_EVERYONE_IGNORE_PLAYER player1 FALSE RETURN gymsf_fade_out: DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS DO_FADE 1 FADE_OUT ENDIF ENDWHILE RETURN gymsf_fade_in: DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN sf_load_sample: CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 sf_audio sf_playing = 0 RETURN sf_play_sample: IF HAS_MISSION_AUDIO_LOADED 1 AND sf_playing = 0 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $sf_print ) 10000 1 sf_playing = 1 ENDIF IF HAS_MISSION_AUDIO_FINISHED 1 AND sf_playing = 1 CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT $sf_print sf_playing = 2 ENDIF RETURN } MISSION_START // ***************************************************************************************** // ************************************* Gym L.A ******************************************* // ***************************************************************************************** // ************************************ Paul Davis ***************************************** // ***************************************************************************************** // Mission start stuff SCRIPT_NAME gymlv GOSUB mission_start_gymlv SET_FADING_COLOUR 0 0 0 IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_gymlv_failed ENDIF GOSUB mission_cleanup_gymlv MISSION_END { LVAR_INT LV_white_boxer LVAR_INT LV_black_boxer LVAR_INT LV_boxer_A LVAR_INT LV_boxer_B LVAR_INT LV_boxer_C LVAR_INT LV_DJ LVAR_INT gym_hlth LVAR_INT gym_decision_none LVAR_INT seq_fight_a seq_fight_b LVAR_INT gymlv_teach LVAR_INT gymlv_inside[3] LVAR_INT lv_seq_white_boxer lv_seq_black_boxer lv_seq_dj_boxer LVAR_INT gym_decision_tough LVAR_INT seq_punchbag seq_punchbag1 seq_punchbag2 LVAR_INT gymlv_display LVAR_INT gymlv_help_txt gymlv_cower LVAR_FLOAT gym_lv_muscle VAR_INT gym_lv_defeated LVAR_TEXT_LABEL lv_print LVAR_INT lv_audio LVAR_INT lv_playing LVAR_INT lv_cheer[3] // ****************************************Mission Start************************************ REGISTER_MISSION_GIVEN mission_start_gymlv: IF NOT IS_CHAR_DEAD scplayer LISTEN_TO_PLAYER_GROUP_COMMANDS scplayer FALSE ENDIF gym_is_running = 1 flag_player_on_mission = 1 INCREMENT_INT_STAT VISITS_TO_GYM 1 LOAD_MISSION_TEXT GYM // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** REQUEST_MODEL vbmybox REQUEST_MODEL vwmybox REQUEST_MODEL BMYDJ REQUEST_ANIMATION RIOT REQUEST_ANIMATION FIGHT_D REQUEST_ANIMATION GYMNASIUM REQUEST_ANIMATION INT_SHOP LOAD_ALL_MODELS_NOW WHILE NOT HAS_ANIMATION_LOADED GYMNASIUM OR NOT HAS_MODEL_LOADED vbmybox OR NOT HAS_MODEL_LOADED vwmybox WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED BMYDJ OR NOT HAS_ANIMATION_LOADED RIOT OR NOT HAS_ANIMATION_LOADED FIGHT_D OR NOT HAS_ANIMATION_LOADED INT_SHOP WAIT 0 ENDWHILE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY gym_decision_none LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH gym_decision_tough SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MISSION1 PEDTYPE_PLAYER1 // ************************************** Declare Variables Values *************************** OPEN_SEQUENCE_TASK lv_cheer[0] TASK_PLAY_ANIM -1 RIOT_shout RIOT 4.0 FALSE FALSE FALSE FALSE -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_PAUSE -1 1000 SET_SEQUENCE_TO_REPEAT lv_cheer[0] 1 CLOSE_SEQUENCE_TASK lv_cheer[0] OPEN_SEQUENCE_TASK lv_cheer[1] TASK_PAUSE -1 500 TASK_PLAY_ANIM -1 RIOT_shout RIOT 4.0 FALSE FALSE FALSE FALSE -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer SET_SEQUENCE_TO_REPEAT lv_cheer[1] 1 CLOSE_SEQUENCE_TASK lv_cheer[1] OPEN_SEQUENCE_TASK lv_cheer[2] TASK_PAUSE -1 750 TASK_PLAY_ANIM -1 RIOT_shout RIOT 4.0 FALSE FALSE FALSE FALSE -1 TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer SET_SEQUENCE_TO_REPEAT lv_cheer[2] 1 CLOSE_SEQUENCE_TASK lv_cheer[2] // DJ OPEN_SEQUENCE_TASK seq_punchbag TASK_GO_TO_COORD_ANY_MEANS -1 773.8429 -61.5409 999.7184 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 93.0279 TASK_PLAY_ANIM -1 gymshadowbox GYMNASIUM 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK seq_punchbag // Black Boxer OPEN_SEQUENCE_TASK seq_punchbag1 TASK_GO_TO_COORD_ANY_MEANS -1 771.2518 -69.3033 999.6562 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 85.5162 CLOSE_SEQUENCE_TASK seq_punchbag1 // White Boxer OPEN_SEQUENCE_TASK seq_punchbag2 TASK_GO_TO_COORD_ANY_MEANS -1 762.3508 -78.2144 999.6562 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 359.2498 TASK_PLAY_ANIM -1 shop_pay INT_SHOP 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK seq_punchbag2 // **************************************************************************************** // * White Boxer * // **************************************************************************************** OPEN_SEQUENCE_TASK lv_seq_white_boxer TASK_GO_TO_COORD_ANY_MEANS -1 762.3508 -78.2144 999.6562 PEDMOVE_WALK -1 TASK_ACHIEVE_HEADING -1 359.2498 TASK_PLAY_ANIM -1 shop_pay INT_SHOP 4.0 TRUE FALSE FALSE FALSE -1 SET_SEQUENCE_TO_REPEAT lv_seq_white_boxer 1 CLOSE_SEQUENCE_TASK lv_seq_white_boxer CREATE_CHAR PEDTYPE_CIVMALE vwmybox 762.3508 -78.2144 999.6562 LV_white_boxer SET_CHAR_HEADING LV_white_boxer 359.2498 SET_CHAR_DECISION_MAKER LV_white_boxer gym_decision_tough PERFORM_SEQUENCE_TASK LV_white_boxer lv_seq_white_boxer GIVE_MELEE_ATTACK_TO_CHAR LV_white_boxer MCOMBO_UNARMED_4 6 // **************************************************************************************** // * Others * // **************************************************************************************** // Boxer A CREATE_CHAR PEDTYPE_CIVMALE vwmybox 766.2026 -69.2071 1000.5692 LV_boxer_A SET_CHAR_HEADING LV_boxer_A 330.7023 SET_CHAR_DECISION_MAKER LV_boxer_A gym_decision_none // Boxer B CREATE_CHAR PEDTYPE_CIVMALE vbmybox 767.1087 -67.9132 1000.5692 LV_boxer_B SET_CHAR_HEADING LV_boxer_B 129.3961 SET_CHAR_DECISION_MAKER LV_boxer_B gym_decision_none // **************************************************************************************** OPEN_SEQUENCE_TASK seq_fight_a TASK_PAUSE -1 1000 TASK_PLAY_ANIM -1 gymshadowbox GYMNASIUM 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK seq_fight_a OPEN_SEQUENCE_TASK seq_fight_b TASK_PLAY_ANIM -1 gymshadowbox GYMNASIUM 4.0 TRUE FALSE FALSE FALSE -1 CLOSE_SEQUENCE_TASK seq_fight_b // **************************************************************************************** PERFORM_SEQUENCE_TASK LV_boxer_A seq_fight_a PERFORM_SEQUENCE_TASK LV_boxer_B seq_fight_b // ************************************** Main Mission Loop ******************************* CLEAR_MISSION_AUDIO 4 LOAD_MISSION_AUDIO 4 SOUND_BANK_GYM WHILE NOT HAS_MISSION_AUDIO_LOADED 4 WAIT 0 ENDWHILE lv_playing = 2 IF gym_day > gym_final_day OR gym_month > gym_final_month gym_day_fitness = 0.0 ENDIF gymlv_loop: WAIT 0 GOSUB lv_play_sample // **************************************************************************************** IF gymlv_cower = 0 IF IS_CHAR_DEAD LV_boxer_A IF NOT IS_CHAR_DEAD LV_boxer_B CLEAR_CHAR_TASKS_IMMEDIATELY LV_boxer_B TASK_DUCK LV_boxer_B -2 gymlv_cower = 1 ENDIF ENDIF IF IS_CHAR_DEAD LV_boxer_B IF NOT IS_CHAR_DEAD LV_boxer_A CLEAR_CHAR_TASKS_IMMEDIATELY LV_boxer_A TASK_DUCK LV_boxer_A -2 gymlv_cower = 1 ENDIF ENDIF ENDIF // ********************************************************************************************************** // * * // * Clean Up * // * * // ********************************************************************************************************** GET_CHAR_AREA_VISIBLE scplayer main_visible_area IF main_visible_area = 0 GOTO mission_gymlv_failed ENDIF // ********************************************************************************************************** // * * // * Reset Locates * // * * // ********************************************************************************************************** // White Boxer IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 763.3589 -76.7606 999.6562 2.5 2.5 4.0 FALSE gymlv_inside[0] = 0 ENDIF // ********************************************************************************************************** // * * // * White Boxer * // * * // ********************************************************************************************************** IF NOT IS_CHAR_DEAD LV_white_boxer IF gymlv_inside[0] = 0 AND LOCATE_CHAR_ANY_MEANS_3D LV_white_boxer 762.3508 -78.2144 999.6562 1.0 1.0 1.2 FALSE IF LOCATE_STOPPED_CHAR_ANY_MEANS_3D scplayer 763.3589 -76.7606 999.6562 0.6 0.6 1.0 TRUE ENDIF IF LOCATE_STOPPED_CHAR_ANY_MEANS_3D scplayer 763.3589 -76.7606 999.6562 1.2 1.2 1.2 FALSE AND NOT IS_CHAR_DEAD LV_white_boxer IF NOT IS_CHAR_DEAD LV_white_boxer AND NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 OFF CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS LV_white_boxer TASK_TURN_CHAR_TO_FACE_CHAR LV_white_boxer scplayer TASK_TURN_CHAR_TO_FACE_CHAR scplayer LV_white_boxer ENDIF IF player_been_taught_move[2] = 0 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_WBOX_1 WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( WBOX_1 ) 3000 1 // Hey, you want to learn some new moves? ENDIF IF player_been_taught_move[2] = 1 CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_WBOX_4 WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( WBOX_4 ) 3000 1 // You think you can last a round with me? ENDIF PRINT_HELP_FOREVER ( GYM1_73 ) //Press ~<~ to answer NO or ~>~ for YES WHILE NOT IS_CHAR_DEAD scplayer WAIT 0 //fuck you fuck you fuck you IS_WIDGET_RELEASED WIDGET_GANG_REGION // YES IF IS_WIDGET_RELEASED WIDGET_POSITIVE GET_FLOAT_STAT BODY_MUSCLE gym_lv_muscle IF gym_lv_muscle > 349.0 gymlv_teach = 1 CLEAR_HELP GOTO gymlv_next_step ELSE gymlv_teach = 0 gymlv_inside[0] = 1 CLEAR_HELP CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_WBOX_3 WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( WBOX_3 ) 3000 1 // You need a fighter’s physique! Go put on some muscle! SET_PLAYER_CONTROL player1 ON TIMERA = 0 gymlv_display = 1 GOTO gymlv_loop ENDIF ENDIF // NO IF IS_WIDGET_RELEASED WIDGET_NEGATIVE gymlv_teach = 0 gymlv_inside[0] = 1 CLEAR_HELP CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_WBOX_2 WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE PLAY_MISSION_AUDIO 1 PRINT_NOW ( WBOX_2 ) 3000 1 // Your choice, man, but I know you’ll be back! SET_PLAYER_CONTROL player1 ON GOTO gymlv_loop ENDIF ENDWHILE CLEAR_HELP gymlv_next_step: CLEAR_HELP CLEAR_PRINTS SET_PLAYER_CYCLE_WEAPON_BUTTON player1 FALSE SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED IF gymlv_teach = 1 GOSUB gymLV_fade_out DELETE_CHAR LV_boxer_A DELETE_CHAR LV_boxer_B DELETE_CHAR LV_white_boxer // Boxer A CREATE_CHAR PEDTYPE_CIVMALE vbmybox 767.9493 -64.6707 999.6562 LV_boxer_A SET_CHAR_HEADING LV_boxer_A 166.9465 PERFORM_SEQUENCE_TASK LV_boxer_A lv_cheer[0] // Boxer B CREATE_CHAR PEDTYPE_CIVMALE vwmybox 770.7913 -67.3238 999.6562 LV_boxer_B SET_CHAR_HEADING LV_boxer_B 90.0184 PERFORM_SEQUENCE_TASK LV_boxer_B lv_cheer[1] // Boxer C CREATE_CHAR PEDTYPE_CIVMALE vbmybox 770.4339 -69.5049 999.6562 LV_boxer_C SET_CHAR_HEADING LV_boxer_C 91.3393 PERFORM_SEQUENCE_TASK LV_boxer_C lv_cheer[2] IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CREATE_CHAR PEDTYPE_MISSION1 vwmybox 768.2548 -67.2063 1000.5692 LV_white_boxer SET_CHAR_HEADING LV_white_boxer 145.0000 SET_CHAR_HEALTH LV_white_boxer 1000 SET_CHAR_MAX_HEALTH LV_white_boxer 1000 SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 764.8033 -70.2273 1000.5692 SET_CHAR_HEADING scplayer 310.0000 SET_CHAR_DECISION_MAKER LV_white_boxer gym_decision_tough TASK_KILL_CHAR_ON_FOOT LV_white_boxer scplayer GIVE_MELEE_ATTACK_TO_CHAR LV_white_boxer MCOMBO_UNARMED_4 6 SET_CHAR_SHOOT_RATE LV_white_boxer 100 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER GOSUB gymLV_fade_in ENDIF SET_PLAYER_CONTROL player1 ON IF player_been_taught_move[2] = 0 PRINT_HELP_FOREVER ( GYM1101 ) // Defeat your opponent to learn a new moves! ENDIF IF player_been_taught_move[2] = 1 PRINT_HELP_FOREVER GYM1_84 // Run and press ~m~~widget_attack~! ENDIF GOSUB gymLV_fade_in // ******************************************************************************************************************* // * * // * Fighting in the ring * // * * // ******************************************************************************************************************* GET_CHAR_COORDINATES scplayer x y z IF HAS_MISSION_AUDIO_LOADED 4 AND NOT IS_CHAR_DEAD scplayer REPORT_MISSION_AUDIO_EVENT_AT_CHAR scplayer SOUND_GYM_BOXING_BELL ENDIF WHILE NOT IS_CHAR_DEAD scplayer WAIT 0 IF player_been_taught_move[2] = 1 IF gymlv_help_txt = 0 TIMERA = 0 CLEAR_HELP PRINT_HELP_FOREVER ( GYM1_94 ) // While running, press ~m~~widget_attack~. gymlv_help_txt = 1 ENDIF IF NOT IS_GERMAN_GAME IF TIMERA > 6000 AND gymlv_help_txt = 1 CLEAR_HELP PRINT_HELP_FOREVER ( GYM195T ) // Attack a downed opponent by pressing ~m~~widget_attack~. TIMERA = 0 gymlv_help_txt = 2 ENDIF IF TIMERA > 6000 AND gymlv_help_txt = 2 CLEAR_HELP PRINT_HELP_FOREVER ( GYM1_96 ) // Press ~m~~widget_attack~ repeatedly. TIMERA = 0 gymlv_help_txt = 3 ENDIF ELSE IF TIMERA > 6000 AND gymlv_help_txt = 1 CLEAR_HELP PRINT_HELP_FOREVER ( GYM1_96 ) // Press ~m~~widget_attack~ repeatedly. TIMERA = 0 gymlv_help_txt = 3 ENDIF ENDIF IF TIMERA > 6000 AND gymlv_help_txt = 3 CLEAR_HELP TIMERA = 0 gymlv_help_txt = 0 ENDIF ENDIF IF NOT IS_CHAR_DEAD scplayer GET_CHAR_COORDINATES scplayer x y z ENDIF IF IS_CHAR_DEAD LV_white_boxer GOTO lv_fight2_over ENDIF IF z < 1000.7000 GOSUB gymlv_fade_out DELETE_CHAR LV_white_boxer DELETE_CHAR LV_boxer_A DELETE_CHAR LV_boxer_B DELETE_CHAR LV_boxer_C IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 762.8540 -69.5929 999.6562 SET_CHAR_HEADING scplayer 103.4243 ENDIF CREATE_CHAR PEDTYPE_CIVMALE vwmybox 762.3508 -78.2144 999.6562 LV_white_boxer SET_CHAR_HEADING LV_white_boxer 359.2498 SET_CHAR_DECISION_MAKER LV_white_boxer gym_decision_none PERFORM_SEQUENCE_TASK LV_white_boxer lv_seq_white_boxer GIVE_MELEE_ATTACK_TO_CHAR LV_white_boxer MCOMBO_UNARMED_4 6 // **************************************************************************************** // * Others * // **************************************************************************************** // Boxer A CREATE_CHAR PEDTYPE_CIVMALE vwmybox 766.2026 -69.2071 1000.5692 LV_boxer_A SET_CHAR_HEADING LV_boxer_A 330.7023 PERFORM_SEQUENCE_TASK LV_boxer_A seq_fight_a // Boxer B CREATE_CHAR PEDTYPE_CIVMALE vbmybox 767.1087 -67.9132 1000.5692 LV_boxer_B SET_CHAR_HEADING LV_boxer_B 129.3961 PERFORM_SEQUENCE_TASK LV_boxer_B seq_fight_b CLEAR_PRINTS CLEAR_HELP GOSUB gymlv_fade_in IF player_been_taught_move[2] = 0 PRINT_NOW ( GYM1_92 ) 5000 1 // ~r~You left the ring and forfeited ENDIF GOTO gymlv_loop ENDIF ENDWHILE lv_fight2_over: CLEAR_HELP IF player_been_taught_move[2] = 1 GOTO gymLV_skip_cutscene ENDIF GOSUB gymLV_fade_out GOSUB gymLV_set_camera CLEAR_AREA 768.2548 -67.2063 1000.5692 10.0 TRUE DELETE_CHAR LV_white_boxer DELETE_CHAR LV_boxer_A DELETE_CHAR LV_boxer_B DELETE_CHAR LV_boxer_C CREATE_CHAR PEDTYPE_CIVMALE vwmybox 768.2548 -67.2063 1000.5692 LV_white_boxer SET_CHAR_DECISION_MAKER LV_white_boxer gym_decision_none GIVE_MELEE_ATTACK_TO_CHAR LV_white_boxer MCOMBO_UNARMED_4 6 IF NOT IS_CHAR_DEAD LV_white_boxer AND NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS LV_white_boxer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 764.8033 -70.2273 1000.5692 SET_CHAR_COORDINATES_DONT_WARP_GANG LV_white_boxer 768.2548 -67.2063 1000.5692 SET_CHAR_HEADING scplayer 310.0000 SET_CHAR_HEADING LV_white_boxer 145.0000 ENDIF SET_FIXED_CAMERA_POSITION 765.1049 -74.2975 1003.5909 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 765.3495 -73.4547 1003.1116 JUMP_CUT GOSUB gymLV_fade_in PRINT_NOW ( WBOX_5 ) 4000 1 // Heres the new moves watch and learn // ****************************** Audio ********************************************************* CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_WBOX_5 // Watch this, it will come in handy. WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 // ********************************************************************************************** WAIT 1000 TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE SET_FIXED_CAMERA_POSITION 767.7358 -70.2958 1001.4927 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 767.9329 -69.3157 1001.4697 JUMP_CUT PRINT_NOW ( GYM1_97 ) 2000 1 // Running Attack TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE // ****************************** Audio ********************************************************* CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_WBOX_6 // Rush your opponent and strike fast! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 // ********************************************************************************************** PRINT_NOW ( GYM1_94 ) 4000 1 // While running, press ~m~~widget_attack~. TIMERA = 0 WHILE TIMERA < 4000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE IF NOT IS_CHAR_DEAD LV_white_boxer TASK_PLAY_ANIM LV_white_boxer FIGHTD_M FIGHT_D 4.0 FALSE TRUE TRUE FALSE -1 ENDIF IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer fucku PED 4.0 FALSE TRUE TRUE FALSE -1 ENDIF TIMERA = 0 WHILE TIMERA < 3000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE IF NOT IS_GERMAN_GAME SET_FIXED_CAMERA_POSITION 765.0073 -67.3258 1001.4648 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 766.0051 -67.2777 1001.4188 JUMP_CUT PRINT_NOW ( GYM1_98 ) 2000 1 // Ground Attack TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE // ****************************** Audio ********************************************************* CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_WBOX_7 // You gotta press home your advantage! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 // ********************************************************************************************** PRINT_NOW ( GYM195T ) 4000 1 // Attack a downed opponent by pressing ~m~~widget_attack~. TIMERA = 0 WHILE TIMERA < 4000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE IF NOT IS_CHAR_DEAD LV_white_boxer TASK_PLAY_ANIM LV_white_boxer FIGHTD_G FIGHT_D 4.0 FALSE TRUE TRUE FALSE -1 ENDIF IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer fucku PED 4.0 FALSE TRUE TRUE FALSE -1 ENDIF TIMERA = 0 WHILE TIMERA < 3000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE ENDIF SET_FIXED_CAMERA_POSITION 770.4639 -65.7272 1002.2308 0.0 0.0 0.0 // High bike POINT_CAMERA_AT_POINT 769.6946 -66.3243 1002.0034 JUMP_CUT PRINT_NOW ( GYM1_99 ) 2000 1 // Combo Attack IF NOT IS_CHAR_DEAD LV_white_boxer AND NOT IS_CHAR_DEAD scplayer TASK_TURN_CHAR_TO_FACE_CHAR LV_white_boxer scplayer ENDIF TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE // ****************************** Audio ********************************************************* CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_WBOX_8 // Just keep piling on the pressure – don’t give your opponent time to fight back! WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE PLAY_MISSION_AUDIO 1 // ********************************************************************************************** PRINT_NOW ( GYM1_96 ) 4000 1 // Press ~m~~widget_attack~ repeatedly. TIMERA = 0 WHILE TIMERA < 4000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE IF NOT IS_CHAR_DEAD LV_white_boxer FREEZE_CHAR_POSITION LV_white_boxer TRUE TASK_PLAY_ANIM LV_white_boxer FIGHTD_3 FIGHT_D 4.0 FALSE TRUE TRUE FALSE -1 ENDIF IF NOT IS_CHAR_DEAD scplayer TASK_PLAY_ANIM scplayer fucku PED 4.0 FALSE FALSE FALSE TRUE -1 ENDIF TIMERA = 0 WHILE TIMERA < 2000 WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS ENDIF ENDWHILE gymLV_skip_cutscene: GOSUB gymLV_fade_out IF gym_lv_defeated = 0 PLAYER_MADE_PROGRESS 1 gym_lv_defeated = 1 ENDIF DELETE_CHAR LV_white_boxer DELETE_CHAR LV_boxer_A DELETE_CHAR LV_boxer_B IF NOT IS_CHAR_DEAD scplayer CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES_DONT_WARP_GANG scplayer 762.8540 -69.5929 999.6562 SET_CHAR_HEADING scplayer 103.4243 ENDIF CREATE_CHAR PEDTYPE_CIVMALE vwmybox 762.3508 -78.2144 999.6562 LV_white_boxer SET_CHAR_HEADING LV_white_boxer 359.2498 SET_CHAR_DECISION_MAKER LV_white_boxer gym_decision_tough PERFORM_SEQUENCE_TASK LV_white_boxer lv_seq_white_boxer GIVE_MELEE_ATTACK_TO_CHAR LV_white_boxer MCOMBO_UNARMED_4 6 // **************************************************************************************** // * Others * // **************************************************************************************** // Boxer A CREATE_CHAR PEDTYPE_CIVMALE vwmybox 766.2026 -69.2071 1000.5692 LV_boxer_A SET_CHAR_HEADING LV_boxer_A 330.7023 PERFORM_SEQUENCE_TASK LV_boxer_A seq_fight_a SET_CHAR_DECISION_MAKER LV_boxer_A gym_decision_none // Boxer B CREATE_CHAR PEDTYPE_CIVMALE vbmybox 767.1087 -67.9132 1000.5692 LV_boxer_B SET_CHAR_HEADING LV_boxer_B 129.3961 PERFORM_SEQUENCE_TASK LV_boxer_B seq_fight_b SET_CHAR_DECISION_MAKER LV_boxer_B gym_decision_none GOSUB gymLV_restore_camera GOSUB gymLV_fade_in GIVE_MELEE_ATTACK_TO_CHAR scplayer MCOMBO_UNARMED_4 6 IF player_been_taught_move[2] = 0 PRINT_NOW ( GYM1_93 ) 3000 1 // New moves learned! ENDIF player_been_taught_move[0] = 0 player_been_taught_move[1] = 0 player_been_taught_move[2] = 1 SET_PLAYER_CYCLE_WEAPON_BUTTON player1 TRUE ENDIF ENDIF ENDIF ENDIF /* IF NOT IS_CHAR_DEAD LV_white_boxer GET_CHAR_HEALTH LV_white_boxer gym_hlth IF gym_hlth < 100 SET_CHAR_HEALTH LV_white_boxer 100 ENDIF ENDIF */ GOTO gymlv_loop ///////////////////////////////////////// EXIT EXERCISE ////////////////////////////////////// // Mission gymlv failed mission_gymlv_failed: RETURN // mission gymlv 1 passed mission_gymlv_passed: //flag_XXXX_mission1_passed = 1 PRINT_WITH_NUMBER_BIG M_PASS 30000 5000 1 ADD_SCORE player1 30000 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 //REGISTER_MISSION_PASSED XXXX //PLAYER_MADE_PROGRESS 1 //START_NEW_SCRIPT XXXX_missionX_loop RETURN // mission cleanup mission_cleanup_gymlv: IF NOT IS_CHAR_DEAD scplayer LISTEN_TO_PLAYER_GROUP_COMMANDS scplayer TRUE ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED vbmybox MARK_MODEL_AS_NO_LONGER_NEEDED vwmybox MARK_MODEL_AS_NO_LONGER_NEEDED BMYDJ REMOVE_ANIMATION GYMNASIUM REMOVE_ANIMATION RIOT REMOVE_ANIMATION FIGHT_D REMOVE_ANIMATION INT_SHOP CLEAR_MISSION_AUDIO 4 gym_is_running = 0 flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN gymLV_set_camera: SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 TRUE RETURN gymLV_restore_camera: SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT SET_EVERYONE_IGNORE_PLAYER player1 FALSE RETURN gymLV_fade_out: DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 IF IS_BUTTON_PRESSED PAD1 CROSS DO_FADE 1 FADE_OUT ENDIF ENDWHILE RETURN gymLV_fade_in: DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN lv_load_sample: CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 lv_audio lv_playing = 0 RETURN lv_play_sample: IF HAS_MISSION_AUDIO_LOADED 1 AND lv_playing = 0 PLAY_MISSION_AUDIO 1 PRINT_NOW ( $lv_print ) 10000 1 lv_playing = 1 ENDIF IF HAS_MISSION_AUDIO_FINISHED 1 AND lv_playing = 1 CLEAR_MISSION_AUDIO 1 CLEAR_THIS_PRINT $lv_print lv_playing = 2 ENDIF RETURN } // GIVE_MELEE_ATTACK_TO_CHAR scplayer MCOMBO_UNARMED_4 4 MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : Truck // AUTHOR : Keith // DESCRIPTION : Trucking delivery missions from Truck Depot to other cities. // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** { // ************************************************************************************************************* // GENERAL INITIALISATION - Every level requires this // ************************************************************************************************************* SCRIPT_NAME Truck // Global Variables for Main VAR_INT g_nTruckMissionsPassed // Global Variables VAR_INT g_Truck_cashKM VAR_INT g_Truck_damageKM VAR_INT g_Truck_timedKM // Mission Start stuff GOSUB mission_start_Truck IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_Truck ENDIF GOSUB mission_cleanup_Truck MISSION_END // Global Setup mission_start_Truck: IF done_truck_progress = FALSE REGISTER_MISSION_GIVEN ENDIF DISPLAY_RADAR 5 // PATHING IGNORE SWITCHED OFF DISPLAY_RADAR 4 // PATHING STOP AT ROAD flag_player_on_mission = TRUE flag_player_on_oddjob = TRUE // TEMP vars LVAR_INT TEMP_nTestAreas TEMP_nTestAreas = 0 LVAR_INT TEMP_nTestDestinations TEMP_nTestDestinations = 0 // general variables that are in every mission - DON'T DECLARE MISSION SPECIFIC VARIABLES HERE LVAR_INT m_stage LVAR_INT m_goals LVAR_INT m_passed LVAR_INT m_failed LVAR_INT m_quit LVAR_INT m_pause LVAR_INT m_status LVAR_INT m_frame_num LVAR_INT m_this_frame_time LVAR_INT m_last_frame_time LVAR_INT m_time_diff // commonly used timers LVAR_INT m_mission_timer // Debug variables LVAR_INT display_debug VAR_INT Truck_view_debug[8] // GLOBAL (for output) // useful int variables LVAR_INT nLoop LVAR_INT nTempInt LVAR_INT nTempInt2 LVAR_INT nTempInt3 LVAR_INT nTempPed LVAR_INT nTempCar LVAR_INT nTempObject LVAR_INT nTempAmmo LVAR_INT nTempTimer LVAR_INT nSeqTask // useful float variables LVAR_FLOAT xposTemp yposTemp zposTemp LVAR_FLOAT headTemp LVAR_FLOAT xloTemp yloTemp zloTemp LVAR_FLOAT xhiTemp yhiTemp zhiTemp LVAR_FLOAT fTempFloat LVAR_FLOAT fTempFloat2 LVAR_FLOAT fTempDistance // useful flag variables LVAR_INT flagTempFlag LVAR_INT flagTempFlag2 m_stage = 0 m_goals = 0 m_passed = FALSE m_failed = FALSE m_quit = FALSE m_pause = FALSE m_status = 0 m_mission_timer = 0 display_debug = 0 TIMERA = 0 TIMERB = 0 // Consts // ...highest trucking mission CONST_INT TRUCK_HIGHEST_TRUCKING_MISSION 8 // ...mission types CONST_INT TRUCK_NORMAL_DAMAGE_MISSION 1 CONST_INT TRUCK_NORMAL_TIMED_MISSION 2 CONST_INT TRUCK_FRAGILE_DAMAGE_MISSION 3 CONST_INT TRUCK_ILLEGAL_MISSION 4 CONST_INT TRUCK_TIMED_DAMAGE_MISSION 5 CONST_INT TRUCK_HIGHLY_ILLEGAL_MISSION 6 // ----- CONST_INT TRUCK_HIGHEST_MISSION 6 // same as the last mission above // ...mission destinations CONST_INT TRUCK_COUNTRY_EAST_NEAR_DESTINATION 1 CONST_INT TRUCK_COUNTRY_EAST_FAR_DESTINATION 2 CONST_INT TRUCK_LOS_SANTOS_DESTINATION 3 CONST_INT TRUCK_COUNTRY_SOUTH_DESTINATION 4 CONST_INT TRUCK_SAN_FIERRO_DESTINATION 5 CONST_INT TRUCK_COUNTRY_NORTH_DESTINATION 6 CONST_INT TRUCK_COUNTRY_NORTH_2_DESTINATION 7 CONST_INT TRUCK_LAS_VENTURAS_DESTINATION 8 // ----- CONST_INT TRUCK_HIGHEST_DESTINATION 8 // same as the last destination above // ...mission time IDs CONST_INT TRUCK_MISSION_TIME_NOT_CALCULATED 0 CONST_INT TRUCK_MISSION_TIME_NOT_LATE 1 CONST_INT TRUCK_MISSION_TIME_LATE 2 CONST_INT TRUCK_MISSION_TIME_VERY_LATE 3 CONST_INT TRUCK_MISSION_TIME_LAST_CHANCE 4 CONST_INT TRUCK_MISSION_TIME_ELAPSED 5 // ...distance multipliers to calculate mission times CONST_INT TRUCK_DISTANCE_TO_TIME_CALC_NOT_LATE 140 CONST_INT TRUCK_DISTANCE_TO_TIME_CALC_LATE 84 // 60% of NOT_LATE value CONST_INT TRUCK_LAST_CHANCE_hours 2 CONST_INT TRUCK_LAST_CHANCE_mins 0 // ...reasons for failure CONST_INT TRUCK_FAILED_UNKNOWN 0 CONST_INT TRUCK_FAILED_OUT_OF_CASH 1 CONST_INT TRUCK_FAILED_OUT_OF_TIME 2 CONST_INT TRUCK_FAILED_TOO_MUCH_DAMAGE 3 CONST_INT TRUCK_FAILED_NOT_IN_CAB 4 CONST_INT TRUCK_FAILED_TRAILER_NOT_ATTACHED 5 // ...car health values CONST_INT TRUCK_CAR_NOT_ON_FIRE_HEALTH_BOUNDARY 250 // ...available trailers CONST_INT TRUCK_TRAILER_PETROTR 1 CONST_INT TRUCK_TRAILER_ARTICT1 2 CONST_INT TRUCK_TRAILER_ARTICT2 3 CONST_INT TRUCK_TRAILER_ARTICT3 4 // ----- CONST_INT TRUCK_HIGHEST_TRAILER 4 // same as the last trailer above // ...available cabs CONST_INT TRUCK_CAB_PETRO 1 CONST_INT TRUCK_CAB_LINERUN 2 CONST_INT TRUCK_CAB_RDTRAIN 3 // ----- CONST_INT TRUCK_HIGHEST_CAB 3 // same as the last cab above // Mission Specific Variables // Integer Variables // ...chars (char) // ...cars (car) LVAR_INT carCab LVAR_INT carTrailer // ...blips (blip) LVAR_INT blipDestination LVAR_INT blipCab LVAR_INT blipFailureOutOfCab LVAR_INT blipFailureUnattachedTrailer // ...pickups (pickup) // ...fx systems (fx) // ...decision makers (dm) // ...AI Status (ai) // ...general status (status) // ...Timers (timer) LVAR_INT timerFailureConditions LVAR_INT timerMissionControl LVAR_INT timerCutscene // ...Counters (count) LVAR_INT countCash LVAR_INT countFailure // ...mission specific (n) LVAR_INT nMissionSelected LVAR_INT nDestinationArea LVAR_INT nDestinationLocation LVAR_INT nMissionType LVAR_INT nReasonForFailure LVAR_INT nInitialHealth LVAR_INT nInitialCash LVAR_INT nMissionTimeStage LVAR_INT nDestinationDistance LVAR_INT nHours LVAR_INT nMinutes LVAR_INT nThisTrailer LVAR_INT nThisCab // Text Label Variables LVAR_TEXT_LABEL tlMissionType LVAR_TEXT_LABEL tlMissionDestination // Float Variables // ...area variables (xlo, ylo, zlo, xhi, yhi, zhi) // ...position variables (xpos, ypos, zpos) LVAR_FLOAT xposDestination yposDestination zposDestination // ...heading variables (head) // Boolean Variables // ...flags (flag) LVAR_INT flagFailureConditionsApply LVAR_INT flagOutOfDepot LVAR_INT flagTimedMission LVAR_INT flagDamageMission LVAR_INT flagPoliceMission LVAR_INT flagDisplayCashCutLate LVAR_INT flagDisplayCashCutVeryLate LVAR_INT flagDisplayLastChance LVAR_INT flagArrived LVAR_INT flagShowAssetAcquired // ...bit flags (bits) // ...exists flags (exists) //...clear exists flags // Clear timers // Clear important flags flagFailureConditionsApply = FALSE flagOutOfDepot = FALSE flagShowAssetAcquired = FALSE // ***** FAKE ENTITY CREATION TO FOOL THE COMPILER ***** // The compiler just needs to verify there is a CREATE_ before usage IF m_stage = -99 WRITE_DEBUG SHOULD_NEVER_BE_IN_FAKE_ENTITY_CREATION // Cars CREATE_CAR PETRO 0.0 0.0 0.0 carCab CREATE_CAR PETROTR 0.0 0.0 0.0 carTrailer // Objects // Blips ADD_BLIP_FOR_CAR carCab blipFailureOutOfCab ADD_BLIP_FOR_CAR carCab blipCab ADD_BLIP_FOR_CAR carTrailer blipFailureUnattachedTrailer ENDIF // Mission Text LOAD_MISSION_TEXT TRUCK // Ensure the Trucking mission area is open. // ...mission 6 and 7 needs LV to be open IF g_nTruckMissionsPassed >= 6 GET_INT_STAT CITIES_PASSED Return_cities_passed IF Return_cities_passed < 2 // ...Vegas not open PRINT_NOW TRK_H17 5000 1 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer -76.9664 -1134.6389 0.0781 SET_CHAR_HEADING scplayer 14.7291 SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 ON ENDIF DO_FADE 500 FADE_IN WAIT 5000 // Return the oddjob 'title over fade' status back to default DRAW_ODDJOB_TITLE_BEFORE_FADE TRUE RETURN ENDIF ENDIF // ...mission 4 and 5 needs SF to be open IF g_nTruckMissionsPassed >= 4 GET_INT_STAT CITIES_PASSED Return_cities_passed IF Return_cities_passed < 1 // ...SanFran not open PRINT_NOW TRK_H18 5000 1 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer -76.9664 -1134.6389 0.0781 SET_CHAR_HEADING scplayer 14.7291 SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 ON ENDIF DO_FADE 500 FADE_IN WAIT 5000 // Return the oddjob 'title over fade' status back to default DRAW_ODDJOB_TITLE_BEFORE_FADE TRUE RETURN ENDIF ENDIF // Intro Cutscene GOSUB Truck_Intro_Cutscene // Mission Initialisation GOSUB Truck_Initialisation // Load Char Mission Decision Makers //USE_TEXT_COMMANDS TRUE WAIT 100 // ************************************************************************************************************* // MISSION LOOP // ************************************************************************************************************* mission_loop_Truck: WAIT 0 // Debug Stuff GOSUB Truck_Debug_Tools GOSUB Truck_Debug_Shortcuts IF m_quit = 1 OR m_pause = 1 GOTO end_of_main_loop_Truck ENDIF // Housekeeping GOSUB Truck_Frame_Counter GOSUB Truck_Additional_Timers // Special conditions IF IS_CHAR_DEAD scplayer m_failed = TRUE GOTO end_of_main_loop_Truck ENDIF // Mission Stage processing // *** INITIALISATION NOW TAKES PLACE BEFORE THE MAIN LOOP *** IF m_stage = 0 WRITE_DEBUG STAGE_SHOULD_NEVER_BE_0_IN_MAIN_LOOP ENDIF // ...Stage 1: Wait for player to enter cab IF m_stage = 1 GOSUB Truck_Stage_EnterCab ENDIF // ...Stage 2: Perform mission IF m_stage = 2 GOSUB Truck_Stage_PerformMission ENDIF // ...final stage IF m_stage = 3 m_passed = TRUE ENDIF // ...special 'asset achieved' cutscene IF m_stage = 50 GOSUB Truck_Asset_Acquired ENDIF IF m_stage = 51 // ...quit to cleanup without displaying 'failed' text again m_quit = TRUE ENDIF // Continuous update methods and event checking // End of Main Loop // ***** DON'T CHANGE ***** end_of_main_loop_Truck: IF m_quit = FALSE IF m_failed = FALSE IF m_passed = FALSE // Restart main loop GOTO mission_loop_Truck ELSE // Mission passed GOSUB mission_passed_Truck // Check if the 'asset acquired' cutscene should be shown IF flagShowAssetAcquired = TRUE // ...yes m_passed = FALSE m_stage = 50 m_goals = 0 flagShowAssetAcquired = FALSE GOTO mission_loop_Truck ENDIF RETURN ENDIF ELSE // Mission failed GOSUB mission_failed_Truck RETURN ENDIF ELSE RETURN // quits out - goes to cleanup ENDIF WRITE_DEBUG SHOULD_NEVER_BE_HERE_IN_END_OF_MAIN_LOOP RETURN // Should never reach here // ************************************************************************************************************* // MISSION STAGE GOSUBS // ************************************************************************************************************* // **************************************** // STAGE 1: Wait for player to enter cab Truck_Stage_EnterCab: IF IS_CAR_DEAD carTrailer OR IS_CAR_DEAD carCab m_failed = TRUE nReasonForFailure = TRUCK_FAILED_TOO_MUCH_DAMAGE RETURN ENDIF // Initialisation for this stage IF m_goals = 0 // Display the cash DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING g_Truck_cashKM COUNTER_DISPLAY_NUMBER 1 TRK_CSH g_Truck_cashKM = nInitialCash countCash = nInitialCash // Display the mission information GOSUB Truck_Store_Mission_Type GOSUB Truck_Store_Mission_Destination GOSUB Truck_Display_Mission_Info ADD_BLIP_FOR_CAR carCab blipCab SET_BLIP_AS_FRIENDLY blipCab TRUE flagArrived = FALSE m_goals++ ENDIF // Failure Conditions // ------------------ // Subgoals // -------- // Wait for the player to enter the cab IF m_goals = 1 IF IS_CHAR_IN_CAR scplayer carCab REMOVE_BLIP blipCab m_goals = 99 ENDIF ENDIF // Continuous updates // ------------------ // exit IF m_goals = 99 GOSUB Truck_next_stage ENDIF RETURN // **************************************** // STAGE 2: Perform Mission Truck_Stage_PerformMission: // Error Checks for this stage IF IS_CAR_DEAD carCab OR IS_CAR_DEAD carTrailer m_failed = TRUE nReasonForFailure = TRUCK_FAILED_TOO_MUCH_DAMAGE RETURN ENDIF IF flagArrived = FALSE GOSUB Truck_Check_For_Failure_Conditions IF m_failed = TRUE RETURN ENDIF ENDIF // Initialisation for this stage IF m_goals = 0 // Blip at Destination ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination CHANGE_BLIP_SCALE blipDestination 4 // Flag that determines when traffic is allowed again flagOutOfDepot = FALSE GOSUB Truck_Setup_Mission_Control // Display appropriate text SWITCH nMissionType CASE TRUCK_NORMAL_DAMAGE_MISSION PRINT_NOW TRK_H6 15000 1 BREAK CASE TRUCK_NORMAL_TIMED_MISSION PRINT_NOW TRK_H7 15000 1 // Deliver the goods as quickly as possible. If you are late you'll lose cash. BREAK CASE TRUCK_FRAGILE_DAMAGE_MISSION PRINT_NOW TRK_H12 15000 1 BREAK CASE TRUCK_ILLEGAL_MISSION PRINT_NOW TRK_H9 15000 1 BREAK CASE TRUCK_TIMED_DAMAGE_MISSION PRINT_NOW TRK_H11 15000 1 BREAK CASE TRUCK_HIGHLY_ILLEGAL_MISSION PRINT_NOW TRK_H10 15000 1 BREAK DEFAULT WRITE_DEBUG UNKNOWN_MISSION_TYPE ENDSWITCH m_goals++ ENDIF // Has the destination been reached? IF m_goals = 1 xloTemp = xposDestination - 4.0000 yloTemp = yposDestination - 4.0000 zloTemp = zposDestination - 4.0000 xhiTemp = xposDestination + 4.0000 yhiTemp = yposDestination + 4.0000 zhiTemp = zposDestination + 4.0000 IF IS_CAR_IN_AREA_3D carTrailer xloTemp yloTemp zloTemp xhiTemp yhiTemp zhiTemp TRUE OR IS_CAR_IN_AREA_3D carCab xloTemp yloTemp zloTemp xhiTemp yhiTemp zhiTemp FALSE IF IS_CHAR_IN_CAR scplayer carCab AND IS_TRAILER_ATTACHED_TO_CAB carTrailer carCab SET_PLAYER_CONTROL player1 OFF flagArrived = TRUE // Boost the mission time // NOTE: This gives the player a reasonable chance to get out of the cab without hitting a boundary and losing cash timerMissionControl += 15000 m_goals++ ENDIF ENDIF ENDIF // Check for trailer stopped IF m_goals = 2 IF IS_CAR_STOPPED carTrailer AND IS_CAR_STOPPED carCab // Lock Cab in place to prevent player driving away with it FREEZE_CAR_POSITION carCab TRUE TASK_LEAVE_CAR scplayer carCab GOSUB Truck_Display_Mission_Passed_Text m_goals++ ENDIF ENDIF // Check for player out of cab IF m_goals = 3 IF NOT IS_CHAR_IN_CAR scplayer carCab CLOSE_ALL_CAR_DOORS carCab LOCK_CAR_DOORS carCab CARLOCK_LOCKED SET_PLAYER_CONTROL player1 ON m_goals = 99 ENDIF ENDIF // Continuous updates for stage GOSUB Truck_Regulate_Cab_And_Trailer_Health GOSUB Truck_Maintain_Mission_Timer GOSUB Truck_Update_Cash IF flagOutOfDepot = TRUE GOSUB Truck_Maintain_Wanted_Level ENDIF // Keep the road closed until the the truck is out IF flagOutOfDepot = FALSE xposTemp = -76.1692 yposTemp = -1128.9630 zposTemp = 0.0781 IF LOCATE_CAR_3D carTrailer xposTemp yposTemp zposTemp 40.0 40.0 40.0 FALSE AND NOT LOCATE_CAR_3D carTrailer xposTemp yposTemp zposTemp 20.0 20.0 20.0 FALSE // Allow traffic again SET_CAR_DENSITY_MULTIPLIER 1.0 // Set wanted level for illegal goods missions IF nMissionType = TRUCK_ILLEGAL_MISSION ALTER_WANTED_LEVEL_NO_DROP player1 3 ENDIF IF nMissionType = TRUCK_HIGHLY_ILLEGAL_MISSION ALTER_WANTED_LEVEL_NO_DROP player1 4 ENDIF flagOutOfDepot = TRUE ENDIF ENDIF // Cash cut messages for timed missions IF flagFailureConditionsApply = FALSE IF flagDisplayCashCutLate = TRUE PRINT_NOW TRK_H14 6000 1 flagDisplayCashCutLate = FALSE ENDIF IF flagDisplayCashCutVeryLate = TRUE PRINT_NOW TRK_H15 6000 1 flagDisplayCashCutVeryLate = FALSE ENDIF ENDIF // Deadline message for all missions IF flagFailureConditionsApply = FALSE IF flagDisplayLastChance = TRUE PRINT_NOW TRK_H16 7000 1 flagDisplayLastChance = FALSE ENDIF ENDIF // exit IF m_goals = 99 GOSUB Truck_next_stage ENDIF RETURN // **************************************** // ASSET ACQUIRED Truck_Asset_Acquired: // Initialisation // -------------- IF m_goals = 0 // Allow the 'mission passed' to be displayed for a few seconds SET_PLAYER_CONTROL player1 OFF timerCutscene = m_mission_timer + 5000 GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp GET_CHAR_HEADING scplayer headTemp CLEAR_ONSCREEN_COUNTER g_Truck_cashKM m_goals++ ENDIF // Failure Conditions // ------------------ // Subgoals // -------- // Fade out IF m_goals = 1 IF timerCutscene < m_mission_timer DO_FADE 500 FADE_OUT timerCutscene = m_mission_timer + 500 m_goals++ ENDIF ENDIF // Create the protection pickup and prepare for the cutscene IF m_goals = 2 IF timerCutscene < m_mission_timer AND NOT GET_FADING_STATUS CREATE_PROTECTION_PICKUP -82.2693 -1135.5262 0.5847 g_Truck_CashPickupValueKM g_Truck_CashPickupValueKM g_Truck_CashPickupKM SWITCH_WIDESCREEN ON IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer -47.0873 -1122.1464 0.4453 ELSE SET_CHAR_COORDINATES scplayer -47.0873 -1122.1464 0.4453 ENDIF MARK_CAR_AS_NO_LONGER_NEEDED carCab MARK_CAR_AS_NO_LONGER_NEEDED carTrailer SET_EVERYONE_IGNORE_PLAYER player1 TRUE SET_ALL_CARS_CAN_BE_DAMAGED FALSE // LOAD_SCENE -82.2693 -1135.5262 0.5847 LOAD_SCENE_IN_DIRECTION -96.3779 -1125.2618 0.0930 261.7115 SET_FIXED_CAMERA_POSITION -109.2539 -1122.3531 15.1451 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -108.3806 -1122.4388 14.6655 JUMP_CUT // Leave it faded out for a couple of seconds timerCutscene = m_mission_timer + 2000 m_goals++ ENDIF ENDIF // Leave it faded out for a couple of seconds, then fade in IF m_goals = 3 IF timerCutscene < m_mission_timer // Fade in DO_FADE 500 FADE_IN // Display 'asset acquired' PRINT_BIG ASS_ACQ 5000 6 timerCutscene = m_mission_timer + 5000 m_goals++ ENDIF ENDIF // Display the scene for a short while then change camera view IF m_goals = 4 IF timerCutscene < m_mission_timer SET_FIXED_CAMERA_POSITION -83.7387 -1133.7926 0.9871 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -82.9525 -1134.4098 0.9592 JUMP_CUT // Print potential revenue PRINT_WITH_NUMBER_NOW ASS_LUV g_Truck_CashPickupValueKM 6000 1 timerCutscene = m_mission_timer + 6000 m_goals++ ENDIF ENDIF // Display the new scene for a short while IF m_goals = 5 IF timerCutscene < m_mission_timer DO_FADE 500 FADE_OUT timerCutscene = m_mission_timer + 500 m_goals++ ENDIF ENDIF // Switch back to normal view and display the rest of the text, then fade in again IF m_goals = 6 IF timerCutscene < m_mission_timer AND NOT GET_FADING_STATUS SET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp SET_CHAR_HEADING scplayer headTemp LOAD_SCENE xposTemp yposTemp zposTemp SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT // Leave it faded out for a couple of seconds timerCutscene = m_mission_timer + 2000 m_goals++ ENDIF ENDIF // Leave it faded out for a couple of seconds IF m_goals = 7 IF timerCutscene < m_mission_timer // Future Missions description PRINT_NOW TRK_P2 10000 1 DO_FADE 500 FADE_IN timerCutscene = m_mission_timer + 500 m_goals++ ENDIF ENDIF // End cutscene IF m_goals = 8 IF timerCutscene < m_mission_timer AND NOT GET_FADING_STATUS SET_EVERYONE_IGNORE_PLAYER player1 FALSE SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_PLAYER_CONTROL player1 ON m_goals = 99 ENDIF ENDIF // Continuous updates // ------------------ // Exit // ---- IF m_goals = 99 GOSUB Truck_next_stage ENDIF RETURN // ************************************************************************************************************* // MISSION SPECIFIC GOSUBS // ************************************************************************************************************* // ************************************************************************************************************* // MISSION INFORMATION // ************************************************************************************************************* // **************************************** // Store Mission Type Truck_Store_Mission_Type: SWITCH nMissionType CASE TRUCK_NORMAL_DAMAGE_MISSION $tlMissionType = TRK_MND BREAK CASE TRUCK_NORMAL_TIMED_MISSION $tlMissionType = TRK_MNT BREAK CASE TRUCK_FRAGILE_DAMAGE_MISSION $tlMissionType = TRK_MFD BREAK CASE TRUCK_ILLEGAL_MISSION $tlMissionType = TRK_MI BREAK CASE TRUCK_TIMED_DAMAGE_MISSION $tlMissionType = TRK_MTD BREAK CASE TRUCK_HIGHLY_ILLEGAL_MISSION $tlMissionType = TRK_MHI BREAK DEFAULT WRITE_DEBUG UNKNOWN_MISSION_TYPE_ID ENDSWITCH RETURN // **************************************** // Store Mission Destination Truck_Store_Mission_Destination: // Country East (near) IF nDestinationArea = TRUCK_COUNTRY_EAST_NEAR_DESTINATION SWITCH nDestinationLocation CASE 0 $tlMissionDestination = TRK_CE0 BREAK CASE 1 $tlMissionDestination = TRK_CE1 BREAK CASE 2 $tlMissionDestination = TRK_CE2 BREAK CASE 3 $tlMissionDestination = TRK_CE3 BREAK ENDSWITCH ENDIF // Country East (far) IF nDestinationArea = TRUCK_COUNTRY_EAST_FAR_DESTINATION SWITCH nDestinationLocation CASE 0 $tlMissionDestination = TRK_CE4 BREAK CASE 1 $tlMissionDestination = TRK_CE5 BREAK ENDSWITCH ENDIF // Los Santos IF nDestinationArea = TRUCK_LOS_SANTOS_DESTINATION SWITCH nDestinationLocation CASE 0 $tlMissionDestination = TRK_LS0 BREAK CASE 1 $tlMissionDestination = TRK_LS1 BREAK CASE 2 $tlMissionDestination = TRK_LS2 BREAK CASE 3 $tlMissionDestination = TRK_LS3 BREAK ENDSWITCH ENDIF // Las Venturas IF nDestinationArea = TRUCK_LAS_VENTURAS_DESTINATION SWITCH nDestinationLocation CASE 0 $tlMissionDestination = TRK_V0 BREAK CASE 1 $tlMissionDestination = TRK_V1 BREAK CASE 2 $tlMissionDestination = TRK_V2 BREAK CASE 3 $tlMissionDestination = TRK_V3 BREAK CASE 4 $tlMissionDestination = TRK_V4 BREAK CASE 5 $tlMissionDestination = TRK_V5 BREAK CASE 6 $tlMissionDestination = TRK_V6 BREAK CASE 7 $tlMissionDestination = TRK_V7 BREAK CASE 8 $tlMissionDestination = TRK_V8 BREAK CASE 9 $tlMissionDestination = TRK_V9 BREAK CASE 10 $tlMissionDestination = TRK_V10 BREAK CASE 11 $tlMissionDestination = TRK_V11 BREAK CASE 12 $tlMissionDestination = TRK_V12 BREAK CASE 13 $tlMissionDestination = TRK_V13 BREAK ENDSWITCH ENDIF // Country North 2 IF nDestinationArea = TRUCK_COUNTRY_NORTH_2_DESTINATION SWITCH nDestinationLocation CASE 0 $tlMissionDestination = TRK_NC0 BREAK CASE 1 $tlMissionDestination = TRK_NC1 BREAK CASE 2 $tlMissionDestination = TRK_NC2 BREAK CASE 3 $tlMissionDestination = TRK_NC3 BREAK CASE 4 $tlMissionDestination = TRK_NC4 BREAK ENDSWITCH ENDIF // Country South IF nDestinationArea = TRUCK_COUNTRY_SOUTH_DESTINATION SWITCH nDestinationLocation CASE 0 $tlMissionDestination = TRK_CS0 BREAK CASE 1 $tlMissionDestination = TRK_CS1 BREAK CASE 2 $tlMissionDestination = TRK_CS2 BREAK ENDSWITCH ENDIF // San Fierro IF nDestinationArea = TRUCK_SAN_FIERRO_DESTINATION SWITCH nDestinationLocation CASE 0 $tlMissionDestination = TRK_SF0 BREAK CASE 1 $tlMissionDestination = TRK_SF1 BREAK CASE 2 $tlMissionDestination = TRK_SF2 BREAK CASE 3 $tlMissionDestination = TRK_SF3 BREAK ENDSWITCH ENDIF // Country North IF nDestinationArea = TRUCK_COUNTRY_NORTH_DESTINATION SWITCH nDestinationLocation CASE 0 $tlMissionDestination = TRK_CN0 BREAK CASE 1 $tlMissionDestination = TRK_CN1 BREAK CASE 2 $tlMissionDestination = TRK_CN2 BREAK ENDSWITCH ENDIF RETURN // **************************************** // Display Mission Info Truck_Display_Mission_Info: // Now displays the mission as a PRINT statement CLEAR_SMALL_PRINTS PRINT_STRING_IN_STRING_NOW $tlMissionType $tlMissionDestination 15000 1 RETURN // ************************************************************************************************************* // STUFF TO UPDATE WHILE PERFORMING MISSION // ************************************************************************************************************* // **************************************** // Check For Failure Conditions Truck_Check_For_Failure_Conditions: // Check if failure conditions already apply IF flagFailureConditionsApply = TRUE // ...failure conditions already apply, so check if they no longer apply, or check for timeout IF IS_TRAILER_ATTACHED_TO_CAB carTrailer carCab AND IS_CHAR_IN_CAR scplayer carCab // ...failure conditions no longer apply countFailure = 0 flagFailureConditionsApply = FALSE REMOVE_BLIP blipFailureOutOfCab REMOVE_BLIP blipFailureUnattachedTrailer ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination CHANGE_BLIP_SCALE blipDestination 4 CLEAR_SMALL_PRINTS RETURN ENDIF // ...if the cab is about to explode then don't display a failure conditions message GET_CAR_HEALTH carCab nTempInt IF nTempInt < TRUCK_CAR_NOT_ON_FIRE_HEALTH_BOUNDARY CLEAR_SMALL_PRINTS REMOVE_BLIP blipFailureOutOfCab REMOVE_BLIP blipFailureUnattachedTrailer ENDIF // ...failure conditions still apply, so update the counter IF timerFailureConditions < m_mission_timer countFailure-- timerFailureConditions = m_mission_timer + 1000 ENDIF // ...check for timeout IF countFailure < 0 // ...failure m_failed = TRUE CLEAR_SMALL_PRINTS REMOVE_BLIP blipFailureOutOfCab REMOVE_BLIP blipFailureUnattachedTrailer flagTempFlag = FALSE IF NOT IS_CHAR_IN_CAR scplayer carCab flagTempFlag = TRUE nReasonForFailure = TRUCK_FAILED_NOT_IN_CAB ENDIF IF NOT IS_TRAILER_ATTACHED_TO_CAB carTrailer carCab AND flagTempFlag = FALSE nReasonForFailure = TRUCK_FAILED_TRAILER_NOT_ATTACHED ENDIF RETURN ENDIF // Update the message and the blips CLEAR_PRINTS ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE IF NOT IS_CHAR_IN_CAR scplayer carCab // ...get back in the cab IF countFailure = 1 PRINT_WITH_NUMBER TRK_H5b countFailure 1000 1 ELSE PRINT_WITH_NUMBER TRK_H5 countFailure 1000 1 ENDIF IF DOES_BLIP_EXIST blipFailureUnattachedTrailer REMOVE_BLIP blipFailureUnattachedTrailer ENDIF IF NOT DOES_BLIP_EXIST blipFailureOutOfCab ADD_BLIP_FOR_CAR carCab blipFailureOutOfCab SET_BLIP_AS_FRIENDLY blipFailureOutOfCab TRUE ENDIF ELSE // ...reattach trailer IF countFailure = 1 PRINT_WITH_NUMBER TRK_H4b countFailure 1000 1 ELSE PRINT_WITH_NUMBER TRK_H4 countFailure 1000 1 ENDIF IF NOT DOES_BLIP_EXIST blipFailureUnattachedTrailer ADD_BLIP_FOR_CAR carTrailer blipFailureUnattachedTrailer SET_BLIP_AS_FRIENDLY blipFailureUnattachedTrailer TRUE ENDIF IF DOES_BLIP_EXIST blipFailureOutOfCab REMOVE_BLIP blipFailureOutOfCab ENDIF ENDIF ELSE // ...failure conditions don't apply, so check if they do now IF NOT IS_TRAILER_ATTACHED_TO_CAB carTrailer carCab OR NOT IS_CHAR_IN_CAR scplayer carCab // ...failure conditions now apply // Give the player a minute to rectify the situation countFailure = 60 timerFailureConditions = m_mission_timer + 1000 flagFailureConditionsApply = TRUE // Remove destination blip REMOVE_BLIP blipDestination // Display the message ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE IF NOT IS_CHAR_IN_CAR scplayer carCab // ...get back in the cab PRINT_WITH_NUMBER_NOW TRK_H5 countFailure 1000 1 ELSE // ...reattach trailer PRINT_WITH_NUMBER_NOW TRK_H4 countFailure 1000 1 ENDIF ENDIF ENDIF RETURN // **************************************** // Setup Mission Control Truck_Setup_Mission_Control: // Health issues nInitialHealth = 750 // out of 750 because the cab catches fire at 250 IF nMissionType = TRUCK_NORMAL_DAMAGE_MISSION OR nMissionType = TRUCK_TIMED_DAMAGE_MISSION nInitialHealth = 500 ENDIF IF nMissionType = TRUCK_FRAGILE_DAMAGE_MISSION nInitialHealth = 250 ENDIF nTempInt = nInitialHealth + TRUCK_CAR_NOT_ON_FIRE_HEALTH_BOUNDARY SET_CAR_HEALTH carTrailer nTempInt SET_CAR_HEALTH carCab nTempInt // Calculate the initial mission time nMissionTimeStage = TRUCK_MISSION_TIME_NOT_CALCULATED GOSUB Truck_Calculate_Mission_Time // Displays IF nMissionType = TRUCK_NORMAL_DAMAGE_MISSION OR nMissionType = TRUCK_FRAGILE_DAMAGE_MISSION DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING g_Truck_damageKM COUNTER_DISPLAY_BAR 2 TRK_DMG ENDIF IF nMissionType = TRUCK_NORMAL_TIMED_MISSION GOSUB Truck_Calculate_Delivery_Time DISPLAY_ONSCREEN_TIMER_WITH_STRING g_Truck_timedKM TIMER_UP TRK_TIM FREEZE_ONSCREEN_TIMER TRUE ENDIF IF nMissionType = TRUCK_TIMED_DAMAGE_MISSION GOSUB Truck_Calculate_Delivery_Time DISPLAY_ONSCREEN_TIMER_WITH_STRING g_Truck_timedKM TIMER_UP TRK_TIM DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING g_Truck_damageKM COUNTER_DISPLAY_BAR 2 TRK_DMG FREEZE_ONSCREEN_TIMER TRUE ENDIF // Timed mission flags flagDisplayCashCutLate = FALSE flagDisplayCashCutVeryLate = FALSE RETURN // **************************************** // Calculate Mission Time Truck_Calculate_Mission_Time: // Calculate the next mission time boundary SWITCH nMissionTimeStage CASE TRUCK_MISSION_TIME_NOT_CALCULATED // ...initialisation timerMissionControl = nDestinationDistance * TRUCK_DISTANCE_TO_TIME_CALC_NOT_LATE timerMissionControl += m_mission_timer nMissionTimeStage = TRUCK_MISSION_TIME_NOT_LATE BREAK CASE TRUCK_MISSION_TIME_NOT_LATE // ...stage1 (for timed missions, equivalent of 'LATE DELIVERY') timerMissionControl = nDestinationDistance * TRUCK_DISTANCE_TO_TIME_CALC_LATE timerMissionControl += m_mission_timer nMissionTimeStage = TRUCK_MISSION_TIME_LATE BREAK CASE TRUCK_MISSION_TIME_LATE // ...stage2 (for timed missions, equivalent of 'VERY LATE DELIVERY') timerMissionControl = nDestinationDistance * TRUCK_DISTANCE_TO_TIME_CALC_LATE timerMissionControl += m_mission_timer nMissionTimeStage = TRUCK_MISSION_TIME_VERY_LATE BREAK CASE TRUCK_MISSION_TIME_VERY_LATE // ...Last Chance: Deliver within a certain time or mission failed GOSUB Truck_Calculate_Last_Chance nMissionTimeStage = TRUCK_MISSION_TIME_LAST_CHANCE BREAK CASE TRUCK_MISSION_TIME_LAST_CHANCE // ...time up nMissionTimeStage = TRUCK_MISSION_TIME_ELAPSED BREAK ENDSWITCH RETURN // **************************************** // Calculate Last Chance Truck_Calculate_Last_Chance: // Calculate the Last Chance 'deliver by' time and display any messaging nTempInt = TRUCK_LAST_CHANCE_hours * 60 nTempInt += TRUCK_LAST_CHANCE_mins nTempInt *= 1000 timerMissionControl = m_mission_timer + nTempInt GET_TIME_OF_DAY nTempInt nTempInt2 // Update minutes nTempInt2 += TRUCK_LAST_CHANCE_mins IF nTempInt2 >= 60 nTempInt2 -= 60 nTempInt++ ENDIF // Update Hours nTempInt += TRUCK_LAST_CHANCE_hours IF nTempInt >= 24 nTempInt -= 24 ENDIF // Convert the Hours and Minutes into a msec equivalent for display nTempInt3 = nTempInt * 60 nTempInt3 += nTempInt2 nTempInt3 *= 1000 g_Truck_timedKM = nTempInt3 // Display the 'deadline' time DISPLAY_ONSCREEN_TIMER_WITH_STRING g_Truck_timedKM TIMER_UP TRK_DLN FREEZE_ONSCREEN_TIMER TRUE // Set a flag to display an appropriate message when possible flagDisplayLastChance = TRUE RETURN // **************************************** // Calculate Delivery Time Truck_Calculate_Delivery_Time: // Used by the timed missions to calculate a delivery-by time in hours/minutes // ...calculate the 'not late' delivery time in msec nTempInt = nDestinationDistance * TRUCK_DISTANCE_TO_TIME_CALC_NOT_LATE // ...convert it to seconds nTempInt /= 1000 // ...get the number of minutes (note: this will ignore the remainder) nTempInt2 = nTempInt / 60 // ...work out how many seconds these minutes are the equivalent of nTempInt3 = nTempInt2 * 60 // ...get the seconds nTempInt -= nTempInt3 // NOTE: nTempInt2 contains the minutes and nTempInt contains the seconds // These are the equivalent of hours and minutes for the time of day GET_TIME_OF_DAY nHours nMinutes // Update the minutes nMinutes += nTempInt IF nMinutes >= 60 nHours++ nMinutes -= 60 ENDIF // Update the hours nHours += nTempInt2 WHILE nHours >= 24 nHours -= 24 ENDWHILE // Round up the minutes to be a decent time (ie: on the hour, half hour, or quarter hour) flagTempFlag = FALSE IF nMinutes > 45 // ...round up to the next hour nTempInt = 60 - nMinutes nMinutes = 0 nHours++ IF nHours = 24 nHours = 0 ENDIF // ...increase the mission time accordingly nTempInt *= 1000 timerMissionControl += nTempInt flagTempFlag = TRUE ENDIF IF flagTempFlag = FALSE IF nMinutes > 30 AND nMinutes < 45 // ...round up to quarter to the hour nTempInt = 45 - nMinutes nMinutes = 45 // ...increase the mission time accordingly nTempInt *= 1000 timerMissionControl += nTempInt flagTempFlag = TRUE ENDIF ENDIF IF flagTempFlag = FALSE IF nMinutes > 15 AND nMinutes < 30 // ...round up to the half hour nTempInt = 30 - nMinutes nMinutes = 30 // ...increase the mission time accordingly nTempInt *= 1000 timerMissionControl += nTempInt flagTempFlag = TRUE ENDIF ENDIF IF flagTempFlag = FALSE IF nMinutes > 0 AND nMinutes < 15 // ...round up to quarter past the hour nTempInt = 15 - nMinutes nMinutes = 15 // ...increase the mission time accordingly nTempInt *= 1000 timerMissionControl += nTempInt flagTempFlag = TRUE ENDIF ENDIF // Convert the Hours and Minutes into a msec equivalent for display nTempInt = nHours * 60 nTempInt += nMinutes nTempInt *= 1000 g_Truck_timedKM = nTempInt RETURN // **************************************** // Regulate the cab and trailer health Truck_Regulate_Cab_And_Trailer_Health: // Set both cab and trailer health to the lowest health GET_CAR_HEALTH carTrailer nTempInt GET_CAR_HEALTH carCab nTempInt2 IF nTempInt > nTempInt2 nTempInt = nTempInt2 ENDIF IF nTempInt > 1 SET_CAR_HEALTH carCab nTempInt SET_CAR_HEALTH carTrailer nTempInt ENDIF IF flagDamageMission = FALSE RETURN ENDIF // Update the display damage bar nTempInt = nTempInt - TRUCK_CAR_NOT_ON_FIRE_HEALTH_BOUNDARY nTempInt = nTempInt * 100 nTempInt = nTempInt / nInitialHealth IF nTempInt < 0 nTempInt = 0 ENDIF g_Truck_damageKM = nTempInt RETURN // **************************************** // Maintain Mission Timer Truck_Maintain_Mission_Timer: // The time no longer has no penalty and penalty elements IF timerMissionControl < m_mission_timer // ...timer has elapsed, so recalculate timer to give a bit more time GOSUB Truck_Calculate_Mission_Time IF nMissionTimeStage = TRUCK_MISSION_TIME_ELAPSED // ...out of time m_failed = TRUE timerMissionControl = 0 countCash = 0 nReasonForFailure = TRUCK_FAILED_OUT_OF_TIME RETURN ENDIF // For timed missions, a new timer stage will result in a drop in cash IF flagTimedMission = TRUE IF nMissionTimeStage = TRUCK_MISSION_TIME_LATE OR nMissionTimeStage = TRUCK_MISSION_TIME_VERY_LATE OR nMissionTimeStage = TRUCK_MISSION_TIME_LAST_CHANCE nInitialCash = nInitialCash / 2 // Flash the cash by removing the counter and adding it again CLEAR_ONSCREEN_COUNTER g_Truck_cashKM DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING g_Truck_cashKM COUNTER_DISPLAY_NUMBER 1 TRK_CSH // Remove the 'deliver by' time IF nMissionTimeStage = TRUCK_MISSION_TIME_LATE CLEAR_ONSCREEN_TIMER g_Truck_timedKM ENDIF // Display a 'cash cut' message IF nMissionTimeStage = TRUCK_MISSION_TIME_LATE flagDisplayCashCutLate = TRUE ENDIF IF nMissionTimeStage = TRUCK_MISSION_TIME_VERY_LATE flagDisplayCashCutVeryLate = TRUE ENDIF ENDIF ENDIF ENDIF RETURN // **************************************** // Update Cash Truck_Update_Cash: // Re-calculate the cash for the mission // NOTE: nInitialCash gets modified when a timed mission boundary is reached, so start with that as the base value countCash = nInitialCash // Damage missions reduce this amount based on the damage taken IF flagDamageMission = TRUE IF IS_CAR_DEAD carCab countCash = 0 ELSE // ...get current health GET_CAR_HEALTH carCab nTempInt // Check for being on fire IF nTempInt < TRUCK_CAR_NOT_ON_FIRE_HEALTH_BOUNDARY countCash = 0 ELSE // ...not on fire, so reduce it by the 'on fire' health value nTempInt -= TRUCK_CAR_NOT_ON_FIRE_HEALTH_BOUNDARY // ...calculate the percentage health remaining from the initial value nTempInt2 = nTempInt * 100 nTempInt2 /= nInitialHealth // ...the current cash becomes this percentage of the base value countCash *= nTempInt2 countCash /= 100 ENDIF ENDIF ENDIF // Police missions reduce this amount based on the damage taken, but damage plays a lesser part than in damage missions // NOTE: ***7/9/04 *** Police missions no longer reduce cash for damages IF flagPoliceMission = TRUE IF IS_CAR_DEAD carCab countCash = 0 /* ELSE // ...get current health GET_CAR_HEALTH carCab nTempInt // ...reduce it by the 'on fire' health value IF nTempInt < TRUCK_CAR_NOT_ON_FIRE_HEALTH_BOUNDARY countCash = 0 ELSE nTempInt -= TRUCK_CAR_NOT_ON_FIRE_HEALTH_BOUNDARY // ...calculate the percentage health remaining from the initial value nTempInt2 = nTempInt * 100 nTempInt2 /= nInitialHealth // Increase this percentage nTempInt3 = 100 - nTempInt2 nTempInt3 /= 2 nTempInt2 += nTempInt3 // ...the current cash becomes this percentage of the base value countCash *= nTempInt2 countCash /= 100 ENDIF */ ENDIF ENDIF // Update the cash display value g_Truck_cashKM = countCash RETURN // **************************************** // Maintain Wanted Level Truck_Maintain_Wanted_Level: IF flagPoliceMission = FALSE RETURN ENDIF IF nMissionType = TRUCK_ILLEGAL_MISSION IF NOT IS_WANTED_LEVEL_GREATER player1 2 ALTER_WANTED_LEVEL_NO_DROP player1 3 ENDIF RETURN ENDIF IF nMissionType = TRUCK_HIGHLY_ILLEGAL_MISSION IF NOT IS_WANTED_LEVEL_GREATER player1 3 ALTER_WANTED_LEVEL_NO_DROP player1 4 ENDIF RETURN ENDIF RETURN // ************************************************************************************************************* // MISSION INITIALISATION // ************************************************************************************************************* // *********************************** // Initialise the available missions Truck_Initialise_Available_Missions: nDestinationArea = -1 nDestinationLocation = -1 nMissionType = 0 GOSUB Truck_Initialise_Cabs_And_Trailers GOSUB Truck_Initialise_Mission_Destination GOSUB Truck_Initialise_Destination_Coords GOSUB Truck_Initialise_Mission_Type GOSUB Truck_Initialise_Distance GOSUB Truck_Initialise_Cash RETURN // *********************************** // Create the available cabs and trucks Truck_Initialise_Cabs_And_Trailers: // Cab xposTemp = -76.1692 yposTemp = -1128.9630 zposTemp = 0.0781 headTemp = 69.9957 CLEAR_AREA xposTemp yposTemp zposTemp 30.0 FALSE SWITCH nThisCab CASE TRUCK_CAB_PETRO CREATE_CAR PETRO xposTemp yposTemp zposTemp carCab BREAK CASE TRUCK_CAB_LINERUN CREATE_CAR LINERUN xposTemp yposTemp zposTemp carCab BREAK CASE TRUCK_CAB_RDTRAIN CREATE_CAR RDTRAIN xposTemp yposTemp zposTemp carCab BREAK DEFAULT WRITE_DEBUG Unknown_Cab ENDSWITCH SET_CAR_HEADING carCab headTemp // Trailer xposTemp = -60.6033 yposTemp = -1136.8992 zposTemp = 0.0781 CLEAR_AREA xposTemp yposTemp zposTemp 50.0 FALSE SWITCH nThisTrailer CASE TRUCK_TRAILER_PETROTR CREATE_CAR PETROTR xposTemp yposTemp zposTemp carTrailer BREAK CASE TRUCK_TRAILER_ARTICT1 CREATE_CAR ARTICT1 xposTemp yposTemp zposTemp carTrailer BREAK CASE TRUCK_TRAILER_ARTICT2 CREATE_CAR ARTICT2 xposTemp yposTemp zposTemp carTrailer BREAK CASE TRUCK_TRAILER_ARTICT3 CREATE_CAR ARTICT3 xposTemp yposTemp zposTemp carTrailer BREAK DEFAULT WRITE_DEBUG Unknown_Trailer ENDSWITCH ATTACH_TRAILER_TO_CAB carTrailer carCab RETURN // *********************************** // Initialise the mission Destination Truck_Initialise_Mission_Destination: // DESTINATION AREAS // Country East (near) // Country East (far) // Los Santos // Country South // San Fierro // Country North // Country North 2 // Las Venturas // *** IMPORTANT *** // If the destination area order changes then this will affect the printing of the 'need to open SF to proceed' message at the start // MISSION DESTINATION IS PROGRESSIVE AND BASED ON THE NUMBER OF MISSIONS PASSED SWITCH g_nTruckMissionsPassed CASE 0 // Only Country East (near) nDestinationArea = TRUCK_COUNTRY_EAST_NEAR_DESTINATION BREAK CASE 1 // Only Country East (far) nDestinationArea = TRUCK_COUNTRY_EAST_FAR_DESTINATION BREAK CASE 2 // Only Los Santos nDestinationArea = TRUCK_LOS_SANTOS_DESTINATION BREAK CASE 3 // Only Country South nDestinationArea = TRUCK_COUNTRY_SOUTH_DESTINATION BREAK CASE 4 // Only San Fierro nDestinationArea = TRUCK_SAN_FIERRO_DESTINATION BREAK CASE 5 // Country South or San Fierro nTempInt2 = TRUCK_SAN_FIERRO_DESTINATION + 1 GENERATE_RANDOM_INT_IN_RANGE TRUCK_COUNTRY_SOUTH_DESTINATION nTempInt2 nDestinationArea BREAK CASE 6 // Country North or Country North2 nTempInt2 = TRUCK_COUNTRY_NORTH_2_DESTINATION + 1 GENERATE_RANDOM_INT_IN_RANGE TRUCK_COUNTRY_NORTH_DESTINATION nTempInt2 nDestinationArea BREAK CASE 7 // Only Las Venturas nDestinationArea = TRUCK_LAS_VENTURAS_DESTINATION BREAK DEFAULT // Anywhere except Country East (near) nTempInt2 = TRUCK_HIGHEST_DESTINATION + 1 GENERATE_RANDOM_INT_IN_RANGE TRUCK_COUNTRY_EAST_FAR_DESTINATION nTempInt2 nDestinationArea BREAK ENDSWITCH // Choose Destination Location SWITCH nDestinationArea // Country East (near) CASE TRUCK_COUNTRY_EAST_NEAR_DESTINATION GOSUB Truck_Choose_Mission_Location_CountryEastNear BREAK // Country East (far) CASE TRUCK_COUNTRY_EAST_FAR_DESTINATION GOSUB Truck_Choose_Mission_Location_CountryEastFar BREAK // Los Santos CASE TRUCK_LOS_SANTOS_DESTINATION GOSUB Truck_Choose_Mission_Location_LosSantos BREAK // Las Venturas CASE TRUCK_LAS_VENTURAS_DESTINATION GOSUB Truck_Choose_Mission_Location_LasVenturas BREAK // Country North 2 CASE TRUCK_COUNTRY_NORTH_2_DESTINATION GOSUB Truck_Choose_Mission_Location_CountryNorth2 BREAK // Country South CASE TRUCK_COUNTRY_SOUTH_DESTINATION GOSUB Truck_Choose_Mission_Location_CountrySouth BREAK // San Fierro CASE TRUCK_SAN_FIERRO_DESTINATION GOSUB Truck_Choose_Mission_Location_SanFierro BREAK // Country North CASE TRUCK_COUNTRY_NORTH_DESTINATION GOSUB Truck_Choose_Mission_Location_CountryNorth BREAK DEFAULT WRITE_DEBUG UNKNOWN_DESTINATION_AREA ENDSWITCH RETURN // *********************************** // Initialise the mission Destination Truck_Choose_Mission_Location_CountryEastNear: // COUNTRY EAST DESTINATIONS // 0: FleischBerg Brewery in Red County // 1: Warehouse in Blueberry // 2: Finalbuild Construction in Bluebery Acres // 3: Warehouse in Dillimore GENERATE_RANDOM_INT_IN_RANGE 0 4 nDestinationLocation RETURN // *********************************** // Initialise the mission Destination Truck_Choose_Mission_Location_CountryEastFar: // COUNTRY EAST DESTINATIONS // 0: Factory in Montgomery // 1: BioEngineering in Montgomery GENERATE_RANDOM_INT_IN_RANGE 0 2 nDestinationLocation RETURN // *********************************** // Initialise the mission Destination Truck_Choose_Mission_Location_LasVenturas: // LAS VENTURAS DESTINATIONS // 0: Warehouse in Redsands West // 1: Plastic Chips Factory // 2: Abattoir in Whitewood Estates // 3: Las Venturas Airport Depot // 4: Starfish Casino Building Site // 5: Shopping Mall in Creek // 6: Warehouses in Spinybed // 7: Chinese Shopping Mall in Pilgrim // 8: Warehouses in Rockshore East // 9: Building Site in Rockshore East // 10: Warehouses at Randolph Industrial Estate // 11: Warehouses at LVA Freight depot // 12: Las Venturas Airport // 13: Warehouses in Redsands West GENERATE_RANDOM_INT_IN_RANGE 0 14 nDestinationLocation RETURN // *********************************** // Initialise the mission Destination Truck_Choose_Mission_Location_LosSantos: // LOS SANTOS DESTINATIONS // 0: Chemical Plant in Ocean Docks // 1: Ship in Ocean Docks // 2: Industrial area in Willowfield // 3: Airport in El Corona GENERATE_RANDOM_INT_IN_RANGE 0 4 nDestinationLocation RETURN // *********************************** // Initialise the mission Destination Truck_Choose_Mission_Location_SanFierro: // SAN FIERRO DESTINATIONS // 0: SF Airport Terminal at Easter Bay Airport // 1: Bridge under construction at Battery Point // 2: Petrol Station at Easter Basin // 3: Easter Basin Docks GENERATE_RANDOM_INT_IN_RANGE 0 4 nDestinationLocation RETURN // *********************************** // Initialise the mission Destination Truck_Choose_Mission_Location_CountrySouth: // COUNTRY SOUTH DESTINATIONS // 0: Junkyard in Whetstone // 1: Woodmill in Angel Pine // 2: Truckstop in Whetstone GENERATE_RANDOM_INT_IN_RANGE 0 3 nDestinationLocation RETURN // *********************************** // Initialise the mission Destination Truck_Choose_Mission_Location_CountryNorth: // COUNTRY NORTH DESTINATIONS // 0: Truckstop in El Quebrados // 1: Art-deco cafe in Bayside Marina // 2: Fuelstop in Tierra Robada GENERATE_RANDOM_INT_IN_RANGE 0 3 nDestinationLocation RETURN // *********************************** // Initialise the mission Destination Truck_Choose_Mission_Location_CountryNorth2: // COUNTRY NORTH2 DESTINATIONS // 0: Refinery in Green Palms // 1: Truckstop in Bone County // 2: Factory in Bone County // 3: The Sherman Dam // 4: Desert Airfield in Verdant Meadows GENERATE_RANDOM_INT_IN_RANGE 0 5 nDestinationLocation RETURN // *********************************** // Initialise the mission type Truck_Initialise_Mission_Type: SWITCH g_nTruckMissionsPassed CASE 0 CASE 3 // Normal Timed mission nMissionType = TRUCK_NORMAL_TIMED_MISSION BREAK CASE 1 // Normal Damage mission nMissionType = TRUCK_NORMAL_DAMAGE_MISSION BREAK CASE 4 // Fragile Damage mission nMissionType = TRUCK_FRAGILE_DAMAGE_MISSION BREAK CASE 2 CASE 5 // 3* police mission nMissionType = TRUCK_ILLEGAL_MISSION BREAK CASE 6 // Timed Damage mission nMissionType = TRUCK_TIMED_DAMAGE_MISSION BREAK CASE 7 // 4* police mission nMissionType = TRUCK_HIGHLY_ILLEGAL_MISSION BREAK DEFAULT // Random mission GENERATE_RANDOM_INT_IN_RANGE 0 TRUCK_HIGHEST_MISSION nMissionType // ...add 1 because mission numbers run from 1 upwards nMissionType = nMissionType + 1 BREAK ENDSWITCH // Set the mission flags IF nMissionType = TRUCK_NORMAL_DAMAGE_MISSION OR nMissionType = TRUCK_FRAGILE_DAMAGE_MISSION OR nMissionType = TRUCK_TIMED_DAMAGE_MISSION flagDamageMission = TRUE ENDIF IF nMissionType = TRUCK_NORMAL_TIMED_MISSION OR nMissionType = TRUCK_TIMED_DAMAGE_MISSION flagTimedMission = TRUE ENDIF IF nMissionType = TRUCK_ILLEGAL_MISSION OR nMissionType = TRUCK_HIGHLY_ILLEGAL_MISSION flagPoliceMission = TRUE ENDIF RETURN // *********************************** // Initialise the destination distance Truck_Initialise_Distance: // Find the distance between the destination and the trucking depot xloTemp = xposDestination - truckX yloTemp = yposDestination - truckY xhiTemp = xloTemp * xloTemp yhiTemp = yloTemp * yloTemp fTempFloat = xhiTemp + yhiTemp SQRT fTempFloat fTempFloat2 // Convert the distance to an int nDestinationDistance =# fTempFloat2 nLoop++ RETURN // *********************************** // Initialise the cash for the mission Truck_Initialise_Cash: // The basic cash value based on distance SWITCH nDestinationArea CASE TRUCK_COUNTRY_EAST_NEAR_DESTINATION CASE TRUCK_COUNTRY_EAST_FAR_DESTINATION CASE TRUCK_LOS_SANTOS_DESTINATION nInitialCash = 1000 BREAK CASE TRUCK_COUNTRY_SOUTH_DESTINATION CASE TRUCK_SAN_FIERRO_DESTINATION nInitialCash = 3000 BREAK CASE TRUCK_COUNTRY_NORTH_DESTINATION CASE TRUCK_COUNTRY_NORTH_2_DESTINATION CASE TRUCK_LAS_VENTURAS_DESTINATION nInitialCash = 4000 BREAK DEFAULT WRITE_DEBUG INITIALISE_CASH_UNKNOWN_DESTINATION ENDSWITCH // Now add some more cash based on the mission type SWITCH nMissionType CASE TRUCK_NORMAL_TIMED_MISSION // No additional cash BREAK CASE TRUCK_NORMAL_DAMAGE_MISSION nInitialCash = nInitialCash + 500 BREAK CASE TRUCK_FRAGILE_DAMAGE_MISSION CASE TRUCK_ILLEGAL_MISSION nInitialCash = nInitialCash + 1000 BREAK CASE TRUCK_TIMED_DAMAGE_MISSION nInitialCash = nInitialCash + 3000 BREAK CASE TRUCK_HIGHLY_ILLEGAL_MISSION nInitialCash = nInitialCash + 6000 BREAK DEFAULT WRITE_DEBUG INITIALISE_CASH_UNKNOWN_MISSION_TYPE ENDSWITCH // The only flaw is that mission 4 and 5 have the same cash, so cheat by adding on an extra 1000 IF g_nTruckMissionsPassed = 5 nInitialCash += 1000 ENDIF RETURN // *********************************** // Get the mission destination coordinates Truck_Initialise_Destination_Coords: // Find Destination Location SWITCH nDestinationArea // Country East (near) CASE TRUCK_COUNTRY_EAST_NEAR_DESTINATION GOSUB Truck_Get_Mission_Coordinates_CountryEastNear BREAK // Country East (far) CASE TRUCK_COUNTRY_EAST_FAR_DESTINATION GOSUB Truck_Get_Mission_Coordinates_CountryEastFar BREAK // Los Santos CASE TRUCK_LOS_SANTOS_DESTINATION GOSUB Truck_Get_Mission_Coordinates_LosSantos BREAK // Las Venturas CASE TRUCK_LAS_VENTURAS_DESTINATION GOSUB Truck_Get_Mission_Coordinates_LasVenturas BREAK // Country North 2 CASE TRUCK_COUNTRY_NORTH_2_DESTINATION GOSUB Truck_Get_Mission_Coordinates_CountryNorth2 BREAK // Country South CASE TRUCK_COUNTRY_SOUTH_DESTINATION GOSUB Truck_Get_Mission_Coordinates_CountrySouth BREAK // San Fierro CASE TRUCK_SAN_FIERRO_DESTINATION GOSUB Truck_Get_Mission_Coordinates_SanFierro BREAK // Country North CASE TRUCK_COUNTRY_NORTH_DESTINATION GOSUB Truck_Get_Mission_Coordinates_CountryNorth BREAK DEFAULT WRITE_DEBUG UNKNOWN_DESTINATION_AREA ENDSWITCH RETURN // *********************************** // Get the mission destination coordinates in Country East (near) Truck_Get_Mission_Coordinates_CountryEastNear: // COUNTRY EAST DESTINATIONS // 0: FleischBerg Brewery in Red County // 1: Warehouse in Blueberry // 2: Finalbuild Construction in Bluebery Acres // 3: Warehouse in Dillimore SWITCH nDestinationLocation // FleishBerg Brewery in Red County CASE 0 xposDestination = -187.4041 yposDestination = -277.0196 zposDestination = 0.4219 BREAK // Warehouse in Blueberry CASE 1 xposDestination = 58.0364 yposDestination = -256.7285 zposDestination = 0.5781 BREAK // Finalbuild Construction in Bluebery Acres CASE 2 xposDestination = 95.8675 yposDestination = -154.3627 zposDestination = 1.5751 BREAK // Warehouse in Dillimore CASE 3 xposDestination = 809.7556 yposDestination = -598.0007 zposDestination = 15.1875 BREAK DEFAULT WRITE_DEBUG UNKNOWN_COUNTRYEASTNEAR_LOCATION ENDSWITCH RETURN // *********************************** // Get the mission destination coordinates in Country East (far) Truck_Get_Mission_Coordinates_CountryEastFar: // COUNTRY EAST DESTINATIONS // 0: Factory in Montgomery // 1: BioEngineering in Montgomery SWITCH nDestinationLocation // Factory in Montgomery CASE 0 xposDestination = 1403.8329 yposDestination = 399.4294 zposDestination = 18.7500 BREAK // BioEngineering in Montgomery CASE 1 xposDestination = 1338.2888 yposDestination = 348.9004 zposDestination = 18.4062 BREAK DEFAULT WRITE_DEBUG UNKNOWN_COUNTRYEASTFAR_LOCATION ENDSWITCH RETURN // *********************************** // Get the mission destination coordinates in Las Venturas Truck_Get_Mission_Coordinates_LasVenturas: // LAS VENTURAS DESTINATIONS // 0: Warehouse in Redsands West // 1: Plastic Chips Factory // 2: Abattoir in Whitewood Estates // 3: Las Venturas Airport Depot // 4: Starfish Casino Building Site // 5: Shopping Mall in Creek // 6: Warehouses in Spinybed // 7: Chinese Shopping Mall in Pilgrim // 8: Warehouses in Rockshore East // 9: Building Site in Rockshore East // 10: Warehouses at Randolph Industrial Estate // 11: Warehouses at LVA Freight depot // 12: Las Venturas Airport // 13: Warehouses in Redsands West SWITCH nDestinationLocation // Warehouse in Redsands West CASE 0 xposDestination = 1449.7152 yposDestination = 2358.8516 zposDestination = 9.8203 BREAK // Plastic Chips Company CASE 1 xposDestination = 1037.4753 yposDestination = 2131.3445 zposDestination = 9.8203 BREAK // Abattoir CASE 2 xposDestination = 987.9741 yposDestination = 2080.3894 zposDestination = 9.8203 BREAK // Airport Fuel Depot CASE 3 xposDestination = 1288.6713 yposDestination = 1195.2324 zposDestination = 9.8656 BREAK // Building Site1 CASE 4 xposDestination = 2467.9021 yposDestination = 1950.0613 zposDestination = 9.2381 BREAK // Shopping Mall Delivery Entrance CASE 5 xposDestination = 2792.7441 yposDestination = 2578.3364 zposDestination = 9.8203 BREAK // Warehouse2 CASE 6 xposDestination = 2271.4773 yposDestination = 2791.7390 zposDestination = 9.8203 BREAK // Chinese Shopping Mall CASE 7 xposDestination = 2596.5193 yposDestination = 1738.5822 zposDestination = 9.8281 BREAK // Warehouse3 CASE 8 xposDestination = 2818.8401 yposDestination = 912.5091 zposDestination = 9.7500 BREAK // Building Site2 CASE 9 xposDestination = 2706.5049 yposDestination = 827.3236 zposDestination = 9.2145 BREAK // Warehouse4 CASE 10 xposDestination = 1627.7229 yposDestination = 688.4043 zposDestination = 9.8281 BREAK // Warehouse5 CASE 11 xposDestination = 1504.4922 yposDestination = 981.1410 zposDestination = 9.7187 BREAK // Airport CASE 12 xposDestination = 1724.0117 yposDestination = 1590.1277 zposDestination = 9.2578 BREAK // Warehouse6 CASE 13 xposDestination = 1727.8325 yposDestination = 2338.0168 zposDestination = 9.8130 BREAK DEFAULT WRITE_DEBUG UNKNOWN_LASVENTURAS_LOCATION ENDSWITCH RETURN // *********************************** // Get the mission destination coordinates in Los Santos Truck_Get_Mission_Coordinates_LosSantos: // LOS SANTOS DESTINATIONS // 0: Chemical Plant in Ocean Docks // 1: Ship in Ocean Docks // 2: Industrial area in Willowfield // 3: Airport in El Corona SWITCH nDestinationLocation CASE 0 xposDestination = 2413.6826 yposDestination = -2113.6736 zposDestination = 12.3881 BREAK CASE 1 xposDestination = 2784.9731 yposDestination = -2455.4414 zposDestination = 12.6250 BREAK CASE 2 xposDestination = 2112.6621 yposDestination = -2070.3762 zposDestination = 12.5547 BREAK CASE 3 xposDestination = 1763.6410 yposDestination = -2070.3713 zposDestination = 12.6195 BREAK DEFAULT WRITE_DEBUG UNKNOWN_LOSSANTOS_LOCATION ENDSWITCH RETURN // *********************************** // Get the mission destination coordinates in Country South Truck_Get_Mission_Coordinates_CountrySouth: // COUNTRY SOUTH DESTINATIONS // 0: Junkyard in Whetstone // 1: Woodmill in Angel Pine // 2: Truckstop in Whetstone SWITCH nDestinationLocation CASE 0 xposDestination = -1888.6215 yposDestination = -1711.8364 zposDestination = 20.7656 BREAK CASE 1 xposDestination = -2117.2273 yposDestination = -2380.5068 zposDestination = 29.4688 BREAK CASE 2 xposDestination = -1545.4387 yposDestination = -2747.0322 zposDestination = 47.5314 BREAK DEFAULT WRITE_DEBUG UNKNOWN_COUNTRYSOUTH_LOCATION ENDSWITCH RETURN // *********************************** // Get the mission destination coordinates in Country North Truck_Get_Mission_Coordinates_CountryNorth: // COUNTRY NORTH DESTINATIONS // 0: Truckstop in El Quebrados // 1: Art-deco cafe in Bayside Marina // 2: Fuelstop in Tierra Robada SWITCH nDestinationLocation CASE 0 xposDestination = -1407.3749 yposDestination = 2645.9573 zposDestination = 54.7031 BREAK CASE 1 xposDestination = -2245.5808 yposDestination = 2371.6934 zposDestination = 3.9919 BREAK CASE 2 xposDestination = -1360.6327 yposDestination = 2068.0942 zposDestination = 51.4589 BREAK DEFAULT WRITE_DEBUG UNKNOWN_COUNTRYNORTH_LOCATION ENDSWITCH RETURN // *********************************** // Get the mission destination coordinates in Country North 2 Truck_Get_Mission_Coordinates_CountryNorth2: // COUNTRY NORTH2 DESTINATIONS // 0: Refinery in Green Palms // 1: Truckstop in Bone County // 2: Factory in Bone County // 3: The Sherman Dam // 4: Desert Airfield in Verdant Meadows SWITCH nDestinationLocation CASE 0 xposDestination = 274.2705 yposDestination = 1382.7808 zposDestination = 9.6016 BREAK CASE 1 xposDestination = 628.8638 yposDestination = 1714.8909 zposDestination = 5.9922 BREAK CASE 2 xposDestination = 635.0028 yposDestination = 1213.7767 zposDestination = 10.7188 BREAK CASE 3 xposDestination = -914.9530 yposDestination = 2012.1382 zposDestination = 59.9283 BREAK CASE 4 xposDestination = 385.8214 yposDestination = 2595.5503 zposDestination = 15.4843 BREAK DEFAULT WRITE_DEBUG UNKNOWN_COUNTRYNORTH2_LOCATION ENDSWITCH RETURN // *********************************** // Get the mission destination coordinates in San Fierro Truck_Get_Mission_Coordinates_SanFierro: // SAN FIERRO DESTINATIONS // 0: SF Airport Terminal at Easter Bay Airport // 1: Bridge under construction at Battery Point // 2: Petrol Station at Easter Basin // 3: Easter Basin Docks SWITCH nDestinationLocation CASE 0 xposDestination =-1556.9773 yposDestination = -441.3493 zposDestination = 5.0000 BREAK CASE 1 xposDestination = -2659.6309 yposDestination = 1380.6423 zposDestination = 6.1643 BREAK CASE 2 xposDestination = -1650.9283 yposDestination = 437.5679 zposDestination = 6.1797 BREAK CASE 3 xposDestination = -1745.1165 yposDestination = 37.8752 zposDestination = 2.5408 BREAK DEFAULT WRITE_DEBUG UNKNOWN_SAN_FIERRO_LOCATION ENDSWITCH RETURN // ************************************************************************************************************* // HOUSEKEEPING GOSUBS // ************************************************************************************************************* // **************************************** // DEBUG TOOLS Truck_Debug_Tools: // Display mission stage variables for debug IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_SPACE display_debug++ IF display_debug > 2 display_debug = 0 ENDIF CLEAR_ALL_VIEW_VARIABLES ENDIF IF display_debug = 1 // system variables Truck_view_debug[0] = m_stage Truck_view_debug[1] = m_goals Truck_view_debug[2] = m_mission_timer Truck_view_debug[3] = timerMissionControl - m_mission_timer Truck_view_debug[4] = nMissionTimeStage Truck_view_debug[5] = nDestinationDistance Truck_view_debug[6] = 0 Truck_view_debug[7] = 0 VIEW_INTEGER_VARIABLE Truck_view_debug[0] m_stage VIEW_INTEGER_VARIABLE Truck_view_debug[1] m_goals VIEW_INTEGER_VARIABLE Truck_view_debug[2] m_mission_timer VIEW_INTEGER_VARIABLE Truck_view_debug[3] Time_Boundary_hit VIEW_INTEGER_VARIABLE Truck_view_debug[4] Time_Stage VIEW_INTEGER_VARIABLE Truck_view_debug[5] Distance ENDIF IF display_debug = 2 // A second page of variable output (if required - just copy format above) ENDIF // Quit level - no mission pass/fail - cleanup only IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ESC m_quit = 1 ENDIF // Pause level IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_P IF m_pause = 0 m_pause = 1 WRITE_DEBUG LEVEL_PAUSED ELSE m_pause = 0 WRITE_DEBUG LEVEL_UNPAUSED ENDIF ENDIF RETURN // **************************************** // DEBUG SHORTCUTS Truck_Debug_Shortcuts: IF m_stage = 50 OR m_stage = 51 RETURN ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S GOSUB Truck_Display_Mission_Passed_Text m_passed = TRUE RETURN ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_M g_nTruckMissionsPassed++ WRITE_DEBUG_WITH_INT Missions_Passed g_nTruckMissionsPassed RETURN ENDIF flagTempFlag = 0 IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A flagTempFlag = 1 ENDIF flagTempFlag2 = 0 IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D flagTempFlag2 = 1 ENDIF nTempInt = 0 // used as a flag IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_J nTempInt = 1 ENDIF IF NOT flagTempFlag = 1 AND NOT flagTempFlag2 = 1 AND NOT nTempInt = 1 RETURN ENDIF IF flagTempFlag = 1 TEMP_nTestAreas++ IF TEMP_nTestAreas = 6 TEMP_nTestAreas = 0 ENDIF TEMP_nTestDestinations = 0 WRITE_DEBUG_WITH_INT Area TEMP_nTestAreas RETURN ENDIF IF flagTempFlag2 = 1 TEMP_nTestDestinations++ WRITE_DEBUG_WITH_INT Destination TEMP_nTestDestinations RETURN ENDIF IF TEMP_nTestAreas = 0 // ...country east SWITCH TEMP_nTestDestinations // Warehouse1 CASE 1 xposDestination = 56.744 yposDestination = -268.404 zposDestination = 0.579 BREAK // Builders Yard CASE 2 xposDestination = 100.397 yposDestination = -155.05 zposDestination = 1.583 BREAK // Warehouse 2 CASE 3 xposDestination = 815.046 yposDestination = -605.128 zposDestination = 15.336 BREAK // Factory 1 CASE 4 xposDestination = 1401.109 yposDestination = 398.763 zposDestination = 18.756 BREAK // Factory 2 CASE 5 xposDestination = 1343.125 yposDestination = 345.667 zposDestination = 18.556 BREAK // Brewery CASE 0 DEFAULT xposDestination = -189.23 yposDestination = -273.013 zposDestination = 0.429 TEMP_nTestDestinations = 0 BREAK ENDSWITCH ENDIF IF TEMP_nTestAreas = 2 // ...Vegas SWITCH TEMP_nTestDestinations // Plastic Chips Company CASE 1 xposDestination = 1042.15 yposDestination = 2130.46 zposDestination = 101.0 BREAK // Abattoir CASE 2 xposDestination = 983.11 yposDestination = 2076.38 zposDestination = 101.0 BREAK // Airport Fuel Depot CASE 3 xposDestination = 1288.6713 yposDestination = 1195.2324 zposDestination = 9.8656 BREAK // Building Site1 CASE 4 xposDestination = 2469.57 yposDestination = 1949.52 zposDestination = 101.0 BREAK // Shopping Mall Delivery Entrance CASE 5 xposDestination = 2807.83 yposDestination = 2609.94 zposDestination = 101.0 BREAK // Warehouse2 CASE 6 xposDestination = 2248.71 yposDestination = 2775.12 zposDestination = 101.0 BREAK // Chinese Shopping Mall CASE 7 xposDestination = 2603.22 yposDestination = 1730.48 zposDestination = 101.0 BREAK // Warehouse3 CASE 8 xposDestination = 2818.84 yposDestination = 912.19 zposDestination = 101.0 BREAK // Building Site2 CASE 9 xposDestination = 2710.36 yposDestination = 850.12 zposDestination = 101.0 BREAK // Warehouse4 CASE 10 xposDestination = 1588.90 yposDestination = 715.31 zposDestination = 101.0 BREAK // Warehouse5 CASE 11 xposDestination = 1446.26 yposDestination = 1000.51 zposDestination = 101.0 BREAK // Airport CASE 12 xposDestination = 1724.0117 yposDestination = 1590.1277 zposDestination = 9.2578 BREAK // Warehouse6 CASE 13 xposDestination = 1713.79 yposDestination = 2329.05 zposDestination = 101.0 BREAK // Warehouse1 CASE 0 DEFAULT xposDestination = 1450.8 yposDestination = 2360.69 zposDestination = 101.0 TEMP_nTestDestinations = 0 BREAK ENDSWITCH ENDIF IF TEMP_nTestAreas = 1 // ...los santos SWITCH TEMP_nTestDestinations // Ship CASE 1 xposDestination = 2759.0000 yposDestination = -2446.0000 zposDestination = 101.0 BREAK // Industry Type bit CASE 2 xposDestination = 2104.0000 yposDestination = -2089.0000 zposDestination = 101.0 BREAK // Airport CASE 3 xposDestination = 1751.0000 yposDestination = -2067.0000 zposDestination = 101.0 BREAK // Chemical Plant CASE 0 DEFAULT xposDestination = 2412.0000 yposDestination = -2106.0000 zposDestination = 101.0 TEMP_nTestDestinations = 0 BREAK ENDSWITCH ENDIF IF TEMP_nTestAreas = 4 // ...country south SWITCH TEMP_nTestDestinations // Woodmill CASE 1 xposDestination = -2001.03 yposDestination = -2388.08 zposDestination = 101.0 BREAK // Truckstop CASE 2 xposDestination = -1560.67 yposDestination = -2728.39 zposDestination = 101.0 BREAK // Junkyard CASE 0 DEFAULT xposDestination = -1835.0 yposDestination = -1647.68 zposDestination = 101.0 TEMP_nTestDestinations = 0 BREAK ENDSWITCH ENDIF IF TEMP_nTestAreas = 6 // ...country north SWITCH TEMP_nTestDestinations // Art-Deco Cafe CASE 1 xposDestination = -1945.89 yposDestination = 2377.90 zposDestination = 101.0 BREAK // Fuelstop CASE 2 xposDestination = -1471.49 yposDestination = 1864.85 zposDestination = 101.0 BREAK // TruckStop CASE 0 DEFAULT xposDestination = -1286.73 yposDestination = 2695.92 zposDestination = 101.0 TEMP_nTestDestinations = 0 BREAK ENDSWITCH ENDIF IF TEMP_nTestAreas = 3 // ...country north2 SWITCH TEMP_nTestDestinations // TruckStop CASE 1 xposDestination = 613.75 yposDestination = 1692.39 zposDestination = 101.0 BREAK // Factory CASE 2 xposDestination = 620.35 yposDestination = 1249.328 zposDestination = 101.0 BREAK // Dam CASE 3 xposDestination = -533.24 yposDestination = 1995.917 zposDestination = 101.0 BREAK // Desert Airfield CASE 4 xposDestination = 325.05 yposDestination = 2543.29 zposDestination = 101.0 BREAK // Refinery CASE 0 DEFAULT xposDestination = 246.56 yposDestination = 1435.19 zposDestination = 101.0 TEMP_nTestDestinations = 0 BREAK ENDSWITCH ENDIF IF TEMP_nTestAreas = 5 // ...san fierro SWITCH TEMP_nTestDestinations // Bridge under construction CASE 1 xposDestination = -2629.0908 yposDestination = 1387.4202 zposDestination = 101.0 BREAK // Easter Basin Naval Station CASE 2 xposDestination = -1530.776 yposDestination = 487.201 zposDestination = 101.0 BREAK // Easter Basin Docks CASE 3 xposDestination = -1745.08 yposDestination = 27.759 zposDestination = 101.0 BREAK // SF Airport CASE 0 DEFAULT xposDestination =-1549.8589 yposDestination = -434.8600 zposDestination = 101.0068 TEMP_nTestDestinations = 0 BREAK ENDSWITCH ENDIF CLEAR_AREA xposDestination yposDestination zposDestination 0.5 0 SET_CHAR_HEADING scplayer 0.0 SET_CHAR_COORDINATES scplayer xposDestination yposDestination -101.00 SET_CAMERA_BEHIND_PLAYER RETURN // **************************************** // FRAME COUNTER (Useful if processor scheduling is needed) Truck_Frame_Counter: m_frame_num++ IF m_frame_num > 9 m_frame_num = 0 ENDIF RETURN // **************************************** // ADDITIONAL TIMERS Truck_Additional_Timers: GET_GAME_TIMER m_this_frame_time m_time_diff = m_this_frame_time - m_last_frame_time m_last_frame_time = m_this_frame_time m_mission_timer += m_time_diff RETURN // ================================================================= // GOSUB: Next_Stage (sets flags and timers for next mission stage) // ================================================================= Truck_next_stage: m_stage++ m_goals = 0 TIMERA = 0 TIMERB = 0 RETURN // ************************************************************************************************************* // INTRO CUTSCENE GOSUB // ************************************************************************************************************* Truck_Intro_Cutscene: RETURN // ************************************************************************************************************* // INITIALISATION GOSUBS // ************************************************************************************************************* Truck_Initialisation: WHILE NOT IS_PLAYER_PLAYING player1 WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF // PRINT_BIG ( TRUCK ) 1000 4 //Trucking WAIT 1000 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOSUB Truck_Choose_Random_Cab_And_Trailer GOSUB Truck_Load_All_Models GOSUB Truck_Load_All_Anims // Position the player CLEAR_AREA truckX truckY truckZ 100.0 TRUE LOAD_SCENE truckX truckY truckZ SET_CHAR_COORDINATES scplayer -76.9664 -1134.6389 0.0781 SET_CHAR_HEADING scplayer 14.7291 SET_CAMERA_BEHIND_PLAYER // Don't want traffic while the player is hooking up the trailer SET_CAR_DENSITY_MULTIPLIER 0.0 // Initialise available missions GOSUB Truck_Initialise_Available_Missions WAIT 2000 // Return the oddjob 'title over fade' status back to default DRAW_ODDJOB_TITLE_BEFORE_FADE TRUE // Fade in SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON nReasonForFailure = TRUCK_FAILED_UNKNOWN GOSUB Truck_next_stage RETURN // *********************************** // CHOOSE RNADOM CAB AND TRAILER Truck_Choose_Random_Cab_And_Trailer: // Choose a random cab GENERATE_RANDOM_INT_IN_RANGE 0 TRUCK_HIGHEST_CAB nThisCab nThisCab++ IF nThisCab = TRUCK_CAB_PETRO // Choose the petrol tanker trailer nThisTrailer = TRUCK_TRAILER_PETROTR ELSE // Choose a random trailer (ignoring the petrol trailer) GENERATE_RANDOM_INT_IN_RANGE TRUCK_TRAILER_PETROTR TRUCK_HIGHEST_TRAILER nThisTrailer nThisTrailer++ ENDIF RETURN // *********************************** // LOAD ALL MODELS Truck_Load_All_Models: // CARS // ...cab SWITCH nThisCab CASE TRUCK_CAB_PETRO REQUEST_MODEL PETRO BREAK CASE TRUCK_CAB_LINERUN REQUEST_MODEL LINERUN BREAK CASE TRUCK_CAB_RDTRAIN REQUEST_MODEL RDTRAIN BREAK DEFAULT WRITE_DEBUG Unknown_Cab ENDSWITCH // ...trailer SWITCH nThisTrailer CASE TRUCK_TRAILER_PETROTR REQUEST_MODEL PETROTR BREAK CASE TRUCK_TRAILER_ARTICT1 REQUEST_MODEL ARTICT1 BREAK CASE TRUCK_TRAILER_ARTICT2 REQUEST_MODEL ARTICT2 BREAK CASE TRUCK_TRAILER_ARTICT3 REQUEST_MODEL ARTICT3 BREAK DEFAULT WRITE_DEBUG Unknown_Trailer ENDSWITCH // PEDS // GUNS // OBJECTS LOAD_ALL_MODELS_NOW // Are Cars Loaded? // ...cab SWITCH nThisCab CASE TRUCK_CAB_PETRO WHILE NOT HAS_MODEL_LOADED PETRO WAIT 0 ENDWHILE BREAK CASE TRUCK_CAB_LINERUN WHILE NOT HAS_MODEL_LOADED LINERUN WAIT 0 ENDWHILE BREAK CASE TRUCK_CAB_RDTRAIN WHILE NOT HAS_MODEL_LOADED RDTRAIN WAIT 0 ENDWHILE BREAK DEFAULT WRITE_DEBUG Unknown_Cab ENDSWITCH // ...trailer SWITCH nThisTrailer CASE TRUCK_TRAILER_PETROTR WHILE NOT HAS_MODEL_LOADED PETROTR WAIT 0 ENDWHILE BREAK CASE TRUCK_TRAILER_ARTICT1 WHILE NOT HAS_MODEL_LOADED ARTICT1 WAIT 0 ENDWHILE BREAK CASE TRUCK_TRAILER_ARTICT2 WHILE NOT HAS_MODEL_LOADED ARTICT2 WAIT 0 ENDWHILE BREAK CASE TRUCK_TRAILER_ARTICT3 WHILE NOT HAS_MODEL_LOADED ARTICT3 WAIT 0 ENDWHILE BREAK DEFAULT WRITE_DEBUG Unknown_Trailer ENDSWITCH // Are Peds Loaded? // Are weapons loaded? // Are the Objects loaded? RETURN // *********************************** // LOAD ALL ANIMS Truck_Load_All_Anims: // REQUEST_ANIMATION INT_HOUSE // for washing up // Are anims loaded? // WHILE NOT HAS_ANIMATION_LOADED INT_HOUSE // WAIT 0 // ENDWHILE RETURN // ************************************************************************************************************* // ENTITY CREATION GOSUBS // ************************************************************************************************************* // ************************************************************************************************************* // END OF LEVEL GOSUBS - fail, pass, cleanup // ************************************************************************************************************* // FAIL mission_failed_Truck: PRINT_BIG M_FAIL 5000 1 // Display reason for failure SWITCH nReasonForFailure CASE TRUCK_FAILED_OUT_OF_CASH PRINT_NOW TRK_F1 5000 1 BREAK CASE TRUCK_FAILED_OUT_OF_TIME PRINT_NOW TRK_F2 5000 1 BREAK CASE TRUCK_FAILED_TOO_MUCH_DAMAGE PRINT_NOW TRK_F3 5000 1 BREAK CASE TRUCK_FAILED_NOT_IN_CAB PRINT_NOW TRK_F4 5000 1 BREAK CASE TRUCK_FAILED_TRAILER_NOT_ATTACHED PRINT_NOW TRK_F5 5000 1 BREAK ENDSWITCH RETURN // PASS // ...text for passing mission (displayed while player being forced out of cab) Truck_Display_Mission_Passed_Text: GOSUB Truck_Update_Cash PRINT_WITH_NUMBER_BIG M_PASS countCash 5000 1 ADD_SCORE player1 countCash CLEAR_ONSCREEN_COUNTER g_Truck_cashKM // Increase number of missions passed g_nTruckMissionsPassed++ // Display number of missions passed IF g_nTruckMissionsPassed = 1 // ... 1 mission passed so don't display plurals PRINT_NOW TRK_P1 5000 1 ELSE IF g_nTruckMissionsPassed = TRUCK_HIGHEST_TRUCKING_MISSION IF done_truck_progress = FALSE REGISTER_ODDJOB_MISSION_PASSED PLAYER_MADE_PROGRESS 1 PLAY_MISSION_PASSED_TUNE 2 done_truck_progress = TRUE flagShowAssetAcquired = TRUE ENDIF // ...all progressive missions passed PRINT_BIG TRK_P4 5000 4 // PRINT_NOW TRK_P2 10000 1 ELSE // ...other numbers of missions PRINT_WITH_NUMBER_NOW TRK_P3 g_nTruckMissionsPassed 5000 1 ENDIF ENDIF // STATS INCREMENT_INT_STAT_NO_MESSAGE TRUCK_MISSIONS_PASSED 1 INCREMENT_INT_STAT_NO_MESSAGE TRUCK_MONEY_MADE countCash RETURN // ...regular 'pass' stuff mission_passed_Truck: // Clear wanted level only on pass CLEAR_WANTED_LEVEL player1 RETURN // CLEANUP mission_cleanup_Truck: DISPLAY_RADAR 3 // PATHING ON // Text Commands // USE_TEXT_COMMANDS FALSE // Entity Clearup MARK_CAR_AS_NO_LONGER_NEEDED carCab MARK_CAR_AS_NO_LONGER_NEEDED carTrailer // Blips REMOVE_BLIP blipCab REMOVE_BLIP blipDestination REMOVE_BLIP blipFailureOutOfCab REMOVE_BLIP blipFailureUnattachedTrailer // Counters CLEAR_ONSCREEN_COUNTER g_Truck_cashKM CLEAR_ONSCREEN_COUNTER g_Truck_damageKM CLEAR_ONSCREEN_TIMER g_Truck_timedKM // Animation Clearup // Get rid of the Player's mission specific weapons // Models MARK_MODEL_AS_NO_LONGER_NEEDED PETRO MARK_MODEL_AS_NO_LONGER_NEEDED LINERUN MARK_MODEL_AS_NO_LONGER_NEEDED RDTRAIN MARK_MODEL_AS_NO_LONGER_NEEDED PETROTR MARK_MODEL_AS_NO_LONGER_NEEDED ARTICT1 MARK_MODEL_AS_NO_LONGER_NEEDED ARTICT2 MARK_MODEL_AS_NO_LONGER_NEEDED ARTICT3 // === RESTORE ENVIRONMENT SETTINGS === SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 // Camera // Switch on emergency services SWITCH_EMERGENCY_SERVICES ON // Make sure the mobile phone doesn't ring immediately after a mission // ------------------------------------------------------------------- GET_GAME_TIMER timer_mobile_start // Return the oddjob 'title over fade' status back to default DRAW_ODDJOB_TITLE_BEFORE_FADE TRUE flag_player_on_oddjob = FALSE flag_player_on_mission = FALSE MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : Quarry // AUTHOR : Keith // DESCRIPTION : Quarry oddjobs (an amalgamation of Dozer and Dumper) // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** { // ************************************************************************************************************* // GENERAL INITIALISATION - Every level requires this // ************************************************************************************************************* SCRIPT_NAME Quarry // Global Variables for Main VAR_INT g_nQuarryMissionsPassed // Global Variables VAR_INT g_Quarry_timerKM VAR_INT g_Quarry_damageKM // Global Timing Array CONST_INT QUARRY_LEVELS 7 // Should be same as 'Highest Mission' VAR_INT g_Quarry_recordsKM[QUARRY_LEVELS] // Mission Start stuff GOSUB Quarry_Mission_Start IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB Quarry_Mission_Failed ENDIF GOSUB Quarry_Mission_Cleanup MISSION_END // Global Setup Quarry_Mission_Start: IF done_quarry_progress = FALSE REGISTER_MISSION_GIVEN ENDIF flag_player_on_mission = TRUE flag_player_on_oddjob = TRUE // general variables that are in every mission - DON'T DECLARE MISSION SPECIFIC VARIABLES HERE LVAR_INT m_stage LVAR_INT m_goals LVAR_INT m_passed LVAR_INT m_failed LVAR_INT m_quit LVAR_INT m_pause LVAR_INT m_status LVAR_INT m_frame_num LVAR_INT m_this_frame_time LVAR_INT m_last_frame_time LVAR_INT m_time_diff LVAR_INT m_fail_reason // commonly used timers LVAR_INT m_mission_timer // Debug variables LVAR_INT display_debug VAR_INT Quarry_view_debug[8] // GLOBAL (for output) // useful int variables LVAR_INT nLoop LVAR_INT nLoop2 LVAR_INT nTempInt LVAR_INT nTempInt2 LVAR_INT nTempInt3 LVAR_INT nTempCar LVAR_INT nTempPed LVAR_INT nTempObject LVAR_INT nTempAmmo LVAR_INT nTempTimer LVAR_INT nSeqTask // useful float variables LVAR_FLOAT xposTemp yposTemp zposTemp LVAR_FLOAT xposTemp2 yposTemp2 zposTemp2 LVAR_FLOAT xposTemp3 yposTemp3 zposTemp3 LVAR_FLOAT headTemp LVAR_FLOAT xloTemp yloTemp zloTemp LVAR_FLOAT xhiTemp yhiTemp zhiTemp LVAR_FLOAT fTempFloat LVAR_FLOAT fTempFloat2 LVAR_FLOAT fTempFloat3 LVAR_FLOAT fTempDistance LVAR_FLOAT fTempDistance2 // useful flag variables LVAR_INT flagTempFlag LVAR_INT flagTempFlag2 LVAR_INT flagCutscenePlaying LVAR_INT flagCleaningUpSkippedCutscene LVAR_INT flagSkipCutscene VAR_FLOAT quarryZCheck // Clear cutscene flags flagCutscenePlaying = 0 flagCleaningUpSkippedCutscene = 0 flagSkipCutscene = 0 m_stage = 0 //m_stage = QUARRY_STAGE_BURIAL_PUSH_BODY m_goals = 0 m_passed = 0 m_failed = 0 m_quit = 0 m_pause = 0 m_status = 0 m_fail_reason = 0 m_mission_timer = 0 display_debug = 0 TIMERA = 0 TIMERB = 0 // Consts // ...reasons for failure CONST_INT QUARRY_FAILED_UNKNOWN 0 CONST_INT QUARRY_FAILED_DOZER_DESTROYED 1 CONST_INT QUARRY_FAILED_DUMPER_DESTROYED 2 CONST_INT QUARRY_FAILED_DROPPED_LOAD 3 CONST_INT QUARRY_FAILED_COPS_ARRIVED 4 CONST_INT QUARRY_FAILED_DELIVERY_ARRIVED 5 CONST_INT QUARRY_FAILED_BOMB_EXPLODED 6 CONST_INT QUARRY_FAILED_TOO_CLOSE_TO_EXPLOSION 7 CONST_INT QUARRY_FAILED_BODY_DUMPED_IN_WRONG_PLACE 8 CONST_INT QUARRY_FAILED_TOO_MUCH_DAMAGE 9 CONST_INT QUARRY_FAILED_MISSED_DEADLINE 10 CONST_INT QUARRY_FAILED_EXPLOSIVES_ON_TRACK 11 CONST_INT QUARRY_FAILED_TRAIN_DESTROYED 12 CONST_INT QUARRY_FAILED_TOO_FAR_AWAY 13 CONST_INT QUARRY_FAILED_REACHED_SAFETY 14 // ...mission IDs CONST_INT QUARRY_MISSION_NONE 0 CONST_INT QUARRY_MISSION_ROCKFALL 1 CONST_INT QUARRY_MISSION_SABOTAGE 2 CONST_INT QUARRY_MISSION_DESTROY 3 CONST_INT QUARRY_MISSION_REMOVAL 4 CONST_INT QUARRY_MISSION_DELIVERY 5 CONST_INT QUARRY_MISSION_SPILLAGE 6 CONST_INT QUARRY_MISSION_BURIAL 7 // ----- CONST_INT QUARRY_HIGHEST_MISSION 7 // same as last mission number above (ALSO: same as QUARRY_LEVELS at top) // ...general mission controls CONST_INT QUARRY_MAX_ROCKS 7 CONST_INT QUARRY_MAX_BOMBS 10 CONST_INT QUARRY_MAX_BODIES 3 CONST_INT QUARRY_MAX_FIRES 18 // NOTE: 3 more than the Removal Max Fires CONST_INT QUARRY_MAX_FIRE_FUEL 7 CONST_INT QUARRY_MAX_HELPERS 3 // ...mission control variables CONST_INT QUARRY_BURIAL_MISSION_TIME_sec 481 // 8mins (+1 sec for cosmetic reasons) CONST_INT QUARRY_ROCKFALL_MAX_ROCKS 7 //CONST_INT QUARRY_ROCKFALL_HOURS 3 //CONST_INT QUARRY_ROCKFALL_MINUTES 30 CONST_INT QUARRY_ROCKFALL_MISSION_TIME_sec 211 // 3mins 30secs (+1 sec for cosmetic reasons) CONST_INT QUARRY_SABOTAGE_MAX_BOMBS 4 CONST_FLOAT QUARRY_SABOTAGE_PLAYER_IN_EXPLOSION_RANGE_m 20.0 CONST_FLOAT QUARRY_SABOTAGE_THEATRICAL_EXPLOSION_RANGE_m 21.0 // 1m farther than above CONST_INT QUARRY_SABOTAGE_MISSION_TIME_sec 300 // 5 mins CONST_INT QUARRY_REMOVAL_MAX_BODIES 3 CONST_INT QUARRY_REMOVAL_MAX_FIRES 15 CONST_INT QUARRY_REMOVAL_MAX_FIRE_FUEL 7 //CONST_INT QUARRY_REMOVAL_HOURS 4 //CONST_INT QUARRY_REMOVAL_MINUTES 0 CONST_INT QUARRY_REMOVAL_MISSION_TIME_sec 241 // 4mins (+1 sec for cosmetic reasons) CONST_INT QUARRY_DELIVERY_MAX_BOMBS 6 CONST_INT QUARRY_DELIVERY_HEALTH_THRESHOLD 10 //CONST_INT QUARRY_DELIVERY_HOURS 4 //CONST_INT QUARRY_DELIVERY_MINUTES 0 //CONST_INT QUARRY_DELIVERY_MISSION_TIME_sec 301 // 5mins (+1 sec for cosmetic reasons) CONST_INT QUARRY_DELIVERY_MISSION_TIME_sec 181 // 3mins (+1 sec for cosmetic reasons) CONST_INT QUARRY_SPILLAGE_MAX_BOMBS 10 CONST_INT QUARRY_SPILLAGE_TRAIN_TIME_sec 181 // 3mins (+1 sec for cosmetic reasons) CONST_FLOAT QUARRY_SPILLAGE_TRAIN_SPEED 56.0 CONST_INT QUARRY_DESTROY_MAX_CRATES 6 CONST_INT QUARRY_DESTROY_MISSION_TIME_sec 481 // 8mins (+1 sec for cosmetic reasons) CONST_FLOAT QUARRY_DESTROY_MAX_DISTANCE_APART_m 600.0 CONST_FLOAT QUARRY_DESTROY_TOO_FAR_AWAY_WARNING_m 500.0 CONST_FLOAT QUARRY_DESTROY_CLEAR_TOO_FAR_AWAY_WARNING_m 400.0 // ...mission stage IDs CONST_INT QUARRY_STAGE_NONE 0 CONST_INT QUARRY_STAGE_BURIAL_PUSH_BODY 1 CONST_INT QUARRY_STAGE_BURIAL_LOAD_DUMPER 2 CONST_INT QUARRY_STAGE_BURIAL_DRIVE_DUMPER 3 CONST_INT QUARRY_STAGE_BURIAL_COMPLETE 4 CONST_INT QUARRY_STAGE_ROCKFALL_CLEAR_PATHS 5 CONST_INT QUARRY_STAGE_ROCKFALL_COMPLETE 6 CONST_INT QUARRY_STAGE_SABOTAGE_MOVE_BOMBS 7 CONST_INT QUARRY_STAGE_SABOTAGE_COMPLETE 8 CONST_INT QUARRY_STAGE_REMOVAL_REACH_DUMPER 9 CONST_INT QUARRY_STAGE_REMOVAL_DUMP_BODIES 10 CONST_INT QUARRY_STAGE_REMOVAL_COMPLETE 11 CONST_INT QUARRY_STAGE_DELIVERY_DELIVER 12 CONST_INT QUARRY_STAGE_DELIVERY_COMPLETE 13 CONST_INT QUARRY_STAGE_SPILLAGE_CLEAR_TRACKS 14 CONST_INT QUARRY_STAGE_SPILLAGE_COMPLETE 15 CONST_INT QUARRY_STAGE_DESTROY_CHASE_TRUCK 16 CONST_INT QUARRY_STAGE_DESTROY_COMPLETE 17 CONST_INT QUARRY_STAGE_ASSET_ACQUIRED 18 CONST_INT QUARRY_STAGE_ASSET_ACQUIRED_COMPLETE 19 // ...crane lift radius CONST_FLOAT QUARRY_CRANE_DISPLAY_RADIUS 7.0 CONST_FLOAT QUARRY_CRANE_LIFT_RADIUS 4.0 // ...dumper load CONST_FLOAT QUARRY_DUMPER_RADIUS 3.2 CONST_FLOAT QUARRY_DUMPER_HEIGHT 1.5 // ...General CONST_FLOAT QUARRY_AUTO_ATTACH -1000.0 CONST_INT QUARRY_PERSIST -2 // Mission Specific Variables // Integer Variables // ...chars (char) LVAR_INT charDriver // ...cars (car) LVAR_INT carDirtbike LVAR_INT carDozer LVAR_INT carDumper LVAR_INT carCopBike LVAR_INT carTrain LVAR_INT carStolen // ...objects (object) LVAR_INT objectDeadBody LVAR_INT objectDumperLoadHelper LVAR_INT objectRocks[QUARRY_MAX_ROCKS] LVAR_INT objectBombs[QUARRY_MAX_BOMBS] LVAR_INT objectBodies[QUARRY_MAX_BODIES] LVAR_INT objectFireFuel[QUARRY_MAX_FIRE_FUEL] LVAR_INT objectTrainHelper LVAR_INT objectHelpers[QUARRY_MAX_HELPERS] // ...blips (blip) LVAR_INT blipDozer LVAR_INT blipDumper LVAR_INT blipCrane LVAR_INT blipDestination LVAR_INT blipDeadBody LVAR_INT blipCopBike LVAR_INT blipEntrance LVAR_INT blipOtherEntrance LVAR_INT blipRocks[QUARRY_MAX_ROCKS] LVAR_INT blipBomb LVAR_INT blipTrain LVAR_INT blipBombs[QUARRY_MAX_BOMBS] LVAR_INT blipStolen // ...fires (fire) LVAR_INT fireFires[QUARRY_MAX_FIRES] // ...pickups (pickup) // ...fx systems (fx) // ...decision makers (dm) // ...AI Status (ai) // ...general status (status) // ...Timers (timer) LVAR_INT timerMissionText LVAR_INT timerMissionPass LVAR_INT timerMissionFail LVAR_INT timerBombsExplode[QUARRY_SABOTAGE_MAX_BOMBS] LVAR_INT timerBombsSecondExplosion[QUARRY_SABOTAGE_MAX_BOMBS] LVAR_INT timerTrainStart LVAR_INT timerCutscene LVAR_INT timerBombStuck[QUARRY_DELIVERY_MAX_BOMBS] // ...Counters (count) // ...Checkpoints (check) LVAR_INT checkRockfalls[QUARRY_ROCKFALL_MAX_ROCKS] LVAR_INT checkDestination // ...mission specific (n) LVAR_INT nCurrentMission LVAR_INT nRockfallRocks LVAR_INT nHours LVAR_INT nMinutes LVAR_INT nAddHours LVAR_INT nAddMinutes LVAR_INT nCurrentBomb LVAR_INT nPreviousHealth LVAR_INT nMissionStartTime LVAR_INT nMissionStopTime LVAR_INT nBestMinutes LVAR_INT nBestSeconds LVAR_INT nTotalMinutes LVAR_INT nTotalSeconds // Text Label Variables // Float Variables // ...area variables (xlo, ylo, zlo, xhi, yhi, zhi) // ...position variables (xpos, ypos, zpos) LVAR_FLOAT xposDestination yposDestination zposDestination LVAR_FLOAT xposEntrance yposEntrance zposEntrance LVAR_FLOAT xposBombs[QUARRY_SABOTAGE_MAX_BOMBS] LVAR_FLOAT yposBombs[QUARRY_SABOTAGE_MAX_BOMBS] LVAR_FLOAT zposBombs[QUARRY_SABOTAGE_MAX_BOMBS] // ...heading variables // ...mission specific // Boolean Variables // ...flags (flag) LVAR_INT flagReadyToLift LVAR_INT flagReadyToDrive LVAR_INT flagShowDestinationHighlight LVAR_INT flagCopBikeInPlace LVAR_INT flagDeadBodyInPlace LVAR_INT flagReadyToDump LVAR_INT flagDumped LVAR_INT flagReturned LVAR_INT flagDisplayEntranceBlip LVAR_INT flagDisplayOtherEntranceBlip LVAR_INT flagDisplayCraneBlip LVAR_INT flagDisplayingMissionText LVAR_INT flagDumperTextDisplayed LVAR_INT flagDozerTextDisplayed LVAR_INT flagRockfallRocksPushed[QUARRY_ROCKFALL_MAX_ROCKS] LVAR_INT flagBombDisplayed LVAR_INT flagAllBombsMoved LVAR_INT flagBombExploded[QUARRY_SABOTAGE_MAX_BOMBS] LVAR_INT flagBombsSecondExplosion[QUARRY_SABOTAGE_MAX_BOMBS] LVAR_INT flagAlternativeExplosionLocation LVAR_INT flagDumperHelpDisplayed LVAR_INT flagDisplayedTracksText LVAR_INT flagDisplayedDumpText LVAR_INT flagBombBlipsOnDisplay LVAR_INT flagTrainStarted LVAR_INT flagTrainPassed LVAR_INT flagBombsOnTracks[QUARRY_SPILLAGE_MAX_BOMBS] LVAR_INT flagDestroyed LVAR_INT flagDisplayedTooFarText LVAR_INT flagCopBikeInWater LVAR_INT flagCopBodyInWater LVAR_INT flagBikeAndBodyFrozen LVAR_INT flagRoadsSwitchedOff LVAR_INT flagBeenInDumper LVAR_INT flagRockfallCheckpointsOnDisplay[QUARRY_ROCKFALL_MAX_ROCKS] LVAR_INT flagSkippingMission LVAR_INT flagEqualledBestTime LVAR_INT flagBeatBestTime LVAR_INT flagShowAssetAcquired LVAR_INT flagBombStuck[QUARRY_DELIVERY_MAX_BOMBS] // ...exists flags (exists) // Clear Exists Flags // ...loaded flags // Clear Loaded Flags // Clear timers // Clear important flags flagReadyToLift = FALSE flagReadyToDrive = FALSE flagCopBikeInPlace = FALSE flagDeadBodyInPlace = FALSE flagReadyToDump = FALSE flagDumped = FALSE flagDisplayEntranceBlip = FALSE flagDisplayOtherEntranceBlip = FALSE flagDisplayCraneBlip = FALSE flagDisplayingMissionText = FALSE flagDumperTextDisplayed = FALSE flagDozerTextDisplayed = FALSE flagBombDisplayed = FALSE flagAllBombsMoved = FALSE flagDumperHelpDisplayed = FALSE flagDisplayedTracksText = FALSE flagDisplayedDumpText = FALSE flagBombBlipsOnDisplay = FALSE flagTrainStarted = FALSE flagTrainPassed = FALSE flagDestroyed = FALSE flagDisplayedTooFarText = FALSE flagCopBikeInWater = FALSE flagCopBodyInWater = FALSE flagBikeAndBodyFrozen = FALSE flagRoadsSwitchedOff = FALSE flagBeenInDumper = FALSE flagSkippingMission = FALSE flagEqualledBestTime = FALSE flagBeatBestTime = FALSE flagShowAssetAcquired = FALSE // ***** FAKE ENTITY CREATION TO FOOL THE COMPILER ***** // The compiler just needs to verify there is a CREATE_ before usage IF m_stage = -99 WRITE_DEBUG SHOULD_NEVER_BE_IN_FAKE_ENTITY_CREATION CREATE_CAR SANCHEZ 0.0 0.0 0.0 carDirtbike CREATE_CAR DOZER 0.0 0.0 0.0 carDozer CREATE_CAR DUMPER 0.0 0.0 0.0 carDumper CREATE_CAR COPBIKE 0.0 0.0 0.0 carCopBike CREATE_CAR DUMPER 0.0 0.0 0.0 carStolen CREATE_CHAR PEDTYPE_CIVMALE BMYBE 0.0 0.0 0.0 charDriver // CREATE_OBJECT DYN_QUARRYROCK02 0.0 0.0 0.0 objectDeadBody CREATE_OBJECT DEAD_TIED_COP 0.0 0.0 0.0 objectDeadBody CREATE_OBJECT CR_AMMOBOX 0.0 0.0 0.0 objectDumperLoadHelper CREATE_OBJECT CR_AMMOBOX 0.0 0.0 0.0 objectTrainHelper REPEAT QUARRY_MAX_ROCKS nLoop CREATE_OBJECT DYN_QUARRYROCK03 0.0 0.0 0.0 objectRocks[nLoop] ENDREPEAT REPEAT QUARRY_MAX_BOMBS nLoop CREATE_OBJECT KB_BARREL 0.0 0.0 0.0 objectBombs[nLoop] ENDREPEAT REPEAT QUARRY_MAX_BODIES nLoop // CREATE_OBJECT DYN_QUARRYROCK02 0.0 0.0 0.0 objectBodies[nLoop] CREATE_OBJECT DEAD_TIED_COP 0.0 0.0 0.0 objectBodies[nLoop] ENDREPEAT REPEAT QUARRY_MAX_FIRE_FUEL nLoop CREATE_OBJECT CM_BOX 0.0 0.0 0.0 objectFireFuel[nLoop] ENDREPEAT CREATE_MISSION_TRAIN 11 0.0 0.0 0.0 FALSE carTrain REPEAT QUARRY_ROCKFALL_MAX_ROCKS nLoop CREATE_CHECKPOINT CHECKPOINT_EMPTYTUBE 0.0 0.0 0.0 0.0 0.0 0.0 0.0 checkRockfalls[nLoop] ENDREPEAT REPEAT QUARRY_MAX_HELPERS nLoop CREATE_OBJECT CR_AMMOBOX 0.0 0.0 0.0 objectHelpers[nLoop] ENDREPEAT CREATE_CHECKPOINT CHECKPOINT_EMPTYTUBE 0.0 0.0 0.0 0.0 0.0 0.0 0.0 checkDestination ADD_BLIP_FOR_CAR carDozer blipDozer ADD_BLIP_FOR_CAR carDumper blipDumper ADD_BLIP_FOR_CAR carCopBike blipCopBike ADD_BLIP_FOR_CAR carTrain blipTrain ADD_BLIP_FOR_CAR carStolen blipStolen ADD_BLIP_FOR_COORD 0.0 0.0 0.0 blipCrane ADD_BLIP_FOR_COORD 0.0 0.0 0.0 blipDestination ADD_BLIP_FOR_COORD 0.0 0.0 0.0 blipEntrance ADD_BLIP_FOR_COORD 0.0 0.0 0.0 blipOtherEntrance ADD_BLIP_FOR_OBJECT objectDeadBody blipDeadBody ADD_BLIP_FOR_OBJECT objectBombs[0] blipBomb REPEAT QUARRY_MAX_ROCKS nLoop ADD_BLIP_FOR_OBJECT objectRocks[nLoop] blipRocks[nLoop] ENDREPEAT REPEAT QUARRY_MAX_BOMBS nLoop ADD_BLIP_FOR_OBJECT objectBombs[nLoop] blipBombs[nLoop] ENDREPEAT ENDIF // Mission Text LOAD_MISSION_TEXT Quarry // Don't start the Quarry mission if the player has a wanted level. IF NOT IS_CHAR_DEAD scplayer IF IS_WANTED_LEVEL_GREATER player1 0 PRINT_NOW VAL_C1 5000 1 SET_CHAR_COORDINATES scplayer 827.9296 857.7913 11.3110 SET_CHAR_HEADING scplayer 120.0000 SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL player1 ON DO_FADE 500 FADE_IN // Return the oddjob 'title over fade' status back to default DRAW_ODDJOB_TITLE_BEFORE_FADE TRUE RETURN ENDIF ENDIF //// Any more quarry missions to do? //IF done_quarry_progress = TRUE // // ...no // PRINT_NOW QUAR_P3 5000 1 // WAIT 5000 // RETURN //ENDIF // Load Char Mission Decision Makers // NOTE: Do it before the Initialisation because they make the game pause. Done here, the pause is hidden by a fade. // Mission Initialisation GOSUB Quarry_Initialisation // ************************************************************************************************************* // MISSION LOOP // ************************************************************************************************************* Quarry_Mission_Loop: WAIT 0 // Special shortcut for Craig F to test all missions in order IF NOT m_stage = QUARRY_STAGE_ASSET_ACQUIRED AND NOT m_stage = QUARRY_STAGE_ASSET_ACQUIRED_COMPLETE IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S // Make sure the record for this mission doesn't become unfeasibly low because of the skip nTempInt = g_Quarry_recordsKM[g_nQuarryMissionsPassed] * 1000 nMissionStartTime = m_mission_timer - nTempInt m_passed = TRUE GOTO Quarry_End_Of_Main_Loop ENDIF // Check if the mission is being skipped IF done_quarry_progress = TRUE IF flagSkippingMission = TRUE // ...button previously pressed IF NOT IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL // WIDGET_MISSION_CANCEL has a gamepad mapping conflict here with getting into a Dozer (Y). // ...button release, so skip mission m_quit = TRUE PRINT_NOW QUAR_37 5000 1 PRINT_BIG SKIPPED 5000 5 g_nQuarryMissionsPassed++ IF g_nQuarryMissionsPassed = QUARRY_HIGHEST_MISSION g_nQuarryMissionsPassed = 0 ENDIF // Switch on Dumper and Dozer car generators again SWITCH_CAR_GENERATOR gen_car1 101 SWITCH_CAR_GENERATOR gen_car2 101 GOTO Quarry_End_Of_Main_Loop ENDIF ELSE // ...button not pressed IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL // WIDGET_MISSION_CANCEL has a gamepad mapping conflict here with getting into a Dozer (Y). flagSkippingMission = TRUE ENDIF ENDIF ENDIF ENDIF // Debug Stuff GOSUB Quarry_Debug_Tools GOSUB Quarry_Debug_Shortcuts IF m_quit = 1 OR m_pause = 1 GOTO Quarry_End_Of_Main_Loop ENDIF // Housekeeping GOSUB Quarry_Frame_Counter GOSUB Quarry_Additional_Timers // Special conditions IF IS_CHAR_DEAD scplayer m_failed = 1 GOTO Quarry_End_Of_Main_Loop ENDIF // Mission Stage processing // *** INITIALISATION NOW TAKES PLACE BEFORE THE MAIN LOOP *** IF m_stage = 0 WRITE_DEBUG STAGE_SHOULD_NEVER_BE_0_IN_MAIN_LOOP ENDIF SWITCH m_stage // ROCKFALL sub-mission CASE QUARRY_STAGE_ROCKFALL_CLEAR_PATHS GOSUB Quarry_Rockfall_Clear_Paths BREAK // SABOTAGE sub-mission CASE QUARRY_STAGE_SABOTAGE_MOVE_BOMBS DISPLAY_RADAR 2 // PATHING OFF GOSUB Quarry_Sabotage_Move_Bombs BREAK // REMOVAL sub-mission CASE QUARRY_STAGE_REMOVAL_REACH_DUMPER GOSUB Quarry_Removal_Reach_Dumper BREAK CASE QUARRY_STAGE_REMOVAL_DUMP_BODIES GOSUB Quarry_Removal_Dump_Bodies BREAK // DELIVERY sub-mission CASE QUARRY_STAGE_DELIVERY_DELIVER GOSUB Quarry_Delivery_Deliver BREAK // SPILLAGE sub-mission CASE QUARRY_STAGE_SPILLAGE_CLEAR_TRACKS GOSUB Quarry_Spillage_Clear_Tracks BREAK // BURIAL Sub-mission CASE QUARRY_STAGE_BURIAL_PUSH_BODY GOSUB Quarry_Burial_Push_Body BREAK CASE QUARRY_STAGE_BURIAL_LOAD_DUMPER GOSUB Quarry_Burial_Load_Dumper BREAK CASE QUARRY_STAGE_BURIAL_DRIVE_DUMPER GOSUB Quarry_Burial_Drive_Dumper BREAK // DESTROY sub-mission CASE QUARRY_STAGE_DESTROY_CHASE_TRUCK GOSUB Quarry_Destroy_Chase_Truck BREAK // Passed CASE QUARRY_STAGE_ROCKFALL_COMPLETE CASE QUARRY_STAGE_SABOTAGE_COMPLETE CASE QUARRY_STAGE_REMOVAL_COMPLETE CASE QUARRY_STAGE_DELIVERY_COMPLETE CASE QUARRY_STAGE_SPILLAGE_COMPLETE CASE QUARRY_STAGE_BURIAL_COMPLETE CASE QUARRY_STAGE_DESTROY_COMPLETE m_passed = TRUE BREAK // Asset Acquired CASE QUARRY_STAGE_ASSET_ACQUIRED GOSUB Quarry_Asset_Acquired BREAK CASE QUARRY_STAGE_ASSET_ACQUIRED_COMPLETE m_quit = TRUE BREAK ENDSWITCH // Continuous update methods and event checking // End of Main Loop // ***** DON'T CHANGE ***** Quarry_End_Of_Main_Loop: IF m_quit = 0 IF m_failed = 0 IF m_passed = 0 // Restart main loop GOTO Quarry_Mission_Loop ELSE // Mission passed GOSUB Quarry_Mission_Passed // Check if the 'asset acquired' cutscene should be shown IF flagShowAssetAcquired = TRUE // ...yes m_passed = FALSE m_stage = QUARRY_STAGE_ASSET_ACQUIRED m_goals = 0 flagShowAssetAcquired = FALSE GOTO Quarry_Mission_Loop ENDIF RETURN ENDIF ELSE // Mission failed GOSUB Quarry_Mission_Failed RETURN ENDIF ELSE RETURN // quits out - goes to cleanup ENDIF WRITE_DEBUG SHOULD_NEVER_BE_HERE_IN_END_OF_MAIN_LOOP RETURN // Should never reach here // ************************************************************************************************************* // MISSION STAGE GOSUBS // ************************************************************************************************************* // **************************************** // BURIAL: Push Body Quarry_Burial_Push_Body: // Check if the dozer is still alive IF IS_CAR_DEAD carDozer m_failed = TRUE m_fail_reason = QUARRY_FAILED_DOZER_DESTROYED RETURN ENDIF // Check if the dumper is still alive IF IS_CAR_DEAD carDumper m_failed = TRUE m_fail_reason = QUARRY_FAILED_DUMPER_DESTROYED RETURN ENDIF // A dummy check for the copbike (because I'm forcing it to stay alive to allow it to be lifted by the crane) IF NOT IS_CAR_DEAD carCopBike SET_CAR_HEALTH carCopBike 10000 ENDIF // Initialisation // -------------- IF m_goals = 0 // Add Blip for Dozer ADD_BLIP_FOR_CAR carDozer blipDozer SET_BLIP_AS_FRIENDLY blipDozer TRUE flagReadyToLift = FALSE flagCopBikeInPlace = FALSE flagDeadBodyInPlace = FALSE flagBikeAndBodyFrozen = FALSE xposDestination = 672.7664 yposDestination = 888.3682 zposDestination = -41.3985 // INFO: Mission Description PRINT_NOW QUAR_00 10000 1 // timerMissionText = m_mission_timer + 9500 // flagDisplayingMissionText = TRUE // g_Quarry_timerKM = QUARRY_BURIAL_MISSION_TIME_sec * 1000 nTempInt = QUARRY_MISSION_BURIAL - 1 g_Quarry_timerKM = g_Quarry_recordsKM[nTempInt] * 1000 DISPLAY_ONSCREEN_TIMER_WITH_STRING g_Quarry_timerKM TIMER_DOWN QUAR_D1 nMissionStartTime = m_mission_timer IF NOT IS_CAR_DEAD carCopBike SET_VEHICLE_IS_CONSIDERED_BY_PLAYER carCopBike FALSE ENDIF // Make sure the crane can't pick the Dumper and Dozer up WINCH_CAN_PICK_VEHICLE_UP carDumper FALSE WINCH_CAN_PICK_VEHICLE_UP carDozer FALSE m_goals++ ENDIF // Failure Conditions // ------------------ // Check for Time Up IF g_Quarry_timerKM <= 0 m_failed = TRUE m_fail_reason = QUARRY_FAILED_COPS_ARRIVED RETURN ENDIF // Subgoals // -------- // Check if body and bike are in 'lift' location IF m_goals = 1 IF flagReadyToLift = TRUE REMOVE_BLIP blipDestination REMOVE_BLIP blipDozer REMOVE_BLIP blipDeadBody REMOVE_BLIP blipCopBike m_goals = 99 ENDIF ENDIF // Continuous updates // ------------------ // Blip maintenance IF flagReadyToLift = FALSE IF IS_CHAR_IN_CAR scplayer carDozer // ...player is in the dozer IF DOES_BLIP_EXIST blipDozer // ...remove the dozer blip and add the objects blips and the destination blip REMOVE_BLIP blipDozer ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination CLEAR_THIS_PRINT QUAR_35 // Add blips for Dead Body and Cop Bike IF flagDeadBodyInPlace = FALSE ADD_BLIP_FOR_OBJECT objectDeadBody blipDeadBody ENDIF IF flagCopBikeInPlace = FALSE ADD_BLIP_FOR_CAR carCopBike blipCopBike CHANGE_BLIP_COLOUR blipCopBike GREEN ENDIF ENDIF ELSE // ...player is not in the dozer IF NOT DOES_BLIP_EXIST blipDozer // ...add the dozer blip and remove the objects blips and the destination blip ADD_BLIP_FOR_CAR carDozer blipDozer SET_BLIP_AS_FRIENDLY blipDozer TRUE REMOVE_BLIP blipDestination REMOVE_BLIP blipDeadBody REMOVE_BLIP blipCopBike // Info: Get back in the Dozer PRINT_NOW QUAR_35 5000 1 ENDIF ENDIF ENDIF // Decide if the locate highlight should be shown or not IF flagShowDestinationHighlight = FALSE IF IS_CHAR_IN_CAR scplayer carCopBike OR IS_CHAR_IN_CAR scplayer carDozer flagShowDestinationHighlight = TRUE // INFO: push body and bike PRINT_NOW QUAR_02 7000 1 ENDIF ENDIF // Check if both the dead body and the cop bike are in the crane lift radius IF flagReadyToLift = FALSE // Need to do this, but I don't really care, so the dead check is a dummy IF flagCopBikeInPlace = FALSE // ...display IF LOCATE_CAR_3D carCopBike xposDestination yposDestination zposDestination QUARRY_CRANE_DISPLAY_RADIUS QUARRY_CRANE_DISPLAY_RADIUS 4.0 flagShowDestinationHighlight // ...locate IF LOCATE_CAR_3D carCopBike xposDestination yposDestination zposDestination QUARRY_CRANE_LIFT_RADIUS QUARRY_CRANE_LIFT_RADIUS 4.0 FALSE flagCopBikeInPlace = TRUE REMOVE_BLIP blipCopBike // Freeze the cop bike position to stop it sliding over the pickup area FREEZE_CAR_POSITION carCopBike TRUE SET_CAR_COLLISION carCopBike FALSE IF flagDeadBodyInPlace = FALSE // INFO: now get body PRINT_NOW QUAR_03 5000 1 ENDIF ENDIF ENDIF ENDIF IF flagDeadBodyInPlace = FALSE IF flagCopBikeInPlace = TRUE // ...cop bike is in place so need to show highlight // ...display IF LOCATE_OBJECT_3D objectDeadBody xposDestination yposDestination zposDestination QUARRY_CRANE_DISPLAY_RADIUS QUARRY_CRANE_DISPLAY_RADIUS 4.0 flagShowDestinationHighlight // ...locate IF LOCATE_OBJECT_3D objectDeadBody xposDestination yposDestination zposDestination QUARRY_CRANE_LIFT_RADIUS QUARRY_CRANE_LIFT_RADIUS 4.0 FALSE flagDeadBodyInPlace = TRUE REMOVE_BLIP blipDeadBody // Freeze the cop body position to stop it sliding over the pickup area FREEZE_OBJECT_POSITION objectDeadBody TRUE SET_OBJECT_COLLISION objectDeadBody FALSE ENDIF ENDIF ELSE // ...cop bike not in place, so the cop bike will show the highlight // ...display IF LOCATE_OBJECT_3D objectDeadBody xposDestination yposDestination zposDestination QUARRY_CRANE_DISPLAY_RADIUS QUARRY_CRANE_DISPLAY_RADIUS 4.0 FALSE // ...locate IF LOCATE_OBJECT_3D objectDeadBody xposDestination yposDestination zposDestination QUARRY_CRANE_LIFT_RADIUS QUARRY_CRANE_LIFT_RADIUS 4.0 FALSE flagDeadBodyInPlace = TRUE REMOVE_BLIP blipDeadBody // Freeze the cop body position to stop it sliding over the pickup area FREEZE_OBJECT_POSITION objectDeadBody TRUE SET_OBJECT_COLLISION objectDeadBody FALSE // INFO: now get bike PRINT_NOW QUAR_04 5000 1 ENDIF ENDIF ENDIF ENDIF IF flagDeadBodyInPlace = TRUE AND flagCopBikeInPlace = TRUE flagReadyToLift = TRUE // INFO: get into crane PRINT_NOW QUAR_05 5000 1 flagBikeAndBodyFrozen = TRUE ENDIF ENDIF /* // Mission Text IF flagDisplayingMissionText = TRUE IF timerMissionText < m_mission_timer IF NOT IS_CHAR_IN_CAR scplayer carDozer // INFO: get into dozer PRINT_NOW QUAR_01 5000 1 flagDisplayingMissionText = FALSE ENDIF ENDIF ENDIF */ // Exit // ---- IF m_goals = 99 GOSUB Quarry_Next_Stage ENDIF RETURN // **************************************** // BURIAL: Load Dumper Quarry_Burial_Load_Dumper: // Check if the dozer is still alive IF IS_CAR_DEAD carDozer m_failed = TRUE m_fail_reason = QUARRY_FAILED_DOZER_DESTROYED RETURN ENDIF // Check if the dumper is still alive IF IS_CAR_DEAD carDumper m_failed = TRUE m_fail_reason = QUARRY_FAILED_DUMPER_DESTROYED RETURN ENDIF // A dummy check for the copbike (because I'm forcing it to stay alive to allow it to be lifted by the crane) IF NOT IS_CAR_DEAD carCopBike SET_CAR_HEALTH carCopBike 10000 ENDIF // Initialisation // -------------- IF m_goals = 0 flagReadyToDrive = FALSE flagCopBikeInPlace = FALSE flagDeadBodyInPlace = FALSE // Add a blip for the crane ADD_BLIP_FOR_COORD 705.1055 916.3154 -19.6407 blipCrane SET_BLIP_AS_FRIENDLY blipCrane TRUE flagDisplayCraneBlip = TRUE m_goals++ ENDIF // Failure Conditions // ------------------ // Check for Time Up IF g_Quarry_timerKM <= 0 m_failed = TRUE m_fail_reason = QUARRY_FAILED_COPS_ARRIVED RETURN ENDIF // Subgoals // -------- // Wait for the dumper to be loaded up IF m_goals = 1 IF flagReadyToDrive = TRUE REMOVE_BLIP blipDumper SET_CAR_HEAVY carDumper TRUE m_goals = 99 ENDIF ENDIF // Continuous updates // ------------------ // Make sure the Load Helper object stays in place IF NOT IS_OBJECT_ATTACHED objectDumperLoadHelper ATTACH_OBJECT_TO_CAR objectDumperLoadHelper carDumper 0.0 -1.7 1.5 0.0 0.0 0.0 ENDIF /* // Has the dumper been loaded? IF flagReadyToDrive = FALSE GET_OBJECT_COORDINATES objectDumperLoadHelper xposTemp yposTemp zposTemp IF LOCATE_STOPPED_CAR_3D carCopBike xposTemp yposTemp zposTemp QUARRY_DUMPER_RADIUS QUARRY_DUMPER_RADIUS QUARRY_DUMPER_HEIGHT FALSE AND LOCATE_OBJECT_3D objectDeadBody xposTemp yposTemp zposTemp QUARRY_DUMPER_RADIUS QUARRY_DUMPER_RADIUS QUARRY_DUMPER_HEIGHT FALSE GRAB_ENTITY_ON_ROPE_FOR_OBJECT quarry_arm nTempCar nTempPed nTempObject IF NOT nTempCar = carCopBike AND NOT nTempObject = objectDeadBody flagReadyToDrive = TRUE // Make sure the crane can't pick these Objects up WINCH_CAN_PICK_VEHICLE_UP carCopBike FALSE WINCH_CAN_PICK_OBJECT_UP objectDeadBody FALSE ENDIF ENDIF ENDIF */ // Has the dumper been loaded? IF flagReadyToDrive = FALSE GET_OBJECT_COORDINATES objectDumperLoadHelper xposTemp yposTemp zposTemp GRAB_ENTITY_ON_ROPE_FOR_OBJECT quarry_arm nTempCar nTempPed nTempObject // Update condition of dead body IF flagDeadBodyInPlace = FALSE // ...dead body isn't in place, so check if it is now IF LOCATE_OBJECT_3D objectDeadBody xposTemp yposTemp zposTemp QUARRY_DUMPER_RADIUS QUARRY_DUMPER_RADIUS QUARRY_DUMPER_HEIGHT FALSE IF IS_OBJECT_ATTACHED objectDeadBody // ...the dead body is attached to the dumper IF NOT nTempObject = objectDeadBody // ...the dead body is no longer attached to the crane flagDeadBodyInPlace = TRUE WINCH_CAN_PICK_OBJECT_UP objectDeadBody FALSE ELSE // ...the dead body is still attached to the crane, so detach it from the dumper DETACH_OBJECT objectDeadBody 0.0 0.0 0.0 FALSE ENDIF ENDIF // IF NOT nTempObject = objectDeadBody // AND IS_OBJECT_ATTACHED objectDeadBody // // ...dead body is now attached to the dumper and not attached to the crane // flagDeadBodyInPlace = TRUE // WINCH_CAN_PICK_OBJECT_UP objectDeadBody FALSE // ENDIF ENDIF ELSE // ...dead body is in place, so ensure it stays there IF NOT IS_OBJECT_ATTACHED objectDeadBody GET_OBJECT_COORDINATES objectDeadBody xposTemp yposTemp zposTemp GET_GROUND_Z_FOR_3D_COORD xposTemp yposTemp zposTemp fTempFloat fTempFloat2 = zposTemp - fTempFloat IF fTempFloat2 < 1.5 // ...object is on the ground, so allow the crane to pick it up again flagDeadBodyInPlace = FALSE WINCH_CAN_PICK_OBJECT_UP objectDeadBody TRUE ENDIF ENDIF ENDIF // Update condition of cop bike IF flagCopBikeInPlace = FALSE // ...cop bike isn't in place, so check if it is now IF LOCATE_STOPPED_CAR_3D carCopBike xposTemp yposTemp zposTemp QUARRY_DUMPER_RADIUS QUARRY_DUMPER_RADIUS QUARRY_DUMPER_HEIGHT FALSE IF NOT nTempCar = carCopBike // ...cop bike is in the dumper and not attached to the crane ATTACH_CAR_TO_CAR carCopBike carDumper QUARRY_AUTO_ATTACH 0.0 0.0 0.0 0.0 0.0 flagCopBikeInPlace = TRUE WINCH_CAN_PICK_VEHICLE_UP carCopBike FALSE ENDIF ENDIF ELSE // ...cop bike is in place, so ensure it stays there IF NOT IS_VEHICLE_ATTACHED carCopBike GET_CAR_COORDINATES carCopBike xposTemp yposTemp zposTemp GET_GROUND_Z_FOR_3D_COORD xposTemp yposTemp zposTemp fTempFloat fTempFloat2 = zposTemp - fTempFloat IF fTempFloat2 < 1.5 // ...cop bike is on the ground, so allow the crane to pick it up again flagCopBikeInPlace = FALSE WINCH_CAN_PICK_VEHICLE_UP carCopBike TRUE ENDIF ENDIF ENDIF // Are both in place? IF flagDeadBodyInPlace = TRUE AND flagCopBikeInPlace = TRUE flagReadyToDrive = TRUE ENDIF ENDIF // Maintain Crane blip IF flagDisplayCraneBlip = TRUE // Display highlight // LOCATE_CHAR_ANY_MEANS_3D scplayer 705.1055 916.3154 -19.6407 4.0 4.0 4.0 TRUE // Check if the player has reached the crane IF LOCATE_CHAR_ANY_MEANS_3D scplayer 705.1055 916.3154 -19.6407 4.0 4.0 1.2 FALSE // ...remove crane blip REMOVE_BLIP blipCrane flagDisplayCraneBlip = FALSE // ...show dumper blip ADD_BLIP_FOR_CAR carDumper blipDumper SET_BLIP_AS_FRIENDLY blipDumper TRUE // INFO: load up dumper PRINT_NOW QUAR_06 7000 1 ENDIF ENDIF // Unfreeze bike and body IF flagBikeAndBodyFrozen = TRUE IF NOT IS_CHAR_IN_CAR scplayer carDozer // Unfreeze the cop body FREEZE_OBJECT_POSITION objectDeadBody FALSE SET_OBJECT_COLLISION objectDeadBody TRUE // Unfreeze the cop bike position again FREEZE_CAR_POSITION carCopBike FALSE SET_CAR_COLLISION carCopBike TRUE flagBikeAndBodyFrozen = FALSE ENDIF ENDIF // Exit // ---- IF m_goals = 99 GOSUB Quarry_Next_Stage ENDIF RETURN // **************************************** // BURIAL: Drive Dumper Quarry_Burial_Drive_Dumper: // Check if the dumper is still alive IF IS_CAR_DEAD carDumper m_failed = TRUE m_fail_reason = QUARRY_FAILED_DUMPER_DESTROYED RETURN ENDIF // A dummy check for the copbike (because I'm forcing it to stay alive to allow it to be lifted by the crane) IF NOT IS_CAR_DEAD carCopBike SET_CAR_HEALTH carCopBike 10000 ENDIF // Initialisation // -------------- IF m_goals = 0 xposDestination = 985.1581 yposDestination = 688.4734 zposDestination = 8.7255 GOSUB Quarry_Display_Entrance_Blip flagDumped = FALSE flagReadyToDump = FALSE flagDumperTextDisplayed = FALSE flagCopBikeInWater = FALSE flagCopBodyInWater = FALSE flagBeenInDumper = FALSE timerMissionPass = 0 // INFO: get into dumper PRINT_NOW QUAR_07 5000 1 m_goals++ ENDIF // Failure Conditions // ------------------ // Check for Time Up IF g_Quarry_timerKM <= 0 m_failed = TRUE m_fail_reason = QUARRY_FAILED_COPS_ARRIVED RETURN ENDIF // Check for either of the objects being on the ground a distance away from the water IF flagReadyToDump = FALSE IF NOT IS_VEHICLE_ATTACHED carCopBike GET_CAR_COORDINATES carCopBike xposTemp yposTemp zposTemp GET_GROUND_Z_FOR_3D_COORD xposTemp yposTemp zposTemp fTempFloat fTempFloat2 = zposTemp - fTempFloat IF fTempFloat2 < 1.5 m_failed = TRUE m_fail_reason = QUARRY_FAILED_DROPPED_LOAD ENDIF ENDIF IF NOT IS_OBJECT_ATTACHED objectDeadBody GET_OBJECT_COORDINATES objectDeadBody xposTemp yposTemp zposTemp GET_GROUND_Z_FOR_3D_COORD xposTemp yposTemp zposTemp fTempFloat fTempFloat2 = zposTemp - fTempFloat IF fTempFloat2 < 1.5 m_failed = TRUE m_fail_reason = QUARRY_FAILED_DROPPED_LOAD ENDIF ENDIF ENDIF // Subgoals // -------- // IF m_goals = 1 IF flagDumped = TRUE // ...wait a few seconds to make sure the dumper doesn't end up in the water also IF timerMissionPass < m_mission_timer REMOVE_BLIP blipDestination DELETE_CHECKPOINT checkDestination m_goals = 99 DISPLAY_RADAR 3 // PATHING ON ENDIF ENDIF ENDIF // Continuous updates // ------------------ // Blip Maintenance IF IS_CHAR_IN_CAR scplayer carDumper // ...player is in the dumper IF DOES_BLIP_EXIST blipDumper // ...remove the dumper blip and add the destination blip REMOVE_BLIP blipDumper CLEAR_THIS_PRINT QUAR_36 IF flagDisplayEntranceBlip = TRUE GOSUB Quarry_Display_Entrance_Blip ELSE // ...display destination blip ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination fTempFloat = yposDestination - 5.0 CREATE_CHECKPOINT CHECKPOINT_EMPTYTUBE xposDestination fTempFloat zposDestination 0.0 0.0 0.0 5.0 checkDestination DISPLAY_RADAR 2 // PATHING OFF // this doesn't need a path, it tries to guide you a long way around ENDIF ENDIF flagBeenInDumper = TRUE ELSE // ...player is not in the dumper IF NOT DOES_BLIP_EXIST blipDumper // ...add the dumper blip and remove the destination blip ADD_BLIP_FOR_CAR carDumper blipDumper SET_BLIP_AS_FRIENDLY blipDumper TRUE REMOVE_BLIP blipDestination DELETE_CHECKPOINT checkDestination REMOVE_BLIP blipEntrance IF flagBeenInDumper = TRUE // Info: Get back in the Dozer PRINT_NOW QUAR_36 5000 1 ENDIF ENDIF ENDIF // Display dumper text? IF flagDumperTextDisplayed = FALSE IF IS_CHAR_IN_CAR scplayer carDumper // INFO: drive to quarry entrance PRINT_NOW QUAR_08 7000 1 flagDumperTextDisplayed = TRUE ENDIF ENDIF // Entrance blip IF DOES_BLIP_EXIST blipEntrance // Display a highlight at the entrance LOCATE_CHAR_ANY_MEANS_3D scplayer xposEntrance yposEntrance zposEntrance 4.0 4.0 4.0 TRUE IF LOCATE_CHAR_ANY_MEANS_3D scplayer xposEntrance yposEntrance zposEntrance 12.0 12.0 12.0 FALSE // Remove entrance blip REMOVE_BLIP blipEntrance flagDisplayEntranceBlip = FALSE // Add destination blip ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination fTempFloat = yposDestination - 5.0 CREATE_CHECKPOINT CHECKPOINT_EMPTYTUBE xposDestination fTempFloat zposDestination 0.0 0.0 0.0 5.0 checkDestination // INFO: dump in water PRINT_NOW QUAR_09 5000 1 ENDIF ENDIF // // Display the dumping destination highlight // IF flagDisplayEntranceBlip = FALSE // // ...not displaying entrance blip, so display destination highlight // LOCATE_CAR_3D carDumper xposDestination yposDestination zposDestination 8.0 2.5 4.0 TRUE // ENDIF // Arrival at destination IF flagReadyToDump = FALSE // Check if the dumper is near the destination IF LOCATE_CAR_3D carDumper xposDestination yposDestination zposDestination 50.0 30.0 10.0 FALSE flagReadyToDump = TRUE PRINT_HELP QUAR_H4 ELSE flagReadyToDump = FALSE ENDIF ENDIF // If the truck is at the destination and the back is raised and the bike or body is attached, unattach them IF flagReadyToDump = TRUE GET_CAR_MOVING_COMPONENT_OFFSET carDumper fTempFloat IF fTempFloat > 0.05 // Unattach bike IF IS_VEHICLE_ATTACHED carCopBike DETACH_CAR carCopBike 0.0 0.0 0.0 FALSE ENDIF // Unattach body IF IS_OBJECT_ATTACHED objectDeadBody DETACH_OBJECT objectDeadBody 0.0 0.0 0.0 FALSE ENDIF ENDIF ENDIF // Cop bike in the water? IF flagCopBikeInWater = FALSE IF IS_CAR_IN_WATER carCopBike flagCopBikeInWater = TRUE ENDIF ENDIF // Cop body in the water? IF flagCopBodyInWater = FALSE IF IS_OBJECT_IN_WATER objectDeadBody flagCopBodyInWater = TRUE ENDIF ENDIF // Bike and Rock in the sea? IF flagDumped = FALSE IF flagCopBikeInWater = TRUE AND flagCopBodyInWater = TRUE flagDumped = TRUE timerMissionPass = m_mission_timer + 2000 ENDIF ENDIF // Make sure the Load Helper object stays in place IF NOT IS_OBJECT_ATTACHED objectDumperLoadHelper ATTACH_OBJECT_TO_CAR objectDumperLoadHelper carDumper 0.0 -1.7 1.5 0.0 0.0 0.0 ENDIF // Manually attach the cop bike IF NOT IS_VEHICLE_ATTACHED carCopBike GET_OBJECT_COORDINATES objectDumperLoadHelper xposTemp yposTemp zposTemp IF LOCATE_STOPPED_CAR_3D carCopBike xposTemp yposTemp zposTemp QUARRY_DUMPER_RADIUS QUARRY_DUMPER_RADIUS QUARRY_DUMPER_HEIGHT FALSE // NOTE: If the xpos is -1000.0 (QUARRY_AUTO_ATTACH) then the bike is attached at its current position and orientation ATTACH_CAR_TO_CAR carCopBike carDumper QUARRY_AUTO_ATTACH 0.0 0.0 0.0 0.0 0.0 ENDIF ENDIF // IF IS_OBJECT_ATTACHED objectDeadBody // IF NOT IS_VEHICLE_ATTACHED carCopBike // ATTACH_CAR_TO_CAR carCopBike carDumper 0.0 -1.7 1.0 0.0 0.0 0.0 // ENDIF // ELSE // IF IS_VEHICLE_ATTACHED carCopBike // DETACH_CAR carCopBike 0.0 0.0 0.0 FALSE // FREEZE_CAR_POSITION carCopBike FALSE // ENDIF // ENDIF // // END TEMP // Exit // ---- IF m_goals = 99 GOSUB Quarry_Next_Stage ENDIF RETURN // **************************************** // ROCKFALL: Clear Paths Quarry_Rockfall_Clear_Paths: // Check if the dozer is still alive IF IS_CAR_DEAD carDozer m_failed = TRUE m_fail_reason = QUARRY_FAILED_DOZER_DESTROYED RETURN ENDIF // Initialisation // -------------- IF m_goals = 0 nRockfallRocks = 0 // Clear the flags for all rocks REPEAT QUARRY_ROCKFALL_MAX_ROCKS nLoop flagRockfallRocksPushed[nLoop] = FALSE flagRockfallCheckpointsOnDisplay[nLoop] = FALSE ENDREPEAT // Add blip for dozer ADD_BLIP_FOR_CAR carDozer blipDozer SET_BLIP_AS_FRIENDLY blipDozer TRUE // INFO: push rocks off edge PRINT_NOW QUAR_11 10000 1 // Display the 'delivery' time // g_Quarry_timerKM = QUARRY_ROCKFALL_MISSION_TIME_sec * 1000 nTempInt = QUARRY_MISSION_ROCKFALL - 1 g_Quarry_timerKM = g_Quarry_recordsKM[nTempInt] * 1000 DISPLAY_ONSCREEN_TIMER_WITH_STRING g_Quarry_timerKM TIMER_DOWN QUAR_D2 nMissionStartTime = m_mission_timer // nAddHours = QUARRY_ROCKFALL_HOURS // nAddMinutes = QUARRY_ROCKFALL_MINUTES // timerMissionFail = 0 // GOSUB Quarry_Calculate_Future_Time // DISPLAY_ONSCREEN_TIMER_WITH_STRING g_Quarry_timerKM TIMER_UP QUAR_D2 // FREEZE_ONSCREEN_TIMER TRUE flagDozerTextDisplayed = FALSE m_goals++ ENDIF // Failure Conditions // ------------------ // Time ran out // IF timerMissionFail < m_mission_timer // m_failed = TRUE // m_fail_reason = QUARRY_FAILED_DELIVERY_ARRIVED // RETURN // ENDIF // Check for Time Up IF g_Quarry_timerKM <= 0 m_failed = TRUE m_fail_reason = QUARRY_FAILED_DELIVERY_ARRIVED RETURN ENDIF // Subgoals // -------- // Check if all rocks have been pushed into their respective areas IF m_goals = 1 IF nRockfallRocks = QUARRY_ROCKFALL_MAX_ROCKS m_goals = 99 ENDIF ENDIF // Continuous updates // ------------------ // Blip and Locate maintenance IF DOES_BLIP_EXIST blipDozer // ...the dozer blip exists IF IS_CHAR_IN_CAR scplayer carDozer // ...player is in the car, so remove the dozer blip REMOVE_BLIP blipDozer CLEAR_THIS_PRINT QUAR_35 // ...add rocks blips REPEAT QUARRY_ROCKFALL_MAX_ROCKS nLoop IF flagRockfallRocksPushed[nLoop] = FALSE ADD_BLIP_FOR_OBJECT objectRocks[nLoop] blipRocks[nLoop] ENDIF ENDREPEAT ENDIF ELSE // ...the dozer blip doesn't exist IF NOT IS_CHAR_IN_CAR scplayer carDozer // ...the player is not in the car, so clear all rocks blips REPEAT QUARRY_ROCKFALL_MAX_ROCKS nLoop REMOVE_BLIP blipRocks[nLoop] ENDREPEAT // ...add dozer blip ADD_BLIP_FOR_CAR carDozer blipDozer SET_BLIP_AS_FRIENDLY blipDozer TRUE // Info: Get back in the Dozer PRINT_NOW QUAR_35 5000 1 ELSE // ...the player is in the dozer, so check for rocks being pushed to their destination GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp REPEAT QUARRY_ROCKFALL_MAX_ROCKS nLoop // NOTE: flagTempFlag is used to decide if this rock has been pushed flagTempFlag = FALSE IF flagRockfallRocksPushed[nLoop] = FALSE SWITCH nLoop CASE 0 GET_OBJECT_COORDINATES objectRocks[nLoop] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance IF fTempDistance < 30.0 // Display small highlight, then check for rock entering bigger area // LOCATE_OBJECT_3D objectRocks[nLoop] 762.1190 836.6474 -3.4382 14.0 14.0 5.0 TRUE IF flagRockfallCheckpointsOnDisplay[nLoop] = FALSE CREATE_CHECKPOINT CHECKPOINT_EMPTYTUBE 762.1190 836.6474 -3.4382 0.0 0.0 0.0 5.0 checkRockfalls[nLoop] flagRockfallCheckpointsOnDisplay[nLoop] = TRUE ENDIF IF LOCATE_OBJECT_3D objectRocks[nLoop] 762.1190 836.6474 -5.4382 15.0 35.0 5.0 FALSE flagTempFlag = TRUE ENDIF ELSE IF flagRockfallCheckpointsOnDisplay[nLoop] = TRUE DELETE_CHECKPOINT checkRockfalls[nLoop] flagRockfallCheckpointsOnDisplay[nLoop] = FALSE ENDIF ENDIF BREAK CASE 1 GET_OBJECT_COORDINATES objectRocks[nLoop] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance IF fTempDistance < 50.0 // Display small highlight, then check for rock entering bigger area // LOCATE_OBJECT_3D objectRocks[nLoop] 735.8682 933.0437 -4.3942 13.0 13.0 5.0 TRUE IF flagRockfallCheckpointsOnDisplay[nLoop] = FALSE CREATE_CHECKPOINT CHECKPOINT_EMPTYTUBE 735.8682 933.0437 -4.3942 0.0 0.0 0.0 5.0 checkRockfalls[nLoop] flagRockfallCheckpointsOnDisplay[nLoop] = TRUE ENDIF IF LOCATE_OBJECT_3D objectRocks[nLoop] 735.8682 933.0437 -4.3942 20.0 30.0 5.0 FALSE flagTempFlag = TRUE ENDIF ELSE IF flagRockfallCheckpointsOnDisplay[nLoop] = TRUE DELETE_CHECKPOINT checkRockfalls[nLoop] flagRockfallCheckpointsOnDisplay[nLoop] = FALSE ENDIF ENDIF BREAK CASE 2 GET_OBJECT_COORDINATES objectRocks[nLoop] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance IF fTempDistance < 30.0 // Display small highlight, then check for rock entering bigger area // LOCATE_OBJECT_3D objectRocks[nLoop] 518.9683 967.7642 -25.8910 13.0 13.0 5.0 TRUE IF flagRockfallCheckpointsOnDisplay[nLoop] = FALSE CREATE_CHECKPOINT CHECKPOINT_EMPTYTUBE 518.9683 967.7642 -25.8910 0.0 0.0 0.0 5.0 checkRockfalls[nLoop] flagRockfallCheckpointsOnDisplay[nLoop] = TRUE ENDIF IF LOCATE_OBJECT_3D objectRocks[nLoop] 518.9683 967.7642 -17.8910 45.0 20.0 9.0 FALSE flagTempFlag = TRUE ENDIF ELSE IF flagRockfallCheckpointsOnDisplay[nLoop] = TRUE DELETE_CHECKPOINT checkRockfalls[nLoop] flagRockfallCheckpointsOnDisplay[nLoop] = FALSE ENDIF ENDIF BREAK CASE 3 GET_OBJECT_COORDINATES objectRocks[nLoop] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance IF fTempDistance < 30.0 // Display small highlight, then check for rock entering bigger area // LOCATE_OBJECT_3D objectRocks[nLoop] 671.3267 941.1938 -29.3380 18.0 18.0 5.0 TRUE IF flagRockfallCheckpointsOnDisplay[nLoop] = FALSE CREATE_CHECKPOINT CHECKPOINT_EMPTYTUBE 671.3267 941.1938 -29.3380 0.0 0.0 0.0 5.0 checkRockfalls[nLoop] flagRockfallCheckpointsOnDisplay[nLoop] = TRUE ENDIF IF LOCATE_OBJECT_3D objectRocks[nLoop] 671.3267 941.1938 -29.3380 25.0 25.0 5.0 FALSE flagTempFlag = TRUE ENDIF ELSE IF flagRockfallCheckpointsOnDisplay[nLoop] = TRUE DELETE_CHECKPOINT checkRockfalls[nLoop] flagRockfallCheckpointsOnDisplay[nLoop] = FALSE ENDIF ENDIF BREAK CASE 4 GET_OBJECT_COORDINATES objectRocks[nLoop] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance IF fTempDistance < 30.0 // Display small highlight, then check for rock entering bigger area // LOCATE_OBJECT_3D objectRocks[nLoop] 523.2235 907.1995 -43.4101 14.0 14.0 5.0 TRUE IF flagRockfallCheckpointsOnDisplay[nLoop] = FALSE CREATE_CHECKPOINT CHECKPOINT_EMPTYTUBE 523.2235 907.1995 -43.4101 0.0 0.0 0.0 5.0 checkRockfalls[nLoop] flagRockfallCheckpointsOnDisplay[nLoop] = TRUE ENDIF IF LOCATE_OBJECT_3D objectRocks[nLoop] 523.2235 907.1995 -40.4101 35.0 25.0 5.0 FALSE flagTempFlag = TRUE ENDIF ELSE IF flagRockfallCheckpointsOnDisplay[nLoop] = TRUE DELETE_CHECKPOINT checkRockfalls[nLoop] flagRockfallCheckpointsOnDisplay[nLoop] = FALSE ENDIF ENDIF BREAK CASE 5 GET_OBJECT_COORDINATES objectRocks[nLoop] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance IF fTempDistance < 30.0 // Display small highlight, then check for rock entering bigger area // LOCATE_OBJECT_3D objectRocks[nLoop] 536.8022 838.0778 -38.2296 10.0 10.0 5.0 TRUE IF flagRockfallCheckpointsOnDisplay[nLoop] = FALSE CREATE_CHECKPOINT CHECKPOINT_EMPTYTUBE 536.8022 838.0778 -38.2296 0.0 0.0 0.0 5.0 checkRockfalls[nLoop] flagRockfallCheckpointsOnDisplay[nLoop] = TRUE ENDIF IF LOCATE_OBJECT_3D objectRocks[nLoop] 536.8022 838.0778 -38.2296 25.0 15.0 5.0 FALSE flagTempFlag = TRUE ENDIF ELSE IF flagRockfallCheckpointsOnDisplay[nLoop] = TRUE DELETE_CHECKPOINT checkRockfalls[nLoop] flagRockfallCheckpointsOnDisplay[nLoop] = FALSE ENDIF ENDIF BREAK CASE 6 GET_OBJECT_COORDINATES objectRocks[nLoop] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance IF fTempDistance < 50.0 // Display small highlight, then check for rock entering bigger area // LOCATE_OBJECT_3D objectRocks[nLoop] 645.2571 773.7028 -28.2457 17.0 17.0 5.0 TRUE IF flagRockfallCheckpointsOnDisplay[nLoop] = FALSE CREATE_CHECKPOINT CHECKPOINT_EMPTYTUBE 645.2571 773.7028 -28.2457 0.0 0.0 0.0 5.0 checkRockfalls[nLoop] flagRockfallCheckpointsOnDisplay[nLoop] = TRUE ENDIF IF LOCATE_OBJECT_3D objectRocks[nLoop] 645.2571 773.7028 -26.2457 35.0 20.0 7.0 FALSE flagTempFlag = TRUE ENDIF ELSE IF flagRockfallCheckpointsOnDisplay[nLoop] = TRUE DELETE_CHECKPOINT checkRockfalls[nLoop] flagRockfallCheckpointsOnDisplay[nLoop] = FALSE ENDIF ENDIF BREAK DEFAULT WRITE_DEBUG Too_Many_Rocks ENDSWITCH // Has this rock just been pushed? IF flagTempFlag = TRUE REMOVE_BLIP blipRocks[nLoop] DELETE_OBJECT objectRocks[nLoop] IF flagRockfallCheckpointsOnDisplay[nLoop] = TRUE DELETE_CHECKPOINT checkRockfalls[nLoop] flagRockfallCheckpointsOnDisplay[nLoop] = FALSE ENDIF flagRockfallRocksPushed[nLoop] = TRUE nRockfallRocks++ // INFO: rocks left nTempInt = QUARRY_ROCKFALL_MAX_ROCKS - nRockfallRocks IF NOT nTempInt = 0 IF nRockfallRocks = 1 PRINT_WITH_2_NUMBERS_NOW QUAR_14 nRockfallRocks nTempInt 5000 1 ELSE PRINT_WITH_2_NUMBERS_NOW QUAR_13 nRockfallRocks nTempInt 5000 1 ENDIF ENDIF ENDIF ENDIF ENDREPEAT ENDIF ENDIF // Dozer Text IF flagDozerTextDisplayed = FALSE IF IS_CHAR_IN_CAR scplayer carDozer // INFO: push rocks PRINT_NOW QUAR_12 7000 1 flagDozerTextDisplayed = TRUE ENDIF ENDIF // Exit // ---- IF m_goals = 99 GOSUB Quarry_Next_Stage ENDIF RETURN // **************************************** // SABOTAGE: Move Bombs Quarry_Sabotage_Move_Bombs: // Check if the dozer is still alive IF IS_CAR_DEAD carDozer m_failed = TRUE m_fail_reason = QUARRY_FAILED_DOZER_DESTROYED RETURN ENDIF // Initialisation // -------------- IF m_goals = 0 nCurrentBomb = 0 // Clear the flags for all bombs REPEAT QUARRY_SABOTAGE_MAX_BOMBS nLoop flagBombExploded[nLoop] = FALSE flagBombsSecondExplosion[nLoop] = FALSE timerBombsSecondExplosion[nLoop] = 0 ENDREPEAT // Add blip for dozer ADD_BLIP_FOR_CAR carDozer blipDozer SET_BLIP_AS_FRIENDLY blipDozer TRUE // INFO: push bombs PRINT_NOW QUAR_15 10000 1 // Display the first timer g_Quarry_timerKM = timerBombsExplode[0] DISPLAY_ONSCREEN_TIMER_WITH_STRING g_Quarry_timerKM TIMER_DOWN QUAR_D3 nMissionStartTime = m_mission_timer // Start all bomb timers REPEAT QUARRY_SABOTAGE_MAX_BOMBS nLoop timerBombsExplode[nLoop] += m_mission_timer ENDREPEAT flagBombDisplayed = FALSE flagAllBombsMoved = FALSE flagAlternativeExplosionLocation = FALSE flagDozerTextDisplayed = FALSE m_goals++ ENDIF // Failure Conditions // ------------------ // Subgoals // -------- // Have all bombs been safely moved? IF m_goals = 1 IF flagAllBombsMoved = TRUE GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp nTempInt = QUARRY_SABOTAGE_MAX_BOMBS - 1 GET_OBJECT_COORDINATES objectBombs[nTempInt] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance IF fTempDistance > QUARRY_SABOTAGE_PLAYER_IN_EXPLOSION_RANGE_m ADD_EXPLOSION xposTemp2 yposTemp2 zposTemp2 EXPLOSION_TANK_GRENADE DELETE_OBJECT objectBombs[nTempInt] flagBombExploded[nTempInt] = TRUE m_goals = 99 ENDIF ENDIF ENDIF // Continuous updates // ------------------ // Blip maintenance IF DOES_BLIP_EXIST blipDozer // ...dozer blip exists IF IS_CHAR_IN_CAR scplayer carDozer // ...player is in the dozer so remove the dozer blip and allow the bomb blip to be displayed again REMOVE_BLIP blipDozer CLEAR_THIS_PRINT QUAR_35 ENDIF ELSE // ...dozer blip does not exist IF NOT IS_CHAR_IN_CAR scplayer carDozer // ...player is not in the dozer, so remove the bomb blip and add the dozer blip REMOVE_BLIP blipBomb REMOVE_BLIP blipDestination flagBombDisplayed = FALSE ADD_BLIP_FOR_CAR carDozer blipDozer SET_BLIP_AS_FRIENDLY blipDozer TRUE // Info: Get back in the Dozer PRINT_NOW QUAR_35 5000 1 ENDIF ENDIF // Bomb Sequence Controls IF flagAllBombsMoved = FALSE // ...bomb safety locates // NOTE: flagTempFlag used to determine if it is time to move on to the next bomb or not flagTempFlag = FALSE SWITCH nCurrentBomb CASE 0 // Check for bomb entering area IF LOCATE_OBJECT_3D objectBombs[nCurrentBomb] 830.4274 889.8520 12.3516 4.0 4.0 1.0 TRUE flagTempFlag = TRUE ENDIF BREAK CASE 1 // Check for bomb entering area IF flagAlternativeExplosionLocation = FALSE // ...display normal destination IF LOCATE_OBJECT_3D objectBombs[nCurrentBomb] 678.5786 981.4282 -13.7490 4.0 4.0 1.0 TRUE flagTempFlag = TRUE ENDIF // Check if the bomb has fallen off the edge GET_OBJECT_COORDINATES objectBombs[nCurrentBomb] xposTemp yposTemp zposTemp IF zposTemp < -23.6787 flagAlternativeExplosionLocation = TRUE REMOVE_BLIP blipBomb REMOVE_BLIP blipDestination flagBombDisplayed = FALSE // INFO: alternative site PRINT_NOW QUAR_21 7000 1 ENDIF ELSE // ...display alternative destination IF LOCATE_OBJECT_3D objectBombs[nCurrentBomb] 660.6660 913.7190 -41.4059 4.0 4.0 1.0 TRUE flagTempFlag = TRUE ENDIF ENDIF BREAK CASE 2 // Check for bomb entering area IF LOCATE_OBJECT_3D objectBombs[nCurrentBomb] 648.9208 916.2570 -42.2287 4.0 4.0 1.0 TRUE flagTempFlag = TRUE ENDIF BREAK CASE 3 // Check for bomb entering area IF LOCATE_OBJECT_3D objectBombs[nCurrentBomb] 632.4524 810.3196 -43.9609 4.0 4.0 1.0 TRUE flagTempFlag = TRUE ENDIF BREAK DEFAULT WRITE_DEBUG Unknown_bomb_ID ENDSWITCH // ...update this bomb because it has been safely moved IF flagTempFlag = TRUE REMOVE_BLIP blipBomb REMOVE_BLIP blipDestination flagBombDisplayed = FALSE flagAlternativeExplosionLocation = FALSE // Freeze the object and remove it's collision FREEZE_OBJECT_POSITION objectBombs[nCurrentBomb] TRUE SET_OBJECT_COLLISION objectBombs[nCurrentBomb] FALSE // If this was the last bomb, then make it explode soonish nTempInt = nCurrentBomb + 1 IF nTempInt = QUARRY_SABOTAGE_MAX_BOMBS // Give the player 15 seconds to move away nTempInt2 = m_mission_timer + 15000 timerBombsExplode[nCurrentBomb] = nTempInt2 ELSE // Give the player 15 seconds if the timer is below that already nTempInt2 = m_mission_timer + 15000 IF nTempInt2 > timerBombsExplode[nCurrentBomb] timerBombsExplode[nCurrentBomb] = nTempInt2 ENDIF ENDIF nCurrentBomb++ ENDIF // ...update checking for completion IF nCurrentBomb = QUARRY_SABOTAGE_MAX_BOMBS flagAllBombsMoved = TRUE ENDIF // ...update timer IF flagTempFlag = TRUE // Remove timer CLEAR_ONSCREEN_TIMER g_Quarry_timerKM IF flagAllBombsMoved = FALSE // update timer for next bomb g_Quarry_timerKM = timerBombsExplode[nCurrentBomb] - m_mission_timer DISPLAY_ONSCREEN_TIMER_WITH_STRING g_Quarry_timerKM TIMER_DOWN QUAR_D3 ENDIF ENDIF // ...next text IF flagTempFlag = TRUE IF flagAllBombsMoved = TRUE PRINT_NOW QUAR_20 7000 1 ELSE SWITCH nCurrentBomb CASE 0 // NOTE: text displayed earlier BREAK CASE 1 // INFO: crane bomb PRINT_NOW QUAR_17 7000 1 BREAK CASE 2 // INFO: grinder bomb PRINT_NOW QUAR_18 7000 1 BREAK CASE 3 // INFO: crushers bomb PRINT_NOW QUAR_34 7000 1 BREAK ENDSWITCH ENDIF ENDIF // ...bomb blips IF flagBombDisplayed = FALSE AND flagAllBombsMoved = FALSE AND NOT DOES_BLIP_EXIST blipDozer // ...display blip for barrel ADD_BLIP_FOR_OBJECT objectBombs[nCurrentBomb] blipBomb flagBombDisplayed = TRUE // ...display blip for Destination SWITCH nCurrentBomb CASE 0 ADD_BLIP_FOR_COORD 830.4274 889.8520 12.3516 blipDestination BREAK CASE 1 IF flagAlternativeExplosionLocation = FALSE // ...normal destination ADD_BLIP_FOR_COORD 678.5786 981.4282 -13.7490 blipDestination ELSE // ...alternative destination ADD_BLIP_FOR_COORD 660.6660 913.7190 -41.4059 blipDestination ENDIF BREAK CASE 2 ADD_BLIP_FOR_COORD 648.9208 916.2570 -42.2287 blipDestination BREAK CASE 3 ADD_BLIP_FOR_COORD 632.4524 810.3196 -43.9609 blipDestination BREAK ENDSWITCH ENDIF ENDIF // Explode bombs when their time is up (or when player is a safe distance away) nLoop = 0 nTempInt = nCurrentBomb IF flagAllBombsMoved = TRUE nTempInt-- ENDIF WHILE nLoop <= nTempInt // Is it time for this bomb to explode? IF flagBombExploded[nLoop] = FALSE // If the player and dozer are safe distances away from the bombs then explode them immediately for effect GET_OBJECT_COORDINATES objectBombs[nLoop] xposTemp yposTemp zposTemp GET_CAR_COORDINATES carDozer xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance GET_CHAR_COORDINATES scplayer xposTemp3 yposTemp3 zposTemp3 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp3 yposTemp3 zposTemp3 fTempDistance2 // Only previous bombs should explode when out of blast radius, definitely not the current bomb IF NOT nLoop = nCurrentBomb IF fTempDistance > QUARRY_SABOTAGE_THEATRICAL_EXPLOSION_RANGE_m AND fTempDistance2 > QUARRY_SABOTAGE_THEATRICAL_EXPLOSION_RANGE_m // Set the mission timer so that the bombs now explode timerBombsExplode[nLoop] = m_mission_timer - 1 ENDIF ENDIF // Check if it is time to explode this bomb IF timerBombsExplode[nLoop] < m_mission_timer ADD_EXPLOSION xposTemp yposTemp zposTemp EXPLOSION_TANK_GRENADE DELETE_OBJECT objectBombs[nLoop] flagBombExploded[nLoop] = TRUE flagBombsSecondExplosion[nLoop] = FALSE timerBombsSecondExplosion[nLoop] = m_mission_timer + 2000 xposBombs[nLoop] = xposTemp yposBombs[nLoop] = yposTemp zposBombs[nLoop] = zposTemp // Check if the dozer is within range IF fTempDistance < QUARRY_SABOTAGE_PLAYER_IN_EXPLOSION_RANGE_m // Dozer within range, so make it explode EXPLODE_CAR carDozer ENDIF // Check if the player is within range IF fTempDistance2 < QUARRY_SABOTAGE_PLAYER_IN_EXPLOSION_RANGE_m // Player within range m_failed = TRUE m_fail_reason = QUARRY_FAILED_TOO_CLOSE_TO_EXPLOSION RETURN ENDIF // If this was the current bomb then fail the mission IF nLoop = nCurrentBomb m_failed = TRUE m_fail_reason = QUARRY_FAILED_BOMB_EXPLODED RETURN ENDIF ENDIF ELSE IF flagBombsSecondExplosion[nLoop] = FALSE IF timerBombsSecondExplosion[nLoop] < m_mission_timer ADD_EXPLOSION xposBombs[nLoop] yposBombs[nLoop] zposBombs[nLoop] EXPLOSION_OBJECT flagBombsSecondExplosion[nLoop] = TRUE ENDIF ENDIF ENDIF nLoop++ ENDWHILE // Dozer Text IF flagDozerTextDisplayed = FALSE IF IS_CHAR_IN_CAR scplayer carDozer // INFO: site office bomb PRINT_NOW QUAR_16 7000 1 flagDozerTextDisplayed = TRUE ENDIF ENDIF // Exit // ---- IF m_goals = 99 GOSUB Quarry_Next_Stage ENDIF RETURN // **************************************** // REMOVAL: Reach Dumper Quarry_Removal_Reach_Dumper: // Check if the dumper is still alive IF IS_CAR_DEAD carDumper m_failed = TRUE m_fail_reason = QUARRY_FAILED_DUMPER_DESTROYED RETURN ENDIF // Initialisation // -------------- IF m_goals = 0 // Add blip for dumper ADD_BLIP_FOR_CAR carDumper blipDumper SET_BLIP_AS_FRIENDLY blipDumper TRUE // Display blip at other entrance GOSUB Quarry_Display_Other_Entrance_Blip // INFO: get to the dumper PRINT_NOW QUAR_22 10000 1 flagReadyToDump = FALSE // Display the 'deadline' time // g_Quarry_timerKM = QUARRY_REMOVAL_MISSION_TIME_sec * 1000 nTempInt = QUARRY_MISSION_REMOVAL - 1 g_Quarry_timerKM = g_Quarry_recordsKM[nTempInt] * 1000 DISPLAY_ONSCREEN_TIMER_WITH_STRING g_Quarry_timerKM TIMER_DOWN QUAR_D1 nMissionStartTime = m_mission_timer // nAddHours = QUARRY_REMOVAL_HOURS // nAddMinutes = QUARRY_REMOVAL_MINUTES // timerMissionFail = 0 // GOSUB Quarry_Calculate_Future_Time // DISPLAY_ONSCREEN_TIMER_WITH_STRING g_Quarry_timerKM TIMER_UP QUAR_D1 // FREEZE_ONSCREEN_TIMER TRUE m_goals++ ENDIF // Failure Conditions // ------------------ // Check time limit // IF timerMissionFail < m_mission_timer // m_failed = TRUE // m_fail_reason = QUARRY_FAILED_COPS_ARRIVED // RETURN // ENDIF // Check for Time Up IF g_Quarry_timerKM <= 0 m_failed = TRUE m_fail_reason = QUARRY_FAILED_COPS_ARRIVED RETURN ENDIF // Subgoals // -------- // Has player reached the Dumper? IF m_goals = 1 IF flagReadyToDump = TRUE // Remove blip at other entrance REMOVE_BLIP blipOtherEntrance flagDisplayOtherEntranceBlip = FALSE REMOVE_BLIP blipDumper m_goals = 99 ENDIF ENDIF // Continuous updates // ------------------ // Check if player in dumper IF flagReadyToDump = FALSE IF IS_CHAR_IN_CAR scplayer carDumper flagReadyToDump = TRUE ENDIF ENDIF // Check if player reached other entrance IF flagDisplayOtherEntranceBlip = TRUE // Display a small highlight at the entrance LOCATE_CHAR_ANY_MEANS_3D scplayer xposEntrance yposEntrance zposEntrance 4.0 4.0 4.0 TRUE // Check for arrival at the entrance IF LOCATE_CHAR_ANY_MEANS_3D scplayer xposEntrance yposEntrance zposEntrance 15.0 10.0 4.0 FALSE REMOVE_BLIP blipOtherEntrance flagDisplayOtherEntranceBlip = FALSE ENDIF ENDIF // Exit // ---- IF m_goals = 99 GOSUB Quarry_Next_Stage ENDIF RETURN // **************************************** // REMOVAL: Dump Bodies Quarry_Removal_Dump_Bodies: // Check if the dumper is still alive IF IS_CAR_DEAD carDumper m_failed = TRUE m_fail_reason = QUARRY_FAILED_DUMPER_DESTROYED RETURN ENDIF // Initialisation // -------------- IF m_goals = 0 // Set up destination (fires) xposDestination = 469.3770 yposDestination = 877.2751 zposDestination = -29.0362 // ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination // Add blip at Quarry entrance GOSUB Quarry_Display_Entrance_Blip // Set up fires at destination REPEAT QUARRY_REMOVAL_MAX_FIRES nLoop // NOTE: nTempInt used to randomly choose size of fire GENERATE_RANDOM_INT_IN_RANGE 2 4 nTempInt GENERATE_RANDOM_FLOAT_IN_RANGE -2.0 2.0 xposTemp GENERATE_RANDOM_FLOAT_IN_RANGE -3.0 3.0 yposTemp xposTemp += xposDestination yposTemp += yposDestination GET_GROUND_Z_FOR_3D_COORD xposTemp yposTemp -20.0 zposTemp START_SCRIPT_FIRE xposTemp yposTemp zposTemp 0 nTempInt fireFires[nLoop] ENDREPEAT // Set up Fire Fuel at Destination REPEAT QUARRY_REMOVAL_MAX_FIRE_FUEL nLoop // NOTE: nTempInt used to randomly choose the object GENERATE_RANDOM_INT_IN_RANGE 0 4 nTempInt // NOTE: xposTemp, yposTemp, and zposTemp used to generate random position GENERATE_RANDOM_FLOAT_IN_RANGE -1.3 1.3 xposTemp GENERATE_RANDOM_FLOAT_IN_RANGE -1.8 1.8 yposTemp xposTemp += xposDestination yposTemp += yposDestination GET_GROUND_Z_FOR_3D_COORD xposTemp yposTemp -20.0 zposTemp SWITCH nTempInt CASE 0 CREATE_OBJECT CM_BOX xposTemp yposTemp zposTemp objectFireFuel[nTempInt] BREAK CASE 1 CREATE_OBJECT BLACKBAG2 xposTemp yposTemp zposTemp objectFireFuel[nTempInt] BREAK CASE 2 CREATE_OBJECT DYN_WOODPILE xposTemp yposTemp zposTemp objectFireFuel[nTempInt] BREAK CASE 3 CREATE_OBJECT DYN_WOODPILE2 xposTemp yposTemp zposTemp objectFireFuel[nTempInt] BREAK ENDSWITCH // Rotation // NOTE: fTempFloat, fTempFloat2, fTempFloat3 used to get random orientations GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 359.0 fTempFloat GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 359.0 fTempFloat2 GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 359.0 fTempFloat3 SET_OBJECT_ROTATION objectFireFuel[nTempInt] fTempFloat fTempFloat2 fTempFloat3 // Other stuff SET_OBJECT_RENDER_SCORCHED objectFireFuel[nTempInt] TRUE SET_OBJECT_COLLISION objectFireFuel[nTempInt] FALSE ENDREPEAT // INFO: dump the bodies PRINT_NOW QUAR_23 7000 1 flagDisplayedTracksText = FALSE m_goals++ ENDIF // Failure Conditions // ------------------ // Check for the bodies being on the ground // NOTE: nTempInt is used to check the number of bodies on the ground in the correct place IF flagDumped = FALSE nTempInt = 0 REPEAT QUARRY_REMOVAL_MAX_BODIES nLoop IF NOT IS_OBJECT_ATTACHED objectBodies[nLoop] GET_OBJECT_COORDINATES objectBodies[nLoop] xposTemp yposTemp zposTemp GET_GROUND_Z_FOR_3D_COORD xposTemp yposTemp zposTemp fTempFloat fTempFloat2 = zposTemp - fTempFloat IF fTempFloat2 < 0.5 // ...body on ground // Check if it is in the correct place IF LOCATE_OBJECT_3D objectBodies[nLoop] xposDestination yposDestination zposDestination 12.0 15.0 3.0 FALSE nTempInt2 = QUARRY_REMOVAL_MAX_FIRES + nLoop IF NOT DOES_SCRIPT_FIRE_EXIST fireFires[nTempInt2] START_SCRIPT_FIRE xposTemp yposTemp zposTemp 0 3 fireFires[nTempInt2] SET_OBJECT_RENDER_SCORCHED objectBodies[nLoop] TRUE FREEZE_OBJECT_POSITION objectBodies[nLoop] TRUE SET_OBJECT_COLLISION objectBodies[nLoop] FALSE ENDIF nTempInt++ ELSE m_failed = TRUE m_fail_reason = QUARRY_FAILED_BODY_DUMPED_IN_WRONG_PLACE RETURN ENDIF ENDIF ENDIF ENDREPEAT // Check for success IF nTempInt = QUARRY_REMOVAL_MAX_BODIES flagDumped = TRUE ENDIF ENDIF // Check for Time Up IF g_Quarry_timerKM <= 0 m_failed = TRUE m_fail_reason = QUARRY_FAILED_COPS_ARRIVED RETURN ENDIF // Subgoals // -------- // Check if the bodies have been dumped IF m_goals = 1 IF flagDumped = TRUE m_goals = 99 ENDIF ENDIF // Continuous updates // ------------------ // Blip Maintenance IF IS_CHAR_IN_CAR scplayer carDumper // ...player is in the dumper, so make sure that the destination blip is on display IF DOES_BLIP_EXIST blipDumper REMOVE_BLIP blipDumper CLEAR_THIS_PRINT QUAR_36 IF flagDisplayEntranceBlip = TRUE ADD_BLIP_FOR_COORD xposEntrance yposEntrance zposEntrance blipDestination ELSE ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination ENDIF ENDIF ELSE // ...player is not in the dumper, so display the dumper blip IF NOT DOES_BLIP_EXIST blipDumper REMOVE_BLIP blipDestination ADD_BLIP_FOR_CAR carDumper blipDumper SET_BLIP_AS_FRIENDLY blipDumper TRUE // Info: Get back in the Dumper PRINT_NOW QUAR_36 5000 1 ENDIF ENDIF // Display a locate until closer to the fire IF flagDumped = FALSE IF IS_CHAR_IN_CAR scplayer carDumper IF NOT LOCATE_CHAR_IN_CAR_3D scplayer xposDestination yposDestination zposDestination 25.0 25.0 20.0 FALSE // Display highlight LOCATE_CHAR_IN_CAR_3D scplayer xposDestination yposDestination zposDestination 4.0 4.0 4.0 TRUE ELSE // Display Help text IF flagDumperHelpDisplayed = FALSE PRINT_HELP_FOREVER QUAR_H1 // Use ~m~~widget_auto_hydraulics~ to raise and lower the Dumper's loader. flagDumperHelpDisplayed = TRUE ENDIF ENDIF ENDIF ENDIF // Check for player at entrance IF flagDisplayedTracksText = FALSE IF IS_CHAR_IN_CAR scplayer carDumper IF LOCATE_CHAR_IN_CAR_3D scplayer xposEntrance yposEntrance zposEntrance 12.0 12.0 12.0 TRUE PRINT_NOW QUAR_24 7000 1 flagDisplayedTracksText = TRUE // Remove entrance blip REMOVE_BLIP blipEntrance flagDisplayEntranceBlip = FALSE // Add blip at fire ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination ENDIF ENDIF ENDIF // Exit // ---- IF m_goals = 99 GOSUB Quarry_Next_Stage ENDIF RETURN // **************************************** // DELIVERY: Deliver Quarry_Delivery_Deliver: // Check if the dumper is still alive IF IS_CAR_DEAD carDumper m_failed = TRUE m_fail_reason = QUARRY_FAILED_DUMPER_DESTROYED RETURN ENDIF // Initialisation // -------------- IF m_goals = 0 // Set up the Destination xposDestination = -59.3126 yposDestination = 2502.2544 zposDestination = 15.4766 // Store the Dumper's initial health GET_CAR_HEALTH carDumper nPreviousHealth // Dumper blip ADD_BLIP_FOR_CAR carDumper blipDumper SET_BLIP_AS_FRIENDLY blipDumper TRUE // Display the 'deadline' time // g_Quarry_timerKM = QUARRY_DELIVERY_MISSION_TIME_sec * 1000 nTempInt = QUARRY_MISSION_DELIVERY - 1 g_Quarry_timerKM = g_Quarry_recordsKM[nTempInt] * 1000 DISPLAY_ONSCREEN_TIMER_WITH_STRING g_Quarry_timerKM TIMER_DOWN QUAR_D4 nMissionStartTime = m_mission_timer // nAddHours = QUARRY_DELIVERY_HOURS // nAddMinutes = QUARRY_DELIVERY_MINUTES // timerMissionFail = 0 // GOSUB Quarry_Calculate_Future_Time // DISPLAY_ONSCREEN_TIMER_WITH_STRING g_Quarry_timerKM TIMER_UP QUAR_D4 // FREEZE_ONSCREEN_TIMER TRUE // INFO: Deliver the explosives // PRINT_NOW QUAR_25 10000 1 PRINT_NOW QUAR_38 10000 1 flagDumped = FALSE flagDisplayedDumpText = FALSE REPEAT QUARRY_DELIVERY_MAX_BOMBS nLoop flagBombStuck[nLoop] = FALSE timerBombStuck[nLoop] = 0 ENDREPEAT m_goals++ ENDIF // Failure Conditions // ------------------ // Check for the barrels being on the ground // NOTE: nTempInt is used to check the number of barrels on the ground in the correct place IF flagDumped = FALSE flagTempFlag = FALSE nTempInt = 0 REPEAT QUARRY_DELIVERY_MAX_BOMBS nLoop IF NOT IS_OBJECT_ATTACHED objectBombs[nLoop] GET_OBJECT_COORDINATES objectBombs[nLoop] xposTemp yposTemp zposTemp GET_GROUND_Z_FOR_3D_COORD xposTemp yposTemp zposTemp fTempFloat fTempFloat2 = zposTemp - fTempFloat IF fTempFloat2 < 1.0 // ...bomb on ground // Check if it is in the correct place IF LOCATE_OBJECT_3D objectBombs[nLoop] xposDestination yposDestination zposDestination 12.0 15.0 3.0 FALSE // ...bomb dropped in correct place nTempInt++ ELSE // ..wrong place, so explode it ADD_EXPLOSION xposTemp yposTemp zposTemp EXPLOSION_ROCKET DELETE_OBJECT objectBombs[nLoop] flagTempFlag = TRUE ENDIF ENDIF ENDIF ENDREPEAT // Check for failure IF flagTempFlag = TRUE // Explode all bombs REPEAT QUARRY_DELIVERY_MAX_BOMBS nLoop IF DOES_OBJECT_EXIST objectBombs[nLoop] ADD_EXPLOSION xposTemp yposTemp zposTemp EXPLOSION_ROCKET DELETE_OBJECT objectBombs[nLoop] ENDIF ENDREPEAT // Explode the dumper EXPLODE_CAR carDumper m_failed = TRUE m_fail_reason = QUARRY_FAILED_TOO_MUCH_DAMAGE RETURN ENDIF // Check for success IF nTempInt = QUARRY_DELIVERY_MAX_BOMBS flagDumped = TRUE ENDIF ENDIF // Check for the dumper taking too much damage IF flagDumped = FALSE GET_CAR_HEALTH carDumper nTempInt nTempInt2 = nPreviousHealth - nTempInt IF nTempInt2 > QUARRY_DELIVERY_HEALTH_THRESHOLD // ...taken too much damage, so explode all barrels REPEAT QUARRY_DELIVERY_MAX_BOMBS nLoop IF DOES_OBJECT_EXIST objectBombs[nLoop] GET_OBJECT_COORDINATES objectBombs[nLoop] xposTemp yposTemp zposTemp ADD_EXPLOSION xposTemp yposTemp zposTemp EXPLOSION_ROCKET DELETE_OBJECT objectBombs[nLoop] ENDIF ENDREPEAT // Explode Dumper EXPLODE_CAR carDumper m_failed = TRUE m_fail_reason = QUARRY_FAILED_TOO_MUCH_DAMAGE RETURN ENDIF nPreviousHealth = nTempInt ENDIF // Check time limit // IF timerMissionFail < m_mission_timer // m_failed = TRUE // m_fail_reason = QUARRY_FAILED_MISSED_DEADLINE // RETURN // ENDIF // Check for Time Up IF g_Quarry_timerKM <= 0 m_failed = TRUE m_fail_reason = QUARRY_FAILED_MISSED_DEADLINE RETURN ENDIF // Subgoals // -------- // Check for the goods being dumped IF m_goals = 1 IF flagDumped = TRUE m_goals = 99 ENDIF ENDIF // Continuous updates // ------------------ // Make sure the Helper objects stay in place REPEAT QUARRY_MAX_HELPERS nLoop IF DOES_OBJECT_EXIST objectHelpers[nLoop] IF NOT IS_OBJECT_ATTACHED objectHelpers[nLoop] SWITCH nLoop CASE 0 ATTACH_OBJECT_TO_CAR objectHelpers[nLoop] carDumper -1.0 -5.0 0.3 0.0 0.0 0.0 BREAK CASE 1 ATTACH_OBJECT_TO_CAR objectHelpers[nLoop] carDumper 0.0 -5.0 0.3 0.0 0.0 0.0 BREAK CASE 2 ATTACH_OBJECT_TO_CAR objectHelpers[nLoop] carDumper 1.0 -5.0 0.3 0.0 0.0 0.0 BREAK ENDSWITCH ENDIF ENDIF ENDREPEAT // Blip maintenance IF IS_CHAR_IN_CAR scplayer carDumper // ...player is in the dumper, so display destination blip IF NOT DOES_BLIP_EXIST blipDestination // ...remove the dumper blip REMOVE_BLIP blipDumper // ...add the destination blip ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination CLEAR_THIS_PRINT QUAR_36 ENDIF ELSE // ...player is not in the dumper, so display the dumper blip IF NOT DOES_BLIP_EXIST blipDumper // ...remove the destination blip REMOVE_BLIP blipDestination // ...add the dumper blip ADD_BLIP_FOR_CAR carDumper blipDumper SET_BLIP_AS_FRIENDLY blipDumper TRUE // Info: Get back in the Dumper PRINT_NOW QUAR_36 5000 1 ENDIF ENDIF // Highlights IF DOES_BLIP_EXIST blipDestination // ...display destination highlight LOCATE_CHAR_ANY_MEANS_3D scplayer xposDestination yposDestination zposDestination 8.0 8.0 4.0 TRUE ENDIF // Text IF flagDisplayedDumpText = FALSE IF LOCATE_CHAR_ANY_MEANS_3D scplayer xposDestination yposDestination zposDestination 24.0 30.0 8.0 FALSE // INFO: Drop yur load PRINT_NOW QUAR_26 7000 1 flagDisplayedDumpText = TRUE ENDIF ENDIF // If the truck is at the destination and the back is raised and there are barrels attached, unattach them IF LOCATE_CAR_3D carDumper xposDestination yposDestination zposDestination 10.0 10.0 5.0 FALSE GET_CAR_MOVING_COMPONENT_OFFSET carDumper fTempFloat IF fTempFloat > 0.05 REPEAT QUARRY_DELIVERY_MAX_BOMBS nLoop IF DOES_OBJECT_EXIST objectBombs[nLoop] IF IS_OBJECT_ATTACHED objectBombs[nLoop] DETACH_OBJECT objectBombs[nLoop] 0.0 0.0 0.0 FALSE ENDIF ENDIF ENDREPEAT ENDIF ENDIF // Check if the barrels have taken significant damage and explode them flagTempFlag = FALSE REPEAT QUARRY_DELIVERY_MAX_BOMBS nLoop IF DOES_OBJECT_EXIST objectBombs[nLoop] GET_OBJECT_HEALTH objectBombs[nLoop] nTempInt IF nTempInt <= 950 flagTempFlag = TRUE ENDIF ENDIF ENDREPEAT IF flagTempFlag = TRUE // ...they have taken significant damage, so explode barrels REPEAT QUARRY_DELIVERY_MAX_BOMBS nLoop IF DOES_OBJECT_EXIST objectBombs[nLoop] GET_OBJECT_COORDINATES objectBombs[nLoop] xposTemp yposTemp zposTemp ADD_EXPLOSION xposTemp yposTemp zposTemp EXPLOSION_ROCKET DELETE_OBJECT objectBombs[nLoop] ENDIF ENDREPEAT // ...explode dumper EXPLODE_CAR carDumper m_failed = TRUE m_fail_reason = QUARRY_FAILED_TOO_MUCH_DAMAGE RETURN ENDIF // Check for barrels stuck on the dumper IF LOCATE_CAR_3D carDumper xposDestination yposDestination zposDestination 10.0 10.0 5.0 FALSE GET_CAR_MOVING_COMPONENT_OFFSET carDumper fTempFloat IF fTempFloat > 0.25 REPEAT QUARRY_DELIVERY_MAX_BOMBS nLoop IF DOES_OBJECT_EXIST objectBombs[nLoop] // Check if this bomb is stuck on the tailgate GET_OBJECT_COORDINATES objectBombs[nLoop] xposTemp yposTemp zposTemp flagTempFlag = FALSE nTempInt = 0 WHILE nTempInt < QUARRY_MAX_HELPERS IF flagTempFlag = FALSE AND DOES_OBJECT_EXIST objectHelpers[nTempInt] GET_OBJECT_COORDINATES objectHelpers[nTempInt] xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance IF fTempDistance < 0.75 flagTempFlag = TRUE ENDIF ENDIF nTempInt++ ENDWHILE IF flagTempFlag = TRUE // ...barrel close to a helper object IF flagBombStuck[nLoop] = FALSE // ...barrel wasn't previously close, so set up the 'is it stuck' check flagBombStuck[nLoop] = TRUE timerBombStuck[nLoop] = m_mission_timer + 5000 ELSE // ...barrel was previously close, so see if the timer has ran out IF timerBombStuck[nLoop] < m_mission_timer // ...timer has ran out, so restart it, make sure the barrel is free, drop the barrel timerBombStuck[nLoop] = m_mission_timer + 5000 IF IS_OBJECT_ATTACHED objectBombs[nLoop] DETACH_OBJECT objectBombs[nLoop] 0.0 0.0 0.0 FALSE ENDIF zposTemp += 1.2 SET_OBJECT_COORDINATES objectBombs[nLoop] xposTemp yposTemp zposTemp ENDIF ENDIF ELSE // ...barrel not close to a helper object flagBombStuck[nLoop] = FALSE timerBombStuck[nLoop] = 0 ENDIF ENDIF ENDREPEAT ENDIF ENDIF // Exit // ---- IF m_goals = 99 REMOVE_BLIP blipDestination REMOVE_BLIP blipDumper GOSUB Quarry_Next_Stage ENDIF RETURN /* The delivery will no longer feature a return journey // **************************************** // DELIVERY: Return Quarry_Delivery_Return: // Check if the dumper is still alive IF IS_CAR_DEAD carDumper m_failed = TRUE m_fail_reason = QUARRY_FAILED_DUMPER_DESTROYED RETURN ENDIF // Initialisation // -------------- IF m_goals = 0 // Set up the Destination xposDestination = 816.4832 yposDestination = 845.8509 zposDestination = 9.4934 // INFO: Return to Quarry PRINT_NOW QUAR_27 7000 1 flagReturned = FALSE m_goals++ ENDIF // Failure Conditions // ------------------ // Check time limit // IF timerMissionFail < m_mission_timer // m_failed = TRUE // m_fail_reason = QUARRY_FAILED_MISSED_DEADLINE // RETURN // ENDIF // Check for Time Up IF g_Quarry_timerKM <= 0 m_failed = TRUE m_fail_reason = QUARRY_FAILED_MISSED_DEADLINE RETURN ENDIF // Subgoals // -------- // Return to Quarry IF m_goals = 1 IF flagReturned = TRUE SET_PLAYER_CONTROL player1 OFF m_goals++ ENDIF ENDIF // Wait for car to stop IF m_goals = 2 IF IS_CAR_STOPPED carDumper SET_PLAYER_CONTROL player1 ON m_goals = 99 ENDIF ENDIF // Continuous updates // ------------------ // Blip maintenance IF IS_CHAR_IN_CAR scplayer carDumper // ...player is in the dumper, so display destination blip IF NOT DOES_BLIP_EXIST blipDestination // ...remove the dumper blip REMOVE_BLIP blipDumper // ...add the destination blip ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination CLEAR_THIS_PRINT QUAR_36 ENDIF ELSE // ...player is not in the dumper, so display the dumper blip IF NOT DOES_BLIP_EXIST blipDumper // ...remove the destination blip REMOVE_BLIP blipDestination // ...add the dumper blip ADD_BLIP_FOR_CAR carDumper blipDumper SET_BLIP_AS_FRIENDLY blipDumper TRUE // Info: Get back in the Dumper PRINT_NOW QUAR_36 5000 1 ENDIF ENDIF // Player returned to Quarry IF flagReturned = FALSE IF IS_CHAR_IN_CAR scplayer carDumper IF LOCATE_CHAR_IN_CAR_3D scplayer xposDestination yposDestination zposDestination 4.0 4.0 4.0 TRUE flagReturned = TRUE ENDIF ENDIF ENDIF // Exit // ---- IF m_goals = 99 GOSUB Quarry_Next_Stage ENDIF RETURN */ // **************************************** // SPILLAGE: Clear Tracks Quarry_Spillage_Clear_Tracks: // Check if the dozer is still alive IF IS_CAR_DEAD carDozer m_failed = TRUE m_fail_reason = QUARRY_FAILED_DOZER_DESTROYED RETURN ENDIF // Check if the train is still alive IF IS_CAR_DEAD carTrain m_failed = TRUE m_fail_reason = QUARRY_FAILED_TRAIN_DESTROYED RETURN ENDIF // Initialisation // -------------- IF m_goals = 0 flagBombBlipsOnDisplay = FALSE // Add blip for Dozer ADD_BLIP_FOR_CAR carDozer blipDozer SET_BLIP_AS_FRIENDLY blipDozer TRUE // Set up timers // ...arrival time // g_Quarry_timerKM = QUARRY_SPILLAGE_TRAIN_TIME_sec * 1000 nTempInt = QUARRY_MISSION_SPILLAGE - 1 g_Quarry_timerKM = g_Quarry_recordsKM[nTempInt] * 1000 DISPLAY_ONSCREEN_TIMER_WITH_STRING g_Quarry_timerKM TIMER_DOWN QUAR_D5 nMissionStartTime = m_mission_timer // ...train activate time (arrival time - 15 secs) // timerTrainStart = QUARRY_SPILLAGE_TRAIN_TIME_sec - 15 timerTrainStart = g_Quarry_recordsKM[nTempInt] - 15 timerTrainStart *= 1000 timerTrainStart += m_mission_timer flagTrainStarted = FALSE flagTrainPassed = FALSE // Set all the 'bombs on tracks' flags REPEAT QUARRY_SPILLAGE_MAX_BOMBS nLoop flagBombsOnTracks[nLoop] = TRUE ENDREPEAT // INFO: push explosive off track PRINT_NOW QUAR_28 10000 1 m_goals++ ENDIF // Failure Conditions // ------------------ // Check if the train is touching any of the barrels IF flagTrainStarted = TRUE GET_OBJECT_COORDINATES objectTrainHelper xposTemp2 yposTemp2 zposTemp2 REPEAT QUARRY_SPILLAGE_MAX_BOMBS nLoop IF DOES_OBJECT_EXIST objectBombs[nLoop] IF flagBombsOnTracks[nLoop] = TRUE GET_OBJECT_COORDINATES objectBombs[nLoop] xposTemp yposTemp zposTemp GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance IF fTempDistance < 2.0 ADD_EXPLOSION xposTemp yposTemp zposTemp EXPLOSION_HELI DELETE_OBJECT objectBombs[nLoop] IF NOT IS_CAR_DEAD carTrain EXPLODE_CAR carTrain SET_TRAIN_CRUISE_SPEED carTrain 0.0 m_failed = TRUE m_fail_reason = QUARRY_FAILED_EXPLOSIVES_ON_TRACK ENDIF ENDIF ENDIF ENDIF ENDREPEAT IF m_failed = TRUE RETURN ENDIF ENDIF // Subgoals // -------- // If the train has passed or all bombs have been moved fully off the track, then pass the mission IF m_goals = 1 IF flagTrainPassed = TRUE m_goals = 99 ENDIF ENDIF // Continuous updates // ------------------ // Blip Maintenance IF IS_CHAR_IN_CAR scplayer carDozer // ...player is in dozer IF flagBombBlipsOnDisplay = FALSE // ...allow bomb blips to be displayed flagBombBlipsOnDisplay = TRUE // ...remove dozer blip REMOVE_BLIP blipDozer CLEAR_THIS_PRINT QUAR_35 ENDIF ELSE // ...player is not in dozer IF flagBombBlipsOnDisplay = TRUE // ...bomb blips are not on display, so display them REPEAT QUARRY_SPILLAGE_MAX_BOMBS nLoop REMOVE_BLIP blipBombs[nLoop] ENDREPEAT flagBombBlipsOnDisplay = FALSE ENDIF IF NOT DOES_BLIP_EXIST blipDozer // ...add dozer blip ADD_BLIP_FOR_CAR carDozer blipDozer SET_BLIP_AS_FRIENDLY blipDozer TRUE // Info: Get back in the Dozer PRINT_NOW QUAR_35 5000 1 ENDIF ENDIF // Start the train? IF flagTrainStarted = FALSE // PC has a timing descrepancy, so use the on-screen timer to trigger the train // IF timerTrainStart < m_mission_timer IF g_Quarry_timerKM <= 15000 SET_TRAIN_SPEED carTrain QUARRY_SPILLAGE_TRAIN_SPEED SET_TRAIN_CRUISE_SPEED carTrain QUARRY_SPILLAGE_TRAIN_SPEED ADD_BLIP_FOR_CAR carTrain blipTrain SET_BLIP_AS_FRIENDLY blipTrain TRUE DISPLAY_RADAR 2 // PATHING OFF // INFO: The train is approaching PRINT_NOW QUAR_29 7000 1 flagTrainStarted = TRUE ENDIF ENDIF // Detect if the player is trying to head for the train's start point IF flagTrainStarted = FALSE IF IS_CHAR_IN_AREA_3D scplayer 727.6937 2412.2041 17.6685 872.5978 2714.9175 21.0511 FALSE SET_TRAIN_SPEED carTrain QUARRY_SPILLAGE_TRAIN_SPEED SET_TRAIN_CRUISE_SPEED carTrain QUARRY_SPILLAGE_TRAIN_SPEED ADD_BLIP_FOR_CAR carTrain blipTrain SET_BLIP_AS_FRIENDLY blipTrain TRUE DISPLAY_RADAR 2 // PATHING OFF CLEAR_ONSCREEN_TIMER g_Quarry_timerKM // INFO: The train is approaching PRINT_NOW QUAR_29 7000 1 flagTrainStarted = TRUE ENDIF ENDIF // Has the train passed? IF flagTrainStarted = TRUE AND flagTrainPassed = FALSE IF LOCATE_CAR_3D carTrain 673.9813 1331.0792 10.7891 20.0 20.0 8.0 FALSE flagTrainPassed = TRUE ENDIF ENDIF // Test the barrels to see if they are still near the tracks IF flagBombBlipsOnDisplay = TRUE REPEAT QUARRY_SPILLAGE_MAX_BOMBS nLoop IF DOES_OBJECT_EXIST objectBombs[nLoop] GET_OBJECT_COORDINATES objectBombs[nLoop] xposTemp yposTemp zposTemp IF xposTemp > 739.0 AND xposTemp < 747.0 flagBombsOnTracks[nLoop] = TRUE // Show Blip IF NOT DOES_BLIP_EXIST blipBombs[nLoop] ADD_BLIP_FOR_OBJECT objectBombs[nLoop] blipBombs[nLoop] ENDIF ELSE flagBombsOnTracks[nLoop] = FALSE // Remove blip IF DOES_BLIP_EXIST blipBombs[nLoop] REMOVE_BLIP blipBombs[nLoop] ENDIF ENDIF ENDIF ENDREPEAT ENDIF // If all barrels are off the tracks then trigger the train if it hasn't already been triggered IF flagTrainStarted = FALSE // NOTE: nTempInt use to count barrels OFF the track nTempInt = 0 REPEAT QUARRY_SPILLAGE_MAX_BOMBS nLoop IF DOES_OBJECT_EXIST objectBombs[nLoop] IF flagBombsOnTracks[nLoop] = FALSE nTempInt++ ENDIF ELSE // ...object doesn't exist nTempInt++ ENDIF ENDREPEAT // If all bombs are off the tracks, start the train at double speed IF nTempInt = QUARRY_SPILLAGE_MAX_BOMBS fTempFloat = QUARRY_SPILLAGE_TRAIN_SPEED * 2.0 SET_TRAIN_SPEED carTrain fTempFloat SET_TRAIN_CRUISE_SPEED carTrain fTempFloat ADD_BLIP_FOR_CAR carTrain blipTrain SET_BLIP_AS_FRIENDLY blipTrain TRUE DISPLAY_RADAR 2 // PATHING OFF CLEAR_ONSCREEN_TIMER g_Quarry_timerKM // INFO: The train is approaching PRINT_NOW QUAR_29 7000 1 // Set the mission stop time nMissionStopTime = m_mission_timer flagTrainStarted = TRUE ENDIF ENDIF // Exit // ---- IF m_goals = 99 GOSUB Quarry_Next_Stage ENDIF RETURN // **************************************** // DESTROY: Chase Truck Quarry_Destroy_Chase_Truck: IF IS_CAR_DEAD carStolen flagDestroyed = TRUE ENDIF IF IS_CAR_DEAD carDumper m_failed = TRUE m_fail_reason = QUARRY_FAILED_DUMPER_DESTROYED RETURN ENDIF // Initialisation // -------------- IF m_goals = 0 // Set Stolen truck to drive randomly at a decent speed CAR_WANDER_RANDOMLY carStolen SET_CAR_CRUISE_SPEED carStolen 26.0 SET_CAR_DRIVING_STYLE carStolen DRIVINGMODE_AVOIDCARS SET_CAR_ONLY_DAMAGED_BY_PLAYER carStolen TRUE ADD_BLIP_FOR_CAR carStolen blipStolen LOCK_CAR_DOORS carStolen CARLOCK_LOCKOUT_PLAYER_ONLY // Dumper blip ADD_BLIP_FOR_CAR carDumper blipDumper SET_BLIP_AS_FRIENDLY blipDumper TRUE // INFO: Destroy dumper PRINT_NOW QUAR_32 10000 1 // Damage bar DISPLAY_ONSCREEN_COUNTER_WITH_STRING g_Quarry_damageKM COUNTER_DISPLAY_BAR QUAR_D6 // Timer // g_Quarry_timerKM = QUARRY_DESTROY_MISSION_TIME_sec * 1000 nTempInt = QUARRY_MISSION_DESTROY - 1 g_Quarry_timerKM = g_Quarry_recordsKM[nTempInt] * 1000 DISPLAY_ONSCREEN_TIMER_WITH_STRING g_Quarry_timerKM TIMER_DOWN QUAR_D4 nMissionStartTime = m_mission_timer // Switch off any roads that are particularly dodgy for the stolen dumper to travel on SWITCH_ROADS_OFF 256.6312 734.7498 4.0053 343.9576 765.6713 6.4852 SWITCH_ROADS_OFF 291.2253 762.6765 4.0625 354.4869 784.4223 6.6101 SWITCH_ROADS_OFF -149.9865 460.0670 4.9719 -119.7325 530.4155 12.4813 SWITCH_ROADS_OFF -100.9858 1190.3802 16.1736 97.0928 1205.2023 19.9344 SWITCH_ROADS_OFF -124.9028 1209.5811 14.6519 -108.1954 1243.8207 19.8554 SWITCH_ROADS_OFF -113.2273 1246.4767 11.3781 -84.1825 1268.7506 17.5621 flagRoadsSwitchedOff = TRUE flagDisplayedTooFarText = FALSE m_goals++ ENDIF // Failure Conditions // ------------------ // Has truck escaped? IF NOT IS_CAR_DEAD carStolen GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp GET_CAR_COORDINATES carStolen xposTemp2 yposTemp2 zposTemp2 GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance IF fTempDistance > QUARRY_DESTROY_MAX_DISTANCE_APART_m m_failed = TRUE m_fail_reason = QUARRY_FAILED_TOO_FAR_AWAY RETURN ENDIF IF flagDisplayedTooFarText = FALSE IF fTempDistance > QUARRY_DESTROY_TOO_FAR_AWAY_WARNING_m PRINT_NOW QUAR_33 7000 1 flagDisplayedTooFarText = TRUE ENDIF ENDIF IF flagDisplayedTooFarText = TRUE IF fTempDistance < QUARRY_DESTROY_CLEAR_TOO_FAR_AWAY_WARNING_m CLEAR_THIS_PRINT QUAR_33 flagDisplayedTooFarText = FALSE ENDIF ENDIF ENDIF // Check for Time Up IF g_Quarry_timerKM <= 0 m_failed = TRUE m_fail_reason = QUARRY_FAILED_REACHED_SAFETY RETURN ENDIF // Subgoals // -------- // Mission passed when stolen truck destroyed, but make sure the player's truck doesn't also get destroyed IF m_goals = 1 IF flagDestroyed = TRUE timerMissionPass = m_mission_timer + 2000 m_goals++ ENDIF ENDIF // Pass mission when timer runs out IF m_goals = 2 IF timerMissionPass < m_mission_timer m_goals = 99 ENDIF ENDIF // Continuous updates // ------------------ // Blip maintenance IF IS_CHAR_IN_CAR scplayer carDumper IF DOES_BLIP_EXIST blipDumper REMOVE_BLIP blipDumper CLEAR_THIS_PRINT QUAR_36 ENDIF ELSE IF NOT DOES_BLIP_EXIST blipDumper ADD_BLIP_FOR_CAR carDumper blipDumper SET_BLIP_AS_FRIENDLY blipDumper TRUE // Info: Get back in the Dumper PRINT_NOW QUAR_36 5000 1 ENDIF ENDIF // When the car takes a decent bit of damage, change it's health to be almost dead IF NOT IS_CAR_DEAD carStolen GET_CAR_HEALTH carStolen nTempInt IF nTempInt > 300 AND nTempInt <= 800 SET_CAR_HEALTH carStolen 300 ENDIF ENDIF IF NOT IS_CAR_DEAD carStolen // Calculate and update onscreen counter // NOTE: health <= 250 is 0 // health 251 - 300 is 20% of total // health 801 - 1000 is 80% of total GET_CAR_HEALTH carStolen nTempInt IF nTempInt <= 250 g_Quarry_damageKM = 0 ELSE IF nTempInt = 1000 g_Quarry_damageKM = 100 ELSE // ...add up total of valid health range IF nTempInt = 300 g_Quarry_damageKM = 20 ELSE IF nTempInt < 300 // must be between 251 and 299 which is 20% of total bar nTempInt2 = 300 - nTempInt g_Quarry_damageKM = 50 - nTempInt2 g_Quarry_damageKM *= 20 // 20% of total bar g_Quarry_damageKM /= 50 // 50 is the valid range (250 - 300) ELSE // must be between 801 and 999 IF nTempInt < 800 nTempInt = 800 ENDIF nTempInt2 = 1000 - nTempInt g_Quarry_damageKM = 200 - nTempInt2 g_Quarry_damageKM *= 80 // 80% of total bar g_Quarry_damageKM /= 200 // 200 is the valid range (800 - 1000) g_Quarry_damageKM += 20 // add on other 20% ENDIF ENDIF ENDIF ENDIF ENDIF // Make sure the boxes stay attached IF NOT IS_CAR_DEAD carStolen REPEAT QUARRY_DESTROY_MAX_CRATES nLoop IF DOES_OBJECT_EXIST objectRocks[nLoop] IF NOT IS_OBJECT_ATTACHED objectRocks[nLoop] // Re-attach object SWITCH nLoop CASE 0 ATTACH_OBJECT_TO_CAR objectRocks[nLoop] carStolen 0.5 -0.7 0.7 90.0 0.0 0.0 BREAK CASE 1 ATTACH_OBJECT_TO_CAR objectRocks[nLoop] carStolen -0.5 -0.7 0.7 90.0 0.0 0.0 BREAK CASE 2 ATTACH_OBJECT_TO_CAR objectRocks[nLoop] carStolen 0.5 -1.7 0.73 90.0 0.0 0.0 BREAK CASE 3 ATTACH_OBJECT_TO_CAR objectRocks[nLoop] carStolen -0.5 -1.7 0.73 90.0 0.0 0.0 BREAK CASE 4 ATTACH_OBJECT_TO_CAR objectRocks[nLoop] carStolen 0.5 -2.7 0.76 90.0 0.0 0.0 BREAK CASE 5 ATTACH_OBJECT_TO_CAR objectRocks[nLoop] carStolen -0.5 -2.7 0.76 90.0 0.0 0.0 BREAK ENDSWITCH ENDIF ENDIF ENDREPEAT ENDIF // Exit // ---- IF m_goals = 99 GOSUB Quarry_Next_Stage ENDIF RETURN // **************************************** // ASSET ACQUIRED Quarry_Asset_Acquired: // Initialisation // -------------- IF m_goals = 0 // Allow the 'mission passed' to be displayed for a few seconds SET_PLAYER_CONTROL player1 OFF timerCutscene = m_mission_timer + 5000 // Clear the onscreen timer CLEAR_ONSCREEN_TIMER g_Quarry_timerKM m_goals++ ENDIF // Failure Conditions // ------------------ // Subgoals // -------- // Fade out IF m_goals = 1 IF timerCutscene < m_mission_timer DO_FADE 500 FADE_OUT timerCutscene = m_mission_timer + 500 m_goals++ ENDIF ENDIF // Create the protection pickup and prepare for the cutscene IF m_goals = 2 IF timerCutscene < m_mission_timer AND NOT GET_FADING_STATUS CREATE_PROTECTION_PICKUP 818.2578 853.8873 10.8059 g_Quarry_CashPickupValueKM g_Quarry_CashPickupValueKM g_Quarry_CashPickupKM SWITCH_WIDESCREEN ON SET_EVERYONE_IGNORE_PLAYER player1 TRUE SET_ALL_CARS_CAN_BE_DAMAGED FALSE LOAD_SCENE 818.2578 853.8873 10.8059 // SET_FIXED_CAMERA_POSITION 830.2333 852.7350 16.4594 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 829.2551 852.8201 16.2696 JUMP_CUT SET_FIXED_CAMERA_POSITION 849.6491 839.9428 42.7363 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 848.7661 840.1115 42.2983 JUMP_CUT // Leave it faded out for a couple of seconds timerCutscene = m_mission_timer + 2000 m_goals++ ENDIF ENDIF // Leave it faded out for a couple of seconds, then fade in IF m_goals = 3 IF timerCutscene < m_mission_timer // Fade in DO_FADE 500 FADE_IN // Display 'asset acquired' PRINT_BIG ASS_ACQ 5000 6 timerCutscene = m_mission_timer + 5000 m_goals++ ENDIF ENDIF // Display the scene for a short while then change camera view IF m_goals = 4 IF timerCutscene < m_mission_timer // SET_FIXED_CAMERA_POSITION 820.7517 850.7118 11.7398 0.0 0.0 0.0 // POINT_CAMERA_AT_POINT 820.1194 851.4731 11.5961 JUMP_CUT SET_FIXED_CAMERA_POSITION 825.0984 855.4503 13.5770 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 824.1995 855.1732 13.2376 JUMP_CUT // Print potential revenue PRINT_WITH_NUMBER_NOW ASS_LUV g_Quarry_CashPickupValueKM 6000 1 timerCutscene = m_mission_timer + 6000 m_goals++ ENDIF ENDIF // Display the new scene for a short while IF m_goals = 5 IF timerCutscene < m_mission_timer DO_FADE 500 FADE_OUT timerCutscene = m_mission_timer + 500 m_goals++ ENDIF ENDIF // Switch back to normal view and display the rest of the text, then fade in again IF m_goals = 6 IF timerCutscene < m_mission_timer AND NOT GET_FADING_STATUS GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp LOAD_SCENE xposTemp yposTemp zposTemp SWITCH_WIDESCREEN OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT // Leave it faded out for a couple of seconds timerCutscene = m_mission_timer + 2000 m_goals++ ENDIF ENDIF // Leave it faded out for a couple of seconds IF m_goals = 7 IF timerCutscene < m_mission_timer // Quarry completion time PRINT_WITH_2_NUMBERS_NOW QUAR_P7 nTotalMinutes nTotalSeconds 10000 1 // Dumper and Dozer now always available PRINT QUAR_H3 7000 1 DO_FADE 500 FADE_IN timerCutscene = m_mission_timer + 500 m_goals++ ENDIF ENDIF // End cutscene IF m_goals = 8 IF timerCutscene < m_mission_timer AND NOT GET_FADING_STATUS SET_EVERYONE_IGNORE_PLAYER player1 FALSE SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_PLAYER_CONTROL player1 ON m_goals = 99 ENDIF ENDIF // Continuous updates // ------------------ // Exit // ---- IF m_goals = 99 GOSUB Quarry_Next_Stage ENDIF RETURN // ************************************************************************************************************* // MISSION SPECIFIC GOSUBS // ************************************************************************************************************* // **************************************** // Display Entrance Blip Quarry_Display_Entrance_Blip: xposEntrance = 808.4078 yposEntrance = 841.9887 zposEntrance = 8.6694 ADD_BLIP_FOR_COORD xposEntrance yposEntrance zposEntrance blipEntrance flagDisplayEntranceBlip = TRUE RETURN // **************************************** // Display Other Entrance Blip Quarry_Display_Other_Entrance_Blip: xposEntrance = 371.5454 yposEntrance = 978.1724 zposEntrance = 28.5210 ADD_BLIP_FOR_COORD xposEntrance yposEntrance zposEntrance blipOtherEntrance flagDisplayOtherEntranceBlip = TRUE RETURN // **************************************** // Calculate Future Time Quarry_Calculate_Future_Time: GET_TIME_OF_DAY nHours nMinutes // Work out the mission fail timer // ...convert eh add hours and add minutes into msec nTempInt = nAddHours * 60 nTempInt += nAddMinutes nTempInt *= 1000 timerMissionFail = nTempInt + m_mission_timer // Update the minutes nMinutes += nAddMinutes IF nMinutes >= 60 nHours++ nMinutes -= 60 ENDIF // Update the hours nHours += nAddHours WHILE nHours >= 24 nHours -= 24 ENDWHILE // Round up the minutes to be a decent time (ie: on the hour, half hour, or quarter hour) flagTempFlag = FALSE IF nMinutes > 45 // ...round up to the next hour nTempInt = 60 - nMinutes nMinutes = 0 nHours++ IF nHours = 24 nHours = 0 ENDIF nTempInt *= 1000 timerMissionFail += nTempInt flagTempFlag = TRUE ENDIF IF flagTempFlag = FALSE IF nMinutes > 30 AND nMinutes < 45 // ...round up to quarter to the hour nTempInt = 45 - nMinutes nMinutes = 45 nTempInt *= 1000 timerMissionFail += nTempInt flagTempFlag = TRUE ENDIF ENDIF IF flagTempFlag = FALSE IF nMinutes > 15 AND nMinutes < 30 // ...round up to the half hour nTempInt = 30 - nMinutes nMinutes = 30 nTempInt *= 1000 timerMissionFail += nTempInt flagTempFlag = TRUE ENDIF ENDIF IF flagTempFlag = FALSE IF nMinutes > 0 AND nMinutes < 15 // ...round up to quarter past the hour nTempInt = 15 - nMinutes nMinutes = 15 nTempInt *= 1000 timerMissionFail += nTempInt flagTempFlag = TRUE ENDIF ENDIF // Convert the Hours and Minutes into a msec equivalent for display nTempInt = nHours * 60 nTempInt += nMinutes nTempInt *= 1000 g_Quarry_timerKM = nTempInt RETURN // ************************************************************************************************************* // HOUSEKEEPING GOSUBS // ************************************************************************************************************* // **************************************** // DEBUG TOOLS Quarry_Debug_Tools: // Display mission stage variables for debug IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_SPACE display_debug++ IF display_debug > 2 display_debug = 0 ENDIF CLEAR_ALL_VIEW_VARIABLES ENDIF IF display_debug = 1 // system variables Quarry_view_debug[0] = m_stage Quarry_view_debug[1] = m_goals Quarry_view_debug[2] = m_mission_timer Quarry_view_debug[3] = 0 Quarry_view_debug[4] = 0 Quarry_view_debug[5] = 0 Quarry_view_debug[6] = 0 Quarry_view_debug[7] = 0 // First two lines are so that the important data displayed is not hidden by other text VIEW_INTEGER_VARIABLE Quarry_view_debug[0] m_stage VIEW_INTEGER_VARIABLE Quarry_view_debug[1] m_goals VIEW_INTEGER_VARIABLE Quarry_view_debug[2] m_mission_timer ENDIF IF display_debug = 2 Quarry_view_debug[7] = 0 REPEAT QUARRY_LEVELS nLoop Quarry_view_debug[nLoop] = g_Quarry_recordsKM[nLoop] Quarry_view_debug[7] += g_Quarry_recordsKM[nLoop] ENDREPEAT // Quarry records VIEW_INTEGER_VARIABLE Quarry_view_debug[0] rockfall VIEW_INTEGER_VARIABLE Quarry_view_debug[1] SABOTAGE VIEW_INTEGER_VARIABLE Quarry_view_debug[2] DESTROY. VIEW_INTEGER_VARIABLE Quarry_view_debug[3] REMOVAL. VIEW_INTEGER_VARIABLE Quarry_view_debug[4] DELIVERY VIEW_INTEGER_VARIABLE Quarry_view_debug[5] SPILLAGE VIEW_INTEGER_VARIABLE Quarry_view_debug[6] BURIAL.. VIEW_INTEGER_VARIABLE Quarry_view_debug[7] TOTAL... ENDIF // Quit level - no mission pass/fail - cleanup only IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ESC m_quit = 1 ENDIF // Pause level IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_P IF m_pause = 0 m_pause = 1 WRITE_DEBUG LEVEL_PAUSED ELSE m_pause = 0 WRITE_DEBUG LEVEL_UNPAUSED ENDIF ENDIF RETURN // **************************************** // DEBUG SHORTCUTS Quarry_Debug_Shortcuts: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S m_passed = TRUE RETURN ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_M g_nQuarryMissionsPassed++ WRITE_DEBUG_WITH_INT Missions_Passed g_nQuarryMissionsPassed RETURN ENDIF // Jumps // ----- IF NOT IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_J RETURN ENDIF RETURN // **************************************** // FRAME COUNTER (Useful if processor scheduling is needed) Quarry_Frame_Counter: m_frame_num++ IF m_frame_num > 9 m_frame_num = 0 ENDIF RETURN // **************************************** // ADDITIONAL TIMERS Quarry_Additional_Timers: GET_GAME_TIMER m_this_frame_time m_time_diff = m_this_frame_time - m_last_frame_time m_last_frame_time = m_this_frame_time m_mission_timer += m_time_diff RETURN // ================================================================= // GOSUB: Next_Stage (sets flags and timers for next mission stage) // ================================================================= Quarry_Next_Stage: m_stage++ m_goals = 0 TIMERA = 0 TIMERB = 0 RETURN // ************************************************************************************************************* // INITIALISATION GOSUBS // ************************************************************************************************************* Quarry_Initialisation: WHILE NOT IS_PLAYER_PLAYING player1 WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 OFF // PRINT_BIG ( QUARRY ) 3000 4 //Quarry WAIT 1000 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // Initialise global 'records' variables IF done_quarry_progress = FALSE IF g_nQuarryMissionsPassed = 0 // Store the best times for all missions nTempInt = QUARRY_MISSION_ROCKFALL - 1 g_Quarry_recordsKM[nTempInt] = QUARRY_ROCKFALL_MISSION_TIME_sec nTempInt = QUARRY_MISSION_SABOTAGE - 1 g_Quarry_recordsKM[nTempInt] = QUARRY_SABOTAGE_MISSION_TIME_sec nTempInt = QUARRY_MISSION_DESTROY - 1 g_Quarry_recordsKM[nTempInt] = QUARRY_DESTROY_MISSION_TIME_sec nTempInt = QUARRY_MISSION_REMOVAL - 1 g_Quarry_recordsKM[nTempInt] = QUARRY_REMOVAL_MISSION_TIME_sec nTempInt = QUARRY_MISSION_DELIVERY - 1 g_Quarry_recordsKM[nTempInt] = QUARRY_DELIVERY_MISSION_TIME_sec nTempInt = QUARRY_MISSION_SPILLAGE - 1 g_Quarry_recordsKM[nTempInt] = QUARRY_SPILLAGE_TRAIN_TIME_sec nTempInt = QUARRY_MISSION_BURIAL - 1 g_Quarry_recordsKM[nTempInt] = QUARRY_BURIAL_MISSION_TIME_sec ENDIF ENDIF // Position the player CLEAR_AREA quarryX quarryY quarryZ 1000.0 FALSE LOAD_SCENE quarryX quarryY quarryZ SET_CHAR_COORDINATES scplayer quarryX quarryY quarryZ SET_CHAR_HEADING scplayer 90.0 SET_CAMERA_BEHIND_PLAYER WAIT 500 // Initialise missions nTempInt = g_nQuarryMissionsPassed WHILE nTempInt >= QUARRY_HIGHEST_MISSION nTempInt -= QUARRY_HIGHEST_MISSION ENDWHILE nCurrentMission = nTempInt + 1 GOSUB Quarry_Initialise_Mission // Set the 'stop' time to 0 // NOTE: This is only used by the train mission nMissionStopTime = 0 // Switch off the Dumper and Dozer car generators SWITCH_CAR_GENERATOR gen_car1 0 SWITCH_CAR_GENERATOR gen_car2 0 WAIT 1500 // Return the oddjob 'title over fade' status back to default DRAW_ODDJOB_TITLE_BEFORE_FADE TRUE // Fade in SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // If the Quarry missions have been completed then allow each mission to be skipped IF done_quarry_progress = TRUE PRINT_HELP QUAR_H2 // You are competing against your own best time. Tap ~m~~widget_mission_cancel~ to skip this mission. ENDIF SET_PLAYER_CONTROL player1 ON m_fail_reason = QUARRY_FAILED_UNKNOWN TimerA = 0 TimerB = 0 m_goals = 0 RETURN // *********************************** // Initialise Mission Quarry_Initialise_Mission: SWITCH nCurrentMission CASE QUARRY_MISSION_ROCKFALL GOSUB Quarry_Initialise_Mission_Rockfall BREAK CASE QUARRY_MISSION_SABOTAGE GOSUB Quarry_Initialise_Mission_Sabotage BREAK CASE QUARRY_MISSION_REMOVAL GOSUB Quarry_Initialise_Mission_Removal BREAK CASE QUARRY_MISSION_DELIVERY GOSUB Quarry_Initialise_Mission_Delivery BREAK CASE QUARRY_MISSION_SPILLAGE GOSUB Quarry_Initialise_Mission_Spillage BREAK CASE QUARRY_MISSION_BURIAL GOSUB Quarry_Initialise_Mission_Burial BREAK CASE QUARRY_MISSION_DESTROY GOSUB Quarry_Initialise_Mission_Destroy BREAK DEFAULT WRITE_DEBUG Unknown_Quarry_Mission_ID ENDSWITCH RETURN // *********************************** // Initialise Mission Burial Quarry_Initialise_Mission_Burial: // Set the first mission stage m_stage = QUARRY_STAGE_BURIAL_PUSH_BODY // Request and load necessary models REQUEST_MODEL SANCHEZ REQUEST_MODEL DOZER REQUEST_MODEL DUMPER // REQUEST_MODEL DYN_QUARRYROCK02 // TEMP: Dead body object REQUEST_MODEL DEAD_TIED_COP REQUEST_MODEL COPBIKE REQUEST_MODEL CR_AMMOBOX LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED SANCHEZ OR NOT HAS_MODEL_LOADED DOZER OR NOT HAS_MODEL_LOADED DUMPER OR NOT HAS_MODEL_LOADED DEAD_TIED_COP OR NOT HAS_MODEL_LOADED COPBIKE OR NOT HAS_MODEL_LOADED CR_AMMOBOX WAIT 0 ENDWHILE // OR NOT HAS_MODEL_LOADED DYN_QUARRYROCK02 // Position models // ...dirtbike CREATE_CAR SANCHEZ 819.7281 858.3189 11.0469 carDirtbike SET_CAR_HEADING carDirtbike 291.4761 // ...dozer CREATE_CAR DOZER 653.1636 879.9844 -42.5799 carDozer SET_CAR_HEADING carDozer 119.7783 // ...dumper CREATE_CAR DUMPER 717.0151 938.3721 -19.7314 carDumper SET_CAR_HEADING carDumper 38.1129 // ...dumper load helper CREATE_OBJECT CR_AMMOBOX 720.5391 922.5157 -19.8436 objectDumperLoadHelper SET_OBJECT_COLLISION objectDumperLoadHelper FALSE SET_OBJECT_VISIBLE objectDumperLoadHelper FALSE ATTACH_OBJECT_TO_CAR objectDumperLoadHelper carDumper 0.0 -1.7 1.5 0.0 0.0 0.0 // ...cop body CREATE_OBJECT DEAD_TIED_COP 606.9487 933.0876 -38.5322 objectDeadBody SET_OBJECT_DYNAMIC objectDeadBody TRUE // ...cop bike // NOTE: Drop it from a height so it doesn't appear standing up CREATE_CAR COPBIKE 560.3003 844.9364 -13.0258 carCopBike SET_CAR_CAN_BE_DAMAGED carCopBike FALSE // Special conditions SWITCH_EMERGENCY_SERVICES OFF RETURN // *********************************** // Initialise Mission Rockfall Quarry_Initialise_Mission_Rockfall: // Set the first mission stage m_stage = QUARRY_STAGE_ROCKFALL_CLEAR_PATHS // Request and load necessary models REQUEST_MODEL DOZER REQUEST_MODEL DYN_QUARRYROCK03 LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED DOZER OR NOT HAS_MODEL_LOADED DYN_QUARRYROCK03 WAIT 0 ENDWHILE // Position models // ...dozer CREATE_CAR DOZER 816.4832 845.8509 9.4934 carDozer SET_CAR_HEADING carDozer 115.4882 // ...rocks nTempInt = 0 GET_GROUND_Z_FOR_3D_COORD 771.6403 836.2275 10.0 quarryZCheck CREATE_OBJECT DYN_QUARRYROCK03 771.6403 836.2275 quarryZCheck objectRocks[nTempInt] nTempInt++ GET_GROUND_Z_FOR_3D_COORD 751.6732 944.9977 10.0 quarryZCheck CREATE_OBJECT DYN_QUARRYROCK03 751.6732 944.9977 quarryZCheck objectRocks[nTempInt] nTempInt++ GET_GROUND_Z_FOR_3D_COORD 538.9102 985.6403 10.0 quarryZCheck CREATE_OBJECT DYN_QUARRYROCK03 538.9102 985.6403 quarryZCheck objectRocks[nTempInt] nTempInt++ GET_GROUND_Z_FOR_3D_COORD 680.5322 963.4501 10.0 quarryZCheck CREATE_OBJECT DYN_QUARRYROCK03 680.5322 963.4501 quarryZCheck objectRocks[nTempInt] nTempInt++ GET_GROUND_Z_FOR_3D_COORD 516.8391 928.7185 10.0 quarryZCheck CREATE_OBJECT DYN_QUARRYROCK03 516.8391 928.7185 quarryZCheck objectRocks[nTempInt] nTempInt++ GET_GROUND_Z_FOR_3D_COORD 522.6153 828.3048 10.0 quarryZCheck CREATE_OBJECT DYN_QUARRYROCK03 522.6153 828.3048 quarryZCheck objectRocks[nTempInt] nTempInt++ GET_GROUND_Z_FOR_3D_COORD 646.7208 752.2311 10.0 quarryZCheck CREATE_OBJECT DYN_QUARRYROCK03 646.7208 752.2311 quarryZCheck objectRocks[nTempInt] RETURN // *********************************** // Initialise Mission Sabotage Quarry_Initialise_Mission_Sabotage: // Set the first mission stage m_stage = QUARRY_STAGE_SABOTAGE_MOVE_BOMBS // Request and load necessary models REQUEST_MODEL DOZER REQUEST_MODEL KB_BARREL LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED DOZER OR NOT HAS_MODEL_LOADED KB_BARREL WAIT 0 ENDWHILE // Position models // ...dozer CREATE_CAR DOZER 816.4832 845.8509 9.4934 carDozer SET_CAR_HEADING carDozer 115.4882 // ...bombs // NOTE: Make sure their explode times increase so that they explode in sequence nTempInt = 0 CREATE_OBJECT KB_BARREL 817.0658 865.5903 11.0469 objectBombs[nTempInt] // timerBombsExplode[nTempInt] = 1000 * 90 nTempInt++ CREATE_OBJECT KB_BARREL 714.5327 920.0583 -19.6787 objectBombs[nTempInt] // timerBombsExplode[nTempInt] = 1000 * 180 nTempInt++ CREATE_OBJECT KB_BARREL 632.2825 895.8612 -43.9534 objectBombs[nTempInt] // timerBombsExplode[nTempInt] = 1000 * 240 nTempInt++ CREATE_OBJECT KB_BARREL 664.0 847.0 -43.9609 objectBombs[nTempInt] // timerBombsExplode[nTempInt] = 1000 * 300 // Calculate the mission time for each bomb // nTempInt = QUARRY_SABOTAGE_MISSION_TIME_sec * 100 nTempInt2 = QUARRY_MISSION_SABOTAGE - 1 nTempInt = g_Quarry_recordsKM[nTempInt2] * 100 REPEAT QUARRY_SABOTAGE_MAX_BOMBS nLoop SWITCH nLoop CASE 0 // 3/10ths of the total time timerBombsExplode[nLoop] = nTempInt * 3 BREAK CASE 1 // 6/10ths of the total time timerBombsExplode[nLoop] = nTempInt * 6 BREAK CASE 2 // 8/10ths of the total time timerBombsExplode[nLoop] = nTempInt * 8 BREAK CASE 3 // All of the total time timerBombsExplode[nLoop] = g_Quarry_recordsKM[nTempInt2] * 1000 BREAK ENDSWITCH ENDREPEAT // Special conditions SWITCH_EMERGENCY_SERVICES OFF RETURN // *********************************** // Initialise Mission Removal Quarry_Initialise_Mission_Removal: // Set the first mission stage m_stage = QUARRY_STAGE_REMOVAL_REACH_DUMPER // Request and load necessary models REQUEST_MODEL DUMPER REQUEST_MODEL DEAD_TIED_COP REQUEST_MODEL SANCHEZ // Fire Fuel models REQUEST_MODEL CM_BOX REQUEST_MODEL BLACKBAG2 REQUEST_MODEL DYN_WOODPILE REQUEST_MODEL DYN_WOODPILE2 LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED DUMPER OR NOT HAS_MODEL_LOADED DEAD_TIED_COP OR NOT HAS_MODEL_LOADED SANCHEZ WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED CM_BOX OR NOT HAS_MODEL_LOADED BLACKBAG2 OR NOT HAS_MODEL_LOADED DYN_WOODPILE OR NOT HAS_MODEL_LOADED DYN_WOODPILE2 WAIT 0 ENDWHILE // Position models // ...dumper CREATE_CAR DUMPER 355.8632 895.6545 19.3990 carDumper SET_CAR_HEADING carDumper 342.1892 // ...dirtbike CREATE_CAR SANCHEZ 819.7281 858.3189 11.0469 carDirtbike SET_CAR_HEADING carDirtbike 291.4761 // ...dead bodies (rocks) nTempInt = 0 CREATE_OBJECT DEAD_TIED_COP 355.8632 894.6545 24.2254 objectBodies[nTempInt] GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 180.0 fTempFloat fTempFloat -= 90.0 IF fTempFloat < 0.0 fTempFloat += 360.0 ENDIF ATTACH_OBJECT_TO_CAR objectBodies[nTempInt] carDumper 0.5 -0.7 0.7 90.0 fTempFloat fTempFloat nTempInt++ CREATE_OBJECT DEAD_TIED_COP 355.8632 895.6545 24.5629 objectBodies[nTempInt] GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 180.0 fTempFloat fTempFloat -= 90.0 IF fTempFloat < 0.0 fTempFloat += 360.0 ENDIF ATTACH_OBJECT_TO_CAR objectBodies[nTempInt] carDumper -0.5 -1.7 0.73 90.0 fTempFloat fTempFloat nTempInt++ CREATE_OBJECT DEAD_TIED_COP 355.8632 896.6545 24.8877 objectBodies[nTempInt] GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 180.0 fTempFloat fTempFloat -= 90.0 IF fTempFloat < 0.0 fTempFloat += 360.0 ENDIF ATTACH_OBJECT_TO_CAR objectBodies[nTempInt] carDumper 0.5 -2.7 0.76 90.0 fTempFloat fTempFloat // Special Conditions SET_CAR_DENSITY_MULTIPLIER 3.0 // Special conditions SWITCH_EMERGENCY_SERVICES OFF RETURN // *********************************** // Initialise Mission Delivery Quarry_Initialise_Mission_Delivery: // Set the first mission stage m_stage = QUARRY_STAGE_DELIVERY_DELIVER // Request and load necessary models REQUEST_MODEL DUMPER REQUEST_MODEL KB_BARREL LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED DUMPER OR NOT HAS_MODEL_LOADED KB_BARREL WAIT 0 ENDWHILE // Position models // ...dumper CREATE_CAR DUMPER 816.4832 845.8509 9.4934 carDumper SET_CAR_HEADING carDumper 295.4882 // ...bombs nTempInt = 0 CREATE_OBJECT KB_BARREL 815.4841 846.2587 15.0409 objectBombs[nTempInt] ATTACH_OBJECT_TO_CAR objectBombs[nTempInt] carDumper 0.5 -0.7 0.9 90.0 0.0 0.0 SET_OBJECT_PROOFS objectBombs[nTempInt] FALSE FALSE FALSE TRUE FALSE nTempInt++ CREATE_OBJECT KB_BARREL 816.6973 844.8737 15.0460 objectBombs[nTempInt] ATTACH_OBJECT_TO_CAR objectBombs[nTempInt] carDumper -0.5 -0.7 0.9 90.0 0.0 0.0 SET_OBJECT_PROOFS objectBombs[nTempInt] FALSE FALSE FALSE TRUE FALSE nTempInt++ CREATE_OBJECT KB_BARREL 814.2406 845.8572 14.9014 objectBombs[nTempInt] ATTACH_OBJECT_TO_CAR objectBombs[nTempInt] carDumper 0.5 -1.7 0.93 90.0 0.0 0.0 SET_OBJECT_PROOFS objectBombs[nTempInt] FALSE FALSE FALSE TRUE FALSE nTempInt++ CREATE_OBJECT KB_BARREL 815.0480 844.0368 14.8892 objectBombs[nTempInt] ATTACH_OBJECT_TO_CAR objectBombs[nTempInt] carDumper -0.5 -1.7 0.93 90.0 0.0 0.0 SET_OBJECT_PROOFS objectBombs[nTempInt] FALSE FALSE FALSE TRUE FALSE nTempInt++ CREATE_OBJECT KB_BARREL 813.2042 843.0317 14.7114 objectBombs[nTempInt] ATTACH_OBJECT_TO_CAR objectBombs[nTempInt] carDumper 0.5 -2.7 0.96 90.0 0.0 0.0 SET_OBJECT_PROOFS objectBombs[nTempInt] FALSE FALSE FALSE TRUE FALSE nTempInt++ CREATE_OBJECT KB_BARREL 813.2919 845.4581 14.8038 objectBombs[nTempInt] ATTACH_OBJECT_TO_CAR objectBombs[nTempInt] carDumper -0.5 -2.7 0.96 90.0 0.0 0.0 SET_OBJECT_PROOFS objectBombs[nTempInt] FALSE FALSE FALSE TRUE FALSE // ...helpers nTempInt = 0 CREATE_OBJECT CR_AMMOBOX 815.4841 846.2587 15.0409 objectHelpers[nTempInt] SET_OBJECT_COLLISION objectHelpers[nTempInt] FALSE SET_OBJECT_VISIBLE objectHelpers[nTempInt] FALSE ATTACH_OBJECT_TO_CAR objectHelpers[nTempInt] carDumper -1.0 -5.0 0.3 0.0 0.0 0.0 nTempInt++ CREATE_OBJECT CR_AMMOBOX 816.6973 844.8737 15.0460 objectHelpers[nTempInt] SET_OBJECT_COLLISION objectHelpers[nTempInt] FALSE SET_OBJECT_VISIBLE objectHelpers[nTempInt] FALSE ATTACH_OBJECT_TO_CAR objectHelpers[nTempInt] carDumper 0.0 -5.0 0.3 0.0 0.0 0.0 nTempInt++ CREATE_OBJECT CR_AMMOBOX 815.0480 844.0368 14.8892 objectHelpers[nTempInt] SET_OBJECT_COLLISION objectHelpers[nTempInt] FALSE SET_OBJECT_VISIBLE objectHelpers[nTempInt] FALSE ATTACH_OBJECT_TO_CAR objectHelpers[nTempInt] carDumper 1.0 -5.0 0.3 0.0 0.0 0.0 // Special conditions SWITCH_EMERGENCY_SERVICES OFF RETURN // *********************************** // Initialise Mission Spillage Quarry_Initialise_Mission_Spillage: // Set the first mission stage m_stage = QUARRY_STAGE_SPILLAGE_CLEAR_TRACKS // Request and load necessary models REQUEST_MODEL DOZER REQUEST_MODEL KB_BARREL REQUEST_MODEL STREAK REQUEST_MODEL STREAKC LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED DOZER OR NOT HAS_MODEL_LOADED KB_BARREL OR NOT HAS_MODEL_LOADED STREAK OR NOT HAS_MODEL_LOADED STREAKC WAIT 0 ENDWHILE // Position models // ...dozer CREATE_CAR DOZER 816.4832 845.8509 9.4934 carDozer SET_CAR_HEADING carDozer 295.4882 // ...train CREATE_MISSION_TRAIN 11 832.5291 2669.7156 19.8594 FALSE carTrain SET_TRAIN_SPEED carTrain 0.0 SET_TRAIN_CRUISE_SPEED carTrain 0.0 // ...train collision helper CREATE_OBJECT CR_AMMOBOX 816.4832 848.8509 9.4934 objectTrainHelper SET_OBJECT_COLLISION objectTrainHelper FALSE SET_OBJECT_VISIBLE objectTrainHelper FALSE ATTACH_OBJECT_TO_CAR objectTrainHelper carTrain 0.0 9.0 -1.8 0.0 0.0 0.0 // ...bombs // NOTE: Make sure their explode times increase so that they explode in sequence nTempInt = 0 CREATE_OBJECT KB_BARREL 744.1446 1583.6001 7.5408 objectBombs[nTempInt] SET_OBJECT_ROTATION objectBombs[nLoop] 0.0 0.0 0.0 nTempInt++ CREATE_OBJECT KB_BARREL 743.0427 1602.7684 7.1368 objectBombs[nTempInt] SET_OBJECT_ROTATION objectBombs[nLoop] 0.0 78.0 0.0 nTempInt++ CREATE_OBJECT KB_BARREL 743.5758 1616.7494 6.8536 objectBombs[nTempInt] SET_OBJECT_ROTATION objectBombs[nLoop] 0.0 64.0 0.0 nTempInt++ CREATE_OBJECT KB_BARREL 742.6569 1653.4200 6.1580 objectBombs[nTempInt] SET_OBJECT_ROTATION objectBombs[nLoop] 0.0 36.0 0.0 nTempInt++ CREATE_OBJECT KB_BARREL 743.8057 1671.5228 5.8467 objectBombs[nTempInt] SET_OBJECT_ROTATION objectBombs[nLoop] 0.0 14.0 0.0 nTempInt++ CREATE_OBJECT KB_BARREL 742.5768 1700.3049 5.4186 objectBombs[nTempInt] SET_OBJECT_ROTATION objectBombs[nLoop] 0.0 128.0 0.0 nTempInt++ CREATE_OBJECT KB_BARREL 743.4429 1730.1412 5.0731 objectBombs[nTempInt] SET_OBJECT_ROTATION objectBombs[nLoop] 0.0 96.0 0.0 nTempInt++ CREATE_OBJECT KB_BARREL 742.0187 1765.3209 4.6566 objectBombs[nTempInt] SET_OBJECT_ROTATION objectBombs[nLoop] 0.0 65.0 0.0 nTempInt++ CREATE_OBJECT KB_BARREL 742.1760 1812.3752 4.3281 objectBombs[nTempInt] SET_OBJECT_ROTATION objectBombs[nLoop] 0.0 170.0 0.0 nTempInt++ CREATE_OBJECT KB_BARREL 742.7178 1869.9910 4.3281 objectBombs[nTempInt] SET_OBJECT_ROTATION objectBombs[nLoop] 0.0 143.0 0.0 // Special conditions SWITCH_RANDOM_TRAINS OFF RETURN // *********************************** // Initialise Mission Destroy Quarry_Initialise_Mission_Destroy: // Set the first mission stage m_stage = QUARRY_STAGE_DESTROY_CHASE_TRUCK // Request and load necessary models REQUEST_MODEL DUMPER REQUEST_MODEL BMYBE REQUEST_MODEL CR_GUNCRATE LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED DUMPER OR NOT HAS_MODEL_LOADED BMYBE OR NOT HAS_MODEL_LOADED CR_GUNCRATE WAIT 0 ENDWHILE // Position models // ...dumper CREATE_CAR DUMPER 816.4832 845.8509 9.4934 carDumper SET_CAR_HEADING carDumper 295.4882 // ...stolen truck CREATE_CAR DUMPER 812.4955 1144.5670 27.3445 carStolen SET_CAR_HEADING carStolen 116.9096 LOCK_CAR_DOORS carStolen CARLOCK_LOCKED // ...stolen truck driver CREATE_CHAR_INSIDE_CAR carStolen PEDTYPE_CIVMALE BMYBE charDriver // ...Gun Crates nTempInt = 0 CREATE_OBJECT CR_GUNCRATE 815.4841 846.2587 15.0409 objectRocks[nTempInt] ATTACH_OBJECT_TO_CAR objectRocks[nTempInt] carStolen 0.5 -0.7 0.7 90.0 0.0 0.0 nTempInt++ CREATE_OBJECT CR_GUNCRATE 816.6973 844.8737 15.0460 objectRocks[nTempInt] ATTACH_OBJECT_TO_CAR objectRocks[nTempInt] carStolen -0.5 -0.7 0.7 90.0 0.0 0.0 nTempInt++ CREATE_OBJECT CR_GUNCRATE 814.2406 845.8572 14.9014 objectRocks[nTempInt] ATTACH_OBJECT_TO_CAR objectRocks[nTempInt] carStolen 0.5 -1.7 0.73 90.0 0.0 0.0 nTempInt++ CREATE_OBJECT CR_GUNCRATE 815.0480 844.0368 14.8892 objectRocks[nTempInt] ATTACH_OBJECT_TO_CAR objectRocks[nTempInt] carStolen -0.5 -1.7 0.73 90.0 0.0 0.0 nTempInt++ CREATE_OBJECT CR_GUNCRATE 813.2042 843.0317 14.7114 objectRocks[nTempInt] ATTACH_OBJECT_TO_CAR objectRocks[nTempInt] carStolen 0.5 -2.7 0.76 90.0 0.0 0.0 nTempInt++ CREATE_OBJECT CR_GUNCRATE 813.2919 845.4581 14.8038 objectRocks[nTempInt] ATTACH_OBJECT_TO_CAR objectRocks[nTempInt] carStolen -0.5 -2.7 0.76 90.0 0.0 0.0 // Special conditions SWITCH_EMERGENCY_SERVICES OFF RETURN // ************************************************************************************************************* // END OF LEVEL GOSUBS - fail, pass, cleanup // ************************************************************************************************************* // FAIL Quarry_Mission_Failed: PRINT_BIG M_FAIL 5000 1 // Display reason for failure (if there is a reason) CLEAR_SMALL_PRINTS SWITCH m_fail_reason CASE QUARRY_FAILED_MISSED_DEADLINE PRINT_NOW QUAR_F0 5000 1 BREAK CASE QUARRY_FAILED_DOZER_DESTROYED PRINT_NOW QUAR_F1 5000 1 BREAK CASE QUARRY_FAILED_DUMPER_DESTROYED PRINT_NOW QUAR_F2 5000 1 BREAK CASE QUARRY_FAILED_DROPPED_LOAD PRINT_NOW QUAR_F3 5000 1 BREAK CASE QUARRY_FAILED_COPS_ARRIVED PRINT_NOW QUAR_F4 5000 1 BREAK CASE QUARRY_FAILED_DELIVERY_ARRIVED PRINT_NOW QUAR_F5 5000 1 BREAK CASE QUARRY_FAILED_BOMB_EXPLODED PRINT_NOW QUAR_F6 5000 1 BREAK CASE QUARRY_FAILED_TOO_CLOSE_TO_EXPLOSION PRINT_NOW QUAR_F7 5000 1 BREAK CASE QUARRY_FAILED_BODY_DUMPED_IN_WRONG_PLACE PRINT_NOW QUAR_F8 5000 1 BREAK CASE QUARRY_FAILED_TOO_MUCH_DAMAGE PRINT_NOW QUAR_F9 5000 1 BREAK CASE QUARRY_FAILED_EXPLOSIVES_ON_TRACK PRINT_NOW QUAR_Fa 5000 1 BREAK CASE QUARRY_FAILED_TRAIN_DESTROYED PRINT_NOW QUAR_Fb 5000 1 BREAK CASE QUARRY_FAILED_TOO_FAR_AWAY PRINT_NOW QUAR_Fc 5000 1 BREAK CASE QUARRY_FAILED_REACHED_SAFETY PRINT_NOW QUAR_Fd 5000 1 BREAK ENDSWITCH RETURN // PASS Quarry_Mission_Passed: // Work out how long the mission took // NOTE: the time is in milliseconds. Add a second unless the time was very close to the previous second. // NOTE: All levels (except the train) level use the current timer, but the train level uses a specific // stop time which marks when all barrels were moved off the tracks and this time will trigger the // train on the next playthrough. IF nMissionStopTime = 0 nTempInt = m_mission_timer - nMissionStartTime ELSE nTempInt = nMissionStopTime - nMissionStartTime ENDIF nTempInt2 = nTempInt / 1000 nTempInt3 = nTempInt2 * 1000 nTempInt -= nTempInt3 IF nTempInt > 50 // ...increase the number of seconds nTempInt2++ ENDIF flagEqualledBestTime = FALSE flagBeatBestTime = FALSE IF g_Quarry_recordsKM[g_nQuarryMissionsPassed] = nTempInt2 // ...equalled the old record flagEqualledBestTime = TRUE ELSE IF nTempInt2 < g_Quarry_recordsKM[g_nQuarryMissionsPassed] flagBeatBestTime = TRUE ENDIF ENDIF // The train mission is strange in that you can pass it with a higher time than previously because the mission time // starts the train, but you still have a few seconds to clear the path, so ensure this does not update the stats. IF flagBeatBestTime = TRUE g_Quarry_recordsKM[g_nQuarryMissionsPassed] = nTempInt2 ENDIF // If this is second or subsequent playthroughs, convert the seconds to minutes and seconds IF done_quarry_progress = TRUE AND flagBeatBestTime = TRUE nBestMinutes = nTempInt2 / 60 nTempInt = nBestMinutes * 60 nBestSeconds = nTempInt2 - nTempInt ENDIF // If all quarry missions are complete, work out the new total mission time nTempInt = 0 IF done_quarry_progress = TRUE REPEAT QUARRY_HIGHEST_MISSION nLoop nTempInt += g_Quarry_recordsKM[nLoop] ENDREPEAT ENDIF SET_INT_STAT QUARRY_COMPLETION_TIME nTempInt // If this is second or subsequent playthroughs, convert the seconds to minutes and seconds IF done_quarry_progress = TRUE AND flagBeatBestTime = TRUE nTotalMinutes = nTempInt / 60 nTempInt2 = nTotalMinutes * 60 nTotalSeconds = nTempInt - nTempInt2 ENDIF // Increase number of missions passed g_nQuarryMissionsPassed++ IF done_quarry_progress = FALSE // ...this is the player's first playthrough // Work out the score // NOTE: nTempInt used to hold the score SWITCH g_nQuarryMissionsPassed CASE 1 nTempInt = 500 BREAK CASE 2 nTempInt = 1000 BREAK CASE 3 nTempInt = 2000 BREAK CASE 4 nTempInt = 3000 BREAK CASE 5 nTempInt = 5000 BREAK CASE 6 nTempInt = 7500 BREAK CASE 7 nTempInt = 10000 BREAK ENDSWITCH IF g_nQuarryMissionsPassed = 7 PRINT_WITH_NUMBER_BIG M_PASS nTempInt 3000 1 ELSE PRINT_WITH_NUMBER_BIG M_PASS nTempInt 5000 1 ENDIF ADD_SCORE player1 nTempInt // INCREMENT_INT_STAT QUARRY_MONEY_MADE nTempInt (Don't bother with this) ELSE // ...give no more cash on future playthroughs PRINT_WITH_NUMBER_BIG M_PASSD 0 5000 1 IF flagEqualledBestTime = TRUE PRINT_NOW QUAR_P5 5000 1 ELSE IF flagBeatBestTime = TRUE PRINT_WITH_4_NUMBERS_NOW QUAR_P6 nBestMinutes nBestSeconds nTotalMinutes nTotalSeconds 10000 1 ENDIF ENDIF ENDIF // Clear wanted level only on pass CLEAR_WANTED_LEVEL player1 // Display number of missions passed IF done_quarry_progress = FALSE // ...this is the first playthrough of the Quarry missions IF g_nQuarryMissionsPassed = 1 // ... 1 mission passed so don't display plurals PRINT_NOW QUAR_P1 5000 1 ELSE IF g_nQuarryMissionsPassed = QUARRY_HIGHEST_MISSION REGISTER_ODDJOB_MISSION_PASSED PLAYER_MADE_PROGRESS 1 PLAY_MISSION_PASSED_TUNE 2 done_quarry_progress = TRUE g_nQuarryMissionsPassed = 0 // ...all progressive missions passed PRINT_BIG QUAR_P2 4000 4 // All quarry missions are complete, so work out the overall mission time nTempInt = 0 IF done_quarry_progress = TRUE REPEAT QUARRY_HIGHEST_MISSION nLoop nTempInt += g_Quarry_recordsKM[nLoop] ENDREPEAT ENDIF SET_INT_STAT QUARRY_COMPLETION_TIME nTempInt // Convert the seconds to minutes and seconds nTotalMinutes = nTempInt / 60 nTempInt2 = nTotalMinutes * 60 nTotalSeconds = nTempInt - nTempInt2 // Quarry completion time /// PRINT_WITH_2_NUMBERS_NOW QUAR_P7 nTotalMinutes nTotalSeconds 10000 1 // Dumper and Dozer now always available /// PRINT QUAR_H3 7000 1 flagShowAssetAcquired = TRUE ELSE // ...other numbers of missions PRINT_WITH_NUMBER_NOW QUAR_P4 g_nQuarryMissionsPassed 5000 1 ENDIF ENDIF ELSE // ...the player is replaying the quarry missions IF g_nQuarryMissionsPassed = QUARRY_HIGHEST_MISSION // ...restart the missions again g_nQuarryMissionsPassed = 0 ENDIF ENDIF // If the Quarry is complete, switch on Dumper and Dozer car generators IF done_quarry_progress = TRUE SWITCH_CAR_GENERATOR gen_car1 101 SWITCH_CAR_GENERATOR gen_car2 101 ENDIF RETURN // CLEANUP Quarry_Mission_Cleanup: DISPLAY_RADAR 3 // PATHING ON // Get rid of the Player's mission specific weapons // ------------------------------------------------ // Entity Task Removal, etc. // ------------------------- // Entity Clearup // -------------- MARK_CAR_AS_NO_LONGER_NEEDED carDirtbike MARK_CAR_AS_NO_LONGER_NEEDED carDozer MARK_CAR_AS_NO_LONGER_NEEDED carDumper MARK_CAR_AS_NO_LONGER_NEEDED carCopBike MARK_CAR_AS_NO_LONGER_NEEDED carStolen MARK_CHAR_AS_NO_LONGER_NEEDED charDriver MARK_OBJECT_AS_NO_LONGER_NEEDED objectDeadBody MARK_OBJECT_AS_NO_LONGER_NEEDED objectDumperLoadHelper MARK_OBJECT_AS_NO_LONGER_NEEDED objectTrainHelper MARK_MISSION_TRAIN_AS_NO_LONGER_NEEDED carTrain REPEAT QUARRY_MAX_ROCKS nLoop MARK_OBJECT_AS_NO_LONGER_NEEDED objectRocks[nLoop] ENDREPEAT REPEAT QUARRY_MAX_BOMBS nLoop MARK_OBJECT_AS_NO_LONGER_NEEDED objectBombs[nLoop] ENDREPEAT REPEAT QUARRY_MAX_BODIES nLoop MARK_OBJECT_AS_NO_LONGER_NEEDED objectBodies[nLoop] ENDREPEAT REPEAT QUARRY_MAX_FIRE_FUEL nLoop MARK_OBJECT_AS_NO_LONGER_NEEDED objectFireFuel[nLoop] ENDREPEAT REPEAT QUARRY_MAX_HELPERS nLoop MARK_OBJECT_AS_NO_LONGER_NEEDED objectHelpers[nLoop] ENDREPEAT // Checkpoint clearup // ------------------ REPEAT QUARRY_ROCKFALL_MAX_ROCKS nLoop DELETE_CHECKPOINT checkRockfalls[nLoop] ENDREPEAT DELETE_CHECKPOINT checkDestination DISPLAY_RADAR 3 // PATHING ON // Blip Clearup // ------------ REMOVE_BLIP blipDozer REMOVE_BLIP blipDumper REMOVE_BLIP blipDestination REMOVE_BLIP blipCopBike REMOVE_BLIP blipDeadBody REMOVE_BLIP blipEntrance REMOVE_BLIP blipOtherEntrance REMOVE_BLIP blipBomb REMOVE_BLIP blipTrain REMOVE_BLIP blipStolen REMOVE_BLIP blipCrane REPEAT QUARRY_MAX_ROCKS nLoop REMOVE_BLIP blipRocks[nLoop] ENDREPEAT REPEAT QUARRY_MAX_BOMBS nLoop REMOVE_BLIP blipBombs[nLoop] ENDREPEAT // Counters and Timers Clearup // --------------------------- CLEAR_ONSCREEN_TIMER g_Quarry_timerKM CLEAR_ONSCREEN_COUNTER g_Quarry_damageKM // Fires Clearup // ------------- CLEAR_ALL_SCRIPT_FIRE_FLAGS // Help Clearup // ------------ IF flagDumperHelpDisplayed = TRUE CLEAR_HELP ENDIF // Animation Clearup // ----------------- // Models Clearup // -------------- MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ MARK_MODEL_AS_NO_LONGER_NEEDED DOZER MARK_MODEL_AS_NO_LONGER_NEEDED DUMPER MARK_MODEL_AS_NO_LONGER_NEEDED DYN_QUARRYROCK02 MARK_MODEL_AS_NO_LONGER_NEEDED DEAD_TIED_COP MARK_MODEL_AS_NO_LONGER_NEEDED DYN_QUARRYROCK03 MARK_MODEL_AS_NO_LONGER_NEEDED COPBIKE MARK_MODEL_AS_NO_LONGER_NEEDED CR_AMMOBOX MARK_MODEL_AS_NO_LONGER_NEEDED KB_BARREL MARK_MODEL_AS_NO_LONGER_NEEDED STREAK MARK_MODEL_AS_NO_LONGER_NEEDED STREAKC MARK_MODEL_AS_NO_LONGER_NEEDED BMYBE MARK_MODEL_AS_NO_LONGER_NEEDED CR_GUNCRATE MARK_MODEL_AS_NO_LONGER_NEEDED CM_BOX MARK_MODEL_AS_NO_LONGER_NEEDED BLACKBAG2 MARK_MODEL_AS_NO_LONGER_NEEDED DYN_WOODPILE MARK_MODEL_AS_NO_LONGER_NEEDED DYN_WOODPILE2 // === RESTORE ENVIRONMENT SETTINGS === // ------------------------------------ SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_WANTED_MULTIPLIER 1.0 SWITCH_EMERGENCY_SERVICES ON SWITCH_RANDOM_TRAINS ON // Restore switched off road // ------------------------- IF flagRoadsSwitchedOff = TRUE // Reactivate roads SWITCH_ROADS_BACK_TO_ORIGINAL 256.6312 734.7498 4.0053 343.9576 765.6713 6.4852 SWITCH_ROADS_BACK_TO_ORIGINAL 291.2253 762.6765 4.0625 354.4869 784.4223 6.6101 SWITCH_ROADS_BACK_TO_ORIGINAL -149.9865 460.0670 4.9719 -119.7325 530.4155 12.4813 SWITCH_ROADS_BACK_TO_ORIGINAL -100.9858 1190.3802 16.1736 97.0928 1205.2023 19.9344 SWITCH_ROADS_BACK_TO_ORIGINAL -124.9028 1209.5811 14.6519 -108.1954 1243.8207 19.8554 SWITCH_ROADS_BACK_TO_ORIGINAL -113.2273 1246.4767 11.3781 -84.1825 1268.7506 17.5621 ENDIF // Make sure the mobile phone doesn't ring immediately after a mission // ------------------------------------------------------------------- GET_GAME_TIMER timer_mobile_start // Return the oddjob 'title over fade' status back to default DRAW_ODDJOB_TITLE_BEFORE_FADE TRUE // Housekeeping // ------------ flag_player_on_mission = FALSE flag_player_on_oddjob = FALSE MISSION_HAS_FINISHED RETURN } MISSION_START // *********************************************************************** // ***************************** boat PC scripts ************************ // * New fix added to clear area for video playback 20.12.04 // *********************************************************************** SCRIPT_NAME boat CHECKPOINT_SAVE_ODDJOB 2 // Mission start stuff GOSUB mission_start_boat IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_boat_failed ENDIF GOSUB mission_cleanup_boat MISSION_END { IF flag_player_on_mission = 0 // fool compiler double check IF boat_compiler_fool = 13 CREATE_CAR cheetah 0.0 0.0 0.0 instructor_boat CREATE_CAR cheetah 5.0 5.0 10.0 instructor_heli CREATE_CHAR PEDTYPE_MISSION1 omoboat 20.0 20.0 20.0 instructor_helipilot CREATE_CHAR PEDTYPE_MISSION1 omoboat 30.0 30.0 20.0 instructor_captain CREATE_CHAR PEDTYPE_MISSION1 omoboat 30.0 30.0 20.0 boat_blocker1driver CREATE_CHAR PEDTYPE_MISSION1 omoboat 30.0 30.0 20.0 boat_blocker2driver CREATE_CAR cheetah 0.0 0.0 0.0 boat_blocker1 CREATE_CAR cheetah 0.0 0.0 0.0 boat_blocker2 CREATE_CHAR PEDTYPE_MISSION1 omoboat 30.0 30.0 20.0 boat_blocker3driver CREATE_CAR cheetah 0.0 0.0 0.0 boat_blocker3 buoy_counter = 0 WHILE buoy_counter < 13 //bouys - sic. It's written incorrectly in object.dat CREATE_OBJECT_NO_OFFSET bouy 0.0 0.0 100.0 boat_buoys[buoy_counter] CREATE_OBJECT_NO_OFFSET waterjump1 0.0 0.0 150.0 boat_ramps[buoy_counter] buoy_counter ++ ENDWHILE ENDIF ENDIF //Globals? VAR_INT boat_mission_selection VAR_INT boat_introcutscene // global, as we only want player to see it once VAR_INT boatpb_flag //boat_pause_flag VAR_INT boat_control_flag //boat_direction_flag VAR_INT boat_fade_flag boat_alpha VAR_INT boat_which_medal_displayed boat_which_score_displayed LVAR_INT sfx_video // tape noise LVAR_INT sfx_gull // gull screech // Local Variables for mission LVAR_INT boat_compiler_fool //peds and vehicles plus related LVAR_INT instructor_boat LVAR_INT boat_captain LVAR_INT instructor_captain LVAR_INT boat_blocker1 LVAR_INT boat_blocker2 LVAR_INT boat_blocker1driver LVAR_INT boat_blocker2driver LVAR_INT boat_blocker3 LVAR_INT boat_blocker3driver LVAR_INT instructor_heli LVAR_INT instructor_helipilot LVAR_INT total_boat_damage LVAR_FLOAT boat_speed //blips LVAR_INT boat_tvb LVAR_INT buoyr_b LVAR_INT buoyl_b LVAR_INT buoyls_b LVAR_INT buoyrs_b //flags and arrays LVAR_INT boat_captswap LVAR_INT boat_buoys[50] LVAR_INT boat_ramps[50] LVAR_INT buoy_counter LVAR_INT ramp_counter LVAR_INT boat_accelerate LVAR_INT boat_simplecircuit LVAR_INT boat_slalom LVAR_INT boat_skijump LVAR_INT boat_hover LVAR_INT boat_started LVAR_INT instructor_boat_dead_flag LVAR_INT finished_watching_boat_scores LVAR_INT boat_button_pressed LVAR_INT boat_print_top_scores_flag LVAR_INT overall_boat_score LVAR_INT boat_old_score LVAR_INT b1_r b1_g b1_b b1_alpha2 //coords LVAR_FLOAT boat_playerstartx boat_playerstarty boat_playerstartz boat_playerstarth LVAR_FLOAT boat_captainx boat_captainy boat_captainz boat_captainh LVAR_FLOAT boat_tvx boat_tvy boat_tvz LVAR_FLOAT instructor_boatx instructor_boaty instructor_boatz LVAR_FLOAT boat_camera_positionx LVAR_FLOAT boat_camera_positiony LVAR_FLOAT boat_camera_positionz LVAR_INT boat_camera_position_int LVAR_FLOAT boat_targetX LVAR_FLOAT boat_targetY LVAR_FLOAT boat_targetZ LVAR_FLOAT buoyr_x LVAR_FLOAT buoyr_y LVAR_FLOAT buoyr_Z LVAR_FLOAT buoyl_x LVAR_FLOAT buoyl_y LVAR_FLOAT buoyl_z LVAR_FLOAT boat_rampX LVAR_FLOAT boat_rampY LVAR_FLOAT boat_rampZ LVAR_FLOAT clearX clearY clearZ //timers VAR_INT boat_timer LVAR_INT shown_help LVAR_INT completion_time //medals LVAR_INT boat_bronze LVAR_INT boat_silver LVAR_INT boat_gold LVAR_INT boat_accelerate_qualify LVAR_INT boat_accelerate_bronze LVAR_INT boat_accelerate_silver LVAR_INT boat_accelerate_gold LVAR_INT boat_simplecircuit_qualify LVAR_INT boat_simplecircuit_bronze LVAR_INT boat_simplecircuit_silver LVAR_INT boat_simplecircuit_gold LVAR_INT boat_slalom_qualify LVAR_INT boat_slalom_bronze LVAR_INT boat_slalom_silver LVAR_INT boat_slalom_gold LVAR_INT boat_skijump_qualify LVAR_INT boat_skijump_bronze LVAR_INT boat_skijump_silver LVAR_INT boat_skijump_gold LVAR_INT boat_hover_qualify LVAR_INT boat_hover_bronze LVAR_INT boat_hover_silver LVAR_INT boat_hover_gold LVAR_INT boat_best_score_medal LVAR_INT time_penalty //Score Output calculation bits and bobs. LVAR_FLOAT dboat_accelerate_qualify LVAR_FLOAT dboat_simplecircuit_qualify LVAR_FLOAT dboat_slalom_qualify LVAR_FLOAT dboat_skijump_qualify LVAR_FLOAT dboat_hover_qualify LVAR_FLOAT dboat_which_score_displayed LVAR_FLOAT dtime_penalty LVAR_FLOAT dcompletion_time LVAR_FLOAT doverall_boat_score LVAR_FLOAT boat_jumpdist1 LVAR_FLOAT boat_jumpdist2 LVAR_FLOAT boat_jumpdist3 LVAR_FLOAT boat_bestjumpdist LVAR_INT temp_int LVAR_INT boat_help1 // Sound LVAR_INT buoy_sound //Damage Checking LVAR_INT boat_damagetaken //debug and new fixes LVAR_INT boat_schoolpassed LVAR_INT boat_language LVAR_FLOAT fTitleX LVAR_FLOAT fTitleY LVAR_FLOAT fStringX LVAR_FLOAT fStringY // ****************************************Mission Start************************************ mission_start_boat: flag_player_on_mission = 1 IF boat_passed_once = 0 REGISTER_MISSION_GIVEN ENDIF LOAD_MISSION_TEXT BOAT SHOW_UPDATE_STATS FALSE DISPLAY_CAR_NAMES FALSE DISPLAY_ZONE_NAMES FALSE IF IS_PLAYER_PLAYING player1 SET_PLAYER_CAN_DO_DRIVE_BY player1 FALSE ENDIF WAIT 0 // *************************************Set Flags/variables********************************* buoy_sound = 0 //SOUND_PART_MISSION_COMPLETE boat_schoolpassed = 0 sfx_video = 0 sfx_gull = 0 boat_help1 = 0 boat_compiler_fool = 0 boat_mission_selection = 1 boat_tvx = -2215.5803 boat_tvy = 2391.7 boat_tvz = 3.965 boat_playerstartx = -2185.3347 boat_playerstarty = 2410.4092 boat_playerstartz = 3.9752 boat_playerstarth = 122.2585 boat_captainx = -2216.3269 boat_captainy = 2393.209 boat_captainz = 3.9 boat_captainh = 238.0 boat_captswap = 0 //Various tests boat_accelerate = 0 boat_simplecircuit = 0 boat_slalom = 0 boat_skijump = 0 boat_hover = 0 boat_which_medal_displayed = 0 boat_which_score_displayed = 0 boat_old_score = 0 boat_best_score_medal = 0 //Test coords boat_targetX = 0.0 boat_targetY = 0.0 boat_targetZ = 0.0 //Test parameters //boat_accelerate_best_score = 60000 boat_accelerate_qualify = 12000 boat_accelerate_bronze = 12000 boat_accelerate_silver = 10500 boat_accelerate_gold = 9700 //boat_simplecircuit_best_score = 80000 boat_simplecircuit_qualify = 40000 boat_simplecircuit_bronze = 40000 boat_simplecircuit_silver = 37000 boat_simplecircuit_gold = 33000 //boat_slalom_best_score = 180000 boat_slalom_qualify = 120000 boat_slalom_bronze = 120000 boat_slalom_silver = 85000 boat_slalom_gold = 80000 //boat_skijump_best_score = 10 boat_skijump_qualify = 55//55 boat_skijump_bronze = 55//55 boat_skijump_silver = 63 boat_skijump_gold = 67 //boat_hover_best_score = 200000 boat_hover_qualify = 180000 boat_hover_bronze = 180000 boat_hover_silver = 150000 boat_hover_gold = 130000 fTitleX = 50.0 fTitleY = 60.0 fStringX = 50.0 fStringY = 100.0 SET_FADING_COLOUR 0 0 0 WAIT 0 //------------------REQUEST_MODELS ------------------------------ REQUEST_MODEL omoboat REQUEST_MODEL dinghy REQUEST_MODEL polmav REQUEST_MODEL coastg REQUEST_MODEL marquis REQUEST_MODEL tropic REQUEST_MODEL vortex LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED omoboat OR NOT HAS_MODEL_LOADED dinghy OR NOT HAS_MODEL_LOADED polmav OR NOT HAS_MODEL_LOADED coastg WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED marquis OR NOT HAS_MODEL_LOADED tropic OR NOT HAS_MODEL_LOADED vortex WAIT 0 ENDWHILE LOAD_TEXTURE_DICTIONARY LD_drv LOAD_SPRITE 1 brboat LOAD_SPRITE 2 silboat LOAD_SPRITE 3 goboat LOAD_SPRITE 4 ribb LOAD_SPRITE 5 tvcorn LOAD_SPRITE 6 naward LOAD_SPRITE 7 ribbw LOAD_SPRITE 8 blkdot LOAD_SPRITE 9 tvbase // debug settings SET_CHAR_COORDINATES scplayer boat_playerstartx boat_playerstarty boat_playerstartz SET_CHAR_HEADING scplayer boat_playerstarth SET_CHAR_DROWNS_IN_WATER scplayer FALSE CREATE_CHAR PEDTYPE_MISSION1 omoboat boat_captainx boat_captainy boat_captainz boat_captain SET_CHAR_HEADING boat_captain boat_captainh SET_CHAR_NEVER_TARGETTED boat_captain TRUE // Intro cutscene. Need only display once. IF boat_introcutscene = 0 boat_introcutscene = 50 ENDIF // boat_introcutscene = 0 condition check //player has watched cutscene, now waiting on him to view tests. boat_waiting_to_view_tests: WAIT 0 IF boat_introcutscene = 50 GOTO boat_noticeboard_setup IF IS_CHAR_DEAD boat_captain CLEAR_HELP GOTO mission_boat_failed ENDIF ENDIF GOTO boat_waiting_to_view_tests ///////////////////////////////NOTICEBOARD/////////////////////////////////////// boat_noticeboard_setup: //clearing old shit away DISPLAY_HUD FALSE DISPLAY_RADAR FALSE SET_PLAYER_CONTROL player1 OFF CLEAR_HELP CLEAR_PRINTS SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 //preparing for noticeboard GOSUB boat_setting_up_variables boatpb_flag = 0 boat_control_flag = 0 USE_TEXT_COMMANDS TRUE boat_alpha = 255 boat_fade_flag = 2 IF boat_which_missions_are_open_flag < 6 boat_mission_selection = boat_which_missions_are_open_flag ENDIF GOSUB boat_drawing_tv_screen DISPLAY_HUD FALSE DISPLAY_RADAR FALSE SET_AREA_VISIBLE 0 DO_FADE 1000 FADE_IN boat_mission_selection_loop: WAIT 0 //nColor = WHITE:0 || BLUE:1 || GREEN:2 //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_TITLE_BACKGROUND 0 0 0 0 0 0.0 boat_72 GOSUB boat_drawing_tv_screen //Audio// IF sfx_video = 0 LOAD_MISSION_AUDIO 3 SOUND_VIDEOTAPE_NOISE sfx_video = 1 ENDIF IF sfx_video = 1 IF HAS_MISSION_AUDIO_LOADED 3 sfx_video = 2 ENDIF ENDIF IF sfx_video = 2 // write_debug aud PLAY_MISSION_AUDIO 3 sfx_video = 3 ENDIF ////////////////////////// FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_COUNTRYSIDE SET_TIME_OF_DAY 12 50 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_DISABLE_HELI_AUDIO //CHOOSING WHICH MISSION// IF boat_control_flag = 0 //choosing which mission //IF IS_BUTTON_PRESSED PAD1 DPADLEFT GET_POSITION_OF_ANALOGUE_STICKS PAD1 LStickX LStickY RStickX RStickY IF LStickX < -100 OR IS_BUTTON_PRESSED PAD1 DPADLEFT OR IS_WIDGET_RELEASED WIDGET_SCHOOL_LEFT //boat_mission_selection = boat_mission_selection - 1 /* IF boat_mission_selection = 3 boat_mission_selection = 2 ENDIF IF boat_mission_selection = 6 boat_mission_selection = 5 ENDIF IF boat_mission_selection = 8 boat_mission_selection = 7 ENDIF IF boat_mission_selection = 12 boat_mission_selection = 11 ENDIF */ IF boat_which_missions_are_open_flag > 1 boat_mission_selection = boat_mission_selection - 1 IF boatpb_flag < 4 boatpb_flag = 3 //overriding playback ENDIF ENDIF ENDIF IF LStickX > 100 OR IS_BUTTON_PRESSED PAD1 DPADRIGHT OR IS_WIDGET_RELEASED WIDGET_SCHOOL_RIGHT // boat_mission_selection = boat_mission_selection + 1 /*IF boat_mission_selection = 3 boat_mission_selection = 4 ENDIF IF boat_mission_selection = 6 boat_mission_selection = 7 ENDIF IF boat_mission_selection = 8 boat_mission_selection = 9 ENDIF IF boat_mission_selection = 12 boat_mission_selection = 13 ENDIF */ IF boat_which_missions_are_open_flag > 1 boat_mission_selection = boat_mission_selection + 1 IF boatpb_flag < 4 boatpb_flag = 3 //overriding playback ENDIF ENDIF ENDIF IF boat_mission_selection < 1 boat_mission_selection = boat_which_missions_are_open_flag ENDIF IF boat_mission_selection > boat_which_missions_are_open_flag boat_mission_selection = 1 ENDIF IF boat_which_missions_are_open_flag > 1 WHILE LStickX < -100 WAIT 0 GOSUB boat_drawing_tv_screen GET_POSITION_OF_ANALOGUE_STICKS PAD1 LStickX LStickY RStickX RStickY ENDWHILE WHILE LStickX > 100 WAIT 0 GOSUB boat_drawing_tv_screen GET_POSITION_OF_ANALOGUE_STICKS PAD1 LStickX LStickY RStickX RStickY ENDWHILE WHILE IS_BUTTON_PRESSED PAD1 DPADLEFT OR IS_WIDGET_RELEASED WIDGET_SCHOOL_LEFT IS_WIDGET_RELEASED WIDGET_SCHOOL_RIGHT WAIT 0 GOSUB boat_drawing_tv_screen ENDWHILE WHILE IS_BUTTON_PRESSED PAD1 DPADRIGHT OR IS_WIDGET_RELEASED WIDGET_SCHOOL_RIGHT IS_WIDGET_RELEASED WIDGET_SCHOOL_LEFT WAIT 0 GOSUB boat_drawing_tv_screen ENDWHILE ENDIF //triggering mission IF IS_BUTTON_PRESSED PAD1 CROSS OR IS_WIDGET_RELEASED WIDGET_SCHOOL_START /* IF boat_mission_selection = 4 OR boat_mission_selection = 7 OR boat_mission_selection = 9 OR boat_mission_selection = 13 boat_control_flag = 1 ELSE */ IF boatpb_flag < 4 boatpb_flag = 3 ENDIF ////WRITE_DEBUG xpressed CLEAR_MISSION_AUDIO 3 sfx_video = 0 GOTO boat_start_mission ENDIF //opening all the missions IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_q boat_which_missions_are_open_flag = 5 ENDIF //quitting the boat school IF IS_BUTTON_PRESSED PAD1 TRIANGLE OR IS_WIDGET_RELEASED WIDGET_SCHOOL_EXIT GOTO mission_boat_failed ENDIF ENDIF GOSUB boat_watching_demo GOTO boat_mission_selection_loop boat_start_mission: DO_FADE 150 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 GOSUB boat_drawing_tv_screen ENDWHILE IF NOT IS_CAR_DEAD instructor_boat STOP_PLAYBACK_RECORDED_CAR instructor_boat ENDIF RESTORE_CAMERA_JUMPCUT DELETE_CAR instructor_boat DELETE_CAR instructor_heli DELETE_CHAR instructor_helipilot DELETE_CHAR instructor_captain GOSUB boat_deletingbuoys boatpb_flag = 5 ///making sure playback flag doesn't fuck up missions DISPLAY_HUD TRUE DISPLAY_RADAR TRUE /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////TEST1 The accelerate - Head in a straight line, accelerate another boat then return//////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF boat_mission_selection = 1 boat_refresh_accelerate: GOSUB boat_startsetup boat_setup_accelerate: SET_PLAYER_CONTROL player1 ON ////WRITE_DEBUG playing //boat_perfect_heading = 180.0 //boat_timer = 20000 GOSUB boat_setting_up_variables //CREATE_CAR dinghy -2323.6272 2105.2903 0.0 instructor_boat //SET_CAR_HEADING instructor_boat 90.0 CREATE_CAR POLMAV -3303.6272 2105.2903 200.0 instructor_heli DELETE_CHAR instructor_helipilot CREATE_CHAR_INSIDE_CAR instructor_heli PEDTYPE_MISSION1 omoboat instructor_helipilot boat_help1 = 0 CLEAR_CHAR_TASKS instructor_helipilot SET_HELI_BLADES_FULL_SPEED instructor_heli SET_CAR_CRUISE_SPEED instructor_heli 250.0 HELI_GOTO_COORDS instructor_heli -2303.6272 2105.2903 200.0 200.0 200.0 //DELETE_CHAR instructor_captain CREATE_CAR coastg -2323.6272 2105.2903 0.0 instructor_boat CHANGE_CAR_COLOUR instructor_boat 1 114 SET_CAR_HEADING instructor_boat 90.0 CREATE_CHAR_INSIDE_CAR instructor_boat PEDTYPE_MISSION1 omoboat instructor_captain GOSUB boat_createbuoys IF boatpb_flag = 0 DO_FADE 500 FADE_IN ATTACH_CAMERA_TO_VEHICLE_LOOK_AT_VEHICLE instructor_heli 10.0 10.0 0.0 instructor_boat 0.0 JUMP_CUT //SET_FIXED_CAMERA_POSITION -2310.6272 2105.2903 20.8322 0.0 0.0 0.0 //POINT_CAMERA_AT_CAR instructor_boat FIXED JUMP_CUT RETURN ENDIF //CLEAR_PRINTS //PRINT_NOW ( BOAT_1 ) 5000 4 // Use this boat to accelerate the other boat then bring it back here. GOSUB boat_stopsetup //RESTORE_CAMERA_JUMPCUT //starting challenge, setting up targets etc. SET_PLAYER_CONTROL player1 ON // new ADD_BLIP_FOR_OBJECT boat_buoys[0] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[1] buoyr_b ADD_BLIP_FOR_OBJECT boat_buoys[6] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[7] buoyrs_b CHANGE_BLIP_COLOUR buoyl_b YELLOW CHANGE_BLIP_COLOUR buoyr_b YELLOW CHANGE_BLIP_COLOUR buoyls_b YELLOW CHANGE_BLIP_COLOUR buoyrs_b YELLOW IF NOT IS_CAR_DEAD instructor_boat GET_CAR_COORDINATES instructor_boat instructor_boatx instructor_boaty instructor_boatz boat_targetX = instructor_boatX - 195.0 boat_targetY = instructor_boatY boat_targetZ = instructor_boatZ //WRITE_DEBUG_WITH_FLOAT boatX boat_targetX ENDIF /// boat_accelerate_loop: WAIT 0 IF NOT IS_CAR_DEAD instructor_heli IF NOT IS_CAR_DEAD instructor_boat //GET_CAR_COORDINATES APB_heli1 APB_heli1x APB_heli1y APB_heli1z //Helicopter GET_CAR_COORDINATES instructor_boat instructor_boatx instructor_boaty instructor_boatz //instructor_boat //vc2_xDiff = vc2_tpCx - APB_heli1x //vc2_yDiff = APB_heli1y - vc2_tpCy //GET_HEADING_FROM_VECTOR_2D vc2_yDiff vc2_xDiff APB_heli1_orientation //SET_HELI_ORIENTATION APB_heli1 APB_heli1_orientation instructor_boatx = instructor_boatx - 150.0 instructor_boaty = instructor_boaty - 150.0 HELI_GOTO_COORDS instructor_heli instructor_boatx instructor_boaty instructor_boatz 120.0 120.0 ENDIF ENDIF //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_boat_dead_flag = 2 // REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_AWARD_TRACK_STOP GOTO after_scores_boat_accelerate ENDIF //checking car isnt dead GOSUB instructor_boat_dead IF instructor_boat_dead_flag = 1 GOTO mission_boat_failed ENDIF IF shown_help = 0 PRINT_HELP BOATHID // Hold ~m~~widget_accelerate~ to throttle forward and bring the boat to rest within the parallel ~y~buoys~s~ region. PRINT_HELP BOAT_A5 // Hold ~m~~widget_brake~ to apply reverse throttle. PRINT_HELP BOATH2X // Press ~m~~widget_enter_car~ to quit test. shown_help = 1 ENDIF IF boat_accelerate = 0 IF NOT IS_CAR_DEAD instructor_boat GET_CAR_HEALTH instructor_boat boat_damagetaken // WRITE_DEBUG_WITH_INT sd boat_damagetaken ENDIF GET_CAR_SPEED instructor_boat boat_speed IF IS_BUTTON_PRESSED PAD1 CROSS OR IS_BUTTON_PRESSED PAD1 SQUARE OR boat_speed > 1.0 SYNC_WATER boat_gold = boat_accelerate_gold boat_silver = boat_accelerate_silver boat_bronze = boat_accelerate_bronze boat_accelerate = 1 boat_timer = 0 // 30 secs CLEAR_ONSCREEN_TIMER boat_timer DISPLAY_ONSCREEN_TIMER_WITH_STRING boat_timer TIMER_UP BOAT_T1 GET_OBJECT_COORDINATES boat_buoys[0] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[1] buoyr_x buoyr_y buoyr_z timera = 0 ENDIF ENDIF IF boat_accelerate = 1 IF NOT IS_CAR_DEAD instructor_boat GET_CAR_SPEED instructor_boat boat_speed IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y -30.0 FALSE //CLEAR_PRINTS PRINT_NOW BOAT_32 4000 1 // in region IF boat_speed < 7.0 //ADD_ONE_OFF_SOUND buoyl_x buoyl_y buoyl_z buoy_sound CLEAR_PRINTS PRINT_NOW BOAT_33 4000 1 // finished boat_accelerate = 99 // test over ENDIF ENDIF IF timera > 4500 IF NOT IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y -30.0 FALSE CLEAR_PRINTS ENDIF ENDIF IF boat_help1 = 0 IF timera > 4500 boat_help1 = 1 //PRINT_HELP BOAT_A5 // Hold ~m~~widget_brake~ to apply reverse throttle. ENDIF ENDIF ENDIF IF boat_timer > 60000 CLEAR_PRINTS PRINT_NOW BOAT_34 4000 1// time over boat_accelerate = 99 // test over ENDIF ENDIF IF boat_accelerate = 99 // test over GOSUB freeze_boat_pos GOSUB checking_boat_score //checking overall score against the best score at present IF overall_boat_score < boat_accelerate_best_score boat_old_score = boat_accelerate_best_score boat_accelerate_best_score = overall_boat_score boat_print_top_scores_flag = 1 GOSUB boat_medal_check // log player's medal achievements for rewards section. If the player receives a silver or gold // medal for a test they automatically have a bronze too, so that if the player completes the boat // school with 3 bronzes, a silver and a gold they will receive the "all-bronze" reward upon exiting the // boat school. IF boat_which_medal_displayed = 4 // gold IF boat_accelerate_goldachieved = 0 boat_accelerate_goldachieved = 1 boat_accelerate_silverachieved = 1 boat_accelerate_bronzeachieved = 1 //WRITE_DEBUG gold1 ENDIF ENDIF IF boat_which_medal_displayed = 3 // silver IF boat_accelerate_silverachieved = 0 boat_accelerate_silverachieved = 1 boat_accelerate_bronzeachieved = 1 //WRITE_DEBUG silver1 ENDIF ENDIF IF boat_which_medal_displayed = 2 //bronze IF boat_accelerate_bronzeachieved = 0 boat_accelerate_bronzeachieved = 1 //WRITE_DEBUG bronze1 ENDIF ENDIF ELSE boat_which_medal_displayed = 0 ENDIF //opening next level IF boat_which_missions_are_open_flag = 1 IF overall_boat_score < boat_accelerate_qualify REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_AWARD_TRACK_START boat_print_top_scores_flag = 2 boat_which_missions_are_open_flag = 2 instructor_boat_dead_flag = 2 ENDIF ENDIF //printing scores onscreen timera = 0 WHILE timera > -1 //10000 WAIT 0 //changing camera position GOSUB boat_setting_up_camera //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_boat_dead_flag = 2 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_AWARD_TRACK_STOP GOTO after_scores_boat_accelerate ENDIF //displaying scores GOSUB display_overall_boat_score_text //checking if player has skipped watching the scores GOSUB skip_boat_scores IF finished_watching_boat_scores = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_AWARD_TRACK_STOP // write_debug stop GOTO after_scores_boat_accelerate ENDIF ENDWHILE //reseting for another try after_scores_boat_accelerate: GOSUB boat_mini_cleanup GOSUB boat_deletingbuoys IF instructor_boat_dead_flag = 2 GOTO boat_noticeboard_setup ELSE GOTO boat_refresh_accelerate ENDIF ENDIF // boat_accelerate = 99 condition check GOTO boat_accelerate_loop ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////// TEST2 SIMPLE CIRCUIT ////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF boat_mission_selection = 2 boat_refresh_simplecircuit: GOSUB boat_startsetup boat_setup_simplecircuit: SET_PLAYER_CONTROL player1 ON ////WRITE_DEBUG playing //boat_perfect_heading = 180.0 //boat_timer = 20000 GOSUB boat_setting_up_variables CREATE_CAR POLMAV -2303.6272 2105.2903 200.0 instructor_heli // z used to be 10 DELETE_CHAR instructor_helipilot CREATE_CHAR_INSIDE_CAR instructor_heli PEDTYPE_MISSION1 omoboat instructor_helipilot CLEAR_CHAR_TASKS instructor_helipilot SET_HELI_BLADES_FULL_SPEED instructor_heli SET_CAR_CRUISE_SPEED instructor_heli 250.0 HELI_GOTO_COORDS instructor_heli -2303.6272 2105.2903 200.0 200.0 200.0 // last 3 params used to be 10 //DELETE_CHAR instructor_captain CREATE_CAR coastg -2578.6709 2050.8447 0.0 instructor_boat CHANGE_CAR_COLOUR instructor_boat 1 114 SET_CAR_HEADING instructor_boat 0.0//90.0 CREATE_CHAR_INSIDE_CAR instructor_boat PEDTYPE_MISSION1 omoboat instructor_captain GOSUB boat_createbuoys IF boatpb_flag = 0 DO_FADE 500 FADE_IN ATTACH_CAMERA_TO_VEHICLE_LOOK_AT_VEHICLE instructor_heli 10.0 10.0 0.0 instructor_boat 0.0 JUMP_CUT //SET_FIXED_CAMERA_POSITION -2310.6272 2105.2903 20.8322 0.0 0.0 0.0 //POINT_CAMERA_AT_CAR instructor_boat FIXED JUMP_CUT RETURN ENDIF GOSUB boat_stopsetup //RESTORE_CAMERA_JUMPCUT //starting challenge, setting up targets etc. SET_PLAYER_CONTROL player1 ON // new //Getting ifrst pair of buoy marker position for angled area command so we can check that the player has passed through them IF NOT IS_CAR_DEAD instructor_boat GET_CAR_COORDINATES instructor_boat instructor_boatx instructor_boaty instructor_boatz GET_OBJECT_COORDINATES boat_buoys[0] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[1] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[0] buoyl_b CHANGE_BLIP_COLOUR buoyl_b YELLOW ADD_BLIP_FOR_OBJECT boat_buoys[1] buoyr_b CHANGE_BLIP_COLOUR buoyr_b YELLOW ADD_BLIP_FOR_OBJECT boat_buoys[2] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[3] buoyrs_b GOSUB blip_management //WRITE_DEBUG_WITH_FLOAT boatX boat_targetX ENDIF boat_simplecircuit_loop: WAIT 0 IF NOT IS_CAR_DEAD instructor_heli IF NOT IS_CAR_DEAD instructor_boat //GET_CAR_COORDINATES APB_heli1 APB_heli1x APB_heli1y APB_heli1z //Helicopter GET_CAR_COORDINATES instructor_boat instructor_boatx instructor_boaty instructor_boatz //instructor_boat //vc2_xDiff = vc2_tpCx - APB_heli1x //vc2_yDiff = APB_heli1y - vc2_tpCy //GET_HEADING_FROM_VECTOR_2D vc2_yDiff vc2_xDiff APB_heli1_orientation //SET_HELI_ORIENTATION APB_heli1 APB_heli1_orientation instructor_boatx = instructor_boatx - 150.0 // used to be +15 for x and y instructor_boaty = instructor_boaty - 150.0 HELI_GOTO_COORDS instructor_heli instructor_boatx instructor_boaty instructor_boatz 200.0 200.0 // used to be 20 ENDIF ENDIF //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_boat_dead_flag = 2 // REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_AWARD_TRACK_STOP GOTO after_scores_boat_simplecircuit ENDIF //checking car isnt dead GOSUB instructor_boat_dead IF instructor_boat_dead_flag = 1 GOTO mission_boat_failed ENDIF IF boat_simplecircuit = 0 PRINT_HELP BTHID1 // Navigate through each pair of ~y~buoys~s~. Throttle with ~m~~widget_accelerate~, and press and hold ~m~~widget_ped_move_left~ and ~m~~widget_ped_move_right~ to steer. GET_CAR_SPEED instructor_boat boat_speed IF IS_BUTTON_PRESSED PAD1 CROSS OR IS_BUTTON_PRESSED PAD1 SQUARE OR boat_speed > 1.0 SYNC_WATER boat_gold = boat_simplecircuit_gold boat_silver = boat_simplecircuit_silver boat_bronze = boat_simplecircuit_bronze boat_simplecircuit = 5 // ADD_ONE_OFF_SOUND buoyl_x buoyl_y buoyl_z SOUND_RACE_START_GO boat_timer = 0 CLEAR_ONSCREEN_TIMER boat_timer DISPLAY_ONSCREEN_TIMER_WITH_STRING boat_timer TIMER_UP BOAT_T1 ENDIF ENDIF IF boat_simplecircuit > 0 IF boat_timer > 600000 boat_simplecircuit = 99 // test over ENDIF ENDIF IF boat_simplecircuit = 5 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! CLEAR_HELP PRINT_HELP BOAT_B5 // ~s~Hold ~m~~widget_handbrake~ while accelerating to perform a sharper turn. PRINT_HELP BOATH2X // Press ~m~~widget_enter_car~ to quit test. boat_simplecircuit = 10 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[2] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[3] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[2] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[3] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[4] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[5] buoyrs_b GOSUB blip_management //WRITE_DEBUG next23 ENDIF ENDIF ENDIF IF boat_simplecircuit = 10 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_simplecircuit = 15 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[4] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[5] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[4] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[5] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[6] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[7] buoyrs_b GOSUB blip_management // WRITE_DEBUG next45 ENDIF ENDIF ENDIF IF boat_simplecircuit = 15 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_simplecircuit = 20 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[6] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[7] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[6] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[7] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[8] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[9] buoyrs_b GOSUB blip_management // WRITE_DEBUG next67 ENDIF ENDIF ENDIF IF boat_simplecircuit = 20 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_simplecircuit = 25 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[8] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[9] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[8] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[9] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[10] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[11] buoyrs_b GOSUB blip_management // WRITE_DEBUG next89 ENDIF ENDIF ENDIF IF boat_simplecircuit = 25 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_simplecircuit = 30 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[10] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[11] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[10] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[11] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[12] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[13] buoyrs_b GOSUB blip_management // WRITE_DEBUG next1011 ENDIF ENDIF ENDIF IF boat_simplecircuit = 30 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_simplecircuit = 35 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[12] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[13] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[12] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[13] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[14] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[15] buoyrs_b GOSUB blip_management // WRITE_DEBUG next1213 ENDIF ENDIF ENDIF IF boat_simplecircuit = 35 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_simplecircuit = 40 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[14] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[15] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[14] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[15] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b //ADD_BLIP_FOR_OBJECT boat_buoys[16] buoyls_b //ADD_BLIP_FOR_OBJECT boat_buoys[17] buoyrs_b GOSUB blip_management // WRITE_DEBUG next1415 ENDIF ENDIF ENDIF IF boat_simplecircuit = 40 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_33 1000 1 // checkpoint ping finished! boat_simplecircuit = 99 // go to complete REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b //GET_OBJECT_COORDINATES boat_buoys[0] buoyl_x buoyl_y buoyl_z //GET_OBJECT_COORDINATES boat_buoys[1] buoyr_x buoyr_y buoyr_z //ADD_BLIP_FOR_OBJECT boat_buoys[0] buoyl_b //ADD_BLIP_FOR_OBJECT boat_buoys[1] buoyr_b ENDIF ENDIF ENDIF IF boat_simplecircuit = 99 // test over GOSUB freeze_boat_pos GOSUB checking_boat_score //checking overall score against the best score at present IF overall_boat_score < boat_simplecircuit_best_score boat_old_score = boat_simplecircuit_best_score boat_simplecircuit_best_score = overall_boat_score boat_print_top_scores_flag = 1 GOSUB boat_medal_check // log player's medal achievements for rewards section. If the player receives a silver or gold // medal for a test they automatically have a bronze too, so that if the player completes the boat // school with 3 bronzes, a silver and a gold they will receive the "all-bronze" reward upon exiting the // boat school. IF boat_which_medal_displayed = 4 // gold IF boat_simplecircuit_goldachieved = 0 boat_simplecircuit_goldachieved = 1 boat_simplecircuit_silverachieved = 1 boat_simplecircuit_bronzeachieved = 1 //WRITE_DEBUG gold1 ENDIF ENDIF IF boat_which_medal_displayed = 3 // silver IF boat_simplecircuit_silverachieved = 0 boat_simplecircuit_silverachieved = 1 boat_simplecircuit_bronzeachieved = 1 //WRITE_DEBUG silver1 ENDIF ENDIF IF boat_which_medal_displayed = 2 //bronze IF boat_simplecircuit_bronzeachieved = 0 boat_simplecircuit_bronzeachieved = 1 //WRITE_DEBUG bronze1 ENDIF ENDIF ELSE boat_which_medal_displayed = 0 ENDIF //opening next level IF boat_which_missions_are_open_flag = 2 IF overall_boat_score < boat_simplecircuit_qualify REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_AWARD_TRACK_START boat_print_top_scores_flag = 2 boat_which_missions_are_open_flag = 3 instructor_boat_dead_flag = 2 ENDIF ENDIF //printing scores onscreen timera = 0 WHILE timera > -1 //< 10000 WAIT 0 //changing camera position GOSUB boat_setting_up_camera //checking player hasnt left car If IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_boat_dead_flag = 2 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_AWARD_TRACK_STOP GOTO after_scores_boat_simplecircuit ENDIF //displaying scores GOSUB display_overall_boat_score_text //checking if player has skipped watching the scores GOSUB skip_boat_scores IF finished_watching_boat_scores = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_AWARD_TRACK_STOP GOTO after_scores_boat_simplecircuit ENDIF ENDWHILE //reseting for another try after_scores_boat_simplecircuit: GOSUB boat_mini_cleanup GOSUB boat_deletingbuoys IF instructor_boat_dead_flag = 2 GOTO boat_noticeboard_setup ELSE GOTO boat_refresh_simplecircuit ENDIF ENDIF // boat_simplecircuit = 99 condition check GOTO boat_simplecircuit_loop ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////TEST3 Smoked Slalom ////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF boat_mission_selection = 3 boat_refresh_slalom: GOSUB boat_startsetup boat_setup_slalom: SET_PLAYER_CONTROL player1 ON ////WRITE_DEBUG playing //boat_perfect_heading = 180.0 //boat_timer = 20000 GOSUB boat_setting_up_variables CREATE_CAR POLMAV -2303.6272 2105.2903 200.0 instructor_heli DELETE_CHAR instructor_helipilot CREATE_CHAR_INSIDE_CAR instructor_heli PEDTYPE_MISSION1 omoboat instructor_helipilot CLEAR_CHAR_TASKS instructor_helipilot SET_HELI_BLADES_FULL_SPEED instructor_heli SET_CAR_CRUISE_SPEED instructor_heli 250.0 HELI_GOTO_COORDS instructor_heli -2303.6272 2105.2903 200.0 200.0 200.0 //DELETE_CHAR instructor_captain CREATE_CAR dinghy -2124.1255 2438.3518 0.0 instructor_boat CHANGE_CAR_COLOUR instructor_boat 114 1 SET_CAR_HEADING instructor_boat 180.0 CREATE_CHAR_INSIDE_CAR instructor_boat PEDTYPE_MISSION1 omoboat instructor_captain GOSUB boat_createbuoys IF boatpb_flag = 0 DO_FADE 500 FADE_IN ATTACH_CAMERA_TO_VEHICLE_LOOK_AT_VEHICLE instructor_heli 10.0 10.0 0.0 instructor_boat 0.0 JUMP_CUT //SET_FIXED_CAMERA_POSITION -2310.6272 2105.2903 20.8322 0.0 0.0 0.0 //POINT_CAMERA_AT_CAR instructor_boat FIXED JUMP_CUT RETURN ENDIF GOSUB boat_stopsetup //RESTORE_CAMERA_JUMPCUT //starting challenge, setting up targets etc. PRINT_HELP BOATH2X // Press ~m~~widget_enter_car~ to quit test. SET_PLAYER_CONTROL player1 ON // new //Getting ifrst pair of buoy marker position for angled area command so we can check that the player has passed through them IF NOT IS_CAR_DEAD instructor_boat GET_CAR_COORDINATES instructor_boat instructor_boatx instructor_boaty instructor_boatz GET_OBJECT_COORDINATES boat_buoys[0] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[1] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[0] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[1] buoyr_b CHANGE_BLIP_COLOUR buoyl_b YELLOW CHANGE_BLIP_COLOUR buoyr_b YELLOW ADD_BLIP_FOR_OBJECT boat_buoys[2] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[3] buoyrs_b GOSUB blip_management /* DELETE_CHAR boat_blocker1driver DELETE_CHAR boat_blocker2driver DELETE_CAR boat_blocker1 DELETE_CAR boat_blocker2 CREATE_CAR marquis -2100.8364 2247.8623 0.0 boat_blocker1 SET_CAR_HEADING boat_blocker1 122.0 CREATE_CHAR_INSIDE_CAR boat_blocker1 PEDTYPE_MISSION1 omoboat boat_blocker1driver */ //WRITE_DEBUG_WITH_FLOAT boatX boat_targetX ENDIF sfx_gull = 0 boat_slalom_loop: WAIT 0 IF sfx_gull = 0 LOAD_MISSION_AUDIO 3 SOUND_GULL_SCREECH sfx_gull = 1 ENDIF IF sfx_gull = 1 IF HAS_MISSION_AUDIO_LOADED 3 sfx_gull = 2 ENDIF ENDIF IF NOT IS_CAR_DEAD instructor_heli IF NOT IS_CAR_DEAD instructor_boat //GET_CAR_COORDINATES APB_heli1 APB_heli1x APB_heli1y APB_heli1z //Helicopter GET_CAR_COORDINATES instructor_boat instructor_boatx instructor_boaty instructor_boatz //instructor_boat //vc2_xDiff = vc2_tpCx - APB_heli1x //vc2_yDiff = APB_heli1y - vc2_tpCy //GET_HEADING_FROM_VECTOR_2D vc2_yDiff vc2_xDiff APB_heli1_orientation //SET_HELI_ORIENTATION APB_heli1 APB_heli1_orientation instructor_boatx = instructor_boatx - 150.0//150.0 instructor_boaty = instructor_boaty - 150.0//150.0 HELI_GOTO_COORDS instructor_heli instructor_boatx instructor_boaty instructor_boatz 200.0 200.0//200.0 200.0 ENDIF ENDIF //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_boat_dead_flag = 2 //REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_AWARD_TRACK_STOP GOTO after_scores_boat_slalom ENDIF //checking car isnt dead GOSUB instructor_boat_dead IF instructor_boat_dead_flag = 1 GOTO mission_boat_failed ENDIF IF boat_slalom = 0 PRINT_NOW BOAT_C1 4000 1 GET_CAR_SPEED instructor_boat boat_speed IF IS_BUTTON_PRESSED PAD1 CROSS OR IS_BUTTON_PRESSED PAD1 SQUARE OR boat_speed > 1.0 SYNC_WATER boat_gold = boat_slalom_gold boat_silver = boat_slalom_silver boat_bronze = boat_slalom_bronze REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z SOUND_RACE_START_GO boat_slalom = 5 boat_timer = 0 CLEAR_ONSCREEN_TIMER boat_timer DISPLAY_ONSCREEN_TIMER_WITH_STRING boat_timer TIMER_UP BOAT_T1 ENDIF ENDIF IF boat_slalom > 0 IF boat_timer > 600000 boat_slalom = 99 // test over ENDIF ENDIF IF boat_slalom = 5 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_slalom = 10 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[2] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[3] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[2] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[3] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[4] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[5] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_slalom = 10 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_slalom = 15 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[4] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[5] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[4] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[5] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[6] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[7] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_slalom = 15 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_slalom = 20 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[6] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[7] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[6] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[7] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[8] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[9] buoyrs_b GOSUB blip_management IF NOT IS_CAR_DEAD boat_blocker3 IF NOT IS_CHAR_DEAD boat_blocker3driver IF sfx_gull = 2 //WRITE_DEBUG aud2 PLAY_MISSION_AUDIO 3 ENDIF TASK_CAR_DRIVE_TO_COORD boat_blocker3driver boat_blocker3 -2013.4762 1748.4989 0.0 18.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH //WRITE_DEBUG going3 ENDIF ENDIF ENDIF ENDIF ENDIF IF boat_slalom = 20 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_slalom = 25 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[8] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[9] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[8] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[9] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[10] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[11] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_slalom = 25 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_slalom = 30 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[10] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[11] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[10] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[11] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[12] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[13] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_slalom = 30 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_slalom = 35 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[12] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[13] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[12] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[13] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[14] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[15] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_slalom = 35 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_slalom = 40 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[14] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[15] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[14] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[15] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[16] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[17] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_slalom = 40 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_slalom = 45 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[16] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[17] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[16] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[17] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[18] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[19] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_slalom = 45 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_slalom = 50 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[18] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[19] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[18] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[19] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[20] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[21] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_slalom = 50 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_slalom = 55 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[20] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[21] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[20] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[21] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[22] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[23] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_slalom = 55 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_slalom = 60 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[22] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[23] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[22] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[23] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[24] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[25] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_slalom = 60 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_slalom = 65 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[24] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[25] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[24] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[25] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[26] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[27] buoyrs_b GOSUB blip_management IF NOT IS_CAR_DEAD boat_blocker2 IF NOT IS_CHAR_DEAD boat_blocker2driver IF sfx_gull = 2 //WRITE_DEBUG aud2 PLAY_MISSION_AUDIO 3 ENDIF TASK_CAR_DRIVE_TO_COORD boat_blocker2driver boat_blocker2 -2763.1055 1954.1290 0.0 10.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH // WRITE_DEBUG going2 ENDIF ENDIF ENDIF ENDIF ENDIF IF boat_slalom = 65 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_slalom = 70 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[26] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[27] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[26] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[27] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[0] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[1] buoyrs_b GOSUB blip_management IF NOT IS_CAR_DEAD boat_blocker1 IF NOT IS_CHAR_DEAD boat_blocker1driver IF sfx_gull = 2 //WRITE_DEBUG aud2 PLAY_MISSION_AUDIO 3 ENDIF TASK_CAR_DRIVE_TO_COORD boat_blocker1driver boat_blocker1 -2763.1055 1954.1290 0.0 15.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH // WRITE_DEBUG going1 ENDIF ENDIF ENDIF ENDIF ENDIF IF boat_slalom = 70 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_slalom = 80 // go to final buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[0] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[1] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[0] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[1] buoyr_b CHANGE_BLIP_COLOUR buoyl_b YELLOW CHANGE_BLIP_COLOUR buoyr_b YELLOW REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b //CHANGE_BLIP_COLOUR buoyl_b YELLOW //CHANGE_BLIP_COLOUR buoyr_b YELLOW ENDIF ENDIF ENDIF IF boat_slalom = 80 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_33 1000 1 // checkpoint ping! boat_slalom = 99 // go to complete REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b //GET_OBJECT_COORDINATES boat_buoys[0] buoyl_x buoyl_y buoyl_z //GET_OBJECT_COORDINATES boat_buoys[1] buoyr_x buoyr_y buoyr_z //ADD_BLIP_FOR_OBJECT boat_buoys[0] buoyl_b //ADD_BLIP_FOR_OBJECT boat_buoys[1] buoyr_b ENDIF ENDIF ENDIF IF boat_slalom = 99 // test over GOSUB freeze_boat_pos GOSUB checking_boat_score //checking overall score against the best score at present IF overall_boat_score < boat_slalom_best_score boat_old_score = boat_slalom_best_score boat_slalom_best_score = overall_boat_score boat_print_top_scores_flag = 1 GOSUB boat_medal_check // log player's medal achievements for rewards section. If the player receives a silver or gold // medal for a test they automatically have a bronze too, so that if the player completes the boat // school with 3 bronzes, a silver and a gold they will receive the "all-bronze" reward upon exiting the // boat school. IF boat_which_medal_displayed = 4 // gold IF boat_slalom_goldachieved = 0 boat_slalom_goldachieved = 1 boat_slalom_silverachieved = 1 boat_slalom_bronzeachieved = 1 //WRITE_DEBUG gold1 ENDIF ENDIF IF boat_which_medal_displayed = 3 // silver IF boat_slalom_silverachieved = 0 boat_slalom_silverachieved = 1 boat_slalom_bronzeachieved = 1 //WRITE_DEBUG silver1 ENDIF ENDIF IF boat_which_medal_displayed = 2 //bronze IF boat_slalom_bronzeachieved = 0 boat_slalom_bronzeachieved = 1 //WRITE_DEBUG bronze1 ENDIF ENDIF ELSE boat_which_medal_displayed = 0 ENDIF //opening next level IF boat_which_missions_are_open_flag = 3 IF overall_boat_score < boat_slalom_qualify REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_AWARD_TRACK_START boat_print_top_scores_flag = 2 boat_which_missions_are_open_flag = 4 instructor_boat_dead_flag = 2 ENDIF ENDIF //printing scores onscreen timera = 0 WHILE timera > -1 //< 10000 WAIT 0 //changing camera position GOSUB boat_setting_up_camera //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_boat_dead_flag = 2 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_AWARD_TRACK_STOP GOTO after_scores_boat_slalom ENDIF //displaying scores GOSUB display_overall_boat_score_text //checking if player has skipped watching the scores GOSUB skip_boat_scores IF finished_watching_boat_scores = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_AWARD_TRACK_STOP GOTO after_scores_boat_slalom ENDIF ENDWHILE //reseting for another try after_scores_boat_slalom: GOSUB boat_mini_cleanup GOSUB boat_deletingbuoys IF instructor_boat_dead_flag = 2 GOTO boat_noticeboard_setup ELSE GOTO boat_refresh_slalom ENDIF ENDIF // boat_slalom = 99 condition check GOTO boat_slalom_loop ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////// TEST4 SKIJUMP //////////////////////////////////////////////////////////////////////////////////////////////////// IF boat_mission_selection = 4 boat_refresh_skijump: GOSUB boat_startsetup boat_setup_skijump: // DO_FADE 500 FADE_OUT // WHILE GET_FADING_STATUS // WAIT 0 // ENDWHILE SET_PLAYER_CONTROL player1 ON ////WRITE_DEBUG playing //boat_perfect_heading = 180.0 //boat_timer = 20000 GOSUB boat_setting_up_variables //CREATE_CAR dinghy -2323.6272 2105.2903 0.0 instructor_boat //SET_CAR_HEADING instructor_boat 90.0 CREATE_CAR POLMAV -3303.6272 2105.2903 200.0 instructor_heli DELETE_CHAR instructor_helipilot CREATE_CHAR_INSIDE_CAR instructor_heli PEDTYPE_MISSION1 omoboat instructor_helipilot CLEAR_CHAR_TASKS instructor_helipilot SET_HELI_BLADES_FULL_SPEED instructor_heli SET_CAR_CRUISE_SPEED instructor_heli 250.0 HELI_GOTO_COORDS instructor_heli -2303.6272 2105.2903 200.0 200.0 200.0 //DELETE_CHAR instructor_captain CREATE_CAR vortex -2584.3164 2213.4749 0.0 instructor_boat CHANGE_CAR_COLOUR instructor_boat 78 14 SET_CAR_HEADING instructor_boat 250.0 CREATE_CHAR_INSIDE_CAR instructor_boat PEDTYPE_MISSION1 omoboat instructor_captain GOSUB boat_createbuoys // New test section IF NOT IS_CAR_DEAD instructor_boat SET_CAR_COORDINATES instructor_boat -2318.0493 2312.3018 10.0 SET_CAR_HEADING instructor_boat 174.6078 ENDIF IF boatpb_flag = 0 DO_FADE 500 FADE_IN ATTACH_CAMERA_TO_VEHICLE_LOOK_AT_VEHICLE instructor_heli 10.0 10.0 0.0 instructor_boat 0.0 JUMP_CUT //SET_FIXED_CAMERA_POSITION -2310.6272 2105.2903 20.8322 0.0 0.0 0.0 //POINT_CAMERA_AT_CAR instructor_boat FIXED JUMP_CUT RETURN ENDIF GOSUB boat_stopsetup PRINT_HELP BOATH2X // Press ~m~~widget_enter_car~ to quit test. SET_PLAYER_CONTROL player1 ON // new IF NOT IS_CAR_DEAD instructor_boat boat_targetX = 0.0 boat_targetY = 0.0 boat_targetZ = 0.0 boat_rampX = 0.0 boat_rampY = 0.0 boat_rampZ = 0.0 ENDIF boat_skijump_loop: WAIT 0 IF NOT IS_CAR_DEAD instructor_heli IF NOT IS_CAR_DEAD instructor_boat //GET_CAR_COORDINATES APB_heli1 APB_heli1x APB_heli1y APB_heli1z //Helicopter GET_CAR_COORDINATES instructor_boat instructor_boatx instructor_boaty instructor_boatz //instructor_boat //vc2_xDiff = vc2_tpCx - APB_heli1x //vc2_yDiff = APB_heli1y - vc2_tpCy //GET_HEADING_FROM_VECTOR_2D vc2_yDiff vc2_xDiff APB_heli1_orientation //SET_HELI_ORIENTATION APB_heli1 APB_heli1_orientation instructor_boatx = instructor_boatx - 150.0 instructor_boaty = instructor_boaty - 150.0 HELI_GOTO_COORDS instructor_heli instructor_boatx instructor_boaty instructor_boatz 120.0 120.0 ENDIF ENDIF //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_boat_dead_flag = 2 // REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_AWARD_TRACK_STOP GOTO after_scores_boat_skijump ENDIF //checking car isnt dead GOSUB instructor_boat_dead IF instructor_boat_dead_flag = 1 GOTO mission_boat_failed ENDIF IF boat_skijump = 0 PRINT_NOW BOAT_D1 4000 1 GET_CAR_SPEED instructor_boat boat_speed IF IS_BUTTON_PRESSED PAD1 CROSS OR IS_BUTTON_PRESSED PAD1 SQUARE OR boat_speed > 1.0 SYNC_WATER boat_gold = boat_skijump_gold boat_silver = boat_skijump_silver boat_bronze = boat_skijump_bronze CLEAR_ONSCREEN_TIMER boat_timer boat_timer = 46000 // 41 secs boat_skijump = 1 DISPLAY_ONSCREEN_TIMER_WITH_STRING boat_timer TIMER_DOWN BOAT_T1 REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b ADD_BLIP_FOR_OBJECT boat_buoys[0] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[1] buoyr_b CHANGE_BLIP_COLOUR buoyl_b YELLOW CHANGE_BLIP_COLOUR buoyr_b YELLOW GET_OBJECT_COORDINATES boat_buoys[0] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[1] buoyr_x buoyr_y buoyr_z REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z SOUND_RACE_START_GO ENDIF ENDIF IF boat_skijump = 1 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_3D scplayer buoyl_x buoyl_y 1.0 buoyr_x buoyr_y 3.0 10.0 FALSE // height of ramp REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_CAR_SPEED instructor_boat boat_speed boat_skijump = 2 GET_OBJECT_COORDINATES boat_buoys[2] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[3] buoyr_x buoyr_y buoyr_z timerb = 0 ENDIF ENDIF ENDIF IF boat_skijump = 2 IF NOT IS_CAR_DEAD instructor_boat //SET_CAR_ROLL instructor_boat 0.0 IF timerb > 1000 //IF IS_CAR_IN_WATER instructor_boat GET_CAR_COORDINATES instructor_boat boat_targetx boat_targety boat_targetz IF boat_targetz < 1.0 // WRITE_DEBUG inwater IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 600.0 FALSE REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound boat_skijump = 3 timerb = 0 //WRITE_DEBUG landed ENDIF IF NOT IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 600.0 FALSE boat_skijump = 4 timerb = 0 //WRITE_DEBUG invalid ENDIF ENDIF ENDIF ENDIF ENDIF IF boat_skijump = 3 GET_OBJECT_COORDINATES boat_ramps[0] boat_rampX boat_rampy boat_rampz GET_DISTANCE_BETWEEN_COORDS_2D boat_rampX boat_rampY boat_targetX boat_targety boat_bestjumpdist // test area //boat_bestjumpdist = 63.00 WHILE timerb < 1000 WAIT 0 ENDWHILE boat_skijump = 99 ENDIF IF boat_skijump = 4 WHILE timerb < 1000 WAIT 0 ENDWHILE boat_bestjumpdist = 0.0 //WRITE_DEBUG invalid boat_skijump = 99 ENDIF IF boat_skijump > 0 IF boat_timer < 1//30000 CLEAR_PRINTS PRINT_NOW BOAT_34 4000 1// time over boat_skijump = 99 // test over WAIT 3000 GOTO after_scores_boat_skijump ENDIF ENDIF IF boat_skijump = 99 // test over GOSUB freeze_boat_pos GOSUB checking_boat_score //WRITE_DEBUG_WITH_INT overall overall_boat_score //WRITE_DEBUG_WITH_INT best boat_skijump_best_score //checking overall score against the best score at present IF overall_boat_score > boat_skijump_best_score OR overall_boat_score > boat_skijump_best_score boat_old_score = boat_skijump_best_score boat_skijump_best_score = overall_boat_score boat_print_top_scores_flag = 1 //WRITE_DEBUG mcheck GOSUB boat_medal_check // log player's medal achievements for rewards section. If the player receives a silver or gold // medal for a test they automatically have a bronze too, so that if the player completes the boat // school with 3 bronzes, a silver and a gold they will receive the "all-bronze" reward upon exiting the // boat school. IF boat_which_medal_displayed = 4 // gold IF boat_skijump_goldachieved = 0 boat_skijump_goldachieved = 1 boat_skijump_silverachieved = 1 boat_skijump_bronzeachieved = 1 //WRITE_DEBUG gold1 ENDIF ENDIF IF boat_which_medal_displayed = 3 // silver IF boat_skijump_silverachieved = 0 boat_skijump_silverachieved = 1 boat_skijump_bronzeachieved = 1 //WRITE_DEBUG silver1 ENDIF ENDIF IF boat_which_medal_displayed = 2 //bronze IF boat_skijump_bronzeachieved = 0 boat_skijump_bronzeachieved = 1 //WRITE_DEBUG bronze1 ENDIF ENDIF ELSE boat_which_medal_displayed = 0 ENDIF //opening next level IF boat_which_missions_are_open_flag = 4 IF overall_boat_score > boat_skijump_qualify OR overall_boat_score = boat_skijump_qualify REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_AWARD_TRACK_START boat_print_top_scores_flag = 2 boat_which_missions_are_open_flag = 5 instructor_boat_dead_flag = 2 ENDIF /* IF boat_bestjumpdist < boat_skijump_qualify boat_print_top_scores_flag = 2 boat_which_missions_are_open_flag = 5 instructor_boat_dead_flag = 2 ENDIF */ ENDIF //printing scores onscreen timera = 0 WHILE timera > -1//< 10000 WAIT 0 //changing camera position GOSUB boat_setting_up_camera //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_boat_dead_flag = 2 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_AWARD_TRACK_STOP GOTO after_scores_boat_skijump ENDIF //displaying scores GOSUB display_overall_boat_score_text //checking if player has skipped watching the scores GOSUB skip_boat_scores IF finished_watching_boat_scores = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_AWARD_TRACK_STOP GOTO after_scores_boat_skijump ENDIF ENDWHILE //reseting for another try after_scores_boat_skijump: GOSUB boat_mini_cleanup GOSUB boat_deletingbuoys IF instructor_boat_dead_flag = 2 GOTO boat_noticeboard_setup ELSE GOTO boat_refresh_skijump ENDIF ENDIF // boat_skijump = 99 condition check GOTO boat_skijump_loop ENDIF ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////TEST5 Hover Ups and downs working LAND, SEA and AIR //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF boat_mission_selection = 5 boat_refresh_hover: GOSUB boat_startsetup boat_setup_hover: SET_PLAYER_CONTROL player1 ON ////WRITE_DEBUG playing //boat_perfect_heading = 180.0 //boat_timer = 20000 GOSUB boat_setting_up_variables CREATE_CAR POLMAV -2303.6272 2105.2903 200.0 instructor_heli DELETE_CHAR instructor_helipilot CREATE_CHAR_INSIDE_CAR instructor_heli PEDTYPE_MISSION1 omoboat instructor_helipilot CLEAR_CHAR_TASKS instructor_helipilot SET_HELI_BLADES_FULL_SPEED instructor_heli SET_CAR_CRUISE_SPEED instructor_heli 250.0 HELI_GOTO_COORDS instructor_heli -2303.6272 2105.2903 200.0 200.0 200.0 //DELETE_CHAR instructor_captain // Old coords before someone stuck rocks in ! CREATE_CAR vortex -2014.2671 2365.4294 6.0509 instructor_boat CHANGE_CAR_COLOUR instructor_boat 6 2 SET_CAR_HEADING instructor_boat 111.0 CREATE_CHAR_INSIDE_CAR instructor_boat PEDTYPE_MISSION1 omoboat instructor_captain GOSUB boat_createbuoys IF boatpb_flag = 0 DO_FADE 500 FADE_IN ATTACH_CAMERA_TO_VEHICLE_LOOK_AT_VEHICLE instructor_heli 10.0 10.0 0.0 instructor_boat 0.0 JUMP_CUT RETURN ENDIF GOSUB boat_stopsetup //starting challenge, setting up targets etc. PRINT_HELP BOATH2X // Press ~m~~widget_enter_car~ to quit test. SET_PLAYER_CONTROL player1 ON // new //Getting ifrst pair of buoy marker position for angled area command so we can check that the player has passed through them IF NOT IS_CAR_DEAD instructor_boat GET_CAR_COORDINATES instructor_boat instructor_boatx instructor_boaty instructor_boatz GET_OBJECT_COORDINATES boat_buoys[0] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[1] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[0] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[1] buoyr_b ADD_BLIP_FOR_OBJECT boat_buoys[2] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[3] buoyrs_b GOSUB blip_management // CHANGE_BLIP_SCALE buoyls_b 1 // CHANGE_BLIP_SCALE buoyrs_b 1 // // CHANGE_BLIP_COLOUR buoyl_b YELLOW // CHANGE_BLIP_COLOUR buoyr_b YELLOW // CHANGE_BLIP_COLOUR buoyls_b YELLOW // CHANGE_BLIP_COLOUR buoylr_b YELLOW //FREEZE_CAR_POSITION instructor_boat TRUE /* DELETE_CHAR boat_blocker1driver DELETE_CHAR boat_blocker2driver DELETE_CAR boat_blocker1 DELETE_CAR boat_blocker2 CREATE_CAR marquis -2100.8364 2247.8623 0.0 boat_blocker1 SET_CAR_HEADING boat_blocker1 122.0 CREATE_CHAR_INSIDE_CAR boat_blocker1 PEDTYPE_MISSION1 omoboat boat_blocker1driver */ //WRITE_DEBUG_WITH_FLOAT boatX boat_targetX ENDIF sfx_gull = 0 boat_hover_loop: WAIT 0 /* IF NOT IS_CAR_DEAD instructor_boat GET_CAR_HEALTH instructor_boat boat_damagetaken WRITE_DEBUG_WITH_INT bd boat_damagetaken ENDIF */ IF sfx_gull = 0 LOAD_MISSION_AUDIO 3 SOUND_GULL_SCREECH sfx_gull = 1 ENDIF IF sfx_gull = 1 IF HAS_MISSION_AUDIO_LOADED 3 sfx_gull = 2 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_w boat_hover = 99 ENDIF IF NOT IS_CAR_DEAD instructor_heli IF NOT IS_CAR_DEAD instructor_boat //GET_CAR_COORDINATES APB_heli1 APB_heli1x APB_heli1y APB_heli1z //Helicopter GET_CAR_COORDINATES instructor_boat instructor_boatx instructor_boaty instructor_boatz //instructor_boat //vc2_xDiff = vc2_tpCx - APB_heli1x //vc2_yDiff = APB_heli1y - vc2_tpCy //GET_HEADING_FROM_VECTOR_2D vc2_yDiff vc2_xDiff APB_heli1_orientation //SET_HELI_ORIENTATION APB_heli1 APB_heli1_orientation instructor_boatx = instructor_boatx - 150.0 instructor_boaty = instructor_boaty - 150.0 HELI_GOTO_COORDS instructor_heli instructor_boatx instructor_boaty instructor_boatz 200.0 200.0 ENDIF ENDIF //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_boat_dead_flag = 2 GOTO after_scores_boat_hover ENDIF //checking car isnt dead GOSUB instructor_boat_dead IF instructor_boat_dead_flag = 1 GOTO mission_boat_failed ENDIF IF boat_hover = 0 PRINT_NOW BOAT_C1 4000 1 GET_CAR_SPEED instructor_boat boat_speed IF IS_BUTTON_PRESSED PAD1 CROSS OR IS_BUTTON_PRESSED PAD1 SQUARE OR boat_speed > 1.0 SYNC_WATER boat_gold = boat_hover_gold boat_silver = boat_hover_silver boat_bronze = boat_hover_bronze REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z SOUND_RACE_START_GO boat_hover = 5 boat_timer = 0 CLEAR_ONSCREEN_TIMER boat_timer DISPLAY_ONSCREEN_TIMER_WITH_STRING boat_timer TIMER_UP BOAT_T1 //FREEZE_CAR_POSITION instructor_boat FALSE ENDIF ENDIF IF boat_hover > 0 IF boat_timer > 600000 boat_hover = 99 // test over ENDIF ENDIF IF boat_hover = 5 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 10 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[2] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[3] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[2] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[3] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[4] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[5] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_hover = 10 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 15 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[4] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[5] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[4] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[5] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[6] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[7] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_hover = 15 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 20 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[6] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[7] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[6] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[7] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[8] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[9] buoyrs_b GOSUB blip_management // IF NOT IS_CAR_DEAD boat_blocker3 // IF NOT IS_CHAR_DEAD boat_blocker3driver // TASK_CAR_DRIVE_TO_COORD boat_blocker3driver boat_blocker3 -2013.4762 1748.4989 0.0 18.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH // //WRITE_DEBUG going3 // ENDIF // ENDIF ENDIF ENDIF ENDIF IF boat_hover = 20 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 25 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[8] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[9] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[8] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[9] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[10] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[11] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_hover = 25 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 30 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[10] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[11] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[10] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[11] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[12] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[13] buoyrs_b GOSUB blip_management // boat_hover = 99 ENDIF ENDIF ENDIF IF boat_hover = 30 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 35 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[12] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[13] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[12] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[13] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[14] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[15] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_hover = 35 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 40 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[14] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[15] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[14] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[15] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[16] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[17] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_hover = 40 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 45 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[16] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[17] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[16] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[17] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[18] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[19] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_hover = 45 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 50 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[18] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[19] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[18] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[19] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[20] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[21] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_hover = 50 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 55 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[20] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[21] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[20] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[21] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[22] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[23] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_hover = 55 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 60 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[22] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[23] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[22] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[23] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[24] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[25] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_hover = 60 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 65 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[24] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[25] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[24] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[25] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[26] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[27] buoyrs_b GOSUB blip_management IF NOT IS_CAR_DEAD boat_blocker2 IF NOT IS_CHAR_DEAD boat_blocker2driver IF sfx_gull = 2 //WRITE_DEBUG aud2 PLAY_MISSION_AUDIO 3 ENDIF TASK_CAR_DRIVE_TO_COORD boat_blocker2driver boat_blocker2 -2763.1055 1954.1290 0.0 10.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH // WRITE_DEBUG going2 ENDIF ENDIF ENDIF ENDIF ENDIF IF boat_hover = 65 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 70 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[26] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[27] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[26] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[27] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[28] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[29] buoyrs_b GOSUB blip_management IF NOT IS_CAR_DEAD boat_blocker1 IF NOT IS_CHAR_DEAD boat_blocker1driver IF sfx_gull = 2 //WRITE_DEBUG aud2 PLAY_MISSION_AUDIO 3 ENDIF TASK_CAR_DRIVE_TO_COORD boat_blocker1driver boat_blocker1 -2763.1055 1954.1290 0.0 15.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH // WRITE_DEBUG going1 ENDIF ENDIF ENDIF ENDIF ENDIF IF boat_hover = 70 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 75 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[28] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[29] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[28] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[29] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[30] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[31] buoyrs_b GOSUB blip_management IF NOT IS_CAR_DEAD boat_blocker1 IF NOT IS_CHAR_DEAD boat_blocker1driver TASK_CAR_DRIVE_TO_COORD boat_blocker1driver boat_blocker1 -2763.1055 1954.1290 0.0 15.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH // WRITE_DEBUG going1 ENDIF ENDIF ENDIF ENDIF ENDIF IF boat_hover = 75 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 80 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[30] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[31] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[30] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[31] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[32] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[33] buoyrs_b GOSUB blip_management IF NOT IS_CAR_DEAD boat_blocker1 IF NOT IS_CHAR_DEAD boat_blocker1driver IF sfx_gull = 2 //WRITE_DEBUG aud2 PLAY_MISSION_AUDIO 3 ENDIF TASK_CAR_DRIVE_TO_COORD boat_blocker1driver boat_blocker1 -2763.1055 1954.1290 0.0 15.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH // WRITE_DEBUG going1 ENDIF ENDIF ENDIF ENDIF ENDIF IF boat_hover = 80 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 82 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[32] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[33] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[32] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[33] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[34] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[35] buoyrs_b GOSUB blip_management IF NOT IS_CAR_DEAD boat_blocker1 IF NOT IS_CHAR_DEAD boat_blocker1driver TASK_CAR_DRIVE_TO_COORD boat_blocker1driver boat_blocker1 -2763.1055 1954.1290 0.0 15.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH // WRITE_DEBUG going1 ENDIF ENDIF ENDIF ENDIF ENDIF IF boat_hover = 82 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 84 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[34] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[35] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[34] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[35] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[36] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[37] buoyrs_b GOSUB blip_management IF NOT IS_CAR_DEAD boat_blocker1 IF NOT IS_CHAR_DEAD boat_blocker1driver IF sfx_gull = 2 //WRITE_DEBUG aud2 PLAY_MISSION_AUDIO 3 ENDIF TASK_CAR_DRIVE_TO_COORD boat_blocker1driver boat_blocker1 -2763.1055 1954.1290 0.0 15.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH // WRITE_DEBUG going1 ENDIF ENDIF ENDIF ENDIF ENDIF IF boat_hover = 84 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 86 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[36] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[37] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[36] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[37] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[38] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[39] buoyrs_b GOSUB blip_management IF NOT IS_CAR_DEAD boat_blocker1 IF NOT IS_CHAR_DEAD boat_blocker1driver TASK_CAR_DRIVE_TO_COORD boat_blocker1driver boat_blocker1 -2763.1055 1954.1290 0.0 15.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH // WRITE_DEBUG going1 ENDIF ENDIF ENDIF ENDIF ENDIF IF boat_hover = 86 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 88 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[38] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[39] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[38] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[39] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[40] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[41] buoyrs_b GOSUB blip_management IF NOT IS_CAR_DEAD boat_blocker1 IF NOT IS_CHAR_DEAD boat_blocker1driver TASK_CAR_DRIVE_TO_COORD boat_blocker1driver boat_blocker1 -2763.1055 1954.1290 0.0 15.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH // WRITE_DEBUG going1 ENDIF ENDIF ENDIF ENDIF ENDIF IF boat_hover = 88 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 90 // go to next buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[40] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[41] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[40] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[41] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[42] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[43] buoyrs_b GOSUB blip_management IF NOT IS_CAR_DEAD boat_blocker1 IF NOT IS_CHAR_DEAD boat_blocker1driver TASK_CAR_DRIVE_TO_COORD boat_blocker1driver boat_blocker1 -2763.1055 1954.1290 0.0 15.0 MODE_STRAIGHTLINE FALSE DRIVINGMODE_PLOUGHTHROUGH // WRITE_DEBUG going1 ENDIF ENDIF ENDIF ENDIF ENDIF IF boat_hover = 90 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 91 // go to final buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[42] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[43] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[42] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[43] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b // ADD_BLIP_FOR_OBJECT boat_buoys[44] buoyls_b // ADD_BLIP_FOR_OBJECT boat_buoys[45] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_hover = 91 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_33 1000 1 // checkpoint ping! boat_hover = 99//92 // go to final buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b // GET_OBJECT_COORDINATES boat_buoys[44] buoyl_x buoyl_y buoyl_z // GET_OBJECT_COORDINATES boat_buoys[45] buoyr_x buoyr_y buoyr_z // ADD_BLIP_FOR_OBJECT boat_buoys[44] buoyl_b // ADD_BLIP_FOR_OBJECT boat_buoys[45] buoyr_b // REMOVE_BLIP buoyls_b // REMOVE_BLIP buoyrs_b // ADD_BLIP_FOR_OBJECT boat_buoys[46] buoyls_b // ADD_BLIP_FOR_OBJECT boat_buoys[47] buoyrs_b // GOSUB blip_management ENDIF ENDIF ENDIF IF boat_hover = 92 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 93 // go to final buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[46] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[47] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[46] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[47] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[48] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[49] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_hover = 93 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 94 // go to final buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[48] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[49] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[48] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[49] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b ADD_BLIP_FOR_OBJECT boat_buoys[0] buoyls_b ADD_BLIP_FOR_OBJECT boat_buoys[1] buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF IF boat_hover = 94 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_31 1000 1 // checkpoint ping! boat_hover = 97 // go to final buoy pair REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b GET_OBJECT_COORDINATES boat_buoys[0] buoyl_x buoyl_y buoyl_z GET_OBJECT_COORDINATES boat_buoys[1] buoyr_x buoyr_y buoyr_z ADD_BLIP_FOR_OBJECT boat_buoys[0] buoyl_b ADD_BLIP_FOR_OBJECT boat_buoys[1] buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b GOSUB blip_management ENDIF ENDIF ENDIF //////////////////////////////////Last pair IF boat_hover = 97 IF NOT IS_CAR_DEAD instructor_boat IF IS_CHAR_IN_ANGLED_AREA_IN_CAR_2D scplayer buoyl_x buoyl_y buoyr_x buoyr_y 3.0 FALSE //WRITE_DEBUG buoypair REPORT_MISSION_AUDIO_EVENT_AT_POSITION buoyl_x buoyl_y buoyl_z buoy_sound PRINT_NOW BOAT_33 1000 1 // checkpoint ping! boat_hover = 99 // go to complete REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b //GET_OBJECT_COORDINATES boat_buoys[0] buoyl_x buoyl_y buoyl_z //GET_OBJECT_COORDINATES boat_buoys[1] buoyr_x buoyr_y buoyr_z //ADD_BLIP_FOR_OBJECT boat_buoys[0] buoyl_b //ADD_BLIP_FOR_OBJECT boat_buoys[1] buoyr_b ENDIF ENDIF ENDIF IF boat_hover = 99 // test over REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b GOSUB freeze_boat_pos GOSUB checking_boat_score //checking overall score against the best score at present IF overall_boat_score < boat_hover_best_score boat_old_score = boat_hover_best_score boat_hover_best_score = overall_boat_score boat_print_top_scores_flag = 1 GOSUB boat_medal_check // log player's medal achievements for rewards section. If the player receives a silver or gold // medal for a test they automatically have a bronze too, so that if the player completes the boat // school with 3 bronzes, a silver and a gold they will receive the "all-bronze" reward upon exiting the // boat school. IF boat_which_medal_displayed = 4 // gold IF boat_hover_goldachieved = 0 boat_hover_goldachieved = 1 boat_hover_silverachieved = 1 boat_hover_bronzeachieved = 1 //WRITE_DEBUG gold1 ENDIF ENDIF IF boat_which_medal_displayed = 3 // silver IF boat_hover_silverachieved = 0 boat_hover_silverachieved = 1 boat_hover_bronzeachieved = 1 //WRITE_DEBUG silver1 ENDIF ENDIF IF boat_which_medal_displayed = 2 //bronze IF boat_hover_bronzeachieved = 0 boat_hover_bronzeachieved = 1 //WRITE_DEBUG bronze1 ENDIF ENDIF ELSE boat_which_medal_displayed = 0 ENDIF //opening next level IF boat_which_missions_are_open_flag = 5 IF overall_boat_score < boat_hover_qualify boat_print_top_scores_flag = 2 boat_which_missions_are_open_flag = 5 // All tests complete! //GOTO mission_boat_passed boat_schoolpassed = 1 instructor_boat_dead_flag = 2 ENDIF ENDIF //printing scores onscreen timera = 0 WHILE timera > -1//< 10000 WAIT 0 //changing camera position GOSUB boat_setting_up_camera //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_boat_dead_flag = 2 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_AWARD_TRACK_STOP GOTO after_scores_boat_hover ENDIF //displaying scores GOSUB display_overall_boat_score_text //checking if player has skipped watching the scores GOSUB skip_boat_scores IF finished_watching_boat_scores = 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_AWARD_TRACK_STOP GOTO after_scores_boat_hover ENDIF ENDWHILE //reseting for another try after_scores_boat_hover: GOSUB boat_mini_cleanup /* //opening next level IF boat_which_missions_are_open_flag = 5 IF overall_boat_score < boat_hover_qualify boat_print_top_scores_flag = 2 boat_which_missions_are_open_flag = 5 // All tests complete! //GOTO mission_boat_passed IF boat_passed_once = 0 //instructor_boat_dead_flag = 2 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // SET_CHAR_COORDINATES scplayer boat_playerstartx boat_playerstarty boat_playerstartz SET_CHAR_HEADING scplayer boat_playerstarth SET_CAMERA_BEHIND_PLAYER LOAD_SCENE -2185.3347 2410.4092 3.9752 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT GOTO mission_boat_passed //PRINT_WITH_NUMBER_BIG M_PASS 30000 5000 1 // PLAYER_MADE_PROGRESS 1 // REGISTER_ODDJOB_MISSION_PASSED //boat_passed_once = 1 ENDIF instructor_boat_dead_flag = 2 ENDIF ENDIF */ GOSUB boat_deletingbuoys IF instructor_boat_dead_flag = 2 IF boat_schoolpassed = 1 IF boat_passed_once = 0 //instructor_boat_dead_flag = 2 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // SET_CHAR_COORDINATES scplayer boat_playerstartx boat_playerstarty boat_playerstartz SET_CHAR_HEADING scplayer boat_playerstarth SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT LOAD_SCENE -2185.3347 2410.4092 3.9752 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //SET_CAMERA_BEHIND_PLAYER //RESTORE_CAMERA_JUMPCUT GOTO mission_boat_passed //PRINT_WITH_NUMBER_BIG M_PASS 30000 5000 1 // PLAYER_MADE_PROGRESS 1 // REGISTER_ODDJOB_MISSION_PASSED //boat_passed_once = 1 ENDIF ENDIF GOTO boat_noticeboard_setup ELSE GOTO boat_refresh_hover ENDIF ENDIF // boat_hover = 99 condition check GOTO boat_hover_loop ENDIF ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Gosub Section----------------------------------------------------------------------------------------------------------------- boat_setting_up_variables: boat_accelerate = 0 boat_simplecircuit = 0 boat_slalom = 0 boat_skijump = 0 boat_hover = 0 boat_timer = 0 boat_started = 0 instructor_boat_dead_flag = 0 finished_watching_boat_scores = 0 boat_button_pressed = 0 boat_print_top_scores_flag = 0 overall_boat_score = 0 total_boat_damage = 1000 boat_camera_positionx = 0.0 boat_camera_positiony = 0.0 boat_camera_positionz = 0.0 boat_camera_position_int = 0 shown_help = 0 completion_time = 0 boat_speed = 0.0 boat_gold = 0 boat_silver = 0 boat_bronze = 0 //boat_qualify = 0 time_penalty = 0 boat_targetX = 0.0 boat_targetY = 0.0 boat_targetZ = 0.0 RETURN // // skip_boat_scores: IF IS_WIDGET_RELEASED WIDGET_SCHOOL_CONTINUE IF boat_button_pressed = 1 boat_button_pressed = 0 finished_watching_boat_scores = 1 ENDIF ELSE IF boat_button_pressed = 0 boat_button_pressed = 1 ENDIF ENDIF RETURN // // freeze_boat_pos: CLEAR_HELP SET_PLAYER_CONTROL player1 off IF boat_mission_selection = 1 FREEZE_ONSCREEN_TIMER TRUE //FREEZE_CAR_POSITION instructor_boat TRUE BOAT_STOP instructor_boat SET_CAR_FORWARD_SPEED instructor_boat 0.0 FREEZE_CAR_POSITION instructor_boat FALSE ANCHOR_BOAT instructor_boat TRUE FREEZE_CAR_POSITION instructor_boat FALSE ENDIF IF boat_mission_selection > 1 FREEZE_ONSCREEN_TIMER TRUE timerb = 0 WHILE timerb < 1000 WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD instructor_boat //FREEZE_CAR_POSITION instructor_boat TRUE IF NOT boat_mission_selection = 4 // IF NOT boat_mission_selection = 3 IF NOT boat_mission_selection = 5 BOAT_STOP instructor_boat ENDIF // ENDIF ENDIF SET_CAR_FORWARD_SPEED instructor_boat 0.0 FREEZE_CAR_POSITION instructor_boat FALSE IF NOT boat_mission_selection = 4 //IF NOT boat_mission_selection = 3 IF NOT boat_mission_selection = 5 ANCHOR_BOAT instructor_boat TRUE ENDIF //ENDIF ENDIF FREEZE_CAR_POSITION instructor_boat FALSE ENDIF ENDIF RETURN // // instructor_boat_dead: IF NOT IS_CAR_DEAD instructor_boat IF boat_started = 1 IF NOT IS_CHAR_IN_CAR scplayer instructor_boat instructor_boat_dead_flag = 1 ENDIF ENDIF ELSE instructor_boat_dead_flag = 1 ENDIF RETURN // // checking_boat_score: //IF boat_mission_selection = 1 IF NOT boat_mission_selection = 4 completion_time = boat_timer //WRITE_DEBUG_WITH_INT dam completion_time time_penalty = 0 total_boat_damage = 1000// Remnant of hacked driving school IF NOT IS_CAR_DEAD instructor_boat GET_CAR_HEALTH instructor_boat boat_damagetaken //WRITE_DEBUG_WITH_INT nd boat_damagetaken ENDIF IF boat_mission_selection = 5 boat_damagetaken = boat_damagetaken + 120 ENDIF IF boat_damagetaken < 1000 time_penalty = 5000 ENDIF IF boat_damagetaken < 995 time_penalty = 7000 ENDIF IF boat_damagetaken < 990 time_penalty = 10000 ENDIF overall_boat_score = completion_time + time_penalty ENDIF IF boat_mission_selection = 4 completion_time = boat_timer //WRITE_DEBUG_WITH_INT dam completion_time time_penalty = 0 total_boat_damage = 1000// Remnant of hacked driving school IF NOT IS_CAR_DEAD instructor_boat GET_CAR_HEALTH instructor_boat boat_damagetaken //WRITE_DEBUG_WITH_INT nd boat_damagetaken ENDIF IF boat_damagetaken < 995 time_penalty = 5000 ENDIF IF boat_damagetaken < 990 time_penalty = 10000 ENDIF IF boat_damagetaken < 985 time_penalty = 15000 ENDIF overall_boat_score =# boat_bestjumpdist //overall_boat_score = overall_boat_score - time_penalty Taken this out as boat invariably takes damage hitting ramp. ENDIF //ENDIF RETURN // // boat_setting_up_camera: IF NOT IS_CAR_DEAD instructor_boat // IF boat_print_top_scores_flag = 2 // PRINT_NOW ( BOAT_48 ) 12000 1 //Press ~X~ to continue. // ELSE // PRINT_NOW ( BOAT_3 ) 12000 1 //Press ~X~ to retry.~N~Press ~T~ to return to Driving School. // ENDIF IF boat_camera_position_int = 0 GET_CAR_COORDINATES instructor_boat boat_camera_positionx boat_camera_positiony boat_camera_positionz boat_camera_positionz += 5.0 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_boat 10.0 0.0 5.0 boat_camera_positionx boat_camera_positiony boat_camera_positionz SET_FIXED_CAMERA_POSITION boat_camera_positionx boat_camera_positiony boat_camera_positionz 0.0 0.0 0.0 POINT_CAMERA_AT_CAR instructor_boat FIXED INTERPOLATION SET_INTERPOLATION_PARAMETERS 50.0 2000 //driving stats //INCREMENT_FLOAT_STAT DRIVING_SKILL 50.0 boat_camera_position_int = 1 ENDIF IF timera > 3000 IF timera < 6000 IF boat_camera_position_int = 1 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_boat 0.0 10.0 5.0 boat_camera_positionx boat_camera_positiony boat_camera_positionz SET_FIXED_CAMERA_POSITION boat_camera_positionx boat_camera_positiony boat_camera_positionz 0.0 0.0 0.0 POINT_CAMERA_AT_CAR instructor_boat FIXED INTERPOLATION SET_INTERPOLATION_PARAMETERS 50.0 2000 boat_camera_position_int = 2 ENDIF ENDIF ENDIF IF timera > 6000 IF boat_camera_position_int = 2 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_boat -10.0 0.0 5.0 boat_camera_positionx boat_camera_positiony boat_camera_positionz SET_FIXED_CAMERA_POSITION boat_camera_positionx boat_camera_positiony boat_camera_positionz 0.0 0.0 0.0 POINT_CAMERA_AT_CAR instructor_boat FIXED INTERPOLATION SET_INTERPOLATION_PARAMETERS 50.0 2000 boat_camera_position_int = 3 ENDIF ENDIF IF timera > 9000 boat_camera_position_int = 1 timera = 0 ENDIF ENDIF RETURN // // boat_medal_check://////////////////////////////////////////////////////////////////////////// boat_which_medal_displayed = 0 //bronze /* IF overall_boat_score > 69 IF overall_boat_score < 85 IF boat_old_score > 69 AND boat_old_score < 85 boat_which_medal_displayed = 0 ELSE boat_which_medal_displayed = 2 ENDIF ENDIF ENDIF */ IF NOT boat_mission_selection = 4 IF overall_boat_score < boat_bronze IF overall_boat_score > boat_silver IF boat_old_score < boat_bronze AND boat_old_score > boat_silver boat_which_medal_displayed = 0 ELSE boat_which_medal_displayed = 2 //bronze ENDIF ENDIF ENDIF //silver IF overall_boat_score < boat_silver IF overall_boat_score > boat_gold IF boat_old_score < boat_silver AND boat_old_score > boat_gold boat_which_medal_displayed = 0 ELSE boat_which_medal_displayed = 3 ENDIF ENDIF ENDIF //gold IF overall_boat_score < boat_gold IF boat_old_score < boat_gold boat_which_medal_displayed = 0 ELSE boat_which_medal_displayed = 4 ENDIF ENDIF ENDIF // special case for skijump IF boat_mission_selection = 4 IF overall_boat_score > boat_bronze OR overall_boat_score = boat_bronze IF overall_boat_score < boat_silver IF boat_old_score > boat_bronze AND boat_old_score < boat_silver boat_which_medal_displayed = 0 ELSE boat_which_medal_displayed = 2 ENDIF ENDIF ENDIF //silver IF overall_boat_score > boat_silver OR overall_boat_score = boat_silver IF overall_boat_score < boat_gold IF boat_old_score > boat_silver AND boat_old_score < boat_gold boat_which_medal_displayed = 0 ELSE boat_which_medal_displayed = 3 ENDIF ENDIF ENDIF //gold IF overall_boat_score > boat_gold OR overall_boat_score = boat_gold IF boat_old_score > boat_gold boat_which_medal_displayed = 0 ELSE boat_which_medal_displayed = 4 ENDIF ENDIF // write_debug_with_int bmd boat_which_medal_displayed ENDIF RETURN display_overall_boat_score_text: DISPLAY_HUD FALSE DISPLAY_RADAR FALSE GOSUB boat_getlanguage IF boat_which_medal_displayed < 2 // no medal, 2 is bronze SET_TEXT_CENTRE ON SET_TEXT_SCALE 5.0 5.0 SET_TEXT_FONT FONT_BANK DISPLAY_TEXT 320.0 195.0 BOAT_75 //nColor = WHITE:0 || BLUE:1 || GREEN:2 //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_RESULTS 0 0 0 0 0 0.0 BOAT_75 ELSE //nColor = WHITE:0 || BLUE:1 || GREEN:2 //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_AWARD 0 0 0 0 0 0.0 BOAT_75 //DRAW_WINDOW 160.0 220.0 490.0 442.0 DUMMY SWIRLS_BOTH //no text window Medal ENDIF //PERFECT HEADING GOSUB boat_small_backend_text //PERFECT POSITION GOSUB boat_small_backend_text IF total_boat_damage > 0 CLEAR_PRINTS // Results breakdown text // //Completion time GOSUB boat_small_backend_text SET_TEXT_BACKGROUND OFF dcompletion_time = 0.0 dcompletion_time =# completion_time //dcompletion_time = dcompletion_time / 1000.0 IF NOT boat_mission_selection = 4 //nColor = WHITE:0 || BLUE:1 || GREEN:2 //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_ONE 1 0 1 0 2 dcompletion_time boat_7 //DISPLAY_TEXT_WITH_FLOAT 180.0 275.0 boat_7 dcompletion_time 2// ENDIF //Damage penalty GOSUB boat_small_backend_text dtime_penalty = 0.0 dtime_penalty =# time_penalty //dtime_penalty = dtime_penalty / 1000.0 IF NOT boat_mission_selection = 4 GOSUB boat_getlanguage //nColor = WHITE:0 || BLUE:1 || GREEN:2 //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_TWO 1 0 1 0 2 dtime_penalty boat_9 //DISPLAY_TEXT_WITH_FLOAT 180.0 295.0 boat_9 dtime_penalty 2// ENDIF //Overall Score GOSUB boat_small_backend_text doverall_boat_score = 0.0 doverall_boat_score =# overall_boat_score //doverall_boat_score = doverall_boat_score / 1000.0 IF NOT boat_mission_selection = 4 GOSUB boat_getlanguage //nColor = WHITE:0 || BLUE:1 || GREEN:2 //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_THREE 1 0 1 0 2 doverall_boat_score boat_10 //DISPLAY_TEXT_WITH_FLOAT 180.0 315.0 boat_10 doverall_boat_score 2 // Display final score. ENDIF IF boat_mission_selection = 4 IF boat_bestjumpdist > 0.0 //nColor = WHITE:0 || BLUE:1 || GREEN:2 //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_ONE 1 0 0 1 2 boat_bestjumpdist boat_11 //GOSUB boat_getlanguage //DISPLAY_TEXT_WITH_FLOAT 180.0 315.0 boat_11 boat_bestjumpdist 2 ELSE GOSUB boat_getlanguage DISPLAY_TEXT 180.0 315.0 boat_12 // Jump invalid! ENDIF ENDIF // Actual results. This is new as it's more visually pleasing to separate the these from their descriptors above. //Completion time GOSUB boat_small_backend_text dcompletion_time = 0.0 dcompletion_time =# completion_time //dcompletion_time = dcompletion_time / 1000.0 IF boat_mission_selection = 4 GOSUB boat_getlanguage //nColor = WHITE:0 || BLUE:1 || GREEN:2 //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle //SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_FOUR 1 0 1 0 2 dcompletion_time boat_77 //DISPLAY_TEXT_WITH_FLOAT 390.0 275.0 boat_77 dcompletion_time 2// ENDIF //Damage penalty GOSUB boat_small_backend_text GET_HUD_COLOUR HUD_COLOUR_RED b1_r b1_g b1_b b1_alpha2 SET_TEXT_COLOUR b1_r b1_g b1_b b1_alpha2 // SET_TEXT_COLOUR 255 255 255 255 // white dtime_penalty = 0.0 dtime_penalty =# time_penalty dtime_penalty = dtime_penalty / 1000.0 IF dtime_penalty > 0.0 GET_HUD_COLOUR HUD_COLOUR_RED b1_r b1_g b1_b b1_alpha2 SET_TEXT_COLOUR b1_r b1_g b1_b b1_alpha2 ELSE GET_HUD_COLOUR HUD_COLOUR_GREY b1_r b1_g b1_b b1_alpha2 SET_TEXT_COLOUR b1_r b1_g b1_b b1_alpha2 ENDIF IF NOT boat_mission_selection = 4 GOSUB boat_getlanguage //DISPLAY_TEXT_WITH_FLOAT 390.0 295.0 boat_77 dtime_penalty 2// ENDIF //Overall Score GOSUB boat_small_backend_text IF boat_print_top_scores_flag = 1 ///new high score OR boat_print_top_scores_flag = 2 SET_TEXT_COLOUR 255 255 255 255 //hud white ELSE SET_TEXT_COLOUR 255 255 255 255 ENDIF doverall_boat_score = 0.0 doverall_boat_score =# overall_boat_score doverall_boat_score = doverall_boat_score / 1000.0 //Help text and buttons PC Version will be modified. GET_HUD_COLOUR HUD_COLOUR_WHITE b1_r b1_g b1_b b1_alpha2 SET_TEXT_COLOUR b1_r b1_g b1_b b1_alpha2 //PC section SET_TEXT_SCALE 0.52 1.45 SET_TEXT_DROPSHADOW 2 0 0 0 255 SET_TEXT_FONT FONT_SPACEAGE //DISPLAY_TEXT 340.0 345.0 sch_prs//boat_74 //PS2 X button or PC equivalent SET_TEXT_SCALE 0.52 1.45 SET_TEXT_DROPSHADOW 2 0 0 0 255 SET_TEXT_FONT FONT_SPACEAGE //DISPLAY_TEXT 340.0 365.0 boat_73 // PS2 Triangle button or PC equivalent GOSUB boat_small_backend_text SET_TEXT_SCALE 0.52 1.45 // return scale for help text GET_HUD_COLOUR HUD_COLOUR_YELLOW b1_r b1_g b1_b b1_alpha2 IF IS_WIDGET_PRESSED WIDGET_SCHOOL_CONTINUE SET_TEXT_COLOUR 255 0 0 255 ELSE SET_TEXT_COLOUR b1_r b1_g b1_b b1_alpha2 ENDIF SET_TEXT_CENTRE ON // The widget is rendering this now due to issues with drawing order. //DISPLAY_TEXT_CLAMPED 237.0 385.0 boat_76 80.0 // continue GOSUB boat_small_backend_text SET_TEXT_SCALE 0.52 1.45 // return scale for help text GET_HUD_COLOUR HUD_COLOUR_YELLOW b1_r b1_g b1_b b1_alpha2 IF IS_WIDGET_PRESSED WIDGET_MINIGAME_CANCEL SET_TEXT_COLOUR 255 0 0 255 ELSE SET_TEXT_COLOUR b1_r b1_g b1_b b1_alpha2 ENDIF SET_TEXT_CENTRE ON // The widget is rendering this now due to issues with drawing order. //DISPLAY_TEXT_CLAMPED 410.0 385.0 boat_53 80.0 // exit // Medals / Ribbons / Congratulatory messages // IF boat_print_top_scores_flag = 1 OR boat_print_top_scores_flag = 2 GOSUB boat_test_name_text SET_TEXT_SCALE 1.0 3.4 SET_TEXT_EDGE 2 0 0 0 255 SET_TEXT_DRAW_BEFORE_FADE TRUE SET_TEXT_COLOUR 255 255 255 255 DISPLAY_TEXT 323.0 110.0 boat_46 //NEW HIGH SCORE! ENDIF IF boat_print_top_scores_flag = 1 OR boat_print_top_scores_flag = 2 IF boat_which_medal_displayed > 0 //MEDAL //ribbons DRAW_SPRITE 4 320.0 205.0 200.0 85.0 255 255 255 255 //SET_SPRITES_DRAW_BEFORE_FADE TRUE //bronze IF boat_which_medal_displayed = 2 DRAW_SPRITE 1 320.0 205.0 92.0 85.0 255 255 255 255 ENDIF //silver IF boat_which_medal_displayed = 3 DRAW_SPRITE 2 320.0 205.0 92.0 85.0 255 255 255 255 ENDIF //gold IF boat_which_medal_displayed = 4 DRAW_SPRITE 3 320.0 205.0 92.0 85.0 255 255 255 255 ENDIF GOSUB boat_test_name_text SET_TEXT_EDGE 2 0 0 0 255 SET_TEXT_SCALE 1.0 3.4 SET_TEXT_DRAW_BEFORE_FADE TRUE SET_TEXT_COLOUR 189 131 24 255 DISPLAY_TEXT 323.0 65.0 boat_47 //NEW CERTIFICATE AWARDED! ENDIF ENDIF ENDIF CLEAR_ONSCREEN_TIMER boat_timer RETURN // // boat_mini_cleanup:////////////////////////////////////////////////////////////////////////////// DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DISPLAY_HUD TRUE DISPLAY_RADAR TRUE //SET_AREA_VISIBLE 3 CLEAR_PRINTS CLEAR_HELP CLEAR_THIS_BIG_PRINT boat_46 CLEAR_THIS_BIG_PRINT boat_47 APPLY_BRAKES_TO_PLAYERS_CAR player1 FALSE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF instructor_boat_dead_flag = 2 CLEAR_PRINTS IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer boat_playerstartx boat_playerstarty boat_playerstartz ELSE SET_CHAR_COORDINATES scplayer boat_playerstartx boat_playerstarty boat_playerstartz ENDIF ELSE IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer boat_playerstartx boat_playerstarty boat_playerstartz ELSE SET_CHAR_COORDINATES scplayer boat_playerstartx boat_playerstarty boat_playerstartz ENDIF ENDIF WAIT 0 DELETE_CAR instructor_boat DELETE_CAR instructor_heli DELETE_CHAR instructor_captain REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b //CLEAR_AREA noticeboard_x noticeboard_y noticeboard_z 300.0 TRUE RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER WAIT 0 CLEAR_ONSCREEN_TIMER boat_timer FREEZE_ONSCREEN_TIMER FALSE RETURN boat_drawing_tv_screen:////////////////////////////////////////////////////////////////////// SET_PLAYER_CONTROL player1 OFF //FADE_OUT IF boat_fade_flag = 1 IF boat_alpha < 255 boat_alpha = boat_alpha + 20//5 IF boat_alpha > 255 boat_alpha = 255 ENDIF ELSE boat_fade_flag = 2 ENDIF ENDIF //FADE_IN IF boat_fade_flag = 3 IF boat_alpha > 0 boat_alpha = boat_alpha - 5 IF boat_alpha < 0 boat_alpha = 0 ENDIF ELSE boat_fade_flag = 0 ENDIF ENDIF //which test GOSUB boat_test_name_text SET_TEXT_JUSTIFY OFF SET_TEXT_CENTRE OFF SET_TEXT_DROPSHADOW 0 0 0 0 255 SET_TEXT_COLOUR 255 255 255 255 //white IF boat_mission_selection = 1 DISPLAY_TEXT fTitleX fTitleY BOAT_A //Basic Seamanship //PRINT_BIG BOAT_A 10000 7 boat_which_score_displayed = boat_accelerate_best_score GOSUB boat_drawing_medal ENDIF IF boat_mission_selection = 2 DISPLAY_TEXT fTitleX fTitleY BOAT_B //Simple Circuit //PRINT_BIG BOAT_B 10000 7 boat_which_score_displayed = boat_simplecircuit_best_score GOSUB boat_drawing_medal ENDIF IF boat_mission_selection = 3 DISPLAY_TEXT fTitleX fTitleY BOAT_C //Smoked Slalom //PRINT_BIG BOAT_C 10000 7 boat_which_score_displayed = boat_slalom_best_score GOSUB boat_drawing_medal ENDIF IF boat_mission_selection = 4 DISPLAY_TEXT fTitleX fTitleY BOAT_D //skijump //PRINT_BIG BOAT_D 10000 7 boat_which_score_displayed = boat_skijump_best_score GOSUB boat_drawing_medal ENDIF IF boat_mission_selection = 5 //PRINT_BIG BOAT_E 10000 7 DISPLAY_TEXT fTitleX fTitleY BOAT_E //Land, Sea and Air boat_which_score_displayed = boat_hover_best_score GOSUB boat_drawing_medal ENDIF GOSUB DrawAspectCorrectingQuads // For aspect correction. //TV SCREEN HUD DRAW_SPRITE 9 320.0 224.0 640.0 448.0 150 150 150 255 RETURN///////////////////////////////////////////////////////////////////////////////////// boat_drawing_medal:////////////////////////////////////////////////////////////////////////// //background for medal, ribbons and score //SET_SPRITES_DRAW_BEFORE_FADE TRUE //DRAW_SPRITE 8 320.0 430.0 640.0 250.0 0 0 0 255 //best score GOSUB boat_small_onscreen_text SET_TEXT_JUSTIFY OFF SET_TEXT_CENTRE OFF GET_HUD_COLOUR HUD_COLOUR_LIGHTBLUE b1_r b1_g b1_b b1_alpha2 SET_TEXT_COLOUR b1_r b1_g b1_b b1_alpha2 IF boat_mission_selection = 1 IF boat_accelerate_best_score < boat_accelerate_qualify dboat_which_score_displayed = 0.0 dboat_which_score_displayed =# boat_which_score_displayed dboat_which_score_displayed = dboat_which_score_displayed / 1000.0 GOSUB boat_getlanguage DISPLAY_TEXT_WITH_FLOAT fStringX fStringY boat_58 dboat_which_score_displayed 2 ELSE temp_int = 0 dboat_accelerate_qualify = 0.0 dboat_accelerate_qualify =# boat_accelerate_qualify dboat_accelerate_qualify = dboat_accelerate_qualify / 1000.0 GOSUB boat_getlanguage DISPLAY_TEXT_WITH_FLOAT fStringX fStringY boat_62 dboat_accelerate_qualify 1 ENDIF //no medal IF boat_which_score_displayed > boat_accelerate_bronze boat_which_medal_displayed = 1 ENDIF //bronze IF boat_which_score_displayed < boat_accelerate_bronze IF boat_which_score_displayed > boat_accelerate_silver boat_which_medal_displayed = 2 ENDIF ENDIF //silver IF boat_which_score_displayed < boat_accelerate_silver IF boat_which_score_displayed > boat_accelerate_gold boat_which_medal_displayed = 3 ENDIF ENDIF //gold IF boat_which_score_displayed < boat_accelerate_gold boat_which_medal_displayed = 4 ENDIF ENDIF IF boat_mission_selection = 2 IF boat_simplecircuit_best_score < boat_simplecircuit_qualify dboat_which_score_displayed = 0.0 dboat_which_score_displayed =# boat_which_score_displayed dboat_which_score_displayed = dboat_which_score_displayed / 1000.0 GOSUB boat_getlanguage DISPLAY_TEXT_WITH_FLOAT fStringX fStringY boat_58 dboat_which_score_displayed 2 ELSE dboat_simplecircuit_qualify = 0.0 //temp_int = boat_accelerate_qualify / 10 dboat_simplecircuit_qualify =# boat_simplecircuit_qualify dboat_simplecircuit_qualify = dboat_simplecircuit_qualify / 1000.0 //Convert to minutes //dboat_simplecircuitqualify = dboat_simplecircuit_qualify / 60 GOSUB boat_getlanguage DISPLAY_TEXT_WITH_FLOAT fStringX fStringY boat_62 dboat_simplecircuit_qualify 1 ENDIF //no medal IF boat_which_score_displayed > boat_simplecircuit_bronze boat_which_medal_displayed = 1 ENDIF //bronze IF boat_which_score_displayed < boat_simplecircuit_bronze IF boat_which_score_displayed > boat_simplecircuit_silver boat_which_medal_displayed = 2 ENDIF ENDIF //silver IF boat_which_score_displayed < boat_simplecircuit_silver IF boat_which_score_displayed > boat_simplecircuit_gold boat_which_medal_displayed = 3 ENDIF ENDIF //gold IF boat_which_score_displayed < boat_simplecircuit_gold boat_which_medal_displayed = 4 ENDIF ENDIF IF boat_mission_selection = 3 IF boat_slalom_best_score < boat_slalom_qualify dboat_which_score_displayed = 0.0 dboat_which_score_displayed =# boat_which_score_displayed dboat_which_score_displayed = dboat_which_score_displayed / 1000.0 GOSUB boat_getlanguage DISPLAY_TEXT_WITH_FLOAT fStringX fStringY boat_58 dboat_which_score_displayed 2 ELSE dboat_slalom_qualify = 0.0 //temp_int = boat_accelerate_qualify / 10 dboat_slalom_qualify =# boat_slalom_qualify dboat_slalom_qualify = dboat_slalom_qualify / 1000.0 //Convert to minutes dboat_slalom_qualify = dboat_slalom_qualify / 60.0 GOSUB boat_getlanguage DISPLAY_TEXT_WITH_FLOAT fStringX fStringY boat_63 dboat_slalom_qualify 1 ENDIF //no medal IF boat_which_score_displayed > boat_slalom_bronze boat_which_medal_displayed = 1 ENDIF //bronze IF boat_which_score_displayed < boat_slalom_bronze IF boat_which_score_displayed > boat_slalom_silver boat_which_medal_displayed = 2 ENDIF ENDIF //silver IF boat_which_score_displayed < boat_slalom_silver IF boat_which_score_displayed > boat_slalom_gold boat_which_medal_displayed = 3 ENDIF ENDIF //gold IF boat_which_score_displayed < boat_slalom_gold boat_which_medal_displayed = 4 ENDIF ENDIF IF boat_mission_selection = 4 IF boat_skijump_best_score > boat_skijump_qualify dboat_which_score_displayed = 0.0 dboat_which_score_displayed =# boat_which_score_displayed dboat_which_score_displayed = dboat_which_score_displayed / 1000.0 GOSUB boat_getlanguage DISPLAY_TEXT_WITH_NUMBER fStringX fStringY boat_60 boat_skijump_best_score ELSE dboat_skijump_qualify = 0.0 //temp_int = boat_accelerate_qualify / 10 dboat_skijump_qualify =# boat_skijump_qualify dboat_skijump_qualify = dboat_skijump_qualify / 1000.0 GOSUB boat_getlanguage DISPLAY_TEXT_WITH_NUMBER fStringX fStringY boat_61 boat_skijump_qualify ENDIF //no medal IF boat_which_score_displayed < boat_skijump_bronze boat_which_medal_displayed = 1 ENDIF //bronze IF boat_which_score_displayed > boat_skijump_bronze OR boat_which_score_displayed = boat_skijump_bronze IF boat_which_score_displayed < boat_skijump_silver boat_which_medal_displayed = 2 ENDIF ENDIF //silver IF boat_which_score_displayed > boat_skijump_silver OR boat_which_score_displayed = boat_skijump_silver IF boat_which_score_displayed < boat_skijump_gold boat_which_medal_displayed = 3 ENDIF ENDIF //gold IF boat_which_score_displayed > boat_skijump_gold OR boat_which_score_displayed = boat_skijump_gold boat_which_medal_displayed = 4 ENDIF ENDIF IF boat_mission_selection = 5 IF boat_hover_best_score < boat_hover_qualify dboat_which_score_displayed = 0.0 dboat_which_score_displayed =# boat_which_score_displayed dboat_which_score_displayed = dboat_which_score_displayed / 1000.0 GOSUB boat_getlanguage DISPLAY_TEXT_WITH_FLOAT fStringX fStringY boat_58 dboat_which_score_displayed 2 ELSE dboat_hover_qualify = 0.0 //temp_int = boat_accelerate_qualify / 10 dboat_hover_qualify =# boat_hover_qualify dboat_hover_qualify = dboat_hover_qualify / 1000.0 //Convert to minutes dboat_hover_qualify = dboat_hover_qualify / 60.0 GOSUB boat_getlanguage DISPLAY_TEXT_WITH_FLOAT fStringX fStringY boat_63 dboat_hover_qualify 1 ENDIF //no medal IF boat_which_score_displayed > boat_hover_bronze boat_which_medal_displayed = 1 ENDIF //bronze IF boat_which_score_displayed < boat_hover_bronze IF boat_which_score_displayed > boat_hover_silver boat_which_medal_displayed = 2 ENDIF ENDIF //silver IF boat_which_score_displayed < boat_hover_silver IF boat_which_score_displayed > boat_hover_gold boat_which_medal_displayed = 3 ENDIF ENDIF //gold IF boat_which_score_displayed < boat_hover_gold boat_which_medal_displayed = 4 ENDIF ENDIF //which medal awarded //SET_SPRITES_DRAW_BEFORE_FADE TRUE IF boat_which_medal_displayed = 1 //no medal DRAW_SPRITE 6 510.0 80.0 166.0 77.0 160 160 160 255 ENDIF //bronze IF boat_which_medal_displayed = 2 DRAW_SPRITE 4 510.0 85.0 170.0 75.0 255 255 255 255 DRAW_SPRITE 1 510.0 85.0 80.0 75.0 255 255 255 255 ENDIF //silver IF boat_which_medal_displayed = 3 DRAW_SPRITE 4 510.0 85.0 170.0 75.0 255 255 255 255 DRAW_SPRITE 2 510.0 85.0 80.0 75.0 255 255 255 255 ENDIF //gold IF boat_which_medal_displayed = 4 DRAW_SPRITE 4 510.0 85.0 170.0 75.0 255 255 255 255 DRAW_SPRITE 3 510.0 85.0 80.0 75.0 255 255 255 255 ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// boat_watching_demo:///////////////////////////////////////////////////////////////////////////// //setting up each individual mission for the playback and starting playback IF boatpb_flag = 0 ////WRITE_DEBUG inwd IF boat_mission_selection = 1 GOSUB boat_setup_accelerate ENDIF IF boat_mission_selection = 2 GOSUB boat_setup_simplecircuit ENDIF IF boat_mission_selection = 3 GOSUB boat_setup_slalom ENDIF IF boat_mission_selection = 4 GOSUB boat_setup_skijump ENDIF IF boat_mission_selection = 5 GOSUB boat_setup_hover ENDIF /* IF boat_mission_selection = 7 GOSUB setup_burn_and_lap ENDIF IF boat_mission_selection = 9 GOSUB setup_cone_coil ENDIF IF boat_mission_selection = 10 GOSUB setup_90 ENDIF IF boat_mission_selection = 11 GOSUB setup_wheelie_weave ENDIF IF boat_mission_selection = 13 GOSUB setup_spin_go ENDIF IF boat_mission_selection = 14 GOSUB setup_pit_technique ENDIF IF boat_mission_selection = 15 GOSUB setup_swift_escape ENDIF IF boat_mission_selection = 16 GOSUB setup_city_slicking ENDIF */ boatpb_flag = 1 ENDIF IF boatpb_flag = 1 ////WRITE_DEBUG playback//test! //loading in car recordings. IF NOT IS_CAR_DEAD instructor_boat IF NOT IS_CAR_DEAD instructor_boat GET_CAR_COORDINATES instructor_boat clearX clearY clearZ CLEAR_AREA clearX clearY clearZ 1000.0 TRUE //WRITE_DEBUG 201204 ENDIF IF boat_mission_selection = 1 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 752 REQUEST_CAR_RECORDING 752 ELSE //playing back car recordings SYNC_WATER START_PLAYBACK_RECORDED_CAR instructor_boat 752 ////WRITE_DEBUG demo boat_fade_flag = 3 //FADE_IN boatpb_flag = 2 ENDIF ENDIF IF boat_mission_selection = 2 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 755 REQUEST_CAR_RECORDING 755 ELSE //playing back car recordings SYNC_WATER START_PLAYBACK_RECORDED_CAR instructor_boat 755 ////WRITE_DEBUG demo boat_fade_flag = 3 //FADE_IN boatpb_flag = 2 ENDIF ENDIF IF boat_mission_selection = 3 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 757 REQUEST_CAR_RECORDING 757 ELSE //playing back car recordings SYNC_WATER START_PLAYBACK_RECORDED_CAR instructor_boat 757 ////WRITE_DEBUG demo boat_fade_flag = 3 //FADE_IN boatpb_flag = 2 ENDIF ENDIF IF boat_mission_selection = 4 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 759 REQUEST_CAR_RECORDING 759 ELSE //playing back car recordings IF NOT IS_CAR_DEAD instructor_boat GET_CAR_COORDINATES instructor_boat clearX clearY clearZ CLEAR_AREA clearX clearY clearZ 1000.0 TRUE //WRITE_DEBUG 201204 ENDIF SYNC_WATER START_PLAYBACK_RECORDED_CAR instructor_boat 759 ////WRITE_DEBUG demo boat_fade_flag = 3 //FADE_IN boatpb_flag = 2 ENDIF ENDIF IF boat_mission_selection = 5 IF NOT HAS_CAR_RECORDING_BEEN_LOADED 760 REQUEST_CAR_RECORDING 760 ELSE //playing back car recordings SYNC_WATER START_PLAYBACK_RECORDED_CAR instructor_boat 760 ////WRITE_DEBUG demo boat_fade_flag = 3 //FADE_IN boatpb_flag = 2 ENDIF ENDIF ENDIF ENDIF //waiting for playback to finish IF boatpb_flag = 2 //Should be 2 IF NOT IS_CAR_DEAD instructor_boat IF NOT IS_CAR_DEAD instructor_heli //GET_CAR_COORDINATES APB_heli1 APB_heli1x APB_heli1y APB_heli1z //Helicopter GET_CAR_COORDINATES instructor_boat instructor_boatx instructor_boaty instructor_boatz //instructor_boat IF boat_mission_selection = 1 instructor_boatx = instructor_boatx - 35.0 // use +40 to show off glitch -45 to fix instructor_boaty = instructor_boaty - 30.0 // -40 to fix ENDIF IF boat_mission_selection = 2 instructor_boatx = instructor_boatx - 15.0 // use +40 to show off glitch -45 to fix instructor_boaty = instructor_boaty - 30.0//40.0 ENDIF IF boat_mission_selection = 3 instructor_boatx = instructor_boatx - 13.0 // use +40 to show off glitch -45 to fix instructor_boaty = instructor_boaty - 13.0 // -40 to fix ENDIF IF boat_mission_selection = 4 instructor_boatx = instructor_boatx - 10.0 // use +40 to show off glitch -15 to fix instructor_boaty = instructor_boaty - 20.0 // -15 to fix ENDIF IF boat_mission_selection = 5 instructor_boatx = instructor_boatx - 10.0 // use +40 to show off glitch -10 to fix instructor_boaty = instructor_boaty - 20.0 // -20 to fix ENDIF SET_CAR_COORDINATES instructor_heli instructor_boatx instructor_boaty 10.0 //+ 6 to fix //HELI_GOTO_COORDS instructor_heli instructor_boatx instructor_boaty instructor_boatz 10.0 10.0 //HELI_FOLLOW_ENTITY instructor_heli -1 instructor_boat 10.0 ENDIF IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR instructor_boat ////WRITE_DEBUG recording boat_fade_flag = 1 //FADE_OUT boatpb_flag = 4//4 ENDIF ELSE boat_fade_flag = 1 //FADE_OUT boatpb_flag = 4 ENDIF ENDIF //overriding playback IF boatpb_flag = 3 boat_fade_flag = 1 //FADE_OUT boatpb_flag = 4 ENDIF //waiting for screen to FADE_OUT and cleaning everything up IF boatpb_flag = 4 //IF boat_fade_flag = 2 DO_FADE 0 FADE_OUT STOP_PLAYBACK_RECORDED_CAR instructor_boat RESTORE_CAMERA_JUMPCUT //DELETE_CAR instructor_boat //DELETE_CAR instructor_heli //RESTORE_CAMERA_JUMPCUT // CLEAR_AREA noticeboard_x noticeboard_y noticeboard_z 300.0 TRUE CLEAR_ONSCREEN_TIMER boat_timer FREEZE_ONSCREEN_TIMER FALSE // DELETE_CAR dummy_car1 // DELETE_CAR dummy_car2 DELETE_CAR instructor_heli DELETE_CAR instructor_boat // DELETE_OBJECT ramp1 // DELETE_OBJECT ramp2 GOSUB boat_deletingbuoys boatpb_flag = 0 CLEAR_ONSCREEN_TIMER boat_timer FREEZE_ONSCREEN_TIMER FALSE //WRITE_DEBUG delete DELETE_CAR instructor_boat DELETE_CAR instructor_heli DELETE_CHAR instructor_helipilot DELETE_CHAR instructor_captain DELETE_CAR boat_blocker1 DELETE_CAR boat_blocker2 DELETE_CAR boat_blocker3 DELETE_CHAR boat_blocker1driver DELETE_CHAR boat_blocker2driver DELETE_CHAR boat_blocker3driver //ENDIF ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// boat_small_onscreen_text://///////////////////////////////////////////////////////////////////// SET_TEXT_DRAW_BEFORE_FADE TRUE SET_TEXT_JUSTIFY ON SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_WRAPX 1000.0 SET_TEXT_PROPORTIONAL ON // was on SET_TEXT_CENTRE ON SET_TEXT_BACKGROUND OFF SET_TEXT_SCALE 0.12 1.05 SET_TEXT_DROPSHADOW 0 0 0 0 255 SET_TEXT_FONT FONT_SPACEAGE RETURN///////////////////////////////////////////////////////////////////////////////////// boat_small_backend_text://////////////////////////////////////////////////////////////////////// SET_TEXT_JUSTIFY ON SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_WRAPX 1000.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_CENTRE OFF SET_TEXT_BACKGROUND OFF SET_TEXT_SCALE 0.52 1.45 SET_TEXT_DROPSHADOW 2 0 0 0 255 SET_TEXT_FONT FONT_SPACEAGE RETURN///////////////////////////////////////////////////////////////////////////////////// boat_which_course_text://///////////////////////////////////////////////////////////////////// //SET_TEXT_DRAW_BEFORE_FADE TRUE SET_TEXT_JUSTIFY ON SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_WRAPX 1000.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_CENTRE ON SET_TEXT_BACKGROUND OFF SET_TEXT_SCALE 0.8 2.6 SET_TEXT_DROPSHADOW 2 0 0 0 255 RETURN///////////////////////////////////////////////////////////////////////////////////// boat_test_name_text://///////////////////////////////////////////////////////////////////// //SET_TEXT_DRAW_BEFORE_FADE TRUE SET_TEXT_JUSTIFY ON SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_WRAPX 1000.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_CENTRE ON SET_TEXT_BACKGROUND OFF SET_TEXT_SCALE 0.3 3.1 SET_TEXT_FONT FONT_HEADING RETURN///////////////////////////////////////////////////////////////////////////////////// boat_ms_onscreen_text:///////////////////////////////////////////////////////////////// SET_TEXT_DRAW_BEFORE_FADE TRUE SET_TEXT_JUSTIFY ON SET_TEXT_WRAPX 1000.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_CENTRE ON SET_TEXT_BACKGROUND OFF SET_TEXT_SCALE 1.0 3.8 SET_TEXT_DROPSHADOW 2 0 0 0 255 SET_TEXT_FONT FONT_SPACEAGE RETURN///////////////////////////////////////////////////////////////////////////////////// boat_stopsetup:///////////////////////////////////////////////////////////////////// SET_PLAYER_CONTROL player1 OFF // new DELETE_CHAR instructor_captain DELETE_CHAR boat_blocker1driver DELETE_CHAR boat_blocker2driver DELETE_CAR boat_blocker1 DELETE_CAR boat_blocker2 DELETE_CAR boat_blocker3 DELETE_CHAR boat_blocker3driver CLEAR_ONSCREEN_TIMER boat_timer CREATE_CAR tropic -2100.8364 2247.8623 0.0 boat_blocker1 SET_CAR_HEADING boat_blocker1 122.0 CREATE_CHAR_INSIDE_CAR boat_blocker1 PEDTYPE_MISSION1 omoboat boat_blocker1driver CREATE_CAR marquis -1996.1267 2125.1694 0.0 boat_blocker2 SET_CAR_HEADING boat_blocker2 160.0 CREATE_CHAR_INSIDE_CAR boat_blocker2 PEDTYPE_MISSION1 omoboat boat_blocker2driver CREATE_CAR tropic -2251.1707 2129.2910 0.0 boat_blocker3 SET_CAR_HEADING boat_blocker3 182.0 CREATE_CHAR_INSIDE_CAR boat_blocker3 PEDTYPE_MISSION1 omoboat boat_blocker3driver WARP_CHAR_INTO_CAR scplayer instructor_boat LOCK_CAR_DOORS instructor_boat CARLOCK_LOCKED_PLAYER_INSIDE WAIT 1000 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER // WRITE_DEBUG pish IF boat_mission_selection = 4 LOAD_SCENE -2318.0493 2312.3018 10.0 WAIT 0 ENDIF IF NOT IS_CAR_DEAD instructor_boat GET_CAR_COORDINATES instructor_boat clearX clearY clearZ CLEAR_AREA clearX clearY clearZ 1000.0 TRUE // WRITE_DEBUG x ENDIF DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //RESTORE_CAMERA_JUMPCUT //SET_CAMERA_BEHIND_PLAYER //SET_PLAYER_CONTROL player1 on IF NOT IS_CAR_DEAD instructor_boat GET_CAR_COORDINATES instructor_boat clearX clearY clearZ CLEAR_AREA clearX clearY clearZ 1000.0 TRUE //WRITE_DEBUG y ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// boat_startsetup://////////////////////////////////////////////////////////////////// DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF boat_mission_selection = 16 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 ELSE SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 ENDIF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_COUNTRYSIDE SET_AREA_VISIBLE 0 DELETE_CHAR instructor_captain DELETE_CHAR boat_blocker1driver DELETE_CHAR boat_blocker2driver DELETE_CAR boat_blocker1 DELETE_CAR boat_blocker2 DELETE_CAR boat_blocker3 DELETE_CHAR boat_blocker3driver RETURN///////////////////////////////////////////////////////////////////////////////////// blip_management: CHANGE_BLIP_SCALE buoyls_b 1 CHANGE_BLIP_SCALE buoyrs_b 1 CHANGE_BLIP_COLOUR buoyl_b YELLOW CHANGE_BLIP_COLOUR buoyr_b YELLOW CHANGE_BLIP_COLOUR buoyls_b YELLOW CHANGE_BLIP_COLOUR buoyrs_b YELLOW RETURN boat_createbuoys: IF boat_mission_selection = 1 buoy_counter = 0 WHILE buoy_counter < 8 //bouys - sic. It's written incorrectly in object.dat CREATE_OBJECT_NO_OFFSET bouy 0.0 0.0 100.0 boat_buoys[buoy_counter] SET_OBJECT_COLLISION boat_buoys[buoy_counter] TRUE SET_OBJECT_DYNAMIC boat_buoys[buoy_counter] TRUE buoy_counter ++ ENDWHILE IF NOT IS_CAR_DEAD instructor_boat PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[0] instructor_boat 20.0 180.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[1] instructor_boat -20.0 180.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[2] instructor_boat 20.0 190.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[3] instructor_boat -20.0 190.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[4] instructor_boat 20.0 200.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[5] instructor_boat -20.0 200.0 0.0 // Parallel to boat start PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[6] instructor_boat 20.0 210.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[7] instructor_boat -20.0 210.0 0.0 /* PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[8] instructor_boat -10.0 210.0 0.0 // Perpendicular to boat start PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[9] instructor_boat 10.0 210.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[10] instructor_boat -20.0 210.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[11] instructor_boat 20.0 210.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[12] instructor_boat 0.0 210.0 0.0 */ ENDIF ENDIF IF boat_mission_selection = 2 buoy_counter = 0 WHILE buoy_counter < 16 //bouys - sic. It's written incorrectly in object.dat CREATE_OBJECT_NO_OFFSET bouy 0.0 0.0 100.0 boat_buoys[buoy_counter] SET_OBJECT_COLLISION boat_buoys[buoy_counter] TRUE SET_OBJECT_DYNAMIC boat_buoys[buoy_counter] TRUE buoy_counter ++ ENDWHILE IF NOT IS_CAR_DEAD instructor_boat PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[0] instructor_boat 0.0 80.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[1] instructor_boat 15.0 70.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[2] instructor_boat 55.0 145.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[3] instructor_boat 70.0 130.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[4] instructor_boat 150.0 110.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[5] instructor_boat 160.0 130.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[6] instructor_boat 250.0 80.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[7] instructor_boat 240.0 60.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[8] instructor_boat 300.0 00.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[9] instructor_boat 290.0 -20.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[10] instructor_boat 380.0 -150.0 0.0 //380.0 -150.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[11] instructor_boat 360.0 -150.0 0.0//380.0 -155.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[12] instructor_boat 320.0 -300.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[13] instructor_boat 340.0 -325.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[14] instructor_boat 230.0 -280.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[15] instructor_boat 210.0 -300.0 0.0 ENDIF ENDIF IF boat_mission_selection = 3 buoy_counter = 0 WHILE buoy_counter < 28 //bouys - sic. It's written incorrectly in object.dat CREATE_OBJECT_NO_OFFSET bouy 0.0 0.0 100.0 boat_buoys[buoy_counter] SET_OBJECT_COLLISION boat_buoys[buoy_counter] TRUE SET_OBJECT_DYNAMIC boat_buoys[buoy_counter] TRUE buoy_counter ++ ENDWHILE IF NOT IS_CAR_DEAD instructor_boat PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[0] instructor_boat 0.0 100.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[1] instructor_boat 15.0 100.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[2] instructor_boat 40.0 200.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[3] instructor_boat 55.0 190.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[4] instructor_boat 0.0 300.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[5] instructor_boat -15.0 290.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[6] instructor_boat 140.0 320.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[7] instructor_boat 140.0 335.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[8] instructor_boat 220.0 370.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[9] instructor_boat 210.0 385.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[10] instructor_boat 210.0 470.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[11] instructor_boat 195.0 460.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[12] instructor_boat 195.0 570.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[13] instructor_boat 180.0 570.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[14] instructor_boat 95.0 570.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[15] instructor_boat 95.0 585.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[16] instructor_boat 15.0 500.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[17] instructor_boat 0.0 515.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[18] instructor_boat -90.0 585.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[19] instructor_boat -90.0 570.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[20] instructor_boat -160.0 500.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[21] instructor_boat -150.0 485.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[22] instructor_boat -240.0 430.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[23] instructor_boat -230.0 415.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[24] instructor_boat -140.0 330.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[25] instructor_boat -140.0 315.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[26] instructor_boat -30.0 220.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[27] instructor_boat -40.0 205.0 0.0 ENDIF ENDIF IF boat_mission_selection = 4 buoy_counter = 0 WHILE buoy_counter < 20 //bouys - sic. It's written incorrectly in object.dat CREATE_OBJECT_NO_OFFSET bouy 0.0 0.0 100.0 boat_buoys[buoy_counter] SET_OBJECT_COLLISION boat_buoys[buoy_counter] TRUE SET_OBJECT_DYNAMIC boat_buoys[buoy_counter] TRUE buoy_counter ++ ENDWHILE ramp_counter = 0 WHILE ramp_counter < 1 CREATE_OBJECT_NO_OFFSET waterjumpx2 20.0 20.0 150.0 boat_ramps[ramp_counter] ramp_counter ++ ENDWHILE IF NOT IS_CAR_DEAD instructor_boat PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[0] instructor_boat 91.0 480.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[1] instructor_boat 109.0 480.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_ramps[0] instructor_boat 100.0 480.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[2] instructor_boat 75.0 500.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[3] instructor_boat 125.0 500.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[4] instructor_boat 75.0 510.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[5] instructor_boat 125.0 510.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[6] instructor_boat 75.0 520.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[7] instructor_boat 125.0 520.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[8] instructor_boat 75.0 530.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[9] instructor_boat 125.0 530.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[10] instructor_boat 75.0 540.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[11] instructor_boat 125.0 540.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[12] instructor_boat 75.0 550.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[13] instructor_boat 125.0 550.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[14] instructor_boat 75.0 560.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[15] instructor_boat 125.0 560.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[16] instructor_boat 75.0 570.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[17] instructor_boat 125.0 570.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[18] instructor_boat 75.0 580.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[19] instructor_boat 125.0 580.0 0.0 ENDIF /* WHILE ramp_counter < 1 CREATE_OBJECT_NO_OFFSET waterjumpx2 20.0 20.0 150.0 boat_ramps[ramp_counter] ramp_counter ++ ENDWHILE IF NOT IS_CAR_DEAD instructor_boat PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[0] instructor_boat -9.0 180.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[1] instructor_boat 9.0 180.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_ramps[0] instructor_boat 0.0 180.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[2] instructor_boat -25.0 200.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[3] instructor_boat 25.0 200.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[4] instructor_boat -25.0 210.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[5] instructor_boat 25.0 210.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[6] instructor_boat -25.0 220.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[7] instructor_boat 25.0 220.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[8] instructor_boat -25.0 230.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[9] instructor_boat 25.0 230.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[10] instructor_boat -25.0 240.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[11] instructor_boat 25.0 240.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[12] instructor_boat -25.0 250.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[13] instructor_boat 25.0 250.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[14] instructor_boat -25.0 260.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[15] instructor_boat 25.0 260.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[16] instructor_boat -25.0 270.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[17] instructor_boat 25.0 270.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[18] instructor_boat -25.0 280.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[19] instructor_boat 25.0 280.0 0.0 ENDIF */ ENDIF IF boat_mission_selection = 5 //friday buoy_counter = 0 WHILE buoy_counter < 44//50 //bouys - sic. It's written incorrectly in object.dat CREATE_OBJECT_NO_OFFSET bouy 0.0 0.0 100.0 boat_buoys[buoy_counter] SET_OBJECT_COLLISION boat_buoys[buoy_counter] TRUE SET_OBJECT_DYNAMIC boat_buoys[buoy_counter] TRUE buoy_counter ++ ENDWHILE ramp_counter = 0 WHILE ramp_counter < 3 CREATE_OBJECT_NO_OFFSET waterjumpx2 20.0 20.0 150.0 boat_ramps[ramp_counter] ramp_counter ++ ENDWHILE IF NOT IS_CAR_DEAD instructor_boat PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[0] instructor_boat 25.0 100.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[1] instructor_boat 10.0 100.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[2] instructor_boat -30.0 170.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[3] instructor_boat -50.0 160.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[4] instructor_boat -100.0 190.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[5] instructor_boat -120.0 170.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[6] instructor_boat -170.0 260.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[7] instructor_boat -188.0 260.0 0.0 // squalo starts on water pos. //PLACE_OBJECT_RELATIVE_TO_CAR boat_ramps[0] instructor_boat -179.0 360.0 0.0 //squalo starts on beach PLACE_OBJECT_RELATIVE_TO_CAR boat_ramps[0] instructor_boat -179.0 360.0 -6.509 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[8] instructor_boat -170.0 360.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[9] instructor_boat -188.0 360.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[10] instructor_boat -180.0 500.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[11] instructor_boat -195.0 500.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[12] instructor_boat -50.0 600.0 0.0 PLACE_OBJECT_RELATIVE_TO_CAR boat_buoys[13] instructor_boat -30.0 600.0 0.0 SET_OBJECT_COORDINATES boat_ramps[1] -2682.1592 1946.4122 0.9 SET_OBJECT_HEADING boat_ramps[1] 180.0 SET_OBJECT_COORDINATES boat_buoys[14] -2689.5728 1944.8639 0.0 SET_OBJECT_COORDINATES boat_buoys[15] -2674.3542 1944.6071 0.0 SET_OBJECT_COORDINATES boat_ramps[2] -2681.7461 1608.7939 0.9 SET_OBJECT_HEADING boat_ramps[2] 180.0 SET_OBJECT_COORDINATES boat_buoys[16] -2689.5728 1607.7939 0.0 SET_OBJECT_COORDINATES boat_buoys[17] -2674.3542 1607.7939 0.0 SET_OBJECT_COORDINATES boat_buoys[18] -2689.2698 1533.2819 0.0 SET_OBJECT_COORDINATES boat_buoys[19] -2674.6404 1530.1200 0.0 SET_OBJECT_COORDINATES boat_buoys[20] -2553.7000 1494.3916 0.0 SET_OBJECT_COORDINATES boat_buoys[21] -2550.7422 1481.4166 0.0 SET_OBJECT_COORDINATES boat_buoys[22] -2453.7000 1494.3916 0.0 SET_OBJECT_COORDINATES boat_buoys[23] -2450.7422 1481.4166 0.0 SET_OBJECT_COORDINATES boat_buoys[24] -2353.7000 1474.3916 0.0 SET_OBJECT_COORDINATES boat_buoys[25] -2350.7422 1461.4166 0.0 SET_OBJECT_COORDINATES boat_buoys[26] -2284.2417 1547.5811 0.0 SET_OBJECT_COORDINATES boat_buoys[27] -2270.8926 1550.7651 0.0 SET_OBJECT_COORDINATES boat_buoys[28] -2334.2417 1647.5811 0.0 SET_OBJECT_COORDINATES boat_buoys[29] -2320.8926 1650.7651 0.0 SET_OBJECT_COORDINATES boat_buoys[30] -2284.2417 1747.5811 0.0 SET_OBJECT_COORDINATES boat_buoys[31] -2270.8926 1750.7651 0.0 SET_OBJECT_COORDINATES boat_buoys[32] -2139.3936 1821.2628 0.0 SET_OBJECT_COORDINATES boat_buoys[33] -2134.5808 1808.7853 0.0 SET_OBJECT_COORDINATES boat_buoys[34] -2039.3936 1761.2628 0.0 SET_OBJECT_COORDINATES boat_buoys[35] -2034.5808 1748.7853 0.0 SET_OBJECT_COORDINATES boat_buoys[36] -1939.3936 1841.2628 0.0 SET_OBJECT_COORDINATES boat_buoys[37] -1934.5808 1828.7853 0.0 SET_OBJECT_COORDINATES boat_buoys[38] -1809.3936 1801.2628 0.0 SET_OBJECT_COORDINATES boat_buoys[39] -1804.5808 1788.7853 0.0 SET_OBJECT_COORDINATES boat_buoys[40] -1831.8530 1909.1050 0.0 SET_OBJECT_COORDINATES boat_buoys[41] -1847.2532 1906.1124 0.0 SET_OBJECT_COORDINATES boat_buoys[42] -1879.0018 2073.6008 0.0 SET_OBJECT_COORDINATES boat_buoys[43] -1893.7864 2068.1663 0.0 //New seg //SET_OBJECT_COORDINATES boat_buoys[44] -1874.8081 2140.4998 0.0 // SET_OBJECT_COORDINATES boat_buoys[45] -1887.9290 2150.6289 0.0 // SET_OBJECT_COORDINATES boat_buoys[46] -1927.5781 2281.2673 20.0 // SET_OBJECT_COORDINATES boat_buoys[47] -1937.5028 2282.2891 20.0 // SET_OBJECT_COORDINATES boat_buoys[48] -1975.4021 2302.5916 22.0 // SET_OBJECT_COORDINATES boat_buoys[49] -1970.9758 2310.3611 22.0 ENDIF ENDIF RETURN // // boat_deletingbuoys: buoy_counter = 0 WHILE buoy_counter < 50 DELETE_OBJECT boat_buoys[buoy_counter] DELETE_OBJECT boat_ramps[buoy_counter] buoy_counter ++ ENDWHILE RETURN boat_getlanguage: //boat_language = 0 // set to English by default GET_CURRENT_LANGUAGE boat_language RETURN // Mission boat failed mission_boat_failed: LOAD_SCENE_IN_DIRECTION -2185.3347 2410.4092 3.9752 122.2585 CLEAR_HELP CLEAR_PRINTS SET_CHAR_HEADING scplayer boat_playerstarth SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT CHECKPOINT_SAVE_ODDJOB 2 RETURN // mission boat passed mission_boat_passed: WRITE_LOG "UNLOCK_ACHIEVEMENT SCHOOLS_OUT" IF boat_passed_once = 0 CLEAR_MISSION_AUDIO 3 PRINT_BIG BOAT_P2 5000 1 PRINT BOAT_P1 5000 1 PLAY_MISSION_PASSED_TUNE 2 //ADD_SCORE player1 30000 CLEAR_WANTED_LEVEL player1 //PLAY_MISSION_PASSED_TUNE 1 PLAYER_MADE_PROGRESS 1 REGISTER_ODDJOB_MISSION_PASSED boat_passed_once = 1 ENDIF /* IF boat_gold_rewardgiven = 0 IF boat_accelerate_goldachieved = 1 IF boat_simplecircuit_goldachieved = 1 IF boat_slalom_goldachieved = 1 IF boat_skijump_goldachieved = 1 IF boat_hover_goldachieved = 1 boat_gold_rewardgiven = 1 boat_silver_rewardgiven = 99 boat_bronze_rewardgiven = 99 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF boat_silver_rewardgiven = 0 IF boat_accelerate_silverachieved = 1 IF boat_simplecircuit_silverachieved = 1 IF boat_slalom_silverachieved = 1 IF boat_skijump_silverachieved = 1 IF boat_hover_silverachieved = 1 boat_silver_rewardgiven = 1 boat_bronze_rewardgiven = 99 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF boat_bronze_rewardgiven = 0 IF boat_accelerate_bronzeachieved = 1 IF boat_simplecircuit_bronzeachieved = 1 IF boat_slalom_bronzeachieved = 1 IF boat_skijump_bronzeachieved = 1 IF boat_hover_bronzeachieved = 1 boat_bronze_rewardgiven = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF boat_gold_rewardgiven = 1 WRITE_DEBUG goldinalltests boat_gold_rewardgiven = 2 ENDIF IF boat_silver_rewardgiven = 1 WRITE_DEBUG silverinalltests boat_silver_rewardgiven = 2 ENDIF IF boat_bronze_rewardgiven = 1 WRITE_DEBUG bronzeinalltests boat_bronze_rewardgiven = 2 ENDIF */ RETURN // mission cleanup mission_cleanup_boat: REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_ENABLE_HELI_AUDIO REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_AWARD_TRACK_STOP SET_PLAYER_CAN_DO_DRIVE_BY player1 TRUE SET_CHAR_DROWNS_IN_WATER scplayer TRUE CLEAR_MISSION_AUDIO 3 //REMOVE_BLIP //CLEAR_ONSCREEN_COUNTER //CLEAR_ONSCREEN_TIMER DISPLAY_HUD TRUE DISPLAY_RADAR TRUE DISPLAY_CAR_NAMES TRUE DISPLAY_ZONE_NAMES TRUE //SET_DEATHARREST_STATE ON CLEAR_ONSCREEN_TIMER boat_timer //REMOVE_BLIP boat_tvb REMOVE_BLIP buoyl_b REMOVE_BLIP buoyr_b REMOVE_BLIP buoyls_b REMOVE_BLIP buoyrs_b MARK_MODEL_AS_NO_LONGER_NEEDED omoboat MARK_CHAR_AS_NO_LONGER_NEEDED instructor_captain MARK_CHAR_AS_NO_LONGER_NEEDED boat_captain DELETE_CAR instructor_boat DELETE_CAR instructor_heli DELETE_CHAR boat_blocker1driver DELETE_CHAR boat_blocker2driver DELETE_CAR boat_blocker1 DELETE_CAR boat_blocker2 DELETE_CAR boat_blocker3 DELETE_CHAR boat_blocker3driver MARK_MODEL_AS_NO_LONGER_NEEDED DINGHY MARK_MODEL_AS_NO_LONGER_NEEDED POLMAV MARK_MODEL_AS_NO_LONGER_NEEDED COASTG MARK_MODEL_AS_NO_LONGER_NEEDED MARQUIS MARK_MODEL_AS_NO_LONGER_NEEDED TROPIC MARK_MODEL_AS_NO_LONGER_NEEDED vortex RELEASE_WEATHER //SET_CHAR_HEADING scplayer boat_playerstarth //SET_CAMERA_BEHIND_PLAYER //RESTORE_CAMERA_JUMPCUT //SET_PLAYER_CONTROL player1 ON GET_GAME_TIMER timer_mobile_start IF boat_gold_rewardgiven = 0 IF boat_accelerate_goldachieved = 1 IF boat_simplecircuit_goldachieved = 1 IF boat_slalom_goldachieved = 1 IF boat_skijump_goldachieved = 1 IF boat_hover_goldachieved = 1 boat_gold_rewardgiven = 1 boat_silver_rewardgiven = 99 boat_bronze_rewardgiven = 99 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF boat_silver_rewardgiven = 0 IF boat_accelerate_silverachieved = 1 IF boat_simplecircuit_silverachieved = 1 IF boat_slalom_silverachieved = 1 IF boat_skijump_silverachieved = 1 IF boat_hover_silverachieved = 1 boat_silver_rewardgiven = 1 boat_bronze_rewardgiven = 99 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF boat_bronze_rewardgiven = 0 IF boat_accelerate_bronzeachieved = 1 IF boat_simplecircuit_bronzeachieved = 1 IF boat_slalom_bronzeachieved = 1 IF boat_skijump_bronzeachieved = 1 IF boat_hover_bronzeachieved = 1 boat_bronze_rewardgiven = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF boat_gold_rewardgiven = 1 //WRITE_DEBUG goldinalltests SWITCH_CAR_GENERATOR boat_gold_generator 101 SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR boat_gold_generator TRUE SWITCH_CAR_GENERATOR boat_silver_generator 101 SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR boat_silver_generator TRUE SWITCH_CAR_GENERATOR boat_bronze_generator 101 SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR boat_bronze_generator TRUE boat_gold_rewardgiven = 2 ENDIF IF boat_silver_rewardgiven = 1 //WRITE_DEBUG silverinalltests SWITCH_CAR_GENERATOR boat_silver_generator 101 SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR boat_silver_generator TRUE SWITCH_CAR_GENERATOR boat_bronze_generator 101 SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR boat_bronze_generator TRUE boat_silver_rewardgiven = 2 ENDIF IF boat_bronze_rewardgiven = 1 // WRITE_DEBUG bronzeinalltests SWITCH_CAR_GENERATOR boat_bronze_generator 101 SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR boat_bronze_generator TRUE boat_bronze_rewardgiven = 2 ENDIF flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN } /* [BOAT_T1:BOAT] time: [BOAT_A:BOAT] basic seamanship [BOAT_B:BOAT] plot a course [BOAT_C:BOAT] fresh slalom [BOAT_C1:BOAT] ~s~Navigate through the centre of the each pair of buoys in as quick a time as possible. [BOAT_D:BOAT] flying fish [BOAT_D1:BOAT] ~s~ Power towards the jump ramp and land within the parallel buoys to register a valid jump. [BOAT_E:BOAT] land, sea and air [BOAT_3:BOAT] ~s~Press ~T~ to return to the Boat School.~N~Press ~X~ to retry. [BOAT_7:BOAT] Finish Time: ~1~:~1~s [BOAT_9:BOAT] Damage Penalty: ~1~:~1~s [BOAT_10:BOAT] Overall Time: ~1~:~1~s [BOAT_11:BOAT] Jump Distance: ~1~:~1~m [BOAT_12:BOAT] Jump Invalid! [BOAT_31:BOAT] ~y~Checkpoint [BOAT_32:BOAT] ~s~In stopping region [BOAT_33:BOAT] ~s~Finished! [BOAT_34:BOAT] ~r~Time over! [BOAT_46:BOAT] new record! [BOAT_47:BOAT] new certificate awarded! [BOAT_48:BOAT] ~s~Press ~X~ to continue. [BOAT_52:BOAT] Navigate [BOAT_53:BOAT] Exit [BOAT_54:BOAT] Start [BOAT_55:BOAT] GOLD [BOAT_56:BOAT] SILVER [BOAT_57:BOAT] BRONZE [BOAT_58:BOAT] record time ~1~:~1~s [BOAT_59:BOAT] finish under ~1~.~1~s to qualify [BOAT_60:BOAT] longest jump ~1~ meters [BOAT_61:BOAT] jump over ~1~ meters to qualify [BOAT_62:BOAT] finish under ~1~ seconds to qualify [BOAT_63:BOAT] finish under ~1~ minutes to qualify [BOAT_64:BOAT] NO AWARD [BOAT_72] ~<~~>~ */ /* VAR_INT boat_which_missions_are_open_flag boat_which_missions_are_open_flag = 1 VAR_INT boat_accelerate_best_score VAR_INT boat_simplecircuit_best_score VAR_INT boat_slalom_best_score VAR_INT boat_skijump_best_score VAR_INT boat_hover_best_score boat_accelerate_best_score = 60000 boat_simplecircuit_best_score = 80000 boat_slalom_best_score = 180000 boat_skijump_best_score = 10 boat_hover_best_score = 200000 VAR_INT boat_passed_once VAR_INT pimp_passed_once VAR_INT courierLA_passed_once VAR_INT courierLV_passed_once VAR_INT courierSF_passed_once */ MISSION_START // ------------------------------------------------------------------------------------------------ // Bike School: Las Vegas { SCRIPT_NAME bskool CHECKPOINT_SAVE_ODDJOB 2 // Mission start stuff GOSUB mission_start_bskool IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_failed_bskool ENDIF GOSUB mission_cleanup_bskool MISSION_END // ------------------------------------------------------------------------------------------------ // Initialize Mission... mission_start_bskool: CLEAR_THIS_PRINT M_FAIL IF flag_bikeschool_passed_1stime = 0 REGISTER_MISSION_GIVEN ENDIF flag_player_on_mission = 1 LOAD_MISSION_TEXT BS SET_FADING_COLOUR 0 0 0 WAIT 0 // ---- Impossible 'IF'... IF flag_player_on_mission = 0 CREATE_CAR BF400 car_posx car_posy perfect_positionz instructor_bike CREATE_CHAR_INSIDE_CAR instructor_bike PEDTYPE_CIVFEMALE WMYMECH bs_instructor CREATE_OBJECT_NO_OFFSET trafficcone 0.0 0.0 100.0 trafficcones[20] CREATE_OBJECT_NO_OFFSET trafficcone 0.0 0.0 100.0 trafficcones[30] CREATE_OBJECT landjump2 car_posx car_posy perfect_positionz bs_ramp ENDIF // ------------------------------------------------------------------------------------------------ // Set Flags & Vars //Boat School- all gold, all silver, all bronze reward vars LVAR_INT playback_flag /*pause_flag*/ playback_selection LVAR_INT bs_blip_flag bs_last_played LVAR_INT instructor_bike instructor_bike_heading_int instructor_bike_health total_instructor_bike_health LVAR_FLOAT instructor_bike_heading instructor_bike_speed instructor_bike_follow_heading LVAR_FLOAT instructor_bike_roll LVAR_INT instructor_bike_roll_score instructor_bike_roll_plus_minus LVAR_INT instructor_bike_dead_flag LVAR_INT bs_instructor LVAR_INT bs_wanted sfx_video LVAR_INT bs_r bs_g bs_b bs_a LVAR_INT bs_ramp LVAR_INT bs_control_flag bs_direction_flag LVAR_INT bs_print_top_scores_flag LVAR_INT bs_checkpoint LVAR_INT test_timer pausing_flag LVAR_INT bs_fade_flag bs_alpha LVAR_INT bs_which_medal_displayed bs_which_score_displayed LVAR_INT bs_old_score LVAR_INT bs_timer_diff bs_timer_end bs_timer_start LVAR_FLOAT vec_x vec_y vec_z LVAR_INT nPrintHelp nPrintHelp = 0 LVAR_FLOAT fTitleX LVAR_FLOAT fTitleY LVAR_FLOAT fStringX LVAR_FLOAT fStringY fTitleX = 50.0 fTitleY = 60.0 fStringX = 50.0 fStringY = 100.0 // To be added to initial.sc playback_flag = 0 ///needs to be set to 0 test_timer = 0 pausing_flag = 0 bs_control_flag = 0 bs_fade_flag = 0 bs_alpha = 0 bs_which_medal_displayed = 0 bs_which_score_displayed = 0 bs_old_score = 0 sfx_video = 0 vec_x = 0.0 vec_y = 0.0 vec_z = 0.0 IF bs_open_tests = 0 bs_open_tests = 1 ENDIF mission_selection = 1 //needs to be set to 1 start_coordsx = 1130.44 //Set my own starting position ********************** start_coordsy = 1341.0 noticeboard_x = 1173.9303 // Set my own noticeboard ********************** noticeboard_y = 1351.0663 noticeboard_z = 9.9219 SET_CHAR_COORDINATES scplayer 1171.5206 1351.1826 9.9219 // ------------------------------------------------------------------------------------------------ // Request Models... REQUEST_MODEL BF400 REQUEST_MODEL FCR900 REQUEST_MODEL PCJ600 REQUEST_MODEL trafficcone REQUEST_MODEL landjump2 REQUEST_MODEL NRG500 REQUEST_MODEL SANCHEZ REQUEST_MODEL WMYMECH WHILE NOT HAS_MODEL_LOADED BF400 OR NOT HAS_MODEL_LOADED FCR900 OR NOT HAS_MODEL_LOADED PCJ600 OR NOT HAS_MODEL_LOADED trafficcone OR NOT HAS_MODEL_LOADED landjump2 WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED SANCHEZ OR NOT HAS_MODEL_LOADED WMYMECH OR NOT HAS_MODEL_LOADED NRG500 WAIT 0 ENDWHILE // ------------------------------------------------------------------------------------------------ // Load GUI Art... LOAD_TEXTURE_DICTIONARY LD_drv LOAD_SPRITE 1 bronze_bike LOAD_SPRITE 2 silver_bike LOAD_SPRITE 3 gold_bike LOAD_SPRITE 4 ribb LOAD_SPRITE 5 tvcorn LOAD_SPRITE 6 naward LOAD_SPRITE 7 ribbw LOAD_SPRITE 8 blkdot LOAD_SPRITE 9 tvbase // ------------------------------------------------------------------------------------------------ // Pre Selection Stuff... //DO_FADE 500 FADE_IN //WHILE GET_FADING_STATUS //WAIT 0 //ENDWHILE SET_PLAYER_CONTROL player1 ON //PRINT_NOW ( BS_X_1 ) 3000 1 //Walk into the locate to access the television. //ADD_BLIP_FOR_COORD noticeboard_x noticeboard_y noticeboard_z bs_blip_flag DISPLAY_HUD FALSE GOTO bs_noticeboard_setup // ------------------------------------------------------------------------------------------------ // Setup The Noticeboard... bs_noticeboard_setup: //clearing old shit away SET_PLAYER_CONTROL player1 OFF CLEAR_HELP CLEAR_PRINTS // SET_CAR_DENSITY_MULTIPLIER 0.0 // SET_PED_DENSITY_MULTIPLIER 0.0 STORE_WANTED_LEVEL player1 bs_wanted CLEAR_WANTED_LEVEL player1 //preparing for noticeboard GOSUB bs_setting_up_variables playback_flag = 0 bs_control_flag = 0 USE_TEXT_COMMANDS TRUE bs_alpha = 255 bs_fade_flag = 2 IF bs_open_tests < 7 mission_selection = bs_last_played ENDIF // ------------------------------------------------------------------------------------------------ // Draw Mission Select GUI... DO_FADE 1000 FADE_IN GOSUB bs_draw_tv_screen DISPLAY_RADAR FALSE // ------------------------------------------------------------------------------------------------ // Using Mission Select GUI... bs_mission_selection_loop: WAIT 0 //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_TITLE_BACKGROUND 0 0 0 0 0 0.0 boat_72 GOSUB bs_draw_tv_screen IF sfx_video = 0 LOAD_MISSION_AUDIO 3 SOUND_VIDEOTAPE_NOISE sfx_video = 1 ENDIF IF sfx_video = 1 IF HAS_MISSION_AUDIO_LOADED 3 sfx_video = 2 ENDIF ENDIF IF sfx_video = 2 PLAY_MISSION_AUDIO 3 sfx_video = 3 ENDIF IF bs_control_flag = 0 GET_POSITION_OF_ANALOGUE_STICKS PAD1 LStickX LStickY RStickX RStickY IF LStickX < -100 OR IS_BUTTON_PRESSED PAD1 DPADLEFT OR IS_WIDGET_RELEASED WIDGET_SCHOOL_LEFT bs_last_played = bs_last_played - 1 mission_selection = mission_selection - 1 IF bs_open_tests > 1 IF playback_flag < 4 playback_flag = 3 //overriding playback ENDIF ENDIF ENDIF IF LStickX > 100 OR IS_BUTTON_PRESSED PAD1 DPADRIGHT OR IS_WIDGET_RELEASED WIDGET_SCHOOL_RIGHT bs_last_played = bs_last_played + 1 mission_selection = mission_selection + 1 IF bs_open_tests > 1 IF playback_flag < 4 playback_flag = 3 //overriding playback ENDIF ENDIF ENDIF IF mission_selection < 1 mission_selection = bs_open_tests bs_last_played = bs_open_tests ENDIF IF mission_selection > bs_open_tests bs_last_played = 1 mission_selection = 1 ENDIF WHILE LStickX < -100 OR IS_BUTTON_PRESSED PAD1 DPADLEFT IS_WIDGET_RELEASED WIDGET_SCHOOL_LEFT IS_WIDGET_RELEASED WIDGET_SCHOOL_RIGHT IS_WIDGET_RELEASED WIDGET_SCHOOL_START IS_WIDGET_RELEASED WIDGET_SCHOOL_EXIT IS_WIDGET_RELEASED WIDGET_SCHOOL_TITLE_BACKGROUND WAIT 0 GOSUB bs_draw_tv_screen GET_POSITION_OF_ANALOGUE_STICKS PAD1 LStickX LStickY RStickX RStickY ENDWHILE WHILE LStickX > 100 OR IS_BUTTON_PRESSED PAD1 DPADRIGHT IS_WIDGET_RELEASED WIDGET_SCHOOL_LEFT IS_WIDGET_RELEASED WIDGET_SCHOOL_RIGHT IS_WIDGET_RELEASED WIDGET_SCHOOL_START IS_WIDGET_RELEASED WIDGET_SCHOOL_EXIT IS_WIDGET_RELEASED WIDGET_SCHOOL_TITLE_BACKGROUND WAIT 0 GOSUB bs_draw_tv_screen GET_POSITION_OF_ANALOGUE_STICKS PAD1 LStickX LStickY RStickX RStickY ENDWHILE //triggering mission IF IS_WIDGET_RELEASED WIDGET_SCHOOL_START IF playback_flag < 4 playback_flag = 3 ENDIF CLEAR_MISSION_AUDIO 3 sfx_video = 0 GOTO bs_start_mission ENDIF ENDIF //opening all the missions IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Q bs_open_tests = 6 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_5 bs_open_tests = 6 bs_wheelie_best_score = 100 bs_stoppie_best_score = 100 bs_the360_best_score = 100 bs_the180_best_score = 100 bs_jumpstop_best_score = 100 bs_jumpstoppie_best_score = 100 ENDIF IF NOT IS_XBOX_VERSION // HACKED - mobile version test IF bs_wheelie_best_score > 69 AND bs_the360_best_score > 69 AND bs_the180_best_score > 69 AND bs_jumpstop_best_score > 69 AND bs_stoppie_best_score > 69 AND bs_jumpstoppie_best_score > 69 bs_passed = 1 ENDIF ELSE IF bs_wheelie_best_score > 69 AND bs_the360_best_score > 69 AND bs_the180_best_score > 69 AND bs_jumpstop_best_score > 69 bs_passed = 1 ENDIF ENDIF IF flag_bikeschool_passed_1stime = 0 IF bs_passed = 1 GOSUB bs_mini_cleanup GOTO mission_passed_bs ENDIF ENDIF //quitting the driving school IF IS_WIDGET_RELEASED WIDGET_SCHOOL_EXIT CLEAR_MISSION_AUDIO 3 sfx_video = 0 GOTO mission_failed_bskool ENDIF GOSUB bs_watching_demo GOTO bs_mission_selection_loop // ------------------------------------------------------------------------------------------------ // Start the Tests... bs_start_mission: DO_FADE 150 FADE_OUT WHILE GET_FADING_STATUS GOSUB bs_draw_tv_screen WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD instructor_bike STOP_PLAYBACK_RECORDED_CAR instructor_bike ENDIF DELETE_CAR instructor_bike DELETE_CHAR bs_instructor CLEAR_AREA noticeboard_x noticeboard_y noticeboard_z 300.0 TRUE CLEAR_ONSCREEN_TIMER car_timer FREEZE_ONSCREEN_TIMER FALSE // DELETE_CAR dummy_car1 // DELETE_CAR dummy_car2 DELETE_CAR instructor_bike // DELETE_OBJECT ramp1 // DELETE_OBJECT ramp2 GOSUB bs_deleting_cones // Need my own section for this???????????????????? playback_flag = 5 ///making sure playback flag doesn't fuck up missions DISPLAY_RADAR TRUE // ------------------------------------------------------------------------------------------------ // The 360... IF mission_selection = 1 bs_refresh_360: GOSUB bs_start_initialise_stuff bs_setup_360: perfect_heading = 180.0 car_timer = 16000 playback_selection = 181 GOSUB bs_setting_up_variables //creating cars CREATE_CAR BF400 perfect_positionx perfect_positiony perfect_positionz instructor_bike SET_CAR_HEADING instructor_bike 180.0 GOSUB bs_creating_cones IF playback_flag = 0 DO_FADE 500 FADE_IN IF NOT IS_CAR_DEAD instructor_bike CREATE_CHAR_INSIDE_CAR instructor_bike PEDTYPE_CIVFEMALE WMYMECH bs_instructor ENDIF SET_FIXED_CAMERA_POSITION 1125.66 1334.4 22.5 0.0 0.0 0.0 POINT_CAMERA_AT_CAR instructor_bike FIXED JUMP_CUT RETURN ENDIF //setting up finishing point GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike 0.0 0.0 0.0 finish_rightx finish_righty perfect_positionz CLEAR_PRINTS PRINT_HELP_FOREVER BS_A_1 // Use the bike to do a burnout donut. Press and hold ~m~~widget_handbrake~ to begin the burnout. nPrintHelp = 0 GOSUB bs_stop_initialise_stuff //starting challenge bs_the_360_loop: WAIT 0 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_bike_dead_flag = 2 GOTO bs_after_scores_360 ENDIF //checking car isnt dead GOSUB instructor_bike_dead IF instructor_bike_dead_flag = 1 GOTO mission_failed_bskool ENDIF //checking car has moved and player is pressing cross or square IF car_started = 0 IF nPrintHelp = 0 PRINT_HELP_FOREVER BS_A_2 // As you hold down ~m~~widget_handbrake~, steer left or right. nPrintHelp = 1 ENDIF GOSUB bs_has_car_started //player is going ELSE IF NOT IS_CAR_DEAD instructor_bike //checking timer hasnt ran to 0 GOSUB bs_car_timer_0 //checking how far through the circle a player is GET_CAR_HEADING instructor_bike perfect_heading //clockwise IF variablec = 0 IF perfect_heading > 80.0 IF perfect_heading < 90.0 variablec = 1 bs_direction_flag = 1 ENDIF ENDIF ENDIF IF bs_direction_flag = 1 IF variablec = 1 IF perfect_heading > 350.0 IF perfect_heading < 360.0 variablec = 2 ENDIF ENDIF ENDIF IF variablec = 2 IF perfect_heading > 270.0 IF perfect_heading < 280.0 variablec = 3 ENDIF ENDIF ENDIF IF variablec = 3 IF perfect_heading > 170.0 IF perfect_heading < 180.0 variablec = 4 ENDIF ENDIF ENDIF ENDIF //anti-clockwise IF variablec = 0 IF perfect_heading > 270.0 IF perfect_heading < 280.0 bs_direction_flag = 2 variablec = 1 ENDIF ENDIF ENDIF IF bs_direction_flag = 2 IF variablec = 1 IF perfect_heading > 350.0 IF perfect_heading < 360.0 variablec = 2 ENDIF ENDIF ENDIF IF variablec = 2 IF perfect_heading > 80.0 IF perfect_heading < 90.0 variablec = 3 ENDIF ENDIF ENDIF IF variablec = 3 IF perfect_heading > 170.0 IF perfect_heading < 180.0 variablec = 4 ENDIF ENDIF ENDIF ENDIF LVAR_FLOAT tempVec_x tempVec_y tempVec_z tempVec_x = vec_x tempVec_y = vec_y tempVec_z = vec_z GET_CAR_SPEED_VECTOR instructor_bike vec_x vec_y vec_z LVAR_INT bMovementDetected bMovementDetected = 0 IF NOT tempVec_x = vec_x OR NOT tempVec_y = vec_y OR NOT tempVec_z = vec_z bMovementDetected = 1 ENDIF //checking car is stopped or not IF car_timer = 0 OR bMovementDetected = 0 OR NOT IS_CHAR_IN_CAR scplayer instructor_bike OR NOT LOCATE_CHAR_IN_CAR_3D scplayer 1130.42 1339.99 9.66 12.0 12.0 12.0 false GOSUB bs_freeze_car_pos //CALCULATIONS FOR PLAYER SCORE //position score GOSUB bs_position_score_calcs //heading - perfect heading is 0 IF variablec = 4 heading_score = 100 ENDIF IF variablec = 3 heading_score = 75 ENDIF IF variablec = 2 heading_score = 50 ENDIF IF variablec = 1 heading_score = 25 ENDIF IF variablec = 0 heading_score = 0 ENDIF overall_score = position_score + heading_score overall_score /= 2 IF position_score = 0 overall_score = 0 ENDIF //losing points for hitting cones GOSUB bs_damage_cones_calcs //checking overall score is greater than 0 and clearing prints GOSUB bs_checking_overall_score //checking overall score against the best score at present IF overall_score > bs_the360_best_score bs_old_score = bs_the360_best_score bs_the360_best_score = overall_score bs_print_top_scores_flag = 1 GOSUB bs_medal_check IF bs_which_medal_displayed = 4 // gold IF bs_the360_goldachieved = 0 bs_the360_goldachieved = 1 bs_the360_silverachieved = 1 bs_the360_bronzeachieved = 1 ENDIF ENDIF IF bs_which_medal_displayed = 3 // silver IF bs_the360_silverachieved = 0 bs_the360_silverachieved = 1 bs_the360_bronzeachieved = 1 ENDIF ENDIF IF bs_which_medal_displayed = 2 //bronze IF bs_the360_bronzeachieved = 0 bs_the360_bronzeachieved = 1 ENDIF ENDIF ELSE bs_which_medal_displayed = 0 ENDIF //opening next level IF bs_open_tests = 1 IF overall_score > 69 bs_print_top_scores_flag = 2 bs_open_tests = 2 instructor_bike_dead_flag = 2 bs_last_played ++ REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BIKE_AWARD_TRACK_START ENDIF ENDIF //printing scores onscreen timera = 0 WHILE timera > -1 WAIT 0 //changing camera position GOSUB bs_setting_up_camera //checking player hasnt left car //IF NOT bs_print_top_scores_flag = 2 IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_bike_dead_flag = 2 GOTO bs_after_scores_360 ENDIF //ENDIF //displaying scores GOSUB bs_display_head_pos_dam_text //checking if player has skipped watching the scores GOSUB bs_skip_scores IF finished_watching_scores = 1 GOTO bs_after_scores_360 ENDIF ENDWHILE //reseting for another try bs_after_scores_360: GOSUB bs_mini_cleanup GOSUB bs_deleting_cones IF instructor_bike_dead_flag = 2 GOTO bs_noticeboard_setup ELSE GOTO bs_refresh_360 ENDIF ENDIF ENDIF ENDIF GOTO bs_the_360_loop ENDIF // ------------------------------------------------------------------------------------------------ // The 180... IF mission_selection = 2 bs_refresh_180: GOSUB bs_start_initialise_stuff bs_setup_180: perfect_heading = 0.0 car_timer = 16000 //11000 playback_selection = 182 GOSUB bs_setting_up_variables //creating cars CREATE_CAR PCJ600 perfect_positionx perfect_positiony perfect_positionz instructor_bike SET_CAR_HEADING instructor_bike 180.0 //creating cones GOSUB bs_creating_cones IF playback_flag = 0 DO_FADE 500 FADE_IN IF NOT IS_CAR_DEAD instructor_bike CREATE_CHAR_INSIDE_CAR instructor_bike PEDTYPE_CIVFEMALE WMYMECH bs_instructor ENDIF SET_FIXED_CAMERA_POSITION 1130.66 1264.4 14.5 0.0 0.0 0.0 POINT_CAMERA_AT_CAR instructor_bike FIXED JUMP_CUT RETURN ENDIF //setting up the point the player MUST cross GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike -2.0 82.0 0.0 area_check1ax area_check1ay player_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike 2.0 88.0 0.0 area_check1bx area_check1by player_z //setting up finishing point GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike 0.0 0.0 0.0 finish_rightx finish_righty perfect_positionz CLEAR_PRINTS PRINT_HELP_FOREVER BS_B_1 // ~s~To do a 180, accelerate to top speed, press the R1 button to slide around the cone and then return. GOSUB bs_stop_initialise_stuff //starting challenge bs_the_180_loop: WAIT 0 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_bike_dead_flag = 2 GOTO bs_after_scores_180 ENDIF //checking car has moved and player is pressing cross or square IF car_started = 0 PRINT_HELP BS_B_1 // ~s~To do a 180, accelerate to top speed, press the R1 button to slide around the cone and then return. GOSUB bs_has_car_started //player is going ELSE IF NOT IS_CAR_DEAD instructor_bike //checking timer hasnt ran to 0 GOSUB bs_car_timer_0 //checking player goes round a lap IF variablec = 0 IF IS_CAR_IN_AREA_2D instructor_bike area_check1ax area_check1ay area_check1bx area_check1by FALSE variablec = 1 ENDIF ENDIF //checking car is stopped or not IF IS_CAR_STOPPED instructor_bike OR NOT IS_CHAR_IN_CAR scplayer instructor_bike GOSUB bs_freeze_car_pos //CALCULATIONS FOR PLAYER SCORE //position score GOSUB bs_position_score_calcs IF variablec = 0 position_score = 0 ENDIF //heading - perfect heading is 0 GET_CAR_HEADING instructor_bike instructor_bike_heading instructor_bike_heading_int =# instructor_bike_heading IF instructor_bike_heading_int = 0 heading_score = 100 GOTO bs_done_heading_calcs_180 ENDIF IF instructor_bike_heading_int = 360 heading_score = 100 GOTO bs_done_heading_calcs_180 ENDIF IF instructor_bike_heading_int > 0 IF instructor_bike_heading_int < 21 heading_score = 100 ENDIF ENDIF IF instructor_bike_heading_int > 179 IF instructor_bike_heading_int < 340 instructor_bike_heading_int = instructor_bike_heading_int - 180 variableb =# instructor_bike_heading_int variableb *= 0.62 heading_score =# variableb GOTO bs_done_heading_calcs_180 ENDIF ENDIF IF instructor_bike_heading_int > 339 IF instructor_bike_heading_int < 360 heading_score = 100 ENDIF ENDIF IF instructor_bike_heading_int > 20 IF instructor_bike_heading_int < 180 variableb =# instructor_bike_heading_int variableb *= 0.62 //0.62 = 99(which is highest score possible) / 60 ( which is 180 - 20) variablea =# variableb heading_score = 100 - variablea GOTO bs_done_heading_calcs_180 ENDIF ENDIF bs_done_heading_calcs_180: IF heading_score < 1 heading_score = 0 ENDIF overall_score = position_score + heading_score overall_score /= 2 IF position_score = 0 overall_score = 0 ENDIF //losing points for hitting cones GOSUB bs_damage_cones_calcs //checking overall score is greater than 0 and clearing prints GOSUB bs_checking_overall_score //checking overall score against the best score at present IF overall_score > bs_the180_best_score bs_old_score = bs_the180_best_score bs_the180_best_score = overall_score bs_print_top_scores_flag = 1 GOSUB bs_medal_check IF bs_which_medal_displayed = 4 // gold IF bs_the180_goldachieved = 0 bs_the180_goldachieved = 1 bs_the180_silverachieved = 1 bs_the180_bronzeachieved = 1 ENDIF ENDIF IF bs_which_medal_displayed = 3 // silver IF bs_the180_silverachieved = 0 bs_the180_silverachieved = 1 bs_the180_bronzeachieved = 1 ENDIF ENDIF IF bs_which_medal_displayed = 2 //bronze IF bs_the180_bronzeachieved = 0 bs_the180_bronzeachieved = 1 ENDIF ENDIF ELSE bs_which_medal_displayed = 0 ENDIF //opening next level IF bs_open_tests = 2 IF overall_score > 69 bs_print_top_scores_flag = 2 bs_open_tests = 3 instructor_bike_dead_flag = 2 bs_last_played ++ REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BIKE_AWARD_TRACK_START ENDIF ENDIF //printing scores onscreen timera = 0 WHILE timera > -1 WAIT 0 //changing camera position GOSUB bs_setting_up_camera //checking player hasnt left car //IF NOT bs_print_top_scores_flag = 2 IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_bike_dead_flag = 2 GOTO bs_after_scores_180 ENDIF //ENDIF //displaying scores GOSUB bs_display_head_pos_dam_text //checking if player has skipped watching the scores GOSUB bs_skip_scores IF finished_watching_scores = 1 GOTO bs_after_scores_180 ENDIF ENDWHILE //reseting for another try bs_after_scores_180: GOSUB bs_mini_cleanup GOSUB bs_deleting_cones IF instructor_bike_dead_flag = 2 GOTO bs_noticeboard_setup ELSE GOTO bs_refresh_180 ENDIF ENDIF ENDIF ENDIF GOTO bs_the_180_loop ENDIF // ------------------------------------------------------------------------------------------------ // The Wheelie IF mission_selection = 3 bs_refresh_wheelie: GOSUB bs_start_initialise_stuff bs_setup_wheelie: //////setting up variables for this specific challenge///// perfect_heading = 180.0 car_timer = 9000 playback_selection = 183 GOSUB bs_setting_up_variables //creating cars CREATE_CAR FCR900 perfect_positionx perfect_positiony perfect_positionz instructor_bike SET_CAR_HEADING instructor_bike 180.0 //creating cones GOSUB bs_creating_cones // Demo Playback Camera IF playback_flag = 0 DO_FADE 500 FADE_IN IF NOT IS_CAR_DEAD instructor_bike CREATE_CHAR_INSIDE_CAR instructor_bike PEDTYPE_CIVFEMALE WMYMECH bs_instructor ENDIF SET_FIXED_CAMERA_POSITION 1125.66 1283.4 10.5 0.0 0.0 0.0 POINT_CAMERA_AT_CAR instructor_bike FIXED JUMP_CUT RETURN ENDIF //setting up area check GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike -3.5 56.0 0.0 area_check1ax area_check1ay player_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike 3.5 84.0 0.0 area_check1bx area_check1by player_z //setting up finishing point GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike 0.0 124.0 0.0 finish_rightx finish_righty perfect_positionz CLEAR_PRINTS PRINT_HELP_FOREVER BS_C_D // Do a Wheelie along the coned section. Accelerate to top speed, then press and hold ~m~~widget_ped_move_down~. GOSUB bs_stop_initialise_stuff bs_wheelie_loop: WAIT 0 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_bike_dead_flag = 2 GOTO bs_after_scores_wheelie ENDIF //checking car has moved and player is pressing cross or square IF car_started = 0 PRINT_HELP_FOREVER BS_C_D // Do a Wheelie along the coned section. Accelerate to top speed, then double tap and hold the accelerator. GOSUB bs_has_car_started //player is going ELSE IF NOT IS_CAR_DEAD instructor_bike //checking timer hasnt ran to 0 GOSUB bs_car_timer_0 // Makes sure player is in area IF variablec = 0 IF IS_CAR_IN_AREA_2D instructor_bike area_check1ax area_check1ay area_check1bx area_check1by FALSE variablec = 1 ENDIF ENDIF IF variablec = 1 IF NOT IS_CAR_IN_AREA_2D instructor_bike area_check1ax area_check1ay area_check1bx area_check1by FALSE GET_CHAR_COORDINATES scplayer player_x player_y player_z IF player_x > area_check1ax OR player_x < area_check1bx OR player_y > area_check1ay GOSUB bs_freeze_car_pos ELSE variablec = 2 ENDIF ENDIF IF NOT IS_PLAYER_PERFORMING_WHEELIE player1 GOSUB bs_freeze_car_pos ENDIF ENDIF // Follow Player's heading GET_CAR_HEADING instructor_bike instructor_bike_heading instructor_bike_follow_heading = instructor_bike_heading IF NOT instructor_bike_follow_heading = 0.0 IF instructor_bike_follow_heading < 360.0 AND instructor_bike_follow_heading > 180.0 instructor_bike_follow_heading += 0.1 ENDIF IF instructor_bike_follow_heading = 360.0 instructor_bike_follow_heading > 0.0 ENDIF IF instructor_bike_follow_heading <= 180.0 AND instructor_bike_follow_heading > 0.0 instructor_bike_follow_heading -= 0.1 ENDIF ENDIF //checking car is stopped or not IF IS_CAR_STOPPED instructor_bike OR NOT IS_CHAR_IN_CAR scplayer instructor_bike GOSUB bs_freeze_car_pos perfect_positionx = finish_rightx perfect_positiony = finish_righty IF variablec > 0 GOSUB bs_position_score_calcs ELSE position_score = 0 ENDIF //heading - perfect heading is 0 GET_CAR_HEADING instructor_bike instructor_bike_heading instructor_bike_heading_int =# instructor_bike_heading IF variablec > 0 IF instructor_bike_heading_int = 0 heading_score = 0 GOTO bs_done_heading_calcs_wheelie ENDIF IF instructor_bike_heading_int = 180 heading_score = 100 GOTO bs_done_heading_calcs_wheelie ENDIF IF instructor_bike_heading_int = 360 heading_score = 0 GOTO bs_done_heading_calcs_wheelie ENDIF IF instructor_bike_heading_int > 0 IF instructor_bike_heading_int < 175 variableb =# instructor_bike_heading_int variableb *= 0.56 //0.56 = 99(which is highest score possible) / 175 ( which is 175 - 0) heading_score =# variableb GOTO bs_done_heading_calcs_wheelie ENDIF ENDIF IF instructor_bike_heading_int > 174 IF instructor_bike_heading_int < 186 heading_score = 100 ENDIF ENDIF IF instructor_bike_heading_int > 185 IF instructor_bike_heading_int < 360 instructor_bike_heading_int = instructor_bike_heading_int - 180 variableb =# instructor_bike_heading_int variableb *= 0.56 variablea =# variableb heading_score = 100 - variablea GOTO bs_done_heading_calcs_wheelie ENDIF ENDIF ELSE heading_score = 0 GOTO bs_done_heading_calcs_wheelie ENDIF bs_done_heading_calcs_wheelie: IF heading_score < 1 heading_score = 0 ENDIF overall_score = position_score + heading_score overall_score /= 2 IF position_score = 0 overall_score = 0 ENDIF //losing points for hitting cones GOSUB bs_damage_cones_calcs //checking overall score is greater than 0 and clearing prints GOSUB bs_checking_overall_score //checking overall score against the best score at present IF overall_score > bs_wheelie_best_score bs_old_score = bs_wheelie_best_score bs_wheelie_best_score = overall_score bs_print_top_scores_flag = 1 GOSUB bs_medal_check IF bs_which_medal_displayed = 4 // gold IF bs_wheelie_goldachieved = 0 bs_wheelie_goldachieved = 1 bs_wheelie_silverachieved = 1 bs_wheelie_bronzeachieved = 1 ENDIF ENDIF IF bs_which_medal_displayed = 3 // silver IF bs_wheelie_silverachieved = 0 bs_wheelie_silverachieved = 1 bs_wheelie_bronzeachieved = 1 ENDIF ENDIF IF bs_which_medal_displayed = 2 //bronze IF bs_wheelie_bronzeachieved = 0 bs_wheelie_bronzeachieved = 1 ENDIF ENDIF ELSE bs_which_medal_displayed = 0 ENDIF //opening next level IF bs_open_tests = 3 IF overall_score > 69 bs_print_top_scores_flag = 2 bs_open_tests = 4 instructor_bike_dead_flag = 2 bs_last_played ++ REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BIKE_AWARD_TRACK_START ENDIF ENDIF //printing scores onscreen timera = 0 WHILE timera > -1 WAIT 0 //changing camera position GOSUB bs_setting_up_camera //checking player hasnt left car //IF NOT bs_print_top_scores_flag = 2 IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_bike_dead_flag = 2 GOTO bs_after_scores_wheelie ENDIF //ENDIF //displaying scores GOSUB bs_display_head_pos_dam_text //checking if player has skipped watching the scores GOSUB bs_skip_scores IF finished_watching_scores = 1 GOTO bs_after_scores_wheelie ENDIF ENDWHILE //reseting for another try bs_after_scores_wheelie: GOSUB bs_deleting_cones GOSUB bs_mini_cleanup IF instructor_bike_dead_flag = 2 GOTO bs_noticeboard_setup ELSE GOTO bs_refresh_wheelie ENDIF ENDIF ENDIF ENDIF GOTO bs_wheelie_loop ENDIF // ------------------------------------------------------------------------------------------------ // The Stoppie IF mission_selection = 5 bs_refresh_stoppie: GOSUB bs_start_initialise_stuff bs_setup_stoppie: //////setting up variables for this specific challenge///// perfect_heading = 180.0 car_timer = 9000 playback_selection = 184 GOSUB bs_setting_up_variables //creating cars CREATE_CAR FCR900 perfect_positionx perfect_positiony perfect_positionz instructor_bike SET_CAR_HEADING instructor_bike 180.0 //creating cones GOSUB bs_creating_cones // Demo Playback Camera IF playback_flag = 0 DO_FADE 500 FADE_IN IF NOT IS_CAR_DEAD instructor_bike CREATE_CHAR_INSIDE_CAR instructor_bike PEDTYPE_CIVFEMALE WMYMECH bs_instructor ENDIF SET_FIXED_CAMERA_POSITION 1125.66 1283.4 10.5 0.0 0.0 0.0 POINT_CAMERA_AT_CAR instructor_bike FIXED JUMP_CUT RETURN ENDIF //setting up area check GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike -3.5 56.0 0.0 area_check1ax area_check1ay player_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike 3.5 84.0 0.0 area_check1bx area_check1by player_z //setting up finishing point GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike 0.0 124.0 0.0 finish_rightx finish_righty perfect_positionz CLEAR_PRINTS PRINT_HELP_FOREVER BS_D_1 // ~s~Do a Stoppie along the coned section. Accelerate to top speed, push ~m~~widget_ped_move_up~ up, then press ~m~~widget_brake~. GOSUB bs_stop_initialise_stuff bs_stoppie_loop: WAIT 0 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_bike_dead_flag = 2 GOTO bs_after_scores_stoppie ENDIF //checking car has moved and player is pressing cross or square IF car_started = 0 PRINT_HELP_FOREVER BS_D_1 // ~s~Do a Stoppie along the coned section. Accelerate to top speed, push ~m~~widget_ped_move_up~ up, then press ~m~~widget_brake~. GOSUB bs_has_car_started //player is going ELSE IF NOT IS_CAR_DEAD instructor_bike //checking timer hasnt ran to 0 GOSUB bs_car_timer_0 // Makes sure player is in area IF variablec = 0 IF IS_CAR_IN_AREA_2D instructor_bike area_check1ax area_check1ay area_check1bx area_check1by FALSE variablec = 1 ENDIF ENDIF IF variablec = 1 IF NOT IS_CAR_IN_AREA_2D instructor_bike area_check1ax area_check1ay area_check1bx area_check1by FALSE GET_CHAR_COORDINATES scplayer player_x player_y player_z IF player_x > area_check1ax OR player_x < area_check1bx OR player_y > area_check1ay GOSUB bs_freeze_car_pos ELSE // ENDIF // IF player_y < area_check1by variablec = 2 ENDIF ENDIF IF NOT IS_PLAYER_PERFORMING_stoppie player1 GOSUB bs_freeze_car_pos ENDIF ENDIF // Follow Player's heading GET_CAR_HEADING instructor_bike instructor_bike_heading instructor_bike_follow_heading = instructor_bike_heading IF NOT instructor_bike_follow_heading = 0.0 IF instructor_bike_follow_heading < 360.0 AND instructor_bike_follow_heading > 180.0 instructor_bike_follow_heading += 0.1 ENDIF IF instructor_bike_follow_heading = 360.0 instructor_bike_follow_heading > 0.0 ENDIF IF instructor_bike_follow_heading <= 180.0 AND instructor_bike_follow_heading > 0.0 instructor_bike_follow_heading -= 0.1 ENDIF ENDIF GET_CAR_SPEED instructor_bike instructor_bike_speed //checking car is stopped or not // IF instructor_bike_speed = 0.0 IF IS_CAR_STOPPED instructor_bike OR NOT IS_CHAR_IN_CAR scplayer instructor_bike GOSUB bs_freeze_car_pos perfect_positionx = finish_rightx perfect_positiony = finish_righty IF variablec > 0 GOSUB bs_position_score_calcs ELSE position_score = 0 ENDIF //heading - perfect heading is 0 GET_CAR_HEADING instructor_bike instructor_bike_heading instructor_bike_heading_int =# instructor_bike_heading IF variablec > 0 IF instructor_bike_heading_int = 0 heading_score = 0 GOTO bs_done_heading_calcs_stoppie ENDIF IF instructor_bike_heading_int = 180 heading_score = 100 GOTO bs_done_heading_calcs_stoppie ENDIF IF instructor_bike_heading_int = 360 heading_score = 0 GOTO bs_done_heading_calcs_stoppie ENDIF IF instructor_bike_heading_int > 0 IF instructor_bike_heading_int < 175 variableb =# instructor_bike_heading_int variableb *= 0.56 //0.56 = 99(which is highest score possible) / 175 ( which is 175 - 0) heading_score =# variableb GOTO bs_done_heading_calcs_stoppie ENDIF ENDIF IF instructor_bike_heading_int > 174 IF instructor_bike_heading_int < 186 heading_score = 100 ENDIF ENDIF IF instructor_bike_heading_int > 185 IF instructor_bike_heading_int < 360 instructor_bike_heading_int = instructor_bike_heading_int - 180 variableb =# instructor_bike_heading_int variableb *= 0.56 variablea =# variableb heading_score = 100 - variablea GOTO bs_done_heading_calcs_stoppie ENDIF ENDIF ELSE heading_score = 0 GOTO bs_done_heading_calcs_stoppie ENDIF bs_done_heading_calcs_stoppie: IF heading_score < 1 heading_score = 0 ENDIF overall_score = position_score + heading_score overall_score /= 2 IF position_score = 0 overall_score = 0 ENDIF //losing points for hitting cones GOSUB bs_damage_cones_calcs //checking overall score is greater than 0 and clearing prints GOSUB bs_checking_overall_score //checking overall score against the best score at present IF overall_score > bs_stoppie_best_score bs_old_score = bs_stoppie_best_score bs_stoppie_best_score = overall_score bs_print_top_scores_flag = 1 GOSUB bs_medal_check IF bs_which_medal_displayed = 4 // gold IF bs_stoppie_goldachieved = 0 bs_stoppie_goldachieved = 1 bs_stoppie_silverachieved = 1 bs_stoppie_bronzeachieved = 1 ENDIF ENDIF IF bs_which_medal_displayed = 3 // silver IF bs_stoppie_silverachieved = 0 bs_stoppie_silverachieved = 1 bs_stoppie_bronzeachieved = 1 ENDIF ENDIF IF bs_which_medal_displayed = 2 //bronze IF bs_stoppie_bronzeachieved = 0 bs_stoppie_bronzeachieved = 1 ENDIF ENDIF ELSE bs_which_medal_displayed = 0 ENDIF //opening next level IF bs_open_tests = 5 IF overall_score > 69 bs_print_top_scores_flag = 2 bs_open_tests = 6 instructor_bike_dead_flag = 2 bs_last_played ++ REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BIKE_AWARD_TRACK_START ENDIF ENDIF //printing scores onscreen timera = 0 WHILE timera > -1 WAIT 0 //changing camera position GOSUB bs_setting_up_camera //checking player hasnt left car //IF NOT bs_print_top_scores_flag = 2 IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_bike_dead_flag = 2 GOTO bs_after_scores_stoppie ENDIF //ENDIF //displaying scores GOSUB bs_display_head_pos_dam_text //checking if player has skipped watching the scores GOSUB bs_skip_scores IF finished_watching_scores = 1 GOTO bs_after_scores_stoppie ENDIF ENDWHILE //reseting for another try bs_after_scores_stoppie: GOSUB bs_deleting_cones GOSUB bs_mini_cleanup IF instructor_bike_dead_flag = 2 GOTO bs_noticeboard_setup ELSE GOTO bs_refresh_stoppie ENDIF ENDIF ENDIF ENDIF GOTO bs_stoppie_loop ENDIF // ---------------------------------------------------------------------- // Jump & Stop in Area IF mission_selection = 4 ///////////////remember to unload cars at end of level///////////// bs_refresh_jump_and_stop: GOSUB bs_start_initialise_stuff bs_setup_jump_and_stop: //////setting up variables for this specific challenge///// perfect_heading = 180.0 car_timer = 9000 playback_selection = 185 GOSUB bs_setting_up_variables //creating cars CREATE_CAR SANCHEZ perfect_positionx perfect_positiony perfect_positionz instructor_bike SET_CAR_HEADING instructor_bike perfect_heading //setting up area check GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike -2.5 46.0 2.0 area_check1ax area_check1ay player_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike 2.5 50.0 2.0 area_check1bx area_check1by player_z //creating cones GOSUB bs_creating_cones IF playback_flag = 0 DO_FADE 500 FADE_IN IF NOT IS_CAR_DEAD instructor_bike CREATE_CHAR_INSIDE_CAR instructor_bike PEDTYPE_CIVFEMALE WMYMECH bs_instructor ENDIF SET_FIXED_CAMERA_POSITION 1127.66 1288.4 12.75 0.0 0.0 0.0 POINT_CAMERA_AT_CAR instructor_bike FIXED JUMP_CUT RETURN ENDIF GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike 0.0 124.0 0.0 finish_rightx finish_righty perfect_positionz CLEAR_PRINTS PRINT_NOW ( BS_E_1 ) 5000 4 // Drive to the end of the track, a tyre will blow out half way there. GOSUB bs_stop_initialise_stuff bs_jump_stop_loop: WAIT 0 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_bike_dead_flag = 2 GOTO bs_after_scores_jump_and_stop ENDIF IF car_started = 0 PRINT_NOW ( BS_E_1 ) 5000 4 // Drive to the end of the track, a tyre will blow out half way there.~n~For extra control, release the accelerate button. GOSUB bs_has_car_started //player is going ELSE IF NOT IS_CAR_DEAD instructor_bike //checking timer hasnt ran to 0 GOSUB bs_car_timer_0 // Makes sure player is in area IF variablec = 0 IF IS_CAR_IN_AREA_2D instructor_bike area_check1ax area_check1ay area_check1bx area_check1by FALSE variablec = 1 ENDIF ENDIF IF variablec = 1 IF NOT IS_CAR_IN_AREA_2D instructor_bike area_check1ax area_check1ay area_check1bx area_check1by FALSE GET_CHAR_COORDINATES scplayer player_x player_y player_z IF player_x > area_check1ax OR player_x < area_check1bx OR player_y > area_check1ay GOSUB bs_freeze_car_pos ELSE // ENDIF // IF player_y < area_check1by variablec = 2 ENDIF ENDIF ENDIF //checking car is stopped or not IF IS_CAR_STOPPED instructor_bike OR NOT IS_CHAR_IN_CAR scplayer instructor_bike GOSUB bs_freeze_car_pos //CALCULATIONS FOR PLAYER SCORE //how close player is to perfect position perfect_positionx = finish_rightx perfect_positiony = finish_righty IF variablec > 0 GOSUB bs_position_score_calcs ELSE position_score = 0 ENDIF //heading - perfect heading is 180 GET_CAR_HEADING instructor_bike instructor_bike_heading instructor_bike_heading_int =# instructor_bike_heading IF variablec > 0 IF instructor_bike_heading_int = 0 heading_score = 0 GOTO bs_done_heading_calcs_jump_and_stop ENDIF IF instructor_bike_heading_int = 180 heading_score = 100 GOTO bs_done_heading_calcs_jump_and_stop ENDIF IF instructor_bike_heading_int = 360 heading_score = 0 GOTO bs_done_heading_calcs_jump_and_stop ENDIF IF instructor_bike_heading_int > 0 IF instructor_bike_heading_int < 175 variableb =# instructor_bike_heading_int variableb *= 0.56 //0.56 = 99(which is highest score possible) / 175 ( which is 175 - 0) heading_score =# variableb GOTO bs_done_heading_calcs_jump_and_stop ENDIF ENDIF IF instructor_bike_heading_int > 174 IF instructor_bike_heading_int < 186 heading_score = 100 ENDIF ENDIF IF instructor_bike_heading_int > 185 IF instructor_bike_heading_int < 360 instructor_bike_heading_int = instructor_bike_heading_int - 180 variableb =# instructor_bike_heading_int variableb *= 0.56 variablea =# variableb heading_score = 100 - variablea GOTO bs_done_heading_calcs_jump_and_stop ENDIF ENDIF ELSE heading_score = 0 GOTO bs_done_heading_calcs_jump_and_stop ENDIF bs_done_heading_calcs_jump_and_stop: IF heading_score < 1 heading_score = 0 ENDIF overall_score = position_score + heading_score overall_score /= 2 IF position_score = 0 overall_score = 0 ENDIF //losing points for hitting cones GOSUB bs_damage_cones_calcs //checking overall score is greater than 0 and clearing prints GOSUB bs_checking_overall_score //checking overall score against the best score at present IF overall_score > bs_jumpstop_best_score bs_old_score = bs_jumpstop_best_score bs_jumpstop_best_score = overall_score bs_print_top_scores_flag = 1 GOSUB bs_medal_check IF bs_which_medal_displayed = 4 // gold IF bs_jumpstop_goldachieved = 0 bs_jumpstop_goldachieved = 1 bs_jumpstop_silverachieved = 1 bs_jumpstop_bronzeachieved = 1 ENDIF ENDIF IF bs_which_medal_displayed = 3 // silver IF bs_jumpstop_silverachieved = 0 bs_jumpstop_silverachieved = 1 bs_jumpstop_bronzeachieved = 1 ENDIF ENDIF IF bs_which_medal_displayed = 2 //bronze IF bs_jumpstop_bronzeachieved = 0 bs_jumpstop_bronzeachieved = 1 ENDIF ENDIF ELSE bs_which_medal_displayed = 0 ENDIF //Disable Stoppie tests IF NOT IS_XBOX_VERSION // HACKED - mobile version test //opening next level IF bs_open_tests = 4 IF overall_score > 69 bs_print_top_scores_flag = 2 bs_open_tests = 5 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BIKE_AWARD_TRACK_START instructor_bike_dead_flag = 2 bs_last_played ++ ENDIF ENDIF ELSE // Mission Passed Success IF bs_passed = 0 IF bs_open_tests = 4 IF overall_score > 69 bs_print_top_scores_flag = 2 bs_passed = 1 //bs_open_tests = 7 instructor_bike_dead_flag = 2 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BIKE_AWARD_TRACK_START ENDIF ENDIF ENDIF ENDIF //printing scores onscreen timera = 0 WHILE timera > -1 WAIT 0 //changing camera position GOSUB bs_setting_up_camera //checking player hasnt left car //IF NOT bs_print_top_scores_flag = 2 IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_bike_dead_flag = 2 GOTO bs_after_scores_jump_and_stop ENDIF //ENDIF //displaying scores GOSUB bs_display_head_pos_dam_text //checking if player has skipped watching the scores GOSUB bs_skip_scores IF finished_watching_scores = 1 GOTO bs_after_scores_jump_and_stop ENDIF ENDWHILE //reseting for another try bs_after_scores_jump_and_stop: GOSUB bs_mini_cleanup GOSUB bs_deleting_cones IF instructor_bike_dead_flag = 2 GOTO bs_noticeboard_setup ELSE GOTO bs_refresh_jump_and_stop ENDIF ENDIF ENDIF ENDIF GOTO bs_jump_stop_loop ENDIF // ---------------------------------------------------------------------- // Jump & Stoppie into Area IF mission_selection = 6 ///////////////remember to unload cars at end of level///////////// bs_refresh_jump_and_stoppie: GOSUB bs_start_initialise_stuff bs_setup_jump_and_stoppie: //////setting up variables for this specific challenge///// perfect_heading = 180.0 car_timer = 9000 playback_selection = 186 GOSUB bs_setting_up_variables //creating cars CREATE_CAR NRG500 perfect_positionx perfect_positiony perfect_positionz instructor_bike SET_CAR_HEADING instructor_bike perfect_heading //setting up area check GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike -2.5 46.0 2.0 area_check1ax area_check1ay player_z GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike 2.5 52.0 2.0 area_check1bx area_check1by player_z //creating cones GOSUB bs_creating_cones IF playback_flag = 0 DO_FADE 500 FADE_IN IF NOT IS_CAR_DEAD instructor_bike CREATE_CHAR_INSIDE_CAR instructor_bike PEDTYPE_CIVFEMALE WMYMECH bs_instructor ENDIF SET_FIXED_CAMERA_POSITION 1122.66 1265.4 15.75 0.0 0.0 0.0 POINT_CAMERA_AT_CAR instructor_bike FIXED JUMP_CUT RETURN ENDIF GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike 0.0 114.0 0.0 finish_rightx finish_righty perfect_positionz CLEAR_PRINTS PRINT_NOW ( BS_F_1 ) 5000 4 // Drive to the end of the track, a tyre will blow out half way there. GOSUB bs_stop_initialise_stuff bs_jump_stoppie_loop: WAIT 0 //checking player hasnt left car IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL instructor_bike_dead_flag = 2 GOTO bs_after_scores_jump_and_stoppie ENDIF IF car_started = 0 PRINT_NOW ( BS_F_1 ) 5000 4 // Drive to the end of the track, a tyre will blow out half way there.~n~For extra control, release the accelerate button. GOSUB bs_has_car_started //player is going ELSE IF NOT IS_CAR_DEAD instructor_bike //checking timer hasnt ran to 0 GOSUB bs_car_timer_0 // Makes sure player is in area IF variablec = 0 IF IS_CAR_IN_AREA_2D instructor_bike area_check1ax area_check1ay area_check1bx area_check1by FALSE variablec = 1 ENDIF ENDIF IF variablec = 1 IF NOT IS_CAR_IN_AREA_2D instructor_bike area_check1ax area_check1ay area_check1bx area_check1by FALSE GET_CHAR_COORDINATES scplayer player_x player_y player_z IF player_x > area_check1ax OR player_x < area_check1bx OR player_y > area_check1ay GOSUB bs_freeze_car_pos ELSE variablec = 2 ENDIF ENDIF ENDIF IF variablec = 2 IF NOT IS_CAR_IN_AIR_PROPER instructor_bike GET_GAME_TIMER bs_timer_start variablec = 3 ENDIF ENDIF IF variablec = 3 GET_GAME_TIMER bs_timer_end bs_timer_diff = bs_timer_end - bs_timer_start IF bs_timer_diff > 250 IF NOT IS_PLAYER_PERFORMING_STOPPIE player1 OR IS_PLAYER_PERFORMING_WHEELIE player1 GOSUB bs_freeze_car_pos ENDIF ENDIF ENDIF //checking car is stopped or not IF IS_CAR_STOPPED instructor_bike OR NOT IS_CHAR_IN_CAR scplayer instructor_bike GOSUB bs_freeze_car_pos //CALCULATIONS FOR PLAYER SCORE //how close player is to perfect position perfect_positionx = finish_rightx perfect_positiony = finish_righty IF variablec > 0 GOSUB bs_position_score_calcs ELSE position_score = 0 ENDIF //heading - perfect heading is 180 GET_CAR_HEADING instructor_bike instructor_bike_heading instructor_bike_heading_int =# instructor_bike_heading IF variablec > 0 IF instructor_bike_heading_int = 0 heading_score = 0 GOTO bs_done_heading_calcs_jump_and_stoppie ENDIF IF instructor_bike_heading_int = 180 heading_score = 100 GOTO bs_done_heading_calcs_jump_and_stoppie ENDIF IF instructor_bike_heading_int = 360 heading_score = 0 GOTO bs_done_heading_calcs_jump_and_stoppie ENDIF IF instructor_bike_heading_int > 0 IF instructor_bike_heading_int < 175 variableb =# instructor_bike_heading_int variableb *= 0.56 //0.56 = 99(which is highest score possible) / 175 ( which is 175 - 0) heading_score =# variableb GOTO bs_done_heading_calcs_jump_and_stoppie ENDIF ENDIF IF instructor_bike_heading_int > 174 IF instructor_bike_heading_int < 186 heading_score = 100 ENDIF ENDIF IF instructor_bike_heading_int > 185 IF instructor_bike_heading_int < 360 instructor_bike_heading_int = instructor_bike_heading_int - 180 variableb =# instructor_bike_heading_int variableb *= 0.56 variablea =# variableb heading_score = 100 - variablea GOTO bs_done_heading_calcs_jump_and_stoppie ENDIF ENDIF ELSE heading_score = 0 GOTO bs_done_heading_calcs_jump_and_stoppie ENDIF bs_done_heading_calcs_jump_and_stoppie: IF heading_score < 1 heading_score = 0 ENDIF overall_score = position_score + heading_score overall_score /= 2 IF position_score = 0 overall_score = 0 ENDIF //losing points for hitting cones GOSUB bs_damage_cones_calcs //checking overall score is greater than 0 and clearing prints GOSUB bs_checking_overall_score //checking overall score against the best score at present IF overall_score > bs_jumpstoppie_best_score bs_old_score = bs_jumpstoppie_best_score bs_jumpstoppie_best_score = overall_score bs_print_top_scores_flag = 1 GOSUB bs_medal_check IF bs_which_medal_displayed = 4 // gold IF bs_jumpstoppie_goldachieved = 0 bs_jumpstoppie_goldachieved = 1 bs_jumpstoppie_silverachieved = 1 bs_jumpstoppie_bronzeachieved = 1 ENDIF ENDIF IF bs_which_medal_displayed = 3 // silver IF bs_jumpstoppie_silverachieved = 0 bs_jumpstoppie_silverachieved = 1 bs_jumpstoppie_bronzeachieved = 1 ENDIF ENDIF IF bs_which_medal_displayed = 2 //bronze IF bs_jumpstoppie_bronzeachieved = 0 bs_jumpstoppie_bronzeachieved = 1 ENDIF ENDIF ELSE bs_which_medal_displayed = 0 ENDIF // bike school passed! IF bs_passed = 0 IF bs_open_tests = 6 IF overall_score > 69 bs_print_top_scores_flag = 2 bs_passed = 1 //bs_open_tests = 7 instructor_bike_dead_flag = 2 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BIKE_AWARD_TRACK_START ENDIF ENDIF ENDIF //printing scores onscreen timera = 0 WHILE timera > -1 WAIT 0 //changing camera position GOSUB bs_setting_up_camera //checking player hasnt left car IF NOT bs_print_top_scores_flag = 2 IF IS_WIDGET_RELEASED WIDGET_MINIGAME_CANCEL instructor_bike_dead_flag = 2 GOTO bs_after_scores_jump_and_stoppie ENDIF ENDIF //displaying scores GOSUB bs_display_head_pos_dam_text //checking if player has skipped watching the scores GOSUB bs_skip_scores IF finished_watching_scores = 1 GOTO bs_after_scores_jump_and_stoppie ENDIF ENDWHILE //reseting for another try bs_after_scores_jump_and_stoppie: GOSUB bs_mini_cleanup GOSUB bs_deleting_cones IF instructor_bike_dead_flag = 2 IF bs_passed = 1 IF flag_bikeschool_passed_1stime = 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CHAR_COORDINATES scplayer 1171.5206 1351.1826 9.9219 SET_CHAR_HEADING scplayer 11.0 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GOTO mission_passed_bs ENDIF ENDIF GOTO bs_noticeboard_setup ELSE GOTO bs_refresh_jump_and_stoppie ENDIF ENDIF ENDIF ENDIF GOTO bs_jump_stoppie_loop ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Mission failed mission_failed_bskool: CLEAR_MISSION_AUDIO 3 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BIKE_AWARD_TRACK_STOP CLEAR_PRINTS CHECKPOINT_SAVE_ODDJOB 2 RETURN // mission passed mission_passed_bs: DO_FADE 500 FADE_IN IF flag_bikeschool_passed_1stime = 0 WRITE_LOG "UNLOCK_ACHIEVEMENT SCHOOLS_OUT" REGISTER_ODDJOB_MISSION_PASSED PLAYER_MADE_PROGRESS 1 flag_bikeschool_passed_1stime = 1 INCREMENT_FLOAT_STAT BIKE_SKILL 50.0 ENDIF CLEAR_PRINTS PRINT_BIG ( BS_Z_7 ) 5000 5 //"Mission Passed!" PLAY_MISSION_PASSED_TUNE 2 CLEAR_WANTED_LEVEL player1 RETURN // mission cleanup mission_cleanup_bskool: //ALTER_WANTED_LEVEL player1 bs_wanted //SET_PLAYER_CONTROL player1 on CLEAR_ONSCREEN_TIMER car_timer USE_TEXT_COMMANDS FALSE DISPLAY_HUD TRUE DISPLAY_RADAR TRUE RELEASE_WEATHER MARK_MODEL_AS_NO_LONGER_NEEDED trafficcone MARK_MODEL_AS_NO_LONGER_NEEDED landjump2 MARK_MODEL_AS_NO_LONGER_NEEDED FCR900 MARK_MODEL_AS_NO_LONGER_NEEDED BF400 MARK_MODEL_AS_NO_LONGER_NEEDED PCJ600 MARK_MODEL_AS_NO_LONGER_NEEDED NRG500 MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH //REMOVE_BLIP bs_blip_flag IF bs_gold_rewardgiven = 0 IF bs_the360_goldachieved = 1 IF bs_the180_goldachieved = 1 IF bs_wheelie_goldachieved = 1 IF bs_stoppie_goldachieved = 1 IF bs_jumpstop_goldachieved = 1 IF bs_jumpstoppie_goldachieved = 1 bs_gold_rewardgiven = 1 bs_silver_rewardgiven = 1 bs_bronze_rewardgiven = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF bs_silver_rewardgiven = 0 IF bs_the360_silverachieved = 1 IF bs_the180_silverachieved = 1 IF bs_wheelie_silverachieved = 1 IF bs_stoppie_silverachieved = 1 IF bs_jumpstop_silverachieved = 1 IF bs_jumpstoppie_silverachieved = 1 bs_silver_rewardgiven = 1 bs_bronze_rewardgiven = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF bs_bronze_rewardgiven = 0 IF bs_the360_bronzeachieved = 1 IF bs_the180_bronzeachieved = 1 IF bs_wheelie_bronzeachieved = 1 IF bs_stoppie_bronzeachieved = 1 IF bs_jumpstop_bronzeachieved = 1 IF bs_jumpstoppie_bronzeachieved = 1 bs_bronze_rewardgiven = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF bs_gold_rewardgiven = 1 SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR bs_gold_generator TRUE SWITCH_CAR_GENERATOR bs_gold_generator 101 INCREMENT_FLOAT_STAT BIKE_SKILL 200.0 bs_gold_rewardgiven = 2 ENDIF IF bs_silver_rewardgiven = 1 SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR bs_silver_generator TRUE SWITCH_CAR_GENERATOR bs_silver_generator 101 INCREMENT_FLOAT_STAT BIKE_SKILL 100.0 bs_silver_rewardgiven = 2 ENDIF IF bs_bronze_rewardgiven = 1 SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR bs_bronze_generator TRUE SWITCH_CAR_GENERATOR bs_bronze_generator 101 bs_bronze_rewardgiven = 2 ENDIF flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////// GOSUBS /////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// bs_draw_tv_screen:////////////////////////////////////////////////////////////////////// //FADE_OUT IF bs_fade_flag = 1 IF bs_alpha < 255 bs_alpha = bs_alpha + 5 IF bs_alpha > 255 bs_alpha = 255 ENDIF ELSE bs_fade_flag = 2 ENDIF ENDIF //FADE_IN IF bs_fade_flag = 3 IF bs_alpha > 0 bs_alpha = bs_alpha - 5 IF bs_alpha < 0 bs_alpha = 0 ENDIF ELSE bs_fade_flag = 0 ENDIF ENDIF //which test GOSUB bs_test_name_text SET_TEXT_CENTRE OFF SET_TEXT_DROPSHADOW 0 0 0 0 255 IF mission_selection = 1 DISPLAY_TEXT fTitleX fTitleY BS_A //The 360 IF bs_the360_best_score > 69 bs_which_score_displayed = bs_the360_best_score ELSE bs_which_score_displayed = bs_the360_best_score GOSUB bs_small_onscreen_text SET_TEXT_DROPSHADOW 0 0 0 0 255 SET_TEXT_COLOUR 166 202 240 255 DISPLAY_TEXT fStringX fStringY BS_Z_3 // Get over 70% ENDIF GOSUB bs_drawing_medal ENDIF IF mission_selection = 2 DISPLAY_TEXT fTitleX fTitleY BS_B //The 180 IF bs_the180_best_score > 69 bs_which_score_displayed = bs_the180_best_score ELSE bs_which_score_displayed = bs_the180_best_score GOSUB bs_small_onscreen_text SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_DROPSHADOW 0 0 0 0 255 SET_TEXT_COLOUR 166 202 240 255 DISPLAY_TEXT fStringX fStringY BS_Z_3 // Get over 70% ENDIF GOSUB bs_drawing_medal ENDIF IF mission_selection = 3 DISPLAY_TEXT fTitleX fTitleY BS_C //The Wheelie IF bs_wheelie_best_score > 69 bs_which_score_displayed = bs_wheelie_best_score ELSE bs_which_score_displayed = bs_wheelie_best_score GOSUB bs_small_onscreen_text SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_DROPSHADOW 0 0 0 0 255 SET_TEXT_COLOUR 166 202 240 255 DISPLAY_TEXT fStringX fStringY BS_Z_3 // Get over 70% ENDIF GOSUB bs_drawing_medal ENDIF IF mission_selection = 5 DISPLAY_TEXT fTitleX fTitleY BS_D //The Stoppie IF bs_stoppie_best_score > 69 bs_which_score_displayed = bs_stoppie_best_score ELSE bs_which_score_displayed = bs_stoppie_best_score GOSUB bs_small_onscreen_text SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_DROPSHADOW 0 0 0 0 255 SET_TEXT_COLOUR 166 202 240 255 DISPLAY_TEXT fStringX fStringY BS_Z_3 // Get over 70% ENDIF GOSUB bs_drawing_medal ENDIF IF mission_selection = 4 DISPLAY_TEXT fTitleX fTitleY BS_E //Jump & Stop IF bs_jumpstop_best_score > 69 bs_which_score_displayed = bs_jumpstop_best_score ELSE bs_which_score_displayed = bs_jumpstop_best_score GOSUB bs_small_onscreen_text SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_DROPSHADOW 0 0 0 0 255 SET_TEXT_COLOUR 166 202 240 255 DISPLAY_TEXT fStringX fStringY BS_Z_3 // Get over 70% ENDIF GOSUB bs_drawing_medal ENDIF IF mission_selection = 6 DISPLAY_TEXT fTitleX fTitleY BS_F //Jump & Stoppie IF bs_jumpstoppie_best_score > 69 bs_which_score_displayed = bs_jumpstoppie_best_score ELSE bs_which_score_displayed = bs_jumpstoppie_best_score GOSUB bs_small_onscreen_text SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_DROPSHADOW 0 0 0 0 255 SET_TEXT_COLOUR 166 202 240 255 DISPLAY_TEXT fStringX fStringY BS_Z_3 // Get over 70% ENDIF GOSUB bs_drawing_medal ENDIF GOSUB DrawAspectCorrectingQuads // For aspect correction. //TV SCREEN HUD DRAW_SPRITE 9 320.0 224.0 640.0 448.0 150 150 150 255 RETURN///////////////////////////////////////////////////////////////////////////////////// bs_drawing_medal:////////////////////////////////////////////////////////////////////////// //background for medal, ribbons and score //best score GOSUB bs_small_onscreen_text SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_COLOUR 166 202 240 255 IF bs_which_score_displayed > 69 SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_DROPSHADOW 0 0 0 0 255 DISPLAY_TEXT_WITH_NUMBER fStringX fStringY BS_Y_6 bs_which_score_displayed ENDIF //no medal IF bs_which_score_displayed < 70 bs_which_medal_displayed = 1 ENDIF //bronze IF bs_which_score_displayed > 69 IF bs_which_score_displayed < 85 bs_which_medal_displayed = 2 ENDIF ENDIF //silver IF bs_which_score_displayed > 84 IF bs_which_score_displayed < 100 bs_which_medal_displayed = 3 ENDIF ENDIF //gold IF bs_which_score_displayed = 100 bs_which_medal_displayed = 4 ENDIF //which medal awarded IF bs_which_medal_displayed = 1 DRAW_SPRITE 6 510.0 80.0 166.0 77.0 160 160 160 255 ENDIF //bronze IF bs_which_medal_displayed = 2 DRAW_SPRITE 4 510.0 85.0 170.0 75.0 255 255 255 255 DRAW_SPRITE 1 510.0 85.0 80.0 75.0 255 255 255 255 ENDIF //silver IF bs_which_medal_displayed = 3 DRAW_SPRITE 4 510.0 85.0 170.0 75.0 255 255 255 255 DRAW_SPRITE 2 510.0 85.0 80.0 75.0 255 255 255 255 ENDIF //gold IF bs_which_medal_displayed = 4 DRAW_SPRITE 4 510.0 85.0 170.0 75.0 255 255 255 255 DRAW_SPRITE 3 510.0 85.0 80.0 75.0 255 255 255 255 ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// // ------------------------------------------------------------------------------------------------ // Play back demos of each test... bs_watching_demo: IF playback_flag = 0 IF mission_selection = 1 GOSUB bs_setup_360 ENDIF IF mission_selection = 2 GOSUB bs_setup_180 ENDIF IF mission_selection = 3 GOSUB bs_setup_wheelie ENDIF IF NOT IS_XBOX_VERSION // HACKED - mobile version check IF mission_selection = 5 GOSUB bs_setup_stoppie ENDIF ENDIF IF mission_selection = 4 GOSUB bs_setup_jump_and_stop ENDIF IF NOT IS_XBOX_VERSION // HACKED - mobile version check IF mission_selection = 6 GOSUB bs_setup_jump_and_stoppie ENDIF ENDIF playback_flag = 1 ENDIF IF playback_flag = 1 //loading in car recordings. IF NOT IS_CAR_DEAD instructor_bike IF NOT HAS_CAR_RECORDING_BEEN_LOADED playback_selection REQUEST_CAR_RECORDING playback_selection ELSE //playing back car recordings START_PLAYBACK_RECORDED_CAR instructor_bike playback_selection bs_fade_flag = 3 //FADE_IN playback_flag = 2 ENDIF ENDIF ENDIF //waiting for playback to finish IF playback_flag = 2 IF NOT IS_CAR_DEAD instructor_bike IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR instructor_bike bs_fade_flag = 1 //FADE_OUT playback_flag = 4 ENDIF ELSE bs_fade_flag = 1 //FADE_OUT playback_flag = 4 ENDIF ENDIF //overriding playback IF playback_flag = 3 bs_fade_flag = 1 //FADE_OUT playback_flag = 4 ENDIF //waiting for screen to FADE_OUT and cleaning everything up IF playback_flag = 4 //IF bs_fade_flag = 2 DO_FADE 0 FADE_OUT STOP_PLAYBACK_RECORDED_CAR instructor_bike DELETE_CAR instructor_bike DELETE_CHAR bs_instructor CLEAR_AREA noticeboard_x noticeboard_y noticeboard_z 300.0 TRUE CLEAR_ONSCREEN_TIMER car_timer FREEZE_ONSCREEN_TIMER FALSE DELETE_CAR instructor_bike GOSUB bs_deleting_cones playback_flag = 0 //ENDIF ENDIF RETURN // ------------------------------------------------------------------------------------------------ bs_small_onscreen_text://///////////////////////////////////////////////////////////////////// SET_TEXT_DRAW_BEFORE_FADE TRUE SET_TEXT_JUSTIFY ON SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_WRAPX 1000.0 SET_TEXT_PROPORTIONAL ON // was on SET_TEXT_CENTRE OFF SET_TEXT_BACKGROUND OFF SET_TEXT_SCALE 0.52 1.45 SET_TEXT_DROPSHADOW 2 0 0 0 255 SET_TEXT_FONT FONT_SPACEAGE RETURN///////////////////////////////////////////////////////////////////////////////////// bs_small_backend_text://////////////////////////////////////////////////////////////////////// SET_TEXT_JUSTIFY ON SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_WRAPX 1000.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_CENTRE OFF SET_TEXT_BACKGROUND OFF SET_TEXT_SCALE 0.52 1.45 SET_TEXT_DROPSHADOW 2 0 0 0 255 SET_TEXT_FONT FONT_SPACEAGE RETURN///////////////////////////////////////////////////////////////////////////////////// bs_which_course_text://///////////////////////////////////////////////////////////////////// //SET_TEXT_DRAW_BEFORE_FADE TRUE SET_TEXT_JUSTIFY ON SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_WRAPX 1000.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_CENTRE ON SET_TEXT_BACKGROUND OFF SET_TEXT_SCALE 0.8 2.6 SET_TEXT_DROPSHADOW 2 0 0 0 255 RETURN///////////////////////////////////////////////////////////////////////////////////// bs_test_name_text://///////////////////////////////////////////////////////////////////// //SET_TEXT_DRAW_BEFORE_FADE TRUE SET_TEXT_JUSTIFY ON SET_TEXT_RIGHT_JUSTIFY OFF SET_TEXT_WRAPX 1000.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_CENTRE ON SET_TEXT_BACKGROUND OFF SET_TEXT_SCALE 1.2 4.0 SET_TEXT_DROPSHADOW 3 0 0 0 255 SET_TEXT_FONT FONT_HEADING RETURN///////////////////////////////////////////////////////////////////////////////////// bs_menu_scores_onscreen_text:///////////////////////////////////////////////////////////////// SET_TEXT_DRAW_BEFORE_FADE TRUE SET_TEXT_JUSTIFY ON SET_TEXT_WRAPX 1000.0 SET_TEXT_PROPORTIONAL ON SET_TEXT_CENTRE ON SET_TEXT_BACKGROUND OFF SET_TEXT_SCALE 1.0 3.8 SET_TEXT_DROPSHADOW 2 0 0 0 255 SET_TEXT_FONT FONT_SPACEAGE RETURN///////////////////////////////////////////////////////////////////////////////////// bs_start_initialise_stuff://////////////////////////////////////////////////////////////////// DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // IF mission_selection = 16 // SET_CAR_DENSITY_MULTIPLIER 1.0 // SET_PED_DENSITY_MULTIPLIER 1.0 // ELSE // SET_CAR_DENSITY_MULTIPLIER 0.0 // SET_PED_DENSITY_MULTIPLIER 0.0 // ENDIF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER //FORCE_WEATHER_NOW WEATHER_EXTRA_SUNNY //SET_AREA_VISIBLE 0 RETURN///////////////////////////////////////////////////////////////////////////////////// bs_setting_up_variables:////////////////////////////////////////////////////////////////////// area_check1ax = 0.0 area_check1ay = 0.0 area_check1bx = 0.0 area_check1by = 0.0 area_check2ax = 0.0 area_check2ay = 0.0 area_check2bx = 0.0 area_check2by = 0.0 area_check3ax = 0.0 area_check3ay = 0.0 area_check3bx = 0.0 area_check3by = 0.0 area_check4ax = 0.0 area_check4ay = 0.0 area_check4bx = 0.0 area_check4by = 0.0 button_pressed = 0 car_posx = 0.0 car_posy = 0.0 cone_coords_x = 0.0 cone_coords_y = 0.0 cone_coords_z = 0.0 cone_circle_radius = 10.0 car_started = 0 circle_start_x = 0.0 circle_start_y = 0.0 camera_positionx = 0.0 camera_positiony = 0.0 camera_positionz = 0.0 camera_position_int = 0 dummy_car1_health = 0 dummy_car2_health = 0 finish_leftx = 0.0 finish_lefty = 0.0 finish_rightx = 0.0 finish_righty = 0.0 finished_watching_scores = 0 heading_score = 0 instructor_bike_speed = 0.0 instructor_bike_heading = 0.0 instructor_bike_follow_heading = 0.0 instructor_bike_heading_int = 0 instructor_bike_health = 0 instructor_bike_dead_flag = 0 lap_counter = 0 lap1_secs = 0 lap1_millisecs = 0 lap2_secs = 0 lap2_millisecs = 0 lap3_secs = 0 lap3_millisecs = 0 lap4_secs = 0 lap4_millisecs = 0 lap5_secs = 0 lap5_millisecs = 0 overall_lap1 = 0 overall_lap2 = 0 overall_lap3 = 0 overall_lap4 = 0 overall_lap5 = 0 overall_secs = 0 overall_millisecs = 0 overall_score = 0 other_car_damage = 0 perfect_positionx = start_coordsx perfect_positiony = start_coordsy GET_GROUND_Z_FOR_3D_COORD perfect_positionx perfect_positiony 50.0 perfect_positionz //perfect_positionz = 9.0 player_car_damage = 0 players_distance_from_perfectpos = 0.0 position_score = 0 time_score = 0 total_instructor_bike_health = 0 total_dummy_car1_health = 0 total_dummy_car2_health = 0 total_car_damage = 0 variablea = 0 variableb = 0.0 variablec = 0 variabled = 0 where_to_place_cones = 0.0 instructor_bike_roll = 0.0 instructor_bike_roll_score = 0 instructor_bike_roll_plus_minus = 0 bs_print_top_scores_flag = 0 bs_direction_flag = 0 RETURN///////////////////////////////////////////////////////////////////////////////////// bs_stop_initialise_stuff:///////////////////////////////////////////////////////////////////// WARP_CHAR_INTO_CAR scplayer instructor_bike LOCK_CAR_DOORS instructor_bike CARLOCK_LOCKED_PLAYER_INSIDE WAIT 0 DISPLAY_RADAR TRUE RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON RETURN///////////////////////////////////////////////////////////////////////////////////// instructor_bike_dead://///////////////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD instructor_bike IF car_started = 1 IF NOT IS_CHAR_IN_CAR scplayer instructor_bike instructor_bike_dead_flag = 1 ENDIF ENDIF ELSE instructor_bike_dead_flag = 1 ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// bs_has_car_started://///////////////////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD instructor_bike IF IS_CHAR_IN_CAR scplayer instructor_bike GET_CAR_SPEED instructor_bike instructor_bike_speed ENDIF ENDIF IF instructor_bike_speed > 0.1 CLEAR_PRINTS IF mission_selection = 1 OR mission_selection = 2 OR mission_selection = 3 OR mission_selection = 5 OR mission_selection = 4 OR mission_selection = 6 SET_TEXT_CENTRE ON DISPLAY_ONSCREEN_TIMER_WITH_STRING car_timer TIMER_DOWN BB_19 // Time ENDIF car_started = 1 ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// bs_car_timer_0://///////////////////////////////////////////////////////////////////////////// IF car_timer = 0 SET_PLAYER_CONTROL player1 off APPLY_BRAKES_TO_PLAYERS_CAR player1 TRUE ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// bs_freeze_car_pos://////////////////////////////////////////////////////////////////////////// SET_PLAYER_CONTROL player1 off //FREEZE_CAR_POSITION instructor_bike TRUE FREEZE_ONSCREEN_TIMER TRUE RETURN///////////////////////////////////////////////////////////////////////////////////// bs_position_score_calcs:////////////////////////////////////////////////////////////////////// GET_CAR_COORDINATES instructor_bike player_x player_y player_z GET_DISTANCE_BETWEEN_COORDS_2D player_x player_y perfect_positionx perfect_positiony players_distance_from_perfectpos IF players_distance_from_perfectpos > 1.0//0.5 IF players_distance_from_perfectpos < 10.0 players_distance_from_perfectpos -= 1.0//0.5 players_distance_from_perfectpos *= 10.42 //10.42 = 99(which is highest score possible) / 9.5 ( which is 10 - 0.5) variablea =# players_distance_from_perfectpos position_score = 100 - variablea ELSE position_score = 0 ENDIF ELSE position_score = 100 ENDIF overall_score += position_score RETURN///////////////////////////////////////////////////////////////////////////////////// bs_damage_score_calcs://////////////////////////////////////////////////////////////////////// GET_CAR_HEALTH instructor_bike instructor_bike_health player_car_damage = 1000 - instructor_bike_health //debug - changed damage from 10 to 2 to make the missions harder //player_car_damage /= 10 IF mission_selection = 16 player_car_damage /= 10 ELSE player_car_damage /= 2 ENDIF IF player_car_damage > 100 player_car_damage = 100 ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// bs_damage_cones_calcs://////////////////////////////////////////////////////////////////////// total_car_damage = 0 trafficcone_counter = 0 IF mission_selection = 1 WHILE trafficcone_counter < 15 IF HAS_OBJECT_BEEN_DAMAGED trafficcones[trafficcone_counter] total_car_damage += 10 ENDIF trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 2 WHILE trafficcone_counter < 25 IF HAS_OBJECT_BEEN_DAMAGED trafficcones[trafficcone_counter] total_car_damage += 10 ENDIF trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 3 OR mission_selection = 5 WHILE trafficcone_counter < 30 IF HAS_OBJECT_BEEN_DAMAGED trafficcones[trafficcone_counter] total_car_damage += 10 ENDIF trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 4 OR mission_selection = 6 WHILE trafficcone_counter < 14 IF HAS_OBJECT_BEEN_DAMAGED trafficcones[trafficcone_counter] total_car_damage += 10 ENDIF trafficcone_counter ++ ENDWHILE ENDIF //debug - increasing damage score? total_car_damage = total_car_damage * 2 IF total_car_damage > 90 total_car_damage = 100 ENDIF overall_score -= total_car_damage RETURN///////////////////////////////////////////////////////////////////////////////////// bs_checking_overall_score://////////////////////////////////////////////////////////////////// IF overall_score < 1 overall_score = 0 ENDIF CLEAR_PRINTS RETURN///////////////////////////////////////////////////////////////////////////////////// bs_setting_up_camera:///////////////////////////////////////////////////////////////////////// IF NOT IS_CAR_DEAD instructor_bike IF camera_position_int = 0 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike 10.0 0.0 5.0 camera_positionx camera_positiony camera_positionz camera_positionz = 15.0 SET_FIXED_CAMERA_POSITION camera_positionx camera_positiony camera_positionz 0.0 0.0 0.0 POINT_CAMERA_AT_CAR instructor_bike FIXED INTERPOLATION SET_INTERPOLATION_PARAMETERS 50.0 2000 //driving stats //INCREMENT_FLOAT_STAT DRIVING_SKILL 50.0 camera_position_int = 1 ENDIF IF timera > 3000 IF timera < 6000 IF camera_position_int = 1 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike 0.0 10.0 5.0 camera_positionx camera_positiony camera_positionz camera_positionz = 15.0 SET_FIXED_CAMERA_POSITION camera_positionx camera_positiony camera_positionz 0.0 0.0 0.0 POINT_CAMERA_AT_CAR instructor_bike FIXED INTERPOLATION SET_INTERPOLATION_PARAMETERS 50.0 2000 camera_position_int = 2 ENDIF ENDIF ENDIF IF timera > 6000 IF camera_position_int = 2 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike -10.0 0.0 5.0 camera_positionx camera_positiony camera_positionz camera_positionz = 15.0 SET_FIXED_CAMERA_POSITION camera_positionx camera_positiony camera_positionz 0.0 0.0 0.0 POINT_CAMERA_AT_CAR instructor_bike FIXED INTERPOLATION SET_INTERPOLATION_PARAMETERS 50.0 2000 camera_position_int = 3 ENDIF ENDIF IF timera > 9000 camera_position_int = 1 timera = 0 ENDIF ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// bs_medal_check://////////////////////////////////////////////////////////////////////////// bs_which_medal_displayed = 0 //bronze IF overall_score > 69 IF overall_score < 85 IF bs_old_score > 69 AND bs_old_score < 85 bs_which_medal_displayed = 0 ELSE bs_which_medal_displayed = 2 ENDIF ENDIF ENDIF //silver IF overall_score > 84 IF overall_score < 100 IF bs_old_score > 84 AND bs_old_score < 100 bs_which_medal_displayed = 0 ELSE bs_which_medal_displayed = 3 ENDIF ENDIF ENDIF //gold IF overall_score = 100 IF bs_old_score = 100 //OR bs_jumpstoppie_best_score = 100 bs_which_medal_displayed = 0 ELSE bs_which_medal_displayed = 4 ENDIF ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// bs_display_head_pos_dam_text:///////////////////////////////////////////////////////////////// DISPLAY_HUD FALSE DISPLAY_RADAR FALSE CLEAR_PRINTS CLEAR_ONSCREEN_TIMER car_timer IF bs_which_medal_displayed < 2 // no medal, 2 is bronze SET_TEXT_CENTRE ON SET_TEXT_SCALE 5.0 5.0 SET_TEXT_FONT FONT_BANK DISPLAY_TEXT 320.0 195.0 BS_Z_8 //nColor = WHITE:0 || BLUE:1 || GREEN:2 //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_RESULTS 0 0 0 0 0 0.0 BS_Z_8 ELSE //nColor = WHITE:0 || BLUE:1 || GREEN:2 //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_AWARD 0 0 0 0 0 0.0 BS_Z_8 ENDIF LVAR_FLOAT fTempVal fTempVal = 0.0 // DRAWING THE SCORE NAMES // fTempVal =# heading_score //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_ONE 1 1 0 0 2 fTempVal BS_Y_1 fTempVal =# position_score //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_TWO 1 1 0 0 2 fTempVal BS_Y_2 fTempVal =# total_car_damage //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_THREE 1 1 0 0 2 fTempVal BS_Y_3 fTempVal =# overall_score //widgetID, bTitle, bPercentage, bTime, bNumber, nColor, fValue, szTitle SET_WIDGET_INFO WIDGET_SCHOOL_FRAME_FOUR 1 1 0 0 2 fTempVal BS_Y_5 // DISPLAYING MEDALS // IF bs_print_top_scores_flag = 1 OR bs_print_top_scores_flag = 2 IF bs_which_medal_displayed > 0 DRAW_SPRITE 4 320.0 205.0 200.0 85.0 255 255 255 255 IF bs_which_medal_displayed = 2 DRAW_SPRITE 1 320.0 205.0 92.0 85.0 255 255 255 255 // bronze ENDIF IF bs_which_medal_displayed = 3 DRAW_SPRITE 2 320.0 205.0 92.0 85.0 255 255 255 255 // silver ENDIF IF bs_which_medal_displayed = 4 DRAW_SPRITE 3 320.0 205.0 92.0 85.0 255 255 255 255 // gold ENDIF //NEW CERTIFICATE AWARDED! GOSUB bs_test_name_text SET_TEXT_EDGE 2 0 0 0 255 SET_TEXT_SCALE 1.0 3.4 SET_TEXT_DRAW_BEFORE_FADE TRUE SET_TEXT_COLOUR 189 131 24 255 DISPLAY_TEXT 323.0 65.0 BS_Y_9 //NEW CERTIFICATE AWARDED! ENDIF ENDIF IF bs_print_top_scores_flag = 1 OR bs_print_top_scores_flag = 2 // NEW HIGH SCORE GOSUB bs_test_name_text SET_TEXT_EDGE 2 0 0 0 255 SET_TEXT_SCALE 1.0 3.4 SET_TEXT_COLOUR 255 255 255 255 DISPLAY_TEXT 323.0 110.0 BS_Y_8 //NEW HIGH SCORE! ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// bs_skip_scores://///////////////////////////////////////////////////////////////////////////// IF IS_WIDGET_RELEASED WIDGET_SCHOOL_CONTINUE IF button_pressed = 1 button_pressed = 0 finished_watching_scores = 1 ENDIF ELSE IF button_pressed = 0 button_pressed = 1 ENDIF ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// bs_mini_cleanup:////////////////////////////////////////////////////////////////////////////// REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_BIKE_AWARD_TRACK_STOP DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS IF flag_bikeschool_passed_1stime = 0 IF bs_passed = 1 GOSUB bs_draw_tv_screen ENDIF ENDIF CLEAR_PRINTS WAIT 0 ENDWHILE //SET_AREA_VISIBLE 3 CLEAR_PRINTS CLEAR_THIS_BIG_PRINT BS_Y_8 CLEAR_THIS_BIG_PRINT BS_Y_9 APPLY_BRAKES_TO_PLAYERS_CAR player1 FALSE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer IF instructor_bike_dead_flag = 2 CLEAR_PRINTS IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1171.5206 1351.1826 9.9219 ELSE SET_CHAR_COORDINATES scplayer 1171.5206 1351.1826 9.9219 ENDIF ELSE IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1171.5206 1351.1826 9.9219 ELSE SET_CHAR_COORDINATES scplayer 1171.5206 1351.1826 9.9219 ENDIF ENDIF SET_CHAR_HEADING scplayer 5.0 // WAIT 0 DELETE_CAR instructor_bike CLEAR_AREA 1171.5206 1351.1826 9.9219 2.0 TRUE RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER // WAIT 0 CLEAR_ONSCREEN_TIMER car_timer FREEZE_ONSCREEN_TIMER FALSE RETURN///////////////////////////////////////////////////////////////////////////////////// bs_deleting_cones://////////////////////////////////////////////////////////////////////////// trafficcone_counter = 0 WHILE trafficcone_counter < 46 DELETE_OBJECT trafficcones[trafficcone_counter] trafficcone_counter ++ ENDWHILE IF DOES_OBJECT_EXIST bs_ramp DELETE_OBJECT bs_ramp ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// bs_creating_cones://////////////////////////////////////////////////////////////////////////// trafficcone_counter = 0 IF mission_selection = 1 WHILE trafficcone_counter < 15 CREATE_OBJECT_NO_OFFSET trafficcone 0.0 0.0 500.0 trafficcones[trafficcone_counter] trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 2 WHILE trafficcone_counter < 25 CREATE_OBJECT_NO_OFFSET trafficcone 0.0 0.0 500.0 trafficcones[trafficcone_counter] trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 3 OR mission_selection = 5 WHILE trafficcone_counter < 30 CREATE_OBJECT_NO_OFFSET trafficcone 0.0 0.0 500.0 trafficcones[trafficcone_counter] trafficcone_counter ++ ENDWHILE ENDIF IF mission_selection = 4 OR mission_selection = 6 WHILE trafficcone_counter < 14 CREATE_OBJECT_NO_OFFSET trafficcone 0.0 0.0 500.0 trafficcones[trafficcone_counter] trafficcone_counter ++ ENDWHILE CREATE_OBJECT_NO_OFFSET landjump2 0.0 0.0 500.0 bs_ramp SET_OBJECT_COLLISION bs_ramp TRUE ENDIF //placing cones for the 360 IF mission_selection = 1 cone_circle_radius = 6.0 //creating a pure circle where_to_place_cones = 0.0 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike 0.0 1.0 -0.2 circle_start_x circle_start_y cone_coords_z bs_creating_cone_circle4: SIN where_to_place_cones cone_coords_x cone_coords_x = cone_coords_x * cone_circle_radius cone_coords_x = cone_coords_x + circle_start_x COS where_to_place_cones cone_coords_y cone_coords_y = cone_coords_y * cone_circle_radius cone_coords_y = cone_coords_y + circle_start_y IF where_to_place_cones = 0.0 SET_OBJECT_COORDINATES trafficcones[0] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 24.0 SET_OBJECT_COORDINATES trafficcones[1] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 48.0 SET_OBJECT_COORDINATES trafficcones[2] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 72.0 SET_OBJECT_COORDINATES trafficcones[3] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 96.0 SET_OBJECT_COORDINATES trafficcones[4] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 120.0 SET_OBJECT_COORDINATES trafficcones[5] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 144.0 SET_OBJECT_COORDINATES trafficcones[6] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 168.0 SET_OBJECT_COORDINATES trafficcones[7] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 192.0 SET_OBJECT_COORDINATES trafficcones[8] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 216.0 SET_OBJECT_COORDINATES trafficcones[9] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 240.0 SET_OBJECT_COORDINATES trafficcones[10] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 264.0 SET_OBJECT_COORDINATES trafficcones[11] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 288.0 SET_OBJECT_COORDINATES trafficcones[12] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 312.0 SET_OBJECT_COORDINATES trafficcones[13] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 336.0 SET_OBJECT_COORDINATES trafficcones[14] cone_coords_x cone_coords_y cone_coords_z ENDIF where_to_place_cones = where_to_place_cones + 24.0 IF where_to_place_cones < 360.0 GOTO bs_creating_cone_circle4 ENDIF // trafficcone_counter = 0 // WHILE trafficcone_counter < 15 // SET_OBJECT_COLLISION trafficcones[trafficcone_counter] TRUE // SET_OBJECT_DYNAMIC trafficcones[trafficcone_counter] TRUE // trafficcone_counter ++ // ENDWHILE ENDIF //placing cones for the 180 IF mission_selection = 2 //creating the semi circle at the end of the straight cone_circle_radius = 6.0 where_to_place_cones = 90.0 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS instructor_bike 0.0 86.0 -0.2 circle_start_x circle_start_y cone_coords_z bs_creating_cone_circle3: SIN where_to_place_cones cone_coords_x cone_coords_x = cone_coords_x * cone_circle_radius cone_coords_x = cone_coords_x + circle_start_x COS where_to_place_cones cone_coords_y cone_coords_y = cone_coords_y * cone_circle_radius cone_coords_y = cone_coords_y + circle_start_y IF where_to_place_cones = 120.0 SET_OBJECT_COORDINATES trafficcones[0] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 150.0 SET_OBJECT_COORDINATES trafficcones[1] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 180.0 SET_OBJECT_COORDINATES trafficcones[2] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 210.0 SET_OBJECT_COORDINATES trafficcones[3] cone_coords_x cone_coords_y cone_coords_z ENDIF IF where_to_place_cones = 240.0 SET_OBJECT_COORDINATES trafficcones[4] cone_coords_x cone_coords_y cone_coords_z ENDIF where_to_place_cones = where_to_place_cones + 42.0//30.0 IF where_to_place_cones < 271.0 GOTO bs_creating_cone_circle3 ENDIF //RUNWAY UP TO CIRCLE //1st set left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[7] instructor_bike -7.0 74.0 -0.2 //1st set right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[8] instructor_bike 7.0 74.0 -0.2 //2nd set left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[9] instructor_bike -7.0 78.0 -0.2 //2nd set right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[10] instructor_bike 7.0 78.0 -0.2 //3rd set left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[11] instructor_bike -7.0 82.0 -0.2 //3rd set right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[12] instructor_bike 7.0 82.0 -0.2 //4th set left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[13] instructor_bike -7.0 86.0 -0.2 //4th set right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[14] instructor_bike 7.0 86.0 -0.2 //3rd centre cone PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[15] instructor_bike 0.0 82.0 -0.2 //AROUND CAR //front left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[16] instructor_bike -3.0 4.0 -0.2 //front right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[17] instructor_bike 3.0 4.0 -0.2 //left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[18] instructor_bike -3.0 0.0 -0.2 //right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[19] instructor_bike 3.0 0.0 -0.2 //back left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[20] instructor_bike -3.0 -4.0 -0.2 //back right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[21] instructor_bike 3.0 -4.0 -0.2 //back of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[22] instructor_bike 0.0 -4.0 -0.2 //EXTRA CENTRE CONES.... //1st centre cone PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[23] instructor_bike 0.0 74.0 -0.2 //2nd centre cone PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[24] instructor_bike 0.0 78.0 -0.2 // trafficcone_counter = 0 // WHILE trafficcone_counter < 25 // SET_OBJECT_COLLISION trafficcones[trafficcone_counter] TRUE // SET_OBJECT_DYNAMIC trafficcones[trafficcone_counter] TRUE // trafficcone_counter ++ // ENDWHILE ENDIF //placing cones for Wheelie and Stoppie IF mission_selection = 3 OR mission_selection = 5 //AROUND CAR //front left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[0] instructor_bike -3.0 4.0 -0.2 //front right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[1] instructor_bike 3.0 4.0 -0.2 //left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[2] instructor_bike -3.0 0.0 -0.2 //right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[3] instructor_bike 3.0 0.0 -0.2 //back left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[4] instructor_bike -3.0 -4.0 -0.2 //back right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[5] instructor_bike 3.0 -4.0 -0.2 //back of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[6] instructor_bike 0.0 -4.0 -0.2 // Runway //1st set left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[7] instructor_bike -3.5 56.0 -0.2 //1st set right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[8] instructor_bike 3.5 56.0 -0.2 //2nd set left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[9] instructor_bike -3.5 60.0 -0.2 //2nd set right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[10] instructor_bike 3.5 60.0 -0.2 //3rd set left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[11] instructor_bike -3.5 64.0 -0.2 //3rd set right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[12] instructor_bike 3.5 64.0 -0.2 //4th set left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[13] instructor_bike -3.5 68.0 -0.2 //4th set right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[14] instructor_bike 3.5 68.0 -0.2 //5th set left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[15] instructor_bike -3.5 72.0 -0.2 //5th set right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[16] instructor_bike 3.5 72.0 -0.2 //6th set left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[17] instructor_bike -3.5 76.0 -0.2 //6th set right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[18] instructor_bike 3.5 76.0 -0.2 //7th set left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[19] instructor_bike -3.5 80.0 -0.2 //7th set right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[20] instructor_bike 3.5 80.0 -0.2 //8th set left PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[21] instructor_bike -3.5 84.0 -0.2 //8th set right PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[22] instructor_bike 3.5 84.0 -0.2 // End of course PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[23] instructor_bike -3.0 120.0 -0.2 //front right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[24] instructor_bike 3.0 120.0 -0.2 //left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[25] instructor_bike -3.0 124.0 -0.2 //right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[26] instructor_bike 3.0 124.0 -0.2 //back left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[27] instructor_bike -3.0 128.0 -0.2 //back right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[28] instructor_bike 3.0 128.0 -0.2 //back of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[29] instructor_bike 0.0 128.0 -0.2 // trafficcone_counter = 0 // WHILE trafficcone_counter < 30 // SET_OBJECT_COLLISION trafficcones[trafficcone_counter] TRUE // SET_OBJECT_DYNAMIC trafficcones[trafficcone_counter] TRUE // trafficcone_counter ++ // ENDWHILE ENDIF //placing cones for Jump And Stop IF mission_selection = 4 OR mission_selection = 6 //AROUND CAR //front left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[0] instructor_bike -3.0 4.0 -0.2 //front right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[1] instructor_bike 3.0 4.0 -0.2 //left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[2] instructor_bike -3.0 0.0 -0.2 //right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[3] instructor_bike 3.0 0.0 -0.2 //back left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[4] instructor_bike -3.0 -4.0 -0.2 //back right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[5] instructor_bike 3.0 -4.0 -0.2 //back of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[6] instructor_bike 0.0 -4.0 -0.2 PLACE_OBJECT_RELATIVE_TO_CAR bs_ramp instructor_bike 0.0 48.0 -0.2 IF mission_selection = 4 // End of course PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[7] instructor_bike -3.0 120.0 -0.2 //front right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[8] instructor_bike 3.0 120.0 -0.2 //left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[9] instructor_bike -3.0 124.0 -0.2 //right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[10] instructor_bike 3.0 124.0 -0.2 //back left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[11] instructor_bike -3.0 128.0 -0.2 //back right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[12] instructor_bike 3.0 128.0 -0.2 //back of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[13] instructor_bike 0.0 128.0 -0.2 ENDIF IF mission_selection = 6 // End of course PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[7] instructor_bike -3.0 110.0 -0.2 //front right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[8] instructor_bike 3.0 110.0 -0.2 //left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[9] instructor_bike -3.0 114.0 -0.2 //right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[10] instructor_bike 3.0 114.0 -0.2 //back left of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[11] instructor_bike -3.0 118.0 -0.2 //back right of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[12] instructor_bike 3.0 118.0 -0.2 //back of car PLACE_OBJECT_RELATIVE_TO_CAR trafficcones[13] instructor_bike 0.0 118.0 -0.2 ENDIF // trafficcone_counter = 0 // WHILE trafficcone_counter < 14 // SET_OBJECT_COLLISION trafficcones[trafficcone_counter] TRUE // SET_OBJECT_DYNAMIC trafficcones[trafficcone_counter] TRUE // trafficcone_counter ++ // ENDWHILE ENDIF RETURN///////////////////////////////////////////////////////////////////////////////////// } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : Taxiodd // AUTHOR : Keith // DESCRIPTION : Crazy Taxi - GTA style // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** { // ************************************************************************************************************* // GENERAL INITIALISATION - Every level requires this // ************************************************************************************************************* SCRIPT_NAME Taxiodd // Global Variables VAR_INT g_Taxiodd_faresKM VAR_INT g_Taxiodd_timerKM VAR_INT g_Taxiodd_bonusKM // TEMP: Destination Testing (set to TRUE to enter destination testing) LVAR_INT TEMP_flagDestinationTesting TEMP_flagDestinationTesting = FALSE // END // Mission Start stuff GOSUB Taxiodd_Mission_Start IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB Taxiodd_Mission_Ended ENDIF GOSUB Taxiodd_Mission_Cleanup MISSION_END // Global Setup Taxiodd_Mission_Start: IF done_taxiodd_progress = FALSE REGISTER_MISSION_GIVEN ENDIF // the radar will path all over the place if we dont stop it at the road DISPLAY_RADAR 4 // HACKED RADAR STOP AT ROAD flag_player_on_mission = TRUE flag_player_on_oddjob = TRUE // Check for conditions that stop the taxi missions from starting LVAR_INT nPassengers LVAR_INT nHealth LVAR_INT carTest IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_TAXI scplayer // ...player is in a taxi STORE_CAR_CHAR_IS_IN scplayer carTest // Existing Passengers Check GET_NUMBER_OF_PASSENGERS carTest nPassengers IF NOT nPassengers = 0 // ...don't start the mission if there are already passengers in the car PRINT_NOW TX_FULL 5000 1 WAIT 4500 CLEAR_PRINTS RETURN ENDIF // Car Already Trashed Check GET_CAR_HEALTH carTest nHealth IF NOT IS_CAR_HEALTH_GREATER carTest 400 // ...don't start the mission if the car is already trashed PRINT_NOW TX_ILL 5000 1 WAIT 4500 CLEAR_PRINTS RETURN ENDIF ENDIF ENDIF // KEITH: Make sure the mod garage is not active during taxi missions // NOTE: Store the initial state because it only becomes available after a certain mission // NOTE: 1 means STOP GARAGE (or turn it off) VAR_INT nHoldModGarageState nHoldModGarageState = stop_gargae_for_neil stop_gargae_for_neil = 1 // general variables that are in every mission - DON'T DECLARE MISSION SPECIFIC VARIABLES HERE LVAR_INT m_stage LVAR_INT m_goals LVAR_INT m_quit LVAR_INT m_pause LVAR_INT m_status LVAR_INT m_frame_num LVAR_INT m_this_frame_time LVAR_INT m_last_frame_time LVAR_INT m_time_diff // commonly used timers LVAR_INT m_mission_timer // Debug variables LVAR_INT display_debug VAR_INT Taxiodd_view_debug[8] // GLOBAL (for output) // useful int variables LVAR_INT nLoop LVAR_INT nLoop2 LVAR_INT nTempInt LVAR_INT nTempInt2 LVAR_INT nTempPed LVAR_INT nTempObject LVAR_INT nTempAmmo LVAR_INT nTempTimer LVAR_INT nSeqTask // useful float variables LVAR_FLOAT xposTemp yposTemp zposTemp LVAR_FLOAT xposTemp2 yposTemp2 zposTemp2 LVAR_FLOAT xposTemp3 yposTemp3 zposTemp3 LVAR_FLOAT xdiffTemp ydiffTemp zdiffTemp LVAR_FLOAT xdiffsqTemp ydiffsqTemp zdiffsqTemp LVAR_FLOAT headTemp LVAR_FLOAT xloTemp yloTemp zloTemp LVAR_FLOAT xhiTemp yhiTemp zhiTemp LVAR_FLOAT fTempFloat LVAR_FLOAT fTempFloat2 LVAR_FLOAT fTempDistance // useful flag variables LVAR_INT flagTempFlag LVAR_INT flagTempFlag2 LVAR_INT flagCutscenePlaying LVAR_INT flagCleaningUpSkippedCutscene LVAR_INT flagSkipCutscene // Clear cutscene flags flagCutscenePlaying = 0 flagCleaningUpSkippedCutscene = 0 flagSkipCutscene = 0 m_stage = 0 m_goals = 0 m_quit = 0 m_pause = 0 m_status = 0 m_mission_timer = 0 display_debug = 0 TIMERA = 0 TIMERB = 0 // Consts // ...reasons for End Mission CONST_INT TAXIODD_END_UNKNOWN 0 CONST_INT TAXIODD_END_NOT_IN_TAXI 1 CONST_INT TAXIODD_END_OUT_OF_TIME 2 CONST_INT TAXIODD_END_TAXI_FUCKED 3 // Stage 1 Goals CONST_INT TAXIODD_STAGE1GOAL_FIND_POTENTIAL_CUSTOMER 1 CONST_INT TAXIODD_STAGE1GOAL_PICKUP_POTENTIAL_CUSTOMER 2 CONST_INT TAXIODD_STAGE1GOAL_GET_TAXI_REPAIRED 10 CONST_INT TAXIODD_STAGE1GOAL_DISPLAYING_NITRO_MESSAGE 20 // Taxi Look At Thresholds CONST_FLOAT TAXIODD_TAXI_LOOK_AT_THRESHOLD 4.0 // In a Row bonus CONST_INT TAXIODD_IN_A_ROW_JOBS_INCREASE 5 CONST_INT TAXIODD_IN_A_ROW_BONUS_INCREASE 500 // Pay and Spray CONST_INT TAXIODD_MAX_PAY_AND_SPRAY_ON_DISPLAY 3 // Pickup distances CONST_FLOAT TAXIODD_ENTER_CAR_DISTANCE 10.0 CONST_FLOAT TAXIODD_HAIL_TAXI_SPEECH_DISTANCE 10.0 CONST_INT TAXIODD_ALLOW_HAIL_TO_CANCEL_TIME 300 // Direction Helper objects CONST_INT TAXIODD_HELPER_FRONT 0 CONST_INT TAXIODD_HELPER_BACK 1 CONST_INT TAXIODD_HELPER_LEFT 2 CONST_INT TAXIODD_HELPER_RIGHT 3 // ----------- CONST_INT TAXIODD_MAX_HELPERS 4 // Above + 1 // Passenger Doors CONST_INT TAXIODD_REAR_DRIVER_DOOR 1 CONST_INT TAXIODD_REAR_PASSENGER_DOOR 2 // Speed Bonus (Tip) consts CONST_INT TAXIODD_TIP_PERCENT 95 CONST_INT TAXIODD_DAMAGE_POINT_COST_msec 180 // General CONST_INT TAXIODD_NO_NEARBY_PEDS -1 CONST_INT TAXIODD_PERSIST -2 CONST_INT TAXIODD_NO_CHAR_MODEL -1 // Mission Specific Variables // Integer Variables // ...chars (char) LVAR_INT charCustomer //LVAR_INT charPreviousCustomer // ...cars (car) LVAR_INT carTaxi // ...objects (object) LVAR_INT objectHelpers[TAXIODD_MAX_HELPERS] // ...models (model) LVAR_INT modelCustomer LVAR_INT modelPreviousCustomer // ...blips (blip) LVAR_INT blipCustomer LVAR_INT blipDestination LVAR_INT blipPayAndSpray[TAXIODD_MAX_PAY_AND_SPRAY_ON_DISPLAY] // ...pickups (pickup) // ...fx systems (fx) // ...decision makers (dm) LVAR_INT dmEmpty // ...AI Status (ai) // ...general status (status) // ...Timers (timer) LVAR_INT timerPickupText LVAR_INT timerJobStartTime LVAR_INT timerJobBonusTime LVAR_INT timerTipBarHelp LVAR_INT timerNitro LVAR_INT timerAllowHailToCancel // ...Counters (count) // ...mission specific (n) LVAR_INT nEndMissionReason LVAR_INT nEarnings LVAR_INT nDestinationID LVAR_INT nDestinationDistance LVAR_INT nBonusTimeFromBadPlace LVAR_INT nBonusTimeToBadPlace LVAR_INT nNextInARowJobs LVAR_INT nNextInARowBonus LVAR_INT nIgnore LVAR_INT nMissionStartHealth // Text Label Variables // Float Variables // ...area variables (xlo, ylo, zlo, xhi, yhi, zhi) // ...position variables (xpos, ypos, zpos) LVAR_FLOAT xposTaxiLookAT yposTaxiLookAt zposTaxiLookAt LVAR_FLOAT xposDestination yposDestination zposDestination // Boolean Variables // ...flags (flag) LVAR_INT flagEndMission LVAR_INT flagPassThisJob LVAR_INT flagFailThisJob LVAR_INT flagPlayerInTaxi LVAR_INT flagPotentialCustomerSelected LVAR_INT flagPlayerStoppedCloseToPotentialCustomer LVAR_INT flagTimerOnDisplay LVAR_INT flagArrivedAtDestination LVAR_INT flagBonusOnDisplay LVAR_INT flagTaxiNeedsRepaired LVAR_INT flagPayAndSprayOnDisplay LVAR_INT flagWaitForQuitButtonRelease LVAR_INT flagPotentialCustomerFound LVAR_INT flagDisplayingNoNearbyPedsText LVAR_INT flagSaidTaxiBail LVAR_INT flagImmediateRepair LVAR_INT flagOnRightSide LVAR_INT flagAtFront LVAR_INT flagReceivingInARowBonus LVAR_INT flagDisplayedTipBarHelp LVAR_INT flagNitroOnDisplay LVAR_INT flagSaidTaxiHail // ...exists flags (exists) // Clear Exists Flags // ...loaded flags // Clear Loaded Flags // Clear timers timerPickupText = 0 // Clear important flags flagPlayerInTaxi = FALSE flagTimerOnDisplay = FALSE flagBonusOnDisplay = FALSE flagTaxiNeedsRepaired = FALSE flagPayAndSprayOnDisplay = FALSE flagWaitForQuitButtonRelease = FALSE flagPotentialCustomerFound = FALSE flagDisplayingNoNearbyPedsText = FALSE flagImmediateRepair = FALSE flagOnRightSide = FALSE flagAtFront = FALSE flagReceivingInARowBonus = FALSE flagDisplayedTipBarHelp = FALSE flagNitroOnDisplay = FALSE flagSaidTaxiHail = FALSE // End Mission Controls flagEndMission = FALSE flagPassThisJob = FALSE flagFailThisJob = FALSE nEndMissionReason = TAXIODD_END_UNKNOWN // Cleanup testing LVAR_INT nCleanupTest_MissionPeds nCleanupTest_MissionPeds = 0 // ***** FAKE ENTITY CREATION TO FOOL THE COMPILER ***** // The compiler just needs to verify there is a CREATE_ before usage IF m_stage = -99 WRITE_DEBUG SHOULD_NEVER_BE_IN_FAKE_ENTITY_CREATION // Cars CREATE_CAR TAXI 0.0 0.0 0.0 carTaxi // Peds CREATE_CHAR PEDTYPE_CIVMALE WMYBU 0.0 0.0 0.0 charCustomer // CREATE_CHAR PEDTYPE_CIVMALE WMYBU 0.0 0.0 0.0 charPreviousCustomer // Objects REPEAT TAXIODD_MAX_HELPERS nLoop CREATE_OBJECT CR_AMMOBOX 0.0 0.0 0.0 objectHelpers[nLoop] ENDREPEAT // Blips ADD_BLIP_FOR_CHAR charCustomer blipCustomer ADD_BLIP_FOR_COORD 0.0 0.0 0.0 blipDestination REPEAT TAXIODD_MAX_PAY_AND_SPRAY_ON_DISPLAY nLoop ADD_BLIP_FOR_COORD 0.0 0.0 0.0 blipPayAndSpray[nLoop] ENDREPEAT ENDIF // Mission Text LOAD_MISSION_TEXT TAXI1 // Intro Cutscene GOSUB Taxiodd_Intro_Cutscene // Load Char Mission Decision Makers // NOTE: Do it before the Initialisation because they make the game pause. Done here, the pause is hidden by a fade. LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY dmEmpty // Mission Initialisation GOSUB Taxiodd_Initialisation // TEMP: Destination Testing IF TEMP_flagDestinationTesting = TRUE GOTO Taxiodd_Destination_Testing ENDIF // END TEMP // ************************************************************************************************************* // MISSION LOOP // ************************************************************************************************************* Taxiodd_Mission_Loop: WAIT 0 // Debug Stuff GOSUB Taxiodd_Debug_Tools GOSUB Taxiodd_Debug_Shortcuts IF m_quit = TRUE OR m_pause = TRUE GOTO Taxiodd_End_Of_Main_Loop ENDIF // Housekeeping GOSUB Taxiodd_Frame_Counter GOSUB Taxiodd_Additional_Timers // Special conditions IF IS_CHAR_DEAD scplayer flagEndMission = TRUE GOTO Taxiodd_End_Of_Main_Loop ENDIF // Mission Stage processing // *** INITIALISATION NOW TAKES PLACE BEFORE THE MAIN LOOP *** IF m_stage = 0 WRITE_DEBUG STAGE_SHOULD_NEVER_BE_0_IN_MAIN_LOOP ENDIF // CONTINUOUS UPDATE ROUTINES // -------------------------- // ...player quit? flagTempFlag = FALSE IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL_VIGILANTE // ...quit button currently being pressed flagTempFlag = TRUE ENDIF IF flagWaitForQuitButtonRelease = FALSE // ...checking for the quit button being pressed IF flagTempFlag = TRUE // ...button pressed, so wait for release before quitting (to prevent immediate mission restart again) IF IS_PLAYER_PLAYING player1 flagWaitForQuitButtonRelease = TRUE ENDIF ENDIF ELSE // ...checking for the quit button being released IF flagTempFlag = FALSE IF IS_PLAYER_PLAYING player1 // ...button released, so quit the mission flagEndMission = TRUE GOTO Taxiodd_End_Of_Main_Loop ENDIF ENDIF ENDIF // ...taxi dead? IF IS_CAR_DEAD carTaxi // FOR NOW: End the mission flagEndMission = TRUE GOTO Taxiodd_End_Of_Main_Loop ENDIF // ...taxi on fire? GET_CAR_HEALTH carTaxi nTempInt IF nTempInt <= 250 IF NOT IS_CHAR_DEAD charCustomer IF IS_CHAR_IN_CAR charCustomer carTaxi // FOR NOW: Fail the mission PRINT_NOW TX_FLED 5000 1 IF flagSaidTaxiBail = FALSE SET_CHAR_SAY_CONTEXT charCustomer CONTEXT_GLOBAL_TAXI_BAIL nIgnore flagSaidTaxiBail = TRUE ENDIF ENDIF ENDIF flagFailThisJob = TRUE GOTO Taxiodd_End_Of_Main_Loop ENDIF // ...out of time? IF flagTimerOnDisplay = TRUE IF g_Taxiodd_timerKM = 0 flagEndMission = TRUE nEndMissionReason = TAXIODD_END_OUT_OF_TIME GOTO Taxiodd_End_Of_Main_Loop ENDIF ENDIF // ...player in taxi? GOSUB Store_Player_Taxi IF flagPlayerInTaxi = FALSE // FOR NOW: Fail the mission flagEndMission = TRUE nEndMissionReason = TAXIODD_END_NOT_IN_TAXI GOTO Taxiodd_End_Of_Main_Loop ENDIF // ...Stage 1: Pickup a Customer IF m_stage = 1 GOSUB Taxiodd_Stage_Pickup_Customer ENDIF // ...Stage 2: Go To Destination IF m_stage = 2 GOSUB Taxiodd_Stage_Go_To_Destination ENDIF // ...final stage IF m_stage = 3 flagPassThisJob = TRUE ENDIF // End of Main Loop // ***** DON'T CHANGE ***** Taxiodd_End_Of_Main_Loop: IF m_quit = FALSE IF flagEndMission = FALSE IF flagFailThisJob = FALSE IF flagPassThisJob = FALSE // Restart main loop GOTO Taxiodd_Mission_Loop ELSE // Job passed GOSUB Taxiodd_Job_Passed GOTO Taxiodd_Mission_Loop ENDIF ELSE // Job failed GOSUB Taxiodd_Job_Failed GOTO Taxiodd_Mission_Loop ENDIF ELSE // End Mission GOSUB Taxiodd_Mission_Ended RETURN ENDIF ELSE RETURN // quits out - goes to cleanup ENDIF WRITE_DEBUG SHOULD_NEVER_BE_HERE_IN_END_OF_MAIN_LOOP RETURN // Should never reach here // ************************************************************************************************************* // MISSION STAGE GOSUBS // ************************************************************************************************************* // **************************************** // STAGE 1: Pickup a customer Taxiodd_Stage_Pickup_Customer: // Initialisation // -------------- IF m_goals = 0 flagPotentialCustomerSelected = FALSE flagPlayerStoppedCloseToPotentialCustomer = FALSE flagSaidTaxiBail = FALSE flagImmediateRepair = FALSE flagSaidTaxiHail = FALSE timerAllowHailToCancel = 0 SET_TAXI_LIGHTS carTaxi ON IF flagNitroOnDisplay = TRUE m_goals = TAXIODD_STAGE1GOAL_DISPLAYING_NITRO_MESSAGE ELSE GOSUB Taxiodd_Check_If_Taxi_Needs_Repaired IF flagTaxiNeedsRepaired = FALSE // ...taxi isn't trashed, so choose a new fare m_goals = TAXIODD_STAGE1GOAL_FIND_POTENTIAL_CUSTOMER ELSE // ...taxi is trashed, so allow the timer to countdown while the player gets to a pay n spray // NOTE: The timer will stop, as always, once the taxi is repaired until a valid potential fare is found PRINT_NOW TX_JUNK g_Taxiodd_timerKM 1 flagImmediateRepair = TRUE FREEZE_ONSCREEN_TIMER FALSE m_goals = TAXIODD_STAGE1GOAL_GET_TAXI_REPAIRED ENDIF ENDIF ENDIF // Failure Conditions // ------------------ // Special Updates // --------------- // ...taxi needs repaired? IF flagTaxiNeedsRepaired = TRUE IF flagPayAndSprayOnDisplay = FALSE // ...display Pay and Spray GOSUB Taxiodd_Maintain_Pay_And_Spray ELSE GOSUB Taxiodd_Check_If_Taxi_Needs_Repaired IF flagTaxiNeedsRepaired = FALSE // ...remove Pay and Spray GOSUB Taxiodd_Maintain_Pay_And_Spray // Remove the 'car is trashed' text CLEAR_THIS_PRINT TX_JUNK // Give some extra time to pick up a new fare g_Taxiodd_timerKM += 10000 // If the taxi needed immediate repair, then freeze the timer countdown again IF flagImmediateRepair = TRUE FREEZE_ONSCREEN_TIMER TRUE flagImmediateRepair = FALSE ENDIF m_goals = 0 ENDIF ENDIF ENDIF // Subgoals // -------- // Find a potential customer IF m_goals = TAXIODD_STAGE1GOAL_FIND_POTENTIAL_CUSTOMER GOSUB Select_Potential_Customer IF flagPotentialCustomerSelected = TRUE IF flagTimerOnDisplay = FALSE g_Taxiodd_timerKM = 36000 DISPLAY_ONSCREEN_TIMER_WITH_STRING g_Taxiodd_timerKM TIMER_DOWN TX_TIME flagTimerOnDisplay = TRUE ENDIF FREEZE_ONSCREEN_TIMER FALSE m_goals = TAXIODD_STAGE1GOAL_PICKUP_POTENTIAL_CUSTOMER ENDIF ENDIF // Pickup the Customer IF m_goals = TAXIODD_STAGE1GOAL_PICKUP_POTENTIAL_CUSTOMER IF NOT IS_CHAR_DEAD charCustomer IF IS_CHAR_IN_CAR charCustomer carTaxi REMOVE_BLIP blipCustomer CLEAR_LOOK_AT charCustomer SET_TAXI_LIGHTS carTaxi OFF SET_CHAR_SAY_CONTEXT charCustomer CONTEXT_GLOBAL_TAXI_START nIgnore GET_CAR_HEALTH carTaxi nMissionStartHealth m_goals = 99 ENDIF ENDIF ENDIF // TAXI REPAIR GOAL // ...this goal is reached by trying to pickup a potential customer // ...it's job is to make sure that the genuine goals for this stage aren't triggered IF m_goals = TAXIODD_STAGE1GOAL_GET_TAXI_REPAIRED // ...nothing to do ENDIF // TAXI NITRO ON DISPLAY IF m_goals = TAXIODD_STAGE1GOAL_DISPLAYING_NITRO_MESSAGE // ...check for time out IF timerNitro < m_mission_timer flagNitroOnDisplay = FALSE timerNitro = 0 m_goals = 0 ENDIF ENDIF // Continuous updates // ------------------ GOSUB Taxiodd_Maintain_Potential_Customer // Exit // ---- IF m_goals = 99 GOSUB Taxiodd_Next_Stage ENDIF RETURN // **************************************** // STAGE 2: Go To Destination Taxiodd_Stage_Go_To_Destination: // Initialisation // -------------- IF m_goals = 0 GOSUB Taxiodd_Setup_Destination // Unfreeze the timer when the ped is in the taxi FREEZE_ONSCREEN_TIMER FALSE flagArrivedAtDestination = FALSE // Tidy-ups ready for the next job after this one complete timerPickupText = 0 flagPotentialCustomerFound = FALSE // Help text for taxi IF flagDisplayedTipBarHelp = FALSE timerTipBarHelp = m_mission_timer + 5000 ENDIF m_goals++ ENDIF // Failure Conditions // ------------------ IF IS_CHAR_DEAD charCustomer flagFailThisJob = TRUE ENDIF IF NOT IS_CHAR_IN_CAR charCustomer carTaxi AND flagArrivedAtDestination = FALSE flagFailThisJob = TRUE ENDIF // Check if the taxi needs repaired GOSUB Taxiodd_Check_If_Taxi_Needs_Repaired IF flagTaxiNeedsRepaired = TRUE // ...taxi needs repaired IF flagPayAndSprayOnDisplay = FALSE // ...get your car repaired PRINT_NOW TX_REP 6000 1 // ...Pay and Spray not on display, so display them GOSUB Taxiodd_Maintain_Pay_And_Spray ENDIF ELSE // ...taxi doesn't need repaired IF flagPayAndSprayOnDisplay = TRUE // ...Pay and Spray on display, so remove them GOSUB Taxiodd_Maintain_Pay_And_Spray ENDIF ENDIF // Subgoals // -------- // Check for arrival IF m_goals = 1 IF LOCATE_CHAR_IN_CAR_3D charCustomer xposDestination yposDestination zposDestination 4.0 4.0 4.0 TRUE IF IS_CHAR_IN_CAR charCustomer carTaxi AND IS_CHAR_IN_CAR scplayer carTaxi SET_PLAYER_CONTROL player1 OFF REMOVE_BLIP blipDestination flagArrivedAtDestination = TRUE FREEZE_ONSCREEN_TIMER TRUE m_goals++ ENDIF ENDIF ENDIF // Check for taxi stopped IF m_goals = 2 IF IS_CAR_STOPPED carTaxi // Make the customer leave IF IS_CHAR_IN_CAR charCustomer carTaxi TASK_LEAVE_CAR_IMMEDIATELY charCustomer carTaxi ENDIF // Update and display the 'job passed' scores and stats, etc GOSUB Taxiodd_Update_Job_Passed_Scores m_goals++ ENDIF ENDIF // Check for ped out of car IF m_goals = 3 IF NOT IS_CHAR_IN_CAR charCustomer carTaxi MARK_CHAR_AS_NO_LONGER_NEEDED charCustomer nCleanupTest_MissionPeds-- SET_PLAYER_CONTROL player1 ON m_goals = 99 ENDIF ENDIF // Continuous updates // ------------------ IF flagArrivedAtDestination = FALSE GOSUB Taxiodd_Maintain_Bonus ENDIF // Tip bar help IF flagDisplayedTipBarHelp = FALSE IF timerTipBarHelp < m_mission_timer PRINT_HELP TX_TIP flagDisplayedTipBarHelp = TRUE ENDIF ENDIF // Exit // ---- IF m_goals = 99 GOSUB Taxiodd_Next_Stage ENDIF RETURN // ************************************************************************************************************* // MISSION SPECIFIC GOSUBS // ************************************************************************************************************* // ************************************************************************************************************* // TAXI MAINTENANCE // ************************************************************************************************************* // **************************************** // STORE PLAYER TAXI Store_Player_Taxi: IF IS_CHAR_IN_TAXI scplayer // ...player is in a taxi IF NOT flagPlayerInTaxi = TRUE // ...player was not previously in a taxi, so record the details STORE_CAR_CHAR_IS_IN scplayer carTaxi flagPlayerInTaxi = TRUE GOSUB Taxiodd_Create_Helpers ENDIF ELSE // ...player is not in a taxi flagPlayerInTaxi = FALSE ENDIF RETURN // **************************************** // CREATE THE TAXI'S LEFT/RIGHT/FRONT/BACK HELPERS Taxiodd_Create_Helpers: nTempInt = TAXIODD_HELPER_FRONT CREATE_OBJECT CR_AMMOBOX 0.0 0.0 0.0 objectHelpers[nTempInt] SET_OBJECT_COLLISION objectHelpers[nTempInt] FALSE SET_OBJECT_VISIBLE objectHelpers[nTempInt] FALSE ATTACH_OBJECT_TO_CAR objectHelpers[nTempInt] carTaxi 0.0 2.3 0.0 0.0 0.0 0.0 nTempInt = TAXIODD_HELPER_BACK CREATE_OBJECT CR_AMMOBOX 0.0 0.0 0.0 objectHelpers[nTempInt] SET_OBJECT_COLLISION objectHelpers[nTempInt] FALSE SET_OBJECT_VISIBLE objectHelpers[nTempInt] FALSE ATTACH_OBJECT_TO_CAR objectHelpers[nTempInt] carTaxi 0.0 -2.6 0.0 0.0 0.0 0.0 nTempInt = TAXIODD_HELPER_LEFT CREATE_OBJECT CR_AMMOBOX 0.0 0.0 0.0 objectHelpers[nTempInt] SET_OBJECT_COLLISION objectHelpers[nTempInt] FALSE SET_OBJECT_VISIBLE objectHelpers[nTempInt] FALSE ATTACH_OBJECT_TO_CAR objectHelpers[nTempInt] carTaxi -1.0 -1.0 0.0 0.0 0.0 0.0 nTempInt = TAXIODD_HELPER_RIGHT CREATE_OBJECT CR_AMMOBOX 0.0 0.0 0.0 objectHelpers[nTempInt] SET_OBJECT_COLLISION objectHelpers[nTempInt] FALSE SET_OBJECT_VISIBLE objectHelpers[nTempInt] FALSE ATTACH_OBJECT_TO_CAR objectHelpers[nTempInt] carTaxi 1.0 -1.0 0.0 0.0 0.0 0.0 RETURN // **************************************** // CHECK IF TAXI NEEDS REPAIRED Taxiodd_Check_If_Taxi_Needs_Repaired: IF IS_CAR_HEALTH_GREATER carTaxi 400 flagTaxiNeedsRepaired = FALSE ELSE flagTaxiNeedsRepaired = TRUE ENDIF RETURN // **************************************** // Maintain Pay and Spray blips Taxiodd_Maintain_Pay_And_Spray: IF flagPayAndSprayOnDisplay = TRUE // ...blips are on display, so they need to be removed REPEAT TAXIODD_MAX_PAY_AND_SPRAY_ON_DISPLAY nLoop REMOVE_BLIP blipPayAndSpray[nLoop] ENDREPEAT flagPayAndSprayOnDisplay = FALSE RETURN ENDIF // Blips are not on display, so add them // (display the best ones for the player's current location) // ... Los Santos IF IS_CHAR_IN_ZONE scplayer LA nTempInt = 0 GOSUB Taxiodd_Display_Pay_and_Spray_LS_East nTempInt++ GOSUB Taxiodd_Display_Pay_and_Spray_LS_West nTempInt++ GOSUB Taxiodd_Display_Pay_and_Spray_LS_North ENDIF // ...Las Venturas IF IS_CHAR_IN_ZONE scplayer VE nTempInt = 0 GOSUB Taxiodd_Display_Pay_and_Spray_LV ENDIF // ...San Fierro IF IS_CHAR_IN_ZONE scplayer SF nTempInt = 0 GOSUB Taxiodd_Display_Pay_and_Spray_SF_North nTempInt++ GOSUB Taxiodd_Display_Pay_and_Spray_SF_Middle ENDIF // ...Red County (North of Los Santos / South of Las Venturas) IF IS_CHAR_IN_ZONE scplayer RED nTempInt = 0 GOSUB Taxiodd_Display_Pay_and_Spray_Red_County nTempInt++ GOSUB Taxiodd_Display_Pay_and_Spray_LS_North ENDIF // ...Flint County (South East of San Fierro / West of Los Santos) IF IS_CHAR_IN_ZONE scplayer FLINTC nTempInt = 0 GOSUB Taxiodd_Display_Pay_and_Spray_LS_West nTempInt++ GOSUB Taxiodd_Display_Pay_and_Spray_Red_County nTempInt++ GOSUB Taxiodd_Display_Pay_and_Spray_SF_Middle ENDIF // ...Whetstone (South of San Fierro) IF IS_CHAR_IN_ZONE scplayer WHET nTempInt = 0 GOSUB Taxiodd_Display_Pay_and_Spray_LS_West nTempInt++ GOSUB Taxiodd_Display_Pay_and_Spray_Red_County nTempInt++ GOSUB Taxiodd_Display_Pay_and_Spray_SF_Middle ENDIF // ...Tierra Robada (North of San Fierro) IF IS_CHAR_IN_ZONE scplayer ROBAD nTempInt = 0 GOSUB Taxiodd_Display_Pay_and_Spray_Tierra_Robada ENDIF // ...Bone County (West of Las Venturas) IF IS_CHAR_IN_ZONE scplayer BONE nTempInt = 0 GOSUB Taxiodd_Display_Pay_and_Spray_Tierra_Robada nTempInt++ GOSUB Taxiodd_Display_Pay_and_Spray_LV ENDIF flagPayAndSprayOnDisplay = TRUE RETURN // **************************************** // Display Pay and Spray blips (coords from Initial.sc) Taxiodd_Display_Pay_and_Spray_LS_East: IF DOES_BLIP_EXIST blipPayAndSpray[nTempInt] // ...safety feature added since JohnG had a crash re-using some blip somewhere in the taxi missions REMOVE_BLIP blipPayAndSpray[nTempInt] ENDIF ADD_SPRITE_BLIP_FOR_COORD 2067.4 -1831.2 13.5 RADAR_SPRITE_SPRAY blipPayAndSpray[nTempInt] RETURN Taxiodd_Display_Pay_and_Spray_LS_West: IF DOES_BLIP_EXIST blipPayAndSpray[nTempInt] // ...safety feature added since JohnG had a crash re-using some blip somewhere in the taxi missions REMOVE_BLIP blipPayAndSpray[nTempInt] ENDIF ADD_SPRITE_BLIP_FOR_COORD 488.0 -1734.0 34.4 RADAR_SPRITE_SPRAY blipPayAndSpray[nTempInt] RETURN Taxiodd_Display_Pay_and_Spray_Red_County: IF DOES_BLIP_EXIST blipPayAndSpray[nTempInt] // ...safety feature added since JohnG had a crash re-using some blip somewhere in the taxi missions REMOVE_BLIP blipPayAndSpray[nTempInt] ENDIF ADD_SPRITE_BLIP_FOR_COORD 720.016 -454.625 15.328 RADAR_SPRITE_SPRAY blipPayAndSpray[nTempInt] RETURN Taxiodd_Display_Pay_and_Spray_Tierra_Robada: IF DOES_BLIP_EXIST blipPayAndSpray[nTempInt] // ...safety feature added since JohnG had a crash re-using some blip somewhere in the taxi missions REMOVE_BLIP blipPayAndSpray[nTempInt] ENDIF ADD_SPRITE_BLIP_FOR_COORD -1420.547 2583.945 58.031 RADAR_SPRITE_SPRAY blipPayAndSpray[nTempInt] RETURN Taxiodd_Display_Pay_and_Spray_LV: IF DOES_BLIP_EXIST blipPayAndSpray[nTempInt] // ...safety feature added since JohnG had a crash re-using some blip somewhere in the taxi missions REMOVE_BLIP blipPayAndSpray[nTempInt] ENDIF ADD_SPRITE_BLIP_FOR_COORD 1966.532 2162.65 10.995 RADAR_SPRITE_SPRAY blipPayAndSpray[nTempInt] RETURN Taxiodd_Display_Pay_and_Spray_SF_North: IF DOES_BLIP_EXIST blipPayAndSpray[nTempInt] // ...safety feature added since JohnG had a crash re-using some blip somewhere in the taxi missions REMOVE_BLIP blipPayAndSpray[nTempInt] ENDIF ADD_SPRITE_BLIP_FOR_COORD -2425.46 1020.83 49.39 RADAR_SPRITE_SPRAY blipPayAndSpray[nTempInt] RETURN Taxiodd_Display_Pay_and_Spray_LS_North: IF DOES_BLIP_EXIST blipPayAndSpray[nTempInt] // ...safety feature added since JohnG had a crash re-using some blip somewhere in the taxi missions REMOVE_BLIP blipPayAndSpray[nTempInt] ENDIF ADD_SPRITE_BLIP_FOR_COORD 1021.8, -1018.7, 30.9 RADAR_SPRITE_SPRAY blipPayAndSpray[nTempInt] RETURN Taxiodd_Display_Pay_and_Spray_SF_Middle: IF DOES_BLIP_EXIST blipPayAndSpray[nTempInt] // ...safety feature added since JohnG had a crash re-using some blip somewhere in the taxi missions REMOVE_BLIP blipPayAndSpray[nTempInt] ENDIF ADD_SPRITE_BLIP_FOR_COORD -1908.9, 292.3, 40.0 RADAR_SPRITE_SPRAY blipPayAndSpray[nTempInt] RETURN Taxiodd_Display_Pay_and_Spray_Bone_County: IF DOES_BLIP_EXIST blipPayAndSpray[nTempInt] // ...safety feature added since JohnG had a crash re-using some blip somewhere in the taxi missions REMOVE_BLIP blipPayAndSpray[nTempInt] ENDIF ADD_SPRITE_BLIP_FOR_COORD -103.6, 1112.4, 18.7 RADAR_SPRITE_SPRAY blipPayAndSpray[nTempInt] RETURN // ************************************************************************************************************* // CUSTOMER MAINTENANCE // ************************************************************************************************************* // **************************************** // SELECT POTENTIAL CUSTOMER Select_Potential_Customer: IF timerPickupText < m_mission_timer IF flagPotentialCustomerFound = FALSE // ...special message if there are no potential customers in the area and there have been none // since this taxi job started PRINT_NOW TX_NONE 6000 1 timerPickupText = m_mission_timer + 5000 flagDisplayingNoNearbyPedsText = TRUE ELSE // ...standard message when looking for a fare PRINT_NOW TX_PKUP 6000 1 timerPickupText = m_mission_timer + 5000 ENDIF ENDIF // NOTE: FALSE means don't use GangPeds GET_RANDOM_CHAR_IN_ZONE SAN_AND TRUE FALSE TRUE charCustomer IF charCustomer = TAXIODD_NO_NEARBY_PEDS RETURN ENDIF // Ped selected nCleanupTest_MissionPeds++ IF IS_CHAR_DEAD charCustomer OR IS_CHAR_IN_ANY_CAR charCustomer OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR charCustomer scplayer // ...no use MARK_CHAR_AS_NO_LONGER_NEEDED charCustomer nCleanupTest_MissionPeds-- RETURN ENDIF /* the new 'model' check should make this check redundant // Ensure this isn't the previous customer IF NOT IS_CHAR_DEAD charPreviousCustomer IF charCustomer = charPreviousCustomer // ...try again MARK_CHAR_AS_NO_LONGER_NEEDED charCustomer nCleanupTest_MissionPeds-- RETURN ENDIF ENDIF */ // Ensure this isn't the previous customer model GET_CHAR_MODEL charCustomer modelCustomer IF modelCustomer = modelPreviousCustomer // ...try again MARK_CHAR_AS_NO_LONGER_NEEDED charCustomer nCleanupTest_MissionPeds-- RETURN ENDIF // Ensure the customer is in range GET_CHAR_COORDINATES charCustomer xposTemp yposTemp zposTemp IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer xposTemp yposTemp zposTemp 88.0 88.0 19.0 FALSE // ...either not in range, or close to being out of range, so try again MARK_CHAR_AS_NO_LONGER_NEEDED charCustomer nCleanupTest_MissionPeds-- RETURN ENDIF // Indicate that at least one potential customer has been found since the last taxi mission ended // NOTE: This is used to display a different message if there are no potential fares in the area flagPotentialCustomerFound = TRUE // Clear the 'no peds nearby' text if on display, and replace with 'find a fare' IF flagDisplayingNoNearbyPedsText = TRUE PRINT_NOW TX_PKUP 6000 1 timerPickupText = m_mission_timer + 5000 flagDisplayingNoNearbyPedsText = FALSE ENDIF // Found a customer, so set it up CLEAR_CHAR_TASKS_IMMEDIATELY charCustomer SET_CHAR_DECISION_MAKER charCustomer dmEmpty TASK_STAND_STILL charCustomer TAXIODD_PERSIST flagSaidTaxiHail = FALSE GOSUB Taxiodd_Hail IF DOES_BLIP_EXIST blipCustomer // ...safety feature because of a crash JohnG got. Don't know how it happened though. REMOVE_BLIP blipCustomer ENDIF ADD_BLIP_FOR_CHAR charCustomer blipCustomer SET_BLIP_AS_FRIENDLY blipCustomer TRUE // Store the initial position for the taxi look at stuff (but fudge it to force an initial 'look at') GET_CHAR_COORDINATES scplayer xposTaxiLookAt yposTaxiLookAt zposTaxiLookAt xposTaxiLookAt += TAXIODD_TAXI_LOOK_AT_THRESHOLD yposTaxiLookAt += TAXIODD_TAXI_LOOK_AT_THRESHOLD // charPreviousCustomer = charCustomer modelPreviousCustomer = modelCustomer flagPotentialCustomerSelected = TRUE RETURN // **************************************** // Maintain potential customer Taxiodd_Maintain_Potential_Customer: IF flagPotentialCustomerSelected = FALSE RETURN ENDIF // Maintain 'pickup' text IF timerPickupText < m_mission_timer // ...standard message when looking for a fare PRINT_NOW TX_PKUP 6000 1 timerPickupText = m_mission_timer + 5000 ENDIF // NOTE: flagTempFlag used to indicate if another customer is needed // flagTempFlag2 used if the 'pickup text' timer should be cancelled flagTempFlag = FALSE flagTempFlag2 = TRUE IF IS_CHAR_DEAD charCustomer OR HAS_CHAR_BEEN_DAMAGED_BY_CHAR charCustomer scplayer // ...need another customer flagTempFlag = TRUE flagTempFlag2 = FALSE // Info: 'pickup another passenger' PRINT_NOW TX_OOPS 6000 1 timerPickupText = m_mission_timer + 5000 ENDIF // Check the taxi condition IF IS_CAR_DEAD carTaxi // ...need another customer flagTempFlag = TRUE ENDIF // Check for the player still being in the taxi IF flagTempFlag = FALSE IF NOT IS_CHAR_IN_CAR scplayer carTaxi // ...need another customer flagTempFlag = TRUE ENDIF ENDIF // Get player and customer coords IF flagTempFlag = FALSE GET_CHAR_COORDINATES scplayer xposTemp yposTemp zposTemp GET_CHAR_COORDINATES charCustomer xposTemp2 yposTemp2 zposTemp2 ENDIF IF flagTempFlag = FALSE // If the player is too far away from the customer then choose another IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer xposTemp2 yposTemp2 zposTemp2 90.0 90.0 20.0 FALSE // ...need another customer flagTempFlag = TRUE ENDIF ENDIF // Check if another customer is required IF flagTempFlag = TRUE // Refresh the pickup text if special text is not being displayed IF flagTempFlag2 = TRUE timerPickupText = 0 ENDIF // GOTO LABEL TAXIODD_GET_ANOTHER_CUSTOMER: // ...get another customer flagPotentialCustomerSelected = FALSE flagSaidTaxiBail = FALSE REMOVE_BLIP blipCustomer IF flagTaxiNeedsRepaired = TRUE // ...don't display any further customers until the car is repaired m_goals = TAXIODD_STAGE1GOAL_GET_TAXI_REPAIRED ELSE // ...find another potential customer m_goals = TAXIODD_STAGE1GOAL_FIND_POTENTIAL_CUSTOMER ENDIF IF NOT IS_CHAR_DEAD charCustomer CLEAR_LOOK_AT charCustomer GOSUB Taxiodd_Cancel_Hail ENDIF // Clear up MARK_CHAR_AS_NO_LONGER_NEEDED charCustomer nCleanupTest_MissionPeds-- // Make sure the timer isn't frozen FREEZE_ONSCREEN_TIMER FALSE RETURN ENDIF // Maintain the 'goto taxi' task IF IS_CHAR_IN_CAR scplayer carTaxi AND LOCATE_STOPPED_CHAR_IN_CAR_3D scplayer xposTemp2 yposTemp2 zposTemp2 TAXIODD_ENTER_CAR_DISTANCE TAXIODD_ENTER_CAR_DISTANCE 3.0 FALSE // ...player stopped near customer IF flagPlayerStoppedCloseToPotentialCustomer = FALSE // Check if the taxi needs repaired GOSUB Taxiodd_Check_If_Taxi_Needs_Repaired IF flagTaxiNeedsRepaired = TRUE // ...car trashed PRINT_NOW TX_JUNK 5000 1 GOTO TAXIODD_GET_ANOTHER_CUSTOMER ENDIF // ...cancel the hail anim prior to getting into the car GOSUB Taxiodd_Cancel_Hail timerAllowHailToCancel = m_mission_timer + TAXIODD_ALLOW_HAIL_TO_CANCEL_TIME flagPlayerStoppedCloseToPotentialCustomer = TRUE // Freeze the timer while the ped is getting into the car FREEZE_ONSCREEN_TIMER TRUE ELSE // Ensure the 'allow hail to cancel' time has elapsed IF timerAllowHailToCancel > 0 IF timerAllowHailToCancel < m_mission_timer GET_SCRIPT_TASK_STATUS charCustomer TASK_PLAY_ANIM_SECONDARY m_status IF m_status = FINISHED_TASK // ...get into the cab GOSUB Taxiodd_Enter_Taxi_As_Passenger timerAllowHailToCancel = 0 ENDIF ENDIF ENDIF // Ensure the passenger is still trying to enter the cab IF timerAllowHailToCancel = 0 IF NOT IS_CHAR_IN_CAR charCustomer carTaxi GET_SCRIPT_TASK_STATUS charCustomer TASK_ENTER_CAR_AS_PASSENGER m_status IF m_status = FINISHED_TASK GOSUB Taxiodd_Enter_Taxi_As_Passenger ENDIF ENDIF ENDIF ENDIF RETURN ELSE // ...the 'get in taxi' conditions have not been met IF flagPlayerStoppedCloseToPotentialCustomer = TRUE // ...the conditions were previously met IF IS_CHAR_IN_CAR scplayer carTaxi // ...the player is still in the taxi IF NOT LOCATE_CHAR_IN_CAR_3D scplayer xposTemp2 yposTemp2 zposTemp2 TAXIODD_ENTER_CAR_DISTANCE TAXIODD_ENTER_CAR_DISTANCE 3.0 FALSE // ...the player is no longer close by, so make the customer stand still GOSUB Taxiodd_Hail TASK_STAND_STILL charCustomer TAXIODD_PERSIST flagPlayerStoppedCloseToPotentialCustomer = FALSE // Unfreeze the timer if the taxi is moving FREEZE_ONSCREEN_TIMER FALSE ENDIF ENDIF RETURN ENDIF timerAllowHailToCancel = 0 ENDIF // Maintain Look At IF NOT IS_CHAR_IN_ANY_CAR charCustomer GET_SCRIPT_TASK_STATUS charCustomer TASK_LOOK_AT_CHAR m_status IF NOT m_status = PERFORMING_TASK AND NOT m_status = WAITING_TO_START_TASK TASK_LOOK_AT_CHAR charCustomer scplayer TAXIODD_PERSIST ENDIF ENDIF // Maintain Achieve Heading IF NOT IS_CHAR_IN_ANY_CAR charCustomer GET_SCRIPT_TASK_STATUS charCustomer TASK_ACHIEVE_HEADING m_status IF NOT m_status = PERFORMING_TASK AND NOT m_status = WAITING_TO_START_TASK // Get the Required Heading // ...only issue the task again if the player has moved a worthwhile distance and is not hailing a taxi GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTaxiLookAt yposTaxiLookAt zposTaxiLookAt fTempDistance IF fTempDistance > TAXIODD_TAXI_LOOK_AT_THRESHOLD // ...player coords xloTemp = xposTemp yloTemp = yposTemp // ...customer coords xhiTemp = xposTemp2 yhiTemp = yposTemp2 // Calculate Vector xposTemp = xloTemp - xhiTemp yposTemp = yloTemp - yhiTemp GET_HEADING_FROM_VECTOR_2D xposTemp yposTemp headTemp TASK_ACHIEVE_HEADING charCustomer headTemp ENDIF ENDIF ENDIF // Issue 'hail' speech IF flagSaidTaxiHail = FALSE IF flagPlayerStoppedCloseToPotentialCustomer = FALSE GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempDistance IF fTempDistance < TAXIODD_HAIL_TAXI_SPEECH_DISTANCE SET_CHAR_SAY_CONTEXT charCustomer CONTEXT_GLOBAL_TAXI_HAIL nIgnore flagSaidTaxiHail = TRUE ENDIF ENDIF ENDIF RETURN // ************************************************************************************************************* // HAIL ANIM // ************************************************************************************************************* // **************************************** // Hail Taxi Taxiodd_Hail: flagOnRightSide = FALSE GOSUB Taxiodd_Customer_Position_LeftRight flagAtFront = FALSE GOSUB Taxiodd_Customer_Position_FrontBack // If flagTempFlag = TRUE then play the left hand anim flagTempFlag = FALSE IF flagOnRightSide = TRUE // Customer is on right side of taxi // Is the taxi facing the customer? IF flagAtFront = TRUE // ...taxi is facing customer, so use right hand anim flagTempFlag = FALSE ELSE // ...taxi is moving away from customer, so use left hand anim flagTempFlag = TRUE ENDIF ELSE // Customer is on left hand side of taxi // Is the taxi facing the customer? IF flagAtFront = TRUE // ...taxi is facing customer, so use left hand anim flagTempFlag = TRUE ELSE // ...taxi is moving away from customer, so use right hand anim flagTempFlag = FALSE ENDIF ENDIF IF flagTempFlag = TRUE // ...play left hand anim TASK_PLAY_ANIM_SECONDARY charCustomer Hiker_Pose_L MISC 4.0 FALSE FALSE FALSE TRUE -1 ELSE // ...play right hand anim TASK_PLAY_ANIM_SECONDARY charCustomer Hiker_Pose MISC 4.0 FALSE FALSE FALSE TRUE -1 ENDIF RETURN // **************************************** // Cancel Hail Taxi Taxiodd_Cancel_Hail: TASK_PLAY_ANIM_SECONDARY charCustomer roadcross PED 4.0 FALSE FALSE FALSE FALSE 100 RETURN // ************************************************************************************************************* // ENTER TAXI // ************************************************************************************************************* // **************************************** // Enter Taxi as Passenger Taxiodd_Enter_Taxi_As_Passenger: flagOnRightSide = FALSE GOSUB Taxiodd_Customer_Position_LeftRight IF flagOnRightSide = TRUE // ...passenger on right hand side, so enter car by rear passenger side door TASK_ENTER_CAR_AS_PASSENGER charCustomer carTaxi TAXIODD_PERSIST TAXIODD_REAR_PASSENGER_DOOR ELSE // ...passenger on left hand side, so enter car by rear driver side door TASK_ENTER_CAR_AS_PASSENGER charCustomer carTaxi TAXIODD_PERSIST TAXIODD_REAR_DRIVER_DOOR ENDIF RETURN // ************************************************************************************************************* // TAXI POSITIONING // ************************************************************************************************************* // **************************************** // Customer position in relation to taxi left/right Taxiodd_Customer_Position_LeftRight: GET_CHAR_COORDINATES charCustomer xposTemp yposTemp zposTemp GET_OBJECT_COORDINATES objectHelpers[TAXIODD_HELPER_LEFT] xposTemp2 yposTemp2 zposTemp2 GET_OBJECT_COORDINATES objectHelpers[TAXIODD_HELPER_RIGHT] xposTemp3 yposTemp3 zposTemp3 // Find the distance between the customer and both the left and right helper objects GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempFloat GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp3 yposTemp3 zposTemp3 fTempFloat2 IF fTempFloat < fTempFloat2 // ...customer is closer to the left side than the right flagOnRightSide = FALSE ELSE // ...customer is closer to the right side than the left flagOnRightSide = TRUE ENDIF RETURN // **************************************** // Customer position in relation to taxi front/back Taxiodd_Customer_Position_FrontBack: GET_CHAR_COORDINATES charCustomer xposTemp yposTemp zposTemp GET_OBJECT_COORDINATES objectHelpers[TAXIODD_HELPER_FRONT] xposTemp2 yposTemp2 zposTemp2 GET_OBJECT_COORDINATES objectHelpers[TAXIODD_HELPER_BACK] xposTemp3 yposTemp3 zposTemp3 // Find the distance between the customer and both the front and back helper objects GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp2 yposTemp2 zposTemp2 fTempFloat GET_DISTANCE_BETWEEN_COORDS_3D xposTemp yposTemp zposTemp xposTemp3 yposTemp3 zposTemp3 fTempFloat2 IF fTempFloat < fTempFloat2 // ...customer is closer to the front than the back flagAtFront = TRUE ELSE // ...customer is closer to the back than the front flagAtFront = FALSE ENDIF RETURN // ************************************************************************************************************* // MONEY, ETC // ************************************************************************************************************* // **************************************** // MAINTAIN BONUS Taxiodd_Maintain_Bonus: IF flagBonusOnDisplay = FALSE RETURN ENDIF // Has the bonus timer ran out? IF timerJobBonusTime < m_mission_timer // ...yes, so clear the bonus CLEAR_ONSCREEN_COUNTER g_Taxiodd_bonusKM flagBonusOnDisplay = FALSE g_Taxiodd_bonusKM = 0 RETURN ENDIF // Update the bonus bar // ...damage GET_CAR_HEALTH carTaxi nTempInt IF nTempInt > nMissionStartHealth // ...player must have gone into a pay n spray nMissionStartHealth = nTempInt ELSE IF nTempInt < nMissionStartHealth nTempInt2 = nMissionStartHealth - nTempInt nMissionStartHealth = nTempInt // ...each point of damage costs msec of bonus time nTempInt2 *= TAXIODD_DAMAGE_POINT_COST_msec timerJobBonusTime -= nTempInt2 ENDIF ENDIF // ...time nTempInt = timerJobBonusTime - timerJobStartTime nTempInt2 = m_mission_timer - timerJobStartTime g_Taxiodd_bonusKM = nTempInt - nTempInt2 g_Taxiodd_bonusKM *= 100 g_Taxiodd_bonusKM /= nTempInt IF g_Taxiodd_bonusKM < 0 g_Taxiodd_bonusKM = 0 ENDIF RETURN // ************************************************************************************************************* // DESTINATIONS // ************************************************************************************************************* // **************************************** // SETUP DESTINATION Taxiodd_Setup_Destination: IF IS_CHAR_DEAD charCustomer RETURN ENDIF // Some destinations are awkward to reach, so they get a bonus TO and FROM time nBonusTimeFromBadPlace = nBonusTimeToBadPlace nBonusTimeToBadPlace = 0 nDestinationID = -1 GOSUB Taxiodd_Choose_Destination // Calculate the distance GET_CHAR_COORDINATES charCustomer xposTemp yposTemp zposTemp xdiffTemp = xposTemp - xposDestination ydiffTemp = yposTemp - yposDestination xdiffsqTemp = xdiffTemp * xdiffTemp ydiffsqTemp = ydiffTemp * ydiffTemp fTempFloat = xdiffsqTemp + ydiffsqTemp SQRT fTempFloat fTempFloat2 nDestinationDistance =# fTempFloat2 // Choose another destination if this one is too close IF nDestinationDistance < 200 GOTO Taxiodd_Setup_Destination ENDIF // Calculate the time allowed nTempInt = nDestinationDistance IF g_Taxiodd_faresKM = 0 nTempInt = nTempInt * 100 ENDIF IF g_Taxiodd_faresKM = 1 nTempInt = nTempInt * 95 ENDIF IF g_Taxiodd_faresKM = 2 nTempInt = nTempInt * 80 ENDIF IF g_Taxiodd_faresKM = 3 nTempInt = nTempInt * 79 ENDIF IF g_Taxiodd_faresKM = 4 nTempInt = nTempInt * 78 ENDIF IF g_Taxiodd_faresKM = 5 nTempInt = nTempInt * 76 ENDIF IF g_Taxiodd_faresKM > 5 AND g_Taxiodd_faresKM <= 10 nTempInt = nTempInt * 75 ENDIF IF g_Taxiodd_faresKM > 10 AND g_Taxiodd_faresKM <= 20 nTempInt = nTempInt * 70 ENDIF IF g_Taxiodd_faresKM > 20 AND g_Taxiodd_faresKM <= 50 nTempInt = nTempInt * 65 ENDIF IF g_Taxiodd_faresKM > 50 nTempInt = nTempInt * 60 ENDIF g_Taxiodd_timerKM += nTempInt // NOTE: re-use nTempInt (with it's current value) to work out the bonus distance // Add on any extra time for particulary awkward places to get To or FROM // ...bonus FROM awkward place (half of the 'to' bonus time) nTempInt2 = nBonusTimeFromBadPlace * 500 g_Taxiodd_timerKM += nTempInt2 nTempInt += nTempInt2 // ...bonus TO awkward place nTempInt2 = nBonusTimeToBadPlace * 1000 g_Taxiodd_timerKM += nTempInt2 nTempInt += nTempInt2 // Bonus Time timerJobStartTime = m_mission_timer timerJobBonusTime = nTempInt * TAXIODD_TIP_PERCENT timerJobBonusTime = timerJobBonusTime / 100 timerJobBonusTime += m_mission_timer // Display bonus timer g_Taxiodd_bonusKM = 0 DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING g_Taxiodd_bonusKM COUNTER_DISPLAY_BAR 3 TX_ADDS flagBonusOnDisplay = TRUE IF DOES_BLIP_EXIST blipDestination // ...safety feature because of a crash JohnG got. Don't know how it happened though. REMOVE_BLIP blipDestination ENDIF ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination RETURN // **************************************** // CHOOSE DESTINATION Taxiodd_Choose_Destination: // Find out which city or county the player is in // ... Los Santos IF IS_CHAR_IN_ZONE scplayer LA GOSUB Taxiodd_Choose_Destination_LosSantos ENDIF // ...Las Venturas IF IS_CHAR_IN_ZONE scplayer VE GOSUB Taxiodd_Choose_Destination_LasVenturas ENDIF // ...San Fierro IF IS_CHAR_IN_ZONE scplayer SF GOSUB Taxiodd_Choose_Destination_SanFierro ENDIF // ...Red County (North of Los Santos / South of Las Venturas) IF IS_CHAR_IN_ZONE scplayer RED GENERATE_RANDOM_INT_IN_RANGE 0 2 nTempInt SWITCH nTempInt CASE 0 GOSUB Taxiodd_Choose_Destination_RedCounty BREAK CASE 1 GOSUB Taxiodd_Choose_Destination_LosSantos BREAK ENDSWITCH ENDIF // ...Flint County (South East of San Fierro / West of Los Santos) IF IS_CHAR_IN_ZONE scplayer FLINTC GENERATE_RANDOM_INT_IN_RANGE 0 3 nTempInt SWITCH nTempInt CASE 0 GOSUB Taxiodd_Choose_Destination_FlintCounty BREAK CASE 1 GOSUB Taxiodd_Choose_Destination_LosSantos BREAK CASE 2 GOSUB Taxiodd_Choose_Destination_SanFierro BREAK ENDSWITCH ENDIF // ...Whetstone (South of San Fierro) IF IS_CHAR_IN_ZONE scplayer WHET GENERATE_RANDOM_INT_IN_RANGE 0 2 nTempInt SWITCH nTempInt CASE 0 GOSUB Taxiodd_Choose_Destination_Whetstone BREAK CASE 1 GOSUB Taxiodd_Choose_Destination_SanFierro BREAK ENDSWITCH ENDIF // ...Tierra Robada (North of San Fierro) IF IS_CHAR_IN_ZONE scplayer ROBAD GENERATE_RANDOM_INT_IN_RANGE 0 2 nTempInt SWITCH nTempInt CASE 0 GOSUB Taxiodd_Choose_Destination_TierraRobada BREAK CASE 1 GOSUB Taxiodd_Choose_Destination_SanFierro BREAK ENDSWITCH ENDIF // ...Bone County (West of Las Venturas) IF IS_CHAR_IN_ZONE scplayer BONE GENERATE_RANDOM_INT_IN_RANGE 0 2 nTempInt SWITCH nTempInt CASE 0 GOSUB Taxiodd_Choose_Destination_BoneCounty BREAK CASE 1 GOSUB Taxiodd_Choose_Destination_LasVenturas BREAK ENDSWITCH ENDIF RETURN // **************************************** // CHOOSE DESTINATION // Los Santos Taxiodd_Choose_Destination_LosSantos: IF TEMP_flagDestinationTesting = 1 // TESTING nDestinationID = TEMP_nDestination + 1 ELSE GENERATE_RANDOM_INT_IN_RANGE 1 35 nDestinationID ENDIF SWITCH nDestinationID // Food Place CASE 1 PRINT_NOW ( TX_LS1 ) 5000 1 xposDestination = 2468.1455 yposDestination = -1736.1840 zposDestination = 12.3828 BREAK // Stadium CASE 2 PRINT_NOW ( TX_LS2 ) 5000 1 xposDestination = 2794.0000 yposDestination = -1828.0000 zposDestination = 10.0000 BREAK // Glen Park CASE 3 PRINT_NOW ( TX_LS3 ) 5000 1 xposDestination = 1884.1929 yposDestination = -1257.5214 zposDestination = 12.3984 BREAK // Sculpture Park CASE 4 PRINT_NOW ( TX_LS4 ) 5000 1 xposDestination = 2317.4805 yposDestination = -1386.6042 zposDestination = 22.8784 BREAK // Church CASE 5 PRINT_NOW ( TX_LS5 ) 5000 1 xposDestination = 2237.7595 yposDestination = -1304.1653 zposDestination = 22.8488 BREAK // Motel CASE 6 PRINT_NOW ( TX_LS6 ) 5000 1 xposDestination = 2221.0874 yposDestination = -1137.3323 zposDestination = 24.6250 BREAK // Pic 'n'Go market CASE 7 PRINT_NOW ( TX_LS7 ) 5000 1 xposDestination = 2146.7366 yposDestination = -1179.7950 zposDestination = 22.8278 BREAK // Leon Diamonds CASE 8 PRINT_NOW ( TX_LS8 ) 5000 1 xposDestination = 2075.5579 yposDestination = -1202.7931 zposDestination = 22.7571 BREAK // Ten Green Bottles CASE 9 PRINT_NOW ( TX_LS9 ) 5000 1 xposDestination = 2320.0000 yposDestination = -1655.0000 zposDestination = 14.0000 BREAK // Mama's Cinema CASE 10 PRINT_NOW ( TX_LS10 ) 5000 1 xposDestination = 2455.0000 yposDestination = -1502.0000 zposDestination = 24.0000 BREAK // 24 Hour Motel CASE 11 PRINT_NOW ( TX_LS11 ) 5000 1 xposDestination = 2181.0000 yposDestination = -1771.0000 zposDestination = 13.0000 BREAK // Well Stacked Pizza Co. CASE 12 PRINT_NOW ( TX_LS12 ) 5000 1 xposDestination = 2084.7307 yposDestination = -1800.8602 zposDestination = 12.3828 BREAK // Reece's Barber Shop CASE 13 PRINT_NOW ( TX_LS13 ) 5000 1 xposDestination = 2078.0149 yposDestination = -1791.5895 zposDestination = 12.3828 BREAK // Tattoo Shop CASE 14 PRINT_NOW ( TX_LS14 ) 5000 1 xposDestination = 2081.2869 yposDestination = -1779.4996 zposDestination = 12.3828 BREAK // Truck Park CASE 15 PRINT_NOW ( TX_LS15 ) 5000 1 xposDestination = 2418.5422 yposDestination = -2085.1187 zposDestination = 12.2928 BREAK // Unity Station CASE 16 PRINT_NOW ( TX_LS16 ) 5000 1 xposDestination = 1742.6893 yposDestination = -1858.6967 zposDestination = 12.4185 BREAK // Airport CASE 17 PRINT_NOW ( TX_LS17 ) 5000 1 xposDestination = 1668.0000 yposDestination = -2253.0000 zposDestination = 13.0000 nBonusTimeToBadPlace = 40 // Long-winded journey to get there, so give more time BREAK // Cool Circular Building at airport CASE 18 PRINT_NOW ( TX_LS18 ) 5000 1 xposDestination = 1432.1981 yposDestination = -2274.6477 zposDestination = 12.3906 nBonusTimeToBadPlace = 30 // Long-winded journey to get there, so give more time BREAK // Observatory CASE 19 PRINT_NOW ( TX_LS19 ) 5000 1 xposDestination = 1256.0000 yposDestination = -2028.0000 zposDestination = 60.0000 nBonusTimeToBadPlace = 30 // Long-winded journey to get there, so give more time BREAK // Police Station CASE 20 PRINT_NOW ( TX_LS20 ) 5000 1 xposDestination = 1532.7894 yposDestination = -1675.4420 zposDestination = 12.3828 BREAK // Pershing Square CASE 21 PRINT_NOW ( TX_LS21 ) 5000 1 xposDestination = 1472.3503 yposDestination = -1729.7062 zposDestination = 12.3828 BREAK // Skate Park CASE 22 PRINT_NOW ( TX_LS22 ) 5000 1 xposDestination = 1855.4191 yposDestination = -1383.2733 zposDestination = 12.3984 BREAK // County General Hospital CASE 23 PRINT_NOW ( TX_LS23 ) 5000 1 xposDestination = 2025.0000 yposDestination = -1413.0000 zposDestination = 17.0000 BREAK // Ammunation CASE 24 PRINT_NOW ( TX_LS24 ) 5000 1 xposDestination = 1361.2184 yposDestination = -1277.9036 zposDestination = 12.3828 BREAK // All Saints General Hospital CASE 25 PRINT_NOW ( TX_LS25 ) 5000 1 xposDestination = 1192.0000 yposDestination = -1324.0000 zposDestination = 13.0000 BREAK // Donut Shop CASE 26 PRINT_NOW ( TX_LS26 ) 5000 1 xposDestination = 1031.0656 yposDestination = -1329.7043 zposDestination = 12.3861 BREAK // Market Station CASE 27 PRINT_NOW ( TX_LS27 ) 5000 1 xposDestination = 814.0000 yposDestination = -1330.0000 zposDestination = 13.0000 BREAK // Country Club CASE 28 PRINT_NOW ( TX_LS28 ) 5000 1 xposDestination = 667.7637 yposDestination = -1265.6902 zposDestination = 12.4687 BREAK // Brown Starfish bar and grill CASE 29 PRINT_NOW ( TX_LS29 ) 5000 1 xposDestination = 368.1992 yposDestination = -2042.5366 zposDestination = 6.6582 nBonusTimeToBadPlace = 30 // Awkward getting onto the pier if route not known, so give more time BREAK // Playa del Seville CASE 30 PRINT_NOW ( TX_LS30 ) 5000 1 xposDestination = 152.5806 yposDestination = -1754.8307 zposDestination = 3.9518 BREAK // Pro Lapse Store CASE 31 PRINT_NOW ( TX_LS31 ) 5000 1 xposDestination = 508.2797 yposDestination = -1358.5979 zposDestination = 14.9532 BREAK // Burger Shot CASE 32 PRINT_NOW ( TX_LS32 ) 5000 1 xposDestination = 1199.8457 yposDestination = -933.0658 zposDestination = 41.7332 BREAK // Burger Shot CASE 33 PRINT_NOW ( TX_LS33 ) 5000 1 xposDestination = 816.2869 yposDestination = -1630.7621 zposDestination = 12.3906 BREAK // Regal Cinema CASE 34 PRINT_NOW ( TX_LS34 ) 5000 1 xposDestination = 1311.9703 yposDestination = -1712.2892 zposDestination = 12.3906 BREAK DEFAULT IF TEMP_flagDestinationTesting = 1 // TESTING nDestinationID = 0 ENDIF WRITE_DEBUG Unknown_Los_Santos_Taxi_Destination PRINT_NOW ( TX_LS1 ) 5000 1 xposDestination = 2468.1455 yposDestination = -1736.1840 zposDestination = 12.3828 BREAK ENDSWITCH RETURN // **************************************** // CHOOSE DESTINATION // Las Venturas Taxiodd_Choose_Destination_LasVenturas: IF TEMP_flagDestinationTesting = 1 // TESTING nDestinationID = TEMP_nDestination + 1 ELSE GENERATE_RANDOM_INT_IN_RANGE 1 46 nDestinationID ENDIF SWITCH nDestinationID // Oil Refinery CASE 1 PRINT_NOW ( TX_VE1 ) 5000 1 xposDestination = 2491.378 yposDestination = 2773.608 zposDestination = 9.764 BREAK // Shopping Mall CASE 2 PRINT_NOW ( TX_VE2 ) 5000 1 xposDestination = 2899.211 yposDestination = 2435.624 zposDestination = 9.764 BREAK // Ring Master Casino (circus Circus) CASE 3 PRINT_NOW ( TX_VE3 ) 5000 1 xposDestination = 2220.495 yposDestination = 1838.497 zposDestination = 9.764 BREAK // The Starfish Casino CASE 4 PRINT_NOW ( TX_VE4 ) 5000 1 xposDestination = 2246.202 yposDestination = 1896.591 zposDestination = 9.764 BREAK // The Emerald Isle CASE 5 PRINT_NOW ( TX_VE5 ) 5000 1 xposDestination = 2127.307 yposDestination = 2355.785 zposDestination = 9.764 BREAK // Police Station CASE 6 PRINT_NOW ( TX_VE6 ) 5000 1 xposDestination = 2289.5889 yposDestination = 2415.9392 zposDestination = 9.7773 BREAK // VRock Casino CASE 7 PRINT_NOW ( TX_VE7 ) 5000 1 xposDestination = 2636.223 yposDestination = 2344.803 zposDestination = 9.764 BREAK // Blackfield Chapel CASE 8 PRINT_NOW ( TX_VE8 ) 5000 1 xposDestination = 1439.000 yposDestination = 754.000 zposDestination = 9.764 BREAK // Vegas Stadium CASE 9 PRINT_NOW ( TX_VE9 ) 5000 1 xposDestination = 1095.6185 yposDestination = 1375.2921 zposDestination = 9.7977 BREAK // Greenglass College CASE 10 PRINT_NOW ( TX_VE10 ) 5000 1 xposDestination = 1162.0768 yposDestination = 1124.4409 zposDestination = 9.8125 BREAK // Vegas Airport CASE 11 PRINT_NOW ( TX_VE11 ) 5000 1 xposDestination = 1710.6244 yposDestination = 1448.1534 zposDestination = 9.6643 BREAK // Military Fuel Depot CASE 12 PRINT_NOW ( TX_VE12 ) 5000 1 xposDestination = 2490.3840 yposDestination = 2771.7024 zposDestination = 9.7964 BREAK // Golf Clubhouse CASE 13 PRINT_NOW ( TX_VE13 ) 5000 1 xposDestination = 1465.1866 yposDestination = 2773.9648 zposDestination = 9.6875 BREAK // Train Station CASE 14 PRINT_NOW ( TX_VE14 ) 5000 1 xposDestination = 1436.1449 yposDestination = 2670.3848 zposDestination = 9.6797 BREAK // Baseball Stadium CASE 15 PRINT_NOW ( TX_VE15 ) 5000 1 xposDestination = 1486.4716 yposDestination = 2257.9453 zposDestination = 9.8128 BREAK // Steakhouse CASE 16 PRINT_NOW ( TX_VE16 ) 5000 1 xposDestination = 1694.1876 yposDestination = 2200.3777 zposDestination = 9.8203 BREAK // Fire Station CASE 17 PRINT_NOW ( TX_VE17 ) 5000 1 xposDestination = 1744.6561 yposDestination = 2055.8103 zposDestination = 9.7309 BREAK // Hotel CASE 18 PRINT_NOW ( TX_VE18 ) 5000 1 xposDestination = 1840.5543 yposDestination = 2169.6541 zposDestination = 9.8010 BREAK // Souvenier Shop CASE 19 PRINT_NOW ( TX_VE19 ) 5000 1 xposDestination = 1928.3573 yposDestination = 2434.3101 zposDestination = 9.8130 BREAK // Art Gallery CASE 20 PRINT_NOW ( TX_VE20 ) 5000 1 xposDestination = 2424.1226 yposDestination = 2315.7451 zposDestination = 9.6797 BREAK // Bank CASE 21 PRINT_NOW ( TX_VE21 ) 5000 1 xposDestination = 2431.1538 yposDestination = 2375.0613 zposDestination = 9.6797 BREAK // Courthouse CASE 22 PRINT_NOW ( TX_VE22 ) 5000 1 xposDestination = 2370.2981 yposDestination = 2467.9248 zposDestination = 9.6797 BREAK // Estate Agents CASE 23 PRINT_NOW ( TX_VE23 ) 5000 1 xposDestination = 2272.0427 yposDestination = 2286.7554 zposDestination = 9.6797 BREAK // Freement St. Casino CASE 24 PRINT_NOW ( TX_VE24 ) 5000 1 xposDestination = 2324.5129 yposDestination = 2155.0994 zposDestination = 9.6797 BREAK // Strip Club CASE 25 PRINT_NOW ( TX_VE25 ) 5000 1 xposDestination = 2508.4724 yposDestination = 2131.2046 zposDestination = 9.8125 BREAK // Ammunation CASE 26 PRINT_NOW ( TX_VE26 ) 5000 1 xposDestination = 2530.9136 yposDestination = 2083.3552 zposDestination = 9.6797 BREAK // Drive Thru Pharmacy CASE 27 PRINT_NOW ( TX_VE27 ) 5000 1 xposDestination = 2546.5105 yposDestination = 1968.6073 zposDestination = 9.8125 BREAK // Chinese Mall CASE 28 PRINT_NOW ( TX_VE28 ) 5000 1 xposDestination = 2530.7805 yposDestination = 1821.2277 zposDestination = 9.8129 BREAK // Burger Shot CASE 29 PRINT_NOW ( TX_VE29 ) 5000 1 xposDestination = 2360.3125 yposDestination = 2071.9961 zposDestination = 9.6797 BREAK // Visage Casino CASE 30 PRINT_NOW ( TX_VE30 ) 5000 1 xposDestination = 2035.4565 yposDestination = 1912.2793 zposDestination = 11.1768 BREAK // Tourist Information CASE 31 PRINT_NOW ( TX_VE31 ) 5000 1 xposDestination = 2078.4136 yposDestination = 2041.1165 zposDestination = 9.8203 BREAK // Caligulas Casino CASE 32 PRINT_NOW ( TX_VE32 ) 5000 1 xposDestination = 2159.0903 yposDestination = 1678.1124 zposDestination = 9.6953 BREAK // Treasure Island Casino CASE 33 PRINT_NOW ( TX_VE33 ) 5000 1 xposDestination = 2028.4962 yposDestination = 1711.7435 zposDestination = 9.6797 BREAK // Royal Casino CASE 34 PRINT_NOW ( TX_VE34 ) 5000 1 xposDestination = 2076.4060 yposDestination = 1519.0378 zposDestination = 9.6875 BREAK // High Roller Casino CASE 35 PRINT_NOW ( TX_VE35 ) 5000 1 xposDestination = 2040.2511 yposDestination = 1342.8905 zposDestination = 9.6797 BREAK // Camel's Toe Casino CASE 36 PRINT_NOW ( TX_VE36 ) 5000 1 xposDestination = 2230.4697 yposDestination = 1284.8906 zposDestination = 9.6797 BREAK // Come-a-lot Casino CASE 37 PRINT_NOW ( TX_VE37 ) 5000 1 xposDestination = 2074.5100 yposDestination = 1162.8325 zposDestination = 9.6875 BREAK // Pink Swan Casino CASE 38 PRINT_NOW ( TX_VE38 ) 5000 1 xposDestination = 2039.2568 yposDestination = 1174.1720 zposDestination = 9.6797 BREAK // The Four Dragons Casino CASE 39 PRINT_NOW ( TX_VE39 ) 5000 1 xposDestination = 2040.2843 yposDestination = 1005.6189 zposDestination = 9.6645 BREAK // Hospital CASE 40 PRINT_NOW ( TX_VE40 ) 5000 1 xposDestination = 1608.5217 yposDestination = 1827.7522 zposDestination = 9.8281 BREAK // Church CASE 41 PRINT_NOW ( TX_VE41 ) 5000 1 xposDestination = 2483.5139 yposDestination = 922.5383 zposDestination = 9.8203 BREAK // Strip Club CASE 42 PRINT_NOW ( TX_VE42 ) 5000 1 xposDestination = 2544.6680 yposDestination = 1016.1683 zposDestination = 9.7593 BREAK // Tiki Hotel CASE 43 PRINT_NOW ( TX_VE43 ) 5000 1 xposDestination = 2491.7646 yposDestination = 1533.6870 zposDestination = 9.6875 BREAK // Train Station CASE 44 PRINT_NOW ( TX_VE44 ) 5000 1 xposDestination = 2828.6487 yposDestination = 1292.2684 zposDestination = 9.8281 BREAK // Sex Shop CASE 45 PRINT_NOW ( TX_VE45 ) 5000 1 xposDestination = 2524.4929 yposDestination = 2297.5842 zposDestination = 9.6797 BREAK DEFAULT IF TEMP_flagDestinationTesting = 1 // TESTING nDestinationID = 0 ENDIF WRITE_DEBUG Unknown_Las_Venturas_Taxi_Destination PRINT_NOW ( TX_VE1 ) 5000 1 xposDestination = 2491.378 yposDestination = 2773.608 zposDestination = 9.764 BREAK ENDSWITCH RETURN // **************************************** // CHOOSE DESTINATION // San Fierro Taxiodd_Choose_Destination_SanFierro: IF TEMP_flagDestinationTesting = 1 // TESTING nDestinationID = TEMP_nDestination + 1 ELSE GENERATE_RANDOM_INT_IN_RANGE 1 28 nDestinationID ENDIF SWITCH nDestinationID // Skyscraper CASE 1 PRINT_NOW ( TX_SF1 ) 5000 1 xposDestination = -1974.876 yposDestination = 486.737 zposDestination = 30.371 BREAK // Skyscraper CASE 2 PRINT_NOW ( TX_SF2 ) 5000 1 xposDestination = -2044.419 yposDestination = 500.771 zposDestination = 35.176 BREAK // Mall CASE 3 PRINT_NOW ( TX_SF3 ) 5000 1 xposDestination = -2150.581 yposDestination = 251.624 zposDestination = 35.176 BREAK // Train Station CASE 4 PRINT_NOW ( TX_SF4 ) 5000 1 xposDestination = -1988.513 yposDestination = 138.31 zposDestination = 27.857 BREAK // Stadium CASE 5 PRINT_NOW ( TX_SF5 ) 5000 1 xposDestination = -2216.399 yposDestination = -297.305 zposDestination = 35.202 BREAK // Country Club CASE 6 PRINT_NOW ( TX_SF6 ) 5000 1 xposDestination = -2726.4282 yposDestination = -310.5865 zposDestination = 6.0313 BREAK // Modern Cathedral CASE 7 PRINT_NOW ( TX_SF7 ) 5000 1 xposDestination = -2704.6492 yposDestination = -3.5644 zposDestination = 3.1953 BREAK // Library CASE 8 PRINT_NOW ( TX_SF8 ) 5000 1 xposDestination = -2708.997 yposDestination = 127.501 zposDestination = 4.584 BREAK // City Hall CASE 9 PRINT_NOW ( TX_SF9 ) 5000 1 xposDestination = -2751.905 yposDestination = 376.781 zposDestination = 4.584 BREAK // Vank Hoff in the Park Hotel CASE 10 PRINT_NOW ( TX_SF10 ) 5000 1 xposDestination = -2415.7495 yposDestination = 330.9614 zposDestination = 33.9765 BREAK // Biffin Bridge Hotel CASE 11 PRINT_NOW ( TX_SF11 ) 5000 1 xposDestination = -2454.9255 yposDestination = 138.9312 zposDestination = 33.9765 BREAK // Central Hashbury CASE 12 PRINT_NOW ( TX_SF12 ) 5000 1 xposDestination = -2499.2144 yposDestination = -16.6149 zposDestination = 24.6094 BREAK // Missionary Hill Viewpoint CASE 13 PRINT_NOW ( TX_SF13 ) 5000 1 xposDestination = -2431.7349 yposDestination = -198.9205 zposDestination = 34.1563 BREAK // Skyscraper CASE 14 PRINT_NOW ( TX_SF14 ) 5000 1 xposDestination = -1815.151 yposDestination = 597.754 zposDestination = 38.528 BREAK // Easter Basin Naval Station CASE 15 PRINT_NOW ( TX_SF15 ) 5000 1 xposDestination = -1530.776 yposDestination = 487.201 zposDestination = 9.44 BREAK // Easter Basin Docks CASE 16 PRINT_NOW ( TX_SF16 ) 5000 1 xposDestination = -1745.08 yposDestination = 27.759 zposDestination = 5.452 BREAK // Airport CASE 17 PRINT_NOW ( TX_SF17 ) 5000 1 xposDestination = -1414.557 yposDestination = -301.347 zposDestination = 14.637 BREAK // Under Gant Bridge CASE 18 PRINT_NOW ( TX_SF18 ) 5000 1 xposDestination = -2618.4668 yposDestination = 1432.7518 zposDestination = 6.1016 BREAK // Downtown Square CASE 19 PRINT_NOW ( TX_SF19 ) 5000 1 xposDestination = -1904.7648 yposDestination = 882.7293 zposDestination = 34.0156 BREAK // Twisty Hill CASE 20 PRINT_NOW ( TX_SF20 ) 5000 1 xposDestination = -2134.7288 yposDestination = 919.0828 zposDestination = 78.8438 BREAK // Burger Shot CASE 21 PRINT_NOW ( TX_SF21 ) 5000 1 xposDestination = -2361.8362 yposDestination = 993.0967 zposDestination = 49.6875 BREAK // Tuff Nut Donuts CASE 22 PRINT_NOW ( TX_SF22 ) 5000 1 xposDestination = -2753.6897 yposDestination = 779.9389 zposDestination = 53.2422 BREAK // Pier 69 CASE 23 PRINT_NOW ( TX_SF23 ) 5000 1 xposDestination = -1714.7173 yposDestination = 1332.5645 zposDestination = 6.0391 BREAK // Chinatown Gates CASE 24 PRINT_NOW ( TX_SF24 ) 5000 1 xposDestination = -2251.0332 yposDestination = 717.7971 zposDestination = 48.2969 BREAK // Well Stacked Pizza Co CASE 25 PRINT_NOW ( TX_SF25 ) 5000 1 xposDestination = -1807.8131 yposDestination = 936.0701 zposDestination = 23.7500 BREAK // Church CASE 26 PRINT_NOW ( TX_SF26 ) 5000 1 xposDestination = -1969.2053 yposDestination = 1115.3121 zposDestination = 52.6942 BREAK // Bridge Walkway CASE 27 PRINT_NOW ( TX_SF27 ) 5000 1 xposDestination = -2540.5933 yposDestination = 1222.1876 zposDestination = 36.4283 BREAK DEFAULT IF TEMP_flagDestinationTesting = 1 // TESTING nDestinationID = 0 ENDIF WRITE_DEBUG Unknown_San_Fierro_Taxi_Destination PRINT_NOW ( TX_SF1 ) 5000 1 xposDestination = -1974.876 yposDestination = 486.737 zposDestination = 30.371 BREAK ENDSWITCH RETURN // **************************************** // CHOOSE DESTINATION // Red County Taxiodd_Choose_Destination_RedCounty: WRITE_DEBUG NO_RED_COUNTY_DESTINATIONS_YET IF TEMP_flagDestinationTesting = 1 // TESTING nDestinationID = 0 ELSE WRITE_DEBUG CHOOSING_LOS_SANTOS GOSUB Taxiodd_Choose_Destination_LosSantos ENDIF RETURN // **************************************** // CHOOSE DESTINATION // FlintCounty Taxiodd_Choose_Destination_FlintCounty: WRITE_DEBUG NO_FLINT_COUNTY_DESTINATIONS_YET IF TEMP_flagDestinationTesting = 1 // TESTING nDestinationID = 0 ELSE WRITE_DEBUG CHOOSING_SAN_FIERRO GOSUB Taxiodd_Choose_Destination_SanFierro ENDIF RETURN // **************************************** // CHOOSE DESTINATION // Whetstone Taxiodd_Choose_Destination_Whetstone: WRITE_DEBUG NO_WHETSTONE_DESTINATIONS_YET IF TEMP_flagDestinationTesting = 1 // TESTING nDestinationID = 0 ELSE WRITE_DEBUG CHOOSING_SAN_FIERRO GOSUB Taxiodd_Choose_Destination_SanFierro ENDIF RETURN // **************************************** // CHOOSE DESTINATION // Tierra Robada Taxiodd_Choose_Destination_TierraRobada: IF TEMP_flagDestinationTesting = 1 // TESTING nDestinationID = TEMP_nDestination + 1 ELSE GENERATE_RANDOM_INT_IN_RANGE 1 3 nDestinationID ENDIF SWITCH nDestinationID // Art-Deco Cafe CASE 1 PRINT_NOW ( TX_TR1 ) 5000 1 xposDestination = -1934.0780 yposDestination = 2382.7617 zposDestination = 48.5000 BREAK // Grill Restaurant CASE 2 PRINT_NOW ( TX_TR2 ) 5000 1 xposDestination = -846.9434 yposDestination = 1528.1541 zposDestination = 20.5510 BREAK DEFAULT IF TEMP_flagDestinationTesting = 1 // TESTING nDestinationID = 0 ENDIF WRITE_DEBUG Unknown_Tierra_Robada_Taxi_Destination PRINT_NOW ( TX_TR1 ) 5000 1 xposDestination = -1934.0780 yposDestination = 2382.7617 zposDestination = 48.5000 BREAK ENDSWITCH RETURN // **************************************** // CHOOSE DESTINATION // Bone County Taxiodd_Choose_Destination_BoneCounty: IF TEMP_flagDestinationTesting = 1 // TESTING nDestinationID = TEMP_nDestination + 1 ELSE GENERATE_RANDOM_INT_IN_RANGE 1 6 nDestinationID ENDIF SWITCH nDestinationID // Bunny Ranch CASE 1 PRINT_NOW ( TX_BC1 ) 5000 1 xposDestination = 689.6460 yposDestination = 1943.2524 zposDestination = 4.5390 BREAK // Dam CASE 2 PRINT_NOW ( TX_BC2 ) 5000 1 xposDestination = -904.3732 yposDestination = 2007.6432 zposDestination = 59.9141 BREAK // Desert Airfield CASE 3 PRINT_NOW ( TX_BC3 ) 5000 1 xposDestination = 392.0225 yposDestination = 2547.8064 zposDestination = 15.5568 BREAK // Shooting Range CASE 4 PRINT_NOW ( TX_BC4 ) 5000 1 xposDestination = 832.8276 yposDestination = 1705.4286 zposDestination = 4.8587 BREAK // Probe Inn CASE 5 PRINT_NOW ( TX_BC5 ) 5000 1 xposDestination = -84.9834 yposDestination = 1358.6156 zposDestination = 9.3644 BREAK DEFAULT IF TEMP_flagDestinationTesting = 1 nDestinationID = 0 ENDIF WRITE_DEBUG Unknown_Bone_County_Taxi_Destination PRINT_NOW ( TX_BC1 ) 5000 1 xposDestination = 689.6460 yposDestination = 1943.2524 zposDestination = 4.5390 BREAK ENDSWITCH RETURN // ************************************************************************************************************* // HOUSEKEEPING GOSUBS // ************************************************************************************************************* // **************************************** // DEBUG TOOLS Taxiodd_Debug_Tools: // Display mission stage variables for debug IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_SPACE display_debug++ IF display_debug > 2 display_debug = 0 ENDIF CLEAR_ALL_VIEW_VARIABLES ENDIF IF display_debug = 1 // system variables Taxiodd_view_debug[0] = m_stage Taxiodd_view_debug[1] = m_goals Taxiodd_view_debug[2] = m_mission_timer Taxiodd_view_debug[3] = taxi_passed Taxiodd_view_debug[4] = nCleanupTest_MissionPeds Taxiodd_view_debug[5] = 0 Taxiodd_view_debug[6] = 0 Taxiodd_view_debug[7] = 0 // First two lines are so that the important data displayed is not hidden by other text VIEW_INTEGER_VARIABLE Taxiodd_view_debug[0] m_stage VIEW_INTEGER_VARIABLE Taxiodd_view_debug[1] m_goals VIEW_INTEGER_VARIABLE Taxiodd_view_debug[4] Cleanup_Testing VIEW_INTEGER_VARIABLE Taxiodd_view_debug[2] m_mission_timer VIEW_INTEGER_VARIABLE Taxiodd_view_debug[3] Total_taxi_passed ENDIF IF display_debug = 2 // A second page of variable output (if required - just copy format above) ENDIF // Quit level - no mission pass/fail - cleanup only IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ESC m_quit = 1 ENDIF // Pause level IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_P IF m_pause = 0 m_pause = 1 WRITE_DEBUG LEVEL_PAUSED ELSE m_pause = 0 WRITE_DEBUG LEVEL_UNPAUSED ENDIF ENDIF RETURN // **************************************** // DEBUG SHORTCUTS Taxiodd_Debug_Shortcuts: // Jumps // ----- IF NOT IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_J RETURN ENDIF IF m_stage = 2 CLEAR_AREA xposDestination yposDestination zposDestination 10.0 FALSE SET_CHAR_COORDINATES scplayer xposDestination yposDestination zposDestination m_goals = 1 ENDIF RETURN // **************************************** // DESTINATION TESTING (NOTE: Endless loop) Taxiodd_Destination_Testing: LVAR_INT TEMP_nCityOrCounty LVAR_INT TEMP_nDestination TEMP_nCityOrCounty = 0 TEMP_nDestination = 0 // GOTO LABEL TAXIODD_TEMP_RECHOOSE_LOCATION: nDestinationID = 0 SWITCH TEMP_nCityOrCounty CASE 0 GOSUB Taxiodd_Choose_Destination_LosSantos IF NOT nDestinationID = 0 WRITE_DEBUG Los_Santos ENDIF BREAK CASE 1 GOSUB Taxiodd_Choose_Destination_LasVenturas IF NOT nDestinationID = 0 WRITE_DEBUG Las_Venturas ENDIF BREAK CASE 2 GOSUB Taxiodd_Choose_Destination_SanFierro IF NOT nDestinationID = 0 WRITE_DEBUG San_Fierro ENDIF BREAK CASE 3 GOSUB Taxiodd_Choose_Destination_RedCounty IF NOT nDestinationID = 0 WRITE_DEBUG Red_County ENDIF BREAK CASE 4 GOSUB Taxiodd_Choose_Destination_FlintCounty IF NOT nDestinationID = 0 WRITE_DEBUG Flint_County ENDIF BREAK CASE 5 GOSUB Taxiodd_Choose_Destination_Whetstone IF NOT nDestinationID = 0 WRITE_DEBUG Whetstone ENDIF BREAK CASE 6 GOSUB Taxiodd_Choose_Destination_TierraRobada IF NOT nDestinationID = 0 WRITE_DEBUG Tierra_Robada ENDIF BREAK CASE 7 GOSUB Taxiodd_Choose_Destination_BoneCounty IF NOT nDestinationID = 0 WRITE_DEBUG Bone_County ENDIF BREAK DEFAULT TEMP_nCityOrCounty = -1 ENDSWITCH IF nDestinationID = 0 WAIT 0 TEMP_nCityOrCounty++ TEMP_nDestination = 0 GOTO TAXIODD_TEMP_RECHOOSE_LOCATION ENDIF // Jump to location WRITE_DEBUG_WITH_INT J_A_D___ID nDestinationID WHILE NOT IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_J IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A TEMP_nCityOrCounty++ GOTO TAXIODD_TEMP_RECHOOSE_LOCATION ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D TEMP_nDestination++ GOTO TAXIODD_TEMP_RECHOOSE_LOCATION ENDIF WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD scplayer ADD_BLIP_FOR_COORD xposDestination yposDestination zposDestination blipDestination SET_CHAR_COORDINATES scplayer xposDestination yposDestination zposDestination ENDIF TEMP_nDestination++ WRITE_DEBUG PRESS_N_FOR_NEXT_FARE WHILE NOT IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_N WAIT 0 ENDWHILE REMOVE_BLIP blipDestination WAIT 0 GOTO TAXIODD_TEMP_RECHOOSE_LOCATION RETURN // **************************************** // FRAME COUNTER (Useful if processor scheduling is needed) Taxiodd_Frame_Counter: m_frame_num++ IF m_frame_num > 9 m_frame_num = 0 ENDIF RETURN // **************************************** // ADDITIONAL TIMERS Taxiodd_Additional_Timers: GET_GAME_TIMER m_this_frame_time m_time_diff = m_this_frame_time - m_last_frame_time m_last_frame_time = m_this_frame_time m_mission_timer += m_time_diff RETURN // ================================================================= // GOSUB: Next_Stage (sets flags and timers for next mission stage) // ================================================================= Taxiodd_Next_Stage: m_stage++ m_goals = 0 TIMERA = 0 TIMERB = 0 RETURN // ================================================================= // GOSUB: Next_Job (sets flags and timers for a new job) // ================================================================= Taxiodd_Next_Job: m_stage = 1 m_goals = 0 TIMERA = 0 TIMERB = 0 RETURN // ************************************************************************************************************* // INTRO CUTSCENE GOSUB // ************************************************************************************************************* Taxiodd_Intro_Cutscene: /* SET_PLAYER_CONTROL player1 OFF SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_CUTSCENE SCRASH2 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE SET_FADING_COLOUR 0 0 0 DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF */ RETURN // ************************************************************************************************************* // INITIALISATION GOSUBS // ************************************************************************************************************* Taxiodd_Initialisation: WHILE NOT IS_PLAYER_PLAYING player1 WAIT 0 ENDWHILE GOSUB Taxiodd_Load_All_Models GOSUB Taxiodd_Load_All_Anims // Display help? (first time only) IF done_taxi_help = FALSE PRINT_HELP TX_H1 done_taxi_help = TRUE ENDIF // Get the taxi the player is in GOSUB Store_Player_Taxi // Variables nEarnings = 0 nBonusTimeFromBadPlace = 0 nBonusTimeToBadPlace = 0 // Fares Counter g_Taxiodd_faresKM = 0 DISPLAY_ONSCREEN_COUNTER_WITH_STRING g_Taxiodd_faresKM COUNTER_DISPLAY_NUMBER TX_TOTL // Timer g_Taxiodd_timerKM = 0 // In a Row Bonus nNextInARowJobs = TAXIODD_IN_A_ROW_JOBS_INCREASE nNextInARowBonus = TAXIODD_IN_A_ROW_BONUS_INCREASE // Model values modelCustomer = TAXIODD_NO_CHAR_MODEL modelPreviousCustomer = TAXIODD_NO_CHAR_MODEL GOSUB Taxiodd_Next_Stage RETURN // *********************************** // LOAD ALL MODELS Taxiodd_Load_All_Models: // CARS // REQUEST_MODEL VOODOO // Car with hood popped, and gangBackup car // REQUEST_MODEL FIRETRUK // Fire Engine // PEDS // GUNS // OBJECTS REQUEST_MODEL CR_AMMOBOX LOAD_ALL_MODELS_NOW // Are Cars Loaded? // Are Peds Loaded? // Are weapons loaded? // Are the Objects loaded? WHILE NOT HAS_MODEL_LOADED CR_AMMOBOX WAIT 0 ENDWHILE RETURN // *********************************** // LOAD ALL ANIMS Taxiodd_Load_All_Anims: REQUEST_ANIMATION MISC // for hailing a taxi // Are anims loaded? WHILE NOT HAS_ANIMATION_LOADED MISC WAIT 0 ENDWHILE RETURN // ************************************************************************************************************* // END OF LEVEL GOSUBS - fail, pass, cleanup // ************************************************************************************************************* // SCORES, ETC when the Job Passed Taxiodd_Update_Job_Passed_Scores: // This has been taken out of the 'job passed' routine so that it can display the 'job passed' text as // the passenger is getting out of the car. Before, it waited until the passenger was out of the car. // ...display normal 'pass' messages // Calculate the money // NOTE: To lower the money, increase the value // IF g_Taxiodd_bonusKM > 0 IF flagBonusOnDisplay = TRUE // Job complete within bonus time nTempInt = nDestinationDistance / 16//20 ELSE // Job complete - but no bonus nTempInt = nDestinationDistance / 40//60 ENDIF // NOTE: nTempInt2 used to recored the total money made in this job so that the stat can be updated nTempInt2 = nTempInt // Score ADD_SCORE player1 nTempInt PRINT_WITH_NUMBER_BIG ( TX_PAY ) nTempInt 6000 6 ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE nEarnings += nTempInt // Update Global and Local counters g_Taxiodd_faresKM++ taxi_passed++ // In a Row Bonus flagReceivingInARowBonus = FALSE IF g_Taxiodd_faresKM = nNextInARowJobs // Add and Display bonus PRINT_WITH_2_NUMBERS_BIG ( TX_SEQ ) g_Taxiodd_faresKM nNextInARowBonus 5000 5 ADD_SCORE player1 nNextInARowBonus nEarnings = nEarnings + nNextInARowBonus flagReceivingInARowBonus = TRUE // Increase total for this job nTempInt2 += nNextInARowBonus // Update for next bonus nNextInARowJobs += TAXIODD_IN_A_ROW_JOBS_INCREASE nNextInARowBonus += TAXIODD_IN_A_ROW_BONUS_INCREASE ENDIF // Pass the mission when 50 jobs complete IF done_taxiodd_progress = FALSE AND taxi_passed > 49 WRITE_LOG "UNLOCK_ACHIEVEMENT YES_I_SPEAK_ENGLISH" REGISTER_ODDJOB_MISSION_PASSED PLAYER_MADE_PROGRESS 1 PLAY_MISSION_PASSED_TUNE 2 PRINT_BIG TX_DONE 5000 5 // All taxi's have nitro PRINT_NOW TX_NTRO 7000 1 flagNitroOnDisplay = TRUE timerNitro = m_mission_timer + 7000 // Activate nitro SET_ALL_TAXIS_HAVE_NITRO TRUE done_taxiodd_progress = TRUE ELSE // ...display normal 'pass' messages IF g_Taxiodd_bonusKM > 0 // Job complete within bonus time IF flagReceivingInARowBonus = TRUE PRINT_BIG TX_FAST 5000 4 ELSE PRINT_BIG TX_FAST 5000 5 ENDIF SET_CHAR_SAY_CONTEXT charCustomer CONTEXT_GLOBAL_TAXI_TIP nIgnore ELSE // Job complete - but no bonus IF flagReceivingInARowBonus = TRUE PRINT_BIG TX_WIN 5000 4 ELSE PRINT_BIG TX_WIN 5000 5 ENDIF SET_CHAR_SAY_CONTEXT charCustomer CONTEXT_GLOBAL_TAXI_SUCCESS nIgnore ENDIF ENDIF // Taxi stats INCREMENT_INT_STAT_NO_MESSAGE PASSENGERS_DELIVERED_IN_TAXI 1 INCREMENT_INT_STAT_NO_MESSAGE TAXI_MONEY_MADE nTempInt2 RETURN // PASS (individual job) Taxiodd_Job_Passed: // Give some extra time to pick up a new passenger g_Taxiodd_timerKM += 10000 // Clear bonus counter CLEAR_ONSCREEN_COUNTER g_Taxiodd_bonusKM flagBonusOnDisplay = FALSE // Prepare for new job flagPassThisJob = FALSE GOSUB Taxiodd_Next_Job RETURN // FAIL (individual job, but allows another job to start) Taxiodd_Job_Failed: IF NOT IS_CHAR_DEAD charCustomer MARK_CHAR_AS_NO_LONGER_NEEDED charCustomer nCleanupTest_MissionPeds-- ENDIF REMOVE_BLIP blipCustomer REMOVE_BLIP blipDestination // Clear bonus counter CLEAR_ONSCREEN_COUNTER g_Taxiodd_bonusKM flagBonusOnDisplay = FALSE flagFailThisJob = FALSE GOSUB Taxiodd_Next_Job RETURN // MISSION ENDED (Quits out of the taxi missions and cleans up the script) Taxiodd_Mission_Ended: IF NOT IS_CAR_DEAD carTaxi SET_TAXI_LIGHTS carTaxi OFF ENDIF PRINT_BIG TX_END 5000 5 PRINT_WITH_NUMBER_BIG TX_PAY nEarnings 6000 6 // Display reason for mission end CLEAR_SMALL_PRINTS SWITCH nEndMissionReason CASE TAXIODD_END_NOT_IN_TAXI PRINT_NOW TX_F1 5000 1 BREAK CASE TAXIODD_END_OUT_OF_TIME PRINT_NOW TX_F2 5000 1 BREAK CASE TAXIODD_END_TAXI_FUCKED PRINT_NOW TX_F3 5000 1 BREAK ENDSWITCH CLEAR_HELP RETURN // CLEANUP Taxiodd_Mission_Cleanup: // reset radar mode DISPLAY_RADAR 3 // HACKED RADAR ON // Get rid of the Player's mission specific weapons // ------------------------------------------------ // IF IS_PLAYER_PLAYING player1 // REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_MOLOTOV // ENDIF // Entity Task Removal, etc. // ------------------------- IF NOT IS_CHAR_DEAD charCustomer CLEAR_LOOK_AT charCustomer IF IS_CAR_DEAD carTaxi GOSUB Taxiodd_Cancel_Hail ELSE IF NOT IS_CHAR_IN_CAR charCustomer carTaxi GOSUB Taxiodd_Cancel_Hail ENDIF ENDIF ENDIF // Entity Clearup // -------------- MARK_CAR_AS_NO_LONGER_NEEDED carTaxi MARK_CHAR_AS_NO_LONGER_NEEDED charCustomer REPEAT TAXIODD_MAX_HELPERS nLoop MARK_OBJECT_AS_NO_LONGER_NEEDED objectHelpers[nLoop] ENDREPEAT // Blip Clearup // ------------ REMOVE_BLIP blipCustomer REMOVE_BLIP blipDestination REPEAT TAXIODD_MAX_PAY_AND_SPRAY_ON_DISPLAY nLoop REMOVE_BLIP blipPayAndSpray[nLoop] ENDREPEAT // Counters and Timers Clearup // --------------------------- CLEAR_ONSCREEN_COUNTER g_Taxiodd_faresKM CLEAR_ONSCREEN_TIMER g_Taxiodd_timerKM CLEAR_ONSCREEN_COUNTER g_Taxiodd_bonusKM // Animation Clearup // ----------------- REMOVE_ANIMATION MISC // Models Clearup // -------------- MARK_MODEL_AS_NO_LONGER_NEEDED CR_AMMOBOX // === RESTORE ENVIRONMENT SETTINGS === // ------------------------------------ SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_WANTED_MULTIPLIER 1.0 SWITCH_EMERGENCY_SERVICES ON SWITCH_RANDOM_TRAINS ON // Restore switched off road // ------------------------- // SWITCH_ROADS_BACK_TO_ORIGINAL xlo ylo zlo xhi yhi zhi // Restore the mod garage state back to its original setting // --------------------------------------------------------- stop_gargae_for_neil = nHoldModGarageState // Make sure the mobile phone doesn't ring immediately after a mission // ------------------------------------------------------------------- GET_GAME_TIMER timer_mobile_start // Housekeeping // ------------ flag_player_on_oddjob = FALSE flag_player_on_mission = FALSE flag_taxiodd_mission_launched = FALSE MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // *********************************** Ambulance missions ********************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // Mission start stuff GOSUB mission_start_ambulance GOSUB ambulance_failed MISSION_END { // Variables for mission VAR_INT ped_time_limit LVAR_INT players_ambulance ped_time_limit_temp ped_counter number_of_injured_peds brackets_var LVAR_INT ambulance_health_last ambulance_health_now time_drop max_peds_in_car peds_in_car score_am bonus_time_flag LVAR_INT saved_peds hospital_blip time_chunk time_chunk_in_secs car_full_flag VAR_INT db_ambulance_level ///////////////// NEEDS TO BE CHANGED LVAR_INT drop_off_time_bonus hospital_blip_flag mission_end_button_ambulance players_ambulance_health saved_peds_this_go LVAR_INT injured_ped_6 injured_ped_6_blip injured_ped_6_flag LVAR_INT injured_ped_7 injured_ped_7_blip injured_ped_7_flag LVAR_INT injured_ped_8 injured_ped_8_blip injured_ped_8_flag LVAR_INT injured_ped_9 injured_ped_9_blip injured_ped_9_flag LVAR_INT injured_ped_10 injured_ped_10_blip injured_ped_10_flag LVAR_INT injured_ped_11 injured_ped_11_blip injured_ped_11_flag LVAR_INT injured_ped_12 injured_ped_12_blip injured_ped_12_flag LVAR_INT ped_var_for_gosub ped_var_for_gosub_blip player_failed_mission LVAR_INT ped_var_for_gosub_flag LVAR_INT injured_ped_1 injured_ped_1_blip injured_ped_1_flag LVAR_INT injured_ped_2 injured_ped_2_blip injured_ped_2_flag LVAR_INT injured_ped_3 injured_ped_3_blip injured_ped_3_flag LVAR_INT injured_ped_4 injured_ped_4_blip injured_ped_4_flag LVAR_INT injured_ped_5 injured_ped_5_blip injured_ped_5_flag LVAR_INT dave_player_location LVAR_INT dave_task_assigned_flag LVAR_INT amublance_task_status LVAR_INT dave_counter LVAR_INT dave_cord_blip_vis[13] LVAR_FLOAT dave_ped_coord_x[13] dave_ped_coord_y[13] dave_ped_coord_z[13] LVAR_INT amb_time_addition[13] LVAR_FLOAT random_x random_y hospital_x hospital_y hospital_z LVAR_FLOAT player1_a_x player1_a_y player1_a_z hospital_door_x hospital_door_y hospital_door_z LVAR_FLOAT ped_coord_x ped_coord_y ped_coord_z amb_sound_x amb_sound_y amb_sound_z LVAR_FLOAT difference_x_float_a difference_y_float_a sum_difference_a_xy LVAR_FLOAT players_distance_from_ped peds_distance_from_hospital ped_time_limit_float random_ped_heading time_chunk_divider LVAR_FLOAT ambulance_min_x ambulance_min_y ambulance_min_z LVAR_FLOAT ambulance_max_x ambulance_max_y ambulance_max_z LVAR_FLOAT ambulance_temp_float LVAR_FLOAT ambulance_min_pos_x ambulance_max_pos_x ambulance_min_pos_y ambulance_max_pos_y LVAR_FLOAT davex davey davez LVAR_FLOAT hospital_distance_1 LVAR_FLOAT hospital_distance_2 LVAR_FLOAT hospital_distance_3 LVAR_FLOAT hospital_distance_4 LVAR_FLOAT hospital_distance_5 LVAR_FLOAT hospital_distance_6 LVAR_FLOAT hospital_distance_7 LVAR_FLOAT hospital_distance_8 LVAR_FLOAT hospital_distance_temp LVAR_INT closest_hospital LVAR_INT gang_dislike[10] LVAR_INT gang_hate[10] LVAR_INT gangs_changed LVAR_INT amb_decision LVAR_INT amb_dummy_sample LVAR_FLOAT amb_dist_multiplier LVAR_FLOAT amb_iterations VAR_INT amb_free_seats LVAR_INT amb_locate_counter amb_locate_counter2 // ****************************************Mission Start************************************ mission_start_ambulance: flag_player_on_mission = 1 flag_player_on_ambulance_mission = 1 SCRIPT_NAME ambulan IF done_ambulance_progress = 0 REGISTER_MISSION_GIVEN ENDIF WAIT 0 SET_SCRIPT_LIMIT_TO_GANG_SIZE 0 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer closest_hospital IF NOT IS_CAR_PASSENGER_SEAT_FREE closest_hospital 0 GET_CHAR_IN_CAR_PASSENGER_SEAT closest_hospital 0 injured_ped_1 TASK_LEAVE_CAR_IMMEDIATELY injured_ped_1 closest_hospital MARK_CHAR_AS_NO_LONGER_NEEDED injured_ped_1 ENDIF IF NOT IS_CAR_PASSENGER_SEAT_FREE closest_hospital 1 GET_CHAR_IN_CAR_PASSENGER_SEAT closest_hospital 1 injured_ped_1 TASK_LEAVE_CAR_IMMEDIATELY injured_ped_1 closest_hospital MARK_CHAR_AS_NO_LONGER_NEEDED injured_ped_1 ENDIF IF NOT IS_CAR_PASSENGER_SEAT_FREE closest_hospital 2 GET_CHAR_IN_CAR_PASSENGER_SEAT closest_hospital 2 injured_ped_1 TASK_LEAVE_CAR_IMMEDIATELY injured_ped_1 closest_hospital MARK_CHAR_AS_NO_LONGER_NEEDED injured_ped_1 ENDIF MARK_CAR_AS_NO_LONGER_NEEDED closest_hospital ENDIF LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY amb_decision LOAD_MISSION_TEXT AMBULAE SHOW_UPDATE_STATS FALSE ped_time_limit = 20000 players_ambulance = 0 ambulance_health_last = 0 ambulance_health_now = 0 time_drop = 0 max_peds_in_car = 0 peds_in_car = 0 number_of_injured_peds = 1//change ped_counter = 0 injured_ped_1_flag = 0 injured_ped_2_flag = 0 injured_ped_3_flag = 0 injured_ped_4_flag = 0 injured_ped_5_flag = 0 injured_ped_6_flag = 0 injured_ped_7_flag = 0 injured_ped_8_flag = 0 injured_ped_9_flag = 0 injured_ped_10_flag = 0 injured_ped_11_flag = 0 injured_ped_12_flag = 0 saved_peds = 0 time_chunk_divider = 10.0 db_ambulance_level = 1 //change time_chunk = 0 time_chunk_in_secs = 0 score_am = 0 bonus_time_flag = 0 drop_off_time_bonus = 0 hospital_blip_flag = 0 mission_end_button_ambulance = 0 car_full_flag = 0 saved_peds_this_go = 0 player_failed_mission = 0 ped_coord_x = 0.0 ped_coord_y = 0.0 ped_coord_z = 0.0 dave_counter = 0 WHILE dave_counter < 13 dave_cord_blip_vis[dave_counter] = 0 dave_ped_coord_x[dave_counter] = 0.0 dave_ped_coord_y[dave_counter] = 0.0 dave_ped_coord_z[dave_counter] = 0.0 amb_time_addition[dave_counter] = 0 IF dave_counter < 10 gang_dislike[dave_counter] = 0 gang_hate[dave_counter] = 0 ENDIF dave_counter++ ENDWHILE dave_counter = 0 dave_player_location = 0 dave_task_assigned_flag = 0 gangs_changed = 0 amb_free_seats = 0 amb_iterations = 0.0 /////////////////////////////// store and alter relation ship of those who hate the player to prevent being dragged out of ambulance /// WHILE dave_counter < 10 IF IS_RELATIONSHIP_SET ACQUAINTANCE_TYPE_PED_HATE dave_counter PEDTYPE_PLAYER1 gang_hate[dave_counter] = 1 gangs_changed++ CLEAR_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE dave_counter PEDTYPE_PLAYER1 ELSE IF IS_RELATIONSHIP_SET ACQUAINTANCE_TYPE_PED_DISLIKE dave_counter PEDTYPE_PLAYER1 gang_dislike[dave_counter] = 1 gangs_changed++ CLEAR_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE dave_counter PEDTYPE_PLAYER1 ENDIF ENDIF dave_counter++ ENDWHILE dave_counter = 0 PRINT_NOW ATUTOR2 3000 1 // Take the injured people to the Hospital //WAIT 3000 SET_WANTED_MULTIPLIER 0.5 GET_CHAR_COORDINATES scplayer davex davey davez hospital_distance_temp = 9999999.0 GET_INT_STAT CITIES_PASSED Return_cities_passed IF Return_cities_passed < 2 // else whole map open IF Return_cities_passed = 0 // la only GET_DISTANCE_BETWEEN_COORDS_3D davex davey davez 2004.96 -1442.96 12.56 hospital_distance_1 // (LA EAST) IF hospital_distance_1 < hospital_distance_temp hospital_distance_temp = hospital_distance_1 closest_hospital = 1 ENDIF GET_DISTANCE_BETWEEN_COORDS_3D davex davey davez 1180.85 -1325.57 12.58 hospital_distance_2 // (LA WEST) IF hospital_distance_2 < hospital_distance_temp hospital_distance_temp = hospital_distance_2 closest_hospital = 2 ENDIF // BADLANDS GET_DISTANCE_BETWEEN_COORDS_3D davex davey davez 1244.4370 331.2261 18.5547 hospital_distance_5// (Badlands north east) IF hospital_distance_5 < hospital_distance_temp hospital_distance_temp = hospital_distance_5 closest_hospital = 5 ENDIF ELSE IF Return_cities_passed = 1 //la and sanfran // LA GET_DISTANCE_BETWEEN_COORDS_3D davex davey davez 2004.96 -1442.96 12.56 hospital_distance_1 // (LA EAST) IF hospital_distance_1 < hospital_distance_temp hospital_distance_temp = hospital_distance_1 closest_hospital = 1 ENDIF GET_DISTANCE_BETWEEN_COORDS_3D davex davey davez 1180.85 -1325.57 12.58 hospital_distance_2 // (LA WEST) IF hospital_distance_2 < hospital_distance_temp hospital_distance_temp = hospital_distance_2 closest_hospital = 2 ENDIF // BADLANDS GET_DISTANCE_BETWEEN_COORDS_3D davex davey davez 1244.4370 331.2261 18.5547 hospital_distance_5// (Badlands north east) IF hospital_distance_5 < hospital_distance_temp hospital_distance_temp = hospital_distance_5 closest_hospital = 5 ENDIF GET_DISTANCE_BETWEEN_COORDS_3D davex davey davez -2198.6931 -2290.1052 29.6250 hospital_distance_6// (Badlands south west) IF hospital_distance_6 < hospital_distance_temp hospital_distance_temp = hospital_distance_6 closest_hospital = 6 ENDIF //SAN FRAN GET_DISTANCE_BETWEEN_COORDS_3D davex davey davez -2670.2854 616.4364 13.4531 hospital_distance_7// (San Fran north) IF hospital_distance_7 < hospital_distance_temp hospital_distance_temp = hospital_distance_7 closest_hospital = 7 ENDIF ENDIF ENDIF ELSE // all areas open // LA GET_DISTANCE_BETWEEN_COORDS_3D davex davey davez 2004.96 -1442.96 12.56 hospital_distance_1 // (LA EAST) IF hospital_distance_1 < hospital_distance_temp hospital_distance_temp = hospital_distance_1 closest_hospital = 1 ENDIF GET_DISTANCE_BETWEEN_COORDS_3D davex davey davez 1180.85 -1325.57 12.58 hospital_distance_2 // (LA WEST) IF hospital_distance_2 < hospital_distance_temp hospital_distance_temp = hospital_distance_2 closest_hospital = 2 ENDIF // DESERT GET_DISTANCE_BETWEEN_COORDS_3D davex davey davez -316.3832 1056.0450 18.7344 hospital_distance_3 // (Desert South east) IF hospital_distance_3 < hospital_distance_temp hospital_distance_temp = hospital_distance_3 closest_hospital = 3 ENDIF GET_DISTANCE_BETWEEN_COORDS_3D davex davey davez -1514.8230 2527.1189 54.7443 hospital_distance_4 // (Desert North west) IF hospital_distance_4 < hospital_distance_temp hospital_distance_temp = hospital_distance_4 closest_hospital = 4 ENDIF // BADLANDS GET_DISTANCE_BETWEEN_COORDS_3D davex davey davez 1244.4370 331.2261 18.5547 hospital_distance_5// (Badlands north east) IF hospital_distance_5 < hospital_distance_temp hospital_distance_temp = hospital_distance_5 closest_hospital = 5 ENDIF GET_DISTANCE_BETWEEN_COORDS_3D davex davey davez -2198.6931 -2290.1052 29.6250 hospital_distance_6// (Badlands south west) IF hospital_distance_6 < hospital_distance_temp hospital_distance_temp = hospital_distance_6 closest_hospital = 6 ENDIF //SAN FRAN GET_DISTANCE_BETWEEN_COORDS_3D davex davey davez -2670.2854 616.4364 13.4531 hospital_distance_7// (San Fran north) IF hospital_distance_7 < hospital_distance_temp hospital_distance_temp = hospital_distance_7 closest_hospital = 7 ENDIF // VEGAS GET_DISTANCE_BETWEEN_COORDS_3D davex davey davez 1578.4460 1770.6816 9.8358 hospital_distance_8// (VEGAS) IF hospital_distance_8 < hospital_distance_temp hospital_distance_temp = hospital_distance_8 closest_hospital = 8 ENDIF ENDIF SWITCH closest_hospital CASE 1 //la hospital_x = 2004.96 hospital_y = -1442.96 hospital_z = 12.56 hospital_door_x = 2026.0 hospital_door_y = -1423.0 hospital_door_z = 17.0 ambulance_min_pos_x = 1200.0 ambulance_max_pos_x = 2930.0 ambulance_min_pos_y = -2213.0 ambulance_max_pos_y = -1012.0 BREAK CASE 2 //la hospital_x = 1180.85 hospital_y = -1325.57 hospital_z = 12.58 hospital_door_x = 1172.0 hospital_door_y = -1324.0 hospital_door_z = 15.0 ambulance_min_pos_x = 450.0 ambulance_max_pos_x = 1800.0 ambulance_min_pos_y = -1900.0 ambulance_max_pos_y = -870.0 BREAK CASE 3 //desert hospital_x = -316.3832 hospital_y = 1056.0450 hospital_z = 18.7344 hospital_door_x = -316.0 hospital_door_y = 1050.0 hospital_door_z = 20.0 ambulance_min_pos_x = -860.0 ambulance_max_pos_x = 185.0 ambulance_min_pos_y = 749.0 ambulance_max_pos_y = 1616.0 BREAK CASE 4 //desert El quadrado hospital_x = -1514.0060 hospital_y = 2532.0127 hospital_z = 54.7443 hospital_door_x = -1515.0 hospital_door_y = 2520.0 hospital_door_z = 56.0 ambulance_min_pos_x = -1684.0 ambulance_max_pos_x = -702.0 ambulance_min_pos_y = 1465.0 ambulance_max_pos_y = 2749.9 BREAK CASE 5 //badlands hospital_x = 1225.0 hospital_y = 302.0 hospital_z = 20.0 hospital_door_x = 1227.0 hospital_door_y = 289.5 hospital_door_z = 22.64 ambulance_min_pos_x = 100.0 ambulance_max_pos_x = 2604.0 ambulance_min_pos_y = -720.0 ambulance_max_pos_y = 465.0 BREAK ///////////////////////////// CASE 6 //badlans hospital_x = -2198.6931 hospital_y = -2290.1052 hospital_z = 29.6250 hospital_door_x = -2204.7283 hospital_door_y = -2296.3018 hospital_door_z = 29.6181 ambulance_min_pos_x = -2598.0 ambulance_max_pos_x = -1500.0 ambulance_min_pos_y = -2700.0 ambulance_max_pos_y = -1700.0 BREAK ////////////////////////// CASE 7 //sanfran hospital_x = -2670.2854 hospital_y = 616.4364 hospital_z = 13.4531 hospital_door_x = -2677.0 hospital_door_y = 632.0 hospital_door_z = 14.0 ambulance_min_pos_x = -2820.0 ambulance_max_pos_x = -1784.0 ambulance_min_pos_y = 29.0 ambulance_max_pos_y = 1180.0 BREAK CASE 8 // vega hospital_x = 1578.4460 hospital_y = 1770.6816 hospital_z = 9.8358 hospital_door_x = 1582.0 hospital_door_y = 1765.0 hospital_door_z = 11.0 ambulance_min_pos_x = 1000.0 ambulance_max_pos_x = 2600.0 ambulance_min_pos_y = 772.0 ambulance_max_pos_y = 2400.0 BREAK DEFAULT hospital_x = 2004.96 hospital_y = -1442.96 hospital_z = 12.56 hospital_door_x = 2026.0 hospital_door_y = -1423.0 hospital_door_z = 17.0 ambulance_min_pos_x = 1200.0 ambulance_max_pos_x = 2930.0 ambulance_min_pos_y = -2213.0 ambulance_max_pos_y = -1012.0 BREAK ENDSWITCH DISPLAY_ONSCREEN_TIMER_WITH_STRING ped_time_limit TIMER_DOWN AMBTIME //TIME LEFT DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING amb_free_seats COUNTER_DISPLAY_NUMBER 2 AMBSEAT DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING db_ambulance_level COUNTER_DISPLAY_NUMBER 1 ALEV IF flag_player_on_mission = 0 ADD_BLIP_FOR_COORD hospital_x hospital_y hospital_z hospital_blip ENDIF mission_root: //PRINT_WITH_NUMBER ALEVEL db_ambulance_level 5000 4 // Ambulance Mission Level ~1~ CLEAR_ONSCREEN_TIMER ped_time_limit //CLEAR_ONSCREEN_COUNTER amb_free_seats //CLEAR_ONSCREEN_COUNTER db_ambulance_level //ped_time_limit = 0 //VIEW_FLOAT_VARIABLE amb_iterations amb_iterations /////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////// THIS NEEDS TO BE CHANGED TO SA HOSPITALS (dave b) ///////////// /////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////// /// FIND PLAYERS LOCATION /// ///////////////////////////// ////////////////////////// /// HOSPITAL LOCATIONS /// ////////////////////////// ///////////////////////////////////////////// END OF HOSIPAL LOCATIONS //////////////////////////////////// WHILE number_of_injured_peds > ped_counter GOSUB generate_random_coord dave_ped_coord_x[ped_counter] = ped_coord_x dave_ped_coord_y[ped_counter] = ped_coord_y dave_ped_coord_z[ped_counter] = ped_coord_z IF player_failed_mission = 1 GOTO ambulance_failed ENDIF GOSUB generate_timelimit // returns ped_time_limit amb_time_addition[ped_counter] = ped_time_limit_temp IF amb_time_addition[ped_counter] > 45000 amb_time_addition[ped_counter] = 45000 ELSE IF amb_time_addition[ped_counter] < 15000 amb_time_addition[ped_counter] = 15000 ENDIF ENDIF ++ ped_counter ENDWHILE GOSUB check_if_in_area IF number_of_injured_peds > 3 bonus_time_flag = 1 ELSE bonus_time_flag = 0 ENDIF drop_off_time_bonus = 0 IF number_of_injured_peds < 2 time_chunk = ped_time_limit_temp / number_of_injured_peds time_chunk /= 2 brackets_var = number_of_injured_peds + 1 time_chunk *= brackets_var ped_time_limit += time_chunk ped_time_limit = ped_time_limit / number_of_injured_peds time_chunk = ped_time_limit_temp time_chunk /= 3 IF time_chunk > 15000 time_chunk = 15000 ENDIF ELSE time_chunk = ped_time_limit / number_of_injured_peds time_chunk /= 2 brackets_var = number_of_injured_peds + 1 time_chunk *= brackets_var ped_time_limit += time_chunk ped_time_limit = ped_time_limit / number_of_injured_peds time_chunk = ped_time_limit time_chunk /= 3 ENDIF IF ped_time_limit < 60000 ped_time_limit = 60000 ENDIF IF time_chunk < 25000 time_chunk = 25000 ELSE IF time_chunk > 60000 time_chunk = 60000 ENDIF ENDIF //or //time_chunk = ( ped_time_limit * (number_of_injured_peds + 1) ) / ( number_of_injured_peds * ( ( 3 * number_of_injured_peds ) - 1 ) ) DISPLAY_ONSCREEN_TIMER_WITH_STRING ped_time_limit TIMER_DOWN AMBTIME //TIME LEFT amb_locate_counter = 0 amb_locate_counter2 = 0 GOTO ambulance_loop //////////////// check_if_in_area: IF number_of_injured_peds > 0 CREATE_RANDOM_CHAR dave_ped_coord_x[0] dave_ped_coord_y[0] dave_ped_coord_z[0] injured_ped_1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_1 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_1 FALSE injured_ped_1_flag = 1 SET_CHAR_DECISION_MAKER injured_ped_1 amb_decision SET_CHAR_BLEEDING injured_ped_1 TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_1 TRUE GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 359.9 random_ped_heading SET_CHAR_HEADING injured_ped_1 random_ped_heading ADD_BLIP_FOR_CHAR injured_ped_1 injured_ped_1_blip SET_BLIP_AS_FRIENDLY injured_ped_1_blip TRUE CHANGE_BLIP_SCALE injured_ped_1_blip 2 dave_cord_blip_vis[0] = 1 ENDIF IF number_of_injured_peds > 1 CREATE_RANDOM_CHAR dave_ped_coord_x[1] dave_ped_coord_y[1] dave_ped_coord_z[1] injured_ped_2 injured_ped_2_flag = 1 SET_CHAR_DECISION_MAKER injured_ped_2 amb_decision SET_CHAR_BLEEDING injured_ped_2 TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_2 TRUE GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 359.9 random_ped_heading SET_CHAR_HEADING injured_ped_2 random_ped_heading ADD_BLIP_FOR_CHAR injured_ped_2 injured_ped_2_blip SET_BLIP_AS_FRIENDLY injured_ped_2_blip TRUE CHANGE_BLIP_SCALE injured_ped_2_blip 2 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_2 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_2 FALSE dave_cord_blip_vis[1] = 1 ENDIF IF number_of_injured_peds > 2 CREATE_RANDOM_CHAR dave_ped_coord_x[2] dave_ped_coord_y[2] dave_ped_coord_z[2] injured_ped_3 injured_ped_3_flag = 1 SET_CHAR_DECISION_MAKER injured_ped_3 amb_decision SET_CHAR_BLEEDING injured_ped_3 TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_3 TRUE GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 359.9 random_ped_heading SET_CHAR_HEADING injured_ped_3 random_ped_heading ADD_BLIP_FOR_CHAR injured_ped_3 injured_ped_3_blip SET_BLIP_AS_FRIENDLY injured_ped_3_blip TRUE CHANGE_BLIP_SCALE injured_ped_3_blip 2 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_3 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_3 FALSE dave_cord_blip_vis[2] = 1 ENDIF IF number_of_injured_peds > 3 CREATE_RANDOM_CHAR dave_ped_coord_x[3] dave_ped_coord_y[3] dave_ped_coord_z[3] injured_ped_4 injured_ped_4_flag = 1 SET_CHAR_DECISION_MAKER injured_ped_4 amb_decision SET_CHAR_BLEEDING injured_ped_4 TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_4 TRUE GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 359.9 random_ped_heading SET_CHAR_HEADING injured_ped_4 random_ped_heading ADD_BLIP_FOR_CHAR injured_ped_4 injured_ped_4_blip SET_BLIP_AS_FRIENDLY injured_ped_4_blip TRUE CHANGE_BLIP_SCALE injured_ped_4_blip 2 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_4 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_4 FALSE dave_cord_blip_vis[3] = 1 ENDIF IF number_of_injured_peds > 4 CREATE_RANDOM_CHAR dave_ped_coord_x[4] dave_ped_coord_y[4] dave_ped_coord_z[4] injured_ped_5 injured_ped_5_flag = 1 SET_CHAR_DECISION_MAKER injured_ped_5 amb_decision SET_CHAR_BLEEDING injured_ped_5 TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_5 TRUE GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 359.9 random_ped_heading SET_CHAR_HEADING injured_ped_5 random_ped_heading ADD_BLIP_FOR_CHAR injured_ped_5 injured_ped_5_blip SET_BLIP_AS_FRIENDLY injured_ped_5_blip TRUE CHANGE_BLIP_SCALE injured_ped_5_blip 2 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_5 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_5 FALSE dave_cord_blip_vis[4] = 1 ENDIF IF number_of_injured_peds > 5 CREATE_RANDOM_CHAR dave_ped_coord_x[5] dave_ped_coord_y[5] dave_ped_coord_z[5] injured_ped_6 injured_ped_6_flag = 1 SET_CHAR_DECISION_MAKER injured_ped_6 amb_decision SET_CHAR_BLEEDING injured_ped_6 TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_6 TRUE GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 359.9 random_ped_heading SET_CHAR_HEADING injured_ped_6 random_ped_heading ADD_BLIP_FOR_CHAR injured_ped_6 injured_ped_6_blip SET_BLIP_AS_FRIENDLY injured_ped_6_blip TRUE CHANGE_BLIP_SCALE injured_ped_6_blip 2 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_6 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_6 FALSE dave_cord_blip_vis[5] = 1 ENDIF IF number_of_injured_peds > 6 CREATE_RANDOM_CHAR dave_ped_coord_x[6] dave_ped_coord_y[6] dave_ped_coord_z[6] injured_ped_7 injured_ped_7_flag = 1 SET_CHAR_DECISION_MAKER injured_ped_7 amb_decision SET_CHAR_BLEEDING injured_ped_7 TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_7 TRUE GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 359.9 random_ped_heading SET_CHAR_HEADING injured_ped_7 random_ped_heading ADD_BLIP_FOR_CHAR injured_ped_7 injured_ped_7_blip SET_BLIP_AS_FRIENDLY injured_ped_7_blip TRUE CHANGE_BLIP_SCALE injured_ped_7_blip 2 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_7 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_7 FALSE dave_cord_blip_vis[6] = 1 ENDIF IF number_of_injured_peds > 7 CREATE_RANDOM_CHAR dave_ped_coord_x[7] dave_ped_coord_y[7] dave_ped_coord_z[7] injured_ped_8 injured_ped_8_flag = 1 SET_CHAR_DECISION_MAKER injured_ped_8 amb_decision SET_CHAR_BLEEDING injured_ped_8 TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_8 TRUE GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 359.9 random_ped_heading SET_CHAR_HEADING injured_ped_8 random_ped_heading ADD_BLIP_FOR_CHAR injured_ped_8 injured_ped_8_blip SET_BLIP_AS_FRIENDLY injured_ped_8_blip TRUE CHANGE_BLIP_SCALE injured_ped_8_blip 2 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_8 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_8 FALSE dave_cord_blip_vis[7] = 1 ENDIF IF number_of_injured_peds > 8 CREATE_RANDOM_CHAR dave_ped_coord_x[8] dave_ped_coord_y[8] dave_ped_coord_z[8] injured_ped_9 injured_ped_9_flag = 1 SET_CHAR_DECISION_MAKER injured_ped_9 amb_decision SET_CHAR_BLEEDING injured_ped_9 TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_9 TRUE GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 359.9 random_ped_heading SET_CHAR_HEADING injured_ped_9 random_ped_heading ADD_BLIP_FOR_CHAR injured_ped_9 injured_ped_9_blip SET_BLIP_AS_FRIENDLY injured_ped_9_blip TRUE CHANGE_BLIP_SCALE injured_ped_9_blip 2 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_9 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_9 FALSE dave_cord_blip_vis[8] = 1 ENDIF IF number_of_injured_peds > 9 CREATE_RANDOM_CHAR dave_ped_coord_x[9] dave_ped_coord_y[9] dave_ped_coord_z[9] injured_ped_10 injured_ped_10_flag = 1 SET_CHAR_DECISION_MAKER injured_ped_10 amb_decision SET_CHAR_BLEEDING injured_ped_10 TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_10 TRUE GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 359.9 random_ped_heading SET_CHAR_HEADING injured_ped_10 random_ped_heading ADD_BLIP_FOR_CHAR injured_ped_10 injured_ped_10_blip SET_BLIP_AS_FRIENDLY injured_ped_10_blip TRUE CHANGE_BLIP_SCALE injured_ped_10_blip 2 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_10 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_10 FALSE dave_cord_blip_vis[9] = 1 ENDIF IF number_of_injured_peds > 10 CREATE_RANDOM_CHAR dave_ped_coord_x[10] dave_ped_coord_y[10] dave_ped_coord_z[10] injured_ped_11 injured_ped_11_flag = 1 SET_CHAR_DECISION_MAKER injured_ped_11 amb_decision SET_CHAR_BLEEDING injured_ped_11 TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_11 TRUE GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 359.9 random_ped_heading SET_CHAR_HEADING injured_ped_11 random_ped_heading ADD_BLIP_FOR_CHAR injured_ped_11 injured_ped_11_blip SET_BLIP_AS_FRIENDLY injured_ped_11_blip TRUE CHANGE_BLIP_SCALE injured_ped_11_blip 2 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_11 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_11 FALSE dave_cord_blip_vis[10] = 1 ENDIF IF number_of_injured_peds > 11 CREATE_RANDOM_CHAR dave_ped_coord_x[11] dave_ped_coord_y[11] dave_ped_coord_z[11] injured_ped_12 injured_ped_12_flag = 1 SET_CHAR_DECISION_MAKER injured_ped_12 amb_decision SET_CHAR_BLEEDING injured_ped_12 TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_12 TRUE GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 359.9 random_ped_heading SET_CHAR_HEADING injured_ped_12 random_ped_heading ADD_BLIP_FOR_CHAR injured_ped_12 injured_ped_12_blip SET_BLIP_AS_FRIENDLY injured_ped_12_blip TRUE CHANGE_BLIP_SCALE injured_ped_12_blip 2 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_12 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_12 FALSE dave_cord_blip_vis[11] = 1 ENDIF RETURN create_random_injured_ped: SWITCH amb_locate_counter CASE 0 IF number_of_injured_peds > 0 IF injured_ped_1_flag < 3 IF NOT IS_CHAR_DEAD injured_ped_1 IF LOCATE_CHAR_IN_CAR_CHAR_3D scplayer injured_ped_1 50.0 50.0 20.0 FALSE IF dave_cord_blip_vis[0] = 1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_1 FALSE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_1 TRUE SET_CHAR_COORDINATES injured_ped_1 dave_ped_coord_x[0] dave_ped_coord_y[0] dave_ped_coord_z[0] dave_cord_blip_vis[0] = 0 ENDIF ELSE IF dave_cord_blip_vis[0] = 0 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_1 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_1 FALSE dave_cord_blip_vis[0] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF amb_locate_counter++ BREAK CASE 1 IF number_of_injured_peds > 1 IF injured_ped_2_flag < 3 IF NOT IS_CHAR_DEAD injured_ped_2 IF LOCATE_CHAR_IN_CAR_CHAR_3D scplayer injured_ped_2 50.0 50.0 20.0 FALSE IF dave_cord_blip_vis[1] = 1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_2 FALSE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_2 TRUE SET_CHAR_COORDINATES injured_ped_2 dave_ped_coord_x[1] dave_ped_coord_y[1] dave_ped_coord_z[1] dave_cord_blip_vis[1] = 0 ENDIF ELSE IF dave_cord_blip_vis[1] = 0 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_2 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_2 FALSE dave_cord_blip_vis[1] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF amb_locate_counter++ BREAK CASE 2 IF number_of_injured_peds > 2 IF injured_ped_3_flag < 3 IF NOT IS_CHAR_DEAD injured_ped_3 IF LOCATE_CHAR_IN_CAR_CHAR_3D scplayer injured_ped_3 50.0 50.0 20.0 FALSE IF dave_cord_blip_vis[2] = 1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_3 FALSE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_3 TRUE SET_CHAR_COORDINATES injured_ped_3 dave_ped_coord_x[2] dave_ped_coord_y[2] dave_ped_coord_z[2] dave_cord_blip_vis[2] = 0 ENDIF ELSE IF dave_cord_blip_vis[2] = 0 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_3 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_3 FALSE dave_cord_blip_vis[2] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF amb_locate_counter++ BREAK CASE 3 IF number_of_injured_peds > 3 IF injured_ped_4_flag < 3 IF NOT IS_CHAR_DEAD injured_ped_4 IF LOCATE_CHAR_IN_CAR_CHAR_3D scplayer injured_ped_4 50.0 50.0 20.0 FALSE IF dave_cord_blip_vis[3] = 1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_4 FALSE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_4 TRUE SET_CHAR_COORDINATES injured_ped_4 dave_ped_coord_x[3] dave_ped_coord_y[3] dave_ped_coord_z[3] dave_cord_blip_vis[3] = 0 ENDIF ELSE IF dave_cord_blip_vis[3] = 0 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_4 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_4 FALSE dave_cord_blip_vis[3] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF amb_locate_counter++ BREAK CASE 4 IF number_of_injured_peds > 4 IF injured_ped_5_flag < 3 IF NOT IS_CHAR_DEAD injured_ped_5 IF LOCATE_CHAR_IN_CAR_CHAR_3D scplayer injured_ped_5 50.0 50.0 20.0 FALSE IF dave_cord_blip_vis[4] = 1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_5 FALSE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_5 TRUE SET_CHAR_COORDINATES injured_ped_5 dave_ped_coord_x[4] dave_ped_coord_y[4] dave_ped_coord_z[4] dave_cord_blip_vis[4] = 0 ENDIF ELSE IF dave_cord_blip_vis[4] = 0 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_5 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_5 FALSE dave_cord_blip_vis[4] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF amb_locate_counter++ BREAK CASE 5 IF number_of_injured_peds > 5 IF injured_ped_6_flag < 3 IF NOT IS_CHAR_DEAD injured_ped_6 IF LOCATE_CHAR_IN_CAR_CHAR_3D scplayer injured_ped_6 50.0 50.0 20.0 FALSE IF dave_cord_blip_vis[5] = 1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_6 FALSE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_6 TRUE SET_CHAR_COORDINATES injured_ped_6 dave_ped_coord_x[5] dave_ped_coord_y[5] dave_ped_coord_z[5] dave_cord_blip_vis[5] = 0 ENDIF ELSE IF dave_cord_blip_vis[5] = 0 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_6 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_6 FALSE dave_cord_blip_vis[5] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF amb_locate_counter++ BREAK CASE 6 IF number_of_injured_peds > 6 IF injured_ped_7_flag < 3 IF NOT IS_CHAR_DEAD injured_ped_7 IF LOCATE_CHAR_IN_CAR_CHAR_3D scplayer injured_ped_7 50.0 50.0 20.0 FALSE IF dave_cord_blip_vis[6] = 1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_7 FALSE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_7 TRUE SET_CHAR_COORDINATES injured_ped_7 dave_ped_coord_x[6] dave_ped_coord_y[6] dave_ped_coord_z[6] dave_cord_blip_vis[6] = 0 ENDIF ELSE IF dave_cord_blip_vis[6] = 0 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_7 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_7 FALSE dave_cord_blip_vis[6] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF amb_locate_counter++ BREAK CASE 7 IF number_of_injured_peds > 7 IF injured_ped_8_flag < 3 IF NOT IS_CHAR_DEAD injured_ped_8 IF LOCATE_CHAR_IN_CAR_CHAR_3D scplayer injured_ped_8 50.0 50.0 20.0 FALSE IF dave_cord_blip_vis[7] = 1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_8 FALSE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_8 TRUE SET_CHAR_COORDINATES injured_ped_8 dave_ped_coord_x[7] dave_ped_coord_y[7] dave_ped_coord_z[7] dave_cord_blip_vis[7] = 0 ENDIF ELSE IF dave_cord_blip_vis[7] = 0 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_8 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_8 FALSE dave_cord_blip_vis[7] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF amb_locate_counter++ BREAK CASE 8 IF number_of_injured_peds > 8 IF injured_ped_9_flag < 3 IF NOT IS_CHAR_DEAD injured_ped_9 IF LOCATE_CHAR_IN_CAR_CHAR_3D scplayer injured_ped_9 50.0 50.0 20.0 FALSE IF dave_cord_blip_vis[8] = 1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_9 FALSE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_9 TRUE SET_CHAR_COORDINATES injured_ped_9 dave_ped_coord_x[8] dave_ped_coord_y[8] dave_ped_coord_z[8] dave_cord_blip_vis[8] = 0 ENDIF ELSE IF dave_cord_blip_vis[8] = 0 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_9 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_9 FALSE dave_cord_blip_vis[8] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF amb_locate_counter++ BREAK CASE 9 IF number_of_injured_peds > 9 IF injured_ped_10_flag < 3 IF NOT IS_CHAR_DEAD injured_ped_10 IF LOCATE_CHAR_IN_CAR_CHAR_3D scplayer injured_ped_10 50.0 50.0 20.0 FALSE IF dave_cord_blip_vis[9] = 1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_10 FALSE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_10 TRUE SET_CHAR_COORDINATES injured_ped_10 dave_ped_coord_x[9] dave_ped_coord_y[9] dave_ped_coord_z[9] dave_cord_blip_vis[9] = 0 ENDIF ELSE IF dave_cord_blip_vis[9] = 0 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_10 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_10 FALSE dave_cord_blip_vis[9] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF amb_locate_counter++ BREAK CASE 10 IF number_of_injured_peds > 10 IF injured_ped_11_flag < 3 IF NOT IS_CHAR_DEAD injured_ped_11 IF LOCATE_CHAR_IN_CAR_CHAR_3D scplayer injured_ped_11 50.0 50.0 20.0 FALSE IF dave_cord_blip_vis[10] = 1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_11 FALSE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_11 TRUE SET_CHAR_COORDINATES injured_ped_11 dave_ped_coord_x[10] dave_ped_coord_y[10] dave_ped_coord_z[10] dave_cord_blip_vis[10] = 0 ENDIF ELSE IF dave_cord_blip_vis[10] = 0 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_11 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_11 FALSE dave_cord_blip_vis[10] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF amb_locate_counter++ BREAK CASE 11 IF number_of_injured_peds > 11 IF injured_ped_12_flag < 3 IF NOT IS_CHAR_DEAD injured_ped_12 IF LOCATE_CHAR_IN_CAR_CHAR_3D scplayer injured_ped_12 50.0 50.0 20.0 FALSE IF dave_cord_blip_vis[11] = 1 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_12 FALSE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_12 TRUE SET_CHAR_COORDINATES injured_ped_12 dave_ped_coord_x[11] dave_ped_coord_y[11] dave_ped_coord_z[11] dave_cord_blip_vis[11] = 0 ENDIF ELSE IF dave_cord_blip_vis[11] = 0 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION injured_ped_12 TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG injured_ped_12 FALSE dave_cord_blip_vis[11] = 1 ENDIF ENDIF ENDIF ENDIF ENDIF amb_locate_counter++ BREAK DEFAULT amb_locate_counter = 0 BREAK ENDSWITCH RETURN //////////////// generate_random_coord: WAIT 0 GET_CHAR_COORDINATES scplayer player1_a_x player1_a_y player1_a_z ////////////////////////////////////////////////////////////////////////////////////// //////////////////////// NEEDS TO BE UPDATED TO SA COORDS (dave b) //////////////// ////////////////////////////////////////////////////////////////////////////////////// //GET_CLOSEST_CHAR_NODE InX InY InZ CloseX CloseY CloseZ ambulance_min_x = hospital_x ambulance_max_x = hospital_x ambulance_min_y = hospital_y ambulance_max_y = hospital_y ambulance_min_z = hospital_z ambulance_max_z = hospital_z GET_CITY_FROM_COORDS player1_a_x player1_a_y player1_a_z dave_player_location // have ped distance from hospital increase as level increases amb_dist_multiplier =# db_ambulance_level amb_dist_multiplier *= 60.0 amb_dist_multiplier += amb_iterations IF dave_player_location = 0 amb_iterations += 15.0 ELSE amb_iterations += 1.0 ENDIF IF amb_dist_multiplier < 100.0 amb_dist_multiplier = 100.0 ENDIF IF amb_iterations > 10000.0 IF db_ambulance_level = 1 //fist level //fail mission not finding co-ords CLEAR_THIS_PRINT ALEVEL PRINT_NOW A_CANC 3000 1//"~r~Ambulance mission cancelled!" //player_failed_mission = 1 //RETURN ENDIF ENDIF //amb_dist_multiplier = 200.0 ambulance_min_x -= amb_dist_multiplier ambulance_max_x += amb_dist_multiplier ambulance_min_y -= amb_dist_multiplier ambulance_max_y += amb_dist_multiplier IF db_ambulance_level < 8 IF ambulance_min_x < ambulance_min_pos_x ambulance_min_x = ambulance_min_pos_x ENDIF IF ambulance_max_x > ambulance_max_pos_x ambulance_max_x = ambulance_max_pos_x ENDIF IF ambulance_min_y < ambulance_min_pos_y ambulance_min_y = ambulance_min_pos_y ENDIF IF random_y > ambulance_max_pos_y ambulance_max_y = ambulance_max_pos_y ENDIF ELSE ambulance_min_x = ambulance_min_pos_x ambulance_max_x = ambulance_max_pos_x ambulance_min_y = ambulance_min_pos_y ambulance_max_y = ambulance_max_pos_y ENDIF GENERATE_RANDOM_FLOAT_IN_RANGE ambulance_min_x ambulance_max_x random_x GENERATE_RANDOM_FLOAT_IN_RANGE ambulance_min_y ambulance_max_y random_y /////////////////////// ENDOF UPDATE //////////////////// IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL_VIGILANTE WAIT 100 // Workaround for a controller bug. mission_end_button_ambulance = 1 ENDIF IF mission_end_button_ambulance = 1 IF NOT IS_BUTTON_PRESSED PAD1 RIGHTSHOCK CLEAR_THIS_PRINT ALEVEL PRINT_NOW A_CANC 3000 1//"~r~Ambulance mission cancelled!" player_failed_mission = 1 RETURN ENDIF ENDIF IF NOT IS_CHAR_DEAD scplayer IF NOT IS_CHAR_IN_MODEL scplayer AMBULAN CLEAR_THIS_PRINT ALEVEL PRINT_NOW A_CANC 3000 1//"~r~Ambulance mission cancelled!" player_failed_mission = 1 RETURN ENDIF ENDIF GET_CLOSEST_CHAR_NODE random_x random_y hospital_z ped_coord_x ped_coord_y ped_coord_z IF ped_coord_x < ambulance_min_pos_x GOTO generate_random_coord ELSE IF ped_coord_x > ambulance_max_pos_x GOTO generate_random_coord ELSE IF ped_coord_y < ambulance_min_pos_y GOTO generate_random_coord ELSE IF ped_coord_y > ambulance_max_pos_y GOTO generate_random_coord ENDIF ENDIF ENDIF ENDIF IF ped_coord_z < 6.0 GOTO generate_random_coord ENDIF GET_DISTANCE_BETWEEN_COORDS_3D player1_a_x player1_a_y player1_a_z ped_coord_x ped_coord_y ped_coord_z players_distance_from_ped IF players_distance_from_ped < 50.0 GOTO generate_random_coord ENDIF GET_DISTANCE_BETWEEN_COORDS_3D hospital_x hospital_y hospital_z ped_coord_x ped_coord_y ped_coord_z peds_distance_from_hospital IF peds_distance_from_hospital < 30.0 GOTO generate_random_coord ENDIF //////////////////////////////////////////////////////////////////// /// checkthat they are not spawne din cities player cannot reach /// //////////////////////////////////////////////////////////////////// GET_INT_STAT CITIES_PASSED Return_cities_passed IF Return_cities_passed < 2 // else whole map open IF Return_cities_passed = 0 IF ped_coord_x < 78.4427 //south by la AND ped_coord_y < -699.5190 WAIT 0 GOTO generate_random_coord ENDIF IF ped_coord_x < -252.6557 //below jutty out bit west badlands AND ped_coord_y < -285.7660 WAIT 0 GOTO generate_random_coord ENDIF IF ped_coord_x < -948.3447 //west of jutty out bit west badlands WAIT 0 GOTO generate_random_coord ENDIF IF ped_coord_x > 1473.4481 //below vegas north east badlands AND ped_coord_y > 403.7353 WAIT 0 GOTO generate_random_coord ENDIF IF ped_coord_y > 578.6325 //north of jutty out bit middle north badlands WAIT 0 GOTO generate_random_coord ENDIF IF ped_coord_x < 837.5551 //northwest from above jutty out bit middle north badlands AND ped_coord_y > 347.4097 WAIT 0 GOTO generate_random_coord ENDIF ENDIF IF Return_cities_passed = 1 //sanfran open IF ped_coord_x > 1473.4481 //below vegas north east badlands AND ped_coord_y > 403.7353 WAIT 0 GOTO generate_random_coord ENDIF IF ped_coord_y > 578.6325 //north of jutty out bit middle north badlands AND ped_coord_x > -1528.4976 WAIT 0 GOTO generate_random_coord ENDIF IF ped_coord_x < 837.5551 //northwest from above jutty out bit middle north badlands AND ped_coord_x > -1528.4976 AND ped_coord_y > 347.4097 WAIT 0 GOTO generate_random_coord ENDIF IF ped_coord_y > 1380.0 //north of sanfran WAIT 0 GOTO generate_random_coord ENDIF ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////// /// check distance between the patients, want to have more than 25 meters apart /// /////////////////////////////////////////////////////////////////////////////////// IF number_of_injured_peds > 0//injured_ped_1_flag > 0 GET_DISTANCE_BETWEEN_COORDS_3D dave_ped_coord_x[0] dave_ped_coord_y[0] dave_ped_coord_z[0] ped_coord_x ped_coord_y ped_coord_z hospital_distance_temp IF hospital_distance_temp < 25.0 GOTO generate_random_coord ENDIF ENDIF IF number_of_injured_peds > 1//injured_ped_2_flag > 0 GET_DISTANCE_BETWEEN_COORDS_3D dave_ped_coord_x[0] dave_ped_coord_y[0] dave_ped_coord_z[0] ped_coord_x ped_coord_y ped_coord_z hospital_distance_temp IF hospital_distance_temp < 25.0 GOTO generate_random_coord ENDIF ENDIF IF number_of_injured_peds > 2//injured_ped_3_flag > 0 GET_DISTANCE_BETWEEN_COORDS_3D dave_ped_coord_x[1] dave_ped_coord_y[1] dave_ped_coord_z[1] ped_coord_x ped_coord_y ped_coord_z hospital_distance_temp IF hospital_distance_temp < 25.0 GOTO generate_random_coord ENDIF ENDIF IF number_of_injured_peds > 3//injured_ped_4_flag > 0 GET_DISTANCE_BETWEEN_COORDS_3D dave_ped_coord_x[2] dave_ped_coord_y[2] dave_ped_coord_z[2] ped_coord_x ped_coord_y ped_coord_z hospital_distance_temp IF hospital_distance_temp < 25.0 GOTO generate_random_coord ENDIF ENDIF IF number_of_injured_peds > 4//injured_ped_5_flag > 0 GET_DISTANCE_BETWEEN_COORDS_3D dave_ped_coord_x[3] dave_ped_coord_y[3] dave_ped_coord_z[3] ped_coord_x ped_coord_y ped_coord_z hospital_distance_temp IF hospital_distance_temp < 25.0 GOTO generate_random_coord ENDIF ENDIF IF number_of_injured_peds > 5//injured_ped_6_flag > 0 GET_DISTANCE_BETWEEN_COORDS_3D dave_ped_coord_x[4] dave_ped_coord_y[4] dave_ped_coord_z[4] ped_coord_x ped_coord_y ped_coord_z hospital_distance_temp IF hospital_distance_temp < 25.0 GOTO generate_random_coord ENDIF ENDIF IF number_of_injured_peds > 6//injured_ped_7_flag > 0 GET_DISTANCE_BETWEEN_COORDS_3D dave_ped_coord_x[5] dave_ped_coord_y[5] dave_ped_coord_z[5] ped_coord_x ped_coord_y ped_coord_z hospital_distance_temp IF hospital_distance_temp < 25.0 GOTO generate_random_coord ENDIF ENDIF IF number_of_injured_peds > 7//injured_ped_8_flag > 0 GET_DISTANCE_BETWEEN_COORDS_3D dave_ped_coord_x[6] dave_ped_coord_y[6] dave_ped_coord_z[6] ped_coord_x ped_coord_y ped_coord_z hospital_distance_temp IF hospital_distance_temp < 25.0 GOTO generate_random_coord ENDIF ENDIF IF number_of_injured_peds > 8//injured_ped_9_flag > 0 GET_DISTANCE_BETWEEN_COORDS_3D dave_ped_coord_x[7] dave_ped_coord_y[7] dave_ped_coord_z[7] ped_coord_x ped_coord_y ped_coord_z hospital_distance_temp IF hospital_distance_temp < 25.0 GOTO generate_random_coord ENDIF ENDIF IF number_of_injured_peds > 9//injured_ped_10_flag > 0 GET_DISTANCE_BETWEEN_COORDS_3D dave_ped_coord_x[8] dave_ped_coord_y[8] dave_ped_coord_z[8] ped_coord_x ped_coord_y ped_coord_z hospital_distance_temp IF hospital_distance_temp < 25.0 GOTO generate_random_coord ENDIF ENDIF IF number_of_injured_peds > 10//injured_ped_11_flag > 0 GET_DISTANCE_BETWEEN_COORDS_3D dave_ped_coord_x[9] dave_ped_coord_y[9] dave_ped_coord_z[9] ped_coord_x ped_coord_y ped_coord_z hospital_distance_temp IF hospital_distance_temp < 25.0 GOTO generate_random_coord ENDIF ENDIF IF number_of_injured_peds > 11//injured_ped_12_flag > 0 GET_DISTANCE_BETWEEN_COORDS_3D dave_ped_coord_x[10] dave_ped_coord_y[10] dave_ped_coord_z[10] ped_coord_x ped_coord_y ped_coord_z hospital_distance_temp IF hospital_distance_temp < 25.0 GOTO generate_random_coord ENDIF ENDIF IF IS_POINT_OBSCURED_BY_A_MISSION_ENTITY ped_coord_x ped_coord_y ped_coord_y 25.0 25.0 10.0 GOTO generate_random_coord ENDIF //////////////////////////////// /// areas player can't reach /// //////////////////////////////// //////// // LA // //////// // horse-shoe mall IF ped_coord_x < 1186.0 IF ped_coord_x > 1047.0 IF ped_coord_y < -1406.0 IF ped_coord_y > -1567.0 GOTO generate_random_coord ENDIF ENDIF ENDIF ENDIF // plaza type rooftop IF ped_coord_x < 1444.0 IF ped_coord_x > 1339.0 IF ped_coord_y < -1450.0 IF ped_coord_y > -1504.0 GOTO generate_random_coord ENDIF ENDIF ENDIF ENDIF // hospital courtyard IF ped_coord_x < 2041.9791 IF ped_coord_x > 1999.3875 IF ped_coord_y < -1408.7080 IF ped_coord_y > -1445.4619 GOTO generate_random_coord ENDIF ENDIF ENDIF ENDIF IF ped_coord_x < 1202.0 IF ped_coord_x > 1162.0 IF ped_coord_y < -1238.0 IF ped_coord_y > -1250.0 GOTO generate_random_coord ENDIF ENDIF ENDIF ENDIF ////////////// // SAN FRAN // ////////////// IF ped_coord_x < 1176.0 IF ped_coord_x > 1158.0 IF ped_coord_y < 1364.0 IF ped_coord_y > 1345.0 GOTO generate_random_coord ENDIF ENDIF ENDIF ENDIF IF ped_coord_x < -2307.0 IF ped_coord_x > -2333.0 IF ped_coord_y < 1100.0 IF ped_coord_y > 1036.0 GOTO generate_random_coord ENDIF ENDIF ENDIF ENDIF ///////////// /// VEGAS /// ///////////// // boat on the strip IF ped_coord_x < 2009.0 IF ped_coord_x > 1989.0 IF ped_coord_y < 1571.0 IF ped_coord_y > 1513.0 GOTO generate_random_coord ENDIF ENDIF ENDIF ENDIF /////////////////// /// COUNTRYSIDE /// /////////////////// //staricase IF ped_coord_x < 2632.8184 IF ped_coord_x > 2546.4634 IF ped_coord_y < -1129.6729 IF ped_coord_y > -1144.0120 GOTO generate_random_coord ENDIF ENDIF ENDIF ENDIF // ufo bar under mountain in country-side IF ped_coord_x < -222.5044 IF ped_coord_x > -229.0960 IF ped_coord_y < 1412.0863 IF ped_coord_y > 1393.8168 GOTO generate_random_coord ENDIF ENDIF ENDIF ENDIF /// BOUNDARY ZONES (FOR WHEN MAP IS CLOSED TO PREVENT PATIENTS BEING INACCESSABLE) /// amb_iterations= 0.0 RETURN //////////////// generate_timelimit: IF number_of_injured_peds < 2 IF players_distance_from_ped > peds_distance_from_hospital ped_time_limit_float = players_distance_from_ped / time_chunk_divider //2.0? ELSE ped_time_limit_float = peds_distance_from_hospital / time_chunk_divider //2.0? ENDIF ped_time_limit_float = ped_time_limit_float * 1000.0 ped_time_limit_temp =# ped_time_limit_float ped_time_limit += ped_time_limit_temp ELSE ped_time_limit_float = peds_distance_from_hospital / time_chunk_divider //2.0? ped_time_limit_float = ped_time_limit_float * 1000.0 ped_time_limit_temp =# ped_time_limit_float ped_time_limit += ped_time_limit_temp ENDIF RETURN /////////////// ambulance_loop: WAIT 0 ////////////////////////////// /// dave b debug key board /// ////////////////////////////// //IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_SPACE //ped_time_limit = 999999 //ENDIF //IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S //done_ambulance_progress = 0 //saved_peds = number_of_injured_peds //db_ambulance_level = 12 //ENDIF //VIEW_INTEGER_VARIABLE gangs_changed relationships_chngd //////////////////////////////// /////////////////////////////// //////////////////////////////// IF ped_time_limit = 0 PRINT_NOW A_FAIL2 3000 1//"Your too late" player_failed_mission = 1 GOTO ambulance_failed ENDIF IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL_VIGILANTE WAIT 100 // Workaround for a controller bug. mission_end_button_ambulance = 1 ENDIF IF mission_end_button_ambulance = 1 IF NOT IS_BUTTON_PRESSED PAD1 RIGHTSHOCK PRINT_NOW A_CANC 3000 1//"~r~Ambulance mission cancelled!" GOTO ambulance_failed ENDIF ENDIF IF NOT IS_CHAR_IN_MODEL scplayer AMBULAN PRINT_NOW A_CANC 3000 1//"~r~Ambulance mission cancelled!" GOTO ambulance_failed ELSE STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer players_ambulance IF NOT IS_CAR_DEAD players_ambulance GET_NUMBER_OF_PASSENGERS players_ambulance peds_in_car GET_MAXIMUM_NUMBER_OF_PASSENGERS players_ambulance max_peds_in_car amb_free_seats = max_peds_in_car - peds_in_car //ELSE //GOTO ambulance_failed ENDIF ENDIF IF number_of_injured_peds > 6 AND bonus_time_flag = 2 AND drop_off_time_bonus = 0 bonus_time_flag = 1 ++ drop_off_time_bonus ENDIF IF number_of_injured_peds > 9 AND bonus_time_flag = 2 AND drop_off_time_bonus = 1 bonus_time_flag = 1 ++ drop_off_time_bonus ENDIF IF number_of_injured_peds > 12 AND bonus_time_flag = 2 AND drop_off_time_bonus = 2 bonus_time_flag = 1 ++ drop_off_time_bonus ENDIF //////////////////////////////////////////////// /////////// LOCATION CHECKS GO HERE ? ////////// //////////////////////////////////////////////// GOSUB create_random_injured_ped ///////////////// IF hospital_blip_flag = 1 LOCATE_STOPPED_CHAR_IN_CAR_3D scplayer hospital_x hospital_y hospital_z 6.0 6.0 2.0 TRUE ENDIF SWITCH amb_locate_counter2 CASE 0 IF injured_ped_1_flag > 0 ped_var_for_gosub = injured_ped_1 ped_var_for_gosub_flag = injured_ped_1_flag ped_var_for_gosub_blip = injured_ped_1_blip GOSUB injured_ped_checks IF player_failed_mission = 1 GOTO ambulance_failed ENDIF injured_ped_1_flag = ped_var_for_gosub_flag ENDIF amb_locate_counter2++ BREAK ///////////////// CASE 1 IF injured_ped_2_flag > 0 ped_var_for_gosub = injured_ped_2 ped_var_for_gosub_flag = injured_ped_2_flag ped_var_for_gosub_blip = injured_ped_2_blip GOSUB injured_ped_checks IF player_failed_mission = 1 GOTO ambulance_failed ENDIF injured_ped_2_flag = ped_var_for_gosub_flag ENDIF amb_locate_counter2++ BREAK ////////////////// CASE 2 IF injured_ped_3_flag > 0 ped_var_for_gosub = injured_ped_3 ped_var_for_gosub_flag = injured_ped_3_flag ped_var_for_gosub_blip = injured_ped_3_blip GOSUB injured_ped_checks IF player_failed_mission = 1 GOTO ambulance_failed ENDIF injured_ped_3_flag = ped_var_for_gosub_flag ENDIF amb_locate_counter2++ BREAK //////////////// CASE 3 IF injured_ped_4_flag > 0 ped_var_for_gosub = injured_ped_4 ped_var_for_gosub_flag = injured_ped_4_flag ped_var_for_gosub_blip = injured_ped_4_blip GOSUB injured_ped_checks IF player_failed_mission = 1 GOTO ambulance_failed ENDIF injured_ped_4_flag = ped_var_for_gosub_flag ENDIF amb_locate_counter2++ BREAK //////////////// CASE 4 IF injured_ped_5_flag > 0 ped_var_for_gosub = injured_ped_5 ped_var_for_gosub_flag = injured_ped_5_flag ped_var_for_gosub_blip = injured_ped_5_blip GOSUB injured_ped_checks IF player_failed_mission = 1 GOTO ambulance_failed ENDIF injured_ped_5_flag = ped_var_for_gosub_flag ENDIF amb_locate_counter2++ //////////////// BREAK CASE 5 IF injured_ped_6_flag > 0 ped_var_for_gosub = injured_ped_6 ped_var_for_gosub_flag = injured_ped_6_flag ped_var_for_gosub_blip = injured_ped_6_blip GOSUB injured_ped_checks IF player_failed_mission = 1 GOTO ambulance_failed ENDIF injured_ped_6_flag = ped_var_for_gosub_flag ENDIF amb_locate_counter2++ BREAK //////////////// CASE 6 IF injured_ped_7_flag > 0 ped_var_for_gosub = injured_ped_7 ped_var_for_gosub_flag = injured_ped_7_flag ped_var_for_gosub_blip = injured_ped_7_blip GOSUB injured_ped_checks IF player_failed_mission = 1 GOTO ambulance_failed ENDIF injured_ped_7_flag = ped_var_for_gosub_flag ENDIF amb_locate_counter2++ BREAK //////////////// CASE 7 IF injured_ped_8_flag > 0 ped_var_for_gosub = injured_ped_8 ped_var_for_gosub_flag = injured_ped_8_flag ped_var_for_gosub_blip = injured_ped_8_blip GOSUB injured_ped_checks IF player_failed_mission = 1 GOTO ambulance_failed ENDIF injured_ped_8_flag = ped_var_for_gosub_flag ENDIF amb_locate_counter2++ BREAK //////////////// CASE 8 IF injured_ped_9_flag > 0 ped_var_for_gosub = injured_ped_9 ped_var_for_gosub_flag = injured_ped_9_flag ped_var_for_gosub_blip = injured_ped_9_blip GOSUB injured_ped_checks IF player_failed_mission = 1 GOTO ambulance_failed ENDIF injured_ped_9_flag = ped_var_for_gosub_flag ENDIF amb_locate_counter2++ BREAK //////////////// CASE 9 IF injured_ped_10_flag > 0 ped_var_for_gosub = injured_ped_10 ped_var_for_gosub_flag = injured_ped_10_flag ped_var_for_gosub_blip = injured_ped_10_blip GOSUB injured_ped_checks IF player_failed_mission = 1 GOTO ambulance_failed ENDIF injured_ped_10_flag = ped_var_for_gosub_flag ENDIF amb_locate_counter2++ BREAK //////////////// CASE 10 IF injured_ped_11_flag > 0 ped_var_for_gosub = injured_ped_11 ped_var_for_gosub_flag = injured_ped_11_flag ped_var_for_gosub_blip = injured_ped_11_blip GOSUB injured_ped_checks IF player_failed_mission = 1 GOTO ambulance_failed ENDIF injured_ped_11_flag = ped_var_for_gosub_flag ENDIF amb_locate_counter2++ BREAK //////////////// CASE 11 IF injured_ped_12_flag > 0 ped_var_for_gosub = injured_ped_12 ped_var_for_gosub_flag = injured_ped_12_flag ped_var_for_gosub_blip = injured_ped_12_blip GOSUB injured_ped_checks IF player_failed_mission = 1 GOTO ambulance_failed ENDIF injured_ped_12_flag = ped_var_for_gosub_flag ENDIF amb_locate_counter2++ BREAK DEFAULT amb_locate_counter2 = 0 BREAK ENDSWITCH //////////////// IF saved_peds = number_of_injured_peds score_am = db_ambulance_level * db_ambulance_level score_am *= 50 FORCE_BIG_MESSAGE_AND_COUNTER TRUE PRINT_WITH_NUMBER_BIG REWARD score_am 6000 6 total_saved_peds += saved_peds saved_peds_this_go += saved_peds ++ number_of_injured_peds saved_peds = 0 ped_counter = 0 ADD_SCORE player1 score_am hospital_blip_flag = 0 REMOVE_BLIP hospital_blip REMOVE_BLIP injured_ped_1_blip REMOVE_BLIP injured_ped_2_blip REMOVE_BLIP injured_ped_3_blip REMOVE_BLIP injured_ped_4_blip REMOVE_BLIP injured_ped_5_blip REMOVE_BLIP injured_ped_6_blip REMOVE_BLIP injured_ped_7_blip REMOVE_BLIP injured_ped_8_blip REMOVE_BLIP injured_ped_9_blip REMOVE_BLIP injured_ped_10_blip REMOVE_BLIP injured_ped_11_blip REMOVE_BLIP injured_ped_12_blip //REGISTER_AMBULANCE_LEVEL db_ambulance_level // old call REGISTER_INT_STAT AMBULANCE_LEVEL db_ambulance_level // new call for SA (dave b) ++ db_ambulance_level IF db_ambulance_level = 13 FORCE_BIG_MESSAGE_AND_COUNTER TRUE PRINT_WITH_NUMBER_BIG A_COMP1 5000 5000 5 //"Ambulance missions complete: $ ~1~" ADD_SCORE player1 5000 PLAY_MISSION_PASSED_TUNE 2 IF done_ambulance_progress = 0 WRITE_LOG "UNLOCK_ACHIEVEMENT SAVIOR" //CLEAR_HELP //PRINT_HELP A_COMP2 //"You will never get tired!" PLAYER_MADE_PROGRESS 1 PRINT A_COMP3 5000 1 //"you will never get tired //SET_PLAYER_NEVER_GETS_TIRED player1 TRUE //INCREMENT_FLOAT_STAT MAX_HEALTH 150.0 GET_FLOAT_STAT MAX_HEALTH ambulance_temp_float ambulance_temp_float *= 1.5 INCREMENT_FLOAT_STAT_NO_MESSAGE MAX_HEALTH ambulance_temp_float REGISTER_ODDJOB_MISSION_PASSED done_ambulance_progress = 1 ENDIF RETURN ENDIF GOTO mission_root ENDIF GOTO ambulance_loop ambulance_failed: CLEAR_ONSCREEN_TIMER ped_time_limit CLEAR_ONSCREEN_COUNTER db_ambulance_level CLEAR_ONSCREEN_COUNTER amb_free_seats CLEAR_THIS_PRINT ALEVEL IF NOT db_ambulance_level = 13 PRINT_BIG A_FAIL1 5000 5 PRINT_WITH_NUMBER_BIG A_SAVES saved_peds_this_go 6000 6//PEOPLE SAVED: ~1~ ENDIF //////////////////////////// //// head popping stuff //// //////////////////////////// IF NOT db_ambulance_level = 13 IF NOT IS_CHAR_DEAD injured_ped_1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_1 FALSE EXPLODE_CHAR_HEAD injured_ped_1 REMOVE_CHAR_ELEGANTLY injured_ped_1 ENDIF IF NOT IS_CHAR_DEAD injured_ped_2 SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_2 FALSE EXPLODE_CHAR_HEAD injured_ped_2 REMOVE_CHAR_ELEGANTLY injured_ped_2 ENDIF IF NOT IS_CHAR_DEAD injured_ped_3 SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_3 FALSE EXPLODE_CHAR_HEAD injured_ped_3 REMOVE_CHAR_ELEGANTLY injured_ped_3 ENDIF IF NOT IS_CHAR_DEAD injured_ped_4 SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_4 FALSE EXPLODE_CHAR_HEAD injured_ped_4 REMOVE_CHAR_ELEGANTLY injured_ped_4 ENDIF IF NOT IS_CHAR_DEAD injured_ped_5 SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_5 FALSE EXPLODE_CHAR_HEAD injured_ped_5 REMOVE_CHAR_ELEGANTLY injured_ped_5 ENDIF IF NOT IS_CHAR_DEAD injured_ped_6 SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_6 FALSE EXPLODE_CHAR_HEAD injured_ped_6 REMOVE_CHAR_ELEGANTLY injured_ped_6 ENDIF IF NOT IS_CHAR_DEAD injured_ped_7 SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_7 FALSE EXPLODE_CHAR_HEAD injured_ped_7 REMOVE_CHAR_ELEGANTLY injured_ped_7 ENDIF IF NOT IS_CHAR_DEAD injured_ped_8 SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_8 FALSE EXPLODE_CHAR_HEAD injured_ped_8 REMOVE_CHAR_ELEGANTLY injured_ped_8 ENDIF IF NOT IS_CHAR_DEAD injured_ped_9 SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_9 FALSE EXPLODE_CHAR_HEAD injured_ped_9 REMOVE_CHAR_ELEGANTLY injured_ped_9 ENDIF IF NOT IS_CHAR_DEAD injured_ped_10 SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_10 FALSE EXPLODE_CHAR_HEAD injured_ped_10 REMOVE_CHAR_ELEGANTLY injured_ped_10 ENDIF IF NOT IS_CHAR_DEAD injured_ped_11 SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_11 FALSE EXPLODE_CHAR_HEAD injured_ped_11 REMOVE_CHAR_ELEGANTLY injured_ped_11 ENDIF IF NOT IS_CHAR_DEAD injured_ped_12 SET_CHAR_ONLY_DAMAGED_BY_PLAYER injured_ped_12 FALSE EXPLODE_CHAR_HEAD injured_ped_12 REMOVE_CHAR_ELEGANTLY injured_ped_12 ENDIF ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED injured_ped_1 MARK_CHAR_AS_NO_LONGER_NEEDED injured_ped_2 MARK_CHAR_AS_NO_LONGER_NEEDED injured_ped_3 MARK_CHAR_AS_NO_LONGER_NEEDED injured_ped_4 MARK_CHAR_AS_NO_LONGER_NEEDED injured_ped_5 MARK_CHAR_AS_NO_LONGER_NEEDED injured_ped_6 MARK_CHAR_AS_NO_LONGER_NEEDED injured_ped_7 MARK_CHAR_AS_NO_LONGER_NEEDED injured_ped_8 MARK_CHAR_AS_NO_LONGER_NEEDED injured_ped_9 MARK_CHAR_AS_NO_LONGER_NEEDED injured_ped_10 MARK_CHAR_AS_NO_LONGER_NEEDED injured_ped_11 MARK_CHAR_AS_NO_LONGER_NEEDED injured_ped_12 hospital_blip_flag = 0 REMOVE_BLIP hospital_blip REMOVE_BLIP injured_ped_1_blip REMOVE_BLIP injured_ped_2_blip REMOVE_BLIP injured_ped_3_blip REMOVE_BLIP injured_ped_4_blip REMOVE_BLIP injured_ped_5_blip REMOVE_BLIP injured_ped_6_blip REMOVE_BLIP injured_ped_7_blip REMOVE_BLIP injured_ped_8_blip REMOVE_BLIP injured_ped_9_blip REMOVE_BLIP injured_ped_10_blip REMOVE_BLIP injured_ped_11_blip REMOVE_BLIP injured_ped_12_blip REMOVE_DECISION_MAKER amb_decision SET_WANTED_MULTIPLIER 1.0 GET_GAME_TIMER timer_mobile_start ///////////////////////// restore relationships that were stored earlier ////////// dave_counter = 0 WHILE dave_counter < 10 IF gang_hate[dave_counter] = 1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE dave_counter PEDTYPE_PLAYER1 gangs_changed-- gang_hate[dave_counter] = 0 ENDIF IF gang_dislike[dave_counter] = 1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE dave_counter PEDTYPE_PLAYER1 gangs_changed-- gang_dislike[dave_counter] = 0 ENDIF dave_counter++ ENDWHILE flag_player_on_mission = 0 flag_player_on_ambulance_mission = 0 MISSION_HAS_FINISHED IF done_ambulance_progress = 1 //CLEAR_HELP //PRINT_HELP A_COMP3 //"You will never get tired!" done_ambulance_progress = 2 SHOW_UPDATE_STATS FALSE START_NEW_SCRIPT switch_update_stats_back_on ENDIF RETURN ////////////////////////////////////////////////////////////////////// injured_ped_checks: IF IS_CHAR_DEAD ped_var_for_gosub PRINT_NOW A_FAIL3 3000 1//The patient is dead player_failed_mission = 1 RETURN ENDIF IF ped_time_limit = 0 EXPLODE_CHAR_HEAD ped_var_for_gosub REMOVE_CHAR_ELEGANTLY ped_var_for_gosub PRINT_NOW A_FAIL2 3000 1//"Your too late" player_failed_mission = 1 RETURN ENDIF IF ped_var_for_gosub_flag = 3 GET_CHAR_COORDINATES ped_var_for_gosub amb_sound_x amb_sound_y amb_sound_z GET_CAR_HEALTH players_ambulance ambulance_health_now IF ambulance_health_now < ambulance_health_last time_drop = ambulance_health_last - ambulance_health_now time_drop = time_drop * 50 ped_time_limit_temp = ped_time_limit - time_drop IF ped_time_limit_temp > 10 ped_time_limit = ped_time_limit - time_drop ENDIF SET_CHAR_SAY_CONTEXT ped_var_for_gosub CONTEXT_GLOBAL_PAIN_HIGH amb_dummy_sample IF ped_time_limit < 0 ped_time_limit = 0 ENDIF ambulance_health_last = ambulance_health_now ENDIF ENDIF IF ped_var_for_gosub_flag = 1 IF LOCATE_CHAR_IN_CAR_CHAR_3D scplayer ped_var_for_gosub 10.0 10.0 2.0 0 GET_NUMBER_OF_PASSENGERS players_ambulance peds_in_car GET_MAXIMUM_NUMBER_OF_PASSENGERS players_ambulance max_peds_in_car IF peds_in_car = max_peds_in_car IF car_full_flag = 0 PRINT_NOW A_FULL 5000 1 //"Ambulance full!!!" ENDIF car_full_flag = 1 ELSE car_full_flag = 0 ENDIF GET_CAR_HEALTH players_ambulance ambulance_health_last IF car_full_flag = 0 IF dave_task_assigned_flag = 0 TASK_ENTER_CAR_AS_PASSENGER ped_var_for_gosub players_ambulance -2 -1 dave_task_assigned_flag = 1 ELSE GET_SCRIPT_TASK_STATUS ped_var_for_gosub TASK_ENTER_CAR_AS_PASSENGER amublance_task_status IF amublance_task_status = FINISHED_TASK TASK_ENTER_CAR_AS_PASSENGER ped_var_for_gosub players_ambulance -2 -1 ENDIF ENDIF ELSE PRINT_NOW A_FULL 5000 1 //"Ambulance full!!!" ENDIF ped_var_for_gosub_flag = 2 ENDIF ENDIF IF ped_var_for_gosub_flag = 2 IF NOT LOCATE_CHAR_IN_CAR_CHAR_2D scplayer ped_var_for_gosub 20.0 20.0 0 ped_var_for_gosub_flag = 1 ENDIF IF NOT IS_CHAR_SITTING_IN_ANY_CAR ped_var_for_gosub ped_var_for_gosub_flag = 1 ENDIF ENDIF IF ped_var_for_gosub_flag = 2 IF IS_CHAR_SITTING_IN_ANY_CAR ped_var_for_gosub dave_task_assigned_flag = 0 REMOVE_BLIP ped_var_for_gosub_blip IF hospital_blip_flag = 0 ADD_BLIP_FOR_COORD hospital_x hospital_y hospital_z hospital_blip hospital_blip_flag = 1 ENDIF //time_chunk_in_secs = time_chunk / 1000 time_chunk_in_secs = amb_time_addition[amb_locate_counter2] / 1000 PRINT_WITH_NUMBER_BIG A_TIME time_chunk_in_secs 6000 6 //+~1~ Seconds //ped_time_limit += time_chunk ped_time_limit += amb_time_addition[amb_locate_counter2] ped_var_for_gosub_flag = 3 ENDIF ENDIF IF ped_var_for_gosub_flag = 3 IF LOCATE_STOPPED_CHAR_IN_CAR_3D scplayer hospital_x hospital_y hospital_z 6.0 6.0 2.0 FALSE TASK_GO_STRAIGHT_TO_COORD ped_var_for_gosub hospital_door_x hospital_door_y hospital_door_z PEDMOVE_RUN -1 ped_var_for_gosub_flag = 4 ENDIF ENDIF IF ped_var_for_gosub_flag = 4 IF NOT IS_CHAR_SITTING_IN_ANY_CAR ped_var_for_gosub TASK_GO_STRAIGHT_TO_COORD ped_var_for_gosub hospital_door_x hospital_door_y hospital_door_z PEDMOVE_RUN -1 FORCE_BIG_MESSAGE_AND_COUNTER TRUE PRINT_BIG A_PASS 3000 5 IF bonus_time_flag = 1 time_chunk_in_secs = time_chunk / 1000 PRINT_WITH_NUMBER_BIG A_TIME time_chunk_in_secs 6000 6 //+~1~ Seconds STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer players_ambulance GET_CAR_HEALTH players_ambulance players_ambulance_health players_ambulance_health += 110 SET_CAR_HEALTH players_ambulance players_ambulance_health ped_time_limit += time_chunk ++ bonus_time_flag ENDIF REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE ++ saved_peds INCREMENT_INT_STAT LIVES_SAVED 1 ped_var_for_gosub_flag = 0 SET_CHAR_BLEEDING ped_var_for_gosub FALSE //REMOVE_CHAR_ELEGANTLY ped_var_for_gosub SET_CHAR_KEEP_TASK ped_var_for_gosub TRUE MARK_CHAR_AS_NO_LONGER_NEEDED ped_var_for_gosub ENDIF ENDIF RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // *************************************** Fire missions *********************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // Mission start stuff GOSUB mission_start_fire GOSUB failed MISSION_END { // CARS LVAR_INT onfire_car LVAR_INT onfire_car_1 LVAR_INT onfire_car_2 LVAR_INT onfire_car_3 LVAR_INT dave_car // PEOPLE LVAR_INT onfire_ped LVAR_INT onfire_ped_1 LVAR_INT onfire_ped_2 LVAR_INT onfire_ped_3 LVAR_INT onfire_ped_4 LVAR_INT onfire_ped_5 LVAR_INT onfire_ped_6 LVAR_INT onfire_ped_7 LVAR_INT onfire_ped_8 LVAR_INT onfire_ped_9 //FIRES LVAR_INT onfire_car_fire LVAR_INT onfire_car_1_fire LVAR_INT onfire_car_2_fire LVAR_INT onfire_car_3_fire LVAR_INT onfire_ped_fire LVAR_INT onfire_ped_1_fire LVAR_INT onfire_ped_2_fire LVAR_INT onfire_ped_3_fire LVAR_INT onfire_ped_4_fire LVAR_INT onfire_ped_5_fire LVAR_INT onfire_ped_6_fire LVAR_INT onfire_ped_7_fire LVAR_INT onfire_ped_8_fire LVAR_INT onfire_ped_9_fire //BLIPS LVAR_INT onfire_car_blip LVAR_INT onfire_car_1_blip LVAR_INT onfire_car_2_blip LVAR_INT onfire_car_3_blip LVAR_INT onfire_ped_blip LVAR_INT onfire_ped_1_blip LVAR_INT onfire_ped_2_blip LVAR_INT onfire_ped_3_blip LVAR_INT onfire_ped_4_blip LVAR_INT onfire_ped_5_blip LVAR_INT onfire_ped_6_blip LVAR_INT onfire_ped_7_blip LVAR_INT onfire_ped_8_blip LVAR_INT onfire_ped_9_blip // COUNTERS AND TIMER LVAR_INT fail_firetruck_mission LVAR_INT intermediate_int LVAR_INT score_ft LVAR_INT displayed_timer LVAR_INT displayed_counter LVAR_INT mission_end_button_ft LVAR_INT total_score LVAR_INT players_car_health LVAR_INT firetruck_level_minus_4 LVAR_INT onfire_car_health LVAR_INT car_health_test_timer LVAR_INT fires_needing_extinguishing LVAR_INT fires_extinguished_this_round VAR_INT db_firetruck_level VAR_INT db_fires_extinguished VAR_INT fire_time_limit // FLAGS LVAR_INT onfire_car_flag LVAR_INT onfire_ped_flag LVAR_INT onfire_car_1_flag LVAR_INT onfire_car_2_flag LVAR_INT onfire_car_3_flag LVAR_INT onfire_ped_1_flag LVAR_INT onfire_ped_2_flag LVAR_INT onfire_ped_3_flag LVAR_INT onfire_ped_4_flag LVAR_INT onfire_ped_5_flag LVAR_INT onfire_ped_6_flag LVAR_INT onfire_ped_7_flag LVAR_INT onfire_ped_8_flag LVAR_INT onfire_ped_9_flag LVAR_INT fire_collision_loaded_car[3] LVAR_INT fire_collision_loaded_ped[12] LVAR_INT fire_first_car_created LVAR_INT fire_safety_flag //COORD MATHS LVAR_FLOAT time_divider LVAR_FLOAT fire_time_limit_float random_car_heading LVAR_FLOAT players_distance_from_fire LVAR_INT random_int LVAR_INT random_car_model // players_car // COORDINATES LVAR_FLOAT car1_x car1_y car1_z LVAR_FLOAT car2_x car2_y car2_z LVAR_FLOAT car3_x car3_y car3_z LVAR_FLOAT db_dx db_dy LVAR_FLOAT db_temp_x db_temp_y db_temp_z db_temp_xy db_sum_x_y_temp LVAR_FLOAT dave_player_x dave_player_y dave_player_z LVAR_FLOAT dave_ped_x dave_ped_y dave_ped_z LVAR_FLOAT dave_generate_x_pos dave_generate_y_pos LVAR_FLOAT dave_generate_x_neg dave_generate_y_neg LVAR_FLOAT fire_random_x fire_random_y fire_random_z LVAR_FLOAT fire_dist_multiplier LVAR_FLOAT temp_x temp_y temp_z temp_heading temp_distance LVAR_FLOAT fire_coord_iterations // OTHERS VAR_TEXT_LABEL $fire_zone_name $fire_zone_name2 LVAR_INT fire_generating_coords LVAR_INT fire_task_status LVAR_INT fire_decision // ****************************************Mission Start************************************ mission_start_fire: flag_player_on_mission = 1 flag_player_on_fire_mission = 1 SCRIPT_NAME firetru WAIT 0 IF done_firetruck_progress = 0 REGISTER_MISSION_GIVEN ENDIF // the radar will path all over the place if we dont stop it at the road DISPLAY_RADAR 4 // HACKED RADAR STOP AT ROAD LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY fire_decision LOAD_MISSION_TEXT FIRETRK SHOW_UPDATE_STATS FALSE fire_coord_iterations = 0.0 fire_time_limit = 0 score_ft = 0 displayed_timer = 0 db_fires_extinguished = 0 displayed_counter = 0 total_score = 0 mission_end_button_ft = 0 time_divider = 7.0 db_firetruck_level = 1 fail_firetruck_mission = 0 random_car_model = 0 intermediate_int = 0 players_car_health = 0 onfire_car_1 = -1 onfire_car_1 = -1 onfire_car_1 = -1 car_health_test_timer = 0 onfire_ped_1_fire = 0 onfire_ped_2_fire = 0 onfire_ped_3_fire = 0 onfire_ped_4_fire = 0 onfire_ped_5_fire = 0 onfire_ped_6_fire = 0 onfire_ped_7_fire = 0 onfire_ped_8_fire = 0 onfire_ped_9_fire = 0 fire_collision_loaded_car[0] = 0 fire_collision_loaded_car[1] = 0 fire_collision_loaded_car[2] = 0 fire_collision_loaded_ped[0] = 0 fire_collision_loaded_ped[1] = 0 fire_collision_loaded_ped[2] = 0 fire_collision_loaded_ped[3] = 0 fire_collision_loaded_ped[4] = 0 fire_collision_loaded_ped[5] = 0 fire_collision_loaded_ped[6] = 0 fire_collision_loaded_ped[7] = 0 fire_collision_loaded_ped[8] = 0 fire_collision_loaded_ped[9] = 0 fire_collision_loaded_ped[10] = 0 fire_collision_loaded_ped[11] = 0 fire_first_car_created = 0 VAR_INT car_or_ped_flag VAR_INT car_numer_flag car_numer_flag = 0 car_or_ped_flag = 0 SET_WANTED_MULTIPLIER 0.5 IF flag_player_on_mission = 0 ADD_BLIP_FOR_COORD x y z onfire_car_blip ADD_BLIP_FOR_COORD x y z onfire_car_1_blip ADD_BLIP_FOR_COORD x y z onfire_car_2_blip ADD_BLIP_FOR_COORD x y z onfire_car_3_blip ADD_BLIP_FOR_COORD x y z onfire_ped_blip ADD_BLIP_FOR_COORD x y z onfire_ped_1_blip ADD_BLIP_FOR_COORD x y z onfire_ped_2_blip ADD_BLIP_FOR_COORD x y z onfire_ped_3_blip ADD_BLIP_FOR_COORD x y z onfire_ped_4_blip ADD_BLIP_FOR_COORD x y z onfire_ped_5_blip ADD_BLIP_FOR_COORD x y z onfire_ped_6_blip ADD_BLIP_FOR_COORD x y z onfire_ped_7_blip ADD_BLIP_FOR_COORD x y z onfire_ped_8_blip ADD_BLIP_FOR_COORD x y z onfire_ped_9_blip CREATE_CAR PATRIOT 0.0 0.0 0.0 onfire_car_1 CREATE_CHAR PEDTYPE_MISSION1 LAPD1 0.0 0.0 0.0 onfire_ped START_CAR_FIRE onfire_car_1 onfire_car_fire START_CAR_FIRE onfire_car_1 onfire_car_1_fire START_CAR_FIRE onfire_car_1 onfire_car_2_fire START_CAR_FIRE onfire_car_1 onfire_car_3_fire START_CHAR_FIRE onfire_ped onfire_ped_fire START_CHAR_FIRE onfire_ped onfire_ped_1_fire START_CHAR_FIRE onfire_ped onfire_ped_2_fire START_CHAR_FIRE onfire_ped onfire_ped_3_fire START_CHAR_FIRE onfire_ped onfire_ped_4_fire START_CHAR_FIRE onfire_ped onfire_ped_5_fire START_CHAR_FIRE onfire_ped onfire_ped_6_fire START_CHAR_FIRE onfire_ped onfire_ped_7_fire START_CHAR_FIRE onfire_ped onfire_ped_8_fire START_CHAR_FIRE onfire_ped onfire_ped_9_fire ENDIF fire_generation_start: fires_needing_extinguishing = 0 fires_extinguished_this_round = 0 onfire_car_1_flag = 0 onfire_car_2_flag = 0 onfire_car_3_flag = 0 onfire_ped_1_flag = 0 onfire_ped_2_flag = 0 onfire_ped_3_flag = 0 onfire_ped_4_flag = 0 onfire_ped_5_flag = 0 onfire_ped_6_flag = 0 onfire_ped_7_flag = 0 onfire_ped_8_flag = 0 onfire_ped_9_flag = 0 fire_collision_loaded_car[0] = 0 fire_collision_loaded_car[1] = 0 fire_collision_loaded_car[2] = 0 fire_collision_loaded_ped[0] = 0 fire_collision_loaded_ped[1] = 0 fire_collision_loaded_ped[2] = 0 fire_collision_loaded_ped[3] = 0 fire_collision_loaded_ped[4] = 0 fire_collision_loaded_ped[5] = 0 fire_collision_loaded_ped[6] = 0 fire_collision_loaded_ped[7] = 0 fire_collision_loaded_ped[8] = 0 fire_collision_loaded_ped[9] = 0 fire_collision_loaded_ped[10] = 0 fire_collision_loaded_ped[11] = 0 ///////////////////////////////////////////////////////////////////// //REQUEST CAR MODEL CHECK THAT CARS HAVE 4 DOORS (dave b) //// ///////////////////////////////////////////////////////////////////// GENERATE_RANDOM_INT_IN_RANGE 25 44 random_int //4-door IF random_int = 25 random_car_model = SENTINEL//4-door saloon 125 ENDIF IF random_int = 26 random_car_model = MOONBEAM//people carrier 138 ENDIF IF random_int = 27 random_car_model = WASHING //4-door saloon 141 ENDIF IF random_int = 28 random_car_model = LANDSTAL//4-door offroad 120 ENDIF IF random_int = 29 random_car_model = PEREN //60s station wagon 124 ENDIF IF random_int = 30 random_car_model = ADMIRAL //4-door saloon 165 ENDIF IF random_int = 31 random_car_model = GLENDALE//4-door 60s saloon 186 ENDIF IF random_int = 32 random_car_model = OCEANIC //4-door 60s saloon 187 ENDIF IF random_int = 33 random_car_model = REGINA //4-door 70s saloon 199 ENDIF IF random_int = 34 random_car_model = PONY ENDIF IF random_int = 35 random_car_model = TAXI ENDIF IF random_int = 36 random_car_model = CABBIE ENDIF IF random_int = 37 random_car_model = RUMPO ENDIF IF random_int = 38 random_car_model = MERIT ENDIF IF random_int = 39 random_car_model = PATRIOT ENDIF IF random_int = 40 random_car_model = BURRITO ENDIF IF random_int = 41 random_car_model = INTRUDER ENDIF IF random_int = 42 random_car_model = GREENWOO ENDIF IF random_int = 43 random_car_model = SULTAN ENDIF REQUEST_MODEL random_car_model ///////////////////////////////////////////////////////////////////// //GET RANDOM FIRE COORDS ///////////////////////////////////////////////////////////////////// next_fire: WAIT 0 GOSUB do_cancelled_checks IF fail_firetruck_mission = 1 GOTO failed ENDIF //////////////////////////////////////////////////////////////////// //WAIT FOR CAR MODEL TO BE LOADED ///////////////////////////////////////////////////////////////////// WHILE NOT HAS_MODEL_LOADED random_car_model WAIT 0 REQUEST_MODEL random_car_model GOSUB do_cancelled_checks IF fail_firetruck_mission = 1 GOTO failed ENDIF ENDWHILE ///////////////////////////////////////////////////////////////////// //CREATE THE FIRE SCENE ///////////////////////////////////////////////////////////////////// fire_first_car_created = 0 GOSUB generate_random_fire_coord car1_x = fire_random_x car1_y = fire_random_y car1_z = fire_random_z CLEAR_AREA car1_x car1_y car1_z 5.0 FALSE CREATE_CAR random_car_model car1_x car1_y car1_z onfire_car_1 FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION onfire_car_1 TRUE SET_CAR_HEADING onfire_car_1 temp_heading SET_LOAD_COLLISION_FOR_CAR_FLAG onfire_car_1 FALSE SET_CAR_PROOFS onfire_car_1 FALSE TRUE FALSE FALSE FALSE GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 359.9 random_car_heading SET_CAR_HEADING onfire_car_1 random_car_heading START_CAR_FIRE onfire_car_1 onfire_car_1_fire REMOVE_BLIP onfire_car_1_blip ADD_BLIP_FOR_CAR onfire_car_1 onfire_car_1_blip SET_BLIP_AS_FRIENDLY onfire_car_1_blip TRUE CHANGE_BLIP_DISPLAY onfire_car_1_blip BLIP_ONLY SET_UPSIDEDOWN_CAR_NOT_DAMAGED onfire_car_1 TRUE fire_first_car_created = 1 ++ fires_needing_extinguishing CREATE_RANDOM_CHAR_AS_DRIVER onfire_car_1 onfire_ped_1 SET_CHAR_DECISION_MAKER onfire_ped_1 fire_decision SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_1 FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER onfire_ped_1 TRUE SET_CHAR_PROOFS onfire_ped_1 FALSE TRUE TRUE FALSE FALSE ++ fires_needing_extinguishing IF db_firetruck_level > 2 CREATE_RANDOM_CHAR_AS_PASSENGER onfire_car_1 0 onfire_ped_2 SET_CHAR_DECISION_MAKER onfire_ped_2 fire_decision SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_2 FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER onfire_ped_2 TRUE SET_CHAR_PROOFS onfire_ped_2 FALSE TRUE TRUE FALSE FALSE ++ fires_needing_extinguishing ENDIF IF db_firetruck_level > 3 CREATE_RANDOM_CHAR_AS_PASSENGER onfire_car_1 1 onfire_ped_3 SET_CHAR_DECISION_MAKER onfire_ped_3 fire_decision SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_3 FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER onfire_ped_3 TRUE SET_CHAR_PROOFS onfire_ped_3 FALSE TRUE TRUE FALSE FALSE ++ fires_needing_extinguishing ENDIF IF db_firetruck_level > 4 GOSUB generate_random_fire_coord car2_x = fire_random_x car2_y = fire_random_y car2_z = fire_random_z CLEAR_AREA car2_x car2_y car2_z 5.0 FALSE CREATE_CAR random_car_model car2_x car2_y car2_z onfire_car_2 FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION onfire_car_2 TRUE SET_CAR_HEADING onfire_car_2 temp_heading SET_LOAD_COLLISION_FOR_CAR_FLAG onfire_car_2 FALSE SET_CAR_PROOFS onfire_car_2 FALSE TRUE FALSE FALSE FALSE TURN_CAR_TO_FACE_COORD onfire_car_2 car1_x car1_y START_CAR_FIRE onfire_car_2 onfire_car_2_fire SET_CAR_FORWARD_SPEED onfire_car_2 20.0 REMOVE_BLIP onfire_car_2_blip ADD_BLIP_FOR_CAR onfire_car_2 onfire_car_2_blip SET_BLIP_AS_FRIENDLY onfire_car_2_blip TRUE CHANGE_BLIP_DISPLAY onfire_car_2_blip BLIP_ONLY SET_UPSIDEDOWN_CAR_NOT_DAMAGED onfire_car_2 TRUE ++ fires_needing_extinguishing ENDIF IF db_firetruck_level > 5 CREATE_RANDOM_CHAR_AS_DRIVER onfire_car_2 onfire_ped_4 SET_CHAR_DECISION_MAKER onfire_ped_4 fire_decision SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_4 FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER onfire_ped_4 TRUE SET_CHAR_PROOFS onfire_ped_4 FALSE TRUE TRUE FALSE FALSE ++ fires_needing_extinguishing ENDIF IF db_firetruck_level > 6 CREATE_RANDOM_CHAR_AS_PASSENGER onfire_car_2 0 onfire_ped_5 SET_CHAR_DECISION_MAKER onfire_ped_5 fire_decision SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_5 FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER onfire_ped_5 TRUE SET_CHAR_PROOFS onfire_ped_5 FALSE TRUE TRUE FALSE FALSE ++ fires_needing_extinguishing ENDIF IF db_firetruck_level > 7 CREATE_RANDOM_CHAR_AS_PASSENGER onfire_car_2 1 onfire_ped_6 SET_CHAR_DECISION_MAKER onfire_ped_6 fire_decision SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_6 FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER onfire_ped_6 TRUE SET_CHAR_PROOFS onfire_ped_6 FALSE TRUE TRUE FALSE FALSE ++ fires_needing_extinguishing ENDIF IF db_firetruck_level > 8 GOSUB generate_random_fire_coord car3_x = fire_random_x car3_y = fire_random_y car3_z = fire_random_z CLEAR_AREA car3_x car3_y car3_z 5.0 FALSE CREATE_CAR random_car_model car3_x car3_y car3_z onfire_car_3 FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION onfire_car_3 TRUE SET_CAR_HEADING onfire_car_3 temp_heading SET_LOAD_COLLISION_FOR_CAR_FLAG onfire_car_3 FALSE SET_CAR_PROOFS onfire_car_3 FALSE TRUE FALSE FALSE FALSE TURN_CAR_TO_FACE_COORD onfire_car_3 car1_x car1_y START_CAR_FIRE onfire_car_3 onfire_car_3_fire SET_CAR_FORWARD_SPEED onfire_car_3 20.0 REMOVE_BLIP onfire_car_3_blip ADD_BLIP_FOR_CAR onfire_car_3 onfire_car_3_blip SET_BLIP_AS_FRIENDLY onfire_car_3_blip TRUE CHANGE_BLIP_DISPLAY onfire_car_3_blip BLIP_ONLY SET_UPSIDEDOWN_CAR_NOT_DAMAGED onfire_car_3 TRUE ++ fires_needing_extinguishing ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED random_car_model IF db_firetruck_level > 9 CREATE_RANDOM_CHAR_AS_DRIVER onfire_car_3 onfire_ped_7 SET_CHAR_DECISION_MAKER onfire_ped_7 fire_decision SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_7 FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER onfire_ped_7 TRUE SET_CHAR_PROOFS onfire_ped_7 FALSE TRUE TRUE FALSE FALSE ++ fires_needing_extinguishing ENDIF IF db_firetruck_level > 10 CREATE_RANDOM_CHAR_AS_PASSENGER onfire_car_3 0 onfire_ped_8 SET_CHAR_DECISION_MAKER onfire_ped_8 fire_decision SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_8 FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER onfire_ped_8 TRUE SET_CHAR_PROOFS onfire_ped_8 FALSE TRUE TRUE FALSE FALSE ++ fires_needing_extinguishing ENDIF IF db_firetruck_level > 11 CREATE_RANDOM_CHAR_AS_PASSENGER onfire_car_3 1 onfire_ped_9 SET_CHAR_DECISION_MAKER onfire_ped_9 fire_decision SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_9 FALSE SET_CHAR_ONLY_DAMAGED_BY_PLAYER onfire_ped_9 TRUE SET_CHAR_PROOFS onfire_ped_9 FALSE TRUE TRUE FALSE FALSE ++ fires_needing_extinguishing ENDIF IF NOT IS_CAR_DEAD onfire_car_1 SET_CAR_MISSION onfire_car_1 MISSION_STOP_FOREVER ENDIF IF NOT IS_CAR_DEAD onfire_car_2 SET_CAR_MISSION onfire_car_2 MISSION_STOP_FOREVER ENDIF IF NOT IS_CAR_DEAD onfire_car_3 SET_CAR_MISSION onfire_car_3 MISSION_STOP_FOREVER ENDIF ///////////////////////////////////////////////////////////////////// //DO PROMPTS & GAMEY STUFF ///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////GAME SPECIFIC NEED TO ADD CODE TO CHECK EACH AREA IN SA (dave b) ///////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// GOSUB do_cancelled_checks IF fail_firetruck_mission = 1 GOTO failed ENDIF IF NOT IS_CHAR_DEAD onfire_ped_1 GET_CHAR_COORDINATES onfire_ped_1 dave_ped_x dave_ped_y dave_ped_z GET_NAME_OF_ZONE dave_ped_x dave_ped_y dave_ped_z $fire_zone_name IF db_firetruck_level < 5 PRINT_STRING_IN_STRING_NOW F_START $fire_zone_name 5000 1 //~g~Burning vehicle reported in the ~a~ area. Go and extinguish the fire. ELSE PRINT_STRING_IN_STRING_NOW F_STAR1 $fire_zone_name 5000 1 //~g~Burning vehicles reported in the ~a~ area. Go and extinguish the fire. ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////END OF GAME SPECIFIC NEED TO ADD CODE TO CHECK EACH AREA IN SA (dave b)/////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF db_firetruck_level = 1 -- fires_needing_extinguishing DELETE_CHAR onfire_ped_1 ENDIF IF displayed_timer = 0 DISPLAY_ONSCREEN_TIMER_WITH_STRING fire_time_limit TIMER_DOWN FIRTIME DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING db_firetruck_level COUNTER_DISPLAY_NUMBER 1 FLEV displayed_timer = 1 ELSE FREEZE_ONSCREEN_TIMER FALSE ENDIF firetruck_level_minus_4 = db_firetruck_level - 4 GET_GAME_TIMER game_timer car_health_test_timer = game_timer + 3000 ///////////////////////////////////////////////////////////////////// firetruck_mission_loop: ///////////////////////////////////////////////////////////////////// ////////////////////////////// /// dave b debug key board /// ////////////////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_SPACE fire_time_limit = 300000 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_ENTER IF NOT IS_CAR_DEAD onfire_car_1 SET_CAR_CAN_BE_DAMAGED onfire_car_1 FALSE SET_CAR_CAN_BE_DAMAGED onfire_car_1 TRUE ENDIF IF db_firetruck_level > 4 IF NOT IS_CAR_DEAD onfire_car_2 SET_CAR_CAN_BE_DAMAGED onfire_car_2 FALSE SET_CAR_CAN_BE_DAMAGED onfire_car_2 TRUE ENDIF ENDIF IF db_firetruck_level > 8 IF NOT IS_CAR_DEAD onfire_car_3 SET_CAR_CAN_BE_DAMAGED onfire_car_3 FALSE SET_CAR_CAN_BE_DAMAGED onfire_car_3 TRUE ENDIF ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S done_firetruck_progress = 0 db_firetruck_level = 12 GOTO passed ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_Z CLEAR_ONSCREEN_TIMER fire_time_limit CLEAR_ONSCREEN_COUNTER db_fires_extinguished CLEAR_ONSCREEN_COUNTER db_firetruck_level CLEAR_THIS_PRINT F_START CLEAR_THIS_PRINT F_STAR1 CLEAR_THIS_PRINT FIRELVL PRINT_BIG F_PASS1 5000 6 score_ft = db_firetruck_level * db_firetruck_level score_ft *= 50 total_score += score_ft PRINT_WITH_NUMBER_BIG REWARD score_ft 6000 5 ADD_SCORE player1 score_ft PRINT_WITH_NUMBER_BIG F_COMP1 5000 5000 5 //Fire Fighter missions complete: $~1~ ADD_SCORE player1 5000 PLAY_MISSION_PASSED_TUNE 2 ENDIF /* IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_1 CLEAR_PRINTS CLEAR_THIS_PRINT F_PASS1 PRINT_BIG F_PASS1 5000 6 PRINT_WITH_NUMBER_BIG REWARD score_ft 6000 1 //6 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_2 CLEAR_PRINTS CLEAR_THIS_PRINT F_PASS1 PRINT_BIG F_PASS1 5000 6 PRINT_WITH_NUMBER_BIG REWARD score_ft 6000 2 //6 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_3 CLEAR_PRINTS CLEAR_THIS_PRINT F_PASS1 PRINT_BIG F_PASS1 5000 6 PRINT_WITH_NUMBER_BIG REWARD score_ft 6000 3 //6 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_4 CLEAR_PRINTS CLEAR_THIS_PRINT F_PASS1 PRINT_BIG F_PASS1 5000 6 PRINT_WITH_NUMBER_BIG REWARD score_ft 6000 4 //6 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_5 CLEAR_PRINTS CLEAR_THIS_PRINT F_PASS1 PRINT_BIG F_PASS1 5000 6 PRINT_WITH_NUMBER_BIG REWARD score_ft 6000 5 //6 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_6 CLEAR_PRINTS CLEAR_THIS_PRINT F_PASS1 PRINT_BIG F_PASS1 5000 6 PRINT_WITH_NUMBER_BIG REWARD score_ft 6000 6 //6 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_7 CLEAR_PRINTS CLEAR_THIS_PRINT F_PASS1 PRINT_BIG F_PASS1 5000 6 PRINT_WITH_NUMBER_BIG REWARD score_ft 6000 7 //6 ENDIF */ //VIEW_INTEGER_VARIABLE fires_needing_extinguishing fires_needed //VIEW_INTEGER_VARIABLE fires_extinguished_this_round fires_got //////////////////////////////// /////////////////////////////// //////////////////////////////// IF fail_firetruck_mission = 1 GOTO failed ENDIF WAIT 0 GET_GAME_TIMER game_timer GOSUB do_cancelled_checks IF fail_firetruck_mission = 1 GOTO failed ENDIF /* IF IS_MESSAGE_BEING_DISPLAYED WRITE_DEBUG yes ELSE WRITE_DEBUG no ENDIF */ IF got_siren_help_before < 2 IF got_siren_help_before = 0 IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED IF NOT IS_MESSAGE_BEING_DISPLAYED IF TIMERA > 1000 PRINT_HELP SPRAY_1 // Use ~m~~widget_vc_shoot~ to fire the water cannon and the camera movement controls to aim the water cannon. got_siren_help_before = 1 ENDIF ELSE TIMERA = 0 ENDIF ENDIF ELSE IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED IF NOT IS_MESSAGE_BEING_DISPLAYED IF TIMERA > 1000 PRINT_HELP SIREN_1 // To turn on this vehicle's sirens press ~m~~widget_horn~. got_siren_help_before = 2 ENDIF ELSE TIMERA = 0 ENDIF ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD onfire_car_1 IF LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer onfire_car_1 50.0 50.0 10.0 FALSE IF fire_collision_loaded_car[0] = 0 SET_LOAD_COLLISION_FOR_CAR_FLAG onfire_car_1 TRUE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION onfire_car_1 FALSE fire_collision_loaded_car[0] = 1 IF db_firetruck_level > 1 IF NOT IS_CHAR_DEAD onfire_ped_1 SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_1 TRUE ENDIF ENDIF IF db_firetruck_level > 2 IF NOT IS_CHAR_DEAD onfire_ped_2 SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_2 TRUE ENDIF ENDIF IF db_firetruck_level > 3 IF NOT IS_CHAR_DEAD onfire_ped_3 SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_3 TRUE ENDIF ENDIF ENDIF ELSE IF fire_collision_loaded_car[0] = 1 SET_LOAD_COLLISION_FOR_CAR_FLAG onfire_car_1 FALSE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION onfire_car_1 TRUE fire_collision_loaded_car[0] = 0 IF db_firetruck_level > 1 IF NOT IS_CHAR_DEAD onfire_ped_1 SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_1 FALSE ENDIF ENDIF IF db_firetruck_level > 2 IF NOT IS_CHAR_DEAD onfire_ped_2 SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_2 FALSE ENDIF ENDIF IF db_firetruck_level > 3 IF NOT IS_CHAR_DEAD onfire_ped_3 SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_3 FALSE ENDIF ENDIF ENDIF ENDIF ENDIF IF db_firetruck_level > 4 IF NOT IS_CAR_DEAD onfire_car_2 IF LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer onfire_car_2 50.0 50.0 10.0 FALSE IF fire_collision_loaded_car[1] = 0 SET_LOAD_COLLISION_FOR_CAR_FLAG onfire_car_2 TRUE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION onfire_car_2 FALSE fire_collision_loaded_car[1] = 1 IF db_firetruck_level > 5 IF NOT IS_CHAR_DEAD onfire_ped_4 SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_4 TRUE ENDIF ENDIF IF db_firetruck_level > 6 IF NOT IS_CHAR_DEAD onfire_ped_5 SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_5 TRUE ENDIF ENDIF IF db_firetruck_level > 7 IF NOT IS_CHAR_DEAD onfire_ped_6 SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_6 TRUE ENDIF ENDIF ENDIF ELSE IF fire_collision_loaded_car[1] = 1 SET_LOAD_COLLISION_FOR_CAR_FLAG onfire_car_2 FALSE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION onfire_car_2 TRUE fire_collision_loaded_car[1] = 0 IF db_firetruck_level > 5 IF NOT IS_CHAR_DEAD onfire_ped_4 SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_4 FALSE ENDIF ENDIF IF db_firetruck_level > 6 IF NOT IS_CHAR_DEAD onfire_ped_5 SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_5 FALSE ENDIF ENDIF IF db_firetruck_level > 7 IF NOT IS_CHAR_DEAD onfire_ped_6 SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_6 FALSE ENDIF ENDIF ENDIF ENDIF ENDIF IF db_firetruck_level > 8 IF NOT IS_CAR_DEAD onfire_car_3 IF LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer onfire_car_3 50.0 50.0 10.0 FALSE IF fire_collision_loaded_car[2] = 0 SET_LOAD_COLLISION_FOR_CAR_FLAG onfire_car_3 TRUE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION onfire_car_3 FALSE IF db_firetruck_level > 9 IF NOT IS_CHAR_DEAD onfire_ped_7 SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_7 TRUE ENDIF ENDIF IF db_firetruck_level > 10 IF NOT IS_CHAR_DEAD onfire_ped_8 SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_8 TRUE ENDIF ENDIF IF db_firetruck_level > 11 IF NOT IS_CHAR_DEAD onfire_ped_9 SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_9 TRUE ENDIF ENDIF fire_collision_loaded_car[2] = 1 ENDIF ELSE IF fire_collision_loaded_car[2] = 1 SET_LOAD_COLLISION_FOR_CAR_FLAG onfire_car_3 FALSE FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION onfire_car_3 TRUE fire_collision_loaded_car[2] = 0 IF db_firetruck_level > 9 IF NOT IS_CHAR_DEAD onfire_ped_7 SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_7 FALSE ENDIF ENDIF IF db_firetruck_level > 10 IF NOT IS_CHAR_DEAD onfire_ped_8 SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_8 FALSE ENDIF ENDIF IF db_firetruck_level > 11 IF NOT IS_CHAR_DEAD onfire_ped_9 SET_LOAD_COLLISION_FOR_CHAR_FLAG onfire_ped_9 FALSE ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF onfire_car = onfire_car_1 onfire_car_fire = onfire_car_1_fire onfire_car_flag = onfire_car_1_flag onfire_car_blip = onfire_car_1_blip car_numer_flag = 1 GOSUB do_fire_on_car_bit onfire_car_1_fire = onfire_car_fire onfire_car_1_flag = onfire_car_flag onfire_car_1_blip = onfire_car_blip IF db_firetruck_level > 1 onfire_ped = onfire_ped_1 onfire_ped_flag = onfire_ped_1_flag onfire_ped_fire = onfire_ped_1_fire onfire_ped_blip = onfire_ped_1_blip GOSUB do_fire_on_ped_bit onfire_ped_1_flag = onfire_ped_flag onfire_ped_1_fire = onfire_ped_fire onfire_ped_1_blip = onfire_ped_blip ENDIF IF db_firetruck_level > 2 onfire_ped = onfire_ped_2 onfire_ped_flag = onfire_ped_2_flag onfire_ped_fire = onfire_ped_2_fire onfire_ped_blip = onfire_ped_2_blip GOSUB do_fire_on_ped_bit onfire_ped_2_flag = onfire_ped_flag onfire_ped_2_fire = onfire_ped_fire onfire_ped_2_blip = onfire_ped_blip ENDIF IF db_firetruck_level > 3 onfire_ped = onfire_ped_3 onfire_ped_flag = onfire_ped_3_flag onfire_ped_fire = onfire_ped_3_fire onfire_ped_blip = onfire_ped_3_blip GOSUB do_fire_on_ped_bit onfire_ped_3_flag = onfire_ped_flag onfire_ped_3_fire = onfire_ped_fire onfire_ped_3_blip = onfire_ped_blip ENDIF IF db_firetruck_level > 4 onfire_car = onfire_car_2 onfire_car_fire = onfire_car_2_fire onfire_car_flag = onfire_car_2_flag onfire_car_blip = onfire_car_2_blip car_numer_flag = 2 GOSUB do_fire_on_car_bit onfire_car_2_fire = onfire_car_fire onfire_car_2_flag = onfire_car_flag onfire_car_2_blip = onfire_car_blip ENDIF IF db_firetruck_level > 5 onfire_ped = onfire_ped_4 onfire_ped_flag = onfire_ped_4_flag onfire_ped_fire = onfire_ped_4_fire onfire_ped_blip = onfire_ped_4_blip GOSUB do_fire_on_ped_bit onfire_ped_4_flag = onfire_ped_flag onfire_ped_4_fire = onfire_ped_fire onfire_ped_4_blip = onfire_ped_blip ENDIF IF db_firetruck_level > 6 onfire_ped = onfire_ped_5 onfire_ped_flag = onfire_ped_5_flag onfire_ped_fire = onfire_ped_5_fire onfire_ped_blip = onfire_ped_5_blip GOSUB do_fire_on_ped_bit onfire_ped_5_flag = onfire_ped_flag onfire_ped_5_fire = onfire_ped_fire onfire_ped_5_blip = onfire_ped_blip ENDIF IF db_firetruck_level > 7 onfire_ped = onfire_ped_6 onfire_ped_flag = onfire_ped_6_flag onfire_ped_fire = onfire_ped_6_fire onfire_ped_blip = onfire_ped_6_blip GOSUB do_fire_on_ped_bit onfire_ped_6_flag = onfire_ped_flag onfire_ped_6_fire = onfire_ped_fire onfire_ped_6_blip = onfire_ped_blip ENDIF IF db_firetruck_level > 8 onfire_car = onfire_car_3 onfire_car_fire = onfire_car_3_fire onfire_car_flag = onfire_car_3_flag onfire_car_blip = onfire_car_3_blip car_numer_flag = 3 GOSUB do_fire_on_car_bit onfire_car_3_fire = onfire_car_fire onfire_car_3_flag = onfire_car_flag onfire_car_3_blip = onfire_car_blip ENDIF IF db_firetruck_level > 9 onfire_ped = onfire_ped_7 onfire_ped_flag = onfire_ped_7_flag onfire_ped_fire = onfire_ped_7_fire onfire_ped_blip = onfire_ped_7_blip GOSUB do_fire_on_ped_bit onfire_ped_7_flag = onfire_ped_flag onfire_ped_7_fire = onfire_ped_fire onfire_ped_7_blip = onfire_ped_blip ENDIF IF db_firetruck_level > 10 onfire_ped = onfire_ped_8 onfire_ped_flag = onfire_ped_8_flag onfire_ped_fire = onfire_ped_8_fire onfire_ped_blip = onfire_ped_8_blip GOSUB do_fire_on_ped_bit onfire_ped_8_flag = onfire_ped_flag onfire_ped_8_fire = onfire_ped_fire onfire_ped_8_blip = onfire_ped_blip ENDIF IF db_firetruck_level > 11 onfire_ped = onfire_ped_9 onfire_ped_flag = onfire_ped_9_flag onfire_ped_fire = onfire_ped_9_fire onfire_ped_blip = onfire_ped_9_blip GOSUB do_fire_on_ped_bit onfire_ped_9_flag = onfire_ped_flag onfire_ped_9_fire = onfire_ped_fire onfire_ped_9_blip = onfire_ped_blip ENDIF IF fires_extinguished_this_round >= fires_needing_extinguishing//firetruck_level GOTO passed ENDIF GOTO firetruck_mission_loop generate_random_fire_coord: WAIT 0 fire_safety_flag = 0 TIMERA = 0 WHILE fire_safety_flag = 0 fire_safety_flag = 1 fire_generating_coords = 1 fire_coord_iterations+= 1.0 /// do_cancelled_checks /// IF NOT IS_CHAR_DEAD scplayer IF NOT IS_CHAR_IN_MODEL scplayer FIRETRUK CLEAR_PRINTS PRINT_NOW F_CANC 3000 1//"Fire truck mission cancelled!" fail_firetruck_mission = 1 ENDIF ELSE fail_firetruck_mission = 1 ENDIF IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL_VIGILANTE WAIT 100 // Workaround for a controller bug. mission_end_button_ft = 1 ENDIF IF mission_end_button_ft = 1 IF NOT IS_BUTTON_PRESSED PAD1 RIGHTSHOCK CLEAR_PRINTS PRINT_NOW F_CANC 3000 1//"Fire truck mission cancelled!" fail_firetruck_mission = 1 ENDIF ENDIF //////////////////////////// IF fail_firetruck_mission = 1 GOTO failed ENDIF GET_CHAR_COORDINATES scplayer dave_player_x dave_player_y dave_player_z fire_dist_multiplier =# db_firetruck_level fire_dist_multiplier *= 60.0 fire_dist_multiplier += fire_coord_iterations IF fire_dist_multiplier < 170.0 fire_dist_multiplier = 170.0 ENDIF dave_generate_x_pos = dave_player_x + fire_dist_multiplier dave_generate_x_neg = dave_player_x - fire_dist_multiplier dave_generate_y_pos = dave_player_y + fire_dist_multiplier dave_generate_y_neg = dave_player_y - fire_dist_multiplier GENERATE_RANDOM_FLOAT_IN_RANGE dave_generate_x_neg dave_generate_x_pos fire_random_x GENERATE_RANDOM_FLOAT_IN_RANGE dave_generate_y_neg dave_generate_y_pos fire_random_y /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// GET_CLOSEST_STRAIGHT_ROAD fire_random_x fire_random_y dave_player_z 10.0 500.0 fire_random_x fire_random_y fire_random_z temp_x temp_y temp_z temp_heading IF fire_random_x = 0.0 IF fire_random_y = 0.0 IF temp_x = 0.0 IF temp_y = 0.0 fire_safety_flag = 0 ENDIF ENDIF ENDIF ENDIF //maybe have check on zones here to force all the cars into the same zone? // IF fire_safety_flag = 1 GET_DISTANCE_BETWEEN_COORDS_3D dave_player_x dave_player_y dave_player_z fire_random_x fire_random_y fire_random_z players_distance_from_fire IF players_distance_from_fire < 140.0 // this distance thing does not seem to activate fire_safety_flag = 0 ENDIF IF fire_first_car_created = 1 IF fire_coord_iterations < 35.0 GET_NAME_OF_ZONE fire_random_x fire_random_y fire_random_z $fire_zone_name2 IF NOT $fire_zone_name2 = $fire_zone_name fire_safety_flag = 0 ENDIF ENDIF ELSE GET_NAME_OF_ZONE fire_random_x fire_random_y fire_random_z $fire_zone_name ENDIF ENDIF IF fire_safety_flag = 1 GET_INT_STAT CITIES_PASSED Return_cities_passed IF Return_cities_passed < 2 // else whole map open IF Return_cities_passed = 0 IF fire_random_x < 78.4427 //south by la AND fire_random_y < -699.5190 fire_safety_flag = 0 ENDIF IF fire_safety_flag = 1 IF fire_random_x < -252.6557 //below jutty out bit west badlands AND fire_random_y < -285.7660 fire_safety_flag = 0 ENDIF IF fire_safety_flag = 1 IF fire_random_x < -948.3447 //west of jutty out bit west badlands fire_safety_flag = 0 ENDIF IF fire_safety_flag = 1 IF fire_random_x > 1473.4481 //below vegas north east badlands AND fire_random_y > 403.7353 fire_safety_flag = 0 ENDIF IF fire_safety_flag = 1 IF fire_random_y > 578.6325 //north of jutty out bit middle north badlands fire_safety_flag = 0 ENDIF IF fire_safety_flag = 1 IF fire_random_x < 837.5551 //northwest from above jutty out bit middle north badlands AND fire_random_y > 347.4097 fire_safety_flag = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF fire_safety_flag = 1 IF Return_cities_passed = 1 //sanfran open IF fire_random_x > 1473.4481 //below vegas north east badlands AND fire_random_y > 403.7353 fire_safety_flag = 0 ENDIF IF fire_safety_flag = 1 IF fire_random_y > 578.6325 //north of jutty out bit middle north badlands AND fire_random_x > -1528.4976 fire_safety_flag = 0 ENDIF IF fire_safety_flag = 1 IF fire_random_x < 837.5551 //northwest from above jutty out bit middle north badlands AND fire_random_x > -1528.4976 AND fire_random_y > 347.4097 fire_safety_flag = 0 ENDIF IF fire_safety_flag = 1 IF fire_random_y > 1380.0 //north of sanfran fire_safety_flag = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ///////////////////////////// // invalid placement areas // ///////////////////////////// //////////////// // LA AIRPORT // //////////////// IF fire_safety_flag = 1 IF fire_random_x < 2150.0 IF fire_random_x > 1970.0 IF fire_random_y < -2274.0 IF fire_random_y > -2670.0 fire_safety_flag = 0 ENDIF ENDIF ENDIF ENDIF IF fire_random_x < 2150.0 IF fire_random_x > 1590.0 IF fire_random_y < -2397.0 IF fire_random_y > -2670.0 fire_safety_flag = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ////////////////////// // SAN FRAN AIRPORT // ////////////////////// IF fire_safety_flag = 1 IF fire_random_x < -1070.0 IF fire_random_x > -1737.0 IF fire_random_y < -185.0 IF fire_random_y > -590.0 fire_safety_flag = 0 ENDIF ENDIF ENDIF ENDIF IF fire_random_x < -1081.0 IF fire_random_x > -1600.0 IF fire_random_y < 415.0 IF fire_random_y > -185.0 fire_safety_flag = 0 ENDIF ENDIF ENDIF ENDIF ENDIF /////////////////// // VEGAS AIRPORT // /////////////////// IF fire_safety_flag = 1 IF fire_random_x < 1733.0 IF fire_random_x > 1500.0 IF fire_random_y < 1702.0 IF fire_random_y > 1529.0 fire_safety_flag = 0 ENDIF ENDIF ENDIF ENDIF /////////////////// ENDIF IF fire_safety_flag = 1 IF db_firetruck_level > 4 GET_DISTANCE_BETWEEN_COORDS_3D car1_x car1_y car1_z fire_random_x fire_random_y fire_random_z temp_distance IF temp_distance < 20.0 fire_safety_flag = 0 ELSE IF db_firetruck_level > 8 GET_DISTANCE_BETWEEN_COORDS_3D car2_x car2_y car2_z fire_random_x fire_random_y fire_random_z temp_distance IF temp_distance < 20.0 fire_safety_flag = 0 ENDIF ENDIF ENDIF ENDIF ENDIF WAIT 0 ENDWHILE IF db_firetruck_level > 4 GET_DISTANCE_BETWEEN_COORDS_3D car1_x car1_y car1_z fire_random_x fire_random_y fire_random_z temp_distance IF db_firetruck_level > 8 /// three cars /// GET_DISTANCE_BETWEEN_COORDS_3D car2_x car2_y car2_z fire_random_x fire_random_y fire_random_z temp_distance temp_distance /= 4.0 players_distance_from_fire += temp_distance ELSE /// two cars /// players_distance_from_fire += temp_distance temp_distance /= 8.0 ENDIF ELSE /// only one car // ENDIF IF db_firetruck_level < 9 fire_time_limit_float = players_distance_from_fire / 8.0 //time_divider //5.5 ELSE fire_time_limit_float = players_distance_from_fire / 10.0 //time_divider //5.5 ENDIF fire_time_limit_float = fire_time_limit_float * 1000.0 intermediate_int =# fire_time_limit_float fire_time_limit += intermediate_int //IF db_fires_extinguished = 0 IF fire_time_limit < 60000 fire_time_limit = 60000 ENDIF //ENDIF fire_generating_coords = 0 fire_coord_iterations = 0.0 RETURN ///////////////////////////////////////////////////////////////////// do_cancelled_checks: ///////////////////////////////////////////////////////////////////// IF displayed_timer = 1 IF fire_time_limit < 1 CLEAR_PRINTS PRINT_NOW F_FAIL2 5000 1 fail_firetruck_mission = 1 RETURN ENDIF ENDIF IF NOT IS_CHAR_DEAD scplayer IF NOT IS_CHAR_IN_MODEL scplayer FIRETRUK CLEAR_PRINTS PRINT_NOW F_CANC 3000 1//"Fire truck mission cancelled!" fail_firetruck_mission = 1 RETURN ENDIF ENDIF IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL_VIGILANTE WAIT 100 // Workaround for a controller bug. mission_end_button_ft = 1 ENDIF IF mission_end_button_ft = 1 IF NOT IS_BUTTON_PRESSED PAD1 RIGHTSHOCK CLEAR_PRINTS PRINT_NOW F_CANC 3000 1//"Fire truck mission cancelled!" fail_firetruck_mission = 1 RETURN ENDIF ENDIF RETURN ///////////////////////////////////////////////////////////////////// do_fire_on_car_bit: ///////////////////////////////////////////////////////////////////// IF NOT onfire_car_flag = 10 IF NOT IS_CAR_DEAD onfire_car car_or_ped_flag = 1 IF DOES_SCRIPT_FIRE_EXIST onfire_car_fire IF NOT IS_SCRIPT_FIRE_EXTINGUISHED onfire_car_fire GET_CAR_HEALTH onfire_car onfire_car_health /* IF car_health_test_timer < game_timer IF onfire_car_health < 700 EXPLODE_CAR onfire_car CLEAR_PRINTS PRINT_NOW F_FAIL2 5000 1 fail_firetruck_mission = 1 RETURN ENDIF ELSE SET_CAR_HEALTH onfire_car 1000 ENDIF */ /*IF onfire_car_flag = 0 // may have to take this out // IF fires_extinguished_this_round = firetruck_level_minus_4 CAR_WANDER_RANDOMLY onfire_car // put this back in SET_CAR_CRUISE_SPEED onfire_car 15.0 SET_CAR_DRIVING_STYLE onfire_car 2 SET_CAR_ONLY_DAMAGED_BY_PLAYER onfire_car TRUE onfire_car_flag = 1 ENDIF ENDIF */ ELSE IF NOT onfire_car_flag = 10 REMOVE_BLIP onfire_car_blip TASK_EVERYONE_LEAVE_CAR onfire_car // put this back in once new compiler is made dave b REMOVE_SCRIPT_FIRE onfire_car_fire INCREMENT_INT_STAT FIRES_EXTINGUISHED 1 IF displayed_counter = 0 DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING db_fires_extinguished COUNTER_DISPLAY_NUMBER 2 F_EXTIN displayed_counter = 1 ENDIF REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE onfire_car_flag = 10 ++ db_fires_extinguished ++ fires_extinguished_this_round ENDIF ENDIF ELSE IF NOT onfire_car_flag = 10 REMOVE_BLIP onfire_car_blip TASK_EVERYONE_LEAVE_CAR onfire_car // put this back in once new compiler is made dave b REMOVE_SCRIPT_FIRE onfire_car_fire INCREMENT_INT_STAT FIRES_EXTINGUISHED 1 IF displayed_counter = 0 DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING db_fires_extinguished COUNTER_DISPLAY_NUMBER 2 F_EXTIN displayed_counter = 1 ENDIF REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE onfire_car_flag = 10 ++ db_fires_extinguished ++ fires_extinguished_this_round ENDIF ENDIF ELSE IF IS_CAR_IN_WATER onfire_car IF NOT onfire_car_flag = 10 REMOVE_BLIP onfire_car_blip TASK_EVERYONE_LEAVE_CAR onfire_car // put this back in once new compiler is made dave b INCREMENT_INT_STAT FIRES_EXTINGUISHED 1 IF displayed_counter = 0 DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING db_fires_extinguished COUNTER_DISPLAY_NUMBER 2 F_EXTIN displayed_counter = 1 ENDIF REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE onfire_car_flag = 10 ++ db_fires_extinguished ++ fires_extinguished_this_round ENDIF ELSE CLEAR_PRINTS PRINT_NOW F_FAIL4 5000 1 //~r~A vehicle has been destroyed. fail_firetruck_mission = 1 RETURN ENDIF ENDIF ELSE // fire has been put out /* IF NOT IS_CAR_PASSENGER_SEAT_FREE closest_hospital 0 GET_CHAR_IN_CAR_PASSENGER_SEAT closest_hospital 0 injured_ped_1 TASK_LEAVE_CAR_IMMEDIATELY injured_ped_1 closest_hospital MARK_CHAR_AS_NO_LONGER_NEEDED injured_ped_1 ENDIF */ ENDIF RETURN ///////////////////////////////////////////////////////////////////// do_fire_on_ped_bit: ///////////////////////////////////////////////////////////////////// IF onfire_ped_flag < 2 IF NOT IS_CHAR_DEAD onfire_ped IF onfire_ped_flag = 0 IF NOT IS_CHAR_IN_ANY_CAR onfire_ped START_CHAR_FIRE onfire_ped onfire_ped_fire GET_CHAR_COORDINATES onfire_ped db_temp_x db_temp_y db_temp_z TASK_FLEE_POINT onfire_ped db_temp_x db_temp_y db_temp_z 20.0 -1 ADD_BLIP_FOR_CHAR onfire_ped onfire_ped_blip SET_BLIP_AS_FRIENDLY onfire_ped_blip TRUE CHANGE_BLIP_DISPLAY onfire_ped_blip BLIP_ONLY onfire_ped_flag = 1 ELSE IF onfire_car_flag = 10 IF IS_CHAR_IN_ANY_CAR onfire_ped GET_SCRIPT_TASK_STATUS onfire_ped TASK_LEAVE_ANY_CAR fire_task_status IF fire_task_status = FINISHED_TASK TASK_LEAVE_ANY_CAR onfire_ped ENDIF ENDIF ENDIF ENDIF ENDIF IF onfire_ped_flag = 1 car_or_ped_flag = 2 IF DOES_SCRIPT_FIRE_EXIST onfire_ped_fire IF IS_SCRIPT_FIRE_EXTINGUISHED onfire_ped_fire REMOVE_SCRIPT_FIRE onfire_ped_fire REMOVE_BLIP onfire_ped_blip INCREMENT_INT_STAT FIRES_EXTINGUISHED 1 IF displayed_counter = 0 DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING db_fires_extinguished COUNTER_DISPLAY_NUMBER 2 F_EXTIN displayed_counter = 1 ENDIF REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE ++ db_fires_extinguished ++ fires_extinguished_this_round onfire_ped_flag = 2 ENDIF ELSE REMOVE_BLIP onfire_ped_blip INCREMENT_INT_STAT FIRES_EXTINGUISHED 1 IF displayed_counter = 0 DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING db_fires_extinguished COUNTER_DISPLAY_NUMBER 2 F_EXTIN displayed_counter = 1 ENDIF REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE ++ db_fires_extinguished ++ fires_extinguished_this_round onfire_ped_flag = 2 ENDIF ENDIF ELSE IF IS_CHAR_IN_WATER onfire_ped IF onfire_ped_flag = 1 REMOVE_SCRIPT_FIRE onfire_ped_fire REMOVE_BLIP onfire_ped_blip INCREMENT_INT_STAT FIRES_EXTINGUISHED 1 IF displayed_counter = 0 DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING db_fires_extinguished COUNTER_DISPLAY_NUMBER 2 F_EXTIN displayed_counter = 1 ENDIF REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE ++ db_fires_extinguished ++ fires_extinguished_this_round onfire_ped_flag = 2 ELSE CLEAR_PRINTS PRINT_NOW F_FAIL2 5000 1 fail_firetruck_mission = 1 RETURN ENDIF ELSE CLEAR_PRINTS PRINT_NOW F_FAIL3 5000 1 //~r~There has been a fatality. fail_firetruck_mission = 1 RETURN ENDIF ENDIF ENDIF RETURN ///////////////////////////////////////////////////////////////////// passed: ///////////////////////////////////////////////////////////////////// FREEZE_ONSCREEN_TIMER TRUE //REGISTER_FIRE_LEVEL firetruck_level REMOVE_ALL_SCRIPT_FIRES REMOVE_BLIP onfire_car_blip REMOVE_BLIP onfire_car_1_blip REMOVE_BLIP onfire_car_2_blip REMOVE_BLIP onfire_car_3_blip REMOVE_BLIP onfire_ped_blip REMOVE_BLIP onfire_ped_1_blip REMOVE_BLIP onfire_ped_2_blip REMOVE_BLIP onfire_ped_3_blip REMOVE_BLIP onfire_ped_4_blip REMOVE_BLIP onfire_ped_5_blip REMOVE_BLIP onfire_ped_6_blip REMOVE_BLIP onfire_ped_7_blip REMOVE_BLIP onfire_ped_8_blip REMOVE_BLIP onfire_ped_9_blip IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer dave_car GET_CAR_HEALTH dave_car players_car_health players_car_health += 150 SET_CAR_HEALTH dave_car players_car_health ENDIF MARK_CAR_AS_NO_LONGER_NEEDED onfire_car_1 IF NOT IS_CAR_DEAD onfire_car_1 SET_CAR_ONLY_DAMAGED_BY_PLAYER onfire_car_1 FALSE ENDIF MARK_CAR_AS_NO_LONGER_NEEDED onfire_car_2 IF NOT IS_CAR_DEAD onfire_car_2 SET_CAR_ONLY_DAMAGED_BY_PLAYER onfire_car_2 FALSE ENDIF MARK_CAR_AS_NO_LONGER_NEEDED onfire_car_3 IF NOT IS_CAR_DEAD onfire_car_3 SET_CAR_ONLY_DAMAGED_BY_PLAYER onfire_car_3 FALSE ENDIF //DELETE_CHAR onfire_ped_1//DEBUG!!!! //DELETE_CHAR onfire_ped_2//DEBUG!!!! //DELETE_CHAR onfire_ped_3//DEBUG!!!! //DELETE_CHAR onfire_ped_4//DEBUG!!!! //DELETE_CHAR onfire_ped_5//DEBUG!!!! //DELETE_CHAR onfire_ped_6//DEBUG!!!! //DELETE_CHAR onfire_ped_7//DEBUG!!!! //DELETE_CHAR onfire_ped_8//DEBUG!!!! //DELETE_CHAR onfire_ped_9//DEBUG!!!! MARK_CHAR_AS_NO_LONGER_NEEDED onfire_ped_1 MARK_CHAR_AS_NO_LONGER_NEEDED onfire_ped_2 MARK_CHAR_AS_NO_LONGER_NEEDED onfire_ped_3 MARK_CHAR_AS_NO_LONGER_NEEDED onfire_ped_4 MARK_CHAR_AS_NO_LONGER_NEEDED onfire_ped_5 MARK_CHAR_AS_NO_LONGER_NEEDED onfire_ped_6 MARK_CHAR_AS_NO_LONGER_NEEDED onfire_ped_7 MARK_CHAR_AS_NO_LONGER_NEEDED onfire_ped_8 MARK_CHAR_AS_NO_LONGER_NEEDED onfire_ped_9 MARK_MODEL_AS_NO_LONGER_NEEDED random_car_model REGISTER_INT_STAT FIREFIGHTER_LEVEL db_firetruck_level ++ db_firetruck_level IF db_firetruck_level = 13 CLEAR_ONSCREEN_TIMER fire_time_limit CLEAR_ONSCREEN_COUNTER db_fires_extinguished CLEAR_ONSCREEN_COUNTER db_firetruck_level CLEAR_THIS_PRINT F_START CLEAR_THIS_PRINT F_STAR1 CLEAR_THIS_PRINT FIRELVL PRINT_BIG F_PASS1 5000 6//5 score_ft = db_firetruck_level * db_firetruck_level score_ft *= 50 total_score += score_ft //PRINT_WITH_NUMBER_BIG REWARD score_ft 6000 6 //ADD_SCORE player1 score_ft score_ft+= 5000 PRINT_WITH_NUMBER_BIG F_COMP1 13450 5000 5 //Fire Fighter missions complete: $~1~ //PRINT_WITH_NUMBER_BIG F_COMP1 5000 5000 5 //Fire Fighter missions complete: $~1~ //ADD_SCORE player1 5000 ADD_SCORE player1 score_ft PLAY_MISSION_PASSED_TUNE 2 IF done_firetruck_progress = 0 WRITE_LOG "UNLOCK_ACHIEVEMENT RESCUE_A_KITTEN_TOO" SHOW_UPDATE_STATS FALSE MAKE_PLAYER_FIRE_PROOF player1 TRUE //CLEAR_HELP //PRINT_HELP_FOREVER FIREPRO PLAYER_MADE_PROGRESS 1 REGISTER_ODDJOB_MISSION_PASSED done_firetruck_progress = 1 ENDIF fail_firetruck_mission = 1 RETURN ELSE PRINT_BIG F_PASS1 5000 6 //5 score_ft = db_firetruck_level * db_firetruck_level score_ft *= 50 total_score += score_ft PRINT_WITH_NUMBER_BIG REWARD score_ft 6000 5 //6 ADD_SCORE player1 score_ft ENDIF GOTO fire_generation_start ///////////////////////////////////////////////////////////////////// failed: ///////////////////////////////////////////////////////////////////// // reset radar mode DISPLAY_RADAR 3 // HACKED RADAR ON CLEAR_ONSCREEN_TIMER fire_time_limit CLEAR_ONSCREEN_COUNTER db_fires_extinguished CLEAR_ONSCREEN_COUNTER db_firetruck_level CLEAR_THIS_PRINT F_START CLEAR_THIS_PRINT F_STAR1 CLEAR_THIS_PRINT FIRELVL //CLEAR_PRINTS IF NOT db_firetruck_level = 13 PRINT_BIG F_FAIL1 5000 5 PRINT_WITH_NUMBER_BIG TSCORE total_score 6000 6 ELSE //PRINT_NOW FIREPRO 6000 1 //PRINT_HELP FIREPRO //"You will never get tired!" //PRINT_WITH_NUMBER_BIG F_COMP1 5000 5000 5 //Fire Fighter missions complete: $~1~ ENDIF SET_WANTED_MULTIPLIER 1.0 REMOVE_BLIP onfire_car_blip REMOVE_BLIP onfire_car_1_blip REMOVE_BLIP onfire_car_2_blip REMOVE_BLIP onfire_car_3_blip REMOVE_BLIP onfire_ped_blip REMOVE_BLIP onfire_ped_1_blip REMOVE_BLIP onfire_ped_2_blip REMOVE_BLIP onfire_ped_3_blip REMOVE_BLIP onfire_ped_4_blip REMOVE_BLIP onfire_ped_5_blip REMOVE_BLIP onfire_ped_6_blip REMOVE_BLIP onfire_ped_7_blip REMOVE_BLIP onfire_ped_8_blip REMOVE_BLIP onfire_ped_9_blip IF NOT db_firetruck_level = 13 IF NOT IS_CHAR_DEAD onfire_ped_1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER onfire_ped_1 FALSE SET_CHAR_HEALTH onfire_ped_1 10 SET_CHAR_PROOFS onfire_ped_1 FALSE FALSE FALSE FALSE FALSE //EXPLODE_CHAR_HEAD onfire_ped_1 ENDIF IF NOT IS_CHAR_DEAD onfire_ped_2 SET_CHAR_ONLY_DAMAGED_BY_PLAYER onfire_ped_2 FALSE SET_CHAR_HEALTH onfire_ped_2 10 SET_CHAR_PROOFS onfire_ped_2 FALSE FALSE FALSE FALSE FALSE //EXPLODE_CHAR_HEAD onfire_ped_2 ENDIF IF NOT IS_CHAR_DEAD onfire_ped_3 SET_CHAR_ONLY_DAMAGED_BY_PLAYER onfire_ped_3 FALSE SET_CHAR_HEALTH onfire_ped_3 10 SET_CHAR_PROOFS onfire_ped_3 FALSE FALSE FALSE FALSE FALSE //EXPLODE_CHAR_HEAD onfire_ped_3 ENDIF IF NOT IS_CHAR_DEAD onfire_ped_4 SET_CHAR_ONLY_DAMAGED_BY_PLAYER onfire_ped_4 FALSE SET_CHAR_HEALTH onfire_ped_4 10 SET_CHAR_PROOFS onfire_ped_4 FALSE FALSE FALSE FALSE FALSE //EXPLODE_CHAR_HEAD onfire_ped_4 ENDIF IF NOT IS_CHAR_DEAD onfire_ped_5 SET_CHAR_ONLY_DAMAGED_BY_PLAYER onfire_ped_5 FALSE SET_CHAR_HEALTH onfire_ped_5 10 SET_CHAR_PROOFS onfire_ped_5 FALSE FALSE FALSE FALSE FALSE //EXPLODE_CHAR_HEAD onfire_ped_5 ENDIF IF NOT IS_CHAR_DEAD onfire_ped_6 SET_CHAR_ONLY_DAMAGED_BY_PLAYER onfire_ped_6 FALSE SET_CHAR_HEALTH onfire_ped_6 10 SET_CHAR_PROOFS onfire_ped_6 FALSE FALSE FALSE FALSE FALSE //EXPLODE_CHAR_HEAD onfire_ped_6 ENDIF IF NOT IS_CHAR_DEAD onfire_ped_7 SET_CHAR_ONLY_DAMAGED_BY_PLAYER onfire_ped_7 FALSE SET_CHAR_HEALTH onfire_ped_7 10 SET_CHAR_PROOFS onfire_ped_7 FALSE FALSE FALSE FALSE FALSE //EXPLODE_CHAR_HEAD onfire_ped_7 ENDIF IF NOT IS_CHAR_DEAD onfire_ped_8 SET_CHAR_ONLY_DAMAGED_BY_PLAYER onfire_ped_8 FALSE SET_CHAR_HEALTH onfire_ped_8 10 SET_CHAR_PROOFS onfire_ped_8 FALSE FALSE FALSE FALSE FALSE //EXPLODE_CHAR_HEAD onfire_ped_8 ENDIF IF NOT IS_CHAR_DEAD onfire_ped_9 SET_CHAR_ONLY_DAMAGED_BY_PLAYER onfire_ped_9 FALSE SET_CHAR_HEALTH onfire_ped_9 10 SET_CHAR_PROOFS onfire_ped_9 FALSE FALSE FALSE FALSE FALSE //EXPLODE_CHAR_HEAD onfire_ped_9 ENDIF IF NOT IS_CAR_DEAD onfire_car_1 SET_CAR_ONLY_DAMAGED_BY_PLAYER onfire_car_1 FALSE SET_CAR_PROOFS onfire_car_1 FALSE FALSE FALSE FALSE FALSE IF IS_CAR_ON_FIRE onfire_car_1 EXPLODE_CAR onfire_car_1 ENDIF ENDIF IF NOT IS_CAR_DEAD onfire_car_2 SET_CAR_ONLY_DAMAGED_BY_PLAYER onfire_car_2 FALSE SET_CAR_PROOFS onfire_car_2 FALSE FALSE FALSE FALSE FALSE IF IS_CAR_ON_FIRE onfire_car_2 EXPLODE_CAR onfire_car_2 ENDIF ENDIF IF NOT IS_CAR_DEAD onfire_car_3 SET_CAR_ONLY_DAMAGED_BY_PLAYER onfire_car_3 FALSE SET_CAR_PROOFS onfire_car_3 FALSE FALSE FALSE FALSE FALSE IF IS_CAR_ON_FIRE onfire_car_3 EXPLODE_CAR onfire_car_3 ENDIF ENDIF ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED onfire_ped_1 MARK_CHAR_AS_NO_LONGER_NEEDED onfire_ped_2 MARK_CHAR_AS_NO_LONGER_NEEDED onfire_ped_3 MARK_CHAR_AS_NO_LONGER_NEEDED onfire_ped_4 MARK_CHAR_AS_NO_LONGER_NEEDED onfire_ped_5 MARK_CHAR_AS_NO_LONGER_NEEDED onfire_ped_6 MARK_CHAR_AS_NO_LONGER_NEEDED onfire_ped_7 MARK_CHAR_AS_NO_LONGER_NEEDED onfire_ped_8 MARK_CHAR_AS_NO_LONGER_NEEDED onfire_ped_9 MARK_CAR_AS_NO_LONGER_NEEDED onfire_car_1 MARK_CAR_AS_NO_LONGER_NEEDED onfire_car_2 MARK_CAR_AS_NO_LONGER_NEEDED onfire_car_3 MARK_MODEL_AS_NO_LONGER_NEEDED random_car_model GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 flag_player_on_fire_mission = 0 CLEAR_ALL_SCRIPT_FIRE_FLAGS //REMOVE_ALL_SCRIPT_FIRES REMOVE_DECISION_MAKER fire_decision MISSION_HAS_FINISHED IF done_firetruck_progress = 1 CLEAR_HELP PRINT_HELP FIREPRO //"You will never get tired!" done_firetruck_progress = 2 SHOW_UPDATE_STATS FALSE START_NEW_SCRIPT switch_update_stats_back_on ENDIF RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ********************************* Copcar oddjob ***************************************** // ***************************************************************************************** // ***************************************************************************************** // Mission start stuff GOSUB mission_start_copcar IF HAS_DEATHARREST_BEEN_EXECUTED PRINT_BIG M_FAIL 5000 1 //"Mission Failed" GOSUB copcar_failed ENDIF GOSUB mission_cleanup_copcar MISSION_END // Variables for mission { //CARS PEDS OBJECTS PICKUPS LVAR_INT players_cop_car LVAR_INT criminal1_car criminal1 criminal1_thug1 criminal1_thug2 criminal1_thug3 LVAR_INT criminal2_car criminal2 criminal2_thug1 criminal2_thug2 criminal2_thug3 LVAR_INT criminal3_car criminal3 criminal3_thug1 criminal3_thug2 criminal3_thug3 LVAR_INT ped //FLAGS COUNTERS TIMERS ETC LVAR_INT copcar_level break_convoy_flag LVAR_INT game_timer_start vigilante_score num_of_followers LVAR_INT copcar_timer game_time_flag copcar_cancelled_flag game_time_present LVAR_INT game_time_difference timer_in_secs mission_end_button cop_time_limit_int LVAR_INT players_cop_car_health timer_on_screen_flag LVAR_INT criminal1_car_stuck_timer_start criminal1_car_stuck_flag LVAR_INT criminal1_dead_flag criminal1_thug1_dead_flag criminal1_thug2_dead_flag criminal1_thug3_dead_flag LVAR_INT criminal1_timera criminal1_team_dead_flag criminal2_in_car_flag LVAR_INT criminal2_car_stuck_timer_start criminal2_car_stuck_flag LVAR_INT criminal2_dead_flag criminal2_thug1_dead_flag criminal2_thug2_dead_flag criminal2_thug3_dead_flag LVAR_INT criminal2_timera criminal2_team_dead_flag criminal3_in_car_flag LVAR_INT criminal3_dead_flag criminal3_thug1_dead_flag criminal3_thug2_dead_flag criminal3_thug3_dead_flag LVAR_INT criminal3_timera criminal3_team_dead_flag lVAR_INT random_car_model LVAR_INT in_copcar_nice_timer //BLIPS LVAR_INT criminal1_blip criminal2_blip criminal3_blip LVAR_INT criminal1_thug1_blip criminal1_thug2_blip criminal1_thug3_blip LVAR_INT criminal2_thug1_blip criminal2_thug2_blip criminal2_thug3_blip LVAR_INT criminal3_thug1_blip criminal3_thug2_blip criminal3_thug3_blip //COORDS MATHS LVAR_FLOAT car1_x car1_y car1_z car2_x car2_y car2_z car3_x car3_y car3_z random_heading LVAR_FLOAT player_dist_from_crim LVAR_FLOAT distance_from_player LVAR_FLOAT criminal1_x criminal1_y LVAR_FLOAT gosub_car_to_slow_x gosub_car_to_slow_y temp_float_x temp_float_y LVAR_FLOAT gosub_target_car_x gosub_target_car_y gosub_car_to_slow_speed LVAR_FLOAT dx dy temp_xy car1_infront_car2 car2_infront_car1 car2_infront_car3 car3_infront_car2 LVAR_FLOAT criminal1_car_x criminal1_car_y criminal2_car_x criminal2_car_y criminal3_car_x criminal3_car_y LVAR_FLOAT forward_x forward_y temp_x temp_y time_bonus_divider wanted_level_multiplier time_bonus_divider_subtractor LVAR_FLOAT criminal1_car_stuck_x criminal1_car_stuck_y criminal1_car_stuck_z criminal1_car_speed LVAR_FLOAT sum_x_y_temp stuck_x stuck_y stuck_z LVAR_INT gosub_stuck_car car_stuck_flag stuck_timer_start gosub_ped LVAR_INT gosub_car_to_slow gosub_target_entity random_int max_passengers game_time LVAR_INT CRIME_TIME_INCREMENT // ****************************************Mission Start************************************ mission_start_copcar: //amount of time to increment after each crime has been completed CRIME_TIME_INCREMENT = 36000 flag_player_on_mission = 1 SCRIPT_NAME copcar WAIT 0 IF done_copcar_progress = 0 REGISTER_MISSION_GIVEN ENDIF LVAR_FLOAT criminal2_x criminal2_y LVAR_FLOAT criminal2_car_stuck_x criminal2_car_stuck_y criminal2_car_stuck_z criminal2_car_speed LVAR_FLOAT criminal3_x criminal3_y LVAR_FLOAT criminal3_car_stuck_x criminal3_car_stuck_y criminal3_car_stuck_z criminal3_car_speed LVAR_INT criminal3_car_stuck_timer_start criminal3_car_stuck_flag LOAD_MISSION_TEXT COPCAR //CLEAR_THIS_BIG_PRINT M_FAIL copcar_level = 0 VAR_INT cop_time_limit cop_time_limit = -100 copcar_cancelled_flag = 0 VAR_INT total_criminals_killed total_criminals_killed = 0 timer_on_screen_flag = 0 mission_end_button = 0 break_convoy_flag = 0 game_timer_start = 0 players_cop_car_health = 0 vigilante_score = 0 num_of_followers = 0 copcar_timer = 0 game_time_flag = 0 game_time_present = 0 game_time_difference = 0 timer_in_secs = 0 cop_time_limit_int = 0 random_car_model = 0 time_bonus_divider = 4.0 time_bonus_divider_subtractor = 0.0 wanted_level_multiplier = 0.9 in_copcar_nice_timer = 0 heading = 0.0 gosub_car_to_slow_speed = 0.0 criminal1_car_stuck_x = 0.0 criminal1_car_stuck_y = 0.0 criminal1_car_stuck_z = 0.0 criminal1_car_speed = 0.0 criminal2_car_stuck_x = 0.0 criminal2_car_stuck_y = 0.0 criminal2_car_stuck_z = 0.0 criminal2_car_speed = 0.0 criminal3_car_stuck_x = 0.0 criminal3_car_stuck_y = 0.0 criminal3_car_stuck_z = 0.0 criminal3_car_speed = 0.0 lvar_int vehicles[91] vehicles[0] = fcr900 //2 - bike vehicles[1] = nrg500 //2 - bike vehicles[2] = pcj600 //2 - bike vehicles[3] = faggio //2 - bike vehicles[4] = freeway //2 - bike vehicles[5] = sanchez //2 - bike vehicles[6] = bf400 //2 - bike vehicles[7] = wayfarer //2 - bike vehicles[8] = infernus //2 - fast vehicles[9] = cheetah //2 - fast vehicles[10] = banshee //2 - fast vehicles[11] = turismo //2 - fast vehicles[12] = zr350 //2 - fast vehicles[13] = comet //2 - fast vehicles[14] = supergt //2 - fast vehicles[15] = bullet //2 - fast vehicles[16] = phoenix //2 - fast vehicles[17] = landstal //2 vehicles[18] = bravura //2 vehicles[19] = buffalo //2 vehicles[20] = manana //2 vehicles[21] = voodoo //2 vehicles[22] = pony //2 vehicles[23] = esperant //2 vehicles[24] = bobcat //2 vehicles[25] = bfinject //2 vehicles[26] = hotknife //2 vehicles[27] = previon //2 vehicles[28] = stallion //2 vehicles[29] = rumpo //2 vehicles[30] = hermes //2 vehicles[31] = sabre //2 vehicles[32] = walton //2 vehicles[33] = burrito //2 vehicles[34] = camper //2 vehicles[35] = rancher //2 vehicles[36] = virgo //2 vehicles[37] = blistac //2 vehicles[38] = mesa //2 vehicles[39] = majestic //2 vehicles[40] = buccanee //2 vehicles[41] = fortune //2 vehicles[42] = cadrona //2 vehicles[43] = feltzer //2 vehicles[44] = remingtn //2 vehicles[45] = slamvan //2 vehicles[46] = blade //2 vehicles[47] = clover //2 vehicles[48] = sadler //2 vehicles[49] = hustler //2 vehicles[50] = tampa //2 vehicles[51] = yosemite //2 vehicles[52] = windsor //2 vehicles[53] = uranus //2 vehicles[54] = jester //2 vehicles[55] = elegy //2 vehicles[56] = flash //2 vehicles[57] = savanna //2 vehicles[58] = broadway //2 vehicles[59] = tornado //2 vehicles[60] = huntley //2 vehicles[61] = euros //2 vehicles[62] = club //2 vehicles[63] = picador //2 vehicles[64] = alpha //2 vehicles[65] = sadlshit //2 vehicles[66] = romero //2 vehicles[67] = peren //4 vehicles[68] = sentinel //4 vehicles[69] = moonbeam //4 vehicles[70] = washing //4 vehicles[71] = premier //4 vehicles[72] = admiral //4 vehicles[73] = solair //4 vehicles[74] = glendale //4 vehicles[75] = oceanic //4 vehicles[76] = regina //4 vehicles[77] = greenwoo //4 vehicles[78] = elegant //4 vehicles[79] = nebula //4 vehicles[80] = willard //4 vehicles[81] = vincent //4 vehicles[82] = intruder //4 vehicles[83] = primo //4 vehicles[84] = sunrise //4 vehicles[85] = merit //4 vehicles[86] = sultan //4 vehicles[87] = stratum //4 vehicles[88] = stafford //4 vehicles[89] = emperor //4 vehicles[90] = glenshit //4 REQUEST_MODEL COLT45 REQUEST_MODEL MICRO_UZI REQUEST_MODEL AK47 REQUEST_MODEL CHROMEGUN REQUEST_MODEL BAT LOAD_ALL_MODELS_NOW WHILE NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED MICRO_UZI OR NOT HAS_MODEL_LOADED AK47 OR NOT HAS_MODEL_LOADED CHROMEGUN WAIT 0 ENDWHILE WHILE NOT HAS_MODEL_LOADED BAT WAIT 0 ENDWHILE //SET_ENTER_CAR_RANGE_MULTIPLIER 6.0 //SET_THREAT_REACTION_RANGE_MULTIPLIER 3.0 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer players_cop_car SET_CAN_BURST_CAR_TYRES players_cop_car FALSE ENDIF lvar_int criminal_decisions COPY_CHAR_DECISION_MAKER -1 criminal_decisions CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE criminal_decisions EVENT_VEHICLE_DAMAGE_WEAPON lvar_int criminal_group_decisions COPY_group_DECISION_MAKER -1 criminal_group_decisions CLEAR_group_DECISION_MAKER_EVENT_RESPONSE criminal_group_decisions EVENT_VEHICLE_DAMAGE_WEAPON next_criminal_to_kill: criminal1_team_dead_flag = 0 criminal2_team_dead_flag = 0 criminal3_team_dead_flag = 0 break_convoy_flag = 0 LVAR_INT criminal1_in_car_flag criminal1_in_car_flag = 0 //WATCH_INTEGER_VARIABLE criminal1_in_car_flag criminal1_in_car_flag criminal1_car_stuck_timer_start = 0 criminal1_car_stuck_flag = 0 criminal1_dead_flag = 0 criminal1_thug1_dead_flag = 0 criminal1_thug2_dead_flag = 0 criminal1_thug3_dead_flag = 0 criminal2_in_car_flag = 0 criminal2_car_stuck_timer_start = 0 criminal2_car_stuck_flag = 0 criminal2_dead_flag = 0 criminal2_thug1_dead_flag = 0 criminal2_thug2_dead_flag = 0 criminal2_thug3_dead_flag = 0 criminal3_in_car_flag = 0 criminal3_car_stuck_timer_start = 0 criminal3_car_stuck_flag = 0 criminal3_dead_flag = 0 criminal3_thug1_dead_flag = 0 criminal3_thug2_dead_flag = 0 criminal3_thug3_dead_flag = 0 car1_infront_car2 = 0.0 car2_infront_car1 = 0.0 car2_infront_car3 = 0.0 car3_infront_car2 = 0.0 LVAR_INT frame_counter frame_counter = 0 GOSUB request_random_car_model //IS_MODEL_IN_CDIMAGE ModelIndex //IS_MODEL_AVAILABLE ModelName lvar_int random_ped_model GENERATE_RANDOM_INT_IN_RANGE 9 255 random_ped_model while random_ped_model = FAM1 or random_ped_model = FAM2 or random_ped_model = FAM3 GENERATE_RANDOM_INT_IN_RANGE 9 255 random_ped_model endwhile while not IS_MODEL_IN_CDIMAGE random_ped_model GENERATE_RANDOM_INT_IN_RANGE 9 255 random_ped_model while random_ped_model = FAM1 or random_ped_model = FAM2 or random_ped_model = FAM3 GENERATE_RANDOM_INT_IN_RANGE 9 255 random_ped_model endwhile endwhile REQUEST_MODEL random_ped_model get_random_car_coords: GOSUB copcar_cancelled_checks IF copcar_cancelled_flag = 1 GOTO copcar_failed ENDIF LVAR_FLOAT x2 y2 GET_CHAR_COORDINATES scplayer player_x player_y z x = player_x - 800.0 //was 700 x2 = player_x + 800.0 GENERATE_RANDOM_FLOAT_IN_RANGE x x2 car1_x y = player_y - 800.0 y2 = player_y + 800.0 GENERATE_RANDOM_FLOAT_IN_RANGE y y2 car1_y car1_z = 10.0 IF copcar_level < 4 GET_CLOSEST_CAR_NODE_WITH_HEADING car1_x car1_y car1_z car1_x car1_y car1_z random_heading car1_z += 0.5 ENDIF IF copcar_level > 3 AND copcar_level < 8 GET_CLOSEST_STRAIGHT_ROAD car1_x car1_y car1_z 8.0 500.0 car1_x car1_y car1_z car2_x car2_y car2_z random_heading IF car1_x = 0.0 AND car1_y = 0.0 AND car2_x = 0.0 AND car2_y = 0.0 WAIT 0 GOTO get_random_car_coords ENDIF //MAKES THE DISTANCE BETWEEN CAR1_XYZ AND CAR2_XYZ EQUAL TO MINLENGTH OF STRAIGHT ROAD (8.0) dx = car2_x - car1_x dy = car2_y - car1_y temp_x = dx * dx temp_y = dy * dy temp_xy = temp_x + temp_y SQRT temp_xy temp_xy sum_x_y_temp = 8.0 / temp_xy temp_x = dx * sum_x_y_temp car2_x = car1_x + temp_x temp_y = dy * sum_x_y_temp car2_y = car1_y + temp_y //BRINGS THE CAR1_XYZ BACK TOWARDS CAR2_XYZ BY 2.0 METERS sum_x_y_temp = 2.0 / temp_xy temp_x = dx * sum_x_y_temp car1_x = car1_x + temp_x temp_y = dy * sum_x_y_temp car1_y = car1_y + temp_y car1_z += 0.5 car2_z += 0.5 ENDIF IF copcar_level > 7 //AND copcar_level < 12 GET_CLOSEST_STRAIGHT_ROAD car1_x car1_y car1_z 13.0 500.0 car1_x car1_y car1_z car3_x car3_y car3_z random_heading IF car1_x = 0.0 AND car1_y = 0.0 AND car3_x = 0.0 AND car3_y = 0.0 WAIT 0 GOTO get_random_car_coords ENDIF //MAKES THE DISTANCE BETWEEN CAR1_XYZ AND CAR3_XYZ EQUAL TO MINLENGTH OF STRAIGHT ROAD (13.0) dx = car3_x - car1_x dy = car3_y - car1_y temp_x = dx * dx temp_y = dy * dy temp_xy = temp_x + temp_y SQRT temp_xy temp_xy sum_x_y_temp = 13.0 / temp_xy temp_x = dx * sum_x_y_temp car3_x = car1_x + temp_x temp_y = dy * sum_x_y_temp car3_y = car1_y + temp_y //BRINGS THE CAR1_XYZ BACK TOWARDS CAR3_XYZ BY 2.0 METERS sum_x_y_temp = 2.0 / temp_xy temp_x = dx * sum_x_y_temp car1_x = car1_x + temp_x temp_y = dy * sum_x_y_temp car1_y = car1_y + temp_y //WORKS OUT THE MIDDLE POINT OF CAR1_XYZ AND CAR3_XYZ car2_x = car1_x - car3_x car2_x = car2_x / 2.0 car2_x = car2_x + car3_x car2_y = car1_y - car3_y car2_y = car2_y / 2.0 car2_y = car2_y + car3_y car2_z = car1_z - car3_z car2_z = car2_z / 2.0 car2_z = car2_z + car3_z car1_z += 0.5 car2_z += 0.5 car3_z += 0.5 ENDIF IF car1_z < 1.0 WAIT 0 GOTO get_random_car_coords ENDIF GET_CHAR_COORDINATES scplayer player_x player_y player_z GET_DISTANCE_BETWEEN_COORDS_2D player_x player_y car1_x car1_y distance_from_player IF distance_from_player < 150.0 OR distance_from_player > 800.0 WAIT 0 GOTO get_random_car_coords ENDIF GET_INT_STAT CITIES_PASSED return_cities_passed IF return_cities_passed = 0 //sanfran not open //if flag_la1fin1_mission_counter < 2 IF car1_x < 78.4427 //south by la AND car1_y < -699.5190 WAIT 0 GOTO get_random_car_coords ENDIF IF car1_x < -252.6557 //below jutty out bit west badlands AND car1_y < -285.7660 WAIT 0 GOTO get_random_car_coords ENDIF IF car1_x < -948.3447 //west of jutty out bit west badlands WAIT 0 GOTO get_random_car_coords ENDIF if car1_x > 1473.4481 //below vegas north east badlands and car1_y > 403.7353 WAIT 0 GOTO get_random_car_coords ENDIF if car1_y > 578.6325 //north of jutty out bit middle north badlands WAIT 0 GOTO get_random_car_coords ENDIF if car1_x < 837.5551 //northwest from above jutty out bit middle north badlands and car1_y > 347.4097 WAIT 0 GOTO get_random_car_coords ENDIF endif IF return_cities_passed < 2 //vegas not open //if flag_synd_mission_counter < 10 if car1_x > 1473.4481 //below vegas north east badlands and car1_y > 403.7353 WAIT 0 GOTO get_random_car_coords ENDIF if car1_y > 578.6325 //north of jutty out bit middle north badlands and car1_x > -1528.4976 WAIT 0 GOTO get_random_car_coords ENDIF if car1_x < 837.5551 //northwest from above jutty out bit middle north badlands and car1_x > -1528.4976 and car1_y > 347.4097 WAIT 0 GOTO get_random_car_coords ENDIF if car1_y > 1380.0 //north of sanfran WAIT 0 GOTO get_random_car_coords ENDIF if car1_x > -2702.7197 //SF bridge and car1_y > 1225.6692 and car1_x < -2663.1455 and car1_y < 1654.8080 wait 0 goto get_random_car_coords endif endif //SF airport if car1_x > -1735.7512 and car1_y > -696.0117 and car1_x < -1192.8174 and car1_y < 286.3584 wait 0 goto get_random_car_coords endif //SF airport if car1_x > -1192.8174 and car1_y > -521.9908 and car1_x < -1125.6556 and car1_y < 536.9476 wait 0 goto get_random_car_coords endif //SF airport if car1_x > -1125.6556 and car1_y > -329.5900 and car1_x < -1020.1886 and car1_y < 536.9476 wait 0 goto get_random_car_coords endif VAR_INT random_seed GENERATE_RANDOM_INT random_seed WHILE random_seed = 0 GENERATE_RANDOM_INT random_seed ENDWHILE WHILE NOT HAS_MODEL_LOADED random_car_model OR NOT HAS_MODEL_LOADED random_ped_model WAIT 0 GOSUB copcar_cancelled_checks IF copcar_cancelled_flag = 1 GOTO copcar_failed ENDIF ENDWHILE CREATE_CAR random_car_model car1_x car1_y car1_z criminal1_car SET_CAR_HEALTH criminal1_car 800 SET_CAR_DRIVING_STYLE criminal1_car 2 if copcar_level > 3 SET_CAR_RANDOM_ROUTE_SEED criminal1_car random_seed endif MARK_CAR_AS_CONVOY_CAR criminal1_car TRUE SET_CAR_HEADING criminal1_car random_heading SET_CAR_AVOID_LEVEL_TRANSITIONS criminal1_car TRUE //SET_LOAD_COLLISION_FOR_CAR_FLAG criminal1_car FALSE WHILE IS_CAR_WAITING_FOR_WORLD_COLLISION criminal1_car WAIT 0 IF IS_CAR_DEAD criminal1_car GOTO copcar_failed ENDIF GOSUB copcar_cancelled_checks IF copcar_cancelled_flag = 1 GOTO copcar_failed ENDIF ENDWHILE CREATE_CHAR_INSIDE_CAR criminal1_car PEDTYPE_MISSION1 random_ped_model criminal1 //POINT_CAMERA_AT_CHAR criminal1 FOLLOWPED JUMP_CUT //BEHINDCAR //SET_CAMERA_BEHIND_PLAYER IF flag_player_on_mission = 0 ADD_BLIP_FOR_COORD x y z criminal1_blip ADD_BLIP_FOR_COORD x y z criminal2_blip ADD_BLIP_FOR_COORD x y z criminal3_blip ADD_BLIP_FOR_COORD x y z criminal1_thug1_blip ADD_BLIP_FOR_COORD x y z criminal1_thug2_blip ADD_BLIP_FOR_COORD x y z criminal1_thug3_blip ADD_BLIP_FOR_COORD x y z criminal2_thug1_blip ADD_BLIP_FOR_COORD x y z criminal2_thug2_blip ADD_BLIP_FOR_COORD x y z criminal2_thug3_blip ADD_BLIP_FOR_COORD x y z criminal3_thug1_blip ADD_BLIP_FOR_COORD x y z criminal3_thug2_blip ADD_BLIP_FOR_COORD x y z criminal3_thug3_blip CREATE_GROUP DEFAULT_TASK_ALLOCATOR_FOLLOW_ANY_MEANS criminal1_group CREATE_GROUP DEFAULT_TASK_ALLOCATOR_FOLLOW_ANY_MEANS criminal2_group CREATE_GROUP DEFAULT_TASK_ALLOCATOR_FOLLOW_ANY_MEANS criminal3_group ENDIF REMOVE_BLIP criminal1_blip ADD_BLIP_FOR_CHAR criminal1 criminal1_blip ped = criminal1 GOSUB setup_ped_threats_etc IF copcar_level > 0 LVAR_INT criminal1_group REMOVE_GROUP criminal1_group CREATE_GROUP DEFAULT_TASK_ALLOCATOR_SIT_IN_LEADER_CAR criminal1_group //CREATE_GROUP DEFAULT_TASK_ALLOCATOR_FOLLOW_ANY_MEANS criminal1_group SET_GROUP_LEADER criminal1_group criminal1 SET_GROUP_DECISION_MAKER criminal1_group criminal_group_decisions CREATE_CHAR_AS_PASSENGER criminal1_car PEDTYPE_MISSION1 random_ped_model 0 criminal1_thug1 REMOVE_BLIP criminal1_thug1_blip ADD_BLIP_FOR_CHAR criminal1_thug1 criminal1_thug1_blip ped = criminal1_thug1 GOSUB setup_ped_threats_etc ELSE criminal1_thug1_dead_flag = 1 ENDIF IF copcar_level > 1 CREATE_CHAR_AS_PASSENGER criminal1_car PEDTYPE_MISSION1 random_ped_model 1 criminal1_thug2 REMOVE_BLIP criminal1_thug2_blip ADD_BLIP_FOR_CHAR criminal1_thug2 criminal1_thug2_blip ped = criminal1_thug2 GOSUB setup_ped_threats_etc ELSE criminal1_thug2_dead_flag = 1 ENDIF IF copcar_level > 2 CREATE_CHAR_AS_PASSENGER criminal1_car PEDTYPE_MISSION1 random_ped_model 2 criminal1_thug3 REMOVE_BLIP criminal1_thug3_blip ADD_BLIP_FOR_CHAR criminal1_thug3 criminal1_thug3_blip ped = criminal1_thug3 GOSUB setup_ped_threats_etc ELSE criminal1_thug3_dead_flag = 1 ENDIF IF copcar_level > 3 CREATE_CAR random_car_model car2_x car2_y car2_z criminal2_car MARK_CAR_AS_CONVOY_CAR criminal2_car TRUE SET_CAR_HEADING criminal2_car random_heading SET_CAR_AVOID_LEVEL_TRANSITIONS criminal2_car TRUE SET_CAR_DRIVING_STYLE criminal2_car 2 SET_CAR_HEALTH criminal2_car 800 SET_CAR_RANDOM_ROUTE_SEED criminal2_car random_seed // SET_LOAD_COLLISION_FOR_CAR_FLAG criminal2_car FALSE WHILE IS_CAR_WAITING_FOR_WORLD_COLLISION criminal2_car WAIT 0 IF IS_CAR_DEAD criminal2_car GOTO copcar_failed ENDIF GOSUB copcar_cancelled_checks IF copcar_cancelled_flag = 1 GOTO copcar_failed ENDIF ENDWHILE CREATE_CHAR_INSIDE_CAR criminal2_car PEDTYPE_MISSION1 random_ped_model criminal2 //POINT_CAMERA_AT_CHAR criminal2 FOLLOWPED JUMP_CUT //BEHINDCAR //SET_CAMERA_BEHIND_PLAYER ped = criminal2 GOSUB setup_ped_threats_etc REMOVE_BLIP criminal2_blip ADD_BLIP_FOR_CHAR criminal2 criminal2_blip ELSE criminal2_team_dead_flag = 1 criminal2_dead_flag = 1 ENDIF IF copcar_level > 4 LVAR_INT criminal2_group REMOVE_GROUP criminal2_group CREATE_GROUP DEFAULT_TASK_ALLOCATOR_SIT_IN_LEADER_CAR criminal2_group //CREATE_GROUP DEFAULT_TASK_ALLOCATOR_FOLLOW_ANY_MEANS criminal2_group SET_GROUP_LEADER criminal2_group criminal2 SET_GROUP_DECISION_MAKER criminal2_group criminal_group_decisions CREATE_CHAR_AS_PASSENGER criminal2_car PEDTYPE_MISSION1 random_ped_model 0 criminal2_thug1 REMOVE_BLIP criminal2_thug1_blip ADD_BLIP_FOR_CHAR criminal2_thug1 criminal2_thug1_blip ped = criminal2_thug1 GOSUB setup_ped_threats_etc ELSE criminal2_thug1_dead_flag = 1 ENDIF IF copcar_level > 5 CREATE_CHAR_AS_PASSENGER criminal2_car PEDTYPE_MISSION1 random_ped_model 1 criminal2_thug2 REMOVE_BLIP criminal2_thug2_blip ADD_BLIP_FOR_CHAR criminal2_thug2 criminal2_thug2_blip ped = criminal2_thug2 GOSUB setup_ped_threats_etc ELSE criminal2_thug2_dead_flag = 1 ENDIF IF copcar_level > 6 CREATE_CHAR_AS_PASSENGER criminal2_car PEDTYPE_MISSION1 random_ped_model 2 criminal2_thug3 REMOVE_BLIP criminal2_thug3_blip ADD_BLIP_FOR_CHAR criminal2_thug3 criminal2_thug3_blip ped = criminal2_thug3 GOSUB setup_ped_threats_etc ELSE criminal2_thug3_dead_flag = 1 ENDIF IF copcar_level > 7 CREATE_CAR random_car_model car3_x car3_y car3_z criminal3_car MARK_CAR_AS_CONVOY_CAR criminal3_car TRUE SET_CAR_HEADING criminal3_car random_heading SET_CAR_AVOID_LEVEL_TRANSITIONS criminal3_car TRUE SET_CAR_DRIVING_STYLE criminal3_car 2 SET_CAR_HEALTH criminal3_car 800 SET_CAR_RANDOM_ROUTE_SEED criminal3_car random_seed // SET_LOAD_COLLISION_FOR_CAR_FLAG criminal3_car FALSE WHILE IS_CAR_WAITING_FOR_WORLD_COLLISION criminal3_car WAIT 0 IF IS_CAR_DEAD criminal3_car GOTO copcar_failed ENDIF GOSUB copcar_cancelled_checks IF copcar_cancelled_flag = 1 GOTO copcar_failed ENDIF ENDWHILE CREATE_CHAR_INSIDE_CAR criminal3_car PEDTYPE_MISSION1 random_ped_model criminal3 //POINT_CAMERA_AT_CHAR criminal3 FOLLOWPED JUMP_CUT //BEHINDCAR //SET_CAMERA_BEHIND_PLAYER ped = criminal3 GOSUB setup_ped_threats_etc REMOVE_BLIP criminal3_blip ADD_BLIP_FOR_CHAR criminal3 criminal3_blip ELSE criminal3_team_dead_flag = 1 criminal3_dead_flag = 1 ENDIF IF copcar_level > 8 LVAR_INT criminal3_group REMOVE_GROUP criminal3_group CREATE_GROUP DEFAULT_TASK_ALLOCATOR_SIT_IN_LEADER_CAR criminal3_group //CREATE_GROUP DEFAULT_TASK_ALLOCATOR_FOLLOW_ANY_MEANS criminal3_group SET_GROUP_LEADER criminal3_group criminal3 SET_GROUP_DECISION_MAKER criminal3_group criminal_group_decisions CREATE_CHAR_AS_PASSENGER criminal3_car PEDTYPE_MISSION1 random_ped_model 0 criminal3_thug1 REMOVE_BLIP criminal3_thug1_blip ADD_BLIP_FOR_CHAR criminal3_thug1 criminal3_thug1_blip ped = criminal3_thug1 GOSUB setup_ped_threats_etc ELSE criminal3_thug1_dead_flag = 1 ENDIF IF copcar_level > 9 CREATE_CHAR_AS_PASSENGER criminal3_car PEDTYPE_MISSION1 random_ped_model 1 criminal3_thug2 REMOVE_BLIP criminal3_thug2_blip ADD_BLIP_FOR_CHAR criminal3_thug2 criminal3_thug2_blip ped = criminal3_thug2 GOSUB setup_ped_threats_etc ELSE criminal3_thug2_dead_flag = 1 ENDIF IF copcar_level > 10 CREATE_CHAR_AS_PASSENGER criminal3_car PEDTYPE_MISSION1 random_ped_model 2 criminal3_thug3 REMOVE_BLIP criminal3_thug3_blip ADD_BLIP_FOR_CHAR criminal3_thug3 criminal3_thug3_blip ped = criminal3_thug3 GOSUB setup_ped_threats_etc ELSE criminal3_thug3_dead_flag = 1 ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED random_car_model MARK_MODEL_AS_NO_LONGER_NEEDED random_ped_model //GOSUB print_text_for_zone_char_is_in if not is_char_dead criminal1 GET_CHAR_COORDINATES criminal1 criminal1_x criminal1_y z endif var_text_label $criminal_zone GET_NAME_OF_ZONE criminal1_x criminal1_y z $criminal_zone if copcar_level = 0 PRINT_STRING_IN_STRING_NOW C_BREIF $criminal_zone 5000 1 // ~r~Suspect ~s~last seen in the vicinity of ~a~. else PRINT_STRING_IN_STRING_NOW C_BREIS $criminal_zone 5000 1 // ~r~Suspects ~s~last seen in the vicinity of ~a~. endif POLICE_RADIO_MESSAGE criminal1_x criminal1_y z GET_CHAR_COORDINATES scplayer player_x player_y player_z x_temp = player_x - criminal1_x y_temp = player_y - criminal1_y x_temp = x_temp * x_temp y_temp = y_temp * y_temp player_dist_from_crim = y_temp + y_temp SQRT player_dist_from_crim player_dist_from_crim if is_char_in_model scplayer HUNTER time_bonus_divider = 8.0 else time_bonus_divider = 4.0 endif time_bonus_divider += time_bonus_divider_subtractor player_dist_from_crim /= time_bonus_divider player_dist_from_crim *= 1000.0 cop_time_limit_int =# player_dist_from_crim IF cop_time_limit_int < 40000 cop_time_limit_int = 40000 ENDIF cop_time_limit += cop_time_limit_int cop_time_limit_int /= 1000 var_int copcar_print_level copcar_print_level = copcar_level + 1 IF timer_on_screen_flag = 1 FORCE_BIG_MESSAGE_AND_COUNTER TRUE PRINT_WITH_NUMBER_BIG A_TIME cop_time_limit_int 4000 1 //+~1~ Seconds ELSE IF cop_time_limit < 45000 cop_time_limit = 45000 ENDIF cop_time_limit += CRIME_TIME_INCREMENT DISPLAY_ONSCREEN_TIMER_WITH_STRING cop_time_limit TIMER_DOWN COPTIME timer_on_screen_flag = 1 DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING copcar_print_level COUNTER_DISPLAY_NUMBER 1 COPLEVL DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING total_criminals_killed COUNTER_DISPLAY_NUMBER 2 KILLS ENDIF GET_GAME_TIMER game_timer criminal1_timera = game_timer criminal2_timera = game_timer criminal3_timera = game_timer IF copcar_level < 13 time_bonus_divider_subtractor += 0.1 ENDIF FREEZE_ONSCREEN_TIMER FALSE copcar_oddjob_loop: WAIT 0 GET_GAME_TIMER game_timer GET_CHAR_COORDINATES scplayer player_x player_y player_z GOSUB copcar_cancelled_checks IF copcar_cancelled_flag = 1 GOTO copcar_failed ENDIF IF criminal1_in_car_flag = -1 OR criminal2_in_car_flag = -1 OR criminal3_in_car_flag = -1 break_convoy_flag = 1 ENDIF ++ frame_counter IF frame_counter > 2 frame_counter = 0 ENDIF ///// ////criminal1 ///// IF frame_counter = 0 IF NOT IS_CHAR_DEAD criminal1 IF IS_CHAR_SITTING_IN_ANY_CAR criminal1 MARK_CAR_AS_NO_LONGER_NEEDED criminal1_car STORE_CAR_CHAR_IS_IN_NO_SAVE criminal1 criminal1_car IF criminal1_in_car_flag = -1 GET_NUMBER_OF_FOLLOWERS criminal1 num_of_followers IF num_of_followers > 0 if DOES_GROUP_EXIST criminal1_group SET_GROUP_DEFAULT_TASK_ALLOCATOR criminal1_group DEFAULT_TASK_ALLOCATOR_SIT_IN_LEADER_CAR endif criminal1_timera = game_timer + 2000 ELSE criminal1_timera = game_timer ENDIF criminal1_in_car_flag = 0 ENDIF IF criminal1_in_car_flag = 0 IF criminal1_timera < game_timer OR criminal1_timera = game_timer SET_CAR_CRUISE_SPEED criminal1_car 100.0 SET_CAR_DRIVING_STYLE criminal1_car 2 //BREAKPOINT car_wander_randomly CAR_WANDER_RANDOMLY criminal1_car criminal1_car_stuck_timer_start = game_timer criminal1_in_car_flag = 1 criminal1_car_stuck_flag = 0 ENDIF ENDIF IF criminal1_in_car_flag > 0 IF IS_CHAR_IN_CAR scplayer criminal1_car GET_SCRIPT_TASK_STATUS criminal1 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal1 scplayer ENDIF ENDIF gosub_stuck_car = criminal1_car car_stuck_flag = criminal1_car_stuck_flag stuck_timer_start = criminal1_car_stuck_timer_start stuck_x = criminal1_car_stuck_x stuck_y = criminal1_car_stuck_y stuck_z = criminal1_car_stuck_z IF criminal1_car_speed > 0.0 GOSUB criminal_car_stuck_checks ENDIF criminal1_car_stuck_flag = car_stuck_flag criminal1_car_stuck_timer_start = stuck_timer_start criminal1_car_stuck_x = stuck_x criminal1_car_stuck_y = stuck_y criminal1_car_stuck_z = stuck_z IF criminal1_car_stuck_flag = -9 GET_SCRIPT_TASK_STATUS criminal1 TASK_FLEE_POINT task_status IF task_status = FINISHED_TASK GET_CHAR_COORDINATES criminal1 x y z TASK_FLEE_POINT criminal1 x y z 15.0 1500 ENDIF criminal1_car_stuck_flag = 0 ENDIF IF NOT IS_CAR_HEALTH_GREATER criminal1_car 251 GET_SCRIPT_TASK_STATUS criminal1 TASK_FLEE_POINT task_status IF task_status = FINISHED_TASK GET_CHAR_COORDINATES criminal1 x y z TASK_FLEE_POINT criminal1 x y z 15.0 1500 ENDIF criminal1_timera = game_timer + 2000 ELSE criminal1_timera = game_timer ENDIF GOSUB criminal1_group_breaking GET_CHAR_COORDINATES criminal1 criminal1_x criminal1_y z x_temp = player_x - criminal1_x // dist = (1_x - 2_x)~2 + (1_y - 2_y)~2 y_temp = player_y - criminal1_y x_temp = x_temp * x_temp y_temp = y_temp * y_temp sum_x_y_temp = x_temp + y_temp SQRT sum_x_y_temp sum_x_y_temp criminal1_car_speed = 1000.0 / sum_x_y_temp IF criminal1_car_speed > 100.0 criminal1_car_speed = 100.0 ENDIF IF criminal1_car_speed < 15.0 criminal1_car_speed = 15.0 ENDIF SET_CAR_CRUISE_SPEED criminal1_car criminal1_car_speed ENDIF ELSE if DOES_GROUP_EXIST criminal1_group SET_GROUP_DEFAULT_TASK_ALLOCATOR criminal1_group DEFAULT_TASK_ALLOCATOR_FOLLOW_ANY_MEANS endif criminal1_in_car_flag = -1 GOSUB criminal1_group_breaking IF game_timer > criminal1_timera IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer criminal1 45.0 45.0 0 IF NOT IS_CHAR_IN_ANY_CAR scplayer GET_SCRIPT_TASK_STATUS criminal1 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal1 scplayer ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer criminal1 30.0 30.0 0 GET_SCRIPT_TASK_STATUS criminal1 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal1 scplayer ENDIF ELSE gosub_ped = criminal1 IF NOT IS_CAR_DEAD criminal1_car IF IS_CAR_HEALTH_GREATER criminal1_car 400 IF LOCATE_CHAR_ANY_MEANS_CAR_2D criminal1 criminal1_car 40.0 40.0 0 GET_SCRIPT_TASK_STATUS criminal1 TASK_ENTER_CAR_AS_DRIVER task_status IF task_status = FINISHED_TASK TASK_ENTER_CAR_AS_DRIVER criminal1 criminal1_car -2 ENDIF ELSE GOSUB criminal_steal_a_car ENDIF ELSE GOSUB criminal_steal_a_car ENDIF ELSE GOSUB criminal_steal_a_car ENDIF ENDIF ENDIF ELSE gosub_ped = criminal1 IF NOT IS_CAR_DEAD criminal1_car IF IS_CAR_HEALTH_GREATER criminal1_car 400 IF LOCATE_CHAR_ANY_MEANS_CAR_2D criminal1 criminal1_car 40.0 40.0 0 GET_SCRIPT_TASK_STATUS criminal1 TASK_ENTER_CAR_AS_DRIVER task_status IF task_status = FINISHED_TASK TASK_ENTER_CAR_AS_DRIVER criminal1 criminal1_car -2 ENDIF ELSE GOSUB criminal_steal_a_car ENDIF ELSE GOSUB criminal_steal_a_car ENDIF ELSE GOSUB criminal_steal_a_car ENDIF ENDIF ENDIF ENDIF ELSE REMOVE_BLIP criminal1_blip MARK_CHAR_AS_NO_LONGER_NEEDED criminal1 criminal1 = -1 IF criminal1_dead_flag = 0 ++ total_criminals_killed INCREMENT_INT_STAT CRIMINALS_CAUGHT 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE criminal1_dead_flag = 1 ENDIF if does_group_exist criminal1_group IF NOT IS_CHAR_DEAD criminal1_thug1 IF NOT IS_GROUP_MEMBER criminal1_thug1 criminal1_group GET_SCRIPT_TASK_STATUS criminal1_thug1 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal1_thug1 scplayer ENDIF ELSE IF IS_GROUP_LEADER criminal1_thug1 criminal1_group criminal1 = criminal1_thug1 criminal1_thug1 = -1 criminal1_dead_flag = 0 criminal1_thug1_dead_flag = 1 criminal1_blip = criminal1_thug1_blip criminal1_thug1_blip = -1 ENDIF ENDIF ELSE remove_blip criminal1_thug1_blip MARK_CHAR_AS_NO_LONGER_NEEDED criminal1_thug1 criminal1_thug1 = -1 ENDIF IF NOT IS_CHAR_DEAD criminal1_thug2 IF NOT IS_GROUP_MEMBER criminal1_thug2 criminal1_group GET_SCRIPT_TASK_STATUS criminal1_thug2 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal1_thug2 scplayer ENDIF ELSE IF IS_GROUP_LEADER criminal1_thug2 criminal1_group criminal1 = criminal1_thug2 criminal1_thug2 = -1 criminal1_dead_flag = 0 criminal1_thug2_dead_flag = 1 criminal1_blip = criminal1_thug2_blip criminal1_thug2_blip = -1 ENDIF ENDIF ELSE remove_blip criminal1_thug2_blip MARK_CHAR_AS_NO_LONGER_NEEDED criminal1_thug2 criminal1_thug2 = -1 ENDIF IF NOT IS_CHAR_DEAD criminal1_thug3 IF NOT IS_GROUP_MEMBER criminal1_thug3 criminal1_group GET_SCRIPT_TASK_STATUS criminal1_thug3 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal1_thug3 scplayer ENDIF ELSE IF IS_GROUP_LEADER criminal1_thug3 criminal1_group criminal1 = criminal1_thug3 criminal1_thug3 = -1 criminal1_dead_flag = 0 criminal1_thug3_dead_flag = 1 criminal1_blip = criminal1_thug3_blip criminal1_thug3_blip = -1 ENDIF ENDIF ELSE remove_blip criminal1_thug3_blip MARK_CHAR_AS_NO_LONGER_NEEDED criminal1_thug3 criminal1_thug3 = -1 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD criminal1_thug1 IF criminal1_thug1_dead_flag = 0 MARK_CHAR_AS_NO_LONGER_NEEDED criminal1_thug1 criminal1_thug1 = -1 REMOVE_BLIP criminal1_thug1_blip ++ total_criminals_killed INCREMENT_INT_STAT CRIMINALS_CAUGHT 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE criminal1_thug1_dead_flag = 1 ENDIF ENDIF IF IS_CHAR_DEAD criminal1_thug2 IF criminal1_thug2_dead_flag = 0 MARK_CHAR_AS_NO_LONGER_NEEDED criminal1_thug2 criminal1_thug2 = -1 REMOVE_BLIP criminal1_thug2_blip ++ total_criminals_killed INCREMENT_INT_STAT CRIMINALS_CAUGHT 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE criminal1_thug2_dead_flag = 1 ENDIF ENDIF IF IS_CHAR_DEAD criminal1_thug3 IF criminal1_thug3_dead_flag = 0 MARK_CHAR_AS_NO_LONGER_NEEDED criminal1_thug3 criminal1_thug3 = -1 REMOVE_BLIP criminal1_thug3_blip ++ total_criminals_killed INCREMENT_INT_STAT CRIMINALS_CAUGHT 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE criminal1_thug3_dead_flag = 1 ENDIF ENDIF IF criminal1_team_dead_flag = 0 IF criminal1_dead_flag = 1 AND criminal1_thug1_dead_flag = 1 AND criminal1_thug2_dead_flag = 1 AND criminal1_thug3_dead_flag = 1 criminal1_team_dead_flag = 1 ENDIF ENDIF ENDIF ///// ////criminal2 ///// IF frame_counter = 1 IF NOT IS_CHAR_DEAD criminal2 IF IS_CHAR_SITTING_IN_ANY_CAR criminal2 MARK_CAR_AS_NO_LONGER_NEEDED criminal2_car STORE_CAR_CHAR_IS_IN_NO_SAVE criminal2 criminal2_car IF criminal2_in_car_flag = -1 GET_NUMBER_OF_FOLLOWERS criminal2 num_of_followers IF num_of_followers > 0 if DOES_GROUP_EXIST criminal2_group SET_GROUP_DEFAULT_TASK_ALLOCATOR criminal2_group DEFAULT_TASK_ALLOCATOR_SIT_IN_LEADER_CAR endif criminal2_timera = game_timer + 2000 ELSE criminal2_timera = game_timer ENDIF criminal2_in_car_flag = 0 ENDIF IF criminal2_in_car_flag = 0 IF game_timer > criminal2_timera SET_CAR_CRUISE_SPEED criminal2_car 100.0 SET_CAR_DRIVING_STYLE criminal2_car 2 IF break_convoy_flag = 0 IF NOT IS_CAR_DEAD criminal1_car CAR_WANDER_RANDOMLY criminal2_car ELSE break_convoy_flag = 1 ENDIF ENDIF IF break_convoy_flag = 1 MARK_CAR_AS_CONVOY_CAR criminal2_car FALSE CAR_WANDER_RANDOMLY criminal2_car ENDIF criminal2_car_stuck_timer_start = game_timer criminal2_in_car_flag = 1 criminal2_car_stuck_flag = 0 ENDIF ENDIF IF criminal2_in_car_flag > 0 IF IS_CHAR_IN_CAR scplayer criminal2_car GET_SCRIPT_TASK_STATUS criminal2 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal2 scplayer ENDIF ENDIF gosub_stuck_car = criminal2_car car_stuck_flag = criminal2_car_stuck_flag stuck_timer_start = criminal2_car_stuck_timer_start stuck_x = criminal2_car_stuck_x stuck_y = criminal2_car_stuck_y stuck_z = criminal2_car_stuck_z IF criminal2_car_speed > 0.0 GOSUB criminal_car_stuck_checks ENDIF criminal2_car_stuck_flag = car_stuck_flag criminal2_car_stuck_timer_start = stuck_timer_start criminal2_car_stuck_x = stuck_x criminal2_car_stuck_y = stuck_y criminal2_car_stuck_z = stuck_z IF criminal2_car_stuck_flag = -9 GET_SCRIPT_TASK_STATUS criminal2 TASK_FLEE_POINT task_status IF task_status = FINISHED_TASK GET_CHAR_COORDINATES criminal2 x y z TASK_FLEE_POINT criminal2 x y z 15.0 1500 ENDIF criminal2_car_stuck_flag = 0 ENDIF IF NOT IS_CAR_HEALTH_GREATER criminal2_car 400 GET_SCRIPT_TASK_STATUS criminal2 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal2 scplayer ENDIF ENDIF IF NOT IS_CAR_HEALTH_GREATER criminal2_car 251 GET_SCRIPT_TASK_STATUS criminal2 TASK_FLEE_POINT task_status IF task_status = FINISHED_TASK GET_CHAR_COORDINATES criminal2 x y z TASK_FLEE_POINT criminal2 x y z 15.0 1500 ENDIF criminal2_timera = game_timer + 2000 ELSE criminal2_timera = game_timer ENDIF GOSUB criminal2_group_breaking GET_CHAR_COORDINATES criminal2 criminal2_x criminal2_y z x_temp = player_x - criminal2_x // dist = (1_x - 2_x)~2 + (1_y - 2_y)~2 y_temp = player_y - criminal2_y x_temp = x_temp * x_temp y_temp = y_temp * y_temp sum_x_y_temp = x_temp + y_temp SQRT sum_x_y_temp sum_x_y_temp criminal2_car_speed = 1000.0 / sum_x_y_temp IF criminal2_car_speed > 100.0 criminal2_car_speed = 100.0 ENDIF IF criminal2_car_speed < 15.0 criminal2_car_speed = 15.0 ENDIF IF break_convoy_flag = 0 IF NOT IS_CAR_DEAD criminal1_car gosub_car_to_slow = criminal2_car gosub_target_entity = criminal1_car GOSUB slow_criminal_if_close criminal2_car_speed = gosub_car_to_slow_speed //THIS BIT OF CODE CHECKS TO SEE IF CAR1 IS INFRONT OF CAR2 GET_CAR_FORWARD_X criminal2_car forward_x GET_CAR_FORWARD_Y criminal2_car forward_y GET_CAR_COORDINATES criminal1_car criminal1_car_x criminal1_car_y z GET_CAR_COORDINATES criminal2_car criminal2_car_x criminal2_car_y z // IF (((forward_x * (car2_x - car1_x)) + (forward_y * (car2_y - car1_y)>) IS GREATER THAN 0.0 CAR IS IN FRONT temp_float_x = criminal2_car_x - criminal1_car_x forward_x = forward_x * temp_float_x temp_float_y = criminal2_car_y - criminal1_car_y forward_y = forward_y * temp_float_y car1_infront_car2 = forward_x + forward_y //THIS BIT OF CODE CHECKS TO SEE IF CAR2 IS INFRONT OF CAR1 GET_CAR_FORWARD_X criminal1_car forward_x GET_CAR_FORWARD_Y criminal1_car forward_y GET_CAR_COORDINATES criminal2_car criminal2_car_x criminal2_car_y z GET_CAR_COORDINATES criminal1_car criminal1_car_x criminal1_car_y z // IF (((forward_x * (car1_x - car2_x)) + (forward_y * (car1_y - car2_y)>) IS GREATER THAN 0.0 CAR IS IN FRONT temp_float_x = criminal1_car_x - criminal2_car_x forward_x = forward_x * temp_float_x temp_float_y = criminal1_car_y - criminal2_car_y forward_y = forward_y * temp_float_y car2_infront_car1 = forward_x + forward_y IF car1_infront_car2 > 0.0// +=INFRONT -=BEHIND IF car2_infront_car1 < 0.0 criminal2_car_speed = 0.0 ENDIF ENDIF ELSE CAR_WANDER_RANDOMLY criminal2_car break_convoy_flag = 1 ENDIF ENDIF IF criminal2_car_speed = 0.0 SET_CAR_TEMP_ACTION criminal2_car TEMPACT_WAIT 17 ELSE SET_CAR_CRUISE_SPEED criminal2_car criminal2_car_speed ENDIF ENDIF ELSE if DOES_GROUP_EXIST criminal2_group SET_GROUP_DEFAULT_TASK_ALLOCATOR criminal2_group DEFAULT_TASK_ALLOCATOR_FOLLOW_ANY_MEANS endif criminal2_in_car_flag = -1 GOSUB criminal2_group_breaking IF game_timer > criminal2_timera IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer criminal2 40.0 40.0 0 IF NOT IS_CHAR_IN_ANY_CAR scplayer GET_SCRIPT_TASK_STATUS criminal2 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal2 scplayer ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer criminal2 25.0 25.0 0 GET_SCRIPT_TASK_STATUS criminal2 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal2 scplayer ENDIF ELSE gosub_ped = criminal2 IF NOT IS_CAR_DEAD criminal2_car IF IS_CAR_HEALTH_GREATER criminal2_car 400 IF LOCATE_CHAR_ANY_MEANS_CAR_2D criminal2 criminal2_car 40.0 40.0 0 GET_SCRIPT_TASK_STATUS criminal2 TASK_ENTER_CAR_AS_DRIVER task_status IF task_status = FINISHED_TASK TASK_ENTER_CAR_AS_DRIVER criminal2 criminal2_car -2 ENDIF ELSE GOSUB criminal_steal_a_car ENDIF ELSE GOSUB criminal_steal_a_car ENDIF ELSE GOSUB criminal_steal_a_car ENDIF ENDIF ENDIF ELSE gosub_ped = criminal2 IF NOT IS_CAR_DEAD criminal2_car IF IS_CAR_HEALTH_GREATER criminal2_car 400 IF LOCATE_CHAR_ANY_MEANS_CAR_2D criminal2 criminal2_car 40.0 40.0 0 GET_SCRIPT_TASK_STATUS criminal2 TASK_ENTER_CAR_AS_DRIVER task_status IF task_status = FINISHED_TASK TASK_ENTER_CAR_AS_DRIVER criminal2 criminal2_car -2 ENDIF ELSE GOSUB criminal_steal_a_car ENDIF ELSE GOSUB criminal_steal_a_car ENDIF ELSE GOSUB criminal_steal_a_car ENDIF ENDIF ENDIF ENDIF ELSE REMOVE_BLIP criminal2_blip MARK_CHAR_AS_NO_LONGER_NEEDED criminal2 criminal2 = -1 IF criminal2_dead_flag = 0 ++ total_criminals_killed INCREMENT_INT_STAT CRIMINALS_CAUGHT 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE criminal2_dead_flag = 1 ENDIF if does_group_exist criminal2_group IF NOT IS_CHAR_DEAD criminal2_thug1 IF NOT IS_GROUP_MEMBER criminal2_thug1 criminal2_group GET_SCRIPT_TASK_STATUS criminal2_thug1 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal2_thug1 scplayer ENDIF ELSE IF IS_GROUP_LEADER criminal2_thug1 criminal2_group criminal2 = criminal2_thug1 criminal2_thug1 = -1 criminal2_dead_flag = 0 criminal2_thug1_dead_flag = 1 criminal2_blip = criminal2_thug1_blip criminal2_thug1_blip = -1 ENDIF ENDIF ELSE remove_blip criminal2_thug1_blip MARK_CHAR_AS_NO_LONGER_NEEDED criminal2_thug1 criminal2_thug1 = -1 ENDIF IF NOT IS_CHAR_DEAD criminal2_thug2 IF NOT IS_GROUP_MEMBER criminal2_thug2 criminal2_group GET_SCRIPT_TASK_STATUS criminal2_thug2 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal2_thug2 scplayer ENDIF ELSE IF IS_GROUP_LEADER criminal2_thug2 criminal2_group criminal2 = criminal2_thug2 criminal2_thug2 = -1 criminal2_dead_flag = 0 criminal2_thug2_dead_flag = 1 criminal2_blip = criminal2_thug2_blip criminal2_thug2_blip = -1 ENDIF ENDIF ELSE remove_blip criminal2_thug2_blip MARK_CHAR_AS_NO_LONGER_NEEDED criminal2_thug2 criminal2_thug2 = -1 ENDIF IF NOT IS_CHAR_DEAD criminal2_thug3 IF NOT IS_GROUP_MEMBER criminal2_thug3 criminal2_group GET_SCRIPT_TASK_STATUS criminal2_thug3 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal2_thug3 scplayer ENDIF ELSE IF IS_GROUP_LEADER criminal2_thug3 criminal2_group criminal2 = criminal2_thug3 criminal2_thug3 = -1 criminal2_dead_flag = 0 criminal2_thug3_dead_flag = 1 criminal2_blip = criminal2_thug3_blip criminal2_thug3_blip = -1 ENDIF ENDIF ELSE remove_blip criminal2_thug3_blip MARK_CHAR_AS_NO_LONGER_NEEDED criminal2_thug3 criminal2_thug3 = -1 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD criminal2_thug1 IF criminal2_thug1_dead_flag = 0 MARK_CHAR_AS_NO_LONGER_NEEDED criminal2_thug1 criminal2_thug1 = -1 REMOVE_BLIP criminal2_thug1_blip ++ total_criminals_killed INCREMENT_INT_STAT CRIMINALS_CAUGHT 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE criminal2_thug1_dead_flag = 1 ENDIF ENDIF IF IS_CHAR_DEAD criminal2_thug2 IF criminal2_thug2_dead_flag = 0 MARK_CHAR_AS_NO_LONGER_NEEDED criminal2_thug2 criminal2_thug2 = -1 REMOVE_BLIP criminal2_thug2_blip ++ total_criminals_killed INCREMENT_INT_STAT CRIMINALS_CAUGHT 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE criminal2_thug2_dead_flag = 1 ENDIF ENDIF IF IS_CHAR_DEAD criminal2_thug3 IF criminal2_thug3_dead_flag = 0 MARK_CHAR_AS_NO_LONGER_NEEDED criminal2_thug3 criminal2_thug3 = -1 REMOVE_BLIP criminal2_thug3_blip ++ total_criminals_killed INCREMENT_INT_STAT CRIMINALS_CAUGHT 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE criminal2_thug3_dead_flag = 1 ENDIF ENDIF IF criminal2_team_dead_flag = 0 IF criminal2_dead_flag = 1 AND criminal2_thug1_dead_flag = 1 AND criminal2_thug2_dead_flag = 1 AND criminal2_thug3_dead_flag = 1 criminal2_team_dead_flag = 1 ENDIF ENDIF ENDIF ///// ////criminal3 ///// IF frame_counter = 2 IF NOT IS_CHAR_DEAD criminal3 IF IS_CHAR_SITTING_IN_ANY_CAR criminal3 MARK_CAR_AS_NO_LONGER_NEEDED criminal3_car STORE_CAR_CHAR_IS_IN_NO_SAVE criminal3 criminal3_car IF criminal3_in_car_flag = -1 GET_NUMBER_OF_FOLLOWERS criminal3 num_of_followers IF num_of_followers > 0 if DOES_GROUP_EXIST criminal3_group SET_GROUP_DEFAULT_TASK_ALLOCATOR criminal3_group DEFAULT_TASK_ALLOCATOR_SIT_IN_LEADER_CAR endif criminal3_timera = game_timer + 2000 ELSE criminal3_timera = game_timer ENDIF criminal3_in_car_flag = 0 ENDIF IF criminal3_in_car_flag = 0 IF game_timer > criminal3_timera SET_CAR_CRUISE_SPEED criminal3_car 100.0 SET_CAR_DRIVING_STYLE criminal3_car 2 IF break_convoy_flag = 0 IF NOT IS_CAR_DEAD criminal2_car CAR_WANDER_RANDOMLY criminal3_car ELSE break_convoy_flag = 1 ENDIF ENDIF IF break_convoy_flag = 1 MARK_CAR_AS_CONVOY_CAR criminal3_car FALSE CAR_WANDER_RANDOMLY criminal3_car ENDIF criminal3_car_stuck_timer_start = game_timer criminal3_in_car_flag = 1 criminal3_car_stuck_flag = 0 ENDIF ENDIF IF criminal3_in_car_flag > 0 IF IS_CHAR_IN_CAR scplayer criminal3_car GET_SCRIPT_TASK_STATUS criminal3 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal3 scplayer ENDIF ENDIF gosub_stuck_car = criminal3_car car_stuck_flag = criminal3_car_stuck_flag stuck_timer_start = criminal3_car_stuck_timer_start stuck_x = criminal3_car_stuck_x stuck_y = criminal3_car_stuck_y stuck_z = criminal3_car_stuck_z IF criminal3_car_speed > 0.0 GOSUB criminal_car_stuck_checks ENDIF criminal3_car_stuck_flag = car_stuck_flag criminal3_car_stuck_timer_start = stuck_timer_start criminal3_car_stuck_x = stuck_x criminal3_car_stuck_y = stuck_y criminal3_car_stuck_z = stuck_z IF criminal3_car_stuck_flag = -9 GET_SCRIPT_TASK_STATUS criminal3 TASK_FLEE_POINT task_status IF task_status = FINISHED_TASK GET_CHAR_COORDINATES criminal3 x y z TASK_FLEE_POINT criminal3 x y z 15.0 1500 ENDIF criminal3_car_stuck_flag = 0 ENDIF IF NOT IS_CAR_HEALTH_GREATER criminal3_car 400 GET_SCRIPT_TASK_STATUS criminal3 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal3 scplayer ENDIF ENDIF IF NOT IS_CAR_HEALTH_GREATER criminal3_car 251 GET_SCRIPT_TASK_STATUS criminal3 TASK_FLEE_POINT task_status IF task_status = FINISHED_TASK GET_CHAR_COORDINATES criminal3 x y z TASK_FLEE_POINT criminal3 x y z 15.0 1500 ENDIF criminal3_timera = game_timer + 2000 ELSE criminal3_timera = game_timer ENDIF GOSUB criminal3_group_breaking GET_CHAR_COORDINATES criminal3 criminal3_x criminal3_y z x_temp = player_x - criminal3_x // dist = (1_x - 2_x)~2 + (1_y - 2_y)~2 y_temp = player_y - criminal3_y x_temp = x_temp * x_temp y_temp = y_temp * y_temp sum_x_y_temp = x_temp + y_temp SQRT sum_x_y_temp sum_x_y_temp criminal3_car_speed = 1000.0 / sum_x_y_temp IF criminal3_car_speed > 100.0 criminal3_car_speed = 100.0 ENDIF IF criminal3_car_speed < 15.0 criminal3_car_speed = 15.0 ENDIF IF break_convoy_flag = 0 IF NOT IS_CAR_DEAD criminal2_car gosub_car_to_slow = criminal3_car gosub_target_entity = criminal2_car GOSUB slow_criminal_if_close criminal3_car_speed = gosub_car_to_slow_speed //THIS BIT OF CODE CHECKS TO SEE IF CAR2 IS INFRONT OF CAR3 GET_CAR_FORWARD_X criminal3_car forward_x GET_CAR_FORWARD_Y criminal3_car forward_y GET_CAR_COORDINATES criminal2_car criminal2_car_x criminal2_car_y z GET_CAR_COORDINATES criminal3_car criminal3_car_x criminal3_car_y z // IF (((forward_x * (car3_x - car2_x)) + (forward_y * (car3_y - car2_y)>) IS GREATER THAN 0.0 CAR IS IN FRONT temp_float_x = criminal3_car_x - criminal2_car_x forward_x = forward_x * temp_float_x temp_float_y = criminal3_car_y - criminal2_car_y forward_y = forward_y * temp_float_y car2_infront_car3 = forward_x + forward_y //THIS BIT OF CODE CHECKS TO SEE IF CAR3 IS INFRONT OF CAR2 GET_CAR_FORWARD_X criminal2_car forward_x GET_CAR_FORWARD_Y criminal2_car forward_y GET_CAR_COORDINATES criminal3_car criminal3_car_x criminal3_car_y z GET_CAR_COORDINATES criminal2_car criminal2_car_x criminal2_car_y z // IF (((forward_x * (car2_x - car3_x)) + (forward_y * (car2_y - car3_y)>) IS GREATER THAN 0.0 CAR IS IN FRONT temp_float_x = criminal2_car_x - criminal3_car_x forward_x = forward_x * temp_float_x temp_float_y = criminal2_car_y - criminal3_car_y forward_y = forward_y * temp_float_y car3_infront_car2 = forward_x + forward_y IF car2_infront_car3 > 0.0// +=INFRONT -=BEHIND IF car3_infront_car2 < 0.0 criminal3_car_speed = 0.0 ENDIF ENDIF ELSE CAR_WANDER_RANDOMLY criminal3_car break_convoy_flag = 1 ENDIF ENDIF IF criminal3_car_speed = 0.0 SET_CAR_TEMP_ACTION criminal3_car TEMPACT_WAIT 17 ELSE SET_CAR_CRUISE_SPEED criminal3_car criminal3_car_speed ENDIF ENDIF ELSE if DOES_GROUP_EXIST criminal3_group SET_GROUP_DEFAULT_TASK_ALLOCATOR criminal3_group DEFAULT_TASK_ALLOCATOR_FOLLOW_ANY_MEANS endif criminal3_in_car_flag = -1 GOSUB criminal3_group_breaking IF game_timer > criminal3_timera IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer criminal3 40.0 40.0 0 IF NOT IS_CHAR_IN_ANY_CAR scplayer GET_SCRIPT_TASK_STATUS criminal3 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal3 scplayer ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer criminal3 25.0 25.0 0 GET_SCRIPT_TASK_STATUS criminal3 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal3 scplayer ENDIF ELSE gosub_ped = criminal3 IF NOT IS_CAR_DEAD criminal3_car IF IS_CAR_HEALTH_GREATER criminal3_car 400 IF LOCATE_CHAR_ANY_MEANS_CAR_2D criminal3 criminal3_car 40.0 40.0 0 GET_SCRIPT_TASK_STATUS criminal3 TASK_ENTER_CAR_AS_DRIVER task_status IF task_status = FINISHED_TASK TASK_ENTER_CAR_AS_DRIVER criminal3 criminal3_car -2 ENDIF ELSE GOSUB criminal_steal_a_car ENDIF ELSE GOSUB criminal_steal_a_car ENDIF ELSE GOSUB criminal_steal_a_car ENDIF ENDIF ENDIF ELSE gosub_ped = criminal3 IF NOT IS_CAR_DEAD criminal3_car IF IS_CAR_HEALTH_GREATER criminal3_car 400 IF LOCATE_CHAR_ANY_MEANS_CAR_2D criminal3 criminal3_car 40.0 40.0 0 GET_SCRIPT_TASK_STATUS criminal3 TASK_ENTER_CAR_AS_DRIVER task_status IF task_status = FINISHED_TASK TASK_ENTER_CAR_AS_DRIVER criminal3 criminal3_car -2 ENDIF ELSE GOSUB criminal_steal_a_car ENDIF ELSE GOSUB criminal_steal_a_car ENDIF ELSE GOSUB criminal_steal_a_car ENDIF ENDIF ENDIF ENDIF ELSE REMOVE_BLIP criminal3_blip MARK_CHAR_AS_NO_LONGER_NEEDED criminal3 criminal3 = -1 IF criminal3_dead_flag = 0 ++ total_criminals_killed INCREMENT_INT_STAT CRIMINALS_CAUGHT 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE criminal3_dead_flag = 1 ENDIF if does_group_exist criminal3_group IF NOT IS_CHAR_DEAD criminal3_thug1 IF NOT IS_GROUP_MEMBER criminal3_thug1 criminal3_group GET_SCRIPT_TASK_STATUS criminal3_thug1 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal3_thug1 scplayer ENDIF ELSE IF IS_GROUP_LEADER criminal3_thug1 criminal3_group criminal3 = criminal3_thug1 criminal3_thug1 = -1 criminal3_dead_flag = 0 criminal3_thug1_dead_flag = 1 criminal3_blip = criminal3_thug1_blip criminal3_thug1_blip = -1 ENDIF ENDIF ELSE remove_blip criminal3_thug1_blip MARK_CHAR_AS_NO_LONGER_NEEDED criminal3_thug1 criminal3_thug1 = -1 ENDIF IF NOT IS_CHAR_DEAD criminal3_thug2 IF NOT IS_GROUP_MEMBER criminal3_thug2 criminal3_group GET_SCRIPT_TASK_STATUS criminal3_thug2 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal3_thug2 scplayer ENDIF ELSE IF IS_GROUP_LEADER criminal3_thug2 criminal3_group criminal3 = criminal3_thug2 criminal3_thug2 = -1 criminal3_dead_flag = 0 criminal3_thug2_dead_flag = 1 criminal3_blip = criminal3_thug2_blip criminal3_thug2_blip = -1 ENDIF ENDIF ELSE remove_blip criminal3_thug2_blip MARK_CHAR_AS_NO_LONGER_NEEDED criminal3_thug2 criminal3_thug2 = -1 ENDIF IF NOT IS_CHAR_DEAD criminal3_thug3 IF NOT IS_GROUP_MEMBER criminal3_thug3 criminal3_group GET_SCRIPT_TASK_STATUS criminal3_thug3 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal3_thug3 scplayer ENDIF ELSE IF IS_GROUP_LEADER criminal3_thug3 criminal3_group criminal3 = criminal3_thug3 criminal3_thug3 = -1 criminal3_dead_flag = 0 criminal3_thug3_dead_flag = 1 criminal3_blip = criminal3_thug3_blip criminal3_thug3_blip = -1 ENDIF ENDIF ELSE remove_blip criminal3_thug3_blip MARK_CHAR_AS_NO_LONGER_NEEDED criminal3_thug3 criminal3_thug3 = -1 ENDIF ENDIF ENDIF IF IS_CHAR_DEAD criminal3_thug1 IF criminal3_thug1_dead_flag = 0 REMOVE_BLIP criminal3_thug1_blip MARK_CHAR_AS_NO_LONGER_NEEDED criminal3_thug1 criminal3_thug1 = -1 ++ total_criminals_killed INCREMENT_INT_STAT CRIMINALS_CAUGHT 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE criminal3_thug1_dead_flag = 1 ENDIF ENDIF IF IS_CHAR_DEAD criminal3_thug2 IF criminal3_thug2_dead_flag = 0 MARK_CHAR_AS_NO_LONGER_NEEDED criminal3_thug2 criminal3_thug2 = -1 REMOVE_BLIP criminal3_thug2_blip ++ total_criminals_killed INCREMENT_INT_STAT CRIMINALS_CAUGHT 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE criminal3_thug2_dead_flag = 1 ENDIF ENDIF IF IS_CHAR_DEAD criminal3_thug3 IF criminal3_thug3_dead_flag = 0 MARK_CHAR_AS_NO_LONGER_NEEDED criminal3_thug3 criminal3_thug3 = -1 REMOVE_BLIP criminal3_thug3_blip ++ total_criminals_killed INCREMENT_INT_STAT CRIMINALS_CAUGHT 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE criminal3_thug3_dead_flag = 1 ENDIF ENDIF IF criminal3_team_dead_flag = 0 IF criminal3_dead_flag = 1 AND criminal3_thug1_dead_flag = 1 AND criminal3_thug2_dead_flag = 1 AND criminal3_thug3_dead_flag = 1 criminal3_team_dead_flag = 1 ENDIF ENDIF ENDIF IF criminal1_team_dead_flag = 1 AND criminal2_team_dead_flag = 1 AND criminal3_team_dead_flag = 1 GOTO mission_copcar_passed ENDIF GOTO copcar_oddjob_loop mission_copcar_passed: REGISTER_inT_STAT VIGILANTE_LEVEL copcar_print_level ++ copcar_level IF IS_CHAR_IN_ANY_POLICE_VEHICLE scplayer OR IS_CHAR_IN_MODEL scplayer HUNTER //or IS_CHAR_IN_MODEL scplayer HYDRA STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer players_cop_car SET_CAN_BURST_CAR_TYRES players_cop_car FALSE GET_CAR_HEALTH players_cop_car players_cop_car_health players_cop_car_health += 100 SET_CAR_HEALTH players_cop_car players_cop_car_health ENDIF MARK_CAR_AS_NO_LONGER_NEEDED criminal1_car MARK_CHAR_AS_NO_LONGER_NEEDED criminal1 MARK_CHAR_AS_NO_LONGER_NEEDED criminal1_thug1 MARK_CHAR_AS_NO_LONGER_NEEDED criminal1_thug2 MARK_CHAR_AS_NO_LONGER_NEEDED criminal1_thug3 MARK_CAR_AS_NO_LONGER_NEEDED criminal2_car MARK_CHAR_AS_NO_LONGER_NEEDED criminal2 MARK_CHAR_AS_NO_LONGER_NEEDED criminal2_thug1 MARK_CHAR_AS_NO_LONGER_NEEDED criminal2_thug2 MARK_CHAR_AS_NO_LONGER_NEEDED criminal2_thug3 MARK_CAR_AS_NO_LONGER_NEEDED criminal3_car MARK_CHAR_AS_NO_LONGER_NEEDED criminal3 MARK_CHAR_AS_NO_LONGER_NEEDED criminal3_thug1 MARK_CHAR_AS_NO_LONGER_NEEDED criminal3_thug2 MARK_CHAR_AS_NO_LONGER_NEEDED criminal3_thug3 REMOVE_BLIP criminal1_blip REMOVE_BLIP criminal2_blip REMOVE_BLIP criminal3_blip REMOVE_BLIP criminal1_thug1_blip REMOVE_BLIP criminal1_thug2_blip REMOVE_BLIP criminal1_thug3_blip REMOVE_BLIP criminal2_thug1_blip REMOVE_BLIP criminal2_thug2_blip REMOVE_BLIP criminal2_thug3_blip REMOVE_BLIP criminal3_thug1_blip REMOVE_BLIP criminal3_thug2_blip REMOVE_BLIP criminal3_thug3_blip REMOVE_GROUP criminal1_group REMOVE_GROUP criminal2_group REMOVE_GROUP criminal3_group vigilante_score = copcar_level * copcar_level vigilante_score *= 50 FORCE_BIG_MESSAGE_AND_COUNTER TRUE PRINT_WITH_NUMBER_BIG C_PASS vigilante_score 5000 4 // THREAT~n~ELIMINATED:~n~~w~$~1~ ADD_SCORE player1 vigilante_score IF done_copcar_progress = 0 IF copcar_level = 12 WRITE_LOG "UNLOCK_ACHIEVEMENT WHAT_THE_CITY_NEEDS" PRINT_HELP C_COMP1 // Vigilante mission level 12 complete: Your max Body Armor increased to 150% PLAYER_MADE_PROGRESS 1 INCREASE_PLAYER_MAX_ARMOUR player1 50 ADD_ARMOUR_TO_CHAR scplayer 150 REGISTER_ODDJOB_MISSION_PASSED PLAY_MISSION_PASSED_TUNE 2 done_copcar_progress = 1 ENDIF ENDIF WHILE NOT IS_CHAR_IN_ANY_POLICE_VEHICLE scplayer AND NOT IS_CHAR_IN_MODEL scplayer HUNTER //and not IS_CHAR_IN_MODEL scplayer HYDRA IF game_time_flag = 0 GET_GAME_TIMER game_timer_start IF cop_time_limit > 60000 copcar_timer = 60000 ELSE copcar_timer = cop_time_limit ENDIF game_time_flag = 1 ENDIF GET_GAME_TIMER game_time_present game_time_difference = game_time_present - game_timer_start copcar_timer -= game_time_difference game_timer_start = game_time_present timer_in_secs = copcar_timer / 1000 IF timer_in_secs < 1 timer_in_secs = 0 IF in_copcar_nice_timer < game_time_present PRINT_NOW C_TIME 3000 1//"Your time as a law enforcer is over!" copcar_cancelled_flag = 1 GOTO copcar_failed ENDIF ELSE in_copcar_nice_timer = game_time_present + 1000 ENDIF IF timer_in_secs > -1 if timer_in_secs = 1 ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE PRINT_WITH_NUMBER_NOW COPCA_T timer_in_secs 200 1 //You have ~1~ seconds to return to the car before the mission ends. else ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE PRINT_WITH_NUMBER_NOW COPCART timer_in_secs 200 1 //You have ~1~ seconds to return to the car before the mission ends. endif ENDIF WAIT 0 ENDWHILE FREEZE_ONSCREEN_TIMER TRUE IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer players_cop_car SET_CAN_BURST_CAR_TYRES players_cop_car FALSE GET_CAR_HEALTH players_cop_car players_cop_car_health players_cop_car_health += 200 SET_CAR_HEALTH players_cop_car players_cop_car_health ENDIF IF copcar_level < 13 wanted_level_multiplier -= 0.075 if wanted_level_multiplier < 0.0 wanted_level_multiplier = 0.0 endif SET_WANTED_MULTIPLIER wanted_level_multiplier ENDIF GOTO next_criminal_to_kill // Mission copcar failed copcar_failed: //PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" //PRINT_NOW C_TIME 3000 1//"Your time as a law enforcer is over!" RETURN // mission cleanup mission_cleanup_copcar: flag_player_on_mission = 0 REMOVE_BLIP criminal1_blip REMOVE_BLIP criminal2_blip REMOVE_BLIP criminal3_blip REMOVE_BLIP criminal1_thug1_blip REMOVE_BLIP criminal1_thug2_blip REMOVE_BLIP criminal1_thug3_blip REMOVE_BLIP criminal2_thug1_blip REMOVE_BLIP criminal2_thug2_blip REMOVE_BLIP criminal2_thug3_blip REMOVE_BLIP criminal3_thug1_blip REMOVE_BLIP criminal3_thug2_blip REMOVE_BLIP criminal3_thug3_blip REMOVE_GROUP criminal1_group REMOVE_GROUP criminal2_group REMOVE_GROUP criminal3_group CLEAR_ONSCREEN_TIMER cop_time_limit CLEAR_ONSCREEN_COUNTER copcar_print_level CLEAR_ONSCREEN_COUNTER total_criminals_killed MARK_MODEL_AS_NO_LONGER_NEEDED random_car_model MARK_MODEL_AS_NO_LONGER_NEEDED random_ped_model MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI MARK_MODEL_AS_NO_LONGER_NEEDED AK47 MARK_MODEL_AS_NO_LONGER_NEEDED CHROMEGUN MARK_MODEL_AS_NO_LONGER_NEEDED BAT GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED RETURN ///////////////////////////////////////////////////////////////////////////// request_random_car_model:// (MUST mark model not needed as soon as used) //// ///////////////////////////////////////////////////////////////////////////// IF copcar_level = 0 GENERATE_RANDOM_INT_IN_RANGE 0 91 random_int if random_int > 7 and random_int < 17 GENERATE_RANDOM_INT_IN_RANGE 0 91 random_int endif ELSE IF copcar_level = 1 GENERATE_RANDOM_INT_IN_RANGE 2 91 random_int if random_int > 7 and random_int < 17 GENERATE_RANDOM_INT_IN_RANGE 2 91 random_int endif ELSE GENERATE_RANDOM_INT_IN_RANGE 67 91 random_int ENDIF ENDIF random_car_model = vehicles[random_int] REQUEST_MODEL random_car_model //////////////////////////////////////////////////////////////////////////// RETURN// random_car_model //////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //select_a_weapon:// PED /////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// // IF NOT IS_PLAYER_IN_ANY_CAR player1 // IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player1 ped 25.0 25.0 0 // GIVE_WEAPON_TO_CHAR ped WEAPONTYPE_SHOTGUN 9999 // RETURN // ENDIF // IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player1 ped 60.0 60.0 0 // GIVE_WEAPON_TO_CHAR ped WEAPONTYPE_AK47 9999//AK47 // RETURN // ENDIF // GIVE_WEAPON_TO_CHAR ped WEAPONTYPE_MICRO_UZI 9999 // RETURN // ENDIF // // IF IS_PLAYER_IN_ANY_CAR player1 // IF NOT LOCATE_PLAYER_ANY_MEANS_CHAR_2D player1 ped 20.0 20.0 0 // IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player1 ped 40.0 40.0 0 // STORE_CAR_PLAYER_IS_IN_NO_SAVE player1 players_cop_car // GET_CAR_SPEED players_cop_car players_cop_car_speed // IF players_cop_car_speed < 18.0 // GIVE_WEAPON_TO_CHAR ped WEAPONTYPE_GRENADE 9999 // RETURN // ENDIF // ENDIF // ENDIF // IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player1 ped 30.0 30.0 0 // GIVE_WEAPON_TO_CHAR ped WEAPONTYPE_SHOTGUN 9999 // RETURN // ELSE // GIVE_WEAPON_TO_CHAR ped WEAPONTYPE_AK47 9999 // RETURN // ENDIF // ENDIF //////////////////////////////////////////////////////////////////////////// //RETURN//////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// slow_criminal_if_close: //////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF gosub_target_entity = -1 GET_CHAR_COORDINATES scplayer gosub_target_car_x gosub_target_car_y temp_float_x ELSE GET_CAR_COORDINATES gosub_target_entity gosub_target_car_x gosub_target_car_y temp_float_x ENDIF GET_CAR_COORDINATES gosub_car_to_slow gosub_car_to_slow_x gosub_car_to_slow_y temp_float_x temp_float_x = gosub_car_to_slow_x - gosub_target_car_x // dist = (1_x - 2_x)~2 + (1_y - 2_y)~2 temp_float_y = gosub_car_to_slow_y - gosub_target_car_y temp_float_x = temp_float_x * temp_float_x temp_float_y = temp_float_y * temp_float_y temp_float_x = temp_float_x + temp_float_y SQRT temp_float_x temp_float_x gosub_car_to_slow_speed = temp_float_x + 3.0 IF gosub_car_to_slow_speed > 100.0 gosub_car_to_slow_speed = 100.0 ENDIF IF gosub_car_to_slow_speed < 0.0 gosub_car_to_slow_speed = 0.0 ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// criminal_steal_a_car: ////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF NOT IS_CHAR_DEAD gosub_ped GET_CHAR_COORDINATES gosub_ped coord_1_x coord_1_y coord_1_z IF heading = 919.9 CREATE_CAR random_car_model coord_1_x coord_1_y coord_1_z car ENDIF IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer gosub_ped 40.0 40.0 0 coord_2_x = coord_1_x + 40.0 coord_2_y = coord_1_y + 40.0 coord_1_x = coord_1_x - 40.0 coord_1_y = coord_1_y - 40.0 MARK_CAR_AS_NO_LONGER_NEEDED car car = -1 GET_RANDOM_CAR_OF_TYPE_IN_AREA coord_1_x coord_1_y coord_2_x coord_2_y -1 car IF car = -1 OR criminal1_car = car GET_SCRIPT_TASK_STATUS gosub_ped TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT gosub_ped scplayer ENDIF ELSE IF IS_CAR_HEALTH_GREATER car 400 GET_NUMBER_OF_FOLLOWERS gosub_ped num_of_followers GET_MAXIMUM_NUMBER_OF_PASSENGERS car max_passengers IF NOT num_of_followers > max_passengers GET_SCRIPT_TASK_STATUS gosub_ped TASK_ENTER_CAR_AS_DRIVER task_status IF task_status = FINISHED_TASK LOCK_CAR_DOORS car CARLOCK_UNLOCKED SET_CAR_CRUISE_SPEED car 0.0 TASK_ENTER_CAR_AS_DRIVER gosub_ped car -2 ENDIF ELSE GET_SCRIPT_TASK_STATUS gosub_ped TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT gosub_ped scplayer ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS gosub_ped TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT gosub_ped scplayer ENDIF MARK_CAR_AS_NO_LONGER_NEEDED car car = -1 ENDIF ENDIF ELSE GET_CLOSEST_CAR_NODE_WITH_HEADING coord_1_x coord_1_y coord_1_z coord_1_x coord_1_y coord_1_z heading IF NOT IS_POINT_ON_SCREEN coord_1_x coord_1_y coord_1_z 3.0 IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY coord_1_x coord_1_y coord_1_z 3.0 3.0 2.0 IF HAS_MODEL_LOADED random_car_model GET_SCRIPT_TASK_STATUS gosub_ped TASK_ENTER_CAR_AS_DRIVER task_status IF task_status = FINISHED_TASK MARK_CAR_AS_NO_LONGER_NEEDED car CREATE_CAR random_car_model coord_1_x coord_1_y coord_1_z car IF IS_CAR_HEALTH_GREATER car 800 SET_CAR_HEALTH car 800 ENDIF // SET_CAR_DRIVING_STYLE car 2 // SET_CAR_AVOID_LEVEL_TRANSITIONS car TRUE // SET_LOAD_COLLISION_FOR_CAR_FLAG car FALSE SET_CAR_HEADING car heading TASK_ENTER_CAR_AS_DRIVER gosub_ped car -2 ENDIF ENDIF ELSE IF LOCATE_CHAR_ON_FOOT_3D gosub_ped coord_1_x coord_1_y coord_1_z 3.0 3.0 2.0 0 GET_SCRIPT_TASK_STATUS gosub_ped TASK_GO_STRAIGHT_TO_COORD task_status IF task_status = FINISHED_TASK GET_CLOSEST_CHAR_NODE coord_1_x coord_1_y coord_1_z coord_1_x coord_1_y coord_1_z TASK_GO_STRAIGHT_TO_COORD gosub_ped coord_1_x coord_1_y coord_1_z PEDMOVE_RUN -2 ENDIF ENDIF ENDIF ENDIF ENDIF //ELSE // BREAKPOINT gosub_ped_is_dead ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// criminal_car_stuck_checks:////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// GET_GAME_TIMER game_time GET_AREA_VISIBLE temp_integer_1 if temp_integer_1 = 0 IF NOT IS_CAR_DEAD gosub_stuck_car IF IS_CAR_UPSIDEDOWN gosub_stuck_car AND IS_CAR_STOPPED gosub_stuck_car break_convoy_flag = 1 IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer gosub_stuck_car 90.0 90.0 0 SET_UPSIDEDOWN_CAR_NOT_DAMAGED gosub_stuck_car FALSE car_stuck_flag = -9 ELSE IF NOT IS_CAR_ON_SCREEN gosub_stuck_car GET_CAR_COORDINATES gosub_stuck_car coord_c1_x coord_c1_y coord_c1_z GET_CLOSEST_CAR_NODE_WITH_HEADING coord_c1_x coord_c1_y coord_c1_z coord_c1_x coord_c1_y coord_c1_z heading IF NOT IS_POINT_ON_SCREEN coord_c1_x coord_c1_y coord_c1_z 4.0 SET_CAR_COORDINATES gosub_stuck_car coord_c1_x coord_c1_y coord_c1_z SET_CAR_HEADING gosub_stuck_car heading ENDIF ENDIF ENDIF ENDIF IF LOCATE_CAR_3D gosub_stuck_car stuck_x stuck_y stuck_z 4.0 4.0 4.0 0 IF car_stuck_flag = 0 stuck_timer_start = game_time car_stuck_flag = 1 ENDIF game_time = game_time - stuck_timer_start IF car_stuck_flag = 1 IF game_time > 8000 IF LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer gosub_stuck_car 90.0 90.0 0 SET_UPSIDEDOWN_CAR_NOT_DAMAGED gosub_stuck_car FALSE //stuck_timer_start = game_time GET_GAME_TIMER stuck_timer_start car_stuck_flag = -9 ELSE IF NOT IS_CAR_ON_SCREEN gosub_stuck_car GET_CAR_COORDINATES gosub_stuck_car coord_c1_x coord_c1_y coord_c1_z GET_CLOSEST_CAR_NODE_WITH_HEADING coord_c1_x coord_c1_y coord_c1_z coord_c1_x coord_c1_y coord_c1_z heading IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY coord_c1_x coord_c1_y coord_c1_z 4.0 4.0 4.0 IF NOT IS_POINT_ON_SCREEN coord_c1_x coord_c1_y coord_c1_z 4.0 SET_CAR_COORDINATES gosub_stuck_car coord_c1_x coord_c1_y coord_c1_z SET_CAR_HEADING gosub_stuck_car heading //stuck_timer_start = game_time GET_GAME_TIMER stuck_timer_start car_stuck_flag = 0 break_convoy_flag = 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT LOCATE_CAR_3D gosub_stuck_car stuck_x stuck_y stuck_z 4.0 4.0 4.0 0 GET_CAR_COORDINATES gosub_stuck_car stuck_x stuck_y stuck_z car_stuck_flag = 0 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// GET_GAME_TIMER game_timer return return return //////////////////////////////////////////////////////////////////////////// criminal1_group_breaking://////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF NOT IS_CHAR_DEAD criminal1 if does_group_exist criminal1_group IF NOT IS_CHAR_DEAD criminal1_thug1 IF NOT IS_GROUP_MEMBER criminal1_thug1 criminal1_group IF LOCATE_CHAR_ANY_MEANS_CHAR_2D criminal1_thug1 criminal1 30.0 30.0 0 //BREAKPOINT SET_GROUP_MEMBER_criminal1_thug1 SET_GROUP_MEMBER criminal1_group criminal1_thug1 ELSE GET_SCRIPT_TASK_STATUS criminal1_thug1 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal1_thug1 scplayer ENDIF ENDIF ENDIF ELSE MARK_CHAR_AS_NO_LONGER_NEEDED criminal1_thug1 criminal1_thug1 = -1 ENDIF IF NOT IS_CHAR_DEAD criminal1_thug2 IF NOT IS_GROUP_MEMBER criminal1_thug2 criminal1_group IF LOCATE_CHAR_ANY_MEANS_CHAR_2D criminal1_thug2 criminal1 30.0 30.0 0 SET_GROUP_MEMBER criminal1_group criminal1_thug2 ELSE GET_SCRIPT_TASK_STATUS criminal1_thug2 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal1_thug2 scplayer ENDIF ENDIF ENDIF ELSE MARK_CHAR_AS_NO_LONGER_NEEDED criminal1_thug2 criminal1_thug2 = -1 ENDIF IF NOT IS_CHAR_DEAD criminal1_thug3 IF NOT IS_GROUP_MEMBER criminal1_thug3 criminal1_group IF LOCATE_CHAR_ANY_MEANS_CHAR_2D criminal1_thug3 criminal1 30.0 30.0 0 SET_GROUP_MEMBER criminal1_group criminal1_thug3 ELSE GET_SCRIPT_TASK_STATUS criminal1_thug3 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal1_thug3 scplayer ENDIF ENDIF ENDIF ELSE MARK_CHAR_AS_NO_LONGER_NEEDED criminal1_thug3 criminal1_thug3 = -1 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// criminal2_group_breaking://////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF NOT IS_CHAR_DEAD criminal2 if does_group_exist criminal2_group IF NOT IS_CHAR_DEAD criminal2_thug1 IF NOT IS_GROUP_MEMBER criminal2_thug1 criminal2_group IF LOCATE_CHAR_ANY_MEANS_CHAR_2D criminal2_thug1 criminal2 30.0 30.0 0 SET_GROUP_MEMBER criminal2_group criminal2_thug1 ELSE GET_SCRIPT_TASK_STATUS criminal2_thug1 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal2_thug1 scplayer ENDIF ENDIF ENDIF ELSE MARK_CHAR_AS_NO_LONGER_NEEDED criminal2_thug1 criminal2_thug1 = -1 ENDIF IF NOT IS_CHAR_DEAD criminal2_thug2 IF NOT IS_GROUP_MEMBER criminal2_thug2 criminal2_group IF LOCATE_CHAR_ANY_MEANS_CHAR_2D criminal2_thug2 criminal2 30.0 30.0 0 SET_GROUP_MEMBER criminal2_group criminal2_thug2 ELSE GET_SCRIPT_TASK_STATUS criminal2_thug2 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal2_thug2 scplayer ENDIF ENDIF ENDIF ELSE MARK_CHAR_AS_NO_LONGER_NEEDED criminal2_thug2 criminal2_thug2 = -1 ENDIF IF NOT IS_CHAR_DEAD criminal2_thug3 IF NOT IS_GROUP_MEMBER criminal2_thug3 criminal2_group IF LOCATE_CHAR_ANY_MEANS_CHAR_2D criminal2_thug3 criminal2 30.0 30.0 0 SET_GROUP_MEMBER criminal2_group criminal2_thug3 ELSE GET_SCRIPT_TASK_STATUS criminal2_thug3 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal2_thug3 scplayer ENDIF ENDIF ENDIF ELSE MARK_CHAR_AS_NO_LONGER_NEEDED criminal2_thug3 criminal2_thug3 = -1 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// criminal3_group_breaking://////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF NOT IS_CHAR_DEAD criminal3 if does_group_exist criminal3_group IF NOT IS_CHAR_DEAD criminal3_thug1 IF NOT IS_GROUP_MEMBER criminal3_thug1 criminal3_group IF LOCATE_CHAR_ANY_MEANS_CHAR_2D criminal3_thug1 criminal3 30.0 30.0 0 SET_GROUP_MEMBER criminal3_group criminal3_thug1 ELSE GET_SCRIPT_TASK_STATUS criminal3_thug1 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal3_thug1 scplayer ENDIF ENDIF ENDIF ELSE MARK_CHAR_AS_NO_LONGER_NEEDED criminal3_thug1 criminal3_thug1 = -1 ENDIF IF NOT IS_CHAR_DEAD criminal3_thug2 IF NOT IS_GROUP_MEMBER criminal3_thug2 criminal3_group IF LOCATE_CHAR_ANY_MEANS_CHAR_2D criminal3_thug2 criminal3 30.0 30.0 0 SET_GROUP_MEMBER criminal3_group criminal3_thug2 ELSE GET_SCRIPT_TASK_STATUS criminal3_thug2 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal3_thug2 scplayer ENDIF ENDIF ENDIF ELSE MARK_CHAR_AS_NO_LONGER_NEEDED criminal3_thug2 criminal3_thug2 = -1 ENDIF IF NOT IS_CHAR_DEAD criminal3_thug3 IF NOT IS_GROUP_MEMBER criminal3_thug3 criminal3_group IF LOCATE_CHAR_ANY_MEANS_CHAR_2D criminal3_thug3 criminal3 30.0 30.0 0 SET_GROUP_MEMBER criminal3_group criminal3_thug3 ELSE GET_SCRIPT_TASK_STATUS criminal3_thug3 TASK_KILL_CHAR_ON_FOOT task_status IF task_status = FINISHED_TASK TASK_KILL_CHAR_ON_FOOT criminal3_thug3 scplayer ENDIF ENDIF ENDIF ELSE MARK_CHAR_AS_NO_LONGER_NEEDED criminal3_thug3 criminal3_thug3 = -1 ENDIF ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //print_text_for_zone_char_is_in:///////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //IF NOT IS_CHAR_DEAD criminal1 // // IF IS_CHAR_IN_ZONE criminal1 VICE_C // PRINT_STRING_IN_STRING_NOW C_BREIF VICE_C 5000 1 // The criminal is proceeding south in Vice City // ENDIF // // IF IS_CHAR_IN_ZONE criminal1 BEACH1 // PRINT_STRING_IN_STRING_NOW C_BREIF BEACH1 5000 1 // The criminal is proceeding south in Ocean Beach // ENDIF // // IF IS_CHAR_IN_ZONE criminal1 BEACH2 // PRINT_STRING_IN_STRING_NOW C_BREIF BEACH2 5000 1 // The criminal is proceeding south in Washington Beach // ENDIF // // IF IS_CHAR_IN_ZONE criminal1 BEACH3 // PRINT_STRING_IN_STRING_NOW C_BREIF BEACH3 5000 1 // The criminal is proceeding south in Vice Point // ENDIF // // IF IS_CHAR_IN_ZONE criminal1 GOLFC // PRINT_STRING_IN_STRING_NOW C_BREIF GOLFC 5000 1 // The criminal is proceeding south in Leaf Links // ENDIF // // IF IS_CHAR_IN_ZONE criminal1 STARI // PRINT_STRING_IN_STRING_NOW C_BREIF STARI 5000 1 // The criminal is proceeding south in Starfish Island // ENDIF // // IF IS_CHAR_IN_ZONE criminal1 DOCKS // PRINT_STRING_IN_STRING_NOW C_BREIF DOCKS 5000 1 // The criminal is proceeding south in ViceporT // ENDIF // // IF IS_CHAR_IN_ZONE criminal1 HAVANA // PRINT_STRING_IN_STRING_NOW C_BREIF HAVANA 5000 1 // The criminal is proceeding south in Little Havana // ENDIF // // IF IS_CHAR_IN_ZONE criminal1 HAITI // PRINT_STRING_IN_STRING_NOW C_BREIF HAITI 5000 1 // The criminal is proceeding south in Little Haiti // ENDIF // // IF IS_CHAR_IN_ZONE criminal1 PORNI // PRINT_STRING_IN_STRING_NOW C_BREIF PORNI 5000 1 // The criminal is proceeding south in Prawn Island // ENDIF // // IF IS_CHAR_IN_ZONE criminal1 DTOWN // PRINT_STRING_IN_STRING_NOW C_BREIF DTOWN 5000 1 // The criminal is proceeding south in Downtown // ENDIF // // IF IS_CHAR_IN_ZONE criminal1 A_PORT // PRINT_STRING_IN_STRING_NOW C_BREIF A_PORT 5000 1 // The criminal is proceeding south in Escobar International // ENDIF //ENDIF //////////////////////////////////////////////////////////////////////////// //RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// setup_ped_threats_etc:////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// SET_CHAR_DECISION_MAKER ped criminal_decisions SET_CHAR_IS_CHRIS_CRIMINAL ped TRUE SET_CHAR_ONLY_DAMAGED_BY_PLAYER ped TRUE SET_CHAR_FORCE_DIE_IN_CAR ped TRUE SET_CHAR_RELATIONSHIP ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1 SET_CHAR_RELATIONSHIP ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_CIVMALE SET_CHAR_RELATIONSHIP ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_CIVFEMALE SET_CHAR_RELATIONSHIP ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_COP SET_CHAR_RELATIONSHIP ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT SET_CHAR_RELATIONSHIP ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_GROVE SET_CHAR_RELATIONSHIP ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_SMEX SET_CHAR_RELATIONSHIP ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_NMEX SET_CHAR_RELATIONSHIP ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_VIET SET_CHAR_RELATIONSHIP ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_TRIAD SET_CHAR_RELATIONSHIP ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_MAFIA SET_CHAR_RELATIONSHIP ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_DEALER SET_CHAR_RELATIONSHIP ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_MEDIC SET_CHAR_RELATIONSHIP ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_FIRE SET_CHAR_RELATIONSHIP ped ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_BUM IF copcar_level = 0 GENERATE_RANDOM_INT_IN_RANGE 0 2 random_int ENDIF IF copcar_level > 1 GENERATE_RANDOM_INT_IN_RANGE 0 3 random_int ENDIF IF copcar_level > 4 GENERATE_RANDOM_INT_IN_RANGE 0 4 random_int ENDIF IF copcar_level > 6 GENERATE_RANDOM_INT_IN_RANGE 0 5 random_int ENDIF IF copcar_level > 8 GENERATE_RANDOM_INT_IN_RANGE 0 6 random_int ENDIF IF random_int = 0 GENERATE_RANDOM_INT_IN_RANGE 10 13 random_int IF random_int = 10 GIVE_WEAPON_TO_CHAR ped WEAPONTYPE_BASEBALLBAT 9999 ENDIF IF random_int = 11 GIVE_WEAPON_TO_CHAR ped WEAPONTYPE_BASEBALLBAT 9999 ENDIF ENDIF IF random_int = 1 GIVE_WEAPON_TO_CHAR ped WEAPONTYPE_PISTOL 9999 ENDIF IF random_int = 2 GIVE_WEAPON_TO_CHAR ped WEAPONTYPE_MICRO_UZI 9999 ENDIF IF random_int = 3 GIVE_WEAPON_TO_CHAR ped WEAPONTYPE_AK47 9999 ENDIF IF random_int = 4 OR random_int = 5 GIVE_WEAPON_TO_CHAR ped WEAPONTYPE_SHOTGUN 9999 ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// copcar_cancelled_checks://////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// IF NOT cop_time_limit = -100 IF cop_time_limit < 1 copcar_cancelled_flag = 1 PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" PRINT_NOW C_TIME 3000 1//"Your time as a law enforcer is over!" RETURN ENDIF ENDIF IF NOT IS_CHAR_IN_ANY_POLICE_VEHICLE scplayer AND NOT IS_CHAR_IN_MODEL scplayer HUNTER //and not IS_CHAR_IN_MODEL scplayer HYDRA FREEZE_ONSCREEN_TIMER FALSE IF game_time_flag = 0 GET_GAME_TIMER game_timer_start IF cop_time_limit > 60000 copcar_timer = 60000 ELSE copcar_timer = cop_time_limit ENDIF game_time_flag = 1 ENDIF GET_GAME_TIMER game_time_present game_time_difference = game_time_present - game_timer_start copcar_timer -= game_time_difference game_timer_start = game_time_present timer_in_secs = copcar_timer / 1000 IF timer_in_secs < 1 timer_in_secs = 0 IF in_copcar_nice_timer < game_time_present PRINT_NOW C_TIME 3000 1//"Your time as a law enforcer is over!" copcar_cancelled_flag = 1 RETURN ENDIF ELSE in_copcar_nice_timer = game_time_present + 1000 ENDIF IF timer_in_secs > -1 if timer_in_secs = 1 ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE PRINT_WITH_NUMBER_NOW COPCA_T timer_in_secs 200 1 //You have ~1~ seconds to return to the car before the mission ends. else ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE PRINT_WITH_NUMBER_NOW COPCART timer_in_secs 200 1 //You have ~1~ seconds to return to the car before the mission ends. endif ENDIF ENDIF IF IS_CHAR_IN_ANY_POLICE_VEHICLE scplayer OR IS_CHAR_IN_MODEL scplayer HUNTER //or IS_CHAR_IN_MODEL scplayer HYDRA STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer players_cop_car SET_CAN_BURST_CAR_TYRES players_cop_car FALSE IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL_VIGILANTE IF mission_end_button = 1 WAIT 100 // Workaround for a controller bug. mission_end_button = 2 ENDIF ELSE IF mission_end_button = 0 mission_end_button = 1 ENDIF ENDIF game_time_flag = 0 ENDIF IF mission_end_button = 2 IF NOT IS_BUTTON_PRESSED PAD1 RIGHTSHOCK PRINT_NOW C_CANC 3000 1//"Police mission cancelled!" copcar_cancelled_flag = 1 RETURN ENDIF ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// } // fcr900 //1 - bike // nrg500 //1 - bike // pcj600 //2 - bike // faggio //2 - bike // freeway //2 - bike // sanchez //2 - bike // bf400 //2 - bike // wayfarer //2 - bike // // infernus //2 - fast // cheetah //2 - fast // banshee //2 - fast // turismo //2 - fast // zr350 //2 - fast // comet //2 - fast // supergt //2 - fast // bullet //2 - fast // phoenix //2 - fast // // landstal //2 // bravura //2 // buffalo //2 // manana //2 // voodoo //2 // pony //2 // esperant //2 // bobcat //2 // bfinject //2 // hotknife //2 // previon //2 // stallion //2 // rumpo //2 // hermes //2 // sabre //2 // walton //2 // burrito //2 // camper //2 // rancher //2 // virgo //2 // blistac //2 // mesa //2 // majestic //2 // buccanee //2 // fortune //2 // cadrona //2 // feltzer //2 // remingtn //2 // slamvan //2 // blade //2 // clover //2 // sadler //2 // hustler //2 // tampa //2 // yosemite //2 // windsor //2 // uranus //2 // jester //2 // elegy //2 // flash //2 // savanna //2 // broadway //2 // tornado //2 // huntley //2 // euros //2 // club //2 // picador //2 // alpha //2 // sadlshit //2 // romero //2 // // peren //4 // sentinel //4 // moonbeam //4 // washing //4 // premier //4 // admiral //4 // solair //4 // glendale //4 // oceanic //4 // regina //4 // greenwoo //4 // elegant //4 // nebula //4 // willard //4 // vincent //4 // intruder //4 // primo //4 // sunrise //4 // merit //4 // sultan //4 // stratum //4 // stafford //4 // emperor //4 // glenshit //4 //400, landstal, 2 //401, bravura, 2 //402, buffalo, 2 //404, peren, 4 //405, sentinel, 4 //410, manana, 2 //411, infernus, 2 - fast //412, voodoo, 2 //413, pony, 2 //415, cheetah, 2 - fast //418, moonbeam, 4 //419, esperant, 2 //421, washing, 4 //422, bobcat, 2 //424, bfinject, 2 //426, premier, 4 //429, banshee, 2 - fast //434, hotknife, 2 //436, previon, 2 //439, stallion, 2 //440, rumpo, 2 //442, romero, 4 //445, admiral, 4 //451, turismo, 2 - fast //458, solair, 4 //461, pcj600, 2 - bike //462, faggio, 2 - bike //463, freeway, 2 - bike //466, glendale, 4 //467, oceanic, 4 //468, sanchez, 2 - bike //474, hermes, 2 //475, sabre, 2 //477, zr350, 2 - fast //478, walton, 2 //479, regina, 4 //480, comet, 2 - fast //482, burrito, 2 //483, camper, 2 //489, rancher, 2 //491, virgo, 2 //492, greenwoo, 4 //495, sandking, 2 - special //496, blistac, 2 //500, mesa, 2 //506, supergt, 2 - fast //507, elegant, 4 //516, nebula, 4 //517, majestic, 2 //518, buccanee, 2 //521, fcr900, 1 - bike //522, nrg500, 1 - bike //526, fortune, 2 //527, cadrona, 2 //529, willard, 4 //533, feltzer, 2 //534, remingtn, 2 //535, slamvan, 2 //536, blade, 2 //540, vincent, 4 //541, bullet, 2 - fast //542, clover, 2 //543, sadler, 2 //545, hustler, 2 //546, intruder, 4 //547, primo, 4 //549, tampa, 2 //550, sunrise, 4 //551, merit, 4 //554, yosemite, 2 //555, windsor, 2 //558, uranus, 2 //559, jester, 2 //560, sultan, 4 //561, stratum, 4 //562, elegy, 2 //565, flash, 2 //567, savanna, 2 //575, broadway, 2 //576, tornado, 2 //579, huntley, 2 //580, stafford, 4 //581, bf400, 2 - bike //585, emperor 4 //586, wayfarer 2 - bike //587, euros, 2 //589, club, 2 //600, picador, 2 //602, alpha, 2 //603, phoenix, 2 - fast //604, glenshit, 4 //605, sadlshit, 2 MISSION_START // ***************************************************************************************** // *********************************** Oddjob mission ************************************* // **************************************** burglary ************************************** // ********************************************DB******************************************* // *** *** // ***************************************************************************************** SCRIPT_NAME BURGJB // Mission start stuff GOSUB mission_start_burgl IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_burgl_failed ENDIF GOSUB mission_cleanup_burgl MISSION_END { //////////////////////////// // Variables for mission /// //////////////////////////// /// others LVAR_INT burglary_load_value LVAR_INT burglary_city LVAR_INT burglary_temp_int LVAR_INT burglary_current_area LVAR_INT burglary_current_score burglary_old_score burglary_score_dif LVAR_FLOAT burglary_player_sound_total LVAR_FLOAT burglary_garage_distance burglary_distance_temp LVAR_FLOAT burglary_temp_float LVAR_FLOAT burglary_total_made_f burglary_load_value_f LVAR_INT burglary_session_items VAR_INT burglary_session_made LVAR_INT burglary_items_in_truck /// Objects LVAR_INT burglary_object /// Vehicles LVAR_INT burglary_truck /// Blips LVAR_INT burglary_drop_off_blip LVAR_INT burglary_van_blip LVAR_INT burglary_entry_exit_blip /// Coords LVAR_FLOAT burglary_drop_x[3] burglary_drop_y[3] burglary_drop_z[3] LVAR_FLOAT burglary_player_x burglary_player_y burglary_player_z LVAR_FLOAT burglary_car_x burglary_car_y burglary_car_z LVAR_FLOAT burglary_entry_exit_x burglary_entry_exit_y burglary_entry_exit_z burglary_entry_exit_heading LVAR_FLOAT burglary_int_x burglary_int_y burglary_int_z LVAR_FLOAT burglary_garage_x[3] burglary_garage_y[3] burglary_garage_z[3] LVAR_FLOAT burglary_temp_x burglary_temp_y burglary_temp_z VAR_TEXT_LABEL burglary_garage[3] /// Sequences //// Counters and timers //VAR_INT burglary_player_stealth VAR_INT burglary_time_to_daylight VAR_INT burglary_time_to_get_out VAR_INT burglary_time_to_lockup LVAR_INT burglary_time_to_daylight_temp LVAR_INT burglary_timer_start LVAR_INT burglary_timer_current LVAR_INT burglary_time_elapsed /// Flags LVAR_INT burglary_player_in_house LVAR_INT burglary_player_in_truck LVAR_INT burglary_player_holding_object LVAR_INT burgl_mission_failed LVAR_INT burgl_mission_ended LVAR_INT burglary_van_blip_vis LVAR_INT burglary_player_discovered LVAR_INT burglary_drop_off_blip_vis LVAR_INT burglary_help_displayed LVAR_INT burglary_bar_displayed LVAR_INT burglary_switch_flag LVAR_INT burglary_has_been_in_a_house LVAR_INT burglary_safety_flag LVAR_INT burglary_times_discovered LVAR_INT burglary_timer_started LVAR_INT burglary_entry_exit_blip_added LVAR_INT burglary_garages_setup LVAR_INT burglary_cops_called LVAR_INT burglary_out_of_time LVAR_INT burglary_brains_active LVAR_INT burglary_new_house //VAR_INT burglary_player_spotted IF done_burglary_progress = 0 //REGISTER_MISSION_GIVEN ENDIF // ****************************************Mission Start************************************ mission_start_burgl: flag_player_on_mission = 1 REGISTER_MISSION_GIVEN WAIT 0 SET_FADING_COLOUR 0 0 0 //CLEAR_THIS_PRINT_BIG_NOW 1 LOAD_MISSION_TEXT BURGLAR ENABLE_BURGLARY_HOUSES TRUE ////////////////////////////// /// REQUEST MISSION MODELS /// ////////////////////////////// //////////////////////////////// /// INITIALISE THE VARIABLES /// //////////////////////////////// /// flags burglary_player_in_house = 0 burglary_player_in_truck = 0 burglary_player_holding_object = 0 burgl_mission_failed = 0 burgl_mission_ended = 0 burglary_van_blip_vis = 0 burglary_bar_displayed = 0 burglary_player_discovered = 0 burglary_drop_off_blip_vis = 0 burglary_help_displayed = 0 burglary_has_been_in_a_house = 0 burglary_switch_flag = 0 burglary_entry_exit_blip_added = 0 burglary_garages_setup = 0 burglary_cops_called = 0 burglary_out_of_time = 0 burglary_new_house = 0 burglary_session_items = 0 burglary_session_made = 0 burglary_timer_current = 0 burglary_timer_start = 0 burglary_timer_started = 0 burglary_time_to_get_out = 10 burglary_time_to_lockup = 300000 burglary_time_elapsed = 0 burglary_times_discovered = 0 burglary_player_sound_total = 0.0 burglary_noise = 0.0 burglary_garage_distance = 9999999.0 burglary_distance_temp = 9999999.0 /// Co-ords // LA 2472.00, -2007.00, 14.00 burglary_drop_x[0] = 2741.0 burglary_drop_y[0] = -2006.8068 burglary_drop_z[0] = 14.00 $burglary_garage[0] = burg_lk burglary_garage_x[0] = 2741.2412 burglary_garage_y[0] = -2011.2740 burglary_garage_z[0] = 13.5869 // San Fran burglary_drop_x[1] = -2102.5396 burglary_drop_y[1] = -15.5931 burglary_drop_z[1] = 34.3203 $burglary_garage[1] = brgSFSE burglary_garage_x[1] = -2109.3201 burglary_garage_y[1] = -15.7967 burglary_garage_z[1] = 34.3203 // Vegas burglary_drop_x[2] = 2609.2476 burglary_drop_y[2] = 1439.3466 burglary_drop_z[2] = 9.8203 $burglary_garage[2] = vgElock burglary_garage_x[2] = 2609.0117 burglary_garage_y[2] = 1445.9362 burglary_garage_z[2] = 9.8203 /// others burglary_load_value = 0 burglary_items_in_truck = 0 burglary_player_spotted = 0 burglary_brains_active = 0 burglary_player_stealth = 0 disable_mod_garage = 1 STORE_SCORE player1 burglary_current_score STORE_SCORE player1 burglary_old_score IF burglary_items_in_truck = 99 CREATE_OBJECT briefcase 0.0 0.0 0.0 burglary_object ADD_BLIP_FOR_COORD 0.0 0.0 0.0 burglary_drop_off_blip ADD_BLIP_FOR_COORD 0.0 0.0 0.0 burglary_entry_exit_blip ENDIF IF NOT IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava DRAW_ODDJOB_TITLE_BEFORE_FADE FALSE DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP Player1 balaclava balaclava CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE DRAW_ODDJOB_TITLE_BEFORE_FADE TRUE ENDIF //GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP Player1 0 0 CLOTHES_TEX_EXTRA1 //BUILD_PLAYER_MODEL player1 ////////////////////////////// /// PLAYER INTRO CUT-SCENE /// ////////////////////////////// GET_TIME_OF_DAY hours minutes IF hours >= 20 burglary_time_to_daylight_temp = hours * 60 burglary_time_to_daylight_temp += minutes burglary_temp_int = 1440 - burglary_time_to_daylight_temp // time til 24:00 in mins burglary_temp_int += 360 // time til 06:00 in mins burglary_temp_int *= 1000 // time in miliseconds to 06:00 //burglary_temp_int += 10000 burglary_time_to_daylight = burglary_temp_int // time until daylight ENDIF IF hours < 6 //got til 6 in moring burglary_time_to_daylight_temp = hours * 60 burglary_time_to_daylight_temp += minutes burglary_temp_int = 360 - burglary_time_to_daylight_temp // time in minutes until 06:00 burglary_temp_int *= 1000 // time in miliseconds to 06:00 //burglary_temp_int += 10000 burglary_time_to_daylight = burglary_temp_int // time until daylight ENDIF DISPLAY_ONSCREEN_TIMER_WITH_STRING burglary_time_to_daylight TIMER_DOWN BURG52 DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING burglary_session_made COUNTER_DISPLAY_NUMBER 1 BURG51 //or can use burglary_session_made //set entry exits on here WAIT 0 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer burglary_truck ENDIF ///////////\\\\\\\\\\\\\\ /// MAIN MISSION LOOP \\\ ///////////\\\\\\\\\\\\\\ burgl_main_loop: WAIT 0 /////////////////// /// DEBUG STUFF /// /////////////////// ////////////////////////////////////////////////////////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_SPACE // burglary_time_to_daylight = 10000000 ENDIF // // // // ////////////////////////////////////////////////////////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_1 // SET_CHAR_COORDINATES scplayer 2741.9282 -1993.2313 12.3669 SET_CHAR_HEADING scplayer 173.5173 // ENDIF // ////////////////////////////////////////////////////////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_2 // SET_CHAR_COORDINATES scplayer 2639.0 2039.9108 9.8052 // ENDIF // ////////////////////////////////////////////////////////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_BSPACE // burglary_time_to_daylight = 5000 ENDIF // ////////////////////////////////////////////////////////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_0 // burglary_time_to_lockup = 5000 ENDIF // ////////////////////////////////////////////////////////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_5 burglary_total_made = 11000 // ENDIF // ////////////////////////////////////////////////////////////////////// IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_6 // burglary_items_in_truck = 3 // ENDIF // ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// IF burglary_out_of_time = 0 IF burglary_time_to_daylight = 0 CLEAR_PRINTS // set entry exits off here ENABLE_BURGLARY_HOUSES FALSE IF burglary_player_in_house = 1 SET_PLAYER_CONTROL Player1 OFF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_HELP SET_AREA_VISIBLE 0 REQUEST_COLLISION burglary_entry_exit_x burglary_entry_exit_y LOAD_SCENE burglary_entry_exit_x burglary_entry_exit_y burglary_entry_exit_z SET_CHAR_COORDINATES_NO_OFFSET scplayer burglary_entry_exit_x burglary_entry_exit_y burglary_entry_exit_z SHUT_CHAR_UP scplayer FALSE burglary_entry_exit_heading += 180.0 SET_CHAR_HEADING scplayer burglary_entry_exit_heading SET_CHAR_HAS_USED_ENTRY_EXIT scplayer burglary_int_x burglary_int_y 5.0 LOAD_SCENE burglary_entry_exit_x burglary_entry_exit_y burglary_entry_exit_z //SET_CAMERA_BEHIND_PLAYER IF burglary_items_in_truck = 0 IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 ENDIF ENDIF burglary_player_in_house = 0 burglary_player_in_truck = 0 IF NOT IS_MINIGAME_IN_PROGRESS RESTORE_CAMERA_JUMPCUT ENDIF DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL Player1 ON ELSE IF burglary_items_in_truck = 0 IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava IF IS_PLAYER_CONTROL_ON Player1 SET_PLAYER_CONTROL Player1 OFF ENDIF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 IF NOT IS_MINIGAME_IN_PROGRESS RESTORE_CAMERA_JUMPCUT ENDIF DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //SET_PLAYER_CONTROL Player1 ON ENDIF ENDIF ENDIF CLEAR_ONSCREEN_TIMER burglary_time_to_daylight IF burglary_items_in_truck > 0 DISPLAY_ONSCREEN_TIMER_WITH_STRING burglary_time_to_lockup TIMER_DOWN BURG3 CLEAR_PRINTS PRINT (BURG2) 5000 1 //~s~You will not be able to enter any more houses, offload what you've already stashed within the time limit. IF burglary_player_in_truck = 1 PRINT (BURG26) 5000 1 //~s~Go and offload the goods burglary_switch_flag = 2 ELSE IF burglary_player_holding_object = 1 PRINT (BURG27) 5000 1 //~s~Put the goods in the truck burglary_switch_flag = 1 ELSE PRINT BURG1 5000 1 //~s~get in the truck and go offload what you've stashed. burglary_switch_flag = 3 ENDIF ENDIF ELSE burglary_time_to_lockup = 0 DELETE_OBJECT burglary_object MARK_OBJECT_AS_NO_LONGER_NEEDED burglary_object PRINT (BURG53) 5000 1 //~r~You are out of time, come back another night and finish the job GOTO mission_burgl_failed ENDIF burglary_out_of_time = 1 ELSE // find out how long until 6 am \\ GET_TIME_OF_DAY hours minutes IF hours >= 20 burglary_time_to_daylight_temp = hours * 60 burglary_time_to_daylight_temp += minutes burglary_temp_int = 1440 - burglary_time_to_daylight_temp // time til 24:00 in mins burglary_temp_int += 360 // time til 06:00 in mins burglary_temp_int++ burglary_temp_int *= 1000 // time in miliseconds to 06:00 burglary_time_to_daylight = burglary_temp_int // time until daylight ENDIF IF hours < 6 //got til 6 in moring burglary_time_to_daylight_temp = hours * 60 burglary_time_to_daylight_temp += minutes burglary_temp_int = 360 - burglary_time_to_daylight_temp // time in minutes until 06:00 burglary_temp_int++ burglary_temp_int *= 1000 // time in miliseconds to 06:00 burglary_time_to_daylight = burglary_temp_int // time until daylight ENDIF ENDIF ELSE IF burglary_time_to_lockup = 0 CLEAR_PRINTS IF IS_PLAYER_CONTROL_ON Player1 SET_PLAYER_CONTROL Player1 OFF ENDIF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 ENDIF IF NOT IS_MINIGAME_IN_PROGRESS RESTORE_CAMERA_JUMPCUT ENDIF DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //SET_PLAYER_CONTROL Player1 ON PRINT (BURG53) 5000 1 //~r~You are out of time, come back another night and finish the job DELETE_OBJECT burglary_object MARK_OBJECT_AS_NO_LONGER_NEEDED burglary_object GOTO mission_burgl_failed ENDIF ENDIF IF burgl_mission_failed = 0 ////////////////////////////// //// Check for cancelation //// /////////////////////////////// GOSUB burgl_cancelled_checks GET_AREA_VISIBLE burglary_current_area IF burglary_current_area = 0 IF NOT IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava PRINT (BURG62) 5000 1 //" ~r~You no longer have the balaclava. " GOTO mission_burgl_failed ENDIF ENDIF ///////////////////////////////// ///////////////////////////////// IF burglary_player_in_truck = 1 IF IS_WANTED_LEVEL_GREATER player1 0 AND burglary_items_in_truck > 0 IF NOT burglary_switch_flag = 5 CLEAR_PRINTS PRINT (BURG50) 5000 1 // ~s~You have to lose the heat before you can offload the goods. burglary_switch_flag = 5 ENDIF ELSE IF NOT burglary_switch_flag = 2 CLEAR_PRINTS IF burglary_items_in_truck > 0 IF burglary_out_of_time = 0 PRINT (BURG4) 5000 1 //~s~Go and offload the goods at the ~y~lockup~s~, or find a house to break into. ELSE PRINT (BURG26) 5000 1 //~s~Go and offload the goods ENDIF ELSE IF burglary_out_of_time = 0 PRINT (BURG29) 5000 1 //~s~Go and find a house to break into. ENDIF ENDIF burglary_switch_flag = 2 ENDIF ENDIF ELSE IF burglary_out_of_time = 0 IF burglary_player_holding_object = 1 IF NOT burglary_switch_flag = 1 IF burglary_player_in_house = 0 CLEAR_PRINTS PRINT (BURG27) 5000 1 //~s~Put the goods in the truck burglary_switch_flag = 1 ENDIF ENDIF ELSE IF burglary_player_in_house = 1 IF NOT burglary_switch_flag = 4 CLEAR_PRINTS PRINT (BURG30) 5000 1 //~s~Find something worth stealing. burglary_switch_flag = 4 ENDIF ELSE IF NOT burglary_switch_flag = 3 CLEAR_PRINTS IF burglary_items_in_truck = 0 PRINT (BURG29) 5000 1 //~s~Go and find a house to break into. ELSE PRINT (BURG31) 5000 1 //~s~Go and find a house to break into, or get in the truck and go offload what you've already stashed. ENDIF burglary_switch_flag = 3 ENDIF ENDIF ENDIF ELSE IF burglary_player_holding_object = 1 IF NOT burglary_switch_flag = 1 IF burglary_player_in_house = 0 CLEAR_PRINTS PRINT (BURG27) 5000 1 //~s~Put the goods in the truck burglary_switch_flag = 1 ENDIF ENDIF ELSE IF NOT burglary_switch_flag = 3 PRINT BURG1 5000 1 //~s~get in the truck and go offload what you've stashed. burglary_switch_flag = 3 ENDIF ENDIF ENDIF ENDIF ///////////////////////////////// ///////////////////////////////// IF NOT IS_CAR_DEAD burglary_truck //////////////////////////////////////////// /// CHECK IF PLAYER IS IN BURGLARY TRUCK /// //////////////////////////////////////////// IF burglary_player_in_house = 0 IF NOT IS_CHAR_IN_CAR scplayer burglary_truck OPEN_CAR_DOOR burglary_truck REAR_LEFT_DOOR OPEN_CAR_DOOR burglary_truck REAR_RIGHT_DOOR burglary_player_in_truck = 0 IF burglary_drop_off_blip_vis = 1 REMOVE_BLIP burglary_drop_off_blip burglary_drop_off_blip_vis = 0 ENDIF IF burglary_van_blip_vis = 0 ADD_BLIP_FOR_CAR burglary_truck burglary_van_blip CHANGE_BLIP_DISPLAY burglary_van_blip BLIP_ONLY SET_BLIP_AS_FRIENDLY burglary_van_blip TRUE burglary_van_blip_vis = 1 ENDIF ELSE CLOSE_ALL_CAR_DOORS burglary_truck burglary_player_in_truck = 1 IF burglary_van_blip_vis = 1 burglary_garages_setup = 0 REMOVE_BLIP burglary_van_blip burglary_van_blip_vis = 0 ENDIF IF burglary_items_in_truck > 0 IF IS_WANTED_LEVEL_GREATER player1 0 IF burglary_drop_off_blip_vis = 1 REMOVE_BLIP burglary_drop_off_blip burglary_drop_off_blip_vis = 0 ENDIF ELSE //IS_WANTED_LEVEL_GREATER player1 0 IF burglary_drop_off_blip_vis = 0 ADD_BLIP_FOR_COORD burglary_drop_x[burglary_city] burglary_drop_y[burglary_city] burglary_drop_z[burglary_city] burglary_drop_off_blip burglary_drop_off_blip_vis = 1 ENDIF ENDIF ENDIF ENDIF ENDIF /////////////////////// //// GARAGE CHECKS //// /////////////////////// IF burglary_garages_setup = 0 /// find the closest garage GET_INT_STAT CITIES_PASSED Return_cities_passed IF Return_cities_passed = 0 // la only open burglary_city = 0 ELSE IF Return_cities_passed = 1 // la and sanfran open GET_CHAR_COORDINATES scplayer burglary_player_x burglary_player_y burglary_player_z GET_CITY_FROM_COORDS burglary_player_x burglary_player_y burglary_player_z burglary_city IF burglary_city > 0 burglary_city-= 1 ELSE GET_DISTANCE_BETWEEN_COORDS_3D burglary_player_x burglary_player_y burglary_player_z burglary_drop_x[0] burglary_drop_y[0] burglary_drop_z[0] burglary_garage_distance burglary_city = 0 burglary_distance_temp = burglary_garage_distance GET_DISTANCE_BETWEEN_COORDS_3D burglary_player_x burglary_player_y burglary_player_z burglary_drop_x[1] burglary_drop_y[1] burglary_drop_z[1] burglary_garage_distance IF burglary_garage_distance < burglary_distance_temp burglary_city = 1 ENDIF ENDIF ELSE // all cities opened GET_CHAR_COORDINATES scplayer burglary_player_x burglary_player_y burglary_player_z GET_CITY_FROM_COORDS burglary_player_x burglary_player_y burglary_player_z burglary_city IF burglary_city > 0 burglary_city-= 1 ELSE //player not in a city //FIND CLOSEST GARAGE ? GET_DISTANCE_BETWEEN_COORDS_3D burglary_player_x burglary_player_y burglary_player_z burglary_drop_x[0] burglary_drop_y[0] burglary_drop_z[0] burglary_garage_distance burglary_city = 0 burglary_distance_temp = burglary_garage_distance GET_DISTANCE_BETWEEN_COORDS_3D burglary_player_x burglary_player_y burglary_player_z burglary_drop_x[1] burglary_drop_y[1] burglary_drop_z[1] burglary_garage_distance IF burglary_garage_distance < burglary_distance_temp burglary_city = 1 burglary_distance_temp = burglary_garage_distance ENDIF GET_DISTANCE_BETWEEN_COORDS_3D burglary_player_x burglary_player_y burglary_player_z burglary_drop_x[2] burglary_drop_y[2] burglary_drop_z[2] burglary_garage_distance IF burglary_garage_distance < burglary_distance_temp burglary_city = 2 ENDIF ENDIF ENDIF ENDIF /// set up the garage to appropriate type CHANGE_GARAGE_TYPE $burglary_garage[burglary_city] GARAGE_FOR_SCRIPT_TO_OPEN_AND_CLOSE burglary_garages_setup = 1 ENDIF /////////////////////////////////////////////// /////////////////////////////////////////////// /////////////////////////////////////////////// IF NOT IS_CAR_DEAD burglary_truck IF LOCATE_CHAR_ANY_MEANS_3D scplayer burglary_drop_x[burglary_city] burglary_drop_y[burglary_city] burglary_drop_z[burglary_city] 20.0 20.0 4.0 FALSE OR LOCATE_CAR_3D burglary_truck burglary_drop_x[burglary_city] burglary_drop_y[burglary_city] burglary_drop_z[burglary_city] 20.0 20.0 4.0 FALSE IF NOT IS_GARAGE_OPEN $burglary_garage[burglary_city] OPEN_GARAGE $burglary_garage[burglary_city] ENDIF IF burglary_garages_setup = 1 IF burglary_player_in_truck = 1 IF burglary_items_in_truck > 0 IF IS_WANTED_LEVEL_GREATER player1 0 IF burglary_drop_off_blip_vis = 1 CLEAR_PRINTS PRINT (BURG50) 5000 1 // ~s~You have to lose the heat before you can offload the goods. REMOVE_BLIP burglary_drop_off_blip burglary_drop_off_blip_vis = 0 ENDIF ELSE //IS_WANTED_LEVEL_GREATER player1 0 IF burglary_drop_off_blip_vis = 0 CLEAR_PRINTS PRINT (BURG26) 5000 1 //~s~Go and offload the goods ADD_BLIP_FOR_COORD burglary_drop_x[burglary_city] burglary_drop_y[burglary_city] burglary_drop_z[burglary_city] burglary_drop_off_blip burglary_drop_off_blip_vis = 1 ELSE //burglary_drop_off_blip_vis = 0 PRINT (BURG40) 1000 1//~s~Park the truck in the ~y~lockup~s~. IF LOCATE_CHAR_IN_CAR_3D scplayer burglary_garage_x[burglary_city] burglary_garage_y[burglary_city] burglary_garage_z[burglary_city] 2.9000 3.2000 5.0000 TRUE /// unload the truck here SET_PLAYER_CONTROL player1 OFF SET_POLICE_IGNORE_PLAYER player1 TRUE CLEAR_PRINTS CLEAR_AREA burglary_garage_x[burglary_city] burglary_garage_y[burglary_city] burglary_garage_z[burglary_city] 10.0 TRUE IF burglary_out_of_time = 1 CLEAR_ONSCREEN_TIMER burglary_time_to_lockup burglary_time_to_lockup = 999999 ENDIF IF NOT IS_GARAGE_CLOSED $burglary_garage[burglary_city] CLOSE_GARAGE $burglary_garage[burglary_city] ENDIF burglary_safety_flag = 0 WHILE burglary_safety_flag = 0 WAIT 0 IF IS_GARAGE_CLOSED $burglary_garage[burglary_city] burglary_safety_flag = 1 ENDIF ENDWHILE REMOVE_BLIP burglary_drop_off_blip burglary_load_value = burglary_items_in_truck * 20 burglary_load_value *= burglary_items_in_truck burglary_total_items += burglary_items_in_truck burglary_total_made += burglary_load_value burglary_total_made_f =# burglary_total_made burglary_load_value_f =# burglary_load_value burglary_session_items += burglary_items_in_truck burglary_session_made += burglary_load_value REGISTER_FLOAT_STAT LARGEST_BURGLARY_SWAG burglary_load_value_f INCREMENT_FLOAT_STAT MONEY_MADE_BURGLARY burglary_load_value_f //burglary_total_made_f INCREMENT_INT_STAT STOLEN_ITEMS_SOLD burglary_items_in_truck IF burglary_out_of_time = 1 IF IS_PLAYER_CONTROL_ON Player1 SET_PLAYER_CONTROL Player1 OFF ENDIF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 ENDIF IF NOT IS_MINIGAME_IN_PROGRESS //RESTORE_CAMERA_JUMPCUT ENDIF DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ELSE IF burglary_total_made >= 10000 AND done_burglary_progress = 0 IF IS_PLAYER_CONTROL_ON Player1 SET_PLAYER_CONTROL Player1 OFF ENDIF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 ENDIF IF NOT IS_MINIGAME_IN_PROGRESS //RESTORE_CAMERA_JUMPCUT ENDIF DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF ENDIF REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE IF burglary_items_in_truck < 2 PRINT_WITH_2_NUMBERS_BIG BURG39 burglary_items_in_truck burglary_load_value 5000 6//6 //~s~This load: ~1~ item = $~1~ ELSE PRINT_WITH_2_NUMBERS_BIG BURG36 burglary_items_in_truck burglary_load_value 5000 6//6 //~s~This load: ~1~ items = $~1~ ENDIF ADD_SCORE player1 burglary_load_value TIMERA = 0 WHILE IS_MESSAGE_BEING_DISPLAYED OR TIMERA < 4000 WAIT 0 ENDWHILE IF NOT IS_GARAGE_OPEN $burglary_garage[burglary_city] OPEN_GARAGE $burglary_garage[burglary_city] ENDIF burglary_safety_flag = 0 WHILE burglary_safety_flag = 0 WAIT 0 IF IS_GARAGE_OPEN $burglary_garage[burglary_city] burglary_safety_flag = 1 ENDIF ENDWHILE IF burglary_total_made >= 10000 AND done_burglary_progress = 0 SET_PLAYER_CONTROL player1 TRUE SET_POLICE_IGNORE_PLAYER player1 FALSE GOTO mission_burgl_passed ELSE IF burglary_out_of_time = 0 PRINT (BURG29) 5000 1 //~s~Go and find a house to break into. ENDIF burglary_drop_off_blip_vis = 0 burglary_load_value = 0 burglary_items_in_truck = 0 burglary_times_discovered = 0 ENDIF SET_PLAYER_CONTROL player1 TRUE SET_POLICE_IGNORE_PLAYER player1 FALSE IF burglary_out_of_time = 1 //PRINT (BURG53) 5000 1 //~r~You are out of time, come back another night and finish the job GOTO mission_burgl_failed burglary_time_to_lockup = 0 ENDIF ENDIF ENDIF ENDIF ENDIF //burglary_drop_off_blip_vis = 0 ENDIF ENDIF ELSE IF NOT IS_GARAGE_CLOSED $burglary_garage[burglary_city] CLOSE_GARAGE $burglary_garage[burglary_city] ENDIF ENDIF ENDIF //////////////////////////////////////////////////// /// IF PLAYER OUT OF TRUCK CHECK IF IN/OUT HOUSE /// //////////////////////////////////////////////////// IF burglary_player_in_truck = 0 IF IS_PROCEDURAL_INTERIOR_ACTIVE INTERIOR_HOUSE IF burglary_entry_exit_blip_added = 0 //SET_DARKNESS_EFFECT TRUE -1 GET_POSITION_OF_ENTRY_EXIT_CHAR_USED scplayer burglary_entry_exit_x burglary_entry_exit_y burglary_entry_exit_z burglary_entry_exit_heading GET_CHAR_COORDINATES scplayer burglary_int_x burglary_int_y burglary_int_z IF DOES_OBJECT_EXIST burglary_object IF IS_CHAR_HOLDING_OBJECT scplayer burglary_object GET_AREA_VISIBLE burglary_current_area SET_OBJECT_AREA_VISIBLE burglary_object burglary_current_area ENDIF ENDIF REMOVE_BLIP burglary_van_blip SHUT_CHAR_UP scplayer TRUE SET_RADAR_ZOOM 90 STORE_SCORE player1 burglary_old_score burglary_entry_exit_blip_added = 1 ENDIF burglary_player_in_house = 1 //// CHECK IF PLAYER SPOTTED ETC ///// ELSE IF burglary_entry_exit_blip_added = 1 //SET_DARKNESS_EFFECT FALSE -1 SHUT_CHAR_UP scplayer FALSE IF DOES_OBJECT_EXIST burglary_object IF IS_CHAR_HOLDING_OBJECT scplayer burglary_object GET_AREA_VISIBLE burglary_current_area SET_OBJECT_AREA_VISIBLE burglary_object burglary_current_area ENDIF ENDIF //REMOVE_BLIP burglary_entry_exit_blip IF NOT IS_CAR_DEAD burglary_truck ADD_BLIP_FOR_CAR burglary_truck burglary_van_blip SET_BLIP_AS_FRIENDLY burglary_van_blip TRUE ENDIF SET_RADAR_ZOOM 0 burglary_entry_exit_blip_added = 0 IF burglary_player_holding_object = 1 ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// burglary_new_house = 1 IF burglary_temp_x = burglary_entry_exit_x IF burglary_temp_y = burglary_entry_exit_y IF burglary_temp_z = burglary_entry_exit_z burglary_new_house = 0 ENDIF ENDIF ENDIF IF burglary_new_house = 1 burglary_temp_x = burglary_entry_exit_x burglary_temp_y = burglary_entry_exit_y burglary_temp_z = burglary_entry_exit_z INCREMENT_INT_STAT HOUSES_BURGLED 1 ENDIF ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// ENDIF ENDIF burglary_player_in_house = 0 ENDIF ENDIF ////////////////////////////////// /// IF PLAYER OUTSIDE OF HOUSE /// ////////////////////////////////// IF burglary_player_in_truck = 0 IF burglary_player_in_house = 0 IF burglary_player_holding_object = 0 GET_CHAR_COORDINATES scplayer burglary_player_x burglary_player_y burglary_player_z GET_CLOSEST_STEALABLE_OBJECT burglary_player_x burglary_player_y burglary_player_z 5.0 burglary_object IF NOT burglary_object = -1 IF IS_CHAR_HOLDING_OBJECT scplayer burglary_object //burglary_object IF burglary_help_displayed = 1 CLEAR_HELP burglary_help_displayed = 0 ENDIF burglary_player_holding_object = 1 ELSE IF LOCATE_CHAR_ON_FOOT_OBJECT_3D scplayer burglary_object 1.7 1.7 2.0 FALSE IF burglary_help_displayed = 0 PRINT_HELP_FOREVER BURG23 // Get close to the item to pick it up. burglary_help_displayed = 1 ENDIF ELSE IF burglary_help_displayed = 1 CLEAR_HELP burglary_help_displayed = 0 ENDIF ENDIF ENDIF ENDIF ELSE IF DOES_OBJECT_EXIST burglary_object IF NOT IS_CHAR_HOLDING_OBJECT scplayer burglary_object //burglary_object burglary_player_holding_object = 0 ENDIF ELSE burglary_player_holding_object = 0 ENDIF ENDIF IF burglary_player_spotted = 1 OR burglary_player_discovered = 1 burglary_player_spotted = 0 burglary_player_discovered = 0 /// clear counter CLEAR_ONSCREEN_COUNTER burglary_time_to_get_out burglary_time_to_get_out = 10 burglary_cops_called = 0 ENDIF IF burglary_bar_displayed = 1 CLEAR_ONSCREEN_COUNTER burglary_player_stealth burglary_noise = 0.0 burglary_player_sound_total = 0.0 burglary_player_stealth = 0 burglary_bar_displayed = 0 ENDIF IF burglary_player_holding_object = 1 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS burglary_truck 0.0 -6.0 0.0 burglary_car_x burglary_car_y burglary_car_z IF LOCATE_CHAR_ON_FOOT_3D scplayer burglary_car_x burglary_car_y burglary_car_z 3.5 3.5 2.0 FALSE IF burglary_help_displayed = 0 PRINT_HELP_FOREVER BURG24 // Walk over to the back of the truck to drop off the item. burglary_help_displayed = 1 ENDIF IF IS_WIDGET_RELEASED WIDGET_DROP_ITEM CLEAR_HELP burglary_items_in_truck++ TIMERB = 0 burglary_safety_flag = 0 IF DOES_OBJECT_EXIST burglary_object WHILE burglary_safety_flag = 0 IF NOT IS_CHAR_HOLDING_OBJECT scplayer burglary_object OR IS_CHAR_DEAD scplayer OR TIMERB > 5000 burglary_safety_flag = 1 ENDIF WAIT 0 ENDWHILE DELETE_OBJECT burglary_object MARK_OBJECT_AS_NO_LONGER_NEEDED burglary_object REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE burglary_player_holding_object = 0 ENDIF burglary_help_displayed = 0 ENDIF ELSE IF burglary_help_displayed = 1 CLEAR_HELP burglary_help_displayed = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ////////////////////////////// /// IF PLAYER INSIDE HOUSE /// ////////////////////////////// IF burglary_player_in_house = 1 IF burglary_player_discovered = 0 AND burglary_player_spotted = 0 IF burglary_bar_displayed = 0 GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT burg_brains.sc burglary_brains_active IF burglary_brains_active > 0 DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING burglary_player_stealth COUNTER_DISPLAY_BAR 2 BURG25 //DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING burglary_player_stealth COUNTER_DISPLAY_BAR 4 BURG25 SHUT_CHAR_UP scplayer TRUE burglary_bar_displayed = 1 ENDIF ELSE ///////////////////// /// STEALTH CHECK /// ///////////////////// GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT burg_brains.sc burglary_brains_active IF NOT burglary_brains_active = 0 GET_CHAR_COORDINATES scplayer burglary_player_x burglary_player_y burglary_player_z GET_SOUND_LEVEL_AT_COORDS -1 burglary_player_x burglary_player_y burglary_player_z burglary_noise burglary_noise *= 1.6 IF burglary_noise > 20.0 burglary_noise -= 20.0 /// additional effectors to sound /// burglary_player_sound_total += burglary_noise ENDIF burglary_player_sound_total *= 0.99 burglary_player_stealth =# burglary_player_sound_total IF burglary_player_stealth >= 100 burglary_player_stealth = 100 IF burglary_timer_started = 0 GET_GAME_TIMER burglary_timer_start burglary_timer_started = 1 ENDIF ELSE IF burglary_player_stealth < 0 burglary_player_stealth = 0 ENDIF burglary_timer_started = 0 ENDIF IF burglary_timer_started = 1 GET_GAME_TIMER burglary_timer_current burglary_time_elapsed = burglary_timer_current - burglary_timer_start IF burglary_time_elapsed > 200 burglary_player_discovered = 1 burglary_times_discovered++ ENDIF ENDIF /////////////////////////////// // no-one alive in the house // /////////////////////////////// ELSE CLEAR_ONSCREEN_COUNTER burglary_player_stealth burglary_noise = 0.0 burglary_player_sound_total = 0.0 burglary_player_stealth = 0 burglary_bar_displayed = 0 SHUT_CHAR_UP scplayer FALSE ENDIF ENDIF // burglary_bar_displayed = 0 ELSE IF burglary_bar_displayed = 1 CLEAR_ONSCREEN_COUNTER burglary_player_stealth burglary_time_to_get_out = 10 CLEAR_PRINTS PRINT (BURG55) 5000 1 //~s~You have been detected! DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING burglary_time_to_get_out COUNTER_DISPLAY_NUMBER 2 BURG61 //COPS GET_GAME_TIMER burglary_timer_start burglary_noise = 0.0 burglary_player_sound_total = 0.0 burglary_player_stealth = 0 burglary_bar_displayed = 0 ELSE IF burglary_cops_called = 0 GET_GAME_TIMER burglary_timer_current burglary_time_elapsed = burglary_timer_current - burglary_timer_start burglary_time_elapsed /= 1000 burglary_time_to_get_out = 10 - burglary_time_elapsed IF burglary_time_to_get_out < 0 OR burglary_time_to_get_out = 0 burglary_time_to_get_out = 0 IF NOT IS_WANTED_LEVEL_GREATER player1 4 ALTER_WANTED_LEVEL_NO_DROP Player1 3 ENDIF burglary_cops_called = 1 CLEAR_PRINTS PRINT BURG60 5000 1 //the cops are on the way CLEAR_ONSCREEN_COUNTER burglary_time_to_get_out ELSE CLEAR_THIS_PRINT BURG58 CLEAR_THIS_PRINT BURG59 ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE IF burglary_time_to_get_out > 1 PRINT_WITH_NUMBER (BURG58) burglary_time_to_get_out 1000 1 // ~you have ~1~ seconds to get out of the house ELSE PRINT_WITH_NUMBER (BURG59) burglary_time_to_get_out 1000 1 // ~you have ~1~ seconds to get out of the house ENDIF ENDIF ENDIF ENDIF ENDIF // burglary_player_discovered = 0 IF burglary_player_holding_object = 0 GET_CHAR_COORDINATES scplayer burglary_player_x burglary_player_y burglary_player_z GET_CLOSEST_STEALABLE_OBJECT burglary_player_x burglary_player_y burglary_player_z 5.0 burglary_object IF NOT burglary_object = -1 IF IS_CHAR_HOLDING_OBJECT scplayer burglary_object //burglary_object IF burglary_help_displayed = 1 CLEAR_PRINTS PRINT (BURG57) 5000 1 //~s~Take the item back to the truck, the ~y~exit~s~ is displayed on the radar. CLEAR_HELP burglary_help_displayed = 0 ENDIF burglary_player_holding_object = 1 ELSE IF LOCATE_CHAR_ON_FOOT_OBJECT_3D scplayer burglary_object 1.7 1.7 2.0 FALSE IF burglary_help_displayed = 0 PRINT_HELP_FOREVER BURG23 // Get close to the item to pick it up. burglary_help_displayed = 1 ENDIF ELSE IF burglary_help_displayed = 1 CLEAR_HELP burglary_help_displayed = 0 ENDIF ENDIF ENDIF ENDIF ///////////////////////////////////// ELSE IF DOES_OBJECT_EXIST burglary_object IF NOT IS_CHAR_HOLDING_OBJECT scplayer burglary_object //burglary_object IF burglary_player_holding_object = 1 CLEAR_PRINTS PRINT (BURG30) 5000 1 //~s~Find something worth stealing. ENDIF burglary_player_holding_object = 0 ENDIF ENDIF ENDIF ENDIF // burglary_player_in_house = 1 ELSE // burglary_truck has been destroyed IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava IF IS_PLAYER_CONTROL_ON Player1 SET_PLAYER_CONTROL Player1 OFF ENDIF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF GOTO mission_burgl_failed burgl_mission_failed = 1 ENDIF // is burglary cary_truck not dead ELSE IF IS_PLAYER_WEARING player1 CLOTHES_TEX_EXTRA1 balaclava DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE GIVE_PLAYER_CLOTHES Player1 0 0 CLOTHES_TEX_EXTRA1 BUILD_PLAYER_MODEL player1 DO_FADE 1000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF GOTO mission_burgl_failed ENDIF GOTO burgl_main_loop ///////////////////// ///////////////////// ///////////////////// burgl_cancelled_checks: IF NOT IS_CAR_DEAD burglary_truck IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL_VIGILANTE burgl_mission_ended = 1 ENDIF ENDIF IF burgl_mission_ended = 1 IF NOT IS_CAR_DEAD burglary_truck CLEAR_PRINTS PRINT_NOW BURG41 5000 1 // ~r~Burglary mission cancelled! burgl_mission_failed = 1 RETURN ENDIF ENDIF RETURN /////////////////////////// // Mission XXXX 1 failed/// /////////////////////////// mission_burgl_failed: //CLEAR_ALL_VIEW_VARIABLES PRINT_BIG B_FAIL1 5000 5 PRINT_WITH_2_NUMBERS_BIG BURG37 burglary_session_items burglary_session_made 5000 1 //6 //TOTAL: ~1~ items worth $~1~ RETURN // mission XXXX 1 passed mission_burgl_passed: //flag_XXXX_mission1_passed = 1 IF done_burglary_progress = 0 SET_PLAYER_NEVER_GETS_TIRED player1 TRUE PRINT_WITH_NUMBER_BIG BURG54 3000 5000 1 ADD_SCORE player1 3000 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 2 done_burglary_progress = 1 ENDIF RETURN RETURN ///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// // mission cleanup mission_cleanup_burgl: disable_mod_garage = 0 IF IS_PLAYER_PLAYING player1 SHUT_CHAR_UP scplayer FALSE ENDIF DRAW_ODDJOB_TITLE_BEFORE_FADE TRUE ENABLE_BURGLARY_HOUSES FALSE CHANGE_GARAGE_TYPE $burglary_garage[0] GARAGE_CLOSE_WHEN_EMPTY CHANGE_GARAGE_TYPE $burglary_garage[1] GARAGE_CLOSE_WHEN_EMPTY CHANGE_GARAGE_TYPE $burglary_garage[2] GARAGE_CLOSE_WHEN_EMPTY //// Vehicles MARK_CAR_AS_NO_LONGER_NEEDED burglary_truck //// People //// Blips REMOVE_BLIP burglary_van_blip REMOVE_BLIP burglary_drop_off_blip //// Pickups //// Counters CLEAR_ONSCREEN_COUNTER burglary_player_stealth CLEAR_ONSCREEN_TIMER burglary_time_to_daylight CLEAR_ONSCREEN_TIMER burglary_time_to_lockup CLEAR_ONSCREEN_COUNTER burglary_session_made CLEAR_ONSCREEN_COUNTER burglary_time_to_get_out flag_player_on_burglary_mission = 0 flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start // set entry exits off here MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // *********************************** Freight Train *************************************** // ***************************************************************************************** // ************************************* Paul Davis **************************************** // ***************************************************************************************** SCRIPT_NAME freight // Begin... GOSUB mission_start_freight IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_freight_failed ENDIF GOSUB mission_freight_cleanup IF flag_freight_passed_1stime = 1 START_NEW_SCRIPT text_after_freight flag_freight_passed_1stime = 2 ENDIF MISSION_END { VAR_INT freight_remaining flag_freight_passed_1stime flag_freight_passed_0stime LVAR_INT freight_time_remaining[5] freight_time_remaining_reverse[5] LVAR_INT freight_train_engine LVAR_FLOAT ft_station_X[20] ft_station_Y[20] ft_station_Z[20] // The stations LVAR_INT freight_station_blip[20] freight_start ft_counter_displayed LVAR_INT ft_addition ft_display_addition v ft_stations_done ft_test_train LVAR_INT ft_potential ft_direction LVAR_FLOAT ft_distance_to_station ft_distance_temp LVAR_FLOAT ft_distance_float ft_train_speed VAR_INT ft_distance ft_speed ft_help_been_displayed freight_player_location // ****************************************Mission Start************************************ mission_start_freight: CLEAR_WANTED_LEVEL player1 SET_WANTED_MULTIPLIER 0.0 ft_distance_temp = 999999.00 flag_player_on_mission = 1 flag_player_on_freight_mission = 1 ft_stations_done = 0 ft_counter_displayed = 0 freight_start = 0 IF ft_train_level = 0 ft_train_level = 1 ENDIF // L.A station ft_station_X[0] = 1698.8257 ft_station_Y[0] = -1953.7498 ft_station_Z[0] = 12.5469 freight_time_remaining[0] = 150000 freight_time_remaining_reverse[0] = 60000 // Richman station ft_station_X[1] = 789.4952 ft_station_Y[1] = -1343.7961 ft_station_Z[1] = -2.5794 freight_time_remaining[1] = 60000 freight_time_remaining_reverse[1] = 140000 // Near SF airport station ft_station_X[2] = -1943.2415 ft_station_Y[2] = 159.5850 ft_station_Z[2] = 24.7186 freight_time_remaining[2] = 140000 freight_time_remaining_reverse[2] = 150000 // Vegas station ft_station_X[3] = 1463.3593 ft_station_Y[3] = 2632.2495 ft_station_Z[3] = 9.8203 freight_time_remaining[3] = 150000 freight_time_remaining_reverse[3] = 105000 // Outside Vegas L.A-side station ft_station_X[4] = 2864.6228 ft_station_Y[4] = 1248.2665 ft_station_Z[4] = 9.8203 freight_time_remaining[4] = 105000 freight_time_remaining_reverse[4] = 150000 IF ft_train_level = 1 ft_addition = 15000 ENDIF IF ft_train_level = 2 ft_addition = 10000 ENDIF IF ft_train_level = 3 ft_addition = 0 ENDIF REPEAT 5 v freight_time_remaining[v] = freight_time_remaining[v] + ft_addition freight_time_remaining_reverse[v] = freight_time_remaining_reverse[v] + ft_addition ENDREPEAT SET_FADING_COLOUR 0 0 0 flag_player_on_mission = 1 IF flag_freight_passed_1stime = 0 REGISTER_MISSION_GIVEN ENDIF LOAD_MISSION_TEXT FTRAIN IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer car // CLOSE_ALL_CAR_DOORS car ENDIF ENDIF // *************************************************************************************************************** IF flag_freight_passed_1stime = 0 PRINT_WITH_NUMBER_BIG ( FREI_04 ) ft_train_level 5000 4 // Freight Mission Level ~1~ ELSE PRINT_BIG ( FREI_X ) 5000 4 // Freight Mission ENDIF WAIT 0 // ******************************************************************************************* // // Find where the player starts // // ******************************************************************************************* IF NOT IS_CHAR_DEAD scplayer GET_CHAR_COORDINATES scplayer x y z ENDIF // L.A station GET_DISTANCE_BETWEEN_COORDS_2D x y 1698.8257 -1953.7498 ft_distance_to_station // (LA EAST) IF ft_distance_to_station < ft_distance_temp ft_distance_temp = ft_distance_to_station freight_start = 0 ENDIF // Richman station GET_DISTANCE_BETWEEN_COORDS_2D x y 789.4952 -1343.7961 ft_distance_to_station // (LA EAST) IF ft_distance_to_station < ft_distance_temp ft_distance_temp = ft_distance_to_station freight_start = 1 ENDIF // Near SF airport station GET_DISTANCE_BETWEEN_COORDS_2D x y -1943.2415 159.5850 ft_distance_to_station // (LA EAST) IF ft_distance_to_station < ft_distance_temp ft_distance_temp = ft_distance_to_station freight_start = 2 ENDIF // Vegas station GET_DISTANCE_BETWEEN_COORDS_2D x y 1463.3593 2632.2495 ft_distance_to_station // (LA EAST) IF ft_distance_to_station < ft_distance_temp ft_distance_temp = ft_distance_to_station freight_start = 3 ENDIF // Outside Vegas L.A-side station GET_DISTANCE_BETWEEN_COORDS_2D x y 2864.6228 1248.2665 ft_distance_to_station // (LA EAST) IF ft_distance_to_station < ft_distance_temp ft_distance_temp = ft_distance_to_station freight_start = 4 ENDIF // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** REQUEST_MODEL 590 // Big Carriage REQUEST_MODEL 570 // Silver Carriage REQUEST_MODEL 569 // Flatbed REQUEST_MODEL 538 // Train Engine REQUEST_MODEL 537 // Train Engine WHILE NOT HAS_MODEL_LOADED 590 OR NOT HAS_MODEL_LOADED 570 OR NOT HAS_MODEL_LOADED 569 OR NOT HAS_MODEL_LOADED 538 OR NOT HAS_MODEL_LOADED 537 WAIT 0 ENDWHILE TIMERA = 0 TIMERB = 0 DELETE_ALL_TRAINS SWITCH_RANDOM_TRAINS OFF IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car ENDIF ENDIF IF NOT IS_CAR_DEAD car IF FIND_TRAIN_DIRECTION car freight_start ++ ft_direction = 0 ELSE freight_start -- ft_direction = 1 ENDIF ENDIF IF freight_start = 5 freight_start = 0 ENDIF IF freight_start = -1 freight_start = 4 ENDIF GOSUB freight_fade_in DISPLAY_RADAR 2 // PATHING OFF // latching onto roads ADD_BLIP_FOR_COORD ft_station_X[freight_start] ft_station_Y[freight_start] ft_station_Z[freight_start] freight_station_blip[freight_start] IF ft_direction = 0 freight_remaining = freight_time_remaining[freight_start] ELSE freight_remaining = freight_time_remaining_reverse[freight_start] ENDIF WHILE NOT IS_CHAR_DEAD scplayer WAIT 0 IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A GOTO ft_skip_a_station ENDIF IF IS_CHAR_IN_MODEL scplayer 538 OR IS_CHAR_IN_MODEL scplayer 537 STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car IF NOT IS_CAR_UPRIGHT car CLEAR_PRINTS CLEAR_HELP GOTO mission_freight_cancel ENDIF ELSE CLEAR_PRINTS CLEAR_HELP GOTO mission_freight_cancel ENDIF GET_CAR_SPEED car ft_train_speed ft_speed =# ft_train_speed IF TIMERB > 3000 AND ft_counter_displayed = 0 ft_counter_displayed = 1 CLEAR_PRINTS PRINT_HELP ( FREI_03 ) // ~s~Deliver the cargo to the stations within the time limit! ENDIF IF TIMERB > 8000 AND ft_counter_displayed = 1 ft_counter_displayed = 2 CLEAR_PRINTS CLEAR_HELP IF ft_help_been_displayed = 0 PRINT_HELP ( FREI_12 ) // ~s~If you go too fast you will derail ELSE TIMERB = 18000 ft_counter_displayed = 3 ENDIF ENDIF IF TIMERB > 12000 AND ft_counter_displayed = 2 ft_counter_displayed = 3 CLEAR_PRINTS CLEAR_HELP IF ft_help_been_displayed = 0 PRINT_HELP ( FREI_13 ) // ~s~Brake early or you will overshoot the station ELSE TIMERB = 18000 ft_counter_displayed = 3 ENDIF ENDIF IF TIMERB > 16000 AND ft_counter_displayed = 3 // ******************************** Calculate the first station time ******************************************** IF NOT IS_CHAR_DEAD scplayer GET_CHAR_COORDINATES scplayer x y z ENDIF ft_distance_float = 0.0 freight_remaining = 0 GET_DISTANCE_BETWEEN_COORDS_2D x y ft_station_X[freight_start] ft_station_Y[freight_start] ft_distance_float ft_distance =# ft_distance_float IF ft_distance_float > 3000.0000 ft_distance_float = ft_distance_float / 0.021 ELSE ft_distance_float = ft_distance_float / 0.019 ENDIF IF ft_distance_float < 10000.0 ft_distance_float = 10000.0 ENDIF freight_remaining =# ft_distance_float IF ft_train_level = 1 ft_addition = 15000 ENDIF IF ft_train_level = 2 // ft_addition = 10000 ft_addition = 0 ENDIF IF ft_train_level = 3 ft_addition = 0 ENDIF freight_remaining = freight_remaining + ft_addition // ************************************************************************************************************** ft_counter_displayed = 4 ft_help_been_displayed = 1 DISPLAY_ONSCREEN_TIMER_WITH_STRING freight_remaining TIMER_DOWN FREI_14 // Time DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING ft_distance COUNTER_DISPLAY_NUMBER 1 FREI_10 // power : DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING ft_speed COUNTER_DISPLAY_NUMBER 2 FREI_11 // level : CLEAR_PRINTS CLEAR_HELP ENDIF IF NOT IS_CHAR_DEAD scplayer GET_CHAR_COORDINATES scplayer x y z ENDIF GET_DISTANCE_BETWEEN_COORDS_2D x y ft_station_X[freight_start] ft_station_Y[freight_start] ft_distance_float ft_distance =# ft_distance_float IF HAS_TRAIN_DERAILED car GOTO mission_freight_failed ENDIF IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL_VIGILANTE CLEAR_PRINTS CLEAR_HELP WAIT 100 // Workaround for a controller bug. GOTO mission_freight_cancel ENDIF IF freight_remaining <= 0 GOTO mission_freight_failed ENDIF IF LOCATE_STOPPED_CHAR_ANY_MEANS_3D scplayer ft_station_X[freight_start] ft_station_Y[freight_start] ft_station_Z[freight_start] 10.0 10.0 10.0 TRUE IF IS_CHAR_IN_MODEL scplayer 538 OR IS_CHAR_IN_MODEL scplayer 537 ft_skip_a_station: IF DOES_BLIP_EXIST freight_station_blip[freight_start] REMOVE_BLIP freight_station_blip[freight_start] ENDIF ft_stations_done ++ ft_addition = freight_remaining CLEAR_ONSCREEN_TIMER freight_remaining CLEAR_ONSCREEN_COUNTER ft_distance CLEAR_ONSCREEN_COUNTER ft_speed IF ft_stations_done = 5 GOTO mission_freight_passed ENDIF IF ft_direction = 0 freight_start ++ ELSE freight_start -- ENDIF IF freight_start = 5 freight_start = 0 ENDIF IF freight_start = -1 freight_start = 4 ENDIF IF ft_addition > 15000 ft_addition = 15000 ENDIF ft_display_addition = ft_addition / 100 ft_display_addition = ft_display_addition * ft_train_level PRINT_WITH_NUMBER_BIG FREI_07 ft_display_addition 3000 1 // CARGO DELIVERED! $~1~ ADD_SCORE player1 ft_display_addition TIMERA = 0 ft_potential = 1 ENDIF ENDIF IF ft_potential = 1 AND TIMERA > 6000 ft_display_addition = ft_addition / 1000 //WDFIXME this overlaps the Cargo Delivered! text. DrawSuccessFailedMessage() doesn't do a good job of handling // simultaneous msgs., so for right now, we're just going to comment this out It shows + - time info at each station. //PRINT_WITH_NUMBER_BIG FREI_05 ft_display_addition 4000 6 // +~1~ Seconds freight_remaining = 0 IF ft_direction = 0 freight_remaining = freight_time_remaining[freight_start] + ft_addition ELSE freight_remaining = freight_time_remaining_reverse[freight_start] + ft_addition ENDIF CLEAR_ONSCREEN_TIMER freight_remaining CLEAR_ONSCREEN_COUNTER ft_distance CLEAR_ONSCREEN_COUNTER ft_speed DISPLAY_ONSCREEN_TIMER_WITH_STRING freight_remaining TIMER_DOWN FREI_14 // Time DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING ft_distance COUNTER_DISPLAY_NUMBER 1 FREI_10 // power : DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING ft_speed COUNTER_DISPLAY_NUMBER 2 FREI_11 // level : ADD_BLIP_FOR_COORD ft_station_X[freight_start] ft_station_Y[freight_start] ft_station_Z[freight_start] freight_station_blip[freight_start] ft_potential = 0 ENDIF ENDWHILE GOTO mission_freight_failed mission_freight_cancel: SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT CLEAR_PRINTS CLEAR_HELP PRINT_BIG ( FREI_02 ) 5000 1 // ~r~Freight mission cancelled! CLEAR_ONSCREEN_TIMER freight_remaining CLEAR_ONSCREEN_COUNTER ft_distance CLEAR_ONSCREEN_COUNTER ft_speed WAIT 2000 RETURN mission_freight_failed: IF DOES_BLIP_EXIST freight_station_blip[freight_start] REMOVE_BLIP freight_station_blip[freight_start] ENDIF CLEAR_ONSCREEN_TIMER freight_remaining CLEAR_ONSCREEN_COUNTER ft_distance CLEAR_ONSCREEN_COUNTER ft_speed SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT CLEAR_HELP CLEAR_PRINTS PRINT_BIG ( M_FAIL ) 5000 1 PRINT_NOW ( FREI_06 ) 4000 1 // ~r~You missed your delivery! RETURN mission_freight_passed: IF ft_train_level = 2 IF flag_freight_passed_1stime = 0 PRINT_WITH_NUMBER_BIG ( M_PASS ) 50000 5000 1 ADD_SCORE player1 50000 PLAY_MISSION_PASSED_TUNE 2 ENDIF IF flag_freight_passed_1stime = 2 PRINT_WITH_NUMBER_BIG ( M_PASS ) 10000 5000 1 ADD_SCORE player1 10000 PLAY_MISSION_PASSED_TUNE 2 ENDIF ELSE PRINT_WITH_NUMBER_BIG ( FREI_15 ) ft_train_level 5000 1 // Level ~1~ Complete ENDIF IF flag_freight_passed_0stime = 0 AND ft_train_level = 1 REGISTER_ODDJOB_MISSION_PASSED flag_freight_passed_0stime = 1 ENDIF IF flag_freight_passed_1stime = 0 AND ft_train_level = 2 REGISTER_ODDJOB_MISSION_PASSED PLAYER_MADE_PROGRESS 1 flag_freight_passed_1stime = 1 ENDIF CLEAR_ONSCREEN_TIMER freight_remaining CLEAR_ONSCREEN_COUNTER ft_distance CLEAR_ONSCREEN_COUNTER ft_speed CLEAR_WANTED_LEVEL player1 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT PLAY_MISSION_PASSED_TUNE 1 IF NOT ft_train_level = 2 ft_train_level ++ ENDIF RETURN // mission cleanup mission_freight_cleanup: DISPLAY_RADAR 3 // PATHING ON IF DOES_BLIP_EXIST freight_station_blip[freight_start] REMOVE_BLIP freight_station_blip[freight_start] ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED 590 MARK_MODEL_AS_NO_LONGER_NEEDED 570 MARK_MODEL_AS_NO_LONGER_NEEDED 569 MARK_MODEL_AS_NO_LONGER_NEEDED 538 MARK_MODEL_AS_NO_LONGER_NEEDED 537 flag_player_on_mission = 0 flag_player_on_freight_mission = 0 CLEAR_WANTED_LEVEL player1 CLEAR_ONSCREEN_COUNTER ft_distance CLEAR_ONSCREEN_COUNTER ft_speed CLEAR_ONSCREEN_TIMER freight_remaining CLEAR_WANTED_LEVEL player1 SET_WANTED_MULTIPLIER 1.0 MISSION_HAS_FINISHED RETURN freight_set_camera: SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF RETURN freight_restore_camera: SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON RESTORE_CAMERA_JUMPCUT RETURN freight_fade_out: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN freight_fade_in: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN freight_keys: LVAR_INT freight_dummy_car IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H IF NOT IS_CHAR_DEAD scplayer ADD_ARMOUR_TO_CHAR scplayer 100 INCREASE_PLAYER_MAX_HEALTH player1 100 ENDIF ENDIF RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* Pimp.sc ******************************************* // ****************************** Earning an honest living! ******************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME PIMP // Mission start stuff GOSUB mission_start_pimp IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_pimp_failed ENDIF GOSUB mission_cleanup_pimp MISSION_END { // Variables for mission // Peds and sequences LVAR_INT pimp_whore[2] LVAR_INT wIndex LVAR_INT whore_acknowledgeseq whore_punterseq // Vehicles LVAR_INT pimp_car // Conditions and flags LVAR_INT pimp_patch_decided LVAR_INT whore_spawned LVAR_INT whore_created LVAR_INT whore_entervehicle whore_lookat whore_leavevehicle LVAR_INT whore_trickfind LVAR_INT whore_stopprompt LVAR_INT whore_tricknumber // incremented every time the whore services a punter successfully LVAR_INT pimp_trick // an index which decides in which zone the punter will be created. 27 zones in LA. LVAR_INT pimp_removalindex // used to keep a copy of above for removal purposes. LVAR_INT both_whores_spawned whore_copy punter_copy LVAR_INT whorepunterchat LVAR_INT increments_this_run LVAR_INT backintimer //Pimping areas //1 South Los Santos //2 North Los Santos //3 West Los Santos LVAR_INT pimp_patch LVAR_INT whore_zone LVAR_INT pimp_donealready[28] // signifies if a trick has been done in an area already. // blips LVAR_INT pimp_whoreB LVAR_INT punterB LVAR_INT punkB // arrays LVAR_INT punter[28] LVAR_INT punterhurt[28] LVAR_INT punter_wander[28] LVAR_FLOAT LApunterX[28] LApunterY[28] LApunterZ[28] LApunterH[28] LVAR_FLOAT SFpunterX[28] SFpunterY[28] SFpunterZ[28] SFpunterH[28] LVAR_FLOAT LVpunterX[28] LVpunterY[28] LVpunterZ[28] LVpunterH[28] // Various ints LVAR_INT punter_holder0 LVAR_INT punter_holder1 LVAR_INT punter_scenario VAR_INT pimp_bikeostimer // off_biketimer VAR_INT pimp_runtimer LVAR_INT pimp_timeradjustment LVAR_INT pimp_lowtimeradjustment //VAR_INT bcou_timelimit // limit for particular run LVAR_INT pimp_backonbikecheck LVAR_INT pimp_biketimer LVAR_INT pimp_emptydm LVAR_INT pimp_isawhore LVAR_INT pimp_chat LVAR_INT pimp_blipswap LVAR_INT pimp_carB LVAR_INT call_fix beat_fix cheap_fix LVAR_INT total_pimpbonus LVAR_FLOAT ftotal_pimpbonus LVAR_INT pimp_cut LVAR_INT tempcount // New city detection shit LVAR_INT pimp_city LVAR_FLOAT current_playerX current_playerY current_playerZ LVAR_FLOAT pimp_nearestcity pimp_tempnearest LVAR_INT pimp_timerpresent LVAR_INT pimp_countbegun LVAR_INT pimptask_status LVAR_INT old_pimplevel LVAR_INT pimp_sfx // **************************************** Mission Start ********************************** mission_start_pimp: IF pimp_passed_once = 0 REGISTER_MISSION_GIVEN ENDIF flag_player_on_pimp_mission = 1 flag_player_on_mission = 1 //flag_player_on_mission = 0 WAIT 0 // ****************************************START OF CUTSCENE******************************** // fades the screen in /* LOAD_CUTSCENE casino_1 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE */ // ****************************************END OF CUTSCENE********************************** WAIT 0 LOAD_MISSION_TEXT PIMP //LOAD_MISSION_TEXT DOC1 SET_FADING_COLOUR 0 0 0 DO_FADE 500 FADE_IN // request models IF NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 ON ENDIF // ************************************ Declare Variables ********************************* //flags pimp_sfx = 0 pimp_timerpresent = 0 // timer not present pimp_countbegun = 0 pimp_bikeostimer = 0// off_biketimer pimp_timeradjustment = 0 pimp_backonbikecheck = 0 pimp_biketimer = 0 pimp_chat = 0 pimp_city = 0 pimp_patch_decided = 0 whore_spawned = 0 whore_trickfind = 0 whore_entervehicle = 0 whore_leavevehicle = 0 whore_lookat = 0 whore_created = 0 whore_stopprompt = 0 whore_tricknumber = 0 punter_wander[0] = 0 both_whores_spawned = 0 increments_this_run = 0 whorepunterchat = 0 punter_holder0 = 0 punter_holder1 = 0 wIndex = 0 pimp_blipswap = 0 cheap_fix = 0 beat_fix = 0 call_fix = 0 backintimer = 1 LApunterX[0] = 2286.7896 //Docks LApunterY[0] = -2312.8364 LApunterZ[0] = 12.5570 LApunterH[0] = 301.0 LApunterX[1] = 1537.2684 LApunterY[1] = -2314.2698 LApunterZ[1] = 12.5469 LApunterH[1] = 280.2771 // Los Santos International Airport LApunterX[2] = 2307.9026 LApunterY[2] = -1998.6470 LApunterZ[2] = 12.5529 LApunterH[2] = 321.3693 // Willowfield Industrial LApunterX[3] = 1239.2817 LApunterY[3] = -1918.8195 LApunterZ[3] = 30.3478 LApunterH[3] = 284.1407 // Verdant Bluffs // pimp_patch 1 end LApunterX[4] = 1685.3196 LApunterY[4] = -1585.2435 LApunterZ[4] = 12.5469 // Commerce gangsta shop LApunterH[4] = 233.3592 LApunterX[5] = 1749.7454 //Downtown LApunterY[5] = -1455.7781 LApunterZ[5] = 12.5547 LApunterH[5] = 8.5912 LApunterX[6] = 1959.5386 //Glen Park LApunterY[6] = -1452.5599 LApunterZ[6] = 12.5495 LApunterH[6] = 186.4147 LApunterX[7] = 1793.7080 LApunterY[7] = -1600.1200 LApunterZ[7] = 12.5387 LApunterH[7] = 74.0619 // Little Mexico // pimp_patch 2 ended LApunterX[8] = 2259.7034 LApunterY[8] = -1339.9070 LApunterZ[8] = 22.9832 LApunterH[8] = 267.1747 // Jefferson church LApunterX[9] = 2350.0093 LApunterY[9] = -1504.5988 LApunterZ[9] = 23.0000 LApunterH[9] = 113.9031 // Mexican place in East Los Santos LApunterX[10] = 2745.3743 LApunterY[10] = -1188.6801 LApunterZ[10] = 68.3986 LApunterH[10] = 109.0182 // Los Flores ( near Saints Boulevard sign ) LApunterX[11] = 2833.8865 // East Beach ( by walkway ) LApunterY[11] = -1585.9792 LApunterZ[11] = 10.0860 LApunterH[11] = 223.6582 //pimp_patch 3 ended LApunterX[12] = 1282.4292 LApunterY[12] = -1666.1295 LApunterZ[12] = 12.5547 LApunterH[12] = 202.3730 // Conference Centre LApunterX[13] = 899.8489 LApunterY[13] = -1823.8766 LApunterZ[13] = 11.2302 LApunterH[13] = 215.4203 // Verona Beach LApunterX[14] = 447.2084 LApunterY[14] = -1761.3137 LApunterZ[14] = 4.7837 LApunterH[14] = 230.4552 // Santa maria Beach LApunterX[15] = 765.7432 LApunterY[15] = -1541.3196 LApunterZ[15] = 12.5536 LApunterH[15] = 264.2591 // Marina //pimp_patch 4 ended LApunterX[16] = 1269.5922 LApunterY[16] = -1560.4619 LApunterZ[16] = 12.5643 LApunterH[16] = 186.3764 // Market LApunterX[17] = 557.9569 LApunterY[17] = -1509.4019 LApunterZ[17] = 13.5557 LApunterH[17] = 94.5521 // Central Rodeo LApunterX[18] = 434.0113 // Dodgy height bug LApunterY[18] = -1555.6675 LApunterZ[18] = 26.5851 LApunterH[18] = 273.0415 // Rodeo Steps LApunterX[19] = 403.0965 //Richman // Dodgy height bug. LApunterY[19] = -1256.6650 LApunterZ[19] = 51.2 LApunterH[19] = 29.0138 //pimp_patch 5 ended LApunterX[20] = 1147.1298 //Mulholland golfer LApunterY[20] = -898.4011 LApunterZ[20] = 41.7814 LApunterH[20] = 234.2193 LApunterX[21] = 1020.8024 LApunterY[21] = -911.8980 LApunterZ[21] = 41.2395 LApunterH[21] = 222.6945 // Mulholland grease monkey at car wash LApunterX[22] = 828.6284 LApunterY[22] = -1056.4452 LApunterZ[22] = 24.2484 LApunterH[22] = 22.8380 LApunterX[23] = 971.1776 LApunterY[23] = -1107.7435 LApunterZ[23] = 22.8672 LApunterH[23] = 83.3249 // Temple cemetery //pimp_patch 6 ended LApunterX[24] = 1893.3621 LApunterY[24] = -1741.2435 LApunterZ[24] = 12.5468 LApunterH[24] = 177.2180 //Idlewood by big building LApunterX[25] = 2333.6255 LApunterY[25] = -1764.6594 LApunterZ[25] = 12.5534 LApunterH[25] = 333.4691 // Ganton blue apartments LApunterX[26] = 1775.9417 LApunterY[26] = -1895.6230 LApunterZ[26] = 12.3865 LApunterH[26] = 248.6633 // El corona LApunterX[27] = 1707.1208 LApunterY[27] = -1804.7551 LApunterZ[27] = 12.5391 LApunterH[27] = 172.0678 // Back alley in little mexico //pimp_patch 7 ended SFpunterX[0] = -2020.2729 SFpunterY[0] = 932.0927 SFpunterZ[0] = 44.5639 SFpunterH[0] = 221.8539 // By the bottom of brick path in Calton Heights SFpunterX[1] = -2399.2983 SFpunterY[1] = 1071.8297 SFpunterZ[1] = 54.7266 SFpunterH[1] = 327.6848 // Juniper Hollow, top of park SFpunterX[2] = -2400.6516 SFpunterY[2] = 922.1189 SFpunterZ[2] = 44.4453 SFpunterH[2] = 283.5361 // By house in Juniper Hill near Burger joint SFpunterX[3] = -2301.2925 SFpunterY[3] = 1373.1053 SFpunterZ[3] = 6.1961 SFpunterH[3] = 124.8329 //Esplanade North on towpath running perpendicular to ship // SF pimp patch 1 ended /* SFpunterX[4] = -2248.7585 SFpunterY[4] = 2285.5298 SFpunterZ[4] = 3.8125 SFpunterH[4] = 162.2104 // Bayside Marina by Boat School SFpunterX[5] = -2436.1055 SFpunterY[5] = 2228.9583 SFpunterZ[5] = 3.9921 SFpunterH[5] = 75.3359 // Bayside Housing */ SFpunterX[6] = -2576.9475 SFpunterY[6] = 1144.2339 SFpunterZ[6] = 54.7266 SFpunterH[6] = 124.6449 // Near Battery Point house ( Meant to be Battery point zone ) SFpunterX[7] = -2694.1509 SFpunterY[7] = 1204.6277 SFpunterZ[7] = 54.1953 SFpunterH[7] = 357.2611 // Corner of road in Pallisades ( Meant to be Gant Bridge zone ) // SF pimp patch 2 ended SFpunterX[8] = -2244.2346 SFpunterY[8] = 643.8406 SFpunterZ[8] = 48.4375 SFpunterH[8] = 99.8674 // Chinatown SFpunterX[9] = -1923.3507 SFpunterY[9] = 563.4099 SFpunterZ[9] = 34.1972 SFpunterH[9] = 44.6685 // Downtown, near plaza section SFpunterX[10] = -1736.4307 SFpunterY[10] = 809.5150 SFpunterZ[10] = 23.8904 SFpunterH[10] = 333.3014 // Financial district by big blue glass fronted building SFpunterX[11] = -1504.5710 SFpunterY[11] = 1082.9998 SFpunterZ[11] = 6.1846 SFpunterH[11] = 156.5032 // Esplanade East on promenade area // SF pimp patch 3 ended SFpunterX[12] = -2400.0508 SFpunterY[12] = 556.1022 SFpunterZ[12] = 23.8906 SFpunterH[12] = 18.5350 // West Park now known as Queens. SFpunterX[13] = -2490.2551 SFpunterY[13] = 6.0292 SFpunterZ[13] = 24.6238 SFpunterH[13] = 56.3408 // Hashbury SFpunterX[14] = -2757.4685 SFpunterY[14] = 168.1762 SFpunterZ[14] = 6.0408 SFpunterH[14] =196.6891 // Ocean Flats ( 1or 2 - double zone ) SFpunterX[15] = -2779.7908 SFpunterY[15] = -319.9682 SFpunterZ[15] = 6.1875 SFpunterH[15] = 123.0427 // Avispa Country Club entrance ( 1 or 2 - double zone ) // SF pimp_patch 4 ended SFpunterX[16] = -2192.0227 SFpunterY[16] = 309.7259 SFpunterZ[16] = 34.1172 SFpunterH[16] = 7.9069 // King's car park SFpunterX[17] = -2195.7893 SFpunterY[17] = 197.3115 SFpunterZ[17] = 34.3203 SFpunterH[17] = 9.4354 // side alley in garcia SFpunterX[18] = -2108.6475 SFpunterY[18] = 217.1542 SFpunterZ[18] = 34.3045 SFpunterH[18] = 133.6119 // Doherty building site SFpunterX[19] = -1545.4487 SFpunterY[19] = 560.5441 SFpunterZ[19] = 6.1797 SFpunterH[19] = 165.7533 // Easter Basin bridge pillar //SF pimp_patch 5 ended SFpunterX[20] = -2779.7996 SFpunterY[20] = -500.7523 SFpunterZ[20] = 6.2925 SFpunterH[20] = 37.7744 // Foot of Missionary Hill SFpunterX[21] = -1974.4753 SFpunterY[21] = -975.0550 SFpunterZ[21] = 31.2266 SFpunterH[21] = 138.4206 //By rock display in Silicon Valley SFpunterX[22] = -1587.1193 SFpunterY[22] = -482.9532 SFpunterZ[22] = 5.1484 SFpunterH[22] = 117.5313 // near guard hut at Easter Bay Airport //pimp_patch 6 ended SFpunterX[23] = -2838.1116 SFpunterY[23] = 846.8309 SFpunterZ[23] = 42.5804 SFpunterH[23] = 288.0701 // Pallisades terrace SFpunterX[24] = -2566.2415 SFpunterY[24] = 918.7418 SFpunterZ[24] = 63.9765 SFpunterH[24] = 178.9968 // Back alley in paradiso SFpunterX[25] = -2601.5911 SFpunterY[25] = 688.1887 SFpunterZ[25] = 26.8125 SFpunterH[25] = 34.6082 // car park bit in Santa Flora SFpunterX[26] = -2758.5510 SFpunterY[26] = 394.1800 SFpunterZ[26] = 3.3359 SFpunterH[26] = 315.4430 // City Hall Steps // Vegas coords. LVpunterX[0] = 2009.3130 // The Pink Swan LVpunterY[0] = 1167.7930 LVpunterZ[0] = 9.8130 LVpunterH[0] = 266.7310 LVpunterX[1] = 1959.9984 // Side entrance of the Four Dragons Casino LVpunterY[1] = 945.6432 LVpunterZ[1] = 9.8203 LVpunterH[1] = 225.7712 LVpunterX[2] = 2202.7373 // The Camel's Toe LVpunterY[2] = 1254.4501 LVpunterZ[2] = 9.8203 LVpunterH[2] = 110.1904 LVpunterX[3] = 2186.8398 // Come-A-Lot LVpunterY[3] = 998.9764 LVpunterZ[3] = 9.8203 LVpunterH[3] = 202.3453 //pp1 ended LVpunterX[4] = 2031.9764 // PIRA The Pirates in Mens Pants LVpunterY[4] = 1539.8997 LVpunterZ[4] = 9.8203 LVpunterH[4] = 224.9353 LVpunterX[5] = 2139.4617 // ROY Royal Casino LVpunterY[5] = 1516.0449 LVpunterZ[5] = 9.8203 LVpunterH[5] = 351.7 LVpunterX[6] = 2150.3640 // CALI Caligula's Palace LVpunterY[6] = 1675.9688 LVpunterZ[6] = 9.8203 LVpunterH[6] = 217.8727 LVpunterX[7] = 1939.5504 // HIGH The High Roller LVpunterY[7] = 1389.7562 LVpunterZ[7] = 8.2578 LVpunterH[7] = 271.8136 // pp2 LVpunterX[8] = 2595.7898 // PILG Pilgrim ( seems quite odd though, it's in the Starfish casino car park ) LVpunterY[8] = 1793.6372 LVpunterZ[8] = 9.9692 LVpunterH[8] = 105.7608 LVpunterX[9] = 2185.6855 // STAR Starfish Casino LVpunterY[9] = 1885.9117 LVpunterZ[9] = 9.8203 LVpunterH[9] = 4.9185 LVpunterX[10] = 2159.8909 // The Strip LVpunterY[10] = 1931.0157 LVpunterZ[10] = 9.8203 LVpunterH[10] = 94.0854 LVpunterX[11] = 2057.3735 // the Visage LVpunterY[11] = 1957.5223 LVpunterZ[11] = 10.7324 LVpunterH[11] = 218.8441 // end of pp3 LVpunterX[12] = 2181.5325 // ISLE The Emerald Isle LVpunterY[12] = 2353.4844 LVpunterZ[12] = 9.8203 LVpunterH[12] = 186.4606 LVpunterX[13] = 2437.6074 // ROCE Roca Escalante LVpunterY[13] = 2376.5813 LVpunterZ[13] = 9.8203 LVpunterH[13] = 87.5329 LVpunterX[14] = 2335.3909 // OVS Old Venturas Strip LVpunterY[14] = 2076.1465 LVpunterZ[14] = 9.8125 LVpunterH[14] = 261.0065 LVpunterX[15] = 2217.5637 // RING The Ring Master, the casino here is known as the Clown's Pocket though LVpunterY[15] = 1787.8440 LVpunterZ[15] = 9.8203 LVpunterH[15] = 36.1247 // end of pp4 LVpunterX[16] = 1540.7322 // BFC Blackfield Chapel LVpunterY[16] = 748.3782 LVpunterZ[16] = 9.8203 LVpunterH[16] = 259.5982 LVpunterX[17] = 1011.9598 // GGC Greenglass College LVpunterY[17] = 1104.6254 LVpunterZ[17] = 9.8203 LVpunterH[17] = 4.4360 LVpunterX[18] = 1723.9036 // VAIR Las Venturas Airport // Needs moved in a little, she starts on the road! LVpunterY[18] = 1541.1241 LVpunterZ[18] = 9.8203 LVpunterH[18] = 317.5323 LVpunterX[19] = 1958.8224 // LDM Last Dime Motel LVpunterY[19] = 706.9632 LVpunterZ[19] = 9.8199 LVpunterH[19] = 216.0597 pimp_runtimer = 180000 // needs to be big to start with // **************************************************************************************** //WRITE_DEBUG script_running //CREATE_CAR OCEANIC 1918.9883 -1789.3239 12.3828 pimp_car //garage coords //SET_CAR_HEADING pimp_car 267.0957 //CHANGE_CAR_COLOUR pimp_car 1 5 //WARP_CHAR_INTO_CAR scplayer pimp_car CLEAR_AREA 1918.9883 -1791.8542 12.3828 30.0 FALSE SET_CHAR_CANT_BE_DRAGGED_OUT scplayer TRUE IF NOT IS_PLAYER_PLAYING player1 GOTO mission_pimp_failed ENDIF IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer pimp_car ELSE GOTO mission_pimp_failed ENDIF IF NOT IS_CAR_DEAD pimp_car //SET_UPSIDEDOWN_CAR_NOT_DAMAGED pimp_car TRUE SET_CAR_HEALTH pimp_car 2000 ENDIF LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY pimp_emptydm SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER1 GET_RANDOM_CHAR_IN_ZONE BLUFF TRUE FALSE TRUE pimp_whore[wIndex] DELETE_CHAR pimp_whore[wIndex] GET_RANDOM_CHAR_IN_ZONE BLUFF TRUE FALSE TRUE punter[pimp_removalindex] DELETE_CHAR punter[pimp_removalindex] IF whore_trickfind = -13 DISPLAY_ONSCREEN_TIMER_WITH_STRING pimp_runtimer TIMER_DOWN PIMP_90 CLEAR_ONSCREEN_TIMER pimp_runtimer ENDIF //New decision area to decide which city pimping will take place in IF NOT IS_CHAR_DEAD scplayer GET_CITY_PLAYER_IS_IN player1 pimp_city ENDIF IF NOT pimp_city = LEVEL_LOSANGELES IF NOT pimp_city = LEVEL_SANFRANCISCO IF NOT pimp_city = LEVEL_LASVEGAS // write_debug country // Put closest city shit in here //pimp_city = LEVEL_LOSANGELES GET_CHAR_COORDINATES scplayer current_playerX current_playerY current_playerZ // try LA first. Getting distance between player's position and Ganton, centralish LA ( vec 25 ) GET_DISTANCE_BETWEEN_COORDS_3D current_playerX current_playerY current_playerZ LApunterX[25] LApunterY[25] LApunterZ[25] pimp_tempnearest pimp_nearestcity = pimp_tempnearest pimp_city = LEVEL_LOSANGELES // now try SF GET_DISTANCE_BETWEEN_COORDS_3D current_playerX current_playerY current_playerZ SFpunterX[0] SFpunterY[0] SFpunterZ[0] pimp_tempnearest IF pimp_tempnearest < pimp_nearestcity pimp_nearestcity = pimp_tempnearest pimp_city = LEVEL_SANFRANCISCO ENDIF // now try Vegas GET_DISTANCE_BETWEEN_COORDS_3D current_playerX current_playerY current_playerZ LVpunterX[0] LVpunterY[0] LVpunterZ[0] pimp_tempnearest IF pimp_tempnearest < pimp_nearestcity pimp_nearestcity = pimp_tempnearest pimp_city = LEVEL_LASVEGAS ENDIF ENDIF ENDIF ENDIF pimp_main_mission_loop: WAIT 0 IF pimp_sfx = 1 CLEAR_MISSION_AUDIO 4 LOAD_MISSION_AUDIO 4 SOUND_PIMP_CUSTOMER_SEX pimp_sfx = 2 ENDIF IF pimp_sfx = 2 IF HAS_MISSION_AUDIO_LOADED 4 //WRITE_DEBUG fire2 // PLAY_MISSION_AUDIO 4 pimp_sfx = 3 ENDIF ENDIF IF pimp_timerpresent = 1 // get girl to customer IF pimp_runtimer < 1 WRITE_LOG "1" CLEAR_PRINTS PRINT_NOW PIMP_92 6000 1 GOTO mission_pimp_failed ENDIF ENDIF IF pimp_timerpresent = 2 // get to girl in danger IF pimp_runtimer < 1 WRITE_LOG "2" CLEAR_PRINTS PRINT_NOW PIMP_91 6000 1 GOTO mission_pimp_failed ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_w pimp_runtimer = pimp_runtimer + 60000 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_q pimp_runtimer = pimp_runtimer - 30000 ENDIF //SWITCH_WIDESCREEN ON IF NOT IS_PLAYER_PLAYING player1 GOTO mission_pimp_failed ENDIF IF IS_CAR_DEAD pimp_car GOTO mission_pimp_failed ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_p ALTER_WANTED_LEVEL Player1 2 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_o ALTER_WANTED_LEVEL Player1 0 ENDIF IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL_VIGILANTE IF flag_player_on_pimp_mission = 1 CLEAR_SMALL_PRINTS PRINT_NOW pimp_59 6000 1 IF NOT IS_CHAR_DEAD pimp_whore[0] IF NOT IS_CAR_DEAD pimp_car IF IS_CHAR_SITTING_IN_CAR pimp_whore[0] pimp_car CLEAR_CHAR_TASKS pimp_whore[0] TASK_LEAVE_ANY_CAR pimp_whore[0] ENDIF ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED pimp_whore[0] ENDIF IF NOT IS_CHAR_DEAD pimp_whore[1] IF NOT IS_CAR_DEAD pimp_car IF IS_CHAR_SITTING_IN_CAR pimp_whore[1] pimp_car CLEAR_CHAR_TASKS pimp_whore[1] TASK_LEAVE_ANY_CAR pimp_whore[1] ENDIF ENDIF MARK_CHAR_AS_NO_LONGER_NEEDED pimp_whore[1] ENDIF GOTO pimp_fail_button_pressed ENDIF ENDIF // Need to check if player has hit a current punter. Flagged by corresponding array so that non-paying / rough customers are exempt tempcount = 0 WHILE tempcount < 28 IF punterhurt[tempcount] = 1 IF DOES_CHAR_EXIST punter[tempcount] IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR punter[tempcount] scplayer PRINT_NOW PIMP_52 8000 1 GOTO mission_pimp_failed ENDIF IF IS_CHAR_DEAD punter[tempcount] PRINT_NOW PIMP_52 8000 1 GOTO mission_pimp_failed ENDIF ENDIF ENDIF tempcount ++ ENDWHILE IF pimp_backonbikecheck = 0 IF NOT IS_CAR_DEAD pimp_car IF NOT IS_CHAR_IN_CAR scplayer pimp_car TIMERB = 0 pimp_biketimer = 1 // begin timer pimp_lowtimeradjustment = pimp_runtimer / 1000 // get time for under twenty seconds check pimp_backonbikecheck = 1 WRITE_LOG "2" CLEAR_PRINTS CLEAR_HELP ENDIF ENDIF ENDIF IF pimp_backonbikecheck = 1 IF NOT IS_CAR_DEAD pimp_car IF IS_CHAR_IN_CAR scplayer pimp_car TIMERB = 0 pimp_backonbikecheck = 0 pimp_biketimer = 0 pimp_countbegun = 0 CLEAR_PRINTS WRITE_LOG "4" ENDIF ENDIF ENDIF IF pimp_biketimer = 1 pimp_timeradjustment = TIMERB / 1000 // IF pimp_runtimer < 21000 // AND pimp_runtimer > 1 // //lowtimeradjustment = bcou_timelimit / 1000 // pimp_bikeostimer = pimp_lowtimeradjustment - pimp_timeradjustment // // ELSE // pimp_bikeostimer = 20 - pimp_timeradjustment // ENDIF // IF pimp_countbegun = 0 IF pimp_runtimer < 21000 AND pimp_runtimer > 1 pimp_countbegun = 1 ENDIF ENDIF IF pimp_countbegun = 0 IF pimp_runtimer > 20099 pimp_countbegun = 2 ENDIF ENDIF IF pimp_countbegun = 1 pimp_bikeostimer = pimp_runtimer / 1000 ENDIF IF pimp_countbegun = 2 pimp_bikeostimer = 20 - pimp_timeradjustment ENDIF CLEAR_PRINTS WRITE_LOG "5" IF pimp_bikeostimer > 0 ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE PRINT_WITH_NUMBER_NOW pimp_1 pimp_bikeostimer 4000 1 ENDIF IF TIMERB > 21000 CLEAR_PRINTS WRITE_LOG "6" PRINT_NOW pimp_59 6000 1 GOTO mission_pimp_failed ENDIF ENDIF IF pimp_patch_decided = -13 CREATE_CHAR PEDTYPE_PROSTITUTE WFYPRO 1954.3475 -1867.1636 12.5391 pimp_whore[wIndex] ADD_BLIP_FOR_CHAR pimp_whore[wIndex] pimp_whoreB ADD_BLIP_FOR_CHAR scplayer punterB ADD_BLIP_FOR_CHAR scplayer punkB ENDIF IF pimp_patch_decided = 0 GOSUB pimp_patch_decider pimp_patch_decided = 1 ENDIF IF pimp_patch_decided = 1 //FORCE_RANDOM_PED_TYPE PEDTYPE_PROSTITUTE IF pimp_city = LEVEL_LOSANGELES REQUEST_MODEL BFYPRO REQUEST_MODEL HFYPRO WHILE NOT HAS_MODEL_LOADED BFYPRO OR NOT HAS_MODEL_LOADED HFYPRO WAIT 0 ENDWHILE IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer IWD // in Idlewood, spawn Hispanic whore in LMEX, Little Mexico, using punter coords. CREATE_CHAR PEDTYPE_PROSTITUTE HFYPRO LApunterX[27] LApunterY[27] LApunterZ[27] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[27] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer GAN // in Ganton, spawn Hispanic whore in ELCO, El Corona CREATE_CHAR PEDTYPE_PROSTITUTE HFYPRO LApunterX[26] LApunterY[26] LApunterZ[26] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[26] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer ELCO // in El Corona, spawn black whore in GAN, ganton CREATE_CHAR PEDTYPE_PROSTITUTE BFYPRO LApunterX[25] LApunterY[25] LApunterZ[25] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[25] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer LMEX // in Little Mexico, spawn black whore in IWD, Idlewood CREATE_CHAR PEDTYPE_PROSTITUTE BFYPRO LApunterX[24] LApunterY[24] LApunterZ[24] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[24] GOSUB whore_suitable ENDIF ENDIF //pp0? IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer LDOC // in LA Docks, spawn black whore at LAIR, Los Santos International Airport CREATE_CHAR PEDTYPE_PROSTITUTE BFYPRO LApunterX[1] LApunterY[1] LApunterZ[1] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[1] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer LAIR // in Los Santos International Airport, spawn black whore at LIND, Willowfield Industrial CREATE_CHAR PEDTYPE_PROSTITUTE BFYPRO LApunterX[2] LApunterY[2] LApunterZ[2] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[2] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer LIND // in Willowfield Industrial , spawn Hispanic whore at LDOC, Docks CREATE_CHAR PEDTYPE_PROSTITUTE HFYPRO LApunterX[0] LApunterY[0] LApunterZ[0] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[0] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer BLUF // in Verdant Bluffs , spawn Hispanic whore at LAIR CREATE_CHAR PEDTYPE_PROSTITUTE HFYPRO LApunterX[1] LApunterY[1] LApunterZ[1] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[1] GOSUB whore_suitable ENDIF ENDIF //pp1 IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer COM // in Commerce, spawn Hispanic whore at LDT, Downtown Los Santos CREATE_CHAR PEDTYPE_PROSTITUTE HFYPRO LApunterX[5] LApunterY[5] LApunterZ[5] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[5] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer LDT // in Los Santos Downtown, spawn Hispanic whore in COM, commerce gangsta shop CREATE_CHAR PEDTYPE_PROSTITUTE HFYPRO LApunterX[4] LApunterY[4] LApunterZ[4] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[4] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer GLN // in Glen Park, spawn Hispanic whore in LMEX, Little Mexico CREATE_CHAR PEDTYPE_PROSTITUTE HFYPRO LApunterX[7] LApunterY[7] LApunterZ[7] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[7] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer CHC // in Las Colinas, spawn black whore in GLN, Glen Park CREATE_CHAR PEDTYPE_PROSTITUTE BFYPRO LApunterX[6] LApunterY[6] LApunterZ[6] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[6] GOSUB whore_suitable ENDIF ENDIF //pp2 IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer JEF // in Jefferson, spawn hispanic whore in ELS, Mexican place in East Los Santos CREATE_CHAR PEDTYPE_PROSTITUTE HFYPRO LApunterX[9] LApunterY[9] LApunterZ[9] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[9] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer ELS // in East Los Santos, spawn black whore by church in Jefferson CREATE_CHAR PEDTYPE_PROSTITUTE BFYPRO LApunterX[8] LApunterY[8] LApunterZ[8] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[8] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer LFL // in Los Flores, spawn black whore by EBE, East Beach CREATE_CHAR PEDTYPE_PROSTITUTE BFYPRO LApunterX[11] LApunterY[11] LApunterZ[11] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[11] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer EBE // in East Beach, spawn Hispanic whore in LFL, Los Flores CREATE_CHAR PEDTYPE_PROSTITUTE HFYPRO LApunterX[10] LApunterY[10] LApunterZ[10] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[10] GOSUB whore_suitable ENDIF ENDIF // pp3 IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer CONF // in Conference Centre, spawn black whore in VERO, Verona Beach CREATE_CHAR PEDTYPE_PROSTITUTE BFYPRO LApunterX[13] LApunterY[13] LApunterZ[13] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[13] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer VERO // in Verona Beach, spawn black whore in CONF, conference centre CREATE_CHAR PEDTYPE_PROSTITUTE BFYPRO LApunterX[12] LApunterY[12] LApunterZ[12] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[12] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer MKT //????????????????????????????? // in Market, spawn black whore in MAR, Marina CREATE_CHAR PEDTYPE_PROSTITUTE BFYPRO LApunterX[15] LApunterY[15] LApunterZ[15] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[15] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer MAR // in Marina, spawn Hispanic whore in SMB, Santa Maria Beach CREATE_CHAR PEDTYPE_PROSTITUTE BFYPRO LApunterX[14] LApunterY[14] LApunterZ[14] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[14] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer SMB // in Marina, spawn Hispanic whore in MAR, Marina CREATE_CHAR PEDTYPE_PROSTITUTE BFYPRO LApunterX[15] LApunterY[15] LApunterZ[15] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[15] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer PLS // in Playa Del Sevilla, spawn Hispanic whore by ROD Rodeo steps CREATE_CHAR PEDTYPE_PROSTITUTE HFYPRO LApunterX[18] LApunterY[18] LApunterZ[18] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[18] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer ROD // in Rodeo, spawn black whore in RIH Richman CREATE_CHAR PEDTYPE_PROSTITUTE BFYPRO LApunterX[19] LApunterY[19] LApunterZ[19] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[19] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer RIH // in Richamn, spawn black whore in ROD, central Rodeo CREATE_CHAR PEDTYPE_PROSTITUTE BFYPRO LApunterX[17] LApunterY[17] LApunterZ[17] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[17] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer VIN // in Vinewood, spawn black whore in MUL, Mulholland sex shop area CREATE_CHAR PEDTYPE_PROSTITUTE BFYPRO LApunterX[20] LApunterY[20] LApunterZ[20] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[20] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer MUL // in Mulhalloand, spawn black whore by Vinewood / Sunrise / Temple cemetery area CREATE_CHAR PEDTYPE_PROSTITUTE BFYPRO LApunterX[23] LApunterY[23] LApunterZ[23] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[23] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer SUN // in Sunrise, spawm Hispanic whore by Mulholland garage CREATE_CHAR PEDTYPE_PROSTITUTE HFYPRO LApunterX[21] LApunterY[21] LApunterZ[21] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[21] GOSUB whore_suitable ENDIF ENDIF //If the player started out in the sticks they automatically wouldn't //have a starting zone so we need to create a whore in the centre of the closest city somewhere. //If whore_spawned still equals zero ( it gets incremented in whore_suitable proc, after all of the //above checks, it also acts as a failsafe in case the player is in a zone that has been missed out! IF whore_spawned = 0 // Failsafe! Only gets called if all above zone checks pass a negative // Failsafe! Player started out of town, nearest city was LA, spawn Hispanic whore at LDT, Downtown Los Santos CREATE_CHAR PEDTYPE_PROSTITUTE HFYPRO LApunterX[5] LApunterY[5] LApunterZ[5] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LApunterH[5] GOSUB whore_suitable ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED BFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED HFYPRO ENDIF // pimp_city = LEVEL_LOSANGELES IF pimp_city = LEVEL_SANFRANCISCO REQUEST_MODEL SWFOPRO REQUEST_MODEL WFYPRO WHILE NOT HAS_MODEL_LOADED SWFOPRO OR NOT HAS_MODEL_LOADED WFYPRO WAIT 0 ENDWHILE IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer CALT // in Calton, spawn whore at JUNIHO, Juniper Hollow CREATE_CHAR PEDTYPE_PROSTITUTE WFYPRO SFpunterX[1] SFpunterY[1] SFpunterZ[1] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[1] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer JUNIHO // in Juniper Hollow, spawn whore at CALT, Calton Heights CREATE_CHAR PEDTYPE_PROSTITUTE SWFOPRO SFpunterX[0] SFpunterY[0] SFpunterZ[0] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[0] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer ESPN // in Esplanade North, spawn whore at JUNIHI, Juniper Hill CREATE_CHAR PEDTYPE_PROSTITUTE SWFOPRO SFpunterX[2] SFpunterY[2] SFpunterZ[2] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[2] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer JUNIHI // in Juniper Hill, spawn whore at ESPN, Esplanade North CREATE_CHAR PEDTYPE_PROSTITUTE WFYPRO SFpunterX[3] SFpunterY[3] SFpunterZ[3] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[3] GOSUB whore_suitable ENDIF ENDIF // pimp_patch 1 ( green ended ) IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer SUNMA // in Bayside Marina, spawn whore at SUNNN, Bayside CREATE_CHAR PEDTYPE_PROSTITUTE WFYPRO SFpunterX[5] SFpunterY[5] SFpunterZ[5] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[5] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer SUNNN // in Bayside, spawn whore at SUNMA Bayside Marina CREATE_CHAR PEDTYPE_PROSTITUTE SWFOPRO SFpunterX[4] SFpunterY[4] SFpunterZ[4] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[4] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer BATTP // near Battery Point, spawn whore near Gant Bridge CREATE_CHAR PEDTYPE_PROSTITUTE SWFOPRO SFpunterX[7] SFpunterY[7] SFpunterZ[7] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[7] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer GANTB // in GantBridge, spawn whore near Battery Point CREATE_CHAR PEDTYPE_PROSTITUTE WFYPRO SFpunterX[6] SFpunterY[6] SFpunterZ[6] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[6] GOSUB whore_suitable ENDIF ENDIF // pimp_patch 2 ( cyan ended ) IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer CHINA // in Chinatown, spawn whore in SFDWT, Downtown CREATE_CHAR PEDTYPE_PROSTITUTE WFYPRO SFpunterX[9] SFpunterY[9] SFpunterZ[9] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[9] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer SFDWT // in Downtown, spawn whore in Chinatown CREATE_CHAR PEDTYPE_PROSTITUTE SWFOPRO SFpunterX[8] SFpunterY[8] SFpunterZ[8] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[8] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer FINA // in Fina, spawn whore in Esplanade East CREATE_CHAR PEDTYPE_PROSTITUTE SWFOPRO SFpunterX[11] SFpunterY[11] SFpunterZ[11] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[11] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer ESPE // in Esplanade East, spawn whore in financial CREATE_CHAR PEDTYPE_PROSTITUTE WFYPRO SFpunterX[10] SFpunterY[10] SFpunterZ[10] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[10] GOSUB whore_suitable ENDIF ENDIF // pimp_patch 3 ( magenta ended ) IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer WESTP // in West Park, spawn whore in HASH, Hashbury CREATE_CHAR PEDTYPE_PROSTITUTE WFYPRO SFpunterX[13] SFpunterY[13] SFpunterZ[13] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[13] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer HASH // in Hashbury, spawn whore in West Park CREATE_CHAR PEDTYPE_PROSTITUTE SWFOPRO SFpunterX[12] SFpunterY[12] SFpunterZ[12] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[12] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer OCEAF // in Ocean Flats, spawn whore in CUNTC1 or CUNTC2, Country club CREATE_CHAR PEDTYPE_PROSTITUTE WFYPRO SFpunterX[15] SFpunterY[15] SFpunterZ[15] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[15] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer CUNTC // in Country Club, spawn whore in Ocean Flats CREATE_CHAR PEDTYPE_PROSTITUTE SWFOPRO SFpunterX[14] SFpunterY[14] SFpunterZ[14] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[14] GOSUB whore_suitable ENDIF ENDIF //pimp_patch 4 grey ended IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer THEA // in King's, spawn whore in Garcia CREATE_CHAR PEDTYPE_PROSTITUTE WFYPRO SFpunterX[17] SFpunterY[17] SFpunterZ[17] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[17] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer GARC // in Garcia, spawn whore in KIng's CREATE_CHAR PEDTYPE_PROSTITUTE SWFOPRO SFpunterX[16] SFpunterY[16] SFpunterZ[16] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[16] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer DOH // in Doherty, spawn whore in Easter Basin CREATE_CHAR PEDTYPE_PROSTITUTE WFYPRO SFpunterX[19] SFpunterY[19] SFpunterZ[19] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[19] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer EASB // in Easter Basin, spawn whore in Doherty CREATE_CHAR PEDTYPE_PROSTITUTE SWFOPRO SFpunterX[18] SFpunterY[18] SFpunterZ[18] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[18] GOSUB whore_suitable ENDIF ENDIF //pimp_patch 5 ended IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer HILLP // in Missionary Hill, spawn whore in Silicon Valley CREATE_CHAR PEDTYPE_PROSTITUTE SWFOPRO SFpunterX[21] SFpunterY[21] SFpunterZ[21] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[21] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer SILLY // in Silicon Valley, spawn whore at Easter bay airport CREATE_CHAR PEDTYPE_PROSTITUTE WFYPRO SFpunterX[22] SFpunterY[22] SFpunterZ[22] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[22] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer SFAIR // in easter Bay Airport, spawn whore in Missionary Hill CREATE_CHAR PEDTYPE_PROSTITUTE SWFOPRO SFpunterX[20] SFpunterY[20] SFpunterZ[20] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[20] GOSUB whore_suitable ENDIF ENDIF //pimp_patch 6 ended IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer BAYV // in Pallisades, spawn whore in Paradiso CREATE_CHAR PEDTYPE_PROSTITUTE SWFOPRO SFpunterX[24] SFpunterY[24] SFpunterZ[24] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[24] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer PARA // in Paradiso, spawn whore in Pallisades CREATE_CHAR PEDTYPE_PROSTITUTE WFYPRO SFpunterX[23] SFpunterY[23] SFpunterZ[23] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[23] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer CIVI // in Santa Flora, spawn whore in City Hall CREATE_CHAR PEDTYPE_PROSTITUTE WFYPRO SFpunterX[26] SFpunterY[26] SFpunterZ[26] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[26] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer CITYS // in City Hall, spawn whore in Santa Flora CREATE_CHAR PEDTYPE_PROSTITUTE SWFOPRO SFpunterX[25] SFpunterY[25] SFpunterZ[25] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[25] GOSUB whore_suitable ENDIF ENDIF //pimp_patch 7 ended //If the player started out in the sticks they automatically wouldn't //have a starting zone so we need to create a whore in the centre of the closest city somewhere. //If whore_spawned still equals zero ( it gets incremented in whore_suitable proc, after all of the //above checks, it also acts as a failsafe in case the player is in a zone that has been missed out! IF whore_spawned = 0 // Failsafe! Only gets called if all above zone checks pass a negative // Failsafe! Player started out of town, nearest city was SF, spawn Hispanic whore at CALT, Calton Heights CREATE_CHAR PEDTYPE_PROSTITUTE SWFOPRO SFpunterX[0] SFpunterY[0] SFpunterZ[0] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] SFpunterH[0] GOSUB whore_suitable ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED SWFOPRO MARK_MODEL_AS_NO_LONGER_NEEDED WFYPRO ENDIF // pimp_city = LEVEL_SANFRANCISCO IF pimp_city = LEVEL_LASVEGAS REQUEST_MODEL VWFYPRO REQUEST_MODEL VBFYPRO WHILE NOT HAS_MODEL_LOADED VWFYPRO OR NOT HAS_MODEL_LOADED VBFYPRO WAIT 0 ENDWHILE IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer PINK // at the Pink Swan, spawn whore at the Four Dragons CREATE_CHAR PEDTYPE_PROSTITUTE VWFYPRO LVpunterX[1] LVpunterY[1] LVpunterZ[1] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[1] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer DRAG // at the Four Dragon's, spawn whore at the Pink Swan CREATE_CHAR PEDTYPE_PROSTITUTE VWFYPRO LVpunterX[0] LVpunterY[0] LVpunterZ[0] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[0] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer CAM // at the Camel's Toe, spawn whore at Come-A-Lot. CREATE_CHAR PEDTYPE_PROSTITUTE VBFYPRO LVpunterX[3] LVpunterY[3] LVpunterZ[3] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[3] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer LOT // at Come-A-Lot, spawn whore at the Camel's Toe CREATE_CHAR PEDTYPE_PROSTITUTE VBFYPRO LVpunterX[2] LVpunterY[2] LVpunterZ[2] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[2] GOSUB whore_suitable ENDIF ENDIF // end of pp1 IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer PIRA // at the Pirates in Mens Pants, spawn whore at the Royal Casino CREATE_CHAR PEDTYPE_PROSTITUTE VWFYPRO LVpunterX[5] LVpunterY[5] LVpunterZ[5] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[5] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer ROY // at the Rotal Casino, spawn whore at the Pirates in Mens Pants CREATE_CHAR PEDTYPE_PROSTITUTE VWFYPRO LVpunterX[4] LVpunterY[4] LVpunterZ[4] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[4] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer CALI // at Caligula's Palace, spawn whore at the High Roller CREATE_CHAR PEDTYPE_PROSTITUTE VBFYPRO LVpunterX[7] LVpunterY[7] LVpunterZ[7] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[7] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer HIGH // at the High Roller, spawn whore at Caligula's Palace. CREATE_CHAR PEDTYPE_PROSTITUTE VBFYPRO LVpunterX[6] LVpunterY[6] LVpunterZ[6] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[6] GOSUB whore_suitable ENDIF ENDIF // end of pp2 IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer PILG // at Pilgrim, spawn whore at the starfish casino CREATE_CHAR PEDTYPE_PROSTITUTE VWFYPRO LVpunterX[9] LVpunterY[9] LVpunterZ[9] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[9] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer STAR // at the Starfish Casino, spawn whore at Pilgrim CREATE_CHAR PEDTYPE_PROSTITUTE VWFYPRO LVpunterX[8] LVpunterY[8] LVpunterZ[8] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[8] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer STRIP // at the Strip, spawn whore at The Visage CREATE_CHAR PEDTYPE_PROSTITUTE VBFYPRO LVpunterX[11] LVpunterY[11] LVpunterZ[11] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[11] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer VISA // at the Visage, spawn whore at the strip. CREATE_CHAR PEDTYPE_PROSTITUTE VBFYPRO LVpunterX[10] LVpunterY[10] LVpunterZ[10] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[10] GOSUB whore_suitable ENDIF ENDIF // end of pp3 IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer ISLE // at the Emerald Isle casino, spawn whore at the Roca Escalante CREATE_CHAR PEDTYPE_PROSTITUTE VWFYPRO LVpunterX[13] LVpunterY[13] LVpunterZ[13] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[13] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer ROCE // at the Roca Escalante, spawn whore at the Emerald Isle Casino CREATE_CHAR PEDTYPE_PROSTITUTE VWFYPRO LVpunterX[12] LVpunterY[12] LVpunterZ[12] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[12] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer OVS // On the Old Venturas Strip, spawn whore at the Ring Master AKA the clown's pocket CREATE_CHAR PEDTYPE_PROSTITUTE VBFYPRO LVpunterX[15] LVpunterY[15] LVpunterZ[15] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[15] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer RING // at the Ring Master AKA the Clown's Pocket, spawn whore on the Old Venturas Strip CREATE_CHAR PEDTYPE_PROSTITUTE VBFYPRO LVpunterX[14] LVpunterY[14] LVpunterZ[14] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[14] GOSUB whore_suitable ENDIF ENDIF // end of pp4 IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer BFC // at the Blackfield Chapel, spawn whore at the greenglass college CREATE_CHAR PEDTYPE_PROSTITUTE VWFYPRO LVpunterX[17] LVpunterY[17] LVpunterZ[17] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[17] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer GGC // at the Greenglass College, spawn whore at the Blackfield Chapel CREATE_CHAR PEDTYPE_PROSTITUTE VWFYPRO LVpunterX[16] LVpunterY[16] LVpunterZ[16] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[16] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer VAIR // At Las Venturas Airport, spawn whore at the Last Dime Motel CREATE_CHAR PEDTYPE_PROSTITUTE VBFYPRO LVpunterX[19] LVpunterY[19] LVpunterZ[19] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[19] GOSUB whore_suitable ENDIF ENDIF IF whore_spawned = 0 IF IS_CHAR_IN_ZONE scplayer LDM // at the LDM, spawn whore at the Las Venturas Airport. CREATE_CHAR PEDTYPE_PROSTITUTE VBFYPRO LVpunterX[18] LVpunterY[18] LVpunterZ[18] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[18] GOSUB whore_suitable ENDIF ENDIF // end of pp5 //If the player started out in the sticks they automatically wouldn't //have a starting zone so we need to create a whore in the centre of the closest city somewhere. //If whore_spawned still equals zero ( it gets incremented in whore_suitable proc, after all of the //above checks, it also acts as a failsafe in case the player is in a zone that has been missed out! IF whore_spawned = 0 // Failsafe! Only gets called if all above zone checks pass a negative // Failsafe! Player started out of town, nearest city was SF, spawn white Vegas whore at PINK, the Pink Swan CREATE_CHAR PEDTYPE_PROSTITUTE VWFYPRO LVpunterX[0] LVpunterY[0] LVpunterZ[0] pimp_whore[wIndex] SET_CHAR_HEADING pimp_whore[wIndex] LVpunterH[0] GOSUB whore_suitable ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED VWFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED VBFYPRO ENDIF // pimp_city = LEVEL_LASVEGAS ENDIF IF whore_spawned = 1 IF NOT IS_CHAR_DEAD pimp_whore[wIndex] TASK_STAND_STILL pimp_whore[wIndex] -1 REMOVE_BLIP pimp_whoreB ADD_BLIP_FOR_CHAR pimp_whore[wIndex] pimp_whoreB SET_CHAR_DECISION_MAKER pimp_whore[wIndex] pimp_emptydm SET_CHAR_ONLY_DAMAGED_BY_PLAYER pimp_whore[wIndex] TRUE SET_CHAR_CANT_BE_DRAGGED_OUT pimp_whore[wIndex] TRUE SET_BLIP_AS_FRIENDLY pimp_whoreB TRUE IF wIndex = 0 PRINT_NOW PIMP_2 6000 1 SET_CHAR_CANT_BE_DRAGGED_OUT pimp_whore[wIndex] TRUE ENDIF IF wIndex = 1 CLEAR_PRINTS WRITE_LOG "8" PRINT_NOW PIMP_30 6000 1 SET_CHAR_CANT_BE_DRAGGED_OUT pimp_whore[wIndex] TRUE ENDIF //WRITE_DEBUG grabbedwhore whore_spawned = 2 whore_created = 1 ENDIF ENDIF IF whore_created = 1 IF DOES_CHAR_EXIST pimp_whore[0] IF IS_CHAR_DEAD pimp_whore[0] PRINT_NOW PIMP_51 8000 1 GOTO mission_pimp_failed ENDIF ENDIF IF both_whores_spawned = 1 IF DOES_CHAR_EXIST pimp_whore[1] IF IS_CHAR_DEAD pimp_whore[1] PRINT_NOW PIMP_51 8000 1 GOTO mission_pimp_failed ENDIF ENDIF ENDIF ENDIF IF whore_spawned = 2 IF call_fix = 1 IF timera > 4000 PRINT_NOW PIMP_57 6000 1 call_fix = 99 ENDIF ENDIF // IF cheap_fix = 1 // IF timera > 4000 // PRINT_NOW PIMP_37 6000 1 // cheap_fix = 99 // ENDIF // ENDIF // // IF beat_fix = 1 // IF timera > 4000 // PRINT_NOW PIMP_36 6000 1 // beat_fix = 99 // ENDIF // ENDIF IF NOT IS_CHAR_DEAD pimp_whore[wIndex] IF NOT IS_CAR_DEAD pimp_car IF pimp_blipswap = 0 IF NOT IS_CHAR_IN_CAR scplayer pimp_car ADD_BLIP_FOR_CAR pimp_car pimp_carB SET_BLIP_AS_FRIENDLY pimp_carB TRUE REMOVE_BLIP pimp_whoreB pimp_blipswap = 1 ENDIF ENDIF // bcou_blipswap = 0 condition check IF pimp_blipswap = 1 IF IS_CHAR_IN_CAR scplayer pimp_car REMOVE_BLIP pimp_carB pimp_blipswap = 0 REMOVE_BLIP pimp_whoreB ADD_BLIP_FOR_CHAR pimp_whore[wIndex] pimp_whoreB SET_BLIP_AS_FRIENDLY pimp_whoreB TRUE PRINT_NOW PIMP_54 6000 1 pimp_blipswap = 0 ENDIF ENDIF IF whore_entervehicle = 0 IF pimp_blipswap = 0 IF LOCATE_CHAR_IN_CAR_CHAR_2D scplayer pimp_whore[wIndex] 7.0 7.0 FALSE IF whore_lookat = 0 OPEN_SEQUENCE_TASK whore_acknowledgeseq TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_STAND_STILL -1 -1 CLOSE_SEQUENCE_TASK whore_acknowledgeseq PERFORM_SEQUENCE_TASK pimp_whore[wIndex] whore_acknowledgeseq CLEAR_SEQUENCE_TASK whore_acknowledgeseq whore_lookat = 1 ENDIF IF IS_CAR_STOPPED pimp_car CLEAR_CHAR_TASKS pimp_whore[wIndex] TASK_ENTER_CAR_AS_PASSENGER pimp_whore[wIndex] pimp_car 60000 -1 // should be -1, to enter any seat whore_entervehicle = 1 // write_debug_with_int wi wIndex ENDIF ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD pimp_car //write_debug_with_int wi wIndex IF NOT IS_CHAR_DEAD pimp_whore[wIndex] IF IS_CHAR_SITTING_IN_CAR pimp_whore[wIndex] pimp_car // write_debug_with_int wi wIndex IF increments_this_run < 2 increments_this_run++ INCREMENT_INT_STAT NUM_GIRLS_PIMPED 1 ENDIF whore_entervehicle = 2 REMOVE_BLIP pimp_whoreB whore_spawned = 99 whore_trickfind = 1 GOSUB pimp_patch_decider pimp_chat = 1 TIMERA = 0 IF whore_tricknumber = 10//10 CLEAR_PRINTS WRITE_LOG "9" PRINT_NOW SEXGOD 6000 1 GOTO mission_pimp_passed ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF whore_entervehicle = 1 IF NOT IS_CHAR_DEAD pimp_whore[wIndex] IF NOT IS_CAR_DEAD pimp_car GET_SCRIPT_TASK_STATUS pimp_whore[wIndex] TASK_ENTER_CAR_AS_PASSENGER pimptask_status IF pimptask_status = FINISHED_TASK IF NOT IS_CHAR_IN_CAR pimp_whore[wIndex] pimp_car CLEAR_CHAR_TASKS pimp_whore[wIndex] TASK_ENTER_CAR_AS_PASSENGER pimp_whore[wIndex] pimp_car 60000 -1 ENDIF ENDIF ENDIF ENDIF ENDIF /* IF punter_wander[pimp_removalindex] = 1 TASK_SMART_FLEE_CHAR punter[pimp_removalindex] scplayer 100.0 -1 punter_wander[pimp_removalindex] = 2 ENDIF */ IF whore_trickfind = 1 //GOSUB pimp_patch_decider IF pimp_city = LEVEL_LOSANGELES //IF TIMERA > 2000 working IF pimp_patch = 1 //South Los Santos A IF pimp_donealready[0] = 1 IF pimp_donealready[1] = 1 IF pimp_donealready[2] = 1 IF pimp_donealready[3] = 1 pimp_patch = 2 // All tricks done in this area , need to try another ENDIF ENDIF ENDIF ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 4 pimp_trick //TIMERA = 0 IF pimp_trick = 0 //SLS B Docks IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL swmyhp1 WHILE NOT HAS_MODEL_LOADED swmyhp1 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE swmyhp1 LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED swmyhp1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_10 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 1 //SLS B Airport LAIR Los Santos International //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL swmyhp1 WHILE NOT HAS_MODEL_LOADED swmyhp1 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE swmyhp1 LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED swmyhp1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_11 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 2 //SLS B Industrial LIND Willowfield //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL swmyhp1 WHILE NOT HAS_MODEL_LOADED swmyhp1 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE swmyhp1 LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED swmyhp1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_12 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 3 //SLS B Was (Verdant ) BLUF Bluffs //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL BMYST WHILE NOT HAS_MODEL_LOADED BMYST WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE BMYST LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED BMYST SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_13 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF ENDIF IF pimp_patch = 2 //South Los Santos B IF pimp_donealready[4] = 1 IF pimp_donealready[5] = 1 IF pimp_donealready[6] = 1 IF pimp_donealready[7] = 1 pimp_patch = 3 // All tricks done in this area , need to try another ENDIF ENDIF ENDIF ENDIF GENERATE_RANDOM_INT_IN_RANGE 4 8 pimp_trick IF pimp_trick = 4 //NLS A Civic Centre / City Hall etc... COM Commerce IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL bmyst WHILE NOT HAS_MODEL_LOADED bmyst WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE bmyst LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED bmyst SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_14 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick ENDIF IF pimp_trick = 5 //NLS A Downtown LDT Downtown Los Santos //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmybu WHILE NOT HAS_MODEL_LOADED wmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmybu LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_15 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 6 //NLS A Glen Park GLN Glen Park //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL BMYST WHILE NOT HAS_MODEL_LOADED BMYST WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE BMYST LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED BMYST SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_16 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 7 //NLS A Chicano Heights CHC Las Colinas Now Little Mexico //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL BMYST WHILE NOT HAS_MODEL_LOADED BMYST WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE BMYST LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED BMYST SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_17 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF ENDIF IF pimp_patch = 3 //North Los Santos A IF pimp_donealready[8] = 1 IF pimp_donealready[9] = 1 IF pimp_donealready[10] = 1 IF pimp_donealready[11] = 1 pimp_patch = 4 // All tricks done in this area , need to try another ENDIF ENDIF ENDIF ENDIF GENERATE_RANDOM_INT_IN_RANGE 8 12 pimp_trick IF pimp_trick = 8 //NLS B Jefferson JEFSN Jefferson //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmoprea WHILE NOT HAS_MODEL_LOADED wmoprea WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmoprea LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmoprea SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_18 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 9 //NLS B East Los Santos ELS East Los Santos //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL hmyst WHILE NOT HAS_MODEL_LOADED hmyst WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE hmyst LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED hmyst SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_19 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 10 //NLS B Los Flores LFL Los Flores //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL hmyst WHILE NOT HAS_MODEL_LOADED hmyst WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE hmyst LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED hmyst SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_20 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 11 //NLS B East Beach EBE East Beach //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmybu WHILE NOT HAS_MODEL_LOADED wmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmybu LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_21 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF ENDIF IF pimp_patch = 4 //North Los Santos B IF pimp_donealready[12] = 1 IF pimp_donealready[13] = 1 IF pimp_donealready[14] = 1 IF pimp_donealready[15] = 1 pimp_patch = 5 // All tricks done in this area , need to try another ENDIF ENDIF ENDIF ENDIF GENERATE_RANDOM_INT_IN_RANGE 12 16 pimp_trick IF pimp_trick = 12 //WLS A CONF Conference Centre //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmybu WHILE NOT HAS_MODEL_LOADED wmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmybu LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_22 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 13 //WLS A VERON Verona Beach //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmybmx WHILE NOT HAS_MODEL_LOADED wmybmx WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmybmx LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmybmx SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_23 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 14 //WLS A SMB Santa Maria Beach IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL bmybu WHILE NOT HAS_MODEL_LOADED bmybu WAIT 0 ENDWHILE // // //Changed as it was too far away at times! Points to Verona ( 13 ) // // CREATE_CHAR PEDTYPE_CIVMALE bmybu LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED bmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_24 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick ENDIF IF pimp_trick = 15 //WLS A Marina //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmymech WHILE NOT HAS_MODEL_LOADED wmymech WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmymech LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmymech SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_25 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF ENDIF IF pimp_patch = 5 //West Los Santos A IF pimp_donealready[16] = 1 IF pimp_donealready[17] = 1 IF pimp_donealready[18] = 1 IF pimp_donealready[19] = 1 pimp_patch = 6 // All tricks done in this area , need to try another ENDIF ENDIF ENDIF ENDIF GENERATE_RANDOM_INT_IN_RANGE 16 20 pimp_trick IF pimp_trick = 16 //WLS B SMB Santa Maria Beach COULD BE MARKET!!!!!! Went for Market IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmybu WHILE NOT HAS_MODEL_LOADED wmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmybu LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_26 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick ENDIF IF pimp_trick = 17 //WLS B PLS Playa Del Sevilla ? Doesn't exist? Will use another Rodeo coord IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL hmyst WHILE NOT HAS_MODEL_LOADED hmyst WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE hmyst LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED hmyst SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_27 4000 1 //Central Rodeo whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick ENDIF IF pimp_trick = 18 //WLS B ROD Rodeo //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmybmx WHILE NOT HAS_MODEL_LOADED wmybmx WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmybmx LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmybmx SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_28 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 19 //WLS B RIH Richman Heights //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL bmybu WHILE NOT HAS_MODEL_LOADED bmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE bmybu LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED bmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_29 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF ENDIF IF pimp_patch = 6 //West Los Santos B IF pimp_donealready[20] = 1 IF pimp_donealready[21] = 1 IF pimp_donealready[22] = 1 IF pimp_donealready[23] = 1 pimp_patch = 7 // All tricks done in this area , need to try another ENDIF ENDIF ENDIF ENDIF GENERATE_RANDOM_INT_IN_RANGE 20 24 pimp_trick IF pimp_trick = 20 //WLS C MUL Mulholland //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmygol1 WHILE NOT HAS_MODEL_LOADED wmygol1 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmygol1 LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmygol1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_80 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 21 //WLS C MUL Mulholland Carwash //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmymech WHILE NOT HAS_MODEL_LOADED wmymech WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmymech LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmymech SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_81 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 22 //WLS C VIN Vinewood //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL hmyst WHILE NOT HAS_MODEL_LOADED hmyst WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE hmyst LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED hmyst SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_82 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 23 //WLS C SUN Sunrise / Temple boulevard IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmoprea WHILE NOT HAS_MODEL_LOADED wmoprea WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmoprea LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmoprea SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_83 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick ENDIF ENDIF IF pimp_patch = 7 //West Los Santos C IF pimp_donealready[24] = 1 IF pimp_donealready[25] = 1 IF pimp_donealready[26] = 1 IF pimp_donealready[27] = 1 pimp_patch = 1 // All tricks done in this area , need to try another ENDIF ENDIF ENDIF ENDIF GENERATE_RANDOM_INT_IN_RANGE 24 28 pimp_trick IF pimp_trick = 24 //SLS A IWD Idlewood //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL bmyboun WHILE NOT HAS_MODEL_LOADED bmyboun WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE bmyboun LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED bmyboun SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_84 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 25 //SLS A GAN Ganton //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL bmydj WHILE NOT HAS_MODEL_LOADED bmydj WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE bmydj LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED bmydj SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_85 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 26 //SLS A El Corona ELCO El Corona //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmydrug WHILE NOT HAS_MODEL_LOADED wmydrug WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmydrug LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmydrug SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_86 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 27 //SLS A Little Mexico IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL hmyst WHILE NOT HAS_MODEL_LOADED hmyst WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE hmyst LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LApunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED hmyst SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP_87 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick ENDIF ENDIF ENDIF // pimp_city = LEVEL_LOSANGELES condition check ///////////////////////////////////////////////////////////////////////////////////////////////////////End of LA coords IF pimp_city = LEVEL_SANFRANCISCO IF pimp_patch = 1 //SF IF pimp_donealready[0] = 1 IF pimp_donealready[1] = 1 IF pimp_donealready[2] = 1 IF pimp_donealready[3] = 1 pimp_patch = 2 // All tricks done in this area , need to try another ENDIF ENDIF ENDIF ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 4 pimp_trick //TIMERA = 0 IF pimp_trick = 0 //CALT, brick path at Calton Heights IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL swmyhp1 WHILE NOT HAS_MODEL_LOADED swmyhp1 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE swmyhp1 SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED swmyhp1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP200 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 1 //Top of Park JUNIHI, Juniper Hill //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL swmyhp1 WHILE NOT HAS_MODEL_LOADED swmyhp1 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE swmyhp1 SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED swmyhp1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP201 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 2 //JUNIHI Juniper Hill //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL WMYMECH WHILE NOT HAS_MODEL_LOADED WMYMECH WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE WMYMECH SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP202 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 3 //ESPN Esplanade North //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL WMYMECH WHILE NOT HAS_MODEL_LOADED WMYMECH WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE WMYMECH SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP203 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF ENDIF // pp1 IF pimp_patch = 2 //SF IF pimp_donealready[4] = 1 IF pimp_donealready[5] = 1 IF pimp_donealready[6] = 1 IF pimp_donealready[7] = 1 pimp_patch = 3 // All tricks done in this area , need to try another ENDIF ENDIF ENDIF ENDIF GENERATE_RANDOM_INT_IN_RANGE 4 8 pimp_trick //TIMERA = 0 IF pimp_trick = 4 //SUNMA , Bayside Marina pimp_donealready[pimp_trick] = 1 //This will disable this location from ever being picked as it might not have been opened up yet. //! //! IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL bmybu WHILE NOT HAS_MODEL_LOADED bmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE bmybu SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED bmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP204 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 5 //Bayside Housing, car park near front pier //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick pimp_donealready[pimp_trick] = 1 //This will disable this location from ever being picked as it might not have been opened up yet. //! //! IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmybu WHILE NOT HAS_MODEL_LOADED wmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmybu SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP205 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 6 //Driveway of house nearby Battery Point DODGY! Coords aren't in actual zones now! //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL WMYMECH WHILE NOT HAS_MODEL_LOADED WMYMECH WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE WMYMECH SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP206 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 7 //Corner of road in Pallisades , near Gant Bridge DODGY! Coords aren't in actual zones now! //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL BMYST WHILE NOT HAS_MODEL_LOADED BMYST WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE BMYST SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED BMYST SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP207 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF ENDIF //pp2 IF pimp_patch = 3 //SF IF pimp_donealready[8] = 1 IF pimp_donealready[9] = 1 IF pimp_donealready[10] = 1 IF pimp_donealready[11] = 1 pimp_patch = 4 // All tricks done in this area , need to try another ENDIF ENDIF ENDIF ENDIF GENERATE_RANDOM_INT_IN_RANGE 8 12 pimp_trick //TIMERA = 0 IF pimp_trick = 8 //CHINA Chinatown IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL OMOST WHILE NOT HAS_MODEL_LOADED OMOST WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE OMOST SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED OMOST SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP208 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 9 //Downtown, near plaza section //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmybu WHILE NOT HAS_MODEL_LOADED wmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmybu SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP209 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 10 //Financial district by big blue glass fronted building //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL bmybu WHILE NOT HAS_MODEL_LOADED bmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE bmybu SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED bmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP210 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 11 //Esplanade East on promenade area //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL BMYST WHILE NOT HAS_MODEL_LOADED BMYST WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE BMYST SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED BMYST SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP211 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF ENDIF //pp3 IF pimp_patch = 4 //SF IF pimp_donealready[12] = 1 IF pimp_donealready[13] = 1 IF pimp_donealready[14] = 1 IF pimp_donealready[15] = 1 pimp_patch = 5 // All tricks done in this area , need to try another ENDIF ENDIF ENDIF ENDIF GENERATE_RANDOM_INT_IN_RANGE 12 16 pimp_trick //TIMERA = 0 IF pimp_trick = 12 //WESTP West Park IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmybu WHILE NOT HAS_MODEL_LOADED wmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmybu SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP212 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 13 //HASH Hashbury //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL WMYDRUG WHILE NOT HAS_MODEL_LOADED WMYDRUG WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE WMYDRUG SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED WMYDRUG SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP213 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 14 //Ocean Flats //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL bmybu WHILE NOT HAS_MODEL_LOADED bmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE bmybu SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED bmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP214 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 15 //Avispa Country Club //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL WMYGOL1 WHILE NOT HAS_MODEL_LOADED WMYGOL1 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE WMYGOL1 SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED WMYGOL1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP215 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF ENDIF //pp4 IF pimp_patch = 5 //SF IF pimp_donealready[16] = 1 IF pimp_donealready[17] = 1 IF pimp_donealready[18] = 1 IF pimp_donealready[19] = 1 pimp_patch = 6 // All tricks done in this area , need to try another ENDIF ENDIF ENDIF ENDIF GENERATE_RANDOM_INT_IN_RANGE 16 20 pimp_trick //TIMERA = 0 IF pimp_trick = 16 //King's Car Park IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmybu WHILE NOT HAS_MODEL_LOADED wmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmybu SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP216 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 17 //Garcia side alley //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL WMYDRUG WHILE NOT HAS_MODEL_LOADED WMYDRUG WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE WMYDRUG SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED WMYDRUG SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP217 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 18 //Doherty building site //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL WMYCON WHILE NOT HAS_MODEL_LOADED WMYCON WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE WMYCON SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED WMYCON SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP218 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 19 //Easter Basin by bridge pillar //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL WMYMECH WHILE NOT HAS_MODEL_LOADED WMYMECH WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE WMYMECH SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP219 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF ENDIF //pp5 IF pimp_patch = 6 //SF IF pimp_donealready[20] = 1 IF pimp_donealready[21] = 1 IF pimp_donealready[22] = 1 pimp_patch = 7 // All tricks done in this area , need to try another ENDIF ENDIF ENDIF GENERATE_RANDOM_INT_IN_RANGE 20 23 pimp_trick //TIMERA = 0 IF pimp_trick = 20 //Foot of Missionary Hill IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmybu WHILE NOT HAS_MODEL_LOADED wmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmybu SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP220 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 21 //By rock display in Foster Valley //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL bmybu WHILE NOT HAS_MODEL_LOADED bmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE bmybu SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED bmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP221 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 22 //near guard hut at Easter Bay Airport //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmysgrd WHILE NOT HAS_MODEL_LOADED wmysgrd WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmysgrd SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmysgrd SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP222 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF ENDIF //pp6 IF pimp_patch = 7 //SF IF pimp_donealready[23] = 1 IF pimp_donealready[24] = 1 IF pimp_donealready[25] = 1 IF pimp_donealready[26] = 1 pimp_patch = 1 // All tricks done in this area , need to try another ENDIF ENDIF ENDIF ENDIF GENERATE_RANDOM_INT_IN_RANGE 23 27 pimp_trick //TIMERA = 0 IF pimp_trick = 23 //Pallisades Terrace IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmybu WHILE NOT HAS_MODEL_LOADED wmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmybu SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP223 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 24 // Back Alley in Paradiso //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL WMYDRUG WHILE NOT HAS_MODEL_LOADED WMYDRUG WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE WMYDRUG SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED WMYDRUG SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP224 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 25 //car park in Santa Flora //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmybmx WHILE NOT HAS_MODEL_LOADED wmybmx WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmybmx SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmybmx SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP225 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 26 //City Hall //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL bmybu WHILE NOT HAS_MODEL_LOADED bmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE bmybu SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] SFpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED bmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP226 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 //pimp_removalindex = 0 ENDIF ENDIF ENDIF //pp7 // Don't forget check stuff to ensure pimp-patch is a number which will generate a punter // put in here >>>>>>>>>>>>>>>> ENDIF // pimp_city = LEVEL_SANFRANCISCO condition check IF pimp_city = LEVEL_LASVEGAS IF pimp_patch = 1 //LAS VEGAS IF pimp_donealready[0] = 1 IF pimp_donealready[1] = 1 IF pimp_donealready[2] = 1 IF pimp_donealready[3] = 1 pimp_patch = 2 // All tricks done in this area , need to try another ENDIF ENDIF ENDIF ENDIF GENERATE_RANDOM_INT_IN_RANGE 0 4 pimp_trick //TIMERA = 0 IF pimp_trick = 0 //Pink Swan Casino IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL swmyhp1 WHILE NOT HAS_MODEL_LOADED swmyhp1 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE swmyhp1 LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED swmyhp1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP300 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 1 //Four Dragon's Casino IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL swmyhp1 WHILE NOT HAS_MODEL_LOADED swmyhp1 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE swmyhp1 LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED swmyhp1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP301 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 2 //Camel's Toe IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL bmybu WHILE NOT HAS_MODEL_LOADED bmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE bmybu LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED bmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP302 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 3 //Come-A-Lot IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmybu WHILE NOT HAS_MODEL_LOADED wmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmybu LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP303 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF ENDIF // pp1 IF pimp_patch = 2 //LAS VEGAS IF pimp_donealready[4] = 1 IF pimp_donealready[5] = 1 IF pimp_donealready[6] = 1 IF pimp_donealready[7] = 1 pimp_patch = 3 // All tricks done in this area , need to try another ENDIF ENDIF ENDIF ENDIF GENERATE_RANDOM_INT_IN_RANGE 4 8 pimp_trick //TIMERA = 0 IF pimp_trick = 4 //The Pirates in Men's Pants IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL DWMOLC1 WHILE NOT HAS_MODEL_LOADED DWMOLC1 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE DWMOLC1 LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED DWMOLC1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP304 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 5 //Royal Casino IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL DWMOLC2 WHILE NOT HAS_MODEL_LOADED DWMOLC2 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE DWMOLC2 LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED DWMOLC2 SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP305 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 6 //Caligula's Palace IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL bmybu WHILE NOT HAS_MODEL_LOADED bmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE bmybu LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED bmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP306 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 7 //The High Roller IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmybu WHILE NOT HAS_MODEL_LOADED wmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmybu LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP307 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF ENDIF // pp2 IF pimp_patch = 3 //LAS VEGAS IF pimp_donealready[8] = 1 IF pimp_donealready[9] = 1 IF pimp_donealready[10] = 1 IF pimp_donealready[11] = 1 pimp_patch = 4 // All tricks done in this area , need to try another ENDIF ENDIF ENDIF ENDIF GENERATE_RANDOM_INT_IN_RANGE 8 12 pimp_trick //TIMERA = 0 IF pimp_trick = 8 //Pilgrim IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL DWMOLC1 WHILE NOT HAS_MODEL_LOADED DWMOLC1 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE DWMOLC1 LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED DWMOLC1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP308 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 9 //Starfish Casino IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL DWMOLC2 WHILE NOT HAS_MODEL_LOADED DWMOLC2 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE DWMOLC2 LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED DWMOLC2 SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP309 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 10 //The Strip IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL bmybu WHILE NOT HAS_MODEL_LOADED bmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE bmybu LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED bmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP310 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 11 //The Visage IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmybu WHILE NOT HAS_MODEL_LOADED wmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmybu LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP311 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF ENDIF // pp3 IF pimp_patch = 4 //LAS VEGAS IF pimp_donealready[12] = 1 IF pimp_donealready[13] = 1 IF pimp_donealready[14] = 1 IF pimp_donealready[15] = 1 pimp_patch = 5 // All tricks done in this area , need to try another ENDIF ENDIF ENDIF ENDIF GENERATE_RANDOM_INT_IN_RANGE 12 16 pimp_trick //TIMERA = 0 IF pimp_trick = 12 // The Emerald Isle IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL WMYMECH WHILE NOT HAS_MODEL_LOADED WMYMECH WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE WMYMECH LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED WMYMECH SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP312 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 13 //Roca Escalante IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL DWMYLC1 WHILE NOT HAS_MODEL_LOADED DWMYLC1 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE DWMYLC1 LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED DWMYLC1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP313 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 14 //Old Venturas Strip IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL bmybu WHILE NOT HAS_MODEL_LOADED bmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE bmybu LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED bmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP314 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 15 //The Ring Master AKA the Clown's Pocket IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmydrug WHILE NOT HAS_MODEL_LOADED wmydrug WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmydrug LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmydrug SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP315 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF ENDIF // pp4 IF pimp_patch = 5 //LAS VEGAS IF pimp_donealready[16] = 1 IF pimp_donealready[17] = 1 IF pimp_donealready[18] = 1 IF pimp_donealready[19] = 1 pimp_patch = 1 // All tricks done in this area , need to try another ENDIF ENDIF ENDIF ENDIF GENERATE_RANDOM_INT_IN_RANGE 16 20 pimp_trick //TIMERA = 0 IF pimp_trick = 16 // Blackfield Chapel IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmoprea WHILE NOT HAS_MODEL_LOADED wmoprea WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmoprea LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmoprea SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP316 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 17 //Greenglass College IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL wmyst WHILE NOT HAS_MODEL_LOADED wmyst WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE wmyst LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED wmyst SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP317 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 18 //Las Venturas Airport IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL bmybu WHILE NOT HAS_MODEL_LOADED bmybu WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE bmybu LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED bmybu SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP318 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF IF pimp_trick = 19 //Last Dime Motel IF pimp_donealready[pimp_trick] = 0 REQUEST_MODEL DWMYLC1 WHILE NOT HAS_MODEL_LOADED DWMYLC1 WAIT 0 ENDWHILE CREATE_CHAR PEDTYPE_CIVMALE DWMYLC1 LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] punter[pimp_trick] //WRITE_DEBUG_WITH_INT Trick_located_in_area pimp_trick SET_CHAR_HEADING punter[pimp_trick] LVpunterH[pimp_trick] MARK_MODEL_AS_NO_LONGER_NEEDED DWMYLC1 SET_CHAR_ONLY_DAMAGED_BY_PLAYER punter[pimp_trick] TRUE PRINT_NOW PIMP319 4000 1 whore_trickfind = 2 TIMERA = 0 pimp_donealready[pimp_trick] = 1 punterhurt[pimp_trick] = 1 // punter created - flagged as "hurt him you fail!" //pimp_removalindex = 0 ENDIF ENDIF ENDIF // pp5 ENDIF // pimp_city = LEVEL_LASVEGAS condition check ENDIF // punter creation section IF pimp_chat = 1 IF TIMERA > 5000 IF whore_tricknumber < 1 IF wIndex = 0 PRINT_NOW PIMP_3 6000 1 ENDIF IF wIndex = 1 PRINT_NOW PIMP_31 6000 1 ENDIF ENDIF IF whore_tricknumber > 0 pimp_sfx = 1 // play wheezing IF NOT punter_scenario = 1 CLEAR_ONSCREEN_TIMER pimp_runtimer pimp_cut = 300 total_pimpbonus = whore_tricknumber * pimp_cut timera = 0 WHILE timera < 5000 // Give the widget the data it needs for display. // // Args are: cell int0 int1 color label text //================================================================================================= SET_WIDGET_INFO2 WIDGET_RACE_RESULTS 0 pimp_cut 0 WAGER_GREEN PIMP_72 DUMMY // Trick Cut SET_WIDGET_INFO2 WIDGET_RACE_RESULTS 1 whore_tricknumber 0 WAGER_WHITE PIMP_73 DUMMY // Multiplier SET_WIDGET_INFO2 WIDGET_RACE_RESULTS 2 total_pimpbonus 0 WAGER_GREEN PIMP_74 DUMMY // Total Cash SET_WIDGET_INFO2 WIDGET_RACE_RESULTS 3 0 0 WAGER_WHITE DUMMY DUMMY // Empty Cell SET_WIDGET_INFO2 WIDGET_RACE_RESULTS 4 0 0 WAGER_WHITE DUMMY DUMMY // Empty Cell WAIT 0 ENDWHILE ftotal_pimpbonus =# total_pimpbonus // need a float copy of total pimp bonus in order to increment stat properly. IF wIndex = 0 PRINT_NOW PIMP_7 6000 1 ADD_SCORE player1 total_pimpbonus INCREMENT_FLOAT_STAT MONEY_MADE_PIMPING ftotal_pimpbonus ENDIF IF wIndex = 1 PRINT_NOW PIMP_32 6000 1 ADD_SCORE player1 total_pimpbonus INCREMENT_FLOAT_STAT MONEY_MADE_PIMPING ftotal_pimpbonus ENDIF ENDIF ENDIF pimp_chat = 2 TIMERA = 0 ENDIF ENDIF IF whore_trickfind = 2 IF NOT IS_CHAR_DEAD punter[pimp_trick] IF wIndex = 0 punter_holder0 = pimp_trick ENDIF IF wIndex = 1 punter_holder1 = pimp_trick ENDIF ENDIF REMOVE_BLIP punterB ADD_BLIP_FOR_CHAR punter[pimp_trick] punterB CHANGE_BLIP_COLOUR punterB yellow pimp_runtimer = 180000 CLEAR_ONSCREEN_TIMER pimp_runtimer pimp_timerpresent = 0 DISPLAY_ONSCREEN_TIMER_WITH_STRING pimp_runtimer TIMER_DOWN PIMP_90 pimp_timerpresent = 1 // deliver girl check whore_trickfind = 3 whore_stopprompt = 0 ENDIF IF whore_trickfind = 3 IF NOT IS_CHAR_DEAD punter[pimp_trick] IF NOT IS_CAR_DEAD pimp_car IF pimp_blipswap = 0 IF NOT IS_CHAR_IN_CAR scplayer pimp_car ADD_BLIP_FOR_CAR pimp_car pimp_carB SET_BLIP_AS_FRIENDLY pimp_carB TRUE REMOVE_BLIP punterB pimp_blipswap = 1 ENDIF ENDIF // bcou_blipswap = 0 condition check IF pimp_blipswap = 1 IF IS_CHAR_IN_CAR scplayer pimp_car REMOVE_BLIP pimp_carB pimp_blipswap = 0 REMOVE_BLIP punterB ADD_BLIP_FOR_CHAR punter[pimp_trick] punterB CHANGE_BLIP_COLOUR punterB yellow PRINT_NOW PIMP_53 6000 1 pimp_blipswap = 0 ENDIF ENDIF IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR punter[pimp_trick] scplayer PRINT_NOW PIMP_52 8000 1 GOTO mission_pimp_failed ENDIF IF NOT IS_CAR_DEAD pimp_car IF NOT IS_CHAR_DEAD pimp_whore[wIndex] IF whore_leavevehicle = 0 IF pimp_blipswap = 0 IF LOCATE_CHAR_IN_CAR_CHAR_2D scplayer punter[pimp_trick] 10.0 10.0 FALSE //WRITE_DEBUG inpunterrange IF whore_stopprompt = 0 IF wIndex = 0 PRINT_NOW PIMP_6 4000 1 whore_stopprompt =1 ENDIF IF wIndex = 1 PRINT_NOW PIMP_33 4000 1 whore_stopprompt =1 ENDIF ENDIF whore_copy = wIndex // need to do this for timing issues IF IS_CAR_STOPPED pimp_car TASK_TURN_CHAR_TO_FACE_CHAR punter[pimp_trick] pimp_whore[whore_copy] CLEAR_CHAR_TASKS pimp_whore[whore_copy] punter_copy = pimp_trick pimp_timerpresent = 0 CLEAR_ONSCREEN_TIMER pimp_runtimer pimp_runtimer = 180000 OPEN_SEQUENCE_TASK whore_punterseq //TASK_TURN_CHAR_TO_FACE_CHAR -1 scplayer TASK_LEAVE_CAR -1 pimp_car CLEAR_MISSION_AUDIO 4 IF pimp_city = LEVEL_LOSANGELES TASK_GO_STRAIGHT_TO_COORD -1 LApunterX[pimp_trick] LApunterY[pimp_trick] LApunterZ[pimp_trick] PEDMOVE_RUN 10000 ENDIF IF pimp_city = LEVEL_SANFRANCISCO TASK_GO_STRAIGHT_TO_COORD -1 SFpunterX[pimp_trick] SFpunterY[pimp_trick] SFpunterZ[pimp_trick] PEDMOVE_RUN 10000 ENDIF IF pimp_city = LEVEL_LASVEGAS TASK_GO_STRAIGHT_TO_COORD -1 LVpunterX[pimp_trick] LVpunterY[pimp_trick] LVpunterZ[pimp_trick] PEDMOVE_RUN 10000 ENDIF CLOSE_SEQUENCE_TASK whore_punterseq PERFORM_SEQUENCE_TASK pimp_whore[whore_copy] whore_punterseq CLEAR_SEQUENCE_TASK whore_punterseq whore_leavevehicle = 1 whorepunterchat = 1 whore_trickfind = 4 TIMERA = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF whorepunterchat = 1 IF NOT IS_CHAR_DEAD pimp_whore[whore_copy] IF NOT IS_CHAR_DEAD punter[punter_copy] IF LOCATE_CHAR_ANY_MEANS_CHAR_2D pimp_whore[whore_copy] punter[punter_copy] 3.0 3.0 FALSE CLEAR_CHAR_TASKS pimp_whore[whore_copy] CLEAR_CHAR_TASKS punter[punter_copy] TASK_CHAT_WITH_CHAR pimp_whore[whore_copy] punter[punter_copy] true true //ped0 will lead the chatting TASK_CHAT_WITH_CHAR punter[punter_copy] pimp_whore[whore_copy] false true //ped1 will follow ped0 at chatting whorepunterchat = 0 ENDIF ENDIF ENDIF ENDIF IF whore_trickfind= 4 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR punter[pimp_trick] scplayer PRINT_NOW PIMP_52 8000 1 GOTO mission_pimp_failed ENDIF IF NOT IS_CHAR_DEAD pimp_whore[whore_copy] IF NOT IS_CHAR_DEAD punter[pimp_trick] IF both_whores_spawned = 1 whore_trickfind = 15 ENDIF IF both_whores_spawned = 0 IF wIndex = 0 whore_spawned = 0 pimp_patch_decided = 0 wIndex = 1 // Use the other hoor now! whore_trickfind = 99 REMOVE_BLIP punterB whore_lookat = 0 whore_entervehicle = 0 whore_leavevehicle = 0 both_whores_spawned = 1 ENDIF ENDIF ENDIF ENDIF ENDIF IF whore_trickfind = 15 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR punter[pimp_trick] scplayer PRINT_NOW PIMP_52 8000 1 GOTO mission_pimp_failed ENDIF REMOVE_BLIP punterB whore_lookat = 0 whore_entervehicle = 0 whore_leavevehicle = 0 // Once both hoors are delivered, we put blip back to previous hoor who is in // some sort of peril. When she's saved and dropped off we point back to the other one again. // Need a pointer to the punter though. Can just copy his index and refer back to him. GOSUB next_whore_decider whore_trickfind = 20 ENDIF IF whore_trickfind = 20 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR punter[pimp_trick] scplayer PRINT_NOW PIMP_52 8000 1 GOTO mission_pimp_failed ENDIF whore_trickfind = 25 ENDIF // whore_trickfind = 20 condition check IF whore_trickfind = 25 //final scenario GENERATE_RANDOM_INT_IN_RANGE 0 4 punter_scenario // write_debug_with_int ps punter_scenario IF whore_tricknumber < 2 punter_scenario = 3// proper // punter_scenario = 0 //test ENDIF IF punter_scenario = 0 whore_trickfind = 30 PRINT_NOW PIMP_35 6000 1 //Help I'm being beaten black and blue by this punk! beat_fix = 1 timera = 0 IF wIndex = 0 IF NOT IS_CHAR_DEAD punter[punter_holder0] REMOVE_BLIP punkB ADD_BLIP_FOR_CHAR punter[punter_holder0] punkB SET_CHAR_IS_TARGET_PRIORITY punter[punter_holder0] TRUE punterhurt[punter_holder0] = 0 // Don't need to check if the player has damaged this guy anymore CHANGE_BLIP_COLOUR punkB RED CLEAR_ONSCREEN_TIMER pimp_runtimer pimp_runtimer = 180000 DISPLAY_ONSCREEN_TIMER_WITH_STRING pimp_runtimer TIMER_DOWN PIMP_90 pimp_timerpresent = 2 // girl in danger check ENDIF ENDIF IF wIndex = 1 IF NOT IS_CHAR_DEAD punter[punter_holder1] REMOVE_BLIP punkB ADD_BLIP_FOR_CHAR punter[punter_holder1] punkB SET_CHAR_IS_TARGET_PRIORITY punter[punter_holder1] TRUE punterhurt[punter_holder1] = 0 // Don't need to check if the player has damaged this guy anymore CHANGE_BLIP_COLOUR punkB RED CLEAR_ONSCREEN_TIMER pimp_runtimer pimp_runtimer = 180000 DISPLAY_ONSCREEN_TIMER_WITH_STRING pimp_runtimer TIMER_DOWN PIMP_90 pimp_timerpresent = 2 // girl in danger check ENDIF ENDIF ENDIF IF punter_scenario = 1 whore_trickfind = 40 PRINT_NOW PIMP_39 6000 1 //This guy's a cheapskate! cheap_fix = 1 timera = 0 IF wIndex = 0 IF NOT IS_CHAR_DEAD punter[punter_holder0] REMOVE_BLIP punkB ADD_BLIP_FOR_CHAR punter[punter_holder0] punkB SET_CHAR_IS_TARGET_PRIORITY punter[punter_holder0] TRUE punterhurt[punter_holder0] = 0 // Don't need to check if the player has damaged this guy anymore SET_CHAR_MONEY punter[punter_holder0] 250 CHANGE_BLIP_COLOUR punkB RED CLEAR_ONSCREEN_TIMER pimp_runtimer pimp_runtimer = 180000 DISPLAY_ONSCREEN_TIMER_WITH_STRING pimp_runtimer TIMER_DOWN PIMP_90 pimp_timerpresent = 2 // girl in danger check ENDIF ENDIF IF wIndex = 1 IF NOT IS_CHAR_DEAD punter[punter_holder1] REMOVE_BLIP punkB ADD_BLIP_FOR_CHAR punter[punter_holder1] punkB SET_CHAR_IS_TARGET_PRIORITY punter[punter_holder1] TRUE punterhurt[punter_holder1] = 0 // Don't need to check if the player has damaged this guy anymore CHANGE_BLIP_COLOUR punkB RED SET_CHAR_MONEY punter[punter_holder1] 250 CLEAR_ONSCREEN_TIMER pimp_runtimer pimp_runtimer = 180000 DISPLAY_ONSCREEN_TIMER_WITH_STRING pimp_runtimer TIMER_DOWN PIMP_90 pimp_timerpresent = 2 // girl in danger check ENDIF ENDIF ENDIF IF punter_scenario = 2 call_fix = 0 whore_trickfind = 50 PRINT_NOW PIMP_56 4000 1 timera = 0 call_fix = 1 //Good job continue etc ENDIF IF punter_scenario = 3 call_fix = 0 whore_trickfind = 50 PRINT_NOW PIMP_56 4000 1 timera = 0 call_fix = 1 //Good job continue etc ENDIF // IF punter_scenario = 4 // call_fix = 0 // whore_trickfind = 50 // PRINT_NOW PIMP_56 4000 1 // timera = 0 // call_fix = 1 // //Good job continue etc // ENDIF // IF punter_scenario = 5 // call_fix = 0 // whore_trickfind = 50 // PRINT_NOW PIMP_56 4000 1 // timera = 0 // call_fix = 1 // //Good job continue etc // ENDIF ENDIF // whore_trickfind = 25 condition check IF whore_trickfind = 30 //punter_scenario = 0 //pimp_backonbikecheck = 99 // don't have time limit on player. IF cheap_fix = 1 IF timera > 4000 PRINT_NOW PIMP_37 6000 1 cheap_fix = 99 ENDIF ENDIF IF beat_fix = 1 IF timera > 4000 PRINT_NOW PIMP_36 6000 1 beat_fix = 99 ENDIF ENDIF IF NOT IS_CAR_DEAD pimp_car IF pimp_blipswap = 0 IF NOT IS_CHAR_IN_CAR scplayer pimp_car ADD_BLIP_FOR_CAR pimp_car pimp_carB SET_BLIP_AS_FRIENDLY pimp_carB TRUE REMOVE_BLIP punkB pimp_blipswap = 1 ENDIF ENDIF // bcou_blipswap = 0 condition check IF pimp_blipswap = 1 IF IS_CHAR_IN_CAR scplayer pimp_car REMOVE_BLIP pimp_carB IF wIndex = 0 IF NOT IS_CHAR_DEAD punter[punter_holder0] REMOVE_BLIP punkB ADD_BLIP_FOR_CHAR punter[punter_holder0] punkB CHANGE_BLIP_COLOUR punkB RED ENDIF ENDIF IF wIndex = 1 IF NOT IS_CHAR_DEAD punter[punter_holder1] REMOVE_BLIP punkB ADD_BLIP_FOR_CHAR punter[punter_holder1] punkB CHANGE_BLIP_COLOUR punkB RED ENDIF ENDIF PRINT_NOW PIMP_55 6000 1 pimp_blipswap = 0 ENDIF ENDIF ENDIF IF pimp_blipswap = 0 IF wIndex = 0 IF NOT IS_CHAR_DEAD pimp_whore[wIndex] IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer pimp_whore[wIndex] 50.0 50.0 FALSE IF NOT IS_CHAR_DEAD punter[punter_holder0] CLEAR_CHAR_TASKS pimp_whore[wIndex] //TASK_COWER pimp_whore[wIndex] TASK_KILL_CHAR_ON_FOOT pimp_whore[wIndex] punter[punter_holder0] TASK_KILL_CHAR_ON_FOOT punter[punter_holder0] pimp_whore[wIndex] PRINT_NOW PIMP_55 6000 1 whore_trickfind = 35 ENDIF ENDIF ENDIF ENDIF IF wIndex = 1 IF NOT IS_CHAR_DEAD pimp_whore[wIndex] IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer pimp_whore[wIndex] 50.0 50.0 FALSE IF NOT IS_CHAR_DEAD punter[punter_holder1] TASK_KILL_CHAR_ON_FOOT punter[punter_holder1] pimp_whore[wIndex] CLEAR_CHAR_TASKS pimp_whore[wIndex] TASK_KILL_CHAR_ON_FOOT pimp_whore[wIndex] punter[punter_holder1] PRINT_NOW PIMP_55 6000 1 whore_trickfind = 35 ENDIF ENDIF ENDIF ENDIF ENDIF IF wIndex = 0 IF IS_CHAR_DEAD punter[punter_holder0] REMOVE_BLIP punkB PRINT_NOW PIMP_38 4000 1 whore_trickfind = 50 ENDIF ENDIF IF wIndex = 1 IF IS_CHAR_DEAD punter[punter_holder1] REMOVE_BLIP punkB PRINT_NOW PIMP_38 4000 1 whore_trickfind = 50 ENDIF ENDIF ENDIF IF whore_trickfind = 35 pimp_backonbikecheck = 99 // don't have time limit on player. IF cheap_fix = 1 IF timera > 4000 PRINT_NOW PIMP_37 6000 1 cheap_fix = 99 ENDIF ENDIF IF beat_fix = 1 IF timera > 4000 PRINT_NOW PIMP_36 6000 1 beat_fix = 99 ENDIF ENDIF IF NOT IS_CAR_DEAD pimp_car IF pimp_blipswap = 0 IF NOT IS_CHAR_IN_CAR scplayer pimp_car ADD_BLIP_FOR_CAR pimp_car pimp_carB SET_BLIP_AS_FRIENDLY pimp_carB TRUE // REMOVE_BLIP punkB pimp_blipswap = 1 ENDIF ENDIF // bcou_blipswap = 0 condition check IF pimp_blipswap = 1 IF IS_CHAR_IN_CAR scplayer pimp_car REMOVE_BLIP pimp_carB IF wIndex = 0 IF NOT IS_CHAR_DEAD punter[punter_holder0] REMOVE_BLIP punkB ADD_BLIP_FOR_CHAR punter[punter_holder0] punkB CHANGE_BLIP_COLOUR punkB RED ENDIF ENDIF IF wIndex = 1 IF NOT IS_CHAR_DEAD punter[punter_holder1] REMOVE_BLIP punkB ADD_BLIP_FOR_CHAR punter[punter_holder1] punkB CHANGE_BLIP_COLOUR punkB RED ENDIF ENDIF PRINT_NOW PIMP_55 6000 1 pimp_blipswap = 0 ENDIF ENDIF ENDIF IF wIndex = 0 IF IS_CHAR_DEAD punter[punter_holder0] PRINT_NOW PIMP_38 4000 1 REMOVE_BLIP punkB whore_trickfind = 50 ENDIF ENDIF IF wIndex = 1 IF IS_CHAR_DEAD punter[punter_holder1] PRINT_NOW PIMP_38 4000 1 REMOVE_BLIP punkB whore_trickfind = 50 ENDIF ENDIF ENDIF IF whore_trickfind = 40 // punter_scenario = 1 //pimp_backonbikecheck = 99 // don't have time limit on player. IF cheap_fix = 1 IF timera > 4000 PRINT_NOW PIMP_37 6000 1 cheap_fix = 99 ENDIF ENDIF IF beat_fix = 1 IF timera > 4000 PRINT_NOW PIMP_36 6000 1 beat_fix = 99 ENDIF ENDIF IF NOT IS_CAR_DEAD pimp_car IF pimp_blipswap = 0 IF NOT IS_CHAR_IN_CAR scplayer pimp_car ADD_BLIP_FOR_CAR pimp_car pimp_carB SET_BLIP_AS_FRIENDLY pimp_carB TRUE REMOVE_BLIP punkB pimp_blipswap = 1 ENDIF ENDIF // bcou_blipswap = 0 condition check IF pimp_blipswap = 1 IF IS_CHAR_IN_CAR scplayer pimp_car REMOVE_BLIP pimp_carB IF wIndex = 0 IF NOT IS_CHAR_DEAD punter[punter_holder0] REMOVE_BLIP punkB ADD_BLIP_FOR_CHAR punter[punter_holder0] punkB CHANGE_BLIP_COLOUR punkB RED ENDIF ENDIF IF wIndex = 1 IF NOT IS_CHAR_DEAD punter[punter_holder1] REMOVE_BLIP punkB ADD_BLIP_FOR_CHAR punter[punter_holder1] punkB CHANGE_BLIP_COLOUR punkB RED ENDIF ENDIF PRINT_NOW PIMP_55 6000 1 pimp_blipswap = 0 ENDIF ENDIF ENDIF IF pimp_blipswap = 0 IF wIndex = 0 IF NOT IS_CHAR_DEAD pimp_whore[wIndex] IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer pimp_whore[wIndex] 20.0 20.0 FALSE IF NOT IS_CHAR_DEAD punter[punter_holder0] TASK_SMART_FLEE_CHAR punter[punter_holder0] scplayer 100.0 -1 PRINT_NOW PIMP_37 6000 1 whore_trickfind = 45 ENDIF ENDIF ENDIF ENDIF IF wIndex = 1 IF NOT IS_CHAR_DEAD pimp_whore[wIndex] IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer pimp_whore[wIndex] 20.0 20.0 FALSE IF NOT IS_CHAR_DEAD punter[punter_holder1] TASK_SMART_FLEE_CHAR punter[punter_holder1] scplayer 100.0 -1 PRINT_NOW PIMP_37 6000 1 whore_trickfind = 45 ENDIF ENDIF ENDIF ENDIF ENDIF IF wIndex = 0 IF IS_CHAR_DEAD punter[punter_holder0] REMOVE_BLIP punkB PRINT_NOW PIMP_38 4000 1 whore_trickfind = 50 ENDIF ENDIF IF wIndex = 1 IF IS_CHAR_DEAD punter[punter_holder1] REMOVE_BLIP punkB PRINT_NOW PIMP_38 4000 1 whore_trickfind = 50 ENDIF ENDIF ENDIF IF whore_trickfind = 45 pimp_backonbikecheck = 99 // don't have time limit on player. IF cheap_fix = 1 IF timera > 4000 PRINT_NOW PIMP_37 6000 1 cheap_fix = 99 ENDIF ENDIF IF beat_fix = 1 IF timera > 4000 PRINT_NOW PIMP_36 6000 1 beat_fix = 99 ENDIF ENDIF IF NOT IS_CAR_DEAD pimp_car IF pimp_blipswap = 0 IF NOT IS_CHAR_IN_CAR scplayer pimp_car ADD_BLIP_FOR_CAR pimp_car pimp_carB SET_BLIP_AS_FRIENDLY pimp_carB TRUE // REMOVE_BLIP punkB pimp_blipswap = 1 ENDIF ENDIF // bcou_blipswap = 0 condition check IF pimp_blipswap = 1 IF IS_CHAR_IN_CAR scplayer pimp_car REMOVE_BLIP pimp_carB IF wIndex = 0 IF NOT IS_CHAR_DEAD punter[punter_holder0] REMOVE_BLIP punkB ADD_BLIP_FOR_CHAR punter[punter_holder0] punkB CHANGE_BLIP_COLOUR punkB RED ENDIF ENDIF IF wIndex = 1 IF NOT IS_CHAR_DEAD punter[punter_holder1] REMOVE_BLIP punkB ADD_BLIP_FOR_CHAR punter[punter_holder1] punkB CHANGE_BLIP_COLOUR punkB RED ENDIF ENDIF PRINT_NOW PIMP_55 6000 1 pimp_blipswap = 0 ENDIF ENDIF ENDIF IF wIndex = 0 AND IS_CHAR_DEAD punter[punter_holder0] PRINT_NOW PIMP_38 4000 1 REMOVE_BLIP punkB WAIT 2000 whore_trickfind = 50 ENDIF IF wIndex = 1 AND IS_CHAR_DEAD punter[punter_holder1] PRINT_NOW PIMP_38 4000 1 REMOVE_BLIP punkB WAIT 2000 whore_trickfind = 50 ENDIF ENDIF IF whore_trickfind = 50 pimp_timerpresent = 0 CLEAR_ONSCREEN_TIMER pimp_runtimer pimp_runtimer = 180000 pimp_backonbikecheck = 0 // want to check again IF NOT IS_CHAR_DEAD pimp_whore[wIndex] CLEAR_PRINTS WRITE_LOG "10" CLEAR_CHAR_TASKS pimp_whore[wIndex] REMOVE_BLIP pimp_whoreB ADD_BLIP_FOR_CHAR pimp_whore[wIndex] pimp_whoreB SET_BLIP_AS_FRIENDLY pimp_whoreB TRUE whore_trickfind = 25 IF wIndex = 0 IF NOT IS_CHAR_DEAD punter[punter_holder0] MARK_CHAR_AS_NO_LONGER_NEEDED punter[punter_holder0] punterhurt[punter_holder0] = 0 // Don't need to check if the player has damaged this guy anymore ENDIF ENDIF IF wIndex = 1 IF NOT IS_CHAR_DEAD punter[punter_holder1] MARK_CHAR_AS_NO_LONGER_NEEDED punter[punter_holder1] punterhurt[punter_holder1] = 0 // Don't need to check if the player has damaged this guy anymore ENDIF ENDIF ENDIF whore_trickfind = 99 whore_spawned = 2 whore_tricknumber++ GET_INT_STAT PIMPING_LEVEL old_pimplevel IF NOT whore_tricknumber < old_pimplevel SET_INT_STAT PIMPING_LEVEL whore_tricknumber ENDIF ENDIF // whore_trickfind = 50 condition check //collision management IF NOT IS_CHAR_DEAD punter[pimp_trick] IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer punter[pimp_trick] 50.0 50.0 60.0 FALSE // z was 50.0 FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION punter[pimp_trick] FALSE ELSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION punter[pimp_trick] TRUE ENDIF ENDIF IF NOT IS_CHAR_DEAD punter[punter_holder0] IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer punter[punter_holder0] 50.0 50.0 60.0 FALSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION punter[punter_holder0] FALSE ELSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION punter[punter_holder0] TRUE ENDIF ENDIF IF NOT IS_CHAR_DEAD punter[punter_holder1] IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer punter[punter_holder1] 50.0 50.0 60.0 FALSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION punter[punter_holder1] FALSE ELSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION punter[punter_holder1] TRUE ENDIF ENDIF IF NOT IS_CHAR_DEAD pimp_whore[0] IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer pimp_whore[0] 50.0 50.0 60.0 FALSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION pimp_whore[0] FALSE //write_debug ufw ELSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION pimp_whore[0] TRUE //write_debug fw ENDIF ENDIF IF NOT IS_CHAR_DEAD pimp_whore[1] IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer pimp_whore[1] 50.0 50.0 60.0 FALSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION pimp_whore[1] FALSE //write_debug ufw1 ELSE FREEZE_CHAR_POSITION_AND_DONT_LOAD_COLLISION pimp_whore[1] TRUE //write_debug fw1 ENDIF ENDIF GOTO pimp_main_mission_loop whore_suitable: IF NOT pimp_whore[wIndex] = -1 GET_PED_TYPE pimp_whore[wIndex] pimp_isawhore IF NOT IS_CHAR_MALE pimp_whore[wIndex] pimp_patch_decided = 99 whore_spawned = 1 ENDIF ENDIF RETURN next_whore_decider: IF wIndex = 0 wIndex = 1 //!!WRITE_DEBUG_WITH_INT whore_to_pick_up wIndex RETURN ENDIF IF wIndex = 1 wIndex = 0 //!!WRITE_DEBUG_WITH_INT whore_to_pick_up wIndex RETURN ENDIF RETURN whore_scenario: RETURN pimp_patch_decider: IF pimp_city = LEVEL_LOSANGELES IF IS_CHAR_IN_ZONE scplayer IWD // Idlewood OR IS_CHAR_IN_ZONE scplayer GAN // Ganton OR IS_CHAR_IN_ZONE scplayer ELCO // El Corona OR IS_CHAR_IN_ZONE scplayer LMEX // Little Mexico pimp_patch = 1 // South Los Santos A //WRITE_DEBUG_WITH_INT patch pimp_patch ENDIF IF IS_CHAR_IN_ZONE scplayer LDOC // Docks OR IS_CHAR_IN_ZONE scplayer LAIR // Airport OR IS_CHAR_IN_ZONE scplayer LIND // Industrial OR IS_CHAR_IN_ZONE scplayer BLUF // Verdant Bluffs pimp_patch = 2 // South Los Santos B // WRITE_DEBUG_WITH_INT patch pimp_patch ENDIF IF IS_CHAR_IN_ZONE scplayer COM // Civic Centre OR IS_CHAR_IN_ZONE scplayer LDT // Downtown OR IS_CHAR_IN_ZONE scplayer GLN // Glen Park OR IS_CHAR_IN_ZONE scplayer LMEX //Little Mexico pimp_patch = 3 // North Los Santos A //WRITE_DEBUG_WITH_INT patch pimp_patch ENDIF IF IS_CHAR_IN_ZONE scplayer JEF // Jefferson OR IS_CHAR_IN_ZONE scplayer ELS // East Los Santos OR IS_CHAR_IN_ZONE scplayer LFL // Los Flores OR IS_CHAR_IN_ZONE scplayer EBE // East Beach pimp_patch = 4 // North Los Santos B // WRITE_DEBUG_WITH_INT patch pimp_patch ENDIF IF IS_CHAR_IN_ZONE scplayer CONF // Conference Centre OR IS_CHAR_IN_ZONE scplayer VERO // Verona OR IS_CHAR_IN_ZONE scplayer SMB // Santa Maria Beach OR IS_CHAR_IN_ZONE scplayer MAR // Marina OR IS_CHAR_IN_ZONE scplayer MKT // Market pimp_patch = 5 // West Los Santos A // WRITE_DEBUG_WITH_INT patch pimp_patch ENDIF IF IS_CHAR_IN_ZONE scplayer SMB // Santa Maria Beach OR IS_CHAR_IN_ZONE scplayer PLS // Playa del Sevilla OR IS_CHAR_IN_ZONE scplayer ROD // Rodeo OR IS_CHAR_IN_ZONE scplayer RIH // Richman Heights pimp_patch = 6 // West Los Santos B // WRITE_DEBUG_WITH_INT patch pimp_patch ENDIF IF IS_CHAR_IN_ZONE scplayer VIN // Vinewood ?????????????????????????????? OR IS_CHAR_IN_ZONE scplayer MUL // Mulholland OR IS_CHAR_IN_ZONE scplayer SUN // Sunrise ?????????????????????????????? pimp_patch = 7 // West Los Santos C // WRITE_DEBUG_WITH_INT patch pimp_patch ENDIF IF pimp_patch < 1 pimp_patch = 1 ENDIF IF pimp_patch > 7 pimp_patch = 1 ENDIF //write_debug_with_int patch pimp_patch //pimp_patch_decided = 1 ENDIF // pimp_city = LEVEL_LOSANGELES IF pimp_city = LEVEL_SANFRANCISCO IF IS_CHAR_IN_ZONE scplayer BAYV // Pallisades OR IS_CHAR_IN_ZONE scplayer PARA // Paradiso OR IS_CHAR_IN_ZONE scplayer CIVI // Santa Flora OR IS_CHAR_IN_ZONE scplayer CITYS //City Hall pimp_patch = 1 // North West SF //WRITE_DEBUG_WITH_INT patch pimp_patch ENDIF IF IS_CHAR_IN_ZONE scplayer CALT // Calton Heights OR IS_CHAR_IN_ZONE scplayer JUNIHO // Juniper Hollow OR IS_CHAR_IN_ZONE scplayer JUNIHI // Juniper Hill OR IS_CHAR_IN_ZONE scplayer ESPN // Esplanade North pimp_patch = 2 // North Central SF // WRITE_DEBUG_WITH_INT patch pimp_patch ENDIF IF IS_CHAR_IN_ZONE scplayer SUNMA // Bayside Marina OR IS_CHAR_IN_ZONE scplayer SUNNN // Bayside OR IS_CHAR_IN_ZONE scplayer GANTB // Gant Bridge OR IS_CHAR_IN_ZONE scplayer BATTP // Battery Point pimp_patch = 3 // Extreme North SF // WRITE_DEBUG_WITH_INT patch pimp_patch ENDIF IF IS_CHAR_IN_ZONE scplayer CHINA // Chinatown OR IS_CHAR_IN_ZONE scplayer SFDWT // SF Downtown OR IS_CHAR_IN_ZONE scplayer FINA // Financial OR IS_CHAR_IN_ZONE scplayer ESPE // Esplanade East pimp_patch = 4 // WRITE_DEBUG sfdwtOK ENDIF IF IS_CHAR_IN_ZONE scplayer WESTP // Westpark OR IS_CHAR_IN_ZONE scplayer HASH // Hashbury OR IS_CHAR_IN_ZONE scplayer OCEAF // Ocean Flats OR IS_CHAR_IN_ZONE scplayer CUNTC // Avispa Country Club pimp_patch = 5 ENDIF IF IS_CHAR_IN_ZONE scplayer THEA // Kings OR IS_CHAR_IN_ZONE scplayer GARC // Garcia OR IS_CHAR_IN_ZONE scplayer DOH // Doherty OR IS_CHAR_IN_ZONE scplayer EASB // Easter Basin pimp_patch = 6 ENDIF IF IS_CHAR_IN_ZONE scplayer HILLP // Missionary Hill OR IS_CHAR_IN_ZONE scplayer SILLY // Foster Valley OR IS_CHAR_IN_ZONE scplayer SFAIR // Easter Bay Airport pimp_patch = 7 ENDIF IF pimp_patch < 1 pimp_patch = 1 ENDIF IF pimp_patch > 7 pimp_patch = 1 ENDIF // remember failsafe shit. See LA above >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ENDIF // pimp_city = LEVEL_SANFRANCISCO IF pimp_city = LEVEL_LASVEGAS IF IS_CHAR_IN_ZONE scplayer BFC // Blackfield Chapel OR IS_CHAR_IN_ZONE scplayer GGC // Greenglass College OR IS_CHAR_IN_ZONE scplayer VAIR // Las Venturas Airport OR IS_CHAR_IN_ZONE scplayer LDM //Last Dime Motel pimp_patch = 1 // Pink Swan , 4 Dragons etc. //WRITE_DEBUG_WITH_INT patch pimp_patch ENDIF IF IS_CHAR_IN_ZONE scplayer PINK // The Pink Swan OR IS_CHAR_IN_ZONE scplayer DRAG // The Four Dragons Casino OR IS_CHAR_IN_ZONE scplayer CAM // The Camel's Toe OR IS_CHAR_IN_ZONE scplayer LOT // Come-A-Lot pimp_patch = 2 ENDIF IF IS_CHAR_IN_ZONE scplayer PIRA // The Pirate In Mens Pants OR IS_CHAR_IN_ZONE scplayer ROY // The Royal Casino OR IS_CHAR_IN_ZONE scplayer CALI // Caligula's Palace OR IS_CHAR_IN_ZONE scplayer HIGH // The High Roller pimp_patch = 3 ENDIF IF IS_CHAR_IN_ZONE scplayer PILG // Pilgrim's Creek OR IS_CHAR_IN_ZONE scplayer STAR // Starfish Casino OR IS_CHAR_IN_ZONE scplayer STRIP // The Strip OR IS_CHAR_IN_ZONE scplayer VISA // The Visage pimp_patch = 4 ENDIF IF IS_CHAR_IN_ZONE scplayer ISLE // Emerald Isle OR IS_CHAR_IN_ZONE scplayer ROCE // Roca Escalante OR IS_CHAR_IN_ZONE scplayer OVS // Old Venturas Strip OR IS_CHAR_IN_ZONE scplayer RING // The Ring Master pimp_patch = 5 ENDIF IF pimp_patch < 1 pimp_patch = 1 ENDIF IF pimp_patch > 5 pimp_patch = 1 ENDIF ENDIF RETURN pimp_fail_button_pressed: WAIT 100 // Workaround for a controller bug. GOTO mission_pimp_failed // **************************************** Mission pimp failed *********************** mission_pimp_failed: //PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" IF whore_tricknumber = 0 PRINT_BIG PIMP_40 5000 1 ENDIF IF whore_tricknumber = 1 PRINT_BIG PIMP_41 5000 1 ENDIF IF whore_tricknumber = 2 PRINT_BIG PIMP_42 5000 1 ENDIF IF whore_tricknumber = 3 PRINT_BIG PIMP_43 5000 1 ENDIF IF whore_tricknumber = 4 PRINT_BIG PIMP_44 5000 1 ENDIF IF whore_tricknumber = 5 PRINT_BIG PIMP_45 5000 1 ENDIF IF whore_tricknumber = 6 PRINT_BIG PIMP_46 5000 1 ENDIF IF whore_tricknumber = 7 PRINT_BIG PIMP_47 5000 1 ENDIF IF whore_tricknumber = 8 PRINT_BIG PIMP_48 5000 1 ENDIF IF whore_tricknumber = 9 PRINT_BIG PIMP_49 5000 1 ENDIF RETURN // **************************************** mission pimp passed ************************ mission_pimp_passed: //flag_heist_mission_counter ++ //Used to terminate this mission loop in the main script. These varibles will be set up in the main.sc //REGISTER_MISSION_PASSED ( HOOD_3 ) //Used in the stats PRINT_WITH_NUMBER_BIG ( PIMP_50 ) 1000 5000 1 //"Mission Passed!" PLAY_MISSION_PASSED_TUNE 2 ADD_SCORE player1 1000 CLEAR_WANTED_LEVEL player1 IF pimp_passed_once = 0 WRITE_LOG "UNLOCK_ACHIEVEMENT YES_I_SPEAK_ENGLISH" REGISTER_ODDJOB_MISSION_PASSED PLAYER_MADE_PROGRESS 1 ACTIVATE_PIMP_CHEAT TRUE pimp_passed_once = 1 // PRINT_HELP SEXGOD ENDIF RETURN // ********************************** mission cleanup *********************************** mission_cleanup_pimp: CLEAR_MISSION_AUDIO 4 CLEAR_ONSCREEN_TIMER pimp_runtimer //MARK_CHAR_AS_NO_LONGER_NEEDED pimp_whore[wIndex] //MARK_MODEL_AS_NO_LONGER_NEEDED OCEANIC //MARK_MODEL_AS_NO_LONGER_NEEDED MOONBEAM MARK_MODEL_AS_NO_LONGER_NEEDED wmymech //MARK_MODEL_AS_NO_LONGER_NEEDED WFYCRP MARK_MODEL_AS_NO_LONGER_NEEDED BMYST MARK_MODEL_AS_NO_LONGER_NEEDED wmybu MARK_MODEL_AS_NO_LONGER_NEEDED bmybu MARK_MODEL_AS_NO_LONGER_NEEDED wmygol1 MARK_MODEL_AS_NO_LONGER_NEEDED wmydrug MARK_MODEL_AS_NO_LONGER_NEEDED DWMOLC2 MARK_MODEL_AS_NO_LONGER_NEEDED DWMYLC1 MARK_MODEL_AS_NO_LONGER_NEEDED DWMOLC1 //Ho's MARK_MODEL_AS_NO_LONGER_NEEDED WFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED SWFOPRO MARK_MODEL_AS_NO_LONGER_NEEDED BFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED HFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED VWFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED VBFYPRO // MARK_MODEL_AS_NO_LONGER_NEEDED wmysgrd MARK_MODEL_AS_NO_LONGER_NEEDED OMOST MARK_MODEL_AS_NO_LONGER_NEEDED wmymech MARK_MODEL_AS_NO_LONGER_NEEDED wmoprea MARK_MODEL_AS_NO_LONGER_NEEDED wmybmx MARK_MODEL_AS_NO_LONGER_NEEDED swmyhp1 MARK_MODEL_AS_NO_LONGER_NEEDED hmyst MARK_MODEL_AS_NO_LONGER_NEEDED bmyboun MARK_MODEL_AS_NO_LONGER_NEEDED bmydj IF NOT IS_CHAR_DEAD scplayer SET_CHAR_CANT_BE_DRAGGED_OUT scplayer FALSE ENDIF REMOVE_BLIP pimp_whoreB REMOVE_BLIP punterB REMOVE_BLIP punkB REMOVE_BLIP pimp_carB SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER1 GET_GAME_TIMER timer_mobile_start //Used to reset the mobile phone timer so it doesn't ring immediately after the mission flag_player_on_pimp_mission = 0 flag_player_on_mission = 0 MISSION_HAS_FINISHED //UNLOAD_SPECIAL_CHARACTER 1 RETURN } /* [PIMP_1:PIMP] ~s~You've got ~1~ seconds to get back in the ~b~car~s~ or this pimping session is over! [PIMP_2:PIMP] ~s~There's a ~b~girl~s~ nearby. Drive to her location and wait for her to get in. [PIMP_3:PIMP] ~w~Girl: Nice wheels! Keep me safe and you'll get a percentage! [PIMP_6:PIMP] ~w~Girl: Ok! Here's my customer! Let me out and I'll call you when I'm done! [PIMP_7:PIMP] ~w~Girl: Here's your cut! [PIMP_10:PIMP] ~s~Head to the ~y~Docks~s~ to find a potential trick for your girl. [PIMP_11:PIMP] ~s~Get to ~y~Los Santos Airport~s~ to find a customer. [PIMP_12:PIMP] ~s~Go to ~y~Willowfield~s~ now. [PIMP_13:PIMP] ~s~Head up to the ~y~Bluffs~s~ region. [PIMP_14:PIMP] ~s~Drive into the ~y~Commerce~s~ district. [PIMP_15:PIMP] ~s~Take your girl ~y~Downtown~s~ now. [PIMP_16:PIMP] ~y~Glen Park~s~ is your next destination. [PIMP_17:PIMP] ~s~Get to ~y~Little Mexico~s~ for another trick. [PIMP_18:PIMP] ~s~Make for the church in ~y~Jefferson~s~ now. [PIMP_19:PIMP] ~y~East Los Santos~s~ next. [PIMP_20:PIMP] ~s~Drive to ~y~Los Flores~s~ to find another customer. [PIMP_21:PIMP] ~s~Drop your girl off at ~y~East Beach~s~ this time. [PIMP_22:PIMP] ~s~Head for the ~y~Conference Centre~s~ at the centre of town. [PIMP_23:PIMP] ~s~Make for ~y~Verona Beach~s~ this time. [PIMP_24:PIMP] ~y~Santa Maria Beach~s~ is your next destination. [PIMP_25:PIMP] ~s~Drive to the ~y~Marina~s~ to find another customer for your girl. [PIMP_26:PIMP] ~s~Head in to the ~y~Market~s~ region now. [PIMP_27:PIMP] ~s~Central ~y~Rodeo~s~ is your next destination. [PIMP_28:PIMP] ~s~Make for the ~y~Rodeo~s~ steps this time. [PIMP_29:PIMP] ~s~Head on up to ~y~Richman~s~ to find another customer for your girl [PIMP_30:PIMP] ~s~Good! Go and pick up another ~b~girl~s~ to double your potential income. [PIMP_31:PIMP] ~w~Girl: Treat me right! Do I get a pension plan? [PIMP_32:PIMP] ~w~Girl: There's your share big boy! [PIMP_33:PIMP] ~w~Girl: Here's my man. Stop nearby. I'll call you when I'm ready for my next appointment. [PIMP_35:PIMP] ~w~phone: Help me! This punk is getting rough! He thinks I've given him crabs! [PIMP_36:PIMP] ~s~A ~r~customer~s~ is being too rough with your girl! Get him! [PIMP_37:PIMP] ~s~Chase down that ~r~punk~s~ quickly. Non-payment must be punished! [PIMP_38:PIMP] ~s~Good work! Drive back and pick up your ~b~girl~s~ to continue. [PIMP_39:PIMP] ~w~phone: I got a cheapskate who won't pay! I need your persuasive technique! [PIMP_40:PIMP] 0 out of 10 pimps successful! [PIMP_41:PIMP] 1 out of 10 pimps successful! [PIMP_42:PIMP] 2 out of 10 pimps successful! [PIMP_43:PIMP] 3 out of 10 pimps successful! [PIMP_44:PIMP] 4 out of 10 pimps successful! [PIMP_45:PIMP] 5 out of 10 pimps successful! [PIMP_46:PIMP] 6 out of 10 pimps successful! [PIMP_47:PIMP] 7 out of 10 pimps successful! [PIMP_48:PIMP] 8 out of 10 pimps successful! [PIMP_49:PIMP] 9 out of 10 pimps successful! [PIMP_50:PIMP] Pimping Complete! [PIMP_51:PIMP] ~r~Your girl can't service customers in hospital! You're no pimp! [PIMP_52:PIMP] ~r~Respect your customers! They won't use your girls again if you get tough with them! [PIMP_53:PIMP] ~s~Get to the customer's ~y~area~s~ now! [PIMP_54:PIMP] ~s~Pick up your ~b~girl~s~ now! [PIMP_55:PIMP] ~s~That ~r~customer~s~ is taking advantage of your services. Destroy him! [PIMP_56:PIMP] ~w~phone: Hey, I'm finished. Come by and pick me up! [PIMP_57:PIMP] ~s~Your ~b~girl~s~ has finished with a customer. Go and pick her up. [PIMP_59:PIMP] ~r~Pimping session over. [PIMP_60:PIMP] ~s~Excellent pimping! You've kept your girls safe. [PIMP_70:PIMP] Pimping [PIMP_71:PIMP] Payment: [PIMP_72:PIMP] Trick Cut [PIMP_73:PIMP] Multiplier [PIMP_74:PIMP] Total Cash [PIMP_75:PIMP] X ~1~ [PIMP_80:PIMP] ~s~Drive to ~y~Mulholland~s~ to find another customer. [PIMP_81:PIMP] ~s~Head to the car wash in ~y~Mulholland~s~ next. [PIMP_82:PIMP] ~s~Get your girl to ~y~Vinewood~s~ this time. [PIMP_83:PIMP] ~s~Take your girl near the ~y~Temple~s~ cemetery. [PIMP_84:PIMP] ~s~Head back to ~y~Idlewood~s~ for another trick for your girl. [PIMP_85:PIMP] ~s~Drive to ~y~Ganton~s~ this time. [PIMP_86:PIMP] ~s~Make for ~y~El Corona~s~ to find another customer. [PIMP_87:PIMP] ~s~Head towards ~y~Little Mexico~s~ to find another customer. */ MISSION_START // ***************************************************************************************** // ***************************** blood ************************************ // ***************************************************************************************** // ***************************************************************************************** // *** *** // ***************************************************************************************** SCRIPT_NAME blood // Mission start stuff GOSUB mission_start_blood IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_blood_failed ENDIF GOSUB mission_cleanup_blood MISSION_END { // Variables for mission //people LVAR_INT blood_player_car blood_car[16] blood_driver[16] blood_passenger[16] blood_player2 LVAR_INT blood_rnd_car[3] LVAR_INT blood_upgrade blood_this_car LVAR_INT blood_checkpoint //blips LVAR_INT blood_blip //flags LVAR_INT blood_goals blood_speech_flag LVAR_INT blood_car_flag blood_car_flag2 LVAR_INT blood_closest_car_index //LVAR_INT blood_players_current_time //LVAR_INT blood_time_to_beat LVAR_INT blood_players_car_health LVAR_INT blood_top_left blood_top_right blood_bottom_left blood_bottom_right LVAR_INT blood_no_of_seats //LVAR_INT blood_car_dead_flag LVAR_INT blood_random_garage_flag LVAR_INT blood_bullets LVAR_INT blood_model LVAR_INT blood_class LVAR_FLOAT blood_spin_upgrade LVAR_INT blood_no_plates_flag blood_no_plates LVAR_INT blood_longest_time LVAR_INT blood_cars_killed LVAR_INT blood_player_damaged_car[16] LVAR_INT blood_rnd_time blood_audio_flag blood_sound_flag blood_sound[23] //speech //coords LVAR_FLOAT blood_x blood_y blood_z blood_heading LVAR_FLOAT blood_chckpnt_x blood_chckpnt_y blood_chckpnt_z LVAR_FLOAT blood_this_car_x blood_this_car_y LVAR_FLOAT blood_other_car_x blood_other_car_y LVAR_FLOAT blood_closest_distance blood_current_distance LVAR_FLOAT blood_reposition_car_x blood_reposition_car_y blood_reposition_car_z LVAR_FLOAT blood_upgrade_x blood_upgrade_y blood_upgrade_z LVAR_FLOAT blood_rnd_1x blood_rnd_1y blood_rnd_1z LVAR_FLOAT blood_rnd_2x blood_rnd_2y blood_rnd_2z LVAR_FLOAT blood_rnd_3x blood_rnd_3y blood_rnd_3z LVAR_FLOAT blood_rnd_4x blood_rnd_4y blood_rnd_4z //sequences/decision makers/threat lists/attractors/groups LVAR_INT blood_empty_ped_decision_maker //debug // ****************************************Mission Start************************************ mission_start_blood: flag_player_on_mission = 1 IF blood_passed_once = 0 REGISTER_MISSION_GIVEN ENDIF LOAD_MISSION_TEXT blood DISPLAY_RADAR 2 // PATHING OFF IF flag_player_on_mission = 0 ADD_BLIP_FOR_COORD blood_chckpnt_x blood_chckpnt_y blood_chckpnt_z blood_blip CREATE_OBJECT bb_pickup blood_upgrade_x blood_upgrade_y blood_upgrade_z blood_upgrade CREATE_CAR BLOODRA blood_x blood_y blood_z blood_rnd_car[0] CREATE_CAR BLOODRA blood_x blood_y blood_z blood_rnd_car[1] CREATE_CAR BLOODRA blood_x blood_y blood_z blood_rnd_car[2] CREATE_CAR BLOODRA blood_x blood_y blood_z blood_closest_car_index ENDIF SET_FADING_COLOUR 0 0 0 CLEAR_PRINTS CLEAR_THIS_PRINT_BIG_NOW 1 WAIT 0 // *************************************Set Flags/variables********************************* blood_goals = 0 blood_speech_flag = 0 IF blood_passed_once = 0 blood_best_time = 60 blood_time_to_beat = 60000 ENDIF blood_car_flag = 0 blood_car_flag2 = 0 blood_closest_car_index = 0 blood_players_current_time = 30000 blood_players_car_health = 0 blood_top_left = 0 blood_top_right = 0 blood_bottom_left = 0 blood_bottom_right = 0 blood_no_of_seats = 0 //blood_car_dead_flag = -1 ////// -1 means no cars are dead blood_random_garage_flag = -1 ///// -1 means no flag was returned blood_x = -1280.9 blood_y = 994.8 blood_z = 1037.0 blood_heading = 90.0 blood_chckpnt_x = 0.0 blood_chckpnt_y = 0.0 blood_chckpnt_z = 0.0 blood_this_car_x = 0.0 blood_this_car_y = 0.0 blood_other_car_x = 0.0 blood_other_car_y = 0.0 blood_closest_distance = 0.0 blood_current_distance = 0.0 blood_reposition_car_x = 0.0 blood_reposition_car_y = 0.0 blood_reposition_car_z = 0.0 blood_upgrade_x = 0.0 blood_upgrade_y = 0.0 blood_upgrade_z = 0.0 blood_rnd_1x = 0.0 blood_rnd_1y = 0.0 blood_rnd_1z = 0.0 blood_rnd_2x = 0.0 blood_rnd_2y = 0.0 blood_rnd_2z = 0.0 blood_rnd_3x = 0.0 blood_rnd_3y = 0.0 blood_rnd_3z = 0.0 blood_rnd_4x = 0.0 blood_rnd_4y = 0.0 blood_rnd_4z = 0.0 blood_bullets = 0 blood_cars_killed = 0 blood_model = 0 blood_class = 0 blood_player_damaged_car[0] = 0 blood_player_damaged_car[1] = 0 blood_player_damaged_car[2] = 0 blood_player_damaged_car[3] = 0 blood_player_damaged_car[4] = 0 blood_player_damaged_car[5] = 0 blood_player_damaged_car[6] = 0 blood_player_damaged_car[7] = 0 blood_player_damaged_car[8] = 0 blood_player_damaged_car[9] = 0 blood_player_damaged_car[10] = 0 blood_player_damaged_car[11] = 0 blood_player_damaged_car[12] = 0 blood_player_damaged_car[13] = 0 blood_player_damaged_car[14] = 0 blood_player_damaged_car[15] = 0 blood_spin_upgrade = 0.0 blood_sound[0] = SOUND_CROWD_AWWS blood_sound[1] = SOUND_CROWD_CHEERS blood_sound[2] = SOUND_CROWD_CHEERS_BIG blood_sound[3] = SOUND_CROWD_AWWS blood_sound[4] = SOUND_CROWD_CHEERS blood_sound[5] = SOUND_CROWD_CHEERS_BIG blood_sound[6] = SOUND_CROWD_AWWS blood_sound[7] = SOUND_CROWD_CHEERS blood_sound[8] = SOUND_CROWD_CHEERS_BIG blood_sound[9] = SOUND_CROWD_AWWS blood_sound[10] = SOUND_CROWD_CHEERS blood_sound[11] = SOUND_CROWD_CHEERS_BIG blood_sound[12] = SOUND_CROWD_AWWS blood_sound[13] = SOUND_CROWD_CHEERS blood_sound[14] = SOUND_CROWD_CHEERS_BIG blood_sound[15] = SOUND_CROWD_AWWS blood_sound[16] = SOUND_CROWD_CHEERS blood_sound[17] = SOUND_CROWD_CHEERS_BIG blood_sound[18] = SOUND_CROWD_AWWS blood_sound[19] = SOUND_CROWD_CHEERS blood_sound[20] = SOUND_CROWD_CHEERS_BIG blood_sound[21] = SOUND_CROWD_AWWS blood_sound[22] = SOUND_CROWD_CHEERS blood_no_plates_flag = 0 blood_no_plates = 0 // ****************************************START OF CUTSCENE******************************** // ******************************************END OF CUTSCENE******************************** WAIT 0 //------------------REQUEST_MODELS ------------------------------ VAR_INT blood_players_current_time blood_time_to_beat blood_best_time /* /////////////DEBUG///////////////// VIEW_INTEGER_VARIABLE blood_best_time blood_best_time VIEW_INTEGER_VARIABLE blood_players_current_time blood_players_current_time VIEW_INTEGER_VARIABLE blood_time_to_beat blood_time_to_beat VIEW_INTEGER_VARIABLE blood_attempt blood_attempt /////////////DEBUG///////////////// */ DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE REQUEST_MODEL BLOODRA REQUEST_MODEL STALLION REQUEST_MODEL mp5lng REQUEST_MODEL bb_pickup LOAD_MISSION_AUDIO 4 SOUND_BANK_AIR_HORN WHILE NOT HAS_MISSION_AUDIO_LOADED 4 WAIT 0 ENDWHILE LOAD_ALL_MODELS_NOW OVERRIDE_NEXT_RESTART -2126.3 -440.6 34.5 82.7 FORCE_ALL_VEHICLE_LIGHTS_OFF TRUE //suppress all big vehicles SUPPRESS_CAR_MODEL linerun SUPPRESS_CAR_MODEL trash SUPPRESS_CAR_MODEL stretch SUPPRESS_CAR_MODEL pony SUPPRESS_CAR_MODEL mule SUPPRESS_CAR_MODEL moonbeam SUPPRESS_CAR_MODEL mrwhoop SUPPRESS_CAR_MODEL securica SUPPRESS_CAR_MODEL bus SUPPRESS_CAR_MODEL barracks SUPPRESS_CAR_MODEL coach SUPPRESS_CAR_MODEL rumpo SUPPRESS_CAR_MODEL romero SUPPRESS_CAR_MODEL packer SUPPRESS_CAR_MODEL monster SUPPRESS_CAR_MODEL flatbed SUPPRESS_CAR_MODEL yankee SUPPRESS_CAR_MODEL solair SUPPRESS_CAR_MODEL patriot SUPPRESS_CAR_MODEL burrito SUPPRESS_CAR_MODEL camper SUPPRESS_CAR_MODEL dozer SUPPRESS_CAR_MODEL rancher SUPPRESS_CAR_MODEL boxville SUPPRESS_CAR_MODEL benson SUPPRESS_CAR_MODEL journey SUPPRESS_CAR_MODEL petro SUPPRESS_CAR_MODEL rdtrain SUPPRESS_CAR_MODEL cement SUPPRESS_CAR_MODEL towtruck SUPPRESS_CAR_MODEL dft30 SUPPRESS_CAR_MODEL newsvan SUPPRESS_CAR_MODEL hotdog SET_PLAYER_CONTROL player1 OFF COPY_CHAR_DECISION_MAKER DM_PED_EMPTY blood_empty_ped_decision_maker HIDE_ALL_FRONTEND_BLIPS TRUE SET_FREE_HEALTH_CARE player1 TRUE SWITCH_RUBBISH OFF SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 SHUT_PLAYER_UP player1 TRUE SET_CHAR_COORDINATES scplayer -1398.461 995.641 1024.462 SET_AREA_VISIBLE 15 SET_CHAR_AREA_VISIBLE scplayer 15 SET_EXTRA_COLOURS 2 FALSE REQUEST_COLLISION blood_x blood_y LOAD_SCENE blood_x blood_y blood_z CLEAR_AREA -1280.9 994.8 1037.0 300.0 TRUE LOAD_SCENE_IN_DIRECTION -1280.8 994.7 1036.0 90.0 GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_MP5 blood_bullets GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_MP5 30000 ///setting up the cars blood_no_plates = BLOODRA GOSUB blood_my_number_plates CREATE_CAR BLOODRA blood_x blood_y blood_z blood_player_car SET_LOAD_COLLISION_FOR_CAR_FLAG blood_player_car TRUE SET_VEHICLE_AREA_VISIBLE blood_player_car 15 SET_CAR_HEADING blood_player_car blood_heading LOCK_CAR_DOORS blood_player_car CARLOCK_LOCKED_PLAYER_INSIDE WARP_CHAR_INTO_CAR scplayer blood_player_car SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_MP5 SET_CAR_STRONG blood_player_car TRUE SET_UPSIDEDOWN_CAR_NOT_DAMAGED blood_player_car TRUE SET_CAN_BURST_CAR_TYRES blood_player_car FALSE SET_CAR_HEALTH blood_player_car 1249 CREATE_RANDOM_CHAR_AS_PASSENGER blood_player_car 0 blood_player2 SET_CHAR_AREA_VISIBLE blood_player2 15 SET_CHAR_DECISION_MAKER blood_player2 blood_empty_ped_decision_maker GIVE_WEAPON_TO_CHAR blood_player2 WEAPONTYPE_MP5 30000 SET_CHAR_PROOFS blood_player2 TRUE FALSE FALSE FALSE FALSE //SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH blood_player2 TRUE WHILE blood_car_flag < 16 WAIT 0 IF blood_car_flag = 12 blood_car_flag = 14 ENDIF GOSUB blood_setting_up_cars GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE blood_model blood_class IF blood_model >= 0 blood_no_plates = blood_model GOSUB blood_my_number_plates CREATE_CAR blood_model blood_x blood_y blood_z blood_car[blood_car_flag] ENDIF IF blood_model = -1 blood_no_plates = STALLION GOSUB blood_my_number_plates CREATE_CAR STALLION blood_x blood_y blood_z blood_car[blood_car_flag] ENDIF IF NOT IS_CAR_DEAD blood_car[blood_car_flag] SET_CAR_HEADING blood_car[blood_car_flag] blood_heading SET_LOAD_COLLISION_FOR_CAR_FLAG blood_car[blood_car_flag] TRUE SET_CAR_STRAIGHT_LINE_DISTANCE blood_car[blood_car_flag] 255 SET_CAN_BURST_CAR_TYRES blood_car[blood_car_flag] FALSE CREATE_RANDOM_CHAR_AS_DRIVER blood_car[blood_car_flag] blood_driver[blood_car_flag] SET_CHAR_AREA_VISIBLE blood_driver[blood_car_flag] 15 SET_CHAR_DECISION_MAKER blood_driver[blood_car_flag] blood_empty_ped_decision_maker SET_CHAR_PROOFS blood_driver[blood_car_flag] TRUE FALSE FALSE FALSE FALSE //SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH blood_driver[blood_car_flag] TRUE GET_MAXIMUM_NUMBER_OF_PASSENGERS blood_car[blood_car_flag] blood_no_of_seats IF blood_no_of_seats > 0 CREATE_RANDOM_CHAR_AS_PASSENGER blood_car[blood_car_flag] 0 blood_passenger[blood_car_flag] SET_CHAR_DECISION_MAKER blood_passenger[blood_car_flag] blood_empty_ped_decision_maker SET_CHAR_PROOFS blood_passenger[blood_car_flag] TRUE FALSE FALSE FALSE FALSE //SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH blood_passenger[blood_car_flag] TRUE GIVE_WEAPON_TO_CHAR blood_passenger[blood_car_flag] WEAPONTYPE_MP5 30000 ENDIF IF IS_CHAR_ON_ANY_BIKE blood_driver[blood_car_flag] SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE blood_driver[blood_car_flag] KNOCKOFFBIKE_NEVER SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE blood_passenger[blood_car_flag] KNOCKOFFBIKE_NEVER ENDIF ADD_STUCK_CAR_CHECK blood_car[blood_car_flag] 1.0 3000 SET_UPSIDEDOWN_CAR_NOT_DAMAGED blood_car[blood_car_flag] TRUE SET_VEHICLE_AREA_VISIBLE blood_car[blood_car_flag] 15 ENDIF blood_car_flag ++ ENDWHILE // ******************************************START OF Demolition Derby******************************************* SWITCH_WIDESCREEN ON //SET_FIXED_CAMERA_POSITION -1266.5 1042.8 1054.3 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT -1339.9 1009.8 1028.0 JUMP_CUT SET_FIXED_CAMERA_POSITION -1273.2 992.4 1038.5 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1307.9 995.3 1034.2 JUMP_CUT CREATE_CHECKPOINT CHECKPOINT_EMPTYTUBE -1432.6 1016.1 1024.1 0.0 0.0 0.0 6.0 blood_checkpoint SET_FADING_COLOUR 0 0 0 WAIT 500 DO_FADE 1500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SKIP_CUTSCENE_START PRINT_NOW ( BLOD_10 ) 5000 1 //The overall time starts at 30 seconds and counts down. timera = 0 WHILE timera < 5000 WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION -1441.9 1054.6 1040.5 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1432.0 1012.6 1034.7 JUMP_CUT PRINT_NOW ( BLOD_01 ) 5000 1 //Drive through the checkpoints to increase your overall time. timera = 0 WHILE timera < 5000 WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION -1464.6 943.6 1036.1 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1436.1 923.4 1040.2 JUMP_CUT IF blood_passed_once = 0 PRINT_NOW ( BLOD_11 ) 5000 1 //The current Target Time to win the bloodbowl is 1 min. ELSE PRINT_WITH_NUMBER_NOW ( BLOD_12 ) blood_attempt 5000 1 //The current Target Time to win the bloodbowl is ~1~ min. ENDIF timera = 0 WHILE timera < 5000 WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION -1492.7 1029.5 1038.4 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1539.1 1032.3 1038.9 JUMP_CUT PRINT_NOW ( BLOD_03 ) 5000 1 //Get your overall time above the Target Time to win! timera = 0 WHILE timera < 5000 WAIT 0 ENDWHILE SET_FIXED_CAMERA_POSITION -1314.1 1040.6 1038.7 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1373.1 1047.2 1034.5 JUMP_CUT PRINT_NOW ( BLOD_02 ) 5000 1 //You will lose if your overall time reaches zero. timera = 0 WHILE timera < 5000 WAIT 0 ENDWHILE CREATE_OBJECT bb_pickup -1345.2 978.7 1024.9 blood_upgrade SET_OBJECT_AREA_VISIBLE blood_upgrade 15 SET_FIXED_CAMERA_POSITION -1342.1 975.2 1026.6 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1345.2 979.7 1026.4 JUMP_CUT PRINT_NOW ( SPANNER ) 5000 1 //Drive over pickups to repair your car! timera = 0 WHILE timera < 5000 WAIT 0 IF DOES_OBJECT_EXIST blood_upgrade IF blood_spin_upgrade < 358.0 blood_spin_upgrade += 3.0 SET_OBJECT_HEADING blood_upgrade blood_spin_upgrade ELSE blood_spin_upgrade = 0.0 ENDIF ENDIF ENDWHILE SKIP_CUTSCENE_END DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 IF DOES_OBJECT_EXIST blood_upgrade IF blood_spin_upgrade < 358.0 blood_spin_upgrade += 3.0 SET_OBJECT_HEADING blood_upgrade blood_spin_upgrade ELSE blood_spin_upgrade = 0.0 ENDIF ENDIF ENDWHILE DELETE_CHECKPOINT blood_checkpoint blood_chckpnt_x = -1432.6 blood_chckpnt_y = 1016.1 blood_chckpnt_z = 1024.1 CREATE_CHECKPOINT CHECKPOINT_EMPTYTUBE blood_chckpnt_x blood_chckpnt_y blood_chckpnt_z 0.0 0.0 0.0 6.0 blood_checkpoint ADD_BLIP_FOR_COORD blood_chckpnt_x blood_chckpnt_y blood_chckpnt_z blood_blip DELETE_OBJECT blood_upgrade GOSUB blood_upgrade_location CLEAR_PRINTS RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // ****************************************** END OF Demolition Derby ******************************************* PRINT_BIG ( RACE2 ) 1100 4 //"THREE" REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_RACE_321 WAIT 1000 PRINT_BIG ( RACE3 ) 1100 4 //"TWO" REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_RACE_321 WAIT 1000 PRINT_BIG ( RACE4 ) 1100 4 //"ONE" REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_RACE_321 WAIT 1000 PRINT_BIG ( RACE5 ) 800 4 //"GO!" REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_AIR_HORN REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_RACE_GO WAIT 800 CLEAR_PRINTS SET_PLAYER_CONTROL player1 ON DISPLAY_ONSCREEN_TIMER_WITH_STRING blood_players_current_time TIMER_DOWN BB_19 // Time //DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING time_to_beat/*mm_cars_killed*/ COUNTER_DISPLAY_NUMBER 2 ( BLOD_08 ) //DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING mm_car_health_divided COUNTER_DISPLAY_BAR 1 ( BLOD_04 ) blood_car_flag = 0 WHILE blood_car_flag < 16 WAIT 0 IF blood_car_flag = 12 blood_car_flag = 14 ENDIF IF NOT IS_CAR_DEAD blood_car[blood_car_flag] IF NOT IS_CHAR_DEAD blood_driver[blood_car_flag] SET_CAR_FORWARD_SPEED blood_car[blood_car_flag] 10.0 SET_CAR_CRUISE_SPEED blood_car[blood_car_flag] 100.0 TASK_CAR_TEMP_ACTION blood_driver[blood_car_flag] blood_car[blood_car_flag] TEMPACT_GOFORWARD 5000 ENDIF ENDIF blood_car_flag ++ ENDWHILE mission_blood_loop: WAIT 0 CLEAR_WANTED_LEVEL player1 // debug to get to menu at end of race. IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S blood_goals = 1 //GOTO mission_blood_passed ENDIF IF blood_goals = 0 IF NOT IS_CAR_DEAD blood_player_car ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////// WHERE IS PLAYER //////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //if blood_top_left = 0 then player is OUTside area //if blood_top_left = 1 then player is INtside area //top left of bloodring IF IS_CHAR_IN_AREA_2D scplayer -1530.0 995.0 -1384.0 923.0 FALSE IF blood_top_left = 0 IF NOT IS_CHAR_DEAD blood_driver[1] CLEAR_CHAR_TASKS blood_driver[1] ENDIF IF NOT IS_CHAR_DEAD blood_driver[2] CLEAR_CHAR_TASKS blood_driver[2] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[0] CLEAR_CHAR_TASKS blood_passenger[0] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[1] CLEAR_CHAR_TASKS blood_passenger[1] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[2] CLEAR_CHAR_TASKS blood_passenger[2] ENDIF blood_top_left = 1 ENDIF ELSE IF blood_top_left = 1 IF NOT IS_CHAR_DEAD blood_driver[1] CLEAR_CHAR_TASKS blood_driver[1] ENDIF IF NOT IS_CHAR_DEAD blood_driver[2] CLEAR_CHAR_TASKS blood_driver[2] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[0] CLEAR_CHAR_TASKS blood_passenger[0] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[1] CLEAR_CHAR_TASKS blood_passenger[1] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[2] CLEAR_CHAR_TASKS blood_passenger[2] ENDIF blood_top_left = 0 ENDIF ENDIF //top right of bloodring IF IS_CHAR_IN_AREA_2D scplayer -1530.0 995.0 -1384.0 1076.0 FALSE IF blood_top_right = 0 IF NOT IS_CHAR_DEAD blood_driver[4] CLEAR_CHAR_TASKS blood_driver[4] ENDIF IF NOT IS_CHAR_DEAD blood_driver[5] CLEAR_CHAR_TASKS blood_driver[5] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[3] CLEAR_CHAR_TASKS blood_passenger[3] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[4] CLEAR_CHAR_TASKS blood_passenger[4] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[5] CLEAR_CHAR_TASKS blood_passenger[5] ENDIF blood_top_right = 1 ENDIF ELSE IF blood_top_right = 1 IF NOT IS_CHAR_DEAD blood_driver[4] CLEAR_CHAR_TASKS blood_driver[4] ENDIF IF NOT IS_CHAR_DEAD blood_driver[5] CLEAR_CHAR_TASKS blood_driver[5] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[3] CLEAR_CHAR_TASKS blood_passenger[3] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[4] CLEAR_CHAR_TASKS blood_passenger[4] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[5] CLEAR_CHAR_TASKS blood_passenger[5] ENDIF blood_top_right = 0 ENDIF ENDIF //Bottom Left of bloodring IF IS_CHAR_IN_AREA_2D scplayer -1265.0 995.0 -1384.0 923.0 FALSE IF blood_bottom_left = 0 IF NOT IS_CHAR_DEAD blood_driver[7] CLEAR_CHAR_TASKS blood_driver[7] ENDIF IF NOT IS_CHAR_DEAD blood_driver[8] CLEAR_CHAR_TASKS blood_driver[8] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[6] CLEAR_CHAR_TASKS blood_passenger[6] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[7] CLEAR_CHAR_TASKS blood_passenger[7] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[8] CLEAR_CHAR_TASKS blood_passenger[8] ENDIF blood_bottom_left = 1 ENDIF ELSE IF blood_bottom_left = 1 IF NOT IS_CHAR_DEAD blood_driver[7] CLEAR_CHAR_TASKS blood_driver[7] ENDIF IF NOT IS_CHAR_DEAD blood_driver[8] CLEAR_CHAR_TASKS blood_driver[8] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[6] CLEAR_CHAR_TASKS blood_passenger[6] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[7] CLEAR_CHAR_TASKS blood_passenger[7] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[8] CLEAR_CHAR_TASKS blood_passenger[8] ENDIF blood_bottom_left = 0 ENDIF ENDIF //Bottom Right of bloodring IF IS_CHAR_IN_AREA_2D scplayer -1265.0 995.0 -1384.0 1076.0 FALSE IF blood_bottom_right = 0 IF NOT IS_CHAR_DEAD blood_driver[10] CLEAR_CHAR_TASKS blood_driver[10] ENDIF IF NOT IS_CHAR_DEAD blood_driver[11] CLEAR_CHAR_TASKS blood_driver[11] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[9] CLEAR_CHAR_TASKS blood_passenger[9] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[10] CLEAR_CHAR_TASKS blood_passenger[10] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[11] CLEAR_CHAR_TASKS blood_passenger[11] ENDIF blood_bottom_right = 1 ENDIF ELSE IF blood_bottom_right = 1 IF NOT IS_CHAR_DEAD blood_driver[10] CLEAR_CHAR_TASKS blood_driver[10] ENDIF IF NOT IS_CHAR_DEAD blood_driver[11] CLEAR_CHAR_TASKS blood_driver[11] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[9] CLEAR_CHAR_TASKS blood_passenger[9] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[10] CLEAR_CHAR_TASKS blood_passenger[10] ENDIF IF NOT IS_CHAR_DEAD blood_passenger[11] CLEAR_CHAR_TASKS blood_passenger[11] ENDIF blood_bottom_right = 0 ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////// DEALING WITH THE OTHER COMPETITORS ///////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //// CAR 0 - Top Left Leader //// CAR 1 - Top Left 1 //// CAR 2 - Top Left 2 //// CAR 3 - Top Right Leader //// CAR 4 - Top Right 1 //// CAR 5 - Top Right 2 //// CAR 6 - Bottom Left Leader //// CAR 7 - Bottom Left 1 //// CAR 8 - Bottom Left 2 //// CAR 9 - Bottom Right Leader //// CAR 10 - Bottom Right 1 //// CAR 11 - Bottom Right 2 //// CAR 12 - Block Player //// CAR 13 - Block Player //// CAR 14 - Chase Checkpoints //// CAR 15 - Chase Checkpoints IF blood_car_flag < 16 // TOP LEFT //car 0 IF blood_car_flag = 0 IF NOT IS_CAR_DEAD blood_car[blood_car_flag] //car driver IF NOT IS_CHAR_DEAD blood_driver[blood_car_flag] IF NOT IS_CAR_ON_FIRE blood_car[blood_car_flag] IF blood_top_left = 0 //player is OUTside area GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_DRIVE_TO_COORD task_status IF task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK GENERATE_RANDOM_FLOAT_IN_RANGE -1530.0 -1384.0 blood_rnd_1x GENERATE_RANDOM_FLOAT_IN_RANGE 995.0 923.0 blood_rnd_1y GET_GROUND_Z_FOR_3D_COORD blood_rnd_1x blood_rnd_1y 1078.7 blood_rnd_1z IF blood_rnd_1z < 1034.1 IF blood_rnd_1z > 1022.8 TASK_CAR_DRIVE_TO_COORD blood_driver[blood_car_flag] blood_car[blood_car_flag] blood_rnd_1x blood_rnd_1y blood_rnd_1z 100.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF ENDIF ENDIF IF blood_top_left = 1 //player is INside area GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_MISSION task_status IF task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_MISSION blood_driver[blood_car_flag] blood_car[blood_car_flag] blood_player_car MISSION_BLOCKCAR_FARAWAY 100.0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_TEMP_ACTION blood_driver[blood_car_flag] blood_car[blood_car_flag] TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF ENDIF ENDIF //car passenger IF NOT IS_CHAR_DEAD blood_passenger[blood_car_flag] IF blood_top_left = 0 //player is OUTside area GET_SCRIPT_TASK_STATUS blood_passenger[blood_car_flag] TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK IF NOT IS_CAR_DEAD blood_car[1] TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_car[1] 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 50 ELSE IF NOT IS_CAR_DEAD blood_car[2] TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_car[2] 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 50 ENDIF ENDIF ENDIF ENDIF IF blood_top_left = 1 //player is INside area GET_SCRIPT_TASK_STATUS blood_passenger[blood_car_flag] TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_player_car 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 25 ENDIF ENDIF ENDIF ENDIF ENDIF //car 1 & 2 IF blood_car_flag = 1 OR blood_car_flag = 2 IF NOT IS_CAR_DEAD blood_car[blood_car_flag] //car driver IF NOT IS_CHAR_DEAD blood_driver[blood_car_flag] IF NOT IS_CAR_ON_FIRE blood_car[blood_car_flag] IF blood_top_left = 0 //player is OUTside area IF NOT IS_CAR_DEAD blood_car[0] GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_MISSION task_status IF task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_MISSION blood_driver[blood_car_flag] blood_car[blood_car_flag] blood_car[0] MISSION_BLOCKCAR_FARAWAY 100.0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF ENDIF IF blood_top_left = 1 //player is INside area GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_MISSION task_status IF task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_MISSION blood_driver[blood_car_flag] blood_car[blood_car_flag] blood_player_car MISSION_BLOCKCAR_FARAWAY 100.0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_TEMP_ACTION blood_driver[blood_car_flag] blood_car[blood_car_flag] TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF ENDIF ENDIF //car passenger IF NOT IS_CHAR_DEAD blood_passenger[blood_car_flag] IF blood_top_left = 0 //player is OUTside area GET_SCRIPT_TASK_STATUS blood_passenger[blood_car_flag] TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK IF NOT IS_CAR_DEAD blood_car[0] TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_car[0] 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 25 ENDIF ENDIF ENDIF IF blood_top_left = 1 //player is INside area GET_SCRIPT_TASK_STATUS blood_passenger[blood_car_flag] TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_player_car 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 25 ENDIF ENDIF ENDIF ENDIF ENDIF // TOP RIGHT //car 3 IF blood_car_flag = 3 IF NOT IS_CAR_DEAD blood_car[blood_car_flag] //car driver IF NOT IS_CHAR_DEAD blood_driver[blood_car_flag] IF NOT IS_CAR_ON_FIRE blood_car[blood_car_flag] IF blood_top_right = 0 //player is OUTside area GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_DRIVE_TO_COORD task_status IF task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK GENERATE_RANDOM_FLOAT_IN_RANGE -1530.0 -1384.0 blood_rnd_2x GENERATE_RANDOM_FLOAT_IN_RANGE 995.0 1056.0 blood_rnd_2y GET_GROUND_Z_FOR_3D_COORD blood_rnd_2x blood_rnd_2y 1078.7 blood_rnd_2z IF blood_rnd_2z < 1034.1 IF blood_rnd_2z > 1022.8 TASK_CAR_DRIVE_TO_COORD blood_driver[blood_car_flag] blood_car[blood_car_flag] blood_rnd_2x blood_rnd_2y blood_rnd_2z 100.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF ENDIF ENDIF IF blood_top_right = 1 //player is INside area GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_MISSION task_status IF task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_MISSION blood_driver[blood_car_flag] blood_car[blood_car_flag] blood_player_car MISSION_BLOCKCAR_FARAWAY 100.0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_TEMP_ACTION blood_driver[blood_car_flag] blood_car[blood_car_flag] TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF ENDIF ENDIF //car passenger IF NOT IS_CHAR_DEAD blood_passenger[blood_car_flag] IF blood_top_right = 0 //player is OUTside area GET_SCRIPT_TASK_STATUS blood_passenger[blood_car_flag] TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK IF NOT IS_CAR_DEAD blood_car[4] TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_car[4] 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 50 ELSE IF NOT IS_CAR_DEAD blood_car[5] TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_car[5] 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 50 ENDIF ENDIF ENDIF ENDIF IF blood_top_right = 1 //player is INside area GET_SCRIPT_TASK_STATUS blood_passenger[blood_car_flag] TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_player_car 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 25 ENDIF ENDIF ENDIF ENDIF ENDIF //car 4 & 5 IF blood_car_flag = 4 OR blood_car_flag = 5 IF NOT IS_CAR_DEAD blood_car[blood_car_flag] //car driver IF NOT IS_CHAR_DEAD blood_driver[blood_car_flag] IF NOT IS_CAR_ON_FIRE blood_car[blood_car_flag] IF blood_top_right = 0 //player is OUTside area IF NOT IS_CAR_DEAD blood_car[3] GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_MISSION task_status IF task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_MISSION blood_driver[blood_car_flag] blood_car[blood_car_flag] blood_car[3] MISSION_BLOCKCAR_FARAWAY 100.0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF ENDIF IF blood_top_right = 1 //player is INside area GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_MISSION task_status IF task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_MISSION blood_driver[blood_car_flag] blood_car[blood_car_flag] blood_player_car MISSION_BLOCKCAR_FARAWAY 100.0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_TEMP_ACTION blood_driver[blood_car_flag] blood_car[blood_car_flag] TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF ENDIF ENDIF //car passenger IF NOT IS_CHAR_DEAD blood_passenger[blood_car_flag] IF blood_top_right = 0 //player is OUTside area GET_SCRIPT_TASK_STATUS blood_passenger[blood_car_flag] TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK IF NOT IS_CAR_DEAD blood_car[3] TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_car[3] 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 25 ENDIF ENDIF ENDIF IF blood_top_right = 1 //player is INside area GET_SCRIPT_TASK_STATUS blood_passenger[blood_car_flag] TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_player_car 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 25 ENDIF ENDIF ENDIF ENDIF ENDIF // BOTTOM LEFT //car 6 IF blood_car_flag = 6 IF NOT IS_CAR_DEAD blood_car[blood_car_flag] //car driver IF NOT IS_CHAR_DEAD blood_driver[blood_car_flag] IF NOT IS_CAR_ON_FIRE blood_car[blood_car_flag] IF blood_bottom_left = 0 //player is OUTside area GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_DRIVE_TO_COORD task_status IF task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK GENERATE_RANDOM_FLOAT_IN_RANGE -1265.0 -1384.0 blood_rnd_3x GENERATE_RANDOM_FLOAT_IN_RANGE 995.0 923.0 blood_rnd_3y GET_GROUND_Z_FOR_3D_COORD blood_rnd_3x blood_rnd_3y 1078.7 blood_rnd_3z IF blood_rnd_3z < 1034.1 IF blood_rnd_3z > 1022.8 TASK_CAR_DRIVE_TO_COORD blood_driver[blood_car_flag] blood_car[blood_car_flag] blood_rnd_3x blood_rnd_3y blood_rnd_3z 100.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF ENDIF ENDIF IF blood_bottom_left = 1 //player is INside area GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_MISSION task_status IF task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_MISSION blood_driver[blood_car_flag] blood_car[blood_car_flag] blood_player_car MISSION_BLOCKCAR_FARAWAY 100.0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_TEMP_ACTION blood_driver[blood_car_flag] blood_car[blood_car_flag] TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF ENDIF ENDIF //car passenger IF NOT IS_CHAR_DEAD blood_passenger[blood_car_flag] IF blood_bottom_left = 0 //player is OUTside area GET_SCRIPT_TASK_STATUS blood_passenger[blood_car_flag] TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK IF NOT IS_CAR_DEAD blood_car[7] TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_car[7] 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 50 ELSE IF NOT IS_CAR_DEAD blood_car[8] TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_car[8] 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 50 ENDIF ENDIF ENDIF ENDIF IF blood_bottom_left = 1 //player is INside area GET_SCRIPT_TASK_STATUS blood_passenger[blood_car_flag] TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_player_car 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 25 ENDIF ENDIF ENDIF ENDIF ENDIF //car 7 & 8 IF blood_car_flag = 7 OR blood_car_flag = 8 IF NOT IS_CAR_DEAD blood_car[blood_car_flag] //car driver IF NOT IS_CHAR_DEAD blood_driver[blood_car_flag] IF NOT IS_CAR_ON_FIRE blood_car[blood_car_flag] IF blood_bottom_left = 0 //player is OUTside area IF NOT IS_CAR_DEAD blood_car[6] GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_MISSION task_status IF task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_MISSION blood_driver[blood_car_flag] blood_car[blood_car_flag] blood_car[6] MISSION_BLOCKCAR_FARAWAY 100.0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF ENDIF IF blood_bottom_left = 1 //player is INside area GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_MISSION task_status IF task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_MISSION blood_driver[blood_car_flag] blood_car[blood_car_flag] blood_player_car MISSION_BLOCKCAR_FARAWAY 100.0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_TEMP_ACTION blood_driver[blood_car_flag] blood_car[blood_car_flag] TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF ENDIF ENDIF //car passenger IF NOT IS_CHAR_DEAD blood_passenger[blood_car_flag] IF blood_bottom_left = 0 //player is OUTside area GET_SCRIPT_TASK_STATUS blood_passenger[blood_car_flag] TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK IF NOT IS_CAR_DEAD blood_car[6] TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_car[6] 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 25 ENDIF ENDIF ENDIF IF blood_bottom_left = 1 //player is INside area GET_SCRIPT_TASK_STATUS blood_passenger[blood_car_flag] TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_player_car 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 25 ENDIF ENDIF ENDIF ENDIF ENDIF // BOTTOM RIGHT //car 9 IF blood_car_flag = 9 IF NOT IS_CAR_DEAD blood_car[blood_car_flag] //car driver IF NOT IS_CHAR_DEAD blood_driver[blood_car_flag] IF NOT IS_CAR_ON_FIRE blood_car[blood_car_flag] IF blood_bottom_right = 0 //player is OUTside area GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_DRIVE_TO_COORD task_status IF task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK GENERATE_RANDOM_FLOAT_IN_RANGE -1265.0 -1384.0 blood_rnd_4x GENERATE_RANDOM_FLOAT_IN_RANGE 995.0 1056.0 blood_rnd_4y GET_GROUND_Z_FOR_3D_COORD blood_rnd_4x blood_rnd_4y 1078.7 blood_rnd_4z IF blood_rnd_4z < 1034.1 IF blood_rnd_4z > 1022.8 TASK_CAR_DRIVE_TO_COORD blood_driver[blood_car_flag] blood_car[blood_car_flag] blood_rnd_4x blood_rnd_4y blood_rnd_4z 100.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF ENDIF ENDIF IF blood_bottom_right = 1 //player is INside area GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_MISSION task_status IF task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_MISSION blood_driver[blood_car_flag] blood_car[blood_car_flag] blood_player_car MISSION_BLOCKCAR_FARAWAY 100.0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_TEMP_ACTION blood_driver[blood_car_flag] blood_car[blood_car_flag] TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF ENDIF ENDIF //car passenger IF NOT IS_CHAR_DEAD blood_passenger[blood_car_flag] IF blood_bottom_right = 0 //player is OUTside area GET_SCRIPT_TASK_STATUS blood_passenger[blood_car_flag] TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK IF NOT IS_CAR_DEAD blood_car[10] TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_car[10] 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 50 ELSE IF NOT IS_CAR_DEAD blood_car[11] TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_car[11] 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 50 ENDIF ENDIF ENDIF ENDIF IF blood_bottom_right = 1 //player is INside area GET_SCRIPT_TASK_STATUS blood_passenger[blood_car_flag] TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_player_car 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 25 ENDIF ENDIF ENDIF ENDIF ENDIF //car 10 & 11 IF blood_car_flag = 10 OR blood_car_flag = 11 IF NOT IS_CAR_DEAD blood_car[blood_car_flag] //car driver IF NOT IS_CHAR_DEAD blood_driver[blood_car_flag] IF NOT IS_CAR_ON_FIRE blood_car[blood_car_flag] IF blood_bottom_right = 0 //player is OUTside area IF NOT IS_CAR_DEAD blood_car[9] GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_MISSION task_status IF task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_MISSION blood_driver[blood_car_flag] blood_car[blood_car_flag] blood_car[9] MISSION_BLOCKCAR_FARAWAY 100.0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF ENDIF IF blood_bottom_right = 1 //player is INside area GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_MISSION task_status IF task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_MISSION blood_driver[blood_car_flag] blood_car[blood_car_flag] blood_player_car MISSION_BLOCKCAR_FARAWAY 100.0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_TEMP_ACTION blood_driver[blood_car_flag] blood_car[blood_car_flag] TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF ENDIF ENDIF //car passenger IF NOT IS_CHAR_DEAD blood_passenger[blood_car_flag] IF blood_bottom_right = 0 //player is OUTside area GET_SCRIPT_TASK_STATUS blood_passenger[blood_car_flag] TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK IF NOT IS_CAR_DEAD blood_car[9] TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_car[9] 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 25 ENDIF ENDIF ENDIF IF blood_bottom_right = 1 //player is INside area GET_SCRIPT_TASK_STATUS blood_passenger[blood_car_flag] TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_player_car 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 25 ENDIF ENDIF ENDIF ENDIF ENDIF /* //CARS BLOCKING PLAYERS CAR //car 12 & 13 IF blood_car_flag = 12 OR blood_car_flag = 13 IF NOT IS_CAR_DEAD blood_car[blood_car_flag] //car driver IF NOT IS_CHAR_DEAD blood_driver[blood_car_flag] IF NOT IS_CAR_ON_FIRE blood_car[blood_car_flag] GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_MISSION task_status IF task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_MISSION blood_driver[blood_car_flag] blood_car[blood_car_flag] blood_player_car MISSION_BLOCKCAR_FARAWAY 100.0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_TEMP_ACTION blood_driver[blood_car_flag] blood_car[blood_car_flag] TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF ENDIF ENDIF //car passenger IF NOT IS_CHAR_DEAD blood_passenger[blood_car_flag] GET_SCRIPT_TASK_STATUS blood_passenger[blood_car_flag] TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_player_car 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN FALSE 40 ENDIF ENDIF ENDIF ENDIF */ //CARS CHASING CHECKPOINTS //car 14 & 15 IF blood_car_flag = 14 //OR blood_car_flag = 15 IF NOT IS_CAR_DEAD blood_car[blood_car_flag] //car driver IF NOT IS_CHAR_DEAD blood_driver[blood_car_flag] IF NOT IS_CAR_ON_FIRE blood_car[blood_car_flag] GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_DRIVE_TO_COORD task_status IF task_status = FINISHED_TASK GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_DRIVE_TO_COORD blood_driver[blood_car_flag] blood_car[blood_car_flag] blood_chckpnt_x blood_chckpnt_y blood_chckpnt_z 100.0 MODE_STRAIGHTLINE 0 DRIVINGMODE_PLOUGHTHROUGH ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_TEMP_ACTION blood_driver[blood_car_flag] blood_car[blood_car_flag] TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD blood_passenger[blood_car_flag] GET_SCRIPT_TASK_STATUS blood_passenger[blood_car_flag] TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK blood_this_car = blood_car[blood_car_flag] IF blood_car_flag = 14 GOSUB blood_get_closest_car blood_rnd_car[0] = blood_closest_car_index IF NOT blood_rnd_car[0] = -1 TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_rnd_car[0] 0.0 0.0 0.0 30.0 DRIVEBY_AI_ALL_DIRN FALSE 50 ENDIF ENDIF IF blood_car_flag = 15 GOSUB blood_get_closest_car blood_rnd_car[1] = blood_closest_car_index IF NOT blood_rnd_car[1] = -1 TASK_DRIVE_BY blood_passenger[blood_car_flag] -1 blood_rnd_car[1] 0.0 0.0 0.0 30.0 DRIVEBY_AI_ALL_DIRN FALSE 50 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //checking if any car has passed through the checkpoint /* IF NOT IS_CAR_DEAD blood_car[0] IF LOCATE_CAR_3D blood_car[0] blood_chckpnt_x blood_chckpnt_y blood_chckpnt_z 7.0 7.0 7.0 FALSE GOSUB blood_checkpoint_location ENDIF ENDIF IF NOT IS_CAR_DEAD blood_car[3] IF LOCATE_CAR_3D blood_car[3] blood_chckpnt_x blood_chckpnt_y blood_chckpnt_z 7.0 7.0 7.0 FALSE GOSUB blood_checkpoint_location ENDIF ENDIF IF NOT IS_CAR_DEAD blood_car[6] IF LOCATE_CAR_3D blood_car[6] blood_chckpnt_x blood_chckpnt_y blood_chckpnt_z 7.0 7.0 7.0 FALSE GOSUB blood_checkpoint_location ENDIF ENDIF IF NOT IS_CAR_DEAD blood_car[9] IF LOCATE_CAR_3D blood_car[9] blood_chckpnt_x blood_chckpnt_y blood_chckpnt_z 7.0 7.0 7.0 FALSE GOSUB blood_checkpoint_location ENDIF ENDIF */ //checking if player killed a car IF NOT IS_CAR_DEAD blood_car[blood_car_flag] IF NOT IS_CHAR_DEAD blood_player2 IF HAS_CAR_BEEN_DAMAGED_BY_CHAR blood_car[blood_car_flag] blood_player2 OR HAS_CAR_BEEN_DAMAGED_BY_CHAR blood_car[blood_car_flag] scplayer blood_player_damaged_car[blood_car_flag] = 1 ELSE blood_player_damaged_car[blood_car_flag] = 0 ENDIF CLEAR_CAR_LAST_DAMAGE_ENTITY blood_car[blood_car_flag] ENDIF ENDIF ///checking if cars are stuck or not IF NOT IS_CAR_DEAD blood_car[blood_car_flag] IF NOT IS_CHAR_DEAD blood_driver[blood_car_flag] IF IS_CAR_UPSIDEDOWN blood_car[blood_car_flag] IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer blood_car[blood_car_flag] 7.0 7.0 FALSE GET_CAR_COORDINATES blood_car[blood_car_flag] blood_reposition_car_x blood_reposition_car_y blood_reposition_car_z SET_CAR_COORDINATES blood_car[blood_car_flag] blood_reposition_car_x blood_reposition_car_y blood_reposition_car_z ENDIF ENDIF IF IS_CAR_STUCK blood_car[blood_car_flag] GET_SCRIPT_TASK_STATUS blood_driver[blood_car_flag] TASK_CAR_TEMP_ACTION task_status IF task_status = FINISHED_TASK TASK_CAR_TEMP_ACTION blood_driver[blood_car_flag] blood_car[blood_car_flag] TEMPACT_REVERSE 3000 ENDIF ENDIF ENDIF ELSE //checking if player killed a car IF blood_player_damaged_car[blood_car_flag] = 1 blood_cars_killed ++ ENDIF blood_player_damaged_car[blood_car_flag] = 0 //creating new car //blood_car_dead_flag = blood_car_flag GOSUB blood_new_cars ENDIF blood_car_flag ++ ELSE blood_car_flag = 0 ENDIF //checking if one of the cars chasing you has gone through a checkpoint IF NOT IS_CAR_DEAD blood_car[12] IF LOCATE_CAR_3D blood_car[12] blood_chckpnt_x blood_chckpnt_y blood_chckpnt_z 7.0 7.0 7.0 FALSE GOSUB blood_checkpoint_location ENDIF ENDIF IF NOT IS_CAR_DEAD blood_car[13] IF LOCATE_CAR_3D blood_car[13] blood_chckpnt_x blood_chckpnt_y blood_chckpnt_z 7.0 7.0 7.0 FALSE GOSUB blood_checkpoint_location ENDIF ENDIF IF NOT IS_CAR_DEAD blood_car[14] IF LOCATE_CAR_3D blood_car[14] blood_chckpnt_x blood_chckpnt_y blood_chckpnt_z 7.0 7.0 7.0 FALSE GOSUB blood_checkpoint_location ENDIF ENDIF IF NOT IS_CAR_DEAD blood_car[15] IF LOCATE_CAR_3D blood_car[15] blood_chckpnt_x blood_chckpnt_y blood_chckpnt_z 7.0 7.0 7.0 FALSE GOSUB blood_checkpoint_location ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////// DEALING WITH THE UPGRADES ////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF DOES_OBJECT_EXIST blood_upgrade IF LOCATE_CHAR_ANY_MEANS_OBJECT_2D scplayer blood_upgrade 5.0 5.0 FALSE DELETE_OBJECT blood_upgrade GET_CAR_HEALTH blood_player_car blood_players_car_health IF blood_players_car_health < 999 blood_players_car_health += 500 SET_CAR_HEALTH blood_player_car blood_players_car_health ELSE blood_players_car_health = 1500 SET_CAR_HEALTH blood_player_car blood_players_car_health ENDIF ELSE IF blood_spin_upgrade < 358.0 blood_spin_upgrade += 3.0 SET_OBJECT_HEADING blood_upgrade blood_spin_upgrade ELSE blood_spin_upgrade = 0.0 ENDIF ENDIF ELSE GOSUB blood_upgrade_location ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////// DEALING WITH THE BLIPS, CORONAS AND COMPLETION ///////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //drawing corona for checkpoint //DRAW_CORONA blood_chckpnt_x blood_chckpnt_y blood_chckpnt_z 6.0 CORONATYPE_SHINYSTAR FLARETYPE_NONE 0 0 255 //checking player has reached corona IF LOCATE_CHAR_ANY_MEANS_3D scplayer blood_chckpnt_x blood_chckpnt_y blood_chckpnt_z 7.0 7.0 7.0 FALSE IF blood_players_current_time > 0 GET_CAR_HEALTH blood_player_car blood_players_car_health IF blood_players_car_health < 1199 blood_players_car_health += 300 SET_CAR_HEALTH blood_player_car blood_players_car_health ELSE blood_players_car_health = 1500 SET_CAR_HEALTH blood_player_car blood_players_car_health ENDIF blood_players_current_time += 15000 //15 secs extra ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE GOSUB blood_checkpoint_location ENDIF ENDIF //checking if players car is upside down IF IS_CAR_UPSIDEDOWN blood_player_car IF IS_CAR_STOPPED blood_player_car GET_CAR_COORDINATES blood_player_car blood_reposition_car_x blood_reposition_car_y blood_reposition_car_z GET_CAR_HEADING blood_player_car blood_heading SET_CAR_COORDINATES blood_player_car blood_reposition_car_x blood_reposition_car_y blood_reposition_car_z SET_CAR_HEADING blood_player_car blood_heading ENDIF ENDIF //sorting out players passenger IF NOT IS_CHAR_DEAD blood_player2 GET_SCRIPT_TASK_STATUS blood_player2 TASK_DRIVE_BY task_status IF task_status = FINISHED_TASK blood_this_car = blood_player_car GOSUB blood_get_closest_car blood_rnd_car[2] = blood_closest_car_index IF NOT blood_rnd_car[2] = -1 TASK_DRIVE_BY blood_player2 -1 blood_rnd_car[2] 0.0 0.0 0.0 30.0 DRIVEBY_AI_ALL_DIRN FALSE 100 ENDIF ENDIF ENDIF //playing ooh's n aaahs GOSUB blood_audio //passing the mission IF blood_players_current_time > blood_time_to_beat blood_goals = 1 ENDIF //failing the mission IF blood_players_current_time <= 0 blood_goals = 2 ENDIF ENDIF ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////// PASSING THE MISSION //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF blood_goals = 1 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON PLAY_MISSION_PASSED_TUNE 1 blood_car_flag = 0 WHILE blood_car_flag < 16 WAIT 0 IF blood_car_flag = 12 blood_car_flag = 14 ENDIF IF NOT IS_CAR_DEAD blood_car[blood_car_flag] FREEZE_CAR_POSITION blood_car[blood_car_flag] TRUE ENDIF blood_car_flag ++ ENDWHILE GOSUB blood_menu blood_longest_time = blood_attempt * 60 INCREMENT_INT_STAT BLOODRING_TIME blood_longest_time INCREMENT_INT_STAT BLOODRING_KILLS blood_cars_killed blood_attempt ++ blood_time_to_beat += 60000 timera = 0 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_WIDESCREEN OFF SET_AREA_VISIBLE 0 SET_CHAR_AREA_VISIBLE scplayer 0 REQUEST_COLLISION -2126.3 -440.6 LOAD_SCENE_IN_DIRECTION -2119.0 -440.7 34.5 82.6 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -2126.3 -440.6 34.5 SET_CHAR_HEADING scplayer 82.7 CLEAR_ONSCREEN_TIMER blood_players_current_time REMOVE_BLIP blood_blip DELETE_CHECKPOINT blood_checkpoint HIDE_ALL_FRONTEND_BLIPS FALSE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_FADING_COLOUR 0 0 0 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON GOTO mission_blood_passed ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////// FAILING THE MISSION //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IF blood_goals = 2 //REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_AIR_HORN SET_PLAYER_CONTROL player1 OFF //SWITCH_WIDESCREEN ON blood_car_flag = 0 WHILE blood_car_flag < 16 WAIT 0 IF blood_car_flag = 12 blood_car_flag = 14 ENDIF IF NOT IS_CAR_DEAD blood_car[blood_car_flag] FREEZE_CAR_POSITION blood_car[blood_car_flag] TRUE ENDIF blood_car_flag ++ ENDWHILE SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_WIDESCREEN OFF CLEAR_PRINTS PRINT_BIG M_FAIL 5000 1 PRINT_NOW ( BLOD_05 ) 5000 1 //You ran out of time. SET_AREA_VISIBLE 0 SET_CHAR_AREA_VISIBLE scplayer 0 REQUEST_COLLISION -2126.3 -440.6 LOAD_SCENE_IN_DIRECTION -2119.0 -440.7 34.5 82.6 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer SET_CHAR_COORDINATES scplayer -2126.3 -440.6 34.5 SET_CHAR_HEADING scplayer 82.7 CLEAR_ONSCREEN_TIMER blood_players_current_time REMOVE_BLIP blood_blip DELETE_CHECKPOINT blood_checkpoint HIDE_ALL_FRONTEND_BLIPS FALSE CANCEL_OVERRIDE_RESTART SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_FADING_COLOUR 0 0 0 DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_PLAYER_CONTROL player1 ON GOTO mission_blood_failed ENDIF GOTO mission_blood_loop // ************************************ Mission blood failed ************************************ mission_blood_failed: PRINT_BIG M_FAIL 5000 1 RETURN // -********************************** mission blood passed ************************************ mission_blood_passed: //flag_blood_mission1_passed = 1 //PRINT_WITH_NUMBER_BIG M_PASS 30000 5000 1 //PLAY_MISSION_PASSED_TUNE 1 //CLEAR_WANTED_LEVEL PLAYER1 CANCEL_OVERRIDE_RESTART SET_FREE_HEALTH_CARE player1 FALSE CLEAR_PRINTS CLEAR_WANTED_LEVEL player1 IF blood_passed_once = 0 REGISTER_ODDJOB_MISSION_PASSED PLAYER_MADE_PROGRESS 1 SWITCH_CAR_GENERATOR f1_blood_car_gen 101 PLAY_MISSION_PASSED_TUNE 2 PRINT_WITH_NUMBER_BIG ( M_PASS ) 10000 5000 1 //"Mission Passed!" //100 being the amount of cash ADD_SCORE player1 10000//amount of cash blood_passed_once = 1 ENDIF RETURN // ********************************** mission cleanup ************************************ mission_cleanup_blood: DISPLAY_RADAR 3 // PATHING ON //SET_CAMERA_BEHIND_PLAYER IF IS_STRING_EMPTY $shop_name RESTORE_CAMERA_JUMPCUT ENDIF CLEAR_EXTRA_COLOURS FALSE REMOVE_BLIP blood_blip //CLEAR_ONSCREEN_COUNTER CLEAR_ONSCREEN_TIMER blood_players_current_time //MARK_MODEL_AS_NO_LONGER_NEEDED IF NOT IS_CHAR_DEAD scplayer SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH scplayer FALSE ENDIF SHUT_ALL_CHARS_UP FALSE USE_TEXT_COMMANDS FALSE //LOAD_SCENE -2119.0 -440.7 34.5 MARK_MODEL_AS_NO_LONGER_NEEDED BLOODRA MARK_MODEL_AS_NO_LONGER_NEEDED STALLION MARK_MODEL_AS_NO_LONGER_NEEDED mp5lng MARK_MODEL_AS_NO_LONGER_NEEDED bb_pickup SET_CHAR_AMMO scplayer WEAPONTYPE_MP5 blood_bullets DELETE_CHECKPOINT blood_checkpoint DONT_SUPPRESS_ANY_CAR_MODELS FORCE_ALL_VEHICLE_LIGHTS_OFF FALSE //SHUT_PLAYER_UP player1 FALSE HIDE_ALL_FRONTEND_BLIPS FALSE GET_GAME_TIMER timer_mobile_start flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////// GOSUBS /////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// blood_setting_up_cars:///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF blood_car_flag = 0 blood_x = -1285.77 blood_y = 1014.54 blood_z = 1036.5 blood_heading = 104.4 ENDIF IF blood_car_flag = 1 blood_x = -1299.50 blood_y = 1030.74 blood_z = 1036.8 blood_heading = 132.6 ENDIF IF blood_car_flag = 2 blood_x = -1319.30 blood_y = 1042.82 blood_z = 1037.1 blood_heading = 135.4 ENDIF IF blood_car_flag = 3 blood_x = -1349.33 blood_y = 1054.47 blood_z = 1037.3 blood_heading = 155.4 ENDIF IF blood_car_flag = 4 blood_x = -1384.33 blood_y = 1058.55 blood_z = 1037.5 blood_heading = 173.2 ENDIF IF blood_car_flag = 5 blood_x = -1296.7 blood_y = 960.2 blood_z = 1035.6 blood_heading = 60.5 ENDIF IF blood_car_flag = 6 blood_x = -1418.77 blood_y = 1057.54 blood_z = 1037.5 blood_heading = 180.4 ENDIF IF blood_car_flag = 7 blood_x = -1460.3 blood_y = 1050.3 blood_z = 1037.5 blood_heading = 203.9 ENDIF IF blood_car_flag = 8 blood_x = -1499.77 blood_y = 1029.54 blood_z = 1037.2 blood_heading = 242.4 ENDIF IF blood_car_flag = 9 blood_x = -1513.77 blood_y = 986.54 blood_z = 1036.5 blood_heading = 271.4 ENDIF IF blood_car_flag = 10 blood_x = -1496.77 blood_y = 959.54 blood_z = 1036.0 blood_heading = 293.4 ENDIF IF blood_car_flag = 11 blood_x = -1461.84 blood_y = 938.32 blood_z = 1035.3 blood_heading = 345.6 ENDIF /* IF blood_car_flag = 12 blood_x = -1424.36 blood_y = 931.29 blood_z = 1035.2 blood_heading = 0.0 ENDIF IF blood_car_flag = 13 blood_x = -1363.77 blood_y = 932.44 blood_z = 1035.3 blood_heading = 17.85 ENDIF */ IF blood_car_flag = 14 blood_x = -1332.77 blood_y = 940.30 blood_z = 1037.0 blood_heading = 39.98 ENDIF /* IF blood_car_flag = 15 blood_x = -1443.29 blood_y = 933.86 blood_z = 1035.3 blood_heading = 351.4 ENDIF */ /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// blood_checkpoint_location:///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// GENERATE_RANDOM_FLOAT_IN_RANGE -1290.0 -1508.0 blood_chckpnt_x GENERATE_RANDOM_FLOAT_IN_RANGE 939.0 1052.0 blood_chckpnt_y GET_GROUND_Z_FOR_3D_COORD blood_chckpnt_x blood_chckpnt_y 1056.7 blood_chckpnt_z IF blood_chckpnt_z > 1034.1 GOTO blood_checkpoint_location ENDIF IF blood_chckpnt_z < 1022.8 GOTO blood_checkpoint_location ENDIF REMOVE_BLIP blood_blip ADD_BLIP_FOR_COORD blood_chckpnt_x blood_chckpnt_y blood_chckpnt_z blood_blip IF NOT IS_CHAR_DEAD blood_driver[14] CLEAR_CHAR_TASKS blood_driver[14] ENDIF IF NOT IS_CHAR_DEAD blood_driver[15] CLEAR_CHAR_TASKS blood_driver[15] ENDIF SET_CHECKPOINT_COORDS blood_checkpoint blood_chckpnt_x blood_chckpnt_y blood_chckpnt_z /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// blood_upgrade_location:///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// GENERATE_RANDOM_FLOAT_IN_RANGE -1290.0 -1508.0 blood_upgrade_x GENERATE_RANDOM_FLOAT_IN_RANGE 939.0 1052.0 blood_upgrade_y GET_GROUND_Z_FOR_3D_COORD blood_upgrade_x blood_upgrade_y 1056.7 blood_upgrade_z IF blood_upgrade_z > 1034.1 GOTO blood_upgrade_location ENDIF IF blood_upgrade_z < 1022.8 GOTO blood_upgrade_location ENDIF blood_upgrade_z += 0.5 CREATE_OBJECT bb_pickup blood_upgrade_x blood_upgrade_y blood_upgrade_z blood_upgrade SET_OBJECT_AREA_VISIBLE blood_upgrade 15 SET_OBJECT_COLLISION blood_upgrade FALSE SET_OBJECT_DYNAMIC blood_upgrade FALSE /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// blood_new_cars://////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// GOSUB blood_random_garages IF NOT blood_random_garage_flag = -1 REMOVE_STUCK_CAR_CHECK blood_car[blood_car_flag] MARK_CAR_AS_NO_LONGER_NEEDED blood_car[blood_car_flag] MARK_CHAR_AS_NO_LONGER_NEEDED blood_driver[blood_car_flag] MARK_CHAR_AS_NO_LONGER_NEEDED blood_passenger[blood_car_flag] GET_RANDOM_CAR_MODEL_IN_MEMORY TRUE blood_model blood_class IF blood_model >= 0 blood_no_plates = blood_model GOSUB blood_my_number_plates CREATE_CAR blood_model blood_x blood_y blood_z blood_car[blood_car_flag] SET_CAR_HEADING blood_car[blood_car_flag] blood_heading ENDIF IF NOT IS_CAR_DEAD blood_car[blood_car_flag] SET_LOAD_COLLISION_FOR_CAR_FLAG blood_car[blood_car_flag] TRUE SET_CAR_STRAIGHT_LINE_DISTANCE blood_car[blood_car_flag] 255 SET_CAN_BURST_CAR_TYRES blood_car[blood_car_flag] FALSE CREATE_RANDOM_CHAR_AS_DRIVER blood_car[blood_car_flag] blood_driver[blood_car_flag] SET_CHAR_AREA_VISIBLE blood_driver[blood_car_flag] 15 SET_CHAR_DECISION_MAKER blood_driver[blood_car_flag] blood_empty_ped_decision_maker SET_CHAR_PROOFS blood_driver[blood_car_flag] TRUE FALSE FALSE FALSE FALSE //SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH blood_driver[blood_car_flag] TRUE SET_LOAD_COLLISION_FOR_CHAR_FLAG blood_driver[blood_car_flag] TRUE GET_MAXIMUM_NUMBER_OF_PASSENGERS blood_car[blood_car_flag] blood_no_of_seats IF blood_no_of_seats > 0 CREATE_RANDOM_CHAR_AS_PASSENGER blood_car[blood_car_flag] 0 blood_passenger[blood_car_flag] SET_CHAR_DECISION_MAKER blood_passenger[blood_car_flag] blood_empty_ped_decision_maker SET_CHAR_PROOFS blood_passenger[blood_car_flag] TRUE FALSE FALSE FALSE FALSE GIVE_WEAPON_TO_CHAR blood_passenger[blood_car_flag] WEAPONTYPE_MP5 30000 //SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH blood_passenger[blood_car_flag] TRUE ENDIF IF IS_CHAR_ON_ANY_BIKE blood_driver[blood_car_flag] SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE blood_driver[blood_car_flag] KNOCKOFFBIKE_NEVER SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE blood_passenger[blood_car_flag] KNOCKOFFBIKE_NEVER ENDIF ADD_STUCK_CAR_CHECK blood_car[blood_car_flag] 1.0 3000 SET_UPSIDEDOWN_CAR_NOT_DAMAGED blood_car[blood_car_flag] TRUE SET_VEHICLE_AREA_VISIBLE blood_car[blood_car_flag] 15 SET_CAR_FORWARD_SPEED blood_car[blood_car_flag] 25.0 TASK_CAR_TEMP_ACTION blood_driver[blood_car_flag] blood_car[blood_car_flag] TEMPACT_GOFORWARD 3000 ENDIF ENDIF //blood_car_dead_flag = -1 /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// blood_random_garages:////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// GENERATE_RANDOM_INT_IN_RANGE 1 4 blood_random_garage_flag IF blood_random_garage_flag = 1 IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY -1461.84 938.32 1035.00 5.0 5.0 5.0 //garage 1 blood_x = -1461.84 blood_y = 938.32 blood_z = 1035.00 blood_heading = 345.6 ELSE blood_random_garage_flag = 2 ENDIF ENDIF IF blood_random_garage_flag = 2 IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY -1424.36 933.86 1035.00 5.0 5.0 5.0 //garage 2 blood_x = -1424.36 blood_y = 933.86 blood_z = 1035.00 blood_heading = 0.0 ELSE blood_random_garage_flag = 3 ENDIF ENDIF IF blood_random_garage_flag = 3 IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY -1443.29 931.29 1035.00 5.0 5.0 5.0 //grage 3 blood_x = -1443.29 blood_y = 931.29 blood_z = 1035.00 blood_heading = 351.4 ELSE blood_random_garage_flag = 1 ENDIF ENDIF IF blood_random_garage_flag = 1 IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY -1461.84 938.32 1035.00 5.0 5.0 5.0 //garage 1 blood_x = -1461.84 blood_y = 938.32 blood_z = 1035.00 blood_heading = 345.6 ELSE blood_random_garage_flag = -1 ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// blood_my_number_plates://////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// GENERATE_RANDOM_INT_IN_RANGE 1 37 blood_no_plates_flag IF blood_no_plates_flag = 1 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates got_m00_ ENDIF IF blood_no_plates_flag = 2 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates m00tv_4u ENDIF IF blood_no_plates_flag = 3 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates mathew_2 ENDIF IF blood_no_plates_flag = 4 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates d4_dew0r ENDIF IF blood_no_plates_flag = 5 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates d0de_777 ENDIF IF blood_no_plates_flag = 6 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates dam0_666 ENDIF IF blood_no_plates_flag = 7 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates C0NEY_88 ENDIF IF blood_no_plates_flag = 8 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates pre4cher ENDIF IF blood_no_plates_flag = 9 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates dbp_4ndy ENDIF IF blood_no_plates_flag = 10 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates ev1l_sly ENDIF IF blood_no_plates_flag = 11 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates n1_r4v3n ENDIF IF blood_no_plates_flag = 12 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates d1vx_z00 ENDIF IF blood_no_plates_flag = 13 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates mr_b3nn ENDIF IF blood_no_plates_flag = 14 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates r3d_r4sp ENDIF IF blood_no_plates_flag = 15 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates La_B0mba ENDIF IF blood_no_plates_flag = 16 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates L3337_0g ENDIF IF blood_no_plates_flag = 17 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates budd4h_X ENDIF IF blood_no_plates_flag = 18 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates t3h_buck ENDIF IF blood_no_plates_flag = 19 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates CHUNKY_1 ENDIF IF blood_no_plates_flag = 20 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates ev1l_bnz ENDIF IF blood_no_plates_flag = 21 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates S4ND_M4N ENDIF IF blood_no_plates_flag = 22 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates RKK_DBP1 ENDIF IF blood_no_plates_flag = 23 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates RE1_K0KU ENDIF IF blood_no_plates_flag = 24 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates s3xy_jud ENDIF IF blood_no_plates_flag = 25 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates sunra_93 ENDIF IF blood_no_plates_flag = 26 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates UG_FuX69 ENDIF IF blood_no_plates_flag = 27 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates Li0n_Cum ENDIF IF blood_no_plates_flag = 28 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates rkk_pwnd ENDIF IF blood_no_plates_flag = 29 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates haze_b0b ENDIF IF blood_no_plates_flag = 30 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates t3h_fluf ENDIF IF blood_no_plates_flag = 31 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates BM_4NDY_ ENDIF IF blood_no_plates_flag = 32 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates BM_D34N_ ENDIF IF blood_no_plates_flag = 33 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates BM_L4C3Y ENDIF IF blood_no_plates_flag = 34 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates BM_D3V__ ENDIF IF blood_no_plates_flag = 35 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates NU_SK00L ENDIF IF blood_no_plates_flag = 36 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates G4L_AVET ENDIF IF blood_no_plates_flag = 37 CUSTOM_PLATE_FOR_NEXT_CAR blood_no_plates M0j0_j0j ENDIF //////////////////////////////////////////////////////////////////////////// RETURN////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// blood_get_closest_car:////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// GET_CAR_COORDINATES blood_this_car blood_this_car_x blood_this_car_y z blood_car_flag2 = 0 blood_closest_distance = 99999.0 blood_closest_car_index = -1 WHILE blood_car_flag2 < 16 IF NOT blood_this_car = blood_car[blood_car_flag2] IF NOT IS_CAR_DEAD blood_car[blood_car_flag2] GET_CAR_COORDINATES blood_car[blood_car_flag2] blood_other_car_x blood_other_car_y z GET_DISTANCE_BETWEEN_COORDS_2D blood_this_car_x blood_this_car_y blood_other_car_x blood_other_car_y blood_current_distance IF blood_current_distance < blood_closest_distance blood_closest_distance = blood_current_distance blood_closest_car_index = blood_car[blood_car_flag2] ENDIF ENDIF ENDIF blood_car_flag2++ ENDWHILE IF NOT blood_this_car = blood_player_car GET_CAR_COORDINATES blood_player_car blood_other_car_x blood_other_car_y z GET_DISTANCE_BETWEEN_COORDS_2D blood_this_car_x blood_this_car_y blood_other_car_x blood_other_car_y blood_current_distance IF blood_current_distance < blood_closest_distance blood_closest_distance = blood_current_distance blood_closest_car_index = blood_player_car ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// blood_menu://////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// timera = 0 WHILE timera < 5000 // Give the widget the data it needs for display. // // Args are: cell int0 int1 color label text //================================================================================================= SET_WIDGET_INFO2 WIDGET_RACE_RESULTS 0 blood_attempt 0 WAGER_WHITE BLOD_07 DUMMY // New Best Time (mins) SET_WIDGET_INFO2 WIDGET_RACE_RESULTS 1 blood_cars_killed 0 WAGER_WHITE BLOD_08 DUMMY // Cars Destroyed SET_WIDGET_INFO2 WIDGET_RACE_RESULTS 2 0 0 WAGER_WHITE DUMMY DUMMY // Empty Cell SET_WIDGET_INFO2 WIDGET_RACE_RESULTS 3 0 0 WAGER_WHITE DUMMY DUMMY // Empty Cell SET_WIDGET_INFO2 WIDGET_RACE_RESULTS 4 0 0 WAGER_WHITE DUMMY DUMMY // Empty Cell WAIT 0 ENDWHILE RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// blood_audio://////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// IF blood_audio_flag = 0 GENERATE_RANDOM_INT_IN_RANGE 8000 16000 blood_rnd_time GENERATE_RANDOM_INT_IN_RANGE 1 22 blood_sound_flag LOAD_MISSION_AUDIO 4 blood_sound[blood_sound_flag] timerb = 0 blood_audio_flag = 1 ENDIF IF blood_audio_flag = 1 IF HAS_MISSION_AUDIO_LOADED 4 blood_audio_flag = 2 ENDIF ENDIF IF blood_audio_flag = 2 IF timerb > blood_rnd_time PLAY_MISSION_AUDIO 4 blood_audio_flag = 3 ENDIF ENDIF IF blood_audio_flag = 3 IF HAS_MISSION_AUDIO_FINISHED 4 blood_audio_flag = 0 ENDIF ENDIF /////////////////////////////////////////////////////////////////////////////////////////// RETURN///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ********************************** KickStart Bike Trials ******************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME kicksta // Mission start stuff GOSUB mission_start_kickstart IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_kickstart_failed ENDIF GOSUB mission_cleanup_kickstart MISSION_END { // Variables for mission VAR_INT player_checkpoint_kickstart // number of checkpoints that the player has completed VAR_INT time_now_ks // time recorded for falling off of bike VAR_INT time_off_bike_ks // time player has been off of bike VAR_INT time_bailed_ks // time player fell off VAR_INT time_left_to_find_bike_ks // timer player has left to find bike VAR_INT time_left_to_find_bike_secs_ks // timer player has left to find bike in seconds // timer stuff VAR_INT race_timer_kickstart // time taken // Timer stuff VAR_INT race_timer_seconds_kickstart VAR_INT race_timer_mins_kickstart VAR_INT race_timer_seconds2_kickstart VAR_INT player_taken_too_long_kickstart // player has been in the area too long // Bike stuff LVAR_INT bike_kickstart LVAR_INT flag_bike_blip_on_kickstart LVAR_INT bike_blip_kickstart // Blob Stuff VAR_INT number_of_checkpoints_kickstart score_kickstart // Dodgy map stuff coords LVAR_FLOAT player_x_kickstart player_y_kickstart player_z_kickstart LVAR_FLOAT bike_x_kickstart bike_y_kickstart bike_z_kickstart // player in end area LVAR_INT player_in_end_area_kickstart LVAR_INT sphere_kickstart // New scoreing system LVAR_INT player_been_rewarded_kickstart // New audio stuff LVAR_INT audio_flag_cheer_kick // Used when the player has scored 8 checkpoints LVAR_INT audio_flag_ohh_kick // used when the player has falled off of the bike LVAR_INT flag_play_audio_kickstart LVAR_INT flash_number_kickstart flash_number_kickstart = 0 CONST_INT TOTAL_CHECKPOINTS_KICKSTART 33 // constant cant change LVAR_FLOAT checkpointX_kickstart[TOTAL_CHECKPOINTS_KICKSTART] LVAR_FLOAT checkpointY_kickstart[TOTAL_CHECKPOINTS_KICKSTART] LVAR_FLOAT checkpointZ_kickstart[TOTAL_CHECKPOINTS_KICKSTART] LVAR_INT checkpoint_blip_kickstart[TOTAL_CHECKPOINTS_KICKSTART] LVAR_INT flag_done_checkpoint_kickstart[TOTAL_CHECKPOINTS_KICKSTART] LVAR_INT corona_colour[TOTAL_CHECKPOINTS_KICKSTART] LVAR_INT stat_kickstart LVAR_FLOAT corona_size_kickstart LVAR_INT red_value_kickstart green_value_kickstart blue_value_kickstart LVAR_INT counter_array_kickstart LVAR_INT flag_player_bailed_ks LVAR_INT watched_cutscene_ks LVAR_INT index_kickstart LVAR_INT flag_cutscene_kickstart LVAR_INT reward_kickstart //LVAR_INT car_gen_duneride2_kickstart // ****************************************Mission Start************************************ mission_start_kickstart: CLEAR_THIS_PRINT_BIG_NOW 1 flag_player_on_mission = 1 flag_play_audio_kickstart = 0 corona_size_kickstart = 1.5 /* red_value_kickstart = 255 green_value_kickstart = 0 blue_value_kickstart = 0 */ counter_array_kickstart = 0 flag_player_bailed_ks = 0 score_kickstart = 0 flag_cutscene_kickstart = 0 IF flag_kickstart_passed_1stime = 0 REGISTER_MISSION_GIVEN ENDIF player_checkpoint_kickstart = 0 race_timer_kickstart = 360000//6 minutes //240000//4 minutes time_left_to_find_bike_ks = 30000 //30 seconds ////////////////////////////////////// // 0 = GREEN // 1 = AMBER // 2 = RED ////////////////////////////////////// // Checkpoint1 jump through fire hoop infront of player checkpointX_kickstart[0] = -1376.4366 checkpointY_kickstart[0] = 1562.2899 checkpointZ_kickstart[0] = 1059.0 flag_done_checkpoint_kickstart[0] = 0 corona_colour[0] = 0 // Checkpoint 2 steel ledge behind 1st fire jump checkpointX_kickstart[1] = -1354.8418 checkpointY_kickstart[1] = 1585.2007 checkpointZ_kickstart[1] = 1057.8851 flag_done_checkpoint_kickstart[1] = 0 corona_colour[1] = 1 // Checkpoint 3 steel ledge to left of start checkpointX_kickstart[2] = -1408.0247 checkpointY_kickstart[2] = 1568.7357 checkpointZ_kickstart[2] = 1055.8383 flag_done_checkpoint_kickstart[2] = 0 corona_colour[2] = 1 // Checkpoint 4 big rocks to the left of the start checkpointX_kickstart[3] = -1451.7278 checkpointY_kickstart[3] = 1571.0653 checkpointZ_kickstart[3] = 1059.000 flag_done_checkpoint_kickstart[3] = 0 corona_colour[3] = 2 // Checkpoint 5 oval wall beind the start checkpointX_kickstart[4] = -1487.5543 checkpointY_kickstart[4] = 1564.2778 checkpointZ_kickstart[4] = 1056.4565 flag_done_checkpoint_kickstart[4] = 0 corona_colour[4] = 2 // Checkpoint 6 small rocks with pipe to the left of the start checkpointX_kickstart[5] = -1466.2863 checkpointY_kickstart[5] = 1595.3552 checkpointZ_kickstart[5] = 1057.3250 flag_done_checkpoint_kickstart[5] = 0 corona_colour[5] = 2 // Checkpoint 7 pile of cars to the left of the first jump checkpointX_kickstart[6] = -1387.5973 checkpointY_kickstart[6] = 1572.1252 checkpointZ_kickstart[6] = 1053.9291 flag_done_checkpoint_kickstart[6] = 0 corona_colour[6] = 0 // Checkpoint 8 top of bus 1 checkpointX_kickstart[7] = -1362.5787 checkpointY_kickstart[7] = 1614.6240 checkpointZ_kickstart[7] = 1055.3297 flag_done_checkpoint_kickstart[7] = 0 corona_colour[7] = 1 // Checkpoint 9 top of bus 2 checkpointX_kickstart[8] = -1359.5103 checkpointY_kickstart[8] = 1638.2191 checkpointZ_kickstart[8] = 1056.0347 flag_done_checkpoint_kickstart[8] = 0 corona_colour[8] = 2 // Checkpoint 10 2nd burnt out car with plank bridge checkpointX_kickstart[9] = -1371.3506 checkpointY_kickstart[9] = 1623.2739 checkpointZ_kickstart[9] = 1054.6587 flag_done_checkpoint_kickstart[9] = 0 corona_colour[9] = 1 // Checkpoint 11 3rd burnt out car with plank bridge checkpointX_kickstart[10] = -1369.5204 checkpointY_kickstart[10] = 1634.0248 checkpointZ_kickstart[10] = 1055.7720 flag_done_checkpoint_kickstart[10] = 0 corona_colour[10] = 2 // Checkpoint 12 1st egg yolk from jump checkpointX_kickstart[11] = -1384.6157 checkpointY_kickstart[11] = 1603.5475 checkpointZ_kickstart[11] = 1053.5953 flag_done_checkpoint_kickstart[11] = 0 corona_colour[11] = 1 // Checkpoint 13 2nd hoop jump middle of stadium checkpointX_kickstart[12] = -1398.9961 checkpointY_kickstart[12] = 1603.2748 checkpointZ_kickstart[12] = 1055.1562 flag_done_checkpoint_kickstart[12] = 0 corona_colour[12] = 0 // Checkpoint 14 loop da loop right hand side checkpointX_kickstart[13] = -1403.9114 checkpointY_kickstart[13] = 1645.1582 checkpointZ_kickstart[13] = 1071.4617 flag_done_checkpoint_kickstart[13] = 0 corona_colour[13] = 1 // Checkpoint 15 small metal square on right hand side checkpointX_kickstart[14] = -1443.3920 checkpointY_kickstart[14] = 1648.5477 checkpointZ_kickstart[14] = 1054.2872 flag_done_checkpoint_kickstart[14] = 0 corona_colour[14] = 1 // Checkpoint 16 small metal v shape right hand side checkpointX_kickstart[15] = -1457.0033 checkpointY_kickstart[15] = 1648.7136 checkpointZ_kickstart[15] = 1054.9373 flag_done_checkpoint_kickstart[15] = 0 corona_colour[15] = 0 // Checkpoint 17 small 1st square box at back of stadium checkpointX_kickstart[16] = -1486.9312 checkpointY_kickstart[16] = 1630.2261 checkpointZ_kickstart[16] = 1056.6263 flag_done_checkpoint_kickstart[16] = 0 corona_colour[16] = 0 // Checkpoint18 steall box 2nd story at back of stadium checkpointX_kickstart[17] = -1482.8134 checkpointY_kickstart[17] = 1642.2053 checkpointZ_kickstart[17] = 1060.7042 flag_done_checkpoint_kickstart[17] = 0 corona_colour[17] = 2 // Checkpoint19 loop da loop at the back of the course checkpointX_kickstart[18] = -1484.8126 checkpointY_kickstart[18] = 1597.1162 checkpointZ_kickstart[18] = 1061.3817 flag_done_checkpoint_kickstart[18] = 0 corona_colour[18] = 1 // Checkpoint20 1st log section middle of stadium checkpointX_kickstart[19] = -1431.3992 checkpointY_kickstart[19] = 1598.0626 checkpointZ_kickstart[19] = 1054.7516 flag_done_checkpoint_kickstart[19] = 0 corona_colour[19] = 0 // Checkpoint21 2nd log section middle of stadium checkpointX_kickstart[20] = -1420.6818 checkpointY_kickstart[20] = 1598.2748 checkpointZ_kickstart[20] = 1054.9562 flag_done_checkpoint_kickstart[20] = 0 corona_colour[20] = 0 // Checkpoint22 1st v shape boards in middle of course checkpointX_kickstart[21] = -1408.1071 checkpointY_kickstart[21] = 1585.3644 checkpointZ_kickstart[21] = 1055.6914 flag_done_checkpoint_kickstart[21] = 0 corona_colour[21] = 0 // Checkpoint23 2st v shape boards in middle of course checkpointX_kickstart[22] = -1408.2167 checkpointY_kickstart[22] = 1593.3018 checkpointZ_kickstart[22] = 1055.6173 flag_done_checkpoint_kickstart[22] = 0 corona_colour[22] = 0 // Checkpoint24 metal barrel section smallest metal ramp checkpointX_kickstart[23] = -1462.2439 checkpointY_kickstart[23] = 1622.4238 checkpointZ_kickstart[23] = 1054.3130 flag_done_checkpoint_kickstart[23] = 0 corona_colour[23] = 1 // Checkpoint25 1st ramp up metal section checkpointX_kickstart[24] = -1461.7395 checkpointY_kickstart[24] = 1635.7531 checkpointZ_kickstart[24] = 1054.0070 flag_done_checkpoint_kickstart[24] = 0 corona_colour[24] = 1 // Checkpoint26 2nd box ramp checkpointX_kickstart[25] = -1453.8929 checkpointY_kickstart[25] = 1636.0277 checkpointZ_kickstart[25] = 1056.1796 flag_done_checkpoint_kickstart[25] = 0 corona_colour[25] = 1 // Checkpoint27 middle metal pipe section checkpointX_kickstart[26] = -1454.0554 checkpointY_kickstart[26] = 1628.6007 checkpointZ_kickstart[26] = 1054.2977 flag_done_checkpoint_kickstart[26] = 0 corona_colour[26] = 2 // Checkpoint28 2nd last ramp floating in air checkpointX_kickstart[27] = -1454.0670 checkpointY_kickstart[27] = 1617.6372 checkpointZ_kickstart[27] = 1055.9988 flag_done_checkpoint_kickstart[27] = 0 corona_colour[27] = 2 // Checkpoint29 last section of metal area checkpointX_kickstart[28] = -1450.0260 checkpointY_kickstart[28] = 1620.4666 checkpointZ_kickstart[28] = 1056.4214 flag_done_checkpoint_kickstart[28] = 0 corona_colour[28] = 2 // Checkpoint30 middle top of figure of eight checkpointX_kickstart[29] = -1407.7319 checkpointY_kickstart[29] = 1617.4155 checkpointZ_kickstart[29] = 1054.7971 flag_done_checkpoint_kickstart[29] = 0 corona_colour[29] = 1 // Checkpoint31 1st ring on figure of eight checkpointX_kickstart[30] = -1414.1587 checkpointY_kickstart[30] = 1607.1595 checkpointZ_kickstart[30] = 1054.8434 flag_done_checkpoint_kickstart[30] = 0 corona_colour[30] = 1 // Checkpoint32 2nd ring figure of eight checkpointX_kickstart[31] = -1388.3088 checkpointY_kickstart[31] = 1620.9905 checkpointZ_kickstart[31] = 1054.9513 flag_done_checkpoint_kickstart[31] = 0 corona_colour[31] = 2 // Checkpoint33 strange square thing in the middle of the building checkpointX_kickstart[32] = -1431.090 checkpointY_kickstart[32] = 1580.832 checkpointZ_kickstart[32] = 1055.759 flag_done_checkpoint_kickstart[32] = 0 corona_colour[32] = 2 // Timer stuff race_timer_seconds_kickstart = 0 race_timer_seconds2_kickstart = 0 race_timer_mins_kickstart = 0 flag_bike_blip_on_kickstart = 0 player_taken_too_long_kickstart = 0 // Number of checkpoint stuff number_of_checkpoints_kickstart = TOTAL_CHECKPOINTS_KICKSTART // dodgy map stuff player_x_kickstart = 0.0 player_y_kickstart = 0.0 player_z_kickstart = 0.0 bike_x_kickstart = 0.0 bike_y_kickstart = 0.0 bike_z_kickstart = 0.0 // Player in end area player_in_end_area_kickstart = 0 // New scoreing system player_been_rewarded_kickstart = 0 // New audio stuff audio_flag_cheer_kick = 0 audio_flag_ohh_kick = 0 watched_cutscene_ks = 0 WAIT 0 LOAD_MISSION_TEXT KICKSTT // *************************************** MISSION START *********************************** SET_PLAYER_CONTROL player1 OFF SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE //SET_CHAR_HAS_USED_ENTRY_EXIT scplayer 1100.0 1599.0 10.0 SET_RESPAWN_POINT_FOR_DURATION_OF_MISSION 1579.5698 1769.0111 9.8280 SET_PLAYER_IS_IN_STADIUM TRUE SET_AREA_VISIBLE 14 // 13 //SET_EXTRA_COLOURS 9 FALSE REQUEST_COLLISION -1473.187 1565.173 SET_CHAR_COORDINATES scplayer -1473.187 1565.173 1051.589 SET_CHAR_AREA_VISIBLE scplayer 14 DISPLAY_RADAR TRUE SET_CHAR_HEADING scplayer 266.488 LOAD_SCENE -1473.187 1565.173 1051.789 SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_EXTRA_COLOURS 2 FALSE // Waiting for the ped models to load REQUEST_MODEL SANCHEZ WHILE NOT HAS_MODEL_LOADED SANCHEZ WAIT 0 ENDWHILE CREATE_CAR SANCHEZ -1472.380 1563.576 1051.417 bike_kickstart SET_VEHICLE_AREA_VISIBLE bike_kickstart 14 // 13 SET_CAR_HEADING bike_kickstart 266.488 SET_CAR_PROOFS bike_kickstart TRUE TRUE TRUE TRUE TRUE ADD_BLIP_FOR_CAR bike_kickstart bike_blip_kickstart SET_BLIP_AS_FRIENDLY bike_blip_kickstart TRUE SET_CAR_STRONG bike_kickstart TRUE ADD_SPHERE -1464.32 1556.69 1051.75 3.0 sphere_kickstart // creates the checkpoints index_kickstart = 0 WHILE index_kickstart < TOTAL_CHECKPOINTS_KICKSTART IF corona_colour[index_kickstart] = 0 // GREEN red_value_kickstart = 0 green_value_kickstart = 255 blue_value_kickstart = 0 ENDIF IF corona_colour[index_kickstart] = 1 // AMBER red_value_kickstart = 255 green_value_kickstart = 150 blue_value_kickstart = 0 ENDIF IF corona_colour[index_kickstart] = 2 // RED red_value_kickstart = 255 green_value_kickstart = 0 blue_value_kickstart = 0 ENDIF DRAW_CORONA checkpointX_kickstart[index_kickstart] checkpointX_kickstart[index_kickstart] checkpointX_kickstart[index_kickstart] corona_size_kickstart CORONATYPE_SHINYSTAR FLARETYPE_NONE red_value_kickstart green_value_kickstart blue_value_kickstart ADD_BLIP_FOR_COORD_OLD checkpointX_kickstart[index_kickstart] checkpointX_kickstart[index_kickstart] checkpointX_kickstart[index_kickstart] 0 BLIP_ONLY checkpoint_blip_kickstart[index_kickstart] CHANGE_BLIP_SCALE checkpoint_blip_kickstart[index_kickstart] 1 index_kickstart++ ENDWHILE WAIT 1000 SWITCH_WIDESCREEN ON SET_POLICE_IGNORE_PLAYER player1 ON SET_EVERYONE_IGNORE_PLAYER player1 ON SET_PLAYER_CONTROL player1 OFF CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CROWD_CHEERS_BIG WHILE NOT HAS_MISSION_AUDIO_LOADED 1 WAIT 0 ENDWHILE //fades the screen in SET_FADING_COLOUR 0 0 0 DO_FADE 1500 FADE_IN SET_FIXED_CAMERA_POSITION -1461.0845 1558.4484 1054.4601 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1460.1351 1558.7611 1054.4293 JUMP_CUT CAMERA_RESET_NEW_SCRIPTABLES CAMERA_PERSIST_TRACK TRUE CAMERA_PERSIST_POS TRUE CAMERA_SET_VECTOR_MOVE -1461.0845 1558.4484 1054.4601 -1474.2550 1561.5668 1052.5531 6000 TRUE // two sets of coord for cam start point and end point + time for pan CAMERA_SET_VECTOR_TRACK -1460.1351 1558.7611 1054.4293 -1473.7408 1562.4242 1052.5328 6000 TRUE // two sets of coords for cam aim at start and end point + time for pan PLAY_MISSION_AUDIO 1 WHILE GET_FADING_STATUS WAIT 0 IF IS_CAR_DEAD bike_kickstart SET_PLAYER_CONTROL player1 OFF PRINT_NOW ( KICK1_7 ) 5000 1 //"You have wrecked the bike!" // PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed!" SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 LOAD_SCENE 1105.210 1604.649 12.510 IF is_player_playing player1 SET_CHAR_AREA_VISIBLE scplayer 0 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1105.210 1604.649 12.0546 ELSE SET_CHAR_COORDINATES scplayer 1105.210 1604.649 12.0546 ENDIF WAIT 1500 GOTO mission_kickstart_failed ELSE SET_CAR_HEALTH bike_kickstart 1000 ENDIF GOSUB checkpoints_kickstart ENDWHILE PRINT_NOW ( KICK_10 ) 10000 1 // Use the Sanchez to collect Coronas. The ~g~Green Corona~s~ is worth 1 point. The ~y~Amber Corona~s~ is worth 2 points. The ~r~Red Corona~s~ is worth 3 points. TIMERA = 0 SKIP_CUTSCENE_START WHILE TIMERA < 7000 WAIT 0 IF IS_CAR_DEAD bike_kickstart SET_PLAYER_CONTROL player1 OFF PRINT_NOW ( KICK1_7 ) 5000 1 //"You have wrecked the bike!" // PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed!" SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE 1105.210 1604.649 12.510 SET_AREA_VISIBLE 0 IF is_player_playing player1 SET_CHAR_AREA_VISIBLE scplayer 0 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1105.210 1604.649 12.0546 ELSE SET_CHAR_COORDINATES scplayer 1105.210 1604.649 12.0546 ENDIF WAIT 1500 GOTO mission_kickstart_failed ELSE SET_CAR_HEALTH bike_kickstart 1000 ENDIF GOSUB checkpoints_kickstart ENDWHILE CLEAR_THIS_PRINT ( KICK_10 ) CAMERA_RESET_NEW_SCRIPTABLES SET_FIXED_CAMERA_POSITION -1474.9097 1564.6246 1052.9518 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1473.9476 1564.3668 1053.0413 JUMP_CUT PRINT_NOW ( KICK_11 ) 10000 1 // Score 26 points to complete the mission. To leave the stadium stand in the ~r~red highlighted~s~ area on foot. IS_THIS_HELP_MESSAGE_BEING_DISPLAYED KICK_11 TASK_LOOK_AT_COORD scplayer -1464.32 1556.69 1051.75 6000 TIMERA = 0 WHILE TIMERA < 7000 WAIT 0 IF IS_CAR_DEAD bike_kickstart SET_PLAYER_CONTROL player1 OFF PRINT_NOW ( KICK1_7 ) 5000 1 //"You have wrecked the bike!" // PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed!" SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE 1105.210 1604.649 12.510 SET_AREA_VISIBLE 0 IF is_player_playing player1 SET_CHAR_AREA_VISIBLE scplayer 0 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1105.210 1604.649 12.0546 ELSE SET_CHAR_COORDINATES scplayer 1105.210 1604.649 12.0546 ENDIF WAIT 1500 GOTO mission_kickstart_failed ELSE SET_CAR_HEALTH bike_kickstart 1000 ENDIF GOSUB checkpoints_kickstart ENDWHILE CLEAR_THIS_PRINT ( KICK_11 ) // Score 26 points to complete the mission. To leave the stadium stand in the ~r~red highlighted~s~ area on foot. SKIP_CUTSCENE_END IF IS_CAR_DEAD bike_kickstart SET_PLAYER_CONTROL player1 OFF PRINT_NOW ( KICK1_7 ) 5000 1 //"You have wrecked the bike!" // PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed!" SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE 1105.210 1604.649 12.510 SET_AREA_VISIBLE 0 IF is_player_playing player1 SET_CHAR_AREA_VISIBLE scplayer 0 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1105.210 1604.649 12.0546 ELSE SET_CHAR_COORDINATES scplayer 1105.210 1604.649 12.0546 ENDIF WAIT 1500 GOTO mission_kickstart_failed ELSE SET_CAR_HEALTH bike_kickstart 1000 ENDIF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_RADIO_CHANNEL RS_OFF SET_POLICE_IGNORE_PLAYER player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 OFF SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SWITCH_WIDESCREEN OFF SET_PLAYER_CONTROL player1 ON CAMERA_RESET_NEW_SCRIPTABLES DISPLAY_RADAR FALSE PRINT_NOW ( KICK1_8 ) 5000 1 //"Get ont the bike!" WHILE NOT IS_CHAR_IN_CAR scplayer bike_kickstart WAIT 0 IF IS_CAR_DEAD bike_kickstart SET_PLAYER_CONTROL player1 OFF PRINT_NOW ( KICK1_7 ) 5000 1 //"You have wrecked the bike!" // PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed!" SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 LOAD_SCENE 1105.210 1604.649 12.510 IF is_player_playing player1 SET_CHAR_AREA_VISIBLE scplayer 0 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1105.210 1604.649 12.0546 ELSE SET_CHAR_COORDINATES scplayer 1105.210 1604.649 12.0546 ENDIF WAIT 1500 GOTO mission_kickstart_failed ELSE SET_CAR_HEALTH bike_kickstart 1000 ENDIF IF race_timer_kickstart >= 480000//3600000 OR player_taken_too_long_kickstart = 1 SET_PLAYER_CONTROL player1 OFF // PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed!" PRINT_NOW ( KICK_13 ) 5000 1 //"You have taken too long! SET_FADING_COLOUR 0 0 0 WAIT 1500 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_AREA_VISIBLE 0 LOAD_SCENE 1105.210 1604.649 12.510 IF is_player_playing player1 SET_CHAR_AREA_VISIBLE scplayer 0 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1105.210 1604.649 12.0546 ELSE SET_CHAR_COORDINATES scplayer 1105.210 1604.649 12.0546 ENDIF WAIT 1500 GOTO mission_kickstart_failed ENDIF IF LOCATE_CHAR_ON_FOOT_3D scplayer -1464.32 1556.69 1051.75 3.0 3.0 3.0 FALSE OR player_in_end_area_kickstart = 1 SET_PLAYER_CONTROL player1 OFF // PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed!" PRINT_NOW ( KICK_12 ) 5000 1 //"You bottled it!" REMOVE_SPHERE sphere_kickstart SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE 1105.210 1604.649 12.510 SET_AREA_VISIBLE 0 IF is_player_playing player1 SET_CHAR_AREA_VISIBLE scplayer 0 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1105.210 1604.649 12.0546 ELSE SET_CHAR_COORDINATES scplayer 1105.210 1604.649 12.0546 ENDIF WAIT 1500 GOTO mission_kickstart_failed ENDIF GOSUB checkpoints_kickstart ENDWHILE SWITCH_WIDESCREEN ON SET_PLAYER_CONTROL player1 OFF SET_CAMERA_BEHIND_PLAYER CLEAR_THIS_PRINT KICK1_8 // 4 3 2 1! flag_cutscene_kickstart = 0 TIMERA = 0 TIMERB= 0 WHILE NOT flag_cutscene_kickstart = 10 WAIT 0 IF flag_cutscene_kickstart = 0 IF TIMERB > 900 PRINT_BIG KICK_17 1000 4 ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_RACE_START_3 LOAD_MISSION_AUDIO 4 SOUND_BANK_AIR_HORN WHILE NOT HAS_MISSION_AUDIO_LOADED 4 WAIT 0 ENDWHILE // REPORT_MISSION_AUDIO_EVENT_AT_CHAR char_mech_garag1[index_garag1] SOUND_AIR_HORN ++ flag_cutscene_kickstart TIMERB = 0 ENDIF ENDIF IF flag_cutscene_kickstart = 1 IF TIMERB > 900 PRINT_BIG KICK_18 1000 4 ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_RACE_START_2 ++ flag_cutscene_kickstart TIMERB = 0 ENDIF ENDIF IF flag_cutscene_kickstart = 2 IF TIMERB > 900 PRINT_BIG KICK_19 1000 4 ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_RACE_START_1 ++ flag_cutscene_kickstart TIMERB = 0 ENDIF ENDIF IF flag_cutscene_kickstart = 3 IF TIMERB > 900 PRINT_BIG KICK_20 800 4 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1462.0 1558.69 1055.02 SOUND_AIR_HORN //ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_CHECKPOINT_RED flag_cutscene_kickstart = 10 TIMERB = 0 ENDIF ENDIF IF TIMERA > 4000 flag_cutscene_kickstart = 10 ENDIF GOSUB checkpoints_kickstart ENDWHILE SWITCH_WIDESCREEN OFF REMOVE_BLIP bike_blip_kickstart SET_PLAYER_CONTROL player1 ON PRINT_NOW ( KICK_26 ) 5000 1 //"Collect as many points as possible" DISPLAY_ONSCREEN_COUNTER_WITH_STRING score_kickstart COUNTER_DISPLAY_NUMBER ( KICK1_9 ) DISPLAY_ONSCREEN_TIMER_WITH_STRING race_timer_kickstart TIMER_DOWN ( KICK1_T ) TIMERA = 0 TIMERB = 0 // Player started the competition WHILE NOT player_checkpoint_kickstart = TOTAL_CHECKPOINTS_KICKSTART WAIT 0 GOSUB checkpoints_kickstart IF flag_play_audio_kickstart= 1 IF HAS_MISSION_AUDIO_LOADED 1 flag_play_audio_kickstart= 2 ENDIF ENDIF IF flag_play_audio_kickstart= 2 PLAY_MISSION_AUDIO 1 flag_play_audio_kickstart= 3 ENDIF IF flag_play_audio_kickstart= 3 IF HAS_MISSION_AUDIO_FINISHED 1 CLEAR_MISSION_AUDIO 1 flag_play_audio_kickstart= 0 ENDIF ENDIF IF race_timer_kickstart <= 0 OR player_taken_too_long_kickstart = 1 SET_PLAYER_CONTROL player1 OFF CLEAR_ONSCREEN_TIMER race_timer_kickstart CLEAR_ONSCREEN_COUNTER score_kickstart IF score_kickstart > current_highest_score_kickstart current_highest_score_kickstart = score_kickstart PRINT_WITH_NUMBER_BIG ( KICK_22 ) current_highest_score_kickstart 5000 1 // new highest score PRINT_NOW KICK_23 5000 1 REGISTER_INT_STAT KICKSTART_BEST_SCORE current_highest_score_kickstart PLAY_MISSION_PASSED_TUNE 2 IF flag_kickstart_passed_1stime = 0 SWITCH_CAR_GENERATOR car_gen_duneride_kickstart 101 ENDIF WAIT 5000 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE 1105.210 1604.649 12.510 SET_AREA_VISIBLE 0 IF is_player_playing player1 SET_CHAR_AREA_VISIBLE scplayer 0 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1105.210 1604.649 12.0546 ELSE SET_CHAR_COORDINATES scplayer 1105.210 1604.649 12.0546 ENDIF WAIT 1500 GOTO mission_kickstart_passed ELSE PRINT_WITH_NUMBER_BIG ( KICK1_5 ) score_kickstart 5000 1 PRINT_WITH_NUMBER_BIG KICK_21 current_highest_score_kickstart 5000 6 PRINT_NOW KICK_24 5000 1 // no new records broken GET_INT_STAT KICKSTART_BEST_SCORE stat_kickstart IF stat_kickstart < score_kickstart REGISTER_INT_STAT KICKSTART_BEST_SCORE score_kickstart ENDIF PLAY_MISSION_PASSED_TUNE 1 WAIT 5000 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE 1105.210 1604.649 12.510 SET_AREA_VISIBLE 0 IF is_player_playing player1 SET_CHAR_AREA_VISIBLE scplayer 0 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1105.210 1604.649 12.0546 ELSE SET_CHAR_COORDINATES scplayer 1105.210 1604.649 12.0546 ENDIF WAIT 1500 GOTO mission_kickstart_failed ENDIF ENDIF IF LOCATE_CHAR_ON_FOOT_3D scplayer -1464.32 1556.69 1051.75 3.0 3.0 3.0 FALSE OR player_in_end_area_kickstart = 1 SET_PLAYER_CONTROL player1 OFF // PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed!" PRINT_NOW ( KICK_12 ) 5000 1 //"You bottled it!" REMOVE_SPHERE sphere_kickstart SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE 1105.210 1604.649 12.510 SET_AREA_VISIBLE 0 IF is_player_playing player1 SET_CHAR_AREA_VISIBLE scplayer 0 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1105.210 1604.649 12.0546 ELSE SET_CHAR_COORDINATES scplayer 1105.210 1604.649 12.0546 ENDIF WAIT 1500 GOTO mission_kickstart_failed ENDIF GET_CHAR_COORDINATES scplayer player_x_kickstart player_y_kickstart player_z_kickstart // player has fallen through the world IF player_z_kickstart < 1050.0 SET_CHAR_COORDINATES scplayer -1473.187 1565.173 1051.789 SET_CHAR_HEADING scplayer 266.488 ENDIF IF IS_CAR_DEAD bike_kickstart SET_PLAYER_CONTROL player1 OFF PRINT_NOW ( KICK1_7 ) 5000 1 //"You have wrecked the bike!" // PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed!" SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE 1105.210 1604.649 12.510 SET_AREA_VISIBLE 0 IF is_player_playing player1 SET_CHAR_AREA_VISIBLE scplayer 0 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1105.210 1604.649 12.0546 ELSE SET_CHAR_COORDINATES scplayer 1105.210 1604.649 12.0546 ENDIF WAIT 1500 GOTO mission_kickstart_failed ELSE SET_CAR_HEALTH bike_kickstart 1000 GET_CAR_COORDINATES bike_kickstart bike_x_kickstart bike_y_kickstart bike_z_kickstart IF bike_z_kickstart < 1050.0 CREATE_CAR SANCHEZ -1472.380 1563.576 1051.417 bike_kickstart SET_CAR_HEADING bike_kickstart 266.488 ENDIF IF NOT IS_CHAR_IN_MODEL scplayer SANCHEZ IF flag_player_bailed_ks = 0 IF flag_bike_blip_on_kickstart = 0 ADD_BLIP_FOR_CAR bike_kickstart bike_blip_kickstart SET_BLIP_AS_FRIENDLY bike_blip_kickstart TRUE IF audio_flag_ohh_kick = 2 // PLAY_MISSION_AUDIO 2 audio_flag_ohh_kick = 3 ENDIF flag_bike_blip_on_kickstart = 1 ENDIF GET_GAME_TIMER time_bailed_ks time_left_to_find_bike_ks = 30000 IF race_timer_kickstart >= 30000 time_left_to_find_bike_ks = 30000 ELSE time_left_to_find_bike_ks = race_timer_kickstart ENDIF flag_player_bailed_ks = 1 // ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_CROWD_AWWS CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CROWD_AWWS flag_play_audio_kickstart= 1 ELSE IF time_left_to_find_bike_ks > 0 GET_GAME_TIMER time_now_ks time_off_bike_ks = time_now_ks - time_bailed_ks time_bailed_ks = time_now_ks time_left_to_find_bike_ks = time_left_to_find_bike_ks - time_off_bike_ks time_left_to_find_bike_secs_ks = time_left_to_find_bike_ks / 1000 ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE IF NOT time_left_to_find_bike_secs_ks = 1 PRINT_WITH_NUMBER_NOW (KICK_27) time_left_to_find_bike_secs_ks 1000 1 //"time left to get onto bike!" ELSE PRINT_WITH_NUMBER_NOW (KICK_28) time_left_to_find_bike_secs_ks 1000 1 //"time left to get onto bike!" ENDIF IF IS_CHAR_IN_MODEL scplayer SANCHEZ CLEAR_THIS_PRINT (GETBIKE) CLEAR_THIS_PRINT (GETBIK2) time_left_to_find_bike_ks = 1 ENDIF ELSE IF time_left_to_find_bike_ks <= 0 PRINT_NOW ( KICK1_2 ) 5000 1 //"You did not get back to the bike quickly enough!" SET_PLAYER_CONTROL player1 OFF // ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_CROWD_AWWS CLEAR_MISSION_AUDIO 1 LOAD_MISSION_AUDIO 1 SOUND_CROWD_AWWS flag_play_audio_kickstart= 1 WAIT 1500 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE 1105.210 1604.649 12.510 SET_AREA_VISIBLE 0 IF is_player_playing player1 SET_CHAR_AREA_VISIBLE scplayer 0 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1105.210 1604.649 12.0546 ELSE SET_CHAR_COORDINATES scplayer 1105.210 1604.649 12.0546 ENDIF WAIT 1500 GOTO mission_kickstart_failed ENDIF ENDIF // timer left to find bike ENDIF // player bailed ELSE CLEAR_THIS_PRINT ( KICK_27 ) IF flag_bike_blip_on_kickstart = 1 REMOVE_BLIP bike_blip_kickstart flag_bike_blip_on_kickstart = 0 ENDIF flag_player_bailed_ks = 0 ENDIF // is player in car ENDIF ENDWHILE CLEAR_ONSCREEN_TIMER race_timer_kickstart CLEAR_ONSCREEN_COUNTER score_kickstart IF score_kickstart > current_highest_score_kickstart // IF score_kickstart > current_highest_score_kickstart current_highest_score_kickstart = score_kickstart PRINT_WITH_NUMBER_BIG ( KICK_22 ) current_highest_score_kickstart 5000 1 // new highest score PRINT_NOW KICK_23 5000 1 // REGISTER_HIGHEST_SCORE KICKSTART_BEST_SCORE current_highest_score_kickstart REGISTER_INT_STAT KICKSTART_BEST_SCORE current_highest_score_kickstart IF flag_kickstart_passed_1stime = 0 SWITCH_CAR_GENERATOR car_gen_duneride_kickstart 101 ENDIF PLAY_MISSION_PASSED_TUNE 2 WAIT 5000 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE 1105.210 1604.649 12.510 SET_AREA_VISIBLE 0 IF is_player_playing player1 SET_CHAR_AREA_VISIBLE scplayer 0 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1105.210 1604.649 12.0546 ELSE SET_CHAR_COORDINATES scplayer 1105.210 1604.649 12.0546 ENDIF WAIT 1500 GOTO mission_kickstart_passed ELSE //REGISTER_INT_STAT KICKSTART_BEST_SCORE score_kickstart PLAY_MISSION_PASSED_TUNE 1 //REGISTER_INT_STAT KICKSTART_BEST_SCORE score_kickstart GET_INT_STAT KICKSTART_BEST_SCORE stat_kickstart IF stat_kickstart < score_kickstart REGISTER_INT_STAT KICKSTART_BEST_SCORE score_kickstart ENDIF PRINT_WITH_NUMBER_BIG ( KICK1_5 ) score_kickstart 5000 1 // PRINT_WITH_NUMBER_NOW KICK_21 current_highest_score_kickstart 5000 1 PRINT_WITH_NUMBER_BIG KICK_21 current_highest_score_kickstart 5000 6 WAIT 5000 SET_FADING_COLOUR 0 0 0 DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE LOAD_SCENE 1105.210 1604.649 12.510 SET_AREA_VISIBLE 0 IF is_player_playing player1 SET_CHAR_AREA_VISIBLE scplayer 0 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1105.210 1604.649 12.0546 ELSE SET_CHAR_COORDINATES scplayer 1105.210 1604.649 12.0546 ENDIF WAIT 1500 GOTO mission_kickstart_failed ENDIF // ****************************************** Mission Failed ******************************* mission_kickstart_failed: //PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed!" PRINT_WITH_NUMBER_BIG ( KICK1_5 ) 15 score_kickstart 1 PRINT_WITH_NUMBER_NOW KICK_21 current_highest_score_kickstart 5000 1 reward_kickstart = score_kickstart * 100 ADD_SCORE player1 reward_kickstart RETURN // *************************************** Mission Passed ********************************** mission_kickstart_passed: IF flag_kickstart_passed_1stime = 0 REGISTER_ODDJOB_MISSION_PASSED PLAYER_MADE_PROGRESS 1 flag_kickstart_passed_1stime = 1 // CREATE_CAR_GENERATOR 1107.0597 1616.5936 13.0 167.7583 duneride -1 -1 TRUE 0 0 0 10000 car_gen_duneride // by the Hoover dam // SWITCH_CAR_GENERATOR car_gen_duneride 101 ENDIF //PLAY_MISSION_PASSED_TUNE 1 //SET_MUSIC_DOES_FADE FALSE CLEAR_WANTED_LEVEL player1 PRINT_WITH_NUMBER_BIG ( KICK_22 ) current_highest_score_kickstart 5000 1 // new highest score reward_kickstart = score_kickstart * 100 ADD_SCORE player1 reward_kickstart RETURN // *************************************** Mission Cleanup ********************************* mission_cleanup_kickstart: DISPLAY_RADAR TRUE CLEAR_EXTRA_COLOURS FALSE flag_player_on_mission = 0 CLEAR_PRINTS CLEAR_EXTRA_COLOURS FALSE // SET_MUSIC_DOES_FADE TRUE REMOVE_SPHERE sphere_kickstart CAMERA_RESET_NEW_SCRIPTABLES REMOVE_BLIP checkpoint_blip_kickstart[0] REMOVE_BLIP checkpoint_blip_kickstart[1] REMOVE_BLIP checkpoint_blip_kickstart[2] REMOVE_BLIP checkpoint_blip_kickstart[3] REMOVE_BLIP checkpoint_blip_kickstart[4] REMOVE_BLIP checkpoint_blip_kickstart[5] REMOVE_BLIP checkpoint_blip_kickstart[6] REMOVE_BLIP checkpoint_blip_kickstart[7] REMOVE_BLIP checkpoint_blip_kickstart[8] REMOVE_BLIP checkpoint_blip_kickstart[9] REMOVE_BLIP checkpoint_blip_kickstart[10] REMOVE_BLIP checkpoint_blip_kickstart[11] REMOVE_BLIP checkpoint_blip_kickstart[12] REMOVE_BLIP checkpoint_blip_kickstart[13] REMOVE_BLIP checkpoint_blip_kickstart[14] REMOVE_BLIP checkpoint_blip_kickstart[15] REMOVE_BLIP checkpoint_blip_kickstart[16] REMOVE_BLIP checkpoint_blip_kickstart[17] REMOVE_BLIP checkpoint_blip_kickstart[18] REMOVE_BLIP checkpoint_blip_kickstart[19] REMOVE_BLIP checkpoint_blip_kickstart[20] REMOVE_BLIP checkpoint_blip_kickstart[21] REMOVE_BLIP checkpoint_blip_kickstart[22] REMOVE_BLIP checkpoint_blip_kickstart[23] REMOVE_BLIP checkpoint_blip_kickstart[24] REMOVE_BLIP checkpoint_blip_kickstart[25] REMOVE_BLIP checkpoint_blip_kickstart[26] REMOVE_BLIP checkpoint_blip_kickstart[27] REMOVE_BLIP checkpoint_blip_kickstart[28] REMOVE_BLIP checkpoint_blip_kickstart[29] REMOVE_BLIP checkpoint_blip_kickstart[30] REMOVE_BLIP checkpoint_blip_kickstart[31] REMOVE_BLIP checkpoint_blip_kickstart[32] REMOVE_BLIP bike_blip_kickstart MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ CLEAR_ONSCREEN_TIMER race_timer_kickstart CLEAR_ONSCREEN_COUNTER score_kickstart // LOAD_SCENE 1105.210 1604.649 12.510 IF NOT HAS_DEATHARREST_BEEN_EXECUTED OR flag_kickstart_mission1_passed = 1 /* IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer 1105.210 1604.649 12.0546 ELSE SET_CHAR_COORDINATES scplayer 1105.210 1604.649 12.0546 ENDIF */ SET_CHAR_HEADING scplayer 1.0 RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER SET_FADING_COLOUR 0 0 0 DO_FADE 3000 FADE_IN SET_PLAYER_CONTROL player1 ON // SET_CHAR_HAS_USED_ENTRY_EXIT scplayer -1463.87 1556.0 1052.56 ENDIF // SET_AREA_VISIBLE 0 IF is_player_playing player1 SET_CHAR_AREA_VISIBLE scplayer 0 ENDIF DISPLAY_RADAR TRUE MARK_CAR_AS_NO_LONGER_NEEDED bike_kickstart SET_PLAYER_IS_IN_STADIUM FALSE GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED RETURN // draws the checkpoints checkpoints_kickstart: counter_array_kickstart = 0 WHILE counter_array_kickstart < TOTAL_CHECKPOINTS_KICKSTART IF flag_done_checkpoint_kickstart[counter_array_kickstart] = 0 IF corona_colour[counter_array_kickstart] = 0 // GREEN red_value_kickstart = 0 green_value_kickstart = 255 blue_value_kickstart = 0 ENDIF IF corona_colour[counter_array_kickstart] = 1 // AMBER red_value_kickstart = 255 green_value_kickstart = 150 blue_value_kickstart = 0 ENDIF IF corona_colour[counter_array_kickstart] = 2 // RED red_value_kickstart = 255 green_value_kickstart = 0 blue_value_kickstart = 0 ENDIF DRAW_CORONA checkpointX_kickstart[counter_array_kickstart] checkpointY_kickstart[counter_array_kickstart] checkpointZ_kickstart[counter_array_kickstart] corona_size_kickstart CORONATYPE_SHINYSTAR FLARETYPE_NONE red_value_kickstart green_value_kickstart blue_value_kickstart IF LOCATE_CHAR_ANY_MEANS_3D scplayer checkpointX_kickstart[counter_array_kickstart] checkpointY_kickstart[counter_array_kickstart] checkpointZ_kickstart[counter_array_kickstart] 1.5 1.5 1.5 FALSE IF IS_CHAR_IN_MODEL scplayer SANCHEZ IF corona_colour[counter_array_kickstart] = 0 // GREEN score_kickstart += 1 PRINT_NOW ( KICK_14 ) 1000 1 //"Well done now on to the next checkpoint!" // ADD_ONE_OFF_SOUND checkpointX_kickstart[counter_array_kickstart] checkpointY_kickstart[counter_array_kickstart] checkpointZ_kickstart[counter_array_kickstart] SOUND_CHECKPOINT_GREEN CLEAR_MISSION_AUDIO 1 //LOAD_MISSION_AUDIO 1 SOUND_CHECKPOINT_GREEN LOAD_MISSION_AUDIO 1 SOUND_CROWD_CHEERS flag_play_audio_kickstart= 1 ENDIF IF corona_colour[counter_array_kickstart] = 1 // AMBER score_kickstart += 2 PRINT_NOW ( KICK_15 ) 1000 1 //"Well done now on to the next checkpoint!" CLEAR_MISSION_AUDIO 1 // LOAD_MISSION_AUDIO 1 SOUND_CHECKPOINT_AMBER LOAD_MISSION_AUDIO 1 SOUND_CROWD_CHEERS flag_play_audio_kickstart= 1 ENDIF IF corona_colour[counter_array_kickstart] = 2 // RED score_kickstart += 3 PRINT_NOW ( KICK_16 ) 1000 1 //"Well done now on to the next checkpoint!" CLEAR_MISSION_AUDIO 1 // LOAD_MISSION_AUDIO 1 SOUND_CHECKPOINT_RED LOAD_MISSION_AUDIO 1 SOUND_CROWD_CHEERS_BIG flag_play_audio_kickstart= 1 ENDIF REMOVE_BLIP checkpoint_blip_kickstart[counter_array_kickstart] ++ player_checkpoint_kickstart -- number_of_checkpoints_kickstart flag_done_checkpoint_kickstart[counter_array_kickstart] = 1 ENDIF ENDIF ENDIF ++ counter_array_kickstart ENDWHILE RETURN } MISSION_START // ******************************************************************************************* // ********************************** triathalon Race ************************************* // ******************************************************************************************* // Mission start stuff GOSUB mission_start_triathalon IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_triathalon_failed ENDIF GOSUB mission_cleanup_triathalon MISSION_END { // ***************************************Mission Start************************************* // TASK_SWIM_TO_COORD CharID FloatX FloatY FloatZ mission_start_triathalon: CLEAR_THIS_PRINT_BIG_NOW 1 flag_player_on_mission = 1 IF flag_triathalon_passed_1stime = 0 REGISTER_MISSION_GIVEN ENDIF SCRIPT_NAME TRIA LOAD_MISSION_TEXT RACETOR SET_MESSAGE_FORMATTING TRUE 355 370 //LOAD_MISSION_TEXT triathalon WAIT 0 USE_TEXT_COMMANDS TRUE IF NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL Player1 OFF ENDIF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // TEMP! Need to go intot he main script ///// //LVAR_INT triathalon_selection //triathalon_selection =2 ////////////////////////////////////////////// //initialise screen coordinates for the text LVAR_FLOAT x_pos[12] y_pos[12] x_scale[12] y_scale[12] stuck_x[12] stuck_y[12] stuck_z[12] LVAR_INT total_racers_mtbike stuck_timer[12] LVAR_INT flag_create_bike_and_make_opponent_get_on_it[12] LVAR_FLOAT checkpoints_triathalon_x[120] checkpoints_triathalon_y[120] checkpoints_triathalon_z[120] checkpoint_headings[120] LVAR_FLOAT coord_racers_current_x[12] coord_racers_current_y[12] coord_racers_current_z[12] //LVAR_FLOAT coord_racers_bikes_current_x[10] coord_racers_bikes_current_y[10] LVAR_FLOAT coord_racers_bikes_current_x[12] coord_racers_bikes_current_y[12] coord_racers_bikes_current_z[12] LVAR_FLOAT offset_swimming_opponents_x[12] offset_swimming_opponents_y[12] offset_swimming_opponents_z[12] LVAR_INT task_status_triathlon[12] LVAR_FLOAT point_after_finish_line_x point_after_finish_line_y point_after_finish_line_z LVAR_INT flag_make_runner_get_past_finishingline[12] LVAR_INT r a c e LVAR_INT temp_int_triathalon mins seconds temp_int2_tri LVAR_FLOAT new_heading_triathalon LVAR_INT race_timer stored_bike_triathalon stored_bike_triathalon2 LVAR_FLOAT opponents_cycle_speed_fast opponents_cycle_speed_slow opponents_cycle_speed_really_slow LVAR_FLOAT opponents_swim_speed_fast opponents_swim_speed_slow opponents_swim_speed_really_slow LVAR_FLOAT opponents_run_speed_fast opponents_run_speed_slow opponents_run_speed_really_slow LVAR_FLOAT set_opponents_cycle_speed set_opponents_swim_speed set_opponents_run_speed LVAR_INT out_of_car_flag_triathalon flag_is_player_falling last_check_point LVAR_FLOAT x2 y2 z2 temp_float heading_triathalon player_distance_from_cp heading_triathalon2 LVAR_FLOAT coord_from_swim_to_bike_x coord_from_swim_to_bike_y coord_from_swim_to_bike_z LVAR_FLOAT temp_x temp_y temp_z LVAR_INT char_person_on_bike stored_checkpoint_when_not_on_bike LVAR_INT out_of_car_timer falling_timer LVAR_INT flag_boosting_opponents_speed LVAR_INT seq_get_on_bike LVAR_INT flag_make_guys_enter_bike[12] LVAR_INT dm_racers_triathalon LVAR_INT flag_help_text_triath LVAR_INT triathalon_best_time LVAR_INT get_in_water start_swim end_swim get_on_bike start_bike end_bike get_on_foot start_run end_run LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY dm_racers_triathalon //VAR_INT flag_triathalon_passed_1stime flag_boosting_opponents_speed = 0 flag_help_text_triath = 0 // Interface Stuff out_of_car_flag_triathalon = 0 flag_is_player_falling = 0 /* x_pos[1] = 581.7789 y_pos[1] = 329.3647 x_scale[1] = 0.5427 y_scale[1] = 2.0841 */ x_pos[0] = 582.7242 y_pos[0] = 356.2812 x_scale[0] = 52.2072 y_scale[0] = 52.2072 x_pos[1] = 584.0833 y_pos[1] = 329.3647 x_scale[1] = 0.5427 y_scale[1] = 2.0841 x_pos[2] = 572.9216 y_pos[2] = 323.5937 x_scale[2] = 1.0585 y_scale[2] = 4.8106 x_pos[3] = 585.7240 y_pos[3] = 345.6341 x_scale[3] = 0.4929 y_scale[3] = 1.8511 x_pos[4] = 582.7242 y_pos[4] = 359.0323 x_scale[4] = 0.4993 y_scale[4] = 2.6370 x_pos[5] = 582.7242 y_pos[5] = 356.2812 x_scale[5] = 56.2072 y_scale[5] = 56.2072 x_pos[6] = 582.7242 y_pos[6] = 356.2812 x_scale[6] = 58.2072 y_scale[6] = 58.2072 LVAR_INT total_checkpoints_triathalon_triathalon LVAR_INT racer_model_triathalon[12] racers_car_model_triathalon[12] ////////////////////////////////////////////////// IF triathalon_selection = 1 GOTO triathalon1 ENDIF IF triathalon_selection = 2 GOTO triathalon2 ENDIF ///////////////////////////////////////////// triathalon1: get_in_water = 0 start_swim = 1 end_swim = 7 get_on_bike = 8 start_bike = 8 end_bike = 37 get_on_foot = 37 start_run = 38 end_run = 62 coord_from_swim_to_bike_x = -243.9 coord_from_swim_to_bike_y = -1719.31 coord_from_swim_to_bike_z = 2.35 checkpoints_triathalon_x[0] = 181.3364 checkpoints_triathalon_y[0] = -1885.8540 checkpoints_triathalon_z[0] = 3.5158 checkpoint_headings[0] = 194.8860 checkpoints_triathalon_x[1] = 187.69 checkpoints_triathalon_y[1] = -1915.4199 checkpoints_triathalon_z[1] = 0.0 checkpoint_headings[1] = 187.4411 checkpoints_triathalon_x[2] = 190.3243 checkpoints_triathalon_y[2] = -1965.0697 checkpoints_triathalon_z[2] = -1.09 checkpoint_headings[2] = 122.2256 checkpoints_triathalon_x[3] = 129.4773 checkpoints_triathalon_y[3] = -2001.4325 checkpoints_triathalon_z[3] = -0.5606 checkpoint_headings[3] = 44.5101 checkpoints_triathalon_x[4] = 24.1326 checkpoints_triathalon_y[4] = -1872.0916 checkpoints_triathalon_z[4] = -0.1744 checkpoint_headings[4] = 46.3064 checkpoints_triathalon_x[5] = -38.8038 checkpoints_triathalon_y[5] = -1799.3995 checkpoints_triathalon_z[5] = -0.4976 checkpoint_headings[5] = 29.2224 checkpoints_triathalon_x[6] = -132.8051 checkpoints_triathalon_y[6] = -1809.7883 checkpoints_triathalon_z[6] = -1.1548 checkpoint_headings[6] = 74.9425 checkpoints_triathalon_x[7] = -228.93 checkpoints_triathalon_y[7] = -1726.7 checkpoints_triathalon_z[7] = -0.01 checkpoint_headings[7] = 70.7750 checkpoints_triathalon_x[8] = -248.1052 checkpoints_triathalon_y[8] = -1716.7804 checkpoints_triathalon_z[8] = 1.9372 checkpoint_headings[8] = 157.2827 checkpoints_triathalon_x[9] = -262.3395 checkpoints_triathalon_y[9] = -1787.2769 checkpoints_triathalon_z[9] = 8.7655 checkpoint_headings[9] = 167.5477 checkpoints_triathalon_x[10] =-277.3514 checkpoints_triathalon_y[10] =-1855.0980 checkpoints_triathalon_z[10] =21.3005 checkpoint_headings[10] = 168.3277 checkpoints_triathalon_x[11] =-280.5171 checkpoints_triathalon_y[11] =-1887.1202 checkpoints_triathalon_z[11] =24.7860 checkpoint_headings[11] = 176.1066 checkpoints_triathalon_x[12] =-281.7469 checkpoints_triathalon_y[12] =-2087.8274 checkpoints_triathalon_z[12] =38.4430 checkpoint_headings[12] = 141.1524 checkpoints_triathalon_x[13] =-464.7682 checkpoints_triathalon_y[13] =-2179.8152 checkpoints_triathalon_z[13] =58.8239 checkpoint_headings[13] = 68.1063 checkpoints_triathalon_x[14] =-641.5079 checkpoints_triathalon_y[14] =-2196.4294 checkpoints_triathalon_z[14] =11.5282 checkpoint_headings[14] = 129.7469 checkpoints_triathalon_x[15] =-783.5144 checkpoints_triathalon_y[15] =-2459.2942 checkpoints_triathalon_z[15] =73.7524 checkpoint_headings[15] = 140.2978 checkpoints_triathalon_x[16] =-871.3914 checkpoints_triathalon_y[16] =-2407.9866 checkpoints_triathalon_z[16] =54.4911 checkpoint_headings[16] = 51.7369 checkpoints_triathalon_x[17] =-942.5181 checkpoints_triathalon_y[17] =-2368.0625 checkpoints_triathalon_z[17] =58.8718 checkpoint_headings[17] = 85.4252 checkpoints_triathalon_x[18] =-1056.2490 checkpoints_triathalon_y[18] =-2378.2434 checkpoints_triathalon_z[18] =48.5923 checkpoint_headings[18] = 94.4035 checkpoints_triathalon_x[19] =-1238.9647 checkpoints_triathalon_y[19] =-2327.3149 checkpoints_triathalon_z[19] =18.2458 checkpoint_headings[19] = 58.7494 checkpoints_triathalon_x[20] =-1403.7797 checkpoints_triathalon_y[20] =-2165.1235 checkpoints_triathalon_z[20] =17.4059 checkpoint_headings[20] = 77.2286 checkpoints_triathalon_x[21] =-1659.6847 checkpoints_triathalon_y[21] =-2190.1299 checkpoints_triathalon_z[21] =32.3572 checkpoint_headings[21] = 144.7275 checkpoints_triathalon_x[22] =-1732.8307 checkpoints_triathalon_y[22] =-2312.7092 checkpoints_triathalon_z[22] =45.2250 checkpoint_headings[22] = 109.6972 checkpoints_triathalon_x[23] =-1826.0583 checkpoints_triathalon_y[23] =-2340.2705 checkpoints_triathalon_z[23] =33.7243 checkpoint_headings[23] = 125.1071 checkpoints_triathalon_x[24] =-1917.6799 checkpoints_triathalon_y[24] =-2432.1472 checkpoints_triathalon_z[24] =29.6249 checkpoint_headings[24] = 124.1505 checkpoints_triathalon_x[25] =-1972.5150 checkpoints_triathalon_y[25] =-2478.3259 checkpoints_triathalon_z[25] =29.6259 checkpoint_headings[25] = 117.8682 checkpoints_triathalon_x[26] =-2025.6293 checkpoints_triathalon_y[26] =-2500.3909 checkpoints_triathalon_z[26] =31.0671 checkpoint_headings[26] = 73.6687 checkpoints_triathalon_x[27] =-2119.1067 checkpoints_triathalon_y[27] =-2431.2651 checkpoints_triathalon_z[27] =29.4766 checkpoint_headings[27] = 50.8121 checkpoints_triathalon_x[28] =-2188.5703 checkpoints_triathalon_y[28] =-2377.5378 checkpoints_triathalon_z[28] =29.6172 checkpoint_headings[28] = 0.0000 checkpoints_triathalon_x[29] =-2215.89 checkpoints_triathalon_y[29] =-2352.6011 checkpoints_triathalon_z[29] =29.6981 checkpoint_headings[29] = 61.4763 checkpoints_triathalon_x[30] =-2341.2097 checkpoints_triathalon_y[30] =-2256.6274 checkpoints_triathalon_z[30] =16.8759 checkpoint_headings[30] = 39.8273 checkpoints_triathalon_x[31] =-2430.1804 checkpoints_triathalon_y[31] =-2278.3782 checkpoints_triathalon_z[31] =13.7817 checkpoint_headings[31] = 45.7545 checkpoints_triathalon_x[32] =-2498.6375 checkpoints_triathalon_y[32] =-2208.5735 checkpoints_triathalon_z[32] =27.9284 checkpoint_headings[32] = 50.0042 checkpoints_triathalon_x[33] =-2619.8386 checkpoints_triathalon_y[33] =-2067.5356 checkpoints_triathalon_z[33] =38.1676 checkpoint_headings[33] = 55.7597 checkpoints_triathalon_x[33] =-2867.7844 checkpoints_triathalon_y[33] =-1824.5710 checkpoints_triathalon_z[33] =36.6821 checkpoint_headings[33] = 16.2011 checkpoints_triathalon_x[34] =-2923.2412 checkpoints_triathalon_y[34] =-1561.8893 checkpoints_triathalon_z[34] =10.0017 checkpoint_headings[34] = 7.7626 checkpoints_triathalon_x[35] =-2899.0308 checkpoints_triathalon_y[35] =-1152.5844 checkpoints_triathalon_z[35] =8.3200 checkpoint_headings[35] = 351.8611 checkpoints_triathalon_x[36] =-2858.1255 checkpoints_triathalon_y[36] =-835.5231 checkpoints_triathalon_z[36] =8.4844 checkpoint_headings[36] = 352.7365 checkpoints_triathalon_x[37] =-2814.01 checkpoints_triathalon_y[37] =-529.22 checkpoints_triathalon_z[37] =6.1876 checkpoint_headings[37] = 343.4993 checkpoints_triathalon_x[38] = -2779.95 checkpoints_triathalon_y[38] = -489.85 checkpoints_triathalon_z[38] = 6.33 checkpoint_headings[38] = 305.3686 //start of running checkpoints_triathalon_x[39] =-2708.9814 checkpoints_triathalon_y[39] =-529.5283 checkpoints_triathalon_z[39] =10.1960 checkpoint_headings[39] = 276.1151 checkpoints_triathalon_x[40] =-2670.1570 // PROBLEM checkpoints_triathalon_y[40] =-481.2506 checkpoints_triathalon_z[40] =21.3104 checkpoint_headings[40] = 345.9380 checkpoints_triathalon_x[41] =-2666.6633 checkpoints_triathalon_y[41] =-406.0401 checkpoints_triathalon_z[41] =31.3067 checkpoint_headings[41] = 324.8106 checkpoints_triathalon_x[42] =-2583.7402 checkpoints_triathalon_y[42] =-369.7502 checkpoints_triathalon_z[42] =46.2653 checkpoint_headings[42] = 275.6224 checkpoints_triathalon_x[43] =-2515.9709 checkpoints_triathalon_y[43] =-367.1822 checkpoints_triathalon_z[43] =58.2571 checkpoint_headings[43] = 272.1555 checkpoints_triathalon_x[43] =-2411.1558 // PROBLEM checkpoints_triathalon_y[43] =-371.7223 checkpoints_triathalon_z[43] =72.2992 checkpoint_headings[43] = 236.1908 checkpoints_triathalon_x[44] =-2340.5637 checkpoints_triathalon_y[44] =-416.5017 checkpoints_triathalon_z[44] =78.5669 checkpoint_headings[44] = 230.3644 checkpoints_triathalon_x[45] =-2338.8240 // PROBLEM checkpoints_triathalon_y[45] =-463.8320 checkpoints_triathalon_z[45] =79.0233 checkpoint_headings[45] = 107.3230 checkpoints_triathalon_x[46] =-2387.69 checkpoints_triathalon_y[46] =-423.99 checkpoints_triathalon_z[46] =82.4307 checkpoint_headings[46] = 46.7979 checkpoints_triathalon_x[47] =-2496.3792 checkpoints_triathalon_y[47] =-446.1119 checkpoints_triathalon_z[47] =75.3116 checkpoint_headings[47] = 79.2676 checkpoints_triathalon_x[48] =-2544.4983 checkpoints_triathalon_y[48] =-465.2180 checkpoints_triathalon_z[48] =68.9665 checkpoint_headings[48] = 119.0487 checkpoints_triathalon_x[48] =-2556.8521 checkpoints_triathalon_y[48] =-466.8922 checkpoints_triathalon_z[48] =69.2275 checkpoint_headings[48] = 116.1301 checkpoints_triathalon_x[49] = -2580.5320 checkpoints_triathalon_y[49] = -468.6765 checkpoints_triathalon_z[49] = 67.3814 checkpoint_headings[49] = 105.1953 checkpoints_triathalon_x[50] = -2612.0640 checkpoints_triathalon_y[50] = -475.2015 checkpoints_triathalon_z[50] = 67.8512 checkpoint_headings[50] = 102.5922 checkpoints_triathalon_x[51] = -2623.1050 checkpoints_triathalon_y[51] = -500.2463 checkpoints_triathalon_z[51] = 69.9170 checkpoint_headings[51] = 197.9217 checkpoints_triathalon_x[52] = -2613.7502 checkpoints_triathalon_y[52] = -497.1339 checkpoints_triathalon_z[52] = 71.9272 checkpoint_headings[52] = 288.9547 checkpoints_triathalon_x[53] = -2579.7332 checkpoints_triathalon_y[53] = -492.6317 checkpoints_triathalon_z[53] = 75.1580 checkpoint_headings[53] = 278.9598 checkpoints_triathalon_x[54] = -2542.8 checkpoints_triathalon_y[54] = -490.87 checkpoints_triathalon_z[54] = 80.340 checkpoint_headings[54] = 280.2745 checkpoints_triathalon_x[55] = -2497.6782 checkpoints_triathalon_y[55] = -480.3432 checkpoints_triathalon_z[55] = 94.0158 checkpoint_headings[55] = 282.4144 checkpoints_triathalon_x[56] = -2466.4011 checkpoints_triathalon_y[56] = -497.2612 checkpoints_triathalon_z[56] = 104.2728 checkpoint_headings[56] = 198.2153 checkpoints_triathalon_x[57] = -2452.0803 checkpoints_triathalon_y[57] = -544.5864 checkpoints_triathalon_z[57] = 120.5837 checkpoint_headings[57] = 197.1636 checkpoints_triathalon_x[58] = -2469.5137 checkpoints_triathalon_y[58] = -618.5020 checkpoints_triathalon_z[58] = 131.3831 checkpoint_headings[58] = 208.6952 checkpoints_triathalon_x[59] = -2471.06 checkpoints_triathalon_y[59] = -618.73 checkpoints_triathalon_z[59] = 131.73 checkpoint_headings[59] = 85.5749 checkpoints_triathalon_x[60] = -2498.3682 checkpoints_triathalon_y[60] = -617.9995 checkpoints_triathalon_z[60] = 131.5625 checkpoint_headings[60] = 94.5939 checkpoints_triathalon_x[61] = -2498.9812 checkpoints_triathalon_y[61] = -653.2845 checkpoints_triathalon_z[61] = 137.3194 checkpoint_headings[61] = 168.6758 checkpoints_triathalon_x[62] = -2501.3560 checkpoints_triathalon_y[62] = -695.9691 checkpoints_triathalon_z[62] = 138.3174 checkpoint_headings[62] = 180.3733 point_after_finish_line_x = -2500.0 point_after_finish_line_y = -710.0 point_after_finish_line_z = 138.49 total_checkpoints_triathalon_triathalon = 63 total_racers_mtbike = 9 // total_racers_mtbike = 2 racer_model_triathalon[0] = wmybe racer_model_triathalon[1] = bmybe racer_model_triathalon[2] = hmybe racer_model_triathalon[3] = bmybe racer_model_triathalon[4] = hmybe racer_model_triathalon[5] = wmybe racer_model_triathalon[6] = wmybe racer_model_triathalon[7] = wmybell racer_model_triathalon[8] = wmybell racer_model_triathalon[9] = wmybell racer_model_triathalon[10] = wmybell racer_model_triathalon[11] = wmybell racers_car_model_triathalon[0] = mtbike racers_car_model_triathalon[1] = mtbike racers_car_model_triathalon[2] = mtbike racers_car_model_triathalon[3] = mtbike racers_car_model_triathalon[4] = mtbike racers_car_model_triathalon[5] = mtbike racers_car_model_triathalon[6] = mtbike racers_car_model_triathalon[7] = mtbike racers_car_model_triathalon[8] = mtbike racers_car_model_triathalon[9] = mtbike racers_car_model_triathalon[10] = mtbike racers_car_model_triathalon[11] = mtbike opponents_cycle_speed_fast = 60.0 opponents_cycle_speed_slow = 40.0 opponents_cycle_speed_really_slow = 25.0 opponents_swim_speed_fast = 2.25 opponents_swim_speed_slow = 2.0 opponents_swim_speed_really_slow = 1.8 opponents_run_speed_fast = 1.30 opponents_run_speed_slow = 1.25 opponents_run_speed_really_slow = 1.16 offset_swimming_opponents_x[0]= 2.3 offset_swimming_opponents_y[0]= -6.0 offset_swimming_opponents_x[1]= 3.0 offset_swimming_opponents_y[1]= 8.0 offset_swimming_opponents_x[2]= 5.0 offset_swimming_opponents_y[2]= -4.0 offset_swimming_opponents_x[3]= 2.6 offset_swimming_opponents_y[3]= -1.0 offset_swimming_opponents_x[4]= 5.0 offset_swimming_opponents_y[4]= 9.0 offset_swimming_opponents_x[5]= 0.0 offset_swimming_opponents_y[5]= -4.0 offset_swimming_opponents_x[6]= -4.0 offset_swimming_opponents_y[6]= 0.0 offset_swimming_opponents_x[7]= 0.0 offset_swimming_opponents_y[7]= 0.9 offset_swimming_opponents_x[8]= 3.1 offset_swimming_opponents_y[8]= -4.0 offset_swimming_opponents_x[9]= 3.0 offset_swimming_opponents_y[9]= -5.0 offset_swimming_opponents_x[10]= -5.0 offset_swimming_opponents_y[10]= -3.0 offset_swimming_opponents_x[11]= -2.0 offset_swimming_opponents_y[11]= 9.0 GOTO triathalon_start ///////////////////////////////// ///////////////////////////////// triathalon2: get_in_water = 0 start_swim = 1 end_swim = 9 get_on_bike = 10 start_bike = 10 end_bike = 96 get_on_foot = 96 start_run = 97 end_run = 103 coord_from_swim_to_bike_x = 1408.9 coord_from_swim_to_bike_y = -298.31 coord_from_swim_to_bike_z = 1.14 checkpoints_triathalon_x[0] = 2135.4319 checkpoints_triathalon_y[0] = -67.9555 checkpoints_triathalon_z[0] = 5.4915 checkpoint_headings[0] = 66.3885 checkpoints_triathalon_x[1] = 2113.1892 checkpoints_triathalon_y[1] = -61.7735 checkpoints_triathalon_z[1] = -1.6317 checkpoint_headings[1] = 79.8290 checkpoints_triathalon_x[2] = 2042.6201 checkpoints_triathalon_y[2] = -68.5141 checkpoints_triathalon_z[2] = -1.9576 checkpoint_headings[2] = 105.8667 checkpoints_triathalon_x[3] = 1914.2954 checkpoints_triathalon_y[3] = -82.3669 checkpoints_triathalon_z[3] = -1.5730 checkpoint_headings[3] = 101.7482 checkpoints_triathalon_x[4] = 1844.0347 checkpoints_triathalon_y[4] = -62.2716 checkpoints_triathalon_z[4] = -1.6096 checkpoint_headings[4] = 84.9519 checkpoints_triathalon_x[5] = 1742.2363 checkpoints_triathalon_y[5] = -20.0478 checkpoints_triathalon_z[5] = -1.2870 checkpoint_headings[5] = 79.6055 checkpoints_triathalon_x[6] = 1618.1678 checkpoints_triathalon_y[6] = -15.6618 checkpoints_triathalon_z[6] = -1.6797 checkpoint_headings[6] = 156.9966 checkpoints_triathalon_x[7] = 1599.8545 checkpoints_triathalon_y[7] = -118.7409 checkpoints_triathalon_z[7] = -1.4099 checkpoint_headings[7] = 164.6305 checkpoints_triathalon_x[8] = 1533.9745 checkpoints_triathalon_y[8] = -213.8303 checkpoints_triathalon_z[8] = -1.8143 checkpoint_headings[8] = 126.3196 checkpoints_triathalon_x[9] = 1426.7809 checkpoints_triathalon_y[9] = -284.0623 checkpoints_triathalon_z[9] = 0.4372 checkpoint_headings[9] = 144.5477 //end swim checkpoints_triathalon_x[10] = 1398.9552 checkpoints_triathalon_y[10] = -320.3510 checkpoints_triathalon_z[10] = 4.0182 checkpoint_headings[10] = 153.3551 // start of bikes checkpoints_triathalon_x[11] = 1358.0930 checkpoints_triathalon_y[11] = -336.8423 checkpoints_triathalon_z[11] = 1.9089 checkpoint_headings[11] = 116.3511 checkpoints_triathalon_x[12] = 1289.7388 checkpoints_triathalon_y[12] = -376.0291 checkpoints_triathalon_z[12] = 1.8575 checkpoint_headings[12] = 115.9818 checkpoints_triathalon_x[13] = 1226.1530 checkpoints_triathalon_y[13] = -418.5785 checkpoints_triathalon_z[13] = 4.1044 checkpoint_headings[13] = 98.6074 checkpoints_triathalon_x[14] = 1042.3131 checkpoints_triathalon_y[14] = -450.2890 checkpoints_triathalon_z[14] = 50.3135 checkpoint_headings[14] = 101.4914 checkpoints_triathalon_x[15] = 955.7357 checkpoints_triathalon_y[15] = -394.1266 checkpoints_triathalon_z[15] = 62.9355 checkpoint_headings[15] = 78.1451 checkpoints_triathalon_x[16] = 862.81 checkpoints_triathalon_y[16] = -348.28 checkpoints_triathalon_z[16] = 35.11 checkpoint_headings[16] = 56.0 checkpoints_triathalon_x[17] = 735.1562 checkpoints_triathalon_y[17] = -269.1867 checkpoints_triathalon_z[17] = 8.7576 checkpoint_headings[17] = 73.8366 checkpoints_triathalon_x[18] = 469.2164 checkpoints_triathalon_y[18] = -284.2076 checkpoints_triathalon_z[18] = 9.4602 checkpoint_headings[18] = 112.1922 checkpoints_triathalon_x[19] = 251.8701 checkpoints_triathalon_y[19] = -371.7388 checkpoints_triathalon_z[19] = 7.7356 checkpoint_headings[19] = 68.2550 checkpoints_triathalon_x[20] = 223.9637 checkpoints_triathalon_y[20] = -281.3440 checkpoints_triathalon_z[20] = 0.4297 checkpoint_headings[20] = 271.1071 checkpoints_triathalon_x[21] = 232.8023 checkpoints_triathalon_y[21] = -147.7986 checkpoints_triathalon_z[21] = 0.4375 checkpoint_headings[21] = 357.6566 checkpoints_triathalon_x[22] = 212.8295 checkpoints_triathalon_y[22] = 51.8381 checkpoints_triathalon_z[22] = 1.0781 checkpoint_headings[22] = 109.6694 checkpoints_triathalon_x[23] = -68.0222 checkpoints_triathalon_y[23] = 199.2302 checkpoints_triathalon_z[23] = 1.1111 checkpoint_headings[23] = 65.8208 checkpoints_triathalon_x[24] = -214.4978 checkpoints_triathalon_y[24] = 242.3661 checkpoints_triathalon_z[24] = 10.9924 checkpoint_headings[24] = 77.1542 checkpoints_triathalon_x[25] = -474.3636 checkpoints_triathalon_y[25] = 283.1361 checkpoints_triathalon_z[25] = 1.0859 checkpoint_headings[25] = 87.3102 checkpoints_triathalon_x[26] = -704.3909 checkpoints_triathalon_y[26] = 237.3473 checkpoints_triathalon_z[26] = 1.2298 checkpoint_headings[26] = 125.7750 checkpoints_triathalon_x[27] = -753.5148 checkpoints_triathalon_y[27] = 113.9041 checkpoints_triathalon_z[27] = 13.0728 checkpoint_headings[27] = 238.8586 checkpoints_triathalon_x[28] = -774.6131 checkpoints_triathalon_y[28] = 19.8180 checkpoints_triathalon_z[28] = 32.2693 checkpoint_headings[28] = 99.2499 checkpoints_triathalon_x[29] = -882.6287 checkpoints_triathalon_y[29] = -30.0806 checkpoints_triathalon_z[29] = 32.3448 checkpoint_headings[29] = 159.8070 checkpoints_triathalon_x[30] = -693.5931 checkpoints_triathalon_y[30] = 14.1184 checkpoints_triathalon_z[30] = 64.7495 checkpoint_headings[30] = 274.7533 checkpoints_triathalon_x[31] = -747.8843 checkpoints_triathalon_y[31] = -87.2834 checkpoints_triathalon_z[31] = 65.6724 checkpoint_headings[31] = 116.1896 checkpoints_triathalon_x[32] = -914.7136 checkpoints_triathalon_y[32] = -149.6012 checkpoints_triathalon_z[32] = 52.8499 checkpoint_headings[32] = 134.4302 checkpoints_triathalon_x[33] = -962.9247 checkpoints_triathalon_y[33] = -326.8087 checkpoints_triathalon_z[33] = 35.2353 checkpoint_headings[33] = 168.4629 checkpoints_triathalon_x[34] = -1053.0137 checkpoints_triathalon_y[34] = -459.1835 checkpoints_triathalon_z[34] = 34.3070 checkpoint_headings[34] = 115.9967 checkpoints_triathalon_x[35] = -1192.1448 checkpoints_triathalon_y[35] = -713.6215 checkpoints_triathalon_z[35] = 54.6026 checkpoint_headings[35] = 156.9905 checkpoints_triathalon_x[36] = -1487.7150 checkpoints_triathalon_y[36] = -817.6843 checkpoints_triathalon_z[36] = 64.4213 checkpoint_headings[36] = 92.4112 checkpoints_triathalon_x[37] = -1740.7775 checkpoints_triathalon_y[37] = -724.1766 checkpoints_triathalon_z[37] = 30.4857 checkpoint_headings[37] = 49.0549 checkpoints_triathalon_x[38] = -1781.2047 checkpoints_triathalon_y[38] = -583.2640 checkpoints_triathalon_z[38] = 15.3359 checkpoint_headings[38] = 100.3213 checkpoints_triathalon_x[39] = -1823.7002 checkpoints_triathalon_y[39] = -529.5533 checkpoints_triathalon_z[39] = 13.9686 checkpoint_headings[39] = 4.2211 checkpoints_triathalon_x[40] = -1799.0173 checkpoints_triathalon_y[40] = -273.0101 checkpoints_triathalon_z[40] = 20.3398 checkpoint_headings[40] = 354.7032 checkpoints_triathalon_x[41] = -1800.1229 checkpoints_triathalon_y[41] = -65.1682 checkpoints_triathalon_z[41] = 10.9423 checkpoint_headings[41] = 359.6422 checkpoints_triathalon_x[42] = -1725.0618 checkpoints_triathalon_y[42] = 327.4661 checkpoints_triathalon_z[42] = 6.0390 checkpoint_headings[42] = 315.3110 checkpoints_triathalon_x[43] = -1557.0966 checkpoints_triathalon_y[43] = 578.6060 checkpoints_triathalon_z[43] = 6.0280 checkpoint_headings[43] = 0.4208 checkpoints_triathalon_x[44] = -1541.1064 checkpoints_triathalon_y[44] = 769.1249 checkpoints_triathalon_z[44] = 6.0391 checkpoint_headings[44] = 353.7148 checkpoints_triathalon_x[45] = -1583.3777 checkpoints_triathalon_y[45] = 1116.9907 checkpoints_triathalon_z[45] = 6.0468 checkpoint_headings[45] = 1.1392 checkpoints_triathalon_x[46] = -1809.2827 checkpoints_triathalon_y[46] = 1378.6250 checkpoints_triathalon_z[46] = 6.0391 checkpoint_headings[46] = 81.6560 checkpoints_triathalon_x[47] = -2100.2131 checkpoints_triathalon_y[47] = 1275.8335 checkpoints_triathalon_z[47] = 15.1271 checkpoint_headings[47] = 95.1487 checkpoints_triathalon_x[48] = -2350.2080 checkpoints_triathalon_y[48] = 1176.5745 checkpoints_triathalon_z[48] = 41.5671 checkpoint_headings[48] = 90.0114 checkpoints_triathalon_x[49] = -2510.8774 checkpoints_triathalon_y[49] = 1187.8561 checkpoints_triathalon_z[49] = 39.1262 checkpoint_headings[49] = 85.2520 checkpoints_triathalon_x[50] = -2669.6802 checkpoints_triathalon_y[50] = 1245.1427 checkpoints_triathalon_z[50] = 54.4297 checkpoint_headings[50] = 8.9025 checkpoints_triathalon_x[51] = -2673.8926 checkpoints_triathalon_y[51] = 1643.3517 checkpoints_triathalon_z[51] = 65.0251 checkpoint_headings[51] = 0.2767 checkpoints_triathalon_x[52] = -2674.0469 checkpoints_triathalon_y[52] = 2075.5439 checkpoints_triathalon_z[52] = 54.4218 checkpoint_headings[52] = 359.5528 checkpoints_triathalon_x[53] = -2738.8127 checkpoints_triathalon_y[53] = 2389.1667 checkpoints_triathalon_z[53] = 71.7769 checkpoint_headings[53] = 13.6254 checkpoints_triathalon_x[54] = -2547.9309 checkpoints_triathalon_y[54] = 2616.4624 checkpoints_triathalon_z[54] = 59.9948 checkpoint_headings[54] = 274.8428 checkpoints_triathalon_x[55] = -2291.8877 checkpoints_triathalon_y[55] = 2639.5605 checkpoints_triathalon_z[55] = 54.2564 checkpoint_headings[55] = 274.3506 checkpoints_triathalon_x[56] = -1943.4406 checkpoints_triathalon_y[56] = 2477.7957 checkpoints_triathalon_z[56] = 53.9877 checkpoint_headings[56] = 203.7195 checkpoints_triathalon_x[57] = -1773.8296 checkpoints_triathalon_y[57] = 2183.4089 checkpoints_triathalon_z[57] = 15.1278 checkpoint_headings[57] = 244.4939 checkpoints_triathalon_x[58] = -1671.4347 checkpoints_triathalon_y[58] = 1994.4735 checkpoints_triathalon_z[58] = 18.6050 checkpoint_headings[58] = 169.1263 checkpoints_triathalon_x[59] = -1665.7004 checkpoints_triathalon_y[59] = 1828.9640 checkpoints_triathalon_z[59] = 24.8360 checkpoint_headings[59] = 278.2649 checkpoints_triathalon_x[60] = -1515.5267 checkpoints_triathalon_y[60] = 1841.5544 checkpoints_triathalon_z[60] = 28.9903 checkpoint_headings[60] = 271.1894 checkpoints_triathalon_x[61] = -1264.9932 checkpoints_triathalon_y[61] = 1827.3014 checkpoints_triathalon_z[61] = 39.4348 checkpoint_headings[61] = 234.9500 checkpoints_triathalon_x[62] = -1121.3851 checkpoints_triathalon_y[62] = 1807.5393 checkpoints_triathalon_z[62] = 41.2592 checkpoint_headings[62] = 284.4989 checkpoints_triathalon_x[63] = -988.9796 checkpoints_triathalon_y[63] = 1847.6390 checkpoints_triathalon_z[63] = 61.9118 checkpoint_headings[63] = 237.4219 checkpoints_triathalon_x[64] = -855.0579 checkpoints_triathalon_y[64] = 1858.8971 checkpoints_triathalon_z[64] = 59.2160 checkpoint_headings[64] = 15.0168 checkpoints_triathalon_x[65] = -827.7874 checkpoints_triathalon_y[65] = 2022.6101 checkpoints_triathalon_z[65] = 59.1866 checkpoint_headings[65] = 302.1424 checkpoints_triathalon_x[66] = -643.9840 checkpoints_triathalon_y[66] = 2054.7522 checkpoints_triathalon_z[66] = 59.3829 checkpoint_headings[66] = 252.3283 checkpoints_triathalon_x[67] = -460.4977 checkpoints_triathalon_y[67] = 2022.1373 checkpoints_triathalon_z[67] = 59.1932 checkpoint_headings[67] = 314.0172 checkpoints_triathalon_x[68] = -385.3306 checkpoints_triathalon_y[68] = 2052.0591 checkpoints_triathalon_z[68] = 61.1139 checkpoint_headings[68] = 121.3349 checkpoints_triathalon_x[69] = -471.1979 checkpoints_triathalon_y[69] = 1868.4519 checkpoints_triathalon_z[69] = 81.3094 checkpoint_headings[69] = 185.3215 checkpoints_triathalon_x[70] = -424.8187 checkpoints_triathalon_y[70] = 1785.5519 checkpoints_triathalon_z[70] = 69.9688 checkpoint_headings[70] = 353.9297 checkpoints_triathalon_x[71] = -392.5027 checkpoints_triathalon_y[71] = 1899.6776 checkpoints_triathalon_z[71] = 56.3096 checkpoint_headings[71] = 190.7471 checkpoints_triathalon_x[72] = -437.5663 checkpoints_triathalon_y[72] = 1639.0536 checkpoints_triathalon_z[72] = 34.5544 checkpoint_headings[72] = 155.0889 checkpoints_triathalon_x[73] = -419.9048 checkpoints_triathalon_y[73] = 1375.7109 checkpoints_triathalon_z[73] = 29.3441 checkpoint_headings[73] = 198.0373 checkpoints_triathalon_x[74] = -254.2456 checkpoints_triathalon_y[74] = 1241.2448 checkpoints_triathalon_z[74] = 22.9055 checkpoint_headings[74] = 262.7647 checkpoints_triathalon_x[75] = -17.3116 checkpoints_triathalon_y[75] = 1265.9962 checkpoints_triathalon_z[75] = 7.1868 checkpoint_headings[75] = 269.9033 checkpoints_triathalon_x[76] = 207.2180 checkpoints_triathalon_y[76] = 1174.1932 checkpoints_triathalon_z[76] = 13.9973 checkpoint_headings[76] = 316.9584 checkpoints_triathalon_x[77] = 339.0704 checkpoints_triathalon_y[77] = 1382.2875 checkpoints_triathalon_z[77] = 6.1753 checkpoint_headings[77] = 342.3971 checkpoints_triathalon_x[78] = 388.3414 checkpoints_triathalon_y[78] = 1547.9292 checkpoints_triathalon_z[78] = 13.8468 checkpoint_headings[78] = 343.6689 checkpoints_triathalon_x[79] = 633.4001 checkpoints_triathalon_y[79] = 1754.8674 checkpoints_triathalon_z[79] = 3.9566 checkpoint_headings[79] = 317.1131 checkpoints_triathalon_x[80] = 669.8152 checkpoints_triathalon_y[80] = 2168.3225 checkpoints_triathalon_z[80] = 20.5117 checkpoint_headings[80] = 358.9947 checkpoints_triathalon_x[81] = 689.6470 checkpoints_triathalon_y[81] = 2565.1602 checkpoints_triathalon_z[81] = 27.2334 checkpoint_headings[81] = 311.5221 checkpoints_triathalon_x[82] = 891.8608 checkpoints_triathalon_y[82] = 2603.7539 checkpoints_triathalon_z[82] = 9.5950 checkpoint_headings[82] = 247.5050 checkpoints_triathalon_x[83] = 1044.0208 checkpoints_triathalon_y[83] = 2515.8572 checkpoints_triathalon_z[83] = 9.6323 checkpoint_headings[83] = 231.5339 checkpoints_triathalon_x[84] = 1244.5967 checkpoints_triathalon_y[84] = 2379.1238 checkpoints_triathalon_z[84] = 12.6162 checkpoint_headings[84] = 243.2790 checkpoints_triathalon_x[85] = 1443.8691 checkpoints_triathalon_y[85] = 2448.9451 checkpoints_triathalon_z[85] = 5.7498 checkpoint_headings[85] = 288.6619 checkpoints_triathalon_x[86] = 1666.8932 checkpoints_triathalon_y[86] = 2445.9934 checkpoints_triathalon_z[86] = 6.0409 checkpoint_headings[86] = 251.8771 checkpoints_triathalon_x[87] = 1788.8903 checkpoints_triathalon_y[87] = 2302.6406 checkpoints_triathalon_z[87] = 4.9096 checkpoint_headings[87] = 178.4221 checkpoints_triathalon_x[88] = 1787.2880 checkpoints_triathalon_y[88] = 2020.5527 checkpoints_triathalon_z[88] = 2.9839 checkpoint_headings[88] = 180.0315 checkpoints_triathalon_x[89] = 1757.5692 checkpoints_triathalon_y[89] = 1803.7501 checkpoints_triathalon_z[89] = 6.6726 checkpoint_headings[89] = 151.3169 checkpoints_triathalon_x[90] = 1719.6592 checkpoints_triathalon_y[90] = 1733.2050 checkpoints_triathalon_z[90] = 9.6719 checkpoint_headings[90] = 76.1769 checkpoints_triathalon_x[91] = 1647.8604 checkpoints_triathalon_y[91] = 1740.3892 checkpoints_triathalon_z[91] = 9.6719 checkpoint_headings[91] = 353.7883 checkpoints_triathalon_x[92] = 1666.3218 checkpoints_triathalon_y[92] = 1871.7675 checkpoints_triathalon_z[92] = 9.6797 checkpoint_headings[92] = 276.2030 checkpoints_triathalon_x[93] = 1707.1766 checkpoints_triathalon_y[93] = 1939.9534 checkpoints_triathalon_z[93] = 9.6719 checkpoint_headings[93] = 1.2039 checkpoints_triathalon_x[94] = 1736.2123 checkpoints_triathalon_y[94] = 2053.1387 checkpoints_triathalon_z[94] = 9.6797 checkpoint_headings[94] = 263.9626 checkpoints_triathalon_x[95] = 1897.3198 checkpoints_triathalon_y[95] = 2044.7122 checkpoints_triathalon_z[95] = 9.6719 checkpoint_headings[95] = 254.9706 checkpoints_triathalon_x[96] = 1994.8163 checkpoints_triathalon_y[96] = 2022.8688 checkpoints_triathalon_z[96] = 9.6797 checkpoint_headings[96] = 270.1811 // end of bike checkpoints_triathalon_x[97] = 2126.0054 checkpoints_triathalon_y[97] = 2014.8894 checkpoints_triathalon_z[97] = 9.6719 checkpoint_headings[97] = 199.0654 // start run checkpoints_triathalon_x[98] = 2126.7981 checkpoints_triathalon_y[98] = 1885.5897 checkpoints_triathalon_z[98] = 9.6797 checkpoint_headings[98] = 178.0925 checkpoints_triathalon_x[99] = 2098.3350 checkpoints_triathalon_y[99] = 1802.8602 checkpoints_triathalon_z[99] = 9.6797 checkpoint_headings[99] = 156.4693 checkpoints_triathalon_x[100] =2056.6440 checkpoints_triathalon_y[100] =1720.5748 checkpoints_triathalon_z[100] =9.6719 checkpoint_headings[100] = 156.0535 checkpoints_triathalon_x[101] =2049.2598 checkpoints_triathalon_y[101] =1554.7893 checkpoints_triathalon_z[101] =9.6719 checkpoint_headings[101] = 179.2217 checkpoints_triathalon_x[102] = 2050.8267 checkpoints_triathalon_y[102] = 1403.3622 checkpoints_triathalon_z[102] = 9.6719 checkpoint_headings[102] = 179.9112 checkpoints_triathalon_x[103] = 2048.7000 checkpoints_triathalon_y[103] = 1089.7463 checkpoints_triathalon_z[103] = 9.6641 checkpoint_headings[103] = 179.8144 // end run point_after_finish_line_x = 2046.0 point_after_finish_line_y = 979.0 point_after_finish_line_z = 9.49 total_checkpoints_triathalon_triathalon = 104 total_racers_mtbike = 9 racer_model_triathalon[0] = wmybe racer_model_triathalon[1] = bmybe racer_model_triathalon[2] = hmybe racer_model_triathalon[3] = bmybe racer_model_triathalon[4] = hmybe racer_model_triathalon[5] = wmybe racer_model_triathalon[6] = wmybe racer_model_triathalon[7] = wmybell racer_model_triathalon[8] = wmybell racer_model_triathalon[9] = wmybell racer_model_triathalon[10] = wmybell racer_model_triathalon[11] = wmybell racers_car_model_triathalon[0] = mtbike racers_car_model_triathalon[1] = mtbike racers_car_model_triathalon[2] = mtbike racers_car_model_triathalon[3] = mtbike racers_car_model_triathalon[4] = mtbike racers_car_model_triathalon[5] = mtbike racers_car_model_triathalon[6] = mtbike racers_car_model_triathalon[7] = mtbike racers_car_model_triathalon[8] = mtbike racers_car_model_triathalon[9] = mtbike racers_car_model_triathalon[10] = mtbike racers_car_model_triathalon[11] = mtbike opponents_cycle_speed_fast = 50.0 opponents_cycle_speed_slow = 40.0 opponents_cycle_speed_really_slow = 30.0 opponents_swim_speed_fast = 2.23 opponents_swim_speed_slow = 2.1 opponents_swim_speed_really_slow = 1.8 opponents_run_speed_fast = 1.33 opponents_run_speed_slow = 1.30 opponents_run_speed_really_slow = 1.25 offset_swimming_opponents_x[0]= 2.3 offset_swimming_opponents_y[0]= -6.0 offset_swimming_opponents_x[1]= 3.0 offset_swimming_opponents_y[1]= -4.0 offset_swimming_opponents_x[2]= 5.0 offset_swimming_opponents_y[2]= -4.0 offset_swimming_opponents_x[3]= 2.6 offset_swimming_opponents_y[3]= -1.0 offset_swimming_opponents_x[4]= 5.0 offset_swimming_opponents_y[4]= 5.0 offset_swimming_opponents_x[5]= 0.0 offset_swimming_opponents_y[5]= -4.0 offset_swimming_opponents_x[6]= -4.0 offset_swimming_opponents_y[6]= 0.0 offset_swimming_opponents_x[7]= 0.0 offset_swimming_opponents_y[7]= 0.9 offset_swimming_opponents_x[8]= 3.1 offset_swimming_opponents_y[8]= -4.0 offset_swimming_opponents_x[9]= 3.0 offset_swimming_opponents_y[9]= -5.0 offset_swimming_opponents_x[10]= -5.0 offset_swimming_opponents_y[10]= -3.0 offset_swimming_opponents_x[11]= -2.0 offset_swimming_opponents_y[11]= 4.0 flag_make_runner_get_past_finishingline[0] = 0 flag_make_runner_get_past_finishingline[1] = 0 flag_make_runner_get_past_finishingline[2] = 0 flag_make_runner_get_past_finishingline[3] = 0 flag_make_runner_get_past_finishingline[4] = 0 flag_make_runner_get_past_finishingline[5] = 0 flag_make_runner_get_past_finishingline[6] = 0 flag_make_runner_get_past_finishingline[7] = 0 flag_make_runner_get_past_finishingline[8] = 0 flag_make_runner_get_past_finishingline[9] = 0 flag_make_runner_get_past_finishingline[10] = 0 flag_make_runner_get_past_finishingline[11] = 0 GOTO triathalon_start CREATE_CHECKPOINT CHECKPOINT_TUBE racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] second_cp_triathalonx second_cp_triathalony second_cp_triathalonz 6.0 cp_marker_triathalon DELETE_CHECKPOINT cp_marker_triathalon triathalon_start: set_opponents_cycle_speed = opponents_cycle_speed_fast set_opponents_swim_speed = opponents_swim_speed_fast set_opponents_run_speed = opponents_run_speed_fast WHILE NOT IS_PLAYER_PLAYING player1 WAIT 0 ENDWHILE CLEAR_AREA checkpoints_triathalon_x[0] checkpoints_triathalon_y[0] checkpoints_triathalon_z[0] 1000000.5 0 LOAD_SCENE checkpoints_triathalon_x[0] checkpoints_triathalon_y[0] checkpoints_triathalon_z[0] DISABLE_ALL_ENTRY_EXITS TRUE //SWITCH_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 //SWITCH_PED_ROADS_OFF -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 0.0 SET_PED_DENSITY_MULTIPLIER 0.0 LVAR_INT total_checkpoints_triathalon_triathalon_minus_1 total_checkpoints_triathalon_triathalon_minus_1 = total_checkpoints_triathalon_triathalon - 1 r = 0 a = 0 c = 0 e = 0 LVAR_FLOAT racer_cp_x_triathalon[12] racer_cp_y_triathalon[12] racer_cp_z_triathalon[12] //VAR_FLOAT stuck_x[6] stuck_y[6] LVAR_INT racer_blip_triathalon[12] LVAR_INT racers_mtbike[12] LVAR_INT triathalonr[12] LVAR_INT total_triathalon total_triathalon = total_racers_mtbike LVAR_INT cpcounter_triathalon[12] WHILE a < total_triathalon cpcounter_triathalon[a] = 0 ++ a ENDWHILE //PRINT_NOW BIK1_1 5000 1 //"~g~Get a fast car and get to the starting grid." LVAR_INT first_blip_triathalon //second_blip_triathalon ADD_BLIP_FOR_COORD checkpoints_triathalon_x[0] checkpoints_triathalon_y[0] checkpoints_triathalon_z[0] first_blip_triathalon //ADD_BLIP_FOR_COORD checkpoints_triathalon_x[0] checkpoints_triathalon_y[0] checkpoints_triathalon_z[0] second_blip_triathalon //REMOVE_BLIP second_blip_triathalon LVAR_INT race_flag_triathalon LVAR_INT playaz_triathalon race_flag_triathalon = 0 //VIEW_INTEGER_VARIABLE race_flag_triathalon race_flag_triathalon mission_triathalon_loop: WAIT 0 GET_GAME_TIMER game_timer LVAR_INT position_triathalon position_triathalon = 0 a = 0 IF race_flag_triathalon = 0 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer checkpoints_triathalon_x[0] checkpoints_triathalon_y[0] checkpoints_triathalon_z[0] SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP player1 Bbshortwht boxingshort 2 BUILD_PLAYER_MODEL player1 IF LOCATE_CHAR_ANY_MEANS_2D scplayer checkpoints_triathalon_x[1] checkpoints_triathalon_y[1] 100.0 100.0 0 r = 0 x = checkpoints_triathalon_x[0] + 4.0 y = checkpoints_triathalon_y[0] + 4.0 z = checkpoints_triathalon_z[0] + 6.0 x2 = checkpoints_triathalon_x[0] - 7.0 y2 = checkpoints_triathalon_y[0] - 7.0 z2 = checkpoints_triathalon_z[0] - 7.0 // SWITCH_ROADS_OFF x y z x2 y2 z2 ++ race_flag_triathalon ENDIF ENDIF ENDIF IF race_flag_triathalon = 1 /* temp_int_triathalon = total_triathalon - 1 REQUEST_MODEL racer_model_triathalon[r] REQUEST_MODEL racers_car_model_triathalon[r] IF HAS_MODEL_LOADED racer_model_triathalon[r] AND HAS_MODEL_LOADED racers_car_model_triathalon[r] ++ r ELSE REQUEST_MODEL racer_model_triathalon[r] REQUEST_MODEL racers_car_model_triathalon[r] ENDIF IF r = temp_int_triathalon ++ race_flag_triathalon ENDIF */ REQUEST_MODEL wmybe REQUEST_MODEL bmybe REQUEST_MODEL hmybe REQUEST_MODEL wmybell REQUEST_MODEL mtbike WHILE NOT HAS_MODEL_LOADED wmybe OR NOT HAS_MODEL_LOADED bmybe OR NOT HAS_MODEL_LOADED hmybe OR NOT HAS_MODEL_LOADED wmybell OR NOT HAS_MODEL_LOADED mtbike WAIT 0 ENDWHILE race_flag_triathalon = 2 ENDIF IF race_flag_triathalon = 2 // players bike // CREATE_CAR mtbike -248.7668 -1714.4104 2.3750 racers_mtbike[playaz_triathalon] // creating the players bike // SET_CAR_HEADING racers_mtbike[playaz_triathalon] 168.6926 // bike for teh offsets at starting point CREATE_CAR racers_car_model_triathalon[0] checkpoints_triathalon_x[0] checkpoints_triathalon_y[0] checkpoints_triathalon_z[0] stored_bike_triathalon // start of cycling TURN_CAR_TO_FACE_COORD stored_bike_triathalon checkpoints_triathalon_x[1] checkpoints_triathalon_y[1]// MUST PLACE checkpoint[1] STRAIGHT AHEAD FROM START temp_int_triathalon = total_triathalon - 1 // bike for teh offsets at getting on bikes section CREATE_CAR racers_car_model_triathalon[0] checkpoints_triathalon_x[get_on_bike] checkpoints_triathalon_y[get_on_bike] -100.0 stored_bike_triathalon2 SET_CAR_HEADING stored_bike_triathalon2 checkpoint_headings[get_on_bike] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon2 x2 y2 z2 x2 y2 z2 GET_CAR_HEADING stored_bike_triathalon2 heading_triathalon2 z2 = checkpoints_triathalon_z[0] a = 0 WHILE a < total_triathalon c = a / 2 c *= 2 IF c = a//IS a AN EVEN NUMBER? x = 1.5 e = a * 2 temp_float =# e temp_float *= -1.0 y = temp_float ELSE x = -1.5 e = a - 1 e *= 2 temp_float =# e temp_float *= -1.0 y = temp_float ENDIF GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon x y z x y z GET_CAR_HEADING stored_bike_triathalon heading_triathalon z = checkpoints_triathalon_z[0] racer_cp_x_triathalon[a] = x racer_cp_y_triathalon[a] = y GET_GROUND_Z_FOR_3D_COORD x y z z racer_cp_z_triathalon[a] = z // DELETE_CAR heading_triathalon2 IF a < temp_int_triathalon // CREATE_CHAR_INSIDE_CAR racers_mtbike[a] PEDTYPE_CIVMALE racer_model_triathalon[a] triathalonr[a] // making the mountain biker CREATE_CHAR PEDTYPE_CIVMALE racer_model_triathalon[a] x y -100.0 triathalonr[a] // making the mountain biker SET_CHAR_ONLY_DAMAGED_BY_PLAYER triathalonr[a] TRUE SET_CHAR_DECISION_MAKER triathalonr[a] dm_racers_triathalon flag_create_bike_and_make_opponent_get_on_it[a] = 0 flag_make_guys_enter_bike[a] = 0 SET_CHAR_HEADING triathalonr[a] checkpoint_headings[0] SET_CHAR_DROWNS_IN_WATER triathalonr[a] FALSE CLEAR_CHAR_LAST_DAMAGE_ENTITY triathalonr[a] SET_CHAR_CAN_BE_SHOT_IN_VEHICLE triathalonr[a] FALSE IF flag_create_bike_and_make_opponent_get_on_it[a] = 0 c = a / 2 c *= 2 IF c = a//IS a AN EVEN NUMBER? x = 3.5 e = a * 2 temp_float =# e temp_float *= -1.0 y = temp_float ELSE x = -3.5 e = a - 1 e *= 2 temp_float =# e temp_float *= -1.0 y = temp_float ENDIF GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon2 x y z x y z CREATE_CAR racers_car_model_triathalon[a] x y -100.00 racers_mtbike[a] IMPROVE_CAR_BY_CHEATING racers_mtbike[a] TRUE SET_CAR_TRACTION racers_mtbike[a] 1.5 //DELETE_CAR stored_bike_triathalon2 flag_create_bike_and_make_opponent_get_on_it[a] = 1 ADD_STUCK_CAR_CHECK_WITH_WARP racers_mtbike[a] 0.5 5000 TRUE FALSE TRUE 1 // SET_CAR_HEADING racers_mtbike[a] checkpoint_headings[8] SET_CAR_HEADING racers_mtbike[a] 175.0 SET_CAR_PROOFS racers_mtbike[a] TRUE TRUE TRUE TRUE TRUE SET_CAR_HEALTH racers_mtbike[a] 2000 SET_CAR_WATERTIGHT racers_mtbike[a] TRUE SET_CAR_STRONG racers_mtbike[a] TRUE SET_UPSIDEDOWN_CAR_NOT_DAMAGED racers_mtbike[a] TRUE SET_CAR_STRAIGHT_LINE_DISTANCE racers_mtbike[a] 5 SET_CAN_BURST_CAR_TYRES racers_mtbike[a] FALSE ENDIF // WARP_CHAR_INTO_CAR triathalonr[a] racers_mtbike[a] ELSE LVAR_INT spectator_triathalon[11] flag_girl_triathalon GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon -4.0435 6.5755 -0.8 x y z CREATE_RANDOM_CHAR x y z flag_girl_triathalon TASK_TURN_CHAR_TO_FACE_COORD flag_girl_triathalon checkpoints_triathalon_x[0] checkpoints_triathalon_y[0] checkpoints_triathalon_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon -5.6392 2.9435 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[0] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[0] checkpoints_triathalon_x[0] checkpoints_triathalon_y[0] checkpoints_triathalon_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon -6.0071 -2.0778 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[1] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[1] checkpoints_triathalon_x[0] checkpoints_triathalon_y[0] checkpoints_triathalon_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon -7.6039 -5.0807 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[2] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[2] checkpoints_triathalon_x[0] checkpoints_triathalon_y[0] checkpoints_triathalon_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon -7.0724 -6.4057 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[3] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[3] checkpoints_triathalon_x[0] checkpoints_triathalon_y[0] checkpoints_triathalon_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon -5.9988 -13.553 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[4] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[4] checkpoints_triathalon_x[0] checkpoints_triathalon_y[0] checkpoints_triathalon_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon 6.0730 -15.2059 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[5] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[5] checkpoints_triathalon_x[0] checkpoints_triathalon_y[0] checkpoints_triathalon_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon 7.2639 -12.9933 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[6] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[6] checkpoints_triathalon_x[0] checkpoints_triathalon_y[0] checkpoints_triathalon_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon 5.8429 -7.7069 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[7] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[7] checkpoints_triathalon_x[0] checkpoints_triathalon_y[0] checkpoints_triathalon_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon 8.4135 -3.7971 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[8] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[8] checkpoints_triathalon_x[0] checkpoints_triathalon_y[0] checkpoints_triathalon_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon 6.2507 0.3634 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[9] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[9] checkpoints_triathalon_x[0] checkpoints_triathalon_y[0] checkpoints_triathalon_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon 8.6397 2.4190 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[10] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[10] checkpoints_triathalon_x[0] checkpoints_triathalon_y[0] checkpoints_triathalon_z[0] REMOVE_BLIP first_blip_triathalon//PLAYERS STARTING COORDS ADD_BLIP_FOR_COORD racer_cp_x_triathalon[temp_int_triathalon] racer_cp_y_triathalon[temp_int_triathalon] racer_cp_z_triathalon[temp_int_triathalon] first_blip_triathalon SET_CAR_DENSITY_MULTIPLIER 0.5 triathalonr[a] = scplayer playaz_triathalon = a ENDIF ++ a ENDWHILE ++ race_flag_triathalon DELETE_CAR stored_bike_triathalon DELETE_CAR stored_bike_triathalon2 CREATE_CAR racers_car_model_triathalon[0] checkpoints_triathalon_x[get_on_bike] checkpoints_triathalon_y[get_on_bike] checkpoints_triathalon_z[get_on_bike] stored_bike_triathalon2 SET_CAR_HEADING stored_bike_triathalon2 checkpoint_headings[get_on_bike] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon2 5.0 -15.0 0.0 temp_x temp_y temp_z SET_CAR_HEADING stored_bike_triathalon2 heading_triathalon2 // players bike CREATE_CAR mtbike temp_x temp_y -100.0 racers_mtbike[playaz_triathalon] // creating the players bike SET_CAR_HEADING racers_mtbike[playaz_triathalon] heading_triathalon2 SET_CAR_WATERTIGHT racers_mtbike[playaz_triathalon] TRUE DELETE_CAR stored_bike_triathalon2 IF IS_PLAYER_PLAYING player1 // SET_PLAYER_CONTROL Player1 ON SET_CHAR_COORDINATES scplayer racer_cp_x_triathalon[playaz_triathalon] racer_cp_y_triathalon[playaz_triathalon] racer_cp_z_triathalon[playaz_triathalon] SET_CHAR_HEADING scplayer checkpoint_headings[0] // TURN_CAR_TO_FACE_COORD racers_mtbike[playaz_triathalon] racer_cp_x_triathalon[0] racer_cp_y_triathalon[0] // SET_CHAR_HEADING scplayer 204.0 SET_CAMERA_BEHIND_PLAYER ENDIF SWITCH_WIDESCREEN ON WAIT 500 DO_FADE 3000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE CLEAR_PRINTS // PRINT_BIG MTROUTE 3000 6 /* IF triathalon_selection = 1 PRINT_NOW MTROUT1 3000 6 ENDIF IF triathalon_selection = 2 PRINT_NOW MTROUT2 3000 6 ENDIF IF triathalon_selection = 3 PRINT_NOW MTROUT3 3000 6 ENDIF */ ENDIF IF race_flag_triathalon = 3 IF NOT IS_CHAR_DEAD scplayer // IF NOT LOCATE_STOPPED_CHAR_IN_CAR_3D scplayer racer_cp_x_triathalon[playaz_triathalon] racer_cp_y_triathalon[playaz_triathalon] racer_cp_z_triathalon[playaz_triathalon] 2.0 2.0 2.0 1 SET_PLAYER_CONTROL player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 TRUE SET_ALL_CARS_CAN_BE_DAMAGED FALSE PRINT_BIG RACES_4 1100 4 ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_RACE_START_3 temp_int_triathalon = total_triathalon - 1 a = 0 WHILE a < temp_int_triathalon IF IS_CHAR_DEAD triathalonr[a] PRINT_NOW RACES25 5000 1 // you have been disqualifed GOTO mission_triathalon_failed ENDIF ++ a ENDWHILE LVAR_INT triathalon_timer triathalon_timer = game_timer + 999 ++ race_flag_triathalon ENDIF ENDIF IF race_flag_triathalon = 4 IF triathalon_timer < game_timer PRINT_BIG RACES_5 1100 4 // PRINT_BIG 3000 ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_RACE_START_2 triathalon_timer = game_timer + 999 ++ race_flag_triathalon ENDIF ENDIF IF race_flag_triathalon = 5 IF triathalon_timer < game_timer PRINT_BIG RACES_6 1100 4 ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_RACE_START_1 triathalon_timer = game_timer + 999 ++ race_flag_triathalon ENDIF ENDIF IF race_flag_triathalon = 6 IF triathalon_timer < game_timer IF NOT IS_CHAR_DEAD scplayer PRINT_BIG RACES_7 800 4 ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_RACE_START_GO // REPORT_MISSION_AUDIO_EVENT_AT_POSITION checkpoints_triathalon_x[0] checkpoints_triathalon_y[0] checkpoints_triathalon_z[0] SOUND_AIR_HORN SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SET_ALL_CARS_CAN_BE_DAMAGED TRUE RESTORE_CAMERA //SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF // PRINT_BIG MTROUTE 3000 6 DISPLAY_CAR_NAMES FALSE /* IF triathalon_selection = 1 CLEAR_THIS_PRINT MTROUT1 ENDIF IF triathalon_selection = 2 CLEAR_THIS_PRINT MTROUT2 ENDIF IF triathalon_selection = 3 CLEAR_THIS_PRINT MTROUT3 ENDIF */ race_timer = game_timer temp_int_triathalon = total_triathalon - 1 a = 0 WHILE a < temp_int_triathalon IF NOT IS_CAR_DEAD racers_mtbike[a] SET_CAR_ONLY_DAMAGED_BY_PLAYER racers_mtbike[a] FALSE ENDIF ++ a ENDWHILE triathalon_timer = 0 ++ race_flag_triathalon ENDIF ENDIF ENDIF IF race_flag_triathalon > 6 WHILE a < total_triathalon IF NOT IS_CHAR_DEAD scplayer IF NOT IS_CHAR_DEAD triathalonr[a] IF race_flag_triathalon = 8 IF NOT triathalonr[a] = scplayer IF cpcounter_triathalon[playaz_triathalon] = cpcounter_triathalon[a] LVAR_FLOAT player_distance_from_cp_triathalon racer_distance_from_cp_triathalon GET_CHAR_COORDINATES triathalonr[a] x y z GET_DISTANCE_BETWEEN_COORDS_2D x y racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_distance_from_cp_triathalon GET_CHAR_COORDINATES scplayer x y z GET_DISTANCE_BETWEEN_COORDS_2D x y racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] player_distance_from_cp IF player_distance_from_cp > racer_distance_from_cp_triathalon ++ position_triathalon ENDIF ELSE IF cpcounter_triathalon[playaz_triathalon] < cpcounter_triathalon[a] ++ position_triathalon ENDIF ENDIF /////////////////////////////////// // STUCK CODE /////////////////////////////////// IF NOT LOCATE_CHAR_ANY_MEANS_2D triathalonr[a] stuck_x[a] stuck_y[a] 2.0 2.0 0 GET_CHAR_COORDINATES triathalonr[a] stuck_x[a] stuck_y[a] z IF cpcounter_triathalon[a] >= get_in_water AND cpcounter_triathalon[a] <= end_swim stuck_timer[a] = game_timer + 1500 ELSE IF cpcounter_triathalon[a] = get_on_bike stuck_timer[a] = game_timer + 1500 ELSE stuck_timer[a] = game_timer + 4000 ENDIF ENDIF ENDIF // setting speeds for running IF cpcounter_triathalon[a] >= start_run AND cpcounter_triathalon[a] <= end_run IF IS_CHAR_PLAYING_ANIM triathalonr[a] sprint_panic SET_CHAR_ANIM_SPEED triathalonr[a] sprint_panic set_opponents_run_speed ENDIF IF IS_CHAR_PLAYING_ANIM triathalonr[a] run_civi SET_CHAR_ANIM_SPEED triathalonr[a] run_civi set_opponents_run_speed ENDIF IF IS_CHAR_PLAYING_ANIM triathalonr[a] WALK_civi SET_CHAR_ANIM_SPEED triathalonr[a] WALK_civi set_opponents_run_speed ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_2D triathalonr[a] stuck_x[a] stuck_y[a] 3.0 3.0 0 IF stuck_timer[a] < game_timer IF cpcounter_triathalon[a] >= get_in_water AND cpcounter_triathalon[a] <= end_swim IF IS_CHAR_IN_WATER triathalonr[a] x2 = racer_cp_x_triathalon[a] + offset_swimming_opponents_x[a] y2 = racer_cp_y_triathalon[a] + offset_swimming_opponents_y[a] IF cpcounter_triathalon[a] > get_in_water IF NOT cpcounter_triathalon[a] < 3 GET_SCRIPT_TASK_STATUS triathalonr[a] TASK_SWIM_TO_COORD task_status_triathlon[a] IF task_status_triathlon[a] = FINISHED_TASK TASK_SWIM_TO_COORD triathalonr[a] x2 y2 racer_cp_z_triathalon[a] SET_SWIM_SPEED triathalonr[a] set_opponents_swim_speed ENDIF ELSE TASK_SWIM_TO_COORD triathalonr[a] x2 y2 racer_cp_z_triathalon[a] SET_SWIM_SPEED triathalonr[a] 2.2 ENDIF ELSE IF NOT IS_CHAR_ON_SCREEN triathalonr[a] last_check_point = cpcounter_triathalon[a] - 1 IF NOT IS_POINT_ON_SCREEN racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] 10.0 SET_CHAR_COORDINATES triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] SET_CHAR_HEADING triathalonr[a] checkpoint_headings[a] // TURN_CHAR_TO_FACE_COORD triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] //racer_cp_z_triathalon[a] CLEAR_CHAR_TASKS triathalonr[a] GET_SCRIPT_TASK_STATUS triathalonr[a] TASK_SWIM_TO_COORD task_status_triathlon[a] IF task_status_triathlon[a] = FINISHED_TASK TASK_SWIM_TO_COORD triathalonr[a] x2 y2 racer_cp_z_triathalon[a] SET_SWIM_SPEED triathalonr[a] set_opponents_swim_speed ENDIF ENDIF ENDIF ENDIF ELSE IF cpcounter_triathalon[a] = end_swim // TASK_GO_STRAIGHT_TO_COORD triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a PEDMOVE_SPRINT -2 ENDIF ENDIF ENDIF IF cpcounter_triathalon[a] >= start_bike AND cpcounter_triathalon[a] <= end_bike IF NOT IS_CAR_DEAD racers_mtbike[a] // IF NOT IS_CHAR_IN_WATER triathalonr[a] SWITCH flag_make_guys_enter_bike[a] CASE 0 OPEN_SEQUENCE_TASK seq_get_on_bike TASK_GO_STRAIGHT_TO_COORD -1 coord_from_swim_to_bike_x coord_from_swim_to_bike_y coord_from_swim_to_bike_z PEDMOVE_SPRINT -2 TASK_ENTER_CAR_AS_DRIVER -1 racers_mtbike[a] -2 // TASK_CAR_DRIVE_TO_COORD -1 -1 racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] set_opponents_cycle_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS CLOSE_SEQUENCE_TASK seq_get_on_bike PERFORM_SEQUENCE_TASK triathalonr[a] seq_get_on_bike CLEAR_SEQUENCE_TASK seq_get_on_bike flag_make_guys_enter_bike[a] = 1 BREAK // jump to line after ENDSWITCH CASE 1 IF NOT IS_CHAR_ON_SCREEN triathalonr[a] IF NOT IS_POINT_ON_SCREEN racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] 10.0 IF NOT IS_CHAR_IN_CAR triathalonr[a] racers_mtbike[a] IF NOT IS_CAR_ON_SCREEN racers_mtbike[a] IF NOT IS_CHAR_IN_ANY_CAR triathalonr[a] GET_DRIVER_OF_CAR racers_mtbike[a] char_person_on_bike IF char_person_on_bike = -1 last_check_point = cpcounter_triathalon[a] - 1 // CLEAR_CHAR_TASKS triathalonr[a] WARP_CHAR_INTO_CAR triathalonr[a] racers_mtbike[a] //TURN_CAR_TO_FACE_COORD racers_mtbike[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] //racer_cp_z_triathalon[a] TASK_CAR_DRIVE_TO_COORD triathalonr[a] -1 racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] set_opponents_cycle_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS flag_make_guys_enter_bike[a] = 2 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF BREAK // jump to line after ENDSWITCH DEFAULT IF NOT IS_CHAR_ON_SCREEN triathalonr[a] IF NOT IS_POINT_ON_SCREEN racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] 10.0 IF NOT IS_CAR_ON_SCREEN racers_mtbike[a] GET_DRIVER_OF_CAR racers_mtbike[a] char_person_on_bike IF char_person_on_bike = -1 GET_SCRIPT_TASK_STATUS triathalonr[a] TASK_CAR_DRIVE_TO_COORD task_status_triathlon[a] last_check_point = cpcounter_triathalon[a] - 1 IF task_status_triathlon[a] = FINISHED_TASK // OR NOT task_status_triathlon[a] = PERFORMING_TASK IF NOT IS_CHAR_IN_CAR triathalonr[a] racers_mtbike[a] GET_DRIVER_OF_CAR racers_mtbike[a] char_person_on_bike IF char_person_on_bike = -1 WARP_CHAR_INTO_CAR triathalonr[a] racers_mtbike[a] // TURN_CAR_TO_FACE_COORD racers_mtbike[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] //racer_cp_z_triathalon[a] TASK_CAR_DRIVE_TO_COORD triathalonr[a] -1 racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] set_opponents_cycle_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS ENDIF ELSE SET_CHAR_COORDINATES triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] TURN_CAR_TO_FACE_COORD racers_mtbike[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] //racer_cp_z_triathalon[a] TASK_CAR_DRIVE_TO_COORD triathalonr[a] -1 racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] set_opponents_cycle_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF IF cpcounter_triathalon[a] >= start_run AND cpcounter_triathalon[a] <= end_run IF NOT IS_CHAR_ON_SCREEN triathalonr[a] IF NOT IS_POINT_ON_SCREEN racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] 10.0 last_check_point = cpcounter_triathalon[a] - 1 SET_CHAR_COORDINATES triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] ENDIF ENDIF ENDIF ENDIF ENDIF // END STUCKS IF IS_CHAR_IN_ANY_CAR triathalonr[a] temp_int_triathalon = cpcounter_triathalon[playaz_triathalon] + 5 STORE_CAR_CHAR_IS_IN_NO_SAVE triathalonr[a] stored_bike_triathalon // make opponents go faster if player is winning ENDIF // Warping guys if they fall 2 checkpoints behind on bike r = 0 e = 0 WHILE r < total_triathalon LVAR_INT opponent_cpcounter_triathalon_minus4 opponent_cpcounter_triathalon_minus4 = cpcounter_triathalon[r] - 2 IF cpcounter_triathalon[a] < opponent_cpcounter_triathalon_minus4 ++ e ENDIF ++ r ENDWHILE IF e > 0 last_check_point = cpcounter_triathalon[a] - 1 IF NOT IS_CHAR_DEAD triathalonr[a] IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer triathalonr[a] 30.0 30.0 30.0 0 IF NOT IS_CHAR_ON_SCREEN triathalonr[a] IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] 4.0 4.0 3.0 IF NOT IS_POINT_ON_SCREEN racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] 4.0 SET_CHAR_COORDINATES triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] CLEAR_CHAR_TASKS triathalonr[a] GET_SCRIPT_TASK_STATUS triathalonr[a] TASK_CAR_DRIVE_TO_COORD task_status_triathlon[a] IF task_status_triathlon[a] = FINISHED_TASK // OR NOT task_status_triathlon[a] = PERFORMING_TASK IF cpcounter_triathalon[a] >= start_bike AND cpcounter_triathalon[a] <= end_bike IF IS_CHAR_IN_ANY_CAR triathalonr[a] STORE_CAR_CHAR_IS_IN_NO_SAVE triathalonr[a] stored_bike_triathalon // TURN_CAR_TO_FACE_COORD stored_bike_triathalon racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] //racer_cp_z_triathalon[a] SET_CAR_HEADING stored_bike_triathalon checkpoint_headings[a] TASK_CAR_DRIVE_TO_COORD triathalonr[a] -1 racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] set_opponents_cycle_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS ELSE IF NOT IS_CAR_DEAD racers_mtbike[a] IF NOT IS_CHAR_IN_CAR triathalonr[a] racers_mtbike[a] IF NOT IS_CHAR_IN_CAR scplayer racers_mtbike[a] GET_DRIVER_OF_CAR racers_mtbike[a] char_person_on_bike IF char_person_on_bike = -1 CLEAR_CHAR_TASKS triathalonr[a] WARP_CHAR_INTO_CAR triathalonr[a] racers_mtbike[a] // TURN_CAR_TO_FACE_COORD racers_mtbike[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] //racer_cp_z_triathalon[a] SET_CAR_HEADING racers_mtbike[a] checkpoint_headings[a] TASK_CAR_DRIVE_TO_COORD triathalonr[a] -1 racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] set_opponents_cycle_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // IF RACE FLAG IS 8 ELSE // IF player shoots char, mission failed IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR triathalonr[a] scplayer AND IS_CHAR_DEAD triathalonr[a] IF NOT IS_CAR_DEAD racers_mtbike[playaz_triathalon] IF NOT HAS_CHAR_BEEN_DAMAGED_BY_CAR triathalonr[a] racers_mtbike[playaz_triathalon] PRINT_NOW RACES25 5000 1 // you have been disqualifed GOTO mission_triathalon_failed ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD triathalonr[a] ///////////////////////////////////////////// // checking if player abandons the race ///////////////////////////////////////////// IF triathalonr[a] = scplayer // cpcounter_triathalon[11] = cpcounter_triathalon[a] IF out_of_car_flag_triathalon = 0 // IF cpcounter_triathalon[a] >= start_bike // CYCLING // AND cpcounter_triathalon[a] <= end_bike // IF IS_CHAR_IN_ANY_CAR triathalonr[a] IF NOT LOCATE_CHAR_ANY_MEANS_3D triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] 600.0 600.0 600.0 0 PRINT_NOW RACES25 5000 1 //"~r~disqualified!" GOTO mission_triathalon_failed ENDIF // ENDIF // ELSE // IF NOT cpcounter_triathalon[a] = end_run // IF NOT LOCATE_CHAR_ANY_MEANS_3D triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] 1000.0 1000.0 1000.0 0 // PRINT_NOW RACES25 5000 1 //"~r~disqualified!" //// GOTO mission_triathalon_failed // ENDIF // ENDIF // ENDIF ENDIF ENDIF ////////////////////////////////////////////////// // MAKING RACERS RUN TO NEXT CHECKPOINT /////////////////////////////////////////////////// IF cpcounter_triathalon[a] > end_run IF flag_make_runner_get_past_finishingline[a] = 0 OPEN_SEQUENCE_TASK seq_get_on_bike TASK_GO_STRAIGHT_TO_COORD -1 point_after_finish_line_x point_after_finish_line_y point_after_finish_line_z PEDMOVE_SPRINT -2 TASK_TIRED -1 -2 CLOSE_SEQUENCE_TASK seq_get_on_bike PERFORM_SEQUENCE_TASK triathalonr[a] seq_get_on_bike CLEAR_SEQUENCE_TASK seq_get_on_bike flag_make_runner_get_past_finishingline[a] = 1 ENDIF ENDIF IF cpcounter_triathalon[a] >= start_run // running AND cpcounter_triathalon[a] <= end_run // CLEAR_AREA racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] 1000.0 TRUE IF LOCATE_CHAR_ANY_MEANS_3D triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] 8.0 8.0 5.0 0 IF cpcounter_triathalon[a] = start_run GOTO passed_a_checkpoint_triathalon ELSE GET_SCRIPT_TASK_STATUS triathalonr[a] TASK_FOLLOW_PATH_NODES_TO_COORD_WITH_RADIUS task_status_triathlon[a] IF task_status_triathlon[a] = FINISHED_TASK // OR NOT task_status_triathlon[a] = PERFORMING_TASK GOTO passed_a_checkpoint_triathalon ENDIF ENDIF IF cpcounter_triathalon[a] = total_checkpoints_triathalon_triathalon IF triathalonr[a] = scplayer position_triathalon++ IF position_triathalon <= 1 GOTO mission_triathalon_passed ELSE PRINT_NOW RACES_8 5000 1 // Loser! GOTO mission_triathalon_failed ENDIF ELSE TASK_CAR_TEMP_ACTION triathalonr[a] -1 TEMPACT_HANDBRAKESTRAIGHT 2000000 last_check_point = cpcounter_triathalon[a] - 1 IF NOT IS_POINT_ON_SCREEN racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] 30.0 IF NOT IS_CAR_DEAD stored_bike_triathalon TURN_CAR_TO_FACE_COORD stored_bike_triathalon checkpoints_triathalon_x[a] checkpoints_triathalon_y[a]// MUST PLACE checkpoint[1] STRAIGHT AHEAD FROM START ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF cpcounter_triathalon[a] >= end_swim // CYCLING AND cpcounter_triathalon[a] <= end_bike IF triathalonr[a] = scplayer IF cpcounter_triathalon[a] >= START_BIKE AND cpcounter_triathalon[a] <= end_bike IF LOCATE_CHAR_IN_CAR_3D triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] 40.0 40.0 40.0 0 temp_int2_tri = start_bike + 1 IF cpcounter_triathalon[a] > temp_int2_tri GET_SCRIPT_TASK_STATUS triathalonr[a] TASK_CAR_DRIVE_TO_COORD task_status_triathlon[a] IF task_status_triathlon[a] = FINISHED_TASK // OR NOT task_status_triathlon[a] = PERFORMING_TASK GOTO passed_a_checkpoint_triathalon ENDIF ELSE GOTO passed_a_checkpoint_triathalon ENDIF ENDIF ELSE IF LOCATE_CHAR_ANY_MEANS_3D triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] 8.0 8.0 5.0 0 IF cpcounter_triathalon[a] < 2 GET_SCRIPT_TASK_STATUS triathalonr[a] TASK_SWIM_TO_COORD task_status_triathlon[a] IF task_status_triathlon[a] = FINISHED_TASK // OR NOT task_status_triathlon[a] = PERFORMING_TASK GOTO passed_a_checkpoint_triathalon ENDIF ELSE GOTO passed_a_checkpoint_triathalon ENDIF ENDIF ENDIF ELSE // IF IS_CHAR_IN_ANY_CAR triathalonr[a] IF LOCATE_CHAR_IN_CAR_3D triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] 40.0 40.0 40.0 0 temp_int2_tri = start_bike + 1 IF cpcounter_triathalon[a] > temp_int2_tri GET_SCRIPT_TASK_STATUS triathalonr[a] TASK_CAR_DRIVE_TO_COORD task_status_triathlon[a] IF task_status_triathlon[a] = FINISHED_TASK // OR NOT task_status_triathlon[a] = PERFORMING_TASK GOTO passed_a_checkpoint_triathalon ENDIF ELSE GOTO passed_a_checkpoint_triathalon ENDIF ENDIF // ENDIF ENDIF ENDIF // temp_int2_tri = start_bike + 1 IF cpcounter_triathalon[a] >= get_in_water // SWIMMING AND cpcounter_triathalon[a] < end_swim IF LOCATE_CHAR_ANY_MEANS_3D triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] 8.0 8.0 5.0 0 IF cpcounter_triathalon[a] < 2 GET_SCRIPT_TASK_STATUS triathalonr[a] TASK_SWIM_TO_COORD task_status_triathlon[a] IF task_status_triathlon[a] = FINISHED_TASK // OR NOT task_status_triathlon[a] = PERFORMING_TASK GOTO passed_a_checkpoint_triathalon ENDIF ELSE GOTO passed_a_checkpoint_triathalon ENDIF ENDIF ENDIF ENDIF exit_locate_loop_triathalon: IF triathalonr[a] = scplayer //////////////////////////////// //OUT OF CAR TIMER FOR PLAYER //////////////////////////////// IF cpcounter_triathalon[a] >= start_bike AND cpcounter_triathalon[a] <= end_bike IF NOT IS_CAR_DEAD racers_mtbike[playaz_triathalon] IF NOT IS_CHAR_IN_CAR scplayer racers_mtbike[playaz_triathalon] IF out_of_car_flag_triathalon = 0 DELETE_CHECKPOINT cp_marker_triathalon REMOVE_BLIP first_blip_triathalon // REMOVE_BLIP second_blip_triathalon IF NOT IS_CAR_DEAD racers_mtbike[playaz_triathalon] ADD_BLIP_FOR_CAR racers_mtbike[playaz_triathalon] first_blip_triathalon SET_BLIP_AS_FRIENDLY first_blip_triathalon TRUE ENDIF stored_checkpoint_when_not_on_bike = a racer_cp_y_triathalon[a] += 1000.0 out_of_car_timer = game_timer + 25400 out_of_car_flag_triathalon = 1 ENDIF seconds = out_of_car_timer - game_timer seconds /= 1000 IF seconds < 1 seconds = 0 ENDIF IF out_of_car_timer < game_timer PRINT_NOW RACES20 5000 1//~r~You have been disqualified for leaving your car. GOTO mission_triathalon_failed RETURN ENDIF // PRINT_WITH_NUMBER_NOW RACES50 seconds 200 1 //You have ~1~ seconds to return to your car. ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE IF seconds = 1 PRINT_WITH_NUMBER_NOW RACE_51 seconds 200 1 //You have ~1~ second to return to your car. ELSE PRINT_WITH_NUMBER_NOW RACES50 seconds 200 1 //You have ~1~ seconds to return to your car. ENDIF IF cpcounter_triathalon[a] = total_checkpoints_triathalon_triathalon IF triathalonr[a] = scplayer position_triathalon++ IF position_triathalon <= 1 GOTO mission_triathalon_passed ELSE PRINT_NOW RACES_8 5000 1 // Loser! GOTO mission_triathalon_failed ENDIF ENDIF ENDIF ELSE IF out_of_car_flag_triathalon = 1 CLEAR_THIS_PRINT RACES50 REMOVE_BLIP first_blip_triathalon racer_cp_y_triathalon[a] -= 1000.0 c = 0 temp_int_triathalon = total_racers_mtbike - 1 ADD_BLIP_FOR_COORD racer_cp_x_triathalon[stored_checkpoint_when_not_on_bike] racer_cp_y_triathalon[stored_checkpoint_when_not_on_bike] racer_cp_z_triathalon[stored_checkpoint_when_not_on_bike] first_blip_triathalon CHANGE_BLIP_COLOUR first_blip_triathalon RED CHANGE_BLIP_DISPLAY first_blip_triathalon BLIP_ONLY CHANGE_BLIP_SCALE first_blip_triathalon 3 IF cpcounter_triathalon[stored_checkpoint_when_not_on_bike] = total_checkpoints_triathalon_triathalon_minus_1 // AND lap_cpcounter[a] = total_laps_minus_1 CREATE_CHECKPOINT CHECKPOINT_ENDTUBE racer_cp_x_triathalon[stored_checkpoint_when_not_on_bike] racer_cp_y_triathalon[stored_checkpoint_when_not_on_bike] racer_cp_z_triathalon[stored_checkpoint_when_not_on_bike] 0.0 0.0 0.0 6.0 cp_marker_triathalon ELSE temp_int_triathalon = cpcounter_triathalon[stored_checkpoint_when_not_on_bike] ++ temp_int_triathalon IF cpcounter_triathalon[stored_checkpoint_when_not_on_bike] = total_checkpoints_triathalon_triathalon_minus_1 temp_int_triathalon = 1 ENDIF CREATE_CHECKPOINT CHECKPOINT_TUBE racer_cp_x_triathalon[stored_checkpoint_when_not_on_bike] racer_cp_y_triathalon[stored_checkpoint_when_not_on_bike] racer_cp_z_triathalon[stored_checkpoint_when_not_on_bike] second_cp_triathalonx second_cp_triathalony second_cp_triathalonz 6.0 cp_marker_triathalon ENDIF out_of_car_flag_triathalon = 0 ENDIF ENDIF ELSE // if car is dead PRINT_NOW RACES24 5000 1//~r~You wrecked yer bike GOTO mission_triathalon_failed RETURN ENDIF // if the player is in cycle mode ENDIF // running temp_int2_tri = start_run +1 IF cpcounter_triathalon[a] >= start_run AND cpcounter_triathalon[a] < temp_int2_tri IF NOT IS_CAR_DEAD racers_mtbike[playaz_triathalon] IF IS_CHAR_IN_ANY_CAR scplayer IF out_of_car_flag_triathalon = 0 STORE_CAR_CHAR_IS_IN scplayer racers_mtbike[playaz_triathalon] DELETE_CHECKPOINT cp_marker_triathalon REMOVE_BLIP first_blip_triathalon // REMOVE_BLIP second_blip_triathalon IF NOT IS_CAR_DEAD racers_mtbike[playaz_triathalon] ADD_BLIP_FOR_CAR racers_mtbike[playaz_triathalon] first_blip_triathalon SET_BLIP_AS_FRIENDLY first_blip_triathalon TRUE ENDIF stored_checkpoint_when_not_on_bike = a racer_cp_y_triathalon[a] += 1000.0 out_of_car_timer = game_timer + 25400 out_of_car_flag_triathalon = 1 ENDIF seconds = out_of_car_timer - game_timer seconds /= 1000 IF seconds < 1 seconds = 0 ENDIF IF out_of_car_timer < game_timer PRINT_NOW RACES25 5000 1//~r~You have been disqualified . GOTO mission_triathalon_failed RETURN ENDIF ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE IF seconds = 1 PRINT_WITH_NUMBER_NOW RACE_49 seconds 200 1 //You have ~1~ second to return to your car. ELSE PRINT_WITH_NUMBER_NOW RACES48 seconds 200 1 //You have ~1~ seconds to return to your car. ENDIF /* IF cpcounter_triathalon[a] = total_checkpoints_triathalon_triathalon IF triathalonr[a] = scplayer position_triathalon++ IF position_triathalon = 1 GOTO mission_triathalon_passed ELSE PRINT_NOW RACES25 5000 1 //"~r~You failed to win the race!" GOTO mission_triathalon_failed ENDIF ENDIF ENDIF */ ELSE IF out_of_car_flag_triathalon = 1 CLEAR_THIS_PRINT RACES48 REMOVE_BLIP first_blip_triathalon racer_cp_y_triathalon[a] -= 1000.0 c = 0 temp_int_triathalon = total_racers_mtbike - 1 ADD_BLIP_FOR_COORD racer_cp_x_triathalon[stored_checkpoint_when_not_on_bike] racer_cp_y_triathalon[stored_checkpoint_when_not_on_bike] racer_cp_z_triathalon[stored_checkpoint_when_not_on_bike] first_blip_triathalon CHANGE_BLIP_COLOUR first_blip_triathalon RED CHANGE_BLIP_DISPLAY first_blip_triathalon BLIP_ONLY CHANGE_BLIP_SCALE first_blip_triathalon 3 IF cpcounter_triathalon[stored_checkpoint_when_not_on_bike] = total_checkpoints_triathalon_triathalon_minus_1 // AND lap_cpcounter[a] = total_laps_minus_1 CREATE_CHECKPOINT CHECKPOINT_ENDTUBE racer_cp_x_triathalon[stored_checkpoint_when_not_on_bike] racer_cp_y_triathalon[stored_checkpoint_when_not_on_bike] racer_cp_z_triathalon[stored_checkpoint_when_not_on_bike] 0.0 0.0 0.0 6.0 cp_marker_triathalon ELSE temp_int_triathalon = cpcounter_triathalon[stored_checkpoint_when_not_on_bike] ++ temp_int_triathalon IF cpcounter_triathalon[stored_checkpoint_when_not_on_bike] = total_checkpoints_triathalon_triathalon_minus_1 temp_int_triathalon = 1 ENDIF CREATE_CHECKPOINT CHECKPOINT_TUBE racer_cp_x_triathalon[stored_checkpoint_when_not_on_bike] racer_cp_y_triathalon[stored_checkpoint_when_not_on_bike] racer_cp_z_triathalon[stored_checkpoint_when_not_on_bike] second_cp_triathalonx second_cp_triathalony second_cp_triathalonz 6.0 cp_marker_triathalon ENDIF out_of_car_flag_triathalon = 0 ENDIF ENDIF ENDIF ENDIF // END RUNNING // running 2 temp_int2_tri = start_run +1 IF cpcounter_triathalon[a] >= temp_int2_tri AND cpcounter_triathalon[a] <= end_run IF NOT IS_CAR_DEAD racers_mtbike[playaz_triathalon] IF IS_CHAR_IN_ANY_CAR scplayer IF out_of_car_flag_triathalon = 0 STORE_CAR_CHAR_IS_IN scplayer racers_mtbike[playaz_triathalon] DELETE_CHECKPOINT cp_marker_triathalon REMOVE_BLIP first_blip_triathalon // REMOVE_BLIP second_blip_triathalon IF NOT IS_CAR_DEAD racers_mtbike[playaz_triathalon] ADD_BLIP_FOR_CAR racers_mtbike[playaz_triathalon] first_blip_triathalon SET_BLIP_AS_FRIENDLY first_blip_triathalon TRUE ENDIF stored_checkpoint_when_not_on_bike = a racer_cp_y_triathalon[a] += 1000.0 out_of_car_timer = game_timer + 5000 out_of_car_flag_triathalon = 1 ENDIF seconds = out_of_car_timer - game_timer seconds /= 1000 IF seconds < 1 seconds = 0 ENDIF IF out_of_car_timer < game_timer PRINT_NOW RACES25 5000 1//~r~You have been disqualified for leaving your car. GOTO mission_triathalon_failed RETURN ENDIF ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE IF seconds = 1 PRINT_WITH_NUMBER_NOW RACE_49 seconds 200 1 //You have ~1~ second to return to your car. ELSE PRINT_WITH_NUMBER_NOW RACES48 seconds 200 1 //You have ~1~ seconds to return to your car. ENDIF ELSE IF out_of_car_flag_triathalon = 1 CLEAR_THIS_PRINT RACES48 REMOVE_BLIP first_blip_triathalon racer_cp_y_triathalon[a] -= 1000.0 c = 0 temp_int_triathalon = total_racers_mtbike - 1 ADD_BLIP_FOR_COORD racer_cp_x_triathalon[stored_checkpoint_when_not_on_bike] racer_cp_y_triathalon[stored_checkpoint_when_not_on_bike] racer_cp_z_triathalon[stored_checkpoint_when_not_on_bike] first_blip_triathalon CHANGE_BLIP_COLOUR first_blip_triathalon RED CHANGE_BLIP_DISPLAY first_blip_triathalon BLIP_ONLY CHANGE_BLIP_SCALE first_blip_triathalon 3 IF cpcounter_triathalon[stored_checkpoint_when_not_on_bike] = total_checkpoints_triathalon_triathalon_minus_1 // AND lap_cpcounter[a] = total_laps_minus_1 CREATE_CHECKPOINT CHECKPOINT_ENDTUBE racer_cp_x_triathalon[stored_checkpoint_when_not_on_bike] racer_cp_y_triathalon[stored_checkpoint_when_not_on_bike] racer_cp_z_triathalon[stored_checkpoint_when_not_on_bike] 0.0 0.0 0.0 6.0 cp_marker_triathalon ELSE temp_int_triathalon = cpcounter_triathalon[stored_checkpoint_when_not_on_bike] ++ temp_int_triathalon IF cpcounter_triathalon[stored_checkpoint_when_not_on_bike] = total_checkpoints_triathalon_triathalon_minus_1 temp_int_triathalon = 1 ENDIF CREATE_CHECKPOINT CHECKPOINT_TUBE racer_cp_x_triathalon[stored_checkpoint_when_not_on_bike] racer_cp_y_triathalon[stored_checkpoint_when_not_on_bike] racer_cp_z_triathalon[stored_checkpoint_when_not_on_bike] second_cp_triathalonx second_cp_triathalony second_cp_triathalonz 6.0 cp_marker_triathalon ENDIF out_of_car_flag_triathalon = 0 ENDIF ENDIF ENDIF ENDIF // END RUNNING ENDIF // is racer is player //////////////////////////////////////////////////////// ENDIF // IF NOT IS PLAYER DEAD ++a ENDWHILE ++position_triathalon GET_GAME_TIMER game_timer // Rendering the interface. IS_WIDGET_PRESSED WIDGET_RACING // Enable the widget. LVAR_INT nElapsedSeconds nElapsedSeconds = game_timer - race_timer nElapsedSeconds /= 1000 LVAR_FLOAT f0, f1, f2 f0 =# position_triathalon f1 =# total_racers_mtbike f2 =# nElapsedSeconds SET_WIDGET_VALUE3 WIDGET_RACING f0, f1, f2 // Send the current position, max racers, and the time to the widget. SET_WIDGET_VALUE2 WIDGET_RACING 0.0 0.0 // Make sure the widget knows there's no laps to render. IF position_triathalon <= 7 //IF flag_boosting_opponents_speed = 0 set_opponents_cycle_speed = opponents_cycle_speed_fast set_opponents_swim_speed = opponents_swim_speed_fast set_opponents_run_speed = opponents_run_speed_fast IF triathalon_selection = 2 IF cpcounter_triathalon[a] = 19 OR cpcounter_triathalon[a] = 20 OR cpcounter_triathalon[a] = 37 OR cpcounter_triathalon[a] = 38 set_opponents_cycle_speed = 20.0 ENDIF ENDIF IF triathalon_selection = 2 IF cpcounter_triathalon[a] = 69 OR cpcounter_triathalon[a] = 70 OR cpcounter_triathalon[a] = 71 set_opponents_cycle_speed = 20.0 ENDIF ENDIF IF triathalon_selection = 2 IF cpcounter_triathalon[a] = 89 OR cpcounter_triathalon[a] = 90 OR cpcounter_triathalon[a] = 91 set_opponents_cycle_speed = 20.0 ENDIF ENDIF // flag_boosting_opponents_speed = 1 // ENDIF ENDIF IF position_triathalon > 7 AND position_triathalon < 9 // IF flag_boosting_opponents_speed = 1 set_opponents_cycle_speed = opponents_cycle_speed_slow set_opponents_swim_speed = opponents_swim_speed_slow set_opponents_run_speed = opponents_run_speed_slow // flag_boosting_opponents_speed = 0 // ENDIF IF triathalon_selection = 2 IF cpcounter_triathalon[a] = 19 OR cpcounter_triathalon[a] = 20 OR cpcounter_triathalon[a] = 37 OR cpcounter_triathalon[a] = 38 set_opponents_cycle_speed = 20.0 ENDIF ENDIF IF triathalon_selection = 2 IF cpcounter_triathalon[a] = 69 OR cpcounter_triathalon[a] = 70 OR cpcounter_triathalon[a] = 71 set_opponents_cycle_speed = 20.0 ENDIF ENDIF IF triathalon_selection = 2 IF cpcounter_triathalon[a] = 91 OR cpcounter_triathalon[a] = 92 OR cpcounter_triathalon[a] = 93 set_opponents_cycle_speed = 20.0 ENDIF ENDIF ENDIF IF position_triathalon =9 // IF flag_boosting_opponents_speed = 1 set_opponents_cycle_speed = opponents_cycle_speed_really_slow set_opponents_swim_speed = opponents_swim_speed_really_slow set_opponents_run_speed = opponents_run_speed_really_slow // flag_boosting_opponents_speed = 0 // ENDIF ENDIF ENDIF GOTO mission_triathalon_loop passed_a_checkpoint_triathalon: IF race_flag_triathalon = 7 race_flag_triathalon = 8 ENDIF ++ cpcounter_triathalon[a] temp_int_triathalon = cpcounter_triathalon[a] racer_cp_x_triathalon[a] = checkpoints_triathalon_x[temp_int_triathalon] racer_cp_y_triathalon[a] = checkpoints_triathalon_y[temp_int_triathalon] racer_cp_z_triathalon[a] = checkpoints_triathalon_z[temp_int_triathalon] IF triathalonr[a] = scplayer IF cpcounter_triathalon[a] >= total_checkpoints_triathalon_triathalon position_triathalon++ IF position_triathalon <= 1 GOTO mission_triathalon_passed ELSE PRINT_NOW RACES_8 5000 1 // Loser! GOTO mission_triathalon_failed ENDIF ENDIF // help text during transitions IF flag_help_text_triath = 0 // run into the pool and swim IF cpcounter_triathalon[a] = start_swim PRINT_HELP TRAI2 flag_help_text_triath = 1 ENDIF ENDIF IF flag_help_text_triath = 1 // get on the bike IF cpcounter_triathalon[a] = get_on_bike PRINT_HELP TRAI3 flag_help_text_triath = 2 ENDIF ENDIF IF flag_help_text_triath = 2 // get off the bike and run IF cpcounter_triathalon[a] = start_run PRINT_HELP TRAI4 flag_help_text_triath = 3 ENDIF ENDIF ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP first_blip_triathalon ++ temp_int_triathalon LVAR_FLOAT second_cp_triathalonx second_cp_triathalony second_cp_triathalonz second_cp_triathalonx = checkpoints_triathalon_x[temp_int_triathalon] second_cp_triathalony = checkpoints_triathalon_y[temp_int_triathalon] second_cp_triathalonz = checkpoints_triathalon_z[temp_int_triathalon] ADD_BLIP_FOR_COORD racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] first_blip_triathalon CHANGE_BLIP_COLOUR first_blip_triathalon RED CHANGE_BLIP_DISPLAY first_blip_triathalon BLIP_ONLY CHANGE_BLIP_SCALE first_blip_triathalon 3 IF race_flag_triathalon = 1 //MAKE THE SCRIPT COMPILE CREATE_CHECKPOINT CHECKPOINT_TUBE racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] second_cp_triathalonx second_cp_triathalony second_cp_triathalonz 6.0 cp_marker_triathalon ENDIF DELETE_CHECKPOINT cp_marker_triathalon IF cpcounter_triathalon[a] < total_checkpoints_triathalon_triathalon_minus_1 LVAR_INT cp_marker_triathalon CREATE_CHECKPOINT CHECKPOINT_TUBE racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] second_cp_triathalonx second_cp_triathalony second_cp_triathalonz 6.0 cp_marker_triathalon ELSE CREATE_CHECKPOINT CHECKPOINT_ENDTUBE racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] second_cp_triathalonx second_cp_triathalony second_cp_triathalonz 6.0 cp_marker_triathalon ENDIF /* temp_int_triathalon = get_in_water + 4 IF cpcounter_triathalon[a] = temp_int_triathalon CREATE_CAR racers_car_model_triathalon[0] checkpoints_triathalon_x[get_on_bike] checkpoints_triathalon_y[get_on_bike] checkpoints_triathalon_z[get_on_bike] stored_bike_triathalon // start of cycling temp_int_triathalon = get_on_bike - 1 IF NOT IS_CHAR_DEAD flag_girl_triathalon GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon -4.0435 6.5755 1.0 x y z SET_CHAR_COORDINATES flag_girl_triathalon x y z TASK_TURN_CHAR_TO_FACE_COORD flag_girl_triathalon checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] ENDIF IF NOT IS_CHAR_DEAD spectator_triathalon[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon -5.6392 2.9435 1.0 x y z SET_CHAR_COORDINATES spectator_triathalon[0] x y z TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[0] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] ENDIF IF NOT IS_CHAR_DEAD spectator_triathalon[1] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon -6.0071 -2.0778 1.0 x y z SET_CHAR_COORDINATES spectator_triathalon[1] x y z TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[1] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] ENDIF IF NOT IS_CHAR_DEAD spectator_triathalon[2] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon -7.6039 -5.0807 1.0 x y z SET_CHAR_COORDINATES spectator_triathalon[2] x y z TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[2] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] ENDIF IF NOT IS_CHAR_DEAD spectator_triathalon[3] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon -7.0724 -6.4057 1.0 x y z SET_CHAR_COORDINATES spectator_triathalon[3] x y z TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[3] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] ENDIF IF NOT IS_CHAR_DEAD spectator_triathalon[4] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon -5.9988 -13.553 1.0 x y z SET_CHAR_COORDINATES spectator_triathalon[4] x y z TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[4] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] ENDIF IF NOT IS_CHAR_DEAD spectator_triathalon[5] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon 6.0730 -15.2059 1.0 x y z SET_CHAR_COORDINATES spectator_triathalon[5] x y z TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[5] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] ENDIF IF NOT IS_CHAR_DEAD spectator_triathalon[6] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon 7.2639 -12.9933 1.0 x y z SET_CHAR_COORDINATES spectator_triathalon[6] x y z TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[6] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] ENDIF IF NOT IS_CHAR_DEAD spectator_triathalon[7] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon 5.8429 -7.7069 1.0 x y z SET_CHAR_COORDINATES spectator_triathalon[7] x y z TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[7] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] ENDIF IF NOT IS_CHAR_DEAD spectator_triathalon[8] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon 8.4135 -3.7971 1.0 x y z SET_CHAR_COORDINATES spectator_triathalon[8] x y z TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[8] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] ENDIF IF NOT IS_CHAR_DEAD spectator_triathalon[9] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon 6.2507 0.3634 1.0 x y z SET_CHAR_COORDINATES spectator_triathalon[9] x y z TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[9] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] ENDIF IF NOT IS_CHAR_DEAD spectator_triathalon[10] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon 8.6397 2.4190 1.0 x y z SET_CHAR_COORDINATES spectator_triathalon[10] x y z TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[10] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] ENDIF DELETE_CAR stored_bike_triathalon ENDIF */ IF cpcounter_triathalon[a] = 3 DELETE_CHAR flag_girl_triathalon DELETE_CHAR spectator_triathalon[0] DELETE_CHAR spectator_triathalon[1] DELETE_CHAR spectator_triathalon[2] DELETE_CHAR spectator_triathalon[3] DELETE_CHAR spectator_triathalon[4] DELETE_CHAR spectator_triathalon[5] DELETE_CHAR spectator_triathalon[6] DELETE_CHAR spectator_triathalon[7] DELETE_CHAR spectator_triathalon[8] DELETE_CHAR spectator_triathalon[9] DELETE_CHAR spectator_triathalon[10] ENDIF temp_int_triathalon = end_bike - 3 IF cpcounter_triathalon[a] = temp_int_triathalon CREATE_CAR racers_car_model_triathalon[0] checkpoints_triathalon_x[get_on_foot] checkpoints_triathalon_y[get_on_foot] checkpoints_triathalon_z[get_on_foot] stored_bike_triathalon // start of cycling temp_int_triathalon = end_bike - 1 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon -4.0435 6.5755 0.8 x y z CREATE_RANDOM_CHAR x y z flag_girl_triathalon TASK_TURN_CHAR_TO_FACE_COORD flag_girl_triathalon checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[end_bike] checkpoints_triathalon_z[end_bike] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon -5.6392 2.9435 0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[0] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[0] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[end_bike] checkpoints_triathalon_z[end_bike] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon -6.0071 -2.0778 0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[1] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[1] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon -7.6039 -5.0807 0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[2] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[2] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon -7.0724 -6.4057 0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[3] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[3] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon -5.9988 -13.553 0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[4] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[4] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon 6.0730 -15.2059 0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[5] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[5] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon 7.2639 -12.9933 0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[6] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[6] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon 5.8429 -7.7069 0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[7] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[7] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon 8.4135 -3.7971 0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[8] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[8] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon 6.2507 0.3634 0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[9] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[9] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_triathalon 8.6397 2.4190 0.8 x y z CREATE_RANDOM_CHAR x y z spectator_triathalon[10] TASK_TURN_CHAR_TO_FACE_COORD spectator_triathalon[10] checkpoints_triathalon_x[temp_int_triathalon] checkpoints_triathalon_y[temp_int_triathalon] checkpoints_triathalon_z[temp_int_triathalon] DELETE_CAR stored_bike_triathalon ENDIF temp_int2_tri =end_bike +2 IF cpcounter_triathalon[a] = temp_int2_tri MARK_CHAR_AS_NO_LONGER_NEEDED flag_girl_triathalon MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[0] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[1] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[2] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[3] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[4] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[5] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[6] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[7] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[8] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[9] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[10] ENDIF IF cpcounter_triathalon[a] = 21 // so mission does not fail if player goes over puddle IF NOT IS_CAR_DEAD racers_mtbike[playaz_triathalon] SET_CAR_WATERTIGHT racers_mtbike[playaz_triathalon] TRUE ENDIF ENDIF IF cpcounter_triathalon[a] = 22 // so mission does not fail if player goes over puddle IF NOT IS_CAR_DEAD racers_mtbike[playaz_triathalon] SET_CAR_WATERTIGHT racers_mtbike[playaz_triathalon] FALSE ENDIF ENDIF temp_int2_tri =start_run +2 IF cpcounter_triathalon[a] = temp_int2_tri MARK_CHAR_AS_NO_LONGER_NEEDED flag_girl_triathalon MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[0] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[1] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[2] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[3] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[4] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[5] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[6] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[7] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[8] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[9] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[10] ENDIF IF cpcounter_triathalon[a] = start_run IF NOT IS_CAR_DEAD racers_mtbike[playaz_triathalon] IF IS_CHAR_IN_CAR scplayer racers_mtbike[playaz_triathalon] TASK_CAR_TEMP_ACTION scplayer racers_mtbike[playaz_triathalon] TEMPACT_HANDBRAKESTRAIGHT 2000000 ENDIF ENDIF ENDIF ELSE IF NOT cpcounter_triathalon[a] >= total_checkpoints_triathalon_triathalon // swimming to CLEAR_CHAR_TASKS triathalonr[a] IF cpcounter_triathalon[a] = start_swim TASK_GO_STRAIGHT_TO_COORD triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a PEDMOVE_SPRINT -2 IF IS_CHAR_PLAYING_ANIM triathalonr[a] sprint_panic SET_CHAR_ANIM_SPEED triathalonr[a] sprint_panic set_opponents_run_speed ENDIF IF IS_CHAR_PLAYING_ANIM triathalonr[a] run_civi SET_CHAR_ANIM_SPEED triathalonr[a] run_civi set_opponents_run_speed ENDIF IF IS_CHAR_PLAYING_ANIM triathalonr[a] WALK_civi SET_CHAR_ANIM_SPEED triathalonr[a] WALK_civi set_opponents_run_speed ENDIF GOTO exit_locate_loop_triathalon ENDIF IF cpcounter_triathalon[a] > start_swim AND cpcounter_triathalon[a] <= end_swim IF IS_CHAR_IN_WATER triathalonr[a] x2 = racer_cp_x_triathalon[a] + offset_swimming_opponents_x[a] y2 = racer_cp_y_triathalon[a] + offset_swimming_opponents_y[a] TASK_SWIM_TO_COORD triathalonr[a] x2 y2 racer_cp_z_triathalon[a] SET_SWIM_SPEED triathalonr[a] set_opponents_swim_speed IF cpcounter_triathalon[a] = end_swim //TASK_GO_STRAIGHT_TO_COORD triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a PEDMOVE_SPRINT -2 IF flag_make_guys_enter_bike[a] = 0 IF NOT IS_CAR_DEAD racers_mtbike[a] OPEN_SEQUENCE_TASK seq_get_on_bike TASK_GO_STRAIGHT_TO_COORD -1 coord_from_swim_to_bike_x coord_from_swim_to_bike_y coord_from_swim_to_bike_z PEDMOVE_SPRINT -2 TASK_ENTER_CAR_AS_DRIVER -1 racers_mtbike[a] -2 // TASK_CAR_DRIVE_TO_COORD -1 -1 racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] set_opponents_cycle_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS CLOSE_SEQUENCE_TASK seq_get_on_bike PERFORM_SEQUENCE_TASK triathalonr[a] seq_get_on_bike CLEAR_SEQUENCE_TASK seq_get_on_bike flag_make_guys_enter_bike[a] = 1 ENDIF ENDIF ENDIF // TASK_SWIM_TO_COORD triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] ELSE IF cpcounter_triathalon[a] = 2 TASK_GO_STRAIGHT_TO_COORD triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a PEDMOVE_SPRINT -2 ENDIF /* OPEN_SEQUENCE_TASK seq_get_on_bike TASK_GO_STRAIGHT_TO_COORD -1 coord_from_swim_to_bike_x coord_from_swim_to_bike_y coord_from_swim_to_bike_z PEDMOVE_RUN -2 TASK_ENTER_CAR_AS_DRIVER -1 racers_mtbike[a] -2 // TASK_CAR_DRIVE_TO_COORD -1 -1 racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] set_opponents_cycle_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS CLOSE_SEQUENCE_TASK seq_get_on_bike PERFORM_SEQUENCE_TASK triathalonr[a] seq_get_on_bike CLEAR_SEQUENCE_TASK seq_get_on_bike flag_make_guys_enter_bike[a] = 1 */ ENDIF GOTO exit_locate_loop_triathalon // TASK_GO_STRAIGHT_TO_COORD triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a PEDMOVE_SPRINT -2 ENDIF //get_on_bike /* IF cpcounter_triathalon[a] = 7 // x2 = racer_cp_x_triathalon[a] + offset_swimming_opponents_x[a] // y2 = racer_cp_y_triathalon[a] + offset_swimming_opponents_y[a] TASK_SWIM_TO_COORD triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] GOTO exit_locate_loop_triathalon ENDIF */ IF cpcounter_triathalon[a] >= start_bike AND cpcounter_triathalon[a] <= end_bike IF flag_make_guys_enter_bike[a] > 0 TASK_CAR_DRIVE_TO_COORD triathalonr[a] -1 racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] set_opponents_cycle_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS ENDIF GOTO exit_locate_loop_triathalon ENDIF IF cpcounter_triathalon[a] >= start_run AND cpcounter_triathalon[a] <= end_run IF cpcounter_triathalon[a] = start_run // SET_FOLLOW_NODE_THRESHOLD_DISTANCE triathalonr[a] 20.0 // TASK_FOLLOW_PATH_NODES_TO_COORD triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] PEDMOVE_SPRINT -2 TASK_GO_STRAIGHT_TO_COORD triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] PEDMOVE_SPRINT -2 ELSE SET_FOLLOW_NODE_THRESHOLD_DISTANCE triathalonr[a] 20.0 // TASK_FOLLOW_PATH_NODES_TO_COORD triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] PEDMOVE_SPRINT -2 TASK_FOLLOW_PATH_NODES_TO_COORD_WITH_RADIUS triathalonr[a] racer_cp_x_triathalon[a] racer_cp_y_triathalon[a] racer_cp_z_triathalon[a] PEDMOVE_SPRINT -2 8.0 // TASK_FOLLOW_PATH_NODES_TO_COORD_WITH_RADIUS CharID X Y Z MoveState Time Radius ENDIF GOTO exit_locate_loop_triathalon ENDIF ENDIF ENDIF //GOTO exit_locate_loop_triathalon GOTO exit_locate_loop_triathalon // Mission triathalon failed mission_triathalon_failed: PRINT_BIG RACEFA 5000 1 RETURN // mission triathalon passed mission_triathalon_passed: CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 2 PRINT_BIG RACES18 5000 1 // Winner! IF triathalon_selection =1 PRINT_WITH_NUMBER TRAI1 10000 5000 2 //"YOU HAVE WON: $~1~" // PRINT_WITH_2_NUMBERS_NOW TIME mins seconds 5000 1 ADD_SCORE player1 10000 ENDIF IF triathalon_selection =2 PRINT_WITH_NUMBER TRAI1 20000 5000 2 //"YOU HAVE WON: $~1~" // PRINT_WITH_2_NUMBERS_NOW TIME mins seconds 5000 1 ADD_SCORE player1 20000 ENDIF triathalon_timer = triathalon_timer / 1000 //REGISTER_FASTEST_TIME 12 triathalon_timer mins = triathalon_timer / 60 temp_int_triathalon = mins * 60 seconds = triathalon_timer - temp_int_triathalon IF flag_triathalon_passed_1stime = 0 WRITE_LOG "UNLOCK_ACHIEVEMENT BEAT_THE_COCK" IF triathalon_selection =2 // SET_PLAYER_NEVER_GETS_TIRED Player1 TRUE SET_INT_STAT STAMINA 1000 ENDIF REGISTER_ODDJOB_MISSION_PASSED // PLAYER_MADE_PROGRESS 1 flag_triathalon_passed_1stime = 1 ENDIF RETURN // mission cleanup mission_cleanup_triathalon: flag_player_on_mission = 0 MARK_MODEL_AS_NO_LONGER_NEEDED racer_model_triathalon[0] MARK_MODEL_AS_NO_LONGER_NEEDED racer_model_triathalon[1] MARK_MODEL_AS_NO_LONGER_NEEDED racer_model_triathalon[2] MARK_MODEL_AS_NO_LONGER_NEEDED racer_model_triathalon[3] MARK_MODEL_AS_NO_LONGER_NEEDED racer_model_triathalon[4] MARK_MODEL_AS_NO_LONGER_NEEDED racer_model_triathalon[5] MARK_MODEL_AS_NO_LONGER_NEEDED racer_model_triathalon[6] MARK_MODEL_AS_NO_LONGER_NEEDED racer_model_triathalon[7] MARK_MODEL_AS_NO_LONGER_NEEDED racer_model_triathalon[8] MARK_MODEL_AS_NO_LONGER_NEEDED racer_model_triathalon[9] MARK_MODEL_AS_NO_LONGER_NEEDED racer_model_triathalon[10] MARK_MODEL_AS_NO_LONGER_NEEDED racer_model_triathalon[11] MARK_MODEL_AS_NO_LONGER_NEEDED wmybe MARK_MODEL_AS_NO_LONGER_NEEDED bmybe MARK_MODEL_AS_NO_LONGER_NEEDED hmybe MARK_MODEL_AS_NO_LONGER_NEEDED wmybell MARK_MODEL_AS_NO_LONGER_NEEDED mtbike MARK_CHAR_AS_NO_LONGER_NEEDED flag_girl_triathalon MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[0] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[1] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[2] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[3] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[4] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[5] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[6] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[7] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[8] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[9] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_triathalon[10] DISPLAY_CAR_NAMES TRUE //CLEAR_ONSCREEN_TIMER triathalon_timer REMOVE_BLIP first_blip_triathalon GET_GAME_TIMER timer_mobile_start DISABLE_ALL_ENTRY_EXITS FALSE //SWITCH_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 // SWITCH_PED_ROADS_BACK_TO_ORIGINAL -5000.5276 -5000.4624 -1000.8299 5000.5276 5000.4624 1000.82993 SET_CAR_DENSITY_MULTIPLIER 1.0 SET_PED_DENSITY_MULTIPLIER 1.0 SET_MESSAGE_FORMATTING FALSE 380 464 USE_TEXT_COMMANDS FALSE MISSION_HAS_FINISHED RETURN } MISSION_START // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // ************************************* courier.sc **************************************** // ****************************** bike courier parked vehicle ****************************** // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** SCRIPT_NAME BCOUR // Mission start stuff GOSUB mission_start_bcou IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_bcou_failed ENDIF GOSUB mission_cleanup_bcou MISSION_END { // Variables for mission LVAR_INT bcou_helpflag LVAR_INT bcou_visible // Peds, vehicles and sequences LVAR_INT bcou_bike LVAR_INT bcou_package LVAR_INT bcou_heavy LVAR_INT bcou_emptydm //blips LVAR_INT bcou_bikeB LVAR_INT bcou_homeB LVAR_INT dropoffB[30] LVAR_INT pickupB //arrays LVAR_INT dropoffdone[30] LVAR_FLOAT SFdropoffX[30] LVAR_FLOAT SFdropoffY[30] LVAR_FLOAT SFdropoffZ[30] LVAR_FLOAT LAdropoffX[30] LVAR_FLOAT LAdropoffY[30] LVAR_FLOAT LAdropoffZ[30] LVAR_FLOAT LVdropoffX[30] LVAR_FLOAT LVdropoffY[30] LVAR_FLOAT LVdropoffZ[30] LVAR_INT pickupdone[10] LVAR_FLOAT SFpickupX[30] LVAR_FLOAT SFpickupY[30] LVAR_FLOAT SFpickupZ[30] LVAR_FLOAT LApickupX[30] LVAR_FLOAT LApickupY[30] LVAR_FLOAT LApickupZ[30] LVAR_FLOAT LVpickupX[30] LVAR_FLOAT LVpickupY[30] LVAR_FLOAT LVpickupZ[30] LVAR_INT bcou_delivered[30] // array of successful / unsuccessful delivery slots LVAR_INT dropoffcorona[30] LVAR_FLOAT coronaz[30] //Various Ints LVAR_INT bcou_packagesdelivered LVAR_INT dropoffIndex LVAR_INT pickupIndex LVAR_INT bcou_progress LVAR_INT bcou_blipswap LVAR_INT bcou_cutscene LVAR_INT bcou_ctskipneeded LVAR_INT bcou_paymentseq VAR_INT bcou_bikeostimer // off_biketimer LVAR_INT timeradjustment LVAR_INT lowtimeradjustment VAR_INT bcou_timelimit // limit for particular run LVAR_INT bcou_backonbikecheck LVAR_INT bcou_biketimer LVAR_INT bcou_totalpackagesplus LVAR_INT bcou_packagestodeliver LVAR_INT bcou_packagesthistrip LVAR_INT bcou_totalpackages LVAR_INT dropoffIndexOrigin LVAR_INT bcou_SFrunscompleted LVAR_INT bcou_LArunscompleted LVAR_INT bcou_LVrunscompleted LVAR_INT drugs_thrown[30] VAR_INT bags_on_bike LVAR_INT old_bag LVAR_FLOAT courplayer1_facing_this_direction LVAR_FLOAT drugs_lobx LVAR_FLOAT drugs_loby LVAR_INT this_bag_left[30] LVAR_INT drugs_fx[30] LVAR_INT drug_been_thrown_previously LVAR_FLOAT playerx playery playerz LVAR_INT initial_index LVAR_INT outofbags LVAR_INT bcou_menuonscreen LVAR_INT row_counter LVAR_INT menudelay LVAR_INT contact_delete LVAR_INT bcou_paymentskip LVAR_INT time_bonus bag_bonus total_bonus LVAR_INT bcou_city LVAR_INT maxpackages LVAR_INT packageslefttodeliver LVAR_INT bcou_countbegun LVAR_FLOAT createX createY createZ LVAR_INT proximity_flag checked_proximity LVAR_INT pass_check LVAR_INT sfx_throw LVAR_INT left_shoot_was_down LVAR_INT right_shoot_was_down // **************************************** Mission Start ********************************** mission_start_bcou: IF NOT IS_CHAR_DEAD scplayer GET_CITY_PLAYER_IS_IN player1 bcou_city ENDIF IF bcou_city = LEVEL_LOSANGELES IF courierLA_passed_once = 0 REGISTER_MISSION_GIVEN ENDIF ENDIF DISPLAY_RADAR 5 // PATHING IGNORE SWITCHED OFF DISPLAY_RADAR 4 // PATHING STOP AT ROAD IF bcou_city = LEVEL_LASVEGAS IF courierLV_passed_once = 0 REGISTER_MISSION_GIVEN ENDIF ENDIF IF bcou_city = LEVEL_SANFRANCISCO IF courierSF_passed_once = 0 REGISTER_MISSION_GIVEN ENDIF ENDIF flag_player_on_mission = 1 //flag_player_on_mission = 0 WAIT 0 // ****************************************START OF CUTSCENE******************************** // fades the screen in /* LOAD_CUTSCENE casino_1 WHILE NOT HAS_CUTSCENE_LOADED WAIT 0 ENDWHILE START_CUTSCENE DO_FADE 1000 FADE_IN WHILE NOT HAS_CUTSCENE_FINISHED WAIT 0 ENDWHILE CLEAR_CUTSCENE DO_FADE 0 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE */ // ****************************************END OF CUTSCENE********************************** WAIT 0 LOAD_MISSION_TEXT BCOU SET_FADING_COLOUR 0 0 0 //WAIT 500 CREATE_OBJECT kmb_packet -2492.5083 0.5813 24.7593 bcou_package IF bcou_progress = -13 CREATE_CHAR PEDTYPE_MISSION1 WMYdrug -2455.6621 -105.3974 26.5568 bcou_heavy ENDIF //DO_FADE 500 FADE_IN // request models REQUEST_MODEL WAYFARER REQUEST_MODEL WMYdrug REQUEST_ANIMATION SMOKING LOAD_ALL_MODELS_NOW //REQUEST_MODEL SATCHEL //WHILE NOT HAS_MODEL_LOADED SATCHEL // WAIT 0 //ENDWHILE WHILE NOT HAS_MODEL_LOADED WAYFARER OR NOT HAS_MODEL_LOADED WMYdrug OR NOT HAS_ANIMATION_LOADED SMOKING WAIT 0 ENDWHILE IF NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 ON ENDIF // ************************************ Declare Variables ********************************* //flags bcou_countbegun = 0 sfx_throw = 0 proximity_flag = 0 // 0 means outwith 5 metres, 1 means close checked_proximity = 0 menudelay = 0 contact_delete = 0 bcou_helpflag = 0 time_bonus = 0 bag_bonus = 0 total_bonus = 0 dropoffIndex = 0 pickupIndex = 0 bcou_packagesdelivered = 0 bcou_progress = 0 //bcou_progress = -1 // skip old cutscene stuff bcou_blipswap = 0 bcou_cutscene = 0 bcou_ctskipneeded = 0 bcou_paymentskip = 0 bcou_SFrunscompleted = 0 bcou_LArunscompleted = 0 bcou_LVrunscompleted = 0 SFpickupX[0] = -2594.8164 SFpickupY[0] = 52.5992 SFpickupZ[0] = 3.3359 //New SF home area //SFpickupX[0] = -2590.4607 //SFpickupY[0] = 73.2006 //SFpickupZ[0] = 3.4097 //Old Home area SFdropoffX[0] = -2797.9521 SFdropoffY[0] = 209.7299 SFdropoffZ[0] = 6.1963 SFdropoffX[1] = -2492.7710 SFdropoffY[1] = -196.6625 SFdropoffZ[1] = 24.6236 SFdropoffX[2] = -2611.9885 SFdropoffY[2] = -110.7328 SFdropoffZ[2] = 3.331 // End of sf run 1 SFdropoffX[3] = -2176.3923 SFdropoffY[3] = -41.7131 SFdropoffZ[3] = 34.3125 SFdropoffX[4] = -2243.8965 // SFdropoffY[4] = 603.6998 SFdropoffZ[4] = 40.1216 //SFdropoffX[5] = -1576.8414 //SFdropoffY[5] = 681.6105 //SFdropoffZ[5] = 6.1874 SFdropoffX[5] = -1569.9940 SFdropoffY[5] = 662.3286 SFdropoffZ[5] = 6.1874 SFdropoffX[6] = -2756.3708 SFdropoffY[6] = 379.1574 SFdropoffZ[6] = 3.3281 // End of sf run 2 SFdropoffX[7] = -2609.9016 SFdropoffY[7] = 131.9432 SFdropoffZ[7] = 3.3260 SFdropoffX[8] = -2743.8582 SFdropoffY[8] = 761.4077 SFdropoffZ[8] = 53.3828 SFdropoffX[9] = -2600.5430 SFdropoffY[9] = 980.7458 SFdropoffZ[9] = 77.2676 SFdropoffX[10] = -2153.9590 SFdropoffY[10] = 716.1611 SFdropoffZ[10] = 68.5511 SFdropoffX[11] = -2153.6042 SFdropoffY[11] = 251.9152 SFdropoffZ[11] = 34.3125 // End of sf run 3 SFdropoffX[12] = -2808.2854 SFdropoffY[12] = -340.2412 SFdropoffZ[12] = 6.1797 SFdropoffX[13] = -2428.8459 SFdropoffY[13] = -164.1249 SFdropoffZ[13] = 34.3125 SFdropoffX[14] = -1984.2133 SFdropoffY[14] = 128.7572 SFdropoffZ[14] = 26.6797 SFdropoffX[15] = -1888.4598 SFdropoffY[15] = 819.6346 SFdropoffZ[15] = 34.1797 SFdropoffX[16] = -1503.3295 SFdropoffY[16] = 919.9264 SFdropoffZ[16] = 6.1776 SFdropoffX[17] = -2533.8845 SFdropoffY[17] = 987.9146 SFdropoffZ[17] = 77.3017 // End of sf run 4 LApickupX[0] = 1346.0194 LApickupY[0] = -1741.7805 LApickupZ[0] = 12.397 //Home area LAdropoffX[0] = 1286.7687 LAdropoffY[0] = -1676.1659 LAdropoffZ[0] = 12.5625 LAdropoffX[1] = 1544.0627 LAdropoffY[1] = -1675.7537 LAdropoffZ[1] = 12.5600 LAdropoffX[2] = 1320.0966 LAdropoffY[2] = -1795.0992 LAdropoffZ[2] = 12.5391 // End of LA run 1 LAdropoffX[3] = 1614.2609 LAdropoffY[3] = -1885.7557 LAdropoffZ[3] = 12.5536 LAdropoffX[4] = 2009.1731 LAdropoffY[4] = -1716.9135 LAdropoffZ[4] = 12.5469 LAdropoffX[5] = 1256.5126 LAdropoffY[5] = -1010.9740 LAdropoffZ[5] = 32.9002 LAdropoffX[6] = 1016.6732 LAdropoffY[6] = -1508.7825 LAdropoffZ[6] = 12.5410 // End of LA run 2 LAdropoffX[7] = 1286.7687 LAdropoffY[7] = -1676.1659 LAdropoffZ[7] = 12.5625 LAdropoffX[8] = 1544.0627 LAdropoffY[8] = -1675.7537 LAdropoffZ[8] = 12.5600 LAdropoffX[9] = 1320.0966 LAdropoffY[9] = -1795.0992 LAdropoffZ[9] = 12.5391 LAdropoffX[10] = 1614.2609 LAdropoffY[10] = -1885.7557 LAdropoffZ[10] = 12.5536 LAdropoffX[11] = 2009.1731 LAdropoffY[11] = -1716.9135 LAdropoffZ[11] = 12.5469 // End of LA run 3 //beginning of LA run 4 LAdropoffX[12] = 2865.3887 LAdropoffY[12] = -1438.9569 LAdropoffZ[12] = 9.9659 LAdropoffX[13] = 2740.5605 LAdropoffY[13] = -2103.4417 LAdropoffZ[13] = 11.1221 LAdropoffX[14] = 1346.4553 LAdropoffY[14] = -989.3849 LAdropoffZ[14] = 28.0294 LAdropoffX[15] = 150.4926 LAdropoffY[15] = -1945.3845 LAdropoffZ[15] = 2.7657 LAdropoffX[16] = 378.0941 LAdropoffY[16] = -2053.5847 LAdropoffZ[16] = 7.0156 LAdropoffX[17] = 804.5734 LAdropoffY[17] = -1020.7144 LAdropoffZ[17] = 25.6819 //End of LA run 4 LVpickupX[0] = 1904.6807 LVpickupY[0] = 2096.1704 LVpickupZ[0] = 9.8203 //Home area LVdropoffX[0] = 1698.4038 LVdropoffY[0] = 2054.8977 LVdropoffZ[0] = 9.8203 LVdropoffX[1] = 2159.8325 LVdropoffY[1] = 2066.7275 LVdropoffZ[1] = 9.8125 LVdropoffX[2] = 1935.7007 LVdropoffY[2] = 2158.4639 LVdropoffZ[2] = 9.8203 // End of LV run 1 LVdropoffX[3] = 1654.3308 LVdropoffY[3] = 1803.8123 LVdropoffZ[3] = 9.8125 LVdropoffX[4] = 2083.3247 LVdropoffY[4] = 1503.7544 LVdropoffZ[4] = 9.8125 LVdropoffX[5] = 1720.1105 LVdropoffY[5] = 1298.5477 LVdropoffZ[5] = 9.8203 LVdropoffX[6] = 2233.8367 LVdropoffY[6] = 1282.1949 LVdropoffZ[6] = 9.8203 // End of LV run 2 LVdropoffX[7] = 1698.4038 LVdropoffY[7] = 2063.9690 LVdropoffZ[7] = 9.8203 LVdropoffX[8] = 2159.8325 LVdropoffY[8] = 2066.7275 LVdropoffZ[8] = 9.8125 LVdropoffX[9] = 1935.7007 LVdropoffY[9] = 2158.4639 LVdropoffZ[9] = 9.8203 LVdropoffX[10] = 1654.3308 LVdropoffY[10] = 1803.8123 LVdropoffZ[10] = 9.8125 LVdropoffX[11] = 2083.3247 LVdropoffY[11] = 1503.7544 LVdropoffZ[11] = 9.8125 // End of LV run 3 LVdropoffX[12] = 1917.7623 LVdropoffY[12] = 2768.8735 LVdropoffZ[12] = 9.8203 LVdropoffX[13] = 2344.5691 LVdropoffY[13] = 2779.9653 LVdropoffZ[13] = 9.8203 LVdropoffX[14] = 973.1230 LVdropoffY[14] = 1782.2382 LVdropoffZ[14] = 7.6562 LVdropoffX[15] = 2346.5200 LVdropoffY[15] = 2296.9734 LVdropoffZ[15] = 7.1478 LVdropoffX[16] = 1488.1754 //home of the bandits LVdropoffY[16] = 2148.4744 LVdropoffZ[16] = 9.8203 LVdropoffX[17] = 1104.6967 // stadium LVdropoffY[17] = 1648.0645 LVdropoffZ[17] = 4.8273 // End of LV run 4 //Not in array on purpose for testing bcou_delivered[0] = 0 bcou_delivered[1] = 0 bcou_delivered[2] = 0 bcou_delivered[3] = 0 bcou_delivered[4] = 0 bcou_delivered[5] = 0 bcou_delivered[6] = 0 bcou_delivered[7] = 0 bcou_delivered[8] = 0 bcou_delivered[9] = 0 bcou_delivered[10] = 0 bcou_delivered[11] = 0 bcou_delivered[12] = 0 bcou_delivered[13] = 0 bcou_delivered[14] = 0 bcou_delivered[15] = 0 bcou_delivered[16] = 0 bcou_delivered[17] = 0 bcou_delivered[18] = 0 bcou_delivered[19] = 0 bcou_delivered[20] = 0 bcou_delivered[21] = 0 bcou_delivered[22] = 0 bcou_delivered[23] = 0 bcou_delivered[24] = 0 bcou_delivered[25] = 0 bcou_delivered[26] = 0 bcou_delivered[27] = 0 bcou_delivered[28] = 0 bcou_backonbikecheck = 99 left_shoot_was_down = 0 right_shoot_was_down = 0 // **************************************************************************************** //WRITE_DEBUG script_running //CREATE_OBJECT kmb_packet -2492.5083 0.5813 24.7593 bcou_package //CREATE_CAR WAYFARER -2485.6458 7.4586 24.6316 bcou_bike //bcourier office coords //SET_CAR_HEADING bcou_bike 159.0957 //CHANGE_CAR_COLOUR bcou_bike 55 1 //WARP_CHAR_INTO_CAR scplayer bcou_bike //FORCE_CAR_LIGHTS bcou_bike FORCE_CAR_LIGHTS_OFF //SET_CHAR_COORDINATES scplayer -2484.2043 49.2125 26.4078 SET_PLAYER_CAN_DO_DRIVE_BY player1 FALSE IF NOT IS_PLAYER_PLAYING player1 GOTO mission_bcou_failed ENDIF //PRINT_BIG BCOU_1 1000 1 //WAIT 4000 //SET_CAMERA_BEHIND_PLAYER //RESTORE_CAMERA_JUMPCUT IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN scplayer bcou_bike ENDIF //bcou_progress = 1 //DO_FADE 500 FADE_IN // /* IF NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 OFF ENDIF */ //WAIT 2000 bcou_backonbikecheck = 99 bcou_biketimer = 0 bcou_totalpackagesplus = 0 bcou_totalpackages = 0 bcou_packagestodeliver = 0 bcou_packagesthistrip = 0 drug_been_thrown_previously = 0 outofbags = 0 pass_check = 0 bcou_main_mission_loop: //SWITCH_WIDESCREEN ON WAIT 0 //Audio IF sfx_throw = 0 LOAD_MISSION_AUDIO 3 SOUND_BIKE_PACKAGE_THROW sfx_throw = 1 ENDIF IF sfx_throw = 1 IF HAS_MISSION_AUDIO_LOADED 3 sfx_throw = 2 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_w bcou_timelimit = bcou_timelimit + 60000 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_q bcou_timelimit = bcou_timelimit - 45000 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_p ALTER_WANTED_LEVEL Player1 2 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_o ALTER_WANTED_LEVEL Player1 0 ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_x IF pass_check = 0 pass_check = 1 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED ps2_key_z pass_check = 0 ENDIF IF outofbags = 1 CLEAR_ONSCREEN_TIMER bcou_timelimit CLEAR_ONSCREEN_COUNTER bags_on_bike PRINT_NOW BCOU_11 6000 1 GOTO mission_bcou_failed ENDIF IF NOT IS_PLAYER_PLAYING player1 GOTO mission_bcou_failed ENDIF IF IS_CAR_DEAD bcou_bike GOTO mission_bcou_failed ENDIF IF NOT IS_CAR_DEAD bcou_bike IF IS_CHAR_IN_CAR scplayer bcou_bike IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK PRINT_NOW BCOU_35 6000 1 GOTO mission_bcou_failed ENDIF ENDIF ENDIF IF bcou_packagesdelivered = 10 GOTO mission_bcou_passed ENDIF IF bcou_packagesdelivered = -99 CREATE_OBJECT_NO_OFFSET kmb_packet 0.0 0.0 100.0 drugs_thrown[old_bag] CREATE_FX_SYSTEM_ON_OBJECT coke_trail drugs_thrown[old_bag] 0.0 0.0 0.0 TRUE drugs_fx[old_bag] ENDIF IF bcou_ctskipneeded = 1 IF IS_BUTTON_PRESSED PAD1 CROSS bcou_cutscene = 50 ENDIF ENDIF IF bcou_paymentskip = 1 IF IS_BUTTON_PRESSED PAD1 CROSS menudelay = 2 SET_PLAYER_CONTROL player1 ON //bcou_progress = 50 bcou_paymentskip = 0 ENDIF ENDIF IF bcou_backonbikecheck = 0 IF NOT IS_CAR_DEAD bcou_bike IF NOT IS_CHAR_IN_CAR scplayer bcou_bike TIMERB = 0 bcou_biketimer = 1 // begin timer lowtimeradjustment = bcou_timelimit / 1000 // get time for under twenty seconds check bcou_backonbikecheck = 1 CLEAR_PRINTS //PRINT_NOW BCOU_37 4000 1 //DISPLAY_ONSCREEN_COUNTER_WITH_STRING bcou_bikeostimer COUNTER_DISPLAY_NUMBER BCOU_31 //fixing ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE PRINT_WITH_NUMBER_NOW BCOU_37 bcou_bikeostimer 4000 1 CLEAR_HELP //PRINT_HELP_FOREVER BCOU_32 ENDIF ENDIF ENDIF IF bcou_backonbikecheck = 1 IF NOT IS_CAR_DEAD bcou_bike IF IS_CHAR_IN_CAR scplayer bcou_bike TIMERB = 0 bcou_backonbikecheck = 0 bcou_biketimer = 0 bcou_countbegun = 0 CLEAR_PRINTS CLEAR_HELP IF bcou_progress > 9 PRINT_NOW BCOU_6 4000 1 ENDIF IF bcou_progress < 10 PRINT_NOW BCOU_3 4000 1 ENDIF //CLEAR_ONSCREEN_COUNTER bcou_bikeostimer ENDIF ENDIF ENDIF IF bcou_biketimer = 1 timeradjustment = TIMERB / 1000 // IF bcou_timelimit < 21000 // AND bcou_timelimit > 1 // //lowtimeradjustment = bcou_timelimit / 1000 // //bcou_bikeostimer = lowtimeradjustment - timeradjustment // // IF bcou_countbegun = 0 // bcou_bikeostimer = bcou_timelimit / 1000 // //bcou_countbegun = 1 // ENDIF // // ELSE // // // bcou_bikeostimer = 20 - timeradjustment // bcou_countbegun = 1 // // // ENDIF IF bcou_countbegun = 0 IF bcou_timelimit < 21000 AND bcou_timelimit > 1 bcou_countbegun = 1 ENDIF ENDIF IF bcou_countbegun = 0 IF bcou_timelimit > 20099 bcou_countbegun = 2 ENDIF ENDIF IF bcou_countbegun = 1 bcou_bikeostimer = bcou_timelimit / 1000 ENDIF IF bcou_countbegun = 2 bcou_bikeostimer = 20 - timeradjustment ENDIF CLEAR_PRINTS IF bcou_bikeostimer > 0 ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE PRINT_WITH_NUMBER_NOW BCOU_37 bcou_bikeostimer 4000 1 ENDIF IF TIMERB > 21000 //CLEAR_ONSCREEN_COUNTER bcou_bikeostimer CLEAR_PRINTS PRINT_NOW BCOU_35 6000 1 GOTO mission_bcou_failed ENDIF ENDIF IF bcou_progress = -1 IF bcou_cutscene = 0 //SET_PLAYER_CONTROL player1 OFF //DO_FADE 500 FADE_OUT //LOAD_SCENE -2491.2029 6.9828 24.6328 LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY bcou_emptydm DELETE_CHAR bcou_heavy CLEAR_AREA -2455.6621 -105.3974 26.5568 10.0 TRUE CREATE_CHAR PEDTYPE_MISSION1 WMYdrug -2455.6621 -105.3974 26.5568 bcou_heavy //GIVE_WEAPON_TO_CHAR bcou_heavy WEAPONTYPE_SHOTGUN 2000 // biker boss SET_CHAR_HEADING bcou_heavy 176.0958 SET_CHAR_DECISION_MAKER bcou_heavy bcou_emptydm //LOAD_SCENE -2491.2029 6.9828 24.6328 //WAIT 1000 SET_PLAYER_CONTROL player1 OFF // IF NOT IS_CHAR_DEAD bcou_heavy // TASK_PICK_UP_OBJECT bcou_heavy bcou_package 0.0 -0.2 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL FALSE // ENDIF SWITCH_WIDESCREEN ON //SET_FIXED_CAMERA_POSITION -2481.5649 8.2399 26.3633 0.0 0.0 0.0 //POINT_CAMERA_AT_POINT -2482.5618 8.2028 26.2935 JUMP_CUT SET_FIXED_CAMERA_POSITION -2468.3928 -96.8149 26.1614 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2467.6929 -97.5246 26.0805 JUMP_CUT //DO_FADE 500 FADE_IN IF NOT IS_CHAR_DEAD bcou_heavy FLUSH_ROUTE EXTEND_ROUTE -2457.0398 -110.2905 25.0058 EXTEND_ROUTE -2460.8452 -108.7783 24.9517 EXTEND_ROUTE -2462.3708 -106.9304 24.9069 //PRINT_NOW BCOU_2 4000 1 TASK_FOLLOW_POINT_ROUTE bcou_heavy PEDMOVE_RUN FOLLOW_ROUTE_ONCE SET_FOLLOW_NODE_THRESHOLD_DISTANCE bcou_heavy 150.0 ENDIF bcou_cutscene = 10 bcou_ctskipneeded = 1 timerb = 0 ENDIF /* IF DOES_CHAR_EXIST bcou_heavy IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR bcou_heavy scplayer CLEAR_PRINTS PRINT_NOW BCOU_52 6000 1 GOTO mission_bcou_failed ENDIF ENDIF */ IF bcou_cutscene = 10 IF timerb > 4000 IF NOT IS_CHAR_DEAD bcou_heavy PRINT_NOW BCOU_2 4000 1 //TASK_PLAY_ANIM bcou_heavy BOM_Plant_loop BOMBER 4.0 1 FALSE FALSE FALSE -1 bcou_cutscene = 15 TIMERB = 0 ENDIF ENDIF ENDIF IF bcou_cutscene = 15 IF TIMERB > 1000 IF NOT IS_CHAR_DEAD bcou_heavy //TASK_PICK_UP_OBJECT bcou_heavy bcou_package 0.0 0.15 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL FALSE //DELETE_OBJECT bcou_package bcou_cutscene = 20 TIMERB = 0 ENDIF ENDIF ENDIF IF bcou_cutscene = 20 IF TIMERB > 1000 TIMERB = 0 bcou_cutscene = 25 ENDIF ENDIF IF bcou_cutscene = 25 IF TIMERB > 200 IF NOT IS_CHAR_DEAD bcou_heavy CLEAR_CHAR_TASKS bcou_heavy //TASK_LOOK_AT_CHAR bcou_heavy scplayer 3400 //TASK_LOOK_AT_CHAR scplayer bcou_heavy 3200 TIMERB = 0 //PRINT_NOW BCOU_3 4000 1 bcou_cutscene = 40 ENDIF ENDIF ENDIF IF bcou_cutscene = 40 IF TIMERB > 1000 PRINT_NOW BCOU_3 4000 1 ENDIF IF TIMERB > 4000 IF NOT IS_CHAR_DEAD bcou_heavy CLEAR_CHAR_TASKS bcou_heavy TASK_GO_STRAIGHT_TO_COORD bcou_heavy -2457.0859 -126.3415 25.0130 PEDMOVE_RUN 5000 ENDIF TIMERB = 0 CLEAR_PRINTS PRINT_NOW BCOU_1 4000 1 bcou_cutscene = 45 ENDIF ENDIF IF bcou_cutscene = 45 IF TIMERB > 4000 bcou_cutscene = 50 ENDIF ENDIF IF bcou_cutscene = 50 CLEAR_PRINTS bcou_ctskipneeded = 0 //DO_FADE 500 FADE_OUT //WAIT 1000 IF NOT IS_CHAR_DEAD bcou_heavy CLEAR_CHAR_TASKS bcou_heavy SET_CHAR_COORDINATES bcou_heavy -2457.0859 -126.3415 25.0130 SET_CHAR_HEADING bcou_heavy 180.0 DELETE_OBJECT bcou_package ENDIF SWITCH_WIDESCREEN OFF DELETE_OBJECT bcou_package //DO_FADE 500 FADE_IN //SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON bcou_cutscene = 60 timerb = 0 // bcou_progress = 1 // // bcou_progress = 25 IF NOT IS_CAR_DEAD bcou_bike FORCE_CAR_LIGHTS bcou_bike NO_CAR_LIGHT_OVERRIDE ENDIF IF NOT IS_CHAR_DEAD bcou_heavy CLEAR_CHAR_TASKS bcou_heavy TASK_ACHIEVE_HEADING bcou_heavy 100.0 PRINT_NOW BCOU_4 6000 1 // PRINT_HELP BCOU_9 ENDIF bcou_backonbikecheck = 0 CREATE_OBJECT kmb_packet -2458.2485 -98.5704 28.1875 bcou_package SET_OBJECT_COLLISION bcou_package TRUE SET_OBJECT_DYNAMIC bcou_package TRUE ENDIF IF bcou_cutscene = 60 IF timerb > 2000 IF NOT IS_CHAR_DEAD bcou_heavy CLEAR_CHAR_TASKS bcou_heavy TASK_PLAY_ANIM bcou_heavy M_smkstnd_loop SMOKING 4.0 1 FALSE FALSE FALSE -1 bcou_cutscene = 99 ENDIF ENDIF ENDIF ENDIF //bcou_progress = -1 IF bcou_progress = 0 GET_CITY_PLAYER_IS_IN player1 bcou_city IF bcou_city = LEVEL_LOSANGELES CREATE_OBJECT kmb_packet 1361.5579 -1764.2756 18.0781 bcou_package SET_OBJECT_COLLISION bcou_package TRUE SET_OBJECT_DYNAMIC bcou_package TRUE // write_debug inla ENDIF IF bcou_city = LEVEL_SANFRANCISCO //write_debug insf CREATE_OBJECT kmb_packet -2584.6130 60.3094 3.9701 bcou_package SET_OBJECT_COLLISION bcou_package TRUE SET_OBJECT_DYNAMIC bcou_package TRUE SWITCH_CAR_GENERATOR gen_car21 0 ENDIF IF bcou_city = LEVEL_LASVEGAS CREATE_OBJECT kmb_packet 1884.3292 2078.7214 15.0869 bcou_package SET_OBJECT_COLLISION bcou_package TRUE SET_OBJECT_DYNAMIC bcou_package TRUE // write_debug inlv ENDIF PRINT_NOW BCOU_4 6000 1 //PRINT_HELP BCOU_9 timera = 0 bcou_helpflag = 1 bcou_backonbikecheck = 0 bcou_progress = 1 ENDIF IF bcou_helpflag = 1 IF timera > 7000 bcou_helpflag = 0 IF bcou_city = LEVEL_LOSANGELES PRINT_HELP BCOU_85 // The BMX needs instructions not to be redirected for Modern Gamepad controls here. ELSE PRINT_HELP BCOU_84 // Press ~m~~WIDGET_VEHICLE_SHOOT_LEFT~ or ~m~~WIDGET_VEHICLE_SHOOT_RIGHT~ to launch an item to the left or right. Drive over the last unsuccessfully thrown item to reclaim it. ENDIF ENDIF ENDIF // //Level 1 // IF bcou_progress = 1 bcou_totalpackagesplus = 4 bcou_totalpackages = 3 bcou_packagestodeliver = 3 dropoffIndex = 0 dropoffIndexOrigin = 0 bags_on_bike = 6 initial_index = 0 contact_delete = 0 WHILE initial_index < 7 // bags on bike + 1 this_bag_left[initial_index] = 0 initial_index ++ ENDWHILE IF NOT IS_CAR_DEAD bcou_bike IF IS_CHAR_IN_CAR scplayer bcou_bike IF bcou_city = LEVEL_SANFRANCISCO WHILE dropoffIndex < bcou_totalpackages ADD_BLIP_FOR_COORD SFdropoffX[dropoffIndex] SFdropoffY[dropoffIndex] SFdropoffZ[dropoffIndex] dropoffB[dropoffIndex] coronaz[dropoffIndex] = SFdropoffZ[dropoffIndex] + 2.2 CREATE_CHECKPOINT CHECKPOINT_TORUS_NOFADE SFdropoffX[dropoffIndex] SFdropoffY[dropoffIndex] coronaz[dropoffIndex] 0.0 0.0 0.0 1.8 dropoffcorona[dropoffIndex] ++ dropOffIndex ENDWHILE ENDIF IF bcou_city = LEVEL_LOSANGELES WHILE dropoffIndex < bcou_totalpackages ADD_BLIP_FOR_COORD LAdropoffX[dropoffIndex] LAdropoffY[dropoffIndex] LAdropoffZ[dropoffIndex] dropoffB[dropoffIndex] coronaz[dropoffIndex] = LAdropoffZ[dropoffIndex] + 2.2 CREATE_CHECKPOINT CHECKPOINT_TORUS_NOFADE LAdropoffX[dropoffIndex] LAdropoffY[dropoffIndex] coronaz[dropoffIndex] -2000.0 -2000.0 0.0 1.8 dropoffcorona[dropoffIndex] ++ dropOffIndex ENDWHILE ENDIF IF bcou_city = LEVEL_LASVEGAS WHILE dropoffIndex < bcou_totalpackages ADD_BLIP_FOR_COORD LVdropoffX[dropoffIndex] LVdropoffY[dropoffIndex] LVdropoffZ[dropoffIndex] dropoffB[dropoffIndex] coronaz[dropoffIndex] = LVdropoffZ[dropoffIndex] + 2.2 CREATE_CHECKPOINT CHECKPOINT_TORUS_NOFADE LVdropoffX[dropoffIndex] LVdropoffY[dropoffIndex] coronaz[dropoffIndex] -2000.0 2000.0 0.0 1.8 dropoffcorona[dropoffIndex] ++ dropOffIndex ENDWHILE ENDIF bcou_blipswap = 0 bcou_progress = 9 bcou_packagesthistrip = 0 bcou_timelimit = 180000//90000 DISPLAY_ONSCREEN_COUNTER_WITH_STRING bags_on_bike COUNTER_DISPLAY_NUMBER BCOU_83 DISPLAY_ONSCREEN_TIMER_WITH_STRING bcou_timelimit TIMER_DOWN BCOU_34 ENDIF ENDIF ENDIF // //Level 2 // IF bcou_progress = 2 bcou_totalpackagesplus = 8 bcou_totalpackages = 7 // 3 packages delivered in level 1 so total packages delivered will equal seven at end of this level bcou_packagestodeliver = 4 // four packages to be delivered during this run. dropoffIndex = 3 dropoffIndexOrigin = 3 bags_on_bike = 6 initial_index = 0 contact_delete = 0 WHILE initial_index < 7 // bags on bike + 1 this_bag_left[initial_index] = 0 initial_index ++ ENDWHILE IF NOT IS_CAR_DEAD bcou_bike IF IS_CHAR_IN_CAR scplayer bcou_bike IF bcou_city = LEVEL_SANFRANCISCO WHILE dropoffIndex < bcou_totalpackages ADD_BLIP_FOR_COORD SFdropoffX[dropoffIndex] SFdropoffY[dropoffIndex] SFdropoffZ[dropoffIndex] dropoffB[dropoffIndex] coronaz[dropoffIndex] = SFdropoffZ[dropoffIndex] + 2.2 CREATE_CHECKPOINT CHECKPOINT_TORUS_NOFADE SFdropoffX[dropoffIndex] SFdropoffY[dropoffIndex] coronaz[dropoffIndex] 0.0 0.0 0.0 1.8 dropoffcorona[dropoffIndex] ++ dropOffIndex ENDWHILE ENDIF IF bcou_city = LEVEL_LOSANGELES WHILE dropoffIndex < bcou_totalpackages ADD_BLIP_FOR_COORD LAdropoffX[dropoffIndex] LAdropoffY[dropoffIndex] LAdropoffZ[dropoffIndex] dropoffB[dropoffIndex] coronaz[dropoffIndex] = LAdropoffZ[dropoffIndex] + 2.2 CREATE_CHECKPOINT CHECKPOINT_TORUS_NOFADE LAdropoffX[dropoffIndex] LAdropoffY[dropoffIndex] coronaz[dropoffIndex] -2000.0 -2000.0 0.0 1.8 dropoffcorona[dropoffIndex] ++ dropOffIndex ENDWHILE ENDIF IF bcou_city = LEVEL_LASVEGAS WHILE dropoffIndex < bcou_totalpackages ADD_BLIP_FOR_COORD LVdropoffX[dropoffIndex] LVdropoffY[dropoffIndex] LVdropoffZ[dropoffIndex] dropoffB[dropoffIndex] coronaz[dropoffIndex] = LVdropoffZ[dropoffIndex] + 2.2 CREATE_CHECKPOINT CHECKPOINT_TORUS_NOFADE LVdropoffX[dropoffIndex] LVdropoffY[dropoffIndex] coronaz[dropoffIndex] -2000.0 2000.0 0.0 1.8 dropoffcorona[dropoffIndex] ++ dropOffIndex ENDWHILE ENDIF bcou_blipswap = 0 bcou_progress = 9 bcou_packagesthistrip = 0 bcou_timelimit = 300000//90000 DISPLAY_ONSCREEN_COUNTER_WITH_STRING bags_on_bike COUNTER_DISPLAY_NUMBER BCOU_83 DISPLAY_ONSCREEN_TIMER_WITH_STRING bcou_timelimit TIMER_DOWN BCOU_34 ENDIF ENDIF ENDIF // //Level 3 // IF bcou_progress = 3 bcou_totalpackagesplus = 13 bcou_totalpackages = 12 // 3,4 packages delivered in level 1,2 so total packages delivered will equal 12 at end of this level bcou_packagestodeliver = 5 // 5 packages to be delivered during this run. dropoffIndex = 7 // delivering to indices 7, 8, 9, 10, 11 dropoffIndexOrigin = 7 bags_on_bike = 7 initial_index = 0 contact_delete = 0 WHILE initial_index < 8 // bags on bike + 1 this_bag_left[initial_index] = 0 initial_index ++ ENDWHILE IF NOT IS_CAR_DEAD bcou_bike IF IS_CHAR_IN_CAR scplayer bcou_bike IF bcou_city = LEVEL_SANFRANCISCO WHILE dropoffIndex < bcou_totalpackages ADD_BLIP_FOR_COORD SFdropoffX[dropoffIndex] SFdropoffY[dropoffIndex] SFdropoffZ[dropoffIndex] dropoffB[dropoffIndex] coronaz[dropoffIndex] = SFdropoffZ[dropoffIndex] + 2.2 CREATE_CHECKPOINT CHECKPOINT_TORUS_NOFADE SFdropoffX[dropoffIndex] SFdropoffY[dropoffIndex] coronaz[dropoffIndex] 0.0 0.0 0.0 1.8 dropoffcorona[dropoffIndex] ++ dropOffIndex ENDWHILE ENDIF IF bcou_city = LEVEL_LOSANGELES WHILE dropoffIndex < bcou_totalpackages ADD_BLIP_FOR_COORD LAdropoffX[dropoffIndex] LAdropoffY[dropoffIndex] LAdropoffZ[dropoffIndex] dropoffB[dropoffIndex] coronaz[dropoffIndex] = LAdropoffZ[dropoffIndex] + 2.2 CREATE_CHECKPOINT CHECKPOINT_TORUS_NOFADE LAdropoffX[dropoffIndex] LAdropoffY[dropoffIndex] coronaz[dropoffIndex] -2000.0 -2000.0 0.0 1.8 dropoffcorona[dropoffIndex] ++ dropOffIndex ENDWHILE ENDIF IF bcou_city = LEVEL_LASVEGAS WHILE dropoffIndex < bcou_totalpackages ADD_BLIP_FOR_COORD LVdropoffX[dropoffIndex] LVdropoffY[dropoffIndex] LVdropoffZ[dropoffIndex] dropoffB[dropoffIndex] coronaz[dropoffIndex] = LVdropoffZ[dropoffIndex] + 2.2 CREATE_CHECKPOINT CHECKPOINT_TORUS_NOFADE LVdropoffX[dropoffIndex] LVdropoffY[dropoffIndex] coronaz[dropoffIndex] -2000.0 2000.0 0.0 1.8 dropoffcorona[dropoffIndex] ++ dropOffIndex ENDWHILE ENDIF bcou_blipswap = 0 bcou_progress = 9 bcou_packagesthistrip = 0 bcou_timelimit = 300000//90000 DISPLAY_ONSCREEN_COUNTER_WITH_STRING bags_on_bike COUNTER_DISPLAY_NUMBER BCOU_83 DISPLAY_ONSCREEN_TIMER_WITH_STRING bcou_timelimit TIMER_DOWN BCOU_34 ENDIF ENDIF ENDIF // //Level 4 // IF bcou_progress = 4 bcou_totalpackagesplus = 19 bcou_totalpackages = 18 // 3,4,5 packages delivered in level 1,2,3 so total packages delivered will equal 12 at end of this level bcou_packagestodeliver = 6 // 6 packages to be delivered during this run. dropoffIndex = 12 // delivering to indices 12, 13, 14, 15, 16, 17 dropoffIndexOrigin = 12 bags_on_bike = 8 initial_index = 0 contact_delete = 0 WHILE initial_index < 9 // bags on bike + 1 this_bag_left[initial_index] = 0 initial_index ++ ENDWHILE IF NOT IS_CAR_DEAD bcou_bike IF IS_CHAR_IN_CAR scplayer bcou_bike IF bcou_city = LEVEL_SANFRANCISCO WHILE dropoffIndex < bcou_totalpackages ADD_BLIP_FOR_COORD SFdropoffX[dropoffIndex] SFdropoffY[dropoffIndex] SFdropoffZ[dropoffIndex] dropoffB[dropoffIndex] coronaz[dropoffIndex] = SFdropoffZ[dropoffIndex] + 2.2 CREATE_CHECKPOINT CHECKPOINT_TORUS_NOFADE SFdropoffX[dropoffIndex] SFdropoffY[dropoffIndex] coronaz[dropoffIndex] 0.0 0.0 0.0 1.8 dropoffcorona[dropoffIndex] ++ dropOffIndex ENDWHILE ENDIF IF bcou_city = LEVEL_LOSANGELES WHILE dropoffIndex < bcou_totalpackages ADD_BLIP_FOR_COORD LAdropoffX[dropoffIndex] LAdropoffY[dropoffIndex] LAdropoffZ[dropoffIndex] dropoffB[dropoffIndex] coronaz[dropoffIndex] = LAdropoffZ[dropoffIndex] + 2.2 CREATE_CHECKPOINT CHECKPOINT_TORUS_NOFADE LAdropoffX[dropoffIndex] LAdropoffY[dropoffIndex] coronaz[dropoffIndex] -2000.0 -2000.0 0.0 1.8 dropoffcorona[dropoffIndex] ++ dropOffIndex ENDWHILE ENDIF IF bcou_city = LEVEL_LASVEGAS WHILE dropoffIndex < bcou_totalpackages ADD_BLIP_FOR_COORD LVdropoffX[dropoffIndex] LVdropoffY[dropoffIndex] LVdropoffZ[dropoffIndex] dropoffB[dropoffIndex] coronaz[dropoffIndex] = LVdropoffZ[dropoffIndex] + 2.2 CREATE_CHECKPOINT CHECKPOINT_TORUS_NOFADE LVdropoffX[dropoffIndex] LVdropoffY[dropoffIndex] coronaz[dropoffIndex] -2000.0 2000.0 0.0 1.8 dropoffcorona[dropoffIndex] ++ dropOffIndex ENDWHILE ENDIF bcou_blipswap = 0 bcou_progress = 9 bcou_packagesthistrip = 0 IF bcou_city = LEVEL_LOSANGELES bcou_timelimit = 600000// 10 minutes ENDIF IF bcou_city = LEVEL_SANFRANCISCO bcou_timelimit = 420000 // 7 minutes ENDIF IF bcou_city = LEVEL_LASVEGAS bcou_timelimit = 480000 // 8 minutes ENDIF DISPLAY_ONSCREEN_COUNTER_WITH_STRING bags_on_bike COUNTER_DISPLAY_NUMBER BCOU_83 DISPLAY_ONSCREEN_TIMER_WITH_STRING bcou_timelimit TIMER_DOWN BCOU_34 ENDIF ENDIF ENDIF IF bcou_progress = 9 IF contact_delete = 0 IF NOT IS_CHAR_DEAD bcou_heavy IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer bcou_heavy 100.0 100.0 100.0 FALSE DELETE_CHAR bcou_heavy contact_delete = 1 ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD bcou_bike IF bcou_blipswap = 0 IF NOT IS_WIDGET_PRESSED WIDGET_VEHICLE_SHOOT_RIGHT right_shoot_was_down = 0 ENDIF IF NOT IS_WIDGET_PRESSED WIDGET_VEHICLE_SHOOT_LEFT left_shoot_was_down = 0 ENDIF LVAR_INT nWidgetPressed //firing paper right IF IS_WIDGET_PRESSED WIDGET_VEHICLE_SHOOT_RIGHT nWidgetPressed = 0 IF IS_WIDGET_PRESSED WIDGET_VEHICLE_SHOOT_RIGHT AND right_shoot_was_down = 0 nWidgetPressed = 1 ENDIF IF nWidgetPressed = 1 proximity_flag = 0 GOSUB drugs_throw_right // timera = 0 GOSUB drugs_delivered_ok right_shoot_was_down = 1 ENDIF ENDIF //firing paper left IF IS_WIDGET_PRESSED WIDGET_VEHICLE_SHOOT_LEFT nWidgetPressed = 0 IF IS_WIDGET_PRESSED WIDGET_VEHICLE_SHOOT_LEFT AND left_shoot_was_down = 0 nWidgetPressed = 1 ENDIF IF nWidgetPressed = 1 proximity_flag = 0 GOSUB drugs_throw_left // timera = 0 GOSUB drugs_delivered_ok left_shoot_was_down = 1 ENDIF ENDIF IF NOT IS_CAR_DEAD bcou_bike IF NOT IS_CHAR_IN_CAR scplayer bcou_bike ADD_BLIP_FOR_CAR bcou_bike bcou_bikeB SET_BLIP_AS_FRIENDLY bcou_bikeB TRUE WHILE dropoffIndex < bcou_totalpackagesplus REMOVE_BLIP dropoffB[dropoffIndex] ++ dropoffIndex ENDWHILE dropoffIndex = dropoffIndexOrigin bcou_blipswap = 1 ENDIF ENDIF ENDIF // bcou_blipswap = 0 condition check IF bcou_blipswap = 1 IF IS_CHAR_IN_CAR scplayer bcou_bike REMOVE_BLIP bcou_bikeB WHILE dropoffIndex < bcou_totalpackages IF bcou_delivered[dropoffIndex] = 0 IF bcou_city = LEVEL_SANFRANCISCO ADD_BLIP_FOR_COORD SFdropoffX[dropoffIndex] SFdropoffY[dropoffIndex] SFdropoffZ[dropoffIndex] dropoffB[dropoffIndex] ENDIF IF bcou_city = LEVEL_LOSANGELES ADD_BLIP_FOR_COORD LAdropoffX[dropoffIndex] LAdropoffY[dropoffIndex] LAdropoffZ[dropoffIndex] dropoffB[dropoffIndex] ENDIF IF bcou_city = LEVEL_LASVEGAS ADD_BLIP_FOR_COORD LVdropoffX[dropoffIndex] LVdropoffY[dropoffIndex] LVdropoffZ[dropoffIndex] dropoffB[dropoffIndex] ENDIF ENDIF ++ dropoffIndex ENDWHILE bcou_blipswap = 0 dropoffIndex = dropoffIndexOrigin ENDIF //0.5 0.5 2.5 ENDIF IF IS_CHAR_IN_CAR scplayer bcou_bike IF bcou_city = LEVEL_SANFRANCISCO WHILE dropoffIndex < bcou_totalpackages IF bcou_delivered[dropoffIndex] = 0 IF DOES_OBJECT_EXIST drugs_thrown[old_bag] IF LOCATE_OBJECT_3D drugs_thrown[old_bag] SFdropoffX[dropoffIndex] SFdropoffY[dropoffIndex] coronaz[dropoffIndex] 0.7 1.7 3.0 FALSE //0.7 1.7 3.0 //ADD_ONE_OFF_SOUND SFdropoffX[dropoffIndex] SFdropoffY[dropoffIndex] coronaz[dropoffIndex] SOUND_RACE_START_GO REMOVE_BLIP dropoffB[dropoffIndex] KILL_FX_SYSTEM drugs_fx[old_bag] // bag successful, so remove it DELETE_OBJECT drugs_thrown[old_bag] INCREMENT_INT_STAT PIZZAS_DELIVERED 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE DELETE_CHECKPOINT dropoffcorona[dropoffIndex] // WRITE_DEBUG_WITH_INT doi dropoffindex bcou_delivered[dropoffIndex] = 1 ++ bcou_packagesthistrip //WRITEDEBUG_WITH_INT packages_delivered_this_trip bcou_packagesthistrip IF bcou_packagesthistrip = bcou_packagestodeliver CLEAR_PRINTS PRINT_NOW BCOU_6 6000 1 bcou_progress = 10 ELSE PRINT_NOW BCOU_5 6000 1 ENDIF ENDIF ENDIF ENDIF ++ dropoffIndex ENDWHILE ENDIF IF bcou_city = LEVEL_LOSANGELES WHILE dropoffIndex < bcou_totalpackages IF bcou_delivered[dropoffIndex] = 0 IF DOES_OBJECT_EXIST drugs_thrown[old_bag] IF LOCATE_OBJECT_3D drugs_thrown[old_bag] LAdropoffX[dropoffIndex] LAdropoffY[dropoffIndex] coronaz[dropoffIndex] 1.2 1.7 3.0 FALSE //0.7 1.7 3.0 //ADD_ONE_OFF_SOUND LAdropoffX[dropoffIndex] LAdropoffY[dropoffIndex] coronaz[dropoffIndex] SOUND_RACE_START_GO REMOVE_BLIP dropoffB[dropoffIndex] KILL_FX_SYSTEM drugs_fx[old_bag] // bag successful, so remove it DELETE_OBJECT drugs_thrown[old_bag] INCREMENT_INT_STAT PIZZAS_DELIVERED 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE DELETE_CHECKPOINT dropoffcorona[dropoffIndex] // WRITE_DEBUG_WITH_INT doi dropoffindex bcou_delivered[dropoffIndex] = 1 ++ bcou_packagesthistrip //WRITEDEBUG_WITH_INT packages_delivered_this_trip bcou_packagesthistrip IF bcou_packagesthistrip = bcou_packagestodeliver CLEAR_PRINTS PRINT_NOW BCOU_6 6000 1 bcou_progress = 10 ELSE PRINT_NOW BCOU_5 6000 1 ENDIF ENDIF ENDIF ENDIF ++ dropoffIndex ENDWHILE ENDIF IF bcou_city = LEVEL_LASVEGAS WHILE dropoffIndex < bcou_totalpackages IF bcou_delivered[dropoffIndex] = 0 IF DOES_OBJECT_EXIST drugs_thrown[old_bag] IF LOCATE_OBJECT_3D drugs_thrown[old_bag] LVdropoffX[dropoffIndex] LVdropoffY[dropoffIndex] coronaz[dropoffIndex] 1.2 1.7 3.0 FALSE // ADD_ONE_OFF_SOUND LVdropoffX[dropoffIndex] LVdropoffY[dropoffIndex] coronaz[dropoffIndex] SOUND_RACE_START_GO REMOVE_BLIP dropoffB[dropoffIndex] KILL_FX_SYSTEM drugs_fx[old_bag] // bag successful, so remove it DELETE_OBJECT drugs_thrown[old_bag] INCREMENT_INT_STAT PIZZAS_DELIVERED 1 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE DELETE_CHECKPOINT dropoffcorona[dropoffIndex] // WRITE_DEBUG_WITH_INT doi dropoffindex bcou_delivered[dropoffIndex] = 1 ++ bcou_packagesthistrip //WRITEDEBUG_WITH_INT packages_delivered_this_trip bcou_packagesthistrip IF bcou_packagesthistrip = bcou_packagestodeliver CLEAR_PRINTS PRINT_NOW BCOU_6 6000 1 bcou_progress = 10 ELSE PRINT_NOW BCOU_5 6000 1 ENDIF ENDIF ENDIF ENDIF ++ dropoffIndex ENDWHILE ENDIF dropoffIndex = dropoffIndexOrigin ENDIF packageslefttodeliver = bcou_packagestodeliver - bcou_packagesthistrip //write_debug_with_int poss maxpackages // write_debug_with_int left packageslefttodeliver maxpackages = bags_on_bike // player might have thrown one and be able to pick it up. IF DOES_OBJECT_EXIST drugs_thrown[old_bag] maxpackages = maxpackages + 1 ENDIF IF packageslefttodeliver > maxpackages outofbags = 1 //write_debug failed ENDIF ENDIF ENDIF // bcou_progress = 1 condition check IF bcou_progress > 8 IF bcou_progress < 25 IF bcou_timelimit < 1 CLEAR_PRINTS PRINT_NOW BCOU_33 6000 1 CLEAR_ONSCREEN_TIMER bcou_timelimit GOTO mission_bcou_failed ENDIF ENDIF ENDIF IF bcou_progress = 10 bcou_progress = 20 IF bcou_city = LEVEL_SANFRANCISCO ADD_BLIP_FOR_COORD SFpickupX[pickupIndex] SFpickupY[pickupIndex] SFpickupZ[pickupIndex] pickupB ENDIF IF bcou_city = LEVEL_LOSANGELES ADD_BLIP_FOR_COORD LApickupX[pickupIndex] LApickupY[pickupIndex] LApickupZ[pickupIndex] pickupB ENDIF IF bcou_city = LEVEL_LASVEGAS ADD_BLIP_FOR_COORD LVpickupX[pickupIndex] LVpickupY[pickupIndex] LVpickupZ[pickupIndex] pickupB ENDIF ENDIF // bcou_progress = 1 condition check IF bcou_progress = 20 GET_AREA_VISIBLE bcou_visible IF bcou_visible = 0 IF NOT IS_MINIGAME_IN_PROGRESS SET_PLAYER_CONTROL player1 ON ENDIF ENDIF IF NOT IS_CAR_DEAD bcou_bike IF bcou_blipswap = 0 IF NOT IS_CHAR_IN_CAR scplayer bcou_bike ADD_BLIP_FOR_CAR bcou_bike bcou_bikeB SET_BLIP_AS_FRIENDLY bcou_bikeB TRUE REMOVE_BLIP pickupB bcou_blipswap = 1 ENDIF ENDIF IF bcou_blipswap = 1 IF IS_CHAR_IN_CAR scplayer bcou_bike REMOVE_BLIP bcou_bikeB IF bcou_city = LEVEL_SANFRANCISCO ADD_BLIP_FOR_COORD SFpickupX[pickupIndex] SFpickupY[pickupIndex] SFpickupZ[pickupIndex] pickupB ENDIF IF bcou_city = LEVEL_LASVEGAS ADD_BLIP_FOR_COORD LVpickupX[pickupIndex] LVpickupY[pickupIndex] LVpickupZ[pickupIndex] pickupB ENDIF IF bcou_city = LEVEL_LOSANGELES ADD_BLIP_FOR_COORD LApickupX[pickupIndex] LApickupY[pickupIndex] LApickupZ[pickupIndex] pickupB ENDIF bcou_blipswap = 0 ENDIF ENDIF IF bcou_city = LEVEL_SANFRANCISCO //CLEAR_AREA -2590.4607 73.2006 3.4097 5.0 TRUE IF IS_CHAR_IN_CAR scplayer bcou_bike IF LOCATE_CHAR_IN_CAR_3D scplayer SFpickupX[pickupIndex] SFpickupY[pickupIndex] SFpickupZ[pickupIndex] 4.0 4.0 4.0 TRUE SET_PLAYER_CONTROL player1 OFF IF IS_CAR_STOPPED bcou_bike //SET_PLAYER_CONTROL player1 OFF REMOVE_BLIP pickupB CLEAR_ONSCREEN_TIMER bcou_timelimit CLEAR_ONSCREEN_COUNTER bags_on_bike ++ bcou_SFrunscompleted bcou_progress = 50 ENDIF ENDIF ENDIF ENDIF IF bcou_city = LEVEL_LOSANGELES //CLEAR_AREA -2590.4607 73.2006 3.4097 5.0 TRUE IF IS_CHAR_IN_CAR scplayer bcou_bike IF LOCATE_CHAR_IN_CAR_3D scplayer LApickupX[pickupIndex] LApickupY[pickupIndex] LApickupZ[pickupIndex] 4.0 4.0 4.0 TRUE SET_PLAYER_CONTROL player1 OFF IF IS_CAR_STOPPED bcou_bike //SET_PLAYER_CONTROL player1 OFF REMOVE_BLIP pickupB CLEAR_ONSCREEN_TIMER bcou_timelimit CLEAR_ONSCREEN_COUNTER bags_on_bike ++ bcou_LArunscompleted bcou_progress = 50 ENDIF ENDIF ENDIF ENDIF IF bcou_city = LEVEL_LASVEGAS //CLEAR_AREA -2590.4607 73.2006 3.4097 5.0 TRUE IF IS_CHAR_IN_CAR scplayer bcou_bike IF LOCATE_CHAR_IN_CAR_3D scplayer LVpickupX[pickupIndex] LVpickupY[pickupIndex] LVpickupZ[pickupIndex] 4.0 4.0 4.0 TRUE SET_PLAYER_CONTROL player1 OFF IF IS_CAR_STOPPED bcou_bike //SET_PLAYER_CONTROL player1 OFF REMOVE_BLIP pickupB CLEAR_ONSCREEN_TIMER bcou_timelimit CLEAR_ONSCREEN_COUNTER bags_on_bike ++ bcou_LVrunscompleted bcou_progress = 50 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // bcou_progress = 20 condition check IF bcou_progress = 50 // Display menu and calculate player scores. SET_PLAYER_CONTROL player1 ON bcou_paymentskip = 0 CLEAR_PRINTS PRINT_NOW BCOU_12 4000 1 IF bcou_city = LEVEL_LOSANGELES time_bonus = bcou_timelimit / 100 time_bonus = time_bonus * bcou_LArunscompleted ENDIF IF bcou_city = LEVEL_LASVEGAS time_bonus = bcou_timelimit / 100 time_bonus = time_bonus * bcou_LVrunscompleted ENDIF IF bcou_city = LEVEL_SANFRANCISCO time_bonus = bcou_timelimit / 100 time_bonus = time_bonus * bcou_SFrunscompleted ENDIF row_counter = 0 bag_bonus = bags_on_bike * 100 total_bonus = time_bonus + bag_bonus ADD_SCORE player1 total_bonus DELETE_OBJECT bcou_package bcou_progress = 55 timera = 0 WHILE timera < 5000 // Give the widget the data it needs for display. // // Args are: cell int0 int1 color label text //================================================================================================= SET_WIDGET_INFO2 WIDGET_RACE_RESULTS 0 time_bonus 0 WAGER_GREEN BCOU_22 DUMMY // Time Left SET_WIDGET_INFO2 WIDGET_RACE_RESULTS 1 bag_bonus 0 WAGER_GREEN BCOU_23 DUMMY // Items Spare SET_WIDGET_INFO2 WIDGET_RACE_RESULTS 2 total_bonus 0 WAGER_GREEN BCOU_24 DUMMY // Total Cash SET_WIDGET_INFO2 WIDGET_RACE_RESULTS 3 0 0 WAGER_WHITE DUMMY DUMMY // Empty Cell SET_WIDGET_INFO2 WIDGET_RACE_RESULTS 4 0 0 WAGER_WHITE DUMMY DUMMY // Empty Cell WAIT 0 ENDWHILE menudelay = 1 timera = 0 ENDIF IF menudelay = 1 bcou_paymentskip = 1 IF bcou_LArunscompleted = 4 OR bcou_SFrunscompleted = 4 OR bcou_LVrunscompleted = 4 menudelay = 2 ENDIF IF timera > 1000 menudelay = 2 ENDIF ENDIF IF menudelay = 2 IF NOT IS_CAR_DEAD bcou_bike IF IS_CHAR_IN_CAR scplayer bcou_bike bcou_paymentskip = 0 IF bcou_city = LEVEL_SANFRANCISCO CLEAR_PRINTS SET_PLAYER_CONTROL player1 ON IF bcou_SFrunscompleted = 1 PRINT_NOW BCOU_4 6000 1 bcou_progress = 2 ENDIF IF bcou_SFrunscompleted = 2 PRINT_NOW BCOU_4 6000 1 bcou_progress = 3 ENDIF IF bcou_SFrunscompleted = 3 PRINT_NOW BCOU_4 6000 1 bcou_progress = 4 ENDIF IF bcou_SFrunscompleted = 4 GOTO mission_bcou_passed bcou_progress = 5 ENDIF ENDIF IF bcou_city = LEVEL_LOSANGELES CLEAR_PRINTS SET_PLAYER_CONTROL player1 ON IF bcou_LArunscompleted = 1 PRINT_NOW BCOU_4 6000 1 bcou_progress = 2 ENDIF IF bcou_LArunscompleted = 2 PRINT_NOW BCOU_4 6000 1 bcou_progress = 3 ENDIF IF bcou_LArunscompleted = 3 PRINT_NOW BCOU_4 6000 1 bcou_progress = 4 ENDIF IF bcou_LArunscompleted = 4 GOTO mission_bcou_passed bcou_progress = 5 ENDIF ENDIF IF bcou_city = LEVEL_LASVEGAS CLEAR_PRINTS SET_PLAYER_CONTROL player1 ON IF bcou_LVrunscompleted = 1 PRINT_NOW BCOU_4 6000 1 bcou_progress = 2 ENDIF IF bcou_LVrunscompleted = 2 PRINT_NOW BCOU_4 6000 1 bcou_progress = 3 ENDIF IF bcou_LVrunscompleted = 3 PRINT_NOW BCOU_4 6000 1 bcou_progress = 4 ENDIF IF bcou_LVrunscompleted = 4 GOTO mission_bcou_passed bcou_progress = 5 ENDIF ENDIF menudelay = 0 ENDIF ENDIF ENDIF IF DOES_OBJECT_EXIST drugs_thrown[old_bag] IF LOCATE_CHAR_ANY_MEANS_OBJECT_3D scplayer drugs_thrown[old_bag] 1.5 1.5 1.5 FALSE IF timera > 3000 KILL_FX_SYSTEM drugs_fx[old_bag] DELETE_OBJECT drugs_thrown[old_bag] bags_on_bike ++ this_bag_left[bags_on_bike] = 0 // write_debug_with_int bags bags_on_bike ENDIF ENDIF ENDIF GOTO bcou_main_mission_loop //Procedures///////////////////////////////////////////////////////////////////////////// drugs_throw_right: IF NOT IS_CAR_DEAD bcou_bike IF bags_on_bike > 0 IF this_bag_left[bags_on_bike] = 0 IF drug_been_thrown_previously > 0 KILL_FX_SYSTEM drugs_fx[old_bag] //GET_OBJECT_COORDINATES drugs_fx[old_bag] bcou_dummyX bcou_dummyY bcou_dummyZ //CREATE_OBJECT_NO_OFFSET kmb_packet 0.0 0.0 100.0 dummy_bag[dummy_index] DELETE_OBJECT drugs_thrown[old_bag] ENDIF //CREATE_OBJECT_NO_OFFSET kmb_packet 0.0 0.0 100.0 drugs_thrown[bags_on_bike] //WRITE_DEBUG_WITH_INT drug_launchedright bags_on_bike IF bcou_city = LEVEL_LOSANGELES WHILE dropoffIndex < bcou_totalpackages IF checked_proximity = 0 IF bcou_delivered[dropoffIndex] = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer LAdropoffX[dropoffIndex] LAdropoffY[dropoffIndex] coronaz[dropoffIndex] 5.0 5.0 5.0 FALSE //0.7 1.7 3.0 //WRITE_DEBUG close checked_proximity = 1// don't check any other coronas proximity_flag = 1 // player is close by a corona. // ADD_TO_OBJECT_VELOCITY drugs_thrown[bags_on_bike] drugs_lobx drugs_loby 0.1 ELSE //WRITE_DEBUG ok //ADD_TO_OBJECT_VELOCITY drugs_thrown[bags_on_bike] drugs_lobx drugs_loby 6.0 ENDIF ENDIF ENDIF ++ dropoffIndex ENDWHILE dropoffIndex = dropoffIndexOrigin // reset for next throw checked_proximity = 0 // reset for next throw ENDIF IF bcou_city = LEVEL_SANFRANCISCO WHILE dropoffIndex < bcou_totalpackages IF checked_proximity = 0 IF bcou_delivered[dropoffIndex] = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer SFdropoffX[dropoffIndex] SFdropoffY[dropoffIndex] coronaz[dropoffIndex] 5.0 5.0 5.0 FALSE //0.7 1.7 3.0 //WRITE_DEBUG close checked_proximity = 1// don't check any other coronas proximity_flag = 1 // player is close by a corona. // ADD_TO_OBJECT_VELOCITY drugs_thrown[bags_on_bike] drugs_lobx drugs_loby 0.1 ELSE //WRITE_DEBUG ok //ADD_TO_OBJECT_VELOCITY drugs_thrown[bags_on_bike] drugs_lobx drugs_loby 6.0 ENDIF ENDIF ENDIF ++ dropoffIndex ENDWHILE dropoffIndex = dropoffIndexOrigin // reset for next throw checked_proximity = 0 // reset for next throw ENDIF IF bcou_city = LEVEL_LASVEGAS WHILE dropoffIndex < bcou_totalpackages IF checked_proximity = 0 IF bcou_delivered[dropoffIndex] = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer LVdropoffX[dropoffIndex] LVdropoffY[dropoffIndex] coronaz[dropoffIndex] 5.0 5.0 5.0 FALSE //0.7 1.7 3.0 // WRITE_DEBUG close checked_proximity = 1// don't check any other coronas proximity_flag = 1 // player is close by a corona. // ADD_TO_OBJECT_VELOCITY drugs_thrown[bags_on_bike] drugs_lobx drugs_loby 0.1 ELSE // WRITE_DEBUG ok //ADD_TO_OBJECT_VELOCITY drugs_thrown[bags_on_bike] drugs_lobx drugs_loby 6.0 ENDIF ENDIF ENDIF ++ dropoffIndex ENDWHILE dropoffIndex = dropoffIndexOrigin // reset for next throw checked_proximity = 0 // reset for next throw ENDIF GET_CAR_COORDINATES bcou_bike createX createY createZ CREATE_OBJECT_NO_OFFSET kmb_packet createX createY createZ drugs_thrown[bags_on_bike] SET_OBJECT_COLLISION drugs_thrown[bags_on_bike] TRUE SET_OBJECT_DYNAMIC drugs_thrown[bags_on_bike] TRUE //WAIT 1000 CREATE_FX_SYSTEM_ON_OBJECT coke_puff drugs_thrown[bags_on_bike] 0.0 0.0 0.5 TRUE drugs_fx[bags_on_bike] //directly above PLAY_FX_SYSTEM drugs_fx[bags_on_bike] GET_CHAR_COORDINATES scplayer playerx playery playerz // ADD_ONE_OFF_SOUND playerx playery playerz SOUND_PART_MISSION_COMPLETE IF sfx_throw = 2 //write_debug test PLAY_MISSION_AUDIO 3 ENDIF IF proximity_flag = 1 PLACE_OBJECT_RELATIVE_TO_CAR drugs_thrown[bags_on_bike] bcou_bike -1.0 0.0 1.3//0.1 0.0 0.7//0.7 0.0 0.7 ELSE PLACE_OBJECT_RELATIVE_TO_CAR drugs_thrown[bags_on_bike] bcou_bike 0.0 0.0 0.7//was -2.0 ENDIF GET_CHAR_HEADING scplayer courplayer1_facing_this_direction drugs_lobx -= 30.0 drugs_loby -= 30.0 COS courplayer1_facing_this_direction drugs_lobx SIN courplayer1_facing_this_direction drugs_loby // drugs_lobx *= 28.0//8.0 //change this to alter height of trajectory // drugs_loby *= 28.0//8.0 IF proximity_flag = 1 drugs_lobx *= 15.0//8.0 //change this to alter height of trajectory drugs_loby *= 15.0//8.0 ADD_TO_OBJECT_VELOCITY drugs_thrown[bags_on_bike] drugs_lobx drugs_loby 1.0//0.2//0.05 ELSE drugs_lobx *= 30.0//8.0 //change this to alter height of trajectory drugs_loby *= 30.0//8.0 ADD_TO_OBJECT_VELOCITY drugs_thrown[bags_on_bike] drugs_lobx drugs_loby 8.5//6.5 ENDIF proximity_flag = 0 // reset for another throw // Original for backup purposes // ADD_TO_OBJECT_VELOCITY drugs_thrown[bags_on_bike] drugs_lobx drugs_loby 7.0//5.0 // ADD_TO_OBJECT_VELOCITY drugs_thrown[bags_on_bike] drugs_lobx drugs_loby 0.1 // short range drug_been_thrown_previously ++ this_bag_left[bags_on_bike] = 1 old_bag = bags_on_bike bags_on_bike -- /* IF bags_on_bike > 1 bags_on_bike -- ELSE bags_on_bike -- //WRITE_DEBUG outtadrugs CLEAR_ONSCREEN_COUNTER bags_on_bike CLEAR_ONSCREEN_TIMER bcou_timelimit outofbags = 1 // GOTO mission_bcou_failed ENDIF */ timera = 0 // GOSUB drugs_old_bag ENDIF ENDIF ENDIF RETURN /////////////////////////////////////////////////////////////////////////////////// drugs_throw_left: IF bags_on_bike > 0 IF NOT IS_CAR_DEAD bcou_bike IF this_bag_left[bags_on_bike] = 0 IF drug_been_thrown_previously > 0 KILL_FX_SYSTEM drugs_fx[old_bag] DELETE_OBJECT drugs_thrown[old_bag] ENDIF IF bcou_city = LEVEL_LOSANGELES WHILE dropoffIndex < bcou_totalpackages IF checked_proximity = 0 IF bcou_delivered[dropoffIndex] = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer LAdropoffX[dropoffIndex] LAdropoffY[dropoffIndex] coronaz[dropoffIndex] 5.0 5.0 5.0 FALSE //0.7 1.7 3.0 //WRITE_DEBUG close checked_proximity = 1// don't check any other coronas proximity_flag = 1 // player is close by a corona. // ADD_TO_OBJECT_VELOCITY drugs_thrown[bags_on_bike] drugs_lobx drugs_loby 0.1 ELSE //WRITE_DEBUG ok //ADD_TO_OBJECT_VELOCITY drugs_thrown[bags_on_bike] drugs_lobx drugs_loby 6.0 ENDIF ENDIF ENDIF ++ dropoffIndex ENDWHILE dropoffIndex = dropoffIndexOrigin // reset for next throw checked_proximity = 0 // reset for next throw ENDIF IF bcou_city = LEVEL_SANFRANCISCO WHILE dropoffIndex < bcou_totalpackages IF checked_proximity = 0 IF bcou_delivered[dropoffIndex] = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer SFdropoffX[dropoffIndex] SFdropoffY[dropoffIndex] coronaz[dropoffIndex] 5.0 5.0 5.0 FALSE //0.7 1.7 3.0 //WRITE_DEBUG close checked_proximity = 1// don't check any other coronas proximity_flag = 1 // player is close by a corona. // ADD_TO_OBJECT_VELOCITY drugs_thrown[bags_on_bike] drugs_lobx drugs_loby 0.1 ELSE //WRITE_DEBUG ok //ADD_TO_OBJECT_VELOCITY drugs_thrown[bags_on_bike] drugs_lobx drugs_loby 6.0 ENDIF ENDIF ENDIF ++ dropoffIndex ENDWHILE dropoffIndex = dropoffIndexOrigin // reset for next throw checked_proximity = 0 // reset for next throw ENDIF IF bcou_city = LEVEL_LASVEGAS WHILE dropoffIndex < bcou_totalpackages IF checked_proximity = 0 IF bcou_delivered[dropoffIndex] = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer LVdropoffX[dropoffIndex] LVdropoffY[dropoffIndex] coronaz[dropoffIndex] 5.0 5.0 5.0 FALSE //0.7 1.7 3.0 //WRITE_DEBUG close checked_proximity = 1// don't check any other coronas proximity_flag = 1 // player is close by a corona. // ADD_TO_OBJECT_VELOCITY drugs_thrown[bags_on_bike] drugs_lobx drugs_loby 0.1 ELSE //WRITE_DEBUG ok //ADD_TO_OBJECT_VELOCITY drugs_thrown[bags_on_bike] drugs_lobx drugs_loby 6.0 ENDIF ENDIF ENDIF ++ dropoffIndex ENDWHILE dropoffIndex = dropoffIndexOrigin // reset for next throw checked_proximity = 0 // reset for next throw ENDIF GET_CAR_COORDINATES bcou_bike createX createY createZ CREATE_OBJECT_NO_OFFSET kmb_packet createX createY createZ drugs_thrown[bags_on_bike] SET_OBJECT_COLLISION drugs_thrown[bags_on_bike] TRUE SET_OBJECT_DYNAMIC drugs_thrown[bags_on_bike] TRUE // WAIT 1000 //CREATE_OBJECT_NO_OFFSET kmb_packet 0.0 0.0 100.0 drugs_thrown[bags_on_bike] //WRITE_DEBUG_WITH_INT drug_launchedleft bags_on_bike CREATE_FX_SYSTEM_ON_OBJECT coke_puff drugs_thrown[bags_on_bike] 0.0 0.0 0.0 TRUE drugs_fx[bags_on_bike] //directly above PLAY_FX_SYSTEM drugs_fx[bags_on_bike] GET_CHAR_COORDINATES scplayer playerx playery playerz // ADD_ONE_OFF_SOUND playerx playery playerz SOUND_PART_MISSION_COMPLETE IF sfx_throw = 2 // write_debug testaudio PLAY_MISSION_AUDIO 3 ENDIF IF proximity_flag = 1 PLACE_OBJECT_RELATIVE_TO_CAR drugs_thrown[bags_on_bike] bcou_bike 1.0 0.0 1.3//was 1.0 0.0 0.7 ELSE PLACE_OBJECT_RELATIVE_TO_CAR drugs_thrown[bags_on_bike] bcou_bike 0.0 0.0 0.7//was 2.0 ENDIF GET_CHAR_HEADING scplayer courplayer1_facing_this_direction drugs_lobx -= 330.0 drugs_loby -= 330.0 COS courplayer1_facing_this_direction drugs_lobx SIN courplayer1_facing_this_direction drugs_loby IF proximity_flag = 1 drugs_lobx *= -15.0//8.0 //change this to alter height of trajectory drugs_loby *= -15.0//8.0 ADD_TO_OBJECT_VELOCITY drugs_thrown[bags_on_bike] drugs_lobx drugs_loby 1.0//0.2//0.05 //0.1 ELSE drugs_lobx *= -30.0//-28.0 //change this to alter height of trajectory drugs_loby *= -30.0//-28.0 ADD_TO_OBJECT_VELOCITY drugs_thrown[bags_on_bike] drugs_lobx drugs_loby 8.5//6.5 ENDIF proximity_flag = 0 // reset for another throw // drugs_lobx *= -28.0//-8.0 //was -6.0 // drugs_loby *= -28.0//-8.0 //was -6.0 // ADD_TO_OBJECT_VELOCITY drugs_thrown[bags_on_bike] drugs_lobx drugs_loby 7.0//5.0 drug_been_thrown_previously ++ this_bag_left[bags_on_bike] = 1 old_bag = bags_on_bike bags_on_bike -- /* IF bags_on_bike > 1 bags_on_bike -- ELSE bags_on_bike -- CLEAR_ONSCREEN_COUNTER bags_on_bike CLEAR_ONSCREEN_TIMER bcou_timelimit // WRITE_DEBUG outtadrugs outofbags = 1 //GOTO mission_bcou_failed ENDIF */ timera = 0 // GOSUB drugs_old_bag ENDIF ENDIF ENDIF RETURN //////////////////////////////////////////////////////////////////////////////////// drugs_delivered_ok: WHILE IS_BUTTON_PRESSED PAD1 CIRCLE WAIT 0 ENDWHILE RETURN //////////////////////////////////////////////////////////////////////////////////// drugs_old_bag: WHILE timerb < 3000 WAIT 0 ENDWHILE KILL_FX_SYSTEM drugs_fx[old_bag] DELETE_OBJECT drugs_thrown[old_bag] RETURN // **************************************** Mission bcou failed *********************** mission_bcou_failed: SET_PLAYER_CAN_DO_DRIVE_BY player1 TRUE //PRINT_BIG ( M_FAIL ) 5000 1 //"Mission Failed" IF bcou_city = LEVEL_SANFRANCISCO IF bcou_SFrunscompleted = 0 PRINT_BIG bcou_40 5000 1 ENDIF IF bcou_SFrunscompleted = 1 PRINT_BIG bcou_41 5000 1 ENDIF IF bcou_SFrunscompleted = 2 PRINT_BIG bcou_42 5000 1 ENDIF IF bcou_SFrunscompleted = 3 PRINT_BIG bcou_43 5000 1 ENDIF IF bcou_SFrunscompleted = 4 PRINT_BIG bcou_44 5000 1 ENDIF IF bcou_SFrunscompleted = 5 PRINT_BIG bcou_45 5000 1 ENDIF IF bcou_SFrunscompleted = 6 PRINT_BIG bcou_46 5000 1 ENDIF IF bcou_SFrunscompleted = 7 PRINT_BIG bcou_47 5000 1 ENDIF ENDIF IF bcou_city = LEVEL_LASVEGAS IF bcou_LVrunscompleted = 0 PRINT_BIG bcou_40 5000 1 ENDIF IF bcou_LVrunscompleted = 1 PRINT_BIG bcou_41 5000 1 ENDIF IF bcou_LVrunscompleted = 2 PRINT_BIG bcou_42 5000 1 ENDIF IF bcou_LVrunscompleted = 3 PRINT_BIG bcou_43 5000 1 ENDIF IF bcou_LVrunscompleted = 4 PRINT_BIG bcou_44 5000 1 ENDIF IF bcou_LVrunscompleted = 5 PRINT_BIG bcou_45 5000 1 ENDIF IF bcou_LVrunscompleted = 6 PRINT_BIG bcou_46 5000 1 ENDIF IF bcou_LVrunscompleted = 7 PRINT_BIG bcou_47 5000 1 ENDIF ENDIF IF bcou_city = LEVEL_LOSANGELES IF bcou_LArunscompleted = 0 PRINT_BIG bcou_40 5000 1 ENDIF IF bcou_LArunscompleted = 1 PRINT_BIG bcou_41 5000 1 ENDIF IF bcou_LArunscompleted = 2 PRINT_BIG bcou_42 5000 1 ENDIF IF bcou_LArunscompleted = 3 PRINT_BIG bcou_43 5000 1 ENDIF IF bcou_LArunscompleted = 4 PRINT_BIG bcou_44 5000 1 ENDIF IF bcou_LArunscompleted = 5 PRINT_BIG bcou_45 5000 1 ENDIF IF bcou_LArunscompleted = 6 PRINT_BIG bcou_46 5000 1 ENDIF IF bcou_LArunscompleted = 7 PRINT_BIG bcou_47 5000 1 ENDIF ENDIF RETURN // **************************************** mission bcou passed ************************ mission_bcou_passed: //flag_heist_mission_counter ++ //Used to terminate this mission loop in the main script. These varibles will be set up in the main.sc //REGISTER_MISSION_PASSED ( HOOD_3 ) //Used in the stats CLEAR_MISSION_AUDIO 3 //PLAY_MISSION_PASSED_TUNE 2 IF bcou_city = LEVEL_LASVEGAS //PRINT_BIG BCOU_50 5000 1 IF courierLV_passed_once = 0 REGISTER_ODDJOB_MISSION_PASSED PLAYER_MADE_PROGRESS 1 courierLV_passed_once = 1 CREATE_PROTECTION_PICKUP 1887.9968 2073.0081 10.5547 courierLV_revenue courierLV_revenue courierLV_cash_pickup //remember to create the pick 0.5 higher than the dropped coords CLEAR_PRINTS SET_PLAYER_CONTROL player1 OFF //SWITCH_WIDESCREEN ON DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_WIDESCREEN ON LOAD_SCENE_IN_DIRECTION 1895.5298 2063.0935 15.8639 47.0 SET_FIXED_CAMERA_POSITION 1895.5298 2063.0935 15.8639 0.0 0.0 0.0 //cut scene of building POINT_CAMERA_AT_POINT 1894.8131 2063.7754 15.7175 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PLAY_MISSION_PASSED_TUNE 1 PRINT_BIG ASS_ACQ 5000 6 //CAR ASSET ACQUIRED WAIT 5000 SET_FIXED_CAMERA_POSITION 1890.1636 2070.4780 11.8641 0.0 0.0 0.0 //cut scene showing pickup POINT_CAMERA_AT_POINT 1889.5161 2071.2131 11.6633 JUMP_CUT PRINT_WITH_NUMBER_NOW ASS_LUV courierLV_revenue 6000 1//This will now generate revenue up to a maximum of $~1~. Make sure you collect it regulary. WAIT 6000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF ENDIF IF bcou_city = LEVEL_LOSANGELES // PRINT_BIG BCOU_49 5000 1 IF courierLA_passed_once = 0 REGISTER_ODDJOB_MISSION_PASSED PLAYER_MADE_PROGRESS 1 courierLA_passed_once = 1 CREATE_PROTECTION_PICKUP 1345.8591 -1757.4316 13.0078 courierLA_revenue courierLA_revenue courierLA_cash_pickup //remember to create the pick 0.5 higher than the dropped coords CLEAR_PRINTS SET_PLAYER_CONTROL player1 OFF //SWITCH_WIDESCREEN ON DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_WIDESCREEN ON LOAD_SCENE_IN_DIRECTION 1358.5959 -1741.1840 18.4310 223.0 SET_FIXED_CAMERA_POSITION 1358.5959 -1741.1840 18.4310 0.0 0.0 0.0 //cut scene of building POINT_CAMERA_AT_POINT 1358.3717 -1742.1354 18.2203 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PLAY_MISSION_PASSED_TUNE 1 PRINT_BIG ASS_ACQ 5000 6 //CAR ASSET ACQUIRED WAIT 5000 SET_FIXED_CAMERA_POSITION 1345.5647 -1753.3677 15.2186 0.0 0.0 0.0 //cut scene showing pickup POINT_CAMERA_AT_POINT 1345.5670 -1754.2177 14.6920 JUMP_CUT PRINT_WITH_NUMBER_NOW ASS_LUV courierLA_revenue 6000 1//This will now generate revenue up to a maximum of $~1~. Make sure you collect it regulary. WAIT 6000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF ENDIF IF bcou_city = LEVEL_SANFRANCISCO // PRINT_BIG BCOU_48 5000 1 IF courierSF_passed_once = 0 PLAYER_MADE_PROGRESS 1 REGISTER_ODDJOB_MISSION_PASSED courierSF_passed_once = 1 // write_debug passed CREATE_PROTECTION_PICKUP -2593.8818 59.2467 3.8359 courierSF_revenue courierSF_revenue courierSF_cash_pickup //remember to create the pick 0.5 higher than the dropped coords SET_PLAYER_CONTROL player1 OFF CLEAR_PRINTS //SWITCH_WIDESCREEN ON DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SWITCH_WIDESCREEN ON LOAD_SCENE_IN_DIRECTION -2603.1135 51.3338 10.1663 275.0 SET_FIXED_CAMERA_POSITION -2603.9802 54.4522 7.5275 0.0 0.0 0.0 //cut scene of building POINT_CAMERA_AT_POINT -2603.0139 54.7055 7.4818 JUMP_CUT DO_FADE 500 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE PLAY_MISSION_PASSED_TUNE 1 PRINT_BIG ASS_ACQ 5000 6 //CAR ASSET ACQUIRED WAIT 5000 SET_FIXED_CAMERA_POSITION -2598.9001 59.0635 4.8343 0.0 0.0 0.0 //cut scene showing pickup POINT_CAMERA_AT_POINT -2597.9045 59.0525 4.7405 JUMP_CUT PRINT_WITH_NUMBER_NOW ASS_LUV courierSF_revenue 6000 1//This will now generate revenue up to a maximum of $~1~. Make sure you collect it regulary. WAIT 6000 DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE ENDIF ENDIF //PRINT_WITH_NUMBER_BIG ( bcou_47 ) 100 5000 1 //"Mission Passed!" //ADD_SCORE player1 300 CLEAR_WANTED_LEVEL player1 //SWITCH_WIDESCREEN OFF //DO_FADE 500 FADE_IN //WHILE GET_FADING_STATUS // WAIT 0 //ENDWHILE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT RETURN // ********************************** mission cleanup *********************************** mission_cleanup_bcou: // reset pathing mode DISPLAY_RADAR 3 // PATHING ON CLEAR_HELP CLEAR_MISSION_AUDIO 3 IF IS_PLAYER_PLAYING player1 SET_PLAYER_CAN_DO_DRIVE_BY player1 TRUE SET_PLAYER_CONTROL player1 ON ENDIF CLEAR_ONSCREEN_TIMER bcou_timelimit CLEAR_ONSCREEN_COUNTER bags_on_bike DELETE_OBJECT bcou_package KILL_FX_SYSTEM drugs_fx[old_bag] DELETE_OBJECT drugs_thrown[old_bag] MARK_CHAR_AS_NO_LONGER_NEEDED bcou_heavy MARK_MODEL_AS_NO_LONGER_NEEDED WAYFARER MARK_MODEL_AS_NO_LONGER_NEEDED WMYdrug //MARK_MODEL_AS_NO_LONGER_NEEDED satchel REMOVE_ANIMATION SMOKING REMOVE_BLIP bcou_bikeB //REMOVE_BLIP dropoffB[dropoffIndex] REMOVE_BLIP pickupB dropoffIndex = 0 WHILE dropoffIndex < 30 REMOVE_BLIP dropoffB[dropoffIndex] ++ dropOffIndex ENDWHILE SWITCH_CAR_GENERATOR gen_car21 101 GET_GAME_TIMER timer_mobile_start //Used to reset the mobile phone timer so it doesn't ring immediately after the mission flag_player_on_mission = 0 MISSION_HAS_FINISHED //UNLOAD_SPECIAL_CHARACTER 1 RETURN } /* [BCOU_1:BCOU] ~w~Don't hang about at the drop off! Throw a package in the right area for my customer then get back to me! [BCOU_2:BCOU] ~w~Hey, you look like you're accustomed to two wheels! You after some easy money? [BCOU_3:BCOU] ~s~Get those items thrown through the ~y~dropoff markers~s~ quickly! [BCOU_4:BCOU] ~s~Drive the bike around town and launch items through the ~y~dropoff markers~s~ before time runs out. [BCOU_5:BCOU] ~s~Item Delivered! Get to another ~y~dropoff marker~s~ and deliver another item. [BCOU_6:BCOU] ~s~All items delivered! Head back to your ~y~pick up point~s~ to collect your payment. [BCOU_7:BCOU] ~s~Payment $~1~ {should read items} [BCOU_8:BCOU] items onboard [BCOU_9:BCOU] Hold the L2 or R2 button and press ~o~ to launch an item to the left or right. Drive over the last unsuccessfully thrown item to reclaim it. [BCOU_10:BCOU] ~s~Launch a package and get it through the ~y~dropoff marker~s~ to register a successful delivery. [BCOU_11:BCOU] ~r~You don't have enough items available to fulfill the delivery quota of this run! [BCOU_12:BCOU] Good job! Let's work out your cut of the profits! [BCOU_13:BCOU] Okay, a couple of dropoffs this time. Don't run out of items so aim carefully! [BCOU_14:BCOU] Even more dropoffs now. No sightseeing! Get 'em delivered! [BCOU_18:BCOU] LA Biker [BCOU_19:BCOU] LV Biker [BCOU_20:BCOU] SF Biker [BCOU_21:BCOU] Payment :- [BCOU_22:BCOU] Time Left [BCOU_23:BCOU] items Spare [BCOU_24:BCOU] Total Cash [BCOU_31:BCOU] Get on bike: [BCOU_32:BCOU] Press the R3 button to end delivery run [BCOU_33:BCOU] ~r~Out of time! [BCOU_34:BCOU] Time left: [BCOU_35:BCOU] ~r~Delivery run over. [BCOU_37:BCOU] ~s~You've got ~1~ seconds to get back on the ~b~bike~s~ or this run's over! [BCOU_40:BCOU] 0 out of 7 runs completed [BCOU_41:BCOU] 1 out of 7 runs completed [BCOU_42:BCOU] 2 out of 7 runs completed [BCOU_43:BCOU] 3 out of 7 runs completed [BCOU_44:BCOU] 4 out of 7 runs completed [BCOU_45:BCOU] 5 out of 7 runs completed [BCOU_46:BCOU] 6 out of 7 runs completed [BCOU_47:BCOU] 7 out of 7 runs completed [BCOU_48:BCOU] ~y~San Fierro Courier complete! [BCOU_49:BCOU] ~y~Los Santos Courier complete! [BCOU_50:BCOU] ~y~Las Venturas Courier complete! */ MISSION_START // ******************************************************************************************* // ********************************** Mountain Bike Race ************************************* // ******************************************************************************************* // Mission start stuff GOSUB mission_start_mtbikerace IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_mtbikerace_failed ENDIF GOSUB mission_cleanup_mtbikerace MISSION_END { // ***************************************Mission Start************************************* mission_start_mtbikerace: flag_player_on_mission = 1 CLEAR_THIS_PRINT_BIG_NOW 1 IF flag_mtbike_passed_1stime = 0 REGISTER_MISSION_GIVEN ENDIF SCRIPT_NAME MTBIKER LOAD_MISSION_TEXT RACETOR SET_MESSAGE_FORMATTING TRUE 355 370 //LOAD_MISSION_TEXT MTBIKE WAIT 0 USE_TEXT_COMMANDS TRUE IF NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL Player1 OFF ENDIF DO_FADE 1000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // TEMP! Need to go intot he main script ///// //LVAR_INT mtbikerace_selection //mtbikerace_selection =3 ////////////////////////////////////////////// //initialise screen coordinates for the text LVAR_FLOAT x_pos[7] y_pos[7] x_scale[7] y_scale[7] stuck_x[10] stuck_y[10] stuck_z[10] LVAR_INT total_racers_mtbikerace stuck_timer[10] LVAR_FLOAT checkpoints_mtbike_x[120] checkpoints_mtbike_y[120] checkpoints_mtbike_z[120] checkpoint_headings[120] LVAR_FLOAT coord_racers_current_x[10] coord_racers_current_y[10] coord_racers_current_z[10] //LVAR_FLOAT coord_racers_bikes_current_x[10] coord_racers_bikes_current_y[10] LVAR_FLOAT coord_racers_bikes_current_x[10] coord_racers_bikes_current_y[10] coord_racers_bikes_current_z[10] LVAR_INT r a c e LVAR_INT temp_int_mtbikerace mins seconds LVAR_FLOAT new_heading_mtbike LVAR_INT race_timer race_timer_temp //stored_bike_mtbikerace LVAR_FLOAT opponents_speed_fast opponents_speed_slow opponents_speed_really_slow LVAR_FLOAT set_opponents_speed LVAR_INT out_of_car_flag_mtbike flag_is_player_falling last_check_point LVAR_FLOAT x2 y2 z2 temp_float heading_mtbikerace player_distance_from_cp LVAR_INT char_person_on_bike stored_checkpoint_when_not_on_bike LVAR_INT out_of_car_timer falling_timer //LVAR_INT flag_boosting_opponents_speed VAR_INT random_number_mtbike LVAR_INT dm_racers_mtbiker LVAR_INT has_mtbiker_fallen[10] LVAR_INT status_mtbikers_task[10] LVAR_INT flag_make_char_go_past_final_checkpoint[10] LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_EMPTY dm_racers_mtbiker temp_int_mtbikerace = 0 WHILE temp_int_mtbikerace < 9 flag_make_char_go_past_final_checkpoint[temp_int_mtbikerace] = 0 has_mtbiker_fallen[temp_int_mtbikerace] = 0 temp_int_mtbikerace++ ENDWHILE /*flag_make_char_go_past_final_checkpoint[0] = 0 flag_make_char_go_past_final_checkpoint[1] = 0 flag_make_char_go_past_final_checkpoint[2] = 0 flag_make_char_go_past_final_checkpoint[3] = 0 flag_make_char_go_past_final_checkpoint[4] = 0 flag_make_char_go_past_final_checkpoint[5] = 0 flag_make_char_go_past_final_checkpoint[6] = 0 flag_make_char_go_past_final_checkpoint[7] = 0 flag_make_char_go_past_final_checkpoint[8] = 0 flag_make_char_go_past_final_checkpoint[9] = 0 has_mtbiker_fallen[0] = 0 has_mtbiker_fallen[1] = 0 has_mtbiker_fallen[2] = 0 has_mtbiker_fallen[3] = 0 has_mtbiker_fallen[4] = 0 has_mtbiker_fallen[5] = 0 has_mtbiker_fallen[6] = 0 has_mtbiker_fallen[7] = 0 has_mtbiker_fallen[8] = 0 has_mtbiker_fallen[9] = 0 */ //flag_boosting_opponents_speed = 0 // Interface Stuff out_of_car_flag_mtbike = 0 flag_is_player_falling = 0 /* x_pos[1] = 581.7789 y_pos[1] = 329.3647 x_scale[1] = 0.5427 y_scale[1] = 2.0841 */ x_pos[0] = 582.7242 y_pos[0] = 356.2812 x_scale[0] = 52.2072 y_scale[0] = 52.2072 x_pos[1] = 584.0833 y_pos[1] = 329.3647 x_scale[1] = 0.5427 y_scale[1] = 2.0841 x_pos[2] = 572.9216 y_pos[2] = 323.5937 x_scale[2] = 1.0585 y_scale[2] = 4.8106 x_pos[3] = 585.7240 y_pos[3] = 345.6341 x_scale[3] = 0.4929 y_scale[3] = 1.8511 x_pos[4] = 582.7242 y_pos[4] = 359.0323 x_scale[4] = 0.4993 y_scale[4] = 2.6370 x_pos[5] = 582.7242 y_pos[5] = 356.2812 x_scale[5] = 56.2072 y_scale[5] = 56.2072 x_pos[6] = 582.7242 y_pos[6] = 356.2812 x_scale[6] = 58.2072 y_scale[6] = 58.2072 LVAR_INT total_checkpoints_mtbike_mtbikerace LVAR_INT racer_model_mtbikerace[6] racers_car_model_mtbikerace[6] GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP player1 Bbshortwht boxingshort 2 BUILD_PLAYER_MODEL player1 ////////////////////////////////////////////////// IF mtbikerace_selection = 1 GOTO mtbikerace1 ENDIF IF mtbikerace_selection = 2 GOTO mtbikerace2 ENDIF IF mtbikerace_selection = 3 GOTO mtbikerace3 ENDIF ///////////////////////////////////////////// mtbikerace1: IF mtbikerace_selection = 1 PRINT_BIG MTROUT1 3000 5 ENDIF /* checkpoints_mtbike_x[0] = -2304.3438 checkpoints_mtbike_y[0] = -1667.1248 checkpoints_mtbike_z[0] = 483.5860 */ checkpoints_mtbike_x[0] = -2304.3438 checkpoints_mtbike_y[0] = -1667.1248 checkpoints_mtbike_z[0] = 483.3860 checkpoint_headings[0] = 208.0 checkpoints_mtbike_x[1] = -2280.4800 checkpoints_mtbike_y[1] = -1730.3153 checkpoints_mtbike_z[1] = 467.8242 checkpoint_headings[1] = 178.6093 checkpoints_mtbike_x[2] = -2357.1819 checkpoints_mtbike_y[2] = -1815.4287 checkpoints_mtbike_z[2] = 431.4012 checkpoint_headings[2] = 64.0670 checkpoints_mtbike_x[3] = -2447.4026 checkpoints_mtbike_y[3] = -1718.4354 checkpoints_mtbike_z[3] = 430.9626 checkpoint_headings[3] = 148.4592 checkpoints_mtbike_x[4] = -2446.6516 checkpoints_mtbike_y[4] = -1810.6578 checkpoints_mtbike_z[4] = 409.0582 checkpoint_headings[4] = 93.1950 checkpoints_mtbike_x[5] = -2527.5864 checkpoints_mtbike_y[5] = -1711.3759 checkpoints_mtbike_z[5] = 401.1750 checkpoint_headings[5] = 16.0889 checkpoints_mtbike_x[6] = -2552.8447 checkpoints_mtbike_y[6] = -1668.8422 checkpoints_mtbike_z[6] = 398.4550 //dodgy check point wherre dudes get stuck checkpoint_headings[6] = 155.2717 checkpoints_mtbike_x[7] = -2534.5166 checkpoints_mtbike_y[7] = -1802.5302 checkpoints_mtbike_z[7] = 374.7244 checkpoint_headings[7] = 127.1514 checkpoints_mtbike_x[8] = -2595.2495 checkpoints_mtbike_y[8] = -1631.9951 checkpoints_mtbike_z[8] = 342.7061 checkpoint_headings[8] = 176.4540 checkpoints_mtbike_x[9] = -2526.4302 checkpoints_mtbike_y[9] = -1888.4586 checkpoints_mtbike_z[9] = 292.5149 checkpoint_headings[9] = 77.3269 checkpoints_mtbike_x[10] =-2652.8594 checkpoints_mtbike_y[10] =-1739.1473 checkpoints_mtbike_z[10] =255.1567 checkpoint_headings[10] =189.6474 checkpoints_mtbike_x[11] =-2491.2285 checkpoints_mtbike_y[11] =-2034.5972 checkpoints_mtbike_z[11] =150.1413 checkpoint_headings[11] = 225.1505 checkpoints_mtbike_x[12] =-2428.6436 checkpoints_mtbike_y[12] =-2088.8870 checkpoints_mtbike_z[12] =121.9700 checkpoint_headings[12] =243.2365 checkpoints_mtbike_x[13] =-2322.0586 checkpoints_mtbike_y[13] =-2097.6396 checkpoints_mtbike_z[13] =114.0331 checkpoint_headings[13] =292.4177 checkpoints_mtbike_x[14] = -2218.1306 checkpoints_mtbike_y[14] = -2047.0885 checkpoints_mtbike_z[14] = 118.8139 //end of the line/ no nodes here..... checkpoint_headings[14] = 315.4970 checkpoints_mtbike_x[15] = -2168.4204 checkpoints_mtbike_y[15] = -1991.8716 checkpoints_mtbike_z[15] = 117.8448 checkpoint_headings[15] = 314.2462 checkpoints_mtbike_x[16] = -2102.5454 checkpoints_mtbike_y[16] = -1895.2271 checkpoints_mtbike_z[16] = 108.4655 checkpoint_headings[16] = 174.3973 checkpoints_mtbike_x[17] = -2162.3645 checkpoints_mtbike_y[17] = -2039.5222 checkpoints_mtbike_z[17] = 91.2074 checkpoint_headings[17] = 135.1339 checkpoints_mtbike_x[18] = -2373.6670 checkpoints_mtbike_y[18] = -2195.0891 checkpoints_mtbike_z[18] = 32.3837 checkpoint_headings[18] = 112.8270 total_checkpoints_mtbike_mtbikerace = 19 total_racers_mtbikerace = 6 racer_model_mtbikerace[0] = wmybmx racer_model_mtbikerace[1] = wmymoun racer_model_mtbikerace[2] = bmymoun racer_model_mtbikerace[3] = wmymoun racer_model_mtbikerace[4] = wmybmx racer_model_mtbikerace[5] = bmymoun racers_car_model_mtbikerace[0] = mtbike racers_car_model_mtbikerace[1] = mtbike racers_car_model_mtbikerace[2] = mtbike racers_car_model_mtbikerace[3] = mtbike racers_car_model_mtbikerace[4] = mtbike racers_car_model_mtbikerace[5] = mtbike opponents_speed_fast = 38.0 opponents_speed_slow = 27.0 opponents_speed_really_slow = 23.0 GOTO mtbikerace_start mtbikerace2: IF mtbikerace_selection = 2 PRINT_BIG MTROUT2 3000 5 ENDIF checkpoints_mtbike_x[0] = -2304.3438 checkpoints_mtbike_y[0] = -1667.1248 checkpoints_mtbike_z[0] = 483.5860 checkpoint_headings[0] = 208.0 checkpoints_mtbike_x[1] = -2279.8574 checkpoints_mtbike_y[1] = -1732.7520 checkpoints_mtbike_z[1] = 466.7990 checkpoint_headings[1] = 163.4517 checkpoints_mtbike_x[2] = -2355.6089 checkpoints_mtbike_y[2] = -1815.3241 checkpoints_mtbike_z[2] = 431.5401 checkpoint_headings[2] = 90.1409 checkpoints_mtbike_x[3] = -2458.8430 checkpoints_mtbike_y[3] = -1733.4342 checkpoints_mtbike_z[3] = 426.4320 checkpoint_headings[3] = 187.8666 checkpoints_mtbike_x[4] = -2460.9041 checkpoints_mtbike_y[4] = -1807.3839 checkpoints_mtbike_z[4] = 406.6599 checkpoint_headings[4] = 60.8579 checkpoints_mtbike_x[5] = -2521.2917 checkpoints_mtbike_y[5] = -1707.7533 checkpoints_mtbike_z[5] = 401.2728 checkpoint_headings[5] = 2.4494 checkpoints_mtbike_x[6] = -2467.1262 checkpoints_mtbike_y[6] = -1467.8677 checkpoints_mtbike_z[6] = 388.9202 checkpoint_headings[6] = 270.5872 checkpoints_mtbike_x[7] = -2324.3667 checkpoints_mtbike_y[7] = -1455.1486 checkpoints_mtbike_z[7] = 380.9767 checkpoint_headings[7] = 233.5233 checkpoints_mtbike_x[8] = -2251.9221 checkpoints_mtbike_y[8] = -1492.6534 checkpoints_mtbike_z[8] = 377.8563 checkpoint_headings[8] = 196.0940 checkpoints_mtbike_x[9] = -2191.9495 checkpoints_mtbike_y[9] = -1713.9932 checkpoints_mtbike_z[9] = 375.5497 checkpoint_headings[9] = 322.9377 checkpoints_mtbike_x[10] =-2206.7781 checkpoints_mtbike_y[10] =-1528.3400 checkpoints_mtbike_z[10] =359.6156 checkpoint_headings[10] =20.0752 checkpoints_mtbike_x[11] =-2280.6833 checkpoints_mtbike_y[11] =-1426.1876 checkpoints_mtbike_z[11] =355.6379 checkpoint_headings[11] =58.5606 checkpoints_mtbike_x[12] =-2419.2219 checkpoints_mtbike_y[12] =-1392.9248 checkpoints_mtbike_z[12] =358.1968 checkpoint_headings[12] =98.4498 checkpoints_mtbike_x[13] =-2569.7671 checkpoints_mtbike_y[13] =-1460.6979 checkpoints_mtbike_z[13] =357.2175 checkpoint_headings[13] =325.2711 checkpoints_mtbike_x[14] =-2440.8894 checkpoints_mtbike_y[14] =-1368.2570 checkpoints_mtbike_z[14] =337.4130 checkpoint_headings[14] =304.5745 checkpoints_mtbike_x[15] =-2357.0701 checkpoints_mtbike_y[15] =-1286.3617 checkpoints_mtbike_z[15] =306.1062 checkpoint_headings[15] =103.3780 checkpoints_mtbike_x[16] =-2508.1528 checkpoints_mtbike_y[16] =-1273.6208 checkpoints_mtbike_z[16] =271.7476 checkpoint_headings[16] =103.6739 checkpoints_mtbike_x[17] =-2595.4917 checkpoints_mtbike_y[17] =-1360.2438 checkpoints_mtbike_z[17] =264.5467 checkpoint_headings[17] =100.4540 checkpoints_mtbike_x[18] =-2671.1550 checkpoints_mtbike_y[18] =-1378.1902 checkpoints_mtbike_z[18] =252.3816 checkpoint_headings[18] =352.7671 checkpoints_mtbike_x[19] =-2608.5 checkpoints_mtbike_y[19] =-1285.22 checkpoints_mtbike_z[19] =219.88 checkpoint_headings[19] =335.6836 checkpoints_mtbike_x[20] =-2537.2939 checkpoints_mtbike_y[20] =-1121.2975 checkpoints_mtbike_z[20] =175.3035 checkpoint_headings[20] =140.5565 checkpoints_mtbike_x[21] =-2634.5535 checkpoints_mtbike_y[21] =-1169.3840 checkpoints_mtbike_z[21] =166.8249 checkpoint_headings[21] =128.4300 checkpoints_mtbike_x[22] =-2747.9368 checkpoints_mtbike_y[22] =-1377.9432 checkpoints_mtbike_z[22] =143.0419 checkpoint_headings[22] =168.2364 checkpoints_mtbike_x[23] =-2773.7800 checkpoints_mtbike_y[23] =-1670.3008 checkpoints_mtbike_z[23] =140.4944 checkpoint_headings[23] =169.7697 checkpoints_mtbike_x[24] =-2733.3638 checkpoints_mtbike_y[24] =-1876.0216 checkpoints_mtbike_z[24] =138.8912 checkpoint_headings[24] =269.3722 checkpoints_mtbike_x[25] =-2620.5791 checkpoints_mtbike_y[25] =-2066.7456 checkpoints_mtbike_z[25] =129.5185 checkpoint_headings[25] =201.5526 checkpoints_mtbike_x[26] =-2438.3792 checkpoints_mtbike_y[26] =-2086.9282 checkpoints_mtbike_z[26] =123.3899 checkpoint_headings[26] =257.1008 checkpoints_mtbike_x[27] =-2335.7844 checkpoints_mtbike_y[27] =-2102.4417 checkpoints_mtbike_z[27] =112.9194 checkpoint_headings[27] =283.7088 checkpoints_mtbike_x[28] =-2101.0046 checkpoints_mtbike_y[28] =-1893.2450 checkpoints_mtbike_z[28] =108.8372 checkpoint_headings[28] =174.9563 checkpoints_mtbike_x[29] =-2156.2161 checkpoints_mtbike_y[29] =-2031.7744 checkpoints_mtbike_z[29] =91.9901 checkpoint_headings[29] =145.7200 checkpoints_mtbike_x[30] =-2236.1113 checkpoints_mtbike_y[30] =-2118.7666 checkpoints_mtbike_z[30] =66.3876 checkpoint_headings[30] =131.2891 checkpoints_mtbike_x[31] =-2374.9575 checkpoints_mtbike_y[31] =-2195.4536 checkpoints_mtbike_z[31] =32.3626 checkpoint_headings[31] =113.8008 total_checkpoints_mtbike_mtbikerace = 32 total_racers_mtbikerace = 6 racer_model_mtbikerace[0] = wmybmx racer_model_mtbikerace[1] = wmymoun racer_model_mtbikerace[2] = bmymoun racer_model_mtbikerace[3] = wmymoun racer_model_mtbikerace[4] = wmybmx racer_model_mtbikerace[5] = bmymoun racers_car_model_mtbikerace[0] = mtbike racers_car_model_mtbikerace[1] = mtbike racers_car_model_mtbikerace[2] = mtbike racers_car_model_mtbikerace[3] = mtbike racers_car_model_mtbikerace[4] = mtbike racers_car_model_mtbikerace[5] = mtbike opponents_speed_fast = 35.0 opponents_speed_slow = 30.0 opponents_speed_really_slow = 28.0 GOTO mtbikerace_start mtbikerace3: IF mtbikerace_selection = 3 PRINT_BIG MTROUT3 3000 5 ENDIF checkpoints_mtbike_x[0] = -2432.8760 checkpoints_mtbike_y[0] = -1939.6539 checkpoints_mtbike_z[0] = 303.7731 checkpoint_headings[0] = 273.0 checkpoints_mtbike_x[1] = -2339.9976 checkpoints_mtbike_y[1] = -1941.2238 checkpoints_mtbike_z[1] = 295.8086 checkpoint_headings[1] = 269.6869 checkpoints_mtbike_x[2] = -2286.7820 checkpoints_mtbike_y[2] = -1940.2395 checkpoints_mtbike_z[2] = 268.8093 checkpoint_headings[2] = 245.1214 checkpoints_mtbike_x[3] = -2234.8911 checkpoints_mtbike_y[3] = -1925.0674 checkpoints_mtbike_z[3] = 242.4752 checkpoint_headings[3] = 300.1313 checkpoints_mtbike_x[4] = -2205.4290 checkpoints_mtbike_y[4] = -1914.0288 checkpoints_mtbike_z[4] = 239.2782 checkpoint_headings[4] = 269.1174 checkpoints_mtbike_x[5] = -2204.8611 checkpoints_mtbike_y[5] = -1914.0312 checkpoints_mtbike_z[5] = 239.1954 checkpoint_headings[5] = 269.4709 checkpoints_mtbike_x[6] = -2173.8950 checkpoints_mtbike_y[6] = -1903.8802 checkpoints_mtbike_z[6] = 233.6897 checkpoint_headings[6] = 314.0030 checkpoints_mtbike_x[7] = -2169.7278 checkpoints_mtbike_y[7] = -1885.1361 checkpoints_mtbike_z[7] = 231.1551 checkpoint_headings[7] = 8.2283 checkpoints_mtbike_x[8] = -2173.5110 checkpoints_mtbike_y[8] = -1861.9478 checkpoints_mtbike_z[8] = 222.7416 checkpoint_headings[8] = 13.9626 checkpoints_mtbike_x[9] = -2173.6409 checkpoints_mtbike_y[9] = -1843.2456 checkpoints_mtbike_z[9] = 217.9074 checkpoint_headings[9] = 13.6434 checkpoints_mtbike_x[10] =-2148.4309 checkpoints_mtbike_y[10] =-1792.7305 checkpoints_mtbike_z[10] =210.1444 checkpoint_headings[10] =294.9009 checkpoints_mtbike_x[11] =-2129.2415 checkpoints_mtbike_y[11] =-1775.9731 checkpoints_mtbike_z[11] =207.5088 checkpoint_headings[11] =313.3039 checkpoints_mtbike_x[12] =-2109.7236 checkpoints_mtbike_y[12] =-1755.5731 checkpoints_mtbike_z[12] =195.2899 checkpoint_headings[12] =332.9617 checkpoints_mtbike_x[13] =-2101.7561 checkpoints_mtbike_y[13] =-1744.0090 checkpoints_mtbike_z[13] =195.9091 checkpoint_headings[13] =324.6714 checkpoints_mtbike_x[14] =-2072.0796 checkpoints_mtbike_y[14] =-1644.9003 checkpoints_mtbike_z[14] =174.3308 checkpoint_headings[14] =357.3320 checkpoints_mtbike_x[15] =-2050.7004 checkpoints_mtbike_y[15] =-1571.4911 checkpoints_mtbike_z[15] =137.4740 checkpoint_headings[15] =272.8463 checkpoints_mtbike_x[16] =-2041.6647 checkpoints_mtbike_y[16] =-1509.0067 checkpoints_mtbike_z[16] =124.2398 checkpoint_headings[16] =16.1558 checkpoints_mtbike_x[17] =-2033.5597 checkpoints_mtbike_y[17] =-1438.6035 checkpoints_mtbike_z[17] =93.2658 checkpoint_headings[17] =210.8019 checkpoints_mtbike_x[18] =-1991.3282 checkpoints_mtbike_y[18] =-1596.5256 checkpoints_mtbike_z[18] =86.5936 checkpoint_headings[18] =182.1263 checkpoints_mtbike_x[19] =-2027.7069 checkpoints_mtbike_y[19] =-1789.3309 checkpoints_mtbike_z[19] =96.5540 checkpoint_headings[19] =160.6694 checkpoints_mtbike_x[20] =-2099.8538 checkpoints_mtbike_y[20] =-1890.8799 checkpoints_mtbike_z[20] =109.2095 checkpoint_headings[20] =175.6702 checkpoints_mtbike_x[21] =-2118.3008 checkpoints_mtbike_y[21] =-1948.2500 checkpoints_mtbike_z[21] =99.0724 checkpoint_headings[21] =162.0987 checkpoints_mtbike_x[22] =-2233.6492 checkpoints_mtbike_y[22] =-2117.0457 checkpoints_mtbike_z[22] =67.2467 checkpoint_headings[22] =134.1193 checkpoints_mtbike_x[23] =-2373.8918 checkpoints_mtbike_y[23] =-2194.9983 checkpoints_mtbike_z[23] =32.3799 checkpoint_headings[23] =115.9183 total_checkpoints_mtbike_mtbikerace = 24 total_racers_mtbikerace = 3 racer_model_mtbikerace[0] = bmymoun racer_model_mtbikerace[1] = wmymoun racer_model_mtbikerace[2] = wmybmx racers_car_model_mtbikerace[0] = mtbike racers_car_model_mtbikerace[1] = mtbike racers_car_model_mtbikerace[2] = mtbike opponents_speed_fast = 40.0 opponents_speed_slow = 30.0 opponents_speed_really_slow = 25.0 //opponents_speed_fast = 40.0 //opponents_speed_slow = 30.0 REQUEST_CAR_RECORDING 829 REQUEST_CAR_RECORDING 830 REQUEST_CAR_RECORDING 831 REQUEST_CAR_RECORDING 832 REQUEST_CAR_RECORDING 833 REQUEST_CAR_RECORDING 834 WHILE NOT HAS_CAR_RECORDING_BEEN_LOADED 829 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 830 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 831 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 832 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 833 OR NOT HAS_CAR_RECORDING_BEEN_LOADED 834 WAIT 0 ENDWHILE CREATE_CHECKPOINT CHECKPOINT_TUBE racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] second_cp_mtbikeracex second_cp_mtbikeracey second_cp_mtbikeracez 6.0 cp_marker_mtbikerace DELETE_CHECKPOINT cp_marker_mtbikerace GOTO mtbikerace_start mtbikerace_start: set_opponents_speed = opponents_speed_really_slow WHILE NOT IS_PLAYER_PLAYING player1 WAIT 0 ENDWHILE CLEAR_AREA checkpoints_mtbike_x[0] checkpoints_mtbike_y[0] checkpoints_mtbike_z[0] 0.5 0 LOAD_SCENE checkpoints_mtbike_x[0] checkpoints_mtbike_y[0] checkpoints_mtbike_z[0] //SET_CHAR_COORDINATES scplayer checkpoints_mtbike_x[0] checkpoints_mtbike_y[0] checkpoints_mtbike_z[0] ///SET_CHAR_HEADING scplayer 0.0 //SET_CAMERA_BEHIND_PLAYER // switching OFF the roads at the mountain // SWITCH_ROADS_OFF -2999.5276 -2629.4624 0.8299 -1612.5211 -979.4300 480.2183 // SET_CAR_DENSITY_MULTIPLIER 0.0 // SET_PED_DENSITY_MULTIPLIER 0.0 //DISABLE_ALL_ENTRY_EXITS TRUE //VAR_INT temproad //CREATE_OBJECT_NO_OFFSET temp_road 0.0 0.0 40.0 temproad //SET_OBJECT_HEADING temproad 45.0 LVAR_INT total_checkpoints_mtbike_mtbikerace_minus_1 total_checkpoints_mtbike_mtbikerace_minus_1 = total_checkpoints_mtbike_mtbikerace - 1 r = 0 a = 0 c = 0 e = 0 LVAR_FLOAT racer_cp_x_mtbikerace[6] racer_cp_y_mtbikerace[6] racer_cp_z_mtbikerace[6] //VAR_FLOAT stuck_x[6] stuck_y[6] //LVAR_INT racer_blip_mtbikerace[6] LVAR_INT racers_mtbike[6] LVAR_INT mtbikeracer[6] LVAR_INT total_mtbikerace total_mtbikerace = total_racers_mtbikerace LVAR_INT cpcounter_mtbikerace[10] WHILE a < total_mtbikerace cpcounter_mtbikerace[a] = 0 ++ a ENDWHILE //PRINT_NOW BIK1_1 5000 1 //"~g~Get a fast car and get to the starting grid." LVAR_INT first_blip_mtbikerace ADD_BLIP_FOR_COORD checkpoints_mtbike_x[0] checkpoints_mtbike_y[0] checkpoints_mtbike_z[0] first_blip_mtbikerace LVAR_INT race_flag_mtbikerace LVAR_INT playaz_mtbikerace race_flag_mtbikerace = 0 //VIEW_INTEGER_VARIABLE out_of_car_flag_mtbike out_of_car_flag_mtbike mission_mtbikerace_loop: WAIT 0 GET_GAME_TIMER game_timer LVAR_INT position_mtbikerace position_mtbikerace = 0 a = 0 IF race_flag_mtbikerace = 0 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer checkpoints_mtbike_x[0] checkpoints_mtbike_y[0] checkpoints_mtbike_z[0] IF LOCATE_CHAR_ANY_MEANS_2D scplayer checkpoints_mtbike_x[1] checkpoints_mtbike_y[1] 100.0 100.0 0 r = 0 x = checkpoints_mtbike_x[0] + 7.0 y = checkpoints_mtbike_y[0] + 7.0 z = checkpoints_mtbike_z[0] + 4.0 x2 = checkpoints_mtbike_x[0] - 7.0 y2 = checkpoints_mtbike_y[0] - 7.0 z2 = checkpoints_mtbike_z[0] - 4.0 // SWITCH_ROADS_OFF x y z x2 y2 z2 ++ race_flag_mtbikerace ENDIF ENDIF ENDIF IF race_flag_mtbikerace = 1 temp_int_mtbikerace = total_mtbikerace - 1 IF HAS_MODEL_LOADED racer_model_mtbikerace[r] AND HAS_MODEL_LOADED racers_car_model_mtbikerace[r] ++ r ELSE REQUEST_MODEL racer_model_mtbikerace[r] REQUEST_MODEL racers_car_model_mtbikerace[r] ENDIF IF r = temp_int_mtbikerace ++ race_flag_mtbikerace ENDIF ENDIF IF race_flag_mtbikerace = 2 CREATE_CAR racers_car_model_mtbikerace[0] checkpoints_mtbike_x[0] checkpoints_mtbike_y[0] checkpoints_mtbike_z[0] stored_bike_mtbikerace TURN_CAR_TO_FACE_COORD stored_bike_mtbikerace checkpoints_mtbike_x[1] checkpoints_mtbike_y[1]// MUST PLACE checkpoint[1] STRAIGHT AHEAD FROM START temp_int_mtbikerace = total_mtbikerace - 1 a = 0 WHILE a < total_mtbikerace c = a / 2 c *= 2 IF c = a//IS a AN EVEN NUMBER? x = 2.0 e = a * 4 temp_float =# e temp_float *= -3.0 y = temp_float ELSE x = -2.0 e = a - 1 e *= 4 temp_float =# e temp_float *= -1.2 y = temp_float ENDIF GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_mtbikerace x y z x y z GET_CAR_HEADING stored_bike_mtbikerace heading_mtbikerace z = checkpoints_mtbike_z[0] racer_cp_x_mtbikerace[a] = x racer_cp_y_mtbikerace[a] = y GET_GROUND_Z_FOR_3D_COORD x y z z racer_cp_z_mtbikerace[a] = z IF a < temp_int_mtbikerace CREATE_CAR racers_car_model_mtbikerace[a] x y z racers_mtbike[a] ADD_STUCK_CAR_CHECK_WITH_WARP racers_mtbike[a] 0.5 5000 TRUE FALSE TRUE 1 SET_CAR_TRACTION racers_mtbike[a] 1.5 MARK_MODEL_AS_NO_LONGER_NEEDED racers_car_model_mtbikerace[a] SET_CAR_HEADING racers_mtbike[a] heading_mtbikerace // LOCK_CAR_DOORS racers_mtbike[a] CARLOCK_LOCKED SET_CAR_PROOFS racers_mtbike[a] FALSE TRUE FALSE FALSE FALSE SET_CAR_WATERTIGHT racers_mtbike[a] TRUE SET_CAR_STRONG racers_mtbike[a] TRUE SET_UPSIDEDOWN_CAR_NOT_DAMAGED racers_mtbike[a] TRUE SET_CAR_STRAIGHT_LINE_DISTANCE racers_mtbike[a] 5 SET_CAN_BURST_CAR_TYRES racers_mtbike[a] FALSE CREATE_CHAR_INSIDE_CAR racers_mtbike[a] PEDTYPE_CIVMALE racer_model_mtbikerace[a] mtbikeracer[a] CLEAR_CHAR_LAST_DAMAGE_ENTITY mtbikeracer[a] MARK_MODEL_AS_NO_LONGER_NEEDED racer_model_mtbikerace[a] SET_CHAR_CAN_BE_SHOT_IN_VEHICLE mtbikeracer[a] FALSE // ADD_BLIP_FOR_CHAR mtbikeracer[a] racer_blip_mtbikerace[a] // CHANGE_BLIP_DISPLAY racer_blip_mtbikerace[a] MARKER_ONLY // CHANGE_BLIP_COLOUR racer_blip_mtbikerace[a] RED SET_CHAR_DECISION_MAKER mtbikeracer[a] dm_racers_mtbiker IMPROVE_CAR_BY_CHEATING racers_mtbike[a] TRUE CAR_SET_IDLE racers_mtbike[a] SET_CAR_DRIVING_STYLE racers_mtbike[a] 2 SET_CAR_CRUISE_SPEED racers_mtbike[a] set_opponents_speed SET_CAR_ONLY_DAMAGED_BY_PLAYER racers_mtbike[a] TRUE ELSE LVAR_INT spectator_mtbikerace[11] flag_girl_mtbikerace GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_mtbikerace -4.0435 6.5755 -0.8 x y z CREATE_RANDOM_CHAR x y z flag_girl_mtbikerace TASK_TURN_CHAR_TO_FACE_COORD flag_girl_mtbikerace checkpoints_mtbike_x[0] checkpoints_mtbike_y[0] checkpoints_mtbike_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_mtbikerace -5.6392 2.9435 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_mtbikerace[0] TASK_TURN_CHAR_TO_FACE_COORD spectator_mtbikerace[0] checkpoints_mtbike_x[0] checkpoints_mtbike_y[0] checkpoints_mtbike_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_mtbikerace -6.0071 -2.0778 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_mtbikerace[1] TASK_TURN_CHAR_TO_FACE_COORD spectator_mtbikerace[1] checkpoints_mtbike_x[0] checkpoints_mtbike_y[0] checkpoints_mtbike_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_mtbikerace -7.6039 -5.0807 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_mtbikerace[2] TASK_TURN_CHAR_TO_FACE_COORD spectator_mtbikerace[2] checkpoints_mtbike_x[0] checkpoints_mtbike_y[0] checkpoints_mtbike_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_mtbikerace -7.0724 -6.4057 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_mtbikerace[3] TASK_TURN_CHAR_TO_FACE_COORD spectator_mtbikerace[3] checkpoints_mtbike_x[0] checkpoints_mtbike_y[0] checkpoints_mtbike_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_mtbikerace -5.9988 -13.553 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_mtbikerace[4] TASK_TURN_CHAR_TO_FACE_COORD spectator_mtbikerace[4] checkpoints_mtbike_x[0] checkpoints_mtbike_y[0] checkpoints_mtbike_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_mtbikerace 6.0730 -15.2059 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_mtbikerace[5] TASK_TURN_CHAR_TO_FACE_COORD spectator_mtbikerace[5] checkpoints_mtbike_x[0] checkpoints_mtbike_y[0] checkpoints_mtbike_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_mtbikerace 7.2639 -12.9933 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_mtbikerace[6] TASK_TURN_CHAR_TO_FACE_COORD spectator_mtbikerace[6] checkpoints_mtbike_x[0] checkpoints_mtbike_y[0] checkpoints_mtbike_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_mtbikerace 5.8429 -7.7069 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_mtbikerace[7] TASK_TURN_CHAR_TO_FACE_COORD spectator_mtbikerace[7] checkpoints_mtbike_x[0] checkpoints_mtbike_y[0] checkpoints_mtbike_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_mtbikerace 8.4135 -3.7971 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_mtbikerace[8] TASK_TURN_CHAR_TO_FACE_COORD spectator_mtbikerace[8] checkpoints_mtbike_x[0] checkpoints_mtbike_y[0] checkpoints_mtbike_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_mtbikerace 6.2507 0.3634 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_mtbikerace[9] TASK_TURN_CHAR_TO_FACE_COORD spectator_mtbikerace[9] checkpoints_mtbike_x[0] checkpoints_mtbike_y[0] checkpoints_mtbike_z[0] GET_OFFSET_FROM_CAR_IN_WORLD_COORDS stored_bike_mtbikerace 8.6397 2.4190 -0.8 x y z CREATE_RANDOM_CHAR x y z spectator_mtbikerace[10] TASK_TURN_CHAR_TO_FACE_COORD spectator_mtbikerace[10] checkpoints_mtbike_x[0] checkpoints_mtbike_y[0] checkpoints_mtbike_z[0] DELETE_CAR stored_bike_mtbikerace REMOVE_BLIP first_blip_mtbikerace//PLAYERS STARTING COORDS ADD_BLIP_FOR_COORD racer_cp_x_mtbikerace[temp_int_mtbikerace] racer_cp_y_mtbikerace[temp_int_mtbikerace] racer_cp_z_mtbikerace[temp_int_mtbikerace] first_blip_mtbikerace SET_CAR_DENSITY_MULTIPLIER 0.5 mtbikeracer[a] = scplayer playaz_mtbikerace = a // CREATE_CAR racers_car_model_mtbikerace[a] racer_cp_x_mtbikerace[temp_int_mtbikerace] racer_cp_y_mtbikerace[temp_int_mtbikerace] racer_cp_z_mtbikerace[temp_int_mtbikerace] stored_bike_mtbikerace//DEBUG!!! // SET_CAR_HEADING stored_bike_mtbikerace heading_mtbikerace//DEBUG!!! ENDIF ++ a ENDWHILE ++ race_flag_mtbikerace IF NOT IS_CHAR_DEAD scplayer STORE_CAR_CHAR_IS_IN scplayer racers_mtbike[playaz_mtbikerace] SET_CAR_HEALTH racers_mtbike[playaz_mtbikerace] 500 CLEAR_CAR_LAST_DAMAGE_ENTITY racers_mtbike[playaz_mtbikerace] // SET_PLAYER_CONTROL Player1 ON SET_CHAR_COORDINATES scplayer racer_cp_x_mtbikerace[playaz_mtbikerace] racer_cp_y_mtbikerace[playaz_mtbikerace] racer_cp_z_mtbikerace[playaz_mtbikerace] SET_CAR_HEADING racers_mtbike[playaz_mtbikerace] checkpoint_headings[0] // TURN_CAR_TO_FACE_COORD racers_mtbike[playaz_mtbikerace] racer_cp_x_mtbikerace[0] racer_cp_y_mtbikerace[0] // SET_CHAR_HEADING scplayer 204.0 SET_CAMERA_BEHIND_PLAYER ENDIF SWITCH_WIDESCREEN ON WAIT 500 DO_FADE 1000 FADE_IN CLEAR_PRINTS WHILE GET_FADING_STATUS WAIT 0 ENDWHILE // PRINT_BIG MTROUTE 3000 6 IF mtbikerace_selection = 1 PRINT_NOW MTROUT1 3000 6 // PRINT_BIG MTROUT1 3000 5 // scotch bonnet ENDIF IF mtbikerace_selection = 2 // PRINT_BIG MTROUT2 3000 5 // birdseye PRINT_NOW MTROUT2 3000 6 ENDIF IF mtbikerace_selection = 3 // PRINT_BIG MTROUT3 3000 5 // cobra PRINT_NOW MTROUT3 3000 6 ENDIF ENDIF IF race_flag_mtbikerace = 3 IF NOT IS_CHAR_DEAD scplayer // IF NOT LOCATE_STOPPED_CHAR_IN_CAR_3D scplayer racer_cp_x_mtbikerace[playaz_mtbikerace] racer_cp_y_mtbikerace[playaz_mtbikerace] racer_cp_z_mtbikerace[playaz_mtbikerace] 2.0 2.0 2.0 1 temp_int_mtbikerace = total_mtbikerace - 1 a = 0 WHILE a < temp_int_mtbikerace IF IS_CAR_DEAD racers_mtbike[a] OR IS_CHAR_DEAD mtbikeracer[a] PRINT_NOW RACES25 5000 1 // you have been disqualifed GOTO mission_mtbikerace_failed ENDIF IF NOT IS_CAR_DEAD racers_mtbike[a] IF NOT IS_CHAR_DEAD mtbikeracer[a] IF NOT IS_CAR_HEALTH_GREATER racers_mtbike[a] 999 OR NOT IS_CHAR_IN_CAR mtbikeracer[a] racers_mtbike[a] PRINT_BIG RACES_3 1200 4 // "3..2..1.. GO GO GO!" DISPLAY_CAR_NAMES FALSE race_flag_mtbikerace = 7 ENDIF ENDIF ENDIF ++ a ENDWHILE // ELSE // /* IF NOT IS_CAR_DEAD racers_mtbike[0] POINT_CAMERA_AT_CAR racers_mtbike[0] FIXED INTERPOLATION ENDIF */ /* IF NOT IS_POINT_ON_SCREEN checkpoints_mtbike_x[1] checkpoints_mtbike_y[1] checkpoints_mtbike_z[1] 5.0 SET_CAMERA_BEHIND_PLAYER ENDIF */ // CLEAR_THIS_PRINT BIK1_1 SET_PLAYER_CONTROL player1 OFF SET_EVERYONE_IGNORE_PLAYER player1 TRUE SET_ALL_CARS_CAN_BE_DAMAGED FALSE PRINT_BIG RACES_4 1100 4 ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_RACE_START_3 LVAR_INT mtbike_timer mtbike_timer = game_timer + 999 ++ race_flag_mtbikerace /* IF mtbikeracer[playaz_mtbikerace] = scplayer STORE_CAR_CHAR_IS_IN scplayer racers_mtbike[playaz_mtbikerace] ENDIF */ ENDIF ENDIF IF race_flag_mtbikerace = 4 IF mtbike_timer < game_timer PRINT_BIG RACES_5 1100 4 // PRINT_BIG 3000 ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_RACE_START_2 mtbike_timer = game_timer + 999 ++ race_flag_mtbikerace ENDIF ENDIF IF race_flag_mtbikerace = 5 IF mtbike_timer < game_timer PRINT_BIG RACES_6 1100 4 ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_RACE_START_1 mtbike_timer = game_timer + 999 ++ race_flag_mtbikerace ENDIF ENDIF IF race_flag_mtbikerace = 6 IF mtbike_timer < game_timer IF NOT IS_CHAR_DEAD scplayer PRINT_BIG RACES_7 800 4 ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_RACE_START_GO // REPORT_MISSION_AUDIO_EVENT_AT_POSITION checkpoints_mtbike_x[0] checkpoints_mtbike_y[0] checkpoints_mtbike_z[0] SOUND_AIR_HORN SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SET_ALL_CARS_CAN_BE_DAMAGED TRUE RESTORE_CAMERA //SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF // PRINT_BIG MTROUTE 3000 6 DISPLAY_CAR_NAMES FALSE race_timer = game_timer temp_int_mtbikerace = total_mtbikerace - 1 a = 0 WHILE a < temp_int_mtbikerace IF NOT IS_CAR_DEAD racers_mtbike[a] SET_CAR_ONLY_DAMAGED_BY_PLAYER racers_mtbike[a] FALSE ENDIF ++ a ENDWHILE mtbike_timer = 0 //DISPLAY_ONSCREEN_TIMER_WITH_STRING mtbike_timer TIMER_UP RACES ++ race_flag_mtbikerace ENDIF ENDIF ENDIF IF race_flag_mtbikerace > 6 WHILE a < total_mtbikerace // VIEW_INTEGER_VARIABLE a a IF NOT IS_CHAR_DEAD scplayer IF NOT IS_CHAR_DEAD mtbikeracer[a] // IF player shoots char, mission failed IF NOT mtbikeracer[a] = scplayer IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR mtbikeracer[a] scplayer IF NOT IS_CAR_DEAD racers_mtbike[playaz_mtbikerace] IF NOT HAS_CHAR_BEEN_DAMAGED_BY_CAR mtbikeracer[a] racers_mtbike[playaz_mtbikerace] PRINT_NOW RACES25 5000 1 // you have been disqualifed GOTO mission_mtbikerace_failed ENDIF ENDIF ENDIF ENDIF IF race_flag_mtbikerace = 8 IF NOT mtbikeracer[a] = scplayer IF cpcounter_mtbikerace[playaz_mtbikerace] = cpcounter_mtbikerace[a] LVAR_FLOAT player_distance_from_cp_mtbikerace racer_distance_from_cp_mtbikerace GET_CHAR_COORDINATES mtbikeracer[a] x y z GET_DISTANCE_BETWEEN_COORDS_2D x y racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_distance_from_cp_mtbikerace GET_CHAR_COORDINATES scplayer x y z GET_DISTANCE_BETWEEN_COORDS_2D x y racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] player_distance_from_cp IF player_distance_from_cp > racer_distance_from_cp_mtbikerace ++ position_mtbikerace ENDIF ELSE IF cpcounter_mtbikerace[playaz_mtbikerace] < cpcounter_mtbikerace[a] ++ position_mtbikerace ENDIF ENDIF IF NOT IS_CHAR_DEAD mtbikeracer[a] IF NOT LOCATE_CHAR_ANY_MEANS_2D mtbikeracer[a] stuck_x[a] stuck_y[a] 3.0 3.0 0 GET_CHAR_COORDINATES mtbikeracer[a] stuck_x[a] stuck_y[a] z stuck_timer[a] = game_timer + 2000 ENDIF ENDIF IF NOT IS_CHAR_DEAD mtbikeracer[a] IF NOT IS_CAR_DEAD racers_mtbike[a] IF has_mtbiker_fallen[a] = 0 IF NOT IS_CHAR_IN_CAR mtbikeracer[a] racers_mtbike[a] has_mtbiker_fallen[a] = 1 ENDIF ENDIF IF has_mtbiker_fallen[a] = 1 IF IS_CHAR_IN_CAR mtbikeracer[a] racers_mtbike[a] CLEAR_CHAR_TASKS mtbikeracer[a] TASK_CAR_DRIVE_TO_COORD mtbikeracer[a] -1 racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] set_opponents_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS has_mtbiker_fallen[a] = 0 ENDIF ENDIF ENDIF IF LOCATE_CHAR_ANY_MEANS_2D mtbikeracer[a] stuck_x[a] stuck_y[a] 3.0 3.0 0 IF stuck_timer[a] < game_timer IF NOT IS_CHAR_ON_SCREEN mtbikeracer[a] IF NOT IS_CAR_DEAD racers_mtbike[a] IF NOT IS_CHAR_IN_CAR mtbikeracer[a] racers_mtbike[a] GET_DRIVER_OF_CAR racers_mtbike[a] char_person_on_bike IF char_person_on_bike = -1 WARP_CHAR_INTO_CAR mtbikeracer[a] racers_mtbike[a] ELSE MARK_CAR_AS_NO_LONGER_NEEDED racers_mtbike[a] CREATE_CAR racers_car_model_mtbikerace[a] x y z racers_mtbike[a] WARP_CHAR_INTO_CAR mtbikeracer[a] racers_mtbike[a] TURN_CAR_TO_FACE_COORD racers_mtbike[a] racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] //racer_cp_z_mtbikerace[a] TASK_CAR_DRIVE_TO_COORD mtbikeracer[a] -1 racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] set_opponents_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS ENDIF ENDIF ELSE DELETE_CAR racers_mtbike[a] CREATE_CAR racers_car_model_mtbikerace[a] x y z racers_mtbike[a] WARP_CHAR_INTO_CAR mtbikeracer[a] racers_mtbike[a] TURN_CAR_TO_FACE_COORD racers_mtbike[a] racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] //racer_cp_z_mtbikerace[a] TASK_CAR_DRIVE_TO_COORD mtbikeracer[a] -1 racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] set_opponents_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS ENDIF GET_CHAR_COORDINATES mtbikeracer[a] x y z GET_CLOSEST_CAR_NODE x y z x y z IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY x y z 10.0 10.0 10.0 IF NOT IS_POINT_ON_SCREEN x y z 4.0 SET_CHAR_COORDINATES mtbikeracer[a] x y z LVAR_INT stored_bike_mtbikerace IF IS_CHAR_IN_ANY_CAR mtbikeracer[a] STORE_CAR_CHAR_IS_IN_NO_SAVE mtbikeracer[a] stored_bike_mtbikerace //TURN_CAR_TO_FACE_COORD stored_bike_mtbikerace racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] //racer_cp_z_mtbikerace[a] SET_CHAR_HEADING mtbikeracer[a] checkpoint_headings[a] TASK_CAR_DRIVE_TO_COORD mtbikeracer[a] -1 racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] set_opponents_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_CHAR_IN_ANY_CAR mtbikeracer[a] temp_int_mtbikerace = cpcounter_mtbikerace[playaz_mtbikerace] + 5 STORE_CAR_CHAR_IS_IN_NO_SAVE mtbikeracer[a] stored_bike_mtbikerace // make opponents go faster if player is winning ENDIF r = 0 e = 0 WHILE r < total_mtbikerace LVAR_INT opponent_cpcounter_mtbikerace_minus4 opponent_cpcounter_mtbikerace_minus4 = cpcounter_mtbikerace[r] - 3 IF cpcounter_mtbikerace[a] < opponent_cpcounter_mtbikerace_minus4 ++ e ENDIF ++ r ENDWHILE IF e > 0 IF NOT IS_CHAR_DEAD mtbikeracer[a] IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer mtbikeracer[a] 30.0 30.0 5.0 0 IF NOT IS_CHAR_ON_SCREEN mtbikeracer[a] IF NOT IS_POINT_OBSCURED_BY_A_MISSION_ENTITY racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] 10.0 10.0 10.0 IF NOT IS_POINT_ON_SCREEN racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] 4.0 SET_CHAR_COORDINATES mtbikeracer[a] racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] IF IS_CHAR_IN_ANY_CAR mtbikeracer[a] STORE_CAR_CHAR_IS_IN_NO_SAVE mtbikeracer[a] stored_bike_mtbikerace // TURN_CAR_TO_FACE_COORD stored_bike_mtbikerace racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] //racer_cp_z_mtbikerace[a] SET_CHAR_HEADING mtbikeracer[a] checkpoint_headings[a] TASK_CAR_DRIVE_TO_COORD mtbikeracer[a] -1 racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] set_opponents_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS ELSE CREATE_CAR racers_car_model_mtbikerace[a] racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] racers_mtbike[a] WARP_CHAR_INTO_CAR mtbikeracer[a] racers_mtbike[a] // TURN_CAR_TO_FACE_COORD racers_mtbike[a] racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] //racer_cp_z_mtbikerace[a] SET_CHAR_HEADING mtbikeracer[a] checkpoint_headings[a] TASK_CAR_DRIVE_TO_COORD mtbikeracer[a] -1 racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] set_opponents_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // check if player abandons race IF out_of_car_flag_mtbike = 0 IF mtbikeracer[a] = scplayer IF NOT LOCATE_CHAR_ANY_MEANS_3D mtbikeracer[a] racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] 500.0 500.0 500.0 0 PRINT_NOW RACES25 5000 1 //"~r~You failed to win the race!" GOTO mission_mtbikerace_failed ENDIF ENDIF ENDIF IF mtbikerace_selection = 3 IF cpcounter_mtbikerace[a] < 13 AND cpcounter_mtbikerace[a] > 4 IF LOCATE_CHAR_IN_CAR_3D mtbikeracer[a] racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] 4.0 4.0 1.5 0 GOTO passed_a_checkpoint_mtbikerace ENDIF ELSE IF LOCATE_CHAR_IN_CAR_3D mtbikeracer[a] racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] 15.0 15.0 5.0 0 GOTO passed_a_checkpoint_mtbikerace ENDIF ENDIF ELSE IF LOCATE_CHAR_IN_CAR_3D mtbikeracer[a] racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] 15.0 15.0 5.0 0 GOTO passed_a_checkpoint_mtbikerace ENDIF ENDIF ELSE IF NOT mtbikeracer[a] = scplayer IF NOT IS_CHAR_IN_WATER mtbikeracer[a] cpcounter_mtbikerace[a] = 0 ENDIF ENDIF ENDIF exit_locate_loop_mtbikerace: IF mtbikeracer[a] = scplayer //////////////////////////////// //OUT OF CAR TIMER FOR PLAYER //////////////////////////////// IF NOT IS_CAR_DEAD racers_mtbike[playaz_mtbikerace] // CHECK IF PLAYER FALLS OFF MOUNTAIN GET_CHAR_COORDINATES mtbikeracer[playaz_mtbikerace] coord_racers_current_x[a] coord_racers_current_y[a] coord_racers_current_z[a] GET_CAR_COORDINATES racers_mtbike[playaz_mtbikerace] coord_racers_bikes_current_x[0] coord_racers_bikes_current_y[0] coord_racers_bikes_current_z[0] coord_racers_current_z[a] -= racer_cp_z_mtbikerace[a] coord_racers_bikes_current_z[0] -=racer_cp_z_mtbikerace[a] IF coord_racers_current_z[a] < -24.5 OR coord_racers_bikes_current_z[0] < -24.5 // IF IS_CHAR_IN_AIR scplayer IF flag_is_player_falling = 0 flag_is_player_falling = 1 // LVAR_INT out_of_car_timer falling_timer = game_timer + 1500 // one and a half seconds if player is past the z buffer until hes warped ENDIF IF flag_is_player_falling = 1 seconds = falling_timer - game_timer seconds /= 1000 IF seconds < 1 seconds = 0 ENDIF IF falling_timer < game_timer last_check_point = cpcounter_mtbikerace[a] - 1 IF Player_fall_state <= 2 //when player isn’t using the chute IF Player_fall_state > 0 Player_fall_state = 6 ENDIF SET_PLAYER_CONTROL Player1 OFF SET_PLAYER_CONTROL Player1 OFF SET_PLAYER_CONTROL Player1 OFF DO_FADE 500 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE IF NOT IS_CAR_DEAD racers_mtbike[playaz_mtbikerace] IF NOT IS_CHAR_IN_CAR mtbikeracer[a] racers_mtbike[playaz_mtbikerace] WARP_CHAR_INTO_CAR mtbikeracer[a] racers_mtbike[playaz_mtbikerace] ENDIF SET_CAR_COORDINATES racers_mtbike[playaz_mtbikerace] checkpoints_mtbike_x[last_check_point] checkpoints_mtbike_y[last_check_point] checkpoints_mtbike_z[last_check_point] SET_CAR_HEADING racers_mtbike[playaz_mtbikerace] checkpoint_headings[last_check_point] // SET_CAR_HEADING racers_mtbike[playaz_mtbikerace] new_heading_mtbike // TURN_CAR_TO_FACE_COORD racers_mtbike[playaz_mtbikerace] racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] ENDIF DO_FADE 500 FADE_IN SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE SET_CAMERA_BEHIND_PLAYER SET_PLAYER_CONTROL Player1 ON ELSE PRINT_NOW RACES25 5000 1 //"~r~You failed to win the race!" // abandoned race GOTO mission_mtbikerace_failed ENDIF ENDIF ENDIF ELSE IF flag_is_player_falling = 1 flag_is_player_falling = 0 ENDIF ENDIF IF NOT IS_CAR_DEAD racers_mtbike[playaz_mtbikerace] IF NOT IS_CHAR_IN_CAR scplayer racers_mtbike[playaz_mtbikerace] IF out_of_car_flag_mtbike = 0 DELETE_CHECKPOINT cp_marker_mtbikerace REMOVE_BLIP first_blip_mtbikerace IF NOT IS_CAR_DEAD racers_mtbike[playaz_mtbikerace] ADD_BLIP_FOR_CAR racers_mtbike[playaz_mtbikerace] first_blip_mtbikerace SET_BLIP_AS_FRIENDLY first_blip_mtbikerace TRUE ENDIF stored_checkpoint_when_not_on_bike = a racer_cp_y_mtbikerace[a] += 1000.0 out_of_car_timer = game_timer + 25400 out_of_car_flag_mtbike = 1 ENDIF seconds = out_of_car_timer - game_timer seconds /= 1000 IF seconds < 1 seconds = 0 ENDIF IF out_of_car_timer < game_timer PRINT_NOW RACES20 5000 1//~r~You have been disqualified for leaving your car. GOTO mission_mtbikerace_failed RETURN ENDIF IF seconds = 1 ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE PRINT_WITH_NUMBER_NOW RACE_51 seconds 200 1 //You have ~1~ second to return to your car. ELSE ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE PRINT_WITH_NUMBER_NOW RACES50 seconds 200 1 //You have ~1~ seconds to return to your car. ENDIF IF cpcounter_mtbikerace[a] = total_checkpoints_mtbike_mtbikerace IF mtbikeracer[a] = scplayer IF mtbikerace_best_times[mtbikerace_selection] < game_timer mtbikerace_best_times[mtbikerace_selection] = game_timer race_timer_temp = game_timer - race_timer mtbikerace_best_times[mtbikerace_selection] = game_timer REGISTER_FASTEST_TIME 12 mtbikerace_best_times[mtbikerace_selection] race_timer_temp /= 1000 mins = race_timer_temp / 60 temp_int_mtbikerace = mins * 60 seconds = race_timer_temp - temp_int_mtbikerace // NEW best time IF seconds > 9 PRINT_WITH_2_NUMBERS_BIG LAPMTB2 mins seconds 5000 6 //"Time: ~1~:~1~" ELSE PRINT_WITH_2_NUMBERS_BIG LAPMTB mins seconds 5000 6 //"Time: ~1~:0~1~" ENDIF ELSE // CURRENT BEST race time race_timer_temp = mtbikerace_best_times[mtbikerace_selection] - race_timer race_timer_temp /= 1000 mins = race_timer_temp / 60 temp_int_mtbikerace = mins * 60 seconds = race_timer_temp - temp_int_mtbikerace // best time IF seconds > 9 PRINT_WITH_2_NUMBERS_BIG RACES08 mins seconds 5000 6 //"Time: ~1~:~1~" ELSE PRINT_WITH_2_NUMBERS_BIG RACES22 mins seconds 5000 6 //"Time: ~1~:0~1~" ENDIF // Your race time race_timer_temp = game_timer - race_timer race_timer_temp /= 1000 mins = race_timer_temp / 60 temp_int_mtbikerace = mins * 60 seconds = race_timer_temp - temp_int_mtbikerace IF seconds > 9 PRINT_WITH_2_NUMBERS_BIG RACE_52 mins seconds 5000 4 //"Time: ~1~:~1~" ELSE PRINT_WITH_2_NUMBERS_BIG RACE_53 mins seconds 5000 4 //"Time: ~1~:0~1~" ENDIF ENDIF position_mtbikerace++ IF position_mtbikerace = 1 GOTO mission_mtbikerace_passed ELSE GOTO mission_mtbikerace_failed ENDIF ENDIF ENDIF ELSE IF out_of_car_flag_mtbike = 1 CLEAR_THIS_PRINT RACES50 REMOVE_BLIP first_blip_mtbikerace racer_cp_y_mtbikerace[a] -= 1000.0 c = 0 temp_int_mtbikerace = total_racers_mtbikerace - 1 ADD_BLIP_FOR_COORD racer_cp_x_mtbikerace[stored_checkpoint_when_not_on_bike] racer_cp_y_mtbikerace[stored_checkpoint_when_not_on_bike] racer_cp_z_mtbikerace[stored_checkpoint_when_not_on_bike] first_blip_mtbikerace CHANGE_BLIP_COLOUR first_blip_mtbikerace RED CHANGE_BLIP_DISPLAY first_blip_mtbikerace BLIP_ONLY CHANGE_BLIP_SCALE first_blip_mtbikerace 3 IF cpcounter_mtbikerace[stored_checkpoint_when_not_on_bike] = total_checkpoints_mtbike_mtbikerace_minus_1 // AND lap_cpcounter[a] = total_laps_minus_1 CREATE_CHECKPOINT CHECKPOINT_ENDTUBE racer_cp_x_mtbikerace[stored_checkpoint_when_not_on_bike] racer_cp_y_mtbikerace[stored_checkpoint_when_not_on_bike] racer_cp_z_mtbikerace[stored_checkpoint_when_not_on_bike] 0.0 0.0 0.0 6.0 cp_marker_mtbikerace ELSE temp_int_mtbikerace = cpcounter_mtbikerace[stored_checkpoint_when_not_on_bike] ++ temp_int_mtbikerace IF cpcounter_mtbikerace[stored_checkpoint_when_not_on_bike] = total_checkpoints_mtbike_mtbikerace_minus_1 temp_int_mtbikerace = 1 ENDIF CREATE_CHECKPOINT CHECKPOINT_TUBE racer_cp_x_mtbikerace[stored_checkpoint_when_not_on_bike] racer_cp_y_mtbikerace[stored_checkpoint_when_not_on_bike] racer_cp_z_mtbikerace[stored_checkpoint_when_not_on_bike] second_cp_mtbikeracex second_cp_mtbikeracey second_cp_mtbikeracez 6.0 cp_marker_mtbikerace ENDIF out_of_car_flag_mtbike = 0 ENDIF ENDIF ENDIF ELSE // if car is dead PRINT_NOW RACES24 5000 1//~r~You wrecked yer bike GOTO mission_mtbikerace_failed RETURN ENDIF ELSE // warpinbg opponents back tot he previous check point if they fall off cliff IF NOT IS_CHAR_DEAD mtbikeracer[a] IF NOT IS_CAR_DEAD racers_mtbike[a] GET_CHAR_COORDINATES mtbikeracer[a] coord_racers_current_x[a] coord_racers_current_y[a] coord_racers_current_z[a] coord_racers_current_z[a] -= racer_cp_z_mtbikerace[a] IF coord_racers_current_z[a] < -15.5 IF NOT IS_POINT_ON_SCREEN checkpoints_mtbike_x[last_check_point] checkpoints_mtbike_y[last_check_point] checkpoints_mtbike_z[last_check_point] 10.0 last_check_point = cpcounter_mtbikerace[a] - 1 IF IS_CHAR_IN_CAR mtbikeracer[a] racers_mtbike[a] SET_CAR_COORDINATES racers_mtbike[a] checkpoints_mtbike_x[last_check_point] checkpoints_mtbike_y[last_check_point] checkpoints_mtbike_z[last_check_point] SET_CAR_HEADING racers_mtbike[a] checkpoint_headings[a] ELSE GET_DRIVER_OF_CAR racers_mtbike[a] char_person_on_bike IF char_person_on_bike = -1 WARP_CHAR_INTO_CAR mtbikeracer[a] racers_mtbike[a] SET_CAR_COORDINATES racers_mtbike[a] checkpoints_mtbike_x[last_check_point] checkpoints_mtbike_y[last_check_point] checkpoints_mtbike_z[last_check_point] ELSE MARK_CAR_AS_NO_LONGER_NEEDED racers_mtbike[a] CREATE_CAR racers_car_model_mtbikerace[a] checkpoints_mtbike_x[last_check_point] checkpoints_mtbike_y[last_check_point] checkpoints_mtbike_z[last_check_point] racers_mtbike[a] WARP_CHAR_INTO_CAR mtbikeracer[a] racers_mtbike[a] // SET_CAR_HEADING racers_mtbike[a] checkpoint_headings[last_check_point] // TURN_CAR_TO_FACE_COORD racers_mtbike[a] racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] //racer_cp_z_mtbikerace[a] ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // is racer is player //////////////////////////////////////////////////////// ENDIF ++ a ENDWHILE IF position_mtbikerace <= 2 set_opponents_speed = opponents_speed_fast IF mtbikerace_selection = 1 IF cpcounter_mtbikerace[a] = 17 OR cpcounter_mtbikerace[a] = 16 set_opponents_speed = opponents_speed_really_slow ENDIF ENDIF ENDIF IF position_mtbikerace > 2 AND position_mtbikerace < 4 set_opponents_speed = opponents_speed_slow IF mtbikerace_selection = 1 IF cpcounter_mtbikerace[a] = 17 OR cpcounter_mtbikerace[a] = 16 set_opponents_speed = opponents_speed_really_slow ENDIF ENDIF ENDIF IF position_mtbikerace = 6 set_opponents_speed = opponents_speed_really_slow ENDIF ++position_mtbikerace // Rendering the interface. IS_WIDGET_PRESSED WIDGET_RACING // Enable the widget. LVAR_INT nElapsedSeconds nElapsedSeconds = game_timer - race_timer nElapsedSeconds /= 1000 LVAR_FLOAT f0, f1, f2 f0 =# position_mtbikerace f1 =# total_racers_mtbikerace f2 =# nElapsedSeconds SET_WIDGET_VALUE3 WIDGET_RACING f0, f1, f2 // Send the current position, max racers, and the time to the widget. SET_WIDGET_VALUE2 WIDGET_RACING 0.0 0.0 // Make sure the widget knows there's no laps to render. ENDIF GOTO mission_mtbikerace_loop /* // CUTSCENE LVAR_FLOAT coord_1st_place_position_x coord_1st_place_position_y coord_1st_place_position_z LVAR_FLOAT coord_2nd_place_position_x coord_2nd_place_position_y coord_2nd_place_position_z LVAR_FLOAT coord_3rd_place_position_x coord_3rd_place_position_y coord_3rd_place_position_z LVAR_FLOAT coord_players_position_x coord_players_position_y coord_players_position_z LVAR_INT flag_cutscene_mtbikerace award_ceremony_mtbike_race: coord_1st_place_position_x = -2404.1289 coord_1st_place_position_y = -2206.4763 coord_1st_place_position_z = 33.4909 coord_2nd_place_position_x = -2404.1821 coord_2nd_place_position_y = -2205.1987 coord_2nd_place_position_z = 33.4909 coord_3rd_place_position_x = -2403.8489 coord_3rd_place_position_y = -2208.4829 coord_3rd_place_position_z = 33.4909 flag_cutscene_mtbikerace = 0 IF position_mtbikerace = 1 coord_players_position_x = coord_1st_place_position_x coord_players_position_y = coord_1st_place_position_y coord_players_position_z = coord_1st_place_position_z ENDIF IF position_mtbikerace = 2 coord_players_position_x = coord_2nd_place_position_x coord_players_position_y = coord_2nd_place_position_y coord_players_position_z = coord_2nd_place_position_z ENDIF IF position_mtbikerace = 3 coord_players_position_x = coord_3rd_place_position_x coord_players_position_y = coord_3rd_place_position_y coord_players_position_z = coord_3rd_place_position_z ENDIF IF position_mtbikerace > 3 // Player in audiance coord_players_position_x = -2404.3813 coord_players_position_y = -2212.2981 coord_players_position_z = 32.3042 ENDIF IF IS_CHAR_IN_ANY_CAR scplayer WARP_CHAR_FROM_CAR_TO_COORD scplayer coord_players_position_x coord_players_position_y coord_players_position_z ELSE SET_CHAR_COORDINATES scplayer coord_players_position_x coord_players_position_y coord_players_position_z ENDIF SET_CHAR_HEADING scplayer 270.0 TIMERA = 0 TIMERB = 0 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON WHILE NOT flag_cutscene_mtbikerace = 10 WAIT 0 IF flag_cutscene_mtbikerace = 0 SET_FIXED_CAMERA_POSITION -2399.4277 -2207.4241 32.9310 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2401.7283 -2207.2827 33.8958 JUMP_CUT flag_cutscene_mtbikerace = 1 ENDIF // SAFETY IF TIMERA > 5000 flag_cutscene_mtbikerace = 10 ENDIF ENDWHILE IF NOT IS_CHAR_DEAD scplayer SET_PLAYER_CONTROL player1 ON SWITCH_WIDESCREEN OFF RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER ENDIF RETURN */ passed_a_checkpoint_mtbikerace: IF race_flag_mtbikerace = 7 race_flag_mtbikerace = 8 ENDIF IF mtbikeracer[a] = scplayer ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE REMOVE_BLIP first_blip_mtbikerace ENDIF ++ cpcounter_mtbikerace[a] IF cpcounter_mtbikerace[a] = total_checkpoints_mtbike_mtbikerace // GOSUB award_ceremony_mtbike_race IF mtbikeracer[a] = scplayer IF mtbikerace_best_times[mtbikerace_selection] < game_timer // new fastest time! mtbikerace_best_times[mtbikerace_selection] = game_timer race_timer_temp = game_timer - race_timer mtbikerace_best_times[mtbikerace_selection] = game_timer REGISTER_FASTEST_TIME 12 mtbikerace_best_times[mtbikerace_selection] race_timer_temp /= 1000 mins = race_timer_temp / 60 temp_int_mtbikerace = mins * 60 seconds = race_timer_temp - temp_int_mtbikerace IF seconds > 9 // PRINT_WITH_2_NUMBERS_NOW RACES08 mins seconds 5000 6 //"Time: ~1~:~1~" PRINT_WITH_2_NUMBERS_BIG LAPMTB2 mins seconds 5000 6 //"Time: ~1~:~1~" ELSE // PRINT_WITH_2_NUMBERS_NOW RACES22 mins seconds 5000 6 //"Time: ~1~:0~1~" PRINT_WITH_2_NUMBERS_BIG LAPMTB mins seconds 5000 6 //"Time: ~1~:0~1~" ENDIF ELSE // no records broken race_timer_temp = mtbikerace_best_times[mtbikerace_selection] - race_timer // REGISTER_FASTEST_TIME 12 mtbike_timer race_timer_temp /= 1000 mins = race_timer_temp / 60 temp_int_mtbikerace = mins * 60 seconds = race_timer_temp - temp_int_mtbikerace IF seconds > 9 // PRINT_WITH_2_NUMBERS_NOW RACES08 mins seconds 5000 6 //"Time: ~1~:~1~" PRINT_WITH_2_NUMBERS_BIG RACES08 mins seconds 5000 6 //"Time: ~1~:~1~" ELSE // PRINT_WITH_2_NUMBERS_NOW RACES22 mins seconds 5000 6 //"Time: ~1~:0~1~" PRINT_WITH_2_NUMBERS_BIG RACES22 mins seconds 5000 6 //"Time: ~1~:~1~" ENDIF race_timer_temp = game_timer - race_timer race_timer_temp /= 1000 mins = race_timer_temp / 60 temp_int_mtbikerace = mins * 60 seconds = race_timer_temp - temp_int_mtbikerace IF seconds > 9 // PRINT_WITH_2_NUMBERS_NOW RACES08 mins seconds 5000 6 //"Time: ~1~:~1~" PRINT_WITH_2_NUMBERS_BIG TIME mins seconds 5000 4 //"Time: ~1~:~1~" ELSE // PRINT_WITH_2_NUMBERS_NOW RACES22 mins seconds 5000 6 //"Time: ~1~:0~1~" PRINT_WITH_2_NUMBERS_BIG TIME_0 mins seconds 5000 4 //"Time: ~1~:~1~" ENDIF ENDIF position_mtbikerace++ IF position_mtbikerace = 1 GOTO mission_mtbikerace_passed ELSE GOTO mission_mtbikerace_failed ENDIF ELSE TASK_CAR_TEMP_ACTION mtbikeracer[a] -1 TEMPACT_HANDBRAKESTRAIGHT 2000000 last_check_point = cpcounter_mtbikerace[a] - 1 IF NOT IS_POINT_ON_SCREEN racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] 30.0 IF NOT IS_CAR_DEAD stored_bike_mtbikerace TURN_CAR_TO_FACE_COORD stored_bike_mtbikerace checkpoints_mtbike_x[last_check_point] checkpoints_mtbike_y[last_check_point]// MUST PLACE checkpoint[1] STRAIGHT AHEAD FROM START ENDIF ENDIF ENDIF ENDIF temp_int_mtbikerace = cpcounter_mtbikerace[a] racer_cp_x_mtbikerace[a] = checkpoints_mtbike_x[temp_int_mtbikerace] racer_cp_y_mtbikerace[a] = checkpoints_mtbike_y[temp_int_mtbikerace] racer_cp_z_mtbikerace[a] = checkpoints_mtbike_z[temp_int_mtbikerace] IF mtbikeracer[a] = scplayer ++ temp_int_mtbikerace LVAR_FLOAT second_cp_mtbikeracex second_cp_mtbikeracey second_cp_mtbikeracez second_cp_mtbikeracex = checkpoints_mtbike_x[temp_int_mtbikerace] second_cp_mtbikeracey = checkpoints_mtbike_y[temp_int_mtbikerace] second_cp_mtbikeracez = checkpoints_mtbike_z[temp_int_mtbikerace] ADD_BLIP_FOR_COORD racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] first_blip_mtbikerace CHANGE_BLIP_COLOUR first_blip_mtbikerace RED CHANGE_BLIP_DISPLAY first_blip_mtbikerace BLIP_ONLY CHANGE_BLIP_SCALE first_blip_mtbikerace 3 IF race_flag_mtbikerace = 1 //MAKE THE SCRIPT COMPILE CREATE_CHECKPOINT CHECKPOINT_TUBE racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] second_cp_mtbikeracex second_cp_mtbikeracey second_cp_mtbikeracez 6.0 cp_marker_mtbikerace ENDIF DELETE_CHECKPOINT cp_marker_mtbikerace IF cpcounter_mtbikerace[a] < total_checkpoints_mtbike_mtbikerace_minus_1 LVAR_INT cp_marker_mtbikerace CREATE_CHECKPOINT CHECKPOINT_TUBE racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] second_cp_mtbikeracex second_cp_mtbikeracey second_cp_mtbikeracez 6.0 cp_marker_mtbikerace ELSE CREATE_CHECKPOINT CHECKPOINT_ENDTUBE racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] second_cp_mtbikeracex second_cp_mtbikeracey second_cp_mtbikeracez 6.0 cp_marker_mtbikerace ENDIF IF cpcounter_mtbikerace[a] = 3 MARK_CHAR_AS_NO_LONGER_NEEDED flag_girl_mtbikerace MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[0] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[1] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[2] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[3] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[4] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[5] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[6] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[7] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[8] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[9] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[10] ENDIF ELSE IF mtbikerace_selection = 3 IF NOT IS_CAR_DEAD racers_mtbike[a] IF cpcounter_mtbikerace[a] = 1 IF a = 0 GENERATE_RANDOM_INT_IN_RANGE 832 835 random_number_mtbike START_PLAYBACK_RECORDED_CAR racers_mtbike[a] random_number_mtbike SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE mtbikeracer[a] KNOCKOFFBIKE_NEVER ENDIF IF a = 1 GENERATE_RANDOM_INT_IN_RANGE 829 832 random_number_mtbike START_PLAYBACK_RECORDED_CAR racers_mtbike[a] random_number_mtbike SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE mtbikeracer[a] KNOCKOFFBIKE_NEVER ENDIF ENDIF IF cpcounter_mtbikerace[a] = 13 IS_PLAYBACK_GOING_ON_FOR_CAR racers_mtbike[a] STOP_PLAYBACK_RECORDED_CAR racers_mtbike[a] // REMOVE_CAR_RECORDING 832 IF NOT cpcounter_mtbikerace[a] = total_checkpoints_mtbike_mtbikerace SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE mtbikeracer[a] KNOCKOFFBIKE_DEFAULT TASK_CAR_DRIVE_TO_COORD mtbikeracer[a] -1 racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] set_opponents_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS GOTO exit_locate_loop_mtbikerace ENDIF ENDIF IF cpcounter_mtbikerace[a] > 13 IF NOT cpcounter_mtbikerace[a] = total_checkpoints_mtbike_mtbikerace TASK_CAR_DRIVE_TO_COORD mtbikeracer[a] -1 racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] set_opponents_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS GOTO exit_locate_loop_mtbikerace ENDIF ENDIF ENDIF ELSE IF NOT cpcounter_mtbikerace[a] = total_checkpoints_mtbike_mtbikerace TASK_CAR_DRIVE_TO_COORD mtbikeracer[a] -1 racer_cp_x_mtbikerace[a] racer_cp_y_mtbikerace[a] racer_cp_z_mtbikerace[a] set_opponents_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS GOTO exit_locate_loop_mtbikerace ENDIF IF cpcounter_mtbikerace[a] >= total_checkpoints_mtbike_mtbikerace IF NOT IS_CAR_DEAD racers_mtbike[a] IF NOT IS_CHAR_DEAD mtbikeracer[a] IF IS_CHAR_IN_CAR mtbikeracer[a] racers_mtbike[a] IF flag_make_char_go_past_final_checkpoint[a] = 0 CLEAR_CHAR_TASKS mtbikeracer[a] flag_make_char_go_past_final_checkpoint[a] = 1 TASK_CAR_DRIVE_TO_COORD mtbikeracer[a] -1 -2399.8628 -2206.5488 32.5652 set_opponents_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF GOTO exit_locate_loop_mtbikerace // Mission mtbikerace failed mission_mtbikerace_failed: PRINT_BIG RACES_8 5000 1 // Loser! RETURN // mission mtbikerace passed mission_mtbikerace_passed: e = mtbikerace_selection + 1 e *= 10000 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 IF mtbikerace_selection = 1 PRINT_BIG RACES18 500 1 // Winner! ADD_SCORE player1 500 PRINT_NOW MTWIN1 5000 1 // You won! The 'Birdseye Winder' is now available PLAY_MISSION_PASSED_TUNE 1 ENDIF IF mtbikerace_selection = 2 PRINT_NOW MTWIN2 5000 1 // You won! The 'Cobra Run' is now available PRINT_BIG RACES18 1000 1 // Winner! ADD_SCORE player1 1000 PLAY_MISSION_PASSED_TUNE 1 ENDIF IF mtbikerace_selection = 3 PRINT_BIG RACES18 2000 1 // Winner! ADD_SCORE player1 2000 PRINT_NOW MTWIN3 5000 1 // You have completed all routes for 'The Chiliad Challange' PLAY_MISSION_PASSED_TUNE 2 ENDIF //PLAY_MISSION_PASSED_TUNE 2 ++ mtbikerace_selection IF mtbikerace_selection > 3 IF flag_mtbike_passed_1stime = 0 REGISTER_ODDJOB_MISSION_PASSED PLAYER_MADE_PROGRESS 1 flag_mtbike_passed_1stime = 1 ENDIF mtbikerace_selection = 1 //reset the race ENDIF RETURN // mission cleanup mission_cleanup_mtbikerace: flag_player_on_mission = 0 IF NOT IS_CAR_DEAD racers_mtbike[0] IF IS_RECORDING_GOING_ON_FOR_CAR racers_mtbike[0] STOP_PLAYBACK_RECORDED_CAR racers_mtbike[0] ENDIF ENDIF IF NOT IS_CAR_DEAD racers_mtbike[1] IF IS_RECORDING_GOING_ON_FOR_CAR racers_mtbike[1] STOP_PLAYBACK_RECORDED_CAR racers_mtbike[1] ENDIF ENDIF /* IF NOT IS_CAR_DEAD racers_mtbike[0] IF NOT IS_CHAR_DEAD mtbikeracer[0] IF IS_CHAR_IN_CAR mtbikeracer[0] racers_mtbike[0] CLEAR_CHAR_TASKS mtbikeracer[0] TASK_CAR_DRIVE_TO_COORD mtbikeracer[0] -1 -2399.8628 -2206.5488 32.5652 set_opponents_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD racers_mtbike[1] IF NOT IS_CHAR_DEAD mtbikeracer[1] IF IS_CHAR_IN_CAR mtbikeracer[1] racers_mtbike[1] CLEAR_CHAR_TASKS mtbikeracer[1] TASK_CAR_DRIVE_TO_COORD mtbikeracer[1] -1 -2399.8628 -2206.5488 32.5652 set_opponents_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD racers_mtbike[2] IF NOT IS_CHAR_DEAD mtbikeracer[2] IF IS_CHAR_IN_CAR mtbikeracer[2] racers_mtbike[2] CLEAR_CHAR_TASKS mtbikeracer[2] TASK_CAR_DRIVE_TO_COORD mtbikeracer[2] -1 -2399.8628 -2206.5488 32.5652 set_opponents_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD racers_mtbike[3] IF NOT IS_CHAR_DEAD mtbikeracer[3] IF IS_CHAR_IN_CAR mtbikeracer[3] racers_mtbike[3] CLEAR_CHAR_TASKS mtbikeracer[3] TASK_CAR_DRIVE_TO_COORD mtbikeracer[3] -1 -2399.8628 -2206.5488 32.5652 set_opponents_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD racers_mtbike[4] IF NOT IS_CHAR_DEAD mtbikeracer[4] IF IS_CHAR_IN_CAR mtbikeracer[4] racers_mtbike[4] CLEAR_CHAR_TASKS mtbikeracer[4] TASK_CAR_DRIVE_TO_COORD mtbikeracer[4] -1 -2399.8628 -2206.5488 32.5652 set_opponents_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS ENDIF ENDIF ENDIF IF NOT IS_CAR_DEAD racers_mtbike[5] IF NOT IS_CHAR_DEAD mtbikeracer[5] IF IS_CHAR_IN_CAR mtbikeracer[5] racers_mtbike[5] CLEAR_CHAR_TASKS mtbikeracer[5] TASK_CAR_DRIVE_TO_COORD mtbikeracer[5] -1 -2399.8628 -2206.5488 32.5652 set_opponents_speed MODE_RACING TRUE DRIVINGMODE_SLOWDOWNFORCARS ENDIF ENDIF ENDIF */ REMOVE_CAR_RECORDING 829 REMOVE_CAR_RECORDING 830 REMOVE_CAR_RECORDING 831 REMOVE_CAR_RECORDING 832 REMOVE_CAR_RECORDING 833 REMOVE_CAR_RECORDING 834 MARK_MODEL_AS_NO_LONGER_NEEDED racer_model_mtbikerace[0] MARK_MODEL_AS_NO_LONGER_NEEDED racer_model_mtbikerace[1] MARK_MODEL_AS_NO_LONGER_NEEDED racer_model_mtbikerace[2] MARK_MODEL_AS_NO_LONGER_NEEDED racer_model_mtbikerace[3] MARK_MODEL_AS_NO_LONGER_NEEDED racer_model_mtbikerace[4] MARK_MODEL_AS_NO_LONGER_NEEDED racer_model_mtbikerace[5] MARK_MODEL_AS_NO_LONGER_NEEDED racers_car_model_mtbikerace[0] MARK_MODEL_AS_NO_LONGER_NEEDED racers_car_model_mtbikerace[1] MARK_MODEL_AS_NO_LONGER_NEEDED racers_car_model_mtbikerace[2] MARK_MODEL_AS_NO_LONGER_NEEDED racers_car_model_mtbikerace[3] MARK_MODEL_AS_NO_LONGER_NEEDED racers_car_model_mtbikerace[4] MARK_MODEL_AS_NO_LONGER_NEEDED racers_car_model_mtbikerace[5] MARK_CHAR_AS_NO_LONGER_NEEDED flag_girl_mtbikerace MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[0] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[1] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[2] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[3] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[4] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[5] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[6] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[7] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[8] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[9] MARK_CHAR_AS_NO_LONGER_NEEDED spectator_mtbikerace[10] /* a = 0 WHILE total_racers_mtbikerace > a WAIT 0 MARK_CAR_AS_NO_LONGER_NEEDED racers_mtbike[a] MARK_CHAR_AS_NO_LONGER_NEEDED mtbikeracer[a] a++ ENDWHILE */ DISPLAY_CAR_NAMES TRUE //CLEAR_ONSCREEN_TIMER mtbike_timer REMOVE_BLIP first_blip_mtbikerace /*REMOVE_BLIP racer_blip_mtbikerace[0] REMOVE_BLIP racer_blip_mtbikerace[1] REMOVE_BLIP racer_blip_mtbikerace[2] REMOVE_BLIP racer_blip_mtbikerace[3] REMOVE_BLIP racer_blip_mtbikerace[4] REMOVE_BLIP racer_blip_mtbikerace[5] */ // switching ON the roads at the mountain // SWITCH_ROADS_ON -2999.5276 -2629.4624 0.8299 -1612.5211 -979.4300 480.2183 GET_GAME_TIMER timer_mobile_start //DISABLE_ALL_ENTRY_EXITS FALSE //SET_CAR_DENSITY_MULTIPLIER 1.0 //SET_PED_DENSITY_MULTIPLIER 1.0 SET_MESSAGE_FORMATTING FALSE 380 464 USE_TEXT_COMMANDS FALSE MISSION_HAS_FINISHED RETURN } //INTRO TEXT FOR POSITION + TIMERS //SPECIAL EVENTS - VEHICLE OR ACCIDENT . ROADWORKS JUMP . BREAKFAST . DRIVEBY . NOS . STINGER //CUTSCENES ? //FLAG WAVER //CLEANUP //PED MODELS //SCPECTATOR PED SEQUENCES MISSION_START // ***************************************************************************************** // *** *** // *** Date: 02/07/2004 Time: 15:53:56 Author: Chris Rothwell *** // *** *** // *** Mission: BMX/4x4/PCJ Stunt Courses *** // *** *** // ***************************************************************************************** GOSUB mission_stunt_start IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_stunt_failed ENDIF GOSUB mission_stunt_cleanup MISSION_END // ************************************ MISSION START ************************************** { mission_stunt_start: flag_player_on_mission = 1 if done_bmx_stunt_progress = 0 REGISTER_MISSION_GIVEN endif SCRIPT_NAME stunt DISPLAY_RADAR 2 // PATHING OFF WAIT 0 LOAD_MISSION_TEXT stunt while not is_player_playing player1 wait 0 endwhile lvar_int stunt_vehicle store_car_char_is_in scplayer stunt_vehicle set_car_health stunt_vehicle 3000 //var_int stunt_course //stunt_course = 0 gosub stunt_coordinates lvar_int out_of_car_flag out_of_car_flag = 1 lvar_int corona_collected[20] a a = 0 while a < total_coronas corona_collected[a] = 0 ++ a endwhile lvar_int stunt_vehicle_blip if flag_player_on_mission = 0 add_blip_for_coord x y z stunt_vehicle_blip endif lvar_int stunt_timer_displayed stunt_timer_displayed = 0 lvar_int total_coronas_collected total_coronas_collected = 0 lvar_float checkpoint_heading[20] SET_PLAYER_CONTROL player1 OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE SET_FIXED_CAMERA_POSITION cam_s_x cam_s_y cam_s_z 0.0 0.0 0.0 POINT_CAMERA_AT_POINT cam_s_look_x cam_s_look_y cam_s_look_z JUMP_CUT get_game_timer game_timer var_int stunt_timer stunt_timer = game_timer + 1500 PRINT_NOW STUNT_6 5000 1//~s~Collect all of the ~r~checkpoints~s~ before the time runs out. lvar_int pad1_cross_pressed pad1_cross_pressed = 0 // ************************************* MISSION LOOP ************************************** mission_stunt_loop: WAIT 0 get_game_timer game_timer if stunt_timer_displayed = 0 if is_button_pressed pad1 cross if pad1_cross_pressed = 1 SET_PLAYER_CONTROL player1 ON HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT stunt_timer = 16000 DISPLAY_ONSCREEN_TIMER_WITH_STRING stunt_timer TIMER_DOWN STUNT_2 //Time Left stunt_track_start = game_timer stunt_timer_displayed = 1 pad1_cross_pressed = 0 endif else pad1_cross_pressed = 1 endif endif if stunt_timer_displayed = 0 if stunt_timer < game_timer SET_PLAYER_CONTROL player1 ON HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT stunt_timer = 16000 DISPLAY_ONSCREEN_TIMER_WITH_STRING stunt_timer TIMER_DOWN STUNT_2 //Time Left lvar_int stunt_track_start stunt_track_start = game_timer stunt_timer_displayed = 1 endif endif IF NOT IS_CAR_DEAD stunt_vehicle IF IS_CHAR_IN_CAR scplayer stunt_vehicle IF out_of_car_flag = 1 CLEAR_THIS_PRINT STUNT_1 REMOVE_BLIP stunt_vehicle_blip a = 0 while a < total_coronas if corona_collected[a] = 0 lvar_int stunt_blip[20] add_blip_for_coord stunt_x[a] stunt_y[a] stunt_z[a] stunt_blip[a] CHANGE_BLIP_COLOUR stunt_blip[a] RED lvar_int stunt_marker[20] CREATE_CHECKPOINT CHECKPOINT_TORUS stunt_x[a] stunt_y[a] stunt_z[a] stunt_x[a] stunt_y[a] stunt_z[a] 0.8 stunt_marker[a] endif ++ a endwhile out_of_car_flag = 0 ENDIF a = 0 while a < total_coronas IF corona_collected[a] = 0 //DRAW_CORONA stunt_x[a] stunt_y[a] stunt_z[a] 1.0 CORONATYPE_SHINYSTAR FLARETYPE_NONE 255 0 0 //DRAW_CORONA stunt_x[a] stunt_y[a] stunt_z[a] 1.0 CORONATYPE_SHINYSTAR FLARETYPE_NONE 255 0 0 SET_CHECKPOINT_HEADING stunt_marker[a] checkpoint_heading[a] DRAW_SHADOW SHADOW_PED stunt_x[a] stunt_y[a] stunt_z[a] 0.0 1.0 150 0 0 0 checkpoint_heading[a] += 10.0 if checkpoint_heading[a] > 360.0 checkpoint_heading[a] -= 360.0 endif IF LOCATE_CHAR_IN_CAR_3D scplayer stunt_x[a] stunt_y[a] stunt_z[a] 2.5 2.5 2.5 false REMOVE_BLIP stunt_blip[a] delete_checkpoint stunt_marker[a] //ADD_ONE_OFF_SOUND stunt_x[a] stunt_y[a] stunt_z[a] SOUND_PART_MISSION_COMPLETE report_mission_audio_event_at_position stunt_x[a] stunt_y[a] stunt_z[a] SOUND_PART_MISSION_COMPLETE IF IS_XBOX_VERSION stunt_timer += 15000 ELSE stunt_timer += 10000 ENDIF print_with_number_now STUNT_3 15 1500 1//+~1~ seconds ++ total_coronas_collected ++ corona_collected[a] ENDIF ENDIF ++ a endwhile ELSE IF out_of_car_flag = 0 a = 0 while a < total_coronas remove_blip stunt_blip[a] delete_checkpoint stunt_marker[a] ++ a endwhile ADD_BLIP_FOR_CAR stunt_vehicle stunt_vehicle_blip SET_BLIP_AS_FRIENDLY stunt_vehicle_blip TRUE LVAR_INT out_of_car_timer if stunt_timer > 25400 out_of_car_timer = game_timer + 25400 else out_of_car_timer = game_timer + stunt_timer endif out_of_car_flag = 1 ENDIF lvar_int seconds seconds = out_of_car_timer - game_timer seconds /= 1000 IF seconds < 1 seconds = 0 ENDIF IF out_of_car_timer < game_timer PRINT_NOW STUNT_4 5000 1//~r~You left your vehicle. goto mission_stunt_failed ENDIF if seconds = 1 ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE PRINT_WITH_NUMBER_NOW STUNT_8 seconds 200 1 //~s~You have ~1~ seconds to return to your ~b~vehicle~s~. else ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS FALSE PRINT_WITH_NUMBER_NOW STUNT_1 seconds 200 1 //~s~You have ~1~ seconds to return to your ~b~vehicle~s~. endif ENDIF else print_now STUNT_5 5000 1 //~r~You destroyed your vehicle! goto mission_stunt_failed endif if total_coronas_collected = total_coronas goto mission_stunt_passed endif if stunt_timer = 0 print_now STUNT_7 5000 1 //~r~You ran out of time! goto mission_stunt_failed endif GOTO mission_stunt_loop // ************************************ MISSION FAILED ************************************* mission_stunt_failed: PRINT_BIG M_FAIL 5000 1 RETURN // ************************************ MISSION PASSED ************************************* mission_stunt_passed: WRITE_LOG "UNLOCK_ACHIEVEMENT BIKE_OR_BIKER" ADD_SCORE player1 1000 CLEAR_WANTED_LEVEL player1 PLAY_MISSION_PASSED_TUNE 1 lvar_int stunt_time stunt_time = game_timer - stunt_track_start stunt_time /= 1000 if stunt_course = 0 if done_bmx_stunt_progress = 0 PLAYER_MADE_PROGRESS 1 REGISTER_MISSION_PASSED BMX PLAY_MISSION_PASSED_TUNE 2 done_bmx_stunt_progress = 1 endif REGISTER_FASTEST_TIME BEST_TIME_BMX stunt_time endif if stunt_course = 1 if done_nrg500_stunt_progress = 0 PLAYER_MADE_PROGRESS 1 REGISTER_MISSION_PASSED NRG500 PLAY_MISSION_PASSED_TUNE 2 done_nrg500_stunt_progress = 1 endif REGISTER_FASTEST_TIME BEST_TIME_NRG stunt_time endif lvar_int mins mins = stunt_time / 60 lvar_int temp_int temp_int = mins * 60 seconds = stunt_time - temp_int if stunt_time < stunt_best_time[stunt_course] if seconds < 10 PRINT_WITH_2_NUMBERS_BIG STUNTN0 mins seconds 5000 1 //New Time record: ~1~:~1~ else PRINT_WITH_2_NUMBERS_BIG STUNTPN mins seconds 5000 1 //New Time record: ~1~:~1~ endif stunt_best_time[stunt_course] = stunt_time else if seconds < 10 PRINT_WITH_2_NUMBERS_BIG STUNTT0 mins seconds 5000 1 //Time: ~1~:~1~ else PRINT_WITH_2_NUMBERS_BIG STUNTPT mins seconds 5000 1 //Time: ~1~:~1~ endif endif RETURN // *********************************** MISSION CLEANUP ************************************* mission_stunt_cleanup: DISPLAY_RADAR 3 // PATHING ON clear_this_print STUNT_1 clear_this_print STUNT_3 a = 0 while a < total_coronas remove_blip stunt_blip[a] delete_checkpoint stunt_marker[a] ++ a endwhile REMOVE_BLIP stunt_vehicle_blip CLEAR_ONSCREEN_TIMER stunt_timer //MARK_MODEL_AS_NO_LONGER_NEEDED flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN stunt_coordinates://////////////////////////////////////////////////////// switch stunt_course case 0 //var_int stunt_bmx1_cargen //CREATE_CAR_GENERATOR 1946.0896 -1380.7202 17.5781 88.1761 BMX -1 -1 TRUE FALSE FALSE 0 10000 stunt_bmx1_cargen //SWITCH_CAR_GENERATOR stunt_bmx1_cargen 101 lvar_float stunt_x[20] stunt_y[20] stunt_z[20] stunt_x[0] = 1955.0118 stunt_y[0] = -1367.7200 stunt_z[0] = 24.7354 stunt_x[1] = 1954.6088 stunt_y[1] = -1376.9637 stunt_z[1] = 24.2187 stunt_x[2] = 1887.3917 stunt_y[2] = -1362.9537 stunt_z[2] = 19.4329 stunt_x[3] = 1914.1375 stunt_y[3] = -1427.0991 stunt_z[3] = 15.5805 stunt_x[4] = 1908.5515 stunt_y[4] = -1388.3890 stunt_z[4] = 10.3294 stunt_x[5] = 1882.3623 stunt_y[5] = -1427.6859 stunt_z[5] = 10.3294 stunt_x[6] = 1953.3492 stunt_y[6] = -1426.5858 stunt_z[6] = 10.3294 stunt_x[7] = 1878.1891 stunt_y[7] = -1388.8102 stunt_z[7] = 15.2464 stunt_x[8] = 1878.1838 stunt_y[8] = -1388.8392 stunt_z[8] = 18.1461 stunt_x[9] = 1872.3269 stunt_y[9] = -1451.0511 stunt_z[9] = 15.7645 stunt_x[10] = 1905.1785 stunt_y[10] = -1413.6747 stunt_z[10] = 13.5322 stunt_x[11] = 1949.5026 stunt_y[11] = -1411.5458 stunt_z[11] = 15.1837 stunt_x[12] = 1867.1531 stunt_y[12] = -1410.0066 stunt_z[12] = 13.5322 stunt_x[13] = 1909.3409 stunt_y[13] = -1369.8458 stunt_z[13] = 16.7966 stunt_x[14] = 1939.2430 stunt_y[14] = -1388.1323 stunt_z[14] = 19.2615 stunt_x[15] = 1904.8877 stunt_y[15] = -1360.6219 stunt_z[15] = 13.5322 stunt_x[16] = 1930.2335 stunt_y[16] = -1398.6198 stunt_z[16] = 16.8554 stunt_x[17] = 1888.7649 stunt_y[17] = -1399.3260 stunt_z[17] = 17.2408 stunt_x[18] = 1900.9476 stunt_y[18] = -1397.8297 stunt_z[18] = 15.6868 lvar_int total_coronas total_coronas = 19 lvar_float cam_s_x cam_s_y cam_s_z cam_s_look_x cam_s_look_y cam_s_look_z cam_s_x = 1964.7528 cam_s_y = -1368.3622 cam_s_z = 29.6217 cam_s_look_x = 1963.9342 cam_s_look_y = -1368.8182 cam_s_look_z = 29.2725 break case 1 //var_int stunt_nrg500_cargen //CREATE_CAR_GENERATOR -1696.5312 77.7192 3.5547 312.9365 nrg500 -1 -1 TRUE FALSE FALSE 0 10000 stunt_nrg500_cargen //SWITCH_CAR_GENERATOR stunt_nrg500_cargen 101 stunt_x[0] = -1632.0581 stunt_y[0] = 143.1520 stunt_z[0] = 3.4111 stunt_x[1] = -1632.0208 stunt_y[1] = 83.0413 stunt_z[1] = 7.5331 stunt_x[2] = -1689.1484 stunt_y[2] = 53.3936 stunt_z[2] = 11.7703 stunt_x[3] = -1606.4226 stunt_y[3] = 133.4396 stunt_z[3] = -10.9911 stunt_x[4] = -1680.3857 stunt_y[4] = 87.0915 stunt_z[4] = 8.2325 stunt_x[5] = -1666.2952 stunt_y[5] = 102.0489 stunt_z[5] = -1.5025 stunt_x[6] = -1654.6917 stunt_y[6] = 60.7782 stunt_z[6] = 7.6501 stunt_x[7] = -1684.8666 stunt_y[7] = 74.6374 stunt_z[7] = -7.0328 stunt_x[8] = -1583.7968 stunt_y[8] = 126.1577 stunt_z[8] = 4.1570 stunt_x[9] = -1667.7051 stunt_y[9] = 49.5191 stunt_z[9] = 6.5634 stunt_x[10] = -1611.5852 stunt_y[10] = 106.3131 stunt_z[10] = -3.6465 stunt_x[11] = -1590.5564 stunt_y[11] = 148.9676 stunt_z[11] = 4.1130 stunt_x[12] = -1671.9587 stunt_y[12] = 98.6000 stunt_z[12] = 8.9263 stunt_x[13] = -1693.3202 stunt_y[13] = 65.1187 stunt_z[13] = 8.7997 stunt_x[14] = -1660.9508 stunt_y[14] = 107.6739 stunt_z[14] = -2.1545 stunt_x[15] = -1654.0709 stunt_y[15] = 77.2629 stunt_z[15] = -10.2893 stunt_x[16] = -1645.4943 stunt_y[16] = 107.2477 stunt_z[16] = -10.6617 stunt_x[17] = -1673.7347 stunt_y[17] = 56.9287 stunt_z[17] = -10.6740 total_coronas = 18 cam_s_x = -1681.4637 cam_s_y = 27.2091 cam_s_z = 9.6606 cam_s_look_x = -1681.2524 cam_s_look_y = 28.1830 cam_s_look_z = 9.5773 break endswitch return } MISSION_START mission_start_buypro1: // *********************************SHOWROOM*********************************************** SCRIPT_NAME BUYPRO1 flag_player_on_mission = 1 WAIT 0 { LVAR_INT property_is_hotel_room property_is_hotel_room = 0 SET_FADING_COLOUR 0 0 1 SET_PLAYER_CONTROL player1 OFF SWITCH_WIDESCREEN ON SWITCH buying_property_switch CASE PROP_BUY0 SET_FIXED_CAMERA_POSITION -1990.9690 292.2734 35.1049 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1990.0530 291.9333 35.3176 JUMP_CUT //PRINT_WITH_NUMBER_BIG CNTBUY1 showroom_price 50000 6 //"SHOWROOM purchased: $ 15000" INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[0] START_NEW_SCRIPT steal_mission_loop REMOVE_BLIP steal_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT stealX stealY stealZ steal_blip_icon steal_contact_blip REMOVE_BLIP showroom_contact_blip PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY1 SET_FIXED_CAMERA_POSITION -2255.7051 131.9585 38.5998 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2254.7161 132.0048 38.4589 JUMP_CUT //PRINT_WITH_NUMBER_BIG CNTBUY2 zero_price 50000 6 //"ZEROS purchased: $ 15000" INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[1] REMOVE_BLIP zero_contact_blip SWITCH_ENTRY_EXIT RCPLAY TRUE //ZEROS zeros_property_bought = 1 PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY2 SET_FIXED_CAMERA_POSITION 445.1280 2540.4360 25.6202 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 444.1882 2540.1421 25.4462 JUMP_CUT //PRINT_WITH_NUMBER_BIG CNTBUY3 airstrip_price 50000 6 //"AIRSTRIP purchased: $ 15000" INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[2] REMOVE_BLIP airstrip_contact_blip START_NEW_SCRIPT pilot_school_loop REMOVE_BLIP desert2_contact_blip REMOVE_BLIP save_house_blip[2] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT save_pickupX[2] save_pickupY[2] save_pickupZ[2] RADAR_SPRITE_SAVEHOUSE save_house_blip[2] CHANGE_BLIP_DISPLAY save_house_blip[2] BLIP_ONLY REMOVE_BLIP pilot_contact_blip ADD_SPRITE_BLIP_FOR_CONTACT_POINT pilotx piloty pilotz pilot_blip_icon pilot_contact_blip CHANGE_BLIP_DISPLAY pilot_contact_blip BLIP_ONLY ACTIVATE_GARAGE cn2gar2 //HIDEOUT_FIVE ACTIVATE_GARAGE dhangar //hanger SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[2] propertyY[2] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY3 SET_FIXED_CAMERA_POSITION 316.0747 -1786.7572 5.0712 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 316.1206 -1785.7781 5.2692 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[3] REMOVE_BLIP prop_save_house_blip[3] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[3] propertyY[3] propertyZ[3] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[3] CHANGE_BLIP_DISPLAY prop_save_house_blip[3] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[3] propertyY[3] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE ACTIVATE_GARAGE beacsv //HIDEOUT_TWO PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY4 SET_FIXED_CAMERA_POSITION 2430.8694 698.3348 12.9763 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2431.7886 697.9644 12.8430 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[4] REMOVE_BLIP prop_save_house_blip[4] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[4] propertyY[4] propertyZ[4] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[4] CHANGE_BLIP_DISPLAY prop_save_house_blip[4] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[4] propertyY[4] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE ACTIVATE_GARAGE vEsvgrg //HIDEOUT_THREE PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY5 SET_FIXED_CAMERA_POSITION -362.3164 1152.6638 21.4821 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -362.6989 1153.5872 21.5142 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[5] REMOVE_BLIP prop_save_house_blip[5] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[5] propertyY[5] propertyZ[5] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[5] CHANGE_BLIP_DISPLAY prop_save_house_blip[5] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[5] propertyY[5] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE ACTIVATE_GARAGE cn2gar1 //HIDEOUT_FOUR PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY6 SET_FIXED_CAMERA_POSITION 1295.9816 2525.5703 14.1002 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1294.9943 2525.7239 14.0597 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[6] REMOVE_BLIP prop_save_house_blip[6] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[6] propertyY[6] propertyZ[6] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[6] CHANGE_BLIP_DISPLAY prop_save_house_blip[6] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[6] propertyY[6] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE ACTIVATE_GARAGE blob69 //HIDEOUT_SEVEN PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY7 SET_FIXED_CAMERA_POSITION 908.9885 2006.1508 17.7914 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 909.9134 2006.1431 17.4113 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[7] REMOVE_BLIP prop_save_house_blip[7] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[7] propertyY[7] propertyZ[7] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[7] CHANGE_BLIP_DISPLAY prop_save_house_blip[7] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[7] propertyY[7] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE ACTIVATE_GARAGE blob7 //HIDEOUT_EIGHT PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY8 SET_FIXED_CAMERA_POSITION 2233.1401 152.5748 33.5239 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2233.1599 153.5324 33.2366 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[8] REMOVE_BLIP prop_save_house_blip[8] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[8] propertyY[8] propertyZ[8] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[8] CHANGE_BLIP_DISPLAY prop_save_house_blip[8] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[8] propertyY[8] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE ACTIVATE_GARAGE burbdoo //HIDEOUT_NINE PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY9 SET_FIXED_CAMERA_POSITION 1385.5187 1901.3131 14.5901 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1386.4720 1901.0758 14.4041 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[9] REMOVE_BLIP prop_save_house_blip[9] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[9] propertyY[9] propertyZ[9] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[9] CHANGE_BLIP_DISPLAY prop_save_house_blip[9] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[9] propertyY[9] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE ACTIVATE_GARAGE blob6 //HIDEOUT_TEN PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY10 SET_FIXED_CAMERA_POSITION 1689.1176 -2120.1648 18.6369 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1689.1876 -2119.1870 18.4393 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[10] REMOVE_BLIP prop_save_house_blip[10] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[10] propertyY[10] propertyZ[10] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[10] CHANGE_BLIP_DISPLAY prop_save_house_blip[10] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[10] propertyY[10] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE ACTIVATE_GARAGE carlas1 //HIDEOUT_ELEVEN PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY11 SET_FIXED_CAMERA_POSITION -2098.9670 923.2947 80.2446 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2098.9861 922.2994 80.3401 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[11] REMOVE_BLIP prop_save_house_blip[11] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[11] propertyY[11] propertyZ[11] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[11] CHANGE_BLIP_DISPLAY prop_save_house_blip[11] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[11] propertyY[11] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE ACTIVATE_GARAGE sav1sfe //HIDEOUT_THIRTEEN PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY12 SET_FIXED_CAMERA_POSITION 1325.9745 -598.7552 116.1597 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 1326.2544 -599.7052 116.0219 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[12] REMOVE_BLIP prop_save_house_blip[12] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[12] propertyY[12] propertyZ[12] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[12] CHANGE_BLIP_DISPLAY prop_save_house_blip[12] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[12] propertyY[12] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE ACTIVATE_GARAGE CEsafe1 //HIDEOUT_TWELVE PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY13 SET_FIXED_CAMERA_POSITION -2700.6575 791.4500 70.2223 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2700.6614 792.4032 69.9203 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[13] REMOVE_BLIP prop_save_house_blip[13] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[13] propertyY[13] propertyZ[13] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[13] CHANGE_BLIP_DISPLAY prop_save_house_blip[13] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[13] propertyY[13] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE ACTIVATE_GARAGE sav1sfw //HIDEOUT_FOURTEEN PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY14 SET_FIXED_CAMERA_POSITION -2476.4321 -127.2039 26.6779 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2475.4575 -127.2469 26.8974 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[14] REMOVE_BLIP prop_save_house_blip[14] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[14] propertyY[14] propertyZ[14] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[14] CHANGE_BLIP_DISPLAY prop_save_house_blip[14] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[14] propertyY[14] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE ACTIVATE_GARAGE svgsfs1 //HIDEOUT_SIXTEEN PLAYER_MADE_PROGRESS 1 BREAK // SAVEHOUSES WITHOUT GARAGE*********************************************************** CASE PROP_BUY15 SET_FIXED_CAMERA_POSITION 894.7908 -1663.9961 20.2020 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 894.8030 -1663.0026 20.0891 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[15] REMOVE_BLIP prop_save_house_blip[15] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[15] propertyY[15] propertyZ[15] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[15] CHANGE_BLIP_DISPLAY prop_save_house_blip[15] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[15] propertyY[15] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY16 SET_FIXED_CAMERA_POSITION 2036.7603 1623.0739 13.4128 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2035.8002 1623.0870 13.6921 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[16] REMOVE_BLIP prop_save_house_blip[16] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[16] propertyY[16] propertyZ[16] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[16] CHANGE_BLIP_DISPLAY prop_save_house_blip[16] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[16] propertyY[16] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE PLAYER_MADE_PROGRESS 1 property_is_hotel_room = 1 BREAK CASE PROP_BUY17 SET_FIXED_CAMERA_POSITION 2146.1653 1286.2496 33.6386 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2147.1636 1286.2180 33.5943 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[17] REMOVE_BLIP prop_save_house_blip[17] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[17] propertyY[17] propertyZ[17] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[17] CHANGE_BLIP_DISPLAY prop_save_house_blip[17] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[17] propertyY[17] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE PLAYER_MADE_PROGRESS 1 property_is_hotel_room = 1 BREAK CASE PROP_BUY18 SET_FIXED_CAMERA_POSITION -2213.1877 744.9976 50.0240 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2213.2732 744.0281 50.2540 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[18] REMOVE_BLIP prop_save_house_blip[18] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[18] propertyY[18] propertyZ[18] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[18] CHANGE_BLIP_DISPLAY prop_save_house_blip[18] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[18] propertyY[18] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY19 SET_FIXED_CAMERA_POSITION -1437.1841 -1507.7319 103.8198 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1437.0469 -1508.7114 103.9666 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[19] REMOVE_BLIP prop_save_house_blip[19] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[19] propertyY[19] propertyZ[19] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[19] CHANGE_BLIP_DISPLAY prop_save_house_blip[19] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[19] propertyY[19] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY20 SET_FIXED_CAMERA_POSITION -2000.4270 -64.4142 40.0479 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2001.2571 -63.8685 40.1625 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[20] REMOVE_BLIP prop_save_house_blip[20] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[20] propertyY[20] propertyZ[20] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[20] CHANGE_BLIP_DISPLAY prop_save_house_blip[20] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[20] propertyY[20] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY21 SET_FIXED_CAMERA_POSITION -2379.8542 312.8534 34.2136 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2380.6831 313.3110 34.5349 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[21] REMOVE_BLIP prop_save_house_blip[21] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[21] propertyY[21] propertyZ[21] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[21] CHANGE_BLIP_DISPLAY prop_save_house_blip[21] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[21] propertyY[21] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE PLAYER_MADE_PROGRESS 1 property_is_hotel_room = 1 BREAK CASE PROP_BUY22 SET_FIXED_CAMERA_POSITION -2079.0613 -2298.0559 35.1500 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2078.8796 -2299.0286 35.0066 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[22] REMOVE_BLIP prop_save_house_blip[22] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[22] propertyY[22] propertyZ[22] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[22] CHANGE_BLIP_DISPLAY prop_save_house_blip[22] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[22] propertyY[22] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY23 SET_FIXED_CAMERA_POSITION -1545.0934 2663.0557 61.0133 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1544.2816 2662.5093 60.8075 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[23] REMOVE_BLIP prop_save_house_blip[23] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[23] propertyY[23] propertyZ[23] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[23] CHANGE_BLIP_DISPLAY prop_save_house_blip[23] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[23] propertyY[23] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY24 SET_FIXED_CAMERA_POSITION -1035.1910 1568.4561 39.7221 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1035.9714 1567.8857 39.4659 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[24] REMOVE_BLIP prop_save_house_blip[24] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[24] propertyY[24] propertyZ[24] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[24] CHANGE_BLIP_DISPLAY prop_save_house_blip[24] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[24] propertyY[24] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE PLAYER_MADE_PROGRESS 1 BREAK //HAS A GARAGE****************************************************************** CASE PROP_BUY25 SET_FIXED_CAMERA_POSITION 789.7151 -529.9901 20.7400 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 789.8545 -529.0045 20.6445 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[25] REMOVE_BLIP prop_save_house_blip[25] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[25] propertyY[25] propertyZ[25] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[25] CHANGE_BLIP_DISPLAY prop_save_house_blip[25] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[25] propertyY[25] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE ACTIVATE_GARAGE burbdo2 //HIDEOUT_SIX PLAYER_MADE_PROGRESS 1 BREAK //NO GARAGE****************************************************************** CASE PROP_BUY26 SET_FIXED_CAMERA_POSITION 2114.3787 -1299.7422 32.8721 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2114.3047 -1298.8331 32.4622 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[26] REMOVE_BLIP prop_save_house_blip[26] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[26] propertyY[26] propertyZ[26] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[26] CHANGE_BLIP_DISPLAY prop_save_house_blip[26] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[26] propertyY[26] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY27 SET_FIXED_CAMERA_POSITION 2342.4958 2140.6616 11.3215 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2343.2434 2141.2720 11.5827 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[27] REMOVE_BLIP prop_save_house_blip[27] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[27] propertyY[27] propertyZ[27] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[27] CHANGE_BLIP_DISPLAY prop_save_house_blip[27] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[27] propertyY[27] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE PLAYER_MADE_PROGRESS 1 property_is_hotel_room = 1 BREAK CASE PROP_BUY28 //CLOWNS POCKET SET_FIXED_CAMERA_POSITION 2119.7388 1767.8353 26.2058 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2120.5295 1768.4473 26.1978 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[28] REMOVE_BLIP prop_save_house_blip[28] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[28] propertyY[28] propertyZ[28] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[28] CHANGE_BLIP_DISPLAY prop_save_house_blip[28] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[28] propertyY[28] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE PLAYER_MADE_PROGRESS 1 property_is_hotel_room = 1 BREAK CASE PROP_BUY29 //VEGAS FLAT SET_FIXED_CAMERA_POSITION 2820.3608 2174.8303 19.0746 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2820.3840 2173.8342 18.9889 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[29] REMOVE_BLIP prop_save_house_blip[29] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[29] propertyY[29] propertyZ[29] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[29] CHANGE_BLIP_DISPLAY prop_save_house_blip[29] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[29] propertyY[29] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY30 //COMPRON HOOSE SET_FIXED_CAMERA_POSITION 2484.9707 -2013.0071 17.5718 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2484.9600 -2012.0312 17.3533 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[30] REMOVE_BLIP prop_save_house_blip[30] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[30] propertyY[30] propertyZ[30] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[30] CHANGE_BLIP_DISPLAY prop_save_house_blip[30] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[30] propertyY[30] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE PLAYER_MADE_PROGRESS 1 BREAK CASE PROP_BUY31 //NORTH BADLANDS SET_FIXED_CAMERA_POSITION 189.8908 -107.1989 5.7226 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 190.8559 -107.2361 5.4634 JUMP_CUT INCREMENT_INT_STAT PROPERTY_BUDGET save_houseprice[31] REMOVE_BLIP prop_save_house_blip[31] ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[31] propertyY[31] propertyZ[31] RADAR_SPRITE_SAVEHOUSE prop_save_house_blip[31] CHANGE_BLIP_DISPLAY prop_save_house_blip[31] BLIP_ONLY SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[31] propertyY[31] 5.0 ENTRYEXITS_FLAG_ENABLED TRUE PLAYER_MADE_PROGRESS 1 BREAK ENDSWITCH IF property_is_hotel_room = 0 PRINT_BIG ( BUYPRO ) 5000 2 ELSE PRINT_BIG ( HSUITE ) 5000 2 ENDIF PLAY_MISSION_PASSED_TUNE 2 WAIT 5000 IF NOT IS_PLAYER_PLAYING player1 TERMINATE_THIS_SCRIPT ENDIF CLEAR_PRINTS SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start MISSION_HAS_FINISHED MISSION_END } RETURN MISSION_START // ***************************************************************************************** // ********************************** 2-Player Rampage ************************************* // ***************************************************************************************** SCRIPT_NAME ram_2p // Begin... GOSUB mission_start_2p_ram IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_2p_ram_failed ENDIF GOSUB mission_2p_ram_cleanup MISSION_END { LVAR_INT amount_of_menu_items_MS current_menu_position_MS menu_button_delay_MS LVAR_INT option_number_values_MS[60] amount_of_option_values_MS[10] current_option_value_MS[10] amount_of_values_per_option_MS LVAR_INT selection_alpha_MS main_menu_ram_2p // menu text LVAR_TEXT_LABEL title option_text_MS[10] option_text_values_MS[60] LVAR_INT temp_int_1_MS temp_int_2_MS temp_int_3_MS temp_int_4_MS my_test_var my_test_var2 my_test_var3 my_test_var4 LVAR_FLOAT temp_float_1_MS temp_float_2_MS LVAR_INT player1_model_VS[3] player1_button_delay_VS player1_car_VS player1_waiting_VS player1_chosen_car LVAR_FLOAT player1_car_X player1_car_Y player1_car_Z player1_car_heading // **************************************** Variables ************************************** LVAR_INT peds_frenzy_status ram_ply1_kills ram_ply2_kills LVAR_INT ram_ply_ram ram_ply_ram2 v LVAR_INT black_car[5] ram_some_guy // **************************************** Variables ************************************** LVAR_INT vehicle_models_VS[31] last_vehicle_VS // temp stuff LVAR_INT temp_int_1_VS temp_int_2_VS r2_number sub_menu_ram_2p LVAR_INT heli_model_select heli_model_select2 heli_limit heli_model[20] LVAR_INT heli_colour1 heli_colour2 r2_menu r2_overall_menu r2_my_gun LVAR_INT r2_time_ran_out // ****************************************Mission Start************************************ mission_start_2p_ram: HIDE_ALL_FRONTEND_BLIPS TRUE CLEAR_PRINTS CLEAR_WANTED_LEVEL player1 SET_WANTED_MULTIPLIER 0.0 SET_FADING_COLOUR 0 0 0 peds_frenzy_status = 0 ram_ply_ram = 0 ram_ply_ram2 = 0 ram_some_guy = 0 REPEAT 5 v black_car[v] = 0 ENDREPEAT flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT MENU2P GOTO ram_skip_it ram_skip_it: GOSUB ram2_fade_out WAIT 0 // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** REQUEST_MODEL micro_uzi REQUEST_MODEL mp5lng REQUEST_MODEL colt45 REQUEST_MODEL BFYPRO WHILE NOT HAS_MODEL_LOADED micro_uzi OR NOT HAS_MODEL_LOADED mp5lng OR NOT HAS_MODEL_LOADED colt45 OR NOT HAS_MODEL_LOADED BFYPRO WAIT 0 ENDWHILE TIMERA = 0 SET_PED_DENSITY_MULTIPLIER 2.0 //SET_CAR_DENSITY_MULTIPLIER 1.0 CLEAR_AREA 1478.8678 -1655.8528 13.0469 40.0 TRUE CREATE_PLAYER 1 1478.8678 -1655.8528 13.0469 player2 GET_PLAYER_CHAR player2 p2 SET_PLAYER_MODEL player2 BFYPRO SET_CHAR_HEADING p2 237.1571 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer 1478.9728 -1657.8544 13.0469 SET_CHAR_HEADING scplayer 237.1571 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_GROVE PEDTYPE_PLAYER2 SET_PLAYER_PLAYER_TARGETTING FALSE SET_CHAR_NEVER_TARGETTED scplayer TRUE SET_CHAR_NEVER_TARGETTED p2 TRUE SET_TWO_PLAYER_CAMERA_MODE JUMP_CUT SET_PLAYERS_CAN_BE_IN_SEPARATE_CARS FALSE LIMIT_TWO_PLAYER_DISTANCE 20.0 DISABLE_CHAR_SPEECH p2 TRUE ENDIF SWITCH ram_2p_level CASE 0 my_test_var2 = 15 // Peds my_test_var3 = 3 // Minutes my_test_var = 180000 r2_my_gun = 0 BREAK CASE 1 my_test_var2 = 15 // Peds my_test_var3 = 2 // Minutes my_test_var = 120000 r2_my_gun = 0 BREAK CASE 2 my_test_var2 = 15 // Peds my_test_var3 = 1 // Minute my_test_var = 90000 r2_my_gun = 0 BREAK CASE 3 my_test_var2 = 18 // Peds my_test_var3 = 3 // Minutes my_test_var = 180000 r2_my_gun = 1 BREAK CASE 4 my_test_var2 = 18 // Peds my_test_var3 = 2 // Minutes my_test_var = 120000 r2_my_gun = 1 BREAK CASE 5 my_test_var2 = 18 // Peds my_test_var3 = 1 // Minute my_test_var = 90000 r2_my_gun = 1 BREAK CASE 6 my_test_var2 = 20 // Peds my_test_var3 = 3 // Minutes my_test_var = 180000 r2_my_gun = 2 BREAK CASE 7 my_test_var2 = 20 // Peds my_test_var3 = 2 // Minutes my_test_var = 120000 r2_my_gun = 2 BREAK CASE 8 my_test_var2 = 20 // Peds my_test_var3 = 1 // Minute my_test_var = 90000 r2_my_gun = 2 BREAK ENDSWITCH GOSUB ram2_set_camera MAKE_PLAYER_GANG_DISAPPEAR IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF SET_FIXED_CAMERA_POSITION 1484.0725 -1659.5990 15.6832 0.0 0.0 0.0 // Bike from front POINT_CAMERA_AT_POINT 1483.2703 -1659.0812 15.3862 JUMP_CUT GOSUB ram2_fade_in IF my_test_var3 = 1 PRINT_WITH_3_NUMBERS MENU_65 my_test_var2 my_test_var3 30 5000 1 // Kill ~1~ peds in ~1~ minute and ~1~ seconds. ELSE PRINT_WITH_2_NUMBERS_NOW MENU_36 my_test_var2 my_test_var3 5000 1 // Kill ~1~ peds in ~1~ minutes ENDIF WAIT 5000 GOSUB ram2_restore_camera LVAR_INT ram2_level_display ram2_level_display = ram_2p_level + 1 CLEAR_PRINTS SWITCH r2_my_gun CASE 0 START_KILL_FRENZY DUMMY WEAPONTYPE_MP5 my_test_var my_test_var2 -1 -1 -1 -1 FALSE BREAK CASE 1 START_KILL_FRENZY DUMMY WEAPONTYPE_MICRO_UZI my_test_var my_test_var2 -1 -1 -1 -1 FALSE BREAK CASE 2 START_KILL_FRENZY DUMMY WEAPONTYPE_PISTOL my_test_var my_test_var2 -1 -1 -1 -1 FALSE BREAK ENDSWITCH TIMERB = 0 // ************************************************************************************************* // * * // * MAIN LOOP * // * * // ************************************************************************************************* WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 WAIT 0 GOSUB ram2_keys IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF HAS_CHAR_BEEN_ARRESTED scplayer OR HAS_CHAR_BEEN_ARRESTED p2 FAIL_KILL_FRENZY ENDIF ENDIF READ_KILL_FRENZY_STATUS peds_frenzy_status IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S my_test_var = my_test_var - TIMERB peds_frenzy_status = KILLFRENZY_PASSED ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_F peds_frenzy_status = KILLFRENZY_FAILED ENDIF IF peds_frenzy_status = KILLFRENZY_PASSED my_test_var = my_test_var - TIMERB GOTO mission_2p_ram_passed ENDIF IF peds_frenzy_status = KILLFRENZY_FAILED r2_time_ran_out = 1 GOTO mission_2p_ram_failed ENDIF ENDWHILE GOTO mission_2p_ram_failed mission_2p_ram_failed: IF r2_time_ran_out = 0 IF IS_CHAR_DEAD scplayer PRINT_NOW ( MENU_47 ) 4000 1 // ~r~Player one has been killed ENDIF IF IS_CHAR_DEAD p2 PRINT_NOW ( MENU_48 ) 4000 1 // ~r~Player two has been killed ENDIF IF IS_CHAR_DEAD p2 AND IS_CHAR_DEAD scplayer PRINT_NOW ( MENU_49 ) 4000 1 // ~r~Both players were killed ENDIF ELSE PRINT_NOW ( MENU_50 ) 4000 1 // ~r~You didn't get enough kills in time! ENDIF PRINT_BIG ( M_FAIL ) 5000 1 RETURN mission_2p_ram_passed: LVAR_INT best_time_2p my_test_var = my_test_var / 1000 GET_INT_STAT P2_RAMPAGE_BEST_TIME best_time_2p IF best_time_2p < my_test_var SET_INT_STAT P2_RAMPAGE_BEST_TIME my_test_var ENDIF IF ram_2p_level = 8 PRINT_WITH_NUMBER_BIG ( M_PASSD ) 0 5000 1 //"Mission Passed!" ELSE PRINT_WITH_NUMBER_BIG ( MENU_67 ) 0 5000 1 //"Mission Passed!" ENDIF CLEAR_WANTED_LEVEL player1 IF NOT ram_2p_level = 8 ram_2p_level ++ ENDIF RETURN // mission cleanup mission_2p_ram_cleanup: HIDE_ALL_FRONTEND_BLIPS FALSE r2_time_ran_out = 0 MAKE_PLAYER_GANG_REAPPEAR CLEAR_WANTED_LEVEL player1 SET_WANTED_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 MARK_MODEL_AS_NO_LONGER_NEEDED micro_uzi MARK_MODEL_AS_NO_LONGER_NEEDED mp5lng MARK_MODEL_AS_NO_LONGER_NEEDED colt45 MARK_MODEL_AS_NO_LONGER_NEEDED BFYPRO flag_player_on_mission = 0 CLEAR_WANTED_LEVEL player1 MISSION_HAS_FINISHED RETURN ram2_set_camera: SWITCH_WIDESCREEN ON IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF RETURN ram2_restore_camera: // SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 SET_PLAYER_CONTROL player1 ON SET_PLAYER_CONTROL player2 ON ENDIF RESTORE_CAMERA_JUMPCUT SET_TWO_PLAYER_CAMERA_MODE JUMP_CUT RETURN ram2_fade_out: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN ram2_fade_in: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN ram2_keys: LVAR_INT ram_dummy_car IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A IF NOT IS_CHAR_DEAD p2 TASK_DIE p2 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_Z IF NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D VIEW_INTEGER_VARIABLE ram_2p_level ram_2p_level ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H ENDIF RETURN } /* {---------------------------------------MENU2P---------------------------------------} [MENU_00:MENU2P] SUMO [MENU_01:MENU2P] SURVIVE [MENU_02:MENU2P] BOXING [MENU_03:MENU2P] RAMPAGE [MENU_04:MENU2P] TAG [MENU_05:MENU2P] FIXED SHOOTING [MENU_06:MENU2P] KILL [MENU_07:MENU2P] BIKE [MENU_08:MENU2P] CARS [menu_09:MENU2P] HELICOPTERS [MENU_10:MENU2P] Peds : [MENU_11:MENU2P] ~1~ [MENU_12:MENU2P] Start game [MENU_13:MENU2P] Number of players [MENU_14:MENU2P] CPU opponents [MENU_15:MENU2P] Knockouts to win [MENU_16:MENU2P] Random pickups [MENU_17:MENU2P] Continues [MENU_18:MENU2P] Yes [MENU_19:MENU2P] No [MENU_20:MENU2P] Number of rounds [MENU_21:MENU2P] Location [MENU_22:MENU2P] Los Angeles [MENU_23:MENU2P] Las Vegas [MENU_24:MENU2P] Mountains [MENU_25:MENU2P] Desert [MENU_26:MENU2P] Ped limit [MENU_27:MENU2P] Bike limit [MENU_28:MENU2P] Car limit [MENU_29:MENU2P] Time limit [MENU_30:MENU2P] ~1~ mins [MENU_31:MENU2P] ~1~ min */ MISSION_START // ***************************************************************************************** // *********************************** 2-Player Bikes ************************************** // ***************************************************************************************** // ************************************* Paul Davis **************************************** // ***************************************************************************************** SCRIPT_NAME bike_2p // Begin... GOSUB mission_start_2p_bike IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_2p_bike_failed ENDIF GOSUB mission_2p_bike_cleanup MISSION_END { LVAR_INT amount_of_menu_items_MS current_menu_position_MS menu_button_delay_MS LVAR_INT option_number_values_MS[60] amount_of_option_values_MS[10] current_option_value_MS[10] amount_of_values_per_option_MS LVAR_INT selection_alpha_MS // menu text LVAR_TEXT_LABEL title option_text_MS[10] option_text_values_MS[60] LVAR_INT temp_int_1_MS temp_int_2_MS temp_int_3_MS temp_int_4_MS my_test_var my_test_var2 my_test_var3 my_test_var4 LVAR_FLOAT temp_float_1_MS temp_float_2_MS LVAR_INT player1_model_VS[3] player1_button_delay_VS player1_car_VS player1_waiting_VS player1_chosen_car LVAR_FLOAT player1_car_X player1_car_Y player1_car_Z player1_car_heading b2_my_gun // **************************************** Variables ************************************** LVAR_INT peds_frenzy_status LVAR_INT bike_ply_bike bike_ply_bike2 v LVAR_INT black_car[5] bike_some_guy // **************************************** Variables ************************************** LVAR_INT vehicle_models_VS[31] last_vehicle_VS // temp stuff LVAR_INT temp_int_1_VS temp_int_2_VS b2_time_ran_out LVAR_INT heli_model_select heli_limit heli_model[20] LVAR_INT heli_colour1 heli_colour2 b2_menu main_menu_bike_2p // ****************************************Mission Start************************************ mission_start_2p_bike: HIDE_ALL_FRONTEND_BLIPS TRUE CLEAR_PRINTS CLEAR_WANTED_LEVEL player1 SET_WANTED_MULTIPLIER 0.0 SET_FADING_COLOUR 0 0 0 peds_frenzy_status = 0 bike_ply_bike = 0 bike_ply_bike2 = 0 bike_some_guy = 0 REPEAT 5 v black_car[v] = 0 ENDREPEAT flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT MENU2P //DISPLAY_HUD FALSE GOSUB bike2_fade_out WAIT 0 // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** REQUEST_MODEL mp5lng REQUEST_MODEL BFYPRO REQUEST_MODEL fcr900 REQUEST_MODEL nrg500 REQUEST_MODEL pcj600 WHILE NOT HAS_MODEL_LOADED mp5lng OR NOT HAS_MODEL_LOADED BFYPRO OR NOT HAS_MODEL_LOADED fcr900 OR NOT HAS_MODEL_LOADED nrg500 OR NOT HAS_MODEL_LOADED pcj600 WAIT 0 ENDWHILE TIMERA = 0 SUPPRESS_CAR_MODEL pizzaboy SUPPRESS_CAR_MODEL faggio SUPPRESS_CAR_MODEL freeway SUPPRESS_CAR_MODEL bike SUPPRESS_CAR_MODEL mtbike SUPPRESS_CAR_MODEL copbike SUPPRESS_CAR_MODEL bf400 SUPPRESS_CAR_MODEL wayfarer SUPPRESS_CAR_MODEL copbike SUPPRESS_CAR_MODEL bf400 SUPPRESS_CAR_MODEL wayfarer SET_FORCE_RANDOM_CAR_MODEL fcr900 //SET_PED_DENSITY_MULTIPLIER 2.0 DISPLAY_RADAR FALSE SET_PED_DENSITY_MULTIPLIER 0.0 CLEAR_AREA 1196.4912 249.3210 18.5618 60.0 TRUE SWITCH bike_2p_level CASE 0 my_test_var2 = 5 // Bikes my_test_var3 = 3 // Minutes my_test_var = 180000 CREATE_CAR fcr900 1196.4912 249.3210 18.5618 bike_ply_bike BREAK CASE 1 my_test_var2 = 5 // Bikes my_test_var3 = 2 // Minutes my_test_var = 120000 CREATE_CAR fcr900 1196.4912 249.3210 18.5618 bike_ply_bike BREAK CASE 2 my_test_var2 = 5 // Bikes my_test_var3 = 1 // Minutes my_test_var = 60000 CREATE_CAR fcr900 1196.4912 249.3210 18.5618 bike_ply_bike BREAK CASE 3 my_test_var2 = 8 // Bikes my_test_var3 = 3 // Minutes my_test_var = 180000 CREATE_CAR nrg500 1196.4912 249.3210 18.5618 bike_ply_bike BREAK CASE 4 my_test_var2 = 8 // Bikes my_test_var3 = 2 // Minutes my_test_var = 120000 CREATE_CAR nrg500 1196.4912 249.3210 18.5618 bike_ply_bike BREAK CASE 5 my_test_var2 = 8 // Bikes my_test_var3 = 1 // Minutes my_test_var = 60000 CREATE_CAR nrg500 1196.4912 249.3210 18.5618 bike_ply_bike BREAK CASE 6 my_test_var2 = 10 // Bikes my_test_var3 = 3 // Minutes my_test_var = 180000 CREATE_CAR pcj600 1196.4912 249.3210 18.5618 bike_ply_bike BREAK CASE 7 my_test_var2 = 10 // Bikes my_test_var3 = 2 // Minutes my_test_var = 120000 CREATE_CAR pcj600 1196.4912 249.3210 18.5618 bike_ply_bike BREAK CASE 8 my_test_var2 = 10 // Bikes my_test_var3 = 1 // Minutes my_test_var = 60000 CREATE_CAR pcj600 1196.4912 249.3210 18.5618 bike_ply_bike BREAK ENDSWITCH SET_CAR_HEADING bike_ply_bike 337.2467 LOCK_CAR_DOORS bike_ply_bike CARLOCK_LOCKED_PLAYER_INSIDE CREATE_PLAYER 1 1196.4912 249.3210 18.5618 player2 SET_PLAYER_MODEL player2 BFYPRO GET_PLAYER_CHAR player2 p2 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer 1196.4912 249.3210 18.5618 WARP_CHAR_INTO_CAR scplayer bike_ply_bike WARP_CHAR_INTO_CAR_AS_PASSENGER p2 bike_ply_bike 0 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_GROVE PEDTYPE_PLAYER2 SET_PLAYER_PLAYER_TARGETTING FALSE SET_CHAR_NEVER_TARGETTED scplayer TRUE SET_CHAR_NEVER_TARGETTED p2 TRUE SET_TWO_PLAYER_CAMERA_MODE JUMP_CUT DISABLE_CHAR_SPEECH p2 TRUE LIMIT_TWO_PLAYER_DISTANCE 20.0 SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE scplayer KNOCKOFFBIKE_NEVER SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE p2 KNOCKOFFBIKE_NEVER ENDIF GOSUB bike2_set_camera MAKE_PLAYER_GANG_DISAPPEAR SET_FIXED_CAMERA_POSITION 1192.1661 245.3466 20.4391 0.0 0.0 0.0 // Bike from front POINT_CAMERA_AT_POINT 1192.8378 246.0682 20.2713 JUMP_CUT GOSUB bike2_fade_in IF NOT my_test_var3 = 1 PRINT_WITH_2_NUMBERS_NOW MENU_38 my_test_var2 my_test_var3 5000 1 // Destroy ~1~ bikes in ~1~ minutes ELSE PRINT_WITH_2_NUMBERS_NOW MENU_61 my_test_var2 my_test_var3 5000 1 // Destroy ~1~ bikes in ~1~ minute ENDIF WAIT 5000 GOSUB bike2_restore_camera LVAR_INT a_level_display a_level_display = bike_2p_level + 1 //PRINT_WITH_NUMBER_BIG MENU_45 a_level_display 3000 1 // LEVEL ~1~ START_KILL_FRENZY DUMMY WEAPONTYPE_MP5 my_test_var my_test_var2 fcr900 nrg500 pcj600 sanchez FALSE SET_CAR_DENSITY_MULTIPLIER 2.0 // ************************************************************************************************* // * * // * MAIN LOOP * // * * // ************************************************************************************************* TIMERB = 0 WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 WAIT 0 GOSUB bike2_keys IF IS_CAR_IN_WATER bike_ply_bike FAIL_KILL_FRENZY ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S GOTO mission_2p_bike_passed ENDIF READ_KILL_FRENZY_STATUS peds_frenzy_status IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S my_test_var = my_test_var - TIMERB peds_frenzy_status = KILLFRENZY_PASSED ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_F peds_frenzy_status = KILLFRENZY_FAILED ENDIF IF peds_frenzy_status = KILLFRENZY_PASSED my_test_var = my_test_var - TIMERB GOTO mission_2p_bike_passed ENDIF IF peds_frenzy_status = KILLFRENZY_FAILED b2_time_ran_out = 1 GOTO mission_2p_bike_failed ENDIF ENDWHILE GOTO mission_2p_bike_failed mission_2p_bike_failed: IF b2_time_ran_out = 0 IF IS_CHAR_DEAD scplayer PRINT_NOW ( MENU_47 ) 4000 1 // ~r~Player one has been killed ENDIF IF IS_CHAR_DEAD p2 PRINT_NOW ( MENU_48 ) 4000 1 // ~r~Player two has been killed ENDIF IF IS_CHAR_DEAD p2 AND IS_CHAR_DEAD scplayer PRINT_NOW ( MENU_49 ) 4000 1 // ~r~Both players were killed ENDIF ELSE PRINT_NOW ( MENU_50 ) 4000 1 // ~r~You didn't get enough kills in time! ENDIF PRINT_BIG ( M_FAIL ) 5000 1 RETURN mission_2p_bike_passed: LVAR_INT best_time_2p my_test_var = my_test_var / 1000 GET_INT_STAT P2_BIKE_RAMPAGE_BEST_TIME best_time_2p IF best_time_2p < my_test_var SET_INT_STAT P2_BIKE_RAMPAGE_BEST_TIME my_test_var ENDIF IF bike_2p_level = 8 PRINT_WITH_NUMBER_BIG ( M_PASSD ) 0 5000 1 //"Mission Passed!" ELSE PRINT_WITH_NUMBER_BIG ( MENU_67 ) 0 5000 1 //"Mission Passed!" ENDIF IF NOT bike_2p_level = 8 bike_2p_level ++ ENDIF CLEAR_WANTED_LEVEL player1 IF NOT IS_CAR_DEAD bike_ply_bike LOCK_CAR_DOORS bike_ply_bike CARLOCK_UNLOCKED ENDIF RETURN // mission cleanup mission_2p_bike_cleanup: HIDE_ALL_FRONTEND_BLIPS FALSE b2_time_ran_out = 0 MAKE_PLAYER_GANG_REAPPEAR CLEAR_WANTED_LEVEL player1 SET_WANTED_MULTIPLIER 1.0 IF NOT IS_CAR_DEAD bike_ply_bike LOCK_CAR_DOORS bike_ply_bike CARLOCK_UNLOCKED ENDIF MARK_MODEL_AS_NO_LONGER_NEEDED mp5lng MARK_MODEL_AS_NO_LONGER_NEEDED nrg500 MARK_MODEL_AS_NO_LONGER_NEEDED pcj600 MARK_MODEL_AS_NO_LONGER_NEEDED fcr900 MARK_MODEL_AS_NO_LONGER_NEEDED BFYPRO DONT_SUPPRESS_CAR_MODEL pizzaboy DONT_SUPPRESS_CAR_MODEL faggio DONT_SUPPRESS_CAR_MODEL freeway DONT_SUPPRESS_CAR_MODEL bike DONT_SUPPRESS_CAR_MODEL mtbike DONT_SUPPRESS_CAR_MODEL copbike DONT_SUPPRESS_CAR_MODEL bf400 DONT_SUPPRESS_CAR_MODEL wayfarer DONT_SUPPRESS_CAR_MODEL copbike DONT_SUPPRESS_CAR_MODEL bf400 DONT_SUPPRESS_CAR_MODEL wayfarer flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN bike2_set_camera: SWITCH_WIDESCREEN ON IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF RETURN bike2_restore_camera: SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 SET_PLAYER_CONTROL player1 ON SET_PLAYER_CONTROL player2 ON ENDIF RESTORE_CAMERA_JUMPCUT RETURN bike2_fade_out: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN bike2_fade_in: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN bike2_keys: LVAR_INT bike_dummy_car IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_Y ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S GOTO mission_2p_bike_passed ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F IF NOT IS_CHAR_DEAD p2 TASK_DIE p2 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B FAIL_KILL_FRENZY ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H IF NOT IS_CHAR_DEAD scplayer ADD_ARMOUR_TO_CHAR scplayer 100 INCREASE_PLAYER_MAX_HEALTH player1 100 ENDIF ENDIF RETURN } /* {---------------------------------------MENU2P---------------------------------------} [MENU_00:MENU2P] SUMO [MENU_01:MENU2P] SURVIVE [MENU_02:MENU2P] BOXING [MENU_03:MENU2P] RAMPAGE [MENU_04:MENU2P] TAG [MENU_05:MENU2P] FIXED SHOOTING [MENU_06:MENU2P] KILL [MENU_07:MENU2P] BIKE [MENU_08:MENU2P] CARS [MENU_09:MENU2P] HELICOPTERS [MENU_10:MENU2P] Peds : [MENU_11:MENU2P] ~1~ [MENU_12:MENU2P] Start game [MENU_13:MENU2P] Number of players [MENU_14:MENU2P] CPU opponents [MENU_15:MENU2P] Knockouts to win [MENU_16:MENU2P] Random pickups [MENU_17:MENU2P] Continues [MENU_18:MENU2P] Yes [MENU_19:MENU2P] No [MENU_20:MENU2P] Number of rounds [MENU_21:MENU2P] Location [MENU_22:MENU2P] Los Angeles [MENU_23:MENU2P] Las Vegas [MENU_24:MENU2P] Mountains [MENU_25:MENU2P] Desert [MENU_26:MENU2P] Ped limit [MENU_27:MENU2P] Bike limit [MENU_28:MENU2P] Car limit [MENU_29:MENU2P] Time limit [MENU_30:MENU2P] ~1~ mins [MENU_31:MENU2P] ~1~ min [MENU_33:MENU2P] Peds : ~1~ [MENU_34:MENU2P] ~1~ [MENU_35:MENU2P] Push the ~H~left analog stick~w~ left or right to select a weapon.~N~~X~ = Select.~N~~T~ = Quit. [MENU_36:MENU2P] Kill ~1~ peds in ~1~ minutes [MENU_37:MENU2P] Push the ~H~left analog stick~w~ left or right to select a vehicle.~N~~X~ = Select.~N~~T~ = Quit. [MENU_38:MENU2P] Destroy ~1~ bikes in ~1~ minutes [MENU_39:MENU2P] Destroy ~1~ cars in ~1~ minutes [MENU_40:MENU2P] Destroy ~1~ cars in ~1~ minutes [MENU_41:MENU2P] Cars : ~1~ [MENU_42:MENU2P] Bikes : ~1~ [MENU_43:MENU2P] Push the ~H~left analog stick~w~ left or right to select a helicopter.~N~~X~ = Select.~N~~T~ = Quit. [MENU_44:MENU2P] DRIVEBY */ MISSION_START // ***************************************************************************************** // *********************************** 2-Player Cars *************************************** // ***************************************************************************************** // ************************************* Paul Davis **************************************** // ***************************************************************************************** SCRIPT_NAME cars_2p // Begin... GOSUB mission_start_2p_cars IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_2p_cars_failed ENDIF GOTO mission_2p_cars_cleanup //GOSUB mission_2p_cars_cleanup //MISSION_END { LVAR_INT amount_of_menu_items_MS current_menu_position_MS menu_button_delay_MS LVAR_INT option_number_values_MS[60] amount_of_option_values_MS[10] current_option_value_MS[10] amount_of_values_per_option_MS LVAR_INT selection_alpha_MS // menu text LVAR_TEXT_LABEL title option_text_MS[10] option_text_values_MS[60] LVAR_INT temp_int_1_MS temp_int_2_MS temp_int_3_MS temp_int_4_MS my_test_var my_test_var2 my_test_var3 my_test_var4 LVAR_FLOAT temp_float_1_MS temp_float_2_MS LVAR_INT player1_model_VS[3] player1_button_delay_VS player1_car_VS player1_waiting_VS player1_chosen_car LVAR_FLOAT player1_car_X player1_car_Y player1_car_Z player1_car_heading // **************************************** Variables ************************************** LVAR_INT peds_frenzy_status LVAR_INT cars_ply_car cars_ply_car2 v LVAR_INT black_car[5] cars_some_guy // **************************************** Variables ************************************** LVAR_INT vehicle_models_VS[31] last_vehicle_VS // temp stuff LVAR_INT temp_int_1_VS temp_int_2_VS LVAR_INT heli_model_select heli_limit heli_model[20] LVAR_INT heli_colour1 heli_colour2 LVAR_INT c2_menu main_menu_cars_2p LVAR_INT c2_time_ran_out // ****************************************Mission Start************************************ mission_start_2p_cars: HIDE_ALL_FRONTEND_BLIPS TRUE CLEAR_PRINTS CLEAR_WANTED_LEVEL player1 SET_WANTED_MULTIPLIER 0.0 SET_FADING_COLOUR 0 0 0 peds_frenzy_status = 0 cars_ply_car = 0 cars_ply_car2 = 0 cars_some_guy = 0 REPEAT 5 v black_car[v] = 0 ENDREPEAT flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT MENU2P //GOSUB cars2_fade_out WAIT 0 // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** REQUEST_MODEL mp5lng REQUEST_MODEL BFYPRO WHILE NOT HAS_MODEL_LOADED BFYPRO WAIT 0 ENDWHILE TIMERA = 0 SET_CAR_DENSITY_MULTIPLIER 2.0 SET_PED_DENSITY_MULTIPLIER 0.0 CLEAR_AREA -2102.8484 653.8868 51.3671 40.0 TRUE SWITCH cars_2p_level CASE 0 REQUEST_MODEL 405 WHILE NOT HAS_MODEL_LOADED 405 WAIT 0 ENDWHILE my_test_var2 = 5 // Cars my_test_var3 = 3 // Minutes my_test_var = 180000 CREATE_CAR 405 -2103.0000 654.4047 51.3703 cars_ply_car BREAK CASE 1 REQUEST_MODEL 405 WHILE NOT HAS_MODEL_LOADED 405 WAIT 0 ENDWHILE my_test_var2 = 5 // Cars my_test_var3 = 2 // Minutes my_test_var = 120000 CREATE_CAR 405 -2103.0000 654.4047 51.3703 cars_ply_car BREAK CASE 2 REQUEST_MODEL 405 WHILE NOT HAS_MODEL_LOADED 405 WAIT 0 ENDWHILE my_test_var2 = 5 // Cars my_test_var3 = 1 // Minutes my_test_var = 60000 CREATE_CAR 405 -2103.0000 654.4047 51.3703 cars_ply_car BREAK CASE 3 REQUEST_MODEL 420 WHILE NOT HAS_MODEL_LOADED 420 WAIT 0 ENDWHILE my_test_var2 = 8 // Cars my_test_var3 = 3 // Minutes my_test_var = 180000 CREATE_CAR 420 -2103.0000 654.4047 51.3703 cars_ply_car BREAK CASE 4 REQUEST_MODEL 420 WHILE NOT HAS_MODEL_LOADED 420 WAIT 0 ENDWHILE my_test_var2 = 8 // Cars my_test_var3 = 2 // Minutes my_test_var = 120000 CREATE_CAR 420 -2103.0000 654.4047 51.3703 cars_ply_car BREAK CASE 5 REQUEST_MODEL 420 WHILE NOT HAS_MODEL_LOADED 420 WAIT 0 ENDWHILE my_test_var2 = 8 // Cars my_test_var3 = 1 // Minutes my_test_var = 60000 CREATE_CAR 420 -2103.0000 654.4047 51.3703 cars_ply_car BREAK CASE 6 REQUEST_MODEL 502 WHILE NOT HAS_MODEL_LOADED 502 WAIT 0 ENDWHILE my_test_var2 = 10 // Cars my_test_var3 = 3 // Minutes my_test_var = 180000 CREATE_CAR 502 -2103.0000 654.4047 51.3703 cars_ply_car BREAK CASE 7 REQUEST_MODEL 502 WHILE NOT HAS_MODEL_LOADED 502 WAIT 0 ENDWHILE my_test_var2 = 10 // Cars my_test_var3 = 2 // Minutes my_test_var = 120000 CREATE_CAR 502 -2103.0000 654.4047 51.3703 cars_ply_car BREAK CASE 8 REQUEST_MODEL 502 WHILE NOT HAS_MODEL_LOADED 502 WAIT 0 ENDWHILE my_test_var2 = 10 // Cars my_test_var3 = 1 // Minutes my_test_var = 60000 CREATE_CAR 502 -2103.0000 654.4047 51.3703 cars_ply_car BREAK ENDSWITCH SET_CAR_HEADING cars_ply_car 269.5643 LOCK_CAR_DOORS cars_ply_car CARLOCK_LOCKED_PLAYER_INSIDE CREATE_PLAYER 1 -2104.5562 654.4047 51.3703 player2 SET_PLAYER_MODEL player2 BFYPRO GET_PLAYER_CHAR player2 p2 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer -2104.5562 654.4047 51.3703 WARP_CHAR_INTO_CAR scplayer cars_ply_car WARP_CHAR_INTO_CAR_AS_PASSENGER p2 cars_ply_car 0 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_GROVE PEDTYPE_PLAYER2 SET_PLAYER_PLAYER_TARGETTING FALSE SET_CHAR_NEVER_TARGETTED scplayer TRUE SET_CHAR_NEVER_TARGETTED p2 TRUE SET_TWO_PLAYER_CAMERA_MODE JUMP_CUT LIMIT_TWO_PLAYER_DISTANCE 20.0 DISABLE_CHAR_SPEECH p2 TRUE ENDIF GOSUB cars2_set_camera MAKE_PLAYER_GANG_DISAPPEAR IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF SET_FIXED_CAMERA_POSITION -2105.8430 651.8388 52.53596 0.0 0.0 0.0 // Bike from front POINT_CAMERA_AT_POINT -2105.1243 652.5283 52.4463 JUMP_CUT GOSUB cars2_fade_in IF NOT my_test_var3 = 1 PRINT_WITH_2_NUMBERS_NOW MENU_64 my_test_var2 my_test_var3 5000 1 // Destroy ~1~ vehicles in ~1~ minutes ELSE PRINT_WITH_2_NUMBERS_NOW MENU_63 my_test_var2 my_test_var3 5000 1 // Destroy ~1~ vehicles in ~1~ minute ENDIF WAIT 5000 GOSUB cars2_restore_camera LVAR_INT cars2_level_display cars2_level_display = cars_2p_level + 1 //PRINT_WITH_NUMBER_BIG MENU_45 cars2_level_display 3000 1 // LEVEL ~1~ START_KILL_FRENZY DUMMY WEAPONTYPE_MP5 my_test_var my_test_var2 -2 -2 -2 -2 FALSE SET_CAR_DENSITY_MULTIPLIER 2.0 // ************************************************************************************************* // * * // * MAIN LOOP * // * * // ************************************************************************************************* TIMERB = 0 WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 AND NOT IS_CAR_DEAD cars_ply_car WAIT 0 GOSUB cars2_keys IF IS_CAR_IN_WATER cars_ply_car FAIL_KILL_FRENZY ENDIF READ_KILL_FRENZY_STATUS peds_frenzy_status IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S my_test_var = my_test_var - TIMERB peds_frenzy_status = KILLFRENZY_PASSED ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_F peds_frenzy_status = KILLFRENZY_FAILED ENDIF IF peds_frenzy_status = KILLFRENZY_PASSED my_test_var = my_test_var - TIMERB GOTO mission_2p_cars_passed ENDIF IF peds_frenzy_status = KILLFRENZY_FAILED c2_time_ran_out = 1 GOTO mission_2p_cars_failed ENDIF ENDWHILE GOTO mission_2p_cars_failed mission_2p_cars_failed: IF c2_time_ran_out = 0 IF IS_CHAR_DEAD scplayer PRINT_NOW ( MENU_47 ) 4000 1 // ~r~Player one has been killed ENDIF IF IS_CHAR_DEAD p2 PRINT_NOW ( MENU_48 ) 4000 1 // ~r~Player two has been killed ENDIF IF IS_CHAR_DEAD p2 AND IS_CHAR_DEAD scplayer PRINT_NOW ( MENU_49 ) 4000 1 // ~r~Both players were killed ENDIF ELSE PRINT_NOW ( MENU_50 ) 4000 1 // ~r~You didn't get enough kills in time! ENDIF PRINT_BIG ( M_FAIL ) 5000 1 RETURN mission_2p_cars_passed: LVAR_INT best_time_2p my_test_var = my_test_var / 1000 GET_INT_STAT P2_CARS_RAMPAGE_BEST_TIME best_time_2p IF best_time_2p < my_test_var SET_INT_STAT P2_CARS_RAMPAGE_BEST_TIME my_test_var ENDIF IF cars_2p_level = 8 PRINT_WITH_NUMBER_BIG ( M_PASSD ) 0 5000 1 //"Mission Passed!" ELSE PRINT_WITH_NUMBER_BIG ( MENU_67 ) 0 5000 1 //"Mission Passed!" ENDIF CLEAR_WANTED_LEVEL player1 IF NOT IS_CAR_DEAD cars_ply_car LOCK_CAR_DOORS cars_ply_car CARLOCK_UNLOCKED ENDIF IF NOT cars_2p_level = 8 cars_2p_level ++ ENDIF RETURN // mission cleanup mission_2p_cars_cleanup: HIDE_ALL_FRONTEND_BLIPS FALSE c2_time_ran_out = 0 MAKE_PLAYER_GANG_REAPPEAR CLEAR_WANTED_LEVEL player1 SET_WANTED_MULTIPLIER 1.0 MARK_MODEL_AS_NO_LONGER_NEEDED mp5lng MARK_MODEL_AS_NO_LONGER_NEEDED 405 MARK_MODEL_AS_NO_LONGER_NEEDED 420 MARK_MODEL_AS_NO_LONGER_NEEDED 502 MARK_MODEL_AS_NO_LONGER_NEEDED BFYPRO flag_player_on_mission = 0 CLEAR_WANTED_LEVEL player1 MISSION_HAS_FINISHED IF NOT IS_CAR_DEAD cars_ply_car LOCK_CAR_DOORS cars_ply_car CARLOCK_UNLOCKED ENDIF MISSION_END cars2_set_camera: SWITCH_WIDESCREEN ON IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF RETURN cars2_restore_camera: SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 ON SET_PLAYER_CONTROL player2 ON ENDIF RESTORE_CAMERA_JUMPCUT RETURN cars2_fade_out: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN cars2_fade_in: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN cars2_keys: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A IF NOT IS_CAR_DEAD cars_ply_car LOCK_CAR_DOORS cars_ply_car CARLOCK_UNLOCKED ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D GOTO mission_2p_cars_passed ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F IF NOT IS_CHAR_DEAD p2 TASK_DIE p2 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H IF NOT IS_CHAR_DEAD scplayer ADD_ARMOUR_TO_CHAR scplayer 100 INCREASE_PLAYER_MAX_HEALTH player1 100 ENDIF ENDIF RETURN } MISSION_START // ***************************************************************************************** // ********************************* 2-Player Helicopter *********************************** // ***************************************************************************************** // ************************************* Paul Davis **************************************** // ***************************************************************************************** SCRIPT_NAME heli_2p // Begin... GOSUB mission_start_2p_heli IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_2p_heli_failed ENDIF GOSUB mission_2p_heli_cleanup MISSION_END { // **************************************** Variables ************************************** LVAR_INT heli_ply_heli heli_frenzy_status LVAR_INT heli_chopper[5] heli_pilot[5] // *************************************** Menu Stuff ************************************** LVAR_INT amount_of_menu_items_MS current_menu_position_MS menu_button_delay_MS LVAR_INT option_number_values_MS[60] amount_of_option_values_MS[10] current_option_value_MS[10] amount_of_values_per_option_MS LVAR_INT selection_alpha_MS // menu text LVAR_TEXT_LABEL title option_text_MS[10] option_text_values_MS[60] LVAR_INT temp_int_1_MS temp_int_2_MS temp_int_3_MS temp_int_4_MS my_test_var my_test_var2 my_test_var3 my_test_var4 LVAR_FLOAT temp_float_1_MS temp_float_2_MS LVAR_INT player1_model_VS[3] player1_button_delay_VS player1_car_VS player1_waiting_VS player1_chosen_car LVAR_FLOAT player1_car_X player1_car_Y player1_car_Z player1_car_heading // vehicle stuff LVAR_INT vehicle_models_VS[31] last_vehicle_VS // temp stuff LVAR_INT temp_int_1_VS temp_int_2_VS LVAR_INT heli_model_select heli_limit heli_model[10] LVAR_INT heli_colour1 heli_colour2 h2_menu main_menu_heli_2p LVAR_INT h2_time_ran_out // ****************************************Mission Start************************************ mission_start_2p_heli: HIDE_ALL_FRONTEND_BLIPS TRUE CLEAR_PRINTS CLEAR_WANTED_LEVEL player1 SET_WANTED_MULTIPLIER 0.0 //VIEW_INTEGER_VARIABLE heli_colour1 PPK LOAD_MISSION_TEXT MENU2P SET_FADING_COLOUR 0 0 0 GOSUB heli_fade_out heli_ply_heli = 0 heli_frenzy_status = 0 flag_player_on_mission = 1 REGISTER_MISSION_GIVEN WAIT 0 // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** REQUEST_MODEL mp5lng REQUEST_MODEL 497 REQUEST_MODEL 447 REQUEST_MODEL 469 REQUEST_MODEL BFYPRO WHILE NOT HAS_MODEL_LOADED mp5lng OR NOT HAS_MODEL_LOADED 497 OR NOT HAS_MODEL_LOADED 447 OR NOT HAS_MODEL_LOADED 469 OR NOT HAS_MODEL_LOADED BFYPRO WAIT 0 ENDWHILE TIMERA = 0 SET_CAR_DENSITY_MULTIPLIER 1.0 CLEAR_AREA -252.9156 2583.7788 62.5703 40.0 TRUE SWITCH heli_2p_level CASE 0 my_test_var2 = 8 // Cars my_test_var3 = 3 // Minutes my_test_var = 180000 CREATE_CAR 497 -252.9156 2583.7788 62.5703 heli_ply_heli BREAK CASE 1 my_test_var2 = 8 // Cars my_test_var3 = 2 // Minutes my_test_var = 120000 CREATE_CAR 497 -252.9156 2583.7788 62.5703 heli_ply_heli BREAK CASE 2 my_test_var2 = 8 // Cars my_test_var3 = 1 // Minutes my_test_var = 60000 CREATE_CAR 497 -252.9156 2583.7788 62.5703 heli_ply_heli BREAK CASE 3 my_test_var2 = 10 // Cars my_test_var3 = 3 // Minutes my_test_var = 180000 CREATE_CAR 497 -252.9156 2583.7788 62.5703 heli_ply_heli BREAK CASE 4 my_test_var2 = 10 // Cars my_test_var3 = 2 // Minutes my_test_var = 120000 CREATE_CAR 497 -252.9156 2583.7788 62.5703 heli_ply_heli BREAK CASE 5 my_test_var2 = 10 // Cars my_test_var3 = 1 // Minutes my_test_var = 60000 CREATE_CAR 497 -252.9156 2583.7788 62.5703 heli_ply_heli BREAK CASE 6 my_test_var2 = 12 // Cars my_test_var3 = 3 // Minutes my_test_var = 180000 CREATE_CAR 497 -252.9156 2583.7788 62.5703 heli_ply_heli BREAK CASE 7 my_test_var2 = 12 // Cars my_test_var3 = 2 // Minutes my_test_var = 120000 CREATE_CAR 497 -252.9156 2583.7788 62.5703 heli_ply_heli BREAK CASE 8 my_test_var2 = 12 // Cars my_test_var3 = 1 // Minutes my_test_var = 60000 CREATE_CAR 497 -252.9156 2583.7788 62.5703 heli_ply_heli BREAK ENDSWITCH SET_CAR_HEADING heli_ply_heli 310.1937 LOCK_CAR_DOORS heli_ply_heli CARLOCK_LOCKED_PLAYER_INSIDE CREATE_PLAYER 1 -252.9156 2583.7788 62.5703 player2 SET_PLAYER_MODEL player2 BFYPRO GET_PLAYER_CHAR player2 p2 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer -252.9156 2583.7788 62.5703 WARP_CHAR_INTO_CAR scplayer heli_ply_heli WARP_CHAR_INTO_CAR_AS_PASSENGER p2 heli_ply_heli 0 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_GROVE PEDTYPE_PLAYER2 GIVE_WEAPON_TO_CHAR p2 WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON p2 WEAPONTYPE_MP5 SET_PLAYER_PLAYER_TARGETTING FALSE SET_CHAR_NEVER_TARGETTED scplayer TRUE SET_CHAR_NEVER_TARGETTED p2 TRUE SET_TWO_PLAYER_CAMERA_MODE JUMP_CUT LIMIT_TWO_PLAYER_DISTANCE 20.0 DISABLE_CHAR_SPEECH p2 TRUE ENDIF GOSUB heli_set_camera MAKE_PLAYER_GANG_DISAPPEAR IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF SET_FIXED_CAMERA_POSITION -252.9156 2575.8601 65.3400 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -252.7241 2576.8193 65.1324 JUMP_CUT GOSUB heli_fade_in IF NOT my_test_var3 = 1 PRINT_WITH_2_NUMBERS_NOW MENU_64 my_test_var2 my_test_var3 5000 1 // Destroy ~1~ vehicles in ~1~ minutes ELSE PRINT_WITH_2_NUMBERS_NOW MENU_63 my_test_var2 my_test_var3 5000 1 // Destroy ~1~ vehicles in ~1~ minute ENDIF WAIT 5000 GOSUB heli_restore_camera LVAR_INT a_level_display a_level_display = heli_2p_level + 1 // PRINT_WITH_NUMBER_BIG MENU_45 a_level_display 3000 1 // LEVEL ~1~ START_KILL_FRENZY DUMMY WEAPONTYPE_MP5 my_test_var my_test_var2 -2 -2 -2 -2 FALSE // ************************************************************************************************* // * * // * MAIN LOOP * // * * // ************************************************************************************************* TIMERB = 0 WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 AND NOT IS_CAR_DEAD heli_ply_heli WAIT 0 GOSUB heli_keys IF IS_CAR_IN_WATER heli_ply_heli FAIL_KILL_FRENZY ENDIF READ_KILL_FRENZY_STATUS heli_frenzy_status IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S my_test_var = my_test_var - TIMERB heli_frenzy_status = KILLFRENZY_PASSED ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_F heli_frenzy_status = KILLFRENZY_FAILED ENDIF IF heli_frenzy_status = KILLFRENZY_PASSED my_test_var = my_test_var - TIMERB GOTO mission_2p_heli_passed ENDIF IF heli_frenzy_status = KILLFRENZY_FAILED h2_time_ran_out = 1 GOTO mission_2p_heli_failed ENDIF ENDWHILE GOTO mission_2p_heli_failed mission_2p_heli_failed: IF h2_time_ran_out = 0 IF IS_CHAR_DEAD scplayer PRINT_NOW ( MENU_47 ) 4000 1 // ~r~Player one has been killed ENDIF IF IS_CHAR_DEAD p2 PRINT_NOW ( MENU_48 ) 4000 1 // ~r~Player two has been killed ENDIF IF IS_CHAR_DEAD p2 AND IS_CHAR_DEAD scplayer PRINT_NOW ( MENU_49 ) 4000 1 // ~r~Both players were killed ENDIF ELSE PRINT_NOW ( MENU_50 ) 4000 1 // ~r~You didn't get enough kills in time! ENDIF PRINT_BIG ( M_FAIL ) 5000 1 RETURN mission_2p_heli_passed: LVAR_INT best_time_2p my_test_var = my_test_var / 1000 GET_INT_STAT P2_HELI_RAMPAGE_BEST_TIME best_time_2p IF best_time_2p < my_test_var SET_INT_STAT P2_HELI_RAMPAGE_BEST_TIME my_test_var ENDIF IF NOT IS_CAR_DEAD heli_ply_heli LOCK_CAR_DOORS heli_ply_heli CARLOCK_UNLOCKED ENDIF IF NOT heli_2p_level = 8 heli_2p_level ++ ENDIF IF heli_2p_level = 8 PRINT_WITH_NUMBER_BIG ( M_PASSD ) 0 5000 1 //"Mission Passed!" ELSE PRINT_WITH_NUMBER_BIG ( MENU_67 ) 0 5000 1 //"Mission Passed!" ENDIF CLEAR_WANTED_LEVEL player1 RETURN // mission cleanup mission_2p_heli_cleanup: HIDE_ALL_FRONTEND_BLIPS FALSE h2_time_ran_out = 0 MAKE_PLAYER_GANG_REAPPEAR SET_WANTED_MULTIPLIER 1.0 MARK_MODEL_AS_NO_LONGER_NEEDED mp5lng MARK_MODEL_AS_NO_LONGER_NEEDED 497 MARK_MODEL_AS_NO_LONGER_NEEDED 447 MARK_MODEL_AS_NO_LONGER_NEEDED 469 MARK_MODEL_AS_NO_LONGER_NEEDED 487 MARK_MODEL_AS_NO_LONGER_NEEDED 488 MARK_MODEL_AS_NO_LONGER_NEEDED BFYPRO IF NOT IS_CAR_DEAD heli_ply_heli LOCK_CAR_DOORS heli_ply_heli CARLOCK_UNLOCKED ENDIF flag_player_on_mission = 0 CLEAR_WANTED_LEVEL player1 MISSION_HAS_FINISHED RETURN heli_set_camera: SWITCH_WIDESCREEN ON IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF RETURN heli_restore_camera: SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 ON SET_PLAYER_CONTROL player2 ON ENDIF RESTORE_CAMERA_JUMPCUT RETURN heli_fade_out: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN heli_fade_in: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN heli_keys: LVAR_INT heli_dummy_car IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D GOTO mission_2p_heli_passed ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F IF NOT IS_CHAR_DEAD p2 TASK_DIE p2 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H IF NOT IS_CHAR_DEAD scplayer ADD_ARMOUR_TO_CHAR scplayer 100 INCREASE_PLAYER_MAX_HEALTH player1 100 ENDIF ENDIF RETURN } MISSION_START // ***************************************************************************************** // *********************************** 2-Player Peds *************************************** // ***************************************************************************************** // ************************************* Paul Davis **************************************** // ***************************************************************************************** SCRIPT_NAME peds_2p // Begin... GOSUB mission_start_2p_peds IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_2p_peds_failed ENDIF GOSUB mission_2p_peds_cleanup MISSION_END { LVAR_INT amount_of_menu_items_MS current_menu_position_MS menu_button_delay_MS LVAR_INT option_number_values_MS[60] amount_of_option_values_MS[10] current_option_value_MS[10] amount_of_values_per_option_MS LVAR_INT selection_alpha_MS // menu text LVAR_TEXT_LABEL title option_text_MS[10] option_text_values_MS[60] LVAR_INT temp_int_1_MS temp_int_2_MS temp_int_3_MS temp_int_4_MS my_test_var my_test_var2 my_test_var3 my_test_var4 LVAR_FLOAT temp_float_1_MS temp_float_2_MS LVAR_INT player1_model_VS[3] player1_button_delay_VS player1_ped_VS player1_waiting_VS player1_chosen_ped LVAR_FLOAT player1_ped_X player1_ped_Y player1_ped_Z player1_ped_heading // **************************************** Variables ************************************** LVAR_INT peds_frenzy_status LVAR_INT peds_ply_ped peds_ply_ped2 v LVAR_INT black_ped[5] peds_some_guy // **************************************** Variables ************************************** LVAR_INT vehicle_models_VS[31] last_vehicle_VS // temp stuff LVAR_INT temp_int_1_VS temp_int_2_VS LVAR_INT heli_model_select heli_limit heli_model[20] LVAR_INT heli_colour1 heli_colour2 LVAR_INT p2_menu main_menu_peds_2p LVAR_INT p2_time_ran_out // ****************************************Mission Start************************************ mission_start_2p_peds: HIDE_ALL_FRONTEND_BLIPS TRUE CLEAR_PRINTS CLEAR_WANTED_LEVEL player1 SET_WANTED_MULTIPLIER 0.0 SET_FADING_COLOUR 0 0 0 CLEAR_PRINTS peds_frenzy_status = 0 peds_ply_ped = 0 peds_ply_ped2 = 0 peds_some_guy = 0 REPEAT 5 v black_ped[v] = 0 ENDREPEAT flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT MENU2P GOSUB peds2_fade_out WAIT 0 // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** REQUEST_MODEL mp5lng REQUEST_MODEL BFYPRO WHILE NOT HAS_MODEL_LOADED mp5lng OR NOT HAS_MODEL_LOADED BFYPRO WAIT 0 ENDWHILE TIMERA = 0 SET_CAR_DENSITY_MULTIPLIER 0.5 CLEAR_AREA 2510.6331 1207.9175 9.8281 40.0 TRUE SWITCH peds_2p_level CASE 0 REQUEST_MODEL 402 WHILE NOT HAS_MODEL_LOADED 402 WAIT 0 ENDWHILE my_test_var2 = 15 // Peds my_test_var3 = 3 // Minutes my_test_var = 180000 CREATE_CAR 402 2510.6331 1207.9175 9.8281 peds_ply_ped BREAK CASE 1 REQUEST_MODEL 402 WHILE NOT HAS_MODEL_LOADED 402 WAIT 0 ENDWHILE my_test_var2 = 15 // Peds my_test_var3 = 2 // Minutes my_test_var = 120000 CREATE_CAR 402 2510.6331 1207.9175 9.8281 peds_ply_ped BREAK CASE 2 REQUEST_MODEL 402 WHILE NOT HAS_MODEL_LOADED 402 WAIT 0 ENDWHILE my_test_var2 = 15 // Peds my_test_var3 = 1 // Minutes my_test_var = 60000 CREATE_CAR 402 2510.6331 1207.9175 9.8281 peds_ply_ped BREAK CASE 3 REQUEST_MODEL 411 WHILE NOT HAS_MODEL_LOADED 411 WAIT 0 ENDWHILE my_test_var2 = 20 // Peds my_test_var3 = 3 // Minutes my_test_var = 180000 CREATE_CAR 411 2510.6331 1207.9175 9.8281 peds_ply_ped BREAK CASE 4 REQUEST_MODEL 411 WHILE NOT HAS_MODEL_LOADED 411 WAIT 0 ENDWHILE my_test_var2 = 20 // Peds my_test_var3 = 2 // Minutes my_test_var = 120000 CREATE_CAR 411 2510.6331 1207.9175 9.8281 peds_ply_ped BREAK CASE 5 REQUEST_MODEL 411 WHILE NOT HAS_MODEL_LOADED 411 WAIT 0 ENDWHILE my_test_var2 = 20 // Peds my_test_var3 = 1 // Minutes my_test_var = 60000 CREATE_CAR 411 2510.6331 1207.9175 9.8281 peds_ply_ped BREAK CASE 6 REQUEST_MODEL 477 WHILE NOT HAS_MODEL_LOADED 477 WAIT 0 ENDWHILE my_test_var2 = 25 // Peds my_test_var3 = 3 // Minutes my_test_var = 180000 CREATE_CAR 477 2510.6331 1207.9175 9.8281 peds_ply_ped BREAK CASE 7 REQUEST_MODEL 477 WHILE NOT HAS_MODEL_LOADED 477 WAIT 0 ENDWHILE my_test_var2 = 25 // Peds my_test_var3 = 2 // Minutes my_test_var = 120000 CREATE_CAR 477 2510.6331 1207.9175 9.8281 peds_ply_ped BREAK CASE 8 REQUEST_MODEL 477 WHILE NOT HAS_MODEL_LOADED 477 WAIT 0 ENDWHILE my_test_var2 = 25 // Peds my_test_var3 = 1 // Minutes my_test_var = 60000 CREATE_CAR 477 2510.6331 1207.9175 9.8281 peds_ply_ped BREAK ENDSWITCH SET_CAR_HEADING peds_ply_ped 271.2962 LOCK_CAR_DOORS peds_ply_ped CARLOCK_LOCKED_PLAYER_INSIDE CREATE_PLAYER 1 2510.6331 1207.9175 9.8281 player2 SET_PLAYER_MODEL player2 BFYPRO GET_PLAYER_CHAR player2 p2 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer 2510.6331 1207.9175 9.8281 WARP_CHAR_INTO_CAR scplayer peds_ply_ped WARP_CHAR_INTO_CAR_AS_PASSENGER p2 peds_ply_ped 0 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_GROVE PEDTYPE_PLAYER2 GIVE_WEAPON_TO_CHAR p2 WEAPONTYPE_MP5 30000 SET_CURRENT_CHAR_WEAPON p2 WEAPONTYPE_MP5 SET_PLAYER_PLAYER_TARGETTING FALSE SET_CHAR_NEVER_TARGETTED scplayer TRUE SET_CHAR_NEVER_TARGETTED p2 TRUE SET_TWO_PLAYER_CAMERA_MODE JUMP_CUT LIMIT_TWO_PLAYER_DISTANCE 20.0 DISABLE_CHAR_SPEECH p2 TRUE ENDIF GOSUB peds2_set_camera MAKE_PLAYER_GANG_DISAPPEAR IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF SET_FIXED_CAMERA_POSITION 2508.0933 1205.5894 11.1785 0.0 0.0 0.0 // Bike from front POINT_CAMERA_AT_POINT 2509.0173 1205.9573 11.0761 JUMP_CUT GOSUB peds2_fade_in IF NOT my_test_var3 = 1 PRINT_WITH_2_NUMBERS_NOW MENU_46 my_test_var2 my_test_var3 5000 1 // Shoot ~1~ peds in ~1~ minutes ELSE PRINT_WITH_2_NUMBERS_NOW MENU_62 my_test_var2 my_test_var3 5000 1 // Shoot ~1~ peds in ~1~ minute ENDIF WAIT 5000 GOSUB peds2_restore_camera LVAR_INT a_level_display a_level_display = peds_2p_level + 1 //PRINT_WITH_NUMBER_BIG MENU_45 a_level_display 3000 1 // LEVEL ~1~ START_KILL_FRENZY DUMMY WEAPONTYPE_MP5 my_test_var my_test_var2 -1 -1 -1 -1 FALSE SET_PED_DENSITY_MULTIPLIER 2.0 // ************************************************************************************************* // * * // * MAIN LOOP * // * * // ************************************************************************************************* TIMERB = 0 WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 AND NOT IS_CAR_DEAD peds_ply_ped WAIT 0 GOSUB peds2_keys IF IS_CAR_IN_WATER peds_ply_ped FAIL_KILL_FRENZY ENDIF READ_KILL_FRENZY_STATUS peds_frenzy_status IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_S peds_frenzy_status = KILLFRENZY_PASSED ENDIF IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_F peds_frenzy_status = KILLFRENZY_FAILED ENDIF IF peds_frenzy_status = KILLFRENZY_PASSED my_test_var = my_test_var - TIMERB GOTO mission_2p_peds_passed ENDIF IF peds_frenzy_status = KILLFRENZY_FAILED p2_time_ran_out = 1 GOTO mission_2p_peds_failed ENDIF ENDWHILE GOTO mission_2p_peds_failed mission_2p_peds_failed: IF p2_time_ran_out = 0 IF IS_CHAR_DEAD scplayer PRINT_NOW ( MENU_47 ) 4000 1 // ~r~Player one has been killed ENDIF IF IS_CHAR_DEAD p2 PRINT_NOW ( MENU_48 ) 4000 1 // ~r~Player two has been killed ENDIF IF IS_CHAR_DEAD p2 AND IS_CHAR_DEAD scplayer PRINT_NOW ( MENU_49 ) 4000 1 // ~r~Both players were killed ENDIF ELSE PRINT_NOW ( MENU_50 ) 4000 1 // ~r~You didn't get enough kills in time! ENDIF PRINT_BIG ( M_FAIL ) 5000 1 RETURN mission_2p_peds_passed: LVAR_INT best_time_2p my_test_var = my_test_var / 1000 GET_INT_STAT P2_PEDS_RAMPAGE_BEST_TIME best_time_2p IF best_time_2p < my_test_var SET_INT_STAT P2_PEDS_RAMPAGE_BEST_TIME my_test_var ENDIF IF NOT peds_2p_level = 8 peds_2p_level ++ ENDIF IF peds_2p_level = 8 PRINT_WITH_NUMBER_BIG ( M_PASSD ) 0 5000 1 //"Mission Passed!" ELSE PRINT_WITH_NUMBER_BIG ( MENU_67 ) 0 5000 1 //"Mission Passed!" ENDIF CLEAR_WANTED_LEVEL player1 IF NOT IS_CAR_DEAD peds_ply_ped LOCK_CAR_DOORS peds_ply_ped CARLOCK_UNLOCKED ENDIF RETURN // mission cleanup mission_2p_peds_cleanup: HIDE_ALL_FRONTEND_BLIPS FALSE p2_time_ran_out = 0 MAKE_PLAYER_GANG_REAPPEAR CLEAR_WANTED_LEVEL player1 SET_WANTED_MULTIPLIER 1.0 MARK_MODEL_AS_NO_LONGER_NEEDED mp5lng MARK_MODEL_AS_NO_LONGER_NEEDED 402 MARK_MODEL_AS_NO_LONGER_NEEDED 411 MARK_MODEL_AS_NO_LONGER_NEEDED 477 MARK_MODEL_AS_NO_LONGER_NEEDED BFYPRO IF NOT IS_CAR_DEAD peds_ply_ped LOCK_CAR_DOORS peds_ply_ped CARLOCK_UNLOCKED ENDIF flag_player_on_mission = 0 MISSION_HAS_FINISHED RETURN peds2_set_camera: SWITCH_WIDESCREEN ON IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF RETURN peds2_restore_camera: SET_CAMERA_BEHIND_PLAYER SWITCH_WIDESCREEN OFF IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 ON SET_PLAYER_CONTROL player2 ON ENDIF RESTORE_CAMERA_JUMPCUT RETURN peds2_fade_out: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN peds2_fade_in: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN peds2_keys: LVAR_INT peds_dummy_ped IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D GOTO mission_2p_peds_passed ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F IF NOT IS_CHAR_DEAD p2 TASK_DIE p2 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H IF NOT IS_CHAR_DEAD scplayer ADD_ARMOUR_TO_CHAR scplayer 100 INCREASE_PLAYER_MAX_HEALTH player1 100 ENDIF ENDIF RETURN } /* {---------------------------------------MENU2P---------------------------------------} [MENU_00:MENU2P] SUMO [MENU_01:MENU2P] SURVIVE [MENU_02:MENU2P] BOXING [MENU_03:MENU2P] RAMPAGE [MENU_04:MENU2P] TAG [MENU_05:MENU2P] FIXED SHOOTING [MENU_06:MENU2P] KILL [MENU_07:MENU2P] BIKE [MENU_08:MENU2P] CARS [MENU_09:MENU2P] HELICOPTERS [MENU_10:MENU2P] Peds : [MENU_11:MENU2P] ~1~ [MENU_12:MENU2P] Start game [MENU_13:MENU2P] Number of players [MENU_14:MENU2P] CPU opponents [MENU_15:MENU2P] Knockouts to win [MENU_16:MENU2P] Random pickups [MENU_17:MENU2P] Continues [MENU_18:MENU2P] Yes [MENU_19:MENU2P] No [MENU_20:MENU2P] Number of rounds [MENU_21:MENU2P] Location [MENU_22:MENU2P] Los Angeles [MENU_23:MENU2P] Las Vegas [MENU_24:MENU2P] Mountains [MENU_25:MENU2P] Desert [MENU_26:MENU2P] Ped limit [MENU_27:MENU2P] Bike limit [MENU_28:MENU2P] Car limit [MENU_29:MENU2P] Time limit [MENU_30:MENU2P] ~1~ mins [MENU_31:MENU2P] ~1~ min [MENU_33:MENU2P] Peds : ~1~ [MENU_34:MENU2P] ~1~ [MENU_35:MENU2P] Push the ~H~left analog stick~w~ left or right to select a weapon.~N~~X~ = Select.~N~~T~ = Quit. [MENU_36:MENU2P] Kill ~1~ peds in ~1~ minutes [MENU_37:MENU2P] Push the ~H~left analog stick~w~ left or right to select a vehicle.~N~~X~ = Select.~N~~T~ = Quit. [MENU_38:MENU2P] Destroy ~1~ bikes in ~1~ minutes [MENU_39:MENU2P] Destroy ~1~ cars in ~1~ minutes [MENU_40:MENU2P] Destroy ~1~ cars in ~1~ minutes [MENU_41:MENU2P] Cars : ~1~ [MENU_42:MENU2P] Bikes : ~1~ [MENU_43:MENU2P] Push the ~H~left analog stick~w~ left or right to select a helicopter.~N~~X~ = Select.~N~~T~ = Quit. [MENU_44:MENU2P] DRIVEBY [MENU_45:MENU2P] LEVEL ~1~ [MENU_46:MENU2P] Shoot ~1~ peds in ~1~ minutes */ MISSION_START // ***************************************************************************************** // ********************************* 2-Player Run-Around *********************************** // ***************************************************************************************** // ************************************* Paul Davis **************************************** // ***************************************************************************************** SCRIPT_NAME run_ls // Begin... GOSUB mission_start_ls_run IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_ls_run_failed ENDIF GOSUB mission_ls_run_cleanup MISSION_END { // ****************************************Mission Start************************************ mission_start_ls_run: HIDE_ALL_FRONTEND_BLIPS TRUE //--- KISSING VARIABLES LVAR_FLOAT fX[3] fY[3] fZ[3] fTemp[3] // 4 arrays of floats for co-ordinates etc. LVAR_INT iTemp iTemp2 // 2 temp vars to store various int values LVAR_INT iKissingStatus iRadius LVAR_INT ls_model_select SET_FADING_COLOUR 0 0 0 flag_player_on_mission = 1 disable_all_cranes = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT RUN_2P GOSUB runls_fade_out WAIT 0 // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** REQUEST_MODEL BFYPRO REQUEST_ANIMATION KISSING WHILE NOT HAS_MODEL_LOADED BFYPRO OR NOT HAS_ANIMATION_LOADED KISSING WAIT 0 ENDWHILE TIMERA = 0 CLEAR_AREA 2069.9075 -1556.3783 12.4198 10.0 TRUE IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer 2070.3369 -1557.6238 12.4203 SET_CHAR_HEADING scplayer 269.0526 CLEAR_AREA 2491.8950 -1669.1218 12.3594 10.0 TRUE CREATE_PLAYER 1 2069.7400 -1555.6284 12.4214 player2 DO_WEAPON_STUFF_AT_START_OF_2P_GAME GET_PLAYER_CHAR player2 p2 SET_PLAYER_MODEL player2 BFYPRO SET_CHAR_HEADING p2 269.0526 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_GROVE PEDTYPE_PLAYER2 SET_PLAYER_PLAYER_TARGETTING FALSE SET_CHAR_NEVER_TARGETTED scplayer TRUE SET_CHAR_NEVER_TARGETTED p2 TRUE SET_TWO_PLAYER_CAMERA_MODE JUMP_CUT LIMIT_TWO_PLAYER_DISTANCE 20.0 DISABLE_CHAR_SPEECH p2 TRUE ENDIF GOSUB runls_set_camera SET_FIXED_CAMERA_POSITION 2078.4504 -1556.6678 13.6446 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2077.4514 -1556.6514 13.6027 JUMP_CUT GOSUB runls_fade_in PRINT_NOW ( RUN_02 ) 5000 1 // ~s~Free roam around the city, but don't let the cops catch you! WAIT 5000 CLEAR_PRINTS SWITCH_WIDESCREEN OFF // PRINT_HELP_FOREVER ( RUN_XX ) // Player 2 : Push the ~H~left analog stick~w~ left or right to select a character.~N~~X~ Select~N~ // Not used in mobile WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 WAIT 0 IF TIMERB > 250 GET_POSITION_OF_ANALOGUE_STICKS PAD2 LStickX LStickY RStickX RStickY IF IS_BUTTON_PRESSED PAD2 LEFTSTICKX AND LStickX > 100 ls_model_select ++ IF ls_model_select > 5 ls_model_select = 0 ENDIF GOSUB ls_select_model TIMERB = 0 ENDIF IF IS_BUTTON_PRESSED PAD2 LEFTSTICKX AND LStickX < -100 ls_model_select -- IF ls_model_select < 0 ls_model_select = 5 ENDIF GOSUB ls_select_model TIMERB = 0 ENDIF IF IS_BUTTON_PRESSED PAD2 DPADRIGHT ls_model_select ++ IF ls_model_select > 5 ls_model_select = 0 ENDIF GOSUB ls_select_model TIMERB = 0 ENDIF IF IS_BUTTON_PRESSED PAD2 DPADLEFT ls_model_select -- IF ls_model_select < 0 ls_model_select = 5 ENDIF GOSUB ls_select_model TIMERB = 0 ENDIF ENDIF IF IS_BUTTON_PRESSED PAD2 CROSS GOSUB runls_restore_camera CLEAR_HELP GOTO runls_main_loop ENDIF ENDWHILE runls_main_loop: PRINT_HELP ( RUN_06 ) // ~s~You can kiss the other player by standing near them and pressing the ~h~L1 ~w~button. WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 WAIT 0 GOSUB runls_keys IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF NOT IS_CHAR_IN_ANY_CAR scplayer IF NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON scplayer WEAPONTYPE_SPRAYCAN AND NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON p2 WEAPONTYPE_SPRAYCAN GOSUB runls_KissCheck ELSE CLEAR_CHAR_LAST_WEAPON_DAMAGE scplayer CLEAR_CHAR_LAST_WEAPON_DAMAGE p2 ENDIF ENDIF ENDIF ENDWHILE GOTO mission_ls_run_failed mission_ls_run_failed: IF IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_03 ) 4000 1 // ~r~Player one has been killed ENDIF IF IS_CHAR_DEAD p2 PRINT_NOW ( RUN_04 ) 4000 1 // ~r~Player two has been killed ENDIF IF IS_CHAR_DEAD p2 AND IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_05 ) 4000 1 // ~r~Both players were killed ENDIF PRINT_BIG ( M_FAIL ) 5000 1 RETURN mission_ls_run_passed: //flag_twoplay_mission1_passed = 1 CLEAR_WANTED_LEVEL player1 RETURN // mission cleanup mission_ls_run_cleanup: disable_all_cranes = 0 HIDE_ALL_FRONTEND_BLIPS FALSE MARK_MODEL_AS_NO_LONGER_NEEDED BFYPRO MARK_MODEL_AS_NO_LONGER_NEEDED FAM2 MARK_MODEL_AS_NO_LONGER_NEEDED WMOPREA MARK_MODEL_AS_NO_LONGER_NEEDED WMYBELL MARK_MODEL_AS_NO_LONGER_NEEDED LAPD1 MARK_MODEL_AS_NO_LONGER_NEEDED FAM1 MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS1 REMOVE_ANIMATION KISSING flag_player_on_mission = 0 CLEAR_WANTED_LEVEL player1 MISSION_HAS_FINISHED RETURN runls_set_camera: SWITCH_WIDESCREEN ON IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF RETURN runls_restore_camera: SET_CAMERA_IN_FRONT_OF_PLAYER SWITCH_WIDESCREEN OFF IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 ON SET_PLAYER_CONTROL player2 ON ENDIF RESTORE_CAMERA_JUMPCUT RETURN runls_fade_out: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN runls_fade_in: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN ls_select_model: SWITCH ls_model_select CASE 0 REQUEST_MODEL BFYPRO WHILE NOT HAS_MODEL_LOADED BFYPRO WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 BFYPRO BREAK CASE 1 REQUEST_MODEL FAM2 WHILE NOT HAS_MODEL_LOADED FAM2 WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 FAM2 BREAK CASE 2 REQUEST_MODEL WMOPREA WHILE NOT HAS_MODEL_LOADED WMOPREA WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 WMOPREA BREAK CASE 3 REQUEST_MODEL BALLAS1 WHILE NOT HAS_MODEL_LOADED BALLAS1 WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 BALLAS1 BREAK CASE 4 REQUEST_MODEL LAPD1 WHILE NOT HAS_MODEL_LOADED LAPD1 WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 LAPD1 BREAK CASE 5 REQUEST_MODEL FAM1 WHILE NOT HAS_MODEL_LOADED FAM1 WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 FAM1 BREAK ENDSWITCH RETURN runls_keys: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F IF NOT IS_CHAR_DEAD p2 TASK_DIE p2 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H IF NOT IS_CHAR_DEAD scplayer ADD_ARMOUR_TO_CHAR scplayer 100 INCREASE_PLAYER_MAX_HEALTH player1 100 ENDIF ENDIF RETURN /******************************************** STATE 6: ON FOOT KISSING ********************************************/ /******************************************* KISS CHECK ********************************************/ //--- Usage: Call this sub-routine every loop cycle. // It performs a series of spatial checks and also check for L1 to be depressed. // If help text is needed, it can be prented here (I have provided a lablel, commented) runls_KissCheck: IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF iKissingStatus = 0 IF NOT IS_CHAR_IN_ANY_CAR scplayer AND NOT IS_CHAR_IN_ANY_CAR p2 IF IS_CHAR_STOPPED p2 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS p2 0.0 0.5 0.0 fX[0] fY[0] fZ[0] IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer fX[0] fY[0] fZ[0] 1.2 1.2 1.0 FALSE IF iRadius = 0 PRINT_HELP_FOREVER ( GF_0021 ) // Press ~m~~widget_kiss~ to kiss. iRadius = 1 ENDIF GET_CHAR_COORDINATES scplayer fX[0] fY[0] fZ[0] GET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] fTemp[0] = fZ[1] - 0.02 fTemp[1] = fZ[1] + 0.02 //--- Check if player and girl are on the same level IF fZ[0] > fTemp[0] AND fZ[0] < fTemp[1] // Kiss now IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1 OR IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1 iKissingStatus = 1 GOSUB runls_Kissing ENDIF ENDIF ELSE IF iRadius = 1 CLEAR_HELP iRadius = 0 ENDIF ENDIF ENDIF ENDIF ELSE GOSUB runls_Kissing ENDIF ENDIF RETURN /******************************************** KISSING ********************************************/ //--- Usage: This minute state-machine is called by KissCheck every loop cycle if a kiss has been triggered. // Its main purpose is play the kiss animation. It will reset itself by setting iKissingStatus = 0. runls_Kissing: SWITCH iKissingStatus CASE 1 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY p2 CLEAR_HELP SET_PLAYER_CONTROL player1 OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 TRUE SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE //--- Switch Roads OFF GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 2.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Rotate player and GF to face each other TASK_TURN_CHAR_TO_FACE_CHAR scplayer p2 TASK_TURN_CHAR_TO_FACE_CHAR p2 scplayer ++iKissingStatus ENDIF BREAK CASE 2 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 GET_SCRIPT_TASK_STATUS scplayer TASK_TURN_CHAR_TO_FACE_CHAR iTemp GET_SCRIPT_TASK_STATUS p2 TASK_TURN_CHAR_TO_FACE_CHAR iTemp2 IF iTemp = FINISHED_TASK AND iTemp2 = FINISHED_TASK //--- Switch collisions OFF SET_CHAR_COLLISION scplayer FALSE SET_CHAR_COLLISION p2 FALSE //--- Update Player and GF co-ords to match anim GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 1.0 0.0 fX[1] fY[1] fZ[1] GET_GROUND_Z_FOR_3D_COORD fX[1] fY[1] fZ[1] fZ[1] //---Store the current girl co-ords GET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] GET_GROUND_Z_FOR_3D_COORD fX[2] fY[2] fZ[2] fZ[2] //--- Now move the girl in the right spot SET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] //--- Camera Cut GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 1.2 -1.0 0.5 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 0.7 0.5 fX[1] fY[1] fZ[1] IF IS_LINE_OF_SIGHT_CLEAR fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] TRUE TRUE FALSE TRUE FALSE SET_FIXED_CAMERA_POSITION fX[0] fY[0] fZ[0] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT fX[1] fY[1] fZ[1] JUMP_CUT ENDIF TASK_STAND_STILL scplayer -1 TASK_STAND_STILL p2 -1 ++iKissingStatus ELSE IF iTemp = FINISHED_TASK GET_SCRIPT_TASK_STATUS scplayer TASK_STAND_STILL iTemp IF NOT iTemp = PERFORMING_TASK AND NOT iTemp = WAITING_TO_START_TASK TASK_STAND_STILL scplayer -1 ENDIF ENDIF IF iTemp2 = FINISHED_TASK GET_SCRIPT_TASK_STATUS p2 TASK_STAND_STILL iTemp2 IF NOT iTemp2 = PERFORMING_TASK AND NOT iTemp2 = WAITING_TO_START_TASK TASK_STAND_STILL p2 -1 GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] ENDIF ENDIF ENDIF ENDIF BREAK CASE 3 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Switch collisions back ON SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE //--- Play anim TASK_PLAY_ANIM scplayer PLAYA_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM p2 GRLFRD_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 ++iKissingStatus ENDIF BREAK CASE 4 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Now conclude the cut-scene fTemp[0] = -1.0 IF IS_CHAR_PLAYING_ANIM scplayer PLAYA_KISS_02 GET_CHAR_ANIM_CURRENT_TIME scplayer PLAYA_KISS_02 fTemp[0] ENDIF IF fTemp[0] > -1.0 // An anim is playing IF fTemp[0] = 1.0 // The animation is finished HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ELSE CLEAR_CHAR_TASKS scplayer TASK_PAUSE p2 0 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ENDIF BREAK ENDSWITCH RETURN } /* {--------------------------------------RUN_2P---------------------------------------------} [RUN_00:RUN_2P] ~s~ [RUN_01:RUN_2P] 2p Run Around [RUN_02:RUN_2P] ~s~Free roam around the city, but don't let the cops catch you! [RUN_03:RUN_2P] ~s~Ped Limit [RUN_04:RUN_2P] ~s~Time Limit [RUN_05:RUN_2P] ~s~Los Angelas [RUN_06:RUN_2P] ~s~Los Vegas [RUN_07:RUN_2P] ~s~Mountains [RUN_08:RUN_2P] ~s~Desert [RUN_09:RUN_2P] ~s~~1~ Mins [RUN_10:RUN_2P] ~s~~1~ Peds [RUN_11:RUN_2P] ~s~Press ~x~ to progress [RUN_12:RUN_2P] Select a Weapon [RUN_13:RUN_2P] Shoot ~1~ Peds in ~1~ minutes */ MISSION_START // ***************************************************************************************** // ********************************* 2-Player Run-Around *********************************** // ***************************************************************************************** // ************************************* Paul Davis **************************************** // ***************************************************************************************** SCRIPT_NAME run_lv // Begin... GOSUB mission_start_lv_run IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_lv_run_failed ENDIF GOSUB mission_lv_run_cleanup MISSION_END { // ****************************************Mission Start************************************ mission_start_lv_run: HIDE_ALL_FRONTEND_BLIPS TRUE LVAR_INT lv_model_select //--- KISSING VARIABLES LVAR_FLOAT fX[3] fY[3] fZ[3] fTemp[3] // 4 arrays of floats for co-ordinates etc. LVAR_INT iTemp iTemp2 // 2 temp vars to store various int values LVAR_INT iKissingStatus iRadius disable_all_cranes = 1 SET_FADING_COLOUR 0 0 0 flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT RUN_2P GOSUB runlv_fade_out WAIT 0 // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** REQUEST_MODEL WFYSEX REQUEST_ANIMATION KISSING WHILE NOT HAS_MODEL_LOADED WFYSEX OR NOT HAS_ANIMATION_LOADED KISSING WAIT 0 ENDWHILE TIMERA = 0 IF NOT IS_CHAR_DEAD scplayer CLEAR_AREA 2234.8931 1451.4127 10.0546 10.0 TRUE SET_CHAR_COORDINATES scplayer 2234.8931 1451.4127 10.0546 SET_CHAR_HEADING scplayer 238.7284 CREATE_PLAYER 1 2234.3708 1454.5231 10.0546 player2 DO_WEAPON_STUFF_AT_START_OF_2P_GAME GET_PLAYER_CHAR player2 p2 SET_PLAYER_MODEL player2 WFYSEX SET_CHAR_HEADING p2 251.0562 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_GROVE PEDTYPE_PLAYER2 SET_PLAYER_PLAYER_TARGETTING FALSE SET_CHAR_NEVER_TARGETTED scplayer TRUE SET_CHAR_NEVER_TARGETTED p2 TRUE SET_TWO_PLAYER_CAMERA_MODE JUMP_CUT LIMIT_TWO_PLAYER_DISTANCE 20.0 DISABLE_CHAR_SPEECH p2 TRUE ENDIF GOSUB runlv_set_camera SET_FIXED_CAMERA_POSITION 2236.5593 1448.9369 11.6522 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2236.1265 1449.8221 11.4823 JUMP_CUT GOSUB runlv_fade_in PRINT_NOW ( RUN_02 ) 5000 1 // ~s~Free roam around the city, but don't let the cops catch you! WAIT 5000 CLEAR_PRINTS SWITCH_WIDESCREEN OFF // PRINT_HELP_FOREVER ( RUN_XX ) // Player 2 : Push the ~H~left analog stick~w~ left or right to select a character.~N~~X~ Select~N~ // Not used in mobile WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 WAIT 0 IF TIMERB > 250 GET_POSITION_OF_ANALOGUE_STICKS PAD2 LStickX LStickY RStickX RStickY IF IS_BUTTON_PRESSED PAD2 LEFTSTICKX AND LStickX > 100 lv_model_select ++ IF lv_model_select > 5 lv_model_select = 0 ENDIF GOSUB lv_select_model TIMERB = 0 ENDIF IF IS_BUTTON_PRESSED PAD2 LEFTSTICKX AND LStickX < -100 lv_model_select -- IF lv_model_select < 0 lv_model_select = 5 ENDIF GOSUB lv_select_model TIMERB = 0 ENDIF IF IS_BUTTON_PRESSED PAD2 DPADRIGHT lv_model_select ++ IF lv_model_select > 5 lv_model_select = 0 ENDIF GOSUB lv_select_model TIMERB = 0 ENDIF IF IS_BUTTON_PRESSED PAD2 DPADLEFT lv_model_select -- IF lv_model_select < 0 lv_model_select = 5 ENDIF GOSUB lv_select_model TIMERB = 0 ENDIF ENDIF IF IS_BUTTON_PRESSED PAD2 CROSS GOSUB runlv_restore_camera CLEAR_HELP GOTO runlv_main_loop ENDIF ENDWHILE runlv_main_loop: PRINT_HELP ( RUN_06 ) // ~s~You can kiss the other player by standing near them and pressing the ~h~L1 ~w~button. WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 WAIT 0 GOSUB runlv_keys IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF NOT IS_CHAR_IN_ANY_CAR scplayer IF NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON scplayer WEAPONTYPE_SPRAYCAN AND NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON p2 WEAPONTYPE_SPRAYCAN GOSUB runlv_KissCheck ELSE CLEAR_CHAR_LAST_WEAPON_DAMAGE scplayer CLEAR_CHAR_LAST_WEAPON_DAMAGE p2 ENDIF ENDIF ENDIF ENDWHILE GOTO mission_lv_run_failed mission_lv_run_failed: IF IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_03 ) 4000 1 // ~r~Player one has been killed ENDIF IF IS_CHAR_DEAD p2 PRINT_NOW ( RUN_04 ) 4000 1 // ~r~Player two has been killed ENDIF IF IS_CHAR_DEAD p2 AND IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_05 ) 4000 1 // ~r~Both players were killed ENDIF PRINT_BIG ( M_FAIL ) 5000 1 RETURN mission_lv_run_passed: //flag_twoplay_mission1_passed = 1 PRINT_WITH_NUMBER_BIG ( M_PASS ) 10000 5000 1 ADD_SCORE player1 10000 CLEAR_WANTED_LEVEL player1 RETURN // mission cleanup mission_lv_run_cleanup: disable_all_cranes = 0 HIDE_ALL_FRONTEND_BLIPS FALSE MARK_MODEL_AS_NO_LONGER_NEEDED WFYSEX MARK_MODEL_AS_NO_LONGER_NEEDED VHMYELV MARK_MODEL_AS_NO_LONGER_NEEDED LVEMT1 MARK_MODEL_AS_NO_LONGER_NEEDED VWFYST1 MARK_MODEL_AS_NO_LONGER_NEEDED VWMOTR1 MARK_MODEL_AS_NO_LONGER_NEEDED LVFD1 REMOVE_ANIMATION KISSING flag_player_on_mission = 0 CLEAR_WANTED_LEVEL player1 MISSION_HAS_FINISHED RETURN runlv_set_camera: SWITCH_WIDESCREEN ON IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF RETURN runlv_restore_camera: SET_CAMERA_IN_FRONT_OF_PLAYER SWITCH_WIDESCREEN OFF IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 ON SET_PLAYER_CONTROL player2 ON ENDIF RESTORE_CAMERA_JUMPCUT RETURN runlv_fade_out: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN runlv_fade_in: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN lv_select_model: SWITCH lv_model_select CASE 0 REQUEST_MODEL WFYSEX WHILE NOT HAS_MODEL_LOADED WFYSEX WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 WFYSEX BREAK CASE 1 REQUEST_MODEL VHMYELV WHILE NOT HAS_MODEL_LOADED VHMYELV WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 VHMYELV BREAK CASE 2 REQUEST_MODEL LVEMT1 WHILE NOT HAS_MODEL_LOADED LVEMT1 WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 LVEMT1 BREAK CASE 3 REQUEST_MODEL VWFYST1 WHILE NOT HAS_MODEL_LOADED VWFYST1 WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 VWFYST1 BREAK CASE 4 REQUEST_MODEL VWMOTR1 WHILE NOT HAS_MODEL_LOADED VWMOTR1 WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 VWMOTR1 BREAK CASE 5 REQUEST_MODEL LVFD1 WHILE NOT HAS_MODEL_LOADED LVFD1 WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 LVFD1 BREAK ENDSWITCH RETURN runlv_keys: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F IF NOT IS_CHAR_DEAD p2 TASK_DIE p2 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H IF NOT IS_CHAR_DEAD scplayer ADD_ARMOUR_TO_CHAR scplayer 100 INCREASE_PLAYER_MAX_HEALTH player1 100 ENDIF ENDIF RETURN /******************************************** STATE 6: ON FOOT KISSING ********************************************/ /******************************************* KISS CHECK ********************************************/ //--- Usage: Call this sub-routine every loop cycle. // It performs a series of spatial checks and also check for L1 to be depressed. // If help text is needed, it can be prented here (I have provided a lablel, commented) runlv_KissCheck: IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF iKissingStatus = 0 IF NOT IS_CHAR_IN_ANY_CAR scplayer AND NOT IS_CHAR_IN_ANY_CAR p2 IF IS_CHAR_STOPPED p2 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS p2 0.0 0.5 0.0 fX[0] fY[0] fZ[0] IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer fX[0] fY[0] fZ[0] 1.2 1.2 1.0 FALSE IF iRadius = 0 PRINT_HELP_FOREVER ( GF_0021 ) // Press ~m~~widget_kiss~ to kiss. iRadius = 1 ENDIF GET_CHAR_COORDINATES scplayer fX[0] fY[0] fZ[0] GET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] fTemp[0] = fZ[1] - 0.02 fTemp[1] = fZ[1] + 0.02 //--- Check if player and girl are on the same level IF fZ[0] > fTemp[0] AND fZ[0] < fTemp[1] // Kiss now IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1 OR IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1 iKissingStatus = 1 GOSUB runlv_Kissing ENDIF ENDIF ELSE IF iRadius = 1 CLEAR_HELP iRadius = 0 ENDIF ENDIF ENDIF ENDIF ELSE GOSUB runlv_Kissing ENDIF ENDIF RETURN /******************************************** KISSING ********************************************/ //--- Usage: This minute state-machine is called by KissCheck every loop cycle if a kiss has been triggered. // Its main purpose is play the kiss animation. It will reset itself by setting iKissingStatus = 0. runlv_Kissing: SWITCH iKissingStatus CASE 1 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY p2 CLEAR_HELP SET_PLAYER_CONTROL player1 OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 TRUE SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE //--- Switch Roads OFF GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 2.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Rotate player and GF to face each other TASK_TURN_CHAR_TO_FACE_CHAR scplayer p2 TASK_TURN_CHAR_TO_FACE_CHAR p2 scplayer ++iKissingStatus ENDIF BREAK CASE 2 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 GET_SCRIPT_TASK_STATUS scplayer TASK_TURN_CHAR_TO_FACE_CHAR iTemp GET_SCRIPT_TASK_STATUS p2 TASK_TURN_CHAR_TO_FACE_CHAR iTemp2 IF iTemp = FINISHED_TASK AND iTemp2 = FINISHED_TASK //--- Switch collisions OFF SET_CHAR_COLLISION scplayer FALSE SET_CHAR_COLLISION p2 FALSE //--- Update Player and GF co-ords to match anim GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 1.0 0.0 fX[1] fY[1] fZ[1] GET_GROUND_Z_FOR_3D_COORD fX[1] fY[1] fZ[1] fZ[1] //---Store the current girl co-ords GET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] GET_GROUND_Z_FOR_3D_COORD fX[2] fY[2] fZ[2] fZ[2] //--- Now move the girl in the right spot SET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] //--- Camera Cut GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 1.2 -1.0 0.5 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 0.7 0.5 fX[1] fY[1] fZ[1] IF IS_LINE_OF_SIGHT_CLEAR fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] TRUE TRUE FALSE TRUE FALSE SET_FIXED_CAMERA_POSITION fX[0] fY[0] fZ[0] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT fX[1] fY[1] fZ[1] JUMP_CUT ENDIF TASK_STAND_STILL scplayer -1 TASK_STAND_STILL p2 -1 ++iKissingStatus ELSE IF iTemp = FINISHED_TASK GET_SCRIPT_TASK_STATUS scplayer TASK_STAND_STILL iTemp IF NOT iTemp = PERFORMING_TASK AND NOT iTemp = WAITING_TO_START_TASK TASK_STAND_STILL scplayer -1 ENDIF ENDIF IF iTemp2 = FINISHED_TASK GET_SCRIPT_TASK_STATUS p2 TASK_STAND_STILL iTemp2 IF NOT iTemp2 = PERFORMING_TASK AND NOT iTemp2 = WAITING_TO_START_TASK TASK_STAND_STILL p2 -1 GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] ENDIF ENDIF ENDIF ENDIF BREAK CASE 3 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Switch collisions back ON SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE //--- Play anim TASK_PLAY_ANIM scplayer PLAYA_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM p2 GRLFRD_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 ++iKissingStatus ENDIF BREAK CASE 4 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Now conclude the cut-scene fTemp[0] = -1.0 IF IS_CHAR_PLAYING_ANIM scplayer PLAYA_KISS_02 GET_CHAR_ANIM_CURRENT_TIME scplayer PLAYA_KISS_02 fTemp[0] ENDIF IF fTemp[0] > -1.0 // An anim is playing IF fTemp[0] = 1.0 // The animation is finished HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ELSE CLEAR_CHAR_TASKS scplayer TASK_PAUSE p2 0 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ENDIF BREAK ENDSWITCH RETURN } /* {--------------------------------------RUN_2P---------------------------------------------} [RUN_00:RUN_2P] ~s~ [RUN_01:RUN_2P] 2p Run Around [RUN_02:RUN_2P] ~s~Free roam around the city, but don't let the cops catch you! [RUN_03:RUN_2P] ~s~Ped Limit [RUN_04:RUN_2P] ~s~Time Limit [RUN_05:RUN_2P] ~s~Los Angelas [RUN_06:RUN_2P] ~s~Los Vegas [RUN_07:RUN_2P] ~s~Mountains [RUN_08:RUN_2P] ~s~Desert [RUN_09:RUN_2P] ~s~~1~ Mins [RUN_10:RUN_2P] ~s~~1~ Peds [RUN_11:RUN_2P] ~s~Press ~x~ to progress [RUN_12:RUN_2P] Select a Weapon [RUN_13:RUN_2P] Shoot ~1~ Peds in ~1~ minutes */ MISSION_START // ***************************************************************************************** // ********************************* 2-Player Run-Around *********************************** // ***************************************************************************************** // ************************************* Paul Davis **************************************** // ***************************************************************************************** SCRIPT_NAME run_sf // Begin... GOSUB mission_start_sf_run IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_sf_run_failed ENDIF GOSUB mission_sf_run_cleanup MISSION_END { // ****************************************Mission Start************************************ mission_start_sf_run: HIDE_ALL_FRONTEND_BLIPS TRUE LVAR_INT sf_model_select //--- KISSING VARIABLES LVAR_FLOAT fX[3] fY[3] fZ[3] fTemp[3] // 4 arrays of floats for co-ordinates etc. LVAR_INT iTemp iTemp2 // 2 temp vars to store various int values LVAR_INT iKissingStatus iRadius SET_FADING_COLOUR 0 0 0 disable_all_cranes = 1 flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT RUN_2P GOSUB runsf_fade_out WAIT 0 // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** REQUEST_MODEL SFR1 REQUEST_ANIMATION KISSING WHILE NOT HAS_MODEL_LOADED SFR1 OR NOT HAS_ANIMATION_LOADED KISSING WAIT 0 ENDWHILE TIMERA = 0 CLEAR_AREA -2197.6665 292.0621 34.1230 10.0 TRUE IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer -2196.9175 288.4338 34.3262 SET_CHAR_HEADING scplayer 342.0689 CREATE_PLAYER 1 -2201.3318 288.7762 34.3203 player2 DO_WEAPON_STUFF_AT_START_OF_2P_GAME GET_PLAYER_CHAR player2 p2 SET_CHAR_HEADING p2 342.0689 SET_PLAYER_MODEL player2 SFR1 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_GROVE PEDTYPE_PLAYER2 SET_PLAYER_PLAYER_TARGETTING FALSE SET_CHAR_NEVER_TARGETTED scplayer TRUE SET_CHAR_NEVER_TARGETTED p2 TRUE SET_TWO_PLAYER_CAMERA_MODE JUMP_CUT LIMIT_TWO_PLAYER_DISTANCE 20.0 DISABLE_CHAR_SPEECH p2 TRUE ENDIF GOSUB runsf_set_camera SET_FIXED_CAMERA_POSITION -2194.5774 289.8771 36.0049 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2195.5154 289.5766 35.8330 JUMP_CUT GOSUB runsf_fade_in PRINT_NOW ( RUN_02 ) 5000 1 // ~s~Free roam around the city, but don't let the cops catch you! WAIT 5000 CLEAR_PRINTS SWITCH_WIDESCREEN OFF // PRINT_HELP_FOREVER ( RUN_XX ) // Player 2 : Push the ~H~left analog stick~w~ left or right to select a character.~N~~X~ Select~N~ // Not used in mobile WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 WAIT 0 IF TIMERB > 250 GET_POSITION_OF_ANALOGUE_STICKS PAD2 LStickX LStickY RStickX RStickY IF IS_BUTTON_PRESSED PAD2 LEFTSTICKX AND LStickX > 100 sf_model_select ++ IF sf_model_select > 5 sf_model_select = 0 ENDIF GOSUB sf_select_model TIMERB = 0 ENDIF IF IS_BUTTON_PRESSED PAD2 LEFTSTICKX AND LStickX < -100 sf_model_select -- IF sf_model_select < 0 sf_model_select = 5 ENDIF GOSUB sf_select_model TIMERB = 0 ENDIF IF IS_BUTTON_PRESSED PAD2 DPADRIGHT sf_model_select ++ IF sf_model_select > 5 sf_model_select = 0 ENDIF GOSUB sf_select_model TIMERB = 0 ENDIF IF IS_BUTTON_PRESSED PAD2 DPADLEFT sf_model_select -- IF sf_model_select < 0 sf_model_select = 5 ENDIF GOSUB sf_select_model TIMERB = 0 ENDIF ENDIF IF IS_BUTTON_PRESSED PAD2 CROSS GOSUB runsf_restore_camera CLEAR_HELP GOTO runsf_main_loop ENDIF ENDWHILE runsf_main_loop: PRINT_HELP ( RUN_06 ) // ~s~You can kiss the other player by standing near them and pressing the ~h~L1 ~w~button. WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 WAIT 0 GOSUB runsf_keys IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF NOT IS_CHAR_IN_ANY_CAR scplayer IF NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON scplayer WEAPONTYPE_SPRAYCAN AND NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON p2 WEAPONTYPE_SPRAYCAN GOSUB runsf_KissCheck ELSE CLEAR_CHAR_LAST_WEAPON_DAMAGE scplayer CLEAR_CHAR_LAST_WEAPON_DAMAGE p2 ENDIF ENDIF ENDIF ENDWHILE GOTO mission_sf_run_failed mission_sf_run_failed: IF IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_03 ) 4000 1 // ~r~Player one has been killed ENDIF IF IS_CHAR_DEAD p2 PRINT_NOW ( RUN_04 ) 4000 1 // ~r~Player two has been killed ENDIF IF IS_CHAR_DEAD p2 AND IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_05 ) 4000 1 // ~r~Both players were killed ENDIF PRINT_BIG ( M_FAIL ) 5000 1 RETURN mission_sf_run_passed: //flag_twoplay_mission1_passed = 1 CLEAR_WANTED_LEVEL player1 RETURN // mission cleanup mission_sf_run_cleanup: disable_all_cranes = 0 HIDE_ALL_FRONTEND_BLIPS FALSE MARK_MODEL_AS_NO_LONGER_NEEDED SFR1 MARK_MODEL_AS_NO_LONGER_NEEDED SFR2 MARK_MODEL_AS_NO_LONGER_NEEDED WFYLG MARK_MODEL_AS_NO_LONGER_NEEDED SBFYSTR MARK_MODEL_AS_NO_LONGER_NEEDED SWFYSTR MARK_MODEL_AS_NO_LONGER_NEEDED SFFD1 REMOVE_ANIMATION KISSING flag_player_on_mission = 0 CLEAR_WANTED_LEVEL player1 MISSION_HAS_FINISHED RETURN runsf_set_camera: SWITCH_WIDESCREEN ON IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF RETURN runsf_restore_camera: SET_CAMERA_IN_FRONT_OF_PLAYER SWITCH_WIDESCREEN OFF IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 ON SET_PLAYER_CONTROL player2 ON ENDIF RESTORE_CAMERA_JUMPCUT RETURN runsf_fade_out: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN runsf_fade_in: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN sf_select_model: SWITCH sf_model_select CASE 0 REQUEST_MODEL SFR1 WHILE NOT HAS_MODEL_LOADED SFR1 WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 SFR1 BREAK CASE 1 REQUEST_MODEL SFR2 WHILE NOT HAS_MODEL_LOADED SFR2 WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 SFR2 BREAK CASE 2 REQUEST_MODEL WFYLG WHILE NOT HAS_MODEL_LOADED WFYLG WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 WFYLG BREAK CASE 3 REQUEST_MODEL SBFYSTR WHILE NOT HAS_MODEL_LOADED SBFYSTR WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 SBFYSTR BREAK CASE 4 REQUEST_MODEL SWFYSTR WHILE NOT HAS_MODEL_LOADED SWFYSTR WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 SWFYSTR BREAK CASE 5 REQUEST_MODEL SFFD1 WHILE NOT HAS_MODEL_LOADED SFFD1 WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 SFFD1 BREAK ENDSWITCH RETURN runsf_keys: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F IF NOT IS_CHAR_DEAD p2 TASK_DIE p2 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H IF NOT IS_CHAR_DEAD scplayer ADD_ARMOUR_TO_CHAR scplayer 100 INCREASE_PLAYER_MAX_HEALTH player1 100 ENDIF ENDIF RETURN /******************************************** STATE 6: ON FOOT KISSING ********************************************/ /******************************************* KISS CHECK ********************************************/ //--- Usage: Call this sub-routine every loop cycle. // It performs a series of spatial checks and also check for L1 to be depressed. // If help text is needed, it can be prented here (I have provided a lablel, commented) runsf_KissCheck: IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF iKissingStatus = 0 IF NOT IS_CHAR_IN_ANY_CAR scplayer AND NOT IS_CHAR_IN_ANY_CAR p2 IF IS_CHAR_STOPPED p2 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS p2 0.0 0.5 0.0 fX[0] fY[0] fZ[0] IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer fX[0] fY[0] fZ[0] 1.2 1.2 1.0 FALSE IF iRadius = 0 PRINT_HELP_FOREVER ( GF_0021 ) // Press ~m~~widget_kiss~ to kiss. iRadius = 1 ENDIF GET_CHAR_COORDINATES scplayer fX[0] fY[0] fZ[0] GET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] fTemp[0] = fZ[1] - 0.02 fTemp[1] = fZ[1] + 0.02 //--- Check if player and girl are on the same level IF fZ[0] > fTemp[0] AND fZ[0] < fTemp[1] // Kiss now IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1 OR IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1 iKissingStatus = 1 GOSUB runsf_Kissing ENDIF ENDIF ELSE IF iRadius = 1 CLEAR_HELP iRadius = 0 ENDIF ENDIF ENDIF ENDIF ELSE GOSUB runsf_Kissing ENDIF ENDIF RETURN /******************************************** KISSING ********************************************/ //--- Usage: This minute state-machine is called by KissCheck every loop cycle if a kiss has been triggered. // Its main purpose is play the kiss animation. It will reset itself by setting iKissingStatus = 0. runsf_Kissing: SWITCH iKissingStatus CASE 1 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY p2 CLEAR_HELP SET_PLAYER_CONTROL player1 OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 TRUE SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE //--- Switch Roads OFF GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 2.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Rotate player and GF to face each other TASK_TURN_CHAR_TO_FACE_CHAR scplayer p2 TASK_TURN_CHAR_TO_FACE_CHAR p2 scplayer ++iKissingStatus ENDIF BREAK CASE 2 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 GET_SCRIPT_TASK_STATUS scplayer TASK_TURN_CHAR_TO_FACE_CHAR iTemp GET_SCRIPT_TASK_STATUS p2 TASK_TURN_CHAR_TO_FACE_CHAR iTemp2 IF iTemp = FINISHED_TASK AND iTemp2 = FINISHED_TASK //--- Switch collisions OFF SET_CHAR_COLLISION scplayer FALSE SET_CHAR_COLLISION p2 FALSE //--- Update Player and GF co-ords to match anim GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 1.0 0.0 fX[1] fY[1] fZ[1] GET_GROUND_Z_FOR_3D_COORD fX[1] fY[1] fZ[1] fZ[1] //---Store the current girl co-ords GET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] GET_GROUND_Z_FOR_3D_COORD fX[2] fY[2] fZ[2] fZ[2] //--- Now move the girl in the right spot SET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] //--- Camera Cut GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 1.2 -1.0 0.5 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 0.7 0.5 fX[1] fY[1] fZ[1] IF IS_LINE_OF_SIGHT_CLEAR fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] TRUE TRUE FALSE TRUE FALSE SET_FIXED_CAMERA_POSITION fX[0] fY[0] fZ[0] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT fX[1] fY[1] fZ[1] JUMP_CUT ENDIF TASK_STAND_STILL scplayer -1 TASK_STAND_STILL p2 -1 ++iKissingStatus ELSE IF iTemp = FINISHED_TASK GET_SCRIPT_TASK_STATUS scplayer TASK_STAND_STILL iTemp IF NOT iTemp = PERFORMING_TASK AND NOT iTemp = WAITING_TO_START_TASK TASK_STAND_STILL scplayer -1 ENDIF ENDIF IF iTemp2 = FINISHED_TASK GET_SCRIPT_TASK_STATUS p2 TASK_STAND_STILL iTemp2 IF NOT iTemp2 = PERFORMING_TASK AND NOT iTemp2 = WAITING_TO_START_TASK TASK_STAND_STILL p2 -1 GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] ENDIF ENDIF ENDIF ENDIF BREAK CASE 3 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Switch collisions back ON SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE //--- Play anim TASK_PLAY_ANIM scplayer PLAYA_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM p2 GRLFRD_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 ++iKissingStatus ENDIF BREAK CASE 4 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Now conclude the cut-scene fTemp[0] = -1.0 IF IS_CHAR_PLAYING_ANIM scplayer PLAYA_KISS_02 GET_CHAR_ANIM_CURRENT_TIME scplayer PLAYA_KISS_02 fTemp[0] ENDIF IF fTemp[0] > -1.0 // An anim is playing IF fTemp[0] = 1.0 // The animation is finished HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ELSE CLEAR_CHAR_TASKS scplayer TASK_PAUSE p2 0 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ENDIF BREAK ENDSWITCH RETURN } /* {--------------------------------------RUN_2P---------------------------------------------} [RUN_00:RUN_2P] ~s~ [RUN_01:RUN_2P] 2p Run Around [RUN_02:RUN_2P] ~s~Free roam around the city, but don't let the cops catch you! [RUN_03:RUN_2P] ~s~Ped Limit [RUN_04:RUN_2P] ~s~Time Limit [RUN_05:RUN_2P] ~s~Los Angelas [RUN_06:RUN_2P] ~s~Los Vegas [RUN_07:RUN_2P] ~s~Mountains [RUN_08:RUN_2P] ~s~Desert [RUN_09:RUN_2P] ~s~~1~ Mins [RUN_10:RUN_2P] ~s~~1~ Peds [RUN_11:RUN_2P] ~s~Press ~x~ to progress [RUN_12:RUN_2P] Select a Weapon [RUN_13:RUN_2P] Shoot ~1~ Peds in ~1~ minutes */ MISSION_START // ***************************************************************************************** // ********************************* 2-Player Run-Around *********************************** // ***************************************************************************************** // ************************************* Paul Davis **************************************** // ***************************************************************************************** SCRIPT_NAME run_de // Begin... GOSUB mission_start_de_run IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_de_run_failed ENDIF GOSUB mission_de_run_cleanup MISSION_END { // ****************************************Mission Start************************************ mission_start_de_run: HIDE_ALL_FRONTEND_BLIPS TRUE LVAR_INT de_model_select //--- KISSING VARIABLES LVAR_FLOAT fX[3] fY[3] fZ[3] fTemp[3] // 4 arrays of floats for co-ordinates etc. LVAR_INT iTemp iTemp2 // 2 temp vars to store various int values LVAR_INT iKissingStatus iRadius SET_FADING_COLOUR 0 0 0 disable_all_cranes = 1 flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT RUN_2P GOSUB runde_fade_out WAIT 0 // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** REQUEST_MODEL CWFYHB REQUEST_ANIMATION KISSING WHILE NOT HAS_MODEL_LOADED CWFYHB OR NOT HAS_ANIMATION_LOADED KISSING WAIT 0 ENDWHILE TIMERA = 0 CLEAR_AREA -1520.8643 2608.2073 54.8437 10.0 TRUE IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer -1520.8643 2608.2073 54.8437 SET_CHAR_HEADING scplayer 160.0054 CREATE_PLAYER 1 -1518.7568 2608.2786 54.8437 player2 DO_WEAPON_STUFF_AT_START_OF_2P_GAME GET_PLAYER_CHAR player2 p2 SET_PLAYER_MODEL player2 CWFYHB SET_CHAR_HEADING p2 180.1871 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_GROVE PEDTYPE_PLAYER2 SET_PLAYER_PLAYER_TARGETTING FALSE SET_CHAR_NEVER_TARGETTED scplayer TRUE SET_CHAR_NEVER_TARGETTED p2 TRUE SET_TWO_PLAYER_CAMERA_MODE JUMP_CUT LIMIT_TWO_PLAYER_DISTANCE 20.0 DISABLE_CHAR_SPEECH p2 TRUE ENDIF GOSUB runde_set_camera SET_FIXED_CAMERA_POSITION -1524.6987 2605.7795 57.8026 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1523.8983 2606.2429 57.4224 JUMP_CUT GOSUB runde_fade_in PRINT_NOW ( RUN_02 ) 5000 1 // ~s~Free roam around the city. WAIT 5000 CLEAR_PRINTS SWITCH_WIDESCREEN OFF // PRINT_HELP_FOREVER ( RUN_XX ) // Player 2 : Push the ~H~left analog stick~w~ left or right to select a character.~N~~X~ Select~N~ // Not used in mobile WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 WAIT 0 IF TIMERB > 250 GET_POSITION_OF_ANALOGUE_STICKS PAD2 LStickX LStickY RStickX RStickY IF IS_BUTTON_PRESSED PAD2 LEFTSTICKX AND LStickX > 100 de_model_select ++ IF de_model_select > 5 de_model_select = 0 ENDIF GOSUB de_select_model TIMERB = 0 ENDIF IF IS_BUTTON_PRESSED PAD2 LEFTSTICKX AND LStickX < -100 de_model_select -- IF de_model_select < 0 de_model_select = 5 ENDIF GOSUB de_select_model TIMERB = 0 ENDIF IF IS_BUTTON_PRESSED PAD2 DPADRIGHT de_model_select ++ IF de_model_select > 5 de_model_select = 0 ENDIF GOSUB de_select_model TIMERB = 0 ENDIF IF IS_BUTTON_PRESSED PAD2 DPADLEFT de_model_select -- IF de_model_select < 0 de_model_select = 5 ENDIF GOSUB de_select_model TIMERB = 0 ENDIF ENDIF IF IS_BUTTON_PRESSED PAD2 CROSS GOSUB runde_restore_camera CLEAR_HELP GOTO runde_main_loop ENDIF ENDWHILE runde_main_loop: PRINT_HELP ( RUN_06 ) // ~s~You can kiss the other player by standing near them and pressing the ~h~L1 ~w~button. WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 WAIT 0 GOSUB runde_keys IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF NOT IS_CHAR_IN_ANY_CAR scplayer IF NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON scplayer WEAPONTYPE_SPRAYCAN AND NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON p2 WEAPONTYPE_SPRAYCAN GOSUB runde_KissCheck ELSE CLEAR_CHAR_LAST_WEAPON_DAMAGE scplayer CLEAR_CHAR_LAST_WEAPON_DAMAGE p2 ENDIF ENDIF ENDIF ENDWHILE GOTO mission_de_run_failed mission_de_run_failed: IF IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_03 ) 4000 1 // ~r~Player one has been killed ENDIF IF IS_CHAR_DEAD p2 PRINT_NOW ( RUN_04 ) 4000 1 // ~r~Player two has been killed ENDIF IF IS_CHAR_DEAD p2 AND IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_05 ) 4000 1 // ~r~Both players were killed ENDIF PRINT_BIG ( M_FAIL ) 5000 1 RETURN mission_de_run_passed: //flag_twoplay_mission1_passed = 1 CLEAR_WANTED_LEVEL player1 RETURN // mission cleanup mission_de_run_cleanup: disable_all_cranes = 0 HIDE_ALL_FRONTEND_BLIPS FALSE MARK_MODEL_AS_NO_LONGER_NEEDED CWFYHB MARK_MODEL_AS_NO_LONGER_NEEDED CWMOHB1 MARK_MODEL_AS_NO_LONGER_NEEDED CWMYHB1 MARK_MODEL_AS_NO_LONGER_NEEDED CWMYFR MARK_MODEL_AS_NO_LONGER_NEEDED CSHER MARK_MODEL_AS_NO_LONGER_NEEDED CWFYFR1 REMOVE_ANIMATION KISSING flag_player_on_mission = 0 CLEAR_WANTED_LEVEL player1 MISSION_HAS_FINISHED RETURN runde_set_camera: SWITCH_WIDESCREEN ON IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF RETURN runde_restore_camera: SET_CAMERA_IN_FRONT_OF_PLAYER SWITCH_WIDESCREEN OFF IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 ON SET_PLAYER_CONTROL player2 ON ENDIF RESTORE_CAMERA_JUMPCUT RETURN runde_fade_out: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN runde_fade_in: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN de_select_model: SWITCH de_model_select CASE 0 REQUEST_MODEL CWFYHB WHILE NOT HAS_MODEL_LOADED CWFYHB WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 CWFYHB BREAK CASE 1 REQUEST_MODEL CWMOHB1 WHILE NOT HAS_MODEL_LOADED CWMOHB1 WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 CWMOHB1 BREAK CASE 2 REQUEST_MODEL CWMYHB1 WHILE NOT HAS_MODEL_LOADED CWMYHB1 WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 CWMYHB1 BREAK CASE 3 REQUEST_MODEL CWMYFR WHILE NOT HAS_MODEL_LOADED CWMYFR WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 CWMYFR BREAK CASE 4 REQUEST_MODEL CSHER WHILE NOT HAS_MODEL_LOADED CSHER WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 CSHER BREAK CASE 5 REQUEST_MODEL CWFYFR1 WHILE NOT HAS_MODEL_LOADED CWFYFR1 WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 CWFYFR1 BREAK ENDSWITCH RETURN runde_keys: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F IF NOT IS_CHAR_DEAD p2 TASK_DIE p2 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H IF NOT IS_CHAR_DEAD scplayer ADD_ARMOUR_TO_CHAR scplayer 100 INCREASE_PLAYER_MAX_HEALTH player1 100 ENDIF ENDIF RETURN /******************************************** STATE 6: ON FOOT KISSING ********************************************/ /******************************************* KISS CHECK ********************************************/ //--- Usage: Call this sub-routine every loop cycle. // It performs a series of spatial checks and also check for L1 to be depressed. // If help text is needed, it can be prented here (I have provided a lablel, commented) runde_KissCheck: IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF iKissingStatus = 0 IF NOT IS_CHAR_IN_ANY_CAR scplayer AND NOT IS_CHAR_IN_ANY_CAR p2 IF IS_CHAR_STOPPED p2 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS p2 0.0 0.5 0.0 fX[0] fY[0] fZ[0] IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer fX[0] fY[0] fZ[0] 1.2 1.2 1.0 FALSE IF iRadius = 0 PRINT_HELP_FOREVER ( GF_0021 ) // Press ~m~~widget_kiss~ to kiss. iRadius = 1 ENDIF GET_CHAR_COORDINATES scplayer fX[0] fY[0] fZ[0] GET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] fTemp[0] = fZ[1] - 0.02 fTemp[1] = fZ[1] + 0.02 //--- Check if player and girl are on the same level IF fZ[0] > fTemp[0] AND fZ[0] < fTemp[1] // Kiss now IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1 OR IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1 iKissingStatus = 1 GOSUB runde_Kissing ENDIF ENDIF ELSE IF iRadius = 1 CLEAR_HELP iRadius = 0 ENDIF ENDIF ENDIF ENDIF ELSE GOSUB runde_Kissing ENDIF ENDIF RETURN /******************************************** KISSING ********************************************/ //--- Usage: This minute state-machine is called by KissCheck every loop cycle if a kiss has been triggered. // Its main purpose is play the kiss animation. It will reset itself by setting iKissingStatus = 0. runde_Kissing: SWITCH iKissingStatus CASE 1 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY p2 CLEAR_HELP SET_PLAYER_CONTROL player1 OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 TRUE SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE //--- Switch Roads OFF GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 2.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Rotate player and GF to face each other TASK_TURN_CHAR_TO_FACE_CHAR scplayer p2 TASK_TURN_CHAR_TO_FACE_CHAR p2 scplayer ++iKissingStatus ENDIF BREAK CASE 2 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 GET_SCRIPT_TASK_STATUS scplayer TASK_TURN_CHAR_TO_FACE_CHAR iTemp GET_SCRIPT_TASK_STATUS p2 TASK_TURN_CHAR_TO_FACE_CHAR iTemp2 IF iTemp = FINISHED_TASK AND iTemp2 = FINISHED_TASK //--- Switch collisions OFF SET_CHAR_COLLISION scplayer FALSE SET_CHAR_COLLISION p2 FALSE //--- Update Player and GF co-ords to match anim GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 1.0 0.0 fX[1] fY[1] fZ[1] GET_GROUND_Z_FOR_3D_COORD fX[1] fY[1] fZ[1] fZ[1] //---Store the current girl co-ords GET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] GET_GROUND_Z_FOR_3D_COORD fX[2] fY[2] fZ[2] fZ[2] //--- Now move the girl in the right spot SET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] //--- Camera Cut GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 1.2 -1.0 0.5 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 0.7 0.5 fX[1] fY[1] fZ[1] IF IS_LINE_OF_SIGHT_CLEAR fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] TRUE TRUE FALSE TRUE FALSE SET_FIXED_CAMERA_POSITION fX[0] fY[0] fZ[0] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT fX[1] fY[1] fZ[1] JUMP_CUT ENDIF TASK_STAND_STILL scplayer -1 TASK_STAND_STILL p2 -1 ++iKissingStatus ELSE IF iTemp = FINISHED_TASK GET_SCRIPT_TASK_STATUS scplayer TASK_STAND_STILL iTemp IF NOT iTemp = PERFORMING_TASK AND NOT iTemp = WAITING_TO_START_TASK TASK_STAND_STILL scplayer -1 ENDIF ENDIF IF iTemp2 = FINISHED_TASK GET_SCRIPT_TASK_STATUS p2 TASK_STAND_STILL iTemp2 IF NOT iTemp2 = PERFORMING_TASK AND NOT iTemp2 = WAITING_TO_START_TASK TASK_STAND_STILL p2 -1 GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] ENDIF ENDIF ENDIF ENDIF BREAK CASE 3 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Switch collisions back ON SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE //--- Play anim TASK_PLAY_ANIM scplayer PLAYA_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM p2 GRLFRD_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 ++iKissingStatus ENDIF BREAK CASE 4 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Now conclude the cut-scene fTemp[0] = -1.0 IF IS_CHAR_PLAYING_ANIM scplayer PLAYA_KISS_02 GET_CHAR_ANIM_CURRENT_TIME scplayer PLAYA_KISS_02 fTemp[0] ENDIF IF fTemp[0] > -1.0 // An anim is playing IF fTemp[0] = 1.0 // The animation is finished HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ELSE CLEAR_CHAR_TASKS scplayer TASK_PAUSE p2 0 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ENDIF BREAK ENDSWITCH RETURN } /* {--------------------------------------RUN_2P---------------------------------------------} [RUN_00:RUN_2P] ~s~ [RUN_01:RUN_2P] 2p Run Around [RUN_02:RUN_2P] ~s~Free roam around the city, but don't let the cops catch you! [RUN_03:RUN_2P] ~s~Ped Limit [RUN_04:RUN_2P] ~s~Time Limit [RUN_05:RUN_2P] ~s~Los Angelas [RUN_06:RUN_2P] ~s~Los Vegas [RUN_07:RUN_2P] ~s~Mountains [RUN_08:RUN_2P] ~s~Desert [RUN_09:RUN_2P] ~s~~1~ Mins [RUN_10:RUN_2P] ~s~~1~ Peds [RUN_11:RUN_2P] ~s~Press ~x~ to progress [RUN_12:RUN_2P] Select a Weapon [RUN_13:RUN_2P] Shoot ~1~ Peds in ~1~ minutes */ MISSION_START // ***************************************************************************************** // ********************************* 2-Player Run-Around *********************************** // ***************************************************************************************** // ************************************* Paul Davis **************************************** // ***************************************************************************************** SCRIPT_NAME run_co // Begin... GOSUB mission_start_co_run IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_co_run_failed ENDIF GOSUB mission_co_run_cleanup MISSION_END { // ****************************************Mission Start************************************ mission_start_co_run: HIDE_ALL_FRONTEND_BLIPS TRUE LVAR_INT co_model_select //--- KISSING VARIABLES LVAR_FLOAT fX[3] fY[3] fZ[3] fTemp[3] // 4 arrays of floats for co-ordinates etc. LVAR_INT iTemp iTemp2 // 2 temp vars to store various int values LVAR_INT iKissingStatus iRadius SET_FADING_COLOUR 0 0 0 disable_all_cranes = 1 flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT RUN_2P GOSUB runco_fade_out WAIT 0 // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** TIMERA = 0 REQUEST_MODEL CWFYHB REQUEST_ANIMATION KISSING WHILE NOT HAS_MODEL_LOADED CWFYHB OR NOT HAS_ANIMATION_LOADED KISSING WAIT 0 ENDWHILE CLEAR_AREA 711.0688 -569.3774 15.3359 10.0 TRUE IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer 712.1416 -571.6200 15.3359 SET_CHAR_HEADING scplayer 244.9583 CREATE_PLAYER 1 712.3738 -568.9551 15.3359 player2 DO_WEAPON_STUFF_AT_START_OF_2P_GAME GET_PLAYER_CHAR player2 p2 SET_PLAYER_MODEL player2 CWFYHB SET_ANIM_GROUP_FOR_CHAR p2 pro SET_CHAR_HEADING p2 260.5090 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_GROVE PEDTYPE_PLAYER2 SET_PLAYER_PLAYER_TARGETTING FALSE SET_CHAR_NEVER_TARGETTED scplayer TRUE SET_CHAR_NEVER_TARGETTED p2 TRUE SET_TWO_PLAYER_CAMERA_MODE JUMP_CUT LIMIT_TWO_PLAYER_DISTANCE 20.0 DISABLE_CHAR_SPEECH p2 TRUE ENDIF GOSUB runco_set_camera SET_FIXED_CAMERA_POSITION 713.8377 -575.1109 16.9330 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 713.3706 -574.2305 16.8514 JUMP_CUT GOSUB runco_fade_in PRINT_NOW ( RUN_02 ) 5000 1 // ~s~Free roam around the city, but don't let the cops catch you! WAIT 5000 CLEAR_PRINTS SWITCH_WIDESCREEN OFF // PRINT_HELP_FOREVER ( RUN_XX ) // Player 2 : Push the ~H~left analog stick~w~ left or right to select a character.~N~~X~ Select~N~ // Not used in mobile WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 WAIT 0 IF TIMERB > 250 GET_POSITION_OF_ANALOGUE_STICKS PAD2 LStickX LStickY RStickX RStickY IF IS_BUTTON_PRESSED PAD2 LEFTSTICKX AND LStickX > 100 co_model_select ++ IF co_model_select > 5 co_model_select = 0 ENDIF GOSUB co_select_model TIMERB = 0 ENDIF IF IS_BUTTON_PRESSED PAD2 LEFTSTICKX AND LStickX < -100 co_model_select -- IF co_model_select < 0 co_model_select = 5 ENDIF GOSUB co_select_model TIMERB = 0 ENDIF IF IS_BUTTON_PRESSED PAD2 DPADRIGHT co_model_select ++ IF co_model_select > 5 co_model_select = 0 ENDIF GOSUB co_select_model TIMERB = 0 ENDIF IF IS_BUTTON_PRESSED PAD2 DPADLEFT co_model_select -- IF co_model_select < 0 co_model_select = 5 ENDIF GOSUB co_select_model TIMERB = 0 ENDIF ENDIF IF IS_BUTTON_PRESSED PAD2 CROSS GOSUB runco_restore_camera CLEAR_HELP GOTO runco_main_loop ENDIF ENDWHILE runco_main_loop: PRINT_HELP ( RUN_06 ) // ~s~You can kiss the other player by standing near them and pressing the ~h~L1 ~w~button. WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 WAIT 0 GOSUB runco_keys IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF NOT IS_CHAR_IN_ANY_CAR scplayer IF NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON scplayer WEAPONTYPE_SPRAYCAN AND NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON p2 WEAPONTYPE_SPRAYCAN GOSUB runco_KissCheck ELSE CLEAR_CHAR_LAST_WEAPON_DAMAGE scplayer CLEAR_CHAR_LAST_WEAPON_DAMAGE p2 ENDIF ENDIF ENDIF ENDWHILE GOTO mission_co_run_failed mission_co_run_failed: IF IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_03 ) 4000 1 // ~r~Player one has been killed ENDIF IF IS_CHAR_DEAD p2 PRINT_NOW ( RUN_04 ) 4000 1 // ~r~Player two has been killed ENDIF IF IS_CHAR_DEAD p2 AND IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_05 ) 4000 1 // ~r~Both players were killed ENDIF PRINT_BIG ( M_FAIL ) 5000 1 RETURN mission_co_run_passed: //flag_twoplay_mission1_passed = 1 PRINT_WITH_NUMBER_BIG ( M_PASS ) 10000 5000 1 CLEAR_WANTED_LEVEL player1 RETURN // mission cleanup mission_co_run_cleanup: HIDE_ALL_FRONTEND_BLIPS FALSE disable_all_cranes = 0 flag_player_on_mission = 0 CLEAR_WANTED_LEVEL player1 MARK_MODEL_AS_NO_LONGER_NEEDED CWFYHB MARK_MODEL_AS_NO_LONGER_NEEDED CWMOHB1 MARK_MODEL_AS_NO_LONGER_NEEDED CWMYHB1 MARK_MODEL_AS_NO_LONGER_NEEDED CWMYFR MARK_MODEL_AS_NO_LONGER_NEEDED CSHER MARK_MODEL_AS_NO_LONGER_NEEDED CWFYFR1 REMOVE_ANIMATION KISSING MISSION_HAS_FINISHED RETURN runco_set_camera: SWITCH_WIDESCREEN ON IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF RETURN runco_restore_camera: // SET_CAMERA_IN_FRONT_OF_PLAYER SWITCH_WIDESCREEN OFF IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 ON SET_PLAYER_CONTROL player2 ON ENDIF RESTORE_CAMERA_JUMPCUT RETURN runco_fade_out: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN runco_fade_in: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN co_select_model: SWITCH co_model_select CASE 0 REQUEST_MODEL CWFYHB WHILE NOT HAS_MODEL_LOADED CWFYHB WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 CWFYHB BREAK CASE 1 REQUEST_MODEL CWMOHB1 WHILE NOT HAS_MODEL_LOADED CWMOHB1 WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 CWMOHB1 BREAK CASE 2 REQUEST_MODEL CWMYHB1 WHILE NOT HAS_MODEL_LOADED CWMYHB1 WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 CWMYHB1 BREAK CASE 3 REQUEST_MODEL CWMYFR WHILE NOT HAS_MODEL_LOADED CWMYFR WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 CWMYFR BREAK CASE 4 REQUEST_MODEL CSHER WHILE NOT HAS_MODEL_LOADED CSHER WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 CSHER BREAK CASE 5 REQUEST_MODEL CWFYFR1 WHILE NOT HAS_MODEL_LOADED CWFYFR1 WAIT 0 ENDWHILE SET_PLAYER_MODEL player2 CWFYFR1 BREAK ENDSWITCH RETURN runco_keys: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F IF NOT IS_CHAR_DEAD p2 TASK_DIE p2 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H IF NOT IS_CHAR_DEAD scplayer ADD_ARMOUR_TO_CHAR scplayer 100 INCREASE_PLAYER_MAX_HEALTH player1 100 ENDIF ENDIF RETURN /******************************************** STATE 6: ON FOOT KISSING ********************************************/ /******************************************* KISS CHECK ********************************************/ //--- Usage: Call this sub-routine every loop cycle. // It performs a series of spatial checks and also check for L1 to be depressed. // If help text is needed, it can be prented here (I have provided a lablel, commented) runco_KissCheck: IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF iKissingStatus = 0 IF NOT IS_CHAR_IN_ANY_CAR scplayer AND NOT IS_CHAR_IN_ANY_CAR p2 IF IS_CHAR_STOPPED p2 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS p2 0.0 0.5 0.0 fX[0] fY[0] fZ[0] IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer fX[0] fY[0] fZ[0] 1.2 1.2 1.0 FALSE IF iRadius = 0 PRINT_HELP_FOREVER ( GF_0021 ) // Press ~m~~widget_kiss~ to kiss. iRadius = 1 ENDIF GET_CHAR_COORDINATES scplayer fX[0] fY[0] fZ[0] GET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] fTemp[0] = fZ[1] - 0.02 fTemp[1] = fZ[1] + 0.02 //--- Check if player and girl are on the same level IF fZ[0] > fTemp[0] AND fZ[0] < fTemp[1] // Kiss now IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1 OR IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1 iKissingStatus = 1 GOSUB runco_Kissing ENDIF ENDIF ELSE IF iRadius = 1 CLEAR_HELP iRadius = 0 ENDIF ENDIF ENDIF ENDIF ELSE GOSUB runco_Kissing ENDIF ENDIF RETURN /******************************************** KISSING ********************************************/ //--- Usage: This minute state-machine is called by KissCheck every loop cycle if a kiss has been triggered. // Its main purpose is play the kiss animation. It will reset itself by setting iKissingStatus = 0. runco_Kissing: SWITCH iKissingStatus CASE 1 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY p2 CLEAR_HELP SET_PLAYER_CONTROL player1 OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 TRUE SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE //--- Switch Roads OFF GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 2.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Rotate player and GF to face each other TASK_TURN_CHAR_TO_FACE_CHAR scplayer p2 TASK_TURN_CHAR_TO_FACE_CHAR p2 scplayer ++iKissingStatus ENDIF BREAK CASE 2 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 GET_SCRIPT_TASK_STATUS scplayer TASK_TURN_CHAR_TO_FACE_CHAR iTemp GET_SCRIPT_TASK_STATUS p2 TASK_TURN_CHAR_TO_FACE_CHAR iTemp2 IF iTemp = FINISHED_TASK AND iTemp2 = FINISHED_TASK //--- Switch collisions OFF SET_CHAR_COLLISION scplayer FALSE SET_CHAR_COLLISION p2 FALSE //--- Update Player and GF co-ords to match anim GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 1.0 0.0 fX[1] fY[1] fZ[1] GET_GROUND_Z_FOR_3D_COORD fX[1] fY[1] fZ[1] fZ[1] //---Store the current girl co-ords GET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] GET_GROUND_Z_FOR_3D_COORD fX[2] fY[2] fZ[2] fZ[2] //--- Now move the girl in the right spot SET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] //--- Camera Cut GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 1.2 -1.0 0.5 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 0.7 0.5 fX[1] fY[1] fZ[1] IF IS_LINE_OF_SIGHT_CLEAR fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] TRUE TRUE FALSE TRUE FALSE SET_FIXED_CAMERA_POSITION fX[0] fY[0] fZ[0] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT fX[1] fY[1] fZ[1] JUMP_CUT ENDIF TASK_STAND_STILL scplayer -1 TASK_STAND_STILL p2 -1 ++iKissingStatus ELSE IF iTemp = FINISHED_TASK GET_SCRIPT_TASK_STATUS scplayer TASK_STAND_STILL iTemp IF NOT iTemp = PERFORMING_TASK AND NOT iTemp = WAITING_TO_START_TASK TASK_STAND_STILL scplayer -1 ENDIF ENDIF IF iTemp2 = FINISHED_TASK GET_SCRIPT_TASK_STATUS p2 TASK_STAND_STILL iTemp2 IF NOT iTemp2 = PERFORMING_TASK AND NOT iTemp2 = WAITING_TO_START_TASK TASK_STAND_STILL p2 -1 GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] ENDIF ENDIF ENDIF ENDIF BREAK CASE 3 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Switch collisions back ON SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE //--- Play anim TASK_PLAY_ANIM scplayer PLAYA_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM p2 GRLFRD_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 ++iKissingStatus ENDIF BREAK CASE 4 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Now conclude the cut-scene fTemp[0] = -1.0 IF IS_CHAR_PLAYING_ANIM scplayer PLAYA_KISS_02 GET_CHAR_ANIM_CURRENT_TIME scplayer PLAYA_KISS_02 fTemp[0] ENDIF IF fTemp[0] > -1.0 // An anim is playing IF fTemp[0] = 1.0 // The animation is finished HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ELSE CLEAR_CHAR_TASKS scplayer TASK_PAUSE p2 0 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ENDIF BREAK ENDSWITCH RETURN } /* {--------------------------------------RUN_2P---------------------------------------------} [RUN_00:RUN_2P] ~s~ [RUN_01:RUN_2P] 2p Run Around [RUN_02:RUN_2P] ~s~Free roam around the city, but don't let the cops catch you! [RUN_03:RUN_2P] ~s~Ped Limit [RUN_04:RUN_2P] ~s~Time Limit [RUN_05:RUN_2P] ~s~Los Angelas [RUN_06:RUN_2P] ~s~Los Vegas [RUN_07:RUN_2P] ~s~Mountains [RUN_08:RUN_2P] ~s~Desert [RUN_09:RUN_2P] ~s~~1~ Mins [RUN_10:RUN_2P] ~s~~1~ Peds [RUN_11:RUN_2P] ~s~Press ~x~ to progress [RUN_12:RUN_2P] Select a Weapon [RUN_13:RUN_2P] Shoot ~1~ Peds in ~1~ minutes */ MISSION_START // ***************************************************************************************** // ************************** 2-Player Run-Around Coochie ********************************** // ***************************************************************************************** // ************************************* Paul Davis **************************************** // ***************************************************************************************** SCRIPT_NAME r_mily // Begin... GOSUB mission_start_rmily IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_rmily_failed ENDIF GOSUB mission_rmily_cleanup MISSION_END { // ****************************************Mission Start************************************ mission_start_rmily: HIDE_ALL_FRONTEND_BLIPS TRUE //--- KISSING VARIABLES LVAR_FLOAT fX[3] fY[3] fZ[3] fTemp[3] // 4 arrays of floats for co-ordinates etc. LVAR_INT iTemp iTemp2 // 2 temp vars to store various int values LVAR_INT iKissingStatus iRadius SET_FADING_COLOUR 0 0 0 disable_all_cranes = 1 flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT RUN_2P GOSUB rmily_fade_out WAIT 0 // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** // Michelle Locate 2028.3234 2730.7544 9.8281 REQUEST_MODEL CROGRL3 REQUEST_ANIMATION KISSING WHILE NOT HAS_MODEL_LOADED CROGRL3 OR NOT HAS_ANIMATION_LOADED KISSING WAIT 0 ENDWHILE TIMERA = 0 CLEAR_AREA 2029.3058 2732.5884 9.8203 10.0 TRUE IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer 2029.3058 2732.5884 9.8203 SET_CHAR_HEADING scplayer 0.7089 CREATE_PLAYER 1 2027.1311 2732.6028 9.8203 player2 DO_WEAPON_STUFF_AT_START_OF_2P_GAME GET_PLAYER_CHAR player2 p2 SET_CHAR_HEADING p2 0.7089 SET_PLAYER_MODEL player2 CROGRL3 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_GROVE PEDTYPE_PLAYER2 SET_PLAYER_PLAYER_TARGETTING FALSE SET_CHAR_NEVER_TARGETTED scplayer TRUE SET_CHAR_NEVER_TARGETTED p2 TRUE SET_TWO_PLAYER_CAMERA_MODE JUMP_CUT LIMIT_TWO_PLAYER_DISTANCE 20.0 DISABLE_CHAR_SPEECH p2 TRUE ENDIF GOSUB rmily_set_camera SET_FIXED_CAMERA_POSITION 2028.4103 2737.5984 13.2972 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2028.4219 2736.6545 12.9670 JUMP_CUT GOSUB rmily_fade_in PRINT_NOW ( RUN_02 ) 5000 1 // Free roam around the city. WAIT 5000 CLEAR_PRINTS GOSUB rmily_restore_camera PRINT_HELP ( RUN_06 ) // ~s~You can kiss the other player by standing near them and pressing the ~h~L1 ~w~button. WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 WAIT 0 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF NOT IS_CHAR_IN_ANY_CAR scplayer IF NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON scplayer WEAPONTYPE_SPRAYCAN AND NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON p2 WEAPONTYPE_SPRAYCAN GOSUB rmily_KissCheck ELSE CLEAR_CHAR_LAST_WEAPON_DAMAGE scplayer CLEAR_CHAR_LAST_WEAPON_DAMAGE p2 ENDIF ENDIF ENDIF GOSUB rmily_keys ENDWHILE GOTO mission_rmily_failed mission_rmily_failed: IF IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_03 ) 4000 1 // ~r~Player one has been killed ENDIF IF IS_CHAR_DEAD p2 PRINT_NOW ( RUN_04 ) 4000 1 // ~r~Player two has been killed ENDIF IF IS_CHAR_DEAD p2 AND IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_05 ) 4000 1 // ~r~Both players were killed ENDIF PRINT_BIG ( M_FAIL ) 5000 1 RETURN mission_rmily_passed: //flag_twoplay_mission1_passed = 1 CLEAR_WANTED_LEVEL player1 RETURN // mission cleanup mission_rmily_cleanup: disable_all_cranes = 0 HIDE_ALL_FRONTEND_BLIPS TRUE MARK_MODEL_AS_NO_LONGER_NEEDED CROGRL3 REMOVE_ANIMATION KISSING flag_player_on_mission = 0 CLEAR_WANTED_LEVEL player1 MISSION_HAS_FINISHED RETURN rmily_set_camera: SWITCH_WIDESCREEN ON IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF RETURN rmily_restore_camera: SET_CAMERA_IN_FRONT_OF_PLAYER SWITCH_WIDESCREEN OFF IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 ON SET_PLAYER_CONTROL player2 ON ENDIF RESTORE_CAMERA_JUMPCUT RETURN rmily_fade_out: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN rmily_fade_in: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN rmily_keys: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F IF NOT IS_CHAR_DEAD p2 TASK_DIE p2 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H IF NOT IS_CHAR_DEAD scplayer ADD_ARMOUR_TO_CHAR scplayer 100 INCREASE_PLAYER_MAX_HEALTH player1 100 ENDIF ENDIF RETURN /******************************************** STATE 6: ON FOOT KISSING ********************************************/ /******************************************* KISS CHECK ********************************************/ //--- Usage: Call this sub-routine every loop cycle. // It performs a series of spatial checks and also check for L1 to be depressed. // If help text is needed, it can be prented here (I have provided a lablel, commented) rmily_KissCheck: IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF iKissingStatus = 0 IF NOT IS_CHAR_IN_ANY_CAR scplayer AND NOT IS_CHAR_IN_ANY_CAR p2 IF IS_CHAR_STOPPED p2 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS p2 0.0 0.5 0.0 fX[0] fY[0] fZ[0] IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer fX[0] fY[0] fZ[0] 1.2 1.2 1.0 FALSE IF iRadius = 0 PRINT_HELP_FOREVER ( GF_0021 ) // Press ~m~~widget_kiss~ to kiss. iRadius = 1 ENDIF GET_CHAR_COORDINATES scplayer fX[0] fY[0] fZ[0] GET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] fTemp[0] = fZ[1] - 0.02 fTemp[1] = fZ[1] + 0.02 //--- Check if player and girl are on the same level IF fZ[0] > fTemp[0] AND fZ[0] < fTemp[1] // Kiss now IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1 OR IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1 iKissingStatus = 1 GOSUB rmily_Kissing ENDIF ENDIF ELSE IF iRadius = 1 CLEAR_HELP iRadius = 0 ENDIF ENDIF ENDIF ENDIF ELSE GOSUB rmily_Kissing ENDIF ENDIF RETURN /******************************************** KISSING ********************************************/ //--- Usage: This minute state-machine is called by KissCheck every loop cycle if a kiss has been triggered. // Its main purpose is play the kiss animation. It will reset itself by setting iKissingStatus = 0. rmily_Kissing: SWITCH iKissingStatus CASE 1 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY p2 CLEAR_HELP SET_PLAYER_CONTROL player1 OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 TRUE SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE //--- Switch Roads OFF GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 2.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Rotate player and GF to face each other TASK_TURN_CHAR_TO_FACE_CHAR scplayer p2 TASK_TURN_CHAR_TO_FACE_CHAR p2 scplayer ++iKissingStatus ENDIF BREAK CASE 2 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 GET_SCRIPT_TASK_STATUS scplayer TASK_TURN_CHAR_TO_FACE_CHAR iTemp GET_SCRIPT_TASK_STATUS p2 TASK_TURN_CHAR_TO_FACE_CHAR iTemp2 IF iTemp = FINISHED_TASK AND iTemp2 = FINISHED_TASK //--- Switch collisions OFF SET_CHAR_COLLISION scplayer FALSE SET_CHAR_COLLISION p2 FALSE //--- Update Player and GF co-ords to match anim GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 1.0 0.0 fX[1] fY[1] fZ[1] GET_GROUND_Z_FOR_3D_COORD fX[1] fY[1] fZ[1] fZ[1] //---Store the current girl co-ords GET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] GET_GROUND_Z_FOR_3D_COORD fX[2] fY[2] fZ[2] fZ[2] //--- Now move the girl in the right spot SET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] //--- Camera Cut GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 1.2 -1.0 0.5 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 0.7 0.5 fX[1] fY[1] fZ[1] IF IS_LINE_OF_SIGHT_CLEAR fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] TRUE TRUE FALSE TRUE FALSE SET_FIXED_CAMERA_POSITION fX[0] fY[0] fZ[0] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT fX[1] fY[1] fZ[1] JUMP_CUT ENDIF TASK_STAND_STILL scplayer -1 TASK_STAND_STILL p2 -1 ++iKissingStatus ELSE IF iTemp = FINISHED_TASK GET_SCRIPT_TASK_STATUS scplayer TASK_STAND_STILL iTemp IF NOT iTemp = PERFORMING_TASK AND NOT iTemp = WAITING_TO_START_TASK TASK_STAND_STILL scplayer -1 ENDIF ENDIF IF iTemp2 = FINISHED_TASK GET_SCRIPT_TASK_STATUS p2 TASK_STAND_STILL iTemp2 IF NOT iTemp2 = PERFORMING_TASK AND NOT iTemp2 = WAITING_TO_START_TASK TASK_STAND_STILL p2 -1 GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] ENDIF ENDIF ENDIF ENDIF BREAK CASE 3 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Switch collisions back ON SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE //--- Play anim TASK_PLAY_ANIM scplayer PLAYA_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM p2 GRLFRD_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 ++iKissingStatus ENDIF BREAK CASE 4 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Now conclude the cut-scene fTemp[0] = -1.0 IF IS_CHAR_PLAYING_ANIM scplayer PLAYA_KISS_02 GET_CHAR_ANIM_CURRENT_TIME scplayer PLAYA_KISS_02 fTemp[0] ENDIF IF fTemp[0] > -1.0 // An anim is playing IF fTemp[0] = 1.0 // The animation is finished HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ELSE CLEAR_CHAR_TASKS scplayer TASK_PAUSE p2 0 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ENDIF BREAK ENDSWITCH RETURN } /* {--------------------------------------RUN_2P---------------------------------------------} [RUN_00:RUN_2P] ~s~ [RUN_01:RUN_2P] 2p Run Around [RUN_02:RUN_2P] ~s~Free roam around the city, but don't let the cops catch you! [RUN_03:RUN_2P] ~s~Ped Limit [RUN_04:RUN_2P] ~s~Time Limit [RUN_05:RUN_2P] ~s~Los Angelas [RUN_06:RUN_2P] ~s~Los Vegas [RUN_07:RUN_2P] ~s~Mountains [RUN_08:RUN_2P] ~s~Desert [RUN_09:RUN_2P] ~s~~1~ Mins [RUN_10:RUN_2P] ~s~~1~ Peds [RUN_11:RUN_2P] ~s~Press ~x~ to progress [RUN_12:RUN_2P] Select a Weapon [RUN_13:RUN_2P] Shoot ~1~ Peds in ~1~ minutes */ MISSION_START // ***************************************************************************************** // ************************** 2-Player Run-Around Coochie ********************************** // ***************************************************************************************** // ************************************* Paul Davis **************************************** // ***************************************************************************************** SCRIPT_NAME r_suzi // Begin... GOSUB mission_start_rsuzi IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_rsuzi_failed ENDIF GOSUB mission_rsuzi_cleanup MISSION_END { // ****************************************Mission Start************************************ mission_start_rsuzi: HIDE_ALL_FRONTEND_BLIPS TRUE //--- KISSING VARIABLES LVAR_FLOAT fX[3] fY[3] fZ[3] fTemp[3] // 4 arrays of floats for co-ordinates etc. LVAR_INT iTemp iTemp2 // 2 temp vars to store various int values LVAR_INT iKissingStatus iRadius SET_FADING_COLOUR 0 0 0 disable_all_cranes = 1 flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT RUN_2P GOSUB rsuzi_fade_out WAIT 0 // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** // Michelle Locate -2570.6707 1150.7919 54.7333 REQUEST_MODEL NURGRL3 REQUEST_ANIMATION KISSING WHILE NOT HAS_MODEL_LOADED NURGRL3 OR NOT HAS_ANIMATION_LOADED KISSING WAIT 0 ENDWHILE TIMERA = 0 CLEAR_AREA -2574.3032 1151.5638 54.7333 10.0 TRUE IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer -2571.8267 1150.5892 54.7333 SET_CHAR_HEADING scplayer 156.4741 CREATE_PLAYER 1 -2570.0669 1150.0972 54.7333 player2 DO_WEAPON_STUFF_AT_START_OF_2P_GAME GET_PLAYER_CHAR player2 p2 SET_CHAR_HEADING p2 163.1839 SET_PLAYER_MODEL player2 NURGRL3 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_GROVE PEDTYPE_PLAYER2 SET_PLAYER_PLAYER_TARGETTING FALSE SET_CHAR_NEVER_TARGETTED scplayer TRUE SET_CHAR_NEVER_TARGETTED p2 TRUE SET_TWO_PLAYER_CAMERA_MODE JUMP_CUT LIMIT_TWO_PLAYER_DISTANCE 20.0 DISABLE_CHAR_SPEECH p2 TRUE ENDIF GOSUB rsuzi_set_camera SET_FIXED_CAMERA_POSITION -2572.0298 1146.8159 57.1697 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -2571.7534 1147.7306 56.8750 JUMP_CUT GOSUB rsuzi_fade_in PRINT_NOW ( RUN_02 ) 5000 1 // Free roam around the city. WAIT 5000 CLEAR_PRINTS GOSUB rsuzi_restore_camera PRINT_HELP ( RUN_06 ) // ~s~You can kiss the other player by standing near them and pressing the ~h~L1 ~w~button. WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 WAIT 0 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF NOT IS_CHAR_IN_ANY_CAR scplayer IF NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON scplayer WEAPONTYPE_SPRAYCAN AND NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON p2 WEAPONTYPE_SPRAYCAN GOSUB rsuzi_KissCheck ELSE CLEAR_CHAR_LAST_WEAPON_DAMAGE scplayer CLEAR_CHAR_LAST_WEAPON_DAMAGE p2 ENDIF ENDIF ENDIF GOSUB rsuzi_keys ENDWHILE GOTO mission_rsuzi_failed mission_rsuzi_failed: IF IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_03 ) 4000 1 // ~r~Player one has been killed ENDIF IF IS_CHAR_DEAD p2 PRINT_NOW ( RUN_04 ) 4000 1 // ~r~Player two has been killed ENDIF IF IS_CHAR_DEAD p2 AND IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_05 ) 4000 1 // ~r~Both players were killed ENDIF PRINT_BIG ( M_FAIL ) 5000 1 RETURN mission_rsuzi_passed: //flag_twoplay_mission1_passed = 1 CLEAR_WANTED_LEVEL player1 RETURN // mission cleanup mission_rsuzi_cleanup: disable_all_cranes = 0 HIDE_ALL_FRONTEND_BLIPS TRUE MARK_MODEL_AS_NO_LONGER_NEEDED NURGRL3 REMOVE_ANIMATION KISSING flag_player_on_mission = 0 CLEAR_WANTED_LEVEL player1 MISSION_HAS_FINISHED RETURN rsuzi_set_camera: SWITCH_WIDESCREEN ON IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF RETURN rsuzi_restore_camera: SET_CAMERA_IN_FRONT_OF_PLAYER SWITCH_WIDESCREEN OFF IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 ON SET_PLAYER_CONTROL player2 ON ENDIF RESTORE_CAMERA_JUMPCUT RETURN rsuzi_fade_out: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN rsuzi_fade_in: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN rsuzi_keys: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F IF NOT IS_CHAR_DEAD p2 TASK_DIE p2 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H IF NOT IS_CHAR_DEAD scplayer ADD_ARMOUR_TO_CHAR scplayer 100 INCREASE_PLAYER_MAX_HEALTH player1 100 ENDIF ENDIF RETURN /******************************************** STATE 6: ON FOOT KISSING ********************************************/ /******************************************* KISS CHECK ********************************************/ //--- Usage: Call this sub-routine every loop cycle. // It performs a series of spatial checks and also check for L1 to be depressed. // If help text is needed, it can be prented here (I have provided a lablel, commented) rsuzi_KissCheck: IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF iKissingStatus = 0 IF NOT IS_CHAR_IN_ANY_CAR scplayer AND NOT IS_CHAR_IN_ANY_CAR p2 IF IS_CHAR_STOPPED p2 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS p2 0.0 0.5 0.0 fX[0] fY[0] fZ[0] IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer fX[0] fY[0] fZ[0] 1.2 1.2 1.0 FALSE IF iRadius = 0 PRINT_HELP_FOREVER ( GF_0021 ) // Press ~m~~widget_kiss~ to kiss. iRadius = 1 ENDIF GET_CHAR_COORDINATES scplayer fX[0] fY[0] fZ[0] GET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] fTemp[0] = fZ[1] - 0.02 fTemp[1] = fZ[1] + 0.02 //--- Check if player and girl are on the same level IF fZ[0] > fTemp[0] AND fZ[0] < fTemp[1] // Kiss now IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1 OR IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1 iKissingStatus = 1 GOSUB rsuzi_Kissing ENDIF ENDIF ELSE IF iRadius = 1 CLEAR_HELP iRadius = 0 ENDIF ENDIF ENDIF ENDIF ELSE GOSUB rsuzi_Kissing ENDIF ENDIF RETURN /******************************************** KISSING ********************************************/ //--- Usage: This minute state-machine is called by KissCheck every loop cycle if a kiss has been triggered. // Its main purpose is play the kiss animation. It will reset itself by setting iKissingStatus = 0. rsuzi_Kissing: SWITCH iKissingStatus CASE 1 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY p2 CLEAR_HELP SET_PLAYER_CONTROL player1 OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 TRUE SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE //--- Switch Roads OFF GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 2.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Rotate player and GF to face each other TASK_TURN_CHAR_TO_FACE_CHAR scplayer p2 TASK_TURN_CHAR_TO_FACE_CHAR p2 scplayer ++iKissingStatus ENDIF BREAK CASE 2 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 GET_SCRIPT_TASK_STATUS scplayer TASK_TURN_CHAR_TO_FACE_CHAR iTemp GET_SCRIPT_TASK_STATUS p2 TASK_TURN_CHAR_TO_FACE_CHAR iTemp2 IF iTemp = FINISHED_TASK AND iTemp2 = FINISHED_TASK //--- Switch collisions OFF SET_CHAR_COLLISION scplayer FALSE SET_CHAR_COLLISION p2 FALSE //--- Update Player and GF co-ords to match anim GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 1.0 0.0 fX[1] fY[1] fZ[1] GET_GROUND_Z_FOR_3D_COORD fX[1] fY[1] fZ[1] fZ[1] //---Store the current girl co-ords GET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] GET_GROUND_Z_FOR_3D_COORD fX[2] fY[2] fZ[2] fZ[2] //--- Now move the girl in the right spot SET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] //--- Camera Cut GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 1.2 -1.0 0.5 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 0.7 0.5 fX[1] fY[1] fZ[1] IF IS_LINE_OF_SIGHT_CLEAR fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] TRUE TRUE FALSE TRUE FALSE SET_FIXED_CAMERA_POSITION fX[0] fY[0] fZ[0] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT fX[1] fY[1] fZ[1] JUMP_CUT ENDIF TASK_STAND_STILL scplayer -1 TASK_STAND_STILL p2 -1 ++iKissingStatus ELSE IF iTemp = FINISHED_TASK GET_SCRIPT_TASK_STATUS scplayer TASK_STAND_STILL iTemp IF NOT iTemp = PERFORMING_TASK AND NOT iTemp = WAITING_TO_START_TASK TASK_STAND_STILL scplayer -1 ENDIF ENDIF IF iTemp2 = FINISHED_TASK GET_SCRIPT_TASK_STATUS p2 TASK_STAND_STILL iTemp2 IF NOT iTemp2 = PERFORMING_TASK AND NOT iTemp2 = WAITING_TO_START_TASK TASK_STAND_STILL p2 -1 GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] ENDIF ENDIF ENDIF ENDIF BREAK CASE 3 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Switch collisions back ON SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE //--- Play anim TASK_PLAY_ANIM scplayer PLAYA_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM p2 GRLFRD_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 ++iKissingStatus ENDIF BREAK CASE 4 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Now conclude the cut-scene fTemp[0] = -1.0 IF IS_CHAR_PLAYING_ANIM scplayer PLAYA_KISS_02 GET_CHAR_ANIM_CURRENT_TIME scplayer PLAYA_KISS_02 fTemp[0] ENDIF IF fTemp[0] > -1.0 // An anim is playing IF fTemp[0] = 1.0 // The animation is finished HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ELSE CLEAR_CHAR_TASKS scplayer TASK_PAUSE p2 0 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ENDIF BREAK ENDSWITCH RETURN } /* {--------------------------------------RUN_2P---------------------------------------------} [RUN_00:RUN_2P] ~s~ [RUN_01:RUN_2P] 2p Run Around [RUN_02:RUN_2P] ~s~Free roam around the city, but don't let the cops catch you! [RUN_03:RUN_2P] ~s~Ped Limit [RUN_04:RUN_2P] ~s~Time Limit [RUN_05:RUN_2P] ~s~Los Angelas [RUN_06:RUN_2P] ~s~Los Vegas [RUN_07:RUN_2P] ~s~Mountains [RUN_08:RUN_2P] ~s~Desert [RUN_09:RUN_2P] ~s~~1~ Mins [RUN_10:RUN_2P] ~s~~1~ Peds [RUN_11:RUN_2P] ~s~Press ~x~ to progress [RUN_12:RUN_2P] Select a Weapon [RUN_13:RUN_2P] Shoot ~1~ Peds in ~1~ minutes */ MISSION_START // ***************************************************************************************** // ************************** 2-Player Run-Around Barbara ********************************** // ***************************************************************************************** // ************************************* Paul Davis **************************************** // ***************************************************************************************** SCRIPT_NAME r_barb // Begin... GOSUB mission_start_rbarb IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_rbarb_failed ENDIF GOSUB mission_rbarb_cleanup MISSION_END { // ****************************************Mission Start************************************ mission_start_rbarb: HIDE_ALL_FRONTEND_BLIPS TRUE //--- KISSING VARIABLES LVAR_FLOAT fX[3] fY[3] fZ[3] fTemp[3] // 4 arrays of floats for co-ordinates etc. LVAR_INT iTemp iTemp2 // 2 temp vars to store various int values LVAR_INT iKissingStatus iRadius SET_FADING_COLOUR 0 0 0 disable_all_cranes = 1 flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT RUN_2P GOSUB rbarb_fade_out WAIT 0 // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** // Barbara Locate -1390.1707 2637.5149 54.9887 REQUEST_MODEL COPGRL3 REQUEST_ANIMATION KISSING WHILE NOT HAS_MODEL_LOADED COPGRL3 OR NOT HAS_ANIMATION_LOADED KISSING WAIT 0 ENDWHILE TIMERA = 0 CLEAR_AREA -1391.6161 2637.6035 54.9843 10.0 TRUE IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer -1391.6161 2637.6035 54.9843 SET_CHAR_HEADING scplayer 129.2336 CREATE_PLAYER 1 -1390.8789 2636.4153 54.9843 player2 DO_WEAPON_STUFF_AT_START_OF_2P_GAME GET_PLAYER_CHAR player2 p2 SET_CHAR_HEADING p2 129.2336 SET_PLAYER_MODEL player2 COPGRL3 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_GROVE PEDTYPE_PLAYER2 SET_PLAYER_PLAYER_TARGETTING FALSE SET_CHAR_NEVER_TARGETTED scplayer TRUE SET_CHAR_NEVER_TARGETTED p2 TRUE SET_TWO_PLAYER_CAMERA_MODE JUMP_CUT LIMIT_TWO_PLAYER_DISTANCE 20.0 DISABLE_CHAR_SPEECH p2 TRUE ENDIF GOSUB rbarb_set_camera SET_FIXED_CAMERA_POSITION -1395.2365 2633.9392 57.8633 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1394.4982 2634.5420 57.5606 JUMP_CUT GOSUB rbarb_fade_in PRINT_NOW ( RUN_02 ) 5000 1 // Free roam around the city. WAIT 5000 CLEAR_PRINTS GOSUB rbarb_restore_camera PRINT_HELP ( RUN_06 ) // ~s~You can kiss the other player by standing near them and pressing the ~h~L1 ~w~button. WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 WAIT 0 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF NOT IS_CHAR_IN_ANY_CAR scplayer IF NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON scplayer WEAPONTYPE_SPRAYCAN AND NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON p2 WEAPONTYPE_SPRAYCAN GOSUB rbarb_KissCheck ELSE CLEAR_CHAR_LAST_WEAPON_DAMAGE scplayer CLEAR_CHAR_LAST_WEAPON_DAMAGE p2 ENDIF ENDIF ENDIF GOSUB rbarb_keys ENDWHILE GOTO mission_rbarb_failed mission_rbarb_failed: IF IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_03 ) 4000 1 // ~r~Player one has been killed ENDIF IF IS_CHAR_DEAD p2 PRINT_NOW ( RUN_04 ) 4000 1 // ~r~Player two has been killed ENDIF IF IS_CHAR_DEAD p2 AND IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_05 ) 4000 1 // ~r~Both players were killed ENDIF PRINT_BIG ( M_FAIL ) 5000 1 RETURN mission_rbarb_passed: //flag_twoplay_mission1_passed = 1 CLEAR_WANTED_LEVEL player1 RETURN // mission cleanup mission_rbarb_cleanup: disable_all_cranes = 0 HIDE_ALL_FRONTEND_BLIPS TRUE MARK_MODEL_AS_NO_LONGER_NEEDED COPGRL3 REMOVE_ANIMATION KISSING flag_player_on_mission = 0 CLEAR_WANTED_LEVEL player1 MISSION_HAS_FINISHED RETURN rbarb_set_camera: SWITCH_WIDESCREEN ON IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF RETURN rbarb_restore_camera: SET_CAMERA_IN_FRONT_OF_PLAYER SWITCH_WIDESCREEN OFF IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 ON SET_PLAYER_CONTROL player2 ON ENDIF RESTORE_CAMERA_JUMPCUT RETURN rbarb_fade_out: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN rbarb_fade_in: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN rbarb_keys: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F IF NOT IS_CHAR_DEAD p2 TASK_DIE p2 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H IF NOT IS_CHAR_DEAD scplayer ADD_ARMOUR_TO_CHAR scplayer 100 INCREASE_PLAYER_MAX_HEALTH player1 100 ENDIF ENDIF RETURN /******************************************** STATE 6: ON FOOT KISSING ********************************************/ /******************************************* KISS CHECK ********************************************/ //--- Usage: Call this sub-routine every loop cycle. // It performs a series of spatial checks and also check for L1 to be depressed. // If help text is needed, it can be prented here (I have provided a lablel, commented) rbarb_KissCheck: IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF iKissingStatus = 0 IF NOT IS_CHAR_IN_ANY_CAR scplayer AND NOT IS_CHAR_IN_ANY_CAR p2 IF IS_CHAR_STOPPED p2 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS p2 0.0 0.5 0.0 fX[0] fY[0] fZ[0] IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer fX[0] fY[0] fZ[0] 1.2 1.2 1.0 FALSE IF iRadius = 0 PRINT_HELP_FOREVER ( GF_0021 ) // Press ~m~~widget_kiss~ to kiss. iRadius = 1 ENDIF GET_CHAR_COORDINATES scplayer fX[0] fY[0] fZ[0] GET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] fTemp[0] = fZ[1] - 0.02 fTemp[1] = fZ[1] + 0.02 //--- Check if player and girl are on the same level IF fZ[0] > fTemp[0] AND fZ[0] < fTemp[1] // Kiss now IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1 OR IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1 iKissingStatus = 1 GOSUB rbarb_Kissing ENDIF ENDIF ELSE IF iRadius = 1 CLEAR_HELP iRadius = 0 ENDIF ENDIF ENDIF ENDIF ELSE GOSUB rbarb_Kissing ENDIF ENDIF RETURN /******************************************** KISSING ********************************************/ //--- Usage: This minute state-machine is called by KissCheck every loop cycle if a kiss has been triggered. // Its main purpose is play the kiss animation. It will reset itself by setting iKissingStatus = 0. rbarb_Kissing: SWITCH iKissingStatus CASE 1 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY p2 CLEAR_HELP SET_PLAYER_CONTROL player1 OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 TRUE SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE //--- Switch Roads OFF GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 2.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Rotate player and GF to face each other TASK_TURN_CHAR_TO_FACE_CHAR scplayer p2 TASK_TURN_CHAR_TO_FACE_CHAR p2 scplayer ++iKissingStatus ENDIF BREAK CASE 2 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 GET_SCRIPT_TASK_STATUS scplayer TASK_TURN_CHAR_TO_FACE_CHAR iTemp GET_SCRIPT_TASK_STATUS p2 TASK_TURN_CHAR_TO_FACE_CHAR iTemp2 IF iTemp = FINISHED_TASK AND iTemp2 = FINISHED_TASK //--- Switch collisions OFF SET_CHAR_COLLISION scplayer FALSE SET_CHAR_COLLISION p2 FALSE //--- Update Player and GF co-ords to match anim GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 1.0 0.0 fX[1] fY[1] fZ[1] GET_GROUND_Z_FOR_3D_COORD fX[1] fY[1] fZ[1] fZ[1] //---Store the current girl co-ords GET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] GET_GROUND_Z_FOR_3D_COORD fX[2] fY[2] fZ[2] fZ[2] //--- Now move the girl in the right spot SET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] //--- Camera Cut GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 1.2 -1.0 0.5 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 0.7 0.5 fX[1] fY[1] fZ[1] IF IS_LINE_OF_SIGHT_CLEAR fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] TRUE TRUE FALSE TRUE FALSE SET_FIXED_CAMERA_POSITION fX[0] fY[0] fZ[0] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT fX[1] fY[1] fZ[1] JUMP_CUT ENDIF TASK_STAND_STILL scplayer -1 TASK_STAND_STILL p2 -1 ++iKissingStatus ELSE IF iTemp = FINISHED_TASK GET_SCRIPT_TASK_STATUS scplayer TASK_STAND_STILL iTemp IF NOT iTemp = PERFORMING_TASK AND NOT iTemp = WAITING_TO_START_TASK TASK_STAND_STILL scplayer -1 ENDIF ENDIF IF iTemp2 = FINISHED_TASK GET_SCRIPT_TASK_STATUS p2 TASK_STAND_STILL iTemp2 IF NOT iTemp2 = PERFORMING_TASK AND NOT iTemp2 = WAITING_TO_START_TASK TASK_STAND_STILL p2 -1 GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] ENDIF ENDIF ENDIF ENDIF BREAK CASE 3 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Switch collisions back ON SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE //--- Play anim TASK_PLAY_ANIM scplayer PLAYA_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM p2 GRLFRD_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 ++iKissingStatus ENDIF BREAK CASE 4 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Now conclude the cut-scene fTemp[0] = -1.0 IF IS_CHAR_PLAYING_ANIM scplayer PLAYA_KISS_02 GET_CHAR_ANIM_CURRENT_TIME scplayer PLAYA_KISS_02 fTemp[0] ENDIF IF fTemp[0] > -1.0 // An anim is playing IF fTemp[0] = 1.0 // The animation is finished HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ELSE CLEAR_CHAR_TASKS scplayer TASK_PAUSE p2 0 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ENDIF BREAK ENDSWITCH RETURN } /* {--------------------------------------RUN_2P---------------------------------------------} [RUN_00:RUN_2P] ~s~ [RUN_01:RUN_2P] 2p Run Around [RUN_02:RUN_2P] ~s~Free roam around the city, but don't let the cops catch you! [RUN_03:RUN_2P] ~s~Ped Limit [RUN_04:RUN_2P] ~s~Time Limit [RUN_05:RUN_2P] ~s~Los Angelas [RUN_06:RUN_2P] ~s~Los Vegas [RUN_07:RUN_2P] ~s~Mountains [RUN_08:RUN_2P] ~s~Desert [RUN_09:RUN_2P] ~s~~1~ Mins [RUN_10:RUN_2P] ~s~~1~ Peds [RUN_11:RUN_2P] ~s~Press ~x~ to progress [RUN_12:RUN_2P] Select a Weapon [RUN_13:RUN_2P] Shoot ~1~ Peds in ~1~ minutes */ MISSION_START // ***************************************************************************************** // ************************** 2-Player Run-Around Coochie ********************************** // ***************************************************************************************** // ************************************* Paul Davis **************************************** // ***************************************************************************************** SCRIPT_NAME r_kylie // Begin... GOSUB mission_start_rkylie IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_rkylie_failed ENDIF GOSUB mission_rkylie_cleanup MISSION_END { // ****************************************Mission Start************************************ mission_start_rkylie: HIDE_ALL_FRONTEND_BLIPS TRUE //--- KISSING VARIABLES LVAR_FLOAT fX[3] fY[3] fZ[3] fTemp[3] // 4 arrays of floats for co-ordinates etc. LVAR_INT iTemp iTemp2 // 2 temp vars to store various int values LVAR_INT iKissingStatus iRadius SET_FADING_COLOUR 0 0 0 disable_all_cranes = 1 flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT RUN_2P GOSUB rkylie_fade_out WAIT 0 // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** // Michelle Locate 2402.4358 -1715.4941 13.1328 REQUEST_MODEL GUNGRL3 REQUEST_ANIMATION KISSING WHILE NOT HAS_MODEL_LOADED GUNGRL3 OR NOT HAS_ANIMATION_LOADED KISSING WAIT 0 ENDWHILE TIMERA = 0 CLEAR_AREA -381.5365 -1425.3524 24.9571 10.0 TRUE IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer -381.3404 -1426.9022 24.9079 SET_CHAR_HEADING scplayer 270.0000 CREATE_PLAYER 1 -381.5365 -1425.3524 24.9571 player2 DO_WEAPON_STUFF_AT_START_OF_2P_GAME GET_PLAYER_CHAR player2 p2 SET_CHAR_HEADING p2 270.0000 SET_PLAYER_MODEL player2 GUNGRL3 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_GROVE PEDTYPE_PLAYER2 SET_PLAYER_PLAYER_TARGETTING FALSE SET_CHAR_NEVER_TARGETTED scplayer TRUE SET_CHAR_NEVER_TARGETTED p2 TRUE SET_TWO_PLAYER_CAMERA_MODE JUMP_CUT LIMIT_TWO_PLAYER_DISTANCE 20.0 DISABLE_CHAR_SPEECH p2 TRUE ENDIF GOSUB rkylie_set_camera SET_FIXED_CAMERA_POSITION -376.3109 -1426.4360 27.8865 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -377.2638 -1426.4137 27.5841 JUMP_CUT GOSUB rkylie_fade_in PRINT_NOW ( RUN_02 ) 5000 1 // Free roam around the city. WAIT 5000 CLEAR_PRINTS GOSUB rkylie_restore_camera PRINT_HELP ( RUN_06 ) // ~s~You can kiss the other player by standing near them and pressing the ~h~L1 ~w~button. WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 WAIT 0 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF NOT IS_CHAR_IN_ANY_CAR scplayer IF NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON scplayer WEAPONTYPE_SPRAYCAN AND NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON p2 WEAPONTYPE_SPRAYCAN GOSUB rkylie_KissCheck ELSE CLEAR_CHAR_LAST_WEAPON_DAMAGE scplayer CLEAR_CHAR_LAST_WEAPON_DAMAGE p2 ENDIF ENDIF ENDIF GOSUB rkylie_keys ENDWHILE GOTO mission_rkylie_failed mission_rkylie_failed: IF IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_03 ) 4000 1 // ~r~Player one has been killed ENDIF IF IS_CHAR_DEAD p2 PRINT_NOW ( RUN_04 ) 4000 1 // ~r~Player two has been killed ENDIF IF IS_CHAR_DEAD p2 AND IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_05 ) 4000 1 // ~r~Both players were killed ENDIF PRINT_BIG ( M_FAIL ) 5000 1 RETURN mission_rkylie_passed: //flag_twoplay_mission1_passed = 1 CLEAR_WANTED_LEVEL player1 RETURN // mission cleanup mission_rkylie_cleanup: disable_all_cranes = 0 HIDE_ALL_FRONTEND_BLIPS TRUE MARK_MODEL_AS_NO_LONGER_NEEDED GUNGRL3 REMOVE_ANIMATION KISSING flag_player_on_mission = 0 CLEAR_WANTED_LEVEL player1 MISSION_HAS_FINISHED RETURN rkylie_set_camera: SWITCH_WIDESCREEN ON IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF RETURN rkylie_restore_camera: SET_CAMERA_IN_FRONT_OF_PLAYER SWITCH_WIDESCREEN OFF IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 ON SET_PLAYER_CONTROL player2 ON ENDIF RESTORE_CAMERA_JUMPCUT RETURN rkylie_fade_out: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN rkylie_fade_in: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN rkylie_keys: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F IF NOT IS_CHAR_DEAD p2 TASK_DIE p2 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H IF NOT IS_CHAR_DEAD scplayer ADD_ARMOUR_TO_CHAR scplayer 100 INCREASE_PLAYER_MAX_HEALTH player1 100 ENDIF ENDIF RETURN /******************************************** STATE 6: ON FOOT KISSING ********************************************/ /******************************************* KISS CHECK ********************************************/ //--- Usage: Call this sub-routine every loop cycle. // It performs a series of spatial checks and also check for L1 to be depressed. // If help text is needed, it can be prented here (I have provided a lablel, commented) rkylie_KissCheck: IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF iKissingStatus = 0 IF NOT IS_CHAR_IN_ANY_CAR scplayer AND NOT IS_CHAR_IN_ANY_CAR p2 IF IS_CHAR_STOPPED p2 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS p2 0.0 0.5 0.0 fX[0] fY[0] fZ[0] IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer fX[0] fY[0] fZ[0] 1.2 1.2 1.0 FALSE IF iRadius = 0 PRINT_HELP_FOREVER ( GF_0021 ) // Press ~m~~widget_kiss~ to kiss. iRadius = 1 ENDIF GET_CHAR_COORDINATES scplayer fX[0] fY[0] fZ[0] GET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] fTemp[0] = fZ[1] - 0.02 fTemp[1] = fZ[1] + 0.02 //--- Check if player and girl are on the same level IF fZ[0] > fTemp[0] AND fZ[0] < fTemp[1] // Kiss now IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1 OR IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1 iKissingStatus = 1 GOSUB rkylie_Kissing ENDIF ENDIF ELSE IF iRadius = 1 CLEAR_HELP iRadius = 0 ENDIF ENDIF ENDIF ENDIF ELSE GOSUB rkylie_Kissing ENDIF ENDIF RETURN /******************************************** KISSING ********************************************/ //--- Usage: This minute state-machine is called by KissCheck every loop cycle if a kiss has been triggered. // Its main purpose is play the kiss animation. It will reset itself by setting iKissingStatus = 0. rkylie_Kissing: SWITCH iKissingStatus CASE 1 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY p2 CLEAR_HELP SET_PLAYER_CONTROL player1 OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 TRUE SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE //--- Switch Roads OFF GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 2.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Rotate player and GF to face each other TASK_TURN_CHAR_TO_FACE_CHAR scplayer p2 TASK_TURN_CHAR_TO_FACE_CHAR p2 scplayer ++iKissingStatus ENDIF BREAK CASE 2 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 GET_SCRIPT_TASK_STATUS scplayer TASK_TURN_CHAR_TO_FACE_CHAR iTemp GET_SCRIPT_TASK_STATUS p2 TASK_TURN_CHAR_TO_FACE_CHAR iTemp2 IF iTemp = FINISHED_TASK AND iTemp2 = FINISHED_TASK //--- Switch collisions OFF SET_CHAR_COLLISION scplayer FALSE SET_CHAR_COLLISION p2 FALSE //--- Update Player and GF co-ords to match anim GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 1.0 0.0 fX[1] fY[1] fZ[1] GET_GROUND_Z_FOR_3D_COORD fX[1] fY[1] fZ[1] fZ[1] //---Store the current girl co-ords GET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] GET_GROUND_Z_FOR_3D_COORD fX[2] fY[2] fZ[2] fZ[2] //--- Now move the girl in the right spot SET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] //--- Camera Cut GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 1.2 -1.0 0.5 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 0.7 0.5 fX[1] fY[1] fZ[1] IF IS_LINE_OF_SIGHT_CLEAR fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] TRUE TRUE FALSE TRUE FALSE SET_FIXED_CAMERA_POSITION fX[0] fY[0] fZ[0] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT fX[1] fY[1] fZ[1] JUMP_CUT ENDIF TASK_STAND_STILL scplayer -1 TASK_STAND_STILL p2 -1 ++iKissingStatus ELSE IF iTemp = FINISHED_TASK GET_SCRIPT_TASK_STATUS scplayer TASK_STAND_STILL iTemp IF NOT iTemp = PERFORMING_TASK AND NOT iTemp = WAITING_TO_START_TASK TASK_STAND_STILL scplayer -1 ENDIF ENDIF IF iTemp2 = FINISHED_TASK GET_SCRIPT_TASK_STATUS p2 TASK_STAND_STILL iTemp2 IF NOT iTemp2 = PERFORMING_TASK AND NOT iTemp2 = WAITING_TO_START_TASK TASK_STAND_STILL p2 -1 GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] ENDIF ENDIF ENDIF ENDIF BREAK CASE 3 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Switch collisions back ON SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE //--- Play anim TASK_PLAY_ANIM scplayer PLAYA_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM p2 GRLFRD_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 ++iKissingStatus ENDIF BREAK CASE 4 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Now conclude the cut-scene fTemp[0] = -1.0 IF IS_CHAR_PLAYING_ANIM scplayer PLAYA_KISS_02 GET_CHAR_ANIM_CURRENT_TIME scplayer PLAYA_KISS_02 fTemp[0] ENDIF IF fTemp[0] > -1.0 // An anim is playing IF fTemp[0] = 1.0 // The animation is finished HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ELSE CLEAR_CHAR_TASKS scplayer TASK_PAUSE p2 0 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ENDIF BREAK ENDSWITCH RETURN } /* {--------------------------------------RUN_2P---------------------------------------------} [RUN_00:RUN_2P] ~s~ [RUN_01:RUN_2P] 2p Run Around [RUN_02:RUN_2P] ~s~Free roam around the city, but don't let the cops catch you! [RUN_03:RUN_2P] ~s~Ped Limit [RUN_04:RUN_2P] ~s~Time Limit [RUN_05:RUN_2P] ~s~Los Angelas [RUN_06:RUN_2P] ~s~Los Vegas [RUN_07:RUN_2P] ~s~Mountains [RUN_08:RUN_2P] ~s~Desert [RUN_09:RUN_2P] ~s~~1~ Mins [RUN_10:RUN_2P] ~s~~1~ Peds [RUN_11:RUN_2P] ~s~Press ~x~ to progress [RUN_12:RUN_2P] Select a Weapon [RUN_13:RUN_2P] Shoot ~1~ Peds in ~1~ minutes */ MISSION_START // ***************************************************************************************** // ************************** 2-Player Run-Around Coochie ********************************** // ***************************************************************************************** // ************************************* Paul Davis **************************************** // ***************************************************************************************** SCRIPT_NAME r_coch // Begin... GOSUB mission_start_rcoochie IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_rcoochie_failed ENDIF GOSUB mission_rcoochie_cleanup MISSION_END { // ****************************************Mission Start************************************ mission_start_rcoochie: HIDE_ALL_FRONTEND_BLIPS TRUE //--- KISSING VARIABLES LVAR_FLOAT fX[3] fY[3] fZ[3] fTemp[3] // 4 arrays of floats for co-ordinates etc. LVAR_INT iTemp iTemp2 // 2 temp vars to store various int values LVAR_INT iKissingStatus iRadius SET_FADING_COLOUR 0 0 0 disable_all_cranes = 1 flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT RUN_2P GOSUB rcoochie_fade_out WAIT 0 // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** // Michelle Locate 2402.4358 -1715.4941 13.1328 REQUEST_MODEL GANGRL3 REQUEST_ANIMATION KISSING WHILE NOT HAS_MODEL_LOADED GANGRL3 OR NOT HAS_ANIMATION_LOADED KISSING WAIT 0 ENDWHILE TIMERA = 0 CLEAR_AREA 2401.5952 -1720.3112 12.6137 10.0 TRUE IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer 2401.5952 -1720.3112 12.6137 SET_CHAR_HEADING scplayer 180.0000 CREATE_PLAYER 1 2403.4053 -1720.3046 12.6171 player2 DO_WEAPON_STUFF_AT_START_OF_2P_GAME GET_PLAYER_CHAR player2 p2 SET_CHAR_HEADING p2 180.0000 SET_PLAYER_MODEL player2 GANGRL3 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_GROVE PEDTYPE_PLAYER2 SET_PLAYER_PLAYER_TARGETTING FALSE SET_CHAR_NEVER_TARGETTED scplayer TRUE SET_CHAR_NEVER_TARGETTED p2 TRUE SET_TWO_PLAYER_CAMERA_MODE JUMP_CUT LIMIT_TWO_PLAYER_DISTANCE 20.0 DISABLE_CHAR_SPEECH p2 TRUE ENDIF GOSUB rcoochie_set_camera SET_FIXED_CAMERA_POSITION 2402.6848 -1728.0101 15.5387 0.0 0.0 0.0 POINT_CAMERA_AT_POINT 2402.6982 -1727.0242 15.3723 JUMP_CUT GOSUB rcoochie_fade_in PRINT_NOW ( RUN_02 ) 5000 1 // Free roam around the city. WAIT 5000 CLEAR_PRINTS GOSUB rcoochie_restore_camera PRINT_HELP ( RUN_06 ) // ~s~You can kiss the other player by standing near them and pressing the ~h~L1 ~w~button. WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 WAIT 0 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF NOT IS_CHAR_IN_ANY_CAR scplayer IF NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON scplayer WEAPONTYPE_SPRAYCAN AND NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON p2 WEAPONTYPE_SPRAYCAN GOSUB rcoochie_KissCheck ELSE CLEAR_CHAR_LAST_WEAPON_DAMAGE scplayer CLEAR_CHAR_LAST_WEAPON_DAMAGE p2 ENDIF ENDIF ENDIF GOSUB rcoochie_keys ENDWHILE GOTO mission_rcoochie_failed mission_rcoochie_failed: IF IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_03 ) 4000 1 // ~r~Player one has been killed ENDIF IF IS_CHAR_DEAD p2 PRINT_NOW ( RUN_04 ) 4000 1 // ~r~Player two has been killed ENDIF IF IS_CHAR_DEAD p2 AND IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_05 ) 4000 1 // ~r~Both players were killed ENDIF PRINT_BIG ( M_FAIL ) 5000 1 RETURN mission_rcoochie_passed: //flag_twoplay_mission1_passed = 1 CLEAR_WANTED_LEVEL player1 RETURN // mission cleanup mission_rcoochie_cleanup: disable_all_cranes = 0 HIDE_ALL_FRONTEND_BLIPS TRUE MARK_MODEL_AS_NO_LONGER_NEEDED GANGRL3 REMOVE_ANIMATION KISSING flag_player_on_mission = 0 CLEAR_WANTED_LEVEL player1 MISSION_HAS_FINISHED RETURN rcoochie_set_camera: SWITCH_WIDESCREEN ON IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF RETURN rcoochie_restore_camera: SET_CAMERA_IN_FRONT_OF_PLAYER SWITCH_WIDESCREEN OFF IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 ON SET_PLAYER_CONTROL player2 ON ENDIF RESTORE_CAMERA_JUMPCUT RETURN rcoochie_fade_out: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN rcoochie_fade_in: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN rcoochie_keys: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F IF NOT IS_CHAR_DEAD p2 TASK_DIE p2 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H IF NOT IS_CHAR_DEAD scplayer ADD_ARMOUR_TO_CHAR scplayer 100 INCREASE_PLAYER_MAX_HEALTH player1 100 ENDIF ENDIF RETURN /******************************************** STATE 6: ON FOOT KISSING ********************************************/ /******************************************* KISS CHECK ********************************************/ //--- Usage: Call this sub-routine every loop cycle. // It performs a series of spatial checks and also check for L1 to be depressed. // If help text is needed, it can be prented here (I have provided a lablel, commented) rcoochie_KissCheck: IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF iKissingStatus = 0 IF NOT IS_CHAR_IN_ANY_CAR scplayer AND NOT IS_CHAR_IN_ANY_CAR p2 IF IS_CHAR_STOPPED p2 GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS p2 0.0 0.5 0.0 fX[0] fY[0] fZ[0] IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer fX[0] fY[0] fZ[0] 1.2 1.2 1.0 FALSE IF iRadius = 0 PRINT_HELP_FOREVER ( GF_0021 ) // Press ~m~~widget_kiss~ to kiss. iRadius = 1 ENDIF GET_CHAR_COORDINATES scplayer fX[0] fY[0] fZ[0] GET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] fTemp[0] = fZ[1] - 0.02 fTemp[1] = fZ[1] + 0.02 //--- Check if player and girl are on the same level IF fZ[0] > fTemp[0] AND fZ[0] < fTemp[1] // Kiss now IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1 OR IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1 iKissingStatus = 1 GOSUB rcoochie_Kissing ENDIF ENDIF ELSE IF iRadius = 1 CLEAR_HELP iRadius = 0 ENDIF ENDIF ENDIF ENDIF ELSE GOSUB rcoochie_Kissing ENDIF ENDIF RETURN /******************************************** KISSING ********************************************/ //--- Usage: This minute state-machine is called by KissCheck every loop cycle if a kiss has been triggered. // Its main purpose is play the kiss animation. It will reset itself by setting iKissingStatus = 0. rcoochie_Kissing: SWITCH iKissingStatus CASE 1 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY p2 CLEAR_HELP SET_PLAYER_CONTROL player1 OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 TRUE SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE //--- Switch Roads OFF GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 2.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Rotate player and GF to face each other TASK_TURN_CHAR_TO_FACE_CHAR scplayer p2 TASK_TURN_CHAR_TO_FACE_CHAR p2 scplayer ++iKissingStatus ENDIF BREAK CASE 2 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 GET_SCRIPT_TASK_STATUS scplayer TASK_TURN_CHAR_TO_FACE_CHAR iTemp GET_SCRIPT_TASK_STATUS p2 TASK_TURN_CHAR_TO_FACE_CHAR iTemp2 IF iTemp = FINISHED_TASK AND iTemp2 = FINISHED_TASK //--- Switch collisions OFF SET_CHAR_COLLISION scplayer FALSE SET_CHAR_COLLISION p2 FALSE //--- Update Player and GF co-ords to match anim GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 1.0 0.0 fX[1] fY[1] fZ[1] GET_GROUND_Z_FOR_3D_COORD fX[1] fY[1] fZ[1] fZ[1] //---Store the current girl co-ords GET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] GET_GROUND_Z_FOR_3D_COORD fX[2] fY[2] fZ[2] fZ[2] //--- Now move the girl in the right spot SET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] //--- Camera Cut GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 1.2 -1.0 0.5 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 0.7 0.5 fX[1] fY[1] fZ[1] IF IS_LINE_OF_SIGHT_CLEAR fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] TRUE TRUE FALSE TRUE FALSE SET_FIXED_CAMERA_POSITION fX[0] fY[0] fZ[0] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT fX[1] fY[1] fZ[1] JUMP_CUT ENDIF TASK_STAND_STILL scplayer -1 TASK_STAND_STILL p2 -1 ++iKissingStatus ELSE IF iTemp = FINISHED_TASK GET_SCRIPT_TASK_STATUS scplayer TASK_STAND_STILL iTemp IF NOT iTemp = PERFORMING_TASK AND NOT iTemp = WAITING_TO_START_TASK TASK_STAND_STILL scplayer -1 ENDIF ENDIF IF iTemp2 = FINISHED_TASK GET_SCRIPT_TASK_STATUS p2 TASK_STAND_STILL iTemp2 IF NOT iTemp2 = PERFORMING_TASK AND NOT iTemp2 = WAITING_TO_START_TASK TASK_STAND_STILL p2 -1 GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] ENDIF ENDIF ENDIF ENDIF BREAK CASE 3 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Switch collisions back ON SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE //--- Play anim TASK_PLAY_ANIM scplayer PLAYA_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM p2 GRLFRD_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 ++iKissingStatus ENDIF BREAK CASE 4 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Now conclude the cut-scene fTemp[0] = -1.0 IF IS_CHAR_PLAYING_ANIM scplayer PLAYA_KISS_02 GET_CHAR_ANIM_CURRENT_TIME scplayer PLAYA_KISS_02 fTemp[0] ENDIF IF fTemp[0] > -1.0 // An anim is playing IF fTemp[0] = 1.0 // The animation is finished HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ELSE CLEAR_CHAR_TASKS scplayer TASK_PAUSE p2 0 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ENDIF BREAK ENDSWITCH RETURN } /* {--------------------------------------RUN_2P---------------------------------------------} [RUN_00:RUN_2P] ~s~ [RUN_01:RUN_2P] 2p Run Around [RUN_02:RUN_2P] ~s~Free roam around the city, but don't let the cops catch you! [RUN_03:RUN_2P] ~s~Ped Limit [RUN_04:RUN_2P] ~s~Time Limit [RUN_05:RUN_2P] ~s~Los Angelas [RUN_06:RUN_2P] ~s~Los Vegas [RUN_07:RUN_2P] ~s~Mountains [RUN_08:RUN_2P] ~s~Desert [RUN_09:RUN_2P] ~s~~1~ Mins [RUN_10:RUN_2P] ~s~~1~ Peds [RUN_11:RUN_2P] ~s~Press ~x~ to progress [RUN_12:RUN_2P] Select a Weapon [RUN_13:RUN_2P] Shoot ~1~ Peds in ~1~ minutes */ MISSION_START // ***************************************************************************************** // ************************** 2-Player Run-Around Coochie ********************************** // ***************************************************************************************** // ************************************* Paul Davis **************************************** // ***************************************************************************************** SCRIPT_NAME r_mich // Begin... GOSUB mission_start_rmichelle IF HAS_DEATHARREST_BEEN_EXECUTED GOSUB mission_rmichelle_failed ENDIF GOSUB mission_rmichelle_cleanup MISSION_END { // ****************************************Mission Start************************************ mission_start_rmichelle: HIDE_ALL_FRONTEND_BLIPS TRUE //--- KISSING VARIABLES LVAR_FLOAT fX[3] fY[3] fZ[3] fTemp[3] // 4 arrays of floats for co-ordinates etc. LVAR_INT iTemp iTemp2 // 2 temp vars to store various int values LVAR_INT iKissingStatus iRadius SET_FADING_COLOUR 0 0 0 disable_all_cranes = 1 flag_player_on_mission = 1 REGISTER_MISSION_GIVEN LOAD_MISSION_TEXT RUN_2P GOSUB rmichelle_fade_out WAIT 0 // ***************************************************************************************** // * * // * Requests * // * * // ***************************************************************************************** // Michelle Locate -381.6302 -1426.1240 26.0000 REQUEST_MODEL MECGRL3 REQUEST_ANIMATION KISSING WHILE NOT HAS_MODEL_LOADED MECGRL3 OR NOT HAS_ANIMATION_LOADED KISSING WAIT 0 ENDWHILE TIMERA = 0 CLEAR_AREA -1804.1439 1199.7733 24.1172 10.0 TRUE IF NOT IS_CHAR_DEAD scplayer SET_CHAR_COORDINATES scplayer -1804.1439 1199.7733 24.1172 SET_CHAR_HEADING scplayer 184.5768 CREATE_PLAYER 1 -1802.8077 1199.9120 24.1172 player2 DO_WEAPON_STUFF_AT_START_OF_2P_GAME GET_PLAYER_CHAR player2 p2 SET_CHAR_HEADING p2 184.5768 SET_PLAYER_MODEL player2 MECGRL3 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER2 SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_GROVE PEDTYPE_PLAYER2 SET_PLAYER_PLAYER_TARGETTING FALSE SET_CHAR_NEVER_TARGETTED scplayer TRUE SET_CHAR_NEVER_TARGETTED p2 TRUE SET_TWO_PLAYER_CAMERA_MODE JUMP_CUT LIMIT_TWO_PLAYER_DISTANCE 20.0 DISABLE_CHAR_SPEECH p2 TRUE ENDIF GOSUB rmichelle_set_camera SET_FIXED_CAMERA_POSITION -1802.8945 1194.6371 27.1164 0.0 0.0 0.0 POINT_CAMERA_AT_POINT -1802.9690 1195.5677 26.7584 JUMP_CUT GOSUB rmichelle_fade_in PRINT_NOW ( RUN_02 ) 5000 1 // Free roam around the city. WAIT 5000 CLEAR_PRINTS GOSUB rmichelle_restore_camera PRINT_HELP ( RUN_06 ) // ~s~You can kiss the other player by standing near them and pressing the ~h~L1 ~w~button. WHILE NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 WAIT 0 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 IF NOT IS_CHAR_IN_ANY_CAR scplayer IF NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON scplayer WEAPONTYPE_SPRAYCAN AND NOT HAS_CHAR_BEEN_DAMAGED_BY_WEAPON p2 WEAPONTYPE_SPRAYCAN GOSUB rmichelle_KissCheck ELSE CLEAR_CHAR_LAST_WEAPON_DAMAGE scplayer CLEAR_CHAR_LAST_WEAPON_DAMAGE p2 ENDIF ENDIF ENDIF GOSUB rmichelle_keys ENDWHILE GOTO mission_rmichelle_failed mission_rmichelle_failed: IF IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_03 ) 4000 1 // ~r~Player one has been killed ENDIF IF IS_CHAR_DEAD p2 PRINT_NOW ( RUN_04 ) 4000 1 // ~r~Player two has been killed ENDIF IF IS_CHAR_DEAD p2 AND IS_CHAR_DEAD scplayer PRINT_NOW ( RUN_05 ) 4000 1 // ~r~Both players were killed ENDIF PRINT_BIG ( M_FAIL ) 5000 1 RETURN mission_rmichelle_passed: //flag_twoplay_mission1_passed = 1 CLEAR_WANTED_LEVEL player1 RETURN // mission cleanup mission_rmichelle_cleanup: disable_all_cranes = 0 HIDE_ALL_FRONTEND_BLIPS TRUE MARK_MODEL_AS_NO_LONGER_NEEDED MECGRL3 REMOVE_ANIMATION KISSING flag_player_on_mission = 0 CLEAR_WANTED_LEVEL player1 MISSION_HAS_FINISHED RETURN rmichelle_set_camera: SWITCH_WIDESCREEN ON IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 OFF SET_PLAYER_CONTROL player2 OFF ENDIF RETURN rmichelle_restore_camera: SET_CAMERA_IN_FRONT_OF_PLAYER SWITCH_WIDESCREEN OFF IF IS_PLAYER_PLAYING player1 AND IS_PLAYER_PLAYING player2 SET_PLAYER_CONTROL player1 ON SET_PLAYER_CONTROL player2 ON ENDIF RESTORE_CAMERA_JUMPCUT RETURN rmichelle_fade_out: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_OUT WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN rmichelle_fade_in: SET_FADING_COLOUR 0 0 0 DO_FADE 2000 FADE_IN WHILE GET_FADING_STATUS WAIT 0 ENDWHILE RETURN rmichelle_keys: IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F IF NOT IS_CHAR_DEAD p2 TASK_DIE p2 ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_B ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_K IF NOT IS_CHAR_DEAD scplayer TASK_DIE scplayer ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_H IF NOT IS_CHAR_DEAD scplayer ADD_ARMOUR_TO_CHAR scplayer 100 INCREASE_PLAYER_MAX_HEALTH player1 100 ENDIF ENDIF RETURN /******************************************** STATE 6: ON FOOT KISSING ********************************************/ /******************************************* KISS CHECK ********************************************/ //--- Usage: Call this sub-routine every loop cycle. // It performs a series of spatial checks and also check for L1 to be depressed. // If help text is needed, it can be prented here (I have provided a lablel, commented) WRITE_LOG "1" rmichelle_KissCheck: IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 WRITE_LOG "2" IF iKissingStatus = 0 WRITE_LOG "3" IF NOT IS_CHAR_IN_ANY_CAR scplayer AND NOT IS_CHAR_IN_ANY_CAR p2 WRITE_LOG "4" IF IS_CHAR_STOPPED p2 WRITE_LOG "5" GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS p2 0.0 0.5 0.0 fX[0] fY[0] fZ[0] IF LOCATE_STOPPED_CHAR_ON_FOOT_3D scplayer fX[0] fY[0] fZ[0] 1.2 1.2 1.0 FALSE WRITE_LOG "6" IF iRadius = 0 WRITE_LOG "7" PRINT_HELP_FOREVER ( GF_0021 ) // Press ~m~~widget_kiss~ to kiss. iRadius = 1 ENDIF GET_CHAR_COORDINATES scplayer fX[0] fY[0] fZ[0] GET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] fTemp[0] = fZ[1] - 0.02 fTemp[1] = fZ[1] + 0.02 //--- Check if player and girl are on the same level IF fZ[0] > fTemp[0] AND fZ[0] < fTemp[1] // Kiss now IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1 OR IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1 iKissingStatus = 1 GOSUB rmichelle_Kissing ENDIF ENDIF ELSE IF iRadius = 1 CLEAR_HELP iRadius = 0 ENDIF ENDIF ENDIF ENDIF ELSE GOSUB rmichelle_Kissing ENDIF ENDIF RETURN /******************************************** KISSING ********************************************/ //--- Usage: This minute state-machine is called by KissCheck every loop cycle if a kiss has been triggered. // Its main purpose is play the kiss animation. It will reset itself by setting iKissingStatus = 0. rmichelle_Kissing: SWITCH iKissingStatus CASE 1 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 CLEAR_CHAR_TASKS_IMMEDIATELY scplayer CLEAR_CHAR_TASKS_IMMEDIATELY p2 CLEAR_HELP SET_PLAYER_CONTROL player1 OFF HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 TRUE SET_EVERYONE_IGNORE_PLAYER player1 TRUE SWITCH_WIDESCREEN ON SET_ALL_CARS_CAN_BE_DAMAGED FALSE //--- Switch Roads OFF GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 2.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_OFF fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Rotate player and GF to face each other TASK_TURN_CHAR_TO_FACE_CHAR scplayer p2 TASK_TURN_CHAR_TO_FACE_CHAR p2 scplayer ++iKissingStatus ENDIF BREAK CASE 2 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 GET_SCRIPT_TASK_STATUS scplayer TASK_TURN_CHAR_TO_FACE_CHAR iTemp GET_SCRIPT_TASK_STATUS p2 TASK_TURN_CHAR_TO_FACE_CHAR iTemp2 IF iTemp = FINISHED_TASK AND iTemp2 = FINISHED_TASK //--- Switch collisions OFF SET_CHAR_COLLISION scplayer FALSE SET_CHAR_COLLISION p2 FALSE //--- Update Player and GF co-ords to match anim GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 1.0 0.0 fX[1] fY[1] fZ[1] GET_GROUND_Z_FOR_3D_COORD fX[1] fY[1] fZ[1] fZ[1] //---Store the current girl co-ords GET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] GET_GROUND_Z_FOR_3D_COORD fX[2] fY[2] fZ[2] fZ[2] //--- Now move the girl in the right spot SET_CHAR_COORDINATES p2 fX[1] fY[1] fZ[1] //--- Camera Cut GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 1.2 -1.0 0.5 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 0.7 0.5 fX[1] fY[1] fZ[1] IF IS_LINE_OF_SIGHT_CLEAR fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] TRUE TRUE FALSE TRUE FALSE SET_FIXED_CAMERA_POSITION fX[0] fY[0] fZ[0] 0.0 0.0 0.0 POINT_CAMERA_AT_POINT fX[1] fY[1] fZ[1] JUMP_CUT ENDIF TASK_STAND_STILL scplayer -1 TASK_STAND_STILL p2 -1 ++iKissingStatus ELSE IF iTemp = FINISHED_TASK GET_SCRIPT_TASK_STATUS scplayer TASK_STAND_STILL iTemp IF NOT iTemp = PERFORMING_TASK AND NOT iTemp = WAITING_TO_START_TASK TASK_STAND_STILL scplayer -1 ENDIF ENDIF IF iTemp2 = FINISHED_TASK GET_SCRIPT_TASK_STATUS p2 TASK_STAND_STILL iTemp2 IF NOT iTemp2 = PERFORMING_TASK AND NOT iTemp2 = WAITING_TO_START_TASK TASK_STAND_STILL p2 -1 GET_CHAR_HEADING scplayer fTemp[0] fTemp[0] += 180.0 SET_CHAR_HEADING p2 fTemp[0] ENDIF ENDIF ENDIF ENDIF BREAK CASE 3 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Switch collisions back ON SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE //--- Play anim TASK_PLAY_ANIM scplayer PLAYA_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 TASK_PLAY_ANIM p2 GRLFRD_KISS_02 KISSING 4.0 FALSE FALSE FALSE FALSE 0 ++iKissingStatus ENDIF BREAK CASE 4 IF NOT IS_CHAR_DEAD scplayer AND NOT IS_CHAR_DEAD p2 //--- Now conclude the cut-scene fTemp[0] = -1.0 IF IS_CHAR_PLAYING_ANIM scplayer PLAYA_KISS_02 GET_CHAR_ANIM_CURRENT_TIME scplayer PLAYA_KISS_02 fTemp[0] ENDIF IF fTemp[0] > -1.0 // An anim is playing IF fTemp[0] = 1.0 // The animation is finished HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ELSE CLEAR_CHAR_TASKS scplayer TASK_PAUSE p2 0 HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer FALSE HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE p2 FALSE //--- Restore the girl's co-ords SET_CHAR_COORDINATES p2 fX[2] fY[2] fZ[2] //--- Switch Roads ON GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 30.0 30.0 1.0 fX[0] fY[0] fZ[0] GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -30.0 -30.0 -1.0 fX[1] fY[1] fZ[1] SWITCH_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] SWITCH_PED_ROADS_BACK_TO_ORIGINAL fX[0] fY[0] fZ[0] fX[1] fY[1] fZ[1] //--- Restore collisions etc. SET_CHAR_COLLISION scplayer TRUE SET_CHAR_COLLISION p2 TRUE SET_PLAYER_CONTROL player1 ON SET_EVERYONE_IGNORE_PLAYER player1 FALSE SWITCH_WIDESCREEN OFF SET_ALL_CARS_CAN_BE_DAMAGED TRUE SET_CAMERA_BEHIND_PLAYER RESTORE_CAMERA_JUMPCUT //--- All done iKissingStatus = 0 ENDIF ENDIF BREAK ENDSWITCH RETURN } /* {--------------------------------------RUN_2P---------------------------------------------} [RUN_00:RUN_2P] ~s~ [RUN_01:RUN_2P] 2p Run Around [RUN_02:RUN_2P] ~s~Free roam around the city, but don't let the cops catch you! [RUN_03:RUN_2P] ~s~Ped Limit [RUN_04:RUN_2P] ~s~Time Limit [RUN_05:RUN_2P] ~s~Los Angelas [RUN_06:RUN_2P] ~s~Los Vegas [RUN_07:RUN_2P] ~s~Mountains [RUN_08:RUN_2P] ~s~Desert [RUN_09:RUN_2P] ~s~~1~ Mins [RUN_10:RUN_2P] ~s~~1~ Peds [RUN_11:RUN_2P] ~s~Press ~x~ to progress [RUN_12:RUN_2P] Select a Weapon [RUN_13:RUN_2P] Shoot ~1~ Peds in ~1~ minutes */ MISSION_START { // player_parachute_script: SCRIPT_NAME PLCHUTE //VAR_INT fake_code_flag LVAR_INT code_flag LVAR_FLOAT para_yaw para_roll para_pitch para_vel para_vel_start para_vel_startZ LVAR_FLOAT player_height VAR_FLOAT para_max_Vz LVAR_FLOAT para_Voldx para_Voldy LVAR_INT para_v1 para_v2 para_v3 para_v4 para_Seq para_fall_anim parachute_pack paraC LVAR_INT para_time_check para_time_start para_col LVAR_FLOAT para_f1 para_f2 para_f3 LVAR_FLOAT sin_angle para_pitch_step para_roll_step LVAR_FLOAT para_time_step //global parameters - can be adjusted by external scripts so long as reset at end of mission. //VAR_INT player_has_parachute player_landed //VAR_FLOAT para_float_Vy para_float_Vz para_flare_Vy para_flare_Vz para_freefall_Vz para_freefall_Vy para_default_Vy //VAR_INT para_pickup_flag para_control_off // //para_float_Vy = 5.0 //para_float_Vz = -5.0 //para_flare_Vy = 8.5 //para_flare_Vz = -1.5 //para_freefall_Vz = -30.0 //para_freefall_Vy = 15.0 //para_default_Vy = 0.0 //VIEW_INTEGER_VARIABLE player_fall_state player_fall_state //VIEW_INTEGER_VARIABLE player_landed player_landed //VIEW_INTEGER_VARIABLE code_flag code_flag //VIEW_FLOAT_VARIABLE para_Vx para_Vx //VIEW_FLOAT_VARIABLE para_Vy para_Vy //VIEW_FLOAT_VARIABLE para_pitch para_pitch //VIEW_FLOAT_VARIABLE para_max_vz para_max_vz //GOSUB parachute_start //REQUEST_ANIMATION PARACHUTE //REQUEST_MODEL PARACHUTE //REQUEST_MODEL para_pack //REQUEST_MODEL pikupparachute REQUEST_MODEL gun_para //OR NOT HAS_MODEL_LOADED PARACHUTE // OR NOT HAS_MODEL_LOADED para_pack // NOT HAS_ANIMATION_LOADED PARACHUTE // WHILE NOT HAS_MODEL_LOADED gun_para //OR NOT HAS_MODEL_LOADED gun_para WAIT 0 ENDWHILE VAR_INT para_pickup IF NOT IS_CHAR_DEAD scplayer // SET_CHAR_COORDINATES scplayer 1794.9514 -1308.5892 133.8128 // CREATE_PICKUP Gun_para PICKUP_ONCE 1797.6023 -1308.8815 133.8128 para_pickup ENDIF //GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_PARACHUTE 1 // //ENDIF player_landed = 0 player_fall_state = 0 player_has_parachute = 0 IF player_landed = 999 CREATE_PICKUP Gun_para PICKUP_ONCE player_x player_y player_z para_pickup ENDIF jump_loop: // ************************ Add global variable for scripter to set to prevent player opening chute, and reset. *************************************** WAIT 0 // IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_T // max_decel = 0.0 // TASK_PAUSE scplayer 1 // player_fall_state = 0 // max_decel = 0.0 // ENDIF // VIEW_INTEGER_VARIABLE player_fall_State player_fall_state // fake_code_flag = code_flag // VIEW_INTEGER_VARIABLE fake_code_flag fake_code_flag IF NOT IS_CHAR_DEAD scplayer IF NOT IS_2PLAYER_GAME_GOING_ON IF NOT player_fall_state = 0 SET_PLAYER_CYCLE_WEAPON_BUTTON Player1 FALSE ENDIF // IF IS_CHAR_SITTING_IN_ANY_CAR scplayer // IF blah = 0 // blah = 1 // ENDIF // ELSE // IF blah = 1 // blah = 2 // player_fall_state = 1 // code_flag = 0 // ENDIF // ENDIF IF player_has_parachute > 0 IF NOT HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_PARACHUTE GOSUB parachute_cleanup ENDIF ENDIF IF player_has_parachute = 0 IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_PARACHUTE REQUEST_MODEL PARACHUTE // REQUEST_ANIMATION PARACHUTE // REQUEST_MODEL para_pack // REQUEST_MODEL gun_para player_has_parachute = 1 player_landed = 0 ENDIF ENDIF IF player_has_parachute = 1 // IF HAS_MODEL_LOADED para_pack IF HAS_MODEL_LOADED PARACHUTE // AND HAS_ANIMATION_LOADED PARACHUTE // AND HAS_MODEL_LOADED gun_para CREATE_OBJECT PARACHUTE player_x player_y player_z ParaC // CREATE_OBJECT para_pack 0.0 0.0 0.0 parachute_pack // TASK_PICK_UP_OBJECT scplayer parachute_pack -0.11 -0.05 0.0 PED_TORSO HOLD_ORIENTATE_BONE_FULL NULL NULL 0 ATTACH_OBJECT_TO_CHAR parac scplayer 0.0 0.0 0.0 0.0 0.0 0.0 // SET_OBJECT_ROTATION parachute_pack 90.0 90.0 90.0 SET_OBJECT_VISIBLE ParaC FALSE // SET_OBJECT_VISIBLE parachute_pack FALSE player_has_parachute = 2 ENDIF ENDIF // IF player_has_parachute = 2 // AND player_fall_state = 0 // IF DOES_OBJECT_EXIST parachute_pack // IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PARACHUTE // SET_OBJECT_VISIBLE parachute_pack TRUE // ELSE // SET_OBJECT_VISIBLE parachute_pack FALSE // ENDIF // ENDIF // ENDIF // make parachute pack appear if player goes in to freefall mode without the parachute selected. IF player_has_parachute = 2 AND player_fall_state = 1 player_has_parachute = 3 // IF DOES_OBJECT_EXIST parachute_pack // SET_OBJECT_VISIBLE parachute_pack TRUE // ENDIF ENDIF // player is on ground IF player_fall_state = 0 AND player_has_parachute > 0 IF IS_CHAR_IN_AIR scplayer GET_CHAR_VELOCITY scplayer para_Vx para_Vy para_Vz IF para_Vz < -10.0 GET_CHAR_HEIGHT_ABOVE_GROUND scplayer player_height IF player_height > 20.0 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_FREEFALL_START player_fall_state = 1 SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_PARACHUTE code_flag = 0 para_max_Vz = 0.0 ENDIF ENDIF ENDIF ENDIF //player entering freefall IF player_fall_state = 1 IF code_flag = 0 code_flag = 2 ENDIF IF code_flag = 2 LVAR_INT task_state GET_SCRIPT_TASK_STATUS scplayer TASK_PLAY_ANIM_NON_INTERRUPTABLE task_state IF task_State = FINISHED_TASK TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer FALL_skydive PED 1.0 1 0 0 0 -1 REQUEST_ANIMATION PARACHUTE para_fall_anim = 1 GET_CHAR_HEADING scplayer para_yaw code_flag = 3 ENDIF ENDIF IF code_flag = 3 GET_SCRIPT_TASK_STATUS scplayer TASK_PLAY_ANIM_NON_INTERRUPTABLE task_state IF task_State = FINISHED_TASK TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer FALL_skydive PED 1.0 1 0 0 0 -1 ENDIF GET_CHAR_HEIGHT_ABOVE_GROUND scplayer player_height IF player_height < 100.0 AND player_height > 60.0 IF HAS_ANIMATION_LOADED PARACHUTE IF flag_player_on_mission = 0 PRINT_NOW PARA_01 1000 1 ENDIF ENDIF ENDIF GET_POSITION_OF_ANALOGUE_STICKS PAD1 para_v1 para_v2 para_v3 para_v3 IF para_control_off = 1 para_v1 = 0 para_v2 = 0 ENDIF para_f1 =# para_v1 GET_PC_MOUSE_MOVEMENT para_time_step para_time_step // HACKED COMMAND - get the time step // to get 30 deegrees roll either way (+- 30 deg) as a maximum roll - ie 256/4.267 = 60 para_f1 /= 4.267 para_f1 -= para_roll para_f1 /= 20.0 para_f1 *= para_time_step para_roll += para_f1 para_f1 = para_roll / 5.0 //was 15.0 para_f1 *= para_time_step para_yaw -= para_f1 IF para_yaw > 180.0 para_yaw -= 360.0 ENDIF IF para_yaw < -180.0 para_yaw += 360.0 ENDIF para_f2 =# para_v2 para_f2 /= 4.267 para_f2 -= para_pitch para_f2 /= 20.0 para_f2 *= para_time_step para_pitch += para_f2 GET_CHAR_VELOCITY scplayer para_Voldx para_Voldy para_Vz IF para_Vz < para_freefall_Vz para_Vz = para_freefall_Vz ENDIF IF para_Vz < para_max_Vz para_max_Vz = para_Vz ENDIF IF para_freefall_Vz > para_max_Vz para_max_Vz = para_freefall_Vz ENDIF IF para_Vz > para_max_Vz AND NOT player_fall_safe = 1 IF NOT IS_CHAR_IN_WATER scplayer IF para_max_Vz < -20.0 player_fall_state = 2 ELSE TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer FALL_skydive PED 1.0 1 0 0 0 100 player_fall_state = 7 //player doesn't lose chute ENDIF ELSE TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer FALL_skydive PED 1.0 1 0 0 0 100 player_fall_state = 7 //player doesn't lose chute ENDIF // VAR_FLOAT max_Decel this_decel // VIEW_FLOAT_VARIABLE max_decel max_decel // this_decel = para_max_Vz - para_Vz // IF this_decel < max_decel // max_decel = this_decel // ENDIF // IF max_decel = 0.0 // max_decel = para_Vz // ENDIF // para_max_Vz = para_Vz ENDIF para_vel = para_pitch / 30.0 para_vel *= para_freefall_Vy SIN para_yaw para_Vx COS para_yaw para_Vy para_Vx *= para_vel para_Vy *= para_vel para_Vy *= -1.0 para_Vy += para_default_Vy // this bit acts as a kind of momentum para_f1 = para_Voldx - para_Vx para_f1 *= 0.01 para_Vx = para_Voldx - para_f1 para_f1 = para_Voldy - para_Vy para_f1 *= 0.01 para_Vy = para_Voldy - para_f1 // SET ANIM TO PLAY DURING FREEFALL para_v3 = para_v1 para_v4 = para_v2 ABS para_v3 ABS para_v4 IF para_v3 > 40 OR para_v4 > 40 IF para_v3 > para_v4 IF para_v1 >= 0 IF NOT para_fall_anim = 2 IF HAS_ANIMATION_LOADED PARACHUTE TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer FALL_skydive_R PARACHUTE 1.0 1 0 0 1 -2 ENDIF para_fall_anim = 2 ENDIF ENDIF IF para_v1 < 0 IF NOT para_fall_anim = 3 IF HAS_ANIMATION_LOADED PARACHUTE TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer FALL_skydive_L PARACHUTE 1.0 1 0 0 1 -2 ENDIF para_fall_anim = 3 ENDIF ENDIF ELSE IF para_v2 >= 0 IF NOT para_fall_anim = 4 IF HAS_ANIMATION_LOADED PARACHUTE TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer FALL_skydive PARACHUTE 1.0 1 0 0 1 -2 ENDIF para_fall_anim = 4 ENDIF ENDIF IF para_v2 < 0 IF NOT para_fall_anim = 5 IF HAS_ANIMATION_LOADED PARACHUTE TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer FALL_skydive_Accel PARACHUTE 1.0 1 0 0 1 -2 ENDIF para_fall_anim = 5 ENDIF ENDIF ENDIF ELSE IF NOT para_fall_anim = 1 IF HAS_ANIMATION_LOADED PARACHUTE TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer FALL_skydive PARACHUTE 1.0 1 0 0 1 -2 para_fall_anim = 1 ENDIF ENDIF ENDIF IF IS_WIDGET_RELEASED WIDGET_PARACHUTE OR IS_WIDGET_DOUBLETAPPED WIDGET_LOOK OR para_force_chute_open = 1 IF NOT player_fall_safe = 1 IF HAS_ANIMATION_LOADED PARACHUTE IF player_has_parachute = 3 AND para_control_off = 0 TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer PARA_open PARACHUTE 8.0 0 0 0 1 -2 REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_FREEFALL_STOP VAR_INT play_open_timer play_open_timer = TIMERA + 1100 player_fall_state = 3 code_flag = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF player_fall_state = 2 //die IF HAS_ANIMATION_LOADED PARACHUTE SET_CHAR_HEADING scplayer para_yaw TASK_DIE_NAMED_ANIM scplayer FALL_skydive_die PARACHUTE 1000.0 0 REPORT_MISSION_AUDIO_EVENT_AT_CHAR scplayer SOUND_PED_DEATH_CRUNCH ELSE TASK_DIE scplayer ENDIF GOSUB parachute_cleanup ENDIF IF player_fall_state = 3 //parachuting IF play_open_timer > 0 IF TIMERA > play_open_timer REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PARACHUTE_OPEN play_open_timer = 0 ENDIF ENDIF IF code_flag = 0 //make player angle revert to 0 para_pitch_step = para_pitch / 500.0 para_roll_step = para_roll / 500.0 para_time_check = TIMERA para_time_start = TIMERA para_vel_start = para_Vel * -1.0 para_vel_startZ = para_Vz code_flag = 1 ENDIF IF code_flag = 1 para_v1 = TIMERA - para_time_start IF para_v1 < 500 para_v1 = TIMERA - para_time_check para_time_check = TIMERA para_f1 =# para_v1 para_f2 = para_pitch_step * para_f1 para_f3 = para_roll_step * para_f1 para_pitch -= para_f2 para_roll -= para_f3 ELSE para_roll = 0.0 para_pitch = 0.0 code_flag = 2 ENDIF ENDIF IF code_flag = 2 IF DOES_OBJECT_EXIST parac SET_OBJECT_VISIBLE parac TRUE SET_OBJECT_SCALE parac 0.0 para_time_start = TIMERA WAIT 0 PLAY_OBJECT_ANIM parac para_open_o PARACHUTE 1000.0 0 1 code_flag = 3 ENDIF ENDIF IF code_flag = 3 // Scale the parachute from 0.0 to 100.0 percent size over the course of 1/2 second para_v1 = TIMERA - para_time_start IF para_v1 < 500 para_f1 =# para_v1 para_f1 /= 500.0 SET_OBJECT_SCALE parac para_f1 ELSE SET_OBJECT_SCALE parac 1.0 code_flag = 4 ENDIF ENDIF IF code_flag = 5 CREATE_OBJECT para_collision 0.0 0.0 0.0 para_col SET_OBJECT_VISIBLE para_col FALSE SET_OBJECT_DYNAMIC para_col TRUE SET_OBJECT_RECORDS_COLLISIONS para_col TRUE code_flag = 6 ENDIF IF code_flag = 6 // // IF player_height < 2.0 // GET_CHAR_VELOCITY scplayer para_f1 para_f1 para_f3 // // ABS para_f3 // // IF para_f3 < 0.1 // player_fall_state = 4 // code_flag = 0 // ENDIF GET_POSITION_OF_ANALOGUE_STICKS PAD1 para_v1 para_v2 para_v3 para_v3 IF para_control_off = 1 para_v1 = 0 para_v2 = 0 ENDIF para_f1 =# para_v1 GET_PC_MOUSE_MOVEMENT para_time_step para_time_step // HACKED COMMAND - get the time step // to get 30 deegrees roll either way (+- 30 deg) as a maximum roll - ie 256/4.267 = 60 para_f1 /= 4.267 para_f1 -= para_roll para_f1 /= 20.0 para_f1 *= para_time_step para_roll += para_f1 para_f1 = para_roll / 15.0 para_f1 *= para_time_step para_yaw -= para_f1 IF para_yaw > 180.0 para_yaw -= 360.0 ENDIF IF para_yaw < -180.0 para_yaw += 360.0 ENDIF SIN para_yaw para_Vx COS para_yaw para_Vy para_Vx *= para_float_Vy para_Vy *= para_float_Vy para_Vx *= -1.0 // para_Vz = para_float_Vz // SET ANIM TO PLAY DURING FREEFALL para_v3 = para_v1 para_v4 = para_v2 ABS para_v3 ABS para_v4 IF para_v3 > 40 OR para_v4 > 40 IF para_v3 > para_v4 para_f1 = para_float_Vz - para_Vz para_f1 /= 20.0 para_Vz += para_f1 IF para_v1 >= 0 IF NOT para_fall_anim = 2 TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer PARA_steerR PARACHUTE 1.0 1 0 0 1 -2 PLAY_OBJECT_ANIM parac para_steerR_o PARACHUTE 1.0 1 1 para_fall_anim = 2 ENDIF ENDIF IF para_v1 < 0 IF NOT para_fall_anim = 3 TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer PARA_steerL PARACHUTE 1.0 1 0 0 1 -2 PLAY_OBJECT_ANIM parac para_steerL_o PARACHUTE 1.0 1 1 para_fall_anim = 3 ENDIF ENDIF ELSE IF para_v2 >= 0 para_f1 = para_flare_Vz - para_Vz para_f1 /= 20.0 para_Vz += para_f1 IF NOT para_fall_anim = 4 TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer PARA_decel PARACHUTE 1.0 1 0 0 1 -2 PLAY_OBJECT_ANIM parac para_decel_o PARACHUTE 1.0 1 1 para_fall_anim = 4 ENDIF ENDIF IF para_v2 < 0 para_f1 = para_float_Vz - para_Vz para_f1 /= 20.0 para_Vz += para_f1 IF NOT para_fall_anim = 5 TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer PARA_float PARACHUTE 1.0 1 0 0 1 -2 PLAY_OBJECT_ANIM parac para_float_o PARACHUTE 1.0 1 1 para_fall_anim = 5 ENDIF ENDIF ENDIF ELSE para_f1 = para_float_Vz - para_Vz para_f1 /= 20.0 para_Vz += para_f1 IF NOT para_fall_anim = 5 IF NOT para_fall_anim = 1 TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer PARA_float PARACHUTE 1.0 1 0 0 1 -2 PLAY_OBJECT_ANIM parac para_float_o PARACHUTE 1.0 1 1 para_fall_anim = 1 ENDIF ENDIF ENDIF GET_OBJECT_COORDINATES parac x y z SET_OBJECT_COORDINATES_AND_VELOCITY para_col x y z IF HAS_OBJECT_COLLIDED_WITH_ANYTHING para_col PLAY_OBJECT_ANIM parac para_rip_loop_o PARACHUTE 8.0 1 1 code_flag = 7 ENDIF /* IF IS_BUTTON_PRESSED PAD1 TRIANGLE CLEAR_CHAR_TASKS_IMMEDIATELY scplayer player_fall_state = 6 player_landed = 3 ENDIF */ ENDIF // slow player down as parachute opens - speed during freefall adjust to speeds with parachute open IF DOES_OBJECT_EXIST parac IF IS_OBJECT_PLAYING_ANIM parac para_open_o GET_OBJECT_ANIM_CURRENT_TIME parac para_open_o para_f1 para_f2 = para_vel_startZ - para_float_Vz para_f3 = para_f2 * para_f1 para_Vz = para_vel_startZ - para_f3 para_f2 = para_vel_start - para_float_Vy para_f3 = para_f2 * para_f1 para_vel = para_vel_start - para_f3 SIN para_yaw para_Vx COS para_yaw para_Vy para_Vx *= para_vel para_Vy *= para_vel para_Vx *= -1.0 IF para_f1 = 1.0 AND code_flag = 4 code_flag = 5 ENDIF // player_fall_state = 0 ENDIF ENDIF IF NOT IS_CHAR_DEAD scplayer IF IS_CHAR_IN_WATER scplayer TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer para_land_water PARACHUTE 8.0 1 1 0 0 1000 PLAY_OBJECT_ANIM parac para_land_water_o PARACHUTE 1000.0 0 1 player_fall_state = 5 code_flag = 0 ENDIF GET_CHAR_VELOCITY scplayer para_f1 para_f1 para_f3 IF para_f3 > -0.1 player_fall_state = 4 code_flag = 0 ENDIF ENDIF ENDIF IF player_fall_state = 4 IF code_flag = 0 player_landed = 1 GET_CHAR_COORDINATES scplayer player_x player_y player_z player_z -= 1.0 SET_CHAR_COORDINATES scplayer player_x player_y player_z SET_CHAR_ROTATION scplayer 0.0 0.0 para_yaw IF para_Vz < -10.0 player_fall_state = 2 code_flag = 0 ELSE IF para_Vz < -4.0 OPEN_SEQUENCE_TASK para_seq TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 fall_front PED 20.0 0 0 0 1 700 TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 getup_front PED 8.0 0 1 0 0 -2 CLOSE_SEQUENCE_TASK para_seq PERFORM_SEQUENCE_TASK scplayer para_seq CLEAR_SEQUENCE_TASK para_seq ELSE TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer run_player PED 8.0 1 1 0 0 1000 ENDIF code_flag = 1 ENDIF PLAY_OBJECT_ANIM parac para_land_o PARACHUTE 1000.0 0 1 DETACH_OBJECT parac 0.0 0.0 0.0 FALSE para_time_check = TIMERA + 1000 ENDIF IF code_flag = 1 IF IS_OBJECT_PLAYING_ANIM parac para_land_o GET_OBJECT_ANIM_CURRENT_TIME parac para_land_o para_f1 IF para_f1 = 1.0 // IF TIMERA > para_time_check player_landed = 2 GOSUB parachute_cleanup ENDIF ENDIF ENDIF ENDIF IF player_fall_state = 5 player_landed = 1 IF code_flag = 0 // IF NOT IS_OBJECT_PLAYING_ANIM parac para_land_water_o // GET_OBJECT_ANIM_CURRENT_TIME parac para_land_water_o para_f1 // IF para_f1 = 1.0 // IF TIMERA > para_time_check player_landed = 2 GOSUB parachute_cleanup // ENDIF // ENDIF ENDIF ENDIF IF player_fall_state > 0 AND player_fall_state < 4 IF NOT IS_CHAR_DEAD scplayer SET_CHAR_VELOCITY scplayer para_Vx para_Vy para_Vz SET_CHAR_HEADING scplayer para_yaw SET_CHAR_ROTATION scplayer para_pitch para_roll para_yaw ENDIF ENDIF IF player_fall_state = 6 GOSUB parachute_cleanup ENDIF IF player_fall_state = 7 GOSUB parachute_cleanup_keep_chute ENDIF ENDIF ENDIF GOTO jump_loop parachute_cleanup_keep_chute: player_fall_state = 0 code_flag = 0 MARK_MODEL_AS_NO_LONGER_NEEDED PARACHUTE REMOVE_ANIMATION PARACHUTE SET_CHAR_ROTATION scplayer 0.0 0.0 para_yaw SET_PLAYER_CYCLE_WEAPON_BUTTON Player1 TRUE RETURN parachute_cleanup: DETACH_OBJECT parac 0.0 0.0 0.0 FALSE REMOVE_OBJECT_ELEGANTLY parac DELETE_OBJECT para_col REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_PARACHUTE player_fall_state = 0 player_has_parachute = 0 code_flag = 0 MARK_MODEL_AS_NO_LONGER_NEEDED PARACHUTE REMOVE_ANIMATION PARACHUTE MARK_MODEL_AS_NO_LONGER_NEEDED gun_para SET_CHAR_ROTATION scplayer 0.0 0.0 para_yaw SET_PLAYER_CYCLE_WEAPON_BUTTON Player1 TRUE MISSION_END // RETURN } MISSION_START { //parachute_script: SCRIPT_NAME PARACH //GOSUB parachute_start // Variables for mission LVAR_INT parachute_pickup LVAR_FLOAT freefall_speed freefall_forward_speed parachute_speed parachute_decel_speed chute_open_forward_speed chute_open_glide_forward_speed LVAR_INT starts_in_air jumper_id //global VAR_FLOAT ai_target_x ai_target_y ai_target_z VAR_FLOAT para_anim_time VAR_INT has_freefall_started //temp float VAR_FLOAT tempf1 tempf2 tempf3 tempf4 tempf5 para_turny_rate //temp var VAR_INT tempv1 tempv2 tempv3 tempv4 //aio global VAR_FLOAT left_angle_check right_angle_check VAR_FLOAT para_vel_change //global - used by external script to know when player has landed VAR_INT ai_landed VAR_INT player_freefall VAR_FLOAT initial_y initial_z //camera shit VAR_FLOAT start_cam_z start_cam_y VAR_FLOAT para_cam_z_change para_cam_y_change VAR_FLOAT end_cam_z end_cam_y VAR_INT force_chute_open VAR_FLOAT para_give_speed para_give_heading //temp VAR_INT p_in_air VAR_FLOAT x_car_speed y_car_speed //objects LVAR_INT paraC parachute_pack // flags LVAR_INT get_models ai_action para_land parachute_State LVAR_INT para_turning_flag para_setup_cam freefall // stored Time LVAR_INT jump_start_time // one pass variables //5 left //ai shizzle LVAR_FLOAT ai_heading ai_target_heading ai_turn_rateF LVAR_INT ai_turn_rate random_change_time LVAR_FLOAT para_start_vel LVAR_FLOAT para_turn_angle para_turny_angle //stored cam position LVAR_FLOAT pr_heading LVAR_FLOAT cam_percent LVAR_FLOAT last_vert_speed LVAR_FLOAT para_height LVAR_INT code_check_time // parachute /*freefall_speed = -25.0 parachute_speed = -5.0 parachute_decel_speed = -2.0 chute_open_forward_speed = 5.0 chute_open_glide_forward_speed = 6.5 */ //LOAD_MISSION_TEXT STUPL parachute_start: has_freefall_started = 0 GENERATE_RANDOM_INT_IN_RANGE 0 6 code_check_time get_models = 10 freefall = 0 ai_action = 0 ai_landed = 0 IF ai_action = 100 CREATE_PICKUP BRIEFCASE PICKUP_ONCE 32.1527 2239.7258 125.6720 parachute_pickup CREATE_CHAR PEDTYPE_CIVMALE wmyplt 32.1527 2239.7258 125.6720 jumper_id ENDIF IF NOT IS_CHAR_DEAD jumper_id GET_CHAR_HEIGHT_ABOVE_GROUND jumper_id para_height ENDIF parachute_loop: WAIT 0 player_freefall = freefall IF ai_landed = 2 IF jumper_id = scplayer //set by external script. GOSUB mission_cleanup_parachute ENDIF ENDIF IF NOT parachute_pickup = -1 IF get_models = 10 IF NOT parachute_pickup = -1 IF HAS_PICKUP_BEEN_COLLECTED parachute_pickup get_models = 0 ENDIF ELSE get_models = 0 ENDIF ENDIF ENDIF IF parachute_pickup = -1 IF get_models = 10 get_models = 0 ENDIF ENDIF IF get_models = 0 REQUEST_ANIMATION PARACHUTE REQUEST_MODEL PARACHUTE REQUEST_MODEL para_pack get_models = 1 ENDIF IF get_models = 1 IF HAS_ANIMATION_LOADED PARACHUTE AND HAS_MODEL_LOADED PARACHUTE AND HAS_MODEL_LOADED para_pack get_models = 2 ENDIF ENDIF IF get_models = 2 IF NOT IS_CHAR_DEAD jumper_id GET_CHAR_COORDINATES jumper_id player_x player_y player_z ENDIF CREATE_OBJECT PARACHUTE player_x player_y player_z ParaC CREATE_OBJECT para_pack player_x player_y player_z parachute_pack // MARK_MODEL_AS_NO_LONGER_NEEDED PARACHUTE // MARK_MODEL_AS_NO_LONGER_NEEDED para_pack SET_OBJECT_VISIBLE parac FALSE IF NOT IS_CHAR_DEAD jumper_id ATTACH_OBJECT_TO_CHAR parac jumper_id 0.0 0.0 0.0 0.0 0.0 0.0 SET_OBJECT_ROTATION parachute_pack 90.0 90.0 90.0 // ATTACH_OBJECT_TO_CHAR parachute_pack jumper_id 0.0 0.0 0.0 0.0 0.0 0.0 TASK_PICK_UP_OBJECT jumper_id parachute_pack -0.11 -0.05 0.0 PED_TORSO HOLD_ORIENTATE_BONE_FULL NULL NULL 0 ENDIF get_models = 3 ENDIF IF get_models = 3 IF NOT IS_CHAR_DEAD jumper_id IF code_check_time = 0 GET_CHAR_HEIGHT_ABOVE_GROUND jumper_id para_height IF para_height < 5.0 code_check_time = 2 ELSE code_check_time = 5 ENDIF ENDIF code_check_time -- // para_height= 50.0 IF NOT jumper_id = scplayer GOSUB ai_jumper ENDIF IF IS_CHAR_IN_ANY_CAR jumper_id // GET_CAR_CHAR_IS_USING p_in_air = 1 ELSE p_in_air = 0 ENDIF //IF NOT IS_CHAR_IN_ANY_CAR jumper_id IF NOT IS_CHAR_DEAD jumper_id IF IS_CHAR_IN_AIR jumper_id OR p_in_air = 0 IF freefall = 0 AND parachute_State = 0 AND para_height > 5.0 IF p_in_air = 0 // CLEAR_CHAR_TASKS_IMMEDIATELY jumper_id SIN para_give_heading x_car_speed x_car_speed *= para_give_speed x_car_speed *= -1.0 COS para_give_heading y_car_speed y_car_speed *= para_give_speed GET_CHAR_VELOCITY jumper_id tempf1 tempf1 tempf1 SET_CHAR_VELOCITY jumper_id x_car_speed y_car_speed tempf1 ENDIF freefall = 1 has_freefall_started = 1 jump_start_time = TIMERA GET_CHAR_HEADING jumper_id pr_heading IF jumper_id = scplayer end_cam_z = 3.0 end_cam_Y = -2.0 para_setup_cam = 0 GOSUB setup_camera ENDIF IF starts_in_air = FALSE TASK_PLAY_ANIM_NON_INTERRUPTABLE jumper_id FALL_skydive PARACHUTE 1.0 1 0 0 0 -1 ELSE TASK_PLAY_ANIM_NON_INTERRUPTABLE jumper_id FALL_skydive PARACHUTE 1000.0 1 0 0 0 -1 ENDIF // ELSE // IF starts_in_air = FALSE // starts_in_air = TRUE // ENDIF ENDIF ENDIF ENDIF IF freefall = 1 IF IS_CHAR_IN_WATER jumper_id TASK_DIE_NAMED_ANIM jumper_id FALL_skydive_die PARACHUTE 1000.0 0 freefall = 2 ENDIF IF para_height < 3.0 TASK_DIE_NAMED_ANIM jumper_id FALL_skydive_die PARACHUTE 1000.0 0 freefall = 2 ENDIF GET_CHAR_VELOCITY jumper_id tempf1 tempf1 tempf2 IF tempf2 < freefall_speed tempf2 = freefall_speed ENDIF tempv1 = TIMERA - jump_start_time cam_percent =# tempv1 cam_percent /= 2000.0 IF cam_percent > 1.0 cam_percent = 1.0 ENDIF IF jumper_id = scplayer IF cam_percent <= 1.0 GOSUB cam_move ENDIF ENDIF IF cam_percent = 1.0 IF jumper_id = scplayer GET_POSITION_OF_ANALOGUE_STICKS PAD1 tempv1 tempv2 tempv3 tempv3 tempf4 =# tempv1 tempf4 /= 256.0 // para_turn_angle =# para_turn_angle += tempf4 tempf5 = para_turn_angle / 30.0 IF tempf5 < -1.6 tempf5 = -1.6 ENDIF IF tempf5 > 1.6 tempf5 = 1.6 ENDIF pr_heading -= tempf5 IF tempf4 = 0.0 IF NOT para_turn_angle = 0.0 para_turn_angle *= 0.95 ENDIF ENDIF tempf3 = para_turny_angle * 6.0 para_turny_rate =# tempv2 para_turny_rate -= tempf3 para_turny_rate /= 256.0 para_turny_angle += para_turny_rate IF para_turny_angle < -30.0 para_turny_angle = -30.0 ENDIF IF para_turny_angle > 30.0 para_turny_angle = 30.0 ENDIF IF para_turny_rate = 0.0 IF NOT para_turny_angle = 0.0 para_turny_angle *= 0.97 ENDIF ENDIF SIN pr_heading X COS pr_heading Y tempf4 = para_turny_angle / -5.0 X *= freefall_forward_speed X *= tempf4 X *= -1.0 Y *= freefall_forward_speed Y *= tempf4 GET_CHAR_VELOCITY jumper_id tempf3 tempf4 tempf1 X *= -1.0 X += tempf3 X *= 0.1 tempf3 -= X Y *= -1.0 Y += tempf4 Y *= 0.1 tempf4 -= Y SET_CHAR_VELOCITY jumper_id tempf3 tempf4 tempf2 // SET_CHAR_VELOCITY jumper_id X Y tempf2 // SET_CHAR_HEADING jumper_id heading SET_CHAR_ROTATION jumper_id para_turny_angle 0.0 pr_heading IF tempv2 < -100 IF NOT para_turning_flag = 4 para_turning_flag = 4 TASK_PLAY_ANIM_NON_INTERRUPTABLE jumper_id FALL_skydive_Accel PARACHUTE 1.0 1 0 0 1 -2 ENDIF ELSE IF tempv1 = 0 AND NOT para_turning_flag = 0 para_turning_flag = 0 TASK_PLAY_ANIM_NON_INTERRUPTABLE jumper_id FALL_skydive PARACHUTE 1.0 1 0 0 1 -2 ENDIF IF tempv1 < 0 AND NOT para_turning_flag = -1 para_turning_flag = -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE jumper_id FALL_skydive_L PARACHUTE 1.0 1 0 0 1 -2 ENDIF IF tempv1 > 0 AND NOT para_turning_flag = 1 para_turning_flag = 1 TASK_PLAY_ANIM_NON_INTERRUPTABLE jumper_id FALL_skydive_R PARACHUTE 1.0 1 0 0 1 -2 ENDIF ENDIF ELSE SET_CHAR_VELOCITY jumper_id 0.0 0.0 freefall_speed ENDIF ENDIF IF IS_WIDGET_RELEASED WIDGET_PARACHUTE OR IS_WIDGET_DOUBLETAPPED WIDGET_LOOK OR force_chute_open = 1 IF NOT force_chute_open = 2 IF jumper_id = scplayer freefall = 0 para_turning_flag = 0 parachute_state = 1 SET_OBJECT_VISIBLE parac TRUE WAIT 0 IF NOT IS_CHAR_DEAD jumper_id TASK_PLAY_ANIM_NON_INTERRUPTABLE jumper_id PARA_open PARACHUTE 1000.0 0 0 0 1 -2 PLAY_OBJECT_ANIM parac para_open_o PARACHUTE 1000.0 0 1 //setup camera GET_CHAR_VELOCITY jumper_id tempf1 tempf1 para_start_vel para_vel_change = para_start_vel + 5.0 ENDIF ENDIF ENDIF ENDIF IF ai_action = 1 AND NOT jumper_id = scplayer freefall = 0 para_turning_flag = 0 parachute_state = 1 SET_OBJECT_VISIBLE parac TRUE WAIT 0 IF NOT IS_CHAR_DEAD jumper_id TASK_PLAY_ANIM_NON_INTERRUPTABLE jumper_id PARA_open PARACHUTE 1000.0 0 0 0 1 -2 PLAY_OBJECT_ANIM parac para_open_o PARACHUTE 1000.0 0 1 //setup camera GET_CHAR_VELOCITY jumper_id tempf1 tempf1 para_start_vel para_vel_change = para_start_vel + 5.0 ENDIF ENDIF ENDIF IF parachute_state = 1 IF NOT IS_CHAR_DEAD jumper_id IF IS_CHAR_PLAYING_ANIM jumper_id PARA_open GET_CHAR_ANIM_CURRENT_TIME jumper_id PARA_open para_anim_time GET_CHAR_COORDINATES jumper_id player_x player_y player_z para_anim_time *= 2.0 para_anim_time -= 0.5 IF para_anim_time > 1.0 para_anim_time = 1.0 ENDIF IF para_anim_time < 0.0 para_anim_time = 0.0 ENDIF IF para_anim_time <= 0.25 AND jumper_id = scplayer end_cam_z = -2.0 end_cam_y = -2.0 cam_percent = para_anim_time * 4.0 IF para_setup_cam = 1 para_setup_cam = 2 GOSUB setup_camera ENDIF GOSUB cam_move ENDIF IF para_anim_time > 0.25 AND jumper_id = scplayer end_cam_z = 5.0 end_cam_y = -5.0 cam_percent = para_anim_time - 0.25 cam_percent *= 1.333 IF para_setup_cam = 2 para_setup_cam = 3 GOSUB setup_camera ENDIF GOSUB cam_move ENDIF tempf1 = para_vel_change * para_anim_time tempf1 *= -1.0 tempf1 += para_start_vel GET_CHAR_VELOCITY jumper_id tempf3 tempf4 tempf2 SIN pr_heading X COS pr_heading Y X *= chute_open_forward_speed X *= -1.0 Y *= chute_open_forward_speed X *= -1.0 X += tempf3 X *= 0.01 tempf3 -= X Y *= -1.0 Y += tempf4 Y *= 0.01 tempf4 -= Y SET_CHAR_VELOCITY jumper_id tempf3 tempf4 tempf1 IF para_anim_time = 1.0 TASK_PLAY_ANIM_NON_INTERRUPTABLE jumper_id PARA_float PARACHUTE 2.0 1 0 0 1 -2 PLAY_OBJECT_ANIM parac para_float_o PARACHUTE 2.0 1 1 parachute_state = 2 last_vert_speed = tempf1 // para_turnx_rate = 0.0 // tempf5 = 0.0 // para_turny_rate = 0.0 para_turn_angle = 0.0 ENDIF ENDIF ENDIF IF para_height < 3.0 parachute_state = 3 ENDIF ENDIF IF parachute_state = 2 IF NOT para_land = 5 AND IS_CHAR_IN_WATER jumper_id para_land = 4 ENDIF IF para_land = 0 SIN pr_heading X COS pr_heading Y tempv3 = 0 tempv4 = 0 IF jumper_id = scplayer GET_POSITION_OF_ANALOGUE_STICKS PAD1 tempv1 tempv2 tempv3 tempv4 ELSE tempv1 = ai_turn_rate tempv2 = 0 tempv3 = 0 ENDIF IF NOT tempv3 = 0 AND NOT tempv4 = 0 // RESTORE_CAMERA_JUMPCUT ENDIF IF tempv2 > 100 OR ai_action = 2 X *= chute_open_glide_forward_speed X *= -1.0 Y *= chute_open_glide_forward_speed ELSE X *= chute_open_forward_speed X *= -1.0 Y *= chute_open_forward_speed ENDIF tempv4 = tempv2 // VIEW_INTEGER_VARIABLE tempv4 tempv4 SET_CHAR_ROTATION jumper_id 0.0 para_turn_angle pr_heading IF para_height > 3.0 para_turny_rate =# tempv1 para_turny_rate /= 128.0 // para_turn_angle =# para_turn_angle += para_turny_rate IF para_turn_angle > 45.0 para_turn_angle = 45.0 ENDIF IF para_turn_angle < -45.0 para_turn_angle = -45.0 ENDIF tempf5 = para_turn_angle / 15.0 pr_heading -= tempf5 IF para_turny_rate = 0.0 IF NOT para_turn_angle = 0.0 para_turn_angle *= 0.95 ENDIF ENDIF SET_CHAR_ROTATION jumper_id 0.0 para_turn_angle pr_heading IF tempv2 > 100 OR ai_action = 2 Z = parachute_decel_speed IF NOT para_turning_flag = 4 para_turning_flag = 4 TASK_PLAY_ANIM_NON_INTERRUPTABLE jumper_id PARA_decel PARACHUTE 1.0 1 0 0 1 -2 PLAY_OBJECT_ANIM parac para_decel_o PARACHUTE 1.0 1 1 ENDIF ELSE Z = parachute_speed IF para_turny_rate = 0.0 AND NOT para_turning_flag = 0 para_turning_flag = 0 TASK_PLAY_ANIM_NON_INTERRUPTABLE jumper_id PARA_float PARACHUTE 1.0 1 0 0 1 -2 PLAY_OBJECT_ANIM parac para_float_o PARACHUTE 1.0 1 1 ENDIF IF para_turny_rate < 0.0 AND NOT para_turning_flag = -1 para_turning_flag = -1 TASK_PLAY_ANIM_NON_INTERRUPTABLE jumper_id PARA_steerL PARACHUTE 1.0 1 0 0 1 -2 PLAY_OBJECT_ANIM parac para_steerL_o PARACHUTE 1.0 1 1 ENDIF IF para_turny_rate > 0.0 AND NOT para_turning_flag = 1 para_turning_flag = 1 TASK_PLAY_ANIM_NON_INTERRUPTABLE jumper_id PARA_steerR PARACHUTE 1.0 1 0 0 1 -2 PLAY_OBJECT_ANIM parac para_steerR_o PARACHUTE 1.0 1 1 ENDIF ENDIF ENDIF GET_CHAR_VELOCITY jumper_id tempf3 tempf4 tempf1 X *= -1.0 X += tempf3 X *= 0.1 tempf3 -= X Y *= -1.0 Y += tempf4 Y *= 0.1 tempf4 -= Y Z *= -1.0 Z += last_vert_speed Z *= 0.2 tempf1 = last_vert_speed - Z // Z += tempf1 // Z *= 0.35 // tempf1 -= Z last_vert_speed = tempf1 SET_CHAR_VELOCITY jumper_id tempf3 tempf4 tempf1 tempf3 *= tempf3 tempf4 *= tempf4 tempf5 = tempf3 + tempf4 SQRT tempf5 tempf5 // SET_CHAR_VELOCITY jumper_id X Y Z // not set so vert decel speed works. need to fix ENDIF IF para_height < 3.0 SET_CHAR_HEADING jumper_id pr_heading para_turn_angle = 0.0 SIN pr_heading X COS pr_heading Y X *= chute_open_glide_forward_speed X *= -1.0 Y *= chute_open_glide_forward_speed SET_CHAR_VELOCITY jumper_id X Y -2.0 IF para_land = 0 para_land = 1 TASK_PLAY_ANIM_NON_INTERRUPTABLE jumper_id PARA_decel PARACHUTE 4.0 1 0 0 1 -2 PLAY_OBJECT_ANIM parac para_decel_o PARACHUTE 4.0 1 1 // GET_CHAR_HEADING jumper_id heading IF jumper_id = scplayer end_cam_z = initial_z end_cam_Y = initial_y GOSUB setup_camera ENDIF ENDIF IF para_land = 1 AND jumper_id = scplayer cam_percent = 3.0 - para_height cam_percent *= 0.75 IF cam_percent > 1.0 cam_percent = 1.0 ENDIF GOSUB cam_move ENDIF ENDIF IF para_height < 1.5 AND para_land = 1 para_land = 2 TASK_PLAY_ANIM_NON_INTERRUPTABLE jumper_id PARA_land PARACHUTE 1000.0 0 1 0 1 -2 PLAY_OBJECT_ANIM parac para_land_o PARACHUTE 1000.0 0 1 ENDIF IF para_land = 2 IF IS_CHAR_PLAYING_ANIM jumper_id PARA_land GET_CHAR_ANIM_CURRENT_TIME jumper_id PARA_land para_anim_time IF para_anim_time = 1.0 // FREEZE_OBJECT_POSITION parac TRUE // DETACH_OBJECT parac 0.0 0.0 0.0 0 DELETE_OBJECT parac DELETE_OBJECT parachute_pack GET_DEAD_CHAR_PICKUP_COORDS jumper_id player_x player_y player_z IF NOT parachute_pickup = -1 REMOVE_PICKUP parachute_Pickup ENDIF TASK_PAUSE jumper_id 1 CLEAR_CHAR_TASKS_IMMEDIATELY jumper_id parachute_state = 3 SET_CHAR_ROTATION jumper_id 0.0 0.0 0.0 SET_CHAR_HEADING jumper_id pr_heading // SET_CAMERA_BEHIND_PLAYER GET_CHAR_COORDINATES jumper_id player_x player_y player_z // RESTORE_CAMERA_JUMPCUT IF jumper_id = scplayer ai_landed = 1 ENDIF IF flag_player_on_mission = 1 GOSUB mission_cleanup_parachute ENDIF parachute_pickup = 0 CREATE_PICKUP BRIEFCASE PICKUP_ONCE player_x player_y player_z parachute_pickup para_land= 3 ENDIF ENDIF ENDIF IF para_land = 4 // player lands in water TASK_PLAY_ANIM_NON_INTERRUPTABLE jumper_id PARA_land_water PARACHUTE 1000.0 0 1 0 1 -2 PLAY_OBJECT_ANIM parac para_land_water_O PARACHUTE 1.0 0 1 para_land = 5 para_anim_time = 0.0 ENDIF IF para_land = 5 IF IS_CHAR_PLAYING_ANIM jumper_id PARA_land_water GET_CHAR_ANIM_CURRENT_TIME jumper_id PARA_land_water para_anim_time ENDIF IF para_anim_time = 1.0 IF jumper_id = scplayer ai_landed = 1 ENDIF DELETE_OBJECT parac DELETE_OBJECT parachute_pack para_land= 3 TASK_PAUSE jumper_id 1 CLEAR_CHAR_TASKS_IMMEDIATELY jumper_id parachute_state = 3 SET_CHAR_ROTATION jumper_id 0.0 0.0 0.0 SET_CHAR_HEADING jumper_id pr_heading // SET_CAMERA_BEHIND_PLAYER GET_CHAR_COORDINATES jumper_id player_x player_y player_z // RESTORE_CAMERA_JUMPCUT ENDIF ENDIF ENDIF IF parachute_state = 3 AND para_land = 0 PLAY_OBJECT_ANIM parac para_land_o PARACHUTE 1.0 0 1 TASK_DIE_NAMED_ANIM jumper_id FALL_skydive_die PARACHUTE 1000.0 0 para_land = 1 ENDIF IF parachute_state = 3 IF HAS_PICKUP_BEEN_COLLECTED parachute_pickup get_models = 10 freefall = 0 parachute_state = 0 starts_in_air = FALSE para_land = 0 ENDIF IF NOT LOCATE_CHAR_ANY_MEANS_3D jumper_id player_x player_y player_z 50.0 50.0 50.0 FALSE GOTO mission_cleanup_parachute ENDIF ENDIF ENDIF ENDIF //IF flag_player_on_mission = 0 IF IS_CHAR_DEAD jumper_id GOTO mission_cleanup_parachute ENDIF GOTO parachute_loop setup_camera: GET_ACTIVE_CAMERA_COORDINATES X Y Z GET_CHAR_COORDINATES jumper_id player_x player_y player_z tempf3 = player_x - X tempf4 = player_y - Y start_cam_Z = Z - player_z tempf1 = tempf3 * tempf3 tempf2 = tempf4 * tempf4 start_cam_Y = tempf1 + tempf2 start_cam_Y *= -1.0 SQRT start_cam_Y start_cam_Y para_cam_z_change = end_cam_Z - start_cam_Z start_cam_Y *= -1.0 para_cam_y_change = end_cam_Y - start_cam_Y IF para_setup_cam = 0 para_setup_cam = 1 initial_y = start_cam_Y initial_z = start_cam_Z ENDIF // heading = 0.0 RETURN cam_move: GET_CHAR_COORDINATES jumper_id player_x player_y player_z tempf3 = cam_percent * 180.0 COS tempf3 tempf3 tempf3 -= 1.0 tempf3 *= -0.5 Z = para_cam_z_change * tempf3 Z += start_cam_Z Y = para_cam_y_change * tempf3 Y += start_cam_Y // ATTACH_CAMERA_TO_CHAR jumper_id 0.0 Y Z 0.0 0.0 0.5 0.0 JUMP_CUT RETURN // ************************************ MISSION CLEANUP ************************************ // mission cleanup mission_cleanup_parachute: REMOVE_ANIMATION PARACHUTE MARK_MODEL_AS_NO_LONGER_NEEDED PARACHUTE MARK_MODEL_AS_NO_LONGER_NEEDED para_pack //RESTORE_CAMERA_JUMPCUT IF NOT parachute_pickup = -1 REMOVE_PICKUP parachute_Pickup ENDIF DELETE_OBJECT ParaC DELETE_OBJECT parachute_pack IF jumper_id = scplayer force_chute_open = 0 ENDIF TERMINATE_THIS_SCRIPT //REMOVE_BLIP finish_blip_ps //CLEAR_ONSCREEN_COUNTER //MARK_MODEL_AS_NO_LONGER_NEEDED VCNMAV RETURN ai_jumper: GET_CHAR_COORDINATES jumper_id player_x player_y player_z X = ai_target_x - player_x Y = ai_target_y - player_y Z = player_z - ai_target_z IF freefall = 1 X *= X Y *= Y X += Y SQRT X X tempf1 = Z / X tempf2 = parachute_speed / chute_open_forward_speed tempf2 *= -1.2 IF tempf1 < tempf2 ai_action = 1 ENDIF ENDIF IF parachute_state = 2 GET_HEADING_FROM_VECTOR_2D X Y ai_target_heading GET_CHAR_HEADING jumper_id ai_heading parachute_speed -= 1.0 parachute_decel_speed -= 1.0 ai_turn_rateF = ai_target_heading - ai_heading IF TIMERA > random_change_time random_change_time = TIMERA + 3000 GENERATE_RANDOM_FLOAT_IN_RANGE -20.0 0.0 left_angle_check GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 20.0 right_angle_check X *= X Y *= Y X += Y SQRT X X tempf2 = X / chute_open_forward_speed tempf1 = Z / tempf2 // ideal rate of descent = ( parachute_speed + parachute_decel_speed ) / 2 tempf2 = parachute_speed + parachute_decel_speed tempf2 /= 2.0 tempf3 = parachute_speed - parachute_decel_speed tempf3 /= 4.0 tempf3 += tempf2 tempf4 = parachute_speed - parachute_decel_speed tempf4 /= -4.0 tempf4 += tempf2 tempf3 *= -1.0 tempf4 *= -1.0 IF tempf1 < tempf3 AND tempf1 > tempf4 GENERATE_RANDOM_INT_IN_RANGE 0 2 tempv1 IF tempv1 = 0 ai_action = 2 ENDIF IF tempv1 = 1 ai_action = 0 ENDIF ENDIF IF tempf1 >= tempf3 ai_action = 0 ENDIF IF tempf1 <= tempf4 ai_action = 2 ENDIF ENDIF IF ai_turn_rateF < left_angle_check OR ai_turn_rateF > right_angle_check IF ai_turn_rateF < -180.0 ai_turn_rateF += 360.0 ENDIF IF ai_turn_rateF > 180.0 ai_turn_rateF -= 360.0 ENDIF ai_turn_rateF /= 180.0 IF ai_turn_rateF > 1.0 ai_turn_rateF = 1.0 ENDIF IF ai_turn_rateF < -1.0 ai_turn_rateF = -1.0 ENDIF ai_turn_rateF *= -128.0 ai_turn_rate =# ai_turn_rateF ELSE ai_turn_rate = 0 ENDIF // tempf3 /= 2.0 // tempf3 += parachute_decel_speed // // GENERATE_RANDOM_FLOAT_IN_RANGE tempf3 tempf2 ai_prop_low_check // // tempf3 = parachute_speed - parachute_decel_speed // tempf3 /= 2.0 // tempf3 += tempf2 // // // GENERATE_RANDOM_FLOAT_IN_RANGE tempf2 tempf3 ai_prop_high_check // // // // IF tempf1 < ai_prop_low_check // ai_action = 2 // ENDIF // // IF tempf1 > ai_prop_high_check // ai_action = 0 // ENDIF parachute_speed += 1.0 parachute_decel_speed += 1.0 ENDIF RETURN MISSION_END } MISSION_START // ------------------------------------------------------------------------------------------------ // Badlands Cesar Mission 2: Big Smoke's Cash { cash_courier_loop: SCRIPT_NAME bcesar2 // Begin... // if this script has been triggered on the wrong day then quit out. IF weekday = 1 OR weekday = 3 OR weekday = 5 GOTO mission_cleanup_bce2 ENDIF // if the crack factory has been destroyed, this mission shouldn't be running IF flag_Synd_mission_counter >= 10 GOTO mission_cleanup_bce2 ENDIF GOSUB check_player_is_safe_for_mobile IF player_is_completely_safe_for_mobile = 0 GOTO mission_cleanup_bce2 ENDIF SET_DEATHARREST_STATE OFF IF flag_bce2_passed_1stime = 0 REGISTER_MISSION_GIVEN ENDIF bcesar2_mission_flag = 1 flag_on_courier_mission = 1 WAIT 0 // ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------ // Cash Courier // ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------ // Cash Courier Variables // ---- Flags LVAR_INT bce2_current bce2_next bce2_blipped LVAR_INT bce2_crate_check bce2_ram_text bce2_task_status[3] bce2_drive_status // ---- Blips VAR_INT bce2_crate_blip[6] // ---- Timers / Counters LVAR_INT bce2_final_dest bce2_route bce2_route_nx VAR_INT bce2_random bce2_response LVAR_INT bce2_crate_start bce2_crate_end bce2_crate_diff LVAR_INT bce2_timer // ---- Coords //LVAR_FLOAT bce2_route_x[117] bce2_route_z[117] bce2_route_y[117] VAR_FLOAT bce2_track_x bce2_track_y bce2_track_z LVAR_FLOAT bce2_player_x bce2_player_y bce2_player_z // ---- Cameras // ---- Objects VAR_INT bce2_crate[6] bce2_crate_status[6] VAR_FLOAT bce2_random_rot VAR_FLOAT bce2_crate_x[6] bce2_crate_y[6] bce2_crate_z[6] // ---- Groups VAR_TEXT_LABEL bce2_text[12] VAR_INT bce2_audio[12] VAR_INT bce2_text_timer_diff bce2_text_timer_end bce2_text_timer_start VAR_INT bce2_audio_playing bce2_counter bce2_mobile bce2_ahead_counter bce2_audio_slot bce2_alt_slot // ---- Entities LVAR_INT bce2_courier_car_health bce2_courier_car_health_hit LVAR_INT bce2_earnings bce2_player_car bce2_in_car bce2_player_status // ------------------------------------------------------------------------------------------------ // -------- Vehicles // ------------ Courier Car // ------------------------------------------------------------------------------------------------ // Initialize Variables // ---- Flags bce2_current = 0 bce2_next = 5 bce2_earnings = 0 bce2_crate_check = 0 bce2_ram_text = 0 bce2_in_car = 0 bce2_audio_playing = 0 bce2_counter = 0 bce2_ahead_counter = 1 bce2_mobile = 0 bce2_audio_slot = 1 bce2_alt_slot = 2 bce2_response = 0 // bce2_random = 2 //bce2_played = 2 // ---- Sequence Flags // ---- Objects bce2_crate_status[0] = 0 bce2_crate_status[1] = 0 bce2_crate_status[2] = 0 bce2_crate_status[3] = 0 bce2_crate_status[4] = 0 bce2_crate_status[5] = 0 bce2_crate_blip[0] = 0 bce2_crate_blip[1] = 0 bce2_crate_blip[2] = 0 bce2_crate_blip[3] = 0 bce2_crate_blip[4] = 0 bce2_crate_blip[5] = 0 // ---- Counter Var bce2_route = 0 bce2_route_nx = 1 // ---- Coords // ---- Camera Coords // ---- Entity bce2_courier_car_health = 1000 bce2_cruise_speed = 40.0 // bce2_courier_create: GENERATE_RANDOM_INT_IN_RANGE 0 2 bce2_random IF bce2_random = 0 bce2_final_dest = 114 ENDIF IF bce2_random = 1 bce2_final_dest = 96 ENDIF IF bce2_random = 2 bce2_final_dest = 115 ENDIF IF bce2_random = 0 bce2_track_x = bce2_route1_x[0] bce2_track_y = bce2_route1_y[0] bce2_track_z = bce2_route1_z[0] ELSE IF bce2_random = 1 bce2_track_x = bce2_route2_x[0] bce2_track_y = bce2_route2_y[0] bce2_track_z = bce2_route2_z[0] ELSE bce2_track_x = bce2_route3_x[0] bce2_track_y = bce2_route3_y[0] bce2_track_z = bce2_route3_z[0] ENDIF ENDIF LVAR_INT bce2_courier bce2_courier_car bce2_courier_car_blip LVAR_INT bce2_goon[3] LVAR_FLOAT bce2_cruise_speed REQUEST_MODEL fam3 REQUEST_MODEL PATRIOT REQUEST_MODEL micro_uzi REQUEST_MODEL CELLPHONE WHILE NOT HAS_MODEL_LOADED fam3 OR NOT HAS_MODEL_LOADED PATRIOT OR NOT HAS_MODEL_LOADED micro_uzi OR NOT HAS_MODEL_LOADED CELLPHONE WAIT 0 ENDWHILE SET_CAR_MODEL_COMPONENTS PATRIOT 2 2 CUSTOM_PLATE_FOR_NEXT_CAR PATRIOT &_ASSMAN_ CREATE_CAR PATRIOT bce2_track_x bce2_track_y bce2_track_z bce2_courier_car SET_LOAD_COLLISION_FOR_CAR_FLAG bce2_courier_car FALSE CREATE_CHAR_INSIDE_CAR bce2_courier_car PEDTYPE_CIVMALE fam3 bce2_courier SET_CHAR_SUFFERS_CRITICAL_HITS bce2_courier FALSE SET_CHAR_PROOFS bce2_courier TRUE TRUE TRUE FALSE TRUE SET_CAR_PROOFS bce2_courier_car TRUE TRUE TRUE FALSE TRUE SET_CAR_CRUISE_SPEED bce2_courier_car 40.0 ADD_STUCK_CAR_CHECK_WITH_WARP bce2_courier_car 2.0 2000 TRUE TRUE TRUE 2 LOCK_CAR_DOORS bce2_courier_car CARLOCK_LOCKOUT_PLAYER_ONLY TASK_CAR_DRIVE_TO_COORD bce2_courier bce2_courier_car bce2_route1_x[bce2_route] bce2_route1_y[bce2_route] bce2_route1_z[bce2_route] bce2_cruise_speed MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ADD_BLIP_FOR_CAR bce2_courier_car bce2_courier_car_blip SET_CAR_ONLY_DAMAGED_BY_PLAYER bce2_courier_car TRUE IF bce2_played > 0 CREATE_CHAR_AS_PASSENGER bce2_courier_car PEDTYPE_CIVMALE fam3 0 bce2_goon[0] GIVE_WEAPON_TO_CHAR bce2_goon[0] WEAPONTYPE_MICRO_UZI 16000 SET_CURRENT_CHAR_WEAPON bce2_goon[0] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY bce2_goon[0] 90 IF bce2_played > 1 CREATE_CHAR_AS_PASSENGER bce2_courier_car PEDTYPE_CIVMALE fam3 1 bce2_goon[1] GIVE_WEAPON_TO_CHAR bce2_goon[1] WEAPONTYPE_MICRO_UZI 16000 SET_CURRENT_CHAR_WEAPON bce2_goon[1] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY bce2_goon[1] 90 IF bce2_played > 2 CREATE_CHAR_AS_PASSENGER bce2_courier_car PEDTYPE_CIVMALE fam3 2 bce2_goon[2] GIVE_WEAPON_TO_CHAR bce2_goon[2] WEAPONTYPE_MICRO_UZI 16000 SET_CURRENT_CHAR_WEAPON bce2_goon[2] WEAPONTYPE_MICRO_UZI SET_CHAR_ACCURACY bce2_goon[2] 90 ENDIF ENDIF ENDIF IF bce2_route = 0 TURN_CAR_TO_FACE_COORD bce2_courier_car bce2_route1_x[bce2_route_nx] bce2_route1_y[bce2_route_nx] ELSE TURN_CAR_TO_FACE_COORD bce2_courier_car bce2_route1_x[bce2_route] bce2_route1_y[bce2_route] ENDIF // ---- Crate offsets... bce2_crate_x[0] = -0.65 bce2_crate_y[0] = -2.307 bce2_crate_z[0] = 0.26 bce2_crate_x[1] = -0.047 bce2_crate_y[1] = -2.307 bce2_crate_z[1] = 0.26 bce2_crate_x[2] = 0.554 bce2_crate_y[2] = -2.307 bce2_crate_z[2] = 0.26 bce2_crate_x[3] = 0.554 bce2_crate_y[3] = -1.808 bce2_crate_z[3] = 0.26 bce2_crate_x[4] = -0.65 bce2_crate_y[4] = -1.808 bce2_crate_z[4] = 0.26 bce2_crate_x[5] = -0.047 bce2_crate_y[5] = -1.808 bce2_crate_z[5] = 0.26 WHILE NOT bce2_current = 6 WAIT 0 IF NOT IS_CAR_DEAD bce2_courier_car IF bce2_crate_status[bce2_current] = 0 GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 19.9 bce2_random_rot IF bce2_random_rot < 20.0 AND bce2_random_rot > 10.0 bce2_random_rot += 340.0 ENDIF CREATE_OBJECT CM_BOX bce2_crate_x[bce2_current] bce2_crate_y[bce2_current] bce2_crate_z[bce2_current] bce2_crate[bce2_current] ATTACH_OBJECT_TO_CAR bce2_crate[bce2_current] bce2_courier_car bce2_crate_x[bce2_current] bce2_crate_y[bce2_current] bce2_crate_z[bce2_current] 0.0 0.0 0.0 ROTATE_OBJECT bce2_crate[bce2_current] bce2_random_rot bce2_random_rot TRUE SET_OBJECT_COLLISION bce2_crate[bce2_current] FALSE SET_OBJECT_DYNAMIC bce2_crate[bce2_current] FALSE ENDIF bce2_current ++ ENDIF ENDWHILE GET_GAME_TIMER bce2_crate_start // -------- Characters // -------- // ------------------------------------------------------------------------------------------------ // Start Mission mission_start_bce2: DISPLAY_RADAR 5 // PATHING IGNORE SWITCHED OFF WAIT 0 IF IS_PLAYER_PLAYING player1 SET_PLAYER_GROUP_RECRUITMENT player1 FALSE ENDIF // ------------------------------------------------------------------------------------------------ // Request Models // ------------------------------------------------------------------------------------------------ // Entity GoSubs // ------------------------------------------------------------------------------------------------ // Task Sequences $bce2_text[1] = MCES07A // Yo. $bce2_text[2] = MCES07B // The cash is leaving Los Santos again. $bce2_text[3] = MCES07C // Ok, I'm on it! $bce2_text[4] = MCES06A // Yo, Cesar, whattup? $bce2_text[5] = MCES06B // I got the low-down on Smoke's yay! $bce2_text[6] = MCES06C // Word is, every Monday and Friday the cash leaves Los Santos for San Fierro. $bce2_text[7] = MCES06D // Then every Wednesday and Saturday a courier takes the yay back to Big Smoke. $bce2_text[8] = MCES06E // Ok, I'll keep an eye out for them. $bce2_text[9] = MCES06F // See if I can't spoil the party. $bce2_text[10] = MCES06G // Later, dude. $bce2_text[11] = MCES07D bce2_audio[1] = SOUND_MCES07A // Yo. bce2_audio[2] = SOUND_MCES07B // The cash is leaving Los Santos again. bce2_audio[3] = SOUND_MCES07C // Ok, I'm on it! bce2_audio[4] = SOUND_MCES06A // Yo, Cesar, whattup? bce2_audio[5] = SOUND_MCES06B // I got the low-down on Smoke's yay! bce2_audio[6] = SOUND_MCES06C // Word is, every Monday and Friday the cash leaves Los Santos for San Fierro. bce2_audio[7] = SOUND_MCES06D // Then every Wednesday and Saturday a courier takes the yay back to Big Smoke. bce2_audio[8] = SOUND_MCES06E // Ok, I'll keep an eye out for them. bce2_audio[9] = SOUND_MCES06F // See if I can't spoil the party. bce2_audio[10] = SOUND_MCES06G // Later, dude. bce2_audio[11] = SOUND_MCES07D // ------------------------------------------------------------------------------------------------ // Initialise Route //GOSUB bce2_courier_create REQUEST_MODEL CELLPHONE LOAD_ALL_MODELS_NOW LOAD_MISSION_AUDIO 3 SOUND_PED_MOBRING WHILE NOT HAS_MODEL_LOADED CELLPHONE OR NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE GOSUB check_player_is_safe_for_mobile IF player_is_completely_safe_for_mobile = 0 GOTO mission_cleanup_bce2 ENDIF TASK_USE_MOBILE_PHONE scplayer TRUE PLAY_MISSION_AUDIO 3 WAIT 2000 CLEAR_MISSION_AUDIO 3 bce2_mobile_loop: WAIT 0 // ---- Load & Play Dialogue... IF NOT bce2_counter = 0 IF bce2_audio_playing = 0 IF HAS_MISSION_AUDIO_LOADED bce2_alt_slot CLEAR_MISSION_AUDIO bce2_alt_slot ENDIF bce2_audio_playing = 1 ENDIF IF bce2_audio_playing = 1 LOAD_MISSION_AUDIO bce2_audio_slot bce2_audio[bce2_counter] bce2_audio_playing = 2 ENDIF IF bce2_audio_playing = 2 IF HAS_MISSION_AUDIO_LOADED bce2_audio_slot PLAY_MISSION_AUDIO bce2_audio_slot PRINT_NOW $bce2_text[bce2_counter] 10000 1 bce2_audio_playing = 3 ENDIF ENDIF IF bce2_audio_playing = 3 IF HAS_MISSION_AUDIO_FINISHED bce2_audio_slot CLEAR_THIS_PRINT $bce2_text[bce2_counter] IF bce2_audio_slot = 1 bce2_audio_slot = 2 bce2_alt_slot = 1 ELSE bce2_audio_slot = 1 bce2_alt_slot = 2 ENDIF bce2_counter = 0 bce2_audio_playing = 0 ELSE IF NOT HAS_MISSION_AUDIO_LOADED bce2_alt_slot IF bce2_counter < 10 bce2_ahead_counter = bce2_counter + 1 LOAD_MISSION_AUDIO bce2_alt_slot bce2_audio[bce2_ahead_counter] ENDIF ENDIF ENDIF ENDIF ENDIF IF bce2_played > 0 IF bce2_mobile = 0 IF bce2_audio_playing = 0 bce2_counter = 1 // Yo. bce2_mobile = 1 GET_GAME_TIMER bce2_text_timer_start ENDIF ENDIF IF bce2_mobile = 1 GET_GAME_TIMER bce2_text_timer_end bce2_text_timer_diff = bce2_text_timer_end - bce2_text_timer_start IF bce2_text_timer_diff > 1000 IF bce2_audio_playing = 0 bce2_counter = 2 // The cash is leaving Los Santos again. bce2_mobile = 2 bce2_response = 0 GET_GAME_TIMER bce2_text_timer_start CLEAR_HELP PRINT_HELP_FOREVER TALK_1 ENDIF ENDIF ENDIF IF bce2_mobile = 2 //fuck you fuck you fuck you IS_WIDGET_RELEASED WIDGET_GANG_REGION IF IS_WIDGET_RELEASED WIDGET_NEGATIVE CLEAR_HELP bce2_response = 2 ENDIF IF IS_WIDGET_RELEASED WIDGET_POSITIVE CLEAR_HELP bce2_response = 1 ENDIF ENDIF IF bce2_response = 1 IF bce2_mobile = 2 GET_GAME_TIMER bce2_text_timer_end bce2_text_timer_diff = bce2_text_timer_end - bce2_text_timer_start IF bce2_text_timer_diff > 1000 IF bce2_audio_playing = 0 bce2_counter = 3 // Ok, I'm on it! bce2_mobile = 7 GET_GAME_TIMER bce2_text_timer_start ENDIF ENDIF ENDIF ENDIF IF bce2_response = 2 IF bce2_mobile = 2 GET_GAME_TIMER bce2_text_timer_end bce2_text_timer_diff = bce2_text_timer_end - bce2_text_timer_start IF bce2_text_timer_diff > 1000 IF bce2_audio_playing = 0 bce2_counter = 11 // Ok, I'm on it! bce2_mobile = 7 GET_GAME_TIMER bce2_text_timer_start ENDIF ENDIF ENDIF ENDIF ELSE IF bce2_mobile = 0 IF bce2_audio_playing = 0 bce2_counter = 4 // Yo, Cesar, whattup? bce2_mobile = 1 GET_GAME_TIMER bce2_text_timer_start ENDIF ENDIF IF bce2_mobile = 1 GET_GAME_TIMER bce2_text_timer_end bce2_text_timer_diff = bce2_text_timer_end - bce2_text_timer_start IF bce2_text_timer_diff > 1000 IF bce2_audio_playing = 0 bce2_counter = 5 // I got the low-down on Smoke's yay! bce2_mobile = 2 GET_GAME_TIMER bce2_text_timer_start ENDIF ENDIF ENDIF IF bce2_mobile = 2 GET_GAME_TIMER bce2_text_timer_end bce2_text_timer_diff = bce2_text_timer_end - bce2_text_timer_start IF bce2_text_timer_diff > 1000 IF bce2_audio_playing = 0 bce2_counter = 6 // Word is, every Monday and Friday the cash leaves Los Santos for San Fierro. bce2_mobile = 3 GET_GAME_TIMER bce2_text_timer_start ENDIF ENDIF ENDIF IF bce2_mobile = 3 GET_GAME_TIMER bce2_text_timer_end bce2_text_timer_diff = bce2_text_timer_end - bce2_text_timer_start IF bce2_text_timer_diff > 1000 IF bce2_audio_playing = 0 bce2_counter = 7 // Then every Wednesday and Saturday a courier takes the yay back to Big Smoke. bce2_mobile = 4 GET_GAME_TIMER bce2_text_timer_start ENDIF ENDIF ENDIF IF bce2_mobile = 4 GET_GAME_TIMER bce2_text_timer_end bce2_text_timer_diff = bce2_text_timer_end - bce2_text_timer_start IF bce2_text_timer_diff > 1000 IF bce2_audio_playing = 0 bce2_counter = 8 // Ok, I'll keep an eye out for them. bce2_mobile = 5 GET_GAME_TIMER bce2_text_timer_start ENDIF ENDIF ENDIF IF bce2_mobile = 5 GET_GAME_TIMER bce2_text_timer_end bce2_text_timer_diff = bce2_text_timer_end - bce2_text_timer_start IF bce2_text_timer_diff > 1000 IF bce2_audio_playing = 0 bce2_counter = 9 // See if I can't spoil the party. bce2_mobile = 6 GET_GAME_TIMER bce2_text_timer_start ENDIF ENDIF ENDIF IF bce2_mobile = 6 GET_GAME_TIMER bce2_text_timer_end bce2_text_timer_diff = bce2_text_timer_end - bce2_text_timer_start IF bce2_text_timer_diff > 1000 IF bce2_audio_playing = 0 bce2_counter = 10 // Later, dude. bce2_mobile = 7 GET_GAME_TIMER bce2_text_timer_start ENDIF ENDIF ENDIF ENDIF IF bce2_mobile = 7 OR bce2_mobile = 8 GET_GAME_TIMER bce2_text_timer_end bce2_text_timer_diff = bce2_text_timer_end - bce2_text_timer_start IF bce2_text_timer_diff > 1000 IF bce2_audio_playing = 0 IF NOT IS_CHAR_DEAD scplayer GET_SCRIPT_TASK_STATUS scplayer TASK_USE_MOBILE_PHONE bce2_player_status IF NOT bce2_player_status = FINISHED_TASK TASK_USE_MOBILE_PHONE scplayer FALSE ENDIF IF bce2_response < 2 GOTO bce2_main_loop ELSE GOTO mission_cleanup_bce2 ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_BUTTON_PRESSED PAD1 TRIANGLE IF bce2_played > 0 bce2_response = 2 ENDIF bce2_mobile = 8 ENDIF GOTO bce2_mobile_loop // ------------------------------------------------------------------------------------------------ // Main Loop bce2_main_loop: WAIT 0 IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ESC bce2_next = 0 bce2_crate_check = 6 ENDIF IF flag_player_on_mission = 1 bce2_next = 0 bce2_crate_check = 6 ENDIF IF IS_PLAYER_PLAYING player1 IF NOT IS_CHAR_DEAD scplayer IF bce2_in_car = 0 IF IS_CHAR_IN_ANY_CAR scplayer STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer bce2_player_car bce2_in_car = 1 ENDIF ENDIF IF bce2_in_car = 1 IF NOT IS_CHAR_IN_ANY_CAR scplayer bce2_in_car = 0 ENDIF ENDIF ENDIF ENDIF IF IS_PLAYER_PLAYING player1 IF NOT IS_CHAR_DEAD scplayer IF bce2_ram_text = 0 IF LOCATE_CHAR_ANY_MEANS_3D scplayer bce2_track_x bce2_track_y bce2_track_z 100.0 100.0 50.0 FALSE PRINT_NOW ( BCE2_02 ) 5000 1 bce2_ram_text = 1 ENDIF ENDIF // -------- Moving Car IF IS_CAR_DEAD bce2_courier_car GOTO mission_cleanup_bce2 ENDIF IF bce2_played > 0 IF NOT IS_CHAR_DEAD bce2_goon[0] GET_SCRIPT_TASK_STATUS bce2_goon[0] TASK_DRIVE_BY bce2_task_status[0] IF bce2_task_status[0] = FINISHED_TASK TASK_DRIVE_BY bce2_goon[0] scplayer -1 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN TRUE 30 SET_CURRENT_CHAR_WEAPON bce2_goon[0] WEAPONTYPE_MICRO_UZI ENDIF ENDIF IF bce2_played > 1 IF NOT IS_CHAR_DEAD bce2_goon[1] GET_SCRIPT_TASK_STATUS bce2_goon[1] TASK_DRIVE_BY bce2_task_status[1] IF bce2_task_status[1] = FINISHED_TASK TASK_DRIVE_BY bce2_goon[1] scplayer -1 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN TRUE 30 SET_CURRENT_CHAR_WEAPON bce2_goon[1] WEAPONTYPE_MICRO_UZI ENDIF ENDIF IF bce2_played > 2 IF NOT IS_CHAR_DEAD bce2_goon[2] GET_SCRIPT_TASK_STATUS bce2_goon[2] TASK_DRIVE_BY bce2_task_status[2] IF bce2_task_status[2] = FINISHED_TASK TASK_DRIVE_BY bce2_goon[2] scplayer -1 0.0 0.0 0.0 50.0 DRIVEBY_AI_ALL_DIRN TRUE 30 SET_CURRENT_CHAR_WEAPON bce2_goon[2] WEAPONTYPE_MICRO_UZI ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_CHAR_DEAD bce2_courier AND NOT IS_CAR_DEAD bce2_courier_car IF NOT LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer bce2_courier_car 15.0 15.0 15.0 FALSE IF bce2_cruise_speed > 30.0 bce2_cruise_speed -= 0.1 ENDIF ELSE IF bce2_cruise_speed < 50.0 bce2_cruise_speed += 0.1 ENDIF ENDIF IF bce2_ram_text = 1 IF NOT LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer bce2_courier_car 500.0 500.0 500.0 FALSE GOTO mission_cleanup_bce2 ENDIF ENDIF GET_CAR_COORDINATES bce2_courier_car bce2_track_x bce2_track_y bce2_track_z IF bce2_route < bce2_final_dest IF bce2_random = 0 IF LOCATE_CHAR_IN_CAR_3D bce2_courier bce2_route1_x[bce2_route] bce2_route1_y[bce2_route] bce2_route1_z[bce2_route] 20.0 20.0 20.0 FALSE SET_CAR_CRUISE_SPEED bce2_courier_car bce2_cruise_speed bce2_route++ TASK_CAR_DRIVE_TO_COORD bce2_courier bce2_courier_car bce2_route1_x[bce2_route] bce2_route1_y[bce2_route] bce2_route1_z[bce2_route] bce2_cruise_speed MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ENDIF ELSE IF bce2_random = 1 IF LOCATE_CHAR_IN_CAR_3D bce2_courier bce2_route2_x[bce2_route] bce2_route2_y[bce2_route] bce2_route2_z[bce2_route] 20.0 20.0 20.0 FALSE SET_CAR_CRUISE_SPEED bce2_courier_car bce2_cruise_speed bce2_route++ TASK_CAR_DRIVE_TO_COORD bce2_courier bce2_courier_car bce2_route2_x[bce2_route] bce2_route2_y[bce2_route] bce2_route2_z[bce2_route] bce2_cruise_speed MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ENDIF ELSE IF LOCATE_CHAR_IN_CAR_3D bce2_courier bce2_route3_x[bce2_route] bce2_route3_y[bce2_route] bce2_route3_z[bce2_route] 20.0 20.0 20.0 FALSE SET_CAR_CRUISE_SPEED bce2_courier_car bce2_cruise_speed bce2_route++ TASK_CAR_DRIVE_TO_COORD bce2_courier bce2_courier_car bce2_route3_x[bce2_route] bce2_route3_y[bce2_route] bce2_route3_z[bce2_route] bce2_cruise_speed MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF ELSE IF bce2_random = 0 IF LOCATE_CHAR_IN_CAR_3D bce2_courier bce2_route1_x[bce2_route] bce2_route1_y[bce2_route] bce2_route1_z[bce2_route] 8.0 8.0 8.0 FALSE TASK_CAR_DRIVE_WANDER bce2_courier bce2_courier_car 50.0 DRIVINGMODE_AVOIDCARS ENDIF ELSE IF bce2_random = 1 IF LOCATE_CHAR_IN_CAR_3D bce2_courier bce2_route2_x[bce2_route] bce2_route2_y[bce2_route] bce2_route2_z[bce2_route] 8.0 8.0 8.0 FALSE TASK_CAR_DRIVE_WANDER bce2_courier bce2_courier_car 50.0 DRIVINGMODE_AVOIDCARS ENDIF ELSE IF LOCATE_CHAR_IN_CAR_3D bce2_courier bce2_route3_x[bce2_route] bce2_route3_y[bce2_route] bce2_route3_z[bce2_route] 8.0 8.0 8.0 FALSE TASK_CAR_DRIVE_WANDER bce2_courier bce2_courier_car 50.0 DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF IF bce2_route = bce2_final_dest IF NOT IS_CAR_ON_SCREEN bce2_courier_car GOTO mission_cleanup_bce2 ENDIF ENDIF ENDIF GET_SCRIPT_TASK_STATUS bce2_courier TASK_CAR_DRIVE_TO_COORD bce2_drive_status IF bce2_drive_status = FINISHED_TASK IF bce2_random = 0 TASK_CAR_DRIVE_TO_COORD bce2_courier bce2_courier_car bce2_route1_x[bce2_route] bce2_route1_y[bce2_route] bce2_route1_z[bce2_route] bce2_cruise_speed MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ELSE IF bce2_random = 1 TASK_CAR_DRIVE_TO_COORD bce2_courier bce2_courier_car bce2_route2_x[bce2_route] bce2_route2_y[bce2_route] bce2_route2_z[bce2_route] bce2_cruise_speed MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ELSE TASK_CAR_DRIVE_TO_COORD bce2_courier bce2_courier_car bce2_route3_x[bce2_route] bce2_route3_y[bce2_route] bce2_route3_z[bce2_route] bce2_cruise_speed MODE_NORMAL FALSE DRIVINGMODE_AVOIDCARS ENDIF ENDIF ENDIF ENDIF ENDIF ELSE GOTO mission_cleanup_bce2 ENDIF // ---- Throw Objects in Player's direction, and blip them... IF NOT IS_CAR_DEAD bce2_courier_car GET_GAME_TIMER bce2_crate_end bce2_crate_diff = bce2_crate_end - bce2_crate_start GET_CAR_HEALTH bce2_courier_car bce2_courier_car_health_hit IF bce2_crate_diff > 1000 IF bce2_courier_car_health_hit < bce2_courier_car_health IF bce2_crate_status[bce2_next] = 0 IF IS_OBJECT_ATTACHED bce2_crate[bce2_next] IF NOT IS_CAR_DEAD bce2_courier_car IF NOT IS_CAR_UPSIDEDOWN bce2_courier_car OR NOT IS_CAR_IN_WATER bce2_courier_car GET_OBJECT_COORDINATES bce2_crate[bce2_next] bce2_crate_x[bce2_next] bce2_crate_y[bce2_next] bce2_crate_z[bce2_next] bce2_crate_z[bce2_next] += 0.5 SET_OBJECT_COORDINATES bce2_crate[bce2_next] bce2_crate_x[bce2_next] bce2_crate_y[bce2_next] bce2_crate_z[bce2_next] DETACH_OBJECT bce2_crate[bce2_next] 90.0 180.0 1.5 TRUE ADD_BLIP_FOR_OBJECT bce2_crate[bce2_next] bce2_crate_blip[bce2_next] ADD_TO_OBJECT_VELOCITY bce2_crate[bce2_next] 0.0 -5.0 20.0 SET_OBJECT_COLLISION bce2_crate[bce2_next] TRUE SET_OBJECT_DYNAMIC bce2_crate[bce2_next] TRUE IF IS_PLAYER_PLAYING player1 IF IS_CHAR_IN_ANY_CAR scplayer IF NOT IS_CAR_DEAD bce2_player_car SORT_OUT_OBJECT_COLLISION_WITH_CAR bce2_crate[bce2_next] bce2_player_car ENDIF ENDIF ENDIF GET_GAME_TIMER bce2_crate_start PRINT_NOW ( BCE2_03 ) 5000 1 bce2_crate_status[bce2_next] = 2 IF bce2_next > 0 bce2_next-- ELSE IF bce2_crate_check = 6 GOTO mission_cleanup_bce2 // If all of the Objects are thrown the mission is over... ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF bce2_courier_car_health = bce2_courier_car_health_hit ENDIF ENDIF ENDIF IF bce2_next = 0 IF bce2_crate_check = 6 GOTO mission_cleanup_bce2 // If all of the Objects are thrown the mission is over... ENDIF ENDIF // ---- Pick up the Objects, or don't. The choice, is yours... bce2_blipped = 0 WHILE NOT bce2_blipped = 6 WAIT 0 IF bce2_crate_status[bce2_blipped] = 2 IF IS_PLAYER_PLAYING player1 IF NOT IS_CHAR_DEAD scplayer GET_CHAR_COORDINATES scplayer bce2_player_x bce2_player_y bce2_player_z IF DOES_OBJECT_EXIST bce2_crate[bce2_blipped] IF LOCATE_CHAR_ANY_MEANS_OBJECT_3D scplayer bce2_crate[bce2_blipped] 3.0 3.0 3.0 FALSE REMOVE_BLIP bce2_crate_blip[bce2_blipped] DELETE_OBJECT bce2_crate[bce2_blipped] ADD_ONE_OFF_SOUND bce2_player_x bce2_player_y bce2_player_z SOUND_PART_MISSION_COMPLETE ADD_SCORE player1 300 bce2_earnings += 300 bce2_crate_status[bce2_blipped] = 3 bce2_crate_check++ ENDIF ENDIF IF DOES_OBJECT_EXIST bce2_crate[bce2_blipped] IF NOT LOCATE_CHAR_ANY_MEANS_OBJECT_3D scplayer bce2_crate[bce2_blipped] 75.0 75.0 75.0 FALSE REMOVE_BLIP bce2_crate_blip[bce2_blipped] DELETE_OBJECT bce2_crate[bce2_blipped] bce2_crate_status[bce2_blipped] = 3 bce2_crate_check++ ENDIF ENDIF ENDIF ENDIF ENDIF bce2_blipped++ ENDWHILE GOTO bce2_main_loop // ------------------------------------------------------------------------------------------------ // Mission Cleanup mission_cleanup_bce2: DISPLAY_RADAR 3 // PATHING ON IF flag_on_courier_mission = 1 PRINT_WITH_NUMBER_BIG BCE2_04 bce2_earnings 7500 5 PRINT_NOW ( BCE2_05 ) 7500 1 bce2_played++ ENDIF // Cash Courier Cleanup // ---- Entities // ---- Blips REMOVE_BLIP bce2_courier_car_blip REMOVE_BLIP bce2_crate_blip[0] REMOVE_BLIP bce2_crate_blip[1] REMOVE_BLIP bce2_crate_blip[2] REMOVE_BLIP bce2_crate_blip[3] REMOVE_BLIP bce2_crate_blip[4] REMOVE_BLIP bce2_crate_blip[5] // ---- Entities MARK_CAR_AS_NO_LONGER_NEEDED bce2_courier_car MARK_CHAR_AS_NO_LONGER_NEEDED bce2_courier MARK_CHAR_AS_NO_LONGER_NEEDED bce2_goon[0] MARK_CHAR_AS_NO_LONGER_NEEDED bce2_goon[1] MARK_CHAR_AS_NO_LONGER_NEEDED bce2_goon[2] MARK_OBJECT_AS_NO_LONGER_NEEDED bce2_crate[0] MARK_OBJECT_AS_NO_LONGER_NEEDED bce2_crate[1] MARK_OBJECT_AS_NO_LONGER_NEEDED bce2_crate[2] MARK_OBJECT_AS_NO_LONGER_NEEDED bce2_crate[3] MARK_OBJECT_AS_NO_LONGER_NEEDED bce2_crate[4] MARK_OBJECT_AS_NO_LONGER_NEEDED bce2_crate[5] // ---- Models MARK_MODEL_AS_NO_LONGER_NEEDED fam3 MARK_MODEL_AS_NO_LONGER_NEEDED PATRIOT MARK_MODEL_AS_NO_LONGER_NEEDED micro_uzi MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE GET_GAME_TIMER timer_mobile_start CLEAR_HELP CLEAR_MISSION_AUDIO 3 // ---- Clear Script Stuff //flag_player_on_mission = 0 GET_GAME_TIMER timer_mobile_start //MISSION_HAS_FINISHED IF flag_on_courier_mission = 1 IF flag_bce2_passed_1stime = 0 REGISTER_ODDJOB_MISSION_PASSED flag_bce2_passed_1stime = 1 ENDIF ENDIF flag_on_courier_mission = 0 TERMINATE_THIS_SCRIPT } MISSION_END // ------------------------------------------------------------------------------------------------ MISSION_START { // Coke Courier coke_courier_script: SCRIPT_NAME COKEC LVAR_INT m_stage LVAR_INT m_goals LVAR_INT temp_int temp_int2 temp_int3 LVAR_FLOAT temp_float temp_float2 temp_float3 LVAR_INT temp_seq //LVAR_FLOAT x2 y2 z2 //LVAR_FLOAT playback_speed LVAR_INT last_frame_time LVAR_INT lost_timer LVAR_INT coke_timer LVAR_INT mobile_phone_conv LVAR_INT m_passed LVAR_INT mission_started_properly LVAR_INT route_mode VAR_INT phone_conversation_choice VAR_INT phone_conversation_answer LVAR_INT hide_text route_mode = 0 // 0 - uses route finding, 1 uses car recording m_stage = 0 m_goals = 0 mobile_phone_conv = 0 m_passed = 0 mission_started_properly = 0 hide_text = 0 phone_conversation_choice = 0 phone_conversation_answer = 0 coke_courier_script_start: // if this script has been triggered on the wrong day then quit out. IF weekday = 1 OR weekday = 3 OR weekday = 5 GOTO bcesar3_cleanup hide_text = 1 ENDIF // If Big Smoke's Cash has not been played then quit out. IF bce2_played = 0 GOTO bcesar3_cleanup hide_text = 1 ENDIF // if the crack factory has been destroyed, this mission shouldn't be running IF flag_Synd_mission_counter >= 10 GOTO bcesar3_cleanup hide_text = 1 ENDIF GET_AREA_VISIBLE current_visible_area_cell IF IS_PLAYER_PLAYING player1 IF current_visible_area_cell = 0 IF IS_CHAR_ON_FOOT scplayer AND NOT IS_CHAR_IN_AIR scplayer AND flag_player_on_mission = 0 AND player_fall_state = 0 IF NOT IS_CHAR_IN_WATER scplayer AND NOT IS_CHAR_SHOOTING scplayer //AND NOT IS_GANG_WAR_GOING_ON ELSE WAIT 0 GOTO coke_courier_script_start ENDIF ELSE WAIT 0 GOTO coke_courier_script_start ENDIF ELSE WAIT 0 GOTO coke_courier_script_start ENDIF ENDIF GOSUB check_player_is_safe_for_mobile IF player_is_completely_safe_for_mobile = 0 WAIT 0 GOTO coke_courier_script_start ENDIF IF bcesar3_passed_mission = 0 REGISTER_MISSION_GIVEN ENDIF mission_started_properly = 1 flag_on_courier_mission = 1 mission_loop_BCESAR3: WAIT 0 // update timers GET_GAME_TIMER temp_int2 temp_int = temp_int2 - last_frame_time last_frame_time = temp_int2 // only update the lost timer when the player is NOT in an interior GET_AREA_VISIBLE vis_area //WRITE_DEBUG_WITH_INT area_visible vis_area IF vis_area = 0 lost_timer += temp_int coke_timer += temp_int ENDIF // IF debug_on = 1 // GOSUB bce3_display_path // GOTO mission_loop_BCESAR3 // ENDIF // // Display mission stage variables for debug // LVAR_INT debug_on // IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_X // IF debug_on = 0 // debug_on = 1 // WRITE_DEBUG LEVEL_DEBUG_ON // ELSE // debug_on = 0 // WRITE_DEBUG LEVEL_DEBUG_OFF // ENDIF // ENDIF // // IF debug_on = 1 // LVAR_INT display_debug // VAR_INT BCESAR3_view_debug[8] // VAR_FLOAT BCESAR3_view_debug_f[8] // IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_SPACE // display_debug++ // IF display_debug > 1 // display_debug = 0 // ENDIF // CLEAR_ALL_VIEW_VARIABLES // ENDIF // IF display_debug = 1 // BCESAR3_view_debug[0] = m_stage // BCESAR3_view_debug[1] = m_goals // BCESAR3_view_debug[2] = caught_up_with_courier // BCESAR3_view_debug[3] = TIMERB // BCESAR3_view_debug[4] = checkpoint_count // BCESAR3_view_debug_f[5] = playback_speed // VIEW_INTEGER_VARIABLE BCESAR3_view_debug[0] m_stage // VIEW_INTEGER_VARIABLE BCESAR3_view_debug[1] m_goals // VIEW_INTEGER_VARIABLE BCESAR3_view_debug[2] caught_up_with_courier // VIEW_INTEGER_VARIABLE BCESAR3_view_debug[3] TIMERB // VIEW_INTEGER_VARIABLE BCESAR3_view_debug[4] checkpoint_count // VIEW_FLOAT_VARIABLE BCESAR3_view_debug_f[5] playback_speed // ENDIF // ENDIF // =========== EXIT CONDITIONS ================= IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ESC GOTO bcesar3_cleanup ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S GOTO bcesar3_cleanup ENDIF IF flag_player_on_mission = 1 hide_text = 1 GOTO bcesar3_cleanup ENDIF IF NOT IS_PLAYER_PLAYING player1 GOTO bcesar3_cleanup ENDIF IF HAS_DEATHARREST_BEEN_EXECUTED hide_text = 1 GOTO bcesar3_cleanup ENDIF // // if the day has changed AND the player hasn't caught up with the courier quit out // IF caught_up_with_courier = 0 // IF weekday = 1 // OR weekday = 3 // OR weekday = 5 // GOTO bcesar3_cleanup // ENDIF // ENDIF // ************************************************************************************************************* // INITIALISATION // ************************************************************************************************************* IF m_stage = 0 // === Declare mission specific variables === // ENTITIES (cars, peds, objects, blips, decision makers, attractors) LVAR_INT coke_bike coke_courier LVAR_INT coke_blip LVAR_INT fx LVAR_INT coke_pickup LVAR_INT coke_bag // FLAGS - ints that need to be reset each time level is played LVAR_INT coke_damaged //VAR_INT bce3_played LVAR_INT caught_up_with_courier LVAR_INT viewing_cam LVAR_INT checkpoint_count LVAR_INT vis_area LVAR_INT freeze_dude // decision maker LVAR_INT dm // set flags / coords coke_damaged = -1 coke_pickup = 0 caught_up_with_courier = 0 viewing_cam = 0 checkpoint_count = 0 freeze_dude = 0 //LOAD_MISSION_TEXT BCESAR3 //SET_PED_DENSITY_MULTIPLIER 1.0 //SET_CAR_DENSITY_MULTIPLIER 0.3 //SET_TIME_OF_DAY 23 1 m_stage++ m_goals = 0 ENDIF // ************************************************************************************************************* // STAGE 1 - Set up start point // ************************************************************************************************************* IF m_stage = 1 // load the coke courier models IF m_goals = 0 REQUEST_MODEL wmybmx REQUEST_MODEL SANCHEZ REQUEST_MODEL COLT45 REQUEST_MODEL CELLPHONE REQUEST_CAR_RECORDING 556 LOAD_MISSION_AUDIO 3 SOUND_PED_MOBRING WHILE NOT HAS_MODEL_LOADED wmybmx OR NOT HAS_MODEL_LOADED SANCHEZ OR NOT HAS_MODEL_LOADED COLT45 OR NOT HAS_MODEL_LOADED CELLPHONE OR NOT HAS_CAR_RECORDING_BEEN_LOADED 556 OR NOT HAS_MISSION_AUDIO_LOADED 3 WAIT 0 ENDWHILE LOAD_CHAR_DECISION_MAKER DM_PED_MISSION_TOUGH dm m_goals++ ENDIF // start phone conversation IF m_goals = 1 // GENERATE_RANDOM_INT_IN_RANGE 1 50 temp_int // IF IS_PLAYER_PLAYING player1 // GET_AREA_VISIBLE current_visible_area_cell // IF current_visible_area_cell = 0 // IF IS_PLAYER_PLAYING player1 // IF IS_CHAR_ON_FOOT scplayer // AND NOT IS_CHAR_IN_AIR scplayer // AND flag_player_on_mission = 0 // AND player_fall_state = 0 // IF NOT IS_CHAR_IN_WATER scplayer // AND NOT IS_CHAR_SHOOTING scplayer // //AND NOT IS_GANG_WAR_GOING_ON // TASK_USE_MOBILE_PHONE scplayer TRUE // START_NEW_SCRIPT cleanup_audio_lines // TIMERA = -2000 // mobile_phone_conv = 0 // m_goals++ // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF GOSUB check_player_is_safe_for_mobile IF player_is_completely_safe_for_mobile = 1 PLAY_MISSION_AUDIO 3 TASK_USE_MOBILE_PHONE scplayer TRUE // START_NEW_SCRIPT cleanup_audio_lines // CLEAR_MISSION_AUDIO 1 // CLEAR_MISSION_AUDIO 2 TIMERA = -1500 mobile_phone_conv = 0 m_goals++ ENDIF ENDIF // do mobile phone conversation IF m_goals >= 2 IF mobile_phone_conv < 5 IF IS_BUTTON_PRESSED PAD1 TRIANGLE mobile_phone_conv = 4 phone_conversation_choice = 3 phone_conversation_answer = 2 hide_text = 1 ENDIF // initialise phone choice stuff IF phone_conversation_choice = 1 AND audio_line_is_active = 0 AND NOT IS_MESSAGE_BEING_DISPLAYED PRINT_HELP_FOREVER TALK_1 phone_conversation_choice++ ENDIF IF phone_conversation_choice = 2 //fuck you fuck you fuck you IS_WIDGET_RELEASED WIDGET_GANG_REGION IF IS_WIDGET_RELEASED WIDGET_POSITIVE phone_conversation_answer = 1 phone_conversation_choice++ CLEAR_HELP ELSE IF IS_WIDGET_RELEASED WIDGET_NEGATIVE phone_conversation_answer = 2 phone_conversation_choice++ CLEAR_HELP ENDIF ENDIF ENDIF IF phone_conversation_choice = 0 OR phone_conversation_choice = 3 IF audio_line_is_active = 0 AND TIMERA > 1000 SWITCH mobile_phone_conv CASE 0 CLEAR_MISSION_AUDIO 3 $audio_string = &MCES08A audio_sound_file = SOUND_MCES08A START_NEW_SCRIPT audio_line -1 0 1 1 0 BREAK CASE 1 $audio_string = &MCES08B audio_sound_file = SOUND_MCES08B START_NEW_SCRIPT audio_line scplayer 0 1 1 0 BREAK CASE 2 $audio_string = &MCES08C audio_sound_file = SOUND_MCES08C START_NEW_SCRIPT audio_line -1 0 1 1 0 phone_conversation_choice++ BREAK CASE 3 IF phone_conversation_answer = 1 $audio_string = &MCES08D // positive response audio_sound_file = SOUND_MCES08D START_NEW_SCRIPT audio_line scplayer 0 1 1 0 ELSE $audio_string = &VOFFE2N // negative response audio_sound_file = SOUND_VOFFE2N START_NEW_SCRIPT audio_line scplayer 0 1 1 0 ENDIF BREAK CASE 4 START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 IF IS_PLAYER_PLAYING player1 TASK_USE_MOBILE_PHONE scplayer FALSE ENDIF IF NOT phone_conversation_answer = 1 GOTO bcesar3_cleanup ENDIF BREAK ENDSWITCH mobile_phone_conv++ TIMERA = 0 ENDIF ENDIF ENDIF ENDIF // create the coke courier IF m_goals = 2 // -------- route finding method ----------- // IF route_mode = 0 GENERATE_RANDOM_INT_IN_RANGE 0 60 checkpoint_count // check spawn point isn't too near player WHILE temp_int = 0 IF IS_PLAYER_PLAYING player1 IF LOCATE_CHAR_ANY_MEANS_3D scplayer bce2_CHECKPOINTS_x[checkpoint_count] bce2_CHECKPOINTS_y[checkpoint_count] bce2_CHECKPOINTS_z[checkpoint_count] 150.0 150.0 150.0 FALSE GENERATE_RANDOM_INT_IN_RANGE 0 60 checkpoint_count WAIT 0 ELSE temp_int = 1 ENDIF ENDIF ENDWHILE CREATE_CAR SANCHEZ bce2_CHECKPOINTS_x[checkpoint_count] bce2_CHECKPOINTS_y[checkpoint_count] bce2_CHECKPOINTS_z[checkpoint_count] coke_bike CREATE_CHAR PEDTYPE_CIVMALE WMYBMX bce2_CHECKPOINTS_x[checkpoint_count] bce2_CHECKPOINTS_y[checkpoint_count] bce2_CHECKPOINTS_z[checkpoint_count] coke_courier CREATE_OBJECT PARA_PACK bce2_CHECKPOINTS_x[checkpoint_count] bce2_CHECKPOINTS_y[checkpoint_count] bce2_CHECKPOINTS_z[checkpoint_count] coke_bag WARP_CHAR_INTO_CAR coke_courier coke_bike TASK_PICK_UP_OBJECT coke_courier coke_bag -0.11 -0.05 0.0 PED_TORSO HOLD_ORIENTATE_BONE_FULL NULL NULL 0 SET_LOAD_COLLISION_FOR_CAR_FLAG coke_bike FALSE temp_int = checkpoint_count + 1 x = bce2_CHECKPOINTS_x[temp_int] - bce2_CHECKPOINTS_x[checkpoint_count] y = bce2_CHECKPOINTS_y[temp_int] - bce2_CHECKPOINTS_y[checkpoint_count] GET_HEADING_FROM_VECTOR_2D x y temp_float SET_CAR_HEADING coke_bike temp_float CAR_GOTO_COORDINATES_RACING coke_bike bce2_CHECKPOINTS_x[checkpoint_count] bce2_CHECKPOINTS_y[checkpoint_count] bce2_CHECKPOINTS_z[checkpoint_count] ELSE // -------- car recording method ------------ // // CREATE_CAR SANCHEZ 0.0 0.0 0.0 coke_bike // CREATE_CHAR PEDTYPE_CIVMALE WMYBMX 0.0 0.0 0.0 coke_courier // CREATE_OBJECT PARA_PACK 0.0 0.0 0.0 coke_bag // WARP_CHAR_INTO_CAR coke_courier coke_bike // TASK_PICK_UP_OBJECT coke_courier coke_bag -0.11 -0.05 0.0 PED_TORSO HOLD_ORIENTATE_BONE_FULL NULL NULL 0 // SET_LOAD_COLLISION_FOR_CAR_FLAG coke_bike FALSE // // START_PLAYBACK_RECORDED_CAR coke_bike 556 // playback_speed = 0.6 // SET_PLAYBACK_SPEED coke_bike playback_speed // GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 2000.0 temp_float // SKIP_IN_PLAYBACK_RECORDED_CAR coke_bike temp_float // ENDIF // set coke courier ai SET_CHAR_ONLY_DAMAGED_BY_PLAYER coke_courier TRUE SET_CHAR_ACCURACY coke_courier 95 SET_CHAR_DECISION_MAKER coke_courier dm TASK_TOGGLE_PED_THREAT_SCANNER coke_courier 0 0 1 // give weapon to char - pistol GIVE_WEAPON_TO_CHAR coke_courier WEAPONTYPE_PISTOL 99999 SET_CHAR_MAX_HEALTH coke_courier 300 SET_CHAR_HEALTH coke_courier 300 // set bike properties SET_CAR_ONLY_DAMAGED_BY_PLAYER coke_bike TRUE SET_CAR_CRUISE_SPEED coke_bike 25.0 SET_CAR_DRIVING_STYLE coke_bike DRIVINGMODE_AVOIDCARS ADD_STUCK_CAR_CHECK_WITH_WARP coke_bike 2.0 2000 TRUE TRUE TRUE 2 // set stuff to be unset when player catches up SET_CHAR_PROOFS coke_courier TRUE TRUE TRUE TRUE TRUE SET_CAR_PROOFS coke_bike TRUE TRUE TRUE TRUE TRUE SET_CHAR_DROWNS_IN_WATER coke_courier FALSE SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE coke_courier KNOCKOFFBIKE_NEVER MARK_MODEL_AS_NO_LONGER_NEEDED wmybmx MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 //PRINT BCR3_01 7000 1 // Courier was last spotted in xxxx IF NOT IS_CHAR_DEAD coke_courier ADD_BLIP_FOR_CHAR coke_courier coke_blip ENDIF caught_up_with_courier = 0 //TIMERA = 0 TIMERB = 0 coke_timer = 0 lost_timer = 0 m_goals++ ENDIF // courier drives along route IF m_goals = 3 IF IS_PLAYER_PLAYING player1 // attach camera to courier - #### debug only #### IF viewing_cam = 0 IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_C IF NOT IS_CHAR_DEAD coke_courier //ATTACH_CAMERA_TO_CHAR_LOOK_AT_CHAR coke_courier 2.0 -5.0 3.0 coke_courier 0.0 JUMP_CUT viewing_cam = 1 ENDIF ENDIF ELSE IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_C RESTORE_CAMERA_JUMPCUT SET_CAMERA_BEHIND_PLAYER viewing_cam = 0 ENDIF ENDIF IF viewing_cam = 1 IF NOT IS_CHAR_DEAD coke_courier GET_CHAR_COORDINATES coke_courier x y z x += -15.0 y += 12.0 z += 15.0 SET_FIXED_CAMERA_POSITION x y z 0.0 0.0 0.0 GET_CHAR_COORDINATES coke_courier x y z GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS coke_courier 0.0 2.0 0.0 x y z POINT_CAMERA_AT_POINT x y z JUMP_CUT // IF IS_PLAYER_PLAYING player1 // GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS coke_courier 0.0 -10.0 0.0 x y z // SET_CHAR_COORDINATES scplayer x y z // ENDIF ENDIF ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_F IF NOT IS_CHAR_DEAD coke_courier IF NOT IS_CAR_DEAD coke_bike IF IS_CHAR_IN_CAR coke_courier coke_bike TASK_LEAVE_CAR_IMMEDIATELY coke_courier coke_bike ENDIF ENDIF ENDIF ENDIF // warp player near -- ##### debug only ##### IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_J IF NOT IS_CHAR_DEAD coke_courier GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS coke_courier 0.0 -20.0 0.0 x y z z += 10.0 //GET_GROUND_Z_FOR_3D_COORD x y z z IF IS_PLAYER_PLAYING player1 SET_CHAR_COORDINATES scplayer x y z ENDIF ENDIF ENDIF // wait for player to catch up with courier IF route_mode = 0 IF caught_up_with_courier = 0 IF IS_PLAYER_PLAYING player1 IF NOT IS_CHAR_DEAD coke_courier IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer coke_courier 80.0 80.0 80.0 FALSE SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE coke_courier KNOCKOFFBIKE_DEFAULT // set stuff back to normal SET_CHAR_PROOFS coke_courier FALSE FALSE FALSE FALSE FALSE IF NOT IS_CAR_DEAD coke_bike SET_CAR_PROOFS coke_bike FALSE FALSE FALSE FALSE FALSE ENDIF SET_CHAR_DROWNS_IN_WATER coke_courier TRUE SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE coke_courier KNOCKOFFBIKE_DEFAULT //WRITE_DEBUG player_caught_up caught_up_with_courier = 1 ELSE IF coke_timer > 600000 //120000 //PRINT_NOW BCR3_07 5000 1 //~s~The coke courier has made his delivery. GOTO bcesar3_cleanup ENDIF ENDIF ENDIF ENDIF ENDIF ELSE // IF caught_up_with_courier = 0 // IF IS_PLAYER_PLAYING player1 // IF NOT IS_CHAR_DEAD coke_courier // IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer coke_courier 80.0 80.0 80.0 FALSE // //OR IS_CHAR_ON_SCREEN coke_courier // IF NOT IS_CAR_DEAD coke_bike // IF IS_PLAYBACK_GOING_ON_FOR_CAR coke_bike // CHANGE_PLAYBACK_TO_USE_AI coke_bike // SET_LOAD_COLLISION_FOR_CAR_FLAG coke_bike TRUE // ENDIF // ENDIF // SET_CHAR_CAN_BE_KNOCKED_OFF_BIKE coke_courier KNOCKOFFBIKE_DEFAULT // //WRITE_DEBUG player_caught_up // caught_up_with_courier = 1 // ELSE // IF coke_timer > 120000 // //PRINT_NOW BCR3_07 5000 1 //~s~The coke courier has made his delivery. // GOTO bcesar3_cleanup // ENDIF // IF NOT IS_CAR_DEAD coke_bike // IF NOT IS_PLAYBACK_GOING_ON_FOR_CAR coke_bike // //PRINT_NOW BCR3_07 5000 1 //~s~The coke courier has made his delivery. // GOTO bcesar3_cleanup // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF ENDIF // check if courier got to end of route and has gone out of sight IF IS_PLAYER_PLAYING player1 IF caught_up_with_courier = 1 IF NOT IS_CHAR_DEAD coke_courier IF IS_PLAYER_PLAYING player1 IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer coke_courier 100.0 100.0 FALSE OR IS_CHAR_ON_SCREEN coke_courier lost_timer = 0 ENDIF ENDIF IF lost_timer > 20000 PRINT BCR3_02 4000 1 // you lost the coke courier GOTO bcesar3_cleanup ENDIF ENDIF ENDIF ENDIF // coke damage IF coke_damaged = -1 IF NOT IS_CHAR_DEAD coke_courier IF IS_PLAYER_PLAYING player1 IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR coke_courier scplayer //CREATE_FX_SYSTEM_ON_CHAR coke_trail coke_courier 0.0 -0.2 0.1 TRUE fx IF DOES_OBJECT_EXIST coke_bag CREATE_FX_SYSTEM_ON_OBJECT_WITH_DIRECTION coke_trail coke_bag 0.0 -0.2 -0.1 0.0 0.0 -1.0 TRUE fx PLAY_FX_SYSTEM fx ENDIF PRINT BCR3_04 5000 1 // he's losing drugs coke_damaged = 1 TIMERA = 0 ENDIF ENDIF ENDIF ELSE IF TIMERA > 180000 IF coke_damaged > 0 STOP_FX_SYSTEM fx coke_damaged = 0 ENDIF ENDIF ENDIF // goto next stage if courier is dead IF IS_CHAR_DEAD coke_courier m_goals++ ENDIF ENDIF // is player playing ENDIF // courier has been killed by player IF m_goals = 4 IF IS_PLAYER_PLAYING player1 IF IS_CHAR_DEAD coke_courier // work out how much coke is left STOP_FX_SYSTEM fx temp_float =# TIMERA IF temp_float > 180000.0 temp_float = 180000.0 ENDIF temp_float /= 180000.0 temp_float -= 1.0 temp_float *= -1.0 temp_float *= 2000.0 // maximum $2000 coke_damaged =# temp_float REMOVE_BLIP coke_blip IF DOES_OBJECT_EXIST coke_bag DELETE_OBJECT coke_bag ENDIF VAR_INT checked_coke_pickup_z GET_DEAD_CHAR_PICKUP_COORDS coke_courier x y z CREATE_PICKUP PARA_PACK PICKUP_ONCE X Y Z coke_pickup ADD_BLIP_FOR_COORD x y z coke_blip CHANGE_BLIP_COLOUR coke_blip GREEN PRINT_NOW BCR3_05 4000 1 // pickup the drugs checked_coke_pickup_z = 0 TIMERA = 0 m_goals++ ENDIF ENDIF ENDIF // debug - kill the coke courier IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_U IF NOT IS_CHAR_DEAD coke_courier TASK_DIE coke_courier ENDIF ENDIF // check pickup is above the ground IF checked_coke_pickup_z = 0 IF NOT HAS_PICKUP_BEEN_COLLECTED coke_pickup GET_PICKUP_COORDINATES coke_pickup X Y Z IF IS_PLAYER_PLAYING player1 IF LOCATE_CHAR_ANY_MEANS_2D scplayer x y 50.0 50.0 FALSE GET_GROUND_Z_FOR_3D_COORD x y z temp_float z = temp_float + 1.0 REMOVE_PICKUP coke_pickup REMOVE_BLIP coke_blip CREATE_PICKUP PARA_PACK PICKUP_ONCE X Y Z coke_pickup ADD_BLIP_FOR_COORD x y z coke_blip CHANGE_BLIP_COLOUR coke_blip GREEN // WRITE_DEBUG_WITH_FLOAT package_x x // WRITE_DEBUG_WITH_FLOAT package_y y // WRITE_DEBUG_WITH_FLOAT package_z z checked_coke_pickup_z = 1 ENDIF ENDIF ENDIF ENDIF // wait for player to collect pickup IF m_goals = 5 IF IS_PLAYER_PLAYING player1 GET_PICKUP_COORDINATES coke_pickup X Y Z IF LOCATE_CHAR_ANY_MEANS_2D scplayer x y 300.0 300.0 FALSE IF TIMERA < 180000 IF NOT coke_pickup = 0 IF HAS_PICKUP_BEEN_COLLECTED coke_pickup IF coke_damaged > 0 // mission passed CLEAR_PRINTS m_passed = 1 ELSE PRINT_NOW BCR3_06 7500 1 // All the coke was lost during the chase! ENDIF GOTO bcesar3_cleanup ENDIF ELSE CLEAR_PRINTS GOTO bcesar3_cleanup ENDIF ELSE CLEAR_PRINTS GOTO bcesar3_cleanup ENDIF ELSE CLEAR_PRINTS GOTO bcesar3_cleanup ENDIF ENDIF ENDIF // control speed of coke courier (after player has caught up) IF NOT caught_up_with_courier = 0 IF route_mode = 0 IF DOES_VEHICLE_EXIST coke_bike IF NOT IS_CAR_DEAD coke_bike IF IS_PLAYER_PLAYING player1 IF LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer coke_bike 50.0 50.0 50.0 FALSE IF LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer coke_bike 20.0 20.0 20.0 FALSE SET_CAR_CRUISE_SPEED coke_bike 45.0 ELSE SET_CAR_CRUISE_SPEED coke_bike 30.0 ENDIF ELSE SET_CAR_CRUISE_SPEED coke_bike 20.0 ENDIF ENDIF ENDIF ENDIF ELSE // IF DOES_VEHICLE_EXIST coke_bike // IF NOT IS_CAR_DEAD coke_bike // IF IS_PLAYBACK_GOING_ON_FOR_CAR coke_bike // IF NOT IS_CHAR_DEAD coke_courier // IF IS_CHAR_IN_CAR coke_courier coke_bike // IF NOT IS_PLAYBACK_FOR_CAR_PAUSED coke_bike // GET_OFFSET_FROM_CAR_IN_WORLD_COORDS coke_bike 0.0 20.0 0.0 x y z // IF IS_PLAYER_PLAYING player1 // GET_CHAR_COORDINATES scplayer x2 y2 z2 // ENDIF // GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 temp_float // GET_OFFSET_FROM_CAR_IN_WORLD_COORDS coke_bike 0.0 -20.0 0.0 x y z // GET_DISTANCE_BETWEEN_COORDS_2D x y x2 y2 temp_float2 // IF temp_float < temp_float2 // // player is in front of courier // playback_speed = 2.5 // ELSE // // player is behind courier // IF IS_PLAYER_PLAYING player1 // IF LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer coke_bike 20.0 20.0 20.0 FALSE // playback_speed +=@ 0.001 // ELSE // IF NOT LOCATE_CHAR_ANY_MEANS_CAR_3D scplayer coke_bike 50.0 50.0 50.0 FALSE // playback_speed +=@ -0.001 // ENDIF // ENDIF // ENDIF // IF playback_speed < 0.3 // playback_speed = 0.3 // ENDIF // IF playback_speed > 1.3 // playback_speed = 1.3 // ENDIF // ENDIF // SET_PLAYBACK_SPEED coke_bike playback_speed // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF ENDIF ENDIF // goto next point in route - route finding method IF route_mode = 0 // goto next point in route IF NOT IS_CHAR_DEAD coke_courier IF NOT checkpoint_count = -1 IF NOT IS_CAR_DEAD coke_bike IF IS_CHAR_IN_CAR coke_courier coke_bike IF LOCATE_CHAR_IN_CAR_3D coke_courier bce2_CHECKPOINTS_x[checkpoint_count] bce2_CHECKPOINTS_y[checkpoint_count] bce2_CHECKPOINTS_z[checkpoint_count] 25.0 25.0 25.0 FALSE checkpoint_count++ IF checkpoint_count < 85 TASK_CAR_DRIVE_TO_COORD coke_courier coke_bike bce2_CHECKPOINTS_x[checkpoint_count] bce2_CHECKPOINTS_y[checkpoint_count] bce2_CHECKPOINTS_z[checkpoint_count] 25.0 MODE_RACING TRUE DRIVINGMODE_AVOIDCARS ELSE TASK_CAR_DRIVE_WANDER coke_courier coke_bike 25.0 DRIVINGMODE_AVOIDCARS checkpoint_count = -1 ENDIF ELSE IF checkpoint_count < 85 GET_SCRIPT_TASK_STATUS coke_courier TASK_CAR_DRIVE_TO_COORD temp_int IF temp_int = FINISHED_TASK TASK_CAR_DRIVE_TO_COORD coke_courier coke_bike bce2_CHECKPOINTS_x[checkpoint_count] bce2_CHECKPOINTS_y[checkpoint_count] bce2_CHECKPOINTS_z[checkpoint_count] 25.0 MODE_RACING TRUE DRIVINGMODE_AVOIDCARS ENDIF ELSE GET_SCRIPT_TASK_STATUS coke_courier TASK_CAR_DRIVE_WANDER temp_int IF temp_int = FINISHED_TASK TASK_CAR_DRIVE_WANDER coke_courier coke_bike 25.0 DRIVINGMODE_AVOIDCARS checkpoint_count = -1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // make sure courier always has backpack (when alive) IF NOT IS_CHAR_DEAD coke_courier IF NOT DOES_OBJECT_EXIST coke_bag CREATE_OBJECT PARA_PACK 0.0 0.0 0.0 coke_bag ENDIF IF NOT IS_CHAR_HOLDING_OBJECT coke_courier coke_bag TASK_PICK_UP_OBJECT coke_courier coke_bag -0.11 -0.05 0.0 PED_TORSO HOLD_ORIENTATE_BONE_FULL NULL NULL 0 ENDIF ENDIF // freeze coke courier if player goes into an interior IF NOT vis_area = 0 IF freeze_dude = 0 IF DOES_VEHICLE_EXIST coke_bike //IF NOT IS_CAR_DEAD coke_bike FREEZE_CAR_POSITION coke_bike TRUE //ENDIF ENDIF IF DOES_CHAR_EXIST coke_courier //IF NOT IS_CHAR_DEAD coke_courier FREEZE_CHAR_POSITION coke_courier TRUE //ENDIF ENDIF freeze_dude = 1 ENDIF ELSE IF freeze_dude = 1 IF DOES_VEHICLE_EXIST coke_bike //IF NOT IS_CAR_DEAD coke_bike FREEZE_CAR_POSITION coke_bike FALSE //ENDIF ENDIF IF DOES_CHAR_EXIST coke_courier //IF NOT IS_CHAR_DEAD coke_courier FREEZE_CHAR_POSITION coke_courier FALSE //ENDIF ENDIF freeze_dude = 0 ENDIF ENDIF // AI - behaviour if courier falls off bike get back on and continue - dm will make him kill player if he's spotted him IF DOES_VEHICLE_EXIST coke_bike IF NOT IS_CHAR_DEAD coke_courier IF caught_up_with_courier = 1 IF NOT IS_CAR_DEAD coke_bike IF NOT IS_CHAR_IN_CAR coke_courier coke_bike IF IS_PLAYER_PLAYING player1 IF NOT LOCATE_CHAR_ON_FOOT_CHAR_3D scplayer coke_courier 20.0 20.0 10.0 FALSE GET_SCRIPT_TASK_STATUS coke_courier PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK CLEAR_CHAR_TASKS coke_courier OPEN_SEQUENCE_TASK temp_seq TASK_GOTO_CAR -1 coke_bike 10000 5.0 TASK_ENTER_CAR_AS_DRIVER -1 coke_bike 10000 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK coke_courier temp_seq CLEAR_SEQUENCE_TASK temp_seq ELSE GET_SCRIPT_TASK_STATUS coke_courier TASK_KILL_CHAR_ON_FOOT temp_int IF NOT temp_int = FINISHED_TASK GET_SCRIPT_TASK_STATUS coke_courier PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK CLEAR_CHAR_TASKS coke_courier OPEN_SEQUENCE_TASK temp_seq TASK_GOTO_CAR -1 coke_bike 10000 5.0 TASK_ENTER_CAR_AS_DRIVER -1 coke_bike 10000 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK coke_courier temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF ENDIF ELSE IF coke_damaged = 1 GET_SCRIPT_TASK_STATUS coke_courier TASK_KILL_CHAR_ON_FOOT temp_int IF temp_int = FINISHED_TASK CLEAR_CHAR_TASKS coke_courier TASK_KILL_CHAR_ON_FOOT coke_courier scplayer ENDIF ELSE GET_SCRIPT_TASK_STATUS coke_courier PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK CLEAR_CHAR_TASKS coke_courier OPEN_SEQUENCE_TASK temp_seq TASK_GOTO_CAR -1 coke_bike 10000 5.0 TASK_ENTER_CAR_AS_DRIVER -1 coke_bike 10000 CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK coke_courier temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF ENDIF ENDIF ENDIF ELSE GET_SCRIPT_TASK_STATUS coke_courier PERFORM_SEQUENCE_TASK temp_int IF temp_int = FINISHED_TASK OPEN_SEQUENCE_TASK temp_seq IF IS_PLAYER_PLAYING player1 TASK_KILL_CHAR_ON_FOOT -1 scplayer ENDIF CLOSE_SEQUENCE_TASK temp_seq PERFORM_SEQUENCE_TASK coke_courier temp_seq CLEAR_SEQUENCE_TASK temp_seq ENDIF ENDIF ELSE IF NOT IS_CAR_DEAD coke_bike IF NOT IS_CHAR_IN_CAR coke_courier coke_bike WARP_CHAR_INTO_CAR coke_courier coke_bike ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF // end of main loop GOTO mission_loop_BCESAR3 // ------------------------------------------------------------------------------------------------ // Mission Cleanup bcesar3_cleanup: IF mission_started_properly = 1 IF IS_PLAYER_PLAYING player1 TASK_USE_MOBILE_PHONE scplayer FALSE ENDIF START_NEW_SCRIPT cleanup_audio_lines CLEAR_MISSION_AUDIO 1 CLEAR_MISSION_AUDIO 2 WAIT 1 CLEAR_HELP IF m_passed = 0 coke_damaged = 0 ENDIF IF hide_text = 0 IF NOT IS_MESSAGE_BEING_DISPLAYED PRINT_NOW BCR3_08 7500 1 ENDIF PRINT_WITH_NUMBER_BIG BCE2_04 coke_damaged 7500 5 ENDIF IF m_passed = 1 IF IS_PLAYER_PLAYING player1 ADD_SCORE player1 coke_damaged ENDIF IF bcesar3_passed_mission = 0 //REGISTER_MISSION_PASSED BCESAR3 REGISTER_ODDJOB_MISSION_PASSED bcesar3_passed_mission++ ENDIF PLAY_MISSION_PASSED_TUNE 1 CLEAR_WANTED_LEVEL PLAYER1 ENDIF // === MARK ENTITIES AS NO LONGER NEEDED === (cars,peds,objects,blips,attractors) MARK_CHAR_AS_NO_LONGER_NEEDED coke_courier MARK_CAR_AS_NO_LONGER_NEEDED coke_bike MARK_OBJECT_AS_NO_LONGER_NEEDED coke_bag REMOVE_BLIP coke_blip KILL_FX_SYSTEM fx REMOVE_PICKUP coke_pickup REMOVE_DECISION_MAKER dm MARK_MODEL_AS_NO_LONGER_NEEDED WMYBMX MARK_MODEL_AS_NO_LONGER_NEEDED SANCHEZ MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE REMOVE_CAR_RECORDING 556 // === RESTORE ENVIRONMENT SETTINGS === SET_PED_DENSITY_MULTIPLIER 1.0 SET_CAR_DENSITY_MULTIPLIER 1.0 MARK_MODEL_AS_NO_LONGER_NEEDED CELLPHONE mission_started_properly = 0 ENDIF flag_on_courier_mission = 0 TERMINATE_THIS_SCRIPT VAR_INT bce_point_to_edit VAR_INT start_line_point VAR_INT end_line_point //VAR_FLOAT bce_min_x bce_min_y bce_min_z bce_max_x bce_max_y bce_max_z bce3_display_path: start_line_point = bce_point_to_edit - 2 end_line_point = bce_point_to_edit + 2 IF start_line_point < 0 start_line_point = 0 ENDIF IF end_line_point > 84 end_line_point = 84 ENDIF temp_int = start_line_point WHILE temp_int < end_line_point temp_int2 = temp_int + 1 IF temp_int2 < 85 LINE bce2_CHECKPOINTS_x[temp_int] bce2_CHECKPOINTS_y[temp_int] bce2_CHECKPOINTS_z[temp_int] bce2_CHECKPOINTS_x[temp_int2] bce2_CHECKPOINTS_y[temp_int2] bce2_CHECKPOINTS_z[temp_int2] ENDIF temp_int++ ENDWHILE IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_PGUP bce_point_to_edit++ IF bce_point_to_edit > 84 bce_point_to_edit = 0 ENDIF WRITE_DEBUG_WITH_INT bce_point_to_edit bce_point_to_edit ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_PGDN bce_point_to_edit-- IF bce_point_to_edit < 0 bce_point_to_edit = 84 ENDIF WRITE_DEBUG_WITH_INT bce_point_to_edit bce_point_to_edit ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_UP bce2_CHECKPOINTS_y[bce_point_to_edit] += 0.5 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_DOWN bce2_CHECKPOINTS_y[bce_point_to_edit] += -0.5 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_RIGHT bce2_CHECKPOINTS_x[bce_point_to_edit] += 0.5 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_LEFT bce2_CHECKPOINTS_x[bce_point_to_edit] += -0.5 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_8 bce2_CHECKPOINTS_z[bce_point_to_edit] += 0.5 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_NUMPAD_2 bce2_CHECKPOINTS_z[bce_point_to_edit] += -0.5 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_W bce2_CHECKPOINTS_y[bce_point_to_edit] += 10.0 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_S bce2_CHECKPOINTS_y[bce_point_to_edit] += -10.0 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_D bce2_CHECKPOINTS_x[bce_point_to_edit] += 10.0 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_A bce2_CHECKPOINTS_x[bce_point_to_edit] += -10.0 ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_ENTER SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "COKE COURIER ROUTE - edit point -" SAVE_INT_TO_DEBUG_FILE bce_point_to_edit SAVE_NEWLINE_TO_DEBUG_FILE temp_int = 0 WHILE temp_int < 85 SAVE_STRING_TO_DEBUG_FILE "bce2_CHECKPOINTS_x[" SAVE_INT_TO_DEBUG_FILE temp_int SAVE_STRING_TO_DEBUG_FILE "] = " SAVE_FLOAT_TO_DEBUG_FILE bce2_CHECKPOINTS_x[temp_int] SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "bce2_CHECKPOINTS_y[" SAVE_INT_TO_DEBUG_FILE temp_int SAVE_STRING_TO_DEBUG_FILE "] = " SAVE_FLOAT_TO_DEBUG_FILE bce2_CHECKPOINTS_y[temp_int] SAVE_NEWLINE_TO_DEBUG_FILE SAVE_STRING_TO_DEBUG_FILE "bce2_CHECKPOINTS_z[" SAVE_INT_TO_DEBUG_FILE temp_int SAVE_STRING_TO_DEBUG_FILE "] = " SAVE_FLOAT_TO_DEBUG_FILE bce2_CHECKPOINTS_z[temp_int] SAVE_NEWLINE_TO_DEBUG_FILE temp_int++ ENDWHILE ENDIF IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_RETURN temp_int = bce_point_to_edit - 1 IF temp_int < 0 temp_int = 0 ENDIF bce2_CHECKPOINTS_x[bce_point_to_edit] = bce2_CHECKPOINTS_x[temp_int] bce2_CHECKPOINTS_y[bce_point_to_edit] = bce2_CHECKPOINTS_y[temp_int] bce2_CHECKPOINTS_z[bce_point_to_edit] = bce2_CHECKPOINTS_z[temp_int] ENDIF IF IS_PLAYER_PLAYING player1 LOCATE_CHAR_ANY_MEANS_3D scplayer bce2_CHECKPOINTS_x[bce_point_to_edit] bce2_CHECKPOINTS_y[bce_point_to_edit] bce2_CHECKPOINTS_z[bce_point_to_edit] 1.0 1.0 1.0 FALSE LOCATE_CHAR_ANY_MEANS_3D scplayer bce2_CHECKPOINTS_x[bce_point_to_edit] bce2_CHECKPOINTS_y[bce_point_to_edit] bce2_CHECKPOINTS_z[bce_point_to_edit] 0.5 0.5 0.5 FALSE ENDIF RETURN } MISSION_END // // goto next point in route // IF NOT IS_CHAR_DEAD coke_courier // IF NOT checkpoint_count = -1 // IF NOT IS_CAR_DEAD coke_bike // IF IS_CHAR_IN_CAR coke_courier coke_bike // IF LOCATE_CHAR_IN_CAR_3D coke_courier bce2_CHECKPOINTS_x[checkpoint_count] bce2_CHECKPOINTS_y[checkpoint_count] bce2_CHECKPOINTS_z[checkpoint_count] 25.0 25.0 25.0 FALSE // checkpoint_count++ // IF checkpoint_count < 85 // TASK_CAR_DRIVE_TO_COORD coke_courier coke_bike bce2_CHECKPOINTS_x[checkpoint_count] bce2_CHECKPOINTS_y[checkpoint_count] bce2_CHECKPOINTS_z[checkpoint_count] 25.0 MODE_RACING TRUE DRIVINGMODE_AVOIDCARS // //CAR_GOTO_COORDINATES_RACING coke_bike bce2_CHECKPOINTS_x[checkpoint_count] bce2_CHECKPOINTS_y[checkpoint_count] bce2_CHECKPOINTS_z[checkpoint_count] // ELSE // TASK_CAR_DRIVE_WANDER coke_courier coke_bike 25.0 DRIVINGMODE_AVOIDCARS // //CAR_WANDER_RANDOMLY coke_bike // checkpoint_count = -1 // ENDIF // ELSE // IF checkpoint_count < 85 // GET_SCRIPT_TASK_STATUS coke_courier TASK_CAR_DRIVE_TO_COORD temp_int // IF temp_int = FINISHED_TASK // TASK_CAR_DRIVE_TO_COORD coke_courier coke_bike bce2_CHECKPOINTS_x[checkpoint_count] bce2_CHECKPOINTS_y[checkpoint_count] bce2_CHECKPOINTS_z[checkpoint_count] 25.0 MODE_RACING TRUE DRIVINGMODE_AVOIDCARS // ENDIF // ELSE // GET_SCRIPT_TASK_STATUS coke_courier TASK_CAR_DRIVE_WANDER temp_int // IF temp_int = FINISHED_TASK // TASK_CAR_DRIVE_WANDER coke_courier coke_bike 25.0 DRIVINGMODE_AVOIDCARS // checkpoint_count = -1 // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // ELSE // m_goals++ // ENDIF // // // IF checkpoint_count = -1 // IF NOT IS_CHAR_DEAD coke_courier // IF IS_PLAYER_PLAYING player1 // IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer coke_courier 100.0 100.0 FALSE // IF NOT IS_CHAR_ON_SCREEN coke_courier // PRINT BCR3_02 4000 1 // you lost the coke courier // GOTO bcesar3_cleanup // ENDIF // ENDIF // ENDIF // ENDIF // ELSE // player loses him on the route // IF NOT IS_CHAR_DEAD coke_courier // IF IS_PLAYER_PLAYING player1 // IF LOCATE_CHAR_ANY_MEANS_CHAR_2D scplayer coke_courier 150.0 150.0 FALSE // TIMERB = 0 // ENDIF // IF IS_CHAR_ON_SCREEN coke_courier // TIMERB = 0 // ENDIF // IF TIMERB > 20000 // // player has lost him // PRINT BCR3_02 4000 1 // you lost the coke courier // GOTO bcesar3_cleanup // ENDIF // ENDIF // ENDIF // ENDIF // ELSE // IF TIMERB > 600000 // GOTO bcesar3_cleanup // ENDIF // ENDIF // ENDIF // MISSION_START { /////////////////////////////////////////////////////////////////////////////// slot_machine://///////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// SCRIPT_NAME BANDIT LVAR_INT slot_machine LVAR_INT reel[3] LVAR_INT flag timer reel_to_slow flag = 0 reel_to_slow = 0 LVAR_FLOAT reel_rotation[3] reel_speed[3] reel_speed[0] = 0.0 reel_speed[1] = 0.0 reel_speed[2] = 0.0 lvar_int loaded_tex_ld_slot loaded_tex_ld_slot = 0 lvar_int slot_cost generate_random_int_in_range 0 5 slot_cost if slot_cost = 0 slot_cost = 1 endif if slot_cost = 1 slot_cost = 5 endif if slot_cost = 2 slot_cost = 10 endif if slot_cost = 3 slot_cost = 20 endif if slot_cost = 4 slot_cost = 50 endif IF flag = 1 CREATE_OBJECT_NO_OFFSET KB_BANDIT_U 0.0 0.0 0.0 slot_machine CREATE_OBJECT_NO_OFFSET CJ_Wheel_1 x y z reel[0] ENDIF slot_machine_loop: WAIT 0 GET_GAME_TIMER game_timer IF DOES_OBJECT_EXIST slot_machine if IS_OBJECT_WITHIN_BRAIN_ACTIVATION_RANGE slot_machine IF IS_PLAYER_PLAYING player1 SWITCH flag CASE 0 LVAR_INT slot_machine_model GET_OBJECT_MODEL slot_machine slot_machine_model if HAS_MODEL_LOADED slot_machine_model GET_OBJECT_HEADING slot_machine heading IF NOT DOES_OBJECT_EXIST reel[0] GET_LEVEL_DESIGN_COORDS_FOR_OBJECT slot_machine 1 x y z CREATE_OBJECT_NO_OFFSET CJ_Wheel_1 x y z reel[0] SET_OBJECT_HEADING reel[0] heading ENDIF IF NOT DOES_OBJECT_EXIST reel[1] GET_LEVEL_DESIGN_COORDS_FOR_OBJECT slot_machine 2 x y z CREATE_OBJECT_NO_OFFSET CJ_Wheel_02 x y z reel[1] SET_OBJECT_HEADING reel[1] heading ENDIF IF NOT DOES_OBJECT_EXIST reel[2] GET_LEVEL_DESIGN_COORDS_FOR_OBJECT slot_machine 3 x y z CREATE_OBJECT_NO_OFFSET CJ_Wheel_03 x y z reel[2] SET_OBJECT_HEADING reel[2] heading ENDIF ++ flag ENDIF BREAK CASE 1 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS slot_machine 0.0 -1.0 -0.5 x y z lvar_int ped_using_slot GET_USER_OF_CLOSEST_MAP_ATTRACTOR x y z 1.5 KB_BANDIT_U PEDSLOT ped_using_slot IF ped_using_slot = -1 IF LOCATE_CHAR_ON_FOOT_3D scplayer x y z 0.6 0.6 1.0 0 IF slot_cost = 1 PRINT_HELP_FOREVER SLOT1D // Press ~m~~widget_minigame_start~ to use the slot machine $1. ENDIF IF slot_cost = 5 PRINT_HELP_FOREVER SLOT5D // Press ~m~~widget_minigame_start~ to use the slot machine $5. ENDIF IF slot_cost = 10 PRINT_HELP_FOREVER SLOT10D // Press ~m~~widget_minigame_start~ to use the slot machine $10. ENDIF IF slot_cost = 20 PRINT_HELP_FOREVER SLOT20D // Press ~m~~widget_minigame_start~ to use the slot machine $20. ENDIF IF slot_cost = 50 PRINT_HELP_FOREVER SLOT50D // Press ~m~~widget_minigame_start~ to use the slot machine $50. ENDIF SET_PLAYER_ENTER_CAR_BUTTON player1 FALSE load_MISSION_AUDIO 4 SOUND_BANK_BANDIT gosub draw_reel_sprites ++ flag else if loaded_tex_ld_slot = 1 remove_TEXTURE_DICTIONARY loaded_tex_ld_slot = 0 endif ENDIF ENDIF BREAK CASE 2 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS slot_machine 0.0 -1.0 -0.5 x y z GET_USER_OF_CLOSEST_MAP_ATTRACTOR x y z 1.5 KB_BANDIT_U PEDSLOT ped_using_slot IF ped_using_slot = -1 request_animation casino if has_animation_loaded casino IF LOCATE_CHAR_ON_FOOT_3D scplayer x y z 0.6 0.6 1.0 0 lvar_int slot_user GET_RANDOM_CHAR_IN_AREA_OFFSET_NO_SAVE x y z 0.6 0.6 1.0 slot_user if slot_user = -1 if not IS_MINIGAME_IN_PROGRESS gosub draw_reel_sprites IF IS_WIDGET_RELEASED WIDGET_MINIGAME_START temp_integer_1 = slot_cost - 1 IF IS_SCORE_GREATER player1 temp_integer_1 set_player_control player1 off HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer TRUE GET_OBJECT_HEADING slot_machine heading //OPEN_SEQUENCE_TASK sequence_task_obj //TASK_ACHIEVE_HEADING -1 heading //GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS slot_machine 0.0 -0.6 0.0 x y z TASK_CHAR_SLIDE_TO_COORD_AND_PLAY_ANIM scplayer x y z heading 0.4 Slot_Plyr casino 4.0 FALSE FALSE FALSE FALSE 0 //CLOSE_SEQUENCE_TASK sequence_task_obj //PERFORM_SEQUENCE_TASK scplayer sequence_task_obj //CLEAR_SEQUENCE_TASK sequence_task_obj temp_integer_1 = slot_cost * -1 ADD_SCORE player1 temp_integer_1 increment_int_stat MONEY_SPENT_GAMBLING slot_cost temp_float_1 =# slot_cost temp_float_1 *= 0.001 increment_float_stat GAMBLING temp_float_1 CLEAR_HELP SET_MINIGAME_IN_PROGRESS true timer = game_timer + 750 ++ flag ELSE CLEAR_HELP PRINT_HELP SLOT_03 // You don't have enough cash! ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_AMMUNATION_BUY_WEAPON_DENIED ENDIF ENDIF endif endif ELSE if loaded_tex_ld_slot = 1 remove_TEXTURE_DICTIONARY loaded_tex_ld_slot = 0 endif CLEAR_HELP SET_PLAYER_ENTER_CAR_BUTTON player1 TRUE flag = 1 ENDIF ENDIF ELSE if loaded_tex_ld_slot = 1 remove_TEXTURE_DICTIONARY loaded_tex_ld_slot = 0 endif CLEAR_HELP SET_PLAYER_ENTER_CAR_BUTTON player1 TRUE flag = 1 ENDIF BREAK CASE 3 gosub draw_reel_sprites IF timer < game_timer load_MISSION_AUDIO 4 SOUND_BANK_BANDIT if has_mission_audio_loaded 4 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_BANDIT_INSERT_COIN endif SET_PLAYER_ENTER_CAR_BUTTON player1 TRUE USE_TEXT_COMMANDS TRUE if loaded_tex_ld_slot = 0 LOAD_TEXTURE_DICTIONARY ld_slot LOAD_SPRITE 1 cherry // Alphamode must manually be set to 2 in txd.txt for these textures. LOAD_SPRITE 2 grapes LOAD_SPRITE 3 r_69 LOAD_SPRITE 4 bell LOAD_SPRITE 5 bar1_o LOAD_SPRITE 6 bar2_o loaded_tex_ld_slot = 1 endif load_MISSION_AUDIO 4 SOUND_BANK_BANDIT if has_mission_audio_loaded 4 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_BANDIT_WHEEL_START endif ++ flag ENDIF BREAK CASE 4 reel_speed[0] +=@ 1.0 IF reel_speed[0] > 10.0 reel_speed[0] = 10.0 GENERATE_RANDOM_INT_IN_RANGE 2000 3000 temp_integer_1 reel_to_slow = 0 timer = game_timer + temp_integer_1 //HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE scplayer false clear_char_tasks scplayer ++ flag ENDIF reel_speed[1] +=@ 1.1 IF reel_speed[1] > 10.0 reel_speed[1] = 10.0 ENDIF reel_speed[2] +=@ 1.05 IF reel_speed[2] > 10.0 reel_speed[2] = 10.0 ENDIF GET_OBJECT_HEADING slot_machine heading an = 0 WHILE an < 3 IF reel_speed[an] > 0.0 reel_rotation[an] +=@ reel_speed[an] IF reel_rotation[an] > 360.0 OR reel_rotation[an] = 360.0 reel_rotation[an] -= 360.0 ENDIF SET_OBJECT_ROTATION reel[an] reel_rotation[an] 0.0 heading ENDIF ++ an ENDWHILE gosub draw_reel_sprites BREAK CASE 5 IF timer < game_timer reel_speed[reel_to_slow] -=@ 0.3 IF reel_speed[reel_to_slow] < 0.6 temp_float_1 = reel_rotation[reel_to_slow] / 20.0 temp_integer_1 =# temp_float_1 temp_integer_1 *= 20 temp_float_1 =# temp_integer_1 temp_float_2 = reel_rotation[reel_to_slow] - temp_float_1 IF temp_float_2 < 10.0 reel_speed[reel_to_slow] = 0.0 temp_float_1 = reel_rotation[reel_to_slow] / 20.0 temp_integer_1 =# temp_float_1 reel_rotation[reel_to_slow] =# temp_integer_1 reel_rotation[reel_to_slow] *= 20.0 GENERATE_RANDOM_INT_IN_RANGE 750 1000 temp_integer_1 timer = game_timer + temp_integer_1 IF reel_to_slow < 2 load_MISSION_AUDIO 4 SOUND_BANK_BANDIT if has_mission_audio_loaded 4 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_BANDIT_WHEEL_STOP endif load_MISSION_AUDIO 4 SOUND_BANK_BANDIT if has_mission_audio_loaded 4 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_BANDIT_WHEEL_START endif ++ reel_to_slow ELSE load_MISSION_AUDIO 4 SOUND_BANK_BANDIT if has_mission_audio_loaded 4 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_BANDIT_WHEEL_STOP endif ++ flag ENDIF ELSE reel_speed[reel_to_slow] = 0.6 ENDIF ENDIF ENDIF GET_OBJECT_HEADING slot_machine heading an = 0 WHILE an < 3 IF reel_speed[an] > 0.0 reel_rotation[an] +=@ reel_speed[an] IF reel_rotation[an] > 360.0 OR reel_rotation[an] = 360.0 reel_rotation[an] -= 360.0 ENDIF SET_OBJECT_ROTATION reel[an] reel_rotation[an] 0.0 heading ENDIF ++ an ENDWHILE gosub draw_reel_sprites BREAK CASE 6 temp_float_1 = reel_rotation[0] / 20.0 temp_integer_1 =# temp_float_1 temp_float_1 = reel_rotation[1] / 20.0 temp_integer_2 =# temp_float_1 temp_float_1 = reel_rotation[2] / 20.0 temp_integer_3 =# temp_float_1 IF reel1_winnings[temp_integer_1] = reel2_winnings[temp_integer_2] AND reel1_winnings[temp_integer_1] = reel3_winnings[temp_integer_3] temp_integer_4 = slot_cost * reel1_winnings[temp_integer_1] start_new_script display_win_text temp_integer_4 ADD_SCORE player1 temp_integer_4 LOAD_MISSION_AUDIO 4 SOUND_BANK_BANDIT IF HAS_MISSION_AUDIO_LOADED 4 REPORT_MISSION_AUDIO_EVENT_AT_POSITION 0.0 0.0 0.0 SOUND_BANDIT_PAYOUT ENDIF increment_int_stat MONEY_WON_GAMBLING temp_integer_4 REGISTER_INT_STAT BIGGEST_GAMBLING_WIN temp_integer_4 ELSE start_new_script display_win_text 0 2500 REGISTER_INT_STAT BIGGEST_GAMBLING_LOSS slot_cost ENDIF set_player_control player1 on SET_MINIGAME_IN_PROGRESS false flag = 1 gosub draw_reel_sprites BREAK ENDSWITCH else goto do_slot_machine_cleanup endif ELSE goto do_slot_machine_cleanup ENDIF ELSE goto do_slot_machine_cleanup ENDIF GOTO slot_machine_loop draw_reel_sprites: if loaded_tex_ld_slot = 1 SET_SPRITES_DRAW_BEFORE_FADE TRUE DRAW_WINDOW reel_sprite_x[1] reel_sprite_y[1] reel_sprite_x[2] reel_sprite_y[2] DUMMY SWIRLS_NONE an = 0 while an < 3 temp_float_1 = reel_rotation[an] / 20.0 temp_integer_1 =# temp_float_1 if an = 0 temp_integer_2 = reel1_winnings[temp_integer_1] x_temp = reel_sprite_x[0] endif if an = 1 temp_integer_2 = reel2_winnings[temp_integer_1] x_temp = reel_sprite_x[0] + 64.0 endif if an = 2 temp_integer_2 = reel3_winnings[temp_integer_1] x_temp = reel_sprite_x[0] + 128.0 endif if temp_integer_2 = cherry SET_SPRITES_DRAW_BEFORE_FADE TRUE DRAW_SPRITE 1 x_temp reel_sprite_y[0] 64.0 64.0 200 200 200 250 endif if temp_integer_2 = grape SET_SPRITES_DRAW_BEFORE_FADE TRUE DRAW_SPRITE 2 x_temp reel_sprite_y[0] 64.0 64.0 200 200 200 250 endif if temp_integer_2 = r_69 SET_SPRITES_DRAW_BEFORE_FADE TRUE DRAW_SPRITE 3 x_temp reel_sprite_y[0] 64.0 64.0 200 200 200 250 endif if temp_integer_2 = bell SET_SPRITES_DRAW_BEFORE_FADE TRUE DRAW_SPRITE 4 x_temp reel_sprite_y[0] 64.0 64.0 200 200 200 250 endif if temp_integer_2 = bar1_o SET_SPRITES_DRAW_BEFORE_FADE TRUE DRAW_SPRITE 5 x_temp reel_sprite_y[0] 64.0 64.0 200 200 200 250 endif if temp_integer_2 = bar2_o SET_SPRITES_DRAW_BEFORE_FADE TRUE DRAW_SPRITE 6 x_temp reel_sprite_y[0] 64.0 64.0 200 200 200 250 endif ++ an endwhile endif return do_slot_machine_cleanup: CLEAR_THIS_PRINT SLOT_02 //~t~ Use Slot Machine $~1~ IF flag > 0 IF flag > 1 CLEAR_HELP SET_PLAYER_ENTER_CAR_BUTTON player1 TRUE ENDIF IF flag > 2 remove_animation casino ENDIF DELETE_OBJECT reel[0] DELETE_OBJECT reel[1] DELETE_OBJECT reel[2] flag = 0 ENDIF if loaded_tex_ld_slot = 1 remove_TEXTURE_DICTIONARY loaded_tex_ld_slot = 0 endif TERMINATE_THIS_SCRIPT return } MISSION_END MISSION_START // ***************************************************************************************** // ************************************* roulette **************************************** // ***************************************************************************************** {/////////////////////////////////////////////////////////////////////////////// roulette_script://////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// SCRIPT_NAME ROULETE LVAR_INT roulette_table LVAR_INT flag flag = 0 IF flag = 1 CREATE_OBJECT_NO_OFFSET ROULETTE_TBL 0.0 0.0 0.0 roulette_table CREATE_OBJECT_NO_OFFSET chip_stack07 x y z placed_chips[i] WRITE_DEBUG aaaaaaa ENDIF LVAR_INT pad1_left_pressed pad1_right_pressed pad1_up_pressed pad1_down_pressed pad1_CIRCLE_pressed pad1_cross_pressed pad1_square_pressed pad1_triangle_pressed //pad1_left_pressed = 0 //pad1_right_pressed = 0 pad1_up_pressed = 0 pad1_down_pressed = 0 pad1_square_pressed = 0 pad1_triangle_pressed = 0 pad1_cross_pressed = 0 LVAR_INT square_press_timer circle_press_timer square_press_timer = 500 circle_press_timer = 500 LVAR_INT dpadleft_timer dpadright_timer dpadup_timer dpaddown_timer dpadleft_timer = 0 dpadright_timer = 0 dpadup_timer = 0 dpaddown_timer = 0 lvar_float gambling_stat_fl get_float_stat GAMBLING gambling_stat_fl lVAR_INT chip_value spin_result GENERATE_RANDOM_INT_IN_RANGE 0 19 spin_result ++ total_roulette_tables if gambling_stat_fl < 1.0 if total_roulette_tables = 1 or total_roulette_tables = 5 spin_result = 0 endif else if gambling_stat_fl < 10.0 if total_roulette_tables = 1 or total_roulette_tables = 5 spin_result = 5 endif else if gambling_stat_fl < 100.0 if total_roulette_tables = 1 or total_roulette_tables = 5 spin_result = 10 endif else if gambling_stat_fl < 1000.0 if total_roulette_tables = 1 or total_roulette_tables = 5 spin_result = 14 endif else if total_roulette_tables = 1 or total_roulette_tables = 5 spin_result = 17 endif endif endif endif endif if spin_result = 0 or spin_result = 1 or spin_result = 2 or spin_result = 3 or spin_result = 4 chip_value = 2 lvar_int coloured_chips coloured_chips = chip_stack07 endif if spin_result = 5 or spin_result = 6 or spin_result = 7 or spin_result = 8 or spin_result = 9 chip_value = 20 coloured_chips = chip_stack08 endif if spin_result = 10 or spin_result = 11 or spin_result = 12 or spin_result = 13 chip_value = 200 coloured_chips = chip_stack12 endif if spin_result = 14 or spin_result = 15 or spin_result = 16 chip_value = 2000 coloured_chips = chip_stack09 endif if spin_result = 17 or spin_result = 18 chip_value = 20000 coloured_chips = chip_stack11 endif spin_result = 0 lVAR_INT spot_bet max_table_bet spot_bet = 0 max_table_bet = chip_value * 50 lVAR_INT reset_all_bets_flag reset_all_bets_flag = 0 GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_integer_1 IF temp_integer_1 = 0 lvar_int roulette_model roulette_model = VBFYCRP ELSE roulette_model = VWFYCRP ENDIF reset_all_bets: VAR_INT spot_bets[151] VAR_INT i i = 0 WHILE i < 151 spot_bets[i] = 0 ++ i ENDWHILE VAR_INT winnings_this_round total_stake_this_round winnings_this_round = 0 total_stake_this_round = 0 IF reset_all_bets_flag = 1 reset_all_bets_flag = 0 RETURN ENDIF lVAR_FLOAT wheel_rotation_speed wheel_rotation wheel_rotation_speed = 0.0 wheel_rotation = 0.0 roulette_script_loop: WAIT 0 GET_GAME_TIMER game_timer IF DOES_OBJECT_EXIST roulette_table if IS_OBJECT_WITHIN_BRAIN_ACTIVATION_RANGE roulette_table if iTerminateAllAmbience = 0 IF IS_PLAYER_PLAYING player1 IF flag = 0 REQUEST_MODEL roulette_model //REQUEST_ANIMATION CASINO ++ flag endif IF flag = 1 //load anims/models etc & create extra objects etc - cleanup stuff created here in '//cleanup' REQUEST_MODEL roulette_model //REQUEST_ANIMATION CASINO IF HAS_MODEL_LOADED roulette_model //and HAS_ANIMATION_LOADED CASINO lvar_int croupier GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS roulette_table 1.208 0.571 -1.144 x y z create_char pedtype_civfemale roulette_model x y z croupier get_object_heading roulette_table heading heading += 90.0 set_char_heading croupier heading SET_CHAR_DECISION_MAKER croupier iGlobalPedPanicDM ENABLE_DISABLED_ATTRACTORS_ON_OBJECT roulette_table TRUE ++ flag endif ENDIF IF flag = 2 IF LOCATE_CHAR_ON_FOOT_OBJECT_2D scplayer roulette_table 5.0 5.0 0 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS roulette_table -0.215 1.34 -0.086 x y z//-0.102 1.136 -0.033 lVAR_INT roulette_wheel CREATE_OBJECT_NO_OFFSET wheel_wee x y z roulette_wheel ++ flag ENDIF ENDIF IF flag = 3 IF LOCATE_CHAR_ON_FOOT_OBJECT_2D scplayer roulette_table 5.0 5.0 0 if iSetCasinoPanic = 0 GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS roulette_table -1.839 -2.4444 -0.6 x y z GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS roulette_table 0.761 0.9556 0.6 x_temp y_temp z_temp IF IS_CHAR_IN_AREA_ON_FOOT_3D scplayer x y z x_temp y_temp z_temp 0 //LOCATE_CHAR_ON_FOOT_3D scplayer x y z 1.3 1.7 0.6 0 if chip_value = 2 PRINT_HELP_FOREVER SLOT_06 //PRESS